diff --git a/.gitignore b/.gitignore index 48531ed1..d0be915e 100644 --- a/.gitignore +++ b/.gitignore @@ -26,3 +26,10 @@ third_party/sparkle/ website/.next/ website/out/ + +android/.gradle/ +android/.idea/ +android/local.properties +android/**/build/ +android/captures/ +android/.kotlin/ diff --git a/AGENTS.md b/AGENTS.md index 979b98f3..07e0fc56 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -12,13 +12,17 @@ This file gives Codex project-specific context for working in Dao Browser. Dao Browser is a Chromium-based browser with an Arc-style vertical sidebar, currently targeting macOS arm64. The full Chromium checkout and build output live under `engine/`, which is gitignored and very large. This repository tracks Dao-owned code and patch files, not the whole Chromium tree. -Read `docs/features.md` first when asked what Dao Browser does, when locating the owner of a behavior, or before adding a feature that may overlap with existing work. +Read `docs/features.md` first for desktop Chromium behavior and +`docs/features-android.md` first for Android GeckoView behavior when asked what +Dao Browser does, when locating the owner of a behavior, or before adding a +feature that may overlap with existing work. ## Feature Documentation -- When adding or materially changing a Dao Browser feature, update `docs/features.md` in the same change to keep the feature catalog current. -- When adding or materially changing a Dao Browser feature, update `docs/feature-checklist.md` in the same change so Chromium upgrade and regression checks cover the new behavior. -- If a feature change does not require updates to either document, explicitly mention why in the final response. +- When adding or materially changing a desktop Chromium feature, update `docs/features.md` in the same change. +- When adding or materially changing an Android feature, update `docs/features-android.md` in the same change. +- When adding or materially changing a feature on either platform, update `docs/feature-checklist.md` so upgrade and regression checks cover the behavior. +- If a feature change does not require updates to its platform feature inventory or the shared checklist, explicitly mention why in the final response. ## Source Of Truth @@ -128,8 +132,9 @@ Never hardcode user-facing copy in Dao-owned UI. All user-visible text must have - C++ Views strings go in `src/dao/browser/strings/dao_strings.grd` and are read with `l10n_util::GetStringUTF16` or `GetStringFUTF16`. - Sidebar WebUI strings go in `src/dao/browser/strings/dao_strings.grd`, are registered on the sidebar `WebUIDataSource` with `AddLocalizedString` / `UseStringsJs`, and are read from TypeScript through `loadTimeData.getString(...)`. - Agent WebUI strings go in `src/dao/browser/ui/webui/resources/agent/i18n/locales/en.ts` and are read with `t('key', { var: 'x' })`. +- Android strings use `android/app/src/main/res/values/strings.xml` as the English source and qualified `values-*/strings.xml` files for translations. Android follows the system locale and falls back to English. - `zh-CN` is hand-authored and treated as the tone reference. -- Other locales are generated manually by the user via `OPENAI_API_KEY=... sh ./i18n.sh`; do not run it automatically. +- Other desktop and Android locales are generated manually by the user via `OPENAI_API_KEY=... sh ./i18n.sh`; do not run it automatically. The root command dispatches independent platform translators, and `--only desktop` or `--only android` limits the run. ## Native Toast Feedback diff --git a/android/NOTICE.md b/android/NOTICE.md new file mode 100644 index 00000000..4cffe4e4 --- /dev/null +++ b/android/NOTICE.md @@ -0,0 +1,40 @@ +# Third-party Notices + +Dao Browser Android consumes Mozilla Android Components and GeckoView under the Mozilla Public License 2.0. + +- Mozilla Public License 2.0: https://www.mozilla.org/MPL/2.0/ +- Android Components source: https://searchfox.org/firefox-main/source/mobile/android/android-components +- GeckoView source: https://searchfox.org/firefox-main/source/mobile/android/geckoview + +The release packaging task must generate the complete transitive dependency notice set before public distribution. + +## uBlock Origin + +Dao Browser Android bundles a GeckoView compatibility variant of the Firefox +extension from uBlock Origin 1.72.2 under the GNU General Public License 3.0. +The variant removes only the GeckoView-unsupported `menus` permission and +`commands` manifest entry; blocking code and filter assets are unchanged. + +- Source: https://github.com/gorhill/uBlock +- Release: https://github.com/gorhill/uBlock/releases/tag/1.72.2 +- Artifact: `uBlock0_1.72.2.firefox.signed.xpi` +- SHA-256: `40c315b0da7871868155ecfae7a50a58dfa0920aebd865e008214986f1b7c578` +- License text: `third_party/ublock_origin/LICENSE.txt` + +The corresponding source is available from the source and release links above. +Release packaging must preserve this notice, license text, and source access. + +## KISS Translator + +Dao Browser Android bundles the unmodified public Firefox extension KISS +Translator 2.0.29 under the GNU General Public License v3.0 only. + +- Source: https://github.com/fishjar/kiss-translator +- Release: https://github.com/fishjar/kiss-translator/releases/tag/v2.0.29 +- Listing: https://addons.mozilla.org/firefox/addon/kiss-translator/ +- Artifact: `kiss_translator-2.0.29.xpi` +- SHA-256: `0316f026b1b0c3d171262b3f4f369e34013abdf1d1bbe9d348290c3db53f4092` +- License text: `app/src/main/assets/notices/kiss_translator_license.txt` + +Translation is performed through the service selected inside KISS Translator. +Release packaging must preserve this notice, license text, and source access. diff --git a/android/README.md b/android/README.md new file mode 100644 index 00000000..ccd5d8ce --- /dev/null +++ b/android/README.md @@ -0,0 +1,110 @@ +# Dao Browser Android + +Dao Browser Android is a Kotlin application built with Mozilla Android Components and GeckoView. + +## Requirements + +- macOS on the existing development Mac +- JDK 17 +- Android SDK 36 +- An Android API 26+ emulator or physical device + +Set the local SDK location before running Gradle, for example: + +```bash +export ANDROID_HOME="$HOME/Library/Android/sdk" +``` + +All commands run locally on the development Mac; they do not require a cloud build service or paid device hardware. + +## Verify + +```bash +cd android +./gradlew :app:verifyBundledUBlockOrigin +./gradlew :app:verifyBundledKissTranslator +./gradlew :app:testDebugUnitTest :app:lintDebug :app:assembleDebug +``` + +The APK bundles a GeckoView-compatible uBlock Origin 1.72.2 package and the +unmodified KISS Translator 2.0.29 Firefox package. Both are +requested as built-in extensions before creating the first browser session and +update with the APK without a first-run download. KISS Translator supplies +paragraph-by-paragraph bilingual page translation, input and selected-text +translation, and subtitle translation through the service selected inside the +extension. + +The Extensions screen reads installed extensions from Gecko and can toggle +them. Its Store is native Compose UI: a blank query loads AMO recommendations, +submitted queries search AMO, and catalog requests are limited to Android +extensions compatible with the running Gecko major version. The catalog accepts +only public HTTPS `.xpi` packages and installs the selected AMO package directly +through Gecko's `RTAMO` path. Opening, searching, or installing from the Store +does not change the selected browser tab. + +Before either Store or local installation completes, Dao presents Gecko's +requested browser permissions, site access, and data-collection permissions for +explicit approval; cancellation declines the install. The system document picker +remains available for local `.xpi` files without a storage permission. That +package is staged for Gecko's `FROM_FILE` path until the installation reaches a +terminal result. User-installed extensions persist across restarts and can be +disabled or uninstalled. Release GeckoView enforces Mozilla signatures, +compatibility, and blocklists for both install paths, so Dao does not bypass +unsigned, incompatible, corrupt, or blocklisted-package rejection. Catalog +failures show a Retry action. Remote installation failures use the localized +extension-install status; after the user dismisses the result with Done, the +add-on's Install action is available again. A dedicated Dao ad-blocking +preference is not implemented. + +## Localization + +Android uses English as its unqualified source catalog and follows the system +locale through standard Android resource resolution. Simplified Chinese is +hand-authored under `values-zh-rCN`; unsupported locales fall back to English. +Desktop and Android localization files remain independent. + +From the repository root, preview translation work without making API calls or +writing files: + +```bash +sh ./i18n.sh --dry-run +sh ./i18n.sh --only android --langs zh-CN,ja --dry-run +``` + +Run the desktop and Android translators with OpenAI GPT-5.5: + +```bash +OPENAI_API_KEY=sk-... sh ./i18n.sh +``` + +Use `--only desktop` or `--only android` to run one platform, and use +`OPENAI_TRANSLATE_MODEL` or `--model` to override the default model. A live run +uses the OpenAI API and may incur charges; build and test commands never invoke +it automatically. + +## Install + +```bash +cd android +./gradlew :app:installDebug +``` + +## Device smoke test + +```bash +cd android +./gradlew :app:connectedDebugAndroidTest +``` + +The application uses Mozilla Android Components `BrowserStore` and +`EngineMiddleware` for multiple Gecko tabs. Its full-screen tab grid supports +live tab counts, switching, close and swipe-right-to-close, new tabs, and real +page thumbnails. Android Components `SessionStorage` restores regular tab order, +selection, URLs, and navigation history after process death; private tabs and +their thumbnails are never persisted. + +It also supports address-or-search navigation, persistent +history/bookmarks/folders, Android system downloads, persistent engine +preferences, default-private startup, signed extension installation and +management, and CameraX QR scanning. An in-session private-mode switch, +passwords, sync, Agent, and MCP are not yet implemented. diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts new file mode 100644 index 00000000..7a024679 --- /dev/null +++ b/android/app/build.gradle.kts @@ -0,0 +1,244 @@ +import groovy.json.JsonSlurper +import org.gradle.api.GradleException +import org.jetbrains.kotlin.gradle.dsl.JvmTarget + +plugins { + alias(libs.plugins.android.application) + alias(libs.plugins.kotlin.android) + alias(libs.plugins.kotlin.compose) +} + +android { + namespace = "com.msgbyte.dao" + compileSdk = 36 + + defaultConfig { + applicationId = "com.msgbyte.dao" + minSdk = 26 + targetSdk = 36 + versionCode = 1 + versionName = "0.1.0" + resValue( + "string", + "mozilla_components_version", + libs.versions.mozilla.components.get(), + ) + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + } + + compileOptions { + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 + } + + buildFeatures { + compose = true + resValues = true + } + + androidResources { + // Built-in WebExtensions use `_locales`; AAPT's default pattern drops + // all underscore-prefixed directories and makes the extension invalid. + ignoreAssetsPattern = + "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~" + } + + lint { + // The transitive support-base artifact contains an unused notification helper. + disable += "NotificationPermission" + } + + testOptions { + unitTests.isIncludeAndroidResources = true + } +} + +kotlin { + compilerOptions { + jvmTarget.set(JvmTarget.JVM_17) + } +} + +configurations.configureEach { + exclude(group = "androidx.work", module = "work-runtime") +} + +val bundledUBlockOriginDirectory = + layout.projectDirectory.dir("src/main/assets/extensions/ublock_origin") + +val bundledKissTranslatorDirectory = + layout.projectDirectory.dir("src/main/assets/extensions/kiss_translator") + +val verifyBundledUBlockOrigin by tasks.registering { + val manifestFile = bundledUBlockOriginDirectory.file("manifest.json") + val provenanceFile = + layout.projectDirectory.file("src/main/assets/notices/ublock_origin.txt") + val requiredFiles = listOf( + bundledUBlockOriginDirectory.file("background.html"), + bundledUBlockOriginDirectory.file("js/background.js"), + bundledUBlockOriginDirectory.file("js/start.js"), + bundledUBlockOriginDirectory.file("assets/assets.json"), + bundledUBlockOriginDirectory.file("_locales/en/messages.json"), + bundledUBlockOriginDirectory.file("LICENSE.txt"), + ) + inputs.file(manifestFile) + inputs.file(provenanceFile) + inputs.files(requiredFiles) + + doLast { + val manifestPath = manifestFile.asFile + if (!manifestPath.isFile) { + throw GradleException("Bundled uBlock Origin manifest is missing") + } + val manifest = JsonSlurper().parse(manifestPath) as Map<*, *> + val browserSettings = manifest["browser_specific_settings"] as? Map<*, *> + val geckoSettings = browserSettings?.get("gecko") as? Map<*, *> + if (manifest["version"] != "1.72.2") { + throw GradleException("Bundled uBlock Origin version must be 1.72.2") + } + if ((manifest["manifest_version"] as? Number)?.toInt() != 2) { + throw GradleException("Bundled uBlock Origin must use manifest version 2") + } + if (geckoSettings?.get("id") != "uBlock0@raymondhill.net") { + throw GradleException("Bundled uBlock Origin extension ID is invalid") + } + val permissions = manifest["permissions"] as? List<*> ?: emptyList() + if ("menus" in permissions) { + throw GradleException( + "Bundled uBlock Origin must not request GeckoView-unsupported menus permission", + ) + } + if (manifest.containsKey("commands")) { + throw GradleException( + "Bundled uBlock Origin must not declare GeckoView-unsupported commands", + ) + } + val provenance = provenanceFile.asFile.readText() + listOf( + "uBlock Origin 1.72.2", + "40c315b0da7871868155ecfae7a50a58dfa0920aebd865e008214986f1b7c578", + "https://github.com/gorhill/uBlock", + "GNU General Public License 3.0", + ).forEach { requiredValue -> + if (requiredValue !in provenance) { + throw GradleException( + "Bundled uBlock Origin provenance is missing: $requiredValue", + ) + } + } + requiredFiles.forEach { requiredFile -> + if (!requiredFile.asFile.isFile) { + throw GradleException( + "Bundled uBlock Origin file is missing: ${requiredFile.asFile.name}", + ) + } + } + } +} + +val verifyBundledKissTranslator by tasks.registering { + val manifestFile = bundledKissTranslatorDirectory.file("manifest.json") + val provenanceFile = + layout.projectDirectory.file("src/main/assets/notices/kiss_translator.txt") + val licenseFile = + layout.projectDirectory.file("src/main/assets/notices/kiss_translator_license.txt") + val requiredFiles = listOf( + bundledKissTranslatorDirectory.file("background.js"), + bundledKissTranslatorDirectory.file("content.js"), + bundledKissTranslatorDirectory.file("popup.html"), + bundledKissTranslatorDirectory.file("popup.js"), + bundledKissTranslatorDirectory.file("options.html"), + bundledKissTranslatorDirectory.file("_locales/en/messages.json"), + bundledKissTranslatorDirectory.file("_locales/zh_CN/messages.json"), + bundledKissTranslatorDirectory.file("META-INF/cose.sig"), + ) + inputs.file(manifestFile) + inputs.file(provenanceFile) + inputs.file(licenseFile) + inputs.files(requiredFiles) + + doLast { + val manifestPath = manifestFile.asFile + if (!manifestPath.isFile) { + throw GradleException("Bundled KISS Translator manifest is missing") + } + val manifest = JsonSlurper().parse(manifestPath) as Map<*, *> + val browserSettings = manifest["browser_specific_settings"] as? Map<*, *> + val geckoSettings = browserSettings?.get("gecko") as? Map<*, *> + if (manifest["version"] != "2.0.29") { + throw GradleException("Bundled KISS Translator version must be 2.0.29") + } + if ((manifest["manifest_version"] as? Number)?.toInt() != 2) { + throw GradleException("Bundled KISS Translator must use manifest version 2") + } + if (geckoSettings?.get("id") != "{fb25c100-22ce-4d5a-be7e-75f3d6f0fc13}") { + throw GradleException("Bundled KISS Translator extension ID is invalid") + } + val provenance = provenanceFile.asFile.readText() + listOf( + "KISS Translator 2.0.29", + "0316f026b1b0c3d171262b3f4f369e34013abdf1d1bbe9d348290c3db53f4092", + "https://github.com/fishjar/kiss-translator", + "GNU General Public License v3.0 only", + ).forEach { requiredValue -> + if (requiredValue !in provenance) { + throw GradleException( + "Bundled KISS Translator provenance is missing: $requiredValue", + ) + } + } + if (!licenseFile.asFile.isFile) { + throw GradleException("Bundled KISS Translator license is missing") + } + requiredFiles.forEach { requiredFile -> + if (!requiredFile.asFile.isFile) { + throw GradleException( + "Bundled KISS Translator file is missing: ${requiredFile.asFile.name}", + ) + } + } + } +} + +tasks.named("preBuild").configure { + dependsOn(verifyBundledUBlockOrigin) + dependsOn(verifyBundledKissTranslator) +} + +dependencies { + implementation(libs.androidx.activity.compose) + implementation(libs.androidx.core.ktx) + implementation(libs.androidx.datastore.preferences) + implementation(libs.androidx.swiperefreshlayout) + implementation(libs.androidx.camera.camera2) + implementation(libs.androidx.camera.lifecycle) + implementation(libs.androidx.camera.view) + implementation(libs.androidx.lifecycle.runtime.compose) + implementation(libs.androidx.lifecycle.viewmodel.compose) + implementation(platform(libs.compose.bom)) + implementation(libs.compose.material3) + implementation(libs.compose.ui) + implementation(libs.compose.ui.tooling.preview) + implementation(libs.lucide.icons) + implementation(libs.mozilla.concept.engine) + implementation(libs.mozilla.browser.engine.gecko) + implementation(libs.mozilla.browser.state) + implementation(libs.mozilla.browser.session.storage) + implementation(libs.zxing.core) + + debugImplementation(libs.compose.ui.tooling) + debugImplementation(libs.compose.ui.test.manifest) + + testImplementation(libs.junit) + testImplementation(libs.mockk) + testImplementation(libs.robolectric) + testImplementation(libs.androidx.test.core.ktx) + testImplementation(libs.kotlinx.coroutines.test) + + androidTestImplementation(libs.androidx.test.ext.junit) + androidTestImplementation(libs.androidx.test.runner) + androidTestImplementation(libs.espresso.core) + androidTestImplementation(platform(libs.compose.bom)) + androidTestImplementation(libs.compose.ui.test.junit4) + androidTestImplementation(libs.mockk.android) +} diff --git a/android/app/src/androidTest/java/com/msgbyte/dao/MainActivityTest.kt b/android/app/src/androidTest/java/com/msgbyte/dao/MainActivityTest.kt new file mode 100644 index 00000000..17e08410 --- /dev/null +++ b/android/app/src/androidTest/java/com/msgbyte/dao/MainActivityTest.kt @@ -0,0 +1,770 @@ +package com.msgbyte.dao + +import android.content.ClipboardManager +import android.net.Uri +import android.graphics.Bitmap +import android.graphics.Canvas +import android.graphics.drawable.AdaptiveIconDrawable +import android.view.View +import androidx.compose.ui.test.assertIsDisplayed +import androidx.compose.ui.test.assertIsEnabled +import androidx.compose.ui.test.assertIsFocused +import androidx.compose.ui.test.assertIsNotEnabled +import androidx.compose.ui.test.assertTextEquals +import androidx.compose.ui.test.assertIsSelected +import androidx.compose.ui.test.assertCountEquals +import androidx.compose.ui.test.captureToImage +import androidx.compose.ui.test.click +import androidx.compose.ui.test.hasTestTag +import androidx.compose.ui.test.hasSetTextAction +import androidx.compose.ui.test.junit4.createAndroidComposeRule +import androidx.compose.ui.test.onNodeWithContentDescription +import androidx.compose.ui.test.onNodeWithTag +import androidx.compose.ui.test.onNodeWithText +import androidx.compose.ui.test.onAllNodesWithContentDescription +import androidx.compose.ui.test.onAllNodesWithTag +import androidx.compose.ui.test.onAllNodesWithText +import androidx.compose.ui.test.onRoot +import androidx.compose.ui.test.performClick +import androidx.compose.ui.test.performImeAction +import androidx.compose.ui.test.performScrollToNode +import androidx.compose.ui.test.performTextInput +import androidx.compose.ui.test.performTouchInput +import androidx.compose.ui.test.swipeRight +import androidx.compose.ui.test.down +import androidx.compose.ui.test.up +import androidx.compose.ui.test.SemanticsMatcher +import androidx.compose.ui.semantics.SemanticsProperties +import androidx.compose.ui.graphics.toPixelMap +import androidx.core.view.ViewCompat +import androidx.core.view.WindowInsetsCompat +import com.msgbyte.dao.ui.NEW_TAB_SCREEN_TEST_TAG +import com.msgbyte.dao.ui.TAB_GRID_TEST_TAG +import com.msgbyte.dao.ui.TAB_CARD_TEST_TAG_PREFIX +import com.msgbyte.dao.ui.BOOKMARK_OPTIONS_TEST_TAG_PREFIX +import com.msgbyte.dao.about.readAboutAppInfo +import com.msgbyte.dao.browser.BrowserFontScale +import java.util.concurrent.CountDownLatch +import java.util.concurrent.TimeUnit +import kotlin.math.max +import kotlin.math.roundToInt +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.flow.first +import mozilla.components.concept.engine.webextension.WebExtension +import org.junit.Assert.assertFalse +import org.junit.Assert.fail +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Before +import org.junit.Rule +import org.junit.Test + +class MainActivityTest { + @get:Rule + val composeRule = createAndroidComposeRule() + + @Before + fun resetToBlankTab() { + val tabs = composeRule.activity.getString(R.string.tab_switcher) + val closeTab = composeRule.activity.getString(R.string.close_tab) + val tabCard = SemanticsMatcher("BrowserStore tab card") { node -> + node.config.contains(SemanticsProperties.TestTag) && + node.config[SemanticsProperties.TestTag].startsWith(TAB_CARD_TEST_TAG_PREFIX) + } + + composeRule.waitUntil(timeoutMillis = 10_000) { + composeRule.onAllNodesWithContentDescription(tabs).fetchSemanticsNodes().isNotEmpty() || + composeRule.onAllNodesWithTag(TAB_GRID_TEST_TAG).fetchSemanticsNodes().isNotEmpty() + } + if (composeRule.onAllNodesWithTag(TAB_GRID_TEST_TAG).fetchSemanticsNodes().isEmpty()) { + composeRule.onNodeWithContentDescription(tabs).performClick() + } + composeRule.waitUntil(timeoutMillis = 10_000) { + composeRule.onAllNodes(tabCard).fetchSemanticsNodes().isNotEmpty() + } + + while (composeRule.onAllNodes(tabCard).fetchSemanticsNodes().size > 1) { + composeRule.onAllNodesWithContentDescription(closeTab)[0].performClick() + } + + val previousTag = composeRule.onAllNodes(tabCard).fetchSemanticsNodes().single() + .config[SemanticsProperties.TestTag] + composeRule.onNodeWithContentDescription(closeTab).performClick() + composeRule.waitUntil(timeoutMillis = 10_000) { + composeRule.onAllNodes(tabCard).fetchSemanticsNodes().singleOrNull() + ?.config?.get(SemanticsProperties.TestTag) != previousTag + } + composeRule.onNode(tabCard).performClick() + composeRule.onNodeWithTag(NEW_TAB_SCREEN_TEST_TAG).assertIsDisplayed() + } + + @Test + fun newTabChromeIsVisible() { + val addressHint = composeRule.activity.getString(R.string.address_hint) + val greeting = composeRule.activity.getString(R.string.new_tab_question) + composeRule.onNodeWithText(addressHint).assertIsDisplayed() + composeRule.onNodeWithText(greeting).assertIsDisplayed() + composeRule.onNodeWithTag(NEW_TAB_SCREEN_TEST_TAG).assertIsDisplayed() + } + + @Test + fun homepageSettingsButtonOpensSettingsAndReturnsHome() { + val settings = composeRule.activity.getString(R.string.settings) + + composeRule.onNodeWithContentDescription(settings).assertIsDisplayed().performClick() + composeRule.onNodeWithText(settings).assertIsDisplayed() + composeRule.onNodeWithContentDescription( + composeRule.activity.getString(R.string.navigate_back), + ).performClick() + + composeRule.onNodeWithTag(NEW_TAB_SCREEN_TEST_TAG).assertIsDisplayed() + composeRule.onNodeWithContentDescription(settings).assertIsDisplayed() + } + + @Test + fun homepageSettingsButtonHidesWhileSearchIsExpanded() { + val settings = composeRule.activity.getString(R.string.settings) + val addressHint = composeRule.activity.getString(R.string.address_hint) + + composeRule.onNodeWithContentDescription(settings).assertIsDisplayed() + composeRule.onNodeWithText(addressHint).performClick() + + composeRule.onAllNodesWithContentDescription(settings).assertCountEquals(0) + } + + @Test + fun expandedSearchHidesTheTabSwitcher() { + val addressHint = composeRule.activity.getString(R.string.address_hint) + val tabs = composeRule.activity.getString(R.string.tab_switcher) + + composeRule.onNodeWithContentDescription(tabs).assertIsDisplayed() + composeRule.onNodeWithText(addressHint).performClick() + + composeRule.onAllNodesWithContentDescription(tabs).assertCountEquals(0) + } + + @Test + fun collapsedSearchBecomesFocusedInputAfterActivation() { + val addressHint = composeRule.activity.getString(R.string.address_hint) + + composeRule.onAllNodes(hasSetTextAction()).assertCountEquals(0) + composeRule.onNodeWithText(addressHint).performClick() + + composeRule.onAllNodes(hasSetTextAction()).assertCountEquals(1) + composeRule.onNode(hasSetTextAction()).assertIsFocused() + } + + @Test + fun expandedSearchUsesOnePersistentClearAction() { + val addressHint = composeRule.activity.getString(R.string.address_hint) + val clearInput = composeRule.activity.getString(R.string.clear_input) + val exitSearch = composeRule.activity.getString(R.string.exit_search) + + composeRule.onNodeWithText(addressHint).performClick() + composeRule.onNode(hasSetTextAction()).performTextInput("dao") + + composeRule.onAllNodesWithContentDescription(clearInput).assertCountEquals(1) + composeRule.onAllNodesWithContentDescription(exitSearch).assertCountEquals(0) + composeRule.onNodeWithContentDescription(clearInput).performClick() + + val input = composeRule.onNode(hasSetTextAction()).assertIsFocused() + assertEquals("", input.fetchSemanticsNode().config[SemanticsProperties.EditableText].text) + composeRule.onNodeWithTag(NEW_TAB_SCREEN_TEST_TAG).assertIsDisplayed() + } + + @Test + fun emptyExpandedSearchClearActionReturnsToTheHomepage() { + val addressHint = composeRule.activity.getString(R.string.address_hint) + val clearInput = composeRule.activity.getString(R.string.clear_input) + val tabs = composeRule.activity.getString(R.string.tab_switcher) + + composeRule.onNodeWithText(addressHint).performClick() + composeRule.onNode(hasSetTextAction()).assertIsFocused() + composeRule.onNodeWithContentDescription(clearInput).performClick() + + composeRule.onAllNodes(hasSetTextAction()).assertCountEquals(0) + composeRule.onNodeWithText(addressHint).assertIsDisplayed() + composeRule.onNodeWithContentDescription(tabs).assertIsDisplayed() + } + + @Test + fun settingsOmitsUnavailableDownloadLocationAndStartupOptions() { + val addressHint = composeRule.activity.getString(R.string.address_hint) + val menu = composeRule.activity.getString(R.string.menu) + val settings = composeRule.activity.getString(R.string.settings) + val downloadLocation = "\u4e0b\u8f7d\u4f4d\u7f6e" + val onStartup = "\u542f\u52a8\u65f6" + + composeRule.onNodeWithText(addressHint).performClick() + composeRule.onNode(hasSetTextAction()).performTextInput("about:blank") + composeRule.onNode(hasSetTextAction()).performImeAction() + composeRule.onNodeWithContentDescription(menu).performClick() + composeRule.onNodeWithText(settings).performClick() + + composeRule.onAllNodesWithText(downloadLocation).assertCountEquals(0) + composeRule.onAllNodesWithText(onStartup).assertCountEquals(0) + } + + @Test + fun settingsShowsUsbRemoteDebuggingAndConnectionGuide() { + openSettings() + + composeRule.onNodeWithText("\u5f00\u53d1\u8005\u5de5\u5177").assertIsDisplayed() + composeRule.onNodeWithText("USB \u8fdc\u7a0b\u8c03\u8bd5").assertIsDisplayed() + composeRule.onNodeWithText("\u8fde\u63a5\u6307\u5357").assertIsDisplayed() + } + + @Test + fun settingsAboutFlowShowsVersionsLicensesAndBackNavigation() { + val settings = composeRule.activity.getString(R.string.settings) + val menu = composeRule.activity.getString(R.string.menu) + + composeRule.onNodeWithContentDescription(settings).performClick() + assertAboutVersionIsTrailing() + openAbout() + composeRule.onNodeWithTag("about-screen").assertIsDisplayed() + val expectedInfo = readAboutAppInfo(composeRule.activity) + val expectedEngine = composeRule.activity.getString( + R.string.gecko_engine_version, + expectedInfo.engineVersion, + ) + composeRule.onNodeWithText(expectedInfo.appVersion).assertIsDisplayed() + composeRule.onNodeWithText(expectedEngine).assertIsDisplayed() + composeRule.onNodeWithTag("open-source-licenses-entry", useUnmergedTree = true) + .performClick() + composeRule.onNodeWithTag("open-source-licenses-screen").assertIsDisplayed() + composeRule.onNodeWithTag("bundled-license-u_block_origin", useUnmergedTree = true) + .assertIsDisplayed() + pressSystemBack() + composeRule.onNodeWithTag("about-screen").assertIsDisplayed() + pressSystemBack() + composeRule.onNodeWithText(settings).assertIsDisplayed() + pressSystemBack() + composeRule.onNodeWithTag(NEW_TAB_SCREEN_TEST_TAG).assertIsDisplayed() + + openSettings() + openAbout() + composeRule.onNodeWithTag("open-source-licenses-entry", useUnmergedTree = true) + .performClick() + pressSystemBack() + composeRule.onNodeWithTag("about-screen").assertIsDisplayed() + pressSystemBack() + composeRule.onNodeWithText(settings).assertIsDisplayed() + pressSystemBack() + composeRule.onNodeWithContentDescription(menu).assertIsDisplayed() + } + + @Test + fun settingsOffersAllSupportedSearchEngines() { + openSettings() + + composeRule.onNodeWithText( + composeRule.activity.getString(R.string.default_search_engine), + ).performClick() + + composeRule.onAllNodesWithText(composeRule.activity.getString(R.string.google))[0] + .assertIsDisplayed() + composeRule.onNodeWithText(composeRule.activity.getString(R.string.baidu)) + .assertIsDisplayed() + composeRule.onNodeWithText(composeRule.activity.getString(R.string.bing)) + .assertIsDisplayed() + composeRule.onNodeWithText(composeRule.activity.getString(R.string.duckduckgo)) + .assertIsDisplayed() + } + + @Test + fun settingsShowsLiveFontSizePreview() { + composeRule.onNodeWithContentDescription( + composeRule.activity.getString(R.string.settings), + ).performClick() + + composeRule.onNodeWithText(composeRule.activity.getString(R.string.font_preview_title)) + .assertIsDisplayed() + composeRule.onNodeWithText(composeRule.activity.getString(R.string.font_preview_body)) + .assertIsDisplayed() + + composeRule.onNodeWithText(composeRule.activity.getString(R.string.large)).performClick() + + val preferences = (composeRule.activity.application as DaoApplication).browserPreferences + composeRule.waitUntil(timeoutMillis = 5_000) { + runBlocking { preferences.state.first().fontScale == BrowserFontScale.LARGE } + } + } + + @Test + fun firstUsbRemoteDebuggingEnableCanBeCancelled() { + val warningTitle = "\u5f00\u542f USB \u8fdc\u7a0b\u8c03\u8bd5\uff1f" + openSettings() + + composeRule.onNodeWithTag("usb-remote-debugging-switch").performClick() + composeRule.onNodeWithText(warningTitle).assertIsDisplayed() + composeRule.onNodeWithText(composeRule.activity.getString(R.string.cancel)).performClick() + + composeRule.onAllNodesWithText(warningTitle).assertCountEquals(0) + val preferences = (composeRule.activity.application as DaoApplication).browserPreferences + assertFalse(runBlocking { preferences.state.first().remoteDebuggingEnabled }) + } + + @Test + fun usbRemoteDebuggingGuideShowsConnectionStepsAndActions() { + openSettings() + + scrollSettingsTo("settings-connection-guide-entry") + composeRule.onNodeWithTag("settings-connection-guide-entry", useUnmergedTree = true) + .performClick() + + composeRule.onNodeWithText("1. \u6253\u5f00 Android \u5f00\u53d1\u8005\u9009\u9879\u548c USB \u8c03\u8bd5").assertIsDisplayed() + composeRule.onNodeWithText("2. \u8fde\u63a5\u7535\u8111\u5e76\u6388\u6743 ADB \u8c03\u8bd5").assertIsDisplayed() + composeRule.onNodeWithText("3. \u5728\u684c\u9762 Firefox \u4e2d\u6253\u5f00 about:debugging").assertIsDisplayed() + composeRule.onNodeWithText("\u6253\u5f00\u5f00\u53d1\u8005\u9009\u9879").assertIsDisplayed() + composeRule.onNodeWithText("\u590d\u5236 about:debugging").performClick() + + val clipboard = composeRule.activity.getSystemService(ClipboardManager::class.java) + assertEquals("about:debugging", clipboard.primaryClip?.getItemAt(0)?.text?.toString()) + } + + @Test + fun tabGridCreatesAndClosesRealBrowserStoreTabs() { + val tabs = composeRule.activity.getString(R.string.tab_switcher) + val newTab = composeRule.activity.getString(R.string.new_tab) + val closeTab = composeRule.activity.getString(R.string.close_tab) + + composeRule.onNodeWithContentDescription(tabs).performClick() + composeRule.onNodeWithTag(TAB_GRID_TEST_TAG).assertIsDisplayed() + composeRule.onNodeWithContentDescription(newTab).performClick() + composeRule.onNodeWithContentDescription(tabs).assertTextEquals("2").performClick() + composeRule.onAllNodesWithContentDescription(closeTab)[0].performClick() + composeRule.onNodeWithText(composeRule.activity.getString(R.string.tabs_title, 1)) + .assertIsDisplayed() + } + + private fun openSettings() { + val addressHint = composeRule.activity.getString(R.string.address_hint) + val menu = composeRule.activity.getString(R.string.menu) + val settings = composeRule.activity.getString(R.string.settings) + + composeRule.onNodeWithText(addressHint).performClick() + composeRule.onNode(hasSetTextAction()).performTextInput("about:blank") + composeRule.onNode(hasSetTextAction()).performImeAction() + composeRule.onNodeWithContentDescription(menu).performClick() + composeRule.onNodeWithText(settings).performClick() + } + + private fun openAbout() { + scrollSettingsTo("settings-about-entry") + composeRule.onNodeWithTag("settings-about-entry", useUnmergedTree = true) + .performClick() + } + + private fun assertAboutVersionIsTrailing() { + scrollSettingsTo("settings-about-entry") + val aboutEntry = composeRule.onNodeWithTag("settings-about-entry", useUnmergedTree = true) + val version = composeRule.onNodeWithTag("settings-about-version", useUnmergedTree = true) + version.assertIsDisplayed() + assertTrue( + version.fetchSemanticsNode().boundsInRoot.center.x > + aboutEntry.fetchSemanticsNode().boundsInRoot.center.x, + ) + } + + private fun pressSystemBack() { + composeRule.runOnIdle { + composeRule.activity.onBackPressedDispatcher.onBackPressed() + } + } + + private fun scrollSettingsTo(testTag: String) { + composeRule.waitUntil(timeoutMillis = 10_000) { + composeRule.onAllNodesWithTag("settings-list", useUnmergedTree = true) + .fetchSemanticsNodes().isNotEmpty() + } + composeRule.onNodeWithTag("settings-list", useUnmergedTree = true) + .performScrollToNode(hasTestTag(testTag)) + } + + @Test + fun tabGridSwitchesAndSwipeClosesBrowserStoreTabs() { + val tabs = composeRule.activity.getString(R.string.tab_switcher) + val newTab = composeRule.activity.getString(R.string.new_tab) + val tabCard = SemanticsMatcher("BrowserStore tab card") { node -> + node.config.contains(SemanticsProperties.TestTag) && + node.config[SemanticsProperties.TestTag].startsWith(TAB_CARD_TEST_TAG_PREFIX) + } + + composeRule.onNodeWithContentDescription(tabs).performClick() + composeRule.onNodeWithContentDescription(newTab).performClick() + composeRule.onNodeWithContentDescription(tabs).performClick() + composeRule.onAllNodes(tabCard).assertCountEquals(2)[0].performClick() + composeRule.onNodeWithContentDescription(tabs).performClick() + composeRule.onAllNodes(tabCard)[0].assertIsSelected() + + composeRule.onAllNodes(tabCard)[0].performTouchInput { swipeRight() } + + composeRule.onAllNodes(tabCard).assertCountEquals(1) + } + + @Test + fun desktopBrandLogoIsVisible() { + composeRule.onNodeWithContentDescription( + composeRule.activity.getString(R.string.dao_logo_content_description), + ).assertIsDisplayed() + } + + @Test + fun adaptiveLauncherLogoStaysInsideTheOemSafeZone() { + val applicationInfo = composeRule.activity.applicationInfo + val icon = composeRule.activity.packageManager.getApplicationIcon(applicationInfo) + assertTrue("Launcher icon must be adaptive on API 26+", icon is AdaptiveIconDrawable) + icon as AdaptiveIconDrawable + + val density = composeRule.activity.resources.displayMetrics.density + val canvasSize = (108 * density).roundToInt() + val bitmap = Bitmap.createBitmap(canvasSize, canvasSize, Bitmap.Config.ARGB_8888) + val canvas = Canvas(bitmap) + icon.foreground.setBounds(0, 0, canvasSize, canvasSize) + icon.foreground.draw(canvas) + + var minX = canvasSize + var minY = canvasSize + var maxX = -1 + var maxY = -1 + for (y in 0 until canvasSize) { + for (x in 0 until canvasSize) { + if (android.graphics.Color.alpha(bitmap.getPixel(x, y)) > 8) { + minX = minOf(minX, x) + minY = minOf(minY, y) + maxX = maxOf(maxX, x) + maxY = maxOf(maxY, y) + } + } + } + + assertTrue("Launcher foreground must contain visible logo pixels", maxX >= minX && maxY >= minY) + val visibleWidthDp = (maxX - minX + 1) / density + val visibleHeightDp = (maxY - minY + 1) / density + assertTrue( + "Launcher logo exceeds the 62dp OEM-safe box: ${visibleWidthDp}x${visibleHeightDp}dp", + max(visibleWidthDp, visibleHeightDp) <= 62f, + ) + } + + @Test + fun contentStaysInsideSafeDrawingBounds() { + val contentView = composeRule.activity.findViewById(android.R.id.content) + val safeInsets = requireNotNull(ViewCompat.getRootWindowInsets(contentView)).getInsets( + WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout(), + ) + val controls = composeRule.onNodeWithTag(NEW_TAB_SCREEN_TEST_TAG) + .fetchSemanticsNode() + .boundsInRoot + + assertTrue(controls.left >= safeInsets.left) + assertTrue(controls.top >= safeInsets.top) + assertTrue(controls.right <= contentView.width - safeInsets.right) + assertTrue(controls.bottom <= contentView.height - safeInsets.bottom) + } + + @Test + fun scannerCanBeOpenedAndClosed() { + val scan = composeRule.activity.getString(R.string.scan_qr) + val close = composeRule.activity.getString(R.string.close_scanner) + + composeRule.onNodeWithContentDescription(scan).performClick() + composeRule.onNodeWithContentDescription(close).assertIsDisplayed().performClick() + composeRule.onNodeWithContentDescription(scan).assertIsDisplayed() + } + + @Test + fun scannerBlocksTouchesFromReachingTheTabSwitcher() { + val scan = composeRule.activity.getString(R.string.scan_qr) + val close = composeRule.activity.getString(R.string.close_scanner) + val tabs = composeRule.activity.getString(R.string.tab_switcher) + val tabSwitcherCenter = composeRule.onNodeWithContentDescription(tabs) + .fetchSemanticsNode() + .boundsInRoot + .center + + composeRule.onNodeWithContentDescription(scan).performClick() + composeRule.onRoot().performTouchInput { click(tabSwitcherCenter) } + + composeRule.onNodeWithContentDescription(close).assertIsDisplayed() + } + + @Test + fun drawerHomeReusesTheCurrentTab() { + val visitedUrl = "about:blank#drawer-home" + val addressHint = composeRule.activity.getString(R.string.address_hint) + val menu = composeRule.activity.getString(R.string.menu) + val home = composeRule.activity.getString(R.string.home) + val scan = composeRule.activity.getString(R.string.scan_qr) + val tabs = composeRule.activity.getString(R.string.tab_switcher) + + composeRule.onNodeWithText(addressHint).performClick() + composeRule.onNode(hasSetTextAction()).performTextInput(visitedUrl) + composeRule.onNode(hasSetTextAction()).performImeAction() + composeRule.onNodeWithContentDescription(menu).performClick() + + composeRule.onNodeWithText(home).assertIsDisplayed() + composeRule.onNodeWithText(scan).assertIsDisplayed() + composeRule.onNodeWithText(home).performClick() + + composeRule.onNodeWithTag(NEW_TAB_SCREEN_TEST_TAG).assertIsDisplayed() + composeRule.onNodeWithContentDescription(tabs).assertTextEquals("1") + + composeRule.runOnIdle { + composeRule.activity.onBackPressedDispatcher.onBackPressed() + } + composeRule.waitUntil(timeoutMillis = 10_000) { + composeRule.onAllNodesWithText(visitedUrl, substring = true) + .fetchSemanticsNodes().isNotEmpty() + } + } + + @Test + fun drawerScanOpensTheExistingScanner() { + val addressHint = composeRule.activity.getString(R.string.address_hint) + val menu = composeRule.activity.getString(R.string.menu) + val scan = composeRule.activity.getString(R.string.scan_qr) + val close = composeRule.activity.getString(R.string.close_scanner) + + composeRule.onNodeWithText(addressHint).performClick() + composeRule.onNode(hasSetTextAction()).performTextInput("about:blank#drawer-scan") + composeRule.onNode(hasSetTextAction()).performImeAction() + composeRule.onNodeWithContentDescription(menu).performClick() + composeRule.onNodeWithText(scan).performClick() + + composeRule.onNodeWithContentDescription(close).assertIsDisplayed().performClick() + composeRule.onNodeWithContentDescription(menu).assertIsDisplayed() + } + + @Test + fun builtInAdBlockerIsInstalledAndEnabled() { + val application = composeRule.activity.application as DaoApplication + val engine = application.browserRuntime.engine + val deadline = System.nanoTime() + TimeUnit.SECONDS.toNanos(20) + + while (System.nanoTime() < deadline) { + val callback = CountDownLatch(1) + var extensions: List = emptyList() + var failure: Throwable? = null + composeRule.activity.runOnUiThread { + engine.listInstalledWebExtensions( + onSuccess = { + extensions = it + callback.countDown() + }, + onError = { + failure = it + callback.countDown() + }, + ) + } + assertTrue("Extension query timed out", callback.await(5, TimeUnit.SECONDS)) + failure?.let { throw AssertionError("Extension query failed", it) } + + extensions.firstOrNull { it.id == "uBlock0@raymondhill.net" }?.let { + assertTrue("uBlock Origin must be a built-in extension", it.isBuiltIn()) + assertTrue("uBlock Origin must be enabled", it.isEnabled()) + return + } + Thread.sleep(100) + } + + fail("uBlock Origin was not installed within 20 seconds") + } + + @Test + fun currentPageCanBeBookmarkedAndOpenedFromTheRealBookmarkList() { + val url = "https://bookmark-${System.nanoTime()}.example" + val addressHint = composeRule.activity.getString(R.string.address_hint) + val menu = composeRule.activity.getString(R.string.menu) + val addBookmark = composeRule.activity.getString(R.string.add_bookmark) + val bookmarks = composeRule.activity.getString(R.string.bookmarks) + + composeRule.onNodeWithText(addressHint).performClick() + val addressField = composeRule.onNode(hasSetTextAction()) + addressField.performTextInput(url) + addressField.performImeAction() + composeRule.waitUntil(timeoutMillis = 10_000) { + composeRule.onAllNodesWithText(Uri.parse(url).host.orEmpty(), substring = true) + .fetchSemanticsNodes().isNotEmpty() + } + composeRule.onNodeWithContentDescription(menu).performClick() + composeRule.onNodeWithText(addBookmark).performClick() + val application = composeRule.activity.application as DaoApplication + composeRule.waitUntil(timeoutMillis = 10_000) { + application.browserLibrary.isBookmarked(url) + } + composeRule.onNodeWithText(bookmarks).performClick() + + composeRule.onNodeWithText(url).assertIsDisplayed() + } + + @Test + fun drawerDarkModeActionDirectlyTogglesThePersistedTheme() { + val preferences = (composeRule.activity.application as DaoApplication).browserPreferences + runBlocking { preferences.setDarkTheme(false) } + composeRule.waitUntil(timeoutMillis = 5_000) { + !runBlocking { preferences.state.first().darkTheme } + } + + val addressHint = composeRule.activity.getString(R.string.address_hint) + val menu = composeRule.activity.getString(R.string.menu) + val darkMode = composeRule.activity.getString(R.string.dark_mode) + composeRule.onNodeWithText(addressHint).performClick() + composeRule.onNode(hasSetTextAction()).performTextInput("about:blank") + composeRule.onNode(hasSetTextAction()).performImeAction() + composeRule.onNodeWithContentDescription(menu).performClick() + + composeRule.onNodeWithText(darkMode).performClick() + composeRule.waitUntil(timeoutMillis = 5_000) { + runBlocking { preferences.state.first().darkTheme } + } + + composeRule.onNodeWithText(darkMode).performClick() + composeRule.waitUntil(timeoutMillis = 5_000) { + !runBlocking { preferences.state.first().darkTheme } + } + } + + @Test + fun historyScreenDisplaysPersistedVisitsInsteadOfRepresentativeRows() { + val application = composeRule.activity.application as DaoApplication + val url = "https://history-${System.nanoTime()}.example" + runBlocking { + application.browserLibrary.recordVisit(url, "Persisted visit", System.currentTimeMillis()) + } + val addressHint = composeRule.activity.getString(R.string.address_hint) + val menu = composeRule.activity.getString(R.string.menu) + val history = composeRule.activity.getString(R.string.history) + + composeRule.onNodeWithText(addressHint).performClick() + val addressField = composeRule.onNode(hasSetTextAction()) + addressField.performTextInput("about:blank") + addressField.performImeAction() + composeRule.onNodeWithContentDescription(menu).performClick() + composeRule.onNodeWithText(history).performClick() + + composeRule.onNodeWithText("Persisted visit").assertIsDisplayed() + composeRule.onNodeWithText(url).assertIsDisplayed() + } + + @Test + fun bookmarkMenuCanMoveARealItemToTheReadingList() { + val url = "https://reading-${System.nanoTime()}.example" + val application = composeRule.activity.application as DaoApplication + val bookmark = runBlocking { application.browserLibrary.addBookmark(url, "Reading candidate") } + val addressHint = composeRule.activity.getString(R.string.address_hint) + val menu = composeRule.activity.getString(R.string.menu) + val bookmarks = composeRule.activity.getString(R.string.bookmarks) + val move = composeRule.activity.getString(R.string.move_to_reading_list) + val readingList = composeRule.activity.getString(R.string.reading_list) + + composeRule.onNodeWithText(addressHint).performClick() + val addressField = composeRule.onNode(hasSetTextAction()) + addressField.performTextInput("about:blank") + addressField.performImeAction() + composeRule.onNodeWithContentDescription(menu).performClick() + composeRule.onNodeWithText(bookmarks).performClick() + composeRule.onNodeWithTag("$BOOKMARK_OPTIONS_TEST_TAG_PREFIX${bookmark.id}").performClick() + composeRule.onNodeWithText(move).performClick() + composeRule.onNodeWithText(readingList).performClick() + + composeRule.onNodeWithText(url).assertIsDisplayed() + } + + @Test + fun findTileOpensAndClosesARealFindInPageBar() { + val addressHint = composeRule.activity.getString(R.string.address_hint) + val menu = composeRule.activity.getString(R.string.menu) + val find = composeRule.activity.getString(R.string.find_in_page) + val findHint = composeRule.activity.getString(R.string.find_in_page_hint) + val closeFind = composeRule.activity.getString(R.string.close_find) + + composeRule.onNodeWithText(addressHint).performClick() + val addressField = composeRule.onNode(hasSetTextAction()) + addressField.performTextInput("about:blank") + addressField.performImeAction() + composeRule.onNodeWithContentDescription(menu).performClick() + composeRule.onNodeWithText(find).performClick() + + composeRule.onNodeWithText(findHint).assertIsDisplayed() + composeRule.onNode(hasSetTextAction()).performTextInput("dao") + composeRule.onNodeWithContentDescription(closeFind).performClick() + composeRule.onNodeWithContentDescription(menu).assertIsDisplayed() + } + + @Test + fun unavailableNavigationActionsExposeTheirDisabledState() { + val addressHint = composeRule.activity.getString(R.string.address_hint) + val menu = composeRule.activity.getString(R.string.menu) + val back = composeRule.activity.getString(R.string.back) + val forward = composeRule.activity.getString(R.string.forward) + val reload = composeRule.activity.getString(R.string.reload) + + composeRule.onNodeWithText(addressHint).performClick() + composeRule.onNode(hasSetTextAction()).performTextInput("about:blank#navigation-state") + composeRule.onNode(hasSetTextAction()).performImeAction() + composeRule.onNodeWithContentDescription(menu).performClick() + + composeRule.onNodeWithContentDescription(back).assertIsNotEnabled() + composeRule.onNodeWithContentDescription(forward).assertIsNotEnabled() + composeRule.onNodeWithContentDescription(reload).assertIsEnabled() + } + + @Test + fun drawerNavigationRippleStaysInsideRoundedButton() { + val addressHint = composeRule.activity.getString(R.string.address_hint) + val menu = composeRule.activity.getString(R.string.menu) + val reload = composeRule.activity.getString(R.string.reload) + + composeRule.onNodeWithText(addressHint).performClick() + composeRule.onNode(hasSetTextAction()).performTextInput("about:blank#ripple-clip") + composeRule.onNode(hasSetTextAction()).performImeAction() + composeRule.onNodeWithContentDescription(menu).performClick() + + val reloadButton = composeRule.onNodeWithContentDescription(reload) + val bounds = reloadButton.fetchSemanticsNode().boundsInRoot + val idlePixels = composeRule.onRoot().captureToImage().toPixelMap() + + reloadButton.performTouchInput { + down(center) + advanceEventTime(300) + } + composeRule.mainClock.advanceTimeBy(300) + composeRule.waitForIdle() + val pressedPixels = composeRule.onRoot().captureToImage().toPixelMap() + + val cornerInset = 2 + val corners = listOf( + bounds.left.toInt() + cornerInset to bounds.top.toInt() + cornerInset, + bounds.right.toInt() - cornerInset - 1 to bounds.top.toInt() + cornerInset, + bounds.left.toInt() + cornerInset to bounds.bottom.toInt() - cornerInset - 1, + bounds.right.toInt() - cornerInset - 1 to bounds.bottom.toInt() - cornerInset - 1, + ) + corners.forEach { (x, y) -> + assertEquals("Ripple escaped the rounded button at ($x, $y)", idlePixels[x, y], pressedPixels[x, y]) + } + + reloadButton.performTouchInput { up() } + } + + @Test + fun tappingTheAddressDisplayOpensTheRealUrlForEditing() { + val url = "about:blank#edit-${System.nanoTime()}" + val host = url + val addressHint = composeRule.activity.getString(R.string.address_hint) + + composeRule.onNodeWithText(addressHint).performClick() + val addressField = composeRule.onNode(hasSetTextAction()) + addressField.performTextInput(url) + addressField.performImeAction() + composeRule.waitUntil(timeoutMillis = 10_000) { + composeRule.onAllNodesWithText(host, substring = true).fetchSemanticsNodes().isNotEmpty() + } + composeRule.onNodeWithText(host, substring = true).performClick() + + composeRule.onNode(hasSetTextAction()).assertTextEquals(url) + } + +} diff --git a/android/app/src/androidTest/java/com/msgbyte/dao/ui/AboutScreensTest.kt b/android/app/src/androidTest/java/com/msgbyte/dao/ui/AboutScreensTest.kt new file mode 100644 index 00000000..d7f667f4 --- /dev/null +++ b/android/app/src/androidTest/java/com/msgbyte/dao/ui/AboutScreensTest.kt @@ -0,0 +1,143 @@ +package com.msgbyte.dao.ui + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.ui.Modifier +import androidx.compose.ui.test.assertIsDisplayed +import androidx.compose.ui.test.assertCountEquals +import androidx.compose.ui.test.hasTestTag +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onAllNodesWithTag +import androidx.compose.ui.test.onNodeWithTag +import androidx.compose.ui.test.onNodeWithText +import androidx.compose.ui.test.performClick +import androidx.compose.ui.test.performScrollToNode +import androidx.compose.ui.unit.dp +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.espresso.Espresso.pressBack +import androidx.test.platform.app.InstrumentationRegistry +import com.msgbyte.dao.R +import com.msgbyte.dao.about.AboutAppInfo +import com.msgbyte.dao.ui.theme.DaoTheme +import org.junit.Assert.assertEquals +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class AboutScreensTest { + @get:Rule + val composeRule = createComposeRule() + + @Test + fun aboutScreenShowsIdentityAndVersions() { + val context = InstrumentationRegistry.getInstrumentation().targetContext + val engineDisplay = context.getString(R.string.gecko_engine_version, "153.0.2") + composeRule.setContent { + DaoTheme { + AboutScreen( + appInfo = AboutAppInfo("0.1.0", "153.0.2"), + onOpenLicenses = {}, + onBack = {}, + ) + } + } + + composeRule.onNodeWithTag("about-screen").assertIsDisplayed() + composeRule.onNodeWithText("Dao Browser").assertIsDisplayed() + composeRule.onNodeWithText("0.1.0").assertIsDisplayed() + composeRule.onNodeWithText(engineDisplay).assertIsDisplayed() + } + + @Test + fun aboutScreenOpensLicensesOnce() { + var openCount = 0 + composeRule.setContent { + DaoTheme { + AboutScreen( + appInfo = AboutAppInfo("0.1.0", "153.0.2"), + onOpenLicenses = { openCount++ }, + onBack = {}, + ) + } + } + + composeRule.onNodeWithTag("open-source-licenses-entry").performClick() + + assertEquals(1, openCount) + } + + @Test + fun aboutScreenScrollsToAndOpensLicensesInConstrainedHeight() { + var openCount = 0 + composeRule.setContent { + DaoTheme { + Box(Modifier.width(360.dp).height(180.dp)) { + AboutScreen( + appInfo = AboutAppInfo("0.1.0", "153.0.2"), + onOpenLicenses = { openCount++ }, + onBack = {}, + ) + } + } + } + + composeRule.onNodeWithTag("about-content") + .performScrollToNode(hasTestTag("open-source-licenses-entry")) + composeRule.onNodeWithTag("open-source-licenses-entry").assertIsDisplayed().performClick() + + assertEquals(1, openCount) + } + + @Test + fun licenseListShowsBundledExtensionsAndOpensLocalDetail() { + val context = InstrumentationRegistry.getInstrumentation().targetContext + val uBlockSummary = "${context.getString(R.string.extension_version, "1.72.2")} · " + + context.getString(R.string.gpl_v3_license) + val kissSummary = "${context.getString(R.string.extension_version, "2.0.29")} · " + + context.getString(R.string.gpl_v3_only_license) + composeRule.setContent { DaoTheme { OpenSourceLicensesScreen(onBack = {}) } } + + composeRule.onNodeWithTag("bundled-license-u_block_origin").assertIsDisplayed() + composeRule.onNodeWithTag("bundled-license-kiss_translator").assertIsDisplayed() + composeRule.onNodeWithText(uBlockSummary).assertIsDisplayed() + composeRule.onNodeWithText(kissSummary).assertIsDisplayed() + composeRule.onNodeWithTag("bundled-license-kiss_translator").performClick() + composeRule.onNodeWithTag("license-detail-screen").assertIsDisplayed() + composeRule.onNodeWithText("GNU GENERAL PUBLIC LICENSE", substring = true) + .assertIsDisplayed() + } + + @Test + fun licenseDetailBackReturnsToList() { + composeRule.setContent { DaoTheme { OpenSourceLicensesScreen(onBack = {}) } } + composeRule.onNodeWithTag("bundled-license-u_block_origin").performClick() + + composeRule.onNodeWithTag("license-detail-screen").assertIsDisplayed() + pressBack() + + composeRule.onAllNodesWithTag("license-detail-screen").assertCountEquals(0) + composeRule.onNodeWithTag("bundled-license-u_block_origin").assertIsDisplayed() + } + + @Test + fun licenseDetailShowsFallbackWhenLoadingFails() { + val unavailable = InstrumentationRegistry.getInstrumentation().targetContext + .getString(R.string.license_unavailable) + composeRule.setContent { + DaoTheme { + OpenSourceLicensesScreen( + onBack = {}, + loadLicenseText = { _, _ -> + Result.failure(IllegalStateException("Asset unavailable")) + }, + ) + } + } + + composeRule.onNodeWithTag("bundled-license-u_block_origin").performClick() + + composeRule.onNodeWithText(unavailable).assertIsDisplayed() + } +} diff --git a/android/app/src/androidTest/java/com/msgbyte/dao/ui/AmoStoreScreenTest.kt b/android/app/src/androidTest/java/com/msgbyte/dao/ui/AmoStoreScreenTest.kt new file mode 100644 index 00000000..4a9887b7 --- /dev/null +++ b/android/app/src/androidTest/java/com/msgbyte/dao/ui/AmoStoreScreenTest.kt @@ -0,0 +1,482 @@ +package com.msgbyte.dao.ui + +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.setValue +import androidx.compose.ui.semantics.Role +import androidx.compose.ui.semantics.SemanticsProperties +import androidx.compose.ui.test.SemanticsMatcher +import androidx.compose.ui.test.assert +import androidx.compose.ui.test.assertIsDisplayed +import androidx.compose.ui.test.assertIsNotEnabled +import androidx.compose.ui.test.assertTextEquals +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onNodeWithContentDescription +import androidx.compose.ui.test.onNodeWithTag +import androidx.compose.ui.test.onNodeWithText +import androidx.compose.ui.test.performClick +import androidx.compose.ui.test.performScrollTo +import androidx.compose.ui.test.performTextInput +import androidx.annotation.StringRes +import androidx.test.platform.app.InstrumentationRegistry +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.msgbyte.dao.R +import com.msgbyte.dao.browser.AmoAddon +import com.msgbyte.dao.browser.AmoStoreState +import com.msgbyte.dao.browser.ExtensionInstallState +import com.msgbyte.dao.browser.ExtensionInstallFailure +import com.msgbyte.dao.browser.PendingExtensionPermission +import com.msgbyte.dao.ui.theme.DaoTheme +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class AmoStoreScreenTest { + @get:Rule + val composeRule = createComposeRule() + + @Test + fun showsRecommendedCatalogAndSelectedAddonDetails() { + val addon = addon(guid = "addon@example", name = "Privacy Guard") + + setStoreContent( + state = AmoStoreState.Content(query = "", items = listOf(addon), nextPage = null), + ) + + composeRule.onNodeWithTag("amo-store-screen").assertIsDisplayed() + composeRule.onNodeWithText(string(R.string.amo_recommended)).assertIsDisplayed() + composeRule.onNodeWithTag("amo-addon-addon@example").performClick() + composeRule.onNodeWithTag("amo-addon-detail-addon@example", useUnmergedTree = true) + .performScrollTo() + .assertIsDisplayed() + composeRule.onNodeWithText("A focused privacy extension.", useUnmergedTree = true) + .assertIsDisplayed() + composeRule.onNodeWithText( + string(R.string.amo_author, "Dao Labs"), + useUnmergedTree = true, + ).assertIsDisplayed() + composeRule.onNodeWithText( + string(R.string.amo_version, "2.4.1"), + useUnmergedTree = true, + ).assertIsDisplayed() + composeRule.onNodeWithText( + string(R.string.amo_rating, "4.7"), + useUnmergedTree = true, + ).assertIsDisplayed() + } + + @Test + fun submitsTrimmedSearchQuery() { + var submittedQuery: String? = null + + setStoreContent( + state = AmoStoreState.Content(query = "", items = listOf(addon()), nextPage = null), + onSearch = { submittedQuery = it }, + ) + + composeRule.onNodeWithTag("amo-search-field").performTextInput(" privacy ") + composeRule.onNodeWithTag("amo-search-submit").performClick() + + composeRule.runOnIdle { assertEquals("privacy", submittedQuery) } + } + + @Test + fun retriesEmptyAndFailedCatalogStates() { + var retries = 0 + var state by mutableStateOf(AmoStoreState.Empty("privacy")) + composeRule.setContent { + DaoTheme { + AmoStoreScreen( + state = state, + installedExtensionGuids = emptySet(), + installState = ExtensionInstallState.Idle, + transientInstallGuid = null, + onTransientInstallGuidChange = {}, + onSearch = {}, + onRetry = { retries++ }, + onLoadNext = {}, + onInstall = { false }, + onDismissInstallResult = {}, + onResolvePermission = {}, + onBack = {}, + ) + } + } + + composeRule.onNodeWithText(string(R.string.amo_empty)).assertIsDisplayed() + composeRule.onNodeWithTag("amo-retry").performClick() + composeRule.runOnIdle { + assertEquals(1, retries) + state = AmoStoreState.Failed("privacy", IllegalStateException("offline")) + } + composeRule.onNodeWithText(string(R.string.amo_failure)).assertIsDisplayed() + composeRule.onNodeWithTag("amo-retry").performClick() + composeRule.runOnIdle { assertEquals(2, retries) } + } + + @Test + fun showsInstallInstallingAndInstalledLabels() { + val available = addon(guid = "available@example", name = "Available") + val installed = addon(guid = "installed@example", name = "Installed Add-on") + var installState by mutableStateOf(ExtensionInstallState.Idle) + var transientInstallGuid by mutableStateOf(null) + var requestedUrl: String? = null + composeRule.setContent { + DaoTheme { + AmoStoreScreen( + state = AmoStoreState.Content( + query = "privacy", + items = listOf(available, installed), + nextPage = null, + ), + installedExtensionGuids = setOf(installed.guid), + installState = installState, + transientInstallGuid = transientInstallGuid, + onTransientInstallGuidChange = { transientInstallGuid = it }, + onSearch = {}, + onRetry = {}, + onLoadNext = {}, + onInstall = { + requestedUrl = it.installUrl + installState = ExtensionInstallState.Installing + true + }, + onDismissInstallResult = {}, + onResolvePermission = {}, + onBack = {}, + ) + } + } + + composeRule.onNodeWithTag("amo-install-available@example") + .assertTextEquals(string(R.string.amo_install)) + composeRule.onNodeWithTag("amo-install-installed@example") + .assertTextEquals(string(R.string.amo_installed)) + composeRule.onNodeWithTag("amo-install-available@example").performClick() + composeRule.onNodeWithTag("amo-install-available@example") + .assertTextEquals(string(R.string.amo_installing)) + composeRule.runOnIdle { assertEquals(available.installUrl, requestedUrl) } + } + + @Test + fun keepsInstalledLabelUntilInstalledIdsRefresh() { + val addon = addon(guid = "pending-refresh@example") + var clearedGuid: String? = "not-called" + + setStoreContent( + state = AmoStoreState.Content(query = "privacy", items = listOf(addon), nextPage = null), + installedExtensionGuids = emptySet(), + installState = ExtensionInstallState.Installed(addon.name), + transientInstallGuid = addon.guid, + onTransientInstallGuidChange = { clearedGuid = it }, + ) + + composeRule.onNodeWithTag("amo-install-pending-refresh@example") + .assertTextEquals(string(R.string.amo_installed)) + .assertIsNotEnabled() + composeRule.runOnIdle { assertEquals("not-called", clearedGuid) } + } + + @Test + fun keepsInstallingLabelWhenStoreLeavesAndReenters() { + val addon = addon(guid = "reentry@example") + var showStore by mutableStateOf(true) + var installState by mutableStateOf(ExtensionInstallState.Idle) + var transientInstallGuid by mutableStateOf(null) + composeRule.setContent { + DaoTheme { + if (showStore) { + AmoStoreScreen( + state = AmoStoreState.Content( + query = "privacy", + items = listOf(addon), + nextPage = null, + ), + installedExtensionGuids = emptySet(), + installState = installState, + transientInstallGuid = transientInstallGuid, + onTransientInstallGuidChange = { transientInstallGuid = it }, + onSearch = {}, + onRetry = {}, + onLoadNext = {}, + onInstall = { + installState = ExtensionInstallState.Installing + true + }, + onDismissInstallResult = {}, + onResolvePermission = {}, + onBack = {}, + ) + } + } + } + + composeRule.onNodeWithTag("amo-install-reentry@example").performClick() + composeRule.onNodeWithTag("amo-install-reentry@example") + .assertTextEquals(string(R.string.amo_installing)) + composeRule.runOnIdle { showStore = false } + composeRule.runOnIdle { showStore = true } + composeRule.onNodeWithTag("amo-install-reentry@example") + .assertTextEquals(string(R.string.amo_installing)) + .assertIsNotEnabled() + } + + @Test + fun clearsTransientGuidAfterInstalledIdsRefresh() { + val addon = addon(guid = "synced@example") + var transientInstallGuid by mutableStateOf(addon.guid) + + setStoreContent( + state = AmoStoreState.Content(query = "privacy", items = listOf(addon), nextPage = null), + installedExtensionGuids = setOf(addon.guid), + installState = ExtensionInstallState.Installed(addon.name), + transientInstallGuid = transientInstallGuid, + onTransientInstallGuidChange = { transientInstallGuid = it }, + ) + + composeRule.waitForIdle() + composeRule.runOnIdle { assertEquals(null, transientInstallGuid) } + composeRule.onNodeWithTag("amo-install-synced@example") + .assertTextEquals(string(R.string.amo_installed)) + .assertIsNotEnabled() + } + + @Test + fun clearsTransientGuidAfterInstallFailure() { + val addon = addon(guid = "failed@example") + var transientInstallGuid by mutableStateOf(addon.guid) + + setStoreContent( + state = AmoStoreState.Content(query = "privacy", items = listOf(addon), nextPage = null), + installState = ExtensionInstallState.Failed(ExtensionInstallFailure.USER_CANCELLED), + transientInstallGuid = transientInstallGuid, + onTransientInstallGuidChange = { transientInstallGuid = it }, + ) + + composeRule.waitForIdle() + composeRule.runOnIdle { assertEquals(null, transientInstallGuid) } + } + + @Test + fun clearsFailedInstallWhileStoreIsAwayBeforeResultIsDismissed() { + val addon = addon(guid = "failed-away@example") + var showStore by mutableStateOf(true) + var installState by mutableStateOf(ExtensionInstallState.Installing) + var transientInstallGuid by mutableStateOf(addon.guid) + composeRule.setContent { + DaoTheme { + AmoInstallTrackingEffect( + transientInstallGuid = transientInstallGuid, + installedExtensionGuids = emptySet(), + installState = installState, + onTransientInstallGuidChange = { transientInstallGuid = it }, + ) + if (showStore) { + AmoStoreScreen( + state = AmoStoreState.Content("privacy", listOf(addon), null), + installedExtensionGuids = emptySet(), + installState = installState, + transientInstallGuid = transientInstallGuid, + onTransientInstallGuidChange = { transientInstallGuid = it }, + onSearch = {}, + onRetry = {}, + onLoadNext = {}, + onInstall = { false }, + onDismissInstallResult = {}, + onResolvePermission = {}, + onBack = {}, + ) + } + } + } + + composeRule.runOnIdle { showStore = false } + composeRule.runOnIdle { installState = ExtensionInstallState.Failed(ExtensionInstallFailure.NETWORK_FAILURE) } + composeRule.waitForIdle() + composeRule.runOnIdle { + installState = ExtensionInstallState.Idle + showStore = true + } + + composeRule.onNodeWithTag("amo-install-failed-away@example") + .assertTextEquals(string(R.string.amo_install)) + composeRule.runOnIdle { assertEquals(null, transientInstallGuid) } + } + + @Test + fun storeActionsExposeButtonSemantics() { + setStoreContent( + state = AmoStoreState.Content("", listOf(addon()), null), + ) + + composeRule.onNodeWithTag("amo-search-submit") + .assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Button)) + composeRule.onNodeWithTag("amo-install-addon@example") + .assert(SemanticsMatcher.expectValue(SemanticsProperties.Role, Role.Button)) + } + + @Test + fun showsFailedInstallReasonAndDismissesResult() { + var dismissed = false + + setStoreContent( + state = AmoStoreState.Content(query = "privacy", items = listOf(addon()), nextPage = null), + installState = ExtensionInstallState.Failed(ExtensionInstallFailure.NOT_SIGNED), + onDismissInstallResult = { dismissed = true }, + ) + + composeRule.onNodeWithText(string(R.string.extension_error_not_signed)) + .assertIsDisplayed() + composeRule.onNodeWithText(string(R.string.done)).performClick() + composeRule.runOnIdle { assertTrue(dismissed) } + } + + @Test + fun keepsInstalledRowAfterDismissingStatusBeforeIdsRefresh() { + val addon = addon(guid = "dismissed-before-refresh@example") + var installState by mutableStateOf( + ExtensionInstallState.Installed(addon.name), + ) + + composeRule.setContent { + DaoTheme { + AmoStoreScreen( + state = AmoStoreState.Content( + query = "privacy", + items = listOf(addon), + nextPage = null, + ), + installedExtensionGuids = emptySet(), + installState = installState, + transientInstallGuid = addon.guid, + onTransientInstallGuidChange = {}, + onSearch = {}, + onRetry = {}, + onLoadNext = {}, + onInstall = { false }, + onDismissInstallResult = { installState = ExtensionInstallState.Idle }, + onResolvePermission = {}, + onBack = {}, + ) + } + } + + composeRule.onNodeWithText(string(R.string.done)).performClick() + composeRule.onNodeWithTag("amo-install-dismissed-before-refresh@example") + .assertTextEquals(string(R.string.amo_installed)) + .assertIsNotEnabled() + } + + @Test + fun requestsTheNextCatalogPage() { + var loadNextCalled = false + setStoreContent( + state = AmoStoreState.Content(query = "privacy", items = listOf(addon()), nextPage = 2), + onLoadNext = { loadNextCalled = true }, + ) + + composeRule.onNodeWithTag("amo-load-more").performClick() + + composeRule.runOnIdle { assertTrue(loadNextCalled) } + } + + @Test + fun resolvesPermissionFromTheSharedSheet() { + var granted: Boolean? = null + setStoreContent( + state = AmoStoreState.Content(query = "", items = listOf(addon()), nextPage = null), + installState = ExtensionInstallState.AwaitingPermission( + PendingExtensionPermission( + id = "addon@example", + name = "Privacy Guard", + version = "2.4.1", + permissions = listOf("tabs"), + origins = listOf("https://example.com/*"), + dataCollectionPermissions = emptyList(), + ), + ), + onResolvePermission = { granted = it }, + ) + + composeRule.onNodeWithTag("extension-permission-sheet").assertIsDisplayed() + composeRule.onNodeWithTag("approve-extension").performClick() + + composeRule.runOnIdle { assertEquals(true, granted) } + } + + @Test + fun invokesBackCallback() { + var backCalled = false + setStoreContent( + state = AmoStoreState.Content(query = "", items = listOf(addon()), nextPage = null), + onBack = { backCalled = true }, + ) + + composeRule.onNodeWithContentDescription(string(R.string.navigate_back)).performClick() + + composeRule.runOnIdle { assertTrue(backCalled) } + } + + private fun setStoreContent( + state: AmoStoreState, + installedExtensionGuids: Set = emptySet(), + installState: ExtensionInstallState = ExtensionInstallState.Idle, + transientInstallGuid: String? = null, + onTransientInstallGuidChange: (String?) -> Unit = {}, + onSearch: (String) -> Unit = {}, + onRetry: () -> Unit = {}, + onLoadNext: () -> Unit = {}, + onInstall: (AmoAddon) -> Boolean = { false }, + onDismissInstallResult: () -> Unit = {}, + onResolvePermission: (Boolean) -> Unit = {}, + onBack: () -> Unit = {}, + ) { + composeRule.setContent { + DaoTheme { + AmoInstallTrackingEffect( + transientInstallGuid = transientInstallGuid, + installedExtensionGuids = installedExtensionGuids, + installState = installState, + onTransientInstallGuidChange = onTransientInstallGuidChange, + ) + AmoStoreScreen( + state = state, + installedExtensionGuids = installedExtensionGuids, + installState = installState, + transientInstallGuid = transientInstallGuid, + onTransientInstallGuidChange = onTransientInstallGuidChange, + onSearch = onSearch, + onRetry = onRetry, + onLoadNext = onLoadNext, + onInstall = onInstall, + onDismissInstallResult = onDismissInstallResult, + onResolvePermission = onResolvePermission, + onBack = onBack, + ) + } + } + } + + private fun addon( + guid: String = "addon@example", + name: String = "Privacy Guard", + ) = AmoAddon( + id = 42, + guid = guid, + slug = "privacy-guard", + name = name, + summary = "A focused privacy extension.", + author = "Dao Labs", + iconUrl = null, + rating = 4.7, + version = "2.4.1", + detailUrl = "https://addons.mozilla.org/addon/privacy-guard/", + installUrl = "https://addons.mozilla.org/firefox/downloads/latest/privacy-guard/addon.xpi", + ) + + private fun string(@StringRes id: Int, vararg args: Any): String = + InstrumentationRegistry.getInstrumentation().targetContext.getString(id, *args) +} diff --git a/android/app/src/androidTest/java/com/msgbyte/dao/ui/BrowserChromeTest.kt b/android/app/src/androidTest/java/com/msgbyte/dao/ui/BrowserChromeTest.kt new file mode 100644 index 00000000..c66d3f87 --- /dev/null +++ b/android/app/src/androidTest/java/com/msgbyte/dao/ui/BrowserChromeTest.kt @@ -0,0 +1,204 @@ +package com.msgbyte.dao.ui + +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.runtime.mutableStateOf +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.graphics.toPixelMap +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.test.assertIsDisplayed +import androidx.compose.ui.test.assertIsNotSelected +import androidx.compose.ui.test.assertIsSelected +import androidx.compose.ui.test.captureToImage +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onNodeWithContentDescription +import androidx.compose.ui.test.onNodeWithTag +import androidx.compose.ui.test.onNodeWithText +import androidx.compose.ui.test.performClick +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.msgbyte.dao.browser.SiteSecurityDetails +import com.msgbyte.dao.browser.SiteSecurityState +import com.msgbyte.dao.ui.theme.DaoTheme +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class BrowserChromeTest { + @get:Rule + val composeRule = createComposeRule() + + @Test + fun loadingProgressChangesOnlyTheAddressBackground() { + val loading = mutableStateOf(false) + + composeRule.setContent { + DaoTheme { + Column(Modifier.fillMaxSize()) { + AddressBar( + url = "about:blank", + isSecure = false, + tabCount = 3, + loading = loading.value, + progress = 50, + onSecurityClick = {}, + onAddressClick = {}, + onTabs = {}, + onMenu = {}, + ) + Box(Modifier.fillMaxSize().testTag(CONTENT_TEST_TAG)) + } + } + } + composeRule.waitForIdle() + + val idleAddressBounds = composeRule.onNodeWithTag(BROWSER_CONTROLS_TEST_TAG) + .fetchSemanticsNode().boundsInRoot + val idleContentBounds = composeRule.onNodeWithTag(CONTENT_TEST_TAG) + .fetchSemanticsNode().boundsInRoot + val idleAddress = composeRule.onNodeWithTag(BROWSER_CONTROLS_TEST_TAG).captureToImage() + + composeRule.runOnIdle { loading.value = true } + composeRule.mainClock.advanceTimeBy(250) + composeRule.waitForIdle() + + val loadingAddressBounds = composeRule.onNodeWithTag(BROWSER_CONTROLS_TEST_TAG) + .fetchSemanticsNode().boundsInRoot + val loadingContentBounds = composeRule.onNodeWithTag(CONTENT_TEST_TAG) + .fetchSemanticsNode().boundsInRoot + val loadingAddress = composeRule.onNodeWithTag(BROWSER_CONTROLS_TEST_TAG).captureToImage() + + assertEquals(idleAddressBounds, loadingAddressBounds) + assertEquals(idleContentBounds, loadingContentBounds) + assertTrue("Loading must paint inside the address bar", imagesDiffer(idleAddress, loadingAddress)) + } + + @Test + fun securityIconUsesAnIndependentAddressBarAction() { + var securityClicks = 0 + var addressClicks = 0 + composeRule.setContent { + DaoTheme { + AddressBar( + url = "https://example.com/path", + isSecure = true, + tabCount = 1, + loading = false, + progress = 0, + onSecurityClick = { securityClicks++ }, + onAddressClick = { addressClicks++ }, + onTabs = {}, + onMenu = {}, + ) + } + } + + composeRule.onNodeWithContentDescription("\u5b89\u5168\u8fde\u63a5").performClick() + + composeRule.runOnIdle { + assertEquals(1, securityClicks) + assertEquals(0, addressClicks) + } + } + + @Test + fun securityRippleCarrierStaysInsideTheAddressBar() { + composeRule.setContent { + DaoTheme { + AddressBar( + url = "https://example.com", + isSecure = true, + tabCount = 1, + loading = false, + progress = 0, + onSecurityClick = {}, + onAddressClick = {}, + onTabs = {}, + onMenu = {}, + ) + } + } + + val addressBounds = composeRule.onNodeWithTag(BROWSER_CONTROLS_TEST_TAG) + .fetchSemanticsNode().boundsInRoot + val rippleBounds = composeRule.onNodeWithTag(SECURITY_RIPPLE_TEST_TAG, useUnmergedTree = true) + .fetchSemanticsNode().boundsInRoot + + assertEquals(rippleBounds.width, rippleBounds.height, 0.5f) + assertTrue(rippleBounds.height < addressBounds.height * 0.6f) + } + + @Test + fun secureBottomSheetDisplaysRealCertificateRows() { + val details = SiteSecurityDetails( + host = "www.example.com", + state = SiteSecurityState.SECURE, + subject = "example.com", + issuer = "Example CA", + validFrom = "Jan 1, 2026, 12:00:00 AM", + validUntil = "Jan 1, 2027, 12:00:00 AM", + serialNumber = "FF", + sha256Fingerprint = "03:90:58:C6", + ) + composeRule.setContent { + DaoTheme { + SiteSecurityBottomSheet(details = details, onDismiss = {}) + } + } + + composeRule.onNodeWithText("www.example.com", useUnmergedTree = true).assertIsDisplayed() + composeRule.onNodeWithText("\u8fde\u63a5\u5b89\u5168").assertIsDisplayed() + composeRule.onNodeWithText("Example CA").assertIsDisplayed() + composeRule.onNodeWithText("Jan 1, 2027, 12:00:00 AM").fetchSemanticsNode() + composeRule.onNodeWithText("FF").fetchSemanticsNode() + composeRule.onNodeWithText("03:90:58:C6").fetchSemanticsNode() + } + + @Test + fun bookmarkTileChangesFromOutlinedToFilledSelectedState() { + val bookmarked = mutableStateOf(false) + composeRule.setContent { + DaoTheme { + DrawerBookmarkTile( + isBookmarked = bookmarked.value, + onToggleBookmark = { bookmarked.value = !bookmarked.value }, + ) + } + } + + composeRule.onNodeWithTag(BOOKMARK_DRAWER_TILE_TEST_TAG).assertIsNotSelected() + val outlined = composeRule.onNodeWithTag( + BOOKMARK_DRAWER_ICON_TEST_TAG, + useUnmergedTree = true, + ).captureToImage() + + composeRule.onNodeWithTag(BOOKMARK_DRAWER_TILE_TEST_TAG).performClick() + + composeRule.onNodeWithTag(BOOKMARK_DRAWER_TILE_TEST_TAG).assertIsSelected() + val filled = composeRule.onNodeWithTag( + BOOKMARK_DRAWER_ICON_TEST_TAG, + useUnmergedTree = true, + ).captureToImage() + assertTrue( + "Bookmark icon must visibly change when selected", + imagesDiffer(outlined, filled), + ) + } + + private fun imagesDiffer(first: ImageBitmap, second: ImageBitmap): Boolean { + if (first.width != second.width || first.height != second.height) return true + val firstPixels = first.toPixelMap() + val secondPixels = second.toPixelMap() + return (0 until first.height).any { y -> + (0 until first.width).any { x -> firstPixels[x, y] != secondPixels[x, y] } + } + } + + private companion object { + const val CONTENT_TEST_TAG = "browser-chrome-test-content" + } +} diff --git a/android/app/src/androidTest/java/com/msgbyte/dao/ui/BrowserSurfaceTest.kt b/android/app/src/androidTest/java/com/msgbyte/dao/ui/BrowserSurfaceTest.kt new file mode 100644 index 00000000..1f782b65 --- /dev/null +++ b/android/app/src/androidTest/java/com/msgbyte/dao/ui/BrowserSurfaceTest.kt @@ -0,0 +1,217 @@ +package com.msgbyte.dao.ui + +import android.content.Context +import android.graphics.Bitmap +import android.view.View +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onNodeWithTag +import androidx.compose.ui.test.performTouchInput +import androidx.compose.ui.test.swipeDown +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import io.mockk.mockk +import java.lang.reflect.Proxy +import java.util.concurrent.atomic.AtomicInteger +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.emptyFlow +import kotlinx.coroutines.runBlocking +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.EngineSession +import mozilla.components.concept.engine.EngineView +import mozilla.components.concept.engine.selection.SelectionActionDelegate +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertSame +import org.junit.Assert.assertTrue +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class BrowserSurfaceTest { + @get:Rule + val composeRule = createComposeRule() + + @Test + fun initializationAndRecompositionDoNotDestroyCreatedView() { + lateinit var engineView: RecordingEngineView + val engine = fakeEngine { context -> + RecordingEngineView(context).also { engineView = it } + } + val session = mockk(relaxed = true) + val recomposition = mutableIntStateOf(0) + + composeRule.setContent { + BrowserSurface(engine = engine, session = session) + recomposition.intValue + } + composeRule.waitForIdle() + + composeRule.runOnIdle { + recomposition.intValue++ + } + composeRule.waitForIdle() + + assertEquals(0, engineView.releaseCount.get()) + assertEquals(0, engineView.destroyCount.get()) + } + + @Test + fun boundCaptureReturnsTheRealEngineViewThumbnail() { + val expected = Bitmap.createBitmap(24, 32, Bitmap.Config.ARGB_8888) + val engine = fakeEngine { context -> RecordingEngineView(context, expected) } + val session = mockk(relaxed = true) + val capture = BrowserThumbnailCapture() + + composeRule.setContent { + BrowserSurface( + engine = engine, + session = session, + thumbnailCapture = capture, + ) + } + composeRule.waitForIdle() + + assertSame(expected, runBlocking { capture.capture() }) + } + + @Test + fun pullingAtTheTopInvokesRefreshOnce() { + val refreshCount = AtomicInteger() + val engine = fakeEngine { context -> RecordingEngineView(context) } + val session = mockk(relaxed = true) + + composeRule.setContent { + BrowserSurface( + engine = engine, + session = session, + modifier = Modifier.fillMaxSize().testTag(REFRESH_SURFACE_TAG), + onRefresh = { refreshCount.incrementAndGet() }, + ) + } + composeRule.waitForIdle() + + composeRule.onNodeWithTag(REFRESH_SURFACE_TAG).performTouchInput { + swipeDown(durationMillis = 500) + } + + composeRule.waitUntil(timeoutMillis = 5_000) { refreshCount.get() == 1 } + assertEquals(1, refreshCount.get()) + } + + @Test + fun pullingWhileGeckoReportsNonZeroScrollPositionDoesNotRefresh() { + val refreshCount = AtomicInteger() + val engine = fakeEngine { context -> RecordingEngineView(context, scrollPosition = 120f) } + val session = mockk(relaxed = true) + + composeRule.setContent { + BrowserSurface( + engine = engine, + session = session, + modifier = Modifier.fillMaxSize().testTag(REFRESH_SURFACE_TAG), + onRefresh = { refreshCount.incrementAndGet() }, + ) + } + composeRule.waitForIdle() + + composeRule.onNodeWithTag(REFRESH_SURFACE_TAG).performTouchInput { + swipeDown(durationMillis = 500) + } + composeRule.waitForIdle() + + assertEquals(0, refreshCount.get()) + } + + @Test + fun refreshingStateUpdatesWithoutRecreatingTheEngineView() { + lateinit var engineView: RecordingEngineView + val refreshing = mutableStateOf(false) + val engine = fakeEngine { context -> + RecordingEngineView(context).also { engineView = it } + } + val session = mockk(relaxed = true) + + composeRule.setContent { + BrowserSurface( + engine = engine, + session = session, + refreshing = refreshing.value, + ) + } + composeRule.waitForIdle() + val container = engineView.parent as SwipeRefreshLayout + assertFalse(container.isRefreshing) + + composeRule.runOnIdle { refreshing.value = true } + composeRule.waitForIdle() + assertTrue(container.isRefreshing) + + composeRule.runOnIdle { refreshing.value = false } + composeRule.waitForIdle() + assertFalse(container.isRefreshing) + assertEquals(0, engineView.releaseCount.get()) + assertEquals(0, engineView.destroyCount.get()) + } + + private fun fakeEngine(createView: (Context) -> EngineView): Engine = Proxy.newProxyInstance( + Engine::class.java.classLoader, + arrayOf(Engine::class.java), + ) { _, method, arguments -> + if (method.name == "createView") { + createView(arguments?.first() as Context) + } else { + null + } + } as Engine + + private class RecordingEngineView( + context: Context, + private val thumbnail: Bitmap? = null, + scrollPosition: Float = 0f, + ) : View(context), EngineView { + val releaseCount = AtomicInteger() + val destroyCount = AtomicInteger() + + override val verticalScrollPosition: Flow = MutableStateFlow(scrollPosition) + override val verticalScrollDelta: Flow = emptyFlow() + override var selectionActionDelegate: SelectionActionDelegate? = null + + override fun render(session: EngineSession) = Unit + + override fun release() { + releaseCount.incrementAndGet() + } + + override fun onDestroy() { + destroyCount.incrementAndGet() + } + + override fun captureThumbnail(onFinish: (Bitmap?) -> Unit) { + thumbnail?.let(onFinish) + } + + override fun setVerticalClipping(height: Int) = Unit + + override fun setDynamicToolbarMaxHeight(height: Int) = Unit + + override fun setActivityContext(context: Context?) = Unit + + override fun addWindowInsetsListener( + key: String, + listener: androidx.core.view.OnApplyWindowInsetsListener?, + ) = Unit + + override fun removeWindowInsetsListener(id: String) = Unit + } + + private companion object { + const val REFRESH_SURFACE_TAG = "refresh-browser-surface" + } +} diff --git a/android/app/src/androidTest/java/com/msgbyte/dao/ui/ExtensionsScreenTest.kt b/android/app/src/androidTest/java/com/msgbyte/dao/ui/ExtensionsScreenTest.kt new file mode 100644 index 00000000..d498696e --- /dev/null +++ b/android/app/src/androidTest/java/com/msgbyte/dao/ui/ExtensionsScreenTest.kt @@ -0,0 +1,95 @@ +package com.msgbyte.dao.ui + +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.onAllNodesWithTag +import androidx.compose.ui.test.onNodeWithTag +import androidx.compose.ui.test.performClick +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.msgbyte.dao.browser.BuiltInAdBlocker +import com.msgbyte.dao.browser.ExtensionRepository +import com.msgbyte.dao.ui.theme.DaoTheme +import io.mockk.every +import io.mockk.just +import io.mockk.mockk +import io.mockk.runs +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.webextension.Metadata +import mozilla.components.concept.engine.webextension.WebExtension +import org.junit.Assert.assertEquals +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class ExtensionsScreenTest { + @get:Rule + val composeRule = createComposeRule() + + @Test + fun exposesInstallActionAndUninstallOnlyForCustomExtensions() { + val engine = mockk() + val builtIn = extension(BuiltInAdBlocker.EXTENSION_ID, "uBlock Origin", builtIn = true) + val custom = extension("custom@example", "Custom", builtIn = false) + every { engine.registerWebExtensionDelegate(any()) } just runs + every { engine.listInstalledWebExtensions(any(), any()) } answers { + firstArg<(List) -> Unit>().invoke(listOf(builtIn, custom)) + } + val repository = ExtensionRepository(engine) + + composeRule.setContent { + DaoTheme { + ExtensionsScreen(repository = repository, onOpenStore = {}, onBack = {}) + } + } + + assertEquals(1, composeRule.onAllNodesWithTag("install-extension").fetchSemanticsNodes().size) + assertEquals( + 1, + composeRule.onAllNodesWithTag("uninstall-extension-custom@example") + .fetchSemanticsNodes().size, + ) + assertEquals( + 0, + composeRule.onAllNodesWithTag("uninstall-extension-${BuiltInAdBlocker.EXTENSION_ID}") + .fetchSemanticsNodes().size, + ) + } + + @Test + fun opensNativeStoreFromStoreAction() { + val engine = mockk() + every { engine.registerWebExtensionDelegate(any()) } just runs + every { engine.listInstalledWebExtensions(any(), any()) } answers { + firstArg<(List) -> Unit>().invoke(emptyList()) + } + val repository = ExtensionRepository(engine) + var storeOpened = false + + composeRule.setContent { + DaoTheme { + ExtensionsScreen( + repository = repository, + onOpenStore = { storeOpened = true }, + onBack = {}, + ) + } + } + + composeRule.onNodeWithTag("open-extension-store").performClick() + + composeRule.runOnIdle { assertEquals(true, storeOpened) } + } + + private fun extension(id: String, name: String, builtIn: Boolean): WebExtension { + val metadata = mockk() + every { metadata.name } returns name + every { metadata.description } returns "Description" + every { metadata.version } returns "1.0" + return mockk { + every { this@mockk.id } returns id + every { getMetadata() } returns metadata + every { isEnabled() } returns true + every { isBuiltIn() } returns builtIn + } + } +} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..564f767a --- /dev/null +++ b/android/app/src/main/AndroidManifest.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/kiss_translator/META-INF/cose.manifest b/android/app/src/main/assets/extensions/kiss_translator/META-INF/cose.manifest new file mode 100644 index 00000000..ed425bf4 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/META-INF/cose.manifest @@ -0,0 +1,282 @@ +Manifest-Version: 1.0 + +Name: options.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wwcJ1ON1axjWlDDQ99dHayIFmgA= +SHA256-Digest: 7Kex9fyqHWhGoSKWoa1qpYMBBLXGctIuGWE+IFkI8RM= + +Name: options.js.LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q/pe6VwhGsadP93M1uAyCiROA6s= +SHA256-Digest: YvvvxqqLmsaKLFUIu0exDESQHo3rRTfxa5+AtlKDttk= + +Name: popup.js.LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FXZvkqPf5nVgil9j9Pef0sGHJC0= +SHA256-Digest: mFjuBGuwtUk1gxrc1BD3Rgtz7kQcVOfF4qmXtkJup1M= + +Name: background.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AfYFZIVJiKbqsF9BWdF3BLTEeJg= +SHA256-Digest: JNfHi89DQ35LoGF7UaVwxgfwwrFVPl7jrE2FAakaCpU= + +Name: manifest.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /7vw/f49ozy6yJ21arhewAlu9io= +SHA256-Digest: 3xDNVKiINZDmehAtxgYLUSepFEdtkwdRtmwyWAf5lO8= + +Name: content.js.LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FXZvkqPf5nVgil9j9Pef0sGHJC0= +SHA256-Digest: mFjuBGuwtUk1gxrc1BD3Rgtz7kQcVOfF4qmXtkJup1M= + +Name: favicon.ico +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WeKU03G2B93McLSpnWDIsYOS1XQ= +SHA256-Digest: Q4kRi5esPLx/1T432bpeXhyqcok2MAAtnD3aHg4+q/0= + +Name: options.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: U2IfrqX9KlxqWxmlGJrgmca/fF8= +SHA256-Digest: qqGIjsTLH2cvpysz7RsCIhyRmnDv4Ppl1xqEB0fZQ08= + +Name: popup.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KClX81XzevAL3PqTrK+9Uf/aEWQ= +SHA256-Digest: UMhSMAUsDM1rlDopXRaXgwpxAs/IpawazWqocUNqyQg= + +Name: injector-shadowroot.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7EXP5Z2uneBKML1xXgoVWkkN+G0= +SHA256-Digest: hSXPBT/Z3diI4Chlqz8ANDMuMmFkS6yuuWbpffms6sM= + +Name: content.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: +Q03ZbEq6Vvz/AoYYxrGeY4j2Eo= +SHA256-Digest: WLIvujNFqs25SdFYC2C+RxwRCMuYTuHCT6UNYEiwsQE= + +Name: popup.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Rsc03izIcX79bGMxUYnWpKw4orQ= +SHA256-Digest: Agp61e5Leu0bWeG0p5br+kTWI3zHNQEoVa+zaWfBuME= + +Name: asset-manifest.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: B3DvkLTumlk6Q+pSffleCzTmUWQ= +SHA256-Digest: JDIDvX/Xdd0lxgN70wHuP8UZnenRSbwtHDrHlKJ8zjU= + +Name: background.js.LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YXV81XE3Znb1K8QuzrHcC49DCi8= +SHA256-Digest: cCdKbz/mKJqqariq3MBbta7M/u+fFUbUmR1yEmm7of4= + +Name: injector-subtitle.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JRNed44HXO/WbOcOvkJkpHPqhBw= +SHA256-Digest: syCKSbkSiHAvbkQxwEt+isqvHoOhDTFknnIQOEhrQyk= + +Name: _locales/ja/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yCwOXI4vtoY4Lil0oQfs3sQN8YM= +SHA256-Digest: 5kN8gCTzh4jLy8N0vTIC7fpGCeT/el0E9lsBpnGDar0= + +Name: _locales/es/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: po6YzolNGnMqWJNyJ4ntE61sJOA= +SHA256-Digest: 9lE/8yNmIWLpg6IHgWBUIeD4pFWUnzWKMu4eWl9FhEo= + +Name: _locales/fr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZECl+Lb8P4JCJeo6+51S9hfjrVs= +SHA256-Digest: UTknz4XI8QU7j28h6N/cEVS2YRdIgnRrR7XlpZXyl0Q= + +Name: _locales/zh_CN/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HjkbhJIDpfb8yjItg03wLvIMIPg= +SHA256-Digest: N/k2pFiyU2v4XQxBFLjdceyMzOn+p8tg2ny+b74SxQY= + +Name: _locales/en/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /7qnCKhP7gFuTt/SE74FJTQsn8Q= +SHA256-Digest: 6U7OSDQm6mX0k3AD6hdWPdeSgzUdCitXWbj+pY8BXPk= + +Name: _locales/ko/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8UFfwxdn4oB/zC4fLE2+g+lZIpI= +SHA256-Digest: Zvp1DFGuqHvWYI3H9/FBiG+o6QWxnFBjG/OvRN0vFd8= + +Name: _locales/de/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iRFAIySdnMH/Kx2nj/v2hraYeXE= +SHA256-Digest: rtxrJ1/hUhcTfqCd2HRC1FLloHZX/R6VNRnihTcC0VQ= + +Name: _locales/zh_TW/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SKNVI4IkjF0gitlc2WexiE4ZOhg= +SHA256-Digest: d/sVyd8hdkHHezOQPs4wUT+WppXWjxbr0sBwueUdlls= + +Name: images/logo32.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VrldK7QCHWXdHW7cBr977bUEFdQ= +SHA256-Digest: 2vd2HgttKRhjzve+E0mpd4BwkvTCOlLIgheFjyPwrHE= + +Name: images/logo128.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: c0IfEdU4He3B7MiCCxUeai+YcgQ= +SHA256-Digest: K/3EMGaGG/KgPFfI6bm2MJWcuTzZc0pe3ID5n7GKDB4= + +Name: images/logo48.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: o646K2dGtvamOlWPjmoDwnEXjV0= +SHA256-Digest: R7qJ9xwcprgKKJiehogQ3gTXgvaS6z1Yf8g1d3jEthc= + +Name: images/logo128_active.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WIciExrMfsRFZeWaG7GJaCQSdWI= +SHA256-Digest: UTKlCOhI/RA0Zf3l8zPN5sm0hhxrSLH32CPN3eGILKM= + +Name: images/logo32_active.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KuaOaQyEh/KKg3MYnI1lsv6/25I= +SHA256-Digest: F196wvng3nmicTKT/qbqPKo2GWcGr+IcNsrZwCLyfxg= + +Name: images/logo192.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ko1SekbkMkGmPrgLQqehrPqp7kk= +SHA256-Digest: w4yDhNsKkWI1yRY+Qrps+OylS6VGeEy/P3AudeIG0K8= + +Name: images/logo192_active.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qXdsH+N1W9Js0CrDMm41pRJfUCw= +SHA256-Digest: xj5nJMJLXYgubGlXbrJzZsBG9frqeSMQQrhRiI2QUT0= + +Name: images/logo16_active.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XRXjfapzhedj+YS2ua7QA9k2gqU= +SHA256-Digest: oMp/FD0D0g2qK8yectWbim9JvYmhBGQeHjyXAWF88EU= + +Name: images/logo48_active.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: a6cje5Z8MPvVJ9tkO3HM6rqbGjI= +SHA256-Digest: qnvuNYy50zjAiEct8ggH6ltbxDRjXNAzOzrJJ84YMzQ= + +Name: images/logo16.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1MFbGGyIhaDP08ShC5122WzIwKo= +SHA256-Digest: 0w3CnVZxOxuapPITnu8Zhh7MfpXt05ueQBp+iQcFfKw= + +Name: api/AliyunBailian.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: IfRlI7CWrtkCZD1ADxgMpic6U/I= +SHA256-Digest: XMJtyWGy7NCRL04CPIznRbzFKsRbHEuurdcgH2tg3iU= + +Name: api/XiaomiMimo.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q+ZtgBhlwgk7kjLmffVzvuGiQFk= +SHA256-Digest: DCAerjnFqgYGDtfuJDMk3i3zpItdMKAw/9ao4JTbw7w= + +Name: api/BuiltinAI.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ehCNwXYD2SVz4B2NHJOGeTJBl8o= +SHA256-Digest: NhPFSmPW0OPtwGu0k0xltNYK54PQFTfT3+JTicFyNPk= + +Name: api/OpenAI.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YxSH0w7nVa7+xzbIpqA4UNJTojs= +SHA256-Digest: Hadkk7D/7SFdFeM7DvXJvYHBHqFw6sH3aQ/srQRTQQs= + +Name: api/Tencent.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zgGxaujvoeFMpHZkIUpaSnPUs+4= +SHA256-Digest: fDcK1LdePzDQ+n2nH5BGag7pWohxiUeaqd9BQHm1DrY= + +Name: api/CloudflareAI.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2jyq7dqUFuOy3SQGm42ZfEXdaqU= +SHA256-Digest: zuNdPw7LeSXOComur/i5B8ra58P+RKI+QAHMjV7ldQI= + +Name: api/DeepL.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4JXiwXjePfxbYlKZbXDAfNQYuq4= +SHA256-Digest: JgNl/2K6TKFxbc5egpM2ryzx8lIz1xFcF13mk3v1COg= + +Name: api/AzureAI.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YKlEHmhbaF4Gfpge/e/f+ODmINg= +SHA256-Digest: ib74XWf0WYTbqF+NfmqO2RWF9wbEP3I2qJWQ2PSUD94= + +Name: api/OpenCodeGo.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QoxTKETWu5PxpxXThSMBy5aNUO4= +SHA256-Digest: cktFJV8g5lQLbKmPPELqxGvD9fsR/v2iu8sTcBeKuSw= + +Name: api/DeepSeek.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: acW4N0rLEMyy5wBWp3OtNIDpSvU= +SHA256-Digest: 3rpfmKXBeW4g/KwxSbzX64oy8L3QTQSIGUALHyi9FDk= + +Name: api/Volcengine.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: sT4pM5mQImxcWC6FNa+3F2DMl1I= +SHA256-Digest: hPnizR2n5z3GyaDyUhdF05yulsAIdSzbG69XqMlDk6E= + +Name: api/Zai.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: lp4Ngq2CQgYUKK3hiu6Y6wRufHQ= +SHA256-Digest: 50jLUQjON7EW16W6l9N+Cul+rfaEmw3hGvskjiRKAeE= + +Name: api/Google.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: M6jqHLtFYlKVS3i39eYO7LLS8aM= +SHA256-Digest: TmqoiS7xWmtDH0DyyQRZeb9+I1dSTnu7ibNTz08ypaw= + +Name: api/Claude.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wBNj6MJ8MDjfZHxr4c96sv9086k= +SHA256-Digest: oxAfMEehGaoRglrZNpUQ8MRyQoyMUtQg4xvGLbRKg2Q= + +Name: api/OrcaRouter.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kSxuD172HaaSj5cMBGXiSkkV45w= +SHA256-Digest: XvdyzhPcunURC6I7xPeGiAogf7O2Q9D1GAQFYQjrHuc= + +Name: api/SiliconFlow.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HCMqrobzNbdncbxwf3Y4WayPbXs= +SHA256-Digest: DS89jP3uNjFhZJJjqJ15be+xY/N/q4jx5Cq79V7ERu0= + +Name: api/Ollama.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2kQAsv745B7Bt7jGr/tIShlzkAc= +SHA256-Digest: nGK/AVnulsi1jIanMvM7ACtLO7Fl7Ibo7MpRrWqC2rY= + +Name: api/Gemini.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aRJyvuLUT0SL3fZyv77YHFow2HA= +SHA256-Digest: irCpuv7BH35pvLn8T/2PG8kn0d3Lu2/zbe5a6LWp1gI= + +Name: api/ePhoneAI.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: amSpLeURpaGYUQKvHyrZU3foYMs= +SHA256-Digest: vFo0JpfP9sCADfjOG6yDIy7uioDvDXnZq+Gcjb9iNvA= + +Name: api/Microsoft.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: RlMWbeYZ8LelHhRpqrVFSTuWKlk= +SHA256-Digest: XPsP+jIxMTwpaLXj/t/M6OLpbGG95FcjhMOImneoA1A= + +Name: api/Cerebras.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eD6Z1Eb+lyq1h9lfM4LrFUjwxUU= +SHA256-Digest: NVwiJShM0Gyc9CRhELYMshvIYDmHKYHhvmu4Le7C/6c= + +Name: api/OpenRouter.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: +OduFuEvjulxNLZzfHRikmUEyGI= +SHA256-Digest: kUhpbjoG0j6P4rdD69PuEXM1Tb17WNM9HKakDuABjVM= + +Name: api/Baidu.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: w4jvOnEaewEDPJXKRvd3Cp86wf0= +SHA256-Digest: EFl1CiBprsYID/SHMpMeh6mb09Its+hHHOviVbYBS3U= + diff --git a/android/app/src/main/assets/extensions/kiss_translator/META-INF/cose.sig b/android/app/src/main/assets/extensions/kiss_translator/META-INF/cose.sig new file mode 100644 index 00000000..0e8b6dbe Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/META-INF/cose.sig differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/META-INF/manifest.mf b/android/app/src/main/assets/extensions/kiss_translator/META-INF/manifest.mf new file mode 100644 index 00000000..b55ed153 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/META-INF/manifest.mf @@ -0,0 +1,292 @@ +Manifest-Version: 1.0 + +Name: options.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wwcJ1ON1axjWlDDQ99dHayIFmgA= +SHA256-Digest: 7Kex9fyqHWhGoSKWoa1qpYMBBLXGctIuGWE+IFkI8RM= + +Name: options.js.LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q/pe6VwhGsadP93M1uAyCiROA6s= +SHA256-Digest: YvvvxqqLmsaKLFUIu0exDESQHo3rRTfxa5+AtlKDttk= + +Name: popup.js.LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FXZvkqPf5nVgil9j9Pef0sGHJC0= +SHA256-Digest: mFjuBGuwtUk1gxrc1BD3Rgtz7kQcVOfF4qmXtkJup1M= + +Name: background.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AfYFZIVJiKbqsF9BWdF3BLTEeJg= +SHA256-Digest: JNfHi89DQ35LoGF7UaVwxgfwwrFVPl7jrE2FAakaCpU= + +Name: manifest.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /7vw/f49ozy6yJ21arhewAlu9io= +SHA256-Digest: 3xDNVKiINZDmehAtxgYLUSepFEdtkwdRtmwyWAf5lO8= + +Name: content.js.LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FXZvkqPf5nVgil9j9Pef0sGHJC0= +SHA256-Digest: mFjuBGuwtUk1gxrc1BD3Rgtz7kQcVOfF4qmXtkJup1M= + +Name: favicon.ico +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WeKU03G2B93McLSpnWDIsYOS1XQ= +SHA256-Digest: Q4kRi5esPLx/1T432bpeXhyqcok2MAAtnD3aHg4+q/0= + +Name: options.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: U2IfrqX9KlxqWxmlGJrgmca/fF8= +SHA256-Digest: qqGIjsTLH2cvpysz7RsCIhyRmnDv4Ppl1xqEB0fZQ08= + +Name: popup.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KClX81XzevAL3PqTrK+9Uf/aEWQ= +SHA256-Digest: UMhSMAUsDM1rlDopXRaXgwpxAs/IpawazWqocUNqyQg= + +Name: injector-shadowroot.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7EXP5Z2uneBKML1xXgoVWkkN+G0= +SHA256-Digest: hSXPBT/Z3diI4Chlqz8ANDMuMmFkS6yuuWbpffms6sM= + +Name: content.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: +Q03ZbEq6Vvz/AoYYxrGeY4j2Eo= +SHA256-Digest: WLIvujNFqs25SdFYC2C+RxwRCMuYTuHCT6UNYEiwsQE= + +Name: popup.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Rsc03izIcX79bGMxUYnWpKw4orQ= +SHA256-Digest: Agp61e5Leu0bWeG0p5br+kTWI3zHNQEoVa+zaWfBuME= + +Name: asset-manifest.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: B3DvkLTumlk6Q+pSffleCzTmUWQ= +SHA256-Digest: JDIDvX/Xdd0lxgN70wHuP8UZnenRSbwtHDrHlKJ8zjU= + +Name: background.js.LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YXV81XE3Znb1K8QuzrHcC49DCi8= +SHA256-Digest: cCdKbz/mKJqqariq3MBbta7M/u+fFUbUmR1yEmm7of4= + +Name: injector-subtitle.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JRNed44HXO/WbOcOvkJkpHPqhBw= +SHA256-Digest: syCKSbkSiHAvbkQxwEt+isqvHoOhDTFknnIQOEhrQyk= + +Name: _locales/ja/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yCwOXI4vtoY4Lil0oQfs3sQN8YM= +SHA256-Digest: 5kN8gCTzh4jLy8N0vTIC7fpGCeT/el0E9lsBpnGDar0= + +Name: _locales/es/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: po6YzolNGnMqWJNyJ4ntE61sJOA= +SHA256-Digest: 9lE/8yNmIWLpg6IHgWBUIeD4pFWUnzWKMu4eWl9FhEo= + +Name: _locales/fr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZECl+Lb8P4JCJeo6+51S9hfjrVs= +SHA256-Digest: UTknz4XI8QU7j28h6N/cEVS2YRdIgnRrR7XlpZXyl0Q= + +Name: _locales/zh_CN/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HjkbhJIDpfb8yjItg03wLvIMIPg= +SHA256-Digest: N/k2pFiyU2v4XQxBFLjdceyMzOn+p8tg2ny+b74SxQY= + +Name: _locales/en/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /7qnCKhP7gFuTt/SE74FJTQsn8Q= +SHA256-Digest: 6U7OSDQm6mX0k3AD6hdWPdeSgzUdCitXWbj+pY8BXPk= + +Name: _locales/ko/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8UFfwxdn4oB/zC4fLE2+g+lZIpI= +SHA256-Digest: Zvp1DFGuqHvWYI3H9/FBiG+o6QWxnFBjG/OvRN0vFd8= + +Name: _locales/de/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iRFAIySdnMH/Kx2nj/v2hraYeXE= +SHA256-Digest: rtxrJ1/hUhcTfqCd2HRC1FLloHZX/R6VNRnihTcC0VQ= + +Name: _locales/zh_TW/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SKNVI4IkjF0gitlc2WexiE4ZOhg= +SHA256-Digest: d/sVyd8hdkHHezOQPs4wUT+WppXWjxbr0sBwueUdlls= + +Name: images/logo32.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VrldK7QCHWXdHW7cBr977bUEFdQ= +SHA256-Digest: 2vd2HgttKRhjzve+E0mpd4BwkvTCOlLIgheFjyPwrHE= + +Name: images/logo128.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: c0IfEdU4He3B7MiCCxUeai+YcgQ= +SHA256-Digest: K/3EMGaGG/KgPFfI6bm2MJWcuTzZc0pe3ID5n7GKDB4= + +Name: images/logo48.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: o646K2dGtvamOlWPjmoDwnEXjV0= +SHA256-Digest: R7qJ9xwcprgKKJiehogQ3gTXgvaS6z1Yf8g1d3jEthc= + +Name: images/logo128_active.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WIciExrMfsRFZeWaG7GJaCQSdWI= +SHA256-Digest: UTKlCOhI/RA0Zf3l8zPN5sm0hhxrSLH32CPN3eGILKM= + +Name: images/logo32_active.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KuaOaQyEh/KKg3MYnI1lsv6/25I= +SHA256-Digest: F196wvng3nmicTKT/qbqPKo2GWcGr+IcNsrZwCLyfxg= + +Name: images/logo192.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ko1SekbkMkGmPrgLQqehrPqp7kk= +SHA256-Digest: w4yDhNsKkWI1yRY+Qrps+OylS6VGeEy/P3AudeIG0K8= + +Name: images/logo192_active.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qXdsH+N1W9Js0CrDMm41pRJfUCw= +SHA256-Digest: xj5nJMJLXYgubGlXbrJzZsBG9frqeSMQQrhRiI2QUT0= + +Name: images/logo16_active.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XRXjfapzhedj+YS2ua7QA9k2gqU= +SHA256-Digest: oMp/FD0D0g2qK8yectWbim9JvYmhBGQeHjyXAWF88EU= + +Name: images/logo48_active.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: a6cje5Z8MPvVJ9tkO3HM6rqbGjI= +SHA256-Digest: qnvuNYy50zjAiEct8ggH6ltbxDRjXNAzOzrJJ84YMzQ= + +Name: images/logo16.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1MFbGGyIhaDP08ShC5122WzIwKo= +SHA256-Digest: 0w3CnVZxOxuapPITnu8Zhh7MfpXt05ueQBp+iQcFfKw= + +Name: api/AliyunBailian.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: IfRlI7CWrtkCZD1ADxgMpic6U/I= +SHA256-Digest: XMJtyWGy7NCRL04CPIznRbzFKsRbHEuurdcgH2tg3iU= + +Name: api/XiaomiMimo.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q+ZtgBhlwgk7kjLmffVzvuGiQFk= +SHA256-Digest: DCAerjnFqgYGDtfuJDMk3i3zpItdMKAw/9ao4JTbw7w= + +Name: api/BuiltinAI.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ehCNwXYD2SVz4B2NHJOGeTJBl8o= +SHA256-Digest: NhPFSmPW0OPtwGu0k0xltNYK54PQFTfT3+JTicFyNPk= + +Name: api/OpenAI.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YxSH0w7nVa7+xzbIpqA4UNJTojs= +SHA256-Digest: Hadkk7D/7SFdFeM7DvXJvYHBHqFw6sH3aQ/srQRTQQs= + +Name: api/Tencent.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zgGxaujvoeFMpHZkIUpaSnPUs+4= +SHA256-Digest: fDcK1LdePzDQ+n2nH5BGag7pWohxiUeaqd9BQHm1DrY= + +Name: api/CloudflareAI.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2jyq7dqUFuOy3SQGm42ZfEXdaqU= +SHA256-Digest: zuNdPw7LeSXOComur/i5B8ra58P+RKI+QAHMjV7ldQI= + +Name: api/DeepL.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4JXiwXjePfxbYlKZbXDAfNQYuq4= +SHA256-Digest: JgNl/2K6TKFxbc5egpM2ryzx8lIz1xFcF13mk3v1COg= + +Name: api/AzureAI.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YKlEHmhbaF4Gfpge/e/f+ODmINg= +SHA256-Digest: ib74XWf0WYTbqF+NfmqO2RWF9wbEP3I2qJWQ2PSUD94= + +Name: api/OpenCodeGo.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QoxTKETWu5PxpxXThSMBy5aNUO4= +SHA256-Digest: cktFJV8g5lQLbKmPPELqxGvD9fsR/v2iu8sTcBeKuSw= + +Name: api/DeepSeek.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: acW4N0rLEMyy5wBWp3OtNIDpSvU= +SHA256-Digest: 3rpfmKXBeW4g/KwxSbzX64oy8L3QTQSIGUALHyi9FDk= + +Name: api/Volcengine.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: sT4pM5mQImxcWC6FNa+3F2DMl1I= +SHA256-Digest: hPnizR2n5z3GyaDyUhdF05yulsAIdSzbG69XqMlDk6E= + +Name: api/Zai.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: lp4Ngq2CQgYUKK3hiu6Y6wRufHQ= +SHA256-Digest: 50jLUQjON7EW16W6l9N+Cul+rfaEmw3hGvskjiRKAeE= + +Name: api/Google.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: M6jqHLtFYlKVS3i39eYO7LLS8aM= +SHA256-Digest: TmqoiS7xWmtDH0DyyQRZeb9+I1dSTnu7ibNTz08ypaw= + +Name: api/Claude.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wBNj6MJ8MDjfZHxr4c96sv9086k= +SHA256-Digest: oxAfMEehGaoRglrZNpUQ8MRyQoyMUtQg4xvGLbRKg2Q= + +Name: api/OrcaRouter.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kSxuD172HaaSj5cMBGXiSkkV45w= +SHA256-Digest: XvdyzhPcunURC6I7xPeGiAogf7O2Q9D1GAQFYQjrHuc= + +Name: api/SiliconFlow.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HCMqrobzNbdncbxwf3Y4WayPbXs= +SHA256-Digest: DS89jP3uNjFhZJJjqJ15be+xY/N/q4jx5Cq79V7ERu0= + +Name: api/Ollama.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2kQAsv745B7Bt7jGr/tIShlzkAc= +SHA256-Digest: nGK/AVnulsi1jIanMvM7ACtLO7Fl7Ibo7MpRrWqC2rY= + +Name: api/Gemini.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aRJyvuLUT0SL3fZyv77YHFow2HA= +SHA256-Digest: irCpuv7BH35pvLn8T/2PG8kn0d3Lu2/zbe5a6LWp1gI= + +Name: api/ePhoneAI.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: amSpLeURpaGYUQKvHyrZU3foYMs= +SHA256-Digest: vFo0JpfP9sCADfjOG6yDIy7uioDvDXnZq+Gcjb9iNvA= + +Name: api/Microsoft.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: RlMWbeYZ8LelHhRpqrVFSTuWKlk= +SHA256-Digest: XPsP+jIxMTwpaLXj/t/M6OLpbGG95FcjhMOImneoA1A= + +Name: api/Cerebras.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eD6Z1Eb+lyq1h9lfM4LrFUjwxUU= +SHA256-Digest: NVwiJShM0Gyc9CRhELYMshvIYDmHKYHhvmu4Le7C/6c= + +Name: api/OpenRouter.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: +OduFuEvjulxNLZzfHRikmUEyGI= +SHA256-Digest: kUhpbjoG0j6P4rdD69PuEXM1Tb17WNM9HKakDuABjVM= + +Name: api/Baidu.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: w4jvOnEaewEDPJXKRvd3Cp86wf0= +SHA256-Digest: EFl1CiBprsYID/SHMpMeh6mb09Its+hHHOviVbYBS3U= + +Name: META-INF/cose.manifest +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8OJG6LjxEM/Zc08LHxbxIJoqPHE= +SHA256-Digest: ZmMFUW7MmkIgUV3OvpidPjn232u2wwxWv4VQmDNan1s= + +Name: META-INF/cose.sig +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PmIHXZ/hdZ3r89eRHQq6HrZ4ynk= +SHA256-Digest: lqQvSFgtjIMwQFYYojQgSuZN339OwxKRKUMYB+2IVyM= + diff --git a/android/app/src/main/assets/extensions/kiss_translator/META-INF/mozilla.rsa b/android/app/src/main/assets/extensions/kiss_translator/META-INF/mozilla.rsa new file mode 100644 index 00000000..cb335ca3 Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/META-INF/mozilla.rsa differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/META-INF/mozilla.sf b/android/app/src/main/assets/extensions/kiss_translator/META-INF/mozilla.sf new file mode 100644 index 00000000..96ac44f1 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/META-INF/mozilla.sf @@ -0,0 +1,4 @@ +Signature-Version: 1.0 +SHA1-Digest-Manifest: 5RyJYrO3P9ysNCndysjjfB65u5g= +SHA256-Digest-Manifest: ZiIalJJ8gXVT35vWTpXDtIi5dpvXW6JUk5s308JNibw= + diff --git a/android/app/src/main/assets/extensions/kiss_translator/_locales/de/messages.json b/android/app/src/main/assets/extensions/kiss_translator/_locales/de/messages.json new file mode 100644 index 00000000..94a78d1f --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/_locales/de/messages.json @@ -0,0 +1,32 @@ +{ + "app_name": { + "message": "KISS Übersetzer" + }, + "app_description": { + "message": "Eine minimalistische zweisprachige Übersetzungserweiterung, die Webseiten-, Textauswahl- und Videountertitel-Übersetzung unterstützt." + }, + "translate_selection": { + "message": "\"%s\" übersetzen" + }, + "toggle_translate": { + "message": "Übersetzung umschalten" + }, + "toggle_translate_only": { + "message": "Nur Übersetzung anzeigen" + }, + "toggle_style": { + "message": "Stile umschalten" + }, + "open_options": { + "message": "Einstellungen öffnen" + }, + "open_tranbox": { + "message": "Popup-Fenster öffnen" + }, + "open_separate_window": { + "message": "In eigenem Fenster öffnen" + }, + "toggle_tranbox": { + "message": "Übersetzungsbox umschalten" + } +} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/_locales/en/messages.json b/android/app/src/main/assets/extensions/kiss_translator/_locales/en/messages.json new file mode 100644 index 00000000..cf0ac675 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/_locales/en/messages.json @@ -0,0 +1,32 @@ +{ + "app_name": { + "message": "KISS Translator" + }, + "app_description": { + "message": "A minimalist bilingual translation extension that supports webpage, text selection, and video subtitle translation." + }, + "translate_selection": { + "message": "Translate \"%s\"" + }, + "toggle_translate": { + "message": "Toggle Translation" + }, + "toggle_translate_only": { + "message": "Show translation only" + }, + "toggle_style": { + "message": "Toggle Styles" + }, + "open_options": { + "message": "Open Setting" + }, + "open_tranbox": { + "message": "Open Popup Box" + }, + "open_separate_window": { + "message": "Open Independent Window" + }, + "toggle_tranbox": { + "message": "Toggle Translation Box" + } +} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/_locales/es/messages.json b/android/app/src/main/assets/extensions/kiss_translator/_locales/es/messages.json new file mode 100644 index 00000000..09167892 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/_locales/es/messages.json @@ -0,0 +1,32 @@ +{ + "app_name": { + "message": "KISS Traductor" + }, + "app_description": { + "message": "Una extensión de traducción bilingüe minimalista que admite la traducción de páginas web, selección de texto y subtítulos de video." + }, + "translate_selection": { + "message": "Traducir \"%s\"" + }, + "toggle_translate": { + "message": "Alternar traducción" + }, + "toggle_translate_only": { + "message": "Mostrar solo traducción" + }, + "toggle_style": { + "message": "Cambiar estilo" + }, + "open_options": { + "message": "Abrir configuración" + }, + "open_tranbox": { + "message": "Abrir ventana emergente" + }, + "open_separate_window": { + "message": "Abrir en ventana independiente" + }, + "toggle_tranbox": { + "message": "Alternar cuadro de traducción" + } +} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/_locales/fr/messages.json b/android/app/src/main/assets/extensions/kiss_translator/_locales/fr/messages.json new file mode 100644 index 00000000..0f0aab7c --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/_locales/fr/messages.json @@ -0,0 +1,32 @@ +{ + "app_name": { + "message": "KISS Traducteur" + }, + "app_description": { + "message": "Une extension de traduction bilingue minimaliste prenant en charge la traduction de pages web, de texte sélectionné et de sous-titres vidéo." + }, + "translate_selection": { + "message": "Traduire \"%s\"" + }, + "toggle_translate": { + "message": "Activer/désactiver la traduction" + }, + "toggle_translate_only": { + "message": "Afficher uniquement la traduction" + }, + "toggle_style": { + "message": "Changer de style" + }, + "open_options": { + "message": "Ouvrir les paramètres" + }, + "open_tranbox": { + "message": "Ouvrir la fenêtre contextuelle" + }, + "open_separate_window": { + "message": "Ouvrir dans une fenêtre indépendante" + }, + "toggle_tranbox": { + "message": "Basculer la boîte de traduction" + } +} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/_locales/ja/messages.json b/android/app/src/main/assets/extensions/kiss_translator/_locales/ja/messages.json new file mode 100644 index 00000000..15dbcec5 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/_locales/ja/messages.json @@ -0,0 +1,32 @@ +{ + "app_name": { + "message": "シンプル翻訳" + }, + "app_description": { + "message": "Webサイト、テキスト選択、動画字幕などの翻訳に対応した、シンプルで直感的な二言語対応翻訳拡張機能。複数の翻訳サービスやAI翻訳APIをサポートし、豊富で柔軟なカスタマイズオプションを備えています。" + }, + "translate_selection": { + "message": "「%s」を翻訳" + }, + "toggle_translate": { + "message": "翻訳の切り替え" + }, + "toggle_translate_only": { + "message": "訳文のみ表示" + }, + "toggle_style": { + "message": "スタイル切り替え" + }, + "open_options": { + "message": "設定を開く" + }, + "open_tranbox": { + "message": "ポップアップを開く" + }, + "open_separate_window": { + "message": "独立ウィンドウで開く" + }, + "toggle_tranbox": { + "message": "翻訳ボックスを切り替え" + } +} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/_locales/ko/messages.json b/android/app/src/main/assets/extensions/kiss_translator/_locales/ko/messages.json new file mode 100644 index 00000000..cc26363b --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/_locales/ko/messages.json @@ -0,0 +1,32 @@ +{ + "app_name": { + "message": "심플 번역" + }, + "app_description": { + "message": "웹페이지, 단어 선택, 동영상 자막 번역 등을 지원하는 심플한 이중 언어 대조 번역 확장 프로그램. 다양한 번역 서비스 및 AI 번역 인터페이스를 지원하며, 풍부하고 유연한 사용자 설정 옵션을 제공합니다." + }, + "translate_selection": { + "message": "\"%s\" 번역" + }, + "toggle_translate": { + "message": "번역 켜기" + }, + "toggle_translate_only": { + "message": "번역만 표시" + }, + "toggle_style": { + "message": "스타일 전환" + }, + "open_options": { + "message": "설정 열기" + }, + "open_tranbox": { + "message": "팝업 열기" + }, + "open_separate_window": { + "message": "독립 창으로 열기" + }, + "toggle_tranbox": { + "message": "번역 상자 전환" + } +} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/_locales/zh_CN/messages.json b/android/app/src/main/assets/extensions/kiss_translator/_locales/zh_CN/messages.json new file mode 100644 index 00000000..577ec846 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/_locales/zh_CN/messages.json @@ -0,0 +1,32 @@ +{ + "app_name": { + "message": "简约翻译" + }, + "app_description": { + "message": "一个简约的双语对照翻译扩展,支持网页、划词、视频字幕翻译等功能,支持多种翻译服务及AI翻译接口,拥有丰富灵活的自定义选项。" + }, + "translate_selection": { + "message": "翻译 \"%s\"" + }, + "toggle_translate": { + "message": "开启翻译" + }, + "toggle_translate_only": { + "message": "仅看译文" + }, + "toggle_style": { + "message": "切换样式" + }, + "open_options": { + "message": "打开设置" + }, + "open_tranbox": { + "message": "打开弹窗" + }, + "open_separate_window": { + "message": "打开独立窗口" + }, + "toggle_tranbox": { + "message": "切换划词翻译" + } +} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/_locales/zh_TW/messages.json b/android/app/src/main/assets/extensions/kiss_translator/_locales/zh_TW/messages.json new file mode 100644 index 00000000..8185a350 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/_locales/zh_TW/messages.json @@ -0,0 +1,32 @@ +{ + "app_name": { + "message": "簡約翻譯" + }, + "app_description": { + "message": "一個簡約的雙語對照翻譯擴充功能,支持網頁、劃詞、影片字幕翻譯等功能,支持多種翻譯服務及 AI 翻譯接口,擁有豐富靈活的自定義選項。" + }, + "translate_selection": { + "message": "翻譯 \"%s\"" + }, + "toggle_translate": { + "message": "開啟翻譯" + }, + "toggle_translate_only": { + "message": "僅看譯文" + }, + "toggle_style": { + "message": "切換樣式" + }, + "open_options": { + "message": "開啟設定" + }, + "open_tranbox": { + "message": "開啟彈出視窗" + }, + "open_separate_window": { + "message": "打開獨立視窗" + }, + "toggle_tranbox": { + "message": "切換劃詞翻譯" + } +} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/AliyunBailian.svg b/android/app/src/main/assets/extensions/kiss_translator/api/AliyunBailian.svg new file mode 100644 index 00000000..9acccd08 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/AliyunBailian.svg @@ -0,0 +1 @@ +BaiLian \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/AzureAI.svg b/android/app/src/main/assets/extensions/kiss_translator/api/AzureAI.svg new file mode 100644 index 00000000..c38b1595 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/AzureAI.svg @@ -0,0 +1 @@ +AzureAI \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/Baidu.svg b/android/app/src/main/assets/extensions/kiss_translator/api/Baidu.svg new file mode 100644 index 00000000..ead7f898 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/Baidu.svg @@ -0,0 +1 @@ +Baidu \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/BuiltinAI.svg b/android/app/src/main/assets/extensions/kiss_translator/api/BuiltinAI.svg new file mode 100644 index 00000000..6d67b9ff --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/BuiltinAI.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/Cerebras.svg b/android/app/src/main/assets/extensions/kiss_translator/api/Cerebras.svg new file mode 100644 index 00000000..c8bab7b7 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/Cerebras.svg @@ -0,0 +1 @@ +Cerebras \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/Claude.svg b/android/app/src/main/assets/extensions/kiss_translator/api/Claude.svg new file mode 100644 index 00000000..62dc0db1 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/Claude.svg @@ -0,0 +1 @@ +Claude \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/CloudflareAI.svg b/android/app/src/main/assets/extensions/kiss_translator/api/CloudflareAI.svg new file mode 100644 index 00000000..d555b6f2 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/CloudflareAI.svg @@ -0,0 +1 @@ +Cloudflare \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/DeepL.svg b/android/app/src/main/assets/extensions/kiss_translator/api/DeepL.svg new file mode 100644 index 00000000..91fb560f --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/DeepL.svg @@ -0,0 +1 @@ +DeepL \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/DeepSeek.svg b/android/app/src/main/assets/extensions/kiss_translator/api/DeepSeek.svg new file mode 100644 index 00000000..3fc23024 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/DeepSeek.svg @@ -0,0 +1 @@ +DeepSeek \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/Gemini.svg b/android/app/src/main/assets/extensions/kiss_translator/api/Gemini.svg new file mode 100644 index 00000000..62681dfa --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/Gemini.svg @@ -0,0 +1 @@ +Gemini \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/Google.svg b/android/app/src/main/assets/extensions/kiss_translator/api/Google.svg new file mode 100644 index 00000000..e8e0f867 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/Google.svg @@ -0,0 +1 @@ +Google \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/Microsoft.svg b/android/app/src/main/assets/extensions/kiss_translator/api/Microsoft.svg new file mode 100644 index 00000000..4d95a08e --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/Microsoft.svg @@ -0,0 +1 @@ +Azure \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/Ollama.svg b/android/app/src/main/assets/extensions/kiss_translator/api/Ollama.svg new file mode 100644 index 00000000..bc368e99 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/Ollama.svg @@ -0,0 +1 @@ +Ollama \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/OpenAI.svg b/android/app/src/main/assets/extensions/kiss_translator/api/OpenAI.svg new file mode 100644 index 00000000..b31e3989 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/OpenAI.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/OpenCodeGo.svg b/android/app/src/main/assets/extensions/kiss_translator/api/OpenCodeGo.svg new file mode 100644 index 00000000..0946d393 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/OpenCodeGo.svg @@ -0,0 +1,7 @@ + + OpenCode Go + + + + diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/OpenRouter.svg b/android/app/src/main/assets/extensions/kiss_translator/api/OpenRouter.svg new file mode 100644 index 00000000..83ec807b --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/OpenRouter.svg @@ -0,0 +1 @@ +OpenRouter \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/OrcaRouter.svg b/android/app/src/main/assets/extensions/kiss_translator/api/OrcaRouter.svg new file mode 100644 index 00000000..96811afe --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/OrcaRouter.svg @@ -0,0 +1 @@ +OrcaRouter \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/SiliconFlow.svg b/android/app/src/main/assets/extensions/kiss_translator/api/SiliconFlow.svg new file mode 100644 index 00000000..298d8a85 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/SiliconFlow.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/Tencent.svg b/android/app/src/main/assets/extensions/kiss_translator/api/Tencent.svg new file mode 100644 index 00000000..98da272a --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/Tencent.svg @@ -0,0 +1 @@ +Tencent \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/Volcengine.svg b/android/app/src/main/assets/extensions/kiss_translator/api/Volcengine.svg new file mode 100644 index 00000000..ecf6d75e --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/Volcengine.svg @@ -0,0 +1 @@ +Volcengine \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/XiaomiMimo.svg b/android/app/src/main/assets/extensions/kiss_translator/api/XiaomiMimo.svg new file mode 100644 index 00000000..86d536a3 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/XiaomiMimo.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/Zai.svg b/android/app/src/main/assets/extensions/kiss_translator/api/Zai.svg new file mode 100644 index 00000000..04ba2d98 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/api/Zai.svg @@ -0,0 +1 @@ +Z.ai \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/api/ePhoneAI.png b/android/app/src/main/assets/extensions/kiss_translator/api/ePhoneAI.png new file mode 100644 index 00000000..63d48024 Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/api/ePhoneAI.png differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/asset-manifest.json b/android/app/src/main/assets/extensions/kiss_translator/asset-manifest.json new file mode 100644 index 00000000..d4c9efd5 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/asset-manifest.json @@ -0,0 +1,10 @@ +{ + "popup.js": "/popup.js", + "options.js": "/options.js", + "background.js": "/background.js", + "content.js": "/content.js", + "injector-subtitle.js": "/injector-subtitle.js", + "injector-shadowroot.js": "/injector-shadowroot.js", + "options.html": "/options.html", + "popup.html": "/popup.html" +} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/background.js b/android/app/src/main/assets/extensions/kiss_translator/background.js new file mode 100644 index 00000000..aa3070f0 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/background.js @@ -0,0 +1,2 @@ +/*! For license information please see background.js.LICENSE.txt */ +(()=>{var e={7029(e,t,n){e.exports=function(e){"use strict";var t=Object.freeze({__proto__:null,get ExpressionStatement(){return Ue},get BlockStatement(){return Ve},get EmptyStatement(){return Ge},get DebuggerStatement(){return He},get ReturnStatement(){return Ke},get BreakStatement(){return qe},get ContinueStatement(){return Ye},get LabeledStatement(){return Je},get WithStatement(){return Xe},get IfStatement(){return $e},get SwitchStatement(){return Ze},get SwitchCase(){return Qe},get ThrowStatement(){return et},get TryStatement(){return tt},get CatchClause(){return nt},get WhileStatement(){return rt},get DoWhileStatement(){return it},get ForStatement(){return at},get ForInStatement(){return st},get ForOfStatement(){return ot}}),r=Object.freeze({__proto__:null,get FunctionDeclaration(){return lt},get VariableDeclaration(){return ct},get VariableDeclarator(){return ut},get ClassDeclaration(){return ht},get ClassBody(){return pt},get MethodDefinition(){return dt},get PropertyDefinition(){return ft},get StaticBlock(){return mt},get ImportDeclaration(){return gt},get ExportDefaultDeclaration(){return yt},get ExportNamedDeclaration(){return _t},get ExportAllDeclaration(){return vt}}),i=Object.freeze({__proto__:null,get ExpressionStatement(){return an},get BlockStatement(){return sn},get EmptyStatement(){return on},get DebuggerStatement(){return ln},get ReturnStatement(){return cn},get BreakStatement(){return un},get ContinueStatement(){return hn},get LabeledStatement(){return pn},get WithStatement(){return dn},get IfStatement(){return fn},get SwitchStatement(){return mn},get SwitchCase(){return gn},get ThrowStatement(){return yn},get TryStatement(){return _n},get CatchClause(){return vn},get WhileStatement(){return bn},get DoWhileStatement(){return kn},get ForStatement(){return Tn},get ForInStatement(){return An},get ForOfStatement(){return xn}}),a=Object.freeze({__proto__:null,get FunctionDeclaration(){return Sn},get VariableDeclaration(){return wn},get VariableDeclarator(){return En},get ClassDeclaration(){return zn},get ClassBody(){return In},get MethodDefinition(){return Ln},get PropertyDefinition(){return Cn},get StaticBlock(){return Pn},get ImportDeclaration(){return Nn},get ExportDefaultDeclaration(){return jn},get ExportNamedDeclaration(){return On},get ExportAllDeclaration(){return Rn}});function s(e,t){var n,r,i,a,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return a={next:o(0),throw:o(1),return:o(2)},"function"===typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function o(e){return function(t){return l([e,t])}}function l(a){if(n)throw new TypeError("Generator is already executing.");for(;s;)try{if(n=1,r&&(i=2&a[0]?r.return:a[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,a[1])).done)return i;switch(r=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,r=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(i=(i=s.trys).length>0&&i[i.length-1])&&(6===a[0]||2===a[0])){s=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}function l(e,t){var n="function"===typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,a=n.call(e),s=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)s.push(r.value)}catch(o){i={error:o}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(i)throw i.error}}return s}function c(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}var D={RES:void 0},M={RES:void 0},W={LABEL:void 0},B={LABEL:void 0},F=O("super"),U=O("supercall"),V=O("noctor"),G=O("clsctor"),H=O("newtarget"),K=O("private"),q=O("noinit"),Y=O("deadzone"),J=O("import"),X=O("exports"),$="0.5.9",Z=function(){function e(e,t){this.kind=e,this.value=t}return e.prototype.get=function(){return this.value},e.prototype.set=function(e){if("const"===this.kind)throw new TypeError("Assignment to constant variable");return this.value=e},e}(),Q=function(){function e(e,t){this.object=e,this.property=t}return e.prototype.get=function(){return this.object[this.property]},e.prototype.set=function(e){return this.object[this.property]=e,!0},e.prototype.del=function(){return delete this.object[this.property]},e}(),ee=function(){function e(e,t){void 0===e&&(e=null),void 0===t&&(t=!1),this.context=x(null),this.withContext=x(null),this.parent=e,this.isolated=t}return e.prototype.global=function(){for(var e=this;e.parent;)e=e.parent;return e},e.prototype.find=function(e){if(this.context[e])return this.context[e];if(e in this.withContext)return new Q(this.withContext,e);if(this.parent)return this.parent.find(e);var t=this.global().find("window").get();return e in t?new Q(t,e):null},e.prototype.var=function(e,t){for(var n=this;n.parent&&!n.isolated;)n=n.parent;var r=n.context[e];if(r){if("var"!==r.kind)throw new SyntaxError("Identifier '"+e+"' has already been declared");t!==q&&r.set(t)}else n.context[e]=new Z("var",t===q?void 0:t);if(!n.parent){var i=n.find("window").get();t!==q&&h(i,e,{value:t,writable:!0,enumerable:!0})}},e.prototype.let=function(e,t){var n=this.context[e];if(n&&n.get()!==Y)throw new SyntaxError("Identifier '"+e+"' has already been declared");this.context[e]=new Z("let",t)},e.prototype.const=function(e,t){var n=this.context[e];if(n&&n.get()!==Y)throw new SyntaxError("Identifier '"+e+"' has already been declared");this.context[e]=new Z("const",t)},e.prototype.func=function(e,t){var n=this.context[e];if(n&&"var"!==n.kind)throw new SyntaxError("Identifier '"+e+"' has already been declared");this.context[e]=new Z("var",t)},e.prototype.with=function(e){Object.keys(e)&&(this.withContext=e)},e}();function te(e,t){void 0===t&&(t={});var n=t.res,r=t.err,i=t.ret,a=t.fullRet;return new Promise(function(s,o){if("ret"in t)return s(e.return(i));function l(t){var n;try{n=e.next(t)}catch(r){return o(r)}return u(n),null}function c(t){var n;try{n=e.throw(t)}catch(r){return o(r)}u(n)}function u(e){if(e.done)return s(a?e:e.value);if(e.value!==D)return s(e);var t=e.value.RES;return(t&&"function"===t.then?t:Promise.resolve(t)).then(l,c)}"err"in t?c(r):l(n)})}function ne(e,t,n){var r,i,a,o,l,c;return void 0===n&&(n={}),s(this,function(s){if(r=n.getVar,i=void 0!==r&&r,a=n.throwErr,o=void 0===a||a,"undefined"===e.name)return[2,void 0];if(l=t.find(e.name)){if(i)return[2,l];if((c=l.get())===Y)throw new ReferenceError(e.name+" is not defined");return[2,c]}if(o)throw new ReferenceError(e.name+" is not defined");return[2,void 0]})}var re=Object.freeze({__proto__:null,Identifier:ne});function ie(e,t){return s(this,function(t){return[2,e.value]})}var ae=Object.freeze({__proto__:null,Literal:ie});function se(e,t){var n;return s(this,function(e){if((n=t.find(U))&&!n.get())throw new ReferenceError("Must call super constructor in derived class before accessing 'this' or returning from derived constructor");return[2,t.find("this").get()]})}function oe(e,t){var n,r,i,a,l,c,u;return s(this,function(s){switch(s.label){case 0:n=[],r=0,s.label=1;case 1:return r":return[2,n>r];case">=":return[2,n>=r];case"<<":return[2,n<>":return[2,n>>r];case">>>":return[2,n>>>r];case"+":return[2,n+r];case"-":return[2,n-r];case"*":return[2,n*r];case"**":return[2,Math.pow(n,r)];case"/":return[2,n/r];case"%":return[2,n%r];case"|":return[2,n|r];case"^":return[2,n^r];case"&":return[2,n&r];case"in":return[2,n in r];case"instanceof":return[2,n instanceof r];default:throw new SyntaxError("Unexpected token "+e.operator)}}})}function de(e,t){var n,r,i,a,l,c;return s(this,function(s){switch(s.label){case 0:return"Identifier"!==(n=e.left).type?[3,2]:[5,o(ne(n,t,{getVar:!0,throwErr:!1}))];case 1:return(r=s.sent())||(i=t.global().find("window").get(),r=new Q(i,n.name)),[3,7];case 2:return"MemberExpression"!==n.type?[3,4]:[5,o(me(n,t,{getVar:!0}))];case 3:return r=s.sent(),[3,7];case 4:case 7:return[5,o(Fe(e.right,t))];case 5:return a=s.sent(),[5,o(Hn(n,t,{feed:a}))];case 6:return[2,s.sent()];case 8:switch(l=s.sent(),e.operator){case"=":return r.set(l),[2,r.get()];case"+=":return r.set(r.get()+l),[2,r.get()];case"-=":return r.set(r.get()-l),[2,r.get()];case"*=":return r.set(r.get()*l),[2,r.get()];case"/=":return r.set(r.get()/l),[2,r.get()];case"%=":return r.set(r.get()%l),[2,r.get()];case"**=":return r.set(Math.pow(r.get(),l)),[2,r.get()];case"<<=":return r.set(r.get()<>=":return r.set(r.get()>>l),[2,r.get()];case">>>=":return r.set(r.get()>>>l),[2,r.get()];case"|=":return r.set(r.get()|l),[2,r.get()];case"^=":return r.set(r.get()^l),[2,r.get()];case"&=":return r.set(r.get()&l),[2,r.get()];case"??=":return r.set(null!==(c=r.get())&&void 0!==c?c:l),[2,r.get()];case"&&=":return r.set(r.get()&&l),[2,r.get()];case"||=":return r.set(r.get()||l),[2,r.get()];default:throw new SyntaxError("Unexpected token "+e.operator)}}})}function fe(e,t){var n,r,i,a;return s(this,function(s){switch(s.label){case 0:switch(e.operator){case"||":return[3,1];case"&&":return[3,5];case"??":return[3,9]}return[3,14];case 1:return[5,o(Fe(e.left,t))];case 2:return(n=s.sent())?[3,4]:[5,o(Fe(e.right,t))];case 3:n=s.sent(),s.label=4;case 4:return[2,n];case 5:return[5,o(Fe(e.left,t))];case 6:return(r=s.sent())?[5,o(Fe(e.right,t))]:[3,8];case 7:r=s.sent(),s.label=8;case 8:return[2,r];case 9:return[5,o(Fe(e.left,t))];case 10:return null===(a=s.sent())||void 0===a?[3,11]:(i=a,[3,13]);case 11:return[5,o(Fe(e.right,t))];case 12:i=s.sent(),s.label=13;case 13:return[2,i];case 14:throw new SyntaxError("Unexpected token "+e.operator)}})}function me(e,t,n){var r,i,a,l,c,u,p,d,f,m,g;return void 0===n&&(n={}),s(this,function(s){switch(s.label){case 0:return r=n.getObj,i=void 0!==r&&r,a=n.getVar,l=void 0!==a&&a,"Super"!==e.object.type?[3,2]:[5,o(we(e.object,t,{getProto:!0}))];case 1:return c=s.sent(),[3,4];case 2:return[5,o(Fe(e.object,t))];case 3:c=s.sent(),s.label=4;case 4:return i?[2,c]:(p=!1,e.computed?[5,o(Fe(e.property,t))]:[3,6]);case 5:return u=s.sent(),[3,7];case 6:"PrivateIdentifier"===e.property.type?(u=e.property.name,p=!0):u=e.property.name,s.label=7;case 7:return p&&(c=c[K]),l?(d=A(c,u),"Super"===e.object.type&&d?(g=t.find("this").get(),f=O(u),h(g,f,{set:d}),[2,new Q(g,f)]):[2,new Q(c,u)]):(m=T(c,u),"Super"===e.object.type&&m?(g=t.find("this").get(),e.optional&&null==g?[2,void 0]:[2,m.call(g)]):e.optional&&null==c?[2,void 0]:[2,c[u]])}})}function ge(e,t){var n;return s(this,function(r){switch(r.label){case 0:return[5,o(Fe(e.test,t))];case 1:return r.sent()?[5,o(Fe(e.consequent,t))]:[3,3];case 2:return n=r.sent(),[3,5];case 3:return[5,o(Fe(e.alternate,t))];case 4:n=r.sent(),r.label=5;case 5:return[2,n]}})}function ye(e,t){var n,r,i,a,l,c,u,h,p,d,f,m,g,y,_;return s(this,function(s){switch(s.label){case 0:return"MemberExpression"!==e.callee.type?[3,5]:[5,o(me(e.callee,t,{getObj:!0}))];case 1:return r=s.sent(),e.callee.optional&&null==r?[2,void 0]:(i=void 0,a=!1,e.callee.computed?[5,o(Fe(e.callee.property,t))]:[3,3]);case 2:return i=s.sent(),[3,4];case 3:"PrivateIdentifier"===e.callee.property.type?(i=e.callee.property.name,a=!0):i=e.callee.property.name,s.label=4;case 4:if(l=r,a&&(l=l[K]),"Super"===e.callee.object.type?(c=t.find("this").get(),n=l[i].bind(c)):n=l[i],e.optional&&null==n)return[2,void 0];if("function"!==typeof n)throw new TypeError(i+" is not a function");if(n[G])throw new TypeError("Class constructor "+i+" cannot be invoked without 'new'");return[3,7];case 5:return r=t.find("this").get(),[5,o(Fe(e.callee,t))];case 6:if(n=s.sent(),e.optional&&null==n)return[2,void 0];if("function"!==typeof n||"Super"!==e.callee.type&&n[G]){if("Identifier"===e.callee.type)u=e.callee.name;else try{u=JSON.stringify(n)}catch(Xn){u=""+n}throw"function"!==typeof n?new TypeError(u+" is not a function"):new TypeError("Class constructor "+u+" cannot be invoked without 'new'")}s.label=7;case 7:h=[],p=0,s.label=8;case 8:return p":return n>r;case">=":return n>=r;case"<<":return n<>":return n>>r;case">>>":return n>>>r;case"+":return n+r;case"-":return n-r;case"*":return n*r;case"**":return Math.pow(n,r);case"/":return n/r;case"%":return n%r;case"|":return n|r;case"^":return n^r;case"&":return n&r;case"in":return n in r;case"instanceof":return n instanceof r;default:throw new SyntaxError("Unexpected token "+e.operator)}}function Ct(e,t){var n,r,i=e.left;if("Identifier"===i.type){if(!(r=bt(i,t,{getVar:!0,throwErr:!1}))){var a=t.global().find("window").get();r=new Q(a,i.name)}}else{if("MemberExpression"!==i.type)return Wn(i,t,{feed:rn(e.right,t)});r=Nt(i,t,{getVar:!0})}var s=rn(e.right,t);switch(e.operator){case"=":return r.set(s),r.get();case"+=":return r.set(r.get()+s),r.get();case"-=":return r.set(r.get()-s),r.get();case"*=":return r.set(r.get()*s),r.get();case"/=":return r.set(r.get()/s),r.get();case"%=":return r.set(r.get()%s),r.get();case"**=":return r.set(Math.pow(r.get(),s)),r.get();case"<<=":return r.set(r.get()<>=":return r.set(r.get()>>s),r.get();case">>>=":return r.set(r.get()>>>s),r.get();case"|=":return r.set(r.get()|s),r.get();case"^=":return r.set(r.get()^s),r.get();case"&=":return r.set(r.get()&s),r.get();case"??=":return r.set(null!==(n=r.get())&&void 0!==n?n:s),r.get();case"&&=":return r.set(r.get()&&s),r.get();case"||=":return r.set(r.get()||s),r.get();default:throw new SyntaxError("Unexpected token "+e.operator)}}function Pt(e,t){var n;switch(e.operator){case"||":return rn(e.left,t)||rn(e.right,t);case"&&":return rn(e.left,t)&&rn(e.right,t);case"??":return null!==(n=rn(e.left,t))&&void 0!==n?n:rn(e.right,t);default:throw new SyntaxError("Unexpected token "+e.operator)}}function Nt(e,t,n){void 0===n&&(n={});var r,i,a=n.getObj,s=void 0!==a&&a,o=n.getVar,l=void 0!==o&&o;if(r="Super"===e.object.type?Gt(e.object,t,{getProto:!0}):rn(e.object,t),s)return r;var c=!1;if(e.computed?i=rn(e.property,t):"PrivateIdentifier"===e.property.type?(i=e.property.name,c=!0):i=e.property.name,c&&(r=r[K]),l){var u=A(r,i);if("Super"===e.object.type&&u){var p=t.find("this").get(),d=O(i);return h(p,d,{set:u}),new Q(p,d)}return new Q(r,i)}var f=T(r,i);if("Super"===e.object.type&&f){if(p=t.find("this").get(),e.optional&&null==p)return;return f.call(p)}return e.optional&&null==r?void 0:r[i]}function jt(e,t){return rn(e.test,t)?rn(e.consequent,t):rn(e.alternate,t)}function Ot(e,t){var n,r;if("MemberExpression"===e.callee.type){if(r=Nt(e.callee,t,{getObj:!0}),e.callee.optional&&null==r)return;var i=void 0,a=!1;e.callee.computed?i=rn(e.callee.property,t):"PrivateIdentifier"===e.callee.property.type?(i=e.callee.property.name,a=!0):i=e.callee.property.name;var s=r;if(a&&(s=s[K]),"Super"===e.callee.object.type){var o=t.find("this").get();n=s[i].bind(o)}else n=s[i];if(e.optional&&null==n)return;if("function"!==typeof n)throw new TypeError(i+" is not a function");if(n[G])throw new TypeError("Class constructor "+i+" cannot be invoked without 'new'")}else{if(r=t.find("this").get(),n=rn(e.callee,t),e.optional&&null==n)return;if("function"!==typeof n||"Super"!==e.callee.type&&n[G]){var l;if("Identifier"===e.callee.type)l=e.callee.name;else try{l=JSON.stringify(n)}catch(Xn){l=""+n}throw"function"!==typeof n?new TypeError(l+" is not a function"):new TypeError("Class constructor "+l+" cannot be invoked without 'new'")}}for(var c=[],u=0;u-1;o--)e.body.splice(s[o],1);e.body=a.concat(e.body)}}function Mn(e,t){switch(e.type){case"VariableDeclaration":wn(e,t,{hoist:!0});break;case"ForInStatement":case"ForOfStatement":"VariableDeclaration"===e.left.type&&wn(e.left,t,{hoist:!0});case"ForStatement":"ForStatement"===e.type&&"VariableDeclaration"===e.init.type&&wn(e.init,t,{hoist:!0});case"WhileStatement":case"DoWhileStatement":Mn(e.body,t);break;case"IfStatement":Mn(e.consequent,t),e.alternate&&Mn(e.alternate,t);break;case"BlockStatement":for(var n=0;n-1;u--)e.body.splice(l[u],1);e.body=a.concat(e.body)}return[2]}})}function Gn(e,t){var n,r,i,a,l;return s(this,function(s){switch(s.label){case 0:switch(e.type){case"VariableDeclaration":return[3,1];case"ForInStatement":case"ForOfStatement":return[3,3];case"ForStatement":return[3,5];case"WhileStatement":case"DoWhileStatement":return[3,7];case"IfStatement":return[3,9];case"BlockStatement":return[3,13];case"SwitchStatement":return[3,18];case"TryStatement":return[3,25]}return[3,38];case 1:return[5,o(ct(e,t,{hoist:!0}))];case 2:return s.sent(),[3,38];case 3:return"VariableDeclaration"!==e.left.type?[3,5]:[5,o(ct(e.left,t,{hoist:!0}))];case 4:s.sent(),s.label=5;case 5:return"ForStatement"!==e.type||"VariableDeclaration"!==e.init.type?[3,7]:[5,o(ct(e.init,t,{hoist:!0}))];case 6:s.sent(),s.label=7;case 7:return[5,o(Gn(e.body,t))];case 8:return s.sent(),[3,38];case 9:return[5,o(Gn(e.consequent,t))];case 10:return s.sent(),e.alternate?[5,o(Gn(e.alternate,t))]:[3,12];case 11:s.sent(),s.label=12;case 12:return[3,38];case 13:l=0,s.label=14;case 14:return lJn))throw new Error("unsupported ecmaVer");if(this.options.ecmaVersion=n,this.options.sourceType=s,i){var o=j();this.scope.let("globalThis",o),this.scope.let("window",o),this.scope.let("this",o)}else this.scope.let("globalThis",I),this.scope.let("window",I),this.scope.let("this",I);this.scope.const("module"===s?X:"exports",this.exports={})}return t.prototype.import=function(e,t){var n;if("string"===typeof e&&((n={})[e]=t,e=n),"object"===typeof e)for(var r=m(e),i=0;i=13)?te(function(){return s(this,function(e){switch(e.label){case 0:return[5,o(Vn(t,n))];case 1:return e.sent(),[5,o(Fe(t,n))];case 2:return e.sent(),[2]}})}()):(Dn(t,n),rn(t,n))},t.version=$,t}()}(n(8202))},8202(e,t){!function(e){"use strict";var t=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,80,3,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,343,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,726,6,110,6,6,9,4759,9,787719,239],n=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,2,60,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,496,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191],r="\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65",i="\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc",a={3:"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",5:"class enum extends super const export import",6:"enum",strict:"implements interface let package private protected public static yield",strictBind:"eval arguments"},s="break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this",o={5:s,"5module":s+" export import",6:s+" const class extends export import super"},l=/^in(stanceof)?$/,c=new RegExp("["+i+"]"),u=new RegExp("["+i+r+"]");function h(e,t){for(var n=65536,r=0;re)return!1;if((n+=t[r+1])>=e)return!0}return!1}function p(e,t){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&c.test(String.fromCharCode(e)):!1!==t&&h(e,n)))}function d(e,r){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&u.test(String.fromCharCode(e)):!1!==r&&(h(e,n)||h(e,t)))))}var f=function(e,t){void 0===t&&(t={}),this.label=e,this.keyword=t.keyword,this.beforeExpr=!!t.beforeExpr,this.startsExpr=!!t.startsExpr,this.isLoop=!!t.isLoop,this.isAssign=!!t.isAssign,this.prefix=!!t.prefix,this.postfix=!!t.postfix,this.binop=t.binop||null,this.updateContext=null};function m(e,t){return new f(e,{beforeExpr:!0,binop:t})}var g={beforeExpr:!0},y={startsExpr:!0},_={};function v(e,t){return void 0===t&&(t={}),t.keyword=e,_[e]=new f(e,t)}var b={num:new f("num",y),regexp:new f("regexp",y),string:new f("string",y),name:new f("name",y),privateId:new f("privateId",y),eof:new f("eof"),bracketL:new f("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new f("]"),braceL:new f("{",{beforeExpr:!0,startsExpr:!0}),braceR:new f("}"),parenL:new f("(",{beforeExpr:!0,startsExpr:!0}),parenR:new f(")"),comma:new f(",",g),semi:new f(";",g),colon:new f(":",g),dot:new f("."),question:new f("?",g),questionDot:new f("?."),arrow:new f("=>",g),template:new f("template"),invalidTemplate:new f("invalidTemplate"),ellipsis:new f("...",g),backQuote:new f("`",y),dollarBraceL:new f("${",{beforeExpr:!0,startsExpr:!0}),eq:new f("=",{beforeExpr:!0,isAssign:!0}),assign:new f("_=",{beforeExpr:!0,isAssign:!0}),incDec:new f("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new f("!/~",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:m("||",1),logicalAND:m("&&",2),bitwiseOR:m("|",3),bitwiseXOR:m("^",4),bitwiseAND:m("&",5),equality:m("==/!=/===/!==",6),relational:m("/<=/>=",7),bitShift:m("<>/>>>",8),plusMin:new f("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:m("%",10),star:m("*",10),slash:m("/",10),starstar:new f("**",{beforeExpr:!0}),coalesce:m("??",1),_break:v("break"),_case:v("case",g),_catch:v("catch"),_continue:v("continue"),_debugger:v("debugger"),_default:v("default",g),_do:v("do",{isLoop:!0,beforeExpr:!0}),_else:v("else",g),_finally:v("finally"),_for:v("for",{isLoop:!0}),_function:v("function",y),_if:v("if"),_return:v("return",g),_switch:v("switch"),_throw:v("throw",g),_try:v("try"),_var:v("var"),_const:v("const"),_while:v("while",{isLoop:!0}),_with:v("with"),_new:v("new",{beforeExpr:!0,startsExpr:!0}),_this:v("this",y),_super:v("super",y),_class:v("class",y),_extends:v("extends",g),_export:v("export"),_import:v("import",y),_null:v("null",y),_true:v("true",y),_false:v("false",y),_in:v("in",{beforeExpr:!0,binop:7}),_instanceof:v("instanceof",{beforeExpr:!0,binop:7}),_typeof:v("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:v("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:v("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},k=/\r\n?|\n|\u2028|\u2029/,T=new RegExp(k.source,"g");function A(e){return 10===e||13===e||8232===e||8233===e}function x(e,t,n){void 0===n&&(n=e.length);for(var r=t;r>10),56320+(1023&e)))}var O=/(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/,R=function(e,t){this.line=e,this.column=t};R.prototype.offset=function(e){return new R(this.line,this.column+e)};var D=function(e,t,n){this.start=t,this.end=n,null!==e.sourceFile&&(this.source=e.sourceFile)};function M(e,t){for(var n=1,r=0;;){var i=x(e,r,t);if(i<0)return new R(n,t-r);++n,r=i}}var W={ecmaVersion:null,sourceType:"script",onInsertedSemicolon:null,onTrailingComma:null,allowReserved:null,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowAwaitOutsideFunction:null,allowSuperOutsideMethod:null,allowHashBang:!1,checkPrivateFields:!0,locations:!1,onToken:null,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null,preserveParens:!1},B=!1;function F(e){var t={};for(var n in W)t[n]=e&&L(e,n)?e[n]:W[n];if("latest"===t.ecmaVersion?t.ecmaVersion=1e8:null==t.ecmaVersion?(!B&&"object"===typeof console&&console.warn&&(B=!0,console.warn("Since Acorn 8.0.0, options.ecmaVersion is required.\nDefaulting to 2020, but this will stop working in the future.")),t.ecmaVersion=11):t.ecmaVersion>=2015&&(t.ecmaVersion-=2009),null==t.allowReserved&&(t.allowReserved=t.ecmaVersion<5),e&&null!=e.allowHashBang||(t.allowHashBang=t.ecmaVersion>=14),C(t.onToken)){var r=t.onToken;t.onToken=function(e){return r.push(e)}}return C(t.onComment)&&(t.onComment=U(t,t.onComment)),t}function U(e,t){return function(n,r,i,a,s,o){var l={type:n?"Block":"Line",value:r,start:i,end:a};e.locations&&(l.loc=new D(this,s,o)),e.ranges&&(l.range=[i,a]),t.push(l)}}var V=1,G=2,H=4,K=8,q=16,Y=32,J=64,X=128,$=256,Z=512,Q=V|G|$;function ee(e,t){return G|(e?H:0)|(t?K:0)}var te=0,ne=1,re=2,ie=3,ae=4,se=5,oe=function(e,t,n){this.options=e=F(e),this.sourceFile=e.sourceFile,this.keywords=N(o[e.ecmaVersion>=6?6:"module"===e.sourceType?"5module":5]);var r="";!0!==e.allowReserved&&(r=a[e.ecmaVersion>=6?6:5===e.ecmaVersion?5:3],"module"===e.sourceType&&(r+=" await")),this.reservedWords=N(r);var i=(r?r+" ":"")+a.strict;this.reservedWordsStrict=N(i),this.reservedWordsStrictBind=N(i+" "+a.strictBind),this.input=String(t),this.containsEsc=!1,n?(this.pos=n,this.lineStart=this.input.lastIndexOf("\n",n-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(k).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=b.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.inModule="module"===e.sourceType,this.strict=this.inModule||this.strictDirective(this.pos),this.potentialArrowAt=-1,this.potentialArrowInForAwait=!1,this.yieldPos=this.awaitPos=this.awaitIdentPos=0,this.labels=[],this.undefinedExports=Object.create(null),0===this.pos&&e.allowHashBang&&"#!"===this.input.slice(0,2)&&this.skipLineComment(2),this.scopeStack=[],this.enterScope(V),this.regexpState=null,this.privateNameStack=[]},le={inFunction:{configurable:!0},inGenerator:{configurable:!0},inAsync:{configurable:!0},canAwait:{configurable:!0},allowSuper:{configurable:!0},allowDirectSuper:{configurable:!0},treatFunctionsAsVar:{configurable:!0},allowNewDotTarget:{configurable:!0},inClassStaticBlock:{configurable:!0}};oe.prototype.parse=function(){var e=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(e)},le.inFunction.get=function(){return(this.currentVarScope().flags&G)>0},le.inGenerator.get=function(){return(this.currentVarScope().flags&K)>0},le.inAsync.get=function(){return(this.currentVarScope().flags&H)>0},le.canAwait.get=function(){for(var e=this.scopeStack.length-1;e>=0;e--){var t=this.scopeStack[e].flags;if(t&($|Z))return!1;if(t&G)return(t&H)>0}return this.inModule&&this.options.ecmaVersion>=13||this.options.allowAwaitOutsideFunction},le.allowSuper.get=function(){return(this.currentThisScope().flags&J)>0||this.options.allowSuperOutsideMethod},le.allowDirectSuper.get=function(){return(this.currentThisScope().flags&X)>0},le.treatFunctionsAsVar.get=function(){return this.treatFunctionsAsVarInScope(this.currentScope())},le.allowNewDotTarget.get=function(){for(var e=this.scopeStack.length-1;e>=0;e--){var t=this.scopeStack[e].flags;if(t&($|Z)||t&G&&!(t&q))return!0}return!1},le.inClassStaticBlock.get=function(){return(this.currentVarScope().flags&$)>0},oe.extend=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var n=this,r=0;r=,?^&]/.test(i)||"!"===i&&"="===this.input.charAt(r+1))}e+=t[0].length,w.lastIndex=e,e+=w.exec(this.input)[0].length,";"===this.input[e]&&e++}},ce.eat=function(e){return this.type===e&&(this.next(),!0)},ce.isContextual=function(e){return this.type===b.name&&this.value===e&&!this.containsEsc},ce.eatContextual=function(e){return!!this.isContextual(e)&&(this.next(),!0)},ce.expectContextual=function(e){this.eatContextual(e)||this.unexpected()},ce.canInsertSemicolon=function(){return this.type===b.eof||this.type===b.braceR||k.test(this.input.slice(this.lastTokEnd,this.start))},ce.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&&this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0},ce.semicolon=function(){this.eat(b.semi)||this.insertSemicolon()||this.unexpected()},ce.afterTrailingComma=function(e,t){if(this.type===e)return this.options.onTrailingComma&&this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),t||this.next(),!0},ce.expect=function(e){this.eat(e)||this.unexpected()},ce.unexpected=function(e){this.raise(null!=e?e:this.start,"Unexpected token")};var he=function(){this.shorthandAssign=this.trailingComma=this.parenthesizedAssign=this.parenthesizedBind=this.doubleProto=-1};ce.checkPatternErrors=function(e,t){if(e){e.trailingComma>-1&&this.raiseRecoverable(e.trailingComma,"Comma is not permitted after the rest element");var n=t?e.parenthesizedAssign:e.parenthesizedBind;n>-1&&this.raiseRecoverable(n,t?"Assigning to rvalue":"Parenthesized pattern")}},ce.checkExpressionErrors=function(e,t){if(!e)return!1;var n=e.shorthandAssign,r=e.doubleProto;if(!t)return n>=0||r>=0;n>=0&&this.raise(n,"Shorthand property assignments are valid only in destructuring patterns"),r>=0&&this.raiseRecoverable(r,"Redefinition of __proto__ property")},ce.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos55295&&r<56320)return!0;if(p(r,!0)){for(var i=n+1;d(r=this.input.charCodeAt(i),!0);)++i;if(92===r||r>55295&&r<56320)return!0;var a=this.input.slice(n,i);if(!l.test(a))return!0}return!1},pe.isAsyncFunction=function(){if(this.options.ecmaVersion<8||!this.isContextual("async"))return!1;w.lastIndex=this.pos;var e,t=w.exec(this.input),n=this.pos+t[0].length;return!k.test(this.input.slice(this.pos,n))&&"function"===this.input.slice(n,n+8)&&(n+8===this.input.length||!(d(e=this.input.charCodeAt(n+8))||e>55295&&e<56320))},pe.isUsingKeyword=function(e,t){if(this.options.ecmaVersion<17||!this.isContextual(e?"await":"using"))return!1;w.lastIndex=this.pos;var n=w.exec(this.input),r=this.pos+n[0].length;if(k.test(this.input.slice(this.pos,r)))return!1;if(e){var i,a=r+5;if("using"!==this.input.slice(r,a)||a===this.input.length||d(i=this.input.charCodeAt(a))||i>55295&&i<56320)return!1;w.lastIndex=a;var s=w.exec(this.input);if(s&&k.test(this.input.slice(a,a+s[0].length)))return!1}if(t){var o,l=r+2;if("of"===this.input.slice(r,l)&&(l===this.input.length||!d(o=this.input.charCodeAt(l))&&!(o>55295&&o<56320)))return!1}var c=this.input.charCodeAt(r);return p(c,!0)||92===c},pe.isAwaitUsing=function(e){return this.isUsingKeyword(!0,e)},pe.isUsing=function(e){return this.isUsingKeyword(!1,e)},pe.parseStatement=function(e,t,n){var r,i=this.type,a=this.startNode();switch(this.isLet(e)&&(i=b._var,r="let"),i){case b._break:case b._continue:return this.parseBreakContinueStatement(a,i.keyword);case b._debugger:return this.parseDebuggerStatement(a);case b._do:return this.parseDoStatement(a);case b._for:return this.parseForStatement(a);case b._function:return e&&(this.strict||"if"!==e&&"label"!==e)&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(a,!1,!e);case b._class:return e&&this.unexpected(),this.parseClass(a,!0);case b._if:return this.parseIfStatement(a);case b._return:return this.parseReturnStatement(a);case b._switch:return this.parseSwitchStatement(a);case b._throw:return this.parseThrowStatement(a);case b._try:return this.parseTryStatement(a);case b._const:case b._var:return r=r||this.value,e&&"var"!==r&&this.unexpected(),this.parseVarStatement(a,r);case b._while:return this.parseWhileStatement(a);case b._with:return this.parseWithStatement(a);case b.braceL:return this.parseBlock(!0,a);case b.semi:return this.parseEmptyStatement(a);case b._export:case b._import:if(this.options.ecmaVersion>10&&i===b._import){w.lastIndex=this.pos;var s=w.exec(this.input),o=this.pos+s[0].length,l=this.input.charCodeAt(o);if(40===l||46===l)return this.parseExpressionStatement(a,this.parseExpression())}return this.options.allowImportExportEverywhere||(t||this.raise(this.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.start,"'import' and 'export' may appear only with 'sourceType: module'")),i===b._import?this.parseImport(a):this.parseExport(a,n);default:if(this.isAsyncFunction())return e&&this.unexpected(),this.next(),this.parseFunctionStatement(a,!0,!e);var c=this.isAwaitUsing(!1)?"await using":this.isUsing(!1)?"using":null;if(c)return t&&"script"===this.options.sourceType&&this.raise(this.start,"Using declaration cannot appear in the top level when source type is `script`"),"await using"===c&&(this.canAwait||this.raise(this.start,"Await using cannot appear outside of async function"),this.next()),this.next(),this.parseVar(a,!1,c),this.semicolon(),this.finishNode(a,"VariableDeclaration");var u=this.value,h=this.parseExpression();return i===b.name&&"Identifier"===h.type&&this.eat(b.colon)?this.parseLabeledStatement(a,u,h,e):this.parseExpressionStatement(a,h)}},pe.parseBreakContinueStatement=function(e,t){var n="break"===t;this.next(),this.eat(b.semi)||this.insertSemicolon()?e.label=null:this.type!==b.name?this.unexpected():(e.label=this.parseIdent(),this.semicolon());for(var r=0;r=6?this.eat(b.semi):this.semicolon(),this.finishNode(e,"DoWhileStatement")},pe.parseForStatement=function(e){this.next();var t=this.options.ecmaVersion>=9&&this.canAwait&&this.eatContextual("await")?this.lastTokStart:-1;if(this.labels.push(de),this.enterScope(0),this.expect(b.parenL),this.type===b.semi)return t>-1&&this.unexpected(t),this.parseFor(e,null);var n=this.isLet();if(this.type===b._var||this.type===b._const||n){var r=this.startNode(),i=n?"let":this.value;return this.next(),this.parseVar(r,!0,i),this.finishNode(r,"VariableDeclaration"),this.parseForAfterInit(e,r,t)}var a=this.isContextual("let"),s=!1,o=this.isUsing(!0)?"using":this.isAwaitUsing(!0)?"await using":null;if(o){var l=this.startNode();return this.next(),"await using"===o&&this.next(),this.parseVar(l,!0,o),this.finishNode(l,"VariableDeclaration"),this.parseForAfterInit(e,l,t)}var c=this.containsEsc,u=new he,h=this.start,p=t>-1?this.parseExprSubscripts(u,"await"):this.parseExpression(!0,u);return this.type===b._in||(s=this.options.ecmaVersion>=6&&this.isContextual("of"))?(t>-1?(this.type===b._in&&this.unexpected(t),e.await=!0):s&&this.options.ecmaVersion>=8&&(p.start!==h||c||"Identifier"!==p.type||"async"!==p.name?this.options.ecmaVersion>=9&&(e.await=!1):this.unexpected()),a&&s&&this.raise(p.start,"The left-hand side of a for-of loop may not start with 'let'."),this.toAssignable(p,!1,u),this.checkLValPattern(p),this.parseForIn(e,p)):(this.checkExpressionErrors(u,!0),t>-1&&this.unexpected(t),this.parseFor(e,p))},pe.parseForAfterInit=function(e,t,n){return(this.type===b._in||this.options.ecmaVersion>=6&&this.isContextual("of"))&&1===t.declarations.length?(this.options.ecmaVersion>=9&&(this.type===b._in?n>-1&&this.unexpected(n):e.await=n>-1),this.parseForIn(e,t)):(n>-1&&this.unexpected(n),this.parseFor(e,t))},pe.parseFunctionStatement=function(e,t,n){return this.next(),this.parseFunction(e,ge|(n?0:ye),!1,t)},pe.parseIfStatement=function(e){return this.next(),e.test=this.parseParenExpression(),e.consequent=this.parseStatement("if"),e.alternate=this.eat(b._else)?this.parseStatement("if"):null,this.finishNode(e,"IfStatement")},pe.parseReturnStatement=function(e){return this.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.start,"'return' outside of function"),this.next(),this.eat(b.semi)||this.insertSemicolon()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")},pe.parseSwitchStatement=function(e){var t;this.next(),e.discriminant=this.parseParenExpression(),e.cases=[],this.expect(b.braceL),this.labels.push(fe),this.enterScope(0);for(var n=!1;this.type!==b.braceR;)if(this.type===b._case||this.type===b._default){var r=this.type===b._case;t&&this.finishNode(t,"SwitchCase"),e.cases.push(t=this.startNode()),t.consequent=[],this.next(),r?t.test=this.parseExpression():(n&&this.raiseRecoverable(this.lastTokStart,"Multiple default clauses"),n=!0,t.test=null),this.expect(b.colon)}else t||this.unexpected(),t.consequent.push(this.parseStatement(null));return this.exitScope(),t&&this.finishNode(t,"SwitchCase"),this.next(),this.labels.pop(),this.finishNode(e,"SwitchStatement")},pe.parseThrowStatement=function(e){return this.next(),k.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,"Illegal newline after throw"),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")};var me=[];pe.parseCatchClauseParam=function(){var e=this.parseBindingAtom(),t="Identifier"===e.type;return this.enterScope(t?Y:0),this.checkLValPattern(e,t?ae:re),this.expect(b.parenR),e},pe.parseTryStatement=function(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.type===b._catch){var t=this.startNode();this.next(),this.eat(b.parenL)?t.param=this.parseCatchClauseParam():(this.options.ecmaVersion<10&&this.unexpected(),t.param=null,this.enterScope(0)),t.body=this.parseBlock(!1),this.exitScope(),e.handler=this.finishNode(t,"CatchClause")}return e.finalizer=this.eat(b._finally)?this.parseBlock():null,e.handler||e.finalizer||this.raise(e.start,"Missing catch or finally clause"),this.finishNode(e,"TryStatement")},pe.parseVarStatement=function(e,t,n){return this.next(),this.parseVar(e,!1,t,n),this.semicolon(),this.finishNode(e,"VariableDeclaration")},pe.parseWhileStatement=function(e){return this.next(),e.test=this.parseParenExpression(),this.labels.push(de),e.body=this.parseStatement("while"),this.labels.pop(),this.finishNode(e,"WhileStatement")},pe.parseWithStatement=function(e){return this.strict&&this.raise(this.start,"'with' in strict mode"),this.next(),e.object=this.parseParenExpression(),e.body=this.parseStatement("with"),this.finishNode(e,"WithStatement")},pe.parseEmptyStatement=function(e){return this.next(),this.finishNode(e,"EmptyStatement")},pe.parseLabeledStatement=function(e,t,n,r){for(var i=0,a=this.labels;i=0;o--){var l=this.labels[o];if(l.statementStart!==e.start)break;l.statementStart=this.start,l.kind=s}return this.labels.push({name:t,kind:s,statementStart:this.start}),e.body=this.parseStatement(r?-1===r.indexOf("label")?r+"label":r:"label"),this.labels.pop(),e.label=n,this.finishNode(e,"LabeledStatement")},pe.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},pe.parseBlock=function(e,t,n){for(void 0===e&&(e=!0),void 0===t&&(t=this.startNode()),t.body=[],this.expect(b.braceL),e&&this.enterScope(0);this.type!==b.braceR;){var r=this.parseStatement(null);t.body.push(r)}return n&&(this.strict=!1),this.next(),e&&this.exitScope(),this.finishNode(t,"BlockStatement")},pe.parseFor=function(e,t){return e.init=t,this.expect(b.semi),e.test=this.type===b.semi?null:this.parseExpression(),this.expect(b.semi),e.update=this.type===b.parenR?null:this.parseExpression(),this.expect(b.parenR),e.body=this.parseStatement("for"),this.exitScope(),this.labels.pop(),this.finishNode(e,"ForStatement")},pe.parseForIn=function(e,t){var n=this.type===b._in;return this.next(),"VariableDeclaration"===t.type&&null!=t.declarations[0].init&&(!n||this.options.ecmaVersion<8||this.strict||"var"!==t.kind||"Identifier"!==t.declarations[0].id.type)&&this.raise(t.start,(n?"for-in":"for-of")+" loop variable declaration may not have an initializer"),e.left=t,e.right=n?this.parseExpression():this.parseMaybeAssign(),this.expect(b.parenR),e.body=this.parseStatement("for"),this.exitScope(),this.labels.pop(),this.finishNode(e,n?"ForInStatement":"ForOfStatement")},pe.parseVar=function(e,t,n,r){for(e.declarations=[],e.kind=n;;){var i=this.startNode();if(this.parseVarId(i,n),this.eat(b.eq)?i.init=this.parseMaybeAssign(t):r||"const"!==n||this.type===b._in||this.options.ecmaVersion>=6&&this.isContextual("of")?r||"using"!==n&&"await using"!==n||!(this.options.ecmaVersion>=17)||this.type===b._in||this.isContextual("of")?r||"Identifier"===i.id.type||t&&(this.type===b._in||this.isContextual("of"))?i.init=null:this.raise(this.lastTokEnd,"Complex binding patterns require an initialization value"):this.raise(this.lastTokEnd,"Missing initializer in "+n+" declaration"):this.unexpected(),e.declarations.push(this.finishNode(i,"VariableDeclarator")),!this.eat(b.comma))break}return e},pe.parseVarId=function(e,t){e.id="using"===t||"await using"===t?this.parseIdent():this.parseBindingAtom(),this.checkLValPattern(e.id,"var"===t?ne:re,!1)};var ge=1,ye=2,_e=4;function ve(e,t){var n=t.key.name,r=e[n],i="true";return"MethodDefinition"!==t.type||"get"!==t.kind&&"set"!==t.kind||(i=(t.static?"s":"i")+t.kind),"iget"===r&&"iset"===i||"iset"===r&&"iget"===i||"sget"===r&&"sset"===i||"sset"===r&&"sget"===i?(e[n]="true",!1):!!r||(e[n]=i,!1)}function be(e,t){var n=e.computed,r=e.key;return!n&&("Identifier"===r.type&&r.name===t||"Literal"===r.type&&r.value===t)}pe.parseFunction=function(e,t,n,r,i){this.initFunction(e),(this.options.ecmaVersion>=9||this.options.ecmaVersion>=6&&!r)&&(this.type===b.star&&t&ye&&this.unexpected(),e.generator=this.eat(b.star)),this.options.ecmaVersion>=8&&(e.async=!!r),t&ge&&(e.id=t&_e&&this.type!==b.name?null:this.parseIdent(),!e.id||t&ye||this.checkLValSimple(e.id,this.strict||e.generator||e.async?this.treatFunctionsAsVar?ne:re:ie));var a=this.yieldPos,s=this.awaitPos,o=this.awaitIdentPos;return this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,this.enterScope(ee(e.async,e.generator)),t&ge||(e.id=this.type===b.name?this.parseIdent():null),this.parseFunctionParams(e),this.parseFunctionBody(e,n,!1,i),this.yieldPos=a,this.awaitPos=s,this.awaitIdentPos=o,this.finishNode(e,t&ge?"FunctionDeclaration":"FunctionExpression")},pe.parseFunctionParams=function(e){this.expect(b.parenL),e.params=this.parseBindingList(b.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams()},pe.parseClass=function(e,t){this.next();var n=this.strict;this.strict=!0,this.parseClassId(e,t),this.parseClassSuper(e);var r=this.enterClassBody(),i=this.startNode(),a=!1;for(i.body=[],this.expect(b.braceL);this.type!==b.braceR;){var s=this.parseClassElement(null!==e.superClass);s&&(i.body.push(s),"MethodDefinition"===s.type&&"constructor"===s.kind?(a&&this.raiseRecoverable(s.start,"Duplicate constructor in the same class"),a=!0):s.key&&"PrivateIdentifier"===s.key.type&&ve(r,s)&&this.raiseRecoverable(s.key.start,"Identifier '#"+s.key.name+"' has already been declared"))}return this.strict=n,this.next(),e.body=this.finishNode(i,"ClassBody"),this.exitClassBody(),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},pe.parseClassElement=function(e){if(this.eat(b.semi))return null;var t=this.options.ecmaVersion,n=this.startNode(),r="",i=!1,a=!1,s="method",o=!1;if(this.eatContextual("static")){if(t>=13&&this.eat(b.braceL))return this.parseClassStaticBlock(n),n;this.isClassElementNameStart()||this.type===b.star?o=!0:r="static"}if(n.static=o,!r&&t>=8&&this.eatContextual("async")&&(!this.isClassElementNameStart()&&this.type!==b.star||this.canInsertSemicolon()?r="async":a=!0),!r&&(t>=9||!a)&&this.eat(b.star)&&(i=!0),!r&&!a&&!i){var l=this.value;(this.eatContextual("get")||this.eatContextual("set"))&&(this.isClassElementNameStart()?s=l:r=l)}if(r?(n.computed=!1,n.key=this.startNodeAt(this.lastTokStart,this.lastTokStartLoc),n.key.name=r,this.finishNode(n.key,"Identifier")):this.parseClassElementName(n),t<13||this.type===b.parenL||"method"!==s||i||a){var c=!n.static&&be(n,"constructor"),u=c&&e;c&&"method"!==s&&this.raise(n.key.start,"Constructor can't have get/set modifier"),n.kind=c?"constructor":s,this.parseClassMethod(n,i,a,u)}else this.parseClassField(n);return n},pe.isClassElementNameStart=function(){return this.type===b.name||this.type===b.privateId||this.type===b.num||this.type===b.string||this.type===b.bracketL||this.type.keyword},pe.parseClassElementName=function(e){this.type===b.privateId?("constructor"===this.value&&this.raise(this.start,"Classes can't have an element named '#constructor'"),e.computed=!1,e.key=this.parsePrivateIdent()):this.parsePropertyName(e)},pe.parseClassMethod=function(e,t,n,r){var i=e.key;"constructor"===e.kind?(t&&this.raise(i.start,"Constructor can't be a generator"),n&&this.raise(i.start,"Constructor can't be an async method")):e.static&&be(e,"prototype")&&this.raise(i.start,"Classes may not have a static property named prototype");var a=e.value=this.parseMethod(t,n,r);return"get"===e.kind&&0!==a.params.length&&this.raiseRecoverable(a.start,"getter should have no params"),"set"===e.kind&&1!==a.params.length&&this.raiseRecoverable(a.start,"setter should have exactly one param"),"set"===e.kind&&"RestElement"===a.params[0].type&&this.raiseRecoverable(a.params[0].start,"Setter cannot use rest params"),this.finishNode(e,"MethodDefinition")},pe.parseClassField=function(e){return be(e,"constructor")?this.raise(e.key.start,"Classes can't have a field named 'constructor'"):e.static&&be(e,"prototype")&&this.raise(e.key.start,"Classes can't have a static field named 'prototype'"),this.eat(b.eq)?(this.enterScope(Z|J),e.value=this.parseMaybeAssign(),this.exitScope()):e.value=null,this.semicolon(),this.finishNode(e,"PropertyDefinition")},pe.parseClassStaticBlock=function(e){e.body=[];var t=this.labels;for(this.labels=[],this.enterScope($|J);this.type!==b.braceR;){var n=this.parseStatement(null);e.body.push(n)}return this.next(),this.exitScope(),this.labels=t,this.finishNode(e,"StaticBlock")},pe.parseClassId=function(e,t){this.type===b.name?(e.id=this.parseIdent(),t&&this.checkLValSimple(e.id,re,!1)):(!0===t&&this.unexpected(),e.id=null)},pe.parseClassSuper=function(e){e.superClass=this.eat(b._extends)?this.parseExprSubscripts(null,!1):null},pe.enterClassBody=function(){var e={declared:Object.create(null),used:[]};return this.privateNameStack.push(e),e.declared},pe.exitClassBody=function(){var e=this.privateNameStack.pop(),t=e.declared,n=e.used;if(this.options.checkPrivateFields)for(var r=this.privateNameStack.length,i=0===r?null:this.privateNameStack[r-1],a=0;a=11&&(this.eatContextual("as")?(e.exported=this.parseModuleExportName(),this.checkExport(t,e.exported,this.lastTokStart)):e.exported=null),this.expectContextual("from"),this.type!==b.string&&this.unexpected(),e.source=this.parseExprAtom(),this.options.ecmaVersion>=16&&(e.attributes=this.parseWithClause()),this.semicolon(),this.finishNode(e,"ExportAllDeclaration")},pe.parseExport=function(e,t){if(this.next(),this.eat(b.star))return this.parseExportAllDeclaration(e,t);if(this.eat(b._default))return this.checkExport(t,"default",this.lastTokStart),e.declaration=this.parseExportDefaultDeclaration(),this.finishNode(e,"ExportDefaultDeclaration");if(this.shouldParseExportStatement())e.declaration=this.parseExportDeclaration(e),"VariableDeclaration"===e.declaration.type?this.checkVariableExport(t,e.declaration.declarations):this.checkExport(t,e.declaration.id,e.declaration.id.start),e.specifiers=[],e.source=null,this.options.ecmaVersion>=16&&(e.attributes=[]);else{if(e.declaration=null,e.specifiers=this.parseExportSpecifiers(t),this.eatContextual("from"))this.type!==b.string&&this.unexpected(),e.source=this.parseExprAtom(),this.options.ecmaVersion>=16&&(e.attributes=this.parseWithClause());else{for(var n=0,r=e.specifiers;n=16&&(e.attributes=[])}this.semicolon()}return this.finishNode(e,"ExportNamedDeclaration")},pe.parseExportDeclaration=function(e){return this.parseStatement(null)},pe.parseExportDefaultDeclaration=function(){var e;if(this.type===b._function||(e=this.isAsyncFunction())){var t=this.startNode();return this.next(),e&&this.next(),this.parseFunction(t,ge|_e,!1,e)}if(this.type===b._class){var n=this.startNode();return this.parseClass(n,"nullableID")}var r=this.parseMaybeAssign();return this.semicolon(),r},pe.checkExport=function(e,t,n){e&&("string"!==typeof t&&(t="Identifier"===t.type?t.name:t.value),L(e,t)&&this.raiseRecoverable(n,"Duplicate export '"+t+"'"),e[t]=!0)},pe.checkPatternExport=function(e,t){var n=t.type;if("Identifier"===n)this.checkExport(e,t,t.start);else if("ObjectPattern"===n)for(var r=0,i=t.properties;r=16&&(e.attributes=this.parseWithClause()),this.semicolon(),this.finishNode(e,"ImportDeclaration")},pe.parseImportSpecifier=function(){var e=this.startNode();return e.imported=this.parseModuleExportName(),this.eatContextual("as")?e.local=this.parseIdent():(this.checkUnreserved(e.imported),e.local=e.imported),this.checkLValSimple(e.local,re),this.finishNode(e,"ImportSpecifier")},pe.parseImportDefaultSpecifier=function(){var e=this.startNode();return e.local=this.parseIdent(),this.checkLValSimple(e.local,re),this.finishNode(e,"ImportDefaultSpecifier")},pe.parseImportNamespaceSpecifier=function(){var e=this.startNode();return this.next(),this.expectContextual("as"),e.local=this.parseIdent(),this.checkLValSimple(e.local,re),this.finishNode(e,"ImportNamespaceSpecifier")},pe.parseImportSpecifiers=function(){var e=[],t=!0;if(this.type===b.name&&(e.push(this.parseImportDefaultSpecifier()),!this.eat(b.comma)))return e;if(this.type===b.star)return e.push(this.parseImportNamespaceSpecifier()),e;for(this.expect(b.braceL);!this.eat(b.braceR);){if(t)t=!1;else if(this.expect(b.comma),this.afterTrailingComma(b.braceR))break;e.push(this.parseImportSpecifier())}return e},pe.parseWithClause=function(){var e=[];if(!this.eat(b._with))return e;this.expect(b.braceL);for(var t={},n=!0;!this.eat(b.braceR);){if(n)n=!1;else if(this.expect(b.comma),this.afterTrailingComma(b.braceR))break;var r=this.parseImportAttribute(),i="Identifier"===r.key.type?r.key.name:r.key.value;L(t,i)&&this.raiseRecoverable(r.key.start,"Duplicate attribute key '"+i+"'"),t[i]=!0,e.push(r)}return e},pe.parseImportAttribute=function(){var e=this.startNode();return e.key=this.type===b.string?this.parseExprAtom():this.parseIdent("never"!==this.options.allowReserved),this.expect(b.colon),this.type!==b.string&&this.unexpected(),e.value=this.parseExprAtom(),this.finishNode(e,"ImportAttribute")},pe.parseModuleExportName=function(){if(this.options.ecmaVersion>=13&&this.type===b.string){var e=this.parseLiteral(this.value);return O.test(e.value)&&this.raise(e.start,"An export name cannot include a lone surrogate."),e}return this.parseIdent(!0)},pe.adaptDirectivePrologue=function(e){for(var t=0;t=5&&"ExpressionStatement"===e.type&&"Literal"===e.expression.type&&"string"===typeof e.expression.value&&('"'===this.input[e.start]||"'"===this.input[e.start])};var ke=oe.prototype;ke.toAssignable=function(e,t,n){if(this.options.ecmaVersion>=6&&e)switch(e.type){case"Identifier":this.inAsync&&"await"===e.name&&this.raise(e.start,"Cannot use 'await' as identifier inside an async function");break;case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":case"RestElement":break;case"ObjectExpression":e.type="ObjectPattern",n&&this.checkPatternErrors(n,!0);for(var r=0,i=e.properties;r=8&&!o&&"async"===l.name&&!this.canInsertSemicolon()&&this.eat(b._function))return this.overrideContext(Ae.f_expr),this.parseFunction(this.startNodeAt(a,s),0,!1,!0,t);if(i&&!this.canInsertSemicolon()){if(this.eat(b.arrow))return this.parseArrowExpression(this.startNodeAt(a,s),[l],!1,t);if(this.options.ecmaVersion>=8&&"async"===l.name&&this.type===b.name&&!o&&(!this.potentialArrowInForAwait||"of"!==this.value||this.containsEsc))return l=this.parseIdent(!1),!this.canInsertSemicolon()&&this.eat(b.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(a,s),[l],!0,t)}return l;case b.regexp:var c=this.value;return(r=this.parseLiteral(c.value)).regex={pattern:c.pattern,flags:c.flags},r;case b.num:case b.string:return this.parseLiteral(this.value);case b._null:case b._true:case b._false:return(r=this.startNode()).value=this.type===b._null?null:this.type===b._true,r.raw=this.type.keyword,this.next(),this.finishNode(r,"Literal");case b.parenL:var u=this.start,h=this.parseParenAndDistinguishExpression(i,t);return e&&(e.parenthesizedAssign<0&&!this.isSimpleAssignTarget(h)&&(e.parenthesizedAssign=u),e.parenthesizedBind<0&&(e.parenthesizedBind=u)),h;case b.bracketL:return r=this.startNode(),this.next(),r.elements=this.parseExprList(b.bracketR,!0,!0,e),this.finishNode(r,"ArrayExpression");case b.braceL:return this.overrideContext(Ae.b_expr),this.parseObj(!1,e);case b._function:return r=this.startNode(),this.next(),this.parseFunction(r,0);case b._class:return this.parseClass(this.startNode(),!1);case b._new:return this.parseNew();case b.backQuote:return this.parseTemplate();case b._import:return this.options.ecmaVersion>=11?this.parseExprImport(n):this.unexpected();default:return this.parseExprAtomDefault()}},Se.parseExprAtomDefault=function(){this.unexpected()},Se.parseExprImport=function(e){var t=this.startNode();if(this.containsEsc&&this.raiseRecoverable(this.start,"Escape sequence in keyword import"),this.next(),this.type===b.parenL&&!e)return this.parseDynamicImport(t);if(this.type===b.dot){var n=this.startNodeAt(t.start,t.loc&&t.loc.start);return n.name="import",t.meta=this.finishNode(n,"Identifier"),this.parseImportMeta(t)}this.unexpected()},Se.parseDynamicImport=function(e){if(this.next(),e.source=this.parseMaybeAssign(),this.options.ecmaVersion>=16)this.eat(b.parenR)?e.options=null:(this.expect(b.comma),this.afterTrailingComma(b.parenR)?e.options=null:(e.options=this.parseMaybeAssign(),this.eat(b.parenR)||(this.expect(b.comma),this.afterTrailingComma(b.parenR)||this.unexpected())));else if(!this.eat(b.parenR)){var t=this.start;this.eat(b.comma)&&this.eat(b.parenR)?this.raiseRecoverable(t,"Trailing comma is not allowed in import()"):this.unexpected(t)}return this.finishNode(e,"ImportExpression")},Se.parseImportMeta=function(e){this.next();var t=this.containsEsc;return e.property=this.parseIdent(!0),"meta"!==e.property.name&&this.raiseRecoverable(e.property.start,"The only valid meta property for import is 'import.meta'"),t&&this.raiseRecoverable(e.start,"'import.meta' must not contain escaped characters"),"module"===this.options.sourceType||this.options.allowImportExportEverywhere||this.raiseRecoverable(e.start,"Cannot use 'import.meta' outside a module"),this.finishNode(e,"MetaProperty")},Se.parseLiteral=function(e){var t=this.startNode();return t.value=e,t.raw=this.input.slice(this.start,this.end),110===t.raw.charCodeAt(t.raw.length-1)&&(t.bigint=null!=t.value?t.value.toString():t.raw.slice(0,-1).replace(/_/g,"")),this.next(),this.finishNode(t,"Literal")},Se.parseParenExpression=function(){this.expect(b.parenL);var e=this.parseExpression();return this.expect(b.parenR),e},Se.shouldParseArrow=function(e){return!this.canInsertSemicolon()},Se.parseParenAndDistinguishExpression=function(e,t){var n,r=this.start,i=this.startLoc,a=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var s,o=this.start,l=this.startLoc,c=[],u=!0,h=!1,p=new he,d=this.yieldPos,f=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==b.parenR;){if(u?u=!1:this.expect(b.comma),a&&this.afterTrailingComma(b.parenR,!0)){h=!0;break}if(this.type===b.ellipsis){s=this.start,c.push(this.parseParenItem(this.parseRestBinding())),this.type===b.comma&&this.raiseRecoverable(this.start,"Comma is not permitted after the rest element");break}c.push(this.parseMaybeAssign(!1,p,this.parseParenItem))}var m=this.lastTokEnd,g=this.lastTokEndLoc;if(this.expect(b.parenR),e&&this.shouldParseArrow(c)&&this.eat(b.arrow))return this.checkPatternErrors(p,!1),this.checkYieldAwaitInDefaultParams(),this.yieldPos=d,this.awaitPos=f,this.parseParenArrowList(r,i,c,t);c.length&&!h||this.unexpected(this.lastTokStart),s&&this.unexpected(s),this.checkExpressionErrors(p,!0),this.yieldPos=d||this.yieldPos,this.awaitPos=f||this.awaitPos,c.length>1?((n=this.startNodeAt(o,l)).expressions=c,this.finishNodeAt(n,"SequenceExpression",m,g)):n=c[0]}else n=this.parseParenExpression();if(this.options.preserveParens){var y=this.startNodeAt(r,i);return y.expression=n,this.finishNode(y,"ParenthesizedExpression")}return n},Se.parseParenItem=function(e){return e},Se.parseParenArrowList=function(e,t,n,r){return this.parseArrowExpression(this.startNodeAt(e,t),n,!1,r)};var ze=[];Se.parseNew=function(){this.containsEsc&&this.raiseRecoverable(this.start,"Escape sequence in keyword new");var e=this.startNode();if(this.next(),this.options.ecmaVersion>=6&&this.type===b.dot){var t=this.startNodeAt(e.start,e.loc&&e.loc.start);t.name="new",e.meta=this.finishNode(t,"Identifier"),this.next();var n=this.containsEsc;return e.property=this.parseIdent(!0),"target"!==e.property.name&&this.raiseRecoverable(e.property.start,"The only valid meta property for new is 'new.target'"),n&&this.raiseRecoverable(e.start,"'new.target' must not contain escaped characters"),this.allowNewDotTarget||this.raiseRecoverable(e.start,"'new.target' can only be used in functions and class static block"),this.finishNode(e,"MetaProperty")}var r=this.start,i=this.startLoc;return e.callee=this.parseSubscripts(this.parseExprAtom(null,!1,!0),r,i,!0,!1),this.eat(b.parenL)?e.arguments=this.parseExprList(b.parenR,this.options.ecmaVersion>=8,!1):e.arguments=ze,this.finishNode(e,"NewExpression")},Se.parseTemplateElement=function(e){var t=e.isTagged,n=this.startNode();return this.type===b.invalidTemplate?(t||this.raiseRecoverable(this.start,"Bad escape sequence in untagged template literal"),n.value={raw:this.value.replace(/\r\n?/g,"\n"),cooked:null}):n.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,"\n"),cooked:this.value},this.next(),n.tail=this.type===b.backQuote,this.finishNode(n,"TemplateElement")},Se.parseTemplate=function(e){void 0===e&&(e={});var t=e.isTagged;void 0===t&&(t=!1);var n=this.startNode();this.next(),n.expressions=[];var r=this.parseTemplateElement({isTagged:t});for(n.quasis=[r];!r.tail;)this.type===b.eof&&this.raise(this.pos,"Unterminated template literal"),this.expect(b.dollarBraceL),n.expressions.push(this.parseExpression()),this.expect(b.braceR),n.quasis.push(r=this.parseTemplateElement({isTagged:t}));return this.next(),this.finishNode(n,"TemplateLiteral")},Se.isAsyncProp=function(e){return!e.computed&&"Identifier"===e.key.type&&"async"===e.key.name&&(this.type===b.name||this.type===b.num||this.type===b.string||this.type===b.bracketL||this.type.keyword||this.options.ecmaVersion>=9&&this.type===b.star)&&!k.test(this.input.slice(this.lastTokEnd,this.start))},Se.parseObj=function(e,t){var n=this.startNode(),r=!0,i={};for(n.properties=[],this.next();!this.eat(b.braceR);){if(r)r=!1;else if(this.expect(b.comma),this.options.ecmaVersion>=5&&this.afterTrailingComma(b.braceR))break;var a=this.parseProperty(e,t);e||this.checkPropClash(a,i,t),n.properties.push(a)}return this.finishNode(n,e?"ObjectPattern":"ObjectExpression")},Se.parseProperty=function(e,t){var n,r,i,a,s=this.startNode();if(this.options.ecmaVersion>=9&&this.eat(b.ellipsis))return e?(s.argument=this.parseIdent(!1),this.type===b.comma&&this.raiseRecoverable(this.start,"Comma is not permitted after the rest element"),this.finishNode(s,"RestElement")):(s.argument=this.parseMaybeAssign(!1,t),this.type===b.comma&&t&&t.trailingComma<0&&(t.trailingComma=this.start),this.finishNode(s,"SpreadElement"));this.options.ecmaVersion>=6&&(s.method=!1,s.shorthand=!1,(e||t)&&(i=this.start,a=this.startLoc),e||(n=this.eat(b.star)));var o=this.containsEsc;return this.parsePropertyName(s),!e&&!o&&this.options.ecmaVersion>=8&&!n&&this.isAsyncProp(s)?(r=!0,n=this.options.ecmaVersion>=9&&this.eat(b.star),this.parsePropertyName(s)):r=!1,this.parsePropertyValue(s,e,n,r,i,a,t,o),this.finishNode(s,"Property")},Se.parseGetterSetter=function(e){var t=e.key.name;this.parsePropertyName(e),e.value=this.parseMethod(!1),e.kind=t;var n="get"===e.kind?0:1;if(e.value.params.length!==n){var r=e.value.start;"get"===e.kind?this.raiseRecoverable(r,"getter should have no params"):this.raiseRecoverable(r,"setter should have exactly one param")}else"set"===e.kind&&"RestElement"===e.value.params[0].type&&this.raiseRecoverable(e.value.params[0].start,"Setter cannot use rest params")},Se.parsePropertyValue=function(e,t,n,r,i,a,s,o){(n||r)&&this.type===b.colon&&this.unexpected(),this.eat(b.colon)?(e.value=t?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,s),e.kind="init"):this.options.ecmaVersion>=6&&this.type===b.parenL?(t&&this.unexpected(),e.method=!0,e.value=this.parseMethod(n,r),e.kind="init"):t||o||!(this.options.ecmaVersion>=5)||e.computed||"Identifier"!==e.key.type||"get"!==e.key.name&&"set"!==e.key.name||this.type===b.comma||this.type===b.braceR||this.type===b.eq?this.options.ecmaVersion>=6&&!e.computed&&"Identifier"===e.key.type?((n||r)&&this.unexpected(),this.checkUnreserved(e.key),"await"!==e.key.name||this.awaitIdentPos||(this.awaitIdentPos=i),t?e.value=this.parseMaybeDefault(i,a,this.copyNode(e.key)):this.type===b.eq&&s?(s.shorthandAssign<0&&(s.shorthandAssign=this.start),e.value=this.parseMaybeDefault(i,a,this.copyNode(e.key))):e.value=this.copyNode(e.key),e.kind="init",e.shorthand=!0):this.unexpected():((n||r)&&this.unexpected(),this.parseGetterSetter(e))},Se.parsePropertyName=function(e){if(this.options.ecmaVersion>=6){if(this.eat(b.bracketL))return e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(b.bracketR),e.key;e.computed=!1}return e.key=this.type===b.num||this.type===b.string?this.parseExprAtom():this.parseIdent("never"!==this.options.allowReserved)},Se.initFunction=function(e){e.id=null,this.options.ecmaVersion>=6&&(e.generator=e.expression=!1),this.options.ecmaVersion>=8&&(e.async=!1)},Se.parseMethod=function(e,t,n){var r=this.startNode(),i=this.yieldPos,a=this.awaitPos,s=this.awaitIdentPos;return this.initFunction(r),this.options.ecmaVersion>=6&&(r.generator=e),this.options.ecmaVersion>=8&&(r.async=!!t),this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,this.enterScope(ee(t,r.generator)|J|(n?X:0)),this.expect(b.parenL),r.params=this.parseBindingList(b.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(r,!1,!0,!1),this.yieldPos=i,this.awaitPos=a,this.awaitIdentPos=s,this.finishNode(r,"FunctionExpression")},Se.parseArrowExpression=function(e,t,n,r){var i=this.yieldPos,a=this.awaitPos,s=this.awaitIdentPos;return this.enterScope(ee(n,!1)|q),this.initFunction(e),this.options.ecmaVersion>=8&&(e.async=!!n),this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,e.params=this.toAssignableList(t,!0),this.parseFunctionBody(e,!0,!1,r),this.yieldPos=i,this.awaitPos=a,this.awaitIdentPos=s,this.finishNode(e,"ArrowFunctionExpression")},Se.parseFunctionBody=function(e,t,n,r){var i=t&&this.type!==b.braceL,a=this.strict,s=!1;if(i)e.body=this.parseMaybeAssign(r),e.expression=!0,this.checkParams(e,!1);else{var o=this.options.ecmaVersion>=7&&!this.isSimpleParamList(e.params);a&&!o||(s=this.strictDirective(this.end))&&o&&this.raiseRecoverable(e.start,"Illegal 'use strict' directive in function with non-simple parameter list");var l=this.labels;this.labels=[],s&&(this.strict=!0),this.checkParams(e,!a&&!s&&!t&&!n&&this.isSimpleParamList(e.params)),this.strict&&e.id&&this.checkLValSimple(e.id,se),e.body=this.parseBlock(!1,void 0,s&&!a),e.expression=!1,this.adaptDirectivePrologue(e.body.body),this.labels=l}this.exitScope()},Se.isSimpleParamList=function(e){for(var t=0,n=e;t-1||i.functions.indexOf(e)>-1||i.var.indexOf(e)>-1,i.lexical.push(e),this.inModule&&i.flags&V&&delete this.undefinedExports[e]}else if(t===ae)this.currentScope().lexical.push(e);else if(t===ie){var a=this.currentScope();r=this.treatFunctionsAsVar?a.lexical.indexOf(e)>-1:a.lexical.indexOf(e)>-1||a.var.indexOf(e)>-1,a.functions.push(e)}else for(var s=this.scopeStack.length-1;s>=0;--s){var o=this.scopeStack[s];if(o.lexical.indexOf(e)>-1&&!(o.flags&Y&&o.lexical[0]===e)||!this.treatFunctionsAsVarInScope(o)&&o.functions.indexOf(e)>-1){r=!0;break}if(o.var.push(e),this.inModule&&o.flags&V&&delete this.undefinedExports[e],o.flags&Q)break}r&&this.raiseRecoverable(n,"Identifier '"+e+"' has already been declared")},Le.checkLocalExport=function(e){-1===this.scopeStack[0].lexical.indexOf(e.name)&&-1===this.scopeStack[0].var.indexOf(e.name)&&(this.undefinedExports[e.name]=e)},Le.currentScope=function(){return this.scopeStack[this.scopeStack.length-1]},Le.currentVarScope=function(){for(var e=this.scopeStack.length-1;;e--){var t=this.scopeStack[e];if(t.flags&(Q|Z|$))return t}},Le.currentThisScope=function(){for(var e=this.scopeStack.length-1;;e--){var t=this.scopeStack[e];if(t.flags&(Q|Z|$)&&!(t.flags&q))return t}};var Pe=function(e,t,n){this.type="",this.start=t,this.end=0,e.options.locations&&(this.loc=new D(e,n)),e.options.directSourceFile&&(this.sourceFile=e.options.directSourceFile),e.options.ranges&&(this.range=[t,0])},Ne=oe.prototype;function je(e,t,n,r){return e.type=t,e.end=n,this.options.locations&&(e.loc.end=r),this.options.ranges&&(e.range[1]=n),e}Ne.startNode=function(){return new Pe(this,this.start,this.startLoc)},Ne.startNodeAt=function(e,t){return new Pe(this,e,t)},Ne.finishNode=function(e,t){return je.call(this,e,t,this.lastTokEnd,this.lastTokEndLoc)},Ne.finishNodeAt=function(e,t,n,r){return je.call(this,e,t,n,r)},Ne.copyNode=function(e){var t=new Pe(this,e.start,this.startLoc);for(var n in e)t[n]=e[n];return t};var Oe="ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS",Re=Oe+" Extended_Pictographic",De=Re+" EBase EComp EMod EPres ExtPict",Me={9:Oe,10:Re,11:Re,12:De,13:De,14:De},We={9:"",10:"",11:"",12:"",13:"",14:"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji"},Be="Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu",Fe="Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb",Ue=Fe+" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd",Ve=Ue+" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho",Ge=Ve+" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi",He=Ge+" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith",Ke={9:Fe,10:Ue,11:Ve,12:Ge,13:He,14:He+" Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz"},qe={};function Ye(e){var t=qe[e]={binary:N(Me[e]+" "+Be),binaryOfStrings:N(We[e]),nonBinary:{General_Category:N(Be),Script:N(Ke[e])}};t.nonBinary.Script_Extensions=t.nonBinary.Script,t.nonBinary.gc=t.nonBinary.General_Category,t.nonBinary.sc=t.nonBinary.Script,t.nonBinary.scx=t.nonBinary.Script_Extensions}for(var Je=0,Xe=[9,10,11,12,13,14];Je=6?"uy":"")+(e.options.ecmaVersion>=9?"s":"")+(e.options.ecmaVersion>=13?"d":"")+(e.options.ecmaVersion>=15?"v":""),this.unicodeProperties=qe[e.options.ecmaVersion>=14?14:e.options.ecmaVersion],this.source="",this.flags="",this.start=0,this.switchU=!1,this.switchV=!1,this.switchN=!1,this.pos=0,this.lastIntValue=0,this.lastStringValue="",this.lastAssertionIsQuantifiable=!1,this.numCapturingParens=0,this.maxBackReference=0,this.groupNames=Object.create(null),this.backReferenceNames=[],this.branchID=null};function et(e){for(var t in e)return!0;return!1}function tt(e){return 105===e||109===e||115===e}function nt(e){return 36===e||e>=40&&e<=43||46===e||63===e||e>=91&&e<=94||e>=123&&e<=125}function rt(e){return p(e,!0)||36===e||95===e}function it(e){return d(e,!0)||36===e||95===e||8204===e||8205===e}function at(e){return e>=65&&e<=90||e>=97&&e<=122}function st(e){return e>=0&&e<=1114111}Qe.prototype.reset=function(e,t,n){var r=-1!==n.indexOf("v"),i=-1!==n.indexOf("u");this.start=0|e,this.source=t+"",this.flags=n,r&&this.parser.options.ecmaVersion>=15?(this.switchU=!0,this.switchV=!0,this.switchN=!0):(this.switchU=i&&this.parser.options.ecmaVersion>=6,this.switchV=!1,this.switchN=i&&this.parser.options.ecmaVersion>=9)},Qe.prototype.raise=function(e){this.parser.raiseRecoverable(this.start,"Invalid regular expression: /"+this.source+"/: "+e)},Qe.prototype.at=function(e,t){void 0===t&&(t=!1);var n=this.source,r=n.length;if(e>=r)return-1;var i=n.charCodeAt(e);if(!t&&!this.switchU||i<=55295||i>=57344||e+1>=r)return i;var a=n.charCodeAt(e+1);return a>=56320&&a<=57343?(i<<10)+a-56613888:i},Qe.prototype.nextIndex=function(e,t){void 0===t&&(t=!1);var n=this.source,r=n.length;if(e>=r)return r;var i,a=n.charCodeAt(e);return!t&&!this.switchU||a<=55295||a>=57344||e+1>=r||(i=n.charCodeAt(e+1))<56320||i>57343?e+1:e+2},Qe.prototype.current=function(e){return void 0===e&&(e=!1),this.at(this.pos,e)},Qe.prototype.lookahead=function(e){return void 0===e&&(e=!1),this.at(this.nextIndex(this.pos,e),e)},Qe.prototype.advance=function(e){void 0===e&&(e=!1),this.pos=this.nextIndex(this.pos,e)},Qe.prototype.eat=function(e,t){return void 0===t&&(t=!1),this.current(t)===e&&(this.advance(t),!0)},Qe.prototype.eatChars=function(e,t){void 0===t&&(t=!1);for(var n=this.pos,r=0,i=e;r-1&&this.raise(e.start,"Duplicate regular expression flag"),"u"===s&&(r=!0),"v"===s&&(i=!0)}this.options.ecmaVersion>=15&&r&&i&&this.raise(e.start,"Invalid regular expression flag")},$e.validateRegExpPattern=function(e){this.regexp_pattern(e),!e.switchN&&this.options.ecmaVersion>=9&&et(e.groupNames)&&(e.switchN=!0,this.regexp_pattern(e))},$e.regexp_pattern=function(e){e.pos=0,e.lastIntValue=0,e.lastStringValue="",e.lastAssertionIsQuantifiable=!1,e.numCapturingParens=0,e.maxBackReference=0,e.groupNames=Object.create(null),e.backReferenceNames.length=0,e.branchID=null,this.regexp_disjunction(e),e.pos!==e.source.length&&(e.eat(41)&&e.raise("Unmatched ')'"),(e.eat(93)||e.eat(125))&&e.raise("Lone quantifier brackets")),e.maxBackReference>e.numCapturingParens&&e.raise("Invalid escape");for(var t=0,n=e.backReferenceNames;t=16;for(t&&(e.branchID=new Ze(e.branchID,null)),this.regexp_alternative(e);e.eat(124);)t&&(e.branchID=e.branchID.sibling()),this.regexp_alternative(e);t&&(e.branchID=e.branchID.parent),this.regexp_eatQuantifier(e,!0)&&e.raise("Nothing to repeat"),e.eat(123)&&e.raise("Lone quantifier brackets")},$e.regexp_alternative=function(e){for(;e.pos=9&&(n=e.eat(60)),e.eat(61)||e.eat(33))return this.regexp_disjunction(e),e.eat(41)||e.raise("Unterminated group"),e.lastAssertionIsQuantifiable=!n,!0}return e.pos=t,!1},$e.regexp_eatQuantifier=function(e,t){return void 0===t&&(t=!1),!!this.regexp_eatQuantifierPrefix(e,t)&&(e.eat(63),!0)},$e.regexp_eatQuantifierPrefix=function(e,t){return e.eat(42)||e.eat(43)||e.eat(63)||this.regexp_eatBracedQuantifier(e,t)},$e.regexp_eatBracedQuantifier=function(e,t){var n=e.pos;if(e.eat(123)){var r=0,i=-1;if(this.regexp_eatDecimalDigits(e)&&(r=e.lastIntValue,e.eat(44)&&this.regexp_eatDecimalDigits(e)&&(i=e.lastIntValue),e.eat(125)))return-1!==i&&i=16){var n=this.regexp_eatModifiers(e),r=e.eat(45);if(n||r){for(var i=0;i-1&&e.raise("Duplicate regular expression modifiers")}if(r){var s=this.regexp_eatModifiers(e);n||s||58!==e.current()||e.raise("Invalid regular expression modifiers");for(var o=0;o-1||n.indexOf(l)>-1)&&e.raise("Duplicate regular expression modifiers")}}}}if(e.eat(58)){if(this.regexp_disjunction(e),e.eat(41))return!0;e.raise("Unterminated group")}}e.pos=t}return!1},$e.regexp_eatCapturingGroup=function(e){if(e.eat(40)){if(this.options.ecmaVersion>=9?this.regexp_groupSpecifier(e):63===e.current()&&e.raise("Invalid group"),this.regexp_disjunction(e),e.eat(41))return e.numCapturingParens+=1,!0;e.raise("Unterminated group")}return!1},$e.regexp_eatModifiers=function(e){for(var t="",n=0;-1!==(n=e.current())&&tt(n);)t+=j(n),e.advance();return t},$e.regexp_eatExtendedAtom=function(e){return e.eat(46)||this.regexp_eatReverseSolidusAtomEscape(e)||this.regexp_eatCharacterClass(e)||this.regexp_eatUncapturingGroup(e)||this.regexp_eatCapturingGroup(e)||this.regexp_eatInvalidBracedQuantifier(e)||this.regexp_eatExtendedPatternCharacter(e)},$e.regexp_eatInvalidBracedQuantifier=function(e){return this.regexp_eatBracedQuantifier(e,!0)&&e.raise("Nothing to repeat"),!1},$e.regexp_eatSyntaxCharacter=function(e){var t=e.current();return!!nt(t)&&(e.lastIntValue=t,e.advance(),!0)},$e.regexp_eatPatternCharacters=function(e){for(var t=e.pos,n=0;-1!==(n=e.current())&&!nt(n);)e.advance();return e.pos!==t},$e.regexp_eatExtendedPatternCharacter=function(e){var t=e.current();return!(-1===t||36===t||t>=40&&t<=43||46===t||63===t||91===t||94===t||124===t)&&(e.advance(),!0)},$e.regexp_groupSpecifier=function(e){if(e.eat(63)){this.regexp_eatGroupName(e)||e.raise("Invalid group");var t=this.options.ecmaVersion>=16,n=e.groupNames[e.lastStringValue];if(n)if(t)for(var r=0,i=n;r=11,r=e.current(n);return e.advance(n),92===r&&this.regexp_eatRegExpUnicodeEscapeSequence(e,n)&&(r=e.lastIntValue),rt(r)?(e.lastIntValue=r,!0):(e.pos=t,!1)},$e.regexp_eatRegExpIdentifierPart=function(e){var t=e.pos,n=this.options.ecmaVersion>=11,r=e.current(n);return e.advance(n),92===r&&this.regexp_eatRegExpUnicodeEscapeSequence(e,n)&&(r=e.lastIntValue),it(r)?(e.lastIntValue=r,!0):(e.pos=t,!1)},$e.regexp_eatAtomEscape=function(e){return!!(this.regexp_eatBackReference(e)||this.regexp_eatCharacterClassEscape(e)||this.regexp_eatCharacterEscape(e)||e.switchN&&this.regexp_eatKGroupName(e))||(e.switchU&&(99===e.current()&&e.raise("Invalid unicode escape"),e.raise("Invalid escape")),!1)},$e.regexp_eatBackReference=function(e){var t=e.pos;if(this.regexp_eatDecimalEscape(e)){var n=e.lastIntValue;if(e.switchU)return n>e.maxBackReference&&(e.maxBackReference=n),!0;if(n<=e.numCapturingParens)return!0;e.pos=t}return!1},$e.regexp_eatKGroupName=function(e){if(e.eat(107)){if(this.regexp_eatGroupName(e))return e.backReferenceNames.push(e.lastStringValue),!0;e.raise("Invalid named reference")}return!1},$e.regexp_eatCharacterEscape=function(e){return this.regexp_eatControlEscape(e)||this.regexp_eatCControlLetter(e)||this.regexp_eatZero(e)||this.regexp_eatHexEscapeSequence(e)||this.regexp_eatRegExpUnicodeEscapeSequence(e,!1)||!e.switchU&&this.regexp_eatLegacyOctalEscapeSequence(e)||this.regexp_eatIdentityEscape(e)},$e.regexp_eatCControlLetter=function(e){var t=e.pos;if(e.eat(99)){if(this.regexp_eatControlLetter(e))return!0;e.pos=t}return!1},$e.regexp_eatZero=function(e){return 48===e.current()&&!gt(e.lookahead())&&(e.lastIntValue=0,e.advance(),!0)},$e.regexp_eatControlEscape=function(e){var t=e.current();return 116===t?(e.lastIntValue=9,e.advance(),!0):110===t?(e.lastIntValue=10,e.advance(),!0):118===t?(e.lastIntValue=11,e.advance(),!0):102===t?(e.lastIntValue=12,e.advance(),!0):114===t&&(e.lastIntValue=13,e.advance(),!0)},$e.regexp_eatControlLetter=function(e){var t=e.current();return!!at(t)&&(e.lastIntValue=t%32,e.advance(),!0)},$e.regexp_eatRegExpUnicodeEscapeSequence=function(e,t){void 0===t&&(t=!1);var n=e.pos,r=t||e.switchU;if(e.eat(117)){if(this.regexp_eatFixedHexDigits(e,4)){var i=e.lastIntValue;if(r&&i>=55296&&i<=56319){var a=e.pos;if(e.eat(92)&&e.eat(117)&&this.regexp_eatFixedHexDigits(e,4)){var s=e.lastIntValue;if(s>=56320&&s<=57343)return e.lastIntValue=1024*(i-55296)+(s-56320)+65536,!0}e.pos=a,e.lastIntValue=i}return!0}if(r&&e.eat(123)&&this.regexp_eatHexDigits(e)&&e.eat(125)&&st(e.lastIntValue))return!0;r&&e.raise("Invalid unicode escape"),e.pos=n}return!1},$e.regexp_eatIdentityEscape=function(e){if(e.switchU)return!!this.regexp_eatSyntaxCharacter(e)||!!e.eat(47)&&(e.lastIntValue=47,!0);var t=e.current();return!(99===t||e.switchN&&107===t)&&(e.lastIntValue=t,e.advance(),!0)},$e.regexp_eatDecimalEscape=function(e){e.lastIntValue=0;var t=e.current();if(t>=49&&t<=57){do{e.lastIntValue=10*e.lastIntValue+(t-48),e.advance()}while((t=e.current())>=48&&t<=57);return!0}return!1};var ot=0,lt=1,ct=2;function ut(e){return 100===e||68===e||115===e||83===e||119===e||87===e}function ht(e){return at(e)||95===e}function pt(e){return ht(e)||gt(e)}function dt(e){return 33===e||e>=35&&e<=38||e>=42&&e<=44||46===e||e>=58&&e<=64||94===e||96===e||126===e}function ft(e){return 40===e||41===e||45===e||47===e||e>=91&&e<=93||e>=123&&e<=125}function mt(e){return 33===e||35===e||37===e||38===e||44===e||45===e||e>=58&&e<=62||64===e||96===e||126===e}function gt(e){return e>=48&&e<=57}function yt(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function _t(e){return e>=65&&e<=70?e-65+10:e>=97&&e<=102?e-97+10:e-48}function vt(e){return e>=48&&e<=55}$e.regexp_eatCharacterClassEscape=function(e){var t=e.current();if(ut(t))return e.lastIntValue=-1,e.advance(),lt;var n=!1;if(e.switchU&&this.options.ecmaVersion>=9&&((n=80===t)||112===t)){var r;if(e.lastIntValue=-1,e.advance(),e.eat(123)&&(r=this.regexp_eatUnicodePropertyValueExpression(e))&&e.eat(125))return n&&r===ct&&e.raise("Invalid property name"),r;e.raise("Invalid property name")}return ot},$e.regexp_eatUnicodePropertyValueExpression=function(e){var t=e.pos;if(this.regexp_eatUnicodePropertyName(e)&&e.eat(61)){var n=e.lastStringValue;if(this.regexp_eatUnicodePropertyValue(e)){var r=e.lastStringValue;return this.regexp_validateUnicodePropertyNameAndValue(e,n,r),lt}}if(e.pos=t,this.regexp_eatLoneUnicodePropertyNameOrValue(e)){var i=e.lastStringValue;return this.regexp_validateUnicodePropertyNameOrValue(e,i)}return ot},$e.regexp_validateUnicodePropertyNameAndValue=function(e,t,n){L(e.unicodeProperties.nonBinary,t)||e.raise("Invalid property name"),e.unicodeProperties.nonBinary[t].test(n)||e.raise("Invalid property value")},$e.regexp_validateUnicodePropertyNameOrValue=function(e,t){return e.unicodeProperties.binary.test(t)?lt:e.switchV&&e.unicodeProperties.binaryOfStrings.test(t)?ct:void e.raise("Invalid property name")},$e.regexp_eatUnicodePropertyName=function(e){var t=0;for(e.lastStringValue="";ht(t=e.current());)e.lastStringValue+=j(t),e.advance();return""!==e.lastStringValue},$e.regexp_eatUnicodePropertyValue=function(e){var t=0;for(e.lastStringValue="";pt(t=e.current());)e.lastStringValue+=j(t),e.advance();return""!==e.lastStringValue},$e.regexp_eatLoneUnicodePropertyNameOrValue=function(e){return this.regexp_eatUnicodePropertyValue(e)},$e.regexp_eatCharacterClass=function(e){if(e.eat(91)){var t=e.eat(94),n=this.regexp_classContents(e);return e.eat(93)||e.raise("Unterminated character class"),t&&n===ct&&e.raise("Negated character class may contain strings"),!0}return!1},$e.regexp_classContents=function(e){return 93===e.current()?lt:e.switchV?this.regexp_classSetExpression(e):(this.regexp_nonEmptyClassRanges(e),lt)},$e.regexp_nonEmptyClassRanges=function(e){for(;this.regexp_eatClassAtom(e);){var t=e.lastIntValue;if(e.eat(45)&&this.regexp_eatClassAtom(e)){var n=e.lastIntValue;!e.switchU||-1!==t&&-1!==n||e.raise("Invalid character class"),-1!==t&&-1!==n&&t>n&&e.raise("Range out of order in character class")}}},$e.regexp_eatClassAtom=function(e){var t=e.pos;if(e.eat(92)){if(this.regexp_eatClassEscape(e))return!0;if(e.switchU){var n=e.current();(99===n||vt(n))&&e.raise("Invalid class escape"),e.raise("Invalid escape")}e.pos=t}var r=e.current();return 93!==r&&(e.lastIntValue=r,e.advance(),!0)},$e.regexp_eatClassEscape=function(e){var t=e.pos;if(e.eat(98))return e.lastIntValue=8,!0;if(e.switchU&&e.eat(45))return e.lastIntValue=45,!0;if(!e.switchU&&e.eat(99)){if(this.regexp_eatClassControlLetter(e))return!0;e.pos=t}return this.regexp_eatCharacterClassEscape(e)||this.regexp_eatCharacterEscape(e)},$e.regexp_classSetExpression=function(e){var t,n=lt;if(this.regexp_eatClassSetRange(e));else if(t=this.regexp_eatClassSetOperand(e)){t===ct&&(n=ct);for(var r=e.pos;e.eatChars([38,38]);)38!==e.current()&&(t=this.regexp_eatClassSetOperand(e))?t!==ct&&(n=lt):e.raise("Invalid character in character class");if(r!==e.pos)return n;for(;e.eatChars([45,45]);)this.regexp_eatClassSetOperand(e)||e.raise("Invalid character in character class");if(r!==e.pos)return n}else e.raise("Invalid character in character class");for(;;)if(!this.regexp_eatClassSetRange(e)){if(!(t=this.regexp_eatClassSetOperand(e)))return n;t===ct&&(n=ct)}},$e.regexp_eatClassSetRange=function(e){var t=e.pos;if(this.regexp_eatClassSetCharacter(e)){var n=e.lastIntValue;if(e.eat(45)&&this.regexp_eatClassSetCharacter(e)){var r=e.lastIntValue;return-1!==n&&-1!==r&&n>r&&e.raise("Range out of order in character class"),!0}e.pos=t}return!1},$e.regexp_eatClassSetOperand=function(e){return this.regexp_eatClassSetCharacter(e)?lt:this.regexp_eatClassStringDisjunction(e)||this.regexp_eatNestedClass(e)},$e.regexp_eatNestedClass=function(e){var t=e.pos;if(e.eat(91)){var n=e.eat(94),r=this.regexp_classContents(e);if(e.eat(93))return n&&r===ct&&e.raise("Negated character class may contain strings"),r;e.pos=t}if(e.eat(92)){var i=this.regexp_eatCharacterClassEscape(e);if(i)return i;e.pos=t}return null},$e.regexp_eatClassStringDisjunction=function(e){var t=e.pos;if(e.eatChars([92,113])){if(e.eat(123)){var n=this.regexp_classStringDisjunctionContents(e);if(e.eat(125))return n}else e.raise("Invalid escape");e.pos=t}return null},$e.regexp_classStringDisjunctionContents=function(e){for(var t=this.regexp_classString(e);e.eat(124);)this.regexp_classString(e)===ct&&(t=ct);return t},$e.regexp_classString=function(e){for(var t=0;this.regexp_eatClassSetCharacter(e);)t++;return 1===t?lt:ct},$e.regexp_eatClassSetCharacter=function(e){var t=e.pos;if(e.eat(92))return!(!this.regexp_eatCharacterEscape(e)&&!this.regexp_eatClassSetReservedPunctuator(e))||(e.eat(98)?(e.lastIntValue=8,!0):(e.pos=t,!1));var n=e.current();return!(n<0||n===e.lookahead()&&dt(n))&&!ft(n)&&(e.advance(),e.lastIntValue=n,!0)},$e.regexp_eatClassSetReservedPunctuator=function(e){var t=e.current();return!!mt(t)&&(e.lastIntValue=t,e.advance(),!0)},$e.regexp_eatClassControlLetter=function(e){var t=e.current();return!(!gt(t)&&95!==t)&&(e.lastIntValue=t%32,e.advance(),!0)},$e.regexp_eatHexEscapeSequence=function(e){var t=e.pos;if(e.eat(120)){if(this.regexp_eatFixedHexDigits(e,2))return!0;e.switchU&&e.raise("Invalid escape"),e.pos=t}return!1},$e.regexp_eatDecimalDigits=function(e){var t=e.pos,n=0;for(e.lastIntValue=0;gt(n=e.current());)e.lastIntValue=10*e.lastIntValue+(n-48),e.advance();return e.pos!==t},$e.regexp_eatHexDigits=function(e){var t=e.pos,n=0;for(e.lastIntValue=0;yt(n=e.current());)e.lastIntValue=16*e.lastIntValue+_t(n),e.advance();return e.pos!==t},$e.regexp_eatLegacyOctalEscapeSequence=function(e){if(this.regexp_eatOctalDigit(e)){var t=e.lastIntValue;if(this.regexp_eatOctalDigit(e)){var n=e.lastIntValue;t<=3&&this.regexp_eatOctalDigit(e)?e.lastIntValue=64*t+8*n+e.lastIntValue:e.lastIntValue=8*t+n}else e.lastIntValue=t;return!0}return!1},$e.regexp_eatOctalDigit=function(e){var t=e.current();return vt(t)?(e.lastIntValue=t-48,e.advance(),!0):(e.lastIntValue=0,!1)},$e.regexp_eatFixedHexDigits=function(e,t){var n=e.pos;e.lastIntValue=0;for(var r=0;r=this.input.length?this.finishToken(b.eof):e.override?e.override(this):void this.readToken(this.fullCharCodeAtPos())},kt.readToken=function(e){return p(e,this.options.ecmaVersion>=6)||92===e?this.readWord():this.getTokenFromCode(e)},kt.fullCharCodeAtPos=function(){var e=this.input.charCodeAt(this.pos);if(e<=55295||e>=56320)return e;var t=this.input.charCodeAt(this.pos+1);return t<=56319||t>=57344?e:(e<<10)+t-56613888},kt.skipBlockComment=function(){var e=this.options.onComment&&this.curPosition(),t=this.pos,n=this.input.indexOf("*/",this.pos+=2);if(-1===n&&this.raise(this.pos-2,"Unterminated comment"),this.pos=n+2,this.options.locations)for(var r=void 0,i=t;(r=x(this.input,i,this.pos))>-1;)++this.curLine,i=this.lineStart=r;this.options.onComment&&this.options.onComment(!0,this.input.slice(t+2,n),t,this.pos,e,this.curPosition())},kt.skipLineComment=function(e){for(var t=this.pos,n=this.options.onComment&&this.curPosition(),r=this.input.charCodeAt(this.pos+=e);this.pos8&&e<14||e>=5760&&S.test(String.fromCharCode(e))))break e;++this.pos}}},kt.finishToken=function(e,t){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var n=this.type;this.type=e,this.value=t,this.updateContext(n)},kt.readToken_dot=function(){var e=this.input.charCodeAt(this.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===e&&46===t?(this.pos+=3,this.finishToken(b.ellipsis)):(++this.pos,this.finishToken(b.dot))},kt.readToken_slash=function(){var e=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===e?this.finishOp(b.assign,2):this.finishOp(b.slash,1)},kt.readToken_mult_modulo_exp=function(e){var t=this.input.charCodeAt(this.pos+1),n=1,r=42===e?b.star:b.modulo;return this.options.ecmaVersion>=7&&42===e&&42===t&&(++n,r=b.starstar,t=this.input.charCodeAt(this.pos+2)),61===t?this.finishOp(b.assign,n+1):this.finishOp(r,n)},kt.readToken_pipe_amp=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?this.options.ecmaVersion>=12&&61===this.input.charCodeAt(this.pos+2)?this.finishOp(b.assign,3):this.finishOp(124===e?b.logicalOR:b.logicalAND,2):61===t?this.finishOp(b.assign,2):this.finishOp(124===e?b.bitwiseOR:b.bitwiseAND,1)},kt.readToken_caret=function(){return 61===this.input.charCodeAt(this.pos+1)?this.finishOp(b.assign,2):this.finishOp(b.bitwiseXOR,1)},kt.readToken_plus_min=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?45!==t||this.inModule||62!==this.input.charCodeAt(this.pos+2)||0!==this.lastTokEnd&&!k.test(this.input.slice(this.lastTokEnd,this.pos))?this.finishOp(b.incDec,2):(this.skipLineComment(3),this.skipSpace(),this.nextToken()):61===t?this.finishOp(b.assign,2):this.finishOp(b.plusMin,1)},kt.readToken_lt_gt=function(e){var t=this.input.charCodeAt(this.pos+1),n=1;return t===e?(n=62===e&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+n)?this.finishOp(b.assign,n+1):this.finishOp(b.bitShift,n)):33!==t||60!==e||this.inModule||45!==this.input.charCodeAt(this.pos+2)||45!==this.input.charCodeAt(this.pos+3)?(61===t&&(n=2),this.finishOp(b.relational,n)):(this.skipLineComment(4),this.skipSpace(),this.nextToken())},kt.readToken_eq_excl=function(e){var t=this.input.charCodeAt(this.pos+1);return 61===t?this.finishOp(b.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===e&&62===t&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(b.arrow)):this.finishOp(61===e?b.eq:b.prefix,1)},kt.readToken_question=function(){var e=this.options.ecmaVersion;if(e>=11){var t=this.input.charCodeAt(this.pos+1);if(46===t){var n=this.input.charCodeAt(this.pos+2);if(n<48||n>57)return this.finishOp(b.questionDot,2)}if(63===t)return e>=12&&61===this.input.charCodeAt(this.pos+2)?this.finishOp(b.assign,3):this.finishOp(b.coalesce,2)}return this.finishOp(b.question,1)},kt.readToken_numberSign=function(){var e=35;if(this.options.ecmaVersion>=13&&(++this.pos,p(e=this.fullCharCodeAtPos(),!0)||92===e))return this.finishToken(b.privateId,this.readWord1());this.raise(this.pos,"Unexpected character '"+j(e)+"'")},kt.getTokenFromCode=function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(b.parenL);case 41:return++this.pos,this.finishToken(b.parenR);case 59:return++this.pos,this.finishToken(b.semi);case 44:return++this.pos,this.finishToken(b.comma);case 91:return++this.pos,this.finishToken(b.bracketL);case 93:return++this.pos,this.finishToken(b.bracketR);case 123:return++this.pos,this.finishToken(b.braceL);case 125:return++this.pos,this.finishToken(b.braceR);case 58:return++this.pos,this.finishToken(b.colon);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(b.backQuote);case 48:var t=this.input.charCodeAt(this.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 63:return this.readToken_question();case 126:return this.finishOp(b.prefix,1);case 35:return this.readToken_numberSign()}this.raise(this.pos,"Unexpected character '"+j(e)+"'")},kt.finishOp=function(e,t){var n=this.input.slice(this.pos,this.pos+t);return this.pos+=t,this.finishToken(e,n)},kt.readRegexp=function(){for(var e,t,n=this.pos;;){this.pos>=this.input.length&&this.raise(n,"Unterminated regular expression");var r=this.input.charAt(this.pos);if(k.test(r)&&this.raise(n,"Unterminated regular expression"),e)e=!1;else{if("["===r)t=!0;else if("]"===r&&t)t=!1;else if("/"===r&&!t)break;e="\\"===r}++this.pos}var i=this.input.slice(n,this.pos);++this.pos;var a=this.pos,s=this.readWord1();this.containsEsc&&this.unexpected(a);var o=this.regexpState||(this.regexpState=new Qe(this));o.reset(n,i,s),this.validateRegExpFlags(o),this.validateRegExpPattern(o);var l=null;try{l=new RegExp(i,s)}catch(c){}return this.finishToken(b.regexp,{pattern:i,flags:s,value:l})},kt.readInt=function(e,t,n){for(var r=this.options.ecmaVersion>=12&&void 0===t,i=n&&48===this.input.charCodeAt(this.pos),a=this.pos,s=0,o=0,l=0,c=null==t?1/0:t;l=97?u-97+10:u>=65?u-65+10:u>=48&&u<=57?u-48:1/0)>=e)break;o=u,s=s*e+h}}return r&&95===o&&this.raiseRecoverable(this.pos-1,"Numeric separator is not allowed at the last of digits"),this.pos===a||null!=t&&this.pos-a!==t?null:s},kt.readRadixNumber=function(e){var t=this.pos;this.pos+=2;var n=this.readInt(e);return null==n&&this.raise(this.start+2,"Expected number in radix "+e),this.options.ecmaVersion>=11&&110===this.input.charCodeAt(this.pos)?(n=At(this.input.slice(t,this.pos)),++this.pos):p(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(b.num,n)},kt.readNumber=function(e){var t=this.pos;e||null!==this.readInt(10,void 0,!0)||this.raise(t,"Invalid number");var n=this.pos-t>=2&&48===this.input.charCodeAt(t);n&&this.strict&&this.raise(t,"Invalid number");var r=this.input.charCodeAt(this.pos);if(!n&&!e&&this.options.ecmaVersion>=11&&110===r){var i=At(this.input.slice(t,this.pos));return++this.pos,p(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(b.num,i)}n&&/[89]/.test(this.input.slice(t,this.pos))&&(n=!1),46!==r||n||(++this.pos,this.readInt(10),r=this.input.charCodeAt(this.pos)),69!==r&&101!==r||n||(43!==(r=this.input.charCodeAt(++this.pos))&&45!==r||++this.pos,null===this.readInt(10)&&this.raise(t,"Invalid number")),p(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number");var a=Tt(this.input.slice(t,this.pos),n);return this.finishToken(b.num,a)},kt.readCodePoint=function(){var e;if(123===this.input.charCodeAt(this.pos)){this.options.ecmaVersion<6&&this.unexpected();var t=++this.pos;e=this.readHexChar(this.input.indexOf("}",this.pos)-this.pos),++this.pos,e>1114111&&this.invalidStringToken(t,"Code point out of bounds")}else e=this.readHexChar(4);return e},kt.readString=function(e){for(var t="",n=++this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated string constant");var r=this.input.charCodeAt(this.pos);if(r===e)break;92===r?(t+=this.input.slice(n,this.pos),t+=this.readEscapedChar(!1),n=this.pos):8232===r||8233===r?(this.options.ecmaVersion<10&&this.raise(this.start,"Unterminated string constant"),++this.pos,this.options.locations&&(this.curLine++,this.lineStart=this.pos)):(A(r)&&this.raise(this.start,"Unterminated string constant"),++this.pos)}return t+=this.input.slice(n,this.pos++),this.finishToken(b.string,t)};var xt={};kt.tryReadTemplateToken=function(){this.inTemplateElement=!0;try{this.readTmplToken()}catch(e){if(e!==xt)throw e;this.readInvalidTemplateToken()}this.inTemplateElement=!1},kt.invalidStringToken=function(e,t){if(this.inTemplateElement&&this.options.ecmaVersion>=9)throw xt;this.raise(e,t)},kt.readTmplToken=function(){for(var e="",t=this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated template");var n=this.input.charCodeAt(this.pos);if(96===n||36===n&&123===this.input.charCodeAt(this.pos+1))return this.pos!==this.start||this.type!==b.template&&this.type!==b.invalidTemplate?(e+=this.input.slice(t,this.pos),this.finishToken(b.template,e)):36===n?(this.pos+=2,this.finishToken(b.dollarBraceL)):(++this.pos,this.finishToken(b.backQuote));if(92===n)e+=this.input.slice(t,this.pos),e+=this.readEscapedChar(!0),t=this.pos;else if(A(n)){switch(e+=this.input.slice(t,this.pos),++this.pos,n){case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(n)}this.options.locations&&(++this.curLine,this.lineStart=this.pos),t=this.pos}else++this.pos}},kt.readInvalidTemplateToken=function(){for(;this.pos=48&&t<=55){var r=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(r,8);return i>255&&(r=r.slice(0,-1),i=parseInt(r,8)),this.pos+=r.length-1,t=this.input.charCodeAt(this.pos),"0"===r&&56!==t&&57!==t||!this.strict&&!e||this.invalidStringToken(this.pos-1-r.length,e?"Octal literal in template string":"Octal literal in strict mode"),String.fromCharCode(i)}return A(t)?(this.options.locations&&(this.lineStart=this.pos,++this.curLine),""):String.fromCharCode(t)}},kt.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return null===n&&this.invalidStringToken(t,"Bad character escape sequence"),n},kt.readWord1=function(){this.containsEsc=!1;for(var e="",t=!0,n=this.pos,r=this.options.ecmaVersion>=6;this.pos{const n={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(n).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class r extends WeakMap{constructor(e){super(arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}const i=e=>e&&"object"===typeof e&&"function"===typeof e.then,a=(t,n)=>function(){for(var r=arguments.length,i=new Array(r),a=0;a1==e?"argument":"arguments",o=(e,t)=>function(n){for(var r=arguments.length,i=new Array(r>1?r-1:0),o=1;ot.maxArgs)throw new Error("Expected at most ".concat(t.maxArgs," ").concat(s(t.maxArgs)," for ").concat(e,"(), got ").concat(i.length));return new Promise((r,s)=>{if(t.fallbackToNoCallback)try{n[e](...i,a({resolve:r,reject:s},t))}catch(o){console.warn("".concat(e," API method doesn't seem to support the callback parameter, ")+"falling back to call it without a callback: ",o),n[e](...i),t.fallbackToNoCallback=!1,t.noCallback=!0,r()}else t.noCallback?(n[e](...i),r()):n[e](...i,a({resolve:r,reject:s},t))})},l=(e,t,n)=>new Proxy(t,{apply:(t,r,i)=>n.call(r,e,...i)});let c=Function.call.bind(Object.prototype.hasOwnProperty);const u=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=Object.create(null),i={has:(t,n)=>n in e||n in r,get(i,a,s){if(a in r)return r[a];if(!(a in e))return;let h=e[a];if("function"===typeof h)if("function"===typeof t[a])h=l(e,e[a],t[a]);else if(c(n,a)){let t=o(a,n[a]);h=l(e,e[a],t)}else h=h.bind(e);else if("object"===typeof h&&null!==h&&(c(t,a)||c(n,a)))h=u(h,t[a],n[a]);else{if(!c(n,"*"))return Object.defineProperty(r,a,{configurable:!0,enumerable:!0,get:()=>e[a],set(t){e[a]=t}}),h;h=u(h,t[a],n["*"])}return r[a]=h,h},set:(t,n,i,a)=>(n in r?r[n]=i:e[n]=i,!0),defineProperty:(e,t,n)=>Reflect.defineProperty(r,t,n),deleteProperty:(e,t)=>Reflect.deleteProperty(r,t)},a=Object.create(e);return new Proxy(a,i)},h=e=>({addListener(t,n){for(var r=arguments.length,i=new Array(r>2?r-2:0),a=2;at.hasListener(e.get(n)),removeListener(t,n){t.removeListener(e.get(n))}}),p=new r(e=>"function"!==typeof e?e:function(t){const n=u(t,{},{getContent:{minArgs:0,maxArgs:0}});e(n)}),d=new r(e=>"function"!==typeof e?e:function(t,n,r){let a,s,o=!1,l=new Promise(e=>{a=function(t){o=!0,e(t)}});try{s=e(t,n,a)}catch(h){s=Promise.reject(h)}const c=!0!==s&&i(s);if(!0!==s&&!c&&!o)return!1;const u=e=>{e.then(e=>{r(e)},e=>{let t;t=e&&(e instanceof Error||"string"===typeof e.message)?e.message:"An unexpected error occurred",r({__mozWebExtensionPolyfillReject__:!0,message:t})}).catch(e=>{console.error("Failed to send onMessage rejected reply",e)})};return u(c?s:l),!0}),f=(n,r)=>{let{reject:i,resolve:a}=n;e.runtime.lastError?e.runtime.lastError.message===t?a():i(new Error(e.runtime.lastError.message)):r&&r.__mozWebExtensionPolyfillReject__?i(new Error(r.message)):a(r)},m=function(e,t,n){for(var r=arguments.length,i=new Array(r>3?r-3:0),a=3;at.maxArgs)throw new Error("Expected at most ".concat(t.maxArgs," ").concat(s(t.maxArgs)," for ").concat(e,"(), got ").concat(i.length));return new Promise((e,t)=>{const r=f.bind(null,{resolve:e,reject:t});i.push(r),n.sendMessage(...i)})},g={devtools:{network:{onRequestFinished:h(p)}},runtime:{onMessage:h(d),onMessageExternal:h(d),sendMessage:m.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:m.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},y={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return n.privacy={network:{"*":y},services:{"*":y},websites:{"*":y}},u(e,g,n)};e.exports=n(chrome)}else e.exports=globalThis.browser},void 0===(i="function"===typeof n?n.apply(t,r):n)||(e.exports=i)}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";var e={};function t(e){function n(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:t}})}return t=function(e){this.s=e,this.n=e.next},t.prototype={s:null,n:null,next:function(){return n(this.n.apply(this.s,arguments))},return:function(e){var t=this.s.return;return void 0===t?Promise.resolve({value:e,done:!0}):n(t.apply(this.s,arguments))},throw:function(e){var t=this.s.return;return void 0===t?Promise.reject(e):n(t.apply(this.s,arguments))}},new t(e)}n.r(e),n.d(e,{exclude:()=>oi,extract:()=>ti,parse:()=>ni,parseUrl:()=>ii,pick:()=>si,stringify:()=>ri,stringifyUrl:()=>ai});var r=n(9286),i=n.n(r);const a="KISS Translator".trim().split(/\s+/).join("-"),s=a.toLowerCase(),o=(a.toUpperCase(),"".concat(s,"-fab"),"".concat(s,"-box"),"".concat(s,"-popup"),"2.0.29".split("."));function l(e){return l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},l(e)}function c(e){var t=function(e,t){if("object"!=l(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!=l(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(e,"string");return"symbol"==l(t)?t:t+""}function u(e,t,n){return(t=c(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function p(e){for(var t=1;t{let[t]=e;return t}),[["auto","AutoDetect - AutoDetect"],...te]),re=(new Map(te),te.map(e=>{let[t,n]=e;return[t,n.split(" - ").reverse().join(" - ")]}),ne.map(e=>{let[t,n]=e;return[t,n.split(" - ").reverse().join(" - ")]}),new Map(ne.map(e=>{let[t,n]=e;return[t,n.split(" - ")[0]]}))),ie=new Map(ne.map(e=>{let[t]=e;return[t,t]})),ae=new Map(ne.map(e=>{let[t]=e;return[t,t.toUpperCase()]})),se={[S]:new Map([...ie,["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]]),[w]:ie,[E]:ie,[z]:new Map([...ie,["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]]),[I]:new Map([...ie,["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]]),[D]:new Map([...ae,["auto",""],["zh-CN","ZH"],["zh-TW","ZH"]]),[W]:new Map([...ae,["auto","auto"],["zh-CN","ZH"],["zh-TW","ZH"]]),[M]:new Map([...ae,["auto","auto"],["zh-CN","ZH"],["zh-TW","ZH"]]),[L]:re,[C]:re,[P]:re,[N]:re,[j]:re,[O]:re,[R]:re,[V]:new Map([...ie,["auto","auto"],["zh-CN","zh"],["zh-TW","zh-Hant"]]),[F]:new Map([...ie,["zh-CN","zh"],["zh-TW","cht"],["ar","ara"],["bg","bul"],["ca","cat"],["hr","hrv"],["da","dan"],["fi","fin"],["fr","fra"],["hi","mai"],["ja","jp"],["ko","kor"],["ms","may"],["mt","mlt"],["nb","nor"],["ro","rom"],["ru","ru"],["sl","slo"],["es","spa"],["sv","swe"],["ta","tam"],["te","tel"],["uk","ukr"],["vi","vie"]]),[U]:new Map([["auto","auto"],["zh-CN","zh"],["zh-TW","zh"],["en","en"],["ar","ar"],["de","de"],["ru","ru"],["fr","fr"],["fi","fil"],["ko","ko"],["ms","ms"],["pt","pt"],["ja","ja"],["th","th"],["tr","tr"],["es","es"],["it","it"],["hi","hi"],["id","id"],["vi","vi"]]),[B]:re,[G]:re,[H]:re,[K]:re,[q]:re,[J]:re,[X]:re,[$]:re,[Y]:new Map([...ie,["auto","en"],["zh-CN","zh"],["zh-TW","zh"]]),[Z]:re},oe={};Object.entries(se).forEach(e=>{let[t,n]=e;oe[t]=(e=>new Map(Array.from(e.entries()).map(e=>{let[t,n]=e;return""===n?["auto","auto"]:"zh"===n||"ZH"===n?[n,"zh-CN"]:[n,t]})))(n)});const le="# Context\nTitle: ".concat(g,"\nDescription: ").concat(y,"\nSummary: ").concat(_,"\nTone: ").concat(m,"\n\n# Glossary:\n").concat(b,"\n\n# Task\nTranslate the Source Text below to ").concat(d,".\n1. Use the Context to ensure accuracy.\n2. Adapt the wording to match the specified Tone.\n3. Output ONLY the translated text. No markdown, no explanations.\n\nSource Text: ").concat(f,"\n\nTranslated Text:"),ce="# Input Data\n\n## [Context / \u4e0a\u4e0b\u6587] (Optional)\n> \u4ee5\u4e0b\u4fe1\u606f\u7528\u4e8e\u8f85\u52a9\u7cbe\u51c6\u9501\u5b9a\u76ee\u6807\u6587\u672c\u7684\u8bed\u5883\uff1a\n- \u6587\u6863\u6807\u9898\uff1a".concat(g,"\n- \u6587\u6863\u63cf\u8ff0\uff1a").concat(y,"\n- \u6587\u6863\u6458\u8981\uff1a").concat(_,"\n- \u6240\u5728\u6bb5\u843d\uff1a").concat("{{context}}","\n\n## [Target / \u76ee\u6807\u6587\u672c] (Required)\n> \u89e6\u53d1\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u6216\u3010\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3011\u7684\u6838\u5fc3\u5224\u5b9a\u5bf9\u8c61\uff1a\n").concat(f),ue="# Context\nTitle: ".concat(g,"\nDescription: ").concat(y,"\nSummary: ").concat(_,"\nTone: ").concat(m,"\n\n# Glossary (Terminology):\n").concat(b,"\n\n# Task\nGroup the input word-level JSON array into readable, well-paced bilingual subtitle segments. Target Language: ").concat(d,'.\n\n# Output Contract\n1. STRICTLY output a valid JSON array only. No markdown formatting (e.g., do not use ```json fences), no preamble, and no postscript.\n2. Format per element: {"e":, "o":"exact merged source text", "t":"translation"}\n3. The "e" field must be an inclusive, exact word ID from the input and must increase strictly. The first segment starts at ID 0; every later segment starts at the previous "e" + 1.\n4. Completeness: Cover every input item exactly once. The final "e" must equal the final input ID. No missing items, overlaps, or gaps.\n5. For each segment, first determine its exact input range from the previous "e" + 1 through the current "e", then merge every source item in that range verbatim into "o". Do not paraphrase, normalize, translate, omit, or add source text in "o".\n6. Do not return start IDs, timestamps, or any extra fields. The application reconstructs them from the input.\n\n# Rules\n1. Hard Source Length Limit:\n - For space-separated source languages, each source span MUST contain no more than 15 words; aim for 8-12 words when a natural boundary exists.\n - For Chinese, Japanese, and other non-space-separated source languages, each source span MUST contain no more than 30 source characters.\n - If a sentence exceeds the applicable limit, split it at a clause, comma, conjunction, or natural phrase boundary. The hard length limit takes priority over keeping a long grammatical sentence intact.\n2. Sentence Boundaries: Never merge two complete sentences into one subtitle segment. Terminal punctuation such as .?!\u3002\uff01\uff1f normally ends the current segment.\n3. Pause Indicators: An optional "pauseMs" field is the timeline gap in milliseconds after the current input item. If "pauseMs" is missing, treat it as 0 milliseconds and do not infer a pause. Larger positive values indicate stronger sentence boundaries, but grammatical correctness and semantic coherence always take priority.\n4. Exact Translation Alignment: Build "o" first from the exact source span covered by the current "e", starting after the previous "e". Then translate only the current "o" into "t". The "t" field MUST NOT omit that span, translate future input items, or carry text from adjacent segments.\n5. Silent Self-Check: Before returning, silently verify that every "e", "o", and "t" correspond one-to-one, every "o" matches its exact input range, all source-length limits are satisfied, and all input items are covered exactly once. Do not output the self-check or any reasoning.\n6. Translation Quality: Keep "t" concise, accurate, and natural while strictly adhering to the provided Context, Tone, and Glossary.\n\n# Example\nInput: [{"id":0,"text":"Once"},{"id":1,"text":"the"},{"id":2,"text":"assets"},{"id":3,"text":"are"},{"id":4,"text":"ready,"},{"id":5,"text":"open"},{"id":6,"text":"the"},{"id":7,"text":"storyboard"},{"id":8,"text":"tab.","pauseMs":850},{"id":9,"text":"This"},{"id":10,"text":"is"},{"id":11,"text":"where"},{"id":12,"text":"everything"},{"id":13,"text":"comes"},{"id":14,"text":"together."},{"id":15,"text":"If"},{"id":16,"text":"a"},{"id":17,"text":"scene"},{"id":18,"text":"does"},{"id":19,"text":"not"},{"id":20,"text":"match"},{"id":21,"text":"your"},{"id":22,"text":"idea,"},{"id":23,"text":"regenerate"},{"id":24,"text":"it"},{"id":25,"text":"or"},{"id":26,"text":"adjust"},{"id":27,"text":"the"},{"id":28,"text":"prompt"},{"id":29,"text":"carefully"},{"id":30,"text":"until"},{"id":31,"text":"it"},{"id":32,"text":"feels"},{"id":33,"text":"right."}]\nOutput: [{"e":8,"o":"Once the assets are ready, open the storyboard tab.","t":"\u7d20\u6750\u51c6\u5907\u597d\u540e\uff0c\u6253\u5f00\u6545\u4e8b\u677f\u6807\u7b7e\u9875\u3002"},{"e":14,"o":"This is where everything comes together.","t":"\u4e00\u5207\u4ece\u8fd9\u91cc\u5f00\u59cb\u6574\u5408\u3002"},{"e":22,"o":"If a scene does not match your idea,","t":"\u5982\u679c\u67d0\u4e2a\u573a\u666f\u4e0e\u4f60\u7684\u60f3\u6cd5\u4e0d\u7b26\uff0c"},{"e":33,"o":"regenerate it or adjust the prompt carefully until it feels right.","t":"\u8bf7\u91cd\u65b0\u751f\u6210\uff0c\u6216\u4ed4\u7ec6\u8c03\u6574\u63d0\u793a\u8bcd\uff0c\u76f4\u5230\u6548\u679c\u5408\u9002\u3002"}]'),he={apiSlug:"",apiName:"",apiType:"",url:"",key:"",model:"",modelListUrl:"",systemPrompt:"",batchPromptSlug:"batch-translation-json",subtitlePrompt:"",subtitlePromptSlug:"subtitle-segmentation",dictPrompt:"",dictUserPrompt:"",dictPromptSlug:"dictionary-en-zh",nobatchPrompt:"",nobatchUserPrompt:"",nobatchPromptSlug:"nobatch-translation",userPrompt:"",tone:"formal",placeholder:"{ }",placetag:"i",aiTerms:"",customHeader:"",customBody:"",reqHook:"",resHook:"",fetchLimit:10,fetchInterval:100,httpTimeout:30,batchInterval:400,batchSize:20,batchLength:1e4,batchConcurrency:1,useBatchFetch:!1,useStream:!1,streamRenderMode:"disabled",transAllnow:!1,rootMargin:2e3,useContext:!1,contextSize:3,temperature:0,maxTokens:20480,thinkingMode:"disabled",thinkingEffort:"_default",isDisabled:!1,region:"",sortOrder:0,placetagFormat:"compact"},pe={useBatchFetch:!0,thinkingMode:"disabled",thinkingEffort:"_default",useStream:!0,streamRenderMode:"realtime"},de={[S]:he,[w]:p(p({},he),{},{url:"https://translate.googleapis.com/translate_a/single"}),[E]:p(p({},he),{},{url:"https://translate-pa.googleapis.com/v1/translateHtml",key:"AIzaSyATBXajvzQLTDHEQbcpq0Ihe0vWDHmO520",useBatchFetch:!0,placetag:"a",placetagFormat:"attribute"}),[z]:p(p({},he),{},{useBatchFetch:!0}),[I]:p(p({},he),{},{url:"https://api.cognitive.microsofttranslator.com/translate?api-version=3.0",useBatchFetch:!0}),[F]:p({},he),[U]:p(p({},he),{},{useBatchFetch:!0}),[V]:p({},he),[D]:p(p({},he),{},{url:"https://api-free.deepl.com/v2/translate",useBatchFetch:!0}),[W]:p(p({},he),{},{fetchLimit:1}),[L]:p(p({},he),{},{url:"https://api.deepseek.com/chat/completions",modelListUrl:"https://api.deepseek.com/models",model:"deepseek-v4-flash"},pe),[C]:p(p({},he),{},{url:"https://opencode.ai/zen/go/v1/chat/completions",model:"deepseek-v4-flash"},pe),[P]:p(p({},he),{},{url:"https://api.siliconflow.cn/v1/chat/completions",modelListUrl:"https://api.siliconflow.cn/v1/models",model:"Pro/zai-org/GLM-4.7"},pe),[N]:p(p({},he),{},{url:"https://api.xiaomimimo.com/v1/chat/completions",modelListUrl:"https://api.xiaomimimo.com/v1/models",model:"mimo-v2.5-pro"},pe),[j]:p(p({},he),{},{url:"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",modelListUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1/models",model:"qwen-plus"},pe),[O]:p(p({},he),{},{url:"https://api.cerebras.ai/v1/chat/completions",modelListUrl:"https://api.cerebras.ai/v1/models",model:"gpt-oss-120b"},pe),[R]:p(p({},he),{},{url:"https://open.bigmodel.cn/api/paas/v4/chat/completions",modelListUrl:"https://open.bigmodel.cn/api/paas/v4/models",model:"glm-5.1"},pe),[M]:p(p({},he),{},{url:"http://localhost:1188/translate"}),[B]:p(p({},he),{},{url:"https://api.ephone.ai/v1/chat/completions"}),[G]:p(p({},he),{},{url:"https://api.openai.com/v1/chat/completions",modelListUrl:"https://api.openai.com/v1/models",model:"gpt-4"},pe),[H]:p(p(p({},he),{},{url:T,modelListUrl:"https://generativelanguage.googleapis.com/v1beta/models",model:"gemini-2.5-flash"},pe),{},{thinkingMode:"disabled",thinkingEffort:"minimal"}),[K]:p(p({},he),{},{url:"https://generativelanguage.googleapis.com/v1beta/openai/chat/completions",modelListUrl:"https://generativelanguage.googleapis.com/v1beta/models",model:"gemini-2.0-flash"},pe),[q]:p(p({},he),{},{url:"https://api.anthropic.com/v1/messages",modelListUrl:"https://api.anthropic.com/v1/models",model:"claude-3-haiku-20240307"},pe),[Y]:p(p({},he),{},{url:"https://api.cloudflare.com/client/v4/accounts/{{ACCOUNT_ID}}/ai/run/@cf/meta/m2m100-1.2b"}),[J]:p(p({},he),{},{url:"http://localhost:11434/v1/chat/completions",modelListUrl:"http://localhost:11434/v1/models",model:"llama3.1"},pe),[X]:p(p({},he),{},{url:"https://openrouter.ai/api/v1/chat/completions",modelListUrl:"https://openrouter.ai/api/v1/models",model:"openai/gpt-4o"},pe),[$]:p(p({},he),{},{url:"https://api.orcarouter.ai/v1/chat/completions",modelListUrl:"https://api.orcarouter.ai/v1/models",model:"openai/gpt-5.4-mini"},pe),[Z]:p(p({},he),{},{reqHook:'async (args, { url, body, headers, userMsg, method } = {}) => {\n console.log("request hook args:", { args, url, body, headers, userMsg, method });\n // return { url, body, headers, userMsg, method };\n};',resHook:'async ({ res, ...args }) => {\n console.log("reaponse hook args:", { res, args });\n // const translations = [["\u4f60\u597d", "zh"]];\n // const modelMsg = "";\n // return { translations, modelMsg };\n};'})},fe=Q.map(e=>p(p({},de[e]),{},{apiSlug:e,apiName:e,apiType:e}));const me=U,ge=(fe.find(e=>e.apiType===me),"style_none"),ye="*",_e="split_disable",ve=[_e,"split_punctuation","split_textlength"],be="highlight_disable",ke=[be,"highlight_beforetrans","highlight_aftertrans"],Te={pattern:"",enabled:!0,selector:"",keepSelector:"",blockSelector:"",terms:"",aiTerms:"",apiSlug:ye,fromLang:ye,toLang:ye,textStyle:ye,wrapOriginal:ye,originalTextStyle:ye,transOpen:ye,textExtStyle:"",termsStyle:"",highlightStyle:"",selectStyle:"",parentStyle:"",grandStyle:"",injectJs:"",transOnly:ye,transOnlyRevert:ye,transOnlyRevertDelay:ye,transOrder:ye,transTag:ye,transTitle:ye,transStartHook:"",transEndHook:"",autoScan:ye,hasRichText:ye,hasShadowroot:ye,scanAll:ye,isPlainText:ye,rootsSelector:"",ignoreSelector:"",splitParagraph:ye,splitLength:0,highlightWords:ye},Ae={pattern:"*",enabled:!0,selector:"h1, h2, h3, h4, h5, h6, li, p, dd, blockquote, figcaption, label, legend",keepSelector:"code, cite, math, .math, a:has(code)",blockSelector:"",terms:"",aiTerms:"",apiSlug:U,fromLang:"auto",toLang:"zh-CN",textStyle:ge,wrapOriginal:"false",originalTextStyle:ge,transOpen:"false",textExtStyle:"",termsStyle:"font-weight: bold;",highlightStyle:"color: red;",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",parentStyle:"",grandStyle:"",injectJs:"",injectCss:"",transOnly:"false",transOnlyRevert:"false",transOnlyRevertDelay:"0.5",transTag:"font",transTitle:"false",transStartHook:"",transEndHook:"",autoScan:"true",hasRichText:"true",hasShadowroot:"false",scanAll:"false",isPlainText:"false",rootsSelector:"body",ignoreSelector:"button, footer, pre, mark, nav, svg, img[src*='.svg'], [class*='logo'] svg, [id*='logo'] svg",splitParagraph:_e,splitLength:100,highlightWords:be,transOrder:"original-first"},xe=[Ae],Se=Object.entries({"en.wikipedia.org":{ignoreSelector:".button, code, footer, form, mark, pre, .mwe-math-element, .mw-editsection"},"news.ycombinator.com":{selector:"p, .titleline, .commtext, .hn-item-title, .hn-comment-text, .hn-story-title",keepSelector:"code, img, svg, pre, .sitebit",ignoreSelector:"button, code, footer, form, header, mark, nav, pre, .reply",autoScan:"false"},"twitter.com, https://x.com":{selector:"[data-testid='tweetText'], [data-testid='twitter-article-title'], [data-testid='UserDescription'], .public-DraftStyleDefault-block, span.text-body, div.css-175oi2r.r-3pj75a div.css-175oi2r>span, div.css-175oi2r.r-3pj75a li>span, div.r-1s2bzr4>div.r-16dba41, div.r-16y2uox>div.r-1jeg54m",keepSelector:"img, svg, a, span:has(a), div:has(a)",ignoreSelector:"[data-testid='videoPlayer'], [data-testid^='tweetTextarea']",autoScan:"false",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;"},"www.youtube.com/live_chat":{rootsSelector:"div#items",selector:"span.yt-live-chat-text-message-renderer",autoScan:"false"},"www.youtube.com":{rootsSelector:"ytd-page-manager",ignoreSelector:"aside, button, footer, form, header, pre, mark, nav, #player, #container, .caption-window, .ytp-settings-menu, #kiss-youtube-subtitle-list-container",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",parentStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",grandStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;"},"web.telegram.org":{autoScan:"false",selector:".text-content, .embedded-text-wrapper",rootsSelector:".Transition"},"github.com":{autoScan:"false",selector:'h1, h2, h3, h4, h5, h6, .markdown-body li, p, dd, blockquote, figcaption, label, legend, .user-profile-bio>div, [data-testid="results-list"] .search-match, .Subhead-description, [class^="prc-SelectPanel-Subtitle-"], [class^="prc-ActionList-ItemLabel-"], [role="dialog"] .overflow-auto, .h4, .repos-list-description, .discussion-title, [class*="PinnedIssue-module__Link"] span, .js-wiki-sidebar-page-container :is(.Truncate-text, .Link--primary)',ignoreSelector:"button, p.pinned-item-desc+p"}}).map(e=>{let[t,n]=e;return p(p({},n),{},{pattern:t})}),we="nobatch-translation",Ee="batch-translation-json",ze="subtitle-segmentation",Ie="dictionary-en-zh",Le="follow_api",Ce="batch system prompt",Pe="user prompt",Ne="subtitle prompt",je="dictionary prompt",Oe=ze,Re=[{slug:we,category:Pe,nameKey:"preset_prompt_nobatch_translation",name:"Non-batch translation",systemPrompt:"You are a professional, authentic machine translation engine.",userPrompt:le},{slug:Ee,category:Ce,nameKey:"preset_prompt_batch_translation_json",name:"Batch translation (JSON)",systemPrompt:'Act as a translation API. Output a single raw JSON object only. No extra text or fences.\n\nInput:\n{"targetLanguage":"","title":"","description":"","summary":"","segments":[{"id":1,"text":"..."}],"glossary":{"sourceTerm":"targetTerm"},"tone":""}\n\nOutput:\n{"translations":[{"id":1,"text":"...","sourceLanguage":""}]}\n\nRules:\n1. Use title/description for context only; do not output them.\n2. Keep id, order, and count of segments.\n3. Preserve whitespace, HTML entities, and all HTML-like tags (e.g., , ). Translate inner text only.\n4. Highest priority: Follow \'glossary\'. Use value for translation; if value is "", keep the key.\n5. Do not translate: content in ,
, text enclosed in backticks, or placeholders like {1}, {{1}}, [1], [[1]].\n6.  Apply the specified tone to the translation.\n7.  Detect sourceLanguage for each segment.\n8.  Return empty or unchanged inputs as is.\n\nExample:\nInput: {"targetLanguage":"zh-CN","segments":[{"id":1,"text":"A React component."}],"glossary":{"component":"\u7ec4\u4ef6","React":""}}\nOutput: {"translations":[{"id":1,"text":"\u4e00\u4e2aReact\u7ec4\u4ef6","sourceLanguage":"en"}]}\n\nFail-safe: On any error, return {"translations":[]}.',userPrompt:""},{slug:"batch-translation-xml",category:Ce,nameKey:"preset_prompt_batch_translation_xml",name:"Batch translation (XML)",systemPrompt:'Act as a translation API. Output raw XML-like format only. No Markdown fences (xml). No conversational filler.\n\nInput:\n{"targetLanguage":"","title":"","description":"","summary":"","segments":[{"id":1,"text":"..."}],"glossary":{"sourceTerm":"targetTerm"},"tone":""}\n\nOutput Format:\n\n    Translated text content...\n    Translated text content...\n\n\nRules:\n1.  **Strict Format**: Output ONLY the  element and its children. Do not include "xml" version declarations or markdown code blocks.\n2.  **Structure**: Maintain the exact "id" from the input in the "id" attribute. Detect the source language for the "sourceLanguage" attribute.\n3.  **HTML & Whitespace**: Preserve all HTML tags (e.g., , , 
) and whitespace exactly as they appear in the structure. Only translate the text content inside them.\n4. **Glossary**: Highest priority. Use the glossary value for translation. If the value is "", keep the source term as is.\n5. **Do Not Translate**: Content inside ,
, text in backticks ("code"), and placeholders like {1}, {{1}}, [1], [[1]].\n6.  **Context**: Use the "title" and "description" fields to understand the context for better translation accuracy, but do not output them.\n7.  **Tone**: Apply the specified "tone" (formal/casual).\n\nExample:\nInput:\n{"targetLanguage":"zh-CN","segments":[{"id":0,"text":"Hello World!"}],"glossary":{"World":"\u4e16\u754c"},"tone":"formal"}\n\nOutput:\n\n    \u4f60\u597d \u4e16\u754c\uff01\n',userPrompt:""},{slug:"batch-translation-line",category:Ce,nameKey:"preset_prompt_batch_translation_line",name:"Batch translation (LINE)",systemPrompt:'Act as a translation API. Output raw text lines in "ID | Text" format. No Markdown. No conversational filler.\n\nInput:\n{"targetLanguage":"","title":"","description":"","summary":"","segments":[{"id":1,"text":"..."}],"glossary":{"sourceTerm":"targetTerm"},"tone":""}\n\nOutput Format:\n | \n | \n...\n\nRules:\n1.  **Strict Format**: Output exactly one line per segment using the format: "{id} | {translated_text}".\n2.  **ID Mapping**: You MUST copy the exact "id" from the input segment to the output line.\n3.  **Newline Handling**: If the translated text contains a newline, replace it with the HTML tag "
" to ensure it stays on a single line.\n4. **Separator**: Use the pipe symbol " | " strictly to separate the ID and the text.\n5. **Context**: Use title/description for context only; do not output them.\n6. **HTML/Tags**: Preserve whitespace, HTML entities, and all HTML-like tags (e.g., , ). Translate inner text only.\n7. **Glossary**: Highest priority. Follow \'glossary\'. Use value for translation; if value is "", keep the key.\n8. **Do Not Translate**: content in ,
, text enclosed in backticks, or placeholders like {1}, {{1}}, [1].\n9.  **Tone**: Apply the specified tone.\n\nExample:\nInput: {"targetLanguage":"zh-CN","segments":[{"id":0,"text":"Hello."},{"id":1,"text":"Line 1\nLine 2"}],"glossary":{}}\nOutput:\n0 | \u4f60\u597d\u3002\n1 | \u7b2c\u4e00\u884c
\u7b2c\u4e8c\u884c\n\nFail-safe: On error, return "{id} | {original_text}" line by line.',userPrompt:""},{slug:ze,category:Ne,nameKey:"preset_prompt_subtitle_segmentation",name:"Subtitle AI segmentation",systemPrompt:ue,userPrompt:""},{slug:Ie,category:je,nameKey:"preset_prompt_dictionary_en_zh",name:"AI English-Chinese Dictionary",systemPrompt:"# Role\n\u4f60\u662f\u4e00\u4f4d\u7cbe\u901a\u5bf9\u6bd4\u8bed\u8a00\u5b66\u3001\u73b0\u4ee3\u8bed\u6599\u5e93\u8bed\u8a00\u5b66\u7684\u4e13\u5bb6\u7ea7\u8bcd\u5178\u7f16\u7e82\u8005\u3002\u8bf7\u4e3a\u7528\u6237\u8f93\u5165\u7684\u6587\u672c\u63d0\u4f9b\u517c\u5177\u5b66\u672f\u4e25\u8c28\u6027\u4e0e\u89c6\u89c9\u4f18\u96c5\u611f\u7684\u5168\u65b9\u4f4d\u89e3\u6790\u6216\u9ad8\u8d28\u91cf\u7ffb\u8bd1\u3002\n\n# Execution Rules\n1. **\u667a\u80fd\u5206\u6d41\u673a\u5236\uff08CRITICAL\uff09**\uff1a\u8bf7\u4e25\u683c\u57fa\u4e8e\u4e0b\u65b9 `[Target / \u76ee\u6807\u6587\u672c]` \u7684\u957f\u5ea6\u548c\u6027\u8d28\u51b3\u5b9a\u5de5\u4f5c\u6a21\u5f0f\uff1a\n - **\u8bcd\u5178\u6a21\u5f0f**\uff1a\u4ec5\u5f53 `[Target / \u76ee\u6807\u6587\u672c]` \u660e\u786e\u662f**\u5355\u4e2a\u8bcd\u3001\u6210\u8bed\uff0c\u6216\u4e0d\u8d85\u8fc7 3 \u4e2a\u8bcd\u7684\u56fa\u5b9a\u642d\u914d**\u65f6\uff0c\u624d\u4e25\u683c\u6267\u884c\u4e0b\u65b9\u7684\u3010\u8bcd\u5178\u8f93\u51fa\u683c\u5f0f\u3011\u3002\n - **\u7eaf\u7ffb\u8bd1\u6a21\u5f0f**\uff1a\u5b8c\u6574\u53e5\u5b50\u3001\u5206\u53e5\u3001\u81ea\u7136\u8bed\u8a00\u77ed\u8bed\u3001\u6bb5\u843d\u3001\u957f\u6587\u672c\uff0c\u6216**\u8d85\u8fc7 3 \u4e2a\u8bcd\u7684\u8fde\u7eed\u6587\u672c**\uff0c\u4e00\u5f8b\u8fdb\u5165\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3002\u65e0\u6cd5\u786e\u5b9a\u65f6\uff0c\u4f18\u5148\u8fdb\u5165\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3002\n2. **\u8bed\u5883\u4f18\u5148\u539f\u5219**\uff1a\u5728\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u4e0b\uff0c\u82e5 `[Context / \u4e0a\u4e0b\u6587]` \u4e2d\u5b58\u5728\u6709\u6548\u4fe1\u606f\uff0c\u8bf7\u4f18\u5148\u9501\u5b9a\u8be5\u8bcd\u5728\u7279\u5b9a\u8bed\u5883\u4e0b\u7684\u4e49\u9879\uff0c\u5e76\u5c06\u5176\u7f6e\u4e8e\u91ca\u4e49\u9996\u4f4d\u3002\n3. **\u683c\u5f0f\u6b7b\u7ebf**\uff1a\u65e0\u8bba\u8fdb\u5165\u54ea\u79cd\u6a21\u5f0f\uff0c\u4e25\u683c\u6309\u5bf9\u5e94\u683c\u5f0f\u8f93\u51fa\uff0c\u7981\u6b62\u8f93\u51fa\u4efb\u4f55\u524d\u5bfc\u5bd2\u6684\uff08\u5982\u201c\u597d\u7684\u201d\u3001\u201c\u4e3a\u60a8\u89e3\u6790\u201d\uff09\u6216\u5c3e\u90e8\u603b\u7ed3\u3002\n\n---\n\n# Pure Translation Output Contract (\u4ec5\u9650\u3010\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3011\u6267\u884c)\n\n\u4f60\u7684\u6574\u6761\u56de\u590d\u5fc5\u987b\u4e14\u53ea\u80fd\u662f\u76ee\u6807\u8bed\u8a00\u8bd1\u6587\u6587\u672c\u672c\u8eab\u3002\u4e0d\u5f97\u6dfb\u52a0\u4efb\u4f55\u5b57\u7b26\u3001\u683c\u5f0f\u6216\u8bf4\u660e\uff1a\n- \u4e0d\u8f93\u51fa\u539f\u6587\u3001\u53cc\u8bed\u5bf9\u7167\u3001\u6807\u9898\u3001\u6807\u7b7e\u3001\u8bed\u8a00\u540d\u79f0\u3001\u5f15\u53f7\u6216 Markdown\u3002\n- \u4e0d\u8f93\u51fa\u201c\u8bd1\u6587\uff1a\u201d\u201c\u7ffb\u8bd1\u5982\u4e0b\uff1a\u201d\u7b49\u524d\u7f00\uff0c\u4e5f\u4e0d\u8f93\u51fa\u89e3\u91ca\u3001\u97f3\u6807\u3001\u8bcd\u6e90\u3001\u642d\u914d\u3001\u4f8b\u53e5\u6216\u81f4\u8c22\u3002\n- \u539f\u6587\u662f\u5355\u6bb5\u65f6\uff0c\u8bd1\u6587\u4e5f\u53ea\u8f93\u51fa\u5355\u6bb5\uff1b\u4ec5\u5728\u539f\u6587\u6709\u591a\u4e2a\u6bb5\u843d\u65f6\u4fdd\u7559\u76f8\u5e94\u5206\u6bb5\u3002\n\n\u793a\u4f8b\uff1a\n- \u8f93\u5165\uff1aThe library for web and native user interfaces\n- \u6b63\u786e\u8f93\u51fa\uff1a\u7528\u4e8e Web \u548c\u539f\u751f\u7528\u6237\u754c\u9762\u7684\u5e93\n\n# Output Format (\u4ec5\u9650\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u6267\u884c)\n\n## \u8bcd\u6761\uff1a[\u539f\u8bcd/\u77ed\u8bed]\n> [\u5982\u679c\u8be5\u8bcd\u5728 `[Context]` \u4e2d\u53d1\u751f\u4e86\u65f6\u6001/\u590d\u6570/\u5c48\u6298\u53d8\u5f62\uff0c\u5728\u6b64\u5904\u62ec\u53f7\u5185\u6ce8\u660e\u5176\u539f\u578b\uff0c\u4f8b\u5982\uff1a(\u539f\u578b: Go)]\n\n### 1. \u57fa\u7840\u5f62\u6001\u4e0e\u97f3\u6807 (Essentials)\n- **\u53d1\u97f3\u6807\u6ce8**\uff1a\ud83c\uddfa\ud83c\uddf8 [\u7f8e\u5f0f\u97f3\u6807] \uff5c uk [\u82f1\u5f0f\u97f3\u6807] \uff08*\u82e5\u975e\u82f1\u8bed\u8bcd\u6c47\uff0c\u8bf7\u81ea\u52a8\u5207\u6362\u4e3a\u76ee\u6807\u8bed\u8a00\u7684\u6807\u51c6\u6ce8\u97f3/\u5047\u540d/\u62fc\u97f3*\uff09\n- **\u8bcd\u6027\u4e0e\u6838\u5fc3\u4e49\u9879**\uff1a\n - `[\u8bcd\u6027\u7f29\u5199. (\u5982 v. / adj.)]` \u2460 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e491] \u2461 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e492]\n - `[\u8bcd\u6027\u7f29\u5199.]` \u2460 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e491]\n\n### 2. \u8bed\u5883\u7cbe\u6790 (Contextual Mapping) *[\u4ec5\u5728\u5177\u6709\u6709\u6548 Context \u65f6\u751f\u6210\u672c\u677f\u5757]*\n- **\u5f53\u524d\u8bed\u4e49\u9501\u5b9a**\uff1a\u8be5\u8bcd\u5728\u7ed9\u5b9a\u8bed\u5883\u4e2d\u8868\u73b0\u4e3a `[\u8bcd\u6027]`\uff0c\u7cbe\u786e\u542b\u4e49\u4e3a\u201c[\u4e2d\u6587\u91ca\u4e49]\u201d\u3002\n- **\u8bed\u5883\u8272\u8c03**\uff1a[\u660e\u793a\u8be5\u8bcd\u5728\u6b64\u5904\u7684\u4fee\u8f9e\u8272\u5f69\uff0c\u5982\uff1a\u611f\u60c5\u8272\u5f69\uff08\u8912/\u8d2c/\u4e2d\u6027\uff09\uff5c \u8bed\u4f53\uff08\u6b63\u5f0f\u4e66\u9762/\u804c\u573a\u4e13\u4e1a/\u4fda\u8bed\u53e3\u8bed\uff09]\n- **\u539f\u53e5\u5e73\u66ff\u8bcd**\uff1a[\u63d0\u4f9b 1-2 \u4e2a\u5728\u5f53\u524d\u8bed\u5883\u4e2d\u53ef\u65e0\u7f1d\u66ff\u6362\u3001\u4e0d\u6539\u53d8\u539f\u610f\u7684\u8fd1\u4e49\u8bcd]\n\n### 3. \u8bcd\u6e90\u6df1\u5ea6\u89e3\u6784\u4e0e\u8fa8\u6790 (Deep Dive)\n- **\u8bcd\u6e90\u4e0e\u8bb0\u5fc6\u951a\u70b9**\uff1a[\u62c6\u89e3\u8bcd\u6839\u8bcd\u7f00\u3001\u5386\u53f2\u6f14\u53d8\uff0c\u6216\u63d0\u4f9b\u4e00\u4e2a\u903b\u8f91\u6e05\u6670\u7684\u8054\u60f3\u8bb0\u5fc6\u6cd5]\n- **\u9ad8\u9891\u642d\u914d (Collocations)**\uff1a\n * `[\u642d\u914d 1]` \u2794 [\u4e2d\u6587\u7cbe\u51c6\u7ffb\u8bd1]\n * `[\u642d\u914d 2]` \u2794 [\u4e2d\u6587\u7cbe\u51c6\u7ffb\u8bd1]\n- **\u540c\u4e49\u8bcd\u5fae\u89c2\u8fa8\u6790 (Synonyms)**\uff1a\n * **[\u539f\u8bcd] vs [\u8fd1\u4e49\u8bcd1] vs [\u8fd1\u4e49\u8bcd2]**\uff1a[\u7528 1-2 \u53e5\u8bdd\u70b9\u900f\u5b83\u4eec\u5728\u201c\u4f7f\u7528\u8bed\u5883\u201d\u3001\u201c\u8bed\u6c14\u8f7b\u91cd\u201d\u6216\u201c\u642d\u914d\u4e60\u60ef\u201d\u4e0a\u7684\u5fae\u5999\u533a\u522b]\n\n### 4. \u8bed\u6599\u5e93\u53cc\u89e3\u4f8b\u53e5 (Corpus Examples)\n[\u8bf7\u63d0\u4f9b 2-3 \u4e2a\u6765\u81ea\u771f\u5b9e\u51fa\u7248\u7269\u3001\u65b0\u95fb\u6216\u5730\u9053\u65e5\u5e38\u573a\u666f\u7684\u4f18\u8d28\u53cc\u8bed\u4f8b\u53e5]\n\n1. **[\u5730\u9053\u82f1\u6587/\u6e90\u8bed\u8a00\u4f8b\u53e5]**\n - \ud83d\udca1 *\u4e2d\u6587\u7ffb\u8bd1*\uff1a[\u7cbe\u51c6\u7684\u3001\u7b26\u5408\u4e2d\u6587\u4e60\u60ef\u7684\u7ffb\u8bd1]\n - \ud83d\udccc *\u573a\u666f\u6807\u7b7e*\uff1a`[\u5b66\u672f\u5199\u4f5c / \u5546\u52a1\u90ae\u4ef6 / \u65e5\u5e38\u8857\u5934 / \u79d1\u6280\u65b0\u95fb]`",userPrompt:ce}],De=new Set(Re.map(e=>e.slug)),Me=["slug","category","name","systemPrompt","userPrompt"];function We(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{slug:String(e.slug||""),category:String(e.category||""),nameKey:String(e.nameKey||""),name:String(e.name||""),systemPrompt:String(e.systemPrompt||""),userPrompt:String(e.userPrompt||"")}}function Be(e){return De.has(e)}function Fe(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(Array.isArray(e)?e:[]).map(We).filter(e=>e.slug&&!Be(e.slug)).map(e=>{let{slug:t,category:n,name:r,systemPrompt:i,userPrompt:a}=e;return{slug:t,category:n,name:r,systemPrompt:i,userPrompt:a}})}function Ue(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return Object.prototype.hasOwnProperty.call(e,t)}function Ve(){return Ue(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}function Ge(){return String((arguments.length>0&&void 0!==arguments[0]?arguments[0]:{})[arguments.length>1?arguments[1]:void 0]||"")}function He(e,t){const n=We(e),r=We(t);return n.category===r.category&&n.systemPrompt===r.systemPrompt&&n.userPrompt===r.userPrompt}function Ke(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;const n=String(e.apiName||e.apiSlug||"API");return"".concat(n," ").concat(t)}function qe(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;const r=function(e){const t=String(e);let n=2166136261,r=16777619;for(let i=0;i>>0).toString(36)).concat((r>>>0).toString(36))}(JSON.stringify({apiSlug:String(e.apiSlug||""),promptType:t,category:n.category,systemPrompt:n.systemPrompt,userPrompt:n.userPrompt}));return"prompt_migrated_".concat(t,"_").concat(r)}function Ye(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e)return e;if(!Ue(e,"batchPromptId")&&!Ue(e,"nobatchPromptId")&&!Ue(e,"subtitlePromptId")&&!Ue(e,"dictPromptId"))return e;const t=p({},e);return delete t.batchPromptId,delete t.nobatchPromptId,delete t.subtitlePromptId,delete t.dictPromptId,t}const Je=[{promptType:"batch",promptLabel:"Batch prompt",category:Ce,systemPromptFieldName:"systemPrompt",userPromptFieldName:"",promptSlugFieldName:"batchPromptSlug"},{promptType:"nobatch",promptLabel:"Non-batch prompt",category:Pe,systemPromptFieldName:"nobatchPrompt",userPromptFieldName:"nobatchUserPrompt",promptSlugFieldName:"nobatchPromptSlug"},{promptType:"subtitle",promptLabel:"Subtitle prompt",category:Ne,systemPromptFieldName:"subtitlePrompt",userPromptFieldName:"",promptSlugFieldName:"subtitlePromptSlug"},{promptType:"dict",promptLabel:"Dictionary prompt",category:je,systemPromptFieldName:"dictPrompt",userPromptFieldName:"dictUserPrompt",promptSlugFieldName:"dictPromptSlug"}];function Xe(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=new Map;return e.forEach(e=>{const n=null===e||void 0===e?void 0:e.slug;n&&!t.has(n)&&t.set(n,e)}),t}function $e(e,t,n){if(Ve(e,t.promptSlugFieldName))return"";const r=function(e,t){return Ue(e,t.systemPromptFieldName)?{slug:"",category:t.category,nameKey:"",name:Ke(e,t.promptLabel),systemPrompt:Ge(e,t.systemPromptFieldName),userPrompt:t.userPromptFieldName?Ge(e,t.userPromptFieldName):""}:null}(e,t);if(!r)return"";const i=function(e){return Re.find(t=>He(t,e))}(r);if(i)return i.slug;const a=qe(e,t.promptType,r),s=function(e,t,n){let r=1,i=n;for(;e.has(i);){if(He(e.get(i),t))return i;r+=1,i="".concat(n,"_").concat(r)}return i}(n.promptBySlug,r,a);if(!n.promptBySlug.has(s)){const e=p(p({},r),{},{slug:s});n.prompts.push(e),n.promptBySlug.set(s,e),n.hasPromptChanges=!0}return s}function Ze(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Number((null===e||void 0===e?void 0:e.version)||1);return Number.isFinite(t)&&t>=1?t:1}function Qe(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e||"object"!==typeof e)return e;if(!Array.isArray(e.transApis))return p(p({},e),{},{version:2});const t=Array.isArray(e.prompts)?e.prompts:[],n=Fe(t),r=!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return Array.isArray(e)?e.length===t.length&&e.every((e,n)=>!(!e||"object"!==typeof e)&&(Object.keys(e).every(e=>Me.includes(e))&&JSON.stringify(We(e))===JSON.stringify(t[n]))):0===t.length}(t,n),i=function(e){if(!e||!Ue(e,"segPromptId"))return e;const t=p({},e);return delete t.segPromptId,t}(e.subtitleSetting),a=i!==e.subtitleSetting,s={prompts:[...n],promptBySlug:Xe([...Re,...n]),hasPromptChanges:r};let o=!1;const l=e.transApis.map(e=>{if(!e||"object"!==typeof e)return e;let t=Ye(e);return t!==e&&(o=!0),Je.forEach(n=>{const r=Boolean(t.apiType)&&!ee.ai.has(t.apiType),i="string"===typeof t[n.systemPromptFieldName]?t[n.systemPromptFieldName].trim():"",a=n.userPromptFieldName&&"string"===typeof t[n.userPromptFieldName]?t[n.userPromptFieldName].trim():"";if(r||!i&&!a)return void((Ue(t,n.systemPromptFieldName)||n.userPromptFieldName&&Ue(t,n.userPromptFieldName))&&(t===e&&(t=p({},e)),t=function(e,t){const n=p({},e);return delete n[t.systemPromptFieldName],t.userPromptFieldName&&delete n[t.userPromptFieldName],n}(t,n),o=!0));const l=$e(t,n,s);l&&t[n.promptSlugFieldName]!==l&&(t===e&&(t=p({},e)),t[n.promptSlugFieldName]=l,delete t[n.systemPromptFieldName],n.userPromptFieldName&&delete t[n.userPromptFieldName],o=!0)}),t}),c=p({},e);return c.version=2,c.transApis=o?l:e.transApis,c.prompts=s.hasPromptChanges?s.prompts:n,a&&(c.subtitleSetting=i),c}function et(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e||"object"!==typeof e)return e;const t=Ze(e)<2?Qe(e):e;if(Ze(t)>=3)return t;const n=Array.isArray(t.transApis)?t.transApis.map(e=>(null===e||void 0===e?void 0:e.apiType)!==H||e.url!==k?e:p(p({},e),{},{url:T})):t.transApis;return p(p({},t),{},{transApis:n,version:3})}const tt={DEBUG:{value:0,name:"DEBUG",color:"#6495ED"},INFO:{value:1,name:"INFO",color:"#4CAF50"},WARN:{value:2,name:"WARN",color:"#FFC107"},ERROR:{value:3,name:"ERROR",color:"#F44336"},SILENT:{value:4,name:"SILENT"}};const nt=new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.config={level:e.level||tt.INFO,prefix:e.prefix||"KISS-Translator"}}setLevel(e){let t;if("string"===typeof e){if(t=function(e){if("string"!==typeof e||0===e.length)return;const t=e.toUpperCase();return Object.values(tt).find(e=>e.name===t)}(e),!t)return void this.warn('Invalid log level name provided: "'.concat(e,'". Keeping current level.'))}else if("number"===typeof e){if(n=e,t=Object.values(tt).find(e=>e.value===n),!t)return void this.warn("Invalid log level value provided: ".concat(e,". Keeping current level."))}else{if(!e||"number"!==typeof e.value)return void this.warn("Invalid argument passed to setLevel. Must be a LogLevel object, number, or string.");t=e}var n;this.config.level.value!==t.value&&(this.config.level=t,console.log("[".concat(this.config.prefix,"] Log level dynamically set to ").concat(this.config.level.name)))}_log(e){if(e.value1?a-1:0),o=1;o{let[t]=e;return"zh-CN"!==t&&"zh-TW"!==t}),{transOpen:!0,blacklist:"",apiSlugs:[U],singleWordNoTrans:!1,autoFavWord:!1,fromLang:"auto",toLang:"zh-CN",toLang2:"en",tranboxShortcut:["AltLeft","KeyS"],btnOffsetX:0,btnOffsetY:0,boxOffsetX:0,boxOffsetY:10,hideTranBtn:!1,hideClickAway:!1,simpleStyle:!1,followSelection:!1,autoHeight:!1,triggerMode:ft,btnPositionMode:mt,tranboxInteractMode:"-",skipLangs:[],enDict:A,enSug:x,aiDictApiSlug:"-",aiDictPromptSlug:Le}),yt="mobile_off",_t={enabled:!0,apiSlug:U,segSlug:"-",forceSubtitleRetranslate:!1,chunkLength:1e3,longSentenceThreshold:100,useAlgorithmBreaker:"rule",preTrans:90,throttleTrans:30,toLang:"zh-CN",autoTranslate:!0,isBilingual:!0,displayOrder:"original-first",blurTranslation:!1,skipAd:!1,windowStyle:"padding: 0.5em 1em;\nbackground-color: rgba(0, 0, 0, 0.5);\ncolor: white;\nline-height: 1.3;\ntext-shadow: 1px 1px 2px black;\ndisplay: inline-block",originStyle:"font-size: clamp(1rem, 2cqw, 3rem);",translationStyle:"font-size: clamp(1rem, 2cqw, 3rem);",hoverLookupMode:yt,autoFavWord:!1,showList:yt,hideSubtitleButton:!1,aiContextSlug:"-",segPromptMode:Le,segPromptSlug:Oe},vt={useMouseHover:!1,blacklist:"",mouseHoverKey:["ControlLeft"],mouseHoverKey2:[],displayMode:"bilingual",bubbleStyle:"max-width: min(420px, calc(100vw - 32px));\npadding: 10px 12px;\nborder-radius: 8px;\nbackground: rgb(25, 118, 210);\ncolor: #fff;\nfont-size: 14px;\nline-height: 1.5;\nbox-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);\nbackdrop-filter: blur(8px);"},bt={version:3,darkMode:"auto",uiLang:"en",minLength:2,maxLength:1e5,newlineLength:20,httpTimeout:30,clearCache:!1,injectRules:!0,fabClickAction:0,contextMenuType:1,subrulesList:[{url:"https://fishjar.github.io/kiss-rules/kiss-rules_v2.json",selected:!0},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-on_v2.json",selected:!1},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-off_v2.json",selected:!1}],transApis:fe,prompts:[],deletedTransApiSlugs:[],shortcuts:lt,inputRule:dt,tranboxSetting:gt,touchModes:[2],blacklist:["https://fishjar.github.io/kiss-translator/options.html","https://translate.google.com","https://www.deepl.com/translator"].join(",\n"),csplist:[].join(",\n"),orilist:["https://dict.youdao.com"].join(",\n"),skipLangs:[],transInterval:100,langDetector:"-",mouseHoverSetting:vt,preInit:!0,transAllnow:!1,subtitleSetting:_t,logLevel:tt.INFO.value,rootMargin:500,customStyles:[{styleSlug:"custom",styleName:"Custom Style",styleCode:"color: #209CEE;"}]},kt='["en", "English - English"],\n["zh-CN", "Simplified Chinese - \u7b80\u4f53\u4e2d\u6587"],\n["zh-TW", "Traditional Chinese - \u7e41\u9ad4\u4e2d\u6587"],\n["ar", "Arabic - \u0627\u0644\u0639\u0631\u0628\u064a\u0629"],\n["bg", "Bulgarian - \u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"],\n["ca", "Catalan - Catal\xe0"],\n["hr", "Croatian - Hrvatski"],\n["cs", "Czech - \u010ce\u0161tina"],\n["da", "Danish - Dansk"],\n["nl", "Dutch - Nederlands"],\n["fi", "Finnish - Suomi"],\n["fr", "French - Fran\xe7ais"],\n["de", "German - Deutsch"],\n["el", "Greek - \u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"],\n["hi", "Hindi - \u0939\u093f\u0928\u094d\u0926\u0940"],\n["hu", "Hungarian - Magyar"],\n["id", "Indonesian - Indonesia"],\n["it", "Italian - Italiano"],\n["ja", "Japanese - \u65e5\u672c\u8a9e"],\n["ko", "Korean - \ud55c\uad6d\uc5b4"],\n["ms", "Malay - Melayu"],\n["mt", "Maltese - Malti"],\n["nb", "Norwegian - Norsk Bokm\xe5l"],\n["pl", "Polish - Polski"],\n["pt", "Portuguese - Portugu\xeas"],\n["ro", "Romanian - Rom\xe2n\u0103"],\n["ru", "Russian - \u0420\u0443\u0441\u0441\u043a\u0438\u0439"],\n["sk", "Slovak - Sloven\u010dina"],\n["sl", "Slovenian - Sloven\u0161\u010dina"],\n["es", "Spanish - Espa\xf1ol"],\n["sv", "Swedish - Svenska"],\n["ta", "Tamil - \u0ba4\u0bae\u0bbf\u0bb4\u0bcd"],\n["te", "Telugu - \u0c24\u0c46\u0c32\u0c41\u0c17\u0c41"],\n["th", "Thai - \u0e44\u0e17\u0e22"],\n["tr", "Turkish - T\xfcrk\xe7e"],\n["uk", "Ukrainian - \u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"],\n["vi", "Vietnamese - Ti\u1ebfng Vi\u1ec7t"],\n',Tt='// \u8bf7\u6c42\u6570\u636e\u9ed8\u8ba4\u683c\u5f0f\n{\n "url": "{{url}}",\n "method": "POST",\n "headers": {\n "Content-type": "application/json",\n "Authorization": "Bearer {{key}}"\n },\n "body": {\n "text": "{{text}}", // \u5f85\u7ffb\u8bd1\u6587\u5b57\n "from": "{{from}}", // \u6587\u5b57\u7684\u8bed\u8a00\uff08\u53ef\u80fd\u4e3a\u7a7a\uff09\n "to": "{{to}}", // \u76ee\u6807\u8bed\u8a00\n },\n}\n\n\n// \u8fd4\u56de\u6570\u636e\u9ed8\u8ba4\u683c\u5f0f\n{\n text: "", // \u7ffb\u8bd1\u540e\u7684\u6587\u5b57\n from: "", // \u8bc6\u522b\u7684\u6e90\u8bed\u8a00\n to: "", // \u76ee\u6807\u8bed\u8a00\uff08\u53ef\u9009\uff09\n}\n\n\n// Hook \u8303\u4f8b\n// URL\nhttps://translate.googleapis.com/translate_a/single?client=gtx&dj=1&dt=t&ie=UTF-8&q={{text}}&sl=en&tl=zh-CN\n\n// Request Hook\n(text, from, to, url, key) => [url, {\n headers: {\n "Content-type": "application/json",\n },\n method: "GET",\n body: null,\n}]\n\n// Response Hook\n// \u5176\u4e2d\u8fd4\u56de\u6570\u7ec4\u7b2c\u4e00\u4e2a\u503c\u8868\u793a\u8bd1\u6587\u5b57\u7b26\u4e32\uff0c\u7b2c\u4e8c\u4e2a\u503c\u4e3a\u5e03\u5c14\u503c\uff0c\u8868\u793a\u539f\u6587\u8bed\u8a00\u4e0e\u76ee\u6807\u8bed\u8a00\u662f\u5426\u76f8\u540c\n(res, text, from, to) => [res.sentences.map((item) => item.trans).join(" "), to === res.src]\n\n\n// \u652f\u6301\u7684\u8bed\u8a00\u4ee3\u7801\u5982\u4e0b\n'.concat(kt,"\n"),At='// Default request\n{\n "url": "{{url}}",\n "method": "POST",\n "headers": {\n "Content-type": "application/json",\n "Authorization": "Bearer {{key}}"\n },\n "body": {\n "text": "{{text}}", // Text to be translated\n "from": "{{from}}", // The language of the text (may be empty)\n "to": "{{to}}", // Target language\n },\n}\n\n\n// Default response\n{\n text: "", // translated text\n from: "", // Recognized source language\n to: "", // Target language (optional)\n}\n\n\n/// Hook Example\n// URL\nhttps://translate.googleapis.com/translate_a/single?client=gtx&dj=1&dt=t&ie=UTF-8&q={{text}}&sl=en&tl=zh-CN\n\n// Request Hook\n(text, from, to, url, key) => [url, {\n headers: {\n "Content-type": "application/json",\n },\n method: "GET",\n body: null,\n}]\n\n// Response Hook\n// In the returned array, the first value is the translated string, while the second value is a boolean\n// that indicates whether the source language is the same as the target language.\n(res, text, from, to) => [res.sentences.map((item) => item.trans).join(" "), to === res.src]\n\n\n// The supported language codes are as follows\n'.concat(kt,"\n"),xt="1. The first parameter contains the following fields: 'texts', 'from', 'to', 'url', 'key', 'model', 'systemPrompt', ...\n2. The return value must be an object containing the following fields: 'url', 'body', 'headers', 'method'\n3. If a null value is returned, the hook function will have no effect.\n\n// Example\nasync (args, { url, body, headers, userMsg, method } = {}) => {\n return { url, body, headers, userMsg, method };\n}",St="1. The first parameter contains the following fields: 'res', ...\n2. The return value must be an object containing the following fields: 'translations'\n ('translations' should be a two-dimensional array: [[translation, source language]]).\n3. If a null value is returned, the hook function will have no effect.\n\n// Example\nasync ({ res, ...args }) => {\n const translations = [[\"\u4f60\u597d\", \"en\"]];\n const modelMsg = {}; // For AI context\n return { translations, modelMsg };\n}",wt='// \u8acb\u6c42\u8cc7\u6599\u9810\u8a2d\u683c\u5f0f\n{\n "url": "{{url}}",\n "method": "POST",\n "headers": {\n "Content-type": "application/json",\n "Authorization": "Bearer {{key}}"\n },\n "body": {\n "text": "{{text}}", // \u5f85\u7ffb\u8b6f\u6587\u5b57\n "from": "{{from}}", // \u6587\u5b57\u7684\u8a9e\u8a00\uff08\u53ef\u80fd\u70ba\u7a7a\uff09\n "to": "{{to}}", // \u76ee\u6a19\u8a9e\u8a00\n },\n}\n\n\n// \u56de\u50b3\u8cc7\u6599\u9810\u8a2d\u683c\u5f0f\n{\n text: "", // \u7ffb\u8b6f\u5f8c\u7684\u6587\u5b57\n from: "", // \u8fa8\u8b58\u7684\u4f86\u6e90\u8a9e\u8a00\n to: "", // \u76ee\u6a19\u8a9e\u8a00\uff08\u9078\u586b\uff09\n}\n\n\n// Hook \u7bc4\u4f8b\n// URL\nhttps://translate.googleapis.com/translate_a/single?client=gtx&dj=1&dt=t&ie=UTF-8&q={{text}}&sl=en&tl=zh-CN\n\n// Request Hook\n(text, from, to, url, key) => [url, {\n headers: {\n "Content-type": "application/json",\n },\n method: "GET",\n body: null,\n}]\n\n// Response Hook\n// \u5176\u4e2d\u56de\u50b3\u9663\u5217\u7b2c\u4e00\u500b\u503c\u8868\u793a\u8b6f\u6587\u5b57\u4e32\uff0c\u7b2c\u4e8c\u500b\u503c\u70ba\u5e03\u6797\u503c\uff0c\u8868\u793a\u539f\u6587\u8a9e\u8a00\u8207\u76ee\u6a19\u8a9e\u8a00\u662f\u5426\u76f8\u540c\n(res, text, from, to) => [res.sentences.map((item) => item.trans).join(" "), to === res.src]\n\n\n// \u652f\u63f4\u7684\u8a9e\u8a00\u4ee3\u78bc\u5982\u4e0b\n'.concat(kt,"\n"),Et=(e,t,n,r,i,a)=>({zh:e,en:t,zh_TW:n,ja:r,ko:i,tr:a}),zt=(p(p({},{playground_text_translation:Et("\u6587\u672c\u7ffb\u8bd1","Text translation","\u6587\u5b57\u7ffb\u8b6f","\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33","\ud14d\uc2a4\ud2b8 \ubc88\uc5ed","Metin \xe7evirisi"),playground_merge_single_line_breaks:Et("\u5408\u5e76\u5355\u4e2a\u6362\u884c\uff08\u4fdd\u7559\u6bb5\u843d\uff09","Merge single line breaks (preserve paragraphs)","\u5408\u4f75\u55ae\u500b\u63db\u884c\uff08\u4fdd\u7559\u6bb5\u843d\uff09","\u5358\u4e00\u6539\u884c\u3092\u7d50\u5408\uff08\u6bb5\u843d\u306f\u4fdd\u6301\uff09","\ub2e8\uc77c \uc904\ubc14\uafc8 \ubcd1\ud569(\ubb38\ub2e8 \uc720\uc9c0)","Tek sat\u0131r sonlar\u0131n\u0131 birle\u015ftir (paragraflar\u0131 koru)"),subtitle_segmentation:Et("\u5b57\u5e55\u65ad\u53e5","Subtitle segmentation","\u5b57\u5e55\u65b7\u53e5","\u5b57\u5e55\u5206\u5272","\uc790\ub9c9 \ubd84\ud560","Altyaz\u0131 b\xf6l\xfcmleme"),subtitle_playground_invalid_events:Et("\u5b57\u5e55\u6587\u4ef6\u6ca1\u6709\u6709\u6548\u7684 events \u6570\u7ec4","The subtitle file has no valid events array","\u5b57\u5e55\u6a94\u6848\u6c92\u6709\u6709\u6548\u7684 events \u9663\u5217","\u5b57\u5e55\u30d5\u30a1\u30a4\u30eb\u306b\u6709\u52b9\u306a events \u914d\u5217\u304c\u3042\u308a\u307e\u305b\u3093","\uc790\ub9c9 \ud30c\uc77c\uc5d0 \uc720\ud6a8\ud55c events \ubc30\uc5f4\uc774 \uc5c6\uc2b5\ub2c8\ub2e4","Altyaz\u0131 dosyas\u0131nda ge\xe7erli bir events dizisi yok"),subtitle_playground_event_limit:Et("\u5b57\u5e55\u4e8b\u4ef6\u6570\u91cf\u4e0d\u80fd\u8d85\u8fc7 {max}","Subtitle events cannot exceed {max}","\u5b57\u5e55\u4e8b\u4ef6\u6578\u91cf\u4e0d\u80fd\u8d85\u904e {max}","\u5b57\u5e55\u30a4\u30d9\u30f3\u30c8\u6570\u306f {max} \u3092\u8d85\u3048\u3089\u308c\u307e\u305b\u3093","\uc790\ub9c9 \uc774\ubca4\ud2b8 \uc218\ub294 {max}\uac1c\ub97c \ucd08\uacfc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4","Altyaz\u0131 olay\u0131 say\u0131s\u0131 {max} de\u011ferini a\u015famaz"),subtitle_playground_missing_segments:Et("\u5b57\u5e55\u6587\u4ef6\u7f3a\u5c11 YouTube json3 \u7684 segs \u6570\u636e","The subtitle file is missing YouTube json3 segs data","\u5b57\u5e55\u6a94\u6848\u7f3a\u5c11 YouTube json3 \u7684 segs \u8cc7\u6599","\u5b57\u5e55\u30d5\u30a1\u30a4\u30eb\u306b YouTube json3 \u306e segs \u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093","\uc790\ub9c9 \ud30c\uc77c\uc5d0 YouTube json3 segs \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4","Altyaz\u0131 dosyas\u0131nda YouTube json3 segs verisi yok"),subtitle_playground_remote_size_invalid:Et("\u8fdc\u7a0b\u5b57\u5e55\u6837\u672c\u5927\u5c0f\u6821\u9a8c\u5931\u8d25","Remote subtitle sample size validation failed","\u9060\u7aef\u5b57\u5e55\u6a23\u672c\u5927\u5c0f\u9a57\u8b49\u5931\u6557","\u30ea\u30e2\u30fc\u30c8\u5b57\u5e55\u30b5\u30f3\u30d7\u30eb\u306e\u30b5\u30a4\u30ba\u691c\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f","\uc6d0\uaca9 \uc790\ub9c9 \uc0d8\ud50c \ud06c\uae30 \uac80\uc99d\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4","Uzak altyaz\u0131 \xf6rne\u011fi boyut do\u011frulamas\u0131 ba\u015far\u0131s\u0131z"),subtitle_playground_remote_hash_invalid:Et("\u8fdc\u7a0b\u5b57\u5e55\u6837\u672c\u54c8\u5e0c\u6821\u9a8c\u5931\u8d25","Remote subtitle sample hash validation failed","\u9060\u7aef\u5b57\u5e55\u6a23\u672c\u96dc\u6e4a\u9a57\u8b49\u5931\u6557","\u30ea\u30e2\u30fc\u30c8\u5b57\u5e55\u30b5\u30f3\u30d7\u30eb\u306e\u30cf\u30c3\u30b7\u30e5\u691c\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f","\uc6d0\uaca9 \uc790\ub9c9 \uc0d8\ud50c \ud574\uc2dc \uac80\uc99d\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4","Uzak altyaz\u0131 \xf6rne\u011fi karma do\u011frulamas\u0131 ba\u015far\u0131s\u0131z"),subtitle_playground_remote_index_failed:Et("\u8fdc\u7a0b\u5b57\u5e55\u6837\u672c\u7d22\u5f15\u52a0\u8f7d\u5931\u8d25\uff0c\u53ef\u4ee5\u7ee7\u7eed\u4e0a\u4f20\u672c\u5730 JSON","Failed to load the remote sample index. You can still upload a local JSON file","\u9060\u7aef\u5b57\u5e55\u6a23\u672c\u7d22\u5f15\u8f09\u5165\u5931\u6557\uff0c\u4ecd\u53ef\u4e0a\u50b3\u672c\u6a5f JSON","\u30ea\u30e2\u30fc\u30c8\u5b57\u5e55\u30b5\u30f3\u30d7\u30eb\u306e\u7d22\u5f15\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30ed\u30fc\u30ab\u30eb JSON \u306f\u5f15\u304d\u7d9a\u304d\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059","\uc6d0\uaca9 \uc790\ub9c9 \uc0d8\ud50c \uc0c9\uc778\uc744 \ubd88\ub7ec\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ub85c\uceec JSON\uc740 \uacc4\uc18d \uc5c5\ub85c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4","Uzak \xf6rnek dizini y\xfcklenemedi. Yerel bir JSON dosyas\u0131 y\xfckleyebilirsiniz"),subtitle_playground_sample_load_failed:Et("\u5b57\u5e55\u6837\u672c\u52a0\u8f7d\u5931\u8d25\uff1a{message}","Failed to load subtitle sample: {message}","\u5b57\u5e55\u6a23\u672c\u8f09\u5165\u5931\u6557\uff1a{message}","\u5b57\u5e55\u30b5\u30f3\u30d7\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff1a{message}","\uc790\ub9c9 \uc0d8\ud50c\uc744 \ubd88\ub7ec\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4: {message}","Altyaz\u0131 \xf6rne\u011fi y\xfcklenemedi: {message}"),subtitle_playground_file_too_large:Et("\u5b57\u5e55\u6587\u4ef6\u4e0d\u80fd\u8d85\u8fc7 10MB","The subtitle file cannot exceed 10 MB","\u5b57\u5e55\u6a94\u6848\u4e0d\u80fd\u8d85\u904e 10MB","\u5b57\u5e55\u30d5\u30a1\u30a4\u30eb\u306f 10 MB \u3092\u8d85\u3048\u3089\u308c\u307e\u305b\u3093","\uc790\ub9c9 \ud30c\uc77c\uc740 10MB\ub97c \ucd08\uacfc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4","Altyaz\u0131 dosyas\u0131 10 MB'\u0131 a\u015famaz"),subtitle_playground_file_parse_failed:Et("\u5b57\u5e55\u6587\u4ef6\u89e3\u6790\u5931\u8d25\uff1a{message}","Failed to parse subtitle file: {message}","\u5b57\u5e55\u6a94\u6848\u89e3\u6790\u5931\u6557\uff1a{message}","\u5b57\u5e55\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff1a{message}","\uc790\ub9c9 \ud30c\uc77c\uc744 \ubd84\uc11d\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4: {message}","Altyaz\u0131 dosyas\u0131 ayr\u0131\u015ft\u0131r\u0131lamad\u0131: {message}"),subtitle_playground_ai_confirm_title:Et("\u53d1\u9001 AI \u65ad\u53e5\u8bf7\u6c42","Send AI segmentation requests","\u50b3\u9001 AI \u65b7\u53e5\u8acb\u6c42","AI \u5b57\u5e55\u5206\u5272\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1","AI \uc790\ub9c9 \ubd84\ud560 \uc694\uccad \ubcf4\ub0b4\uae30","AI b\xf6l\xfcmleme isteklerini g\xf6nder"),subtitle_playground_ai_confirm_message:Et("\u5c06\u4f7f\u7528 {api} / {model} \u53d1\u9001\u7ea6 {count} \u4e2a\u5b57\u5e55\u8bf7\u6c42\u3002\u6837\u672c\u6587\u672c\u4f1a\u53d1\u9001\u5230\u5f53\u524d AI \u670d\u52a1\u3002","About {count} subtitle requests will be sent using {api} / {model}. The sample text will be sent to the current AI service.","\u5c07\u4f7f\u7528 {api} / {model} \u50b3\u9001\u7d04 {count} \u500b\u5b57\u5e55\u8acb\u6c42\u3002\u6a23\u672c\u6587\u5b57\u6703\u50b3\u9001\u5230\u76ee\u524d\u7684 AI \u670d\u52d9\u3002","{api} / {model} \u3092\u4f7f\u7528\u3057\u3066\u7d04 {count} \u4ef6\u306e\u5b57\u5e55\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002\u30b5\u30f3\u30d7\u30eb\u30c6\u30ad\u30b9\u30c8\u306f\u73fe\u5728\u306e AI \u30b5\u30fc\u30d3\u30b9\u306b\u9001\u4fe1\u3055\u308c\u307e\u3059\u3002","{api} / {model}\uc744 \uc0ac\uc6a9\ud574 \uc57d {count}\uac1c\uc758 \uc790\ub9c9 \uc694\uccad\uc744 \ubcf4\ub0c5\ub2c8\ub2e4. \uc0d8\ud50c \ud14d\uc2a4\ud2b8\uac00 \ud604\uc7ac AI \uc11c\ube44\uc2a4\ub85c \uc804\uc1a1\ub429\ub2c8\ub2e4.","{api} / {model} kullan\u0131larak yakla\u015f\u0131k {count} altyaz\u0131 iste\u011fi g\xf6nderilecek. \xd6rnek metin mevcut AI hizmetine g\xf6nderilecektir."),subtitle_playground_default_model:Et("\u9ed8\u8ba4\u6a21\u578b","Default model","\u9810\u8a2d\u6a21\u578b","\u65e2\u5b9a\u306e\u30e2\u30c7\u30eb","\uae30\ubcf8 \ubaa8\ub378","Varsay\u0131lan model"),subtitle_playground_continue:Et("\u7ee7\u7eed","Continue","\u7e7c\u7e8c","\u7d9a\u884c","\uacc4\uc18d","Devam"),subtitle_playground_test_failed:Et("\u5b57\u5e55\u65ad\u53e5\u5931\u8d25\uff1a{message}","Subtitle segmentation failed: {message}","\u5b57\u5e55\u65b7\u53e5\u5931\u6557\uff1a{message}","\u5b57\u5e55\u5206\u5272\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff1a{message}","\uc790\ub9c9 \ubd84\ud560\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4: {message}","Altyaz\u0131 b\xf6l\xfcmleme ba\u015far\u0131s\u0131z: {message}"),subtitle_playground_prompt_global:Et("\u5168\u5c40\u5b57\u5e55\u8bbe\u7f6e","Global subtitle settings","\u5168\u57df\u5b57\u5e55\u8a2d\u5b9a","\u30b0\u30ed\u30fc\u30d0\u30eb\u5b57\u5e55\u8a2d\u5b9a","\uc804\uc5ed \uc790\ub9c9 \uc124\uc815","Genel altyaz\u0131 ayarlar\u0131"),subtitle_playground_prompt_preset:Et("\u63a5\u53e3\u9884\u8bbe","API preset","\u4ecb\u9762\u9810\u8a2d","API \u30d7\u30ea\u30bb\u30c3\u30c8","API \ud504\ub9ac\uc14b","API \xf6n ayar\u0131"),subtitle_playground_prompt_custom:Et("\u63a5\u53e3\u81ea\u5b9a\u4e49","API custom","\u4ecb\u9762\u81ea\u8a02","API \u30ab\u30b9\u30bf\u30e0","API \uc0ac\uc6a9\uc790 \uc9c0\uc815","\xd6zel API"),subtitle_playground_config_title:Et("\u5f53\u524d\u751f\u6548\u7684\u65ad\u53e5\u914d\u7f6e","Active segmentation configuration","\u76ee\u524d\u751f\u6548\u7684\u65b7\u53e5\u8a2d\u5b9a","\u73fe\u5728\u6709\u52b9\u306a\u5b57\u5e55\u5206\u5272\u8a2d\u5b9a","\ud604\uc7ac \uc801\uc6a9 \uc911\uc778 \uc790\ub9c9 \ubd84\ud560 \uc124\uc815","Etkin b\xf6l\xfcmleme yap\u0131land\u0131rmas\u0131"),subtitle_playground_mode:Et("\u6a21\u5f0f","Mode","\u6a21\u5f0f","\u30e2\u30fc\u30c9","\ubaa8\ub4dc","Mod"),subtitle_playground_api:Et("API","API","API","API","API","API"),subtitle_playground_type_model:Et("\u7c7b\u578b / \u6a21\u578b","Type / model","\u985e\u578b / \u6a21\u578b","\u30bf\u30a4\u30d7 / \u30e2\u30c7\u30eb","\uc720\ud615 / \ubaa8\ub378","T\xfcr / model"),subtitle_playground_prompt:Et("\u63d0\u793a\u8bcd","Prompt","\u63d0\u793a\u8a5e","\u30d7\u30ed\u30f3\u30d7\u30c8","\ud504\ub86c\ud504\ud2b8","\u0130stem"),subtitle_playground_api_default:Et("\u63a5\u53e3\u9ed8\u8ba4","API default","\u4ecb\u9762\u9810\u8a2d","API \u306e\u65e2\u5b9a\u5024","API \uae30\ubcf8\uac12","API varsay\u0131lan\u0131"),subtitle_playground_prompt_value:Et("{prompt}\uff08{source}\uff09","{prompt} ({source})","{prompt}\uff08{source}\uff09","{prompt}\uff08{source}\uff09","{prompt} ({source})","{prompt} ({source})"),subtitle_playground_chunk_length:Et("Chunk \u957f\u5ea6","Chunk length","Chunk \u9577\u5ea6","\u30c1\u30e3\u30f3\u30af\u9577","\uccad\ud06c \uae38\uc774","Par\xe7a uzunlu\u011fu"),subtitle_playground_estimated_chunks:Et("\u9884\u8ba1 Chunk","Estimated chunks","\u9810\u4f30 Chunk","\u63a8\u5b9a\u30c1\u30e3\u30f3\u30af\u6570","\uc608\uc0c1 \uccad\ud06c \uc218","Tahmini par\xe7a say\u0131s\u0131"),subtitle_playground_target_language:Et("\u76ee\u6807\u8bed\u8a00","Target language","\u76ee\u6a19\u8a9e\u8a00","\u7ffb\u8a33\u5148\u8a00\u8a9e","\ub300\uc0c1 \uc5b8\uc5b4","Hedef dil"),subtitle_playground_streaming:Et("\u6d41\u5f0f","Streaming","\u4e32\u6d41","\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0","\uc2a4\ud2b8\ub9ac\ubc0d","Ak\u0131\u015f"),subtitle_playground_enabled:Et("\u542f\u7528","Enabled","\u555f\u7528","\u6709\u52b9","\uc0ac\uc6a9","Etkin"),subtitle_playground_disabled:Et("\u5173\u95ed","Disabled","\u95dc\u9589","\u7121\u52b9","\uc0ac\uc6a9 \uc548 \ud568","Devre d\u0131\u015f\u0131"),subtitle_playground_protocol:Et("\u534f\u8bae","Protocol","\u5354\u5b9a","\u30d7\u30ed\u30c8\u30b3\u30eb","\ud504\ub85c\ud1a0\ucf5c","Protokol"),subtitle_playground_legacy_compatible:Et("\u517c\u5bb9\u65e7\u534f\u8bae","Legacy protocol compatible","\u76f8\u5bb9\u820a\u5354\u5b9a","\u65e7\u30d7\u30ed\u30c8\u30b3\u30eb\u4e92\u63db","\uc774\uc804 \ud504\ub85c\ud1a0\ucf5c \ud638\ud658","Eski protokolle uyumlu"),subtitle_playground_protocol_value:Et("{protocol}\uff08{compatibility}\uff09","{protocol} ({compatibility})","{protocol}\uff08{compatibility}\uff09","{protocol}\uff08{compatibility}\uff09","{protocol} ({compatibility})","{protocol} ({compatibility})"),subtitle_playground_statistical_mode:Et("\u7edf\u8ba1\u65ad\u53e5","Statistical segmentation","\u7d71\u8a08\u65b7\u53e5","\u7d71\u8a08\u7684\u5b57\u5e55\u5206\u5272","\ud1b5\uacc4 \uc790\ub9c9 \ubd84\ud560","\u0130statistiksel b\xf6l\xfcmleme"),subtitle_playground_rule_mode:Et("\u89c4\u5219\u65ad\u53e5","Rule-based segmentation","\u898f\u5247\u65b7\u53e5","\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u5b57\u5e55\u5206\u5272","\uaddc\uce59 \uae30\ubc18 \uc790\ub9c9 \ubd84\ud560","Kural tabanl\u0131 b\xf6l\xfcmleme"),subtitle_playground_max_duration:Et("\u6700\u5927\u65f6\u957f","Maximum duration","\u6700\u9577\u6642\u9577","\u6700\u5927\u6642\u9593","\ucd5c\ub300 \uae38\uc774","Azami s\xfcre"),subtitle_playground_max_words:Et("\u6700\u5927\u8bcd\u6570","Maximum words","\u6700\u591a\u8a5e\u6578","\u6700\u5927\u5358\u8a9e\u6570","\ucd5c\ub300 \ub2e8\uc5b4 \uc218","Azami kelime"),subtitle_playground_min_boundary_score:Et("\u6700\u5c0f\u8fb9\u754c\u8bc4\u5206","Minimum boundary score","\u6700\u5c0f\u908a\u754c\u5206\u6578","\u6700\u5c0f\u5883\u754c\u30b9\u30b3\u30a2","\ucd5c\uc18c \uacbd\uacc4 \uc810\uc218","Asgari s\u0131n\u0131r puan\u0131"),subtitle_playground_min_sentence_words:Et("\u6700\u5c0f\u53e5\u5b50\u8bcd\u6570","Minimum sentence words","\u6700\u5c11\u53e5\u5b50\u8a5e\u6578","\u6587\u306e\u6700\u5c0f\u5358\u8a9e\u6570","\ubb38\uc7a5 \ucd5c\uc18c \ub2e8\uc5b4 \uc218","Asgari c\xfcmle kelimesi"),subtitle_playground_source_language:Et("\u6e90\u8bed\u8a00","Source language","\u4f86\u6e90\u8a9e\u8a00","\u5143\u8a00\u8a9e","\uc6d0\ubcf8 \uc5b8\uc5b4","Kaynak dil"),subtitle_playground_source_language_label:Et("\u5b57\u5e55\u6e90\u8bed\u8a00","Subtitle source language","\u5b57\u5e55\u4f86\u6e90\u8a9e\u8a00","\u5b57\u5e55\u306e\u5143\u8a00\u8a9e","\uc790\ub9c9 \uc6d0\ubcf8 \uc5b8\uc5b4","Altyaz\u0131 kaynak dili"),subtitle_playground_language_required:Et("\u89c4\u5219\u548c\u7edf\u8ba1\u65ad\u53e5\u4e0d\u652f\u6301 AutoDetect\uff0c\u8bf7\u9009\u62e9\u5177\u4f53\u7684\u5b57\u5e55\u6e90\u8bed\u8a00\u3002","Rule-based and statistical segmentation do not support AutoDetect. Select a specific subtitle source language.","\u898f\u5247\u548c\u7d71\u8a08\u65b7\u53e5\u4e0d\u652f\u63f4 AutoDetect\uff0c\u8acb\u9078\u64c7\u5177\u9ad4\u7684\u5b57\u5e55\u4f86\u6e90\u8a9e\u8a00\u3002","\u30eb\u30fc\u30eb\u304a\u3088\u3073\u7d71\u8a08\u7684\u5b57\u5e55\u5206\u5272\u3067\u306f AutoDetect \u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u5b57\u5e55\u306e\u5143\u8a00\u8a9e\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002","\uaddc\uce59 \ubc0f \ud1b5\uacc4 \uc790\ub9c9 \ubd84\ud560\uc740 AutoDetect\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc790\ub9c9 \uc6d0\ubcf8 \uc5b8\uc5b4\ub97c \uc120\ud0dd\ud558\uc138\uc694.","Kural tabanl\u0131 ve istatistiksel b\xf6l\xfcmleme AutoDetect'i desteklemez. Belirli bir altyaz\u0131 kaynak dili se\xe7in."),subtitle_playground_long_sentence_threshold:Et("\u957f\u53e5\u9608\u503c","Long-sentence threshold","\u9577\u53e5\u9580\u6abb","\u9577\u6587\u3057\u304d\u3044\u5024","\uae34 \ubb38\uc7a5 \uc784\uacc4\uac12","Uzun c\xfcmle e\u015fi\u011fi"),subtitle_playground_chunk_risk:Et("\u5f53\u524d AI Chunk \u957f\u5ea6\u9ad8\u4e8e\u63a8\u8350\u9ed8\u8ba4\u503c 1000\uff0c\u957f\u8f93\u5165\u53ef\u80fd\u589e\u52a0\u6f0f\u53e5\u6216\u8fb9\u754c\u9000\u5316\u98ce\u9669\u3002","The current AI chunk length exceeds the recommended default of 1000. Long input may increase the risk of missing text or degraded boundaries.","\u76ee\u524d AI Chunk \u9577\u5ea6\u9ad8\u65bc\u5efa\u8b70\u9810\u8a2d\u503c 1000\uff0c\u9577\u8f38\u5165\u53ef\u80fd\u589e\u52a0\u6f0f\u53e5\u6216\u908a\u754c\u9000\u5316\u98a8\u96aa\u3002","\u73fe\u5728\u306e AI \u30c1\u30e3\u30f3\u30af\u9577\u306f\u63a8\u5968\u65e2\u5b9a\u5024 1000 \u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002\u9577\u3044\u5165\u529b\u3067\u306f\u6587\u306e\u6b20\u843d\u3084\u5883\u754c\u7cbe\u5ea6\u4f4e\u4e0b\u306e\u30ea\u30b9\u30af\u304c\u9ad8\u307e\u308a\u307e\u3059\u3002","\ud604\uc7ac AI \uccad\ud06c \uae38\uc774\uac00 \uad8c\uc7a5 \uae30\ubcf8\uac12 1000\ubcf4\ub2e4 \ud07d\ub2c8\ub2e4. \uae34 \uc785\ub825\uc740 \ubb38\uc7a5 \ub204\ub77d\uc774\ub098 \uacbd\uacc4 \ud488\uc9c8 \uc800\ud558 \uc704\ud5d8\uc744 \ub192\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.","Ge\xe7erli AI par\xe7a uzunlu\u011fu \xf6nerilen varsay\u0131lan 1000 de\u011ferini a\u015f\u0131yor. Uzun girdiler eksik metin veya s\u0131n\u0131r kalitesi d\xfc\u015f\xfc\u015f\xfc riskini art\u0131rabilir."),subtitle_playground_builtin_sample:Et("\u5185\u7f6e\u5b57\u5e55\u6837\u672c","Built-in subtitle sample","\u5167\u5efa\u5b57\u5e55\u6a23\u672c","\u5185\u8535\u5b57\u5e55\u30b5\u30f3\u30d7\u30eb","\ub0b4\uc7a5 \uc790\ub9c9 \uc0d8\ud50c","Yerle\u015fik altyaz\u0131 \xf6rne\u011fi"),subtitle_playground_select_sample:Et("\u8bf7\u9009\u62e9\u8fdc\u7a0b\u6837\u672c","Select a remote sample","\u8acb\u9078\u64c7\u9060\u7aef\u6a23\u672c","\u30ea\u30e2\u30fc\u30c8\u30b5\u30f3\u30d7\u30eb\u3092\u9078\u629e","\uc6d0\uaca9 \uc0d8\ud50c\uc744 \uc120\ud0dd\ud558\uc138\uc694","Uzak bir \xf6rnek se\xe7in"),subtitle_playground_upload_json:Et("\u4e0a\u4f20 JSON","Upload JSON","\u4e0a\u50b3 JSON","JSON \u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9","JSON \uc5c5\ub85c\ub4dc","JSON y\xfckle"),subtitle_playground_run:Et("\u8fd0\u884c\u6d4b\u8bd5","Run test","\u57f7\u884c\u6e2c\u8a66","\u30c6\u30b9\u30c8\u3092\u5b9f\u884c","\ud14c\uc2a4\ud2b8 \uc2e4\ud589","Testi \xe7al\u0131\u015ft\u0131r"),subtitle_playground_progress:Et("\u6b63\u5728\u5904\u7406 Chunk {completed}/{total}","Processing chunk {completed}/{total}","\u6b63\u5728\u8655\u7406 Chunk {completed}/{total}","\u30c1\u30e3\u30f3\u30af {completed}/{total} \u3092\u51e6\u7406\u4e2d","\uccad\ud06c \ucc98\ub9ac \uc911 {completed}/{total}","Par\xe7a i\u015fleniyor {completed}/{total}"),subtitle_playground_source_json:Et("\u539f\u59cb\u5b57\u5e55 JSON","Original subtitle JSON","\u539f\u59cb\u5b57\u5e55 JSON","\u5143\u306e\u5b57\u5e55 JSON","\uc6d0\ubcf8 \uc790\ub9c9 JSON","Orijinal altyaz\u0131 JSON"),subtitle_playground_result:Et("\u65ad\u53e5\u7ed3\u679c","Segmentation result","\u65b7\u53e5\u7d50\u679c","\u5b57\u5e55\u5206\u5272\u7d50\u679c","\uc790\ub9c9 \ubd84\ud560 \uacb0\uacfc","B\xf6l\xfcmleme sonucu"),subtitle_playground_download:Et("\u4e0b\u8f7d","Download","\u4e0b\u8f09","\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9","\ub2e4\uc6b4\ub85c\ub4dc","\u0130ndir"),subtitle_playground_stats_title:Et("\u65ad\u53e5\u7edf\u8ba1\u4fe1\u606f","Segmentation statistics","\u65b7\u53e5\u7d71\u8a08\u8cc7\u8a0a","\u5b57\u5e55\u5206\u5272\u306e\u7d71\u8a08","\uc790\ub9c9 \ubd84\ud560 \ud1b5\uacc4","B\xf6l\xfcmleme istatistikleri"),subtitle_playground_metric_processing:Et("\u5904\u7406\u8017\u65f6","Processing time","\u8655\u7406\u8017\u6642","\u51e6\u7406\u6642\u9593","\ucc98\ub9ac \uc2dc\uac04","\u0130\u015fleme s\xfcresi"),subtitle_playground_metric_raw_events:Et("\u539f\u59cb\u4e8b\u4ef6","Raw events","\u539f\u59cb\u4e8b\u4ef6","\u5143\u30a4\u30d9\u30f3\u30c8","\uc6d0\ubcf8 \uc774\ubca4\ud2b8","Ham olaylar"),subtitle_playground_metric_canonical_events:Et("\u89c4\u8303\u5316\u4e8b\u4ef6","Canonical events","\u6b63\u898f\u5316\u4e8b\u4ef6","\u6b63\u898f\u5316\u30a4\u30d9\u30f3\u30c8","\uc815\uaddc\ud654 \uc774\ubca4\ud2b8","Standart olaylar"),subtitle_playground_metric_flat_events:Et("Flat Events","Flat events","Flat Events","\u30d5\u30e9\u30c3\u30c8\u30a4\u30d9\u30f3\u30c8","\ud50c\ub7ab \uc774\ubca4\ud2b8","D\xfcz olaylar"),subtitle_playground_metric_filtered_non_speech:Et("\u5df2\u8fc7\u6ee4\u975e\u8bed\u97f3\u7247\u6bb5","Filtered non-speech segments","\u5df2\u904e\u6ffe\u975e\u8a9e\u97f3\u7247\u6bb5","\u9664\u5916\u3057\u305f\u975e\u97f3\u58f0\u533a\u9593","\ud544\ud130\ub9c1\ub41c \ube44\uc74c\uc131 \uad6c\uac04","Filtrelenen konu\u015fma d\u0131\u015f\u0131 b\xf6l\xfcmler"),subtitle_playground_metric_cues:Et("\u5b57\u5e55\u6761\u76ee","Subtitle cues","\u5b57\u5e55\u9805\u76ee","\u5b57\u5e55\u30ad\u30e5\u30fc","\uc790\ub9c9 \ud050","Altyaz\u0131 \xf6\u011feleri"),subtitle_playground_metric_source_duration:Et("\u6e90\u65f6\u95f4\u8de8\u5ea6","Source duration","\u4f86\u6e90\u6642\u9593\u8de8\u5ea6","\u5143\u306e\u6642\u9593\u7bc4\u56f2","\uc6d0\ubcf8 \uc2dc\uac04 \ubc94\uc704","Kaynak s\xfcresi"),subtitle_playground_metric_covered_duration:Et("\u8986\u76d6\u65f6\u957f","Covered duration","\u6db5\u84cb\u6642\u9577","\u30ab\u30d0\u30fc\u6642\u9593","\ud3ec\ud568 \uc2dc\uac04","Kapsanan s\xfcre"),subtitle_playground_metric_text_coverage:Et("\u6587\u672c\u8986\u76d6\u7387","Text coverage","\u6587\u5b57\u6db5\u84cb\u7387","\u30c6\u30ad\u30b9\u30c8\u7db2\u7f85\u7387","\ud14d\uc2a4\ud2b8 \ud3ec\ud568\ub960","Metin kapsam\u0131"),subtitle_playground_metric_empty_cues:Et("\u7a7a\u5b57\u5e55","Empty cues","\u7a7a\u5b57\u5e55","\u7a7a\u306e\u5b57\u5e55","\ube48 \uc790\ub9c9","Bo\u015f altyaz\u0131lar"),subtitle_playground_metric_invalid_cues:Et("\u65e0\u6548\u5b57\u5e55","Invalid cues","\u7121\u6548\u5b57\u5e55","\u7121\u52b9\u306a\u5b57\u5e55","\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc790\ub9c9","Ge\xe7ersiz altyaz\u0131lar"),subtitle_playground_metric_overlaps:Et("\u65f6\u95f4\u91cd\u53e0","Time overlaps","\u6642\u9593\u91cd\u758a","\u6642\u9593\u306e\u91cd\u8907","\uc2dc\uac04 \uacb9\uce68","Zaman \xe7ak\u0131\u015fmalar\u0131"),subtitle_playground_metric_non_monotonic:Et("\u65f6\u95f4\u5012\u9000","Non-monotonic time","\u6642\u9593\u5012\u9000","\u6642\u9593\u306e\u9006\u884c","\uc2dc\uac04 \uc5ed\ud589","Geri giden zaman"),subtitle_playground_metric_missing_text:Et("\u6587\u672c\u9057\u6f0f","Missing text","\u6587\u5b57\u907a\u6f0f","\u6b20\u843d\u30c6\u30ad\u30b9\u30c8","\ub204\ub77d \ud14d\uc2a4\ud2b8","Eksik metin"),subtitle_playground_metric_duplicated_text:Et("\u6587\u672c\u91cd\u590d","Duplicated text","\u6587\u5b57\u91cd\u8907","\u91cd\u8907\u30c6\u30ad\u30b9\u30c8","\uc911\ubcf5 \ud14d\uc2a4\ud2b8","Yinelenen metin"),subtitle_playground_metric_avg_chars:Et("\u5e73\u5747\u5b57\u7b26","Average characters","\u5e73\u5747\u5b57\u5143","\u5e73\u5747\u6587\u5b57\u6570","\ud3c9\uade0 \ubb38\uc790 \uc218","Ortalama karakter"),subtitle_playground_metric_p95_chars:Et("P95 \u5b57\u7b26","P95 characters","P95 \u5b57\u5143","P95 \u6587\u5b57\u6570","P95 \ubb38\uc790 \uc218","P95 karakter"),subtitle_playground_metric_max_chars:Et("\u6700\u5927\u5b57\u7b26","Maximum characters","\u6700\u591a\u5b57\u5143","\u6700\u5927\u6587\u5b57\u6570","\ucd5c\ub300 \ubb38\uc790 \uc218","Azami karakter"),subtitle_playground_metric_avg_words:Et("\u5e73\u5747\u8bcd\u6570","Average words","\u5e73\u5747\u8a5e\u6578","\u5e73\u5747\u5358\u8a9e\u6570","\ud3c9\uade0 \ub2e8\uc5b4 \uc218","Ortalama kelime"),subtitle_playground_metric_p95_words:Et("P95 \u8bcd\u6570","P95 words","P95 \u8a5e\u6578","P95 \u5358\u8a9e\u6570","P95 \ub2e8\uc5b4 \uc218","P95 kelime"),subtitle_playground_metric_max_words:Et("\u6700\u5927\u8bcd\u6570","Maximum words","\u6700\u591a\u8a5e\u6578","\u6700\u5927\u5358\u8a9e\u6570","\ucd5c\ub300 \ub2e8\uc5b4 \uc218","Azami kelime"),subtitle_playground_metric_avg_duration:Et("\u5e73\u5747\u65f6\u957f","Average duration","\u5e73\u5747\u6642\u9577","\u5e73\u5747\u6642\u9593","\ud3c9\uade0 \uae38\uc774","Ortalama s\xfcre"),subtitle_playground_metric_p95_duration:Et("P95 \u65f6\u957f","P95 duration","P95 \u6642\u9577","P95 \u6642\u9593","P95 \uae38\uc774","P95 s\xfcre"),subtitle_playground_metric_max_duration:Et("\u6700\u5927\u65f6\u957f","Maximum duration","\u6700\u9577\u6642\u9577","\u6700\u5927\u6642\u9593","\ucd5c\ub300 \uae38\uc774","Azami s\xfcre"),subtitle_playground_structure_error:Et("\u7ed3\u6784\u9519\u8bef\uff1a{errors}","Structure errors: {errors}","\u7d50\u69cb\u932f\u8aa4\uff1a{errors}","\u69cb\u9020\u30a8\u30e9\u30fc\uff1a{errors}","\uad6c\uc870 \uc624\ub958: {errors}","Yap\u0131 hatalar\u0131: {errors}"),subtitle_playground_readability_warning:Et("\u53ef\u8bfb\u6027\u8b66\u544a\uff1a\u8d85\u957f\u6587\u672c {longText}\uff0c\u8d85\u8fc7 10 \u79d2 {longDuration}\uff0c\u77ed\u788e\u7247 {fragments}\uff0c\u6cc4\u6f0f\u7684\u975e\u8bed\u97f3\u5b57\u5e55 {nonSpeech}","Readability warnings: long text {longText}, over 10 seconds {longDuration}, short fragments {fragments}, leaked non-speech cues {nonSpeech}","\u53ef\u8b80\u6027\u8b66\u544a\uff1a\u904e\u9577\u6587\u5b57 {longText}\uff0c\u8d85\u904e 10 \u79d2 {longDuration}\uff0c\u77ed\u7247\u6bb5 {fragments}\uff0c\u6d29\u6f0f\u7684\u975e\u8a9e\u97f3\u5b57\u5e55 {nonSpeech}","\u53ef\u8aad\u6027\u306e\u8b66\u544a\uff1a\u9577\u3059\u304e\u308b\u30c6\u30ad\u30b9\u30c8 {longText}\u300110 \u79d2\u8d85 {longDuration}\u3001\u77ed\u3044\u65ad\u7247 {fragments}\u3001\u6df7\u5165\u3057\u305f\u975e\u97f3\u58f0\u5b57\u5e55 {nonSpeech}","\uac00\ub3c5\uc131 \uacbd\uace0: \ub108\ubb34 \uae34 \ud14d\uc2a4\ud2b8 {longText}, 10\ucd08 \ucd08\uacfc {longDuration}, \uc9e7\uc740 \uc870\uac01 {fragments}, \uc720\ucd9c\ub41c \ube44\uc74c\uc131 \uc790\ub9c9 {nonSpeech}","Okunabilirlik uyar\u0131lar\u0131: uzun metin {longText}, 10 saniyeyi a\u015fan {longDuration}, k\u0131sa par\xe7alar {fragments}, s\u0131zan konu\u015fma d\u0131\u015f\u0131 altyaz\u0131lar {nonSpeech}"),subtitle_playground_ai_stats:Et("AI\uff1a\u534f\u8bae {protocol}\uff0cChunk {chunks}\uff0c\u8bf7\u6c42 {requests}\uff0c\u91cd\u8bd5 {retries}\uff0c\u964d\u7ea7\u5b57\u5e55 {fallbacks}\uff0c\u65e0\u6548\u54cd\u5e94 {invalid}","AI: protocol {protocol}, chunks {chunks}, requests {requests}, retries {retries}, fallback cues {fallbacks}, invalid responses {invalid}","AI\uff1a\u5354\u5b9a {protocol}\uff0cChunk {chunks}\uff0c\u8acb\u6c42 {requests}\uff0c\u91cd\u8a66 {retries}\uff0c\u964d\u7d1a\u5b57\u5e55 {fallbacks}\uff0c\u7121\u6548\u56de\u61c9 {invalid}","AI\uff1a\u30d7\u30ed\u30c8\u30b3\u30eb {protocol}\u3001\u30c1\u30e3\u30f3\u30af {chunks}\u3001\u30ea\u30af\u30a8\u30b9\u30c8 {requests}\u3001\u518d\u8a66\u884c {retries}\u3001\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u5b57\u5e55 {fallbacks}\u3001\u7121\u52b9\u306a\u5fdc\u7b54 {invalid}","AI: \ud504\ub85c\ud1a0\ucf5c {protocol}, \uccad\ud06c {chunks}, \uc694\uccad {requests}, \uc7ac\uc2dc\ub3c4 {retries}, \ub300\uccb4 \uc790\ub9c9 {fallbacks}, \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc751\ub2f5 {invalid}","AI: protokol {protocol}, par\xe7a {chunks}, istek {requests}, yeniden deneme {retries}, yedek altyaz\u0131 {fallbacks}, ge\xe7ersiz yan\u0131t {invalid}")}),{},{app_name:{zh:"\u7b80\u7ea6\u7ffb\u8bd1",en:"KISS Translator",zh_TW:"\u7c21\u7d04\u7ffb\u8b6f",ja:"KISS Translator",ko:"KISS Translator",tr:"KISS Translator"},translate:{zh:"\u7ffb\u8bd1",en:"Translate",zh_TW:"\u7ffb\u8b6f",ja:"\u7ffb\u8a33",ko:"\ubc88\uc5ed",tr:"\xc7eviri"},custom_api_help:{zh:Tt,en:At,zh_TW:wt,ja:At,ko:At,tr:At},request_hook_helper:{zh:"1\u3001\u7b2c\u4e00\u4e2a\u53c2\u6570\u5305\u542b\u5982\u4e0b\u5b57\u6bb5\uff1a'texts', 'from', 'to', 'url', 'key', 'model', 'systemPrompt', ...\n2\u3001\u8fd4\u56de\u503c\u5fc5\u987b\u662f\u5305\u542b\u4ee5\u4e0b\u5b57\u6bb5\u7684\u5bf9\u8c61\uff1a 'url', 'body', 'headers', 'method'\n3\u3001\u5982\u8fd4\u56de\u7a7a\u503c\uff0c\u5219hook\u51fd\u6570\u4e0d\u4f1a\u4ea7\u751f\u4efb\u4f55\u6548\u679c\u3002\n\n// \u793a\u4f8b\nasync (args, { url, body, headers, userMsg, method } = {}) => {\n return { url, body, headers, userMsg, method };\n}",en:xt,zh_TW:"1\u3001\u7b2c\u4e00\u500b\u53c3\u6578\u5305\u542b\u5982\u4e0b\u6b04\u4f4d\uff1a'texts', 'from', 'to', 'url', 'key', 'model', 'systemPrompt', ...\n2\u3001\u56de\u50b3\u503c\u5fc5\u9808\u662f\u5305\u542b\u4ee5\u4e0b\u6b04\u4f4d\u7684\u7269\u4ef6\uff1a 'url', 'body', 'headers', 'method'\n3\u3001\u82e5\u56de\u50b3\u7a7a\u503c\uff0c\u5247 hook \u51fd\u5f0f\u4e0d\u6703\u7522\u751f\u4efb\u4f55\u6548\u679c\u3002\n\n// \u7bc4\u4f8b\nasync (args, { url, body, headers, userMsg, method } = {}) => {\n return { url, body, headers, userMsg, method };\n}",ja:xt,ko:xt,tr:xt},response_hook_helper:{zh:"1\u3001\u7b2c\u4e00\u4e2a\u53c2\u6570\u5305\u542b\u5982\u4e0b\u5b57\u6bb5\uff1a'res', ...\n2\u3001\u8fd4\u56de\u503c\u5fc5\u987b\u662f\u5305\u542b\u4ee5\u4e0b\u5b57\u6bb5\u7684\u5bf9\u8c61\uff1a 'translations'\n \uff08'translations' \u5e94\u4e3a\u4e00\u4e2a\u4e8c\u7ef4\u6570\u7ec4\uff1a[[\u8bd1\u6587, \u539f\u6587\u8bed\u8a00]]\uff09\n3\u3001\u5982\u8fd4\u56de\u7a7a\u503c\uff0c\u5219hook\u51fd\u6570\u4e0d\u4f1a\u4ea7\u751f\u4efb\u4f55\u6548\u679c\u3002\n\n// \u793a\u4f8b\nasync ({ res, ...args }) => {\n const translations = [[\"\u4f60\u597d\", \"en\"]];\n const modelMsg = {}; // \u7528\u4e8eAI\u4e0a\u4e0b\u6587\n return { translations, modelMsg };\n}",en:St,zh_TW:"1\u3001\u7b2c\u4e00\u500b\u53c3\u6578\u5305\u542b\u5982\u4e0b\u6b04\u4f4d\uff1a'res', ...\n2\u3001\u56de\u50b3\u503c\u5fc5\u9808\u662f\u5305\u542b\u4ee5\u4e0b\u6b04\u4f4d\u7684\u7269\u4ef6\uff1a 'translations'\n \uff08'translations' \u61c9\u70ba\u4e00\u500b\u4e8c\u7dad\u9663\u5217\uff1a[[\u8b6f\u6587, \u539f\u6587\u8a9e\u8a00]]\uff09\n3\u3001\u82e5\u56de\u50b3\u7a7a\u503c\uff0c\u5247 hook \u51fd\u5f0f\u4e0d\u6703\u7522\u751f\u4efb\u4f55\u6548\u679c\u3002\n\n// \u7bc4\u4f8b\nasync ({ res, ...args }) => {\n const translations = [[\"\u4f60\u597d\", \"en\"]];\n const modelMsg = {}; // \u7528\u65bc AI \u4e0a\u4e0b\u6587\n return { translations, modelMsg };\n}",ja:St,ko:St,tr:St},translate_alt:{zh:"\u7ffb\u8bd1",en:"Translate",zh_TW:"\u7ffb\u8b6f",ja:"\u7ffb\u8a33",ko:"\ubc88\uc5ed",tr:"\xc7eviri"},basic_setting:{zh:"\u57fa\u672c\u8bbe\u7f6e",en:"Basic Setting",zh_TW:"\u57fa\u672c\u8a2d\u5b9a",ja:"\u57fa\u672c\u8a2d\u5b9a",ko:"\uae30\ubcf8 \uc124\uc815",tr:"Basit Ayar"},rules_setting:{zh:"\u89c4\u5219\u8bbe\u7f6e",en:"Rules Setting",zh_TW:"\u898f\u5247\u8a2d\u5b9a",ja:"\u30eb\u30fc\u30eb\u8a2d\u5b9a",ko:"\uaddc\uce59 \uc124\uc815",tr:"Kural Ayar\u0131"},apis_setting:{zh:"\u63a5\u53e3\u8bbe\u7f6e",en:"Apis Setting",zh_TW:"API\u8a2d\u5b9a",ja:"API\u8a2d\u5b9a",ko:"API \uc124\uc815",tr:"API Ayar\u0131"},prompt_management:{zh:"\u63d0\u793a\u8bcd\u7ba1\u7406",en:"Prompt Management",zh_TW:"\u63d0\u793a\u8a5e\u7ba1\u7406",ja:"\u30d7\u30ed\u30f3\u30d7\u30c8\u7ba1\u7406",ko:"\ud504\ub86c\ud504\ud2b8 \uad00\ub9ac",tr:"\u0130stem Y\xf6netimi"},sync_setting:{zh:"\u540c\u6b65\u8bbe\u7f6e",en:"Sync Setting",zh_TW:"\u540c\u6b65\u8a2d\u5b9a",ja:"\u540c\u671f\u8a2d\u5b9a",ko:"\ub3d9\uae30\ud654 \uc124\uc815",tr:"Senkronizasyon Ayar\u0131"},patch_setting:{zh:"\u8865\u4e01\u8bbe\u7f6e",en:"Patch Setting",zh_TW:"\u4fee\u88dc\u8a2d\u5b9a",ja:"\u30d1\u30c3\u30c1\u8a2d\u5b9a",ko:"\ud328\uce58 \uc124\uc815",tr:"Yama Ayar\u0131"},patch_setting_help:{zh:"\u9488\u5bf9\u4e00\u4e9b\u7279\u6b8a\u7f51\u7ad9\u7684\u4fee\u6b63\u811a\u672c\uff0c\u4ee5\u4fbf\u7ffb\u8bd1\u8f6f\u4ef6\u5f97\u5230\u66f4\u597d\u7684\u5c55\u793a\u6548\u679c\u3002",en:"Corrected scripts for some special websites so that the translation software can get better display results.",zh_TW:"\u91dd\u5c0d\u67d0\u4e9b\u7279\u6b8a\u7db2\u7ad9\u7684\u4fee\u6b63\u8173\u672c\uff0c\u8b93\u7ffb\u8b6f\u8edf\u9ad4\u6709\u66f4\u597d\u7684\u986f\u793a\u6548\u679c\u3002",ja:"\u4e00\u90e8\u306e\u7279\u6b8a\u306a\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u7528\u306e\u4fee\u6b63\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3001\u7ffb\u8a33\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u8868\u793a\u52b9\u679c\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002",ko:"\uc77c\ubd80 \ud2b9\uc218 \uc6f9\uc0ac\uc774\ud2b8\ub97c \uc704\ud55c \uc218\uc815 \uc2a4\ud06c\ub9bd\ud2b8\ub85c, \ubc88\uc5ed \uc18c\ud504\ud2b8\uc6e8\uc5b4\uc758 \ud45c\uc2dc \ud6a8\uacfc\ub97c \uac1c\uc120\ud569\ub2c8\ub2e4.",tr:"\xc7eviri yaz\u0131l\u0131m\u0131n\u0131n daha iyi g\xf6r\xfcnt\xfc sonu\xe7lar\u0131 alabilmesi i\xe7in baz\u0131 \xf6zel web sitelerinin komut dosyalar\u0131 d\xfczeltildi."},inject_webfix:{zh:"\u6ce8\u5165\u4fee\u590d\u8865\u4e01",en:"Inject Webfix",zh_TW:"\u6ce8\u5165\u4fee\u6b63\u88dc\u4e01",ja:"Webfix\u3092\u6ce8\u5165",ko:"\uc6f9 \uc218\uc815 \ud328\uce58 \uc8fc\uc785",tr:"Webfix'i Enjekte Edin"},about:{zh:"\u5173\u4e8e",en:"About",zh_TW:"\u95dc\u65bc",ja:"\u6982\u8981",ko:"\uc815\ubcf4",tr:"Hakk\u0131nda"},about_md:{zh:"README.md",en:"README.en.md",zh_TW:"README.md",ja:"README.ja.md",ko:"README.ko.md",tr:"Readme.En.Md"},about_md_local:{zh:"\u8bf7 [\u70b9\u51fb\u8fd9\u91cc](".concat("https://github.com/fishjar/kiss-translator",") \u67e5\u770b\u8be6\u60c5\u3002"),en:"Please [click here](".concat("https://github.com/fishjar/kiss-translator",") for details."),zh_TW:"\u8acb [\u9ede\u9019\u88e1](".concat("https://github.com/fishjar/kiss-translator",") \u6aa2\u8996\u8a73\u7d30\u5167\u5bb9\u3002"),ja:"\u8a73\u7d30\u306f [\u3053\u3061\u3089](".concat("https://github.com/fishjar/kiss-translator",") \u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002"),ko:"\uc790\uc138\ud55c \ub0b4\uc6a9\uc740 [\uc5ec\uae30](".concat("https://github.com/fishjar/kiss-translator",")\ub97c \ud074\ub9ad\ud558\uc138\uc694."),tr:"L\xfctfen Ayr\u0131nt\u0131lar \u0130\xe7in [Buraya T\u0131kla](".concat("https://github.com/fishjar/kiss-translator",")")},ui_lang:{zh:"\u754c\u9762\u8bed\u8a00",en:"Interface Language",zh_TW:"\u4ecb\u9762\u8a9e\u8a00",ja:"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u8a00\u8a9e",ko:"\uc778\ud130\ud398\uc774\uc2a4 \uc5b8\uc5b4",tr:"Aray\xfcz Dili"},version_warning:{zh:"\u5f53\u524d\u7248\u672c (v{0}) \u4e0d\u662f\u6700\u65b0\u7248\u672c (v{1})\uff0c\u53ef\u4ee5\u7b49\u5f85\u81ea\u52a8\u5347\u7ea7\u6216\u624b\u52a8",en:"Current version (v{0}) is not the latest version (v{1}). You can wait for auto-update or manually ",zh_TW:"\u7576\u524d\u7248\u672c (v{0}) \u4e0d\u662f\u6700\u65b0\u7248\u672c (v{1})\uff0c\u53ef\u4ee5\u7b49\u5f85\u81ea\u52d5\u5347\u7d1a\u6216\u624b\u52d5",ja:"\u73fe\u5728\u306e\u30d0\u30fc\u30b8\u30e7\u30f3 (v{0}) \u306f\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3 (v{1}) \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u81ea\u52d5\u66f4\u65b0\u3092\u5f85\u3064\u304b\u3001\u624b\u52d5\u3067",ko:"\ud604\uc7ac \ubc84\uc804(v{0})\uc740 \ucd5c\uc2e0 \ubc84\uc804(v{1})\uc774 \uc544\ub2d9\ub2c8\ub2e4. \uc790\ub3d9 \uc5c5\ub370\uc774\ud2b8\ub97c \uae30\ub2e4\ub9ac\uac70\ub098 \uc218\ub3d9\uc73c\ub85c ",tr:"Mevcut s\xfcr\xfcm (v{0}), en son s\xfcr\xfcm (v{1}) de\u011fildir. Otomatik g\xfcncellemeyi bekleyebilir veya manuel olarak g\xfcncelleyebilirsiniz "},download_update:{zh:"\u4e0b\u8f7d\u66f4\u65b0",en:"download update",zh_TW:"\u4e0b\u8f09\u66f4\u65b0",ja:"\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9",ko:"\uc5c5\ub370\uc774\ud2b8 \ub2e4\uc6b4\ub85c\ub4dc",tr:"G\xfcncellemeyi Indir"},fetch_limit:{zh:"\u6700\u5927\u5e76\u53d1\u8bf7\u6c42\u6570\u91cf (1-100)",en:"Maximum Number Of Concurrent Requests (1-100)",zh_TW:"\u6700\u5927\u540c\u6642\u8acb\u6c42\u6578\u91cf (1-100)",ja:"\u6700\u5927\u540c\u6642\u30ea\u30af\u30a8\u30b9\u30c8\u6570 (1-100)",ko:"\ucd5c\ub300 \ub3d9\uc2dc \uc694\uccad \uc218 (1-100)",tr:"Maksimum E\u015fzamanl\u0131 \u0130stek Say\u0131s\u0131 (1-100)"},if_think:{zh:"\u542f\u7528\u6216\u7981\u7528\u6a21\u578b\u7684\u6df1\u5ea6\u601d\u8003\u80fd\u529b",en:"Enable or disable the model\u2019s thinking behavior ",zh_TW:"\u555f\u7528\u6216\u505c\u7528\u6a21\u578b\u7684\u6df1\u5ea6\u601d\u8003\u80fd\u529b",ja:"\u30e2\u30c7\u30eb\u306e\u601d\u8003\u884c\u52d5\u3092\u6709\u52b9\u307e\u305f\u306f\u7121\u52b9\u306b\u3059\u308b",ko:"\ubaa8\ub378\uc758 \uc0ac\uace0 \ud589\ub3d9 \ud65c\uc131\ud654 \ub610\ub294 \ube44\ud65c\uc131\ud654",tr:"Modelin D\xfc\u015f\xfcnme Davran\u0131\u015f\u0131n\u0131 Etkinle\u015ftirme Veya Devre D\u0131\u015f\u0131 B\u0131rakma"},think:{zh:"\u542f\u7528\u6df1\u5ea6\u601d\u8003",en:"enable thinking",zh_TW:"\u555f\u7528\u6df1\u5ea6\u601d\u8003",ja:"\u601d\u8003\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc0ac\uace0 \ud65c\uc131\ud654",tr:"D\xfc\u015f\xfcnmeyi Etkinle\u015ftir"},nothink:{zh:"\u7981\u7528\u6df1\u5ea6\u601d\u8003",en:"disable thinking",zh_TW:"\u505c\u7528\u6df1\u5ea6\u601d\u8003",ja:"\u601d\u8003\u3092\u7121\u52b9\u306b\u3059\u308b",ko:"\uc0ac\uace0 \ube44\ud65c\uc131\ud654",tr:"D\xfc\u015f\xfcnmeyi Devre D\u0131\u015f\u0131 B\u0131rak"},think_ignore:{zh:"\u5ffd\u7565\u4ee5\u4e0b\u6a21\u578b\u7684\u8f93\u51fa,\u9017\u53f7(,)\u5206\u5272,\u5f53\u6a21\u578b\u652f\u6301\u601d\u8003\u4f46ollama\u4e0d\u652f\u6301\u65f6\u9700\u8981\u586b\u5199\u672c\u53c2\u6570",en:"Ignore the block for the following models, comma (,) separated",zh_TW:"\u5ffd\u7565\u4ee5\u4e0b\u6a21\u578b\u7684 \u8f38\u51fa\uff0c\u4ee5\u9017\u865f (,) \u5206\u9694\uff1b\u7576\u6a21\u578b\u652f\u63f4\u601d\u8003\u4f46 ollama \u4e0d\u652f\u63f4\u6642\u9700\u8981\u586b\u5beb\u6b64\u53c3\u6578",ja:"\u4ee5\u4e0b\u306e\u30e2\u30c7\u30eb\u306e\u51fa\u529b\u3092\u7121\u8996\u3059\u308b (\u30b3\u30f3\u30de(,)\u533a\u5207\u308a)\u3002\u30e2\u30c7\u30eb\u304c\u601d\u8003\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u304c\u3001ollama\u304c\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306b\u8a18\u5165\u304c\u5fc5\u8981\u3067\u3059",ko:"\ub2e4\uc74c \ubaa8\ub378\uc758 \ube14\ub85d \ubb34\uc2dc (\uc27c\ud45c(,)\ub85c \uad6c\ubd84), \ubaa8\ub378\uc774 \uc0ac\uace0\ub97c \uc9c0\uc6d0\ud558\uc9c0\ub9cc ollama\uac00 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0 \uc774 \ub9e4\uac1c\ubcc0\uc218\ub97c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4",tr:"A\u015fa\u011f\u0131daki modeller i\xe7in blo\u011funu dikkate almay\u0131n"},thinking_mode:{zh:"\u601d\u8003\u6a21\u5f0f",en:"Thinking Mode",zh_TW:"\u601d\u8003\u6a21\u5f0f",ja:"\u601d\u8003\u30e2\u30fc\u30c9",ko:"\uc0ac\uace0 \ubaa8\ub4dc",tr:"D\xfc\u015f\xfcnme Modu"},thinking_mode_default:{zh:"\u63a5\u53e3\u9ed8\u8ba4",en:"API Default",zh_TW:"\u4ecb\u9762\u9810\u8a2d",ja:"API\u30c7\u30d5\u30a9\u30eb\u30c8",ko:"API \uae30\ubcf8\uac12",tr:"API Varsay\u0131lan\u0131"},thinking_mode_enabled:{zh:"\u5f00\u542f\u601d\u8003",en:"Enable Thinking",zh_TW:"\u958b\u555f\u601d\u8003",ja:"\u601d\u8003\u3092\u6709\u52b9",ko:"\uc0ac\uace0 \ud65c\uc131\ud654",tr:"D\xfc\u015f\xfcnmeyi Etkinle\u015ftir"},thinking_mode_disabled:{zh:"\u5173\u95ed\u601d\u8003",en:"Disable Thinking",zh_TW:"\u95dc\u9589\u601d\u8003",ja:"\u601d\u8003\u3092\u7121\u52b9",ko:"\uc0ac\uace0 \ube44\ud65c\uc131\ud654",tr:"D\xfc\u015f\xfcnmeyi Devre D\u0131\u015f\u0131 B\u0131rak"},thinking_mode_helper:{zh:"\u76ee\u524d\u5404\u5bb6\u63a5\u53e3\u6df7\u4e71\uff0c\u5982\u679c\u51fa\u73b0\u5f02\u5e38\uff0c\u8bf7\u4f7f\u7528\u63a5\u53e3\u9ed8\u8ba4\u9009\u9879",en:'The thinking parameters vary across APIs. If you encounter errors, please use the "API Default" option.',zh_TW:"\u76ee\u524d\u5404\u5bb6\u4ecb\u9762\u6df7\u4e82\uff0c\u5982\u679c\u51fa\u73fe\u7570\u5e38\uff0c\u8acb\u4f7f\u7528\u4ecb\u9762\u9810\u8a2d\u9078\u9805",ja:"\u5404API\u306e\u601d\u8003\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u7d71\u4e00\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u300cAPI\u30c7\u30d5\u30a9\u30eb\u30c8\u300d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:'API\ubcc4 \uc0ac\uace0 \ub9e4\uac1c\ubcc0\uc218\uac00 \ud1b5\uc77c\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc624\ub958 \ubc1c\uc0dd \uc2dc "API \uae30\ubcf8\uac12"\uc744 \uc0ac\uc6a9\ud558\uc138\uc694.',tr:'API\'ler aras\u0131nda d\xfc\u015f\xfcnme parametreleri farkl\u0131l\u0131k g\xf6sterir. Hata ile kar\u015f\u0131la\u015f\u0131rsan\u0131z l\xfctfen "API Varsay\u0131lan\u0131" se\xe7ene\u011fini kullan\u0131n.'},thinking_effort:{zh:"\u601d\u8003\u5f3a\u5ea6",en:"Thinking Effort",zh_TW:"\u601d\u8003\u5f37\u5ea6",ja:"\u601d\u8003\u30ec\u30d9\u30eb",ko:"\uc0ac\uace0 \uc218\uc900",tr:"D\xfc\u015f\xfcnme \xc7abas\u0131"},thinking_effort_default:{zh:"\u63a5\u53e3\u9ed8\u8ba4",en:"API Default",zh_TW:"\u4ecb\u9762\u9810\u8a2d",ja:"API\u30c7\u30d5\u30a9\u30eb\u30c8",ko:"API \uae30\ubcf8\uac12",tr:"API Varsay\u0131lan\u0131"},fetch_interval:{zh:"\u6bcf\u6b21\u8bf7\u6c42\u95f4\u9694\u65f6\u95f4 (0-5000ms)",en:"Time Between Requests (0-5000ms)",zh_TW:"\u6bcf\u6b21\u8acb\u6c42\u9593\u9694\u6642\u9593 (0-5000ms)",ja:"\u30ea\u30af\u30a8\u30b9\u30c8\u9593\u9694 (0-5000ms)",ko:"\uc694\uccad \uac04 \uc2dc\uac04 (0-5000ms)",tr:"\u0130stekler Aras\u0131ndaki S\xfcre (0-5000Ms)"},translate_interval:{zh:"\u7ffb\u8bd1\u95f4\u9694\u65f6\u95f4 (1-2000ms)",en:"Translation Interval (1-2000ms)",zh_TW:"\u7ffb\u8b6f\u9593\u9694\u6642\u9593 (1-2000ms)",ja:"\u7ffb\u8a33\u9593\u9694 (1-2000ms)",ko:"\ubc88\uc5ed \uac04\uaca9 (1-2000ms)",tr:"\xc7eviri Aral\u0131\u011f\u0131 (1-2000Ms)"},http_timeout:{zh:"\u8bf7\u6c42\u8d85\u65f6\u65f6\u95f4 (1-600s)",en:"Request Timeout Time (1-600s)",zh_TW:"\u8acb\u6c42\u903e\u6642\u6642\u9593 (1-600s)",ja:"\u30ea\u30af\u30a8\u30b9\u30c8\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 (1-600s)",ko:"\uc694\uccad \uc2dc\uac04 \ucd08\uacfc (1-600s)",tr:"\u0130stek Zaman A\u015f\u0131m\u0131 S\xfcresi (1-600S)"},custom_header:{zh:"\u81ea\u5b9a\u4e49Header\u53c2\u6570",en:"Custom Header Params",zh_TW:"\u81ea\u8a02 Header \u53c3\u6578",ja:"\u30ab\u30b9\u30bf\u30e0\u30d8\u30c3\u30c0\u30fc",ko:"\uc0ac\uc6a9\uc790 \uc9c0\uc815 \ud5e4\ub354",tr:"\xd6zel Ba\u015fl\u0131k Parametreleri"},custom_header_help:{zh:'\u4f7f\u7528JSON\u683c\u5f0f\uff0c\u4f8b\u5982 "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"',en:'Use JSON format, for example "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"',zh_TW:'\u4f7f\u7528JSON\u683c\u5f0f\uff0c\u4f8b\u5982 "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"',ja:'JSON\u5f62\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b: "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"',ko:'JSON \ud615\uc2dd\uc744 \uc0ac\uc6a9\ud558\uc138\uc694. \uc608: "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"',tr:'\xd6rne\u011fin, "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0" \u015feklinde JSON format\u0131n\u0131 kullan\u0131n.'},custom_body:{zh:"\u81ea\u5b9a\u4e49Body\u53c2\u6570",en:"Custom Body Params",zh_TW:"\u81ea\u8a02 Body \u53c3\u6578",ja:"\u30ab\u30b9\u30bf\u30e0\u30dc\u30c7\u30a3",ko:"\uc0ac\uc6a9\uc790 \uc9c0\uc815 \ubc14\ub514",tr:"\xd6zel G\xf6vde Parametreleri"},custom_body_help:{zh:'\u4f7f\u7528JSON\u683c\u5f0f\uff0c\u4f8b\u5982 "top_p": 0.7',en:'Use JSON format, for example "top_p": 0.7',zh_TW:'\u4f7f\u7528JSON\u683c\u5f0f\uff0c\u4f8b\u5982 "top_p": 0.7',ja:'JSON\u5f62\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b: "top_p": 0.7',ko:'JSON \ud615\uc2dd\uc744 \uc0ac\uc6a9\ud558\uc138\uc694. \uc608: "top_p": 0.7',tr:'JSON format\u0131n\u0131 kullan\u0131n, \xf6rne\u011fin "top_p": 0.7'},gemini_interactions_custom_body_help:{zh:"\u4f7f\u7528 Interactions API \u9876\u5c42 JSON \u5b57\u6bb5\uff1bRequest Hook \u6536\u5230\u7684\u4e5f\u662f Interactions \u8bf7\u6c42\u7ed3\u6784\u3002",en:"Use top-level Interactions API JSON fields. Request Hook also receives the Interactions request shape.",zh_TW:"\u4f7f\u7528 Interactions API \u9802\u5c64 JSON \u6b04\u4f4d\uff1bRequest Hook \u6536\u5230\u7684\u4e5f\u662f Interactions \u8acb\u6c42\u7d50\u69cb\u3002",ja:"Interactions API \u306e\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb JSON \u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002Request Hook \u3082 Interactions \u306e\u30ea\u30af\u30a8\u30b9\u30c8\u5f62\u5f0f\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002",ko:"Interactions API \ucd5c\uc0c1\uc704 JSON \ud544\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc138\uc694. Request Hook\ub3c4 Interactions \uc694\uccad \uad6c\uc870\ub97c \ubc1b\uc2b5\ub2c8\ub2e4.",tr:"\xdcst d\xfczey Interactions API JSON alanlar\u0131n\u0131 kullan\u0131n. Request Hook da Interactions istek yap\u0131s\u0131n\u0131 al\u0131r."},min_translate_length:{zh:"\u6700\u5c0f\u7ffb\u8bd1\u5b57\u7b26\u6570 (1-100)",en:"Minimum number Of Translated Characters (1-100)",zh_TW:"\u6700\u5c0f\u7ffb\u8b6f\u5b57\u5143\u6578 (1-100)",ja:"\u6700\u5c0f\u7ffb\u8a33\u6587\u5b57\u6570 (1-100)",ko:"\ucd5c\uc18c \ubc88\uc5ed \ubb38\uc790 \uc218 (1-100)",tr:"Minimum \xc7evrilmi\u015f Karakter Say\u0131s\u0131 (1-100)"},max_translate_length:{zh:"\u6700\u5927\u7ffb\u8bd1\u5b57\u7b26\u6570 (100-100000)",en:"Maximum number Of Translated Characters (100-100000)",zh_TW:"\u6700\u5927\u7ffb\u8b6f\u5b57\u5143\u6578 (100-100000)",ja:"\u6700\u5927\u7ffb\u8a33\u6587\u5b57\u6570 (100-100000)",ko:"\ucd5c\ub300 \ubc88\uc5ed \ubb38\uc790 \uc218 (100-100000)",tr:"Maksimum \xc7evrilmi\u015f Karakter Say\u0131s\u0131 (100-100000)"},num_of_newline_characters:{zh:"\u6362\u884c\u5b57\u7b26\u6570 (1-1000)",en:"Number of Newline Characters (1-1000)",zh_TW:"\u63db\u884c\u5b57\u5143\u6578 (1-1000)",ja:"\u6539\u884c\u6587\u5b57\u6570 (1-1000)",ko:"\uc904\ubc14\uafc8 \ubb38\uc790 \uc218 (1-1000)",tr:"Yeni Sat\u0131r Karakter Say\u0131s\u0131 (1-1000)"},translate_service:{zh:"\u7ffb\u8bd1\u670d\u52a1",en:"Translate Service",zh_TW:"\u7ffb\u8b6f\u670d\u52d9",ja:"\u7ffb\u8a33\u30b5\u30fc\u30d3\u30b9",ko:"\ubc88\uc5ed \uc11c\ube44\uc2a4",tr:"\xc7eviri Hizmeti"},translate_service_multiple:{zh:"\u7ffb\u8bd1\u670d\u52a1 (\u652f\u6301\u591a\u9009)",en:"Translation service (multiple supported)",zh_TW:"\u7ffb\u8b6f\u670d\u52d9 (\u652f\u63f4\u591a\u9078)",ja:"\u7ffb\u8a33\u30b5\u30fc\u30d3\u30b9 (\u8907\u6570\u9078\u629e\u53ef)",ko:"\ubc88\uc5ed \uc11c\ube44\uc2a4 (\ub2e4\uc911 \uc120\ud0dd \uc9c0\uc6d0)",tr:"\xc7eviri Hizmeti (Birden Fazla Desteklenir)"},single_word_no_trans:{zh:"\u5355\u4e2a\u5355\u8bcd\u5212\u8bcd\u4e0d\u8c03\u7528\u7ffb\u8bd1\u670d\u52a1",en:"Do not use translation services for single word",zh_TW:"\u9078\u53d6\u55ae\u4e00\u55ae\u5b57\u6642\u4e0d\u547c\u53eb\u7ffb\u8b6f\u670d\u52d9",ja:"\u5358\u4e00\u5358\u8a9e\u306f\u7ffb\u8a33\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3057\u306a\u3044",ko:"\ub2e8\uc77c \ub2e8\uc5b4\ub294 \ubc88\uc5ed \uc11c\ube44\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c",tr:"Tek Kelime \u0130\xe7in \xc7eviri Hizmetlerini Kullanmay\u0131n"},auto_fav_word:{zh:"\u81ea\u52a8\u6536\u85cf\u8bcd\u6c47",en:"Automatically favorite words",zh_TW:"\u81ea\u52d5\u6536\u85cf\u8a5e\u5f59",ja:"\u5358\u8a9e\u3092\u81ea\u52d5\u3067\u304a\u6c17\u306b\u5165\u308a\u306b\u8ffd\u52a0",ko:"\ub2e8\uc5b4 \uc790\ub3d9 \uc990\uaca8\ucc3e\uae30",tr:"Kelimeleri Otomatik Favorilere Ekle"},translate_timing:{zh:"\u7ffb\u8bd1\u65f6\u673a",en:"Translate Timing",zh_TW:"\u7ffb\u8b6f\u6642\u6a5f",ja:"\u7ffb\u8a33\u30bf\u30a4\u30df\u30f3\u30b0",ko:"\ubc88\uc5ed \uc2dc\uc810",tr:"\xc7eviri Zamanlamas\u0131"},mk_pagescroll:{zh:"\u6eda\u52a8\u52a0\u8f7d\u7ffb\u8bd1\uff08\u63a8\u8350\uff09",en:"Rolling Loading (Suggested)",zh_TW:"\u6efe\u52d5\u8f09\u5165\u7ffb\u8b6f\uff08\u5efa\u8b70\uff09",ja:"\u30b9\u30af\u30ed\u30fc\u30eb\u7ffb\u8a33 (\u63a8\u5968)",ko:"\uc2a4\ud06c\ub864 \ubc88\uc5ed (\uad8c\uc7a5)",tr:"Kademeli Y\xfckleme (\xd6nerilen)"},mk_pageopen:{zh:"\u7acb\u5373\u5168\u90e8\u7ffb\u8bd1",en:"Translate all now",zh_TW:"\u7acb\u5373\u5168\u90e8\u7ffb\u8b6f",ja:"\u3059\u3050\u306b\u3059\u3079\u3066\u7ffb\u8a33",ko:"\uc989\uc2dc \ubaa8\ub450 \ubc88\uc5ed",tr:"Hepsini \u015eimdi \xc7evir"},mk_mouseover:{zh:"\u9f20\u6807\u60ac\u505c\u7ffb\u8bd1",en:"Mouseover",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u7ffb\u8b6f",ja:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u7ffb\u8a33",ko:"\ub9c8\uc6b0\uc2a4\uc624\ubc84 \ubc88\uc5ed",tr:"Fareyle \xdczerine Gelme"},mk_ctrlKey:{zh:"Control + \u9f20\u6807\u60ac\u505c",en:"Control + Mouseover",zh_TW:"Control + \u6ed1\u9f20\u61f8\u505c",ja:"Control + \u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc",ko:"Control + \ub9c8\uc6b0\uc2a4\uc624\ubc84",tr:"Control + Fareyle \xdczerine Gelme"},mk_shiftKey:{zh:"Shift + \u9f20\u6807\u60ac\u505c",en:"Shift + Mouseover",zh_TW:"Shift + \u6ed1\u9f20\u61f8\u505c",ja:"Shift + \u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc",ko:"Shift + \ub9c8\uc6b0\uc2a4\uc624\ubc84",tr:"Shift + Fareyle \xdczerine Gelme"},mk_altKey:{zh:"Alt + \u9f20\u6807\u60ac\u505c",en:"Alt + Mouseover",zh_TW:"Alt + \u6ed1\u9f20\u61f8\u505c",ja:"Alt + \u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc",ko:"Alt + \ub9c8\uc6b0\uc2a4\uc624\ubc84",tr:"Alt + Fareyle \xdczerine Gelme"},from_lang:{zh:"\u539f\u6587\u8bed\u8a00",en:"Source Language",zh_TW:"\u539f\u6587\u8a9e\u8a00",ja:"\u539f\u6587\u306e\u8a00\u8a9e",ko:"\uc6d0\ubcf8 \uc5b8\uc5b4",tr:"Kaynak Dil"},to_lang:{zh:"\u76ee\u6807\u8bed\u8a00",en:"Target Language",zh_TW:"\u76ee\u6a19\u8a9e\u8a00",ja:"\u7ffb\u8a33\u5148\u306e\u8a00\u8a9e",ko:"\ub300\uc0c1 \uc5b8\uc5b4",tr:"Hedef Dil"},to_lang2:{zh:"\u7b2c\u4e8c\u76ee\u6807\u8bed\u8a00",en:"Target Language 2",zh_TW:"\u7b2c\u4e8c\u76ee\u6a19\u8a9e\u8a00",ja:"\u7b2c\u4e8c\u7ffb\u8a33\u5148\u306e\u8a00\u8a9e",ko:"\ub450 \ubc88\uc9f8 \ub300\uc0c1 \uc5b8\uc5b4",tr:"Hedef Dil 2"},to_lang2_helper:{zh:"\u8bbe\u5b9a\u540e\uff0c\u4e0e\u76ee\u6807\u8bed\u8a00\u4ea7\u751f\u4e92\u8bd1\u6548\u679c\uff0c\u4f46\u4f9d\u8d56\u8fdc\u7a0b\u8bed\u8a00\u8bc6\u522b\u3002",en:"After setting, it will produce mutual translation effect with the target language, but it relies on remote language recognition.",zh_TW:"\u8a2d\u5b9a\u5f8c\u6703\u8207\u76ee\u6a19\u8a9e\u8a00\u4e92\u8b6f\uff0c\u4f46\u4f9d\u8cf4\u9060\u7aef\u8a9e\u8a00\u5075\u6e2c\u3002",ja:"\u8a2d\u5b9a\u5f8c\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u8a00\u8a9e\u3068\u306e\u76f8\u4e92\u7ffb\u8a33\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u30ea\u30e2\u30fc\u30c8\u8a00\u8a9e\u8a8d\u8b58\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002",ko:"\uc124\uc815 \ud6c4, \ub300\uc0c1 \uc5b8\uc5b4\uc640 \uc0c1\ud638 \ubc88\uc5ed \ud6a8\uacfc\uac00 \ubc1c\uc0dd\ud558\uc9c0\ub9cc, \uc6d0\uaca9 \uc5b8\uc5b4 \uc778\uc2dd\uc5d0 \uc758\uc874\ud569\ub2c8\ub2e4.",tr:"Ayarlar yap\u0131ld\u0131ktan sonra, hedef dille kar\u015f\u0131l\u0131kl\u0131 \xe7eviri etkisi yaratacakt\u0131r, ancak uzaktan dil tan\u0131ma \xf6zelli\u011fine ba\u011fl\u0131d\u0131r"},text_style:{zh:"\u8bd1\u6587\u6837\u5f0f",en:"Text Style",zh_TW:"\u8b6f\u6587\u6a23\u5f0f",ja:"\u7ffb\u8a33\u30c6\u30ad\u30b9\u30c8\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed \ud14d\uc2a4\ud2b8 \uc2a4\ud0c0\uc77c",tr:"Metin Stili"},original_text_style:{zh:"\u539f\u6587\u6837\u5f0f",en:"Original Text Style",zh_TW:"\u539f\u6587\u6a23\u5f0f",ja:"\u539f\u6587\u30c6\u30ad\u30b9\u30c8\u30b9\u30bf\u30a4\u30eb",ko:"\uc6d0\ubb38 \ud14d\uc2a4\ud2b8 \uc2a4\ud0c0\uc77c",tr:"Orijinal Metin Stili"},text_style_alt:{zh:"\u8bd1\u6587\u6837\u5f0f",en:"Text Style",zh_TW:"\u8b6f\u6587\u6a23\u5f0f",ja:"\u7ffb\u8a33\u30c6\u30ad\u30b9\u30c8\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed \ud14d\uc2a4\ud2b8 \uc2a4\ud0c0\uc77c",tr:"Metin Stili"},bg_color:{zh:"\u6837\u5f0f\u989c\u8272",en:"Style Color",zh_TW:"\u6a23\u5f0f\u984f\u8272",ja:"\u30b9\u30bf\u30a4\u30eb\u30ab\u30e9\u30fc",ko:"\uc2a4\ud0c0\uc77c \uc0c9\uc0c1",tr:"Stil Rengi"},remain_unchanged:{zh:"\u4fdd\u7559\u4e0d\u53d8",en:"Remain Unchanged",zh_TW:"\u4fdd\u7559\u4e0d\u8b8a",ja:"\u5909\u66f4\u3057\u306a\u3044",ko:"\ubcc0\uacbd\ud558\uc9c0 \uc54a\uc74c",tr:"De\u011fi\u015fmeden Kal"},google_api:{zh:"\u8c37\u6b4c\u7ffb\u8bd1\u63a5\u53e3",en:"Google Translate API",zh_TW:"Google \u7ffb\u8b6f\u4ecb\u9762",ja:"Google \u7ffb\u8a33 API",ko:"Google \ubc88\uc5ed API",tr:"Google \xc7eviri API'si"},default_selector:{zh:"\u9ed8\u8ba4\u9009\u62e9\u5668",en:"Default selector",zh_TW:"\u9810\u8a2d\u9078\u64c7\u5668",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u30bb\u30ec\u30af\u30bf",ko:"\uae30\ubcf8 \uc120\ud0dd\uc790",tr:"Varsay\u0131lan Se\xe7ici"},selector_rules:{zh:"\u9009\u62e9\u5668\u89c4\u5219",en:"Selector Rules",zh_TW:"\u9078\u64c7\u5668\u898f\u5247",ja:"\u30bb\u30ec\u30af\u30bf\u30fc\u30eb\u30fc\u30eb",ko:"\uc120\ud0dd\uc790 \uaddc\uce59",tr:"Se\xe7ici Kurallar\u0131"},save:{zh:"\u4fdd\u5b58",en:"Save",zh_TW:"\u5132\u5b58",ja:"\u4fdd\u5b58",ko:"\uc800\uc7a5",tr:"Kaydet"},edit:{zh:"\u7f16\u8f91",en:"Edit",zh_TW:"\u7de8\u8f2f",ja:"\u7de8\u96c6",ko:"\uc218\uc815",tr:"D\xfczenle"},cancel:{zh:"\u53d6\u6d88",en:"Cancel",zh_TW:"\u53d6\u6d88",ja:"\u30ad\u30e3\u30f3\u30bb\u30eb",ko:"\ucde8\uc18c",tr:"\u0130ptal Et"},delete:{zh:"\u5220\u9664",en:"Delete",zh_TW:"\u522a\u9664",ja:"\u524a\u9664",ko:"\uc0ad\uc81c",tr:"Sil"},reset:{zh:"\u91cd\u7f6e",en:"Reset",zh_TW:"\u91cd\u8a2d",ja:"\u30ea\u30bb\u30c3\u30c8",ko:"\ucd08\uae30\ud654",tr:"S\u0131f\u0131rla"},add:{zh:"\u6dfb\u52a0",en:"Add",zh_TW:"\u65b0\u589e",ja:"\u8ffd\u52a0",ko:"\ucd94\uac00",tr:"Ekle"},bulk_actions:{zh:"\u6279\u91cf\u64cd\u4f5c",en:"Bulk Actions",zh_TW:"\u6279\u6b21\u64cd\u4f5c",ja:"\u4e00\u62ec\u64cd\u4f5c",ko:"\uc77c\uad04 \uc791\uc5c5",tr:"Toplu \u0130\u015flemler"},select_all:{zh:"\u5168\u9009",en:"Select All",zh_TW:"\u5168\u9078",ja:"\u3059\u3079\u3066\u9078\u629e",ko:"\ubaa8\ub450 \uc120\ud0dd",tr:"T\xfcm\xfcn\xfc Se\xe7"},deselect_all:{zh:"\u5168\u4e0d\u9009",en:"Deselect All",zh_TW:"\u5168\u90e8\u53d6\u6d88\u9078\u53d6",ja:"\u3059\u3079\u3066\u89e3\u9664",ko:"\ubaa8\ub450 \ud574\uc81c",tr:"T\xfcm\xfcn\xfcn Se\xe7imini Kald\u0131r"},pin_to_top:{zh:"\u7f6e\u9876",en:"Pin to Top",zh_TW:"\u7f6e\u9802",ja:"\u5148\u982d\u306b\u56fa\u5b9a",ko:"\ub9e8 \uc704\uc5d0 \uace0\uc815",tr:"En \xdcste Sabitle"},delete_selected_apis_confirm:{zh:"\u786e\u5b9a\u5220\u9664\u5df2\u9009\u7684 {count} \u4e2a\u63a5\u53e3\u5417\uff1f",en:"Delete {count} selected interfaces?",zh_TW:"\u78ba\u5b9a\u522a\u9664\u5df2\u9078\u7684 {count} \u500b\u4ecb\u9762\u55ce\uff1f",ja:"\u9078\u629e\u3057\u305f {count} \u4ef6\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f",ko:"\uc120\ud0dd\ud55c \uc778\ud130\ud398\uc774\uc2a4 {count}\uac1c\ub97c \uc0ad\uc81c\ud560\uae4c\uc694?",tr:"Se\xe7ili {Count} Aray\xfcz\xfc Silmek \u0130stiyor Musunuz?"},copy_api:{zh:"\u590d\u5236\u63a5\u53e3",en:"Copy Interface",zh_TW:"\u8907\u88fd\u4ecb\u9762",ja:"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u30b3\u30d4\u30fc",ko:"\uc778\ud130\ud398\uc774\uc2a4 \ubcf5\uc0ac",tr:"Aray\xfcz\xfc Kopyala"},prompt_name:{zh:"\u540d\u79f0",en:"Name",zh_TW:"\u540d\u7a31",ja:"\u540d\u524d",ko:"\uc774\ub984",tr:"Ad"},system_prompt:{zh:"\u7cfb\u7edf\u63d0\u793a\u8bcd",en:"System Prompt",zh_TW:"\u7cfb\u7d71\u63d0\u793a\u8a5e",ja:"\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc2dc\uc2a4\ud15c \ud504\ub86c\ud504\ud2b8",tr:"Sistem \u0130stemi"},user_prompt:{zh:"\u7528\u6237\u63d0\u793a\u8bcd",en:"User Prompt",zh_TW:"\u4f7f\u7528\u8005\u63d0\u793a\u8a5e",ja:"\u30e6\u30fc\u30b6\u30fc\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc0ac\uc6a9\uc790 \ud504\ub86c\ud504\ud2b8",tr:"Kullan\u0131c\u0131 \u0130stemi"},copy_as_template:{zh:"\u590d\u5236\u4e3a\u6a21\u677f",en:"Copy as Template",zh_TW:"\u8907\u88fd\u70ba\u7bc4\u672c",ja:"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3068\u3057\u3066\u30b3\u30d4\u30fc",ko:"\ud15c\ud50c\ub9bf\uc73c\ub85c \ubcf5\uc0ac",tr:"\u015eablon Olarak Kopyala"},delete_prompt_confirm:{zh:"\u786e\u5b9a\u5220\u9664\u8fd9\u4efd\u63d0\u793a\u8bcd\u5417\uff1f",en:"Delete this prompt?",zh_TW:"\u78ba\u5b9a\u522a\u9664\u9019\u4efd\u63d0\u793a\u8a5e\u55ce\uff1f",ja:"\u3053\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f",ko:"\uc774 \ud504\ub86c\ud504\ud2b8\ub97c \uc0ad\uc81c\ud560\uae4c\uc694?",tr:"Bu \u0130stem Silinsin Mi?"},custom_prompt:{zh:"\u81ea\u5b9a\u4e49\u63d0\u793a\u8bcd",en:"Custom Prompt",zh_TW:"\u81ea\u8a02\u63d0\u793a\u8a5e",ja:"\u30ab\u30b9\u30bf\u30e0\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc0ac\uc6a9\uc790 \ud504\ub86c\ud504\ud2b8",tr:"\xd6zel \u0130stem"},add_prompt:{zh:"\u65b0\u589e\u63d0\u793a\u8bcd",en:"Add Prompt",zh_TW:"\u65b0\u589e\u63d0\u793a\u8a5e",ja:"\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u8ffd\u52a0",ko:"\ud504\ub86c\ud504\ud2b8 \ucd94\uac00",tr:"\u0130stem Ekle"},prompt_category_batch_system:{zh:"\u805a\u5408\u7cfb\u7edf\u63d0\u793a\u8bcd",en:"Batch System Prompt",zh_TW:"\u805a\u5408\u7cfb\u7d71\u63d0\u793a\u8a5e",ja:"\u4e00\u62ec\u7ffb\u8a33\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc77c\uad04 \uc2dc\uc2a4\ud15c \ud504\ub86c\ud504\ud2b8",tr:"Toplu Sistem \u0130stemi"},prompt_category_user:{zh:"\u7528\u6237\u63d0\u793a\u8bcd",en:"User Prompt",zh_TW:"\u4f7f\u7528\u8005\u63d0\u793a\u8a5e",ja:"\u30e6\u30fc\u30b6\u30fc\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc0ac\uc6a9\uc790 \ud504\ub86c\ud504\ud2b8",tr:"Kullan\u0131c\u0131 \u0130stemi"},prompt_category_subtitle:{zh:"\u5b57\u5e55\u63d0\u793a\u8bcd",en:"Subtitle Prompt",zh_TW:"\u5b57\u5e55\u63d0\u793a\u8a5e",ja:"\u5b57\u5e55\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc790\ub9c9 \ud504\ub86c\ud504\ud2b8",tr:"Altyaz\u0131 \u0130stemi"},prompt_category_dictionary:{zh:"\u8bcd\u5178\u63d0\u793a\u8bcd",en:"Dictionary Prompt",zh_TW:"\u8a5e\u5178\u63d0\u793a\u8a5e",ja:"\u8f9e\u66f8\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc0ac\uc804 \ud504\ub86c\ud504\ud2b8",tr:"S\xf6zl\xfck \u0130stemi"},batch_prompt:{zh:"\u805a\u5408\u7ffb\u8bd1\u63d0\u793a\u8bcd",en:"Batch Translation Prompt",zh_TW:"\u805a\u5408\u7ffb\u8b6f\u63d0\u793a\u8a5e",ja:"\u4e00\u62ec\u7ffb\u8a33\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc77c\uad04 \ubc88\uc5ed \ud504\ub86c\ud504\ud2b8",tr:"Toplu \xc7eviri \u0130stemi"},nobatch_prompt:{zh:"\u975e\u805a\u5408\u7ffb\u8bd1\u63d0\u793a\u8bcd",en:"Non-batch Translation Prompt",zh_TW:"\u975e\u805a\u5408\u7ffb\u8b6f\u63d0\u793a\u8a5e",ja:"\u975e\u4e00\u62ec\u7ffb\u8a33\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\ube44\uc77c\uad04 \ubc88\uc5ed \ud504\ub86c\ud504\ud2b8",tr:"Toplu Olmayan \xc7eviri \u0130stemi"},subtitle_prompt:{zh:"AI\u65ad\u53e5\u63d0\u793a\u8bcd",en:"AI Segmentation Prompt",zh_TW:"AI\u65b7\u53e5\u63d0\u793a\u8a5e",ja:"AI \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"AI \ubb38\uc7a5 \ubd84\ud560 \ud504\ub86c\ud504\ud2b8",tr:"AI Altyaz\u0131 \u0130stemi"},seg_prompt_mode:{zh:"AI\u65ad\u53e5\u63d0\u793a\u8bcd",en:"AI Segmentation Prompt",zh_TW:"AI\u65b7\u53e5\u63d0\u793a\u8a5e",ja:"AI \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"AI \ubb38\uc7a5 \ubd84\ud560 \ud504\ub86c\ud504\ud2b8",tr:"AI Segmentasyon \u0130stemi"},follow_api_prompt:{zh:"\u63a5\u53e3\u9ed8\u8ba4",en:"Interface Default",zh_TW:"\u4ecb\u9762\u9810\u8a2d",ja:"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u65e2\u5b9a",ko:"\uc778\ud130\ud398\uc774\uc2a4 \uae30\ubcf8\uac12",tr:"Aray\xfcz Varsay\u0131lan\u0131"},preset_prompt_nobatch_translation:{zh:"\u975e\u805a\u5408\u7ffb\u8bd1",en:"Non-batch Translation",zh_TW:"\u975e\u805a\u5408\u7ffb\u8b6f",ja:"\u975e\u4e00\u62ec\u7ffb\u8a33",ko:"\ube44\uc77c\uad04 \ubc88\uc5ed",tr:"Toplu Olmayan \xc7eviri"},preset_prompt_batch_translation_json:{zh:"\u805a\u5408\u7ffb\u8bd1\uff08JSON\uff09",en:"Batch Translation (JSON)",zh_TW:"\u805a\u5408\u7ffb\u8b6f\uff08JSON\uff09",ja:"\u4e00\u62ec\u7ffb\u8a33\uff08JSON\uff09",ko:"\uc77c\uad04 \ubc88\uc5ed(JSON)",tr:"Toplu \xc7eviri (JSON)"},preset_prompt_batch_translation_xml:{zh:"\u805a\u5408\u7ffb\u8bd1\uff08XML\uff09",en:"Batch Translation (XML)",zh_TW:"\u805a\u5408\u7ffb\u8b6f\uff08XML\uff09",ja:"\u4e00\u62ec\u7ffb\u8a33\uff08XML\uff09",ko:"\uc77c\uad04 \ubc88\uc5ed(XML)",tr:"Toplu \xc7eviri (XML)"},preset_prompt_batch_translation_line:{zh:"\u805a\u5408\u7ffb\u8bd1\uff08LINE\uff09",en:"Batch Translation (LINE)",zh_TW:"\u805a\u5408\u7ffb\u8b6f\uff08LINE\uff09",ja:"\u4e00\u62ec\u7ffb\u8a33\uff08LINE\uff09",ko:"\uc77c\uad04 \ubc88\uc5ed(LINE)",tr:"Toplu \xc7eviri (Line)"},preset_prompt_subtitle_segmentation:{zh:"\u5b57\u5e55 AI \u65ad\u53e5",en:"Subtitle AI Segmentation",zh_TW:"\u5b57\u5e55 AI \u65b7\u53e5",ja:"\u5b57\u5e55 AI \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3",ko:"\uc790\ub9c9 AI \ubb38\uc7a5 \ubd84\ud560",tr:"Altyaz\u0131 AI Segmentasyonu"},preset_prompt_dictionary_en_zh:{zh:"AI \u82f1\u6c49\u8bcd\u5178",en:"AI English-Chinese Dictionary",zh_TW:"AI \u82f1\u6f22\u8a5e\u5178",ja:"AI \u82f1\u4e2d\u8f9e\u66f8",ko:"AI \uc601\uc911 \uc0ac\uc804",tr:"AI \u0130ngilizce-\xc7ince S\xf6zl\xfck"},inject_rules:{zh:"\u6ce8\u5165\u8ba2\u9605\u89c4\u5219",en:"Inject Subscribe Rules",zh_TW:"\u6ce8\u5165\u8a02\u95b1\u898f\u5247",ja:"\u8cfc\u8aad\u30eb\u30fc\u30eb\u3092\u6ce8\u5165",ko:"\uad6c\ub3c5 \uaddc\uce59 \uc8fc\uc785",tr:"Abonelik Kurallar\u0131n\u0131 Ekle"},personal_rules:{zh:"\u4e2a\u4eba\u89c4\u5219",en:"Rules",zh_TW:"\u500b\u4eba\u898f\u5247",ja:"\u500b\u4eba\u30eb\u30fc\u30eb",ko:"\uac1c\uc778 \uaddc\uce59",tr:"Kurallar"},subscribe_rules:{zh:"\u8ba2\u9605\u89c4\u5219",en:"Subscribe",zh_TW:"\u8a02\u95b1\u898f\u5247",ja:"\u8cfc\u8aad\u30eb\u30fc\u30eb",ko:"\uad6c\ub3c5 \uaddc\uce59",tr:"Abonelik Kurallar\u0131"},overwrite_subscribe_rules:{zh:"\u8986\u5199\u8ba2\u9605\u89c4\u5219",en:"Overwrite",zh_TW:"\u8986\u5beb\u8a02\u95b1\u898f\u5247",ja:"\u8cfc\u8aad\u30eb\u30fc\u30eb\u3092\u4e0a\u66f8\u304d",ko:"\uad6c\ub3c5 \uaddc\uce59 \ub36e\uc5b4\uc4f0\uae30",tr:"\xdczerine Yaz"},subscribe_url:{zh:"\u8ba2\u9605\u5730\u5740",en:"Subscribe URL",zh_TW:"\u8a02\u95b1\u7db2\u5740",ja:"\u8cfc\u8aadURL",ko:"\uad6c\ub3c5 URL",tr:"Abonelik URL'si"},rules_warn_1:{zh:'1\u3001\u89c4\u5219\u751f\u6548\u7684\u4f18\u5148\u7ea7\u4f9d\u6b21\u4e3a\uff1a\u4e2a\u4eba\u89c4\u5219 > \u8ba2\u9605\u89c4\u5219 > \u5168\u5c40\u89c4\u5219\u3002"\u5168\u5c40\u89c4\u5219"\u76f8\u5f53\u4e8e\u515c\u5e95\u89c4\u5219\u3002',en:'1. The priority of rules is: personal rules > subscription rules > global rules. "Global rules" are like a fallback rule.',zh_TW:"1. \u898f\u5247\u751f\u6548\u7684\u512a\u5148\u9806\u5e8f\u4f9d\u5e8f\u70ba\uff1a\u500b\u4eba\u898f\u5247 > \u8a02\u95b1\u898f\u5247 > \u5168\u57df\u898f\u5247\u3002\u300c\u5168\u57df\u898f\u5247\u300d\u76f8\u7576\u65bc\u5099\u63f4\u898f\u5247\u3002",ja:"1. \u30eb\u30fc\u30eb\u306e\u512a\u5148\u9806\u4f4d: \u500b\u4eba\u30eb\u30fc\u30eb > \u8cfc\u8aad\u30eb\u30fc\u30eb > \u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb\u3002\u300c\u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb\u300d\u306f\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u30eb\u30fc\u30eb\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u3002",ko:'1. \uaddc\uce59 \uc6b0\uc120\uc21c\uc704: \uac1c\uc778 \uaddc\uce59 > \uad6c\ub3c5 \uaddc\uce59 > \uc804\uc5ed \uaddc\uce59. "\uc804\uc5ed \uaddc\uce59"\uc740 \uc77c\uc885\uc758 \ud3f4\ubc31(fallback) \uaddc\uce59\uc785\ub2c8\ub2e4.',tr:'1. Kurallar\u0131n \xf6nceli\u011fi \u015fudur: ki\u015fisel kurallar > abonelik kurallar\u0131 > genel kurallar. "Genel kurallar" bir geri d\xf6n\xfc\u015f kural\u0131 gibidir'},rules_warn_2:{zh:"2\u3001\u201c\u8ba2\u9605\u89c4\u5219\u201d\u9009\u62e9\u6ce8\u5165\u540e\u624d\u4f1a\u751f\u6548\u3002",en:'2. "Subscription rules" will take effect only after injection is selected.',zh_TW:"2\u3001\u300c\u8a02\u95b1\u898f\u5247\u300d\u9078\u64c7\u6ce8\u5165\u5f8c\u624d\u6703\u751f\u6548\u3002",ja:"2. \u300c\u8cfc\u8aad\u30eb\u30fc\u30eb\u300d\u306f\u6ce8\u5165\u3092\u9078\u629e\u3057\u305f\u5f8c\u306b\u306e\u307f\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002",ko:'2. "\uad6c\ub3c5 \uaddc\uce59"\uc740 \uc8fc\uc785\uc744 \uc120\ud0dd\ud55c \ud6c4\uc5d0\ub9cc \uc801\uc6a9\ub429\ub2c8\ub2e4.',tr:'2. "Abonelik kurallar\u0131" yaln\u0131zca enjeksiyon se\xe7ildikten sonra ge\xe7erli olacakt\u0131r.'},rules_warn_3:{zh:"3\u3001\u5173\u4e8e\u89c4\u5219\u586b\u5199\uff1a\u8f93\u5165\u6846\u7559\u7a7a\u6216\u4e0b\u62c9\u6846\u9009\u201c*\u201d\u8868\u793a\u91c7\u7528\u5168\u5c40\u89c4\u5219\u3002CSS\u9009\u62e9\u5668\u652f\u6301 + \u53f7\u524d\u7f00\u8868\u793a\u5728\u5168\u5c40\u89c4\u5219\u57fa\u7840\u4e0a\u8ffd\u52a0\uff0c- \u53f7\u8868\u793a\u5254\u9664\u3002",en:'3. Regarding filling in the rules: Leave the input box blank or select "*" in the drop-down box to use global rule. CSS selectors support prefixes: "+" means add to the global rules, "-" means exclude.',zh_TW:"3. \u898f\u5247\u586b\u5beb\u8aaa\u660e\uff1a\u8f38\u5165\u6846\u7559\u7a7a\u6216\u4e0b\u62c9\u9078\u64c7\u300c*\u300d\u8868\u793a\u4f7f\u7528\u5168\u57df\u898f\u5247\u3002CSS \u9078\u64c7\u5668\u652f\u63f4\u4f7f\u7528\u524d\u7db4\uff1a\u300c+\u300d\u8868\u793a\u5728\u5168\u57df\u898f\u5247\u57fa\u790e\u4e0a\u65b0\u589e\uff0c\u300c-\u300d\u8868\u793a\u6392\u9664\u3002",ja:"3. \u30eb\u30fc\u30eb\u306e\u8a18\u5165\u306b\u3064\u3044\u3066: \u5165\u529b\u30dc\u30c3\u30af\u30b9\u3092\u7a7a\u767d\u306b\u3059\u308b\u304b\u3001\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u3067\u300c*\u300d\u3092\u9078\u629e\u3059\u308b\u3068\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002CSS \u30bb\u30ec\u30af\u30bf\u30fc\u306f\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002\u300c+\u300d\u306f\u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb\u3078\u306e\u8ffd\u52a0\u3001\u300c-\u300d\u306f\u9664\u5916\u3092\u610f\u5473\u3057\u307e\u3059\u3002",ko:'3. \uaddc\uce59 \uc791\uc131 \uad00\ub828: \uc785\ub825\ub780\uc744 \ube44\uc6cc\ub450\uac70\ub098 \ub4dc\ub86d\ub2e4\uc6b4\uc5d0\uc11c "*"\ub97c \uc120\ud0dd\ud558\uba74 \uc804\uc5ed \uaddc\uce59\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. CSS \uc120\ud0dd\uc790\ub294 \uc811\ub450\uc0ac\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. "+"\ub294 \uc804\uc5ed \uaddc\uce59\uc5d0 \ucd94\uac00, "-"\ub294 \uc81c\uc678\ub97c \uc758\ubbf8\ud569\ub2c8\ub2e4.',tr:'3. Kurallar\u0131n Doldurulmas\u0131yla \u0130lgili Olarak: Genel Kural\u0131 Kullanmak \u0130\xe7in Giri\u015f Kutusunu Bo\u015f B\u0131rak\u0131n Veya A\xe7\u0131l\u0131r Kutuda "*" Se\xe7ene\u011fini Se\xe7in. Css Se\xe7icileri \xd6nekleri Destekler: "+" Genel Kurallara Ekleme Anlam\u0131na Gelir'},sync_warn:{zh:"\u6d89\u53ca\u9690\u79c1\u6570\u636e\u7684\u540c\u6b65\u8bf7\u8c28\u614e\u9009\u62e9\u7b2c\u4e09\u65b9\u540c\u6b65\u670d\u52a1\uff0c\u5efa\u8bae\u81ea\u884c\u642d\u5efa kiss-worker \u6216 WebDAV \u670d\u52a1\u3002",en:"When synchronizing data that involves privacy, please be cautious about choosing third-party sync services. It is recommended to set up your own sync service using kiss-worker or WebDAV.",zh_TW:"\u540c\u6b65\u6d89\u53ca\u96b1\u79c1\u8cc7\u6599\u6642\uff0c\u8acb\u8b39\u614e\u9078\u64c7\u7b2c\u4e09\u65b9\u540c\u6b65\u670d\u52d9\uff1b\u5efa\u8b70\u81ea\u884c\u67b6\u8a2d kiss-worker \u6216 WebDAV \u670d\u52d9\u3002",ja:"\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u306b\u95a2\u308f\u308b\u30c7\u30fc\u30bf\u3092\u540c\u671f\u3059\u308b\u5834\u5408\u3001\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306e\u540c\u671f\u30b5\u30fc\u30d3\u30b9\u306f\u614e\u91cd\u306b\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002kiss-worker \u3084 WebDAV \u30b5\u30fc\u30d3\u30b9\u3092\u81ea\u5df1\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002",ko:"\uac1c\uc778\uc815\ubcf4\uac00 \ud3ec\ud568\ub41c \ub370\uc774\ud130\ub97c \ub3d9\uae30\ud654\ud560 \uacbd\uc6b0, \ud0c0\uc0ac \ub3d9\uae30\ud654 \uc11c\ube44\uc2a4 \uc120\ud0dd\uc5d0 \uc2e0\uc911\uc744 \uae30\ud558\uc2ed\uc2dc\uc624. \uc790\uccb4 kiss-worker \ub610\ub294 WebDAV \uc11c\ube44\uc2a4\ub97c \uad6c\ucd95\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud569\ub2c8\ub2e4.",tr:"Gizlilikle ilgili verileri senkronize ederken, \xfc\xe7\xfcnc\xfc taraf senkronizasyon hizmetlerini se\xe7erken l\xfctfen dikkatli olun. KISS-Worker veya WebDAV kullanarak kendi senkronizasyon hizmetinizi kurman\u0131z \xf6nerilir"},sync_warn_gist:{zh:"GitHub Gist \u4e0d\u4f1a\u51fa\u73b0\u5728\u516c\u5f00\u641c\u7d22\u6216\u53d1\u73b0\u9875\u9762\u4e2d\uff0c\u4f46\u4efb\u4f55\u62e5\u6709\u8be5\u94fe\u63a5\u7684\u4eba\u90fd\u53ef\u4ee5\u67e5\u770b\u5185\u5bb9\u3002",en:"GitHub Gists do not appear in public searches or discovery pages, but anyone with the link can view the content.",zh_TW:"GitHub Gist \u4e0d\u6703\u51fa\u73fe\u5728\u516c\u958b\u641c\u5c0b\u6216\u63a2\u7d22\u9801\u9762\u4e2d\uff0c\u4f46\u4efb\u4f55\u64c1\u6709\u8a72\u9023\u7d50\u7684\u4eba\u90fd\u53ef\u4ee5\u67e5\u770b\u5167\u5bb9\u3002",ja:"GitHub Gist \u306f\u516c\u958b\u691c\u7d22\u3084\u767a\u898b\u30da\u30fc\u30b8\u306b\u306f\u8868\u793a\u3055\u308c\u307e\u305b\u3093\u304c\u3001\u30ea\u30f3\u30af\u3092\u6301\u3063\u3066\u3044\u308b\u4eba\u306f\u8ab0\u3067\u3082\u5185\u5bb9\u3092\u95b2\u89a7\u3067\u304d\u307e\u3059\u3002",ko:"GitHub Gist\ub294 \uacf5\uac1c \uac80\uc0c9\uc774\ub098 \ud0d0\uc0c9 \ud398\uc774\uc9c0\uc5d0 \ud45c\uc2dc\ub418\uc9c0 \uc54a\uc9c0\ub9cc, \ub9c1\ud06c\ub97c \uac00\uc9c4 \uc0ac\ub78c\uc740 \ub204\uad6c\ub098 \ub0b4\uc6a9\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"GitHub Gist'leri herkese a\xe7\u0131k aramalarda veya ke\u015fif sayfalar\u0131nda g\xf6r\xfcnmez, ancak ba\u011flant\u0131ya sahip herkes i\xe7eri\u011fi g\xf6r\xfcnt\xfcleyebilir."},sync_warn_2:{zh:"\u5982\u679c\u670d\u52a1\u5668\u5b58\u5728\u5176\u4ed6\u5ba2\u6237\u7aef\u540c\u6b65\u7684\u6570\u636e\uff0c\u7b2c\u4e00\u6b21\u540c\u6b65\u5c06\u76f4\u63a5\u8986\u76d6\u672c\u5730\u914d\u7f6e\uff0c\u540e\u9762\u5219\u6839\u636e\u4fee\u6539\u65f6\u95f4\uff0c\u65b0\u7684\u8986\u76d6\u65e7\u7684\u3002",en:"If the server has data synchronized by other clients, the first synchronization will directly overwrite the local configuration, and later, according to the modification time, the new one will overwrite the old one.",zh_TW:"\u82e5\u4f3a\u670d\u5668\u4e0a\u5b58\u5728\u5176\u4ed6\u7528\u6236\u7aef\u540c\u6b65\u7684\u8cc7\u6599\uff0c\u7b2c\u4e00\u6b21\u540c\u6b65\u6703\u76f4\u63a5\u8986\u84cb\u672c\u6a5f\u8a2d\u5b9a\uff1b\u4e4b\u5f8c\u5247\u4f9d\u4fee\u6539\u6642\u9593\uff0c\u7531\u65b0\u7684\u8986\u84cb\u820a\u7684\u3002",ja:"\u30b5\u30fc\u30d0\u30fc\u306b\u4ed6\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u3088\u3063\u3066\u540c\u671f\u3055\u308c\u305f\u30c7\u30fc\u30bf\u304c\u3042\u308b\u5834\u5408\u3001\u6700\u521d\u306e\u540c\u671f\u306f\u30ed\u30fc\u30ab\u30eb\u8a2d\u5b9a\u3092\u76f4\u63a5\u4e0a\u66f8\u304d\u3057\u3001\u305d\u306e\u5f8c\u306f\u5909\u66f4\u6642\u9593\u306b\u5fdc\u3058\u3066\u65b0\u3057\u3044\u3082\u306e\u304c\u53e4\u3044\u3082\u306e\u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002",ko:"\uc11c\ubc84\uc5d0 \ub2e4\ub978 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ub3d9\uae30\ud654\ud55c \ub370\uc774\ud130\uac00 \uc788\ub294 \uacbd\uc6b0, \uccab \ubc88\uc9f8 \ub3d9\uae30\ud654\ub294 \ub85c\uceec \uad6c\uc131\uc744 \uc9c1\uc811 \ub36e\uc5b4\uc4f0\uba70, \uc774\ud6c4\uc5d0\ub294 \uc218\uc815 \uc2dc\uac04\uc5d0 \ub530\ub77c \uc0c8 \ud56d\ubaa9\uc774 \uae30\uc874 \ud56d\ubaa9\uc744 \ub36e\uc5b4\uc501\ub2c8\ub2e4.",tr:"E\u011fer sunucuda di\u011fer istemciler taraf\u0131ndan senkronize edilen veriler varsa, ilk senkronizasyon do\u011frudan yerel yap\u0131land\u0131rman\u0131n \xfczerine yaz\u0131l\u0131r ve daha sonra, de\u011fi\u015fiklik zaman\u0131na g\xf6re, yenisi eskisinin \xfczerine yaz\u0131l\u0131r"},sync_warn_encryption:{zh:"\u65b0\u7248\u672c\u4f1a\u81ea\u52a8\u5c06\u65e7\u7248\u660e\u6587\u540c\u6b65\u6570\u636e\u8fc1\u79fb\u4e3a\u52a0\u5bc6\u6570\u636e\uff1b\u540c\u6b65\u52a0\u5bc6\u53e3\u4ee4\u72ec\u7acb\u7528\u4e8e\u6570\u636e\u89e3\u5bc6\uff0c\u8bf7\u59a5\u5584\u4fdd\u5b58\uff0c\u9057\u5931\u540e\u65e0\u6cd5\u8bfb\u53d6\u5df2\u52a0\u5bc6\u7684\u4e91\u7aef\u6570\u636e\u3002",en:"New versions automatically migrate legacy plaintext sync data to encrypted data. The sync encryption passphrase is used independently for data decryption, so keep it safe; encrypted cloud data cannot be read if it is lost.",zh_TW:"\u65b0\u7248\u672c\u6703\u81ea\u52d5\u5c07\u820a\u7248\u660e\u6587\u540c\u6b65\u8cc7\u6599\u9077\u79fb\u70ba\u52a0\u5bc6\u8cc7\u6599\uff1b\u540c\u6b65\u52a0\u5bc6\u5bc6\u78bc\u7368\u7acb\u7528\u65bc\u8cc7\u6599\u89e3\u5bc6\uff0c\u8acb\u59a5\u5584\u4fdd\u5b58\uff0c\u907a\u5931\u5f8c\u5c07\u7121\u6cd5\u8b80\u53d6\u5df2\u52a0\u5bc6\u7684\u96f2\u7aef\u8cc7\u6599\u3002",ja:"\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u3001\u5f93\u6765\u306e\u5e73\u6587\u540c\u671f\u30c7\u30fc\u30bf\u3092\u6697\u53f7\u5316\u30c7\u30fc\u30bf\u3078\u81ea\u52d5\u79fb\u884c\u3057\u307e\u3059\u3002\u540c\u671f\u6697\u53f7\u5316\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306f\u30c7\u30fc\u30bf\u5fa9\u53f7\u5c02\u7528\u306b\u72ec\u7acb\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u305f\u3081\u3001\u5b89\u5168\u306b\u4fdd\u7ba1\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u7d1b\u5931\u3059\u308b\u3068\u6697\u53f7\u5316\u6e08\u307f\u306e\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u306f\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3002",ko:"\uc0c8 \ubc84\uc804\uc740 \uae30\uc874 \uc77c\ubc18 \ud14d\uc2a4\ud2b8 \ub3d9\uae30\ud654 \ub370\uc774\ud130\ub97c \uc554\ud638\ud654 \ub370\uc774\ud130\ub85c \uc790\ub3d9 \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud569\ub2c8\ub2e4. \ub3d9\uae30\ud654 \uc554\ud638\ud654 \uc554\ud638\ubb38\uc740 \ub370\uc774\ud130 \ubcf5\ud638\ud654\uc5d0 \ub3c5\ub9bd\uc801\uc73c\ub85c \uc0ac\uc6a9\ub418\ubbc0\ub85c \uc548\uc804\ud558\uac8c \ubcf4\uad00\ud558\uc138\uc694. \ubd84\uc2e4\ud558\uba74 \uc554\ud638\ud654\ub41c \ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\ub97c \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",tr:"Yeni s\xfcr\xfcmler, eski d\xfcz metin senkronizasyon verilerini otomatik olarak \u015fifrelenmi\u015f verilere ta\u015f\u0131r. Senkronizasyon \u015fifreleme parolas\u0131, veri \u015fifresinin \xe7\xf6z\xfclmesi i\xe7in ba\u011f\u0131ms\u0131z olarak kullan\u0131l\u0131r"},about_sync_api:{zh:"\u81ea\u5efakiss-wroker\u6570\u636e\u540c\u6b65\u670d\u52a1",en:"Self-hosting a Kiss-worker data sync service",zh_TW:"\u81ea\u884c\u67b6\u8a2d kiss-worker \u8cc7\u6599\u540c\u6b65\u670d\u52d9",ja:"Kiss-worker \u30c7\u30fc\u30bf\u540c\u671f\u30b5\u30fc\u30d3\u30b9\u3092\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u3059\u308b",ko:"Kiss-worker \ub370\uc774\ud130 \ub3d9\uae30\ud654 \uc11c\ube44\uc2a4 \uc790\uccb4 \ud638\uc2a4\ud305",tr:"KISS-Worker Veri Senkronizasyon Hizmetini Kendi Kendine Bar\u0131nd\u0131rma"},about_api:{zh:"1\u3001\u5176\u4e2d BuiltinAI \u4e3a\u6d4f\u89c8\u5668\u5185\u7f6eAI\u7ffb\u8bd1\uff0c\u76ee\u524d\u4ec5 Chrome 138 \u53ca\u4ee5\u4e0a\u7248\u672c\u5f97\u5230\u652f\u6301\u3002",en:"1. BuiltinAI is the browser's built-in AI translation, which is currently only supported by Chrome 138 and above.",zh_TW:"1.\u5176\u4e2d BuiltinAI \u70ba\u700f\u89bd\u5668\u5167\u5efaAI\u7ffb\u8b6f\uff0c\u76ee\u524d\u50c5 Chrome 138 \u4ee5\u4e0a\u7248\u672c\u652f\u63f4\u3002",ja:"1. BuiltinAI \u306f\u30d6\u30e9\u30a6\u30b6\u5185\u8535\u306eAI\u7ffb\u8a33\u3067\u3001\u73fe\u5728 Chrome 138 \u4ee5\u964d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002",ko:"1. BuiltinAI\ub294 \ube0c\ub77c\uc6b0\uc800 \ub0b4\uc7a5 AI \ubc88\uc5ed\uc73c\ub85c, \ud604\uc7ac Chrome 138 \uc774\uc0c1 \ubc84\uc804\uc5d0\uc11c\ub9cc \uc9c0\uc6d0\ub429\ub2c8\ub2e4.",tr:"1. BuiltinAI, taray\u0131c\u0131n\u0131n yerle\u015fik AI \xe7eviri \xf6zelli\u011fidir ve \u015fu anda yaln\u0131zca Chrome 138 ve \xfczeri s\xfcr\xfcmler taraf\u0131ndan desteklenmektedir."},about_api_2:{zh:"2\u3001\u5927\u90e8\u5206AI\u63a5\u53e3\u90fd\u4e0eOpenAI\u517c\u5bb9\uff0c\u56e0\u6b64\u9009\u62e9OpenAI\u7c7b\u578b\u5373\u53ef\u3002\u201c\u662f\u5426\u805a\u5408\u53d1\u9001\u7ffb\u8bd1\u8bf7\u6c42\u201d\u6240\u5bf9\u5e94\u7684 Prompt \u5e76\u4e0d\u76f8\u540c\uff0c\u5e76\u4e14\u4e0d\u662f\u6240\u6709\u63a5\u53e3\u90fd\u652f\u6301\u805a\u5408\u7ffb\u8bd1\u3002",en:"2. Most AI interfaces are compatible with OpenAI, so you can simply select the OpenAI type. The prompts corresponding to \u201cWhether to aggregate translation requests\u201d are different, and not all interfaces support aggregated translation.",zh_TW:"2. \u5927\u90e8\u5206\u7684 AI \u4ecb\u9762\u90fd\u8207 OpenAI \u76f8\u5bb9\uff0c\u56e0\u6b64\u9078\u64c7 OpenAI \u985e\u578b\u5373\u53ef\u3002\u300c\u662f\u5426\u5f59\u6574\u767c\u9001\u7ffb\u8b6f\u8acb\u6c42\u300d\u6240\u5c0d\u61c9\u7684 Prompt \u4e26\u4e0d\u76f8\u540c\uff0c\u4e26\u4e14\u4e0d\u662f\u6240\u6709\u4ecb\u9762\u90fd\u652f\u63f4\u5f59\u6574\u7ffb\u8b6f\u3002",ja:"2. \u307b\u3068\u3093\u3069\u306e AI \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306f OpenAI \u3068\u4e92\u63db\u6027\u304c\u3042\u308b\u305f\u3081\u3001OpenAI \u30bf\u30a4\u30d7\u3092\u9078\u629e\u3059\u308c\u3070\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u300c\u7ffb\u8a33\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u307e\u3068\u3081\u3066\u9001\u4fe1\u3059\u308b\u304b\u3069\u3046\u304b\u300d\u306b\u5bfe\u5fdc\u3059\u308b\u30d7\u30ed\u30f3\u30d7\u30c8\u306f\u7570\u306a\u308a\u3001\u3059\u3079\u3066\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u304c\u96c6\u7d04\u7ffb\u8a33\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002",ko:"2. \ub300\ubd80\ubd84\uc758 AI \uc778\ud130\ud398\uc774\uc2a4\ub294 OpenAI\uc640 \ud638\ud658\ub418\ubbc0\ub85c OpenAI \uc720\ud615\uc744 \uc120\ud0dd\ud558\uba74 \ub429\ub2c8\ub2e4. \u201c\ubc88\uc5ed \uc694\uccad\uc744 \uc9d1\ud569\uc801\uc73c\ub85c \ubcf4\ub0bc\uc9c0 \uc5ec\ubd80\u201d\uc5d0 \ub300\uc751\ud558\ub294 \ud504\ub86c\ud504\ud2b8\ub294 \uc11c\ub85c \ub2e4\ub974\uba70, \ubaa8\ub4e0 \uc778\ud130\ud398\uc774\uc2a4\uac00 \uc9d1\ud569 \ubc88\uc5ed\uc744 \uc9c0\uc6d0\ud558\ub294 \uac83\uc740 \uc544\ub2d9\ub2c8\ub2e4.",tr:'2. \xc7o\u011fu AI aray\xfcz\xfc OpenAI ile uyumludur, bu nedenle OpenAI t\xfcr\xfcn\xfc se\xe7meniz yeterlidir. "\xc7eviri isteklerinin birle\u015ftirilip birle\u015ftirilmeyece\u011fi" ile ilgili istemler farkl\u0131d\u0131r ve t\xfcm aray\xfczler birle\u015ftirilmi\u015f \xe7eviriyi desteklemez.'},about_api_3:{zh:"3\u3001\u7406\u8bba\u4e0a\uff0c\u6240\u6709\u7ffb\u8bd1\u63a5\u53e3\uff0c\u90fd\u53ef\u4ee5\u901a\u8fc7\u81ea\u5b9a\u4e49\u63a5\u53e3 (Custom) \u7684\u5f62\u5f0f\u4f7f\u7528\u3002",en:"3. In theory, all translation interfaces can be used by configuring them as a custom interface.",zh_TW:"3. \u7406\u8ad6\u4e0a\uff0c\u6240\u6709\u7ffb\u8b6f\u4ecb\u9762\u90fd\u53ef\u4ee5\u900f\u904e\u81ea\u8a02\u4ecb\u9762\uff08Custom\uff09\u7684\u65b9\u5f0f\u4f86\u4f7f\u7528\u3002",ja:"3. \u7406\u8ad6\u7684\u306b\u306f\u3001\u3059\u3079\u3066\u306e\u7ffb\u8a33\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306f\u30ab\u30b9\u30bf\u30e0\uff08Custom\uff09\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u5229\u7528\u3067\u304d\u307e\u3059\u3002",ko:"3. \uc774\ub860\uc801\uc73c\ub85c \ubaa8\ub4e0 \ubc88\uc5ed \uc778\ud130\ud398\uc774\uc2a4\ub294 \ucee4\uc2a4\ud140(Custom) \uc778\ud130\ud398\uc774\uc2a4\ub85c \uc124\uc815\ud558\uc5ec \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"3. Teorik olarak, t\xfcm \xe7eviri aray\xfczleri \xf6zel bir aray\xfcz olarak yap\u0131land\u0131r\u0131larak kullan\u0131labilir."},about_api_proxy:{zh:"\u67e5\u770b\u81ea\u5efa\u4e00\u4e2a\u7ffb\u8bd1\u63a5\u53e3\u4ee3\u7406",en:"Check out the self-built translation interface proxy",zh_TW:"\u6aa2\u8996\u5982\u4f55\u81ea\u884c\u67b6\u8a2d\u7ffb\u8b6f\u4ecb\u9762 Proxy",ja:"\u81ea\u4f5c\u306e\u7ffb\u8a33\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b",ko:"\uc790\uccb4 \uad6c\ucd95 \ubc88\uc5ed \uc778\ud130\ud398\uc774\uc2a4 \ud504\ub85d\uc2dc \ud655\uc778\ud558\uae30",tr:"Kendi Olu\u015fturdu\u011funuz \xc7eviri Aray\xfcz\xfc Proxy'sine G\xf6z At\u0131n"},setting_helper:{zh:"\u65b0\u65e7\u914d\u7f6e\u5e76\u4e0d\u517c\u5bb9\uff0c\u5bfc\u51fa\u7684\u65e7\u7248\u914d\u7f6e\uff0c\u52ff\u518d\u6b21\u5bfc\u5165\u3002",en:"The old and new configurations are not compatible. Do not import the exported old configuration again.",zh_TW:"\u65b0\u820a\u8a2d\u5b9a\u4e26\u4e0d\u76f8\u5bb9\uff0c\u532f\u51fa\u7684\u820a\u7248\u8a2d\u5b9a\u8acb\u52ff\u518d\u6b21\u532f\u5165\u3002",ja:"\u65b0\u65e7\u306e\u8a2d\u5b9a\u306b\u4e92\u63db\u6027\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u305f\u53e4\u3044\u8a2d\u5b9a\u3092\u518d\u5ea6\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002",ko:"\uc774\uc804 \uad6c\uc131\uacfc \uc0c8 \uad6c\uc131\uc740 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub0b4\ubcf4\ub0b8 \uc774\uc804 \uad6c\uc131\uc744 \ub2e4\uc2dc \uac00\uc838\uc624\uc9c0 \ub9c8\uc2ed\uc2dc\uc624.",tr:"Eski ve yeni konfig\xfcrasyonlar uyumlu de\u011fildir. D\u0131\u015fa aktar\u0131lan eski konfig\xfcrasyonu tekrar i\xe7e aktarmay\u0131n."},style_none:{zh:"\u65e0",en:"None",zh_TW:"\u7121",ja:"\u306a\u3057",ko:"\uc5c6\uc74c",tr:"Hi\xe7biri"},under_line:{zh:"\u4e0b\u5212\u76f4\u7ebf",en:"Underline",zh_TW:"\u4e0b\u5283\u76f4\u7dda",ja:"\u4e0b\u7dda",ko:"\ubc11\uc904",tr:"Alt\u0131 \xc7izili"},dot_line:{zh:"\u4e0b\u5212\u70b9\u72b6\u7ebf",en:"Dotted Underline",zh_TW:"\u4e0b\u5283\u9ede\u72c0\u7dda",ja:"\u70b9\u7dda\u306e\u4e0b\u7dda",ko:"\uc810\uc120 \ubc11\uc904",tr:"Noktal\u0131 Alt \xc7izgi"},dash_line:{zh:"\u4e0b\u5212\u865a\u7ebf",en:"Dashed Underline",zh_TW:"\u4e0b\u5283\u865b\u7dda",ja:"\u7834\u7dda\u306e\u4e0b\u7dda",ko:"\ud30c\uc120 \ubc11\uc904",tr:"Kesikli Alt \xc7izgi"},dash_box:{zh:"\u865a\u7ebf\u6846",en:"Dashed Box",zh_TW:"\u865b\u7dda\u6846",ja:"\u7834\u7dda\u30dc\u30c3\u30af\u30b9",ko:"\ud30c\uc120 \uc0c1\uc790",tr:"Kesikli Kutu"},dash_line_bold:{zh:"\u4e0b\u5212\u865a\u7ebf\u52a0\u7c97",en:"Dashed Underline Bold",zh_TW:"\u4e0b\u5283\u865b\u7dda",ja:"\u7834\u7dda\u306e\u4e0b\u7dda (\u592a\u5b57)",ko:"\uad75\uc740 \ud30c\uc120 \ubc11\uc904",tr:"Kesikli Alt\u0131 \xc7izili Kal\u0131n"},dash_box_bold:{zh:"\u865a\u7ebf\u6846\u52a0\u7c97",en:"Dashed Box Bold",zh_TW:"\u865b\u7dda\u6846\u52a0\u7c97",ja:"\u7834\u7dda\u30dc\u30c3\u30af\u30b9 (\u592a\u5b57)",ko:"\uad75\uc740 \ud30c\uc120 \uc0c1\uc790",tr:"Kesikli Kutu Kal\u0131n"},marker:{zh:"\u9a6c\u514b\u7b14",en:"Marker",zh_TW:"\u99ac\u514b\u7b46",ja:"\u30de\u30fc\u30ab\u30fc",ko:"\ub9c8\ucee4",tr:"\u0130\u015faretleyici"},gradient_marker:{zh:"\u6e10\u53d8\u9a6c\u514b\u7b14",en:"Gradient Marker",zh_TW:"\u6f38\u5c64\u99ac\u514b\u7b46",ja:"\u30b0\u30e9\u30c7\u30fc\u30b7\u30e7\u30f3\u30de\u30fc\u30ab\u30fc",ko:"\uadf8\ub77c\ub370\uc774\uc158 \ub9c8\ucee4",tr:"Gradyan \u0130\u015faretleyici"},wavy_line:{zh:"\u4e0b\u5212\u6ce2\u6d6a\u7ebf",en:"Wavy Underline",zh_TW:"\u4e0b\u5283\u6ce2\u6d6a\u7dda",ja:"\u6ce2\u7dda\u306e\u4e0b\u7dda",ko:"\ubb3c\uacb0 \ubc11\uc904",tr:"Dalgal\u0131 Alt \xc7izgi"},wavy_line_bold:{zh:"\u4e0b\u5212\u6ce2\u6d6a\u7ebf\u52a0\u7c97",en:"Wavy Underline Bold",zh_TW:"\u4e0b\u5283\u6ce2\u6d6a\u7dda\u52a0\u7c97",ja:"\u6ce2\u7dda\u306e\u4e0b\u7dda (\u592a\u5b57)",ko:"\uad75\uc740 \ubb3c\uacb0 \ubc11\uc904",tr:"Dalgal\u0131 Alt\u0131 \xc7izili Kal\u0131n"},fuzzy:{zh:"\u6a21\u7cca",en:"Fuzzy",zh_TW:"\u6a21\u7cca",ja:"\u307c\u304b\u3057",ko:"\ud750\ub9bc",tr:"Bulan\u0131k"},highlight:{zh:"\u9ad8\u4eae",en:"Highlight",zh_TW:"\u53cd\u767d\u6a19\u793a",ja:"\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\ud558\uc774\ub77c\uc774\ud2b8",tr:"Vurgu"},blockquote:{zh:"\u5f15\u7528",en:"Blockquote",zh_TW:"\u5f15\u7528",ja:"\u5f15\u7528",ko:"\uc778\uc6a9",tr:"Blok Al\u0131nt\u0131"},gradient:{zh:"\u6e10\u53d8",en:"Gradient",zh_TW:"\u6f38\u8b8a",ja:"\u30b0\u30e9\u30c7\u30fc\u30b7\u30e7\u30f3",ko:"\uadf8\ub77c\ub370\uc774\uc158",tr:"Gradyan"},blink:{zh:"\u95ea\u73b0",en:"Blink",zh_TW:"\u9583\u73fe",ja:"\u70b9\u6ec5",ko:"\uae5c\ubc15\uc784",tr:"I\u015f\u0131lt\u0131"},glow:{zh:"\u53d1\u5149",en:"Glow",zh_TW:"\u767c\u5149",ja:"\u767a\u5149",ko:"\ubc1c\uad11",tr:"Par\u0131lt\u0131"},colorful:{zh:"\u591a\u5f69",en:"Colorful",zh_TW:"\u591a\u5f69",ja:"\u30ab\u30e9\u30d5\u30eb",ko:"\ub2e4\ucc44\ub86d\uac8c",tr:"Renkli"},setting:{zh:"\u8bbe\u7f6e",en:"Setting",zh_TW:"\u8a2d\u5b9a",ja:"\u8a2d\u5b9a",ko:"\uc124\uc815",tr:"Ayar"},pattern:{zh:"\u5339\u914d\u7f51\u5740",en:"URL pattern",zh_TW:"\u5339\u914d\u7db2\u5740",ja:"URL\u30d1\u30bf\u30fc\u30f3",ko:"URL \ud328\ud134",tr:"URL Modeli"},pattern_helper:{zh:"1\u3001\u652f\u6301\u661f\u53f7(*)\u901a\u914d\u7b26\u30022\u3001\u591a\u4e2aURL\u7528\u6362\u884c\u6216\u82f1\u6587\u9017\u53f7\u201c,\u201d\u5206\u9694\u3002",en:'1. Supports the asterisk (*) wildcard character. 2. Separate multiple URLs with newlines or English commas ",".',zh_TW:"1. \u652f\u63f4\u661f\u865f (*) \u842c\u7528\u5b57\u5143\u30022. \u591a\u500b URL \u8acb\u4ee5\u63db\u884c\u6216\u82f1\u6587\u9017\u865f\u300c,\u300d\u5206\u9694\u3002",ja:"1. \u30a2\u30b9\u30bf\u30ea\u30b9\u30af (*) \u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002 2. \u8907\u6570\u306eURL\u306f\u6539\u884c\u307e\u305f\u306f\u82f1\u8a9e\u306e\u30b3\u30f3\u30de\u300c,\u300d\u3067\u533a\u5207\u308a\u307e\u3059\u3002",ko:'1. \ubcc4\ud45c(*) \uc640\uc77c\ub4dc\uce74\ub4dc \ubb38\uc790\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. 2. \uc5ec\ub7ec URL\uc740 \uc904\ubc14\uafc8 \ub610\ub294 \uc601\uc5b4 \uc27c\ud45c ","\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4.',tr:"1. Y\u0131ld\u0131z (*) Joker Karakterini Destekler. 2. Birden Fazla URL'Yi Yeni Sat\u0131rlarla Veya Virg\xfcllerle Ay\u0131r\u0131n \""},selector_helper:{zh:"1\u3001\u9700\u8981\u7ffb\u8bd1\u7684\u76ee\u6807\u5143\u7d20\u30022\u3001\u5f00\u542f\u81ea\u52a8\u626b\u63cf\u9875\u9762\u540e\uff0c\u672c\u8bbe\u7f6e\u65e0\u6548\u30023\u3001\u9075\u5faaCSS\u9009\u62e9\u5668\u8bed\u6cd5\u3002",en:"1. The target element to be translated. 2. This setting is invalid when automatic page scanning is enabled. 3. Follow the CSS selector syntax.",zh_TW:"1\u3001\u9700\u8981\u7ffb\u8b6f\u7684\u76ee\u6a19\u5143\u7d20\u3002 2.\u958b\u555f\u81ea\u52d5\u6383\u63cf\u9801\u9762\u5f8c\uff0c\u672c\u8a2d\u5b9a\u7121\u6548\u3002 3.\u9075\u5faaCSS\u9078\u64c7\u5668\u8a9e\u6cd5\u3002",ja:"1. \u7ffb\u8a33\u5bfe\u8c61\u306e\u8981\u7d20\u3002 2. \u30da\u30fc\u30b8\u306e\u81ea\u52d5\u30b9\u30ad\u30e3\u30f3\u3092\u6709\u52b9\u306b\u3059\u308b\u3068\u3001\u3053\u306e\u8a2d\u5b9a\u306f\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\u3002 3. CSS\u30bb\u30ec\u30af\u30bf\u69cb\u6587\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:"1. \ubc88\uc5ed\ud560 \ub300\uc0c1 \uc694\uc18c\uc785\ub2c8\ub2e4. 2. \uc790\ub3d9 \ud398\uc774\uc9c0 \uc2a4\uce94\uc774 \ud65c\uc131\ud654\ub418\uba74 \uc774 \uc124\uc815\uc740 \ubb34\ud6a8\ud654\ub429\ub2c8\ub2e4. 3. CSS \uc120\ud0dd\uc790 \uad6c\ubb38\uc744 \ub530\ub985\ub2c8\ub2e4.",tr:"1. \xc7evrilecek hedef \xf6\u011fe. 2. Otomatik sayfa tarama etkinle\u015ftirildi\u011finde bu ayar ge\xe7ersizdir. 3. CSS se\xe7ici s\xf6zdizimini takip edin."},translate_switch:{zh:"\u5f00\u542f\u7ffb\u8bd1",en:"Translate Switch",zh_TW:"\u958b\u555f\u7ffb\u8b6f",ja:"\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ubc88\uc5ed \ucf1c\uae30",tr:"\xc7eviri Anahtar\u0131"},default_enabled:{zh:"\u9ed8\u8ba4\u5f00\u542f",en:"Enabled",zh_TW:"\u9810\u8a2d\u958b\u555f",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u6709\u52b9",ko:"\uae30\ubcf8\uc73c\ub85c \uc0ac\uc6a9",tr:"Etkin"},default_disabled:{zh:"\u9ed8\u8ba4\u5173\u95ed",en:"Disabled",zh_TW:"\u9810\u8a2d\u95dc\u9589",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u7121\u52b9",ko:"\uae30\ubcf8\uc73c\ub85c \uc0ac\uc6a9 \uc548\ud568",tr:"Devre D\u0131\u015f\u0131"},selector:{zh:"\u9009\u62e9\u5668",en:"Selector",zh_TW:"\u9078\u64c7\u5668",ja:"\u30bb\u30ec\u30af\u30bf",ko:"\uc120\ud0dd\uc790",tr:"Se\xe7ici"},target_selector:{zh:"\u76ee\u6807\u5143\u7d20\u9009\u62e9\u5668",en:"Target element selector",zh_TW:"\u76ee\u6a19\u5143\u7d20\u9078\u64c7\u5668",ja:"\u5bfe\u8c61\u8981\u7d20\u30bb\u30ec\u30af\u30bf",ko:"\ub300\uc0c1 \uc694\uc18c \uc120\ud0dd\uc790",tr:"Hedef \xd6\u011fe Se\xe7ici"},keep_selector:{zh:"\u4fdd\u7559\u5143\u7d20\u9009\u62e9\u5668",en:"Keep unchanged selector",zh_TW:"\u4fdd\u7559\u5143\u7d20\u9078\u64c7\u5668",ja:"\u4fdd\u6301\u8981\u7d20\u30bb\u30ec\u30af\u30bf",ko:"\uc720\uc9c0\ud560 \uc694\uc18c \uc120\ud0dd\uc790",tr:"Se\xe7iciyi De\u011fi\u015ftirmeden Tut"},keep_selector_helper:{zh:"1\u3001\u76ee\u6807\u5143\u7d20\u4e0b\u9762\u9700\u8981\u539f\u6837\u4fdd\u7559\u7684\u5b50\u8282\u70b9\u30022\u3001\u9075\u5faaCSS\u9009\u62e9\u5668\u8bed\u6cd5\u3002",en:"1. The child nodes under the target element need to remain intact. 2. Follow the CSS selector syntax.",zh_TW:"1. \u76ee\u6a19\u5143\u7d20\u4e0b\u7684\u5b50\u7bc0\u9ede\u9700\u8981\u4fdd\u6301\u539f\u6a23\u3002 2. \u9075\u5faa CSS \u9078\u64c7\u5668\u8a9e\u6cd5\u3002",ja:"1. \u5bfe\u8c61\u8981\u7d20\u306e\u4e0b\u306b\u3042\u308b\u3001\u305d\u306e\u307e\u307e\u4fdd\u6301\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5b50\u30ce\u30fc\u30c9\u3002 2. CSS\u30bb\u30ec\u30af\u30bf\u69cb\u6587\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:"1. \ub300\uc0c1 \uc694\uc18c \uc544\ub798\uc758 \uc790\uc2dd \ub178\ub4dc \uc911 \uadf8\ub300\ub85c \uc720\uc9c0\ud574\uc57c \ud558\ub294 \ub178\ub4dc. 2. CSS \uc120\ud0dd\uc790 \uad6c\ubb38\uc744 \ub530\ub985\ub2c8\ub2e4.",tr:"1. Hedef \xf6\u011fenin alt\u0131ndaki alt d\xfc\u011f\xfcmlerin sa\u011flam kalmas\u0131 gerekir. 2. CSS se\xe7ici s\xf6zdizimini takip edin."},block_selector:{zh:"\u5757\u7ea7\u5143\u7d20\u9009\u62e9\u5668",en:"Block element selector",zh_TW:"\u5340\u584a\u5143\u7d20\u9078\u64c7\u5668",ja:"\u30d6\u30ed\u30c3\u30af\u8981\u7d20\u30bb\u30ec\u30af\u30bf",ko:"\ube14\ub85d \uc694\uc18c \uc120\ud0dd\uc790",tr:"Blok \xd6\u011fe Se\xe7ici"},block_selector_helper:{zh:"1\u3001\u5339\u914d\u5230\u7684\u5143\u7d20\u4f1a\u88ab\u5f53\u4f5c\u5757\u7ea7\u8282\u70b9\u5904\u7406\u30022\u3001\u9075\u5faaCSS\u9009\u62e9\u5668\u8bed\u6cd5\u3002",en:"1. Matched elements will be treated as block nodes. 2. Follow the CSS selector syntax.",zh_TW:"1. \u7b26\u5408\u7684\u5143\u7d20\u6703\u88ab\u7576\u4f5c\u5340\u584a\u7bc0\u9ede\u8655\u7406\u30022. \u9075\u5faa CSS \u9078\u64c7\u5668\u8a9e\u6cd5\u3002",ja:"1. \u4e00\u81f4\u3057\u305f\u8981\u7d20\u306f\u30d6\u30ed\u30c3\u30af\u30ce\u30fc\u30c9\u3068\u3057\u3066\u6271\u308f\u308c\u307e\u3059\u30022. CSS\u30bb\u30ec\u30af\u30bf\u69cb\u6587\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:"1. \uc77c\uce58\ud558\ub294 \uc694\uc18c\ub294 \ube14\ub85d \ub178\ub4dc\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4. 2. CSS \uc120\ud0dd\uc790 \uad6c\ubb38\uc744 \ub530\ub974\uc138\uc694.",tr:"1. E\u015fle\u015fen \xf6\u011feler blok d\xfc\u011f\xfcmleri olarak ele al\u0131nacakt\u0131r. 2. CSS se\xe7ici s\xf6zdizimini takip edin."},root_selector:{zh:"\u6839\u8282\u70b9\u9009\u62e9\u5668",en:"Root node selector",zh_TW:"\u6839\u7bc0\u9ede\u9078\u64c7\u5668",ja:"\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u30bb\u30ec\u30af\u30bf",ko:"\ub8e8\ud2b8 \ub178\ub4dc \uc120\ud0dd\uc790",tr:"K\xf6k D\xfc\u011f\xfcm Se\xe7ici"},root_selector_helper:{zh:"1\u3001\u7528\u4e8e\u7f29\u5c0f\u9875\u9762\u7ffb\u8bd1\u8303\u56f4\u30022\u3001\u9075\u5faaCSS\u9009\u62e9\u5668\u8bed\u6cd5\u3002",en:"1. Used to narrow the translation scope of the page. 2. Follow the CSS selector syntax.",zh_TW:"1.\u7528\u65bc\u7e2e\u5c0f\u9801\u9762\u7ffb\u8b6f\u7bc4\u570d\u3002 2\u3001\u9075\u5faaCSS\u9078\u64c7\u5668\u8a9e\u6cd5\u3002",ja:"1. \u30da\u30fc\u30b8\u306e\u7ffb\u8a33\u7bc4\u56f2\u3092\u7d5e\u308a\u8fbc\u3080\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 2. CSS\u30bb\u30ec\u30af\u30bf\u69cb\u6587\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:"1. \ud398\uc774\uc9c0\uc758 \ubc88\uc5ed \ubc94\uc704\ub97c \uc881\ud788\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. 2. CSS \uc120\ud0dd\uc790 \uad6c\ubb38\uc744 \ub530\ub985\ub2c8\ub2e4.",tr:"1. Sayfan\u0131n \xe7eviri kapsam\u0131n\u0131 daraltmak i\xe7in kullan\u0131l\u0131r. 2. CSS se\xe7ici s\xf6zdizimini takip edin."},ignore_selector:{zh:"\u4e0d\u7ffb\u8bd1\u8282\u70b9\u9009\u62e9\u5668",en:"Ignore node selectors",zh_TW:"\u4e0d\u7ffb\u8b6f\u7bc0\u9ede\u9078\u64c7\u5668",ja:"\u7ffb\u8a33\u3057\u306a\u3044\u30ce\u30fc\u30c9\u30bb\u30ec\u30af\u30bf",ko:"\ubc88\uc5ed \ubb34\uc2dc \ub178\ub4dc \uc120\ud0dd\uc790",tr:"D\xfc\u011f\xfcm Se\xe7icileri Yoksay"},ignore_selector_helper:{zh:"1\u3001\u9700\u8981\u5ffd\u7565\u7684\u8282\u70b9\u30022\u3001\u9075\u5faaCSS\u9009\u62e9\u5668\u8bed\u6cd5\u3002",en:"1. Nodes to be ignored. 2. Follow CSS selector syntax.",zh_TW:"1\u3001\u9700\u8981\u5ffd\u7565\u7684\u7bc0\u9ede\u3002 2\u3001\u9075\u5faaCSS\u9078\u64c7\u5668\u8a9e\u6cd5\u3002",ja:"1. \u7121\u8996\u3059\u308b\u30ce\u30fc\u30c9\u3002 2. CSS\u30bb\u30ec\u30af\u30bf\u69cb\u6587\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:"1. \ubb34\uc2dc\ud560 \ub178\ub4dc. 2. CSS \uc120\ud0dd\uc790 \uad6c\ubb38\uc744 \ub530\ub985\ub2c8\ub2e4.",tr:"1. G\xf6z ard\u0131 edilecek d\xfc\u011f\xfcmler. 2. CSS se\xe7ici s\xf6zdizimini takip edin."},terms:{zh:"\u4e13\u4e1a\u672f\u8bed",en:"Terms",zh_TW:"\u5c08\u696d\u8853\u8a9e",ja:"\u5c02\u9580\u7528\u8a9e",ko:"\uc804\ubb38 \uc6a9\uc5b4",tr:"\u015eartlar"},terms_helper:{zh:"1\u3001\u652f\u6301\u6b63\u5219\u8868\u8fbe\u5f0f\u5339\u914d\uff0c\u65e0\u9700\u659c\u6746\uff0c\u4e0d\u652f\u6301\u4fee\u9970\u7b26\u30022\u3001\u591a\u6761\u672f\u8bed\u7528\u6362\u884c\u6216\u5206\u53f7\u201c;\u201d\u9694\u5f00\u30023\u3001\u672f\u8bed\u548c\u8bd1\u6587\u7528\u82f1\u6587\u9017\u53f7\u201c,\u201d\u9694\u5f00\u30024\u3001\u6ca1\u6709\u8bd1\u6587\u89c6\u4e3a\u4e0d\u7ffb\u8bd1\u672f\u8bed\u3002",en:'1. Supports regular expression matching, no slash required, and no modifiers are supported. 2. Separate multiple terms with newlines or semicolons ";". 3. Terms and translations are separated by English commas ",". 4. If there is no translation, the term will be deemed not to be translated.',zh_TW:"1. \u652f\u63f4\u6b63\u898f\u8868\u793a\u5f0f\u6bd4\u5c0d\uff0c\u4e0d\u9700\u659c\u7dda\uff0c\u4e14\u4e0d\u652f\u63f4\u4fee\u98fe\u7b26\u30022. \u591a\u689d\u8853\u8a9e\u4ee5\u63db\u884c\u6216\u5206\u865f\u300c;\u300d\u5206\u9694\u30023. \u8853\u8a9e\u8207\u8b6f\u6587\u4ee5\u82f1\u6587\u9017\u865f\u300c,\u300d\u5206\u9694\u30024. \u7121\u8b6f\u6587\u8005\u8996\u70ba\u4e0d\u7ffb\u8b6f\u8a72\u8853\u8a9e\u3002",ja:"1. \u6b63\u898f\u8868\u73fe\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8 (\u30b9\u30e9\u30c3\u30b7\u30e5\u4e0d\u8981\u3001\u4fee\u98fe\u5b50\u975e\u5bfe\u5fdc)\u3002 2. \u8907\u6570\u306e\u7528\u8a9e\u306f\u6539\u884c\u307e\u305f\u306f\u30bb\u30df\u30b3\u30ed\u30f3\u300c;\u300d\u3067\u533a\u5207\u308a\u307e\u3059\u3002 3. \u7528\u8a9e\u3068\u7ffb\u8a33\u306f\u82f1\u8a9e\u306e\u30b3\u30f3\u30de\u300c,\u300d\u3067\u533a\u5207\u308a\u307e\u3059\u3002 4. \u7ffb\u8a33\u304c\u306a\u3044\u5834\u5408\u306f\u3001\u305d\u306e\u7528\u8a9e\u3092\u7ffb\u8a33\u3057\u306a\u3044\u3082\u306e\u3068\u307f\u306a\u3057\u307e\u3059\u3002",ko:'1. \uc815\uaddc\uc2dd \uc77c\uce58\ub97c \uc9c0\uc6d0\ud558\uba70, \uc2ac\ub798\uc2dc\uac00 \ud544\uc694 \uc5c6\uace0 \uc218\uc815\uc790\ub294 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. 2. \uc5ec\ub7ec \uc6a9\uc5b4\ub294 \uc904\ubc14\uafc8 \ub610\ub294 \uc138\ubbf8\ucf5c\ub860 ";"\uc73c\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4. 3. \uc6a9\uc5b4\uc640 \ubc88\uc5ed\uc740 \uc601\uc5b4 \uc27c\ud45c ","\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4. 4. \ubc88\uc5ed\uc774 \uc5c6\ub294 \uacbd\uc6b0 \ud574\ub2f9 \uc6a9\uc5b4\ub97c \ubc88\uc5ed\ud558\uc9c0 \uc54a\ub294 \uac83\uc73c\ub85c \uac04\uc8fc\ud569\ub2c8\ub2e4.',tr:'1. D\xfczenli ifade e\u015fle\u015ftirmeyi destekler, e\u011fik \xe7izgi gerekmez ve de\u011fi\u015ftiriciler desteklenmez. 2. Birden fazla terim yeni sat\u0131r veya noktal\u0131 virg\xfcl ";" ile ayr\u0131l\u0131r. 3. Terimler ve \xe7eviriler \u0130ngilizce virg\xfcl "," ile ayr\u0131l\u0131r. 4. \xc7eviri yoksa, terim \xe7evrilmemi\u015f olarak kabul edilir.'},ai_terms:{zh:"AI\u4e13\u4e1a\u672f\u8bed",en:"AI Terms",zh_TW:"AI\u5c08\u696d\u8853\u8a9e",ja:"AI\u5c02\u9580\u7528\u8a9e",ko:"AI \uc804\ubb38 \uc6a9\uc5b4",tr:"AI \u015eartlar\u0131"},ai_terms_helper:{zh:"1\u3001AI\u667a\u80fd\u66ff\u6362\uff0c\u4e0d\u652f\u6301\u6b63\u5219\u8868\u8fbe\u5f0f\u30022\u3001\u591a\u6761\u672f\u8bed\u7528\u6362\u884c\u6216\u5206\u53f7\u201c;\u201d\u9694\u5f00\u30023\u3001\u672f\u8bed\u548c\u8bd1\u6587\u7528\u82f1\u6587\u9017\u53f7\u201c,\u201d\u9694\u5f00\u30024\u3001\u6ca1\u6709\u8bd1\u6587\u89c6\u4e3a\u4e0d\u7ffb\u8bd1\u672f\u8bed\u3002",en:'1. AI intelligent replacement does not support regular expressions.2. Separate multiple terms with newlines or semicolons ";". 3. Terms and translations are separated by English commas ",". 4. If there is no translation, the term will be deemed not to be translated.',zh_TW:"1. AI \u667a\u6167\u66ff\u63db\uff0c\u4e0d\u652f\u63f4\u6b63\u898f\u8868\u793a\u5f0f\u30022. \u591a\u689d\u8853\u8a9e\u4ee5\u63db\u884c\u6216\u5206\u865f\u300c;\u300d\u5206\u9694\u30023. \u8853\u8a9e\u8207\u8b6f\u6587\u4ee5\u82f1\u6587\u9017\u865f\u300c,\u300d\u5206\u9694\u30024. \u7121\u8b6f\u6587\u8005\u8996\u70ba\u4e0d\u7ffb\u8b6f\u8a72\u8853\u8a9e\u3002",ja:"1. AI\u306b\u3088\u308b\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u306a\u7f6e\u63db (\u6b63\u898f\u8868\u73fe\u975e\u5bfe\u5fdc)\u3002 2. \u8907\u6570\u306e\u7528\u8a9e\u306f\u6539\u884c\u307e\u305f\u306f\u30bb\u30df\u30b3\u30ed\u30f3\u300c;\u300d\u3067\u533a\u5207\u308a\u307e\u3059\u3002 3. \u7528\u8a9e\u3068\u7ffb\u8a33\u306f\u82f1\u8a9e\u306e\u30b3\u30f3\u30de\u300c,\u300d\u3067\u533a\u5207\u308a\u307e\u3059\u3002 4. \u7ffb\u8a33\u304c\u306a\u3044\u5834\u5408\u306f\u3001\u305d\u306e\u7528\u8a9e\u3092\u7ffb\u8a33\u3057\u306a\u3044\u3082\u306e\u3068\u307f\u306a\u3057\u307e\u3059\u3002",ko:'1. AI \uc9c0\ub2a5\ud615 \ub300\uccb4, \uc815\uaddc\uc2dd\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. 2. \uc5ec\ub7ec \uc6a9\uc5b4\ub294 \uc904\ubc14\uafc8 \ub610\ub294 \uc138\ubbf8\ucf5c\ub860 ";"\uc73c\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4. 3. \uc6a9\uc5b4\uc640 \ubc88\uc5ed\uc740 \uc601\uc5b4 \uc27c\ud45c ","\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4. 4. \ubc88\uc5ed\uc774 \uc5c6\ub294 \uacbd\uc6b0 \ud574\ub2f9 \uc6a9\uc5b4\ub97c \ubc88\uc5ed\ud558\uc9c0 \uc54a\ub294 \uac83\uc73c\ub85c \uac04\uc8fc\ud569\ub2c8\ub2e4.',tr:'1. Yapay Zek\xe2 Destekli Ak\u0131ll\u0131 De\u011fi\u015ftirme, D\xfczenli Ifadeleri Desteklemez. 2. Birden Fazla Terim, Yeni Sat\u0131r Veya Noktal\u0131 Virg\xfcl ";" Ile Ayr\u0131lmal\u0131d\u0131r. 3. Terimler Ve \xc7eviriler, \u0130ngilizce Virg\xfcl "," Ile Ayr\u0131lmal\u0131d\u0131r. 4. \xc7eviri Yoksa, Terim \xc7evrilmemi\u015f Olarak Kabul Edilecektir."'},text_ext_style:{zh:"\u8bd1\u6587\u9644\u52a0\u6837\u5f0f",en:"Translation additional styles",zh_TW:"\u8b6f\u6587\u9644\u52a0\u6a23\u5f0f",ja:"\u7ffb\u8a33\u306e\u8ffd\u52a0\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed \ucd94\uac00 \uc2a4\ud0c0\uc77c",tr:"\xc7eviriye Ek Stiller"},selector_style:{zh:"\u9009\u62e9\u5668\u8282\u70b9\u6837\u5f0f",en:"Selector Style",zh_TW:"\u9078\u64c7\u5668\u7bc0\u9ede\u6a23\u5f0f",ja:"\u30bb\u30ec\u30af\u30bf\u30ce\u30fc\u30c9\u30b9\u30bf\u30a4\u30eb",ko:"\uc120\ud0dd\uc790 \ub178\ub4dc \uc2a4\ud0c0\uc77c",tr:"Se\xe7ici Stili"},terms_style:{zh:"\u4e13\u4e1a\u672f\u8bed\u6837\u5f0f",en:"Terms Style",zh_TW:"\u5c08\u696d\u8853\u8a9e\u6a23\u5f0f",ja:"\u5c02\u9580\u7528\u8a9e\u30b9\u30bf\u30a4\u30eb",ko:"\uc804\ubb38 \uc6a9\uc5b4 \uc2a4\ud0c0\uc77c",tr:"Terimler Stili"},highlight_style:{zh:"\u8bcd\u6c47\u9ad8\u4eae\u6837\u5f0f",en:"Fav Words highlight style",zh_TW:"\u8a5e\u5f59\u9192\u76ee\u6a19\u793a\u6a23\u5f0f",ja:"\u5358\u8a9e\u30cf\u30a4\u30e9\u30a4\u30c8\u30b9\u30bf\u30a4\u30eb",ko:"\ub2e8\uc5b4 \ud558\uc774\ub77c\uc774\ud2b8 \uc2a4\ud0c0\uc77c",tr:"Favori Kelimeler Vurgu Stili"},selector_style_helper:{zh:"\u5f00\u542f\u7ffb\u8bd1\u65f6\u6ce8\u5165\u3002",en:"It is injected when translation is turned on.",zh_TW:"\u5728\u958b\u555f\u7ffb\u8b6f\u6642\u6ce8\u5165\u3002",ja:"\u7ffb\u8a33\u304c\u6709\u52b9\u306a\u3068\u304d\u306b\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002",ko:"\ubc88\uc5ed\uc774 \ucf1c\uc838 \uc788\uc744 \ub54c \uc8fc\uc785\ub429\ub2c8\ub2e4.",tr:"\xc7eviri a\xe7\u0131ld\u0131\u011f\u0131nda enjekte edilir."},selector_parent_style:{zh:"\u9009\u62e9\u5668\u7236\u8282\u70b9\u6837\u5f0f",en:"Parent Selector Style",zh_TW:"\u9078\u64c7\u5668\u7236\u7bc0\u9ede\u6a23\u5f0f",ja:"\u89aa\u30bb\u30ec\u30af\u30bf\u30b9\u30bf\u30a4\u30eb",ko:"\ubd80\ubaa8 \uc120\ud0dd\uc790 \uc2a4\ud0c0\uc77c",tr:"Ebeveyn Se\xe7ici Stili"},selector_grand_style:{zh:"\u9009\u62e9\u5668\u7956\u8282\u70b9\u6837\u5f0f",en:"Grand Selector Style",zh_TW:"\u9078\u64c7\u5668\u7956\u7bc0\u9ede\u6a23\u5f0f",ja:"\u7956\u5148\u30bb\u30ec\u30af\u30bf\u30b9\u30bf\u30a4\u30eb",ko:"\uc0c1\uc704 \uc120\ud0dd\uc790 \uc2a4\ud0c0\uc77c",tr:"\xdcst Se\xe7ici Stili"},inject_js:{zh:"\u6ce8\u5165JS",en:"Inject JS",zh_TW:"\u6ce8\u5165 JS",ja:"JS\u3092\u6ce8\u5165",ko:"JS \uc8fc\uc785",tr:"JS'yi Enjekte Et"},inject_js_helper:{zh:"\u9884\u52a0\u8f7d\u65f6\u6ce8\u5165\uff0c\u4e00\u4e2a\u9875\u9762\u4ec5\u8fd0\u884c\u4e00\u6b21\u3002\u5185\u7f6e\u5168\u5c40\u5bf9\u8c61 KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }",en:"Injected during preload, runs only once per page. Built-in global object KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }",zh_TW:"\u9810\u5148\u8f09\u5165\u6642\u6ce8\u5165\uff0c\u4e00\u500b\u9801\u9762\u50c5\u57f7\u884c\u4e00\u6b21\u3002\u5167\u5efa\u5168\u57df\u7269\u4ef6 KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }",ja:"\u30d7\u30ea\u30ed\u30fc\u30c9\u6642\u306b\u6ce8\u5165\u3055\u308c\u3001\u30da\u30fc\u30b8\u3054\u3068\u306b1\u56de\u3060\u3051\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u7d44\u307f\u8fbc\u307f\u30b0\u30ed\u30fc\u30d0\u30eb\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }",ko:"\ubbf8\ub9ac \ub85c\ub4dc \uc2dc \uc8fc\uc785\ub418\uba70 \ud398\uc774\uc9c0\ub2f9 \ud55c \ubc88\ub9cc \uc2e4\ud589\ub429\ub2c8\ub2e4. \ub0b4\uc7a5 \uc804\uc5ed \uac1d\uccb4 KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }",tr:"\xd6n y\xfckleme s\u0131ras\u0131nda enjekte edilir, sayfa ba\u015f\u0131na yaln\u0131zca bir kez \xe7al\u0131\u015f\u0131r. Dahili global nesne KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }"},inject_css:{zh:"\u6ce8\u5165CSS",en:"Inject CSS",zh_TW:"\u6ce8\u5165 CSS",ja:"CSS\u3092\u6ce8\u5165",ko:"CSS \uc8fc\uc785",tr:"CSS'yi Enjekte Et"},inject_css_helper:{zh:"\u9884\u52a0\u8f7d\u65f6\u6ce8\u5165\uff0c\u4e00\u4e2a\u9875\u9762\u4ec5\u8fd0\u884c\u4e00\u6b21\u3002",en:"Injected during preload, runs only once per page.",zh_TW:"\u9810\u5148\u8f09\u5165\u6642\u6ce8\u5165\uff0c\u4e00\u500b\u9801\u9762\u50c5\u57f7\u884c\u4e00\u6b21\u3002",ja:"\u30d7\u30ea\u30ed\u30fc\u30c9\u6642\u306b\u6ce8\u5165\u3055\u308c\u3001\u30da\u30fc\u30b8\u3054\u3068\u306b1\u56de\u3060\u3051\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002",ko:"\ubbf8\ub9ac \ub85c\ub4dc \uc2dc \uc8fc\uc785\ub418\uba70 \ud398\uc774\uc9c0\ub2f9 \ud55c \ubc88\ub9cc \uc2e4\ud589\ub429\ub2c8\ub2e4.",tr:"\xd6n y\xfckleme s\u0131ras\u0131nda enjekte edildi"},fixer_function:{zh:"\u4fee\u590d\u51fd\u6570",en:"Fixer Function",zh_TW:"\u4fee\u5fa9\u51fd\u5f0f",ja:"\u4fee\u6b63\u95a2\u6570",ko:"\uc218\uc815 \ud568\uc218",tr:"Onar\u0131c\u0131 Fonksiyonu"},fixer_function_helper:{zh:'1\u3001br\u662f\u5c06
\u6362\u884c\u66ff\u6362\u6210

\u30022\u3001bn\u662f\u5c06\\n\u6362\u884c\u66ff\u6362\u6210

\u30023\u3001brToDiv\u548cbnToDiv\u662f\u66ff\u6362\u6210

\u3002',en:'1. br replaces
line breaks with

. 2. bn replaces \\n newline with

. 3. brToDiv and bnToDiv are replaced with

.',zh_TW:'1. br \u6703\u5c07
\u63db\u884c\u66ff\u63db\u70ba

\u30022. bn \u6703\u5c07 \\n \u63db\u884c\u66ff\u63db\u70ba

\u30023. brToDiv \u8207 bnToDiv \u6703\u66ff\u63db\u70ba

\u3002',ja:'1. br \u306f
\u6539\u884c\u3092

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002 2. bn \u306f \\n \u6539\u884c\u3092

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002 3. brToDiv \u3068 bnToDiv \u306f

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002',ko:'1. br\uc740
\uc904\ubc14\uafc8\uc744

\ub85c \ub300\uccb4\ud569\ub2c8\ub2e4. 2. bn\uc740 \\n \uc904\ubc14\uafc8\uc744

\ub85c \ub300\uccb4\ud569\ub2c8\ub2e4. 3. brToDiv \ubc0f bnToDiv\ub294

\ub85c \ub300\uccb4\ub429\ub2c8\ub2e4.',tr:'1. br,
sat\u0131r sonlar\u0131n\u0131

ile de\u011fi\u015ftirir. 2. bn, \\n yeni sat\u0131r\u0131

ile de\u011fi\u015ftirir. 3. brToDiv ve bnToDiv,

ile de\u011fi\u015ftirildi.'},import:{zh:"\u5bfc\u5165",en:"Import",zh_TW:"\u532f\u5165",ja:"\u30a4\u30f3\u30dd\u30fc\u30c8",ko:"\uac00\uc838\uc624\uae30",tr:"\u0130\xe7e Aktar"},export:{zh:"\u5bfc\u51fa",en:"Export",zh_TW:"\u532f\u51fa",ja:"\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\ub0b4\ubcf4\ub0b4\uae30",tr:"D\u0131\u015fa Aktar"},export_translation:{zh:"\u5bfc\u51fa\u91ca\u4e49",en:"Export Translation",zh_TW:"\u532f\u51fa\u91cb\u7fa9",ja:"\u8a33\u6587\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\ubc88\uc5ed \ub0b4\ubcf4\ub0b4\uae30",tr:"\xc7eviriyi D\u0131\u015fa Aktar"},error_cant_be_blank:{zh:"\u4e0d\u80fd\u4e3a\u7a7a",en:"Can not be blank",zh_TW:"\u4e0d\u53ef\u70ba\u7a7a",ja:"\u7a7a\u767d\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093",ko:"\ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4",tr:"Bo\u015f Olamaz"},error_duplicate_values:{zh:"\u5b58\u5728\u91cd\u590d\u7684\u503c",en:"There are duplicate values",zh_TW:"\u5b58\u5728\u91cd\u8907\u7684\u503c",ja:"\u91cd\u8907\u3059\u308b\u5024\u304c\u5b58\u5728\u3057\u307e\u3059",ko:"\uc911\ubcf5\ub41c \uac12\uc774 \uc788\uc2b5\ub2c8\ub2e4",tr:"Yinelenen De\u011ferler Var"},error_wrong_file_type:{zh:"\u9519\u8bef\u7684\u6587\u4ef6\u7c7b\u578b",en:"Wrong file type",zh_TW:"\u6a94\u6848\u985e\u578b\u932f\u8aa4",ja:"\u4e0d\u6b63\u306a\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3067\u3059",ko:"\uc798\ubabb\ub41c \ud30c\uc77c \ud615\uc2dd\uc785\ub2c8\ub2e4",tr:"Yanl\u0131\u015f Dosya T\xfcr\xfc"},error_fetch_url:{zh:"\u8bf7\u68c0\u67e5url\u5730\u5740\u662f\u5426\u6b63\u786e\u6216\u7a0d\u540e\u518d\u8bd5\u3002",en:"Please check if the url address is correct or try again later.",zh_TW:"\u8acb\u6aa2\u67e5 URL \u662f\u5426\u6b63\u78ba\u6216\u7a0d\u5f8c\u518d\u8a66\u3002",ja:"URL\u30a2\u30c9\u30ec\u30b9\u304c\u6b63\u3057\u3044\u304b\u78ba\u8a8d\u3059\u308b\u304b\u3001\u5f8c\u3067\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002",ko:"URL \uc8fc\uc18c\uac00 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\ud558\uac70\ub098 \ub098\uc911\uc5d0 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624.",tr:"L\xfctfen URL adresinin do\u011fru olup olmad\u0131\u011f\u0131n\u0131 kontrol edin veya daha sonra tekrar deneyin."},deepl_api:{zh:"DeepL \u63a5\u53e3",en:"DeepL API",zh_TW:"DeepL \u4ecb\u9762",ja:"DeepL API",ko:"DeepL API",tr:"Deepl API'si"},deepl_key:{zh:"DeepL \u5bc6\u94a5",en:"DeepL Key",zh_TW:"DeepL \u91d1\u9470",ja:"DeepL \u30ad\u30fc",ko:"DeepL \ud0a4",tr:"Deepl Anahtar\u0131"},openai_api:{zh:"OpenAI \u63a5\u53e3",en:"OpenAI API",zh_TW:"OpenAI \u4ecb\u9762",ja:"OpenAI API",ko:"OpenAI API",tr:"OpenAI API"},openai_key:{zh:"OpenAI \u5bc6\u94a5",en:"OpenAI Key",zh_TW:"OpenAI \u91d1\u9470",ja:"OpenAI \u30ad\u30fc",ko:"OpenAI \ud0a4",tr:"OpenAI Anahtar\u0131"},openai_model:{zh:"OpenAI \u6a21\u578b",en:"OpenAI Model",zh_TW:"OpenAI \u6a21\u578b",ja:"OpenAI \u30e2\u30c7\u30eb",ko:"OpenAI \ubaa8\ub378",tr:"OpenAI Modeli"},openai_prompt:{zh:"OpenAI \u63d0\u793a\u8bcd",en:"OpenAI Prompt",zh_TW:"OpenAI \u63d0\u793a\u8a5e",ja:"OpenAI \u30d7\u30ed\u30f3\u30d7\u30c8",ko:"OpenAI \ud504\ub86c\ud504\ud2b8",tr:"OpenAI \u0130stemi"},if_clear_cache:{zh:"\u662f\u5426\u6e05\u9664\u7f13\u5b58\uff08\u9ed8\u8ba4\u7f13\u5b587\u5929\uff09",en:"Whether clear cache (Default cache is 7 days)",zh_TW:"\u662f\u5426\u6e05\u9664\u5feb\u53d6\uff08\u9810\u8a2d\u5feb\u53d67\u5929\uff09",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3057\u307e\u3059\u304b\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u671f\u9593\u306f7\u65e5\u9593\u3067\u3059\uff09",ko:"\uce90\uc2dc\ub97c \uc9c0\uc6b0\uc2dc\uaca0\uc2b5\ub2c8\uae4c (\uae30\ubcf8 \uce90\uc2dc 7\uc77c)",tr:"\xd6nbelle\u011fin Temizlenip Temizlenmeyece\u011fi (Varsay\u0131lan \xd6nbellek 7 G\xfcnd\xfcr)"},clear_cache_never:{zh:"\u4e0d\u6e05\u9664\u7f13\u5b58",en:"Never clear cache",zh_TW:"\u4e0d\u6e05\u9664\u5feb\u53d6",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3057\u306a\u3044",ko:"\uce90\uc2dc \uc9c0\uc6b0\uc9c0 \uc54a\uc74c",tr:"\xd6nbelle\u011fi Hi\xe7bir Zaman Temizleme"},clear_cache_restart:{zh:"\u91cd\u542f\u6d4f\u89c8\u5668\u65f6\u6e05\u9664\u7f13\u5b58",en:"Clear cache when restarting browser",zh_TW:"\u91cd\u65b0\u555f\u52d5\u700f\u89bd\u5668\u6642\u6e05\u9664\u5feb\u53d6",ja:"\u30d6\u30e9\u30a6\u30b6\u518d\u8d77\u52d5\u6642\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2",ko:"\ube0c\ub77c\uc6b0\uc800 \uc7ac\uc2dc\uc791 \uc2dc \uce90\uc2dc \uc9c0\uc6b0\uae30",tr:"Taray\u0131c\u0131y\u0131 Yeniden Ba\u015flat\u0131rken \xd6nbelle\u011fi Temizle"},data_sync_type:{zh:"\u540c\u6b65\u65b9\u5f0f",en:"Sync Type",zh_TW:"\u540c\u6b65\u65b9\u5f0f",ja:"\u540c\u671f\u65b9\u5f0f",ko:"\ub3d9\uae30\ud654 \ubc29\uc2dd",tr:"Senkronizasyon T\xfcr\xfc"},data_sync_url:{zh:"\u540c\u6b65\u63a5\u53e3",en:"Sync API",zh_TW:"\u540c\u6b65\u4ecb\u9762",ja:"\u540c\u671fAPI",ko:"\ub3d9\uae30\ud654 API",tr:"API'yi Senkronize Et"},gist_sync_tip:{zh:"\u9009\u62e9 GitHub Gist \u65f6\u4f1a\u81ea\u52a8\u521b\u5efa\u79c1\u5bc6 Gist\u3002GitHub PAT \u9700\u8981 Gists \u8bfb\u5199\u6743\u9650\u3002",en:"A secret gist will be created automatically when GitHub Gist is selected. GitHub PAT needs Gists read and write permission.",zh_TW:"\u9078\u64c7 GitHub Gist \u6642\u6703\u81ea\u52d5\u5efa\u7acb\u79c1\u5bc6 Gist\u3002GitHub PAT \u9700\u8981 Gists \u8b80\u5beb\u6b0a\u9650\u3002",ja:"GitHub Gist \u3092\u9078\u629e\u3059\u308b\u3068 Secret Gist \u304c\u81ea\u52d5\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002GitHub PAT \u306b\u306f Gists \u306e\u8aad\u307f\u66f8\u304d\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\u3002",ko:"GitHub Gist\ub97c \uc120\ud0dd\ud558\uba74 \ube44\uacf5\uac1c Gist\uac00 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ub429\ub2c8\ub2e4. GitHub PAT\uc5d0\ub294 Gists \uc77d\uae30/\uc4f0\uae30 \uad8c\ud55c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.",tr:"GitHub Gist se\xe7ildi\u011finde otomatik olarak gizli bir \xf6z olu\u015fturulacakt\u0131r. GitHub PAT'in Gists'in okuma ve yazma iznine ihtiyac\u0131 var."},data_sync_user:{zh:"\u540c\u6b65\u8d26\u6237",en:"Sync Account",zh_TW:"\u540c\u6b65\u5e33\u865f",ja:"\u540c\u671f\u30a2\u30ab\u30a6\u30f3\u30c8",ko:"\ub3d9\uae30\ud654 \uacc4\uc815",tr:"Hesab\u0131 Senkronize Et"},data_sync_key:{zh:"\u540c\u6b65\u5bc6\u94a5",en:"Sync Key",zh_TW:"\u540c\u6b65\u91d1\u9470",ja:"\u540c\u671f\u30ad\u30fc",ko:"\ub3d9\uae30\ud654 \ud0a4",tr:"Senkronizasyon Anahtar\u0131"},data_sync_encrypt_key:{zh:"\u52a0\u5bc6\u53e3\u4ee4",en:"Encryption Passphrase",zh_TW:"\u52a0\u5bc6\u5bc6\u78bc",ja:"\u6697\u53f7\u5316\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uc554\ud638\ud654 \ube44\ubc00\ubc88\ud638",tr:"\u015eifreleme Parolas\u0131"},set_sync_encrypt_key:{zh:"\u8bbe\u5b9a\u53e3\u4ee4",en:"Set Passphrase",zh_TW:"\u8a2d\u5b9a\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u8a2d\u5b9a",ko:"\uc554\ud638\ubb38 \uc124\uc815",tr:"Parolay\u0131 Ayarla"},change_sync_encrypt_key:{zh:"\u4fee\u6539\u53e3\u4ee4",en:"Change Passphrase",zh_TW:"\u4fee\u6539\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u5909\u66f4",ko:"\uc554\ud638\ubb38 \ubcc0\uacbd",tr:"Parolay\u0131 De\u011fi\u015ftir"},sync_encrypt_key_not_set:{zh:"\u53e3\u4ee4\u672a\u8bbe\u7f6e\uff0c\u540c\u6b65\u529f\u80fd\u4e0d\u53ef\u7528\u3002",en:"Passphrase is not set. Sync is unavailable.",zh_TW:"\u5bc6\u78bc\u672a\u8a2d\u5b9a\uff0c\u540c\u6b65\u529f\u80fd\u7121\u6cd5\u4f7f\u7528\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u672a\u8a2d\u5b9a\u306e\u305f\u3081\u3001\u540c\u671f\u6a5f\u80fd\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002",ko:"\uc554\ud638\ubb38\uc774 \uc124\uc815\ub418\uc9c0 \uc54a\uc544 \ub3d9\uae30\ud654 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",tr:"Parola ayarlanmad\u0131. Senkronizasyon kullan\u0131lam\u0131yor."},old_sync_encrypt_key:{zh:"\u65e7\u53e3\u4ee4",en:"Old Passphrase",zh_TW:"\u820a\u5bc6\u78bc",ja:"\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uae30\uc874 \uc554\ud638\ubb38",tr:"Eski Parola"},new_sync_encrypt_key:{zh:"\u65b0\u53e3\u4ee4",en:"New Passphrase",zh_TW:"\u65b0\u5bc6\u78bc",ja:"\u65b0\u3057\u3044\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uc0c8 \uc554\ud638\ubb38",tr:"Yeni Parola"},confirm_sync_encrypt_key:{zh:"\u786e\u8ba4\u53e3\u4ee4",en:"Confirm Passphrase",zh_TW:"\u78ba\u8a8d\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u78ba\u8a8d",ko:"\uc554\ud638\ubb38 \ud655\uc778",tr:"Parolay\u0131 Onayla"},sync_encrypt_key_too_short:{zh:"\u53e3\u4ee4\u957f\u5ea6\u81f3\u5c11 6 \u4f4d\u3002",en:"Passphrase must be at least 6 characters.",zh_TW:"\u5bc6\u78bc\u9577\u5ea6\u81f3\u5c11 6 \u4f4d\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306f 6 \u6587\u5b57\u4ee5\u4e0a\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\uc554\ud638\ubb38\uc740 \ucd5c\uc18c 6\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.",tr:"Parola en az 6 karakterden olu\u015fmal\u0131d\u0131r."},sync_encrypt_key_mismatch:{zh:"\u4e24\u6b21\u8f93\u5165\u7684\u53e3\u4ee4\u4e0d\u4e00\u81f4\u3002",en:"The two passphrases do not match.",zh_TW:"\u5169\u6b21\u8f38\u5165\u7684\u5bc6\u78bc\u4e0d\u4e00\u81f4\u3002",ja:"\u5165\u529b\u3057\u305f 2 \u3064\u306e\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002",ko:"\ub450 \ubc88 \uc785\ub825\ud55c \uc554\ud638\ubb38\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",tr:"Her \u0130ki Parola E\u015fle\u015fmiyor."},old_sync_encrypt_key_invalid:{zh:"\u65e7\u53e3\u4ee4\u4e0d\u6b63\u786e\u3002",en:"Old passphrase is incorrect.",zh_TW:"\u820a\u5bc6\u78bc\u4e0d\u6b63\u78ba\u3002",ja:"\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002",ko:"\uae30\uc874 \uc554\ud638\ubb38\uc774 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",tr:"Eski Parola Yanl\u0131\u015f."},clear_sync_encrypt_key:{zh:"\u6e05\u9664\u672c\u5730\u53e3\u4ee4",en:"Clear local passphrase",zh_TW:"\u6e05\u9664\u672c\u6a5f\u5bc6\u78bc",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb",ko:"\ub85c\uceec \uc554\ud638\ubb38 \uc9c0\uc6b0\uae30",tr:"Yerel parolay\u0131 temizle"},clear_sync_encrypt_key_title:{zh:"\u6e05\u9664\u672c\u5730\u540c\u6b65\u53e3\u4ee4\uff1f",en:"Clear local sync passphrase?",zh_TW:"\u6e05\u9664\u672c\u6a5f\u540c\u6b65\u5bc6\u78bc\uff1f",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u540c\u671f\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb\u3057\u307e\u3059\u304b\uff1f",ko:"\ub85c\uceec \ub3d9\uae30\ud654 \uc554\ud638\ubb38\uc744 \uc9c0\uc6b8\uae4c\uc694?",tr:"Yerel e\u015fitleme parolas\u0131 temizlensin mi?"},clear_sync_encrypt_key_message:{zh:"\u8fd9\u4e0d\u4f1a\u4fee\u6539\u4e91\u7aef\u6570\u636e\u3002\u4e4b\u540e\u5fc5\u987b\u91cd\u65b0\u586b\u5165\u80fd\u89e3\u5bc6\u4e91\u7aef\u6570\u636e\u7684\u53e3\u4ee4\uff0c\u624d\u80fd\u7ee7\u7eed\u540c\u6b65\u3002",en:"This does not change cloud data. You must enter the passphrase that decrypts it before syncing again.",zh_TW:"\u9019\u4e0d\u6703\u4fee\u6539\u96f2\u7aef\u8cc7\u6599\u3002\u4e4b\u5f8c\u5fc5\u9808\u91cd\u65b0\u586b\u5165\u53ef\u89e3\u5bc6\u96f2\u7aef\u8cc7\u6599\u7684\u5bc6\u78bc\uff0c\u624d\u80fd\u7e7c\u7e8c\u540c\u6b65\u3002",ja:"\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u306f\u5909\u66f4\u3055\u308c\u307e\u305b\u3093\u3002\u518d\u540c\u671f\u3059\u308b\u306b\u306f\u3001\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u3092\u5fa9\u53f7\u3067\u304d\u308b\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u518d\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",ko:"\ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\ub294 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \ub3d9\uae30\ud654\ud558\ub824\uba74 \ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\ub97c \ud574\ub3c5\ud560 \uc218 \uc788\ub294 \uc554\ud638\ubb38\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.",tr:"Bu i\u015flem bulut verilerini de\u011fi\u015ftirmez. Yeniden e\u015fitlemek i\xe7in bulut verilerini \xe7\xf6zebilen parolay\u0131 girmeniz gerekir."},clear_sync_encrypt_key_confirm:{zh:"\u786e\u8ba4\u6e05\u9664",en:"Clear passphrase",zh_TW:"\u78ba\u8a8d\u6e05\u9664",ja:"\u6d88\u53bb\u3059\u308b",ko:"\uc9c0\uc6b0\uae30",tr:"Parolay\u0131 temizle"},clear_sync_encrypt_key_success:{zh:"\u5df2\u6e05\u9664\u672c\u5730\u540c\u6b65\u53e3\u4ee4\u3002",en:"The local sync passphrase has been cleared.",zh_TW:"\u5df2\u6e05\u9664\u672c\u6a5f\u540c\u6b65\u5bc6\u78bc\u3002",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u540c\u671f\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb\u3057\u307e\u3057\u305f\u3002",ko:"\ub85c\uceec \ub3d9\uae30\ud654 \uc554\ud638\ubb38\uc744 \uc9c0\uc6e0\uc2b5\ub2c8\ub2e4.",tr:"Yerel e\u015fitleme parolas\u0131 temizlendi."},sync_encrypt_key_change_failed:{zh:"\u4fee\u6539\u53e3\u4ee4\u5931\u8d25\u3002\u8bf7\u4fdd\u7559\u65e7\u53e3\u4ee4\u548c\u65b0\u53e3\u4ee4\uff0c\u68c0\u67e5\u7f51\u7edc\u540e\u91cd\u8bd5\uff1b\u5982\u679c\u66fe\u6709\u90e8\u5206\u6570\u636e\u5df2\u7528\u65b0\u53e3\u4ee4\u5199\u5165\u4e91\u7aef\uff0c\u5fc5\u8981\u65f6\u8bf7\u6e05\u7a7a\u8fdc\u7aef\u540c\u6b65\u6587\u4ef6\u540e\u91cd\u65b0\u540c\u6b65\u3002",en:"Failed to change the passphrase. Keep both the old and new passphrases, check your network, and retry. If some cloud data was already written with the new passphrase, clear the remote sync files and sync again if needed.",zh_TW:"\u4fee\u6539\u5bc6\u78bc\u5931\u6557\u3002\u8acb\u4fdd\u7559\u820a\u5bc6\u78bc\u548c\u65b0\u5bc6\u78bc\uff0c\u6aa2\u67e5\u7db2\u8def\u5f8c\u91cd\u8a66\uff1b\u5982\u679c\u5df2\u6709\u90e8\u5206\u8cc7\u6599\u7528\u65b0\u5bc6\u78bc\u5beb\u5165\u96f2\u7aef\uff0c\u5fc5\u8981\u6642\u8acb\u6e05\u7a7a\u9060\u7aef\u540c\u6b65\u6a94\u6848\u5f8c\u91cd\u65b0\u540c\u6b65\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306e\u5909\u66f4\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3068\u65b0\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306e\u4e21\u65b9\u3092\u4fdd\u7ba1\u3057\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u518d\u8a66\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u304c\u65b0\u3057\u3044\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3067\u66f8\u304d\u8fbc\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30ea\u30e2\u30fc\u30c8\u540c\u671f\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u3066\u304b\u3089\u518d\u540c\u671f\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\uc554\ud638\ubb38 \ubcc0\uacbd\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \uae30\uc874 \uc554\ud638\ubb38\uacfc \uc0c8 \uc554\ud638\ubb38\uc744 \ubaa8\ub450 \ubcf4\uad00\ud558\uace0 \ub124\ud2b8\uc6cc\ud06c\ub97c \ud655\uc778\ud55c \ub4a4 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc138\uc694. \uc77c\ubd80 \ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\uac00 \uc774\ubbf8 \uc0c8 \uc554\ud638\ubb38\uc73c\ub85c \uc4f0\uc778 \uacbd\uc6b0 \ud544\uc694\ud558\uba74 \uc6d0\uaca9 \ub3d9\uae30\ud654 \ud30c\uc77c\uc744 \ube44\uc6b4 \ub4a4 \ub2e4\uc2dc \ub3d9\uae30\ud654\ud558\uc138\uc694.",tr:"Parola de\u011fi\u015ftirme i\u015flemi ba\u015far\u0131s\u0131z oldu. Hem eski hem de yeni parolay\u0131 saklay\u0131n, a\u011f\u0131n\u0131z\u0131 kontrol edin ve tekrar deneyin. Yeni parola ile bulut verilerine zaten baz\u0131 veriler yaz\u0131lm\u0131\u015fsa, uzaktan senkronizasyon dosyalar\u0131n\u0131 temizleyin ve gerekirse tekrar senkronize edin"},sync_now:{zh:"\u7acb\u5373\u540c\u6b65",en:"Sync Now",zh_TW:"\u7acb\u5373\u540c\u6b65",ja:"\u4eca\u3059\u3050\u540c\u671f",ko:"\uc9c0\uae08 \ub3d9\uae30\ud654",tr:"\u015eimdi Senkronize Et"},sync_success:{zh:"\u540c\u6b65\u6210\u529f\uff01",en:"Sync Success",zh_TW:"\u540c\u6b65\u6210\u529f\uff01",ja:"\u540c\u671f\u6210\u529f\uff01",ko:"\ub3d9\uae30\ud654 \uc131\uacf5!",tr:"Senkronizasyon Ba\u015far\u0131l\u0131"},sync_failed:{zh:"\u540c\u6b65\u5931\u8d25\uff01",en:"Sync Error",zh_TW:"\u540c\u6b65\u5931\u6557\uff01",ja:"\u540c\u671f\u5931\u6557\uff01",ko:"\ub3d9\uae30\ud654 \uc2e4\ud328!",tr:"Senkronizasyon Hatas\u0131"},error_got_some_wrong:{zh:"\u62b1\u6b49\uff0c\u51fa\u9519\u4e86\uff01",en:"Sorry, something went wrong!",zh_TW:"\u62b1\u6b49\uff0c\u767c\u751f\u932f\u8aa4\uff01",ja:"\u7533\u3057\u8a33\u3042\u308a\u307e\u305b\u3093\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff01",ko:"\uc8c4\uc1a1\ud569\ub2c8\ub2e4, \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4!",tr:"\xdczg\xfcn\xfcm, Bir Sorun Olu\u015ftu"},error_sync_setting:{zh:"\u60a8\u7684\u540c\u6b65\u7c7b\u578b\u5fc5\u987b\u4e3a\u201cKISS-Worker\u201d\uff0c\u4e14\u9700\u586b\u5199\u5b8c\u6574",en:'Your sync type must be "KISS-Worker" and must be filled in completely',zh_TW:"\u60a8\u7684\u540c\u6b65\u578b\u614b\u5fc5\u9808\u70ba\u300cKISS-Worker\u300d\uff0c\u4e14\u9700\u586b\u5beb\u5b8c\u6574\u3002",ja:"\u540c\u671f\u30bf\u30a4\u30d7\u306f\u300cKISS-Worker\u300d\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u3059\u3079\u3066\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",ko:'\ub3d9\uae30\ud654 \uc720\ud615\uc740 "KISS-Worker"\uc5ec\uc57c \ud558\uba70, \ubaa8\ub4e0 \ud56d\ubaa9\uc744 \ube60\uc9d0\uc5c6\uc774 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.',tr:'Senkronizasyon T\xfcr\xfcn\xfcz "KISS-Worker" Olmal\u0131 Ve Eksiksiz Olarak Doldurulmal\u0131d\u0131r'},click_test:{zh:"\u70b9\u51fb\u6d4b\u8bd5",en:"Click Test",zh_TW:"\u9ede\u9078\u6e2c\u8a66",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c6\u30b9\u30c8",ko:"\ud074\ub9ad \ud14c\uc2a4\ud2b8",tr:"Test Et'I T\u0131klay\u0131n"},test_success:{zh:"\u6d4b\u8bd5\u6210\u529f",en:"Test success",zh_TW:"\u6e2c\u8a66\u6210\u529f",ja:"\u30c6\u30b9\u30c8\u6210\u529f",ko:"\ud14c\uc2a4\ud2b8 \uc131\uacf5",tr:"Test Ba\u015far\u0131l\u0131"},test_failed:{zh:"\u6d4b\u8bd5\u5931\u8d25",en:"Test failed",zh_TW:"\u6e2c\u8a66\u5931\u6557",ja:"\u30c6\u30b9\u30c8\u5931\u6557",ko:"\ud14c\uc2a4\ud2b8 \uc2e4\ud328",tr:"Test Ba\u015far\u0131s\u0131z Oldu"},clear_all_cache_now:{zh:"\u7acb\u5373\u6e05\u9664\u5168\u90e8\u7f13\u5b58",en:"Clear all cache now",zh_TW:"\u7acb\u5373\u6e05\u9664\u5168\u90e8\u5feb\u53d6",ja:"\u3059\u3079\u3066\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u4eca\u3059\u3050\u30af\u30ea\u30a2",ko:"\ubaa8\ub4e0 \uce90\uc2dc \uc9c0\uae08 \uc9c0\uc6b0\uae30",tr:"T\xfcm \xd6nbelle\u011fi \u015eimdi Temizle"},clear_cache:{zh:"\u6e05\u9664\u7f13\u5b58",en:"Clear Cache",zh_TW:"\u6e05\u9664\u5feb\u53d6",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2",ko:"\uce90\uc2dc \uc9c0\uc6b0\uae30",tr:"\xd6nbelle\u011fi Temizle"},disable_on_mobile:{zh:"\u79fb\u52a8\u7aef\u7981\u7528",en:"Disable on Mobile",zh_TW:"\u884c\u52d5\u88dd\u7f6e\u505c\u7528",ja:"\u30e2\u30d0\u30a4\u30eb\u3067\u7121\u52b9\u306b\u3059\u308b",ko:"\ubaa8\ubc14\uc77c\uc5d0\uc11c \ube44\ud65c\uc131\ud654",tr:"Mobil Cihazda Devre D\u0131\u015f\u0131 B\u0131rak"},clear_success:{zh:"\u6e05\u9664\u6210\u529f",en:"Clear success",zh_TW:"\u6e05\u9664\u6210\u529f",ja:"\u30af\u30ea\u30a2\u6210\u529f",ko:"\uc9c0\uc6b0\uae30 \uc131\uacf5",tr:"Temizleme Ba\u015far\u0131l\u0131"},clear_failed:{zh:"\u6e05\u9664\u5931\u8d25",en:"Clear failed",zh_TW:"\u6e05\u9664\u5931\u6557",ja:"\u30af\u30ea\u30a2\u5931\u6557",ko:"\uc9c0\uc6b0\uae30 \uc2e4\ud328",tr:"Temizleme Ba\u015far\u0131s\u0131z Oldu"},share:{zh:"\u5206\u4eab",en:"Share",zh_TW:"\u5206\u4eab",ja:"\u5171\u6709",ko:"\uacf5\uc720",tr:"Payla\u015f"},clear_all:{zh:"\u6e05\u7a7a",en:"Clear All",zh_TW:"\u6e05\u7a7a",ja:"\u3059\u3079\u3066\u30af\u30ea\u30a2",ko:"\ubaa8\ub450 \uc9c0\uc6b0\uae30",tr:"T\xfcm\xfcn\xfc Temizle"},help:{zh:"\u6c42\u52a9",en:"Help",zh_TW:"\u6c42\u52a9",ja:"\u30d8\u30eb\u30d7",ko:"\ub3c4\uc6c0\ub9d0",tr:"Yard\u0131m"},restore_default:{zh:"\u6062\u590d\u9ed8\u8ba4",en:"Restore Default",zh_TW:"\u6062\u5fa9\u9810\u8a2d",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u623b\u3059",ko:"\uae30\ubcf8\uac12 \ubcf5\uc6d0",tr:"Varsay\u0131lan\u0131 Geri Y\xfckle"},shortcuts_setting:{zh:"\u5feb\u6377\u952e\u8bbe\u7f6e",en:"Shortcuts Setting",zh_TW:"\u5feb\u901f\u9375\u8a2d\u5b9a",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u8a2d\u5b9a",ko:"\ub2e8\ucd95\ud0a4 \uc124\uc815",tr:"K\u0131sayol Ayar\u0131"},toggle_translate_shortcut:{zh:'"\u5f00\u542f\u7ffb\u8bd1"\u5feb\u6377\u952e',en:'"Toggle Translate" Shortcut',zh_TW:"\u300c\u958b\u555f\u7ffb\u8b6f\u300d\u5feb\u901f\u9375",ja:"\u300c\u7ffb\u8a33\u5207\u308a\u66ff\u3048\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\ubc88\uc5ed \ucf1c\uae30" \ub2e8\ucd95\ud0a4',tr:'"\xc7eviriyi A\xe7/Kapat" K\u0131sayolu'},toggle_transonly_shortcut:{zh:'"\u9690\u85cf\u539f\u6587"\u5feb\u6377\u952e',en:'"Hide Original" Shortcut',zh_TW:"\u300c\u96b1\u85cf\u539f\u6587\u300d\u5feb\u901f\u9375",ja:"\u300c\u539f\u6587\u3092\u96a0\u3059\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc6d0\ubb38 \uc228\uae30\uae30" \ub2e8\ucd95\ud0a4',tr:'"Orijinali Gizle" K\u0131sayolu'},toggle_style_shortcut:{zh:'"\u5207\u6362\u6837\u5f0f"\u5feb\u6377\u952e',en:'"Toggle Style" Shortcut',zh_TW:"\u300c\u5207\u63db\u6a23\u5f0f\u300d\u5feb\u901f\u9375",ja:"\u300c\u30b9\u30bf\u30a4\u30eb\u5207\u308a\u66ff\u3048\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc2a4\ud0c0\uc77c \uc804\ud658" \ub2e8\ucd95\ud0a4',tr:'"Stil De\u011fi\u015ftir" K\u0131sayolu'},toggle_popup_shortcut:{zh:'"\u6253\u5f00\u5f39\u7a97"\u5feb\u6377\u952e',en:'"Open Popup" Shortcut',zh_TW:"\u300c\u958b\u555f\u5f48\u51fa\u8996\u7a97\u300d\u5feb\u901f\u9375",ja:"\u300c\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u958b\u304f\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\ud31d\uc5c5 \uc5f4\uae30" \ub2e8\ucd95\ud0a4',tr:'"A\xe7\u0131l\u0131r Pencereyi A\xe7" K\u0131sayolu'},open_setting_shortcut:{zh:'"\u6253\u5f00\u8bbe\u7f6e"\u5feb\u6377\u952e',en:'"Open Setting" Shortcut',zh_TW:"\u300c\u958b\u555f\u8a2d\u5b9a\u300d\u5feb\u901f\u9375",ja:"\u300c\u8a2d\u5b9a\u3092\u958b\u304f\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc124\uc815 \uc5f4\uae30" \ub2e8\ucd95\ud0a4',tr:'"Ayar\u0131 A\xe7" K\u0131sayolu'},hide_fab_button:{zh:"\u9690\u85cf\u60ac\u6d6e\u6309\u94ae",en:"Hide Fab Button",zh_TW:"\u96b1\u85cf\u6d6e\u52d5\u6309\u9215",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u3092\u96a0\u3059",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \uc228\uae30\uae30",tr:"Y\xfczen Eylem D\xfc\u011fmesini Gizle"},fab_exception_list:{zh:"\u60ac\u6d6e\u6309\u94ae\u7279\u4f8b\u540d\u5355",en:"Fab Button Exception List",zh_TW:"\u6d6e\u52d5\u6309\u9215\u4f8b\u5916\u6e05\u55ae",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u306e\u4f8b\u5916\u30ea\u30b9\u30c8",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \uc608\uc678 \ubaa9\ub85d",tr:"Y\xfczen D\xfc\u011fme \u0130stisna Listesi"},fab_exception_list_helper:{zh:"\u5168\u5c40\u663e\u793a\u65f6\uff0c\u547d\u4e2d\u540d\u5355\u7684\u9875\u9762\u9690\u85cf\u6309\u94ae\uff1b\u5168\u5c40\u9690\u85cf\u65f6\uff0c\u547d\u4e2d\u540d\u5355\u7684\u9875\u9762\u663e\u793a\u6309\u94ae\u3002\u652f\u6301\u661f\u53f7(*)\u901a\u914d\u7b26\uff0c\u591a\u4e2a\u7f51\u5740\u7528\u6362\u884c\u6216\u9017\u53f7\u5206\u9694\u3002",en:"When shown globally, matching pages hide the button; when hidden globally, matching pages show it. Supports * wildcards; separate URLs with newlines or commas.",zh_TW:"\u5168\u57df\u986f\u793a\u6642\uff0c\u547d\u4e2d\u6e05\u55ae\u7684\u9801\u9762\u6703\u96b1\u85cf\u6309\u9215\uff1b\u5168\u57df\u96b1\u85cf\u6642\uff0c\u547d\u4e2d\u6e05\u55ae\u7684\u9801\u9762\u6703\u986f\u793a\u6309\u9215\u3002\u652f\u63f4\u661f\u865f (*) \u842c\u7528\u5b57\u5143\uff0c\u7db2\u5740\u53ef\u7528\u63db\u884c\u6216\u9017\u865f\u5206\u9694\u3002",ja:"\u30b0\u30ed\u30fc\u30d0\u30eb\u8868\u793a\u6642\u306f\u4e00\u81f4\u3059\u308b\u30da\u30fc\u30b8\u3067\u30dc\u30bf\u30f3\u3092\u96a0\u3057\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u975e\u8868\u793a\u6642\u306f\u4e00\u81f4\u3059\u308b\u30da\u30fc\u30b8\u3067\u30dc\u30bf\u30f3\u3092\u8868\u793a\u3057\u307e\u3059\u3002* \u306e\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u306b\u5bfe\u5fdc\u3057\u3001URL \u306f\u6539\u884c\u307e\u305f\u306f\u30ab\u30f3\u30de\u3067\u533a\u5207\u308c\u307e\u3059\u3002",ko:"\uc804\uc5ed \ud45c\uc2dc \uc2dc \ubaa9\ub85d\uacfc \uc77c\uce58\ud558\ub294 \ud398\uc774\uc9c0\uc5d0\uc11c\ub294 \ubc84\ud2bc\uc744 \uc228\uae30\uace0, \uc804\uc5ed \uc228\uae40 \uc2dc\uc5d0\ub294 \ubc84\ud2bc\uc744 \ud45c\uc2dc\ud569\ub2c8\ub2e4. * \uc640\uc77c\ub4dc\uce74\ub4dc\ub97c \uc9c0\uc6d0\ud558\uba70 URL\uc740 \uc904\ubc14\uafc8 \ub610\ub294 \uc27c\ud45c\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4.",tr:"Genel olarak g\xf6sterildi\u011finde e\u015fle\u015fen sayfalarda d\xfc\u011fme gizlenir; genel olarak gizlendi\u011finde e\u015fle\u015fen sayfalarda g\xf6sterilir. * joker karakteri desteklenir; URL'leri sat\u0131r sonu veya virg\xfclle ay\u0131r\u0131n."},fab_click_action:{zh:"\u5355\u51fb\u60ac\u6d6e\u6309\u94ae\u52a8\u4f5c",en:"Single Click Fab Action",zh_TW:"\u9ede\u9078\u6d6e\u52d5\u6309\u9215\u52d5\u4f5c",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u306e\u30af\u30ea\u30c3\u30af\u52d5\u4f5c",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \ud074\ub9ad \ub3d9\uc791",tr:"Tek T\u0131klamayla Y\xfczen Eylem D\xfc\u011fmesi"},fab_click_menu:{zh:"\u5f39\u51fa\u83dc\u5355",en:"Popup Menu",zh_TW:"\u5f48\u51fa\u9078\u55ae",ja:"\u30e1\u30cb\u30e5\u30fc\u3092\u958b\u304f",ko:"\ud31d\uc5c5 \uba54\ub274",tr:"A\xe7\u0131l\u0131r Men\xfc"},fab_click_translate:{zh:"\u76f4\u63a5\u7ffb\u8bd1",en:"Translate",zh_TW:"\u76f4\u63a5\u7ffb\u8b6f",ja:"\u76f4\u63a5\u7ffb\u8a33",ko:"\ubc14\ub85c \ubc88\uc5ed",tr:"\xc7evir"},hide_tran_button:{zh:"\u9690\u85cf\u7ffb\u8bd1\u6309\u94ae",en:"Hide Translate Button",zh_TW:"\u96b1\u85cf\u7ffb\u8b6f\u6309\u9215",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u3092\u96a0\u3059",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc228\uae30\uae30",tr:"\xc7evir D\xfc\u011fmesini Gizle"},hide_click_away:{zh:"\u70b9\u51fb\u5916\u90e8\u5173\u95ed\u5f39\u7a97",en:"Click outside to close the pop-up window",zh_TW:"\u9ede\u9078\u5916\u90e8\u5340\u57df\u95dc\u9589\u5f48\u51fa\u8996\u7a97",ja:"\u5916\u90e8\u30af\u30ea\u30c3\u30af\u3067\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u9589\u3058\u308b",ko:"\ubc14\uae65\ucabd \ud074\ub9ad \uc2dc \ud31d\uc5c5 \ub2eb\uae30",tr:"A\xe7\u0131l\u0131r Pencereyi Kapatmak \u0130\xe7in D\u0131\u015far\u0131y\u0131 T\u0131klay\u0131n"},use_simple_style:{zh:"\u4f7f\u7528\u7b80\u6d01\u754c\u9762",en:"Use a simple interface",zh_TW:"\u4f7f\u7528\u7c21\u6f54\u4ecb\u9762",ja:"\u30b7\u30f3\u30d7\u30ebUI\u3092\u4f7f\u7528",ko:"\uac04\ub2e8\ud55c \uc778\ud130\ud398\uc774\uc2a4 \uc0ac\uc6a9",tr:"Basit Bir Aray\xfcz Kullan\u0131n"},show:{zh:"\u663e\u793a",en:"Show",zh_TW:"\u986f\u793a",ja:"\u8868\u793a",ko:"\ud45c\uc2dc",tr:"G\xf6ster"},hide:{zh:"\u9690\u85cf",en:"Hide",zh_TW:"\u96b1\u85cf",ja:"\u975e\u8868\u793a",ko:"\uc228\uae30\uae30",tr:"Gizle"},save_rule:{zh:"\u4fdd\u5b58\u672c\u7ad9\u89c4\u5219",en:"Save this site rule",zh_TW:"\u5132\u5b58\u672c\u7ad9\u898f\u5247",ja:"\u3053\u306e\u30b5\u30a4\u30c8\u306e\u30eb\u30fc\u30eb\u3092\u4fdd\u5b58",ko:"\uc774 \uc0ac\uc774\ud2b8 \uaddc\uce59 \uc800\uc7a5",tr:"Bu Site Kural\u0131n\u0131 Kaydet"},domain:{zh:"\u7f51\u57df",en:"Domain",zh_TW:"\u7db2\u57df",ja:"\u30c9\u30e1\u30a4\u30f3",ko:"\ub3c4\uba54\uc778",tr:"Alan"},global_rule:{zh:"\u5168\u5c40\u89c4\u5219",en:"Global Rule",zh_TW:"\u5168\u57df\u898f\u5247",ja:"\u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb",ko:"\uc804\uc5ed \uaddc\uce59",tr:"K\xfcresel Kural"},input_translate:{zh:"\u8f93\u5165\u6846\u7ffb\u8bd1",en:"Input Box Translation",zh_TW:"\u8f38\u5165\u6846\u7ffb\u8b6f",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u7ffb\u8a33",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed",tr:"Giri\u015f Kutusu \xc7evirisi"},use_input_box_translation:{zh:"\u542f\u7528\u8f93\u5165\u6846\u7ffb\u8bd1",en:"Input Box Translation",zh_TW:"\u555f\u7528\u8f38\u5165\u6846\u7ffb\u8b6f",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed \uc0ac\uc6a9",tr:"Giri\u015f Kutusu \xc7evirisi"},input_selector:{zh:"\u8f93\u5165\u6846\u9009\u62e9\u5668",en:"Input Selector",zh_TW:"\u8f38\u5165\u6846\u9078\u64c7\u5668",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u30bb\u30ec\u30af\u30bf",ko:"\uc785\ub825\ucc3d \uc120\ud0dd\uc790",tr:"Giri\u015f Se\xe7ici"},input_selector_helper:{zh:"\u7528\u4e8e\u8f93\u5165\u6846\u7ffb\u8bd1\u3002",en:"Used for input box translation.",zh_TW:"\u7528\u65bc\u8f38\u5165\u6846\u7ffb\u8b6f\u3002",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u306e\u7ffb\u8a33\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed\uc5d0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.",tr:"Giri\u015f kutusu \xe7evirisi i\xe7in kullan\u0131l\u0131r."},trigger_trans_shortcut:{zh:"\u89e6\u53d1\u7ffb\u8bd1\u5feb\u6377\u952e",en:"Trigger Translation Shortcut Keys",zh_TW:"\u89f8\u767c\u7ffb\u8b6f\u5feb\u901f\u9375",ja:"\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc",ko:"\ubc88\uc5ed \uc2e4\ud589 \ub2e8\ucd95\ud0a4",tr:"\xc7eviri K\u0131sayol Tu\u015flar\u0131n\u0131 Tetikleyin"},trigger_trans_shortcut_help:{zh:"\u9ed8\u8ba4\u4e3a\u5355\u51fb\u201cAltLeft+KeyI\u201d",en:'Default is "AltLeft+KeyI"',zh_TW:"\u9810\u8a2d\u70ba\u6309\u4e0b\u300cAltLeft+KeyI\u300d",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u306f\u300cAltLeft+KeyI\u300d\u3067\u3059",ko:'\uae30\ubcf8\uac12 "AltLeft+KeyI"',tr:'Varsay\u0131lan "AltLeft+KeyI"'},shortcut_press_count:{zh:"\u5feb\u6377\u952e\u8fde\u51fb\u6b21\u6570",en:"Shortcut Press Number",zh_TW:"\u5feb\u901f\u9375\u9023\u6309\u6b21\u6578",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u306e\u9023\u7d9a\u30d7\u30ec\u30b9\u56de\u6570",ko:"\ub2e8\ucd95\ud0a4 \uc5f0\uc18d \uc785\ub825 \ud69f\uc218",tr:"K\u0131sayol Tu\u015funa Bas\u0131n"},combo_timeout:{zh:"\u8fde\u51fb\u8d85\u65f6\u65f6\u95f4 (10-1000ms)",en:"Combo Timeout (10-1000ms)",zh_TW:"\u9023\u64ca\u903e\u6642 (10-1000ms)",ja:"\u9023\u7d9a\u30d7\u30ec\u30b9\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 (10-1000ms)",ko:"\uc5f0\uc18d \uc785\ub825 \uc2dc\uac04 \ucd08\uacfc (10-1000ms)",tr:"Kombo Zaman A\u015f\u0131m\u0131 (10-1000 Ms)"},input_trans_start_sign:{zh:"\u7ffb\u8bd1\u8d77\u59cb\u6807\u8bc6",en:"Translation Start Sign",zh_TW:"\u7ffb\u8b6f\u8d77\u59cb\u6a19\u8a18",ja:"\u7ffb\u8a33\u958b\u59cb\u8a18\u53f7",ko:"\ubc88\uc5ed \uc2dc\uc791 \ud45c\uc2dc",tr:"\xc7eviri Ba\u015flang\u0131\xe7 \u0130\u015fareti"},input_trans_start_sign_help:{zh:"\u6807\u8bc6\u540e\u9762\u53ef\u4ee5\u52a0\u76ee\u6807\u8bed\u8a00\u4ee3\u7801\uff0c\u5982\uff1a \u201c/en \u4f60\u597d\u201d\u3001\u201c/zh hello\u201d",en:'The target language code can be added after the sign, such as: "/en \u4f60\u597d", "/zh hello"',zh_TW:"\u6a19\u8a18\u5f8c\u53ef\u52a0\u4e0a\u76ee\u6a19\u8a9e\u8a00\u4ee3\u78bc\uff0c\u4f8b\u5982\uff1a\u300c/en \u4f60\u597d\u300d\u3001\u300c/zh hello\u300d",ja:"\u8a18\u53f7\u306e\u5f8c\u306b\u5bfe\u8c61\u8a00\u8a9e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002\u4f8b\uff1a\u300c/en \u4f60\u597d\u300d\u3001\u300c/zh hello\u300d",ko:'\ud45c\uc2dc \ub4a4\uc5d0 \ub300\uc0c1 \uc5b8\uc5b4 \ucf54\ub4dc\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608: "/en \u4f60\u597d", "/zh hello"',tr:'\u0130\u015faretin sonuna hedef dil kodu eklenebilir, \xf6rne\u011fin: "/en \u4f60\u597d", "/zh hello"'},detect_lang_remote:{zh:"\u8fdc\u7a0b\u8bed\u8a00\u68c0\u6d4b",en:"Remote language detection",zh_TW:"\u9060\u7aef\u8a9e\u8a00\u5075\u6e2c",ja:"\u30ea\u30e2\u30fc\u30c8\u8a00\u8a9e\u691c\u51fa",ko:"\uc6d0\uaca9 \uc5b8\uc5b4 \uac10\uc9c0",tr:"Uzaktan Dil Alg\u0131lama"},detect_lang_remote_help:{zh:"\u542f\u7528\u540e\u68c0\u6d4b\u51c6\u786e\u5ea6\u589e\u52a0\uff0c\u4f46\u4f1a\u964d\u4f4e\u7ffb\u8bd1\u901f\u5ea6\uff0c\u8bf7\u914c\u60c5\u5f00\u542f",en:"After enabling, the detection accuracy will increase, but it will reduce the translation speed. Please enable it as appropriate.",zh_TW:"\u555f\u7528\u5f8c\u53ef\u63d0\u5347\u5075\u6e2c\u6e96\u78ba\u5ea6\uff0c\u4f46\u6703\u964d\u4f4e\u7ffb\u8b6f\u901f\u5ea6\uff0c\u8acb\u8996\u9700\u8981\u958b\u555f\u3002",ja:"\u6709\u52b9\u306b\u3059\u308b\u3068\u691c\u51fa\u7cbe\u5ea6\u304c\u5411\u4e0a\u3057\u307e\u3059\u304c\u3001\u7ffb\u8a33\u901f\u5ea6\u304c\u4f4e\u4e0b\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u6709\u52b9\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ud65c\uc131\ud654\ud558\uba74 \uac10\uc9c0 \uc815\ud655\ub3c4\uac00 \ub192\uc544\uc9c0\uc9c0\ub9cc \ubc88\uc5ed \uc18d\ub3c4\uac00 \ub290\ub824\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc801\uc808\ud788 \ud65c\uc131\ud654\ud558\uc2ed\uc2dc\uc624.",tr:"Etkinle\u015ftirildikten sonra alg\u0131lama do\u011frulu\u011fu artacak, ancak \xe7eviri h\u0131z\u0131 d\xfc\u015fecektir. L\xfctfen uygun \u015fekilde etkinle\u015ftirin."},detect_lang_service:{zh:"\u8bed\u8a00\u68c0\u6d4b\u670d\u52a1",en:"Language detect service",zh_TW:"\u8a9e\u8a00\u5075\u6e2c\u670d\u52d9",ja:"\u8a00\u8a9e\u691c\u51fa\u30b5\u30fc\u30d3\u30b9",ko:"\uc5b8\uc5b4 \uac10\uc9c0 \uc11c\ube44\uc2a4",tr:"Dil Alg\u0131lama Hizmeti"},disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},enable:{zh:"\u542f\u7528",en:"Enable",zh_TW:"\u555f\u7528",ja:"\u6709\u52b9",ko:"\ud65c\uc131\ud654",tr:"Etkin"},selection_translate:{zh:"\u5212\u8bcd\u7ffb\u8bd1",en:"Selection Translation",zh_TW:"\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7ffb\u8a33",ko:"\uc120\ud0dd \ubc88\uc5ed",tr:"Se\xe7im \xc7evirisi"},toggle_selection_translate:{zh:"\u542f\u7528\u5212\u8bcd\u7ffb\u8bd1",en:"Use Selection Translate",zh_TW:"\u555f\u7528\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc120\ud0dd \ubc88\uc5ed \uc0ac\uc6a9",tr:"Se\xe7im \xc7evirmeyi Kullan"},trigger_tranbox_shortcut:{zh:"\u663e\u793a\u7ffb\u8bd1\u6846/\u7ffb\u8bd1\u9009\u4e2d\u6587\u5b57\u5feb\u6377\u952e",en:"Open Translate Popup/Translate Selected Shortcut",zh_TW:"\u986f\u793a\u7ffb\u8b6f\u6846\uff0f\u7ffb\u8b6f\u9078\u53d6\u6587\u5b57\u5feb\u901f\u9375",ja:"\u7ffb\u8a33\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u8868\u793a/\u9078\u629e\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:"\ubc88\uc5ed\ucc3d \ud45c\uc2dc/\uc120\ud0dd \ubc88\uc5ed \ub2e8\ucd95\ud0a4",tr:"\xc7eviri A\xe7\u0131l\u0131r Penceresini A\xe7/Se\xe7ilen K\u0131sayolu \xc7evir"},tranbtn_offset_x:{zh:"\u7ffb\u8bd1\u6309\u94ae\u504f\u79fbX\uff08\xb1200\uff09",en:"Translate Button Offset X (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6309\u9215\u4f4d\u79fb X\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u30aa\u30d5\u30bb\u30c3\u30c8X (\xb1200)",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc624\ud504\uc14b X (\xb1200)",tr:"\xc7evirme D\xfc\u011fmesi Ofseti X (\xb1200)"},tranbtn_offset_y:{zh:"\u7ffb\u8bd1\u6309\u94ae\u504f\u79fbY\uff08\xb1200\uff09",en:"Translate Button Offset Y (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6309\u9215\u4f4d\u79fb Y\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u30aa\u30d5\u30bb\u30c3\u30c8Y (\xb1200)",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc624\ud504\uc14b Y (\xb1200)",tr:"\xc7evirme D\xfc\u011fmesi Ofseti Y (\xb1200)"},tranbox_offset_x:{zh:"\u7ffb\u8bd1\u6846\u504f\u79fbX\uff08\xb1200\uff09",en:"Translate Box Offset X (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6846\u4f4d\u79fb X\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u30aa\u30d5\u30bb\u30c3\u30c8X (\xb1200)",ko:"\ubc88\uc5ed\ucc3d \uc624\ud504\uc14b X (\xb1200)",tr:"\xc7evirme Kutusu Ofseti X (\xb1200)"},tranbox_offset_y:{zh:"\u7ffb\u8bd1\u6846\u504f\u79fbY\uff08\xb1200\uff09",en:"Translate Box Offset Y (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6846\u4f4d\u79fb Y\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u30aa\u30d5\u30bb\u30c3\u30c8Y (\xb1200)",ko:"\ubc88\uc5ed\ucc3d \uc624\ud504\uc14b Y (\xb1200)",tr:"\xc7evirme Kutusu Ofseti Y (\xb1200)"},translated_text:{zh:"\u8bd1\u6587",en:"Translated Text",zh_TW:"\u8b6f\u6587",ja:"\u7ffb\u8a33\u6e08\u307f\u30c6\u30ad\u30b9\u30c8",ko:"\ubc88\uc5ed\ub41c \ud14d\uc2a4\ud2b8",tr:"\xc7evrilmi\u015f Metin"},original_text:{zh:"\u539f\u6587",en:"Original Text",zh_TW:"\u539f\u6587",ja:"\u539f\u6587",ko:"\uc6d0\ubcf8 \ud14d\uc2a4\ud2b8",tr:"Orijinal Metin"},favorite_words:{zh:"\u6536\u85cf\u8bcd\u6c47",en:"Favorite Words",zh_TW:"\u6536\u85cf\u8a5e\u5f59",ja:"\u304a\u6c17\u306b\u5165\u308a\u5358\u8a9e",ko:"\uc990\uaca8\ucc3e\ub294 \ub2e8\uc5b4",tr:"Favori Kelimeler"},touch_setting:{zh:"\u89e6\u5c4f\u8bbe\u7f6e",en:"Touch Setting",zh_TW:"\u89f8\u63a7\u8a2d\u5b9a",ja:"\u30bf\u30c3\u30c1\u8a2d\u5b9a",ko:"\ud130\uce58 \uc124\uc815",tr:"Dokunma Ayar\u0131"},touch_translate_shortcut:{zh:"\u89e6\u5c4f\u7ffb\u8bd1\u5feb\u6377\u65b9\u5f0f (\u652f\u6301\u591a\u9009)",en:"Touch Translate Shortcut (multiple supported)",zh_TW:"\u89f8\u63a7\u7ffb\u8b6f\u6377\u5f91 (\u652f\u63f4\u591a\u9078)",ja:"\u30bf\u30c3\u30c1\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8 (\u8907\u6570\u9078\u629e\u53ef)",ko:"\ud130\uce58 \ubc88\uc5ed \ub2e8\ucd95\ud0a4 (\ub2e4\uc911 \uc120\ud0dd \uc9c0\uc6d0)",tr:"Dokunmatik \xc7eviri K\u0131sayolu (Birden Fazla Desteklenir)"},touch_tap_0:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},touch_tap_2:{zh:"\u53cc\u6307\u8f7b\u89e6",en:"Two finger tap",zh_TW:"\u96d9\u6307\u8f15\u89f8",ja:"2\u672c\u6307\u30bf\u30c3\u30d7",ko:"\ub450 \uc190\uac00\ub77d \ud0ed",tr:"\u0130ki Parmakla Dokunma"},touch_tap_3:{zh:"\u4e09\u6307\u8f7b\u89e6",en:"Three finger tap",zh_TW:"\u4e09\u6307\u8f15\u89f8",ja:"3\u672c\u6307\u30bf\u30c3\u30d7",ko:"\uc138 \uc190\uac00\ub77d \ud0ed",tr:"\xdc\xe7 Parmakla Dokunma"},touch_tap_4:{zh:"\u56db\u6307\u8f7b\u89e6",en:"Four finger tap",zh_TW:"\u56db\u6307\u8f15\u89f8",ja:"4\u672c\u6307\u30bf\u30c3\u30d7",ko:"\ub124 \uc190\uac00\ub77d \ud0ed",tr:"D\xf6rt Parmakla Dokunma"},touch_tap_5:{zh:"\u5355\u6307\u53cc\u51fb",en:"Double-click",zh_TW:"\u55ae\u6307\u96d9\u64ca",ja:"\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ub354\ube14 \ud074\ub9ad",tr:"\xc7ift T\u0131klama"},touch_tap_6:{zh:"\u5355\u6307\u4e09\u51fb",en:"Triple-click",zh_TW:"\u55ae\u6307\u4e09\u64ca",ja:"\u30c8\u30ea\u30d7\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ud2b8\ub9ac\ud50c \ud074\ub9ad",tr:"\xdc\xe7l\xfc T\u0131klama"},touch_tap_7:{zh:"\u53cc\u6307\u53cc\u51fb",en:"Two-finger double-click",zh_TW:"\u96d9\u6307\u96d9\u64ca",ja:"2\u672c\u6307\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ub450 \uc190\uac00\ub77d \ub354\ube14 \ud074\ub9ad",tr:"\u0130ki Parmakla \xc7ift T\u0131klama"},translate_blacklist:{zh:"\u7981\u7528\u7ffb\u8bd1\u540d\u5355",en:"Translate Blacklist",zh_TW:"\u505c\u7528\u7ffb\u8b6f\u540d\u55ae",ja:"\u7ffb\u8a33\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8",ko:"\ubc88\uc5ed \ube14\ub799\ub9ac\uc2a4\ud2b8",tr:"Kara Listeyi \xc7evir"},blacklist:{zh:"\u7981\u7528\u9ed1\u540d\u5355",en:"Blacklist",zh_TW:"\u505c\u7528\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8",tr:"Kara Liste"},add_to_blacklist:{zh:"\u52a0\u5165\u9ed1\u540d\u5355",en:"Add to Blacklist",zh_TW:"\u52a0\u5165\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u306b\u8ffd\u52a0",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00",tr:"Kara Listeye Ekle"},remove_from_blacklist:{zh:"\u79fb\u51fa\u9ed1\u540d\u5355",en:"Remove from Blacklist",zh_TW:"\u79fb\u51fa\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8\uc5d0\uc11c \uc81c\uac70",tr:"Kara Listeden Kald\u0131r"},disabled_orilist:{zh:"\u7981\u7528Origin\u540d\u5355",en:"Disabled Origin List",zh_TW:"\u505c\u7528 Origin \u540d\u55ae",ja:"\u7121\u52b9\u5316Origin\u30ea\u30b9\u30c8",ko:"\ube44\ud65c\uc131\ud654\ub41c Origin \ubaa9\ub85d",tr:"Devre D\u0131\u015f\u0131 B\u0131rak\u0131lan Kaynak Listesi"},disabled_csplist:{zh:"\u7981\u7528CSP\u540d\u5355",en:"Disabled CSP List",zh_TW:"\u505c\u7528 CSP \u540d\u55ae",ja:"\u7121\u52b9\u5316CSP\u30ea\u30b9\u30c8",ko:"\ube44\ud65c\uc131\ud654\ub41c CSP \ubaa9\ub85d",tr:"Devre D\u0131\u015f\u0131 CSP Listesi"},disabled_csplist_helper:{zh:"3\u3001\u901a\u8fc7\u8c03\u6574CSP\u7b56\u7565\uff0c\u4f7f\u5f97\u67d0\u4e9b\u9875\u9762\u80fd\u591f\u6ce8\u5165JS/CSS/Media\uff0c\u8bf7\u8c28\u614e\u4f7f\u7528\uff0c\u9664\u975e\u60a8\u5df2\u77e5\u6653\u76f8\u5173\u98ce\u9669\u3002",en:"3. By adjusting the CSP policy, some pages can inject JS/CSS/Media. Please use it with caution unless you are aware of the related risks.",zh_TW:"3. \u900f\u904e\u8abf\u6574 CSP \u653f\u7b56\uff0c\u4f7f\u90e8\u5206\u9801\u9762\u53ef\u6ce8\u5165 JS/CSS/Media\u3002\u8acb\u8b39\u614e\u4f7f\u7528\uff0c\u9664\u975e\u60a8\u5df2\u77e5\u6089\u76f8\u95dc\u98a8\u96aa\u3002",ja:"3. CSP\u30dd\u30ea\u30b7\u30fc\u3092\u8abf\u6574\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u4e00\u90e8\u306e\u30da\u30fc\u30b8\u3067JS/CSS/Media\u306e\u6ce8\u5165\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u95a2\u9023\u3059\u308b\u30ea\u30b9\u30af\u3092\u627f\u77e5\u3057\u3066\u3044\u306a\u3044\u9650\u308a\u3001\u614e\u91cd\u306b\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"3. CSP \uc815\ucc45\uc744 \uc870\uc815\ud558\uc5ec \uc77c\ubd80 \ud398\uc774\uc9c0\uc5d0\uc11c JS/CSS/Media\ub97c \uc8fc\uc785\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uad00\ub828\ub41c \uc704\ud5d8\uc744 \uc778\uc9c0\ud558\uace0 \uc788\ub294 \uacbd\uc6b0\uac00 \uc544\ub2c8\ub77c\uba74 \uc8fc\uc758\ud574\uc11c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.",tr:"3. CSP politikas\u0131n\u0131 ayarlayarak, baz\u0131 sayfalara JS/CSS/Medya dosyalar\u0131 eklenebilir. \u0130lgili risklerin fark\u0131nda de\u011filseniz, l\xfctfen dikkatli kullan\u0131n."},skip_langs:{zh:"\u4e0d\u7ffb\u8bd1\u7684\u8bed\u8a00",en:"Disable Languages",zh_TW:"\u4e0d\u7ffb\u8b6f\u7684\u8a9e\u8a00",ja:"\u7ffb\u8a33\u3057\u306a\u3044\u8a00\u8a9e",ko:"\ubc88\uc5ed\ud558\uc9c0 \uc54a\uc744 \uc5b8\uc5b4",tr:"Dilleri Devre D\u0131\u015f\u0131 B\u0131rak"},skip_langs_helper:{zh:"\u6b64\u529f\u80fd\u4f9d\u8d56\u51c6\u786e\u7684\u8bed\u8a00\u68c0\u6d4b\uff0c\u5efa\u8bae\u542f\u7528\u8fdc\u7a0b\u8bed\u8a00\u68c0\u6d4b\u3002",en:"This feature relies on accurate language detection. It is recommended to enable remote language detection.",zh_TW:"\u6b64\u529f\u80fd\u4ef0\u8cf4\u6e96\u78ba\u7684\u8a9e\u8a00\u5075\u6e2c\uff0c\u5efa\u8b70\u555f\u7528\u9060\u7aef\u8a9e\u8a00\u5075\u6e2c\u3002",ja:"\u3053\u306e\u6a5f\u80fd\u306f\u6b63\u78ba\u306a\u8a00\u8a9e\u691c\u51fa\u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30ea\u30e2\u30fc\u30c8\u8a00\u8a9e\u691c\u51fa\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002",ko:"\uc774 \uae30\ub2a5\uc740 \uc815\ud655\ud55c \uc5b8\uc5b4 \uac10\uc9c0\uc5d0 \uc758\uc874\ud558\ubbc0\ub85c \uc6d0\uaca9 \uc5b8\uc5b4 \uac10\uc9c0\ub97c \ud65c\uc131\ud654\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.",tr:"Bu \xf6zellik, do\u011fru dil alg\u0131lamas\u0131na ba\u011fl\u0131d\u0131r. Uzaktan dil alg\u0131lamay\u0131 etkinle\u015ftirmeniz \xf6nerilir"},context_menus:{zh:"\u53f3\u952e\u83dc\u5355",en:"Context Menus",zh_TW:"\u53f3\u9375\u9078\u55ae",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"\u0130\xe7erik Men\xfcleri"},hide_context_menus:{zh:"\u9690\u85cf\u53f3\u952e\u83dc\u5355",en:"Hide Context Menus",zh_TW:"\u96b1\u85cf\u53f3\u9375\u9078\u55ae",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc\u3092\u96a0\u3059",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274 \uc228\uae30\uae30",tr:"\u0130\xe7erik Men\xfclerini Gizle"},simple_context_menus:{zh:"\u7b80\u5355\u53f3\u952e\u83dc\u5355",en:"Simple_context_menus Context Menus",zh_TW:"\u7c21\u6613\u53f3\u9375\u9078\u55ae",ja:"\u30b7\u30f3\u30d7\u30eb\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\uac04\ub2e8\ud55c \ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"Basit \u0130\xe7erik Men\xfcleri"},secondary_context_menus:{zh:"\u4e8c\u7ea7\u53f3\u952e\u83dc\u5355",en:"Secondary Context Menus",zh_TW:"\u6b21\u7d1a\u53f3\u9375\u9078\u55ae",ja:"\u30b5\u30d6\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\ubcf4\uc870 \ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"\u0130kincil \u0130\xe7erik Men\xfcleri"},mulkeys_help:{zh:"\u652f\u6301\u7528\u6362\u884c\u6216\u82f1\u6587\u9017\u53f7\u201c,\u201d\u5206\u9694\uff0c\u8f6e\u8be2\u8c03\u7528\u3002",en:'Supports polling calls separated by newlines or English commas ",".',zh_TW:"\u652f\u63f4\u4ee5\u63db\u884c\u6216\u82f1\u6587\u9017\u865f\u300c,\u300d\u5206\u9694\uff0c\u8f2a\u8a62\u547c\u53eb\u3002",ja:"\u6539\u884c\u307e\u305f\u306f\u82f1\u8a9e\u306e\u30b3\u30f3\u30de\u300c,\u300d\u3067\u533a\u5207\u3063\u3066\u30dd\u30fc\u30ea\u30f3\u30b0\u30b3\u30fc\u30eb\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002",ko:'\uc904\ubc14\uafc8 \ub610\ub294 \uc601\uc5b4 \uc27c\ud45c ","\ub85c \uad6c\ubd84\ub41c \ud3f4\ub9c1 \ud638\ucd9c\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.',tr:'Anket \xe7a\u011fr\u0131lar\u0131n\u0131n yeni sat\u0131rlarla veya \u0130ngilizce virg\xfcllerle ayr\u0131lmas\u0131n\u0131 destekler"'},translation_element_tag:{zh:"\u8bd1\u6587\u5143\u7d20\u6807\u7b7e",en:"Translation Element Tag",zh_TW:"\u8b6f\u6587\u5143\u7d20\u6a19\u7c64",ja:"\u7ffb\u8a33\u8981\u7d20\u30bf\u30b0",ko:"\ubc88\uc5ed \uc694\uc18c \ud0dc\uadf8",tr:"\xc7eviri \xd6\u011fesi Etiketi"},show_only_translations:{zh:"\u4ec5\u663e\u793a\u8bd1\u6587",en:"Show Only Translations",zh_TW:"\u50c5\u986f\u793a\u8b6f\u6587",ja:"\u7ffb\u8a33\u306e\u307f\u8868\u793a",ko:"\ubc88\uc5ed\ub9cc \ubcf4\uae30",tr:"Yaln\u0131zca \xc7evirileri G\xf6ster"},show_only_translations_help:{zh:"\u975e\u5b8c\u7f8e\u5b9e\u73b0\uff0c\u67d0\u4e9b\u9875\u9762\u53ef\u80fd\u6709\u6837\u5f0f\u7b49\u95ee\u9898\u3002",en:"It is not a perfect implementation and some pages may have style issues.",zh_TW:"\u6b64\u70ba\u975e\u5b8c\u7f8e\u5be6\u4f5c\uff0c\u90e8\u5206\u9801\u9762\u53ef\u80fd\u51fa\u73fe\u6a23\u5f0f\u7b49\u554f\u984c\u3002",ja:"\u5b8c\u5168\u306a\u5b9f\u88c5\u3067\u306f\u306a\u304f\u3001\u4e00\u90e8\u306e\u30da\u30fc\u30b8\u3067\u30b9\u30bf\u30a4\u30eb\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002",ko:"\uc644\ubcbd\ud55c \uad6c\ud604\uc774 \uc544\ub2c8\uba70 \uc77c\ubd80 \ud398\uc774\uc9c0\uc5d0\uc11c \uc2a4\ud0c0\uc77c \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"M\xfckemmel bir uygulama de\u011fildir ve baz\u0131 sayfalarda stil sorunlar\u0131 olabilir"},trans_order:{zh:"\u6587\u672c\u987a\u5e8f",en:"Translation Order",zh_TW:"\u6587\u5b57\u9806\u5e8f",ja:"\u30c6\u30ad\u30b9\u30c8\u9806\u5e8f",ko:"\ud14d\uc2a4\ud2b8 \uc21c\uc11c",tr:"\xc7eviri S\u0131ras\u0131"},wrap_original:{zh:"\u5305\u88f9\u539f\u6587",en:"Wrap Original Text",zh_TW:"\u5305\u88f9\u539f\u6587",ja:"\u539f\u6587\u3092\u30e9\u30c3\u30d7",ko:"\uc6d0\ubb38 \uac10\uc2f8\uae30",tr:"Orijinal Metni Sar"},original_first:{zh:"\u539f\u6587\u5728\u4e0a\u65b9",en:"Original First",zh_TW:"\u539f\u6587\u5728\u4e0a\u65b9",ja:"\u539f\u6587\u304c\u6700\u521d",ko:"\uc6d0\ubb38\uc774 \uba3c\uc800",tr:"Orijinal \u0130lk"},translation_first:{zh:"\u8bd1\u6587\u5728\u4e0a\u65b9",en:"Translation First",zh_TW:"\u8b6f\u6587\u5728\u4e0a\u65b9",ja:"\u7ffb\u8a33\u304c\u6700\u521d",ko:"\ubc88\uc5ed\uc774 \uba3c\uc800",tr:"\xc7eviri \u0130lk"},transonly_revert:{zh:"\u60ac\u6d6e\u663e\u793a\u539f\u6587",en:"Hover to Show Original",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u6642\u986f\u793a\u539f\u6587",ja:"\u30db\u30d0\u30fc\u3067\u539f\u6587\u3092\u8868\u793a",ko:"\ud638\ubc84 \uc2dc \uc6d0\ubb38 \ud45c\uc2dc",tr:"Orijinali G\xf6stermek \u0130\xe7in \xdczerine Gelin"},transonly_revert_delay:{zh:"\u60ac\u6d6e\u5ef6\u8fdf(\u79d2)",en:"Hover Delay (seconds)",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u5ef6\u9072(\u79d2)",ja:"\u30db\u30d0\u30fc\u9045\u5ef6(\u79d2)",ko:"\ud638\ubc84 \uc9c0\uc5f0(\ucd08)",tr:"Vurgulu Gecikme (Saniye)"},translate_page_title:{zh:"\u662f\u5426\u7ffb\u8bd1\u9875\u9762\u6807\u9898",en:"Translate Page Title",zh_TW:"\u662f\u5426\u7ffb\u8b6f\u9801\u9762\u6a19\u984c",ja:"\u30da\u30fc\u30b8\u30bf\u30a4\u30c8\u30eb\u3092\u7ffb\u8a33\u3059\u308b",ko:"\ud398\uc774\uc9c0 \uc81c\ubaa9 \ubc88\uc5ed",tr:"Sayfa Ba\u015fl\u0131\u011f\u0131n\u0131 \xc7evir"},more:{zh:"\u66f4\u591a",en:"More",zh_TW:"\u66f4\u591a",ja:"\u3082\u3063\u3068\u898b\u308b",ko:"\ub354\ubcf4\uae30",tr:"Daha Fazla"},less:{zh:"\u66f4\u5c11",en:"Less",zh_TW:"\u66f4\u5c11",ja:"\u5c11\u306a\u304f",ko:"\uc904\uc774\uae30",tr:"Daha Az"},fixer_selector:{zh:"\u7f51\u9875\u4fee\u590d\u9009\u62e9\u5668",en:"Fixer Selector",zh_TW:"\u7db2\u9801\u4fee\u5fa9\u9078\u64c7\u5668",ja:"Web\u4fee\u6b63\u30bb\u30ec\u30af\u30bf",ko:"\uc6f9\ud398\uc774\uc9c0 \uc218\uc815 \uc120\ud0dd\uc790",tr:"Onar\u0131c\u0131 Se\xe7ici"},trigger_mode:{zh:"\u89e6\u53d1\u65b9\u5f0f",en:"Trigger Mode",zh_TW:"\u89f8\u767c\u65b9\u5f0f",ja:"\u30c8\u30ea\u30ac\u30fc\u30e2\u30fc\u30c9",ko:"\ud2b8\ub9ac\uac70 \ubaa8\ub4dc",tr:"Tetikleme Modu"},trigger_click:{zh:"\u70b9\u51fb\u89e6\u53d1",en:"Click Trigger",zh_TW:"\u9ede\u9078\u89f8\u767c",ja:"\u30af\u30ea\u30c3\u30af\u30c8\u30ea\u30ac\u30fc",ko:"\ud074\ub9ad \ud2b8\ub9ac\uac70",tr:"T\u0131klama Tetikleyicisi"},trigger_hover:{zh:"\u9f20\u6807\u60ac\u505c\u89e6\u53d1",en:"Hover Trigger",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u89f8\u767c",ja:"\u30db\u30d0\u30fc\u30c8\u30ea\u30ac\u30fc",ko:"\ud638\ubc84 \ud2b8\ub9ac\uac70",tr:"Fareyle \xdczerine Gelme Tetikleyicisi"},trigger_select:{zh:"\u9009\u4e2d\u89e6\u53d1",en:"Select Trigger",zh_TW:"\u9078\u53d6\u89f8\u767c",ja:"\u9078\u629e\u30c8\u30ea\u30ac\u30fc",ko:"\uc120\ud0dd \ud2b8\ub9ac\uac70",tr:"Tetikleyiciyi Se\xe7in"},trigger_dblclick:{zh:"\u53cc\u51fb\u89e6\u53d1",en:"Double-click Trigger",zh_TW:"\u96d9\u64ca\u89f8\u767c",ja:"\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u30c8\u30ea\u30ac\u30fc",ko:"\ub354\ube14\ud074\ub9ad \ud2b8\ub9ac\uac70",tr:"\xc7ift T\u0131klama Tetikleyicisi"},tranbtn_position_mode:{zh:"\u5f39\u51fa\u6309\u94ae\u4f4d\u7f6e",en:"Popup Button Position",zh_TW:"\u5f48\u51fa\u6309\u9215\u4f4d\u7f6e",ja:"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30dc\u30bf\u30f3\u4f4d\u7f6e",ko:"\ud31d\uc5c5 \ubc84\ud2bc \uc704\uce58",tr:"A\xe7\u0131l\u0131r D\xfc\u011fme Konumu"},tranbtn_position_fixed:{zh:"\u56fa\u5b9a\u4f4d\u7f6e",en:"Fixed Position",zh_TW:"\u56fa\u5b9a\u4f4d\u7f6e",ja:"\u56fa\u5b9a\u4f4d\u7f6e",ko:"\uace0\uc815 \uc704\uce58",tr:"Sabit Pozisyon"},tranbtn_position_mouse:{zh:"\u8ddf\u968f\u9f20\u6807",en:"Follow Mouse",zh_TW:"\u8ddf\u96a8\u6ed1\u9f20",ja:"\u30de\u30a6\u30b9\u306b\u8ffd\u5f93",ko:"\ub9c8\uc6b0\uc2a4 \ub530\ub77c\uac00\uae30",tr:"Fareyi Takip Et"},extend_styles:{zh:"\u9644\u52a0\u6837\u5f0f",en:"Extend Styles",zh_TW:"\u9644\u52a0\u6a23\u5f0f",ja:"\u62e1\u5f35\u30b9\u30bf\u30a4\u30eb",ko:"\ud655\uc7a5 \uc2a4\ud0c0\uc77c",tr:"Stilleri Geni\u015flet"},custom_option:{zh:"\u81ea\u5b9a\u4e49\u9009\u9879",en:"Custom Option",zh_TW:"\u81ea\u8a02\u9078\u9805",ja:"\u30ab\u30b9\u30bf\u30e0\u30aa\u30d7\u30b7\u30e7\u30f3",ko:"\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc635\uc158",tr:"\xd6zel Se\xe7enek"},translate_selected_text:{zh:"\u7ffb\u8bd1\u9009\u4e2d\u6587\u5b57",en:"Translate Selected Text",zh_TW:"\u7ffb\u8b6f\u9078\u53d6\u6587\u5b57",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8 \ubc88\uc5ed",tr:"Se\xe7ilen Metni \xc7evir"},toggle_style:{zh:"\u5207\u6362\u6837\u5f0f",en:"Toggle Style",zh_TW:"\u5207\u63db\u6a23\u5f0f",ja:"\u30b9\u30bf\u30a4\u30eb\u3092\u5207\u308a\u66ff\u3048",ko:"\uc2a4\ud0c0\uc77c \uc804\ud658",tr:"Stili De\u011fi\u015ftir"},open_menu:{zh:"\u6253\u5f00\u5f39\u7a97\u83dc\u5355",en:"Open Popup Menu",zh_TW:"\u958b\u555f\u5f48\u51fa\u8996\u7a97\u9078\u55ae",ja:"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30e1\u30cb\u30e5\u30fc\u3092\u958b\u304f",ko:"\ud31d\uc5c5 \uba54\ub274 \uc5f4\uae30",tr:"A\xe7\u0131l\u0131r Men\xfcy\xfc A\xe7"},open_setting:{zh:"\u6253\u5f00\u8bbe\u7f6e",en:"Open Setting",zh_TW:"\u958b\u555f\u8a2d\u5b9a",ja:"\u8a2d\u5b9a\u3092\u958b\u304f",ko:"\uc124\uc815 \uc5f4\uae30",tr:"Ayar\u0131 A\xe7"},follow_selection:{zh:"\u7ffb\u8bd1\u6846\u8ddf\u968f\u9009\u4e2d\u6587\u672c",en:"Transbox Follow Selection",zh_TW:"\u7ffb\u8b6f\u6846\u8ddf\u96a8\u9078\u53d6\u6587\u5b57",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u3092\u9078\u629e\u7bc4\u56f2\u306b\u8ffd\u5f93",ko:"\ubc88\uc5ed \uc0c1\uc790\uac00 \uc120\ud0dd \ud56d\ubaa9 \ub530\ub77c\uac00\uae30",tr:"\xc7eviri Kutusu Takip Se\xe7imi"},tranbox_auto_height:{zh:"\u7ffb\u8bd1\u6846\u81ea\u9002\u5e94\u9ad8\u5ea6",en:"Translation box adaptive height",zh_TW:"\u7ffb\u8b6f\u6846\u81ea\u9069\u61c9\u9ad8\u5ea6",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u306e\u9ad8\u3055\u81ea\u52d5\u8abf\u6574",ko:"\ubc88\uc5ed \uc0c1\uc790 \ub192\uc774 \uc790\ub3d9 \uc870\uc808",tr:"\xc7eviri Kutusu Uyarlanabilir Y\xfckseklik"},tranbox_interact_mode:{zh:"\u7ffb\u8bd1\u6846\u5185\u4ea4\u4e92\u6a21\u5f0f",en:"Transbox Interact Mode",zh_TW:"\u7ffb\u8b6f\u6846\u5167\u4e92\u52d5\u6a21\u5f0f",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u5185\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u30e2\u30fc\u30c9",ko:"\ubc88\uc5ed \uc0c1\uc790 \ub0b4 \uc778\ud130\ub799\uc158 \ubaa8\ub4dc",tr:"\xc7eviri Kutusu Etkile\u015fim Modu"},tranbox_interact_click:{zh:"\u5355\u51fb\u9009\u4e2d\u6587\u672c\u89e6\u53d1\u7ffb\u8bd1",en:"Click selected text to translate",zh_TW:"\u55ae\u64ca\u9078\u53d6\u6587\u5b57\u89f8\u767c\u7ffb\u8b6f",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8\ub97c \ud074\ub9ad\ud558\uc5ec \ubc88\uc5ed",tr:"\xc7evirmek \u0130\xe7in Se\xe7ilen Metni T\u0131klay\u0131n"},tranbox_interact_dblclick:{zh:"\u53cc\u51fb\u9009\u4e2d\u6587\u672c\u89e6\u53d1\u7ffb\u8bd1",en:"Double-click selected text to translate",zh_TW:"\u96d9\u64ca\u9078\u53d6\u6587\u5b57\u89f8\u767c\u7ffb\u8b6f",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8\ub97c \ub354\ube14\ud074\ub9ad\ud558\uc5ec \ubc88\uc5ed",tr:"\xc7evirmek \u0130\xe7in Se\xe7ilen Metni \xc7ift T\u0131klay\u0131n"},selection_skip_langs:{zh:"\u5ffd\u7565\u7684\u8bed\u8a00",en:"Ignore Languages",zh_TW:"\u5ffd\u7565\u7684\u8a9e\u8a00",ja:"\u7121\u8996\u3059\u308b\u8a00\u8a9e",ko:"\ubb34\uc2dc\ud560 \uc5b8\uc5b4",tr:"Dilleri Yoksay"},selection_skip_langs_helper:{zh:"\u5217\u8868\u4e2d\u7684\u8bed\u8a00\u4e0d\u5f39\u7a97\uff08\u8bbe\u5b9a\u540e\uff0c\u7b2c\u4e8c\u76ee\u6807\u8bed\u8a00\u4e92\u8bd1\u529f\u80fd\u5c06\u81ea\u52a8\u7981\u7528\uff09",en:"Don't show popup for languages in this list (when enabled, will automatically disable bidirectional translation for the second target language)",zh_TW:"\u5217\u8868\u4e2d\u7684\u8a9e\u8a00\u4e0d\u5f48\u7a97\uff08\u8a2d\u5b9a\u5f8c\uff0c\u7b2c\u4e8c\u76ee\u6a19\u8a9e\u8a00\u7684\u4e92\u8b6f\u529f\u80fd\u5c07\u81ea\u52d5\u7981\u7528\uff09",ja:"\u30ea\u30b9\u30c8\u5185\u306e\u8a00\u8a9e\u306f\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u8868\u793a\u3057\u307e\u305b\u3093\uff08\u6709\u52b9\u306b\u3059\u308b\u3068\u3001\u7b2c\u4e8c\u306e\u5bfe\u8c61\u8a00\u8a9e\u306e\u53cc\u65b9\u5411\u7ffb\u8a33\u6a5f\u80fd\u304c\u81ea\u52d5\u7684\u306b\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\uff09",ko:"\ubaa9\ub85d\uc5d0 \uc788\ub294 \uc5b8\uc5b4\ub294 \ud31d\uc5c5\uc744 \ud45c\uc2dc\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 (\ud65c\uc131\ud654 \uc2dc, \ub450 \ubc88\uc9f8 \ub300\uc0c1 \uc5b8\uc5b4\uc758 \uc591\ubc29\ud5a5 \ubc88\uc5ed \uae30\ub2a5\uc774 \uc790\ub3d9\uc73c\ub85c \ube44\ud65c\uc131\ud654\ub429\ub2c8\ub2e4)",tr:"Bu listedeki diller i\xe7in a\xe7\u0131l\u0131r pencere g\xf6sterilmez (etkinle\u015ftirildi\u011finde, ikinci hedef dil i\xe7in \xe7ift y\xf6nl\xfc \xe7eviri i\u015flevi otomatik olarak devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131r)"},translate_start_hook:{zh:"\u7ffb\u8bd1\u5f00\u59cb\u94a9\u5b50\u51fd\u6570",en:"Translate Start Hook",zh_TW:"\u7ffb\u8b6f\u958b\u59cb Hook",ja:"\u7ffb\u8a33\u958b\u59cb\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc2dc\uc791 \ud6c4\ud06c",tr:"\xc7eviri Ba\u015flad\u0131\u011f\u0131nda Tetiklenen \u0130\u015flev"},translate_start_hook_helper:{zh:"\u7ffb\u8bd1\u524d\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",en:"Run before translation, input parameters are: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",zh_TW:"\u7ffb\u8b6f\u524d\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",ja:"\u7ffb\u8a33\u524d\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",ko:"\ubc88\uc5ed \uc804 \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",tr:"\xc7eviriden \xf6nce \xe7al\u0131\u015ft\u0131r\u0131l\u0131r, giri\u015f parametreleri \u015funlard\u0131r: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}"},translate_end_hook:{zh:"\u7ffb\u8bd1\u5b8c\u6210\u94a9\u5b50\u51fd\u6570",en:"Translate End Hook",zh_TW:"\u7ffb\u8b6f\u5b8c\u6210 Hook",ja:"\u7ffb\u8a33\u5b8c\u4e86\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc644\ub8cc \ud6c4\ud06c",tr:"\xc7eviri Bitti\u011finde Tetiklenen \u0130\u015flev"},translate_end_hook_helper:{zh:"\u7ffb\u8bd1\u5b8c\u6210\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a ({hostNode, parentNode, nodes, wrapperNode, innerNode})",en:"Run when translation is complete, input parameters are: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",zh_TW:"\u7ffb\u8b6f\u5b8c\u6210\u6642\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a ({hostNode, parentNode, nodes, wrapperNode, innerNode})",ja:"\u7ffb\u8a33\u5b8c\u4e86\u6642\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",ko:"\ubc88\uc5ed \uc644\ub8cc \uc2dc \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",tr:"\xc7eviri tamamland\u0131\u011f\u0131nda, giri\u015f parametreleri \u015funlard\u0131r: ({hostNode, parentNode, nodes, wrapperNode, innerNode})"},translate_remove_hook:{zh:"\u7ffb\u8bd1\u79fb\u9664\u94a9\u5b50\u51fd\u6570",en:"Translate Removed Hook",zh_TW:"\u7ffb\u8b6f\u79fb\u9664 Hook",ja:"\u7ffb\u8a33\u524a\u9664\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc81c\uac70 \ud6c4\ud06c",tr:"\xc7eviri Kald\u0131r\u0131ld\u0131\u011f\u0131nda Tetiklenen \u0130\u015flev"},translate_remove_hook_helper:{zh:"\u7ffb\u8bd1\u79fb\u9664\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a \u7ffb\u8bd1\u8282\u70b9\u3002",en:"Run when translation is removed, the input parameters are: translation node.",zh_TW:"\u79fb\u9664\u7ffb\u8b6f\u6642\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a\u7ffb\u8b6f\u7bc0\u9ede\u3002",ja:"\u7ffb\u8a33\u524a\u9664\u6642\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: \u7ffb\u8a33\u30ce\u30fc\u30c9\u3002",ko:"\ubc88\uc5ed \uc81c\uac70 \uc2dc \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: \ubc88\uc5ed \ub178\ub4dc.",tr:"\xc7eviri kald\u0131r\u0131ld\u0131\u011f\u0131nda \xe7al\u0131\u015ft\u0131r\u0131l\u0131r, giri\u015f parametreleri \u015funlard\u0131r: \xe7eviri d\xfc\u011f\xfcm\xfc."},english_dict:{zh:"\u82f1\u6587\u8bcd\u5178",en:"English Dictionary",zh_TW:"\u82f1\u6587\u5b57\u5178",ja:"\u82f1\u8a9e\u8f9e\u66f8",ko:"\uc601\uc5b4 \uc0ac\uc804",tr:"\u0130ngilizce S\xf6zl\xfck"},default_dict:{zh:"\u9ed8\u8ba4\u8bcd\u5178",en:"Default Dictionary",zh_TW:"\u9810\u8a2d\u8a5e\u5178",ja:"\u65e2\u5b9a\u306e\u8f9e\u66f8",ko:"\uae30\ubcf8 \uc0ac\uc804",tr:"Varsay\u0131lan S\xf6zl\xfck"},ai_dict:{zh:"AI \u8bcd\u5178",en:"AI Dictionary",zh_TW:"AI \u8a5e\u5178",ja:"AI \u8f9e\u66f8",ko:"AI \uc0ac\uc804",tr:"AI S\xf6zl\xfc\u011f\xfc"},ai_dict_api:{zh:"AI \u8bcd\u5178\u63a5\u53e3",en:"AI Dictionary API",zh_TW:"AI \u8a5e\u5178\u4ecb\u9762",ja:"AI \u8f9e\u66f8 API",ko:"AI \uc0ac\uc804 API",tr:"AI S\xf6zl\xfck API'si"},ai_dict_prompt:{zh:"AI \u8bcd\u5178\u63d0\u793a\u8bcd",en:"AI Dictionary Prompt",zh_TW:"AI \u8a5e\u5178\u63d0\u793a\u8a5e",ja:"AI \u8f9e\u66f8\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"AI \uc0ac\uc804 \ud504\ub86c\ud504\ud2b8",tr:"AI S\xf6zl\xfck \u0130stemi"},english_suggest:{zh:"\u82f1\u6587\u5efa\u8bae",en:"English Suggest",zh_TW:"\u82f1\u6587\u5efa\u8b70",ja:"\u82f1\u8a9e\u30b5\u30b8\u30a7\u30b9\u30c8",ko:"\uc601\uc5b4 \uc81c\uc548",tr:"\u0130ngilizce \xd6neri"},api_name:{zh:"\u63a5\u53e3\u540d\u79f0",en:"API Name",zh_TW:"\u4ecb\u9762\u540d\u7a31",ja:"API\u540d",ko:"API \uc774\ub984",tr:"API Ad\u0131"},model_list_url:{zh:"\u6a21\u578b\u5217\u8868URL",en:"Model List URL",zh_TW:"\u6a21\u578b\u5217\u8868URL",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7URL",ko:"\ubaa8\ub378 \ubaa9\ub85d URL",tr:"Model Listesi URL'si"},model_list_loading:{zh:"\u6b63\u5728\u52a0\u8f7d\u6a21\u578b\u5217\u8868...",en:"Loading model list...",zh_TW:"\u6b63\u5728\u8f09\u5165\u6a21\u578b\u5217\u8868...",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7\u3092\u8aad\u307f\u8fbc\u307f\u4e2d...",ko:"\ubaa8\ub378 \ubaa9\ub85d\uc744 \ubd88\ub7ec\uc624\ub294 \uc911...",tr:"Model Listesi Y\xfckleniyor..."},model_list_fetch_failed:{zh:"\u6a21\u578b\u5217\u8868\u52a0\u8f7d\u5931\u8d25",en:"Failed to load model list",zh_TW:"\u6a21\u578b\u5217\u8868\u8f09\u5165\u5931\u6557",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f",ko:"\ubaa8\ub378 \ubaa9\ub85d\uc744 \ubd88\ub7ec\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4",tr:"Model Listesi Y\xfcklenemedi"},model_list_empty:{zh:"\u672a\u83b7\u53d6\u5230\u6a21\u578b\u5217\u8868\uff0c\u53ef\u624b\u52a8\u586b\u5199",en:"No models found. You can enter one manually.",zh_TW:"\u672a\u53d6\u5f97\u6a21\u578b\u5217\u8868\uff0c\u53ef\u624b\u52d5\u586b\u5beb",ja:"\u30e2\u30c7\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u624b\u52d5\u5165\u529b\u3067\u304d\u307e\u3059\u3002",ko:"\ubaa8\ub378\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc9c1\uc811 \uc785\ub825\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"Hi\xe7bir model bulunamad\u0131. Manuel olarak bir tane girebilirsiniz."},sort_order:{zh:"\u6392\u5e8f\u6743\u91cd",en:"Sort Order",zh_TW:"\u6392\u5e8f\u6b0a\u91cd",ja:"\u30bd\u30fc\u30c8\u9806\u5e8f",ko:"\uc815\ub82c \uc21c\uc11c",tr:"S\u0131ralama D\xfczeni"},sort_order_help:{zh:"\u6570\u503c\u8d8a\u5c0f\u8d8a\u9760\u524d",en:"Smaller values appear first",zh_TW:"\u6578\u503c\u8d8a\u5c0f\u8d8a\u9760\u524d",ja:"\u5c0f\u3055\u3044\u5024\u304c\u5148\u306b\u8868\u793a\u3055\u308c\u307e\u3059",ko:"\uc791\uc740 \uac12\uc774 \uba3c\uc800 \ud45c\uc2dc\ub429\ub2c8\ub2e4",tr:"\xd6nce K\xfc\xe7\xfck De\u011ferler G\xf6r\xfcn\xfcr"},is_disabled:{zh:"\u662f\u5426\u7981\u7528",en:"Is Disabled",zh_TW:"\u662f\u5426\u505c\u7528",ja:"\u7121\u52b9\u306b\u3059\u308b",ko:"\ube44\ud65c\uc131\ud654 \uc5ec\ubd80",tr:"Devre d\u0131\u015f\u0131 B\u0131rak\u0131ld\u0131"},is_pinned:{zh:"\u662f\u5426\u7f6e\u9876",en:"Is Pinned",zh_TW:"\u662f\u5426\u7f6e\u9802",ja:"\u30d4\u30f3\u7559\u3081",ko:"\uace0\uc815 \uc5ec\ubd80",tr:"Sabitlendi"},sort_alphabetically:{zh:"\u6309\u5b57\u6bcd\u6392\u5e8f",en:"Sort Alphabetically",zh_TW:"\u6309\u5b57\u6bcd\u6392\u5e8f",ja:"\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u9806",ko:"\uc54c\ud30c\ubcb3\uc21c \uc815\ub82c",tr:"Alfabetik Olarak S\u0131rala"},translate_selected:{zh:"\u662f\u5426\u542f\u7528\u5212\u8bcd\u7ffb\u8bd1",en:"If translate selected",zh_TW:"\u662f\u5426\u555f\u7528\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7bc4\u56f2\u306e\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc120\ud0dd \ubc88\uc5ed \uc0ac\uc6a9 \uc5ec\ubd80",tr:"\xc7eviri Se\xe7ene\u011fi Se\xe7ilirse"},use_batch_fetch:{zh:"\u662f\u5426\u805a\u5408\u53d1\u9001\u7ffb\u8bd1\u8bf7\u6c42",en:"Whether to aggregate and send translation requests",zh_TW:"\u662f\u5426\u5f59\u6574\u767c\u9001\u7ffb\u8b6f\u8acb\u6c42",ja:"\u7ffb\u8a33\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u307e\u3068\u3081\u3066\u9001\u4fe1",ko:"\ubc88\uc5ed \uc694\uccad \uc77c\uad04 \uc804\uc1a1 \uc5ec\ubd80",tr:"\xc7eviri isteklerini bir araya getirip g\xf6ndermeye karar verilip verilmeyece\u011fi"},batch_interval:{zh:"\u805a\u5408\u8bf7\u6c42\u7b49\u5f85\u65f6\u95f4(10-10000)",en:"Aggregation request waiting time (10-10000)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u7b49\u5f85\u6642\u9593(10-10000)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5f85\u6a5f\u6642\u9593(10-10000)",ko:"\uc77c\uad04 \uc694\uccad \ub300\uae30 \uc2dc\uac04(10-10000)",tr:"Toplama \u0130ste\u011fi Bekleme S\xfcresi (10-10000)"},batch_size:{zh:"\u805a\u5408\u8bf7\u6c42\u6700\u5927\u6bb5\u843d\u6570(1-100)",en:"Maximum number of paragraphs in an aggregation request (1-100)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u6700\u5927\u6bb5\u843d\u6578(1-100)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6700\u5927\u6bb5\u843d\u6570(1-100)",ko:"\uc77c\uad04 \uc694\uccad \ucd5c\ub300 \ub2e8\ub77d \uc218(1-100)",tr:"Toplama \u0130ste\u011findeki Maksimum Paragraf Say\u0131s\u0131 (1-100)"},batch_length:{zh:"\u805a\u5408\u8bf7\u6c42\u6700\u5927\u6587\u672c\u957f\u5ea6(1000-100000)",en:"Maximum text length for aggregation requests (1000-100000)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u6700\u5927\u6587\u5b57\u9577\u5ea6(1000-100000)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6700\u5927\u30c6\u30ad\u30b9\u30c8\u9577(1000-100000)",ko:"\uc77c\uad04 \uc694\uccad \ucd5c\ub300 \ud14d\uc2a4\ud2b8 \uae38\uc774(1000-100000)",tr:"Toplama Istekleri \u0130\xe7in Maksimum Metin Uzunlu\u011fu (1000-100000)"},batch_concurrency:{zh:"\u805a\u5408\u6279\u6b21\u5e76\u53d1\u6570(1-100)",en:"Concurrent aggregation batches (1-100)",zh_TW:"\u5f59\u6574\u6279\u6b21\u4e26\u884c\u6578(1-100)",ja:"\u540c\u6642\u5b9f\u884c\u3059\u308b\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u6570(1-100)",ko:"\ub3d9\uc2dc \uc77c\uad04 \uc694\uccad \uc218(1-100)",tr:"E\u015fzamanl\u0131 Toplama Grubu Say\u0131s\u0131 (1-100)"},batch_concurrency_context_hint:{zh:"\u4e0a\u4e0b\u6587\u4f1a\u8bdd\u8981\u6c42\u6279\u6b21\u6309\u987a\u5e8f\u6267\u884c\uff0c\u56e0\u6b64\u5e76\u53d1\u6570\u56fa\u5b9a\u4e3a 1",en:"Context sessions require ordered batches, so concurrency is fixed at 1",zh_TW:"\u4e0a\u4e0b\u6587\u6703\u8a71\u8981\u6c42\u6279\u6b21\u4f9d\u5e8f\u57f7\u884c\uff0c\u56e0\u6b64\u4e26\u884c\u6578\u56fa\u5b9a\u70ba 1",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u5229\u7528\u6642\u306f\u9806\u5e8f\u3092\u4fdd\u3064\u305f\u3081\u3001\u540c\u6642\u5b9f\u884c\u6570\u306f1\u306b\u56fa\u5b9a\u3055\u308c\u307e\u3059",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uc138\uc158\uc740 \uc21c\ucc28 \uc2e4\ud589\uc774 \ud544\uc694\ud558\ubbc0\ub85c \ub3d9\uc2dc \uc2e4\ud589 \uc218\ub294 1\ub85c \uace0\uc815\ub429\ub2c8\ub2e4",tr:"Ba\u011flam oturumlar\u0131 s\u0131ral\u0131 gruplar gerektirdi\u011finden e\u015fzamanl\u0131l\u0131k 1 olarak sabitlenir"},use_stream:{zh:"\u662f\u5426\u542f\u7528\u6d41\u5f0f\u4f20\u8f93",en:"Whether to enable streaming",zh_TW:"\u662f\u5426\u555f\u7528\u4e32\u6d41\u50b3\u8f38",ja:"\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc2a4\ud2b8\ub9ac\ubc0d \ud65c\uc131\ud654 \uc5ec\ubd80",tr:"Ak\u0131\u015f\u0131n Etkinle\u015ftirilip Etkinle\u015ftirilmeyece\u011fi"},stream_render_mode:{zh:"\u6d41\u5f0f\u6e32\u67d3\u6a21\u5f0f",en:"Stream render mode",zh_TW:"\u4e32\u6d41\u6e32\u67d3\u6a21\u5f0f",ja:"\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u30e2\u30fc\u30c9",ko:"\uc2a4\ud2b8\ub9ac\ubc0d \ub80c\ub354\ub9c1 \ubaa8\ub4dc",tr:"Ak\u0131\u015f Olu\u015fturma Modu"},stream_render_realtime:{zh:"\u5b9e\u65f6\u6e32\u67d3",en:"Realtime render",zh_TW:"\u5373\u6642\u6e32\u67d3",ja:"\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0",ko:"\uc2e4\uc2dc\uac04 \ub80c\ub354\ub9c1",tr:"Ger\xe7ek Zamanl\u0131 Olu\u015fturma"},stream_render_segment:{zh:"\u7247\u6bb5\u6e32\u67d3",en:"Segment render",zh_TW:"\u7247\u6bb5\u6e32\u67d3",ja:"\u30bb\u30b0\u30e1\u30f3\u30c8\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0",ko:"\uc138\uadf8\uba3c\ud2b8 \ub80c\ub354\ub9c1",tr:"Segment Olu\u015fturma"},use_context:{zh:"\u662f\u5426\u542f\u7528\u667a\u80fd\u4e0a\u4e0b\u6587",en:"Whether to enable AI context",zh_TW:"\u662f\u5426\u555f\u7528\u667a\u6167\u4e0a\u4e0b\u6587",ja:"AI\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"AI \ucee8\ud14d\uc2a4\ud2b8 \ud65c\uc131\ud654 \uc5ec\ubd80",tr:"AI \u0130\xe7eriklerinin Etkinle\u015ftirilip Etkinle\u015ftirilmeyece\u011fi"},context_size:{zh:"\u4e0a\u4e0b\u6587\u4f1a\u8bdd\u6570\u91cf(1-20)",en:"Number of context sessions(1-20)",zh_TW:"\u4e0a\u4e0b\u6587\u6703\u8a71\u6578\u91cf(1-20)",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30bb\u30c3\u30b7\u30e7\u30f3\u6570(1-20)",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uc138\uc158 \uc218(1-20)",tr:"\u0130\xe7erik Oturumlar\u0131n\u0131n Say\u0131s\u0131 (1-20)"},auto_scan_page:{zh:"\u81ea\u52a8\u626b\u63cf\u9875\u9762",en:"Auto scan page",zh_TW:"\u81ea\u52d5\u6383\u63cf\u9801\u9762",ja:"\u30da\u30fc\u30b8\u3092\u81ea\u52d5\u30b9\u30ad\u30e3\u30f3",ko:"\ud398\uc774\uc9c0 \uc790\ub3d9 \uc2a4\uce94",tr:"Sayfay\u0131 Otomatik Tara"},has_rich_text:{zh:"\u542f\u7528\u5bcc\u6587\u672c\u7ffb\u8bd1",en:"Enable rich text translation",zh_TW:"\u555f\u7528\u5bcc\u6587\u5b57\u7ffb\u8b6f",ja:"\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ub9ac\uce58 \ud14d\uc2a4\ud2b8 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Zengin Metin \xc7evirisini Etkinle\u015ftir"},has_shadowroot:{zh:"\u626b\u63cfShadowroot",en:"Scan Shadowroot",zh_TW:"\u6383\u63cfShadowroot",ja:"Shadowroot\u3092\u30b9\u30ad\u30e3\u30f3",ko:"Shadowroot \uc2a4\uce94",tr:"Shadowroot'u Tara"},mousehover_translate:{zh:"\u9f20\u6807\u60ac\u505c\u7ffb\u8bd1",en:"Mouseover Translation",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u7ffb\u8b6f",ja:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u7ffb\u8a33",ko:"\ub9c8\uc6b0\uc2a4\uc624\ubc84 \ubc88\uc5ed",tr:"Fareyle \xdczerine Gelme \xc7evirisi"},use_mousehover_translation:{zh:"\u542f\u7528\u9f20\u6807\u60ac\u505c\u7ffb\u8bd1",en:"Enable mouseover translation",zh_TW:"\u555f\u7528\u6ed1\u9f20\u61f8\u505c\u7ffb\u8b6f",ja:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ub9c8\uc6b0\uc2a4\uc624\ubc84 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Fareyle \xdczerine Gelindi\u011finde \xc7eviriyi Etkinle\u015ftir"},selected_translation_alert:{zh:"\u5212\u8bcd\u7ffb\u8bd1\u7684\u5f00\u542f\u548c\u5173\u95ed\u8bf7\u5230\u201c\u89c4\u5219\u8bbe\u7f6e\u201d\u91cc\u9762\u8bbe\u7f6e\u3002",en:'To turn selected translation on or off, please go to "Rule Settings".',zh_TW:"\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f\u7684\u958b\u555f\u548c\u95dc\u9589\u8acb\u5230\u300c\u898f\u5247\u8a2d\u5b9a\u300d\u88e1\u9762\u8a2d\u5b9a\u3002",ja:"\u9078\u629e\u7ffb\u8a33\u306e\u30aa\u30f3/\u30aa\u30d5\u306f\u300c\u30eb\u30fc\u30eb\u8a2d\u5b9a\u300d\u3067\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:'\uc120\ud0dd \ubc88\uc5ed \ud65c\uc131\ud654/\ube44\ud65c\uc131\ud654\ub294 "\uaddc\uce59 \uc124\uc815"\uc5d0\uc11c \ud558\uc2ed\uc2dc\uc624.',tr:'Se\xe7ilen \xe7eviri \xf6zelli\u011fini a\xe7mak veya kapatmak i\xe7in l\xfctfen "Kural Ayarlar\u0131"na gidin.'},mousehover_key_help:{zh:"\u5f53\u5feb\u6377\u952e\u7f6e\u7a7a\u65f6\u8868\u793a\u9f20\u6807\u61f8\u505c\u76f4\u63a5\u7ffb\u8bd1",en:"When the shortcut key is empty, it means that the mouse hovers to translate directly",zh_TW:"\u5feb\u901f\u9375\u7559\u7a7a\u6642\u8868\u793a\u6ed1\u9f20\u61f8\u505c\u5373\u76f4\u63a5\u7ffb\u8b6f",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc\u304c\u7a7a\u306e\u5834\u5408\u3001\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u3067\u76f4\u63a5\u7ffb\u8a33\u3057\u307e\u3059",ko:"\ub2e8\ucd95\ud0a4\uac00 \ube44\uc5b4 \uc788\uc73c\uba74 \ub9c8\uc6b0\uc2a4\uc624\ubc84 \uc2dc \ubc14\ub85c \ubc88\uc5ed\ud569\ub2c8\ub2e4",tr:"K\u0131sayol tu\u015fu bo\u015f oldu\u011funda, fare imlecinin \xfczerine gelerek do\u011frudan \xe7eviri yapaca\u011f\u0131 anlam\u0131na gelir"},mousehover_display_mode:{zh:"\u5c55\u793a\u6a21\u5f0f",en:"Display mode",zh_TW:"\u986f\u793a\u6a21\u5f0f",ja:"\u8868\u793a\u30e2\u30fc\u30c9",ko:"\ud45c\uc2dc \ubaa8\ub4dc",tr:"Ekran Modu"},mousehover_display_bilingual:{zh:"\u53cc\u8bed\u6a21\u5f0f",en:"Bilingual mode",zh_TW:"\u96d9\u8a9e\u6a21\u5f0f",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u30e2\u30fc\u30c9",ko:"\uc774\uc911 \uc5b8\uc5b4 \ubaa8\ub4dc",tr:"\u0130ki Dilli Mod"},mousehover_display_bubble:{zh:"\u6c14\u6ce1\u6a21\u5f0f",en:"Bubble mode",zh_TW:"\u6c23\u6ce1\u6a21\u5f0f",ja:"\u30d0\u30d6\u30eb\u30e2\u30fc\u30c9",ko:"\ub9d0\ud48d\uc120 \ubaa8\ub4dc",tr:"Kabarc\u0131k Modu"},mousehover_bubble_style:{zh:"\u6c14\u6ce1\u6837\u5f0f CSS",en:"Bubble style CSS",zh_TW:"\u6c23\u6ce1\u6a23\u5f0f CSS",ja:"\u30d0\u30d6\u30eb\u30b9\u30bf\u30a4\u30eb CSS",ko:"\ub9d0\ud48d\uc120 \uc2a4\ud0c0\uc77c CSS",tr:"Kabarc\u0131k Stili Css"},mousehover_bubble_style_helper:{zh:"\u7528\u4e8e\u81ea\u5b9a\u4e49\u6c14\u6ce1\u5bb9\u5668\u6837\u5f0f\uff1b\u5b9a\u4f4d\u548c\u89c6\u53e3\u9632\u6ea2\u51fa\u7531\u7a0b\u5e8f\u81ea\u52a8\u5904\u7406\u3002",en:"Customize the bubble container style. Positioning and viewport overflow are handled automatically.",zh_TW:"\u7528\u65bc\u81ea\u8a02\u6c23\u6ce1\u5bb9\u5668\u6a23\u5f0f\uff1b\u5b9a\u4f4d\u8207\u8996\u7a97\u9632\u6ea2\u51fa\u7531\u7a0b\u5f0f\u81ea\u52d5\u8655\u7406\u3002",ja:"\u30d0\u30d6\u30eb\u30b3\u30f3\u30c6\u30ca\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u307e\u3059\u3002\u4f4d\u7f6e\u3068\u753b\u9762\u5916\u306b\u306f\u307f\u51fa\u3059\u51e6\u7406\u306f\u81ea\u52d5\u3067\u884c\u308f\u308c\u307e\u3059\u3002",ko:"\ub9d0\ud48d\uc120 \ucee8\ud14c\uc774\ub108 \uc2a4\ud0c0\uc77c\uc744 \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc704\uce58\uc640 \ud654\uba74 \ub118\uce68 \ubc29\uc9c0\ub294 \uc790\ub3d9\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4.",tr:"Kabarc\u0131k kab\u0131 stilini \xf6zelle\u015ftirin. Konumland\u0131rma ve g\xf6r\xfcnt\xfc alan\u0131 ta\u015fmas\u0131 otomatik olarak ger\xe7ekle\u015ftirilir."},autoscan_alt:{zh:"\u81ea\u52a8\u626b\u63cf",en:"Auto Scan",zh_TW:"\u81ea\u52d5\u6383\u63cf",ja:"\u81ea\u52d5\u30b9\u30ad\u30e3\u30f3",ko:"\uc790\ub3d9 \uc2a4\uce94",tr:"Otomatik Tara"},scan_all_nodes:{zh:"\u626b\u63cf\u5168\u90e8\u8282\u70b9",en:"Scan All Nodes",zh_TW:"\u6383\u63cf\u5168\u90e8\u7bc0\u9ede",ja:"\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u30b9\u30ad\u30e3\u30f3",ko:"\ubaa8\ub4e0 \ub178\ub4dc \uc2a4\uce94",tr:"T\xfcm D\xfc\u011f\xfcmleri Tara"},shadowroot_alt:{zh:"ShadowRoot",en:"ShadowRoot",zh_TW:"ShadowRoot",ja:"ShadowRoot",ko:"ShadowRoot",tr:"ShadowRoot"},richtext_alt:{zh:"\u4fdd\u7559\u5bcc\u6587\u672c",en:"Rich Text",zh_TW:"\u4fdd\u7559\u5bcc\u6587\u5b57",ja:"\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8",ko:"\ub9ac\uce58 \ud14d\uc2a4\ud2b8",tr:"Zengin Metin"},transonly_alt:{zh:"\u9690\u85cf\u539f\u6587",en:"Hide Original",zh_TW:"\u96b1\u85cf\u539f\u6587",ja:"\u539f\u6587\u3092\u96a0\u3059",ko:"\uc6d0\ubb38 \uc228\uae30\uae30",tr:"Orijinali Gizle"},confirm_title:{zh:"\u786e\u8ba4",en:"Confirm",zh_TW:"\u78ba\u8a8d",ja:"\u78ba\u8a8d",ko:"\ud655\uc778",tr:"Onayla"},confirm_message:{zh:"\u786e\u5b9a\u64cd\u4f5c\u5417\uff1f",en:"Are you sure you want to proceed?",zh_TW:"\u78ba\u5b9a\u64cd\u4f5c\u55ce\uff1f",ja:"\u64cd\u4f5c\u3092\u7d9a\u884c\u3057\u307e\u3059\u304b\uff1f",ko:"\uacc4\uc18d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",tr:"Devam Etmek \u0130stedi\u011finizden Emin Misiniz?"},confirm_action:{zh:"\u786e\u5b9a",en:"Confirm",zh_TW:"\u78ba\u5b9a",ja:"\u78ba\u8a8d",ko:"\ud655\uc778",tr:"Onayla"},cancel_action:{zh:"\u53d6\u6d88",en:"Cancel",zh_TW:"\u53d6\u6d88",ja:"\u30ad\u30e3\u30f3\u30bb\u30eb",ko:"\ucde8\uc18c",tr:"\u0130ptal Et"},pls_press_shortcut:{zh:"\u8bf7\u6309\u4e0b\u5feb\u6377\u952e\u7ec4\u5408",en:"Please press the shortcut key combination",zh_TW:"\u8acb\u6309\u4e0b\u5feb\u901f\u9375\u7d44\u5408",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044",ko:"\ub2e8\ucd95\ud0a4 \uc870\ud569\uc744 \ub204\ub974\uc138\uc694",tr:"L\xfctfen K\u0131sayol Tu\u015f Kombinasyonuna Bas\u0131n"},load_setting_err:{zh:"\u6570\u636e\u52a0\u8f7d\u51fa\u9519\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u6216\u5378\u8f7d\u540e\u91cd\u65b0\u5b89\u88c5\u3002",en:"Data loading error, please refresh the page or uninstall and reinstall.",zh_TW:"\u8cc7\u6599\u8f09\u5165\u767c\u751f\u932f\u8aa4\uff0c\u8acb\u91cd\u65b0\u6574\u7406\u9801\u9762\u6216\u89e3\u9664\u5b89\u88dd\u5f8c\u91cd\u65b0\u5b89\u88dd\u3002",ja:"\u30c7\u30fc\u30bf\u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\u3002\u30da\u30fc\u30b8\u3092\u66f4\u65b0\u3059\u308b\u304b\u3001\u30a2\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u306b\u518d\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ub370\uc774\ud130 \ub85c\ub529 \uc624\ub958. \ud398\uc774\uc9c0\ub97c \uc0c8\ub85c \uace0\uce58\uac70\ub098 \uc81c\uac70 \ud6c4 \ub2e4\uc2dc \uc124\uce58\ud558\uc138\uc694.",tr:"Veri y\xfckleme hatas\u0131, l\xfctfen sayfay\u0131 yenileyin veya uygulamay\u0131 kald\u0131r\u0131p yeniden y\xfckleyin"},translation_style:{zh:"\u7ffb\u8bd1\u98ce\u683c",en:"Translation style",zh_TW:"\u7ffb\u8b6f\u98a8\u683c",ja:"\u7ffb\u8a33\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed \uc2a4\ud0c0\uc77c",tr:"\xc7eviri Stili"},placeholder:{zh:"\u5360\u4f4d\u7b26",en:"Placeholder",zh_TW:"\u4f54\u4f4d\u7b26",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354",tr:"Yer Tutucu"},tag_name:{zh:"\u5360\u4f4d\u6807\u7b7e\u540d",en:"Placeholder tag name",zh_TW:"\u4f54\u4f4d\u6a19\u540d",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u30bf\u30b0\u540d",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354 \ud0dc\uadf8 \uc774\ub984",tr:"Yer Tutucu Etiket Ad\u0131"},system_prompt_helper_1:{zh:"1. \u6839\u636e\u5b9e\u9645\u60c5\u51b5\u9009\u62e9AI\u652f\u6301\u7684\u805a\u5408\u683c\u5f0f\uff1a",en:"1. Select the aggregation format supported by the AI according to your needs:",zh_TW:"1. \u8acb\u4f9d\u5be6\u969b\u60c5\u6cc1\u9078\u64c7 AI \u652f\u63f4\u7684\u5f59\u6574\u683c\u5f0f\uff1a",ja:"1. \u5b9f\u969b\u306e\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u3001AI \u304c\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u96c6\u7d04\u5f62\u5f0f\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\uff1a",ko:"1. \uc0c1\ud669\uc5d0 \ub9de\uac8c AI\uc5d0\uc11c \uc9c0\uc6d0\ud558\ub294 \uc9d1\uacc4 \ud615\uc2dd\uc744 \uc120\ud0dd\ud558\uc138\uc694:",tr:"1. \u0130htiya\xe7lar\u0131n\u0131za G\xf6re AI Taraf\u0131ndan Desteklenen Toplama Format\u0131n\u0131 Se\xe7in:"},json_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201cJSON \u683c\u5f0f\u201c",en:'Click to switch to "JSON Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300cJSON \u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300cJSON \u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "JSON \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"JSON Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},xml_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201cXML \u683c\u5f0f\u201c",en:'Click to switch to "XML Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300cXML \u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300cXML \u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "XML \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"XML Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},textlines_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201c\u591a\u884c\u6587\u672c\u683c\u5f0f\u201c",en:'Click to switch to "Multi-line Text Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300c\u591a\u884c\u6587\u5b57\u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300c\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "\uc5ec\ub7ec \uc904 \ud14d\uc2a4\ud2b8 \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"\xc7ok Sat\u0131rl\u0131 Metin Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},system_prompt_helper_2:{zh:"2. \u5728\u672a\u5b8c\u5168\u7406\u89e3\u9ed8\u8ba4Prompt\u7684\u60c5\u51b5\u4e0b\uff0c\u8bf7\u52ff\u968f\u610f\u4fee\u6539\uff0c\u5426\u5219\u53ef\u80fd\u65e0\u6cd5\u5de5\u4f5c\u3002",en:"2. Do not modify the default prompt without fully understanding it, otherwise it may not work.",zh_TW:"2. \u5728\u672a\u5b8c\u5168\u7406\u89e3\u9810\u8a2dPrompt\u7684\u60c5\u6cc1\u4e0b\uff0c\u8acb\u52ff\u96a8\u610f\u4fee\u6539\uff0c\u5426\u5247\u53ef\u80fd\u7121\u6cd5\u904b\u4f5c\u3002",ja:"2. \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u5b8c\u5168\u306b\u7406\u89e3\u305b\u305a\u306b\u5909\u66f4\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u52d5\u4f5c\u3057\u306a\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002",ko:"2. \uae30\ubcf8 \ud504\ub86c\ud504\ud2b8\ub97c \uc644\uc804\ud788 \uc774\ud574\ud558\uc9c0 \uc54a\uace0 \uc218\uc815\ud558\uc9c0 \ub9c8\uc2ed\uc2dc\uc624. \uc791\ub3d9\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"2. Varsay\u0131lan komut istemini tam olarak anlamadan de\u011fi\u015ftirmeyin, aksi takdirde \xe7al\u0131\u015fmayabilir"},if_pre_init:{zh:"\u662f\u5426\u9884\u521d\u59cb\u5316",en:"Whether to pre-initialize",zh_TW:"\u662f\u5426\u9810\u521d\u59cb\u5316",ja:"\u4e8b\u524d\u521d\u671f\u5316\u3059\u308b\u304b",ko:"\uc0ac\uc804 \ucd08\uae30\ud654 \uc5ec\ubd80",tr:"\xd6nceden Ba\u015flat\u0131l\u0131p Ba\u015flat\u0131lmayaca\u011f\u0131"},export_old:{zh:"\u5bfc\u51fa\u65e7\u7248",en:"Export old version",zh_TW:"\u532f\u51fa\u820a\u7248",ja:"\u65e7\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\uc774\uc804 \ubc84\uc804 \ub0b4\ubcf4\ub0b4\uae30",tr:"Eski S\xfcr\xfcm\xfc D\u0131\u015fa Aktar"},favorite_words_helper:{zh:"\u5bfc\u5165\u8bcd\u6c47\u8bf7\u4f7f\u7528txt\u6587\u4ef6\uff0c\u6bcf\u4e00\u884c\u4e00\u4e2a\u5355\u8bcd\u3002",en:"To import vocabulary, please use a txt file with one word per line.",zh_TW:"\u532f\u5165\u8a5e\u5f59\u8acb\u4f7f\u7528 txt \u6a94\u6848\uff0c\u6bcf\u4e00\u884c\u4e00\u500b\u55ae\u5b57\u3002",ja:"\u5358\u8a9e\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u306b\u306f\u30011\u884c\u306b1\u5358\u8a9e\u305a\u3064\u8a18\u8ff0\u3057\u305ftxt\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ub2e8\uc5b4\ub97c \uac00\uc838\uc624\ub824\uba74 \ud55c \uc904\uc5d0 \ud55c \ub2e8\uc5b4\uc529 .txt \ud30c\uc77c\uc744 \uc0ac\uc6a9\ud558\uc138\uc694.",tr:"S\xf6zl\xfck eklemek i\xe7in l\xfctfen her sat\u0131rda bir kelime bulunan bir txt dosyas\u0131 kullan\u0131n"},btn_tip_click_away:{zh:"\u5931\u7126\u9690\u85cf/\u663e\u793a",en:"Loss of focus hide/show",zh_TW:"\u5931\u7126\u96b1\u85cf/\u986f\u793a",ja:"\u30d5\u30a9\u30fc\u30ab\u30b9\u3092\u5931\u3063\u305f\u6642\u306b\u975e\u8868\u793a/\u8868\u793a",ko:"\ud3ec\ucee4\uc2a4 \uc783\uc744 \uc2dc \uc228\uae30\uae30/\ud45c\uc2dc",tr:"Odak Kayb\u0131nda Gizle/G\xf6ster"},btn_tip_follow_selection:{zh:"\u8ddf\u968f/\u56fa\u5b9a\u6a21\u5f0f",en:"Follow/Fixed Mode",zh_TW:"\u8ddf\u96a8/\u56fa\u5b9a\u6a21\u5f0f",ja:"\u8ffd\u5f93/\u56fa\u5b9a\u30e2\u30fc\u30c9",ko:"\ub530\ub77c\uac00\uae30/\uace0\uc815 \ubaa8\ub4dc",tr:"Takip/Sabit Mod"},btn_tip_simple_style:{zh:"\u8ff7\u4f60/\u5e38\u89c4\u6a21\u5f0f",en:"Mini/Regular Mode",zh_TW:"\u8ff7\u4f60/\u5e38\u898f\u6a21\u5f0f",ja:"\u30df\u30cb/\u901a\u5e38\u30e2\u30fc\u30c9",ko:"\ubbf8\ub2c8/\uc77c\ubc18 \ubaa8\ub4dc",tr:"Mini/Normal Mod"},btn_tip_dark_mode:{zh:"\u4eae\u8272/\u6697\u8272/\u8ddf\u968f\u7cfb\u7edf",en:"Light/Dark/Auto",zh_TW:"\u4eae\u8272/\u6697\u8272/\u8ddf\u96a8\u7cfb\u7d71",ja:"\u30e9\u30a4\u30c8/\u30c0\u30fc\u30af/\u81ea\u52d5",ko:"\ub77c\uc774\ud2b8/\ub2e4\ud06c/\uc790\ub3d9",tr:"A\xe7\u0131k/Koyu/Otomatik"},api_placeholder:{zh:"\u5360\u4f4d\u7b26",en:"Placeholder",zh_TW:"\u4f54\u4f4d\u7b26",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354",tr:"Yer Tutucu"},api_placetag:{zh:"\u5360\u4f4d\u6807\u7b7e",en:"Placeholder tags",zh_TW:"\u4f54\u4f4d\u6a19",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30bf\u30b0",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354 \ud0dc\uadf8",tr:"Yer Tutucu Etiketleri"},placetag_format:{zh:"\u5360\u4f4d\u7b26\u683c\u5f0f",en:"Placeholder Format",zh_TW:"\u4f54\u4f4d\u7b26\u683c\u5f0f",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u5f62\u5f0f",ko:"\uc790\ub9ac \ud45c\uc2dc\uc790 \ud615\uc2dd",tr:"Yer Tutucu Format\u0131"},format_compact:{zh:"\u7b80\u6d01\u683c\u5f0f ",en:"Compact Format ",zh_TW:"\u7c21\u6f54\u683c\u5f0f ",ja:"\u7c21\u6f54\u5f62\u5f0f ",ko:"\uac04\uacb0 \ud615\uc2dd ",tr:"Kompakt Format "},format_attribute:{zh:"\u5c5e\u6027\u683c\u5f0f ",en:"Attribute Format ",zh_TW:"\u5c6c\u6027\u683c\u5f0f ",ja:"\u5c5e\u6027\u5f62\u5f0f ",ko:"\uc18d\uc131 \ud615\uc2dd ",tr:"\xd6znitelik Format\u0131 "},detected_lang:{zh:"\u8bed\u8a00\u68c0\u6d4b",en:"Language detection",zh_TW:"\u8a9e\u8a00\u5075\u6e2c",ja:"\u8a00\u8a9e\u691c\u51fa",ko:"\uc5b8\uc5b4 \uac10\uc9c0",tr:"Dil Alg\u0131lama"},detected_result:{zh:"\u68c0\u6d4b\u7ed3\u679c",en:"Detect result",zh_TW:"\u5075\u6e2c\u7d50\u679c",ja:"\u691c\u51fa\u7d50\u679c",ko:"\uac10\uc9c0 \uacb0\uacfc",tr:"Sonu\xe7 Tespiti"},subtitle_translate:{zh:"\u5b57\u5e55\u7ffb\u8bd1",en:"Subtitle Translation",zh_TW:"\u5b57\u5e55\u7ffb\u8b6f",ja:"\u5b57\u5e55\u7ffb\u8a33",ko:"\uc790\ub9c9 \ubc88\uc5ed",tr:"Altyaz\u0131 \xc7evirisi"},bilingual_subtitles:{zh:"\u53cc\u8bed\u5b57\u5e55",en:"Bilingual subtitles",zh_TW:"\u96d9\u8a9e\u5b57\u5e55",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9",tr:"\u0130ki Dilli Altyaz\u0131lar"},vocabulary_book:{zh:"\u751f\u8bcd\u672c",en:"Vocabulary",zh_TW:"\u751f\u8a5e\u672c",ja:"\u5358\u8a9e\u5e33",ko:"\ub2e8\uc5b4\uc7a5",tr:"Kelime Bilgisi"},download_subtitles_vtt:{zh:"\u4e0b\u8f7d\u5b57\u5e55 (VTT)",en:"Download subtitles (VTT)",zh_TW:"\u4e0b\u8f09\u5b57\u5e55 (VTT)",ja:"\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (VTT)",ko:"\uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc (VTT)",tr:"Altyaz\u0131lar\u0131 \u0130ndir (VTT)"},download_raw_subtitle_events_json:{zh:"\u4e0b\u8f7d\u6e90\u6570\u636e (JSON)",en:"Download source data (JSON)",zh_TW:"\u4e0b\u8f09\u4f86\u6e90\u8cc7\u6599 (JSON)",ja:"\u30bd\u30fc\u30b9\u30c7\u30fc\u30bf\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (JSON)",ko:"\uc6d0\ubcf8 \ub370\uc774\ud130 \ub2e4\uc6b4\ub85c\ub4dc (JSON)",tr:"Kaynak Verilerini \u0130ndirin (JSON)"},download_translation_subtitles_vtt:{zh:"\u4e0b\u8f7d\u8bd1\u6587\u5b57\u5e55 (VTT)",en:"Download translation subtitles (VTT)",zh_TW:"\u4e0b\u8f09\u8b6f\u6587\u5b57\u5e55 (VTT)",ja:"\u7ffb\u8a33\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (VTT)",ko:"\ubc88\uc5ed \uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc (VTT)",tr:"\xc7eviri Altyaz\u0131lar\u0131n\u0131 \u0130ndir (VTT)"},toggle_subtitle_translate:{zh:"\u542f\u7528\u5b57\u5e55\u7ffb\u8bd1",en:"Enable subtitle translation",zh_TW:"\u555f\u7528\u5b57\u5e55\u7ffb\u8b6f",ja:"\u5b57\u5e55\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc790\ub9c9 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Altyaz\u0131 \xc7evirisini Etkinle\u015ftir"},default_subtitle_translate:{zh:"\u9ed8\u8ba4\u7acb\u5373\u7ffb\u8bd1",en:"Translate subtitles immediately by default",zh_TW:"\u9810\u8a2d\u7acb\u5373\u7ffb\u8b6f",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3059\u3050\u306b\u5b57\u5e55\u3092\u7ffb\u8a33",ko:"\uae30\ubcf8\uc801\uc73c\ub85c \uc790\ub9c9 \uc989\uc2dc \ubc88\uc5ed",tr:"Altyaz\u0131lar\u0131 varsay\u0131lan olarak hemen \xe7evir"},enable_subtitle_translate:{zh:"\u5f00\u542f\u7ffb\u8bd1",en:"Enable translation",zh_TW:"\u958b\u555f\u7ffb\u8b6f",ja:"\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ubc88\uc5ed \ud65c\uc131\ud654",tr:"\xc7eviriyi etkinle\u015ftir"},is_bilingual_view:{zh:"\u53cc\u8bed\u663e\u793a",en:"Enable bilingual display",zh_TW:"\u96d9\u8a9e\u986f\u793a",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u8868\u793a",ko:"\uc774\uc911 \uc5b8\uc5b4 \ud45c\uc2dc",tr:"\u0130ki Dilli G\xf6r\xfcnt\xfclemeyi Etkinle\u015ftir"},is_blur_translation:{zh:"\u6a21\u7cca\u8bd1\u6587",en:"Blur Translation",zh_TW:"\u6a21\u7cca\u8b6f\u6587",ja:"\u7ffb\u8a33\u3092\u307c\u304b\u3059",ko:"\ubc88\uc5ed \ud750\ub9bc",tr:"Bulan\u0131kl\u0131k \xc7evirisi"},is_skip_ad:{zh:"\u5feb\u8fdb\u5e7f\u544a",en:"Skip AD",zh_TW:"\u5feb\u8f49\u5ee3\u544a",ja:"\u5e83\u544a\u3092\u30b9\u30ad\u30c3\u30d7",ko:"\uad11\uace0 \uac74\ub108\ub6f0\uae30",tr:"Reklam\u0131 Atla"},download_subtitles:{zh:"\u4e0b\u8f7d\u5b57\u5e55",en:"Download subtitles",zh_TW:"\u4e0b\u8f09\u5b57\u5e55",ja:"\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9",ko:"\uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc",tr:"Altyaz\u0131lar\u0131 \u0130ndir"},background_styles:{zh:"\u80cc\u666f\u6837\u5f0f",en:"Background Style",zh_TW:"\u80cc\u666f\u6a23\u5f0f",ja:"\u80cc\u666f\u30b9\u30bf\u30a4\u30eb",ko:"\ubc30\uacbd \uc2a4\ud0c0\uc77c",tr:"Arka Plan Stili"},origin_styles:{zh:"\u539f\u6587\u6837\u5f0f",en:"Original style",zh_TW:"\u539f\u6587\u6a23\u5f0f",ja:"\u539f\u6587\u30b9\u30bf\u30a4\u30eb",ko:"\uc6d0\ubb38 \uc2a4\ud0c0\uc77c",tr:"Orijinal Stil"},translation_styles:{zh:"\u8bd1\u6587\u6837\u5f0f",en:"Translation style",zh_TW:"\u8b6f\u6587\u6a23\u5f0f",ja:"\u7ffb\u8a33\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed\ubb38 \uc2a4\ud0c0\uc77c",tr:"\xc7eviri Stili"},ai_segmentation:{zh:"AI\u667a\u80fd\u65ad\u53e5",en:"AI intelligent punctuation",zh_TW:"AI\u667a\u6167\u65b7\u53e5",ja:"AI\u306b\u3088\u308b\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u306a\u6587\u5206\u5272",ko:"AI \uc9c0\ub2a5\ud615 \ubb38\uc7a5 \ubd84\ub9ac",tr:"AI Ak\u0131ll\u0131 Noktalama \u0130\u015faretleri"},builtin_sentence_break:{zh:"\u5185\u7f6e\u65ad\u53e5",en:"Built-in Sentence Break",zh_TW:"\u5167\u7f6e\u65b7\u53e5",ja:"\u5185\u8535\u6587\u5206\u5272",ko:"\ub0b4\uc7a5 \ubb38\uc7a5 \ubd84\ub9ac",tr:"Yerle\u015fik C\xfcmle Aras\u0131"},rule_sentence_break:{zh:"\u89c4\u5219\u65ad\u53e5",en:"Rule-based Break",zh_TW:"\u898f\u5247\u65b7\u53e5",ja:"\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u5206\u5272",ko:"\uaddc\uce59 \uae30\ubc18 \ubd84\ub9ac",tr:"Kural Tabanl\u0131 Mola"},statistical_sentence_break:{zh:"\u7edf\u8ba1\u65ad\u53e5",en:"Statistical Break",zh_TW:"\u7d71\u8a08\u65b7\u53e5",ja:"\u7d71\u8a08\u7684\u5206\u5272",ko:"\ud1b5\uacc4 \uae30\ubc18 \ubd84\ub9ac",tr:"\u0130statistiksel K\u0131r\u0131l\u0131m"},force_subtitle_retranslate:{zh:"\u5f3a\u5236\u91cd\u7ffb",en:"Force re-translate",zh_TW:"\u5f37\u5236\u91cd\u7ffb",ja:"\u5f37\u5236\u518d\u7ffb\u8a33",ko:"\uac15\uc81c \uc7ac\ubc88\uc5ed",tr:"Yeniden \xc7evirmeye Zorla"},ai_enhanced_context:{zh:"\u589e\u5f3a\u667a\u80fd\u4e0a\u4e0b\u6587",en:"Enhanced Intelligent Context",zh_TW:"\u589e\u5f37\u667a\u6167\u4e0a\u4e0b\u6587",ja:"\u5f37\u5316\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8",ko:"\uac15\ud654 \uc9c0\ub2a5\ud615 \ucee8\ud14d\uc2a4\ud2b8",tr:"Geli\u015fmi\u015f Ak\u0131ll\u0131 \u0130\xe7erik"},ai_context_analyzing:{zh:"AI\u6b63\u5728\u5206\u6790\u89c6\u9891\u5185\u5bb9...",en:"AI is analyzing video content...",zh_TW:"AI\u6b63\u5728\u5206\u6790\u5f71\u7247\u5167\u5bb9...",ja:"AI\u304c\u52d5\u753b\u5185\u5bb9\u3092\u5206\u6790\u4e2d...",ko:"AI\uac00 \ube44\ub514\uc624 \ucf58\ud150\uce20\ub97c \ubd84\uc11d \uc911...",tr:"AI video i\xe7eri\u011fini analiz ediyor..."},ai_chunk_length:{zh:"AI\u5904\u7406\u5207\u5272\u957f\u5ea6(200-20000)",en:"AI processing chunk length(200-20000)",zh_TW:"AI \u8655\u7406\u5207\u5272\u9577\u5ea6(200-20000)",ja:"AI\u51e6\u7406\u306e\u30c1\u30e3\u30f3\u30af\u9577(200-20000)",ko:"AI \ucc98\ub9ac \uccad\ud06c \uae38\uc774(200-20000)",tr:"AI \u0130\u015fleme Par\xe7a Uzunlu\u011fu (200-20000)"},subtitle_helper_1:{zh:"1\u3001\u76ee\u524d\u4ec5\u652f\u6301Youtube\u684c\u9762\u7f51\u7ad9\u3002",en:"1. Currently only supports Youtube desktop website.",zh_TW:"1.\u76ee\u524d\u50c5\u652f\u63f4Youtube\u684c\u9762\u7db2\u7ad9\uff0c\u4e14\u50c5\u652f\u63f4\u700f\u89bd\u5668\u64f4\u5145\u529f\u80fd\u3002",ja:"1. \u73fe\u5728\u3001Youtube\u306e\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u30b5\u30a4\u30c8\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002",ko:"1. \ud604\uc7ac Youtube \ub370\uc2a4\ud06c\ud1b1 \uc6f9\uc0ac\uc774\ud2b8\ub9cc \uc9c0\uc6d0\ud569\ub2c8\ub2e4.",tr:"1. \u015eu anda yaln\u0131zca Youtube masa\xfcst\xfc web sitesini desteklemektedir."},subtitle_helper_2:{zh:"2\u3001\u63d2\u4ef6\u5185\u7f6e\u57fa\u7840\u7684\u5b57\u5e55\u5408\u5e76\u3001\u65ad\u53e5\u7b97\u6cd5\uff0c\u53ef\u6ee1\u8db3\u5927\u90e8\u5206\u60c5\u51b5\u3002",en:"2. The plug-in has built-in basic subtitle merging and sentence segmentation algorithms, which can meet most situations.",zh_TW:"2. \u64f4\u5145\u529f\u80fd\u5167\u5efa\u57fa\u790e\u7684\u5b57\u5e55\u5408\u4f75\u3001\u65b7\u53e5\u6f14\u7b97\u6cd5\uff0c\u53ef\u6eff\u8db3\u5927\u90e8\u5206\u60c5\u6cc1\u3002",ja:"2. \u30d7\u30e9\u30b0\u30a4\u30f3\u306b\u306f\u57fa\u672c\u7684\u306a\u5b57\u5e55\u7d50\u5408\u3068\u6587\u5206\u5272\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u304a\u308a\u3001\u307b\u3068\u3093\u3069\u306e\u72b6\u6cc1\u306b\u5bfe\u5fdc\u3067\u304d\u307e\u3059\u3002",ko:"2. \ud50c\ub7ec\uadf8\uc778\uc5d0\ub294 \uae30\ubcf8\uc801\uc778 \uc790\ub9c9 \ubcd1\ud569 \ubc0f \ubb38\uc7a5 \ubd84\ub9ac \uc54c\uace0\ub9ac\uc998\uc774 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc5b4 \ub300\ubd80\ubd84\uc758 \uc0c1\ud669\uc5d0 \ub300\uc751\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"2. Eklenti, \xe7o\u011fu duruma uygun temel altyaz\u0131 birle\u015ftirme ve c\xfcmle b\xf6lme algoritmalar\u0131na sahiptir."},subtitle_helper_3:{zh:"3\u3001\u4ea6\u53ef\u4ee5\u542f\u7528AI\u667a\u80fd\u65ad\u53e5\uff0c\u4f46\u9700\u8003\u8651\u5207\u5272\u957f\u5ea6\u53caAI\u63a5\u53e3\u80fd\u529b\uff0c\u53ef\u80fd\u5904\u7406\u65f6\u95f4\u4f1a\u5f88\u957f\u3002\u82e5\u5904\u7406\u5931\u8d25\uff0c\u5c06\u81ea\u52a8\u964d\u7ea7\u4e3a\u5185\u7f6e\u65ad\u53e5\u5e76\u7ffb\u8bd1\u3002",en:"3. You can also enable AI intelligent segmentation, but consider the chunk length and AI interface capacity, as processing may take a long time. If it fails, it will automatically fall back to built-in sentence break and translation.",zh_TW:"3. \u4ea6\u53ef\u555f\u7528 AI \u667a\u6167\u65b7\u53e5\uff0c\u4f46\u9700\u8003\u616e\u5207\u5272\u9577\u5ea6\u53ca AI \u4ecb\u9762\u80fd\u529b\uff0c\u8655\u7406\u6642\u9593\u53ef\u80fd\u6703\u5f88\u9577\u3002\u82e5\u8655\u7406\u5931\u6557\uff0c\u5c07\u81ea\u52d5\u964d\u7d1a\u70ba\u5167\u7f6e\u65b7\u53e5\u4e26\u7ffb\u8b6f\u3002",ja:"3. AI\u306b\u3088\u308b\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u306a\u6587\u5206\u5272\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u304c\u3001\u30c1\u30e3\u30f3\u30af\u9577\u3084AI\u306e\u51e6\u7406\u80fd\u529b\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u51e6\u7406\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u51e6\u7406\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u306f\u3001\u81ea\u52d5\u7684\u306b\u5185\u8535\u6587\u5206\u5272\u3068\u7ffb\u8a33\u306b\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u3055\u308c\u307e\u3059\u3002",ko:"3. AI \uc9c0\ub2a5\ud615 \ubd84\ub9ac\ub97c \ud65c\uc131\ud654\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc, \uccad\ud06c \uae38\uc774\uc640 AI \uc778\ud130\ud398\uc774\uc2a4 \ucc98\ub9ac \ub2a5\ub825\uc744 \uace0\ub824\ud574\uc57c \ud558\uba70 \ucc98\ub9ac \uc2dc\uac04\uc774 \uae38\uc5b4\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucc98\ub9ac\uc5d0 \uc2e4\ud328\ud560 \uacbd\uc6b0 \uc790\ub3d9\uc73c\ub85c \ub0b4\uc7a5 \ubb38\uc7a5 \ubd84\ub9ac \ubc0f \ubc88\uc5ed\uc73c\ub85c \ub300\uccb4\ub429\ub2c8\ub2e4.",tr:"3. AI destekli ak\u0131ll\u0131 b\xf6l\xfcmlemeyi de etkinle\u015ftirebilirsiniz, ancak i\u015flem uzun s\xfcrebilece\u011finden, \xf6bek uzunlu\u011funu ve yapay zek\xe2 aray\xfcz\xfc kapasitesini g\xf6z \xf6n\xfcnde bulundurun. Ba\u015far\u0131s\u0131z olursa, otomatik olarak yerle\u015fik c\xfcmle b\xf6lme ve \xe7eviri \xf6zelli\u011fine geri d\xf6necektir."},show_subtitle_list:{zh:"\u663e\u793a\u5b57\u5e55\u5217\u8868",en:"Show Subtitle List",zh_TW:"\u986f\u793a\u5b57\u5e55\u6e05\u55ae",ja:"\u5b57\u5e55\u30ea\u30b9\u30c8\u3092\u8868\u793a",ko:"\uc790\ub9c9 \ubaa9\ub85d \ud45c\uc2dc",tr:"Altyaz\u0131 Listesini G\xf6ster"},subtitle_loading_notification:{zh:"\u5b57\u5e55\u52a0\u8f7d\u901a\u77e5",en:"Subtitle loading notification",zh_TW:"\u5b57\u5e55\u8f09\u5165\u901a\u77e5",ja:"\u5b57\u5e55\u8aad\u307f\u8fbc\u307f\u901a\u77e5",ko:"\uc790\ub9c9 \ub85c\ub529 \uc54c\ub9bc",tr:"Altyaz\u0131 Y\xfckleme Bildirimi"},hide_subtitle_button:{zh:"\u9690\u85cf\u529f\u80fd\u6309\u94ae",en:"Hide function button",zh_TW:"\u96b1\u85cf\u529f\u80fd\u6309\u9215",ja:"\u6a5f\u80fd\u30dc\u30bf\u30f3\u3092\u975e\u8868\u793a",ko:"\uae30\ub2a5 \ubc84\ud2bc \uc228\uae30\uae30",tr:"\u0130\u015flev D\xfc\u011fmesini Gizle"},subtitle_hover_lookup:{zh:"\u60ac\u505c\u67e5\u8bcd",en:"Hover Word Lookup",zh_TW:"\u61f8\u505c\u67e5\u8a5e",ja:"\u30db\u30d0\u30fc\u8f9e\u66f8\u691c\u7d22",ko:"\ud638\ubc84 \ub2e8\uc5b4 \uc870\ud68c",tr:"Vurgulu Kelime Arama"},default_styles_example:{zh:"\u9ed8\u8ba4\u6837\u5f0f\u53c2\u8003\uff1a",en:"Default styles reference:",zh_TW:"\u9810\u8a2d\u6a23\u5f0f\u53c3\u8003\uff1a",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30bf\u30a4\u30eb\u306e\u4f8b\uff1a",ko:"\uae30\ubcf8 \uc2a4\ud0c0\uc77c \uc608\uc2dc:",tr:"Varsay\u0131lan Stiller Referans\u0131:"},subtitle_load_succeed:{zh:"\u53cc\u8bed\u5b57\u5e55\u52a0\u8f7d\u6210\u529f\uff01",en:"Bilingual subtitles loaded successfully!",zh_TW:"\u96d9\u8a9e\u5b57\u5e55\u8f09\u5165\u6210\u529f\uff01",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55\u306e\u8aad\u307f\u8fbc\u307f\u306b\u6210\u529f\u3057\u307e\u3057\u305f\uff01",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9 \ub85c\ub529 \uc131\uacf5!",tr:"\u0130ki Dilli Altyaz\u0131lar Ba\u015far\u0131yla Y\xfcklendi"},subtitle_load_failed:{zh:"\u53cc\u8bed\u5b57\u5e55\u52a0\u8f7d\u5931\u8d25\uff01",en:"Failed to load bilingual subtitles!",zh_TW:"\u96d9\u8a9e\u5b57\u5e55\u8f09\u5165\u5931\u6557\uff01",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff01",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9 \ub85c\ub529 \uc2e4\ud328!",tr:"\u0130ki Dilli Altyaz\u0131lar Y\xfcklenemedi"},try_get_subtitle_data:{zh:"\u5c1d\u8bd5\u83b7\u53d6\u5b57\u5e55\u6570\u636e\uff0c\u8bf7\u7a0d\u5019...",en:"Trying to get subtitle data, please wait...",zh_TW:"\u5617\u8a66\u53d6\u5f97\u5b57\u5e55\u8cc7\u6599\uff0c\u8acb\u7a0d\u5019...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \uac00\uc838\uc624\ub294 \uc911\uc785\ub2c8\ub2e4. \uc7a0\uc2dc \uae30\ub2e4\ub824\uc8fc\uc138\uc694...",tr:"Altyaz\u0131 verileri al\u0131nmaya \xe7al\u0131\u015f\u0131l\u0131yor"},subtitle_data_processing:{zh:"\u5b57\u5e55\u6570\u636e\u5904\u7406\u4e2d...",en:"Subtitle data processing...",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u8655\u7406\u4e2d...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u4e2d...",ko:"\uc790\ub9c9 \ub370\uc774\ud130 \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 Verileri \u0130\u015fleniyor..."},starting_to_process_subtitle:{zh:"\u5f00\u59cb\u5904\u7406\u5b57\u5e55\u6570\u636e...",en:"Starting to process subtitle data...",zh_TW:"\u958b\u59cb\u8655\u7406\u5b57\u5e55\u8cc7\u6599...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u51e6\u7406\u3092\u958b\u59cb\u3057\u307e\u3059...",ko:"\uc790\ub9c9 \ub370\uc774\ud130 \ucc98\ub9ac\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4...",tr:"Altyaz\u0131 verileri i\u015flenmeye ba\u015fl\u0131yor..."},subtitle_data_is_ready:{zh:"\u5b57\u5e55\u6570\u636e\u5df2\u51c6\u5907\u5c31\u7eea\uff0c\u8bf7\u70b9\u51fbKT\u6309\u94ae\u52a0\u8f7d",en:"The subtitle data is ready, please click the KT button to load it",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u5df2\u6e96\u5099\u5c31\u7dd2\uff0c\u8acb\u9ede\u9078 KT \u6309\u9215\u8f09\u5165",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002KT\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u8aad\u307f\u8fbc\u3093\u3067\u304f\u3060\u3055\u3044",ko:"\uc790\ub9c9 \ub370\uc774\ud130\uac00 \uc900\ube44\ub418\uc5c8\uc2b5\ub2c8\ub2e4. KT \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub85c\ub4dc\ud558\uc138\uc694",tr:"Altyaz\u0131 verileri haz\u0131r, y\xfcklemek i\xe7in l\xfctfen KT d\xfc\u011fmesine t\u0131klay\u0131n"},starting_reprocess_events:{zh:"\u91cd\u65b0\u5904\u7406\u5b57\u5e55\u6570\u636e...",en:"Reprocess the subtitle data...",zh_TW:"\u91cd\u65b0\u8655\u7406\u5b57\u5e55\u8cc7\u6599...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u518d\u51e6\u7406\u3057\u3066\u3044\u307e\u3059...",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \ub2e4\uc2dc \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 verilerini yeniden i\u015fleyin..."},waitting_for_subtitle:{zh:"\u8bf7\u7b49\u5f85\u5b57\u5e55\u6570\u636e",en:"Please wait for the subtitle data.",zh_TW:"\u8acb\u7b49\u5f85\u5b57\u5e55\u8cc7\u6599",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u5f85\u6a5f\u4e2d",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \uae30\ub2e4\ub824\uc8fc\uc138\uc694",tr:"L\xfctfen altyaz\u0131 verilerini bekleyin."},ai_processing_pls_wait:{zh:"AI\u5904\u7406\u4e2d\uff0c\u8bf7\u7a0d\u7b49...",en:"AI processing in progress, please wait...",zh_TW:"AI \u8655\u7406\u4e2d\uff0c\u8acb\u7a0d\u5019...",ja:"AI\u51e6\u7406\u4e2d\u3067\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...",ko:"AI \ucc98\ub9ac \uc911\uc785\ub2c8\ub2e4. \uc7a0\uc2dc \uae30\ub2e4\ub824\uc8fc\uc138\uc694...",tr:"AI i\u015fleme devam ediyor"},processing_subtitles:{zh:"\u5b57\u5e55\u5904\u7406\u4e2d...",en:"Subtitle processing...",zh_TW:"\u5b57\u5e55\u8655\u7406\u4e2d...",ja:"\u5b57\u5e55\u51e6\u7406\u4e2d...",ko:"\uc790\ub9c9 \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 \u0130\u015fleniyor..."},waiting_subtitles:{zh:"\u7b49\u5f85\u5b57\u5e55\u4e2d",en:"Waiting for subtitles",zh_TW:"\u7b49\u5f85\u5b57\u5e55\u4e2d",ja:"\u5b57\u5e55\u5f85\u6a5f\u4e2d",ko:"\uc790\ub9c9 \ub300\uae30 \uc911",tr:"Altyaz\u0131lar\u0131 Bekliyorum"},subtitle_is_not_yet_ready:{zh:"\u5b57\u5e55\u6570\u636e\u5c1a\u672a\u51c6\u5907\u597d",en:"Subtitle is not yet ready.",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u5c1a\u672a\u6e96\u5099\u597d",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u6e96\u5099\u304c\u307e\u3060\u3067\u304d\u3066\u3044\u307e\u305b\u3093\u3002",ko:"\uc790\ub9c9 \ub370\uc774\ud130\uac00 \uc544\uc9c1 \uc900\ube44\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.",tr:"Altyaz\u0131 hen\xfcz haz\u0131r de\u011fil."},log_level:{zh:"\u65e5\u5fd7\u7ea7\u522b",en:"Log Level",zh_TW:"\u65e5\u8a8c\u7b49\u7d1a",ja:"\u30ed\u30b0\u30ec\u30d9\u30eb",ko:"\ub85c\uadf8 \ub808\ubca8",tr:"G\xfcnl\xfck D\xfczeyi"},goto_custom_api_example:{zh:"\u70b9\u51fb\u67e5\u770b\u3010\u81ea\u5b9a\u4e49\u63a5\u53e3\u793a\u4f8b\u3011",en:"Click to view [Custom Interface Example]",zh_TW:"\u9ede\u9078\u6aa2\u8996\u3010\u81ea\u8a02\u4ecb\u9762\u7bc4\u4f8b\u3011",ja:"\u3010\u30ab\u30b9\u30bf\u30e0\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u4f8b\u3011\u3092\u898b\u308b",ko:"[\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc778\ud130\ud398\uc774\uc2a4 \uc608\uc2dc] \ubcf4\uae30",tr:"[\xd6zel Aray\xfcz \xd6rne\u011fi]'ni G\xf6r\xfcnt\xfclemek \u0130\xe7in T\u0131klay\u0131n"},split_paragraph:{zh:"\u5207\u5206\u957f\u6bb5\u843d",en:"Split long paragraph",zh_TW:"\u5207\u5206\u9577\u6bb5\u843d",ja:"\u9577\u3044\u6bb5\u843d\u3092\u5206\u5272",ko:"\uae34 \ub2e8\ub77d \ub098\ub204\uae30",tr:"Uzun Paragraf\u0131 B\xf6l"},split_length:{zh:"\u5207\u5206\u957f\u5ea6 (0-10000)",en:"Segmentation length(0-10000)",zh_TW:"\u5207\u5206\u9577\u5ea6(0-10000)",ja:"\u5206\u5272\u9577(0-10000)",ko:"\ubd84\ud560 \uae38\uc774(0-10000)",tr:"Segmentasyon Uzunlu\u011fu (0-10000)"},highlight_words:{zh:"\u9ad8\u4eae\u6536\u85cf\u8bcd\u6c47",en:"Highlight favorite words",zh_TW:"\u9192\u76ee\u6a19\u793a\u6536\u85cf\u8a5e\u5f59",ja:"\u304a\u6c17\u306b\u5165\u308a\u5358\u8a9e\u3092\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\uc990\uaca8\ucc3e\ub294 \ub2e8\uc5b4 \ud558\uc774\ub77c\uc774\ud2b8",tr:"Favori Kelimeleri Vurgulay\u0131n"},split_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},split_textlength:{zh:"\u6309\u7167\u957f\u5ea6\u5207\u5206",en:"Split by length",zh_TW:"\u4f9d\u9577\u5ea6\u5207\u5206",ja:"\u9577\u3055\u3067\u5206\u5272",ko:"\uae38\uc774\ub85c \ub098\ub204\uae30",tr:"Uzunlu\u011fa G\xf6re B\xf6l\xfcnm\xfc\u015f"},split_punctuation:{zh:"\u6309\u7167\u53e5\u5b50\u5207\u5206",en:"Split by sentence",zh_TW:"\u6309\u7167\u53e5\u5b50\u5207\u5206",ja:"\u6587\u3067\u5206\u5272",ko:"\ubb38\uc7a5\uc73c\ub85c \ub098\ub204\uae30",tr:"C\xfcmleye G\xf6re B\xf6l\xfcnm\xfc\u015f"},highlight_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},highlight_beforetrans:{zh:"\u7ffb\u8bd1\u524d\u9ad8\u4eae",en:"Highlight before translation",zh_TW:"\u7ffb\u8b6f\u524d\u9192\u76ee\u6a19\u793a",ja:"\u7ffb\u8a33\u524d\u306b\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\ubc88\uc5ed \uc804 \ud558\uc774\ub77c\uc774\ud2b8",tr:"\xc7eviriden \xd6nce Vurgula"},highlight_aftertrans:{zh:"\u7ffb\u8bd1\u540e\u9ad8\u4eae",en:"Highlight after translation",zh_TW:"\u7ffb\u8b6f\u5f8c\u9192\u76ee\u6a19\u793a",ja:"\u7ffb\u8a33\u5f8c\u306b\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\ubc88\uc5ed \ud6c4 \ud558\uc774\ub77c\uc774\ud2b8",tr:"\xc7eviriden Sonra Vurgula"},pagescroll_root_margin:{zh:"\u6eda\u52a8\u52a0\u8f7d\u63d0\u524d\u89e6\u53d1 (0-10000px)",en:"Early triggering of scroll loading (0-10000px)",zh_TW:"\u6efe\u52d5\u8f09\u5165\u63d0\u524d\u89f8\u767c (0-10000px)",ja:"\u30b9\u30af\u30ed\u30fc\u30eb\u8aad\u307f\u8fbc\u307f\u306e\u4e8b\u524d\u30c8\u30ea\u30ac\u30fc (0-10000px)",ko:"\uc2a4\ud06c\ub864 \ub85c\ub529 \ubbf8\ub9ac \ud2b8\ub9ac\uac70 (0-10000px)",tr:"Kayd\u0131rma Y\xfcklemesinin Erken Tetiklenmesi (0-10000 Piksel)"},styles_setting:{zh:"\u6837\u5f0f\u8bbe\u7f6e",en:"Style Setting",zh_TW:"\u6a23\u5f0f\u8a2d\u5b9a",ja:"\u30b9\u30bf\u30a4\u30eb\u8a2d\u5b9a",ko:"\uc2a4\ud0c0\uc77c \uc124\uc815",tr:"Stil Ayar\u0131"},style_name:{zh:"\u6837\u5f0f\u540d\u79f0",en:"Style Name",zh_TW:"\u6a23\u5f0f\u540d\u7a31",ja:"\u30b9\u30bf\u30a4\u30eb\u540d",ko:"\uc2a4\ud0c0\uc77c \uc774\ub984",tr:"Stil Ad\u0131"},style_code:{zh:"\u6837\u5f0f\u4ee3\u7801",en:"Style Code",zh_TW:"\u6a23\u5f0f\u7a0b\u5f0f\u78bc",ja:"\u30b9\u30bf\u30a4\u30eb\u30b3\u30fc\u30c9",ko:"\uc2a4\ud0c0\uc77c \ucf54\ub4dc",tr:"Stil Kodu"},long_sentence_threshold:{zh:"\u89c4\u5219\u65ad\u53e5\u9608\u503c (20-300\u5b57\u7b26)",en:"Rule-based segmentation threshold (20-300 chars)",zh_TW:"\u898f\u5247\u65b7\u53e5\u95be\u503c (20-300 \u5b57\u5143)",ja:"\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u5206\u5272\u95be\u5024 (20-300\u6587\u5b57)",ko:"\uaddc\uce59 \uae30\ubc18 \ubd84\ud560 \uc784\uacc4\uac12 (20-300\uc790)",tr:"Kural Tabanl\u0131 Segmentasyon E\u015fi\u011fi (20-300 Karakter)"},pre_trans_seconds:{zh:"\u63d0\u524d\u7ffb\u8bd1\u65f6\u957f (10-36000s)",en:"Pre translation seconds (10-36000s)",zh_TW:"\u63d0\u524d\u7ffb\u8b6f\u6642\u9577 (10-36000s)",ja:"\u4e8b\u524d\u7ffb\u8a33\u6642\u9593 (10-36000s)",ko:"\ubbf8\ub9ac \ubc88\uc5ed \uc2dc\uac04 (10-36000s)",tr:"\xc7eviri \xd6ncesi Saniye (10-36000s)"},throttle_trans_interval:{zh:"\u8282\u6d41\u7ffb\u8bd1\u95f4\u9694 (1-3600s)",en:"Throttling translation interval (1-3600s)",zh_TW:"\u7bc0\u6d41\u7ffb\u8b6f\u9593\u9694 (1-3600s)",ja:"\u7ffb\u8a33\u9593\u9694\u306e\u30b9\u30ed\u30c3\u30c8\u30ea\u30f3\u30b0 (1-3600s)",ko:"\ubc88\uc5ed \uac04\uaca9 \uc870\uc808 (1-3600s)",tr:"\xc7eviri Aral\u0131\u011f\u0131n\u0131 Daraltma (1-3600s)"},subtitle_same_lang:{zh:"\u539f\u8bed\u8a00\u4e0e\u76ee\u6807\u8bed\u8a00\u76f8\u540c\uff0c\u5b57\u5e55\u4e0d\u4e88\u5904\u7406",en:"The source language is the same as the target language, subtitles will not be processed",zh_TW:"\u539f\u8a9e\u8a00\u8207\u76ee\u6a19\u8a9e\u8a00\u76f8\u540c\u6642\uff0c\u5b57\u5e55\u4e0d\u4e88\u8655\u7406",ja:"\u539f\u8a00\u8a9e\u3068\u76ee\u6a19\u8a00\u8a9e\u304c\u540c\u3058\u5834\u5408\u3001\u5b57\u5e55\u306f\u51e6\u7406\u3055\u308c\u307e\u305b\u3093",ko:"\uc6d0\ubcf8 \uc5b8\uc5b4\uc640 \ub300\uc0c1 \uc5b8\uc5b4\uac00 \ub3d9\uc77c\ud55c \uacbd\uc6b0, \uc790\ub9c9\uc740 \ucc98\ub9ac\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4",tr:"Kaynak Dil Hedef Dil \u0130le Ayn\u0131"},plain_text_translate:{zh:"\u7eaf\u6587\u672c\u7ffb\u8bd1",en:"Plain text translation",zh_TW:"\u7d14\u6587\u5b57\u7ffb\u8b6f",ja:"\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33",ko:"\uc21c\uc218 \ud14d\uc2a4\ud2b8 \ubc88\uc5ed",tr:"D\xfcz Metin \xc7evirisi"},is_enable_enhance:{zh:"\u542f\u7528\u589e\u5f3a\u529f\u80fd",en:"Enable Enhancement Features",zh_TW:"\u555f\u7528\u589e\u5f37\u529f\u80fd",ja:"\u5f37\u5316\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ud5a5\uc0c1 \uae30\ub2a5 \ud65c\uc131\ud654",tr:"Geli\u015fmi\u015f \xd6zellikleri Etkinle\u015ftir"},open_separate_window:{zh:"\u72ec\u7acb\u7a97\u53e3\u6253\u5f00",en:"Open in Separate Window",zh_TW:"\u5728\u7368\u7acb\u8996\u7a97\u4e2d\u958b\u555f",ja:"\u5225\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u958b\u304f",ko:"\ubcc4\ub3c4 \ucc3d\uc5d0\uc11c \uc5f4\uae30",tr:"Ayr\u0131 Pencerede A\xe7"},comment_support:{zh:"\u597d\u8bc4\u652f\u6301",en:"Leave a Positive Review",zh_TW:"\u597d\u8a55\u652f\u6301",ja:"\u9ad8\u8a55\u4fa1\u3067\u5fdc\u63f4",ko:"\uc88b\uc740 \ud3c9\uac00\ub85c \uc751\uc6d0",tr:"Olumlu Bir \u0130nceleme B\u0131rak\u0131n"},appreciate_support:{zh:"\u8d5e\u8d4f\u652f\u6301",en:"Support with a Tip",zh_TW:"\u8d0a\u8cde\u652f\u6301",ja:"\u6295\u3052\u92ad\u3067\u5fdc\u63f4",ko:"\ud6c4\uc6d0\ud558\uae30",tr:"Bir Ba\u011f\u0131\u015f \u0130le Destek Ol"},toggle_transbox:{zh:"\u5207\u6362\u7ffb\u8bd1\u7a97",en:"Toggle Translation Box",zh_TW:"\u5207\u63db\u7ffb\u8b6f\u8996\u7a97",ja:"\u7ffb\u8a33\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u5207\u308a\u66ff\u3048",ko:"\ubc88\uc5ed \ucc3d \uc804\ud658",tr:"\xc7eviri Kutusunu De\u011fi\u015ftir"},copy:{zh:"\u590d\u5236",en:"Copy",zh_TW:"\u8907\u88fd",ja:"\u30b3\u30d4\u30fc",ko:"\ubcf5\uc0ac",tr:"Kopyala"},paste:{zh:"\u9ecf\u8d34",en:"Paste",zh_TW:"\u8cbc\u4e0a",ja:"\u8cbc\u308a\u4ed8\u3051",ko:"\ubd99\uc5ec\ub123\uae30",tr:"Yap\u0131\u015ft\u0131r"},submit:{zh:"\u63d0\u4ea4",en:"Submit",zh_TW:"\u63d0\u4ea4",ja:"\u9001\u4fe1",ko:"\uc81c\ucd9c",tr:"G\xf6nder"},collect:{zh:"\u6536\u85cf",en:"Save",zh_TW:"\u6536\u85cf",ja:"\u4fdd\u5b58",ko:"\uc800\uc7a5",tr:"Kaydet"},show_translation_dot:{zh:"\u663e\u793a\u7ffb\u8bd1\u5706\u70b9",en:"Show Translation Dot",zh_TW:"\u986f\u793a\u7ffb\u8b6f\u5713\u9ede",ja:"\u7ffb\u8a33\u30c9\u30c3\u30c8\u3092\u8868\u793a",ko:"\ubc88\uc5ed \uc810 \ud45c\uc2dc",tr:"\xc7eviri Noktas\u0131n\u0131 G\xf6ster"},show_dot_mobile:{zh:"\u4ec5\u79fb\u52a8\u7aef",en:"Mobile Only",zh_TW:"\u50c5\u9650\u884c\u52d5\u88dd\u7f6e",ja:"\u30e2\u30d0\u30a4\u30eb\u306e\u307f",ko:"\ubaa8\ubc14\uc77c \uc804\uc6a9",tr:"Yaln\u0131zca Mobil"},show_dot_always:{zh:"\u603b\u662f\u663e\u793a",en:"Always",zh_TW:"\u7e3d\u662f\u986f\u793a",ja:"\u5e38\u306b\u8868\u793a",ko:"\ud56d\uc0c1 \ud45c\uc2dc",tr:"Her Zaman"},show_dot_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\uc0ac\uc6a9 \uc548 \ud568",tr:"Devre D\u0131\u015f\u0131"},rule_disabled:{zh:"\u89c4\u5219\u5df2\u7981\u7528",en:"Rule Disabled",zh_TW:"\u898f\u5247\u5df2\u505c\u7528",ja:"\u30eb\u30fc\u30eb\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059",ko:"\uaddc\uce59\uc774 \ube44\ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4",tr:"Kural Devre D\u0131\u015f\u0131"},rule_enabled:{zh:"\u89c4\u5219\u5df2\u542f\u7528",en:"Rule Enabled",zh_TW:"\u898f\u5247\u5df2\u555f\u7528",ja:"\u30eb\u30fc\u30eb\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059",ko:"\uaddc\uce59\uc774 \ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4",tr:"Kural Etkin"},rule_toggle_failed:{zh:"\u89c4\u5219\u5207\u6362\u5931\u8d25",en:"Failed to toggle rule",zh_TW:"\u898f\u5247\u5207\u63db\u5931\u6557",ja:"\u30eb\u30fc\u30eb\u306e\u5207\u308a\u66ff\u3048\u306b\u5931\u6557\u3057\u307e\u3057\u305f",ko:"\uaddc\uce59 \uc804\ud658 \uc2e4\ud328",tr:"Kural De\u011fi\u015ftirilemedi"},seg_trans_diff_warning:{zh:"\u65ad\u53e5\u548c\u7ffb\u8bd1\u670d\u52a1\u4e0d\u540c\uff0c\u7ffb\u8bd1\u5f15\u64ce\u4f1a\u91cd\u590d\u7ffb\u8bd1\u5b57\u5e55",en:"Segmentation and translation engines differ; subtitles will be re-translated.",zh_TW:"\u65b7\u53e5\u548c\u7ffb\u8b6f\u670d\u52d9\u4e0d\u540c\uff0c\u7ffb\u8b6f\u5f15\u64ce\u6703\u91cd\u8907\u7ffb\u8b6f\u5b57\u5e55",ja:"\u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u7ffb\u8a33\u30a8\u30f3\u30b8\u30f3\u304c\u7570\u306a\u308a\u307e\u3059\u3002\u5b57\u5e55\u306f\u518d\u7ffb\u8a33\u3055\u308c\u307e\u3059\u3002",ko:"\ubd84\ud560\uacfc \ubc88\uc5ed \uc5d4\uc9c4\uc774 \ub2e4\ub985\ub2c8\ub2e4. \uc790\ub9c9\uc774 \ub2e4\uc2dc \ubc88\uc5ed\ub429\ub2c8\ub2e4.",tr:"Segmentasyon ve \xe7eviri motorlar\u0131 farkl\u0131d\u0131r; altyaz\u0131lar yeniden \xe7evrilecektir."},subtitle_style_preview:{zh:"\u6837\u5f0f\u9884\u89c8",en:"Style Preview",zh_TW:"\u6a23\u5f0f\u9810\u89bd",ja:"\u30b9\u30bf\u30a4\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc",ko:"\uc2a4\ud0c0\uc77c \ubbf8\ub9ac\ubcf4\uae30",tr:"Stil \xd6nizlemesi"},subtitle_preview_sample:{zh:"\u8fd9\u662f\u793a\u4f8b\u5b57\u5e55\u6587\u672c",en:"This is an example subtitle",zh_TW:"\u9019\u662f\u7bc4\u4f8b\u5b57\u5e55\u6587\u5b57",ja:"\u3053\u308c\u306f\u30b5\u30f3\u30d7\u30eb\u5b57\u5e55\u30c6\u30ad\u30b9\u30c8\u3067\u3059",ko:"\uc608\uc2dc \uc790\ub9c9 \ud14d\uc2a4\ud2b8\uc785\ub2c8\ub2e4",tr:"Bu Bir \xd6rnek Altyaz\u0131d\u0131r"},font_size:{zh:"\u5b57\u4f53\u5927\u5c0f",en:"Font Size",zh_TW:"\u5b57\u9ad4\u5927\u5c0f",ja:"\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba",ko:"\uae00\uaf34 \ud06c\uae30",tr:"Yaz\u0131 Tipi Boyutu"},font_color:{zh:"\u5b57\u4f53\u989c\u8272",en:"Font Color",zh_TW:"\u5b57\u9ad4\u984f\u8272",ja:"\u30d5\u30a9\u30f3\u30c8\u306e\u8272",ko:"\uae00\uaf34 \uc0c9\uc0c1",tr:"Yaz\u0131 Tipi Rengi"},background_color:{zh:"\u80cc\u666f\u989c\u8272",en:"Background Color",zh_TW:"\u80cc\u666f\u984f\u8272",ja:"\u80cc\u666f\u8272",ko:"\ubc30\uacbd\uc0c9",tr:"Arka Plan Rengi"},opacity:{zh:"\u900f\u660e\u5ea6",en:"Opacity",zh_TW:"\u900f\u660e\u5ea6",ja:"\u4e0d\u900f\u660e\u5ea6",ko:"\ubd88\ud22c\uba85\ub3c4",tr:"Opakl\u0131k"},line_height:{zh:"\u884c\u9ad8",en:"Line Height",zh_TW:"\u884c\u9ad8",ja:"\u884c\u306e\u9ad8\u3055",ko:"\uc904 \ub192\uc774",tr:"Sat\u0131r Y\xfcksekli\u011fi"},padding:{zh:"\u5185\u8fb9\u8ddd",en:"Padding",zh_TW:"\u5167\u908a\u8ddd",ja:"\u4f59\u767d",ko:"\uc548\ucabd \uc5ec\ubc31",tr:"Dolgu"},vertical:{zh:"\u4e0a\u4e0b",en:"Vertical",zh_TW:"\u4e0a\u4e0b",ja:"\u4e0a\u4e0b",ko:"\uc0c1\ud558",tr:"Dikey"},horizontal:{zh:"\u5de6\u53f3",en:"Horizontal",zh_TW:"\u5de6\u53f3",ja:"\u5de6\u53f3",ko:"\uc88c\uc6b0",tr:"Yatay"},text_shadow:{zh:"\u6587\u5b57\u9634\u5f71",en:"Text Shadow",zh_TW:"\u6587\u5b57\u9670\u5f71",ja:"\u30c6\u30ad\u30b9\u30c8\u306e\u5f71",ko:"\ud14d\uc2a4\ud2b8 \uadf8\ub9bc\uc790",tr:"Metin G\xf6lgesi"},advanced_css:{zh:"\u9ad8\u7ea7 CSS \u7f16\u8f91",en:"Advanced CSS",zh_TW:"\u9032\u968e CSS \u7de8\u8f2f",ja:"\u9ad8\u5ea6\u306a CSS \u7de8\u96c6",ko:"\uace0\uae09 CSS \ud3b8\uc9d1",tr:"Geli\u015fmi\u015f CSS"},close:{zh:"\u5173\u95ed",en:"Close",zh_TW:"\u95dc\u9589",ja:"\u9589\u3058\u308b",ko:"\ub2eb\uae30",tr:"Kapat"}}),"kiss-rules_v".concat(o[0],".json")),It="kiss-words.json",Lt=("kiss-rules-share_v".concat(o[0],".json"),"kiss-setting_v".concat(o[0],".json")),Ct="".concat(a,"_msauth"),Pt=("".concat(a,"_bdauth"),"".concat(a,"_setting"),"".concat(a,"_rules"),"".concat(a,"_setting_v").concat(o[0])),Nt="".concat(Pt,"_backup_v1_before_v2"),jt="".concat(a,"_rules_v").concat(o[0]),Ot="".concat(a,"_words"),Rt="".concat(a,"_sync"),Dt=("".concat(a,"_fab"),"".concat(a,"_tranbox")),Mt="".concat(a,"_separate_window"),Wt="".concat(a,"_rulescache_"),Bt=("".concat(a,"_disabled_sub_rules"),"".concat(a,"_cache")),Ft=604800,Ut=("https://".concat(s,"/translate"),"https://".concat(s,"/subtitle"),"https://".concat(s,"/detectlang"),"https://".concat(s,"/bingdict"),"https://".concat(s,"/dict"),"https://".concat(s,"/context"),"toggleTranslate"),Vt="toggleTranslateOnly",Gt="toggleStyle",Ht="openOptions",Kt="openTranbox",qt="toggleTranbox",Yt="kiss_fetch",Jt="get_httpcache",Xt="put_httpcache",$t="open_options",Zt="save_rule",Qt="toggle_translate",en="toggle_translate_only",tn="toggle_styles",nn="open_tranbox",rn="toggle_transbox",an="context_menus",sn="command_shortcuts",on="inject_js",ln="inject_css",cn="update_csp",un="builtinai_detect",hn="builtinai_translte",pn="set_loglevel",dn="clear_caches",fn="open_separate_window",mn="update_icon",gn="sha256",yn="firefox",_n="thunderbird",vn="firefox",bn=["chrome","edge",yn,_n].includes(vn);const kn=function(){try{return n(9286)}catch(e){}}(),Tn=()=>{const e=globalThis.__KISS_CONTEXT__;return e||"undefined"},An=()=>"background"===Tn();"LanguageDetector"in globalThis&&globalThis;const xn=(e,t)=>0===e.length||e.includes(t)?t:e[0],Sn=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,n=null;const r=function(){for(var r=arguments.length,i=new Array(r),a=0;a{e(...i),n=null},t)};return r.cancel=()=>{clearTimeout(n),n=null},r},wn=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;for(;nObject.prototype.toString.call(e).match(/\[object (.*?)\]/)[1].toLowerCase(),zn=async(e,t)=>{const n=(new TextEncoder).encode(e+t),r=await crypto.subtle.digest({name:"SHA-256"},n);return[...new Uint8Array(r)].map(e=>e.toString(16).padStart(2,"0")).join("")};function In(e,t){if(null==e)return{};var n,r,i=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r0&&void 0!==arguments[0]?arguments[0]:100,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;Object.defineProperty(this,Gn,{value:qn}),Object.defineProperty(this,Vn,{value:Kn}),Object.defineProperty(this,On,{writable:!0,value:[]}),Object.defineProperty(this,Rn,{writable:!0,value:2}),Object.defineProperty(this,Dn,{writable:!0,value:1e3}),Object.defineProperty(this,Mn,{writable:!0,value:void 0}),Object.defineProperty(this,Wn,{writable:!0,value:void 0}),Object.defineProperty(this,Bn,{writable:!0,value:0}),Object.defineProperty(this,Fn,{writable:!0,value:0}),Object.defineProperty(this,Un,{writable:!0,value:null}),Pn(this,Wn)[Wn]=e,Pn(this,Mn)[Mn]=t,Pn(this,Dn)[Dn]=n}push(e,t){return new Promise((n,r)=>{Pn(this,On)[On].push({fn:e,args:t,resolve:n,reject:r,retry:0}),Pn(this,Vn)[Vn]()})}update(e,t){e>=0&&(Pn(this,Wn)[Wn]=e),t>=1&&(Pn(this,Mn)[Mn]=t),Pn(this,Vn)[Vn]()}clear(){for(const e of Pn(this,On)[On])e.reject("the task pool was cleared");Pn(this,On)[On].length=0,Pn(this,Un)[Un]&&(clearTimeout(Pn(this,Un)[Un]),Pn(this,Un)[Un]=null)}}function Kn(){if(Pn(this,Un)[Un])return;if(Pn(this,Bn)[Bn]>=Pn(this,Mn)[Mn]||0===Pn(this,On)[On].length)return;const e=Date.now()-Pn(this,Fn)[Fn],t=Math.max(0,Pn(this,Wn)[Wn]-e);Pn(this,Un)[Un]=setTimeout(()=>{if(Pn(this,Un)[Un]=null,Pn(this,Bn)[Bn]0){const e=Pn(this,On)[On].shift();e&&(Pn(this,Fn)[Fn]=Date.now(),Pn(this,Gn)[Gn](e))}Pn(this,On)[On].length>0&&Pn(this,Vn)[Vn]()},t)}async function qn(e){Pn(this,Bn)[Bn]++;const{fn:t,args:n,resolve:r,reject:i,retry:a}=e;try{r(await t(n))}catch(s){rt("task pool",s),a{Pn(this,On)[On].unshift(p(p({},e),{},{retry:a+1})),Pn(this,Vn)[Vn]()},Pn(this,Dn)[Dn]):i(s)}finally{Pn(this,Bn)[Bn]--,Pn(this,Vn)[Vn]()}}let Yn;const Jn=(e,t)=>(Yn?e&&t&&Xn(e,t):Yn=new Hn(null!==e&&void 0!==e?e:100,null!==t&&void 0!==t?t:10),Yn),Xn=(e,t)=>{var n;null===(n=Yn)||void 0===n||n.update(e,t)},$n=async()=>{const e=await(async()=>{const[e]=await kn.tabs.query({active:!0,lastFocusedWindow:!0});return e})();return null===e||void 0===e?void 0:e.id},Zn=(e,t)=>null===kn||void 0===kn?void 0:kn.runtime.sendMessage({action:e,args:t}),Qn=async(e,t)=>{const n=await $n();if(n)return kn.tabs.sendMessage(n,{action:e,args:t}).catch(e=>{var t,n;if(!(null!==e&&void 0!==e&&null!==(t=e.message)&&void 0!==t&&t.includes("Could not establish connection")||null!==e&&void 0!==e&&null!==(n=e.message)&&void 0!==n&&n.includes("Receiving end does not exist")))throw e})},er=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e)throw new Error("Response object does not exist");if(!e.ok){const t={url:e.url,status:e.status,statusText:e.statusText};try{const n=await e.clone().text();try{t.response=JSON.parse(n)}catch(i){t.response=n}}catch(Oa){t.response="Unable to read error body"}throw new Error(JSON.stringify(t))}const n=e.headers.get("Content-Type")||"";if("blob"===t)return e.blob();if("text"===t)return e.text();if("json"===t)return e.json();if("audio"===t||n.includes("audio")||n.includes("image")||n.includes("video")){return(e=>new Promise(t=>{const n=new FileReader;n.onloadend=()=>t(n.result),n.readAsDataURL(e)}))(await e.blob())}if(n.includes("text/event-stream"))throw new Error("Received text/event-stream in a non-stream request. Use fetchStream instead.");const r=await e.text();if(!r)return null;try{return JSON.parse(r)}catch(a){return r}},tr=async()=>{try{bn&&!An()?await Zn(dn):await caches.delete(Bt)}catch(e){rt("clean caches",e)}},nr=async(e,t)=>{let n=new Request(e,t);if("GET"!==n.method){const e=await n.text(),t=new URL(n.url);t.pathname+=e,n=new Request(t.toString(),{method:"GET"})}return n},rr=async e=>{let{input:t,init:n,expect:r}=e;try{const e=await nr(t,n),i=await caches.open(Bt),a=await i.match(e);if(a){return await er(a,r)}}catch(i){rt("get cache",i)}return null},ir=async e=>{let{input:t,init:n,data:r,maxAge:i=Ft}=e;try{const e=await nr(t,n),a=await caches.open(Bt),s=new Response(JSON.stringify(r),{status:200,headers:{"Content-Type":"application/json","Cache-Control":"max-age=".concat(i)}});await a.put(e,s)}catch(a){rt("put cache",a)}},ar=(e,t)=>bn&&!An()?Zn(Jt,{input:e,init:t}):rr({input:e,init:t});var sr;!function(e){e[e.BACKSPACE=8]="BACKSPACE",e[e.FORM_FEED=12]="FORM_FEED",e[e.NEWLINE=10]="NEWLINE",e[e.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",e[e.TAB=9]="TAB",e[e.SPACE=32]="SPACE",e[e.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",e[e.QUOTATION_MARK=34]="QUOTATION_MARK",e[e.NUMBER_SIGN=35]="NUMBER_SIGN",e[e.DOLLAR_SIGN=36]="DOLLAR_SIGN",e[e.PERCENT_SIGN=37]="PERCENT_SIGN",e[e.AMPERSAND=38]="AMPERSAND",e[e.APOSTROPHE=39]="APOSTROPHE",e[e.LEFT_PARENTHESIS=40]="LEFT_PARENTHESIS",e[e.RIGHT_PARENTHESIS=41]="RIGHT_PARENTHESIS",e[e.ASTERISK=42]="ASTERISK",e[e.PLUS_SIGN=43]="PLUS_SIGN",e[e.COMMA=44]="COMMA",e[e.HYPHEN_MINUS=45]="HYPHEN_MINUS",e[e.FULL_STOP=46]="FULL_STOP",e[e.SOLIDUS=47]="SOLIDUS",e[e.DIGIT_ZERO=48]="DIGIT_ZERO",e[e.DIGIT_ONE=49]="DIGIT_ONE",e[e.DIGIT_TWO=50]="DIGIT_TWO",e[e.DIGIT_THREE=51]="DIGIT_THREE",e[e.DIGIT_FOUR=52]="DIGIT_FOUR",e[e.DIGIT_FIVE=53]="DIGIT_FIVE",e[e.DIGIT_SIX=54]="DIGIT_SIX",e[e.DIGIT_SEVEN=55]="DIGIT_SEVEN",e[e.DIGIT_EIGHT=56]="DIGIT_EIGHT",e[e.DIGIT_NINE=57]="DIGIT_NINE",e[e.COLON=58]="COLON",e[e.SEMICOLON=59]="SEMICOLON",e[e.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",e[e.EQUALS_SIGN=61]="EQUALS_SIGN",e[e.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",e[e.QUESTION_MARK=63]="QUESTION_MARK",e[e.COMMERCIAL_AT=64]="COMMERCIAL_AT",e[e.LATIN_CAPITAL_LETTER_A=65]="LATIN_CAPITAL_LETTER_A",e[e.LATIN_CAPITAL_LETTER_B=66]="LATIN_CAPITAL_LETTER_B",e[e.LATIN_CAPITAL_LETTER_C=67]="LATIN_CAPITAL_LETTER_C",e[e.LATIN_CAPITAL_LETTER_D=68]="LATIN_CAPITAL_LETTER_D",e[e.LATIN_CAPITAL_LETTER_E=69]="LATIN_CAPITAL_LETTER_E",e[e.LATIN_CAPITAL_LETTER_F=70]="LATIN_CAPITAL_LETTER_F",e[e.LATIN_CAPITAL_LETTER_G=71]="LATIN_CAPITAL_LETTER_G",e[e.LATIN_CAPITAL_LETTER_H=72]="LATIN_CAPITAL_LETTER_H",e[e.LATIN_CAPITAL_LETTER_I=73]="LATIN_CAPITAL_LETTER_I",e[e.LATIN_CAPITAL_LETTER_J=74]="LATIN_CAPITAL_LETTER_J",e[e.LATIN_CAPITAL_LETTER_K=75]="LATIN_CAPITAL_LETTER_K",e[e.LATIN_CAPITAL_LETTER_L=76]="LATIN_CAPITAL_LETTER_L",e[e.LATIN_CAPITAL_LETTER_M=77]="LATIN_CAPITAL_LETTER_M",e[e.LATIN_CAPITAL_LETTER_N=78]="LATIN_CAPITAL_LETTER_N",e[e.LATIN_CAPITAL_LETTER_O=79]="LATIN_CAPITAL_LETTER_O",e[e.LATIN_CAPITAL_LETTER_P=80]="LATIN_CAPITAL_LETTER_P",e[e.LATIN_CAPITAL_LETTER_Q=81]="LATIN_CAPITAL_LETTER_Q",e[e.LATIN_CAPITAL_LETTER_R=82]="LATIN_CAPITAL_LETTER_R",e[e.LATIN_CAPITAL_LETTER_S=83]="LATIN_CAPITAL_LETTER_S",e[e.LATIN_CAPITAL_LETTER_T=84]="LATIN_CAPITAL_LETTER_T",e[e.LATIN_CAPITAL_LETTER_U=85]="LATIN_CAPITAL_LETTER_U",e[e.LATIN_CAPITAL_LETTER_V=86]="LATIN_CAPITAL_LETTER_V",e[e.LATIN_CAPITAL_LETTER_W=87]="LATIN_CAPITAL_LETTER_W",e[e.LATIN_CAPITAL_LETTER_X=88]="LATIN_CAPITAL_LETTER_X",e[e.LATIN_CAPITAL_LETTER_Y=89]="LATIN_CAPITAL_LETTER_Y",e[e.LATIN_CAPITAL_LETTER_Z=90]="LATIN_CAPITAL_LETTER_Z",e[e.LEFT_SQUARE_BRACKET=91]="LEFT_SQUARE_BRACKET",e[e.REVERSE_SOLIDUS=92]="REVERSE_SOLIDUS",e[e.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",e[e.CIRCUMFLEX_ACCENT=94]="CIRCUMFLEX_ACCENT",e[e.LOW_LINE=95]="LOW_LINE",e[e.GRAVE_ACCENT=96]="GRAVE_ACCENT",e[e.LATIN_SMALL_LETTER_A=97]="LATIN_SMALL_LETTER_A",e[e.LATIN_SMALL_LETTER_B=98]="LATIN_SMALL_LETTER_B",e[e.LATIN_SMALL_LETTER_C=99]="LATIN_SMALL_LETTER_C",e[e.LATIN_SMALL_LETTER_D=100]="LATIN_SMALL_LETTER_D",e[e.LATIN_SMALL_LETTER_E=101]="LATIN_SMALL_LETTER_E",e[e.LATIN_SMALL_LETTER_F=102]="LATIN_SMALL_LETTER_F",e[e.LATIN_SMALL_LETTER_G=103]="LATIN_SMALL_LETTER_G",e[e.LATIN_SMALL_LETTER_H=104]="LATIN_SMALL_LETTER_H",e[e.LATIN_SMALL_LETTER_I=105]="LATIN_SMALL_LETTER_I",e[e.LATIN_SMALL_LETTER_J=106]="LATIN_SMALL_LETTER_J",e[e.LATIN_SMALL_LETTER_K=107]="LATIN_SMALL_LETTER_K",e[e.LATIN_SMALL_LETTER_L=108]="LATIN_SMALL_LETTER_L",e[e.LATIN_SMALL_LETTER_M=109]="LATIN_SMALL_LETTER_M",e[e.LATIN_SMALL_LETTER_N=110]="LATIN_SMALL_LETTER_N",e[e.LATIN_SMALL_LETTER_O=111]="LATIN_SMALL_LETTER_O",e[e.LATIN_SMALL_LETTER_P=112]="LATIN_SMALL_LETTER_P",e[e.LATIN_SMALL_LETTER_Q=113]="LATIN_SMALL_LETTER_Q",e[e.LATIN_SMALL_LETTER_R=114]="LATIN_SMALL_LETTER_R",e[e.LATIN_SMALL_LETTER_S=115]="LATIN_SMALL_LETTER_S",e[e.LATIN_SMALL_LETTER_T=116]="LATIN_SMALL_LETTER_T",e[e.LATIN_SMALL_LETTER_U=117]="LATIN_SMALL_LETTER_U",e[e.LATIN_SMALL_LETTER_V=118]="LATIN_SMALL_LETTER_V",e[e.LATIN_SMALL_LETTER_W=119]="LATIN_SMALL_LETTER_W",e[e.LATIN_SMALL_LETTER_X=120]="LATIN_SMALL_LETTER_X",e[e.LATIN_SMALL_LETTER_Y=121]="LATIN_SMALL_LETTER_Y",e[e.LATIN_SMALL_LETTER_Z=122]="LATIN_SMALL_LETTER_Z",e[e.LEFT_CURLY_BRACKET=123]="LEFT_CURLY_BRACKET",e[e.VERTICAL_LINE=124]="VERTICAL_LINE",e[e.RIGHT_CURLY_BRACKET=125]="RIGHT_CURLY_BRACKET",e[e.TILDE=126]="TILDE"}(sr||(sr={}));sr.QUOTATION_MARK,sr.QUOTATION_MARK,sr.REVERSE_SOLIDUS,sr.REVERSE_SOLIDUS,sr.SOLIDUS,sr.SOLIDUS,sr.LATIN_SMALL_LETTER_B,sr.BACKSPACE,sr.LATIN_SMALL_LETTER_F,sr.FORM_FEED,sr.LATIN_SMALL_LETTER_N,sr.NEWLINE,sr.LATIN_SMALL_LETTER_R,sr.CARRIAGE_RETURN,sr.LATIN_SMALL_LETTER_T,sr.TAB;var or;!function(e){e[e.LEFT_BRACE=0]="LEFT_BRACE",e[e.RIGHT_BRACE=1]="RIGHT_BRACE",e[e.LEFT_BRACKET=2]="LEFT_BRACKET",e[e.RIGHT_BRACKET=3]="RIGHT_BRACKET",e[e.COLON=4]="COLON",e[e.COMMA=5]="COMMA",e[e.TRUE=6]="TRUE",e[e.FALSE=7]="FALSE",e[e.NULL=8]="NULL",e[e.STRING=9]="STRING",e[e.NUMBER=10]="NUMBER",e[e.SEPARATOR=11]="SEPARATOR"}(or||(or={}));var lr;!function(e){e[e.START=0]="START",e[e.ENDED=1]="ENDED",e[e.ERROR=2]="ERROR",e[e.TRUE1=3]="TRUE1",e[e.TRUE2=4]="TRUE2",e[e.TRUE3=5]="TRUE3",e[e.FALSE1=6]="FALSE1",e[e.FALSE2=7]="FALSE2",e[e.FALSE3=8]="FALSE3",e[e.FALSE4=9]="FALSE4",e[e.NULL1=10]="NULL1",e[e.NULL2=11]="NULL2",e[e.NULL3=12]="NULL3",e[e.STRING_DEFAULT=13]="STRING_DEFAULT",e[e.STRING_AFTER_BACKSLASH=14]="STRING_AFTER_BACKSLASH",e[e.STRING_UNICODE_DIGIT_1=15]="STRING_UNICODE_DIGIT_1",e[e.STRING_UNICODE_DIGIT_2=16]="STRING_UNICODE_DIGIT_2",e[e.STRING_UNICODE_DIGIT_3=17]="STRING_UNICODE_DIGIT_3",e[e.STRING_UNICODE_DIGIT_4=18]="STRING_UNICODE_DIGIT_4",e[e.STRING_INCOMPLETE_CHAR=19]="STRING_INCOMPLETE_CHAR",e[e.NUMBER_AFTER_INITIAL_MINUS=20]="NUMBER_AFTER_INITIAL_MINUS",e[e.NUMBER_AFTER_INITIAL_ZERO=21]="NUMBER_AFTER_INITIAL_ZERO",e[e.NUMBER_AFTER_INITIAL_NON_ZERO=22]="NUMBER_AFTER_INITIAL_NON_ZERO",e[e.NUMBER_AFTER_FULL_STOP=23]="NUMBER_AFTER_FULL_STOP",e[e.NUMBER_AFTER_DECIMAL=24]="NUMBER_AFTER_DECIMAL",e[e.NUMBER_AFTER_E=25]="NUMBER_AFTER_E",e[e.NUMBER_AFTER_E_AND_SIGN=26]="NUMBER_AFTER_E_AND_SIGN",e[e.NUMBER_AFTER_E_AND_DIGIT=27]="NUMBER_AFTER_E_AND_DIGIT",e[e.SEPARATOR=28]="SEPARATOR",e[e.BOM_OR_START=29]="BOM_OR_START",e[e.BOM=30]="BOM"}(lr||(lr={}));Error;var cr,ur;!function(e){e[e.OBJECT=0]="OBJECT",e[e.ARRAY=1]="ARRAY"}(cr||(cr={})),function(e){e[e.VALUE=0]="VALUE",e[e.KEY=1]="KEY",e[e.COLON=2]="COLON",e[e.COMMA=3]="COMMA",e[e.ENDED=4]="ENDED",e[e.ERROR=5]="ERROR",e[e.SEPARATOR=6]="SEPARATOR"}(ur||(ur={}));Error;const hr=["fn","msg"],pr=e=>{const t=e||30;return t>600?t:1e3*t},dr=function(){var e;const t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).filter(Boolean);if(0===t.length)return;if(1===t.length)return t[0];if(null!==(e=AbortSignal)&&void 0!==e&&e.any)return AbortSignal.any(t);const n=new AbortController,r=e=>{n.signal.aborted||n.abort(null===e||void 0===e?void 0:e.reason)};for(const i of t){if(i.aborted){r(i);break}i.addEventListener("abort",()=>r(i),{once:!0})}return n.signal},fr=e=>{var t;return null!==(t=AbortSignal)&&void 0!==t&&t.timeout&&e?AbortSignal.timeout(e):void 0},mr=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const r=await async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=null===e||void 0===e?void 0:e.httpTimeout;if(!t)try{var n;t=null===(n=await Cr())||void 0===n?void 0:n.httpTimeout}catch(r){rt("getSettingWithDefault",r)}return pr(t)}(n),i=dr([t.signal,null===n||void 0===n?void 0:n.signal,fr(r)]),a=p(p({},t),{},{signal:i});return fetch(e,a)},gr=async e=>{let{input:t,init:n,opts:r={}}=e;const i=await mr(t,n,r);return er(i,r.expect)},yr=e=>{let{fn:t,msg:n=Yt}=e,r=In(e,hr);if(bn&&!An()){var i;const e=null===(i=r.opts)||void 0===i?void 0:i.signal,t=p(p({},r),{},{opts:p(p({},r.opts),{},{signal:void 0})}),a=Zn(n,t);if(e){const t=new Promise((t,n)=>{e.aborted?n(new DOMException("The operation was aborted.","AbortError")):e.addEventListener("abort",()=>n(new DOMException("The operation was aborted.","AbortError")),{once:!0})});return Promise.race([a,t])}return a}return t(p({},r))};function _r(e){return new Ln(e,0)}function vr(e){return br.apply(this,arguments)}function br(){return br=function(e){return function(){return new Cn(e.apply(this,arguments))}}(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){const r="number"===typeof n?{httpTimeout:n}:n||{},i=pr(r.httpTimeout),a=dr([t.signal,r.signal,fr(i)]),s=yield _r(fetch(e,p(p({},t),{},{signal:a})));if(!s.ok)throw new Error("HTTP error! status: ".concat(s.status));const o=s.body.getReader(),l=new TextDecoder,c=(()=>{let e="";return function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return function*(){e+=t,e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n");let n=e.indexOf("\n\n");for(;-1!==n;){const t=e.slice(0,n);e=e.slice(n+2);const r=[];for(const e of t.split("\n")){if(e.startsWith(":"))continue;if(!e.startsWith("data:"))continue;let t=e.slice(5);t.startsWith(" ")&&(t=t.slice(1)),r.push(t)}if(r.length){const e=r.join("\n");"[DONE]"!==e.trim()&&(yield e)}n=e.indexOf("\n\n")}}()}})();try{for(;;){const{done:e,value:t}=yield _r(o.read());if(e)break;for(const n of c(l.decode(t,{stream:!0})))yield n}}finally{var u;yield _r(null===(u=o.cancel)||void 0===u?void 0:u.call(o))}}()}),br.apply(this,arguments)}const kr=["useCache","usePool","fetchInterval","fetchLimit"],Tr=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{useCache:r,usePool:i,fetchInterval:a,fetchLimit:s}=n,o=In(n,kr);if(null===e||void 0===e||!e.trim())throw new Error("URL is empty");if(r){const n=await ar(e,t);if(n)return n}if(i){return Jn(a,s).push(yr,{fn:gr,input:e,init:t,opts:o})}return yr({fn:gr,input:e,init:t,opts:o})};new Set(["onload","onerror","onabort","ontimeout"]),new Map;async function Ar(e,t){bn?await kn.storage.local.set({[e]:t}):window.localStorage.setItem(e,t)}async function xr(e){if(bn){return(await kn.storage.local.get([e]))[e]}return window.localStorage.getItem(e)}async function Sr(e,t){await Ar(e,JSON.stringify(t))}async function wr(e,t){await xr(e)||await Sr(e,t)}async function Er(e){const t=await xr(e);if(null===t||void 0===t)return null;try{return JSON.parse(t)}catch(n){rt("parse json in storage err: ",e)}return null}async function zr(e,t){var n;const r=null!==(n=await Er(e))&&void 0!==n?n:{};await Sr(e,p(p({},r),t))}const Ir=()=>Er(Pt),Lr=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return Ze(e)>=2?e:(await(e=>Sr(Nt,e))(t),Qe(e))},Cr=async()=>{const e=await Ir();if(!e)return bt;return(e=>{var t;return p(p(p({},bt),e||{}),{},{tranboxSetting:p(p({},gt),(null===e||void 0===e?void 0:e.tranboxSetting)||{}),version:null!==(t=null===e||void 0===e?void 0:e.version)&&void 0!==t?t:bt.version})})(Ze(e)<3?et(e):e)},Pr=async e=>Sr(Pt,e),Nr=async()=>await Er(jt)||xe,jr=e=>Sr(jt,e),Or=async()=>await Er(Ot)||{},Rr=(Sn(e=>zr(Dt,e),300),async()=>await Er(Rt)||pt),Dr=e=>zr(Rt,e),Mr=(Sn(async e=>{const{syncMeta:t={}}=await Rr();t[e]=p(p({},t[e]||{}),{},{updateAt:Date.now()}),await Dr({syncMeta:t})},300),"%[a-f0-9]{2}"),Wr=new RegExp("("+Mr+")|([^%]+?)","gi"),Br=new RegExp("("+Mr+")+","gi");function Fr(e,t){try{return[decodeURIComponent(e.join(""))]}catch(i){}if(1===e.length)return e;t=t||1;const n=e.slice(0,t),r=e.slice(t);return Array.prototype.concat.call([],Fr(n),Fr(r))}function Ur(e){try{return decodeURIComponent(e)}catch(t){let n=e.match(Wr)||[];for(let r=1;rnull===e||void 0===e,qr=e=>encodeURIComponent(e).replace(/[!'()*]/g,e=>"%".concat(e.charCodeAt(0).toString(16).toUpperCase())),Yr=Symbol("encodeFragmentIdentifier");function Jr(e){if("string"!==typeof e||1!==e.length)throw new TypeError("arrayFormatSeparator must be single character string")}function Xr(e,t){return t.encode?t.strict?qr(e):encodeURIComponent(e):e}function $r(e,t){return t.decode?Vr(e):e}function Zr(e){return Array.isArray(e)?e.sort():"object"===typeof e?Zr(Object.keys(e)).sort((e,t)=>Number(e)-Number(t)).map(t=>e[t]):e}function Qr(e){const t=e.indexOf("#");return-1!==t&&(e=e.slice(0,t)),e}function ei(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&"string"===typeof e&&""!==e.trim()?e=Number(e):!t.parseBooleans||null===e||"true"!==e.toLowerCase()&&"false"!==e.toLowerCase()||(e="true"===e.toLowerCase()),e}function ti(e){const t=(e=Qr(e)).indexOf("?");return-1===t?"":e.slice(t+1)}function ni(e,t){Jr((t=p({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},t)).arrayFormatSeparator);const n=function(e){let t;switch(e.arrayFormat){case"index":return(e,n,r)=>{t=/\[(\d*)]$/.exec(e),e=e.replace(/\[\d*]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return(e,n,r)=>{t=/(\[])$/.exec(e),e=e.replace(/\[]$/,""),t?void 0!==r[e]?r[e]=[...r[e],n]:r[e]=[n]:r[e]=n};case"colon-list-separator":return(e,n,r)=>{t=/(:list)$/.exec(e),e=e.replace(/:list$/,""),t?void 0!==r[e]?r[e]=[...r[e],n]:r[e]=[n]:r[e]=n};case"comma":case"separator":return(t,n,r)=>{const i="string"===typeof n&&n.includes(e.arrayFormatSeparator),a="string"===typeof n&&!i&&$r(n,e).includes(e.arrayFormatSeparator);n=a?$r(n,e):n;const s=i||a?n.split(e.arrayFormatSeparator).map(t=>$r(t,e)):null===n?n:$r(n,e);r[t]=s};case"bracket-separator":return(t,n,r)=>{const i=/(\[])$/.test(t);if(t=t.replace(/\[]$/,""),!i)return void(r[t]=n?$r(n,e):n);const a=null===n?[]:n.split(e.arrayFormatSeparator).map(t=>$r(t,e));void 0!==r[t]?r[t]=[...r[t],...a]:r[t]=a};default:return(e,t,n)=>{void 0!==n[e]?n[e]=[...[n[e]].flat(),t]:n[e]=t}}}(t),r=Object.create(null);if("string"!==typeof e)return r;if(!(e=e.trim().replace(/^[?#&]/,"")))return r;for(const i of e.split("&")){if(""===i)continue;const e=t.decode?i.replace(/\+/g," "):i;let[a,s]=Gr(e,"=");void 0===a&&(a=e),s=void 0===s?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?s:$r(s,t),n($r(a,t),s,r)}for(const[i,a]of Object.entries(r))if("object"===typeof a&&null!==a)for(const[e,n]of Object.entries(a))a[e]=ei(n,t);else r[i]=ei(a,t);return!1===t.sort?r:(!0===t.sort?Object.keys(r).sort():Object.keys(r).sort(t.sort)).reduce((e,t)=>{const n=r[t];return e[t]=Boolean(n)&&"object"===typeof n&&!Array.isArray(n)?Zr(n):n,e},Object.create(null))}function ri(e,t){if(!e)return"";Jr((t=p({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},t)).arrayFormatSeparator);const n=n=>t.skipNull&&Kr(e[n])||t.skipEmptyString&&""===e[n],r=function(e){switch(e.arrayFormat){case"index":return t=>(n,r)=>{const i=n.length;return void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[Xr(t,e),"[",i,"]"].join("")]:[...n,[Xr(t,e),"[",Xr(i,e),"]=",Xr(r,e)].join("")]};case"bracket":return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[Xr(t,e),"[]"].join("")]:[...n,[Xr(t,e),"[]=",Xr(r,e)].join("")];case"colon-list-separator":return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[Xr(t,e),":list="].join("")]:[...n,[Xr(t,e),":list=",Xr(r,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t="bracket-separator"===e.arrayFormat?"[]=":"=";return n=>(r,i)=>void 0===i||e.skipNull&&null===i||e.skipEmptyString&&""===i?r:(i=null===i?"":i,0===r.length?[[Xr(n,e),t,Xr(i,e)].join("")]:[[r,Xr(i,e)].join(e.arrayFormatSeparator)])}default:return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,Xr(t,e)]:[...n,[Xr(t,e),"=",Xr(r,e)].join("")]}}(t),i={};for(const[s,o]of Object.entries(e))n(s)||(i[s]=o);const a=Object.keys(i);return!1!==t.sort&&a.sort(t.sort),a.map(n=>{const i=e[n];return void 0===i?"":null===i?Xr(n,t):Array.isArray(i)?0===i.length&&"bracket-separator"===t.arrayFormat?Xr(n,t)+"[]":i.reduce(r(n),[]).join("&"):Xr(n,t)+"="+Xr(i,t)}).filter(e=>e.length>0).join("&")}function ii(e,t){var n,r;t=p({decode:!0},t);let[i,a]=Gr(e,"#");return void 0===i&&(i=e),p({url:null!==(n=null===(r=i)||void 0===r||null===(r=r.split("?"))||void 0===r?void 0:r[0])&&void 0!==n?n:"",query:ni(ti(e),t)},t&&t.parseFragmentIdentifier&&a?{fragmentIdentifier:$r(a,t)}:{})}function ai(e,t){t=p({encode:!0,strict:!0,[Yr]:!0},t);const n=Qr(e.url).split("?")[0]||"";let r=ri(p(p({},ni(ti(e.url),{sort:!1})),e.query),t);r&&(r="?".concat(r));let i=function(e){let t="";const n=e.indexOf("#");return-1!==n&&(t=e.slice(n)),t}(e.url);if(e.fragmentIdentifier){const r=new URL(n);r.hash=e.fragmentIdentifier,i=t[Yr]?r.hash:"#".concat(e.fragmentIdentifier)}return"".concat(n).concat(r).concat(i)}function si(e,t,n){n=p({parseFragmentIdentifier:!0,[Yr]:!1},n);const{url:r,query:i,fragmentIdentifier:a}=ii(e,n);return ai({url:r,query:Hr(i,t),fragmentIdentifier:a},n)}function oi(e,t,n){return si(e,Array.isArray(t)?e=>!t.includes(e):(e,n)=>!t(e,n),n)}const li=e=>{try{return JSON.parse(atob(e.split(".")[1])).exp}catch(t){rt("parseMSToken",t)}return 0};(()=>{let e=null;const t=async()=>{try{const t=Date.now(),n=await Er(Ct);if(n){const e=1e3*li(n);if(e>t+1e3)return{token:n,expiresAt:e}}const r=await Ea();if(!r)throw new Error("Failed to fetch ms token");const i=1e3*li(r);return await(e=r,Sr(Ct,e)),{token:r,expiresAt:i}}catch(t){throw rt("get msauth failed",t),t}var e}})();Math.round(1e4*Math.random());var ci=n(7029);new(n.n(ci)())({ecmaVer:"latest",sourceType:"script",sandBox:!0});const{entries:ui,setPrototypeOf:hi,isFrozen:pi,getPrototypeOf:di,getOwnPropertyDescriptor:fi}=Object;let{freeze:mi,seal:gi,create:yi}=Object,{apply:_i,construct:vi}="undefined"!==typeof Reflect&&Reflect;mi||(mi=function(e){return e}),gi||(gi=function(e){return e}),_i||(_i=function(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i1?t-1:0),r=1;r1?n-1:0),i=1;i2&&void 0!==arguments[2]?arguments[2]:Si;hi&&hi(e,null);let r=t.length;for(;r--;){let i=t[r];if("string"===typeof i){const e=n(i);e!==i&&(pi(t)||(t[r]=e),i=e)}e[i]=!0}return e}function Di(e){for(let t=0;t/gm),Qi=gi(/\$\{[\w\W]*/gm),ea=gi(/^data-[\-\w.\u00B7-\uFFFF]+$/),ta=gi(/^aria-[\-\w]+$/),na=gi(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),ra=gi(/^(?:\w+script|data):/i),ia=gi(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),aa=gi(/^html$/i),sa=gi(/^[a-z][.\w]*(-[.\w]+)+$/i);var oa=Object.freeze({__proto__:null,ARIA_ATTR:ta,ATTR_WHITESPACE:ia,CUSTOM_ELEMENT:sa,DATA_ATTR:ea,DOCTYPE_NAME:aa,ERB_EXPR:Zi,IS_ALLOWED_URI:na,IS_SCRIPT_OR_DATA:ra,MUSTACHE_EXPR:$i,TMPLIT_EXPR:Qi});const la=1,ca=3,ua=7,ha=8,pa=9,da=function(){return"undefined"===typeof window?null:window};var fa=function e(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:da();const n=t=>e(t);if(n.version="3.4.0",n.removed=[],!t||!t.document||t.document.nodeType!==pa||!t.Element)return n.isSupported=!1,n;let{document:r}=t;const i=r,a=i.currentScript,{DocumentFragment:s,HTMLTemplateElement:o,Node:l,Element:c,NodeFilter:u,NamedNodeMap:h=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:p,DOMParser:d,trustedTypes:f}=t,m=c.prototype,g=Wi(m,"cloneNode"),y=Wi(m,"remove"),_=Wi(m,"nextSibling"),v=Wi(m,"childNodes"),b=Wi(m,"parentNode");if("function"===typeof o){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let k,T="";const{implementation:A,createNodeIterator:x,createDocumentFragment:S,getElementsByTagName:w}=r,{importNode:E}=i;let z={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};n.isSupported="function"===typeof ui&&"function"===typeof b&&A&&void 0!==A.createHTMLDocument;const{MUSTACHE_EXPR:I,ERB_EXPR:L,TMPLIT_EXPR:C,DATA_ATTR:P,ARIA_ATTR:N,IS_SCRIPT_OR_DATA:j,ATTR_WHITESPACE:O,CUSTOM_ELEMENT:R}=oa;let{IS_ALLOWED_URI:D}=oa,M=null;const W=Ri({},[...Bi,...Fi,...Ui,...Gi,...Ki]);let B=null;const F=Ri({},[...qi,...Yi,...Ji,...Xi]);let U=Object.seal(yi(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),V=null,G=null;const H=Object.seal(yi(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let K=!0,q=!0,Y=!1,J=!0,X=!1,$=!0,Z=!1,Q=!1,ee=!1,te=!1,ne=!1,re=!1,ie=!0,ae=!1,se=!0,oe=!1,le={},ce=null;const ue=Ri({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let he=null;const pe=Ri({},["audio","video","img","source","image","track"]);let de=null;const fe=Ri({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),me="http://www.w3.org/1998/Math/MathML",ge="http://www.w3.org/2000/svg",ye="http://www.w3.org/1999/xhtml";let _e=ye,ve=!1,be=null;const ke=Ri({},[me,ge,ye],wi);let Te=Ri({},["mi","mo","mn","ms","mtext"]),Ae=Ri({},["annotation-xml"]);const xe=Ri({},["title","style","font","a","script"]);let Se=null;const we=["application/xhtml+xml","text/html"];let Ee=null,ze=null;const Ie=r.createElement("form"),Le=function(e){return e instanceof RegExp||e instanceof Function},Ce=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!ze||ze!==e){if(e&&"object"===typeof e||(e={}),e=Mi(e),Se=-1===we.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,Ee="application/xhtml+xml"===Se?wi:Si,M=Ci(e,"ALLOWED_TAGS")?Ri({},e.ALLOWED_TAGS,Ee):W,B=Ci(e,"ALLOWED_ATTR")?Ri({},e.ALLOWED_ATTR,Ee):F,be=Ci(e,"ALLOWED_NAMESPACES")?Ri({},e.ALLOWED_NAMESPACES,wi):ke,de=Ci(e,"ADD_URI_SAFE_ATTR")?Ri(Mi(fe),e.ADD_URI_SAFE_ATTR,Ee):fe,he=Ci(e,"ADD_DATA_URI_TAGS")?Ri(Mi(pe),e.ADD_DATA_URI_TAGS,Ee):pe,ce=Ci(e,"FORBID_CONTENTS")?Ri({},e.FORBID_CONTENTS,Ee):ue,V=Ci(e,"FORBID_TAGS")?Ri({},e.FORBID_TAGS,Ee):Mi({}),G=Ci(e,"FORBID_ATTR")?Ri({},e.FORBID_ATTR,Ee):Mi({}),le=!!Ci(e,"USE_PROFILES")&&e.USE_PROFILES,K=!1!==e.ALLOW_ARIA_ATTR,q=!1!==e.ALLOW_DATA_ATTR,Y=e.ALLOW_UNKNOWN_PROTOCOLS||!1,J=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,X=e.SAFE_FOR_TEMPLATES||!1,$=!1!==e.SAFE_FOR_XML,Z=e.WHOLE_DOCUMENT||!1,te=e.RETURN_DOM||!1,ne=e.RETURN_DOM_FRAGMENT||!1,re=e.RETURN_TRUSTED_TYPE||!1,ee=e.FORCE_BODY||!1,ie=!1!==e.SANITIZE_DOM,ae=e.SANITIZE_NAMED_PROPS||!1,se=!1!==e.KEEP_CONTENT,oe=e.IN_PLACE||!1,D=e.ALLOWED_URI_REGEXP||na,_e=e.NAMESPACE||ye,Te=e.MATHML_TEXT_INTEGRATION_POINTS||Te,Ae=e.HTML_INTEGRATION_POINTS||Ae,U=e.CUSTOM_ELEMENT_HANDLING||yi(null),e.CUSTOM_ELEMENT_HANDLING&&Le(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(U.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Le(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(U.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"===typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(U.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),X&&(q=!1),ne&&(te=!0),le&&(M=Ri({},Ki),B=yi(null),!0===le.html&&(Ri(M,Bi),Ri(B,qi)),!0===le.svg&&(Ri(M,Fi),Ri(B,Yi),Ri(B,Xi)),!0===le.svgFilters&&(Ri(M,Ui),Ri(B,Yi),Ri(B,Xi)),!0===le.mathMl&&(Ri(M,Gi),Ri(B,Ji),Ri(B,Xi))),H.tagCheck=null,H.attributeCheck=null,e.ADD_TAGS&&("function"===typeof e.ADD_TAGS?H.tagCheck=e.ADD_TAGS:(M===W&&(M=Mi(M)),Ri(M,e.ADD_TAGS,Ee))),e.ADD_ATTR&&("function"===typeof e.ADD_ATTR?H.attributeCheck=e.ADD_ATTR:(B===F&&(B=Mi(B)),Ri(B,e.ADD_ATTR,Ee))),e.ADD_URI_SAFE_ATTR&&Ri(de,e.ADD_URI_SAFE_ATTR,Ee),e.FORBID_CONTENTS&&(ce===ue&&(ce=Mi(ce)),Ri(ce,e.FORBID_CONTENTS,Ee)),e.ADD_FORBID_CONTENTS&&(ce===ue&&(ce=Mi(ce)),Ri(ce,e.ADD_FORBID_CONTENTS,Ee)),se&&(M["#text"]=!0),Z&&Ri(M,["html","head","body"]),M.table&&(Ri(M,["tbody"]),delete V.tbody),e.TRUSTED_TYPES_POLICY){if("function"!==typeof e.TRUSTED_TYPES_POLICY.createHTML)throw Ni('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!==typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw Ni('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');k=e.TRUSTED_TYPES_POLICY,T=k.createHTML("")}else void 0===k&&(k=function(e,t){if("object"!==typeof e||"function"!==typeof e.createPolicy)return null;let n=null;const r="data-tt-policy-suffix";t&&t.hasAttribute(r)&&(n=t.getAttribute(r));const i="dompurify"+(n?"#"+n:"");try{return e.createPolicy(i,{createHTML:e=>e,createScriptURL:e=>e})}catch(ms){return console.warn("TrustedTypes policy "+i+" could not be created."),null}}(f,a)),null!==k&&"string"===typeof T&&(T=k.createHTML(""));mi&&mi(e),ze=e}},Pe=Ri({},[...Fi,...Ui,...Vi]),Ne=Ri({},[...Gi,...Hi]),je=function(e){Ai(n.removed,{element:e});try{b(e).removeChild(e)}catch(ms){y(e)}},Oe=function(e,t){try{Ai(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(ms){Ai(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(te||ne)try{je(t)}catch(ms){}else try{t.setAttribute(e,"")}catch(ms){}},Re=function(e){let t=null,n=null;if(ee)e=""+e;else{const t=Ei(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===Se&&_e===ye&&(e=''+e+"");const i=k?k.createHTML(e):e;if(_e===ye)try{t=(new d).parseFromString(i,Se)}catch(ms){}if(!t||!t.documentElement){t=A.createDocument(_e,"template",null);try{t.documentElement.innerHTML=ve?T:i}catch(ms){}}const a=t.body||t.documentElement;return e&&n&&a.insertBefore(r.createTextNode(n),a.childNodes[0]||null),_e===ye?w.call(t,Z?"html":"body")[0]:Z?t.documentElement:a},De=function(e){return x.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},Me=function(e){return e instanceof p&&("string"!==typeof e.nodeName||"string"!==typeof e.textContent||"function"!==typeof e.removeChild||!(e.attributes instanceof h)||"function"!==typeof e.removeAttribute||"function"!==typeof e.setAttribute||"string"!==typeof e.namespaceURI||"function"!==typeof e.insertBefore||"function"!==typeof e.hasChildNodes)},We=function(e){return"function"===typeof l&&e instanceof l};function Be(e,t,r){bi(e,e=>{e.call(n,t,r,ze)})}const Fe=function(e){let t=null;if(Be(z.beforeSanitizeElements,e,null),Me(e))return je(e),!0;const r=Ee(e.nodeName);if(Be(z.uponSanitizeElement,e,{tagName:r,allowedTags:M}),$&&e.hasChildNodes()&&!We(e.firstElementChild)&&Pi(/<[/\w!]/g,e.innerHTML)&&Pi(/<[/\w!]/g,e.textContent))return je(e),!0;if($&&e.namespaceURI===ye&&"style"===r&&We(e.firstElementChild))return je(e),!0;if(e.nodeType===ua)return je(e),!0;if($&&e.nodeType===ha&&Pi(/<[/\w]/g,e.data))return je(e),!0;if(V[r]||!(H.tagCheck instanceof Function&&H.tagCheck(r))&&!M[r]){if(!V[r]&&Ve(r)){if(U.tagNameCheck instanceof RegExp&&Pi(U.tagNameCheck,r))return!1;if(U.tagNameCheck instanceof Function&&U.tagNameCheck(r))return!1}if(se&&!ce[r]){const t=b(e)||e.parentNode,n=v(e)||e.childNodes;if(n&&t){for(let r=n.length-1;r>=0;--r){const i=g(n[r],!0);i.__removalCount=(e.__removalCount||0)+1,t.insertBefore(i,_(e))}}}return je(e),!0}return e instanceof c&&!function(e){let t=b(e);t&&t.tagName||(t={namespaceURI:_e,tagName:"template"});const n=Si(e.tagName),r=Si(t.tagName);return!!be[e.namespaceURI]&&(e.namespaceURI===ge?t.namespaceURI===ye?"svg"===n:t.namespaceURI===me?"svg"===n&&("annotation-xml"===r||Te[r]):Boolean(Pe[n]):e.namespaceURI===me?t.namespaceURI===ye?"math"===n:t.namespaceURI===ge?"math"===n&&Ae[r]:Boolean(Ne[n]):e.namespaceURI===ye?!(t.namespaceURI===ge&&!Ae[r])&&!(t.namespaceURI===me&&!Te[r])&&!Ne[n]&&(xe[n]||!Pe[n]):!("application/xhtml+xml"!==Se||!be[e.namespaceURI]))}(e)?(je(e),!0):"noscript"!==r&&"noembed"!==r&&"noframes"!==r||!Pi(/<\/no(script|embed|frames)/i,e.innerHTML)?(X&&e.nodeType===ca&&(t=e.textContent,bi([I,L,C],e=>{t=zi(t,e," ")}),e.textContent!==t&&(Ai(n.removed,{element:e.cloneNode()}),e.textContent=t)),Be(z.afterSanitizeElements,e,null),!1):(je(e),!0)},Ue=function(e,t,n){if(G[t])return!1;if(ie&&("id"===t||"name"===t)&&(n in r||n in Ie))return!1;if(q&&!G[t]&&Pi(P,t));else if(K&&Pi(N,t));else if(H.attributeCheck instanceof Function&&H.attributeCheck(t,e));else if(!B[t]||G[t]){if(!(Ve(e)&&(U.tagNameCheck instanceof RegExp&&Pi(U.tagNameCheck,e)||U.tagNameCheck instanceof Function&&U.tagNameCheck(e))&&(U.attributeNameCheck instanceof RegExp&&Pi(U.attributeNameCheck,t)||U.attributeNameCheck instanceof Function&&U.attributeNameCheck(t,e))||"is"===t&&U.allowCustomizedBuiltInElements&&(U.tagNameCheck instanceof RegExp&&Pi(U.tagNameCheck,n)||U.tagNameCheck instanceof Function&&U.tagNameCheck(n))))return!1}else if(de[t]);else if(Pi(D,zi(n,O,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==Ii(n,"data:")||!he[e]){if(Y&&!Pi(j,zi(n,O,"")));else if(n)return!1}else;return!0},Ve=function(e){return"annotation-xml"!==e&&Ei(e,R)},Ge=function(e){Be(z.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||Me(e))return;const r={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:B,forceKeepAttr:void 0};let i=t.length;for(;i--;){const a=t[i],{name:s,namespaceURI:o,value:l}=a,c=Ee(s),u=l;let h="value"===s?u:Li(u);if(r.attrName=c,r.attrValue=h,r.keepAttr=!0,r.forceKeepAttr=void 0,Be(z.uponSanitizeAttribute,e,r),h=r.attrValue,!ae||"id"!==c&&"name"!==c||(Oe(s,e),h="user-content-"+h),$&&Pi(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,h)){Oe(s,e);continue}if("attributename"===c&&Ei(h,"href")){Oe(s,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){Oe(s,e);continue}if(!J&&Pi(/\/>/i,h)){Oe(s,e);continue}X&&bi([I,L,C],e=>{h=zi(h,e," ")});const p=Ee(e.nodeName);if(Ue(p,c,h)){if(k&&"object"===typeof f&&"function"===typeof f.getAttributeType)if(o);else switch(f.getAttributeType(p,c)){case"TrustedHTML":h=k.createHTML(h);break;case"TrustedScriptURL":h=k.createScriptURL(h)}if(h!==u)try{o?e.setAttributeNS(o,s,h):e.setAttribute(s,h),Me(e)?je(e):Ti(n.removed)}catch(ms){Oe(s,e)}}else Oe(s,e)}Be(z.afterSanitizeAttributes,e,null)},He=function(e){let t=null;const n=De(e);for(Be(z.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)Be(z.uponSanitizeShadowNode,t,null),Fe(t),Ge(t),t.content instanceof s&&He(t.content);Be(z.afterSanitizeShadowDOM,e,null)};return n.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=null,a=null,o=null,c=null;if(ve=!e,ve&&(e="\x3c!--\x3e"),"string"!==typeof e&&!We(e)){if("function"!==typeof e.toString)throw Ni("toString is not a function");if("string"!==typeof(e=e.toString()))throw Ni("dirty is not a string, aborting")}if(!n.isSupported)return e;if(Q||Ce(t),n.removed=[],"string"===typeof e&&(oe=!1),oe){if(e.nodeName){const t=Ee(e.nodeName);if(!M[t]||V[t])throw Ni("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof l)r=Re("\x3c!----\x3e"),a=r.ownerDocument.importNode(e,!0),a.nodeType===la&&"BODY"===a.nodeName||"HTML"===a.nodeName?r=a:r.appendChild(a);else{if(!te&&!X&&!Z&&-1===e.indexOf("<"))return k&&re?k.createHTML(e):e;if(r=Re(e),!r)return te?null:re?T:""}r&&ee&&je(r.firstChild);const u=De(oe?e:r);for(;o=u.nextNode();)Fe(o),Ge(o),o.content instanceof s&&He(o.content);if(oe)return e;if(te){if(X){r.normalize();let e=r.innerHTML;bi([I,L,C],t=>{e=zi(e,t," ")}),r.innerHTML=e}if(ne)for(c=S.call(r.ownerDocument);r.firstChild;)c.appendChild(r.firstChild);else c=r;return(B.shadowroot||B.shadowrootmode)&&(c=E.call(i,c,!0)),c}let h=Z?r.outerHTML:r.innerHTML;return Z&&M["!doctype"]&&r.ownerDocument&&r.ownerDocument.doctype&&r.ownerDocument.doctype.name&&Pi(aa,r.ownerDocument.doctype.name)&&(h="\n"+h),X&&bi([I,L,C],e=>{h=zi(h,e," ")}),k&&re?k.createHTML(h):h},n.setConfig=function(){Ce(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Q=!0},n.clearConfig=function(){ze=null,Q=!1},n.isValidAttribute=function(e,t,n){ze||Ce({});const r=Ee(e),i=Ee(t);return Ue(r,i,n)},n.addHook=function(e,t){"function"===typeof t&&Ai(z[e],t)},n.removeHook=function(e,t){if(void 0!==t){const n=ki(z[e],t);return-1===n?void 0:xi(z[e],n,1)[0]}return Ti(z[e])},n.removeHooks=function(e){z[e]=[]},n.removeAllHooks=function(){z={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},n}();(()=>{const e="kiss-translator-policy";let t=null,n=!1;const r=()=>{if(t||n)return t;if(!globalThis.trustedTypes||!globalThis.trustedTypes.createPolicy)return n=!0,null;try{t=globalThis.trustedTypes.createPolicy(e,{createHTML:e=>fa.sanitize(e),createScript:e=>e,createScriptURL:e=>e})}catch(a){var r,i;if(null!==a&&void 0!==a&&null!==(r=a.message)&&void 0!==r&&r.includes("already exists"))t=(null===(i=globalThis.trustedTypes.policies)||void 0===i?void 0:i.get(e))||null;t||(n=!0)}return t}})();new Map;new Map,new Map;new Map;var ma=jn("translatorMap"),ga=jn("detectorPromise"),ya=jn("lastReliableDetectedLanguage"),_a=jn("defaultProgressHandler"),va=jn("getDetectorPromise"),ba=jn("createTranslator");function ka(e,t){rt("Downloading ".concat(e," model: ").concat(t,"%"))}function Ta(){return Pn(this,ga)[ga]||(Pn(this,ga)[ga]=(async()=>{try{if("unavailable"===await LanguageDetector.availability())throw new Error("LanguageDetector unavailable");return await LanguageDetector.create({monitor:e=>this._monitorProgress(e,"detector")})}catch(e){throw Pn(this,ga)[ga]=null,e}})()),Pn(this,ga)[ga]}function Aa(e,t){const n="".concat(e,"_").concat(t);if(Pn(this,ma)[ma].has(n))return Pn(this,ma)[ma].get(n);const r=(async()=>{try{if("unavailable"===await Translator.availability({sourceLanguage:e,targetLanguage:t}))throw new Error("Translator ".concat(e,"_").concat(t," unavailable"));const r=await Translator.create({sourceLanguage:e,targetLanguage:t,monitor:e=>this._monitorProgress(e,"translator (".concat(n,")"))});return Pn(this,ma)[ma].set(n,r),r}catch(r){throw Pn(this,ma)[ma].delete(n),r}})();return Pn(this,ma)[ma].set(n,r),r}const xa=new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.defineProperty(this,ba,{value:Aa}),Object.defineProperty(this,va,{value:Ta}),Object.defineProperty(this,_a,{value:ka}),Object.defineProperty(this,ma,{writable:!0,value:new Map}),Object.defineProperty(this,ga,{writable:!0,value:null}),Object.defineProperty(this,ya,{writable:!0,value:""}),this.onProgress=e.onProgress||Pn(this,_a)[_a]}_monitorProgress(e,t){e.addEventListener("downloadprogress",e=>{const n=e.total>0?Math.round(e.loaded/e.total*100):0;this.onProgress(t,n)})}async detectLanguage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.4;if(!e)return["","Input text cannot be empty."];try{const n=await Pn(this,va)[va](),r=await n.detect(e);if(!r||0===r.length)return["","No language could be detected."];const{detectedLanguage:i,confidence:a}=r[0];return a2&&void 0!==arguments[2]?arguments[2]:"auto";if(!e||!t||"string"!==typeof e)return["",n,"Input text cannot be empty."];try{let r=n;if("auto"===n){const[t,n]=await this.detectLanguage(e);if(n||!t){return["",r,"Automatic detection of source language failed: ".concat(n||"Unable to determine source language.")]}r=t}if(r===t)return["",r,"Same lang"];const i=await Pn(this,ba)[ba](r,t);return[await i.translate(e),r,""]}catch(r){return rt("translateText",r,"(".concat(e,")")),r&&r.message&&r.message.includes("Other generic failures occurred")&&(nt.info("Generic failure detected, resetting translator cache."),Pn(this,ma)[ma].clear()),["",n,r.message]}}};const Sa="https://api.github.com/gists",wa=e=>({Accept:"application/vnd.github+json",Authorization:"Bearer ".concat(e),"Content-type":"application/json","X-GitHub-Api-Version":"2022-11-28"}),Ea=async()=>Tr("https://edge.microsoft.com/translate/auth");function za(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function Ia(e,t,n){za(e,t),t.set(e,n)}function La(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function Ca(e,t){return e.get(La(e,t))}function Pa(e,t,n){return e.set(La(e,t),n),n}var Na,ja={2:e=>{function t(e,t,i){e instanceof RegExp&&(e=n(e,i)),t instanceof RegExp&&(t=n(t,i));var a=r(e,t,i);return a&&{start:a[0],end:a[1],pre:i.slice(0,a[0]),body:i.slice(a[0]+e.length,a[1]),post:i.slice(a[1]+t.length)}}function n(e,t){var n=t.match(e);return n?n[0]:null}function r(e,t,n){var r,i,a,s,o,l=n.indexOf(e),c=n.indexOf(t,l+1),u=l;if(l>=0&&c>0){for(r=[],a=n.length;u>=0&&!o;)u==l?(r.push(u),l=n.indexOf(e,u+1)):1==r.length?o=[r.pop(),c]:((i=r.pop())=0?l:c;r.length&&(o=[a,s])}return o}e.exports=t,t.range=r},101:function(e,t,r){var i;e=r.nmd(e),function(){var a=(e&&e.exports,"object"==typeof n.g&&n.g);a.global!==a&&a.window;var s=function(e){this.message=e};(s.prototype=new Error).name="InvalidCharacterError";var o=function(e){throw new s(e)},l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=/[\t\n\f\r ]/g,u={encode:function(e){e=String(e),/[^\0-\xFF]/.test(e)&&o("The string to be encoded contains characters outside of the Latin1 range.");for(var t,n,r,i,a=e.length%3,s="",c=-1,u=e.length-a;++c>18&63)+l.charAt(i>>12&63)+l.charAt(i>>6&63)+l.charAt(63&i);return 2==a?(t=e.charCodeAt(c)<<8,n=e.charCodeAt(++c),s+=l.charAt((i=t+n)>>10)+l.charAt(i>>4&63)+l.charAt(i<<2&63)+"="):1==a&&(i=e.charCodeAt(c),s+=l.charAt(i>>2)+l.charAt(i<<4&63)+"=="),s},decode:function(e){var t=(e=String(e).replace(c,"")).length;t%4==0&&(t=(e=e.replace(/==?$/,"")).length),(t%4==1||/[^+a-zA-Z0-9/]/.test(e))&&o("Invalid character: the string to be decoded is not correctly encoded.");for(var n,r,i=0,a="",s=-1;++s>(-2*i&6)));return a},version:"1.0.0"};void 0===(i=function(){return u}.call(t,r,t,e))||(e.exports=i)}()},172:(e,t)=>{t.d=function(e){if(!e)return 0;for(var t=(e=e.toString()).length,n=e.length;n--;){var r=e.charCodeAt(n);56320<=r&&r<=57343&&n--,127{var t={utf8:{stringToBytes:function(e){return t.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(t.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n{var t,n;t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n={rotl:function(e,t){return e<>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&n.rotl(e,8)|4278255360&n.rotl(e,24);for(var t=0;t0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],n=0,r=0;n>>5]|=e[n]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],n=0;n<32*e.length;n+=8)t.push(e[n>>>5]>>>24-n%32&255);return t},bytesToHex:function(e){for(var t=[],n=0;n>>4).toString(16)),t.push((15&e[n]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],n=0;n>>6*(3-a)&63)):n.push("=");return n.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var n=[],r=0,i=0;r>>6-2*i);return n}},e.exports=n},635:(e,t,n)=>{const r=n(31),i=n(338),a=n(221);e.exports={XMLParser:i,XMLValidator:r,XMLBuilder:a}},118:e=>{e.exports=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const n of e){if("string"==typeof n&&t===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}}:()=>!1}},705:(e,t)=>{const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",i=new RegExp("^"+r+"$");t.isExist=function(e){return void 0!==e},t.isEmptyObject=function(e){return 0===Object.keys(e).length},t.merge=function(e,t,n){if(t){const r=Object.keys(t),i=r.length;for(let a=0;a{const r=n(705),i={allowBooleanAttributes:!1,unpairedTags:[]};function a(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function s(e,t){const n=t;for(;t5&&"xml"===r)return f("InvalidXml","XML declaration allowed only at the start of the document.",g(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function o(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let n=1;for(t+=8;t"===e[t]&&(n--,0===n))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}t.validate=function(e,t){t=Object.assign({},i,t);const n=[];let l=!1,c=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let i=0;i"!==e[i]&&" "!==e[i]&&"\t"!==e[i]&&"\n"!==e[i]&&"\r"!==e[i];i++)_+=e[i];if(_=_.trim(),"/"===_[_.length-1]&&(_=_.substring(0,_.length-1),i--),h=_,!r.isName(h)){let t;return t=0===_.trim().length?"Invalid space after '<'.":"Tag '"+_+"' is an invalid name.",f("InvalidTag",t,g(e,i))}const v=u(e,i);if(!1===v)return f("InvalidAttr","Attributes for '"+_+"' have open quote.",g(e,i));let b=v.value;if(i=v.index,"/"===b[b.length-1]){const n=i-b.length;b=b.substring(0,b.length-1);const r=p(b,t);if(!0!==r)return f(r.err.code,r.err.msg,g(e,n+r.err.line));l=!0}else if(y){if(!v.tagClosed)return f("InvalidTag","Closing tag '"+_+"' doesn't have proper closing.",g(e,i));if(b.trim().length>0)return f("InvalidTag","Closing tag '"+_+"' can't have attributes or invalid starting.",g(e,m));if(0===n.length)return f("InvalidTag","Closing tag '"+_+"' has not been opened.",g(e,m));{const t=n.pop();if(_!==t.tagName){let n=g(e,t.tagStartPos);return f("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+n.line+", col "+n.col+") instead of closing tag '"+_+"'.",g(e,m))}0==n.length&&(c=!0)}}else{const r=p(b,t);if(!0!==r)return f(r.err.code,r.err.msg,g(e,i-b.length+r.err.line));if(!0===c)return f("InvalidXml","Multiple possible root nodes found.",g(e,i));-1!==t.unpairedTags.indexOf(_)||n.push({tagName:_,tagStartPos:m}),l=!0}for(i++;i0)||f("InvalidXml","Invalid '"+JSON.stringify(n.map(e=>e.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):f("InvalidXml","Start tag expected.",1)};const l='"',c="'";function u(e,t){let n="",r="",i=!1;for(;t"===e[t]&&""===r){i=!0;break}n+=e[t]}return""===r&&{value:n,index:t,tagClosed:i}}const h=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function p(e,t){const n=r.getAllMatches(e,h),i={};for(let r=0;r{const r=n(87),i=n(118),a={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function s(e){this.options=Object.assign({},a,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=i(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=c),this.processTextOrObjNode=o,this.options.format?(this.indentate=l,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function o(e,t,n,r){const i=this.j2x(e,n+1,r.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,i.attrStr,n):this.buildObjectNode(i.val,t,i.attrStr,n)}function l(e){return this.options.indentBy.repeat(e)}function c(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}s.prototype.build=function(e){return this.options.preserveOrder?r(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},s.prototype.j2x=function(e,t,n){let r="",i="";const a=n.join(".");for(let s in e)if(Object.prototype.hasOwnProperty.call(e,s))if(void 0===e[s])this.isAttribute(s)&&(i+="");else if(null===e[s])this.isAttribute(s)?i+="":"?"===s[0]?i+=this.indentate(t)+"<"+s+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+s+"/"+this.tagEndChar;else if(e[s]instanceof Date)i+=this.buildTextValNode(e[s],s,"",t);else if("object"!=typeof e[s]){const n=this.isAttribute(s);if(n&&!this.ignoreAttributesFn(n,a))r+=this.buildAttrPairStr(n,""+e[s]);else if(!n)if(s===this.options.textNodeName){let t=this.options.tagValueProcessor(s,""+e[s]);i+=this.replaceEntitiesValue(t)}else i+=this.buildTextValNode(e[s],s,"",t)}else if(Array.isArray(e[s])){const r=e[s].length;let a="",o="";for(let l=0;l"+e+i}},s.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":">")+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+"\x3c!--".concat(e,"--\x3e")+this.newLine;if("?"===t[0])return this.indentate(r)+"<"+t+n+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(r)+"<"+t+n+this.closeTag(t)+this.tagEndChar:this.indentate(r)+"<"+t+n+">"+i+"0&&this.options.processEntities)for(let t=0;t{function t(e,s,o,l){let c="",u=!1;for(let h=0;h"),u=!1;continue}if(d===s.commentPropName){c+=l+"\x3c!--".concat(p[d][0][s.textNodeName],"--\x3e"),u=!0;continue}if("?"===d[0]){const e=r(p[":@"],s),t="?xml"===d?"":l;let n=p[d][0][s.textNodeName];n=0!==n.length?" "+n:"",c+=t+"<".concat(d).concat(n).concat(e,"?>"),u=!0;continue}let m=l;""!==m&&(m+=s.indentBy);const g=l+"<".concat(d).concat(r(p[":@"],s)),y=t(p[d],s,f,m);-1!==s.unpairedTags.indexOf(d)?s.suppressUnpairedNode?c+=g+">":c+=g+"/>":y&&0!==y.length||!s.suppressEmptyNode?y&&y.endsWith(">")?c+=g+">".concat(y).concat(l,""):(c+=g+">",y&&""!==l&&(y.includes("/>")||y.includes("")):c+=g+"/>",u=!0}return c}function n(e){const t=Object.keys(e);for(let n=0;n0&&t.processEntities)for(let n=0;n0&&(r="\n"),t(e,n,"",r)}},193:(e,t,n)=>{const r=n(705);function i(e,t){let n="";for(;t"===e[t]){if(p?"-"===e[t-1]&&"-"===e[t-2]&&(p=!1,r--):r--,0===r)break}else"["===e[t]?h=!0:d+=e[t];else{if(h&&s(e,t)){let r,a;t+=7,[r,a,t]=i(e,t+1),-1===a.indexOf("&")&&(n[u(r)]={regx:RegExp("&".concat(r,";"),"g"),val:a})}else if(h&&o(e,t))t+=8;else if(h&&l(e,t))t+=8;else if(h&&c(e,t))t+=9;else{if(!a)throw new Error("Invalid DOCTYPE");p=!0}r++,d=""}if(0!==r)throw new Error("Unclosed DOCTYPE")}return{entities:n,i:t}}},63:(e,t)=>{const n={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,n){return e}};t.buildOptions=function(e){return Object.assign({},n,e)},t.defaultOptions=n},299:(e,t,n)=>{const r=n(705),i=n(365),a=n(193),s=n(494),o=n(118);function l(e){const t=Object.keys(e);for(let n=0;n0)){s||(e=this.replaceEntitiesValue(e));const r=this.options.tagValueProcessor(t,e,n,i,a);return null==r?e:typeof r!=typeof e||r!==e?r:this.options.trimValues||e.trim()===e?k(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function u(e){if(this.options.removeNSPrefix){const t=e.split(":"),n="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=n+t[1])}return e}const h=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function p(e,t,n){if(!0!==this.options.ignoreAttributes&&"string"==typeof e){const n=r.getAllMatches(e,h),i=n.length,a={};for(let e=0;e",o,"Closing Tag is not closed.");let i=e.substring(o+2,t).trim();if(this.options.removeNSPrefix){const e=i.indexOf(":");-1!==e&&(i=i.substr(e+1))}this.options.transformTagName&&(i=this.options.transformTagName(i)),n&&(r=this.saveTextToParentTag(r,n,s));const a=s.substring(s.lastIndexOf(".")+1);if(i&&-1!==this.options.unpairedTags.indexOf(i))throw new Error("Unpaired tag can not be used as closing tag: "));let l=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(l=s.lastIndexOf(".",s.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=s.lastIndexOf("."),s=s.substring(0,l),n=this.tagsNodeStack.pop(),r="",o=t}else if("?"===e[o+1]){let t=v(e,o,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(r=this.saveTextToParentTag(r,n,s),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new i(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,s,t.tagName)),this.addChild(n,e,s)}o=t.closeIndex+1}else if("!--"===e.substr(o+1,3)){const t=_(e,"--\x3e",o+4,"Comment is not closed.");if(this.options.commentPropName){const i=e.substring(o+4,t-2);r=this.saveTextToParentTag(r,n,s),n.add(this.options.commentPropName,[{[this.options.textNodeName]:i}])}o=t}else if("!D"===e.substr(o+1,2)){const t=a(e,o);this.docTypeEntities=t.entities,o=t.i}else if("!["===e.substr(o+1,2)){const t=_(e,"]]>",o,"CDATA is not closed.")-2,i=e.substring(o+9,t);r=this.saveTextToParentTag(r,n,s);let a=this.parseTextData(i,n.tagname,s,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:i}]):n.add(this.options.textNodeName,a),o=t+2}else{let a=v(e,o,this.options.removeNSPrefix),l=a.tagName;const c=a.rawTagName;let u=a.tagExp,h=a.attrExpPresent,p=a.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),n&&r&&"!xml"!==n.tagname&&(r=this.saveTextToParentTag(r,n,s,!1));const d=n;if(d&&-1!==this.options.unpairedTags.indexOf(d.tagname)&&(n=this.tagsNodeStack.pop(),s=s.substring(0,s.lastIndexOf("."))),l!==t.tagname&&(s+=s?"."+l:l),this.isItStopNode(this.options.stopNodes,s,l)){let t="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)"/"===l[l.length-1]?(l=l.substr(0,l.length-1),s=s.substr(0,s.length-1),u=l):u=u.substr(0,u.length-1),o=a.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(l))o=a.closeIndex;else{const n=this.readStopNodeData(e,c,p+1);if(!n)throw new Error("Unexpected end of ".concat(c));o=n.i,t=n.tagContent}const r=new i(l);l!==u&&h&&(r[":@"]=this.buildAttributesMap(u,s,l)),t&&(t=this.parseTextData(t,l,s,!0,h,!0,!0)),s=s.substr(0,s.lastIndexOf(".")),r.add(this.options.textNodeName,t),this.addChild(n,r,s)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){"/"===l[l.length-1]?(l=l.substr(0,l.length-1),s=s.substr(0,s.length-1),u=l):u=u.substr(0,u.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));const e=new i(l);l!==u&&h&&(e[":@"]=this.buildAttributesMap(u,s,l)),this.addChild(n,e,s),s=s.substr(0,s.lastIndexOf("."))}else{const e=new i(l);this.tagsNodeStack.push(n),l!==u&&h&&(e[":@"]=this.buildAttributesMap(u,s,l)),this.addChild(n,e,s),n=e}r="",o=p}}else r+=e[o];return t.child};function f(e,t,n){const r=this.options.updateTag(t.tagname,n,t[":@"]);!1===r||("string"==typeof r?(t.tagname=r,e.addChild(t)):e.addChild(t))}const m=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const n=this.docTypeEntities[t];e=e.replace(n.regx,n.val)}for(let t in this.lastEntities){const n=this.lastEntities[t];e=e.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const n=this.htmlEntities[t];e=e.replace(n.regex,n.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function g(e,t,n,r){return e&&(void 0===r&&(r=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,n,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,r))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function y(e,t,n){const r="*."+n;for(const i in e){const n=e[i];if(r===n||t===n)return!0}return!1}function _(e,t,n,r){const i=e.indexOf(t,n);if(-1===i)throw new Error(r);return i+t.length-1}function v(e,t,n){const r=function(e,t){let n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:">",i="";for(let a=t;a3&&void 0!==arguments[3]?arguments[3]:">");if(!r)return;let i=r.data;const a=r.index,s=i.search(/\s/);let o=i,l=!0;-1!==s&&(o=i.substring(0,s),i=i.substring(s+1).trimStart());const c=o;if(n){const e=o.indexOf(":");-1!==e&&(o=o.substr(e+1),l=o!==r.data.substr(e+1))}return{tagName:o,tagExp:i,closeIndex:a,attrExpPresent:l,rawTagName:c}}function b(e,t,n){const r=n;let i=1;for(;n",n,"".concat(t," is not closed"));if(e.substring(n+2,a).trim()===t&&(i--,0===i))return{tagContent:e.substring(r,n),i:a};n=a}else if("?"===e[n+1])n=_(e,"?>",n+1,"StopNode is not closed.");else if("!--"===e.substr(n+1,3))n=_(e,"--\x3e",n+3,"StopNode is not closed.");else if("!["===e.substr(n+1,2))n=_(e,"]]>",n,"StopNode is not closed.")-2;else{const r=v(e,n,">");r&&((r&&r.tagName)===t&&"/"!==r.tagExp[r.tagExp.length-1]&&i++,n=r.closeIndex)}}function k(e,t,n){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&s(e,n)}return r.isExist(e)?e:""}e.exports=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\xa2"},pound:{regex:/&(pound|#163);/g,val:"\xa3"},yen:{regex:/&(yen|#165);/g,val:"\xa5"},euro:{regex:/&(euro|#8364);/g,val:"\u20ac"},copyright:{regex:/&(copy|#169);/g,val:"\xa9"},reg:{regex:/&(reg|#174);/g,val:"\xae"},inr:{regex:/&(inr|#8377);/g,val:"\u20b9"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=l,this.parseXml=d,this.parseTextData=c,this.resolveNameSpace=u,this.buildAttributesMap=p,this.isItStopNode=y,this.replaceEntitiesValue=m,this.readStopNodeData=b,this.saveTextToParentTag=g,this.addChild=f,this.ignoreAttributesFn=o(this.options.ignoreAttributes)}}},338:(e,t,n)=>{const{buildOptions:r}=n(63),i=n(299),{prettify:a}=n(728),s=n(31);e.exports=class{constructor(e){this.externalEntities={},this.options=r(e)}parse(e,t){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(t){!0===t&&(t={});const n=s.validate(e,t);if(!0!==n)throw Error("".concat(n.err.msg,":").concat(n.err.line,":").concat(n.err.col))}const n=new i(this.options);n.addExternalEntities(this.externalEntities);const r=n.parseXml(e);return this.options.preserveOrder||void 0===r?r:a(r,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}},728:(e,t)=>{function n(e,t,s){let o;const l={};for(let c=0;c0&&(l[t.textNodeName]=o):void 0!==o&&(l[t.textNodeName]=o),l}function r(e){const t=Object.keys(e);for(let n=0;n{e.exports=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}},135:e=>{function t(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(t(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&t(e.slice(0,0))}(e)||!!e._isBuffer)}},542:(e,t,n)=>{!function(){var t=n(298),r=n(526).utf8,i=n(135),a=n(526).bin,s=function(e,n){e.constructor==String?e=n&&"binary"===n.encoding?a.stringToBytes(e):r.stringToBytes(e):i(e)?e=Array.prototype.slice.call(e,0):Array.isArray(e)||e.constructor===Uint8Array||(e=e.toString());for(var o=t.bytesToWords(e),l=8*e.length,c=1732584193,u=-271733879,h=-1732584194,p=271733878,d=0;d>>24)|4278255360&(o[d]<<24|o[d]>>>8);o[l>>>5]|=128<>>9<<4)]=l;var f=s._ff,m=s._gg,g=s._hh,y=s._ii;for(d=0;d>>0,u=u+v>>>0,h=h+b>>>0,p=p+k>>>0}return t.endian([c,u,h,p])};s._ff=function(e,t,n,r,i,a,s){var o=e+(t&n|~t&r)+(i>>>0)+s;return(o<>>32-a)+t},s._gg=function(e,t,n,r,i,a,s){var o=e+(t&r|n&~r)+(i>>>0)+s;return(o<>>32-a)+t},s._hh=function(e,t,n,r,i,a,s){var o=e+(t^n^r)+(i>>>0)+s;return(o<>>32-a)+t},s._ii=function(e,t,n,r,i,a,s){var o=e+(n^(t|~r))+(i>>>0)+s;return(o<>>32-a)+t},s._blocksize=16,s._digestsize=16,e.exports=function(e,n){if(null==e)throw new Error("Illegal argument "+e);var r=t.wordsToBytes(s(e,n));return n&&n.asBytes?r:n&&n.asString?a.bytesToString(r):t.bytesToHex(r)}}()},285:(e,t,n)=>{var r=n(2);e.exports=function(e){return e?("{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2)),g(function(e){return e.split("\\\\").join(i).split("\\{").join(a).split("\\}").join(s).split("\\,").join(o).split("\\.").join(l)}(e),!0).map(u)):[]};var i="\0SLASH"+Math.random()+"\0",a="\0OPEN"+Math.random()+"\0",s="\0CLOSE"+Math.random()+"\0",o="\0COMMA"+Math.random()+"\0",l="\0PERIOD"+Math.random()+"\0";function c(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function u(e){return e.split(i).join("\\").split(a).join("{").split(s).join("}").split(o).join(",").split(l).join(".")}function h(e){if(!e)return[""];var t=[],n=r("{","}",e);if(!n)return e.split(",");var i=n.pre,a=n.body,s=n.post,o=i.split(",");o[o.length-1]+="{"+a+"}";var l=h(s);return s.length&&(o[o.length-1]+=l.shift(),o.push.apply(o,l)),t.push.apply(t,o),t}function p(e){return"{"+e+"}"}function d(e){return/^-?0\d/.test(e)}function f(e,t){return e<=t}function m(e,t){return e>=t}function g(e,t){var n=[],i=r("{","}",e);if(!i)return[e];var a=i.pre,o=i.post.length?g(i.post,!1):[""];if(/\$$/.test(i.pre))for(var l=0;l=0;if(!k&&!T)return i.post.match(/,.*\}/)?g(e=i.pre+"{"+i.body+s+i.post):[e];if(k)y=i.body.split(/\.\./);else if(1===(y=h(i.body)).length&&1===(y=g(y[0],!1).map(p)).length)return o.map(function(e){return i.pre+y[0]+e});if(k){var A=c(y[0]),x=c(y[1]),S=Math.max(y[0].length,y[1].length),w=3==y.length?Math.abs(c(y[2])):1,E=f;x0){var P=new Array(C+1).join("0");L=I<0?"-"+P+L.slice(1):P+L}}_.push(L)}}else{_=[];for(var N=0;N{function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}function n(e){var t="function"==typeof Map?new Map:void 0;return n=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,s)}function s(){return r(e,arguments,a(this).constructor)}return s.prototype=Object.create(e.prototype,{constructor:{value:s,enumerable:!1,writable:!0,configurable:!0}}),i(s,e)},n(e)}function r(e,t,n){return r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&i(a,n.prototype),a},r.apply(null,arguments)}function i(e,t){return i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},i(e,t)}function a(e){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},a(e)}var s=function(e){function n(e){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),(r=function(e,n){return!n||"object"!==t(n)&&"function"!=typeof n?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):n}(this,a(n).call(this,e))).name="ObjectPrototypeMutationError",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&i(e,t)}(n,e),n}(n(Error));function o(e,n){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},i=n.split("."),a=i.length,s=function(t){var n=i[t];if(!e)return{v:void 0};if("+"===n){if(Array.isArray(e))return{v:e.map(function(n,a){var s=i.slice(t+1);return s.length>0?o(n,s.join("."),r):r(e,a,i,t)})};var a=i.slice(0,t).join(".");throw new Error("Object at wildcard (".concat(a,") is not an array"))}e=r(e,n,i,t)},l=0;l2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=t(e)||null===e)return!1;if(void 0===n)return!1;if("number"==typeof n)return n in e;try{var i=!1;return o(e,n,function(e,t,n,a){if(!l(n,a))return e&&e[t];i=r.own?e.hasOwnProperty(t):t in e}),i}catch(e){return!1}},hasOwn:function(e,t,n){return this.has(e,t,n||{own:!0})},isIn:function(e,n,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=t(e)||null===e)return!1;if(void 0===n)return!1;try{var a=!1,s=!1;return o(e,n,function(e,n,i,o){return a=a||e===r||!!e&&e[n]===r,s=l(i,o)&&"object"===t(e)&&n in e,e&&e[n]}),i.validPath?a&&s:a}catch(e){return!1}},ObjectPrototypeMutationError:s}},47:(e,t,n)=>{var r=n(410),i=function(e){return"string"==typeof e};function a(e,t){for(var n=[],r=0;r=-1&&!t;n--){var r=n>=0?arguments[n]:process.cwd();if(!i(r))throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return(t?"/":"")+(e=a(e.split("/"),!t).join("/"))||"."},o.normalize=function(e){var t=o.isAbsolute(e),n="/"===e.substr(-1);return(e=a(e.split("/"),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e},o.isAbsolute=function(e){return"/"===e.charAt(0)},o.join=function(){for(var e="",t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n+1)}e=o.resolve(e).substr(1),t=o.resolve(t).substr(1);for(var r=n(e.split("/")),i=n(t.split("/")),a=Math.min(r.length,i.length),s=a,l=0;l{var n=Object.prototype.hasOwnProperty;function r(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function i(e){try{return encodeURIComponent(e)}catch(e){return null}}t.stringify=function(e,t){t=t||"";var r,a,s=[];for(a in"string"!=typeof t&&(t="?"),e)if(n.call(e,a)){if((r=e[a])||null!=r&&!isNaN(r)||(r=""),a=i(a),r=i(r),null===a||null===r)continue;s.push(a+"="+r)}return s.length?t+s.join("&"):""},t.parse=function(e){for(var t,n=/([^=?#&]+)=?([^&]*)/g,i={};t=n.exec(e);){var a=r(t[1]),s=r(t[2]);null===a||null===s||a in i||(i[a]=s)}return i}},670:e=>{e.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},494:e=>{const t=/^[-+]?0x[a-fA-F0-9]+$/,n=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};e.exports=function(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(i=Object.assign({},r,i),!e||"string"!=typeof e)return e;let a=e.trim();if(void 0!==i.skipLike&&i.skipLike.test(a))return e;if(i.hex&&t.test(a))return Number.parseInt(a,16);{const t=n.exec(a);if(t){const n=t[1],r=t[2];let o=(s=t[3])&&-1!==s.indexOf(".")?("."===(s=s.replace(/0+$/,""))?s="0":"."===s[0]?s="0"+s:"."===s[s.length-1]&&(s=s.substr(0,s.length-1)),s):s;const l=t[4]||t[6];if(!i.leadingZeros&&r.length>0&&n&&"."!==a[2])return e;if(!i.leadingZeros&&r.length>0&&!n&&"."!==a[1])return e;{const t=Number(a),s=""+t;return-1!==s.search(/[eE]/)||l?i.eNotation?t:e:-1!==a.indexOf(".")?"0"===s&&""===o||s===o||n&&s==="-"+o?t:e:r?o===s||n+o===s?t:e:a===s||a===n+s?t:e}}return e}var s}},737:(e,t,r)=>{var i=r(670),a=r(647),s=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,o=/[\n\r\t]/g,l=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,c=/:\d+$/,u=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,h=/^[a-zA-Z]:/;function p(e){return(e||"").toString().replace(s,"")}var d=[["#","hash"],["?","query"],function(e,t){return g(t.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function m(e){var t,r=("undefined"!=typeof window?window:"undefined"!=typeof n.g?n.g:"undefined"!=typeof self?self:{}).location||{},i={},a=typeof(e=e||r);if("blob:"===e.protocol)i=new _(unescape(e.pathname),{});else if("string"===a)for(t in i=new _(e,{}),f)delete i[t];else if("object"===a){for(t in e)t in f||(i[t]=e[t]);void 0===i.slashes&&(i.slashes=l.test(e.href))}return i}function g(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function y(e,t){e=(e=p(e)).replace(o,""),t=t||{};var n,r=u.exec(e),i=r[1]?r[1].toLowerCase():"",a=!!r[2],s=!!r[3],l=0;return a?s?(n=r[2]+r[3]+r[4],l=r[2].length+r[3].length):(n=r[2]+r[4],l=r[2].length):s?(n=r[3]+r[4],l=r[3].length):n=r[4],"file:"===i?l>=2&&(n=n.slice(2)):g(i)?n=r[4]:i?a&&(n=n.slice(2)):l>=2&&g(t.protocol)&&(n=r[4]),{protocol:i,slashes:a||g(i),slashesCount:l,rest:n}}function _(e,t,n){if(e=(e=p(e)).replace(o,""),!(this instanceof _))return new _(e,t,n);var r,s,l,c,u,f,v=d.slice(),b=typeof t,k=this,T=0;for("object"!==b&&"string"!==b&&(n=t,t=null),n&&"function"!=typeof n&&(n=a.parse),r=!(s=y(e||"",t=m(t))).protocol&&!s.slashes,k.slashes=s.slashes||r&&t.slashes,k.protocol=s.protocol||t.protocol||"",e=s.rest,("file:"===s.protocol&&(2!==s.slashesCount||h.test(e))||!s.slashes&&(s.protocol||s.slashesCount<2||!g(k.protocol)))&&(v[3]=[/(.*)/,"pathname"]);T{},388:()=>{},805:()=>{},345:()=>{},800:()=>{}},Oa={};function Ra(e){var t=Oa[e];if(void 0!==t)return t.exports;var n=Oa[e]={id:e,loaded:!1,exports:{}};return ja[e].call(n.exports,n,n.exports,Ra),n.loaded=!0,n.exports}Ra.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return Ra.d(t,{a:t}),t},Ra.d=(e,t)=>{for(var n in t)Ra.o(t,n)&&!Ra.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},Ra.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Ra.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var Da={};Ra.d(Da,{hT:()=>us,O4:()=>hs,Kd:()=>ls,YK:()=>cs,UU:()=>$l,Gu:()=>_s,ky:()=>el,h4:()=>Zo,ch:()=>Qo,hq:()=>Go,i5:()=>tl});var Ma=Ra(737),Wa=Ra.n(Ma);function Ba(e){if(!Fa(e))throw new Error("Parameter was not an error")}function Fa(e){return!!e&&"object"==typeof e&&"[object Error]"===(t=e,Object.prototype.toString.call(t))||e instanceof Error;var t}class Ua extends Error{constructor(e,t){const n=[...arguments],{options:r,shortMessage:i}=function(e){let t,n="";if(0===e.length)t={};else if(Fa(e[0]))t={cause:e[0]},n=e.slice(1).join(" ")||"";else if(e[0]&&"object"==typeof e[0])t=Object.assign({},e[0]),n=e.slice(1).join(" ")||"";else{if("string"!=typeof e[0])throw new Error("Invalid arguments passed to Layerr");t={},n=n=e.join(" ")||""}return{options:t,shortMessage:n}}(n);let a=i;if(r.cause&&(a="".concat(a,": ").concat(r.cause.message)),super(a),this.message=a,r.name&&"string"==typeof r.name?this.name=r.name:this.name="Layerr",r.cause&&Object.defineProperty(this,"_cause",{value:r.cause}),Object.defineProperty(this,"_info",{value:{}}),r.info&&"object"==typeof r.info&&Object.assign(this._info,r.info),Error.captureStackTrace){const e=r.constructorOpt||this.constructor;Error.captureStackTrace(this,e)}}static cause(e){return Ba(e),e._cause&&Fa(e._cause)?e._cause:null}static fullStack(e){var t;Ba(e);const n=Ua.cause(e);return n?"".concat(e.stack,"\ncaused by: ").concat(Ua.fullStack(n)):null!==(t=e.stack)&&void 0!==t?t:""}static info(e){Ba(e);const t={},n=Ua.cause(e);return n&&Object.assign(t,Ua.info(n)),e._info&&Object.assign(t,e._info),t}toString(){let e=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(e="".concat(e,": ").concat(this.message)),e}}var Va=Ra(47),Ga=Ra.n(Va);const Ha="__PATH_SEPARATOR_POSIX__",Ka="__PATH_SEPARATOR_WINDOWS__";function qa(e){try{const t=e.replace(/\//g,Ha).replace(/\\\\/g,Ka);return encodeURIComponent(t).split(Ka).join("\\\\").split(Ha).join("/")}catch(e){throw new Ua(e,"Failed encoding path")}}function Ya(e){return e.startsWith("/")?e:"/"+e}function Ja(e){let t=e;return"/"!==t[0]&&(t="/"+t),/^.+\/$/.test(t)&&(t=t.substr(0,t.length-1)),t}function Xa(e){let t=new(Wa())(e).pathname;return t.length<=0&&(t="/"),Ja(t)}function $a(){for(var e=arguments.length,t=new Array(e),n=0;n1){var n=e.shift();e[0]=n+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var r=0;r0&&(i=i.replace(/^[\/]+/,"")),i=r0?"?":"")+s.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}(t.reduce((e,t,n)=>((0===n||"/"!==t||"/"===t&&"/"!==e[e.length-1])&&e.push(t),e),[]))}var Za=Ra(542),Qa=Ra.n(Za);function es(e,t){const n=e.url.replace("//",""),r=-1==n.indexOf("/")?"/":n.slice(n.indexOf("/")),i=e.method?e.method.toUpperCase():"GET",a=!!/(^|,)\s*auth\s*($|,)/.test(t.qop)&&"auth",s="00000000".concat(t.nc).slice(-8),o=function(e,t,n,r,i,a,s){const o=s||Qa()("".concat(t,":").concat(n,":").concat(r));return e&&"md5-sess"===e.toLowerCase()?Qa()("".concat(o,":").concat(i,":").concat(a)):o}(t.algorithm,t.username,t.realm,t.password,t.nonce,t.cnonce,t.ha1),l=Qa()("".concat(i,":").concat(r)),c=a?Qa()("".concat(o,":").concat(t.nonce,":").concat(s,":").concat(t.cnonce,":").concat(a,":").concat(l)):Qa()("".concat(o,":").concat(t.nonce,":").concat(l)),u={username:t.username,realm:t.realm,nonce:t.nonce,uri:r,qop:a,response:c,nc:s,cnonce:t.cnonce,algorithm:t.algorithm,opaque:t.opaque},h=[];for(const p in u)u[p]&&("qop"===p||"nc"===p||"algorithm"===p?h.push("".concat(p,"=").concat(u[p])):h.push("".concat(p,'="').concat(u[p],'"')));return"Digest ".concat(h.join(", "))}function ts(e){return"digest"===(e.headers&&e.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}var ns=Ra(101),rs=Ra.n(ns);function is(e){return rs().decode(e)}function as(e,t){var n;return"Basic ".concat((n="".concat(e,":").concat(t),rs().encode(n)))}const ss="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,os=ss.fetch.bind(ss),ls=(ss.Headers,ss.Request),cs=ss.Response;let us=function(e){return e.Auto="auto",e.Digest="digest",e.None="none",e.Password="password",e.Token="token",e}({}),hs=function(e){return e.DataTypeNoLength="data-type-no-length",e.InvalidAuthType="invalid-auth-type",e.InvalidOutputFormat="invalid-output-format",e.LinkUnsupportedAuthType="link-unsupported-auth",e.InvalidUpdateRange="invalid-update-range",e.NotSupported="not-supported",e}({});function ps(e,t,n,r,i){switch(e.authType){case us.Auto:t&&n&&(e.headers.Authorization=as(t,n));break;case us.Digest:e.digest=function(e,t,n){return{username:e,password:t,ha1:n,nc:0,algorithm:"md5",hasDigestAuth:!1}}(t,n,i);break;case us.None:break;case us.Password:e.headers.Authorization=as(t,n);break;case us.Token:e.headers.Authorization="".concat((a=r).token_type," ").concat(a.access_token);break;default:throw new Ua({info:{code:hs.InvalidAuthType}},"Invalid auth type: ".concat(e.authType))}var a}Ra(345),Ra(800);const ds="@@HOTPATCHER",fs=()=>{};function ms(e){return{original:e,methods:[e],final:!1}}class gs{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=ds}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(e){this.configuration.getEmptyAction=e}control(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e||e.__type__!==ds)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(e.configuration.registry).forEach(n=>{this.configuration.registry.hasOwnProperty(n)?t&&(this.configuration.registry[n]=Object.assign({},e.configuration.registry[n])):this.configuration.registry[n]=Object.assign({},e.configuration.registry[n])}),e._configuration=this.configuration,this}execute(e){const t=this.get(e)||fs;for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i0;)i=[t.shift().apply(a,i)];return i[0]}}(...t.methods)}isPatched(e){return!!this.configuration.registry[e]}patch(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{chain:r=!1}=n;if(this.configuration.registry[e]&&this.configuration.registry[e].final)throw new Error("Failed patching '".concat(e,"': Method marked as being final"));if("function"!=typeof t)throw new Error("Failed patching '".concat(e,"': Provided method is not a function"));if(r)this.configuration.registry[e]?this.configuration.registry[e].methods.push(t):this.configuration.registry[e]=ms(t);else if(this.isPatched(e)){const{original:n}=this.configuration.registry[e];this.configuration.registry[e]=Object.assign(ms(t),{original:n})}else this.configuration.registry[e]=ms(t);return this}patchInline(e,t){this.isPatched(e)||this.patch(e,t);for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i1?t-1:0),r=1;r{this.patch(e,t,{chain:!0})}),this}restore(e){if(!this.isPatched(e))throw new Error("Failed restoring method: No method present for key: ".concat(e));if("function"!=typeof this.configuration.registry[e].original)throw new Error("Failed restoring method: Original method not found or of invalid type for key: ".concat(e));return this.configuration.registry[e].methods=[this.configuration.registry[e].original],this}setFinal(e){if(!this.configuration.registry.hasOwnProperty(e))throw new Error("Failed marking '".concat(e,"' as final: No method found for key"));return this.configuration.registry[e].final=!0,this}}let ys=null;function _s(){return ys||(ys=new gs),ys}function vs(e){return function(e){if("object"!=typeof e||null===e||"[object Object]"!=Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}(e)?Object.assign({},e):Object.setPrototypeOf(Object.assign({},e),Object.getPrototypeOf(e))}function bs(){for(var e=arguments.length,t=new Array(e),n=0;n0;){const e=i.shift();r=r?ks(r,e):vs(e)}return r}function ks(e,t){const n=vs(e);return Object.keys(t).forEach(e=>{n.hasOwnProperty(e)?Array.isArray(t[e])?n[e]=Array.isArray(n[e])?[...n[e],...t[e]]:[...t[e]]:"object"==typeof t[e]&&t[e]?n[e]="object"==typeof n[e]&&n[e]?ks(n[e],t[e]):vs(t[e]):n[e]=t[e]:n[e]=t[e]}),n}function Ts(e){const t={};for(const n of e.keys())t[n]=e.get(n);return t}function As(){for(var e=arguments.length,t=new Array(e),n=0;n(Object.keys(t).forEach(n=>{const i=n.toLowerCase();r.hasOwnProperty(i)?e[r[i]]=t[n]:(r[i]=n,e[n]=t[n])}),e),{})}Ra(805);const xs="function"==typeof ArrayBuffer,{toString:Ss}=Object.prototype;function ws(e){return xs&&(e instanceof ArrayBuffer||"[object ArrayBuffer]"===Ss.call(e))}function Es(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function zs(e){return function(){for(var t=[],n=0;nt.patchInline("fetch",os,e.url,function(e){let t={};const n={method:e.method};if(e.headers&&(t=As(t,e.headers)),void 0!==e.data){const[r,i]=function(e){if("string"==typeof e)return[e,{}];if(Es(e))return[e,{}];if(ws(e))return[e,{}];if(e&&"object"==typeof e)return[JSON.stringify(e),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof e)}(e.data);n.body=r,t=As(t,i)}return e.signal&&(n.signal=e.signal),e.withCredentials&&(n.credentials="include"),n.headers=t,n}(e)),e)}var Os=Ra(285);const Rs=e=>{if("string"!=typeof e)throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")},Ds={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Ms=e=>e.replace(/[[\]\\-]/g,"\\$&"),Ws=e=>e.join(""),Bs=(e,t)=>{const n=t;if("["!==e.charAt(n))throw new Error("not in a brace expression");const r=[],i=[];let a=n+1,s=!1,o=!1,l=!1,c=!1,u=n,h="";e:for(;ah?r.push(Ms(h)+"-"+Ms(t)):t===h&&r.push(Ms(t)),h="",a++):e.startsWith("-]",a+1)?(r.push(Ms(t+"-")),a+=2):e.startsWith("-",a+1)?(h=t,a+=2):(r.push(Ms(t)),a++)}else l=!0,a++}else c=!0,a++}if(u1&&void 0!==arguments[1]?arguments[1]:{};return t?e.replace(/\[([^\/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")},Us=new Set(["!","?","+","*","@"]),Vs=e=>Us.has(e),Gs="(?!\\.)",Hs=new Set(["[","."]),Ks=new Set(["..","."]),qs=new Set("().*{}+?[]^$\\!"),Ys="[^/]",Js=Ys+"*?",Xs=Ys+"+?";var $s=new WeakMap,Zs=new WeakMap,Qs=new WeakMap,eo=new WeakMap,to=new WeakMap,no=new WeakMap,ro=new WeakMap,io=new WeakMap,ao=new WeakMap,so=new WeakMap,oo=new WeakMap,lo=new WeakSet;class co{constructor(e,t){!function(e,t){za(e,t),t.add(e)}(this,lo),u(this,"type",void 0),Ia(this,$s,void 0),Ia(this,Zs,void 0),Ia(this,Qs,!1),Ia(this,eo,[]),Ia(this,to,void 0),Ia(this,no,void 0),Ia(this,ro,void 0),Ia(this,io,!1),Ia(this,ao,void 0),Ia(this,so,void 0),Ia(this,oo,!1);let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.type=e,e&&Pa(Zs,this,!0),Pa(to,this,t),Pa($s,this,Ca(to,this)?Ca($s,Ca(to,this)):this),Pa(ao,this,Ca($s,this)===this?n:Ca(ao,Ca($s,this))),Pa(ro,this,Ca($s,this)===this?[]:Ca(ro,Ca($s,this))),"!"!==e||Ca(io,Ca($s,this))||Ca(ro,this).push(this),Pa(no,this,Ca(to,this)?Ca(eo,Ca(to,this)).length:0)}get hasMagic(){if(void 0!==Ca(Zs,this))return Ca(Zs,this);for(const e of Ca(eo,this))if("string"!=typeof e&&(e.type||e.hasMagic))return Pa(Zs,this,!0);return Ca(Zs,this)}toString(){return void 0!==Ca(so,this)?Ca(so,this):this.type?Pa(so,this,this.type+"("+Ca(eo,this).map(e=>String(e)).join("|")+")"):Pa(so,this,Ca(eo,this).map(e=>String(e)).join(""))}push(){for(var e=arguments.length,t=new Array(e),n=0;n"string"==typeof e?e:e.toJSON()):[this.type,...Ca(eo,this).map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===Ca($s,this)||Ca(io,Ca($s,this))&&"!"===(null===(e=Ca(to,this))||void 0===e?void 0:e.type))&&t.push({}),t}isStart(){var e;if(Ca($s,this)===this)return!0;if(null===(e=Ca(to,this))||void 0===e||!e.isStart())return!1;if(0===Ca(no,this))return!0;const t=Ca(to,this);for(let n=0;n1&&void 0!==arguments[1]?arguments[1]:{};const n=new co(null,void 0,t);return ho.call(co,e,n,0,t),n}toMMPattern(){if(this!==Ca($s,this))return Ca($s,this).toMMPattern();const e=this.toString(),[t,n,r,i]=this.toRegExpSource();if(!(r||Ca(Zs,this)||Ca(ao,this).nocase&&!Ca(ao,this).nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return n;const a=(Ca(ao,this).nocase?"i":"")+(i?"u":"");return Object.assign(new RegExp("^".concat(t,"$"),a),{_src:t,_glob:e})}get options(){return Ca(ao,this)}toRegExpSource(e){const t=null!==e&&void 0!==e?e:!!Ca(ao,this).dot;if(Ca($s,this)===this&&La(lo,this,uo).call(this),!this.type){var n;const r=this.isStart()&&this.isEnd(),i=Ca(eo,this).map(t=>{const[n,i,a,s]="string"==typeof t?fo.call(co,t,Ca(Zs,this),r):t.toRegExpSource(e);return Pa(Zs,this,Ca(Zs,this)||a),Pa(Qs,this,Ca(Qs,this)||s),n}).join("");let a="";if(this.isStart()&&"string"==typeof Ca(eo,this)[0]&&(1!==Ca(eo,this).length||!Ks.has(Ca(eo,this)[0]))){const n=Hs,r=t&&n.has(i.charAt(0))||i.startsWith("\\.")&&n.has(i.charAt(2))||i.startsWith("\\.\\.")&&n.has(i.charAt(4)),s=!t&&!e&&n.has(i.charAt(0));a=r?"(?!(?:^|/)\\.\\.?(?:$|/))":s?Gs:""}let s="";return this.isEnd()&&Ca(io,Ca($s,this))&&"!"===(null===(n=Ca(to,this))||void 0===n?void 0:n.type)&&(s="(?:$|\\/)"),[a+i+s,Fs(i),Pa(Zs,this,!!Ca(Zs,this)),Ca(Qs,this)]}const r="*"===this.type||"+"===this.type,i="!"===this.type?"(?:(?!(?:":"(?:";let a=La(lo,this,po).call(this,t);if(this.isStart()&&this.isEnd()&&!a&&"!"!==this.type){const e=this.toString();return Pa(eo,this,[e]),this.type=null,Pa(Zs,this,void 0),[e,Fs(this.toString()),!1,!1]}let s=!r||e||t?"":La(lo,this,po).call(this,!0);s===a&&(s=""),s&&(a="(?:".concat(a,")(?:").concat(s,")*?"));let o="";return o="!"===this.type&&Ca(oo,this)?(this.isStart()&&!t?Gs:"")+Xs:i+a+("!"===this.type?"))"+(!this.isStart()||t||e?"":Gs)+Js+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&s?")":"*"===this.type&&s?")?":")".concat(this.type)),[o,Fs(a),Pa(Zs,this,!!Ca(Zs,this)),Ca(Qs,this)]}}function uo(){if(this!==Ca($s,this))throw new Error("should only call on root");if(Ca(io,this))return this;let e;for(this.toString(),Pa(io,this,!0);e=Ca(ro,this).pop();){if("!"!==e.type)continue;let t=e,n=Ca(to,t);for(;n;){for(let r=Ca(no,t)+1;!n.type&&r{if("string"==typeof t)throw new Error("string type in extglob ast??");const[n,r,i,a]=t.toRegExpSource(e);return Pa(Qs,this,Ca(Qs,this)||a),n}).filter(e=>!(this.isStart()&&this.isEnd()&&!e)).join("|")}function fo(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=!1,i="",a=!1;for(let s=0;s2&&void 0!==arguments[2]?arguments[2]:{};return Rs(t),!(!n.nocomment&&"#"===t.charAt(0))&&new Fo(t,n).match(e)},go=/^\*+([^+@!?\*\[\(]*)$/,yo=e=>t=>!t.startsWith(".")&&t.endsWith(e),_o=e=>t=>t.endsWith(e),vo=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),bo=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),ko=/^\*+\.\*+$/,To=e=>!e.startsWith(".")&&e.includes("."),Ao=e=>"."!==e&&".."!==e&&e.includes("."),xo=/^\.\*+$/,So=e=>"."!==e&&".."!==e&&e.startsWith("."),wo=/^\*+$/,Eo=e=>0!==e.length&&!e.startsWith("."),zo=e=>0!==e.length&&"."!==e&&".."!==e,Io=/^\?+([^+@!?\*\[\(]*)?$/,Lo=e=>{let[t,n=""]=e;const r=jo([t]);return n?(n=n.toLowerCase(),e=>r(e)&&e.toLowerCase().endsWith(n)):r},Co=e=>{let[t,n=""]=e;const r=Oo([t]);return n?(n=n.toLowerCase(),e=>r(e)&&e.toLowerCase().endsWith(n)):r},Po=e=>{let[t,n=""]=e;const r=Oo([t]);return n?e=>r(e)&&e.endsWith(n):r},No=e=>{let[t,n=""]=e;const r=jo([t]);return n?e=>r(e)&&e.endsWith(n):r},jo=e=>{let[t]=e;const n=t.length;return e=>e.length===n&&!e.startsWith(".")},Oo=e=>{let[t]=e;const n=t.length;return e=>e.length===n&&"."!==e&&".."!==e},Ro="object"==typeof process&&process?{NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0,REACT_APP_CLIENT:"firefox",REACT_APP_HOMEPAGE:"https://github.com/fishjar/kiss-translator",REACT_APP_LOGOURL:"https://kiss-translator.rayjar.com/images/logo192.png",REACT_APP_NAME:"KISS Translator",REACT_APP_NAME_CN:"\u7b80\u7ea6\u7ffb\u8bd1",REACT_APP_OPTIONSPAGE:"https://kiss-translator.rayjar.com/options",REACT_APP_OPTIONSPAGE_DEV:"https://kiss-translator-dev.rayjar.com/options",REACT_APP_OPTIONSPAGE_GITHUB:"https://fishjar.github.io/kiss-translator/options.html",REACT_APP_OPTIONSPAGE_LOCAL:"http://localhost:3000/options.html",REACT_APP_RELEASES_URL:"https://github.com/fishjar/kiss-translator/releases",REACT_APP_RULESURL:"https://fishjar.github.io/kiss-rules/kiss-rules_v2.json",REACT_APP_RULESURL_OFF:"https://fishjar.github.io/kiss-rules/kiss-rules-off_v2.json",REACT_APP_RULESURL_ON:"https://fishjar.github.io/kiss-rules/kiss-rules-on_v2.json",REACT_APP_SITEURL:"https://kiss-translator.rayjar.com",REACT_APP_SITEURL_DEV:"https://kiss-translator-dev.rayjar.com",REACT_APP_SITEURL_GITHUB:"https://fishjar.github.io/kiss-translator",REACT_APP_USERSCRIPT_DOWNLOADURL:"https://kiss-translator.rayjar.com/kiss-translator.user.js",REACT_APP_USERSCRIPT_IOS_DOWNLOADURL:"https://kiss-translator.rayjar.com/kiss-translator-ios-safari.user.js",REACT_APP_VERSION:"2.0.29",REACT_APP_VERSION_URL:"https://kiss-translator.rayjar.com/version.txt",REACT_APP_VERSION_URL_DEV:"https://kiss-translator-dev.rayjar.com/version.txt",REACT_APP_VERSION_URL_GITHUB:"https://fishjar.github.io/kiss-translator/version.txt"}.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix";mo.sep="win32"===Ro?"\\":"/";const Do=Symbol("globstar **");mo.GLOBSTAR=Do,mo.filter=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n=>mo(n,e,t)};const Mo=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.assign({},e,t)};mo.defaults=e=>{if(!e||"object"!=typeof e||!Object.keys(e).length)return mo;const t=mo;return Object.assign(function(n,r){return t(n,r,Mo(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))},{Minimatch:class extends t.Minimatch{constructor(t){super(t,Mo(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}))}static defaults(n){return t.defaults(Mo(e,n)).Minimatch}},AST:class extends t.AST{constructor(t,n){super(t,n,Mo(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))}static fromGlob(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.AST.fromGlob(n,Mo(e,r))}},unescape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.unescape(n,Mo(e,r))},escape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.escape(n,Mo(e,r))},filter:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.filter(n,Mo(e,r))},defaults:n=>t.defaults(Mo(e,n)),makeRe:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.makeRe(n,Mo(e,r))},braceExpand:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.braceExpand(n,Mo(e,r))},match:function(n,r){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.match(n,r,Mo(e,i))},sep:t.sep,GLOBSTAR:Do})};const Wo=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Rs(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:Os(e)};mo.braceExpand=Wo,mo.makeRe=function(e){return new Fo(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).makeRe()},mo.match=function(e,t){const n=new Fo(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{});return e=e.filter(e=>n.match(e)),n.options.nonull&&!e.length&&e.push(t),e};const Bo=/[?*]|[+@!]\(.*?\)|\[|\]/;class Fo{constructor(e){u(this,"options",void 0),u(this,"set",void 0),u(this,"pattern",void 0),u(this,"windowsPathsNoEscape",void 0),u(this,"nonegate",void 0),u(this,"negate",void 0),u(this,"comment",void 0),u(this,"empty",void 0),u(this,"preserveMultipleSlashes",void 0),u(this,"partial",void 0),u(this,"globSet",void 0),u(this,"globParts",void 0),u(this,"nocase",void 0),u(this,"isWindows",void 0),u(this,"platform",void 0),u(this,"windowsNoMagicRoot",void 0),u(this,"regexp",void 0);let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Rs(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||Ro,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||!1===t.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==t.windowsNoMagicRoot?t.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const e of this.set)for(const t of e)if("string"!=typeof t)return!0;return!1}debug(){}make(){const e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=function(){return console.error(...arguments)}),this.debug(this.pattern,this.globSet);const n=this.globSet.map(e=>this.slashSplit(e));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((e,t,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){const t=!(""!==e[0]||""!==e[1]||"?"!==e[2]&&Bo.test(e[2])||Bo.test(e[3])),n=/^[a-z]:/i.test(e[0]);if(t)return[...e.slice(0,4),...e.slice(4).map(e=>this.parse(e))];if(n)return[e[0],...e.slice(1).map(e=>this.parse(e))]}return e.map(e=>this.parse(e))});if(this.debug(this.pattern,r),this.set=r.filter(e=>-1===e.indexOf(!1)),this.isWindows)for(let i=0;i=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(e=>{let t=-1;for(;-1!==(t=e.indexOf("**",t+1));){let n=t;for(;"**"===e[n+1];)n++;n!==t&&e.splice(t,n-t)}return e})}levelOneOptimize(e){return e.map(e=>0===(e=e.reduce((e,t)=>{const n=e[e.length-1];return"**"===t&&"**"===n?e:".."===t&&n&&".."!==n&&"."!==n&&"**"!==n?(e.pop(),e):(e.push(t),e)},[])).length?[""]:e)}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let n=1;nr&&n.splice(r+1,i-r);let a=n[r+1];const s=n[r+2],o=n[r+3];if(".."!==a)continue;if(!s||"."===s||".."===s||!o||"."===o||".."===o)continue;t=!0,n.splice(r,1);const l=n.slice(0);l[r]="**",e.push(l),r--}if(!this.preserveMultipleSlashes){for(let e=1;ee.length)}partsMatch(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=0,i=0,a=[],s="";for(;r2&&void 0!==arguments[2]&&arguments[2];const r=this.options;if(this.isWindows){const n="string"==typeof e[0]&&/^[a-z]:$/i.test(e[0]),r=!n&&""===e[0]&&""===e[1]&&"?"===e[2]&&/^[a-z]:$/i.test(e[3]),i="string"==typeof t[0]&&/^[a-z]:$/i.test(t[0]),a=r?3:n?0:void 0,s=!i&&""===t[0]&&""===t[1]&&"?"===t[2]&&"string"==typeof t[3]&&/^[a-z]:$/i.test(t[3])?3:i?0:void 0;if("number"==typeof a&&"number"==typeof s){const[n,r]=[e[a],t[s]];n.toLowerCase()===r.toLowerCase()&&(t[s]=n,s>a?t=t.slice(s):a>s&&(e=e.slice(a)))}}const{optimizationLevel:i=1}=this.options;i>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var a=0,s=0,o=e.length,l=t.length;a>> no match, partial?",e,h,t,p),h!==o))}let i;if("string"==typeof c?(i=u===c,this.debug("string match",c,u,i)):(i=c.test(u),this.debug("pattern match",c,u,i)),!i)return!1}if(a===o&&s===l)return!0;if(a===o)return n;if(s===l)return a===o-1&&""===e[a];throw new Error("wtf?")}braceExpand(){return Wo(this.pattern,this.options)}parse(e){Rs(e);const t=this.options;if("**"===e)return Do;if(""===e)return"";let n,r=null;(n=e.match(wo))?r=t.dot?zo:Eo:(n=e.match(go))?r=(t.nocase?t.dot?bo:vo:t.dot?_o:yo)(n[1]):(n=e.match(Io))?r=(t.nocase?t.dot?Co:Lo:t.dot?Po:No)(n):(n=e.match(ko))?r=t.dot?Ao:To:(n=e.match(xo))&&(r=So);const i=co.fromGlob(e,this.options).toMMPattern();return r&&"object"==typeof i&&Reflect.defineProperty(i,"test",{value:r}),i}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const e=this.set;if(!e.length)return this.regexp=!1,this.regexp;const t=this.options,n=t.noglobstar?"[^/]*?":t.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",r=new Set(t.nocase?["i"]:[]);let i=e.map(e=>{const t=e.map(e=>{if(e instanceof RegExp)for(const t of e.flags.split(""))r.add(t);return"string"==typeof e?e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):e===Do?Do:e._src});return t.forEach((e,r)=>{const i=t[r+1],a=t[r-1];e===Do&&a!==Do&&(void 0===a?void 0!==i&&i!==Do?t[r+1]="(?:\\/|"+n+"\\/)?"+i:t[r]=n:void 0===i?t[r-1]=a+"(?:\\/|"+n+")?":i!==Do&&(t[r-1]=a+"(?:\\/|\\/"+n+"\\/)"+i,t[r+1]=Do))}),t.filter(e=>e!==Do).join("/")}).join("|");const[a,s]=e.length>1?["(?:",")"]:["",""];i="^"+a+i+s+"$",this.negate&&(i="^(?!"+i+").+$");try{this.regexp=new RegExp(i,[...r].join(""))}catch(e){this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.partial;if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;const n=this.options;this.isWindows&&(e=e.split("\\").join("/"));const r=this.slashSplit(e);this.debug(this.pattern,"split",r);const i=this.set;this.debug(this.pattern,"set",i);let a=r[r.length-1];if(!a)for(let s=r.length-2;!a&&s>=0;s--)a=r[s];for(let s=0;s1&&void 0!==arguments[1]?arguments[1]:"","Invalid response: ").concat(e.status," ").concat(e.statusText));return t.status=e.status,t.response=e,t}function Vo(e,t){const{status:n}=t;if(401===n&&e.digest)return t;if(n>=400)throw Uo(t);return t}function Go(e,t){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]?{data:t,headers:e.headers?Ts(e.headers):{},status:e.status,statusText:e.statusText}:t}mo.AST=co,mo.Minimatch=Fo,mo.escape=function(e){let{windowsPathsNoEscape:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&")},mo.unescape=Fs;const Ho=(Ko=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const i=Ns({url:$a(e.remoteURL,qa(t)),method:"COPY",headers:{Destination:$a(e.remoteURL,qa(n)),Overwrite:!1===r.overwrite?"F":"T",Depth:r.shallow?"0":"infinity"}},e,r);return s=function(t){Vo(e,t)},(a=Ps(i,e))&&a.then||(a=Promise.resolve(a)),s?a.then(s):a;var a,s},function(){for(var e=[],t=0;t2&&void 0!==arguments[2]?arguments[2]:Xo.Original;const r=Jo().get(e,t);return"array"===n&&!1===Array.isArray(r)?[r]:"object"===n&&Array.isArray(r)?r[0]:r}function Zo(e){return new Promise(t=>{t(function(e){const{multistatus:t}=e;if(""===t)return{multistatus:{response:[]}};if(!t)throw new Error("Invalid response: No root multistatus found");const n={multistatus:Array.isArray(t)?t[0]:t};return Jo().set(n,"multistatus.response",$o(n,"multistatus.response",Xo.Array)),Jo().set(n,"multistatus.response",Jo().get(n,"multistatus.response").map(e=>function(e){const t=Object.assign({},e);return t.status?Jo().set(t,"status",$o(t,"status",Xo.Object)):(Jo().set(t,"propstat",$o(t,"propstat",Xo.Object)),Jo().set(t,"propstat.prop",$o(t,"propstat.prop",Xo.Object))),t}(e))),n}(new qo.XMLParser({allowBooleanAttributes:!0,attributeNamePrefix:"",textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor:(e,t,n)=>"true"===t||"false"===t?"true"===t:t,tagValueProcessor(e,t,n){if(!n.endsWith("propstat.prop.displayname"))return t}}).parse(e)))})}function Qo(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{getlastmodified:r=null,getcontentlength:i="0",resourcetype:a=null,getcontenttype:s=null,getetag:o=null}=e,l=a&&"object"==typeof a&&void 0!==a.collection?"directory":"file",c={filename:t,basename:Ga().basename(t),lastmod:r,size:parseInt(i,10),type:l,etag:"string"==typeof o?o.replace(/"/g,""):null};return"file"===l&&(c.mime=s&&"string"==typeof s?s.split(";")[0]:""),n&&(void 0!==e.displayname&&(e.displayname=String(e.displayname)),c.props=e),c}function el(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=null;try{e.multistatus.response[0].propstat&&(r=e.multistatus.response[0])}catch(e){}if(!r)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:i,status:a}}=r,[s,o,l]=a.split(" ",3),c=parseInt(o,10);if(c>=400){const e=new Error("Invalid response: ".concat(c," ").concat(l));throw e.status=c,e}return Qo(i,Ja(t),n)}function tl(e){switch(String(e)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(e),10)}}function nl(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const rl=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,i=Ns({url:$a(e.remoteURL,qa(t)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},e,n);return nl(Ps(i,e),function(n){return Vo(e,n),nl(n.text(),function(e){return nl(Zo(e),function(e){const i=el(e,t,r);return Go(n,i,r)})})})});function il(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const al=sl(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=function(e){if(!e||"/"===e)return[];let t=e;const n=[];do{n.push(t),t=Ga().dirname(t)}while(t&&"/"!==t);return n}(Ja(t));r.sort((e,t)=>e.length>t.length?1:t.length>e.length?-1:0);let i=!1;return function(e,t){if("function"==typeof e[cl]){var n,r,i,a=e[cl]();function c(e){try{for(;!(n=a.next()).done;)if((e=t(n.value))&&e.then){if(!pl(e))return void e.then(c,i||(i=ul.bind(null,r=new hl,2)));e=e.v}r?ul(r,1,e):r=e}catch(e){ul(r||(r=new hl),2,e)}}if(c(),a.return){var s=function(e){try{n.done||a.return()}catch(e){}return e};if(r&&r.then)return r.then(s,function(e){throw s(e)});s()}return r}if(!("length"in e))throw new TypeError("Object is not iterable");for(var o=[],l=0;l2&&void 0!==arguments[2]?arguments[2]:{};if(!0===n.recursive)return al(e,t,n);const r=Ns({url:$a(e.remoteURL,(i=qa(t),i.endsWith("/")?i:i+"/")),method:"MKCOL"},e,n);var i;return il(Ps(r,e),function(t){Vo(e,t)})});var fl=Ra(388),ml=Ra.n(fl);const gl=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r={};if("object"==typeof n.range&&"number"==typeof n.range.start){let e="bytes=".concat(n.range.start,"-");"number"==typeof n.range.end&&(e="".concat(e).concat(n.range.end)),r.Range=e}const i=Ns({url:$a(e.remoteURL,qa(t)),method:"GET",headers:r},e,n);return s=function(t){if(Vo(e,t),r.Range&&206!==t.status){const e=new Error("Invalid response code for partial request: ".concat(t.status));throw e.status=t.status,e}return n.callback&&setTimeout(()=>{n.callback(t)},0),t.body},(a=Ps(i,e))&&a.then||(a=Promise.resolve(a)),s?a.then(s):a;var a,s}),yl=()=>{},_l=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Ns({url:$a(e.remoteURL,qa(t)),method:"DELETE"},e,n);return a=function(t){Vo(e,t)},(i=Ps(r,e))&&i.then||(i=Promise.resolve(i)),a?i.then(a):i;var i,a}),bl=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};return function(r,i){try{var a=(s=rl(e,t,n),o=function(){return!0},s&&s.then||(s=Promise.resolve(s)),o?s.then(o):s)}catch(e){return i(e)}var s,o;return a&&a.then?a.then(void 0,i):a}(0,function(e){if(404===e.status)return!1;throw e})});function kl(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Tl=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Ns({url:$a(e.remoteURL,qa(t),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:n.deep?"infinity":"1"}},e,n);return kl(Ps(r,e),function(r){return Vo(e,r),kl(r.text(),function(i){if(!i)throw new Error("Failed parsing directory contents: Empty response");return kl(Zo(i),function(i){const a=Ya(t);let s=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const a=Ga().join(t,"/"),{multistatus:{response:s}}=e,o=s.map(e=>{const t=function(e){try{return e.replace(/^https?:\/\/[^\/]+/,"")}catch(e){throw new Ua(e,"Failed normalising HREF")}}(e.href),{propstat:{prop:n}}=e;return Qo(n,"/"===a?decodeURIComponent(Ja(t)):Ja(Ga().relative(decodeURIComponent(a),decodeURIComponent(t))),r)});return i?o:o.filter(e=>e.basename&&("file"===e.type||e.filename!==n.replace(/\/$/,"")))}(i,Ya(e.remoteBasePath||e.remotePath),a,n.details,n.includeSelf);return n.glob&&(s=function(e,t){return e.filter(e=>mo(e.filename,t,{matchBase:!0}))}(s,n.glob)),Go(r,s,n.details)})})})});function Al(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Ns({url:$a(e.remoteURL,qa(t)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[zl]},e,n);return Sl(Ps(r,e),function(t){return Vo(e,t),Sl(t.text(),function(e){return Go(t,e,n.details)})})});function Sl(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const wl=Al(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=Ns({url:$a(e.remoteURL,qa(t)),method:"GET"},e,n);return Sl(Ps(r,e),function(t){let r;return Vo(e,t),function(e,t){var n=e();return n&&n.then?n.then(t):t()}(function(){return Sl(t.arrayBuffer(),function(e){r=e})},function(){return Go(t,r,n.details)})})}),El=Al(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{format:r="binary"}=n;if("binary"!==r&&"text"!==r)throw new Ua({info:{code:hs.InvalidOutputFormat}},"Invalid output format: ".concat(r));return"text"===r?xl(e,t,n):wl(e,t,n)}),zl=e=>e;function Il(e){return new qo.XMLBuilder({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(Ll({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:e}}},"d"))}function Ll(e,t){const n=p({},e);for(const r in n)n.hasOwnProperty(r)&&(n[r]&&"object"==typeof n[r]&&-1===r.indexOf(":")?(n["".concat(t,":").concat(r)]=Ll(n[r],t),delete n[r]):!1===/^@_/.test(r)&&(n["".concat(t,":").concat(r)]=n[r],delete n[r]));return n}function Cl(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}function Pl(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const i=Ns({url:$a(e.remoteURL,qa(t)),method:"UNLOCK",headers:{"Lock-Token":n}},e,r);return Cl(Ps(i,e),function(t){if(Vo(e,t),204!==t.status&&200!==t.status)throw Uo(t)})}),jl=Pl(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{refreshToken:r,timeout:i=Ol}=n,a={Accept:"text/plain,application/xml",Timeout:i};r&&(a.If=r);const s=Ns({url:$a(e.remoteURL,qa(t)),method:"LOCK",headers:a,data:Il(e.contactHref)},e,n);return Cl(Ps(s,e),function(t){return Vo(e,t),Cl(t.text(),function(e){const n=(a=e,new qo.XMLParser({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(a)),r=Jo().get(n,"prop.lockdiscovery.activelock.locktoken.href"),i=Jo().get(n,"prop.lockdiscovery.activelock.timeout");var a;if(!r)throw Uo(t,"No lock token received: ");return{token:r,serverTimeout:i}})})}),Ol="Infinite, Second-4100000000";function Rl(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Dl=function(e){return function(){for(var t=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:{};const n=t.path||"/",r=Ns({url:$a(e.remoteURL,n),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},e,t);return Rl(Ps(r,e),function(n){return Vo(e,n),Rl(n.text(),function(e){return Rl(Zo(e),function(e){const r=function(e){try{const[t]=e.multistatus.response,{propstat:{prop:{"quota-used-bytes":n,"quota-available-bytes":r}}}=t;return void 0!==n&&void 0!==r?{used:parseInt(String(n),10),available:tl(r)}:null}catch(e){}return null}(e);return Go(n,r,t.details)})})})});function Ml(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Wl=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,i=Ns({url:$a(e.remoteURL,qa(t)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":e.headers["Content-Type"]||"application/xml; charset=utf-8"}},e,n);return Ml(Ps(i,e),function(n){return Vo(e,n),Ml(n.text(),function(e){return Ml(Zo(e),function(e){const i=function(e,t,n){const r={truncated:!1,results:[]};return r.truncated=e.multistatus.response.some(e=>{var n,r;return"507"===(null===(n=(e.status||(null===(r=e.propstat)||void 0===r?void 0:r.status)).split(" ",3))||void 0===n?void 0:n[1])&&e.href.replace(/\/$/,"").endsWith(qa(t).replace(/\/$/,""))}),e.multistatus.response.forEach(e=>{if(void 0===e.propstat)return;const t=e.href.split("/").map(decodeURIComponent).join("/");r.results.push(Qo(e.propstat.prop,t,n))}),r}(e,t,r);return Go(n,i,r)})})})}),Bl=function(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const i=Ns({url:$a(e.remoteURL,qa(t)),method:"MOVE",headers:{Destination:$a(e.remoteURL,qa(n)),Overwrite:!1===r.overwrite?"F":"T"}},e,r);return s=function(t){Vo(e,t)},(a=Ps(i,e))&&a.then||(a=Promise.resolve(a)),s?a.then(s):a;var a,s});var Fl=Ra(172);const Ul=function(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const{contentLength:i=!0,overwrite:a=!0}=r,s={"Content-Type":"application/octet-stream"};!1===i||(s["Content-Length"]="".concat("number"==typeof i?i:function(e){if(ws(e))return e.byteLength;if(Es(e))return e.length;if("string"==typeof e)return(0,Fl.d)(e);throw new Ua({info:{code:hs.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}(n))),a||(s["If-None-Match"]="*");const o=Ns({url:$a(e.remoteURL,qa(t)),method:"PUT",headers:s,data:n},e,r);return c=function(t){try{Vo(e,t)}catch(e){const n=e;if(412!==n.status||a)throw n;return!1}return!0},(l=Ps(o,e))&&l.then||(l=Promise.resolve(l)),c?l.then(c):l;var l,c}),Vl=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Ns({url:$a(e.remoteURL,qa(t)),method:"OPTIONS"},e,n);return a=function(t){var n,r;try{Vo(e,t)}catch(e){throw e}return{compliance:(null!==(n=t.headers.get("DAV"))&&void 0!==n?n:"").split(",").map(e=>e.trim()),server:null!==(r=t.headers.get("Server"))&&void 0!==r?r:""}},(i=Ps(r,e))&&i.then||(i=Promise.resolve(i)),a?i.then(a):i;var i,a});function Gl(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Hl=Yl(function(e,t,n,r,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new Ua({info:{code:hs.InvalidUpdateRange}},"Invalid update range ".concat(n," for partial update"));const s={"Content-Type":"application/octet-stream","Content-Length":""+(r-n+1),"Content-Range":"bytes ".concat(n,"-").concat(r,"/*")},o=Ns({url:$a(e.remoteURL,qa(t)),method:"PUT",headers:s,data:i},e,a);return Gl(Ps(o,e),function(t){Vo(e,t)})});function Kl(e,t){var n=e();return n&&n.then?n.then(t):t(n)}const ql=Yl(function(e,t,n,r,i){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new Ua({info:{code:hs.InvalidUpdateRange}},"Invalid update range ".concat(n," for partial update"));const s={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(r-n+1),"X-Update-Range":"bytes=".concat(n,"-").concat(r)},o=Ns({url:$a(e.remoteURL,qa(t)),method:"PATCH",headers:s,data:i},e,a);return Gl(Ps(o,e),function(t){Vo(e,t)})});function Yl(e){return function(){for(var t=[],n=0;n5&&void 0!==arguments[5]?arguments[5]:{};return Gl(Vl(e,t,a),function(s){let o=!1;return Kl(function(){if(s.compliance.includes("sabredav-partialupdate"))return Gl(ql(e,t,n,r,i,a),function(e){return o=!0,e})},function(l){let c=!1;return o?l:Kl(function(){if(s.server.includes("Apache")&&s.compliance.includes(""))return Gl(Hl(e,t,n,r,i,a),function(e){return c=!0,e})},function(e){if(c)return e;throw new Ua({info:{code:hs.NotSupported}},"Not supported")})})})}),Xl="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function $l(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{authType:n=null,remoteBasePath:r,contactHref:i=Xl,ha1:a,headers:s={},httpAgent:o,httpsAgent:l,password:c,token:u,username:h,withCredentials:p}=t;let d=n;d||(d=h||c?us.Password:us.None);const f={authType:d,remoteBasePath:r,contactHref:i,ha1:a,headers:Object.assign({},s),httpAgent:o,httpsAgent:l,password:c,remotePath:Xa(e),remoteURL:e,token:u,username:h,withCredentials:p};return ps(f,h,c,u,a),{copyFile:(e,t,n)=>Ho(f,e,t,n),createDirectory:(e,t)=>dl(f,e,t),createReadStream:(e,t)=>function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=new(0,ml().PassThrough);return gl(e,t,n).then(e=>{e.pipe(r)}).catch(e=>{r.emit("error",e)}),r}(f,e,t),createWriteStream:(e,t,n)=>function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:yl;const i=new(0,ml().PassThrough),a={};!1===n.overwrite&&(a["If-None-Match"]="*");const s=Ns({url:$a(e.remoteURL,qa(t)),method:"PUT",headers:a,data:i,maxRedirects:0},e,n);return Ps(s,e).then(t=>Vo(e,t)).then(e=>{setTimeout(()=>{r(e)},0)}).catch(e=>{i.emit("error",e)}),i}(f,e,t,n),customRequest:(e,t)=>_l(f,e,t),deleteFile:(e,t)=>vl(f,e,t),exists:(e,t)=>bl(f,e,t),getDirectoryContents:(e,t)=>Tl(f,e,t),getFileContents:(e,t)=>El(f,e,t),getFileDownloadLink:e=>function(e,t){let n=$a(e.remoteURL,qa(t));const r=/^https:/i.test(n)?"https":"http";switch(e.authType){case us.None:break;case us.Password:{const t=is(e.headers.Authorization.replace(/^Basic /i,"").trim());n=n.replace(/^https?:\/\//,"".concat(r,"://").concat(t,"@"));break}default:throw new Ua({info:{code:hs.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(e.authType))}return n}(f,e),getFileUploadLink:e=>function(e,t){let n="".concat($a(e.remoteURL,qa(t)),"?Content-Type=application/octet-stream");const r=/^https:/i.test(n)?"https":"http";switch(e.authType){case us.None:break;case us.Password:{const t=is(e.headers.Authorization.replace(/^Basic /i,"").trim());n=n.replace(/^https?:\/\//,"".concat(r,"://").concat(t,"@"));break}default:throw new Ua({info:{code:hs.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(e.authType))}return n}(f,e),getHeaders:()=>Object.assign({},f.headers),getQuota:e=>Dl(f,e),lock:(e,t)=>jl(f,e,t),moveFile:(e,t,n)=>Bl(f,e,t,n),putFileContents:(e,t,n)=>Ul(f,e,t,n),partialUpdateFileContents:(e,t,n,r,i)=>Jl(f,e,t,n,r,i),getDAVCompliance:e=>Vl(f,e),search:(e,t)=>Wl(f,e,t),setHeaders:e=>{f.headers=Object.assign({},e)},stat:(e,t)=>rl(f,e,t),unlock:(e,t,n)=>Nl(f,e,t,n)}}var Zl=Da.UU,Ql=Da.Gu;const ec="AES-GCM",tc="PBKDF2-SHA-256",nc=1e5,rc=new TextEncoder,ic=new TextDecoder,ac=()=>{var e;const t=null===(e=globalThis.crypto)||void 0===e?void 0:e.subtle;if(!t)throw new Error("Web Crypto is not available");return t},sc=e=>{let t="";for(let n=0;n{const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r{const n=ac(),r=await n.importKey("raw",rc.encode(e),"PBKDF2",!1,["deriveKey"]);return n.deriveKey({name:"PBKDF2",salt:t,iterations:nc,hash:"SHA-256"},r,{name:ec,length:256},!1,["encrypt","decrypt"])},cc=async(e,t)=>{const n=globalThis.crypto.getRandomValues(new Uint8Array(16)),r=globalThis.crypto.getRandomValues(new Uint8Array(12)),i=await lc(t,n),a=await ac().encrypt({name:ec,iv:r},i,rc.encode(e));return JSON.stringify({encrypted:!0,version:1,alg:ec,kdf:tc,iterations:nc,salt:sc(n),iv:sc(r),data:sc(new Uint8Array(a))})},uc=async(e,t)=>{const n=(e=>{try{const t=JSON.parse(e);if(!0===(null===t||void 0===t?void 0:t.encrypted)&&t.version&&t.alg&&t.kdf&&t.data)return t}catch(t){}return null})(e);if(!n)return{value:e,encrypted:!1};if(1!==n.version||n.alg!==ec||n.kdf!==tc||n.iterations!==nc)throw new Error("Unsupported sync encryption format");const r=await lc(t,oc(n.salt)),i=await ac().decrypt({name:ec,iv:oc(n.iv)},r,oc(n.data));return{value:ic.decode(i),encrypted:!0}};let hc=!1;const pc="kiss translator sync files",dc=async function(e,t){let{syncUrl:n,syncUser:r,syncKey:i}=t,{forceWrite:a=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};hc||(hc=!0,Ql().patch("request",e=>mr(e.url,{method:e.method,headers:e.headers,body:e.data})));const o=Zl(n,{username:r,password:i}),l="/".concat(s),c="/".concat(s,"/").concat(e.key);!1===await o.exists(l)&&await o.createDirectory(l);if(await o.exists(c)&&!a){const t=await o.getFileContents(c,{format:"text"}),n=JSON.parse(t);if(n.updateAt>=e.updateAt)return n}return await o.putFileContents(c,JSON.stringify(e,null,2)),e},fc=async(e,t)=>{let{syncUrl:n,syncKey:r}=t;return n=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(!e)return"";let r=e.length;for(;r>e.length-n&&e[r-1]===t;)r--;return e.slice(0,r)}(n,"/"),await(async(e,t,n)=>Tr(e,{headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(await zn(t,"KISS-Translator-SYNC"))},method:"POST",body:JSON.stringify(n)}))("".concat(n,"/sync"),r,e)},mc=async e=>{const t=await(async e=>Tr("".concat(Sa,"?per_page=100"),{method:"GET",headers:wa(e)}))(e);return t.filter(e=>e.description===pc).sort((e,t)=>{const n=Date.parse(e.updated_at||e.created_at||0);return Date.parse(t.updated_at||t.created_at||0)-n})[0]},gc=async function(e,t){var n,r;let{syncUrl:i,syncKey:a}=t,{forceWrite:s=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").trim();if(!e)return"";try{const t=new URL(e).pathname.split("/").filter(Boolean);return t[t.length-1]||""}catch(t){return e}}(i);const l=(c=e.key).startsWith("kiss-rules_")?"sync-rules_".concat(c):c===It?"sync-words_".concat(c):c;var c;const u=JSON.stringify(e,null,2);if(!o){const e=await mc(a);null!==e&&void 0!==e&&e.id&&(o=e.id,await Dr({syncUrl:o}))}if(!o){const t=await(async(e,t,n)=>Tr(Sa,{method:"POST",headers:wa(e),body:JSON.stringify({description:n,public:!1,files:{[t.key]:{content:t.content}}})}))(a,{key:l,content:u},pc);return await Dr({syncUrl:t.id}),e}const h=await(async(e,t)=>Tr("".concat(Sa,"/").concat(e),{method:"GET",headers:wa(t)}))(o,a),p=(null===(n=h.files)||void 0===n?void 0:n[l])||(null===(r=h.files)||void 0===r?void 0:r[e.key]);if(p&&!s){const t=p.content||await(d=p.raw_url,Tr(d,void 0,{expect:"text"})),n=JSON.parse(t);if(n.updateAt>=e.updateAt)return n}var d;return await(async(e,t,n,r)=>Tr("".concat(Sa,"/").concat(e),{method:"PATCH",headers:wa(t),body:JSON.stringify({files:{[n]:{content:r}}})}))(o,a,l,u),e},yc=async(e,t)=>p(p({},e),{},{value:await cc(e.value,t)}),_c=async(e,t,n,r)=>e===ut?await dc(t,n,r):e===ht?await gc(t,n,r):await fc(t,n),vc=async function(e,t){let{syncEncryptKey:n,forceRemoteRead:r=!1,persistMeta:i=!0}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{syncType:a,syncUrl:s,syncUser:o,syncKey:l,syncEncryptKey:c,syncMeta:u={}}=await Rr(),h=null!==n&&void 0!==n?n:c;if(!l||!h||a!==ht&&!s||a===ut&&!o)return;let{updateAt:d=0,syncAt:f=0}=u[e]||{};0===f&&(d=0);const m={key:e,value:JSON.stringify(t),updateAt:r?0:d},g={syncUrl:s,syncUser:o,syncKey:l},y=await yc(m,h),_=await _c(a,y,g);if(!_)throw new Error("sync data got err",e);const{data:v,encrypted:b}=await(async(e,t)=>{const{value:n,encrypted:r}=await uc(e.value,t);return{data:p(p({},e),{},{value:n}),encrypted:r}})(_,h),k=JSON.parse(v.value),T=v.updateAt>d;return b||r||await(async(e,t,n,r)=>{const i=await yc(t,r);await _c(e,i,n,{forceWrite:!0})})(a,v,g,h),i&&(u[e]={updateAt:v.updateAt,syncAt:Date.now()},await Dr({syncMeta:u})),{value:k,isNew:T}},bc=async e=>{const t=await Cr(),n=await vc(Lt,t,e);return null!==n&&void 0!==n&&n.isNew&&!1!==(null===e||void 0===e?void 0:e.applyRemote)&&await Pr(n.value),n},kc=async e=>{const t=await Nr(),n=await vc(zt,t,e);return null!==n&&void 0!==n&&n.isNew&&!1!==(null===e||void 0===e?void 0:e.applyRemote)&&await jr(n.value),n},Tc=async()=>{try{await kc()}catch(e){rt("sync user rules",e.message)}},Ac=async e=>{const t=await Or(),n=await vc(It,t,e);var r;return null!==n&&void 0!==n&&n.isNew&&!1!==(null===e||void 0===e?void 0:e.applyRemote)&&await(r=n.value,Sr(Ot,r)),n},xc=async()=>{await(async()=>{try{await bc()}catch(e){rt("sync setting",e.message)}})(),await Tc(),await(async()=>{try{await Ac()}catch(e){rt("sync fav words",e.message)}})()};const Sc=async e=>{const t=await Nr(),n=t.findIndex(t=>t.pattern!==ye&&((e,t)=>{if(0===e.length||0===t.length)return!1;t="*"+t+"*";let[n,r]=[0,0],[i,a]=[-1,-1];for(;ne.pattern===ye)||{});Object.keys(Ae).forEach(t=>{if("isPlainText"===t){const n=!0===e[t]||"true"===e[t]?"true":!1===e[t]||"false"===e[t]?"false":Te[t];return void(r[t]=n===i[t]?Te[t]:n)}r[t]=e[t]&&e[t]!==i[t]?e[t]:Te[t]}),t.unshift(r),await jr(t),Tc()},wc=async e=>{const{dataCaches:t={}}=await Rr();t[e]=Date.now(),await Dr({dataCaches:t})},Ec=async e=>{const t=await(e=>Tr(e))(e),n=(e=>{if("string"===En(e)&&(e=JSON.parse(e)),"array"!==En(e))throw new Error("data error");const t=ne.map(e=>e[0]),n=te.map(e=>e[0]),r=new Set;return e.filter(e=>"object"===En(e)).filter(e=>{let{pattern:t}=e;return"string"===En(t)&&!r.has(t.trim())&&(r.add(t.trim()),!0)}).map(e=>{let{pattern:r,enabled:i,selector:a,keepSelector:s,blockSelector:o,rootsSelector:l,ignoreSelector:c,terms:u,aiTerms:h,termsStyle:p,highlightStyle:d,textExtStyle:f,selectStyle:m,parentStyle:g,grandStyle:y,injectJs:_,injectCss:v,apiSlug:b,fromLang:k,toLang:T,textStyle:A,wrapOriginal:x,originalTextStyle:S,transOpen:w,transOnly:E,transOnlyRevert:z,transOnlyRevertDelay:I,transOrder:L,autoScan:C,hasRichText:P,hasShadowroot:N,scanAll:j,isPlainText:O,transTag:R,transTitle:D,transStartHook:M,transEndHook:W,splitParagraph:B,splitLength:F,highlightWords:U}=e;return{pattern:r.trim(),enabled:"boolean"!==En(i)||i,selector:"string"===En(a)?a:"",keepSelector:"string"===En(s)?s:"",blockSelector:"string"===En(o)?o:"",rootsSelector:"string"===En(l)?l:"",ignoreSelector:"string"===En(c)?c:"",terms:"string"===En(u)?u:"",aiTerms:"string"===En(h)?h:"",termsStyle:"string"===En(p)?p:"",highlightStyle:"string"===En(d)?d:"",textExtStyle:"string"===En(f)?f:"",selectStyle:"string"===En(m)?m:"",parentStyle:"string"===En(g)?g:"",grandStyle:"string"===En(y)?y:"",injectJs:"string"===En(_)?_:"",injectCss:"string"===En(v)?v:"",apiSlug:"string"===En(b)&&""!==b.trim()?b.trim():ye,fromLang:xn([ye,...t],k),toLang:xn([ye,...n],T),textStyle:"string"===En(A)&&""!==A.trim()?A.trim():ye,wrapOriginal:xn([ye,"true","false"],[ye,"true","false"].includes(x)?x:r.trim()===ye?Ae.wrapOriginal:ye),originalTextStyle:"string"===En(S)&&""!==S.trim()?S.trim():r.trim()===ye?Ae.originalTextStyle:ye,transOpen:xn([ye,"true","false"],w),transOnly:xn([ye,"true","false"],E),transOnlyRevert:xn([ye,"true","false"],z),transOnlyRevertDelay:"string"!==En(I)||isNaN(parseFloat(I))?ye:I,transOrder:xn([ye,"original-first","translation-first"],L),autoScan:xn([ye,"true","false"],C),hasRichText:xn([ye,"true","false"],P),hasShadowroot:xn([ye,"true","false"],N),scanAll:xn([ye,"true","false"],j),isPlainText:xn([ye,"true","false"],O),transTag:xn([ye,"span","font"],R),transTitle:xn([ye,"true","false"],D),transStartHook:"string"===En(M)?M:"",transEndHook:"string"===En(W)?W:"",splitParagraph:xn([ye,...ve],B),splitLength:Number.isInteger(F)?F:0,highlightWords:xn([ye,...ke],U)}})})(t).filter(e=>{let{pattern:t}=e;return!wn(t,ye)});return n.length>0&&await((e,t)=>Sr(Wt+e,t))(e,n),n},zc=async e=>{let{subrulesList:t}=e;try{const{subRulesSyncAt:e}=await Rr(),n=Date.now();n-e>864e5&&(await(async e=>{for(const n of e)try{await Ec(n.url),await wc(n.url)}catch(t){rt("sync subrule error: ".concat(n.url),t)}})(t),await Dr({subRulesSyncAt:n}))}catch(n){rt("try sync all subrules",n)}},Ic=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kiss-translator-inline-js";if(document.getElementById(t))return;const n=document.createElement("script");n.setAttribute("data-source","kiss-inject injectInlineJsBg"),n.type="text/javascript",n.id=t,n.textContent=e,(document.head||document.documentElement).appendChild(n)},Lc=e=>{var t;const n=document.createElement("style");n.setAttribute("data-source","kiss-inject injectInternalCss"),n.textContent=e,null===(t=document.head)||void 0===t||t.appendChild(n)};var Cc,Pc,Nc,jc,Oc,Rc,Dc,Mc,Wc,Bc,Fc,Uc,Vc,Gc,Hc;globalThis.__KISS_CONTEXT__="background";let Kc=!1;async function qc(){if(!Kc){Kc=!0;try{if("function"===typeof i().runtime.openOptionsPage)try{return void await i().runtime.openOptionsPage()}catch(e){rt("open options page with runtime API",e)}try{await i().tabs.create({url:i().runtime.getURL("options.html")})}catch(e){rt("open options page in new tab",e)}}finally{Kc=!1}}}const Yc=1e4;const Jc=["content-security-policy","content-security-policy-report-only","x-webkit-csp","x-content-security-policy"];let Xc=null,$c=null;const Zc={left:100,top:100,width:400,height:400};async function Qc(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1;try{await i().contextMenus.removeAll()}catch(t){rt("remove contextMenus",t)}switch(e){case 1:i().contextMenus.create({id:Ut,title:i().i18n.getMessage("toggle_translate"),contexts:["page"]}),i().contextMenus.create({id:Kt,title:i().i18n.getMessage("translate_selection"),contexts:["selection"]});break;case 2:i().contextMenus.create({id:Ut,title:i().i18n.getMessage("toggle_translate"),contexts:["page","selection"]}),i().contextMenus.create({id:Vt,title:i().i18n.getMessage("toggle_translate_only"),contexts:["page","selection"]}),i().contextMenus.create({id:Gt,title:i().i18n.getMessage("toggle_style"),contexts:["page","selection"]}),i().contextMenus.create({id:Kt,title:i().i18n.getMessage("open_tranbox"),contexts:["page","selection"]}),i().contextMenus.create({id:"options_separator",type:"separator",contexts:["page","selection"]}),i().contextMenus.create({id:Ht,title:i().i18n.getMessage("open_options"),contexts:["page","selection"]})}}async function eu(e){let{csplist:t,orilist:n}=e;try{const e=await i().declarativeNetRequest.getDynamicRules(),r=[],a=[];if(void 0!==t){let n=t;"string"===typeof n&&(n=n.split(/\n|,/).map(e=>e.trim()).filter(Boolean));const i=e.filter(e=>e.id>=1&&e.ide.id);a.push(...i);const s=n.map((e,t)=>({id:1+t,action:{type:"modifyHeaders",responseHeaders:Jc.map(e=>({operation:"remove",header:e}))},condition:{urlFilter:e,resourceTypes:["main_frame","sub_frame"]}}));r.push(...s)}if(void 0!==n){let t=n;"string"===typeof t&&(t=t.split(/\n|,/).map(e=>e.trim()).filter(Boolean));const i=e.filter(e=>e.id>=Yc).map(e=>e.id);a.push(...i);const s=t.map((e,t)=>{const n={urlFilter:e,resourceTypes:["xmlhttprequest"]},r=function(e){try{const t=new URL(/^[a-z]+:\/\//i.test(e)?e:"https://".concat(e)).hostname,n=t.split(".").filter(Boolean);return n.length<=2?t:n.slice(-2).join(".")}catch(t){return rt("getRegistrableDomain error",t),""}}(e);return r&&(n.excludedInitiatorDomains=[r]),{id:Yc+t,action:{type:"modifyHeaders",requestHeaders:[{header:"Origin",operation:"set",value:e}]},condition:n}});r.push(...s)}(a.length>0||r.length>0)&&await i().declarativeNetRequest.updateDynamicRules({removeRuleIds:a,addRules:r})}catch(r){rt("update csp rules",r)}}null===(Cc=i().windows)||void 0===Cc||null===(Pc=Cc.onFocusChanged)||void 0===Pc||null===(Nc=Pc.addListener)||void 0===Nc||Nc.call(Pc,async e=>{null!==Xc&&await async function(e){try{const t=await i().windows.get(e);t&&"normal"===t.state&&($c={left:Math.round(t.left),top:Math.round(t.top),width:Math.round(t.width),height:Math.round(t.height)},rt("Bounds cached via fallback:",$c))}catch(Oa){}}(Xc)}),null===(jc=i().windows)||void 0===jc||null===(Oc=jc.onBoundsChanged)||void 0===Oc||null===(Rc=Oc.addListener)||void 0===Rc||Rc.call(Oc,e=>{var t,n,r,i;null!==Xc&&e.id===Xc&&($c={left:null!==(t=e.left)&&void 0!==t?t:$c.left,top:null!==(n=e.top)&&void 0!==n?n:$c.top,width:null!==(r=e.width)&&void 0!==r?r:$c.width,height:null!==(i=e.height)&&void 0!==i?i:$c.height})}),null===(Dc=i().windows)||void 0===Dc||null===(Mc=Dc.onRemoved)||void 0===Mc||null===(Wc=Mc.addListener)||void 0===Wc||Wc.call(Mc,async e=>{e===Xc&&($c&&await async function(e){if(e)try{await i().storage.local.set({[Mt]:e}),rt("Final separate window bounds saved to storage",e)}catch(t){rt("Save separate window bounds error",t)}}($c),Xc=null,$c=null)}),i().runtime.onInstalled.addListener(async e=>{const t=await async function(){try{const e=await i().i18n.getUILanguage();return"zh-TW"===e?"zh_TW":e.startsWith("zh")?"zh":["ja","ko"].includes(e.substring(0,2))?e.substring(0,2):"en"}catch(e){return rt("get UI language error",e),"en"}}();await(async e=>{try{await wr(Pt,p(p({},bt),{},{uiLang:e})),await wr(jt,xe),await wr(Rt,pt),await wr("".concat(Wt).concat("https://fishjar.github.io/kiss-rules/kiss-rules_v2.json"),Se)}catch(t){rt("init default",t)}})(t),"update"===(null===e||void 0===e?void 0:e.reason)&&await(async()=>{const e=await Ir();if(e&&Ze(e)<3)try{const t=et(await Lr(e,e));await Sr(Pt,t),rt("Migration to V".concat(3," completed."))}catch(t){rt("Data migration to V".concat(3," failed:"),t)}})();const{contextMenuType:n,csplist:r,orilist:a,subrulesList:s}=await Cr();Qc(n),eu({csplist:r,orilist:a}),zc({subrulesList:s})}),i().runtime.onStartup.addListener(async()=>{const{clearCache:e,contextMenuType:t,subrulesList:n,csplist:r,orilist:i,logLevel:a}=await Cr();nt.setLevel(a),e&&tr(),Qc(t),eu({csplist:r,orilist:i}),xc(),zc({subrulesList:n})});const tu=async(e,t)=>{const n=await $n();return i().scripting.executeScript({target:{tabId:n,allFrames:!0},func:e,args:[t],world:"MAIN"})},nu={[Yt]:e=>gr(e),[Jt]:e=>rr(e),[Xt]:e=>ir(e),[gn]:function(){let{text:e="",salt:t=""}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return zn(e,t)},[$t]:()=>qc(),[Zt]:e=>Sc(e),[on]:e=>tu(Ic,e),[ln]:e=>tu(Lc,e),[cn]:e=>eu(e),[an]:e=>Qc(e),[sn]:()=>i().commands.getAll(),[un]:e=>(e=>xa.detectLanguage(e.text))(e),[hn]:e=>(e=>xa.translateText(e.text,e.to,e.from))(e),[pn]:e=>nt.setLevel(e),[dn]:()=>tr(),[fn]:()=>async function(){try{if(null!==Xc){const e=(await i().windows.getAll()).find(e=>e.id===Xc);if(e)return await i().windows.update(Xc,{focused:!0}),rt("Separate window is ready"),e}const e=await i().storage.local.get(Mt),t=e&&e[Mt],n=Object.assign({},Zc,t||{}),r=await i().windows.create({url:"popup.html#tranbox",type:"popup",left:Math.round(n.left),top:Math.round(n.top),width:Math.round(n.width),height:Math.round(n.height),focused:!0});return Xc=r.id,$c={left:r.left,top:r.top,width:r.width,height:r.height},r}catch(e){rt("open separate window error",e)}}(),[mn]:(e,t)=>{var n;return async function(e,t){const n=e?"_active":"",r={16:"images/logo16".concat(n,".png"),32:"images/logo32".concat(n,".png"),48:"images/logo48".concat(n,".png"),128:"images/logo128".concat(n,".png"),192:"images/logo192".concat(n,".png")};try{i().action?await i().action.setIcon({path:r,tabId:t}):await i().browserAction.setIcon({path:r,tabId:t})}catch(a){rt("updateIcon error",a)}}(e,null===t||void 0===t||null===(n=t.tab)||void 0===n?void 0:n.id)}};async function ru(e,n){const{input:r,init:i,opts:a}=n,s=new AbortController;let o=!1;const l=()=>{o=!0,s.abort()};e.onDisconnect.addListener(l);try{var c,u=!1,h=!1;try{for(var p,d=function(e){var n,r,i,a=2;for("undefined"!=typeof Symbol&&(r=Symbol.asyncIterator,i=Symbol.iterator);a--;){if(r&&null!=(n=e[r]))return n.call(e);if(i&&null!=(n=e[i]))return new t(n.call(e));r="@@asyncIterator",i="@@iterator"}throw new TypeError("Object is not async iterable")}(vr(r,i,{httpTimeout:a.httpTimeout,signal:s.signal}));u=!(p=await d.next()).done;u=!1){const t=p.value;if(o)break;e.postMessage({type:"delta",data:t})}}catch(g){h=!0,c=g}finally{try{u&&null!=d.return&&await d.return()}finally{if(h)throw c}}o||e.postMessage({type:"done"})}catch(y){"AbortError"!==y.name&&(o||e.postMessage({type:"error",error:y.message}))}finally{var f,m;null===(f=(m=e.onDisconnect).removeListener)||void 0===f||f.call(m,l)}}i().runtime.onMessage.addListener(async(e,t)=>{let{action:n,args:r}=e;const i=nu[n];if(!i)throw new Error("Message action is unavailable: ".concat(n));return i(r,t)}),null===(Bc=i().commands)||void 0===Bc||null===(Fc=Bc.onCommand)||void 0===Fc||null===(Uc=Fc.addListener)||void 0===Uc||Uc.call(Fc,e=>{switch(e){case Ut:Qn(Qt);break;case Vt:Qn(en);break;case Kt:Qn(nn);break;case qt:Qn(rn);break;case Gt:Qn(tn);break;case Ht:qc();break;case"openSeparateWindow":nu[fn]&&nu[fn]()}}),null===i()||void 0===i()||null===(Vc=i().contextMenus)||void 0===Vc||null===(Gc=Vc.onClicked)||void 0===Gc||null===(Hc=Gc.addListener)||void 0===Hc||Hc.call(Gc,e=>{let{menuItemId:t,selectionText:n}=e;switch(t){case Ut:Qn(Qt);break;case Vt:Qn(en);break;case Gt:Qn(tn);break;case Kt:Qn(nn,{text:n});break;case qt:Qn(rn);break;case Ht:qc()}}),i().runtime.onConnect.addListener(e=>{"kiss_stream_fetch"===e.name&&e.onMessage.addListener(t=>{"start"===t.action&&ru(e,t.args)})})})()})(); \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/background.js.LICENSE.txt b/android/app/src/main/assets/extensions/kiss_translator/background.js.LICENSE.txt new file mode 100644 index 00000000..41d433e4 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/background.js.LICENSE.txt @@ -0,0 +1,14 @@ +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + +/*! For license information please see index.js.LICENSE.txt */ diff --git a/android/app/src/main/assets/extensions/kiss_translator/content.js b/android/app/src/main/assets/extensions/kiss_translator/content.js new file mode 100644 index 00000000..4b6d8333 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/content.js @@ -0,0 +1,2 @@ +/*! For license information please see content.js.LICENSE.txt */ +(()=>{var e={63(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(7461).A},252(e,t,n){"use strict";n.d(t,{Zy:()=>a,aQ:()=>o});var r=n(7877);const i="firefox",o=r.vGH.includes(i),a=i===r.tPe;r.n_K,r.ojT},288(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r.A});var r=n(6253)},328(e,t,n){"use strict";n.d(t,{DC:()=>u,EW:()=>y,Ee:()=>E,F_:()=>g,GR:()=>d,Gt:()=>C,I:()=>h,J4:()=>k,K8:()=>A,M:()=>S,Qz:()=>i,Rf:()=>p,U3:()=>D,XR:()=>I,_T:()=>c,_V:()=>T,cO:()=>w,gr:()=>m,j7:()=>o,kY:()=>a,k_:()=>x,km:()=>F,mu:()=>b,n1:()=>f,nR:()=>P,sR:()=>_,u2:()=>l,vL:()=>r,wP:()=>v,x2:()=>s});const r="kiss_fetch",i="get_httpcache",o="put_httpcache",a="open_options",s="save_rule",l="toggle_translate",u="toggle_translate_only",c="toggle_styles",d="open_tranbox",h="trans_getrule",p="trans_putrule",f="toggle_transbox",m="toggle_popup",g="toggle_mousehover",v="toggle_hover_node",y="toggle_input_translation",b="input_translate",A="command_shortcuts",x="inject_css",w="builtinai_detect",k="builtinai_translte",S="set_loglevel",E="clear_caches",C="open_separate_window",_="kiss_stream_fetch",T="update_icon",D="sha256",P="kiss_translator_inner",I="kiss_translator",F="KISS_XHR_DATA_YOUTUBE"},383(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"m12.87 15.07-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2zm-2.62 7 1.62-4.33L19.12 17z"}),"Translate")},450(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(4346),i=n(6121);class o{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.tokenizer=new r.A(e),this.tokenParser=new i.A(e),this.tokenizer.onToken=this.tokenParser.write.bind(this.tokenParser),this.tokenizer.onEnd=()=>{this.tokenParser.isEnded||this.tokenParser.end()},this.tokenParser.onError=this.tokenizer.error.bind(this.tokenizer),this.tokenParser.onEnd=()=>{this.tokenizer.isEnded||this.tokenizer.end()}}get isEnded(){return this.tokenizer.isEnded&&this.tokenParser.isEnded}write(e){this.tokenizer.write(e)}end(){this.tokenizer.end()}set onToken(e){this.tokenizer.onToken=t=>{e(t),this.tokenParser.write(t)}}set onValue(e){this.tokenParser.onValue=e}set onError(e){this.tokenizer.onError=e}set onEnd(e){this.tokenParser.onEnd=()=>{this.tokenizer.isEnded||this.tokenizer.end(),e.call(this.tokenParser)}}}},457(e,t,n){"use strict";n.d(t,{C:()=>u,E:()=>g,T:()=>d,c:()=>f,h:()=>h,w:()=>c});var r=n(8661),i=n(5449),o=n(696),a=n(3385),s=n(4774),l=r.createContext("undefined"!==typeof HTMLElement?(0,i.A)({key:"css"}):null),u=l.Provider,c=function(e){return(0,r.forwardRef)(function(t,n){var i=(0,r.useContext)(l);return e(t,i,n)})},d=r.createContext({});var h={}.hasOwnProperty,p="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",f=function(e,t){var n={};for(var r in t)h.call(t,r)&&(n[r]=t[r]);return n[p]=e,n},m=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return(0,o.SF)(t,n,r),(0,s.s)(function(){return(0,o.sk)(t,n,r)}),null},g=c(function(e,t,n){var i=e.css;"string"===typeof i&&void 0!==t.registered[i]&&(i=t.registered[i]);var s=e[p],l=[i],u="";"string"===typeof e.className?u=(0,o.Rk)(t.registered,l,e.className):null!=e.className&&(u=e.className+" ");var c=(0,a.J)(l,void 0,r.useContext(d));u+=t.key+"-"+c.name;var f={};for(var g in e)h.call(e,g)&&"css"!==g&&g!==p&&(f[g]=e[g]);return f.className=u,n&&(f.ref=n),r.createElement(r.Fragment,null,r.createElement(m,{cache:t,serialized:c,isStringTag:"string"===typeof s}),r.createElement(s,f))})},561(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"m12 21.35-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54z"}),"Favorite")},696(e,t,n){"use strict";n.d(t,{Rk:()=>r,SF:()=>i,sk:()=>o});function r(e,t,n){var r="";return n.split(" ").forEach(function(n){void 0!==e[n]?t.push(e[n]+";"):n&&(r+=n+" ")}),r}var i=function(e,t,n){var r=e.key+"-"+t.name;!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles)},o=function(e,t,n){i(e,t,n);var r=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var o=t;do{e.insert(t===o?"."+r:"",o,e.sheet,!0),o=o.next}while(void 0!==o)}}},847(e,t,n){"use strict";n.d(t,{oj:()=>r.A});var r=n(450);n(4346),n(6121),n(4093),n(3517),n(8763),n(2458)},1006(e,t,n){"use strict";function r(e,t){const n=this;if(n.vars&&"function"===typeof n.getColorSchemeSelector){const r=n.getColorSchemeSelector(e).replace(/(\[[^\]]+\])/,"*:where($1)");return{[r]:t}}return n.palette.mode===e?t:{}}n.d(t,{A:()=>r})},1029(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"}),"ContentCopy")},1092(e,t){"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),p=Symbol.iterator;var f={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,g={};function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||f}function y(){}function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||f}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!==typeof e&&"function"!==typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},y.prototype=v.prototype;var A=b.prototype=new y;A.constructor=b,m(A,v.prototype),A.isPureReactComponent=!0;var x=Array.isArray,w=Object.prototype.hasOwnProperty,k={current:null},S={key:!0,ref:!0,__self:!0,__source:!0};function E(e,t,r){var i,o={},a=null,s=null;if(null!=t)for(i in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(a=""+t.key),t)w.call(t,i)&&!S.hasOwnProperty(i)&&(o[i]=t[i]);var l=arguments.length-2;if(1===l)o.children=r;else if(1i});var r=n(5482);function i(e){return function(){return new o(e.apply(this,arguments))}}function o(e){var t,n;function i(t,n){try{var a=e[t](n),s=a.value,l=s instanceof r.A;Promise.resolve(l?s.v:s).then(function(n){if(l){var r="return"===t?"return":"next";if(!s.k||n.done)return i(r,n);n=e[r](n).value}o(a.done?"return":"normal",n)},function(e){i("throw",e)})}catch(e){o("throw",e)}}function o(e,r){switch(e){case"return":t.resolve({value:r,done:!0});break;case"throw":t.reject(r);break;default:t.resolve({value:r,done:!1})}(t=t.next)?i(t.key,t.arg):n=null}this._invoke=function(e,r){return new Promise(function(o,a){var s={key:e,arg:r,resolve:o,reject:a,next:null};n?n=n.next=s:(t=n=s,i(e,r))})},"function"!=typeof e.return&&(this.return=void 0)}o.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},o.prototype.next=function(e){return this._invoke("next",e)},o.prototype.throw=function(e){return this._invoke("throw",e)},o.prototype.return=function(e){return this._invoke("return",e)}},1163(e,t,n){"use strict";function r(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;const r={};return Object.keys(e).forEach(i=>{r[i]=e[i].reduce((e,r)=>{if(r){const i=t(r);""!==i&&e.push(i),n&&n[r]&&e.push(n[r])}return e},[]).join(" ")}),r}n.d(t,{A:()=>r})},1166(e,t,n){"use strict";function r(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return"";let n=e.replace(/^```[a-z]*\s*\n?/i,"");return t||(n=n.replace(/\n?```$/i,"")),n}n.d(t,{$Q:()=>h,IO:()=>x,LR:()=>g,Ln:()=>v,MF:()=>u,Ms:()=>m,Mt:()=>C,NS:()=>i,NW:()=>d,Qv:()=>S,Sk:()=>y,Sm:()=>p,T9:()=>f,dt:()=>o,eg:()=>A,f6:()=>b,if:()=>r,jJ:()=>E,nF:()=>l,sg:()=>s,sz:()=>k,uv:()=>c,wj:()=>w,yy:()=>a});const i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100;const r=parseInt(e);return Number.isNaN(r)||rn?n:r},o=(e,t)=>0===e.length||e.includes(t)?t:e[0],a=e=>new Promise(t=>{const n=setTimeout(()=>{clearTimeout(n),t()},e)}),s=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,n=null;const r=function(){for(var r=arguments.length,i=new Array(r),o=0;o{e(...i),n=null},t)};return r.cancel=()=>{clearTimeout(n),n=null},r},l=function(e,t){let n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{leading:!0,trailing:!0},i=null,o=null,a=null,s=0;function l(){s=!1===r.leading?0:Date.now(),i=null,n=e.apply(a,o),i||(a=o=null)}const u=function(){const u=Date.now();s||!1!==r.leading||(s=u);const c=t-(u-s);for(var d=arguments.length,h=new Array(d),p=0;pt?(i&&(clearTimeout(i),i=null),s=u,n=e.apply(a,o),i||(a=o=null)):i||!1===r.trailing||(i=setTimeout(l,c)),n};return u.cancel=()=>{clearTimeout(i),s=0,i=null,a=o=null},u},u=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;for(;n{if(0===e.length||0===t.length)return!1;t="*"+t+"*";let[n,r]=[0,0],[i,o]=[-1,-1];for(;nObject.prototype.toString.call(e).match(/\[object (.*?)\]/)[1].toLowerCase(),h=async(e,t)=>{const n=(new TextEncoder).encode(e+t),r=await crypto.subtle.digest({name:"SHA-256"},n);return[...new Uint8Array(r)].map(e=>e.toString(16).padStart(2,"0")).join("")},p=()=>"kiss-".concat(btoa(Math.random()).slice(3,11)),f=(e,t)=>{const n=new Set([...e,...t]);return n.size===e.size&&n.size===t.size},m=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(!e)return"";let r=e.length;for(;r>e.length-n&&e[r-1]===t;)r--;return e.slice(0,r)},g=(e,t)=>{switch(t){case"//":return e.match(/\/\/([\w-]+)\s+([^]+)/);case"\\":return e.match(/\\([\w-]+)\s+([^]+)/);case"\\\\":return e.match(/\\\\([\w-]+)\s+([^]+)/);case">":return e.match(/>([\w-]+)\s+([^]+)/);case">>":return e.match(/>>([\w-]+)\s+([^]+)/)}return e.match(/\/([\w-]+)\s+([^]+)/)},v=e=>/^[a-zA-Z-]+$/.test(e),y=e=>new Promise(t=>{const n=new FileReader;n.onloadend=()=>t(n.result),n.readAsDataURL(e)}),b=e=>{if(!e||"string"!==d(e))return{};try{return"{"!==e.trim()[0]&&(e="{".concat(e,"}")),JSON.parse(e)}catch(t){}return{}},A=e=>{const t=e.match(/({[^]*}|\[[^]*\])/);return t?t[0]:null},x=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200;return window.requestIdleCallback?requestIdleCallback(e,{timeout:t}):setTimeout(e,t)},w=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Task timed out";const r="function"===typeof e?e():e;return Promise.race([r,new Promise((e,r)=>setTimeout(()=>r(new Error(n)),t))])},k=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;if("string"!==typeof e)return"";if(e.length<=t)return e;const n=e.slice(0,t);return n.slice(0,n.lastIndexOf(" "))+" \u2026"};function S(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kiss-file.txt";const n=function(e){const t="application/octet-stream";return e&&-1!==e.indexOf(".")&&{txt:"text/plain;charset=utf-8",html:"text/html;charset=utf-8",css:"text/css;charset=utf-8",js:"text/javascript;charset=utf-8",json:"application/json;charset=utf-8",xml:"application/xml;charset=utf-8",md:"text/markdown;charset=utf-8",vtt:"text/vtt;charset=utf-8",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",svg:"image/svg+xml",webp:"image/webp",ico:"image/x-icon",mp3:"audio/mpeg",mp4:"video/mp4",webm:"video/webm",wav:"audio/wav",pdf:"application/pdf",zip:"application/zip",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}[e.split(".").pop().toLowerCase()]||t}(t),r=new Blob([e],{type:n}),i=URL.createObjectURL(r),o=document.createElement("a");o.style.display="none",o.href=i,o.download=t||"kiss-file.txt",document.body.appendChild(o),o.click(),document.body.removeChild(o),URL.revokeObjectURL(i)}function E(e){if("string"!==typeof e||""===e.trim())return{};try{return Object.fromEntries(e.split(/\n|;/).map(e=>{const[t="",n=""]=e.split(",").map(e=>e.trim());return[t,n]}).filter(e=>{let[t]=e;return t}))}catch(t){return{}}}const C=e=>/^[\u4e00-\u9fa5]$/.test(e||"")},1210(e,t,n){"use strict";n.d(t,{A:()=>r});const r=(0,n(6966).A)()},1223(e,t,n){"use strict";n.d(t,{Lx:()=>s,T:()=>r,_9:()=>o,tc:()=>a});const r=function(){try{return n(9286)}catch(e){}}(),i=()=>{const e=globalThis.__KISS_CONTEXT__;return e||"undefined"},o=()=>"background"===i(),a=()=>"options"===i(),s="LanguageDetector"in globalThis&&"Translator"in globalThis},1229(e){e.exports=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n},e.exports.__esModule=!0,e.exports.default=e.exports},1263(e,t,n){"use strict";n.d(t,{W:()=>r,x:()=>i});class r{constructor(){this.decoder=new TextDecoder("utf-8"),this.strings=[],this.byteLength=0}appendChar(e){this.strings.push(String.fromCharCode(e)),this.byteLength+=1}appendBuf(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length;this.strings.push(this.decoder.decode(e.subarray(t,n))),this.byteLength+=n-t}reset(){this.strings=[],this.byteLength=0}toString(){return this.strings.join("")}}class i{constructor(e){this.decoder=new TextDecoder("utf-8"),this.bufferOffset=0,this.string="",this.byteLength=0,this.buffer=new Uint8Array(e)}appendChar(e){this.bufferOffset>=this.buffer.length&&this.flushStringBuffer(),this.buffer[this.bufferOffset++]=e,this.byteLength+=1}appendBuf(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length;const r=n-t;this.bufferOffset+r>this.buffer.length&&this.flushStringBuffer(),this.buffer.set(e.subarray(t,n),this.bufferOffset),this.bufferOffset+=r,this.byteLength+=r}flushStringBuffer(){this.string+=this.decoder.decode(this.buffer.subarray(0,this.bufferOffset)),this.bufferOffset=0}reset(){this.string="",this.bufferOffset=0,this.byteLength=0}toString(){return this.flushStringBuffer(),this.string}}},1270(e,t,n){"use strict";n.d(t,{n:()=>o});const r=e=>String(e).toLowerCase().replace(/[\u2019\u2018]/g,"'").replace(/[-\u2010\u2013\u2014]/g," ").split(/\s+/).map(e=>e.replace(/(?:[\0-\/:-@\[-`\{-\xA9\xAB-\xB1\xB4\xB6-\xB8\xBB\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u065F\u066A-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07BF\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u0890-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0965\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09E5\u09F2\u09F3\u09FA\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A65\u0A70\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AE5\u0AF0-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B65\u0B70\u0B78-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0BE5\u0BF3-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5E\u0C5F\u0C62-\u0C65\u0C70-\u0C77\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDB\u0CDF\u0CE2-\u0CE5\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57\u0D62-\u0D65\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DE5\u0DF0-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F1F\u0F34-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u104A-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u1368\u137D-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u17DF\u17EA-\u17EF\u17FA-\u180F\u181A-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19FF\u1A17-\u1A1F\u1A55-\u1A7F\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B4F\u1B5A-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BFF\u1C24-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C8B-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u206F\u2072\u2073\u207A-\u207E\u208A-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A-\u245F\u249C-\u24E9\u2500-\u2775\u2794-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFC\u2CFE\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3008-\u3020\u302A-\u3030\u3036\u3037\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u3191\u3196-\u319F\u31C0-\u31EF\u3200-\u321F\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6F0-\uA716\uA720\uA721\uA789\uA78A\uA7DD-\uA7F0\uA802\uA806\uA80B\uA823-\uA82F\uA836-\uA83F\uA874-\uA881\uA8B4-\uA8CF\uA8DA-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9DA-\uA9DF\uA9E5\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD06\uDD34-\uDD3F\uDD79-\uDD89\uDD8C-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEE0\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDBF\uDDF4-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC57\uDC77\uDC78\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1F\uDD3A-\uDD3F\uDD5A-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE3F\uDE49-\uDE5F\uDE7F\uDEA0-\uDEBF\uDEC8\uDEE5-\uDEEA\uDEF0-\uDEFF\uDF36-\uDF3F\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD24-\uDD2F\uDD3A-\uDD3F\uDD66-\uDD6E\uDD86-\uDE5F\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEC1\uDEC8-\uDEFF\uDF28-\uDF2F\uDF46-\uDF50\uDF55-\uDF6F\uDF82-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC51\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDD02\uDD27-\uDD35\uDD40-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDCF\uDDDB\uDDDD-\uDDE0\uDDF5-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDEEF\uDEFA-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDF7F\uDF8A\uDF8C\uDF8D\uDF8F\uDFB6\uDFB8-\uDFD0\uDFD2\uDFD4-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC4F\uDC5A-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEBF\uDECA-\uDECF\uDEE4-\uDEFF\uDF1B-\uDF2F\uDF3C-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFBF\uDFE1-\uDFEF\uDFFA-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC4F\uDC6D-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDD9F\uDDAA-\uDDAF\uDDDC-\uDDDF\uDDEA-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDF4F\uDF5A-\uDFAF\uDFB1-\uDFBF\uDFD5-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD812-\uD817\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD832\uD836\uD83D\uD83F\uD87C\uD87D\uD87F\uD88E-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDC5F]|\uD810[\uDFFB-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD818[\uDC00-\uDCFF\uDD1E-\uDD2F\uDD3A-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6F\uDEBF\uDECA-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDD3F\uDD6D-\uDD6F\uDD7A-\uDE3F\uDE97-\uDE9F\uDEB9\uDEBA\uDED4-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFF1\uDFF7-\uDFFF]|\uD823[\uDCD6-\uDCFE\uDD1F-\uDD7F\uDDF3-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD833[\uDC00-\uDCEF\uDCFA-\uDFFF]|\uD834[\uDC00-\uDEBF\uDED4-\uDEDF\uDEF4-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDEEF\uDEFA-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDCEF\uDCFA-\uDDCF\uDDEE\uDDEF\uDDFB-\uDEBF\uDEDF\uDEE3\uDEE6\uDEEE\uDEEF\uDEF5-\uDEFD\uDF00-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD0-\uDCFF\uDD44-\uDD4A\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCAC\uDCB0\uDCB5-\uDD00\uDD2E\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDCFF\uDD0D-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEAE\uDEAF]|\uD87A[\uDFE1-\uDFEF]|\uD87B[\uDE5E-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD88D[\uDC7A-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,"")).filter(Boolean),i=(e,t,n)=>Math.max(t,Math.min(e,n)),o=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=[],n=[];for(let i=0;i{if(e<0||e+n.length>t.length)return!1;for(let r=0;r{const u=r(l),c=u.length;if(c<2||0===t.length)return null;const d=i(o,0,e.length-1),h=i(a,d,e.length-1),p=[];for(let e=n[d];ee===u[t]))return null;const f=i(n[d],0,t.length-1),m=u.slice(-Math.min(3,c)),g=2===c?[0]:[0,1,2].filter(e=>e+3<=c),v=new Map;for(const e of g){const n=2===c?u.slice(0,2):u.slice(e,e+3),r=Math.max(0,f-32),i=Math.min(t.length-n.length,f+32);for(let o=r;o<=i;o++){if(!s(o,n))continue;const r=o-e;if(r<0)continue;const i=r+c-1;if(i>=t.length)continue;const a=r+c-m.length;let l=!1,u=i;for(let e=0;e<=4&&!l;e++){const t=0===e?[a]:[a-e,a+e];for(const e of t)if(e>=r&&s(e,m)){l=!0,u=e+m.length-1;break}}const d={startPos:r,endPos:u,tailOK:l,offset:e,dist:Math.abs(r-f)};v.has(r)||v.set(r,d)}}const y=[...v.values()];if(!y.length)return null;if(2===c&&y.length>1)return null;const b=y.filter(e=>e.tailOK);let A=null;if(b.length){b.sort((e,t)=>(e.offset>0)-(t.offset>0)||e.dist-t.dist);const[e,t]=b;if(t&&Boolean(e.offset>0)===Boolean(t.offset>0)&&e.dist===t.dist)return null;A=e}else{if(1!==y.length||0!==y[0].offset||c<3)return null;A=y[0]}const x=t[A.startPos].ei,w=Math.max(x,t[A.endPos].ei);return x===d&&w===h?null:{startIdx:x,endIdx:w}}}}},1310(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5M2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1m18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1M11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1m0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1M5.99 4.58c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41zm12.37 12.37c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0 .39-.39.39-1.03 0-1.41zm1.06-10.96c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0zM7.05 18.36c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0z"}),"LightMode")},1367(e,t,n){"use strict";n.d(t,{$E:()=>f,As:()=>o,ED:()=>b,Hz:()=>v,Qs:()=>c,Rr:()=>A,SX:()=>g,TY:()=>s,VE:()=>y,Vf:()=>i,WD:()=>l,_s:()=>d,e:()=>p,hr:()=>a,ms:()=>u,ns:()=>r,p5:()=>w,q_:()=>x,zM:()=>m,zw:()=>h});const r="style_none",i="under_line",o="dot_line",a="dash_line",s="dash_line_bold",l="dash_box",u="dash_box_bold",c="wavy_line",d="wavy_line_bold",h="marker",p="gradient_marker",f="fuzzy",m="highlight",g="blockquote",v="gradient",y="blink",b="glow",A="colorful",x=[r,i,o,a,s,c,d,l,u,h,p,f,m,g,v,y,b,A],w=[{styleSlug:"custom",styleName:"Custom Style",styleCode:"color: #209CEE;"}]},1437(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z"}),"Done")},1442(e,t,n){"use strict";n.d(t,{A:()=>i});var r=n(5482);function i(e){return new r.A(e,0)}},1446(e,t,n){"use strict";var r=n(8661),i=n(4651);function o(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
\u3002',en:'1. br replaces
line breaks with

. 2. bn replaces \\n newline with

. 3. brToDiv and bnToDiv are replaced with

.',zh_TW:'1. br \u6703\u5c07
\u63db\u884c\u66ff\u63db\u70ba

\u30022. bn \u6703\u5c07 \\n \u63db\u884c\u66ff\u63db\u70ba

\u30023. brToDiv \u8207 bnToDiv \u6703\u66ff\u63db\u70ba

\u3002',ja:'1. br \u306f
\u6539\u884c\u3092

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002 2. bn \u306f \\n \u6539\u884c\u3092

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002 3. brToDiv \u3068 bnToDiv \u306f

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002',ko:'1. br\uc740
\uc904\ubc14\uafc8\uc744

\ub85c \ub300\uccb4\ud569\ub2c8\ub2e4. 2. bn\uc740 \\n \uc904\ubc14\uafc8\uc744

\ub85c \ub300\uccb4\ud569\ub2c8\ub2e4. 3. brToDiv \ubc0f bnToDiv\ub294

\ub85c \ub300\uccb4\ub429\ub2c8\ub2e4.',tr:'1. br,
sat\u0131r sonlar\u0131n\u0131

ile de\u011fi\u015ftirir. 2. bn, \\n yeni sat\u0131r\u0131

ile de\u011fi\u015ftirir. 3. brToDiv ve bnToDiv,

ile de\u011fi\u015ftirildi.'},import:{zh:"\u5bfc\u5165",en:"Import",zh_TW:"\u532f\u5165",ja:"\u30a4\u30f3\u30dd\u30fc\u30c8",ko:"\uac00\uc838\uc624\uae30",tr:"\u0130\xe7e Aktar"},export:{zh:"\u5bfc\u51fa",en:"Export",zh_TW:"\u532f\u51fa",ja:"\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\ub0b4\ubcf4\ub0b4\uae30",tr:"D\u0131\u015fa Aktar"},export_translation:{zh:"\u5bfc\u51fa\u91ca\u4e49",en:"Export Translation",zh_TW:"\u532f\u51fa\u91cb\u7fa9",ja:"\u8a33\u6587\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\ubc88\uc5ed \ub0b4\ubcf4\ub0b4\uae30",tr:"\xc7eviriyi D\u0131\u015fa Aktar"},error_cant_be_blank:{zh:"\u4e0d\u80fd\u4e3a\u7a7a",en:"Can not be blank",zh_TW:"\u4e0d\u53ef\u70ba\u7a7a",ja:"\u7a7a\u767d\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093",ko:"\ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4",tr:"Bo\u015f Olamaz"},error_duplicate_values:{zh:"\u5b58\u5728\u91cd\u590d\u7684\u503c",en:"There are duplicate values",zh_TW:"\u5b58\u5728\u91cd\u8907\u7684\u503c",ja:"\u91cd\u8907\u3059\u308b\u5024\u304c\u5b58\u5728\u3057\u307e\u3059",ko:"\uc911\ubcf5\ub41c \uac12\uc774 \uc788\uc2b5\ub2c8\ub2e4",tr:"Yinelenen De\u011ferler Var"},error_wrong_file_type:{zh:"\u9519\u8bef\u7684\u6587\u4ef6\u7c7b\u578b",en:"Wrong file type",zh_TW:"\u6a94\u6848\u985e\u578b\u932f\u8aa4",ja:"\u4e0d\u6b63\u306a\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3067\u3059",ko:"\uc798\ubabb\ub41c \ud30c\uc77c \ud615\uc2dd\uc785\ub2c8\ub2e4",tr:"Yanl\u0131\u015f Dosya T\xfcr\xfc"},error_fetch_url:{zh:"\u8bf7\u68c0\u67e5url\u5730\u5740\u662f\u5426\u6b63\u786e\u6216\u7a0d\u540e\u518d\u8bd5\u3002",en:"Please check if the url address is correct or try again later.",zh_TW:"\u8acb\u6aa2\u67e5 URL \u662f\u5426\u6b63\u78ba\u6216\u7a0d\u5f8c\u518d\u8a66\u3002",ja:"URL\u30a2\u30c9\u30ec\u30b9\u304c\u6b63\u3057\u3044\u304b\u78ba\u8a8d\u3059\u308b\u304b\u3001\u5f8c\u3067\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002",ko:"URL \uc8fc\uc18c\uac00 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\ud558\uac70\ub098 \ub098\uc911\uc5d0 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624.",tr:"L\xfctfen URL adresinin do\u011fru olup olmad\u0131\u011f\u0131n\u0131 kontrol edin veya daha sonra tekrar deneyin."},deepl_api:{zh:"DeepL \u63a5\u53e3",en:"DeepL API",zh_TW:"DeepL \u4ecb\u9762",ja:"DeepL API",ko:"DeepL API",tr:"Deepl API'si"},deepl_key:{zh:"DeepL \u5bc6\u94a5",en:"DeepL Key",zh_TW:"DeepL \u91d1\u9470",ja:"DeepL \u30ad\u30fc",ko:"DeepL \ud0a4",tr:"Deepl Anahtar\u0131"},openai_api:{zh:"OpenAI \u63a5\u53e3",en:"OpenAI API",zh_TW:"OpenAI \u4ecb\u9762",ja:"OpenAI API",ko:"OpenAI API",tr:"OpenAI API"},openai_key:{zh:"OpenAI \u5bc6\u94a5",en:"OpenAI Key",zh_TW:"OpenAI \u91d1\u9470",ja:"OpenAI \u30ad\u30fc",ko:"OpenAI \ud0a4",tr:"OpenAI Anahtar\u0131"},openai_model:{zh:"OpenAI \u6a21\u578b",en:"OpenAI Model",zh_TW:"OpenAI \u6a21\u578b",ja:"OpenAI \u30e2\u30c7\u30eb",ko:"OpenAI \ubaa8\ub378",tr:"OpenAI Modeli"},openai_prompt:{zh:"OpenAI \u63d0\u793a\u8bcd",en:"OpenAI Prompt",zh_TW:"OpenAI \u63d0\u793a\u8a5e",ja:"OpenAI \u30d7\u30ed\u30f3\u30d7\u30c8",ko:"OpenAI \ud504\ub86c\ud504\ud2b8",tr:"OpenAI \u0130stemi"},if_clear_cache:{zh:"\u662f\u5426\u6e05\u9664\u7f13\u5b58\uff08\u9ed8\u8ba4\u7f13\u5b587\u5929\uff09",en:"Whether clear cache (Default cache is 7 days)",zh_TW:"\u662f\u5426\u6e05\u9664\u5feb\u53d6\uff08\u9810\u8a2d\u5feb\u53d67\u5929\uff09",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3057\u307e\u3059\u304b\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u671f\u9593\u306f7\u65e5\u9593\u3067\u3059\uff09",ko:"\uce90\uc2dc\ub97c \uc9c0\uc6b0\uc2dc\uaca0\uc2b5\ub2c8\uae4c (\uae30\ubcf8 \uce90\uc2dc 7\uc77c)",tr:"\xd6nbelle\u011fin Temizlenip Temizlenmeyece\u011fi (Varsay\u0131lan \xd6nbellek 7 G\xfcnd\xfcr)"},clear_cache_never:{zh:"\u4e0d\u6e05\u9664\u7f13\u5b58",en:"Never clear cache",zh_TW:"\u4e0d\u6e05\u9664\u5feb\u53d6",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3057\u306a\u3044",ko:"\uce90\uc2dc \uc9c0\uc6b0\uc9c0 \uc54a\uc74c",tr:"\xd6nbelle\u011fi Hi\xe7bir Zaman Temizleme"},clear_cache_restart:{zh:"\u91cd\u542f\u6d4f\u89c8\u5668\u65f6\u6e05\u9664\u7f13\u5b58",en:"Clear cache when restarting browser",zh_TW:"\u91cd\u65b0\u555f\u52d5\u700f\u89bd\u5668\u6642\u6e05\u9664\u5feb\u53d6",ja:"\u30d6\u30e9\u30a6\u30b6\u518d\u8d77\u52d5\u6642\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2",ko:"\ube0c\ub77c\uc6b0\uc800 \uc7ac\uc2dc\uc791 \uc2dc \uce90\uc2dc \uc9c0\uc6b0\uae30",tr:"Taray\u0131c\u0131y\u0131 Yeniden Ba\u015flat\u0131rken \xd6nbelle\u011fi Temizle"},data_sync_type:{zh:"\u540c\u6b65\u65b9\u5f0f",en:"Sync Type",zh_TW:"\u540c\u6b65\u65b9\u5f0f",ja:"\u540c\u671f\u65b9\u5f0f",ko:"\ub3d9\uae30\ud654 \ubc29\uc2dd",tr:"Senkronizasyon T\xfcr\xfc"},data_sync_url:{zh:"\u540c\u6b65\u63a5\u53e3",en:"Sync API",zh_TW:"\u540c\u6b65\u4ecb\u9762",ja:"\u540c\u671fAPI",ko:"\ub3d9\uae30\ud654 API",tr:"API'yi Senkronize Et"},gist_sync_tip:{zh:"\u9009\u62e9 GitHub Gist \u65f6\u4f1a\u81ea\u52a8\u521b\u5efa\u79c1\u5bc6 Gist\u3002GitHub PAT \u9700\u8981 Gists \u8bfb\u5199\u6743\u9650\u3002",en:"A secret gist will be created automatically when GitHub Gist is selected. GitHub PAT needs Gists read and write permission.",zh_TW:"\u9078\u64c7 GitHub Gist \u6642\u6703\u81ea\u52d5\u5efa\u7acb\u79c1\u5bc6 Gist\u3002GitHub PAT \u9700\u8981 Gists \u8b80\u5beb\u6b0a\u9650\u3002",ja:"GitHub Gist \u3092\u9078\u629e\u3059\u308b\u3068 Secret Gist \u304c\u81ea\u52d5\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002GitHub PAT \u306b\u306f Gists \u306e\u8aad\u307f\u66f8\u304d\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\u3002",ko:"GitHub Gist\ub97c \uc120\ud0dd\ud558\uba74 \ube44\uacf5\uac1c Gist\uac00 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ub429\ub2c8\ub2e4. GitHub PAT\uc5d0\ub294 Gists \uc77d\uae30/\uc4f0\uae30 \uad8c\ud55c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.",tr:"GitHub Gist se\xe7ildi\u011finde otomatik olarak gizli bir \xf6z olu\u015fturulacakt\u0131r. GitHub PAT'in Gists'in okuma ve yazma iznine ihtiyac\u0131 var."},data_sync_user:{zh:"\u540c\u6b65\u8d26\u6237",en:"Sync Account",zh_TW:"\u540c\u6b65\u5e33\u865f",ja:"\u540c\u671f\u30a2\u30ab\u30a6\u30f3\u30c8",ko:"\ub3d9\uae30\ud654 \uacc4\uc815",tr:"Hesab\u0131 Senkronize Et"},data_sync_key:{zh:"\u540c\u6b65\u5bc6\u94a5",en:"Sync Key",zh_TW:"\u540c\u6b65\u91d1\u9470",ja:"\u540c\u671f\u30ad\u30fc",ko:"\ub3d9\uae30\ud654 \ud0a4",tr:"Senkronizasyon Anahtar\u0131"},data_sync_encrypt_key:{zh:"\u52a0\u5bc6\u53e3\u4ee4",en:"Encryption Passphrase",zh_TW:"\u52a0\u5bc6\u5bc6\u78bc",ja:"\u6697\u53f7\u5316\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uc554\ud638\ud654 \ube44\ubc00\ubc88\ud638",tr:"\u015eifreleme Parolas\u0131"},set_sync_encrypt_key:{zh:"\u8bbe\u5b9a\u53e3\u4ee4",en:"Set Passphrase",zh_TW:"\u8a2d\u5b9a\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u8a2d\u5b9a",ko:"\uc554\ud638\ubb38 \uc124\uc815",tr:"Parolay\u0131 Ayarla"},change_sync_encrypt_key:{zh:"\u4fee\u6539\u53e3\u4ee4",en:"Change Passphrase",zh_TW:"\u4fee\u6539\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u5909\u66f4",ko:"\uc554\ud638\ubb38 \ubcc0\uacbd",tr:"Parolay\u0131 De\u011fi\u015ftir"},sync_encrypt_key_not_set:{zh:"\u53e3\u4ee4\u672a\u8bbe\u7f6e\uff0c\u540c\u6b65\u529f\u80fd\u4e0d\u53ef\u7528\u3002",en:"Passphrase is not set. Sync is unavailable.",zh_TW:"\u5bc6\u78bc\u672a\u8a2d\u5b9a\uff0c\u540c\u6b65\u529f\u80fd\u7121\u6cd5\u4f7f\u7528\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u672a\u8a2d\u5b9a\u306e\u305f\u3081\u3001\u540c\u671f\u6a5f\u80fd\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002",ko:"\uc554\ud638\ubb38\uc774 \uc124\uc815\ub418\uc9c0 \uc54a\uc544 \ub3d9\uae30\ud654 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",tr:"Parola ayarlanmad\u0131. Senkronizasyon kullan\u0131lam\u0131yor."},old_sync_encrypt_key:{zh:"\u65e7\u53e3\u4ee4",en:"Old Passphrase",zh_TW:"\u820a\u5bc6\u78bc",ja:"\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uae30\uc874 \uc554\ud638\ubb38",tr:"Eski Parola"},new_sync_encrypt_key:{zh:"\u65b0\u53e3\u4ee4",en:"New Passphrase",zh_TW:"\u65b0\u5bc6\u78bc",ja:"\u65b0\u3057\u3044\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uc0c8 \uc554\ud638\ubb38",tr:"Yeni Parola"},confirm_sync_encrypt_key:{zh:"\u786e\u8ba4\u53e3\u4ee4",en:"Confirm Passphrase",zh_TW:"\u78ba\u8a8d\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u78ba\u8a8d",ko:"\uc554\ud638\ubb38 \ud655\uc778",tr:"Parolay\u0131 Onayla"},sync_encrypt_key_too_short:{zh:"\u53e3\u4ee4\u957f\u5ea6\u81f3\u5c11 6 \u4f4d\u3002",en:"Passphrase must be at least 6 characters.",zh_TW:"\u5bc6\u78bc\u9577\u5ea6\u81f3\u5c11 6 \u4f4d\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306f 6 \u6587\u5b57\u4ee5\u4e0a\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\uc554\ud638\ubb38\uc740 \ucd5c\uc18c 6\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.",tr:"Parola en az 6 karakterden olu\u015fmal\u0131d\u0131r."},sync_encrypt_key_mismatch:{zh:"\u4e24\u6b21\u8f93\u5165\u7684\u53e3\u4ee4\u4e0d\u4e00\u81f4\u3002",en:"The two passphrases do not match.",zh_TW:"\u5169\u6b21\u8f38\u5165\u7684\u5bc6\u78bc\u4e0d\u4e00\u81f4\u3002",ja:"\u5165\u529b\u3057\u305f 2 \u3064\u306e\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002",ko:"\ub450 \ubc88 \uc785\ub825\ud55c \uc554\ud638\ubb38\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",tr:"Her \u0130ki Parola E\u015fle\u015fmiyor."},old_sync_encrypt_key_invalid:{zh:"\u65e7\u53e3\u4ee4\u4e0d\u6b63\u786e\u3002",en:"Old passphrase is incorrect.",zh_TW:"\u820a\u5bc6\u78bc\u4e0d\u6b63\u78ba\u3002",ja:"\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002",ko:"\uae30\uc874 \uc554\ud638\ubb38\uc774 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",tr:"Eski Parola Yanl\u0131\u015f."},clear_sync_encrypt_key:{zh:"\u6e05\u9664\u672c\u5730\u53e3\u4ee4",en:"Clear local passphrase",zh_TW:"\u6e05\u9664\u672c\u6a5f\u5bc6\u78bc",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb",ko:"\ub85c\uceec \uc554\ud638\ubb38 \uc9c0\uc6b0\uae30",tr:"Yerel parolay\u0131 temizle"},clear_sync_encrypt_key_title:{zh:"\u6e05\u9664\u672c\u5730\u540c\u6b65\u53e3\u4ee4\uff1f",en:"Clear local sync passphrase?",zh_TW:"\u6e05\u9664\u672c\u6a5f\u540c\u6b65\u5bc6\u78bc\uff1f",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u540c\u671f\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb\u3057\u307e\u3059\u304b\uff1f",ko:"\ub85c\uceec \ub3d9\uae30\ud654 \uc554\ud638\ubb38\uc744 \uc9c0\uc6b8\uae4c\uc694?",tr:"Yerel e\u015fitleme parolas\u0131 temizlensin mi?"},clear_sync_encrypt_key_message:{zh:"\u8fd9\u4e0d\u4f1a\u4fee\u6539\u4e91\u7aef\u6570\u636e\u3002\u4e4b\u540e\u5fc5\u987b\u91cd\u65b0\u586b\u5165\u80fd\u89e3\u5bc6\u4e91\u7aef\u6570\u636e\u7684\u53e3\u4ee4\uff0c\u624d\u80fd\u7ee7\u7eed\u540c\u6b65\u3002",en:"This does not change cloud data. You must enter the passphrase that decrypts it before syncing again.",zh_TW:"\u9019\u4e0d\u6703\u4fee\u6539\u96f2\u7aef\u8cc7\u6599\u3002\u4e4b\u5f8c\u5fc5\u9808\u91cd\u65b0\u586b\u5165\u53ef\u89e3\u5bc6\u96f2\u7aef\u8cc7\u6599\u7684\u5bc6\u78bc\uff0c\u624d\u80fd\u7e7c\u7e8c\u540c\u6b65\u3002",ja:"\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u306f\u5909\u66f4\u3055\u308c\u307e\u305b\u3093\u3002\u518d\u540c\u671f\u3059\u308b\u306b\u306f\u3001\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u3092\u5fa9\u53f7\u3067\u304d\u308b\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u518d\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",ko:"\ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\ub294 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \ub3d9\uae30\ud654\ud558\ub824\uba74 \ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\ub97c \ud574\ub3c5\ud560 \uc218 \uc788\ub294 \uc554\ud638\ubb38\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.",tr:"Bu i\u015flem bulut verilerini de\u011fi\u015ftirmez. Yeniden e\u015fitlemek i\xe7in bulut verilerini \xe7\xf6zebilen parolay\u0131 girmeniz gerekir."},clear_sync_encrypt_key_confirm:{zh:"\u786e\u8ba4\u6e05\u9664",en:"Clear passphrase",zh_TW:"\u78ba\u8a8d\u6e05\u9664",ja:"\u6d88\u53bb\u3059\u308b",ko:"\uc9c0\uc6b0\uae30",tr:"Parolay\u0131 temizle"},clear_sync_encrypt_key_success:{zh:"\u5df2\u6e05\u9664\u672c\u5730\u540c\u6b65\u53e3\u4ee4\u3002",en:"The local sync passphrase has been cleared.",zh_TW:"\u5df2\u6e05\u9664\u672c\u6a5f\u540c\u6b65\u5bc6\u78bc\u3002",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u540c\u671f\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb\u3057\u307e\u3057\u305f\u3002",ko:"\ub85c\uceec \ub3d9\uae30\ud654 \uc554\ud638\ubb38\uc744 \uc9c0\uc6e0\uc2b5\ub2c8\ub2e4.",tr:"Yerel e\u015fitleme parolas\u0131 temizlendi."},sync_encrypt_key_change_failed:{zh:"\u4fee\u6539\u53e3\u4ee4\u5931\u8d25\u3002\u8bf7\u4fdd\u7559\u65e7\u53e3\u4ee4\u548c\u65b0\u53e3\u4ee4\uff0c\u68c0\u67e5\u7f51\u7edc\u540e\u91cd\u8bd5\uff1b\u5982\u679c\u66fe\u6709\u90e8\u5206\u6570\u636e\u5df2\u7528\u65b0\u53e3\u4ee4\u5199\u5165\u4e91\u7aef\uff0c\u5fc5\u8981\u65f6\u8bf7\u6e05\u7a7a\u8fdc\u7aef\u540c\u6b65\u6587\u4ef6\u540e\u91cd\u65b0\u540c\u6b65\u3002",en:"Failed to change the passphrase. Keep both the old and new passphrases, check your network, and retry. If some cloud data was already written with the new passphrase, clear the remote sync files and sync again if needed.",zh_TW:"\u4fee\u6539\u5bc6\u78bc\u5931\u6557\u3002\u8acb\u4fdd\u7559\u820a\u5bc6\u78bc\u548c\u65b0\u5bc6\u78bc\uff0c\u6aa2\u67e5\u7db2\u8def\u5f8c\u91cd\u8a66\uff1b\u5982\u679c\u5df2\u6709\u90e8\u5206\u8cc7\u6599\u7528\u65b0\u5bc6\u78bc\u5beb\u5165\u96f2\u7aef\uff0c\u5fc5\u8981\u6642\u8acb\u6e05\u7a7a\u9060\u7aef\u540c\u6b65\u6a94\u6848\u5f8c\u91cd\u65b0\u540c\u6b65\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306e\u5909\u66f4\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3068\u65b0\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306e\u4e21\u65b9\u3092\u4fdd\u7ba1\u3057\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u518d\u8a66\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u304c\u65b0\u3057\u3044\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3067\u66f8\u304d\u8fbc\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30ea\u30e2\u30fc\u30c8\u540c\u671f\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u3066\u304b\u3089\u518d\u540c\u671f\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\uc554\ud638\ubb38 \ubcc0\uacbd\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \uae30\uc874 \uc554\ud638\ubb38\uacfc \uc0c8 \uc554\ud638\ubb38\uc744 \ubaa8\ub450 \ubcf4\uad00\ud558\uace0 \ub124\ud2b8\uc6cc\ud06c\ub97c \ud655\uc778\ud55c \ub4a4 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc138\uc694. \uc77c\ubd80 \ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\uac00 \uc774\ubbf8 \uc0c8 \uc554\ud638\ubb38\uc73c\ub85c \uc4f0\uc778 \uacbd\uc6b0 \ud544\uc694\ud558\uba74 \uc6d0\uaca9 \ub3d9\uae30\ud654 \ud30c\uc77c\uc744 \ube44\uc6b4 \ub4a4 \ub2e4\uc2dc \ub3d9\uae30\ud654\ud558\uc138\uc694.",tr:"Parola de\u011fi\u015ftirme i\u015flemi ba\u015far\u0131s\u0131z oldu. Hem eski hem de yeni parolay\u0131 saklay\u0131n, a\u011f\u0131n\u0131z\u0131 kontrol edin ve tekrar deneyin. Yeni parola ile bulut verilerine zaten baz\u0131 veriler yaz\u0131lm\u0131\u015fsa, uzaktan senkronizasyon dosyalar\u0131n\u0131 temizleyin ve gerekirse tekrar senkronize edin"},sync_now:{zh:"\u7acb\u5373\u540c\u6b65",en:"Sync Now",zh_TW:"\u7acb\u5373\u540c\u6b65",ja:"\u4eca\u3059\u3050\u540c\u671f",ko:"\uc9c0\uae08 \ub3d9\uae30\ud654",tr:"\u015eimdi Senkronize Et"},sync_success:{zh:"\u540c\u6b65\u6210\u529f\uff01",en:"Sync Success",zh_TW:"\u540c\u6b65\u6210\u529f\uff01",ja:"\u540c\u671f\u6210\u529f\uff01",ko:"\ub3d9\uae30\ud654 \uc131\uacf5!",tr:"Senkronizasyon Ba\u015far\u0131l\u0131"},sync_failed:{zh:"\u540c\u6b65\u5931\u8d25\uff01",en:"Sync Error",zh_TW:"\u540c\u6b65\u5931\u6557\uff01",ja:"\u540c\u671f\u5931\u6557\uff01",ko:"\ub3d9\uae30\ud654 \uc2e4\ud328!",tr:"Senkronizasyon Hatas\u0131"},error_got_some_wrong:{zh:"\u62b1\u6b49\uff0c\u51fa\u9519\u4e86\uff01",en:"Sorry, something went wrong!",zh_TW:"\u62b1\u6b49\uff0c\u767c\u751f\u932f\u8aa4\uff01",ja:"\u7533\u3057\u8a33\u3042\u308a\u307e\u305b\u3093\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff01",ko:"\uc8c4\uc1a1\ud569\ub2c8\ub2e4, \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4!",tr:"\xdczg\xfcn\xfcm, Bir Sorun Olu\u015ftu"},error_sync_setting:{zh:"\u60a8\u7684\u540c\u6b65\u7c7b\u578b\u5fc5\u987b\u4e3a\u201cKISS-Worker\u201d\uff0c\u4e14\u9700\u586b\u5199\u5b8c\u6574",en:'Your sync type must be "KISS-Worker" and must be filled in completely',zh_TW:"\u60a8\u7684\u540c\u6b65\u578b\u614b\u5fc5\u9808\u70ba\u300cKISS-Worker\u300d\uff0c\u4e14\u9700\u586b\u5beb\u5b8c\u6574\u3002",ja:"\u540c\u671f\u30bf\u30a4\u30d7\u306f\u300cKISS-Worker\u300d\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u3059\u3079\u3066\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",ko:'\ub3d9\uae30\ud654 \uc720\ud615\uc740 "KISS-Worker"\uc5ec\uc57c \ud558\uba70, \ubaa8\ub4e0 \ud56d\ubaa9\uc744 \ube60\uc9d0\uc5c6\uc774 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.',tr:'Senkronizasyon T\xfcr\xfcn\xfcz "KISS-Worker" Olmal\u0131 Ve Eksiksiz Olarak Doldurulmal\u0131d\u0131r'},click_test:{zh:"\u70b9\u51fb\u6d4b\u8bd5",en:"Click Test",zh_TW:"\u9ede\u9078\u6e2c\u8a66",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c6\u30b9\u30c8",ko:"\ud074\ub9ad \ud14c\uc2a4\ud2b8",tr:"Test Et'I T\u0131klay\u0131n"},test_success:{zh:"\u6d4b\u8bd5\u6210\u529f",en:"Test success",zh_TW:"\u6e2c\u8a66\u6210\u529f",ja:"\u30c6\u30b9\u30c8\u6210\u529f",ko:"\ud14c\uc2a4\ud2b8 \uc131\uacf5",tr:"Test Ba\u015far\u0131l\u0131"},test_failed:{zh:"\u6d4b\u8bd5\u5931\u8d25",en:"Test failed",zh_TW:"\u6e2c\u8a66\u5931\u6557",ja:"\u30c6\u30b9\u30c8\u5931\u6557",ko:"\ud14c\uc2a4\ud2b8 \uc2e4\ud328",tr:"Test Ba\u015far\u0131s\u0131z Oldu"},clear_all_cache_now:{zh:"\u7acb\u5373\u6e05\u9664\u5168\u90e8\u7f13\u5b58",en:"Clear all cache now",zh_TW:"\u7acb\u5373\u6e05\u9664\u5168\u90e8\u5feb\u53d6",ja:"\u3059\u3079\u3066\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u4eca\u3059\u3050\u30af\u30ea\u30a2",ko:"\ubaa8\ub4e0 \uce90\uc2dc \uc9c0\uae08 \uc9c0\uc6b0\uae30",tr:"T\xfcm \xd6nbelle\u011fi \u015eimdi Temizle"},clear_cache:{zh:"\u6e05\u9664\u7f13\u5b58",en:"Clear Cache",zh_TW:"\u6e05\u9664\u5feb\u53d6",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2",ko:"\uce90\uc2dc \uc9c0\uc6b0\uae30",tr:"\xd6nbelle\u011fi Temizle"},disable_on_mobile:{zh:"\u79fb\u52a8\u7aef\u7981\u7528",en:"Disable on Mobile",zh_TW:"\u884c\u52d5\u88dd\u7f6e\u505c\u7528",ja:"\u30e2\u30d0\u30a4\u30eb\u3067\u7121\u52b9\u306b\u3059\u308b",ko:"\ubaa8\ubc14\uc77c\uc5d0\uc11c \ube44\ud65c\uc131\ud654",tr:"Mobil Cihazda Devre D\u0131\u015f\u0131 B\u0131rak"},clear_success:{zh:"\u6e05\u9664\u6210\u529f",en:"Clear success",zh_TW:"\u6e05\u9664\u6210\u529f",ja:"\u30af\u30ea\u30a2\u6210\u529f",ko:"\uc9c0\uc6b0\uae30 \uc131\uacf5",tr:"Temizleme Ba\u015far\u0131l\u0131"},clear_failed:{zh:"\u6e05\u9664\u5931\u8d25",en:"Clear failed",zh_TW:"\u6e05\u9664\u5931\u6557",ja:"\u30af\u30ea\u30a2\u5931\u6557",ko:"\uc9c0\uc6b0\uae30 \uc2e4\ud328",tr:"Temizleme Ba\u015far\u0131s\u0131z Oldu"},share:{zh:"\u5206\u4eab",en:"Share",zh_TW:"\u5206\u4eab",ja:"\u5171\u6709",ko:"\uacf5\uc720",tr:"Payla\u015f"},clear_all:{zh:"\u6e05\u7a7a",en:"Clear All",zh_TW:"\u6e05\u7a7a",ja:"\u3059\u3079\u3066\u30af\u30ea\u30a2",ko:"\ubaa8\ub450 \uc9c0\uc6b0\uae30",tr:"T\xfcm\xfcn\xfc Temizle"},help:{zh:"\u6c42\u52a9",en:"Help",zh_TW:"\u6c42\u52a9",ja:"\u30d8\u30eb\u30d7",ko:"\ub3c4\uc6c0\ub9d0",tr:"Yard\u0131m"},restore_default:{zh:"\u6062\u590d\u9ed8\u8ba4",en:"Restore Default",zh_TW:"\u6062\u5fa9\u9810\u8a2d",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u623b\u3059",ko:"\uae30\ubcf8\uac12 \ubcf5\uc6d0",tr:"Varsay\u0131lan\u0131 Geri Y\xfckle"},shortcuts_setting:{zh:"\u5feb\u6377\u952e\u8bbe\u7f6e",en:"Shortcuts Setting",zh_TW:"\u5feb\u901f\u9375\u8a2d\u5b9a",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u8a2d\u5b9a",ko:"\ub2e8\ucd95\ud0a4 \uc124\uc815",tr:"K\u0131sayol Ayar\u0131"},toggle_translate_shortcut:{zh:'"\u5f00\u542f\u7ffb\u8bd1"\u5feb\u6377\u952e',en:'"Toggle Translate" Shortcut',zh_TW:"\u300c\u958b\u555f\u7ffb\u8b6f\u300d\u5feb\u901f\u9375",ja:"\u300c\u7ffb\u8a33\u5207\u308a\u66ff\u3048\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\ubc88\uc5ed \ucf1c\uae30" \ub2e8\ucd95\ud0a4',tr:'"\xc7eviriyi A\xe7/Kapat" K\u0131sayolu'},toggle_transonly_shortcut:{zh:'"\u9690\u85cf\u539f\u6587"\u5feb\u6377\u952e',en:'"Hide Original" Shortcut',zh_TW:"\u300c\u96b1\u85cf\u539f\u6587\u300d\u5feb\u901f\u9375",ja:"\u300c\u539f\u6587\u3092\u96a0\u3059\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc6d0\ubb38 \uc228\uae30\uae30" \ub2e8\ucd95\ud0a4',tr:'"Orijinali Gizle" K\u0131sayolu'},toggle_style_shortcut:{zh:'"\u5207\u6362\u6837\u5f0f"\u5feb\u6377\u952e',en:'"Toggle Style" Shortcut',zh_TW:"\u300c\u5207\u63db\u6a23\u5f0f\u300d\u5feb\u901f\u9375",ja:"\u300c\u30b9\u30bf\u30a4\u30eb\u5207\u308a\u66ff\u3048\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc2a4\ud0c0\uc77c \uc804\ud658" \ub2e8\ucd95\ud0a4',tr:'"Stil De\u011fi\u015ftir" K\u0131sayolu'},toggle_popup_shortcut:{zh:'"\u6253\u5f00\u5f39\u7a97"\u5feb\u6377\u952e',en:'"Open Popup" Shortcut',zh_TW:"\u300c\u958b\u555f\u5f48\u51fa\u8996\u7a97\u300d\u5feb\u901f\u9375",ja:"\u300c\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u958b\u304f\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\ud31d\uc5c5 \uc5f4\uae30" \ub2e8\ucd95\ud0a4',tr:'"A\xe7\u0131l\u0131r Pencereyi A\xe7" K\u0131sayolu'},open_setting_shortcut:{zh:'"\u6253\u5f00\u8bbe\u7f6e"\u5feb\u6377\u952e',en:'"Open Setting" Shortcut',zh_TW:"\u300c\u958b\u555f\u8a2d\u5b9a\u300d\u5feb\u901f\u9375",ja:"\u300c\u8a2d\u5b9a\u3092\u958b\u304f\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc124\uc815 \uc5f4\uae30" \ub2e8\ucd95\ud0a4',tr:'"Ayar\u0131 A\xe7" K\u0131sayolu'},hide_fab_button:{zh:"\u9690\u85cf\u60ac\u6d6e\u6309\u94ae",en:"Hide Fab Button",zh_TW:"\u96b1\u85cf\u6d6e\u52d5\u6309\u9215",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u3092\u96a0\u3059",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \uc228\uae30\uae30",tr:"Y\xfczen Eylem D\xfc\u011fmesini Gizle"},fab_exception_list:{zh:"\u60ac\u6d6e\u6309\u94ae\u7279\u4f8b\u540d\u5355",en:"Fab Button Exception List",zh_TW:"\u6d6e\u52d5\u6309\u9215\u4f8b\u5916\u6e05\u55ae",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u306e\u4f8b\u5916\u30ea\u30b9\u30c8",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \uc608\uc678 \ubaa9\ub85d",tr:"Y\xfczen D\xfc\u011fme \u0130stisna Listesi"},fab_exception_list_helper:{zh:"\u5168\u5c40\u663e\u793a\u65f6\uff0c\u547d\u4e2d\u540d\u5355\u7684\u9875\u9762\u9690\u85cf\u6309\u94ae\uff1b\u5168\u5c40\u9690\u85cf\u65f6\uff0c\u547d\u4e2d\u540d\u5355\u7684\u9875\u9762\u663e\u793a\u6309\u94ae\u3002\u652f\u6301\u661f\u53f7(*)\u901a\u914d\u7b26\uff0c\u591a\u4e2a\u7f51\u5740\u7528\u6362\u884c\u6216\u9017\u53f7\u5206\u9694\u3002",en:"When shown globally, matching pages hide the button; when hidden globally, matching pages show it. Supports * wildcards; separate URLs with newlines or commas.",zh_TW:"\u5168\u57df\u986f\u793a\u6642\uff0c\u547d\u4e2d\u6e05\u55ae\u7684\u9801\u9762\u6703\u96b1\u85cf\u6309\u9215\uff1b\u5168\u57df\u96b1\u85cf\u6642\uff0c\u547d\u4e2d\u6e05\u55ae\u7684\u9801\u9762\u6703\u986f\u793a\u6309\u9215\u3002\u652f\u63f4\u661f\u865f (*) \u842c\u7528\u5b57\u5143\uff0c\u7db2\u5740\u53ef\u7528\u63db\u884c\u6216\u9017\u865f\u5206\u9694\u3002",ja:"\u30b0\u30ed\u30fc\u30d0\u30eb\u8868\u793a\u6642\u306f\u4e00\u81f4\u3059\u308b\u30da\u30fc\u30b8\u3067\u30dc\u30bf\u30f3\u3092\u96a0\u3057\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u975e\u8868\u793a\u6642\u306f\u4e00\u81f4\u3059\u308b\u30da\u30fc\u30b8\u3067\u30dc\u30bf\u30f3\u3092\u8868\u793a\u3057\u307e\u3059\u3002* \u306e\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u306b\u5bfe\u5fdc\u3057\u3001URL \u306f\u6539\u884c\u307e\u305f\u306f\u30ab\u30f3\u30de\u3067\u533a\u5207\u308c\u307e\u3059\u3002",ko:"\uc804\uc5ed \ud45c\uc2dc \uc2dc \ubaa9\ub85d\uacfc \uc77c\uce58\ud558\ub294 \ud398\uc774\uc9c0\uc5d0\uc11c\ub294 \ubc84\ud2bc\uc744 \uc228\uae30\uace0, \uc804\uc5ed \uc228\uae40 \uc2dc\uc5d0\ub294 \ubc84\ud2bc\uc744 \ud45c\uc2dc\ud569\ub2c8\ub2e4. * \uc640\uc77c\ub4dc\uce74\ub4dc\ub97c \uc9c0\uc6d0\ud558\uba70 URL\uc740 \uc904\ubc14\uafc8 \ub610\ub294 \uc27c\ud45c\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4.",tr:"Genel olarak g\xf6sterildi\u011finde e\u015fle\u015fen sayfalarda d\xfc\u011fme gizlenir; genel olarak gizlendi\u011finde e\u015fle\u015fen sayfalarda g\xf6sterilir. * joker karakteri desteklenir; URL'leri sat\u0131r sonu veya virg\xfclle ay\u0131r\u0131n."},fab_click_action:{zh:"\u5355\u51fb\u60ac\u6d6e\u6309\u94ae\u52a8\u4f5c",en:"Single Click Fab Action",zh_TW:"\u9ede\u9078\u6d6e\u52d5\u6309\u9215\u52d5\u4f5c",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u306e\u30af\u30ea\u30c3\u30af\u52d5\u4f5c",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \ud074\ub9ad \ub3d9\uc791",tr:"Tek T\u0131klamayla Y\xfczen Eylem D\xfc\u011fmesi"},fab_click_menu:{zh:"\u5f39\u51fa\u83dc\u5355",en:"Popup Menu",zh_TW:"\u5f48\u51fa\u9078\u55ae",ja:"\u30e1\u30cb\u30e5\u30fc\u3092\u958b\u304f",ko:"\ud31d\uc5c5 \uba54\ub274",tr:"A\xe7\u0131l\u0131r Men\xfc"},fab_click_translate:{zh:"\u76f4\u63a5\u7ffb\u8bd1",en:"Translate",zh_TW:"\u76f4\u63a5\u7ffb\u8b6f",ja:"\u76f4\u63a5\u7ffb\u8a33",ko:"\ubc14\ub85c \ubc88\uc5ed",tr:"\xc7evir"},hide_tran_button:{zh:"\u9690\u85cf\u7ffb\u8bd1\u6309\u94ae",en:"Hide Translate Button",zh_TW:"\u96b1\u85cf\u7ffb\u8b6f\u6309\u9215",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u3092\u96a0\u3059",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc228\uae30\uae30",tr:"\xc7evir D\xfc\u011fmesini Gizle"},hide_click_away:{zh:"\u70b9\u51fb\u5916\u90e8\u5173\u95ed\u5f39\u7a97",en:"Click outside to close the pop-up window",zh_TW:"\u9ede\u9078\u5916\u90e8\u5340\u57df\u95dc\u9589\u5f48\u51fa\u8996\u7a97",ja:"\u5916\u90e8\u30af\u30ea\u30c3\u30af\u3067\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u9589\u3058\u308b",ko:"\ubc14\uae65\ucabd \ud074\ub9ad \uc2dc \ud31d\uc5c5 \ub2eb\uae30",tr:"A\xe7\u0131l\u0131r Pencereyi Kapatmak \u0130\xe7in D\u0131\u015far\u0131y\u0131 T\u0131klay\u0131n"},use_simple_style:{zh:"\u4f7f\u7528\u7b80\u6d01\u754c\u9762",en:"Use a simple interface",zh_TW:"\u4f7f\u7528\u7c21\u6f54\u4ecb\u9762",ja:"\u30b7\u30f3\u30d7\u30ebUI\u3092\u4f7f\u7528",ko:"\uac04\ub2e8\ud55c \uc778\ud130\ud398\uc774\uc2a4 \uc0ac\uc6a9",tr:"Basit Bir Aray\xfcz Kullan\u0131n"},show:{zh:"\u663e\u793a",en:"Show",zh_TW:"\u986f\u793a",ja:"\u8868\u793a",ko:"\ud45c\uc2dc",tr:"G\xf6ster"},hide:{zh:"\u9690\u85cf",en:"Hide",zh_TW:"\u96b1\u85cf",ja:"\u975e\u8868\u793a",ko:"\uc228\uae30\uae30",tr:"Gizle"},save_rule:{zh:"\u4fdd\u5b58\u672c\u7ad9\u89c4\u5219",en:"Save this site rule",zh_TW:"\u5132\u5b58\u672c\u7ad9\u898f\u5247",ja:"\u3053\u306e\u30b5\u30a4\u30c8\u306e\u30eb\u30fc\u30eb\u3092\u4fdd\u5b58",ko:"\uc774 \uc0ac\uc774\ud2b8 \uaddc\uce59 \uc800\uc7a5",tr:"Bu Site Kural\u0131n\u0131 Kaydet"},domain:{zh:"\u7f51\u57df",en:"Domain",zh_TW:"\u7db2\u57df",ja:"\u30c9\u30e1\u30a4\u30f3",ko:"\ub3c4\uba54\uc778",tr:"Alan"},global_rule:{zh:"\u5168\u5c40\u89c4\u5219",en:"Global Rule",zh_TW:"\u5168\u57df\u898f\u5247",ja:"\u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb",ko:"\uc804\uc5ed \uaddc\uce59",tr:"K\xfcresel Kural"},input_translate:{zh:"\u8f93\u5165\u6846\u7ffb\u8bd1",en:"Input Box Translation",zh_TW:"\u8f38\u5165\u6846\u7ffb\u8b6f",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u7ffb\u8a33",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed",tr:"Giri\u015f Kutusu \xc7evirisi"},use_input_box_translation:{zh:"\u542f\u7528\u8f93\u5165\u6846\u7ffb\u8bd1",en:"Input Box Translation",zh_TW:"\u555f\u7528\u8f38\u5165\u6846\u7ffb\u8b6f",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed \uc0ac\uc6a9",tr:"Giri\u015f Kutusu \xc7evirisi"},input_selector:{zh:"\u8f93\u5165\u6846\u9009\u62e9\u5668",en:"Input Selector",zh_TW:"\u8f38\u5165\u6846\u9078\u64c7\u5668",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u30bb\u30ec\u30af\u30bf",ko:"\uc785\ub825\ucc3d \uc120\ud0dd\uc790",tr:"Giri\u015f Se\xe7ici"},input_selector_helper:{zh:"\u7528\u4e8e\u8f93\u5165\u6846\u7ffb\u8bd1\u3002",en:"Used for input box translation.",zh_TW:"\u7528\u65bc\u8f38\u5165\u6846\u7ffb\u8b6f\u3002",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u306e\u7ffb\u8a33\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed\uc5d0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.",tr:"Giri\u015f kutusu \xe7evirisi i\xe7in kullan\u0131l\u0131r."},trigger_trans_shortcut:{zh:"\u89e6\u53d1\u7ffb\u8bd1\u5feb\u6377\u952e",en:"Trigger Translation Shortcut Keys",zh_TW:"\u89f8\u767c\u7ffb\u8b6f\u5feb\u901f\u9375",ja:"\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc",ko:"\ubc88\uc5ed \uc2e4\ud589 \ub2e8\ucd95\ud0a4",tr:"\xc7eviri K\u0131sayol Tu\u015flar\u0131n\u0131 Tetikleyin"},trigger_trans_shortcut_help:{zh:"\u9ed8\u8ba4\u4e3a\u5355\u51fb\u201cAltLeft+KeyI\u201d",en:'Default is "AltLeft+KeyI"',zh_TW:"\u9810\u8a2d\u70ba\u6309\u4e0b\u300cAltLeft+KeyI\u300d",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u306f\u300cAltLeft+KeyI\u300d\u3067\u3059",ko:'\uae30\ubcf8\uac12 "AltLeft+KeyI"',tr:'Varsay\u0131lan "AltLeft+KeyI"'},shortcut_press_count:{zh:"\u5feb\u6377\u952e\u8fde\u51fb\u6b21\u6570",en:"Shortcut Press Number",zh_TW:"\u5feb\u901f\u9375\u9023\u6309\u6b21\u6578",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u306e\u9023\u7d9a\u30d7\u30ec\u30b9\u56de\u6570",ko:"\ub2e8\ucd95\ud0a4 \uc5f0\uc18d \uc785\ub825 \ud69f\uc218",tr:"K\u0131sayol Tu\u015funa Bas\u0131n"},combo_timeout:{zh:"\u8fde\u51fb\u8d85\u65f6\u65f6\u95f4 (10-1000ms)",en:"Combo Timeout (10-1000ms)",zh_TW:"\u9023\u64ca\u903e\u6642 (10-1000ms)",ja:"\u9023\u7d9a\u30d7\u30ec\u30b9\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 (10-1000ms)",ko:"\uc5f0\uc18d \uc785\ub825 \uc2dc\uac04 \ucd08\uacfc (10-1000ms)",tr:"Kombo Zaman A\u015f\u0131m\u0131 (10-1000 Ms)"},input_trans_start_sign:{zh:"\u7ffb\u8bd1\u8d77\u59cb\u6807\u8bc6",en:"Translation Start Sign",zh_TW:"\u7ffb\u8b6f\u8d77\u59cb\u6a19\u8a18",ja:"\u7ffb\u8a33\u958b\u59cb\u8a18\u53f7",ko:"\ubc88\uc5ed \uc2dc\uc791 \ud45c\uc2dc",tr:"\xc7eviri Ba\u015flang\u0131\xe7 \u0130\u015fareti"},input_trans_start_sign_help:{zh:"\u6807\u8bc6\u540e\u9762\u53ef\u4ee5\u52a0\u76ee\u6807\u8bed\u8a00\u4ee3\u7801\uff0c\u5982\uff1a \u201c/en \u4f60\u597d\u201d\u3001\u201c/zh hello\u201d",en:'The target language code can be added after the sign, such as: "/en \u4f60\u597d", "/zh hello"',zh_TW:"\u6a19\u8a18\u5f8c\u53ef\u52a0\u4e0a\u76ee\u6a19\u8a9e\u8a00\u4ee3\u78bc\uff0c\u4f8b\u5982\uff1a\u300c/en \u4f60\u597d\u300d\u3001\u300c/zh hello\u300d",ja:"\u8a18\u53f7\u306e\u5f8c\u306b\u5bfe\u8c61\u8a00\u8a9e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002\u4f8b\uff1a\u300c/en \u4f60\u597d\u300d\u3001\u300c/zh hello\u300d",ko:'\ud45c\uc2dc \ub4a4\uc5d0 \ub300\uc0c1 \uc5b8\uc5b4 \ucf54\ub4dc\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608: "/en \u4f60\u597d", "/zh hello"',tr:'\u0130\u015faretin sonuna hedef dil kodu eklenebilir, \xf6rne\u011fin: "/en \u4f60\u597d", "/zh hello"'},detect_lang_remote:{zh:"\u8fdc\u7a0b\u8bed\u8a00\u68c0\u6d4b",en:"Remote language detection",zh_TW:"\u9060\u7aef\u8a9e\u8a00\u5075\u6e2c",ja:"\u30ea\u30e2\u30fc\u30c8\u8a00\u8a9e\u691c\u51fa",ko:"\uc6d0\uaca9 \uc5b8\uc5b4 \uac10\uc9c0",tr:"Uzaktan Dil Alg\u0131lama"},detect_lang_remote_help:{zh:"\u542f\u7528\u540e\u68c0\u6d4b\u51c6\u786e\u5ea6\u589e\u52a0\uff0c\u4f46\u4f1a\u964d\u4f4e\u7ffb\u8bd1\u901f\u5ea6\uff0c\u8bf7\u914c\u60c5\u5f00\u542f",en:"After enabling, the detection accuracy will increase, but it will reduce the translation speed. Please enable it as appropriate.",zh_TW:"\u555f\u7528\u5f8c\u53ef\u63d0\u5347\u5075\u6e2c\u6e96\u78ba\u5ea6\uff0c\u4f46\u6703\u964d\u4f4e\u7ffb\u8b6f\u901f\u5ea6\uff0c\u8acb\u8996\u9700\u8981\u958b\u555f\u3002",ja:"\u6709\u52b9\u306b\u3059\u308b\u3068\u691c\u51fa\u7cbe\u5ea6\u304c\u5411\u4e0a\u3057\u307e\u3059\u304c\u3001\u7ffb\u8a33\u901f\u5ea6\u304c\u4f4e\u4e0b\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u6709\u52b9\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ud65c\uc131\ud654\ud558\uba74 \uac10\uc9c0 \uc815\ud655\ub3c4\uac00 \ub192\uc544\uc9c0\uc9c0\ub9cc \ubc88\uc5ed \uc18d\ub3c4\uac00 \ub290\ub824\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc801\uc808\ud788 \ud65c\uc131\ud654\ud558\uc2ed\uc2dc\uc624.",tr:"Etkinle\u015ftirildikten sonra alg\u0131lama do\u011frulu\u011fu artacak, ancak \xe7eviri h\u0131z\u0131 d\xfc\u015fecektir. L\xfctfen uygun \u015fekilde etkinle\u015ftirin."},detect_lang_service:{zh:"\u8bed\u8a00\u68c0\u6d4b\u670d\u52a1",en:"Language detect service",zh_TW:"\u8a9e\u8a00\u5075\u6e2c\u670d\u52d9",ja:"\u8a00\u8a9e\u691c\u51fa\u30b5\u30fc\u30d3\u30b9",ko:"\uc5b8\uc5b4 \uac10\uc9c0 \uc11c\ube44\uc2a4",tr:"Dil Alg\u0131lama Hizmeti"},disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},enable:{zh:"\u542f\u7528",en:"Enable",zh_TW:"\u555f\u7528",ja:"\u6709\u52b9",ko:"\ud65c\uc131\ud654",tr:"Etkin"},selection_translate:{zh:"\u5212\u8bcd\u7ffb\u8bd1",en:"Selection Translation",zh_TW:"\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7ffb\u8a33",ko:"\uc120\ud0dd \ubc88\uc5ed",tr:"Se\xe7im \xc7evirisi"},toggle_selection_translate:{zh:"\u542f\u7528\u5212\u8bcd\u7ffb\u8bd1",en:"Use Selection Translate",zh_TW:"\u555f\u7528\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc120\ud0dd \ubc88\uc5ed \uc0ac\uc6a9",tr:"Se\xe7im \xc7evirmeyi Kullan"},trigger_tranbox_shortcut:{zh:"\u663e\u793a\u7ffb\u8bd1\u6846/\u7ffb\u8bd1\u9009\u4e2d\u6587\u5b57\u5feb\u6377\u952e",en:"Open Translate Popup/Translate Selected Shortcut",zh_TW:"\u986f\u793a\u7ffb\u8b6f\u6846\uff0f\u7ffb\u8b6f\u9078\u53d6\u6587\u5b57\u5feb\u901f\u9375",ja:"\u7ffb\u8a33\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u8868\u793a/\u9078\u629e\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:"\ubc88\uc5ed\ucc3d \ud45c\uc2dc/\uc120\ud0dd \ubc88\uc5ed \ub2e8\ucd95\ud0a4",tr:"\xc7eviri A\xe7\u0131l\u0131r Penceresini A\xe7/Se\xe7ilen K\u0131sayolu \xc7evir"},tranbtn_offset_x:{zh:"\u7ffb\u8bd1\u6309\u94ae\u504f\u79fbX\uff08\xb1200\uff09",en:"Translate Button Offset X (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6309\u9215\u4f4d\u79fb X\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u30aa\u30d5\u30bb\u30c3\u30c8X (\xb1200)",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc624\ud504\uc14b X (\xb1200)",tr:"\xc7evirme D\xfc\u011fmesi Ofseti X (\xb1200)"},tranbtn_offset_y:{zh:"\u7ffb\u8bd1\u6309\u94ae\u504f\u79fbY\uff08\xb1200\uff09",en:"Translate Button Offset Y (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6309\u9215\u4f4d\u79fb Y\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u30aa\u30d5\u30bb\u30c3\u30c8Y (\xb1200)",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc624\ud504\uc14b Y (\xb1200)",tr:"\xc7evirme D\xfc\u011fmesi Ofseti Y (\xb1200)"},tranbox_offset_x:{zh:"\u7ffb\u8bd1\u6846\u504f\u79fbX\uff08\xb1200\uff09",en:"Translate Box Offset X (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6846\u4f4d\u79fb X\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u30aa\u30d5\u30bb\u30c3\u30c8X (\xb1200)",ko:"\ubc88\uc5ed\ucc3d \uc624\ud504\uc14b X (\xb1200)",tr:"\xc7evirme Kutusu Ofseti X (\xb1200)"},tranbox_offset_y:{zh:"\u7ffb\u8bd1\u6846\u504f\u79fbY\uff08\xb1200\uff09",en:"Translate Box Offset Y (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6846\u4f4d\u79fb Y\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u30aa\u30d5\u30bb\u30c3\u30c8Y (\xb1200)",ko:"\ubc88\uc5ed\ucc3d \uc624\ud504\uc14b Y (\xb1200)",tr:"\xc7evirme Kutusu Ofseti Y (\xb1200)"},translated_text:{zh:"\u8bd1\u6587",en:"Translated Text",zh_TW:"\u8b6f\u6587",ja:"\u7ffb\u8a33\u6e08\u307f\u30c6\u30ad\u30b9\u30c8",ko:"\ubc88\uc5ed\ub41c \ud14d\uc2a4\ud2b8",tr:"\xc7evrilmi\u015f Metin"},original_text:{zh:"\u539f\u6587",en:"Original Text",zh_TW:"\u539f\u6587",ja:"\u539f\u6587",ko:"\uc6d0\ubcf8 \ud14d\uc2a4\ud2b8",tr:"Orijinal Metin"},favorite_words:{zh:"\u6536\u85cf\u8bcd\u6c47",en:"Favorite Words",zh_TW:"\u6536\u85cf\u8a5e\u5f59",ja:"\u304a\u6c17\u306b\u5165\u308a\u5358\u8a9e",ko:"\uc990\uaca8\ucc3e\ub294 \ub2e8\uc5b4",tr:"Favori Kelimeler"},touch_setting:{zh:"\u89e6\u5c4f\u8bbe\u7f6e",en:"Touch Setting",zh_TW:"\u89f8\u63a7\u8a2d\u5b9a",ja:"\u30bf\u30c3\u30c1\u8a2d\u5b9a",ko:"\ud130\uce58 \uc124\uc815",tr:"Dokunma Ayar\u0131"},touch_translate_shortcut:{zh:"\u89e6\u5c4f\u7ffb\u8bd1\u5feb\u6377\u65b9\u5f0f (\u652f\u6301\u591a\u9009)",en:"Touch Translate Shortcut (multiple supported)",zh_TW:"\u89f8\u63a7\u7ffb\u8b6f\u6377\u5f91 (\u652f\u63f4\u591a\u9078)",ja:"\u30bf\u30c3\u30c1\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8 (\u8907\u6570\u9078\u629e\u53ef)",ko:"\ud130\uce58 \ubc88\uc5ed \ub2e8\ucd95\ud0a4 (\ub2e4\uc911 \uc120\ud0dd \uc9c0\uc6d0)",tr:"Dokunmatik \xc7eviri K\u0131sayolu (Birden Fazla Desteklenir)"},touch_tap_0:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},touch_tap_2:{zh:"\u53cc\u6307\u8f7b\u89e6",en:"Two finger tap",zh_TW:"\u96d9\u6307\u8f15\u89f8",ja:"2\u672c\u6307\u30bf\u30c3\u30d7",ko:"\ub450 \uc190\uac00\ub77d \ud0ed",tr:"\u0130ki Parmakla Dokunma"},touch_tap_3:{zh:"\u4e09\u6307\u8f7b\u89e6",en:"Three finger tap",zh_TW:"\u4e09\u6307\u8f15\u89f8",ja:"3\u672c\u6307\u30bf\u30c3\u30d7",ko:"\uc138 \uc190\uac00\ub77d \ud0ed",tr:"\xdc\xe7 Parmakla Dokunma"},touch_tap_4:{zh:"\u56db\u6307\u8f7b\u89e6",en:"Four finger tap",zh_TW:"\u56db\u6307\u8f15\u89f8",ja:"4\u672c\u6307\u30bf\u30c3\u30d7",ko:"\ub124 \uc190\uac00\ub77d \ud0ed",tr:"D\xf6rt Parmakla Dokunma"},touch_tap_5:{zh:"\u5355\u6307\u53cc\u51fb",en:"Double-click",zh_TW:"\u55ae\u6307\u96d9\u64ca",ja:"\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ub354\ube14 \ud074\ub9ad",tr:"\xc7ift T\u0131klama"},touch_tap_6:{zh:"\u5355\u6307\u4e09\u51fb",en:"Triple-click",zh_TW:"\u55ae\u6307\u4e09\u64ca",ja:"\u30c8\u30ea\u30d7\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ud2b8\ub9ac\ud50c \ud074\ub9ad",tr:"\xdc\xe7l\xfc T\u0131klama"},touch_tap_7:{zh:"\u53cc\u6307\u53cc\u51fb",en:"Two-finger double-click",zh_TW:"\u96d9\u6307\u96d9\u64ca",ja:"2\u672c\u6307\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ub450 \uc190\uac00\ub77d \ub354\ube14 \ud074\ub9ad",tr:"\u0130ki Parmakla \xc7ift T\u0131klama"},translate_blacklist:{zh:"\u7981\u7528\u7ffb\u8bd1\u540d\u5355",en:"Translate Blacklist",zh_TW:"\u505c\u7528\u7ffb\u8b6f\u540d\u55ae",ja:"\u7ffb\u8a33\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8",ko:"\ubc88\uc5ed \ube14\ub799\ub9ac\uc2a4\ud2b8",tr:"Kara Listeyi \xc7evir"},blacklist:{zh:"\u7981\u7528\u9ed1\u540d\u5355",en:"Blacklist",zh_TW:"\u505c\u7528\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8",tr:"Kara Liste"},add_to_blacklist:{zh:"\u52a0\u5165\u9ed1\u540d\u5355",en:"Add to Blacklist",zh_TW:"\u52a0\u5165\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u306b\u8ffd\u52a0",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00",tr:"Kara Listeye Ekle"},remove_from_blacklist:{zh:"\u79fb\u51fa\u9ed1\u540d\u5355",en:"Remove from Blacklist",zh_TW:"\u79fb\u51fa\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8\uc5d0\uc11c \uc81c\uac70",tr:"Kara Listeden Kald\u0131r"},disabled_orilist:{zh:"\u7981\u7528Origin\u540d\u5355",en:"Disabled Origin List",zh_TW:"\u505c\u7528 Origin \u540d\u55ae",ja:"\u7121\u52b9\u5316Origin\u30ea\u30b9\u30c8",ko:"\ube44\ud65c\uc131\ud654\ub41c Origin \ubaa9\ub85d",tr:"Devre D\u0131\u015f\u0131 B\u0131rak\u0131lan Kaynak Listesi"},disabled_csplist:{zh:"\u7981\u7528CSP\u540d\u5355",en:"Disabled CSP List",zh_TW:"\u505c\u7528 CSP \u540d\u55ae",ja:"\u7121\u52b9\u5316CSP\u30ea\u30b9\u30c8",ko:"\ube44\ud65c\uc131\ud654\ub41c CSP \ubaa9\ub85d",tr:"Devre D\u0131\u015f\u0131 CSP Listesi"},disabled_csplist_helper:{zh:"3\u3001\u901a\u8fc7\u8c03\u6574CSP\u7b56\u7565\uff0c\u4f7f\u5f97\u67d0\u4e9b\u9875\u9762\u80fd\u591f\u6ce8\u5165JS/CSS/Media\uff0c\u8bf7\u8c28\u614e\u4f7f\u7528\uff0c\u9664\u975e\u60a8\u5df2\u77e5\u6653\u76f8\u5173\u98ce\u9669\u3002",en:"3. By adjusting the CSP policy, some pages can inject JS/CSS/Media. Please use it with caution unless you are aware of the related risks.",zh_TW:"3. \u900f\u904e\u8abf\u6574 CSP \u653f\u7b56\uff0c\u4f7f\u90e8\u5206\u9801\u9762\u53ef\u6ce8\u5165 JS/CSS/Media\u3002\u8acb\u8b39\u614e\u4f7f\u7528\uff0c\u9664\u975e\u60a8\u5df2\u77e5\u6089\u76f8\u95dc\u98a8\u96aa\u3002",ja:"3. CSP\u30dd\u30ea\u30b7\u30fc\u3092\u8abf\u6574\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u4e00\u90e8\u306e\u30da\u30fc\u30b8\u3067JS/CSS/Media\u306e\u6ce8\u5165\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u95a2\u9023\u3059\u308b\u30ea\u30b9\u30af\u3092\u627f\u77e5\u3057\u3066\u3044\u306a\u3044\u9650\u308a\u3001\u614e\u91cd\u306b\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"3. CSP \uc815\ucc45\uc744 \uc870\uc815\ud558\uc5ec \uc77c\ubd80 \ud398\uc774\uc9c0\uc5d0\uc11c JS/CSS/Media\ub97c \uc8fc\uc785\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uad00\ub828\ub41c \uc704\ud5d8\uc744 \uc778\uc9c0\ud558\uace0 \uc788\ub294 \uacbd\uc6b0\uac00 \uc544\ub2c8\ub77c\uba74 \uc8fc\uc758\ud574\uc11c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.",tr:"3. CSP politikas\u0131n\u0131 ayarlayarak, baz\u0131 sayfalara JS/CSS/Medya dosyalar\u0131 eklenebilir. \u0130lgili risklerin fark\u0131nda de\u011filseniz, l\xfctfen dikkatli kullan\u0131n."},skip_langs:{zh:"\u4e0d\u7ffb\u8bd1\u7684\u8bed\u8a00",en:"Disable Languages",zh_TW:"\u4e0d\u7ffb\u8b6f\u7684\u8a9e\u8a00",ja:"\u7ffb\u8a33\u3057\u306a\u3044\u8a00\u8a9e",ko:"\ubc88\uc5ed\ud558\uc9c0 \uc54a\uc744 \uc5b8\uc5b4",tr:"Dilleri Devre D\u0131\u015f\u0131 B\u0131rak"},skip_langs_helper:{zh:"\u6b64\u529f\u80fd\u4f9d\u8d56\u51c6\u786e\u7684\u8bed\u8a00\u68c0\u6d4b\uff0c\u5efa\u8bae\u542f\u7528\u8fdc\u7a0b\u8bed\u8a00\u68c0\u6d4b\u3002",en:"This feature relies on accurate language detection. It is recommended to enable remote language detection.",zh_TW:"\u6b64\u529f\u80fd\u4ef0\u8cf4\u6e96\u78ba\u7684\u8a9e\u8a00\u5075\u6e2c\uff0c\u5efa\u8b70\u555f\u7528\u9060\u7aef\u8a9e\u8a00\u5075\u6e2c\u3002",ja:"\u3053\u306e\u6a5f\u80fd\u306f\u6b63\u78ba\u306a\u8a00\u8a9e\u691c\u51fa\u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30ea\u30e2\u30fc\u30c8\u8a00\u8a9e\u691c\u51fa\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002",ko:"\uc774 \uae30\ub2a5\uc740 \uc815\ud655\ud55c \uc5b8\uc5b4 \uac10\uc9c0\uc5d0 \uc758\uc874\ud558\ubbc0\ub85c \uc6d0\uaca9 \uc5b8\uc5b4 \uac10\uc9c0\ub97c \ud65c\uc131\ud654\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.",tr:"Bu \xf6zellik, do\u011fru dil alg\u0131lamas\u0131na ba\u011fl\u0131d\u0131r. Uzaktan dil alg\u0131lamay\u0131 etkinle\u015ftirmeniz \xf6nerilir"},context_menus:{zh:"\u53f3\u952e\u83dc\u5355",en:"Context Menus",zh_TW:"\u53f3\u9375\u9078\u55ae",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"\u0130\xe7erik Men\xfcleri"},hide_context_menus:{zh:"\u9690\u85cf\u53f3\u952e\u83dc\u5355",en:"Hide Context Menus",zh_TW:"\u96b1\u85cf\u53f3\u9375\u9078\u55ae",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc\u3092\u96a0\u3059",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274 \uc228\uae30\uae30",tr:"\u0130\xe7erik Men\xfclerini Gizle"},simple_context_menus:{zh:"\u7b80\u5355\u53f3\u952e\u83dc\u5355",en:"Simple_context_menus Context Menus",zh_TW:"\u7c21\u6613\u53f3\u9375\u9078\u55ae",ja:"\u30b7\u30f3\u30d7\u30eb\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\uac04\ub2e8\ud55c \ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"Basit \u0130\xe7erik Men\xfcleri"},secondary_context_menus:{zh:"\u4e8c\u7ea7\u53f3\u952e\u83dc\u5355",en:"Secondary Context Menus",zh_TW:"\u6b21\u7d1a\u53f3\u9375\u9078\u55ae",ja:"\u30b5\u30d6\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\ubcf4\uc870 \ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"\u0130kincil \u0130\xe7erik Men\xfcleri"},mulkeys_help:{zh:"\u652f\u6301\u7528\u6362\u884c\u6216\u82f1\u6587\u9017\u53f7\u201c,\u201d\u5206\u9694\uff0c\u8f6e\u8be2\u8c03\u7528\u3002",en:'Supports polling calls separated by newlines or English commas ",".',zh_TW:"\u652f\u63f4\u4ee5\u63db\u884c\u6216\u82f1\u6587\u9017\u865f\u300c,\u300d\u5206\u9694\uff0c\u8f2a\u8a62\u547c\u53eb\u3002",ja:"\u6539\u884c\u307e\u305f\u306f\u82f1\u8a9e\u306e\u30b3\u30f3\u30de\u300c,\u300d\u3067\u533a\u5207\u3063\u3066\u30dd\u30fc\u30ea\u30f3\u30b0\u30b3\u30fc\u30eb\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002",ko:'\uc904\ubc14\uafc8 \ub610\ub294 \uc601\uc5b4 \uc27c\ud45c ","\ub85c \uad6c\ubd84\ub41c \ud3f4\ub9c1 \ud638\ucd9c\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.',tr:'Anket \xe7a\u011fr\u0131lar\u0131n\u0131n yeni sat\u0131rlarla veya \u0130ngilizce virg\xfcllerle ayr\u0131lmas\u0131n\u0131 destekler"'},translation_element_tag:{zh:"\u8bd1\u6587\u5143\u7d20\u6807\u7b7e",en:"Translation Element Tag",zh_TW:"\u8b6f\u6587\u5143\u7d20\u6a19\u7c64",ja:"\u7ffb\u8a33\u8981\u7d20\u30bf\u30b0",ko:"\ubc88\uc5ed \uc694\uc18c \ud0dc\uadf8",tr:"\xc7eviri \xd6\u011fesi Etiketi"},show_only_translations:{zh:"\u4ec5\u663e\u793a\u8bd1\u6587",en:"Show Only Translations",zh_TW:"\u50c5\u986f\u793a\u8b6f\u6587",ja:"\u7ffb\u8a33\u306e\u307f\u8868\u793a",ko:"\ubc88\uc5ed\ub9cc \ubcf4\uae30",tr:"Yaln\u0131zca \xc7evirileri G\xf6ster"},show_only_translations_help:{zh:"\u975e\u5b8c\u7f8e\u5b9e\u73b0\uff0c\u67d0\u4e9b\u9875\u9762\u53ef\u80fd\u6709\u6837\u5f0f\u7b49\u95ee\u9898\u3002",en:"It is not a perfect implementation and some pages may have style issues.",zh_TW:"\u6b64\u70ba\u975e\u5b8c\u7f8e\u5be6\u4f5c\uff0c\u90e8\u5206\u9801\u9762\u53ef\u80fd\u51fa\u73fe\u6a23\u5f0f\u7b49\u554f\u984c\u3002",ja:"\u5b8c\u5168\u306a\u5b9f\u88c5\u3067\u306f\u306a\u304f\u3001\u4e00\u90e8\u306e\u30da\u30fc\u30b8\u3067\u30b9\u30bf\u30a4\u30eb\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002",ko:"\uc644\ubcbd\ud55c \uad6c\ud604\uc774 \uc544\ub2c8\uba70 \uc77c\ubd80 \ud398\uc774\uc9c0\uc5d0\uc11c \uc2a4\ud0c0\uc77c \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"M\xfckemmel bir uygulama de\u011fildir ve baz\u0131 sayfalarda stil sorunlar\u0131 olabilir"},trans_order:{zh:"\u6587\u672c\u987a\u5e8f",en:"Translation Order",zh_TW:"\u6587\u5b57\u9806\u5e8f",ja:"\u30c6\u30ad\u30b9\u30c8\u9806\u5e8f",ko:"\ud14d\uc2a4\ud2b8 \uc21c\uc11c",tr:"\xc7eviri S\u0131ras\u0131"},wrap_original:{zh:"\u5305\u88f9\u539f\u6587",en:"Wrap Original Text",zh_TW:"\u5305\u88f9\u539f\u6587",ja:"\u539f\u6587\u3092\u30e9\u30c3\u30d7",ko:"\uc6d0\ubb38 \uac10\uc2f8\uae30",tr:"Orijinal Metni Sar"},original_first:{zh:"\u539f\u6587\u5728\u4e0a\u65b9",en:"Original First",zh_TW:"\u539f\u6587\u5728\u4e0a\u65b9",ja:"\u539f\u6587\u304c\u6700\u521d",ko:"\uc6d0\ubb38\uc774 \uba3c\uc800",tr:"Orijinal \u0130lk"},translation_first:{zh:"\u8bd1\u6587\u5728\u4e0a\u65b9",en:"Translation First",zh_TW:"\u8b6f\u6587\u5728\u4e0a\u65b9",ja:"\u7ffb\u8a33\u304c\u6700\u521d",ko:"\ubc88\uc5ed\uc774 \uba3c\uc800",tr:"\xc7eviri \u0130lk"},transonly_revert:{zh:"\u60ac\u6d6e\u663e\u793a\u539f\u6587",en:"Hover to Show Original",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u6642\u986f\u793a\u539f\u6587",ja:"\u30db\u30d0\u30fc\u3067\u539f\u6587\u3092\u8868\u793a",ko:"\ud638\ubc84 \uc2dc \uc6d0\ubb38 \ud45c\uc2dc",tr:"Orijinali G\xf6stermek \u0130\xe7in \xdczerine Gelin"},transonly_revert_delay:{zh:"\u60ac\u6d6e\u5ef6\u8fdf(\u79d2)",en:"Hover Delay (seconds)",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u5ef6\u9072(\u79d2)",ja:"\u30db\u30d0\u30fc\u9045\u5ef6(\u79d2)",ko:"\ud638\ubc84 \uc9c0\uc5f0(\ucd08)",tr:"Vurgulu Gecikme (Saniye)"},translate_page_title:{zh:"\u662f\u5426\u7ffb\u8bd1\u9875\u9762\u6807\u9898",en:"Translate Page Title",zh_TW:"\u662f\u5426\u7ffb\u8b6f\u9801\u9762\u6a19\u984c",ja:"\u30da\u30fc\u30b8\u30bf\u30a4\u30c8\u30eb\u3092\u7ffb\u8a33\u3059\u308b",ko:"\ud398\uc774\uc9c0 \uc81c\ubaa9 \ubc88\uc5ed",tr:"Sayfa Ba\u015fl\u0131\u011f\u0131n\u0131 \xc7evir"},more:{zh:"\u66f4\u591a",en:"More",zh_TW:"\u66f4\u591a",ja:"\u3082\u3063\u3068\u898b\u308b",ko:"\ub354\ubcf4\uae30",tr:"Daha Fazla"},less:{zh:"\u66f4\u5c11",en:"Less",zh_TW:"\u66f4\u5c11",ja:"\u5c11\u306a\u304f",ko:"\uc904\uc774\uae30",tr:"Daha Az"},fixer_selector:{zh:"\u7f51\u9875\u4fee\u590d\u9009\u62e9\u5668",en:"Fixer Selector",zh_TW:"\u7db2\u9801\u4fee\u5fa9\u9078\u64c7\u5668",ja:"Web\u4fee\u6b63\u30bb\u30ec\u30af\u30bf",ko:"\uc6f9\ud398\uc774\uc9c0 \uc218\uc815 \uc120\ud0dd\uc790",tr:"Onar\u0131c\u0131 Se\xe7ici"},trigger_mode:{zh:"\u89e6\u53d1\u65b9\u5f0f",en:"Trigger Mode",zh_TW:"\u89f8\u767c\u65b9\u5f0f",ja:"\u30c8\u30ea\u30ac\u30fc\u30e2\u30fc\u30c9",ko:"\ud2b8\ub9ac\uac70 \ubaa8\ub4dc",tr:"Tetikleme Modu"},trigger_click:{zh:"\u70b9\u51fb\u89e6\u53d1",en:"Click Trigger",zh_TW:"\u9ede\u9078\u89f8\u767c",ja:"\u30af\u30ea\u30c3\u30af\u30c8\u30ea\u30ac\u30fc",ko:"\ud074\ub9ad \ud2b8\ub9ac\uac70",tr:"T\u0131klama Tetikleyicisi"},trigger_hover:{zh:"\u9f20\u6807\u60ac\u505c\u89e6\u53d1",en:"Hover Trigger",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u89f8\u767c",ja:"\u30db\u30d0\u30fc\u30c8\u30ea\u30ac\u30fc",ko:"\ud638\ubc84 \ud2b8\ub9ac\uac70",tr:"Fareyle \xdczerine Gelme Tetikleyicisi"},trigger_select:{zh:"\u9009\u4e2d\u89e6\u53d1",en:"Select Trigger",zh_TW:"\u9078\u53d6\u89f8\u767c",ja:"\u9078\u629e\u30c8\u30ea\u30ac\u30fc",ko:"\uc120\ud0dd \ud2b8\ub9ac\uac70",tr:"Tetikleyiciyi Se\xe7in"},trigger_dblclick:{zh:"\u53cc\u51fb\u89e6\u53d1",en:"Double-click Trigger",zh_TW:"\u96d9\u64ca\u89f8\u767c",ja:"\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u30c8\u30ea\u30ac\u30fc",ko:"\ub354\ube14\ud074\ub9ad \ud2b8\ub9ac\uac70",tr:"\xc7ift T\u0131klama Tetikleyicisi"},tranbtn_position_mode:{zh:"\u5f39\u51fa\u6309\u94ae\u4f4d\u7f6e",en:"Popup Button Position",zh_TW:"\u5f48\u51fa\u6309\u9215\u4f4d\u7f6e",ja:"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30dc\u30bf\u30f3\u4f4d\u7f6e",ko:"\ud31d\uc5c5 \ubc84\ud2bc \uc704\uce58",tr:"A\xe7\u0131l\u0131r D\xfc\u011fme Konumu"},tranbtn_position_fixed:{zh:"\u56fa\u5b9a\u4f4d\u7f6e",en:"Fixed Position",zh_TW:"\u56fa\u5b9a\u4f4d\u7f6e",ja:"\u56fa\u5b9a\u4f4d\u7f6e",ko:"\uace0\uc815 \uc704\uce58",tr:"Sabit Pozisyon"},tranbtn_position_mouse:{zh:"\u8ddf\u968f\u9f20\u6807",en:"Follow Mouse",zh_TW:"\u8ddf\u96a8\u6ed1\u9f20",ja:"\u30de\u30a6\u30b9\u306b\u8ffd\u5f93",ko:"\ub9c8\uc6b0\uc2a4 \ub530\ub77c\uac00\uae30",tr:"Fareyi Takip Et"},extend_styles:{zh:"\u9644\u52a0\u6837\u5f0f",en:"Extend Styles",zh_TW:"\u9644\u52a0\u6a23\u5f0f",ja:"\u62e1\u5f35\u30b9\u30bf\u30a4\u30eb",ko:"\ud655\uc7a5 \uc2a4\ud0c0\uc77c",tr:"Stilleri Geni\u015flet"},custom_option:{zh:"\u81ea\u5b9a\u4e49\u9009\u9879",en:"Custom Option",zh_TW:"\u81ea\u8a02\u9078\u9805",ja:"\u30ab\u30b9\u30bf\u30e0\u30aa\u30d7\u30b7\u30e7\u30f3",ko:"\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc635\uc158",tr:"\xd6zel Se\xe7enek"},translate_selected_text:{zh:"\u7ffb\u8bd1\u9009\u4e2d\u6587\u5b57",en:"Translate Selected Text",zh_TW:"\u7ffb\u8b6f\u9078\u53d6\u6587\u5b57",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8 \ubc88\uc5ed",tr:"Se\xe7ilen Metni \xc7evir"},toggle_style:{zh:"\u5207\u6362\u6837\u5f0f",en:"Toggle Style",zh_TW:"\u5207\u63db\u6a23\u5f0f",ja:"\u30b9\u30bf\u30a4\u30eb\u3092\u5207\u308a\u66ff\u3048",ko:"\uc2a4\ud0c0\uc77c \uc804\ud658",tr:"Stili De\u011fi\u015ftir"},open_menu:{zh:"\u6253\u5f00\u5f39\u7a97\u83dc\u5355",en:"Open Popup Menu",zh_TW:"\u958b\u555f\u5f48\u51fa\u8996\u7a97\u9078\u55ae",ja:"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30e1\u30cb\u30e5\u30fc\u3092\u958b\u304f",ko:"\ud31d\uc5c5 \uba54\ub274 \uc5f4\uae30",tr:"A\xe7\u0131l\u0131r Men\xfcy\xfc A\xe7"},open_setting:{zh:"\u6253\u5f00\u8bbe\u7f6e",en:"Open Setting",zh_TW:"\u958b\u555f\u8a2d\u5b9a",ja:"\u8a2d\u5b9a\u3092\u958b\u304f",ko:"\uc124\uc815 \uc5f4\uae30",tr:"Ayar\u0131 A\xe7"},follow_selection:{zh:"\u7ffb\u8bd1\u6846\u8ddf\u968f\u9009\u4e2d\u6587\u672c",en:"Transbox Follow Selection",zh_TW:"\u7ffb\u8b6f\u6846\u8ddf\u96a8\u9078\u53d6\u6587\u5b57",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u3092\u9078\u629e\u7bc4\u56f2\u306b\u8ffd\u5f93",ko:"\ubc88\uc5ed \uc0c1\uc790\uac00 \uc120\ud0dd \ud56d\ubaa9 \ub530\ub77c\uac00\uae30",tr:"\xc7eviri Kutusu Takip Se\xe7imi"},tranbox_auto_height:{zh:"\u7ffb\u8bd1\u6846\u81ea\u9002\u5e94\u9ad8\u5ea6",en:"Translation box adaptive height",zh_TW:"\u7ffb\u8b6f\u6846\u81ea\u9069\u61c9\u9ad8\u5ea6",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u306e\u9ad8\u3055\u81ea\u52d5\u8abf\u6574",ko:"\ubc88\uc5ed \uc0c1\uc790 \ub192\uc774 \uc790\ub3d9 \uc870\uc808",tr:"\xc7eviri Kutusu Uyarlanabilir Y\xfckseklik"},tranbox_interact_mode:{zh:"\u7ffb\u8bd1\u6846\u5185\u4ea4\u4e92\u6a21\u5f0f",en:"Transbox Interact Mode",zh_TW:"\u7ffb\u8b6f\u6846\u5167\u4e92\u52d5\u6a21\u5f0f",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u5185\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u30e2\u30fc\u30c9",ko:"\ubc88\uc5ed \uc0c1\uc790 \ub0b4 \uc778\ud130\ub799\uc158 \ubaa8\ub4dc",tr:"\xc7eviri Kutusu Etkile\u015fim Modu"},tranbox_interact_click:{zh:"\u5355\u51fb\u9009\u4e2d\u6587\u672c\u89e6\u53d1\u7ffb\u8bd1",en:"Click selected text to translate",zh_TW:"\u55ae\u64ca\u9078\u53d6\u6587\u5b57\u89f8\u767c\u7ffb\u8b6f",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8\ub97c \ud074\ub9ad\ud558\uc5ec \ubc88\uc5ed",tr:"\xc7evirmek \u0130\xe7in Se\xe7ilen Metni T\u0131klay\u0131n"},tranbox_interact_dblclick:{zh:"\u53cc\u51fb\u9009\u4e2d\u6587\u672c\u89e6\u53d1\u7ffb\u8bd1",en:"Double-click selected text to translate",zh_TW:"\u96d9\u64ca\u9078\u53d6\u6587\u5b57\u89f8\u767c\u7ffb\u8b6f",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8\ub97c \ub354\ube14\ud074\ub9ad\ud558\uc5ec \ubc88\uc5ed",tr:"\xc7evirmek \u0130\xe7in Se\xe7ilen Metni \xc7ift T\u0131klay\u0131n"},selection_skip_langs:{zh:"\u5ffd\u7565\u7684\u8bed\u8a00",en:"Ignore Languages",zh_TW:"\u5ffd\u7565\u7684\u8a9e\u8a00",ja:"\u7121\u8996\u3059\u308b\u8a00\u8a9e",ko:"\ubb34\uc2dc\ud560 \uc5b8\uc5b4",tr:"Dilleri Yoksay"},selection_skip_langs_helper:{zh:"\u5217\u8868\u4e2d\u7684\u8bed\u8a00\u4e0d\u5f39\u7a97\uff08\u8bbe\u5b9a\u540e\uff0c\u7b2c\u4e8c\u76ee\u6807\u8bed\u8a00\u4e92\u8bd1\u529f\u80fd\u5c06\u81ea\u52a8\u7981\u7528\uff09",en:"Don't show popup for languages in this list (when enabled, will automatically disable bidirectional translation for the second target language)",zh_TW:"\u5217\u8868\u4e2d\u7684\u8a9e\u8a00\u4e0d\u5f48\u7a97\uff08\u8a2d\u5b9a\u5f8c\uff0c\u7b2c\u4e8c\u76ee\u6a19\u8a9e\u8a00\u7684\u4e92\u8b6f\u529f\u80fd\u5c07\u81ea\u52d5\u7981\u7528\uff09",ja:"\u30ea\u30b9\u30c8\u5185\u306e\u8a00\u8a9e\u306f\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u8868\u793a\u3057\u307e\u305b\u3093\uff08\u6709\u52b9\u306b\u3059\u308b\u3068\u3001\u7b2c\u4e8c\u306e\u5bfe\u8c61\u8a00\u8a9e\u306e\u53cc\u65b9\u5411\u7ffb\u8a33\u6a5f\u80fd\u304c\u81ea\u52d5\u7684\u306b\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\uff09",ko:"\ubaa9\ub85d\uc5d0 \uc788\ub294 \uc5b8\uc5b4\ub294 \ud31d\uc5c5\uc744 \ud45c\uc2dc\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 (\ud65c\uc131\ud654 \uc2dc, \ub450 \ubc88\uc9f8 \ub300\uc0c1 \uc5b8\uc5b4\uc758 \uc591\ubc29\ud5a5 \ubc88\uc5ed \uae30\ub2a5\uc774 \uc790\ub3d9\uc73c\ub85c \ube44\ud65c\uc131\ud654\ub429\ub2c8\ub2e4)",tr:"Bu listedeki diller i\xe7in a\xe7\u0131l\u0131r pencere g\xf6sterilmez (etkinle\u015ftirildi\u011finde, ikinci hedef dil i\xe7in \xe7ift y\xf6nl\xfc \xe7eviri i\u015flevi otomatik olarak devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131r)"},translate_start_hook:{zh:"\u7ffb\u8bd1\u5f00\u59cb\u94a9\u5b50\u51fd\u6570",en:"Translate Start Hook",zh_TW:"\u7ffb\u8b6f\u958b\u59cb Hook",ja:"\u7ffb\u8a33\u958b\u59cb\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc2dc\uc791 \ud6c4\ud06c",tr:"\xc7eviri Ba\u015flad\u0131\u011f\u0131nda Tetiklenen \u0130\u015flev"},translate_start_hook_helper:{zh:"\u7ffb\u8bd1\u524d\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",en:"Run before translation, input parameters are: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",zh_TW:"\u7ffb\u8b6f\u524d\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",ja:"\u7ffb\u8a33\u524d\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",ko:"\ubc88\uc5ed \uc804 \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",tr:"\xc7eviriden \xf6nce \xe7al\u0131\u015ft\u0131r\u0131l\u0131r, giri\u015f parametreleri \u015funlard\u0131r: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}"},translate_end_hook:{zh:"\u7ffb\u8bd1\u5b8c\u6210\u94a9\u5b50\u51fd\u6570",en:"Translate End Hook",zh_TW:"\u7ffb\u8b6f\u5b8c\u6210 Hook",ja:"\u7ffb\u8a33\u5b8c\u4e86\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc644\ub8cc \ud6c4\ud06c",tr:"\xc7eviri Bitti\u011finde Tetiklenen \u0130\u015flev"},translate_end_hook_helper:{zh:"\u7ffb\u8bd1\u5b8c\u6210\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a ({hostNode, parentNode, nodes, wrapperNode, innerNode})",en:"Run when translation is complete, input parameters are: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",zh_TW:"\u7ffb\u8b6f\u5b8c\u6210\u6642\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a ({hostNode, parentNode, nodes, wrapperNode, innerNode})",ja:"\u7ffb\u8a33\u5b8c\u4e86\u6642\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",ko:"\ubc88\uc5ed \uc644\ub8cc \uc2dc \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",tr:"\xc7eviri tamamland\u0131\u011f\u0131nda, giri\u015f parametreleri \u015funlard\u0131r: ({hostNode, parentNode, nodes, wrapperNode, innerNode})"},translate_remove_hook:{zh:"\u7ffb\u8bd1\u79fb\u9664\u94a9\u5b50\u51fd\u6570",en:"Translate Removed Hook",zh_TW:"\u7ffb\u8b6f\u79fb\u9664 Hook",ja:"\u7ffb\u8a33\u524a\u9664\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc81c\uac70 \ud6c4\ud06c",tr:"\xc7eviri Kald\u0131r\u0131ld\u0131\u011f\u0131nda Tetiklenen \u0130\u015flev"},translate_remove_hook_helper:{zh:"\u7ffb\u8bd1\u79fb\u9664\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a \u7ffb\u8bd1\u8282\u70b9\u3002",en:"Run when translation is removed, the input parameters are: translation node.",zh_TW:"\u79fb\u9664\u7ffb\u8b6f\u6642\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a\u7ffb\u8b6f\u7bc0\u9ede\u3002",ja:"\u7ffb\u8a33\u524a\u9664\u6642\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: \u7ffb\u8a33\u30ce\u30fc\u30c9\u3002",ko:"\ubc88\uc5ed \uc81c\uac70 \uc2dc \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: \ubc88\uc5ed \ub178\ub4dc.",tr:"\xc7eviri kald\u0131r\u0131ld\u0131\u011f\u0131nda \xe7al\u0131\u015ft\u0131r\u0131l\u0131r, giri\u015f parametreleri \u015funlard\u0131r: \xe7eviri d\xfc\u011f\xfcm\xfc."},english_dict:{zh:"\u82f1\u6587\u8bcd\u5178",en:"English Dictionary",zh_TW:"\u82f1\u6587\u5b57\u5178",ja:"\u82f1\u8a9e\u8f9e\u66f8",ko:"\uc601\uc5b4 \uc0ac\uc804",tr:"\u0130ngilizce S\xf6zl\xfck"},default_dict:{zh:"\u9ed8\u8ba4\u8bcd\u5178",en:"Default Dictionary",zh_TW:"\u9810\u8a2d\u8a5e\u5178",ja:"\u65e2\u5b9a\u306e\u8f9e\u66f8",ko:"\uae30\ubcf8 \uc0ac\uc804",tr:"Varsay\u0131lan S\xf6zl\xfck"},ai_dict:{zh:"AI \u8bcd\u5178",en:"AI Dictionary",zh_TW:"AI \u8a5e\u5178",ja:"AI \u8f9e\u66f8",ko:"AI \uc0ac\uc804",tr:"AI S\xf6zl\xfc\u011f\xfc"},ai_dict_api:{zh:"AI \u8bcd\u5178\u63a5\u53e3",en:"AI Dictionary API",zh_TW:"AI \u8a5e\u5178\u4ecb\u9762",ja:"AI \u8f9e\u66f8 API",ko:"AI \uc0ac\uc804 API",tr:"AI S\xf6zl\xfck API'si"},ai_dict_prompt:{zh:"AI \u8bcd\u5178\u63d0\u793a\u8bcd",en:"AI Dictionary Prompt",zh_TW:"AI \u8a5e\u5178\u63d0\u793a\u8a5e",ja:"AI \u8f9e\u66f8\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"AI \uc0ac\uc804 \ud504\ub86c\ud504\ud2b8",tr:"AI S\xf6zl\xfck \u0130stemi"},english_suggest:{zh:"\u82f1\u6587\u5efa\u8bae",en:"English Suggest",zh_TW:"\u82f1\u6587\u5efa\u8b70",ja:"\u82f1\u8a9e\u30b5\u30b8\u30a7\u30b9\u30c8",ko:"\uc601\uc5b4 \uc81c\uc548",tr:"\u0130ngilizce \xd6neri"},api_name:{zh:"\u63a5\u53e3\u540d\u79f0",en:"API Name",zh_TW:"\u4ecb\u9762\u540d\u7a31",ja:"API\u540d",ko:"API \uc774\ub984",tr:"API Ad\u0131"},model_list_url:{zh:"\u6a21\u578b\u5217\u8868URL",en:"Model List URL",zh_TW:"\u6a21\u578b\u5217\u8868URL",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7URL",ko:"\ubaa8\ub378 \ubaa9\ub85d URL",tr:"Model Listesi URL'si"},model_list_loading:{zh:"\u6b63\u5728\u52a0\u8f7d\u6a21\u578b\u5217\u8868...",en:"Loading model list...",zh_TW:"\u6b63\u5728\u8f09\u5165\u6a21\u578b\u5217\u8868...",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7\u3092\u8aad\u307f\u8fbc\u307f\u4e2d...",ko:"\ubaa8\ub378 \ubaa9\ub85d\uc744 \ubd88\ub7ec\uc624\ub294 \uc911...",tr:"Model Listesi Y\xfckleniyor..."},model_list_fetch_failed:{zh:"\u6a21\u578b\u5217\u8868\u52a0\u8f7d\u5931\u8d25",en:"Failed to load model list",zh_TW:"\u6a21\u578b\u5217\u8868\u8f09\u5165\u5931\u6557",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f",ko:"\ubaa8\ub378 \ubaa9\ub85d\uc744 \ubd88\ub7ec\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4",tr:"Model Listesi Y\xfcklenemedi"},model_list_empty:{zh:"\u672a\u83b7\u53d6\u5230\u6a21\u578b\u5217\u8868\uff0c\u53ef\u624b\u52a8\u586b\u5199",en:"No models found. You can enter one manually.",zh_TW:"\u672a\u53d6\u5f97\u6a21\u578b\u5217\u8868\uff0c\u53ef\u624b\u52d5\u586b\u5beb",ja:"\u30e2\u30c7\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u624b\u52d5\u5165\u529b\u3067\u304d\u307e\u3059\u3002",ko:"\ubaa8\ub378\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc9c1\uc811 \uc785\ub825\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"Hi\xe7bir model bulunamad\u0131. Manuel olarak bir tane girebilirsiniz."},sort_order:{zh:"\u6392\u5e8f\u6743\u91cd",en:"Sort Order",zh_TW:"\u6392\u5e8f\u6b0a\u91cd",ja:"\u30bd\u30fc\u30c8\u9806\u5e8f",ko:"\uc815\ub82c \uc21c\uc11c",tr:"S\u0131ralama D\xfczeni"},sort_order_help:{zh:"\u6570\u503c\u8d8a\u5c0f\u8d8a\u9760\u524d",en:"Smaller values appear first",zh_TW:"\u6578\u503c\u8d8a\u5c0f\u8d8a\u9760\u524d",ja:"\u5c0f\u3055\u3044\u5024\u304c\u5148\u306b\u8868\u793a\u3055\u308c\u307e\u3059",ko:"\uc791\uc740 \uac12\uc774 \uba3c\uc800 \ud45c\uc2dc\ub429\ub2c8\ub2e4",tr:"\xd6nce K\xfc\xe7\xfck De\u011ferler G\xf6r\xfcn\xfcr"},is_disabled:{zh:"\u662f\u5426\u7981\u7528",en:"Is Disabled",zh_TW:"\u662f\u5426\u505c\u7528",ja:"\u7121\u52b9\u306b\u3059\u308b",ko:"\ube44\ud65c\uc131\ud654 \uc5ec\ubd80",tr:"Devre d\u0131\u015f\u0131 B\u0131rak\u0131ld\u0131"},is_pinned:{zh:"\u662f\u5426\u7f6e\u9876",en:"Is Pinned",zh_TW:"\u662f\u5426\u7f6e\u9802",ja:"\u30d4\u30f3\u7559\u3081",ko:"\uace0\uc815 \uc5ec\ubd80",tr:"Sabitlendi"},sort_alphabetically:{zh:"\u6309\u5b57\u6bcd\u6392\u5e8f",en:"Sort Alphabetically",zh_TW:"\u6309\u5b57\u6bcd\u6392\u5e8f",ja:"\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u9806",ko:"\uc54c\ud30c\ubcb3\uc21c \uc815\ub82c",tr:"Alfabetik Olarak S\u0131rala"},translate_selected:{zh:"\u662f\u5426\u542f\u7528\u5212\u8bcd\u7ffb\u8bd1",en:"If translate selected",zh_TW:"\u662f\u5426\u555f\u7528\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7bc4\u56f2\u306e\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc120\ud0dd \ubc88\uc5ed \uc0ac\uc6a9 \uc5ec\ubd80",tr:"\xc7eviri Se\xe7ene\u011fi Se\xe7ilirse"},use_batch_fetch:{zh:"\u662f\u5426\u805a\u5408\u53d1\u9001\u7ffb\u8bd1\u8bf7\u6c42",en:"Whether to aggregate and send translation requests",zh_TW:"\u662f\u5426\u5f59\u6574\u767c\u9001\u7ffb\u8b6f\u8acb\u6c42",ja:"\u7ffb\u8a33\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u307e\u3068\u3081\u3066\u9001\u4fe1",ko:"\ubc88\uc5ed \uc694\uccad \uc77c\uad04 \uc804\uc1a1 \uc5ec\ubd80",tr:"\xc7eviri isteklerini bir araya getirip g\xf6ndermeye karar verilip verilmeyece\u011fi"},batch_interval:{zh:"\u805a\u5408\u8bf7\u6c42\u7b49\u5f85\u65f6\u95f4(10-10000)",en:"Aggregation request waiting time (10-10000)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u7b49\u5f85\u6642\u9593(10-10000)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5f85\u6a5f\u6642\u9593(10-10000)",ko:"\uc77c\uad04 \uc694\uccad \ub300\uae30 \uc2dc\uac04(10-10000)",tr:"Toplama \u0130ste\u011fi Bekleme S\xfcresi (10-10000)"},batch_size:{zh:"\u805a\u5408\u8bf7\u6c42\u6700\u5927\u6bb5\u843d\u6570(1-100)",en:"Maximum number of paragraphs in an aggregation request (1-100)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u6700\u5927\u6bb5\u843d\u6578(1-100)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6700\u5927\u6bb5\u843d\u6570(1-100)",ko:"\uc77c\uad04 \uc694\uccad \ucd5c\ub300 \ub2e8\ub77d \uc218(1-100)",tr:"Toplama \u0130ste\u011findeki Maksimum Paragraf Say\u0131s\u0131 (1-100)"},batch_length:{zh:"\u805a\u5408\u8bf7\u6c42\u6700\u5927\u6587\u672c\u957f\u5ea6(1000-100000)",en:"Maximum text length for aggregation requests (1000-100000)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u6700\u5927\u6587\u5b57\u9577\u5ea6(1000-100000)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6700\u5927\u30c6\u30ad\u30b9\u30c8\u9577(1000-100000)",ko:"\uc77c\uad04 \uc694\uccad \ucd5c\ub300 \ud14d\uc2a4\ud2b8 \uae38\uc774(1000-100000)",tr:"Toplama Istekleri \u0130\xe7in Maksimum Metin Uzunlu\u011fu (1000-100000)"},batch_concurrency:{zh:"\u805a\u5408\u6279\u6b21\u5e76\u53d1\u6570(1-100)",en:"Concurrent aggregation batches (1-100)",zh_TW:"\u5f59\u6574\u6279\u6b21\u4e26\u884c\u6578(1-100)",ja:"\u540c\u6642\u5b9f\u884c\u3059\u308b\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u6570(1-100)",ko:"\ub3d9\uc2dc \uc77c\uad04 \uc694\uccad \uc218(1-100)",tr:"E\u015fzamanl\u0131 Toplama Grubu Say\u0131s\u0131 (1-100)"},batch_concurrency_context_hint:{zh:"\u4e0a\u4e0b\u6587\u4f1a\u8bdd\u8981\u6c42\u6279\u6b21\u6309\u987a\u5e8f\u6267\u884c\uff0c\u56e0\u6b64\u5e76\u53d1\u6570\u56fa\u5b9a\u4e3a 1",en:"Context sessions require ordered batches, so concurrency is fixed at 1",zh_TW:"\u4e0a\u4e0b\u6587\u6703\u8a71\u8981\u6c42\u6279\u6b21\u4f9d\u5e8f\u57f7\u884c\uff0c\u56e0\u6b64\u4e26\u884c\u6578\u56fa\u5b9a\u70ba 1",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u5229\u7528\u6642\u306f\u9806\u5e8f\u3092\u4fdd\u3064\u305f\u3081\u3001\u540c\u6642\u5b9f\u884c\u6570\u306f1\u306b\u56fa\u5b9a\u3055\u308c\u307e\u3059",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uc138\uc158\uc740 \uc21c\ucc28 \uc2e4\ud589\uc774 \ud544\uc694\ud558\ubbc0\ub85c \ub3d9\uc2dc \uc2e4\ud589 \uc218\ub294 1\ub85c \uace0\uc815\ub429\ub2c8\ub2e4",tr:"Ba\u011flam oturumlar\u0131 s\u0131ral\u0131 gruplar gerektirdi\u011finden e\u015fzamanl\u0131l\u0131k 1 olarak sabitlenir"},use_stream:{zh:"\u662f\u5426\u542f\u7528\u6d41\u5f0f\u4f20\u8f93",en:"Whether to enable streaming",zh_TW:"\u662f\u5426\u555f\u7528\u4e32\u6d41\u50b3\u8f38",ja:"\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc2a4\ud2b8\ub9ac\ubc0d \ud65c\uc131\ud654 \uc5ec\ubd80",tr:"Ak\u0131\u015f\u0131n Etkinle\u015ftirilip Etkinle\u015ftirilmeyece\u011fi"},stream_render_mode:{zh:"\u6d41\u5f0f\u6e32\u67d3\u6a21\u5f0f",en:"Stream render mode",zh_TW:"\u4e32\u6d41\u6e32\u67d3\u6a21\u5f0f",ja:"\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u30e2\u30fc\u30c9",ko:"\uc2a4\ud2b8\ub9ac\ubc0d \ub80c\ub354\ub9c1 \ubaa8\ub4dc",tr:"Ak\u0131\u015f Olu\u015fturma Modu"},stream_render_realtime:{zh:"\u5b9e\u65f6\u6e32\u67d3",en:"Realtime render",zh_TW:"\u5373\u6642\u6e32\u67d3",ja:"\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0",ko:"\uc2e4\uc2dc\uac04 \ub80c\ub354\ub9c1",tr:"Ger\xe7ek Zamanl\u0131 Olu\u015fturma"},stream_render_segment:{zh:"\u7247\u6bb5\u6e32\u67d3",en:"Segment render",zh_TW:"\u7247\u6bb5\u6e32\u67d3",ja:"\u30bb\u30b0\u30e1\u30f3\u30c8\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0",ko:"\uc138\uadf8\uba3c\ud2b8 \ub80c\ub354\ub9c1",tr:"Segment Olu\u015fturma"},use_context:{zh:"\u662f\u5426\u542f\u7528\u667a\u80fd\u4e0a\u4e0b\u6587",en:"Whether to enable AI context",zh_TW:"\u662f\u5426\u555f\u7528\u667a\u6167\u4e0a\u4e0b\u6587",ja:"AI\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"AI \ucee8\ud14d\uc2a4\ud2b8 \ud65c\uc131\ud654 \uc5ec\ubd80",tr:"AI \u0130\xe7eriklerinin Etkinle\u015ftirilip Etkinle\u015ftirilmeyece\u011fi"},context_size:{zh:"\u4e0a\u4e0b\u6587\u4f1a\u8bdd\u6570\u91cf(1-20)",en:"Number of context sessions(1-20)",zh_TW:"\u4e0a\u4e0b\u6587\u6703\u8a71\u6578\u91cf(1-20)",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30bb\u30c3\u30b7\u30e7\u30f3\u6570(1-20)",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uc138\uc158 \uc218(1-20)",tr:"\u0130\xe7erik Oturumlar\u0131n\u0131n Say\u0131s\u0131 (1-20)"},auto_scan_page:{zh:"\u81ea\u52a8\u626b\u63cf\u9875\u9762",en:"Auto scan page",zh_TW:"\u81ea\u52d5\u6383\u63cf\u9801\u9762",ja:"\u30da\u30fc\u30b8\u3092\u81ea\u52d5\u30b9\u30ad\u30e3\u30f3",ko:"\ud398\uc774\uc9c0 \uc790\ub3d9 \uc2a4\uce94",tr:"Sayfay\u0131 Otomatik Tara"},has_rich_text:{zh:"\u542f\u7528\u5bcc\u6587\u672c\u7ffb\u8bd1",en:"Enable rich text translation",zh_TW:"\u555f\u7528\u5bcc\u6587\u5b57\u7ffb\u8b6f",ja:"\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ub9ac\uce58 \ud14d\uc2a4\ud2b8 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Zengin Metin \xc7evirisini Etkinle\u015ftir"},has_shadowroot:{zh:"\u626b\u63cfShadowroot",en:"Scan Shadowroot",zh_TW:"\u6383\u63cfShadowroot",ja:"Shadowroot\u3092\u30b9\u30ad\u30e3\u30f3",ko:"Shadowroot \uc2a4\uce94",tr:"Shadowroot'u Tara"},mousehover_translate:{zh:"\u9f20\u6807\u60ac\u505c\u7ffb\u8bd1",en:"Mouseover Translation",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u7ffb\u8b6f",ja:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u7ffb\u8a33",ko:"\ub9c8\uc6b0\uc2a4\uc624\ubc84 \ubc88\uc5ed",tr:"Fareyle \xdczerine Gelme \xc7evirisi"},use_mousehover_translation:{zh:"\u542f\u7528\u9f20\u6807\u60ac\u505c\u7ffb\u8bd1",en:"Enable mouseover translation",zh_TW:"\u555f\u7528\u6ed1\u9f20\u61f8\u505c\u7ffb\u8b6f",ja:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ub9c8\uc6b0\uc2a4\uc624\ubc84 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Fareyle \xdczerine Gelindi\u011finde \xc7eviriyi Etkinle\u015ftir"},selected_translation_alert:{zh:"\u5212\u8bcd\u7ffb\u8bd1\u7684\u5f00\u542f\u548c\u5173\u95ed\u8bf7\u5230\u201c\u89c4\u5219\u8bbe\u7f6e\u201d\u91cc\u9762\u8bbe\u7f6e\u3002",en:'To turn selected translation on or off, please go to "Rule Settings".',zh_TW:"\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f\u7684\u958b\u555f\u548c\u95dc\u9589\u8acb\u5230\u300c\u898f\u5247\u8a2d\u5b9a\u300d\u88e1\u9762\u8a2d\u5b9a\u3002",ja:"\u9078\u629e\u7ffb\u8a33\u306e\u30aa\u30f3/\u30aa\u30d5\u306f\u300c\u30eb\u30fc\u30eb\u8a2d\u5b9a\u300d\u3067\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:'\uc120\ud0dd \ubc88\uc5ed \ud65c\uc131\ud654/\ube44\ud65c\uc131\ud654\ub294 "\uaddc\uce59 \uc124\uc815"\uc5d0\uc11c \ud558\uc2ed\uc2dc\uc624.',tr:'Se\xe7ilen \xe7eviri \xf6zelli\u011fini a\xe7mak veya kapatmak i\xe7in l\xfctfen "Kural Ayarlar\u0131"na gidin.'},mousehover_key_help:{zh:"\u5f53\u5feb\u6377\u952e\u7f6e\u7a7a\u65f6\u8868\u793a\u9f20\u6807\u61f8\u505c\u76f4\u63a5\u7ffb\u8bd1",en:"When the shortcut key is empty, it means that the mouse hovers to translate directly",zh_TW:"\u5feb\u901f\u9375\u7559\u7a7a\u6642\u8868\u793a\u6ed1\u9f20\u61f8\u505c\u5373\u76f4\u63a5\u7ffb\u8b6f",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc\u304c\u7a7a\u306e\u5834\u5408\u3001\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u3067\u76f4\u63a5\u7ffb\u8a33\u3057\u307e\u3059",ko:"\ub2e8\ucd95\ud0a4\uac00 \ube44\uc5b4 \uc788\uc73c\uba74 \ub9c8\uc6b0\uc2a4\uc624\ubc84 \uc2dc \ubc14\ub85c \ubc88\uc5ed\ud569\ub2c8\ub2e4",tr:"K\u0131sayol tu\u015fu bo\u015f oldu\u011funda, fare imlecinin \xfczerine gelerek do\u011frudan \xe7eviri yapaca\u011f\u0131 anlam\u0131na gelir"},mousehover_display_mode:{zh:"\u5c55\u793a\u6a21\u5f0f",en:"Display mode",zh_TW:"\u986f\u793a\u6a21\u5f0f",ja:"\u8868\u793a\u30e2\u30fc\u30c9",ko:"\ud45c\uc2dc \ubaa8\ub4dc",tr:"Ekran Modu"},mousehover_display_bilingual:{zh:"\u53cc\u8bed\u6a21\u5f0f",en:"Bilingual mode",zh_TW:"\u96d9\u8a9e\u6a21\u5f0f",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u30e2\u30fc\u30c9",ko:"\uc774\uc911 \uc5b8\uc5b4 \ubaa8\ub4dc",tr:"\u0130ki Dilli Mod"},mousehover_display_bubble:{zh:"\u6c14\u6ce1\u6a21\u5f0f",en:"Bubble mode",zh_TW:"\u6c23\u6ce1\u6a21\u5f0f",ja:"\u30d0\u30d6\u30eb\u30e2\u30fc\u30c9",ko:"\ub9d0\ud48d\uc120 \ubaa8\ub4dc",tr:"Kabarc\u0131k Modu"},mousehover_bubble_style:{zh:"\u6c14\u6ce1\u6837\u5f0f CSS",en:"Bubble style CSS",zh_TW:"\u6c23\u6ce1\u6a23\u5f0f CSS",ja:"\u30d0\u30d6\u30eb\u30b9\u30bf\u30a4\u30eb CSS",ko:"\ub9d0\ud48d\uc120 \uc2a4\ud0c0\uc77c CSS",tr:"Kabarc\u0131k Stili Css"},mousehover_bubble_style_helper:{zh:"\u7528\u4e8e\u81ea\u5b9a\u4e49\u6c14\u6ce1\u5bb9\u5668\u6837\u5f0f\uff1b\u5b9a\u4f4d\u548c\u89c6\u53e3\u9632\u6ea2\u51fa\u7531\u7a0b\u5e8f\u81ea\u52a8\u5904\u7406\u3002",en:"Customize the bubble container style. Positioning and viewport overflow are handled automatically.",zh_TW:"\u7528\u65bc\u81ea\u8a02\u6c23\u6ce1\u5bb9\u5668\u6a23\u5f0f\uff1b\u5b9a\u4f4d\u8207\u8996\u7a97\u9632\u6ea2\u51fa\u7531\u7a0b\u5f0f\u81ea\u52d5\u8655\u7406\u3002",ja:"\u30d0\u30d6\u30eb\u30b3\u30f3\u30c6\u30ca\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u307e\u3059\u3002\u4f4d\u7f6e\u3068\u753b\u9762\u5916\u306b\u306f\u307f\u51fa\u3059\u51e6\u7406\u306f\u81ea\u52d5\u3067\u884c\u308f\u308c\u307e\u3059\u3002",ko:"\ub9d0\ud48d\uc120 \ucee8\ud14c\uc774\ub108 \uc2a4\ud0c0\uc77c\uc744 \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc704\uce58\uc640 \ud654\uba74 \ub118\uce68 \ubc29\uc9c0\ub294 \uc790\ub3d9\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4.",tr:"Kabarc\u0131k kab\u0131 stilini \xf6zelle\u015ftirin. Konumland\u0131rma ve g\xf6r\xfcnt\xfc alan\u0131 ta\u015fmas\u0131 otomatik olarak ger\xe7ekle\u015ftirilir."},autoscan_alt:{zh:"\u81ea\u52a8\u626b\u63cf",en:"Auto Scan",zh_TW:"\u81ea\u52d5\u6383\u63cf",ja:"\u81ea\u52d5\u30b9\u30ad\u30e3\u30f3",ko:"\uc790\ub3d9 \uc2a4\uce94",tr:"Otomatik Tara"},scan_all_nodes:{zh:"\u626b\u63cf\u5168\u90e8\u8282\u70b9",en:"Scan All Nodes",zh_TW:"\u6383\u63cf\u5168\u90e8\u7bc0\u9ede",ja:"\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u30b9\u30ad\u30e3\u30f3",ko:"\ubaa8\ub4e0 \ub178\ub4dc \uc2a4\uce94",tr:"T\xfcm D\xfc\u011f\xfcmleri Tara"},shadowroot_alt:{zh:"ShadowRoot",en:"ShadowRoot",zh_TW:"ShadowRoot",ja:"ShadowRoot",ko:"ShadowRoot",tr:"ShadowRoot"},richtext_alt:{zh:"\u4fdd\u7559\u5bcc\u6587\u672c",en:"Rich Text",zh_TW:"\u4fdd\u7559\u5bcc\u6587\u5b57",ja:"\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8",ko:"\ub9ac\uce58 \ud14d\uc2a4\ud2b8",tr:"Zengin Metin"},transonly_alt:{zh:"\u9690\u85cf\u539f\u6587",en:"Hide Original",zh_TW:"\u96b1\u85cf\u539f\u6587",ja:"\u539f\u6587\u3092\u96a0\u3059",ko:"\uc6d0\ubb38 \uc228\uae30\uae30",tr:"Orijinali Gizle"},confirm_title:{zh:"\u786e\u8ba4",en:"Confirm",zh_TW:"\u78ba\u8a8d",ja:"\u78ba\u8a8d",ko:"\ud655\uc778",tr:"Onayla"},confirm_message:{zh:"\u786e\u5b9a\u64cd\u4f5c\u5417\uff1f",en:"Are you sure you want to proceed?",zh_TW:"\u78ba\u5b9a\u64cd\u4f5c\u55ce\uff1f",ja:"\u64cd\u4f5c\u3092\u7d9a\u884c\u3057\u307e\u3059\u304b\uff1f",ko:"\uacc4\uc18d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",tr:"Devam Etmek \u0130stedi\u011finizden Emin Misiniz?"},confirm_action:{zh:"\u786e\u5b9a",en:"Confirm",zh_TW:"\u78ba\u5b9a",ja:"\u78ba\u8a8d",ko:"\ud655\uc778",tr:"Onayla"},cancel_action:{zh:"\u53d6\u6d88",en:"Cancel",zh_TW:"\u53d6\u6d88",ja:"\u30ad\u30e3\u30f3\u30bb\u30eb",ko:"\ucde8\uc18c",tr:"\u0130ptal Et"},pls_press_shortcut:{zh:"\u8bf7\u6309\u4e0b\u5feb\u6377\u952e\u7ec4\u5408",en:"Please press the shortcut key combination",zh_TW:"\u8acb\u6309\u4e0b\u5feb\u901f\u9375\u7d44\u5408",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044",ko:"\ub2e8\ucd95\ud0a4 \uc870\ud569\uc744 \ub204\ub974\uc138\uc694",tr:"L\xfctfen K\u0131sayol Tu\u015f Kombinasyonuna Bas\u0131n"},load_setting_err:{zh:"\u6570\u636e\u52a0\u8f7d\u51fa\u9519\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u6216\u5378\u8f7d\u540e\u91cd\u65b0\u5b89\u88c5\u3002",en:"Data loading error, please refresh the page or uninstall and reinstall.",zh_TW:"\u8cc7\u6599\u8f09\u5165\u767c\u751f\u932f\u8aa4\uff0c\u8acb\u91cd\u65b0\u6574\u7406\u9801\u9762\u6216\u89e3\u9664\u5b89\u88dd\u5f8c\u91cd\u65b0\u5b89\u88dd\u3002",ja:"\u30c7\u30fc\u30bf\u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\u3002\u30da\u30fc\u30b8\u3092\u66f4\u65b0\u3059\u308b\u304b\u3001\u30a2\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u306b\u518d\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ub370\uc774\ud130 \ub85c\ub529 \uc624\ub958. \ud398\uc774\uc9c0\ub97c \uc0c8\ub85c \uace0\uce58\uac70\ub098 \uc81c\uac70 \ud6c4 \ub2e4\uc2dc \uc124\uce58\ud558\uc138\uc694.",tr:"Veri y\xfckleme hatas\u0131, l\xfctfen sayfay\u0131 yenileyin veya uygulamay\u0131 kald\u0131r\u0131p yeniden y\xfckleyin"},translation_style:{zh:"\u7ffb\u8bd1\u98ce\u683c",en:"Translation style",zh_TW:"\u7ffb\u8b6f\u98a8\u683c",ja:"\u7ffb\u8a33\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed \uc2a4\ud0c0\uc77c",tr:"\xc7eviri Stili"},placeholder:{zh:"\u5360\u4f4d\u7b26",en:"Placeholder",zh_TW:"\u4f54\u4f4d\u7b26",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354",tr:"Yer Tutucu"},tag_name:{zh:"\u5360\u4f4d\u6807\u7b7e\u540d",en:"Placeholder tag name",zh_TW:"\u4f54\u4f4d\u6a19\u540d",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u30bf\u30b0\u540d",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354 \ud0dc\uadf8 \uc774\ub984",tr:"Yer Tutucu Etiket Ad\u0131"},system_prompt_helper_1:{zh:"1. \u6839\u636e\u5b9e\u9645\u60c5\u51b5\u9009\u62e9AI\u652f\u6301\u7684\u805a\u5408\u683c\u5f0f\uff1a",en:"1. Select the aggregation format supported by the AI according to your needs:",zh_TW:"1. \u8acb\u4f9d\u5be6\u969b\u60c5\u6cc1\u9078\u64c7 AI \u652f\u63f4\u7684\u5f59\u6574\u683c\u5f0f\uff1a",ja:"1. \u5b9f\u969b\u306e\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u3001AI \u304c\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u96c6\u7d04\u5f62\u5f0f\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\uff1a",ko:"1. \uc0c1\ud669\uc5d0 \ub9de\uac8c AI\uc5d0\uc11c \uc9c0\uc6d0\ud558\ub294 \uc9d1\uacc4 \ud615\uc2dd\uc744 \uc120\ud0dd\ud558\uc138\uc694:",tr:"1. \u0130htiya\xe7lar\u0131n\u0131za G\xf6re AI Taraf\u0131ndan Desteklenen Toplama Format\u0131n\u0131 Se\xe7in:"},json_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201cJSON \u683c\u5f0f\u201c",en:'Click to switch to "JSON Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300cJSON \u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300cJSON \u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "JSON \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"JSON Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},xml_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201cXML \u683c\u5f0f\u201c",en:'Click to switch to "XML Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300cXML \u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300cXML \u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "XML \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"XML Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},textlines_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201c\u591a\u884c\u6587\u672c\u683c\u5f0f\u201c",en:'Click to switch to "Multi-line Text Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300c\u591a\u884c\u6587\u5b57\u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300c\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "\uc5ec\ub7ec \uc904 \ud14d\uc2a4\ud2b8 \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"\xc7ok Sat\u0131rl\u0131 Metin Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},system_prompt_helper_2:{zh:"2. \u5728\u672a\u5b8c\u5168\u7406\u89e3\u9ed8\u8ba4Prompt\u7684\u60c5\u51b5\u4e0b\uff0c\u8bf7\u52ff\u968f\u610f\u4fee\u6539\uff0c\u5426\u5219\u53ef\u80fd\u65e0\u6cd5\u5de5\u4f5c\u3002",en:"2. Do not modify the default prompt without fully understanding it, otherwise it may not work.",zh_TW:"2. \u5728\u672a\u5b8c\u5168\u7406\u89e3\u9810\u8a2dPrompt\u7684\u60c5\u6cc1\u4e0b\uff0c\u8acb\u52ff\u96a8\u610f\u4fee\u6539\uff0c\u5426\u5247\u53ef\u80fd\u7121\u6cd5\u904b\u4f5c\u3002",ja:"2. \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u5b8c\u5168\u306b\u7406\u89e3\u305b\u305a\u306b\u5909\u66f4\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u52d5\u4f5c\u3057\u306a\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002",ko:"2. \uae30\ubcf8 \ud504\ub86c\ud504\ud2b8\ub97c \uc644\uc804\ud788 \uc774\ud574\ud558\uc9c0 \uc54a\uace0 \uc218\uc815\ud558\uc9c0 \ub9c8\uc2ed\uc2dc\uc624. \uc791\ub3d9\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"2. Varsay\u0131lan komut istemini tam olarak anlamadan de\u011fi\u015ftirmeyin, aksi takdirde \xe7al\u0131\u015fmayabilir"},if_pre_init:{zh:"\u662f\u5426\u9884\u521d\u59cb\u5316",en:"Whether to pre-initialize",zh_TW:"\u662f\u5426\u9810\u521d\u59cb\u5316",ja:"\u4e8b\u524d\u521d\u671f\u5316\u3059\u308b\u304b",ko:"\uc0ac\uc804 \ucd08\uae30\ud654 \uc5ec\ubd80",tr:"\xd6nceden Ba\u015flat\u0131l\u0131p Ba\u015flat\u0131lmayaca\u011f\u0131"},export_old:{zh:"\u5bfc\u51fa\u65e7\u7248",en:"Export old version",zh_TW:"\u532f\u51fa\u820a\u7248",ja:"\u65e7\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\uc774\uc804 \ubc84\uc804 \ub0b4\ubcf4\ub0b4\uae30",tr:"Eski S\xfcr\xfcm\xfc D\u0131\u015fa Aktar"},favorite_words_helper:{zh:"\u5bfc\u5165\u8bcd\u6c47\u8bf7\u4f7f\u7528txt\u6587\u4ef6\uff0c\u6bcf\u4e00\u884c\u4e00\u4e2a\u5355\u8bcd\u3002",en:"To import vocabulary, please use a txt file with one word per line.",zh_TW:"\u532f\u5165\u8a5e\u5f59\u8acb\u4f7f\u7528 txt \u6a94\u6848\uff0c\u6bcf\u4e00\u884c\u4e00\u500b\u55ae\u5b57\u3002",ja:"\u5358\u8a9e\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u306b\u306f\u30011\u884c\u306b1\u5358\u8a9e\u305a\u3064\u8a18\u8ff0\u3057\u305ftxt\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ub2e8\uc5b4\ub97c \uac00\uc838\uc624\ub824\uba74 \ud55c \uc904\uc5d0 \ud55c \ub2e8\uc5b4\uc529 .txt \ud30c\uc77c\uc744 \uc0ac\uc6a9\ud558\uc138\uc694.",tr:"S\xf6zl\xfck eklemek i\xe7in l\xfctfen her sat\u0131rda bir kelime bulunan bir txt dosyas\u0131 kullan\u0131n"},btn_tip_click_away:{zh:"\u5931\u7126\u9690\u85cf/\u663e\u793a",en:"Loss of focus hide/show",zh_TW:"\u5931\u7126\u96b1\u85cf/\u986f\u793a",ja:"\u30d5\u30a9\u30fc\u30ab\u30b9\u3092\u5931\u3063\u305f\u6642\u306b\u975e\u8868\u793a/\u8868\u793a",ko:"\ud3ec\ucee4\uc2a4 \uc783\uc744 \uc2dc \uc228\uae30\uae30/\ud45c\uc2dc",tr:"Odak Kayb\u0131nda Gizle/G\xf6ster"},btn_tip_follow_selection:{zh:"\u8ddf\u968f/\u56fa\u5b9a\u6a21\u5f0f",en:"Follow/Fixed Mode",zh_TW:"\u8ddf\u96a8/\u56fa\u5b9a\u6a21\u5f0f",ja:"\u8ffd\u5f93/\u56fa\u5b9a\u30e2\u30fc\u30c9",ko:"\ub530\ub77c\uac00\uae30/\uace0\uc815 \ubaa8\ub4dc",tr:"Takip/Sabit Mod"},btn_tip_simple_style:{zh:"\u8ff7\u4f60/\u5e38\u89c4\u6a21\u5f0f",en:"Mini/Regular Mode",zh_TW:"\u8ff7\u4f60/\u5e38\u898f\u6a21\u5f0f",ja:"\u30df\u30cb/\u901a\u5e38\u30e2\u30fc\u30c9",ko:"\ubbf8\ub2c8/\uc77c\ubc18 \ubaa8\ub4dc",tr:"Mini/Normal Mod"},btn_tip_dark_mode:{zh:"\u4eae\u8272/\u6697\u8272/\u8ddf\u968f\u7cfb\u7edf",en:"Light/Dark/Auto",zh_TW:"\u4eae\u8272/\u6697\u8272/\u8ddf\u96a8\u7cfb\u7d71",ja:"\u30e9\u30a4\u30c8/\u30c0\u30fc\u30af/\u81ea\u52d5",ko:"\ub77c\uc774\ud2b8/\ub2e4\ud06c/\uc790\ub3d9",tr:"A\xe7\u0131k/Koyu/Otomatik"},api_placeholder:{zh:"\u5360\u4f4d\u7b26",en:"Placeholder",zh_TW:"\u4f54\u4f4d\u7b26",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354",tr:"Yer Tutucu"},api_placetag:{zh:"\u5360\u4f4d\u6807\u7b7e",en:"Placeholder tags",zh_TW:"\u4f54\u4f4d\u6a19",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30bf\u30b0",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354 \ud0dc\uadf8",tr:"Yer Tutucu Etiketleri"},placetag_format:{zh:"\u5360\u4f4d\u7b26\u683c\u5f0f",en:"Placeholder Format",zh_TW:"\u4f54\u4f4d\u7b26\u683c\u5f0f",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u5f62\u5f0f",ko:"\uc790\ub9ac \ud45c\uc2dc\uc790 \ud615\uc2dd",tr:"Yer Tutucu Format\u0131"},format_compact:{zh:"\u7b80\u6d01\u683c\u5f0f ",en:"Compact Format ",zh_TW:"\u7c21\u6f54\u683c\u5f0f ",ja:"\u7c21\u6f54\u5f62\u5f0f ",ko:"\uac04\uacb0 \ud615\uc2dd ",tr:"Kompakt Format "},format_attribute:{zh:"\u5c5e\u6027\u683c\u5f0f ",en:"Attribute Format ",zh_TW:"\u5c6c\u6027\u683c\u5f0f ",ja:"\u5c5e\u6027\u5f62\u5f0f ",ko:"\uc18d\uc131 \ud615\uc2dd ",tr:"\xd6znitelik Format\u0131 "},detected_lang:{zh:"\u8bed\u8a00\u68c0\u6d4b",en:"Language detection",zh_TW:"\u8a9e\u8a00\u5075\u6e2c",ja:"\u8a00\u8a9e\u691c\u51fa",ko:"\uc5b8\uc5b4 \uac10\uc9c0",tr:"Dil Alg\u0131lama"},detected_result:{zh:"\u68c0\u6d4b\u7ed3\u679c",en:"Detect result",zh_TW:"\u5075\u6e2c\u7d50\u679c",ja:"\u691c\u51fa\u7d50\u679c",ko:"\uac10\uc9c0 \uacb0\uacfc",tr:"Sonu\xe7 Tespiti"},subtitle_translate:{zh:"\u5b57\u5e55\u7ffb\u8bd1",en:"Subtitle Translation",zh_TW:"\u5b57\u5e55\u7ffb\u8b6f",ja:"\u5b57\u5e55\u7ffb\u8a33",ko:"\uc790\ub9c9 \ubc88\uc5ed",tr:"Altyaz\u0131 \xc7evirisi"},bilingual_subtitles:{zh:"\u53cc\u8bed\u5b57\u5e55",en:"Bilingual subtitles",zh_TW:"\u96d9\u8a9e\u5b57\u5e55",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9",tr:"\u0130ki Dilli Altyaz\u0131lar"},vocabulary_book:{zh:"\u751f\u8bcd\u672c",en:"Vocabulary",zh_TW:"\u751f\u8a5e\u672c",ja:"\u5358\u8a9e\u5e33",ko:"\ub2e8\uc5b4\uc7a5",tr:"Kelime Bilgisi"},download_subtitles_vtt:{zh:"\u4e0b\u8f7d\u5b57\u5e55 (VTT)",en:"Download subtitles (VTT)",zh_TW:"\u4e0b\u8f09\u5b57\u5e55 (VTT)",ja:"\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (VTT)",ko:"\uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc (VTT)",tr:"Altyaz\u0131lar\u0131 \u0130ndir (VTT)"},download_raw_subtitle_events_json:{zh:"\u4e0b\u8f7d\u6e90\u6570\u636e (JSON)",en:"Download source data (JSON)",zh_TW:"\u4e0b\u8f09\u4f86\u6e90\u8cc7\u6599 (JSON)",ja:"\u30bd\u30fc\u30b9\u30c7\u30fc\u30bf\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (JSON)",ko:"\uc6d0\ubcf8 \ub370\uc774\ud130 \ub2e4\uc6b4\ub85c\ub4dc (JSON)",tr:"Kaynak Verilerini \u0130ndirin (JSON)"},download_translation_subtitles_vtt:{zh:"\u4e0b\u8f7d\u8bd1\u6587\u5b57\u5e55 (VTT)",en:"Download translation subtitles (VTT)",zh_TW:"\u4e0b\u8f09\u8b6f\u6587\u5b57\u5e55 (VTT)",ja:"\u7ffb\u8a33\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (VTT)",ko:"\ubc88\uc5ed \uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc (VTT)",tr:"\xc7eviri Altyaz\u0131lar\u0131n\u0131 \u0130ndir (VTT)"},toggle_subtitle_translate:{zh:"\u542f\u7528\u5b57\u5e55\u7ffb\u8bd1",en:"Enable subtitle translation",zh_TW:"\u555f\u7528\u5b57\u5e55\u7ffb\u8b6f",ja:"\u5b57\u5e55\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc790\ub9c9 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Altyaz\u0131 \xc7evirisini Etkinle\u015ftir"},default_subtitle_translate:{zh:"\u9ed8\u8ba4\u7acb\u5373\u7ffb\u8bd1",en:"Translate subtitles immediately by default",zh_TW:"\u9810\u8a2d\u7acb\u5373\u7ffb\u8b6f",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3059\u3050\u306b\u5b57\u5e55\u3092\u7ffb\u8a33",ko:"\uae30\ubcf8\uc801\uc73c\ub85c \uc790\ub9c9 \uc989\uc2dc \ubc88\uc5ed",tr:"Altyaz\u0131lar\u0131 varsay\u0131lan olarak hemen \xe7evir"},enable_subtitle_translate:{zh:"\u5f00\u542f\u7ffb\u8bd1",en:"Enable translation",zh_TW:"\u958b\u555f\u7ffb\u8b6f",ja:"\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ubc88\uc5ed \ud65c\uc131\ud654",tr:"\xc7eviriyi etkinle\u015ftir"},is_bilingual_view:{zh:"\u53cc\u8bed\u663e\u793a",en:"Enable bilingual display",zh_TW:"\u96d9\u8a9e\u986f\u793a",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u8868\u793a",ko:"\uc774\uc911 \uc5b8\uc5b4 \ud45c\uc2dc",tr:"\u0130ki Dilli G\xf6r\xfcnt\xfclemeyi Etkinle\u015ftir"},is_blur_translation:{zh:"\u6a21\u7cca\u8bd1\u6587",en:"Blur Translation",zh_TW:"\u6a21\u7cca\u8b6f\u6587",ja:"\u7ffb\u8a33\u3092\u307c\u304b\u3059",ko:"\ubc88\uc5ed \ud750\ub9bc",tr:"Bulan\u0131kl\u0131k \xc7evirisi"},is_skip_ad:{zh:"\u5feb\u8fdb\u5e7f\u544a",en:"Skip AD",zh_TW:"\u5feb\u8f49\u5ee3\u544a",ja:"\u5e83\u544a\u3092\u30b9\u30ad\u30c3\u30d7",ko:"\uad11\uace0 \uac74\ub108\ub6f0\uae30",tr:"Reklam\u0131 Atla"},download_subtitles:{zh:"\u4e0b\u8f7d\u5b57\u5e55",en:"Download subtitles",zh_TW:"\u4e0b\u8f09\u5b57\u5e55",ja:"\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9",ko:"\uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc",tr:"Altyaz\u0131lar\u0131 \u0130ndir"},background_styles:{zh:"\u80cc\u666f\u6837\u5f0f",en:"Background Style",zh_TW:"\u80cc\u666f\u6a23\u5f0f",ja:"\u80cc\u666f\u30b9\u30bf\u30a4\u30eb",ko:"\ubc30\uacbd \uc2a4\ud0c0\uc77c",tr:"Arka Plan Stili"},origin_styles:{zh:"\u539f\u6587\u6837\u5f0f",en:"Original style",zh_TW:"\u539f\u6587\u6a23\u5f0f",ja:"\u539f\u6587\u30b9\u30bf\u30a4\u30eb",ko:"\uc6d0\ubb38 \uc2a4\ud0c0\uc77c",tr:"Orijinal Stil"},translation_styles:{zh:"\u8bd1\u6587\u6837\u5f0f",en:"Translation style",zh_TW:"\u8b6f\u6587\u6a23\u5f0f",ja:"\u7ffb\u8a33\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed\ubb38 \uc2a4\ud0c0\uc77c",tr:"\xc7eviri Stili"},ai_segmentation:{zh:"AI\u667a\u80fd\u65ad\u53e5",en:"AI intelligent punctuation",zh_TW:"AI\u667a\u6167\u65b7\u53e5",ja:"AI\u306b\u3088\u308b\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u306a\u6587\u5206\u5272",ko:"AI \uc9c0\ub2a5\ud615 \ubb38\uc7a5 \ubd84\ub9ac",tr:"AI Ak\u0131ll\u0131 Noktalama \u0130\u015faretleri"},builtin_sentence_break:{zh:"\u5185\u7f6e\u65ad\u53e5",en:"Built-in Sentence Break",zh_TW:"\u5167\u7f6e\u65b7\u53e5",ja:"\u5185\u8535\u6587\u5206\u5272",ko:"\ub0b4\uc7a5 \ubb38\uc7a5 \ubd84\ub9ac",tr:"Yerle\u015fik C\xfcmle Aras\u0131"},rule_sentence_break:{zh:"\u89c4\u5219\u65ad\u53e5",en:"Rule-based Break",zh_TW:"\u898f\u5247\u65b7\u53e5",ja:"\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u5206\u5272",ko:"\uaddc\uce59 \uae30\ubc18 \ubd84\ub9ac",tr:"Kural Tabanl\u0131 Mola"},statistical_sentence_break:{zh:"\u7edf\u8ba1\u65ad\u53e5",en:"Statistical Break",zh_TW:"\u7d71\u8a08\u65b7\u53e5",ja:"\u7d71\u8a08\u7684\u5206\u5272",ko:"\ud1b5\uacc4 \uae30\ubc18 \ubd84\ub9ac",tr:"\u0130statistiksel K\u0131r\u0131l\u0131m"},force_subtitle_retranslate:{zh:"\u5f3a\u5236\u91cd\u7ffb",en:"Force re-translate",zh_TW:"\u5f37\u5236\u91cd\u7ffb",ja:"\u5f37\u5236\u518d\u7ffb\u8a33",ko:"\uac15\uc81c \uc7ac\ubc88\uc5ed",tr:"Yeniden \xc7evirmeye Zorla"},ai_enhanced_context:{zh:"\u589e\u5f3a\u667a\u80fd\u4e0a\u4e0b\u6587",en:"Enhanced Intelligent Context",zh_TW:"\u589e\u5f37\u667a\u6167\u4e0a\u4e0b\u6587",ja:"\u5f37\u5316\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8",ko:"\uac15\ud654 \uc9c0\ub2a5\ud615 \ucee8\ud14d\uc2a4\ud2b8",tr:"Geli\u015fmi\u015f Ak\u0131ll\u0131 \u0130\xe7erik"},ai_context_analyzing:{zh:"AI\u6b63\u5728\u5206\u6790\u89c6\u9891\u5185\u5bb9...",en:"AI is analyzing video content...",zh_TW:"AI\u6b63\u5728\u5206\u6790\u5f71\u7247\u5167\u5bb9...",ja:"AI\u304c\u52d5\u753b\u5185\u5bb9\u3092\u5206\u6790\u4e2d...",ko:"AI\uac00 \ube44\ub514\uc624 \ucf58\ud150\uce20\ub97c \ubd84\uc11d \uc911...",tr:"AI video i\xe7eri\u011fini analiz ediyor..."},ai_chunk_length:{zh:"AI\u5904\u7406\u5207\u5272\u957f\u5ea6(200-20000)",en:"AI processing chunk length(200-20000)",zh_TW:"AI \u8655\u7406\u5207\u5272\u9577\u5ea6(200-20000)",ja:"AI\u51e6\u7406\u306e\u30c1\u30e3\u30f3\u30af\u9577(200-20000)",ko:"AI \ucc98\ub9ac \uccad\ud06c \uae38\uc774(200-20000)",tr:"AI \u0130\u015fleme Par\xe7a Uzunlu\u011fu (200-20000)"},subtitle_helper_1:{zh:"1\u3001\u76ee\u524d\u4ec5\u652f\u6301Youtube\u684c\u9762\u7f51\u7ad9\u3002",en:"1. Currently only supports Youtube desktop website.",zh_TW:"1.\u76ee\u524d\u50c5\u652f\u63f4Youtube\u684c\u9762\u7db2\u7ad9\uff0c\u4e14\u50c5\u652f\u63f4\u700f\u89bd\u5668\u64f4\u5145\u529f\u80fd\u3002",ja:"1. \u73fe\u5728\u3001Youtube\u306e\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u30b5\u30a4\u30c8\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002",ko:"1. \ud604\uc7ac Youtube \ub370\uc2a4\ud06c\ud1b1 \uc6f9\uc0ac\uc774\ud2b8\ub9cc \uc9c0\uc6d0\ud569\ub2c8\ub2e4.",tr:"1. \u015eu anda yaln\u0131zca Youtube masa\xfcst\xfc web sitesini desteklemektedir."},subtitle_helper_2:{zh:"2\u3001\u63d2\u4ef6\u5185\u7f6e\u57fa\u7840\u7684\u5b57\u5e55\u5408\u5e76\u3001\u65ad\u53e5\u7b97\u6cd5\uff0c\u53ef\u6ee1\u8db3\u5927\u90e8\u5206\u60c5\u51b5\u3002",en:"2. The plug-in has built-in basic subtitle merging and sentence segmentation algorithms, which can meet most situations.",zh_TW:"2. \u64f4\u5145\u529f\u80fd\u5167\u5efa\u57fa\u790e\u7684\u5b57\u5e55\u5408\u4f75\u3001\u65b7\u53e5\u6f14\u7b97\u6cd5\uff0c\u53ef\u6eff\u8db3\u5927\u90e8\u5206\u60c5\u6cc1\u3002",ja:"2. \u30d7\u30e9\u30b0\u30a4\u30f3\u306b\u306f\u57fa\u672c\u7684\u306a\u5b57\u5e55\u7d50\u5408\u3068\u6587\u5206\u5272\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u304a\u308a\u3001\u307b\u3068\u3093\u3069\u306e\u72b6\u6cc1\u306b\u5bfe\u5fdc\u3067\u304d\u307e\u3059\u3002",ko:"2. \ud50c\ub7ec\uadf8\uc778\uc5d0\ub294 \uae30\ubcf8\uc801\uc778 \uc790\ub9c9 \ubcd1\ud569 \ubc0f \ubb38\uc7a5 \ubd84\ub9ac \uc54c\uace0\ub9ac\uc998\uc774 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc5b4 \ub300\ubd80\ubd84\uc758 \uc0c1\ud669\uc5d0 \ub300\uc751\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"2. Eklenti, \xe7o\u011fu duruma uygun temel altyaz\u0131 birle\u015ftirme ve c\xfcmle b\xf6lme algoritmalar\u0131na sahiptir."},subtitle_helper_3:{zh:"3\u3001\u4ea6\u53ef\u4ee5\u542f\u7528AI\u667a\u80fd\u65ad\u53e5\uff0c\u4f46\u9700\u8003\u8651\u5207\u5272\u957f\u5ea6\u53caAI\u63a5\u53e3\u80fd\u529b\uff0c\u53ef\u80fd\u5904\u7406\u65f6\u95f4\u4f1a\u5f88\u957f\u3002\u82e5\u5904\u7406\u5931\u8d25\uff0c\u5c06\u81ea\u52a8\u964d\u7ea7\u4e3a\u5185\u7f6e\u65ad\u53e5\u5e76\u7ffb\u8bd1\u3002",en:"3. You can also enable AI intelligent segmentation, but consider the chunk length and AI interface capacity, as processing may take a long time. If it fails, it will automatically fall back to built-in sentence break and translation.",zh_TW:"3. \u4ea6\u53ef\u555f\u7528 AI \u667a\u6167\u65b7\u53e5\uff0c\u4f46\u9700\u8003\u616e\u5207\u5272\u9577\u5ea6\u53ca AI \u4ecb\u9762\u80fd\u529b\uff0c\u8655\u7406\u6642\u9593\u53ef\u80fd\u6703\u5f88\u9577\u3002\u82e5\u8655\u7406\u5931\u6557\uff0c\u5c07\u81ea\u52d5\u964d\u7d1a\u70ba\u5167\u7f6e\u65b7\u53e5\u4e26\u7ffb\u8b6f\u3002",ja:"3. AI\u306b\u3088\u308b\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u306a\u6587\u5206\u5272\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u304c\u3001\u30c1\u30e3\u30f3\u30af\u9577\u3084AI\u306e\u51e6\u7406\u80fd\u529b\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u51e6\u7406\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u51e6\u7406\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u306f\u3001\u81ea\u52d5\u7684\u306b\u5185\u8535\u6587\u5206\u5272\u3068\u7ffb\u8a33\u306b\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u3055\u308c\u307e\u3059\u3002",ko:"3. AI \uc9c0\ub2a5\ud615 \ubd84\ub9ac\ub97c \ud65c\uc131\ud654\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc, \uccad\ud06c \uae38\uc774\uc640 AI \uc778\ud130\ud398\uc774\uc2a4 \ucc98\ub9ac \ub2a5\ub825\uc744 \uace0\ub824\ud574\uc57c \ud558\uba70 \ucc98\ub9ac \uc2dc\uac04\uc774 \uae38\uc5b4\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucc98\ub9ac\uc5d0 \uc2e4\ud328\ud560 \uacbd\uc6b0 \uc790\ub3d9\uc73c\ub85c \ub0b4\uc7a5 \ubb38\uc7a5 \ubd84\ub9ac \ubc0f \ubc88\uc5ed\uc73c\ub85c \ub300\uccb4\ub429\ub2c8\ub2e4.",tr:"3. AI destekli ak\u0131ll\u0131 b\xf6l\xfcmlemeyi de etkinle\u015ftirebilirsiniz, ancak i\u015flem uzun s\xfcrebilece\u011finden, \xf6bek uzunlu\u011funu ve yapay zek\xe2 aray\xfcz\xfc kapasitesini g\xf6z \xf6n\xfcnde bulundurun. Ba\u015far\u0131s\u0131z olursa, otomatik olarak yerle\u015fik c\xfcmle b\xf6lme ve \xe7eviri \xf6zelli\u011fine geri d\xf6necektir."},show_subtitle_list:{zh:"\u663e\u793a\u5b57\u5e55\u5217\u8868",en:"Show Subtitle List",zh_TW:"\u986f\u793a\u5b57\u5e55\u6e05\u55ae",ja:"\u5b57\u5e55\u30ea\u30b9\u30c8\u3092\u8868\u793a",ko:"\uc790\ub9c9 \ubaa9\ub85d \ud45c\uc2dc",tr:"Altyaz\u0131 Listesini G\xf6ster"},subtitle_loading_notification:{zh:"\u5b57\u5e55\u52a0\u8f7d\u901a\u77e5",en:"Subtitle loading notification",zh_TW:"\u5b57\u5e55\u8f09\u5165\u901a\u77e5",ja:"\u5b57\u5e55\u8aad\u307f\u8fbc\u307f\u901a\u77e5",ko:"\uc790\ub9c9 \ub85c\ub529 \uc54c\ub9bc",tr:"Altyaz\u0131 Y\xfckleme Bildirimi"},hide_subtitle_button:{zh:"\u9690\u85cf\u529f\u80fd\u6309\u94ae",en:"Hide function button",zh_TW:"\u96b1\u85cf\u529f\u80fd\u6309\u9215",ja:"\u6a5f\u80fd\u30dc\u30bf\u30f3\u3092\u975e\u8868\u793a",ko:"\uae30\ub2a5 \ubc84\ud2bc \uc228\uae30\uae30",tr:"\u0130\u015flev D\xfc\u011fmesini Gizle"},subtitle_hover_lookup:{zh:"\u60ac\u505c\u67e5\u8bcd",en:"Hover Word Lookup",zh_TW:"\u61f8\u505c\u67e5\u8a5e",ja:"\u30db\u30d0\u30fc\u8f9e\u66f8\u691c\u7d22",ko:"\ud638\ubc84 \ub2e8\uc5b4 \uc870\ud68c",tr:"Vurgulu Kelime Arama"},default_styles_example:{zh:"\u9ed8\u8ba4\u6837\u5f0f\u53c2\u8003\uff1a",en:"Default styles reference:",zh_TW:"\u9810\u8a2d\u6a23\u5f0f\u53c3\u8003\uff1a",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30bf\u30a4\u30eb\u306e\u4f8b\uff1a",ko:"\uae30\ubcf8 \uc2a4\ud0c0\uc77c \uc608\uc2dc:",tr:"Varsay\u0131lan Stiller Referans\u0131:"},subtitle_load_succeed:{zh:"\u53cc\u8bed\u5b57\u5e55\u52a0\u8f7d\u6210\u529f\uff01",en:"Bilingual subtitles loaded successfully!",zh_TW:"\u96d9\u8a9e\u5b57\u5e55\u8f09\u5165\u6210\u529f\uff01",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55\u306e\u8aad\u307f\u8fbc\u307f\u306b\u6210\u529f\u3057\u307e\u3057\u305f\uff01",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9 \ub85c\ub529 \uc131\uacf5!",tr:"\u0130ki Dilli Altyaz\u0131lar Ba\u015far\u0131yla Y\xfcklendi"},subtitle_load_failed:{zh:"\u53cc\u8bed\u5b57\u5e55\u52a0\u8f7d\u5931\u8d25\uff01",en:"Failed to load bilingual subtitles!",zh_TW:"\u96d9\u8a9e\u5b57\u5e55\u8f09\u5165\u5931\u6557\uff01",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff01",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9 \ub85c\ub529 \uc2e4\ud328!",tr:"\u0130ki Dilli Altyaz\u0131lar Y\xfcklenemedi"},try_get_subtitle_data:{zh:"\u5c1d\u8bd5\u83b7\u53d6\u5b57\u5e55\u6570\u636e\uff0c\u8bf7\u7a0d\u5019...",en:"Trying to get subtitle data, please wait...",zh_TW:"\u5617\u8a66\u53d6\u5f97\u5b57\u5e55\u8cc7\u6599\uff0c\u8acb\u7a0d\u5019...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \uac00\uc838\uc624\ub294 \uc911\uc785\ub2c8\ub2e4. \uc7a0\uc2dc \uae30\ub2e4\ub824\uc8fc\uc138\uc694...",tr:"Altyaz\u0131 verileri al\u0131nmaya \xe7al\u0131\u015f\u0131l\u0131yor"},subtitle_data_processing:{zh:"\u5b57\u5e55\u6570\u636e\u5904\u7406\u4e2d...",en:"Subtitle data processing...",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u8655\u7406\u4e2d...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u4e2d...",ko:"\uc790\ub9c9 \ub370\uc774\ud130 \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 Verileri \u0130\u015fleniyor..."},starting_to_process_subtitle:{zh:"\u5f00\u59cb\u5904\u7406\u5b57\u5e55\u6570\u636e...",en:"Starting to process subtitle data...",zh_TW:"\u958b\u59cb\u8655\u7406\u5b57\u5e55\u8cc7\u6599...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u51e6\u7406\u3092\u958b\u59cb\u3057\u307e\u3059...",ko:"\uc790\ub9c9 \ub370\uc774\ud130 \ucc98\ub9ac\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4...",tr:"Altyaz\u0131 verileri i\u015flenmeye ba\u015fl\u0131yor..."},subtitle_data_is_ready:{zh:"\u5b57\u5e55\u6570\u636e\u5df2\u51c6\u5907\u5c31\u7eea\uff0c\u8bf7\u70b9\u51fbKT\u6309\u94ae\u52a0\u8f7d",en:"The subtitle data is ready, please click the KT button to load it",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u5df2\u6e96\u5099\u5c31\u7dd2\uff0c\u8acb\u9ede\u9078 KT \u6309\u9215\u8f09\u5165",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002KT\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u8aad\u307f\u8fbc\u3093\u3067\u304f\u3060\u3055\u3044",ko:"\uc790\ub9c9 \ub370\uc774\ud130\uac00 \uc900\ube44\ub418\uc5c8\uc2b5\ub2c8\ub2e4. KT \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub85c\ub4dc\ud558\uc138\uc694",tr:"Altyaz\u0131 verileri haz\u0131r, y\xfcklemek i\xe7in l\xfctfen KT d\xfc\u011fmesine t\u0131klay\u0131n"},starting_reprocess_events:{zh:"\u91cd\u65b0\u5904\u7406\u5b57\u5e55\u6570\u636e...",en:"Reprocess the subtitle data...",zh_TW:"\u91cd\u65b0\u8655\u7406\u5b57\u5e55\u8cc7\u6599...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u518d\u51e6\u7406\u3057\u3066\u3044\u307e\u3059...",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \ub2e4\uc2dc \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 verilerini yeniden i\u015fleyin..."},waitting_for_subtitle:{zh:"\u8bf7\u7b49\u5f85\u5b57\u5e55\u6570\u636e",en:"Please wait for the subtitle data.",zh_TW:"\u8acb\u7b49\u5f85\u5b57\u5e55\u8cc7\u6599",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u5f85\u6a5f\u4e2d",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \uae30\ub2e4\ub824\uc8fc\uc138\uc694",tr:"L\xfctfen altyaz\u0131 verilerini bekleyin."},ai_processing_pls_wait:{zh:"AI\u5904\u7406\u4e2d\uff0c\u8bf7\u7a0d\u7b49...",en:"AI processing in progress, please wait...",zh_TW:"AI \u8655\u7406\u4e2d\uff0c\u8acb\u7a0d\u5019...",ja:"AI\u51e6\u7406\u4e2d\u3067\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...",ko:"AI \ucc98\ub9ac \uc911\uc785\ub2c8\ub2e4. \uc7a0\uc2dc \uae30\ub2e4\ub824\uc8fc\uc138\uc694...",tr:"AI i\u015fleme devam ediyor"},processing_subtitles:{zh:"\u5b57\u5e55\u5904\u7406\u4e2d...",en:"Subtitle processing...",zh_TW:"\u5b57\u5e55\u8655\u7406\u4e2d...",ja:"\u5b57\u5e55\u51e6\u7406\u4e2d...",ko:"\uc790\ub9c9 \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 \u0130\u015fleniyor..."},waiting_subtitles:{zh:"\u7b49\u5f85\u5b57\u5e55\u4e2d",en:"Waiting for subtitles",zh_TW:"\u7b49\u5f85\u5b57\u5e55\u4e2d",ja:"\u5b57\u5e55\u5f85\u6a5f\u4e2d",ko:"\uc790\ub9c9 \ub300\uae30 \uc911",tr:"Altyaz\u0131lar\u0131 Bekliyorum"},subtitle_is_not_yet_ready:{zh:"\u5b57\u5e55\u6570\u636e\u5c1a\u672a\u51c6\u5907\u597d",en:"Subtitle is not yet ready.",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u5c1a\u672a\u6e96\u5099\u597d",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u6e96\u5099\u304c\u307e\u3060\u3067\u304d\u3066\u3044\u307e\u305b\u3093\u3002",ko:"\uc790\ub9c9 \ub370\uc774\ud130\uac00 \uc544\uc9c1 \uc900\ube44\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.",tr:"Altyaz\u0131 hen\xfcz haz\u0131r de\u011fil."},log_level:{zh:"\u65e5\u5fd7\u7ea7\u522b",en:"Log Level",zh_TW:"\u65e5\u8a8c\u7b49\u7d1a",ja:"\u30ed\u30b0\u30ec\u30d9\u30eb",ko:"\ub85c\uadf8 \ub808\ubca8",tr:"G\xfcnl\xfck D\xfczeyi"},goto_custom_api_example:{zh:"\u70b9\u51fb\u67e5\u770b\u3010\u81ea\u5b9a\u4e49\u63a5\u53e3\u793a\u4f8b\u3011",en:"Click to view [Custom Interface Example]",zh_TW:"\u9ede\u9078\u6aa2\u8996\u3010\u81ea\u8a02\u4ecb\u9762\u7bc4\u4f8b\u3011",ja:"\u3010\u30ab\u30b9\u30bf\u30e0\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u4f8b\u3011\u3092\u898b\u308b",ko:"[\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc778\ud130\ud398\uc774\uc2a4 \uc608\uc2dc] \ubcf4\uae30",tr:"[\xd6zel Aray\xfcz \xd6rne\u011fi]'ni G\xf6r\xfcnt\xfclemek \u0130\xe7in T\u0131klay\u0131n"},split_paragraph:{zh:"\u5207\u5206\u957f\u6bb5\u843d",en:"Split long paragraph",zh_TW:"\u5207\u5206\u9577\u6bb5\u843d",ja:"\u9577\u3044\u6bb5\u843d\u3092\u5206\u5272",ko:"\uae34 \ub2e8\ub77d \ub098\ub204\uae30",tr:"Uzun Paragraf\u0131 B\xf6l"},split_length:{zh:"\u5207\u5206\u957f\u5ea6 (0-10000)",en:"Segmentation length(0-10000)",zh_TW:"\u5207\u5206\u9577\u5ea6(0-10000)",ja:"\u5206\u5272\u9577(0-10000)",ko:"\ubd84\ud560 \uae38\uc774(0-10000)",tr:"Segmentasyon Uzunlu\u011fu (0-10000)"},highlight_words:{zh:"\u9ad8\u4eae\u6536\u85cf\u8bcd\u6c47",en:"Highlight favorite words",zh_TW:"\u9192\u76ee\u6a19\u793a\u6536\u85cf\u8a5e\u5f59",ja:"\u304a\u6c17\u306b\u5165\u308a\u5358\u8a9e\u3092\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\uc990\uaca8\ucc3e\ub294 \ub2e8\uc5b4 \ud558\uc774\ub77c\uc774\ud2b8",tr:"Favori Kelimeleri Vurgulay\u0131n"},split_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},split_textlength:{zh:"\u6309\u7167\u957f\u5ea6\u5207\u5206",en:"Split by length",zh_TW:"\u4f9d\u9577\u5ea6\u5207\u5206",ja:"\u9577\u3055\u3067\u5206\u5272",ko:"\uae38\uc774\ub85c \ub098\ub204\uae30",tr:"Uzunlu\u011fa G\xf6re B\xf6l\xfcnm\xfc\u015f"},split_punctuation:{zh:"\u6309\u7167\u53e5\u5b50\u5207\u5206",en:"Split by sentence",zh_TW:"\u6309\u7167\u53e5\u5b50\u5207\u5206",ja:"\u6587\u3067\u5206\u5272",ko:"\ubb38\uc7a5\uc73c\ub85c \ub098\ub204\uae30",tr:"C\xfcmleye G\xf6re B\xf6l\xfcnm\xfc\u015f"},highlight_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},highlight_beforetrans:{zh:"\u7ffb\u8bd1\u524d\u9ad8\u4eae",en:"Highlight before translation",zh_TW:"\u7ffb\u8b6f\u524d\u9192\u76ee\u6a19\u793a",ja:"\u7ffb\u8a33\u524d\u306b\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\ubc88\uc5ed \uc804 \ud558\uc774\ub77c\uc774\ud2b8",tr:"\xc7eviriden \xd6nce Vurgula"},highlight_aftertrans:{zh:"\u7ffb\u8bd1\u540e\u9ad8\u4eae",en:"Highlight after translation",zh_TW:"\u7ffb\u8b6f\u5f8c\u9192\u76ee\u6a19\u793a",ja:"\u7ffb\u8a33\u5f8c\u306b\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\ubc88\uc5ed \ud6c4 \ud558\uc774\ub77c\uc774\ud2b8",tr:"\xc7eviriden Sonra Vurgula"},pagescroll_root_margin:{zh:"\u6eda\u52a8\u52a0\u8f7d\u63d0\u524d\u89e6\u53d1 (0-10000px)",en:"Early triggering of scroll loading (0-10000px)",zh_TW:"\u6efe\u52d5\u8f09\u5165\u63d0\u524d\u89f8\u767c (0-10000px)",ja:"\u30b9\u30af\u30ed\u30fc\u30eb\u8aad\u307f\u8fbc\u307f\u306e\u4e8b\u524d\u30c8\u30ea\u30ac\u30fc (0-10000px)",ko:"\uc2a4\ud06c\ub864 \ub85c\ub529 \ubbf8\ub9ac \ud2b8\ub9ac\uac70 (0-10000px)",tr:"Kayd\u0131rma Y\xfcklemesinin Erken Tetiklenmesi (0-10000 Piksel)"},styles_setting:{zh:"\u6837\u5f0f\u8bbe\u7f6e",en:"Style Setting",zh_TW:"\u6a23\u5f0f\u8a2d\u5b9a",ja:"\u30b9\u30bf\u30a4\u30eb\u8a2d\u5b9a",ko:"\uc2a4\ud0c0\uc77c \uc124\uc815",tr:"Stil Ayar\u0131"},style_name:{zh:"\u6837\u5f0f\u540d\u79f0",en:"Style Name",zh_TW:"\u6a23\u5f0f\u540d\u7a31",ja:"\u30b9\u30bf\u30a4\u30eb\u540d",ko:"\uc2a4\ud0c0\uc77c \uc774\ub984",tr:"Stil Ad\u0131"},style_code:{zh:"\u6837\u5f0f\u4ee3\u7801",en:"Style Code",zh_TW:"\u6a23\u5f0f\u7a0b\u5f0f\u78bc",ja:"\u30b9\u30bf\u30a4\u30eb\u30b3\u30fc\u30c9",ko:"\uc2a4\ud0c0\uc77c \ucf54\ub4dc",tr:"Stil Kodu"},long_sentence_threshold:{zh:"\u89c4\u5219\u65ad\u53e5\u9608\u503c (20-300\u5b57\u7b26)",en:"Rule-based segmentation threshold (20-300 chars)",zh_TW:"\u898f\u5247\u65b7\u53e5\u95be\u503c (20-300 \u5b57\u5143)",ja:"\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u5206\u5272\u95be\u5024 (20-300\u6587\u5b57)",ko:"\uaddc\uce59 \uae30\ubc18 \ubd84\ud560 \uc784\uacc4\uac12 (20-300\uc790)",tr:"Kural Tabanl\u0131 Segmentasyon E\u015fi\u011fi (20-300 Karakter)"},pre_trans_seconds:{zh:"\u63d0\u524d\u7ffb\u8bd1\u65f6\u957f (10-36000s)",en:"Pre translation seconds (10-36000s)",zh_TW:"\u63d0\u524d\u7ffb\u8b6f\u6642\u9577 (10-36000s)",ja:"\u4e8b\u524d\u7ffb\u8a33\u6642\u9593 (10-36000s)",ko:"\ubbf8\ub9ac \ubc88\uc5ed \uc2dc\uac04 (10-36000s)",tr:"\xc7eviri \xd6ncesi Saniye (10-36000s)"},throttle_trans_interval:{zh:"\u8282\u6d41\u7ffb\u8bd1\u95f4\u9694 (1-3600s)",en:"Throttling translation interval (1-3600s)",zh_TW:"\u7bc0\u6d41\u7ffb\u8b6f\u9593\u9694 (1-3600s)",ja:"\u7ffb\u8a33\u9593\u9694\u306e\u30b9\u30ed\u30c3\u30c8\u30ea\u30f3\u30b0 (1-3600s)",ko:"\ubc88\uc5ed \uac04\uaca9 \uc870\uc808 (1-3600s)",tr:"\xc7eviri Aral\u0131\u011f\u0131n\u0131 Daraltma (1-3600s)"},subtitle_same_lang:{zh:"\u539f\u8bed\u8a00\u4e0e\u76ee\u6807\u8bed\u8a00\u76f8\u540c\uff0c\u5b57\u5e55\u4e0d\u4e88\u5904\u7406",en:"The source language is the same as the target language, subtitles will not be processed",zh_TW:"\u539f\u8a9e\u8a00\u8207\u76ee\u6a19\u8a9e\u8a00\u76f8\u540c\u6642\uff0c\u5b57\u5e55\u4e0d\u4e88\u8655\u7406",ja:"\u539f\u8a00\u8a9e\u3068\u76ee\u6a19\u8a00\u8a9e\u304c\u540c\u3058\u5834\u5408\u3001\u5b57\u5e55\u306f\u51e6\u7406\u3055\u308c\u307e\u305b\u3093",ko:"\uc6d0\ubcf8 \uc5b8\uc5b4\uc640 \ub300\uc0c1 \uc5b8\uc5b4\uac00 \ub3d9\uc77c\ud55c \uacbd\uc6b0, \uc790\ub9c9\uc740 \ucc98\ub9ac\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4",tr:"Kaynak Dil Hedef Dil \u0130le Ayn\u0131"},plain_text_translate:{zh:"\u7eaf\u6587\u672c\u7ffb\u8bd1",en:"Plain text translation",zh_TW:"\u7d14\u6587\u5b57\u7ffb\u8b6f",ja:"\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33",ko:"\uc21c\uc218 \ud14d\uc2a4\ud2b8 \ubc88\uc5ed",tr:"D\xfcz Metin \xc7evirisi"},is_enable_enhance:{zh:"\u542f\u7528\u589e\u5f3a\u529f\u80fd",en:"Enable Enhancement Features",zh_TW:"\u555f\u7528\u589e\u5f37\u529f\u80fd",ja:"\u5f37\u5316\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ud5a5\uc0c1 \uae30\ub2a5 \ud65c\uc131\ud654",tr:"Geli\u015fmi\u015f \xd6zellikleri Etkinle\u015ftir"},open_separate_window:{zh:"\u72ec\u7acb\u7a97\u53e3\u6253\u5f00",en:"Open in Separate Window",zh_TW:"\u5728\u7368\u7acb\u8996\u7a97\u4e2d\u958b\u555f",ja:"\u5225\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u958b\u304f",ko:"\ubcc4\ub3c4 \ucc3d\uc5d0\uc11c \uc5f4\uae30",tr:"Ayr\u0131 Pencerede A\xe7"},comment_support:{zh:"\u597d\u8bc4\u652f\u6301",en:"Leave a Positive Review",zh_TW:"\u597d\u8a55\u652f\u6301",ja:"\u9ad8\u8a55\u4fa1\u3067\u5fdc\u63f4",ko:"\uc88b\uc740 \ud3c9\uac00\ub85c \uc751\uc6d0",tr:"Olumlu Bir \u0130nceleme B\u0131rak\u0131n"},appreciate_support:{zh:"\u8d5e\u8d4f\u652f\u6301",en:"Support with a Tip",zh_TW:"\u8d0a\u8cde\u652f\u6301",ja:"\u6295\u3052\u92ad\u3067\u5fdc\u63f4",ko:"\ud6c4\uc6d0\ud558\uae30",tr:"Bir Ba\u011f\u0131\u015f \u0130le Destek Ol"},toggle_transbox:{zh:"\u5207\u6362\u7ffb\u8bd1\u7a97",en:"Toggle Translation Box",zh_TW:"\u5207\u63db\u7ffb\u8b6f\u8996\u7a97",ja:"\u7ffb\u8a33\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u5207\u308a\u66ff\u3048",ko:"\ubc88\uc5ed \ucc3d \uc804\ud658",tr:"\xc7eviri Kutusunu De\u011fi\u015ftir"},copy:{zh:"\u590d\u5236",en:"Copy",zh_TW:"\u8907\u88fd",ja:"\u30b3\u30d4\u30fc",ko:"\ubcf5\uc0ac",tr:"Kopyala"},paste:{zh:"\u9ecf\u8d34",en:"Paste",zh_TW:"\u8cbc\u4e0a",ja:"\u8cbc\u308a\u4ed8\u3051",ko:"\ubd99\uc5ec\ub123\uae30",tr:"Yap\u0131\u015ft\u0131r"},submit:{zh:"\u63d0\u4ea4",en:"Submit",zh_TW:"\u63d0\u4ea4",ja:"\u9001\u4fe1",ko:"\uc81c\ucd9c",tr:"G\xf6nder"},collect:{zh:"\u6536\u85cf",en:"Save",zh_TW:"\u6536\u85cf",ja:"\u4fdd\u5b58",ko:"\uc800\uc7a5",tr:"Kaydet"},show_translation_dot:{zh:"\u663e\u793a\u7ffb\u8bd1\u5706\u70b9",en:"Show Translation Dot",zh_TW:"\u986f\u793a\u7ffb\u8b6f\u5713\u9ede",ja:"\u7ffb\u8a33\u30c9\u30c3\u30c8\u3092\u8868\u793a",ko:"\ubc88\uc5ed \uc810 \ud45c\uc2dc",tr:"\xc7eviri Noktas\u0131n\u0131 G\xf6ster"},show_dot_mobile:{zh:"\u4ec5\u79fb\u52a8\u7aef",en:"Mobile Only",zh_TW:"\u50c5\u9650\u884c\u52d5\u88dd\u7f6e",ja:"\u30e2\u30d0\u30a4\u30eb\u306e\u307f",ko:"\ubaa8\ubc14\uc77c \uc804\uc6a9",tr:"Yaln\u0131zca Mobil"},show_dot_always:{zh:"\u603b\u662f\u663e\u793a",en:"Always",zh_TW:"\u7e3d\u662f\u986f\u793a",ja:"\u5e38\u306b\u8868\u793a",ko:"\ud56d\uc0c1 \ud45c\uc2dc",tr:"Her Zaman"},show_dot_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\uc0ac\uc6a9 \uc548 \ud568",tr:"Devre D\u0131\u015f\u0131"},rule_disabled:{zh:"\u89c4\u5219\u5df2\u7981\u7528",en:"Rule Disabled",zh_TW:"\u898f\u5247\u5df2\u505c\u7528",ja:"\u30eb\u30fc\u30eb\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059",ko:"\uaddc\uce59\uc774 \ube44\ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4",tr:"Kural Devre D\u0131\u015f\u0131"},rule_enabled:{zh:"\u89c4\u5219\u5df2\u542f\u7528",en:"Rule Enabled",zh_TW:"\u898f\u5247\u5df2\u555f\u7528",ja:"\u30eb\u30fc\u30eb\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059",ko:"\uaddc\uce59\uc774 \ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4",tr:"Kural Etkin"},rule_toggle_failed:{zh:"\u89c4\u5219\u5207\u6362\u5931\u8d25",en:"Failed to toggle rule",zh_TW:"\u898f\u5247\u5207\u63db\u5931\u6557",ja:"\u30eb\u30fc\u30eb\u306e\u5207\u308a\u66ff\u3048\u306b\u5931\u6557\u3057\u307e\u3057\u305f",ko:"\uaddc\uce59 \uc804\ud658 \uc2e4\ud328",tr:"Kural De\u011fi\u015ftirilemedi"},seg_trans_diff_warning:{zh:"\u65ad\u53e5\u548c\u7ffb\u8bd1\u670d\u52a1\u4e0d\u540c\uff0c\u7ffb\u8bd1\u5f15\u64ce\u4f1a\u91cd\u590d\u7ffb\u8bd1\u5b57\u5e55",en:"Segmentation and translation engines differ; subtitles will be re-translated.",zh_TW:"\u65b7\u53e5\u548c\u7ffb\u8b6f\u670d\u52d9\u4e0d\u540c\uff0c\u7ffb\u8b6f\u5f15\u64ce\u6703\u91cd\u8907\u7ffb\u8b6f\u5b57\u5e55",ja:"\u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u7ffb\u8a33\u30a8\u30f3\u30b8\u30f3\u304c\u7570\u306a\u308a\u307e\u3059\u3002\u5b57\u5e55\u306f\u518d\u7ffb\u8a33\u3055\u308c\u307e\u3059\u3002",ko:"\ubd84\ud560\uacfc \ubc88\uc5ed \uc5d4\uc9c4\uc774 \ub2e4\ub985\ub2c8\ub2e4. \uc790\ub9c9\uc774 \ub2e4\uc2dc \ubc88\uc5ed\ub429\ub2c8\ub2e4.",tr:"Segmentasyon ve \xe7eviri motorlar\u0131 farkl\u0131d\u0131r; altyaz\u0131lar yeniden \xe7evrilecektir."},subtitle_style_preview:{zh:"\u6837\u5f0f\u9884\u89c8",en:"Style Preview",zh_TW:"\u6a23\u5f0f\u9810\u89bd",ja:"\u30b9\u30bf\u30a4\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc",ko:"\uc2a4\ud0c0\uc77c \ubbf8\ub9ac\ubcf4\uae30",tr:"Stil \xd6nizlemesi"},subtitle_preview_sample:{zh:"\u8fd9\u662f\u793a\u4f8b\u5b57\u5e55\u6587\u672c",en:"This is an example subtitle",zh_TW:"\u9019\u662f\u7bc4\u4f8b\u5b57\u5e55\u6587\u5b57",ja:"\u3053\u308c\u306f\u30b5\u30f3\u30d7\u30eb\u5b57\u5e55\u30c6\u30ad\u30b9\u30c8\u3067\u3059",ko:"\uc608\uc2dc \uc790\ub9c9 \ud14d\uc2a4\ud2b8\uc785\ub2c8\ub2e4",tr:"Bu Bir \xd6rnek Altyaz\u0131d\u0131r"},font_size:{zh:"\u5b57\u4f53\u5927\u5c0f",en:"Font Size",zh_TW:"\u5b57\u9ad4\u5927\u5c0f",ja:"\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba",ko:"\uae00\uaf34 \ud06c\uae30",tr:"Yaz\u0131 Tipi Boyutu"},font_color:{zh:"\u5b57\u4f53\u989c\u8272",en:"Font Color",zh_TW:"\u5b57\u9ad4\u984f\u8272",ja:"\u30d5\u30a9\u30f3\u30c8\u306e\u8272",ko:"\uae00\uaf34 \uc0c9\uc0c1",tr:"Yaz\u0131 Tipi Rengi"},background_color:{zh:"\u80cc\u666f\u989c\u8272",en:"Background Color",zh_TW:"\u80cc\u666f\u984f\u8272",ja:"\u80cc\u666f\u8272",ko:"\ubc30\uacbd\uc0c9",tr:"Arka Plan Rengi"},opacity:{zh:"\u900f\u660e\u5ea6",en:"Opacity",zh_TW:"\u900f\u660e\u5ea6",ja:"\u4e0d\u900f\u660e\u5ea6",ko:"\ubd88\ud22c\uba85\ub3c4",tr:"Opakl\u0131k"},line_height:{zh:"\u884c\u9ad8",en:"Line Height",zh_TW:"\u884c\u9ad8",ja:"\u884c\u306e\u9ad8\u3055",ko:"\uc904 \ub192\uc774",tr:"Sat\u0131r Y\xfcksekli\u011fi"},padding:{zh:"\u5185\u8fb9\u8ddd",en:"Padding",zh_TW:"\u5167\u908a\u8ddd",ja:"\u4f59\u767d",ko:"\uc548\ucabd \uc5ec\ubc31",tr:"Dolgu"},vertical:{zh:"\u4e0a\u4e0b",en:"Vertical",zh_TW:"\u4e0a\u4e0b",ja:"\u4e0a\u4e0b",ko:"\uc0c1\ud558",tr:"Dikey"},horizontal:{zh:"\u5de6\u53f3",en:"Horizontal",zh_TW:"\u5de6\u53f3",ja:"\u5de6\u53f3",ko:"\uc88c\uc6b0",tr:"Yatay"},text_shadow:{zh:"\u6587\u5b57\u9634\u5f71",en:"Text Shadow",zh_TW:"\u6587\u5b57\u9670\u5f71",ja:"\u30c6\u30ad\u30b9\u30c8\u306e\u5f71",ko:"\ud14d\uc2a4\ud2b8 \uadf8\ub9bc\uc790",tr:"Metin G\xf6lgesi"},advanced_css:{zh:"\u9ad8\u7ea7 CSS \u7f16\u8f91",en:"Advanced CSS",zh_TW:"\u9032\u968e CSS \u7de8\u8f2f",ja:"\u9ad8\u5ea6\u306a CSS \u7de8\u96c6",ko:"\uace0\uae09 CSS \ud3b8\uc9d1",tr:"Geli\u015fmi\u015f CSS"},close:{zh:"\u5173\u95ed",en:"Close",zh_TW:"\u95dc\u9589",ja:"\u9589\u3058\u308b",ko:"\ub2eb\uae30",tr:"Kapat"}}),p=e=>t=>{var n;return(null===(n=h[t])||void 0===n?void 0:n[e])||""}},3439(e){"use strict";var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,i=Object.getOwnPropertyDescriptor,o=function(e){return"function"===typeof Array.isArray?Array.isArray(e):"[object Array]"===n.call(e)},a=function(e){if(!e||"[object Object]"!==n.call(e))return!1;var r,i=t.call(e,"constructor"),o=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!i&&!o)return!1;for(r in e);return"undefined"===typeof r||t.call(e,r)},s=function(e,t){r&&"__proto__"===t.name?r(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,n){if("__proto__"===n){if(!t.call(e,n))return;if(i)return i(e,n).value}return e[n]};e.exports=function e(){var t,n,r,i,u,c,d=arguments[0],h=1,p=arguments.length,f=!1;for("boolean"===typeof d&&(f=d,d=arguments[1]||{},h=2),(null==d||"object"!==typeof d&&"function"!==typeof d)&&(d={});hA,Az:()=>D,BQ:()=>_,Cx:()=>d,Ee:()=>m,H7:()=>O,IF:()=>s,Jg:()=>P,No:()=>I,Oc:()=>L,T2:()=>u,TP:()=>k,UP:()=>f,Vh:()=>S,XZ:()=>w,aq:()=>c,ax:()=>v,eU:()=>y,ee:()=>g,fF:()=>T,l:()=>j,mo:()=>F,ue:()=>b,ux:()=>C,vc:()=>E,y:()=>N,yz:()=>l});var r=n(4181),i=n(5493),o=n(4307),a=n(1367);const s="toggleTranslate",l="toggleTransOnly",u="toggleStyle",c="togglePopup",d="openSetting",h={[s]:["AltLeft","KeyQ"],[u]:["AltLeft","KeyC"],[c]:["AltLeft","KeyK"],[d]:["AltLeft","KeyO"]},p="KISS-Worker",f="WebDAV",m="GitHub Gist",g={syncType:p,syncUrl:"",syncUser:"",syncKey:"",syncEncryptKey:"",syncMeta:{},subRulesSyncAt:0,dataCaches:{}},v="-",y="mobile",b=["AltLeft","KeyI"],A={transOpen:!0,blacklist:"",apiSlug:i.fF,fromLang:"auto",toLang:"en",triggerShortcut:b,triggerCount:1,triggerTime:200,transSign:"/",showDot:y},x="click",w="hover",k="select",S="dblclick",E="fixed",C="mouse",_="click",T="dblclick",D=(i.i8.filter(e=>{let[t]=e;return"zh-CN"!==t&&"zh-TW"!==t}),{transOpen:!0,blacklist:"",apiSlugs:[i.fF],singleWordNoTrans:!1,autoFavWord:!1,fromLang:"auto",toLang:"zh-CN",toLang2:"en",tranboxShortcut:["AltLeft","KeyS"],btnOffsetX:0,btnOffsetY:0,boxOffsetX:0,boxOffsetY:10,hideTranBtn:!1,hideClickAway:!1,simpleStyle:!1,followSelection:!1,autoHeight:!1,triggerMode:x,btnPositionMode:E,tranboxInteractMode:"-",skipLangs:[],enDict:i.GD,enSug:i.s1,aiDictApiSlug:"-",aiDictPromptSlug:o.Qs}),P="on",I="off",F="mobile_off",L={enabled:!0,apiSlug:i.fF,segSlug:"-",forceSubtitleRetranslate:!1,chunkLength:1e3,longSentenceThreshold:100,useAlgorithmBreaker:"rule",preTrans:90,throttleTrans:30,toLang:"zh-CN",autoTranslate:!0,isBilingual:!0,displayOrder:"original-first",blurTranslation:!1,skipAd:!1,windowStyle:"padding: 0.5em 1em;\nbackground-color: rgba(0, 0, 0, 0.5);\ncolor: white;\nline-height: 1.3;\ntext-shadow: 1px 1px 2px black;\ndisplay: inline-block",originStyle:"font-size: clamp(1rem, 2cqw, 3rem);",translationStyle:"font-size: clamp(1rem, 2cqw, 3rem);",hoverLookupMode:F,autoFavWord:!1,showList:F,hideSubtitleButton:!1,aiContextSlug:"-",segPromptMode:o.Qs,segPromptSlug:o.Ef},O="bubble",N="max-width: min(420px, calc(100vw - 32px));\npadding: 10px 12px;\nborder-radius: 8px;\nbackground: rgb(25, 118, 210);\ncolor: #fff;\nfont-size: 14px;\nline-height: 1.5;\nbox-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);\nbackdrop-filter: blur(8px);",z={useMouseHover:!1,blacklist:"",mouseHoverKey:["ControlLeft"],mouseHoverKey2:[],displayMode:"bilingual",bubbleStyle:N},j={version:o.xo,darkMode:"auto",uiLang:"en",minLength:2,maxLength:1e5,newlineLength:20,httpTimeout:i.$K,clearCache:!1,injectRules:!0,fabClickAction:0,contextMenuType:1,subrulesList:[{url:"https://fishjar.github.io/kiss-rules/kiss-rules_v2.json",selected:!0},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-on_v2.json",selected:!1},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-off_v2.json",selected:!1}],transApis:i._T,prompts:[],deletedTransApiSlugs:[],shortcuts:h,inputRule:A,tranboxSetting:D,touchModes:[2],blacklist:["https://fishjar.github.io/kiss-translator/options.html","https://translate.google.com","https://www.deepl.com/translator"].join(",\n"),csplist:[].join(",\n"),orilist:["https://dict.youdao.com"].join(",\n"),skipLangs:[],transInterval:100,langDetector:"-",mouseHoverSetting:z,preInit:!0,transAllnow:!1,subtitleSetting:L,logLevel:r.$b.INFO.value,rootMargin:500,customStyles:a.p5}},3684(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=n(2297)},3699(e,t,n){"use strict";n.d(t,{A:()=>i});var r=n(4320);function i(e,t){const n=(0,r.A)({},t);return Object.keys(e).forEach(o=>{if(o.toString().match(/^(components|slots)$/))n[o]=(0,r.A)({},e[o],n[o]);else if(o.toString().match(/^(componentsProps|slotProps)$/)){const a=e[o]||{},s=t[o];n[o]={},s&&Object.keys(s)?a&&Object.keys(a)?(n[o]=(0,r.A)({},s),Object.keys(a).forEach(e=>{n[o][e]=i(a[e],s[e])})):n[o]=s:n[o]=a}else void 0===n[o]&&(n[o]=e[o])}),n}},3780(e,t,n){"use strict";n.d(t,{A:()=>o});n(8661);var r=n(1834),i=n(5089);function o(e){const{styles:t,defaultTheme:n={}}=e,o="function"===typeof t?e=>{return t(void 0===(r=e)||null===r||0===Object.keys(r).length?n:e);var r}:t;return(0,i.jsx)(r.mL,{styles:o})}},3806(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(2561).A},3830(e,t,n){"use strict";n.d(t,{EU:()=>s,NI:()=>a,iZ:()=>u,kW:()=>c,vf:()=>l,zu:()=>i});var r=n(6997);const i={xs:0,sm:600,md:900,lg:1200,xl:1536},o={keys:["xs","sm","md","lg","xl"],up:e=>"@media (min-width:".concat(i[e],"px)")};function a(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const e=r.breakpoints||o;return t.reduce((r,i,o)=>(r[e.up(e.keys[o])]=n(t[o]),r),{})}if("object"===typeof t){const e=r.breakpoints||o;return Object.keys(t).reduce((r,o)=>{if(-1!==Object.keys(e.values||i).indexOf(o)){r[e.up(o)]=n(t[o],o)}else{const e=o;r[e]=t[e]}return r},{})}return n(t)}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t;return(null==(t=e.keys)?void 0:t.reduce((t,n)=>(t[e.up(n)]={},t),{}))||{}}function l(e,t){return e.reduce((e,t)=>{const n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e},t)}function u(e){const t=s(e);for(var n=arguments.length,i=new Array(n>1?n-1:0),o=1;o(0,r.A)(e,t),{});return l(Object.keys(t),a)}function c(e){let{values:t,breakpoints:n,base:r}=e;const i=r||function(e,t){if("object"!==typeof e)return{};const n={},r=Object.keys(t);return Array.isArray(e)?r.forEach((t,r)=>{r{null!=e[t]&&(n[t]=!0)}),n}(t,n),o=Object.keys(i);if(0===o.length)return t;let a;return o.reduce((e,n,r)=>(Array.isArray(t)?(e[n]=null!=t[r]?t[r]:t[a],a=r):"object"===typeof t?(e[n]=null!=t[n]?t[n]:t[a],a=n):e[n]=t,e),{})}},3951(e,t,n){"use strict";n.d(t,{A:()=>i});var r=n(5482);function i(e){var t={},n=!1;function i(t,i){return n=!0,i=new Promise(function(n){n(e[t](i))}),{done:!1,value:new r.A(i,1)}}return t["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},t.next=function(e){return n?(n=!1,e):i("next",e)},"function"==typeof e.throw&&(t.throw=function(e){if(n)throw n=!1,e;return i("throw",e)}),"function"==typeof e.return&&(t.return=function(e){return n?(n=!1,e):i("return",e)}),t}},4077(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(6489).A},4089(e,t,n){"use strict";n.d(t,{Ay:()=>o});var r=n(7599);const i={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function o(e,t){const n=i[t];return n?"".concat(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Mui","-").concat(n):"".concat(r.A.generate(e),"-").concat(t)}},4093(e,t,n){"use strict";var r;n.d(t,{$:()=>r,Q:()=>i}),function(e){e[e.BACKSPACE=8]="BACKSPACE",e[e.FORM_FEED=12]="FORM_FEED",e[e.NEWLINE=10]="NEWLINE",e[e.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",e[e.TAB=9]="TAB",e[e.SPACE=32]="SPACE",e[e.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",e[e.QUOTATION_MARK=34]="QUOTATION_MARK",e[e.NUMBER_SIGN=35]="NUMBER_SIGN",e[e.DOLLAR_SIGN=36]="DOLLAR_SIGN",e[e.PERCENT_SIGN=37]="PERCENT_SIGN",e[e.AMPERSAND=38]="AMPERSAND",e[e.APOSTROPHE=39]="APOSTROPHE",e[e.LEFT_PARENTHESIS=40]="LEFT_PARENTHESIS",e[e.RIGHT_PARENTHESIS=41]="RIGHT_PARENTHESIS",e[e.ASTERISK=42]="ASTERISK",e[e.PLUS_SIGN=43]="PLUS_SIGN",e[e.COMMA=44]="COMMA",e[e.HYPHEN_MINUS=45]="HYPHEN_MINUS",e[e.FULL_STOP=46]="FULL_STOP",e[e.SOLIDUS=47]="SOLIDUS",e[e.DIGIT_ZERO=48]="DIGIT_ZERO",e[e.DIGIT_ONE=49]="DIGIT_ONE",e[e.DIGIT_TWO=50]="DIGIT_TWO",e[e.DIGIT_THREE=51]="DIGIT_THREE",e[e.DIGIT_FOUR=52]="DIGIT_FOUR",e[e.DIGIT_FIVE=53]="DIGIT_FIVE",e[e.DIGIT_SIX=54]="DIGIT_SIX",e[e.DIGIT_SEVEN=55]="DIGIT_SEVEN",e[e.DIGIT_EIGHT=56]="DIGIT_EIGHT",e[e.DIGIT_NINE=57]="DIGIT_NINE",e[e.COLON=58]="COLON",e[e.SEMICOLON=59]="SEMICOLON",e[e.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",e[e.EQUALS_SIGN=61]="EQUALS_SIGN",e[e.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",e[e.QUESTION_MARK=63]="QUESTION_MARK",e[e.COMMERCIAL_AT=64]="COMMERCIAL_AT",e[e.LATIN_CAPITAL_LETTER_A=65]="LATIN_CAPITAL_LETTER_A",e[e.LATIN_CAPITAL_LETTER_B=66]="LATIN_CAPITAL_LETTER_B",e[e.LATIN_CAPITAL_LETTER_C=67]="LATIN_CAPITAL_LETTER_C",e[e.LATIN_CAPITAL_LETTER_D=68]="LATIN_CAPITAL_LETTER_D",e[e.LATIN_CAPITAL_LETTER_E=69]="LATIN_CAPITAL_LETTER_E",e[e.LATIN_CAPITAL_LETTER_F=70]="LATIN_CAPITAL_LETTER_F",e[e.LATIN_CAPITAL_LETTER_G=71]="LATIN_CAPITAL_LETTER_G",e[e.LATIN_CAPITAL_LETTER_H=72]="LATIN_CAPITAL_LETTER_H",e[e.LATIN_CAPITAL_LETTER_I=73]="LATIN_CAPITAL_LETTER_I",e[e.LATIN_CAPITAL_LETTER_J=74]="LATIN_CAPITAL_LETTER_J",e[e.LATIN_CAPITAL_LETTER_K=75]="LATIN_CAPITAL_LETTER_K",e[e.LATIN_CAPITAL_LETTER_L=76]="LATIN_CAPITAL_LETTER_L",e[e.LATIN_CAPITAL_LETTER_M=77]="LATIN_CAPITAL_LETTER_M",e[e.LATIN_CAPITAL_LETTER_N=78]="LATIN_CAPITAL_LETTER_N",e[e.LATIN_CAPITAL_LETTER_O=79]="LATIN_CAPITAL_LETTER_O",e[e.LATIN_CAPITAL_LETTER_P=80]="LATIN_CAPITAL_LETTER_P",e[e.LATIN_CAPITAL_LETTER_Q=81]="LATIN_CAPITAL_LETTER_Q",e[e.LATIN_CAPITAL_LETTER_R=82]="LATIN_CAPITAL_LETTER_R",e[e.LATIN_CAPITAL_LETTER_S=83]="LATIN_CAPITAL_LETTER_S",e[e.LATIN_CAPITAL_LETTER_T=84]="LATIN_CAPITAL_LETTER_T",e[e.LATIN_CAPITAL_LETTER_U=85]="LATIN_CAPITAL_LETTER_U",e[e.LATIN_CAPITAL_LETTER_V=86]="LATIN_CAPITAL_LETTER_V",e[e.LATIN_CAPITAL_LETTER_W=87]="LATIN_CAPITAL_LETTER_W",e[e.LATIN_CAPITAL_LETTER_X=88]="LATIN_CAPITAL_LETTER_X",e[e.LATIN_CAPITAL_LETTER_Y=89]="LATIN_CAPITAL_LETTER_Y",e[e.LATIN_CAPITAL_LETTER_Z=90]="LATIN_CAPITAL_LETTER_Z",e[e.LEFT_SQUARE_BRACKET=91]="LEFT_SQUARE_BRACKET",e[e.REVERSE_SOLIDUS=92]="REVERSE_SOLIDUS",e[e.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",e[e.CIRCUMFLEX_ACCENT=94]="CIRCUMFLEX_ACCENT",e[e.LOW_LINE=95]="LOW_LINE",e[e.GRAVE_ACCENT=96]="GRAVE_ACCENT",e[e.LATIN_SMALL_LETTER_A=97]="LATIN_SMALL_LETTER_A",e[e.LATIN_SMALL_LETTER_B=98]="LATIN_SMALL_LETTER_B",e[e.LATIN_SMALL_LETTER_C=99]="LATIN_SMALL_LETTER_C",e[e.LATIN_SMALL_LETTER_D=100]="LATIN_SMALL_LETTER_D",e[e.LATIN_SMALL_LETTER_E=101]="LATIN_SMALL_LETTER_E",e[e.LATIN_SMALL_LETTER_F=102]="LATIN_SMALL_LETTER_F",e[e.LATIN_SMALL_LETTER_G=103]="LATIN_SMALL_LETTER_G",e[e.LATIN_SMALL_LETTER_H=104]="LATIN_SMALL_LETTER_H",e[e.LATIN_SMALL_LETTER_I=105]="LATIN_SMALL_LETTER_I",e[e.LATIN_SMALL_LETTER_J=106]="LATIN_SMALL_LETTER_J",e[e.LATIN_SMALL_LETTER_K=107]="LATIN_SMALL_LETTER_K",e[e.LATIN_SMALL_LETTER_L=108]="LATIN_SMALL_LETTER_L",e[e.LATIN_SMALL_LETTER_M=109]="LATIN_SMALL_LETTER_M",e[e.LATIN_SMALL_LETTER_N=110]="LATIN_SMALL_LETTER_N",e[e.LATIN_SMALL_LETTER_O=111]="LATIN_SMALL_LETTER_O",e[e.LATIN_SMALL_LETTER_P=112]="LATIN_SMALL_LETTER_P",e[e.LATIN_SMALL_LETTER_Q=113]="LATIN_SMALL_LETTER_Q",e[e.LATIN_SMALL_LETTER_R=114]="LATIN_SMALL_LETTER_R",e[e.LATIN_SMALL_LETTER_S=115]="LATIN_SMALL_LETTER_S",e[e.LATIN_SMALL_LETTER_T=116]="LATIN_SMALL_LETTER_T",e[e.LATIN_SMALL_LETTER_U=117]="LATIN_SMALL_LETTER_U",e[e.LATIN_SMALL_LETTER_V=118]="LATIN_SMALL_LETTER_V",e[e.LATIN_SMALL_LETTER_W=119]="LATIN_SMALL_LETTER_W",e[e.LATIN_SMALL_LETTER_X=120]="LATIN_SMALL_LETTER_X",e[e.LATIN_SMALL_LETTER_Y=121]="LATIN_SMALL_LETTER_Y",e[e.LATIN_SMALL_LETTER_Z=122]="LATIN_SMALL_LETTER_Z",e[e.LEFT_CURLY_BRACKET=123]="LEFT_CURLY_BRACKET",e[e.VERTICAL_LINE=124]="VERTICAL_LINE",e[e.RIGHT_CURLY_BRACKET=125]="RIGHT_CURLY_BRACKET",e[e.TILDE=126]="TILDE"}(r||(r={}));const i={[r.QUOTATION_MARK]:r.QUOTATION_MARK,[r.REVERSE_SOLIDUS]:r.REVERSE_SOLIDUS,[r.SOLIDUS]:r.SOLIDUS,[r.LATIN_SMALL_LETTER_B]:r.BACKSPACE,[r.LATIN_SMALL_LETTER_F]:r.FORM_FEED,[r.LATIN_SMALL_LETTER_N]:r.NEWLINE,[r.LATIN_SMALL_LETTER_R]:r.CARRIAGE_RETURN,[r.LATIN_SMALL_LETTER_T]:r.TAB}},4107(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(9371);function i(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function o(e){for(var t=1;tr,h9:()=>o,vF:()=>i});const r={DEBUG:{value:0,name:"DEBUG",color:"#6495ED"},INFO:{value:1,name:"INFO",color:"#4CAF50"},WARN:{value:2,name:"WARN",color:"#FFC107"},ERROR:{value:3,name:"ERROR",color:"#F44336"},SILENT:{value:4,name:"SILENT"}};const i=new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.config={level:e.level||r.INFO,prefix:e.prefix||"KISS-Translator"}}setLevel(e){let t;if("string"===typeof e){if(t=function(e){if("string"!==typeof e||0===e.length)return;const t=e.toUpperCase();return Object.values(r).find(e=>e.name===t)}(e),!t)return void this.warn('Invalid log level name provided: "'.concat(e,'". Keeping current level.'))}else if("number"===typeof e){if(n=e,t=Object.values(r).find(e=>e.value===n),!t)return void this.warn("Invalid log level value provided: ".concat(e,". Keeping current level."))}else{if(!e||"number"!==typeof e.value)return void this.warn("Invalid argument passed to setLevel. Must be a LogLevel object, number, or string.");t=e}var n;this.config.level.value!==t.value&&(this.config.level=t,console.log("[".concat(this.config.prefix,"] Log level dynamically set to ").concat(this.config.level.name)))}_log(e){if(e.value1?o-1:0),s=1;sr});const r=n(2577).A},4262(e,t,n){"use strict";n.d(t,{LX:()=>f,MA:()=>p,_W:()=>m,Lc:()=>y,Ms:()=>b});var r=n(3830),i=n(8343),o=n(1686);const a={m:"margin",p:"padding"},s={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},l={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},u=function(e){const t={};return n=>(void 0===t[n]&&(t[n]=e(n)),t[n])}(e=>{if(e.length>2){if(!l[e])return[e];e=l[e]}const[t,n]=e.split(""),r=a[t],i=s[n]||"";return Array.isArray(i)?i.map(e=>r+e):[r+i]}),c=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],d=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],h=[...c,...d];function p(e,t,n,r){var o;const a=null!=(o=(0,i.Yn)(e,t,!1))?o:n;return"number"===typeof a?e=>"string"===typeof e?e:a*e:Array.isArray(a)?e=>"string"===typeof e?e:a[e]:"function"===typeof a?a:()=>{}}function f(e){return p(e,"spacing",8)}function m(e,t){if("string"===typeof t||null==t)return t;const n=e(Math.abs(t));return t>=0?n:"number"===typeof n?-n:"-".concat(n)}function g(e,t,n,i){if(-1===t.indexOf(n))return null;const o=function(e,t){return n=>e.reduce((e,r)=>(e[r]=m(t,n),e),{})}(u(n),i),a=e[n];return(0,r.NI)(e,a,o)}function v(e,t){const n=f(e.theme);return Object.keys(e).map(r=>g(e,t,r,n)).reduce(o.A,{})}function y(e){return v(e,c)}function b(e){return v(e,d)}function A(e){return v(e,h)}y.propTypes={},y.filterProps=c,b.propTypes={},b.filterProps=d,A.propTypes={},A.filterProps=h},4270(e,t,n){"use strict";n.d(t,{A:()=>b});var r=n(4320),i=n(8661),o=n(8915),a=n(5553),s=n(1163),l=n(5227),u=n(3142),c=n(7183),d=n(5421),h=n(4089);function p(e){return(0,h.Ay)("MuiSvgIcon",e)}(0,d.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var f=n(5089);const m=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],g=(0,c.Ay)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&&t["color".concat((0,l.A)(n.color))],t["fontSize".concat((0,l.A)(n.fontSize))]]}})(e=>{let{theme:t,ownerState:n}=e;var r,i,o,a,s,l,u,c,d,h,p,f,m;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:n.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(r=t.transitions)||null==(i=r.create)?void 0:i.call(r,"fill",{duration:null==(o=t.transitions)||null==(o=o.duration)?void 0:o.shorter}),fontSize:{inherit:"inherit",small:(null==(a=t.typography)||null==(s=a.pxToRem)?void 0:s.call(a,20))||"1.25rem",medium:(null==(l=t.typography)||null==(u=l.pxToRem)?void 0:u.call(l,24))||"1.5rem",large:(null==(c=t.typography)||null==(d=c.pxToRem)?void 0:d.call(c,35))||"2.1875rem"}[n.fontSize],color:null!=(h=null==(p=(t.vars||t).palette)||null==(p=p[n.color])?void 0:p.main)?h:{action:null==(f=(t.vars||t).palette)||null==(f=f.action)?void 0:f.active,disabled:null==(m=(t.vars||t).palette)||null==(m=m.action)?void 0:m.disabled,inherit:void 0}[n.color]}}),v=i.forwardRef(function(e,t){const n=(0,u.b)({props:e,name:"MuiSvgIcon"}),{children:c,className:d,color:h="inherit",component:v="svg",fontSize:y="medium",htmlColor:b,inheritViewBox:A=!1,titleAccess:x,viewBox:w="0 0 24 24"}=n,k=(0,o.A)(n,m),S=i.isValidElement(c)&&"svg"===c.type,E=(0,r.A)({},n,{color:h,component:v,fontSize:y,instanceFontSize:e.fontSize,inheritViewBox:A,viewBox:w,hasSvgAsChild:S}),C={};A||(C.viewBox=w);const _=(e=>{const{color:t,fontSize:n,classes:r}=e,i={root:["root","inherit"!==t&&"color".concat((0,l.A)(t)),"fontSize".concat((0,l.A)(n))]};return(0,s.A)(i,p,r)})(E);return(0,f.jsxs)(g,(0,r.A)({as:v,className:(0,a.A)(_.root,d),focusable:"false",color:b,"aria-hidden":!x||void 0,role:x?"img":void 0,ref:t},C,k,S&&c.props,{ownerState:E,children:[S?c.props.children:c,x?(0,f.jsx)("title",{children:x}):null]}))});v.muiName="SvgIcon";const y=v;function b(e,t){function n(n,i){return(0,f.jsx)(y,(0,r.A)({"data-testid":"".concat(t,"Icon"),ref:i},n,{children:e}))}return n.muiName=y.muiName,i.memo(i.forwardRef(n))}},4307(e,t,n){"use strict";n.d(t,{Ef:()=>g,Es:()=>C,Pc:()=>H,Qs:()=>u,Vn:()=>M,a5:()=>U,cP:()=>W,uM:()=>y,xo:()=>b,zh:()=>B});var r=n(4107),i=n(5493);const o="nobatch-translation",a="batch-translation-json",s="subtitle-segmentation",l="dictionary-en-zh",u="follow_api",c="batch system prompt",d="user prompt",h="subtitle prompt",p="dictionary prompt",f=o,m=a,g=s,v=l,y=2,b=3,A=[{slug:o,category:d,nameKey:"preset_prompt_nobatch_translation",name:"Non-batch translation",systemPrompt:i.$1,userPrompt:i.EE},{slug:a,category:c,nameKey:"preset_prompt_batch_translation_json",name:"Batch translation (JSON)",systemPrompt:i.lo,userPrompt:""},{slug:"batch-translation-xml",category:c,nameKey:"preset_prompt_batch_translation_xml",name:"Batch translation (XML)",systemPrompt:i.ad,userPrompt:""},{slug:"batch-translation-line",category:c,nameKey:"preset_prompt_batch_translation_line",name:"Batch translation (LINE)",systemPrompt:i.Ww,userPrompt:""},{slug:s,category:h,nameKey:"preset_prompt_subtitle_segmentation",name:"Subtitle AI segmentation",systemPrompt:i.U$,userPrompt:""},{slug:l,category:p,nameKey:"preset_prompt_dictionary_en_zh",name:"AI English-Chinese Dictionary",systemPrompt:i.im,userPrompt:i.fk}],x=new Set(A.map(e=>e.slug)),w=["slug","category","name","systemPrompt","userPrompt"];function k(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{slug:String(e.slug||""),category:String(e.category||""),nameKey:String(e.nameKey||""),name:String(e.name||""),systemPrompt:String(e.systemPrompt||""),userPrompt:String(e.userPrompt||"")}}function S(e){return x.has(e)}function E(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(Array.isArray(e)?e:[]).map(k).filter(e=>e.slug&&!S(e.slug)).map(e=>{let{slug:t,category:n,name:r,systemPrompt:i,userPrompt:o}=e;return{slug:t,category:n,name:r,systemPrompt:i,userPrompt:o}})}function C(){let e=arguments.length>1?arguments[1]:void 0;return e?function(){const e=E(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]);return[...A,...e]}(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).find(t=>(null===t||void 0===t?void 0:t.slug)===e):null}function _(e,t,n){return C(e,t)||C(e,n)}function T(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return Object.prototype.hasOwnProperty.call(e,t)}function D(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return T(e,t)?e[t]:n}function P(){return T(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}function I(){return String((arguments.length>0&&void 0!==arguments[0]?arguments[0]:{})[arguments.length>1?arguments[1]:void 0]||"")}function F(e,t){const n=k(e),r=k(t);return n.category===r.category&&n.systemPrompt===r.systemPrompt&&n.userPrompt===r.userPrompt}function L(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;const n=String(e.apiName||e.apiSlug||"API");return"".concat(n," ").concat(t)}function O(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;const r=function(e){const t=String(e);let n=2166136261,r=16777619;for(let i=0;i>>0).toString(36)).concat((r>>>0).toString(36))}(JSON.stringify({apiSlug:String(e.apiSlug||""),promptType:t,category:n.category,systemPrompt:n.systemPrompt,userPrompt:n.userPrompt}));return"prompt_migrated_".concat(t,"_").concat(r)}function N(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e)return e;if(!T(e,"batchPromptId")&&!T(e,"nobatchPromptId")&&!T(e,"subtitlePromptId")&&!T(e,"dictPromptId"))return e;const t=(0,r.A)({},e);return delete t.batchPromptId,delete t.nobatchPromptId,delete t.subtitlePromptId,delete t.dictPromptId,t}const z=[{promptType:"batch",promptLabel:"Batch prompt",category:c,systemPromptFieldName:"systemPrompt",userPromptFieldName:"",promptSlugFieldName:"batchPromptSlug"},{promptType:"nobatch",promptLabel:"Non-batch prompt",category:d,systemPromptFieldName:"nobatchPrompt",userPromptFieldName:"nobatchUserPrompt",promptSlugFieldName:"nobatchPromptSlug"},{promptType:"subtitle",promptLabel:"Subtitle prompt",category:h,systemPromptFieldName:"subtitlePrompt",userPromptFieldName:"",promptSlugFieldName:"subtitlePromptSlug"},{promptType:"dict",promptLabel:"Dictionary prompt",category:p,systemPromptFieldName:"dictPrompt",userPromptFieldName:"dictUserPrompt",promptSlugFieldName:"dictPromptSlug"}];function j(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=new Map;return e.forEach(e=>{const n=null===e||void 0===e?void 0:e.slug;n&&!t.has(n)&&t.set(n,e)}),t}function R(e,t,n){if(P(e,t.promptSlugFieldName))return"";const i=function(e,t){return T(e,t.systemPromptFieldName)?{slug:"",category:t.category,nameKey:"",name:L(e,t.promptLabel),systemPrompt:I(e,t.systemPromptFieldName),userPrompt:t.userPromptFieldName?I(e,t.userPromptFieldName):""}:null}(e,t);if(!i)return"";const o=function(e){return A.find(t=>F(t,e))}(i);if(o)return o.slug;const a=O(e,t.promptType,i),s=function(e,t,n){let r=1,i=n;for(;e.has(i);){if(F(e.get(i),t))return i;r+=1,i="".concat(n,"_").concat(r)}return i}(n.promptBySlug,i,a);if(!n.promptBySlug.has(s)){const e=(0,r.A)((0,r.A)({},i),{},{slug:s});n.prompts.push(e),n.promptBySlug.set(s,e),n.hasPromptChanges=!0}return s}function M(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Number((null===e||void 0===e?void 0:e.version)||1);return Number.isFinite(t)&&t>=1?t:1}function B(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e||"object"!==typeof e)return e;if(!Array.isArray(e.transApis))return(0,r.A)((0,r.A)({},e),{},{version:y});const t=Array.isArray(e.prompts)?e.prompts:[],n=E(t),o=!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return Array.isArray(e)?e.length===t.length&&e.every((e,n)=>!(!e||"object"!==typeof e)&&(Object.keys(e).every(e=>w.includes(e))&&JSON.stringify(k(e))===JSON.stringify(t[n]))):0===t.length}(t,n),a=function(e){if(!e||!T(e,"segPromptId"))return e;const t=(0,r.A)({},e);return delete t.segPromptId,t}(e.subtitleSetting),s=a!==e.subtitleSetting,l={prompts:[...n],promptBySlug:j([...A,...n]),hasPromptChanges:o};let u=!1;const c=e.transApis.map(e=>{if(!e||"object"!==typeof e)return e;let t=N(e);return t!==e&&(u=!0),z.forEach(n=>{const o=Boolean(t.apiType)&&!i.sN.ai.has(t.apiType),a="string"===typeof t[n.systemPromptFieldName]?t[n.systemPromptFieldName].trim():"",s=n.userPromptFieldName&&"string"===typeof t[n.userPromptFieldName]?t[n.userPromptFieldName].trim():"";if(o||!a&&!s)return void((T(t,n.systemPromptFieldName)||n.userPromptFieldName&&T(t,n.userPromptFieldName))&&(t===e&&(t=(0,r.A)({},e)),t=function(e,t){const n=(0,r.A)({},e);return delete n[t.systemPromptFieldName],t.userPromptFieldName&&delete n[t.userPromptFieldName],n}(t,n),u=!0));const c=R(t,n,l);c&&t[n.promptSlugFieldName]!==c&&(t===e&&(t=(0,r.A)({},e)),t[n.promptSlugFieldName]=c,delete t[n.systemPromptFieldName],n.userPromptFieldName&&delete t[n.userPromptFieldName],u=!0)}),t}),d=(0,r.A)({},e);return d.version=y,d.transApis=u?c:e.transApis,d.prompts=l.hasPromptChanges?l.prompts:n,s&&(d.subtitleSetting=a),d}function W(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e||"object"!==typeof e)return e;const t=M(e)=3)return t;const n=Array.isArray(t.transApis)?t.transApis.map(e=>(null===e||void 0===e?void 0:e.apiType)!==i.lL||e.url!==i.GY?e:(0,r.A)((0,r.A)({},e),{},{url:i.KK})):t.transApis;return(0,r.A)((0,r.A)({},t),{},{transApis:n,version:3})}function U(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e)return e;const i=N(e),o=i===e?(0,r.A)({},e):i,a=P(o,"batchPromptSlug"),s=T(o,"systemPrompt"),l=_(t,D(o,"batchPromptSlug",m),m);!l||!a&&s||(o.batchPromptSlug=l.slug,o.systemPrompt=l.systemPrompt);const u=P(o,"nobatchPromptSlug"),c=T(o,"nobatchPrompt")||T(o,"nobatchUserPrompt"),d=_(t,D(o,"nobatchPromptSlug",f),f);!d||!u&&c||(o.nobatchPromptSlug=d.slug,o.nobatchPrompt=d.systemPrompt,o.nobatchUserPrompt=d.userPrompt);const h="global"===(null===n||void 0===n?void 0:n.segPromptMode),p=P(o,"subtitlePromptSlug"),y=T(o,"subtitlePrompt"),b=_(t,h?D(n,"segPromptSlug",g):D(o,"subtitlePromptSlug",g),g);b&&(h||p||!y)&&(h||(o.subtitlePromptSlug=b.slug),o.subtitlePrompt=b.systemPrompt);const A=P(o,"dictPromptSlug"),x=T(o,"dictPrompt")||T(o,"dictUserPrompt"),w=_(t,D(o,"dictPromptSlug",v),v);return!w||!A&&x||(o.dictPromptSlug=w.slug,o.dictPrompt=w.systemPrompt,o.dictUserPrompt=w.userPrompt),o}function H(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return(Array.isArray(e)?e:[]).map(e=>U(e,t,n))}},4320(e,t,n){"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;tr})},4324(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M14 4v5c0 1.12.37 2.16 1 3H9c.65-.86 1-1.9 1-3V4zm3-2H7c-.55 0-1 .45-1 1s.45 1 1 1h1v5c0 1.66-1.34 3-3 3v2h5.97v7l1 1 1-1v-7H19v-2c-1.66 0-3-1.34-3-3V4h1c.55 0 1-.45 1-1s-.45-1-1-1"}),"PushPinOutlined")},4346(e,t,n){"use strict";n.d(t,{A:()=>c});var r,i=n(4093),o=n(1263),a=n(2458);function s(e){return["START","ENDED","ERROR","TRUE1","TRUE2","TRUE3","FALSE1","FALSE2","FALSE3","FALSE4","NULL1","NULL2","NULL3","STRING_DEFAULT","STRING_AFTER_BACKSLASH","STRING_UNICODE_DIGIT_1","STRING_UNICODE_DIGIT_2","STRING_UNICODE_DIGIT_3","STRING_UNICODE_DIGIT_4","STRING_INCOMPLETE_CHAR","NUMBER_AFTER_INITIAL_MINUS","NUMBER_AFTER_INITIAL_ZERO","NUMBER_AFTER_INITIAL_NON_ZERO","NUMBER_AFTER_FULL_STOP","NUMBER_AFTER_DECIMAL","NUMBER_AFTER_E","NUMBER_AFTER_E_AND_SIGN","NUMBER_AFTER_E_AND_DIGIT","SEPARATOR","BOM_OR_START","BOM"][e]}!function(e){e[e.START=0]="START",e[e.ENDED=1]="ENDED",e[e.ERROR=2]="ERROR",e[e.TRUE1=3]="TRUE1",e[e.TRUE2=4]="TRUE2",e[e.TRUE3=5]="TRUE3",e[e.FALSE1=6]="FALSE1",e[e.FALSE2=7]="FALSE2",e[e.FALSE3=8]="FALSE3",e[e.FALSE4=9]="FALSE4",e[e.NULL1=10]="NULL1",e[e.NULL2=11]="NULL2",e[e.NULL3=12]="NULL3",e[e.STRING_DEFAULT=13]="STRING_DEFAULT",e[e.STRING_AFTER_BACKSLASH=14]="STRING_AFTER_BACKSLASH",e[e.STRING_UNICODE_DIGIT_1=15]="STRING_UNICODE_DIGIT_1",e[e.STRING_UNICODE_DIGIT_2=16]="STRING_UNICODE_DIGIT_2",e[e.STRING_UNICODE_DIGIT_3=17]="STRING_UNICODE_DIGIT_3",e[e.STRING_UNICODE_DIGIT_4=18]="STRING_UNICODE_DIGIT_4",e[e.STRING_INCOMPLETE_CHAR=19]="STRING_INCOMPLETE_CHAR",e[e.NUMBER_AFTER_INITIAL_MINUS=20]="NUMBER_AFTER_INITIAL_MINUS",e[e.NUMBER_AFTER_INITIAL_ZERO=21]="NUMBER_AFTER_INITIAL_ZERO",e[e.NUMBER_AFTER_INITIAL_NON_ZERO=22]="NUMBER_AFTER_INITIAL_NON_ZERO",e[e.NUMBER_AFTER_FULL_STOP=23]="NUMBER_AFTER_FULL_STOP",e[e.NUMBER_AFTER_DECIMAL=24]="NUMBER_AFTER_DECIMAL",e[e.NUMBER_AFTER_E=25]="NUMBER_AFTER_E",e[e.NUMBER_AFTER_E_AND_SIGN=26]="NUMBER_AFTER_E_AND_SIGN",e[e.NUMBER_AFTER_E_AND_DIGIT=27]="NUMBER_AFTER_E_AND_DIGIT",e[e.SEPARATOR=28]="SEPARATOR",e[e.BOM_OR_START=29]="BOM_OR_START",e[e.BOM=30]="BOM"}(r||(r={}));const l={stringBufferSize:0,numberBufferSize:0,separator:void 0,emitPartialTokens:!1};class u extends Error{constructor(e){super(e),Object.setPrototypeOf(this,u.prototype)}}class c{constructor(e){this.state=r.BOM_OR_START,this.bomIndex=0,this.separatorIndex=0,this.escapedCharsByteLength=0,this.bytes_remaining=0,this.bytes_in_sequence=0,this.char_split_buffer=new Uint8Array(4),this.encoder=new TextEncoder,this.offset=-1,e=Object.assign(Object.assign({},l),e),this.emitPartialTokens=!0===e.emitPartialTokens,this.bufferedString=e.stringBufferSize&&e.stringBufferSize>4?new o.x(e.stringBufferSize):new o.W,this.bufferedNumber=e.numberBufferSize&&e.numberBufferSize>0?new o.x(e.numberBufferSize):new o.W,this.separator=e.separator,this.separatorBytes=e.separator?this.encoder.encode(e.separator):void 0}get isEnded(){return this.state===r.ENDED}write(e){try{let n;if(e instanceof Uint8Array)n=e;else if("string"===typeof e)n=this.encoder.encode(e);else if(Array.isArray(e))n=Uint8Array.from(e);else{if(!ArrayBuffer.isView(e))throw new TypeError("Unexpected type. The `write` function only accepts Arrays, TypedArrays and Strings.");n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}for(let t=0;t=i.$.DIGIT_ONE&&o<=i.$.DIGIT_NINE){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_INITIAL_NON_ZERO;continue}if(o===i.$.DIGIT_ZERO){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_INITIAL_ZERO;continue}if(o===i.$.HYPHEN_MINUS){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_INITIAL_MINUS;continue}break;case r.STRING_DEFAULT:if(o===i.$.QUOTATION_MARK){const e=this.bufferedString.toString();this.state=r.START,this.onToken({token:a.A.STRING,value:e,offset:this.offset}),this.offset+=this.escapedCharsByteLength+this.bufferedString.byteLength+1;continue}if(o===i.$.REVERSE_SOLIDUS){this.state=r.STRING_AFTER_BACKSLASH;continue}if(o>=128){if(this.bytes_in_sequence=o>=194&&o<=223?2:o<=239?3:4,this.bytes_in_sequence<=n.length-t){this.bufferedString.appendBuf(n,t,t+this.bytes_in_sequence),t+=this.bytes_in_sequence-1;continue}this.bytes_remaining=t+this.bytes_in_sequence-n.length,this.char_split_buffer.set(n.subarray(t)),t=n.length-1,this.state=r.STRING_INCOMPLETE_CHAR;continue}if(o>=i.$.SPACE){this.bufferedString.appendChar(o);continue}break;case r.STRING_INCOMPLETE_CHAR:this.char_split_buffer.set(n.subarray(t,t+this.bytes_remaining),this.bytes_in_sequence-this.bytes_remaining),this.bufferedString.appendBuf(this.char_split_buffer,0,this.bytes_in_sequence),t=this.bytes_remaining-1,this.state=r.STRING_DEFAULT;continue;case r.STRING_AFTER_BACKSLASH:const s=i.Q[o];if(s){this.bufferedString.appendChar(s),this.escapedCharsByteLength+=1,this.state=r.STRING_DEFAULT;continue}if(o===i.$.LATIN_SMALL_LETTER_U){this.unicode="",this.state=r.STRING_UNICODE_DIGIT_1;continue}break;case r.STRING_UNICODE_DIGIT_1:case r.STRING_UNICODE_DIGIT_2:case r.STRING_UNICODE_DIGIT_3:if(o>=i.$.DIGIT_ZERO&&o<=i.$.DIGIT_NINE||o>=i.$.LATIN_CAPITAL_LETTER_A&&o<=i.$.LATIN_CAPITAL_LETTER_F||o>=i.$.LATIN_SMALL_LETTER_A&&o<=i.$.LATIN_SMALL_LETTER_F){this.unicode+=String.fromCharCode(o),this.state+=1;continue}break;case r.STRING_UNICODE_DIGIT_4:if(o>=i.$.DIGIT_ZERO&&o<=i.$.DIGIT_NINE||o>=i.$.LATIN_CAPITAL_LETTER_A&&o<=i.$.LATIN_CAPITAL_LETTER_F||o>=i.$.LATIN_SMALL_LETTER_A&&o<=i.$.LATIN_SMALL_LETTER_F){const e=parseInt(this.unicode+String.fromCharCode(o),16);let t;if(void 0===this.highSurrogate){if(e>=55296&&e<=56319){this.highSurrogate=e,this.state=r.STRING_DEFAULT;continue}t=String.fromCharCode(e)}else t=e>=56320&&e<=57343?String.fromCharCode(this.highSurrogate,e):String.fromCharCode(this.highSurrogate),this.highSurrogate=void 0;const n=this.encoder.encode(t);this.bufferedString.appendBuf(n),this.escapedCharsByteLength+=6-n.byteLength,this.state=r.STRING_DEFAULT;continue}break;case r.NUMBER_AFTER_INITIAL_MINUS:if(o===i.$.DIGIT_ZERO){this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_INITIAL_ZERO;continue}if(o>=i.$.DIGIT_ONE&&o<=i.$.DIGIT_NINE){this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_INITIAL_NON_ZERO;continue}break;case r.NUMBER_AFTER_INITIAL_ZERO:if(o===i.$.FULL_STOP){this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_FULL_STOP;continue}if(o===i.$.LATIN_SMALL_LETTER_E||o===i.$.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_E;continue}t-=1,this.state=r.START,this.emitNumber();continue;case r.NUMBER_AFTER_INITIAL_NON_ZERO:if(o>=i.$.DIGIT_ZERO&&o<=i.$.DIGIT_NINE){this.bufferedNumber.appendChar(o);continue}if(o===i.$.FULL_STOP){this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_FULL_STOP;continue}if(o===i.$.LATIN_SMALL_LETTER_E||o===i.$.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_E;continue}t-=1,this.state=r.START,this.emitNumber();continue;case r.NUMBER_AFTER_FULL_STOP:if(o>=i.$.DIGIT_ZERO&&o<=i.$.DIGIT_NINE){this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_DECIMAL;continue}break;case r.NUMBER_AFTER_DECIMAL:if(o>=i.$.DIGIT_ZERO&&o<=i.$.DIGIT_NINE){this.bufferedNumber.appendChar(o);continue}if(o===i.$.LATIN_SMALL_LETTER_E||o===i.$.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_E;continue}t-=1,this.state=r.START,this.emitNumber();continue;case r.NUMBER_AFTER_E:if(o===i.$.PLUS_SIGN||o===i.$.HYPHEN_MINUS){this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_E_AND_SIGN;continue}case r.NUMBER_AFTER_E_AND_SIGN:if(o>=i.$.DIGIT_ZERO&&o<=i.$.DIGIT_NINE){this.bufferedNumber.appendChar(o),this.state=r.NUMBER_AFTER_E_AND_DIGIT;continue}break;case r.NUMBER_AFTER_E_AND_DIGIT:if(o>=i.$.DIGIT_ZERO&&o<=i.$.DIGIT_NINE){this.bufferedNumber.appendChar(o);continue}t-=1,this.state=r.START,this.emitNumber();continue;case r.TRUE1:if(o===i.$.LATIN_SMALL_LETTER_R){this.state=r.TRUE2;continue}break;case r.TRUE2:if(o===i.$.LATIN_SMALL_LETTER_U){this.state=r.TRUE3;continue}break;case r.TRUE3:if(o===i.$.LATIN_SMALL_LETTER_E){this.state=r.START,this.onToken({token:a.A.TRUE,value:!0,offset:this.offset}),this.offset+=3;continue}break;case r.FALSE1:if(o===i.$.LATIN_SMALL_LETTER_A){this.state=r.FALSE2;continue}break;case r.FALSE2:if(o===i.$.LATIN_SMALL_LETTER_L){this.state=r.FALSE3;continue}break;case r.FALSE3:if(o===i.$.LATIN_SMALL_LETTER_S){this.state=r.FALSE4;continue}break;case r.FALSE4:if(o===i.$.LATIN_SMALL_LETTER_E){this.state=r.START,this.onToken({token:a.A.FALSE,value:!1,offset:this.offset}),this.offset+=4;continue}break;case r.NULL1:if(o===i.$.LATIN_SMALL_LETTER_U){this.state=r.NULL2;continue}break;case r.NULL2:if(o===i.$.LATIN_SMALL_LETTER_L){this.state=r.NULL3;continue}break;case r.NULL3:if(o===i.$.LATIN_SMALL_LETTER_L){this.state=r.START,this.onToken({token:a.A.NULL,value:null,offset:this.offset}),this.offset+=3;continue}break;case r.SEPARATOR:if(this.separatorIndex+=1,!this.separatorBytes||o!==this.separatorBytes[this.separatorIndex])break;this.separatorIndex===this.separatorBytes.length-1&&(this.state=r.START,this.onToken({token:a.A.SEPARATOR,value:this.separator,offset:this.offset+this.separatorIndex}),this.separatorIndex=0);continue;case r.BOM:if(o===this.bom[this.bomIndex]){if(this.bomIndex===this.bom.length-1){this.state=r.START,this.bom=void 0,this.bomIndex=0;continue}this.bomIndex+=1;continue}break;case r.ENDED:if(o===i.$.SPACE||o===i.$.NEWLINE||o===i.$.CARRIAGE_RETURN||o===i.$.TAB)continue}throw new u('Unexpected "'.concat(String.fromCharCode(o),'" at position "').concat(t,'" in state ').concat(s(this.state)))}if(this.emitPartialTokens)switch(this.state){case r.TRUE1:case r.TRUE2:case r.TRUE3:this.onToken({token:a.A.TRUE,value:!0,offset:this.offset,partial:!0});break;case r.FALSE1:case r.FALSE2:case r.FALSE3:case r.FALSE4:this.onToken({token:a.A.FALSE,value:!1,offset:this.offset,partial:!0});break;case r.NULL1:case r.NULL2:case r.NULL3:this.onToken({token:a.A.NULL,value:null,offset:this.offset,partial:!0});break;case r.STRING_DEFAULT:{const e=this.bufferedString.toString();this.onToken({token:a.A.STRING,value:e,offset:this.offset,partial:!0});break}case r.NUMBER_AFTER_INITIAL_ZERO:case r.NUMBER_AFTER_INITIAL_NON_ZERO:case r.NUMBER_AFTER_DECIMAL:case r.NUMBER_AFTER_E_AND_DIGIT:try{this.onToken({token:a.A.NUMBER,value:this.parseNumber(this.bufferedNumber.toString()),offset:this.offset,partial:!0})}catch(t){}}}catch(n){this.error(n)}}emitNumber(){this.onToken({token:a.A.NUMBER,value:this.parseNumber(this.bufferedNumber.toString()),offset:this.offset}),this.offset+=this.bufferedNumber.byteLength-1}parseNumber(e){return Number(e)}error(e){this.state!==r.ENDED&&(this.state=r.ERROR),this.onError(e)}end(){switch(this.state){case r.NUMBER_AFTER_INITIAL_ZERO:case r.NUMBER_AFTER_INITIAL_NON_ZERO:case r.NUMBER_AFTER_DECIMAL:case r.NUMBER_AFTER_E_AND_DIGIT:this.state=r.ENDED,this.emitNumber(),this.onEnd();break;case r.BOM_OR_START:case r.START:case r.ERROR:case r.SEPARATOR:this.state=r.ENDED,this.onEnd();break;default:this.error(new u("Tokenizer ended in the middle of a token (state: ".concat(s(this.state),"). Either not all the data was received or the data was invalid.")))}}onToken(e){throw new u('Can\'t emit tokens before the "onToken" callback has been set up.')}onError(e){throw e}onEnd(){}}},4440(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r.A,private_createBreakpoints:()=>i.A,unstable_applyStyles:()=>o.A});var r=n(2979),i=n(9428),o=n(1006)},4539(e,t,n){"use strict";n.d(t,{A:()=>i});var r=n(6920);const i=e=>(0,r.A)(e)&&"classes"!==e},4651(e,t,n){"use strict";e.exports=n(1508)},4762(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M3 9v6h4l5 5V4L7 9zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02M14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77"}),"VolumeUp")},4774(e,t,n){"use strict";var r;n.d(t,{i:()=>s,s:()=>a});var i=n(8661),o=!!(r||(r=n.t(i,2))).useInsertionEffect&&(r||(r=n.t(i,2))).useInsertionEffect,a=o||function(e){return e()},s=o||i.useLayoutEffect},4837(e){e.exports=function(e){return null!=e&&null!=e.constructor&&"function"===typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},4849(e,t,n){"use strict";function r(){for(var e=arguments.length,t=new Array(e),n=0;nnull==t?e:function(){for(var n=arguments.length,r=new Array(n),i=0;i{})}n.d(t,{A:()=>r})},4858(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;ty,Az:()=>v,HP:()=>d,Sn:()=>h,Sv:()=>m,Tg:()=>b,tN:()=>p,yb:()=>f});var r=n(4107),i=n(1442),o=n(1152),a=n(847),s=n(7877),l=n(1825),u=n(1270),c=n(9385);const d=()=>{let e="";return function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return function*(){e+=t,e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n");let n=e.indexOf("\n\n");for(;-1!==n;){const t=e.slice(0,n);e=e.slice(n+2);const r=[];for(const e of t.split("\n")){if(e.startsWith(":"))continue;if(!e.startsWith("data:"))continue;let t=e.slice(5);t.startsWith(" ")&&(t=t.slice(1)),r.push(t)}if(r.length){const e=r.join("\n");"[DONE]"!==e.trim()&&(yield e)}n=e.indexOf("\n\n")}}()}},h=()=>{const e=[];let t=null,n=!1,r=null;return{push:n=>{e.push(n),t&&(t(),t=null)},finish:()=>{n=!0,t&&(t(),t=null)},error:e=>{r=e,n=!0,t&&(t(),t=null)},iterate:()=>(0,o.A)(function*(){const o=e=>{t=e};for(;!n||e.length>0;)e.length>0?yield e.shift():n||(yield(0,i.A)(new Promise(o)));if(r)throw r})()}};function p(e,t){var n,r,i;switch(t){case s.C3L:case s.KBl:case s.rUY:case s.FsV:case s.F16:case s.EjO:case s.NQu:case s.cbe:case s.kYm:case s.dGW:case s.mmp:case s.edy:case s.lbn:return(null===(n=e.choices)||void 0===n||null===(r=n[0])||void 0===r||null===(i=r.delta)||void 0===i?void 0:i.content)||"";case s.lLy:{var o,a,l,u,c;if("error"===e.event_type){var d;const t=new Error((null===(d=e.error)||void 0===d?void 0:d.message)||"Gemini interaction stream failed");throw t.isAIStreamTerminal=!0,t}if("interaction.status_update"===e.event_type&&["failed","cancelled","incomplete","budget_exceeded"].includes(e.status)){const t=new Error("Gemini interaction stream ended with status: ".concat(e.status));throw t.isAIStreamTerminal=!0,t}if(e.event_type)return"step.delta"===e.event_type&&"text"===(null===(c=e.delta)||void 0===c?void 0:c.type)&&e.delta.text||"";const t=null===(o=e.candidates)||void 0===o||null===(a=o[0])||void 0===a||null===(l=a.content)||void 0===l?void 0:l.parts;return(null===(u=Array.isArray(t)?t.find(e=>!e.thought):void 0)||void 0===u?void 0:u.text)||""}case s.EsI:var h;return"content_block_delta"===e.type&&(null===(h=e.delta)||void 0===h?void 0:h.text)||"";default:return""}}function*f(e,t){if(!e)return;const n=(0,l.Qw)(e);if(n.length>0)for(const{id:r,translation:i}of n)t.has(r)||(t.add(r),yield{id:r,translation:i});else for(const{id:r,translation:i}of(0,l.Xq)(e,{requireCompleteLine:!0}))t.has(r)||(t.add(r),yield{id:r,translation:i})}function m(){const e=[],t=new a.oj({paths:["$.translations.*","$.*"],keepStack:!1});return t.onValue=t=>{let{value:n}=t;const r=(0,l.ek)(n,NaN);r&&e.push(r)},t.onError=()=>{},{*write(n){try{t.write(n)}catch(r){}for(;e.length>0;)yield e.shift()},end(){try{t.end()}catch(e){}}}}const g=function(e){var t,n,i,o,a,s,l,u;let c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],d=arguments.length>2?arguments[2]:void 0;const h=Number(null!==(t=null===e||void 0===e?void 0:e.s)&&void 0!==t?t:null===e||void 0===e?void 0:e.start_id),p=Number(null!==(n=null===e||void 0===e?void 0:e.e)&&void 0!==n?n:null===e||void 0===e?void 0:e.end_id);if(!Number.isInteger(h)||!Number.isInteger(p)||0===c.length)return null;const f=Math.max(0,Math.min(h,c.length-1)),m=Math.max(f,Math.min(p,c.length-1)),g=String(null!==(i=null!==(o=e.o)&&void 0!==o?o:e.original)&&void 0!==i?i:""),v=null===d||void 0===d?void 0:d.realign(h,p,g);return(0,r.A)({start:c[null!==(a=null===v||void 0===v?void 0:v.startIdx)&&void 0!==a?a:f].start,end:c[null!==(s=null===v||void 0===v?void 0:v.endIdx)&&void 0!==s?s:m].end,text:g,translation:String(null!==(l=null!==(u=e.t)&&void 0!==u?u:e.translation)&&void 0!==l?l:""),_si:h,_ei:p},v&&{_alignedSi:v.startIdx,_alignedEi:v.endIdx})};function v(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{fromLang:t="auto"}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="",r=!1,i=0;const o=new Set,a=(0,u.n)(e);let s=null,l=0,d=!1;const h=()=>{if(r)return;const e=n.search(/[[{]/);-1!==e?(n=n.slice(e),r=!0,i=0):n=n.slice(-20)},p=()=>{const e=[];let t=0,r=-1,o=!1,a=!1,s=-1;for(let l=i;l{const r=[];for(const u of n)try{if(d)break;const n=JSON.parse(u),i=(0,c.Tt)(n)?"index-v1":"boundary";if(s||(s=i),s!==i){d=!0;break}const h="boundary"===s?(0,c.Ir)(n,e,l,t):g(n,e,a);if(!h){if("boundary"===s){d=!0;break}continue}"boundary"===s&&(l=h._ei+1);const p="".concat(h._si,":").concat(h._ei);if(o.has(p))continue;o.add(p),r.push(h)}catch(i){}return r};return{write(){return n+=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",h(),r?f(p()):[]},end:()=>(h(),r?f(p()):[])}}function y(e){const t=e.trim(),n=t.search(/[{[]/),r=t.search(/<(t|item|seg)\s/i),i=t.search(/^\d+\s*\|/m);if(-1===n&&-1===r&&-1===i)return{isJson:!1,detected:!1};const o=[{type:"json",pos:n},{type:"xml",pos:r},{type:"line",pos:i}].filter(e=>-1!==e.pos);if(0===o.length)return{isJson:!1,detected:!1};return{isJson:"json"===o.reduce((e,t)=>e.pos{const t=e.trim();return-1!==t.search(/[{[]/)?"json":-1!==t.search(/<(t|item|seg)\s/i)?"xml":-1!==t.search(/^\d+\s*\|/m)?"line":null})(t),!e))return[];switch(e){case"xml":return(e=>{const t=[],n=/<(t|item|seg)\s+id="(\d+)"(?:\s[^>]*)?>([\s\S]*?)<\/\1>/gi;let r;for(;null!==(r=n.exec(e));){const e=parseInt(r[2],10);t.push({id:e,partialText:r[3],isComplete:!0})}let i=e;i=i.replace(/<(t|item|seg)\s+id="\d+"(?:\s[^>]*)?>[\s\S]*?<\/\1>/gi,"");const o=i.match(/<(t|item|seg)\s+id="(\d+)"(?:\s[^>]*)?>([^]*)$/);if(o){const e=parseInt(o[2],10),n=o[3].replace(/<\/[^>]*$/,"");t.push({id:e,partialText:n,isComplete:!1})}return t})(t);case"line":return(e=>{const t=[],n=e.split("\n");for(let r=0;r/gi,"\n"),a=re,getBuffer:()=>t}}},5058(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M12 17c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m6-9h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6h1.9c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m0 12H6V10h12z"}),"LockOpen")},5089(e,t,n){"use strict";e.exports=n(7811)},5227(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(6175).A},5261(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M10.85 12.65h2.3L12 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zM14.3 16l-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9z"}),"BrightnessAuto")},5323(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-7.53 12L9 10.5l1.4-1.41 2.07 2.08L17.6 6 19 7.41zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4z"}),"LibraryAddCheck")},5326(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9c0-.46-.04-.92-.1-1.36-.98 1.37-2.58 2.26-4.4 2.26-2.98 0-5.4-2.42-5.4-5.4 0-1.81.89-3.42 2.26-4.4-.44-.06-.9-.1-1.36-.1"}),"DarkMode")},5421(e,t,n){"use strict";n.d(t,{A:()=>i});var r=n(4089);function i(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Mui";const i={};return t.forEach(t=>{i[t]=(0,r.Ay)(e,t,n)}),i}},5449(e,t,n){"use strict";n.d(t,{A:()=>ie});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?c(A,--y):0,g--,10===b&&(g=1,m--),b}function S(){return b=y2||T(b)>3?"":" "}function L(e,t){for(;--t&&S()&&!(b<48||b>102||b>57&&b<65||b>70&&b<97););return _(e,C()+(t<6&&32==E()&&32==S()))}function O(e){for(;S();)switch(b){case e:return y;case 34:case 39:34!==e&&39!==e&&O(b);break;case 40:41===e&&O(e);break;case 92:S()}return y}function N(e,t){for(;S()&&e+b!==57&&(e+b!==84||47!==E()););return"/*"+_(t,y-1)+"*"+o(47===e?e:S())}function z(e){for(;!T(E());)S();return _(e,y)}var j="-ms-",R="-moz-",M="-webkit-",B="comm",W="rule",U="decl",H="@keyframes";function V(e,t){for(var n="",r=p(e),i=0;i0&&h(R)-v&&f(b>32?X(R+";",r,n,v-1):X(l(R," ","")+";",r,n,v-2),p);break;case 59:R+=";";default:if(f(j=$(R,t,n,m,g,i,d,D,P=[],O=[],v),a),123===T)if(0===g)q(R,t,j,j,P,a,v,d,O);else switch(99===y&&110===c(R,3)?100:y){case 100:case 108:case 109:case 115:q(e,j,j,r&&f($(e,j,j,0,0,i,d,D,i,P=[],v),O),i,O,v,d,r?P:O);break;default:q(R,j,j,j,[""],O,0,d,O)}}m=g=b=0,x=_=1,D=R="",v=s;break;case 58:v=1+h(R),b=A;default:if(x<1)if(123==T)--x;else if(125==T&&0==x++&&125==k())continue;switch(R+=o(T),T*x){case 38:_=g>0?1:(R+="\f",-1);break;case 44:d[m++]=(h(R)-1)*_,_=1;break;case 64:45===E()&&(R+=I(S())),y=E(),g=v=h(D=R+=z(C())),T++;break;case 45:45===A&&2==h(R)&&(x=0)}}return a}function $(e,t,n,r,o,a,u,c,h,f,m){for(var g=o-1,v=0===o?a:[""],y=p(v),b=0,A=0,w=0;b0?v[k]+" "+S:l(S,/&\f/g,v[k])))&&(h[w++]=E);return x(e,t,n,0===o?W:c,h,f,m)}function Y(e,t,n){return x(e,t,n,B,o(b),d(e,2,-2),0)}function X(e,t,n,r){return x(e,t,n,U,d(e,0,r),d(e,r+1,-1),r)}var J=function(e,t,n){for(var r=0,i=0;r=i,i=E(),38===r&&12===i&&(t[n]=1),!T(i);)S();return _(e,y)},Q=function(e,t){return P(function(e,t){var n=-1,r=44;do{switch(T(r)){case 0:38===r&&12===E()&&(t[n]=1),e[n]+=J(y-1,t,n);break;case 2:e[n]+=I(r);break;case 4:if(44===r){e[++n]=58===E()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=o(r)}}while(r=S());return e}(D(e),t))},Z=new WeakMap,ee=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||Z.get(n))&&!r){Z.set(e,!0);for(var i=[],o=Q(t,i),a=n.props,s=0,l=0;s6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return l(e,/(.+:)(.+)-([^]+)/,"$1"+M+"$2-$3$1"+R+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~u(e,"stretch")?ne(l(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,h(e)-3-(~u(e,"!important")&&10))){case 107:return l(e,":",":"+M)+e;case 101:return l(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+M+(45===c(e,14)?"inline-":"")+"box$3$1"+M+"$2$3$1"+j+"$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return M+e+j+l(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return M+e+j+l(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return M+e+j+l(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return M+e+j+e+e}return e}var re=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case U:e.return=ne(e.value,e.length);break;case H:return V([w(e,{value:l(e.value,"@","@"+M)})],r);case W:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return V([w(e,{props:[l(t,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return V([w(e,{props:[l(t,/:(plac\w+)/,":"+M+"input-$1")]}),w(e,{props:[l(t,/:(plac\w+)/,":-moz-$1")]}),w(e,{props:[l(t,/:(plac\w+)/,j+"input-$1")]})],r)}return""})}}],ie=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var i,o,a=e.stylisPlugins||re,s={},l=[];i=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;nr});const r=n(6267).A},5482(e,t,n){"use strict";function r(e,t){this.v=e,this.k=t}n.d(t,{A:()=>r})},5493(e,t,n){"use strict";n.d(t,{$1:()=>Ee,$K:()=>i,$Q:()=>ye,An:()=>Y,Bi:()=>Z,C3:()=>ee,EE:()=>Ce,Ej:()=>V,Es:()=>re,F$:()=>D,F1:()=>H,FS:()=>M,Fs:()=>U,G8:()=>de,GD:()=>_,GY:()=>E,HH:()=>ce,Im:()=>pe,JI:()=>O,JW:()=>c,KB:()=>B,KK:()=>C,L3:()=>f,NQ:()=>G,O0:()=>L,PP:()=>o,Qf:()=>h,S6:()=>S,SQ:()=>I,U$:()=>Fe,UF:()=>be,WT:()=>u,Wd:()=>m,Ww:()=>De,X6:()=>g,Ym:()=>y,Z2:()=>ve,_T:()=>ze,ad:()=>Te,b9:()=>k,bC:()=>z,bN:()=>ie,bq:()=>s,c0:()=>$,cb:()=>K,dG:()=>ae,dy:()=>T,e7:()=>q,eA:()=>xe,ed:()=>oe,fD:()=>p,fF:()=>Q,fk:()=>Ie,fq:()=>le,h8:()=>N,i8:()=>fe,iV:()=>Re,im:()=>Pe,jg:()=>l,jy:()=>a,k0:()=>ke,kX:()=>R,kY:()=>ne,lL:()=>te,lb:()=>X,lo:()=>_e,mS:()=>Se,mm:()=>se,q7:()=>P,rU:()=>W,s1:()=>F,sN:()=>he,sn:()=>A,to:()=>me,ul:()=>j,vH:()=>ge,w6:()=>d,xN:()=>J,xf:()=>w,xh:()=>x,yD:()=>b,zJ:()=>v});var r=n(4107);const i=30,o=10,a=100,s=400,l=20,u=1e4,c=1,d=3,h="{{from}}",p="{{to}}",f="{{fromLang}}",m="{{toLang}}",g="{{text}}",v="{{tone}}",y="{{title}}",b="{{description}}",A="{{summary}}",x="{{context}}",w="{{key}}",k="{{model}}",S="{{glossary}}",E="https://generativelanguage.googleapis.com/v1beta/models/".concat(k,":generateContent"),C="https://generativelanguage.googleapis.com/v1/interactions",_="Bing",T="Youdao",D=[_,T],P=new Set(D),I="Baidu",F="Youdao",L=[I,F],O=new Set(L),N="BuiltinAI",z="Google",j="Google2",R="Microsoft",M="AzureAI",B="DeepSeek",W="OpenCodeGo",U="SiliconFlow",H="XiaomiMimo",V="AliyunBailian",G="Cerebras",K="Zai",q="DeepL",$="DeepLX",Y="DeepLFree",X="ePhoneAI",J="Baidu",Q="Tencent",Z="Volcengine",ee="OpenAI",te="Gemini",ne="Gemini2",re="Claude",ie="CloudflareAI",oe="Ollama",ae="OpenRouter",se="OrcaRouter",le="Custom",ue=[N,z,j,M,B,W,U,H,V,G,K,Q,Z,q,Y,$,X,ee,te,ne,re,ie,oe,ae,se,le],ce=[N,z,R,J,Q],de=new Set(ce),he={builtin:new Set(ue),machine:new Set([R,Y,J,Q,Z]),ai:new Set([X,ee,B,W,U,H,V,G,K,te,ne,re,oe,ae,se,le]),mulkeys:new Set([M,B,W,U,H,V,G,K,q,ee,te,ne,re,ie,oe,ae,se,X,le]),batch:new Set([M,B,W,U,H,V,G,K,j,R,Q,q,ee,te,ne,re,oe,ae,se,X,le]),context:new Set([B,W,U,H,V,G,K,ee,te,ne,re,oe,ae,se,X,le]),stream:new Set([B,W,U,H,V,G,K,ee,te,ne,re,oe,ae,se,X]),sponsors:new Set([X]),darkIcon:new Set([U,H,X,K,q,Y,$,ee,oe,ae])},pe={[B]:{type:"deepseek",efforts:[{value:"max",label:"Max"},{value:"high",label:"High"}]},[W]:{type:"deepseek",efforts:[{value:"max",label:"Max"},{value:"high",label:"High"}]},[U]:{type:"siliconflow",efforts:[{value:"max",label:"Max (32768)"},{value:"high",label:"High (16384)"},{value:"medium",label:"Medium (8192)"},{value:"low",label:"Low (4096)"},{value:"minimal",label:"Minimal (2048)"}]},[H]:{type:"deepseek",efforts:null},[V]:{type:"aliyunbailian",efforts:null},[G]:{type:"cerebras",efforts:[{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"}]},[K]:{type:"deepseek",efforts:null},[X]:{type:"openai",efforts:[{value:"xhigh",label:"X-High"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"},{value:"minimal",label:"Minimal"}]},[ee]:{type:"openai",efforts:[{value:"xhigh",label:"X-High"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"},{value:"minimal",label:"Minimal"}]},[te]:{type:"gemini",efforts:[{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"},{value:"minimal",label:"Minimal"}]},[ne]:{type:"openai",efforts:[{value:"xhigh",label:"X-High"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"},{value:"minimal",label:"Minimal"}]},[re]:{type:"claude",disableSupported:!1,efforts:[{value:"max",label:"Max"},{value:"xhigh",label:"X-High"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"}]},[oe]:{type:"cerebras",efforts:[{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"}]},[ae]:{type:"openrouter",disableSupported:!1,efforts:[{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"},{value:"minimal",label:"Minimal"}]},[se]:{type:"openai",efforts:[{value:"xhigh",label:"X-High"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"}]}},fe=[["en","English - English"],["zh-CN","Simplified Chinese - \u7b80\u4f53\u4e2d\u6587"],["zh-TW","Traditional Chinese - \u7e41\u9ad4\u4e2d\u6587"],["ar","Arabic - \u0627\u0644\u0639\u0631\u0628\u064a\u0629"],["bg","Bulgarian - \u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"],["ca","Catalan - Catal\xe0"],["hr","Croatian - Hrvatski"],["cs","Czech - \u010ce\u0161tina"],["da","Danish - Dansk"],["nl","Dutch - Nederlands"],["fa","Persian - \u0641\u0627\u0631\u0633\u06cc"],["fi","Finnish - Suomi"],["fr","French - Fran\xe7ais"],["de","German - Deutsch"],["el","Greek - \u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"],["hi","Hindi - \u0939\u093f\u0928\u094d\u0926\u0940"],["hu","Hungarian - Magyar"],["id","Indonesian - Indonesia"],["it","Italian - Italiano"],["ja","Japanese - \u65e5\u672c\u8a9e"],["ko","Korean - \ud55c\uad6d\uc5b4"],["ms","Malay - Melayu"],["mt","Maltese - Malti"],["nb","Norwegian - Norsk Bokm\xe5l"],["pl","Polish - Polski"],["pt","Portuguese - Portugu\xeas"],["ro","Romanian - Rom\xe2n\u0103"],["ru","Russian - \u0420\u0443\u0441\u0441\u043a\u0438\u0439"],["sk","Slovak - Sloven\u010dina"],["sl","Slovenian - Sloven\u0161\u010dina"],["es","Spanish - Espa\xf1ol"],["sv","Swedish - Svenska"],["ta","Tamil - \u0ba4\u0bae\u0bbf\u0bb4\u0bcd"],["te","Telugu - \u0c24\u0c46\u0c32\u0c41\u0c17\u0c41"],["th","Thai - \u0e44\u0e17\u0e22"],["tr","Turkish - T\xfcrk\xe7e"],["uk","Ukrainian - \u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"],["vi","Vietnamese - Ti\u1ebfng Vi\u1ec7t"]],me=fe.map(e=>{let[t]=e;return t}),ge=[["auto","AutoDetect - AutoDetect"],...fe],ve=new Map(fe),ye=fe.map(e=>{let[t,n]=e;return[t,n.split(" - ").reverse().join(" - ")]}),be=ge.map(e=>{let[t,n]=e;return[t,n.split(" - ").reverse().join(" - ")]}),Ae=new Map(ge.map(e=>{let[t,n]=e;return[t,n.split(" - ")[0]]})),xe=new Map(ge.map(e=>{let[t]=e;return[t,t]})),we=new Map(ge.map(e=>{let[t]=e;return[t,t.toUpperCase()]})),ke={[N]:new Map([...xe,["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]]),[z]:xe,[j]:xe,[R]:new Map([...xe,["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]]),[M]:new Map([...xe,["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]]),[q]:new Map([...we,["auto",""],["zh-CN","ZH"],["zh-TW","ZH"]]),[Y]:new Map([...we,["auto","auto"],["zh-CN","ZH"],["zh-TW","ZH"]]),[$]:new Map([...we,["auto","auto"],["zh-CN","ZH"],["zh-TW","ZH"]]),[B]:Ae,[W]:Ae,[U]:Ae,[H]:Ae,[V]:Ae,[G]:Ae,[K]:Ae,[Z]:new Map([...xe,["auto","auto"],["zh-CN","zh"],["zh-TW","zh-Hant"]]),[J]:new Map([...xe,["zh-CN","zh"],["zh-TW","cht"],["ar","ara"],["bg","bul"],["ca","cat"],["hr","hrv"],["da","dan"],["fi","fin"],["fr","fra"],["hi","mai"],["ja","jp"],["ko","kor"],["ms","may"],["mt","mlt"],["nb","nor"],["ro","rom"],["ru","ru"],["sl","slo"],["es","spa"],["sv","swe"],["ta","tam"],["te","tel"],["uk","ukr"],["vi","vie"]]),[Q]:new Map([["auto","auto"],["zh-CN","zh"],["zh-TW","zh"],["en","en"],["ar","ar"],["de","de"],["ru","ru"],["fr","fr"],["fi","fil"],["ko","ko"],["ms","ms"],["pt","pt"],["ja","ja"],["th","th"],["tr","tr"],["es","es"],["it","it"],["hi","hi"],["id","id"],["vi","vi"]]),[X]:Ae,[ee]:Ae,[te]:Ae,[ne]:Ae,[re]:Ae,[oe]:Ae,[ae]:Ae,[se]:Ae,[ie]:new Map([...xe,["auto","en"],["zh-CN","zh"],["zh-TW","zh"]]),[le]:Ae},Se={};Object.entries(ke).forEach(e=>{let[t,n]=e;Se[t]=(e=>new Map(Array.from(e.entries()).map(e=>{let[t,n]=e;return""===n?["auto","auto"]:"zh"===n||"ZH"===n?[n,"zh-CN"]:[n,t]})))(n)});const Ee="You are a professional, authentic machine translation engine.",Ce="# Context\nTitle: ".concat(y,"\nDescription: ").concat(b,"\nSummary: ").concat(A,"\nTone: ").concat(v,"\n\n# Glossary:\n").concat(S,"\n\n# Task\nTranslate the Source Text below to ").concat(p,".\n1. Use the Context to ensure accuracy.\n2. Adapt the wording to match the specified Tone.\n3. Output ONLY the translated text. No markdown, no explanations.\n\nSource Text: ").concat(g,"\n\nTranslated Text:"),_e='Act as a translation API. Output a single raw JSON object only. No extra text or fences.\n\nInput:\n{"targetLanguage":"","title":"","description":"","summary":"","segments":[{"id":1,"text":"..."}],"glossary":{"sourceTerm":"targetTerm"},"tone":""}\n\nOutput:\n{"translations":[{"id":1,"text":"...","sourceLanguage":""}]}\n\nRules:\n1. Use title/description for context only; do not output them.\n2. Keep id, order, and count of segments.\n3. Preserve whitespace, HTML entities, and all HTML-like tags (e.g., , ). Translate inner text only.\n4. Highest priority: Follow \'glossary\'. Use value for translation; if value is "", keep the key.\n5. Do not translate: content in ,
, text enclosed in backticks, or placeholders like {1}, {{1}}, [1], [[1]].\n6.  Apply the specified tone to the translation.\n7.  Detect sourceLanguage for each segment.\n8.  Return empty or unchanged inputs as is.\n\nExample:\nInput: {"targetLanguage":"zh-CN","segments":[{"id":1,"text":"A React component."}],"glossary":{"component":"\u7ec4\u4ef6","React":""}}\nOutput: {"translations":[{"id":1,"text":"\u4e00\u4e2aReact\u7ec4\u4ef6","sourceLanguage":"en"}]}\n\nFail-safe: On any error, return {"translations":[]}.',Te='Act as a translation API. Output raw XML-like format only. No Markdown fences (xml). No conversational filler.\n\nInput:\n{"targetLanguage":"","title":"","description":"","summary":"","segments":[{"id":1,"text":"..."}],"glossary":{"sourceTerm":"targetTerm"},"tone":""}\n\nOutput Format:\n\n    Translated text content...\n    Translated text content...\n\n\nRules:\n1.  **Strict Format**: Output ONLY the  element and its children. Do not include "xml" version declarations or markdown code blocks.\n2.  **Structure**: Maintain the exact "id" from the input in the "id" attribute. Detect the source language for the "sourceLanguage" attribute.\n3.  **HTML & Whitespace**: Preserve all HTML tags (e.g., , , 
) and whitespace exactly as they appear in the structure. Only translate the text content inside them.\n4. **Glossary**: Highest priority. Use the glossary value for translation. If the value is "", keep the source term as is.\n5. **Do Not Translate**: Content inside ,
, text in backticks ("code"), and placeholders like {1}, {{1}}, [1], [[1]].\n6.  **Context**: Use the "title" and "description" fields to understand the context for better translation accuracy, but do not output them.\n7.  **Tone**: Apply the specified "tone" (formal/casual).\n\nExample:\nInput:\n{"targetLanguage":"zh-CN","segments":[{"id":0,"text":"Hello World!"}],"glossary":{"World":"\u4e16\u754c"},"tone":"formal"}\n\nOutput:\n\n    \u4f60\u597d \u4e16\u754c\uff01\n',De='Act as a translation API. Output raw text lines in "ID | Text" format. No Markdown. No conversational filler.\n\nInput:\n{"targetLanguage":"","title":"","description":"","summary":"","segments":[{"id":1,"text":"..."}],"glossary":{"sourceTerm":"targetTerm"},"tone":""}\n\nOutput Format:\n | \n | \n...\n\nRules:\n1.  **Strict Format**: Output exactly one line per segment using the format: "{id} | {translated_text}".\n2.  **ID Mapping**: You MUST copy the exact "id" from the input segment to the output line.\n3.  **Newline Handling**: If the translated text contains a newline, replace it with the HTML tag "
" to ensure it stays on a single line.\n4. **Separator**: Use the pipe symbol " | " strictly to separate the ID and the text.\n5. **Context**: Use title/description for context only; do not output them.\n6. **HTML/Tags**: Preserve whitespace, HTML entities, and all HTML-like tags (e.g., , ). Translate inner text only.\n7. **Glossary**: Highest priority. Follow \'glossary\'. Use value for translation; if value is "", keep the key.\n8. **Do Not Translate**: content in ,
, text enclosed in backticks, or placeholders like {1}, {{1}}, [1].\n9.  **Tone**: Apply the specified tone.\n\nExample:\nInput: {"targetLanguage":"zh-CN","segments":[{"id":0,"text":"Hello."},{"id":1,"text":"Line 1\nLine 2"}],"glossary":{}}\nOutput:\n0 | \u4f60\u597d\u3002\n1 | \u7b2c\u4e00\u884c
\u7b2c\u4e8c\u884c\n\nFail-safe: On error, return "{id} | {original_text}" line by line.',Pe="# Role\n\u4f60\u662f\u4e00\u4f4d\u7cbe\u901a\u5bf9\u6bd4\u8bed\u8a00\u5b66\u3001\u73b0\u4ee3\u8bed\u6599\u5e93\u8bed\u8a00\u5b66\u7684\u4e13\u5bb6\u7ea7\u8bcd\u5178\u7f16\u7e82\u8005\u3002\u8bf7\u4e3a\u7528\u6237\u8f93\u5165\u7684\u6587\u672c\u63d0\u4f9b\u517c\u5177\u5b66\u672f\u4e25\u8c28\u6027\u4e0e\u89c6\u89c9\u4f18\u96c5\u611f\u7684\u5168\u65b9\u4f4d\u89e3\u6790\u6216\u9ad8\u8d28\u91cf\u7ffb\u8bd1\u3002\n\n# Execution Rules\n1. **\u667a\u80fd\u5206\u6d41\u673a\u5236\uff08CRITICAL\uff09**\uff1a\u8bf7\u4e25\u683c\u57fa\u4e8e\u4e0b\u65b9 `[Target / \u76ee\u6807\u6587\u672c]` \u7684\u957f\u5ea6\u548c\u6027\u8d28\u51b3\u5b9a\u5de5\u4f5c\u6a21\u5f0f\uff1a\n - **\u8bcd\u5178\u6a21\u5f0f**\uff1a\u4ec5\u5f53 `[Target / \u76ee\u6807\u6587\u672c]` \u660e\u786e\u662f**\u5355\u4e2a\u8bcd\u3001\u6210\u8bed\uff0c\u6216\u4e0d\u8d85\u8fc7 3 \u4e2a\u8bcd\u7684\u56fa\u5b9a\u642d\u914d**\u65f6\uff0c\u624d\u4e25\u683c\u6267\u884c\u4e0b\u65b9\u7684\u3010\u8bcd\u5178\u8f93\u51fa\u683c\u5f0f\u3011\u3002\n - **\u7eaf\u7ffb\u8bd1\u6a21\u5f0f**\uff1a\u5b8c\u6574\u53e5\u5b50\u3001\u5206\u53e5\u3001\u81ea\u7136\u8bed\u8a00\u77ed\u8bed\u3001\u6bb5\u843d\u3001\u957f\u6587\u672c\uff0c\u6216**\u8d85\u8fc7 3 \u4e2a\u8bcd\u7684\u8fde\u7eed\u6587\u672c**\uff0c\u4e00\u5f8b\u8fdb\u5165\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3002\u65e0\u6cd5\u786e\u5b9a\u65f6\uff0c\u4f18\u5148\u8fdb\u5165\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3002\n2. **\u8bed\u5883\u4f18\u5148\u539f\u5219**\uff1a\u5728\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u4e0b\uff0c\u82e5 `[Context / \u4e0a\u4e0b\u6587]` \u4e2d\u5b58\u5728\u6709\u6548\u4fe1\u606f\uff0c\u8bf7\u4f18\u5148\u9501\u5b9a\u8be5\u8bcd\u5728\u7279\u5b9a\u8bed\u5883\u4e0b\u7684\u4e49\u9879\uff0c\u5e76\u5c06\u5176\u7f6e\u4e8e\u91ca\u4e49\u9996\u4f4d\u3002\n3. **\u683c\u5f0f\u6b7b\u7ebf**\uff1a\u65e0\u8bba\u8fdb\u5165\u54ea\u79cd\u6a21\u5f0f\uff0c\u4e25\u683c\u6309\u5bf9\u5e94\u683c\u5f0f\u8f93\u51fa\uff0c\u7981\u6b62\u8f93\u51fa\u4efb\u4f55\u524d\u5bfc\u5bd2\u6684\uff08\u5982\u201c\u597d\u7684\u201d\u3001\u201c\u4e3a\u60a8\u89e3\u6790\u201d\uff09\u6216\u5c3e\u90e8\u603b\u7ed3\u3002\n\n---\n\n# Pure Translation Output Contract (\u4ec5\u9650\u3010\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3011\u6267\u884c)\n\n\u4f60\u7684\u6574\u6761\u56de\u590d\u5fc5\u987b\u4e14\u53ea\u80fd\u662f\u76ee\u6807\u8bed\u8a00\u8bd1\u6587\u6587\u672c\u672c\u8eab\u3002\u4e0d\u5f97\u6dfb\u52a0\u4efb\u4f55\u5b57\u7b26\u3001\u683c\u5f0f\u6216\u8bf4\u660e\uff1a\n- \u4e0d\u8f93\u51fa\u539f\u6587\u3001\u53cc\u8bed\u5bf9\u7167\u3001\u6807\u9898\u3001\u6807\u7b7e\u3001\u8bed\u8a00\u540d\u79f0\u3001\u5f15\u53f7\u6216 Markdown\u3002\n- \u4e0d\u8f93\u51fa\u201c\u8bd1\u6587\uff1a\u201d\u201c\u7ffb\u8bd1\u5982\u4e0b\uff1a\u201d\u7b49\u524d\u7f00\uff0c\u4e5f\u4e0d\u8f93\u51fa\u89e3\u91ca\u3001\u97f3\u6807\u3001\u8bcd\u6e90\u3001\u642d\u914d\u3001\u4f8b\u53e5\u6216\u81f4\u8c22\u3002\n- \u539f\u6587\u662f\u5355\u6bb5\u65f6\uff0c\u8bd1\u6587\u4e5f\u53ea\u8f93\u51fa\u5355\u6bb5\uff1b\u4ec5\u5728\u539f\u6587\u6709\u591a\u4e2a\u6bb5\u843d\u65f6\u4fdd\u7559\u76f8\u5e94\u5206\u6bb5\u3002\n\n\u793a\u4f8b\uff1a\n- \u8f93\u5165\uff1aThe library for web and native user interfaces\n- \u6b63\u786e\u8f93\u51fa\uff1a\u7528\u4e8e Web \u548c\u539f\u751f\u7528\u6237\u754c\u9762\u7684\u5e93\n\n# Output Format (\u4ec5\u9650\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u6267\u884c)\n\n## \u8bcd\u6761\uff1a[\u539f\u8bcd/\u77ed\u8bed]\n> [\u5982\u679c\u8be5\u8bcd\u5728 `[Context]` \u4e2d\u53d1\u751f\u4e86\u65f6\u6001/\u590d\u6570/\u5c48\u6298\u53d8\u5f62\uff0c\u5728\u6b64\u5904\u62ec\u53f7\u5185\u6ce8\u660e\u5176\u539f\u578b\uff0c\u4f8b\u5982\uff1a(\u539f\u578b: Go)]\n\n### 1. \u57fa\u7840\u5f62\u6001\u4e0e\u97f3\u6807 (Essentials)\n- **\u53d1\u97f3\u6807\u6ce8**\uff1a\ud83c\uddfa\ud83c\uddf8 [\u7f8e\u5f0f\u97f3\u6807] \uff5c uk [\u82f1\u5f0f\u97f3\u6807] \uff08*\u82e5\u975e\u82f1\u8bed\u8bcd\u6c47\uff0c\u8bf7\u81ea\u52a8\u5207\u6362\u4e3a\u76ee\u6807\u8bed\u8a00\u7684\u6807\u51c6\u6ce8\u97f3/\u5047\u540d/\u62fc\u97f3*\uff09\n- **\u8bcd\u6027\u4e0e\u6838\u5fc3\u4e49\u9879**\uff1a\n - `[\u8bcd\u6027\u7f29\u5199. (\u5982 v. / adj.)]` \u2460 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e491] \u2461 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e492]\n - `[\u8bcd\u6027\u7f29\u5199.]` \u2460 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e491]\n\n### 2. \u8bed\u5883\u7cbe\u6790 (Contextual Mapping) *[\u4ec5\u5728\u5177\u6709\u6709\u6548 Context \u65f6\u751f\u6210\u672c\u677f\u5757]*\n- **\u5f53\u524d\u8bed\u4e49\u9501\u5b9a**\uff1a\u8be5\u8bcd\u5728\u7ed9\u5b9a\u8bed\u5883\u4e2d\u8868\u73b0\u4e3a `[\u8bcd\u6027]`\uff0c\u7cbe\u786e\u542b\u4e49\u4e3a\u201c[\u4e2d\u6587\u91ca\u4e49]\u201d\u3002\n- **\u8bed\u5883\u8272\u8c03**\uff1a[\u660e\u793a\u8be5\u8bcd\u5728\u6b64\u5904\u7684\u4fee\u8f9e\u8272\u5f69\uff0c\u5982\uff1a\u611f\u60c5\u8272\u5f69\uff08\u8912/\u8d2c/\u4e2d\u6027\uff09\uff5c \u8bed\u4f53\uff08\u6b63\u5f0f\u4e66\u9762/\u804c\u573a\u4e13\u4e1a/\u4fda\u8bed\u53e3\u8bed\uff09]\n- **\u539f\u53e5\u5e73\u66ff\u8bcd**\uff1a[\u63d0\u4f9b 1-2 \u4e2a\u5728\u5f53\u524d\u8bed\u5883\u4e2d\u53ef\u65e0\u7f1d\u66ff\u6362\u3001\u4e0d\u6539\u53d8\u539f\u610f\u7684\u8fd1\u4e49\u8bcd]\n\n### 3. \u8bcd\u6e90\u6df1\u5ea6\u89e3\u6784\u4e0e\u8fa8\u6790 (Deep Dive)\n- **\u8bcd\u6e90\u4e0e\u8bb0\u5fc6\u951a\u70b9**\uff1a[\u62c6\u89e3\u8bcd\u6839\u8bcd\u7f00\u3001\u5386\u53f2\u6f14\u53d8\uff0c\u6216\u63d0\u4f9b\u4e00\u4e2a\u903b\u8f91\u6e05\u6670\u7684\u8054\u60f3\u8bb0\u5fc6\u6cd5]\n- **\u9ad8\u9891\u642d\u914d (Collocations)**\uff1a\n * `[\u642d\u914d 1]` \u2794 [\u4e2d\u6587\u7cbe\u51c6\u7ffb\u8bd1]\n * `[\u642d\u914d 2]` \u2794 [\u4e2d\u6587\u7cbe\u51c6\u7ffb\u8bd1]\n- **\u540c\u4e49\u8bcd\u5fae\u89c2\u8fa8\u6790 (Synonyms)**\uff1a\n * **[\u539f\u8bcd] vs [\u8fd1\u4e49\u8bcd1] vs [\u8fd1\u4e49\u8bcd2]**\uff1a[\u7528 1-2 \u53e5\u8bdd\u70b9\u900f\u5b83\u4eec\u5728\u201c\u4f7f\u7528\u8bed\u5883\u201d\u3001\u201c\u8bed\u6c14\u8f7b\u91cd\u201d\u6216\u201c\u642d\u914d\u4e60\u60ef\u201d\u4e0a\u7684\u5fae\u5999\u533a\u522b]\n\n### 4. \u8bed\u6599\u5e93\u53cc\u89e3\u4f8b\u53e5 (Corpus Examples)\n[\u8bf7\u63d0\u4f9b 2-3 \u4e2a\u6765\u81ea\u771f\u5b9e\u51fa\u7248\u7269\u3001\u65b0\u95fb\u6216\u5730\u9053\u65e5\u5e38\u573a\u666f\u7684\u4f18\u8d28\u53cc\u8bed\u4f8b\u53e5]\n\n1. **[\u5730\u9053\u82f1\u6587/\u6e90\u8bed\u8a00\u4f8b\u53e5]**\n - \ud83d\udca1 *\u4e2d\u6587\u7ffb\u8bd1*\uff1a[\u7cbe\u51c6\u7684\u3001\u7b26\u5408\u4e2d\u6587\u4e60\u60ef\u7684\u7ffb\u8bd1]\n - \ud83d\udccc *\u573a\u666f\u6807\u7b7e*\uff1a`[\u5b66\u672f\u5199\u4f5c / \u5546\u52a1\u90ae\u4ef6 / \u65e5\u5e38\u8857\u5934 / \u79d1\u6280\u65b0\u95fb]`",Ie="# Input Data\n\n## [Context / \u4e0a\u4e0b\u6587] (Optional)\n> \u4ee5\u4e0b\u4fe1\u606f\u7528\u4e8e\u8f85\u52a9\u7cbe\u51c6\u9501\u5b9a\u76ee\u6807\u6587\u672c\u7684\u8bed\u5883\uff1a\n- \u6587\u6863\u6807\u9898\uff1a".concat(y,"\n- \u6587\u6863\u63cf\u8ff0\uff1a").concat(b,"\n- \u6587\u6863\u6458\u8981\uff1a").concat(A,"\n- \u6240\u5728\u6bb5\u843d\uff1a").concat(x,"\n\n## [Target / \u76ee\u6807\u6587\u672c] (Required)\n> \u89e6\u53d1\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u6216\u3010\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3011\u7684\u6838\u5fc3\u5224\u5b9a\u5bf9\u8c61\uff1a\n").concat(g),Fe="# Context\nTitle: ".concat(y,"\nDescription: ").concat(b,"\nSummary: ").concat(A,"\nTone: ").concat(v,"\n\n# Glossary (Terminology):\n").concat(S,"\n\n# Task\nGroup the input word-level JSON array into readable, well-paced bilingual subtitle segments. Target Language: ").concat(p,'.\n\n# Output Contract\n1. STRICTLY output a valid JSON array only. No markdown formatting (e.g., do not use ```json fences), no preamble, and no postscript.\n2. Format per element: {"e":, "o":"exact merged source text", "t":"translation"}\n3. The "e" field must be an inclusive, exact word ID from the input and must increase strictly. The first segment starts at ID 0; every later segment starts at the previous "e" + 1.\n4. Completeness: Cover every input item exactly once. The final "e" must equal the final input ID. No missing items, overlaps, or gaps.\n5. For each segment, first determine its exact input range from the previous "e" + 1 through the current "e", then merge every source item in that range verbatim into "o". Do not paraphrase, normalize, translate, omit, or add source text in "o".\n6. Do not return start IDs, timestamps, or any extra fields. The application reconstructs them from the input.\n\n# Rules\n1. Hard Source Length Limit:\n - For space-separated source languages, each source span MUST contain no more than 15 words; aim for 8-12 words when a natural boundary exists.\n - For Chinese, Japanese, and other non-space-separated source languages, each source span MUST contain no more than 30 source characters.\n - If a sentence exceeds the applicable limit, split it at a clause, comma, conjunction, or natural phrase boundary. The hard length limit takes priority over keeping a long grammatical sentence intact.\n2. Sentence Boundaries: Never merge two complete sentences into one subtitle segment. Terminal punctuation such as .?!\u3002\uff01\uff1f normally ends the current segment.\n3. Pause Indicators: An optional "pauseMs" field is the timeline gap in milliseconds after the current input item. If "pauseMs" is missing, treat it as 0 milliseconds and do not infer a pause. Larger positive values indicate stronger sentence boundaries, but grammatical correctness and semantic coherence always take priority.\n4. Exact Translation Alignment: Build "o" first from the exact source span covered by the current "e", starting after the previous "e". Then translate only the current "o" into "t". The "t" field MUST NOT omit that span, translate future input items, or carry text from adjacent segments.\n5. Silent Self-Check: Before returning, silently verify that every "e", "o", and "t" correspond one-to-one, every "o" matches its exact input range, all source-length limits are satisfied, and all input items are covered exactly once. Do not output the self-check or any reasoning.\n6. Translation Quality: Keep "t" concise, accurate, and natural while strictly adhering to the provided Context, Tone, and Glossary.\n\n# Example\nInput: [{"id":0,"text":"Once"},{"id":1,"text":"the"},{"id":2,"text":"assets"},{"id":3,"text":"are"},{"id":4,"text":"ready,"},{"id":5,"text":"open"},{"id":6,"text":"the"},{"id":7,"text":"storyboard"},{"id":8,"text":"tab.","pauseMs":850},{"id":9,"text":"This"},{"id":10,"text":"is"},{"id":11,"text":"where"},{"id":12,"text":"everything"},{"id":13,"text":"comes"},{"id":14,"text":"together."},{"id":15,"text":"If"},{"id":16,"text":"a"},{"id":17,"text":"scene"},{"id":18,"text":"does"},{"id":19,"text":"not"},{"id":20,"text":"match"},{"id":21,"text":"your"},{"id":22,"text":"idea,"},{"id":23,"text":"regenerate"},{"id":24,"text":"it"},{"id":25,"text":"or"},{"id":26,"text":"adjust"},{"id":27,"text":"the"},{"id":28,"text":"prompt"},{"id":29,"text":"carefully"},{"id":30,"text":"until"},{"id":31,"text":"it"},{"id":32,"text":"feels"},{"id":33,"text":"right."}]\nOutput: [{"e":8,"o":"Once the assets are ready, open the storyboard tab.","t":"\u7d20\u6750\u51c6\u5907\u597d\u540e\uff0c\u6253\u5f00\u6545\u4e8b\u677f\u6807\u7b7e\u9875\u3002"},{"e":14,"o":"This is where everything comes together.","t":"\u4e00\u5207\u4ece\u8fd9\u91cc\u5f00\u59cb\u6574\u5408\u3002"},{"e":22,"o":"If a scene does not match your idea,","t":"\u5982\u679c\u67d0\u4e2a\u573a\u666f\u4e0e\u4f60\u7684\u60f3\u6cd5\u4e0d\u7b26\uff0c"},{"e":33,"o":"regenerate it or adjust the prompt carefully until it feels right.","t":"\u8bf7\u91cd\u65b0\u751f\u6210\uff0c\u6216\u4ed4\u7ec6\u8c03\u6574\u63d0\u793a\u8bcd\uff0c\u76f4\u5230\u6548\u679c\u5408\u9002\u3002"}]'),Le={apiSlug:"",apiName:"",apiType:"",url:"",key:"",model:"",modelListUrl:"",systemPrompt:"",batchPromptSlug:"batch-translation-json",subtitlePrompt:"",subtitlePromptSlug:"subtitle-segmentation",dictPrompt:"",dictUserPrompt:"",dictPromptSlug:"dictionary-en-zh",nobatchPrompt:"",nobatchUserPrompt:"",nobatchPromptSlug:"nobatch-translation",userPrompt:"",tone:"formal",placeholder:"{ }",placetag:"i",aiTerms:"",customHeader:"",customBody:"",reqHook:"",resHook:"",fetchLimit:o,fetchInterval:a,httpTimeout:i,batchInterval:s,batchSize:l,batchLength:u,batchConcurrency:c,useBatchFetch:!1,useStream:!1,streamRenderMode:"disabled",transAllnow:!1,rootMargin:2e3,useContext:!1,contextSize:d,temperature:0,maxTokens:20480,thinkingMode:"disabled",thinkingEffort:"_default",isDisabled:!1,region:"",sortOrder:0,placetagFormat:"compact"},Oe={useBatchFetch:!0,thinkingMode:"disabled",thinkingEffort:"_default",useStream:!0,streamRenderMode:"realtime"},Ne={[N]:Le,[z]:(0,r.A)((0,r.A)({},Le),{},{url:"https://translate.googleapis.com/translate_a/single"}),[j]:(0,r.A)((0,r.A)({},Le),{},{url:"https://translate-pa.googleapis.com/v1/translateHtml",key:"AIzaSyATBXajvzQLTDHEQbcpq0Ihe0vWDHmO520",useBatchFetch:!0,placetag:"a",placetagFormat:"attribute"}),[R]:(0,r.A)((0,r.A)({},Le),{},{useBatchFetch:!0}),[M]:(0,r.A)((0,r.A)({},Le),{},{url:"https://api.cognitive.microsofttranslator.com/translate?api-version=3.0",useBatchFetch:!0}),[J]:(0,r.A)({},Le),[Q]:(0,r.A)((0,r.A)({},Le),{},{useBatchFetch:!0}),[Z]:(0,r.A)({},Le),[q]:(0,r.A)((0,r.A)({},Le),{},{url:"https://api-free.deepl.com/v2/translate",useBatchFetch:!0}),[Y]:(0,r.A)((0,r.A)({},Le),{},{fetchLimit:1}),[B]:(0,r.A)((0,r.A)({},Le),{},{url:"https://api.deepseek.com/chat/completions",modelListUrl:"https://api.deepseek.com/models",model:"deepseek-v4-flash"},Oe),[W]:(0,r.A)((0,r.A)({},Le),{},{url:"https://opencode.ai/zen/go/v1/chat/completions",model:"deepseek-v4-flash"},Oe),[U]:(0,r.A)((0,r.A)({},Le),{},{url:"https://api.siliconflow.cn/v1/chat/completions",modelListUrl:"https://api.siliconflow.cn/v1/models",model:"Pro/zai-org/GLM-4.7"},Oe),[H]:(0,r.A)((0,r.A)({},Le),{},{url:"https://api.xiaomimimo.com/v1/chat/completions",modelListUrl:"https://api.xiaomimimo.com/v1/models",model:"mimo-v2.5-pro"},Oe),[V]:(0,r.A)((0,r.A)({},Le),{},{url:"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",modelListUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1/models",model:"qwen-plus"},Oe),[G]:(0,r.A)((0,r.A)({},Le),{},{url:"https://api.cerebras.ai/v1/chat/completions",modelListUrl:"https://api.cerebras.ai/v1/models",model:"gpt-oss-120b"},Oe),[K]:(0,r.A)((0,r.A)({},Le),{},{url:"https://open.bigmodel.cn/api/paas/v4/chat/completions",modelListUrl:"https://open.bigmodel.cn/api/paas/v4/models",model:"glm-5.1"},Oe),[$]:(0,r.A)((0,r.A)({},Le),{},{url:"http://localhost:1188/translate"}),[X]:(0,r.A)((0,r.A)({},Le),{},{url:"https://api.ephone.ai/v1/chat/completions"}),[ee]:(0,r.A)((0,r.A)({},Le),{},{url:"https://api.openai.com/v1/chat/completions",modelListUrl:"https://api.openai.com/v1/models",model:"gpt-4"},Oe),[te]:(0,r.A)((0,r.A)((0,r.A)({},Le),{},{url:C,modelListUrl:"https://generativelanguage.googleapis.com/v1beta/models",model:"gemini-2.5-flash"},Oe),{},{thinkingMode:"disabled",thinkingEffort:"minimal"}),[ne]:(0,r.A)((0,r.A)({},Le),{},{url:"https://generativelanguage.googleapis.com/v1beta/openai/chat/completions",modelListUrl:"https://generativelanguage.googleapis.com/v1beta/models",model:"gemini-2.0-flash"},Oe),[re]:(0,r.A)((0,r.A)({},Le),{},{url:"https://api.anthropic.com/v1/messages",modelListUrl:"https://api.anthropic.com/v1/models",model:"claude-3-haiku-20240307"},Oe),[ie]:(0,r.A)((0,r.A)({},Le),{},{url:"https://api.cloudflare.com/client/v4/accounts/{{ACCOUNT_ID}}/ai/run/@cf/meta/m2m100-1.2b"}),[oe]:(0,r.A)((0,r.A)({},Le),{},{url:"http://localhost:11434/v1/chat/completions",modelListUrl:"http://localhost:11434/v1/models",model:"llama3.1"},Oe),[ae]:(0,r.A)((0,r.A)({},Le),{},{url:"https://openrouter.ai/api/v1/chat/completions",modelListUrl:"https://openrouter.ai/api/v1/models",model:"openai/gpt-4o"},Oe),[se]:(0,r.A)((0,r.A)({},Le),{},{url:"https://api.orcarouter.ai/v1/chat/completions",modelListUrl:"https://api.orcarouter.ai/v1/models",model:"openai/gpt-5.4-mini"},Oe),[le]:(0,r.A)((0,r.A)({},Le),{},{reqHook:'async (args, { url, body, headers, userMsg, method } = {}) => {\n console.log("request hook args:", { args, url, body, headers, userMsg, method });\n // return { url, body, headers, userMsg, method };\n};',resHook:'async ({ res, ...args }) => {\n console.log("reaponse hook args:", { res, args });\n // const translations = [["\u4f60\u597d", "zh"]];\n // const modelMsg = "";\n // return { translations, modelMsg };\n};'})},ze=ue.map(e=>(0,r.A)((0,r.A)({},Ne[e]),{},{apiSlug:e,apiName:e,apiType:e}));const je=Q,Re=ze.find(e=>e.apiType===je)},5553(e,t,n){"use strict";function r(e){var t,n,i="";if("string"==typeof e||"number"==typeof e)i+=e;else if("object"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;ti});const i=function(){for(var e,t,n=0,i="",o=arguments.length;nr});const r=n(9669).A},5628(e,t,n){"use strict";n.d(t,{x:()=>i});var r=n(1166);const i=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e)throw new Error("Response object does not exist");if(!e.ok){const t={url:e.url,status:e.status,statusText:e.statusText};try{const n=await e.clone().text();try{t.response=JSON.parse(n)}catch(o){t.response=n}}catch(a){t.response="Unable to read error body"}throw new Error(JSON.stringify(t))}const n=e.headers.get("Content-Type")||"";if("blob"===t)return e.blob();if("text"===t)return e.text();if("json"===t)return e.json();if("audio"===t||n.includes("audio")||n.includes("image")||n.includes("video")){const t=await e.blob();return(0,r.Sk)(t)}if(n.includes("text/event-stream"))throw new Error("Received text/event-stream in a non-stream request. Use fetchStream instead.");const i=await e.text();if(!i)return null;try{return JSON.parse(i)}catch(s){return i}}},5779(e,t,n){"use strict";n.d(t,{A:()=>l,b:()=>s});var r=n(8661),i=n(3699),o=n(5089);const a=r.createContext(void 0);function s(e){let{props:t,name:n}=e;return function(e){const{theme:t,name:n,props:r}=e;if(!t||!t.components||!t.components[n])return r;const o=t.components[n];return o.defaultProps?(0,i.A)(o.defaultProps,r):o.styleOverrides||o.variants?r:(0,i.A)(o,r)}({props:t,name:n,theme:{components:r.useContext(a)}})}const l=function(e){let{value:t,children:n}=e;return(0,o.jsx)(a.Provider,{value:t,children:n})}},5823(e,t){"use strict";var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),i=Symbol.for("react.fragment"),o=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.suspense_list"),h=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),f=Symbol.for("react.view_transition"),m=Symbol.for("react.client.reference");function g(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case i:case a:case o:case c:case d:case f:return e;default:switch(e=e&&e.$$typeof){case l:case u:case p:case h:case s:return e;default:return t}}case r:return t}}}t.vM=u,t.lD=h},5863(e,t,n){"use strict";n.d(t,{A:()=>r});const r="$$material"},6121(e,t,n){"use strict";n.d(t,{A:()=>c});var r,i=n(4093),o=n(2458),a=n(8763);function s(e){return["VALUE","KEY","COLON","COMMA","ENDED","ERROR","SEPARATOR"][e]}!function(e){e[e.VALUE=0]="VALUE",e[e.KEY=1]="KEY",e[e.COLON=2]="COLON",e[e.COMMA=3]="COMMA",e[e.ENDED=4]="ENDED",e[e.ERROR=5]="ERROR",e[e.SEPARATOR=6]="SEPARATOR"}(r||(r={}));const l={paths:void 0,keepStack:!0,separator:void 0,emitPartialValues:!1};class u extends Error{constructor(e){super(e),Object.setPrototypeOf(this,u.prototype)}}class c{constructor(e){this.state=r.VALUE,this.mode=void 0,this.key=void 0,this.value=void 0,this.stack=[],(e=Object.assign(Object.assign({},l),e)).paths&&(this.paths=e.paths.map(e=>{if(void 0===e||"$*"===e)return;if(!e.startsWith("$"))throw new u('Invalid selector "'.concat(e,'". Should start with "$".'));const t=e.split(".").slice(1);if(t.includes(""))throw new u('Invalid selector "'.concat(e,'". ".." syntax not supported.'));return t})),this.keepStack=e.keepStack||!1,this.separator=e.separator,e.emitPartialValues||(this.emitPartial=()=>{})}shouldEmit(){return!this.paths||this.paths.some(e=>{var t;if(void 0===e)return!0;if(e.length!==this.stack.length)return!1;for(let r=0;r!e.emit)&&delete this.value[this.key],t&&this.onValue({value:e,key:this.key,parent:this.value,stack:this.stack}),0===this.stack.length&&(this.separator?this.state=r.SEPARATOR:void 0===this.separator&&this.end())}emitPartial(e){this.shouldEmit()&&(this.state!==r.KEY?this.onValue({value:e,key:this.key,parent:this.value,stack:this.stack,partial:!0}):this.onValue({value:void 0,key:e,parent:this.value,stack:this.stack,partial:!0}))}get isEnded(){return this.state===r.ENDED}write(e){let{token:t,value:n,partial:l}=e;try{if(l)return void this.emitPartial(n);if(this.state===r.VALUE){if(t===o.A.STRING||t===o.A.NUMBER||t===o.A.TRUE||t===o.A.FALSE||t===o.A.NULL)return this.mode===a.C.OBJECT?(this.value[this.key]=n,this.state=r.COMMA):this.mode===a.C.ARRAY&&(this.value.push(n),this.state=r.COMMA),void this.emit(n,this.shouldEmit());if(t===o.A.LEFT_BRACE){if(this.push(),this.mode===a.C.OBJECT)this.value=this.value[this.key]={};else if(this.mode===a.C.ARRAY){const e={};this.value.push(e),this.value=e}else this.value={};return this.mode=a.C.OBJECT,this.state=r.KEY,this.key=void 0,void this.emitPartial()}if(t===o.A.LEFT_BRACKET){if(this.push(),this.mode===a.C.OBJECT)this.value=this.value[this.key]=[];else if(this.mode===a.C.ARRAY){const e=[];this.value.push(e),this.value=e}else this.value=[];return this.mode=a.C.ARRAY,this.state=r.VALUE,this.key=0,void this.emitPartial()}if(this.mode===a.C.ARRAY&&t===o.A.RIGHT_BRACKET&&0===this.value.length)return void this.pop()}if(this.state===r.KEY){if(t===o.A.STRING)return this.key=n,this.state=r.COLON,void this.emitPartial();if(t===o.A.RIGHT_BRACE&&0===Object.keys(this.value).length)return void this.pop()}if(this.state===r.COLON&&t===o.A.COLON)return void(this.state=r.VALUE);if(this.state===r.COMMA){if(t===o.A.COMMA){if(this.mode===a.C.ARRAY)return this.state=r.VALUE,void(this.key+=1);if(this.mode===a.C.OBJECT)return void(this.state=r.KEY)}if(t===o.A.RIGHT_BRACE&&this.mode===a.C.OBJECT||t===o.A.RIGHT_BRACKET&&this.mode===a.C.ARRAY)return void this.pop()}if(this.state===r.SEPARATOR&&t===o.A.SEPARATOR&&n===this.separator)return void(this.state=r.VALUE);if(t===o.A.SEPARATOR&&this.state!==r.SEPARATOR&&Array.from(n).map(e=>e.charCodeAt(0)).every(e=>e===i.$.SPACE||e===i.$.NEWLINE||e===i.$.CARRIAGE_RETURN||e===i.$.TAB))return;throw new u("Unexpected ".concat(o.A[t]," (").concat(JSON.stringify(n),") in state ").concat(s(this.state)))}catch(c){this.error(c)}}error(e){this.state!==r.ENDED&&(this.state=r.ERROR),this.onError(e)}end(){this.state!==r.VALUE&&this.state!==r.SEPARATOR||this.stack.length>0?this.error(new Error("Parser ended in mid-parsing (state: ".concat(s(this.state),"). Either not all the data was received or the data was invalid."))):(this.state=r.ENDED,this.onEnd())}onValue(e){throw new u('Can\'t emit data before the "onValue" callback has been set up.')}onError(e){throw e}onEnd(){}}},6135(e,t,n){"use strict";n.d(t,{Fd:()=>g,NR:()=>h.NR,Qy:()=>h.fnPolyfill,iI:()=>h.iI,xF:()=>v});var r=n(4107),i=n(7301),o=n(1152),a=n(1442),s=n(3951),l=n(6639),u=n(9793),c=n(7325),d=n(5047),h=n(1762),p=n(6402);const f=["useCache","usePool","fetchInterval","fetchLimit"],m=["useCache","usePool","fetchInterval","fetchLimit"],g=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{useCache:r,usePool:o,fetchInterval:a,fetchLimit:s}=n,l=(0,i.A)(n,f);if(null===e||void 0===e||!e.trim())throw new Error("URL is empty");if(r){const n=await(0,c.QF)(e,t);if(n)return n}if(o){return(0,u.Fz)(a,s).push(h.fnPolyfill,{fn:h.fetchHandle,input:e,init:t,opts:l})}return(0,h.fnPolyfill)({fn:h.fetchHandle,input:e,init:t,opts:l})};function v(e,t){return y.apply(this,arguments)}function y(){return y=(0,o.A)(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{useCache:o,usePool:f,fetchInterval:g,fetchLimit:v}=n,y=(0,i.A)(n,m);return function*(){if(null===e||void 0===e||!e.trim())throw new Error("URL is empty");if(o){const n=yield(0,a.A)((0,c.QF)(e,t));if(n)return void(yield n)}if(f){const n=(0,u.Fz)(g,v),i=(0,d.Sn)(),o=new AbortController,c=(0,r.A)((0,r.A)({},y),{},{signal:(0,h.OW)([y.signal,o.signal])}),f=n.push(async()=>{try{var n,r=!1,o=!1;try{for(var a,s=(0,l.A)((0,p.y)(e,t,c));r=!(a=await s.next()).done;r=!1){const e=a.value;i.push(e)}}catch(u){o=!0,n=u}finally{try{r&&null!=s.return&&await s.return()}finally{if(o)throw n}}i.finish()}catch(d){i.error(d)}return null});try{yield*(0,s.A)((0,l.A)(i.iterate()),a.A)}finally{o.abort(),yield(0,a.A)(f.catch(()=>{}))}return}yield*(0,s.A)((0,l.A)((0,p.y)(e,t,y)),a.A)}()}),y.apply(this,arguments)}},6175(e,t,n){"use strict";n.d(t,{A:()=>i});var r=n(6253);function i(e){if("string"!==typeof e)throw new Error((0,r.A)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},6253(e,t,n){"use strict";function r(e){let t="https://mui.com/production-error/?code="+e;for(let n=1;nr})},6267(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(8661),i=n(6489);const o=function(e){const t=r.useRef(e);return(0,i.A)(()=>{t.current=e}),r.useRef(function(){return(0,t.current)(...arguments)}).current}},6333(e,t,n){"use strict";n.d(t,{A:()=>i});var r=n(9669);function i(e){return(0,r.A)(e).defaultView||window}},6402(e,t,n){"use strict";n.d(t,{y:()=>A});var r=n(7301),i=n(4107),o=n(1152),a=n(1442),s=n(3951),l=n(6639),u=n(9286),c=n.n(u),d=n(252),h=n(1223),p=n(7877),f=n(5047),m=n(1762);const g=["signal"];function v(){return v=(0,o.A)(function(e){let{method:t="GET",headers:n,body:r,timeout:i,signal:o}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(u,c){const d=(0,f.Sn)();let h=(0,f.HP)(),p=!1,m=null,g=!1,v=0,y=!1,b="unknown",A="";const x=new TextDecoder,w=()=>{y||(y=!0,d.finish())},k=e=>{y||(y=!0,d.error(e))},S=e=>{for(const t of h(e))g=!0,d.push(t)},E=(e,t)=>{const n=new Uint8Array(e.length);for(let r=0;r1&&void 0!==arguments[1]&&arguments[1];if(e||t)if("utf8-bytes"!==b){if(A+=e,"unknown"===b)if((e=>{for(let t=0;t255)return!0;return!1})(A))b="text";else if((e=>/[\u00c2-\u00f4][\u0080-\u00bf]/.test(e))(A))b="utf8-bytes";else{if((e=>/[\u0080-\u00ff]/.test(e))(A)&&!t)return;b="text"}S("utf8-bytes"===b?E(A,{stream:!t}):A),A=""}else S(E(e,{stream:!t}))},_=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(p||y)return;const n=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"string"===typeof t.responseText?t.responseText:"string"===typeof(null===(e=t.response)||void 0===e?void 0:e.responseText)?t.response.responseText:"string"===typeof t.response?t.response:""}(e);if(n.length<=v)return void C("",t);const r=n.slice(v);v=n.length,C(r,t)},T=((null===(u=window.KISS_GM)||void 0===u?void 0:u.xmlHttpRequest)||GM.xmlHttpRequest)({method:t,url:e,headers:n,data:r,anonymous:!0,timeout:i,responseType:"stream",onloadstart:async function(){let e,{response:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(null!==t&&void 0!==t&&t.getReader){p=!0;try{e=t.getReader();const n=new TextDecoder;for(;;){const{done:t,value:r}=await e.read();if(t)break;for(const e of h(n.decode(r,{stream:!0})))g=!0,d.push(e)}}catch(o){if(!g&&(i=o,String((null===i||void 0===i?void 0:i.message)||i).includes("Accessing TypedArray data over Xrays"))){p=!1,m=o,h=(0,f.HP)();try{var n,r;await(null===(n=e)||void 0===n||null===(r=n.cancel)||void 0===r?void 0:r.call(n))}catch(a){}return}return void k(o)}var i;w()}},onprogress:e=>_(e),onload:e=>{p||y||(_(e,!0),g?w():k(m||new Error("GM stream response is not readable.")))},onerror:e=>k(e),onabort:()=>k(new DOMException("The operation was aborted.","AbortError")),ontimeout:()=>k(new Error("GM stream request timeout"))}),D=()=>{var e;return null===T||void 0===T||null===(e=T.abort)||void 0===e?void 0:e.call(T)};null!==o&&void 0!==o&&o.aborted&&D(),null===o||void 0===o||null===(c=o.addEventListener)||void 0===c||c.call(o,"abort",D,{once:!0});try{yield*(0,s.A)((0,l.A)(d.iterate()),a.A)}finally{var P,I;null===o||void 0===o||null===(P=o.removeEventListener)||void 0===P||P.call(o,"abort",D),null===T||void 0===T||null===(I=T.abort)||void 0===I||I.call(T)}}()}),v.apply(this,arguments)}function y(){return y=(0,o.A)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){const r="number"===typeof n?{httpTimeout:n}:n||{},o=(0,m.Fb)(r.httpTimeout),s=(0,m.OW)([t.signal,r.signal,(0,m.eS)(o)]),l=yield(0,a.A)(fetch(e,(0,i.A)((0,i.A)({},t),{},{signal:s})));if(!l.ok)throw new Error("HTTP error! status: ".concat(l.status));const u=l.body.getReader(),c=new TextDecoder,d=(0,f.HP)();try{for(;;){const{done:e,value:t}=yield(0,a.A)(u.read());if(e)break;for(const n of d(c.decode(t,{stream:!0})))yield n}}finally{var h;yield(0,a.A)(null===(h=u.cancel)||void 0===h?void 0:h.call(u))}}()}),y.apply(this,arguments)}function b(){return(b=(0,o.A)(function*(e,t,n){const i=(0,f.Sn)(),o=n||{},{signal:u}=o,d=(0,r.A)(o,g);let h;try{h=c().runtime.connect({name:p.sRu})}catch(x){throw new Error("Failed to connect to background: "+x.message)}const m=()=>{try{h.disconnect()}catch(e){}};h.onMessage.addListener(e=>{switch(e.type){case"delta":i.push(e.data);break;case"done":i.finish();break;case"error":i.error(new Error(e.error))}}),h.onDisconnect.addListener(()=>{const e=c().runtime.lastError;e&&i.error(new Error(e.message||"Port disconnected"))});const v=()=>{i.error(new DOMException("The operation was aborted.","AbortError")),m()},y=null===u||void 0===u?void 0:u.aborted;var b;y?v():null===u||void 0===u||null===(b=u.addEventListener)||void 0===b||b.call(u,"abort",v,{once:!0});y||h.postMessage({action:"start",args:{input:e,init:t,opts:d}});try{yield*(0,s.A)((0,l.A)(i.iterate()),a.A)}finally{var A;null===u||void 0===u||null===(A=u.removeEventListener)||void 0===A||A.call(u,"abort",v),m()}})).apply(this,arguments)}function A(e,t){return x.apply(this,arguments)}function x(){return x=(0,o.A)(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){const r=yield(0,a.A)((0,m.uX)(n));n=(0,i.A)((0,i.A)({},n),{},{httpTimeout:r}),!d.aQ||(0,h._9)()?d.Zy?yield*(0,s.A)((0,l.A)(function(e){return v.apply(this,arguments)}(e,(0,i.A)((0,i.A)({},t),{},{timeout:n.httpTimeout,signal:n.signal}))),a.A):yield*(0,s.A)((0,l.A)(function(e){return y.apply(this,arguments)}(e,t,n)),a.A):yield*(0,s.A)((0,l.A)(function(e,t,n){return b.apply(this,arguments)}(e,t,n)),a.A)}()}),x.apply(this,arguments)}},6489(e,t,n){"use strict";n.d(t,{A:()=>i});var r=n(8661);const i="undefined"!==typeof window?r.useLayoutEffect:r.useEffect},6604(e,t,n){"use strict";n.d(t,{b:()=>i});const r=/^(?:>>[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*)?(?:\[(?:[\0-\t\x0B\f\x0E-\\\^-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+\][\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*)+$/;function i(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return r.test(String(e).trim())}},6614(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(6333).A},6639(e,t,n){"use strict";function r(e){var t,n,r,o=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);o--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new i(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function i(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:t}})}return i=function(e){this.s=e,this.n=e.next},i.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new i(e)}n.d(t,{A:()=>r})},6652(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M7.41 18.59 8.83 20 12 16.83 15.17 20l1.41-1.41L12 14zm9.18-13.18L15.17 4 12 7.17 8.83 4 7.41 5.41 12 10z"}),"UnfoldLess")},6811(e,t,n){"use strict";var r=n(7458);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},6851(e,t,n){"use strict";e.exports=n(3399)},6920(e,t,n){"use strict";n.d(t,{A:()=>r});const r=function(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}},6966(e,t,n){"use strict";n.d(t,{A:()=>O});var r=n(4320),i=n(8915),o=n(6253),a=n(6997),s=n(2692),l=n(1985),u=n(2979);var c=n(7197);const d={black:"#000",white:"#fff"},h={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},p={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},f={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},m={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},g={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},v={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},y={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},b=["mode","contrastThreshold","tonalOffset"],A={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:d.white,default:d.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},x={text:{primary:d.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:d.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function w(e,t,n,r){const i=r.light||r,o=r.dark||1.5*r;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=(0,c.a)(e.main,i):"dark"===t&&(e.dark=(0,c.e$)(e.main,o)))}function k(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:s=.2}=e,l=(0,i.A)(e,b),u=e.primary||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:g[200],light:g[50],dark:g[400]}:{main:g[700],light:g[400],dark:g[800]}}(t),k=e.secondary||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:p[200],light:p[50],dark:p[400]}:{main:p[500],light:p[300],dark:p[700]}}(t),S=e.error||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:f[500],light:f[300],dark:f[700]}:{main:f[700],light:f[400],dark:f[800]}}(t),E=e.info||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:v[400],light:v[300],dark:v[700]}:{main:v[700],light:v[500],dark:v[900]}}(t),C=e.success||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:y[400],light:y[300],dark:y[700]}:{main:y[800],light:y[500],dark:y[900]}}(t),_=e.warning||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:m[400],light:m[300],dark:m[700]}:{main:"#ed6c02",light:m[500],dark:m[900]}}(t);function T(e){return(0,c.eM)(e,x.text.primary)>=n?x.text.primary:A.text.primary}const D=e=>{let{color:t,name:n,mainShade:i=500,lightShade:a=300,darkShade:l=700}=e;if(t=(0,r.A)({},t),!t.main&&t[i]&&(t.main=t[i]),!t.hasOwnProperty("main"))throw new Error((0,o.A)(11,n?" (".concat(n,")"):"",i));if("string"!==typeof t.main)throw new Error((0,o.A)(12,n?" (".concat(n,")"):"",JSON.stringify(t.main)));return w(t,"light",a,s),w(t,"dark",l,s),t.contrastText||(t.contrastText=T(t.main)),t},P={dark:x,light:A};return(0,a.A)((0,r.A)({common:(0,r.A)({},d),mode:t,primary:D({color:u,name:"primary"}),secondary:D({color:k,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:D({color:S,name:"error"}),warning:D({color:_,name:"warning"}),info:D({color:E,name:"info"}),success:D({color:C,name:"success"}),grey:h,contrastThreshold:n,getContrastText:T,augmentColor:D,tonalOffset:s},P[t]),l)}const S=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"];const E={textTransform:"uppercase"},C='"Roboto", "Helvetica", "Arial", sans-serif';function _(e,t){const n="function"===typeof t?t(e):t,{fontFamily:o=C,fontSize:s=14,fontWeightLight:l=300,fontWeightRegular:u=400,fontWeightMedium:c=500,fontWeightBold:d=700,htmlFontSize:h=16,allVariants:p,pxToRem:f}=n,m=(0,i.A)(n,S);const g=s/14,v=f||(e=>"".concat(e/h*g,"rem")),y=(e,t,n,i,a)=>{return(0,r.A)({fontFamily:o,fontWeight:e,fontSize:v(t),lineHeight:n},o===C?{letterSpacing:"".concat((s=i/t,Math.round(1e5*s)/1e5),"em")}:{},a,p);var s},b={h1:y(l,96,1.167,-1.5),h2:y(l,60,1.2,-.5),h3:y(u,48,1.167,0),h4:y(u,34,1.235,.25),h5:y(u,24,1.334,0),h6:y(c,20,1.6,.15),subtitle1:y(u,16,1.75,.15),subtitle2:y(c,14,1.57,.1),body1:y(u,16,1.5,.15),body2:y(u,14,1.43,.15),button:y(c,14,1.75,.4,E),caption:y(u,12,1.66,.4),overline:y(u,12,2.66,1,E),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return(0,a.A)((0,r.A)({htmlFontSize:h,pxToRem:v,fontFamily:o,fontSize:s,fontWeightLight:l,fontWeightRegular:u,fontWeightMedium:c,fontWeightBold:d},b),m,{clone:!1})}function T(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(.2,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(.14,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(.12,")")].join(",")}const D=["none",T(0,2,1,-1,0,1,1,0,0,1,3,0),T(0,3,1,-2,0,2,2,0,0,1,5,0),T(0,3,3,-2,0,3,4,0,0,1,8,0),T(0,2,4,-1,0,4,5,0,0,1,10,0),T(0,3,5,-1,0,5,8,0,0,1,14,0),T(0,3,5,-1,0,6,10,0,0,1,18,0),T(0,4,5,-2,0,7,10,1,0,2,16,1),T(0,5,5,-3,0,8,10,1,0,3,14,2),T(0,5,6,-3,0,9,12,1,0,3,16,2),T(0,6,6,-3,0,10,14,1,0,4,18,3),T(0,6,7,-4,0,11,15,1,0,4,20,3),T(0,7,8,-4,0,12,17,2,0,5,22,4),T(0,7,8,-4,0,13,19,2,0,5,24,4),T(0,7,9,-4,0,14,21,2,0,5,26,4),T(0,8,9,-5,0,15,22,2,0,6,28,5),T(0,8,10,-5,0,16,24,2,0,6,30,5),T(0,8,11,-5,0,17,26,2,0,6,32,5),T(0,9,11,-5,0,18,28,2,0,7,34,6),T(0,9,12,-6,0,19,29,2,0,7,36,6),T(0,10,13,-6,0,20,31,3,0,8,38,7),T(0,10,13,-6,0,21,33,3,0,8,40,7),T(0,10,14,-6,0,22,35,3,0,8,42,7),T(0,11,14,-7,0,23,36,3,0,9,44,8),T(0,11,15,-7,0,24,38,3,0,9,46,8)];var P=n(7782);const I={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500},F=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function L(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{mixins:t={},palette:n={},transitions:c={},typography:d={}}=e,h=(0,i.A)(e,F);if(e.vars&&void 0===e.generateCssVars)throw new Error((0,o.A)(18));const p=k(n),f=(0,u.A)(e);let m=(0,a.A)(f,{mixins:(g=f.breakpoints,v=t,(0,r.A)({toolbar:{minHeight:56,[g.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[g.up("sm")]:{minHeight:64}}},v)),palette:p,shadows:D.slice(),typography:_(p,d),transitions:(0,P.Ay)(c),zIndex:(0,r.A)({},I)});var g,v;m=(0,a.A)(m,h);for(var y=arguments.length,b=new Array(y>1?y-1:0),A=1;A(0,a.A)(e,t),m),m.unstable_sxConfig=(0,r.A)({},s.A,null==h?void 0:h.unstable_sxConfig),m.unstable_sx=function(e){return(0,l.A)({sx:e,theme:this})},m}const O=L},6997(e,t,n){"use strict";n.d(t,{A:()=>s,Q:()=>o});var r=n(4320),i=n(8661);function o(e){if("object"!==typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return(null===t||t===Object.prototype||null===Object.getPrototypeOf(t))&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function a(e){if(i.isValidElement(e)||!o(e))return e;const t={};return Object.keys(e).forEach(n=>{t[n]=a(e[n])}),t}function s(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{clone:!0};const l=n.clone?(0,r.A)({},e):e;return o(e)&&o(t)&&Object.keys(t).forEach(r=>{i.isValidElement(t[r])?l[r]=t[r]:o(t[r])&&Object.prototype.hasOwnProperty.call(e,r)&&o(e[r])?l[r]=s(e[r],t[r],n):n.clone?l[r]=o(t[r])?a(t[r]):t[r]:l[r]=t[r]}),l}},7029(e,t,n){e.exports=function(e){"use strict";var t=Object.freeze({__proto__:null,get ExpressionStatement(){return Ue},get BlockStatement(){return He},get EmptyStatement(){return Ve},get DebuggerStatement(){return Ge},get ReturnStatement(){return Ke},get BreakStatement(){return qe},get ContinueStatement(){return $e},get LabeledStatement(){return Ye},get WithStatement(){return Xe},get IfStatement(){return Je},get SwitchStatement(){return Qe},get SwitchCase(){return Ze},get ThrowStatement(){return et},get TryStatement(){return tt},get CatchClause(){return nt},get WhileStatement(){return rt},get DoWhileStatement(){return it},get ForStatement(){return ot},get ForInStatement(){return at},get ForOfStatement(){return st}}),r=Object.freeze({__proto__:null,get FunctionDeclaration(){return lt},get VariableDeclaration(){return ut},get VariableDeclarator(){return ct},get ClassDeclaration(){return dt},get ClassBody(){return ht},get MethodDefinition(){return pt},get PropertyDefinition(){return ft},get StaticBlock(){return mt},get ImportDeclaration(){return gt},get ExportDefaultDeclaration(){return vt},get ExportNamedDeclaration(){return yt},get ExportAllDeclaration(){return bt}}),i=Object.freeze({__proto__:null,get ExpressionStatement(){return on},get BlockStatement(){return an},get EmptyStatement(){return sn},get DebuggerStatement(){return ln},get ReturnStatement(){return un},get BreakStatement(){return cn},get ContinueStatement(){return dn},get LabeledStatement(){return hn},get WithStatement(){return pn},get IfStatement(){return fn},get SwitchStatement(){return mn},get SwitchCase(){return gn},get ThrowStatement(){return vn},get TryStatement(){return yn},get CatchClause(){return bn},get WhileStatement(){return An},get DoWhileStatement(){return xn},get ForStatement(){return wn},get ForInStatement(){return kn},get ForOfStatement(){return Sn}}),o=Object.freeze({__proto__:null,get FunctionDeclaration(){return En},get VariableDeclaration(){return Cn},get VariableDeclarator(){return _n},get ClassDeclaration(){return Tn},get ClassBody(){return Dn},get MethodDefinition(){return Pn},get PropertyDefinition(){return In},get StaticBlock(){return Fn},get ImportDeclaration(){return Ln},get ExportDefaultDeclaration(){return On},get ExportNamedDeclaration(){return Nn},get ExportAllDeclaration(){return zn}});function a(e,t){var n,r,i,o,a={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"===typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(e){return function(t){return l([e,t])}}function l(o){if(n)throw new TypeError("Generator is already executing.");for(;a;)try{if(n=1,r&&(i=2&o[0]?r.return:o[0]?r.throw||((i=r.return)&&i.call(r),0):r.next)&&!(i=i.call(r,o[1])).done)return i;switch(r=0,i&&(o=[2&o[0],i.value]),o[0]){case 0:case 1:i=o;break;case 4:return a.label++,{value:o[1],done:!1};case 5:a.label++,r=o[1],o=[0];continue;case 7:o=a.ops.pop(),a.trys.pop();continue;default:if(!(i=(i=a.trys).length>0&&i[i.length-1])&&(6===o[0]||2===o[0])){a=0;continue}if(3===o[0]&&(!i||o[1]>i[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}function l(e,t){var n="function"===typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,i,o=n.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(r=o.next()).done;)a.push(r.value)}catch(s){i={error:s}}finally{try{r&&!r.done&&(n=o.return)&&n.call(o)}finally{if(i)throw i.error}}return a}function u(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}var j={RES:void 0},R={RES:void 0},M={LABEL:void 0},B={LABEL:void 0},W=N("super"),U=N("supercall"),H=N("noctor"),V=N("clsctor"),G=N("newtarget"),K=N("private"),q=N("noinit"),$=N("deadzone"),Y=N("import"),X=N("exports"),J="0.5.9",Q=function(){function e(e,t){this.kind=e,this.value=t}return e.prototype.get=function(){return this.value},e.prototype.set=function(e){if("const"===this.kind)throw new TypeError("Assignment to constant variable");return this.value=e},e}(),Z=function(){function e(e,t){this.object=e,this.property=t}return e.prototype.get=function(){return this.object[this.property]},e.prototype.set=function(e){return this.object[this.property]=e,!0},e.prototype.del=function(){return delete this.object[this.property]},e}(),ee=function(){function e(e,t){void 0===e&&(e=null),void 0===t&&(t=!1),this.context=S(null),this.withContext=S(null),this.parent=e,this.isolated=t}return e.prototype.global=function(){for(var e=this;e.parent;)e=e.parent;return e},e.prototype.find=function(e){if(this.context[e])return this.context[e];if(e in this.withContext)return new Z(this.withContext,e);if(this.parent)return this.parent.find(e);var t=this.global().find("window").get();return e in t?new Z(t,e):null},e.prototype.var=function(e,t){for(var n=this;n.parent&&!n.isolated;)n=n.parent;var r=n.context[e];if(r){if("var"!==r.kind)throw new SyntaxError("Identifier '"+e+"' has already been declared");t!==q&&r.set(t)}else n.context[e]=new Q("var",t===q?void 0:t);if(!n.parent){var i=n.find("window").get();t!==q&&d(i,e,{value:t,writable:!0,enumerable:!0})}},e.prototype.let=function(e,t){var n=this.context[e];if(n&&n.get()!==$)throw new SyntaxError("Identifier '"+e+"' has already been declared");this.context[e]=new Q("let",t)},e.prototype.const=function(e,t){var n=this.context[e];if(n&&n.get()!==$)throw new SyntaxError("Identifier '"+e+"' has already been declared");this.context[e]=new Q("const",t)},e.prototype.func=function(e,t){var n=this.context[e];if(n&&"var"!==n.kind)throw new SyntaxError("Identifier '"+e+"' has already been declared");this.context[e]=new Q("var",t)},e.prototype.with=function(e){Object.keys(e)&&(this.withContext=e)},e}();function te(e,t){void 0===t&&(t={});var n=t.res,r=t.err,i=t.ret,o=t.fullRet;return new Promise(function(a,s){if("ret"in t)return a(e.return(i));function l(t){var n;try{n=e.next(t)}catch(r){return s(r)}return c(n),null}function u(t){var n;try{n=e.throw(t)}catch(r){return s(r)}c(n)}function c(e){if(e.done)return a(o?e:e.value);if(e.value!==j)return a(e);var t=e.value.RES;return(t&&"function"===t.then?t:Promise.resolve(t)).then(l,u)}"err"in t?u(r):l(n)})}function ne(e,t,n){var r,i,o,s,l,u;return void 0===n&&(n={}),a(this,function(a){if(r=n.getVar,i=void 0!==r&&r,o=n.throwErr,s=void 0===o||o,"undefined"===e.name)return[2,void 0];if(l=t.find(e.name)){if(i)return[2,l];if((u=l.get())===$)throw new ReferenceError(e.name+" is not defined");return[2,u]}if(s)throw new ReferenceError(e.name+" is not defined");return[2,void 0]})}var re=Object.freeze({__proto__:null,Identifier:ne});function ie(e,t){return a(this,function(t){return[2,e.value]})}var oe=Object.freeze({__proto__:null,Literal:ie});function ae(e,t){var n;return a(this,function(e){if((n=t.find(U))&&!n.get())throw new ReferenceError("Must call super constructor in derived class before accessing 'this' or returning from derived constructor");return[2,t.find("this").get()]})}function se(e,t){var n,r,i,o,l,u,c;return a(this,function(a){switch(a.label){case 0:n=[],r=0,a.label=1;case 1:return r":return[2,n>r];case">=":return[2,n>=r];case"<<":return[2,n<>":return[2,n>>r];case">>>":return[2,n>>>r];case"+":return[2,n+r];case"-":return[2,n-r];case"*":return[2,n*r];case"**":return[2,Math.pow(n,r)];case"/":return[2,n/r];case"%":return[2,n%r];case"|":return[2,n|r];case"^":return[2,n^r];case"&":return[2,n&r];case"in":return[2,n in r];case"instanceof":return[2,n instanceof r];default:throw new SyntaxError("Unexpected token "+e.operator)}}})}function pe(e,t){var n,r,i,o,l,u;return a(this,function(a){switch(a.label){case 0:return"Identifier"!==(n=e.left).type?[3,2]:[5,s(ne(n,t,{getVar:!0,throwErr:!1}))];case 1:return(r=a.sent())||(i=t.global().find("window").get(),r=new Z(i,n.name)),[3,7];case 2:return"MemberExpression"!==n.type?[3,4]:[5,s(me(n,t,{getVar:!0}))];case 3:return r=a.sent(),[3,7];case 4:case 7:return[5,s(We(e.right,t))];case 5:return o=a.sent(),[5,s(Gn(n,t,{feed:o}))];case 6:return[2,a.sent()];case 8:switch(l=a.sent(),e.operator){case"=":return r.set(l),[2,r.get()];case"+=":return r.set(r.get()+l),[2,r.get()];case"-=":return r.set(r.get()-l),[2,r.get()];case"*=":return r.set(r.get()*l),[2,r.get()];case"/=":return r.set(r.get()/l),[2,r.get()];case"%=":return r.set(r.get()%l),[2,r.get()];case"**=":return r.set(Math.pow(r.get(),l)),[2,r.get()];case"<<=":return r.set(r.get()<>=":return r.set(r.get()>>l),[2,r.get()];case">>>=":return r.set(r.get()>>>l),[2,r.get()];case"|=":return r.set(r.get()|l),[2,r.get()];case"^=":return r.set(r.get()^l),[2,r.get()];case"&=":return r.set(r.get()&l),[2,r.get()];case"??=":return r.set(null!==(u=r.get())&&void 0!==u?u:l),[2,r.get()];case"&&=":return r.set(r.get()&&l),[2,r.get()];case"||=":return r.set(r.get()||l),[2,r.get()];default:throw new SyntaxError("Unexpected token "+e.operator)}}})}function fe(e,t){var n,r,i,o;return a(this,function(a){switch(a.label){case 0:switch(e.operator){case"||":return[3,1];case"&&":return[3,5];case"??":return[3,9]}return[3,14];case 1:return[5,s(We(e.left,t))];case 2:return(n=a.sent())?[3,4]:[5,s(We(e.right,t))];case 3:n=a.sent(),a.label=4;case 4:return[2,n];case 5:return[5,s(We(e.left,t))];case 6:return(r=a.sent())?[5,s(We(e.right,t))]:[3,8];case 7:r=a.sent(),a.label=8;case 8:return[2,r];case 9:return[5,s(We(e.left,t))];case 10:return null===(o=a.sent())||void 0===o?[3,11]:(i=o,[3,13]);case 11:return[5,s(We(e.right,t))];case 12:i=a.sent(),a.label=13;case 13:return[2,i];case 14:throw new SyntaxError("Unexpected token "+e.operator)}})}function me(e,t,n){var r,i,o,l,u,c,h,p,f,m,g;return void 0===n&&(n={}),a(this,function(a){switch(a.label){case 0:return r=n.getObj,i=void 0!==r&&r,o=n.getVar,l=void 0!==o&&o,"Super"!==e.object.type?[3,2]:[5,s(Ce(e.object,t,{getProto:!0}))];case 1:return u=a.sent(),[3,4];case 2:return[5,s(We(e.object,t))];case 3:u=a.sent(),a.label=4;case 4:return i?[2,u]:(h=!1,e.computed?[5,s(We(e.property,t))]:[3,6]);case 5:return c=a.sent(),[3,7];case 6:"PrivateIdentifier"===e.property.type?(c=e.property.name,h=!0):c=e.property.name,a.label=7;case 7:return h&&(u=u[K]),l?(p=k(u,c),"Super"===e.object.type&&p?(g=t.find("this").get(),f=N(c),d(g,f,{set:p}),[2,new Z(g,f)]):[2,new Z(u,c)]):(m=w(u,c),"Super"===e.object.type&&m?(g=t.find("this").get(),e.optional&&null==g?[2,void 0]:[2,m.call(g)]):e.optional&&null==u?[2,void 0]:[2,u[c]])}})}function ge(e,t){var n;return a(this,function(r){switch(r.label){case 0:return[5,s(We(e.test,t))];case 1:return r.sent()?[5,s(We(e.consequent,t))]:[3,3];case 2:return n=r.sent(),[3,5];case 3:return[5,s(We(e.alternate,t))];case 4:n=r.sent(),r.label=5;case 5:return[2,n]}})}function ve(e,t){var n,r,i,o,l,u,c,d,h,p,f,m,g,v,y;return a(this,function(a){switch(a.label){case 0:return"MemberExpression"!==e.callee.type?[3,5]:[5,s(me(e.callee,t,{getObj:!0}))];case 1:return r=a.sent(),e.callee.optional&&null==r?[2,void 0]:(i=void 0,o=!1,e.callee.computed?[5,s(We(e.callee.property,t))]:[3,3]);case 2:return i=a.sent(),[3,4];case 3:"PrivateIdentifier"===e.callee.property.type?(i=e.callee.property.name,o=!0):i=e.callee.property.name,a.label=4;case 4:if(l=r,o&&(l=l[K]),"Super"===e.callee.object.type?(u=t.find("this").get(),n=l[i].bind(u)):n=l[i],e.optional&&null==n)return[2,void 0];if("function"!==typeof n)throw new TypeError(i+" is not a function");if(n[V])throw new TypeError("Class constructor "+i+" cannot be invoked without 'new'");return[3,7];case 5:return r=t.find("this").get(),[5,s(We(e.callee,t))];case 6:if(n=a.sent(),e.optional&&null==n)return[2,void 0];if("function"!==typeof n||"Super"!==e.callee.type&&n[V]){if("Identifier"===e.callee.type)c=e.callee.name;else try{c=JSON.stringify(n)}catch(Xn){c=""+n}throw"function"!==typeof n?new TypeError(c+" is not a function"):new TypeError("Class constructor "+c+" cannot be invoked without 'new'")}a.label=7;case 7:d=[],h=0,a.label=8;case 8:return h":return n>r;case">=":return n>=r;case"<<":return n<>":return n>>r;case">>>":return n>>>r;case"+":return n+r;case"-":return n-r;case"*":return n*r;case"**":return Math.pow(n,r);case"/":return n/r;case"%":return n%r;case"|":return n|r;case"^":return n^r;case"&":return n&r;case"in":return n in r;case"instanceof":return n instanceof r;default:throw new SyntaxError("Unexpected token "+e.operator)}}function It(e,t){var n,r,i=e.left;if("Identifier"===i.type){if(!(r=At(i,t,{getVar:!0,throwErr:!1}))){var o=t.global().find("window").get();r=new Z(o,i.name)}}else{if("MemberExpression"!==i.type)return Mn(i,t,{feed:rn(e.right,t)});r=Lt(i,t,{getVar:!0})}var a=rn(e.right,t);switch(e.operator){case"=":return r.set(a),r.get();case"+=":return r.set(r.get()+a),r.get();case"-=":return r.set(r.get()-a),r.get();case"*=":return r.set(r.get()*a),r.get();case"/=":return r.set(r.get()/a),r.get();case"%=":return r.set(r.get()%a),r.get();case"**=":return r.set(Math.pow(r.get(),a)),r.get();case"<<=":return r.set(r.get()<>=":return r.set(r.get()>>a),r.get();case">>>=":return r.set(r.get()>>>a),r.get();case"|=":return r.set(r.get()|a),r.get();case"^=":return r.set(r.get()^a),r.get();case"&=":return r.set(r.get()&a),r.get();case"??=":return r.set(null!==(n=r.get())&&void 0!==n?n:a),r.get();case"&&=":return r.set(r.get()&&a),r.get();case"||=":return r.set(r.get()||a),r.get();default:throw new SyntaxError("Unexpected token "+e.operator)}}function Ft(e,t){var n;switch(e.operator){case"||":return rn(e.left,t)||rn(e.right,t);case"&&":return rn(e.left,t)&&rn(e.right,t);case"??":return null!==(n=rn(e.left,t))&&void 0!==n?n:rn(e.right,t);default:throw new SyntaxError("Unexpected token "+e.operator)}}function Lt(e,t,n){void 0===n&&(n={});var r,i,o=n.getObj,a=void 0!==o&&o,s=n.getVar,l=void 0!==s&&s;if(r="Super"===e.object.type?Vt(e.object,t,{getProto:!0}):rn(e.object,t),a)return r;var u=!1;if(e.computed?i=rn(e.property,t):"PrivateIdentifier"===e.property.type?(i=e.property.name,u=!0):i=e.property.name,u&&(r=r[K]),l){var c=k(r,i);if("Super"===e.object.type&&c){var h=t.find("this").get(),p=N(i);return d(h,p,{set:c}),new Z(h,p)}return new Z(r,i)}var f=w(r,i);if("Super"===e.object.type&&f){if(h=t.find("this").get(),e.optional&&null==h)return;return f.call(h)}return e.optional&&null==r?void 0:r[i]}function Ot(e,t){return rn(e.test,t)?rn(e.consequent,t):rn(e.alternate,t)}function Nt(e,t){var n,r;if("MemberExpression"===e.callee.type){if(r=Lt(e.callee,t,{getObj:!0}),e.callee.optional&&null==r)return;var i=void 0,o=!1;e.callee.computed?i=rn(e.callee.property,t):"PrivateIdentifier"===e.callee.property.type?(i=e.callee.property.name,o=!0):i=e.callee.property.name;var a=r;if(o&&(a=a[K]),"Super"===e.callee.object.type){var s=t.find("this").get();n=a[i].bind(s)}else n=a[i];if(e.optional&&null==n)return;if("function"!==typeof n)throw new TypeError(i+" is not a function");if(n[V])throw new TypeError("Class constructor "+i+" cannot be invoked without 'new'")}else{if(r=t.find("this").get(),n=rn(e.callee,t),e.optional&&null==n)return;if("function"!==typeof n||"Super"!==e.callee.type&&n[V]){var l;if("Identifier"===e.callee.type)l=e.callee.name;else try{l=JSON.stringify(n)}catch(Xn){l=""+n}throw"function"!==typeof n?new TypeError(l+" is not a function"):new TypeError("Class constructor "+l+" cannot be invoked without 'new'")}}for(var u=[],c=0;c-1;s--)e.body.splice(a[s],1);e.body=o.concat(e.body)}}function Rn(e,t){switch(e.type){case"VariableDeclaration":Cn(e,t,{hoist:!0});break;case"ForInStatement":case"ForOfStatement":"VariableDeclaration"===e.left.type&&Cn(e.left,t,{hoist:!0});case"ForStatement":"ForStatement"===e.type&&"VariableDeclaration"===e.init.type&&Cn(e.init,t,{hoist:!0});case"WhileStatement":case"DoWhileStatement":Rn(e.body,t);break;case"IfStatement":Rn(e.consequent,t),e.alternate&&Rn(e.alternate,t);break;case"BlockStatement":for(var n=0;n-1;c--)e.body.splice(l[c],1);e.body=o.concat(e.body)}return[2]}})}function Vn(e,t){var n,r,i,o,l;return a(this,function(a){switch(a.label){case 0:switch(e.type){case"VariableDeclaration":return[3,1];case"ForInStatement":case"ForOfStatement":return[3,3];case"ForStatement":return[3,5];case"WhileStatement":case"DoWhileStatement":return[3,7];case"IfStatement":return[3,9];case"BlockStatement":return[3,13];case"SwitchStatement":return[3,18];case"TryStatement":return[3,25]}return[3,38];case 1:return[5,s(ut(e,t,{hoist:!0}))];case 2:return a.sent(),[3,38];case 3:return"VariableDeclaration"!==e.left.type?[3,5]:[5,s(ut(e.left,t,{hoist:!0}))];case 4:a.sent(),a.label=5;case 5:return"ForStatement"!==e.type||"VariableDeclaration"!==e.init.type?[3,7]:[5,s(ut(e.init,t,{hoist:!0}))];case 6:a.sent(),a.label=7;case 7:return[5,s(Vn(e.body,t))];case 8:return a.sent(),[3,38];case 9:return[5,s(Vn(e.consequent,t))];case 10:return a.sent(),e.alternate?[5,s(Vn(e.alternate,t))]:[3,12];case 11:a.sent(),a.label=12;case 12:return[3,38];case 13:l=0,a.label=14;case 14:return lYn))throw new Error("unsupported ecmaVer");if(this.options.ecmaVersion=n,this.options.sourceType=a,i){var s=O();this.scope.let("globalThis",s),this.scope.let("window",s),this.scope.let("this",s)}else this.scope.let("globalThis",D),this.scope.let("window",D),this.scope.let("this",D);this.scope.const("module"===a?X:"exports",this.exports={})}return t.prototype.import=function(e,t){var n;if("string"===typeof e&&((n={})[e]=t,e=n),"object"===typeof e)for(var r=m(e),i=0;i=13)?te(function(){return a(this,function(e){switch(e.label){case 0:return[5,s(Hn(t,n))];case 1:return e.sent(),[5,s(We(t,n))];case 2:return e.sent(),[2]}})}()):(jn(t,n),rn(t,n))},t.version=J,t}()}(n(8202))},7183(e,t,n){"use strict";n.d(t,{Ay:()=>s});var r=n(2791),i=n(1210),o=n(5863),a=n(4539);const s=(0,r.Ay)({themeId:o.A,defaultTheme:i.A,rootShouldForwardProp:a.A})},7197(e,t,n){"use strict";var r=n(8898);t.X4=p,t.e$=f,t.tL=g,t.eM=function(e,t){const n=h(e),r=h(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)},t.a=m;var i=r(n(288)),o=r(n(8442));function a(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return(0,o.default)(e,t,n)}function s(e){e=e.slice(1);const t=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map(e=>e+e)),n?"rgb".concat(4===n.length?"a":"","(").concat(n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", "),")"):""}function l(e){if(e.type)return e;if("#"===e.charAt(0))return l(s(e));const t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(n))throw new Error((0,i.default)(9,e));let r,o=e.substring(t+1,e.length-1);if("color"===n){if(o=o.split(" "),r=o.shift(),4===o.length&&"/"===o[3].charAt(0)&&(o[3]=o[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(r))throw new Error((0,i.default)(10,r))}else o=o.split(",");return o=o.map(e=>parseFloat(e)),{type:n,values:o,colorSpace:r}}const u=e=>{const t=l(e);return t.values.slice(0,3).map((e,n)=>-1!==t.type.indexOf("hsl")&&0!==n?"".concat(e,"%"):e).join(" ")};function c(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return-1!==t.indexOf("rgb")?r=r.map((e,t)=>t<3?parseInt(e,10):e):-1!==t.indexOf("hsl")&&(r[1]="".concat(r[1],"%"),r[2]="".concat(r[2],"%")),r=-1!==t.indexOf("color")?"".concat(n," ").concat(r.join(" ")):"".concat(r.join(", ")),"".concat(t,"(").concat(r,")")}function d(e){e=l(e);const{values:t}=e,n=t[0],r=t[1]/100,i=t[2]/100,o=r*Math.min(i,1-i),a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e+n/30)%12;return i-o*Math.max(Math.min(t-3,9-t,1),-1)};let s="rgb";const u=[Math.round(255*a(0)),Math.round(255*a(8)),Math.round(255*a(4))];return"hsla"===e.type&&(s+="a",u.push(t[3])),c({type:s,values:u})}function h(e){let t="hsl"===(e=l(e)).type||"hsla"===e.type?l(d(e)).values:e.values;return t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function p(e,t){return e=l(e),t=a(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]="/".concat(t):e.values[3]=t,c(e)}function f(e,t){if(e=l(e),t=a(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return c(e)}function m(e,t){if(e=l(e),t=a(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(-1!==e.type.indexOf("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return c(e)}function g(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15;return h(e)>.5?f(e,t):m(e,t)}},7301(e,t,n){"use strict";n.d(t,{A:()=>i});var r=n(8915);function i(e,t){if(null==e)return{};var n,i,o=(0,r.A)(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(i=0;if,Gi:()=>h,J5:()=>c,NG:()=>g,OT:()=>s,TW:()=>l,WL:()=>a,_E:()=>d,a7:()=>u,ck:()=>y,lN:()=>v,p1:()=>m,vw:()=>p});var r=n(4107),i=n(5493),o=n(1367);const a="*",s="#209CEE",l="split_disable",u="split_textlength",c="split_punctuation",d=[l,c,u],h="highlight_disable",p="highlight_beforetrans",f="highlight_aftertrans",m=[h,p,f],g={pattern:"",enabled:!0,selector:"",keepSelector:"",blockSelector:"",terms:"",aiTerms:"",apiSlug:a,fromLang:a,toLang:a,textStyle:a,wrapOriginal:a,originalTextStyle:a,transOpen:a,textExtStyle:"",termsStyle:"",highlightStyle:"",selectStyle:"",parentStyle:"",grandStyle:"",injectJs:"",transOnly:a,transOnlyRevert:a,transOnlyRevertDelay:a,transOrder:a,transTag:a,transTitle:a,transStartHook:"",transEndHook:"",autoScan:a,hasRichText:a,hasShadowroot:a,scanAll:a,isPlainText:a,rootsSelector:"",ignoreSelector:"",splitParagraph:a,splitLength:0,highlightWords:a},v={pattern:"*",enabled:!0,selector:"h1, h2, h3, h4, h5, h6, li, p, dd, blockquote, figcaption, label, legend",keepSelector:"code, cite, math, .math, a:has(code)",blockSelector:"",terms:"",aiTerms:"",apiSlug:i.fF,fromLang:"auto",toLang:"zh-CN",textStyle:o.ns,wrapOriginal:"false",originalTextStyle:o.ns,transOpen:"false",textExtStyle:"",termsStyle:"font-weight: bold;",highlightStyle:"color: red;",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",parentStyle:"",grandStyle:"",injectJs:"",injectCss:"",transOnly:"false",transOnlyRevert:"false",transOnlyRevertDelay:"0.5",transTag:"font",transTitle:"false",transStartHook:"",transEndHook:"",autoScan:"true",hasRichText:"true",hasShadowroot:"false",scanAll:"false",isPlainText:"false",rootsSelector:"body",ignoreSelector:"button, footer, pre, mark, nav, svg, img[src*='.svg'], [class*='logo'] svg, [id*='logo'] svg",splitParagraph:l,splitLength:100,highlightWords:h,transOrder:"original-first"},y=[v];Object.entries({"en.wikipedia.org":{ignoreSelector:".button, code, footer, form, mark, pre, .mwe-math-element, .mw-editsection"},"news.ycombinator.com":{selector:"p, .titleline, .commtext, .hn-item-title, .hn-comment-text, .hn-story-title",keepSelector:"code, img, svg, pre, .sitebit",ignoreSelector:"button, code, footer, form, header, mark, nav, pre, .reply",autoScan:"false"},"twitter.com, https://x.com":{selector:"[data-testid='tweetText'], [data-testid='twitter-article-title'], [data-testid='UserDescription'], .public-DraftStyleDefault-block, span.text-body, div.css-175oi2r.r-3pj75a div.css-175oi2r>span, div.css-175oi2r.r-3pj75a li>span, div.r-1s2bzr4>div.r-16dba41, div.r-16y2uox>div.r-1jeg54m",keepSelector:"img, svg, a, span:has(a), div:has(a)",ignoreSelector:"[data-testid='videoPlayer'], [data-testid^='tweetTextarea']",autoScan:"false",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;"},"www.youtube.com/live_chat":{rootsSelector:"div#items",selector:"span.yt-live-chat-text-message-renderer",autoScan:"false"},"www.youtube.com":{rootsSelector:"ytd-page-manager",ignoreSelector:"aside, button, footer, form, header, pre, mark, nav, #player, #container, .caption-window, .ytp-settings-menu, #kiss-youtube-subtitle-list-container",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",parentStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",grandStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;"},"web.telegram.org":{autoScan:"false",selector:".text-content, .embedded-text-wrapper",rootsSelector:".Transition"},"github.com":{autoScan:"false",selector:'h1, h2, h3, h4, h5, h6, .markdown-body li, p, dd, blockquote, figcaption, label, legend, .user-profile-bio>div, [data-testid="results-list"] .search-match, .Subhead-description, [class^="prc-SelectPanel-Subtitle-"], [class^="prc-ActionList-ItemLabel-"], [role="dialog"] .overflow-auto, .h4, .repos-list-description, .discussion-title, [class*="PinnedIssue-module__Link"] span, .js-wiki-sidebar-page-container :is(.Truncate-text, .Link--primary)',ignoreSelector:"button, p.pinned-item-desc+p"}}).map(e=>{let[t,n]=e;return(0,r.A)((0,r.A)({},n),{},{pattern:t})})},7325(e,t,n){"use strict";n.d(t,{QF:()=>d,uk:()=>u,v0:()=>h});var r=n(7877),i=n(4181),o=n(252),a=n(1223),s=n(2770),l=n(5628);const u=async()=>{try{o.aQ&&!(0,a._9)()?await(0,s.Ru)(r.Eev):await caches.delete(r.bzl)}catch(e){(0,i.h9)("clean caches",e)}},c=async(e,t)=>{let n=new Request(e,t);if("GET"!==n.method){const e=await n.text(),t=new URL(n.url);t.pathname+=e,n=new Request(t.toString(),{method:"GET"})}return n},d=(e,t)=>o.aQ&&!(0,a._9)()?(0,s.Ru)(r.QzF,{input:e,init:t}):(async e=>{let{input:t,init:n,expect:o}=e;try{const e=await c(t,n),i=await caches.open(r.bzl),a=await i.match(e);if(a)return await(0,l.x)(a,o)}catch(a){(0,i.h9)("get cache",a)}return null})({input:e,init:t});const h=(e,t,n)=>o.aQ&&!(0,a._9)()?(0,s.Ru)(r.j7m,{input:e,init:t,data:n}):(async e=>{let{input:t,init:n,data:o,maxAge:a=r.$kn}=e;try{const e=await c(t,n),i=await caches.open(r.bzl),s=new Response(JSON.stringify(o),{status:200,headers:{"Content-Type":"application/json","Cache-Control":"max-age=".concat(a)}});await i.put(e,s)}catch(s){(0,i.h9)("put cache",s)}})({input:e,init:t,data:n})},7458(e,t,n){"use strict";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(1446)},7461(e,t,n){"use strict";var r;n.d(t,{A:()=>s});var i=n(8661);let o=0;const a=(r||(r=n.t(i,2)))["useId".toString()];function s(e){if(void 0!==a){const t=a();return null!=e?e:t}return function(e){const[t,n]=i.useState(e),r=e||t;return i.useEffect(()=>{null==t&&(o+=1,n("mui-".concat(o)))},[t]),r}(e)}},7588(e,t,n){"use strict";n.d(t,{CQ:()=>l,Hy:()=>u,Ls:()=>a,N8:()=>i,W2:()=>o,aZ:()=>s});var r=n(2398);const i="https://".concat(r.jM,"/translate"),o="https://".concat(r.jM,"/subtitle"),a="https://".concat(r.jM,"/detectlang"),s="https://".concat(r.jM,"/bingdict"),l="https://".concat(r.jM,"/dict"),u="https://".concat(r.jM,"/context")},7599(e,t,n){"use strict";n.d(t,{A:()=>i});const r=e=>e,i=(()=>{let e=r;return{configure(t){e=t},generate:t=>e(t),reset(){e=r}}})()},7601(e,t,n){"use strict";function r(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}n.d(t,{A:()=>r})},7782(e,t,n){"use strict";n.d(t,{Ay:()=>c});var r=n(8915),i=n(4320);const o=["duration","easing","delay"],a={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},s={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function l(e){return"".concat(Math.round(e),"ms")}function u(e){if(!e)return 0;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}function c(e){const t=(0,i.A)({},a,e.easing),n=(0,i.A)({},s,e.duration);return(0,i.A)({getAutoHeightDuration:u,create:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{duration:a=n.standard,easing:s=t.easeInOut,delay:u=0}=i;(0,r.A)(i,o);return(Array.isArray(e)?e:[e]).map(e=>"".concat(e," ").concat("string"===typeof a?a:l(a)," ").concat(s," ").concat("string"===typeof u?u:l(u))).join(",")}},e,{easing:t,duration:n})}},7811(e,t,n){"use strict";var r=n(8661),i=Symbol.for("react.element"),o=Symbol.for("react.fragment"),a=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,o={},u=null,c=null;for(r in void 0!==n&&(u=""+n),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(c=t.ref),t)a.call(t,r)&&!l.hasOwnProperty(r)&&(o[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===o[r]&&(o[r]=t[r]);return{$$typeof:i,type:e,key:u,ref:c,props:o,_owner:s.current}}t.Fragment=o,t.jsx=u,t.jsxs=u},7830(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(4849).A},7877(e,t,n){"use strict";n.d(t,{$1M:()=>o.$1,$ET:()=>p.$E,$Kd:()=>o.$K,$QD:()=>o.$Q,$kn:()=>u.$k,AFg:()=>s.AF,AXe:()=>i.AX,An9:()=>o.An,As$:()=>p.As,Azs:()=>s.Az,BM1:()=>l.BM,BQZ:()=>s.BQ,C39:()=>r.C3,C3L:()=>o.C3,CQi:()=>c.CQ,CWU:()=>u.CW,CxD:()=>s.Cx,DCB:()=>d.DC,EDO:()=>p.ED,EEo:()=>o.EE,EWA:()=>d.EW,Ed3:()=>u.Ed,EeC:()=>s.Ee,Eev:()=>d.Ee,EjO:()=>o.Ej,EsI:()=>o.Es,Es_:()=>a.Es,F$3:()=>o.F$,F16:()=>o.F1,FS6:()=>o.FS,F_o:()=>d.F_,FsV:()=>o.Fs,G8K:()=>o.G8,GDU:()=>o.GD,GRp:()=>d.GR,Gie:()=>i.Gi,H74:()=>s.H7,HHP:()=>o.HH,Hy8:()=>c.Hy,HzO:()=>p.Hz,IFN:()=>s.IF,IaM:()=>d.I,Imq:()=>o.Im,J4u:()=>d.J4,J5R:()=>i.J5,JCj:()=>u.JC,JIP:()=>o.JI,JWB:()=>o.JW,Jg9:()=>s.Jg,K8D:()=>d.K8,KBl:()=>o.KB,L32:()=>o.L3,LsT:()=>c.Ls,Mai:()=>d.M,N8G:()=>c.N8,NGo:()=>i.NG,NQu:()=>o.NQ,Nol:()=>s.No,O09:()=>o.O0,OTD:()=>i.OT,PPd:()=>o.PP,Pco:()=>a.Pc,Qfh:()=>o.Qf,Qs8:()=>a.Qs,QsO:()=>p.Qs,QzF:()=>d.Qz,Reo:()=>r.Re,Rfh:()=>d.Rf,Rrc:()=>p.Rr,S6X:()=>o.S6,S6q:()=>o.zJ,SEs:()=>a.zh,SQ0:()=>o.SQ,SXq:()=>p.SX,T2s:()=>s.T2,THG:()=>l.TH,TPN:()=>s.TP,TWY:()=>i.TW,TYN:()=>p.TY,U$w:()=>o.U$,UF6:()=>o.UF,UFr:()=>o.Bi,UPC:()=>s.UP,VEm:()=>p.VE,VFS:()=>u.VF,VfS:()=>p.Vf,VhI:()=>s.Vh,Vnn:()=>a.Vn,VwZ:()=>r.Vw,W26:()=>c.W2,WDZ:()=>p.WD,WL9:()=>i.WL,WTh:()=>o.WT,Wdi:()=>o.Wd,WwB:()=>o.Ww,X6r:()=>o.X6,XEV:()=>u.XE,XRX:()=>d.XR,XZv:()=>s.XZ,Ymt:()=>o.Ym,Z2L:()=>o.Z2,_E_:()=>i._E,_TK:()=>d._T,_Vq:()=>d._V,_sN:()=>p._s,a7S:()=>i.a7,aZh:()=>c.aZ,adh:()=>o.ad,aqb:()=>s.aq,axl:()=>s.ax,b9x:()=>o.b9,bCM:()=>o.bC,bNe:()=>o.bN,bqx:()=>o.bq,bzl:()=>u.bz,c0T:()=>o.c0,cO5:()=>d.cO,cPn:()=>a.cP,cbe:()=>o.cb,ckw:()=>i.ck,dGW:()=>o.dG,dyy:()=>o.dy,e70:()=>o.e7,eA2:()=>o.eA,eCV:()=>u.eC,eUB:()=>s.eU,ea4:()=>p.e,edy:()=>o.ed,eeL:()=>s.ee,fDS:()=>o.fD,fFW:()=>o.fF,fFq:()=>s.fF,fSx:()=>r.fS,fkE:()=>o.fk,fqf:()=>o.fq,grg:()=>d.gr,h8v:()=>o.h8,hrO:()=>p.hr,i8R:()=>o.i8,iPC:()=>u.iP,iVS:()=>o.iV,j7m:()=>d.j7,jM6:()=>r.jM,jgE:()=>o.jg,jy$:()=>o.jy,k0k:()=>o.k0,kXF:()=>o.kX,kYB:()=>d.kY,kYm:()=>o.kY,k_j:()=>d.k_,km2:()=>d.km,lLy:()=>o.lL,lNu:()=>i.lN,la7:()=>s.l,lbn:()=>o.lb,lgC:()=>u.lg,loo:()=>o.lo,mSZ:()=>o.mS,mmp:()=>o.mm,moZ:()=>s.mo,msE:()=>p.ms,mul:()=>d.mu,n10:()=>d.n1,nRB:()=>d.nR,n_K:()=>h.n_,nsG:()=>p.ns,ojT:()=>h.oj,p1w:()=>i.p1,q77:()=>o.q7,qxj:()=>h.qx,r$0:()=>u.r$,r1p:()=>u.r1,rKK:()=>u.rK,rUY:()=>o.rU,s1S:()=>o.s1,sNP:()=>o.sN,sRu:()=>d.sR,sgk:()=>u.sg,snk:()=>o.sn,tPe:()=>h.tP,tok:()=>o.to,u2k:()=>d.u2,uMq:()=>a.uM,ue1:()=>s.ue,ul7:()=>o.ul,uxg:()=>s.ux,vGH:()=>h.vG,vH2:()=>o.vH,vLL:()=>d.vL,vcx:()=>s.vc,vwl:()=>i.vw,w62:()=>o.w6,wPo:()=>d.wP,x2F:()=>d.x2,xN$:()=>o.xN,xfV:()=>o.xf,xhA:()=>o.xh,xoZ:()=>a.xo,yDH:()=>o.yD,yDM:()=>u.yD,ya_:()=>s.y,yi6:()=>u.yi,yzF:()=>s.yz,zMP:()=>p.zM,zwp:()=>p.zw});var r=n(2398),i=n(7306),o=n(5493),a=n(4307),s=n(3565),l=n(3417),u=n(2216),c=n(7588),d=n(328),h=n(1822),p=n(1367)},7922(e,t,n){var r=n(7930);function i(e,t){var n,i=null;if(!e||"string"!==typeof e)return i;for(var o,a,s=r(e),l="function"===typeof t,u=0,c=s.length;uo});var r=n(9476),i=n(2639);function o(e){var t=(0,i.A)(e,"string");return"symbol"==(0,r.A)(t)?t:t+""}},8201(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close")},8202(e,t){!function(e){"use strict";var t=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,80,3,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,343,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,726,6,110,6,6,9,4759,9,787719,239],n=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,2,60,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,496,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191],r="\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65",i="\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc",o={3:"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",5:"class enum extends super const export import",6:"enum",strict:"implements interface let package private protected public static yield",strictBind:"eval arguments"},a="break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this",s={5:a,"5module":a+" export import",6:a+" const class extends export import super"},l=/^in(stanceof)?$/,u=new RegExp("["+i+"]"),c=new RegExp("["+i+r+"]");function d(e,t){for(var n=65536,r=0;re)return!1;if((n+=t[r+1])>=e)return!0}return!1}function h(e,t){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&u.test(String.fromCharCode(e)):!1!==t&&d(e,n)))}function p(e,r){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&c.test(String.fromCharCode(e)):!1!==r&&(d(e,n)||d(e,t)))))}var f=function(e,t){void 0===t&&(t={}),this.label=e,this.keyword=t.keyword,this.beforeExpr=!!t.beforeExpr,this.startsExpr=!!t.startsExpr,this.isLoop=!!t.isLoop,this.isAssign=!!t.isAssign,this.prefix=!!t.prefix,this.postfix=!!t.postfix,this.binop=t.binop||null,this.updateContext=null};function m(e,t){return new f(e,{beforeExpr:!0,binop:t})}var g={beforeExpr:!0},v={startsExpr:!0},y={};function b(e,t){return void 0===t&&(t={}),t.keyword=e,y[e]=new f(e,t)}var A={num:new f("num",v),regexp:new f("regexp",v),string:new f("string",v),name:new f("name",v),privateId:new f("privateId",v),eof:new f("eof"),bracketL:new f("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new f("]"),braceL:new f("{",{beforeExpr:!0,startsExpr:!0}),braceR:new f("}"),parenL:new f("(",{beforeExpr:!0,startsExpr:!0}),parenR:new f(")"),comma:new f(",",g),semi:new f(";",g),colon:new f(":",g),dot:new f("."),question:new f("?",g),questionDot:new f("?."),arrow:new f("=>",g),template:new f("template"),invalidTemplate:new f("invalidTemplate"),ellipsis:new f("...",g),backQuote:new f("`",v),dollarBraceL:new f("${",{beforeExpr:!0,startsExpr:!0}),eq:new f("=",{beforeExpr:!0,isAssign:!0}),assign:new f("_=",{beforeExpr:!0,isAssign:!0}),incDec:new f("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new f("!/~",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:m("||",1),logicalAND:m("&&",2),bitwiseOR:m("|",3),bitwiseXOR:m("^",4),bitwiseAND:m("&",5),equality:m("==/!=/===/!==",6),relational:m("/<=/>=",7),bitShift:m("<>/>>>",8),plusMin:new f("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:m("%",10),star:m("*",10),slash:m("/",10),starstar:new f("**",{beforeExpr:!0}),coalesce:m("??",1),_break:b("break"),_case:b("case",g),_catch:b("catch"),_continue:b("continue"),_debugger:b("debugger"),_default:b("default",g),_do:b("do",{isLoop:!0,beforeExpr:!0}),_else:b("else",g),_finally:b("finally"),_for:b("for",{isLoop:!0}),_function:b("function",v),_if:b("if"),_return:b("return",g),_switch:b("switch"),_throw:b("throw",g),_try:b("try"),_var:b("var"),_const:b("const"),_while:b("while",{isLoop:!0}),_with:b("with"),_new:b("new",{beforeExpr:!0,startsExpr:!0}),_this:b("this",v),_super:b("super",v),_class:b("class",v),_extends:b("extends",g),_export:b("export"),_import:b("import",v),_null:b("null",v),_true:b("true",v),_false:b("false",v),_in:b("in",{beforeExpr:!0,binop:7}),_instanceof:b("instanceof",{beforeExpr:!0,binop:7}),_typeof:b("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:b("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:b("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},x=/\r\n?|\n|\u2028|\u2029/,w=new RegExp(x.source,"g");function k(e){return 10===e||13===e||8232===e||8233===e}function S(e,t,n){void 0===n&&(n=e.length);for(var r=t;r>10),56320+(1023&e)))}var N=/(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/,z=function(e,t){this.line=e,this.column=t};z.prototype.offset=function(e){return new z(this.line,this.column+e)};var j=function(e,t,n){this.start=t,this.end=n,null!==e.sourceFile&&(this.source=e.sourceFile)};function R(e,t){for(var n=1,r=0;;){var i=S(e,r,t);if(i<0)return new z(n,t-r);++n,r=i}}var M={ecmaVersion:null,sourceType:"script",onInsertedSemicolon:null,onTrailingComma:null,allowReserved:null,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowAwaitOutsideFunction:null,allowSuperOutsideMethod:null,allowHashBang:!1,checkPrivateFields:!0,locations:!1,onToken:null,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null,preserveParens:!1},B=!1;function W(e){var t={};for(var n in M)t[n]=e&&P(e,n)?e[n]:M[n];if("latest"===t.ecmaVersion?t.ecmaVersion=1e8:null==t.ecmaVersion?(!B&&"object"===typeof console&&console.warn&&(B=!0,console.warn("Since Acorn 8.0.0, options.ecmaVersion is required.\nDefaulting to 2020, but this will stop working in the future.")),t.ecmaVersion=11):t.ecmaVersion>=2015&&(t.ecmaVersion-=2009),null==t.allowReserved&&(t.allowReserved=t.ecmaVersion<5),e&&null!=e.allowHashBang||(t.allowHashBang=t.ecmaVersion>=14),I(t.onToken)){var r=t.onToken;t.onToken=function(e){return r.push(e)}}return I(t.onComment)&&(t.onComment=U(t,t.onComment)),t}function U(e,t){return function(n,r,i,o,a,s){var l={type:n?"Block":"Line",value:r,start:i,end:o};e.locations&&(l.loc=new j(this,a,s)),e.ranges&&(l.range=[i,o]),t.push(l)}}var H=1,V=2,G=4,K=8,q=16,$=32,Y=64,X=128,J=256,Q=512,Z=H|V|J;function ee(e,t){return V|(e?G:0)|(t?K:0)}var te=0,ne=1,re=2,ie=3,oe=4,ae=5,se=function(e,t,n){this.options=e=W(e),this.sourceFile=e.sourceFile,this.keywords=L(s[e.ecmaVersion>=6?6:"module"===e.sourceType?"5module":5]);var r="";!0!==e.allowReserved&&(r=o[e.ecmaVersion>=6?6:5===e.ecmaVersion?5:3],"module"===e.sourceType&&(r+=" await")),this.reservedWords=L(r);var i=(r?r+" ":"")+o.strict;this.reservedWordsStrict=L(i),this.reservedWordsStrictBind=L(i+" "+o.strictBind),this.input=String(t),this.containsEsc=!1,n?(this.pos=n,this.lineStart=this.input.lastIndexOf("\n",n-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(x).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=A.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.inModule="module"===e.sourceType,this.strict=this.inModule||this.strictDirective(this.pos),this.potentialArrowAt=-1,this.potentialArrowInForAwait=!1,this.yieldPos=this.awaitPos=this.awaitIdentPos=0,this.labels=[],this.undefinedExports=Object.create(null),0===this.pos&&e.allowHashBang&&"#!"===this.input.slice(0,2)&&this.skipLineComment(2),this.scopeStack=[],this.enterScope(H),this.regexpState=null,this.privateNameStack=[]},le={inFunction:{configurable:!0},inGenerator:{configurable:!0},inAsync:{configurable:!0},canAwait:{configurable:!0},allowSuper:{configurable:!0},allowDirectSuper:{configurable:!0},treatFunctionsAsVar:{configurable:!0},allowNewDotTarget:{configurable:!0},inClassStaticBlock:{configurable:!0}};se.prototype.parse=function(){var e=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(e)},le.inFunction.get=function(){return(this.currentVarScope().flags&V)>0},le.inGenerator.get=function(){return(this.currentVarScope().flags&K)>0},le.inAsync.get=function(){return(this.currentVarScope().flags&G)>0},le.canAwait.get=function(){for(var e=this.scopeStack.length-1;e>=0;e--){var t=this.scopeStack[e].flags;if(t&(J|Q))return!1;if(t&V)return(t&G)>0}return this.inModule&&this.options.ecmaVersion>=13||this.options.allowAwaitOutsideFunction},le.allowSuper.get=function(){return(this.currentThisScope().flags&Y)>0||this.options.allowSuperOutsideMethod},le.allowDirectSuper.get=function(){return(this.currentThisScope().flags&X)>0},le.treatFunctionsAsVar.get=function(){return this.treatFunctionsAsVarInScope(this.currentScope())},le.allowNewDotTarget.get=function(){for(var e=this.scopeStack.length-1;e>=0;e--){var t=this.scopeStack[e].flags;if(t&(J|Q)||t&V&&!(t&q))return!0}return!1},le.inClassStaticBlock.get=function(){return(this.currentVarScope().flags&J)>0},se.extend=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var n=this,r=0;r=,?^&]/.test(i)||"!"===i&&"="===this.input.charAt(r+1))}e+=t[0].length,C.lastIndex=e,e+=C.exec(this.input)[0].length,";"===this.input[e]&&e++}},ue.eat=function(e){return this.type===e&&(this.next(),!0)},ue.isContextual=function(e){return this.type===A.name&&this.value===e&&!this.containsEsc},ue.eatContextual=function(e){return!!this.isContextual(e)&&(this.next(),!0)},ue.expectContextual=function(e){this.eatContextual(e)||this.unexpected()},ue.canInsertSemicolon=function(){return this.type===A.eof||this.type===A.braceR||x.test(this.input.slice(this.lastTokEnd,this.start))},ue.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&&this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0},ue.semicolon=function(){this.eat(A.semi)||this.insertSemicolon()||this.unexpected()},ue.afterTrailingComma=function(e,t){if(this.type===e)return this.options.onTrailingComma&&this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),t||this.next(),!0},ue.expect=function(e){this.eat(e)||this.unexpected()},ue.unexpected=function(e){this.raise(null!=e?e:this.start,"Unexpected token")};var de=function(){this.shorthandAssign=this.trailingComma=this.parenthesizedAssign=this.parenthesizedBind=this.doubleProto=-1};ue.checkPatternErrors=function(e,t){if(e){e.trailingComma>-1&&this.raiseRecoverable(e.trailingComma,"Comma is not permitted after the rest element");var n=t?e.parenthesizedAssign:e.parenthesizedBind;n>-1&&this.raiseRecoverable(n,t?"Assigning to rvalue":"Parenthesized pattern")}},ue.checkExpressionErrors=function(e,t){if(!e)return!1;var n=e.shorthandAssign,r=e.doubleProto;if(!t)return n>=0||r>=0;n>=0&&this.raise(n,"Shorthand property assignments are valid only in destructuring patterns"),r>=0&&this.raiseRecoverable(r,"Redefinition of __proto__ property")},ue.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos55295&&r<56320)return!0;if(h(r,!0)){for(var i=n+1;p(r=this.input.charCodeAt(i),!0);)++i;if(92===r||r>55295&&r<56320)return!0;var o=this.input.slice(n,i);if(!l.test(o))return!0}return!1},he.isAsyncFunction=function(){if(this.options.ecmaVersion<8||!this.isContextual("async"))return!1;C.lastIndex=this.pos;var e,t=C.exec(this.input),n=this.pos+t[0].length;return!x.test(this.input.slice(this.pos,n))&&"function"===this.input.slice(n,n+8)&&(n+8===this.input.length||!(p(e=this.input.charCodeAt(n+8))||e>55295&&e<56320))},he.isUsingKeyword=function(e,t){if(this.options.ecmaVersion<17||!this.isContextual(e?"await":"using"))return!1;C.lastIndex=this.pos;var n=C.exec(this.input),r=this.pos+n[0].length;if(x.test(this.input.slice(this.pos,r)))return!1;if(e){var i,o=r+5;if("using"!==this.input.slice(r,o)||o===this.input.length||p(i=this.input.charCodeAt(o))||i>55295&&i<56320)return!1;C.lastIndex=o;var a=C.exec(this.input);if(a&&x.test(this.input.slice(o,o+a[0].length)))return!1}if(t){var s,l=r+2;if("of"===this.input.slice(r,l)&&(l===this.input.length||!p(s=this.input.charCodeAt(l))&&!(s>55295&&s<56320)))return!1}var u=this.input.charCodeAt(r);return h(u,!0)||92===u},he.isAwaitUsing=function(e){return this.isUsingKeyword(!0,e)},he.isUsing=function(e){return this.isUsingKeyword(!1,e)},he.parseStatement=function(e,t,n){var r,i=this.type,o=this.startNode();switch(this.isLet(e)&&(i=A._var,r="let"),i){case A._break:case A._continue:return this.parseBreakContinueStatement(o,i.keyword);case A._debugger:return this.parseDebuggerStatement(o);case A._do:return this.parseDoStatement(o);case A._for:return this.parseForStatement(o);case A._function:return e&&(this.strict||"if"!==e&&"label"!==e)&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(o,!1,!e);case A._class:return e&&this.unexpected(),this.parseClass(o,!0);case A._if:return this.parseIfStatement(o);case A._return:return this.parseReturnStatement(o);case A._switch:return this.parseSwitchStatement(o);case A._throw:return this.parseThrowStatement(o);case A._try:return this.parseTryStatement(o);case A._const:case A._var:return r=r||this.value,e&&"var"!==r&&this.unexpected(),this.parseVarStatement(o,r);case A._while:return this.parseWhileStatement(o);case A._with:return this.parseWithStatement(o);case A.braceL:return this.parseBlock(!0,o);case A.semi:return this.parseEmptyStatement(o);case A._export:case A._import:if(this.options.ecmaVersion>10&&i===A._import){C.lastIndex=this.pos;var a=C.exec(this.input),s=this.pos+a[0].length,l=this.input.charCodeAt(s);if(40===l||46===l)return this.parseExpressionStatement(o,this.parseExpression())}return this.options.allowImportExportEverywhere||(t||this.raise(this.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.start,"'import' and 'export' may appear only with 'sourceType: module'")),i===A._import?this.parseImport(o):this.parseExport(o,n);default:if(this.isAsyncFunction())return e&&this.unexpected(),this.next(),this.parseFunctionStatement(o,!0,!e);var u=this.isAwaitUsing(!1)?"await using":this.isUsing(!1)?"using":null;if(u)return t&&"script"===this.options.sourceType&&this.raise(this.start,"Using declaration cannot appear in the top level when source type is `script`"),"await using"===u&&(this.canAwait||this.raise(this.start,"Await using cannot appear outside of async function"),this.next()),this.next(),this.parseVar(o,!1,u),this.semicolon(),this.finishNode(o,"VariableDeclaration");var c=this.value,d=this.parseExpression();return i===A.name&&"Identifier"===d.type&&this.eat(A.colon)?this.parseLabeledStatement(o,c,d,e):this.parseExpressionStatement(o,d)}},he.parseBreakContinueStatement=function(e,t){var n="break"===t;this.next(),this.eat(A.semi)||this.insertSemicolon()?e.label=null:this.type!==A.name?this.unexpected():(e.label=this.parseIdent(),this.semicolon());for(var r=0;r=6?this.eat(A.semi):this.semicolon(),this.finishNode(e,"DoWhileStatement")},he.parseForStatement=function(e){this.next();var t=this.options.ecmaVersion>=9&&this.canAwait&&this.eatContextual("await")?this.lastTokStart:-1;if(this.labels.push(pe),this.enterScope(0),this.expect(A.parenL),this.type===A.semi)return t>-1&&this.unexpected(t),this.parseFor(e,null);var n=this.isLet();if(this.type===A._var||this.type===A._const||n){var r=this.startNode(),i=n?"let":this.value;return this.next(),this.parseVar(r,!0,i),this.finishNode(r,"VariableDeclaration"),this.parseForAfterInit(e,r,t)}var o=this.isContextual("let"),a=!1,s=this.isUsing(!0)?"using":this.isAwaitUsing(!0)?"await using":null;if(s){var l=this.startNode();return this.next(),"await using"===s&&this.next(),this.parseVar(l,!0,s),this.finishNode(l,"VariableDeclaration"),this.parseForAfterInit(e,l,t)}var u=this.containsEsc,c=new de,d=this.start,h=t>-1?this.parseExprSubscripts(c,"await"):this.parseExpression(!0,c);return this.type===A._in||(a=this.options.ecmaVersion>=6&&this.isContextual("of"))?(t>-1?(this.type===A._in&&this.unexpected(t),e.await=!0):a&&this.options.ecmaVersion>=8&&(h.start!==d||u||"Identifier"!==h.type||"async"!==h.name?this.options.ecmaVersion>=9&&(e.await=!1):this.unexpected()),o&&a&&this.raise(h.start,"The left-hand side of a for-of loop may not start with 'let'."),this.toAssignable(h,!1,c),this.checkLValPattern(h),this.parseForIn(e,h)):(this.checkExpressionErrors(c,!0),t>-1&&this.unexpected(t),this.parseFor(e,h))},he.parseForAfterInit=function(e,t,n){return(this.type===A._in||this.options.ecmaVersion>=6&&this.isContextual("of"))&&1===t.declarations.length?(this.options.ecmaVersion>=9&&(this.type===A._in?n>-1&&this.unexpected(n):e.await=n>-1),this.parseForIn(e,t)):(n>-1&&this.unexpected(n),this.parseFor(e,t))},he.parseFunctionStatement=function(e,t,n){return this.next(),this.parseFunction(e,ge|(n?0:ve),!1,t)},he.parseIfStatement=function(e){return this.next(),e.test=this.parseParenExpression(),e.consequent=this.parseStatement("if"),e.alternate=this.eat(A._else)?this.parseStatement("if"):null,this.finishNode(e,"IfStatement")},he.parseReturnStatement=function(e){return this.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.start,"'return' outside of function"),this.next(),this.eat(A.semi)||this.insertSemicolon()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")},he.parseSwitchStatement=function(e){var t;this.next(),e.discriminant=this.parseParenExpression(),e.cases=[],this.expect(A.braceL),this.labels.push(fe),this.enterScope(0);for(var n=!1;this.type!==A.braceR;)if(this.type===A._case||this.type===A._default){var r=this.type===A._case;t&&this.finishNode(t,"SwitchCase"),e.cases.push(t=this.startNode()),t.consequent=[],this.next(),r?t.test=this.parseExpression():(n&&this.raiseRecoverable(this.lastTokStart,"Multiple default clauses"),n=!0,t.test=null),this.expect(A.colon)}else t||this.unexpected(),t.consequent.push(this.parseStatement(null));return this.exitScope(),t&&this.finishNode(t,"SwitchCase"),this.next(),this.labels.pop(),this.finishNode(e,"SwitchStatement")},he.parseThrowStatement=function(e){return this.next(),x.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,"Illegal newline after throw"),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")};var me=[];he.parseCatchClauseParam=function(){var e=this.parseBindingAtom(),t="Identifier"===e.type;return this.enterScope(t?$:0),this.checkLValPattern(e,t?oe:re),this.expect(A.parenR),e},he.parseTryStatement=function(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.type===A._catch){var t=this.startNode();this.next(),this.eat(A.parenL)?t.param=this.parseCatchClauseParam():(this.options.ecmaVersion<10&&this.unexpected(),t.param=null,this.enterScope(0)),t.body=this.parseBlock(!1),this.exitScope(),e.handler=this.finishNode(t,"CatchClause")}return e.finalizer=this.eat(A._finally)?this.parseBlock():null,e.handler||e.finalizer||this.raise(e.start,"Missing catch or finally clause"),this.finishNode(e,"TryStatement")},he.parseVarStatement=function(e,t,n){return this.next(),this.parseVar(e,!1,t,n),this.semicolon(),this.finishNode(e,"VariableDeclaration")},he.parseWhileStatement=function(e){return this.next(),e.test=this.parseParenExpression(),this.labels.push(pe),e.body=this.parseStatement("while"),this.labels.pop(),this.finishNode(e,"WhileStatement")},he.parseWithStatement=function(e){return this.strict&&this.raise(this.start,"'with' in strict mode"),this.next(),e.object=this.parseParenExpression(),e.body=this.parseStatement("with"),this.finishNode(e,"WithStatement")},he.parseEmptyStatement=function(e){return this.next(),this.finishNode(e,"EmptyStatement")},he.parseLabeledStatement=function(e,t,n,r){for(var i=0,o=this.labels;i=0;s--){var l=this.labels[s];if(l.statementStart!==e.start)break;l.statementStart=this.start,l.kind=a}return this.labels.push({name:t,kind:a,statementStart:this.start}),e.body=this.parseStatement(r?-1===r.indexOf("label")?r+"label":r:"label"),this.labels.pop(),e.label=n,this.finishNode(e,"LabeledStatement")},he.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},he.parseBlock=function(e,t,n){for(void 0===e&&(e=!0),void 0===t&&(t=this.startNode()),t.body=[],this.expect(A.braceL),e&&this.enterScope(0);this.type!==A.braceR;){var r=this.parseStatement(null);t.body.push(r)}return n&&(this.strict=!1),this.next(),e&&this.exitScope(),this.finishNode(t,"BlockStatement")},he.parseFor=function(e,t){return e.init=t,this.expect(A.semi),e.test=this.type===A.semi?null:this.parseExpression(),this.expect(A.semi),e.update=this.type===A.parenR?null:this.parseExpression(),this.expect(A.parenR),e.body=this.parseStatement("for"),this.exitScope(),this.labels.pop(),this.finishNode(e,"ForStatement")},he.parseForIn=function(e,t){var n=this.type===A._in;return this.next(),"VariableDeclaration"===t.type&&null!=t.declarations[0].init&&(!n||this.options.ecmaVersion<8||this.strict||"var"!==t.kind||"Identifier"!==t.declarations[0].id.type)&&this.raise(t.start,(n?"for-in":"for-of")+" loop variable declaration may not have an initializer"),e.left=t,e.right=n?this.parseExpression():this.parseMaybeAssign(),this.expect(A.parenR),e.body=this.parseStatement("for"),this.exitScope(),this.labels.pop(),this.finishNode(e,n?"ForInStatement":"ForOfStatement")},he.parseVar=function(e,t,n,r){for(e.declarations=[],e.kind=n;;){var i=this.startNode();if(this.parseVarId(i,n),this.eat(A.eq)?i.init=this.parseMaybeAssign(t):r||"const"!==n||this.type===A._in||this.options.ecmaVersion>=6&&this.isContextual("of")?r||"using"!==n&&"await using"!==n||!(this.options.ecmaVersion>=17)||this.type===A._in||this.isContextual("of")?r||"Identifier"===i.id.type||t&&(this.type===A._in||this.isContextual("of"))?i.init=null:this.raise(this.lastTokEnd,"Complex binding patterns require an initialization value"):this.raise(this.lastTokEnd,"Missing initializer in "+n+" declaration"):this.unexpected(),e.declarations.push(this.finishNode(i,"VariableDeclarator")),!this.eat(A.comma))break}return e},he.parseVarId=function(e,t){e.id="using"===t||"await using"===t?this.parseIdent():this.parseBindingAtom(),this.checkLValPattern(e.id,"var"===t?ne:re,!1)};var ge=1,ve=2,ye=4;function be(e,t){var n=t.key.name,r=e[n],i="true";return"MethodDefinition"!==t.type||"get"!==t.kind&&"set"!==t.kind||(i=(t.static?"s":"i")+t.kind),"iget"===r&&"iset"===i||"iset"===r&&"iget"===i||"sget"===r&&"sset"===i||"sset"===r&&"sget"===i?(e[n]="true",!1):!!r||(e[n]=i,!1)}function Ae(e,t){var n=e.computed,r=e.key;return!n&&("Identifier"===r.type&&r.name===t||"Literal"===r.type&&r.value===t)}he.parseFunction=function(e,t,n,r,i){this.initFunction(e),(this.options.ecmaVersion>=9||this.options.ecmaVersion>=6&&!r)&&(this.type===A.star&&t&ve&&this.unexpected(),e.generator=this.eat(A.star)),this.options.ecmaVersion>=8&&(e.async=!!r),t&ge&&(e.id=t&ye&&this.type!==A.name?null:this.parseIdent(),!e.id||t&ve||this.checkLValSimple(e.id,this.strict||e.generator||e.async?this.treatFunctionsAsVar?ne:re:ie));var o=this.yieldPos,a=this.awaitPos,s=this.awaitIdentPos;return this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,this.enterScope(ee(e.async,e.generator)),t&ge||(e.id=this.type===A.name?this.parseIdent():null),this.parseFunctionParams(e),this.parseFunctionBody(e,n,!1,i),this.yieldPos=o,this.awaitPos=a,this.awaitIdentPos=s,this.finishNode(e,t&ge?"FunctionDeclaration":"FunctionExpression")},he.parseFunctionParams=function(e){this.expect(A.parenL),e.params=this.parseBindingList(A.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams()},he.parseClass=function(e,t){this.next();var n=this.strict;this.strict=!0,this.parseClassId(e,t),this.parseClassSuper(e);var r=this.enterClassBody(),i=this.startNode(),o=!1;for(i.body=[],this.expect(A.braceL);this.type!==A.braceR;){var a=this.parseClassElement(null!==e.superClass);a&&(i.body.push(a),"MethodDefinition"===a.type&&"constructor"===a.kind?(o&&this.raiseRecoverable(a.start,"Duplicate constructor in the same class"),o=!0):a.key&&"PrivateIdentifier"===a.key.type&&be(r,a)&&this.raiseRecoverable(a.key.start,"Identifier '#"+a.key.name+"' has already been declared"))}return this.strict=n,this.next(),e.body=this.finishNode(i,"ClassBody"),this.exitClassBody(),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},he.parseClassElement=function(e){if(this.eat(A.semi))return null;var t=this.options.ecmaVersion,n=this.startNode(),r="",i=!1,o=!1,a="method",s=!1;if(this.eatContextual("static")){if(t>=13&&this.eat(A.braceL))return this.parseClassStaticBlock(n),n;this.isClassElementNameStart()||this.type===A.star?s=!0:r="static"}if(n.static=s,!r&&t>=8&&this.eatContextual("async")&&(!this.isClassElementNameStart()&&this.type!==A.star||this.canInsertSemicolon()?r="async":o=!0),!r&&(t>=9||!o)&&this.eat(A.star)&&(i=!0),!r&&!o&&!i){var l=this.value;(this.eatContextual("get")||this.eatContextual("set"))&&(this.isClassElementNameStart()?a=l:r=l)}if(r?(n.computed=!1,n.key=this.startNodeAt(this.lastTokStart,this.lastTokStartLoc),n.key.name=r,this.finishNode(n.key,"Identifier")):this.parseClassElementName(n),t<13||this.type===A.parenL||"method"!==a||i||o){var u=!n.static&&Ae(n,"constructor"),c=u&&e;u&&"method"!==a&&this.raise(n.key.start,"Constructor can't have get/set modifier"),n.kind=u?"constructor":a,this.parseClassMethod(n,i,o,c)}else this.parseClassField(n);return n},he.isClassElementNameStart=function(){return this.type===A.name||this.type===A.privateId||this.type===A.num||this.type===A.string||this.type===A.bracketL||this.type.keyword},he.parseClassElementName=function(e){this.type===A.privateId?("constructor"===this.value&&this.raise(this.start,"Classes can't have an element named '#constructor'"),e.computed=!1,e.key=this.parsePrivateIdent()):this.parsePropertyName(e)},he.parseClassMethod=function(e,t,n,r){var i=e.key;"constructor"===e.kind?(t&&this.raise(i.start,"Constructor can't be a generator"),n&&this.raise(i.start,"Constructor can't be an async method")):e.static&&Ae(e,"prototype")&&this.raise(i.start,"Classes may not have a static property named prototype");var o=e.value=this.parseMethod(t,n,r);return"get"===e.kind&&0!==o.params.length&&this.raiseRecoverable(o.start,"getter should have no params"),"set"===e.kind&&1!==o.params.length&&this.raiseRecoverable(o.start,"setter should have exactly one param"),"set"===e.kind&&"RestElement"===o.params[0].type&&this.raiseRecoverable(o.params[0].start,"Setter cannot use rest params"),this.finishNode(e,"MethodDefinition")},he.parseClassField=function(e){return Ae(e,"constructor")?this.raise(e.key.start,"Classes can't have a field named 'constructor'"):e.static&&Ae(e,"prototype")&&this.raise(e.key.start,"Classes can't have a static field named 'prototype'"),this.eat(A.eq)?(this.enterScope(Q|Y),e.value=this.parseMaybeAssign(),this.exitScope()):e.value=null,this.semicolon(),this.finishNode(e,"PropertyDefinition")},he.parseClassStaticBlock=function(e){e.body=[];var t=this.labels;for(this.labels=[],this.enterScope(J|Y);this.type!==A.braceR;){var n=this.parseStatement(null);e.body.push(n)}return this.next(),this.exitScope(),this.labels=t,this.finishNode(e,"StaticBlock")},he.parseClassId=function(e,t){this.type===A.name?(e.id=this.parseIdent(),t&&this.checkLValSimple(e.id,re,!1)):(!0===t&&this.unexpected(),e.id=null)},he.parseClassSuper=function(e){e.superClass=this.eat(A._extends)?this.parseExprSubscripts(null,!1):null},he.enterClassBody=function(){var e={declared:Object.create(null),used:[]};return this.privateNameStack.push(e),e.declared},he.exitClassBody=function(){var e=this.privateNameStack.pop(),t=e.declared,n=e.used;if(this.options.checkPrivateFields)for(var r=this.privateNameStack.length,i=0===r?null:this.privateNameStack[r-1],o=0;o=11&&(this.eatContextual("as")?(e.exported=this.parseModuleExportName(),this.checkExport(t,e.exported,this.lastTokStart)):e.exported=null),this.expectContextual("from"),this.type!==A.string&&this.unexpected(),e.source=this.parseExprAtom(),this.options.ecmaVersion>=16&&(e.attributes=this.parseWithClause()),this.semicolon(),this.finishNode(e,"ExportAllDeclaration")},he.parseExport=function(e,t){if(this.next(),this.eat(A.star))return this.parseExportAllDeclaration(e,t);if(this.eat(A._default))return this.checkExport(t,"default",this.lastTokStart),e.declaration=this.parseExportDefaultDeclaration(),this.finishNode(e,"ExportDefaultDeclaration");if(this.shouldParseExportStatement())e.declaration=this.parseExportDeclaration(e),"VariableDeclaration"===e.declaration.type?this.checkVariableExport(t,e.declaration.declarations):this.checkExport(t,e.declaration.id,e.declaration.id.start),e.specifiers=[],e.source=null,this.options.ecmaVersion>=16&&(e.attributes=[]);else{if(e.declaration=null,e.specifiers=this.parseExportSpecifiers(t),this.eatContextual("from"))this.type!==A.string&&this.unexpected(),e.source=this.parseExprAtom(),this.options.ecmaVersion>=16&&(e.attributes=this.parseWithClause());else{for(var n=0,r=e.specifiers;n=16&&(e.attributes=[])}this.semicolon()}return this.finishNode(e,"ExportNamedDeclaration")},he.parseExportDeclaration=function(e){return this.parseStatement(null)},he.parseExportDefaultDeclaration=function(){var e;if(this.type===A._function||(e=this.isAsyncFunction())){var t=this.startNode();return this.next(),e&&this.next(),this.parseFunction(t,ge|ye,!1,e)}if(this.type===A._class){var n=this.startNode();return this.parseClass(n,"nullableID")}var r=this.parseMaybeAssign();return this.semicolon(),r},he.checkExport=function(e,t,n){e&&("string"!==typeof t&&(t="Identifier"===t.type?t.name:t.value),P(e,t)&&this.raiseRecoverable(n,"Duplicate export '"+t+"'"),e[t]=!0)},he.checkPatternExport=function(e,t){var n=t.type;if("Identifier"===n)this.checkExport(e,t,t.start);else if("ObjectPattern"===n)for(var r=0,i=t.properties;r=16&&(e.attributes=this.parseWithClause()),this.semicolon(),this.finishNode(e,"ImportDeclaration")},he.parseImportSpecifier=function(){var e=this.startNode();return e.imported=this.parseModuleExportName(),this.eatContextual("as")?e.local=this.parseIdent():(this.checkUnreserved(e.imported),e.local=e.imported),this.checkLValSimple(e.local,re),this.finishNode(e,"ImportSpecifier")},he.parseImportDefaultSpecifier=function(){var e=this.startNode();return e.local=this.parseIdent(),this.checkLValSimple(e.local,re),this.finishNode(e,"ImportDefaultSpecifier")},he.parseImportNamespaceSpecifier=function(){var e=this.startNode();return this.next(),this.expectContextual("as"),e.local=this.parseIdent(),this.checkLValSimple(e.local,re),this.finishNode(e,"ImportNamespaceSpecifier")},he.parseImportSpecifiers=function(){var e=[],t=!0;if(this.type===A.name&&(e.push(this.parseImportDefaultSpecifier()),!this.eat(A.comma)))return e;if(this.type===A.star)return e.push(this.parseImportNamespaceSpecifier()),e;for(this.expect(A.braceL);!this.eat(A.braceR);){if(t)t=!1;else if(this.expect(A.comma),this.afterTrailingComma(A.braceR))break;e.push(this.parseImportSpecifier())}return e},he.parseWithClause=function(){var e=[];if(!this.eat(A._with))return e;this.expect(A.braceL);for(var t={},n=!0;!this.eat(A.braceR);){if(n)n=!1;else if(this.expect(A.comma),this.afterTrailingComma(A.braceR))break;var r=this.parseImportAttribute(),i="Identifier"===r.key.type?r.key.name:r.key.value;P(t,i)&&this.raiseRecoverable(r.key.start,"Duplicate attribute key '"+i+"'"),t[i]=!0,e.push(r)}return e},he.parseImportAttribute=function(){var e=this.startNode();return e.key=this.type===A.string?this.parseExprAtom():this.parseIdent("never"!==this.options.allowReserved),this.expect(A.colon),this.type!==A.string&&this.unexpected(),e.value=this.parseExprAtom(),this.finishNode(e,"ImportAttribute")},he.parseModuleExportName=function(){if(this.options.ecmaVersion>=13&&this.type===A.string){var e=this.parseLiteral(this.value);return N.test(e.value)&&this.raise(e.start,"An export name cannot include a lone surrogate."),e}return this.parseIdent(!0)},he.adaptDirectivePrologue=function(e){for(var t=0;t=5&&"ExpressionStatement"===e.type&&"Literal"===e.expression.type&&"string"===typeof e.expression.value&&('"'===this.input[e.start]||"'"===this.input[e.start])};var xe=se.prototype;xe.toAssignable=function(e,t,n){if(this.options.ecmaVersion>=6&&e)switch(e.type){case"Identifier":this.inAsync&&"await"===e.name&&this.raise(e.start,"Cannot use 'await' as identifier inside an async function");break;case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":case"RestElement":break;case"ObjectExpression":e.type="ObjectPattern",n&&this.checkPatternErrors(n,!0);for(var r=0,i=e.properties;r=8&&!s&&"async"===l.name&&!this.canInsertSemicolon()&&this.eat(A._function))return this.overrideContext(ke.f_expr),this.parseFunction(this.startNodeAt(o,a),0,!1,!0,t);if(i&&!this.canInsertSemicolon()){if(this.eat(A.arrow))return this.parseArrowExpression(this.startNodeAt(o,a),[l],!1,t);if(this.options.ecmaVersion>=8&&"async"===l.name&&this.type===A.name&&!s&&(!this.potentialArrowInForAwait||"of"!==this.value||this.containsEsc))return l=this.parseIdent(!1),!this.canInsertSemicolon()&&this.eat(A.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(o,a),[l],!0,t)}return l;case A.regexp:var u=this.value;return(r=this.parseLiteral(u.value)).regex={pattern:u.pattern,flags:u.flags},r;case A.num:case A.string:return this.parseLiteral(this.value);case A._null:case A._true:case A._false:return(r=this.startNode()).value=this.type===A._null?null:this.type===A._true,r.raw=this.type.keyword,this.next(),this.finishNode(r,"Literal");case A.parenL:var c=this.start,d=this.parseParenAndDistinguishExpression(i,t);return e&&(e.parenthesizedAssign<0&&!this.isSimpleAssignTarget(d)&&(e.parenthesizedAssign=c),e.parenthesizedBind<0&&(e.parenthesizedBind=c)),d;case A.bracketL:return r=this.startNode(),this.next(),r.elements=this.parseExprList(A.bracketR,!0,!0,e),this.finishNode(r,"ArrayExpression");case A.braceL:return this.overrideContext(ke.b_expr),this.parseObj(!1,e);case A._function:return r=this.startNode(),this.next(),this.parseFunction(r,0);case A._class:return this.parseClass(this.startNode(),!1);case A._new:return this.parseNew();case A.backQuote:return this.parseTemplate();case A._import:return this.options.ecmaVersion>=11?this.parseExprImport(n):this.unexpected();default:return this.parseExprAtomDefault()}},Ee.parseExprAtomDefault=function(){this.unexpected()},Ee.parseExprImport=function(e){var t=this.startNode();if(this.containsEsc&&this.raiseRecoverable(this.start,"Escape sequence in keyword import"),this.next(),this.type===A.parenL&&!e)return this.parseDynamicImport(t);if(this.type===A.dot){var n=this.startNodeAt(t.start,t.loc&&t.loc.start);return n.name="import",t.meta=this.finishNode(n,"Identifier"),this.parseImportMeta(t)}this.unexpected()},Ee.parseDynamicImport=function(e){if(this.next(),e.source=this.parseMaybeAssign(),this.options.ecmaVersion>=16)this.eat(A.parenR)?e.options=null:(this.expect(A.comma),this.afterTrailingComma(A.parenR)?e.options=null:(e.options=this.parseMaybeAssign(),this.eat(A.parenR)||(this.expect(A.comma),this.afterTrailingComma(A.parenR)||this.unexpected())));else if(!this.eat(A.parenR)){var t=this.start;this.eat(A.comma)&&this.eat(A.parenR)?this.raiseRecoverable(t,"Trailing comma is not allowed in import()"):this.unexpected(t)}return this.finishNode(e,"ImportExpression")},Ee.parseImportMeta=function(e){this.next();var t=this.containsEsc;return e.property=this.parseIdent(!0),"meta"!==e.property.name&&this.raiseRecoverable(e.property.start,"The only valid meta property for import is 'import.meta'"),t&&this.raiseRecoverable(e.start,"'import.meta' must not contain escaped characters"),"module"===this.options.sourceType||this.options.allowImportExportEverywhere||this.raiseRecoverable(e.start,"Cannot use 'import.meta' outside a module"),this.finishNode(e,"MetaProperty")},Ee.parseLiteral=function(e){var t=this.startNode();return t.value=e,t.raw=this.input.slice(this.start,this.end),110===t.raw.charCodeAt(t.raw.length-1)&&(t.bigint=null!=t.value?t.value.toString():t.raw.slice(0,-1).replace(/_/g,"")),this.next(),this.finishNode(t,"Literal")},Ee.parseParenExpression=function(){this.expect(A.parenL);var e=this.parseExpression();return this.expect(A.parenR),e},Ee.shouldParseArrow=function(e){return!this.canInsertSemicolon()},Ee.parseParenAndDistinguishExpression=function(e,t){var n,r=this.start,i=this.startLoc,o=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var a,s=this.start,l=this.startLoc,u=[],c=!0,d=!1,h=new de,p=this.yieldPos,f=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==A.parenR;){if(c?c=!1:this.expect(A.comma),o&&this.afterTrailingComma(A.parenR,!0)){d=!0;break}if(this.type===A.ellipsis){a=this.start,u.push(this.parseParenItem(this.parseRestBinding())),this.type===A.comma&&this.raiseRecoverable(this.start,"Comma is not permitted after the rest element");break}u.push(this.parseMaybeAssign(!1,h,this.parseParenItem))}var m=this.lastTokEnd,g=this.lastTokEndLoc;if(this.expect(A.parenR),e&&this.shouldParseArrow(u)&&this.eat(A.arrow))return this.checkPatternErrors(h,!1),this.checkYieldAwaitInDefaultParams(),this.yieldPos=p,this.awaitPos=f,this.parseParenArrowList(r,i,u,t);u.length&&!d||this.unexpected(this.lastTokStart),a&&this.unexpected(a),this.checkExpressionErrors(h,!0),this.yieldPos=p||this.yieldPos,this.awaitPos=f||this.awaitPos,u.length>1?((n=this.startNodeAt(s,l)).expressions=u,this.finishNodeAt(n,"SequenceExpression",m,g)):n=u[0]}else n=this.parseParenExpression();if(this.options.preserveParens){var v=this.startNodeAt(r,i);return v.expression=n,this.finishNode(v,"ParenthesizedExpression")}return n},Ee.parseParenItem=function(e){return e},Ee.parseParenArrowList=function(e,t,n,r){return this.parseArrowExpression(this.startNodeAt(e,t),n,!1,r)};var Te=[];Ee.parseNew=function(){this.containsEsc&&this.raiseRecoverable(this.start,"Escape sequence in keyword new");var e=this.startNode();if(this.next(),this.options.ecmaVersion>=6&&this.type===A.dot){var t=this.startNodeAt(e.start,e.loc&&e.loc.start);t.name="new",e.meta=this.finishNode(t,"Identifier"),this.next();var n=this.containsEsc;return e.property=this.parseIdent(!0),"target"!==e.property.name&&this.raiseRecoverable(e.property.start,"The only valid meta property for new is 'new.target'"),n&&this.raiseRecoverable(e.start,"'new.target' must not contain escaped characters"),this.allowNewDotTarget||this.raiseRecoverable(e.start,"'new.target' can only be used in functions and class static block"),this.finishNode(e,"MetaProperty")}var r=this.start,i=this.startLoc;return e.callee=this.parseSubscripts(this.parseExprAtom(null,!1,!0),r,i,!0,!1),this.eat(A.parenL)?e.arguments=this.parseExprList(A.parenR,this.options.ecmaVersion>=8,!1):e.arguments=Te,this.finishNode(e,"NewExpression")},Ee.parseTemplateElement=function(e){var t=e.isTagged,n=this.startNode();return this.type===A.invalidTemplate?(t||this.raiseRecoverable(this.start,"Bad escape sequence in untagged template literal"),n.value={raw:this.value.replace(/\r\n?/g,"\n"),cooked:null}):n.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,"\n"),cooked:this.value},this.next(),n.tail=this.type===A.backQuote,this.finishNode(n,"TemplateElement")},Ee.parseTemplate=function(e){void 0===e&&(e={});var t=e.isTagged;void 0===t&&(t=!1);var n=this.startNode();this.next(),n.expressions=[];var r=this.parseTemplateElement({isTagged:t});for(n.quasis=[r];!r.tail;)this.type===A.eof&&this.raise(this.pos,"Unterminated template literal"),this.expect(A.dollarBraceL),n.expressions.push(this.parseExpression()),this.expect(A.braceR),n.quasis.push(r=this.parseTemplateElement({isTagged:t}));return this.next(),this.finishNode(n,"TemplateLiteral")},Ee.isAsyncProp=function(e){return!e.computed&&"Identifier"===e.key.type&&"async"===e.key.name&&(this.type===A.name||this.type===A.num||this.type===A.string||this.type===A.bracketL||this.type.keyword||this.options.ecmaVersion>=9&&this.type===A.star)&&!x.test(this.input.slice(this.lastTokEnd,this.start))},Ee.parseObj=function(e,t){var n=this.startNode(),r=!0,i={};for(n.properties=[],this.next();!this.eat(A.braceR);){if(r)r=!1;else if(this.expect(A.comma),this.options.ecmaVersion>=5&&this.afterTrailingComma(A.braceR))break;var o=this.parseProperty(e,t);e||this.checkPropClash(o,i,t),n.properties.push(o)}return this.finishNode(n,e?"ObjectPattern":"ObjectExpression")},Ee.parseProperty=function(e,t){var n,r,i,o,a=this.startNode();if(this.options.ecmaVersion>=9&&this.eat(A.ellipsis))return e?(a.argument=this.parseIdent(!1),this.type===A.comma&&this.raiseRecoverable(this.start,"Comma is not permitted after the rest element"),this.finishNode(a,"RestElement")):(a.argument=this.parseMaybeAssign(!1,t),this.type===A.comma&&t&&t.trailingComma<0&&(t.trailingComma=this.start),this.finishNode(a,"SpreadElement"));this.options.ecmaVersion>=6&&(a.method=!1,a.shorthand=!1,(e||t)&&(i=this.start,o=this.startLoc),e||(n=this.eat(A.star)));var s=this.containsEsc;return this.parsePropertyName(a),!e&&!s&&this.options.ecmaVersion>=8&&!n&&this.isAsyncProp(a)?(r=!0,n=this.options.ecmaVersion>=9&&this.eat(A.star),this.parsePropertyName(a)):r=!1,this.parsePropertyValue(a,e,n,r,i,o,t,s),this.finishNode(a,"Property")},Ee.parseGetterSetter=function(e){var t=e.key.name;this.parsePropertyName(e),e.value=this.parseMethod(!1),e.kind=t;var n="get"===e.kind?0:1;if(e.value.params.length!==n){var r=e.value.start;"get"===e.kind?this.raiseRecoverable(r,"getter should have no params"):this.raiseRecoverable(r,"setter should have exactly one param")}else"set"===e.kind&&"RestElement"===e.value.params[0].type&&this.raiseRecoverable(e.value.params[0].start,"Setter cannot use rest params")},Ee.parsePropertyValue=function(e,t,n,r,i,o,a,s){(n||r)&&this.type===A.colon&&this.unexpected(),this.eat(A.colon)?(e.value=t?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,a),e.kind="init"):this.options.ecmaVersion>=6&&this.type===A.parenL?(t&&this.unexpected(),e.method=!0,e.value=this.parseMethod(n,r),e.kind="init"):t||s||!(this.options.ecmaVersion>=5)||e.computed||"Identifier"!==e.key.type||"get"!==e.key.name&&"set"!==e.key.name||this.type===A.comma||this.type===A.braceR||this.type===A.eq?this.options.ecmaVersion>=6&&!e.computed&&"Identifier"===e.key.type?((n||r)&&this.unexpected(),this.checkUnreserved(e.key),"await"!==e.key.name||this.awaitIdentPos||(this.awaitIdentPos=i),t?e.value=this.parseMaybeDefault(i,o,this.copyNode(e.key)):this.type===A.eq&&a?(a.shorthandAssign<0&&(a.shorthandAssign=this.start),e.value=this.parseMaybeDefault(i,o,this.copyNode(e.key))):e.value=this.copyNode(e.key),e.kind="init",e.shorthand=!0):this.unexpected():((n||r)&&this.unexpected(),this.parseGetterSetter(e))},Ee.parsePropertyName=function(e){if(this.options.ecmaVersion>=6){if(this.eat(A.bracketL))return e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(A.bracketR),e.key;e.computed=!1}return e.key=this.type===A.num||this.type===A.string?this.parseExprAtom():this.parseIdent("never"!==this.options.allowReserved)},Ee.initFunction=function(e){e.id=null,this.options.ecmaVersion>=6&&(e.generator=e.expression=!1),this.options.ecmaVersion>=8&&(e.async=!1)},Ee.parseMethod=function(e,t,n){var r=this.startNode(),i=this.yieldPos,o=this.awaitPos,a=this.awaitIdentPos;return this.initFunction(r),this.options.ecmaVersion>=6&&(r.generator=e),this.options.ecmaVersion>=8&&(r.async=!!t),this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,this.enterScope(ee(t,r.generator)|Y|(n?X:0)),this.expect(A.parenL),r.params=this.parseBindingList(A.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(r,!1,!0,!1),this.yieldPos=i,this.awaitPos=o,this.awaitIdentPos=a,this.finishNode(r,"FunctionExpression")},Ee.parseArrowExpression=function(e,t,n,r){var i=this.yieldPos,o=this.awaitPos,a=this.awaitIdentPos;return this.enterScope(ee(n,!1)|q),this.initFunction(e),this.options.ecmaVersion>=8&&(e.async=!!n),this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,e.params=this.toAssignableList(t,!0),this.parseFunctionBody(e,!0,!1,r),this.yieldPos=i,this.awaitPos=o,this.awaitIdentPos=a,this.finishNode(e,"ArrowFunctionExpression")},Ee.parseFunctionBody=function(e,t,n,r){var i=t&&this.type!==A.braceL,o=this.strict,a=!1;if(i)e.body=this.parseMaybeAssign(r),e.expression=!0,this.checkParams(e,!1);else{var s=this.options.ecmaVersion>=7&&!this.isSimpleParamList(e.params);o&&!s||(a=this.strictDirective(this.end))&&s&&this.raiseRecoverable(e.start,"Illegal 'use strict' directive in function with non-simple parameter list");var l=this.labels;this.labels=[],a&&(this.strict=!0),this.checkParams(e,!o&&!a&&!t&&!n&&this.isSimpleParamList(e.params)),this.strict&&e.id&&this.checkLValSimple(e.id,ae),e.body=this.parseBlock(!1,void 0,a&&!o),e.expression=!1,this.adaptDirectivePrologue(e.body.body),this.labels=l}this.exitScope()},Ee.isSimpleParamList=function(e){for(var t=0,n=e;t-1||i.functions.indexOf(e)>-1||i.var.indexOf(e)>-1,i.lexical.push(e),this.inModule&&i.flags&H&&delete this.undefinedExports[e]}else if(t===oe)this.currentScope().lexical.push(e);else if(t===ie){var o=this.currentScope();r=this.treatFunctionsAsVar?o.lexical.indexOf(e)>-1:o.lexical.indexOf(e)>-1||o.var.indexOf(e)>-1,o.functions.push(e)}else for(var a=this.scopeStack.length-1;a>=0;--a){var s=this.scopeStack[a];if(s.lexical.indexOf(e)>-1&&!(s.flags&$&&s.lexical[0]===e)||!this.treatFunctionsAsVarInScope(s)&&s.functions.indexOf(e)>-1){r=!0;break}if(s.var.push(e),this.inModule&&s.flags&H&&delete this.undefinedExports[e],s.flags&Z)break}r&&this.raiseRecoverable(n,"Identifier '"+e+"' has already been declared")},Pe.checkLocalExport=function(e){-1===this.scopeStack[0].lexical.indexOf(e.name)&&-1===this.scopeStack[0].var.indexOf(e.name)&&(this.undefinedExports[e.name]=e)},Pe.currentScope=function(){return this.scopeStack[this.scopeStack.length-1]},Pe.currentVarScope=function(){for(var e=this.scopeStack.length-1;;e--){var t=this.scopeStack[e];if(t.flags&(Z|Q|J))return t}},Pe.currentThisScope=function(){for(var e=this.scopeStack.length-1;;e--){var t=this.scopeStack[e];if(t.flags&(Z|Q|J)&&!(t.flags&q))return t}};var Fe=function(e,t,n){this.type="",this.start=t,this.end=0,e.options.locations&&(this.loc=new j(e,n)),e.options.directSourceFile&&(this.sourceFile=e.options.directSourceFile),e.options.ranges&&(this.range=[t,0])},Le=se.prototype;function Oe(e,t,n,r){return e.type=t,e.end=n,this.options.locations&&(e.loc.end=r),this.options.ranges&&(e.range[1]=n),e}Le.startNode=function(){return new Fe(this,this.start,this.startLoc)},Le.startNodeAt=function(e,t){return new Fe(this,e,t)},Le.finishNode=function(e,t){return Oe.call(this,e,t,this.lastTokEnd,this.lastTokEndLoc)},Le.finishNodeAt=function(e,t,n,r){return Oe.call(this,e,t,n,r)},Le.copyNode=function(e){var t=new Fe(this,e.start,this.startLoc);for(var n in e)t[n]=e[n];return t};var Ne="ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS",ze=Ne+" Extended_Pictographic",je=ze+" EBase EComp EMod EPres ExtPict",Re={9:Ne,10:ze,11:ze,12:je,13:je,14:je},Me={9:"",10:"",11:"",12:"",13:"",14:"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji"},Be="Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu",We="Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb",Ue=We+" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd",He=Ue+" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho",Ve=He+" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi",Ge=Ve+" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith",Ke={9:We,10:Ue,11:He,12:Ve,13:Ge,14:Ge+" Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz"},qe={};function $e(e){var t=qe[e]={binary:L(Re[e]+" "+Be),binaryOfStrings:L(Me[e]),nonBinary:{General_Category:L(Be),Script:L(Ke[e])}};t.nonBinary.Script_Extensions=t.nonBinary.Script,t.nonBinary.gc=t.nonBinary.General_Category,t.nonBinary.sc=t.nonBinary.Script,t.nonBinary.scx=t.nonBinary.Script_Extensions}for(var Ye=0,Xe=[9,10,11,12,13,14];Ye=6?"uy":"")+(e.options.ecmaVersion>=9?"s":"")+(e.options.ecmaVersion>=13?"d":"")+(e.options.ecmaVersion>=15?"v":""),this.unicodeProperties=qe[e.options.ecmaVersion>=14?14:e.options.ecmaVersion],this.source="",this.flags="",this.start=0,this.switchU=!1,this.switchV=!1,this.switchN=!1,this.pos=0,this.lastIntValue=0,this.lastStringValue="",this.lastAssertionIsQuantifiable=!1,this.numCapturingParens=0,this.maxBackReference=0,this.groupNames=Object.create(null),this.backReferenceNames=[],this.branchID=null};function et(e){for(var t in e)return!0;return!1}function tt(e){return 105===e||109===e||115===e}function nt(e){return 36===e||e>=40&&e<=43||46===e||63===e||e>=91&&e<=94||e>=123&&e<=125}function rt(e){return h(e,!0)||36===e||95===e}function it(e){return p(e,!0)||36===e||95===e||8204===e||8205===e}function ot(e){return e>=65&&e<=90||e>=97&&e<=122}function at(e){return e>=0&&e<=1114111}Ze.prototype.reset=function(e,t,n){var r=-1!==n.indexOf("v"),i=-1!==n.indexOf("u");this.start=0|e,this.source=t+"",this.flags=n,r&&this.parser.options.ecmaVersion>=15?(this.switchU=!0,this.switchV=!0,this.switchN=!0):(this.switchU=i&&this.parser.options.ecmaVersion>=6,this.switchV=!1,this.switchN=i&&this.parser.options.ecmaVersion>=9)},Ze.prototype.raise=function(e){this.parser.raiseRecoverable(this.start,"Invalid regular expression: /"+this.source+"/: "+e)},Ze.prototype.at=function(e,t){void 0===t&&(t=!1);var n=this.source,r=n.length;if(e>=r)return-1;var i=n.charCodeAt(e);if(!t&&!this.switchU||i<=55295||i>=57344||e+1>=r)return i;var o=n.charCodeAt(e+1);return o>=56320&&o<=57343?(i<<10)+o-56613888:i},Ze.prototype.nextIndex=function(e,t){void 0===t&&(t=!1);var n=this.source,r=n.length;if(e>=r)return r;var i,o=n.charCodeAt(e);return!t&&!this.switchU||o<=55295||o>=57344||e+1>=r||(i=n.charCodeAt(e+1))<56320||i>57343?e+1:e+2},Ze.prototype.current=function(e){return void 0===e&&(e=!1),this.at(this.pos,e)},Ze.prototype.lookahead=function(e){return void 0===e&&(e=!1),this.at(this.nextIndex(this.pos,e),e)},Ze.prototype.advance=function(e){void 0===e&&(e=!1),this.pos=this.nextIndex(this.pos,e)},Ze.prototype.eat=function(e,t){return void 0===t&&(t=!1),this.current(t)===e&&(this.advance(t),!0)},Ze.prototype.eatChars=function(e,t){void 0===t&&(t=!1);for(var n=this.pos,r=0,i=e;r-1&&this.raise(e.start,"Duplicate regular expression flag"),"u"===a&&(r=!0),"v"===a&&(i=!0)}this.options.ecmaVersion>=15&&r&&i&&this.raise(e.start,"Invalid regular expression flag")},Je.validateRegExpPattern=function(e){this.regexp_pattern(e),!e.switchN&&this.options.ecmaVersion>=9&&et(e.groupNames)&&(e.switchN=!0,this.regexp_pattern(e))},Je.regexp_pattern=function(e){e.pos=0,e.lastIntValue=0,e.lastStringValue="",e.lastAssertionIsQuantifiable=!1,e.numCapturingParens=0,e.maxBackReference=0,e.groupNames=Object.create(null),e.backReferenceNames.length=0,e.branchID=null,this.regexp_disjunction(e),e.pos!==e.source.length&&(e.eat(41)&&e.raise("Unmatched ')'"),(e.eat(93)||e.eat(125))&&e.raise("Lone quantifier brackets")),e.maxBackReference>e.numCapturingParens&&e.raise("Invalid escape");for(var t=0,n=e.backReferenceNames;t=16;for(t&&(e.branchID=new Qe(e.branchID,null)),this.regexp_alternative(e);e.eat(124);)t&&(e.branchID=e.branchID.sibling()),this.regexp_alternative(e);t&&(e.branchID=e.branchID.parent),this.regexp_eatQuantifier(e,!0)&&e.raise("Nothing to repeat"),e.eat(123)&&e.raise("Lone quantifier brackets")},Je.regexp_alternative=function(e){for(;e.pos=9&&(n=e.eat(60)),e.eat(61)||e.eat(33))return this.regexp_disjunction(e),e.eat(41)||e.raise("Unterminated group"),e.lastAssertionIsQuantifiable=!n,!0}return e.pos=t,!1},Je.regexp_eatQuantifier=function(e,t){return void 0===t&&(t=!1),!!this.regexp_eatQuantifierPrefix(e,t)&&(e.eat(63),!0)},Je.regexp_eatQuantifierPrefix=function(e,t){return e.eat(42)||e.eat(43)||e.eat(63)||this.regexp_eatBracedQuantifier(e,t)},Je.regexp_eatBracedQuantifier=function(e,t){var n=e.pos;if(e.eat(123)){var r=0,i=-1;if(this.regexp_eatDecimalDigits(e)&&(r=e.lastIntValue,e.eat(44)&&this.regexp_eatDecimalDigits(e)&&(i=e.lastIntValue),e.eat(125)))return-1!==i&&i=16){var n=this.regexp_eatModifiers(e),r=e.eat(45);if(n||r){for(var i=0;i-1&&e.raise("Duplicate regular expression modifiers")}if(r){var a=this.regexp_eatModifiers(e);n||a||58!==e.current()||e.raise("Invalid regular expression modifiers");for(var s=0;s-1||n.indexOf(l)>-1)&&e.raise("Duplicate regular expression modifiers")}}}}if(e.eat(58)){if(this.regexp_disjunction(e),e.eat(41))return!0;e.raise("Unterminated group")}}e.pos=t}return!1},Je.regexp_eatCapturingGroup=function(e){if(e.eat(40)){if(this.options.ecmaVersion>=9?this.regexp_groupSpecifier(e):63===e.current()&&e.raise("Invalid group"),this.regexp_disjunction(e),e.eat(41))return e.numCapturingParens+=1,!0;e.raise("Unterminated group")}return!1},Je.regexp_eatModifiers=function(e){for(var t="",n=0;-1!==(n=e.current())&&tt(n);)t+=O(n),e.advance();return t},Je.regexp_eatExtendedAtom=function(e){return e.eat(46)||this.regexp_eatReverseSolidusAtomEscape(e)||this.regexp_eatCharacterClass(e)||this.regexp_eatUncapturingGroup(e)||this.regexp_eatCapturingGroup(e)||this.regexp_eatInvalidBracedQuantifier(e)||this.regexp_eatExtendedPatternCharacter(e)},Je.regexp_eatInvalidBracedQuantifier=function(e){return this.regexp_eatBracedQuantifier(e,!0)&&e.raise("Nothing to repeat"),!1},Je.regexp_eatSyntaxCharacter=function(e){var t=e.current();return!!nt(t)&&(e.lastIntValue=t,e.advance(),!0)},Je.regexp_eatPatternCharacters=function(e){for(var t=e.pos,n=0;-1!==(n=e.current())&&!nt(n);)e.advance();return e.pos!==t},Je.regexp_eatExtendedPatternCharacter=function(e){var t=e.current();return!(-1===t||36===t||t>=40&&t<=43||46===t||63===t||91===t||94===t||124===t)&&(e.advance(),!0)},Je.regexp_groupSpecifier=function(e){if(e.eat(63)){this.regexp_eatGroupName(e)||e.raise("Invalid group");var t=this.options.ecmaVersion>=16,n=e.groupNames[e.lastStringValue];if(n)if(t)for(var r=0,i=n;r=11,r=e.current(n);return e.advance(n),92===r&&this.regexp_eatRegExpUnicodeEscapeSequence(e,n)&&(r=e.lastIntValue),rt(r)?(e.lastIntValue=r,!0):(e.pos=t,!1)},Je.regexp_eatRegExpIdentifierPart=function(e){var t=e.pos,n=this.options.ecmaVersion>=11,r=e.current(n);return e.advance(n),92===r&&this.regexp_eatRegExpUnicodeEscapeSequence(e,n)&&(r=e.lastIntValue),it(r)?(e.lastIntValue=r,!0):(e.pos=t,!1)},Je.regexp_eatAtomEscape=function(e){return!!(this.regexp_eatBackReference(e)||this.regexp_eatCharacterClassEscape(e)||this.regexp_eatCharacterEscape(e)||e.switchN&&this.regexp_eatKGroupName(e))||(e.switchU&&(99===e.current()&&e.raise("Invalid unicode escape"),e.raise("Invalid escape")),!1)},Je.regexp_eatBackReference=function(e){var t=e.pos;if(this.regexp_eatDecimalEscape(e)){var n=e.lastIntValue;if(e.switchU)return n>e.maxBackReference&&(e.maxBackReference=n),!0;if(n<=e.numCapturingParens)return!0;e.pos=t}return!1},Je.regexp_eatKGroupName=function(e){if(e.eat(107)){if(this.regexp_eatGroupName(e))return e.backReferenceNames.push(e.lastStringValue),!0;e.raise("Invalid named reference")}return!1},Je.regexp_eatCharacterEscape=function(e){return this.regexp_eatControlEscape(e)||this.regexp_eatCControlLetter(e)||this.regexp_eatZero(e)||this.regexp_eatHexEscapeSequence(e)||this.regexp_eatRegExpUnicodeEscapeSequence(e,!1)||!e.switchU&&this.regexp_eatLegacyOctalEscapeSequence(e)||this.regexp_eatIdentityEscape(e)},Je.regexp_eatCControlLetter=function(e){var t=e.pos;if(e.eat(99)){if(this.regexp_eatControlLetter(e))return!0;e.pos=t}return!1},Je.regexp_eatZero=function(e){return 48===e.current()&&!gt(e.lookahead())&&(e.lastIntValue=0,e.advance(),!0)},Je.regexp_eatControlEscape=function(e){var t=e.current();return 116===t?(e.lastIntValue=9,e.advance(),!0):110===t?(e.lastIntValue=10,e.advance(),!0):118===t?(e.lastIntValue=11,e.advance(),!0):102===t?(e.lastIntValue=12,e.advance(),!0):114===t&&(e.lastIntValue=13,e.advance(),!0)},Je.regexp_eatControlLetter=function(e){var t=e.current();return!!ot(t)&&(e.lastIntValue=t%32,e.advance(),!0)},Je.regexp_eatRegExpUnicodeEscapeSequence=function(e,t){void 0===t&&(t=!1);var n=e.pos,r=t||e.switchU;if(e.eat(117)){if(this.regexp_eatFixedHexDigits(e,4)){var i=e.lastIntValue;if(r&&i>=55296&&i<=56319){var o=e.pos;if(e.eat(92)&&e.eat(117)&&this.regexp_eatFixedHexDigits(e,4)){var a=e.lastIntValue;if(a>=56320&&a<=57343)return e.lastIntValue=1024*(i-55296)+(a-56320)+65536,!0}e.pos=o,e.lastIntValue=i}return!0}if(r&&e.eat(123)&&this.regexp_eatHexDigits(e)&&e.eat(125)&&at(e.lastIntValue))return!0;r&&e.raise("Invalid unicode escape"),e.pos=n}return!1},Je.regexp_eatIdentityEscape=function(e){if(e.switchU)return!!this.regexp_eatSyntaxCharacter(e)||!!e.eat(47)&&(e.lastIntValue=47,!0);var t=e.current();return!(99===t||e.switchN&&107===t)&&(e.lastIntValue=t,e.advance(),!0)},Je.regexp_eatDecimalEscape=function(e){e.lastIntValue=0;var t=e.current();if(t>=49&&t<=57){do{e.lastIntValue=10*e.lastIntValue+(t-48),e.advance()}while((t=e.current())>=48&&t<=57);return!0}return!1};var st=0,lt=1,ut=2;function ct(e){return 100===e||68===e||115===e||83===e||119===e||87===e}function dt(e){return ot(e)||95===e}function ht(e){return dt(e)||gt(e)}function pt(e){return 33===e||e>=35&&e<=38||e>=42&&e<=44||46===e||e>=58&&e<=64||94===e||96===e||126===e}function ft(e){return 40===e||41===e||45===e||47===e||e>=91&&e<=93||e>=123&&e<=125}function mt(e){return 33===e||35===e||37===e||38===e||44===e||45===e||e>=58&&e<=62||64===e||96===e||126===e}function gt(e){return e>=48&&e<=57}function vt(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function yt(e){return e>=65&&e<=70?e-65+10:e>=97&&e<=102?e-97+10:e-48}function bt(e){return e>=48&&e<=55}Je.regexp_eatCharacterClassEscape=function(e){var t=e.current();if(ct(t))return e.lastIntValue=-1,e.advance(),lt;var n=!1;if(e.switchU&&this.options.ecmaVersion>=9&&((n=80===t)||112===t)){var r;if(e.lastIntValue=-1,e.advance(),e.eat(123)&&(r=this.regexp_eatUnicodePropertyValueExpression(e))&&e.eat(125))return n&&r===ut&&e.raise("Invalid property name"),r;e.raise("Invalid property name")}return st},Je.regexp_eatUnicodePropertyValueExpression=function(e){var t=e.pos;if(this.regexp_eatUnicodePropertyName(e)&&e.eat(61)){var n=e.lastStringValue;if(this.regexp_eatUnicodePropertyValue(e)){var r=e.lastStringValue;return this.regexp_validateUnicodePropertyNameAndValue(e,n,r),lt}}if(e.pos=t,this.regexp_eatLoneUnicodePropertyNameOrValue(e)){var i=e.lastStringValue;return this.regexp_validateUnicodePropertyNameOrValue(e,i)}return st},Je.regexp_validateUnicodePropertyNameAndValue=function(e,t,n){P(e.unicodeProperties.nonBinary,t)||e.raise("Invalid property name"),e.unicodeProperties.nonBinary[t].test(n)||e.raise("Invalid property value")},Je.regexp_validateUnicodePropertyNameOrValue=function(e,t){return e.unicodeProperties.binary.test(t)?lt:e.switchV&&e.unicodeProperties.binaryOfStrings.test(t)?ut:void e.raise("Invalid property name")},Je.regexp_eatUnicodePropertyName=function(e){var t=0;for(e.lastStringValue="";dt(t=e.current());)e.lastStringValue+=O(t),e.advance();return""!==e.lastStringValue},Je.regexp_eatUnicodePropertyValue=function(e){var t=0;for(e.lastStringValue="";ht(t=e.current());)e.lastStringValue+=O(t),e.advance();return""!==e.lastStringValue},Je.regexp_eatLoneUnicodePropertyNameOrValue=function(e){return this.regexp_eatUnicodePropertyValue(e)},Je.regexp_eatCharacterClass=function(e){if(e.eat(91)){var t=e.eat(94),n=this.regexp_classContents(e);return e.eat(93)||e.raise("Unterminated character class"),t&&n===ut&&e.raise("Negated character class may contain strings"),!0}return!1},Je.regexp_classContents=function(e){return 93===e.current()?lt:e.switchV?this.regexp_classSetExpression(e):(this.regexp_nonEmptyClassRanges(e),lt)},Je.regexp_nonEmptyClassRanges=function(e){for(;this.regexp_eatClassAtom(e);){var t=e.lastIntValue;if(e.eat(45)&&this.regexp_eatClassAtom(e)){var n=e.lastIntValue;!e.switchU||-1!==t&&-1!==n||e.raise("Invalid character class"),-1!==t&&-1!==n&&t>n&&e.raise("Range out of order in character class")}}},Je.regexp_eatClassAtom=function(e){var t=e.pos;if(e.eat(92)){if(this.regexp_eatClassEscape(e))return!0;if(e.switchU){var n=e.current();(99===n||bt(n))&&e.raise("Invalid class escape"),e.raise("Invalid escape")}e.pos=t}var r=e.current();return 93!==r&&(e.lastIntValue=r,e.advance(),!0)},Je.regexp_eatClassEscape=function(e){var t=e.pos;if(e.eat(98))return e.lastIntValue=8,!0;if(e.switchU&&e.eat(45))return e.lastIntValue=45,!0;if(!e.switchU&&e.eat(99)){if(this.regexp_eatClassControlLetter(e))return!0;e.pos=t}return this.regexp_eatCharacterClassEscape(e)||this.regexp_eatCharacterEscape(e)},Je.regexp_classSetExpression=function(e){var t,n=lt;if(this.regexp_eatClassSetRange(e));else if(t=this.regexp_eatClassSetOperand(e)){t===ut&&(n=ut);for(var r=e.pos;e.eatChars([38,38]);)38!==e.current()&&(t=this.regexp_eatClassSetOperand(e))?t!==ut&&(n=lt):e.raise("Invalid character in character class");if(r!==e.pos)return n;for(;e.eatChars([45,45]);)this.regexp_eatClassSetOperand(e)||e.raise("Invalid character in character class");if(r!==e.pos)return n}else e.raise("Invalid character in character class");for(;;)if(!this.regexp_eatClassSetRange(e)){if(!(t=this.regexp_eatClassSetOperand(e)))return n;t===ut&&(n=ut)}},Je.regexp_eatClassSetRange=function(e){var t=e.pos;if(this.regexp_eatClassSetCharacter(e)){var n=e.lastIntValue;if(e.eat(45)&&this.regexp_eatClassSetCharacter(e)){var r=e.lastIntValue;return-1!==n&&-1!==r&&n>r&&e.raise("Range out of order in character class"),!0}e.pos=t}return!1},Je.regexp_eatClassSetOperand=function(e){return this.regexp_eatClassSetCharacter(e)?lt:this.regexp_eatClassStringDisjunction(e)||this.regexp_eatNestedClass(e)},Je.regexp_eatNestedClass=function(e){var t=e.pos;if(e.eat(91)){var n=e.eat(94),r=this.regexp_classContents(e);if(e.eat(93))return n&&r===ut&&e.raise("Negated character class may contain strings"),r;e.pos=t}if(e.eat(92)){var i=this.regexp_eatCharacterClassEscape(e);if(i)return i;e.pos=t}return null},Je.regexp_eatClassStringDisjunction=function(e){var t=e.pos;if(e.eatChars([92,113])){if(e.eat(123)){var n=this.regexp_classStringDisjunctionContents(e);if(e.eat(125))return n}else e.raise("Invalid escape");e.pos=t}return null},Je.regexp_classStringDisjunctionContents=function(e){for(var t=this.regexp_classString(e);e.eat(124);)this.regexp_classString(e)===ut&&(t=ut);return t},Je.regexp_classString=function(e){for(var t=0;this.regexp_eatClassSetCharacter(e);)t++;return 1===t?lt:ut},Je.regexp_eatClassSetCharacter=function(e){var t=e.pos;if(e.eat(92))return!(!this.regexp_eatCharacterEscape(e)&&!this.regexp_eatClassSetReservedPunctuator(e))||(e.eat(98)?(e.lastIntValue=8,!0):(e.pos=t,!1));var n=e.current();return!(n<0||n===e.lookahead()&&pt(n))&&!ft(n)&&(e.advance(),e.lastIntValue=n,!0)},Je.regexp_eatClassSetReservedPunctuator=function(e){var t=e.current();return!!mt(t)&&(e.lastIntValue=t,e.advance(),!0)},Je.regexp_eatClassControlLetter=function(e){var t=e.current();return!(!gt(t)&&95!==t)&&(e.lastIntValue=t%32,e.advance(),!0)},Je.regexp_eatHexEscapeSequence=function(e){var t=e.pos;if(e.eat(120)){if(this.regexp_eatFixedHexDigits(e,2))return!0;e.switchU&&e.raise("Invalid escape"),e.pos=t}return!1},Je.regexp_eatDecimalDigits=function(e){var t=e.pos,n=0;for(e.lastIntValue=0;gt(n=e.current());)e.lastIntValue=10*e.lastIntValue+(n-48),e.advance();return e.pos!==t},Je.regexp_eatHexDigits=function(e){var t=e.pos,n=0;for(e.lastIntValue=0;vt(n=e.current());)e.lastIntValue=16*e.lastIntValue+yt(n),e.advance();return e.pos!==t},Je.regexp_eatLegacyOctalEscapeSequence=function(e){if(this.regexp_eatOctalDigit(e)){var t=e.lastIntValue;if(this.regexp_eatOctalDigit(e)){var n=e.lastIntValue;t<=3&&this.regexp_eatOctalDigit(e)?e.lastIntValue=64*t+8*n+e.lastIntValue:e.lastIntValue=8*t+n}else e.lastIntValue=t;return!0}return!1},Je.regexp_eatOctalDigit=function(e){var t=e.current();return bt(t)?(e.lastIntValue=t-48,e.advance(),!0):(e.lastIntValue=0,!1)},Je.regexp_eatFixedHexDigits=function(e,t){var n=e.pos;e.lastIntValue=0;for(var r=0;r=this.input.length?this.finishToken(A.eof):e.override?e.override(this):void this.readToken(this.fullCharCodeAtPos())},xt.readToken=function(e){return h(e,this.options.ecmaVersion>=6)||92===e?this.readWord():this.getTokenFromCode(e)},xt.fullCharCodeAtPos=function(){var e=this.input.charCodeAt(this.pos);if(e<=55295||e>=56320)return e;var t=this.input.charCodeAt(this.pos+1);return t<=56319||t>=57344?e:(e<<10)+t-56613888},xt.skipBlockComment=function(){var e=this.options.onComment&&this.curPosition(),t=this.pos,n=this.input.indexOf("*/",this.pos+=2);if(-1===n&&this.raise(this.pos-2,"Unterminated comment"),this.pos=n+2,this.options.locations)for(var r=void 0,i=t;(r=S(this.input,i,this.pos))>-1;)++this.curLine,i=this.lineStart=r;this.options.onComment&&this.options.onComment(!0,this.input.slice(t+2,n),t,this.pos,e,this.curPosition())},xt.skipLineComment=function(e){for(var t=this.pos,n=this.options.onComment&&this.curPosition(),r=this.input.charCodeAt(this.pos+=e);this.pos8&&e<14||e>=5760&&E.test(String.fromCharCode(e))))break e;++this.pos}}},xt.finishToken=function(e,t){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var n=this.type;this.type=e,this.value=t,this.updateContext(n)},xt.readToken_dot=function(){var e=this.input.charCodeAt(this.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===e&&46===t?(this.pos+=3,this.finishToken(A.ellipsis)):(++this.pos,this.finishToken(A.dot))},xt.readToken_slash=function(){var e=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===e?this.finishOp(A.assign,2):this.finishOp(A.slash,1)},xt.readToken_mult_modulo_exp=function(e){var t=this.input.charCodeAt(this.pos+1),n=1,r=42===e?A.star:A.modulo;return this.options.ecmaVersion>=7&&42===e&&42===t&&(++n,r=A.starstar,t=this.input.charCodeAt(this.pos+2)),61===t?this.finishOp(A.assign,n+1):this.finishOp(r,n)},xt.readToken_pipe_amp=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?this.options.ecmaVersion>=12&&61===this.input.charCodeAt(this.pos+2)?this.finishOp(A.assign,3):this.finishOp(124===e?A.logicalOR:A.logicalAND,2):61===t?this.finishOp(A.assign,2):this.finishOp(124===e?A.bitwiseOR:A.bitwiseAND,1)},xt.readToken_caret=function(){return 61===this.input.charCodeAt(this.pos+1)?this.finishOp(A.assign,2):this.finishOp(A.bitwiseXOR,1)},xt.readToken_plus_min=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?45!==t||this.inModule||62!==this.input.charCodeAt(this.pos+2)||0!==this.lastTokEnd&&!x.test(this.input.slice(this.lastTokEnd,this.pos))?this.finishOp(A.incDec,2):(this.skipLineComment(3),this.skipSpace(),this.nextToken()):61===t?this.finishOp(A.assign,2):this.finishOp(A.plusMin,1)},xt.readToken_lt_gt=function(e){var t=this.input.charCodeAt(this.pos+1),n=1;return t===e?(n=62===e&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+n)?this.finishOp(A.assign,n+1):this.finishOp(A.bitShift,n)):33!==t||60!==e||this.inModule||45!==this.input.charCodeAt(this.pos+2)||45!==this.input.charCodeAt(this.pos+3)?(61===t&&(n=2),this.finishOp(A.relational,n)):(this.skipLineComment(4),this.skipSpace(),this.nextToken())},xt.readToken_eq_excl=function(e){var t=this.input.charCodeAt(this.pos+1);return 61===t?this.finishOp(A.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===e&&62===t&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(A.arrow)):this.finishOp(61===e?A.eq:A.prefix,1)},xt.readToken_question=function(){var e=this.options.ecmaVersion;if(e>=11){var t=this.input.charCodeAt(this.pos+1);if(46===t){var n=this.input.charCodeAt(this.pos+2);if(n<48||n>57)return this.finishOp(A.questionDot,2)}if(63===t)return e>=12&&61===this.input.charCodeAt(this.pos+2)?this.finishOp(A.assign,3):this.finishOp(A.coalesce,2)}return this.finishOp(A.question,1)},xt.readToken_numberSign=function(){var e=35;if(this.options.ecmaVersion>=13&&(++this.pos,h(e=this.fullCharCodeAtPos(),!0)||92===e))return this.finishToken(A.privateId,this.readWord1());this.raise(this.pos,"Unexpected character '"+O(e)+"'")},xt.getTokenFromCode=function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(A.parenL);case 41:return++this.pos,this.finishToken(A.parenR);case 59:return++this.pos,this.finishToken(A.semi);case 44:return++this.pos,this.finishToken(A.comma);case 91:return++this.pos,this.finishToken(A.bracketL);case 93:return++this.pos,this.finishToken(A.bracketR);case 123:return++this.pos,this.finishToken(A.braceL);case 125:return++this.pos,this.finishToken(A.braceR);case 58:return++this.pos,this.finishToken(A.colon);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(A.backQuote);case 48:var t=this.input.charCodeAt(this.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 63:return this.readToken_question();case 126:return this.finishOp(A.prefix,1);case 35:return this.readToken_numberSign()}this.raise(this.pos,"Unexpected character '"+O(e)+"'")},xt.finishOp=function(e,t){var n=this.input.slice(this.pos,this.pos+t);return this.pos+=t,this.finishToken(e,n)},xt.readRegexp=function(){for(var e,t,n=this.pos;;){this.pos>=this.input.length&&this.raise(n,"Unterminated regular expression");var r=this.input.charAt(this.pos);if(x.test(r)&&this.raise(n,"Unterminated regular expression"),e)e=!1;else{if("["===r)t=!0;else if("]"===r&&t)t=!1;else if("/"===r&&!t)break;e="\\"===r}++this.pos}var i=this.input.slice(n,this.pos);++this.pos;var o=this.pos,a=this.readWord1();this.containsEsc&&this.unexpected(o);var s=this.regexpState||(this.regexpState=new Ze(this));s.reset(n,i,a),this.validateRegExpFlags(s),this.validateRegExpPattern(s);var l=null;try{l=new RegExp(i,a)}catch(u){}return this.finishToken(A.regexp,{pattern:i,flags:a,value:l})},xt.readInt=function(e,t,n){for(var r=this.options.ecmaVersion>=12&&void 0===t,i=n&&48===this.input.charCodeAt(this.pos),o=this.pos,a=0,s=0,l=0,u=null==t?1/0:t;l=97?c-97+10:c>=65?c-65+10:c>=48&&c<=57?c-48:1/0)>=e)break;s=c,a=a*e+d}}return r&&95===s&&this.raiseRecoverable(this.pos-1,"Numeric separator is not allowed at the last of digits"),this.pos===o||null!=t&&this.pos-o!==t?null:a},xt.readRadixNumber=function(e){var t=this.pos;this.pos+=2;var n=this.readInt(e);return null==n&&this.raise(this.start+2,"Expected number in radix "+e),this.options.ecmaVersion>=11&&110===this.input.charCodeAt(this.pos)?(n=kt(this.input.slice(t,this.pos)),++this.pos):h(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(A.num,n)},xt.readNumber=function(e){var t=this.pos;e||null!==this.readInt(10,void 0,!0)||this.raise(t,"Invalid number");var n=this.pos-t>=2&&48===this.input.charCodeAt(t);n&&this.strict&&this.raise(t,"Invalid number");var r=this.input.charCodeAt(this.pos);if(!n&&!e&&this.options.ecmaVersion>=11&&110===r){var i=kt(this.input.slice(t,this.pos));return++this.pos,h(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(A.num,i)}n&&/[89]/.test(this.input.slice(t,this.pos))&&(n=!1),46!==r||n||(++this.pos,this.readInt(10),r=this.input.charCodeAt(this.pos)),69!==r&&101!==r||n||(43!==(r=this.input.charCodeAt(++this.pos))&&45!==r||++this.pos,null===this.readInt(10)&&this.raise(t,"Invalid number")),h(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number");var o=wt(this.input.slice(t,this.pos),n);return this.finishToken(A.num,o)},xt.readCodePoint=function(){var e;if(123===this.input.charCodeAt(this.pos)){this.options.ecmaVersion<6&&this.unexpected();var t=++this.pos;e=this.readHexChar(this.input.indexOf("}",this.pos)-this.pos),++this.pos,e>1114111&&this.invalidStringToken(t,"Code point out of bounds")}else e=this.readHexChar(4);return e},xt.readString=function(e){for(var t="",n=++this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated string constant");var r=this.input.charCodeAt(this.pos);if(r===e)break;92===r?(t+=this.input.slice(n,this.pos),t+=this.readEscapedChar(!1),n=this.pos):8232===r||8233===r?(this.options.ecmaVersion<10&&this.raise(this.start,"Unterminated string constant"),++this.pos,this.options.locations&&(this.curLine++,this.lineStart=this.pos)):(k(r)&&this.raise(this.start,"Unterminated string constant"),++this.pos)}return t+=this.input.slice(n,this.pos++),this.finishToken(A.string,t)};var St={};xt.tryReadTemplateToken=function(){this.inTemplateElement=!0;try{this.readTmplToken()}catch(e){if(e!==St)throw e;this.readInvalidTemplateToken()}this.inTemplateElement=!1},xt.invalidStringToken=function(e,t){if(this.inTemplateElement&&this.options.ecmaVersion>=9)throw St;this.raise(e,t)},xt.readTmplToken=function(){for(var e="",t=this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated template");var n=this.input.charCodeAt(this.pos);if(96===n||36===n&&123===this.input.charCodeAt(this.pos+1))return this.pos!==this.start||this.type!==A.template&&this.type!==A.invalidTemplate?(e+=this.input.slice(t,this.pos),this.finishToken(A.template,e)):36===n?(this.pos+=2,this.finishToken(A.dollarBraceL)):(++this.pos,this.finishToken(A.backQuote));if(92===n)e+=this.input.slice(t,this.pos),e+=this.readEscapedChar(!0),t=this.pos;else if(k(n)){switch(e+=this.input.slice(t,this.pos),++this.pos,n){case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(n)}this.options.locations&&(++this.curLine,this.lineStart=this.pos),t=this.pos}else++this.pos}},xt.readInvalidTemplateToken=function(){for(;this.pos=48&&t<=55){var r=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],i=parseInt(r,8);return i>255&&(r=r.slice(0,-1),i=parseInt(r,8)),this.pos+=r.length-1,t=this.input.charCodeAt(this.pos),"0"===r&&56!==t&&57!==t||!this.strict&&!e||this.invalidStringToken(this.pos-1-r.length,e?"Octal literal in template string":"Octal literal in strict mode"),String.fromCharCode(i)}return k(t)?(this.options.locations&&(this.lineStart=this.pos,++this.curLine),""):String.fromCharCode(t)}},xt.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return null===n&&this.invalidStringToken(t,"Bad character escape sequence"),n},xt.readWord1=function(){this.containsEsc=!1;for(var e="",t=!0,n=this.pos,r=this.options.ecmaVersion>=6;this.poss,BO:()=>a,Yn:()=>o});var r=n(6175),i=n(3830);function o(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!t||"string"!==typeof t)return null;if(e&&e.vars&&n){const n="vars.".concat(t).split(".").reduce((e,t)=>e&&e[t]?e[t]:null,e);if(null!=n)return n}return t.split(".").reduce((e,t)=>e&&null!=e[t]?e[t]:null,e)}function a(e,t,n){let r,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n;return r="function"===typeof e?e(n):Array.isArray(e)?e[n]||i:o(e,n)||i,t&&(r=t(r,i,e)),r}const s=function(e){const{prop:t,cssProperty:n=e.prop,themeKey:s,transform:l}=e,u=e=>{if(null==e[t])return null;const u=e[t],c=o(e.theme,s)||{};return(0,i.NI)(e,u,e=>{let i=a(c,l,e);return e===i&&"string"===typeof e&&(i=a(c,l,"".concat(t).concat("default"===e?"":(0,r.A)(e)),e)),!1===n?i:{[n]:i}})};return u.propTypes={},u.filterProps=[t],u}},8379(e,t,n){e.exports=n(2615)()},8442(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r.A});var r=n(8581)},8581(e,t,n){"use strict";n.d(t,{A:()=>r});const r=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MIN_SAFE_INTEGER,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.MAX_SAFE_INTEGER;return Math.max(t,Math.min(e,n))}},8661(e,t,n){"use strict";e.exports=n(1092)},8720(e,t,n){"use strict";var r=n(2902),i={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},a={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?a:s[e.$$typeof]||i}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=a;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,h=Object.getOwnPropertyDescriptor,p=Object.getPrototypeOf,f=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(f){var i=p(n);i&&i!==f&&e(t,i,r)}var a=c(n);d&&(a=a.concat(d(n)));for(var s=l(t),m=l(n),g=0;gl});var r=n(4320),i=n(8915),o=n(6997),a=n(2692);const s=["sx"];function l(e){const{sx:t}=e,n=(0,i.A)(e,s),{systemProps:l,otherProps:u}=(e=>{var t,n;const r={systemProps:{},otherProps:{}},i=null!=(t=null==e||null==(n=e.theme)?void 0:n.unstable_sxConfig)?t:a.A;return Object.keys(e).forEach(t=>{i[t]?r.systemProps[t]=e[t]:r.otherProps[t]=e[t]}),r})(n);let c;return c=Array.isArray(t)?[l,...t]:"function"===typeof t?function(){const e=t(...arguments);return(0,o.Q)(e)?(0,r.A)({},l,e):l}:(0,r.A)({},l,t),(0,r.A)({},u,{sx:c})}},8763(e,t,n){"use strict";var r;n.d(t,{C:()=>r}),function(e){e[e.OBJECT=0]="OBJECT",e[e.ARRAY=1]="ARRAY"}(r||(r={}))},8839(e,t,n){"use strict";n.d(t,{E:()=>a,A:()=>s});var r=n(8661);const i={};const o=[];class a{constructor(){this.currentId=null,this.clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)},this.disposeEffect=()=>this.clear}static create(){return new a}start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=null,t()},e)}}function s(){const e=function(e,t){const n=r.useRef(i);return n.current===i&&(n.current=e(t)),n}(a.create).current;var t;return t=e.disposeEffect,r.useEffect(t,o),e}},8898(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},8902(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"}),"Home")},8915(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},8930(e,t,n){"use strict";n.d(t,{Bb:()=>I,C$:()=>w,FX:()=>F,Fb:()=>L,GY:()=>z,IG:()=>y,J4:()=>j,Kl:()=>_,Qg:()=>S,Sh:()=>D,Sn:()=>T,VX:()=>k,Xn:()=>O,Zu:()=>P,aA:()=>C,lk:()=>E,pK:()=>N,runDataMigration:()=>x,xe:()=>R});var r=n(4107),i=n(7877),o=n(252),a=n(1223),s=n(4181),l=n(1166),u=n(2375);function c(){return{setValue:(0,u.uP)("setValue","GM_setValue",[window.KISS_GM]),getValue:(0,u.uP)("getValue","GM_getValue",[window.KISS_GM]),deleteValue:(0,u.uP)("deleteValue","GM_deleteValue",[window.KISS_GM])}}async function d(e,t){o.aQ?await a.T.storage.local.set({[e]:t}):o.Zy?await c().setValue(e,t):window.localStorage.setItem(e,t)}async function h(e){if(o.aQ){return(await a.T.storage.local.get([e]))[e]}if(o.Zy){return await c().getValue(e)}return window.localStorage.getItem(e)}async function p(e){o.aQ?await a.T.storage.local.remove([e]):o.Zy?await c().deleteValue(e):window.localStorage.removeItem(e)}async function f(e,t){await d(e,JSON.stringify(t))}async function m(e,t){await h(e)||await f(e,t)}async function g(e){const t=await h(e);if(null===t||void 0===t)return null;try{return JSON.parse(t)}catch(n){(0,s.h9)("parse json in storage err: ",e)}return null}async function v(e,t){var n;const i=null!==(n=await g(e))&&void 0!==n?n:{};await f(e,(0,r.A)((0,r.A)({},i),t))}const y={get:h,set:d,del:p,setObj:f,trySetObj:m,getObj:g,putObj:v},b=()=>g(i.r$0),A=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return(0,i.Vnn)(e)>=i.uMq?e:(await(e=>f(i.rKK,e))(t),(0,i.SEs)(e))},x=async()=>{const e=await b();if(e&&(0,i.Vnn)(e){const e=await b();if(!e)return i.la7;return(e=>{var t;return(0,r.A)((0,r.A)((0,r.A)({},i.la7),e||{}),{},{tranboxSetting:(0,r.A)((0,r.A)({},i.Azs),(null===e||void 0===e?void 0:e.tranboxSetting)||{}),version:null!==(t=null===e||void 0===e?void 0:e.version)&&void 0!==t?t:i.la7.version})})((0,i.Vnn)(e)await g(i.iPC)||i.ckw,S=e=>f(i.iPC,e),E=async()=>await g(i.CWU)||{},C=e=>f(i.CWU,e),_=e=>g(i.JCj+e),T=(e,t)=>f(i.JCj+e,t),D=async e=>{if(!e)return[];const t=await g(i.yDM);if(!t)return[];if("object"===typeof t){const n=t[e];return Array.isArray(n)?n:[]}return[]},P=async()=>await g(i.yi6)||{},I=e=>v(i.yi6,e),F=()=>g(i.VFS),L=(0,l.sg)(e=>v(i.VFS,e),300),O=async()=>await g(i.eCV)||i.eeL,N=e=>v(i.eCV,e),z=(0,l.sg)(async e=>{const{syncMeta:t={}}=await O();t[e]=(0,r.A)((0,r.A)({},t[e]||{}),{},{updateAt:Date.now()}),await N({syncMeta:t})},300),j=()=>g(i.lgC),R=e=>f(i.lgC,e)},9079(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"m18 12 4-4-4-4v3H3v2h15zM6 12l-4 4 4 4v-3h15v-2H6z"}),"SyncAlt")},9150(e,t,n){"use strict";var r=n(8898);t.A=void 0;var i=r(n(3684)),o=n(5089);t.A=(0,i.default)((0,o.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1z"}),"Lock")},9286(e,t){var n,r,i;"undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self&&self,r=[e],n=function(e){"use strict";var t;if(null===(t=globalThis.chrome)||void 0===t||null===(t=t.runtime)||void 0===t||!t.id)throw new Error("This script should only be loaded in a browser extension.");if("undefined"===typeof globalThis.browser||Object.getPrototypeOf(globalThis.browser)!==Object.prototype){const t="The message port closed before a response was received.",n=e=>{const n={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(n).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class r extends WeakMap{constructor(e){super(arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}const i=e=>e&&"object"===typeof e&&"function"===typeof e.then,o=(t,n)=>function(){for(var r=arguments.length,i=new Array(r),o=0;o1==e?"argument":"arguments",s=(e,t)=>function(n){for(var r=arguments.length,i=new Array(r>1?r-1:0),s=1;st.maxArgs)throw new Error("Expected at most ".concat(t.maxArgs," ").concat(a(t.maxArgs)," for ").concat(e,"(), got ").concat(i.length));return new Promise((r,a)=>{if(t.fallbackToNoCallback)try{n[e](...i,o({resolve:r,reject:a},t))}catch(s){console.warn("".concat(e," API method doesn't seem to support the callback parameter, ")+"falling back to call it without a callback: ",s),n[e](...i),t.fallbackToNoCallback=!1,t.noCallback=!0,r()}else t.noCallback?(n[e](...i),r()):n[e](...i,o({resolve:r,reject:a},t))})},l=(e,t,n)=>new Proxy(t,{apply:(t,r,i)=>n.call(r,e,...i)});let u=Function.call.bind(Object.prototype.hasOwnProperty);const c=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=Object.create(null),i={has:(t,n)=>n in e||n in r,get(i,o,a){if(o in r)return r[o];if(!(o in e))return;let d=e[o];if("function"===typeof d)if("function"===typeof t[o])d=l(e,e[o],t[o]);else if(u(n,o)){let t=s(o,n[o]);d=l(e,e[o],t)}else d=d.bind(e);else if("object"===typeof d&&null!==d&&(u(t,o)||u(n,o)))d=c(d,t[o],n[o]);else{if(!u(n,"*"))return Object.defineProperty(r,o,{configurable:!0,enumerable:!0,get:()=>e[o],set(t){e[o]=t}}),d;d=c(d,t[o],n["*"])}return r[o]=d,d},set:(t,n,i,o)=>(n in r?r[n]=i:e[n]=i,!0),defineProperty:(e,t,n)=>Reflect.defineProperty(r,t,n),deleteProperty:(e,t)=>Reflect.deleteProperty(r,t)},o=Object.create(e);return new Proxy(o,i)},d=e=>({addListener(t,n){for(var r=arguments.length,i=new Array(r>2?r-2:0),o=2;ot.hasListener(e.get(n)),removeListener(t,n){t.removeListener(e.get(n))}}),h=new r(e=>"function"!==typeof e?e:function(t){const n=c(t,{},{getContent:{minArgs:0,maxArgs:0}});e(n)}),p=new r(e=>"function"!==typeof e?e:function(t,n,r){let o,a,s=!1,l=new Promise(e=>{o=function(t){s=!0,e(t)}});try{a=e(t,n,o)}catch(d){a=Promise.reject(d)}const u=!0!==a&&i(a);if(!0!==a&&!u&&!s)return!1;const c=e=>{e.then(e=>{r(e)},e=>{let t;t=e&&(e instanceof Error||"string"===typeof e.message)?e.message:"An unexpected error occurred",r({__mozWebExtensionPolyfillReject__:!0,message:t})}).catch(e=>{console.error("Failed to send onMessage rejected reply",e)})};return c(u?a:l),!0}),f=(n,r)=>{let{reject:i,resolve:o}=n;e.runtime.lastError?e.runtime.lastError.message===t?o():i(new Error(e.runtime.lastError.message)):r&&r.__mozWebExtensionPolyfillReject__?i(new Error(r.message)):o(r)},m=function(e,t,n){for(var r=arguments.length,i=new Array(r>3?r-3:0),o=3;ot.maxArgs)throw new Error("Expected at most ".concat(t.maxArgs," ").concat(a(t.maxArgs)," for ").concat(e,"(), got ").concat(i.length));return new Promise((e,t)=>{const r=f.bind(null,{resolve:e,reject:t});i.push(r),n.sendMessage(...i)})},g={devtools:{network:{onRequestFinished:d(h)}},runtime:{onMessage:d(p),onMessageExternal:d(p),sendMessage:m.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:m.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},v={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return n.privacy={network:{"*":v},services:{"*":v},websites:{"*":v}},c(e,g,n)};e.exports=n(chrome)}else e.exports=globalThis.browser},void 0===(i="function"===typeof n?n.apply(t,r):n)||(e.exports=i)},9371(e,t,n){"use strict";n.d(t,{A:()=>i});var r=n(8154);function i(e,t,n){return(t=(0,r.A)(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},9385(e,t,n){"use strict";n.d(t,{Ir:()=>a,Tt:()=>s});var r=n(6604);const i=["zh","ja","ko","th","lo","km","my"];function o(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"auto";return e.slice(t,n+1).map(e=>String((null===e||void 0===e?void 0:e.text)||"").trim()).filter(Boolean).join(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return i.some(t=>String(e).startsWith(t))}(r)?"":" ").trim()}function a(e,t,n){var i,a,s;let l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"auto";const u=Number(null!==(i=null===e||void 0===e?void 0:e.e)&&void 0!==i?i:null===e||void 0===e?void 0:e.end_id);if(!Number.isInteger(u)||!Number.isInteger(n)||n<0||u=t.length)return null;const c=o(t,n,u,l);if(!c)return null;const d=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return(0,r.b)(e)}(c)?c:String(null!==(a=null!==(s=null===e||void 0===e?void 0:e.t)&&void 0!==s?s:null===e||void 0===e?void 0:e.translation)&&void 0!==a?a:"");return{start:t[n].start,end:t[u].end,text:c,translation:d,_si:n,_ei:u}}const s=e=>e&&(Object.prototype.hasOwnProperty.call(e,"s")||Object.prototype.hasOwnProperty.call(e,"start_id"))},9428(e,t,n){"use strict";n.d(t,{A:()=>a});var r=n(8915),i=n(4320);const o=["values","unit","step"];function a(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:a=5}=e,s=(0,r.A)(e,o),l=(e=>{const t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>(0,i.A)({},e,{[t.key]:t.val}),{})})(t),u=Object.keys(l);function c(e){const r="number"===typeof t[e]?t[e]:e;return"@media (min-width:".concat(r).concat(n,")")}function d(e){const r="number"===typeof t[e]?t[e]:e;return"@media (max-width:".concat(r-a/100).concat(n,")")}function h(e,r){const i=u.indexOf(r);return"@media (min-width:".concat("number"===typeof t[e]?t[e]:e).concat(n,") and ")+"(max-width:".concat((-1!==i&&"number"===typeof t[u[i]]?t[u[i]]:r)-a/100).concat(n,")")}return(0,i.A)({keys:u,values:l,up:c,down:d,between:h,only:function(e){return u.indexOf(e)+1r})},9669(e,t,n){"use strict";function r(e){return e&&e.ownerDocument||document}n.d(t,{A:()=>r})},9770(e,t){"use strict";var n="function"===typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,i=n?Symbol.for("react.portal"):60106,o=n?Symbol.for("react.fragment"):60107,a=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,h=n?Symbol.for("react.forward_ref"):60112,p=n?Symbol.for("react.suspense"):60113,f=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,y=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,A=n?Symbol.for("react.scope"):60119;function x(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case o:case s:case a:case p:return e;default:switch(e=e&&e.$$typeof){case u:case h:case g:case m:case l:return e;default:return t}}case i:return t}}}function w(e){return x(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=l,t.Element=r,t.ForwardRef=h,t.Fragment=o,t.Lazy=g,t.Memo=m,t.Portal=i,t.Profiler=s,t.StrictMode=a,t.Suspense=p,t.isAsyncMode=function(e){return w(e)||x(e)===c},t.isConcurrentMode=w,t.isContextConsumer=function(e){return x(e)===u},t.isContextProvider=function(e){return x(e)===l},t.isElement=function(e){return"object"===typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return x(e)===h},t.isFragment=function(e){return x(e)===o},t.isLazy=function(e){return x(e)===g},t.isMemo=function(e){return x(e)===m},t.isPortal=function(e){return x(e)===i},t.isProfiler=function(e){return x(e)===s},t.isStrictMode=function(e){return x(e)===a},t.isSuspense=function(e){return x(e)===p},t.isValidElementType=function(e){return"string"===typeof e||"function"===typeof e||e===o||e===d||e===s||e===a||e===p||e===f||"object"===typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===l||e.$$typeof===u||e.$$typeof===h||e.$$typeof===y||e.$$typeof===b||e.$$typeof===A||e.$$typeof===v)},t.typeOf=x},9793(e,t,n){"use strict";n.d(t,{Fz:()=>w,aU:()=>S});var r=n(4107),i=n(3073),o=n(1533),a=n(7877),s=n(4181),l=(0,o.A)("pool"),u=(0,o.A)("maxRetry"),c=(0,o.A)("retryInterval"),d=(0,o.A)("limit"),h=(0,o.A)("interval"),p=(0,o.A)("currentConcurrent"),f=(0,o.A)("lastExecutionTime"),m=(0,o.A)("schedulerTimer"),g=(0,o.A)("scheduleNext"),v=(0,o.A)("execute");class y{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:a.jy$,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:a.PPd,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;Object.defineProperty(this,v,{value:A}),Object.defineProperty(this,g,{value:b}),Object.defineProperty(this,l,{writable:!0,value:[]}),Object.defineProperty(this,u,{writable:!0,value:2}),Object.defineProperty(this,c,{writable:!0,value:1e3}),Object.defineProperty(this,d,{writable:!0,value:void 0}),Object.defineProperty(this,h,{writable:!0,value:void 0}),Object.defineProperty(this,p,{writable:!0,value:0}),Object.defineProperty(this,f,{writable:!0,value:0}),Object.defineProperty(this,m,{writable:!0,value:null}),(0,i.A)(this,h)[h]=e,(0,i.A)(this,d)[d]=t,(0,i.A)(this,c)[c]=n}push(e,t){return new Promise((n,r)=>{(0,i.A)(this,l)[l].push({fn:e,args:t,resolve:n,reject:r,retry:0}),(0,i.A)(this,g)[g]()})}update(e,t){e>=0&&((0,i.A)(this,h)[h]=e),t>=1&&((0,i.A)(this,d)[d]=t),(0,i.A)(this,g)[g]()}clear(){for(const e of(0,i.A)(this,l)[l])e.reject("the task pool was cleared");(0,i.A)(this,l)[l].length=0,(0,i.A)(this,m)[m]&&(clearTimeout((0,i.A)(this,m)[m]),(0,i.A)(this,m)[m]=null)}}function b(){if((0,i.A)(this,m)[m])return;if((0,i.A)(this,p)[p]>=(0,i.A)(this,d)[d]||0===(0,i.A)(this,l)[l].length)return;const e=Date.now()-(0,i.A)(this,f)[f],t=Math.max(0,(0,i.A)(this,h)[h]-e);(0,i.A)(this,m)[m]=setTimeout(()=>{if((0,i.A)(this,m)[m]=null,(0,i.A)(this,p)[p]<(0,i.A)(this,d)[d]&&(0,i.A)(this,l)[l].length>0){const e=(0,i.A)(this,l)[l].shift();e&&((0,i.A)(this,f)[f]=Date.now(),(0,i.A)(this,v)[v](e))}(0,i.A)(this,l)[l].length>0&&(0,i.A)(this,g)[g]()},t)}async function A(e){(0,i.A)(this,p)[p]++;const{fn:t,args:n,resolve:o,reject:a,retry:d}=e;try{o(await t(n))}catch(h){(0,s.h9)("task pool",h),d<(0,i.A)(this,u)[u]?setTimeout(()=>{(0,i.A)(this,l)[l].unshift((0,r.A)((0,r.A)({},e),{},{retry:d+1})),(0,i.A)(this,g)[g]()},(0,i.A)(this,c)[c]):a(h)}finally{(0,i.A)(this,p)[p]--,(0,i.A)(this,g)[g]()}}let x;const w=(e,t)=>(x?e&&t&&k(e,t):x=new y(null!==e&&void 0!==e?e:a.jy$,null!==t&&void 0!==t?t:a.PPd),x),k=(e,t)=>{var n;null===(n=x)||void 0===n||n.update(e,t)},S=()=>{var e;null===(e=x)||void 0===e||e.clear()}},9903(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r.A,extendSxProp:()=>i.A,unstable_createStyleFunctionSx:()=>r.k,unstable_defaultSxConfig:()=>o.A});var r=n(1985),i=n(8757),o=n(2692)}},t={};function n(r){var i=t[r];if(void 0!==i)return i.exports;var o=t[r]={exports:{}};return e[r].call(o.exports,o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;n.t=function(r,i){if(1&i&&(r=this(r)),8&i)return r;if("object"===typeof r&&r){if(4&i&&r.__esModule)return r;if(16&i&&"function"===typeof r.then)return r}var o=Object.create(null);n.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var s=2&i&&r;("object"==typeof s||"function"==typeof s)&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach(e=>a[e]=()=>r[e]);return a.default=()=>r,n.d(o,a),o}})(),n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";var e={};n.r(e),n.d(e,{exclude:()=>O,extract:()=>T,parse:()=>D,parseUrl:()=>I,pick:()=>L,stringify:()=>P,stringifyUrl:()=>F});var t={};n.r(t),n.d(t,{attentionMarkers:()=>G_,contentInitial:()=>M_,disable:()=>K_,document:()=>R_,flow:()=>W_,flowInitial:()=>B_,insideSpan:()=>V_,string:()=>U_,text:()=>H_});var r={};n.r(r),n.d(r,{boolean:()=>BT,booleanish:()=>WT,commaOrSpaceSeparated:()=>KT,commaSeparated:()=>GT,number:()=>HT,overloadedBoolean:()=>UT,spaceSeparated:()=>VT});var i=n(4107),o=n(7877),a=n(8930);const s=window.self!==window.top;var l=n(1166),u=n(2375),c=n(6639);const d="%[a-f0-9]{2}",h=new RegExp("("+d+")|([^%]+?)","gi"),p=new RegExp("("+d+")+","gi");function f(e,t){try{return[decodeURIComponent(e.join(""))]}catch(i){}if(1===e.length)return e;t=t||1;const n=e.slice(0,t),r=e.slice(t);return Array.prototype.concat.call([],f(n),f(r))}function m(e){try{return decodeURIComponent(e)}catch(t){let n=e.match(h)||[];for(let r=1;rnull===e||void 0===e,A=e=>encodeURIComponent(e).replace(/[!'()*]/g,e=>"%".concat(e.charCodeAt(0).toString(16).toUpperCase())),x=Symbol("encodeFragmentIdentifier");function w(e){if("string"!==typeof e||1!==e.length)throw new TypeError("arrayFormatSeparator must be single character string")}function k(e,t){return t.encode?t.strict?A(e):encodeURIComponent(e):e}function S(e,t){return t.decode?g(e):e}function E(e){return Array.isArray(e)?e.sort():"object"===typeof e?E(Object.keys(e)).sort((e,t)=>Number(e)-Number(t)).map(t=>e[t]):e}function C(e){const t=e.indexOf("#");return-1!==t&&(e=e.slice(0,t)),e}function _(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&"string"===typeof e&&""!==e.trim()?e=Number(e):!t.parseBooleans||null===e||"true"!==e.toLowerCase()&&"false"!==e.toLowerCase()||(e="true"===e.toLowerCase()),e}function T(e){const t=(e=C(e)).indexOf("?");return-1===t?"":e.slice(t+1)}function D(e,t){w((t=(0,i.A)({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},t)).arrayFormatSeparator);const n=function(e){let t;switch(e.arrayFormat){case"index":return(e,n,r)=>{t=/\[(\d*)]$/.exec(e),e=e.replace(/\[\d*]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return(e,n,r)=>{t=/(\[])$/.exec(e),e=e.replace(/\[]$/,""),t?void 0!==r[e]?r[e]=[...r[e],n]:r[e]=[n]:r[e]=n};case"colon-list-separator":return(e,n,r)=>{t=/(:list)$/.exec(e),e=e.replace(/:list$/,""),t?void 0!==r[e]?r[e]=[...r[e],n]:r[e]=[n]:r[e]=n};case"comma":case"separator":return(t,n,r)=>{const i="string"===typeof n&&n.includes(e.arrayFormatSeparator),o="string"===typeof n&&!i&&S(n,e).includes(e.arrayFormatSeparator);n=o?S(n,e):n;const a=i||o?n.split(e.arrayFormatSeparator).map(t=>S(t,e)):null===n?n:S(n,e);r[t]=a};case"bracket-separator":return(t,n,r)=>{const i=/(\[])$/.test(t);if(t=t.replace(/\[]$/,""),!i)return void(r[t]=n?S(n,e):n);const o=null===n?[]:n.split(e.arrayFormatSeparator).map(t=>S(t,e));void 0!==r[t]?r[t]=[...r[t],...o]:r[t]=o};default:return(e,t,n)=>{void 0!==n[e]?n[e]=[...[n[e]].flat(),t]:n[e]=t}}}(t),r=Object.create(null);if("string"!==typeof e)return r;if(!(e=e.trim().replace(/^[?#&]/,"")))return r;for(const i of e.split("&")){if(""===i)continue;const e=t.decode?i.replace(/\+/g," "):i;let[o,a]=v(e,"=");void 0===o&&(o=e),a=void 0===a?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?a:S(a,t),n(S(o,t),a,r)}for(const[i,o]of Object.entries(r))if("object"===typeof o&&null!==o)for(const[e,n]of Object.entries(o))o[e]=_(n,t);else r[i]=_(o,t);return!1===t.sort?r:(!0===t.sort?Object.keys(r).sort():Object.keys(r).sort(t.sort)).reduce((e,t)=>{const n=r[t];return e[t]=Boolean(n)&&"object"===typeof n&&!Array.isArray(n)?E(n):n,e},Object.create(null))}function P(e,t){if(!e)return"";w((t=(0,i.A)({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},t)).arrayFormatSeparator);const n=n=>t.skipNull&&b(e[n])||t.skipEmptyString&&""===e[n],r=function(e){switch(e.arrayFormat){case"index":return t=>(n,r)=>{const i=n.length;return void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[k(t,e),"[",i,"]"].join("")]:[...n,[k(t,e),"[",k(i,e),"]=",k(r,e)].join("")]};case"bracket":return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[k(t,e),"[]"].join("")]:[...n,[k(t,e),"[]=",k(r,e)].join("")];case"colon-list-separator":return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[k(t,e),":list="].join("")]:[...n,[k(t,e),":list=",k(r,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t="bracket-separator"===e.arrayFormat?"[]=":"=";return n=>(r,i)=>void 0===i||e.skipNull&&null===i||e.skipEmptyString&&""===i?r:(i=null===i?"":i,0===r.length?[[k(n,e),t,k(i,e)].join("")]:[[r,k(i,e)].join(e.arrayFormatSeparator)])}default:return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,k(t,e)]:[...n,[k(t,e),"=",k(r,e)].join("")]}}(t),o={};for(const[i,s]of Object.entries(e))n(i)||(o[i]=s);const a=Object.keys(o);return!1!==t.sort&&a.sort(t.sort),a.map(n=>{const i=e[n];return void 0===i?"":null===i?k(n,t):Array.isArray(i)?0===i.length&&"bracket-separator"===t.arrayFormat?k(n,t)+"[]":i.reduce(r(n),[]).join("&"):k(n,t)+"="+k(i,t)}).filter(e=>e.length>0).join("&")}function I(e,t){var n,r;t=(0,i.A)({decode:!0},t);let[o,a]=v(e,"#");return void 0===o&&(o=e),(0,i.A)({url:null!==(n=null===(r=o)||void 0===r||null===(r=r.split("?"))||void 0===r?void 0:r[0])&&void 0!==n?n:"",query:D(T(e),t)},t&&t.parseFragmentIdentifier&&a?{fragmentIdentifier:S(a,t)}:{})}function F(e,t){t=(0,i.A)({encode:!0,strict:!0,[x]:!0},t);const n=C(e.url).split("?")[0]||"",r=T(e.url);let o=P((0,i.A)((0,i.A)({},D(r,{sort:!1})),e.query),t);o&&(o="?".concat(o));let a=function(e){let t="";const n=e.indexOf("#");return-1!==n&&(t=e.slice(n)),t}(e.url);if(e.fragmentIdentifier){const r=new URL(n);r.hash=e.fragmentIdentifier,a=t[x]?r.hash:"#".concat(e.fragmentIdentifier)}return"".concat(n).concat(o).concat(a)}function L(e,t,n){n=(0,i.A)({parseFragmentIdentifier:!0,[x]:!1},n);const{url:r,query:o,fragmentIdentifier:a}=I(e,n);return F({url:r,query:y(o,t),fragmentIdentifier:a},n)}function O(e,t,n){return L(e,Array.isArray(t)?e=>!t.includes(e):(e,n)=>!t(e,n),n)}const N=e;var z=n(6135),j=n(328),R=n(252),M=n(2770);const B=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return(e=>{let t=3735928559,n=1103547991;for(let r=0;r>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(t^t>>>13,3266489909),(n>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")})("".concat(e).concat(t))},W=async function(e){var t,n;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(null!==(t=globalThis.crypto)&&void 0!==t&&null!==(n=t.subtle)&&void 0!==n&&n.digest)return(0,l.$Q)(e,r);if(R.aQ)try{const t=await(0,M.Ru)(j.U3,{text:e,salt:r});if("string"===typeof t&&t)return t}catch(i){}return B(e,r)};var U=n(7301),H=n(1152),V=n(1442),G=n(3951),K=n(4181);const q=e=>{try{return JSON.parse(atob(e.split(".")[1])).exp}catch(t){(0,K.h9)("parseMSToken",t)}return 0},$=(()=>{let e=null;return async()=>{if(e)try{const t=await e;if(t.expiresAt>Date.now()+1e3)return t.token}catch(t){}e=(async()=>{try{const e=Date.now(),t=await(0,a.J4)();if(t){const n=1e3*q(t);if(n>e+1e3)return{token:t,expiresAt:n}}const n=await yn();if(!n)throw new Error("Failed to fetch ms token");const r=1e3*q(n);return await(0,a.xe)(n),{token:n,expiresAt:r}}catch(t){throw(0,K.h9)("get msauth failed",t),t}})();return(await e).token}})();let Y=1e4*Math.round(1e4*Math.random());var X=n(7029);const J=new(n.n(X)())({ecmaVer:"latest",sourceType:"script",sandBox:!0}),{entries:Q,setPrototypeOf:Z,isFrozen:ee,getPrototypeOf:te,getOwnPropertyDescriptor:ne}=Object;let{freeze:re,seal:ie,create:oe}=Object,{apply:ae,construct:se}="undefined"!==typeof Reflect&&Reflect;re||(re=function(e){return e}),ie||(ie=function(e){return e}),ae||(ae=function(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i1?t-1:0),r=1;r1?n-1:0),i=1;i2&&void 0!==arguments[2]?arguments[2]:pe;Z&&Z(e,null);let r=t.length;for(;r--;){let i=t[r];if("string"===typeof i){const e=n(i);e!==i&&(ee(t)||(t[r]=e),i=e)}e[i]=!0}return e}function Ee(e){for(let t=0;t/gm),We=ie(/\$\{[\w\W]*/gm),Ue=ie(/^data-[\-\w.\u00B7-\uFFFF]+$/),He=ie(/^aria-[\-\w]+$/),Ve=ie(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Ge=ie(/^(?:\w+script|data):/i),Ke=ie(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),qe=ie(/^html$/i),$e=ie(/^[a-z][.\w]*(-[.\w]+)+$/i);var Ye=Object.freeze({__proto__:null,ARIA_ATTR:He,ATTR_WHITESPACE:Ke,CUSTOM_ELEMENT:$e,DATA_ATTR:Ue,DOCTYPE_NAME:qe,ERB_EXPR:Be,IS_ALLOWED_URI:Ve,IS_SCRIPT_OR_DATA:Ge,MUSTACHE_EXPR:Me,TMPLIT_EXPR:We});const Xe=1,Je=3,Qe=7,Ze=8,et=9,tt=function(){return"undefined"===typeof window?null:window};var nt=function e(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:tt();const n=t=>e(t);if(n.version="3.4.0",n.removed=[],!t||!t.document||t.document.nodeType!==et||!t.Element)return n.isSupported=!1,n;let{document:r}=t;const i=r,o=i.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:c,NamedNodeMap:d=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:h,DOMParser:p,trustedTypes:f}=t,m=u.prototype,g=_e(m,"cloneNode"),v=_e(m,"remove"),y=_e(m,"nextSibling"),b=_e(m,"childNodes"),A=_e(m,"parentNode");if("function"===typeof s){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let x,w="";const{implementation:k,createNodeIterator:S,createDocumentFragment:E,getElementsByTagName:C}=r,{importNode:_}=i;let T={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};n.isSupported="function"===typeof Q&&"function"===typeof A&&k&&void 0!==k.createHTMLDocument;const{MUSTACHE_EXPR:D,ERB_EXPR:P,TMPLIT_EXPR:I,DATA_ATTR:F,ARIA_ATTR:L,IS_SCRIPT_OR_DATA:O,ATTR_WHITESPACE:N,CUSTOM_ELEMENT:z}=Ye;let{IS_ALLOWED_URI:j}=Ye,R=null;const M=Se({},[...Te,...De,...Pe,...Fe,...Oe]);let B=null;const W=Se({},[...Ne,...ze,...je,...Re]);let U=Object.seal(oe(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),H=null,V=null;const G=Object.seal(oe(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let K=!0,q=!0,$=!1,Y=!0,X=!1,J=!0,Z=!1,ee=!1,te=!1,ne=!1,ie=!1,ae=!1,se=!0,we=!1,ke=!0,Ee=!1,Me={},Be=null;const We=Se({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let Ue=null;const He=Se({},["audio","video","img","source","image","track"]);let Ge=null;const Ke=Se({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),$e="http://www.w3.org/1998/Math/MathML",nt="http://www.w3.org/2000/svg",rt="http://www.w3.org/1999/xhtml";let it=rt,ot=!1,at=null;const st=Se({},[$e,nt,rt],fe);let lt=Se({},["mi","mo","mn","ms","mtext"]),ut=Se({},["annotation-xml"]);const ct=Se({},["title","style","font","a","script"]);let dt=null;const ht=["application/xhtml+xml","text/html"];let pt=null,ft=null;const mt=r.createElement("form"),gt=function(e){return e instanceof RegExp||e instanceof Function},vt=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!ft||ft!==e){if(e&&"object"===typeof e||(e={}),e=Ce(e),dt=-1===ht.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,pt="application/xhtml+xml"===dt?fe:pe,R=be(e,"ALLOWED_TAGS")?Se({},e.ALLOWED_TAGS,pt):M,B=be(e,"ALLOWED_ATTR")?Se({},e.ALLOWED_ATTR,pt):W,at=be(e,"ALLOWED_NAMESPACES")?Se({},e.ALLOWED_NAMESPACES,fe):st,Ge=be(e,"ADD_URI_SAFE_ATTR")?Se(Ce(Ke),e.ADD_URI_SAFE_ATTR,pt):Ke,Ue=be(e,"ADD_DATA_URI_TAGS")?Se(Ce(He),e.ADD_DATA_URI_TAGS,pt):He,Be=be(e,"FORBID_CONTENTS")?Se({},e.FORBID_CONTENTS,pt):We,H=be(e,"FORBID_TAGS")?Se({},e.FORBID_TAGS,pt):Ce({}),V=be(e,"FORBID_ATTR")?Se({},e.FORBID_ATTR,pt):Ce({}),Me=!!be(e,"USE_PROFILES")&&e.USE_PROFILES,K=!1!==e.ALLOW_ARIA_ATTR,q=!1!==e.ALLOW_DATA_ATTR,$=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Y=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,X=e.SAFE_FOR_TEMPLATES||!1,J=!1!==e.SAFE_FOR_XML,Z=e.WHOLE_DOCUMENT||!1,ne=e.RETURN_DOM||!1,ie=e.RETURN_DOM_FRAGMENT||!1,ae=e.RETURN_TRUSTED_TYPE||!1,te=e.FORCE_BODY||!1,se=!1!==e.SANITIZE_DOM,we=e.SANITIZE_NAMED_PROPS||!1,ke=!1!==e.KEEP_CONTENT,Ee=e.IN_PLACE||!1,j=e.ALLOWED_URI_REGEXP||Ve,it=e.NAMESPACE||rt,lt=e.MATHML_TEXT_INTEGRATION_POINTS||lt,ut=e.HTML_INTEGRATION_POINTS||ut,U=e.CUSTOM_ELEMENT_HANDLING||oe(null),e.CUSTOM_ELEMENT_HANDLING&>(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(U.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&>(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(U.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"===typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(U.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),X&&(q=!1),ie&&(ne=!0),Me&&(R=Se({},Oe),B=oe(null),!0===Me.html&&(Se(R,Te),Se(B,Ne)),!0===Me.svg&&(Se(R,De),Se(B,ze),Se(B,Re)),!0===Me.svgFilters&&(Se(R,Pe),Se(B,ze),Se(B,Re)),!0===Me.mathMl&&(Se(R,Fe),Se(B,je),Se(B,Re))),G.tagCheck=null,G.attributeCheck=null,e.ADD_TAGS&&("function"===typeof e.ADD_TAGS?G.tagCheck=e.ADD_TAGS:(R===M&&(R=Ce(R)),Se(R,e.ADD_TAGS,pt))),e.ADD_ATTR&&("function"===typeof e.ADD_ATTR?G.attributeCheck=e.ADD_ATTR:(B===W&&(B=Ce(B)),Se(B,e.ADD_ATTR,pt))),e.ADD_URI_SAFE_ATTR&&Se(Ge,e.ADD_URI_SAFE_ATTR,pt),e.FORBID_CONTENTS&&(Be===We&&(Be=Ce(Be)),Se(Be,e.FORBID_CONTENTS,pt)),e.ADD_FORBID_CONTENTS&&(Be===We&&(Be=Ce(Be)),Se(Be,e.ADD_FORBID_CONTENTS,pt)),ke&&(R["#text"]=!0),Z&&Se(R,["html","head","body"]),R.table&&(Se(R,["tbody"]),delete H.tbody),e.TRUSTED_TYPES_POLICY){if("function"!==typeof e.TRUSTED_TYPES_POLICY.createHTML)throw xe('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!==typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw xe('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');x=e.TRUSTED_TYPES_POLICY,w=x.createHTML("")}else void 0===x&&(x=function(e,t){if("object"!==typeof e||"function"!==typeof e.createPolicy)return null;let n=null;const r="data-tt-policy-suffix";t&&t.hasAttribute(r)&&(n=t.getAttribute(r));const i="dompurify"+(n?"#"+n:"");try{return e.createPolicy(i,{createHTML:e=>e,createScriptURL:e=>e})}catch(vr){return console.warn("TrustedTypes policy "+i+" could not be created."),null}}(f,o)),null!==x&&"string"===typeof w&&(w=x.createHTML(""));re&&re(e),ft=e}},yt=Se({},[...De,...Pe,...Ie]),bt=Se({},[...Fe,...Le]),At=function(e){de(n.removed,{element:e});try{A(e).removeChild(e)}catch(vr){v(e)}},xt=function(e,t){try{de(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(vr){de(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(ne||ie)try{At(t)}catch(vr){}else try{t.setAttribute(e,"")}catch(vr){}},wt=function(e){let t=null,n=null;if(te)e=""+e;else{const t=me(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===dt&&it===rt&&(e=''+e+"");const i=x?x.createHTML(e):e;if(it===rt)try{t=(new p).parseFromString(i,dt)}catch(vr){}if(!t||!t.documentElement){t=k.createDocument(it,"template",null);try{t.documentElement.innerHTML=ot?w:i}catch(vr){}}const o=t.body||t.documentElement;return e&&n&&o.insertBefore(r.createTextNode(n),o.childNodes[0]||null),it===rt?C.call(t,Z?"html":"body")[0]:Z?t.documentElement:o},kt=function(e){return S.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},St=function(e){return e instanceof h&&("string"!==typeof e.nodeName||"string"!==typeof e.textContent||"function"!==typeof e.removeChild||!(e.attributes instanceof d)||"function"!==typeof e.removeAttribute||"function"!==typeof e.setAttribute||"string"!==typeof e.namespaceURI||"function"!==typeof e.insertBefore||"function"!==typeof e.hasChildNodes)},Et=function(e){return"function"===typeof l&&e instanceof l};function Ct(e,t,r){le(e,e=>{e.call(n,t,r,ft)})}const _t=function(e){let t=null;if(Ct(T.beforeSanitizeElements,e,null),St(e))return At(e),!0;const r=pt(e.nodeName);if(Ct(T.uponSanitizeElement,e,{tagName:r,allowedTags:R}),J&&e.hasChildNodes()&&!Et(e.firstElementChild)&&Ae(/<[/\w!]/g,e.innerHTML)&&Ae(/<[/\w!]/g,e.textContent))return At(e),!0;if(J&&e.namespaceURI===rt&&"style"===r&&Et(e.firstElementChild))return At(e),!0;if(e.nodeType===Qe)return At(e),!0;if(J&&e.nodeType===Ze&&Ae(/<[/\w]/g,e.data))return At(e),!0;if(H[r]||!(G.tagCheck instanceof Function&&G.tagCheck(r))&&!R[r]){if(!H[r]&&Dt(r)){if(U.tagNameCheck instanceof RegExp&&Ae(U.tagNameCheck,r))return!1;if(U.tagNameCheck instanceof Function&&U.tagNameCheck(r))return!1}if(ke&&!Be[r]){const t=A(e)||e.parentNode,n=b(e)||e.childNodes;if(n&&t){for(let r=n.length-1;r>=0;--r){const i=g(n[r],!0);i.__removalCount=(e.__removalCount||0)+1,t.insertBefore(i,y(e))}}}return At(e),!0}return e instanceof u&&!function(e){let t=A(e);t&&t.tagName||(t={namespaceURI:it,tagName:"template"});const n=pe(e.tagName),r=pe(t.tagName);return!!at[e.namespaceURI]&&(e.namespaceURI===nt?t.namespaceURI===rt?"svg"===n:t.namespaceURI===$e?"svg"===n&&("annotation-xml"===r||lt[r]):Boolean(yt[n]):e.namespaceURI===$e?t.namespaceURI===rt?"math"===n:t.namespaceURI===nt?"math"===n&&ut[r]:Boolean(bt[n]):e.namespaceURI===rt?!(t.namespaceURI===nt&&!ut[r])&&!(t.namespaceURI===$e&&!lt[r])&&!bt[n]&&(ct[n]||!yt[n]):!("application/xhtml+xml"!==dt||!at[e.namespaceURI]))}(e)?(At(e),!0):"noscript"!==r&&"noembed"!==r&&"noframes"!==r||!Ae(/<\/no(script|embed|frames)/i,e.innerHTML)?(X&&e.nodeType===Je&&(t=e.textContent,le([D,P,I],e=>{t=ge(t,e," ")}),e.textContent!==t&&(de(n.removed,{element:e.cloneNode()}),e.textContent=t)),Ct(T.afterSanitizeElements,e,null),!1):(At(e),!0)},Tt=function(e,t,n){if(V[t])return!1;if(se&&("id"===t||"name"===t)&&(n in r||n in mt))return!1;if(q&&!V[t]&&Ae(F,t));else if(K&&Ae(L,t));else if(G.attributeCheck instanceof Function&&G.attributeCheck(t,e));else if(!B[t]||V[t]){if(!(Dt(e)&&(U.tagNameCheck instanceof RegExp&&Ae(U.tagNameCheck,e)||U.tagNameCheck instanceof Function&&U.tagNameCheck(e))&&(U.attributeNameCheck instanceof RegExp&&Ae(U.attributeNameCheck,t)||U.attributeNameCheck instanceof Function&&U.attributeNameCheck(t,e))||"is"===t&&U.allowCustomizedBuiltInElements&&(U.tagNameCheck instanceof RegExp&&Ae(U.tagNameCheck,n)||U.tagNameCheck instanceof Function&&U.tagNameCheck(n))))return!1}else if(Ge[t]);else if(Ae(j,ge(n,N,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==ve(n,"data:")||!Ue[e]){if($&&!Ae(O,ge(n,N,"")));else if(n)return!1}else;return!0},Dt=function(e){return"annotation-xml"!==e&&me(e,z)},Pt=function(e){Ct(T.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||St(e))return;const r={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:B,forceKeepAttr:void 0};let i=t.length;for(;i--;){const o=t[i],{name:a,namespaceURI:s,value:l}=o,u=pt(a),c=l;let d="value"===a?c:ye(c);if(r.attrName=u,r.attrValue=d,r.keepAttr=!0,r.forceKeepAttr=void 0,Ct(T.uponSanitizeAttribute,e,r),d=r.attrValue,!we||"id"!==u&&"name"!==u||(xt(a,e),d="user-content-"+d),J&&Ae(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,d)){xt(a,e);continue}if("attributename"===u&&me(d,"href")){xt(a,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){xt(a,e);continue}if(!Y&&Ae(/\/>/i,d)){xt(a,e);continue}X&&le([D,P,I],e=>{d=ge(d,e," ")});const h=pt(e.nodeName);if(Tt(h,u,d)){if(x&&"object"===typeof f&&"function"===typeof f.getAttributeType)if(s);else switch(f.getAttributeType(h,u)){case"TrustedHTML":d=x.createHTML(d);break;case"TrustedScriptURL":d=x.createScriptURL(d)}if(d!==c)try{s?e.setAttributeNS(s,a,d):e.setAttribute(a,d),St(e)?At(e):ce(n.removed)}catch(vr){xt(a,e)}}else xt(a,e)}Ct(T.afterSanitizeAttributes,e,null)},It=function(e){let t=null;const n=kt(e);for(Ct(T.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)Ct(T.uponSanitizeShadowNode,t,null),_t(t),Pt(t),t.content instanceof a&&It(t.content);Ct(T.afterSanitizeShadowDOM,e,null)};return n.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=null,o=null,s=null,u=null;if(ot=!e,ot&&(e="\x3c!--\x3e"),"string"!==typeof e&&!Et(e)){if("function"!==typeof e.toString)throw xe("toString is not a function");if("string"!==typeof(e=e.toString()))throw xe("dirty is not a string, aborting")}if(!n.isSupported)return e;if(ee||vt(t),n.removed=[],"string"===typeof e&&(Ee=!1),Ee){if(e.nodeName){const t=pt(e.nodeName);if(!R[t]||H[t])throw xe("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof l)r=wt("\x3c!----\x3e"),o=r.ownerDocument.importNode(e,!0),o.nodeType===Xe&&"BODY"===o.nodeName||"HTML"===o.nodeName?r=o:r.appendChild(o);else{if(!ne&&!X&&!Z&&-1===e.indexOf("<"))return x&&ae?x.createHTML(e):e;if(r=wt(e),!r)return ne?null:ae?w:""}r&&te&&At(r.firstChild);const c=kt(Ee?e:r);for(;s=c.nextNode();)_t(s),Pt(s),s.content instanceof a&&It(s.content);if(Ee)return e;if(ne){if(X){r.normalize();let e=r.innerHTML;le([D,P,I],t=>{e=ge(e,t," ")}),r.innerHTML=e}if(ie)for(u=E.call(r.ownerDocument);r.firstChild;)u.appendChild(r.firstChild);else u=r;return(B.shadowroot||B.shadowrootmode)&&(u=_.call(i,u,!0)),u}let d=Z?r.outerHTML:r.innerHTML;return Z&&R["!doctype"]&&r.ownerDocument&&r.ownerDocument.doctype&&r.ownerDocument.doctype.name&&Ae(qe,r.ownerDocument.doctype.name)&&(d="\n"+d),X&&le([D,P,I],e=>{d=ge(d,e," ")}),x&&ae?x.createHTML(d):d},n.setConfig=function(){vt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),ee=!0},n.clearConfig=function(){ft=null,ee=!1},n.isValidAttribute=function(e,t,n){ft||vt({});const r=pt(e),i=pt(t);return Tt(r,i,n)},n.addHook=function(e,t){"function"===typeof t&&de(T[e],t)},n.removeHook=function(e,t){if(void 0!==t){const n=ue(T[e],t);return-1===n?void 0:he(T[e],n,1)[0]}return ce(T[e])},n.removeHooks=function(e){T[e]=[]},n.removeAllHooks=function(){T={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},n}();const rt=(()=>{const e="kiss-translator-policy";let t=null,n=!1;const r=()=>{if(t||n)return t;if(!globalThis.trustedTypes||!globalThis.trustedTypes.createPolicy)return n=!0,null;try{t=globalThis.trustedTypes.createPolicy(e,{createHTML:e=>nt.sanitize(e),createScript:e=>e,createScriptURL:e=>e})}catch(o){var r,i;if(null!==o&&void 0!==o&&null!==(r=o.message)&&void 0!==r&&r.includes("already exists"))t=(null===(i=globalThis.trustedTypes.policies)||void 0===i?void 0:i.get(e))||null;t||(n=!0)}return t};return{createHTML:e=>{const t=r();return t?t.createHTML(e):nt.sanitize(e)},createScript:e=>{const t=r();return t?t.createScript(e):e},createScriptURL:e=>{const t=r();return t?t.createScriptURL(e):e},isEnabled:()=>null!==t}})();function it(e){if(!e||"string"!==typeof e)return e;return(new DOMParser).parseFromString(rt.createHTML(e),"text/html").documentElement.textContent||""}var ot=n(1825),at=n(5047),st=n(1270);const lt=new Map,ut=(e,t)=>{if(lt.has(e))return lt.get(e);const n=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o.w62;const t=[];return{add:function(){for(var n=arguments.length,r=new Array(n),i=0;i0&&t.splice(0,o)},getAll:()=>[...t],clear:()=>{t.length=0}}}(t);return lt.set(e,n),n},ct=e=>{lt.delete(e)};function dt(e){const t=e.trim();if(!t.includes(":")&&!t.includes("."))return parseInt(t,10)||0;let n=t,r="0";if(t.includes(".")){const e=t.split(".");n=e[0],r=e[1]}else{const e=t.split(":");e.length>1&&3===e[e.length-1].length&&(r=e.pop(),n=e.join(":"))}const i=n.split(":").map(e=>parseInt(e,10)||0);let o=0,a=0,s=0;3===i.length?[o,a,s]=i:2===i.length?[a,s]=i:1===i.length&&([s]=i);return 1e3*(3600*o+60*a+s)+(parseInt(r.padEnd(3,"0"),10)||0)}function ht(e){const t=Math.floor(e/1e3),n=String(e%1e3).padStart(3,"0"),r=Math.floor(t/60),i=String(t%60).padStart(2,"0"),o=String(Math.floor(r/60)).padStart(2,"0"),a=String(r%60).padStart(2,"0");return"".concat(o,":").concat(a,":").concat(i,".").concat(n)}function pt(e){if(!Array.isArray(e))return"WEBVTT";const t=e.map((e,t)=>{const n=ht(e.start),r=ht(e.end),i=t+1,o="".concat(n," --\x3e ").concat(r),a=e.text||"",s=e.translation||"";return"".concat(i,"\n").concat(o,"\n").concat(a,"\n").concat(s)});return["WEBVTT",...t].join("\n\n")}const ft=e=>e?e.trim().replace(/\s+/g," "):"",mt=()=>({title:(()=>{try{return(0,l.sz)(ft(document.title))}catch(e){return""}})(),description:(()=>{try{const e=document.querySelector('meta[name="description"]'),t=(null===e||void 0===e?void 0:e.getAttribute("content"))||"";return(0,l.sz)(ft(t))}catch(e){return""}})(),summary:(()=>{let e="";try{var t,n;const o=(null===(t=document)||void 0===t||null===(n=t.location)||void 0===n?void 0:n.href)||"",a="https://www.youtube.com";if(o.startsWith(a)){const t=document.querySelector("#collapsed-title")||document.querySelector("#description-inline-expander");t&&(e=t.textContent)}var r,i;e||(e=(null===(r=document.querySelector('meta[property="og:description"]'))||void 0===r?void 0:r.getAttribute("content"))||""),e||(e=(null===(i=document.querySelector('meta[name="keywords"]'))||void 0===i?void 0:i.getAttribute("content"))||"")}catch(o){}return(0,l.sz)(ft(e))})()});var gt=n(9385);const vt=["reqHook"],yt=new Map,bt=new Map,At=function(e){var t;let n=arguments.length>2?arguments[2]:void 0;const r=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split(/\n|,/).map(e=>e.trim()).filter(Boolean);if(0===r.length)return"";const i=((null!==(t=n.get(e))&&void 0!==t?t:-1)+1)%r.length;return n.set(e,i),r[i]},xt=e=>{let{subtitlePrompt:t,tone:n,from:r,to:i,fromLang:a,toLang:s,docInfo:{title:u="",description:c="",summary:d=""}={},aiTerms:h=""}=e;const p=(0,l.jJ)(h),f=Object.entries(p).map(e=>{let[t,n]=e;return"- ".concat(t,": ").concat(n)}).join("\n");return String(t||"").replaceAll(o.Ymt,u).replaceAll(o.yDH,c).replaceAll(o.snk,d).replaceAll(o.S6q,n).replaceAll(o.S6X,f).replaceAll(o.Qfh,r).replaceAll(o.fDS,i).replaceAll(o.L32,a).replaceAll(o.Wdi,s)},wt=function(e){if(!e)return[];if(!(!(arguments.length>1&&void 0!==arguments[1])||arguments[1]))return[[e]];let t=(0,l.if)(e).trim();const n=(0,ot.qG)(t,{decodeText:it});return n.length>0?n.map(e=>e.translation):t.split("\n").map(e=>[it(e.replace(//gi,"\n").trim()),""])},kt=function(){const e=String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"");if(/WEBVTT|MM:SS\.mmm|-->/i.test(e))return"vtt-legacy";if(/\{\s*["']?s["']?\s*:/.test(e))return"index-v1";const t=/["'`]p["'`]/i.test(e),n=/pause\s+levels?|\u505c\u987f\u7b49\u7ea7|\u66ab\u505c\u7b49\u7d1a/i.test(e);return t&&n?"boundary-v2":"boundary-v3"},St=function(e){const t=kt(arguments.length>1&&void 0!==arguments[1]?arguments[1]:""),n="boundary-v2"===t||"index-v1"===t||"vtt-legacy"===t;return e.map((t,r)=>{const i={id:r,text:t.text};if(n&&r>0){const n=(o=t.start-e[r-1].end,!Number.isFinite(o)||o<=300?0:o<=600?1:o<=1200?2:3);n&&(i.p=n)}else if(!n&&r0&&(i.pauseMs=n)}var o;return i})},Et=function(){return"vtt-legacy"!==kt(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")},Ct=e=>Array.isArray(e)?e.filter(e=>!e.thought&&e.text).map(e=>e.text).join(""):"",_t=function(){return/\/v1(?:beta\d*)?\/interactions(?:[/?]|$)/i.test(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")},Tt=e=>{var t,n,r;return Array.isArray(null===e||void 0===e?void 0:e.steps)?(e=>Array.isArray(null===e||void 0===e?void 0:e.steps)?e.steps.filter(e=>"model_output"===(null===e||void 0===e?void 0:e.type)).flatMap(e=>Array.isArray(e.content)?e.content:[]).filter(e=>"text"===(null===e||void 0===e?void 0:e.type)&&e.text).map(e=>e.text).join(""):"")(e):Ct(null===e||void 0===e||null===(t=e.candidates)||void 0===t||null===(n=t[0])||void 0===n||null===(r=n.content)||void 0===r?void 0:r.parts)},Dt=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"auto";if(!e)return[];if(null!==t&&void 0!==t&&t.length){const r=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"auto";const r=(0,st.n)(t),o=e=>{if(!Array.isArray(e)||!e.length)return null;const o=e.map(gt.Tt);if(o.some(Boolean)&&!o.every(Boolean))return null;if(!o[0]){const r=[];let i=0;for(const o of e){const e=(0,gt.Ir)(o,t,i,n);if(!e)break;r.push(e),i=e._ei+1}return r.length?r:null}const a=[];for(const n of e){var s,l,u,c,d,h,p,f;const e=Number(null!==(s=n.s)&&void 0!==s?s:n.start_id),o=Number(null!==(l=n.e)&&void 0!==l?l:n.end_id);if(!Number.isInteger(e)||!Number.isInteger(o))continue;const m=Math.max(0,Math.min(e,t.length-1)),g=Math.max(m,Math.min(o,t.length-1)),v=String(null!==(u=null!==(c=n.o)&&void 0!==c?c:n.original)&&void 0!==u?u:""),y=r.realign(e,o,v);a.push((0,i.A)({start:t[null!==(d=null===y||void 0===y?void 0:y.startIdx)&&void 0!==d?d:m].start,end:t[null!==(h=null===y||void 0===y?void 0:y.endIdx)&&void 0!==h?h:g].end,text:v,translation:String(null!==(p=null!==(f=n.t)&&void 0!==f?f:n.translation)&&void 0!==p?p:""),_si:e,_ei:o},y&&{_alignedSi:y.startIdx,_alignedEi:y.endIdx}))}return a.length?a:null},a=(0,l.if)(String(null!==e&&void 0!==e?e:"")).trim().replace(/"([a-z_]+)">>/g,'"$1":">>');try{return o(JSON.parse(a))}catch(s){try{const e=a.indexOf("["),t=a.lastIndexOf("}");return e<0||te.includes("--\x3e"));if(-1===s)continue;const[l,u]=t[s].split("--\x3e"),c=t.slice(s+1);if(l&&u&&c.length>0){var i,o;const e=it((null===(i=c[0])||void 0===i?void 0:i.trim())||""),t=it((null===(o=c[1])||void 0===o?void 0:o.trim())||"");r.push({start:dt(l),end:dt(u),text:e,translation:t})}}return r}(e);if(Array.isArray(t))return t}catch(r){(0,K.h9)("parse AI Res: subtitle",r)}return[]},Pt={max:32768,high:16384,medium:8192,low:4096,minimal:2048},It=(e,t)=>{let{apiType:n,thinkingMode:r,thinkingEffort:i}=t;if("auto"===r)return;const a=o.Imq[n];if(!a)return;const s=i&&"_default"!==i;switch(a.type){case"deepseek":e.thinking={type:"enabled"===r?"enabled":"disabled"},"enabled"===r&&s&&(e.reasoning_effort=i);break;case"aliyunbailian":e.enable_thinking="enabled"===r;break;case"siliconflow":e.enable_thinking="enabled"===r,"enabled"===r&&s&&(e.thinking_budget=Pt[i]||8192);break;case"cerebras":"disabled"===r?e.reasoning_effort="none":s&&(e.reasoning_effort=i);break;case"openai":"disabled"===r?e.reasoning_effort="none":"enabled"===r&&s&&(e.reasoning_effort=i);break;case"openrouter":s&&(e.reasoning={effort:i})}},Ft=e=>{let{url:t,key:n,systemPrompt:r,userPrompt:i,model:o,temperature:a,maxTokens:s,hisMsgs:l=[],useStream:u=!1,apiType:c,thinkingMode:d,thinkingEffort:h}=e;const p={role:"user",content:i},f={model:o,messages:[{role:"system",content:r},...l,p],temperature:a,max_completion_tokens:s,stream:u};It(f,{apiType:c,thinkingMode:d,thinkingEffort:h});return{url:t,body:f,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n)},userMsg:p}},Lt={[o.bCM]:e=>{let{texts:t,from:n,to:r,url:i,key:o}=e;const a=N.stringify({client:"gtx",dt:"t",dj:1,ie:"UTF-8",sl:n,tl:r,q:t.join(" ")});i="".concat(i,"?").concat(a);const s={"Content-type":"application/json"};return o&&(s.Authorization="Bearer ".concat(o)),{url:i,headers:s,method:"GET"}},[o.ul7]:e=>{let{texts:t,from:n,to:r,url:i,key:o}=e;return{url:i,body:[[t,n,r],"wt_lib"],headers:{"Content-Type":"application/json+protobuf","X-Goog-API-Key":o}}},[o.kXF]:e=>{let{texts:t,from:n,to:r,token:i}=e;const o=N.stringify({from:n,to:r,"api-version":"3.0"}),a="https://api-edge.cognitive.microsofttranslator.com/translate?".concat(o),s={"Content-type":"application/json",Authorization:"Bearer ".concat(i)};return{url:a,body:t.map(e=>({Text:e})),headers:s}},[o.FS6]:e=>{let{texts:t,from:n,to:r,url:i,key:o,region:a}=e;const s=N.stringify({from:n,to:r});i=i.endsWith("&")?"".concat(i).concat(s):"".concat(i,"&").concat(s);const l={"Content-type":"application/json","Ocp-Apim-Subscription-Key":o,"Ocp-Apim-Subscription-Region":a};return{url:i,body:t.map(e=>({Text:e})),headers:l}},[o.e70]:e=>{let{texts:t,from:n,to:r,url:i,key:o}=e;return{url:i,body:{text:t,target_lang:r,source_lang:n},headers:{"Content-type":"application/json",Authorization:"DeepL-Auth-Key ".concat(o)}}},[o.An9]:e=>{let{texts:t,from:n,to:r}=e;const i=t.join(" "),o=(i.match(/[i]/g)||[]).length+1;let a=Date.now();a+=o-a%o,Y++;return{url:"https://www2.deepl.com/jsonrpc",body:{jsonrpc:"2.0",method:"LMT_handle_texts",params:{splitting:"newlines",lang:{target_lang:r,source_lang_user_selected:n},commonJobParams:{wasSpoken:!1,transcribe_as:""},id:Y,timestamp:a,texts:[{text:i,requestAlternatives:3}]}},headers:{"Content-Type":"application/json",Accept:"*/*","x-app-os-name":"iOS","x-app-os-version":"16.3.0","Accept-Language":"en-US,en;q=0.9","Accept-Encoding":"gzip, deflate, br","x-app-device":"iPhone13,2","User-Agent":"DeepL-iOS/2.9.1 iOS 16.3.0 (iPhone13,2)","x-app-build":"510265","x-app-version":"2.9.1"}}},[o.KBl]:Ft,[o.rUY]:Ft,[o.FsV]:Ft,[o.F16]:Ft,[o.EjO]:Ft,[o.NQu]:Ft,[o.cbe]:Ft,[o.c0T]:e=>{let{texts:t,from:n,to:r,url:i,key:o}=e;const a={text:t.join(" "),target_lang:r,source_lang:n},s={"Content-type":"application/json"};return o&&(s.Authorization="Bearer ".concat(o)),{url:i,body:a,headers:s}},[o.lbn]:Ft,[o.xN$]:e=>{let{texts:t,from:n,to:r}=e;return{url:"https://fanyi.baidu.com/transapi",body:{from:n,to:r,query:t.join(" "),source:"txt"},headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8","User-Agent":o.qxj}}},[o.fFW]:e=>{let{texts:t,from:n,to:r}=e;return{url:"https://transmart.qq.com/api/imt",body:{header:{fn:"auto_translation",client_key:"browser-chrome-110.0.0-Mac OS-df4bd4c5-a65d-44b2-a40f-42f34f3535f2-1677486696487"},type:"plain",model_category:"normal",source:{text_list:t,lang:n},target:{lang:r}},headers:{"Content-Type":"application/json","user-agent":o.qxj,referer:"https://transmart.qq.com/zh-CN/index"}}},[o.UFr]:e=>{let{texts:t,from:n,to:r}=e;return{url:"https://translate.volcengine.com/crx/translate/v1",body:{source_language:n,target_language:r,text:t.join(" ")},headers:{"Content-type":"application/json"}}},[o.C3L]:Ft,[o.lLy]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:i,model:a,maxTokens:s,hisMsgs:l=[],useStream:u=!1,thinkingMode:c,thinkingEffort:d}=e;if(t=t.replaceAll(o.b9x,a).replaceAll(o.xfV,n),_t(t)){const e={type:"user_input",content:[{type:"text",text:i}]},o={max_output_tokens:s};"disabled"===c?o.thinking_level="minimal":"enabled"===c&&d&&"_default"!==d&&(o.thinking_level=d);return{url:t,body:{model:a,system_instruction:r,input:[...l,e],stream:u,store:!1,generation_config:o,safety_settings:[{type:"harassment",threshold:"block_none"},{type:"hate_speech",threshold:"block_none"},{type:"sexually_explicit",threshold:"block_none"},{type:"dangerous_content",threshold:"block_none"}]},headers:{"Content-type":"application/json","x-goog-api-key":n},userMsg:e}}u&&(t=t.replace(":generateContent",":streamGenerateContent"),t+=(t.includes("?")?"&":"?")+"alt=sse");const h={role:"user",parts:[{text:i}]},p={systemInstruction:{parts:[{text:r}]},contents:[...l,h],generationConfig:{maxOutputTokens:s}};"disabled"===c?p.generationConfig.thinkingConfig={thinkingBudget:0}:c&&"auto"!==c&&d&&"_default"!==d&&(p.generationConfig.thinkingConfig={thinkingLevel:d}),Object.assign(p,{safetySettings:[{category:"HARM_CATEGORY_HARASSMENT",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_HATE_SPEECH",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_SEXUALLY_EXPLICIT",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_DANGEROUS_CONTENT",threshold:"BLOCK_NONE"}]});return{url:t,body:p,headers:{"Content-type":"application/json","x-goog-api-key":n},userMsg:h}},[o.kYm]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:i,model:o,temperature:a,maxTokens:s,hisMsgs:l=[],useStream:u=!1,apiType:c,thinkingMode:d,thinkingEffort:h}=e;const p={role:"user",content:i},f={model:o,messages:[{role:"system",content:r},...l,p],temperature:a,max_tokens:s,stream:u};It(f,{apiType:c,thinkingMode:d,thinkingEffort:h});return{url:t,body:f,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n)},userMsg:p}},[o.EsI]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:i,model:o,temperature:a,maxTokens:s,hisMsgs:l=[],useStream:u=!1,thinkingMode:c,thinkingEffort:d}=e;const h={role:"user",content:i},p={model:o,system:r,messages:[...l,h],temperature:a,max_tokens:s,stream:u};c&&"auto"!==c&&"enabled"===c&&(p.thinking={type:"adaptive"},d&&"_default"!==d&&(p.output_config={effort:d}));return{url:t,body:p,headers:{"Content-type":"application/json","anthropic-version":"2023-06-01","anthropic-dangerous-direct-browser-access":"true","x-api-key":n},userMsg:h}},[o.bNe]:e=>{let{texts:t,from:n,to:r,url:i,key:o}=e;return{url:i,body:{text:t.join(" "),source_lang:n,target_lang:r},headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(o)}}},[o.edy]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:i,model:a,temperature:s,maxTokens:l,hisMsgs:u=[],useStream:c=!1,thinkingMode:d,thinkingEffort:h}=e;const p={role:"user",content:i},f={model:a,messages:[{role:"system",content:r},...u,p],temperature:s,max_tokens:l};It(f,{apiType:o.edy,thinkingMode:d,thinkingEffort:h}),f.stream=c;const m={"Content-type":"application/json"};return n&&(m.Authorization="Bearer ".concat(n)),{url:t,body:f,headers:m,userMsg:p}},[o.dGW]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:i,model:a,temperature:s,maxTokens:l,hisMsgs:u=[],useStream:c=!1,thinkingMode:d,thinkingEffort:h}=e;const p={role:"user",content:i},f={model:a,messages:[{role:"system",content:r},...u,p],temperature:s,max_tokens:l,stream:c};It(f,{apiType:o.dGW,thinkingMode:d,thinkingEffort:h});return{url:t,body:f,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n),"HTTP-Referer":"https://fishjar.github.io/kiss-translator/","X-OpenRouter-Title":"KISS Translator"},userMsg:p}},[o.mmp]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:i,model:a,temperature:s,maxTokens:l,hisMsgs:u=[],useStream:c=!1,thinkingMode:d,thinkingEffort:h}=e;const p={role:"user",content:i},f={model:a,messages:[{role:"system",content:r},...u,p],temperature:s,max_completion_tokens:l,stream:c};It(f,{apiType:o.mmp,thinkingMode:d,thinkingEffort:h});return{url:t,body:f,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n),"HTTP-Referer":"https://fishjar.github.io/kiss-translator/","X-Title":"KISS Translator"},userMsg:p}},[o.fqf]:e=>{let{texts:t,fromLang:n,toLang:r,url:i,key:o,useBatchFetch:a}=e;return{url:i,body:a?{texts:t,from:n,to:r}:{text:t[0],from:n,to:r},headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(o)}}}},Ot=e=>{let{url:t="",body:n=null,headers:r={},userMsg:i=null,method:o="POST"}=e;if(!t)throw new Error("genInit: url is empty");const a={method:o,headers:r};if("GET"!==o&&"HEAD"!==o&&n){var s;let e=JSON.stringify(n);const t=null===n||void 0===n||null===(s=n.params)||void 0===s?void 0:s.id;t&&(e=e.replace('method":"',(t+3)%13===0||(t+5)%29===0?'method" : "':'method": "')),Object.assign(a,{body:e})}return[t,a,i]},Nt=async e=>{let{reqHook:t}=e,n=(0,U.A)(e,vt);const{apiType:r,apiSlug:a,key:s,systemPrompt:u,subtitlePrompt:c,nobatchPrompt:d=o.$1M,nobatchUserPrompt:h=o.EEo,useBatchFetch:p,from:f,to:m,fromLang:g,toLang:v,texts:y,glossary:b,aiTerms:A,customHeader:x,customBody:w,events:k,tone:S,docInfo:E}=n;if(o.sNP.mulkeys.has(r)&&(n.key=At(a,s,yt)),r===o.c0T&&(n.url=At(a,n.url,bt)),o.sNP.ai.has(r)){const e=E||mt();let t=k?xt({subtitlePrompt:c,from:f,to:m,fromLang:g,toLang:v,texts:y,docInfo:e,tone:S,aiTerms:A}):(e=>{let{systemPrompt:t,tone:n,from:r,to:i,fromLang:a,toLang:s,texts:l,docInfo:{title:u="",description:c="",summary:d="",context:h=""}={}}=e;return String(t||"").replaceAll(o.Ymt,u).replaceAll(o.yDH,c).replaceAll(o.snk,d).replaceAll(o.xhA,h).replaceAll(o.S6q,n).replaceAll(o.Qfh,r).replaceAll(o.fDS,i).replaceAll(o.L32,a).replaceAll(o.Wdi,s).replaceAll(o.X6r,l[0])})({systemPrompt:p?u:d,from:f,to:m,fromLang:g,toLang:v,texts:y,docInfo:e,tone:S});n.systemPrompt=t,n.userPrompt=k?(e=>{let{formattedEvents:t}=e;return JSON.stringify(t)})({formattedEvents:Et(c)?St(k,c):k}):(e=>{let{nobatchUserPrompt:t,useBatchFetch:n,tone:r,glossary:a={},aiTerms:s="",from:u,to:c,fromLang:d,toLang:h,texts:p,docInfo:{title:f="",description:m="",summary:g="",context:v=""}={}}=e;if(s){const e=(0,l.jJ)(s);a=(0,i.A)((0,i.A)({},a),e)}if(n){const e={targetLanguage:h,segments:p.map((e,t)=>({id:t,text:e}))};return f&&(e.title=f),m&&(e.description=m),0!==Object.keys(a).length&&(e.glossary=a),r&&(e.tone=r),JSON.stringify(e)}const y=Object.entries(a).map(e=>{let[t,n]=e;return"- ".concat(t,": ").concat(n)}).join("\n");return String(t||"").replaceAll(o.Ymt,f).replaceAll(o.yDH,m).replaceAll(o.snk,g).replaceAll(o.xhA,v).replaceAll(o.S6q,r).replaceAll(o.S6X,y).replaceAll(o.Qfh,u).replaceAll(o.fDS,c).replaceAll(o.L32,d).replaceAll(o.Wdi,h).replaceAll(o.X6r,p[0])})({nobatchUserPrompt:h,useBatchFetch:p,from:f,to:m,fromLang:g,toLang:v,texts:y,docInfo:e,tone:S,glossary:b,aiTerms:A})}const{url:C="",body:_=null,headers:T={},userMsg:D=null,method:P="POST"}=Lt[r](n);if(k&&r===o.lLy&&(null!==_&&void 0!==_&&_.generation_config?_.response_format={type:"text",mime_type:"application/json"}:null!==_&&void 0!==_&&_.generationConfig&&(_.generationConfig.responseMimeType="application/json")),null!==x&&void 0!==x&&x.trim()&&Object.assign(T,(0,l.f6)(x)),null!==w&&void 0!==w&&w.trim()&&Object.assign(_,(0,l.f6)(w)),null!==t&&void 0!==t&&t.trim()&&!k)try{const e={url:C,body:_,headers:T,userMsg:D,method:P};J.run("exports.reqHook = ".concat(t));const r=await J.exports.reqHook((0,i.A)((0,i.A)({},n),{},{defaultSystemPrompt:o.loo,defaultSystemPromptXml:o.adh,defaultSystemPromptLines:o.WwB,defaultSubtitlePrompt:o.U$w,defaultNobatchPrompt:o.$1M,defaultNobatchUserPrompt:o.EEo,req:e}),e);if(r&&r.url)return Ot(r)}catch(I){throw(0,K.h9)("run req hook",I),new Error("Request hook error: ".concat(I.message))}return Ot({url:C,body:_,headers:T,userMsg:D,method:P})};function zt(e,t){var n,r,i,a,s;switch(t){case o.lbn:case o.C3L:case o.KBl:case o.rUY:case o.FsV:case o.F16:case o.EjO:case o.NQu:case o.cbe:case o.kYm:case o.dGW:case o.mmp:case o.edy:return(null===e||void 0===e||null===(n=e.choices)||void 0===n||null===(r=n[0])||void 0===r||null===(i=r.message)||void 0===i?void 0:i.content)||"";case o.lLy:return Tt(e);case o.EsI:return(null===e||void 0===e||null===(a=e.content)||void 0===a||null===(s=a[0])||void 0===s?void 0:s.text)||"";case o.fqf:return"string"===typeof e?e:(null===e||void 0===e?void 0:e.text)||(null===e||void 0===e?void 0:e.result)||""}throw new Error("parse dictionary result: apiType not matched",t)}function jt(){return Rt.apply(this,arguments)}function Rt(){return Rt=(0,H.A)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{from:t,to:n,fromLang:r,toLang:a,langMap:s,glossary:u,apiSetting:d,usePool:h,docInfo:p,signal:f}=arguments.length>1?arguments[1]:void 0;return function*(){if(null!==f&&void 0!==f&&f.aborted)return;let m=null,g=[];const{apiType:v,apiSlug:y,contextSize:b,useContext:A,fetchInterval:x,fetchLimit:w,httpTimeout:k,useStream:S}=d;A&&o.sNP.context.has(v)&&(m=ut(y,b),g=m.getAll());const E=S&&o.sNP.stream.has(v)&&!(v===o.lLy&&A&&_t(d.url));let C="";if(v===o.kXF&&(C=yield(0,V.A)($()),!C))throw new Error("got msauth error");const _=o=>Nt((0,i.A)((0,i.A)({},d),{},{texts:e,from:t,to:n,fromLang:r,toLang:a,langMap:s,glossary:u,hisMsgs:g,token:C,useStream:o,docInfo:p})),T=function(){var u=(0,H.A)(function*(u,c,p){const g=yield(0,V.A)((0,z.Fd)(u,c,{useCache:!1,usePool:h,fetchInterval:x,fetchLimit:w,httpTimeout:k,signal:f}));if(!g)throw new Error("translate got empty response");const v=yield(0,V.A)((async(e,t)=>{var n,r,i,a,s,u,c,d,h,p,f,m,g,v,y,b,A,x;let{texts:w,from:k,to:S,fromLang:E,toLang:C,langMap:_,resHook:T,history:D,userMsg:P,apiType:I,useBatchFetch:F}=t;if(null!==T&&void 0!==T&&T.trim())try{J.run("exports.resHook = ".concat(T));const t=await J.exports.resHook({apiType:I,userMsg:P,res:e,texts:w,from:k,to:S,fromLang:E,toLang:C,langMap:_,extractJson:l.eg,parseAIRes:wt});if(t&&Array.isArray(t.translations))return D&&P&&t.modelMsg&&D.add(P,t.modelMsg),t.translations;if(Array.isArray(t))return t}catch(R){throw(0,K.h9)("run res hook",R),new Error("Response hook error: ".concat(R.message))}let L="";switch(I){case o.bCM:return[[null===e||void 0===e||null===(n=e.sentences)||void 0===n?void 0:n.map(e=>e.trans).join(" "),null===e||void 0===e?void 0:e.src]];case o.ul7:return null===e||void 0===e||null===(r=e[0])||void 0===r?void 0:r.map((t,n)=>{var r,i;return[null===e||void 0===e||null===(r=e[0])||void 0===r?void 0:r[n],null===e||void 0===e||null===(i=e[1])||void 0===i?void 0:i[n]]});case o.kXF:case o.FS6:return null===e||void 0===e?void 0:e.map(e=>{var t;return[e.translations.map(e=>e.text).join(" "),null===(t=e.detectedLanguage)||void 0===t?void 0:t.language]});case o.e70:return null===e||void 0===e||null===(i=e.translations)||void 0===i?void 0:i.map(e=>[e.text,e.detected_source_language]);case o.An9:return[[null===e||void 0===e||null===(a=e.result)||void 0===a||null===(s=a.texts)||void 0===s?void 0:s.map(e=>e.text).join(" "),null===e||void 0===e||null===(u=e.result)||void 0===u?void 0:u.lang]];case o.c0T:return[[null===e||void 0===e?void 0:e.data,null===e||void 0===e?void 0:e.source_lang]];case o.xN$:if(1===e.type)return[[Object.keys(JSON.parse(e.result).content[0].mean[0].cont)[0],e.from]];if(2===e.type)return[[e.data.map(e=>e.dst).join(" "),e.from]];break;case o.fFW:return null===e||void 0===e||null===(c=e.auto_translation)||void 0===c?void 0:c.map(t=>[t,null===e||void 0===e?void 0:e.src_lang]);case o.UFr:return[[null===e||void 0===e?void 0:e.translation,null===e||void 0===e?void 0:e.detected_language]];case o.lbn:case o.C3L:case o.KBl:case o.rUY:case o.FsV:case o.F16:case o.EjO:case o.NQu:case o.cbe:case o.kYm:case o.dGW:case o.mmp:return L=null===e||void 0===e||null===(d=e.choices)||void 0===d||null===(h=d[0])||void 0===h?void 0:h.message,D&&P&&L&&D.add(P,{role:L.role,content:L.content}),wt(null===(p=L)||void 0===p?void 0:p.content,F);case o.lLy:var O,N;return D&&Array.isArray(null===e||void 0===e?void 0:e.steps)?(D.clear(),D.add(...e.steps)):(L=null===e||void 0===e||null===(O=e.candidates)||void 0===O||null===(N=O[0])||void 0===N?void 0:N.content,D&&P&&L&&D.add(P,L)),wt(Tt(e),F);case o.EsI:return L={role:null===e||void 0===e?void 0:e.role,content:null===e||void 0===e||null===(f=e.content)||void 0===f?void 0:f.text},D&&P&&L&&D.add(P,{role:L.role,content:L.content}),wt(null!==(m=null===e||void 0===e||null===(g=e.content)||void 0===g||null===(v=g[0])||void 0===v?void 0:v.text)&&void 0!==m?m:"",F);case o.bNe:return[[null===e||void 0===e||null===(y=e.result)||void 0===y?void 0:y.translated_text]];case o.edy:return L=null===e||void 0===e||null===(b=e.choices)||void 0===b||null===(A=b[0])||void 0===A?void 0:A.message,D&&P&&L&&D.add(P,{role:L.role,content:L.content}),wt(null===(x=L)||void 0===x?void 0:x.content,F);case o.fqf:var z,j;return F?null===(z=null!==(j=null===e||void 0===e?void 0:e.translations)&&void 0!==j?j:e)||void 0===z?void 0:z.map(e=>[e.text,e.src]):[[e.text,e.src||e.from]]}throw new Error("parse translate result: apiType not matched",I)})(g,(0,i.A)({texts:e,from:t,to:n,fromLang:r,toLang:a,langMap:s,history:m,userMsg:p},d)));if(null===v||void 0===v||!v.length)throw new Error("translate got an unexpected result");for(let e=0;e!e);if(T){const t=wt(v,u);for(let n=0;n0&&void 0!==arguments[0]?arguments[0]:[];const t=await $(),n={headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(t)},method:"POST",body:JSON.stringify(e.map(e=>({Text:e})))},r=await(0,z.Fd)("https://api-edge.cognitive.microsofttranslator.com/detect?api-version=3.0",n,{useCache:!1});return Array.isArray(r)?r.map(e=>e.language):[]},Wt=async e=>{var t,n,r,a,s,l,u;let{events:d,from:h,to:p,apiSetting:f,docInfo:m,onSubtitleChunk:g,signal:v}=e;const{apiType:y,fetchInterval:b,fetchLimit:A,httpTimeout:x,useStream:w}=f,k=Boolean(g)&&w&&o.sNP.stream.has(y),[S,E]=await Nt((0,i.A)((0,i.A)({},f),{},{useStream:k,events:d,from:h,to:p,fromLang:h,toLang:p,docInfo:m}));if(k){try{const e=await async function(e,t,n){let{events:r,apiType:i,fetchInterval:o,fetchLimit:a,httpTimeout:s,fromLang:l,onSubtitleChunk:u,signal:d}=n;const h=(0,at.Az)(r,{fromLang:l});let p="";const f=[],m=new Set,g=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=[];for(const r of e||[]){const e="".concat(r._si,":").concat(r._ei);m.has(e)||(m.add(e),f.push(r),n.push(r))}n.length&&u({subtitles:n,isFinal:t})};var v,y=!1,b=!1;try{for(var A,x=(0,c.A)((0,z.xF)(e,t,{useCache:!1,usePool:!0,fetchInterval:o,fetchLimit:a,httpTimeout:s,signal:d}));y=!(A=await x.next()).done;y=!1){const e=A.value;if(null!==d&&void 0!==d&&d.aborted)throw new DOMException("The operation was aborted.","AbortError");try{const t=JSON.parse(e),n=(0,at.tN)(t,i);if(!n)continue;p+=n,g(h.write(n),!1)}catch(k){if(null!==k&&void 0!==k&&k.isAIStreamTerminal)throw k}}}catch(S){b=!0,v=S}finally{try{y&&null!=x.return&&await x.return()}finally{if(b)throw v}}g(h.end(),!1);const w=Dt(p,r,l);return g(w,!0),null!==w&&void 0!==w&&w.length?w:f.sort((e,t)=>e.start-t.start)}(S,E,{events:d,apiType:y,fetchInterval:b,fetchLimit:A,httpTimeout:x,fromLang:h,onSubtitleChunk:g,signal:v});if(null!==e&&void 0!==e&&e.length)return e}catch(D){if("AbortError"===(null===D||void 0===D?void 0:D.name))throw D;(0,K.h9)("subtitle stream failed, fallback to non-stream",D)}return Wt({events:d,from:h,to:p,apiSetting:(0,i.A)((0,i.A)({},f),{},{useStream:!1}),docInfo:m,signal:v})}const C=await(0,z.Fd)(S,E,{useCache:!1,usePool:!0,fetchInterval:b,fetchLimit:A,httpTimeout:x,signal:v});if(!C)return(0,K.h9)("subtitle got empty response"),[];switch(y){case o.lbn:case o.C3L:case o.KBl:case o.rUY:case o.FsV:case o.F16:case o.EjO:case o.NQu:case o.cbe:case o.kYm:case o.dGW:case o.mmp:case o.edy:return Dt(null!==(t=null===C||void 0===C||null===(n=C.choices)||void 0===n||null===(r=n[0])||void 0===r||null===(a=r.message)||void 0===a?void 0:a.content)&&void 0!==t?t:"",d,h);case o.lLy:{var _,T;const{thinkingMode:e}=f,t=e&&"auto"!==e&&"disabled"!==e;if((Array.isArray(null===C||void 0===C?void 0:C.steps)?"incomplete"===(null===C||void 0===C?void 0:C.status)||"budget_exceeded"===(null===C||void 0===C?void 0:C.status):"MAX_TOKENS"===(null===C||void 0===C||null===(_=C.candidates)||void 0===_||null===(T=_[0])||void 0===T?void 0:T.finishReason))&&t){const[e,t]=await Nt((0,i.A)((0,i.A)({},f),{},{useStream:!1,thinkingMode:"disabled",events:d,from:h,to:p,fromLang:h,toLang:p,docInfo:m})),n=await(0,z.Fd)(e,t,{useCache:!1,usePool:!0,fetchInterval:b,fetchLimit:A,httpTimeout:x}),r=Tt(n);if(r)return Dt(r,d,h)}return Dt(Tt(C),d,h)}case o.EsI:return Dt(null!==(s=null===C||void 0===C||null===(l=C.content)||void 0===l||null===(u=l[0])||void 0===u?void 0:u.text)&&void 0!==s?s:"",d,h);case o.fqf:return C}return[]};var Ut=n(7325);const Ht=new Map,Vt=(e,t,n)=>{if(Ht.has(e))return Ht.get(e);const r=function(e){let{batchInterval:t=o.bqx,batchSize:n=o.jgE,batchLength:r=o.WTh,batchConcurrency:i=o.JWB}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=[],s=Number(i),l=Number.isFinite(s)&&s>=1?Math.floor(s):o.JWB;let u=0,d=null;const h=async()=>{if(d&&(clearTimeout(d),d=null),0===a.length||u>=l)return;u++;let t=[],i=0,o=0;for(const e of a){var s;const t=(null===(s=e.payload)||void 0===s?void 0:s.length)||0;if(o>=n||i+t>r&&o>0)break;i+=t,o++}if(o>0&&(t=a.splice(0,o)),0!==t.length)try{const n=t.map(e=>e.payload),r=t[0].args,i=e(n,r);if(i&&"function"===typeof i[Symbol.asyncIterator]){var f,m=!1,g=!1;try{for(var v,y=(0,c.A)(i);m=!(v=await y.next()).done;m=!1){const e=v.value;{const n=e.id,r=!1!==e.isComplete,i=t[n];var b,A;i&&(!r&&null!==(b=i.args)&&void 0!==b&&b.onStreamChunk&&i.args.onStreamChunk({id:n,text:e.partialText,isComplete:!1}),r&&(null!==(A=i.args)&&void 0!==A&&A.onStreamChunk&&i.args.onStreamChunk({id:n,text:e.result,isComplete:!0}),i.resolved||(i.resolved=!0,i.resolve(e.result))))}}}catch(x){g=!0,f=x}finally{try{m&&null!=y.return&&await y.return()}finally{if(g)throw f}}t.forEach((e,t)=>{e.resolved||e.reject(new Error("No response for item at index ".concat(t)))})}else{const e=await i;if(!Array.isArray(e))throw new Error("responses format error");t.forEach((t,n)=>{const r=e[n];r?t.resolve(r):t.reject(new Error("No response for item at index ".concat(n)))})}}catch(w){t.forEach(e=>{e.resolved||(e.resolved=!0,e.reject(w))})}finally{u--,a.length>0&&(a.length>=n?setTimeout(h,0):p())}else u--},p=()=>{u0&&(d=setTimeout(h,t))};return{addTask:(e,t)=>new Promise((r,i)=>{const o=e;a.push({payload:o,resolve:r,reject:i,args:t}),a.length>=n?h():p()}),destroy:()=>{d&&(clearTimeout(d),d=null),a.forEach(e=>e.reject(new Error("Queue instance was destroyed."))),a.length=0}}}(t,n);return Ht.set(e,r),r},Gt=()=>{for(const e of Ht.values())e.destroy()};var Kt=n(1223),qt=n(3073),$t=n(1533),Yt=(0,$t.A)("translatorMap"),Xt=(0,$t.A)("detectorPromise"),Jt=(0,$t.A)("lastReliableDetectedLanguage"),Qt=(0,$t.A)("defaultProgressHandler"),Zt=(0,$t.A)("getDetectorPromise"),en=(0,$t.A)("createTranslator");function tn(e,t){(0,K.h9)("Downloading ".concat(e," model: ").concat(t,"%"))}function nn(){return(0,qt.A)(this,Xt)[Xt]||((0,qt.A)(this,Xt)[Xt]=(async()=>{try{if("unavailable"===await LanguageDetector.availability())throw new Error("LanguageDetector unavailable");return await LanguageDetector.create({monitor:e=>this._monitorProgress(e,"detector")})}catch(e){throw(0,qt.A)(this,Xt)[Xt]=null,e}})()),(0,qt.A)(this,Xt)[Xt]}function rn(e,t){const n="".concat(e,"_").concat(t);if((0,qt.A)(this,Yt)[Yt].has(n))return(0,qt.A)(this,Yt)[Yt].get(n);const r=(async()=>{try{if("unavailable"===await Translator.availability({sourceLanguage:e,targetLanguage:t}))throw new Error("Translator ".concat(e,"_").concat(t," unavailable"));const r=await Translator.create({sourceLanguage:e,targetLanguage:t,monitor:e=>this._monitorProgress(e,"translator (".concat(n,")"))});return(0,qt.A)(this,Yt)[Yt].set(n,r),r}catch(r){throw(0,qt.A)(this,Yt)[Yt].delete(n),r}})();return(0,qt.A)(this,Yt)[Yt].set(n,r),r}const on=new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.defineProperty(this,en,{value:rn}),Object.defineProperty(this,Zt,{value:nn}),Object.defineProperty(this,Qt,{value:tn}),Object.defineProperty(this,Yt,{writable:!0,value:new Map}),Object.defineProperty(this,Xt,{writable:!0,value:null}),Object.defineProperty(this,Jt,{writable:!0,value:""}),this.onProgress=e.onProgress||(0,qt.A)(this,Qt)[Qt]}_monitorProgress(e,t){e.addEventListener("downloadprogress",e=>{const n=e.total>0?Math.round(e.loaded/e.total*100):0;this.onProgress(t,n)})}async detectLanguage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.4;if(!e)return["","Input text cannot be empty."];try{const n=await(0,qt.A)(this,Zt)[Zt](),r=await n.detect(e);if(!r||0===r.length)return["","No language could be detected."];const{detectedLanguage:i,confidence:o}=r[0];return o2&&void 0!==arguments[2]?arguments[2]:"auto";if(!e||!t||"string"!==typeof e)return["",n,"Input text cannot be empty."];try{let r=n;if("auto"===n){const[t,n]=await this.detectLanguage(e);if(n||!t){return["",r,"Automatic detection of source language failed: ".concat(n||"Unable to determine source language.")]}r=t}if(r===t)return["",r,"Same lang"];const i=await(0,qt.A)(this,en)[en](r,t);return[await i.translate(e),r,""]}catch(r){return(0,K.h9)("translateText",r,"(".concat(e,")")),r&&r.message&&r.message.includes("Other generic failures occurred")&&(K.vF.info("Generic failure detected, resetting translator cache."),(0,qt.A)(this,Yt)[Yt].clear()),["",n,r.message]}}},an=e=>on.detectLanguage(e.text),sn=e=>on.translateText(e.text,e.to,e.from);var ln=n(1762),un=n(9793);const cn="prompt-cache",dn="batch",hn="nobatch",pn="dict";function fn(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return t===dn?[e.systemPrompt||""]:t===hn?[e.nobatchPrompt||"",null!==(n=e.nobatchUserPrompt)&&void 0!==n?n:o.EEo]:t===pn?[e.dictPrompt||"",null!==(r=e.dictUserPrompt)&&void 0!==r?r:o.fkE]:[];var n,r}async function mn(){let e=arguments.length>1?arguments[1]:void 0;const t=[e,...fn(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e)].join("\n");return(await W(t,cn)).slice(0,16)}const gn="https://api.github.com/gists",vn=e=>({Accept:"application/vnd.github+json",Authorization:"Bearer ".concat(e),"Content-type":"application/json","X-GitHub-Api-Version":"2022-11-28"}),yn=async()=>(0,z.Fd)("https://edge.microsoft.com/translate/auth"),bn=async e=>{var t;const n={text:e},r="".concat(o.aZh,"?").concat(N.stringify(n)),i=await(0,Ut.QF)(r);if(i)return i;const a="https://www.bing.com",s="".concat(a,"/dict/search?q=").concat(e,"&FORM=BDVSP6&cc=cn"),l=await(0,z.Fd)(s,{credentials:"include"},{useCache:!1});if(!l)return null;const u=(new DOMParser).parseFromString(rt.createHTML(l),"text/html"),c=null===(t=u.querySelector("#headword > h1"))||void 0===t?void 0:t.textContent.trim();if(!c)return null;const d=[];u.querySelectorAll("div.qdef > ul > li").forEach(e=>{var t,n,r,i;const o=null===(t=e.querySelector(".pos"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim(),a=null===(r=e.querySelector(".def"))||void 0===r||null===(i=r.textContent)||void 0===i?void 0:i.trim();d.push({pos:o,def:a})});const h=[];u.querySelectorAll("div.hd_div1>.hd_if>.p1-5").forEach(e=>{var t;const n=null===(t=e.textContent)||void 0===t?void 0:t.trim();h.push(n)});const p=[];u.querySelectorAll(".each_seg>.li_pos").forEach(e=>{var t,n;const r=null===(t=e.querySelector(".pos_lin>.pos"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim(),i=[];e.querySelectorAll(".de_seg>.se_lis").forEach(e=>{var t,n;i.push(null===(t=e.querySelector(".de_co"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim())}),p.push({pos:r,lis:i})});const f=[];u.querySelectorAll("#sentenceSeg .se_li").forEach(e=>{var t,n,r,i;const o=null===(t=e.querySelector(".sen_en"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim(),a=null===(r=e.querySelector(".sen_cn"))||void 0===r||null===(i=r.textContent)||void 0===i?void 0:i.trim();o&&a&&f.push({eng:o,chs:a})});const m=[],g=u.querySelector("#bigaud_uk"),v=u.querySelector("#bigaud_us");if(g){var y,b,A,x,w;const e=a+(null===g||void 0===g||null===(y=g.dataset)||void 0===y?void 0:y.mp3link),t=null===(b=g.parentElement)||void 0===b?void 0:b.previousElementSibling,n=null===t||void 0===t||null===(A=t.textContent)||void 0===A||null===(x=A.trim())||void 0===x||null===(w=x.match(/\[(.*?)\]/))||void 0===w?void 0:w[1];m.push({key:"\u82f1",audio:e,phonetic:n})}if(v){var k,S,E,C,_;const e=a+(null===v||void 0===v||null===(k=v.dataset)||void 0===k?void 0:k.mp3link),t=null===(S=v.parentElement)||void 0===S?void 0:S.previousElementSibling,n=null===t||void 0===t||null===(E=t.textContent)||void 0===E||null===(C=E.trim())||void 0===C||null===(_=C.match(/\[(.*?)\]/))||void 0===_?void 0:_[1];m.push({key:"\u7f8e",audio:e,phonetic:n})}if(0===m.length){const e=u.querySelector(".hd_pr"),t=u.querySelector(".hd_prUS");if(e){var T;const t=null===(T=e.textContent)||void 0===T?void 0:T.trim(),n=null===t||void 0===t?void 0:t.match(/\[([^\]]+)\]/);n&&m.push({key:"\u82f1",phonetic:n[1]})}if(t){var D;const e=null===(D=t.textContent)||void 0===D?void 0:D.trim(),n=null===e||void 0===e?void 0:e.match(/\[([^\]]+)\]/);n&&m.push({key:"\u7f8e",phonetic:n[1]})}}const P={word:c,trs:d,aus:m,ecs:p,sentences:f,presents:h};return(0,Ut.v0)(r,null,P),P},An=async e=>{const t="https://fanyi.baidu.com/sug",n={headers:{"Content-type":"application/json"},method:"POST",body:JSON.stringify({kw:e})},r=await(0,z.Fd)(t,n,{useCache:!0});return 0===(null===r||void 0===r?void 0:r.errno)?(await(0,Ut.v0)(t,n,r),r.data):[]},xn=async e=>{var t;const n={num:5,ver:3,doctype:"json",cache:!1,le:"en",q:e},r="https://dict.youdao.com/suggest?".concat(N.stringify(n)),i={headers:{accept:"application/json, text/plain, */*","accept-language":"en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ja;q=0.6","content-type":"application/x-www-form-urlencoded"},method:"GET"},o=await(0,z.Fd)(r,i,{useCache:!0});return 200===(null===o||void 0===o||null===(t=o.result)||void 0===t?void 0:t.code)?(await(0,Ut.v0)(r,i,o),o.data.entries):[]},wn=async e=>{let{text:t,fromLang:n="auto",toLang:r,apiSetting:a=o.iVS,glossary:s,onStreamChunk:u,docInfo:d,useCache:h=!0,usePool:p=!0,signal:f}=e;if(!t)throw new Error("The text cannot be empty.");if(null!==f&&void 0!==f&&f.aborted)throw new DOMException("The operation was aborted.","AbortError");const{apiType:m,apiSlug:g,useBatchFetch:v}=a,y=o.k0k[m]||o.eA2,b=y.get(n),A=y.get(r);if(!A)throw new Error("The target lang: ".concat(r," not support"));const[x,w]="2.0.29".split("."),k=await mn(a,function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return o.sNP.ai.has(e.apiType)?e.useBatchFetch&&o.sNP.batch.has(e.apiType)?dn:hn:"plain"}(a)),S=(0,i.A)({apiSlug:g,text:t,fromLang:n,toLang:r,version:[x,w].join("."),promptSig:k},(null===d||void 0===d?void 0:d.summary)&&{ctx:d.summary.slice(0,50)}),E="".concat(o.N8G,"?").concat(N.stringify(S));if(h){const e=await(0,Ut.QF)(E);if(null!==e&&void 0!==e&&e.trText)return e}if(null!==f&&void 0!==f&&f.aborted)throw new DOMException("The operation was aborted.","AbortError");let C=[];if(m===o.h8v)C=await(async e=>{let{text:t,from:n,to:r,apiSetting:i}=e;if(!Kt.Lx)return["",!0];const{fetchInterval:a,fetchLimit:s,httpTimeout:u}=i,c=(0,un.Fz)(a,s),d=await(0,l.wj)(c.push(z.Qy,{fn:sn,msg:o.J4u,text:t,from:n,to:r}),(0,ln.Fb)(u));if(!d)throw new Error("apiBuiltinAITranslate got null reault");const[h,p,f]=d;if(f)throw new Error("apiBuiltinAITranslate got error: ".concat(f));return[h,p]})({text:t,from:b,to:A,apiSetting:a});else if(v&&o.sNP.batch.has(m)){const{apiSlug:e,batchInterval:i,batchSize:l,batchLength:c,batchConcurrency:h,useStream:g,useContext:v}=a,x=g&&o.sNP.stream.has(m),w=Number(h),S=v&&o.sNP.context.has(m)?1:Number.isFinite(w)&&w>=1?Math.floor(w):1,E="".concat(e,"_").concat(n,"_").concat(r,"_").concat(x?"stream":"batch","_").concat(k,"_").concat(S),_=Vt(E,jt,{batchInterval:i,batchSize:l,batchLength:c,batchConcurrency:S});C=await _.addTask(t,{from:b,to:A,fromLang:n,toLang:r,langMap:y,glossary:s,apiSetting:a,usePool:p,onStreamChunk:u,docInfo:d,signal:f})}else{const e=jt([t],{from:b,to:A,fromLang:n,toLang:r,langMap:y,glossary:s,apiSetting:a,usePool:p,docInfo:d,onStreamChunk:u,signal:f});var _,T=!1,D=!1;try{for(var P,I=(0,c.A)(e);T=!(P=await I.next()).done;T=!1){const e=P.value;if(0!==e.id)continue;if(!(!1!==e.isComplete)){u&&u({id:e.id,text:e.partialText,isComplete:!1});continue}u&&u({id:e.id,text:e.result,isComplete:!0}),C=e.result}}catch(R){D=!0,_=R}finally{try{T&&null!=I.return&&await I.return()}finally{if(D)throw _}}}let F="",L="",O="";if(Array.isArray(C)?([F,L=""]=C,L&&(O=o.mSZ[m].get(L)||"")):"string"===typeof C&&(F=C),!F)throw new Error("tanslate api got empty trtext");const j="auto"===n&&L===A;return h&&(0,Ut.v0)(E,null,{trText:F,isSame:j,srLang:L,srCode:O}),{trText:F,srLang:L,srCode:O,isSame:j}},kn=async e=>{let{text:t,fromLang:n="auto",toLang:r,apiSetting:a=o.iVS,docInfo:s,context:u="",onStreamChunk:d,useCache:h=!0,signal:p}=e;if(!t)throw new Error("The text cannot be empty.");if(null!==p&&void 0!==p&&p.aborted)throw new DOMException("The operation was aborted.","AbortError");const{apiType:f}=a;if(!o.sNP.ai.has(f))throw new Error("AI dictionary only supports AI APIs.");const m=o.k0k[f]||o.eA2,g=m.get(n),v=m.get(r);if(!v)throw new Error("The target lang: ".concat(r," not support"));const[y,b]="2.0.29".split("."),A=s||mt(),x=await W([(null===A||void 0===A?void 0:A.title)||"",(null===A||void 0===A?void 0:A.description)||"",(null===A||void 0===A?void 0:A.summary)||"",u||""].join("\n"),cn),w={apiSlug:a.apiSlug,text:t,fromLang:n,toLang:r,version:[y,b].join("."),promptSig:await mn(a,pn),contextSig:x.slice(0,16)},k="".concat(o.CQi,"?").concat(N.stringify(w));if(h){const e=await(0,Ut.QF)(k);if(null!==e&&void 0!==e&&e.markdown)return e.markdown}if(null!==p&&void 0!==p&&p.aborted)throw new DOMException("The operation was aborted.","AbortError");const S=await(async e=>{let{text:t,from:n,to:r,fromLang:a,toLang:s,apiSetting:u,docInfo:d,context:h="",onStreamChunk:p,signal:f}=e;if(null!==f&&void 0!==f&&f.aborted)throw new DOMException("The operation was aborted.","AbortError");const{apiType:m,fetchInterval:g,fetchLimit:v,httpTimeout:y,dictPrompt:b,dictUserPrompt:A}=u,x=Boolean(p)&&u.useStream&&o.sNP.stream.has(m);if(!b)throw new Error("AI dictionary prompt is empty.");const w=(0,i.A)((0,i.A)({},u),{},{useBatchFetch:!1,useStream:x,nobatchPrompt:b,nobatchUserPrompt:null!==A&&void 0!==A?A:o.fkE}),k=d||mt(),[S,E]=await Nt((0,i.A)((0,i.A)({},w),{},{texts:[t],from:n,to:r,fromLang:a,toLang:s,docInfo:(0,i.A)((0,i.A)({},k||{}),{},{context:h})}));if(x){try{let e="";var C,_=!1,T=!1;try{for(var D,P=(0,c.A)((0,z.xF)(S,E,{useCache:!1,usePool:!0,fetchInterval:g,fetchLimit:v,httpTimeout:y,signal:f}));_=!(D=await P.next()).done;_=!1){const t=D.value;try{const n=JSON.parse(t),r=(0,at.tN)(n,m);if(!r)continue;e+=r,e=(0,l.if)(e,!0),p({markdown:e})}catch(L){if(null!==L&&void 0!==L&&L.isAIStreamTerminal)throw L}}}catch(O){T=!0,C=O}finally{try{_&&null!=P.return&&await P.return()}finally{if(T)throw C}}const t=(0,l.if)(e).trim();if(!t)throw new Error("dictionary got empty content");return t}catch(O){if("AbortError"===(null===O||void 0===O?void 0:O.name))throw O;(0,K.h9)("dictionary stream failed, fallback to non-stream",O)}const[e,o]=await Nt((0,i.A)((0,i.A)({},w),{},{useStream:!1,texts:[t],from:n,to:r,fromLang:a,toLang:s,docInfo:(0,i.A)((0,i.A)({},k||{}),{},{context:h})})),u=await(0,z.Fd)(e,o,{useCache:!1,usePool:!0,fetchInterval:g,fetchLimit:v,httpTimeout:y,signal:f});if(!u)throw new Error("dictionary got empty response");const d=zt(u,m);if(!d)throw new Error("dictionary got empty content");return d}const I=await(0,z.Fd)(S,E,{useCache:!1,usePool:!0,fetchInterval:g,fetchLimit:v,httpTimeout:y,signal:f});if(!I)throw new Error("dictionary got empty response");const F=zt(I,m);if(!F)throw new Error("dictionary got empty content");return F})({text:t,from:g,to:v,fromLang:n,toLang:r,apiSetting:a,docInfo:A,context:u,onStreamChunk:d,signal:p});return h&&(0,Ut.v0)(k,null,{markdown:S}),S},Sn=async e=>{let{videoId:t,chunkSign:n,fromLang:r="auto",toLang:i,events:a=[],apiSetting:s,docInfo:l,onSubtitleChunk:u,signal:c}=e;if(null===a||void 0===a||!a.length)return[];const d=St(a,s.subtitlePrompt),h=(await W(JSON.stringify(d.map((e,t)=>{var n,r;return[e.id,e.text,null===(n=a[t])||void 0===n?void 0:n.start,null===(r=a[t])||void 0===r?void 0:r.end,e.pauseMs||e.p||0]})),"subtitle-chunk-v4")).slice(0,16),p=xt({subtitlePrompt:s.subtitlePrompt,tone:s.tone,from:r,to:i,fromLang:r,toLang:i,docInfo:l,aiTerms:s.aiTerms}),f={apiSlug:s.apiSlug,apiType:s.apiType,model:s.model,videoId:t,chunkSign:n,chunkHash:h,fromLang:r,toLang:i,segVer:4,promptSig:(await W(p,cn)).slice(0,16)},m="".concat(o.W26,"?").concat(N.stringify(f)),g=await(0,Ut.QF)(m);if(g)return g;const v=await Wt({events:a,from:r,to:i,apiSetting:s,docInfo:l,onSubtitleChunk:u,signal:c});return null!==v&&void 0!==v&&v.length?((0,Ut.v0)(m,null,v),v):[]},En=async e=>{let{videoId:t,title:n,description:r,transcript:a,apiSetting:s}=e;const l={apiSlug:s.apiSlug,videoId:t},u="".concat(o.Hy8,"?").concat(N.stringify(l)),c=await(0,Ut.QF)(u);if(c)return c;const d=await(async e=>{var t,n,r,a,s,l,u,c,d,h,p,f,m,g,v,y,b;let{title:A,description:x,transcript:w,apiSetting:k}=e;const{apiType:S,fetchInterval:E,fetchLimit:C,httpTimeout:_}=k,T=[A&&"Title: ".concat(A),x&&"Description: ".concat(x),"\nTranscript:\n".concat(w)].filter(Boolean).join("\n"),[D,P]=await Nt((0,i.A)((0,i.A)({},k),{},{useStream:!1,texts:[""],from:"auto",to:"en",fromLang:"auto",toLang:"en",useBatchFetch:!1,nobatchPrompt:"Analyze the video title, description, and transcript below. Produce a concise briefing (max 300 words) to help a subtitle translator understand the content accurately.\n\nCover these aspects:\n1. Main topic, themes, and subject domain\n2. Key terminology with brief definitions or context\n3. Important proper nouns (people, organizations, products, places)\n4. Speaker's tone and register\n5. Abbreviations, jargon, or ambiguous terms needing consistent handling\n\nOutput plain text only. No markdown, no formatting, no headers.",nobatchUserPrompt:T})),I=await(0,z.Fd)(D,P,{useCache:!1,usePool:!0,fetchInterval:E,fetchLimit:C,httpTimeout:_});if(!I)return"";switch(S){case o.lbn:case o.C3L:case o.KBl:case o.rUY:case o.FsV:case o.F16:case o.EjO:case o.NQu:case o.cbe:case o.kYm:case o.dGW:case o.mmp:case o.edy:return(null===I||void 0===I||null===(t=I.choices)||void 0===t||null===(n=t[0])||void 0===n||null===(r=n.message)||void 0===r||null===(a=r.content)||void 0===a?void 0:a.trim())||"";case o.lLy:return Tt(I).trim()||"";case o.EsI:return(null===I||void 0===I||null===(s=I.content)||void 0===s||null===(l=s[0])||void 0===l||null===(u=l.text)||void 0===u?void 0:u.trim())||"";case o.fqf:return"string"===typeof I?I.trim():(null===I||void 0===I||null===(c=I.choices)||void 0===c||null===(d=c[0])||void 0===d||null===(h=d.message)||void 0===h||null===(p=h.content)||void 0===p?void 0:p.trim())||Ct(null===I||void 0===I||null===(f=I.candidates)||void 0===f||null===(m=f[0])||void 0===m||null===(g=m.content)||void 0===g?void 0:g.parts).trim()||(null===I||void 0===I||null===(v=I.content)||void 0===v||null===(y=v[0])||void 0===y||null===(b=y.text)||void 0===b?void 0:b.trim())||"";default:return""}})({title:n,description:r,transcript:a,apiSetting:s});return d?((0,Ut.v0)(u,null,d),d):""},Cn=async e=>{const{dataCaches:t={}}=await(0,a.Xn)();t[e]=Date.now(),await(0,a.pK)({dataCaches:t})},_n=async e=>{const t=await(e=>(0,z.Fd)(e))(e),n=_a(t).filter(e=>{let{pattern:t}=e;return!(0,l.MF)(t,o.WL9)});return n.length>0&&await(0,a.Sn)(e,n),n},Tn=async e=>{let{subrulesList:t}=e;try{const{subRulesSyncAt:e}=await(0,a.Xn)(),n=Date.now();n-e>864e5&&(await(async e=>{for(const n of e)try{await _n(n.url),await Cn(n.url)}catch(t){(0,K.h9)("sync subrule error: ".concat(n.url),t)}})(t),await(0,a.pK)({subRulesSyncAt:n}))}catch(n){(0,K.h9)("try sync all subrules",n)}};function Dn(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function Pn(e,t,n){Dn(e,t),t.set(e,n)}var In,Fn=n(9371);function Ln(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function On(e,t){return e.get(Ln(e,t))}function Nn(e,t,n){return e.set(Ln(e,t),n),n}var zn={2:e=>{function t(e,t,i){e instanceof RegExp&&(e=n(e,i)),t instanceof RegExp&&(t=n(t,i));var o=r(e,t,i);return o&&{start:o[0],end:o[1],pre:i.slice(0,o[0]),body:i.slice(o[0]+e.length,o[1]),post:i.slice(o[1]+t.length)}}function n(e,t){var n=t.match(e);return n?n[0]:null}function r(e,t,n){var r,i,o,a,s,l=n.indexOf(e),u=n.indexOf(t,l+1),c=l;if(l>=0&&u>0){for(r=[],o=n.length;c>=0&&!s;)c==l?(r.push(c),l=n.indexOf(e,c+1)):1==r.length?s=[r.pop(),u]:((i=r.pop())=0?l:u;r.length&&(s=[o,a])}return s}e.exports=t,t.range=r},101:function(e,t,r){var i;e=r.nmd(e),function(){var o=(e&&e.exports,"object"==typeof n.g&&n.g);o.global!==o&&o.window;var a=function(e){this.message=e};(a.prototype=new Error).name="InvalidCharacterError";var s=function(e){throw new a(e)},l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=/[\t\n\f\r ]/g,c={encode:function(e){e=String(e),/[^\0-\xFF]/.test(e)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var t,n,r,i,o=e.length%3,a="",u=-1,c=e.length-o;++u>18&63)+l.charAt(i>>12&63)+l.charAt(i>>6&63)+l.charAt(63&i);return 2==o?(t=e.charCodeAt(u)<<8,n=e.charCodeAt(++u),a+=l.charAt((i=t+n)>>10)+l.charAt(i>>4&63)+l.charAt(i<<2&63)+"="):1==o&&(i=e.charCodeAt(u),a+=l.charAt(i>>2)+l.charAt(i<<4&63)+"=="),a},decode:function(e){var t=(e=String(e).replace(u,"")).length;t%4==0&&(t=(e=e.replace(/==?$/,"")).length),(t%4==1||/[^+a-zA-Z0-9/]/.test(e))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var n,r,i=0,o="",a=-1;++a>(-2*i&6)));return o},version:"1.0.0"};void 0===(i=function(){return c}.call(t,r,t,e))||(e.exports=i)}()},172:(e,t)=>{t.d=function(e){if(!e)return 0;for(var t=(e=e.toString()).length,n=e.length;n--;){var r=e.charCodeAt(n);56320<=r&&r<=57343&&n--,127{var t={utf8:{stringToBytes:function(e){return t.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(t.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n{var t,n;t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n={rotl:function(e,t){return e<>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&n.rotl(e,8)|4278255360&n.rotl(e,24);for(var t=0;t0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],n=0,r=0;n>>5]|=e[n]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],n=0;n<32*e.length;n+=8)t.push(e[n>>>5]>>>24-n%32&255);return t},bytesToHex:function(e){for(var t=[],n=0;n>>4).toString(16)),t.push((15&e[n]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],n=0;n>>6*(3-o)&63)):n.push("=");return n.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var n=[],r=0,i=0;r>>6-2*i);return n}},e.exports=n},635:(e,t,n)=>{const r=n(31),i=n(338),o=n(221);e.exports={XMLParser:i,XMLValidator:r,XMLBuilder:o}},118:e=>{e.exports=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const n of e){if("string"==typeof n&&t===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}}:()=>!1}},705:(e,t)=>{const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",i=new RegExp("^"+r+"$");t.isExist=function(e){return void 0!==e},t.isEmptyObject=function(e){return 0===Object.keys(e).length},t.merge=function(e,t,n){if(t){const r=Object.keys(t),i=r.length;for(let o=0;o{const r=n(705),i={allowBooleanAttributes:!1,unpairedTags:[]};function o(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function a(e,t){const n=t;for(;t5&&"xml"===r)return f("InvalidXml","XML declaration allowed only at the start of the document.",g(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function s(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let n=1;for(t+=8;t"===e[t]&&(n--,0===n))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}t.validate=function(e,t){t=Object.assign({},i,t);const n=[];let l=!1,u=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let i=0;i"!==e[i]&&" "!==e[i]&&"\t"!==e[i]&&"\n"!==e[i]&&"\r"!==e[i];i++)y+=e[i];if(y=y.trim(),"/"===y[y.length-1]&&(y=y.substring(0,y.length-1),i--),d=y,!r.isName(d)){let t;return t=0===y.trim().length?"Invalid space after '<'.":"Tag '"+y+"' is an invalid name.",f("InvalidTag",t,g(e,i))}const b=c(e,i);if(!1===b)return f("InvalidAttr","Attributes for '"+y+"' have open quote.",g(e,i));let A=b.value;if(i=b.index,"/"===A[A.length-1]){const n=i-A.length;A=A.substring(0,A.length-1);const r=h(A,t);if(!0!==r)return f(r.err.code,r.err.msg,g(e,n+r.err.line));l=!0}else if(v){if(!b.tagClosed)return f("InvalidTag","Closing tag '"+y+"' doesn't have proper closing.",g(e,i));if(A.trim().length>0)return f("InvalidTag","Closing tag '"+y+"' can't have attributes or invalid starting.",g(e,m));if(0===n.length)return f("InvalidTag","Closing tag '"+y+"' has not been opened.",g(e,m));{const t=n.pop();if(y!==t.tagName){let n=g(e,t.tagStartPos);return f("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+n.line+", col "+n.col+") instead of closing tag '"+y+"'.",g(e,m))}0==n.length&&(u=!0)}}else{const r=h(A,t);if(!0!==r)return f(r.err.code,r.err.msg,g(e,i-A.length+r.err.line));if(!0===u)return f("InvalidXml","Multiple possible root nodes found.",g(e,i));-1!==t.unpairedTags.indexOf(y)||n.push({tagName:y,tagStartPos:m}),l=!0}for(i++;i0)||f("InvalidXml","Invalid '"+JSON.stringify(n.map(e=>e.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):f("InvalidXml","Start tag expected.",1)};const l='"',u="'";function c(e,t){let n="",r="",i=!1;for(;t"===e[t]&&""===r){i=!0;break}n+=e[t]}return""===r&&{value:n,index:t,tagClosed:i}}const d=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function h(e,t){const n=r.getAllMatches(e,d),i={};for(let r=0;r{const r=n(87),i=n(118),o={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function a(e){this.options=Object.assign({},o,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=i(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=u),this.processTextOrObjNode=s,this.options.format?(this.indentate=l,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function s(e,t,n,r){const i=this.j2x(e,n+1,r.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,i.attrStr,n):this.buildObjectNode(i.val,t,i.attrStr,n)}function l(e){return this.options.indentBy.repeat(e)}function u(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}a.prototype.build=function(e){return this.options.preserveOrder?r(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},a.prototype.j2x=function(e,t,n){let r="",i="";const o=n.join(".");for(let a in e)if(Object.prototype.hasOwnProperty.call(e,a))if(void 0===e[a])this.isAttribute(a)&&(i+="");else if(null===e[a])this.isAttribute(a)?i+="":"?"===a[0]?i+=this.indentate(t)+"<"+a+"?"+this.tagEndChar:i+=this.indentate(t)+"<"+a+"/"+this.tagEndChar;else if(e[a]instanceof Date)i+=this.buildTextValNode(e[a],a,"",t);else if("object"!=typeof e[a]){const n=this.isAttribute(a);if(n&&!this.ignoreAttributesFn(n,o))r+=this.buildAttrPairStr(n,""+e[a]);else if(!n)if(a===this.options.textNodeName){let t=this.options.tagValueProcessor(a,""+e[a]);i+=this.replaceEntitiesValue(t)}else i+=this.buildTextValNode(e[a],a,"",t)}else if(Array.isArray(e[a])){const r=e[a].length;let o="",s="";for(let l=0;l"+e+i}},a.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":">")+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+"\x3c!--".concat(e,"--\x3e")+this.newLine;if("?"===t[0])return this.indentate(r)+"<"+t+n+"?"+this.tagEndChar;{let i=this.options.tagValueProcessor(t,e);return i=this.replaceEntitiesValue(i),""===i?this.indentate(r)+"<"+t+n+this.closeTag(t)+this.tagEndChar:this.indentate(r)+"<"+t+n+">"+i+"0&&this.options.processEntities)for(let t=0;t{function t(e,a,s,l){let u="",c=!1;for(let d=0;d"),c=!1;continue}if(p===a.commentPropName){u+=l+"\x3c!--".concat(h[p][0][a.textNodeName],"--\x3e"),c=!0;continue}if("?"===p[0]){const e=r(h[":@"],a),t="?xml"===p?"":l;let n=h[p][0][a.textNodeName];n=0!==n.length?" "+n:"",u+=t+"<".concat(p).concat(n).concat(e,"?>"),c=!0;continue}let m=l;""!==m&&(m+=a.indentBy);const g=l+"<".concat(p).concat(r(h[":@"],a)),v=t(h[p],a,f,m);-1!==a.unpairedTags.indexOf(p)?a.suppressUnpairedNode?u+=g+">":u+=g+"/>":v&&0!==v.length||!a.suppressEmptyNode?v&&v.endsWith(">")?u+=g+">".concat(v).concat(l,""):(u+=g+">",v&&""!==l&&(v.includes("/>")||v.includes("")):u+=g+"/>",c=!0}return u}function n(e){const t=Object.keys(e);for(let n=0;n0&&t.processEntities)for(let n=0;n0&&(r="\n"),t(e,n,"",r)}},193:(e,t,n)=>{const r=n(705);function i(e,t){let n="";for(;t"===e[t]){if(h?"-"===e[t-1]&&"-"===e[t-2]&&(h=!1,r--):r--,0===r)break}else"["===e[t]?d=!0:p+=e[t];else{if(d&&a(e,t)){let r,o;t+=7,[r,o,t]=i(e,t+1),-1===o.indexOf("&")&&(n[c(r)]={regx:RegExp("&".concat(r,";"),"g"),val:o})}else if(d&&s(e,t))t+=8;else if(d&&l(e,t))t+=8;else if(d&&u(e,t))t+=9;else{if(!o)throw new Error("Invalid DOCTYPE");h=!0}r++,p=""}if(0!==r)throw new Error("Unclosed DOCTYPE")}return{entities:n,i:t}}},63:(e,t)=>{const n={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,n){return e}};t.buildOptions=function(e){return Object.assign({},n,e)},t.defaultOptions=n},299:(e,t,n)=>{const r=n(705),i=n(365),o=n(193),a=n(494),s=n(118);function l(e){const t=Object.keys(e);for(let n=0;n0)){a||(e=this.replaceEntitiesValue(e));const r=this.options.tagValueProcessor(t,e,n,i,o);return null==r?e:typeof r!=typeof e||r!==e?r:this.options.trimValues||e.trim()===e?x(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function c(e){if(this.options.removeNSPrefix){const t=e.split(":"),n="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=n+t[1])}return e}const d=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function h(e,t,n){if(!0!==this.options.ignoreAttributes&&"string"==typeof e){const n=r.getAllMatches(e,d),i=n.length,o={};for(let e=0;e",s,"Closing Tag is not closed.");let i=e.substring(s+2,t).trim();if(this.options.removeNSPrefix){const e=i.indexOf(":");-1!==e&&(i=i.substr(e+1))}this.options.transformTagName&&(i=this.options.transformTagName(i)),n&&(r=this.saveTextToParentTag(r,n,a));const o=a.substring(a.lastIndexOf(".")+1);if(i&&-1!==this.options.unpairedTags.indexOf(i))throw new Error("Unpaired tag can not be used as closing tag: "));let l=0;o&&-1!==this.options.unpairedTags.indexOf(o)?(l=a.lastIndexOf(".",a.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=a.lastIndexOf("."),a=a.substring(0,l),n=this.tagsNodeStack.pop(),r="",s=t}else if("?"===e[s+1]){let t=b(e,s,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(r=this.saveTextToParentTag(r,n,a),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new i(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,a,t.tagName)),this.addChild(n,e,a)}s=t.closeIndex+1}else if("!--"===e.substr(s+1,3)){const t=y(e,"--\x3e",s+4,"Comment is not closed.");if(this.options.commentPropName){const i=e.substring(s+4,t-2);r=this.saveTextToParentTag(r,n,a),n.add(this.options.commentPropName,[{[this.options.textNodeName]:i}])}s=t}else if("!D"===e.substr(s+1,2)){const t=o(e,s);this.docTypeEntities=t.entities,s=t.i}else if("!["===e.substr(s+1,2)){const t=y(e,"]]>",s,"CDATA is not closed.")-2,i=e.substring(s+9,t);r=this.saveTextToParentTag(r,n,a);let o=this.parseTextData(i,n.tagname,a,!0,!1,!0,!0);null==o&&(o=""),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:i}]):n.add(this.options.textNodeName,o),s=t+2}else{let o=b(e,s,this.options.removeNSPrefix),l=o.tagName;const u=o.rawTagName;let c=o.tagExp,d=o.attrExpPresent,h=o.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),n&&r&&"!xml"!==n.tagname&&(r=this.saveTextToParentTag(r,n,a,!1));const p=n;if(p&&-1!==this.options.unpairedTags.indexOf(p.tagname)&&(n=this.tagsNodeStack.pop(),a=a.substring(0,a.lastIndexOf("."))),l!==t.tagname&&(a+=a?"."+l:l),this.isItStopNode(this.options.stopNodes,a,l)){let t="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===l[l.length-1]?(l=l.substr(0,l.length-1),a=a.substr(0,a.length-1),c=l):c=c.substr(0,c.length-1),s=o.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(l))s=o.closeIndex;else{const n=this.readStopNodeData(e,u,h+1);if(!n)throw new Error("Unexpected end of ".concat(u));s=n.i,t=n.tagContent}const r=new i(l);l!==c&&d&&(r[":@"]=this.buildAttributesMap(c,a,l)),t&&(t=this.parseTextData(t,l,a,!0,d,!0,!0)),a=a.substr(0,a.lastIndexOf(".")),r.add(this.options.textNodeName,t),this.addChild(n,r,a)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){"/"===l[l.length-1]?(l=l.substr(0,l.length-1),a=a.substr(0,a.length-1),c=l):c=c.substr(0,c.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));const e=new i(l);l!==c&&d&&(e[":@"]=this.buildAttributesMap(c,a,l)),this.addChild(n,e,a),a=a.substr(0,a.lastIndexOf("."))}else{const e=new i(l);this.tagsNodeStack.push(n),l!==c&&d&&(e[":@"]=this.buildAttributesMap(c,a,l)),this.addChild(n,e,a),n=e}r="",s=h}}else r+=e[s];return t.child};function f(e,t,n){const r=this.options.updateTag(t.tagname,n,t[":@"]);!1===r||("string"==typeof r?(t.tagname=r,e.addChild(t)):e.addChild(t))}const m=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const n=this.docTypeEntities[t];e=e.replace(n.regx,n.val)}for(let t in this.lastEntities){const n=this.lastEntities[t];e=e.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const n=this.htmlEntities[t];e=e.replace(n.regex,n.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function g(e,t,n,r){return e&&(void 0===r&&(r=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,n,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,r))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function v(e,t,n){const r="*."+n;for(const i in e){const n=e[i];if(r===n||t===n)return!0}return!1}function y(e,t,n,r){const i=e.indexOf(t,n);if(-1===i)throw new Error(r);return i+t.length-1}function b(e,t,n){const r=function(e,t){let n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:">",i="";for(let o=t;o3&&void 0!==arguments[3]?arguments[3]:">");if(!r)return;let i=r.data;const o=r.index,a=i.search(/\s/);let s=i,l=!0;-1!==a&&(s=i.substring(0,a),i=i.substring(a+1).trimStart());const u=s;if(n){const e=s.indexOf(":");-1!==e&&(s=s.substr(e+1),l=s!==r.data.substr(e+1))}return{tagName:s,tagExp:i,closeIndex:o,attrExpPresent:l,rawTagName:u}}function A(e,t,n){const r=n;let i=1;for(;n",n,"".concat(t," is not closed"));if(e.substring(n+2,o).trim()===t&&(i--,0===i))return{tagContent:e.substring(r,n),i:o};n=o}else if("?"===e[n+1])n=y(e,"?>",n+1,"StopNode is not closed.");else if("!--"===e.substr(n+1,3))n=y(e,"--\x3e",n+3,"StopNode is not closed.");else if("!["===e.substr(n+1,2))n=y(e,"]]>",n,"StopNode is not closed.")-2;else{const r=b(e,n,">");r&&((r&&r.tagName)===t&&"/"!==r.tagExp[r.tagExp.length-1]&&i++,n=r.closeIndex)}}function x(e,t,n){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&a(e,n)}return r.isExist(e)?e:""}e.exports=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\xa2"},pound:{regex:/&(pound|#163);/g,val:"\xa3"},yen:{regex:/&(yen|#165);/g,val:"\xa5"},euro:{regex:/&(euro|#8364);/g,val:"\u20ac"},copyright:{regex:/&(copy|#169);/g,val:"\xa9"},reg:{regex:/&(reg|#174);/g,val:"\xae"},inr:{regex:/&(inr|#8377);/g,val:"\u20b9"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=l,this.parseXml=p,this.parseTextData=u,this.resolveNameSpace=c,this.buildAttributesMap=h,this.isItStopNode=v,this.replaceEntitiesValue=m,this.readStopNodeData=A,this.saveTextToParentTag=g,this.addChild=f,this.ignoreAttributesFn=s(this.options.ignoreAttributes)}}},338:(e,t,n)=>{const{buildOptions:r}=n(63),i=n(299),{prettify:o}=n(728),a=n(31);e.exports=class{constructor(e){this.externalEntities={},this.options=r(e)}parse(e,t){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(t){!0===t&&(t={});const n=a.validate(e,t);if(!0!==n)throw Error("".concat(n.err.msg,":").concat(n.err.line,":").concat(n.err.col))}const n=new i(this.options);n.addExternalEntities(this.externalEntities);const r=n.parseXml(e);return this.options.preserveOrder||void 0===r?r:o(r,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}},728:(e,t)=>{function n(e,t,a){let s;const l={};for(let u=0;u0&&(l[t.textNodeName]=s):void 0!==s&&(l[t.textNodeName]=s),l}function r(e){const t=Object.keys(e);for(let n=0;n{e.exports=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}},135:e=>{function t(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(t(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&t(e.slice(0,0))}(e)||!!e._isBuffer)}},542:(e,t,n)=>{!function(){var t=n(298),r=n(526).utf8,i=n(135),o=n(526).bin,a=function(e,n){e.constructor==String?e=n&&"binary"===n.encoding?o.stringToBytes(e):r.stringToBytes(e):i(e)?e=Array.prototype.slice.call(e,0):Array.isArray(e)||e.constructor===Uint8Array||(e=e.toString());for(var s=t.bytesToWords(e),l=8*e.length,u=1732584193,c=-271733879,d=-1732584194,h=271733878,p=0;p>>24)|4278255360&(s[p]<<24|s[p]>>>8);s[l>>>5]|=128<>>9<<4)]=l;var f=a._ff,m=a._gg,g=a._hh,v=a._ii;for(p=0;p>>0,c=c+b>>>0,d=d+A>>>0,h=h+x>>>0}return t.endian([u,c,d,h])};a._ff=function(e,t,n,r,i,o,a){var s=e+(t&n|~t&r)+(i>>>0)+a;return(s<>>32-o)+t},a._gg=function(e,t,n,r,i,o,a){var s=e+(t&r|n&~r)+(i>>>0)+a;return(s<>>32-o)+t},a._hh=function(e,t,n,r,i,o,a){var s=e+(t^n^r)+(i>>>0)+a;return(s<>>32-o)+t},a._ii=function(e,t,n,r,i,o,a){var s=e+(n^(t|~r))+(i>>>0)+a;return(s<>>32-o)+t},a._blocksize=16,a._digestsize=16,e.exports=function(e,n){if(null==e)throw new Error("Illegal argument "+e);var r=t.wordsToBytes(a(e,n));return n&&n.asBytes?r:n&&n.asString?o.bytesToString(r):t.bytesToHex(r)}}()},285:(e,t,n)=>{var r=n(2);e.exports=function(e){return e?("{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2)),g(function(e){return e.split("\\\\").join(i).split("\\{").join(o).split("\\}").join(a).split("\\,").join(s).split("\\.").join(l)}(e),!0).map(c)):[]};var i="\0SLASH"+Math.random()+"\0",o="\0OPEN"+Math.random()+"\0",a="\0CLOSE"+Math.random()+"\0",s="\0COMMA"+Math.random()+"\0",l="\0PERIOD"+Math.random()+"\0";function u(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function c(e){return e.split(i).join("\\").split(o).join("{").split(a).join("}").split(s).join(",").split(l).join(".")}function d(e){if(!e)return[""];var t=[],n=r("{","}",e);if(!n)return e.split(",");var i=n.pre,o=n.body,a=n.post,s=i.split(",");s[s.length-1]+="{"+o+"}";var l=d(a);return a.length&&(s[s.length-1]+=l.shift(),s.push.apply(s,l)),t.push.apply(t,s),t}function h(e){return"{"+e+"}"}function p(e){return/^-?0\d/.test(e)}function f(e,t){return e<=t}function m(e,t){return e>=t}function g(e,t){var n=[],i=r("{","}",e);if(!i)return[e];var o=i.pre,s=i.post.length?g(i.post,!1):[""];if(/\$$/.test(i.pre))for(var l=0;l=0;if(!x&&!w)return i.post.match(/,.*\}/)?g(e=i.pre+"{"+i.body+a+i.post):[e];if(x)v=i.body.split(/\.\./);else if(1===(v=d(i.body)).length&&1===(v=g(v[0],!1).map(h)).length)return s.map(function(e){return i.pre+v[0]+e});if(x){var k=u(v[0]),S=u(v[1]),E=Math.max(v[0].length,v[1].length),C=3==v.length?Math.abs(u(v[2])):1,_=f;S0){var F=new Array(I+1).join("0");P=D<0?"-"+F+P.slice(1):F+P}}y.push(P)}}else{y=[];for(var L=0;L{function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}function n(e){var t="function"==typeof Map?new Map:void 0;return n=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,a)}function a(){return r(e,arguments,o(this).constructor)}return a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),i(a,e)},n(e)}function r(e,t,n){return r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&i(o,n.prototype),o},r.apply(null,arguments)}function i(e,t){return i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},i(e,t)}function o(e){return o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},o(e)}var a=function(e){function n(e){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),(r=function(e,n){return!n||"object"!==t(n)&&"function"!=typeof n?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):n}(this,o(n).call(this,e))).name="ObjectPrototypeMutationError",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&i(e,t)}(n,e),n}(n(Error));function s(e,n){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},i=n.split("."),o=i.length,a=function(t){var n=i[t];if(!e)return{v:void 0};if("+"===n){if(Array.isArray(e))return{v:e.map(function(n,o){var a=i.slice(t+1);return a.length>0?s(n,a.join("."),r):r(e,o,i,t)})};var o=i.slice(0,t).join(".");throw new Error("Object at wildcard (".concat(o,") is not an array"))}e=r(e,n,i,t)},l=0;l2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=t(e)||null===e)return!1;if(void 0===n)return!1;if("number"==typeof n)return n in e;try{var i=!1;return s(e,n,function(e,t,n,o){if(!l(n,o))return e&&e[t];i=r.own?e.hasOwnProperty(t):t in e}),i}catch(e){return!1}},hasOwn:function(e,t,n){return this.has(e,t,n||{own:!0})},isIn:function(e,n,r){var i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=t(e)||null===e)return!1;if(void 0===n)return!1;try{var o=!1,a=!1;return s(e,n,function(e,n,i,s){return o=o||e===r||!!e&&e[n]===r,a=l(i,s)&&"object"===t(e)&&n in e,e&&e[n]}),i.validPath?o&&a:o}catch(e){return!1}},ObjectPrototypeMutationError:a}},47:(e,t,n)=>{var r=n(410),i=function(e){return"string"==typeof e};function o(e,t){for(var n=[],r=0;r=-1&&!t;n--){var r=n>=0?arguments[n]:process.cwd();if(!i(r))throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return(t?"/":"")+(e=o(e.split("/"),!t).join("/"))||"."},s.normalize=function(e){var t=s.isAbsolute(e),n="/"===e.substr(-1);return(e=o(e.split("/"),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e},s.isAbsolute=function(e){return"/"===e.charAt(0)},s.join=function(){for(var e="",t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n+1)}e=s.resolve(e).substr(1),t=s.resolve(t).substr(1);for(var r=n(e.split("/")),i=n(t.split("/")),o=Math.min(r.length,i.length),a=o,l=0;l{var n=Object.prototype.hasOwnProperty;function r(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function i(e){try{return encodeURIComponent(e)}catch(e){return null}}t.stringify=function(e,t){t=t||"";var r,o,a=[];for(o in"string"!=typeof t&&(t="?"),e)if(n.call(e,o)){if((r=e[o])||null!=r&&!isNaN(r)||(r=""),o=i(o),r=i(r),null===o||null===r)continue;a.push(o+"="+r)}return a.length?t+a.join("&"):""},t.parse=function(e){for(var t,n=/([^=?#&]+)=?([^&]*)/g,i={};t=n.exec(e);){var o=r(t[1]),a=r(t[2]);null===o||null===a||o in i||(i[o]=a)}return i}},670:e=>{e.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},494:e=>{const t=/^[-+]?0x[a-fA-F0-9]+$/,n=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};e.exports=function(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(i=Object.assign({},r,i),!e||"string"!=typeof e)return e;let o=e.trim();if(void 0!==i.skipLike&&i.skipLike.test(o))return e;if(i.hex&&t.test(o))return Number.parseInt(o,16);{const t=n.exec(o);if(t){const n=t[1],r=t[2];let s=(a=t[3])&&-1!==a.indexOf(".")?("."===(a=a.replace(/0+$/,""))?a="0":"."===a[0]?a="0"+a:"."===a[a.length-1]&&(a=a.substr(0,a.length-1)),a):a;const l=t[4]||t[6];if(!i.leadingZeros&&r.length>0&&n&&"."!==o[2])return e;if(!i.leadingZeros&&r.length>0&&!n&&"."!==o[1])return e;{const t=Number(o),a=""+t;return-1!==a.search(/[eE]/)||l?i.eNotation?t:e:-1!==o.indexOf(".")?"0"===a&&""===s||a===s||n&&a==="-"+s?t:e:r?s===a||n+s===a?t:e:o===a||o===n+a?t:e}}return e}var a}},737:(e,t,r)=>{var i=r(670),o=r(647),a=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,l=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,u=/:\d+$/,c=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,d=/^[a-zA-Z]:/;function h(e){return(e||"").toString().replace(a,"")}var p=[["#","hash"],["?","query"],function(e,t){return g(t.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function m(e){var t,r=("undefined"!=typeof window?window:"undefined"!=typeof n.g?n.g:"undefined"!=typeof self?self:{}).location||{},i={},o=typeof(e=e||r);if("blob:"===e.protocol)i=new y(unescape(e.pathname),{});else if("string"===o)for(t in i=new y(e,{}),f)delete i[t];else if("object"===o){for(t in e)t in f||(i[t]=e[t]);void 0===i.slashes&&(i.slashes=l.test(e.href))}return i}function g(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function v(e,t){e=(e=h(e)).replace(s,""),t=t||{};var n,r=c.exec(e),i=r[1]?r[1].toLowerCase():"",o=!!r[2],a=!!r[3],l=0;return o?a?(n=r[2]+r[3]+r[4],l=r[2].length+r[3].length):(n=r[2]+r[4],l=r[2].length):a?(n=r[3]+r[4],l=r[3].length):n=r[4],"file:"===i?l>=2&&(n=n.slice(2)):g(i)?n=r[4]:i?o&&(n=n.slice(2)):l>=2&&g(t.protocol)&&(n=r[4]),{protocol:i,slashes:o||g(i),slashesCount:l,rest:n}}function y(e,t,n){if(e=(e=h(e)).replace(s,""),!(this instanceof y))return new y(e,t,n);var r,a,l,u,c,f,b=p.slice(),A=typeof t,x=this,w=0;for("object"!==A&&"string"!==A&&(n=t,t=null),n&&"function"!=typeof n&&(n=o.parse),r=!(a=v(e||"",t=m(t))).protocol&&!a.slashes,x.slashes=a.slashes||r&&t.slashes,x.protocol=a.protocol||t.protocol||"",e=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||d.test(e))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(x.protocol)))&&(b[3]=[/(.*)/,"pathname"]);w{},388:()=>{},805:()=>{},345:()=>{},800:()=>{}},jn={};function Rn(e){var t=jn[e];if(void 0!==t)return t.exports;var n=jn[e]={id:e,loaded:!1,exports:{}};return zn[e].call(n.exports,n,n.exports,Rn),n.loaded=!0,n.exports}Rn.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return Rn.d(t,{a:t}),t},Rn.d=(e,t)=>{for(var n in t)Rn.o(t,n)&&!Rn.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},Rn.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),Rn.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var Mn={};Rn.d(Mn,{hT:()=>hr,O4:()=>pr,Kd:()=>cr,YK:()=>dr,UU:()=>Zo,Gu:()=>Ar,ky:()=>to,h4:()=>Zi,ch:()=>eo,hq:()=>Gi,i5:()=>no});var Bn=Rn(737),Wn=Rn.n(Bn);function Un(e){if(!Hn(e))throw new Error("Parameter was not an error")}function Hn(e){return!!e&&"object"==typeof e&&"[object Error]"===(t=e,Object.prototype.toString.call(t))||e instanceof Error;var t}class Vn extends Error{constructor(e,t){const n=[...arguments],{options:r,shortMessage:i}=function(e){let t,n="";if(0===e.length)t={};else if(Hn(e[0]))t={cause:e[0]},n=e.slice(1).join(" ")||"";else if(e[0]&&"object"==typeof e[0])t=Object.assign({},e[0]),n=e.slice(1).join(" ")||"";else{if("string"!=typeof e[0])throw new Error("Invalid arguments passed to Layerr");t={},n=n=e.join(" ")||""}return{options:t,shortMessage:n}}(n);let o=i;if(r.cause&&(o="".concat(o,": ").concat(r.cause.message)),super(o),this.message=o,r.name&&"string"==typeof r.name?this.name=r.name:this.name="Layerr",r.cause&&Object.defineProperty(this,"_cause",{value:r.cause}),Object.defineProperty(this,"_info",{value:{}}),r.info&&"object"==typeof r.info&&Object.assign(this._info,r.info),Error.captureStackTrace){const e=r.constructorOpt||this.constructor;Error.captureStackTrace(this,e)}}static cause(e){return Un(e),e._cause&&Hn(e._cause)?e._cause:null}static fullStack(e){var t;Un(e);const n=Vn.cause(e);return n?"".concat(e.stack,"\ncaused by: ").concat(Vn.fullStack(n)):null!==(t=e.stack)&&void 0!==t?t:""}static info(e){Un(e);const t={},n=Vn.cause(e);return n&&Object.assign(t,Vn.info(n)),e._info&&Object.assign(t,e._info),t}toString(){let e=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(e="".concat(e,": ").concat(this.message)),e}}var Gn=Rn(47),Kn=Rn.n(Gn);const qn="__PATH_SEPARATOR_POSIX__",$n="__PATH_SEPARATOR_WINDOWS__";function Yn(e){try{const t=e.replace(/\//g,qn).replace(/\\\\/g,$n);return encodeURIComponent(t).split($n).join("\\\\").split(qn).join("/")}catch(e){throw new Vn(e,"Failed encoding path")}}function Xn(e){return e.startsWith("/")?e:"/"+e}function Jn(e){let t=e;return"/"!==t[0]&&(t="/"+t),/^.+\/$/.test(t)&&(t=t.substr(0,t.length-1)),t}function Qn(e){let t=new(Wn())(e).pathname;return t.length<=0&&(t="/"),Jn(t)}function Zn(){for(var e=arguments.length,t=new Array(e),n=0;n1){var n=e.shift();e[0]=n+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var r=0;r0&&(i=i.replace(/^[\/]+/,"")),i=r0?"?":"")+a.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}(t.reduce((e,t,n)=>((0===n||"/"!==t||"/"===t&&"/"!==e[e.length-1])&&e.push(t),e),[]))}var er=Rn(542),tr=Rn.n(er);function nr(e,t){const n=e.url.replace("//",""),r=-1==n.indexOf("/")?"/":n.slice(n.indexOf("/")),i=e.method?e.method.toUpperCase():"GET",o=!!/(^|,)\s*auth\s*($|,)/.test(t.qop)&&"auth",a="00000000".concat(t.nc).slice(-8),s=function(e,t,n,r,i,o,a){const s=a||tr()("".concat(t,":").concat(n,":").concat(r));return e&&"md5-sess"===e.toLowerCase()?tr()("".concat(s,":").concat(i,":").concat(o)):s}(t.algorithm,t.username,t.realm,t.password,t.nonce,t.cnonce,t.ha1),l=tr()("".concat(i,":").concat(r)),u=o?tr()("".concat(s,":").concat(t.nonce,":").concat(a,":").concat(t.cnonce,":").concat(o,":").concat(l)):tr()("".concat(s,":").concat(t.nonce,":").concat(l)),c={username:t.username,realm:t.realm,nonce:t.nonce,uri:r,qop:o,response:u,nc:a,cnonce:t.cnonce,algorithm:t.algorithm,opaque:t.opaque},d=[];for(const h in c)c[h]&&("qop"===h||"nc"===h||"algorithm"===h?d.push("".concat(h,"=").concat(c[h])):d.push("".concat(h,'="').concat(c[h],'"')));return"Digest ".concat(d.join(", "))}function rr(e){return"digest"===(e.headers&&e.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}var ir=Rn(101),or=Rn.n(ir);function ar(e){return or().decode(e)}function sr(e,t){var n;return"Basic ".concat((n="".concat(e,":").concat(t),or().encode(n)))}const lr="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,ur=lr.fetch.bind(lr),cr=(lr.Headers,lr.Request),dr=lr.Response;let hr=function(e){return e.Auto="auto",e.Digest="digest",e.None="none",e.Password="password",e.Token="token",e}({}),pr=function(e){return e.DataTypeNoLength="data-type-no-length",e.InvalidAuthType="invalid-auth-type",e.InvalidOutputFormat="invalid-output-format",e.LinkUnsupportedAuthType="link-unsupported-auth",e.InvalidUpdateRange="invalid-update-range",e.NotSupported="not-supported",e}({});function fr(e,t,n,r,i){switch(e.authType){case hr.Auto:t&&n&&(e.headers.Authorization=sr(t,n));break;case hr.Digest:e.digest=function(e,t,n){return{username:e,password:t,ha1:n,nc:0,algorithm:"md5",hasDigestAuth:!1}}(t,n,i);break;case hr.None:break;case hr.Password:e.headers.Authorization=sr(t,n);break;case hr.Token:e.headers.Authorization="".concat((o=r).token_type," ").concat(o.access_token);break;default:throw new Vn({info:{code:pr.InvalidAuthType}},"Invalid auth type: ".concat(e.authType))}var o}Rn(345),Rn(800);const mr="@@HOTPATCHER",gr=()=>{};function vr(e){return{original:e,methods:[e],final:!1}}class yr{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=mr}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(e){this.configuration.getEmptyAction=e}control(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e||e.__type__!==mr)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(e.configuration.registry).forEach(n=>{this.configuration.registry.hasOwnProperty(n)?t&&(this.configuration.registry[n]=Object.assign({},e.configuration.registry[n])):this.configuration.registry[n]=Object.assign({},e.configuration.registry[n])}),e._configuration=this.configuration,this}execute(e){const t=this.get(e)||gr;for(var n=arguments.length,r=new Array(n>1?n-1:0),i=1;i0;)i=[t.shift().apply(o,i)];return i[0]}}(...t.methods)}isPatched(e){return!!this.configuration.registry[e]}patch(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{chain:r=!1}=n;if(this.configuration.registry[e]&&this.configuration.registry[e].final)throw new Error("Failed patching '".concat(e,"': Method marked as being final"));if("function"!=typeof t)throw new Error("Failed patching '".concat(e,"': Provided method is not a function"));if(r)this.configuration.registry[e]?this.configuration.registry[e].methods.push(t):this.configuration.registry[e]=vr(t);else if(this.isPatched(e)){const{original:n}=this.configuration.registry[e];this.configuration.registry[e]=Object.assign(vr(t),{original:n})}else this.configuration.registry[e]=vr(t);return this}patchInline(e,t){this.isPatched(e)||this.patch(e,t);for(var n=arguments.length,r=new Array(n>2?n-2:0),i=2;i1?t-1:0),r=1;r{this.patch(e,t,{chain:!0})}),this}restore(e){if(!this.isPatched(e))throw new Error("Failed restoring method: No method present for key: ".concat(e));if("function"!=typeof this.configuration.registry[e].original)throw new Error("Failed restoring method: Original method not found or of invalid type for key: ".concat(e));return this.configuration.registry[e].methods=[this.configuration.registry[e].original],this}setFinal(e){if(!this.configuration.registry.hasOwnProperty(e))throw new Error("Failed marking '".concat(e,"' as final: No method found for key"));return this.configuration.registry[e].final=!0,this}}let br=null;function Ar(){return br||(br=new yr),br}function xr(e){return function(e){if("object"!=typeof e||null===e||"[object Object]"!=Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}(e)?Object.assign({},e):Object.setPrototypeOf(Object.assign({},e),Object.getPrototypeOf(e))}function wr(){for(var e=arguments.length,t=new Array(e),n=0;n0;){const e=i.shift();r=r?kr(r,e):xr(e)}return r}function kr(e,t){const n=xr(e);return Object.keys(t).forEach(e=>{n.hasOwnProperty(e)?Array.isArray(t[e])?n[e]=Array.isArray(n[e])?[...n[e],...t[e]]:[...t[e]]:"object"==typeof t[e]&&t[e]?n[e]="object"==typeof n[e]&&n[e]?kr(n[e],t[e]):xr(t[e]):n[e]=t[e]:n[e]=t[e]}),n}function Sr(e){const t={};for(const n of e.keys())t[n]=e.get(n);return t}function Er(){for(var e=arguments.length,t=new Array(e),n=0;n(Object.keys(t).forEach(n=>{const i=n.toLowerCase();r.hasOwnProperty(i)?e[r[i]]=t[n]:(r[i]=n,e[n]=t[n])}),e),{})}Rn(805);const Cr="function"==typeof ArrayBuffer,{toString:_r}=Object.prototype;function Tr(e){return Cr&&(e instanceof ArrayBuffer||"[object ArrayBuffer]"===_r.call(e))}function Dr(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function Pr(e){return function(){for(var t=[],n=0;nt.patchInline("fetch",ur,e.url,function(e){let t={};const n={method:e.method};if(e.headers&&(t=Er(t,e.headers)),void 0!==e.data){const[r,i]=function(e){if("string"==typeof e)return[e,{}];if(Dr(e))return[e,{}];if(Tr(e))return[e,{}];if(e&&"object"==typeof e)return[JSON.stringify(e),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof e)}(e.data);n.body=r,t=Er(t,i)}return e.signal&&(n.signal=e.signal),e.withCredentials&&(n.credentials="include"),n.headers=t,n}(e)),e)}var jr=Rn(285);const Rr=e=>{if("string"!=typeof e)throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")},Mr={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Br=e=>e.replace(/[[\]\\-]/g,"\\$&"),Wr=e=>e.join(""),Ur=(e,t)=>{const n=t;if("["!==e.charAt(n))throw new Error("not in a brace expression");const r=[],i=[];let o=n+1,a=!1,s=!1,l=!1,u=!1,c=n,d="";e:for(;od?r.push(Br(d)+"-"+Br(t)):t===d&&r.push(Br(t)),d="",o++):e.startsWith("-]",o+1)?(r.push(Br(t+"-")),o+=2):e.startsWith("-",o+1)?(d=t,o+=2):(r.push(Br(t)),o++)}else l=!0,o++}else u=!0,o++}if(c1&&void 0!==arguments[1]?arguments[1]:{};return t?e.replace(/\[([^\/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")},Vr=new Set(["!","?","+","*","@"]),Gr=e=>Vr.has(e),Kr="(?!\\.)",qr=new Set(["[","."]),$r=new Set(["..","."]),Yr=new Set("().*{}+?[]^$\\!"),Xr="[^/]",Jr=Xr+"*?",Qr=Xr+"+?";var Zr=new WeakMap,ei=new WeakMap,ti=new WeakMap,ni=new WeakMap,ri=new WeakMap,ii=new WeakMap,oi=new WeakMap,ai=new WeakMap,si=new WeakMap,li=new WeakMap,ui=new WeakMap,ci=new WeakSet;class di{constructor(e,t){!function(e,t){Dn(e,t),t.add(e)}(this,ci),(0,Fn.A)(this,"type",void 0),Pn(this,Zr,void 0),Pn(this,ei,void 0),Pn(this,ti,!1),Pn(this,ni,[]),Pn(this,ri,void 0),Pn(this,ii,void 0),Pn(this,oi,void 0),Pn(this,ai,!1),Pn(this,si,void 0),Pn(this,li,void 0),Pn(this,ui,!1);let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.type=e,e&&Nn(ei,this,!0),Nn(ri,this,t),Nn(Zr,this,On(ri,this)?On(Zr,On(ri,this)):this),Nn(si,this,On(Zr,this)===this?n:On(si,On(Zr,this))),Nn(oi,this,On(Zr,this)===this?[]:On(oi,On(Zr,this))),"!"!==e||On(ai,On(Zr,this))||On(oi,this).push(this),Nn(ii,this,On(ri,this)?On(ni,On(ri,this)).length:0)}get hasMagic(){if(void 0!==On(ei,this))return On(ei,this);for(const e of On(ni,this))if("string"!=typeof e&&(e.type||e.hasMagic))return Nn(ei,this,!0);return On(ei,this)}toString(){return void 0!==On(li,this)?On(li,this):this.type?Nn(li,this,this.type+"("+On(ni,this).map(e=>String(e)).join("|")+")"):Nn(li,this,On(ni,this).map(e=>String(e)).join(""))}push(){for(var e=arguments.length,t=new Array(e),n=0;n"string"==typeof e?e:e.toJSON()):[this.type,...On(ni,this).map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===On(Zr,this)||On(ai,On(Zr,this))&&"!"===(null===(e=On(ri,this))||void 0===e?void 0:e.type))&&t.push({}),t}isStart(){var e;if(On(Zr,this)===this)return!0;if(null===(e=On(ri,this))||void 0===e||!e.isStart())return!1;if(0===On(ii,this))return!0;const t=On(ri,this);for(let n=0;n1&&void 0!==arguments[1]?arguments[1]:{};const n=new di(null,void 0,t);return pi.call(di,e,n,0,t),n}toMMPattern(){if(this!==On(Zr,this))return On(Zr,this).toMMPattern();const e=this.toString(),[t,n,r,i]=this.toRegExpSource();if(!(r||On(ei,this)||On(si,this).nocase&&!On(si,this).nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return n;const o=(On(si,this).nocase?"i":"")+(i?"u":"");return Object.assign(new RegExp("^".concat(t,"$"),o),{_src:t,_glob:e})}get options(){return On(si,this)}toRegExpSource(e){const t=null!==e&&void 0!==e?e:!!On(si,this).dot;if(On(Zr,this)===this&&Ln(ci,this,hi).call(this),!this.type){var n;const r=this.isStart()&&this.isEnd(),i=On(ni,this).map(t=>{const[n,i,o,a]="string"==typeof t?mi.call(di,t,On(ei,this),r):t.toRegExpSource(e);return Nn(ei,this,On(ei,this)||o),Nn(ti,this,On(ti,this)||a),n}).join("");let o="";if(this.isStart()&&"string"==typeof On(ni,this)[0]&&(1!==On(ni,this).length||!$r.has(On(ni,this)[0]))){const n=qr,r=t&&n.has(i.charAt(0))||i.startsWith("\\.")&&n.has(i.charAt(2))||i.startsWith("\\.\\.")&&n.has(i.charAt(4)),a=!t&&!e&&n.has(i.charAt(0));o=r?"(?!(?:^|/)\\.\\.?(?:$|/))":a?Kr:""}let a="";return this.isEnd()&&On(ai,On(Zr,this))&&"!"===(null===(n=On(ri,this))||void 0===n?void 0:n.type)&&(a="(?:$|\\/)"),[o+i+a,Hr(i),Nn(ei,this,!!On(ei,this)),On(ti,this)]}const r="*"===this.type||"+"===this.type,i="!"===this.type?"(?:(?!(?:":"(?:";let o=Ln(ci,this,fi).call(this,t);if(this.isStart()&&this.isEnd()&&!o&&"!"!==this.type){const e=this.toString();return Nn(ni,this,[e]),this.type=null,Nn(ei,this,void 0),[e,Hr(this.toString()),!1,!1]}let a=!r||e||t?"":Ln(ci,this,fi).call(this,!0);a===o&&(a=""),a&&(o="(?:".concat(o,")(?:").concat(a,")*?"));let s="";return s="!"===this.type&&On(ui,this)?(this.isStart()&&!t?Kr:"")+Qr:i+o+("!"===this.type?"))"+(!this.isStart()||t||e?"":Kr)+Jr+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&a?")":"*"===this.type&&a?")?":")".concat(this.type)),[s,Hr(o),Nn(ei,this,!!On(ei,this)),On(ti,this)]}}function hi(){if(this!==On(Zr,this))throw new Error("should only call on root");if(On(ai,this))return this;let e;for(this.toString(),Nn(ai,this,!0);e=On(oi,this).pop();){if("!"!==e.type)continue;let t=e,n=On(ri,t);for(;n;){for(let r=On(ii,t)+1;!n.type&&r{if("string"==typeof t)throw new Error("string type in extglob ast??");const[n,r,i,o]=t.toRegExpSource(e);return Nn(ti,this,On(ti,this)||o),n}).filter(e=>!(this.isStart()&&this.isEnd()&&!e)).join("|")}function mi(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=!1,i="",o=!1;for(let a=0;a2&&void 0!==arguments[2]?arguments[2]:{};return Rr(t),!(!n.nocomment&&"#"===t.charAt(0))&&new Ui(t,n).match(e)},vi=/^\*+([^+@!?\*\[\(]*)$/,yi=e=>t=>!t.startsWith(".")&&t.endsWith(e),bi=e=>t=>t.endsWith(e),Ai=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),xi=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),wi=/^\*+\.\*+$/,ki=e=>!e.startsWith(".")&&e.includes("."),Si=e=>"."!==e&&".."!==e&&e.includes("."),Ei=/^\.\*+$/,Ci=e=>"."!==e&&".."!==e&&e.startsWith("."),_i=/^\*+$/,Ti=e=>0!==e.length&&!e.startsWith("."),Di=e=>0!==e.length&&"."!==e&&".."!==e,Pi=/^\?+([^+@!?\*\[\(]*)?$/,Ii=e=>{let[t,n=""]=e;const r=Ni([t]);return n?(n=n.toLowerCase(),e=>r(e)&&e.toLowerCase().endsWith(n)):r},Fi=e=>{let[t,n=""]=e;const r=zi([t]);return n?(n=n.toLowerCase(),e=>r(e)&&e.toLowerCase().endsWith(n)):r},Li=e=>{let[t,n=""]=e;const r=zi([t]);return n?e=>r(e)&&e.endsWith(n):r},Oi=e=>{let[t,n=""]=e;const r=Ni([t]);return n?e=>r(e)&&e.endsWith(n):r},Ni=e=>{let[t]=e;const n=t.length;return e=>e.length===n&&!e.startsWith(".")},zi=e=>{let[t]=e;const n=t.length;return e=>e.length===n&&"."!==e&&".."!==e},ji="object"==typeof process&&process?{NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0,REACT_APP_CLIENT:"firefox",REACT_APP_HOMEPAGE:"https://github.com/fishjar/kiss-translator",REACT_APP_LOGOURL:"https://kiss-translator.rayjar.com/images/logo192.png",REACT_APP_NAME:"KISS Translator",REACT_APP_NAME_CN:"\u7b80\u7ea6\u7ffb\u8bd1",REACT_APP_OPTIONSPAGE:"https://kiss-translator.rayjar.com/options",REACT_APP_OPTIONSPAGE_DEV:"https://kiss-translator-dev.rayjar.com/options",REACT_APP_OPTIONSPAGE_GITHUB:"https://fishjar.github.io/kiss-translator/options.html",REACT_APP_OPTIONSPAGE_LOCAL:"http://localhost:3000/options.html",REACT_APP_RELEASES_URL:"https://github.com/fishjar/kiss-translator/releases",REACT_APP_RULESURL:"https://fishjar.github.io/kiss-rules/kiss-rules_v2.json",REACT_APP_RULESURL_OFF:"https://fishjar.github.io/kiss-rules/kiss-rules-off_v2.json",REACT_APP_RULESURL_ON:"https://fishjar.github.io/kiss-rules/kiss-rules-on_v2.json",REACT_APP_SITEURL:"https://kiss-translator.rayjar.com",REACT_APP_SITEURL_DEV:"https://kiss-translator-dev.rayjar.com",REACT_APP_SITEURL_GITHUB:"https://fishjar.github.io/kiss-translator",REACT_APP_USERSCRIPT_DOWNLOADURL:"https://kiss-translator.rayjar.com/kiss-translator.user.js",REACT_APP_USERSCRIPT_IOS_DOWNLOADURL:"https://kiss-translator.rayjar.com/kiss-translator-ios-safari.user.js",REACT_APP_VERSION:"2.0.29",REACT_APP_VERSION_URL:"https://kiss-translator.rayjar.com/version.txt",REACT_APP_VERSION_URL_DEV:"https://kiss-translator-dev.rayjar.com/version.txt",REACT_APP_VERSION_URL_GITHUB:"https://fishjar.github.io/kiss-translator/version.txt"}.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix";gi.sep="win32"===ji?"\\":"/";const Ri=Symbol("globstar **");gi.GLOBSTAR=Ri,gi.filter=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n=>gi(n,e,t)};const Mi=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.assign({},e,t)};gi.defaults=e=>{if(!e||"object"!=typeof e||!Object.keys(e).length)return gi;const t=gi;return Object.assign(function(n,r){return t(n,r,Mi(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))},{Minimatch:class extends t.Minimatch{constructor(t){super(t,Mi(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}))}static defaults(n){return t.defaults(Mi(e,n)).Minimatch}},AST:class extends t.AST{constructor(t,n){super(t,n,Mi(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))}static fromGlob(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.AST.fromGlob(n,Mi(e,r))}},unescape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.unescape(n,Mi(e,r))},escape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.escape(n,Mi(e,r))},filter:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.filter(n,Mi(e,r))},defaults:n=>t.defaults(Mi(e,n)),makeRe:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.makeRe(n,Mi(e,r))},braceExpand:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.braceExpand(n,Mi(e,r))},match:function(n,r){let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.match(n,r,Mi(e,i))},sep:t.sep,GLOBSTAR:Ri})};const Bi=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Rr(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:jr(e)};gi.braceExpand=Bi,gi.makeRe=function(e){return new Ui(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).makeRe()},gi.match=function(e,t){const n=new Ui(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{});return e=e.filter(e=>n.match(e)),n.options.nonull&&!e.length&&e.push(t),e};const Wi=/[?*]|[+@!]\(.*?\)|\[|\]/;class Ui{constructor(e){(0,Fn.A)(this,"options",void 0),(0,Fn.A)(this,"set",void 0),(0,Fn.A)(this,"pattern",void 0),(0,Fn.A)(this,"windowsPathsNoEscape",void 0),(0,Fn.A)(this,"nonegate",void 0),(0,Fn.A)(this,"negate",void 0),(0,Fn.A)(this,"comment",void 0),(0,Fn.A)(this,"empty",void 0),(0,Fn.A)(this,"preserveMultipleSlashes",void 0),(0,Fn.A)(this,"partial",void 0),(0,Fn.A)(this,"globSet",void 0),(0,Fn.A)(this,"globParts",void 0),(0,Fn.A)(this,"nocase",void 0),(0,Fn.A)(this,"isWindows",void 0),(0,Fn.A)(this,"platform",void 0),(0,Fn.A)(this,"windowsNoMagicRoot",void 0),(0,Fn.A)(this,"regexp",void 0);let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};Rr(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||ji,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||!1===t.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==t.windowsNoMagicRoot?t.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const e of this.set)for(const t of e)if("string"!=typeof t)return!0;return!1}debug(){}make(){const e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=function(){return console.error(...arguments)}),this.debug(this.pattern,this.globSet);const n=this.globSet.map(e=>this.slashSplit(e));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((e,t,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){const t=!(""!==e[0]||""!==e[1]||"?"!==e[2]&&Wi.test(e[2])||Wi.test(e[3])),n=/^[a-z]:/i.test(e[0]);if(t)return[...e.slice(0,4),...e.slice(4).map(e=>this.parse(e))];if(n)return[e[0],...e.slice(1).map(e=>this.parse(e))]}return e.map(e=>this.parse(e))});if(this.debug(this.pattern,r),this.set=r.filter(e=>-1===e.indexOf(!1)),this.isWindows)for(let i=0;i=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(e=>{let t=-1;for(;-1!==(t=e.indexOf("**",t+1));){let n=t;for(;"**"===e[n+1];)n++;n!==t&&e.splice(t,n-t)}return e})}levelOneOptimize(e){return e.map(e=>0===(e=e.reduce((e,t)=>{const n=e[e.length-1];return"**"===t&&"**"===n?e:".."===t&&n&&".."!==n&&"."!==n&&"**"!==n?(e.pop(),e):(e.push(t),e)},[])).length?[""]:e)}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let n=1;nr&&n.splice(r+1,i-r);let o=n[r+1];const a=n[r+2],s=n[r+3];if(".."!==o)continue;if(!a||"."===a||".."===a||!s||"."===s||".."===s)continue;t=!0,n.splice(r,1);const l=n.slice(0);l[r]="**",e.push(l),r--}if(!this.preserveMultipleSlashes){for(let e=1;ee.length)}partsMatch(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=0,i=0,o=[],a="";for(;r2&&void 0!==arguments[2]&&arguments[2];const r=this.options;if(this.isWindows){const n="string"==typeof e[0]&&/^[a-z]:$/i.test(e[0]),r=!n&&""===e[0]&&""===e[1]&&"?"===e[2]&&/^[a-z]:$/i.test(e[3]),i="string"==typeof t[0]&&/^[a-z]:$/i.test(t[0]),o=r?3:n?0:void 0,a=!i&&""===t[0]&&""===t[1]&&"?"===t[2]&&"string"==typeof t[3]&&/^[a-z]:$/i.test(t[3])?3:i?0:void 0;if("number"==typeof o&&"number"==typeof a){const[n,r]=[e[o],t[a]];n.toLowerCase()===r.toLowerCase()&&(t[a]=n,a>o?t=t.slice(a):o>a&&(e=e.slice(o)))}}const{optimizationLevel:i=1}=this.options;i>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var o=0,a=0,s=e.length,l=t.length;o>> no match, partial?",e,d,t,h),d!==s))}let i;if("string"==typeof u?(i=c===u,this.debug("string match",u,c,i)):(i=u.test(c),this.debug("pattern match",u,c,i)),!i)return!1}if(o===s&&a===l)return!0;if(o===s)return n;if(a===l)return o===s-1&&""===e[o];throw new Error("wtf?")}braceExpand(){return Bi(this.pattern,this.options)}parse(e){Rr(e);const t=this.options;if("**"===e)return Ri;if(""===e)return"";let n,r=null;(n=e.match(_i))?r=t.dot?Di:Ti:(n=e.match(vi))?r=(t.nocase?t.dot?xi:Ai:t.dot?bi:yi)(n[1]):(n=e.match(Pi))?r=(t.nocase?t.dot?Fi:Ii:t.dot?Li:Oi)(n):(n=e.match(wi))?r=t.dot?Si:ki:(n=e.match(Ei))&&(r=Ci);const i=di.fromGlob(e,this.options).toMMPattern();return r&&"object"==typeof i&&Reflect.defineProperty(i,"test",{value:r}),i}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const e=this.set;if(!e.length)return this.regexp=!1,this.regexp;const t=this.options,n=t.noglobstar?"[^/]*?":t.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",r=new Set(t.nocase?["i"]:[]);let i=e.map(e=>{const t=e.map(e=>{if(e instanceof RegExp)for(const t of e.flags.split(""))r.add(t);return"string"==typeof e?e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):e===Ri?Ri:e._src});return t.forEach((e,r)=>{const i=t[r+1],o=t[r-1];e===Ri&&o!==Ri&&(void 0===o?void 0!==i&&i!==Ri?t[r+1]="(?:\\/|"+n+"\\/)?"+i:t[r]=n:void 0===i?t[r-1]=o+"(?:\\/|"+n+")?":i!==Ri&&(t[r-1]=o+"(?:\\/|\\/"+n+"\\/)"+i,t[r+1]=Ri))}),t.filter(e=>e!==Ri).join("/")}).join("|");const[o,a]=e.length>1?["(?:",")"]:["",""];i="^"+o+i+a+"$",this.negate&&(i="^(?!"+i+").+$");try{this.regexp=new RegExp(i,[...r].join(""))}catch(e){this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.partial;if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;const n=this.options;this.isWindows&&(e=e.split("\\").join("/"));const r=this.slashSplit(e);this.debug(this.pattern,"split",r);const i=this.set;this.debug(this.pattern,"set",i);let o=r[r.length-1];if(!o)for(let a=r.length-2;!o&&a>=0;a--)o=r[a];for(let a=0;a1&&void 0!==arguments[1]?arguments[1]:"","Invalid response: ").concat(e.status," ").concat(e.statusText));return t.status=e.status,t.response=e,t}function Vi(e,t){const{status:n}=t;if(401===n&&e.digest)return t;if(n>=400)throw Hi(t);return t}function Gi(e,t){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]?{data:t,headers:e.headers?Sr(e.headers):{},status:e.status,statusText:e.statusText}:t}gi.AST=di,gi.Minimatch=Ui,gi.escape=function(e){let{windowsPathsNoEscape:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&")},gi.unescape=Hr;const Ki=(qi=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const i=Nr({url:Zn(e.remoteURL,Yn(t)),method:"COPY",headers:{Destination:Zn(e.remoteURL,Yn(n)),Overwrite:!1===r.overwrite?"F":"T",Depth:r.shallow?"0":"infinity"}},e,r);return a=function(t){Vi(e,t)},(o=Or(i,e))&&o.then||(o=Promise.resolve(o)),a?o.then(a):o;var o,a},function(){for(var e=[],t=0;t2&&void 0!==arguments[2]?arguments[2]:Ji.Original;const r=Xi().get(e,t);return"array"===n&&!1===Array.isArray(r)?[r]:"object"===n&&Array.isArray(r)?r[0]:r}function Zi(e){return new Promise(t=>{t(function(e){const{multistatus:t}=e;if(""===t)return{multistatus:{response:[]}};if(!t)throw new Error("Invalid response: No root multistatus found");const n={multistatus:Array.isArray(t)?t[0]:t};return Xi().set(n,"multistatus.response",Qi(n,"multistatus.response",Ji.Array)),Xi().set(n,"multistatus.response",Xi().get(n,"multistatus.response").map(e=>function(e){const t=Object.assign({},e);return t.status?Xi().set(t,"status",Qi(t,"status",Ji.Object)):(Xi().set(t,"propstat",Qi(t,"propstat",Ji.Object)),Xi().set(t,"propstat.prop",Qi(t,"propstat.prop",Ji.Object))),t}(e))),n}(new $i.XMLParser({allowBooleanAttributes:!0,attributeNamePrefix:"",textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor:(e,t,n)=>"true"===t||"false"===t?"true"===t:t,tagValueProcessor(e,t,n){if(!n.endsWith("propstat.prop.displayname"))return t}}).parse(e)))})}function eo(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{getlastmodified:r=null,getcontentlength:i="0",resourcetype:o=null,getcontenttype:a=null,getetag:s=null}=e,l=o&&"object"==typeof o&&void 0!==o.collection?"directory":"file",u={filename:t,basename:Kn().basename(t),lastmod:r,size:parseInt(i,10),type:l,etag:"string"==typeof s?s.replace(/"/g,""):null};return"file"===l&&(u.mime=a&&"string"==typeof a?a.split(";")[0]:""),n&&(void 0!==e.displayname&&(e.displayname=String(e.displayname)),u.props=e),u}function to(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=null;try{e.multistatus.response[0].propstat&&(r=e.multistatus.response[0])}catch(e){}if(!r)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:i,status:o}}=r,[a,s,l]=o.split(" ",3),u=parseInt(s,10);if(u>=400){const e=new Error("Invalid response: ".concat(u," ").concat(l));throw e.status=u,e}return eo(i,Jn(t),n)}function no(e){switch(String(e)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(e),10)}}function ro(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const io=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,i=Nr({url:Zn(e.remoteURL,Yn(t)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},e,n);return ro(Or(i,e),function(n){return Vi(e,n),ro(n.text(),function(e){return ro(Zi(e),function(e){const i=to(e,t,r);return Gi(n,i,r)})})})});function oo(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const ao=so(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=function(e){if(!e||"/"===e)return[];let t=e;const n=[];do{n.push(t),t=Kn().dirname(t)}while(t&&"/"!==t);return n}(Jn(t));r.sort((e,t)=>e.length>t.length?1:t.length>e.length?-1:0);let o=!1;return function(e,t){if("function"==typeof e[co]){var n,r,i,o=e[co]();function u(e){try{for(;!(n=o.next()).done;)if((e=t(n.value))&&e.then){if(!fo(e))return void e.then(u,i||(i=ho.bind(null,r=new po,2)));e=e.v}r?ho(r,1,e):r=e}catch(e){ho(r||(r=new po),2,e)}}if(u(),o.return){var a=function(e){try{n.done||o.return()}catch(e){}return e};if(r&&r.then)return r.then(a,function(e){throw a(e)});a()}return r}if(!("length"in e))throw new TypeError("Object is not iterable");for(var s=[],l=0;l2&&void 0!==arguments[2]?arguments[2]:{};if(!0===n.recursive)return ao(e,t,n);const r=Nr({url:Zn(e.remoteURL,(i=Yn(t),i.endsWith("/")?i:i+"/")),method:"MKCOL"},e,n);var i;return oo(Or(r,e),function(t){Vi(e,t)})});var go=Rn(388),vo=Rn.n(go);const yo=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r={};if("object"==typeof n.range&&"number"==typeof n.range.start){let e="bytes=".concat(n.range.start,"-");"number"==typeof n.range.end&&(e="".concat(e).concat(n.range.end)),r.Range=e}const i=Nr({url:Zn(e.remoteURL,Yn(t)),method:"GET",headers:r},e,n);return a=function(t){if(Vi(e,t),r.Range&&206!==t.status){const e=new Error("Invalid response code for partial request: ".concat(t.status));throw e.status=t.status,e}return n.callback&&setTimeout(()=>{n.callback(t)},0),t.body},(o=Or(i,e))&&o.then||(o=Promise.resolve(o)),a?o.then(a):o;var o,a}),bo=()=>{},Ao=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Nr({url:Zn(e.remoteURL,Yn(t)),method:"DELETE"},e,n);return o=function(t){Vi(e,t)},(i=Or(r,e))&&i.then||(i=Promise.resolve(i)),o?i.then(o):i;var i,o}),wo=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};return function(r,i){try{var o=(a=io(e,t,n),s=function(){return!0},a&&a.then||(a=Promise.resolve(a)),s?a.then(s):a)}catch(e){return i(e)}var a,s;return o&&o.then?o.then(void 0,i):o}(0,function(e){if(404===e.status)return!1;throw e})});function ko(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const So=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Nr({url:Zn(e.remoteURL,Yn(t),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:n.deep?"infinity":"1"}},e,n);return ko(Or(r,e),function(r){return Vi(e,r),ko(r.text(),function(i){if(!i)throw new Error("Failed parsing directory contents: Empty response");return ko(Zi(i),function(i){const o=Xn(t);let a=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const o=Kn().join(t,"/"),{multistatus:{response:a}}=e,s=a.map(e=>{const t=function(e){try{return e.replace(/^https?:\/\/[^\/]+/,"")}catch(e){throw new Vn(e,"Failed normalising HREF")}}(e.href),{propstat:{prop:n}}=e;return eo(n,"/"===o?decodeURIComponent(Jn(t)):Jn(Kn().relative(decodeURIComponent(o),decodeURIComponent(t))),r)});return i?s:s.filter(e=>e.basename&&("file"===e.type||e.filename!==n.replace(/\/$/,"")))}(i,Xn(e.remoteBasePath||e.remotePath),o,n.details,n.includeSelf);return n.glob&&(a=function(e,t){return e.filter(e=>gi(e.filename,t,{matchBase:!0}))}(a,n.glob)),Gi(r,a,n.details)})})})});function Eo(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Nr({url:Zn(e.remoteURL,Yn(t)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[Po]},e,n);return _o(Or(r,e),function(t){return Vi(e,t),_o(t.text(),function(e){return Gi(t,e,n.details)})})});function _o(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const To=Eo(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=Nr({url:Zn(e.remoteURL,Yn(t)),method:"GET"},e,n);return _o(Or(r,e),function(t){let r;return Vi(e,t),function(e,t){var n=e();return n&&n.then?n.then(t):t()}(function(){return _o(t.arrayBuffer(),function(e){r=e})},function(){return Gi(t,r,n.details)})})}),Do=Eo(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{format:r="binary"}=n;if("binary"!==r&&"text"!==r)throw new Vn({info:{code:pr.InvalidOutputFormat}},"Invalid output format: ".concat(r));return"text"===r?Co(e,t,n):To(e,t,n)}),Po=e=>e;function Io(e){return new $i.XMLBuilder({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(Fo({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:e}}},"d"))}function Fo(e,t){const n=(0,i.A)({},e);for(const r in n)n.hasOwnProperty(r)&&(n[r]&&"object"==typeof n[r]&&-1===r.indexOf(":")?(n["".concat(t,":").concat(r)]=Fo(n[r],t),delete n[r]):!1===/^@_/.test(r)&&(n["".concat(t,":").concat(r)]=n[r],delete n[r]));return n}function Lo(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}function Oo(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const i=Nr({url:Zn(e.remoteURL,Yn(t)),method:"UNLOCK",headers:{"Lock-Token":n}},e,r);return Lo(Or(i,e),function(t){if(Vi(e,t),204!==t.status&&200!==t.status)throw Hi(t)})}),zo=Oo(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{refreshToken:r,timeout:i=jo}=n,o={Accept:"text/plain,application/xml",Timeout:i};r&&(o.If=r);const a=Nr({url:Zn(e.remoteURL,Yn(t)),method:"LOCK",headers:o,data:Io(e.contactHref)},e,n);return Lo(Or(a,e),function(t){return Vi(e,t),Lo(t.text(),function(e){const n=(o=e,new $i.XMLParser({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(o)),r=Xi().get(n,"prop.lockdiscovery.activelock.locktoken.href"),i=Xi().get(n,"prop.lockdiscovery.activelock.timeout");var o;if(!r)throw Hi(t,"No lock token received: ");return{token:r,serverTimeout:i}})})}),jo="Infinite, Second-4100000000";function Ro(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Mo=function(e){return function(){for(var t=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:{};const n=t.path||"/",r=Nr({url:Zn(e.remoteURL,n),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},e,t);return Ro(Or(r,e),function(n){return Vi(e,n),Ro(n.text(),function(e){return Ro(Zi(e),function(e){const r=function(e){try{const[t]=e.multistatus.response,{propstat:{prop:{"quota-used-bytes":n,"quota-available-bytes":r}}}=t;return void 0!==n&&void 0!==r?{used:parseInt(String(n),10),available:no(r)}:null}catch(e){}return null}(e);return Gi(n,r,t.details)})})})});function Bo(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Wo=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,i=Nr({url:Zn(e.remoteURL,Yn(t)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":e.headers["Content-Type"]||"application/xml; charset=utf-8"}},e,n);return Bo(Or(i,e),function(n){return Vi(e,n),Bo(n.text(),function(e){return Bo(Zi(e),function(e){const i=function(e,t,n){const r={truncated:!1,results:[]};return r.truncated=e.multistatus.response.some(e=>{var n,r;return"507"===(null===(n=(e.status||(null===(r=e.propstat)||void 0===r?void 0:r.status)).split(" ",3))||void 0===n?void 0:n[1])&&e.href.replace(/\/$/,"").endsWith(Yn(t).replace(/\/$/,""))}),e.multistatus.response.forEach(e=>{if(void 0===e.propstat)return;const t=e.href.split("/").map(decodeURIComponent).join("/");r.results.push(eo(e.propstat.prop,t,n))}),r}(e,t,r);return Gi(n,i,r)})})})}),Uo=function(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const i=Nr({url:Zn(e.remoteURL,Yn(t)),method:"MOVE",headers:{Destination:Zn(e.remoteURL,Yn(n)),Overwrite:!1===r.overwrite?"F":"T"}},e,r);return a=function(t){Vi(e,t)},(o=Or(i,e))&&o.then||(o=Promise.resolve(o)),a?o.then(a):o;var o,a});var Ho=Rn(172);const Vo=function(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const{contentLength:i=!0,overwrite:o=!0}=r,a={"Content-Type":"application/octet-stream"};!1===i||(a["Content-Length"]="".concat("number"==typeof i?i:function(e){if(Tr(e))return e.byteLength;if(Dr(e))return e.length;if("string"==typeof e)return(0,Ho.d)(e);throw new Vn({info:{code:pr.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}(n))),o||(a["If-None-Match"]="*");const s=Nr({url:Zn(e.remoteURL,Yn(t)),method:"PUT",headers:a,data:n},e,r);return u=function(t){try{Vi(e,t)}catch(e){const n=e;if(412!==n.status||o)throw n;return!1}return!0},(l=Or(s,e))&&l.then||(l=Promise.resolve(l)),u?l.then(u):l;var l,u}),Go=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Nr({url:Zn(e.remoteURL,Yn(t)),method:"OPTIONS"},e,n);return o=function(t){var n,r;try{Vi(e,t)}catch(e){throw e}return{compliance:(null!==(n=t.headers.get("DAV"))&&void 0!==n?n:"").split(",").map(e=>e.trim()),server:null!==(r=t.headers.get("Server"))&&void 0!==r?r:""}},(i=Or(r,e))&&i.then||(i=Promise.resolve(i)),o?i.then(o):i;var i,o});function Ko(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const qo=Xo(function(e,t,n,r,i){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new Vn({info:{code:pr.InvalidUpdateRange}},"Invalid update range ".concat(n," for partial update"));const a={"Content-Type":"application/octet-stream","Content-Length":""+(r-n+1),"Content-Range":"bytes ".concat(n,"-").concat(r,"/*")},s=Nr({url:Zn(e.remoteURL,Yn(t)),method:"PUT",headers:a,data:i},e,o);return Ko(Or(s,e),function(t){Vi(e,t)})});function $o(e,t){var n=e();return n&&n.then?n.then(t):t(n)}const Yo=Xo(function(e,t,n,r,i){let o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new Vn({info:{code:pr.InvalidUpdateRange}},"Invalid update range ".concat(n," for partial update"));const a={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(r-n+1),"X-Update-Range":"bytes=".concat(n,"-").concat(r)},s=Nr({url:Zn(e.remoteURL,Yn(t)),method:"PATCH",headers:a,data:i},e,o);return Ko(Or(s,e),function(t){Vi(e,t)})});function Xo(e){return function(){for(var t=[],n=0;n5&&void 0!==arguments[5]?arguments[5]:{};return Ko(Go(e,t,o),function(a){let s=!1;return $o(function(){if(a.compliance.includes("sabredav-partialupdate"))return Ko(Yo(e,t,n,r,i,o),function(e){return s=!0,e})},function(l){let u=!1;return s?l:$o(function(){if(a.server.includes("Apache")&&a.compliance.includes(""))return Ko(qo(e,t,n,r,i,o),function(e){return u=!0,e})},function(e){if(u)return e;throw new Vn({info:{code:pr.NotSupported}},"Not supported")})})})}),Qo="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function Zo(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{authType:n=null,remoteBasePath:r,contactHref:i=Qo,ha1:o,headers:a={},httpAgent:s,httpsAgent:l,password:u,token:c,username:d,withCredentials:h}=t;let p=n;p||(p=d||u?hr.Password:hr.None);const f={authType:p,remoteBasePath:r,contactHref:i,ha1:o,headers:Object.assign({},a),httpAgent:s,httpsAgent:l,password:u,remotePath:Qn(e),remoteURL:e,token:c,username:d,withCredentials:h};return fr(f,d,u,c,o),{copyFile:(e,t,n)=>Ki(f,e,t,n),createDirectory:(e,t)=>mo(f,e,t),createReadStream:(e,t)=>function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=new(0,vo().PassThrough);return yo(e,t,n).then(e=>{e.pipe(r)}).catch(e=>{r.emit("error",e)}),r}(f,e,t),createWriteStream:(e,t,n)=>function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:bo;const i=new(0,vo().PassThrough),o={};!1===n.overwrite&&(o["If-None-Match"]="*");const a=Nr({url:Zn(e.remoteURL,Yn(t)),method:"PUT",headers:o,data:i,maxRedirects:0},e,n);return Or(a,e).then(t=>Vi(e,t)).then(e=>{setTimeout(()=>{r(e)},0)}).catch(e=>{i.emit("error",e)}),i}(f,e,t,n),customRequest:(e,t)=>Ao(f,e,t),deleteFile:(e,t)=>xo(f,e,t),exists:(e,t)=>wo(f,e,t),getDirectoryContents:(e,t)=>So(f,e,t),getFileContents:(e,t)=>Do(f,e,t),getFileDownloadLink:e=>function(e,t){let n=Zn(e.remoteURL,Yn(t));const r=/^https:/i.test(n)?"https":"http";switch(e.authType){case hr.None:break;case hr.Password:{const t=ar(e.headers.Authorization.replace(/^Basic /i,"").trim());n=n.replace(/^https?:\/\//,"".concat(r,"://").concat(t,"@"));break}default:throw new Vn({info:{code:pr.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(e.authType))}return n}(f,e),getFileUploadLink:e=>function(e,t){let n="".concat(Zn(e.remoteURL,Yn(t)),"?Content-Type=application/octet-stream");const r=/^https:/i.test(n)?"https":"http";switch(e.authType){case hr.None:break;case hr.Password:{const t=ar(e.headers.Authorization.replace(/^Basic /i,"").trim());n=n.replace(/^https?:\/\//,"".concat(r,"://").concat(t,"@"));break}default:throw new Vn({info:{code:pr.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(e.authType))}return n}(f,e),getHeaders:()=>Object.assign({},f.headers),getQuota:e=>Mo(f,e),lock:(e,t)=>zo(f,e,t),moveFile:(e,t,n)=>Uo(f,e,t,n),putFileContents:(e,t,n)=>Vo(f,e,t,n),partialUpdateFileContents:(e,t,n,r,i)=>Jo(f,e,t,n,r,i),getDAVCompliance:e=>Go(f,e),search:(e,t)=>Wo(f,e,t),setHeaders:e=>{f.headers=Object.assign({},e)},stat:(e,t)=>io(f,e,t),unlock:(e,t,n)=>No(f,e,t,n)}}var ea=Mn.UU,ta=Mn.Gu;const na="AES-GCM",ra="PBKDF2-SHA-256",ia=1e5,oa=new TextEncoder,aa=new TextDecoder,sa=()=>{var e;const t=null===(e=globalThis.crypto)||void 0===e?void 0:e.subtle;if(!t)throw new Error("Web Crypto is not available");return t},la=e=>{let t="";for(let n=0;n{const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r{const n=sa(),r=await n.importKey("raw",oa.encode(e),"PBKDF2",!1,["deriveKey"]);return n.deriveKey({name:"PBKDF2",salt:t,iterations:ia,hash:"SHA-256"},r,{name:na,length:256},!1,["encrypt","decrypt"])},da=async(e,t)=>{const n=globalThis.crypto.getRandomValues(new Uint8Array(16)),r=globalThis.crypto.getRandomValues(new Uint8Array(12)),i=await ca(t,n),o=await sa().encrypt({name:na,iv:r},i,oa.encode(e));return JSON.stringify({encrypted:!0,version:1,alg:na,kdf:ra,iterations:ia,salt:la(n),iv:la(r),data:la(new Uint8Array(o))})},ha=async(e,t)=>{const n=(e=>{try{const t=JSON.parse(e);if(!0===(null===t||void 0===t?void 0:t.encrypted)&&t.version&&t.alg&&t.kdf&&t.data)return t}catch(t){}return null})(e);if(!n)return{value:e,encrypted:!1};if(1!==n.version||n.alg!==na||n.kdf!==ra||n.iterations!==ia)throw new Error("Unsupported sync encryption format");const r=await ca(t,ua(n.salt)),i=await sa().decrypt({name:na,iv:ua(n.iv)},r,ua(n.data));return{value:aa.decode(i),encrypted:!0}};let pa=!1;const fa="kiss translator sync files",ma=async function(e,t){let{syncUrl:n,syncUser:r,syncKey:i}=t,{forceWrite:a=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};pa||(pa=!0,ta().patch("request",e=>(0,z.iI)(e.url,{method:e.method,headers:e.headers,body:e.data})));const s=ea(n,{username:r,password:i}),l="/".concat(o.jM6),u="/".concat(o.jM6,"/").concat(e.key);!1===await s.exists(l)&&await s.createDirectory(l);if(await s.exists(u)&&!a){const t=await s.getFileContents(u,{format:"text"}),n=JSON.parse(t);if(n.updateAt>=e.updateAt)return n}return await s.putFileContents(u,JSON.stringify(e,null,2)),e},ga=async(e,t)=>{let{syncUrl:n,syncKey:r}=t;return n=(0,l.Ms)(n,"/"),await(async(e,t,n)=>(0,z.Fd)(e,{headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(await(0,l.$Q)(t,o.r1p))},method:"POST",body:JSON.stringify(n)}))("".concat(n,"/sync"),r,e)},va=async e=>{const t=await(async e=>(0,z.Fd)("".concat(gn,"?per_page=100"),{method:"GET",headers:vn(e)}))(e);return t.filter(e=>e.description===fa).sort((e,t)=>{const n=Date.parse(e.updated_at||e.created_at||0);return Date.parse(t.updated_at||t.created_at||0)-n})[0]},ya=async function(e,t){var n,r;let{syncUrl:i,syncKey:s}=t,{forceWrite:l=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},u=function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").trim();if(!e)return"";try{const t=new URL(e).pathname.split("/").filter(Boolean);return t[t.length-1]||""}catch(t){return e}}(i);const c=(d=e.key).startsWith("kiss-rules_")?"sync-rules_".concat(d):d===o.sgk?"sync-words_".concat(d):d;var d;const h=JSON.stringify(e,null,2);if(!u){const e=await va(s);null!==e&&void 0!==e&&e.id&&(u=e.id,await(0,a.pK)({syncUrl:u}))}if(!u){const t=await(async(e,t,n)=>(0,z.Fd)(gn,{method:"POST",headers:vn(e),body:JSON.stringify({description:n,public:!1,files:{[t.key]:{content:t.content}}})}))(s,{key:c,content:h},fa);return await(0,a.pK)({syncUrl:t.id}),e}const p=await(async(e,t)=>(0,z.Fd)("".concat(gn,"/").concat(e),{method:"GET",headers:vn(t)}))(u,s),f=(null===(n=p.files)||void 0===n?void 0:n[c])||(null===(r=p.files)||void 0===r?void 0:r[e.key]);if(f&&!l){const t=f.content||await(m=f.raw_url,(0,z.Fd)(m,void 0,{expect:"text"})),n=JSON.parse(t);if(n.updateAt>=e.updateAt)return n}var m;return await(async(e,t,n,r)=>(0,z.Fd)("".concat(gn,"/").concat(e),{method:"PATCH",headers:vn(t),body:JSON.stringify({files:{[n]:{content:r}}})}))(u,s,c,h),e},ba=async(e,t)=>(0,i.A)((0,i.A)({},e),{},{value:await da(e.value,t)}),Aa=async(e,t,n,r)=>e===o.UPC?await ma(t,n,r):e===o.EeC?await ya(t,n,r):await ga(t,n),xa=async function(e,t){let{syncEncryptKey:n,forceRemoteRead:r=!1,persistMeta:s=!0}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{syncType:l,syncUrl:u,syncUser:c,syncKey:d,syncEncryptKey:h,syncMeta:p={}}=await(0,a.Xn)(),f=null!==n&&void 0!==n?n:h;if(!d||!f||l!==o.EeC&&!u||l===o.UPC&&!c)return;let{updateAt:m=0,syncAt:g=0}=p[e]||{};0===g&&(m=0);const v={key:e,value:JSON.stringify(t),updateAt:r?0:m},y={syncUrl:u,syncUser:c,syncKey:d},b=await ba(v,f),A=await Aa(l,b,y);if(!A)throw new Error("sync data got err",e);const{data:x,encrypted:w}=await(async(e,t)=>{const{value:n,encrypted:r}=await ha(e.value,t);return{data:(0,i.A)((0,i.A)({},e),{},{value:n}),encrypted:r}})(A,f),k=JSON.parse(x.value),S=x.updateAt>m;return w||r||await(async(e,t,n,r)=>{const i=await ba(t,r);await Aa(e,i,n,{forceWrite:!0})})(l,x,y,f),s&&(p[e]={updateAt:x.updateAt,syncAt:Date.now()},await(0,a.pK)({syncMeta:p})),{value:k,isNew:S}},wa=async e=>{const t=await(0,a.VX)(),n=await xa(o.Ed3,t,e);return null!==n&&void 0!==n&&n.isNew&&!1!==(null===e||void 0===e?void 0:e.applyRemote)&&await(0,a.Qg)(n.value),n},ka=async()=>{try{await wa()}catch(e){(0,K.h9)("sync user rules",e.message)}};const Sa=(e,t)=>e.find(e=>e.pattern!==o.WL9&&!1!==e.enabled&&e.pattern.split(/\n|,/).some(e=>(0,l.uv)(t,e.trim()))),Ea=(e,t)=>{if(!t)return(0,i.A)({},e);if(!e)return(0,i.A)({},t);const n=(0,i.A)({},e);return["selector","keepSelector","blockSelector","rootsSelector","ignoreSelector"].forEach(r=>{n[r]=function(e,t){if(!t||!t.trim())return e;const n=e.split(",").map(e=>e.trim()).filter(Boolean),r=t.split(",").map(e=>e.trim()).filter(Boolean),i=r.some(e=>e.startsWith("+")||e.startsWith("-"));if(!i)return[...new Set(r)].join(", ");let o=new Set(n),a="add";return r.forEach(e=>{let t=e;e.startsWith("+")?(a="add",t=e.slice(1).trim()):e.startsWith("-")&&(a="remove",t=e.slice(1).trim()),t&&("remove"===a?o.delete(t):o.add(t))}),[...o].join(", ")}(e[r]||"",t[r]||"")}),["terms","aiTerms","termsStyle","highlightStyle","textExtStyle","selectStyle","parentStyle","grandStyle","injectJs","injectCss","transStartHook","transEndHook"].forEach(e=>{var r;null!==(r=t[e])&&void 0!==r&&r.trim()&&(n[e]=t[e])}),["apiSlug","fromLang","toLang","transOpen","transOnly","transOnlyRevert","transOrder","wrapOriginal","autoScan","hasRichText","hasShadowroot","scanAll","isPlainText","transTag","transTitle","splitParagraph","highlightWords","textStyle","originalTextStyle"].forEach(e=>{t[e]&&t[e]!==o.WL9&&(n[e]=t[e])}),["splitLength","transOnlyRevertDelay"].forEach(e=>{t[e]&&t[e]!==o.WL9&&(n[e]=t[e])}),t.pattern&&(n.pattern=t.pattern),n},Ca=async(e,t)=>{let{injectRules:n,subrulesList:r}=t;const s=await(0,a.VX)(),l=(0,i.A)((0,i.A)({},o.lNu),s.find(e=>e.pattern===o.WL9)||{}),u=Sa(s,e);let c=null;if(n)try{const t=r.find(e=>e.selected);if(null!==t&&void 0!==t&&t.url){const n=await(async e=>{let t=await(0,a.Kl)(e);return t&&0!==t.length||(t=await _n(e),await Cn(e)),t||[]})(t.url);c=Sa(n,e);try{const e=await(0,a.Sh)(t.url);c&&e.includes(c.pattern)&&(c=null)}catch(h){(0,K.h9)("getDisabledSubRules",h)}}}catch(h){(0,K.h9)("load injectRules",h)}if(!u&&!c)return l;let d=(0,i.A)({},l);return d=Ea(d,c),d=Ea(d,u),d},_a=e=>{if("string"===(0,l.NW)(e)&&(e=JSON.parse(e)),"array"!==(0,l.NW)(e))throw new Error("data error");const t=o.vH2.map(e=>e[0]),n=o.i8R.map(e=>e[0]),r=new Set;return e=e.filter(e=>"object"===(0,l.NW)(e)).filter(e=>{let{pattern:t}=e;return"string"===(0,l.NW)(t)&&!r.has(t.trim())&&(r.add(t.trim()),!0)}).map(e=>{let{pattern:r,enabled:i,selector:a,keepSelector:s,blockSelector:u,rootsSelector:c,ignoreSelector:d,terms:h,aiTerms:p,termsStyle:f,highlightStyle:m,textExtStyle:g,selectStyle:v,parentStyle:y,grandStyle:b,injectJs:A,injectCss:x,apiSlug:w,fromLang:k,toLang:S,textStyle:E,wrapOriginal:C,originalTextStyle:_,transOpen:T,transOnly:D,transOnlyRevert:P,transOnlyRevertDelay:I,transOrder:F,autoScan:L,hasRichText:O,hasShadowroot:N,scanAll:z,isPlainText:j,transTag:R,transTitle:M,transStartHook:B,transEndHook:W,splitParagraph:U,splitLength:H,highlightWords:V}=e;return{pattern:r.trim(),enabled:"boolean"!==(0,l.NW)(i)||i,selector:"string"===(0,l.NW)(a)?a:"",keepSelector:"string"===(0,l.NW)(s)?s:"",blockSelector:"string"===(0,l.NW)(u)?u:"",rootsSelector:"string"===(0,l.NW)(c)?c:"",ignoreSelector:"string"===(0,l.NW)(d)?d:"",terms:"string"===(0,l.NW)(h)?h:"",aiTerms:"string"===(0,l.NW)(p)?p:"",termsStyle:"string"===(0,l.NW)(f)?f:"",highlightStyle:"string"===(0,l.NW)(m)?m:"",textExtStyle:"string"===(0,l.NW)(g)?g:"",selectStyle:"string"===(0,l.NW)(v)?v:"",parentStyle:"string"===(0,l.NW)(y)?y:"",grandStyle:"string"===(0,l.NW)(b)?b:"",injectJs:"string"===(0,l.NW)(A)?A:"",injectCss:"string"===(0,l.NW)(x)?x:"",apiSlug:"string"===(0,l.NW)(w)&&""!==w.trim()?w.trim():o.WL9,fromLang:(0,l.dt)([o.WL9,...t],k),toLang:(0,l.dt)([o.WL9,...n],S),textStyle:"string"===(0,l.NW)(E)&&""!==E.trim()?E.trim():o.WL9,wrapOriginal:(0,l.dt)([o.WL9,"true","false"],[o.WL9,"true","false"].includes(C)?C:r.trim()===o.WL9?o.lNu.wrapOriginal:o.WL9),originalTextStyle:"string"===(0,l.NW)(_)&&""!==_.trim()?_.trim():r.trim()===o.WL9?o.lNu.originalTextStyle:o.WL9,transOpen:(0,l.dt)([o.WL9,"true","false"],T),transOnly:(0,l.dt)([o.WL9,"true","false"],D),transOnlyRevert:(0,l.dt)([o.WL9,"true","false"],P),transOnlyRevertDelay:"string"!==(0,l.NW)(I)||isNaN(parseFloat(I))?o.WL9:I,transOrder:(0,l.dt)([o.WL9,"original-first","translation-first"],F),autoScan:(0,l.dt)([o.WL9,"true","false"],L),hasRichText:(0,l.dt)([o.WL9,"true","false"],O),hasShadowroot:(0,l.dt)([o.WL9,"true","false"],N),scanAll:(0,l.dt)([o.WL9,"true","false"],z),isPlainText:(0,l.dt)([o.WL9,"true","false"],j),transTag:(0,l.dt)([o.WL9,"span","font"],R),transTitle:(0,l.dt)([o.WL9,"true","false"],M),transStartHook:"string"===(0,l.NW)(B)?B:"",transEndHook:"string"===(0,l.NW)(W)?W:"",splitParagraph:(0,l.dt)([o.WL9,...o._E_],U),splitLength:Number.isInteger(H)?H:0,highlightWords:(0,l.dt)([o.WL9,...o.p1w],V)}}),e},Ta=function(e){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split(/\n|,/).some(t=>(0,l.uv)(e,t.trim()))};var Da=n(4307);const Pa=(()=>{try{if("undefined"===typeof navigator)return!1;const e=navigator.userAgent,t=/Android/i.test(e),n=/iPhone|iPad|iPod/i.test(e),r=/Macintosh/i.test(e)&&navigator.maxTouchPoints>1;return t||n||r}catch(e){return!1}})();function Ia(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.moZ;return!0===e?Ia(t):!1===e?o.Nol:e===o.Jg9||e===o.Nol||e===o.moZ?e:o.moZ}function Fa(e,t){const n=Ia(e,t);return n===o.Jg9||n===o.moZ&&!Pa}function La(e){let{phonetic:t,definition:n,examples:r}=e;const i={createdAt:Date.now(),phonetic:t,definition:n,examples:r};return Object.keys(i).forEach(e=>{(null===i[e]||void 0===i[e]||Array.isArray(i[e])&&0===i[e].length||"string"===typeof i[e]&&0===i[e].length)&&delete i[e]}),i}async function Oa(e){await(0,a.aA)(e),(0,a.GY)(o.sgk)}function Na(e){let{word:t,data:n,i18n:r=()=>""}=e;const o=document.createElement("button");o.type="button",o.className="kiss-favorite-word-button",o.style.cssText="background: none; border: none; color: inherit; cursor: pointer; font-size: 18px; line-height: 1; padding: 2px 4px;";const s=r("collect")||"Favorite",l=e=>{o.textContent=String.fromCodePoint(e?9829:9825),o.setAttribute("aria-pressed",String(e)),o.setAttribute("aria-label",s),o.title=s};let u=!1;return(async()=>{const e=await async function(e){const t=await(0,a.lk)();return Boolean(t[e])}(t);u||l(e)})(),o.addEventListener("click",async e=>{e.preventDefault(),e.stopPropagation(),u=!0,o.disabled=!0;try{l(await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=await(0,a.lk)();if(n[e]){const t=(0,i.A)({},n);return delete t[e],await Oa(t),!1}return await Oa((0,i.A)((0,i.A)({},n),{},{[e]:La(t)})),!0}(t,n))}finally{o.disabled=!1}}),o}const za=()=>{if(document.getElementById("kiss-word-hover-styles"))return;const e=document.createElement("style");e.id="kiss-word-hover-styles",e.textContent="\n /* \u9f20\u6807 hover \u7684\u5355\u8bcd\u6837\u5f0f\uff1a\u5448\u73b0\u4e0b\u5212\u7ebf\uff0c\u6307\u793a\u53ef\u70b9\u51fb\u67e5\u8bcd */\n .kiss-word-hover {\n cursor: pointer;\n text-decoration: underline;\n text-decoration-color: #4fc3f7;\n text-decoration-thickness: 2px;\n }\n\n /* \u67e5\u8bcd\u6c14\u6ce1\u5f39\u7a97\u4e3b\u4f53\u6837\u5f0f */\n .kiss-word-tooltip {\n position: fixed;\n background: rgba(0, 0, 0, 0.9);\n color: white;\n border-radius: 6px;\n padding: 12px;\n font-size: 14px;\n z-index: 2147483647;\n max-width: 300px;\n word-wrap: break-word;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n border: 1px solid rgba(255, 255, 255, 0.1);\n font-family: Arial, sans-serif;\n }\n\n /* \u6c14\u6ce1\u5f39\u7a97\u5934\u90e8\uff08\u5305\u542b\u5355\u8bcd\u540d\u548c\u5173\u95ed\u6309\u94ae\uff09 */\n .kiss-word-tooltip-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-bottom: 8px;\n font-weight: bold;\n font-size: 16px;\n color: #4fc3f7;\n }\n\n /* \u5173\u95ed\u6c14\u6ce1\u5f39\u7a97\u7684 X \u6309\u94ae */\n .kiss-word-tooltip-close {\n background: none;\n border: none;\n color: #aaa;\n cursor: pointer;\n font-size: 18px;\n padding: 0;\n margin-left: 10px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n .kiss-word-tooltip-close:hover {\n color: white;\n background: rgba(255, 255, 255, 0.1);\n border-radius: 50%;\n }\n\n /* \u91ca\u4e49\u52a0\u8f7d\u4e2d\u72b6\u6001\u6587\u6848 */\n .kiss-word-loading {\n color: #bbb;\n font-style: italic;\n }\n\n /* \u5355\u8bcd\u8bcd\u6027\u91ca\u4e49\u884c */\n .kiss-word-definition {\n margin: 4px 0;\n }\n\n /* \u8bcd\u6027\u524d\u7f00\u6807\u8bb0\uff08\u5982 n. / v. \u7b49\uff09 */\n .kiss-word-pos {\n color: #4fc3f7;\n font-weight: bold;\n }\n\n /* \u97f3\u6807\u5b57\u7b26\u6837\u5f0f */\n .kiss-word-phonetic {\n color: #bbb;\n font-style: italic;\n margin-right: 10px;\n }\n\n /* \u4f8b\u53e5\u5305\u88f9\u533a */\n .kiss-word-example {\n margin-top: 10px;\n padding-top: 8px;\n border-top: 1px solid #444;\n }\n\n .kiss-word-example-title {\n font-weight: bold;\n margin-bottom: 5px;\n }\n\n /* \u4f8b\u53e5\u82f1\u6587\u6b63\u6587 */\n .kiss-word-example-sentence {\n margin-bottom: 3px;\n }\n\n /* \u4f8b\u53e5\u4e2d\u6587\u7ffb\u8bd1 */\n .kiss-word-example-translation {\n color: #bbb;\n font-style: italic;\n }\n ",document.head.appendChild(e)};function ja(e){return String(e||"").replace(/\b([a-zA-Z]+(?:'[a-zA-Z]+)?)\b/g,'$1')}var Ra=(0,$t.A)("handleWordHover"),Ma=(0,$t.A)("handleWordHoverOut"),Ba=(0,$t.A)("extractDictionaryData"),Wa=(0,$t.A)("dispatchAddWord"),Ua=(0,$t.A)("addFavoriteButton"),Ha=(0,$t.A)("renderDictionaryResult");class Va{constructor(e){let{getVideoContainer:t,getTimestamp:n,autoFavWord:r=!1,i18n:i=()=>""}=e;Object.defineProperty(this,Ha,{value:Xa}),Object.defineProperty(this,Ua,{value:Ya}),Object.defineProperty(this,Wa,{value:$a}),Object.defineProperty(this,Ba,{value:qa}),Object.defineProperty(this,Ma,{value:Ka}),Object.defineProperty(this,Ra,{value:Ga}),this.getVideoContainer=t,this.getTimestamp=n,this.autoFavWord=r,this.i18n=i,this.tooltipEl=null,this.hoverTimeout=null,this.activeWordEl=null}attachSpanListeners(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.getTimestamp;if(!e)return;e.querySelectorAll(".kiss-subtitle-word").forEach(e=>{if(e.dataset.kissListenerAttached)return;e.addEventListener("pointerenter",e=>(0,qt.A)(this,Ra)[Ra](e,t)),e.addEventListener("pointerleave",e=>(0,qt.A)(this,Ma)[Ma](e)),e.dataset.kissListenerAttached="1"})}destroy(){this.clearHoverState()}clearHoverState(){var e;this.hoverTimeout&&(clearTimeout(this.hoverTimeout),this.hoverTimeout=null),null===(e=this.activeWordEl)||void 0===e||e.classList.remove("kiss-word-hover"),this.activeWordEl=null,this.hideWordTooltip()}async showWordTooltip(e){var t;let{timestamp:n=0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this.tooltipEl&&this.tooltipEl.remove(),this.tooltipEl=document.createElement("div"),this.tooltipEl.className="kiss-word-tooltip",this.tooltipEl.innerHTML=rt.createHTML('
Looking up...
');const r=null===(t=this.getVideoContainer)||void 0===t?void 0:t.call(this);if(r){const e=r.getBoundingClientRect(),t=300,n=400,i=e.right-t-45,o=e.top+20,a=window.innerWidth-t-10;this.tooltipEl.style.left=Math.min(a,Math.max(10,i))+"px",this.tooltipEl.style.top=Math.max(10,o)+"px",this.tooltipEl.style.maxWidth=t+"px",this.tooltipEl.style.maxHeight=n+"px",this.tooltipEl.style.overflow="auto"}document.body.appendChild(this.tooltipEl);try{const t=await bn(e),{phonetic:r,definition:o,examples:s}=(0,qt.A)(this,Ba)[Ba](t);(0,qt.A)(this,Wa)[Wa]({word:e,phonetic:r,definition:o,examples:s,timestamp:n});const l={timestamp:n,phonetic:r,definition:o,examples:s},u=Boolean(t&&(t.trs||t.aus||t.sentences));this.autoFavWord&&u&&await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=await(0,a.lk)();return!n[e]&&(await Oa((0,i.A)((0,i.A)({},n),{},{[e]:La(t)})),!0)}(e,l),(0,qt.A)(this,Ha)[Ha](e,t,l)}catch(o){K.vF.info("Dictionary lookup failed for word:",e,o),(0,qt.A)(this,Wa)[Wa]({word:e,phonetic:"",definition:"",examples:[],timestamp:n}),this.tooltipEl&&(this.tooltipEl.innerHTML=rt.createHTML('
\n '.concat(e,'\n \n
\n
Failed to load definition
')),(0,qt.A)(this,Ua)[Ua](e,{timestamp:n}))}}hideWordTooltip(){this.tooltipEl&&(this.tooltipEl.remove(),this.tooltipEl=null)}}function Ga(e,t){const n=e.target;n.classList.contains("kiss-subtitle-word")&&(this.hoverTimeout&&(clearTimeout(this.hoverTimeout),this.hoverTimeout=null),n.classList.add("kiss-word-hover"),this.activeWordEl=n,this.hoverTimeout=setTimeout(()=>{var e;this.showWordTooltip(n.dataset.word,{timestamp:null!==(e=null===t||void 0===t?void 0:t())&&void 0!==e?e:0})},300))}function Ka(e){const t=e.target;t.classList.contains("kiss-subtitle-word")&&(t.classList.remove("kiss-word-hover"),this.activeWordEl===t&&(this.activeWordEl=null),this.hoverTimeout&&(clearTimeout(this.hoverTimeout),this.hoverTimeout=null),this.hoverTimeout=setTimeout(()=>{this.hideWordTooltip()},100))}function qa(e){let t="";if(e&&e.aus){const n=e.aus.find(e=>"\u7f8e"===e.key);n&&n.phonetic?t=n.phonetic:e.aus.length>0&&e.aus[0].phonetic&&(t=e.aus[0].phonetic)}let n="";e&&e.trs&&(n=e.trs.slice(0,3).map(e=>"".concat(e.pos?e.pos+" ":"").concat(e.def)).join("; "));let r=[];return e&&e.sentences&&(r=e.sentences.slice(0,2).map(e=>({eng:e.eng,chs:e.chs}))),{phonetic:t,definition:n,examples:r}}function $a(e){document.dispatchEvent(new CustomEvent("kiss-add-word",{detail:e}))}function Ya(e,t){var n;const r=null===(n=this.tooltipEl)||void 0===n?void 0:n.querySelector(".kiss-word-tooltip-header"),i=null===r||void 0===r?void 0:r.querySelector(".kiss-word-tooltip-close");r&&i&&r.insertBefore(Na({word:e,data:t,i18n:this.i18n}),i)}function Xa(e,t,n){if(t&&(t.trs||t.aus||t.sentences)){let r='
\n '.concat(e,'\n \n
');return t.aus&&t.aus.length>0&&(r+="
",t.aus.forEach(e=>{e.phonetic&&(r+=''.concat(e.phonetic,""))}),r+="
"),t.trs&&t.trs.slice(0,3).forEach(e=>{r+='
'.concat(e.pos?''+e.pos+" ":"").concat(e.def,"
")}),t.sentences&&t.sentences.length>0&&(r+='
\n
\u4f8b\u53e5
',t.sentences.slice(0,2).forEach(e=>{r+='
'.concat(e.eng,'
\n
').concat(e.chs,"
")}),r+="
"),void(this.tooltipEl&&(this.tooltipEl.innerHTML=rt.createHTML(r),(0,qt.A)(this,Ua)[Ua](e,n)))}this.tooltipEl&&(this.tooltipEl.innerHTML=rt.createHTML('
\n '.concat(e,'\n \n
\n
No definition found
')),(0,qt.A)(this,Ua)[Ua](e,n))}var Ja=(0,$t.A)("videoEl"),Qa=(0,$t.A)("formattedSubtitles"),Za=(0,$t.A)("captionWindowEl"),es=(0,$t.A)("paperEl"),ts=(0,$t.A)("currentSubtitleIndex"),ns=(0,$t.A)("setting"),rs=(0,$t.A)("isAdPlaying"),is=(0,$t.A)("throttledTriggerTranslations"),os=(0,$t.A)("wordTooltipController"),as=(0,$t.A)("seekSyncRafId"),ss=(0,$t.A)("translationSessionId"),ls=(0,$t.A)("abortController"),us=(0,$t.A)("wasPlayingBeforeHover"),cs=(0,$t.A)("hoverTarget"),ds=(0,$t.A)("playerControlBarObserver"),hs=(0,$t.A)("syncPaperBottomAfterDrag"),ps=(0,$t.A)("isHoverLookupEnabled"),fs=(0,$t.A)("observePlayerControlBar"),ms=(0,$t.A)("createCaptionWindow"),gs=(0,$t.A)("attachSpanListeners"),vs=(0,$t.A)("enableDragging"),ys=(0,$t.A)("attachEventListeners"),bs=(0,$t.A)("removeEventListeners"),As=(0,$t.A)("scheduleSeekSettledSync"),xs=(0,$t.A)("syncToCurrentTime"),ws=(0,$t.A)("findSubtitleIndexForTime"),ks=(0,$t.A)("updateCaptionDisplay"),Ss=(0,$t.A)("triggerTranslations"),Es=(0,$t.A)("needsRepairTranslation"),Cs=(0,$t.A)("translateAndStore"),_s=(0,$t.A)("getCurrentSubtitleStartTime");class Ts{constructor(e){var t;let{videoEl:n,formattedSubtitles:r,setting:i}=e;Object.defineProperty(this,_s,{value:Hs}),Object.defineProperty(this,Cs,{value:Us}),Object.defineProperty(this,Es,{value:Ws}),Object.defineProperty(this,Ss,{value:Bs}),Object.defineProperty(this,ks,{value:Ms}),Object.defineProperty(this,ws,{value:Rs}),Object.defineProperty(this,xs,{value:js}),Object.defineProperty(this,As,{value:zs}),Object.defineProperty(this,bs,{value:Ns}),Object.defineProperty(this,ys,{value:Os}),Object.defineProperty(this,vs,{value:Ls}),Object.defineProperty(this,gs,{value:Fs}),Object.defineProperty(this,ms,{value:Is}),Object.defineProperty(this,fs,{value:Ps}),Object.defineProperty(this,ps,{value:Ds}),Object.defineProperty(this,Ja,{writable:!0,value:void 0}),Object.defineProperty(this,Qa,{writable:!0,value:[]}),Object.defineProperty(this,Za,{writable:!0,value:null}),Object.defineProperty(this,es,{writable:!0,value:null}),Object.defineProperty(this,ts,{writable:!0,value:-1}),Object.defineProperty(this,ns,{writable:!0,value:{}}),Object.defineProperty(this,rs,{writable:!0,value:!1}),Object.defineProperty(this,is,{writable:!0,value:void 0}),Object.defineProperty(this,os,{writable:!0,value:null}),Object.defineProperty(this,as,{writable:!0,value:null}),Object.defineProperty(this,ss,{writable:!0,value:0}),Object.defineProperty(this,ls,{writable:!0,value:null}),Object.defineProperty(this,us,{writable:!0,value:!1}),Object.defineProperty(this,cs,{writable:!0,value:null}),Object.defineProperty(this,ds,{writable:!0,value:null}),Object.defineProperty(this,hs,{writable:!0,value:null}),(0,qt.A)(this,ns)[ns]=i,(0,qt.A)(this,Ja)[Ja]=n,(0,qt.A)(this,Qa)[Qa]=r,(0,qt.A)(this,ls)[ls]=new AbortController,this.onTimeUpdate=this.onTimeUpdate.bind(this),this.onSeeking=this.onSeeking.bind(this),this.onSeek=this.onSeek.bind(this),(0,qt.A)(this,is)[is]=(0,l.nF)((0,qt.A)(this,Ss)[Ss].bind(this),1e3*(null!==(t=i.throttleTrans)&&void 0!==t?t:30)),(0,qt.A)(this,ps)[ps]()&&(za(),(0,qt.A)(this,os)[os]=new Va({getVideoContainer:()=>{var e;return null===(e=(0,qt.A)(this,Ja)[Ja].parentElement)||void 0===e?void 0:e.parentElement},getTimestamp:()=>(0,qt.A)(this,_s)[_s]()}))}start(){0!==(0,qt.A)(this,Qa)[Qa].length?(K.vF.info("Bilingual Subtitle Manager: Starting..."),(0,qt.A)(this,ms)[ms](),(0,qt.A)(this,ys)[ys](),this.onTimeUpdate()):K.vF.warn("Bilingual Subtitles: No subtitles to display.")}destroy(){var e,t,n,r,i,o,a;K.vF.info("Bilingual Subtitle Manager: Destroying..."),(0,qt.A)(this,ss)[ss]+=1,null===(e=(0,qt.A)(this,ls)[ls])||void 0===e||e.abort(),(0,qt.A)(this,ls)[ls]=null,this.onSubtitleUpdate=null,(0,qt.A)(this,bs)[bs](),null===(t=(0,qt.A)(this,is)[is])||void 0===t||t.cancel(),null!==(0,qt.A)(this,as)[as]&&(cancelAnimationFrame((0,qt.A)(this,as)[as]),(0,qt.A)(this,as)[as]=null),null===(n=(0,qt.A)(this,Za)[Za])||void 0===n||null===(r=n.parentElement)||void 0===r||null===(i=r.parentElement)||void 0===i||i.remove(),null===(o=(0,qt.A)(this,ds)[ds])||void 0===o||o.disconnect(),(0,qt.A)(this,ds)[ds]=null,(0,qt.A)(this,hs)[hs]=null,(0,qt.A)(this,Qa)[Qa]=[],null===(a=(0,qt.A)(this,os)[os])||void 0===a||a.destroy(),(0,qt.A)(this,os)[os]=null}setIsAdPlaying(e){(0,qt.A)(this,rs)[rs]=e,this.onTimeUpdate()}onTimeUpdate(){(0,qt.A)(this,xs)[xs]()}onSeeking(){(0,qt.A)(this,is)[is].cancel(),(0,qt.A)(this,xs)[xs]({forceRender:!0,triggerTranslations:!1})}onSeek(){(0,qt.A)(this,is)[is].cancel(),(0,qt.A)(this,xs)[xs]({forceRender:!0}),(0,qt.A)(this,As)[As]()}appendSubtitles(e){e&&0!==e.length&&(K.vF.info("Bilingual Subtitle Manager: Appending ".concat(e.length," new subtitles...")),(0,qt.A)(this,ts)[ts]=-1,(0,qt.A)(this,xs)[xs]({forceRender:!0,forceTriggerTranslations:!0}))}repairChunkTranslations(e){for(const t of e||[])(0,qt.A)(this,Es)[Es](t)&&!t.isTranslating&&(0,qt.A)(this,Cs)[Cs](t)}updateSetting(e){(0,qt.A)(this,ns)[ns]=(0,i.A)((0,i.A)({},(0,qt.A)(this,ns)[ns]),e);const t=(0,qt.A)(this,Qa)[Qa][(0,qt.A)(this,ts)[ts]];t&&(0,qt.A)(this,ks)[ks](t)}}function Ds(){return Fa((0,qt.A)(this,ns)[ns].hoverLookupMode,(0,qt.A)(this,ns)[ns].enhanceMode)}function Ps(){var e=this;const t=(0,qt.A)(this,Ja)[Ja].closest(".html5-video-player");if(!t)return;const n=t.querySelector(".ytp-left-controls");if(!n)return;const r=parseFloat(getComputedStyle(n).height);let i=.05*t.clientHeight,o=null;const a=function(){let{force:n=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const a=t.classList.contains("ytp-autohide");if(!n&&a===o)return;o=a;const s=!a&&i<2*r?i+r:i;(0,qt.A)(e,es)[es].style.bottom="".concat(s,"px")};(0,qt.A)(this,hs)[hs]=()=>{i=parseFloat((0,qt.A)(this,es)[es].style.bottom)||0,a({force:!0})},a({force:!0});const s=new MutationObserver(()=>a());s.observe(t,{attributes:!0,attributeFilter:["class"]}),(0,qt.A)(this,ds)[ds]=s}function Is(){var e;const t=document.createElement("div");t.className="kiss-caption-container notranslate",Object.assign(t.style,{position:"absolute",width:"100%",height:"100%",left:"0",top:"0",pointerEvents:"none"});const n=document.createElement("div");n.className="kiss-caption-paper",Object.assign(n.style,{position:"absolute",width:"80%",left:"50%",transform:"translateX(-50%)",textAlign:"center",containerType:"inline-size",zIndex:"50",pointerEvents:"auto",display:"none"}),(0,qt.A)(this,es)[es]=n,(0,qt.A)(this,Za)[Za]=document.createElement("div"),(0,qt.A)(this,Za)[Za].className="kiss-caption-window",(0,qt.A)(this,Za)[Za].style.cssText=(0,qt.A)(this,ns)[ns].windowStyle,(0,qt.A)(this,Za)[Za].style.pointerEvents="auto",(0,qt.A)(this,Za)[Za].style.cursor="grab",(0,qt.A)(this,Za)[Za].style.opacity="1",(0,qt.A)(this,es)[es].appendChild((0,qt.A)(this,Za)[Za]),t.appendChild((0,qt.A)(this,es)[es]);const r=null===(e=(0,qt.A)(this,Ja)[Ja].parentElement)||void 0===e?void 0:e.parentElement;if(!r)return void K.vF.warn("could not find videoContainer");r.style.position="relative",r.appendChild(t);const i=(0,qt.A)(this,ps)[ps]();(0,qt.A)(this,vs)[vs]((0,qt.A)(this,es)[es],t,(0,qt.A)(this,Za)[Za],()=>{var e,t;return null===(e=(t=(0,qt.A)(this,hs))[hs])||void 0===e?void 0:e.call(t)}),i&&((0,qt.A)(this,Za)[Za].addEventListener("pointerenter",e=>{e.target===(0,qt.A)(this,Za)[Za]&&((0,qt.A)(this,us)[us]=(0,qt.A)(this,Ja)[Ja]&&!(0,qt.A)(this,Ja)[Ja].paused,(0,qt.A)(this,Ja)[Ja]&&!(0,qt.A)(this,Ja)[Ja].paused&&(0,qt.A)(this,Ja)[Ja].pause())}),(0,qt.A)(this,Za)[Za].addEventListener("pointerleave",e=>{e.target===(0,qt.A)(this,Za)[Za]&&((0,qt.A)(this,us)[us]&&(0,qt.A)(this,Ja)[Ja]&&(0,qt.A)(this,Ja)[Ja].paused&&(0,qt.A)(this,Ja)[Ja].play(),(0,qt.A)(this,us)[us]=!1,(0,qt.A)(this,cs)[cs]=null)})),(0,qt.A)(this,fs)[fs]()}function Fs(){var e;null===(e=(0,qt.A)(this,os)[os])||void 0===e||e.attachSpanListeners((0,qt.A)(this,Za)[Za])}function Ls(e,t,n,r){let i,o,a,s=!1,l=!1;const u=r=>{"mousedown"===r.type&&0!==r.button||(r.preventDefault(),s=!0,l=!1,n.style.cursor="grabbing",i="touchstart"===r.type?r.touches[0].clientY:r.clientY,o=t.getBoundingClientRect().bottom-e.getBoundingClientRect().bottom,a=e.offsetHeight,document.addEventListener("mousemove",c,{capture:!0}),document.addEventListener("touchmove",c,{capture:!0,passive:!1}),document.addEventListener("mouseup",d,{capture:!0}),document.addEventListener("touchend",d,{capture:!0}))},c=n=>{if(!s)return;n.preventDefault();const r="touchmove"===n.type?n.touches[0].clientY:n.clientY;let u=o-(r-i);const c=t.clientHeight;u=Math.max(0,u),u=Math.min(c-a,u),a>c&&(u=Math.max(0,u)),l=!0,e.style.bottom="".concat(u,"px")},d=t=>{if(!s)return;t.preventDefault(),s=!1,n.style.cursor="grab",document.removeEventListener("mousemove",c,{capture:!0}),document.removeEventListener("touchmove",c,{capture:!0}),document.removeEventListener("mouseup",d,{capture:!0}),document.removeEventListener("touchend",d,{capture:!0}),l&&r&&"function"===typeof r&&r();const i=e.style.bottom;setTimeout(()=>{e.style.bottom=i},50)};n.addEventListener("mousedown",u),n.addEventListener("touchstart",u,{passive:!1})}function Os(){(0,qt.A)(this,Ja)[Ja].addEventListener("timeupdate",this.onTimeUpdate),(0,qt.A)(this,Ja)[Ja].addEventListener("seeking",this.onSeeking),(0,qt.A)(this,Ja)[Ja].addEventListener("seeked",this.onSeek)}function Ns(){(0,qt.A)(this,Ja)[Ja].removeEventListener("timeupdate",this.onTimeUpdate),(0,qt.A)(this,Ja)[Ja].removeEventListener("seeking",this.onSeeking),(0,qt.A)(this,Ja)[Ja].removeEventListener("seeked",this.onSeek)}function zs(){"function"===typeof requestAnimationFrame&&(null!==(0,qt.A)(this,as)[as]&&cancelAnimationFrame((0,qt.A)(this,as)[as]),(0,qt.A)(this,as)[as]=requestAnimationFrame(()=>{(0,qt.A)(this,as)[as]=requestAnimationFrame(()=>{(0,qt.A)(this,as)[as]=null,(0,qt.A)(this,xs)[xs]({forceRender:!0})})}))}function js(){let{forceRender:e=!1,triggerTranslations:t=!0,forceTriggerTranslations:n=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const r=1e3*(0,qt.A)(this,Ja)[Ja].currentTime,i=(0,qt.A)(this,ws)[ws](r);var o,a,s;((e||i!==(0,qt.A)(this,ts)[ts])&&((0,qt.A)(this,ts)[ts]=i,(0,qt.A)(this,ks)[ks](-1!==i?(0,qt.A)(this,Qa)[Qa][i]:null)),t)&&(null===(o=(a=(0,qt.A)(this,ns)[ns]).onSubtitleTimeWindow)||void 0===o||o.call(a,{currentTimeMs:r,preTrans:null!==(s=(0,qt.A)(this,ns)[ns].preTrans)&&void 0!==s?s:90}),n?(0,qt.A)(this,Ss)[Ss](r):(0,qt.A)(this,is)[is](r))}function Rs(e){const t=(0,qt.A)(this,Qa)[Qa],n=t.length;if(0===n)return-1;if(et[n-1].end)return-1;let r=0,i=n-1;for(;r<=i;){const n=Math.floor((r+i)/2),o=t[n];if(e>=o.start&&e<=o.end)return n;e{r.style.removeProperty("filter")}),r.addEventListener("pointerleave",()=>{r.style.setProperty("filter",e)})}n&&(0,qt.A)(this,gs)[gs](),(0,qt.A)(this,es)[es].style.display="block"}else(0,qt.A)(this,es)[es].style.display="none"}function Bs(e){const{preTrans:t=90}=(0,qt.A)(this,ns)[ns],n=e+1e3*t,r=(0,qt.A)(this,Qa)[Qa];let i=0,o=r.length-1,a=r.length;for(;i<=o;){const t=i+o>>>1;r[t].end>=e?(a=t,o=t-1):i=t+1}for(let s=a;sn)break;e.translation&&!e._isDraftTranslation||e.isTranslating||(0,qt.A)(this,Cs)[Cs](e)}}function Ws(e){return"[Translation failed]"===(null===e||void 0===e?void 0:e.translation)}async function Us(e){var t;const n=(0,qt.A)(this,ss)[ss],r=null===(t=(0,qt.A)(this,ls)[ls])||void 0===t?void 0:t.signal;if(null!==r&&void 0!==r&&r.aborted)return;const i=t=>{if(!t||n!==(0,qt.A)(this,ss)[ss])return;if(null!==r&&void 0!==r&&r.aborted)return;e.translation=it(t),e._isDraftTranslation=!1;const i=(0,qt.A)(this,ws)[ws](1e3*(0,qt.A)(this,Ja)[Ja].currentTime);(0,qt.A)(this,Qa)[Qa][i]===e&&(0,qt.A)(this,ks)[ks](e),this.onSubtitleUpdate&&this.onSubtitleUpdate({start:e.start,end:e.end,text:e.text,translation:e.translation})};e.isTranslating=!0;try{const{fromLang:t,toLang:o,apiSetting:a,docInfo:s,prompts:l}=(0,qt.A)(this,ns)[ns],u=(0,Da.a5)(a,l,(0,qt.A)(this,ns)[ns]),{trText:c}=await wn({text:e.text,fromLang:t,toLang:o,apiSetting:u,docInfo:s,signal:r,onStreamChunk:e=>{let{text:t}=e;i((e=>Array.isArray(e)?e[0]||"":e||"")(t))}});if(n!==(0,qt.A)(this,ss)[ss])return;i(c)}catch(o){if(n!==(0,qt.A)(this,ss)[ss])return;if("AbortError"===(null===o||void 0===o?void 0:o.name))return;K.vF.info("Translation failed for:",e.text,o),e.translation&&"[Translation failed]"!==e.translation||(e.translation="[Translation failed]"),e._isDraftTranslation=!1}finally{if(n!==(0,qt.A)(this,ss)[ss])return;e.isTranslating=!1,i(e.translation)}}function Hs(){const e=1e3*(0,qt.A)(this,Ja)[Ja].currentTime,t=(0,qt.A)(this,ws)[ws](e);return-1!==t?(0,qt.A)(this,Qa)[Qa][t].start:e}class Vs{constructor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>"",{enableHoverLookup:n=!1,autoFavWord:r=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.videoEl=e,this.i18n=t,this.enableHoverLookup=n,this.autoFavWord=r,this.bilingualSubtitles=[],this.rawSubtitleEvents=[],this.vocabulary=[],this.container=null,this.subtitleTabEl=null,this.subtitleListEl=null,this.vocabularyListEl=null,this.subtitleScrollContainer=null,this._cachedSubtitleItems=[],this.subtitleProgress=0,this.loopAutoScroll=null,this.activeTab="subtitles",this._lastActiveIndex=-1,this._virtualHeights=[],this._virtualOffsets=[0],this._virtualStart=-1,this._virtualEnd=-1,this._virtualRenderRaf=null,this._virtualRenderForce=!1,this._estimatedItemHeight=76,this._subtitleItemGap=4,this._virtualTopPadding=16,this._virtualBottomPadding=16,this._virtualOverscan=8,this._pendingCenterIndex=-1,this._pendingSubtitleTabScrollIndex=-1,this._eventListenersAttached=!1,this._vocabularyDirty=!1,this._chunkRenderCancel=null,this._playerResizeObserver=null,this._playerSizeListenerAttached=!1,this._wordTooltipController=null,this.handleWordAdded=this.handleWordAdded.bind(this),this.handleJumpMessage=this.handleJumpMessage.bind(this),this.handleSubtitleScroll=this.handleSubtitleScroll.bind(this),this.handleContainerMouseEnter=this.handleContainerMouseEnter.bind(this),this.handleContainerMouseLeave=this.handleContainerMouseLeave.bind(this),this.handleVideoEnded=this.handleVideoEnded.bind(this),this.handleVideoPause=this.handleVideoPause.bind(this),this.handleVideoPlay=this.handleVideoPlay.bind(this),this.handleWindowResize=this.handleWindowResize.bind(this),document.addEventListener("kiss-add-word",this.handleWordAdded),window.addEventListener("message",this.handleJumpMessage),this.enableHoverLookup&&(za(),this._wordTooltipController=new Va({getVideoContainer:()=>this._getPlayerElement(),getTimestamp:()=>1e3*this.videoEl.currentTime,autoFavWord:this.autoFavWord,i18n:this.i18n}))}handleJumpMessage(e){e.data&&"KISS_TRANSLATOR_JUMP_TO_TIME"===e.data.type&&this.jumpToTime(e.data.time)}handleSubtitleScroll(){var e;null===(e=this._wordTooltipController)||void 0===e||e.clearHoverState(),this._scheduleVirtualRender()}handleContainerMouseEnter(){this.turnOffAutoSub()}handleContainerMouseLeave(){this.turnOnAutoSub()}handleVideoEnded(){this.turnOffAutoSub()}handleVideoPause(){this.turnOffAutoSub()}handleVideoPlay(){this.turnOnAutoSub()}handleWindowResize(){this._syncContainerHeightToPlayer()}initialize(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100;this.bilingualSubtitles=e||[],this.rawSubtitleEvents=t||[],this.subtitleProgress=this._normalizeProgress(n),this.bilingualSubtitles.length>0&&(this.createSubtitleList(),this.setupEventListeners())}setBilingualSubtitles(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.subtitleProgress;this.bilingualSubtitles=e||[],this.subtitleProgress=this._normalizeProgress(t),this._updateSubtitleTabLabel(),this.subtitleListEl?this.updateBilingualSubtitles():this.bilingualSubtitles.length>0&&(this.createSubtitleList(),this.setupEventListeners())}_normalizeProgress(e){const t=Number(e);return Number.isFinite(t)?Math.min(100,Math.max(0,Math.round(t))):0}_t(e,t){return this.i18n(e)||t}_updateSubtitleTabLabel(){this.subtitleTabEl&&(this.subtitleTabEl.textContent="".concat(this._t("bilingual_subtitles","\u53cc\u8bed\u5b57\u5e55")," [").concat(this.subtitleProgress,"%]"))}destroy(){var e,t;this.turnOffAutoSub(),this._cancelChunkRender(),this._cancelVirtualRender(),this._removeEventListeners(),null===(e=this._playerResizeObserver)||void 0===e||e.disconnect(),this._playerResizeObserver=null,window.removeEventListener("resize",this.handleWindowResize),this._playerSizeListenerAttached=!1,null===(t=this._wordTooltipController)||void 0===t||t.destroy(),this._wordTooltipController=null,document.removeEventListener("kiss-add-word",this.handleWordAdded),window.removeEventListener("message",this.handleJumpMessage),this.container&&(this.container.remove(),this.container=null),this.subtitleTabEl=null,this.subtitleListEl=null,this.vocabularyListEl=null,this.subtitleScrollContainer=null,this.subtitleListUl=null,this.bilingualSubtitles=[],this.rawSubtitleEvents=[],this._cachedSubtitleItems=[],this._virtualHeights=[],this._virtualOffsets=[0],this._pendingCenterIndex=-1,this._pendingSubtitleTabScrollIndex=-1,this.subtitleProgress=0,this.vocabulary=[]}_cancelChunkRender(){this._chunkRenderCancel&&(this._chunkRenderCancel(),this._chunkRenderCancel=null)}_scheduleIdle(e){if("function"===typeof requestIdleCallback){const t=requestIdleCallback(e,{timeout:100});this._chunkRenderCancel=()=>cancelIdleCallback(t)}else{const t=setTimeout(e,0);this._chunkRenderCancel=()=>clearTimeout(t)}}_renderSubtitlesInChunks(e){this.subtitleListUl=e,this._resetVirtualMetrics(),this._scheduleVirtualRender(!0)}_resetVirtualMetrics(){let{preserveHeights:e=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=e?this._virtualHeights:[];this._cachedSubtitleItems=[],this._virtualStart=-1,this._virtualEnd=-1,this._virtualHeights=this.bilingualSubtitles.map((e,n)=>t[n]||this._estimatedItemHeight),this._rebuildVirtualOffsets()}_rebuildVirtualOffsets(){const e=[0];let t=0;for(let n=0;n0&&void 0!==arguments[0]&&arguments[0];if(this._virtualRenderForce=this._virtualRenderForce||e,this._virtualRenderRaf)return;const t="function"===typeof requestAnimationFrame?requestAnimationFrame:e=>setTimeout(e,16);this._virtualRenderRaf=t(()=>{this._virtualRenderRaf=null;const e=this._virtualRenderForce;this._virtualRenderForce=!1,this._renderVirtualSubtitles(e)})}_cancelVirtualRender(){this._virtualRenderRaf&&("function"===typeof cancelAnimationFrame?cancelAnimationFrame(this._virtualRenderRaf):clearTimeout(this._virtualRenderRaf),this._virtualRenderRaf=null,this._virtualRenderForce=!1)}_isSubtitleTabVisible(){return"subtitles"===this.activeTab&&this.subtitleListEl&&this.subtitleScrollContainer&&"none"!==this.subtitleListEl.style.display&&this.subtitleListEl.getClientRects().length>0}_findIndexByOffset(e){const t=this.bilingualSubtitles.length;if(0===t)return-1;let n=0,r=t-1,i=0;for(;n<=r;){const t=n+r>>1;this._virtualOffsets[t]<=e?(i=t,n=t+1):r=t-1}return Math.min(i,t-1)}_getVirtualRange(){const e=this.subtitleScrollContainer,t=this.bilingualSubtitles.length;if(!e||0===t)return{start:0,end:0};const n=Math.max(0,e.scrollTop-this._virtualTopPadding),r=n+e.clientHeight;return{start:Math.max(0,this._findIndexByOffset(n)-this._virtualOverscan),end:Math.min(t,this._findIndexByOffset(r)+this._virtualOverscan+1)}}_renderVirtualSubtitles(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];if(!this.subtitleListUl||!this.subtitleScrollContainer)return;if(!this._isSubtitleTabVisible())return;const{start:t,end:n}=this._getVirtualRange();if(!e&&t===this._virtualStart&&n===this._virtualEnd)return;this._virtualStart=t,this._virtualEnd=n,this._cachedSubtitleItems=[];const r=document.createDocumentFragment();for(let i=t;i1&&(this._virtualHeights[n]=r,e=!0)}if(!e)return void(this._pendingCenterIndex=-1);this._rebuildVirtualOffsets();const t=this._pendingCenterIndex;this._pendingCenterIndex=-1,-1===t?this._scheduleVirtualRender(!0):this._scrollIndexIntoView(t,{stabilizeAfterMeasure:!1})}jumpToTime(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(this.videoEl&&Number.isFinite(e)){this.videoEl.currentTime=e/1e3;const n=Number.isInteger(t)&&t>=0&&t1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[],i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;if(!e)return;const o=this.vocabulary.findIndex(t=>t.word===e);if(-1!==o){const e=this.vocabulary[o];t&&(e.phonetic=t),n&&(e.definition=n),r.length>0&&(e.examples=r),i&&(e.timestamp=i)}else this.vocabulary.push({word:e,phonetic:t,definition:n,examples:r,timestamp:i});"vocabulary"===this.activeTab?this._renderVocabulary():this._vocabularyDirty=!0}downloadSubtitles(){if(this.bilingualSubtitles&&0!==this.bilingualSubtitles.length)try{const e=this._getYouTubeVideoId()||"video",t=pt(this.bilingualSubtitles);(0,l.Qv)(t,"kiss-subtitles-".concat(e,"_").concat(Date.now(),".vtt"))}catch(e){K.vF.error("Youtube Provider: download subtitles error:",e)}else K.vF.info("Youtube Provider: No subtitles to download")}downloadTranslationOnlySubtitles(){if(this.bilingualSubtitles&&0!==this.bilingualSubtitles.length)try{const e=this._getYouTubeVideoId()||"video",t=function(e){if(!Array.isArray(e))return"WEBVTT";const t=e.map((e,t)=>{const n=ht(e.start),r=ht(e.end),i=t+1,o="".concat(n," --\x3e ").concat(r),a=e.translation||e.text||"";return"".concat(i,"\n").concat(o,"\n").concat(a)});return["WEBVTT",...t].join("\n\n")}(this.bilingualSubtitles);(0,l.Qv)(t,"kiss-subtitles-translation-".concat(e,"_").concat(Date.now(),".vtt"))}catch(e){K.vF.error("Youtube Provider: download translation subtitles error:",e)}else K.vF.info("Youtube Provider: No subtitles to download")}downloadRawSubtitleEvents(){if(this.rawSubtitleEvents&&0!==this.rawSubtitleEvents.length)try{const e=this._getYouTubeVideoId()||"video",t=JSON.stringify(this.rawSubtitleEvents,null,2);(0,l.Qv)(t,"kiss-subtitles-raw-".concat(e,"_").concat(Date.now(),".json"))}catch(e){K.vF.error("Youtube Provider: download raw subtitles error:",e)}else K.vF.info("Youtube Provider: No raw subtitle events to download")}createSubtitleList(){if(!this.videoEl)return;this._ensureContainer(),0===this.container.children.length&&this._renderTabsAndStructure(),this._cancelChunkRender();const e=this.subtitleListEl.querySelector("ul");e.replaceChildren(),this._renderSubtitlesInChunks(e),this._renderVocabulary()}_ensureContainer(){if(this.container=document.getElementById("kiss-youtube-subtitle-list-container"),!this.container){this.container=document.createElement("div"),this.container.id="kiss-youtube-subtitle-list-container",this.container.className="notranslate",Object.assign(this.container.style,{height:"calc(100vh - 220px)",maxHeight:"none",zIndex:"999",background:"var(--kt-bg, rgba(255, 255, 255, 0.9))",backdropFilter:"blur(10px)",top:"60px",right:"0",fontSize:"14px",padding:"0",border:"var(--kt-border, 1px solid rgba(0, 0, 0, 0.1))",borderRadius:"8px",minWidth:"320px",maxWidth:"600px",boxShadow:"0 4px 20px rgba(0,0,0,0.15)",fontFamily:"-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif",display:"flex",flexDirection:"column",marginBottom:"12px"});const e=document.getElementById("secondary-inner");e&&e.prepend(this.container),(async()=>{try{const e=await(0,a.C$)(),t=null===e||void 0===e?void 0:e.darkMode,n="function"===typeof window.matchMedia&&window.matchMedia("(prefers-color-scheme: dark)").matches,r="dark"===t||"auto"===t&&n?{"--kt-bg":"rgba(18,18,18,0.85)","--kt-border":"1px solid rgba(255, 255, 255, 0.06)","--kt-text":"#e6e6e6","--kt-subtext":"#bdbdbd","--kt-primary":"#90caf9","--kt-time-bg":"rgba(144,202,249,0.08)","--kt-divider":"rgba(255,255,255,0.06)","--kt-active-bg":"rgba(144,202,249,0.12)","--kt-btn-bg":"linear-gradient(180deg,#0f0f0f,#1b1b1b)","--kt-btn-color":"#e6e6e6","--kt-btn-border":"1px solid rgba(255,255,255,0.04)","--kt-btn-hover-bg":"linear-gradient(180deg,#141414,#262626)"}:{"--kt-bg":"rgba(255, 255, 255, 0.9)","--kt-border":"1px solid rgba(0, 0, 0, 0.1)","--kt-text":"#333","--kt-subtext":"#666","--kt-primary":"#1e88e5","--kt-time-bg":"rgba(30, 136, 229, 0.1)","--kt-divider":"rgba(240,240,240,0.6)","--kt-active-bg":"rgba(30, 136, 229, 0.1)","--kt-btn-bg":"var(--kt-primary)","--kt-btn-color":"white","--kt-btn-border":"none","--kt-btn-hover-bg":"rgba(30,136,229,0.85)"};Object.keys(r).forEach(e=>this.container.style.setProperty(e,r[e]))}catch(e){K.vF.info("failed to apply subtitle list theme vars",e)}})()}this._syncContainerHeightToPlayer(),this._observePlayerSize()}_getPlayerElement(){var e;return(null===(e=this.videoEl)||void 0===e?void 0:e.closest(".html5-video-player"))||this.videoEl}_syncContainerHeightToPlayer(){var e;if(!this.container)return;const t=this._getPlayerElement(),n=null===t||void 0===t||null===(e=t.getBoundingClientRect)||void 0===e?void 0:e.call(t).height;if(!Number.isFinite(n)||n<=0)return;const r="".concat(Math.round(n),"px");this.container.style.height=r,this.container.style.maxHeight=r}_observePlayerSize(){const e=this._getPlayerElement();e&&!this._playerSizeListenerAttached&&(window.addEventListener("resize",this.handleWindowResize),this._playerSizeListenerAttached=!0,"function"===typeof ResizeObserver&&(this._playerResizeObserver=new ResizeObserver(()=>{this._syncContainerHeightToPlayer()}),this._playerResizeObserver.observe(e)))}_renderTabsAndStructure(){const e=document.createElement("div");e.style.cssText="display: flex; border-bottom: 1px solid var(--kt-divider); padding: 0 16px; flex-shrink: 0;";const t=document.createElement("button");this.subtitleTabEl=t,this._updateSubtitleTabLabel();const n=document.createElement("button");n.textContent=this._t("vocabulary_book","\u751f\u8bcd\u672c");const r=(e,t)=>{e.style.cssText="padding: 12px 16px; cursor: pointer; border: none; background: transparent; font-size: 15px; font-weight: ".concat(t?"600":"500","; color: ").concat(t?"var(--kt-primary)":"var(--kt-text)","; border-bottom: 2px solid ").concat(t?"var(--kt-primary)":"transparent","; margin-bottom: -1px; outline: none;")},i=document.createElement("button");i.textContent="\xd7",i.title=this._t("close","Close"),i.style.cssText="\n margin-left: auto; \n background: transparent; \n border: none; \n color: var(--kt-subtext); \n font-size: 22px; \n line-height: 1;\n cursor: pointer; \n padding: 0 8px;\n display: flex;\n align-items: center;\n transition: color 0.2s;\n ",i.addEventListener("click",()=>{this.destroy()}),i.addEventListener("mouseenter",()=>i.style.color="var(--kt-text)"),i.addEventListener("mouseleave",()=>i.style.color="var(--kt-subtext)");const o=document.createElement("div");o.style.cssText="overflow: hidden; flex-grow: 1; display: flex; flex-direction: column; height: calc(100% - 40px);",this.subtitleListEl=document.createElement("div"),this.subtitleListEl.id="kiss-youtube-subtitle-list",this.subtitleListEl.style.cssText="display: flex; flex-direction: column; height: 100%; overflow: hidden;";const a=document.createElement("div");a.style.cssText="padding: 10px 16px; border-bottom: 1px solid var(--kt-divider); display: flex; justify-content: center; gap: 8px; flex-shrink: 0;";const s=document.createElement("button");s.textContent=this._t("download_subtitles_vtt","\u4e0b\u8f7d\u5b57\u5e55 (VTT)"),s.style.cssText="padding: 6px 12px; background: var(--kt-btn-bg); color: var(--kt-btn-color); border: var(--kt-btn-border); border-radius: 4px; cursor: pointer; font-size: 12px; transition: background 220ms ease, color 200ms ease, transform 160ms ease;",s.addEventListener("mouseenter",()=>{try{const e=getComputedStyle(this.container).getPropertyValue("--kt-btn-hover-bg");e&&(s.style.background=e),s.style.transform="translateY(-1px)"}catch(jn){}}),s.addEventListener("mouseleave",()=>{try{const e=getComputedStyle(this.container).getPropertyValue("--kt-btn-bg");e&&(s.style.background=e),s.style.transform="translateY(0)"}catch(jn){}}),s.addEventListener("click",this.downloadSubtitles.bind(this));const l=document.createElement("button");l.textContent=this._t("download_raw_subtitle_events_json","\u4e0b\u8f7d\u6e90\u6570\u636e (JSON)"),l.style.cssText="padding: 6px 12px; background: var(--kt-btn-bg); color: var(--kt-btn-color); border: var(--kt-btn-border); border-radius: 4px; cursor: pointer; font-size: 12px; transition: background 220ms ease, color 200ms ease, transform 160ms ease;",l.addEventListener("mouseenter",()=>{try{const e=getComputedStyle(this.container).getPropertyValue("--kt-btn-hover-bg");e&&(l.style.background=e),l.style.transform="translateY(-1px)"}catch(jn){}}),l.addEventListener("mouseleave",()=>{try{const e=getComputedStyle(this.container).getPropertyValue("--kt-btn-bg");e&&(l.style.background=e),l.style.transform="translateY(0)"}catch(jn){}}),l.addEventListener("click",this.downloadRawSubtitleEvents.bind(this));const u=document.createElement("button");u.textContent=this._t("download_translation_subtitles_vtt","\u4e0b\u8f7d\u8bd1\u6587\u5b57\u5e55 (VTT)"),u.style.cssText="padding: 6px 12px; background: var(--kt-btn-bg); color: var(--kt-btn-color); border: var(--kt-btn-border); border-radius: 4px; cursor: pointer; font-size: 12px; transition: background 220ms ease, color 200ms ease, transform 160ms ease;",u.addEventListener("mouseenter",()=>{try{const e=getComputedStyle(this.container).getPropertyValue("--kt-btn-hover-bg");e&&(u.style.background=e),u.style.transform="translateY(-1px)"}catch(jn){}}),u.addEventListener("mouseleave",()=>{try{const e=getComputedStyle(this.container).getPropertyValue("--kt-btn-bg");e&&(u.style.background=e),u.style.transform="translateY(0)"}catch(jn){}}),u.addEventListener("click",this.downloadTranslationOnlySubtitles.bind(this)),a.append(s,u,l),this.subtitleListEl.appendChild(a),this.subtitleScrollContainer=document.createElement("div"),this.subtitleScrollContainer.style.cssText="overflow-y: auto; flex: 1; padding: 0 16px; position: relative;",this.subtitleScrollContainer.addEventListener("scroll",this.handleSubtitleScroll,{passive:!0});const c=document.createElement("ul");c.style.cssText="list-style-type: none; padding: 0; margin: 0; position: relative;",this.subtitleListUl=c,this.subtitleScrollContainer.appendChild(c),this.subtitleListEl.appendChild(this.subtitleScrollContainer),this.vocabularyListEl=document.createElement("div"),this.vocabularyListEl.id="kiss-youtube-vocabulary-list",this.vocabularyListEl.style.cssText="display: none; flex-direction: column; height: 100%; overflow: hidden;",t.addEventListener("click",()=>{this.activeTab="subtitles",r(t,!0),r(n,!1),this.subtitleListEl.style.display="flex",this.vocabularyListEl.style.display="none",this._scrollPendingSubtitleTabIndex()||this._scheduleVirtualRender(!0)}),n.addEventListener("click",()=>{this.activeTab="vocabulary",r(t,!1),r(n,!0),this.subtitleListEl.style.display="none",this.vocabularyListEl.style.display="flex",this._vocabularyDirty&&(this._renderVocabulary(),this._vocabularyDirty=!1)}),r(t,!0),r(n,!1),e.append(t,n,i),o.append(this.subtitleListEl,this.vocabularyListEl),this.container.append(e,o)}_createSubtitleListItem(e,t){const n=document.createElement("li");n.id="kiss-youtube-item-".concat(t),n.className="kiss-youtube-item",n.dataset.index=t,n.dataset.time=e.start,n.style.cssText="padding: 12px 16px; border-bottom: 1px solid var(--kt-divider); transition: opacity 0.2s ease; opacity: 0.6; border-radius: 6px; margin-bottom: 4px; display: flex; align-items: flex-start;";const r=document.createElement("span");r.textContent="".concat(this.millisToMinutesAndSeconds(e.start)," "),r.style.cssText="color: var(--kt-primary); font-weight: 600; margin-right: 10px; font-size: 12px; background: var(--kt-time-bg); padding: 2px 6px; border-radius: 4px; flex-shrink: 0; line-height: 20px; cursor: pointer;",r.addEventListener("click",n=>{n.stopPropagation(),this.jumpToTime(e.start,t)});const i=document.createElement("div");i.style.cssText="flex-grow: 1;";const o=document.createElement("div");var a;(o.className="kiss-youtube-original",o.style.cssText="color: var(--kt-text); font-size: 14px; line-height: 1.4; margin-bottom: 4px;",this.enableHoverLookup)?(o.innerHTML=rt.createHTML(ja(e.text||"")),null===(a=this._wordTooltipController)||void 0===a||a.attachSpanListeners(o,()=>e.start)):o.textContent=e.text||"";const s=document.createElement("div");return s.className="kiss-youtube-translation",s.textContent=e.translation||"",s.style.display=e.translation?"block":"none",s.style.cssText="color: var(--kt-subtext); font-size: 13px; line-height: 1.4; font-style: italic; min-height: 18px;",n.addEventListener("mouseenter",()=>{n.classList.contains("active-subtitle")||(n.style.opacity=1)}),n.addEventListener("mouseleave",()=>{n.classList.contains("active-subtitle")||(n.style.opacity=.6)}),i.appendChild(o),i.appendChild(s),n.appendChild(r),n.appendChild(i),n._translationEl=s,n}updateBilingualSubtitles(){this.subtitleListEl&&(this._resetVirtualMetrics({preserveHeights:!0}),this._scheduleVirtualRender(!0))}updateSingleSubtitle(e){if(!this.subtitleListEl)return;const{start:t,translation:n}=e,r=this._findSubtitleIndexByStart(t);if(-1===r)return;this.bilingualSubtitles[r].translation=n;const i=this._cachedSubtitleItems[r];if(i){const e=i._translationEl||i.querySelector(".kiss-youtube-translation");e&&(e.textContent=n||"",e.style.display=n?"block":"none",this._scheduleVirtualRender(!0))}}_findSubtitleIndexByStart(e){let t=0,n=this.bilingualSubtitles.length-1;for(;t<=n;){const r=Math.floor((t+n)/2),i=this.bilingualSubtitles[r];if(i.start===e)return r;i.start>e?n=r-1:t=r+1}return-1}_renderVocabulary(){if(!this.vocabularyListEl)return;this.vocabularyListEl.replaceChildren();const e=this._createExportContainer(),t=this._createVocabListContainer();this.vocabularyListEl.appendChild(e),this.vocabularyListEl.appendChild(t)}_createExportContainer(){const e=document.createElement("div");if(e.style.cssText="padding: 10px 16px; border-bottom: 1px solid var(--kt-divider); display: flex; justify-content: center; flex-shrink: 0; gap: 8px;",this.vocabulary.length>0){const t=(e,t)=>{const n=document.createElement("button");return n.textContent=e,n.style.cssText="padding: 6px 12px; background: var(--kt-primary); color: white; border: none; border-radius: 4px; cursor: pointer; font-size: 12px;",t&&n.addEventListener("click",t.bind(this)),n};e.appendChild(t("\u5bfc\u51faJSON",this.exportVocabularyAsJson)),e.appendChild(t("\u5bfc\u51faCSV",this.exportVocabularyAsCsv)),e.appendChild(t("\u5bfc\u51faTXT",this.exportVocabularyAsTxt)),e.appendChild(t("\u5bfc\u51faMD",this.exportVocabularyAsMd))}else{const t=document.createElement("span");t.textContent="\u6682\u65e0\u751f\u8bcd\uff0c\u5728\u5b57\u5e55\u4e2d\u6dfb\u52a0",t.style.color="var(--kt-subtext)",t.style.fontSize="12px",e.appendChild(t)}return e}_createVocabListContainer(){const e=document.createElement("div");e.style.cssText="overflow-y: auto; overflow-x: hidden; flex: 1; padding: 0 16px; min-height: 0;";const t=document.createElement("div");return t.style.cssText="display: flex; flex-direction: column; gap: 16px; padding: 16px 0; width: 100%;",this.vocabulary.forEach(e=>{const n=this._createVocabItemElement(e);t.appendChild(n)}),e.appendChild(t),e}_createVocabItemElement(e){const t=document.createElement("div");t.style.cssText="border-bottom: 1px solid var(--kt-divider); word-wrap: break-word; word-break: break-word;";const n=document.createElement("div");n.style.cssText="display: flex; align-items: center; gap: 10px; margin-bottom: 8px; flex-wrap: wrap;";const r=document.createElement("div");r.textContent=e.word,r.style.cssText="color: var(--kt-text); font-weight: bold; font-size: 16px;",n.appendChild(r);const i=Na({word:e.word,data:{timestamp:e.timestamp,phonetic:e.phonetic,definition:e.definition,examples:e.examples},i18n:this.i18n});if(i.style.marginLeft="auto",e.phonetic){const t=document.createElement("div"),r=e.phonetic;t.textContent="[".concat(r,"]"),t.style.cssText="color: var(--kt-subtext); font-style: italic; font-size: 14px;",n.appendChild(t)}if(e.timestamp){const t=document.createElement("button");t.textContent="".concat(this.millisToMinutesAndSeconds(e.timestamp)),t.style.cssText="color: var(--kt-primary); background: none; border: none; padding: 0 4px; font-size: 14px; cursor: pointer;",t.addEventListener("click",()=>this.jumpToTime(e.timestamp)),n.appendChild(t)}if(n.appendChild(i),t.appendChild(n),e.definition){const n=document.createElement("div");n.textContent=e.definition,n.style.cssText="color: var(--kt-text); margin: 8px 0; font-size: 14px; line-height: 1.4;",t.appendChild(n)}if(e.examples&&e.examples.length>0){const n=document.createElement("div");n.style.cssText="color: var(--kt-subtext); font-size: 13px; line-height: 1.4;",e.examples.forEach(e=>{const t=document.createElement("div");t.style.marginBottom="8px";const r=document.createElement("div");if(r.textContent=e.eng,t.appendChild(r),e.chs){const n=document.createElement("div");n.textContent=e.chs,n.style.cssText="color: var(--kt-subtext); font-style: italic;",t.appendChild(n)}n.appendChild(t)}),t.appendChild(n)}return t}exportVocabularyAsJson(){if(0===this.vocabulary.length)return;const e=this._getYouTubeVideoId(),t=this.vocabulary.map(e=>{const t=(0,i.A)({},e);if(e.phonetic){const n=e.phonetic;t.phonetic=n?"[".concat(n,"]"):""}return t}),n={videoInfo:{title:this._getYouTubeVideoTitle(),url:e?"https://www.youtube.com/watch?v=".concat(e):"",exportTime:(new Date).toISOString()},vocabulary:t};this._downloadFile(JSON.stringify(n,null,2),"application/json","json")}exportVocabularyAsCsv(){if(0===this.vocabulary.length)return;const e=this._getYouTubeVideoId(),t=this.vocabulary.map(t=>{var n,r;const i=t.phonetic,o=i?"[".concat(i,"]"):"",a=null===(n=t.examples)||void 0===n?void 0:n[0],s=null===(r=t.examples)||void 0===r?void 0:r[1];let l="";return t.timestamp&&e&&(l="https://www.youtube.com/watch?v=".concat(e,"&t=").concat(Math.floor(t.timestamp/1e3),"s")),[t.word,o,t.definition,(null===a||void 0===a?void 0:a.eng)||"",(null===a||void 0===a?void 0:a.chs)||"",(null===s||void 0===s?void 0:s.eng)||"",(null===s||void 0===s?void 0:s.chs)||"",l].map(e=>e?'"'.concat(e.toString().replace(/"/g,'""'),'"'):'""').join(",")}),n=['"'.concat(this._getYouTubeVideoTitle(),'",,,,,,,'),'"'.concat(e?"https://www.youtube.com/watch?v=".concat(e):"\u751f\u8bcd\u672c",'",,,,,,,'),",,,,,,,,","Word,Phonetic,Definition,Example1,Translation1,Example2,Translation2,Video Link",...t].join("\n");this._downloadFile("\ufeff"+n,"text/csv;charset=utf-8;","csv")}exportVocabularyAsTxt(){if(0===this.vocabulary.length)return;const e=this._getYouTubeVideoId(),t=[];t.push("\u751f\u8bcd\u672c\u5bfc\u51fa\u6587\u4ef6"),t.push("\u89c6\u9891\u6807\u9898: ".concat(this._getYouTubeVideoTitle())),e&&t.push("\u89c6\u9891\u94fe\u63a5: https://www.youtube.com/watch?v=".concat(e)),t.push("\u5bfc\u51fa\u65f6\u95f4: ".concat((new Date).toLocaleString("zh-CN"))),t.push(""),this.vocabulary.forEach((n,r)=>{t.push("".concat(r+1,". ").concat(n.word));const i=n.phonetic;i&&t.push(" \u97f3\u6807: [".concat(i,"]")),n.definition&&t.push(" \u91ca\u4e49: ".concat(n.definition)),n.examples&&n.examples.length>0&&(t.push(" \u4f8b\u53e5:"),n.examples.slice(0,2).forEach((e,n)=>{t.push(" ".concat(n+1,". ").concat(e.eng)),e.chs&&t.push(" ".concat(e.chs))})),n.timestamp&&e&&t.push(" \u89c6\u9891\u94fe\u63a5: https://www.youtube.com/watch?v=".concat(e,"&t=").concat(Math.floor(n.timestamp/1e3),"s")),t.push("")}),this._downloadFile(t.join("\n"),"text/plain;charset=utf-8;","txt")}exportVocabularyAsMd(){if(0===this.vocabulary.length)return;const e=this._getYouTubeVideoId(),t=e?"https://www.youtube.com/watch?v=".concat(e):"",n=[];n.push("# \u751f\u8bcd\u672c\u5bfc\u51fa\u6587\u4ef6"),n.push("**\u89c6\u9891\u6807\u9898:** ".concat(this._getYouTubeVideoTitle())),t&&n.push("**\u89c6\u9891\u94fe\u63a5:** [".concat(t,"](").concat(t,")")),n.push("**\u5bfc\u51fa\u65f6\u95f4:** ".concat((new Date).toLocaleString("zh-CN"))),n.push(""),this.vocabulary.forEach((t,r)=>{n.push("".concat(r+1,". **").concat(t.word,"**"));const i=t.phonetic;if(i&&n.push(" *\u97f3\u6807 Phonetic:* [".concat(i,"]")),t.definition&&n.push(" *\u91ca\u4e49 Definition:* ".concat(t.definition)),t.examples&&t.examples.length>0&&(n.push(" *\u4f8b\u53e5 Examples:*"),t.examples.slice(0,2).forEach((e,t)=>{n.push(" ".concat(t+1,". ").concat(e.eng)),e.chs&&n.push(" ".concat(e.chs))})),t.timestamp&&e){const r="https://www.youtube.com/watch?v=".concat(e,"&t=").concat(Math.floor(t.timestamp/1e3),"s");n.push(" *\u89c6\u9891\u94fe\u63a5 Video Link:* [\u8df3\u8f6c\u5230\u89c6\u9891\u65f6\u95f4\u70b9](".concat(r,")"))}n.push("")}),this._downloadFile(n.join("\n"),"text/markdown;charset=utf-8;","md")}setupEventListeners(){this.container&&this.videoEl&&(this._eventListenersAttached||(this.container.addEventListener("mouseenter",this.handleContainerMouseEnter),this.container.addEventListener("mouseleave",this.handleContainerMouseLeave),this.videoEl.addEventListener("ended",this.handleVideoEnded),this.videoEl.addEventListener("pause",this.handleVideoPause),this.videoEl.addEventListener("play",this.handleVideoPlay),this._eventListenersAttached=!0))}_removeEventListeners(){this.subtitleScrollContainer&&this.subtitleScrollContainer.removeEventListener("scroll",this.handleSubtitleScroll),this.container&&(this.container.removeEventListener("mouseenter",this.handleContainerMouseEnter),this.container.removeEventListener("mouseleave",this.handleContainerMouseLeave)),this.videoEl&&(this.videoEl.removeEventListener("ended",this.handleVideoEnded),this.videoEl.removeEventListener("pause",this.handleVideoPause),this.videoEl.removeEventListener("play",this.handleVideoPlay)),this._eventListenersAttached=!1}turnOnAutoSub(){this.turnOffAutoSub(),this.videoEl.paused||(this.loopAutoScroll=setInterval(()=>{if(!this.videoEl||"subtitles"!==this.activeTab||0===this.bilingualSubtitles.length)return;const e=1e3*this.videoEl.currentTime;let t=this._binarySearchSubtitle(e);this._lastActiveIndex!==t&&this._setActiveSubtitle(t,!0)},200))}_setActiveSubtitle(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=this._lastActiveIndex;this._lastActiveIndex=e,this._updateSubtitleItemActive(n,!1),this._updateSubtitleItemActive(e,!0),t&&-1!==e&&this._scrollIndexIntoView(e)}_updateSubtitleItemActive(e,t){if(-1===e)return;const n=this._cachedSubtitleItems[e];n&&(n.style.opacity=t?1:.6,n.classList.toggle("active-subtitle",t))}_scrollPendingSubtitleTabIndex(){const e=this._pendingSubtitleTabScrollIndex;return!(-1===e||!this._isSubtitleTabVisible())&&(this._pendingSubtitleTabScrollIndex=-1,this._scrollIndexIntoView(e),!0)}_scrollIndexIntoView(e){let{stabilizeAfterMeasure:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=this.subtitleScrollContainer;if(!n||e<0||e>=this.bilingualSubtitles.length)return;if(!this._isSubtitleTabVisible())return void(this._pendingSubtitleTabScrollIndex=e);t&&(this._pendingCenterIndex=e);const r=this._virtualTopPadding+this._virtualOffsets[e],i=this._virtualHeights[e]||this._estimatedItemHeight,o=r-n.clientHeight/2+i/2;n.scrollTop=Math.max(0,o),this._scheduleVirtualRender(!0)}_binarySearchSubtitle(e){let t=0,n=this.bilingualSubtitles.length-1,r=-1;for(;t<=n;){const i=Math.floor((t+n)/2),o=this.bilingualSubtitles[i],a=i===this.bilingualSubtitles.length-1;if(e>=o.start&&(ee.text()),a=o.match(/ytInitialPlayerResponse\s*=\s*(\{[^]*?\});/);if(!a)return{};const s=JSON.parse(a[1]);return{captionTracks:null===(t=s.captions)||void 0===t||null===(n=t.playerCaptionsTracklistRenderer)||void 0===n?void 0:n.captionTracks,fullDescription:(null===(r=s.videoDetails)||void 0===r?void 0:r.shortDescription)||""}}catch(i){return K.vF.info("Youtube Provider: get captionTracks",i),{}}}(e);qs={videoId:e,promise:i};const o=await i;return null!==(n=o.captionTracks)&&void 0!==n&&n.length||(null===(r=qs)||void 0===r?void 0:r.promise)!==i||(qs=null),o}var Ys=n(6604);const Xs={maxDurationMs:7e3,maxWords:30,sensitivity:2,punctuationBreakBonus:2.5,commaBreakBonus:1,capitalBreakBonus:.5,minBoundaryScore:1.2,minSentenceWords:4,minSentenceDurationMs:500,forceBreakOnPunctuation:!0,forcePunctuationMinWords:6,forcePunctuationMinDurationMs:2e3};class Js{constructor(e,t,n){this.text=e,this.startMs=t,this.endMs=n}get stripped(){return this.text.trim()}get endsWithSentencePunc(){return this.stripped.endsWith(".")||this.stripped.endsWith("?")||this.stripped.endsWith("!")}get endsWithComma(){return this.stripped.endsWith(",")}get startsWithCapital(){const e=this.stripped;return e&&e[0]===e[0].toUpperCase()}get isAllCaps(){const e=this.stripped;return e&&e.length>=2&&e===e.toUpperCase()}get startsWithArrow(){return this.text.startsWith(">>")}}class Qs{constructor(e,t,n,r,i,o){this.gapMs=e,this.prevWord=t,this.nextWord=n,this.isYoutubeBreak=r,this.isSameEvent=i,this.gapIndex=o}}class Zs{constructor(e,t,n,r,i,o,a,s,l,u,c,d){this.mean=e,this.median=t,this.std=n,this.minVal=r,this.maxVal=i,this.p25=o,this.p50=a,this.p75=s,this.p90=l,this.p95=u,this.mad=c,this.robustSigma=d||1.4826*c}}class el{constructor(e,t,n,r){this.words=e||[],this.startMs=t||0,this.endMs=n||0,this.index=r||0}get text(){const e=[];for(const t of this.words){const n=t.text;"\n"!==n&&(e.length?n.startsWith(" ")?e.push(n):e.push(" "+n):e.push(n.trimStart()))}return e.join("").trim()}get durationMs(){return this.endMs-this.startMs}}function tl(e,t){if(!e.length)return 0;const n=(e.length-1)*t/100,r=Math.floor(n),i=Math.ceil(n);return r===i?e[Math.floor(n)]:e[r]*(i-n)+e[i]*(n-r)}function nl(e,t,n,r){if(!e.length||!t.length)return[];const{maxDurationMs:i,maxWords:o,minBoundaryScore:a,minSentenceWords:s,minSentenceDurationMs:l,forceBreakOnPunctuation:u,forcePunctuationMinWords:c,forcePunctuationMinDurationMs:d}=r,h=t.map(e=>function(e,t,n){if(e.gapMs<=0)return-100;const{sensitivity:r,punctuationBreakBonus:i,commaBreakBonus:o,capitalBreakBonus:a,defaultFillValues:s}=n;let l=0;const u=e.gapMs,c=e.prevWord,d=e.nextWord;c.endsWithSentencePunc&&(l+=i),c.endsWithComma&&(l+=o),d.startsWithCapital&&!d.isAllCaps&&(l+=a),c.endsWithSentencePunc&&d.startsWithCapital&&!d.isAllCaps&&(l+=.4*i);let h=0,p=0;t.std>0&&(h=(u-t.mean)/t.std),t.robustSigma>0&&(p=(u-t.median)/t.robustSigma);const f=Math.min(h,p);l+=Math.max(0,f)*r;const m=s&&s.has(u)&&e.isSameEvent?.4:1;return u>=t.p75&&(l+=.5*m),u>=t.p90&&(l+=1*m),u>=t.p95&&(l+=1.5*m),u>=500&&(l+=.3),u>=800&&(l+=.5),u>=1500&&(l+=1),u>=3e3&&(l+=1.5),e.isYoutubeBreak&&(l+=.8),e.isSameEvent?l-=1:l+=.3,l}(e,n,r)),p=[];let f=0,m=-1,g=-1/0;for(let v=0;v=Math.min(l,100)&&A>=s){p.push(v+1),f=v+1,m=-1,g=-1/0;continue}if(u&&r.endsWithSentencePunc&&y.startsWithCapital&&!y.isAllCaps&&A>=Math.max(c,s)&&b>=d&&e.length-(v+1)>=s){p.push(v+1),f=v+1,m=-1,g=-1/0;continue}const x=e[v].endMs-e[f].startMs;n>g&&v-f+1>0&&x>=l&&(g=n,m=v);let w=!1;if((b>=i||A>=o)&&(w=!0),w){const e=m>=0?m:v;p.push(e+1),f=e+1,m=-1,g=-1/0;continue}if(!(A=a){let e=a;t[v].isSameEvent&&(e=1.5*a),r.endsWithSentencePunc&&A=e&&(p.push(v+1),f=v+1,m=-1,g=-1/0)}}return Array.from(new Set(p)).sort((e,t)=>e-t)}function rl(e,t){const n=e.words,r=n.length;if(r<=1)return[e];const i=e.durationMs,o=Math.ceil(i/t),a=Math.ceil(r/o),s=[];for(let l=0;l1&&void 0!==arguments[1]?arguments[1]:{};const n=(0,i.A)((0,i.A)({},Xs),t),{words:r,gaps:o,wordEventIds:a}=function(e){const t=e.events||[],n=[],r=[];let i=0;for(const s of t){const e=s.tStartMs||0,t=e+(s.dDurationMs||0),o=s.segs||[],a=1===s.aAppend;if(o.length)if(a&&1===o.length&&"\n"===o[0].utf8)i++;else{for(let a=0;ae.isSameEvent).length,s=new Set;if(a<10)return s;for(const[l,u]of i){const e=u/a,t=o.has(l)?r.filter(e=>!e.isSameEvent&&e.gapMs===l).length/Math.max(r.filter(e=>!e.isSameEvent).length,1):0;e>=.08&&t<.02&&s.add(l)}return s}(0,o,a),l=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=[];for(const g of e)null!==t&&t.has(g.gapMs)||n.push(g.gapMs);n.sort((e,t)=>e-t);const r=n.length;if(0===r)return new Zs(0,0,0,0,0,0,0,0,0,0,0,0);const i=n.reduce((e,t)=>e+t,0)/r,o=tl(n,50);let a=0;if(r>=2){const e=n.reduce((e,t)=>e+Math.pow(t-i,2),0)/(r-1);a=Math.sqrt(e)}const s=n[0],l=n[r-1],u=tl(n,25),c=o,d=tl(n,75),h=tl(n,90),p=tl(n,95),f=n.map(e=>Math.abs(e-o)).sort((e,t)=>e-t),m=f.length?tl(f,50):0;return new Zs(i,o,a,s,l,u,c,d,h,p,m,1.4826*m)}(o,s.size?s:null),u=(0,i.A)((0,i.A)({},n),{},{defaultFillValues:s.size?s:null});let c=nl(r,o,l,u);c=function(e,t,n){const{minSentenceWords:r,maxDurationMs:i}=n;let o=0;const a=[];for(let s=0;s0?e[n].startMs-e[o-1].endMs:0,r=a.length>=2?a[a.length-2]:0,s=e[n-1].endMs-e[r].startMs;if(t<=3e3&&s<=i){a.pop(),o=a.length?a[a.length-1]:0;continue}}a.push(n),o=n}if(e.length-o=1){const t=a[a.length-1],n=t0?e[t].startMs-e[t-1].endMs:0,r=a.length>=2?a[a.length-2]:0,o=e[e.length-1].endMs-e[r].startMs;n<=3e3&&o<=i&&a.pop()}}return a}(r,c,u);const d=function(e,t,n){const{maxDurationMs:r}=n,i=[],o=[0,...t];o[o.length-1]e&&(a[s].endMs=e)}for(let s=0;s({text:e.text,start:e.startMs,end:e.endMs}))}function ol(){return String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/<[^>]+>/g,"").replace(/\u200B/g,"").trim().replace(/\s+/g," ")}function al(){let{flatEvents:e,usePause:t=!1,timeout:n=1e3,maxWords:r=15,maxDurationMs:i=1e4}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const o={1:new Set(["actually","also","although","and","anyway","as","basically","because","but","eventually","frankly","honestly","hopefully","however","if","instead","it's","just","let's","like","literally","maybe","meanwhile","nevertheless","nonetheless","now","okay","or","otherwise","perhaps","personally","probably","right","since","so","suddenly","that's","then","there's","therefore","though","thus","unless","until","well","while"])},a=[];let s=[],l=0;const u=()=>{s.length>0&&a.push({text:s.map(e=>e.text).join(" ").trim(),start:s[0].start,end:s[s.length-1].end}),s=[],l=0};return e.forEach(e=>{if(!e.text)return;const a=s[s.length-1];if(a){const c=/[.?!\u2026\])]$/.test(a.text),d=/[,]$/.test(a.text),h=e.start-a.end>n,p=e.start-s[0].start>=i,f=(t||d)&&l>=r,m=/^[[(\u266a]/.test(e.text),g=t&&o[1].has(e.text.toLowerCase().split(" ")[0])&&s.length>1;(c||h||p||f||m||g)&&u()}s.push(e),l+=e.text.split(/\s+/).length}),u(),a}function sl(e,t){let{longSentenceThreshold:n=120}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(null===e||void 0===e||!e.length)return[];if(["zh","ja","ko","th","lo","km","my"].some(e=>null===t||void 0===t?void 0:t.startsWith(e))){const t=[];if(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.1;if(0===e.length)return!1;const r=e.filter(e=>e.text.length>t).length;return K.vF.debug("Youtube Provider: quality check",{longLinesCount:r,totalLines:e.length,percentage:r/e.length}),r/e.length>n}(e,5,.5))return e;let n=null;const r=30,i=1e3;for(const o of e)if(o.text){n&&o.start-n.end>i&&(t.push(n),n=null),n?(n.text+=o.text,n.end=o.end):n={text:o.text,start:o.start,end:o.end};(/[\u3002\uff01\uff1f.!?\u2026][\u201d\u2019"'\u300d\u300f\u3011\uff09\u300b\uff09\]]*$/.test(o.text)||n.text.length>=r)&&(t.push(n),n=null)}else n&&(t.push(n),n=null);return n&&t.push(n),t}let r=al({flatEvents:e});const i=[];for(const o of r)if(o.text.length>n){const t=e.filter(e=>e.start>=o.start&&e.start1){K.vF.debug("Youtube Provider: re-processing long sentence with pause",{length:o.text.length,text:o.text.slice(0,50)+"..."});const e=al({flatEvents:t,usePause:!0});i.push(...e)}else i.push(o)}else i.push(o);return r=i,r}function ll(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return function(){let{events:e=[],flatEvents:t=[],fromLang:n="auto",mode:r="rule",longSentenceThreshold:i=120}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const o=e=>(e||[]).map(e=>({start:e.start,end:e.end,text:e.text,translation:e.translation||""}));if("statistical"===r){K.vF.info("Youtube Provider: Sentence break mode: STATISTICAL");const t=function(e){try{return il({events:e}).map(e=>({text:e.text,start:e.start,end:e.end,translation:""}))}catch(t){return K.vF.info("Youtube Provider: Error in algorithmic segmentation",t),null}}(e);if(null!==t&&void 0!==t&&t.length)return o(t);K.vF.info("Youtube Provider: Statistical segmentation returned empty, falling back to rule")}return K.vF.info("Youtube Provider: Sentence break mode: RULE"),o(sl(t,n,{longSentenceThreshold:i}))}({events:e,flatEvents:t,fromLang:n,mode:r.useAlgorithmBreaker,longSentenceThreshold:r.longSentenceThreshold})}function ul(e,t){const n=Array.isArray(e)?e:[];if(!n.some(e=>Number.isInteger(null===e||void 0===e?void 0:e._ei)||Number.isInteger(null===e||void 0===e?void 0:e._alignedEi)))return{cues:n,coveredEnd:n.length?t-1:-1,verifiable:!1};const r=[];let i=0;for(const s of n){var o,a;const e=null!==(o=s._alignedSi)&&void 0!==o?o:s._si,n=null!==(a=s._alignedEi)&&void 0!==a?a:s._ei;if(!Number.isInteger(e)||!Number.isInteger(n)||e!==i||n=t)break;r.push(s),i=n+1}return{cues:r,coveredEnd:i-1,verifiable:!0}}function cl(e,t){return t?(e||[]).map(e=>(0,i.A)((0,i.A)({},e),{},{_isDraftTranslation:!0})):e||[]}function dl(e,t,n,r){const i=[...e||[]].sort((e,t)=>e.start-t.start),o=i.some((e,t)=>{const n=Number(e.start),r=Number(e.end),o=i[t-1];return!String(e.text||"").trim()||!Number.isFinite(n)||!Number.isFinite(r)||r<=n||o&&n(e||[]).map(e=>String((null===e||void 0===e?void 0:e.text)||"")).join("").toLowerCase().replace(/(?:[\0-\/:-@\[-`\{-\xA9\xAB-\xB1\xB4\xB6-\xB8\xBB\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u065F\u066A-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07BF\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u0890-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0965\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09E5\u09F2\u09F3\u09FA\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A65\u0A70\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AE5\u0AF0-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B65\u0B70\u0B78-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0BE5\u0BF3-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5E\u0C5F\u0C62-\u0C65\u0C70-\u0C77\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDB\u0CDF\u0CE2-\u0CE5\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57\u0D62-\u0D65\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DE5\u0DF0-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F1F\u0F34-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u104A-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u1368\u137D-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u17DF\u17EA-\u17EF\u17FA-\u180F\u181A-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19FF\u1A17-\u1A1F\u1A55-\u1A7F\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B4F\u1B5A-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BFF\u1C24-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C8B-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u206F\u2072\u2073\u207A-\u207E\u208A-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A-\u245F\u249C-\u24E9\u2500-\u2775\u2794-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFC\u2CFE\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3008-\u3020\u302A-\u3030\u3036\u3037\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u3191\u3196-\u319F\u31C0-\u31EF\u3200-\u321F\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6F0-\uA716\uA720\uA721\uA789\uA78A\uA7DD-\uA7F0\uA802\uA806\uA80B\uA823-\uA82F\uA836-\uA83F\uA874-\uA881\uA8B4-\uA8CF\uA8DA-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9DA-\uA9DF\uA9E5\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD06\uDD34-\uDD3F\uDD79-\uDD89\uDD8C-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEE0\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDBF\uDDF4-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC57\uDC77\uDC78\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1F\uDD3A-\uDD3F\uDD5A-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE3F\uDE49-\uDE5F\uDE7F\uDEA0-\uDEBF\uDEC8\uDEE5-\uDEEA\uDEF0-\uDEFF\uDF36-\uDF3F\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD24-\uDD2F\uDD3A-\uDD3F\uDD66-\uDD6E\uDD86-\uDE5F\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEC1\uDEC8-\uDEFF\uDF28-\uDF2F\uDF46-\uDF50\uDF55-\uDF6F\uDF82-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC51\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDD02\uDD27-\uDD35\uDD40-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDCF\uDDDB\uDDDD-\uDDE0\uDDF5-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDEEF\uDEFA-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDF7F\uDF8A\uDF8C\uDF8D\uDF8F\uDFB6\uDFB8-\uDFD0\uDFD2\uDFD4-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC4F\uDC5A-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEBF\uDECA-\uDECF\uDEE4-\uDEFF\uDF1B-\uDF2F\uDF3C-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFBF\uDFE1-\uDFEF\uDFFA-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC4F\uDC6D-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDD9F\uDDAA-\uDDAF\uDDDC-\uDDDF\uDDEA-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDF4F\uDF5A-\uDFAF\uDFB1-\uDFBF\uDFD5-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD812-\uD817\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD832\uD836\uD83D\uD83F\uD87C\uD87D\uD87F\uD88E-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDC5F]|\uD810[\uDFFB-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD818[\uDC00-\uDCFF\uDD1E-\uDD2F\uDD3A-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6F\uDEBF\uDECA-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDD3F\uDD6D-\uDD6F\uDD7A-\uDE3F\uDE97-\uDE9F\uDEB9\uDEBA\uDED4-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFF1\uDFF7-\uDFFF]|\uD823[\uDCD6-\uDCFE\uDD1F-\uDD7F\uDDF3-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD833[\uDC00-\uDCEF\uDCFA-\uDFFF]|\uD834[\uDC00-\uDEBF\uDED4-\uDEDF\uDEF4-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDEEF\uDEFA-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDCEF\uDCFA-\uDDCF\uDDEE\uDDEF\uDDFB-\uDEBF\uDEDF\uDEE3\uDEE6\uDEEE\uDEEF\uDEF5-\uDEFD\uDF00-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD0-\uDCFF\uDD44-\uDD4A\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCAC\uDCB0\uDCB5-\uDD00\uDD2E\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDCFF\uDD0D-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEAE\uDEAF]|\uD87A[\uDFE1-\uDFEF]|\uD87B[\uDE5E-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD88D[\uDC7A-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,""),s=a(i)!==a(t);return o||s?(K.vF.info("Youtube Provider: AI result validation failed, falling back"),r(t,n).sort((e,t)=>e.start-t.start)):i}async function hl(e){let{videoId:t,fromLang:n,toLang:r,chunkEvents:o,segApiSetting:a,apiSubtitle:s,docInfo:l,formatSubtitles:u,clearSegmentTranslation:c,onSubtitleChunk:d,signal:h,setting:p}=e;const f=(o||[]).filter(e=>null===e||void 0===e?void 0:e.text);if(!f.length)return[];try{const e="".concat(f[0].start," --\x3e ").concat(f[f.length-1].end);K.vF.debug("Youtube Provider: aiSegment events",{videoId:t,chunkSign:e,fromLang:n,toLang:r,segmentEvents:f});const o=(0,Da.a5)(a,null===p||void 0===p?void 0:p.prompts,p),y=await s({videoId:t,chunkSign:e,fromLang:n,toLang:r,events:f,apiSetting:o,docInfo:l,signal:h,onSubtitleChunk:e=>{let{subtitles:t}=e;if(null===t||void 0===t||!t.length||!d)return;const n=c?t.map(e=>(0,i.A)((0,i.A)({},e),{},{_isDraftTranslation:!0})):t;d({subtitles:n})}});if(K.vF.debug("Youtube Provider: aiSegment subtitles",y),Array.isArray(y)){const e=ul(cl(y,c),f.length);if(!e.verifiable||e.coveredEnd===f.length-1)return dl(e.cues,f,n,u);const a=e.coveredEnd+1,d=f.slice(a);let p={cues:[],coveredEnd:-1,verifiable:!0};try{const e="".concat(d[0].start," --\x3e ").concat(d[d.length-1].end);p=ul(cl(await s({videoId:t,chunkSign:e,fromLang:n,toLang:r,events:d,apiSetting:o,docInfo:l,signal:h}),c),d.length)}catch(v){K.vF.info("Youtube Provider: ai tail retry",v)}const b=(m=p.cues,g=a,(m||[]).map(e=>(0,i.A)((0,i.A)({},e),{},{_si:Number.isInteger(e._si)?e._si+g:e._si,_ei:Number.isInteger(e._ei)?e._ei+g:e._ei,_alignedSi:Number.isInteger(e._alignedSi)?e._alignedSi+g:e._alignedSi,_alignedEi:Number.isInteger(e._alignedEi)?e._alignedEi+g:e._alignedEi}))),A=p.verifiable?a+p.coveredEnd+1:f.length,x=f.slice(A),w=x.length?u(x,n):[];return dl([...e.cues,...b,...w],f,n,u)}}catch(y){K.vF.info("Youtube Provider: ai segmentation",y)}var m,g;return u(f,n).sort((e,t)=>e.start-t.start)}async function pl(e){let{videoId:t,events:n,flatEvents:r,fromLang:i,setting:o,processingVersion:a,isStaleProcessing:s,showNotification:l,i18n:u,apiSubtitle:c,docInfo:d,builtinSegment:h,formatSubtitles:p,onAppendSubtitles:f,getCurrentVideoId:m,signal:g}=e;const{segSlug:v,transApis:y,chunkLength:b,toLang:A}=o,x=null===y||void 0===y?void 0:y.find(e=>e.apiSlug===v),w=v&&"-"!==v&&x,k=o.forceSubtitleRetranslate&&(null===x||void 0===x?void 0:x.apiSlug)!==o.apiSlug;if(w){if(s(a))return[[],0];K.vF.info("Youtube Provider: Starting AI segmentation..."),l(u("ai_processing_pls_wait"));const e=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3;if(!e||0===e.length)return[];const n=[];let r=[],i=0;const o=Math.max(1,Number(t)||1e3),a=Math.floor(.8*o),s=()=>{r.length&&(n.push(r),r=[],i=0)};for(let l=0;lo&&s(),r.push(t),i+=n,l!==e.length-1&&i>=a){const n=/[.?!\u2026\])]$/.test(t.text),r=e[l+1].start-t.end;(n||r>1e3)&&s()}}return s(),n}(r,b);if(0===e.length)return K.vF.info("Youtube Provider: AI no chunks, falling back to built-in"),[h(n,r,i,o),100];const v=e[0],y=Math.floor(100/e.length),w=await hl({videoId:t,chunkEvents:v,fromLang:i,toLang:A,segApiSetting:x,apiSubtitle:c,docInfo:d,formatSubtitles:p,clearSegmentTranslation:k,signal:g,setting:o,onSubtitleChunk:e=>{let{subtitles:n}=e;null!==n&&void 0!==n&&n.length&&!s(a)&&t===m()&&f({subtitles:n,progressed:y,chunkNum:1})}});if(s(a))return[[],0];if(null===w||void 0===w||!w.length)return K.vF.info("Youtube Provider: AI failed, falling back to built-in"),[h(n,r,i,o),100];if(K.vF.info("Youtube Provider: Sentence break mode: AI"),1===e.length)return[w,100];const S=function(e){let{chunks:t,firstDoneIndex:n=-1,videoId:r,fromLang:i,toLang:o,segApiSetting:a,setting:s,processingVersion:l,isStaleProcessing:u,apiSubtitle:c,docInfo:d,formatSubtitles:h,clearSegmentTranslation:p,onAppendSubtitles:f,getCurrentVideoId:m,signal:g}=e;const v=t.map(()=>"pending");n>=0&&(v[n]="done");let y=!1,b=null;const A=()=>{const e=v.filter(e=>"done"===e||"failed"===e).length;return Math.floor(100*e/t.length)},x=(e,t,n)=>{const r=e[0],i=e[e.length-1];return!(!r||!i)&&(i.end>=t&&r.start<=n)},w=()=>{if(!b)return-1;const{currentTimeMs:e,endTimeMs:n}=b;return t.findIndex((t,r)=>"pending"===v[r]&&x(t,e,n))},k=async e=>{var n,y;if(u(l))return void K.vF.info("Youtube Provider: Skip stale chunk processing.");const b=t[e],x=e+1;v[e]="processing",K.vF.debug("Youtube Provider: Processing subtitle chunk ".concat(x,"/").concat(t.length,": ").concat(null===(n=b[0])||void 0===n?void 0:n.start," --\x3e ").concat(null===(y=b[b.length-1])||void 0===y?void 0:y.start));let w=[];try{const e=await hl({videoId:r,chunkEvents:b,fromLang:i,toLang:o,segApiSetting:a,apiSubtitle:c,docInfo:d,formatSubtitles:h,clearSegmentTranslation:p,signal:g,setting:s,onSubtitleChunk:e=>{let{subtitles:t}=e;null!==t&&void 0!==t&&t.length&&r===m()&&!u(l)&&f({subtitles:t,progressed:A(),chunkNum:x})}});if(u(l))return;(null===e||void 0===e?void 0:e.length)>0?w=e:(K.vF.debug("Youtube Provider: AI segmentation for chunk ".concat(x," returned no data.")),w=h(b,i))}catch(k){v[e]="failed",w=h(b,i)}if(r!==m()||u(l))K.vF.info("Youtube Provider: videoId changed or track replaced!",r,m());else if("failed"!==v[e]&&(v[e]="done"),w.length>0){const e=A();K.vF.debug("Youtube Provider: Appending ".concat(w.length," subtitles from chunk ").concat(x," (").concat(e,"%).")),f({subtitles:w,progressed:e,chunkNum:x})}else K.vF.debug("Youtube Provider: Chunk ".concat(x," no subtitles."))},S=async()=>{if(!y){y=!0;try{for(;;){if(null!==g&&void 0!==g&&g.aborted||u(l))return;const e=w();if(-1===e)return;await k(e)}}finally{y=!1}}};return{scheduleUntil(e){return b={currentTimeMs:e,endTimeMs:e+1e3*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:90)},S()}}}({chunks:e,firstDoneIndex:0,videoId:t,fromLang:i,toLang:A,segApiSetting:x,setting:o,processingVersion:a,isStaleProcessing:s,apiSubtitle:c,docInfo:d,formatSubtitles:p,clearSegmentTranslation:k,onAppendSubtitles:f,getCurrentVideoId:m,signal:g});return[w,Math.floor(100/e.length),S]}return[h(n,r,i,o),100]}var fl=n(8661),ml=n(6811),gl=n(457),vl=n(5449),yl=n(5089),bl=(0,$t.A)("hostElement"),Al=(0,$t.A)("reactRoot"),xl=(0,$t.A)("isVisible"),wl=(0,$t.A)("isProcessing"),kl=(0,$t.A)("mount");class Sl{constructor(e){let{id:t,className:n="",reactComponent:r,props:i={},rootElement:o=document.body}=e;if(Object.defineProperty(this,kl,{value:El}),Object.defineProperty(this,bl,{writable:!0,value:null}),Object.defineProperty(this,Al,{writable:!0,value:null}),Object.defineProperty(this,xl,{writable:!0,value:!1}),Object.defineProperty(this,wl,{writable:!0,value:!1}),!t||!r)throw new Error("ID and a React Component must be provided.");this._id=t,this._className=n,this._ReactComponent=r,this._props=i,this._rootElement=o}get isVisible(){return(0,qt.A)(this,xl)[xl]}show(e){if(!(0,qt.A)(this,xl)[xl]&&!(0,qt.A)(this,wl)[wl]){if(!(0,qt.A)(this,bl)[bl]){(0,qt.A)(this,wl)[wl]=!0;try{(0,qt.A)(this,kl)[kl](e||this._props)}catch(t){return K.vF.warn('Failed to mount component with id "'.concat(this._id,'":'),t),void((0,qt.A)(this,wl)[wl]=!1)}finally{(0,qt.A)(this,wl)[wl]=!1}}(0,qt.A)(this,bl)[bl].style.display="",(0,qt.A)(this,xl)[xl]=!0}}hide(){(0,qt.A)(this,xl)[xl]&&(0,qt.A)(this,bl)[bl]&&((0,qt.A)(this,bl)[bl].style.display="none",(0,qt.A)(this,xl)[xl]=!1)}destroy(){(0,qt.A)(this,bl)[bl]&&((0,qt.A)(this,wl)[wl]=!0,(0,qt.A)(this,Al)[Al]&&(0,qt.A)(this,Al)[Al].unmount(),(0,qt.A)(this,bl)[bl].remove(),(0,qt.A)(this,bl)[bl]=null,(0,qt.A)(this,Al)[Al]=null,(0,qt.A)(this,xl)[xl]=!1,(0,qt.A)(this,wl)[wl]=!1,K.vF.info('Component with id "'.concat(this._id,'" has been destroyed.')))}toggle(e){(0,qt.A)(this,xl)[xl]?this.hide():this.show(e||this._props)}updateProps(e){if((0,qt.A)(this,Al)[Al]&&(0,qt.A)(this,bl)[bl]){const t=this._ReactComponent,n=(0,vl.A)({key:this._id,prepend:!0});(0,qt.A)(this,Al)[Al].render((0,yl.jsx)(fl.StrictMode,{children:(0,yl.jsx)(gl.C,{value:n,children:(0,yl.jsx)(t,(0,i.A)({},e))})}))}}}function El(e){const t=document.createElement("div");t.id=this._id,this._className&&(t.className=this._className),this._rootElement.appendChild(t),(0,qt.A)(this,bl)[bl]=t;const n=(0,vl.A)({key:this._id,prepend:!0}),r=(0,i.A)((0,i.A)({},e),{},{onClose:this.hide.bind(this)}),o=this._ReactComponent;(0,qt.A)(this,Al)[Al]=ml.createRoot(t),(0,qt.A)(this,Al)[Al].render((0,yl.jsx)(fl.StrictMode,{children:(0,yl.jsx)(gl.C,{value:n,children:(0,yl.jsx)(o,(0,i.A)({},r))})}))}function Cl(e,t){const n=document.createElementNS("http://www.w3.org/2000/svg",e);for(const r in t)n.setAttribute(r,t[r]);return n}function _l(){const e=Cl("svg",{viewBox:"-20 0 100 100",style:"display: inline-block; width: 1em; height: 1em; vertical-align: middle;"});return[{cx:"6",begin:"0.1",values:"0 15 ; 0 -15; 0 15"},{cx:"30",begin:"0.2",values:"0 10 ; 0 -10; 0 10"},{cx:"54",begin:"0.3",values:"0 5 ; 0 -5; 0 5"}].forEach(t=>{const n=Cl("circle",{fill:"#209CEE",stroke:"none",cx:t.cx,cy:"50",r:"6"}),r=Cl("animateTransform",{attributeName:"transform",dur:"1s",type:"translate",values:t.values,repeatCount:"indefinite",begin:t.begin});n.appendChild(r),e.appendChild(n)}),e}function Tl(){let{width:e="24",height:t="24",viewBox:n="-5 -5 40 40",isSelected:r=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const i=Cl("svg",{xmlns:"http://www.w3.org/2000/svg",width:e,height:t,viewBox:n,version:"1.1"}),o="#209CEE",a="#E9F5FD",s=r?o:a,l=Cl("path",{d:"M0 0 C10.56 0 21.12 0 32 0 C32 10.56 32 21.12 32 32 C21.44 32 10.88 32 0 32 C0 21.44 0 10.88 0 0 Z ",fill:r?a:o,transform:"translate(0,0)"}),u=Cl("path",{d:"M0 0 C0.66 0 1.32 0 2 0 C2 2.97 2 5.94 2 9 C2.969375 8.2575 3.93875 7.515 4.9375 6.75 C5.48277344 6.33234375 6.02804688 5.9146875 6.58984375 5.484375 C8.39053593 3.83283924 8.39053593 3.83283924 9 0 C13.95 0 18.9 0 24 0 C24 0.99 24 1.98 24 3 C22.68 3 21.36 3 20 3 C20 9.27 20 15.54 20 22 C19.01 22 18.02 22 17 22 C17 15.73 17 9.46 17 3 C15.35 3 13.7 3 12 3 C11.731875 3.598125 11.46375 4.19625 11.1875 4.8125 C10.01506533 6.97224808 8.80630718 8.35790256 7 10 C8.01790655 12.27071461 8.77442829 13.80784632 10.6875 15.4375 C11.120625 15.953125 11.55375 16.46875 12 17 C11.6875 19.6875 11.6875 19.6875 11 22 C10.34 22 9.68 22 9 22 C8.773125 21.236875 8.54625 20.47375 8.3125 19.6875 C6.73268318 16.45263699 5.16717283 15.58358642 2 14 C2 16.64 2 19.28 2 22 C1.34 22 0.68 22 0 22 C0 14.74 0 7.48 0 0 Z ",fill:s,transform:"translate(4,5)"});return i.appendChild(l),i.appendChild(u),i}function Dl(e){let{children:t}=e;return(0,yl.jsx)("div",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:t})}function Pl(e){let{children:t,onClick:n,disabled:r=!1}=e;const[i,o]=(0,fl.useState)(!1);return(0,yl.jsx)("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"center",padding:"0px 8px",opacity:i?1:.8,background:"rgba(255, 255, 255, ".concat(i?.1:0,")"),cursor:r?"default":"pointer",transition:"background 0.2s, opacity 0.2s",borderRadius:5},onMouseEnter:()=>o(!0),onMouseLeave:()=>o(!1),onClick:n,children:t})}function Il(e){let{label:t,name:n,value:r,onChange:i,disabled:o}=e;const a=(0,fl.useCallback)(()=>{o||i({name:n,value:!r})},[o,i,n,r]);return(0,yl.jsxs)(Pl,{onClick:a,disabled:o,children:[(0,yl.jsx)(Dl,{children:t}),(0,yl.jsx)("div",{style:{width:40,height:24,borderRadius:12,background:r?"rgba(32,156,238,.8)":"rgba(255,255,255,.3)",position:"relative"},children:(0,yl.jsx)("div",{style:{width:20,height:20,borderRadius:10,position:"absolute",left:2,top:2,background:"rgba(255,255,255,.9)",transform:"translateX(".concat(r?16:0,"px)")}})})]})}function Fl(e){let{label:t,name:n,value:r,options:i,onChange:o,disabled:a}=e;const[s,l]=(0,fl.useState)(!1),u=(0,fl.useMemo)(()=>i.find(e=>e.value===r)||i[0],[i,r]),c=(0,fl.useCallback)(()=>{a||l(e=>!e)},[a]),d=(0,fl.useCallback)(e=>{o({name:n,value:e}),l(!1)},[o,n]);return(0,yl.jsxs)("div",{style:{position:"relative"},children:[(0,yl.jsxs)(Pl,{onClick:c,disabled:a,children:[(0,yl.jsx)(Dl,{children:t}),(0,yl.jsx)("div",{style:{fontSize:12,opacity:.8,maxWidth:130,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:(null===u||void 0===u?void 0:u.label)||""})]}),s&&(0,yl.jsx)("div",{style:{position:"absolute",right:0,top:"100%",background:"rgba(0,0,0,.8)",borderRadius:5,minWidth:250,maxHeight:200,overflow:"auto",zIndex:1e3,marginTop:4},children:i.map(e=>(0,yl.jsx)("div",{onClick:()=>d(e.value),style:{padding:"8px 12px",cursor:"pointer",background:e.value===r?"rgba(32,156,238,.3)":"transparent",opacity:e.value===r?1:.8,transition:"all 0.2s"},onMouseEnter:e=>{e.currentTarget.style.background="rgba(255,255,255,.1)"},onMouseLeave:t=>{t.currentTarget.style.background=e.value===r?"rgba(32,156,238,.3)":"transparent"},children:e.label},e.value))})]})}function Ll(e){let{label:t,onClick:n,disabled:r}=e;const i=(0,fl.useCallback)(()=>{r||n()},[r,n]);return(0,yl.jsx)(Pl,{onClick:i,disabled:r,children:(0,yl.jsx)(Dl,{children:t})})}function Ol(e){let{i18n:t,formData:n,progressed:r=0,updateSetting:i,downloadSubtitle:a,transApis:s}=e;const l=(0,fl.useCallback)(e=>{let{name:t,value:n}=e;i({name:t,value:n})},[i]),u=(0,fl.useMemo)(()=>(s||[]).filter(e=>!e.isDisabled),[s]),c=(0,fl.useMemo)(()=>u.filter(e=>o.sNP.ai.has(e.apiType)),[u]),d=(0,fl.useMemo)(()=>{const e=[{value:"-",label:t("disable")||"\u7981\u7528"}];return c.forEach(t=>{e.push({value:t.apiSlug,label:t.apiName})}),e},[c,t]),h=(0,fl.useMemo)(()=>{const e=[{value:"-",label:t("disable")||"\u7981\u7528"}];return c.forEach(t=>{e.push({value:t.apiSlug,label:t.apiName})}),e},[c,t]),p=(0,fl.useMemo)(()=>t(0===r?"waiting_subtitles":100===r?"download_subtitles":"processing_subtitles"),[r,t]),{segSlug:f,skipAd:m,isBilingual:g,blurTranslation:v,autoTranslate:y,aiContextSlug:b}=n;return(0,yl.jsxs)("div",{style:{position:"absolute",left:0,bottom:100,background:"rgba(0,0,0,.6)",width:250,lineHeight:"40px",fontSize:16,padding:8,borderRadius:5},children:[(0,yl.jsx)(Il,{onChange:l,name:"autoTranslate",value:y,label:t("enable_subtitle_translate")}),(0,yl.jsx)(Fl,{onChange:l,name:"segSlug",value:f||"-",options:d,label:t("ai_segmentation"),disabled:d.length<=1}),(0,yl.jsx)(Fl,{onChange:l,name:"aiContextSlug",value:b||"-",options:h,label:t("ai_enhanced_context"),disabled:h.length<=1}),(0,yl.jsx)(Il,{onChange:l,name:"isBilingual",value:g,label:t("is_bilingual_view")}),(0,yl.jsx)(Il,{onChange:l,name:"blurTranslation",value:v,label:t("is_blur_translation")}),(0,yl.jsx)(Il,{onChange:l,name:"skipAd",value:m,label:t("is_skip_ad")}),(0,yl.jsx)(Ll,{label:"".concat(p," [").concat(r,"%] "),onClick:a})]})}const Nl=".ytp-right-controls",zl="#ytp-caption-window-container",jl="button.ytp-subtitles-button";function Rl(e,t){const n=document.querySelector(e);if(n)return void t(n);new MutationObserver((n,r)=>{const i=document.querySelector(e);i&&(r.disconnect(),t(i))}).observe(document.body,{childList:!0,subtree:!0})}var Ml=(0,$t.A)("getSetting"),Bl=(0,$t.A)("getMenuProps"),Wl=(0,$t.A)("getVideoEl"),Ul=(0,$t.A)("toggleButton"),Hl=(0,$t.A)("isMenuShow"),Vl=(0,$t.A)("menuManager"),Gl=(0,$t.A)("notificationEl"),Kl=(0,$t.A)("notificationTimeout");class ql{constructor(e){let{getSetting:t,getMenuProps:n,getVideoEl:r}=e;Object.defineProperty(this,Ml,{writable:!0,value:void 0}),Object.defineProperty(this,Bl,{writable:!0,value:void 0}),Object.defineProperty(this,Wl,{writable:!0,value:void 0}),Object.defineProperty(this,Ul,{writable:!0,value:null}),Object.defineProperty(this,Hl,{writable:!0,value:!1}),Object.defineProperty(this,Vl,{writable:!0,value:null}),Object.defineProperty(this,Gl,{writable:!0,value:null}),Object.defineProperty(this,Kl,{writable:!0,value:null}),(0,qt.A)(this,Ml)[Ml]=t,(0,qt.A)(this,Bl)[Bl]=n,(0,qt.A)(this,Wl)[Wl]=r}updateMenuProps(){(0,qt.A)(this,Vl)[Vl]&&(0,qt.A)(this,Hl)[Hl]&&(0,qt.A)(this,Vl)[Vl].updateProps((0,qt.A)(this,Bl)[Bl]())}injectToggleButton(e){if(!0===(0,qt.A)(this,Ml)[Ml]().hideSubtitleButton||!e||e.querySelector(".kiss-subtitle-button"))return;const t=document.createElement("div");t.className="notranslate kiss-subtitle-controls",Object.assign(t.style,{height:"100%",position:"relative"});const n=document.createElement("button");n.className="ytp-button kiss-subtitle-button",n.title=o.C39,n.appendChild(Tl()),t.appendChild(n),(0,qt.A)(this,Vl)[Vl]=new Sl({id:"kiss-subtitle-menus",className:"notranslate",reactComponent:Ol,rootElement:t,props:(0,qt.A)(this,Bl)[Bl]()}),n.onclick=()=>{var e,t;(0,qt.A)(this,Hl)[Hl]?((0,qt.A)(this,Hl)[Hl]=!1,null===(e=(0,qt.A)(this,Ul)[Ul])||void 0===e||e.replaceChildren(Tl()),(0,qt.A)(this,Vl)[Vl].hide()):((0,qt.A)(this,Hl)[Hl]=!0,null===(t=(0,qt.A)(this,Ul)[Ul])||void 0===t||t.replaceChildren(Tl({isSelected:!0})),(0,qt.A)(this,Vl)[Vl].show(),this.updateMenuProps())},(0,qt.A)(this,Ul)[Ul]=n,null===e||void 0===e||e.prepend(t)}removeToggleButton(){var e,t;(0,qt.A)(this,Hl)[Hl]=!1,null===(e=(0,qt.A)(this,Vl)[Vl])||void 0===e||e.destroy(),(0,qt.A)(this,Vl)[Vl]=null;const n=(null===(t=(0,qt.A)(this,Ul)[Ul])||void 0===t?void 0:t.closest(".kiss-subtitle-controls"))||document.querySelector(".kiss-subtitle-controls");null===n||void 0===n||n.remove(),(0,qt.A)(this,Ul)[Ul]=null}hideYtCaption(){const e=document.querySelector(zl);e&&(e.style.top="-10000px")}showYtCaption(){const e=document.querySelector(zl);e&&(e.style.top="0")}createNotificationElement(){var e;const t=document.createElement("div");t.className="kiss-notification",Object.assign(t.style,{position:"absolute",top:"16px",left:"50%",transform:"translateX(-50%)",background:"rgba(0, 0, 0, 0.5)",color:"#fff",padding:"8px 12px",borderRadius:"8px",zIndex:"2147483647",opacity:"0",transition:"opacity 0.3s ease-in-out",pointerEvents:"none",fontSize:"16px",lineHeight:"1.4",width:"auto",maxWidth:"min(360px, calc(100% - 32px))",textAlign:"left",boxSizing:"border-box",boxShadow:"0 2px 8px rgba(0,0,0,0.25)"});const n=(0,qt.A)(this,Wl)[Wl](),r=null===n||void 0===n||null===(e=n.parentElement)||void 0===e?void 0:e.parentElement;r&&(r.appendChild(t),(0,qt.A)(this,Gl)[Gl]=t)}hideNotification(){clearTimeout((0,qt.A)(this,Kl)[Kl]),(0,qt.A)(this,Gl)[Gl]&&((0,qt.A)(this,Gl)[Gl].style.opacity="0")}showNotification(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:2e3;!1!==(0,qt.A)(this,Ml)[Ml]().showLoadNotification?((0,qt.A)(this,Gl)[Gl]||this.createNotificationElement(),(0,qt.A)(this,Gl)[Gl]&&((0,qt.A)(this,Gl)[Gl].textContent=e,(0,qt.A)(this,Gl)[Gl].style.opacity="1",clearTimeout((0,qt.A)(this,Kl)[Kl]),(0,qt.A)(this,Kl)[Kl]=setTimeout(()=>{this.hideNotification()},t))):this.hideNotification()}}var $l=(0,$t.A)("setting"),Yl=(0,$t.A)("defaultAutoTranslate"),Xl=(0,$t.A)("subtitles"),Jl=(0,$t.A)("events"),Ql=(0,$t.A)("rawSubtitleEvents"),Zl=(0,$t.A)("flatEvents"),eu=(0,$t.A)("progressedNum"),tu=(0,$t.A)("fromLang"),nu=(0,$t.A)("docInfo"),ru=(0,$t.A)("fullDescription"),iu=(0,$t.A)("processingId"),ou=(0,$t.A)("processingVersion"),au=(0,$t.A)("activeTrackKey"),su=(0,$t.A)("aiChunkScheduler"),lu=(0,$t.A)("subtitleAbortController"),uu=(0,$t.A)("managerInstance"),cu=(0,$t.A)("i18n"),du=(0,$t.A)("playerUi"),hu=(0,$t.A)("ytSubtitleStateObserver"),pu=(0,$t.A)("subtitleListManager"),fu=(0,$t.A)("videoId"),mu=(0,$t.A)("videoEl"),gu=(0,$t.A)("progressed"),vu=(0,$t.A)("observeYtSubtitleState"),yu=(0,$t.A)("syncYtSubtitleState"),bu=(0,$t.A)("isYtSubtitleEnabled"),Au=(0,$t.A)("moAds"),xu=(0,$t.A)("toggleTranslation"),wu=(0,$t.A)("translateCachedEvents"),ku=(0,$t.A)("getMenuProps"),Su=(0,$t.A)("isStaleProcessing"),Eu=(0,$t.A)("handleInterceptedRequest"),Cu=(0,$t.A)("processEvents"),_u=(0,$t.A)("upsertProcessedSubtitles"),Tu=(0,$t.A)("appendProcessedSubtitles"),Du=(0,$t.A)("reProcessEvents"),Pu=(0,$t.A)("enrichDocInfoWithAI"),Iu=(0,$t.A)("reProcessEventsWithContext"),Fu=(0,$t.A)("scheduleAiChunks"),Lu=(0,$t.A)("startManager"),Ou=(0,$t.A)("destroyManager");class Nu{constructor(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.defineProperty(this,Ou,{value:rc}),Object.defineProperty(this,Lu,{value:nc}),Object.defineProperty(this,Fu,{value:tc}),Object.defineProperty(this,Iu,{value:ec}),Object.defineProperty(this,Pu,{value:Zu}),Object.defineProperty(this,Du,{value:Qu}),Object.defineProperty(this,Tu,{value:Ju}),Object.defineProperty(this,_u,{value:Xu}),Object.defineProperty(this,Cu,{value:Yu}),Object.defineProperty(this,Eu,{value:$u}),Object.defineProperty(this,Su,{value:qu}),Object.defineProperty(this,ku,{value:Ku}),Object.defineProperty(this,wu,{value:Gu}),Object.defineProperty(this,xu,{value:Vu}),Object.defineProperty(this,Au,{value:Hu}),Object.defineProperty(this,bu,{value:Uu}),Object.defineProperty(this,yu,{value:Wu}),Object.defineProperty(this,vu,{value:Bu}),Object.defineProperty(this,gu,{get:Mu,set:Ru}),Object.defineProperty(this,mu,{get:ju,set:void 0}),Object.defineProperty(this,fu,{get:zu,set:void 0}),Object.defineProperty(this,$l,{writable:!0,value:{}}),Object.defineProperty(this,Yl,{writable:!0,value:!0}),Object.defineProperty(this,Xl,{writable:!0,value:[]}),Object.defineProperty(this,Jl,{writable:!0,value:[]}),Object.defineProperty(this,Ql,{writable:!0,value:[]}),Object.defineProperty(this,Zl,{writable:!0,value:[]}),Object.defineProperty(this,eu,{writable:!0,value:0}),Object.defineProperty(this,tu,{writable:!0,value:"auto"}),Object.defineProperty(this,nu,{writable:!0,value:{}}),Object.defineProperty(this,ru,{writable:!0,value:""}),Object.defineProperty(this,iu,{writable:!0,value:null}),Object.defineProperty(this,ou,{writable:!0,value:0}),Object.defineProperty(this,au,{writable:!0,value:null}),Object.defineProperty(this,su,{writable:!0,value:null}),Object.defineProperty(this,lu,{writable:!0,value:null}),Object.defineProperty(this,uu,{writable:!0,value:null}),Object.defineProperty(this,cu,{writable:!0,value:()=>""}),Object.defineProperty(this,du,{writable:!0,value:null}),Object.defineProperty(this,hu,{writable:!0,value:null}),Object.defineProperty(this,pu,{writable:!0,value:null}),(0,qt.A)(this,Yl)[Yl]=null===(e=t.autoTranslate)||void 0===e||e,(0,qt.A)(this,$l)[$l]=(0,i.A)((0,i.A)({},t),{},{autoTranslate:(0,qt.A)(this,Yl)[Yl]}),(0,qt.A)(this,cu)[cu]=(0,o.BM1)(t.uiLang||"zh"),(0,qt.A)(this,du)[du]=new ql({getSetting:()=>(0,qt.A)(this,$l)[$l],getMenuProps:()=>(0,qt.A)(this,ku)[ku](),getVideoEl:()=>(0,qt.A)(this,mu)[mu]})}initialize(){window.addEventListener("message",e=>{var t;if((null===(t=e.data)||void 0===t?void 0:t.type)===o.km2){const{url:t,response:n}=e.data;t&&n&&(0,qt.A)(this,Eu)[Eu](t,n)}}),window.addEventListener("yt-navigate-finish",()=>{var e;K.vF.debug("Youtube Provider: yt-navigate-finish",(0,qt.A)(this,fu)[fu]),(0,qt.A)(this,Ou)[Ou](),ct((0,qt.A)(this,$l)[$l].apiSlug),(0,qt.A)(this,Xl)[Xl]=[],(0,qt.A)(this,Jl)[Jl]=[],(0,qt.A)(this,Ql)[Ql]=[],(0,qt.A)(this,Zl)[Zl]=[],(0,qt.A)(this,gu)[gu]=0,(0,qt.A)(this,tu)[tu]="auto",(0,qt.A)(this,nu)[nu]={},(0,qt.A)(this,ru)[ru]="",(0,qt.A)(this,iu)[iu]=null,(0,qt.A)(this,ou)[ou]+=1,(0,qt.A)(this,au)[au]=null,(0,qt.A)(this,su)[su]=null,null===(e=(0,qt.A)(this,lu)[lu])||void 0===e||e.abort(),(0,qt.A)(this,lu)[lu]=null,(0,qt.A)(this,$l)[$l].autoTranslate=(0,qt.A)(this,Yl)[Yl],(0,qt.A)(this,du)[du].updateMenuProps()}),Rl(Nl,e=>{const t=e.querySelector(jl);t&&(0,qt.A)(this,vu)[vu](t),(0,qt.A)(this,du)[du].injectToggleButton(e)}),Rl(".video-ads",e=>{(0,qt.A)(this,Au)[Au](e)})}updateSetting(e){let{name:t,value:n}=e;var r;(0,qt.A)(this,$l)[$l][t]!==n&&(K.vF.debug("Youtube Provider: update setting",t,n),(0,qt.A)(this,$l)[$l][t]=n,(0,qt.A)(this,du)[du].updateMenuProps(),"isBilingual"===t||"blurTranslation"===t||"displayOrder"===t?null===(r=(0,qt.A)(this,uu)[uu])||void 0===r||r.updateSetting({[t]:n}):"segSlug"===t||"forceSubtitleRetranslate"===t?(0,qt.A)(this,Du)[Du]():"autoTranslate"===t?(0,qt.A)(this,xu)[xu]():"aiContextSlug"===t?(0,qt.A)(this,Iu)[Iu]():"showLoadNotification"===t&&!1===n?(0,qt.A)(this,du)[du].hideNotification():"hideSubtitleButton"===t&&(!0===n?(0,qt.A)(this,du)[du].removeToggleButton():(0,qt.A)(this,du)[du].injectToggleButton(document.querySelector(Nl))))}downloadSubtitle(){if((0,qt.A)(this,Xl)[Xl].length)try{const e=pt((0,qt.A)(this,Xl)[Xl]);(0,l.Qv)(e,"kiss-subtitles-".concat((0,qt.A)(this,fu)[fu],"_").concat(Date.now(),".vtt"))}catch(e){K.vF.info("Youtube Provider: download subtitles:",e)}else K.vF.debug("Youtube Provider: The subtitle is not yet ready.")}}function zu(){return new URL(document.location.href).searchParams.get("v")}function ju(){return document.querySelector("#container video")}function Ru(e){(0,qt.A)(this,eu)[eu]=e,(0,qt.A)(this,du)[du].updateMenuProps()}function Mu(){return(0,qt.A)(this,eu)[eu]}function Bu(e){var t;null===(t=(0,qt.A)(this,hu)[hu])||void 0===t||t.disconnect(),(0,qt.A)(this,hu)[hu]=new MutationObserver(()=>{(0,qt.A)(this,yu)[yu](e)}),(0,qt.A)(this,hu)[hu].observe(e,{attributes:!0,attributeFilter:["aria-pressed"]}),(0,qt.A)(this,yu)[yu](e)}function Wu(e){"true"===e.getAttribute("aria-pressed")?(0,qt.A)(this,Lu)[Lu]():(0,qt.A)(this,Ou)[Ou]()}function Uu(){const e=document.querySelector(jl);return!e||"true"===e.getAttribute("aria-pressed")}function Hu(e){const t=".ytp-ad-player-overlay-layout",n=".ytp-skip-ad-button, .ytp-ad-skip-button, .ytp-ad-skip-button-modern",r=new MutationObserver(e=>{const{skipAd:r=!1}=(0,qt.A)(this,$l)[$l];for(const i of e){if("childList"!==i.type)continue;const e=(0,qt.A)(this,mu)[mu];i.addedNodes.forEach(i=>{if(i.nodeType===Node.ELEMENT_NODE){var o;if(i.matches(t))K.vF.debug("Youtube Provider: AD start playing!",i),e&&r&&(e.playbackRate=16,e.currentTime=e.duration),null===(o=(0,qt.A)(this,uu)[uu])||void 0===o||o.setIsAdPlaying(!0);else i.matches(n)&&r&&(K.vF.debug("Youtube Provider: AD skip button!",i),i.click());if(r){const e=null===i||void 0===i?void 0:i.querySelector(n);e&&(K.vF.debug("Youtube Provider: AD skip button!!",e),e.click())}}}),i.removedNodes.forEach(n=>{var i;n.nodeType===Node.ELEMENT_NODE&&(n.matches(t)&&(K.vF.debug("Youtube Provider: Ad ends!"),(0,qt.A)(this,$l)[$l].autoTranslate&&(0,qt.A)(this,du)[du].hideYtCaption(),e&&r&&(e.playbackRate=1),null===(i=(0,qt.A)(this,uu)[uu])||void 0===i||i.setIsAdPlaying(!1)))})}});r.observe(e,{childList:!0,subtree:!0})}function Vu(){if((0,qt.A)(this,$l)[$l].autoTranslate)(0,qt.A)(this,wu)[wu]();else{var e;if((0,qt.A)(this,Zl)[Zl].length)(0,qt.A)(this,ou)[ou]+=1,null===(e=(0,qt.A)(this,lu)[lu])||void 0===e||e.abort(),(0,qt.A)(this,lu)[lu]=null,(0,qt.A)(this,su)[su]=null,(0,qt.A)(this,iu)[iu]=null,(0,qt.A)(this,Xl)[Xl]=[],(0,qt.A)(this,gu)[gu]=0,ct((0,qt.A)(this,$l)[$l].apiSlug);(0,qt.A)(this,Ou)[Ou]()}}async function Gu(){var e;const t=(0,qt.A)(this,fu)[fu];if(!(0,qt.A)(this,$l)[$l].autoTranslate||!t||!(0,qt.A)(this,Zl)[Zl].length)return;const n=(0,qt.A)(this,ou)[ou]+=1;null===(e=(0,qt.A)(this,lu)[lu])||void 0===e||e.abort(),(0,qt.A)(this,lu)[lu]=new AbortController,(0,qt.A)(this,su)[su]=null,(0,qt.A)(this,Xl)[Xl]=[],(0,qt.A)(this,gu)[gu]=0,(0,qt.A)(this,Ou)[Ou](),ct((0,qt.A)(this,$l)[$l].apiSlug),(0,qt.A)(this,nu)[nu]=mt(),await(0,qt.A)(this,Pu)[Pu]((0,qt.A)(this,Zl)[Zl],n),(0,qt.A)(this,Su)[Su](n)||(0,qt.A)(this,Cu)[Cu]({videoId:t,flatEvents:(0,qt.A)(this,Zl)[Zl],fromLang:(0,qt.A)(this,tu)[tu],processingVersion:n,signal:(0,qt.A)(this,lu)[lu].signal})}function Ku(){const{transApis:e,segSlug:t,skipAd:n,isBilingual:r,blurTranslation:i,autoTranslate:o,aiContextSlug:a}=(0,qt.A)(this,$l)[$l];return{i18n:(0,qt.A)(this,cu)[cu],updateSetting:this.updateSetting.bind(this),downloadSubtitle:this.downloadSubtitle.bind(this),transApis:e,progressed:(0,qt.A)(this,eu)[eu],formData:{segSlug:t,skipAd:n,isBilingual:r,blurTranslation:i,autoTranslate:o,aiContextSlug:a}}}function qu(e){return e!==(0,qt.A)(this,ou)[ou]}async function $u(e,t){var n;const r=(0,qt.A)(this,fu)[fu];if(!r)return void K.vF.debug("Youtube Provider: videoId not found.");const a=new URL(e);if(r!==a.searchParams.get("v"))return void K.vF.debug("Youtube Provider: skip other timedtext:",r);const s=a.searchParams.get("lang");if(!s)return void K.vF.debug("Youtube Provider: timedtext lang not found:",e);const l=a.searchParams.get("kind")||null,u=function(e){const t=e.searchParams;return[t.get("v")||"",t.get("lang")||"",t.get("kind")||"",t.get("name")||"",t.get("tlang")||""].join("|")}(a),c=function(e){return"zh"===e?"zh-CN":o.eA2.get(e)||o.eA2.get(e.slice(0,2))||o.mSZ[o.kXF].get(e)||o.mSZ[o.kXF].get(e.slice(0,2))||"auto"}(s);if((0,qt.A)(this,Zl)[Zl].length&&u===(0,qt.A)(this,au)[au])return void K.vF.debug("Youtube Provider: track was processed:",u);if((0,qt.A)(this,iu)[iu]===u)return void K.vF.debug("Youtube Provider: track is processing:",u);const d=(0,qt.A)(this,ou)[ou]+=1;(0,qt.A)(this,iu)[iu]=u,null===(n=(0,qt.A)(this,lu)[lu])||void 0===n||n.abort(),(0,qt.A)(this,lu)[lu]=new AbortController,(0,qt.A)(this,su)[su]=null,(0,qt.A)(this,Zl)[Zl].length&&((0,qt.A)(this,Ou)[Ou](),ct((0,qt.A)(this,$l)[$l].apiSlug),(0,qt.A)(this,Xl)[Xl]=[],(0,qt.A)(this,Jl)[Jl]=[],(0,qt.A)(this,Ql)[Ql]=[],(0,qt.A)(this,Zl)[Zl]=[],(0,qt.A)(this,gu)[gu]=0,(0,qt.A)(this,au)[au]=null,(0,qt.A)(this,su)[su]=null);try{(0,qt.A)(this,du)[du].showNotification((0,qt.A)(this,cu)[cu]("starting_to_process_subtitle"));const{toLang:e}=(0,qt.A)(this,$l)[$l],{captionTracks:n,fullDescription:o}=await $s(r);if((0,qt.A)(this,Su)[Su](d))return;(0,qt.A)(this,ru)[ru]=o||"";const h=function(e,t,n){if(K.vF.debug("Youtube Provider: find caption track",{captionTracks:e,lang:t,kind:n}),null===e||void 0===e||!e.length)return null;let r=e.find(e=>e.languageCode===t&&(e.kind||null)===(n||null));if(r||(r=e.find(e=>e.languageCode===t)),!r){const t=e.find(e=>"asr"===e.kind);t&&(r=e.find(e=>"asr"!==e.kind&&Gs(e.languageCode,t.languageCode)),r||(r=t))}if(r||(r=e[e.length-1]),r&&Ks(r)){K.vF.debug("Youtube Provider: detected chat subtitle track, switching to normal subtitle");const n=e.find(e=>Gs(e.languageCode,t)&&!Ks(e));if(n)K.vF.debug("Youtube Provider: switched to same-language non-chat track"),r=n;else{const t=e.find(e=>!Ks(e));t&&(K.vF.debug("Youtube Provider: switched to fallback non-chat track"),r=t)}}return r}(n,s,l);if(!h)return void K.vF.debug("Youtube Provider: CaptionTrack not found:",r);h.baseUrl.startsWith("https")||(h.baseUrl=window.location.origin+h.baseUrl);const p=new URL(h.baseUrl),f=await async function(e,t,n){if(!t.searchParams.get("tlang")&&t.searchParams.get("kind")===e.searchParams.get("kind")&&Gs(t.searchParams.get("lang"),e.searchParams.get("lang")))try{const e=JSON.parse(n);return null===e||void 0===e?void 0:e.events}catch(r){return K.vF.info("Youtube Provider: parse responseText",r),null}try{t.searchParams.delete("tlang"),t.searchParams.delete("name"),t.searchParams.set("lang",e.searchParams.get("lang")),t.searchParams.set("fmt","json3"),e.searchParams.get("kind")?t.searchParams.set("kind",e.searchParams.get("kind")):t.searchParams.delete("kind");const n=await fetch(t.href);if(null!==n&&void 0!==n&&n.ok){const e=await n.json();return null===e||void 0===e?void 0:e.events}return K.vF.info("Youtube Provider: Failed to fetch subtitles: ".concat(n.status)),null}catch(i){return K.vF.info("Youtube Provider: fetching subtitles error",i),null}}(p,a,t);if((0,qt.A)(this,Su)[Su](d))return;if(null===f||void 0===f||!f.length)return void K.vF.debug("Youtube Provider: events not got:",r);if((0,qt.A)(this,Ql)[Ql]=f,K.vF.debug("Youtube Provider: lang: ".concat(s,", fromLang: ").concat(c,", toLang: ").concat(e)),Gs(c,e))return K.vF.debug("Youtube Provider: skip same lang",c,e),void(0,qt.A)(this,du)[du].showNotification((0,qt.A)(this,cu)[cu]("subtitle_same_lang"));const{events:m,flatEvents:g}=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const n=[],r=[];let o=0,a=null,s="";const l=e=>{a&&((!a.end||Number.isFinite(e)&&a.end>e)&&(a.end=e),Number.isFinite(a.end)&&a.end>a.start&&r.push(a),a=null)};for(const c of Array.isArray(t)?t:[]){var u;const e=c||{},t=Array.isArray(e.segs)?e.segs:[],r=Number(e.tStartMs)||0,d=Number(e.dDurationMs)||0,h=1===e.aAppend&&1===t.length&&"\n"===(null===(u=t[0])||void 0===u?void 0:u.utf8),p=t.map(e=>(0,i.A)((0,i.A)({},e),{},{utf8:h?"\n":ol(null===e||void 0===e?void 0:e.utf8)})),f=p.map(e=>ol(e.utf8)).filter(Boolean).join(" ").replace(/\s+/g," ").trim(),m=f?"".concat(r,"|").concat(d,"|").concat(f):"";if(m&&m===s)continue;const g=(0,i.A)((0,i.A)({},e),{},{segs:p});n.push(g),s=m;for(let n=0;na.start)&&l(s)}}return l(null===(e=a)||void 0===e?void 0:e.end),{events:n,flatEvents:r.filter(e=>e&&Number.isFinite(e.start)&&Number.isFinite(e.end)&&e.end>e.start),filteredNonSpeechCount:o}}(f);if(null===g||void 0===g||!g.length)return void K.vF.debug("Youtube Provider: flatEvents not got:",r);if((0,qt.A)(this,Su)[Su](d))return;if((0,qt.A)(this,Jl)[Jl]=m,(0,qt.A)(this,Zl)[Zl]=g,(0,qt.A)(this,tu)[tu]=c,(0,qt.A)(this,au)[au]=u,(0,qt.A)(this,nu)[nu]=mt(),!(0,qt.A)(this,$l)[$l].autoTranslate)return void(0,qt.A)(this,du)[du].updateMenuProps();if(await(0,qt.A)(this,Pu)[Pu](g,d),(0,qt.A)(this,Su)[Su](d))return;(0,qt.A)(this,Cu)[Cu]({videoId:r,flatEvents:g,fromLang:c,processingVersion:d,signal:(0,qt.A)(this,lu)[lu].signal})}catch(h){K.vF.warn("Youtube Provider: handle subtitle",h),(0,qt.A)(this,du)[du].showNotification((0,qt.A)(this,cu)[cu]("subtitle_load_failed"))}finally{(0,qt.A)(this,Su)[Su](d)||(0,qt.A)(this,iu)[iu]!==u||((0,qt.A)(this,iu)[iu]=null)}}async function Yu(e){let{videoId:t,flatEvents:n,fromLang:r,processingVersion:i,signal:o}=e;try{var a;const[e,l,u]=await pl({videoId:t,events:(0,qt.A)(this,Jl)[Jl],flatEvents:n,fromLang:r,setting:(0,qt.A)(this,$l)[$l],processingVersion:i,isStaleProcessing:e=>(0,qt.A)(this,Su)[Su](e),showNotification:(e,t)=>(0,qt.A)(this,du)[du].showNotification(e,t),i18n:(0,qt.A)(this,cu)[cu],apiSubtitle:Sn,docInfo:(0,qt.A)(this,nu)[nu],builtinSegment:ll,formatSubtitles:(e,t)=>sl(e,t,{longSentenceThreshold:(0,qt.A)(this,$l)[$l].longSentenceThreshold}),onAppendSubtitles:e=>{let{subtitles:t,progressed:n}=e;(0,qt.A)(this,Tu)[Tu](t,n)},getCurrentVideoId:()=>(0,qt.A)(this,fu)[fu],signal:o});if((0,qt.A)(this,Su)[Su](i))return;var s;if((0,qt.A)(this,su)[su]=u||null,(0,qt.A)(this,su)[su]&&(0,qt.A)(this,mu)[mu])(0,qt.A)(this,Fu)[Fu](1e3*(0,qt.A)(this,mu)[mu].currentTime,null!==(s=(0,qt.A)(this,$l)[$l].preTrans)&&void 0!==s?s:90);if((null===e||void 0===e||!e.length)&&!(0,qt.A)(this,Xl)[Xl].length)return void K.vF.debug("Youtube Provider: events to subtitles got empty",t);if(t!==(0,qt.A)(this,fu)[fu])return void K.vF.debug("Youtube Provider: videoId changed!",t,(0,qt.A)(this,fu)[fu]);const c=(0,qt.A)(this,_u)[_u](e,l);(0,qt.A)(this,Lu)[Lu](),null===(a=(0,qt.A)(this,uu)[uu])||void 0===a||a.repairChunkTranslations(c)}catch(l){if("AbortError"===(null===l||void 0===l?void 0:l.name))return;K.vF.info("Youtube Provider: process events",l),(0,qt.A)(this,du)[du].showNotification((0,qt.A)(this,cu)[cu]("subtitle_load_failed"))}}function Xu(e,t){if(null===e||void 0===e||!e.length)return(0,qt.A)(this,gu)[gu]=t,[];const n=new Map((0,qt.A)(this,Xl)[Xl].map((e,t)=>["".concat(e.start,":").concat(e.end),t])),r=[];for(const o of e){const e="".concat(o.start,":").concat(o.end),t=n.get(e);void 0!==t?((0,qt.A)(this,Xl)[Xl][t]=(0,i.A)((0,i.A)({},(0,qt.A)(this,Xl)[Xl][t]),o),r.push((0,qt.A)(this,Xl)[Xl][t])):(n.set(e,(0,qt.A)(this,Xl)[Xl].length),(0,qt.A)(this,Xl)[Xl].push(o),r.push(o))}return(0,qt.A)(this,Xl)[Xl].sort((e,t)=>e.start-t.start),(0,qt.A)(this,gu)[gu]=t,r}function Ju(e,t){var n,r,i;const o=(0,qt.A)(this,_u)[_u](e,t);!(0,qt.A)(this,uu)[uu]&&(0,qt.A)(this,Xl)[Xl].length&&(0,qt.A)(this,Lu)[Lu](),null===(n=(0,qt.A)(this,uu)[uu])||void 0===n||n.appendSubtitles(o),null===(r=(0,qt.A)(this,pu)[pu])||void 0===r||r.setBilingualSubtitles((0,qt.A)(this,Xl)[Xl],(0,qt.A)(this,gu)[gu]),null===(i=(0,qt.A)(this,uu)[uu])||void 0===i||i.repairChunkTranslations(o)}function Qu(){var e;if(!(0,qt.A)(this,$l)[$l].autoTranslate)return;(0,qt.A)(this,gu)[gu]=0,(0,qt.A)(this,Xl)[Xl]=[];const t=(0,qt.A)(this,fu)[fu],n=(0,qt.A)(this,Zl)[Zl],r=(0,qt.A)(this,tu)[tu];if(!t||!n.length)return;(0,qt.A)(this,du)[du].showNotification((0,qt.A)(this,cu)[cu]("starting_reprocess_events"));const i=(0,qt.A)(this,ou)[ou]+=1;null===(e=(0,qt.A)(this,lu)[lu])||void 0===e||e.abort(),(0,qt.A)(this,lu)[lu]=new AbortController,(0,qt.A)(this,su)[su]=null,(0,qt.A)(this,Ou)[Ou](),ct((0,qt.A)(this,$l)[$l].apiSlug),(0,qt.A)(this,Cu)[Cu]({videoId:t,flatEvents:n,fromLang:r,processingVersion:i,signal:(0,qt.A)(this,lu)[lu].signal})}async function Zu(e,t){const{aiContextSlug:n,transApis:r}=(0,qt.A)(this,$l)[$l];if(!n||"-"===n)return;if((0,qt.A)(this,Su)[Su](t))return;const i=null===r||void 0===r?void 0:r.find(e=>e.apiSlug===n);if(!i)return;if(!o.sNP.ai.has(i.apiType))return;const a=e.map(e=>e.text).filter(Boolean).join(" ").slice(0,8e3);if(a.length<200)return;const s=(0,qt.A)(this,fu)[fu],l=(0,qt.A)(this,nu)[nu];try{(0,qt.A)(this,du)[du].showNotification((0,qt.A)(this,cu)[cu]("ai_context_analyzing"));const e=await En({videoId:s,title:l.title,description:(0,qt.A)(this,ru)[ru]||l.description,transcript:a,apiSetting:i});e&&s===(0,qt.A)(this,fu)[fu]&&!(0,qt.A)(this,Su)[Su](t)&&(l.summary=e)}catch(u){K.vF.info("Youtube Provider: AI context enrichment failed",u)}}async function ec(){var e;if(!(0,qt.A)(this,$l)[$l].autoTranslate)return;(0,qt.A)(this,gu)[gu]=0,(0,qt.A)(this,Xl)[Xl]=[];const t=(0,qt.A)(this,fu)[fu],n=(0,qt.A)(this,Zl)[Zl];if(!t||!n.length)return;const r=(0,qt.A)(this,ou)[ou]+=1;null===(e=(0,qt.A)(this,lu)[lu])||void 0===e||e.abort(),(0,qt.A)(this,lu)[lu]=new AbortController,(0,qt.A)(this,su)[su]=null,(0,qt.A)(this,Ou)[Ou](),ct((0,qt.A)(this,$l)[$l].apiSlug),(0,qt.A)(this,nu)[nu]=mt(),await(0,qt.A)(this,Pu)[Pu](n,r),(0,qt.A)(this,Su)[Su](r)||(0,qt.A)(this,Cu)[Cu]({videoId:t,flatEvents:n,fromLang:(0,qt.A)(this,tu)[tu],processingVersion:r,signal:(0,qt.A)(this,lu)[lu].signal})}function tc(e,t){var n;null===(n=(0,qt.A)(this,su)[su])||void 0===n||n.scheduleUntil(e,t)}function nc(){if(!(0,qt.A)(this,bu)[bu]())return;if((0,qt.A)(this,uu)[uu])return;if(!(0,qt.A)(this,$l)[$l].autoTranslate)return;if(!(0,qt.A)(this,Xl)[Xl].length)return void(0,qt.A)(this,du)[du].showNotification((0,qt.A)(this,cu)[cu]("waitting_for_subtitle"));const e=(0,qt.A)(this,mu)[mu];if(!e)return void K.vF.warn("Youtube Provider: No video element found");K.vF.info("Youtube Provider: Starting manager..."),(0,qt.A)(this,uu)[uu]=new Ts({videoEl:e,formattedSubtitles:(0,qt.A)(this,Xl)[Xl],setting:(0,i.A)((0,i.A)({},(0,qt.A)(this,$l)[$l]),{},{fromLang:(0,qt.A)(this,tu)[tu],docInfo:(0,qt.A)(this,nu)[nu],onSubtitleTimeWindow:e=>{let{currentTimeMs:t,preTrans:n}=e;return(0,qt.A)(this,Fu)[Fu](t,n)}})});Fa((0,qt.A)(this,$l)[$l].showList,(0,qt.A)(this,$l)[$l].enhanceMode)&&!(0,qt.A)(this,pu)[pu]&&((0,qt.A)(this,pu)[pu]=new Vs(e,(0,qt.A)(this,cu)[cu],{enableHoverLookup:Fa((0,qt.A)(this,$l)[$l].hoverLookupMode,(0,qt.A)(this,$l)[$l].enhanceMode),autoFavWord:!0===(0,qt.A)(this,$l)[$l].autoFavWord}),(0,qt.A)(this,pu)[pu].initialize((0,qt.A)(this,Xl)[Xl],(0,qt.A)(this,Ql)[Ql],(0,qt.A)(this,gu)[gu]),(0,qt.A)(this,uu)[uu].onSubtitleUpdate=e=>{(0,qt.A)(this,pu)[pu].updateSingleSubtitle(e)},(0,qt.A)(this,pu)[pu].turnOnAutoSub()),(0,qt.A)(this,uu)[uu].start(),(0,qt.A)(this,du)[du].showNotification((0,qt.A)(this,cu)[cu]("subtitle_load_succeed")),(0,qt.A)(this,du)[du].hideYtCaption()}function rc(){(0,qt.A)(this,du)[du].showYtCaption(),(0,qt.A)(this,uu)[uu]&&(K.vF.info("Youtube Provider: Destroying manager..."),(0,qt.A)(this,uu)[uu].onSubtitleUpdate=null,(0,qt.A)(this,uu)[uu].destroy(),(0,qt.A)(this,uu)[uu]=null,(0,qt.A)(this,pu)[pu]&&((0,qt.A)(this,pu)[pu].destroy(),(0,qt.A)(this,pu)[pu]=null))}const ic=(()=>{let e=!1;return async t=>{if(e)return;e=!0,K.vF.info("Bilingual Subtitle Extension: Initializing...");new Nu(t).initialize()}})();var oc=n(5493),ac=n(3565);const sc=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kiss-translator-inline-js";if(document.getElementById(t))return;const n=document.createElement("script");n.setAttribute("data-source","kiss-inject injectInlineJs"),n.type="text/javascript",n.id=t,n.textContent=rt.createScript(e),(document.head||document.documentElement).appendChild(n)},lc="injector-subtitle.js",uc="injector-shadowroot.js",cc={[lc]:()=>{try{const e=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){for(var t=arguments.length,n=new Array(t),r=0;r{try{const e=Element.prototype.attachShadow;Element.prototype.attachShadow=function(){for(var t=arguments.length,n=new Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:"kiss-translator-inject-js";const n=cc[e];if(n)if(R.aQ){!function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kiss-translator-external-js";if(document.getElementById(t))return;const n=document.createElement("script");n.setAttribute("data-source","kiss-inject injectExternalJs"),n.type="text/javascript",n.id=t,n.src=rt.createScriptURL(e),(document.head||document.documentElement).appendChild(n)}(Kt.T.runtime.getURL(e),t)}else sc("(".concat(n,")()"),t)}const hc=[{pattern:"https://www.youtube.com",start:ic}];function pc(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var fc=n(3385),mc=n(696);function gc(e,t){if(void 0===e.inserted[t.name])return e.insert("",t,e.sheet,!0)}function vc(e,t,n){var r=[],i=(0,mc.Rk)(e,r,n);return r.length<2?n:i+t(r)}var yc,bc,Ac,xc,wc=function e(t){for(var n="",r=0;r2&&void 0!==arguments[2]?arguments[2]:1;return"\n text-decoration-line: underline;\n text-decoration-style: ".concat(e,";\n text-decoration-color: ").concat(t,";\n text-decoration-thickness: ").concat(n,"px;\n text-underline-offset: 0.3em;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-style: ").concat(e,";\n -webkit-text-decoration-color: ").concat(t,";\n -webkit-text-decoration-thickness: 1px;\n -webkit-text-underline-offset: 0.3em;\n\n opacity: 0.8;\n -webkit-opacity: 0.8;\n &:hover {\n opacity: 1;\n -webkit-opacity: 1;\n }\n")},Pc=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:o.OTD;return{[o.nsG]:"",[o.VfS]:Dc("solid",e),[o.As$]:Dc("dotted",e),[o.hrO]:Dc("dashed",e),[o.TYN]:Dc("dashed",e,2),[o.QsO]:Dc("wavy",e),[o._sN]:Dc("wavy",e,2),[o.WDZ]:"\n border: 1px dashed ".concat(e,";\n display: block;\n padding: 0.2em 0.3em;\n box-sizing: border-box;\n "),[o.msE]:"\n border: 2px dashed ".concat(e,";\n display: block;\n padding: 0.2em 0.3em;\n box-sizing: border-box;\n "),[o.zwp]:"\n background: linear-gradient(to top, ".concat(e," 50%, transparent 50%);\n "),[o.ea4]:"\n background: linear-gradient(to top, transparent, ".concat(e," 20%, transparent 60%);\n "),[o.$ET]:"\n filter: blur(0.2em);\n -webkit-filter: blur(0.2em);\n &:hover {\n filter: none;\n -webkit-filter: none;\n }\n ",[o.zMP]:"\n color: #fff;\n background-color: ".concat(e,";\n "),[o.SXq]:"\n opacity: 0.8;\n -webkit-opacity: 0.8;\n display: block;\n padding: 0.25em 0.5em;\n border-left: 0.25em solid ".concat(e,";\n background: rgb(32, 156, 238, 0.2);\n &:hover {\n opacity: 1;\n -webkit-opacity: 1;\n }\n "),[o.HzO]:"\n background-image: linear-gradient(\n 90deg,\n #3b82f6,\n #9333ea,\n #ec4899,\n #3b82f6\n );\n background-size: 200% auto;\n color: transparent;\n -webkit-background-clip: text;\n background-clip: text;\n animation: ".concat(Cc," 4s linear infinite;\n & * {\n background-color: transparent !important;\n }\n "),[o.VEm]:"\n animation: ".concat(_c," 1s infinite;\n "),[o.EDO]:"\n animation: ".concat(Tc," 2s ease-in-out infinite alternate;\n "),[o.Rrc]:"\n color: #333;\n background: linear-gradient(\n 45deg,\n LightGreen 20%,\n LightPink 20% 40%,\n LightSalmon 40% 60%,\n LightSeaGreen 60% 80%,\n LightSkyBlue 80%\n );\n &:hover {\n color: #111;\n };\n "}},Ic=Pc(),Fc=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:window;if(0===e.length)return()=>{};const r=new Set(e);let i=!1;return function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:window;const r=new Set,i=t=>{t.code&&(r.has(t.code)||(r.add(t.code),e(new Set(r),t)))},o=e=>{e.code&&(t(new Set(r),e),r.delete(e.code))},a=()=>{r.clear()};return n.addEventListener("keydown",i,!0),n.addEventListener("keyup",o,!0),window.addEventListener("blur",a),()=>{n.removeEventListener("keydown",i,!0),n.removeEventListener("keyup",o,!0),window.removeEventListener("blur",a),r.clear()}}((e,t)=>{r.has(t.code)||(i=!0)},(e,n)=>{(0,l.T9)(r,e)&&!i&&t(),1===e.size&&(i=!1)},n)},Lc=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>4&&void 0!==arguments[4]?arguments[4]:window;const n=((e,t,n)=>{let r=0,i=null;return()=>{i&&clearTimeout(i),i=setTimeout(()=>{r=0},n),r++,r===t&&(r=0,clearTimeout(i),e())}})(arguments.length>1?arguments[1]:void 0,arguments.length>2&&void 0!==arguments[2]?arguments[2]:2,arguments.length>3&&void 0!==arguments[3]?arguments[3]:500);return Fc(e,n,t)},Oc={[o.bCM]:async e=>{const t={client:"gtx",dt:"t",dj:1,ie:"UTF-8",sl:"auto",tl:"zh-CN",q:e},n="https://translate.googleapis.com/translate_a/single?".concat(N.stringify(t)),r={headers:{"Content-type":"application/json"}},i=await(0,z.Fd)(n,r,{useCache:!0});return null!==i&&void 0!==i&&i.src?(await(0,Ut.v0)(n,r,i),i.src):""},[o.kXF]:async e=>{const t={text:e,detector:o.kXF},n="".concat(o.LsT,"?").concat(N.stringify(t)),r=await(0,Ut.QF)(n);if(r)return r;const i="".concat(o.LsT,"_").concat(o.kXF),a=Vt(i,Bt,{batchInterval:200,batchSize:20,batchLength:1e5}),s=await a.addTask(e);return s?((0,Ut.v0)(n,null,s),s):""},[o.xN$]:async e=>{const t="https://fanyi.baidu.com/langdetect",n={headers:{"Content-type":"application/json"},method:"POST",body:JSON.stringify({query:e})},r=await(0,z.Fd)(t,n,{useCache:!0});return 0===(null===r||void 0===r?void 0:r.error)?(await(0,Ut.v0)(t,n,r),r.lan):""},[o.fFW]:async e=>{const t="https://transmart.qq.com/api/imt",n={headers:{"Content-type":"application/json","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",referer:"https://transmart.qq.com/zh-CN/index"},method:"POST",body:JSON.stringify({header:{fn:"text_analysis",client_key:"browser-chrome-110.0.0-Mac OS-df4bd4c5-a65d-44b2-a40f-42f34f3535f2-1677486696487"},text:e})},r=await(0,z.Fd)(t,n,{useCache:!0});return null!==r&&void 0!==r&&r.language?(await(0,Ut.v0)(t,n,r),r.language):""},[o.h8v]:async e=>{if(!Kt.Lx)return"";const[t,n]=await(0,z.Qy)({fn:an,msg:o.cO5,text:e});return n?"":t}},Nc=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"-",n="";if(o.G8K.has(t))try{const r=await Oc[t](e);r&&(n=o.mSZ[t].get(r)||"")}catch(s){(0,K.h9)("detect lang remote",s)}if(!n)try{var r,i,a;const t=await(null===Kt.T||void 0===Kt.T||null===(r=Kt.T.i18n)||void 0===r?void 0:r.detectLanguage(e)),s=null===t||void 0===t||null===(i=t.languages)||void 0===i||null===(a=i[0])||void 0===a?void 0:a.language;null!==t&&void 0!==t&&t.isReliable&&s&&o.Z2L.has(s)?n=s:null!==s&&void 0!==s&&s.startsWith("zh")&&(n="zh-CN")}catch(s){(0,K.h9)("detect lang local",s)}return n};var zc,jc=(0,$t.A)("setting"),Rc=(0,$t.A)("rule"),Mc=(0,$t.A)("isInitialized"),Bc=(0,$t.A)("isJsInjected"),Wc=(0,$t.A)("isShadowRootJsInjected"),Uc=(0,$t.A)("mouseHoverEnabled"),Hc=(0,$t.A)("enabled"),Vc=(0,$t.A)("runId"),Gc=(0,$t.A)("transOnlyRevertTimer"),Kc=(0,$t.A)("transOnlyRevertTarget"),qc=(0,$t.A)("transOnlyRevertEnabled"),$c=(0,$t.A)("boundTransOnlyMouseOver"),Yc=(0,$t.A)("boundTransOnlyMouseOut"),Xc=(0,$t.A)("termValues"),Jc=(0,$t.A)("combinedTermsRegex"),Qc=(0,$t.A)("combinedSkipsRegex"),Zc=(0,$t.A)("placeholderCache"),ed=(0,$t.A)("translationTagName"),td=(0,$t.A)("eventName"),nd=(0,$t.A)("docInfo"),rd=(0,$t.A)("glossary"),id=(0,$t.A)("blockSelectorInvalid"),od=(0,$t.A)("textClass"),ad=(0,$t.A)("textSheet"),sd=(0,$t.A)("textStylesRaw"),ld=(0,$t.A)("useSheetFallback"),ud=(0,$t.A)("apisMap"),cd=(0,$t.A)("favWords"),dd=(0,$t.A)("observedNodes"),hd=(0,$t.A)("translationNodes"),pd=(0,$t.A)("viewNodes"),fd=(0,$t.A)("processedNodes"),md=(0,$t.A)("rootNodes"),gd=(0,$t.A)("skipMoNodes"),vd=(0,$t.A)("ignoredMutationTargets"),yd=(0,$t.A)("plainTextPreprocessingNodes"),bd=(0,$t.A)("removeKeydownHandler"),Ad=(0,$t.A)("removeKeydownHandler2"),xd=(0,$t.A)("hoveredNode"),wd=(0,$t.A)("hoverPointer"),kd=(0,$t.A)("hoverBubbleNode"),Sd=(0,$t.A)("hoverBubbleTarget"),Ed=(0,$t.A)("hoverBubbleRunId"),Cd=(0,$t.A)("hoverOriginalTimer"),_d=(0,$t.A)("hoverOriginalTimerTarget"),Td=(0,$t.A)("boundMouseMoveHandler"),Dd=(0,$t.A)("boundKeyDownHandler"),Pd=(0,$t.A)("windowMessageHandler"),Id=(0,$t.A)("debouncedFindShadowRoot"),Fd=(0,$t.A)("io"),Ld=(0,$t.A)("mo"),Od=(0,$t.A)("dmm"),Nd=(0,$t.A)("rescanQueue"),zd=(0,$t.A)("isQueueProcessing"),jd=(0,$t.A)("captureViewportAnchor"),Rd=(0,$t.A)("normalizeViewportAnchor"),Md=(0,$t.A)("restoreViewportAnchor"),Bd=(0,$t.A)("withViewportAnchor"),Wd=(0,$t.A)("ignoreSelector"),Ud=(0,$t.A)("isIgnoredElement"),Hd=(0,$t.A)("matchesBlockSelector"),Vd=(0,$t.A)("appendCssText"),Gd=(0,$t.A)("isBlockNode"),Kd=(0,$t.A)("hasBlockNode"),qd=(0,$t.A)("getPlainTextChunkLimit"),$d=(0,$t.A)("findPlainTextBreakIndex"),Yd=(0,$t.A)("readPlainTextNewline"),Xd=(0,$t.A)("findPlainTextLineEnd"),Jd=(0,$t.A)("readNextPlainTextChunk"),Qd=(0,$t.A)("createPlainTextChunkNode"),Zd=(0,$t.A)("appendPlainTextPreBatch"),eh=(0,$t.A)("initPlainTextPre"),th=(0,$t.A)("apiSetting"),nh=(0,$t.A)("transAllnow"),rh=(0,$t.A)("rootMargin"),ih=(0,$t.A)("placeholderConfig"),oh=(0,$t.A)("run"),ah=(0,$t.A)("init"),sh=(0,$t.A)("handleWindowMessage"),lh=(0,$t.A)("attachShadowRootListener"),uh=(0,$t.A)("removeShadowRootListener"),ch=(0,$t.A)("findAndObserveShadowRoot"),dh=(0,$t.A)("createTextStyles"),hh=(0,$t.A)("injectSheet"),ph=(0,$t.A)("injectSheetFallback"),fh=(0,$t.A)("parseTerms"),mh=(0,$t.A)("createIntersectionObserver"),gh=(0,$t.A)("createMutationObserver"),vh=(0,$t.A)("withIgnoredMutations"),yh=(0,$t.A)("createDebounceMouseMover"),bh=(0,$t.A)("handleMouseMove"),Ah=(0,$t.A)("handleKeyDown"),xh=(0,$t.A)("toggleTargetNode"),wh=(0,$t.A)("isMouseHoverBubbleMode"),kh=(0,$t.A)("shouldUseOriginalHoverBubble"),Sh=(0,$t.A)("canShowOriginalInHoverBubble"),Eh=(0,$t.A)("getOriginalText"),Ch=(0,$t.A)("clearHoverOriginalTimer"),_h=(0,$t.A)("scheduleOriginalHoverBubble"),Th=(0,$t.A)("showOriginalHoverBubble"),Dh=(0,$t.A)("getShadowRoot"),Ph=(0,$t.A)("isKissIgnoredNode"),Ih=(0,$t.A)("findAllShadowRoots"),Fh=(0,$t.A)("findChangeContainer"),Lh=(0,$t.A)("queueForRescan"),Oh=(0,$t.A)("rescanContainer"),Nh=(0,$t.A)("reIO"),zh=(0,$t.A)("reIOViewNodes"),jh=(0,$t.A)("startObserveShadowRoot"),Rh=(0,$t.A)("startObserveRoot"),Mh=(0,$t.A)("startObserveNode"),Bh=(0,$t.A)("queryNode"),Wh=(0,$t.A)("scanNode"),Uh=(0,$t.A)("processNode"),Hh=(0,$t.A)("highlightTextNode"),Vh=(0,$t.A)("highlightWordsDeeply"),Gh=(0,$t.A)("splitTextNodesBySentence"),Kh=(0,$t.A)("removeHighlights"),qh=(0,$t.A)("removeBrTags"),$h=(0,$t.A)("shouldBreak"),Yh=(0,$t.A)("isInvalidText"),Xh=(0,$t.A)("formatTranslateError"),Jh=(0,$t.A)("copyText"),Qh=(0,$t.A)("createRetryErrorNode"),Zh=(0,$t.A)("translateNodeGroup"),ep=(0,$t.A)("getHoverBubbleStyle"),tp=(0,$t.A)("ensureHoverBubble"),np=(0,$t.A)("positionHoverBubble"),rp=(0,$t.A)("showHoverBubble"),ip=(0,$t.A)("hideHoverBubble"),op=(0,$t.A)("translateHoverBubbleNode"),ap=(0,$t.A)("serializeForTranslation"),sp=(0,$t.A)("restoreFromTranslation"),lp=(0,$t.A)("translateFetch"),up=(0,$t.A)("findTranslationWrappers"),cp=(0,$t.A)("cleanupAllNodes"),dp=(0,$t.A)("cleanupAllTranslations"),hp=(0,$t.A)("cleanupDirectTranslations"),pp=(0,$t.A)("collectExistingTranslationNodes"),fp=(0,$t.A)("getTranslationBackup"),mp=(0,$t.A)("getOrCreateTranslationBackup"),gp=(0,$t.A)("getOriginalStyleClass"),vp=(0,$t.A)("wrapOriginalNodes"),yp=(0,$t.A)("unwrapOriginal"),bp=(0,$t.A)("getOriginalUnits"),Ap=(0,$t.A)("setOriginalStyle"),xp=(0,$t.A)("tryAdoptExistingTranslationHost"),wp=(0,$t.A)("removeTranslationElement"),kp=(0,$t.A)("restoreOriginal"),Sp=(0,$t.A)("removeOriginal"),Ep=(0,$t.A)("toggleTranslationOnly"),Cp=(0,$t.A)("adjustWrapperPosition"),_p=(0,$t.A)("updateStyle"),Tp=(0,$t.A)("updateOriginalWrapping"),Dp=(0,$t.A)("updateOriginalStyle"),Pp=(0,$t.A)("updateTransOrder"),Ip=(0,$t.A)("refreshNode"),Fp=(0,$t.A)("performSyncNode"),Lp=(0,$t.A)("resetOptions"),Op=(0,$t.A)("enableMouseHover"),Np=(0,$t.A)("disableMouseHover"),zp=(0,$t.A)("enableTransOnlyRevert"),jp=(0,$t.A)("disableTransOnlyRevert"),Rp=(0,$t.A)("clearTransOnlyRevertTimer"),Mp=(0,$t.A)("showOriginalTemporarily"),Bp=(0,$t.A)("hideOriginalTemporarily"),Wp=(0,$t.A)("initInjector"),Up=(0,$t.A)("removeInjector"),Hp=(0,$t.A)("translateTitle"),Vp=(0,$t.A)("syncTransOnlyRevert");class Gp{static isElement(e){return e instanceof Element}static isElementOrFragment(e){return e instanceof Element||e instanceof DocumentFragment}static isBlockNode(e){var t,n,r,i,o,a,s,l;if(!Gp.isElementOrFragment(e))return!1;if(null!==(t=e.attributes)&&void 0!==t&&null!==(n=t.display)&&void 0!==n&&null!==(r=n.value)&&void 0!==r&&r.includes("inline"))return!1;if(null!==(i=e.attributes)&&void 0!==i&&null!==(o=i.display)&&void 0!==o&&null!==(a=o.value)&&void 0!==a&&a.includes("block"))return!0;if(Gp.TAGS.INLINE.has(null===(s=e.nodeName)||void 0===s?void 0:s.toUpperCase()))return!1;if(Gp.TAGS.BLOCK.has(null===(l=e.nodeName)||void 0===l?void 0:l.toUpperCase()))return!0;if(Gp.displayCache.has(e))return Gp.displayCache.get(e);const u=!window.getComputedStyle(e).display.startsWith("inline");return Gp.displayCache.set(e,u),u}static hasBlockNode(e){if(!Gp.isElementOrFragment(e))return!1;for(const t of e.childNodes)if(Gp.isBlockNode(t))return!0;return!1}static hasTextNode(e){if(!Gp.isElementOrFragment(e))return!1;for(const t of e.childNodes)if(t.nodeType===Node.TEXT_NODE&&/\S/.test(t.nodeValue))return!0;return!1}static escapeRegex(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}constructor(e){let{rule:t={},setting:n={},favWords:r=[]}=e;Object.defineProperty(this,Vp,{value:eg}),Object.defineProperty(this,Hp,{value:Zm}),Object.defineProperty(this,Up,{value:Qm}),Object.defineProperty(this,Wp,{value:Jm}),Object.defineProperty(this,Bp,{value:Xm}),Object.defineProperty(this,Mp,{value:Ym}),Object.defineProperty(this,Rp,{value:$m}),Object.defineProperty(this,jp,{value:qm}),Object.defineProperty(this,zp,{value:Km}),Object.defineProperty(this,Np,{value:Gm}),Object.defineProperty(this,Op,{value:Vm}),Object.defineProperty(this,Lp,{value:Hm}),Object.defineProperty(this,Fp,{value:Um}),Object.defineProperty(this,Ip,{value:Wm}),Object.defineProperty(this,Pp,{value:Bm}),Object.defineProperty(this,Dp,{value:Mm}),Object.defineProperty(this,Tp,{value:Rm}),Object.defineProperty(this,_p,{value:jm}),Object.defineProperty(this,Cp,{value:zm}),Object.defineProperty(this,Ep,{value:Nm}),Object.defineProperty(this,Sp,{value:Om}),Object.defineProperty(this,kp,{value:Lm}),Object.defineProperty(this,wp,{value:Fm}),Object.defineProperty(this,xp,{value:Im}),Object.defineProperty(this,Ap,{value:Pm}),Object.defineProperty(this,bp,{value:Dm}),Object.defineProperty(this,yp,{value:Tm}),Object.defineProperty(this,vp,{value:_m}),Object.defineProperty(this,gp,{value:Cm}),Object.defineProperty(this,mp,{value:Em}),Object.defineProperty(this,fp,{value:Sm}),Object.defineProperty(this,pp,{value:km}),Object.defineProperty(this,hp,{value:wm}),Object.defineProperty(this,dp,{value:xm}),Object.defineProperty(this,cp,{value:Am}),Object.defineProperty(this,up,{value:bm}),Object.defineProperty(this,lp,{value:ym}),Object.defineProperty(this,sp,{value:vm}),Object.defineProperty(this,ap,{value:gm}),Object.defineProperty(this,op,{value:mm}),Object.defineProperty(this,ip,{value:fm}),Object.defineProperty(this,rp,{value:pm}),Object.defineProperty(this,np,{value:hm}),Object.defineProperty(this,tp,{value:dm}),Object.defineProperty(this,ep,{value:cm}),Object.defineProperty(this,Zh,{value:um}),Object.defineProperty(this,Qh,{value:lm}),Object.defineProperty(this,Jh,{value:sm}),Object.defineProperty(this,Xh,{value:am}),Object.defineProperty(this,Yh,{value:om}),Object.defineProperty(this,$h,{value:im}),Object.defineProperty(this,qh,{value:rm}),Object.defineProperty(this,Kh,{value:nm}),Object.defineProperty(this,Gh,{value:tm}),Object.defineProperty(this,Vh,{value:em}),Object.defineProperty(this,Hh,{value:Zf}),Object.defineProperty(this,Uh,{value:Qf}),Object.defineProperty(this,Wh,{value:Jf}),Object.defineProperty(this,Bh,{value:Xf}),Object.defineProperty(this,Mh,{value:Yf}),Object.defineProperty(this,Rh,{value:$f}),Object.defineProperty(this,jh,{value:qf}),Object.defineProperty(this,zh,{value:Kf}),Object.defineProperty(this,Nh,{value:Gf}),Object.defineProperty(this,Oh,{value:Vf}),Object.defineProperty(this,Lh,{value:Hf}),Object.defineProperty(this,Fh,{value:Uf}),Object.defineProperty(this,Ih,{value:Wf}),Object.defineProperty(this,Ph,{value:Bf}),Object.defineProperty(this,Dh,{value:Mf}),Object.defineProperty(this,Th,{value:Rf}),Object.defineProperty(this,_h,{value:jf}),Object.defineProperty(this,Ch,{value:zf}),Object.defineProperty(this,Eh,{value:Nf}),Object.defineProperty(this,Sh,{value:Of}),Object.defineProperty(this,kh,{value:Lf}),Object.defineProperty(this,wh,{value:Ff}),Object.defineProperty(this,xh,{value:If}),Object.defineProperty(this,Ah,{value:Pf}),Object.defineProperty(this,bh,{value:Df}),Object.defineProperty(this,yh,{value:Tf}),Object.defineProperty(this,vh,{value:_f}),Object.defineProperty(this,gh,{value:Cf}),Object.defineProperty(this,mh,{value:Ef}),Object.defineProperty(this,fh,{value:Sf}),Object.defineProperty(this,ph,{value:kf}),Object.defineProperty(this,hh,{value:wf}),Object.defineProperty(this,dh,{value:xf}),Object.defineProperty(this,ch,{value:Af}),Object.defineProperty(this,uh,{value:bf}),Object.defineProperty(this,lh,{value:yf}),Object.defineProperty(this,sh,{value:vf}),Object.defineProperty(this,ah,{value:gf}),Object.defineProperty(this,oh,{value:mf}),Object.defineProperty(this,ih,{get:ff,set:void 0}),Object.defineProperty(this,rh,{get:pf,set:void 0}),Object.defineProperty(this,nh,{get:hf,set:void 0}),Object.defineProperty(this,th,{get:df,set:void 0}),Object.defineProperty(this,eh,{value:cf}),Object.defineProperty(this,Zd,{value:uf}),Object.defineProperty(this,Qd,{value:lf}),Object.defineProperty(this,Jd,{value:sf}),Object.defineProperty(this,Xd,{value:af}),Object.defineProperty(this,Yd,{value:of}),Object.defineProperty(this,$d,{value:rf}),Object.defineProperty(this,qd,{value:nf}),Object.defineProperty(this,Kd,{value:tf}),Object.defineProperty(this,Gd,{value:ef}),Object.defineProperty(this,Vd,{value:Zp}),Object.defineProperty(this,Hd,{value:Qp}),Object.defineProperty(this,Ud,{value:Jp}),Object.defineProperty(this,Wd,{get:Xp,set:void 0}),Object.defineProperty(this,Bd,{value:Yp}),Object.defineProperty(this,Md,{value:$p}),Object.defineProperty(this,Rd,{value:qp}),Object.defineProperty(this,jd,{value:Kp}),Object.defineProperty(this,jc,{writable:!0,value:void 0}),Object.defineProperty(this,Rc,{writable:!0,value:void 0}),Object.defineProperty(this,Mc,{writable:!0,value:!1}),Object.defineProperty(this,Bc,{writable:!0,value:!1}),Object.defineProperty(this,Wc,{writable:!0,value:!1}),Object.defineProperty(this,Uc,{writable:!0,value:!1}),Object.defineProperty(this,Hc,{writable:!0,value:!1}),Object.defineProperty(this,Vc,{writable:!0,value:0}),Object.defineProperty(this,Gc,{writable:!0,value:null}),Object.defineProperty(this,Kc,{writable:!0,value:null}),Object.defineProperty(this,qc,{writable:!0,value:!1}),Object.defineProperty(this,$c,{writable:!0,value:null}),Object.defineProperty(this,Yc,{writable:!0,value:null}),Object.defineProperty(this,Xc,{writable:!0,value:[]}),Object.defineProperty(this,Jc,{writable:!0,value:void 0}),Object.defineProperty(this,Qc,{writable:!0,value:void 0}),Object.defineProperty(this,Zc,{writable:!0,value:null}),Object.defineProperty(this,ed,{writable:!0,value:o.jM6}),Object.defineProperty(this,td,{writable:!0,value:""}),Object.defineProperty(this,nd,{writable:!0,value:{}}),Object.defineProperty(this,rd,{writable:!0,value:{}}),Object.defineProperty(this,id,{writable:!0,value:!1}),Object.defineProperty(this,od,{writable:!0,value:{}}),Object.defineProperty(this,ad,{writable:!0,value:null}),Object.defineProperty(this,sd,{writable:!0,value:""}),Object.defineProperty(this,ld,{writable:!0,value:!1}),Object.defineProperty(this,ud,{writable:!0,value:new Map}),Object.defineProperty(this,cd,{writable:!0,value:[]}),Object.defineProperty(this,dd,{writable:!0,value:new WeakSet}),Object.defineProperty(this,hd,{writable:!0,value:new WeakMap}),Object.defineProperty(this,pd,{writable:!0,value:new Set}),Object.defineProperty(this,fd,{writable:!0,value:new WeakMap}),Object.defineProperty(this,md,{writable:!0,value:new Set}),Object.defineProperty(this,gd,{writable:!0,value:new WeakSet}),Object.defineProperty(this,vd,{writable:!0,value:new WeakSet}),Object.defineProperty(this,yd,{writable:!0,value:new WeakSet}),Object.defineProperty(this,bd,{writable:!0,value:void 0}),Object.defineProperty(this,Ad,{writable:!0,value:void 0}),Object.defineProperty(this,xd,{writable:!0,value:null}),Object.defineProperty(this,wd,{writable:!0,value:{x:0,y:0}}),Object.defineProperty(this,kd,{writable:!0,value:null}),Object.defineProperty(this,Sd,{writable:!0,value:null}),Object.defineProperty(this,Ed,{writable:!0,value:0}),Object.defineProperty(this,Cd,{writable:!0,value:null}),Object.defineProperty(this,_d,{writable:!0,value:null}),Object.defineProperty(this,Td,{writable:!0,value:void 0}),Object.defineProperty(this,Dd,{writable:!0,value:void 0}),Object.defineProperty(this,Pd,{writable:!0,value:null}),Object.defineProperty(this,Id,{writable:!0,value:null}),Object.defineProperty(this,Fd,{writable:!0,value:void 0}),Object.defineProperty(this,Ld,{writable:!0,value:void 0}),Object.defineProperty(this,Od,{writable:!0,value:void 0}),Object.defineProperty(this,Nd,{writable:!0,value:new Set}),Object.defineProperty(this,zd,{writable:!0,value:!1}),(0,qt.A)(this,jc)[jc]=(0,i.A)((0,i.A)({},Gp.DEFAULT_OPTIONS),n),(0,qt.A)(this,Rc)[Rc]=(0,i.A)((0,i.A)((0,i.A)({},Gp.DEFAULT_RULE),t),{},{isPlainText:!0===t.isPlainText||"true"===t.isPlainText}),(0,qt.A)(this,cd)[cd]=r,(0,qt.A)(this,ud)[ud]=new Map((0,qt.A)(this,jc)[jc].transApis.map(e=>[e.apiSlug,e])),(0,qt.A)(this,td)[td]=(0,l.Sm)(),(0,qt.A)(this,Qc)[Qc]=new RegExp(Gp.BUILTIN_SKIP_PATTERNS.map(e=>"(".concat(e.source,")")).join("|")),(0,qt.A)(this,fh)[fh]((0,qt.A)(this,Rc)[Rc].terms),(0,qt.A)(this,rd)[rd]=(0,l.jJ)((0,qt.A)(this,Rc)[Rc].aiTerms),(0,qt.A)(this,dh)[dh](),(0,qt.A)(this,Td)[Td]=(0,qt.A)(this,bh)[bh].bind(this),(0,qt.A)(this,Dd)[Dd]=(0,qt.A)(this,Ah)[Ah].bind(this),(0,qt.A)(this,Fd)[Fd]=(0,qt.A)(this,mh)[mh](),(0,qt.A)(this,Ld)[Ld]=(0,qt.A)(this,gh)[gh](),(0,qt.A)(this,Od)[Od]=(0,qt.A)(this,yh)[yh](),(0,qt.A)(this,Pd)[Pd]=(0,qt.A)(this,sh)[sh].bind(this),(0,qt.A)(this,Id)[Id]=(0,l.sg)((0,qt.A)(this,ch)[ch].bind(this),300),(0,qt.A)(this,jc)[jc].mouseHoverSetting.useMouseHover&&(0,qt.A)(this,Op)[Op](),"true"===(0,qt.A)(this,Rc)[Rc].transOnly&&"true"===(0,qt.A)(this,Rc)[Rc].transOnlyRevert&&(0,qt.A)(this,zp)[zp](),"loading"===document.readyState?document.addEventListener("DOMContentLoaded",()=>(0,qt.A)(this,oh)[oh]()):(0,qt.A)(this,oh)[oh]()}toggleHoverNode(){(0,qt.A)(this,Ah)[Ah]()}toggleMouseHover(){(0,qt.A)(this,Uc)[Uc]?(0,qt.A)(this,Np)[Np]():(0,qt.A)(this,Op)[Op]()}enable(){(0,qt.A)(this,Hc)[Hc]||((0,qt.A)(this,Hc)[Hc]=!0,(0,qt.A)(this,Rc)[Rc].transOpen="true",(0,qt.A)(this,Vc)[Vc]++,(0,qt.A)(this,Mc)[Mc]?(0,qt.A)(this,nh)[nh]?this.rescan():(0,qt.A)(this,zh)[zh]():(0,qt.A)(this,ah)[ah](),"true"===(0,qt.A)(this,Rc)[Rc].transTitle&&(0,qt.A)(this,Hp)[Hp](),R.aQ&&(0,M.Ru)(o._Vq,!0))}disable(){(0,qt.A)(this,Hc)[Hc]&&((0,qt.A)(this,Hc)[Hc]=!1,(0,qt.A)(this,Rc)[Rc].transOpen="false",(0,qt.A)(this,Vc)[Vc]++,(0,qt.A)(this,cp)[cp](),(0,un.aU)(),Gt(),"true"===(0,qt.A)(this,Rc)[Rc].transTitle&&(0,qt.A)(this,nd)[nd].title&&(document.title=(0,qt.A)(this,nd)[nd].title),R.aQ&&(0,M.Ru)(o._Vq,!1))}rescan(){(0,qt.A)(this,Mc)[Mc]&&((0,qt.A)(this,Vc)[Vc]++,(0,qt.A)(this,cp)[cp](),(0,qt.A)(this,Lp)[Lp](),(0,un.aU)(),Gt(),(0,qt.A)(this,ah)[ah]())}toggle(){(0,qt.A)(this,Hc)[Hc]?this.disable():this.enable()}toggleTransOnly(){if((0,qt.A)(this,Hc)[Hc]){const e="true"===(0,qt.A)(this,Rc)[Rc].transOnly?"false":"true";this.updateRule({transOnly:e})}else(0,qt.A)(this,Rc)[Rc].transOnly="true",this.enable()}toggleStyle(){const e=(0,qt.A)(this,Rc)[Rc].textStyle===o.$ET?o.nsG:o.$ET;this.updateRule({textStyle:e})}toggleTransbox(){(0,qt.A)(this,jc)[jc].tranboxSetting.transOpen=!(0,qt.A)(this,jc)[jc].tranboxSetting.transOpen}toggleInputTranslate(){(0,qt.A)(this,jc)[jc].inputRule.transOpen=!(0,qt.A)(this,jc)[jc].inputRule.transOpen}stop(){this.disable(),(0,qt.A)(this,Lp)[Lp](),(0,qt.A)(this,Np)[Np](),(0,qt.A)(this,jp)[jp](),(0,qt.A)(this,Up)[Up](),(0,qt.A)(this,Mc)[Mc]=!1}updateRule(e){let t=!1,n=!1;const r=(0,qt.A)(this,nh)[nh],i=(0,qt.A)(this,rh)[rh];for(const a in e)Object.prototype.hasOwnProperty.call((0,qt.A)(this,Rc)[Rc],a)&&(0,qt.A)(this,Rc)[Rc][a]!==e[a]&&((0,qt.A)(this,Rc)[Rc][a]=e[a],"autoScan"===a||"blockSelector"===a||"hasShadowroot"===a||"scanAll"===a||"isPlainText"===a?n=!0:t=!0);(0,qt.A)(this,Zc)[Zc]=null,(0,qt.A)(this,id)[id]=!1;const o=(0,qt.A)(this,Hc)[Hc]&&(r!==(0,qt.A)(this,nh)[nh]||String(i)!==String((0,qt.A)(this,rh)[rh]));if(n||o||(0,qt.A)(this,Hc)[Hc]&&(0,qt.A)(this,nh)[nh])return this.rescan(),void(0,qt.A)(this,Vp)[Vp]();t&&((0,qt.A)(this,zh)[zh](),(0,qt.A)(this,Vp)[Vp]())}get setting(){return(0,i.A)({},(0,qt.A)(this,jc)[jc])}get rule(){return(0,i.A)({},(0,qt.A)(this,Rc)[Rc])}get eventName(){return(0,qt.A)(this,td)[td]}}function Kp(){if(!document.elementFromPoint||!window.scrollBy)return null;const e=[.5,.33,.66];for(const t of e){const e=Math.max(0,Math.floor(window.innerWidth/2)),n=Math.max(0,Math.min(window.innerHeight-1,Math.floor(window.innerHeight*t))),r=document.elementFromPoint(e,n),i=(0,qt.A)(this,Rd)[Rd](r);if(null===i||void 0===i||!i.isConnected)continue;const o=i.getBoundingClientRect();if(o.width||o.height)return{element:i,top:o.top}}return null}function qp(e){var t,n;if(!e)return null;const r=null===(t=e.closest)||void 0===t?void 0:t.call(e,".".concat(zc.KISS_CLASS.warpper));if(!r)return e;const{nodes:i}=(0,qt.A)(this,hd)[hd].get(r)||{},o=null===i||void 0===i?void 0:i.find(e=>e.isConnected);return(null===o||void 0===o?void 0:o.nodeType)===Node.ELEMENT_NODE?o:null!==o&&void 0!==o&&null!==(n=o.parentElement)&&void 0!==n&&n.isConnected?o.parentElement:r.previousElementSibling||r.parentElement}function $p(e){var t;if(null===e||void 0===e||null===(t=e.element)||void 0===t||!t.isConnected)return;const n=document.scrollingElement||document.documentElement;if(!n)return;const r=window.getComputedStyle(n).overflowY;if(!(n.scrollHeight>n.clientHeight&&"hidden"!==r&&"clip"!==r))return;const i=e.element.getBoundingClientRect().top-e.top;Math.abs(i)>.5&&window.scrollBy(0,i)}function Yp(e){const t=(0,qt.A)(this,jd)[jd]();try{return e()}finally{(0,qt.A)(this,Md)[Md](t)}}function Xp(){var e;if("true"===(0,qt.A)(this,Rc)[Rc].scanAll||(0,qt.A)(this,Rc)[Rc].isPlainText)return zc.KISS_IGNORE_SELECTOR;const t=[zc.KISS_IGNORE_SELECTOR];"false"!==(0,qt.A)(this,Rc)[Rc].autoScan&&t.push(zc.BUILTIN_IGNORE_SELECTOR);const n=null===(e=(0,qt.A)(this,Rc)[Rc].ignoreSelector)||void 0===e?void 0:e.trim();return n&&t.push(n),t.join(", ")}function Jp(e){var t;return(null===e||void 0===e?void 0:e.nodeType)===Node.ELEMENT_NODE&&(null===(t=e.matches)||void 0===t?void 0:t.call(e,(0,qt.A)(this,Wd)[Wd]))}function Qp(e){var t;const n=null===(t=(0,qt.A)(this,Rc)[Rc].blockSelector)||void 0===t?void 0:t.trim();if(!n||(0,qt.A)(this,id)[id]||!zc.isElement(e))return!1;try{return e.matches(n)}catch(r){return(0,qt.A)(this,id)[id]=!0,(0,K.h9)("invalid blockSelector",r),!1}}function Zp(e,t,n){if("string"===typeof t&&t.trim())try{const n=null===e||void 0===e?void 0:e.style;if(!n||"object"!==typeof n||"string"!==typeof n.cssText)return;n.cssText="".concat(n.cssText||"").concat(t)}catch(r){(0,K.h9)("append rule style error",n,r)}}function ef(e){return!!(0,qt.A)(this,Hd)[Hd](e)||zc.isBlockNode(e)}function tf(e){if(!zc.isElementOrFragment(e))return!1;for(const t of e.childNodes)if((0,qt.A)(this,Gd)[Gd](t))return!0;return!1}function nf(){const e=Number((0,qt.A)(this,jc)[jc].maxLength),t=Number.isFinite(e)?Math.max(1,e-1):3e3;return Math.min(3e3,t)}function rf(e,t){const n=e.slice(0,t+1);let r=-1;const i=/(?:[\u3002\uff01\uff1f]+|[.?!]+(?=\s+|$)|\n+)/g;let o;for(;null!==(o=i.exec(n));){const e=o.index+o[0].length;e>0&&e<=t&&(r=e)}if(r>Math.floor(.4*t))return r;for(let a=t;a>Math.floor(.4*t);a--)if(/\s/.test(e[a-1]))return a;return t}function of(e,t){let n=0,r=t;for(;r=e.length)return null;const r=(0,qt.A)(this,Yd)[Yd](e,t);if(r)return{type:"break",count:Math.max(0,r.count-1),nextOffset:r.nextOffset};const i=(0,qt.A)(this,Xd)[Xd](e,t);if(i-t<=n)return{type:"text",value:e.slice(t,i),nextOffset:i};const o=(0,qt.A)(this,$d)[$d](e.slice(t,i),n);return{type:"text",value:e.slice(t,t+o),nextOffset:t+o}}function lf(e){if("text"!==e.type||!e.value)return null;const t=document.createElement("span");return t.style.cssText="display: block; white-space: pre-wrap;",t.textContent=e.value,t}function uf(e,t){var n,r;let i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(t.runId!==(0,qt.A)(this,Vc)[Vc]||!e.isConnected||!(0,qt.A)(this,Rc)[Rc].isPlainText)return void(0,qt.A)(this,yd)[yd].delete(e);const o=(0,qt.A)(this,qd)[qd](),a=i?20:100,s=i?1/0:10,u=(null===(n=(r=performance).now)||void 0===n?void 0:n.call(r))||Date.now(),c=document.createDocumentFragment(),d=[];let h=0;for(;(t.offset0)&&h0){c.appendChild(document.createElement("br")),t.pendingBreaks--,h++;continue}const e=(0,qt.A)(this,Jd)[Jd](t.source,t.offset,o);if(!e)break;if(t.offset=e.nextOffset,"break"===e.type)t.pendingBreaks+=e.count;else{const t=(0,qt.A)(this,Qd)[Qd](e);t&&(c.appendChild(t),d.push(t),h++)}if(!i&&h>0&&((null===(p=(f=performance).now)||void 0===p?void 0:p.call(f))||Date.now())-u>=s)break}c.childNodes.length&&(e.appendChild(c),d.forEach(e=>(0,qt.A)(this,Mh)[Mh](e))),t.offset0?(0,l.IO)(()=>(0,qt.A)(this,Zd)[Zd](e,t),100):(0,qt.A)(this,yd)[yd].delete(e)}function cf(e){if("true"===e.dataset.kissPreprocessed)return;const t={source:e.textContent||"",offset:0,runId:(0,qt.A)(this,Vc)[Vc],pendingBreaks:0};e.dataset.kissPreprocessed="true",(0,qt.A)(this,yd)[yd].add(e),e.replaceChildren(),(0,qt.A)(this,Zd)[Zd](e,t,!0)}function df(){return(0,qt.A)(this,ud)[ud].get((0,qt.A)(this,Rc)[Rc].apiSlug)||o.iVS}function hf(){var e;const t=null===(e=(0,qt.A)(this,ud)[ud].get((0,qt.A)(this,Rc)[Rc].apiSlug))||void 0===e?void 0:e.transAllnow;return void 0!==t?!0===t||"true"===t:!0===(0,qt.A)(this,jc)[jc].transAllnow||"true"===(0,qt.A)(this,jc)[jc].transAllnow}function pf(){var e;const t=null===(e=(0,qt.A)(this,ud)[ud].get((0,qt.A)(this,Rc)[Rc].apiSlug))||void 0===e?void 0:e.rootMargin,n=(0,qt.A)(this,jc)[jc].rootMargin,r=Number(void 0!==t&&""!==t?t:void 0!==n&&""!==n?n:500);return Number.isFinite(r)?r:500}function ff(){if((0,qt.A)(this,Zc)[Zc])return(0,qt.A)(this,Zc)[Zc];const[e,t]=(0,qt.A)(this,th)[th].placeholder.split(" ");let n=(0,qt.A)(this,th)[th].placetag;Array.isArray(n)&&(n=n[0]||"i"),"string"!==typeof n&&(n="i");const r=(0,qt.A)(this,th)[th].placetagFormat||"compact";let i,o;"attribute"===r?(i=new RegExp("<".concat(n,"\\s+i=(\\d+)>"),"gi"),o=new RegExp("<\\/".concat(n,">"),"gi")):(i=new RegExp("<".concat(n,"(\\d+)>"),"gi"),o=new RegExp("<\\/".concat(n,"(\\d+)>"),"gi"));const a=zc.escapeRegex(e),s=zc.escapeRegex(t),l="".concat(a,"\\d+").concat(s),u={startDelimiter:e,endDelimiter:t,tagName:n,format:r,safeTag:"span",openRegex:i,closeRegex:o,placeholderRegex:new RegExp(l,"g")};return(0,qt.A)(this,Zc)[Zc]=u,u}function mf(){"true"===(0,qt.A)(this,Rc)[Rc].transOpen?this.enable():(0,qt.A)(this,jc)[jc].preInit&&(0,qt.A)(this,ah)[ah]()}function gf(){(0,qt.A)(this,Mc)[Mc]=!0,(0,qt.A)(this,Wp)[Wp](),(0,qt.A)(this,Rc)[Rc].isPlainText&&document.querySelectorAll("pre").forEach(e=>{(0,qt.A)(this,eh)[eh](e)}),document.querySelectorAll((0,qt.A)(this,Rc)[Rc].rootsSelector||"body").forEach(e=>{(0,qt.A)(this,Rh)[Rh](e)}),"true"!==(0,qt.A)(this,Rc)[Rc].scanAll&&"true"!==(0,qt.A)(this,Rc)[Rc].hasShadowroot||((0,qt.A)(this,lh)[lh](),(0,qt.A)(this,ch)[ch]())}function vf(e){var t;"KISS_SHADOW_ROOT_CREATED"===(null===(t=e.data)||void 0===t?void 0:t.type)&&(0,qt.A)(this,Id)[Id]()}function yf(){if(!(0,qt.A)(this,Wc)[Wc]){dc(uc,"kiss-translator-inject-shadowroot-js"),(0,qt.A)(this,Wc)[Wc]=!0}window.addEventListener("message",(0,qt.A)(this,Pd)[Pd])}function bf(){window.removeEventListener("message",(0,qt.A)(this,Pd)[Pd])}function Af(){try{(0,qt.A)(this,Ih)[Ih]().forEach(e=>{(0,qt.A)(this,jh)[jh](e)})}catch(e){(0,K.h9)("findAllShadowRoots",e)}}function xf(){const[e,t]=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=Pc();e.forEach(e=>{t[e.styleSlug]=e.styleCode});const n={};let r="";return Object.entries(t).forEach(e=>{let[t,r]=e;n[t]=Ec(xc||(xc=pc(["\n ","\n "])),r)}),Object.entries(t).forEach(e=>{let[t,i]=e;r+="\n .".concat(n[t]," {\n ").concat(i,"\n }\n ")}),[n,r]}((0,qt.A)(this,jc)[jc].customStyles);(0,qt.A)(this,od)[od]=e,(0,qt.A)(this,sd)[sd]=t;try{const e=new CSSStyleSheet;e.replaceSync(t),(0,qt.A)(this,ad)[ad]=e}catch(n){(0,K.h9)("createTextStyles: CSSStyleSheet not available",n),(0,qt.A)(this,ld)[ld]=!0}}function wf(e){if(!(0,qt.A)(this,ld)[ld]&&(0,qt.A)(this,ad)[ad])try{e.adoptedStyleSheets.includes((0,qt.A)(this,ad)[ad])||(e.adoptedStyleSheets=[...e.adoptedStyleSheets,(0,qt.A)(this,ad)[ad]])}catch(t){(0,qt.A)(this,ld)[ld]=!0,(0,qt.A)(this,ph)[ph](e)}else(0,qt.A)(this,ph)[ph](e)}function kf(e){const t="".concat(o.jM6,"-fallback-style");if(e.getElementById(t))return;const n=document.createElement("style");n.id=t,n.textContent=(0,qt.A)(this,sd)[sd]||"",e.append(n)}function Sf(e){if((0,qt.A)(this,Xc)[Xc]=[],(0,qt.A)(this,Jc)[Jc]=null,!e||"string"!==typeof e)return;const t=[],n=e.split(/\n|;/);for(const i of n){const e=i.trim();if(!e)continue;let n=e.lastIndexOf(",");-1===n&&(n=e.length);const o=e.substring(0,n).trim(),a=e.substring(n+1).trim();if(o)try{new RegExp(o),t.push("(".concat(o,")")),(0,qt.A)(this,Xc)[Xc].push(a)}catch(r){(0,K.h9)('Invalid RegExp for term: "'.concat(o,'"'),r)}}t.length>0&&((0,qt.A)(this,Jc)[Jc]=new RegExp(t.join("|"),"g"))}function Ef(){const{transInterval:e}=(0,qt.A)(this,jc)[jc],t=(0,qt.A)(this,rh)[rh],n=new Set,r=(0,l.sg)(()=>{n.forEach(e=>(0,qt.A)(this,Fp)[Fp](e)),n.clear()},e);return new IntersectionObserver(e=>{e.forEach(e=>{e.isIntersecting?((0,qt.A)(this,pd)[pd].add(e.target),n.add(e.target),r()):(0,qt.A)(this,pd)[pd].delete(e.target)})},{threshold:.01,rootMargin:"".concat(t,"px 0px ").concat(t,"px 0px")})}function Cf(){return new MutationObserver(e=>{for(const r of e){var t,n;if(!((0,qt.A)(this,vd)[vd].has(r.target)||(0,qt.A)(this,gd)[gd].has(r.target)||(0,qt.A)(this,yd)[yd].has(r.target)||(null===(t=r.nextSibling)||void 0===t||null===(n=t.tagName)||void 0===n?void 0:n.toLowerCase())===(0,qt.A)(this,ed)[ed]))if("characterData"===r.type)r.oldValue===r.target.nodeValue||(0,qt.A)(this,Qc)[Qc].test(r.target.nodeValue)||(0,qt.A)(this,Lh)[Lh](r.target.parentElement);else if("childList"===r.type){let e=new Set,t=!1;r.addedNodes.forEach(n=>{var r;(0,qt.A)(this,gd)[gd].has(n)||(null===(r=n.nodeName)||void 0===r?void 0:r.toLowerCase())===(0,qt.A)(this,ed)[ed]||(n.nodeType===Node.TEXT_NODE?t=!0:zc.isElementOrFragment(n)&&e.add(n))}),t?(0,qt.A)(this,Lh)[Lh](r.target):e.forEach(e=>(0,qt.A)(this,Lh)[Lh](e))}}})}function _f(e,t){const n=e.filter(e=>e instanceof Node);n.forEach(e=>(0,qt.A)(this,vd)[vd].add(e));try{return t()}finally{queueMicrotask(()=>{n.forEach(e=>(0,qt.A)(this,vd)[vd].delete(e))})}}function Tf(){return(0,l.sg)(e=>{var t,n,r;const i=e,o=null===(t=i.closest)||void 0===t?void 0:t.call(i,".".concat(zc.KISS_CLASS.warpper)),{mouseHoverKey:a=[],mouseHoverKey2:s=[]}=(0,qt.A)(this,jc)[jc].mouseHoverSetting,l=a.length>0||s.length>0;if(o)return(0,qt.A)(this,xd)[xd]=o,void((0,qt.A)(this,Sh)[Sh](o)?l?((0,qt.A)(this,Ch)[Ch](),(0,qt.A)(this,Sd)[Sd]!==o&&(0,qt.A)(this,ip)[ip]()):(0,qt.A)(this,_h)[_h](o):(0,qt.A)(this,ip)[ip]());((0,qt.A)(this,_d)[_d]||null!==(n=(0,qt.A)(this,Sd)[Sd])&&void 0!==n&&null!==(r=n.classList)&&void 0!==r&&r.contains(zc.KISS_CLASS.warpper))&&(0,qt.A)(this,ip)[ip]();let u=null;for(;e&&e!==document.body;){if((0,qt.A)(this,dd)[dd].has(e)){u=e;break}e=e.parentElement}(0,qt.A)(this,xd)[xd]=u||i,l||(0,qt.A)(this,Mc)[Mc]||(0,qt.A)(this,ah)[ah](),!l&&u?(0,qt.A)(this,xh)[xh](u):!u&&(0,qt.A)(this,wh)[wh]()&&(0,qt.A)(this,ip)[ip]()},100)}function Df(e){(0,qt.A)(this,wd)[wd]={x:e.clientX,y:e.clientY},(0,qt.A)(this,wh)[wh]()&&(0,qt.A)(this,kd)[kd]&&!(0,qt.A)(this,kd)[kd].hidden&&(0,qt.A)(this,np)[np]();let t=e.composedPath()[0];(0,qt.A)(this,Od)[Od](t)}function Pf(){(0,qt.A)(this,Mc)[Mc]||(0,qt.A)(this,ah)[ah]();let e=(0,qt.A)(this,xd)[xd];(0,qt.A)(this,Sh)[Sh](e)?(0,qt.A)(this,Th)[Th](e):e&&(0,qt.A)(this,dd)[dd].has(e)&&(0,qt.A)(this,xh)[xh](e)}function If(e){if((0,qt.A)(this,wh)[wh]())(0,qt.A)(this,op)[op](e);else if((0,qt.A)(this,fd)[fd].has(e)){if(Array.from((0,qt.A)(this,up)[up](e)).some(e=>!(0,qt.A)(this,hd)[hd].has(e)))return;(0,qt.A)(this,hp)[hp](e)}else(0,qt.A)(this,Uh)[Uh](e)}function Ff(){var e;return(null===(e=(0,qt.A)(this,jc)[jc].mouseHoverSetting)||void 0===e?void 0:e.displayMode)===o.H74}function Lf(){return(0,qt.A)(this,Uc)[Uc]&&(0,qt.A)(this,wh)[wh]()&&"true"===(0,qt.A)(this,Rc)[Rc].transOnly}function Of(e){var t,n;if(!(0,qt.A)(this,kh)[kh]()||null===e||void 0===e||null===(t=e.classList)||void 0===t||!t.contains(zc.KISS_CLASS.warpper))return!1;const r=(0,qt.A)(this,hd)[hd].get(e);return Boolean((null===r||void 0===r?void 0:r.isHide)&&(null===(n=r.nodes)||void 0===n?void 0:n.length))}function Nf(e){const{nodes:t=[]}=(0,qt.A)(this,hd)[hd].get(e)||{};return t.map(e=>e.textContent||"").join("").trim()}function zf(){(0,qt.A)(this,Cd)[Cd]&&(clearTimeout((0,qt.A)(this,Cd)[Cd]),(0,qt.A)(this,Cd)[Cd]=null),(0,qt.A)(this,_d)[_d]=null}function jf(e){var t;if((0,qt.A)(this,Sd)[Sd]===e&&null!==(t=(0,qt.A)(this,kd)[kd])&&void 0!==t&&t.isConnected)return;if((0,qt.A)(this,_d)[_d]===e)return;(0,qt.A)(this,ip)[ip]();const n=parseFloat((0,qt.A)(this,Rc)[Rc].transOnlyRevertDelay),r=Number.isFinite(n)?Math.max(0,n):.5;(0,qt.A)(this,_d)[_d]=e,(0,qt.A)(this,Cd)[Cd]=setTimeout(()=>{(0,qt.A)(this,Cd)[Cd]=null,(0,qt.A)(this,_d)[_d]=null,(0,qt.A)(this,xd)[xd]===e&&(0,qt.A)(this,Sh)[Sh](e)&&(0,qt.A)(this,Th)[Th](e)},1e3*r)}function Rf(e){(0,qt.A)(this,Ch)[Ch]();const t=(0,qt.A)(this,Eh)[Eh](e);t?((0,qt.A)(this,ip)[ip](),(0,qt.A)(this,Sd)[Sd]=e,(0,qt.A)(this,rp)[rp](t)):(0,qt.A)(this,ip)[ip]()}function Mf(e){var t,n;return e.openOrClosedShadowRoot?e.openOrClosedShadowRoot:"undefined"!==typeof globalThis&&null!==(t=globalThis.chrome)&&void 0!==t&&null!==(n=t.dom)&&void 0!==n&&n.openOrClosedShadowRoot&&e instanceof HTMLElement?globalThis.chrome.dom.openOrClosedShadowRoot(e):e.shadowRoot}function Bf(e){var t,n;return(null===e||void 0===e?void 0:e.nodeType)===Node.ELEMENT_NODE&&((null===(t=e.matches)||void 0===t?void 0:t.call(e,zc.KISS_IGNORE_SELECTOR))||(null===(n=e.closest)||void 0===n?void 0:n.call(e,zc.KISS_IGNORE_SELECTOR)))}function Wf(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:document.body,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:new Set;try{const n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT);for(;n.nextNode();){const e=n.currentNode;if((0,qt.A)(this,Ph)[Ph](e))continue;const r=(0,qt.A)(this,Dh)[Dh](e);r&&(t.add(r),(0,qt.A)(this,Ih)[Ih](r,t))}}catch(n){(0,K.h9)("\u65e0\u6cd5\u8bbf\u95ee\u67d0\u4e2a shadowRoot",n)}return t}function Uf(e){var t;if(!zc.isElementOrFragment(e)||null!==(t=e.closest)&&void 0!==t&&t.call(e,(0,qt.A)(this,Wd)[Wd]))return null;let n=e;for(;n&&n!==document.body;){var r;if(null!==(r=n.classList)&&void 0!==r&&r.contains(zc.KISS_CLASS.original))n=n.parentElement;else{if((0,qt.A)(this,Gd)[Gd](n)||(0,qt.A)(this,dd)[dd].has(n))for(const e of(0,qt.A)(this,md)[md])if(e.contains(n))return n;n=n.parentElement}}return null}function Hf(e){(0,qt.A)(this,Nd)[Nd].add(e),(0,qt.A)(this,zd)[zd]||((0,qt.A)(this,zd)[zd]=!0,(0,l.IO)(()=>{(0,qt.A)(this,Nd)[Nd].forEach(e=>(0,qt.A)(this,Oh)[Oh](e)),(0,qt.A)(this,Nd)[Nd].clear(),(0,qt.A)(this,zd)[zd]=!1},100))}function Vf(e){const t=(0,qt.A)(this,Fh)[Fh](e);t&&((0,qt.A)(this,fd)[fd].delete(t),(0,qt.A)(this,dp)[dp](t),(0,qt.A)(this,Wh)[Wh](t))}function Gf(e){(0,qt.A)(this,Fd)[Fd].unobserve(e),(0,qt.A)(this,Fd)[Fd].observe(e)}function Kf(){(0,qt.A)(this,pd)[pd].forEach(e=>(0,qt.A)(this,Nh)[Nh](e))}function qf(e){try{if(e.host.matches("#".concat(o.Reo.fabID,", #").concat(o.Reo.boxID)))return;(0,qt.A)(this,Rh)[Rh](e),(0,qt.A)(this,hh)[hh](e)}catch(t){(0,K.h9)("startObserveShadowRoot",t)}}function $f(e){(0,qt.A)(this,md)[md].has(e)||((0,qt.A)(this,md)[md].add(e),(0,qt.A)(this,Ld)[Ld].observe(e,{childList:!0,subtree:!0,characterData:!0,characterDataOldValue:!0}),(0,qt.A)(this,Wh)[Wh](e))}function Yf(e){if(zc.isElement(e)){if(!(0,qt.A)(this,xp)[xp](e))return(0,qt.A)(this,Rc)[Rc].highlightWords===o.vwl&&(0,qt.A)(this,Vh)[Vh](e),!(0,qt.A)(this,dd)[dd].has(e)&&(0,qt.A)(this,Hc)[Hc]&&(0,qt.A)(this,nh)[nh]?((0,qt.A)(this,dd)[dd].add(e),void(0,qt.A)(this,Uh)[Uh](e)):(0,qt.A)(this,dd)[dd].has(e)?void(!(0,qt.A)(this,fd)[fd].has(e)&&(0,qt.A)(this,pd)[pd].has(e)&&(0,qt.A)(this,Nh)[Nh](e)):((0,qt.A)(this,dd)[dd].add(e),void(0,qt.A)(this,Fd)[Fd].observe(e));(0,qt.A)(this,dd)[dd].has(e)||((0,qt.A)(this,dd)[dd].add(e),(0,qt.A)(this,Fd)[Fd].observe(e))}}function Xf(e){var t;null!==(t=e.matches)&&void 0!==t&&t.call(e,(0,qt.A)(this,Rc)[Rc].selector)&&(0,qt.A)(this,Mh)[Mh](e),e.querySelectorAll((0,qt.A)(this,Rc)[Rc].selector).forEach(e=>{var t;null!==(t=e.closest)&&void 0!==t&&t.call(e,(0,qt.A)(this,Wd)[Wd])||(0,qt.A)(this,Mh)[Mh](e)})}function Jf(e){var t;if(!zc.isElementOrFragment(e)||null!==(t=e.matches)&&void 0!==t&&t.call(e,(0,qt.A)(this,Wd)[Wd]))return;if("false"===(0,qt.A)(this,Rc)[Rc].autoScan)return void(0,qt.A)(this,Bh)[Bh](e);const n=zc.hasTextNode(e);if(!n&&1===e.children.length){var r;const t=e.children[0];if(null===(r=t.classList)||void 0===r||!r.contains(zc.KISS_CLASS.warpper))return void(0,qt.A)(this,Wh)[Wh](t)}const i=(0,qt.A)(this,Kd)[Kd](e);if(!n&&i||(0,qt.A)(this,Mh)[Mh](e),i)for(const o of e.children){const e=(0,qt.A)(this,Gd)[Gd](o);n&&!e||(0,qt.A)(this,Wh)[Wh](o)}}async function Qf(e){if((0,qt.A)(this,fd)[fd].has(e)||!zc.isElementOrFragment(e))return;if((0,qt.A)(this,fd)[fd].set(e,(0,i.A)({},(0,qt.A)(this,Rc)[Rc])),(0,qt.A)(this,Yh)[Yh](e.textContent))return;let t="";const{fromLang:n="auto",toLang:r,splitParagraph:a=o.TWY,splitLength:s=100}=(0,qt.A)(this,Rc)[Rc],{langDetector:l,skipLangs:u=[]}=(0,qt.A)(this,jc)[jc];if("auto"===n&&(t=await Nc(e.textContent,l),t&&(r.slice(0,2)===t.slice(0,2)||u.includes(t))))return;a!==o.TWY&&(0,qt.A)(this,Gh)[Gh](e,a,s);let c=[];[...e.childNodes].forEach(n=>{const r=(0,qt.A)(this,$h)[$h](n),i=n.nodeType===Node.ELEMENT_NODE||n.nodeType===Node.TEXT_NODE;!r&&i?c.push(n):r&&c.length&&((0,qt.A)(this,Zh)[Zh](c,e,t),c=[])}),c.length&&(0,qt.A)(this,Zh)[Zh](c,e,t)}function Zf(e,t){var n;if("b"===(null===(n=e.parentNode)||void 0===n?void 0:n.nodeName.toLowerCase()))return;if(!t.test(e.textContent))return;t.lastIndex=0;const r=e.textContent.split(t),i=[];r.forEach((e,t)=>{if(e)if(t%2===1){const t=document.createElement("b");t.className=zc.KISS_CLASS.highlight,t.style.cssText=(0,qt.A)(this,Rc)[Rc].highlightStyle||"",t.textContent=e,(0,qt.A)(this,gd)[gd].add(t),i.push(t)}else{const t=document.createTextNode(e);(0,qt.A)(this,gd)[gd].add(t),i.push(t)}}),i.length>0&&e.replaceWith(...i)}function em(e){if(!e||0===(0,qt.A)(this,cd)[cd].length)return;const t=(0,qt.A)(this,cd)[cd].map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")),n=new RegExp("\\b(".concat(t.join("|"),")\\b"),"gi");if(e.nodeType===Node.ELEMENT_NODE){const t=document.createTreeWalker(e,NodeFilter.SHOW_TEXT,null,!1),r=[];let i;for(;i=t.nextNode();)r.push(i);r.forEach(e=>{(0,qt.A)(this,Hh)[Hh](e,n)})}else e.nodeType===Node.TEXT_NODE&&(0,qt.A)(this,Hh)[Hh](e,n)}function tm(e,t,n){const r=/[\u3002\uff01\uff1f]+|[.?!]+(?=\s+|$)/g;[...e.childNodes].forEach(e=>{if(e.nodeType!==Node.TEXT_NODE||""===e.textContent.trim())return;const t=e.textContent,n=[];let i,o=0;for(;null!==(i=r.exec(t));){let e=i.index+i[0].length;for(;ee.trim().length>0);if(a.length<=1)return;const s=a.map(e=>{const t=document.createTextNode(e);return(0,qt.A)(this,gd)[gd].add(t),t});e.replaceWith(...s)});const i=/(?:[\u3002\uff01\uff1f?!]+|(?{var r,s;a+=e.textContent.length;if(i.test(e.textContent)&&"BR"!==(null===(r=e.nextSibling)||void 0===r||null===(s=r.nodeName)||void 0===s?void 0:s.toUpperCase())&&(t===o.J5R||t===o.a7S&&a>=n)){a=0;const t=document.createElement("br");t.className=zc.KISS_CLASS.br,(0,qt.A)(this,gd)[gd].add(t),e.after(t)}})}function nm(e){if(!e)return;e.querySelectorAll(".".concat(zc.KISS_CLASS.highlight)).forEach(e=>{const t=document.createTextNode(e.textContent);e.replaceWith(t)}),e.normalize()}function rm(e){e&&(e.querySelectorAll(".".concat(zc.KISS_CLASS.br)).forEach(e=>e.remove()),e.normalize())}function im(e){var t,n,r;if(!zc.isElementOrFragment(e))return!1;let i=!1;try{i=e.matches((0,qt.A)(this,Rc)[Rc].keepSelector)}catch(o){(0,K.h9)("keepSelector match error in shouldBreak",(0,qt.A)(this,Rc)[Rc].keepSelector,o)}return!i&&(!!(zc.TAGS.BREAK_LINE.has(null===(t=e.nodeName)||void 0===t?void 0:t.toUpperCase())||null!==(n=e.matches)&&void 0!==n&&n.call(e,(0,qt.A)(this,Wd)[Wd])||(null===(r=e.nodeName)||void 0===r?void 0:r.toLowerCase())===(0,qt.A)(this,ed)[ed])||(!("true"!==(0,qt.A)(this,Rc)[Rc].autoScan||!(0,qt.A)(this,Gd)[Gd](e))||!("false"!==(0,qt.A)(this,Rc)[Rc].autoScan||!e.matches((0,qt.A)(this,Rc)[Rc].selector)&&!e.querySelector((0,qt.A)(this,Rc)[Rc].selector))))}function om(e){if("string"!==typeof e)return!0;const t=e.trim();return!t||(t.length<(0,qt.A)(this,jc)[jc].minLength||t.length>(0,qt.A)(this,jc)[jc].maxLength||(1===t.length&&!t.match(/[a-zA-Z]/)||(!(isNaN(parseFloat(t))||!isFinite(t))||!!(0,qt.A)(this,Qc)[Qc].test(t))))}function am(e){if(e instanceof Error){const t=e.name?"[".concat(e.name,"]"):"[UnknownError]",n=e.message?" ".concat(e.message):"";return"".concat(t).concat(n,"\n").concat(e.stack||"")}if("string"===typeof e)return e;try{return JSON.stringify(e)||String(e)}catch(vr){return String(e)}}async function sm(e){var t;if(null!==(t=navigator.clipboard)&&void 0!==t&&t.writeText)return void await navigator.clipboard.writeText(e);const n=document.createElement("textarea");n.value=e,n.setAttribute("readonly",""),n.style.cssText="position: fixed; left: -9999px; top: 0; opacity: 0;",document.body.appendChild(n);try{n.focus(),n.select(),document.execCommand("copy")}finally{n.remove()}}function lm(e,t){var n,r,i;const a=(0,o.BM1)((0,qt.A)(this,jc)[jc].uiLang||"zh")("copy")||"Copy",s="dark"===(0,qt.A)(this,jc)[jc].darkMode||"auto"===(0,qt.A)(this,jc)[jc].darkMode&&(null===(n=(r=window).matchMedia)||void 0===n||null===(i=n.call(r,"(prefers-color-scheme: dark)"))||void 0===i?void 0:i.matches),l=s?"#1f1f23":"#ffffff",u=s?"rgba(255, 255, 255, 0.82)":"rgba(0, 0, 0, 0.78)",c=s?"rgba(32, 156, 238, 0.45)":"rgba(32, 156, 238, 0.28)",d=s?"0 8px 24px rgba(0, 0, 0, 0.42)":"0 8px 24px rgba(0, 0, 0, 0.16)",h=s?"#ff8a80":"#d32f2f",p=s?"rgba(32, 156, 238, 0.14)":"rgba(32, 156, 238, 0.08)",f=s?"rgba(32, 156, 238, 0.24)":"rgba(32, 156, 238, 0.16)",m=document.createElement("span");m.style.cssText="position: relative; display: inline-flex; align-items: center; vertical-align: middle;";const g=function(){const e=Cl("svg",{viewBox:"0 0 24 24",style:"display: inline-block; width: 1em; height: 1em; vertical-align: middle; cursor: pointer; opacity: 0.7;"});e.addEventListener("mouseenter",()=>{e.style.opacity="1"}),e.addEventListener("mouseleave",()=>{e.style.opacity="0.7"});const t=Cl("path",{d:"M17.65 6.35A7.958 7.958 0 0 0 12 4C7.58 4 4.01 7.58 4.01 12S7.58 20 12 20c3.73 0 6.84-2.55 7.73-6h-2.08A5.99 5.99 0 0 1 12 18c-3.31 0-6-2.69-6-6s2.69-6 6-6c1.66 0 3.14.69 4.22 1.78L13 11h7V4l-2.35 2.35z",fill:"#F44336"});return e.appendChild(t),e}();g.classList.add(zc.KISS_CLASS.retry),g.setAttribute("role","button"),g.setAttribute("tabindex","0");const v=document.createElement("span");v.className="notranslate",v.setAttribute("translate","no"),v.style.cssText=["position: fixed","left: 0","top: 0","z-index: 2147483647","display: none","box-sizing: border-box","width: max-content","max-width: min(420px, calc(100vw - 16px))","max-height: 240px","overflow: auto","padding: 10px 10px 8px 12px","border: 1px solid ".concat(c),"border-left: 3px solid #209CEE","border-radius: 6px","background: ".concat(l),"color: ".concat(u),"box-shadow: ".concat(d),"font-size: 12px","line-height: 1.5","font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif","white-space: pre-wrap","overflow-wrap: anywhere","user-select: text","visibility: hidden"].join("; ");const y=document.createElement("span");y.textContent=e,y.style.cssText="color: ".concat(h,";");const b=document.createElement("button");b.type="button",b.textContent=a,b.style.cssText=["display: flex","align-items: center","justify-content: center","width: fit-content","margin-top: 8px","padding: 3px 8px","border: 1px solid rgba(32, 156, 238, 0.35)","border-radius: 4px","background: ".concat(p),"color: #209CEE","font-size: 12px","line-height: 1.4","font-weight: 500","cursor: pointer","transition: background 0.2s ease, border-color 0.2s ease"].join("; "),b.addEventListener("mouseenter",()=>{b.style.background=f,b.style.borderColor="rgba(32, 156, 238, 0.55)"}),b.addEventListener("mouseleave",()=>{b.style.background=p,b.style.borderColor="rgba(32, 156, 238, 0.35)"}),b.addEventListener("click",async t=>{t.stopPropagation(),t.preventDefault();try{await(0,qt.A)(this,Jh)[Jh](e),b.textContent="OK",setTimeout(()=>{b.textContent=a},800)}catch(n){(0,K.h9)("copy translate error: ",(0,qt.A)(this,Xh)[Xh](n))}});let A=null;const x=()=>{A&&(clearTimeout(A),A=null)},w=()=>{if(!m.isConnected)return void S();const e=m.getBoundingClientRect(),t=v.getBoundingClientRect(),n=t.width,r=t.height,i=window.innerWidth-n-8,o=window.innerHeight-r-8;let a=e.left,s=e.bottom+6;s>o&&(s=e.top-r-6),v.style.left="".concat(Math.max(8,Math.min(a,i)),"px"),v.style.top="".concat(Math.max(8,Math.min(s,o)),"px"),v.style.visibility="visible"},k=()=>{x(),v.isConnected||document.body.appendChild(v),v.style.display="block",v.style.visibility="hidden",w(),window.addEventListener("scroll",w,!0),window.addEventListener("resize",w)},S=()=>{x(),window.removeEventListener("scroll",w,!0),window.removeEventListener("resize",w),v.style.display="none",v.style.visibility="hidden",v.remove()},E=()=>{x(),A=setTimeout(()=>{const e=document.activeElement;m.matches(":hover")||v.matches(":hover")||m.contains(e)||v.contains(e)||S()},80)};return m.addEventListener("mouseenter",k),m.addEventListener("mouseleave",E),m.addEventListener("focusin",k),m.addEventListener("focusout",e=>{v.contains(e.relatedTarget)||m.contains(e.relatedTarget)||E()}),v.addEventListener("mouseenter",k),v.addEventListener("mouseleave",E),v.addEventListener("focusin",k),v.addEventListener("focusout",e=>{m.contains(e.relatedTarget)||v.contains(e.relatedTarget)||E()}),g.addEventListener("click",e=>{e.stopPropagation(),e.preventDefault(),S(),t()}),g.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.stopPropagation(),e.preventDefault(),S(),t())}),v.appendChild(y),v.appendChild(b),m.appendChild(g),m}async function um(e,t,n){const{transTag:r,textStyle:i,transEndHook:a,transOnly:s,termsStyle:l,textExtStyle:u,selectStyle:c,parentStyle:d,grandStyle:h,toLang:p,highlightWords:f,transOrder:m="original-first",wrapOriginal:g,originalTextStyle:v}=(0,qt.A)(this,Rc)[Rc],{newlineLength:y}=(0,qt.A)(this,jc)[jc],b=t.parentElement,A="true"===s;try{const[s,w]=(0,qt.A)(this,ap)[ap](e,l);if((0,qt.A)(this,Yh)[Yh](s))return;const k=document.createElement((0,qt.A)(this,ed)[ed]);k.className="".concat(zc.KISS_CLASS.warpper," notranslate");const S=document.createElement(r);if(S.lang=p,S.className="".concat(zc.KISS_CLASS.inner," ").concat((0,qt.A)(this,od)[od][i]||""),null!==u&&void 0!==u&&u.trim()&&(S.style.cssText=u),S.appendChild(_l()),s.length>y){const e=document.createElement("br");e.hidden=A,"translation-first"===m?(k.appendChild(S),k.appendChild(e)):(k.appendChild(e),k.appendChild(S))}else{const e=document.createElement("span");e.textContent=" ",e.className=zc.KISS_CLASS.space,e.hidden=A,"translation-first"===m?(k.appendChild(S),k.appendChild(e)):(k.appendChild(e),k.appendChild(S))}(0,qt.A)(this,Bd)[Bd](()=>{"translation-first"===m?e[0].before(k):e[e.length-1].after(k)});const E=(0,qt.A)(this,Vc)[Vc],C="disabled"!==((0,qt.A)(this,th)[th].streamRenderMode||"disabled")&&(0,qt.A)(this,th)[th].useStream&&o.sNP.stream.has((0,qt.A)(this,th)[th].apiType);let _=null,T="",D=!1;const P=S,I=()=>{if(D){const e=P.firstChild;e&&(e.nodeValue=T)}else P.textContent="",P.appendChild(document.createTextNode(T)),D=!0;_=null},F=C?e=>{if((0,qt.A)(this,Vc)[Vc]!==E)return;const{text:t,isComplete:n}=e;t&&(n?(T=Array.isArray(t)?t[0]:t,_&&(cancelAnimationFrame(_),_=null),I()):(T=t,_||(_=requestAnimationFrame(I))))}:null,{trText:L,isSame:O}=await(0,qt.A)(this,lp)[lp](s,n,F);if(_&&(cancelAnimationFrame(_),_=null),(0,qt.A)(this,Vc)[Vc]!==E)throw new Error("Request terminated");if(!L||O)return void(0,qt.A)(this,Bd)[Bd](()=>{k.remove()});const N=(0,qt.A)(this,sp)[sp](L,w),z=rt.createHTML(N);(0,qt.A)(this,Bd)[Bd](()=>{S.innerHTML=z});let j=null;"true"===g&&(0,qt.A)(this,Bd)[Bd](()=>{j=(0,qt.A)(this,vp)[vp](e,v)});const R={nodes:e,originalWrapper:j,isHide:A};if((0,qt.A)(this,hd)[hd].set(k,R),A&&(0,qt.A)(this,Bd)[Bd](()=>{(0,qt.A)(this,Sp)[Sp](R,k)}),(0,qt.A)(this,Vd)[Vd](t,c,"selectStyle"),(0,qt.A)(this,Vd)[Vd](b,d,"parentStyle"),(0,qt.A)(this,Vd)[Vd](null===b||void 0===b?void 0:b.parentElement,h,"grandStyle"),f===o.AXe&&e.forEach(e=>(0,qt.A)(this,Vh)[Vh](e)),null!==a&&void 0!==a&&a.trim())try{J.run("exports.transEndHook = ".concat(a)),J.exports.transEndHook({hostNode:t,parentNode:b,nodes:e,wrapperNode:k,innerNode:S},{text:s,fromLang:n||(0,qt.A)(this,Rc)[Rc].fromLang,toLang:p})}catch(x){(0,K.h9)("transEndHook",x)}}catch(x){const r=(0,qt.A)(this,Xh)[Xh](x);if((0,K.h9)("translate group error: ",r),"Request terminated"===(null===x||void 0===x?void 0:x.message))return void(0,qt.A)(this,hp)[hp](t);try{const i=t.querySelector(":scope > .".concat(zc.KISS_CLASS.warpper,":last-of-type"));if(i){const o=i.querySelector(".".concat(zc.KISS_CLASS.inner));if(o){o.textContent="";const a=(0,qt.A)(this,Qh)[Qh](r,()=>{(0,qt.A)(this,Bd)[Bd](()=>{i.remove()}),(0,qt.A)(this,fd)[fd].delete(t),(0,qt.A)(this,Zh)[Zh](e,t,n)});o.appendChild(a)}}}catch(w){(0,K.h9)("retry icon error: ",w.message),(0,qt.A)(this,hp)[hp](t)}}}function cm(){var e;const t=((null===(e=(0,qt.A)(this,jc)[jc].mouseHoverSetting)||void 0===e?void 0:e.bubbleStyle)||o.ya_).trim().replace(/;+$/,"");return"".concat(t,";\nposition: fixed !important;\nz-index: 2147483647 !important;\nbox-sizing: border-box !important;\npointer-events: none !important;\nwhite-space: pre-wrap !important;\noverflow-wrap: anywhere !important;")}function dm(){var e;if(null!==(e=(0,qt.A)(this,kd)[kd])&&void 0!==e&&e.isConnected)return(0,qt.A)(this,kd)[kd];const t=document.createElement("div");return t.className="".concat(zc.KISS_CLASS.hoverBubble," notranslate"),t.setAttribute("role","tooltip"),document.body.appendChild(t),(0,qt.A)(this,kd)[kd]=t,t}function hm(){const e=(0,qt.A)(this,kd)[kd];if(!e)return;let t=(0,qt.A)(this,wd)[wd].x+12,n=(0,qt.A)(this,wd)[wd].y+12;e.style.left="".concat(t,"px"),e.style.top="".concat(n,"px");const r=e.getBoundingClientRect(),i=window.innerWidth-r.width-8,o=window.innerHeight-r.height-8;t=Math.max(8,Math.min(t,i)),n=Math.max(8,Math.min(n,o)),e.style.left="".concat(t,"px"),e.style.top="".concat(n,"px")}function pm(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"ready";const n=(0,qt.A)(this,tp)[tp]();n.style.cssText=(0,qt.A)(this,ep)[ep](),n.dataset.state=t,n.replaceChildren(e instanceof Node?e:document.createTextNode(e)),n.hidden=!1,(0,qt.A)(this,np)[np]()}function fm(){(0,qt.A)(this,Ch)[Ch](),(0,qt.A)(this,Ed)[Ed]++,(0,qt.A)(this,Sd)[Sd]=null,(0,qt.A)(this,kd)[kd]&&((0,qt.A)(this,kd)[kd].remove(),(0,qt.A)(this,kd)[kd]=null)}async function mm(e){if((0,qt.A)(this,Ch)[Ch](),!zc.isElementOrFragment(e))return;if((0,qt.A)(this,Sd)[Sd]===e&&(0,qt.A)(this,kd)[kd])return;const t=e.textContent||"";if((0,qt.A)(this,Yh)[Yh](t))return void(0,qt.A)(this,ip)[ip]();const n=++(0,qt.A)(this,Ed)[Ed];(0,qt.A)(this,Sd)[Sd]=e,(0,qt.A)(this,rp)[rp](_l(),"loading");try{let r="";const{fromLang:i="auto",toLang:o}=(0,qt.A)(this,Rc)[Rc],{langDetector:a,skipLangs:s=[]}=(0,qt.A)(this,jc)[jc];if("auto"===i&&(r=await Nc(t,a),r&&(o.slice(0,2)===r.slice(0,2)||s.includes(r))))return void((0,qt.A)(this,Ed)[Ed]===n&&(0,qt.A)(this,ip)[ip]());const{trText:l,isSame:u}=await(0,qt.A)(this,lp)[lp](t,r);if((0,qt.A)(this,Ed)[Ed]!==n||(0,qt.A)(this,Sd)[Sd]!==e)return;if(!l||u)return void(0,qt.A)(this,ip)[ip]();(0,qt.A)(this,rp)[rp](Array.isArray(l)?l[0]:l)}catch(r){if((0,qt.A)(this,Ed)[Ed]!==n||(0,qt.A)(this,Sd)[Sd]!==e)return;(0,qt.A)(this,rp)[rp]((0,qt.A)(this,Xh)[Xh](r),"error")}}function gm(e,t){var n=this;let r=0,i=0;const o=new Map,{startDelimiter:a,endDelimiter:s}=(0,qt.A)(this,ih)[ih],l=e=>{r++;const t="".concat(a).concat(r).concat(s);return o.set(t,e),t},u=e=>{if(e.nodeType!==Node.ELEMENT_NODE&&e.nodeType!==Node.TEXT_NODE)return"";if(e.nodeType===Node.TEXT_NODE){let r=e.textContent;return r.trim()?((0,qt.A)(this,Jc)[Jc]&&((0,qt.A)(this,Jc)[Jc].lastIndex=0,r=r.replace((0,qt.A)(this,Jc)[Jc],function(){for(var e=arguments.length,r=new Array(e),i=0;ivoid 0!==e),a=r[0],s=(0,qt.A)(n,Xc)[Xc][o];return l('').concat(s||a,""))})),r=r.replace(/\r?\n/g,()=>l(" ")),function(e){const t=document.createElement("div");return t.textContent=e,t.innerHTML}(r)):""}if(e.nodeType===Node.ELEMENT_NODE){var r;if((0,qt.A)(this,Ud)[Ud](e))return"";let t=!1;try{t=e.matches((0,qt.A)(this,Rc)[Rc].keepSelector)}catch(d){(0,K.h9)("keepSelector match error",(0,qt.A)(this,Rc)[Rc].keepSelector,d)}var a,s;if("true"===(0,qt.A)(this,Rc)[Rc].hasRichText&&zc.TAGS.REPLACE.has(e.tagName)||t||!e.textContent.trim())return"IMG"!==(null===(a=e.tagName)||void 0===a?void 0:a.toUpperCase())&&"SVG"!==(null===(s=e.tagName)||void 0===s?void 0:s.toUpperCase())||(e.style.width="".concat(e.offsetWidth,"px"),e.style.height="".concat(e.offsetHeight,"px")),l(e.outerHTML);let n="";if(e.childNodes.forEach(e=>{try{n+=u(e)}catch(d){(0,K.h9)("traverse child error",e.nodeName,d)}}),"true"===(0,qt.A)(this,Rc)[Rc].hasRichText&&zc.TAGS.WARP.has(null===(r=e.tagName)||void 0===r?void 0:r.toUpperCase())){i++;const{tagName:t,format:r}=(0,qt.A)(this,ih)[ih];let a,s;return o.set("TAG_".concat(i),{openTag:c(e),closeTag:"")}),"attribute"===r?(a="<".concat(t," i=").concat(i,">"),s="")):(a="<".concat(t).concat(i,">"),s="")),"".concat(a).concat(n).concat(s)}return n}return""};function c(e){const t=e=>e.replace(/"/g,""");let n="<".concat(e.tagName.toLowerCase());for(const r of e.attributes)n+=" ".concat(r.name,'="').concat(t(r.value),'"');return n+=">",n}return[e.map(u).join("").trim(),o]}function vm(e,t){if(!t.size)return e;if(!e)return"";const{safeTag:n,openRegex:r,closeRegex:i}=(0,qt.A)(this,ih)[ih],o="data-kiss-restore";let a=e,s=e;try{a=a.replace(r,"<".concat(n," ").concat(o,'="$1">')),a=a.replace(i,""));const e=(new DOMParser).parseFromString(rt.createHTML(a),"text/html"),l="".concat(n,"[").concat(o,"]");Array.from(e.querySelectorAll(l)).reverse().forEach(e=>{const n=e.getAttribute(o);if(n){const r=t.get("TAG_".concat(n));r&&(e.outerHTML=rt.createHTML("".concat(r.openTag).concat(e.innerHTML).concat(r.closeTag)))}}),s=e.body.innerHTML}catch(jn){(0,K.h9)("DOMParser restore failed, fallback to raw",jn)}return s=s.replace((0,qt.A)(this,ih)[ih].placeholderRegex,e=>t.get(e)||e),s}function ym(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;const{toLang:r,transStartHook:o}=(0,qt.A)(this,Rc)[Rc],a=t||(0,qt.A)(this,Rc)[Rc].fromLang,s=(0,i.A)({},(0,qt.A)(this,th)[th]),l=(0,Da.a5)(s,(0,qt.A)(this,jc)[jc].prompts,(0,qt.A)(this,jc)[jc].subtitleSetting),u=(0,i.A)({},(0,qt.A)(this,rd)[rd]),c=(0,qt.A)(this,ud)[ud],d={text:e,fromLang:a,toLang:r,apiSetting:l,glossary:u,onStreamChunk:n};if(null!==o&&void 0!==o&&o.trim())try{J.run("exports.transStartHook = ".concat(o));const e=J.exports.transStartHook((0,i.A)((0,i.A)({},d),{},{apisMap:c}));e&&Object.assign(d,e)}catch(h){(0,K.h9)("transStartHook",h)}return wn(d)}function bm(e){return e.querySelectorAll(":scope > .".concat(zc.KISS_CLASS.warpper))}function Am(){(0,qt.A)(this,md)[md].forEach(e=>(0,qt.A)(this,dp)[dp](e))}function xm(e){e.querySelectorAll(".".concat(zc.KISS_CLASS.warpper)).forEach(e=>(0,qt.A)(this,wp)[wp](e))}function wm(e){(0,qt.A)(this,up)[up](e).forEach(e=>{(0,qt.A)(this,wp)[wp](e)})}function km(e){var t,n;const{transOrder:r="original-first"}=(0,qt.A)(this,Rc)[Rc],i=[],o="translation-first"!==r;let a=o?e.previousSibling:e.nextSibling;if(null!==(t=a)&&void 0!==t&&null!==(n=t.classList)&&void 0!==n&&n.contains(zc.KISS_CLASS.original))return[a];for(;a;){var s;if((0,qt.A)(this,$h)[$h](a)&&!zc.TAGS.WARP.has(null===(s=a.nodeName)||void 0===s?void 0:s.toUpperCase()))break;a.nodeType!==Node.ELEMENT_NODE&&a.nodeType!==Node.TEXT_NODE||(o?i.unshift(a):i.push(a)),a=o?a.previousSibling:a.nextSibling}return i}function Sm(e){return e.querySelector(":scope > template.".concat(zc.KISS_CLASS.backup))}function Em(e){let t=(0,qt.A)(this,fp)[fp](e);return t||(t=document.createElement("template"),t.className=zc.KISS_CLASS.backup,e.appendChild(t)),t}function Cm(e){return(0,qt.A)(this,od)[od][e]||(0,qt.A)(this,od)[od][o.nsG]||""}function _m(e,t){if(null===e||void 0===e||!e.length)return null;const n=e[0].parentNode;if(!n||e.some(e=>e.parentNode!==n))return null;const r=document.createElement("span");return r.className=[zc.KISS_CLASS.original,(0,qt.A)(this,gp)[gp](t)].filter(Boolean).join(" "),(0,qt.A)(this,vh)[vh]([n,r],()=>{e[0].before(r),e.forEach(e=>r.appendChild(e))}),r}function Tm(e){if(null===e||void 0===e||!e.parentNode)return;const t=e.parentNode;(0,qt.A)(this,vh)[vh]([t,e],()=>{e.replaceWith(...e.childNodes)})}function Dm(){let{nodes:e=[],originalWrapper:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return t?[t]:e}function Pm(e,t,n){if(!e)return;const r=(0,qt.A)(this,gp)[gp](t),i=(0,qt.A)(this,gp)[gp](n);r&&e.classList.remove(r),i&&e.classList.add(i)}function Im(e){if(!zc.isElementOrFragment(e))return!1;const t=Array.from(e.children||[]).filter(e=>{var t;return null===(t=e.classList)||void 0===t?void 0:t.contains(zc.KISS_CLASS.warpper)});return!!t.length&&(t.forEach(e=>{const t=(0,qt.A)(this,fp)[fp](e),n=t?Array.from(t.content.childNodes):[],r=n.length>0,o=r?n:(0,qt.A)(this,pp)[pp](e),a=o.find(e=>{var t;return null===(t=e.classList)||void 0===t?void 0:t.contains(zc.KISS_CLASS.original)}),s=a?Array.from(a.childNodes):o;(0,qt.A)(this,hd)[hd].set(e,{nodes:s,originalWrapper:a,isHide:r}),s.forEach(e=>{e.nodeType===Node.ELEMENT_NODE&&(0,qt.A)(this,fd)[fd].set(e,(0,i.A)({},(0,qt.A)(this,Rc)[Rc]))})}),(0,qt.A)(this,fd)[fd].set(e,(0,i.A)({},(0,qt.A)(this,Rc)[Rc])),(0,qt.A)(this,dd)[dd].add(e),(0,qt.A)(this,pd)[pd].add(e),!0)}function Fm(e){(0,qt.A)(this,Bd)[Bd](()=>{const t=e.parentElement;(0,qt.A)(this,fd)[fd].delete(t);const n=(0,qt.A)(this,hd)[hd].get(e);null!==n&&void 0!==n&&n.isHide&&(0,qt.A)(this,kp)[kp](e,n),null!==n&&void 0!==n&&n.originalWrapper&&(0,qt.A)(this,yp)[yp](n.originalWrapper),(0,qt.A)(this,hd)[hd].delete(e),e.remove(),(0,qt.A)(this,Rc)[Rc].highlightWords===o.AXe&&(0,qt.A)(this,Kh)[Kh](t),(0,qt.A)(this,qh)[qh](t)})}function Lm(e,t){const n=(0,qt.A)(this,bp)[bp](t);if(n.length){const t=e.parentElement;if(t){const r=n.map(e=>e.parentNode);(0,qt.A)(this,vh)[vh]([...r,t],()=>{const t=document.createDocumentFragment();n.forEach(e=>t.appendChild(e)),"translation-first"===(0,qt.A)(this,Rc)[Rc].transOrder?e.after(t):e.before(t)})}}}function Om(e,t){const n=(0,qt.A)(this,bp)[bp](e);if(n.length&&t){const e=(0,qt.A)(this,mp)[mp](t),r=n[0].parentNode;(0,qt.A)(this,vh)[vh]([r],()=>{n.forEach(t=>e.content.appendChild(t))})}}function Nm(e,t){(0,qt.A)(this,up)[up](e).forEach(e=>{const n=e.querySelector(":scope > br"),r=e.querySelector(":scope > span.".concat(zc.KISS_CLASS.space)),o=(0,qt.A)(this,hd)[hd].get(e);o&&("true"===t?((0,qt.A)(this,Bd)[Bd](()=>{n&&(n.hidden=!0),r&&(r.hidden=!0),(0,qt.A)(this,Sp)[Sp](o,e)}),(0,qt.A)(this,hd)[hd].set(e,(0,i.A)((0,i.A)({},o),{},{isHide:!0}))):((0,qt.A)(this,Bd)[Bd](()=>{n&&(n.hidden=!1),r&&(r.hidden=!1),(0,qt.A)(this,kp)[kp](e,o)}),(0,qt.A)(this,hd)[hd].set(e,(0,i.A)((0,i.A)({},o),{},{isHide:!1}))))})}function zm(e,t,n){if(!t||!t.length)return;const{originalWrapper:r}=(0,qt.A)(this,hd)[hd].get(e)||{},i=r?[r]:t,o=i[0],a=i[i.length-1],s=e.parentElement,l=null===o||void 0===o?void 0:o.parentElement,u=null===a||void 0===a?void 0:a.parentElement;s===l&&s===u&&("translation-first"===n?o.previousElementSibling!==e&&o.before(e):a.nextElementSibling!==e&&a.after(e))}function jm(e,t,n){(0,qt.A)(this,up)[up](e).forEach(e=>{const r=e.querySelector(":scope > .".concat(zc.KISS_CLASS.inner));r.classList.remove((0,qt.A)(this,od)[od][t]),r.classList.add((0,qt.A)(this,od)[od][n])})}function Rm(e,t,n){(0,qt.A)(this,up)[up](e).forEach(e=>{const r=(0,qt.A)(this,hd)[hd].get(e);if(r)if("true"!==t||r.originalWrapper)"true"!==t&&r.originalWrapper&&((0,qt.A)(this,yp)[yp](r.originalWrapper),(0,qt.A)(this,hd)[hd].set(e,(0,i.A)((0,i.A)({},r),{},{originalWrapper:null})));else{const t=(0,qt.A)(this,vp)[vp](r.nodes,n);t&&(0,qt.A)(this,hd)[hd].set(e,(0,i.A)((0,i.A)({},r),{},{originalWrapper:t}))}})}function Mm(e,t,n){(0,qt.A)(this,up)[up](e).forEach(e=>{const{originalWrapper:r}=(0,qt.A)(this,hd)[hd].get(e)||{};(0,qt.A)(this,Ap)[Ap](r,t,n)})}function Bm(e,t){(0,qt.A)(this,up)[up](e).forEach(e=>{const{nodes:n}=(0,qt.A)(this,hd)[hd].get(e)||{};n&&n.length&&(0,qt.A)(this,Bd)[Bd](()=>{(0,qt.A)(this,Cp)[Cp](e,n,t)})})}function Wm(e){(0,qt.A)(this,hp)[hp](e),(0,qt.A)(this,Uh)[Uh](e)}function Um(e){const t=(0,qt.A)(this,fd)[fd].get(e);if(!t)return void((0,qt.A)(this,Hc)[Hc]&&(0,qt.A)(this,Uh)[Uh](e));const{apiSlug:n,fromLang:r,toLang:i,hasRichText:o,textStyle:a,transOnly:s,transOrder:l="original-first",wrapOriginal:u,originalTextStyle:c}=(0,qt.A)(this,Rc)[Rc];if(t.apiSlug!==n||t.fromLang!==r||t.toLang!==i||t.hasRichText!==o)return Object.assign(t,{apiSlug:n,fromLang:r,toLang:i,hasRichText:o,textStyle:a,transOnly:s,transOrder:l,wrapOriginal:u,originalTextStyle:c}),void(0,qt.A)(this,Ip)[Ip](e);if(t.textStyle!==a){const n=t.textStyle;t.textStyle=a,(0,qt.A)(this,_p)[_p](e,n,a)}if(t.wrapOriginal!==u&&(t.wrapOriginal=u,(0,qt.A)(this,Bd)[Bd](()=>{(0,qt.A)(this,Tp)[Tp](e,u,c)})),t.originalTextStyle!==c){const n=t.originalTextStyle;t.originalTextStyle=c,(0,qt.A)(this,Dp)[Dp](e,n,c)}t.transOrder!==l&&(t.transOrder=l,(0,qt.A)(this,Pp)[Pp](e,l)),t.transOnly!==s&&(t.transOnly=s,(0,qt.A)(this,Ep)[Ep](e,s))}function Hm(){(0,qt.A)(this,uh)[uh](),(0,qt.A)(this,Fd)[Fd].disconnect(),(0,qt.A)(this,Ld)[Ld].disconnect(),(0,qt.A)(this,pd)[pd].clear(),(0,qt.A)(this,md)[md].clear(),(0,qt.A)(this,dd)[dd]=new WeakSet,(0,qt.A)(this,hd)[hd]=new WeakMap,(0,qt.A)(this,fd)[fd]=new WeakMap,(0,qt.A)(this,yd)[yd]=new WeakSet,(0,qt.A)(this,vd)[vd]=new WeakSet,(0,qt.A)(this,Fd)[Fd]=(0,qt.A)(this,mh)[mh]()}function Vm(){if((0,qt.A)(this,Uc)[Uc])return;(0,qt.A)(this,Uc)[Uc]=!0,(0,qt.A)(this,jc)[jc].mouseHoverSetting.useMouseHover=!0,(0,qt.A)(this,kh)[kh]()&&(0,qt.A)(this,Kc)[Kc]&&((0,qt.A)(this,Rp)[Rp](),(0,qt.A)(this,Bp)[Bp]((0,qt.A)(this,Kc)[Kc])),document.addEventListener("mousemove",(0,qt.A)(this,Td)[Td]);const{mouseHoverKey:e=[],mouseHoverKey2:t=[]}=(0,qt.A)(this,jc)[jc].mouseHoverSetting;if(0===e.length&&0===t.length)return;const n=e.length>0,r=t.length>0;(0,qt.A)(this,bd)[bd]=n?Fc(e,(0,qt.A)(this,Dd)[Dd]):void 0;const i=n&&r&&e.length===t.length&&e.every((e,n)=>e===t[n]);(0,qt.A)(this,Ad)[Ad]=r&&!i?Fc(t,(0,qt.A)(this,Dd)[Dd]):void 0}function Gm(){var e,t,n,r;(0,qt.A)(this,Uc)[Uc]&&((0,qt.A)(this,Uc)[Uc]=!1,(0,qt.A)(this,jc)[jc].mouseHoverSetting.useMouseHover=!1,(0,qt.A)(this,xd)[xd]=null,(0,qt.A)(this,ip)[ip](),document.removeEventListener("mousemove",(0,qt.A)(this,Td)[Td]),null===(e=(t=(0,qt.A)(this,bd))[bd])||void 0===e||e.call(t),null===(n=(r=(0,qt.A)(this,Ad))[Ad])||void 0===n||n.call(r))}function Km(){(0,qt.A)(this,qc)[qc]||((0,qt.A)(this,qc)[qc]=!0,(0,qt.A)(this,$c)[$c]=e=>{var t,n;if((0,qt.A)(this,kh)[kh]())return;const r=null===(t=(n=e.target).closest)||void 0===t?void 0:t.call(n,".".concat(zc.KISS_CLASS.warpper));if(r){const e=(0,qt.A)(this,hd)[hd].get(r);if(!e||!e.isHide)return;if((0,qt.A)(this,Kc)[Kc]===r)return;(0,qt.A)(this,Rp)[Rp]();const t=parseFloat((0,qt.A)(this,Rc)[Rc].transOnlyRevertDelay)||.5;return void((0,qt.A)(this,Gc)[Gc]=setTimeout(()=>{(0,qt.A)(this,Mp)[Mp](r,e)},1e3*t))}if((0,qt.A)(this,Kc)[Kc]){const t=(0,qt.A)(this,hd)[hd].get((0,qt.A)(this,Kc)[Kc]);if(t){const n=t.nodes||[];for(const t of n){var i;if(t===e.target||null!==(i=t.contains)&&void 0!==i&&i.call(t,e.target))return}}}},(0,qt.A)(this,Yc)[Yc]=e=>{if((0,qt.A)(this,kh)[kh]())return;if(!(0,qt.A)(this,Kc)[Kc]){var t,n;return void((null===(t=(n=e.target).closest)||void 0===t?void 0:t.call(n,".".concat(zc.KISS_CLASS.warpper)))&&(0,qt.A)(this,Rp)[Rp]())}const r=(0,qt.A)(this,Kc)[Kc],i=e.relatedTarget;if(i&&(r.contains(i)||i===r))return;const o=(0,qt.A)(this,hd)[hd].get(r);if(o&&i){const e=o.nodes||[];for(const t of e){var a;if(t===i||null!==(a=t.contains)&&void 0!==a&&a.call(t,i))return}}(0,qt.A)(this,Rp)[Rp](),(0,qt.A)(this,Bp)[Bp](r)},document.addEventListener("mouseover",(0,qt.A)(this,$c)[$c]),document.addEventListener("mouseout",(0,qt.A)(this,Yc)[Yc]))}function qm(){(0,qt.A)(this,qc)[qc]&&((0,qt.A)(this,qc)[qc]=!1,(0,qt.A)(this,Rp)[Rp](),(0,qt.A)(this,Kc)[Kc]&&(0,qt.A)(this,Bp)[Bp]((0,qt.A)(this,Kc)[Kc]),document.removeEventListener("mouseover",(0,qt.A)(this,$c)[$c]),document.removeEventListener("mouseout",(0,qt.A)(this,Yc)[Yc]),(0,qt.A)(this,$c)[$c]=null,(0,qt.A)(this,Yc)[Yc]=null)}function $m(){(0,qt.A)(this,Gc)[Gc]&&(clearTimeout((0,qt.A)(this,Gc)[Gc]),(0,qt.A)(this,Gc)[Gc]=null)}function Ym(e,t){(0,qt.A)(this,Bd)[Bd](()=>{(0,qt.A)(this,kp)[kp](e,t);const n=e.querySelector(":scope > .".concat(zc.KISS_CLASS.inner));n&&(n.style.display="none");const r=e.querySelector(":scope > br");r&&(r.hidden=!0)}),(0,qt.A)(this,Kc)[Kc]=e}function Xm(e){const t=(0,qt.A)(this,hd)[hd].get(e);t&&((0,qt.A)(this,Bd)[Bd](()=>{(0,qt.A)(this,Sp)[Sp](t,e);const n=e.querySelector(":scope > .".concat(zc.KISS_CLASS.inner));n&&(n.style.display="")}),(0,qt.A)(this,Kc)[Kc]=null)}function Jm(){if(!(0,qt.A)(this,Bc)[Bc]){(0,qt.A)(this,Bc)[Bc]=!0;try{const{injectJs:e,injectCss:t,toLang:n}=(0,qt.A)(this,Rc)[Rc];if(R.aQ?t&&(0,M.Ru)(o.k_j,t):t&&(e=>{var t;const n=document.createElement("style");n.setAttribute("data-source","kiss-inject injectInternalCss"),n.textContent=e,null===(t=document.head)||void 0===t||t.appendChild(n)})(t),null!==e&&void 0!==e&&e.trim()){const t=(0,i.A)({},(0,qt.A)(this,th)[th]),r=(0,i.A)({},(0,qt.A)(this,rd)[rd]),o=(0,qt.A)(this,ud)[ud],a=Nc;J.import({KT:{apiTranslate:wn,apiDectect:a,apiSetting:t,apisMap:o,toLang:n,glossary:r}}),J.run(e)}}catch(e){(0,K.h9)("inject js",e)}}}function Qm(){var e;null===(e=document.querySelectorAll('[data-source^="kiss-inject"]'))||void 0===e||e.forEach(e=>e.remove())}async function Zm(){const e=mt();if(null!==e&&void 0!==e&&e.title)try{const t=await Nc(e.title),{trText:n}=await(0,qt.A)(this,lp)[lp](e.title,t);(0,qt.A)(this,nd)[nd].title=document.title,document.title=n||e.title}catch(t){(0,K.h9)("tanslate title",t)}}function eg(){var e,t;(0,qt.A)(this,kh)[kh]()||((0,qt.A)(this,Ch)[Ch](),null!==(e=(0,qt.A)(this,Sd)[Sd])&&void 0!==e&&null!==(t=e.classList)&&void 0!==t&&t.contains(zc.KISS_CLASS.warpper)&&(0,qt.A)(this,ip)[ip]());const n="true"===(0,qt.A)(this,Rc)[Rc].transOnly&&"true"===(0,qt.A)(this,Rc)[Rc].transOnlyRevert;n&&!(0,qt.A)(this,qc)[qc]?(0,qt.A)(this,zp)[zp]():!n&&(0,qt.A)(this,qc)[qc]&&(0,qt.A)(this,jp)[jp]()}function tg(){let e=document.activeElement;for(;e&&e.shadowRoot&&e.shadowRoot.activeElement;)e=e.shadowRoot.activeElement;return e}zc=Gp,Gp.displayCache=new WeakMap,Gp.TAGS={BREAK_LINE:new Set(["BR","WBR"]),BLOCK:new Set(["ADDRESS","ARTICLE","ASIDE","BLOCKQUOTE","CANVAS","DD","DIV","DL","DT","FIELDSET","FIGCAPTION","FIGURE","FOOTER","FORM","H1","H2","H3","H4","H5","H6","HEADER","HR","LI","MAIN","NAV","NOSCRIPT","OL","P","PRE","SECTION","TABLE","TFOOT","UL","VIDEO"]),INLINE:new Set(["ABBR","ACRONYM","B","BDO","BIG","BR","BUTTON","CITE","CODE","DFN","DEL","FONT","EM","I","IMG","INPUT","INS","KBD","LABEL","MAP","MARK","OBJECT","OUTPUT","Q","RUBY","SAMP","SCRIPT","SELECT","SMALL","STRONG","SUB","SUP","TEXTAREA","TIME","TT","U","VAR"]),REPLACE:new Set(["ABBR","CODE","DFN","IMG","KBD","OUTPUT","RP","RT","SAMP","SUB","SUP","SVG","TIME","VAR"]),WARP:new Set(["A","B","BDO","BDI","BIG","CITE","DEL","EM","FONT","I","INS","MARK","Q","RUBY","S","SMALL","SPAN","STRONG","U"])},Gp.KISS_CLASS={warpper:"".concat(o.jM6,"-wrapper"),inner:"".concat(o.jM6,"-inner"),term:"".concat(o.jM6,"-term"),br:"".concat(o.jM6,"-br"),space:"".concat(o.jM6,"-space"),highlight:"".concat(o.jM6,"-highlight"),retry:"".concat(o.jM6,"-retry"),backup:"".concat(o.jM6,"-backup"),original:"".concat(o.jM6,"-original"),hoverBubble:"".concat(o.jM6,"-hover-bubble")},Gp.BUILTIN_SKIP_PATTERNS=[/^(?:(?:https?|ftp|file):\/\/|www\.)[^\s/$.?#].[^\s]*$/i,/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/,/^(?:[a-zA-Z]:\\|\/|\\)(?:[\w\-. ]+\/|[\w\-. ]+\\)*[\w\-. ]*\.?[\w\-. ]*$/,/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/,/^[$\u00A2-\u00A5\u20A0-\u20CF]?\s?-?\d{1,3}(?:[.,]\d{3})*(?:[.,]\d+)?\s?(?:px|%|em|rem|pt|vw|vh|deg|s|ms)?$/,/^v?\d+(\.\d+){1,3}$/,/^\d{4}-\d{2}-\d{2}(T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[+-]\d{2}:\d{2})?)?$/,/^({{[^}]+}}|\${[^}]+}|__\w+__|%\w+)$/,/^(?:\.|#)[\w-]+$|^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/,/^@[\w.-]+$/,/^&\w+;$/,/^\[\d+\]$/,/^\d{1,2}:\d{2}(:\d{2})?$/,/^[^\s\\/:]+?\.[a-zA-Z0-9]{2,5}$/],Gp.DEFAULT_OPTIONS=o.la7,Gp.DEFAULT_RULE=o.lNu,Gp.KISS_IGNORE_SELECTOR=".".concat(zc.KISS_CLASS.warpper,", .").concat(zc.KISS_CLASS.hoverBubble,", .kiss-caption-container, .kiss-subtitle-controls, #kiss-youtube-subtitle-list-container,\n #").concat(o.Reo.fabID,", .").concat(o.Reo.fabID,"_warpper,\n #").concat(o.Reo.boxID,", .").concat(o.Reo.boxID,"_warpper,\n #").concat(o.Reo.popupID,", .").concat(o.Reo.popupID,"_warpper"),Gp.BUILTIN_IGNORE_SELECTOR="address, area, audio, br, canvas,\n data, datalist, embed, head, iframe, input, noscript, map,\n object, option, param, picture, progress,\n select, script, style, svg, track, textarea, template,\n video, wbr, .notranslate, [contenteditable='true'], [translate='no']";const ng=new Set(["text","search","email","url","tel"]);function rg(e){var t;if(!e)return!1;if(e.disabled||e.readOnly)return!1;const n=null===(t=e.nodeName)||void 0===t?void 0:t.toUpperCase();return"INPUT"===n?ng.has(e.type):"TEXTAREA"===n||!(!e.isContentEditable&&"true"!==e.getAttribute("contenteditable"))}function ig(e){var t;const n=null===(t=e.nodeName)||void 0===t?void 0:t.toUpperCase();return"INPUT"===n||"TEXTAREA"===n?e.value||"":e.innerText||e.textContent||""}async function og(e,t){e.focus(),await(0,l.yy)(10);const n=e.isContentEditable||"true"===e.getAttribute("contenteditable");if((()=>{if("function"!==typeof e.select)try{document.execCommand("selectAll",!1,null)}catch(jn){const n=window.getSelection();n.removeAllRanges();const r=document.createRange();r.selectNodeContents(e),n.addRange(r)}else e.select()})(),await(0,l.yy)(50),n)try{K.vF.debug("Rich Editor detected: Priority Strategy (Clipboard Paste)");const n=new DataTransfer;n.setData("text/plain",t);const r=new ClipboardEvent("paste",{clipboardData:n,bubbles:!0,cancelable:!0,composed:!0,view:window});if(e.dispatchEvent(r),await(0,l.yy)(100),ag(e,t))return!0}catch(jn){K.vF.debug("Strategy Paste failed",jn)}try{if(document.execCommand("insertText",!1,t)&&(await(0,l.yy)(20),ag(e,t)))return!0}catch(jn){K.vF.debug("Strategy 1 (insertText) failed",jn)}if("INPUT"===e.nodeName||"TEXTAREA"===e.nodeName)try{return function(e,t){var n,r;const i=null===(n=Object.getOwnPropertyDescriptor(e,"value"))||void 0===n?void 0:n.set,o=Object.getPrototypeOf(e),a=null===(r=Object.getOwnPropertyDescriptor(o,"value"))||void 0===r?void 0:r.set;a&&i!==a?a.call(e,t):e.value=t,e.dispatchEvent(new Event("input",{bubbles:!0}))}(e,t),!0}catch(jn){K.vF.debug("Strategy 2 (Input Value) failed",jn)}return!1}function ag(e,t){return ig(e).includes(t.trim())}var sg=(0,$t.A)("config"),lg=(0,$t.A)("unregisterShortcut"),ug=(0,$t.A)("isEnabled"),cg=(0,$t.A)("triggerShortcut"),dg=(0,$t.A)("activeInput"),hg=(0,$t.A)("floatBtn"),pg=(0,$t.A)("resizeObserver"),fg=(0,$t.A)("blurTimer"),mg=(0,$t.A)("boundFocusIn"),gg=(0,$t.A)("boundFocusOut"),vg=(0,$t.A)("boundUpdatePos");class yg{constructor(){let{inputRule:e=o.AFg,transApis:t=[],prompts:n=[],subtitleSetting:r={}}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.defineProperty(this,sg,{writable:!0,value:void 0}),Object.defineProperty(this,lg,{writable:!0,value:null}),Object.defineProperty(this,ug,{writable:!0,value:!1}),Object.defineProperty(this,cg,{writable:!0,value:void 0}),Object.defineProperty(this,dg,{writable:!0,value:null}),Object.defineProperty(this,hg,{writable:!0,value:null}),Object.defineProperty(this,pg,{writable:!0,value:null}),Object.defineProperty(this,fg,{writable:!0,value:null}),Object.defineProperty(this,mg,{writable:!0,value:void 0}),Object.defineProperty(this,gg,{writable:!0,value:void 0}),Object.defineProperty(this,vg,{writable:!0,value:void 0}),(0,qt.A)(this,sg)[sg]={inputRule:e,prompts:n,subtitleSetting:r,transApis:t};const{triggerShortcut:i}=(0,qt.A)(this,sg)[sg].inputRule;(0,qt.A)(this,cg)[cg]=i&&i.length>0?i:o.ue1,(0,qt.A)(this,mg)[mg]=this.handleFocusIn.bind(this),(0,qt.A)(this,gg)[gg]=this.handleFocusOut.bind(this),(0,qt.A)(this,vg)[vg]=this.updateBtnPosition.bind(this),(0,qt.A)(this,sg)[sg].inputRule.transOpen&&this.enable()}enable(){if((0,qt.A)(this,ug)[ug])return;const{triggerCount:e,triggerTime:t}=(0,qt.A)(this,sg)[sg].inputRule;(0,qt.A)(this,lg)[lg]=Lc((0,qt.A)(this,cg)[cg],this.handleTranslate.bind(this),e,t),document.addEventListener("focusin",(0,qt.A)(this,mg)[mg]),document.addEventListener("focusout",(0,qt.A)(this,gg)[gg]),window.addEventListener("scroll",(0,qt.A)(this,vg)[vg],!0),window.addEventListener("resize",(0,qt.A)(this,vg)[vg]),window.visualViewport&&(window.visualViewport.addEventListener("resize",(0,qt.A)(this,vg)[vg]),window.visualViewport.addEventListener("scroll",(0,qt.A)(this,vg)[vg])),(0,qt.A)(this,ug)[ug]=!0;rg(tg())&&this.handleFocusIn(),K.vF.info("Input Translator enabled.")}disable(){(0,qt.A)(this,ug)[ug]&&((0,qt.A)(this,lg)[lg]&&((0,qt.A)(this,lg)[lg](),(0,qt.A)(this,lg)[lg]=null),document.removeEventListener("focusin",(0,qt.A)(this,mg)[mg]),document.removeEventListener("focusout",(0,qt.A)(this,gg)[gg]),window.removeEventListener("scroll",(0,qt.A)(this,vg)[vg],!0),window.removeEventListener("resize",(0,qt.A)(this,vg)[vg]),window.visualViewport&&(window.visualViewport.removeEventListener("resize",(0,qt.A)(this,vg)[vg]),window.visualViewport.removeEventListener("scroll",(0,qt.A)(this,vg)[vg])),this.removeFloatButton(),(0,qt.A)(this,pg)[pg]&&((0,qt.A)(this,pg)[pg].disconnect(),(0,qt.A)(this,pg)[pg]=null),(0,qt.A)(this,dg)[dg]=null,(0,qt.A)(this,ug)[ug]=!1,K.vF.info("Input Translator disabled."))}toggle(){(0,qt.A)(this,ug)[ug]?this.disable():this.enable()}handleFocusIn(){(0,qt.A)(this,fg)[fg]&&(clearTimeout((0,qt.A)(this,fg)[fg]),(0,qt.A)(this,fg)[fg]=null);const e=tg();rg(e)&&((0,qt.A)(this,dg)[dg]=e,(0,qt.A)(this,pg)[pg]&&(0,qt.A)(this,pg)[pg].disconnect(),(0,qt.A)(this,pg)[pg]=new ResizeObserver(()=>this.updateBtnPosition()),(0,qt.A)(this,pg)[pg].observe(e),this.showFloatButton(e))}handleFocusOut(){(0,qt.A)(this,fg)[fg]=setTimeout(()=>{var e;const t=tg();t===(0,qt.A)(this,dg)[dg]||null!==(e=(0,qt.A)(this,hg)[hg])&&void 0!==e&&e.contains(t)||(this.hideFloatButton(),(0,qt.A)(this,dg)[dg]=null,(0,qt.A)(this,pg)[pg]&&((0,qt.A)(this,pg)[pg].disconnect(),(0,qt.A)(this,pg)[pg]=null))},150)}showFloatButton(e){if(!(0,qt.A)(this,ug)[ug])return;const t=(0,qt.A)(this,sg)[sg].inputRule.showDot||o.eUB;if(t!==o.axl){if(t===o.eUB){if(!(Pa||navigator.maxTouchPoints>0))return}(0,qt.A)(this,dg)[dg]=e,(0,qt.A)(this,hg)[hg]||this.createFloatButtonDOM(),(0,qt.A)(this,hg)[hg].style.display="flex",this.updateBtnPosition()}}createFloatButtonDOM(){(0,qt.A)(this,hg)[hg]=document.createElement("div");const e=Pa||navigator.maxTouchPoints>0?"36px":"30px";(0,qt.A)(this,hg)[hg].style.cssText="\n position: fixed;\n width: ".concat(e,"; height: ").concat(e,";\n background: #209CEE;\n border-radius: 50%;\n z-index: 2147483647;\n cursor: pointer;\n display: flex; align-items: center; justify-content: center;\n box-shadow: 0 2px 5px rgba(0,0,0,0.2);\n transition: opacity 0.2s;\n font-size: 13px; color: white;\n user-select: none; -webkit-user-select: none;\n "),(0,qt.A)(this,hg)[hg].innerText="\u8bd1";const t=e=>{e.preventDefault(),e.stopPropagation()};(0,qt.A)(this,hg)[hg].addEventListener("mousedown",t),(0,qt.A)(this,hg)[hg].addEventListener("touchstart",t,{passive:!1});const n=e=>{e.preventDefault(),e.stopPropagation(),(0,qt.A)(this,dg)[dg]&&(0,qt.A)(this,dg)[dg].focus(),this.handleTranslate({isBtnTrigger:!0})};(0,qt.A)(this,hg)[hg].addEventListener("click",n),(0,qt.A)(this,hg)[hg].addEventListener("touchend",n),document.body.appendChild((0,qt.A)(this,hg)[hg])}hideFloatButton(){(0,qt.A)(this,hg)[hg]&&((0,qt.A)(this,hg)[hg].style.display="none")}removeFloatButton(){(0,qt.A)(this,hg)[hg]&&((0,qt.A)(this,hg)[hg].remove(),(0,qt.A)(this,hg)[hg]=null)}updateBtnPosition(){if(!(0,qt.A)(this,dg)[dg]||!(0,qt.A)(this,dg)[dg].isConnected||!(0,qt.A)(this,hg)[hg]||"none"===(0,qt.A)(this,hg)[hg].style.display)return void((0,qt.A)(this,hg)[hg]&&this.hideFloatButton());const e=(0,qt.A)(this,dg)[dg].getBoundingClientRect(),t=Pa||navigator.maxTouchPoints>0?36:30;let n=e.bottom-t-5,r=e.right-t-5;if(e.height<60){const r=2,i=e.top-t-r,o=e.bottom+r;if(i>=0)n=i;else if(o+t<=window.innerHeight)n=o;else{n=e.top>=window.innerHeight-e.bottom?i:o}}r=Math.max(0,Math.min(r,window.innerWidth-t-2)),n=Math.max(0,Math.min(n,window.innerHeight-t-2)),(0,qt.A)(this,hg)[hg].style.top="".concat(n,"px"),(0,qt.A)(this,hg)[hg].style.left="".concat(r,"px")}async handleTranslate(){let{isBtnTrigger:e=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};K.vF.debug("handle input translate");const t=tg();if(!t||!rg(t))return void K.vF.debug("Active node is not editable");const{apiSlug:n,transSign:r,triggerCount:i}=(0,qt.A)(this,sg)[sg].inputRule;let{fromLang:a,toLang:s}=(0,qt.A)(this,sg)[sg].inputRule,u=ig(t);if(e||1!==(0,qt.A)(this,cg)[cg].length||1!==(0,qt.A)(this,cg)[cg][0].length||(u=(0,l.Ms)(u,(0,qt.A)(this,cg)[cg][0],i)),!u.trim())return;let c=u;if(r){const e=(0,l.LR)(c,r);if(e){let t=e[1];const n={zh:"zh-CN",cn:"zh-CN",tw:"zh-TW",hk:"zh-TW",jp:"ja",kr:"ko"};n[t.toLowerCase()]&&(t=n[t.toLowerCase()]),t&&o.tok.includes(t)&&(s=t),c=e[2]}}const d=(0,qt.A)(this,sg)[sg].transApis.find(e=>e.apiSlug===n)||o.iVS,h=(0,Da.a5)(d,(0,qt.A)(this,sg)[sg].prompts,(0,qt.A)(this,sg)[sg].subtitleSetting),p="kiss-loading-"+(0,l.Sm)();try{!function(e,t){const n=e.getBoundingClientRect();0===n.width||n.height;const r=document.createElement("div");r.id=t,r.appendChild(_l()),r.style.cssText="\n position: fixed;\n left: ".concat(n.left,"px;\n top: ").concat(n.top,"px;\n min-width: 20px;\n width: ").concat(n.width||100,"px;\n height: ").concat(n.height||30,"px;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 2147483647;\n pointer-events: none;\n background: transparent;\n "),document.body.appendChild(r)}(t,p),this.hideFloatButton();const{trText:e,isSame:n}=await wn({text:c,fromLang:a,toLang:s,apiSetting:h}),r=(null===e||void 0===e?void 0:e.trim())||"";if(!r||n)return;await og(t,r)||K.vF.warn("Text replacement failed after all strategies.")}catch(f){K.vF.error("Translate input error:",f)}finally{!function(e){const t=document.getElementById(e);t&&t.remove()}(p),(0,qt.A)(this,dg)[dg]===t&&this.showFloatButton(t)}}updateConfig(e){let{inputRule:t,transApis:n,prompts:r,subtitleSetting:i}=e;const a=(0,qt.A)(this,ug)[ug];a&&this.disable(),t&&((0,qt.A)(this,sg)[sg].inputRule=t),r&&((0,qt.A)(this,sg)[sg].prompts=r),i&&((0,qt.A)(this,sg)[sg].subtitleSetting=i),n&&((0,qt.A)(this,sg)[sg].transApis=n);const{triggerShortcut:s}=(0,qt.A)(this,sg)[sg].inputRule;(0,qt.A)(this,cg)[cg]=s&&s.length>0?s:o.ue1,a&&this.enable()}}var bg=n(7458);function Ag(e){let{onTrigger:t,btnEvent:n,position:r,btnOffsetX:i,btnOffsetY:o}=e;const a=r.x+i,s=r.y+o,l=(0,yl.jsx)("div",{className:"KT-tranbtn",style:{cursor:"pointer",position:"absolute",left:a,top:s,zIndex:2147483647},onMouseDown:e=>e.preventDefault(),[n]:t,children:(0,yl.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:Pa?"32":"20",height:Pa?"32":"20",viewBox:"0 0 32 32",version:"1.1",children:[(0,yl.jsx)("path",{d:"M0 0 C10.56 0 21.12 0 32 0 C32 10.56 32 21.12 32 32 C21.44 32 10.88 32 0 32 C0 21.44 0 10.88 0 0 Z ",fill:"#209CEE",transform:"translate(0,0)"}),(0,yl.jsx)("path",{d:"M0 0 C0.66 0 1.32 0 2 0 C2 2.97 2 5.94 2 9 C2.969375 8.2575 3.93875 7.515 4.9375 6.75 C5.48277344 6.33234375 6.02804688 5.9146875 6.58984375 5.484375 C8.39053593 3.83283924 8.39053593 3.83283924 9 0 C13.95 0 18.9 0 24 0 C24 0.99 24 1.98 24 3 C22.68 3 21.36 3 20 3 C20 9.27 20 15.54 20 22 C19.01 22 18.02 22 17 22 C17 15.73 17 9.46 17 3 C15.35 3 13.7 3 12 3 C11.731875 3.598125 11.46375 4.19625 11.1875 4.8125 C10.01506533 6.97224808 8.80630718 8.35790256 7 10 C8.01790655 12.27071461 8.77442829 13.80784632 10.6875 15.4375 C11.120625 15.953125 11.55375 16.46875 12 17 C11.6875 19.6875 11.6875 19.6875 11 22 C10.34 22 9.68 22 9 22 C8.773125 21.236875 8.54625 20.47375 8.3125 19.6875 C6.73268318 16.45263699 5.16717283 15.58358642 2 14 C2 16.64 2 19.28 2 22 C1.34 22 0.68 22 0 22 C0 14.74 0 7.48 0 0 Z ",fill:"#E9F5FD",transform:"translate(4,5)"})]})});return(0,bg.createPortal)(l,document.body)}var xg=n(8915),wg=n(4320),kg=n(5553),Sg=n(1163),Eg=n(7197),Cg=n(7183),_g=n(3142),Tg=n(1683);const Dg=function(e){return"string"===typeof e};const Pg=function(e,t,n){return void 0===e||Dg(e)?t:(0,wg.A)({},t,{ownerState:(0,wg.A)({},t.ownerState,n)})};const Ig=function(e,t,n){return"function"===typeof e?e(t,n):e};const Fg=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"===typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n};const Lg=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"===typeof e[t])).forEach(n=>{t[n]=e[n]}),t};const Og=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){const e=(0,kg.A)(null==n?void 0:n.className,o,null==i?void 0:i.className,null==r?void 0:r.className),t=(0,wg.A)({},null==n?void 0:n.style,null==i?void 0:i.style,null==r?void 0:r.style),a=(0,wg.A)({},n,i,r);return e.length>0&&(a.className=e),Object.keys(t).length>0&&(a.style=t),{props:a,internalRef:void 0}}const a=Fg((0,wg.A)({},i,r)),s=Lg(r),l=Lg(i),u=t(a),c=(0,kg.A)(null==u?void 0:u.className,null==n?void 0:n.className,o,null==i?void 0:i.className,null==r?void 0:r.className),d=(0,wg.A)({},null==u?void 0:u.style,null==n?void 0:n.style,null==i?void 0:i.style,null==r?void 0:r.style),h=(0,wg.A)({},u,n,l,s);return c.length>0&&(h.className=c),Object.keys(d).length>0&&(h.style=d),{props:h,internalRef:u.ref}},Ng=["className","elementType","ownerState","externalForwardedProps","getSlotOwnerState","internalForwardedProps"],zg=["component","slots","slotProps"],jg=["component"];function Rg(e,t){const{className:n,elementType:r,ownerState:i,externalForwardedProps:o,getSlotOwnerState:a,internalForwardedProps:s}=t,l=(0,xg.A)(t,Ng),{component:u,slots:c={[e]:void 0},slotProps:d={[e]:void 0}}=o,h=(0,xg.A)(o,zg),p=c[e]||r,f=Ig(d[e],i),m=Og((0,wg.A)({className:n},l,{externalForwardedProps:"root"===e?h:void 0,externalSlotProps:f})),{props:{component:g},internalRef:v}=m,y=(0,xg.A)(m.props,jg),b=(0,Tg.A)(v,null==f?void 0:f.ref,t.ref),A=a?a(y):{},x=(0,wg.A)({},i,A),w="root"===e?g||u:g,k=Pg(p,(0,wg.A)({},"root"===e&&!u&&!c[e]&&s,"root"!==e&&!c[e]&&s,y,w&&{as:w},{ref:b}),x);return Object.keys(A).forEach(e=>{delete k[e]}),[p,k]}var Mg=n(5227);const Bg=e=>{let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,(t/100).toFixed(2)};var Wg=n(5421),Ug=n(4089);function Hg(e){return(0,Ug.Ay)("MuiPaper",e)}(0,Wg.A)("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);const Vg=["className","component","elevation","square","variant"],Gg=(0,Cg.Ay)("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,"elevation"===n.variant&&t["elevation".concat(n.elevation)]]}})(e=>{let{theme:t,ownerState:n}=e;var r;return(0,wg.A)({backgroundColor:(t.vars||t).palette.background.paper,color:(t.vars||t).palette.text.primary,transition:t.transitions.create("box-shadow")},!n.square&&{borderRadius:t.shape.borderRadius},"outlined"===n.variant&&{border:"1px solid ".concat((t.vars||t).palette.divider)},"elevation"===n.variant&&(0,wg.A)({boxShadow:(t.vars||t).shadows[n.elevation]},!t.vars&&"dark"===t.palette.mode&&{backgroundImage:"linear-gradient(".concat((0,Eg.X4)("#fff",Bg(n.elevation)),", ").concat((0,Eg.X4)("#fff",Bg(n.elevation)),")")},t.vars&&{backgroundImage:null==(r=t.vars.overlays)?void 0:r[n.elevation]}))}),Kg=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiPaper"}),{className:r,component:i="div",elevation:o=1,square:a=!1,variant:s="elevation"}=n,l=(0,xg.A)(n,Vg),u=(0,wg.A)({},n,{component:i,elevation:o,square:a,variant:s}),c=(e=>{const{square:t,elevation:n,variant:r,classes:i}=e,o={root:["root",r,!t&&"rounded","elevation"===r&&"elevation".concat(n)]};return(0,Sg.A)(o,Hg,i)})(u);return(0,yl.jsx)(Gg,(0,wg.A)({as:i,ownerState:u,className:(0,kg.A)(c.root,r),ref:t},l))});function qg(e){return(0,Ug.Ay)("MuiAlert",e)}const $g=(0,Wg.A)("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]);var Yg=n(2513),Xg=n(5471),Jg=n(4188);function Qg(e,t){return Qg=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Qg(e,t)}function Zg(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Qg(e,t)}const ev=fl.createContext(null);function tv(e,t){var n=Object.create(null);return e&&fl.Children.map(e,function(e){return e}).forEach(function(e){n[e.key]=function(e){return t&&(0,fl.isValidElement)(e)?t(e):e}(e)}),n}function nv(e,t,n){return null!=n[t]?n[t]:e.props[t]}function rv(e,t,n){var r=tv(e.children),i=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,i=Object.create(null),o=[];for(var a in e)a in t?o.length&&(i[a]=o,o=[]):o.push(a);var s={};for(var l in t){if(i[l])for(r=0;r{if(!s&&null!=l){const e=setTimeout(l,u);return()=>{clearTimeout(e)}}},[l,s,u]),(0,yl.jsx)("span",{className:h,style:p,children:(0,yl.jsx)("span",{className:f})})};const cv=(0,Wg.A)("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]);var dv,hv,pv,fv;const mv=["center","classes","className"];let gv,vv,yv,bv;const Av=(0,sv.i7)(gv||(gv=dv||(dv=pc(["\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n"])))),xv=(0,sv.i7)(vv||(vv=hv||(hv=pc(["\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n"])))),wv=(0,sv.i7)(yv||(yv=pv||(pv=pc(["\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n"])))),kv=(0,Cg.Ay)("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),Sv=(0,Cg.Ay)(uv,{name:"MuiTouchRipple",slot:"Ripple"})(bv||(bv=fv||(fv=pc(["\n opacity: 0;\n position: absolute;\n\n &."," {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ",";\n animation-duration: ","ms;\n animation-timing-function: ",";\n }\n\n &."," {\n animation-duration: ","ms;\n }\n\n & ."," {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & ."," {\n opacity: 0;\n animation-name: ",";\n animation-duration: ","ms;\n animation-timing-function: ",";\n }\n\n & ."," {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ",";\n animation-duration: 2500ms;\n animation-timing-function: ",";\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n"]))),cv.rippleVisible,Av,550,e=>{let{theme:t}=e;return t.transitions.easing.easeInOut},cv.ripplePulsate,e=>{let{theme:t}=e;return t.transitions.duration.shorter},cv.child,cv.childLeaving,xv,550,e=>{let{theme:t}=e;return t.transitions.easing.easeInOut},cv.childPulsate,wv,e=>{let{theme:t}=e;return t.transitions.easing.easeInOut}),Ev=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiTouchRipple"}),{center:r=!1,classes:i={},className:o}=n,a=(0,xg.A)(n,mv),[s,l]=fl.useState([]),u=fl.useRef(0),c=fl.useRef(null);fl.useEffect(()=>{c.current&&(c.current(),c.current=null)},[s]);const d=fl.useRef(!1),h=(0,lv.A)(),p=fl.useRef(null),f=fl.useRef(null),m=fl.useCallback(e=>{const{pulsate:t,rippleX:n,rippleY:r,rippleSize:o,cb:a}=e;l(e=>[...e,(0,yl.jsx)(Sv,{classes:{ripple:(0,kg.A)(i.ripple,cv.ripple),rippleVisible:(0,kg.A)(i.rippleVisible,cv.rippleVisible),ripplePulsate:(0,kg.A)(i.ripplePulsate,cv.ripplePulsate),child:(0,kg.A)(i.child,cv.child),childLeaving:(0,kg.A)(i.childLeaving,cv.childLeaving),childPulsate:(0,kg.A)(i.childPulsate,cv.childPulsate)},timeout:550,pulsate:t,rippleX:n,rippleY:r,rippleSize:o},u.current)]),u.current+=1,c.current=a},[i]),g=fl.useCallback(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>{};const{pulsate:i=!1,center:o=r||t.pulsate,fakeElement:a=!1}=t;if("mousedown"===(null==e?void 0:e.type)&&d.current)return void(d.current=!1);"touchstart"===(null==e?void 0:e.type)&&(d.current=!0);const s=a?null:f.current,l=s?s.getBoundingClientRect():{width:0,height:0,left:0,top:0};let u,c,g;if(o||void 0===e||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)u=Math.round(l.width/2),c=Math.round(l.height/2);else{const{clientX:t,clientY:n}=e.touches&&e.touches.length>0?e.touches[0]:e;u=Math.round(t-l.left),c=Math.round(n-l.top)}if(o)g=Math.sqrt((2*l.width**2+l.height**2)/3),g%2===0&&(g+=1);else{const e=2*Math.max(Math.abs((s?s.clientWidth:0)-u),u)+2,t=2*Math.max(Math.abs((s?s.clientHeight:0)-c),c)+2;g=Math.sqrt(e**2+t**2)}null!=e&&e.touches?null===p.current&&(p.current=()=>{m({pulsate:i,rippleX:u,rippleY:c,rippleSize:g,cb:n})},h.start(80,()=>{p.current&&(p.current(),p.current=null)})):m({pulsate:i,rippleX:u,rippleY:c,rippleSize:g,cb:n})},[r,m,h]),v=fl.useCallback(()=>{g({},{pulsate:!0})},[g]),y=fl.useCallback((e,t)=>{if(h.clear(),"touchend"===(null==e?void 0:e.type)&&p.current)return p.current(),p.current=null,void h.start(0,()=>{y(e,t)});p.current=null,l(e=>e.length>0?e.slice(1):e),c.current=t},[h]);return fl.useImperativeHandle(t,()=>({pulsate:v,start:g,stop:y}),[v,g,y]),(0,yl.jsx)(kv,(0,wg.A)({className:(0,kg.A)(cv.root,i.root,o),ref:f},a,{children:(0,yl.jsx)(av,{component:null,exit:!0,children:s})}))});function Cv(e){return(0,Ug.Ay)("MuiButtonBase",e)}const _v=(0,Wg.A)("MuiButtonBase",["root","disabled","focusVisible"]),Tv=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],Dv=(0,Cg.Ay)("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},["&.".concat(_v.disabled)]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),Pv=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiButtonBase"}),{action:r,centerRipple:i=!1,children:o,className:a,component:s="button",disabled:l=!1,disableRipple:u=!1,disableTouchRipple:c=!1,focusRipple:d=!1,LinkComponent:h="a",onBlur:p,onClick:f,onContextMenu:m,onDragLeave:g,onFocus:v,onFocusVisible:y,onKeyDown:b,onKeyUp:A,onMouseDown:x,onMouseLeave:w,onMouseUp:k,onTouchEnd:S,onTouchMove:E,onTouchStart:C,tabIndex:_=0,TouchRippleProps:T,touchRippleRef:D,type:P}=n,I=(0,xg.A)(n,Tv),F=fl.useRef(null),L=fl.useRef(null),O=(0,Yg.A)(L,D),{isFocusVisibleRef:N,onFocus:z,onBlur:j,ref:R}=(0,Jg.A)(),[M,B]=fl.useState(!1);l&&M&&B(!1),fl.useImperativeHandle(r,()=>({focusVisible:()=>{B(!0),F.current.focus()}}),[]);const[W,U]=fl.useState(!1);fl.useEffect(()=>{U(!0)},[]);const H=W&&!u&&!l;function V(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:c;return(0,Xg.A)(r=>{t&&t(r);return!n&&L.current&&L.current[e](r),!0})}fl.useEffect(()=>{M&&d&&!u&&W&&L.current.pulsate()},[u,d,M,W]);const G=V("start",x),K=V("stop",m),q=V("stop",g),$=V("stop",k),Y=V("stop",e=>{M&&e.preventDefault(),w&&w(e)}),X=V("start",C),J=V("stop",S),Q=V("stop",E),Z=V("stop",e=>{j(e),!1===N.current&&B(!1),p&&p(e)},!1),ee=(0,Xg.A)(e=>{F.current||(F.current=e.currentTarget),z(e),!0===N.current&&(B(!0),y&&y(e)),v&&v(e)}),te=()=>{const e=F.current;return s&&"button"!==s&&!("A"===e.tagName&&e.href)},ne=fl.useRef(!1),re=(0,Xg.A)(e=>{d&&!ne.current&&M&&L.current&&" "===e.key&&(ne.current=!0,L.current.stop(e,()=>{L.current.start(e)})),e.target===e.currentTarget&&te()&&" "===e.key&&e.preventDefault(),b&&b(e),e.target===e.currentTarget&&te()&&"Enter"===e.key&&!l&&(e.preventDefault(),f&&f(e))}),ie=(0,Xg.A)(e=>{d&&" "===e.key&&L.current&&M&&!e.defaultPrevented&&(ne.current=!1,L.current.stop(e,()=>{L.current.pulsate(e)})),A&&A(e),f&&e.target===e.currentTarget&&te()&&" "===e.key&&!e.defaultPrevented&&f(e)});let oe=s;"button"===oe&&(I.href||I.to)&&(oe=h);const ae={};"button"===oe?(ae.type=void 0===P?"button":P,ae.disabled=l):(I.href||I.to||(ae.role="button"),l&&(ae["aria-disabled"]=l));const se=(0,Yg.A)(t,R,F);const le=(0,wg.A)({},n,{centerRipple:i,component:s,disabled:l,disableRipple:u,disableTouchRipple:c,focusRipple:d,tabIndex:_,focusVisible:M}),ue=(e=>{const{disabled:t,focusVisible:n,focusVisibleClassName:r,classes:i}=e,o={root:["root",t&&"disabled",n&&"focusVisible"]},a=(0,Sg.A)(o,Cv,i);return n&&r&&(a.root+=" ".concat(r)),a})(le);return(0,yl.jsxs)(Dv,(0,wg.A)({as:oe,className:(0,kg.A)(ue.root,a),ownerState:le,onBlur:Z,onClick:f,onContextMenu:K,onFocus:ee,onKeyDown:re,onKeyUp:ie,onMouseDown:G,onMouseLeave:Y,onMouseUp:$,onDragLeave:q,onTouchEnd:J,onTouchMove:Q,onTouchStart:X,ref:se,tabIndex:l?-1:_,type:P},ae,I,{children:[o,H?(0,yl.jsx)(Ev,(0,wg.A)({ref:O,center:i},T)):null]}))});function Iv(e){return(0,Ug.Ay)("MuiIconButton",e)}const Fv=(0,Wg.A)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]),Lv=["edge","children","className","color","disabled","disableFocusRipple","size"],Ov=(0,Cg.Ay)(Pv,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"default"!==n.color&&t["color".concat((0,Mg.A)(n.color))],n.edge&&t["edge".concat((0,Mg.A)(n.edge))],t["size".concat((0,Mg.A)(n.size))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({textAlign:"center",flex:"0 0 auto",fontSize:t.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(t.vars||t).palette.action.active,transition:t.transitions.create("background-color",{duration:t.transitions.duration.shortest})},!n.disableRipple&&{"&:hover":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.action.activeChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Eg.X4)(t.palette.action.active,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"start"===n.edge&&{marginLeft:"small"===n.size?-3:-12},"end"===n.edge&&{marginRight:"small"===n.size?-3:-12})},e=>{let{theme:t,ownerState:n}=e;var r;const i=null==(r=(t.vars||t).palette)?void 0:r[n.color];return(0,wg.A)({},"inherit"===n.color&&{color:"inherit"},"inherit"!==n.color&&"default"!==n.color&&(0,wg.A)({color:null==i?void 0:i.main},!n.disableRipple&&{"&:hover":(0,wg.A)({},i&&{backgroundColor:t.vars?"rgba(".concat(i.mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Eg.X4)(i.main,t.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),"small"===n.size&&{padding:5,fontSize:t.typography.pxToRem(18)},"large"===n.size&&{padding:12,fontSize:t.typography.pxToRem(28)},{["&.".concat(Fv.disabled)]:{backgroundColor:"transparent",color:(t.vars||t).palette.action.disabled}})}),Nv=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiIconButton"}),{edge:r=!1,children:i,className:o,color:a="default",disabled:s=!1,disableFocusRipple:l=!1,size:u="medium"}=n,c=(0,xg.A)(n,Lv),d=(0,wg.A)({},n,{edge:r,color:a,disabled:s,disableFocusRipple:l,size:u}),h=(e=>{const{classes:t,disabled:n,color:r,edge:i,size:o}=e,a={root:["root",n&&"disabled","default"!==r&&"color".concat((0,Mg.A)(r)),i&&"edge".concat((0,Mg.A)(i)),"size".concat((0,Mg.A)(o))]};return(0,Sg.A)(a,Iv,t)})(d);return(0,yl.jsx)(Ov,(0,wg.A)({className:(0,kg.A)(h.root,o),centerRipple:!0,focusRipple:!l,disabled:s,ref:t},c,{ownerState:d,children:i}))}),zv=Nv;var jv=n(4270);const Rv=(0,jv.A)((0,yl.jsx)("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),Mv=(0,jv.A)((0,yl.jsx)("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),Bv=(0,jv.A)((0,yl.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),Wv=(0,jv.A)((0,yl.jsx)("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined"),Uv=(0,jv.A)((0,yl.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),Hv=["action","children","className","closeText","color","components","componentsProps","icon","iconMapping","onClose","role","severity","slotProps","slots","variant"],Vv=(0,Cg.Ay)(Kg,{name:"MuiAlert",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t["".concat(n.variant).concat((0,Mg.A)(n.color||n.severity))]]}})(e=>{let{theme:t}=e;const n="light"===t.palette.mode?Eg.e$:Eg.a,r="light"===t.palette.mode?Eg.a:Eg.e$;return(0,wg.A)({},t.typography.body2,{backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(t.palette).filter(e=>{let[,t]=e;return t.main&&t.light}).map(e=>{let[i]=e;return{props:{colorSeverity:i,variant:"standard"},style:{color:t.vars?t.vars.palette.Alert["".concat(i,"Color")]:n(t.palette[i].light,.6),backgroundColor:t.vars?t.vars.palette.Alert["".concat(i,"StandardBg")]:r(t.palette[i].light,.9),["& .".concat($g.icon)]:t.vars?{color:t.vars.palette.Alert["".concat(i,"IconColor")]}:{color:t.palette[i].main}}}}),...Object.entries(t.palette).filter(e=>{let[,t]=e;return t.main&&t.light}).map(e=>{let[r]=e;return{props:{colorSeverity:r,variant:"outlined"},style:{color:t.vars?t.vars.palette.Alert["".concat(r,"Color")]:n(t.palette[r].light,.6),border:"1px solid ".concat((t.vars||t).palette[r].light),["& .".concat($g.icon)]:t.vars?{color:t.vars.palette.Alert["".concat(r,"IconColor")]}:{color:t.palette[r].main}}}}),...Object.entries(t.palette).filter(e=>{let[,t]=e;return t.main&&t.dark}).map(e=>{let[n]=e;return{props:{colorSeverity:n,variant:"filled"},style:(0,wg.A)({fontWeight:t.typography.fontWeightMedium},t.vars?{color:t.vars.palette.Alert["".concat(n,"FilledColor")],backgroundColor:t.vars.palette.Alert["".concat(n,"FilledBg")]}:{backgroundColor:"dark"===t.palette.mode?t.palette[n].dark:t.palette[n].main,color:t.palette.getContrastText(t.palette[n].main)})}})]})}),Gv=(0,Cg.Ay)("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(e,t)=>t.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),Kv=(0,Cg.Ay)("div",{name:"MuiAlert",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),qv=(0,Cg.Ay)("div",{name:"MuiAlert",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),$v={success:(0,yl.jsx)(Rv,{fontSize:"inherit"}),warning:(0,yl.jsx)(Mv,{fontSize:"inherit"}),error:(0,yl.jsx)(Bv,{fontSize:"inherit"}),info:(0,yl.jsx)(Wv,{fontSize:"inherit"})},Yv=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiAlert"}),{action:r,children:i,className:o,closeText:a="Close",color:s,components:l={},componentsProps:u={},icon:c,iconMapping:d=$v,onClose:h,role:p="alert",severity:f="success",slotProps:m={},slots:g={},variant:v="standard"}=n,y=(0,xg.A)(n,Hv),b=(0,wg.A)({},n,{color:s,severity:f,variant:v,colorSeverity:s||f}),A=(e=>{const{variant:t,color:n,severity:r,classes:i}=e,o={root:["root","color".concat((0,Mg.A)(n||r)),"".concat(t).concat((0,Mg.A)(n||r)),"".concat(t)],icon:["icon"],message:["message"],action:["action"]};return(0,Sg.A)(o,qg,i)})(b),x={slots:(0,wg.A)({closeButton:l.CloseButton,closeIcon:l.CloseIcon},g),slotProps:(0,wg.A)({},u,m)},[w,k]=Rg("closeButton",{elementType:zv,externalForwardedProps:x,ownerState:b}),[S,E]=Rg("closeIcon",{elementType:Uv,externalForwardedProps:x,ownerState:b});return(0,yl.jsxs)(Vv,(0,wg.A)({role:p,elevation:0,ownerState:b,className:(0,kg.A)(A.root,o),ref:t},y,{children:[!1!==c?(0,yl.jsx)(Gv,{ownerState:b,className:A.icon,children:c||d[f]||$v[f]}):null,(0,yl.jsx)(Kv,{ownerState:b,className:A.message,children:i}),null!=r?(0,yl.jsx)(qv,{ownerState:b,className:A.action,children:r}):null,null==r&&h?(0,yl.jsx)(qv,{ownerState:b,className:A.action,children:(0,yl.jsx)(w,(0,wg.A)({size:"small","aria-label":a,title:a,color:"inherit",onClick:h},k,{children:(0,yl.jsx)(S,(0,wg.A)({fontSize:"small"},E))}))}):null]}))}),Xv=Yv;function Jv(e,t){const n=(0,fl.useRef)(e);(0,fl.useEffect)(()=>{n.current=e},[e]);const r=(0,fl.useMemo)(()=>(0,l.sg)(function(){return n.current(...arguments)},t),[t]);return(0,fl.useEffect)(()=>()=>{r.cancel()},[r]),r}function Qv(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";const[r,o]=(0,fl.useState)(!0),[s,l]=(0,fl.useState)(t),u=(0,fl.useRef)();(0,fl.useEffect)(()=>{let n=!0;return(async()=>{try{const r=await a.IG.getObj(e);void 0===r||null===r?await a.IG.setObj(e,t):n&&l(r)}catch(r){(0,K.h9)("storage load error for key: ".concat(e),r)}finally{n&&o(!1)}})(),()=>{n=!1}},[e,t]);const c=Jv((0,fl.useCallback)(async(e,t)=>{try{const n=await xa(e,t);null!==n&&void 0!==n&&n.isNew&&l(n.value)}catch(n){(0,K.h9)("Sync failed",e)}},[]),3e3);(0,fl.useEffect)(()=>{r||null!==s&&(a.IG.setObj(e,s).catch(t=>{(0,K.h9)("storage save error for key: ".concat(e),t)}),u.current&&Object.is(u.current.value,s)?u.current=void 0:n&&(0,Kt.tc)()&&c(n,s))},[e,n,r,s,c]);const d=(0,fl.useCallback)(e=>{l(t=>"function"===typeof e?e(t):e)},[]),h=(0,fl.useCallback)(e=>{l(t=>{const n="function"===typeof e?e(t):e,r="object"===typeof t&&null!==t?t:{};return(0,i.A)((0,i.A)({},r),n)})},[]),p=(0,fl.useCallback)(async()=>{try{await a.IG.del(e),l(null)}catch(t){(0,K.h9)("storage remove error for key: ".concat(e),t)}},[e]),f=(0,fl.useCallback)(async()=>{try{const n=await a.IG.getObj(e),r=null!==n&&void 0!==n?n:t;if(function(e,t){if(Object.is(e,t))return!0;if(e&&t&&"object"===typeof e&&"object"===typeof t&&Array.isArray(e)===Array.isArray(t))try{return JSON.stringify(e)===JSON.stringify(t)}catch(n){return!1}return!1}(s,r))return;Object.is(s,r)||(u.current={value:r}),l(r)}catch(n){(0,K.h9)("storage reload error for key: ".concat(e),n)}},[e,t,s]);return{data:s,save:d,update:h,remove:p,reload:f,isLoading:r}}function Zv(e){return(0,Ug.Ay)("MuiCircularProgress",e)}(0,Wg.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var ey,ty,ny,ry;const iy=["className","color","disableShrink","size","style","thickness","value","variant"];let oy,ay,sy,ly;const uy=44,cy=(0,sv.i7)(oy||(oy=ey||(ey=pc(["\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n"])))),dy=(0,sv.i7)(ay||(ay=ty||(ty=pc(["\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -125px;\n }\n"])))),hy=(0,Cg.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t["color".concat((0,Mg.A)(n.color))]]}})(e=>{let{ownerState:t,theme:n}=e;return(0,wg.A)({display:"inline-block"},"determinate"===t.variant&&{transition:n.transitions.create("transform")},"inherit"!==t.color&&{color:(n.vars||n).palette[t.color].main})},e=>{let{ownerState:t}=e;return"indeterminate"===t.variant&&(0,sv.AH)(sy||(sy=ny||(ny=pc(["\n animation: "," 1.4s linear infinite;\n "]))),cy)}),py=(0,Cg.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),fy=(0,Cg.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.circle,t["circle".concat((0,Mg.A)(n.variant))],n.disableShrink&&t.circleDisableShrink]}})(e=>{let{ownerState:t,theme:n}=e;return(0,wg.A)({stroke:"currentColor"},"determinate"===t.variant&&{transition:n.transitions.create("stroke-dashoffset")},"indeterminate"===t.variant&&{strokeDasharray:"80px, 200px",strokeDashoffset:0})},e=>{let{ownerState:t}=e;return"indeterminate"===t.variant&&!t.disableShrink&&(0,sv.AH)(ly||(ly=ry||(ry=pc(["\n animation: "," 1.4s ease-in-out infinite;\n "]))),dy)}),my=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiCircularProgress"}),{className:r,color:i="primary",disableShrink:o=!1,size:a=40,style:s,thickness:l=3.6,value:u=0,variant:c="indeterminate"}=n,d=(0,xg.A)(n,iy),h=(0,wg.A)({},n,{color:i,disableShrink:o,size:a,thickness:l,value:u,variant:c}),p=(e=>{const{classes:t,variant:n,color:r,disableShrink:i}=e,o={root:["root",n,"color".concat((0,Mg.A)(r))],svg:["svg"],circle:["circle","circle".concat((0,Mg.A)(n)),i&&"circleDisableShrink"]};return(0,Sg.A)(o,Zv,t)})(h),f={},m={},g={};if("determinate"===c){const e=2*Math.PI*((uy-l)/2);f.strokeDasharray=e.toFixed(3),g["aria-valuenow"]=Math.round(u),f.strokeDashoffset="".concat(((100-u)/100*e).toFixed(3),"px"),m.transform="rotate(-90deg)"}return(0,yl.jsx)(hy,(0,wg.A)({className:(0,kg.A)(p.root,r),style:(0,wg.A)({width:a,height:a},m,s),ownerState:h,ref:t,role:"progressbar"},g,d,{children:(0,yl.jsx)(py,{className:p.svg,ownerState:h,viewBox:"".concat(22," ").concat(22," ").concat(uy," ").concat(uy),children:(0,yl.jsx)(fy,{className:p.circle,style:f,ownerState:h,cx:uy,cy:uy,r:(uy-l)/2,fill:"none",strokeWidth:l})})}))}),gy=my;var vy=n(8757);function yy(e){return(0,Ug.Ay)("MuiTypography",e)}(0,Wg.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const by=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],Ay=(0,Cg.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],"inherit"!==n.align&&t["align".concat((0,Mg.A)(n.align))],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({margin:0},"inherit"===n.variant&&{font:"inherit"},"inherit"!==n.variant&&t.typography[n.variant],"inherit"!==n.align&&{textAlign:n.align},n.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},n.gutterBottom&&{marginBottom:"0.35em"},n.paragraph&&{marginBottom:16})}),xy={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},wy={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},ky=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiTypography"}),r=(e=>wy[e]||e)(n.color),i=(0,vy.A)((0,wg.A)({},n,{color:r})),{align:o="inherit",className:a,component:s,gutterBottom:l=!1,noWrap:u=!1,paragraph:c=!1,variant:d="body1",variantMapping:h=xy}=i,p=(0,xg.A)(i,by),f=(0,wg.A)({},i,{align:o,color:r,className:a,component:s,gutterBottom:l,noWrap:u,paragraph:c,variant:d,variantMapping:h}),m=s||(c?"p":h[d]||xy[d])||"span",g=(e=>{const{align:t,gutterBottom:n,noWrap:r,paragraph:i,variant:o,classes:a}=e,s={root:["root",o,"inherit"!==e.align&&"align".concat((0,Mg.A)(t)),n&&"gutterBottom",r&&"noWrap",i&&"paragraph"]};return(0,Sg.A)(s,yy,a)})(f);return(0,yl.jsx)(Ay,(0,wg.A)({as:m,ref:t,ownerState:f,className:(0,kg.A)(g.root,a)},p))}),Sy=ky;function Ey(e){return(0,Ug.Ay)("MuiLink",e)}const Cy=(0,Wg.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"]);var _y=n(8343);const Ty={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},Dy=e=>{let{theme:t,ownerState:n}=e;const r=(e=>Ty[e]||e)(n.color),i=(0,_y.Yn)(t,"palette.".concat(r),!1)||n.color,o=(0,_y.Yn)(t,"palette.".concat(r,"Channel"));return"vars"in t&&o?"rgba(".concat(o," / 0.4)"):(0,Eg.X4)(i,.4)},Py=["className","color","component","onBlur","onFocus","TypographyClasses","underline","variant","sx"],Iy=(0,Cg.Ay)(Sy,{name:"MuiLink",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["underline".concat((0,Mg.A)(n.underline))],"button"===n.component&&t.button]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({},"none"===n.underline&&{textDecoration:"none"},"hover"===n.underline&&{textDecoration:"none","&:hover":{textDecoration:"underline"}},"always"===n.underline&&(0,wg.A)({textDecoration:"underline"},"inherit"!==n.color&&{textDecorationColor:Dy({theme:t,ownerState:n})},{"&:hover":{textDecorationColor:"inherit"}}),"button"===n.component&&{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},["&.".concat(Cy.focusVisible)]:{outline:"auto"}})}),Fy=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiLink"}),{className:r,color:i="primary",component:o="a",onBlur:a,onFocus:s,TypographyClasses:l,underline:u="always",variant:c="inherit",sx:d}=n,h=(0,xg.A)(n,Py),{isFocusVisibleRef:p,onBlur:f,onFocus:m,ref:g}=(0,Jg.A)(),[v,y]=fl.useState(!1),b=(0,Yg.A)(t,g),A=(0,wg.A)({},n,{color:i,component:o,focusVisible:v,underline:u,variant:c}),x=(e=>{const{classes:t,component:n,focusVisible:r,underline:i}=e,o={root:["root","underline".concat((0,Mg.A)(i)),"button"===n&&"button",r&&"focusVisible"]};return(0,Sg.A)(o,Ey,t)})(A);return(0,yl.jsx)(Iy,(0,wg.A)({color:i,className:(0,kg.A)(x.root,r),classes:l,component:o,onBlur:e=>{f(e),!1===p.current&&y(!1),a&&a(e)},onFocus:e=>{m(e),!0===p.current&&y(!0),s&&s(e)},ref:b,ownerState:A,variant:c,sx:[...Object.keys(Ty).includes(i)?[]:[{color:i}],...Array.isArray(d)?d:[d]]},h))}),Ly=Fy;function Oy(e){return(0,Ug.Ay)("MuiDivider",e)}const Ny=(0,Wg.A)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]),zy=["absolute","children","className","component","flexItem","light","orientation","role","textAlign","variant"],jy=(0,Cg.Ay)("div",{name:"MuiDivider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.absolute&&t.absolute,t[n.variant],n.light&&t.light,"vertical"===n.orientation&&t.vertical,n.flexItem&&t.flexItem,n.children&&t.withChildren,n.children&&"vertical"===n.orientation&&t.withChildrenVertical,"right"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignRight,"left"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignLeft]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(t.vars||t).palette.divider,borderBottomWidth:"thin"},n.absolute&&{position:"absolute",bottom:0,left:0,width:"100%"},n.light&&{borderColor:t.vars?"rgba(".concat(t.vars.palette.dividerChannel," / 0.08)"):(0,Eg.X4)(t.palette.divider,.08)},"inset"===n.variant&&{marginLeft:72},"middle"===n.variant&&"horizontal"===n.orientation&&{marginLeft:t.spacing(2),marginRight:t.spacing(2)},"middle"===n.variant&&"vertical"===n.orientation&&{marginTop:t.spacing(1),marginBottom:t.spacing(1)},"vertical"===n.orientation&&{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"},n.flexItem&&{alignSelf:"stretch",height:"auto"})},e=>{let{ownerState:t}=e;return(0,wg.A)({},t.children&&{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,borderTopStyle:"solid",borderLeftStyle:"solid","&::before, &::after":{content:'""',alignSelf:"center"}})},e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({},n.children&&"vertical"!==n.orientation&&{"&::before, &::after":{width:"100%",borderTop:"thin solid ".concat((t.vars||t).palette.divider),borderTopStyle:"inherit"}})},e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({},n.children&&"vertical"===n.orientation&&{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:"thin solid ".concat((t.vars||t).palette.divider),borderLeftStyle:"inherit"}})},e=>{let{ownerState:t}=e;return(0,wg.A)({},"right"===t.textAlign&&"vertical"!==t.orientation&&{"&::before":{width:"90%"},"&::after":{width:"10%"}},"left"===t.textAlign&&"vertical"!==t.orientation&&{"&::before":{width:"10%"},"&::after":{width:"90%"}})}),Ry=(0,Cg.Ay)("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.wrapper,"vertical"===n.orientation&&t.wrapperVertical]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({display:"inline-block",paddingLeft:"calc(".concat(t.spacing(1)," * 1.2)"),paddingRight:"calc(".concat(t.spacing(1)," * 1.2)")},"vertical"===n.orientation&&{paddingTop:"calc(".concat(t.spacing(1)," * 1.2)"),paddingBottom:"calc(".concat(t.spacing(1)," * 1.2)")})}),My=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiDivider"}),{absolute:r=!1,children:i,className:o,component:a=(i?"div":"hr"),flexItem:s=!1,light:l=!1,orientation:u="horizontal",role:c=("hr"!==a?"separator":void 0),textAlign:d="center",variant:h="fullWidth"}=n,p=(0,xg.A)(n,zy),f=(0,wg.A)({},n,{absolute:r,component:a,flexItem:s,light:l,orientation:u,role:c,textAlign:d,variant:h}),m=(e=>{const{absolute:t,children:n,classes:r,flexItem:i,light:o,orientation:a,textAlign:s,variant:l}=e,u={root:["root",t&&"absolute",l,o&&"light","vertical"===a&&"vertical",i&&"flexItem",n&&"withChildren",n&&"vertical"===a&&"withChildrenVertical","right"===s&&"vertical"!==a&&"textAlignRight","left"===s&&"vertical"!==a&&"textAlignLeft"],wrapper:["wrapper","vertical"===a&&"wrapperVertical"]};return(0,Sg.A)(u,Oy,r)})(f);return(0,yl.jsx)(jy,(0,wg.A)({as:a,className:(0,kg.A)(m.root,o),role:c,ref:t,ownerState:f},p,{children:i?(0,yl.jsx)(Ry,{className:m.wrapper,ownerState:f,children:i}):null}))});My.muiSkipListHighlight=!0;const By=My;function Wy(){return(0,yl.jsxs)("center",{children:[(0,yl.jsx)(By,{children:(0,yl.jsx)(Ly,{href:"https://github.com/fishjar/kiss-translator",children:"KISS Translator v".concat("2.0.29")})}),(0,yl.jsx)(gy,{})]})}const Uy=(0,fl.createContext)({setting:o.la7,updateSetting:()=>{},reloadSetting:()=>{}});function Hy(e){let{children:t,context:n}=e;const r=(0,fl.useMemo)(()=>"options"===n,[n]),{data:s,isLoading:l,update:u,reload:c}=Qv(o.r$0,o.la7,o.XEV),d=!!s,h=(0,o.Vnn)(s),p=null===s||void 0===s?void 0:s.logLevel;(0,fl.useEffect)(()=>{!d||h>=o.xoZ||u(e=>!e||(0,o.Vnn)(e)>=o.xoZ?e:(0,o.cPn)(e))},[d,h,u]),(0,fl.useEffect)(()=>{"boolean"===typeof(null===s||void 0===s?void 0:s.darkMode)&&u(e=>(0,i.A)((0,i.A)({},e),{},{darkMode:e.darkMode?"dark":"light"}))},[null===s||void 0===s?void 0:s.darkMode,u]),(0,fl.useEffect)(()=>{r&&(async()=>{try{K.vF.setLevel(p),R.aQ&&await(0,M.Ru)(o.Mai,p)}catch(e){K.vF.error("Failed to fetch log level, using default.",e)}})()},[r,p]);const f=(0,fl.useCallback)(e=>{u(e),(0,a.GY)(o.XEV)},[u]),m=(0,fl.useCallback)(e=>async t=>{f(n=>(0,i.A)((0,i.A)({},n),{},{[e]:(0,i.A)((0,i.A)({},(null===n||void 0===n?void 0:n[e])||{}),t)}))},[f]),g=(0,fl.useMemo)(()=>({context:n,setting:s,updateSetting:f,updateChild:m,reloadSetting:c}),[n,s,f,m,c]);return l?r?(0,yl.jsx)(Wy,{}):null:s?(0,yl.jsx)(Uy.Provider,{value:g,children:t}):r?(0,yl.jsx)("center",{children:(0,yl.jsxs)(Xv,{severity:"error",sx:{maxWidth:600,margin:"60px auto"},children:[(0,yl.jsx)("p",{children:"\u6570\u636e\u52a0\u8f7d\u51fa\u9519\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u6216\u5378\u8f7d\u540e\u91cd\u65b0\u5b89\u88c5\u3002"}),(0,yl.jsx)("p",{children:"Data loading error, please refresh the page or uninstall and reinstall."})]})}):null}function Vy(){return(0,fl.useContext)(Uy)}var Gy=n(6966);const Ky=fl.createContext(null);function qy(){return fl.useContext(Ky)}const $y="function"===typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";const Yy=function(e){const{children:t,theme:n}=e,r=qy(),i=fl.useMemo(()=>{const e=null===r?n:function(e,t){if("function"===typeof t)return t(e);return(0,wg.A)({},e,t)}(r,n);return null!=e&&(e[$y]=null!==r),e},[n,r]);return(0,yl.jsx)(Ky.Provider,{value:i,children:t})};const Xy=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=fl.useContext(gl.T);return t&&(n=t,0!==Object.keys(n).length)?t:e;var n},Jy=["value"],Qy=fl.createContext();const Zy=()=>{const e=fl.useContext(Qy);return null!=e&&e},eb=function(e){let{value:t}=e,n=(0,xg.A)(e,Jy);return(0,yl.jsx)(Qy.Provider,(0,wg.A)({value:null==t||t},n))};var tb=n(5779),nb=n(6489),rb=n(7461),ib=n(1876),ob=n(3780),ab=n(2979);const sb=(0,ab.A)();const lb=function(){return Xy(arguments.length>0&&void 0!==arguments[0]?arguments[0]:sb)};function ub(e){const t=(0,ib.internal_serializeStyles)(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles="@layer global{".concat(t.styles,"}")),t):e}const cb=function(e){let{styles:t,themeId:n,defaultTheme:r={}}=e;const i=lb(r),o=n&&i[n]||i;let a="function"===typeof t?t(o):t;return o.modularCssLayers&&(a=Array.isArray(a)?a.map(e=>ub("function"===typeof e?e(o):e)):ub(a)),(0,yl.jsx)(ob.A,{styles:a})};const db={};function hb(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return fl.useMemo(()=>{const i=e&&t[e]||t;if("function"===typeof n){const o=n(i),a=e?(0,wg.A)({},t,{[e]:o}):o;return r?()=>a:a}return e?(0,wg.A)({},t,{[e]:n}):(0,wg.A)({},t,n)},[e,t,n,r])}const pb=function(e){const{children:t,theme:n,themeId:r}=e,i=Xy(db),o=qy()||db,a=hb(r,i,n),s=hb(r,o,n,!0),l="rtl"===a.direction,u=function(e){const t=Xy(),n=(0,rb.A)()||"",{modularCssLayers:r}=e;let i="mui.global, mui.components, mui.theme, mui.custom, mui.sx";return i=r&&null===t?"string"===typeof r?r.replace(/mui(?!\.)/g,i):"@layer ".concat(i,";"):"",(0,nb.A)(()=>{const e=document.querySelector("head");if(!e)return;const t=e.firstChild;if(i){var r;if(t&&null!=(r=t.hasAttribute)&&r.call(t,"data-mui-layer-order")&&t.getAttribute("data-mui-layer-order")===n)return;const o=document.createElement("style");o.setAttribute("data-mui-layer-order",n),o.textContent=i,e.prepend(o)}else{var o;null==(o=e.querySelector('style[data-mui-layer-order="'.concat(n,'"]')))||o.remove()}},[i,n]),i?(0,yl.jsx)(cb,{styles:i}):null}(a);return(0,yl.jsx)(Yy,{theme:s,children:(0,yl.jsx)(gl.T.Provider,{value:a,children:(0,yl.jsx)(eb,{value:l,children:(0,yl.jsxs)(tb.A,{value:null==a?void 0:a.components,children:[u,t]})})})})};var fb=n(5863);const mb=["theme"];function gb(e){let{theme:t}=e,n=(0,xg.A)(e,mb);const r=t[fb.A];let i=r||t;return"function"!==typeof t&&(r&&!r.vars?i=(0,wg.A)({},r,{vars:null}):t&&!t.vars&&(i=(0,wg.A)({},t,{vars:null}))),(0,yl.jsx)(pb,(0,wg.A)({},n,{themeId:r?fb.A:void 0,theme:i}))}var vb=n(1210);const yb=function(e){return(0,yl.jsx)(cb,(0,wg.A)({},e,{defaultTheme:vb.A,themeId:fb.A}))},bb=(e,t)=>(0,wg.A)({WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",boxSizing:"border-box",WebkitTextSizeAdjust:"100%"},t&&!e.vars&&{colorScheme:e.palette.mode}),Ab=e=>(0,wg.A)({color:(e.vars||e).palette.text.primary},e.typography.body1,{backgroundColor:(e.vars||e).palette.background.default,"@media print":{backgroundColor:(e.vars||e).palette.common.white}});const xb=function(e){const t=(0,_g.b)({props:e,name:"MuiCssBaseline"}),{children:n,enableColorScheme:r=!1}=t;return(0,yl.jsxs)(fl.Fragment,{children:[(0,yl.jsx)(yb,{styles:e=>function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var n;const r={};t&&e.colorSchemes&&Object.entries(e.colorSchemes).forEach(t=>{let[n,i]=t;var o;r[e.getColorSchemeSelector(n).replace(/\s*&/,"")]={colorScheme:null==(o=i.palette)?void 0:o.mode}});let i=(0,wg.A)({html:bb(e,t),"*, *::before, *::after":{boxSizing:"inherit"},"strong, b":{fontWeight:e.typography.fontWeightBold},body:(0,wg.A)({margin:0},Ab(e),{"&::backdrop":{backgroundColor:(e.vars||e).palette.background.default}})},r);const o=null==(n=e.components)||null==(n=n.MuiCssBaseline)?void 0:n.styleOverrides;return o&&(i=[i,o]),i}(e,r)}),n]})};function wb(){const{setting:{darkMode:e},updateSetting:t}=Vy(),n=(0,fl.useCallback)(()=>{t({darkMode:{light:"dark",dark:"auto",auto:"light"}[e]||"light"})},[e,t]);return{darkMode:e,toggleDarkMode:n}}function kb(e){let{children:t,options:n={},styles:r={}}=e;const{darkMode:a}=wb(),[s,l]=(0,fl.useState)(o.VwZ);(0,fl.useEffect)(()=>{if("function"!==typeof window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),t=()=>{l(e.matches?o.fSx:o.VwZ)};return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]);const u=(0,fl.useMemo)(()=>{let e=16;try{const t=window.getComputedStyle(document.documentElement).fontSize;e=parseInt(t.replace("px",""))}catch(r){}const t="dark"===a||"auto"===a&&s===o.fSx;return(0,Gy.A)((0,i.A)({palette:{mode:t?o.fSx:o.VwZ},typography:{htmlFontSize:e}},n))},[a,n,s]);return(0,yl.jsxs)(gb,{theme:u,children:[(0,yl.jsx)(xb,{}),(0,yl.jsx)(yb,{styles:r}),t]})}var Sb=n(1985);const Eb=["className","component"];var Cb=n(7599);const _b=(0,Wg.A)("MuiBox",["root"]),Tb=(0,Gy.A)(),Db=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{themeId:t,defaultTheme:n,defaultClassName:r="MuiBox-root",generateClassName:i}=e,o=(0,ib.default)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(Sb.A);return fl.forwardRef(function(e,a){const s=lb(n),l=(0,vy.A)(e),{className:u,component:c="div"}=l,d=(0,xg.A)(l,Eb);return(0,yl.jsx)(o,(0,wg.A)({as:c,ref:a,className:(0,kg.A)(u,i?i(r):r),theme:t&&s[t]||s},d))})}({themeId:fb.A,defaultTheme:Tb,defaultClassName:_b.root,generateClassName:Cb.A.generate}),Pb=Db;function Ib(){const e=lb(vb.A);return e[fb.A]||e}var Fb=n(6253),Lb=n(8581);function Ob(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return(0,Lb.A)(e,t,n)}function Nb(e){if(e.type)return e;if("#"===e.charAt(0))return Nb(function(e){e=e.slice(1);const t=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map(e=>e+e)),n?"rgb".concat(4===n.length?"a":"","(").concat(n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", "),")"):""}(e));const t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(n))throw new Error((0,Fb.A)(9,e));let r,i=e.substring(t+1,e.length-1);if("color"===n){if(i=i.split(" "),r=i.shift(),4===i.length&&"/"===i[3].charAt(0)&&(i[3]=i[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(r))throw new Error((0,Fb.A)(10,r))}else i=i.split(",");return i=i.map(e=>parseFloat(e)),{type:n,values:i,colorSpace:r}}function zb(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return-1!==t.indexOf("rgb")?r=r.map((e,t)=>t<3?parseInt(e,10):e):-1!==t.indexOf("hsl")&&(r[1]="".concat(r[1],"%"),r[2]="".concat(r[2],"%")),r=-1!==t.indexOf("color")?"".concat(n," ").concat(r.join(" ")):"".concat(r.join(", ")),"".concat(t,"(").concat(r,")")}function jb(e,t){return e=Nb(e),t=Ob(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]="/".concat(t):e.values[3]=t,zb(e)}function Rb(e){return e+16}function Mb(e){return e+52}function Bb(){return Math.max(0,window.innerWidth-16)}function Wb(){return Math.max(0,window.innerHeight-52)}function Ub(e){return Math.max(0,window.innerWidth-Rb(e))}function Hb(e){return Math.max(0,window.innerHeight-Mb(e))}const Vb=["direction","size","setSize","position","setPosition","children","minSize","maxSize","getMaxPositionY"],Gb=["header","children","position","size","minSize","maxSize","setSize","setPosition","onChangeSize","onChangePosition","autoHeight"];function Kb(e){let{direction:t,size:n,setSize:r,position:o,setPosition:a,children:s,minSize:u,maxSize:c,getMaxPositionY:d}=e,h=(0,U.A)(e,Vb);const[p,f]=(0,fl.useState)(null);function m(e){!Pa&&e.target.setPointerCapture(e.pointerId);const{clientX:t,clientY:r}=Pa?e.targetTouches[0]:e;f({x:o.x,y:o.y,w:n.w,h:n.h,clientX:t,clientY:r})}function g(e){const{clientX:i,clientY:s}=Pa?e.targetTouches[0]:e;if(p){const e=i-p.clientX,h=s-p.clientY;let f=o.x,m=o.y,g=n.w,v=n.h;switch(t){case"Header":f=p.x+e,m=p.y+h;break;case"TopLeft":f=p.x+e,m=p.y+h,g=p.w-e,v=p.h-h;break;case"Top":m=p.y+h,v=p.h-h;break;case"TopRight":m=p.y+h,g=p.w+e,v=p.h-h;break;case"Left":f=p.x+e,g=p.w-e;break;case"Right":g=p.w+e;break;case"BottomLeft":f=p.x+e,g=p.w-e,v=p.h+h;break;case"Bottom":v=p.h+h;break;case"BottomRight":g=p.w+e,v=p.h+h}gc.w&&(g=c.w,f=o.x),vc.h&&(v=c.h,m=o.y);const y={w:(0,l.NS)(g,u.w,Bb()),h:(0,l.NS)(v,u.h,Wb())};a({x:(0,l.NS)(f,0,Ub(y.w)),y:(0,l.NS)(m,0,d(y.h))}),r(y)}}function v(e){e.stopPropagation(),f(null)}const y=Pa?{onTouchStart:m,onTouchMove:g,onTouchEnd:v}:{onPointerDown:m,onPointerMove:g,onPointerUp:v};return(0,yl.jsx)("div",(0,i.A)((0,i.A)((0,i.A)({},h),y),{},{children:s}))}function qb(e){let{header:t,children:n,position:r={x:0,y:0},size:o={w:600,h:400},minSize:a={w:300,h:200},maxSize:s={w:1200,h:1200},setSize:u,setPosition:c,onChangeSize:d,onChangePosition:h,autoHeight:p}=e,f=(0,U.A)(e,Gb);const m=Ib(),g="dark"===m.palette.mode,v=(0,fl.useRef)(null),y=(0,fl.useCallback)(e=>{var t;if(!p)return Hb(e);const n=null===(t=v.current)||void 0===t?void 0:t.getBoundingClientRect().height;return Math.max(0,window.innerHeight-(n||Mb(e)))},[p]);(0,fl.useLayoutEffect)(()=>{if(!p||!v.current)return;const e=()=>{c(e=>{const t=(0,l.NS)(e.y,0,y(o.h));return t===e.y?e:(0,i.A)((0,i.A)({},e),{},{y:t})})};e();const t=window.ResizeObserver;if(!t)return;const n=new t(e);return n.observe(v.current),()=>n.disconnect()},[p,y,c,o.h]);const b=g?"\n 0 0 0 1px rgba(255,255,255,0.18),\n 0 0 10px 2px rgba(255,255,255,0.18),\n 0 8px 32px rgba(0,0,0,0.35)\n ":" \n 0 4px 18px rgba(0, 0, 0, 0.15)\n ",A={size:o,setSize:u,position:r,setPosition:c,minSize:a,maxSize:s,getMaxPositionY:y};return(0,yl.jsxs)(Pb,(0,i.A)((0,i.A)({ref:v,className:"KT-draggable",style:{touchAction:"none",position:"fixed",left:r.x,top:r.y,display:"grid",gridTemplateColumns:"".concat(8,"px ").concat(o.w,"px ").concat(8,"px"),gridTemplateRows:"".concat(8,"px auto ").concat(8,"px"),zIndex:2147483647,borderRadius:"12px",overflow:"hidden"}},f),{},{children:[(0,yl.jsx)(Kb,(0,i.A)({direction:"TopLeft",style:{transform:"translate(".concat(4,"px, ").concat(4,"px)"),cursor:"nw-resize"}},A)),(0,yl.jsx)(Kb,(0,i.A)({direction:"Top",style:{margin:"0 ".concat(4,"px"),transform:"translate(0px, ".concat(4,"px)"),cursor:"row-resize"}},A)),(0,yl.jsx)(Kb,(0,i.A)({direction:"TopRight",style:{transform:"translate(-".concat(4,"px, ").concat(4,"px)"),cursor:"ne-resize"}},A)),(0,yl.jsx)(Kb,(0,i.A)({direction:"Left",style:{margin:"".concat(4,"px 0"),transform:"translate(".concat(4,"px, 0px)"),cursor:"col-resize"}},A)),(0,yl.jsxs)(Kg,{className:"KT-draggable-body",elevation:4,sx:{width:o.w,maxWidth:o.w,minWidth:0,borderRadius:4,overflow:"hidden",backgroundColor:m.palette.background.paper,boxShadow:b},children:[(0,yl.jsx)(Kb,(0,i.A)((0,i.A)({className:"KT-draggable-header",direction:"Header",style:{cursor:"move"}},A),{},{children:t})),(0,yl.jsx)(Pb,{className:"KT-draggable-container",sx:()=>{const e=p?{width:o.w,maxHeight:o.h,overflow:"hidden auto",wordBreak:"break-word"}:{width:o.w,height:o.h,overflow:"hidden auto",wordBreak:"break-word"},t="dark"===m.palette.mode?"#1f1f23":m.palette.background.paper,n="dark"===m.palette.mode?jb(m.palette.text.primary,.28):jb(m.palette.text.primary,.24);return(0,i.A)((0,i.A)({},e),{},{backgroundColor:m.palette.background.paper,"&::-webkit-scrollbar":{width:10,height:10},"&::-webkit-scrollbar-track":{background:t},"&::-webkit-scrollbar-thumb":{backgroundColor:n,borderRadius:8,border:"2px solid ".concat(m.palette.background.paper)},"&::-webkit-scrollbar-thumb:hover":{backgroundColor:jb(m.palette.text.primary,.36)},scrollbarWidth:"thin",scrollbarColor:"".concat(n," ").concat(t)})},children:n})]}),(0,yl.jsx)(Kb,(0,i.A)({direction:"Right",style:{margin:"".concat(4,"px 0"),transform:"translate(-".concat(4,"px, 0px)"),cursor:"col-resize"}},A)),(0,yl.jsx)(Kb,(0,i.A)({direction:"BottomLeft",style:{transform:"translate(".concat(4,"px, -").concat(4,"px)"),cursor:"ne-resize"}},A)),(0,yl.jsx)(Kb,(0,i.A)({direction:"Bottom",style:{margin:"0 ".concat(4,"px"),transform:"translate(0px, -".concat(4,"px)"),cursor:"row-resize"}},A)),(0,yl.jsx)(Kb,(0,i.A)({direction:"BottomRight",style:{transform:"translate(-".concat(4,"px, -").concat(4,"px)"),cursor:"nw-resize"}},A))]}))}var $b=n(6997);const Yb=["ownerState"],Xb=["variants"],Jb=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function Qb(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function Zb(e,t){return t&&e&&"object"===typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles="@layer ".concat(t,"{").concat(String(e.styles),"}")),e}const eA=(0,ab.A)(),tA=e=>e?e.charAt(0).toLowerCase()+e.slice(1):e;function nA(e){let{defaultTheme:t,theme:n,themeId:r}=e;return i=n,0===Object.keys(i).length?t:n[r]||n;var i}function rA(e){return e?(t,n)=>n[e]:null}function iA(e,t,n){let{ownerState:r}=t,i=(0,xg.A)(t,Yb);const o="function"===typeof e?e((0,wg.A)({ownerState:r},i)):e;if(Array.isArray(o))return o.flatMap(e=>iA(e,(0,wg.A)({ownerState:r},i),n));if(o&&"object"===typeof o&&Array.isArray(o.variants)){const{variants:e=[]}=o;let t=(0,xg.A)(o,Xb);return e.forEach(e=>{let o=!0;if("function"===typeof e.props?o=e.props((0,wg.A)({ownerState:r},i,r)):Object.keys(e.props).forEach(t=>{(null==r?void 0:r[t])!==e.props[t]&&i[t]!==e.props[t]&&(o=!1)}),o){Array.isArray(t)||(t=[t]);const o="function"===typeof e.style?e.style((0,wg.A)({ownerState:r},i,r)):e.style;t.push(n?Zb((0,ib.internal_serializeStyles)(o),n):o)}}),t}return n?Zb((0,ib.internal_serializeStyles)(o),n):o}const oA=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{themeId:t,defaultTheme:n=eA,rootShouldForwardProp:r=Qb,slotShouldForwardProp:i=Qb}=e,o=e=>(0,Sb.A)((0,wg.A)({},e,{theme:nA((0,wg.A)({},e,{defaultTheme:n,themeId:t}))}));return o.__mui_systemSx=!0,function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,ib.internal_processStyles)(e,e=>e.filter(e=>!(null!=e&&e.__mui_systemSx)));const{name:s,slot:l,skipVariantsResolver:u,skipSx:c,overridesResolver:d=rA(tA(l))}=a,h=(0,xg.A)(a,Jb),p=s&&s.startsWith("Mui")||l?"components":"custom",f=void 0!==u?u:l&&"Root"!==l&&"root"!==l||!1,m=c||!1;let g=Qb;"Root"===l||"root"===l?g=r:l?g=i:function(e){return"string"===typeof e&&e.charCodeAt(0)>96}(e)&&(g=void 0);const v=(0,ib.default)(e,(0,wg.A)({shouldForwardProp:g,label:undefined},h)),y=e=>"function"===typeof e&&e.__emotion_real!==e||(0,$b.Q)(e)?r=>{const i=nA({theme:r.theme,defaultTheme:n,themeId:t});return iA(e,(0,wg.A)({},r,{theme:i}),i.modularCssLayers?p:void 0)}:e,b=function(r){let i=y(r);for(var a=arguments.length,l=new Array(a>1?a-1:0),u=1;u{const r=nA((0,wg.A)({},e,{defaultTheme:n,themeId:t}));if(!r.components||!r.components[s]||!r.components[s].styleOverrides)return null;const i=r.components[s].styleOverrides,o={};return Object.entries(i).forEach(t=>{let[n,i]=t;o[n]=iA(i,(0,wg.A)({},e,{theme:r}),r.modularCssLayers?"theme":void 0)}),d(e,o)}),s&&!f&&c.push(e=>{var r;const i=nA((0,wg.A)({},e,{defaultTheme:n,themeId:t}));return iA({variants:null==i||null==(r=i.components)||null==(r=r[s])?void 0:r.variants},(0,wg.A)({},e,{theme:i}),i.modularCssLayers?"theme":void 0)}),m||c.push(o);const h=c.length-l.length;if(Array.isArray(r)&&h>0){const e=new Array(h).fill("");i=[...r,...e],i.raw=[...r.raw,...e]}const p=v(i,...c);return e.muiName&&(p.muiName=e.muiName),p};return v.withConfig&&(b.withConfig=v.withConfig),b}}(),aA=oA;var sA=n(3699);function lA(e){let{props:t,name:n,defaultTheme:r,themeId:i}=e,o=lb(r);i&&(o=o[i]||o);const a=function(e){const{theme:t,name:n,props:r}=e;return t&&t.components&&t.components[n]&&t.components[n].defaultProps?(0,sA.A)(t.components[n].defaultProps,r):r}({theme:o,name:n,props:t});return a}var uA=n(3830),cA=n(4262);const dA=["component","direction","spacing","divider","children","className","useFlexGap"],hA=(0,ab.A)(),pA=aA("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root});function fA(e){return lA({props:e,name:"MuiStack",defaultTheme:hA})}function mA(e,t){const n=fl.Children.toArray(e).filter(Boolean);return n.reduce((e,r,i)=>(e.push(r),i{let{ownerState:t,theme:n}=e,r=(0,wg.A)({display:"flex",flexDirection:"column"},(0,uA.NI)({theme:n},(0,uA.kW)({values:t.direction,breakpoints:n.breakpoints.values}),e=>({flexDirection:e})));if(t.spacing){const e=(0,cA.LX)(n),i=Object.keys(n.breakpoints.values).reduce((e,n)=>(("object"===typeof t.spacing&&null!=t.spacing[n]||"object"===typeof t.direction&&null!=t.direction[n])&&(e[n]=!0),e),{}),o=(0,uA.kW)({values:t.direction,base:i}),a=(0,uA.kW)({values:t.spacing,base:i});"object"===typeof o&&Object.keys(o).forEach((e,t,n)=>{if(!o[e]){const r=t>0?o[n[t-1]]:"column";o[e]=r}});const s=(n,r)=>{return t.useFlexGap?{gap:(0,cA._W)(e,n)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":{["margin".concat((i=r?o[r]:t.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[i]))]:(0,cA._W)(e,n)}};var i};r=(0,$b.A)(r,(0,uA.NI)({theme:n},a,s))}return r=(0,uA.iZ)(n.breakpoints,r),r};const vA=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{createStyledComponent:t=pA,useThemeProps:n=fA,componentName:r="MuiStack"}=e,i=t(gA),o=fl.forwardRef(function(e,t){const o=n(e),a=(0,vy.A)(o),{component:s="div",direction:l="column",spacing:u=0,divider:c,children:d,className:h,useFlexGap:p=!1}=a,f=(0,xg.A)(a,dA),m={direction:l,spacing:u,useFlexGap:p},g=(0,Sg.A)({root:["root"]},e=>(0,Ug.Ay)(r,e),{});return(0,yl.jsx)(i,(0,wg.A)({as:s,ownerState:m,ref:t,className:(0,kg.A)(g.root,h)},f,{children:c?mA(d,c):d}))});return o}({createStyledComponent:(0,Cg.Ay)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root}),useThemeProps:e=>(0,_g.b)({props:e,name:"MuiStack"})}),yA=vA;var bA=n(6652),AA=n(2428),xA=n(2266),wA=n(2890),kA=n(4324),SA=n(9150),EA=n(5058),CA=n(8201),_A=n(1310),TA=n(5326),DA=n(5261);const PA=["execute"],IA=()=>{const[e,t]=(0,fl.useState)(null),[n,r]=(0,fl.useState)(!1),[i,o]=(0,fl.useState)(null),a=(0,fl.useCallback)(async function(e){if(e){r(!0),o(null);try{for(var n=arguments.length,i=new Array(n>1?n-1:0),a=1;a{t(null),r(!1),o(null)},[])}},FA=(e,t)=>{const n=IA(),{execute:r}=n,o=(0,U.A)(n,PA);return(0,fl.useEffect)(()=>{e&&r(e,t)},[r,e,t]),(0,i.A)({},o)},LA=e=>function(t){return function(e,t){var n,r;let i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return null!==(n=null===o.THG||void 0===o.THG||null===(r=o.THG[t])||void 0===r?void 0:r[e])&&void 0!==n?n:i}(e,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:"")},OA=()=>{const{setting:{uiLang:e}}=Vy();return LA(e)};var NA=n(6333),zA=n(6267),jA=n(2561);const RA=["onChange","maxRows","minRows","style","value"];function MA(e){return parseInt(e,10)||0}const BA={visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"};function WA(e){return function(e){for(const t in e)return!1;return!0}(e)||0===e.outerHeightStyle&&!e.overflowing}const UA=fl.forwardRef(function(e,t){const{onChange:n,maxRows:r,minRows:i=1,style:o,value:a}=e,s=(0,xg.A)(e,RA),{current:l}=fl.useRef(null!=a),u=fl.useRef(null),c=(0,Tg.A)(t,u),d=fl.useRef(null),h=fl.useRef(null),p=fl.useCallback(()=>{const t=u.current,n=h.current;if(!t||!n)return;const o=(0,NA.A)(t).getComputedStyle(t);if("0px"===o.width)return{outerHeightStyle:0,overflowing:!1};n.style.width=o.width,n.value=t.value||e.placeholder||"x","\n"===n.value.slice(-1)&&(n.value+=" ");const a=o.boxSizing,s=MA(o.paddingBottom)+MA(o.paddingTop),l=MA(o.borderBottomWidth)+MA(o.borderTopWidth),c=n.scrollHeight;n.value="x";const d=n.scrollHeight;let p=c;i&&(p=Math.max(Number(i)*d,p)),r&&(p=Math.min(Number(r)*d,p)),p=Math.max(p,d);return{outerHeightStyle:p+("border-box"===a?s+l:0),overflowing:Math.abs(p-c)<=1}},[r,i,e.placeholder]),f=(0,zA.A)(()=>{const e=u.current,t=p();if(!e||!t||WA(t))return!1;const n=t.outerHeightStyle;return null!=d.current&&d.current!==n}),m=fl.useCallback(()=>{const e=u.current,t=p();if(!e||!t||WA(t))return;const n=t.outerHeightStyle;d.current!==n&&(d.current=n,e.style.height="".concat(n,"px")),e.style.overflow=t.overflowing?"hidden":""},[p]),g=fl.useRef(-1);(0,nb.A)(()=>{const e=(0,jA.A)(m),t=null==u?void 0:u.current;if(!t)return;const n=(0,NA.A)(t);let r;return n.addEventListener("resize",e),"undefined"!==typeof ResizeObserver&&(r=new ResizeObserver(()=>{f()&&(r.unobserve(t),cancelAnimationFrame(g.current),m(),g.current=requestAnimationFrame(()=>{r.observe(t)}))}),r.observe(t)),()=>{e.clear(),cancelAnimationFrame(g.current),n.removeEventListener("resize",e),r&&r.disconnect()}},[p,m,f]),(0,nb.A)(()=>{m()});return(0,yl.jsxs)(fl.Fragment,{children:[(0,yl.jsx)("textarea",(0,wg.A)({value:a,onChange:e=>{l||m(),n&&n(e)},ref:c,rows:i,style:o},s)),(0,yl.jsx)("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:h,tabIndex:-1,style:(0,wg.A)({},BA,o,{paddingTop:0,paddingBottom:0})})]})}),HA=UA;function VA(e){let{props:t,states:n,muiFormControl:r}=e;return n.reduce((e,n)=>(e[n]=t[n],r&&"undefined"===typeof t[n]&&(e[n]=r[n]),e),{})}const GA=fl.createContext(void 0);function KA(){return fl.useContext(GA)}var qA=n(4077);function $A(e){return null!=e&&!(Array.isArray(e)&&0===e.length)}function YA(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e&&($A(e.value)&&""!==e.value||t&&$A(e.defaultValue)&&""!==e.defaultValue)}function XA(e){return(0,Ug.Ay)("MuiInputBase",e)}const JA=(0,Wg.A)("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel"]),QA=["aria-describedby","autoComplete","autoFocus","className","color","components","componentsProps","defaultValue","disabled","disableInjectingGlobalStyles","endAdornment","error","fullWidth","id","inputComponent","inputProps","inputRef","margin","maxRows","minRows","multiline","name","onBlur","onChange","onClick","onFocus","onKeyDown","onKeyUp","placeholder","readOnly","renderSuffix","rows","size","slotProps","slots","startAdornment","type","value"],ZA=(e,t)=>{const{ownerState:n}=e;return[t.root,n.formControl&&t.formControl,n.startAdornment&&t.adornedStart,n.endAdornment&&t.adornedEnd,n.error&&t.error,"small"===n.size&&t.sizeSmall,n.multiline&&t.multiline,n.color&&t["color".concat((0,Mg.A)(n.color))],n.fullWidth&&t.fullWidth,n.hiddenLabel&&t.hiddenLabel]},ex=(e,t)=>{const{ownerState:n}=e;return[t.input,"small"===n.size&&t.inputSizeSmall,n.multiline&&t.inputMultiline,"search"===n.type&&t.inputTypeSearch,n.startAdornment&&t.inputAdornedStart,n.endAdornment&&t.inputAdornedEnd,n.hiddenLabel&&t.inputHiddenLabel]},tx=(0,Cg.Ay)("div",{name:"MuiInputBase",slot:"Root",overridesResolver:ZA})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({},t.typography.body1,{color:(t.vars||t).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center",["&.".concat(JA.disabled)]:{color:(t.vars||t).palette.text.disabled,cursor:"default"}},n.multiline&&(0,wg.A)({padding:"4px 0 5px"},"small"===n.size&&{paddingTop:1}),n.fullWidth&&{width:"100%"})}),nx=(0,Cg.Ay)("input",{name:"MuiInputBase",slot:"Input",overridesResolver:ex})(e=>{let{theme:t,ownerState:n}=e;const r="light"===t.palette.mode,i=(0,wg.A)({color:"currentColor"},t.vars?{opacity:t.vars.opacity.inputPlaceholder}:{opacity:r?.42:.5},{transition:t.transitions.create("opacity",{duration:t.transitions.duration.shorter})}),o={opacity:"0 !important"},a=t.vars?{opacity:t.vars.opacity.inputPlaceholder}:{opacity:r?.42:.5};return(0,wg.A)({font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%",animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&::-webkit-input-placeholder":i,"&::-moz-placeholder":i,"&:-ms-input-placeholder":i,"&::-ms-input-placeholder":i,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"},["label[data-shrink=false] + .".concat(JA.formControl," &")]:{"&::-webkit-input-placeholder":o,"&::-moz-placeholder":o,"&:-ms-input-placeholder":o,"&::-ms-input-placeholder":o,"&:focus::-webkit-input-placeholder":a,"&:focus::-moz-placeholder":a,"&:focus:-ms-input-placeholder":a,"&:focus::-ms-input-placeholder":a},["&.".concat(JA.disabled)]:{opacity:1,WebkitTextFillColor:(t.vars||t).palette.text.disabled},"&:-webkit-autofill":{animationDuration:"5000s",animationName:"mui-auto-fill"}},"small"===n.size&&{paddingTop:1},n.multiline&&{height:"auto",resize:"none",padding:0,paddingTop:0},"search"===n.type&&{MozAppearance:"textfield"})}),rx=(0,yl.jsx)(yb,{styles:{"@keyframes mui-auto-fill":{from:{display:"block"}},"@keyframes mui-auto-fill-cancel":{from:{display:"block"}}}}),ix=fl.forwardRef(function(e,t){var n;const r=(0,_g.b)({props:e,name:"MuiInputBase"}),{"aria-describedby":i,autoComplete:o,autoFocus:a,className:s,components:l={},componentsProps:u={},defaultValue:c,disabled:d,disableInjectingGlobalStyles:h,endAdornment:p,fullWidth:f=!1,id:m,inputComponent:g="input",inputProps:v={},inputRef:y,maxRows:b,minRows:A,multiline:x=!1,name:w,onBlur:k,onChange:S,onClick:E,onFocus:C,onKeyDown:_,onKeyUp:T,placeholder:D,readOnly:P,renderSuffix:I,rows:F,slotProps:L={},slots:O={},startAdornment:N,type:z="text",value:j}=r,R=(0,xg.A)(r,QA),M=null!=v.value?v.value:j,{current:B}=fl.useRef(null!=M),W=fl.useRef(),U=fl.useCallback(e=>{0},[]),H=(0,Yg.A)(W,y,v.ref,U),[V,G]=fl.useState(!1),K=KA();const q=VA({props:r,muiFormControl:K,states:["color","disabled","error","hiddenLabel","size","required","filled"]});q.focused=K?K.focused:V,fl.useEffect(()=>{!K&&d&&V&&(G(!1),k&&k())},[K,d,V,k]);const $=K&&K.onFilled,Y=K&&K.onEmpty,X=fl.useCallback(e=>{YA(e)?$&&$():Y&&Y()},[$,Y]);(0,qA.A)(()=>{B&&X({value:M})},[M,X,B]);fl.useEffect(()=>{X(W.current)},[]);let J=g,Q=v;x&&"input"===J&&(Q=F?(0,wg.A)({type:void 0,minRows:F,maxRows:F},Q):(0,wg.A)({type:void 0,maxRows:b,minRows:A},Q),J=HA);fl.useEffect(()=>{K&&K.setAdornedStart(Boolean(N))},[K,N]);const Z=(0,wg.A)({},r,{color:q.color||"primary",disabled:q.disabled,endAdornment:p,error:q.error,focused:q.focused,formControl:K,fullWidth:f,hiddenLabel:q.hiddenLabel,multiline:x,size:q.size,startAdornment:N,type:z}),ee=(e=>{const{classes:t,color:n,disabled:r,error:i,endAdornment:o,focused:a,formControl:s,fullWidth:l,hiddenLabel:u,multiline:c,readOnly:d,size:h,startAdornment:p,type:f}=e,m={root:["root","color".concat((0,Mg.A)(n)),r&&"disabled",i&&"error",l&&"fullWidth",a&&"focused",s&&"formControl",h&&"medium"!==h&&"size".concat((0,Mg.A)(h)),c&&"multiline",p&&"adornedStart",o&&"adornedEnd",u&&"hiddenLabel",d&&"readOnly"],input:["input",r&&"disabled","search"===f&&"inputTypeSearch",c&&"inputMultiline","small"===h&&"inputSizeSmall",u&&"inputHiddenLabel",p&&"inputAdornedStart",o&&"inputAdornedEnd",d&&"readOnly"]};return(0,Sg.A)(m,XA,t)})(Z),te=O.root||l.Root||tx,ne=L.root||u.root||{},re=O.input||l.Input||nx;return Q=(0,wg.A)({},Q,null!=(n=L.input)?n:u.input),(0,yl.jsxs)(fl.Fragment,{children:[!h&&rx,(0,yl.jsxs)(te,(0,wg.A)({},ne,!Dg(te)&&{ownerState:(0,wg.A)({},Z,ne.ownerState)},{ref:t,onClick:e=>{W.current&&e.currentTarget===e.target&&W.current.focus(),E&&E(e)}},R,{className:(0,kg.A)(ee.root,ne.className,s,P&&"MuiInputBase-readOnly"),children:[N,(0,yl.jsx)(GA.Provider,{value:null,children:(0,yl.jsx)(re,(0,wg.A)({ownerState:Z,"aria-invalid":q.error,"aria-describedby":i,autoComplete:o,autoFocus:a,defaultValue:c,disabled:q.disabled,id:m,onAnimationStart:e=>{X("mui-auto-fill-cancel"===e.animationName?W.current:{value:"x"})},name:w,placeholder:D,readOnly:P,required:q.required,rows:F,value:M,onKeyDown:_,onKeyUp:T,type:z},Q,!Dg(re)&&{as:J,ownerState:(0,wg.A)({},Z,Q.ownerState)},{ref:H,className:(0,kg.A)(ee.input,Q.className,P&&"MuiInputBase-readOnly"),onBlur:e=>{k&&k(e),v.onBlur&&v.onBlur(e),K&&K.onBlur?K.onBlur(e):G(!1)},onChange:function(e){if(!B){const t=e.target||W.current;if(null==t)throw new Error((0,Fb.A)(1));X({value:t.value})}for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{q.disabled?e.stopPropagation():(C&&C(e),v.onFocus&&v.onFocus(e),K&&K.onFocus?K.onFocus(e):G(!0))}}))}),p,I?I((0,wg.A)({},q,{startAdornment:N})):null]}))]})}),ox=ix;var ax=n(4539);function sx(e){return(0,Ug.Ay)("MuiInput",e)}const lx=(0,wg.A)({},JA,(0,Wg.A)("MuiInput",["root","underline","input"])),ux=["disableUnderline","components","componentsProps","fullWidth","inputComponent","multiline","slotProps","slots","type"],cx=(0,Cg.Ay)(tx,{shouldForwardProp:e=>(0,ax.A)(e)||"classes"===e,name:"MuiInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[...ZA(e,t),!n.disableUnderline&&t.underline]}})(e=>{let{theme:t,ownerState:n}=e;let r="light"===t.palette.mode?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return t.vars&&(r="rgba(".concat(t.vars.palette.common.onBackgroundChannel," / ").concat(t.vars.opacity.inputUnderline,")")),(0,wg.A)({position:"relative"},n.formControl&&{"label + &":{marginTop:16}},!n.disableUnderline&&{"&::after":{borderBottom:"2px solid ".concat((t.vars||t).palette[n.color].main),left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:t.transitions.create("transform",{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut}),pointerEvents:"none"},["&.".concat(lx.focused,":after")]:{transform:"scaleX(1) translateX(0)"},["&.".concat(lx.error)]:{"&::before, &::after":{borderBottomColor:(t.vars||t).palette.error.main}},"&::before":{borderBottom:"1px solid ".concat(r),left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:t.transitions.create("border-bottom-color",{duration:t.transitions.duration.shorter}),pointerEvents:"none"},["&:hover:not(.".concat(lx.disabled,", .").concat(lx.error,"):before")]:{borderBottom:"2px solid ".concat((t.vars||t).palette.text.primary),"@media (hover: none)":{borderBottom:"1px solid ".concat(r)}},["&.".concat(lx.disabled,":before")]:{borderBottomStyle:"dotted"}})}),dx=(0,Cg.Ay)(nx,{name:"MuiInput",slot:"Input",overridesResolver:ex})({}),hx=fl.forwardRef(function(e,t){var n,r,i,o;const a=(0,_g.b)({props:e,name:"MuiInput"}),{disableUnderline:s,components:l={},componentsProps:u,fullWidth:c=!1,inputComponent:d="input",multiline:h=!1,slotProps:p,slots:f={},type:m="text"}=a,g=(0,xg.A)(a,ux),v=(e=>{const{classes:t,disableUnderline:n}=e,r={root:["root",!n&&"underline"],input:["input"]},i=(0,Sg.A)(r,sx,t);return(0,wg.A)({},t,i)})(a),y={root:{ownerState:{disableUnderline:s}}},b=(null!=p?p:u)?(0,$b.A)(null!=p?p:u,y):y,A=null!=(n=null!=(r=f.root)?r:l.Root)?n:cx,x=null!=(i=null!=(o=f.input)?o:l.Input)?i:dx;return(0,yl.jsx)(ox,(0,wg.A)({slots:{root:A,input:x},slotProps:b,fullWidth:c,inputComponent:d,multiline:h,ref:t,type:m},g,{classes:v}))});hx.muiName="Input";const px=hx;function fx(e){return(0,Ug.Ay)("MuiFilledInput",e)}const mx=(0,wg.A)({},JA,(0,Wg.A)("MuiFilledInput",["root","underline","input"])),gx=["disableUnderline","components","componentsProps","fullWidth","hiddenLabel","inputComponent","multiline","slotProps","slots","type"],vx=(0,Cg.Ay)(tx,{shouldForwardProp:e=>(0,ax.A)(e)||"classes"===e,name:"MuiFilledInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[...ZA(e,t),!n.disableUnderline&&t.underline]}})(e=>{let{theme:t,ownerState:n}=e;var r;const i="light"===t.palette.mode,o=i?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",a=i?"rgba(0, 0, 0, 0.06)":"rgba(255, 255, 255, 0.09)",s=i?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.13)",l=i?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)";return(0,wg.A)({position:"relative",backgroundColor:t.vars?t.vars.palette.FilledInput.bg:a,borderTopLeftRadius:(t.vars||t).shape.borderRadius,borderTopRightRadius:(t.vars||t).shape.borderRadius,transition:t.transitions.create("background-color",{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut}),"&:hover":{backgroundColor:t.vars?t.vars.palette.FilledInput.hoverBg:s,"@media (hover: none)":{backgroundColor:t.vars?t.vars.palette.FilledInput.bg:a}},["&.".concat(mx.focused)]:{backgroundColor:t.vars?t.vars.palette.FilledInput.bg:a},["&.".concat(mx.disabled)]:{backgroundColor:t.vars?t.vars.palette.FilledInput.disabledBg:l}},!n.disableUnderline&&{"&::after":{borderBottom:"2px solid ".concat(null==(r=(t.vars||t).palette[n.color||"primary"])?void 0:r.main),left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:t.transitions.create("transform",{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut}),pointerEvents:"none"},["&.".concat(mx.focused,":after")]:{transform:"scaleX(1) translateX(0)"},["&.".concat(mx.error)]:{"&::before, &::after":{borderBottomColor:(t.vars||t).palette.error.main}},"&::before":{borderBottom:"1px solid ".concat(t.vars?"rgba(".concat(t.vars.palette.common.onBackgroundChannel," / ").concat(t.vars.opacity.inputUnderline,")"):o),left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:t.transitions.create("border-bottom-color",{duration:t.transitions.duration.shorter}),pointerEvents:"none"},["&:hover:not(.".concat(mx.disabled,", .").concat(mx.error,"):before")]:{borderBottom:"1px solid ".concat((t.vars||t).palette.text.primary)},["&.".concat(mx.disabled,":before")]:{borderBottomStyle:"dotted"}},n.startAdornment&&{paddingLeft:12},n.endAdornment&&{paddingRight:12},n.multiline&&(0,wg.A)({padding:"25px 12px 8px"},"small"===n.size&&{paddingTop:21,paddingBottom:4},n.hiddenLabel&&{paddingTop:16,paddingBottom:17},n.hiddenLabel&&"small"===n.size&&{paddingTop:8,paddingBottom:9}))}),yx=(0,Cg.Ay)(nx,{name:"MuiFilledInput",slot:"Input",overridesResolver:ex})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({paddingTop:25,paddingRight:12,paddingBottom:8,paddingLeft:12},!t.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===t.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===t.palette.mode?null:"#fff",caretColor:"light"===t.palette.mode?null:"#fff",borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"}},t.vars&&{"&:-webkit-autofill":{borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"},[t.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},"small"===n.size&&{paddingTop:21,paddingBottom:4},n.hiddenLabel&&{paddingTop:16,paddingBottom:17},n.startAdornment&&{paddingLeft:0},n.endAdornment&&{paddingRight:0},n.hiddenLabel&&"small"===n.size&&{paddingTop:8,paddingBottom:9},n.multiline&&{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0})}),bx=fl.forwardRef(function(e,t){var n,r,i,o;const a=(0,_g.b)({props:e,name:"MuiFilledInput"}),{components:s={},componentsProps:l,fullWidth:u=!1,inputComponent:c="input",multiline:d=!1,slotProps:h,slots:p={},type:f="text"}=a,m=(0,xg.A)(a,gx),g=(0,wg.A)({},a,{fullWidth:u,inputComponent:c,multiline:d,type:f}),v=(e=>{const{classes:t,disableUnderline:n}=e,r={root:["root",!n&&"underline"],input:["input"]},i=(0,Sg.A)(r,fx,t);return(0,wg.A)({},t,i)})(a),y={root:{ownerState:g},input:{ownerState:g}},b=(null!=h?h:l)?(0,$b.A)(y,null!=h?h:l):y,A=null!=(n=null!=(r=p.root)?r:s.Root)?n:vx,x=null!=(i=null!=(o=p.input)?o:s.Input)?i:yx;return(0,yl.jsx)(ox,(0,wg.A)({slots:{root:A,input:x},componentsProps:b,fullWidth:u,inputComponent:c,multiline:d,ref:t,type:f},m,{classes:v}))});bx.muiName="Input";const Ax=bx;var xx;const wx=["children","classes","className","label","notched"],kx=(0,Cg.Ay)("fieldset",{name:"MuiNotchedOutlined",shouldForwardProp:ax.A})({textAlign:"left",position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden",minWidth:"0%"}),Sx=(0,Cg.Ay)("legend",{name:"MuiNotchedOutlined",shouldForwardProp:ax.A})(e=>{let{ownerState:t,theme:n}=e;return(0,wg.A)({float:"unset",width:"auto",overflow:"hidden"},!t.withLabel&&{padding:0,lineHeight:"11px",transition:n.transitions.create("width",{duration:150,easing:n.transitions.easing.easeOut})},t.withLabel&&(0,wg.A)({display:"block",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:n.transitions.create("max-width",{duration:50,easing:n.transitions.easing.easeOut}),whiteSpace:"nowrap","& > span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}},t.notched&&{maxWidth:"100%",transition:n.transitions.create("max-width",{duration:100,easing:n.transitions.easing.easeOut,delay:50})}))});function Ex(e){return(0,Ug.Ay)("MuiOutlinedInput",e)}const Cx=(0,wg.A)({},JA,(0,Wg.A)("MuiOutlinedInput",["root","notchedOutline","input"])),_x=["components","fullWidth","inputComponent","label","multiline","notched","slots","type"],Tx=(0,Cg.Ay)(tx,{shouldForwardProp:e=>(0,ax.A)(e)||"classes"===e,name:"MuiOutlinedInput",slot:"Root",overridesResolver:ZA})(e=>{let{theme:t,ownerState:n}=e;const r="light"===t.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return(0,wg.A)({position:"relative",borderRadius:(t.vars||t).shape.borderRadius,["&:hover .".concat(Cx.notchedOutline)]:{borderColor:(t.vars||t).palette.text.primary},"@media (hover: none)":{["&:hover .".concat(Cx.notchedOutline)]:{borderColor:t.vars?"rgba(".concat(t.vars.palette.common.onBackgroundChannel," / 0.23)"):r}},["&.".concat(Cx.focused," .").concat(Cx.notchedOutline)]:{borderColor:(t.vars||t).palette[n.color].main,borderWidth:2},["&.".concat(Cx.error," .").concat(Cx.notchedOutline)]:{borderColor:(t.vars||t).palette.error.main},["&.".concat(Cx.disabled," .").concat(Cx.notchedOutline)]:{borderColor:(t.vars||t).palette.action.disabled}},n.startAdornment&&{paddingLeft:14},n.endAdornment&&{paddingRight:14},n.multiline&&(0,wg.A)({padding:"16.5px 14px"},"small"===n.size&&{padding:"8.5px 14px"}))}),Dx=(0,Cg.Ay)(function(e){const{className:t,label:n,notched:r}=e,i=(0,xg.A)(e,wx),o=null!=n&&""!==n,a=(0,wg.A)({},e,{notched:r,withLabel:o});return(0,yl.jsx)(kx,(0,wg.A)({"aria-hidden":!0,className:t,ownerState:a},i,{children:(0,yl.jsx)(Sx,{ownerState:a,children:o?(0,yl.jsx)("span",{children:n}):xx||(xx=(0,yl.jsx)("span",{className:"notranslate",children:"\u200b"}))})}))},{name:"MuiOutlinedInput",slot:"NotchedOutline",overridesResolver:(e,t)=>t.notchedOutline})(e=>{let{theme:t}=e;const n="light"===t.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:t.vars?"rgba(".concat(t.vars.palette.common.onBackgroundChannel," / 0.23)"):n}}),Px=(0,Cg.Ay)(nx,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:ex})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({padding:"16.5px 14px"},!t.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===t.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===t.palette.mode?null:"#fff",caretColor:"light"===t.palette.mode?null:"#fff",borderRadius:"inherit"}},t.vars&&{"&:-webkit-autofill":{borderRadius:"inherit"},[t.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},"small"===n.size&&{padding:"8.5px 14px"},n.multiline&&{padding:0},n.startAdornment&&{paddingLeft:0},n.endAdornment&&{paddingRight:0})}),Ix=fl.forwardRef(function(e,t){var n,r,i,o,a;const s=(0,_g.b)({props:e,name:"MuiOutlinedInput"}),{components:l={},fullWidth:u=!1,inputComponent:c="input",label:d,multiline:h=!1,notched:p,slots:f={},type:m="text"}=s,g=(0,xg.A)(s,_x),v=(e=>{const{classes:t}=e,n=(0,Sg.A)({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},Ex,t);return(0,wg.A)({},t,n)})(s),y=KA(),b=VA({props:s,muiFormControl:y,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),A=(0,wg.A)({},s,{color:b.color||"primary",disabled:b.disabled,error:b.error,focused:b.focused,formControl:y,fullWidth:u,hiddenLabel:b.hiddenLabel,multiline:h,size:b.size,type:m}),x=null!=(n=null!=(r=f.root)?r:l.Root)?n:Tx,w=null!=(i=null!=(o=f.input)?o:l.Input)?i:Px;return(0,yl.jsx)(ox,(0,wg.A)({slots:{root:x,input:w},renderSuffix:e=>(0,yl.jsx)(Dx,{ownerState:A,className:v.notchedOutline,label:null!=d&&""!==d&&b.required?a||(a=(0,yl.jsxs)(fl.Fragment,{children:[d,"\u2009","*"]})):d,notched:"undefined"!==typeof p?p:Boolean(e.startAdornment||e.filled||e.focused)}),fullWidth:u,inputComponent:c,multiline:h,ref:t,type:m},g,{classes:(0,wg.A)({},v,{notchedOutline:null})}))});Ix.muiName="Input";const Fx=Ix;function Lx(e){return(0,Ug.Ay)("MuiFormLabel",e)}const Ox=(0,Wg.A)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]),Nx=["children","className","color","component","disabled","error","filled","focused","required"],zx=(0,Cg.Ay)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return(0,wg.A)({},t.root,"secondary"===n.color&&t.colorSecondary,n.filled&&t.filled)}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({color:(t.vars||t).palette.text.secondary},t.typography.body1,{lineHeight:"1.4375em",padding:0,position:"relative",["&.".concat(Ox.focused)]:{color:(t.vars||t).palette[n.color].main},["&.".concat(Ox.disabled)]:{color:(t.vars||t).palette.text.disabled},["&.".concat(Ox.error)]:{color:(t.vars||t).palette.error.main}})}),jx=(0,Cg.Ay)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:(e,t)=>t.asterisk})(e=>{let{theme:t}=e;return{["&.".concat(Ox.error)]:{color:(t.vars||t).palette.error.main}}}),Rx=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiFormLabel"}),{children:r,className:i,component:o="label"}=n,a=(0,xg.A)(n,Nx),s=VA({props:n,muiFormControl:KA(),states:["color","required","focused","disabled","error","filled"]}),l=(0,wg.A)({},n,{color:s.color||"primary",component:o,disabled:s.disabled,error:s.error,filled:s.filled,focused:s.focused,required:s.required}),u=(e=>{const{classes:t,color:n,focused:r,disabled:i,error:o,filled:a,required:s}=e,l={root:["root","color".concat((0,Mg.A)(n)),i&&"disabled",o&&"error",a&&"filled",r&&"focused",s&&"required"],asterisk:["asterisk",o&&"error"]};return(0,Sg.A)(l,Lx,t)})(l);return(0,yl.jsxs)(zx,(0,wg.A)({as:o,ownerState:l,className:(0,kg.A)(u.root,i),ref:t},a,{children:[r,s.required&&(0,yl.jsxs)(jx,{ownerState:l,"aria-hidden":!0,className:u.asterisk,children:["\u2009","*"]})]}))}),Mx=Rx;function Bx(e){return(0,Ug.Ay)("MuiInputLabel",e)}(0,Wg.A)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);const Wx=["disableAnimation","margin","shrink","variant","className"],Ux=(0,Cg.Ay)(Mx,{shouldForwardProp:e=>(0,ax.A)(e)||"classes"===e,name:"MuiInputLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(Ox.asterisk)]:t.asterisk},t.root,n.formControl&&t.formControl,"small"===n.size&&t.sizeSmall,n.shrink&&t.shrink,!n.disableAnimation&&t.animated,n.focused&&t.focused,t[n.variant]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},n.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===n.size&&{transform:"translate(0, 17px) scale(1)"},n.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!n.disableAnimation&&{transition:t.transitions.create(["color","transform","max-width"],{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut})},"filled"===n.variant&&(0,wg.A)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(12px, 13px) scale(1)"},n.shrink&&(0,wg.A)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===n.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===n.variant&&(0,wg.A)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(14px, 9px) scale(1)"},n.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))}),Hx=fl.forwardRef(function(e,t){const n=(0,_g.b)({name:"MuiInputLabel",props:e}),{disableAnimation:r=!1,shrink:i,className:o}=n,a=(0,xg.A)(n,Wx),s=KA();let l=i;"undefined"===typeof l&&s&&(l=s.filled||s.focused||s.adornedStart);const u=VA({props:n,muiFormControl:s,states:["size","variant","required","focused"]}),c=(0,wg.A)({},n,{disableAnimation:r,formControl:s,shrink:l,size:u.size,variant:u.variant,required:u.required,focused:u.focused}),d=(e=>{const{classes:t,formControl:n,size:r,shrink:i,disableAnimation:o,variant:a,required:s}=e,l={root:["root",n&&"formControl",!o&&"animated",i&&"shrink",r&&"normal"!==r&&"size".concat((0,Mg.A)(r)),a],asterisk:[s&&"asterisk"]},u=(0,Sg.A)(l,Bx,t);return(0,wg.A)({},t,u)})(c);return(0,yl.jsx)(Ux,(0,wg.A)({"data-shrink":l,ownerState:c,ref:t,className:(0,kg.A)(d.root,o)},a,{classes:d}))});var Vx=n(1867);function Gx(e){return(0,Ug.Ay)("MuiFormControl",e)}(0,Wg.A)("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);const Kx=["children","className","color","component","disabled","error","focused","fullWidth","hiddenLabel","margin","required","size","variant"],qx=(0,Cg.Ay)("div",{name:"MuiFormControl",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return(0,wg.A)({},t.root,t["margin".concat((0,Mg.A)(n.margin))],n.fullWidth&&t.fullWidth)}})(e=>{let{ownerState:t}=e;return(0,wg.A)({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},"normal"===t.margin&&{marginTop:16,marginBottom:8},"dense"===t.margin&&{marginTop:8,marginBottom:4},t.fullWidth&&{width:"100%"})}),$x=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiFormControl"}),{children:r,className:i,color:o="primary",component:a="div",disabled:s=!1,error:l=!1,focused:u,fullWidth:c=!1,hiddenLabel:d=!1,margin:h="none",required:p=!1,size:f="medium",variant:m="outlined"}=n,g=(0,xg.A)(n,Kx),v=(0,wg.A)({},n,{color:o,component:a,disabled:s,error:l,fullWidth:c,hiddenLabel:d,margin:h,required:p,size:f,variant:m}),y=(e=>{const{classes:t,margin:n,fullWidth:r}=e,i={root:["root","none"!==n&&"margin".concat((0,Mg.A)(n)),r&&"fullWidth"]};return(0,Sg.A)(i,Gx,t)})(v),[b,A]=fl.useState(()=>{let e=!1;return r&&fl.Children.forEach(r,t=>{if(!(0,Vx.A)(t,["Input","Select"]))return;const n=(0,Vx.A)(t,["Select"])?t.props.input:t;n&&n.props.startAdornment&&(e=!0)}),e}),[x,w]=fl.useState(()=>{let e=!1;return r&&fl.Children.forEach(r,t=>{(0,Vx.A)(t,["Input","Select"])&&(YA(t.props,!0)||YA(t.props.inputProps,!0))&&(e=!0)}),e}),[k,S]=fl.useState(!1);s&&k&&S(!1);const E=void 0===u||s?k:u;let C;const _=fl.useMemo(()=>({adornedStart:b,setAdornedStart:A,color:o,disabled:s,error:l,filled:x,focused:E,fullWidth:c,hiddenLabel:d,size:f,onBlur:()=>{S(!1)},onEmpty:()=>{w(!1)},onFilled:()=>{w(!0)},onFocus:()=>{S(!0)},registerEffect:C,required:p,variant:m}),[b,o,s,l,x,E,c,d,C,p,f,m]);return(0,yl.jsx)(GA.Provider,{value:_,children:(0,yl.jsx)(qx,(0,wg.A)({as:a,ownerState:v,className:(0,kg.A)(y.root,i),ref:t},g,{children:r}))})}),Yx=$x;function Xx(e){return(0,Ug.Ay)("MuiFormHelperText",e)}const Jx=(0,Wg.A)("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]);var Qx;const Zx=["children","className","component","disabled","error","filled","focused","margin","required","variant"],ew=(0,Cg.Ay)("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.size&&t["size".concat((0,Mg.A)(n.size))],n.contained&&t.contained,n.filled&&t.filled]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({color:(t.vars||t).palette.text.secondary},t.typography.caption,{textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,["&.".concat(Jx.disabled)]:{color:(t.vars||t).palette.text.disabled},["&.".concat(Jx.error)]:{color:(t.vars||t).palette.error.main}},"small"===n.size&&{marginTop:4},n.contained&&{marginLeft:14,marginRight:14})}),tw=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiFormHelperText"}),{children:r,className:i,component:o="p"}=n,a=(0,xg.A)(n,Zx),s=VA({props:n,muiFormControl:KA(),states:["variant","size","disabled","error","filled","focused","required"]}),l=(0,wg.A)({},n,{component:o,contained:"filled"===s.variant||"outlined"===s.variant,variant:s.variant,size:s.size,disabled:s.disabled,error:s.error,filled:s.filled,focused:s.focused,required:s.required}),u=(e=>{const{classes:t,contained:n,size:r,disabled:i,error:o,filled:a,focused:s,required:l}=e,u={root:["root",i&&"disabled",o&&"error",r&&"size".concat((0,Mg.A)(r)),n&&"contained",s&&"focused",a&&"filled",l&&"required"]};return(0,Sg.A)(u,Xx,t)})(l);return(0,yl.jsx)(ew,(0,wg.A)({as:o,ownerState:l,className:(0,kg.A)(u.root,i),ref:t},a,{children:" "===r?Qx||(Qx=(0,yl.jsx)("span",{className:"notranslate",children:"\u200b"})):r}))});function nw(e){var t;return parseInt(fl.version,10)>=19?(null==e||null==(t=e.props)?void 0:t.ref)||null:(null==e?void 0:e.ref)||null}var rw=n(5571);const iw=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];const ow=function(e){var t;const{elementType:n,externalSlotProps:r,ownerState:i,skipResolvingSlotProps:o=!1}=e,a=(0,xg.A)(e,iw),s=o?{}:Ig(r,i),{props:l,internalRef:u}=Og((0,wg.A)({},a,{externalSlotProps:s})),c=(0,Tg.A)(u,null==s?void 0:s.ref,null==(t=e.additionalProps)?void 0:t.ref);return Pg(n,(0,wg.A)({},l,{ref:c}),i)};const aw=fl.createContext({});function sw(e){return(0,Ug.Ay)("MuiList",e)}(0,Wg.A)("MuiList",["root","padding","dense","subheader"]);const lw=["children","className","component","dense","disablePadding","subheader"],uw=(0,Cg.Ay)("ul",{name:"MuiList",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disablePadding&&t.padding,n.dense&&t.dense,n.subheader&&t.subheader]}})(e=>{let{ownerState:t}=e;return(0,wg.A)({listStyle:"none",margin:0,padding:0,position:"relative"},!t.disablePadding&&{paddingTop:8,paddingBottom:8},t.subheader&&{paddingTop:0})}),cw=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiList"}),{children:r,className:i,component:o="ul",dense:a=!1,disablePadding:s=!1,subheader:l}=n,u=(0,xg.A)(n,lw),c=fl.useMemo(()=>({dense:a}),[a]),d=(0,wg.A)({},n,{component:o,dense:a,disablePadding:s}),h=(e=>{const{classes:t,disablePadding:n,dense:r,subheader:i}=e,o={root:["root",!n&&"padding",r&&"dense",i&&"subheader"]};return(0,Sg.A)(o,sw,t)})(d);return(0,yl.jsx)(aw.Provider,{value:c,children:(0,yl.jsxs)(uw,(0,wg.A)({as:o,className:(0,kg.A)(h.root,i),ref:t,ownerState:d},u,{children:[l,r]}))})});function dw(e){const t=e.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}const hw=dw,pw=["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"];function fw(e,t,n){return e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:n?null:e.firstChild}function mw(e,t,n){return e===t?n?e.firstChild:e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:n?null:e.lastChild}function gw(e,t){if(void 0===t)return!0;let n=e.innerText;return void 0===n&&(n=e.textContent),n=n.trim().toLowerCase(),0!==n.length&&(t.repeating?n[0]===t.keys[0]:0===n.indexOf(t.keys.join("")))}function vw(e,t,n,r,i,o){let a=!1,s=i(e,t,!!t&&n);for(;s;){if(s===e.firstChild){if(a)return!1;a=!0}const t=!r&&(s.disabled||"true"===s.getAttribute("aria-disabled"));if(s.hasAttribute("tabindex")&&gw(s,o)&&!t)return s.focus(),!0;s=i(e,s,n)}return!1}const yw=fl.forwardRef(function(e,t){const{actions:n,autoFocus:r=!1,autoFocusItem:i=!1,children:o,className:a,disabledItemsFocusable:s=!1,disableListWrap:l=!1,onKeyDown:u,variant:c="selectedMenu"}=e,d=(0,xg.A)(e,pw),h=fl.useRef(null),p=fl.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});(0,qA.A)(()=>{r&&h.current.focus()},[r]),fl.useImperativeHandle(n,()=>({adjustStyleForScrollbar:(e,t)=>{let{direction:n}=t;const r=!h.current.style.width;if(e.clientHeight{fl.isValidElement(e)?(e.props.disabled||("selectedMenu"===c&&e.props.selected||-1===m)&&(m=t),m===t&&(e.props.disabled||e.props.muiSkipListHighlight||e.type.muiSkipListHighlight)&&(m+=1,m>=o.length&&(m=-1))):m===t&&(m+=1,m>=o.length&&(m=-1))});const g=fl.Children.map(o,(e,t)=>{if(t===m){const t={};return i&&(t.autoFocus=!0),void 0===e.props.tabIndex&&"selectedMenu"===c&&(t.tabIndex=0),fl.cloneElement(e,t)}return e});return(0,yl.jsx)(cw,(0,wg.A)({role:"menu",ref:f,className:a,onKeyDown:e=>{const t=h.current,n=e.key,r=(0,rw.A)(t).activeElement;if("ArrowDown"===n)e.preventDefault(),vw(t,r,l,s,fw);else if("ArrowUp"===n)e.preventDefault(),vw(t,r,l,s,mw);else if("Home"===n)e.preventDefault(),vw(t,null,l,s,fw);else if("End"===n)e.preventDefault(),vw(t,null,l,s,mw);else if(1===n.length){const i=p.current,o=n.toLowerCase(),a=performance.now();i.keys.length>0&&(a-i.lastTime>500?(i.keys=[],i.repeating=!0,i.previousKeyMatched=!0):i.repeating&&o!==i.keys[0]&&(i.repeating=!1)),i.lastTime=a,i.keys.push(o);const l=r&&!i.repeating&&gw(r,i);i.previousKeyMatched&&(l||vw(t,r,!1,s,fw,i))?e.preventDefault():i.previousKeyMatched=!1}u&&u(e)},tabIndex:r?0:-1},d,{children:g}))}),bw=yw;var Aw=n(3806),xw=n(6614);const ww=!1;var kw="unmounted",Sw="exited",Ew="entering",Cw="entered",_w="exiting",Tw=function(e){function t(t,n){var r;r=e.call(this,t,n)||this;var i,o=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?o?(i=Sw,r.appearStatus=Ew):i=Cw:i=t.unmountOnExit||t.mountOnEnter?kw:Sw,r.state={status:i},r.nextCallback=null,r}Zg(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===kw?{status:Sw}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==Ew&&n!==Cw&&(t=Ew):n!==Ew&&n!==Cw||(t=_w)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!==typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===Ew){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:bg.findDOMNode(this);n&&function(e){e.scrollTop}(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===Sw&&this.setState({status:kw})},n.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,i=this.props.nodeRef?[r]:[bg.findDOMNode(this),r],o=i[0],a=i[1],s=this.getTimeouts(),l=r?s.appear:s.enter;!e&&!n||ww?this.safeSetState({status:Cw},function(){t.props.onEntered(o)}):(this.props.onEnter(o,a),this.safeSetState({status:Ew},function(){t.props.onEntering(o,a),t.onTransitionEnd(l,function(){t.safeSetState({status:Cw},function(){t.props.onEntered(o,a)})})}))},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:bg.findDOMNode(this);t&&!ww?(this.props.onExit(r),this.safeSetState({status:_w},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:Sw},function(){e.props.onExited(r)})})})):this.safeSetState({status:Sw},function(){e.props.onExited(r)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:bg.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var i=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],o=i[0],a=i[1];this.props.addEndListener(o,a)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===kw)return null;var t=this.props,n=t.children,r=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,(0,xg.A)(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return fl.createElement(ev.Provider,{value:null},"function"===typeof n?n(e,r):fl.cloneElement(fl.Children.only(n),r))},t}(fl.Component);function Dw(){}Tw.contextType=ev,Tw.propTypes={},Tw.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Dw,onEntering:Dw,onEntered:Dw,onExit:Dw,onExiting:Dw,onExited:Dw},Tw.UNMOUNTED=kw,Tw.EXITED=Sw,Tw.ENTERING=Ew,Tw.ENTERED=Cw,Tw.EXITING=_w;const Pw=Tw,Iw=e=>e.scrollTop;function Fw(e,t){var n,r;const{timeout:i,easing:o,style:a={}}=e;return{duration:null!=(n=a.transitionDuration)?n:"number"===typeof i?i:i[t.mode]||0,easing:null!=(r=a.transitionTimingFunction)?r:"object"===typeof o?o[t.mode]:o,delay:a.transitionDelay}}const Lw=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function Ow(e){return"scale(".concat(e,", ").concat(e**2,")")}const Nw={entering:{opacity:1,transform:Ow(1)},entered:{opacity:1,transform:"none"}},zw="undefined"!==typeof navigator&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),jw=fl.forwardRef(function(e,t){const{addEndListener:n,appear:r=!0,children:i,easing:o,in:a,onEnter:s,onEntered:l,onEntering:u,onExit:c,onExited:d,onExiting:h,style:p,timeout:f="auto",TransitionComponent:m=Pw}=e,g=(0,xg.A)(e,Lw),v=(0,lv.A)(),y=fl.useRef(),b=Ib(),A=fl.useRef(null),x=(0,Yg.A)(A,nw(i),t),w=e=>t=>{if(e){const n=A.current;void 0===t?e(n):e(n,t)}},k=w(u),S=w((e,t)=>{Iw(e);const{duration:n,delay:r,easing:i}=Fw({style:p,timeout:f,easing:o},{mode:"enter"});let a;"auto"===f?(a=b.transitions.getAutoHeightDuration(e.clientHeight),y.current=a):a=n,e.style.transition=[b.transitions.create("opacity",{duration:a,delay:r}),b.transitions.create("transform",{duration:zw?a:.666*a,delay:r,easing:i})].join(","),s&&s(e,t)}),E=w(l),C=w(h),_=w(e=>{const{duration:t,delay:n,easing:r}=Fw({style:p,timeout:f,easing:o},{mode:"exit"});let i;"auto"===f?(i=b.transitions.getAutoHeightDuration(e.clientHeight),y.current=i):i=t,e.style.transition=[b.transitions.create("opacity",{duration:i,delay:n}),b.transitions.create("transform",{duration:zw?i:.666*i,delay:zw?n:n||.333*i,easing:r})].join(","),e.style.opacity=0,e.style.transform=Ow(.75),c&&c(e)}),T=w(d);return(0,yl.jsx)(m,(0,wg.A)({appear:r,in:a,nodeRef:A,onEnter:S,onEntered:E,onEntering:k,onExit:_,onExited:T,onExiting:C,addEndListener:e=>{"auto"===f&&v.start(y.current||0,e),n&&n(A.current,e)},timeout:"auto"===f?null:f},g,{children:(e,t)=>fl.cloneElement(i,(0,wg.A)({style:(0,wg.A)({opacity:0,transform:Ow(.75),visibility:"exited"!==e||a?void 0:"hidden"},Nw[e],p,i.props.style),ref:x},t))}))});jw.muiSupportAuto=!0;const Rw=jw;var Mw=n(9669);const Bw=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function Ww(e){const t=[],n=[];return Array.from(e.querySelectorAll(Bw)).forEach((e,r)=>{const i=function(e){const t=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(t)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:t}(e);-1!==i&&function(e){return!(e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||function(e){if("INPUT"!==e.tagName||"radio"!==e.type)return!1;if(!e.name)return!1;const t=t=>e.ownerDocument.querySelector('input[type="radio"]'.concat(t));let n=t('[name="'.concat(e.name,'"]:checked'));return n||(n=t('[name="'.concat(e.name,'"]'))),n!==e}(e))}(e)&&(0===i?t.push(e):n.push({documentOrder:r,tabIndex:i,node:e}))}),n.sort((e,t)=>e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex).map(e=>e.node).concat(t)}function Uw(){return!0}const Hw=function(e){const{children:t,disableAutoFocus:n=!1,disableEnforceFocus:r=!1,disableRestoreFocus:i=!1,getTabbable:o=Ww,isEnabled:a=Uw,open:s}=e,l=fl.useRef(!1),u=fl.useRef(null),c=fl.useRef(null),d=fl.useRef(null),h=fl.useRef(null),p=fl.useRef(!1),f=fl.useRef(null),m=(0,Tg.A)(nw(t),f),g=fl.useRef(null);fl.useEffect(()=>{s&&f.current&&(p.current=!n)},[n,s]),fl.useEffect(()=>{if(!s||!f.current)return;const e=(0,Mw.A)(f.current);return f.current.contains(e.activeElement)||(f.current.hasAttribute("tabIndex")||f.current.setAttribute("tabIndex","-1"),p.current&&f.current.focus()),()=>{i||(d.current&&d.current.focus&&(l.current=!0,d.current.focus()),d.current=null)}},[s]),fl.useEffect(()=>{if(!s||!f.current)return;const e=(0,Mw.A)(f.current),t=t=>{g.current=t,!r&&a()&&"Tab"===t.key&&e.activeElement===f.current&&t.shiftKey&&(l.current=!0,c.current&&c.current.focus())},n=()=>{const t=f.current;if(null===t)return;if(!e.hasFocus()||!a()||l.current)return void(l.current=!1);if(t.contains(e.activeElement))return;if(r&&e.activeElement!==u.current&&e.activeElement!==c.current)return;if(e.activeElement!==h.current)h.current=null;else if(null!==h.current)return;if(!p.current)return;let n=[];if(e.activeElement!==u.current&&e.activeElement!==c.current||(n=o(f.current)),n.length>0){var i,s;const e=Boolean((null==(i=g.current)?void 0:i.shiftKey)&&"Tab"===(null==(s=g.current)?void 0:s.key)),t=n[0],r=n[n.length-1];"string"!==typeof t&&"string"!==typeof r&&(e?r.focus():t.focus())}else t.focus()};e.addEventListener("focusin",n),e.addEventListener("keydown",t,!0);const i=setInterval(()=>{e.activeElement&&"BODY"===e.activeElement.tagName&&n()},50);return()=>{clearInterval(i),e.removeEventListener("focusin",n),e.removeEventListener("keydown",t,!0)}},[n,r,i,a,s,o]);const v=e=>{null===d.current&&(d.current=e.relatedTarget),p.current=!0};return(0,yl.jsxs)(fl.Fragment,{children:[(0,yl.jsx)("div",{tabIndex:s?0:-1,onFocus:v,ref:u,"data-testid":"sentinelStart"}),fl.cloneElement(t,{ref:m,onFocus:e=>{null===d.current&&(d.current=e.relatedTarget),p.current=!0,h.current=e.target;const n=t.props.onFocus;n&&n(e)}}),(0,yl.jsx)("div",{tabIndex:s?0:-1,onFocus:v,ref:c,"data-testid":"sentinelEnd"})]})};var Vw=n(1941);const Gw=fl.forwardRef(function(e,t){const{children:n,container:r,disablePortal:i=!1}=e,[o,a]=fl.useState(null),s=(0,Tg.A)(fl.isValidElement(n)?nw(n):null,t);if((0,nb.A)(()=>{i||a(function(e){return"function"===typeof e?e():e}(r)||document.body)},[r,i]),(0,nb.A)(()=>{if(o&&!i)return(0,Vw.A)(t,o),()=>{(0,Vw.A)(t,null)}},[t,o,i]),i){if(fl.isValidElement(n)){const e={ref:s};return fl.cloneElement(n,e)}return(0,yl.jsx)(fl.Fragment,{children:n})}return(0,yl.jsx)(fl.Fragment,{children:o?bg.createPortal(n,o):o})}),Kw=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],qw={entering:{opacity:1},entered:{opacity:1}},$w=fl.forwardRef(function(e,t){const n=Ib(),r={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:i,appear:o=!0,children:a,easing:s,in:l,onEnter:u,onEntered:c,onEntering:d,onExit:h,onExited:p,onExiting:f,style:m,timeout:g=r,TransitionComponent:v=Pw}=e,y=(0,xg.A)(e,Kw),b=fl.useRef(null),A=(0,Yg.A)(b,nw(a),t),x=e=>t=>{if(e){const n=b.current;void 0===t?e(n):e(n,t)}},w=x(d),k=x((e,t)=>{Iw(e);const r=Fw({style:m,timeout:g,easing:s},{mode:"enter"});e.style.webkitTransition=n.transitions.create("opacity",r),e.style.transition=n.transitions.create("opacity",r),u&&u(e,t)}),S=x(c),E=x(f),C=x(e=>{const t=Fw({style:m,timeout:g,easing:s},{mode:"exit"});e.style.webkitTransition=n.transitions.create("opacity",t),e.style.transition=n.transitions.create("opacity",t),h&&h(e)}),_=x(p);return(0,yl.jsx)(v,(0,wg.A)({appear:o,in:l,nodeRef:b,onEnter:k,onEntered:S,onEntering:w,onExit:C,onExited:_,onExiting:E,addEndListener:e=>{i&&i(b.current,e)},timeout:g},y,{children:(e,t)=>fl.cloneElement(a,(0,wg.A)({style:(0,wg.A)({opacity:0,visibility:"exited"!==e||l?void 0:"hidden"},qw[e],m,a.props.style),ref:A},t))}))}),Yw=$w;function Xw(e){return(0,Ug.Ay)("MuiBackdrop",e)}(0,Wg.A)("MuiBackdrop",["root","invisible"]);const Jw=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],Qw=(0,Cg.Ay)("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.invisible&&t.invisible]}})(e=>{let{ownerState:t}=e;return(0,wg.A)({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},t.invisible&&{backgroundColor:"transparent"})}),Zw=fl.forwardRef(function(e,t){var n,r,i;const o=(0,_g.b)({props:e,name:"MuiBackdrop"}),{children:a,className:s,component:l="div",components:u={},componentsProps:c={},invisible:d=!1,open:h,slotProps:p={},slots:f={},TransitionComponent:m=Yw,transitionDuration:g}=o,v=(0,xg.A)(o,Jw),y=(0,wg.A)({},o,{component:l,invisible:d}),b=(e=>{const{classes:t,invisible:n}=e,r={root:["root",n&&"invisible"]};return(0,Sg.A)(r,Xw,t)})(y),A=null!=(n=p.root)?n:c.root;return(0,yl.jsx)(m,(0,wg.A)({in:h,timeout:g},v,{children:(0,yl.jsx)(Qw,(0,wg.A)({"aria-hidden":!0},A,{as:null!=(r=null!=(i=f.root)?i:u.Root)?r:l,className:(0,kg.A)(b.root,s,null==A?void 0:A.className),ownerState:(0,wg.A)({},y,null==A?void 0:A.ownerState),classes:b,ref:t,children:a}))}))});var ek=n(4849);function tk(e,t){t?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function nk(e){return parseInt((0,NA.A)(e).getComputedStyle(e).paddingRight,10)||0}function rk(e,t,n,r,i){const o=[t,n,...r];[].forEach.call(e.children,e=>{const t=-1===o.indexOf(e),n=!function(e){const t=-1!==["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].indexOf(e.tagName),n="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return t||n}(e);t&&n&&tk(e,i)})}function ik(e,t){let n=-1;return e.some((e,r)=>!!t(e)&&(n=r,!0)),n}function ok(e,t){const n=[],r=e.container;if(!t.disableScrollLock){if(function(e){const t=(0,Mw.A)(e);return t.body===e?(0,NA.A)(e).innerWidth>t.documentElement.clientWidth:e.scrollHeight>e.clientHeight}(r)){const e=dw((0,Mw.A)(r));n.push({value:r.style.paddingRight,property:"padding-right",el:r}),r.style.paddingRight="".concat(nk(r)+e,"px");const t=(0,Mw.A)(r).querySelectorAll(".mui-fixed");[].forEach.call(t,t=>{n.push({value:t.style.paddingRight,property:"padding-right",el:t}),t.style.paddingRight="".concat(nk(t)+e,"px")})}let e;if(r.parentNode instanceof DocumentFragment)e=(0,Mw.A)(r).body;else{const t=r.parentElement,n=(0,NA.A)(r);e="HTML"===(null==t?void 0:t.nodeName)&&"scroll"===n.getComputedStyle(t).overflowY?t:r}n.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{n.forEach(e=>{let{value:t,el:n,property:r}=e;t?n.style.setProperty(r,t):n.style.removeProperty(r)})}}const ak=new class{constructor(){this.containers=void 0,this.modals=void 0,this.modals=[],this.containers=[]}add(e,t){let n=this.modals.indexOf(e);if(-1!==n)return n;n=this.modals.length,this.modals.push(e),e.modalRef&&tk(e.modalRef,!1);const r=function(e){const t=[];return[].forEach.call(e.children,e=>{"true"===e.getAttribute("aria-hidden")&&t.push(e)}),t}(t);rk(t,e.mount,e.modalRef,r,!0);const i=ik(this.containers,e=>e.container===t);return-1!==i?(this.containers[i].modals.push(e),n):(this.containers.push({modals:[e],container:t,restore:null,hiddenSiblings:r}),n)}mount(e,t){const n=ik(this.containers,t=>-1!==t.modals.indexOf(e)),r=this.containers[n];r.restore||(r.restore=ok(r,t))}remove(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const n=this.modals.indexOf(e);if(-1===n)return n;const r=ik(this.containers,t=>-1!==t.modals.indexOf(e)),i=this.containers[r];if(i.modals.splice(i.modals.indexOf(e),1),this.modals.splice(n,1),0===i.modals.length)i.restore&&i.restore(),e.modalRef&&tk(e.modalRef,t),rk(i.container,e.mount,e.modalRef,i.hiddenSiblings,!1),this.containers.splice(r,1);else{const e=i.modals[i.modals.length-1];e.modalRef&&tk(e.modalRef,!1)}return n}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}};const sk=function(e){const{container:t,disableEscapeKeyDown:n=!1,disableScrollLock:r=!1,manager:i=ak,closeAfterTransition:o=!1,onTransitionEnter:a,onTransitionExited:s,children:l,onClose:u,open:c,rootRef:d}=e,h=fl.useRef({}),p=fl.useRef(null),f=fl.useRef(null),m=(0,Tg.A)(f,d),[g,v]=fl.useState(!c),y=function(e){return!!e&&e.props.hasOwnProperty("in")}(l);let b=!0;"false"!==e["aria-hidden"]&&!1!==e["aria-hidden"]||(b=!1);const A=()=>(h.current.modalRef=f.current,h.current.mount=p.current,h.current),x=()=>{i.mount(A(),{disableScrollLock:r}),f.current&&(f.current.scrollTop=0)},w=(0,zA.A)(()=>{const e=function(e){return"function"===typeof e?e():e}(t)||(0,Mw.A)(p.current).body;i.add(A(),e),f.current&&x()}),k=fl.useCallback(()=>i.isTopModal(A()),[i]),S=(0,zA.A)(e=>{p.current=e,e&&(c&&k()?x():f.current&&tk(f.current,b))}),E=fl.useCallback(()=>{i.remove(A(),b)},[b,i]);fl.useEffect(()=>()=>{E()},[E]),fl.useEffect(()=>{c?w():y&&o||E()},[c,E,y,o,w]);const C=e=>t=>{var r;null==(r=e.onKeyDown)||r.call(e,t),"Escape"===t.key&&229!==t.which&&k()&&(n||(t.stopPropagation(),u&&u(t,"escapeKeyDown")))},_=e=>t=>{var n;null==(n=e.onClick)||n.call(e,t),t.target===t.currentTarget&&u&&u(t,"backdropClick")};return{getRootProps:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=Fg(e);delete n.onTransitionEnter,delete n.onTransitionExited;const r=(0,wg.A)({},n,t);return(0,wg.A)({role:"presentation"},r,{onKeyDown:C(r),ref:m})},getBackdropProps:function(){const e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,wg.A)({"aria-hidden":!0},e,{onClick:_(e),open:c})},getTransitionProps:()=>({onEnter:(0,ek.A)(()=>{v(!1),a&&a()},null==l?void 0:l.props.onEnter),onExited:(0,ek.A)(()=>{v(!0),s&&s(),o&&E()},null==l?void 0:l.props.onExited)}),rootRef:m,portalRef:S,isTopModal:k,exited:g,hasTransition:y}};function lk(e){return(0,Ug.Ay)("MuiModal",e)}(0,Wg.A)("MuiModal",["root","hidden","backdrop"]);const uk=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","onTransitionEnter","onTransitionExited","open","slotProps","slots","theme"],ck=(0,Cg.Ay)("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.open&&n.exited&&t.hidden]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({position:"fixed",zIndex:(t.vars||t).zIndex.modal,right:0,bottom:0,top:0,left:0},!n.open&&n.exited&&{visibility:"hidden"})}),dk=(0,Cg.Ay)(Zw,{name:"MuiModal",slot:"Backdrop",overridesResolver:(e,t)=>t.backdrop})({zIndex:-1}),hk=fl.forwardRef(function(e,t){var n,r,i,o,a,s;const l=(0,_g.b)({name:"MuiModal",props:e}),{BackdropComponent:u=dk,BackdropProps:c,className:d,closeAfterTransition:h=!1,children:p,container:f,component:m,components:g={},componentsProps:v={},disableAutoFocus:y=!1,disableEnforceFocus:b=!1,disableEscapeKeyDown:A=!1,disablePortal:x=!1,disableRestoreFocus:w=!1,disableScrollLock:k=!1,hideBackdrop:S=!1,keepMounted:E=!1,onBackdropClick:C,open:_,slotProps:T,slots:D}=l,P=(0,xg.A)(l,uk),I=(0,wg.A)({},l,{closeAfterTransition:h,disableAutoFocus:y,disableEnforceFocus:b,disableEscapeKeyDown:A,disablePortal:x,disableRestoreFocus:w,disableScrollLock:k,hideBackdrop:S,keepMounted:E}),{getRootProps:F,getBackdropProps:L,getTransitionProps:O,portalRef:N,isTopModal:z,exited:j,hasTransition:R}=sk((0,wg.A)({},I,{rootRef:t})),M=(0,wg.A)({},I,{exited:j}),B=(e=>{const{open:t,exited:n,classes:r}=e,i={root:["root",!t&&n&&"hidden"],backdrop:["backdrop"]};return(0,Sg.A)(i,lk,r)})(M),W={};if(void 0===p.props.tabIndex&&(W.tabIndex="-1"),R){const{onEnter:e,onExited:t}=O();W.onEnter=e,W.onExited=t}const U=null!=(n=null!=(r=null==D?void 0:D.root)?r:g.Root)?n:ck,H=null!=(i=null!=(o=null==D?void 0:D.backdrop)?o:g.Backdrop)?i:u,V=null!=(a=null==T?void 0:T.root)?a:v.root,G=null!=(s=null==T?void 0:T.backdrop)?s:v.backdrop,K=ow({elementType:U,externalSlotProps:V,externalForwardedProps:P,getSlotProps:F,additionalProps:{ref:t,as:m},ownerState:M,className:(0,kg.A)(d,null==V?void 0:V.className,null==B?void 0:B.root,!M.open&&M.exited&&(null==B?void 0:B.hidden))}),q=ow({elementType:H,externalSlotProps:G,additionalProps:c,getSlotProps:e=>L((0,wg.A)({},e,{onClick:t=>{C&&C(t),null!=e&&e.onClick&&e.onClick(t)}})),className:(0,kg.A)(null==G?void 0:G.className,null==c?void 0:c.className,null==B?void 0:B.backdrop),ownerState:M});return E||_||R&&!j?(0,yl.jsx)(Gw,{ref:N,container:f,disablePortal:x,children:(0,yl.jsxs)(U,(0,wg.A)({},K,{children:[!S&&u?(0,yl.jsx)(H,(0,wg.A)({},q)):null,(0,yl.jsx)(Hw,{disableEnforceFocus:b,disableAutoFocus:y,disableRestoreFocus:w,isEnabled:z,open:_,children:fl.cloneElement(p,W)})]}))}):null}),pk=hk;function fk(e){return(0,Ug.Ay)("MuiPopover",e)}(0,Wg.A)("MuiPopover",["root","paper"]);const mk=["onEntering"],gk=["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","className","container","elevation","marginThreshold","open","PaperProps","slots","slotProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps","disableScrollLock"],vk=["slotProps"];function yk(e,t){let n=0;return"number"===typeof t?n=t:"center"===t?n=e.height/2:"bottom"===t&&(n=e.height),n}function bk(e,t){let n=0;return"number"===typeof t?n=t:"center"===t?n=e.width/2:"right"===t&&(n=e.width),n}function Ak(e){return[e.horizontal,e.vertical].map(e=>"number"===typeof e?"".concat(e,"px"):e).join(" ")}function xk(e){return"function"===typeof e?e():e}const wk=(0,Cg.Ay)(pk,{name:"MuiPopover",slot:"Root",overridesResolver:(e,t)=>t.root})({}),kk=(0,Cg.Ay)(Kg,{name:"MuiPopover",slot:"Paper",overridesResolver:(e,t)=>t.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),Sk=fl.forwardRef(function(e,t){var n,r,i;const o=(0,_g.b)({props:e,name:"MuiPopover"}),{action:a,anchorEl:s,anchorOrigin:l={vertical:"top",horizontal:"left"},anchorPosition:u,anchorReference:c="anchorEl",children:d,className:h,container:p,elevation:f=8,marginThreshold:m=16,open:g,PaperProps:v={},slots:y,slotProps:b,transformOrigin:A={vertical:"top",horizontal:"left"},TransitionComponent:x=Rw,transitionDuration:w="auto",TransitionProps:{onEntering:k}={},disableScrollLock:S=!1}=o,E=(0,xg.A)(o.TransitionProps,mk),C=(0,xg.A)(o,gk),_=null!=(n=null==b?void 0:b.paper)?n:v,T=fl.useRef(),D=(0,Yg.A)(T,_.ref),P=(0,wg.A)({},o,{anchorOrigin:l,anchorReference:c,elevation:f,marginThreshold:m,externalPaperSlotProps:_,transformOrigin:A,TransitionComponent:x,transitionDuration:w,TransitionProps:E}),I=(e=>{const{classes:t}=e;return(0,Sg.A)({root:["root"],paper:["paper"]},fk,t)})(P),F=fl.useCallback(()=>{if("anchorPosition"===c)return u;const e=xk(s),t=(e&&1===e.nodeType?e:(0,rw.A)(T.current).body).getBoundingClientRect();return{top:t.top+yk(t,l.vertical),left:t.left+bk(t,l.horizontal)}},[s,l.horizontal,l.vertical,u,c]),L=fl.useCallback(e=>({vertical:yk(e,A.vertical),horizontal:bk(e,A.horizontal)}),[A.horizontal,A.vertical]),O=fl.useCallback(e=>{const t={width:e.offsetWidth,height:e.offsetHeight},n=L(t);if("none"===c)return{top:null,left:null,transformOrigin:Ak(n)};const r=F();let i=r.top-n.vertical,o=r.left-n.horizontal;const a=i+t.height,l=o+t.width,u=(0,xw.A)(xk(s)),d=u.innerHeight-m,h=u.innerWidth-m;if(null!==m&&id){const e=a-d;i-=e,n.vertical+=e}if(null!==m&&oh){const e=l-h;o-=e,n.horizontal+=e}return{top:"".concat(Math.round(i),"px"),left:"".concat(Math.round(o),"px"),transformOrigin:Ak(n)}},[s,c,F,L,m]),[N,z]=fl.useState(g),j=fl.useCallback(()=>{const e=T.current;if(!e)return;const t=O(e);null!==t.top&&(e.style.top=t.top),null!==t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,z(!0)},[O]);fl.useEffect(()=>(S&&window.addEventListener("scroll",j),()=>window.removeEventListener("scroll",j)),[s,S,j]);fl.useEffect(()=>{g&&j()}),fl.useImperativeHandle(a,()=>g?{updatePosition:()=>{j()}}:null,[g,j]),fl.useEffect(()=>{if(!g)return;const e=(0,Aw.A)(()=>{j()}),t=(0,xw.A)(s);return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}},[s,g,j]);let R=w;"auto"!==w||x.muiSupportAuto||(R=void 0);const M=p||(s?(0,rw.A)(xk(s)).body:void 0),B=null!=(r=null==y?void 0:y.root)?r:wk,W=null!=(i=null==y?void 0:y.paper)?i:kk,U=ow({elementType:W,externalSlotProps:(0,wg.A)({},_,{style:N?_.style:(0,wg.A)({},_.style,{opacity:0})}),additionalProps:{elevation:f,ref:D},ownerState:P,className:(0,kg.A)(I.paper,null==_?void 0:_.className)}),H=ow({elementType:B,externalSlotProps:(null==b?void 0:b.root)||{},externalForwardedProps:C,additionalProps:{ref:t,slotProps:{backdrop:{invisible:!0}},container:M,open:g},ownerState:P,className:(0,kg.A)(I.root,h)}),{slotProps:V}=H,G=(0,xg.A)(H,vk);return(0,yl.jsx)(B,(0,wg.A)({},G,!Dg(B)&&{slotProps:V,disableScrollLock:S},{children:(0,yl.jsx)(x,(0,wg.A)({appear:!0,in:g,onEntering:(e,t)=>{k&&k(e,t),j()},onExited:()=>{z(!1)},timeout:R},E,{children:(0,yl.jsx)(W,(0,wg.A)({},U,{children:d}))}))}))});function Ek(e){return(0,Ug.Ay)("MuiMenu",e)}(0,Wg.A)("MuiMenu",["root","paper","list"]);const Ck=["onEntering"],_k=["autoFocus","children","className","disableAutoFocusItem","MenuListProps","onClose","open","PaperProps","PopoverClasses","transitionDuration","TransitionProps","variant","slots","slotProps"],Tk={vertical:"top",horizontal:"right"},Dk={vertical:"top",horizontal:"left"},Pk=(0,Cg.Ay)(Sk,{shouldForwardProp:e=>(0,ax.A)(e)||"classes"===e,name:"MuiMenu",slot:"Root",overridesResolver:(e,t)=>t.root})({}),Ik=(0,Cg.Ay)(kk,{name:"MuiMenu",slot:"Paper",overridesResolver:(e,t)=>t.paper})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),Fk=(0,Cg.Ay)(bw,{name:"MuiMenu",slot:"List",overridesResolver:(e,t)=>t.list})({outline:0}),Lk=fl.forwardRef(function(e,t){var n,r;const i=(0,_g.b)({props:e,name:"MuiMenu"}),{autoFocus:o=!0,children:a,className:s,disableAutoFocusItem:l=!1,MenuListProps:u={},onClose:c,open:d,PaperProps:h={},PopoverClasses:p,transitionDuration:f="auto",TransitionProps:{onEntering:m}={},variant:g="selectedMenu",slots:v={},slotProps:y={}}=i,b=(0,xg.A)(i.TransitionProps,Ck),A=(0,xg.A)(i,_k),x=Zy(),w=(0,wg.A)({},i,{autoFocus:o,disableAutoFocusItem:l,MenuListProps:u,onEntering:m,PaperProps:h,transitionDuration:f,TransitionProps:b,variant:g}),k=(e=>{const{classes:t}=e;return(0,Sg.A)({root:["root"],paper:["paper"],list:["list"]},Ek,t)})(w),S=o&&!l&&d,E=fl.useRef(null);let C=-1;fl.Children.map(a,(e,t)=>{fl.isValidElement(e)&&(e.props.disabled||("selectedMenu"===g&&e.props.selected||-1===C)&&(C=t))});const _=null!=(n=v.paper)?n:Ik,T=null!=(r=y.paper)?r:h,D=ow({elementType:v.root,externalSlotProps:y.root,ownerState:w,className:[k.root,s]}),P=ow({elementType:_,externalSlotProps:T,ownerState:w,className:k.paper});return(0,yl.jsx)(Pk,(0,wg.A)({onClose:c,anchorOrigin:{vertical:"bottom",horizontal:x?"right":"left"},transformOrigin:x?Tk:Dk,slots:{paper:_,root:v.root},slotProps:{root:D,paper:P},open:d,ref:t,transitionDuration:f,TransitionProps:(0,wg.A)({onEntering:(e,t)=>{E.current&&E.current.adjustStyleForScrollbar(e,{direction:x?"rtl":"ltr"}),m&&m(e,t)}},b),ownerState:w},A,{classes:p,children:(0,yl.jsx)(Fk,(0,wg.A)({onKeyDown:e=>{"Tab"===e.key&&(e.preventDefault(),c&&c(e,"tabKeyDown"))},actions:E,autoFocus:o&&(-1===C||l),autoFocusItem:S,variant:g},u,{className:(0,kg.A)(k.list,u.className),children:a}))}))}),Ok=Lk;function Nk(e){return(0,Ug.Ay)("MuiNativeSelect",e)}const zk=(0,Wg.A)("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),jk=["className","disabled","error","IconComponent","inputRef","variant"],Rk=e=>{let{ownerState:t,theme:n}=e;return(0,wg.A)({MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":(0,wg.A)({},n.vars?{backgroundColor:"rgba(".concat(n.vars.palette.common.onBackgroundChannel," / 0.05)")}:{backgroundColor:"light"===n.palette.mode?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)"},{borderRadius:0}),"&::-ms-expand":{display:"none"},["&.".concat(zk.disabled)]:{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:(n.vars||n).palette.background.paper},"&&&":{paddingRight:24,minWidth:16}},"filled"===t.variant&&{"&&&":{paddingRight:32}},"outlined"===t.variant&&{borderRadius:(n.vars||n).shape.borderRadius,"&:focus":{borderRadius:(n.vars||n).shape.borderRadius},"&&&":{paddingRight:32}})},Mk=(0,Cg.Ay)("select",{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:ax.A,overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.select,t[n.variant],n.error&&t.error,{["&.".concat(zk.multiple)]:t.multiple}]}})(Rk),Bk=e=>{let{ownerState:t,theme:n}=e;return(0,wg.A)({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(n.vars||n).palette.action.active,["&.".concat(zk.disabled)]:{color:(n.vars||n).palette.action.disabled}},t.open&&{transform:"rotate(180deg)"},"filled"===t.variant&&{right:7},"outlined"===t.variant&&{right:7})},Wk=(0,Cg.Ay)("svg",{name:"MuiNativeSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.icon,n.variant&&t["icon".concat((0,Mg.A)(n.variant))],n.open&&t.iconOpen]}})(Bk),Uk=fl.forwardRef(function(e,t){const{className:n,disabled:r,error:i,IconComponent:o,inputRef:a,variant:s="standard"}=e,l=(0,xg.A)(e,jk),u=(0,wg.A)({},e,{disabled:r,variant:s,error:i}),c=(e=>{const{classes:t,variant:n,disabled:r,multiple:i,open:o,error:a}=e,s={select:["select",n,r&&"disabled",i&&"multiple",a&&"error"],icon:["icon","icon".concat((0,Mg.A)(n)),o&&"iconOpen",r&&"disabled"]};return(0,Sg.A)(s,Nk,t)})(u);return(0,yl.jsxs)(fl.Fragment,{children:[(0,yl.jsx)(Mk,(0,wg.A)({ownerState:u,className:(0,kg.A)(c.select,n),disabled:r,ref:a||t},l)),e.multiple?null:(0,yl.jsx)(Wk,{as:o,ownerState:u,className:c.icon})]})});var Hk=n(6920),Vk=n(2156);function Gk(e){return(0,Ug.Ay)("MuiSelect",e)}const Kk=(0,Wg.A)("MuiSelect",["root","select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]);var qk;const $k=["aria-describedby","aria-label","autoFocus","autoWidth","children","className","defaultOpen","defaultValue","disabled","displayEmpty","error","IconComponent","inputRef","labelId","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","open","readOnly","renderValue","SelectDisplayProps","tabIndex","type","value","variant"],Yk=(0,Cg.Ay)("div",{name:"MuiSelect",slot:"Select",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["&.".concat(Kk.select)]:t.select},{["&.".concat(Kk.select)]:t[n.variant]},{["&.".concat(Kk.error)]:t.error},{["&.".concat(Kk.multiple)]:t.multiple}]}})(Rk,{["&.".concat(Kk.select)]:{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}}),Xk=(0,Cg.Ay)("svg",{name:"MuiSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.icon,n.variant&&t["icon".concat((0,Mg.A)(n.variant))],n.open&&t.iconOpen]}})(Bk),Jk=(0,Cg.Ay)("input",{shouldForwardProp:e=>(0,Hk.A)(e)&&"classes"!==e,name:"MuiSelect",slot:"NativeInput",overridesResolver:(e,t)=>t.nativeInput})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"});function Qk(e,t){return"object"===typeof t&&null!==t?e===t:String(e)===String(t)}function Zk(e){return null==e||"string"===typeof e&&!e.trim()}const eS=fl.forwardRef(function(e,t){var n;const{"aria-describedby":r,"aria-label":i,autoFocus:o,autoWidth:a,children:s,className:l,defaultOpen:u,defaultValue:c,disabled:d,displayEmpty:h,error:p=!1,IconComponent:f,inputRef:m,labelId:g,MenuProps:v={},multiple:y,name:b,onBlur:A,onChange:x,onClose:w,onFocus:k,onOpen:S,open:E,readOnly:C,renderValue:_,SelectDisplayProps:T={},tabIndex:D,value:P,variant:I="standard"}=e,F=(0,xg.A)(e,$k),[L,O]=(0,Vk.A)({controlled:P,default:c,name:"Select"}),[N,z]=(0,Vk.A)({controlled:E,default:u,name:"Select"}),j=fl.useRef(null),R=fl.useRef(null),[M,B]=fl.useState(null),{current:W}=fl.useRef(null!=E),[U,H]=fl.useState(),V=(0,Yg.A)(t,m),G=fl.useCallback(e=>{R.current=e,e&&B(e)},[]),K=null==M?void 0:M.parentNode;fl.useImperativeHandle(V,()=>({focus:()=>{R.current.focus()},node:j.current,value:L}),[L]),fl.useEffect(()=>{u&&N&&M&&!W&&(H(a?null:K.clientWidth),R.current.focus())},[M,a]),fl.useEffect(()=>{o&&R.current.focus()},[o]),fl.useEffect(()=>{if(!g)return;const e=(0,rw.A)(R.current).getElementById(g);if(e){const t=()=>{getSelection().isCollapsed&&R.current.focus()};return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}},[g]);const q=(e,t)=>{e?S&&S(t):w&&w(t),W||(H(a?null:K.clientWidth),z(e))},$=fl.Children.toArray(s),Y=e=>t=>{let n;if(t.currentTarget.hasAttribute("tabindex")){if(y){n=Array.isArray(L)?L.slice():[];const t=L.indexOf(e.props.value);-1===t?n.push(e.props.value):n.splice(t,1)}else n=e.props.value;if(e.props.onClick&&e.props.onClick(t),L!==n&&(O(n),x)){const r=t.nativeEvent||t,i=new r.constructor(r.type,r);Object.defineProperty(i,"target",{writable:!0,value:{value:n,name:b}}),x(i,e)}y||q(!1,t)}},X=null!==M&&N;let J,Q;delete F["aria-invalid"];const Z=[];let ee=!1,te=!1;(YA({value:L})||h)&&(_?J=_(L):ee=!0);const ne=$.map(e=>{if(!fl.isValidElement(e))return null;let t;if(y){if(!Array.isArray(L))throw new Error((0,Fb.A)(2));t=L.some(t=>Qk(t,e.props.value)),t&&ee&&Z.push(e.props.children)}else t=Qk(L,e.props.value),t&&ee&&(Q=e.props.children);return t&&(te=!0),fl.cloneElement(e,{"aria-selected":t?"true":"false",onClick:Y(e),onKeyUp:t=>{" "===t.key&&t.preventDefault(),e.props.onKeyUp&&e.props.onKeyUp(t)},role:"option",selected:t,value:void 0,"data-value":e.props.value})});ee&&(J=y?0===Z.length?null:Z.reduce((e,t,n)=>(e.push(t),n{const{classes:t,variant:n,disabled:r,multiple:i,open:o,error:a}=e,s={select:["select",n,r&&"disabled",i&&"multiple",a&&"error"],icon:["icon","icon".concat((0,Mg.A)(n)),o&&"iconOpen",r&&"disabled"],nativeInput:["nativeInput"]};return(0,Sg.A)(s,Gk,t)})(ae),le=(0,wg.A)({},v.PaperProps,null==(n=v.slotProps)?void 0:n.paper),ue=(0,rb.A)();return(0,yl.jsxs)(fl.Fragment,{children:[(0,yl.jsx)(Yk,(0,wg.A)({ref:G,tabIndex:re,role:"combobox","aria-controls":ue,"aria-disabled":d?"true":void 0,"aria-expanded":X?"true":"false","aria-haspopup":"listbox","aria-label":i,"aria-labelledby":[g,oe].filter(Boolean).join(" ")||void 0,"aria-describedby":r,onKeyDown:e=>{if(!C){-1!==[" ","ArrowUp","ArrowDown","Enter"].indexOf(e.key)&&(e.preventDefault(),q(!0,e))}},onMouseDown:d||C?null:e=>{0===e.button&&(e.preventDefault(),R.current.focus(),q(!0,e))},onBlur:e=>{!X&&A&&(Object.defineProperty(e,"target",{writable:!0,value:{value:L,name:b}}),A(e))},onFocus:k},T,{ownerState:ae,className:(0,kg.A)(T.className,se.select,l),id:oe,children:Zk(J)?qk||(qk=(0,yl.jsx)("span",{className:"notranslate",children:"\u200b"})):J})),(0,yl.jsx)(Jk,(0,wg.A)({"aria-invalid":p,value:Array.isArray(L)?L.join(","):L,name:b,ref:j,"aria-hidden":!0,onChange:e=>{const t=$.find(t=>t.props.value===e.target.value);void 0!==t&&(O(t.props.value),x&&x(e,t))},tabIndex:-1,disabled:d,className:se.nativeInput,autoFocus:o,ownerState:ae},F)),(0,yl.jsx)(Xk,{as:f,className:se.icon,ownerState:ae}),(0,yl.jsx)(Ok,(0,wg.A)({id:"menu-".concat(b||""),anchorEl:K,open:X,onClose:e=>{q(!1,e)},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"}},v,{MenuListProps:(0,wg.A)({"aria-labelledby":g,role:"listbox","aria-multiselectable":y?"true":void 0,disableListWrap:!0,id:ue},v.MenuListProps),slotProps:(0,wg.A)({},v.slotProps,{paper:(0,wg.A)({},le,{style:(0,wg.A)({minWidth:ie},null!=le?le.style:null)})}),children:ne}))]})}),tS=eS,nS=(0,jv.A)((0,yl.jsx)("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown"),rS=["autoWidth","children","classes","className","defaultOpen","displayEmpty","IconComponent","id","input","inputProps","label","labelId","MenuProps","multiple","native","onClose","onOpen","open","renderValue","SelectDisplayProps","variant"],iS=["root"],oS={name:"MuiSelect",overridesResolver:(e,t)=>t.root,shouldForwardProp:e=>(0,ax.A)(e)&&"variant"!==e,slot:"Root"},aS=(0,Cg.Ay)(px,oS)(""),sS=(0,Cg.Ay)(Fx,oS)(""),lS=(0,Cg.Ay)(Ax,oS)(""),uS=fl.forwardRef(function(e,t){const n=(0,_g.b)({name:"MuiSelect",props:e}),{autoWidth:r=!1,children:i,classes:o={},className:a,defaultOpen:s=!1,displayEmpty:l=!1,IconComponent:u=nS,id:c,input:d,inputProps:h,label:p,labelId:f,MenuProps:m,multiple:g=!1,native:v=!1,onClose:y,onOpen:b,open:A,renderValue:x,SelectDisplayProps:w,variant:k="outlined"}=n,S=(0,xg.A)(n,rS),E=v?Uk:tS,C=VA({props:n,muiFormControl:KA(),states:["variant","error"]}),_=C.variant||k,T=(0,wg.A)({},n,{variant:_,classes:o}),D=(e=>{const{classes:t}=e;return t})(T),P=(0,xg.A)(D,iS),I=d||{standard:(0,yl.jsx)(aS,{ownerState:T}),outlined:(0,yl.jsx)(sS,{label:p,ownerState:T}),filled:(0,yl.jsx)(lS,{ownerState:T})}[_],F=(0,Yg.A)(t,nw(I));return(0,yl.jsx)(fl.Fragment,{children:fl.cloneElement(I,(0,wg.A)({inputComponent:E,inputProps:(0,wg.A)({children:i,error:C.error,IconComponent:u,variant:_,type:void 0,multiple:g},v?{id:c}:{autoWidth:r,defaultOpen:s,displayEmpty:l,labelId:f,MenuProps:m,onClose:y,onOpen:b,open:A,renderValue:x,SelectDisplayProps:(0,wg.A)({id:c},w)},h,{classes:h?(0,$b.A)(P,h.classes):P},d?d.props.inputProps:{})},(g&&v||l)&&"outlined"===_?{notched:!0}:{},{ref:F,className:(0,kg.A)(I.props.className,a,D.root)},!d&&{variant:_},S))})});uS.muiName="Select";const cS=uS;function dS(e){return(0,Ug.Ay)("MuiTextField",e)}(0,Wg.A)("MuiTextField",["root"]);const hS=["autoComplete","autoFocus","children","className","color","defaultValue","disabled","error","FormHelperTextProps","fullWidth","helperText","id","InputLabelProps","inputProps","InputProps","inputRef","label","maxRows","minRows","multiline","name","onBlur","onChange","onFocus","placeholder","required","rows","select","SelectProps","type","value","variant"],pS={standard:px,filled:Ax,outlined:Fx},fS=(0,Cg.Ay)(Yx,{name:"MuiTextField",slot:"Root",overridesResolver:(e,t)=>t.root})({}),mS=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiTextField"}),{autoComplete:r,autoFocus:i=!1,children:o,className:a,color:s="primary",defaultValue:l,disabled:u=!1,error:c=!1,FormHelperTextProps:d,fullWidth:h=!1,helperText:p,id:f,InputLabelProps:m,inputProps:g,InputProps:v,inputRef:y,label:b,maxRows:A,minRows:x,multiline:w=!1,name:k,onBlur:S,onChange:E,onFocus:C,placeholder:_,required:T=!1,rows:D,select:P=!1,SelectProps:I,type:F,value:L,variant:O="outlined"}=n,N=(0,xg.A)(n,hS),z=(0,wg.A)({},n,{autoFocus:i,color:s,disabled:u,error:c,fullWidth:h,multiline:w,required:T,select:P,variant:O}),j=(e=>{const{classes:t}=e;return(0,Sg.A)({root:["root"]},dS,t)})(z);const R={};"outlined"===O&&(m&&"undefined"!==typeof m.shrink&&(R.notched=m.shrink),R.label=b),P&&(I&&I.native||(R.id=void 0),R["aria-describedby"]=void 0);const M=(0,rb.A)(f),B=p&&M?"".concat(M,"-helper-text"):void 0,W=b&&M?"".concat(M,"-label"):void 0,U=pS[O],H=(0,yl.jsx)(U,(0,wg.A)({"aria-describedby":B,autoComplete:r,autoFocus:i,defaultValue:l,fullWidth:h,multiline:w,name:k,rows:D,maxRows:A,minRows:x,type:F,value:L,id:M,inputRef:y,onBlur:S,onChange:E,onFocus:C,placeholder:_,inputProps:g},R,v));return(0,yl.jsxs)(fS,(0,wg.A)({className:(0,kg.A)(j.root,a),disabled:u,error:c,fullWidth:h,ref:t,required:T,color:s,variant:O,ownerState:z},N,{children:[null!=b&&""!==b&&(0,yl.jsx)(Hx,(0,wg.A)({htmlFor:M,id:W},m,{children:b})),P?(0,yl.jsx)(cS,(0,wg.A)({"aria-describedby":B,id:M,labelId:W,value:L,input:H},I,{children:o})):H,p&&(0,yl.jsx)(tw,(0,wg.A)({id:B},d,{children:p}))]}))}),gS=mS;let vS;function yS(){if(vS)return vS;const e=document.createElement("div"),t=document.createElement("div");return t.style.width="10px",t.style.height="1px",e.appendChild(t),e.dir="rtl",e.style.fontSize="14px",e.style.width="4px",e.style.height="1px",e.style.position="absolute",e.style.top="-1000px",e.style.overflow="scroll",document.body.appendChild(e),vS="reverse",e.scrollLeft>0?vS="default":(e.scrollLeft=1,0===e.scrollLeft&&(vS="negative")),document.body.removeChild(e),vS}function bS(e,t){const n=e.scrollLeft;if("rtl"!==t)return n;switch(yS()){case"negative":return e.scrollWidth-e.clientWidth+n;case"reverse":return e.scrollWidth-e.clientWidth-n;default:return n}}function AS(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}const xS=["onChange"],wS={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};const kS=(0,jv.A)((0,yl.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),SS=(0,jv.A)((0,yl.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");function ES(e){return(0,Ug.Ay)("MuiTabScrollButton",e)}const CS=(0,Wg.A)("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),_S=["className","slots","slotProps","direction","orientation","disabled"],TS=(0,Cg.Ay)(Pv,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.orientation&&t[n.orientation]]}})(e=>{let{ownerState:t}=e;return(0,wg.A)({width:40,flexShrink:0,opacity:.8,["&.".concat(CS.disabled)]:{opacity:0}},"vertical"===t.orientation&&{width:"100%",height:40,"& svg":{transform:"rotate(".concat(t.isRtl?-90:90,"deg)")}})}),DS=fl.forwardRef(function(e,t){var n,r;const i=(0,_g.b)({props:e,name:"MuiTabScrollButton"}),{className:o,slots:a={},slotProps:s={},direction:l}=i,u=(0,xg.A)(i,_S),c=Zy(),d=(0,wg.A)({isRtl:c},i),h=(e=>{const{classes:t,orientation:n,disabled:r}=e,i={root:["root",n,r&&"disabled"]};return(0,Sg.A)(i,ES,t)})(d),p=null!=(n=a.StartScrollButtonIcon)?n:kS,f=null!=(r=a.EndScrollButtonIcon)?r:SS,m=ow({elementType:p,externalSlotProps:s.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:d}),g=ow({elementType:f,externalSlotProps:s.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:d});return(0,yl.jsx)(TS,(0,wg.A)({component:"div",className:(0,kg.A)(h.root,o),ref:t,role:null,ownerState:d,tabIndex:null},u,{children:"left"===l?(0,yl.jsx)(p,(0,wg.A)({},m)):(0,yl.jsx)(f,(0,wg.A)({},g))}))});function PS(e){return(0,Ug.Ay)("MuiTabs",e)}const IS=(0,Wg.A)("MuiTabs",["root","vertical","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),FS=["aria-label","aria-labelledby","action","centered","children","className","component","allowScrollButtonsMobile","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","slots","slotProps","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant","visibleScrollbar"],LS=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,OS=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,NS=(e,t,n)=>{let r=!1,i=n(e,t);for(;i;){if(i===e.firstChild){if(r)return;r=!0}const t=i.disabled||"true"===i.getAttribute("aria-disabled");if(i.hasAttribute("tabindex")&&!t)return void i.focus();i=n(e,i)}},zS=(0,Cg.Ay)("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(IS.scrollButtons)]:t.scrollButtons},{["& .".concat(IS.scrollButtons)]:n.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,n.vertical&&t.vertical]}})(e=>{let{ownerState:t,theme:n}=e;return(0,wg.A)({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},t.vertical&&{flexDirection:"column"},t.scrollButtonsHideMobile&&{["& .".concat(IS.scrollButtons)]:{[n.breakpoints.down("sm")]:{display:"none"}}})}),jS=(0,Cg.Ay)("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.scroller,n.fixed&&t.fixed,n.hideScrollbar&&t.hideScrollbar,n.scrollableX&&t.scrollableX,n.scrollableY&&t.scrollableY]}})(e=>{let{ownerState:t}=e;return(0,wg.A)({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},t.fixed&&{overflowX:"hidden",width:"100%"},t.hideScrollbar&&{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},t.scrollableX&&{overflowX:"auto",overflowY:"hidden"},t.scrollableY&&{overflowY:"auto",overflowX:"hidden"})}),RS=(0,Cg.Ay)("div",{name:"MuiTabs",slot:"FlexContainer",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.flexContainer,n.vertical&&t.flexContainerVertical,n.centered&&t.centered]}})(e=>{let{ownerState:t}=e;return(0,wg.A)({display:"flex"},t.vertical&&{flexDirection:"column"},t.centered&&{justifyContent:"center"})}),MS=(0,Cg.Ay)("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:(e,t)=>t.indicator})(e=>{let{ownerState:t,theme:n}=e;return(0,wg.A)({position:"absolute",height:2,bottom:0,width:"100%",transition:n.transitions.create()},"primary"===t.indicatorColor&&{backgroundColor:(n.vars||n).palette.primary.main},"secondary"===t.indicatorColor&&{backgroundColor:(n.vars||n).palette.secondary.main},t.vertical&&{height:"100%",width:2,right:0})}),BS=(0,Cg.Ay)(function(e){const{onChange:t}=e,n=(0,xg.A)(e,xS),r=fl.useRef(),i=fl.useRef(null),o=()=>{r.current=i.current.offsetHeight-i.current.clientHeight};return(0,qA.A)(()=>{const e=(0,Aw.A)(()=>{const e=r.current;o(),e!==r.current&&t(r.current)}),n=(0,xw.A)(i.current);return n.addEventListener("resize",e),()=>{e.clear(),n.removeEventListener("resize",e)}},[t]),fl.useEffect(()=>{o(),t(r.current)},[t]),(0,yl.jsx)("div",(0,wg.A)({style:wS},n,{ref:i}))})({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),WS={};const US=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiTabs"}),r=Ib(),i=Zy(),{"aria-label":o,"aria-labelledby":a,action:s,centered:l=!1,children:u,className:c,component:d="div",allowScrollButtonsMobile:h=!1,indicatorColor:p="primary",onChange:f,orientation:m="horizontal",ScrollButtonComponent:g=DS,scrollButtons:v="auto",selectionFollowsFocus:y,slots:b={},slotProps:A={},TabIndicatorProps:x={},TabScrollButtonProps:w={},textColor:k="primary",value:S,variant:E="standard",visibleScrollbar:C=!1}=n,_=(0,xg.A)(n,FS),T="scrollable"===E,D="vertical"===m,P=D?"scrollTop":"scrollLeft",I=D?"top":"left",F=D?"bottom":"right",L=D?"clientHeight":"clientWidth",O=D?"height":"width",N=(0,wg.A)({},n,{component:d,allowScrollButtonsMobile:h,indicatorColor:p,orientation:m,vertical:D,scrollButtons:v,textColor:k,variant:E,visibleScrollbar:C,fixed:!T,hideScrollbar:T&&!C,scrollableX:T&&!D,scrollableY:T&&D,centered:l&&!T,scrollButtonsHideMobile:!h}),z=(e=>{const{vertical:t,fixed:n,hideScrollbar:r,scrollableX:i,scrollableY:o,centered:a,scrollButtonsHideMobile:s,classes:l}=e,u={root:["root",t&&"vertical"],scroller:["scroller",n&&"fixed",r&&"hideScrollbar",i&&"scrollableX",o&&"scrollableY"],flexContainer:["flexContainer",t&&"flexContainerVertical",a&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",s&&"scrollButtonsHideMobile"],scrollableX:[i&&"scrollableX"],hideScrollbar:[r&&"hideScrollbar"]};return(0,Sg.A)(u,PS,l)})(N),j=ow({elementType:b.StartScrollButtonIcon,externalSlotProps:A.startScrollButtonIcon,ownerState:N}),R=ow({elementType:b.EndScrollButtonIcon,externalSlotProps:A.endScrollButtonIcon,ownerState:N});const[M,B]=fl.useState(!1),[W,U]=fl.useState(WS),[H,V]=fl.useState(!1),[G,K]=fl.useState(!1),[q,$]=fl.useState(!1),[Y,X]=fl.useState({overflow:"hidden",scrollbarWidth:0}),J=new Map,Q=fl.useRef(null),Z=fl.useRef(null),ee=()=>{const e=Q.current;let t,n;if(e){const n=e.getBoundingClientRect();t={clientWidth:e.clientWidth,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollLeftNormalized:bS(e,i?"rtl":"ltr"),scrollWidth:e.scrollWidth,top:n.top,bottom:n.bottom,left:n.left,right:n.right}}if(e&&!1!==S){const e=Z.current.children;if(e.length>0){const t=e[J.get(S)];0,n=t?t.getBoundingClientRect():null}}return{tabsMeta:t,tabMeta:n}},te=(0,Xg.A)(()=>{const{tabsMeta:e,tabMeta:t}=ee();let n,r=0;if(D)n="top",t&&e&&(r=t.top-e.top+e.scrollTop);else if(n=i?"right":"left",t&&e){const o=i?e.scrollLeftNormalized+e.clientWidth-e.scrollWidth:e.scrollLeft;r=(i?-1:1)*(t[n]-e[n]+o)}const o={[n]:r,[O]:t?t[O]:0};if(isNaN(W[n])||isNaN(W[O]))U(o);else{const e=Math.abs(W[n]-o[n]),t=Math.abs(W[O]-o[O]);(e>=1||t>=1)&&U(o)}}),ne=function(e){let{animation:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t?function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>{};const{ease:o=AS,duration:a=300}=r;let s=null;const l=t[e];let u=!1;const c=()=>{u=!0},d=r=>{if(u)return void i(new Error("Animation cancelled"));null===s&&(s=r);const c=Math.min(1,(r-s)/a);t[e]=o(c)*(n-l)+l,c>=1?requestAnimationFrame(()=>{i(null)}):requestAnimationFrame(d)};l===n?i(new Error("Element already at target position")):requestAnimationFrame(d)}(P,Q.current,e,{duration:r.transitions.duration.standard}):Q.current[P]=e},re=e=>{let t=Q.current[P];D?t+=e:(t+=e*(i?-1:1),t*=i&&"reverse"===yS()?-1:1),ne(t)},ie=()=>{const e=Q.current[L];let t=0;const n=Array.from(Z.current.children);for(let r=0;re){0===r&&(t=e);break}t+=i[L]}return t},oe=()=>{re(-1*ie())},ae=()=>{re(ie())},se=fl.useCallback(e=>{X({overflow:null,scrollbarWidth:e})},[]),le=(0,Xg.A)(e=>{const{tabsMeta:t,tabMeta:n}=ee();if(n&&t)if(n[I]t[F]){const r=t[P]+(n[F]-t[F]);ne(r,{animation:e})}}),ue=(0,Xg.A)(()=>{T&&!1!==v&&$(!q)});fl.useEffect(()=>{const e=(0,Aw.A)(()=>{Q.current&&te()});let t;const n=n=>{n.forEach(e=>{e.removedNodes.forEach(e=>{var n;null==(n=t)||n.unobserve(e)}),e.addedNodes.forEach(e=>{var n;null==(n=t)||n.observe(e)})}),e(),ue()},r=(0,xw.A)(Q.current);let i;return r.addEventListener("resize",e),"undefined"!==typeof ResizeObserver&&(t=new ResizeObserver(e),Array.from(Z.current.children).forEach(e=>{t.observe(e)})),"undefined"!==typeof MutationObserver&&(i=new MutationObserver(n),i.observe(Z.current,{childList:!0})),()=>{var n,o;e.clear(),r.removeEventListener("resize",e),null==(n=i)||n.disconnect(),null==(o=t)||o.disconnect()}},[te,ue]),fl.useEffect(()=>{const e=Array.from(Z.current.children),t=e.length;if("undefined"!==typeof IntersectionObserver&&t>0&&T&&!1!==v){const n=e[0],r=e[t-1],i={root:Q.current,threshold:.99},o=e=>{V(!e[0].isIntersecting)},a=new IntersectionObserver(o,i);a.observe(n);const s=e=>{K(!e[0].isIntersecting)},l=new IntersectionObserver(s,i);return l.observe(r),()=>{a.disconnect(),l.disconnect()}}},[T,v,q,null==u?void 0:u.length]),fl.useEffect(()=>{B(!0)},[]),fl.useEffect(()=>{te()}),fl.useEffect(()=>{le(WS!==W)},[le,W]),fl.useImperativeHandle(s,()=>({updateIndicator:te,updateScrollButtons:ue}),[te,ue]);const ce=(0,yl.jsx)(MS,(0,wg.A)({},x,{className:(0,kg.A)(z.indicator,x.className),ownerState:N,style:(0,wg.A)({},W,x.style)}));let de=0;const he=fl.Children.map(u,e=>{if(!fl.isValidElement(e))return null;const t=void 0===e.props.value?de:e.props.value;J.set(t,de);const n=t===S;return de+=1,fl.cloneElement(e,(0,wg.A)({fullWidth:"fullWidth"===E,indicator:n&&!M&&ce,selected:n,selectionFollowsFocus:y,onChange:f,textColor:k,value:t},1!==de||!1!==S||e.props.tabIndex?{}:{tabIndex:0}))}),pe=(()=>{const e={};e.scrollbarSizeListener=T?(0,yl.jsx)(BS,{onChange:se,className:(0,kg.A)(z.scrollableX,z.hideScrollbar)}):null;const t=T&&("auto"===v&&(H||G)||!0===v);return e.scrollButtonStart=t?(0,yl.jsx)(g,(0,wg.A)({slots:{StartScrollButtonIcon:b.StartScrollButtonIcon},slotProps:{startScrollButtonIcon:j},orientation:m,direction:i?"right":"left",onClick:oe,disabled:!H},w,{className:(0,kg.A)(z.scrollButtons,w.className)})):null,e.scrollButtonEnd=t?(0,yl.jsx)(g,(0,wg.A)({slots:{EndScrollButtonIcon:b.EndScrollButtonIcon},slotProps:{endScrollButtonIcon:R},orientation:m,direction:i?"left":"right",onClick:ae,disabled:!G},w,{className:(0,kg.A)(z.scrollButtons,w.className)})):null,e})();return(0,yl.jsxs)(zS,(0,wg.A)({className:(0,kg.A)(z.root,c),ownerState:N,ref:t,as:d},_,{children:[pe.scrollButtonStart,pe.scrollbarSizeListener,(0,yl.jsxs)(jS,{className:z.scroller,ownerState:N,style:{overflow:Y.overflow,[D?"margin".concat(i?"Left":"Right"):"marginBottom"]:C?void 0:-Y.scrollbarWidth},ref:Q,children:[(0,yl.jsx)(RS,{"aria-label":o,"aria-labelledby":a,"aria-orientation":"vertical"===m?"vertical":null,className:z.flexContainer,ownerState:N,onKeyDown:e=>{const t=Z.current,n=(0,rw.A)(t).activeElement;if("tab"!==n.getAttribute("role"))return;let r="horizontal"===m?"ArrowLeft":"ArrowUp",o="horizontal"===m?"ArrowRight":"ArrowDown";switch("horizontal"===m&&i&&(r="ArrowRight",o="ArrowLeft"),e.key){case r:e.preventDefault(),NS(t,n,OS);break;case o:e.preventDefault(),NS(t,n,LS);break;case"Home":e.preventDefault(),NS(t,null,LS);break;case"End":e.preventDefault(),NS(t,null,OS)}},ref:Z,role:"tablist",children:he}),M&&ce]}),pe.scrollButtonEnd]}))}),HS=US;function VS(e){return(0,Ug.Ay)("MuiTab",e)}const GS=(0,Wg.A)("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper"]),KS=["className","disabled","disableFocusRipple","fullWidth","icon","iconPosition","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"],qS=(0,Cg.Ay)(Pv,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.label&&n.icon&&t.labelIcon,t["textColor".concat((0,Mg.A)(n.textColor))],n.fullWidth&&t.fullWidth,n.wrapped&&t.wrapped,{["& .".concat(GS.iconWrapper)]:t.iconWrapper}]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({},t.typography.button,{maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center"},n.label&&{flexDirection:"top"===n.iconPosition||"bottom"===n.iconPosition?"column":"row"},{lineHeight:1.25},n.icon&&n.label&&{minHeight:72,paddingTop:9,paddingBottom:9,["& > .".concat(GS.iconWrapper)]:(0,wg.A)({},"top"===n.iconPosition&&{marginBottom:6},"bottom"===n.iconPosition&&{marginTop:6},"start"===n.iconPosition&&{marginRight:t.spacing(1)},"end"===n.iconPosition&&{marginLeft:t.spacing(1)})},"inherit"===n.textColor&&{color:"inherit",opacity:.6,["&.".concat(GS.selected)]:{opacity:1},["&.".concat(GS.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity}},"primary"===n.textColor&&{color:(t.vars||t).palette.text.secondary,["&.".concat(GS.selected)]:{color:(t.vars||t).palette.primary.main},["&.".concat(GS.disabled)]:{color:(t.vars||t).palette.text.disabled}},"secondary"===n.textColor&&{color:(t.vars||t).palette.text.secondary,["&.".concat(GS.selected)]:{color:(t.vars||t).palette.secondary.main},["&.".concat(GS.disabled)]:{color:(t.vars||t).palette.text.disabled}},n.fullWidth&&{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},n.wrapped&&{fontSize:t.typography.pxToRem(12)})}),$S=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiTab"}),{className:r,disabled:i=!1,disableFocusRipple:o=!1,fullWidth:a,icon:s,iconPosition:l="top",indicator:u,label:c,onChange:d,onClick:h,onFocus:p,selected:f,selectionFollowsFocus:m,textColor:g="inherit",value:v,wrapped:y=!1}=n,b=(0,xg.A)(n,KS),A=(0,wg.A)({},n,{disabled:i,disableFocusRipple:o,selected:f,icon:!!s,iconPosition:l,label:!!c,fullWidth:a,textColor:g,wrapped:y}),x=(e=>{const{classes:t,textColor:n,fullWidth:r,wrapped:i,icon:o,label:a,selected:s,disabled:l}=e,u={root:["root",o&&a&&"labelIcon","textColor".concat((0,Mg.A)(n)),r&&"fullWidth",i&&"wrapped",s&&"selected",l&&"disabled"],iconWrapper:["iconWrapper"]};return(0,Sg.A)(u,VS,t)})(A),w=s&&c&&fl.isValidElement(s)?fl.cloneElement(s,{className:(0,kg.A)(x.iconWrapper,s.props.className)}):s;return(0,yl.jsxs)(qS,(0,wg.A)({focusRipple:!o,className:(0,kg.A)(x.root,r),ref:t,role:"tab","aria-selected":f,disabled:i,onClick:e=>{!f&&d&&d(e,v),h&&h(e)},onFocus:e=>{m&&!f&&d&&d(e,v),p&&p(e)},ownerState:A,tabIndex:f?0:-1},b,{children:["top"===l||"start"===l?(0,yl.jsxs)(fl.Fragment,{children:[w,c]}):(0,yl.jsxs)(fl.Fragment,{children:[c,w]}),u]}))});const YS=(0,Wg.A)("MuiListItemIcon",["root","alignItemsFlexStart"]);const XS=(0,Wg.A)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);function JS(e){return(0,Ug.Ay)("MuiMenuItem",e)}const QS=(0,Wg.A)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]),ZS=["autoFocus","component","dense","divider","disableGutters","focusVisibleClassName","role","tabIndex","className"],eE=(0,Cg.Ay)(Pv,{shouldForwardProp:e=>(0,ax.A)(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,n.divider&&t.divider,!n.disableGutters&&t.gutters]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({},t.typography.body1,{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap"},!n.disableGutters&&{paddingLeft:16,paddingRight:16},n.divider&&{borderBottom:"1px solid ".concat((t.vars||t).palette.divider),backgroundClip:"padding-box"},{"&:hover":{textDecoration:"none",backgroundColor:(t.vars||t).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},["&.".concat(QS.selected)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,Eg.X4)(t.palette.primary.main,t.palette.action.selectedOpacity),["&.".concat(QS.focusVisible)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.focusOpacity,"))"):(0,Eg.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.focusOpacity)}},["&.".concat(QS.selected,":hover")]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.hoverOpacity,"))"):(0,Eg.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,Eg.X4)(t.palette.primary.main,t.palette.action.selectedOpacity)}},["&.".concat(QS.focusVisible)]:{backgroundColor:(t.vars||t).palette.action.focus},["&.".concat(QS.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity},["& + .".concat(Ny.root)]:{marginTop:t.spacing(1),marginBottom:t.spacing(1)},["& + .".concat(Ny.inset)]:{marginLeft:52},["& .".concat(XS.root)]:{marginTop:0,marginBottom:0},["& .".concat(XS.inset)]:{paddingLeft:36},["& .".concat(YS.root)]:{minWidth:36}},!n.dense&&{[t.breakpoints.up("sm")]:{minHeight:"auto"}},n.dense&&(0,wg.A)({minHeight:32,paddingTop:4,paddingBottom:4},t.typography.body2,{["& .".concat(YS.root," svg")]:{fontSize:"1.25rem"}}))}),tE=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiMenuItem"}),{autoFocus:r=!1,component:i="li",dense:o=!1,divider:a=!1,disableGutters:s=!1,focusVisibleClassName:l,role:u="menuitem",tabIndex:c,className:d}=n,h=(0,xg.A)(n,ZS),p=fl.useContext(aw),f=fl.useMemo(()=>({dense:o||p.dense||!1,disableGutters:s}),[p.dense,o,s]),m=fl.useRef(null);(0,qA.A)(()=>{r&&m.current&&m.current.focus()},[r]);const g=(0,wg.A)({},n,{dense:f.dense,divider:a,disableGutters:s}),v=(e=>{const{disabled:t,dense:n,divider:r,disableGutters:i,selected:o,classes:a}=e,s={root:["root",n&&"dense",t&&"disabled",!i&&"gutters",r&&"divider",o&&"selected"]},l=(0,Sg.A)(s,JS,a);return(0,wg.A)({},a,l)})(n),y=(0,Yg.A)(m,t);let b;return n.disabled||(b=void 0!==c?c:-1),(0,yl.jsx)(aw.Provider,{value:f,children:(0,yl.jsx)(eE,(0,wg.A)({ref:y,role:u,tabIndex:b,component:i,focusVisibleClassName:(0,kg.A)(v.focusVisible,l),className:(0,kg.A)(v.root,d)},h,{ownerState:g,classes:v}))})});const nE=fl.createContext();function rE(e){return(0,Ug.Ay)("MuiGrid",e)}const iE=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12],oE=(0,Wg.A)("MuiGrid",["root","container","item","zeroMinWidth",...[0,1,2,3,4,5,6,7,8,9,10].map(e=>"spacing-xs-".concat(e)),...["column-reverse","column","row-reverse","row"].map(e=>"direction-xs-".concat(e)),...["nowrap","wrap-reverse","wrap"].map(e=>"wrap-xs-".concat(e)),...iE.map(e=>"grid-xs-".concat(e)),...iE.map(e=>"grid-sm-".concat(e)),...iE.map(e=>"grid-md-".concat(e)),...iE.map(e=>"grid-lg-".concat(e)),...iE.map(e=>"grid-xl-".concat(e))]),aE=oE,sE=["className","columns","columnSpacing","component","container","direction","item","rowSpacing","spacing","wrap","zeroMinWidth"];function lE(e){const t=parseFloat(e);return"".concat(t).concat(String(e).replace(String(t),"")||"px")}function uE(e){let{breakpoints:t,values:n}=e,r="";Object.keys(n).forEach(e=>{""===r&&0!==n[e]&&(r=e)});const i=Object.keys(t).sort((e,n)=>t[e]-t[n]);return i.slice(0,i.indexOf(r))}const cE=(0,Cg.Ay)("div",{name:"MuiGrid",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e,{container:r,direction:i,item:o,spacing:a,wrap:s,zeroMinWidth:l,breakpoints:u}=n;let c=[];r&&(c=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e||e<=0)return[];if("string"===typeof e&&!Number.isNaN(Number(e))||"number"===typeof e)return[n["spacing-xs-".concat(String(e))]];const r=[];return t.forEach(t=>{const i=e[t];Number(i)>0&&r.push(n["spacing-".concat(t,"-").concat(String(i))])}),r}(a,u,t));const d=[];return u.forEach(e=>{const r=n[e];r&&d.push(t["grid-".concat(e,"-").concat(String(r))])}),[t.root,r&&t.container,o&&t.item,l&&t.zeroMinWidth,...c,"row"!==i&&t["direction-xs-".concat(String(i))],"wrap"!==s&&t["wrap-xs-".concat(String(s))],...d]}})(e=>{let{ownerState:t}=e;return(0,wg.A)({boxSizing:"border-box"},t.container&&{display:"flex",flexWrap:"wrap",width:"100%"},t.item&&{margin:0},t.zeroMinWidth&&{minWidth:0},"wrap"!==t.wrap&&{flexWrap:t.wrap})},function(e){let{theme:t,ownerState:n}=e;const r=(0,uA.kW)({values:n.direction,breakpoints:t.breakpoints.values});return(0,uA.NI)({theme:t},r,e=>{const t={flexDirection:e};return 0===e.indexOf("column")&&(t["& > .".concat(aE.item)]={maxWidth:"none"}),t})},function(e){let{theme:t,ownerState:n}=e;const{container:r,rowSpacing:i}=n;let o={};if(r&&0!==i){const e=(0,uA.kW)({values:i,breakpoints:t.breakpoints.values});let n;"object"===typeof e&&(n=uE({breakpoints:t.breakpoints.values,values:e})),o=(0,uA.NI)({theme:t},e,(e,r)=>{var i;const o=t.spacing(e);return"0px"!==o?{marginTop:"-".concat(lE(o)),["& > .".concat(aE.item)]:{paddingTop:lE(o)}}:null!=(i=n)&&i.includes(r)?{}:{marginTop:0,["& > .".concat(aE.item)]:{paddingTop:0}}})}return o},function(e){let{theme:t,ownerState:n}=e;const{container:r,columnSpacing:i}=n;let o={};if(r&&0!==i){const e=(0,uA.kW)({values:i,breakpoints:t.breakpoints.values});let n;"object"===typeof e&&(n=uE({breakpoints:t.breakpoints.values,values:e})),o=(0,uA.NI)({theme:t},e,(e,r)=>{var i;const o=t.spacing(e);return"0px"!==o?{width:"calc(100% + ".concat(lE(o),")"),marginLeft:"-".concat(lE(o)),["& > .".concat(aE.item)]:{paddingLeft:lE(o)}}:null!=(i=n)&&i.includes(r)?{}:{width:"100%",marginLeft:0,["& > .".concat(aE.item)]:{paddingLeft:0}}})}return o},function(e){let t,{theme:n,ownerState:r}=e;return n.breakpoints.keys.reduce((e,i)=>{let o={};if(r[i]&&(t=r[i]),!t)return e;if(!0===t)o={flexBasis:0,flexGrow:1,maxWidth:"100%"};else if("auto"===t)o={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"};else{const a=(0,uA.kW)({values:r.columns,breakpoints:n.breakpoints.values}),s="object"===typeof a?a[i]:a;if(void 0===s||null===s)return e;const l="".concat(Math.round(t/s*1e8)/1e6,"%");let u={};if(r.container&&r.item&&0!==r.columnSpacing){const e=n.spacing(r.columnSpacing);if("0px"!==e){const t="calc(".concat(l," + ").concat(lE(e),")");u={flexBasis:t,maxWidth:t}}}o=(0,wg.A)({flexBasis:l,flexGrow:0,maxWidth:l},u)}return 0===n.breakpoints.values[i]?Object.assign(e,o):e[n.breakpoints.up(i)]=o,e},{})});const dE=e=>{const{classes:t,container:n,direction:r,item:i,spacing:o,wrap:a,zeroMinWidth:s,breakpoints:l}=e;let u=[];n&&(u=function(e,t){if(!e||e<=0)return[];if("string"===typeof e&&!Number.isNaN(Number(e))||"number"===typeof e)return["spacing-xs-".concat(String(e))];const n=[];return t.forEach(t=>{const r=e[t];if(Number(r)>0){const e="spacing-".concat(t,"-").concat(String(r));n.push(e)}}),n}(o,l));const c=[];l.forEach(t=>{const n=e[t];n&&c.push("grid-".concat(t,"-").concat(String(n)))});const d={root:["root",n&&"container",i&&"item",s&&"zeroMinWidth",...u,"row"!==r&&"direction-xs-".concat(String(r)),"wrap"!==a&&"wrap-xs-".concat(String(a)),...c]};return(0,Sg.A)(d,rE,t)},hE=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiGrid"}),{breakpoints:r}=Ib(),i=(0,vy.A)(n),{className:o,columns:a,columnSpacing:s,component:l="div",container:u=!1,direction:c="row",item:d=!1,rowSpacing:h,spacing:p=0,wrap:f="wrap",zeroMinWidth:m=!1}=i,g=(0,xg.A)(i,sE),v=h||p,y=s||p,b=fl.useContext(nE),A=u?a||12:b,x={},w=(0,wg.A)({},g);r.keys.forEach(e=>{null!=g[e]&&(x[e]=g[e],delete w[e])});const k=(0,wg.A)({},i,{columns:A,container:u,direction:c,item:d,rowSpacing:v,columnSpacing:y,wrap:f,zeroMinWidth:m,spacing:p},x,{breakpoints:r.keys}),S=dE(k);return(0,yl.jsx)(nE.Provider,{value:A,children:(0,yl.jsx)(cE,(0,wg.A)({ownerState:k,className:(0,kg.A)(S.root,o),as:l,ref:t},w))})});const pE=hE;var fE=n(1437),mE=n(2705),gE=n(1029),vE=n(5323);function yE(e){let{text:t,title:n="copy"}=e;const[r,i]=(0,fl.useState)(!1);return(0,yl.jsx)(zv,{size:"small",sx:{opacity:.5,"&:hover":{opacity:1}},onClick:async e=>{e.stopPropagation(),await navigator.clipboard.writeText(t),i(!0);const n=setTimeout(()=>{clearTimeout(n),i(!1)},500)},title:n,children:r?(0,yl.jsx)(vE.A,{fontSize:"inherit"}):(0,yl.jsx)(gE.A,{fontSize:"inherit"})})}const bE=(e,t,n)=>{const r=(e=>Array.isArray(e)?e[0]||"":e||"")(e);return t===o.ul7?it(r.replace(/[\t ]*/gi,"\n")):t===o.bCM?r.replace(/[\t ]*(\r\n|\r|\n)[\t ]*/g,"\n"):o.sNP.ai.has(t)&&/\r\n|\r|\n/.test(n)?r.replace(/\\r\\n|\\n|\\r/g,"\n"):r};function AE(e){let{text:t,fromLang:n,toLang:r,apiSlug:i,transApis:a,simpleStyle:s=!1}=e;const l=OA(),[u,c]=(0,fl.useState)(""),[d,h]=(0,fl.useState)(!1),[p,f]=(0,fl.useState)(""),m=(0,fl.useMemo)(()=>a.find(e=>e.apiSlug===i),[a,i]);return(0,fl.useEffect)(()=>{if(null===t||void 0===t||!t.trim()||!m)return c(""),h(!1),void f("");let e=!0;const i=new AbortController,a=(e=>Boolean((null===e||void 0===e?void 0:e.useStream)&&o.sNP.stream.has(e.apiType)&&"disabled"!==(e.streamRenderMode||"disabled")))(m),s=a?({text:n})=>{if(!e||i.signal.aborted)return;const r=bE(n,m.apiType,t);r&&c(r)}:void 0;return(async()=>{try{h(!0),c(""),f("");const a=e=>wn({text:e,fromLang:n,toLang:r,apiSetting:m,onStreamChunk:s,signal:i.signal}),{trText:l}=m.apiType===o.h8v?await(async(e,t)=>{const n=e.split(/(\r\n|\r|\n)/),r=await Promise.all(n.map(async(e,n)=>n%2!==1&&e.trim()?(await t(e)).trText:e));return{trText:r.join("")}})(t,a):await a(((e,t)=>t===o.ul7?e.replace(/\r\n|\r|\n/g,"
"):e)(t,m.apiType));e&&c(bE(l,m.apiType,t))}catch(a){if("AbortError"===(null===a||void 0===a?void 0:a.name))return;e&&f(a.message)}finally{e&&h(!1)}})(),()=>{e=!1,i.abort()}},[t,n,r,m]),m?s?(0,yl.jsx)(Pb,{children:p?(0,yl.jsx)(Xv,{severity:"error",children:p}):u?(0,yl.jsxs)(yA,{direction:"row",spacing:1,alignItems:"flex-start",children:[d&&(0,yl.jsx)(gy,{size:12,sx:{flex:"0 0 auto",mt:"0.35em"}}),(0,yl.jsx)(Sy,{style:{whiteSpace:"pre-line"},children:u})]}):d?(0,yl.jsx)(gy,{size:16}):null}):(0,yl.jsx)(Pb,{children:(0,yl.jsx)(gS,{size:"small",label:"".concat(l("translated_text")," - ").concat(m.apiName),fullWidth:!0,multiline:!0,maxRows:10,sx:{"& textarea":{resize:"vertical"}},value:u,helperText:p,InputProps:{startAdornment:d?(0,yl.jsx)(gy,{size:16}):null,endAdornment:(0,yl.jsx)(yA,{direction:"row",sx:{position:"absolute",right:0,top:0},children:(0,yl.jsx)(yE,{text:u,title:l("copy")})})}})}):null}var xE=n(561),wE=n(5555);const kE={};function SE(e){var t;let{word:n,title:r}=e;const{favWords:s,toggleFav:l}=function(){const{data:e,save:t}=Qv(o.CWU,kE,o.sgk),n=(0,fl.useCallback)(e=>{t(e),(0,a.GY)(o.sgk)},[t]),r=(0,fl.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];n(n=>{if(!n[e]){const s={createdAt:Date.now(),timestamp:t,phonetic:r,definition:o,examples:a};return Object.keys(s).forEach(e=>{(null===s[e]||void 0===s[e]||Array.isArray(s[e])&&0===s[e].length||"string"===typeof s[e]&&0===s[e].length)&&delete s[e]}),(0,i.A)((0,i.A)({},n),{},{[e]:s})}const s=(0,i.A)({},n);return delete s[e],s})},[n]),s=(0,fl.useCallback)(e=>{n(t=>(0,i.A)((0,i.A)({},e.reduce((e,t)=>(e[t]={createdAt:Date.now()},e),{})),t))},[n]),l=(0,fl.useCallback)(()=>{n({})},[n]),u=(0,fl.useMemo)(()=>Object.entries(e||{}).sort((e,t)=>e[0].localeCompare(t[0])),[e]),c=(0,fl.useMemo)(()=>u.map(e=>{let[t]=e;return t}),[u]);return{favWords:e,favList:u,wordList:c,toggleFav:r,mergeWords:s,clearWords:l}}(),{context:u,setting:c}=Vy(),[d,h]=(0,fl.useState)(!1),p="tranbox"===u&&(null===c||void 0===c||null===(t=c.tranboxSetting)||void 0===t?void 0:t.autoFavWord),f=(0,fl.useCallback)(()=>{try{h(!0),l(n)}catch(e){(0,K.h9)("set fav",e)}finally{h(!1)}},[l,n]);return(0,fl.useEffect)(()=>{p&&n&&!s[n]&&f()},[p,s,f,n]),(0,yl.jsx)(zv,{disabled:d,size:"small",onClick:f,title:r,children:s[n]?(0,yl.jsx)(xE.A,{fontSize:"inherit"}):(0,yl.jsx)(wE.A,{fontSize:"inherit"})})}var EE=n(4762);function CE(){var e,t;return"function"===typeof(null===(e=globalThis.chrome)||void 0===e||null===(t=e.tts)||void 0===t?void 0:t.speak)}function _E(){var e;return"function"===typeof(null===(e=globalThis.speechSynthesis)||void 0===e?void 0:e.speak)&&"function"===typeof globalThis.SpeechSynthesisUtterance}const TE=new Set(["end","interrupted","cancelled","error"]);function DE(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!_E())return!1;try{const r=new globalThis.SpeechSynthesisUtterance(e);return r.lang=t,r.onend=n.onEnd,r.onerror=n.onEnd,globalThis.speechSynthesis.speak(r),!0}catch(r){return!1}}function PE(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-US",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=null===e||void 0===e?void 0:e.trim();if(!r)return!1;const i=function(e){const t=String(e||"").trim().replace(/_/g,"-"),n=t.toLowerCase();return t&&"en"!==n&&"auto"!==n&&"detect"!==n&&"und"!==n&&"unknown"!==n&&/^[a-z]{2,3}(-[a-z0-9]{2,8})*$/i.test(t)?t:"en-US"}(t);let o=!1;const a=()=>{var e;o||(o=!0,null===(e=n.onEnd)||void 0===e||e.call(n))};if(CE())try{return globalThis.chrome.tts.speak(r,{lang:i,onEvent:e=>{TE.has(null===e||void 0===e?void 0:e.type)&&a()}},()=>{var e,t;null!==(e=globalThis.chrome)&&void 0!==e&&null!==(t=e.runtime)&&void 0!==t&&t.lastError&&(DE(r,i,{onEnd:a})||a())}),!0}catch(s){return DE(r,i,{onEnd:a})}return DE(r,i,{onEnd:a})}function IE(e){let{src:t}=e;const{error:n,ready:r,playing:i,onPlay:o}=function(e){const t=(0,fl.useRef)(null),[n,r]=(0,fl.useState)(null),[i,o]=(0,fl.useState)(!1),[a,s]=(0,fl.useState)(!1),[l,u]=(0,fl.useState)(!1),c=(0,fl.useCallback)(async()=>{if(t.current)try{await t.current.play()}catch(e){K.vF.info("Playback failed:",e),s(!1)}},[]),d=(0,fl.useCallback)(()=>{var e;null===(e=t.current)||void 0===e||e.pause()},[]);return(0,fl.useEffect)(()=>{if(!e)return;let n=!1;o(!1),r(null),s(!1),u(!0);const i=new Audio;t.current=i;const a=()=>o(!0),l=()=>s(!0),c=()=>s(!1),d=()=>s(!1),h=e=>{n||(r(i.error||e),o(!1),u(!1))};return i.addEventListener("canplaythrough",a),i.addEventListener("play",l),i.addEventListener("pause",c),i.addEventListener("ended",d),i.addEventListener("error",h),(async()=>{try{const t=await(0,z.Fd)(e,{},{expect:"audio"});if(n)return;i.src=t,u(!1)}catch(t){n||(K.vF.info("Audio fetch failed:",t),r(t),u(!1))}})(),()=>{n=!0,i.pause(),i.removeAttribute("src"),i.removeEventListener("canplaythrough",a),i.removeEventListener("play",l),i.removeEventListener("pause",c),i.removeEventListener("ended",d),i.removeEventListener("error",h)}},[e]),{loading:l,error:n,ready:i,playing:a,onPlay:c,onPause:d}}(t);return n||!r?(0,yl.jsx)(zv,{disabled:!0,size:"small",children:(0,yl.jsx)(EE.A,{fontSize:"inherit"})}):i?(0,yl.jsx)(zv,{color:"primary",size:"small",children:(0,yl.jsx)(EE.A,{fontSize:"inherit"})}):(0,yl.jsx)(zv,{onClick:o,size:"small",children:(0,yl.jsx)(EE.A,{fontSize:"inherit"})})}function FE(e){let{text:t,lan:n="uk",spd:r=3}=e;if(!t)return null;const i="https://fanyi.baidu.com/gettts?".concat(N.stringify({lan:n,text:t,spd:r}));return(0,yl.jsx)(IE,{src:i})}function LE(e){let{text:t,lang:n="en-US"}=e;const[r,i]=(0,fl.useState)(!1);if(null===t||void 0===t||!t.trim()||!CE()&&!_E())return null;return(0,yl.jsx)(zv,{color:r?"primary":"default",onClick:r?void 0:()=>{if(r)return;i(!0);PE(t,n,{onEnd:()=>i(!1)})||i(!1)},size:"small",sx:{ml:.5,verticalAlign:"middle"},children:(0,yl.jsx)(EE.A,{fontSize:"inherit"})})}const OE={[o.GDU]:{apiFn:bn,reWord:e=>null===e||void 0===e?void 0:e.word,toText:e=>{var t;return(null===e||void 0===e||null===(t=e.trs)||void 0===t?void 0:t.map(e=>{let{pos:t,def:n}=e;return"".concat(t?"[".concat(t,"] "):"").concat(n)}))||[]},uiAudio:e=>{var t;return(0,yl.jsx)(Sy,{component:"div",children:null===e||void 0===e||null===(t=e.aus)||void 0===t?void 0:t.map(e=>{let{key:t,audio:n,phonetic:r}=e;return(0,yl.jsxs)(Sy,{component:"div",style:{display:"inline-block",paddingRight:"1em"},children:[(0,yl.jsx)(Sy,{component:"span",children:"".concat(t," [").concat(r||"","]")}),(0,yl.jsx)(IE,{src:n})]},t)})})},uiTrans:e=>{var t,n,r,i;return(0,yl.jsxs)(Sy,{component:"div",children:[(0,yl.jsx)(Sy,{component:"ul",children:null===e||void 0===e||null===(t=e.trs)||void 0===t?void 0:t.map((e,t)=>{let{pos:n,def:r}=e;return(0,yl.jsxs)(Sy,{component:"li",children:[n&&"[".concat(n,"] "),r]},t)})}),(null===e||void 0===e||null===(n=e.presents)||void 0===n?void 0:n.length)>0&&(0,yl.jsx)(Sy,{component:"div",style:{marginTop:"10px"},children:e.presents.join(", ")}),(null===e||void 0===e||null===(r=e.ecs)||void 0===r?void 0:r.length)>0&&(0,yl.jsxs)(Sy,{component:"div",style:{marginTop:"10px"},children:[(0,yl.jsx)(Sy,{component:"div",style:{fontWeight:"bold",marginBottom:"5px"},children:"\u82f1\u6c49\u53cc\u89e3"}),e.ecs.map(e=>{let{pos:t,lis:n}=e;return(0,yl.jsxs)(Sy,{component:"div",children:[(0,yl.jsx)(Sy,{component:"div",children:t}),(0,yl.jsx)(Sy,{component:"ul",children:n.map((e,t)=>(0,yl.jsx)(Sy,{component:"li",children:e},t))})]},t)})]}),(null===e||void 0===e||null===(i=e.sentences)||void 0===i?void 0:i.length)>0&&(0,yl.jsxs)(Sy,{component:"div",style:{marginTop:"10px"},children:[(0,yl.jsx)(Sy,{component:"div",style:{fontWeight:"bold",marginBottom:"5px"},children:"\u4f8b\u53e5"}),e.sentences.slice(0,2).map((t,n)=>{var r,i;return(0,yl.jsxs)(Sy,{component:"div",style:{marginBottom:"5px"},children:[(0,yl.jsx)(Sy,{component:"div",children:null===(r=t.eng)||void 0===r||null===(i=r.split(e.word))||void 0===i?void 0:i.map((t,n,r)=>(0,yl.jsxs)("span",{children:[n>0&&(0,yl.jsx)("span",{style:{fontWeight:"bold",color:"#1e88e5"},children:e.word}),t]},n))}),(0,yl.jsx)(Sy,{component:"div",style:{opacity:"0.6",fontStyle:"italic"},children:t.chs})]},n)})]})]})}},[o.dyy]:{apiFn:async e=>{const t="https://dict.youdao.com/jsonapi_s?".concat(N.stringify({doctype:"json",jsonversion:4})),n={headers:{accept:"application/json, text/plain, */*","accept-language":"en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ja;q=0.6","content-type":"application/x-www-form-urlencoded"},method:"POST",body:N.stringify({q:e,le:"en",t:3,client:"web",keyfrom:"webdict"})},r=await(0,z.Fd)(t,n,{useCache:!0});return r?(await(0,Ut.v0)(t,n,r),r):null},reWord:e=>{var t,n;return null===e||void 0===e||null===(t=e.ec)||void 0===t||null===(n=t.word)||void 0===n?void 0:n["return-phrase"]},toText:e=>{var t,n,r;return(null===e||void 0===e||null===(t=e.ec)||void 0===t||null===(n=t.word)||void 0===n||null===(r=n.trs)||void 0===r?void 0:r.map(e=>{let{pos:t,tran:n}=e;return"".concat(t?"[".concat(t,"] "):"").concat(n)}))||[]},uiAudio:e=>{var t,n,r,i,o,a,s,l,u,c,d,h;return(0,yl.jsxs)(Sy,{component:"div",children:[(0,yl.jsxs)(Sy,{component:"div",style:{display:"inline-block",paddingRight:"1em"},children:[(0,yl.jsx)(Sy,{component:"span",children:"\u82f1 ".concat(null!==e&&void 0!==e&&null!==(t=e.ec)&&void 0!==t&&null!==(n=t.word)&&void 0!==n&&n.ukphone?"[".concat(null===e||void 0===e||null===(r=e.ec)||void 0===r||null===(i=r.word)||void 0===i?void 0:i.ukphone,"]"):"")}),(0,yl.jsx)(FE,{text:null===e||void 0===e||null===(o=e.ec)||void 0===o||null===(a=o.word)||void 0===a?void 0:a["return-phrase"],lan:"uk"})]}),(0,yl.jsxs)(Sy,{component:"div",style:{display:"inline-block",paddingRight:"1em"},children:[(0,yl.jsx)(Sy,{component:"span",children:"\u7f8e ".concat(null!==e&&void 0!==e&&null!==(s=e.ec)&&void 0!==s&&null!==(l=s.word)&&void 0!==l&&l.usphone?"[".concat(null===e||void 0===e||null===(u=e.ec)||void 0===u||null===(c=u.word)||void 0===c?void 0:c.usphone,"]"):"")}),(0,yl.jsx)(FE,{text:null===e||void 0===e||null===(d=e.ec)||void 0===d||null===(h=d.word)||void 0===h?void 0:h["return-phrase"],lan:"en"})]})]})},uiTrans:e=>{var t,n,r,i,o;return(0,yl.jsxs)(Sy,{component:"div",children:[(0,yl.jsx)(Sy,{component:"ul",children:null===e||void 0===e||null===(t=e.ec)||void 0===t||null===(n=t.word)||void 0===n||null===(r=n.trs)||void 0===r?void 0:r.map((e,t)=>{let{pos:n,tran:r}=e;return(0,yl.jsxs)(Sy,{component:"li",children:[n&&"[".concat(n,"] "),r]},t)})}),(null===e||void 0===e||null===(i=e.blng_sents_part)||void 0===i||null===(o=i["sentence-pair"])||void 0===o?void 0:o.length)>0&&(0,yl.jsxs)(Sy,{component:"div",style:{marginTop:"10px"},children:[(0,yl.jsx)(Sy,{component:"div",style:{fontWeight:"bold",marginBottom:"5px"},children:"\u4f8b\u53e5"}),e.blng_sents_part["sentence-pair"].slice(0,2).map((t,n)=>{var r,i,o,a;return(0,yl.jsxs)(Sy,{component:"div",style:{marginBottom:"5px"},children:[(0,yl.jsx)(Sy,{component:"div",children:null===(r=t.sentence)||void 0===r||null===(i=r.split(null===(o=e.ec)||void 0===o||null===(a=o.word)||void 0===a?void 0:a["return-phrase"]))||void 0===i?void 0:i.map((t,n,r)=>{var i,o;return(0,yl.jsxs)("span",{children:[n>0&&(null===(i=e.ec)||void 0===i||null===(o=i.word)||void 0===o?void 0:o["return-phrase"])&&(0,yl.jsx)("span",{style:{fontWeight:"bold",color:"#1e88e5"},children:e.ec.word["return-phrase"]}),t]},n)})}),(0,yl.jsx)(Sy,{component:"div",style:{opacity:"0.6",fontStyle:"italic"},children:t["sentence-translation"]})]},n)})]})]})}}};function NE(e){let{text:t,setCopyText:n,setRealWord:r,dict:i}=e;const{loading:o,error:a,data:s}=FA(i.apiFn,t);(0,fl.useEffect)(()=>{if(!s)return;const e=i.reWord(s)||t,o=[e,i.toText(s).join("\n")].join("\n");r(e),n(o)},[s,t,i,n,r]);const l=(0,fl.useMemo)(()=>i.uiAudio(s),[s,i]),u=(0,fl.useMemo)(()=>i.uiTrans(s),[s,i]);return o?(0,yl.jsx)(gy,{size:16}):a?(0,yl.jsx)(Xv,{severity:"error",children:a}):s?(0,yl.jsxs)(Sy,{component:"div",children:[l,u]}):(0,yl.jsx)(Sy,{children:"Not found!"})}function zE(e){let{text:t,enDict:n}=e;const r=OA(),[i,o]=(0,fl.useState)(t),[a,s]=(0,fl.useState)(t),l=OE[n];return(0,yl.jsxs)(yA,{spacing:1,children:[t&&(0,yl.jsxs)(yA,{direction:"row",justifyContent:"space-between",children:[(0,yl.jsx)(Sy,{variant:"subtitle1",style:{fontWeight:"bold"},children:a}),(0,yl.jsxs)(yA,{direction:"row",justifyContent:"space-between",children:[(0,yl.jsx)(yE,{text:i,title:r("copy")}),(0,yl.jsx)(SE,{word:a,title:r("collect")})]})]}),(0,yl.jsx)(By,{}),l&&(0,yl.jsx)(NE,{text:t,setCopyText:o,setRealWord:s,dict:l})]})}var jE=n(4837);function RE(e){return e&&"object"===typeof e?"position"in e||"type"in e?BE(e.position):"start"in e||"end"in e?BE(e):"line"in e||"column"in e?ME(e):"":""}function ME(e){return WE(e&&e.line)+":"+WE(e&&e.column)}function BE(e){return ME(e&&e.start)+"-"+ME(e&&e.end)}function WE(e){return e&&"number"===typeof e?e:1}class UE extends Error{constructor(e,t,n){const r=[null,null];let i={start:{line:null,column:null},end:{line:null,column:null}};if(super(),"string"===typeof t&&(n=t,t=void 0),"string"===typeof n){const e=n.indexOf(":");-1===e?r[1]=n:(r[0]=n.slice(0,e),r[1]=n.slice(e+1))}t&&("type"in t||"position"in t?t.position&&(i=t.position):"start"in t||"end"in t?i=t:("line"in t||"column"in t)&&(i.start=t)),this.name=RE(t)||"1:1",this.message="object"===typeof e?e.message:e,this.stack="","object"===typeof e&&e.stack&&(this.stack=e.stack),this.reason=this.message,this.fatal,this.line=i.start.line,this.column=i.start.column,this.position=i,this.source=r[0],this.ruleId=r[1],this.file,this.actual,this.expected,this.url,this.note}}UE.prototype.file="",UE.prototype.name="",UE.prototype.reason="",UE.prototype.message="",UE.prototype.stack="",UE.prototype.fatal=null,UE.prototype.column=null,UE.prototype.line=null,UE.prototype.source=null,UE.prototype.ruleId=null,UE.prototype.position=null;const HE={basename:function(e,t){if(void 0!==t&&"string"!==typeof t)throw new TypeError('"ext" argument must be a string');VE(e);let n,r=0,i=-1,o=e.length;if(void 0===t||0===t.length||t.length>e.length){for(;o--;)if(47===e.charCodeAt(o)){if(n){r=o+1;break}}else i<0&&(n=!0,i=o+1);return i<0?"":e.slice(r,i)}if(t===e)return"";let a=-1,s=t.length-1;for(;o--;)if(47===e.charCodeAt(o)){if(n){r=o+1;break}}else a<0&&(n=!0,a=o+1),s>-1&&(e.charCodeAt(o)===t.charCodeAt(s--)?s<0&&(i=o):(s=-1,i=a));r===i?i=a:i<0&&(i=e.length);return e.slice(r,i)},dirname:function(e){if(VE(e),0===e.length)return".";let t,n=-1,r=e.length;for(;--r;)if(47===e.charCodeAt(r)){if(t){n=r;break}}else t||(t=!0);return n<0?47===e.charCodeAt(0)?"/":".":1===n&&47===e.charCodeAt(0)?"//":e.slice(0,n)},extname:function(e){VE(e);let t,n=e.length,r=-1,i=0,o=-1,a=0;for(;n--;){const s=e.charCodeAt(n);if(47!==s)r<0&&(t=!0,r=n+1),46===s?o<0?o=n:1!==a&&(a=1):o>-1&&(a=-1);else if(t){i=n+1;break}}if(o<0||r<0||0===a||1===a&&o===r-1&&o===i+1)return"";return e.slice(o,r)},join:function(){let e,t=-1;for(var n=arguments.length,r=new Array(n),i=0;i2){if(r=i.lastIndexOf("/"),r!==i.length-1){r<0?(i="",o=0):(i=i.slice(0,r),o=i.length-1-i.lastIndexOf("/")),a=l,s=0;continue}}else if(i.length>0){i="",o=0,a=l,s=0;continue}t&&(i=i.length>0?i+"/..":"..",o=2)}else i.length>0?i+="/"+e.slice(a+1,l):i=e.slice(a+1,l),o=l-a-1;a=l,s=0}else 46===n&&s>-1?s++:s=-1}return i}(e,!t);0!==n.length||t||(n=".");n.length>0&&47===e.charCodeAt(e.length-1)&&(n+="/");return t?"/"+n:n}(e)},sep:"/"};function VE(e){if("string"!==typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const GE={cwd:function(){return"/"}};function KE(e){return null!==e&&"object"===typeof e&&e.href&&e.origin}function qE(e){if("string"===typeof e)e=new URL(e);else if(!KE(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if("file:"!==e.protocol){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return function(e){if(""!==e.hostname){const e=new TypeError('File URL host must be "localhost" or empty on darwin');throw e.code="ERR_INVALID_FILE_URL_HOST",e}const t=e.pathname;let n=-1;for(;++n1?l-1:0),c=1;ci.length;let u;l&&i.push(o);try{u=e.apply(this,i)}catch(r){if(l&&n)throw r;return o(r)}l||(u&&u.then&&"function"===typeof u.then?u.then(a,o):u instanceof Error?o(u):a(u))}function o(e){if(!n){n=!0;for(var r=arguments.length,i=new Array(r>1?r-1:0),o=1;o1?t-1:0),s=1;s{if(!e&&t&&n){const i=a.stringify(t,n);void 0===i||null===i||("string"===typeof(r=i)||jE(r)?n.value=i:n.result=i),o(e,n)}else o(e);var r})}n(null,t)},a.processSync=function(e){let t;a.freeze(),aC("processSync",a.Parser),sC("processSync",a.Compiler);const n=dC(e);return a.process(n,r),cC("processSync","process",t),n;function r(e){t=!0,ZE(e)}},a;function a(){const t=e();let r=-1;for(;++ri?0:i+t:t>i?i:t,n=n>0?n:0,r.length<1e4)o=Array.from(r),o.unshift(t,n),e.splice(...o);else for(n&&e.splice(t,n);a0?(mC(e,e.length,0,t),e):t}const vC={}.hasOwnProperty;function yC(e,t){let n;for(n in t){const r=(vC.call(e,n)?e[n]:void 0)||(e[n]={}),i=t[n];let o;if(i)for(o in i){vC.call(r,o)||(r[o]=[]);const e=i[o];bC(r[o],Array.isArray(e)?e:e?[e]:[])}}}function bC(e,t){let n=-1;const r=[];for(;++no))return;const n=t.events.length;let i,s,l=n;for(;l--;)if("exit"===t.events[l][0]&&"chunkFlow"===t.events[l][1].type){if(i){s=t.events[l][1].end;break}i=!0}for(v(a),e=n;er;){const r=n[i];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function y(){r.write([null]),i=void 0,r=void 0,t.containerState._closeFlow=void 0}}},zC={tokenize:function(e,t,n){return LC(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}};const jC={tokenize:function(e,t,n){return function(t){return DC(t)?LC(e,r,"linePrefix")(t):r(t)};function r(e){return null===e||_C(e)?t(e):n(e)}},partial:!0};function RC(e){const t={};let n,r,i,o,a,s,l,u=-1;for(;++u=4?t(i):e.interrupt(r.parser.constructs.flow,n,t)(i)}},partial:!0};const UC={tokenize:function(e){const t=this,n=e.attempt(jC,function(r){if(null===r)return void e.consume(r);return e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n},e.attempt(this.parser.constructs.flowInitial,r,LC(e,e.attempt(this.parser.constructs.flow,r,e.attempt(BC,r)),"linePrefix")));return n;function r(r){if(null!==r)return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),t.currentConstruct=void 0,n;e.consume(r)}}};const HC={resolveAll:qC()},VC=KC("string"),GC=KC("text");function KC(e){return{tokenize:function(t){const n=this,r=this.parser.constructs[e],i=t.attempt(r,o,a);return o;function o(e){return l(e)?i(e):a(e)}function a(e){if(null!==e)return t.enter("data"),t.consume(e),s;t.consume(e)}function s(e){return l(e)?(t.exit("data"),i(e)):(t.consume(e),s)}function l(e){if(null===e)return!0;const t=r[e];let i=-1;if(t)for(;++i-1){const e=a[0];"string"===typeof e?a[0]=e.slice(r):a.shift()}o>0&&a.push(e[i].slice(0,o))}return a}(a,e)}function f(){const{line:e,column:t,offset:n,_index:i,_bufferIndex:o}=r;return{line:e,column:t,offset:n,_index:i,_bufferIndex:o}}function m(){let e;for(;r._index=3&&(null===o||_C(o))?(e.exit("thematicBreak"),t(o)):n(o)}function a(t){return t===r?(e.consume(t),i++,a):(e.exit("thematicBreakSequence"),DC(t)?LC(e,o,"whitespace")(t):o(t))}}};const QC={name:"list",tokenize:function(e,t,n){const r=this,i=r.events[r.events.length-1];let o=i&&"linePrefix"===i[1].type?i[2].sliceSerialize(i[1],!0).length:0,a=0;return function(t){const i=r.containerState.type||(42===t||43===t||45===t?"listUnordered":"listOrdered");if("listUnordered"===i?!r.containerState.marker||t===r.containerState.marker:SC(t)){if(r.containerState.type||(r.containerState.type=i,e.enter(i,{_container:!0})),"listUnordered"===i)return e.enter("listItemPrefix"),42===t||45===t?e.check(JC,n,l)(t):l(t);if(!r.interrupt||49===t)return e.enter("listItemPrefix"),e.enter("listItemValue"),s(t)}return n(t)};function s(t){return SC(t)&&++a<10?(e.consume(t),s):(!r.interrupt||a<2)&&(r.containerState.marker?t===r.containerState.marker:41===t||46===t)?(e.exit("listItemValue"),l(t)):n(t)}function l(t){return e.enter("listItemMarker"),e.consume(t),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||t,e.check(jC,r.interrupt?n:u,e.attempt(ZC,d,c))}function u(e){return r.containerState.initialBlankLine=!0,o++,d(e)}function c(t){return DC(t)?(e.enter("listItemPrefixWhitespace"),e.consume(t),e.exit("listItemPrefixWhitespace"),d):n(t)}function d(n){return r.containerState.size=o+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(n)}},continuation:{tokenize:function(e,t,n){const r=this;return r.containerState._closeFlow=void 0,e.check(jC,i,o);function i(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,LC(e,t,"listItemIndent",r.containerState.size+1)(n)}function o(n){return r.containerState.furtherBlankLines||!DC(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(e_,t,a)(n))}function a(i){return r.containerState._closeFlow=!0,r.interrupt=void 0,LC(e,e.attempt(QC,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(i)}}},exit:function(e){e.exit(this.containerState.type)}},ZC={tokenize:function(e,t,n){const r=this;return LC(e,function(e){const i=r.events[r.events.length-1];return!DC(e)&&i&&"listItemPrefixWhitespace"===i[1].type?t(e):n(e)},"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5)},partial:!0},e_={tokenize:function(e,t,n){const r=this;return LC(e,function(e){const i=r.events[r.events.length-1];return i&&"listItemIndent"===i[1].type&&i[2].sliceSerialize(i[1],!0).length===r.containerState.size?t(e):n(e)},"listItemIndent",r.containerState.size+1)},partial:!0};const t_={name:"blockQuote",tokenize:function(e,t,n){const r=this;return function(t){if(62===t){const n=r.containerState;return n.open||(e.enter("blockQuote",{_container:!0}),n.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(t),e.exit("blockQuoteMarker"),i}return n(t)};function i(n){return DC(n)?(e.enter("blockQuotePrefixWhitespace"),e.consume(n),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(n))}},continuation:{tokenize:function(e,t,n){const r=this;return function(t){if(DC(t))return LC(e,i,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t);return i(t)};function i(r){return e.attempt(t_,t,n)(r)}}},exit:function(e){e.exit("blockQuote")}};function n_(e,t,n,r,i,o,a,s,l){const u=l||Number.POSITIVE_INFINITY;let c=0;return function(t){if(60===t)return e.enter(r),e.enter(i),e.enter(o),e.consume(t),e.exit(o),d;if(null===t||32===t||41===t||kC(t))return n(t);return e.enter(r),e.enter(a),e.enter(s),e.enter("chunkString",{contentType:"string"}),f(t)};function d(n){return 62===n?(e.enter(o),e.consume(n),e.exit(o),e.exit(i),e.exit(r),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),h(n))}function h(t){return 62===t?(e.exit("chunkString"),e.exit(s),d(t)):null===t||60===t||_C(t)?n(t):(e.consume(t),92===t?p:h)}function p(t){return 60===t||62===t||92===t?(e.consume(t),h):h(t)}function f(i){return c||null!==i&&41!==i&&!TC(i)?c999||null===d||91===d||93===d&&!s||94===d&&!l&&"_hiddenFootnoteSupport"in a.parser.constructs?n(d):93===d?(e.exit(o),e.enter(i),e.consume(d),e.exit(i),e.exit(r),t):_C(d)?(e.enter("lineEnding"),e.consume(d),e.exit("lineEnding"),u):(e.enter("chunkString",{contentType:"string"}),c(d))}function c(t){return null===t||91===t||93===t||_C(t)||l++>999?(e.exit("chunkString"),u(t)):(e.consume(t),s||(s=!DC(t)),92===t?d:c)}function d(t){return 91===t||92===t||93===t?(e.consume(t),l++,c):c(t)}}function i_(e,t,n,r,i,o){let a;return function(t){if(34===t||39===t||40===t)return e.enter(r),e.enter(i),e.consume(t),e.exit(i),a=40===t?41:t,s;return n(t)};function s(n){return n===a?(e.enter(i),e.consume(n),e.exit(i),e.exit(r),t):(e.enter(o),l(n))}function l(t){return t===a?(e.exit(o),s(a)):null===t?n(t):_C(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),LC(e,l,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),u(t))}function u(t){return t===a||null===t||_C(t)?(e.exit("chunkString"),l(t)):(e.consume(t),92===t?c:u)}function c(t){return t===a||92===t?(e.consume(t),u):u(t)}}function o_(e,t){let n;return function r(i){if(_C(i))return e.enter("lineEnding"),e.consume(i),e.exit("lineEnding"),n=!0,r;if(DC(i))return LC(e,r,n?"linePrefix":"lineSuffix")(i);return t(i)}}function a_(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const s_={name:"definition",tokenize:function(e,t,n){const r=this;let i;return function(t){return e.enter("definition"),function(t){return r_.call(r,e,o,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(t)}(t)};function o(t){return i=a_(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),58===t?(e.enter("definitionMarker"),e.consume(t),e.exit("definitionMarker"),a):n(t)}function a(t){return TC(t)?o_(e,s)(t):s(t)}function s(t){return n_(e,l,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(t)}function l(t){return e.attempt(l_,u,u)(t)}function u(t){return DC(t)?LC(e,c,"whitespace")(t):c(t)}function c(o){return null===o||_C(o)?(e.exit("definition"),r.parser.defined.push(i),t(o)):n(o)}}},l_={tokenize:function(e,t,n){return function(t){return TC(t)?o_(e,r)(t):n(t)};function r(t){return i_(e,i,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(t)}function i(t){return DC(t)?LC(e,o,"whitespace")(t):o(t)}function o(e){return null===e||_C(e)?t(e):n(e)}},partial:!0};const u_={name:"codeIndented",tokenize:function(e,t,n){const r=this;return function(t){return e.enter("codeIndented"),LC(e,i,"linePrefix",5)(t)};function i(e){const t=r.events[r.events.length-1];return t&&"linePrefix"===t[1].type&&t[2].sliceSerialize(t[1],!0).length>=4?o(e):n(e)}function o(t){return null===t?s(t):_C(t)?e.attempt(c_,o,s)(t):(e.enter("codeFlowValue"),a(t))}function a(t){return null===t||_C(t)?(e.exit("codeFlowValue"),o(t)):(e.consume(t),a)}function s(n){return e.exit("codeIndented"),t(n)}}},c_={tokenize:function(e,t,n){const r=this;return i;function i(t){return r.parser.lazy[r.now().line]?n(t):_C(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),i):LC(e,o,"linePrefix",5)(t)}function o(e){const o=r.events[r.events.length-1];return o&&"linePrefix"===o[1].type&&o[2].sliceSerialize(o[1],!0).length>=4?t(e):_C(e)?i(e):n(e)}},partial:!0};const d_={name:"headingAtx",tokenize:function(e,t,n){let r=0;return function(t){return e.enter("atxHeading"),function(t){return e.enter("atxHeadingSequence"),i(t)}(t)};function i(t){return 35===t&&r++<6?(e.consume(t),i):null===t||TC(t)?(e.exit("atxHeadingSequence"),o(t)):n(t)}function o(n){return 35===n?(e.enter("atxHeadingSequence"),a(n)):null===n||_C(n)?(e.exit("atxHeading"),t(n)):DC(n)?LC(e,o,"whitespace")(n):(e.enter("atxHeadingText"),s(n))}function a(t){return 35===t?(e.consume(t),a):(e.exit("atxHeadingSequence"),o(t))}function s(t){return null===t||35===t||TC(t)?(e.exit("atxHeadingText"),o(t)):(e.consume(t),s)}},resolve:function(e,t){let n,r,i=e.length-2,o=3;"whitespace"===e[o][1].type&&(o+=2);i-2>o&&"whitespace"===e[i][1].type&&(i-=2);"atxHeadingSequence"===e[i][1].type&&(o===i-1||i-4>o&&"whitespace"===e[i-2][1].type)&&(i-=o+1===i?2:4);i>o&&(n={type:"atxHeadingText",start:e[o][1].start,end:e[i][1].end},r={type:"chunkText",start:e[o][1].start,end:e[i][1].end,contentType:"text"},mC(e,o,i-o+1,[["enter",n,t],["enter",r,t],["exit",r,t],["exit",n,t]]));return e}};const h_={name:"setextUnderline",tokenize:function(e,t,n){const r=this;let i;return function(t){let a,s=r.events.length;for(;s--;)if("lineEnding"!==r.events[s][1].type&&"linePrefix"!==r.events[s][1].type&&"content"!==r.events[s][1].type){a="paragraph"===r.events[s][1].type;break}if(!r.parser.lazy[r.now().line]&&(r.interrupt||a))return e.enter("setextHeadingLine"),i=t,function(t){return e.enter("setextHeadingLineSequence"),o(t)}(t);return n(t)};function o(t){return t===i?(e.consume(t),o):(e.exit("setextHeadingLineSequence"),DC(t)?LC(e,a,"lineSuffix")(t):a(t))}function a(r){return null===r||_C(r)?(e.exit("setextHeadingLine"),t(r)):n(r)}},resolveTo:function(e,t){let n,r,i,o=e.length;for(;o--;)if("enter"===e[o][0]){if("content"===e[o][1].type){n=o;break}"paragraph"===e[o][1].type&&(r=o)}else"content"===e[o][1].type&&e.splice(o,1),i||"definition"!==e[o][1].type||(i=o);const a={type:"setextHeading",start:Object.assign({},e[r][1].start),end:Object.assign({},e[e.length-1][1].end)};e[r][1].type="setextHeadingText",i?(e.splice(r,0,["enter",a,t]),e.splice(i+1,0,["exit",e[n][1],t]),e[n][1].end=Object.assign({},e[i][1].end)):e[n][1]=a;return e.push(["exit",a,t]),e}};const p_=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],f_=["pre","script","style","textarea"],m_={name:"htmlFlow",tokenize:function(e,t,n){const r=this;let i,o,a,s,l;return function(t){return function(t){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(t),u}(t)};function u(s){return 33===s?(e.consume(s),c):47===s?(e.consume(s),o=!0,p):63===s?(e.consume(s),i=3,r.interrupt?t:O):AC(s)?(e.consume(s),a=String.fromCharCode(s),f):n(s)}function c(o){return 45===o?(e.consume(o),i=2,d):91===o?(e.consume(o),i=5,s=0,h):AC(o)?(e.consume(o),i=4,r.interrupt?t:O):n(o)}function d(i){return 45===i?(e.consume(i),r.interrupt?t:O):n(i)}function h(i){const o="CDATA[";return i===o.charCodeAt(s++)?(e.consume(i),6===s?r.interrupt?t:C:h):n(i)}function p(t){return AC(t)?(e.consume(t),a=String.fromCharCode(t),f):n(t)}function f(s){if(null===s||47===s||62===s||TC(s)){const l=47===s,u=a.toLowerCase();return l||o||!f_.includes(u)?p_.includes(a.toLowerCase())?(i=6,l?(e.consume(s),m):r.interrupt?t(s):C(s)):(i=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):o?g(s):v(s)):(i=1,r.interrupt?t(s):C(s))}return 45===s||xC(s)?(e.consume(s),a+=String.fromCharCode(s),f):n(s)}function m(i){return 62===i?(e.consume(i),r.interrupt?t:C):n(i)}function g(t){return DC(t)?(e.consume(t),g):S(t)}function v(t){return 47===t?(e.consume(t),S):58===t||95===t||AC(t)?(e.consume(t),y):DC(t)?(e.consume(t),v):S(t)}function y(t){return 45===t||46===t||58===t||95===t||xC(t)?(e.consume(t),y):b(t)}function b(t){return 61===t?(e.consume(t),A):DC(t)?(e.consume(t),b):v(t)}function A(t){return null===t||60===t||61===t||62===t||96===t?n(t):34===t||39===t?(e.consume(t),l=t,x):DC(t)?(e.consume(t),A):w(t)}function x(t){return t===l?(e.consume(t),l=null,k):null===t||_C(t)?n(t):(e.consume(t),x)}function w(t){return null===t||34===t||39===t||47===t||60===t||61===t||62===t||96===t||TC(t)?b(t):(e.consume(t),w)}function k(e){return 47===e||62===e||DC(e)?v(e):n(e)}function S(t){return 62===t?(e.consume(t),E):n(t)}function E(t){return null===t||_C(t)?C(t):DC(t)?(e.consume(t),E):n(t)}function C(t){return 45===t&&2===i?(e.consume(t),P):60===t&&1===i?(e.consume(t),I):62===t&&4===i?(e.consume(t),N):63===t&&3===i?(e.consume(t),O):93===t&&5===i?(e.consume(t),L):!_C(t)||6!==i&&7!==i?null===t||_C(t)?(e.exit("htmlFlowData"),_(t)):(e.consume(t),C):(e.exit("htmlFlowData"),e.check(g_,z,_)(t))}function _(t){return e.check(v_,T,z)(t)}function T(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),D}function D(t){return null===t||_C(t)?_(t):(e.enter("htmlFlowData"),C(t))}function P(t){return 45===t?(e.consume(t),O):C(t)}function I(t){return 47===t?(e.consume(t),a="",F):C(t)}function F(t){if(62===t){const n=a.toLowerCase();return f_.includes(n)?(e.consume(t),N):C(t)}return AC(t)&&a.length<8?(e.consume(t),a+=String.fromCharCode(t),F):C(t)}function L(t){return 93===t?(e.consume(t),O):C(t)}function O(t){return 62===t?(e.consume(t),N):45===t&&2===i?(e.consume(t),O):C(t)}function N(t){return null===t||_C(t)?(e.exit("htmlFlowData"),z(t)):(e.consume(t),N)}function z(n){return e.exit("htmlFlow"),t(n)}},resolveTo:function(e){let t=e.length;for(;t--&&("enter"!==e[t][0]||"htmlFlow"!==e[t][1].type););t>1&&"linePrefix"===e[t-2][1].type&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2));return e},concrete:!0},g_={tokenize:function(e,t,n){return function(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),e.attempt(jC,t,n)}},partial:!0},v_={tokenize:function(e,t,n){const r=this;return function(t){if(_C(t))return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),i;return n(t)};function i(e){return r.parser.lazy[r.now().line]?n(e):t(e)}},partial:!0};const y_={tokenize:function(e,t,n){const r=this;return function(t){if(null===t)return n(t);return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),i};function i(e){return r.parser.lazy[r.now().line]?n(e):t(e)}},partial:!0},b_={name:"codeFenced",tokenize:function(e,t,n){const r=this,i={tokenize:function(e,t,n){let i=0;return a;function a(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),l}function l(t){return e.enter("codeFencedFence"),DC(t)?LC(e,u,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t):u(t)}function u(t){return t===o?(e.enter("codeFencedFenceSequence"),c(t)):n(t)}function c(t){return t===o?(i++,e.consume(t),c):i>=s?(e.exit("codeFencedFenceSequence"),DC(t)?LC(e,d,"whitespace")(t):d(t)):n(t)}function d(r){return null===r||_C(r)?(e.exit("codeFencedFence"),t(r)):n(r)}},partial:!0};let o,a=0,s=0;return function(t){return function(t){const n=r.events[r.events.length-1];return a=n&&"linePrefix"===n[1].type?n[2].sliceSerialize(n[1],!0).length:0,o=t,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),l(t)}(t)};function l(t){return t===o?(s++,e.consume(t),l):s<3?n(t):(e.exit("codeFencedFenceSequence"),DC(t)?LC(e,u,"whitespace")(t):u(t))}function u(n){return null===n||_C(n)?(e.exit("codeFencedFence"),r.interrupt?t(n):e.check(y_,p,y)(n)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),c(n))}function c(t){return null===t||_C(t)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),u(t)):DC(t)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),LC(e,d,"whitespace")(t)):96===t&&t===o?n(t):(e.consume(t),c)}function d(t){return null===t||_C(t)?u(t):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),h(t))}function h(t){return null===t||_C(t)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),u(t)):96===t&&t===o?n(t):(e.consume(t),h)}function p(t){return e.attempt(i,y,f)(t)}function f(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),m}function m(t){return a>0&&DC(t)?LC(e,g,"linePrefix",a+1)(t):g(t)}function g(t){return null===t||_C(t)?e.check(y_,p,y)(t):(e.enter("codeFlowValue"),v(t))}function v(t){return null===t||_C(t)?(e.exit("codeFlowValue"),g(t)):(e.consume(t),v)}function y(n){return e.exit("codeFenced"),t(n)}},concrete:!0};const A_=document.createElement("i");function x_(e){const t="&"+e+";";A_.innerHTML=t;const n=A_.textContent;return(59!==n.charCodeAt(n.length-1)||"semi"===e)&&(n!==t&&n)}const w_={name:"characterReference",tokenize:function(e,t,n){const r=this;let i,o,a=0;return function(t){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(t),e.exit("characterReferenceMarker"),s};function s(t){return 35===t?(e.enter("characterReferenceMarkerNumeric"),e.consume(t),e.exit("characterReferenceMarkerNumeric"),l):(e.enter("characterReferenceValue"),i=31,o=xC,u(t))}function l(t){return 88===t||120===t?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(t),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),i=6,o=EC,u):(e.enter("characterReferenceValue"),i=7,o=SC,u(t))}function u(s){if(59===s&&a){const i=e.exit("characterReferenceValue");return o!==xC||x_(r.sliceSerialize(i))?(e.enter("characterReferenceMarker"),e.consume(s),e.exit("characterReferenceMarker"),e.exit("characterReference"),t):n(s)}return o(s)&&a++1&&e[c][1].end.offset-e[c][1].start.offset>1?2:1;const d=Object.assign({},e[n][1].end),h=Object.assign({},e[c][1].start);F_(d,-s),F_(h,s),o={type:s>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},e[n][1].end)},a={type:s>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[c][1].start),end:h},i={type:s>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[c][1].start)},r={type:s>1?"strong":"emphasis",start:Object.assign({},o.start),end:Object.assign({},a.end)},e[n][1].end=Object.assign({},o.start),e[c][1].start=Object.assign({},a.end),l=[],e[n][1].end.offset-e[n][1].start.offset&&(l=gC(l,[["enter",e[n][1],t],["exit",e[n][1],t]])),l=gC(l,[["enter",r,t],["enter",o,t],["exit",o,t],["enter",i,t]]),l=gC(l,YC(t.parser.constructs.insideSpan.null,e.slice(n+1,c),t)),l=gC(l,[["exit",i,t],["enter",a,t],["exit",a,t],["exit",r,t]]),e[c][1].end.offset-e[c][1].start.offset?(u=2,l=gC(l,[["enter",e[c][1],t],["exit",e[c][1],t]])):u=0,mC(e,n-1,c-n+3,l),c=n+l.length-u-2;break}c=-1;for(;++c13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||65535===(65535&n)||65534===(65535&n)||n>1114111?"\ufffd":String.fromCharCode(n)}const X_=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function J_(e,t,n){if(t)return t;if(35===n.charCodeAt(0)){const e=n.charCodeAt(1),t=120===e||88===e;return Y_(n.slice(t?2:1),t?16:10)}return x_(n)||e}const Q_={}.hasOwnProperty,Z_=function(e,t,n){return"string"!==typeof t&&(n=t,t=void 0),function(e){const t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:s(ne),autolinkProtocol:_,autolinkEmail:_,atxHeading:s(Q),blockQuote:s(q),characterEscape:_,characterReference:_,codeFenced:s($),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:s($,l),codeText:s(Y,l),codeTextData:_,data:_,codeFlowValue:_,definition:s(X),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:s(J),hardBreakEscape:s(Z),hardBreakTrailing:s(Z),htmlFlow:s(ee,l),htmlFlowData:_,htmlText:s(ee,l),htmlTextData:_,image:s(te),label:l,link:s(ne),listItem:s(ie),listItemValue:f,listOrdered:s(re,p),listUnordered:s(re),paragraph:s(oe),reference:W,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:s(Q),strong:s(ae),thematicBreak:s(le)},exit:{atxHeading:c(),atxHeadingSequence:k,autolink:c(),autolinkEmail:K,autolinkProtocol:G,blockQuote:c(),characterEscapeValue:T,characterReferenceMarkerHexadecimal:H,characterReferenceMarkerNumeric:H,characterReferenceValue:V,codeFenced:c(y),codeFencedFence:v,codeFencedFenceInfo:m,codeFencedFenceMeta:g,codeFlowValue:T,codeIndented:c(b),codeText:c(L),codeTextData:T,data:T,definition:c(),definitionDestinationString:w,definitionLabelString:A,definitionTitleString:x,emphasis:c(),hardBreakEscape:c(P),hardBreakTrailing:c(P),htmlFlow:c(I),htmlFlowData:T,htmlText:c(F),htmlTextData:T,image:c(N),label:j,labelText:z,lineEnding:D,link:c(O),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:U,resourceDestinationString:R,resourceTitleString:M,resource:B,setextHeading:c(C),setextHeadingLineSequence:E,setextHeadingText:S,strong:c(),thematicBreak:c()}};tT(t,(e||{}).mdastExtensions||[]);const n={};return r;function r(e){let n={type:"root",children:[]};const r={stack:[n],tokenStack:[],config:t,enter:u,exit:d,buffer:l,resume:h,setData:o,getData:a},s=[];let c=-1;for(;++c0){const e=r.tokenStack[r.tokenStack.length-1];(e[1]||rT).call(r,void 0,e[0])}for(n.position={start:eT(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:eT(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},c=-1;++c{const n=this.data("settings");return Z_(t,Object.assign({},n,e,{extensions:this.data("micromarkExtensions")||[],mdastExtensions:this.data("fromMarkdownExtensions")||[]}))}})}function oT(e){const t=[];let n=-1,r=0,i=0;for(;++n55295&&o<57344){const t=e.charCodeAt(n+1);o<56320&&t>56319&&t<57344?(a=String.fromCharCode(o,t),i=1):a="\ufffd"}else a=String.fromCharCode(o);a&&(t.push(e.slice(r,n),encodeURIComponent(a)),r=n+i+1,a=""),i&&(n+=i,i=0)}return t.join("")+e.slice(r)}const aT=function(e){if(void 0===e||null===e)return lT;if("string"===typeof e)return function(e){return sT(t);function t(t){return t&&t.type===e}}(e);if("object"===typeof e)return Array.isArray(e)?function(e){const t=[];let n=-1;for(;++n1?n-1:0),i=1;i":"")+")"})}return c;function c(){let u,c,d,h=[];if((!t||i(a,s,l[l.length-1]||null))&&(h=function(e){if(Array.isArray(e))return e;if("number"===typeof e)return[uT,e];return[e]}(n(a,l)),h[0]===cT))return h;if(a.children&&"skip"!==h[0])for(c=(r?a.children.length:-1)+o,d=l.concat(a);c>-1&&c-1?n.offset:null}}}const gT={}.hasOwnProperty;function vT(e){return String(e||"").toUpperCase()}function yT(e,t){const n=String(t.identifier).toUpperCase(),r=oT(n.toLowerCase()),i=e.footnoteOrder.indexOf(n);let o;-1===i?(e.footnoteOrder.push(n),e.footnoteCounts[n]=1,o=e.footnoteOrder.length):(e.footnoteCounts[n]++,o=i+1);const a=e.footnoteCounts[n],s={type:"element",tagName:"a",properties:{href:"#"+e.clobberPrefix+"fn-"+r,id:e.clobberPrefix+"fnref-"+r+(a>1?"-"+a:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(o)}]};e.patch(t,s);const l={type:"element",tagName:"sup",properties:{},children:[s]};return e.patch(t,l),e.applyData(t,l)}function bT(e,t){const n=t.referenceType;let r="]";if("collapsed"===n?r+="[]":"full"===n&&(r+="["+(t.label||t.identifier)+"]"),"imageReference"===t.type)return{type:"text",value:"!["+t.alt+r};const i=e.all(t),o=i[0];o&&"text"===o.type?o.value="["+o.value:i.unshift({type:"text",value:"["});const a=i[i.length-1];return a&&"text"===a.type?a.value+=r:i.push({type:"text",value:r}),i}function AT(e){const t=e.spread;return void 0===t||null===t?e.children.length>1:t}function xT(e){const t=String(e),n=/\r?\n|\r/g;let r=n.exec(t),i=0;const o=[];for(;r;)o.push(wT(t.slice(i,r.index),i>0,!0),r[0]),i=r.index+r[0].length,r=n.exec(t);return o.push(wT(t.slice(i),i>0,!1)),o.join("")}function wT(e,t,n){let r=0,i=e.length;if(t){let t=e.codePointAt(r);for(;9===t||32===t;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(i-1);for(;9===t||32===t;)i--,t=e.codePointAt(i-1)}return i>r?e.slice(r,i):""}const kT={blockquote:function(e,t){const n={type:"element",tagName:"blockquote",properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)},break:function(e,t){const n={type:"element",tagName:"br",properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:"text",value:"\n"}]},code:function(e,t){const n=t.value?t.value+"\n":"",r=t.lang?t.lang.match(/^[^ \t]+(?=[ \t]|$)/):null,i={};r&&(i.className=["language-"+r]);let o={type:"element",tagName:"code",properties:i,children:[{type:"text",value:n}]};return t.meta&&(o.data={meta:t.meta}),e.patch(t,o),o=e.applyData(t,o),o={type:"element",tagName:"pre",properties:{},children:[o]},e.patch(t,o),o},delete:function(e,t){const n={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},emphasis:function(e,t){const n={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},footnoteReference:yT,footnote:function(e,t){const n=e.footnoteById;let r=1;for(;r in n;)r++;const i=String(r);return n[i]={type:"footnoteDefinition",identifier:i,children:[{type:"paragraph",children:t.children}],position:t.position},yT(e,{type:"footnoteReference",identifier:i,position:t.position})},heading:function(e,t){const n={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},html:function(e,t){if(e.dangerous){const n={type:"raw",value:t.value};return e.patch(t,n),e.applyData(t,n)}return null},imageReference:function(e,t){const n=e.definition(t.identifier);if(!n)return bT(e,t);const r={src:oT(n.url||""),alt:t.alt};null!==n.title&&void 0!==n.title&&(r.title=n.title);const i={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,i),e.applyData(t,i)},image:function(e,t){const n={src:oT(t.url)};null!==t.alt&&void 0!==t.alt&&(n.alt=t.alt),null!==t.title&&void 0!==t.title&&(n.title=t.title);const r={type:"element",tagName:"img",properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)},inlineCode:function(e,t){const n={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)},linkReference:function(e,t){const n=e.definition(t.identifier);if(!n)return bT(e,t);const r={href:oT(n.url||"")};null!==n.title&&void 0!==n.title&&(r.title=n.title);const i={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,i),e.applyData(t,i)},link:function(e,t){const n={href:oT(t.url)};null!==t.title&&void 0!==t.title&&(n.title=t.title);const r={type:"element",tagName:"a",properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)},listItem:function(e,t,n){const r=e.all(t),i=n?function(e){let t=!1;if("list"===e.type){t=e.spread||!1;const n=e.children;let r=-1;for(;!t&&++r0&&n.children.unshift({type:"text",value:" "}),n.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),o.className=["task-list-item"]}let s=-1;for(;++s0){const r={type:"element",tagName:"tbody",properties:{},children:e.wrap(n,!0)},o=pT(t.children[1]),a=fT(t.children[t.children.length-1]);o.line&&a.line&&(r.position={start:o,end:a}),i.push(r)}const o={type:"element",tagName:"table",properties:{},children:e.wrap(i,!0)};return e.patch(t,o),e.applyData(t,o)},tableCell:function(e,t){const n={type:"element",tagName:"td",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},tableRow:function(e,t,n){const r=n?n.children:void 0,i=0===(r?r.indexOf(t):1)?"th":"td",o=n&&"table"===n.type?n.align:void 0,a=o?o.length:t.children.length;let s=-1;const l=[];for(;++s{const n=vT(e.identifier);n&&!gT.call(t,n)&&(t[n]=e)}),function(e){const n=vT(e);return n&&gT.call(t,n)?t[n]:null}}(e),s.footnoteById=o,s.footnoteOrder=[],s.footnoteCounts={},s.patch=_T,s.applyData=TT,s.one=function(e,t){return DT(s,e,t)},s.all=function(e){return PT(s,e)},s.wrap=IT,s.augment=a,hT(e,"footnoteDefinition",e=>{const t=String(e.identifier).toUpperCase();ET.call(o,t)||(o[t]=e)}),s;function a(e,t){if(e&&"data"in e&&e.data){const n=e.data;n.hName&&("element"!==t.type&&(t={type:"element",tagName:"",properties:{},children:[]}),t.tagName=n.hName),"element"===t.type&&n.hProperties&&(t.properties=(0,i.A)((0,i.A)({},t.properties),n.hProperties)),"children"in t&&t.children&&n.hChildren&&(t.children=n.hChildren)}if(e){const n="type"in e?e:{position:e};(function(e){return!e||!e.position||!e.position.start||!e.position.start.line||!e.position.start.column||!e.position.end||!e.position.end.line||!e.position.end.column})(n)||(t.position={start:pT(n),end:fT(n)})}return t}function s(e,t,n,r){return Array.isArray(n)&&(r=n,n={}),a(e,{type:"element",tagName:t,properties:n||{},children:r||[]})}}function _T(e,t){e.position&&(t.position=function(e){return{start:pT(e),end:fT(e)}}(e))}function TT(e,t){let n=t;if(e&&e.data){const t=e.data.hName,r=e.data.hChildren,o=e.data.hProperties;"string"===typeof t&&("element"===n.type?n.tagName=t:n={type:"element",tagName:t,properties:{},children:[]}),"element"===n.type&&o&&(n.properties=(0,i.A)((0,i.A)({},n.properties),o)),"children"in n&&n.children&&null!==r&&void 0!==r&&(n.children=r)}return n}function DT(e,t,n){const r=t&&t.type;if(!r)throw new Error("Expected node, got `"+t+"`");return ET.call(e.handlers,r)?e.handlers[r](e,t,n):e.passThrough&&e.passThrough.includes(r)?"children"in t?(0,i.A)((0,i.A)({},t),{},{children:PT(e,t)}):t:e.unknownHandler?e.unknownHandler(e,t,n):function(e,t){const n=t.data||{},r=!("value"in t)||ET.call(n,"hProperties")||ET.call(n,"hChildren")?{type:"element",tagName:"div",properties:{},children:PT(e,t)}:{type:"text",value:t.value};return e.patch(t,r),e.applyData(t,r)}(e,t)}function PT(e,t){const n=[];if("children"in t){const r=t.children;let i=-1;for(;++i0&&n.push({type:"text",value:"\n"}),n}function FT(e,t){const n=CT(e,t),r=n.one(e,null),o=function(e){const t=[];let n=-1;for(;++n1?"-"+s:""),dataFootnoteBackref:!0,className:["data-footnote-backref"],ariaLabel:e.footnoteBackLabel},children:[{type:"text",value:"\u21a9"}]};s>1&&t.children.push({type:"element",tagName:"sup",children:[{type:"text",value:String(s)}]}),l.length>0&&l.push({type:"text",value:" "}),l.push(t)}const u=i[i.length-1];if(u&&"element"===u.type&&"p"===u.tagName){const e=u.children[u.children.length-1];e&&"text"===e.type?e.value+=" ":u.children.push({type:"text",value:" "}),u.children.push(...l)}else i.push(...l);const c={type:"element",tagName:"li",properties:{id:e.clobberPrefix+"fn-"+a},children:e.wrap(i,!0)};e.patch(r,c),t.push(c)}if(0!==t.length)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:e.footnoteLabelTagName,properties:(0,i.A)((0,i.A)({},JSON.parse(JSON.stringify(e.footnoteLabelProperties))),{},{id:"footnote-label"}),children:[{type:"text",value:e.footnoteLabel}]},{type:"text",value:"\n"},{type:"element",tagName:"ol",properties:{},children:e.wrap(t,!0)},{type:"text",value:"\n"}]}}(n);return o&&r.children.push({type:"text",value:"\n"},o),Array.isArray(r)?{type:"root",children:r}:r}const LT=function(e,t){return e&&"run"in e?function(e,t){return(n,r,i)=>{e.run(FT(n,t),r,e=>{i(e)})}}(e,t):function(e){return t=>FT(t,e)}(e||t)};var OT=n(8379);class NT{constructor(e,t,n){this.property=e,this.normal=t,n&&(this.space=n)}}function zT(e,t){const n={},r={};let i=-1;for(;++i"xlink:"+t.slice(5).toLowerCase(),properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null}}),eD=QT({space:"xml",transform:(e,t)=>"xml:"+t.slice(3).toLowerCase(),properties:{xmlLang:null,xmlBase:null,xmlSpace:null}});function tD(e,t){return t in e?e[t]:t}function nD(e,t){return tD(e,t.toLowerCase())}const rD=QT({space:"xmlns",attributes:{xmlnsxlink:"xmlns:xlink"},transform:nD,properties:{xmlns:null,xmlnsXLink:null}}),iD=QT({transform:(e,t)=>"role"===t?t:"aria-"+t.slice(4).toLowerCase(),properties:{ariaActiveDescendant:null,ariaAtomic:WT,ariaAutoComplete:null,ariaBusy:WT,ariaChecked:WT,ariaColCount:HT,ariaColIndex:HT,ariaColSpan:HT,ariaControls:VT,ariaCurrent:null,ariaDescribedBy:VT,ariaDetails:null,ariaDisabled:WT,ariaDropEffect:VT,ariaErrorMessage:null,ariaExpanded:WT,ariaFlowTo:VT,ariaGrabbed:WT,ariaHasPopup:null,ariaHidden:WT,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:VT,ariaLevel:HT,ariaLive:null,ariaModal:WT,ariaMultiLine:WT,ariaMultiSelectable:WT,ariaOrientation:null,ariaOwns:VT,ariaPlaceholder:null,ariaPosInSet:HT,ariaPressed:WT,ariaReadOnly:WT,ariaRelevant:null,ariaRequired:WT,ariaRoleDescription:VT,ariaRowCount:HT,ariaRowIndex:HT,ariaRowSpan:HT,ariaSelected:WT,ariaSetSize:HT,ariaSort:null,ariaValueMax:HT,ariaValueMin:HT,ariaValueNow:HT,ariaValueText:null,role:null}}),oD=QT({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:nD,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:GT,acceptCharset:VT,accessKey:VT,action:null,allow:null,allowFullScreen:BT,allowPaymentRequest:BT,allowUserMedia:BT,alt:null,as:null,async:BT,autoCapitalize:null,autoComplete:VT,autoFocus:BT,autoPlay:BT,blocking:VT,capture:null,charSet:null,checked:BT,cite:null,className:VT,cols:HT,colSpan:null,content:null,contentEditable:WT,controls:BT,controlsList:VT,coords:HT|GT,crossOrigin:null,data:null,dateTime:null,decoding:null,default:BT,defer:BT,dir:null,dirName:null,disabled:BT,download:UT,draggable:WT,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:BT,formTarget:null,headers:VT,height:HT,hidden:BT,high:HT,href:null,hrefLang:null,htmlFor:VT,httpEquiv:VT,id:null,imageSizes:null,imageSrcSet:null,inert:BT,inputMode:null,integrity:null,is:null,isMap:BT,itemId:null,itemProp:VT,itemRef:VT,itemScope:BT,itemType:VT,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:BT,low:HT,manifest:null,max:null,maxLength:HT,media:null,method:null,min:null,minLength:HT,multiple:BT,muted:BT,name:null,nonce:null,noModule:BT,noValidate:BT,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:BT,optimum:HT,pattern:null,ping:VT,placeholder:null,playsInline:BT,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:BT,referrerPolicy:null,rel:VT,required:BT,reversed:BT,rows:HT,rowSpan:HT,sandbox:VT,scope:null,scoped:BT,seamless:BT,selected:BT,shadowRootClonable:BT,shadowRootDelegatesFocus:BT,shadowRootMode:null,shape:null,size:HT,sizes:null,slot:null,span:HT,spellCheck:WT,src:null,srcDoc:null,srcLang:null,srcSet:null,start:HT,step:null,style:null,tabIndex:HT,target:null,title:null,translate:null,type:null,typeMustMatch:BT,useMap:null,value:WT,width:HT,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:VT,axis:null,background:null,bgColor:null,border:HT,borderColor:null,bottomMargin:HT,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:BT,declare:BT,event:null,face:null,frame:null,frameBorder:null,hSpace:HT,leftMargin:HT,link:null,longDesc:null,lowSrc:null,marginHeight:HT,marginWidth:HT,noResize:BT,noHref:BT,noShade:BT,noWrap:BT,object:null,profile:null,prompt:null,rev:null,rightMargin:HT,rules:null,scheme:null,scrolling:WT,standby:null,summary:null,text:null,topMargin:HT,valueType:null,version:null,vAlign:null,vLink:null,vSpace:HT,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:BT,disableRemotePlayback:BT,prefix:null,property:null,results:HT,security:null,unselectable:null}}),aD=QT({space:"svg",attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},transform:tD,properties:{about:KT,accentHeight:HT,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:HT,amplitude:HT,arabicForm:null,ascent:HT,attributeName:null,attributeType:null,azimuth:HT,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:HT,by:null,calcMode:null,capHeight:HT,className:VT,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:HT,diffuseConstant:HT,direction:null,display:null,dur:null,divisor:HT,dominantBaseline:null,download:BT,dx:null,dy:null,edgeMode:null,editable:null,elevation:HT,enableBackground:null,end:null,event:null,exponent:HT,externalResourcesRequired:null,fill:null,fillOpacity:HT,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:GT,g2:GT,glyphName:GT,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:HT,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:HT,horizOriginX:HT,horizOriginY:HT,id:null,ideographic:HT,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:HT,k:HT,k1:HT,k2:HT,k3:HT,k4:HT,kernelMatrix:KT,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:HT,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:HT,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:HT,overlineThickness:HT,paintOrder:null,panose1:null,path:null,pathLength:HT,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:VT,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:HT,pointsAtY:HT,pointsAtZ:HT,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:KT,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:KT,rev:KT,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:KT,requiredFeatures:KT,requiredFonts:KT,requiredFormats:KT,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:HT,specularExponent:HT,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:HT,strikethroughThickness:HT,string:null,stroke:null,strokeDashArray:KT,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:HT,strokeOpacity:HT,strokeWidth:null,style:null,surfaceScale:HT,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:KT,tabIndex:HT,tableValues:null,target:null,targetX:HT,targetY:HT,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:KT,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:HT,underlineThickness:HT,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:HT,values:null,vAlphabetic:HT,vMathematical:HT,vectorEffect:null,vHanging:HT,vIdeographic:HT,version:null,vertAdvY:HT,vertOriginX:HT,vertOriginY:HT,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:HT,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null}}),sD=zT([eD,ZT,rD,iD,oD],"html"),lD=zT([eD,ZT,rD,iD,aD],"svg");function uD(e){if(e.allowedElements&&e.disallowedElements)throw new TypeError("Only one of `allowedElements` and `disallowedElements` should be defined");if(e.allowedElements||e.disallowedElements||e.allowElement)return t=>{hT(t,"element",(t,n,r)=>{const i=r;let o;if(e.allowedElements?o=!e.allowedElements.includes(t.tagName):e.disallowedElements&&(o=e.disallowedElements.includes(t.tagName)),!o&&e.allowElement&&"number"===typeof n&&(o=!e.allowElement(t,n,i)),o&&"number"===typeof n)return e.unwrapDisallowed&&t.children?i.children.splice(n,1,...t.children):i.children.splice(n,1),n})}}var cD=n(6851);function dD(e){const t=e&&"object"===typeof e&&"text"===e.type?e.value||"":e;return"string"===typeof t&&""===t.replace(/[ \t\n\f\r]/g,"")}const hD=/^data[-\w.:]+$/i,pD=/-[a-z]/g,fD=/[A-Z]/g;function mD(e){return"-"+e.toLowerCase()}function gD(e){return e.charAt(1).toUpperCase()}const vD={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"};const yD=n(7922),bD=["http","https","mailto","tel"];function AD(e){const t=(e||"").trim(),n=t.charAt(0);if("#"===n||"/"===n)return t;const r=t.indexOf(":");if(-1===r)return t;let i=-1;for(;++ii?t:(i=t.indexOf("#"),-1!==i&&r>i?t:"javascript:void(0)")}const xD={}.hasOwnProperty,wD=new Set(["table","thead","tbody","tfoot","tr"]);function kD(e,t){const n=[];let r,i=-1;for(;++i0?fl.createElement(p,l,d):fl.createElement(p,l)}function ED(e,t){let n=-1,r=0;for(;++n4&&"data"===n.slice(0,4)&&hD.test(t)){if("-"===t.charAt(4)){const e=t.slice(5).replace(pD,gD);r="data"+e.charAt(0).toUpperCase()+e.slice(1)}else{const e=t.slice(4);if(!pD.test(e)){let n=e.replace(fD,mD);"-"!==n.charAt(0)&&(n="-"+n),t="data"+n}}i=YT}return new i(r,t)}(r.schema,t);let o=n;null!==o&&void 0!==o&&o===o&&(Array.isArray(o)&&(o=i.commaSeparated?function(e,t){const n=t||{};return(""===e[e.length-1]?[...e,""]:e).join((n.padRight?" ":"")+","+(!1===n.padLeft?"":" ")).trim()}(o):function(e){return e.join(" ").trim()}(o)),"style"===i.property&&"string"===typeof o&&(o=function(e){const t={};try{yD(e,n)}catch(r){}return t;function n(e,n){const r="-ms-"===e.slice(0,4)?"ms-".concat(e.slice(4)):e;t[r.replace(/-([a-z])/g,_D)]=n}}(o)),i.space&&i.property?e[xD.call(vD,i.property)?vD[i.property]:i.property]=o:i.attribute&&(e[i.attribute]=o))}function _D(e,t){return t.toUpperCase()}const TD={}.hasOwnProperty,DD={plugins:{to:"remarkPlugins",id:"change-plugins-to-remarkplugins"},renderers:{to:"components",id:"change-renderers-to-components"},astPlugins:{id:"remove-buggy-html-in-markdown-parser"},allowDangerousHtml:{id:"remove-buggy-html-in-markdown-parser"},escapeHtml:{id:"remove-buggy-html-in-markdown-parser"},source:{to:"children",id:"change-source-to-children"},allowNode:{to:"allowElement",id:"replace-allownode-allowedtypes-and-disallowedtypes"},allowedTypes:{to:"allowedElements",id:"replace-allownode-allowedtypes-and-disallowedtypes"},disallowedTypes:{to:"disallowedElements",id:"replace-allownode-allowedtypes-and-disallowedtypes"},includeNodeIndex:{to:"includeElementIndex",id:"change-includenodeindex-to-includeelementindex"}};function PD(e){for(const i in DD)if(TD.call(DD,i)&&TD.call(e,i)){const e=DD[i];console.warn("[react-markdown] Warning: please ".concat(e.to?"use `".concat(e.to,"` instead of"):"remove"," `").concat(i,"` (see <").concat("https://github.com/remarkjs/react-markdown/blob/main/changelog.md","#").concat(e.id,"> for more info)")),delete DD[i]}const t=rC().use(iT).use(e.remarkPlugins||[]).use(LT,(0,i.A)((0,i.A)({},e.remarkRehypeOptions),{},{allowDangerousHtml:!0})).use(e.rehypePlugins||[]).use(uD,e),n=new YE;"string"===typeof e.children?n.value=e.children:void 0!==e.children&&null!==e.children&&console.warn("[react-markdown] Warning: please pass a string as `children` (not: `".concat(e.children,"`)"));const r=t.runSync(t.parse(n),n);if("root"!==r.type)throw new TypeError("Expected a `root` node");let o=fl.createElement(fl.Fragment,{},kD({options:e,schema:sD,listDepth:0},r));return e.className&&(o=fl.createElement("div",{className:e.className},o)),o}PD.propTypes={children:OT.string,className:OT.string,allowElement:OT.func,allowedElements:OT.arrayOf(OT.string),disallowedElements:OT.arrayOf(OT.string),unwrapDisallowed:OT.bool,remarkPlugins:OT.arrayOf(OT.oneOfType([OT.object,OT.func,OT.arrayOf(OT.oneOfType([OT.bool,OT.string,OT.object,OT.func,OT.arrayOf(OT.any)]))])),rehypePlugins:OT.arrayOf(OT.oneOfType([OT.object,OT.func,OT.arrayOf(OT.oneOfType([OT.bool,OT.string,OT.object,OT.func,OT.arrayOf(OT.any)]))])),sourcePos:OT.bool,rawSourcePos:OT.bool,skipHtml:OT.bool,includeElementIndex:OT.bool,transformLinkUri:OT.oneOfType([OT.func,OT.bool]),linkTarget:OT.oneOfType([OT.func,OT.string]),transformImageUri:OT.func,components:OT.object};const ID=new Map;function FD(e){let{text:t,fromLang:n,speechLang:r,toLang:i,apiSetting:o,context:a=""}=e;const s=OA(),[l,u]=(0,fl.useState)(""),[c,d]=(0,fl.useState)(!1),[h,p]=(0,fl.useState)(""),f=JSON.stringify(o||{});return(0,fl.useEffect)(()=>{if(null===t||void 0===t||!t.trim()||null===o||void 0===o||!o.apiSlug)return u(""),d(!1),void p("");let e=!0;const r=function(e){let{text:t,fromLang:n,toLang:r,apiSettingKey:i,context:o}=e;return JSON.stringify({text:t,fromLang:n,toLang:r,apiSettingKey:i,context:o})}({text:t,fromLang:n,toLang:i,apiSettingKey:f,context:a}),s=t=>{let{markdown:n}=t;e&&n&&u(n)};return(async()=>{try{d(!0),u(""),p("");let l=ID.get(r);l||(l={subscribers:new Set,promise:null},l.promise=kn({text:t,fromLang:n,toLang:i,apiSetting:o,context:a,onStreamChunk:e=>{l.subscribers.forEach(t=>t(e))}}).finally(()=>{ID.delete(r)}),ID.set(r,l)),l.subscribers.add(s);const c=await l.promise;e&&u(c)}catch(l){if("AbortError"===(null===l||void 0===l?void 0:l.name))return;e&&p(l.message)}finally{e&&d(!1)}})(),()=>{var t;e=!1,null===(t=ID.get(r))||void 0===t||t.subscribers.delete(s)}},[t,n,i,f,a]),h?(0,yl.jsx)(Xv,{severity:"error",children:h}):c&&!l?(0,yl.jsx)(gy,{size:16}):l?(0,yl.jsxs)(Pb,{sx:{position:"relative",pr:8,"& > :first-of-type":{mt:0},"& > :last-child":{mb:0},"& h1, & h2, & h3, & h4, & h5, & h6":{fontSize:"1em",fontWeight:700,lineHeight:1.55,mt:1.25,mb:.75},"& p":{my:1},"& ul, & ol":{pl:3,my:1},"& blockquote":{m:0,pl:1.5,borderLeft:"3px solid",borderColor:"divider",color:"text.secondary"},"& code":{px:.5,py:.1,borderRadius:.5,bgcolor:"action.hover"}},children:[(0,yl.jsxs)(Pb,{sx:{position:"absolute",top:0,right:0,zIndex:1,display:"flex",alignItems:"center"},children:[(0,yl.jsx)(LE,{text:t,lang:r||n||"en-US"}),(0,yl.jsx)(yE,{text:l,title:s("copy")})]}),c&&(0,yl.jsx)(gy,{size:12,sx:{mr:1}}),(0,yl.jsx)(Sy,{component:"div",children:(0,yl.jsx)(PD,{children:l})})]}):null}function LD(e){let{text:t}=e;const{loading:n,error:r,data:i}=FA(An,t);return n?(0,yl.jsx)(gy,{size:16}):r?(0,yl.jsx)(Xv,{severity:"error",children:r}):i?(0,yl.jsx)(yl.Fragment,{children:i.map(e=>{let{k:t,v:n}=e;return(0,yl.jsxs)(Sy,{component:"div",children:[(0,yl.jsx)(Sy,{children:t}),(0,yl.jsx)(Sy,{component:"ul",style:{margin:"0"},children:(0,yl.jsx)(Sy,{component:"li",children:n})})]},t)})}):null}function OD(e){let{text:t}=e;const{loading:n,error:r,data:i}=FA(xn,t);return n?(0,yl.jsx)(gy,{size:16}):r?(0,yl.jsx)(Xv,{severity:"error",children:r}):i?(0,yl.jsx)(yl.Fragment,{children:i.map(e=>{let{entry:t,explain:n}=e;return(0,yl.jsxs)(Sy,{component:"div",children:[(0,yl.jsx)(Sy,{children:t}),(0,yl.jsx)(Sy,{component:"ul",style:{margin:"0"},children:(0,yl.jsx)(Sy,{component:"li",children:n})})]},t)})}):null}function ND(e){let{text:t,enSug:n}=e;const r={[o.SQ0]:(0,yl.jsx)(LD,{text:t}),[o.s1S]:(0,yl.jsx)(OD,{text:t})};return(0,yl.jsxs)(yA,{spacing:1,children:[(0,yl.jsx)(By,{}),r[n]||(0,yl.jsx)(Sy,{children:"Sug not support"})]})}const zD="https://www.zdic.net",jD=e=>(e||"").replace(/\s+/g," ").trim(),RD=e=>e?/^https?:\/\//.test(e)?e:e.startsWith("//")?"https:".concat(e):e.startsWith("/")?"".concat(zD).concat(e):e:"",MD=(e,t)=>{const n=Array.from(e.querySelectorAll(".meta-badge")).find(e=>jD(e.textContent)===t);return(e=>jD(Array.from((null===e||void 0===e?void 0:e.childNodes)||[]).filter(e=>e.nodeType===Node.TEXT_NODE).map(e=>e.textContent).join(""))||jD(null===e||void 0===e?void 0:e.textContent))(null===n||void 0===n?void 0:n.nextElementSibling)},BD=(e,t)=>(e=>Array.from(new Set(e.filter(Boolean))))(Array.from(e.querySelectorAll(t)).map(e=>{var t;return jD(e.getAttribute("title"))||jD(null===(t=e.querySelector("img"))||void 0===t?void 0:t.getAttribute("alt"))||jD(e.textContent)})).join(", "),WD=e=>{const t=[];return e.querySelectorAll(".jbjs>.jnr>p>.dicpy").forEach(e=>{var n,r;const i=jD(null===(n=e.childNodes[0])||void 0===n?void 0:n.nodeValue),o=e.querySelector(".audio_play_button"),a=[];let s=null===(r=e.parentElement)||void 0===r?void 0:r.nextElementSibling;for(;s;){var l;if("ol"===(null===(l=s.tagName)||void 0===l?void 0:l.toLowerCase())){s.querySelectorAll("li").forEach(e=>{a.push(jD(e.textContent))});break}if(s.querySelector(".dicpy"))break;s=s.nextElementSibling}t.push({pinyin:i,audioUrl:RD((null===o||void 0===o?void 0:o.getAttribute("data-src-mp3"))||(null===o||void 0===o?void 0:o.getAttribute("data-audio"))),definitions:a})}),t},UD=async e=>{var t,n,r,i,o,a;const s="".concat(zD,"/hans/").concat(encodeURIComponent(e)),l=await(0,z.Fd)(s,{credentials:"omit"},{useCache:!1});if(!l)return null;const u=(new DOMParser).parseFromString(rt.createHTML(l),"text/html"),c=jD(null===(t=u.querySelector(".char-meta"))||void 0===t?void 0:t.getAttribute("content"))||jD(null===(n=u.querySelector("#glyph-img"))||void 0===n?void 0:n.getAttribute("alt"))||jD(null===(r=u.querySelector(".dict-section__char"))||void 0===r?void 0:r.textContent)||jD(null===(i=u.querySelector(".h2_entry>.orth"))||void 0===i?void 0:i.textContent)||e,d=MD(u,"\u90e8\u9996")||jD(null===(o=u.querySelector("[class^='z_bs'] a"))||void 0===o?void 0:o.textContent),h=BD(u,"[class^='z_jfz'] a"),p=BD(u,".char-card__variants .variant-link")||BD(u,"[class^='z_yt'] a"),f=MD(u,"\u4e94\u7b14")||jD(null===(a=u.querySelector(".entry_title table.dsk:nth-child(2) tr:nth-child(2) > td.dsk_2_1:nth-child(1) > p"))||void 0===a?void 0:a.textContent),m=(e=>Array.from(e.querySelectorAll("#jbjs .jbjs-reading")).map(e=>{var t;const n=jD(null===(t=e.querySelector(".jbjs-reading__py"))||void 0===t?void 0:t.textContent),r=e.querySelector(".audio-btn"),i=Array.from(e.querySelectorAll(".jbjs-list li")).map(e=>jD(e.textContent)).filter(Boolean);return{pinyin:n,audioUrl:RD(null===r||void 0===r?void 0:r.getAttribute("data-audio")),definitions:i}}).filter(e=>e.pinyin||e.definitions.length>0))(u),{en:g,de:v,fr:y}=(e=>{const t={en:"",de:"",fr:""},n={"\u82f1\u8bed":"en","\u5fb7\u8bed":"de","\u6cd5\u8bed":"fr"};return Array.from(e.querySelectorAll(".enbox p, #jbjs p, #jbjs div")).forEach(e=>{const r=jD(e.textContent);Object.entries(n).forEach(e=>{let[n,i]=e;!t[i]&&r.startsWith(n)&&(t[i]=jD(r.slice(n.length)))})}),t})(u);return{text:c,bushou:d,fanti:h,yiti:p,wubi:f,results:m.length>0?m:WD(u),en:g,de:v,fr:y}};function HD(e){let{text:t}=e;const[n,r]=(0,fl.useState)(null),[i,o]=(0,fl.useState)(!1);return(0,fl.useEffect)(()=>{if(!t)return;let e=!0;return o(!0),UD(t).then(t=>{e&&(r(t),o(!1))}).catch(t=>{e&&(console.error("\u83b7\u53d6\u6c49\u5178\u6570\u636e\u5931\u8d25:",t),o(!1))}),()=>{e=!1}},[t]),i?(0,yl.jsx)(yA,{alignItems:"center",justifyContent:"center",py:2,children:(0,yl.jsx)(gy,{size:24})}):n?(0,yl.jsxs)(yA,{spacing:1,children:[(0,yl.jsx)(Sy,{variant:"subtitle1",style:{fontWeight:"bold"},children:n.text}),(0,yl.jsx)(By,{}),(n.bushou||n.wubi)&&(0,yl.jsxs)(Sy,{variant:"body2",color:"text.secondary",children:[n.bushou&&"[\u90e8\u9996]: ".concat(n.bushou," "),n.wubi&&"[\u4e94\u7b14]: ".concat(n.wubi)]}),(n.fanti||n.yiti)&&(0,yl.jsxs)(Sy,{variant:"body2",color:"text.secondary",children:[n.fanti&&"[\u7e41\u4f53]: ".concat(n.fanti," "),n.yiti&&"[\u5f02\u4f53]: ".concat(n.yiti)]}),n.results&&n.results.length>0&&(0,yl.jsx)(yA,{spacing:1,mt:1,children:n.results.map((e,t)=>(0,yl.jsxs)(Pb,{children:[(0,yl.jsxs)(yA,{direction:"row",alignItems:"center",spacing:1,children:[(0,yl.jsxs)(Sy,{variant:"body2",color:"primary",style:{fontWeight:"bold"},children:["[",e.pinyin,"]"]}),e.audioUrl&&(0,yl.jsx)(IE,{src:e.audioUrl})]}),(0,yl.jsx)(Pb,{component:"ol",sx:{pl:3,m:0,mt:.5},children:e.definitions&&e.definitions.map((e,t)=>(0,yl.jsx)(Sy,{component:"li",variant:"body2",sx:{mb:.5},children:e},t))})]},t))}),(n.en||n.de||n.fr)&&(0,yl.jsxs)(yA,{spacing:.5,mt:1,children:[n.en&&(0,yl.jsxs)(Sy,{variant:"body2",sx:{wordBreak:"break-word"},children:["[\u82f1]: ",n.en]}),n.de&&(0,yl.jsxs)(Sy,{variant:"body2",sx:{wordBreak:"break-word"},children:["[\u5fb7]: ",n.de]}),n.fr&&(0,yl.jsxs)(Sy,{variant:"body2",sx:{wordBreak:"break-word"},children:["[\u6cd5]: ",n.fr]})]})]}):(0,yl.jsxs)(yA,{spacing:1,children:[(0,yl.jsx)(Sy,{variant:"subtitle1",style:{fontWeight:"bold"},children:t}),(0,yl.jsx)(By,{}),(0,yl.jsx)(Sy,{variant:"body2",color:"text.secondary",children:"\u6682\u65e0\u5b57\u5178\u6570\u636e\u6216\u67e5\u8be2\u5931\u8d25"})]})}function VD(e){let{text:t,setText:n,translationText:r=t,apiSlugs:a,fromLang:s,toLang:u,toLang2:c,transApis:d,simpleStyle:h=!1,langDetector:p="-",enDict:f="-",enSug:m="-",aiDictApiSlug:g="-",aiDictPromptSlug:v=o.Qs8,prompts:y=[],selectionContext:b="",isPlaygound:A=!1}=e;const x=OA(),[w,k]=(0,fl.useState)(!1),[S,E]=(0,fl.useState)(t),[C,_]=(0,fl.useState)(a),[T,D]=(0,fl.useState)(!1),[P,I]=(0,fl.useState)(s),[F,L]=(0,fl.useState)(u),[O,N]=(0,fl.useState)(c),[z,j]=(0,fl.useState)(p),[R,M]=(0,fl.useState)(f),[B,W]=(0,fl.useState)(m),[U,H]=(0,fl.useState)("default"),V=(0,fl.useRef)(!1),[G,q]=(0,fl.useState)(""),[$,Y]=(0,fl.useState)(!1),X=(0,fl.useRef)(null);(0,fl.useEffect)(()=>{const e=X.current;if(!e)return;e.focus();const t=e.value.length;e.setSelectionRange(t,t)},[]),(0,fl.useEffect)(()=>{if((0,l.Ln)(t)){const e=new CustomEvent("kiss-add-word",{detail:{word:t}});document.dispatchEvent(e)}},[t]),(0,fl.useEffect)(()=>{T||_(a)},[a,T]),(0,fl.useEffect)(()=>{w||E(t)},[t,w]),(0,fl.useEffect)(()=>{t.trim()?(async()=>{try{Y(!0);const e=await Nc(t,z);e&&q(e)}catch(e){(0,K.h9)("tranbox: detect lang",e)}finally{Y(!1)}})():q("")},[t,z,q,Y]);const J=(0,fl.useMemo)(()=>"auto"===P&&F!==O&&"-"!==O&&G===F?O:F,[P,F,O,G]),Q=(0,fl.useMemo)(()=>d.filter(e=>!e.isDisabled).map(e=>({key:e.apiSlug,name:e.apiName||e.apiSlug})),[d]),Z=(0,fl.useMemo)(()=>(0,l.Ln)(t),[t]),ee=(0,fl.useMemo)(()=>A?6:4,[A]),te=(0,fl.useMemo)(()=>A?3:4,[A]),ne=(0,fl.useMemo)(()=>{const e=new Set(Q.map(e=>e.key));return C.filter(t=>e.has(t))},[C,Q]),re=Z&&o.q77.has(R)||(0,l.Mt)(t),ie=(0,fl.useMemo)(()=>{if(!g||"-"===g)return null;const e=d.find(e=>e.apiSlug===g);if(!e)return null;if(v===o.Qs8)return e.dictPrompt?e:null;const t=(0,o.Es_)(y,v);return t?(0,i.A)((0,i.A)({},e),{},{dictPromptSlug:t.slug,dictPrompt:t.systemPrompt,dictUserPrompt:t.userPrompt}):null},[g,v,y,d]),oe=Boolean((null===t||void 0===t?void 0:t.trim())&&ie);return(0,fl.useEffect)(()=>{V.current||(re?H("default"):oe&&H("ai"))},[t,re,oe]),(0,yl.jsxs)(yA,{spacing:h?1:2,children:[!h&&(0,yl.jsxs)(yl.Fragment,{children:[(0,yl.jsx)(Pb,{children:(0,yl.jsxs)(pE,{container:!0,spacing:2,columns:12,children:[(0,yl.jsx)(pE,{item:!0,xs:ee,md:te,children:(0,yl.jsx)(gS,{select:!0,SelectProps:{multiple:!0,MenuProps:{disablePortal:!A}},fullWidth:!0,size:"small",value:ne,name:"apiSlugs",label:x("translate_service_multiple"),onChange:e=>{D(!0),_(e.target.value)},children:Q.map(e=>{let{key:t,name:n}=e;return(0,yl.jsx)(tE,{value:t,children:n},t)})})}),(0,yl.jsx)(pE,{item:!0,xs:ee,md:te,children:(0,yl.jsx)(gS,{select:!0,SelectProps:{MenuProps:{disablePortal:!A}},fullWidth:!0,size:"small",name:"fromLang",value:P,label:x("from_lang"),onChange:e=>{I(e.target.value)},children:o.UF6.map(e=>{let[t,n]=e;return(0,yl.jsx)(tE,{value:t,children:n},t)})})}),(0,yl.jsx)(pE,{item:!0,xs:ee,md:te,children:(0,yl.jsx)(gS,{select:!0,SelectProps:{MenuProps:{disablePortal:!A}},fullWidth:!0,size:"small",name:"toLang",value:F,label:x("to_lang"),onChange:e=>{L(e.target.value)},children:o.$QD.map(e=>{let[t,n]=e;return(0,yl.jsx)(tE,{value:t,children:n},t)})})}),A&&(0,yl.jsxs)(yl.Fragment,{children:[(0,yl.jsx)(pE,{item:!0,xs:ee,md:te,children:(0,yl.jsx)(gS,{select:!0,SelectProps:{MenuProps:{disablePortal:!A}},fullWidth:!0,size:"small",name:"toLang2",value:O,label:x("to_lang2"),onChange:e=>{N(e.target.value)},children:o.$QD.map(e=>{let[t,n]=e;return(0,yl.jsx)(tE,{value:t,children:n},t)})})}),(0,yl.jsx)(pE,{item:!0,xs:ee,md:te,children:(0,yl.jsxs)(gS,{select:!0,SelectProps:{MenuProps:{disablePortal:!A}},fullWidth:!0,size:"small",name:"enDict",value:R,label:x("english_dict"),onChange:e=>{M(e.target.value)},children:[(0,yl.jsx)(tE,{value:"-",children:x("disable")}),o.F$3.map(e=>(0,yl.jsx)(tE,{value:e,children:e},e))]})}),(0,yl.jsx)(pE,{item:!0,xs:ee,md:te,children:(0,yl.jsxs)(gS,{select:!0,SelectProps:{MenuProps:{disablePortal:!A}},fullWidth:!0,size:"small",name:"enSug",value:B,label:x("english_suggest"),onChange:e=>{W(e.target.value)},children:[(0,yl.jsx)(tE,{value:"-",children:x("disable")}),o.O09.map(e=>(0,yl.jsx)(tE,{value:e,children:e},e))]})}),(0,yl.jsx)(pE,{item:!0,xs:ee,md:te,children:(0,yl.jsxs)(gS,{select:!0,SelectProps:{MenuProps:{disablePortal:!A}},fullWidth:!0,size:"small",name:"langDetector",value:z,label:x("detected_lang"),onChange:e=>{j(e.target.value)},children:[(0,yl.jsx)(tE,{value:"-",children:x("disable")}),o.HHP.map(e=>(0,yl.jsx)(tE,{value:e,children:e},e))]})}),(0,yl.jsx)(pE,{item:!0,xs:ee,md:te,children:(0,yl.jsx)(gS,{fullWidth:!0,size:"small",name:"deLang",value:G&&o.Z2L.get(G),label:x("detected_result"),disabled:!0,InputProps:{startAdornment:$?(0,yl.jsx)(gy,{size:16}):null}})})]})]})}),(0,yl.jsx)(Pb,{children:(0,yl.jsx)(gS,{size:"small",label:x("original_text"),fullWidth:!0,multiline:!0,inputRef:X,minRows:A?2:1,maxRows:10,sx:{"& textarea":{resize:"vertical"}},value:S,onChange:e=>{E(e.target.value)},onFocus:()=>{k(!0)},onBlur:()=>{k(!1),n(S.trim())},InputProps:{endAdornment:(0,yl.jsx)(yA,{direction:"row",sx:{position:"absolute",right:0,top:0},children:w?(0,yl.jsx)(zv,{size:"small",onClick:e=>{e.stopPropagation(),k(!1),n(S.trim())},title:x("submit"),children:(0,yl.jsx)(fE.A,{fontSize:"inherit"})}):t?(0,yl.jsx)(yE,{text:t,title:x("copy")}):(0,yl.jsx)(zv,{size:"small",onClick:async()=>{try{const e=await navigator.clipboard.readText();n(e.trim())}catch(e){}},title:x("paste"),children:(0,yl.jsx)(mE.A,{fontSize:"inherit"})})})}})})]}),ne.map(e=>(0,yl.jsx)(AE,{text:r,fromLang:P,toLang:J,simpleStyle:h,apiSlug:e,transApis:d},e)),(re||oe)&&(0,yl.jsx)(Pb,{children:oe?(0,yl.jsxs)(yl.Fragment,{children:[(0,yl.jsxs)(HS,{value:re?U:"ai",onChange:(e,t)=>{V.current=!0,H(t)},variant:"scrollable",allowScrollButtonsMobile:!0,sx:{minHeight:36,mb:1},children:[re&&(0,yl.jsx)($S,{value:"default",label:x("default_dict","\u9ed8\u8ba4\u8bcd\u5178"),sx:{minHeight:36,py:.5}}),(0,yl.jsx)($S,{value:"ai",label:x("ai_dict","AI\u8bcd\u5178"),sx:{minHeight:36,py:.5}})]}),re&&"default"===U&&(0,yl.jsxs)(yl.Fragment,{children:[Z&&o.q77.has(R)&&(0,yl.jsx)(zE,{text:t,enDict:R}),(0,l.Mt)(t)&&(0,yl.jsx)(HD,{text:t})]}),(!re||"ai"===U)&&(0,yl.jsx)(FD,{text:t,fromLang:P,speechLang:"auto"===P?G:P,toLang:J,apiSetting:ie,context:b&&b.includes(t)?b:""})]}):(0,yl.jsxs)(yl.Fragment,{children:[Z&&o.q77.has(R)&&(0,yl.jsx)(zE,{text:t,enDict:R}),(0,l.Mt)(t)&&(0,yl.jsx)(HD,{text:t})]})}),Z&&o.JIP.has(B)&&(0,yl.jsx)(ND,{text:t,enSug:B})]})}const GD="data:image/x-icon;base64,AAABAAMAMDAAAAEAIACoJQAANgAAACAgAAABACAAqBAAAN4lAAAQEAAAAQAgAGgEAACGNgAAKAAAADAAAABgAAAAAQAgAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAAAAAAAAADunB8Q7pwgd+6cINTunCD67pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD67pwg1O6cIHfunR8QAAAAAO6cHxDunCCW7pwg+e6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIPnunCCW7pwfEO6cIHfunCD47pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD47pwgd+6cINPunCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg0+6cIPnunCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg+e6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6bHv/umx3/7pse/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unB//7psd/+6bHf/umx7/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pse/+6bHf/umx7/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7p0i//GsRP/ytlv/8a9K/+6eJf/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cH//vnyj/8bFP//K2Wv/wqj7/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCH/8Kk9//KzVf/xrUb/7p4k/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx7/8rVY//3y4v/++/f//fbq//S+bP/umx7/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/2yIT//vjw//779//87db/8axF/+6bHv/unCD/7pwg/+6cIP/unCD/7pwg/+6bHv/xsEz//O7Z//769P/99en/9MBx/+6bHv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9smG//////////////////jVn//unB//7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6fJv/64r7//////////////v3/9L9v/+6aHP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHP/1xHn/////////////////+Nmq/+6dIf/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suK//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/++fKP/65MH///////////////7/9MF0/+6aHP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dut/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/++fJ//65MH//////////////v7/9MFz/+6aHP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwf/++gKf/75cX//////////////v7/9MFz/+6aHP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pod//GuSP/98+T///////////////7/9MF0/+6aHP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx7/8a1G//rkw////////////////////vz/9L5t/+6aHP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwf/+6cH//ytlz//O3W///////////////////////98eH/8axE/+6bHv/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/umx//7p4k//TCdv/99ej///////////////////////3x4P/zu2b/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jWpP/unCD/7pwg/+6bHv/voSz/98+S//769P//////////////////////++jK//KxUP/umx7/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpf/unB//7psd//CnOf/5267///37///////////////////9+//53K//8Kg7/+6bHf/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////vmx//wpjj/8rFQ//vmx////////////////////////vrz//fOkf/voSz/7pse/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ///////////////////9+v/87df//fXo///////////////////////99Ob/9MFz/+6dI//umx//7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////////////////////////////////////zr0v/ytVj/7psf/+6cH//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ////////////////////////////////////////////++fJ//GrQv/umx3/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ////////////////////////////////////////////9cN3/+6aG//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ////////////////////////////////////////////+Nai/+6eJf/unB//7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ/////////////////////////////////////////////vv2//bKiP/uniT/7pwf/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ///////////////////+/f/+9+3///z5//////////////////769f/2yYX/7p0j/+6cH//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////zr0v/xsE7/9siE//748P/////////////////++vT/9siD/+6dI//unB//7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jYp//umx7/7pwh//XFfP/++fH//////////////////vrz//XHgP/unSL/7pwf/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jWpP/unCD/7pwf/+6dIv/1xn3//vny//////////////////758v/1xn7/7p0i/+6cH//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cH//unSL/9cZ///758//////////////////++fH/9cV7/+6dIv/unB//7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/unB//7p0j//XHgf/++vP//////////////////vjw//XDef/unSH/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwf/+6dI//1yIP//vr0//////////////////747//0wXP/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHf/1xn7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwg/+6cH//uniP/9smF//769f/////////////////98d//8KpB/+6bHv/unCD/7pwg/+6cIP/unCD/7pwg/+6aHP/1xX7/////////////////+dqt/+6dIv/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unB//7p4k//fOkf///vz//////////////fz/9L1q/+6aHP/unB//7psf/+6bH//umx//7pse/+6aG//2yof/////////////////+d60/+6dIv/umx7/7psf/+6bH//umx//7pwf/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pse//CnOP/879r//////////////v7/9MFz/+6aHP/vnyf/8KY2//CmN//wpjf/8KY3//KxT//76Mv//////////////////fPk//O6ZP/wpjj/8KY3//CmN//wpjb/76Er/+6cH//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suJ//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwf/++gKP/65MP//////////////v7/9MBy/++kMf/5267//PDe//3x3//88d///fHf//737v////7///////////////////////768//98uH//PHf//3x3//88d//+uTB//GuSP/umx7/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9suK//////////////////jXpP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/++fKP/65MH///////////////7/9MBw//O4X////fr///////////////////////////////////////////////////////////////////////////////////////bJhv/umx3/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx3/9smF//////////////////jUnv/unB//7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6fJv/64r3//////////////v3/9L1q//O6Y////fv///////////////////////////////////////////////////////////////////////////////////////bLif/umx3/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx7/8rNU//zv3P/++vP//fTl//O7Z//umx7/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cH//1xn7//fbr//768//76tD/8KpA//CoO//75sj//vjw//748P/++PD//vjw//748P/++PD//vjw//748P/++PD//vjw//748P/++PD//vjw//748P/++PD//O7a//KzVf/umx7/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwh//CpPv/ys1P/8axD/+6dI//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unib/8a5I//KyUv/wpzn/7pwg/+6cIP/wpTT/8a9M//GwTf/xsE3/8bBN//GwTf/xsE3/8bBN//GwTf/xsE3/8bBN//GwTf/xsE3/8bBN//GwTf/xsE3/8Kg7/+6cIf/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6bHv/umx3/7pse/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pse/+6bHf/umx7/7pwg/+6cIP/umx//7psd/+6bHf/umx3/7psd/+6bHf/umx3/7psd/+6bHf/umx3/7psd/+6bHf/umx3/7psd/+6bHf/umx3/7pse/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIPnunCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg+e6cINTunCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg1O6cIHfunCD47pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD47pwgd+6cHxDunCCW7pwg+e6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIPnunCCW7pwfEAAAAADunB8Q7pwgd+6cINTunCD67pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD67pwg1O6cIHfunB8QAAAAAOAAAAAABwAAgAAAAAABAACAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAQAAgAAAAAABAADgAAAAAAcAACgAAAAgAAAAQAAAAAEAIAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAADunB8S7pwgie6cIOvunCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIOvunCCJ7pwgEu6cIInunCD57pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIPnunCCJ7pwg6u6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIOrunCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cH//uniX/7p8m/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cH//uniT/758n/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6dIf/vnyf/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx7/8KpA//netf/64bz/8a5J/+6bHv/unCD/7pwg/+6cIP/umx//76Qz//jZqf/65MP/87Zc/+6bHv/unCD/7pwg/+6cIP/uniX/9syL//vlxP/0wnb/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHP/zvGn///78///////1xHr/7poc/+6cIP/unCD/7pwg/+6bHf/yslP//vr0///////30pr/7pse/+6cIP/unCD/7psf/++kM//87tr///////rjwP/unyb/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7poc//S+bP///v3///////XFff/umhz/7pwg/+6cIP/unCD/7psd//KzVP/++vX///////jUnf/umx7/7pwg/+6cIP/umx//8KU1//zv3P//////+uTC/++fJ//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umhz/9L1s///+/f//////9cV9/+6aHP/unCD/7pwg/+6cIP/umhv/87de//78+P//////+NSd/+6bHv/unCD/7pwg/+6bH//wpTX//O/c///////65ML/758n/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHP/0vWz///79///////1xX3/7poc/+6cIP/unCD/7psd//CmN//637j////////////30pn/7pse/+6cIP/unCD/7psf//ClNf/879z///////rkwv/vnyf/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7poc//S9bP///v3///////XFff/umhz/7pwg/+6bHv/xr0r/++bG/////////////vft//O5Yf/umx3/7pwg/+6cIP/umx//8KU1//zv3P//////+uTC/++fJ//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umhz/9L1s///+/f//////9cV8/+6aHP/unCD/87lh//zv3P////////////3x3//zvGf/7p0h/+6cIP/unCD/7pwg/+6bH//wpTX//O/c///////65ML/758n/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHP/0vWz///79///////2yIP/7p0i//XFfP/+9uz////////////758n/8bBN/+6bHv/unCD/7pwg/+6cIP/unCD/7psf//ClNf/879z///////rkwv/vnyf/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7poc//S9bP///v3///////zt1v/53rT//vv1/////////fv/+dut//CnOf/umx3/7pwg/+6cIP/unCD/7pwg/+6cIP/umx//8KU1//zv3P//////+uTC/++fJ//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umhz/9L1s///+/f///////////////////////vr1//bOkP/voSv/7pse/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6bH//wpTX//O/c///////65ML/758n/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHP/0vWz///79///////////////////////526//7p0i/+6bH//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7psf//ClNf/879z///////rkwv/vnyf/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7poc//S9bP///v3///////////////////////voy//wpzj/7pse/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umx//8KU1//zv3P//////+uTC/++fJ//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umhz/9L1s///+/f///////vv3//768/////////////rguv/wpjb/7pse/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6bH//wpTX//O/c///////65ML/758n/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHP/0vWz///79///////41J7/87hf//zv2/////////////rft//wpTX/7pse/+6cIP/unCD/7pwg/+6cIP/unCD/7psf//ClNf/879z///////rkwv/vnyf/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7poc//S9bP///v3///////XFfP/tmRn/8rNV//zw3P////////////netf/wpTT/7pse/+6cIP/unCD/7pwg/+6cIP/umx//8KU1//zv3P//////+uTC/++fJ//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umhz/9L1s///+/f//////9cV9/+6aHP/umx7/8rRW//zw3v/////////+//nds//vpDP/7pse/+6cIP/unCD/7pwg/+6bH//wpTX//O/c///////65ML/758n/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6aHP/0vWz///79///////1xX3/7poc/+6cIP/umx7/8rVY//3x3//////////+//ncsP/vozD/7pwf/+6cIP/unCD/7psf//ClNf/879z///////rkwv/vnyf/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7poc//S9bP///v3///////XFff/umhz/7pwg/+6cIP/umx7/8rVZ//3y4v////////79//XEev/umx3/7psf/+6bHv/umx3/76Qz//zw3P//////+uTC/+6eJf/umx7/7pse/+6cH//unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/umhz/9L1s///+/f//////9cV9/+6aHP/unCD/7pwg/+6cIP/umx3/9cV7///+/f//////99Ob/+6cIf/wpTT/8Kc4//CmN//zu2b//vjv///////88N7/8rJT//CmN//wpzj/76Mx/+6cIf/unCD/7pwg/+6cIP/unCD/7pwg/+6aHP/0vmz///79///////1xX3/7poc/+6cIP/unCD/7pwg/+6bHf/ytFX//vv1///////30pv/87tn//zv2//98uH//fLh//758f///////////////v/+9+3//fHh//3y4f/76tD/8bBM/+6bHv/unCD/7pwg/+6cIP/unCD/7poc//O8af///vz///////XEef/umhz/7pwg/+6cIP/unCD/7psd//KyUv/++vP///////fRlv/3zpH////////////////////////////////////////////////////////+/P/0vWv/7poc/+6cIP/unCD/7pwg/+6cIP/umx7/8Kk+//ncsP/537b/8a1H/+6bHv/unCD/7pwg/+6cIP/unB//76Qx//jWo//64r7/8rRW//KyUv/537f/+uO///riv//64r//+uK///riv//64r//+uK///riv//647//+dqs//CpPv/umx7/7pwg/+6cIP/unCD/7pwg/+6cIP/unB//7p4k/+6eJP/unB//7pwg/+6cIP/unCD/7pwg/+6cIP/unB//7p0j/+6eJf/unB//7pwf/+6eJP/unib/7p4l/+6eJf/uniX/7p4l/+6eJf/uniX/7p4l/+6eJv/unSP/7pwf/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg6u6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIOrunCCJ7pwg+e6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD57pwgie6cIBLunCCJ7pwg6+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg6+6cIInunB8SgAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAEoAAAAEAAAACAAAAABACAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAA7pwgnu6cIPjunCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD47pwgnu6cIPfunB//7psd/+6cH//unCD/7pwg/+6bHv/umx3/7pwg/+6cIP/umx7/7psd/+6cIP/unCD/7pwg/+6cIPfunB//76Mv//S9a//vpDH/7pwf/+6cH//xsE7/87dc/+6cIf/umx//8axD//O5Yf/unSP/7pwg/+6cIP/unCD/7psd//KxT//99en/8rRX/+6bHf/umx7/+NWh//vmxv/vnyf/7poc//bLiv/87NX/76Iu/+6cH//unCD/7pwg/+6bHf/yslH//fbr//K1Wf/umhr/76Iu//rkw//75sb/7p8n/+6aHP/2zIz//O3X/++jL//unB//7pwg/+6cIP/umx3/8rJR//326//ytFX/8Kc4//netv/+9+3/9cN4/+6cIP/umh3/9syM//zt1//voy//7pwf/+6cIP/unCD/7psd//KyUf/++O//99Oc//voy//98eD/87tl/+6cIf/unCD/7psd//bMjP/87df/76Mv/+6cH//unCD/7pwg/+6bHf/ysVD//vrz///////98uL/8bBO/+6bHf/unCD/7pwg/+6aHf/2zIz//O3X/++jL//unB//7pwg/+6cIP/umx3/8rFQ//768//++/b//fXo//O3Xf/umx7/7pwg/+6cIP/umh3/9syM//zt1//voy//7pwf/+6cIP/unCD/7psd//KyUf/+9+3/9cV9//rguf/98+P/8rZb/+6bHv/unCD/7pod//bMjP/87df/76Mv/+6cH//unCD/7pwg/+6bHf/yslH//fbr//K0Vv/vpTT/+uK+//3y4f/ytFf/7pse/+6aG//2y4v//O3X/++iLf/umx7/7pwg/+6cIP/umx3/8rJR//326//ytVn/7pka//CnOf/869L/+uG7/++kM//wpjj/+NWh//3y4f/xr0z/8KU1/+6dI//unCD/7psd//KxT//99en/8rRX/+6bHf/umx3/+Nai//vnyv/52ar//fTm//779f///v3//fXp//zs0//xrET/7psd/+6cH//voi7/87xo/++jMf/unB//7pwf//GvTP/ytlv/8rZZ//XEev/1w3j/9cN3//XEef/0v3D/76Iu/+6cH//unCD37pwf/+6bHf/unB//7pwg/+6cIP/umx7/7psd/+6bHf/umhz/7poc/+6aHP/umhz/7poc/+6cH//unCD37pwgnu6cIPjunCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD/7pwg/+6cIP/unCD47pwgngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=",KD=e=>{let{size:t=16,className:n="",style:r={},onClick:o}=e;return(0,yl.jsx)("img",{src:GD,alt:"Logo",className:n,draggable:!1,onClick:o,onDragStart:e=>e.preventDefault(),style:(0,i.A)({width:"".concat(t,"px"),height:"".concat(t,"px"),objectFit:"contain",display:"block"},r)})};function qD(e){let{setShowBox:t,simpleStyle:n,setSimpleStyle:r,hideClickAway:o,setHideClickAway:a,followSelection:s,setFollowSelection:l}=e;const u=Ib(),c=OA(),{darkMode:d,toggleDarkMode:h}=wb(),p=u.palette.text.secondary,f=(0,fl.useCallback)(()=>{(0,M.Ru)(j.Gt)},[]),m=e=>e.currentTarget.blur(),g={borderRadius:"6px",padding:"5px",minWidth:"30px",minHeight:"30px",transition:"all 0.2s ease",backgroundColor:"transparent","& svg":{color:p}};return(0,yl.jsx)(Pb,{onMouseUp:e=>e.stopPropagation(),onTouchEnd:e=>e.stopPropagation(),sx:{backgroundColor:u.palette.background.default,padding:"4px 8px 4px 12px",height:"36px",display:"flex",alignItems:"center",minHeight:"auto"},children:(0,yl.jsxs)(yA,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:1,sx:{width:"100%",height:"100%",minWidth:0},children:[(0,yl.jsxs)(yA,{direction:"row",alignItems:"center",spacing:1,sx:{minWidth:0,flex:"1 1 auto",overflow:"hidden"},children:[(0,yl.jsx)(Pb,{sx:{width:18,height:18,flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",borderRadius:"4px",backgroundColor:u.palette.background.paper,border:"1px solid ".concat(u.palette.divider),transition:"all 0.2s ease","&:hover":{boxShadow:u.shadows[2],transform:"translateY(-1px)",backgroundColor:u.palette.action.hover}},children:(0,yl.jsx)(KD,{size:16})}),(0,yl.jsx)(Sy,{variant:"caption",sx:{minWidth:0,fontWeight:500,fontSize:"12px",color:u.palette.text.secondary,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:"".concat("KISS Translator"," v").concat("2.0.29")})]}),(0,yl.jsxs)(yA,{direction:"row",alignItems:"center",spacing:.5,sx:{flexShrink:0},children:[R.aQ&&(0,yl.jsx)(zv,{size:"small",title:c("open_separate_window"),onClick:f,onMouseLeave:m,sx:(0,i.A)((0,i.A)({},g),{},{"&:hover":{backgroundColor:u.palette.primary.light+"20",transform:"scale(1.05)",boxShadow:u.shadows[2],"& svg":{color:u.palette.primary.main}},"&:active":{transform:"scale(0.95)",backgroundColor:u.palette.primary.light+"40"}}),children:(0,yl.jsx)(xA.A,{sx:{width:16,height:16}})}),(0,yl.jsx)(zv,{size:"small",title:c("btn_tip_click_away"),onMouseLeave:m,onClick:()=>a(e=>!e),sx:(0,i.A)((0,i.A)({},g),{},{"&:hover":{backgroundColor:u.palette.success.light+"20",transform:"scale(1.05)",boxShadow:u.shadows[2],"& svg":{color:u.palette.success.main}},"&:active":{transform:"scale(0.95)",backgroundColor:u.palette.success.light+"40"}}),children:o?(0,yl.jsx)(EA.A,{sx:{width:16,height:16,color:u.palette.success.main}}):(0,yl.jsx)(SA.A,{sx:{width:16,height:16}})}),(0,yl.jsx)(zv,{size:"small",title:c("btn_tip_follow_selection"),onMouseLeave:m,onClick:()=>l(e=>!e),sx:(0,i.A)((0,i.A)({},g),{},{"&:hover":{backgroundColor:u.palette.warning.light+"20",transform:"scale(1.05)",boxShadow:u.shadows[2],"& svg":{color:u.palette.warning.main}},"&:active":{transform:"scale(0.95)",backgroundColor:u.palette.warning.light+"40"}}),children:s?(0,yl.jsx)(kA.A,{sx:{width:16,height:16,color:u.palette.warning.main}}):(0,yl.jsx)(wA.A,{sx:{width:16,height:16}})}),(0,yl.jsx)(zv,{size:"small",title:c("btn_tip_simple_style"),onMouseLeave:m,onClick:()=>r(e=>!e),sx:(0,i.A)((0,i.A)({},g),{},{"&:hover":{backgroundColor:u.palette.info.light+"20",transform:"scale(1.05)",boxShadow:u.shadows[2],"& svg":{color:u.palette.info.main}},"&:active":{transform:"scale(0.95)",backgroundColor:u.palette.info.light+"40"}}),children:n?(0,yl.jsx)(AA.A,{sx:{width:16,height:16,color:u.palette.info.main}}):(0,yl.jsx)(bA.A,{sx:{width:16,height:16}})}),(0,yl.jsx)(zv,{size:"small",title:c("btn_tip_dark_mode"),onMouseLeave:m,onClick:h,sx:(0,i.A)((0,i.A)({},g),{},{"&:hover":{backgroundColor:u.palette.warning.light+"20",transform:"scale(1.05)",boxShadow:u.shadows[2],"& svg":{color:u.palette.warning.main}},"&:active":{transform:"scale(0.95)",backgroundColor:u.palette.warning.light+"40"}}),children:"dark"===d?(0,yl.jsx)(TA.A,{sx:{width:16,height:16,color:u.palette.warning.main}}):"auto"===d?(0,yl.jsx)(DA.A,{sx:{width:16,height:16,color:u.palette.info.main}}):(0,yl.jsx)(_A.A,{sx:{width:16,height:16}})}),(0,yl.jsx)(zv,{size:"small",title:c("close"),onMouseLeave:m,onClick:()=>t(!1),sx:(0,i.A)((0,i.A)({},g),{},{"&:hover":{backgroundColor:u.palette.error.light+"20",transform:"scale(1.05)",boxShadow:u.shadows[2],"& svg":{color:u.palette.error.main}},"&:active":{transform:"scale(0.95)",backgroundColor:u.palette.error.light+"40"}}),children:(0,yl.jsx)(CA.A,{sx:{width:16,height:16}})})]})]})})}function $D(e){let{simpleStyle:t,text:n,setText:r,apiSlugs:i,fromLang:o,toLang:a,toLang2:s,transApis:l,langDetector:u,enDict:c,enSug:d,aiDictApiSlug:h,aiDictPromptSlug:p,prompts:f,selectionContext:m}=e;const g=Ib(),v="dark"===g.palette.mode,y="dark"===g.palette.mode?"#1f1f23":g.palette.background.paper,b="dark"===g.palette.mode?jb(g.palette.text.primary,.28):jb(g.palette.text.primary,.24);return(0,yl.jsx)(Pb,{sx:{p:t?1:2,backgroundColor:g.palette.background.paper,"&::-webkit-scrollbar":{width:10,height:10},"&::-webkit-scrollbar-track":{background:y},"&::-webkit-scrollbar-thumb":{backgroundColor:b,borderRadius:8,border:"2px solid ".concat(g.palette.background.paper)},"&::-webkit-scrollbar-thumb:hover":{backgroundColor:jb(g.palette.text.primary,.36)},scrollbarWidth:"thin",scrollbarColor:"".concat(b," ").concat(y),color:v?"rgba(255,255,255,0.82)":g.palette.text.primary,lineHeight:1.55},children:(0,yl.jsx)(VD,{text:n,setText:r,apiSlugs:i,fromLang:o,toLang:a,toLang2:s,transApis:l,prompts:f,simpleStyle:t,langDetector:u,enDict:c,enSug:d,aiDictApiSlug:h,aiDictPromptSlug:p,selectionContext:m})})}function YD(e){const[t,n]=(0,fl.useState)(!1),r=e.simpleStyle,i=e.setSimpleStyle,o=e.hideClickAway,a=e.setHideClickAway,s=e.followSelection,u=e.setFollowSelection;let c=e.tranboxSetting.apiSlugs;return e.tranboxSetting.singleWordNoTrans&&(0,l.Ln)(e.text)&&(c=[]),(0,yl.jsx)(Hy,{context:"tranbox",children:(0,yl.jsx)(kb,{styles:e.extStyles,children:e.showBox&&(0,yl.jsx)(qb,{position:e.boxPosition,size:e.boxSize,setSize:e.setBoxSize,setPosition:e.setBoxPosition,autoHeight:e.tranboxSetting.autoHeight,header:(0,yl.jsx)(qD,{setShowBox:e.setShowBox,simpleStyle:r,setSimpleStyle:i,hideClickAway:o,setHideClickAway:a,followSelection:s,setFollowSelection:u,mouseHover:t}),onClick:e=>e.stopPropagation(),onMouseEnter:()=>n(!0),onMouseLeave:()=>n(!1),children:(0,yl.jsx)($D,{simpleStyle:r,text:e.text,setText:e.setText,apiSlugs:c,fromLang:e.tranboxSetting.fromLang,toLang:e.tranboxSetting.toLang,toLang2:e.tranboxSetting.toLang2,transApis:e.transApis,prompts:e.prompts,langDetector:e.langDetector,enDict:e.tranboxSetting.enDict,enSug:e.tranboxSetting.enSug,aiDictApiSlug:e.tranboxSetting.aiDictApiSlug,aiDictPromptSlug:e.tranboxSetting.aiDictPromptSlug,selectionContext:e.selectionContext})})})})}function XD(e,t){const n=Math.min(e.w,Bb()),r=Math.min(e.h,Wb());return{size:{w:n,h:r},position:{x:(0,l.NS)(t.x,0,Ub(n)),y:(0,l.NS)(t.y,0,Hb(r))}}}const JD=new Map,QD=/[\u4e00-\u9fff]/g,ZD=/[\u3040-\u309f]/g,eP=/[\u30a0-\u30ff]/g,tP=/[\uac00-\ud7af\u1100-\u11ff\u3130-\u318f]/g,nP=/[\u0400-\u04ff]/g,rP=/[\u0370-\u03ff]/g,iP=/[a-zA-Z]/g,oP=new Set("\u56fd\u534e\u95e8\u8f66\u4e1c\u53d1\u98ce\u89c1\u673a\u4f53\u4e3a\u8fd8\u8fd9\u5404\u4e2a\u6837\u65f6\u7ecf\u957f\u8fd0\u8fb9\u5f00\u6765\u540e\u522b\u95ee\u5e94\u5f53\u8bbe\u8fc7\u5bf9\u7ed9\u73b0\u8fdb\u4eec\u52a8\u4e24\u4ece\u8fdc\u4e49\u5b66\u8bdd\u8c01\u7f51\u8fbe\u95ee\u9898\u5355\u6570\u4e1a\u519c\u4ea7\u8bf4\u8ba4\u95e8".split("")),aP=new Set("\u570b\u83ef\u9580\u8eca\u6771\u767c\u98a8\u898b\u6a5f\u9ad4\u70ba\u9084\u9019\u5404\u500b\u6a23\u6642\u7d93\u9577\u904b\u908a\u958b\u4f86\u5f8c\u5225\u554f\u61c9\u7576\u8a2d\u904e\u5c0d\u7d66\u73fe\u9032\u5011\u52d5\u5169\u5f9e\u9060\u7fa9\u5b78\u8a71\u8ab0\u7db2\u9054\u554f\u984c\u55ae\u6578\u696d\u8fb2\u7522\u8aaa\u8a8d\u9580".split(""));function sP(e){const t=t=>(e.match(t)||[]).length,n=t(QD),r=t(ZD),i=t(eP),o=t(tP),a=t(nP),s=t(rP),l=t(iP);return r>0||i>0?"ja":o>0?"ko":a>0?"ru":s>0?"el":n>0?function(e){let t=0,n=0;for(const r of e)aP.has(r)?t++:oP.has(r)&&n++;return t>n?"zh-TW":"zh-CN"}(e):function(e,t){if(!t)return"";const n=e.toLowerCase(),r=e=>(n.match(e)||[]).length,i={en:0,de:0,fr:0,es:0};i.en+=r(/\b(the|and|is|of|to|in|that|it|you|for|with|on)\b/g),i.de+=r(/\b(der|die|das|und|ist|nicht|ein|eine|mit|auf|ich)\b/g)+r(/[\xe4\xf6\xfc\xdf]/g),i.fr+=r(/\b(le|la|les|de|des|et|un|une|est|que|pour)\b/g)+r(/[\xe7\u0153\xe0\xe2\xea\xee\xf4\xfb\xeb\xef\xfc]/g),i.es+=r(/\b(el|la|los|las|de|que|y|no|en|un|por|es)\b/g)+r(/[\xf1\xbf\xa1]/g);let o="",a=0;for(const[s,l]of Object.entries(i))l>a&&(o=s,a=l);return a>=2?o:""}(e,l)||""}const lP=async e=>{if("string"!==typeof e||!e.trim())return"";const t=e.length<=300?e:e.slice(0,300);if(JD.has(t))return JD.get(t);const n=e.slice(0,300);let r=sP(n);if(!r)try{var i,a,s,l;const e=await Promise.race([Promise.resolve(null===Kt.T||void 0===Kt.T||null===(i=Kt.T.i18n)||void 0===i||null===(a=i.detectLanguage)||void 0===a?void 0:a.call(i,n)),new Promise((e,t)=>setTimeout(()=>t(new Error("detect timeout")),100))]),t=null===e||void 0===e||null===(s=e.languages)||void 0===s||null===(l=s[0])||void 0===l?void 0:l.language;null!==e&&void 0!==e&&e.isReliable&&t&&o.Z2L.has(t)?r=t:null!==t&&void 0!==t&&t.startsWith("zh")&&(r="zh-TW"===t?"zh-TW":"zh-CN")}catch(u){(0,K.h9)("detect lang fast",u)}return function(e,t){if(JD.size>=100){const e=JD.keys().next().value;JD.delete(e)}JD.set(e,t)}(t,r||""),r||""};const uP=Pa?32:20,cP=Pa?16:12;function dP(e){var t,n;const r=(null===e||void 0===e||null===(t=e.changedTouches)||void 0===t?void 0:t[0])||(null===e||void 0===e||null===(n=e.touches)||void 0===n?void 0:n[0]);return"number"===typeof(null===r||void 0===r?void 0:r.pageX)&&"number"===typeof(null===r||void 0===r?void 0:r.pageY)?{x:r.pageX,y:r.pageY}:"number"===typeof(null===e||void 0===e?void 0:e.pageX)&&"number"===typeof(null===e||void 0===e?void 0:e.pageY)?{x:e.pageX,y:e.pageY}:null}function hP(e,t,n){const r=Math.max(t,n);return Math.min(Math.max(e,t),r)}function pP(e){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;if(!e)return null;const n=Number(arguments.length>1&&void 0!==arguments[1]?arguments[1]:0)||0,r=Number(t)||0,i=window.scrollX,o=window.scrollY,a=i+window.innerWidth,s=o+window.innerHeight;let l=e.x+cP+n,u=e.y+cP+r;l+uP>a&&(l=e.x-cP-uP+n),u+uP>s&&(u=e.y-cP-uP+r);return{x:hP(l,i,a-uP)-n,y:hP(u,o,s-uP)-r}}function fP(e){return"function"===typeof(null===e||void 0===e?void 0:e.composedPath)?e.composedPath():[]}function mP(e){var t;return(null===(t=fP(e))||void 0===t?void 0:t[0])||(null===e||void 0===e?void 0:e.target)}function gP(e){var t;const n=mP(e),r=null===n||void 0===n||null===(t=n.getRootNode)||void 0===t?void 0:t.call(n);return null!==r&&void 0!==r&&r.getSelection?r:document}function vP(e){return fP(e).some(e=>{var t,n;return(null===e||void 0===e?void 0:e.id)===o.Reo.boxID||(null===e||void 0===e||null===(t=e.classList)||void 0===t||null===(n=t.contains)||void 0===n?void 0:n.call(t,"".concat(o.Reo.boxID,"_wrapper")))})}function yP(e){return fP(e).some(e=>function(e){var t;return Boolean(null===e||void 0===e||null===(t=e.closest)||void 0===t?void 0:t.call(e,'button, input, textarea, select, [role="tab"], [role="button"]'))}(e))}function bP(e){return!!e&&Boolean(e.width||e.height||e.left||e.right||e.top||e.bottom)}function AP(e,t,n,r){const i=(e.left+e.right)/2+t,o=e.bottom+n,a=Hb(r.h),s=o+Mb(r.h)>window.innerHeight?e.top-Mb(r.h)-n:o;return{x:(0,l.NS)(i,0,Ub(r.w)),y:(0,l.NS)(s,0,a)}}function xP(e){var t;const n=(null===e||void 0===e?void 0:e.nodeType)===Node.ELEMENT_NODE?e:null===e||void 0===e?void 0:e.parentElement,r=null===n||void 0===n||null===(t=n.closest)||void 0===t?void 0:t.call(n,"p, li, blockquote, article, section, main, div");return((null===r||void 0===r?void 0:r.textContent)||(null===n||void 0===n?void 0:n.textContent)||"").replace(/\s+/g," ").trim().slice(0,1e3)}function wP(e){try{var t;if(!e||0===e.rangeCount)return"";const n=e.getRangeAt(0).commonAncestorContainer,r=n.nodeType===Node.ELEMENT_NODE?n:n.parentElement,i=null===r||void 0===r||null===(t=r.closest)||void 0===t?void 0:t.call(r,"p, li, blockquote, article, section, main, div");return i?((null===i||void 0===i?void 0:i.textContent)||(null===r||void 0===r?void 0:r.textContent)||"").replace(/\s+/g," ").trim().slice(0,1e3):""}catch(n){return""}}function kP(e){let{tranboxSetting:t,followSelection:n,boxOffsetX:r,boxOffsetY:i,boxSize:a,setBoxPosition:s,hideClickAway:u}=e;const{hideTranBtn:c=!1,triggerMode:d,btnPositionMode:h=o.vcx,btnOffsetX:p=0,btnOffsetY:f=0,tranboxInteractMode:m="-",skipLangs:g=[]}=t,[v,y]=(0,fl.useState)(!1),[b,A]=(0,fl.useState)(!1),[x,w]=(0,fl.useState)(""),[k,S]=(0,fl.useState)(""),[E,C]=(0,fl.useState)(""),[_,T]=(0,fl.useState)({x:0,y:0}),D=(0,fl.useRef)(document),P=(0,fl.useRef)(null),I=(0,fl.useCallback)(()=>{var e,t;return(null===(e=D.current)||void 0===e||null===(t=e.getSelection)||void 0===t?void 0:t.call(e))||window.getSelection()},[]);!function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>window.getSelection();(0,fl.useEffect)(()=>{if(!e)return;const r=e=>{2===e.button&&t(!1)},i=()=>{const e=n();e&&!e.isCollapsed||t(!1)};return window.addEventListener("mousedown",r,!0),document.addEventListener("selectionchange",i),()=>{window.removeEventListener("mousedown",r,!0),document.removeEventListener("selectionchange",i)}},[e,t,n])}(b,A,I);const F=(0,fl.useCallback)(e=>{null!==e&&void 0!==e&&e.text&&(P.current=e,w(e.text),C(e.context),A(!1),S(e.text),y(!0))},[]),L=(0,fl.useCallback)(e=>{const t=P.current,n=e&&(null===t||void 0===t?void 0:t.text)!==e?{text:e,context:"",source:"manual"}:t||{text:x,context:"",source:"manual"};F(n)},[F,x]),O=(0,fl.useCallback)((e,t,n,r)=>{var i;const o=(null===e||void 0===e||null===(i=e.toString())||void 0===i?void 0:i.trim())||"";if(!o)return null;const a=function(e){try{if(!e||0===e.rangeCount)return null;const t=e.getRangeAt(0),n=t.getBoundingClientRect(),r=t.getClientRects();return{rect:n,lastRect:r.length>0?r[r.length-1]:n}}catch(t){return null}}(e),s=bP(null===a||void 0===a?void 0:a.rect)?a.rect:null,l=bP(null===a||void 0===a?void 0:a.lastRect)?a.lastRect:s;return{text:o,context:wP(e)||xP(r),pointerPosition:t,source:n,rect:s,lastRect:l}},[]),N=(0,fl.useCallback)(async e=>{if((e=>!("string"!==typeof e||!e.trim())&&/^[\d\s.,\uff0c\u3001\-/:\uff1a%]+$/.test(e.trim())&&/\d/.test(e))(e))return!0;if("string"!==typeof e||!e.trim())return!1;const t=sP(e);if(e.length<4&&!t)return!1;const n=t||await lP(e);if(!n)return!1;const r=(e=>"string"===typeof e&&e?/^zh(-|$)/i.test(e)?"zh":e:"")(n);return!!g.includes(r)},[g]),z=(0,fl.useCallback)(async e=>{if(null===e||void 0===e||!e.text)return void A(!1);if(P.current=e,w(e.text),await N(e.text))return A(!1),void y(!1);if("panel"===e.source&&"-"!==m)return;if(e.rect&&n&&s(AP(e.rect,r,i,a)),d===o.TPN||d===o.VhI)return void F(e);if(c)return void A(!1);const t=h===o.uxg&&e.pointerPosition?pP(e.pointerPosition,p,f):((l=e.lastRect)?{x:l.right+window.scrollX,y:l.bottom+window.scrollY}:null)||pP(e.pointerPosition,p,f);var l;t?(A(!0),T(t)):A(!1)},[c,d,m,h,p,f,n,r,i,F,a,s,N]),j=(0,fl.useCallback)(async e=>{var t;if(2===e.button)return;if(function(e){return fP(e).some(e=>{var t,n;return null===e||void 0===e||null===(t=e.classList)||void 0===t||null===(n=t.contains)||void 0===n?void 0:n.call(t,"KT-tranbtn")})}(e))return;const n=vP(e);if(n&&yP(e))return;const r=mP(e),i=n?gP(e):document,o=dP(e);await(0,l.yy)(n?0:200),D.current=i;const a=n?null===(t=i.getSelection)||void 0===t?void 0:t.call(i):window.getSelection(),s=O(a,o,n?"panel":"page",r);await z(s)},[O,z]),R=(0,fl.useCallback)(()=>{var e,t,o,l;A(!1);let u=window.getSelection(),c=O(u,null,"page");var d,h;null!==(e=c)&&void 0!==e&&e.text||!D.current||(u=(null===(d=(h=D.current).getSelection)||void 0===d?void 0:d.call(h))||window.getSelection(),c=O(u,null,"page"));null!==(t=c)&&void 0!==t&&t.text||null===(o=P.current)||void 0===o||!o.text||(c=P.current),null!==(l=c)&&void 0!==l&&l.text?(D.current=document,c.rect&&n&&s(AP(c.rect,r,i,a)),F(c)):y(e=>!e)},[n,r,i,s,a,O,F]),M=(0,fl.useMemo)(()=>Pa?"onTouchEnd":d===o.XZv?"onMouseOver":"onMouseUp",[d]);return(0,fl.useEffect)(()=>{let e;return e=d===o.VhI?"dblclick":Pa?"touchend":"mouseup",window.addEventListener(e,j),()=>{window.removeEventListener(e,j)}},[j,d]),(0,fl.useEffect)(()=>{if(!u)return;const e=()=>{const e=window.getSelection();e&&""!==e.toString().trim()||y(!1)};return window.addEventListener("click",e),()=>{window.removeEventListener("click",e)}},[u]),(0,fl.useEffect)(()=>{if(m!==o.BQZ&&m!==o.fFq)return;const e=m===o.fFq?"dblclick":"mouseup";function t(e){var t;if(!vP(e))return;const n=mP(e),r=gP(e),i=(null===(t=r.getSelection)||void 0===t?void 0:t.call(r))||window.getSelection(),o=O(i,dP(e),"panel",n);F(o)}return document.addEventListener(e,t,!0),()=>{document.removeEventListener(e,t,!0)}},[m,O,F]),{showBox:v,setShowBox:y,showBtn:b,setShowBtn:A,selectedText:x,setSelText:w,text:k,setText:S,textContext:E,position:_,setPosition:T,handleOpenTranbox:L,handleToggleTranbox:R,btnEvent:M}}function SP(e){let{contextMenuType:t,tranboxSetting:n,transApis:r,prompts:u,uiLang:c,langDetector:d}=e;const{boxSize:h,setBoxSize:p,boxPosition:f,setBoxPosition:m,simpleStyle:g,setSimpleStyle:v,hideClickAway:y,setHideClickAway:b,followSelection:A,setFollowSelection:x,boxOffsetX:w,boxOffsetY:k}=function(e){const{simpleStyle:t=!1,hideClickAway:n=!1,followSelection:r=!1,boxOffsetX:o=0,boxOffsetY:u=10}=e,c=Bb(),d=Pa||t?400:(0,l.NS)(window.innerWidth,400,800),h=Math.min(d,c),p=Wb(),f=Pa||t?200:(0,l.NS)(p,200,600),m=Math.min(f,p),g=(0,fl.useRef)({w:h,h:m}),v=(0,fl.useRef)({x:(window.innerWidth-Rb(h))/2,y:(window.innerHeight-Mb(m))/2}),[y,b]=(0,fl.useState)(g.current),[A,x]=(0,fl.useState)(v.current),[w,k]=(0,fl.useState)(t),[S,E]=(0,fl.useState)(n),[C,_]=(0,fl.useState)(r);return(0,fl.useEffect)(()=>{(async()=>{try{const{w:e,h:t,x:n,y:r}=await(0,a.FX)()||{},i=XD({w:void 0!==e?e:g.current.w,h:void 0!==t?t:g.current.h},{x:void 0!==n?n:v.current.x,y:void 0!==r?r:v.current.y});void 0!==e&&void 0!==t&&b(i.size),void 0!==n&&void 0!==r&&x(i.position)}catch(e){}})()},[]),(0,fl.useEffect)(()=>{function e(){const e=XD(y,A);b(e.size),x(e.position)}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[y,A]),(0,fl.useEffect)(()=>{!s&&y.w>0&&y.h>0&&(0,a.Fb)((0,i.A)((0,i.A)({},y),A))},[y,A]),{boxSize:y,setBoxSize:b,boxPosition:A,setBoxPosition:x,simpleStyle:w,setSimpleStyle:k,hideClickAway:S,setHideClickAway:E,followSelection:C,setFollowSelection:_,boxOffsetX:o,boxOffsetY:u}}(n),{showBox:S,setShowBox:E,showBtn:C,text:_,setText:T,textContext:D,position:P,handleOpenTranbox:I,handleToggleTranbox:F,btnEvent:L}=kP({tranboxSetting:n,followSelection:A,boxOffsetX:w,boxOffsetY:k,boxSize:h,setBoxPosition:m,hideClickAway:y});return function(e){let{showBox:t,setShowBox:n,handleToggleTranbox:r,handleOpenTranbox:i,contextMenuType:a,uiLang:s}=e;const l=LA(s),u=(0,fl.useCallback)(()=>{t?n(!1):r()},[t,r,n]);(0,fl.useEffect)(()=>{const e=e=>{var t;if((null===(t=e.detail)||void 0===t?void 0:t.action)===o.GRp){var n,r,a;const t=null===(n=e.detail)||void 0===n||null===(r=n.args)||void 0===r||null===(a=r.text)||void 0===a?void 0:a.trim();if(t)return void(null===i||void 0===i||i(t));u()}};return document.addEventListener(o.nRB,e),()=>{document.removeEventListener(o.nRB,e)}},[u,i]),(0,fl.useEffect)(()=>{if(R.Zy)try{var e,t;const n=[];return 0!==a&&n.push(null===(e=(t=GM).registerMenuCommand)||void 0===e?void 0:e.call(t,l("translate_selected_text"),e=>{r()},"S")),()=>{n.forEach(e=>{var t,n;null===(t=(n=GM).unregisterMenuCommand)||void 0===t||t.call(n,e)})}}catch(n){(0,K.h9)("registerMenuCommand",n)}},[r,a,l])}({showBox:S,setShowBox:E,handleOpenTranbox:I,handleToggleTranbox:F,contextMenuType:t,uiLang:c}),(0,yl.jsxs)(yl.Fragment,{children:[(0,yl.jsx)(YD,{showBox:S,text:_,setText:T,boxSize:h,setBoxSize:p,boxPosition:f,setBoxPosition:m,tranboxSetting:n,transApis:r,prompts:u,setShowBox:E,simpleStyle:g,setSimpleStyle:v,hideClickAway:y,setHideClickAway:b,followSelection:A,setFollowSelection:x,langDetector:d,selectionContext:D}),C&&(0,yl.jsx)(Ag,{position:P,btnOffsetX:n.btnOffsetX,btnOffsetY:n.btnOffsetY,btnEvent:L,onTrigger:e=>{e.stopPropagation(),I()}})]})}function EP(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,i.A)((0,i.A)({},e),{},{transApis:(0,o.Pco)(e.transApis,e.prompts,e.subtitleSetting)})}var CP=(0,$t.A)("container"),_P=(0,$t.A)("reactRoot"),TP=(0,$t.A)("shadowContainer"),DP=(0,$t.A)("cache"),PP=(0,$t.A)("props"),IP=(0,$t.A)("render");class FP{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.defineProperty(this,IP,{value:LP}),Object.defineProperty(this,CP,{writable:!0,value:null}),Object.defineProperty(this,_P,{writable:!0,value:null}),Object.defineProperty(this,TP,{writable:!0,value:null}),Object.defineProperty(this,DP,{writable:!0,value:null}),Object.defineProperty(this,PP,{writable:!0,value:{}}),(0,qt.A)(this,PP)[PP]=EP(e);const{tranboxSetting:t=o.Azs}=(0,qt.A)(this,PP)[PP];null!==t&&void 0!==t&&t.transOpen&&this.enable()}isEnabled(){return!!(0,qt.A)(this,CP)[CP]&&document.body.contains((0,qt.A)(this,CP)[CP])}enable(){if(!this.isEnabled()){(0,qt.A)(this,CP)[CP]=document.createElement("div"),(0,qt.A)(this,CP)[CP].id=o.Reo.boxID,(0,qt.A)(this,CP)[CP].className="notranslate",document.body.appendChild((0,qt.A)(this,CP)[CP]),(0,qt.A)(this,TP)[TP]=(0,qt.A)(this,CP)[CP].attachShadow({mode:"open"});const e=document.createElement("div");e.className="".concat(o.Reo.boxID,"_wrapper notranslate"),(0,qt.A)(this,TP)[TP].appendChild(e),(0,qt.A)(this,DP)[DP]=(0,vl.A)({key:o.Reo.boxID,prepend:!0,container:(0,qt.A)(this,TP)[TP]}),(0,qt.A)(this,_P)[_P]=ml.createRoot(e),(0,qt.A)(this,IP)[IP]()}}disable(){this.isEnabled()&&(0,qt.A)(this,_P)[_P]&&((0,qt.A)(this,_P)[_P].unmount(),(0,qt.A)(this,CP)[CP].remove(),(0,qt.A)(this,CP)[CP]=null,(0,qt.A)(this,_P)[_P]=null,(0,qt.A)(this,TP)[TP]=null,(0,qt.A)(this,DP)[DP]=null)}toggle(){this.isEnabled()?this.disable():this.enable()}update(e){var t,n;((0,qt.A)(this,PP)[PP]=EP((0,i.A)((0,i.A)({},(0,qt.A)(this,PP)[PP]),e)),this.isEnabled())?null!==(n=(0,qt.A)(this,PP)[PP].tranboxSetting)&&void 0!==n&&n.transOpen?(0,qt.A)(this,IP)[IP]():this.disable():null!==(t=(0,qt.A)(this,PP)[PP].tranboxSetting)&&void 0!==t&&t.transOpen&&this.enable()}}function LP(){(0,qt.A)(this,_P)[_P]&&(0,qt.A)(this,DP)[DP]&&(0,qt.A)(this,_P)[_P].render((0,yl.jsx)(fl.StrictMode,{children:(0,yl.jsx)(gl.C,{value:(0,qt.A)(this,DP)[DP],children:(0,yl.jsx)(SP,(0,i.A)({},(0,qt.A)(this,PP)[PP]))})}))}var OP=(0,$t.A)("hostElement"),NP=(0,$t.A)("reactRoot"),zP=(0,$t.A)("isVisible"),jP=(0,$t.A)("isProcessing"),RP=(0,$t.A)("mount");class MP{constructor(e){let{id:t,className:n="",reactComponent:r,props:i={},rootElement:o=document.body}=e;if(Object.defineProperty(this,RP,{value:BP}),Object.defineProperty(this,OP,{writable:!0,value:null}),Object.defineProperty(this,NP,{writable:!0,value:null}),Object.defineProperty(this,zP,{writable:!0,value:!1}),Object.defineProperty(this,jP,{writable:!0,value:!1}),!t||!r)throw new Error("ID and a React Component must be provided.");this._id=t,this._className=n,this._ReactComponent=r,this._props=i,this._rootElement=o}get isVisible(){return(0,qt.A)(this,zP)[zP]}show(e){if(!(0,qt.A)(this,zP)[zP]&&!(0,qt.A)(this,jP)[jP]){if(!(0,qt.A)(this,OP)[OP]){(0,qt.A)(this,jP)[jP]=!0;try{(0,qt.A)(this,RP)[RP](e||this._props)}catch(t){return K.vF.warn('Failed to mount component with id "'.concat(this._id,'":'),t),void((0,qt.A)(this,jP)[jP]=!1)}finally{(0,qt.A)(this,jP)[jP]=!1}}(0,qt.A)(this,OP)[OP].style.display="",(0,qt.A)(this,zP)[zP]=!0}}hide(){(0,qt.A)(this,zP)[zP]&&(0,qt.A)(this,OP)[OP]&&((0,qt.A)(this,OP)[OP].style.display="none",(0,qt.A)(this,zP)[zP]=!1)}destroy(){(0,qt.A)(this,OP)[OP]&&((0,qt.A)(this,jP)[jP]=!0,(0,qt.A)(this,NP)[NP]&&(0,qt.A)(this,NP)[NP].unmount(),(0,qt.A)(this,OP)[OP].remove(),(0,qt.A)(this,OP)[OP]=null,(0,qt.A)(this,NP)[NP]=null,(0,qt.A)(this,zP)[zP]=!1,(0,qt.A)(this,jP)[jP]=!1,K.vF.info('Component with id "'.concat(this._id,'" has been destroyed.')))}toggle(e){(0,qt.A)(this,zP)[zP]?this.hide():this.show(e||this._props)}}function BP(e){const t=document.createElement("div");t.id=this._id,this._className&&(t.className=this._className),this._rootElement.appendChild(t),(0,qt.A)(this,OP)[OP]=t;const n=t.attachShadow({mode:"open"}),r=document.createElement("div");r.className="".concat(this._id,"_wrapper notranslate"),n.appendChild(r);const o=(0,vl.A)({key:this._id,prepend:!0,container:n}),a=(0,i.A)((0,i.A)({},e),{},{onClose:this.hide.bind(this)}),s=this._ReactComponent;(0,qt.A)(this,NP)[NP]=ml.createRoot(r),(0,qt.A)(this,NP)[NP].render((0,yl.jsx)(fl.StrictMode,{children:(0,yl.jsx)(gl.C,{value:o,children:(0,yl.jsx)(s,(0,i.A)({},a))})}))}const WP=["children","usePaper"];function UP(e){let{children:t,usePaper:n}=e,r=(0,U.A)(e,WP);return n?(0,yl.jsx)(Kg,(0,i.A)((0,i.A)({},r),{},{elevation:4,children:t})):(0,yl.jsx)("div",(0,i.A)((0,i.A)({},r),{},{children:t}))}function HP(e){let{windowSize:{w:t,h:n},width:r,height:o,left:s,top:u,show:c=!0,snapEdge:d,onStart:h,onMove:p,handler:f,children:m,usePaper:g}=e;const[v,y]=(0,fl.useState)(!1),[b,A]=(0,fl.useState)(null),x=(0,fl.useRef)(null),w=(0,fl.useRef)({x:s/t,y:u/n}),[k,S]=(0,fl.useState)({x:s/t,y:u/n}),E=(0,fl.useMemo)(()=>(0,l.sg)(a.Bb,500),[]),C=(0,fl.useCallback)((e,t)=>{x.current&&(x.current.style.transform="translate(".concat(e,"px, ").concat(t,"px)"))},[]);(0,fl.useEffect)(()=>{w.current=k},[k]),(0,fl.useEffect)(()=>{const e=()=>{if(!x.current)return;const{x:e,y:t}=w.current,n=e*window.innerWidth,r=t*window.innerHeight;C(n,r)};return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[C]),(0,fl.useEffect)(()=>{if(!d||b)return;const e={x:k.x*t,y:k.y*n},i=(e=>{let{x:t,y:n,width:r,height:i,windowWidth:o,windowHeight:a,hover:s}=e;const l=o-t-r,u=a-n-i;switch(Math.min(t,n,l,u)){case l:t=s?o-r:o-r/2;break;case t:t=s?0:-r/2;break;case u:n=s?a-i:a-i/2;break;default:n=s?0:-i/2}return{x:t,y:n}})({x:e.x,y:e.y,width:r,height:o,windowWidth:t,windowHeight:n,hover:v});C(i.x,i.y);const a={x:i.x/t,y:i.y/n};S(a),E(i)},[b,v,r,o,t,n,d,E,k.x,k.y,C]);const _=e=>{var r;!Pa&&e.target.setPointerCapture(e.pointerId),h&&h();const i=null===(r=x.current)||void 0===r?void 0:r.getBoundingClientRect(),o=i?i.left:k.x*t,a=i?i.top:k.y*n,{clientX:s,clientY:l}=Pa?e.targetTouches[0]:e;A({x:o,y:a,clientX:s,clientY:l})},T=e=>{if(p&&p(),!b)return;const{clientX:i,clientY:a}=Pa?e.targetTouches[0]:e,s=i-b.clientX,u=a-b.clientY;let c=b.x+s,d=b.y+u;c=(0,l.NS)(c,-r/2,t-r/2),d=(0,l.NS)(d,0,n-o/2),C(c,d);const h={x:c/t,y:d/n};S(h),w.current=h},D=e=>{e.stopPropagation(),A(null)},P=(0,fl.useMemo)(()=>d?v||b?1:.2:b?.8:1,[b,d,v]),I=Pa?{onTouchStart:_,onTouchMove:T,onTouchEnd:D}:{onPointerDown:_,onPointerMove:T,onPointerUp:D};return(0,yl.jsx)("div",{ref:x,style:{opacity:P,position:"fixed",top:0,left:0,zIndex:2147483647,display:c?"block":"none",willChange:"transform"},onMouseEnter:e=>{e.stopPropagation(),y(!0)},onMouseLeave:e=>{e.stopPropagation(),y(!1)},onClick:e=>{e.stopPropagation()},children:(0,yl.jsxs)(UP,{usePaper:g,children:[(0,yl.jsx)("div",(0,i.A)((0,i.A)({style:{touchAction:"none"}},I),{},{children:f})),(0,yl.jsx)("div",{children:m})]})})}var VP=n(8902),GP=n(9079);function KP(e){let{onClose:t,toggleTab:n,openSeparateWindow:r}=e;const i=OA();return(0,yl.jsxs)(yA,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[(0,yl.jsxs)(yA,{direction:"row",justifyContent:"flex-start",alignItems:"center",children:[(0,yl.jsx)(zv,{onClick:()=>{window.open("https://github.com/fishjar/kiss-translator","_blank")},children:(0,yl.jsx)(VP.A,{})}),(0,yl.jsx)(Sy,{component:"div",sx:{userSelect:"none",WebkitUserSelect:"none",fontWeight:"bold"},children:"".concat("KISS Translator"," v").concat("2.0.29")})]}),t?(0,yl.jsx)(zv,{onClick:()=>{t()},children:(0,yl.jsx)(CA.A,{})}):(0,yl.jsxs)(yA,{direction:"row",alignItems:"center",title:i("toggle_transbox"),children:[(0,yl.jsx)(zv,{onClick:n,children:(0,yl.jsx)(GP.A,{})}),(0,yl.jsx)(zv,{onClick:r,title:i("open_separate_window"),children:(0,yl.jsx)(xA.A,{})})]})]})}const qP=function(){const[e,t]=(0,fl.useState)({w:document.documentElement.clientWidth,h:document.documentElement.clientHeight}),n=Jv(()=>{t({w:document.documentElement.clientWidth,h:document.documentElement.clientHeight})},200);return(0,fl.useEffect)(()=>(n(),window.addEventListener("resize",n),()=>{window.removeEventListener("resize",n)}),[n]),e};function $P(e){return(0,Ug.Ay)("MuiFormControlLabel",e)}const YP=(0,Wg.A)("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]),XP=["checked","className","componentsProps","control","disabled","disableTypography","inputRef","label","labelPlacement","name","onChange","required","slotProps","value"],JP=(0,Cg.Ay)("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(YP.label)]:t.label},t.root,t["labelPlacement".concat((0,Mg.A)(n.labelPlacement))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16,["&.".concat(YP.disabled)]:{cursor:"default"}},"start"===n.labelPlacement&&{flexDirection:"row-reverse",marginLeft:16,marginRight:-11},"top"===n.labelPlacement&&{flexDirection:"column-reverse",marginLeft:16},"bottom"===n.labelPlacement&&{flexDirection:"column",marginLeft:16},{["& .".concat(YP.label)]:{["&.".concat(YP.disabled)]:{color:(t.vars||t).palette.text.disabled}}})}),QP=(0,Cg.Ay)("span",{name:"MuiFormControlLabel",slot:"Asterisk",overridesResolver:(e,t)=>t.asterisk})(e=>{let{theme:t}=e;return{["&.".concat(YP.error)]:{color:(t.vars||t).palette.error.main}}}),ZP=fl.forwardRef(function(e,t){var n,r;const i=(0,_g.b)({props:e,name:"MuiFormControlLabel"}),{className:o,componentsProps:a={},control:s,disabled:l,disableTypography:u,label:c,labelPlacement:d="end",required:h,slotProps:p={}}=i,f=(0,xg.A)(i,XP),m=KA(),g=null!=(n=null!=l?l:s.props.disabled)?n:null==m?void 0:m.disabled,v=null!=h?h:s.props.required,y={disabled:g,required:v};["checked","name","onChange","value","inputRef"].forEach(e=>{"undefined"===typeof s.props[e]&&"undefined"!==typeof i[e]&&(y[e]=i[e])});const b=VA({props:i,muiFormControl:m,states:["error"]}),A=(0,wg.A)({},i,{disabled:g,labelPlacement:d,required:v,error:b.error}),x=(e=>{const{classes:t,disabled:n,labelPlacement:r,error:i,required:o}=e,a={root:["root",n&&"disabled","labelPlacement".concat((0,Mg.A)(r)),i&&"error",o&&"required"],label:["label",n&&"disabled"],asterisk:["asterisk",i&&"error"]};return(0,Sg.A)(a,$P,t)})(A),w=null!=(r=p.typography)?r:a.typography;let k=c;return null==k||k.type===Sy||u||(k=(0,yl.jsx)(Sy,(0,wg.A)({component:"span"},w,{className:(0,kg.A)(x.label,null==w?void 0:w.className),children:k}))),(0,yl.jsxs)(JP,(0,wg.A)({className:(0,kg.A)(x.root,o),ownerState:A,ref:t},f,{children:[fl.cloneElement(s,y),v?(0,yl.jsxs)(yA,{display:"block",children:[k,(0,yl.jsxs)(QP,{ownerState:A,"aria-hidden":!0,className:x.asterisk,children:["\u2009","*"]})]}):k]}))});function eI(e){return(0,Ug.Ay)("PrivateSwitchBase",e)}(0,Wg.A)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);const tI=["autoFocus","checked","checkedIcon","className","defaultChecked","disabled","disableFocusRipple","edge","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"],nI=(0,Cg.Ay)(Pv,{name:"MuiSwitchBase"})(e=>{let{ownerState:t}=e;return(0,wg.A)({padding:9,borderRadius:"50%"},"start"===t.edge&&{marginLeft:"small"===t.size?-3:-12},"end"===t.edge&&{marginRight:"small"===t.size?-3:-12})}),rI=(0,Cg.Ay)("input",{name:"MuiSwitchBase",shouldForwardProp:ax.A})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),iI=fl.forwardRef(function(e,t){const{autoFocus:n,checked:r,checkedIcon:i,className:o,defaultChecked:a,disabled:s,disableFocusRipple:l=!1,edge:u=!1,icon:c,id:d,inputProps:h,inputRef:p,name:f,onBlur:m,onChange:g,onFocus:v,readOnly:y,required:b=!1,tabIndex:A,type:x,value:w}=e,k=(0,xg.A)(e,tI),[S,E]=(0,Vk.A)({controlled:r,default:Boolean(a),name:"SwitchBase",state:"checked"}),C=KA();let _=s;C&&"undefined"===typeof _&&(_=C.disabled);const T="checkbox"===x||"radio"===x,D=(0,wg.A)({},e,{checked:S,disabled:_,disableFocusRipple:l,edge:u}),P=(e=>{const{classes:t,checked:n,disabled:r,edge:i}=e,o={root:["root",n&&"checked",r&&"disabled",i&&"edge".concat((0,Mg.A)(i))],input:["input"]};return(0,Sg.A)(o,eI,t)})(D);return(0,yl.jsxs)(nI,(0,wg.A)({component:"span",className:(0,kg.A)(P.root,o),centerRipple:!0,focusRipple:!l,disabled:_,tabIndex:null,role:void 0,onFocus:e=>{v&&v(e),C&&C.onFocus&&C.onFocus(e)},onBlur:e=>{m&&m(e),C&&C.onBlur&&C.onBlur(e)},ownerState:D,ref:t},k,{children:[(0,yl.jsx)(rI,(0,wg.A)({autoFocus:n,checked:r,defaultChecked:a,className:P.input,disabled:_,id:T?d:void 0,name:f,onChange:e=>{if(e.nativeEvent.defaultPrevented)return;const t=e.target.checked;E(t),g&&g(e,t)},readOnly:y,ref:p,required:b,ownerState:D,tabIndex:A,type:x},"checkbox"===x&&void 0===w?{}:{value:w},h)),S?i:c]}))}),oI=iI;function aI(e){return(0,Ug.Ay)("MuiSwitch",e)}const sI=(0,Wg.A)("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"]),lI=["className","color","edge","size","sx"],uI=(0,Cg.Ay)("span",{name:"MuiSwitch",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.edge&&t["edge".concat((0,Mg.A)(n.edge))],t["size".concat((0,Mg.A)(n.size))]]}})({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"},variants:[{props:{edge:"start"},style:{marginLeft:-8}},{props:{edge:"end"},style:{marginRight:-8}},{props:{size:"small"},style:{width:40,height:24,padding:7,["& .".concat(sI.thumb)]:{width:16,height:16},["& .".concat(sI.switchBase)]:{padding:4,["&.".concat(sI.checked)]:{transform:"translateX(16px)"}}}}]}),cI=(0,Cg.Ay)(oI,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.switchBase,{["& .".concat(sI.input)]:t.input},"default"!==n.color&&t["color".concat((0,Mg.A)(n.color))]]}})(e=>{let{theme:t}=e;return{position:"absolute",top:0,left:0,zIndex:1,color:t.vars?t.vars.palette.Switch.defaultColor:"".concat("light"===t.palette.mode?t.palette.common.white:t.palette.grey[300]),transition:t.transitions.create(["left","transform"],{duration:t.transitions.duration.shortest}),["&.".concat(sI.checked)]:{transform:"translateX(20px)"},["&.".concat(sI.disabled)]:{color:t.vars?t.vars.palette.Switch.defaultDisabledColor:"".concat("light"===t.palette.mode?t.palette.grey[100]:t.palette.grey[600])},["&.".concat(sI.checked," + .").concat(sI.track)]:{opacity:.5},["&.".concat(sI.disabled," + .").concat(sI.track)]:{opacity:t.vars?t.vars.opacity.switchTrackDisabled:"".concat("light"===t.palette.mode?.12:.2)},["& .".concat(sI.input)]:{left:"-100%",width:"300%"}}},e=>{let{theme:t}=e;return{"&:hover":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.action.activeChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Eg.X4)(t.palette.action.active,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[...Object.entries(t.palette).filter(e=>{let[,t]=e;return t.main&&t.light}).map(e=>{let[n]=e;return{props:{color:n},style:{["&.".concat(sI.checked)]:{color:(t.vars||t).palette[n].main,"&:hover":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette[n].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Eg.X4)(t.palette[n].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},["&.".concat(sI.disabled)]:{color:t.vars?t.vars.palette.Switch["".concat(n,"DisabledColor")]:"".concat("light"===t.palette.mode?(0,Eg.a)(t.palette[n].main,.62):(0,Eg.e$)(t.palette[n].main,.55))}},["&.".concat(sI.checked," + .").concat(sI.track)]:{backgroundColor:(t.vars||t).palette[n].main}}}})]}}),dI=(0,Cg.Ay)("span",{name:"MuiSwitch",slot:"Track",overridesResolver:(e,t)=>t.track})(e=>{let{theme:t}=e;return{height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:t.transitions.create(["opacity","background-color"],{duration:t.transitions.duration.shortest}),backgroundColor:t.vars?t.vars.palette.common.onBackground:"".concat("light"===t.palette.mode?t.palette.common.black:t.palette.common.white),opacity:t.vars?t.vars.opacity.switchTrack:"".concat("light"===t.palette.mode?.38:.3)}}),hI=(0,Cg.Ay)("span",{name:"MuiSwitch",slot:"Thumb",overridesResolver:(e,t)=>t.thumb})(e=>{let{theme:t}=e;return{boxShadow:(t.vars||t).shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"}}),pI=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiSwitch"}),{className:r,color:i="primary",edge:o=!1,size:a="medium",sx:s}=n,l=(0,xg.A)(n,lI),u=(0,wg.A)({},n,{color:i,edge:o,size:a}),c=(e=>{const{classes:t,edge:n,size:r,color:i,checked:o,disabled:a}=e,s={root:["root",n&&"edge".concat((0,Mg.A)(n)),"size".concat((0,Mg.A)(r))],switchBase:["switchBase","color".concat((0,Mg.A)(i)),o&&"checked",a&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},l=(0,Sg.A)(s,aI,t);return(0,wg.A)({},t,l)})(u),d=(0,yl.jsx)(hI,{className:c.thumb,ownerState:u});return(0,yl.jsxs)(uI,{className:(0,kg.A)(c.root,r),sx:s,ownerState:u,children:[(0,yl.jsx)(cI,(0,wg.A)({type:"checkbox",icon:d,checkedIcon:d,ref:t,ownerState:u},l,{classes:(0,wg.A)({},c,{root:c.switchBase})})),(0,yl.jsx)(dI,{className:c.track,ownerState:u})]})}),fI=pI;function mI(e){return(0,Ug.Ay)("MuiButton",e)}const gI=(0,Wg.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","colorPrimary","colorSecondary","colorSuccess","colorError","colorInfo","colorWarning","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","icon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);const vI=fl.createContext({});const yI=fl.createContext(void 0),bI=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],AI=e=>(0,wg.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),xI=(0,Cg.Ay)(Pv,{shouldForwardProp:e=>(0,ax.A)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t["".concat(n.variant).concat((0,Mg.A)(n.color))],t["size".concat((0,Mg.A)(n.size))],t["".concat(n.variant,"Size").concat((0,Mg.A)(n.size))],"inherit"===n.color&&t.colorInherit,n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth]}})(e=>{let{theme:t,ownerState:n}=e;var r,i;const o="light"===t.palette.mode?t.palette.grey[300]:t.palette.grey[800],a="light"===t.palette.mode?t.palette.grey.A100:t.palette.grey[700];return(0,wg.A)({},t.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(t.vars||t).shape.borderRadius,transition:t.transitions.create(["background-color","box-shadow","border-color","color"],{duration:t.transitions.duration.short}),"&:hover":(0,wg.A)({textDecoration:"none",backgroundColor:t.vars?"rgba(".concat(t.vars.palette.text.primaryChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Eg.X4)(t.palette.text.primary,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===n.variant&&"inherit"!==n.color&&{backgroundColor:t.vars?"rgba(".concat(t.vars.palette[n.color].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Eg.X4)(t.palette[n.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===n.variant&&"inherit"!==n.color&&{border:"1px solid ".concat((t.vars||t).palette[n.color].main),backgroundColor:t.vars?"rgba(".concat(t.vars.palette[n.color].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Eg.X4)(t.palette[n.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===n.variant&&{backgroundColor:t.vars?t.vars.palette.Button.inheritContainedHoverBg:a,boxShadow:(t.vars||t).shadows[4],"@media (hover: none)":{boxShadow:(t.vars||t).shadows[2],backgroundColor:(t.vars||t).palette.grey[300]}},"contained"===n.variant&&"inherit"!==n.color&&{backgroundColor:(t.vars||t).palette[n.color].dark,"@media (hover: none)":{backgroundColor:(t.vars||t).palette[n.color].main}}),"&:active":(0,wg.A)({},"contained"===n.variant&&{boxShadow:(t.vars||t).shadows[8]}),["&.".concat(gI.focusVisible)]:(0,wg.A)({},"contained"===n.variant&&{boxShadow:(t.vars||t).shadows[6]}),["&.".concat(gI.disabled)]:(0,wg.A)({color:(t.vars||t).palette.action.disabled},"outlined"===n.variant&&{border:"1px solid ".concat((t.vars||t).palette.action.disabledBackground)},"contained"===n.variant&&{color:(t.vars||t).palette.action.disabled,boxShadow:(t.vars||t).shadows[0],backgroundColor:(t.vars||t).palette.action.disabledBackground})},"text"===n.variant&&{padding:"6px 8px"},"text"===n.variant&&"inherit"!==n.color&&{color:(t.vars||t).palette[n.color].main},"outlined"===n.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===n.variant&&"inherit"!==n.color&&{color:(t.vars||t).palette[n.color].main,border:t.vars?"1px solid rgba(".concat(t.vars.palette[n.color].mainChannel," / 0.5)"):"1px solid ".concat((0,Eg.X4)(t.palette[n.color].main,.5))},"contained"===n.variant&&{color:t.vars?t.vars.palette.text.primary:null==(r=(i=t.palette).getContrastText)?void 0:r.call(i,t.palette.grey[300]),backgroundColor:t.vars?t.vars.palette.Button.inheritContainedBg:o,boxShadow:(t.vars||t).shadows[2]},"contained"===n.variant&&"inherit"!==n.color&&{color:(t.vars||t).palette[n.color].contrastText,backgroundColor:(t.vars||t).palette[n.color].main},"inherit"===n.color&&{color:"inherit",borderColor:"currentColor"},"small"===n.size&&"text"===n.variant&&{padding:"4px 5px",fontSize:t.typography.pxToRem(13)},"large"===n.size&&"text"===n.variant&&{padding:"8px 11px",fontSize:t.typography.pxToRem(15)},"small"===n.size&&"outlined"===n.variant&&{padding:"3px 9px",fontSize:t.typography.pxToRem(13)},"large"===n.size&&"outlined"===n.variant&&{padding:"7px 21px",fontSize:t.typography.pxToRem(15)},"small"===n.size&&"contained"===n.variant&&{padding:"4px 10px",fontSize:t.typography.pxToRem(13)},"large"===n.size&&"contained"===n.variant&&{padding:"8px 22px",fontSize:t.typography.pxToRem(15)},n.fullWidth&&{width:"100%"})},e=>{let{ownerState:t}=e;return t.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},["&.".concat(gI.focusVisible)]:{boxShadow:"none"},"&:active":{boxShadow:"none"},["&.".concat(gI.disabled)]:{boxShadow:"none"}}}),wI=(0,Cg.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.startIcon,t["iconSize".concat((0,Mg.A)(n.size))]]}})(e=>{let{ownerState:t}=e;return(0,wg.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===t.size&&{marginLeft:-2},AI(t))}),kI=(0,Cg.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.endIcon,t["iconSize".concat((0,Mg.A)(n.size))]]}})(e=>{let{ownerState:t}=e;return(0,wg.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===t.size&&{marginRight:-2},AI(t))}),SI=fl.forwardRef(function(e,t){const n=fl.useContext(vI),r=fl.useContext(yI),i=(0,sA.A)(n,e),o=(0,_g.b)({props:i,name:"MuiButton"}),{children:a,color:s="primary",component:l="button",className:u,disabled:c=!1,disableElevation:d=!1,disableFocusRipple:h=!1,endIcon:p,focusVisibleClassName:f,fullWidth:m=!1,size:g="medium",startIcon:v,type:y,variant:b="text"}=o,A=(0,xg.A)(o,bI),x=(0,wg.A)({},o,{color:s,component:l,disabled:c,disableElevation:d,disableFocusRipple:h,fullWidth:m,size:g,type:y,variant:b}),w=(e=>{const{color:t,disableElevation:n,fullWidth:r,size:i,variant:o,classes:a}=e,s={root:["root",o,"".concat(o).concat((0,Mg.A)(t)),"size".concat((0,Mg.A)(i)),"".concat(o,"Size").concat((0,Mg.A)(i)),"color".concat((0,Mg.A)(t)),n&&"disableElevation",r&&"fullWidth"],label:["label"],startIcon:["icon","startIcon","iconSize".concat((0,Mg.A)(i))],endIcon:["icon","endIcon","iconSize".concat((0,Mg.A)(i))]},l=(0,Sg.A)(s,mI,a);return(0,wg.A)({},a,l)})(x),k=v&&(0,yl.jsx)(wI,{className:w.startIcon,ownerState:x,children:v}),S=p&&(0,yl.jsx)(kI,{className:w.endIcon,ownerState:x,children:p}),E=r||"";return(0,yl.jsxs)(xI,(0,wg.A)({ownerState:x,className:(0,kg.A)(n.className,w.root,u,E),component:l,disabled:c,focusRipple:!h,focusVisibleClassName:(0,kg.A)(w.focusVisible,f),ref:t,type:y},A,{classes:w,children:[k,a,S]}))}),EI=SI;const CI=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{autoHideDuration:t=null,disableWindowBlurListener:n=!1,onClose:r,open:i,resumeHideDuration:o}=e,a=(0,lv.A)();fl.useEffect(()=>{if(i)return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)};function e(e){e.defaultPrevented||"Escape"!==e.key&&"Esc"!==e.key||null==r||r(e,"escapeKeyDown")}},[i,r]);const s=(0,zA.A)((e,t)=>{null==r||r(e,t)}),l=(0,zA.A)(e=>{r&&null!=e&&a.start(e,()=>{s(null,"timeout")})});fl.useEffect(()=>(i&&l(t),a.clear),[i,t,l,a]);const u=a.clear,c=fl.useCallback(()=>{null!=t&&l(null!=o?o:.5*t)},[t,o,l]),d=e=>t=>{const n=e.onFocus;null==n||n(t),u()},h=e=>t=>{const n=e.onMouseEnter;null==n||n(t),u()},p=e=>t=>{const n=e.onMouseLeave;null==n||n(t),c()};return fl.useEffect(()=>{if(!n&&i)return window.addEventListener("focus",c),window.addEventListener("blur",u),()=>{window.removeEventListener("focus",c),window.removeEventListener("blur",u)}},[n,i,c,u]),{getRootProps:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=(0,wg.A)({},Fg(e),Fg(t));return(0,wg.A)({role:"presentation"},t,n,{onBlur:(r=n,e=>{const t=r.onBlur;null==t||t(e),c()}),onFocus:d(n),onMouseEnter:h(n),onMouseLeave:p(n)});var r},onClickAway:e=>{null==r||r(e,"clickaway")}}};function _I(e){return e.substring(2).toLowerCase()}function TI(e){const{children:t,disableReactTree:n=!1,mouseEvent:r="onClick",onClickAway:i,touchEvent:o="onTouchEnd"}=e,a=fl.useRef(!1),s=fl.useRef(null),l=fl.useRef(!1),u=fl.useRef(!1);fl.useEffect(()=>(setTimeout(()=>{l.current=!0},0),()=>{l.current=!1}),[]);const c=(0,Tg.A)(nw(t),s),d=(0,zA.A)(e=>{const t=u.current;u.current=!1;const r=(0,Mw.A)(s.current);if(!l.current||!s.current||"clientX"in e&&function(e,t){return t.documentElement.clientWidth-1:!r.documentElement.contains(e.target)||s.current.contains(e.target),o||!n&&t||i(e)}),h=e=>n=>{u.current=!0;const r=t.props[e];r&&r(n)},p={ref:c};return!1!==o&&(p[o]=h(o)),fl.useEffect(()=>{if(!1!==o){const e=_I(o),t=(0,Mw.A)(s.current),n=()=>{a.current=!0};return t.addEventListener(e,d),t.addEventListener("touchmove",n),()=>{t.removeEventListener(e,d),t.removeEventListener("touchmove",n)}}},[d,o]),!1!==r&&(p[r]=h(r)),fl.useEffect(()=>{if(!1!==r){const e=_I(r),t=(0,Mw.A)(s.current);return t.addEventListener(e,d),()=>{t.removeEventListener(e,d)}}},[d,r]),(0,yl.jsx)(fl.Fragment,{children:fl.cloneElement(t,p)})}function DI(e){return(0,Ug.Ay)("MuiSnackbarContent",e)}(0,Wg.A)("MuiSnackbarContent",["root","message","action"]);const PI=["action","className","message","role"],II=(0,Cg.Ay)(Kg,{name:"MuiSnackbarContent",slot:"Root",overridesResolver:(e,t)=>t.root})(e=>{let{theme:t}=e;const n="light"===t.palette.mode?.8:.98,r=(0,Eg.tL)(t.palette.background.default,n);return(0,wg.A)({},t.typography.body2,{color:t.vars?t.vars.palette.SnackbarContent.color:t.palette.getContrastText(r),backgroundColor:t.vars?t.vars.palette.SnackbarContent.bg:r,display:"flex",alignItems:"center",flexWrap:"wrap",padding:"6px 16px",borderRadius:(t.vars||t).shape.borderRadius,flexGrow:1,[t.breakpoints.up("sm")]:{flexGrow:"initial",minWidth:288}})}),FI=(0,Cg.Ay)("div",{name:"MuiSnackbarContent",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0"}),LI=(0,Cg.Ay)("div",{name:"MuiSnackbarContent",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"center",marginLeft:"auto",paddingLeft:16,marginRight:-8}),OI=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiSnackbarContent"}),{action:r,className:i,message:o,role:a="alert"}=n,s=(0,xg.A)(n,PI),l=n,u=(e=>{const{classes:t}=e;return(0,Sg.A)({root:["root"],action:["action"],message:["message"]},DI,t)})(l);return(0,yl.jsxs)(II,(0,wg.A)({role:a,square:!0,elevation:6,className:(0,kg.A)(u.root,i),ownerState:l,ref:t},s,{children:[(0,yl.jsx)(FI,{className:u.message,ownerState:l,children:o}),r?(0,yl.jsx)(LI,{className:u.action,ownerState:l,children:r}):null]}))});function NI(e){return(0,Ug.Ay)("MuiSnackbar",e)}(0,Wg.A)("MuiSnackbar",["root","anchorOriginTopCenter","anchorOriginBottomCenter","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft"]);const zI=["onEnter","onExited"],jI=["action","anchorOrigin","autoHideDuration","children","className","ClickAwayListenerProps","ContentProps","disableWindowBlurListener","message","onBlur","onClose","onFocus","onMouseEnter","onMouseLeave","open","resumeHideDuration","TransitionComponent","transitionDuration","TransitionProps"],RI=(0,Cg.Ay)("div",{name:"MuiSnackbar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["anchorOrigin".concat((0,Mg.A)(n.anchorOrigin.vertical)).concat((0,Mg.A)(n.anchorOrigin.horizontal))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({zIndex:(t.vars||t).zIndex.snackbar,position:"fixed",display:"flex",left:8,right:8,justifyContent:"center",alignItems:"center"},"top"===n.anchorOrigin.vertical?{top:8}:{bottom:8},"left"===n.anchorOrigin.horizontal&&{justifyContent:"flex-start"},"right"===n.anchorOrigin.horizontal&&{justifyContent:"flex-end"},{[t.breakpoints.up("sm")]:(0,wg.A)({},"top"===n.anchorOrigin.vertical?{top:24}:{bottom:24},"center"===n.anchorOrigin.horizontal&&{left:"50%",right:"auto",transform:"translateX(-50%)"},"left"===n.anchorOrigin.horizontal&&{left:24,right:"auto"},"right"===n.anchorOrigin.horizontal&&{right:24,left:"auto"})})}),MI=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiSnackbar"}),r=Ib(),i={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{action:o,anchorOrigin:{vertical:a,horizontal:s}={vertical:"bottom",horizontal:"left"},autoHideDuration:l=null,children:u,className:c,ClickAwayListenerProps:d,ContentProps:h,disableWindowBlurListener:p=!1,message:f,open:m,TransitionComponent:g=Rw,transitionDuration:v=i,TransitionProps:{onEnter:y,onExited:b}={}}=n,A=(0,xg.A)(n.TransitionProps,zI),x=(0,xg.A)(n,jI),w=(0,wg.A)({},n,{anchorOrigin:{vertical:a,horizontal:s},autoHideDuration:l,disableWindowBlurListener:p,TransitionComponent:g,transitionDuration:v}),k=(e=>{const{classes:t,anchorOrigin:n}=e,r={root:["root","anchorOrigin".concat((0,Mg.A)(n.vertical)).concat((0,Mg.A)(n.horizontal))]};return(0,Sg.A)(r,NI,t)})(w),{getRootProps:S,onClickAway:E}=CI((0,wg.A)({},w)),[C,_]=fl.useState(!0),T=ow({elementType:RI,getSlotProps:S,externalForwardedProps:x,ownerState:w,additionalProps:{ref:t},className:[k.root,c]});return!m&&C?null:(0,yl.jsx)(TI,(0,wg.A)({onClickAway:E},d,{children:(0,yl.jsx)(RI,(0,wg.A)({},T,{children:(0,yl.jsx)(g,(0,wg.A)({appear:!0,in:m,timeout:v,direction:"top"===a?"down":"up",onEnter:(e,t)=>{_(!1),y&&y(e,t)},onExited:e=>{_(!0),b&&b(e)}},A,{children:u||(0,yl.jsx)(OI,(0,wg.A)({message:f,action:o},h))}))}))}))}),BI=MI,WI=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:45;if(e.length<=t)return e;const n=t-3,r=Math.ceil(n/2),i=Math.floor(n/2);return"".concat(e.slice(0,r)).concat("...").concat(e.slice(-i))},UI=e=>{if(!e||"string"!==typeof e)return[];try{if(e.startsWith("file"))return(e=>{const t=e.replace(/^file:\/\//,""),n=t.substring(t.lastIndexOf("/")+1),r=t.substring(0,t.lastIndexOf("/")),i=n.includes(".")?n.substring(n.lastIndexOf(".")):"",o=[];if(t)try{o.push(decodeURIComponent(t))}catch(a){o.push(t)}if(r&&o.push("".concat(r,"/*")),i&&o.push("*".concat(i)),n&&n!==t)try{o.push(decodeURIComponent(n))}catch(s){o.push(n)}return o})(e);if(!e.startsWith("http"))return[];const t=new URL(e),{hostname:n,port:r,protocol:i}=t,o="https:"===i?"443":"80",a=(e=>{if((e=>{const t=/^(\d{1,3}\.){3}\d{1,3}$/.test(e),n=e.includes(":");return t||n})(e))return[e];const t=e.split(".");if(t.length<=1)return[e];if(2===t.length)return[e,"*.".concat(e)];const n=[e],r=t.slice(-2).join(".");for(let i=1;i<=t.length-2;i++){const e="*.".repeat(i),o=t.slice(i).join(".");o===r&&1!==i||n.push("".concat(e).concat(o))}return n})(n);if(r&&r!==o){const e=a[0];return["".concat(e,":").concat(r),"".concat(e,":*"),e,...a.slice(1)]}return a}catch(t){return[]}};var HI=n(1367);function VI(){const{customStyles:e,updateSetting:t}=function(){const{setting:e,updateSetting:t}=Vy();return{customStyles:(null===e||void 0===e?void 0:e.customStyles)||[],updateSetting:t}}();return{customStyles:e,addStyle:(0,fl.useCallback)(()=>{const e=HI.p5[0],n=crypto.randomUUID(),r="custom_".concat(crypto.randomUUID()),o="Style_".concat(n.slice(0,8)),a=(0,i.A)((0,i.A)({},e),{},{styleSlug:r,styleName:o});t(e=>(0,i.A)((0,i.A)({},e),{},{customStyles:[...(null===e||void 0===e?void 0:e.customStyles)||[],a]}))},[t]),deleteStyle:(0,fl.useCallback)(e=>{t(t=>(0,i.A)((0,i.A)({},t),{},{customStyles:((null===t||void 0===t?void 0:t.customStyles)||[]).filter(t=>t.styleSlug!==e)}))},[t]),updateStyle:(0,fl.useCallback)((e,n)=>{t(t=>(0,i.A)((0,i.A)({},t),{},{customStyles:((null===t||void 0===t?void 0:t.customStyles)||[]).map(t=>t.styleSlug===e?(0,i.A)((0,i.A)({},t),n):t)}))},[t])}}function GI(e){var t,n,r;let{rule:s,setting:u,setRule:c,setSetting:d,handleOpenSetting:h,processActions:p,isContent:f=!1}=e;const m=OA(),{setting:g,updateSetting:v}=Vy(),[y,b]=(0,fl.useState)({}),[A,x]=(0,fl.useState)([]),[w,k]=(0,fl.useState)(""),[S,E]=(0,fl.useState)({open:!1,message:""}),{allTextStyles:C}=function(){const{customStyles:e}=VI(),t=OA(),n=(0,fl.useMemo)(()=>HI.q_.map(e=>({styleSlug:e,styleName:t(e),styleCode:Ic[e]||""})),[t]),r=(0,fl.useMemo)(()=>[...n,...e],[n,e]);return{builtinStyles:n,customStyles:e,allTextStyles:r}}(),[_,T]=(0,fl.useState)(""),D=(null===g||void 0===g?void 0:g.blacklist)||"",P=(0,fl.useMemo)(()=>!(!w||!D)&&Ta(_,D),[w,D,_]),I=(0,fl.useCallback)(()=>{if(!w)return;const e=D?"".concat(D,"\n").concat(w):w;v(t=>(0,i.A)((0,i.A)({},t),{},{blacklist:e})),E({open:!0,message:"".concat(m("add_to_blacklist"),": ").concat(w)})},[w,D,v,m]),F=(0,fl.useCallback)(()=>{if(!w)return;const e=D.split(/\n|,/).map(e=>e.trim()).filter(e=>e!==w).join("\n");v(t=>(0,i.A)((0,i.A)({},t),{},{blacklist:e})),E({open:!0,message:"".concat(m("remove_from_blacklist"),": ").concat(w)})},[w,D,v,m]),L=async e=>{try{let{name:t,value:n,checked:r}=e.target;"isPlainText"===t&&(n=r),c(e=>(0,i.A)((0,i.A)({},e),{},{[t]:n})),p?p({action:o.Rfh,args:{[t]:n}}):await(0,M.xJ)(o.Rfh,{[t]:n})}catch(t){(0,K.h9)("update rule",t)}};(0,fl.useEffect)(()=>{(async()=>{try{let t="";if(f){var e;t=null===(e=window.location)||void 0===e?void 0:e.href}else{const e=await(0,M.QI)();t=(null===e||void 0===e?void 0:e.url)||""}if(t&&"string"===typeof t){T(t);const e=UI(t);x(e),e.length>0&&k(e[0])}}catch(t){(0,K.h9)("get domain options",t)}})()},[f]),(0,fl.useEffect)(()=>{(async()=>{try{const e={};if(R.aQ){(await(0,M.Ru)(o.K8D)).forEach(t=>{let{name:n,shortcut:r}=t;e[n]=r})}else{const t=null===u||void 0===u?void 0:u.shortcuts;t&&Object.entries(t).forEach(t=>{let[n,r]=t;e[n]=r.join("+")})}b(e)}catch(e){(0,K.h9)("query cmds",e)}})()},[null===u||void 0===u?void 0:u.shortcuts]);const O=(0,fl.useMemo)(()=>((null===u||void 0===u?void 0:u.transApis)||[]).filter(e=>!e.isDisabled).sort((e,t)=>(e.sortOrder||0)-(t.sortOrder||0)).map(e=>({key:e.apiSlug,name:e.apiName||e.apiSlug})),[null===u||void 0===u?void 0:u.transApis]),N=null===u||void 0===u||null===(t=u.tranboxSetting)||void 0===t?void 0:t.transOpen,z=null===u||void 0===u||null===(n=u.mouseHoverSetting)||void 0===n?void 0:n.useMouseHover,j=null===u||void 0===u||null===(r=u.inputRule)||void 0===r?void 0:r.transOpen,{transOpen:B,apiSlug:W,fromLang:U,toLang:H,textStyle:V,autoScan:G,transOnly:q,hasRichText:$,scanAll:Y,isPlainText:X=!1}=s||{},J=!0===X||"true"===X;return(0,yl.jsxs)(yA,{sx:{p:2},spacing:2,children:[(0,yl.jsxs)(pE,{container:!0,columns:12,spacing:1,children:[(0,yl.jsx)(pE,{item:!0,xs:12,children:(0,yl.jsx)(ZP,{control:(0,yl.jsx)(fI,{checked:"true"===B,onChange:async e=>{try{c((0,i.A)((0,i.A)({},s),{},{transOpen:e.target.checked?"true":"false"})),p?p({action:o.u2k}):await(0,M.xJ)(o.u2k)}catch(t){(0,K.h9)("toggle trans",t)}}}),label:y.toggleTranslate?"".concat(m("translate_alt"),"(").concat(y.toggleTranslate,")"):m("translate_alt")})}),(0,yl.jsx)(pE,{item:!0,xs:6,children:(0,yl.jsx)(ZP,{control:(0,yl.jsx)(fI,{size:"small",name:"autoScan",value:"true"===G?"false":"true",checked:"true"===G,onChange:L}),label:m("autoscan_alt")})}),(0,yl.jsx)(pE,{item:!0,xs:6,children:(0,yl.jsx)(ZP,{control:(0,yl.jsx)(fI,{size:"small",name:"scanAll",value:"true"===Y?"false":"true",checked:"true"===Y,onChange:L}),label:m("scan_all_nodes")})}),(0,yl.jsx)(pE,{item:!0,xs:6,children:(0,yl.jsx)(ZP,{control:(0,yl.jsx)(fI,{size:"small",name:"hasRichText",value:"true"===$?"false":"true",checked:"true"===$,onChange:L}),label:m("richtext_alt")})}),(0,yl.jsx)(pE,{item:!0,xs:6,children:(0,yl.jsx)(ZP,{control:(0,yl.jsx)(fI,{size:"small",name:"transOnly",value:"true"===q?"false":"true",checked:"true"===q,onChange:L}),label:m("transonly_alt")})}),(0,yl.jsx)(pE,{item:!0,xs:6,children:(0,yl.jsx)(ZP,{control:(0,yl.jsx)(fI,{size:"small",name:"tranboxEnabled",value:!N,checked:N,onChange:async e=>{try{d(t=>(0,i.A)((0,i.A)({},t),{},{tranboxSetting:(0,i.A)((0,i.A)({},t.tranboxSetting),{},{transOpen:e.target.checked})})),p?p({action:o.n10}):await(0,M.xJ)(o.n10)}catch(t){(0,K.h9)("toggle transbox",t)}}}),label:m("selection_translate")})}),(0,yl.jsx)(pE,{item:!0,xs:6,children:(0,yl.jsx)(ZP,{control:(0,yl.jsx)(fI,{size:"small",name:"mouseHoverEnabled",value:!z,checked:z,onChange:async e=>{try{d(t=>(0,i.A)((0,i.A)({},t),{},{mouseHoverSetting:(0,i.A)((0,i.A)({},t.mouseHoverSetting),{},{useMouseHover:e.target.checked})})),p?p({action:o.F_o}):await(0,M.xJ)(o.F_o)}catch(t){(0,K.h9)("toggle mousehover",t)}}}),label:m("mousehover_translate")})}),(0,yl.jsx)(pE,{item:!0,xs:6,children:(0,yl.jsx)(ZP,{control:(0,yl.jsx)(fI,{size:"small",name:"inputTransEnabled",value:!j,checked:j,onChange:async e=>{try{d(t=>(0,i.A)((0,i.A)({},t),{},{inputRule:(0,i.A)((0,i.A)({},t.inputRule),{},{transOpen:e.target.checked})})),p?p({action:o.EWA}):await(0,M.xJ)(o.EWA)}catch(t){(0,K.h9)("toggle inputtrans",t)}}}),label:m("input_translate")})}),(0,yl.jsx)(pE,{item:!0,xs:6,children:(0,yl.jsx)(ZP,{control:(0,yl.jsx)(fI,{size:"small",name:"isPlainText",value:!J,checked:J,onChange:L}),label:m("plain_text_translate")})})]}),(0,yl.jsxs)(yA,{direction:"row",spacing:2,children:[(0,yl.jsx)(gS,{select:!0,SelectProps:{MenuProps:{disablePortal:!0}},size:"small",value:U,name:"fromLang",label:m("from_lang"),onChange:L,fullWidth:!0,children:o.UF6.map(e=>{let[t,n]=e;return(0,yl.jsx)(tE,{value:t,children:n},t)})}),(0,yl.jsx)(gS,{select:!0,SelectProps:{MenuProps:{disablePortal:!0}},size:"small",value:H,name:"toLang",label:m("to_lang"),onChange:L,fullWidth:!0,children:o.$QD.map(e=>{let[t,n]=e;return(0,yl.jsx)(tE,{value:t,children:n},t)})})]}),(0,yl.jsxs)(yA,{direction:"row",spacing:2,children:[(0,yl.jsx)(gS,{select:!0,SelectProps:{MenuProps:{disablePortal:!0}},size:"small",value:W,name:"apiSlug",label:m("translate_service"),onChange:L,fullWidth:!0,children:O.map(e=>{let{key:t,name:n}=e;return(0,yl.jsx)(tE,{value:t,children:n},t)})}),(0,yl.jsx)(gS,{select:!0,SelectProps:{MenuProps:{disablePortal:!0}},size:"small",value:V,name:"textStyle",label:y.toggleStyle?"".concat(m("text_style_alt"),"(").concat(y.toggleStyle,")"):m("text_style_alt"),onChange:L,fullWidth:!0,children:C.map(e=>(0,yl.jsx)(tE,{value:e.styleSlug,children:e.styleName},e.styleSlug))})]}),(0,yl.jsxs)(yA,{children:[(0,yl.jsx)(gS,{select:!0,SelectProps:{MenuProps:{disablePortal:!0}},size:"small",value:w,label:m("domain"),onChange:e=>k(e.target.value),fullWidth:!0,sx:{mb:1},children:A.map(e=>(0,yl.jsx)(tE,{value:e,title:e,children:WI(e)},e))}),(0,yl.jsxs)(yA,{direction:"row",justifyContent:"space-between",alignItems:"center",children:[(0,yl.jsx)(EI,{variant:"text",onClick:async()=>{try{if(!w)return;const e=(0,i.A)((0,i.A)({},s),{},{pattern:w});R.aQ&&f?(0,M.Ru)(o.x2F,e):(async e=>{const t=await(0,a.VX)(),n=t.findIndex(t=>t.pattern!==o.WL9&&(0,l.uv)(e.pattern,t.pattern));if(-1!==n){const r=t.splice(n,1)[0];e=(0,i.A)((0,i.A)((0,i.A)({},r),e),{},{pattern:r.pattern,selector:r.selector,keepSelector:r.keepSelector,blockSelector:r.blockSelector,rootsSelector:r.rootsSelector,ignoreSelector:r.ignoreSelector})}const r={},s=(0,i.A)((0,i.A)({},o.lNu),t.find(e=>e.pattern===o.WL9)||{});Object.keys(o.lNu).forEach(t=>{if("isPlainText"===t){const n=!0===e[t]||"true"===e[t]?"true":!1===e[t]||"false"===e[t]?"false":o.NGo[t];return void(r[t]=n===s[t]?o.NGo[t]:n)}r[t]=e[t]&&e[t]!==s[t]?e[t]:o.NGo[t]}),t.unshift(r),await(0,a.Qg)(t),ka()})(e),E({open:!0,message:"".concat(m("save_rule"),": ").concat(w)})}catch(e){(0,K.h9)("save rule",e)}},disabled:0===A.length,children:m("save_rule")}),(0,yl.jsx)(EI,{variant:"text",onClick:P?F:I,disabled:0===A.length,children:m(P?"remove_from_blacklist":"add_to_blacklist")}),(0,yl.jsx)(EI,{variant:"text",onClick:()=>{(0,Ut.uk)()},children:m("clear_cache")})]}),(0,yl.jsxs)(yA,{direction:"row",justifyContent:"space-between",alignItems:"center",children:[(0,yl.jsx)(EI,{variant:"text",onClick:()=>{window.open("https://chromewebstore.google.com/detail/kiss-translator/bdiifdefkgmcblbcghdlonllpjhhjgof/reviews","_blank")},children:m("comment_support")}),(0,yl.jsx)(EI,{variant:"text",onClick:()=>{window.open("https://github.com/fishjar/kiss-translator#%E8%B5%9E%E8%B5%8F","_blank")},children:m("appreciate_support")}),(0,yl.jsx)(EI,{variant:"text",onClick:h,children:m("setting")})]})]}),(0,yl.jsx)(BI,{open:S.open,autoHideDuration:3e3,onClose:()=>E({open:!1,message:""}),anchorOrigin:{vertical:"top",horizontal:"center"},children:(0,yl.jsx)(Xv,{onClose:()=>E({open:!1,message:""}),severity:"success",variant:"filled",sx:{width:"100%"},children:S.message})})]})}function KI(e){let{translator:t,processActions:n}=e;const[r,a]=(0,fl.useState)(!0),[s,l]=(0,fl.useState)(t.rule),[u,c]=(0,fl.useState)(t.setting),d=qP(),h=(0,fl.useCallback)(()=>{R.aQ?(0,M.Ru)(o.kYB):window.open("https://kiss-translator.rayjar.com/options","_blank")},[]);(0,fl.useEffect)(()=>{const e=()=>{a(!1)};return window.addEventListener("click",e),()=>{window.removeEventListener("click",e)}},[]),(0,fl.useEffect)(()=>{const e=e=>{var t;(null===(t=e.detail)||void 0===t?void 0:t.action)===o.grg&&a(e=>!e)};return document.addEventListener(o.nRB,e),()=>{document.removeEventListener(o.nRB,e)}},[]),(0,fl.useEffect)(()=>{r&&(l(t.rule),c(t.setting))},[r,t]);const p=(0,fl.useMemo)(()=>{const e=Math.min(d.w,360),t=Math.min(d.h,442),n=(d.w-e)/2,r=(d.h-t)/2;return{windowSize:d,width:e,height:t,left:n,top:r}},[d]);return(0,yl.jsx)(Hy,{context:"contentPopup",children:(0,yl.jsx)(kb,{children:r&&(0,yl.jsx)(HP,(0,i.A)((0,i.A)({},p),{},{usePaper:!0,handler:(0,yl.jsxs)(Pb,{style:{cursor:"move"},children:[(0,yl.jsx)(KP,{onClose:()=>{a(!1)}}),(0,yl.jsx)(By,{})]}),children:(0,yl.jsx)(Pb,{width:360,children:(0,yl.jsx)(GI,{rule:s,setting:u,setRule:l,setSetting:c,handleOpenSetting:h,processActions:n,isContent:!0})})}),"pop")})})}class qI extends MP{constructor(e){let{translator:t,processActions:n}=e;super({id:o.Reo.popupID,className:"notranslate",reactComponent:KI,props:{translator:t,processActions:n}})}toggle(e){this.isVisible?document.dispatchEvent(new CustomEvent(o.nRB,{detail:{action:o.grg}})):this.show(e||this._props)}}function $I(e){return(0,Ug.Ay)("MuiFab",e)}const YI=(0,Wg.A)("MuiFab",["root","primary","secondary","extended","circular","focusVisible","disabled","colorInherit","sizeSmall","sizeMedium","sizeLarge","info","error","warning","success"]),XI=["children","className","color","component","disabled","disableFocusRipple","focusVisibleClassName","size","variant"],JI=(0,Cg.Ay)(Pv,{name:"MuiFab",slot:"Root",shouldForwardProp:e=>(0,ax.A)(e)||"classes"===e,overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t["size".concat((0,Mg.A)(n.size))],"inherit"===n.color&&t.colorInherit,t[(0,Mg.A)(n.size)],t[n.color]]}})(e=>{let{theme:t,ownerState:n}=e;var r,i;return(0,wg.A)({},t.typography.button,{minHeight:36,transition:t.transitions.create(["background-color","box-shadow","border-color"],{duration:t.transitions.duration.short}),borderRadius:"50%",padding:0,minWidth:0,width:56,height:56,zIndex:(t.vars||t).zIndex.fab,boxShadow:(t.vars||t).shadows[6],"&:active":{boxShadow:(t.vars||t).shadows[12]},color:t.vars?t.vars.palette.text.primary:null==(r=(i=t.palette).getContrastText)?void 0:r.call(i,t.palette.grey[300]),backgroundColor:(t.vars||t).palette.grey[300],"&:hover":{backgroundColor:(t.vars||t).palette.grey.A100,"@media (hover: none)":{backgroundColor:(t.vars||t).palette.grey[300]},textDecoration:"none"},["&.".concat(YI.focusVisible)]:{boxShadow:(t.vars||t).shadows[6]}},"small"===n.size&&{width:40,height:40},"medium"===n.size&&{width:48,height:48},"extended"===n.variant&&{borderRadius:24,padding:"0 16px",width:"auto",minHeight:"auto",minWidth:48,height:48},"extended"===n.variant&&"small"===n.size&&{width:"auto",padding:"0 8px",borderRadius:17,minWidth:34,height:34},"extended"===n.variant&&"medium"===n.size&&{width:"auto",padding:"0 16px",borderRadius:20,minWidth:40,height:40},"inherit"===n.color&&{color:"inherit"})},e=>{let{theme:t,ownerState:n}=e;return(0,wg.A)({},"inherit"!==n.color&&"default"!==n.color&&null!=(t.vars||t).palette[n.color]&&{color:(t.vars||t).palette[n.color].contrastText,backgroundColor:(t.vars||t).palette[n.color].main,"&:hover":{backgroundColor:(t.vars||t).palette[n.color].dark,"@media (hover: none)":{backgroundColor:(t.vars||t).palette[n.color].main}}})},e=>{let{theme:t}=e;return{["&.".concat(YI.disabled)]:{color:(t.vars||t).palette.action.disabled,boxShadow:(t.vars||t).shadows[0],backgroundColor:(t.vars||t).palette.action.disabledBackground}}}),QI=fl.forwardRef(function(e,t){const n=(0,_g.b)({props:e,name:"MuiFab"}),{children:r,className:i,color:o="default",component:a="button",disabled:s=!1,disableFocusRipple:l=!1,focusVisibleClassName:u,size:c="large",variant:d="circular"}=n,h=(0,xg.A)(n,XI),p=(0,wg.A)({},n,{color:o,component:a,disabled:s,disableFocusRipple:l,size:c,variant:d}),f=(e=>{const{color:t,variant:n,classes:r,size:i}=e,o={root:["root",n,"size".concat((0,Mg.A)(i)),"inherit"===t?"colorInherit":t]},a=(0,Sg.A)(o,$I,r);return(0,wg.A)({},r,a)})(p);return(0,yl.jsx)(JI,(0,wg.A)({className:(0,kg.A)(f.root,i),component:a,disabled:s,focusRipple:!l,focusVisibleClassName:(0,kg.A)(f.focusVisible,u),ownerState:p,ref:t},h,{classes:f,children:r}))}),ZI=QI;var eF=n(383);function tF(){const[e,t]=(0,fl.useState)(!1);return(0,fl.useEffect)(()=>{const e=()=>{const e=document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement||null;t(function(e){var t;return!!e&&("VIDEO"===e.tagName||Boolean(null===(t=e.querySelector)||void 0===t?void 0:t.call(e,"video")))}(e))};return e(),document.addEventListener("fullscreenchange",e),document.addEventListener("webkitfullscreenchange",e),document.addEventListener("mozfullscreenchange",e),document.addEventListener("msfullscreenchange",e),()=>{document.removeEventListener("fullscreenchange",e),document.removeEventListener("webkitfullscreenchange",e),document.removeEventListener("mozfullscreenchange",e),document.removeEventListener("msfullscreenchange",e)}},[]),{isVideoFullscreen:e}}function nF(e){let{fabConfig:{x:t,y:n,fabClickAction:r=0}={},processActions:a}=e;const s=qP(),[l,u]=(0,fl.useState)(!1),[c,d]=(0,fl.useState)(!0),{isVideoFullscreen:h}=tF();(0,fl.useEffect)(()=>{d(!h)},[h]);const p=(0,fl.useCallback)(()=>{u(!1)},[]),f=(0,fl.useCallback)(()=>{u(!0)},[]),m=(0,fl.useCallback)(()=>{l||a(1===r?{action:o.u2k}:{action:o.grg})},[l,r,a]),g=(0,fl.useMemo)(()=>({windowSize:s,width:40,height:40,left:null!==t&&void 0!==t?t:-40,top:null!==n&&void 0!==n?n:s.h/2}),[s,40,t,n]);return(0,yl.jsx)(Hy,{context:"fab",children:(0,yl.jsx)(kb,{children:(0,yl.jsx)(HP,(0,i.A)((0,i.A)({snapEdge:!0},g),{},{show:c,onStart:p,onMove:f,handler:(0,yl.jsx)(ZI,{size:"small",color:"primary",onClick:m,children:(0,yl.jsx)(eF.A,{sx:{width:24,height:24}})})}),"fab")})})}class rF extends MP{constructor(e){let{processActions:t,fabConfig:n}=e;super({id:o.Reo.fabID,className:"notranslate",reactComponent:nF,props:{processActions:t,fabConfig:n}}),null!==n&&void 0!==n&&n.isHide||this.show()}}var iF=(0,$t.A)("clearShortcuts"),oF=(0,$t.A)("menuCommandIds"),aF=(0,$t.A)("clearTouchListeners"),sF=(0,$t.A)("isActive"),lF=(0,$t.A)("setting"),uF=(0,$t.A)("rule"),cF=(0,$t.A)("fabConfig"),dF=(0,$t.A)("favWords"),hF=(0,$t.A)("isUserscript"),pF=(0,$t.A)("isIframe"),fF=(0,$t.A)("transboxOnly"),mF=(0,$t.A)("documentObserver"),gF=(0,$t.A)("documentElementObserver"),vF=(0,$t.A)("knownDocumentElement"),yF=(0,$t.A)("knownBody"),bF=(0,$t.A)("spaRefreshTimer"),AF=(0,$t.A)("pendingSpaRefresh"),xF=(0,$t.A)("pendingSpaRefreshReason"),wF=(0,$t.A)("innerMessageHandler"),kF=(0,$t.A)("browserMessageHandler"),SF=(0,$t.A)("windowMessageHandler"),EF=(0,$t.A)("pageRestoreHandler"),CF=(0,$t.A)("spaNavigationHandler"),_F=(0,$t.A)("createRuntimeModules"),TF=(0,$t.A)("destroyRuntimeModules"),DF=(0,$t.A)("cloneConfig"),PF=(0,$t.A)("snapshotRuntimeState"),IF=(0,$t.A)("setupSpaListeners"),FF=(0,$t.A)("teardownSpaListeners"),LF=(0,$t.A)("refreshDocumentElementObserver"),OF=(0,$t.A)("handleDocumentContainerMutation"),NF=(0,$t.A)("handlePageRestore"),zF=(0,$t.A)("handleSpaNavigation"),jF=(0,$t.A)("scheduleSpaRefresh"),RF=(0,$t.A)("clearSpaRefreshTimer"),MF=(0,$t.A)("hasDocumentContainerChanged"),BF=(0,$t.A)("setupMessageListeners"),WF=(0,$t.A)("setupTouchOperations"),UF=(0,$t.A)("handleWindowMessage"),HF=(0,$t.A)("handleInnerMessage"),VF=(0,$t.A)("handleBrowserMessage"),GF=(0,$t.A)("registerShortcuts"),KF=(0,$t.A)("registerMenus"),qF=(0,$t.A)("processActions");class $F{constructor(e){let{setting:t,rule:n,fabConfig:r,favWords:i,isIframe:o,isUserscript:a,transboxOnly:s=!1}=e;Object.defineProperty(this,qF,{value:mL}),Object.defineProperty(this,KF,{value:fL}),Object.defineProperty(this,GF,{value:pL}),Object.defineProperty(this,VF,{value:hL}),Object.defineProperty(this,HF,{value:dL}),Object.defineProperty(this,UF,{value:cL}),Object.defineProperty(this,WF,{value:uL}),Object.defineProperty(this,BF,{value:lL}),Object.defineProperty(this,MF,{value:sL}),Object.defineProperty(this,RF,{value:aL}),Object.defineProperty(this,jF,{value:oL}),Object.defineProperty(this,zF,{value:iL}),Object.defineProperty(this,NF,{value:rL}),Object.defineProperty(this,OF,{value:nL}),Object.defineProperty(this,LF,{value:tL}),Object.defineProperty(this,FF,{value:eL}),Object.defineProperty(this,IF,{value:ZF}),Object.defineProperty(this,PF,{value:QF}),Object.defineProperty(this,DF,{value:JF}),Object.defineProperty(this,TF,{value:XF}),Object.defineProperty(this,_F,{value:YF}),Object.defineProperty(this,iF,{writable:!0,value:[]}),Object.defineProperty(this,oF,{writable:!0,value:[]}),Object.defineProperty(this,aF,{writable:!0,value:[]}),Object.defineProperty(this,sF,{writable:!0,value:!1}),Object.defineProperty(this,lF,{writable:!0,value:void 0}),Object.defineProperty(this,uF,{writable:!0,value:void 0}),Object.defineProperty(this,cF,{writable:!0,value:void 0}),Object.defineProperty(this,dF,{writable:!0,value:void 0}),Object.defineProperty(this,hF,{writable:!0,value:void 0}),Object.defineProperty(this,pF,{writable:!0,value:void 0}),Object.defineProperty(this,fF,{writable:!0,value:void 0}),Object.defineProperty(this,mF,{writable:!0,value:null}),Object.defineProperty(this,gF,{writable:!0,value:null}),Object.defineProperty(this,vF,{writable:!0,value:null}),Object.defineProperty(this,yF,{writable:!0,value:null}),Object.defineProperty(this,bF,{writable:!0,value:null}),Object.defineProperty(this,AF,{writable:!0,value:null}),Object.defineProperty(this,xF,{writable:!0,value:""}),Object.defineProperty(this,wF,{writable:!0,value:null}),Object.defineProperty(this,kF,{writable:!0,value:null}),Object.defineProperty(this,SF,{writable:!0,value:null}),Object.defineProperty(this,EF,{writable:!0,value:null}),Object.defineProperty(this,CF,{writable:!0,value:null}),this._translator=null,this._transboxManager=null,this._inputTranslator=null,this._popupManager=null,this._fabManager=null,(0,qt.A)(this,lF)[lF]=(0,qt.A)(this,DF)[DF](t),(0,qt.A)(this,uF)[uF]=(0,qt.A)(this,DF)[DF](n),(0,qt.A)(this,cF)[cF]=(0,qt.A)(this,DF)[DF](r),(0,qt.A)(this,dF)[dF]=(0,qt.A)(this,DF)[DF](i),(0,qt.A)(this,pF)[pF]=o,(0,qt.A)(this,hF)[hF]=a,(0,qt.A)(this,fF)[fF]=s,(0,qt.A)(this,wF)[wF]=(0,qt.A)(this,HF)[HF].bind(this),(0,qt.A)(this,kF)[kF]=(0,qt.A)(this,VF)[VF].bind(this),(0,qt.A)(this,SF)[SF]=(0,qt.A)(this,UF)[UF].bind(this),(0,qt.A)(this,EF)[EF]=(0,qt.A)(this,NF)[NF].bind(this),(0,qt.A)(this,CF)[CF]=(0,qt.A)(this,zF)[zF].bind(this)}start(){(0,qt.A)(this,sF)[sF]?K.vF.info("TranslatorManager is already started."):((0,qt.A)(this,_F)[_F](),(0,qt.A)(this,BF)[BF](),(0,qt.A)(this,fF)[fF]||(0,qt.A)(this,WF)[WF](),(0,qt.A)(this,fF)[fF]||(0,qt.A)(this,pF)[pF]||!(0,qt.A)(this,hF)[hF]||((0,qt.A)(this,GF)[GF](),(0,qt.A)(this,KF)[KF]()),(0,qt.A)(this,fF)[fF]||(0,qt.A)(this,IF)[IF](),(0,qt.A)(this,sF)[sF]=!0,K.vF.info("TranslatorManager started."))}restart(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"spa-navigation";if(!(0,qt.A)(this,sF)[sF])return void K.vF.info("TranslatorManager is not running.");const t=(0,qt.A)(this,PF)[PF]();(0,qt.A)(this,TF)[TF](),(0,qt.A)(this,lF)[lF]=t.setting,(0,qt.A)(this,uF)[uF]=t.rule,(0,qt.A)(this,cF)[cF]=t.fabConfig,(0,qt.A)(this,dF)[dF]=t.favWords,(0,qt.A)(this,_F)[_F](),(0,qt.A)(this,LF)[LF](),K.vF.info("TranslatorManager restarted: ".concat(e))}stop(){(0,qt.A)(this,sF)[sF]?((0,qt.A)(this,RF)[RF](),(0,qt.A)(this,FF)[FF](),window.removeEventListener(o.XRX,(0,qt.A)(this,SF)[SF]),(0,qt.A)(this,hF)[hF]?window.removeEventListener("message",(0,qt.A)(this,wF)[wF]):(Kt.T.runtime.onMessage.removeListener((0,qt.A)(this,kF)[kF]),(0,qt.A)(this,pF)[pF]&&window.removeEventListener("message",(0,qt.A)(this,wF)[wF])),(0,qt.A)(this,iF)[iF].forEach(e=>e()),(0,qt.A)(this,iF)[iF]=[],(0,qt.A)(this,aF)[aF].forEach(e=>e()),(0,qt.A)(this,aF)[aF]=[],globalThis.GM&&(0,qt.A)(this,oF)[oF].length>0&&((0,qt.A)(this,oF)[oF].forEach(e=>{var t,n;return null===(t=(n=GM).unregisterMenuCommand)||void 0===t?void 0:t.call(n,e)}),(0,qt.A)(this,oF)[oF]=[]),(0,qt.A)(this,TF)[TF](),(0,qt.A)(this,sF)[sF]=!1,K.vF.info("TranslatorManager stopped.")):K.vF.info("TranslatorManager is not running.")}}function YF(){(0,qt.A)(this,fF)[fF]?this._transboxManager=new FP((0,qt.A)(this,DF)[DF]((0,qt.A)(this,lF)[lF])):(this._translator=new Gp({rule:(0,qt.A)(this,DF)[DF]((0,qt.A)(this,uF)[uF]),setting:(0,qt.A)(this,DF)[DF]((0,qt.A)(this,lF)[lF]),favWords:(0,qt.A)(this,DF)[DF]((0,qt.A)(this,dF)[dF]),isUserscript:(0,qt.A)(this,hF)[hF],isIframe:(0,qt.A)(this,pF)[pF]}),this._transboxManager=new FP((0,qt.A)(this,DF)[DF]((0,qt.A)(this,lF)[lF])),(0,qt.A)(this,pF)[pF]||(this._inputTranslator=new yg((0,qt.A)(this,DF)[DF]((0,qt.A)(this,lF)[lF])),this._popupManager=new qI({translator:this._translator,processActions:(0,qt.A)(this,qF)[qF].bind(this)}),this._fabManager=new rF({processActions:(0,qt.A)(this,qF)[qF].bind(this),fabConfig:(0,qt.A)(this,DF)[DF]((0,qt.A)(this,cF)[cF])})))}function XF(){var e,t,n,r,i;null===(e=this._popupManager)||void 0===e||e.destroy(),null===(t=this._fabManager)||void 0===t||t.destroy(),null===(n=this._transboxManager)||void 0===n||n.disable(),null===(r=this._inputTranslator)||void 0===r||r.disable(),null===(i=this._translator)||void 0===i||i.stop(),this._translator=null,this._transboxManager=null,this._inputTranslator=null,this._popupManager=null,this._fabManager=null}function JF(e){if(null==e)return e;if("function"===typeof globalThis.structuredClone)try{return globalThis.structuredClone(e)}catch(t){K.vF.debug("structuredClone failed, using JSON clone.",t)}return JSON.parse(JSON.stringify(e))}function QF(){var e,t;return{setting:(0,qt.A)(this,DF)[DF]((null===(e=this._translator)||void 0===e?void 0:e.setting)||(0,qt.A)(this,lF)[lF]),rule:(0,qt.A)(this,DF)[DF]((null===(t=this._translator)||void 0===t?void 0:t.rule)||(0,qt.A)(this,uF)[uF]),fabConfig:(0,qt.A)(this,DF)[DF]((0,qt.A)(this,cF)[cF]),favWords:(0,qt.A)(this,DF)[DF]((0,qt.A)(this,dF)[dF])}}function ZF(){(0,qt.A)(this,mF)[mF]=new MutationObserver(()=>{(0,qt.A)(this,OF)[OF]("document")}),(0,qt.A)(this,mF)[mF].observe(document,{childList:!0}),(0,qt.A)(this,LF)[LF](),window.addEventListener("pageshow",(0,qt.A)(this,EF)[EF]),document.addEventListener("turbo:frame-load",(0,qt.A)(this,CF)[CF],!0)}function eL(){var e,t,n;null===(e=(0,qt.A)(this,mF)[mF])||void 0===e||e.disconnect(),(0,qt.A)(this,mF)[mF]=null,null===(t=(0,qt.A)(this,gF)[gF])||void 0===t||t.disconnect(),(0,qt.A)(this,gF)[gF]=null,null===(n=(0,qt.A)(this,vF)[vF])||void 0===n||n.removeEventListener("turbo:load",(0,qt.A)(this,CF)[CF]),(0,qt.A)(this,vF)[vF]=null,(0,qt.A)(this,yF)[yF]=null,window.removeEventListener("pageshow",(0,qt.A)(this,EF)[EF]),document.removeEventListener("turbo:frame-load",(0,qt.A)(this,CF)[CF],!0)}function tL(){var e,t;null===(e=(0,qt.A)(this,gF)[gF])||void 0===e||e.disconnect(),(0,qt.A)(this,gF)[gF]=null,null===(t=(0,qt.A)(this,vF)[vF])||void 0===t||t.removeEventListener("turbo:load",(0,qt.A)(this,CF)[CF]),(0,qt.A)(this,vF)[vF]=document.documentElement,(0,qt.A)(this,yF)[yF]=document.body,(0,qt.A)(this,vF)[vF]&&((0,qt.A)(this,vF)[vF].addEventListener("turbo:load",(0,qt.A)(this,CF)[CF]),(0,qt.A)(this,gF)[gF]=new MutationObserver(()=>{(0,qt.A)(this,OF)[OF]("documentElement")}),(0,qt.A)(this,gF)[gF].observe((0,qt.A)(this,vF)[vF],{childList:!0}))}function nL(e){(0,qt.A)(this,MF)[MF]()&&(0,qt.A)(this,jF)[jF]("restart",e)}function rL(e){"pageshow"===e.type&&!0!==e.persisted||(0,qt.A)(this,jF)[jF]("rescan",e.type)}function iL(e){(0,qt.A)(this,jF)[jF]("rescan",e.type)}function oL(e,t){(0,qt.A)(this,sF)[sF]&&((0,qt.A)(this,bF)[bF]&&(clearTimeout((0,qt.A)(this,bF)[bF]),(0,qt.A)(this,bF)[bF]=null),"restart"!==e&&"restart"===(0,qt.A)(this,AF)[AF]||((0,qt.A)(this,AF)[AF]=e,(0,qt.A)(this,xF)[xF]=t),"restart"===e&&((0,qt.A)(this,xF)[xF]=t),(0,qt.A)(this,bF)[bF]=setTimeout(()=>{var e;const t=(0,qt.A)(this,AF)[AF],n=(0,qt.A)(this,xF)[xF];(0,qt.A)(this,bF)[bF]=null,(0,qt.A)(this,AF)[AF]=null,(0,qt.A)(this,xF)[xF]="",(0,qt.A)(this,sF)[sF]&&("restart"===t||(0,qt.A)(this,MF)[MF]()?this.restart(n):(null===(e=this._translator)||void 0===e||e.rescan(),K.vF.info("TranslatorManager rescanned: ".concat(n))))},0))}function aL(){(0,qt.A)(this,bF)[bF]&&(clearTimeout((0,qt.A)(this,bF)[bF]),(0,qt.A)(this,bF)[bF]=null,(0,qt.A)(this,AF)[AF]=null,(0,qt.A)(this,xF)[xF]="")}function sL(){return document.documentElement!==(0,qt.A)(this,vF)[vF]||document.body!==(0,qt.A)(this,yF)[yF]}function lL(){(0,qt.A)(this,hF)[hF]?window.addEventListener("message",(0,qt.A)(this,wF)[wF]):(Kt.T.runtime.onMessage.addListener((0,qt.A)(this,kF)[kF]),(0,qt.A)(this,pF)[pF]&&window.addEventListener("message",(0,qt.A)(this,wF)[wF])),window.addEventListener(o.XRX,(0,qt.A)(this,SF)[SF])}function uL(){if((0,qt.A)(this,pF)[pF])return;const{touchModes:e=[2]}=this._translator.setting;if(0===e.length)return;const t=()=>{(0,qt.A)(this,qF)[qF]({action:o.u2k})},n=e=>{let n=null;switch(e){case 2:case 3:case 4:n={taps:1,fingers:e};break;case 5:n={taps:2,fingers:1};break;case 6:n={taps:3,fingers:1};break;case 7:n={taps:2,fingers:2}}n&&(0,qt.A)(this,aF)[aF].push(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=(0,i.A)({taps:2,fingers:1,delay:300},t);let r=0,o=0,a=null,s=!1,l=[];const u=e=>{r=Math.max(r,e.touches.length),l=Array.from(e.touches).map(e=>({x:e.clientX,y:e.clientY}))},c=e=>{if(!s)for(let t=0;t10){s=!0;break}}},d=t=>{0===t.touches.length&&(s||r!==n.fingers?(o=0,clearTimeout(a)):(o++,clearTimeout(a),o===n.taps?(e(t),o=0):a=setTimeout(()=>{o=0},n.delay)),r=0,s=!1,l=[])};return document.addEventListener("touchstart",u,{passive:!0}),document.addEventListener("touchmove",c,{passive:!0}),document.addEventListener("touchend",d,{passive:!0}),()=>{clearTimeout(a),document.removeEventListener("touchstart",u),document.removeEventListener("touchmove",c),document.removeEventListener("touchend",d)}}(t,n))};e.forEach(e=>n(e))}function cL(e){K.vF.debug("handle window message:",e),(0,qt.A)(this,qF)[qF](e.detail)}function dL(e){(0,qt.A)(this,qF)[qF](e.data)}function hL(e,t,n){var r,i;return n((0,qt.A)(this,qF)[qF](e,!0)||{rule:(null===(r=this._translator)||void 0===r?void 0:r.rule)||(0,qt.A)(this,uF)[uF],setting:(null===(i=this._translator)||void 0===i?void 0:i.setting)||(0,qt.A)(this,lF)[lF]}),!0}function pL(){const{shortcuts:e,tranboxSetting:t}=this._translator.setting;(0,qt.A)(this,iF)[iF]=[Fc(e[o.IFN],()=>(0,qt.A)(this,qF)[qF]({action:o.u2k})),Fc(e[o.yzF],()=>(0,qt.A)(this,qF)[qF]({action:o.DCB})),Fc(e[o.T2s],()=>(0,qt.A)(this,qF)[qF]({action:o._TK})),Fc(e[o.aqb],()=>(0,qt.A)(this,qF)[qF]({action:o.grg})),Fc(e[o.CxD],()=>window.open("https://kiss-translator.rayjar.com/options","_blank")),Fc(null===t||void 0===t?void 0:t.tranboxShortcut,()=>(0,qt.A)(this,qF)[qF]({action:o.n10}))]}function fL(){var e,t,n,r,i,a,s,l,u,c;if(!globalThis.GM)return;const{contextMenuType:d,uiLang:h}=this._translator.setting;if(0===d)return;const p=(0,o.BM1)(h||"zh");(0,qt.A)(this,oF)[oF]=[null===(e=(t=GM).registerMenuCommand)||void 0===e?void 0:e.call(t,p("translate_switch"),()=>(0,qt.A)(this,qF)[qF]({action:o.u2k}),"Q"),null===(n=(r=GM).registerMenuCommand)||void 0===n?void 0:n.call(r,p("transonly_alt"),()=>(0,qt.A)(this,qF)[qF]({action:o.DCB}),"Q"),null===(i=(a=GM).registerMenuCommand)||void 0===i?void 0:i.call(a,p("toggle_style"),()=>(0,qt.A)(this,qF)[qF]({action:o._TK}),"C"),null===(s=(l=GM).registerMenuCommand)||void 0===s?void 0:s.call(l,p("open_menu"),()=>(0,qt.A)(this,qF)[qF]({action:o.grg}),"K"),null===(u=(c=GM).registerMenuCommand)||void 0===u?void 0:u.call(c,p("open_setting"),()=>window.open("https://kiss-translator.rayjar.com/options","_blank"),"O")]}function mL(){var e,t,n,r,i,a,s,l,u,c,d,h;let{action:p,args:f}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(p)switch(arguments.length>1&&void 0!==arguments[1]&&arguments[1]||((e,t)=>{document.querySelectorAll("iframe").forEach(n=>{n.contentWindow.postMessage({action:e,args:t},"*")})})(p,f),K.vF.debug("process action:",p,f),p){case o.u2k:null===(e=this._translator)||void 0===e||e.toggle();break;case o.DCB:null===(t=this._translator)||void 0===t||t.toggleTransOnly();break;case o._TK:null===(n=this._translator)||void 0===n||n.toggleStyle();break;case o.IaM:break;case o.Rfh:null===(r=this._translator)||void 0===r||r.updateRule(f);break;case o.GRp:document.dispatchEvent(new CustomEvent(o.nRB,{detail:{action:o.GRp,args:f}}));break;case o.grg:null===(i=this._popupManager)||void 0===i||i.toggle();break;case o.n10:null===(a=this._transboxManager)||void 0===a||a.toggle(),null===(s=this._translator)||void 0===s||s.toggleTransbox();break;case o.F_o:null===(l=this._translator)||void 0===l||l.toggleMouseHover();break;case o.EWA:null===(u=this._inputTranslator)||void 0===u||u.toggle(),null===(c=this._translator)||void 0===c||c.toggleInputTranslate();break;case o.wPo:null===(d=this._translator)||void 0===d||d.toggleHoverNode();break;case o.mul:null===(h=this._inputTranslator)||void 0===h||h.handleTranslate();break;default:return K.vF.info("Message action is unavailable: ".concat(p)),{error:"Message action is unavailable: ".concat(p)}}}function gL(){if("undefined"!==typeof unsafeWindow)unsafeWindow.GM=GM,unsafeWindow.APP_INFO={name:"KISS Translator",version:"2.0.29"};else{const e=(0,l.Sm)();window.addEventListener(e,u.Xg),sc("(".concat(u.f8,')("').concat(e,'")'),"kiss-translator-options-injector")}}const vL=["script","style","template","noscript","svg","canvas","iframe","input","textarea","select","option",".notranslate","[translate='no']","[contenteditable='true']"].join(", ");async function yL(){return await function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1e3;return"loading"!==document.readyState?Promise.resolve():new Promise(t=>{const n=()=>{clearTimeout(r),document.removeEventListener("DOMContentLoaded",n),t()},r=setTimeout(n,e);document.addEventListener("DOMContentLoaded",n,{once:!0})})}(),function(){if(!document.body)return!1;const e=document.createTreeWalker(document.body,NodeFilter.SHOW_TEXT,{acceptNode(e){var t,n;return null!==(t=e.nodeValue)&&void 0!==t&&t.trim()?null!==(n=e.parentElement)&&void 0!==n&&n.closest(vL)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_REJECT}});return Boolean(e.nextNode())}()}globalThis.__KISS_CONTEXT__="content",async function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];try{var t,r,u,c,d,h,p;const f=(null===(t=document)||void 0===t||null===(r=t.location)||void 0===r?void 0:r.href)||"";if(e){if(globalThis.GM=globalThis.GM||{},globalThis.GM.xmlHttpRequest=globalThis.GM.xmlHttpRequest||globalThis.GM_xmlhttpRequest,globalThis.GM.registerMenuCommand=globalThis.GM.registerMenuCommand||globalThis.GM_registerMenuCommand,globalThis.GM.unregisterMenuCommand=globalThis.GM.unregisterMenuCommand||globalThis.GM_unregisterMenuCommand,globalThis.GM.setValue=globalThis.GM.setValue||globalThis.GM_setValue,globalThis.GM.getValue=globalThis.GM.getValue||globalThis.GM_getValue,globalThis.GM.deleteValue=globalThis.GM.deleteValue||globalThis.GM_deleteValue,globalThis.GM.info=globalThis.GM.info||globalThis.GM_info,function(e){return["https://kiss-translator.rayjar.com/options","https://fishjar.github.io/kiss-translator/options.html","https://kiss-translator-dev.rayjar.com/options","http://localhost:3000/options.html"].filter(Boolean).some(t=>e.startsWith(t))}(f))return void gL();const{runDataMigration:e}=await Promise.resolve().then(n.bind(n,8930));await e()}const m=await(0,a.C$)();K.vF.setLevel(m.logLevel);const g=(null===(u=document)||void 0===u||null===(c=u.contentType)||void 0===c?void 0:c.toLowerCase())||"",v=g.includes("application/pdf");if(!g.includes("text")&&!g.includes("html")&&!v)return void K.vF.info("Skip running in document content type: ",g);if(Ta(f,m.blacklist))return;if(s&&!await yL())return;Ta(f,null===(d=m.tranboxSetting)||void 0===d?void 0:d.blacklist)&&(m.tranboxSetting.transOpen=!1),Ta(f,null===(h=m.inputRule)||void 0===h?void 0:h.blacklist)&&(m.inputRule.transOpen=!1),Ta(f,null===(p=m.mouseHoverSetting)||void 0===p?void 0:p.blacklist)&&(m.mouseHoverSetting.useMouseHover=!1);const y=await Ca(f,m),b=await async function(e){if(e.highlightWords&&e.highlightWords!==o.Gie)try{return Object.keys(await(0,a.lk)())}catch(t){K.vF.info("get fav words",t)}return[]}(y),A=(0,i.A)({},await(0,a.Zu)());s||v||!Ta(f,A.hideExceptionList)||(A.isHide=!A.isHide);if(new $F({setting:m,rule:y,fabConfig:A,favWords:b,isIframe:s,isUserscript:e,transboxOnly:v}).start(),s||v)return;!function(e){let{href:t,setting:n}=e;try{const e=n.subtitleSetting||ac.Oc;if(!e.enabled)return;const r=hc.find(e=>(0,l.uv)(t,e.pattern));if(r){dc(lc,"kiss-translator-inject-subtitle-js");const t=n.transApis||[],o=t.find(t=>t.apiSlug===e.apiSlug)||oc.iV;r.start((0,i.A)((0,i.A)({},e),{},{apiSetting:o,transApis:t,prompts:n.prompts,uiLang:n.uiLang}))}}catch(r){K.vF.error("start subtitle provider failed",r)}}({href:f,setting:m,rule:y,isUserscript:e}),e&&Tn(m)}catch(f){console.error("[KISS-Translator]",f),function(e){const t="KISS-Translator-Message",n=document.getElementById(t);n&&n.remove();const r=document.createElement("div");r.id=t,Object.assign(r.style,{position:"fixed",top:"0",left:"0",width:"100%",backgroundColor:"#f44336",color:"white",textAlign:"center",padding:"8px 16px",zIndex:"1001",boxSizing:"border-box",fontSize:"16px",boxShadow:"0 2px 5px rgba(0,0,0,0.2)"});const i=document.createElement("span");i.textContent="\xd7",Object.assign(i.style,{position:"absolute",top:"50%",right:"20px",transform:"translateY(-50%)",cursor:"pointer",fontSize:"22px",fontWeight:"bold"});const o=document.createTextNode("KISS-Translator: ".concat(e));r.appendChild(o),r.appendChild(i),document.body.appendChild(r);const a=()=>{r.style.transition="opacity 0.5s ease",r.style.opacity="0",setTimeout(()=>{r&&r.parentNode&&r.parentNode.removeChild(r)},500)};i.onclick=a,setTimeout(a,1e4)}(f.message)}}()})()})(); \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/content.js.LICENSE.txt b/android/app/src/main/assets/extensions/kiss_translator/content.js.LICENSE.txt new file mode 100644 index 00000000..361fdb8f --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/content.js.LICENSE.txt @@ -0,0 +1,90 @@ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + +/*! For license information please see index.js.LICENSE.txt */ + +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-is.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/android/app/src/main/assets/extensions/kiss_translator/favicon.ico b/android/app/src/main/assets/extensions/kiss_translator/favicon.ico new file mode 100644 index 00000000..d75ceea0 Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/favicon.ico differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/images/logo128.png b/android/app/src/main/assets/extensions/kiss_translator/images/logo128.png new file mode 100644 index 00000000..972f7746 Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/images/logo128.png differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/images/logo128_active.png b/android/app/src/main/assets/extensions/kiss_translator/images/logo128_active.png new file mode 100644 index 00000000..8c728cb0 Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/images/logo128_active.png differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/images/logo16.png b/android/app/src/main/assets/extensions/kiss_translator/images/logo16.png new file mode 100644 index 00000000..28909fc0 Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/images/logo16.png differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/images/logo16_active.png b/android/app/src/main/assets/extensions/kiss_translator/images/logo16_active.png new file mode 100644 index 00000000..fcd95c40 Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/images/logo16_active.png differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/images/logo192.png b/android/app/src/main/assets/extensions/kiss_translator/images/logo192.png new file mode 100644 index 00000000..086acf81 Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/images/logo192.png differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/images/logo192_active.png b/android/app/src/main/assets/extensions/kiss_translator/images/logo192_active.png new file mode 100644 index 00000000..c7e69365 Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/images/logo192_active.png differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/images/logo32.png b/android/app/src/main/assets/extensions/kiss_translator/images/logo32.png new file mode 100644 index 00000000..8312907d Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/images/logo32.png differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/images/logo32_active.png b/android/app/src/main/assets/extensions/kiss_translator/images/logo32_active.png new file mode 100644 index 00000000..75ce4a97 Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/images/logo32_active.png differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/images/logo48.png b/android/app/src/main/assets/extensions/kiss_translator/images/logo48.png new file mode 100644 index 00000000..24bb76ee Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/images/logo48.png differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/images/logo48_active.png b/android/app/src/main/assets/extensions/kiss_translator/images/logo48_active.png new file mode 100644 index 00000000..8c78bc76 Binary files /dev/null and b/android/app/src/main/assets/extensions/kiss_translator/images/logo48_active.png differ diff --git a/android/app/src/main/assets/extensions/kiss_translator/injector-shadowroot.js b/android/app/src/main/assets/extensions/kiss_translator/injector-shadowroot.js new file mode 100644 index 00000000..3d1288c9 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/injector-shadowroot.js @@ -0,0 +1 @@ +(()=>{"use strict";(()=>{try{const t=Element.prototype.attachShadow;Element.prototype.attachShadow=function(){for(var o=arguments.length,e=new Array(o),a=0;a{"use strict";(()=>{try{const t=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(){for(var e=arguments.length,o=new Array(e),n=0;n", + "homepage_url": "https://github.com/fishjar/kiss-translator", + "background": { + "scripts": [ + "background.js" + ] + }, + "content_scripts": [ + { + "js": [ + "content.js" + ], + "matches": [ + "", + "file://*/*" + ], + "all_frames": true, + "match_origin_as_fallback": true, + "match_about_blank": true + } + ], + "web_accessible_resources": [ + "injector-subtitle.js", + "injector-shadowroot.js" + ], + "commands": { + "_execute_browser_action": { + "suggested_key": { + "default": "Alt+K" + } + }, + "toggleTranslate": { + "suggested_key": { + "default": "Alt+Q" + }, + "description": "__MSG_toggle_translate__" + }, + "toggleTranslateOnly": { + "description": "__MSG_toggle_translate_only__" + }, + "openTranbox": { + "suggested_key": { + "default": "Alt+S" + }, + "description": "__MSG_open_tranbox__" + }, + "openSeparateWindow": { + "description": "__MSG_open_separate_window__" + }, + "toggleStyle": { + "suggested_key": { + "default": "Alt+C" + }, + "description": "__MSG_toggle_style__" + }, + "openOptions": { + "description": "__MSG_open_options__" + } + }, + "permissions": [ + "", + "storage", + "contextMenus", + "scripting", + "declarativeNetRequest" + ], + "icons": { + "16": "images/logo16.png", + "32": "images/logo32.png", + "48": "images/logo48.png", + "128": "images/logo128.png" + }, + "browser_action": { + "default_icon": { + "128": "images/logo128.png" + }, + "default_title": "__MSG_app_name__", + "default_popup": "popup.html" + }, + "options_ui": { + "page": "options.html", + "open_in_tab": true + }, + "browser_specific_settings": { + "gecko": { + "id": "{fb25c100-22ce-4d5a-be7e-75f3d6f0fc13}" + } + } +} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/options.html b/android/app/src/main/assets/extensions/kiss_translator/options.html new file mode 100644 index 00000000..6385eeaf --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/options.html @@ -0,0 +1,11 @@ +KISS Translator - Open-source, minimalist bilingual translation
\ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/options.js b/android/app/src/main/assets/extensions/kiss_translator/options.js new file mode 100644 index 00000000..971f0651 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/options.js @@ -0,0 +1,2 @@ +/*! For license information please see options.js.LICENSE.txt */ +(()=>{var e={60(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M17 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V7zm-5 16c-1.66 0-3-1.34-3-3s1.34-3 3-3 3 1.34 3 3-1.34 3-3 3m3-10H5V5h10z"}),"Save")},63(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(7461).A},252(e,t,n){"use strict";n.d(t,{Zy:()=>i,aQ:()=>a});var r=n(7877);const o="firefox",a=r.vGH.includes(o),i=o===r.tPe;r.n_K,r.ojT},288(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r.A});var r=n(6253)},328(e,t,n){"use strict";n.d(t,{DR:()=>i,J4:()=>u,M:()=>c,Qz:()=>o,TY:()=>s,U3:()=>p,cO:()=>l,j7:()=>a,sR:()=>d,vL:()=>r});const r="kiss_fetch",o="get_httpcache",a="put_httpcache",i="context_menus",s="update_csp",l="builtinai_detect",u="builtinai_translte",c="set_loglevel",d="kiss_stream_fetch",p="sha256"},450(e,t,n){"use strict";n.d(t,{A:()=>a});var r=n(4346),o=n(6121);class a{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.tokenizer=new r.A(e),this.tokenParser=new o.A(e),this.tokenizer.onToken=this.tokenParser.write.bind(this.tokenParser),this.tokenizer.onEnd=()=>{this.tokenParser.isEnded||this.tokenParser.end()},this.tokenParser.onError=this.tokenizer.error.bind(this.tokenizer),this.tokenParser.onEnd=()=>{this.tokenizer.isEnded||this.tokenizer.end()}}get isEnded(){return this.tokenizer.isEnded&&this.tokenParser.isEnded}write(e){this.tokenizer.write(e)}end(){this.tokenizer.end()}set onToken(e){this.tokenizer.onToken=t=>{e(t),this.tokenParser.write(t)}}set onValue(e){this.tokenParser.onValue=e}set onError(e){this.tokenizer.onError=e}set onEnd(e){this.tokenParser.onEnd=()=>{this.tokenizer.isEnded||this.tokenizer.end(),e.call(this.tokenParser)}}}},457(e,t,n){"use strict";n.d(t,{C:()=>u,E:()=>g,T:()=>d,c:()=>f,h:()=>p,w:()=>c});var r=n(8661),o=n(5449),a=n(696),i=n(3385),s=n(4774),l=r.createContext("undefined"!==typeof HTMLElement?(0,o.A)({key:"css"}):null),u=l.Provider,c=function(e){return(0,r.forwardRef)(function(t,n){var o=(0,r.useContext)(l);return e(t,o,n)})},d=r.createContext({});var p={}.hasOwnProperty,h="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",f=function(e,t){var n={};for(var r in t)p.call(t,r)&&(n[r]=t[r]);return n[h]=e,n},m=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return(0,a.SF)(t,n,r),(0,s.s)(function(){return(0,a.sk)(t,n,r)}),null},g=c(function(e,t,n){var o=e.css;"string"===typeof o&&void 0!==t.registered[o]&&(o=t.registered[o]);var s=e[h],l=[o],u="";"string"===typeof e.className?u=(0,a.Rk)(t.registered,l,e.className):null!=e.className&&(u=e.className+" ");var c=(0,i.J)(l,void 0,r.useContext(d));u+=t.key+"-"+c.name;var f={};for(var g in e)p.call(e,g)&&"css"!==g&&g!==h&&(f[g]=e[g]);return f.className=u,n&&(f.ref=n),r.createElement(r.Fragment,null,r.createElement(m,{cache:t,serialized:c,isStringTag:"string"===typeof s}),r.createElement(s,f))})},533(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M16 17.01V10h-2v7.01h-3L15 21l4-3.99zM9 3 5 6.99h3V14h2V6.99h3z"}),"SwapVert")},561(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"m12 21.35-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54z"}),"Favorite")},696(e,t,n){"use strict";n.d(t,{Rk:()=>r,SF:()=>o,sk:()=>a});function r(e,t,n){var r="";return n.split(" ").forEach(function(n){void 0!==e[n]?t.push(e[n]+";"):n&&(r+=n+" ")}),r}var o=function(e,t,n){var r=e.key+"-"+t.name;!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles)},a=function(e,t,n){o(e,t,n);var r=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var a=t;do{e.insert(t===a?"."+r:"",a,e.sheet,!0),a=a.next}while(void 0!==a)}}},847(e,t,n){"use strict";n.d(t,{oj:()=>r.A});var r=n(450);n(4346),n(6121),n(4093),n(3517),n(8763),n(2458)},890(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6z"}),"Add")},1006(e,t,n){"use strict";function r(e,t){const n=this;if(n.vars&&"function"===typeof n.getColorSchemeSelector){const r=n.getColorSchemeSelector(e).replace(/(\[[^\]]+\])/,"*:where($1)");return{[r]:t}}return n.palette.mode===e?t:{}}n.d(t,{A:()=>r})},1029(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"}),"ContentCopy")},1053(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M6 6h12v12H6z"}),"Stop")},1092(e,t){"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),h=Symbol.iterator;var f={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,g={};function v(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||f}function y(){}function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||f}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!==typeof e&&"function"!==typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},y.prototype=v.prototype;var x=b.prototype=new y;x.constructor=b,m(x,v.prototype),x.isPureReactComponent=!0;var A=Array.isArray,D=Object.prototype.hasOwnProperty,k={current:null},w={key:!0,ref:!0,__self:!0,__source:!0};function S(e,t,r){var o,a={},i=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(i=""+t.key),t)D.call(t,o)&&!w.hasOwnProperty(o)&&(a[o]=t[o]);var l=arguments.length-2;if(1===l)a.children=r;else if(1o});var r=n(5482);function o(e){return function(){return new a(e.apply(this,arguments))}}function a(e){var t,n;function o(t,n){try{var i=e[t](n),s=i.value,l=s instanceof r.A;Promise.resolve(l?s.v:s).then(function(n){if(l){var r="return"===t?"return":"next";if(!s.k||n.done)return o(r,n);n=e[r](n).value}a(i.done?"return":"normal",n)},function(e){o("throw",e)})}catch(e){a("throw",e)}}function a(e,r){switch(e){case"return":t.resolve({value:r,done:!0});break;case"throw":t.reject(r);break;default:t.resolve({value:r,done:!1})}(t=t.next)?o(t.key,t.arg):n=null}this._invoke=function(e,r){return new Promise(function(a,i){var s={key:e,arg:r,resolve:a,reject:i,next:null};n?n=n.next=s:(t=n=s,o(e,r))})},"function"!=typeof e.return&&(this.return=void 0)}a.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},a.prototype.next=function(e){return this._invoke("next",e)},a.prototype.throw=function(e){return this._invoke("throw",e)},a.prototype.return=function(e){return this._invoke("return",e)}},1163(e,t,n){"use strict";function r(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;const r={};return Object.keys(e).forEach(o=>{r[o]=e[o].reduce((e,r)=>{if(r){const o=t(r);""!==o&&e.push(o),n&&n[r]&&e.push(n[r])}return e},[]).join(" ")}),r}n.d(t,{A:()=>r})},1166(e,t,n){"use strict";function r(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return"";let n=e.replace(/^```[a-z]*\s*\n?/i,"");return t||(n=n.replace(/\n?```$/i,"")),n}n.d(t,{$Q:()=>d,C5:()=>a,Ln:()=>f,MF:()=>u,Ms:()=>h,Mt:()=>D,NS:()=>o,NW:()=>c,Qv:()=>x,Sk:()=>m,Sm:()=>p,dt:()=>i,eg:()=>v,f6:()=>g,if:()=>r,jJ:()=>A,sg:()=>l,sz:()=>b,wj:()=>y,yy:()=>s});const o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100;const r=parseInt(e);return Number.isNaN(r)||rn?n:r},a=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:100;const r=parseFloat(e);return Number.isNaN(r)||rn?n:r},i=(e,t)=>0===e.length||e.includes(t)?t:e[0],s=e=>new Promise(t=>{const n=setTimeout(()=>{clearTimeout(n),t()},e)}),l=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,n=null;const r=function(){for(var r=arguments.length,o=new Array(r),a=0;a{e(...o),n=null},t)};return r.cancel=()=>{clearTimeout(n),n=null},r},u=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0;for(;nObject.prototype.toString.call(e).match(/\[object (.*?)\]/)[1].toLowerCase(),d=async(e,t)=>{const n=(new TextEncoder).encode(e+t),r=await crypto.subtle.digest({name:"SHA-256"},n);return[...new Uint8Array(r)].map(e=>e.toString(16).padStart(2,"0")).join("")},p=()=>"kiss-".concat(btoa(Math.random()).slice(3,11)),h=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(!e)return"";let r=e.length;for(;r>e.length-n&&e[r-1]===t;)r--;return e.slice(0,r)},f=e=>/^[a-zA-Z-]+$/.test(e),m=e=>new Promise(t=>{const n=new FileReader;n.onloadend=()=>t(n.result),n.readAsDataURL(e)}),g=e=>{if(!e||"string"!==c(e))return{};try{return"{"!==e.trim()[0]&&(e="{".concat(e,"}")),JSON.parse(e)}catch(t){}return{}},v=e=>{const t=e.match(/({[^]*}|\[[^]*\])/);return t?t[0]:null},y=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Task timed out";const r="function"===typeof e?e():e;return Promise.race([r,new Promise((e,r)=>setTimeout(()=>r(new Error(n)),t))])},b=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;if("string"!==typeof e)return"";if(e.length<=t)return e;const n=e.slice(0,t);return n.slice(0,n.lastIndexOf(" "))+" \u2026"};function x(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"kiss-file.txt";const n=function(e){const t="application/octet-stream";return e&&-1!==e.indexOf(".")&&{txt:"text/plain;charset=utf-8",html:"text/html;charset=utf-8",css:"text/css;charset=utf-8",js:"text/javascript;charset=utf-8",json:"application/json;charset=utf-8",xml:"application/xml;charset=utf-8",md:"text/markdown;charset=utf-8",vtt:"text/vtt;charset=utf-8",png:"image/png",jpg:"image/jpeg",jpeg:"image/jpeg",gif:"image/gif",svg:"image/svg+xml",webp:"image/webp",ico:"image/x-icon",mp3:"audio/mpeg",mp4:"video/mp4",webm:"video/webm",wav:"audio/wav",pdf:"application/pdf",zip:"application/zip",doc:"application/msword",docx:"application/vnd.openxmlformats-officedocument.wordprocessingml.document",xls:"application/vnd.ms-excel",xlsx:"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}[e.split(".").pop().toLowerCase()]||t}(t),r=new Blob([e],{type:n}),o=URL.createObjectURL(r),a=document.createElement("a");a.style.display="none",a.href=o,a.download=t||"kiss-file.txt",document.body.appendChild(a),a.click(),document.body.removeChild(a),URL.revokeObjectURL(o)}function A(e){if("string"!==typeof e||""===e.trim())return{};try{return Object.fromEntries(e.split(/\n|;/).map(e=>{const[t="",n=""]=e.split(",").map(e=>e.trim());return[t,n]}).filter(e=>{let[t]=e;return t}))}catch(t){return{}}}const D=e=>/^[\u4e00-\u9fa5]$/.test(e||"")},1210(e,t,n){"use strict";n.d(t,{A:()=>r});const r=(0,n(6966).A)()},1223(e,t,n){"use strict";n.d(t,{Lx:()=>s,T:()=>r,_9:()=>a,tc:()=>i});const r=function(){try{return n(9286)}catch(e){}}(),o=()=>{const e=globalThis.__KISS_CONTEXT__;return e||"undefined"},a=()=>"background"===o(),i=()=>"options"===o(),s="LanguageDetector"in globalThis&&"Translator"in globalThis},1229(e){e.exports=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n},e.exports.__esModule=!0,e.exports.default=e.exports},1263(e,t,n){"use strict";n.d(t,{W:()=>r,x:()=>o});class r{constructor(){this.decoder=new TextDecoder("utf-8"),this.strings=[],this.byteLength=0}appendChar(e){this.strings.push(String.fromCharCode(e)),this.byteLength+=1}appendBuf(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length;this.strings.push(this.decoder.decode(e.subarray(t,n))),this.byteLength+=n-t}reset(){this.strings=[],this.byteLength=0}toString(){return this.strings.join("")}}class o{constructor(e){this.decoder=new TextDecoder("utf-8"),this.bufferOffset=0,this.string="",this.byteLength=0,this.buffer=new Uint8Array(e)}appendChar(e){this.bufferOffset>=this.buffer.length&&this.flushStringBuffer(),this.buffer[this.bufferOffset++]=e,this.byteLength+=1}appendBuf(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length;const r=n-t;this.bufferOffset+r>this.buffer.length&&this.flushStringBuffer(),this.buffer.set(e.subarray(t,n),this.bufferOffset),this.bufferOffset+=r,this.byteLength+=r}flushStringBuffer(){this.string+=this.decoder.decode(this.buffer.subarray(0,this.bufferOffset)),this.bufferOffset=0}reset(){this.string="",this.bufferOffset=0,this.byteLength=0}toString(){return this.flushStringBuffer(),this.string}}},1270(e,t,n){"use strict";n.d(t,{n:()=>a});const r=e=>String(e).toLowerCase().replace(/[\u2019\u2018]/g,"'").replace(/[-\u2010\u2013\u2014]/g," ").split(/\s+/).map(e=>e.replace(/(?:[\0-\/:-@\[-`\{-\xA9\xAB-\xB1\xB4\xB6-\xB8\xBB\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u065F\u066A-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07BF\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u0890-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0965\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09E5\u09F2\u09F3\u09FA\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A65\u0A70\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AE5\u0AF0-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B65\u0B70\u0B78-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0BE5\u0BF3-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5E\u0C5F\u0C62-\u0C65\u0C70-\u0C77\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDB\u0CDF\u0CE2-\u0CE5\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57\u0D62-\u0D65\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DE5\u0DF0-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F1F\u0F34-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u104A-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u1368\u137D-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u17DF\u17EA-\u17EF\u17FA-\u180F\u181A-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19FF\u1A17-\u1A1F\u1A55-\u1A7F\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B4F\u1B5A-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BFF\u1C24-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C8B-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u206F\u2072\u2073\u207A-\u207E\u208A-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A-\u245F\u249C-\u24E9\u2500-\u2775\u2794-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFC\u2CFE\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3008-\u3020\u302A-\u3030\u3036\u3037\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u3191\u3196-\u319F\u31C0-\u31EF\u3200-\u321F\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6F0-\uA716\uA720\uA721\uA789\uA78A\uA7DD-\uA7F0\uA802\uA806\uA80B\uA823-\uA82F\uA836-\uA83F\uA874-\uA881\uA8B4-\uA8CF\uA8DA-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9DA-\uA9DF\uA9E5\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD06\uDD34-\uDD3F\uDD79-\uDD89\uDD8C-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEE0\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDBF\uDDF4-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC57\uDC77\uDC78\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1F\uDD3A-\uDD3F\uDD5A-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE3F\uDE49-\uDE5F\uDE7F\uDEA0-\uDEBF\uDEC8\uDEE5-\uDEEA\uDEF0-\uDEFF\uDF36-\uDF3F\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD24-\uDD2F\uDD3A-\uDD3F\uDD66-\uDD6E\uDD86-\uDE5F\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEC1\uDEC8-\uDEFF\uDF28-\uDF2F\uDF46-\uDF50\uDF55-\uDF6F\uDF82-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC51\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDD02\uDD27-\uDD35\uDD40-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDCF\uDDDB\uDDDD-\uDDE0\uDDF5-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDEEF\uDEFA-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDF7F\uDF8A\uDF8C\uDF8D\uDF8F\uDFB6\uDFB8-\uDFD0\uDFD2\uDFD4-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC4F\uDC5A-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEBF\uDECA-\uDECF\uDEE4-\uDEFF\uDF1B-\uDF2F\uDF3C-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFBF\uDFE1-\uDFEF\uDFFA-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC4F\uDC6D-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDD9F\uDDAA-\uDDAF\uDDDC-\uDDDF\uDDEA-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDF4F\uDF5A-\uDFAF\uDFB1-\uDFBF\uDFD5-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD812-\uD817\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD832\uD836\uD83D\uD83F\uD87C\uD87D\uD87F\uD88E-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDC5F]|\uD810[\uDFFB-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD818[\uDC00-\uDCFF\uDD1E-\uDD2F\uDD3A-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6F\uDEBF\uDECA-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDD3F\uDD6D-\uDD6F\uDD7A-\uDE3F\uDE97-\uDE9F\uDEB9\uDEBA\uDED4-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFF1\uDFF7-\uDFFF]|\uD823[\uDCD6-\uDCFE\uDD1F-\uDD7F\uDDF3-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD833[\uDC00-\uDCEF\uDCFA-\uDFFF]|\uD834[\uDC00-\uDEBF\uDED4-\uDEDF\uDEF4-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDEEF\uDEFA-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDCEF\uDCFA-\uDDCF\uDDEE\uDDEF\uDDFB-\uDEBF\uDEDF\uDEE3\uDEE6\uDEEE\uDEEF\uDEF5-\uDEFD\uDF00-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD0-\uDCFF\uDD44-\uDD4A\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCAC\uDCB0\uDCB5-\uDD00\uDD2E\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDCFF\uDD0D-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEAE\uDEAF]|\uD87A[\uDFE1-\uDFEF]|\uD87B[\uDE5E-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD88D[\uDC7A-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,"")).filter(Boolean),o=(e,t,n)=>Math.max(t,Math.min(e,n)),a=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=[],n=[];for(let o=0;o{if(e<0||e+n.length>t.length)return!1;for(let r=0;r{const u=r(l),c=u.length;if(c<2||0===t.length)return null;const d=o(a,0,e.length-1),p=o(i,d,e.length-1),h=[];for(let e=n[d];ee===u[t]))return null;const f=o(n[d],0,t.length-1),m=u.slice(-Math.min(3,c)),g=2===c?[0]:[0,1,2].filter(e=>e+3<=c),v=new Map;for(const e of g){const n=2===c?u.slice(0,2):u.slice(e,e+3),r=Math.max(0,f-32),o=Math.min(t.length-n.length,f+32);for(let a=r;a<=o;a++){if(!s(a,n))continue;const r=a-e;if(r<0)continue;const o=r+c-1;if(o>=t.length)continue;const i=r+c-m.length;let l=!1,u=o;for(let e=0;e<=4&&!l;e++){const t=0===e?[i]:[i-e,i+e];for(const e of t)if(e>=r&&s(e,m)){l=!0,u=e+m.length-1;break}}const d={startPos:r,endPos:u,tailOK:l,offset:e,dist:Math.abs(r-f)};v.has(r)||v.set(r,d)}}const y=[...v.values()];if(!y.length)return null;if(2===c&&y.length>1)return null;const b=y.filter(e=>e.tailOK);let x=null;if(b.length){b.sort((e,t)=>(e.offset>0)-(t.offset>0)||e.dist-t.dist);const[e,t]=b;if(t&&Boolean(e.offset>0)===Boolean(t.offset>0)&&e.dist===t.dist)return null;x=e}else{if(1!==y.length||0!==y[0].offset||c<3)return null;x=y[0]}const A=t[x.startPos].ei,D=Math.max(A,t[x.endPos].ei);return A===d&&D===p?null:{startIdx:A,endIdx:D}}}}},1310(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M12 7c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5M2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1m18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1M11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1m0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1M5.99 4.58c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41zm12.37 12.37c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0 .39-.39.39-1.03 0-1.41zm1.06-10.96c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0zM7.05 18.36c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0z"}),"LightMode")},1367(e,t,n){"use strict";n.d(t,{$E:()=>f,As:()=>a,ED:()=>b,Hz:()=>v,Qs:()=>c,Rr:()=>x,SX:()=>g,TY:()=>s,VE:()=>y,Vf:()=>o,WD:()=>l,_s:()=>d,e:()=>h,hr:()=>i,ms:()=>u,ns:()=>r,p5:()=>D,q_:()=>A,zM:()=>m,zw:()=>p});const r="style_none",o="under_line",a="dot_line",i="dash_line",s="dash_line_bold",l="dash_box",u="dash_box_bold",c="wavy_line",d="wavy_line_bold",p="marker",h="gradient_marker",f="fuzzy",m="highlight",g="blockquote",v="gradient",y="blink",b="glow",x="colorful",A=[r,o,a,i,s,c,d,l,u,p,h,f,m,g,v,y,b,x],D=[{styleSlug:"custom",styleName:"Custom Style",styleCode:"color: #209CEE;"}]},1397(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z"}),"Check")},1419(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"m16.24 11.51 1.57-1.57-3.75-3.75-1.57 1.57-4.14-4.13c-.78-.78-2.05-.78-2.83 0l-1.9 1.9c-.78.78-.78 2.05 0 2.83l4.13 4.13L3 17.25V21h3.75l4.76-4.76 4.13 4.13c.95.95 2.23.6 2.83 0l1.9-1.9c.78-.78.78-2.05 0-2.83zm-7.06-.44L5.04 6.94l1.89-1.9L8.2 6.31 7.02 7.5l1.41 1.41 1.19-1.19 1.45 1.45zm7.88 7.89-4.13-4.13 1.9-1.9 1.45 1.45-1.19 1.19 1.41 1.41 1.19-1.19 1.27 1.27zm3.65-11.92c.39-.39.39-1.02 0-1.41l-2.34-2.34c-.47-.47-1.12-.29-1.41 0l-1.83 1.83 3.75 3.75z"}),"DesignServices")},1437(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z"}),"Done")},1442(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(5482);function o(e){return new r.A(e,0)}},1446(e,t,n){"use strict";var r=n(8661),o=n(4651);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
\u3002',en:'1. br replaces
line breaks with

. 2. bn replaces \\n newline with

. 3. brToDiv and bnToDiv are replaced with

.',zh_TW:'1. br \u6703\u5c07
\u63db\u884c\u66ff\u63db\u70ba

\u30022. bn \u6703\u5c07 \\n \u63db\u884c\u66ff\u63db\u70ba

\u30023. brToDiv \u8207 bnToDiv \u6703\u66ff\u63db\u70ba

\u3002',ja:'1. br \u306f
\u6539\u884c\u3092

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002 2. bn \u306f \\n \u6539\u884c\u3092

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002 3. brToDiv \u3068 bnToDiv \u306f

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002',ko:'1. br\uc740
\uc904\ubc14\uafc8\uc744

\ub85c \ub300\uccb4\ud569\ub2c8\ub2e4. 2. bn\uc740 \\n \uc904\ubc14\uafc8\uc744

\ub85c \ub300\uccb4\ud569\ub2c8\ub2e4. 3. brToDiv \ubc0f bnToDiv\ub294

\ub85c \ub300\uccb4\ub429\ub2c8\ub2e4.',tr:'1. br,
sat\u0131r sonlar\u0131n\u0131

ile de\u011fi\u015ftirir. 2. bn, \\n yeni sat\u0131r\u0131

ile de\u011fi\u015ftirir. 3. brToDiv ve bnToDiv,

ile de\u011fi\u015ftirildi.'},import:{zh:"\u5bfc\u5165",en:"Import",zh_TW:"\u532f\u5165",ja:"\u30a4\u30f3\u30dd\u30fc\u30c8",ko:"\uac00\uc838\uc624\uae30",tr:"\u0130\xe7e Aktar"},export:{zh:"\u5bfc\u51fa",en:"Export",zh_TW:"\u532f\u51fa",ja:"\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\ub0b4\ubcf4\ub0b4\uae30",tr:"D\u0131\u015fa Aktar"},export_translation:{zh:"\u5bfc\u51fa\u91ca\u4e49",en:"Export Translation",zh_TW:"\u532f\u51fa\u91cb\u7fa9",ja:"\u8a33\u6587\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\ubc88\uc5ed \ub0b4\ubcf4\ub0b4\uae30",tr:"\xc7eviriyi D\u0131\u015fa Aktar"},error_cant_be_blank:{zh:"\u4e0d\u80fd\u4e3a\u7a7a",en:"Can not be blank",zh_TW:"\u4e0d\u53ef\u70ba\u7a7a",ja:"\u7a7a\u767d\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093",ko:"\ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4",tr:"Bo\u015f Olamaz"},error_duplicate_values:{zh:"\u5b58\u5728\u91cd\u590d\u7684\u503c",en:"There are duplicate values",zh_TW:"\u5b58\u5728\u91cd\u8907\u7684\u503c",ja:"\u91cd\u8907\u3059\u308b\u5024\u304c\u5b58\u5728\u3057\u307e\u3059",ko:"\uc911\ubcf5\ub41c \uac12\uc774 \uc788\uc2b5\ub2c8\ub2e4",tr:"Yinelenen De\u011ferler Var"},error_wrong_file_type:{zh:"\u9519\u8bef\u7684\u6587\u4ef6\u7c7b\u578b",en:"Wrong file type",zh_TW:"\u6a94\u6848\u985e\u578b\u932f\u8aa4",ja:"\u4e0d\u6b63\u306a\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3067\u3059",ko:"\uc798\ubabb\ub41c \ud30c\uc77c \ud615\uc2dd\uc785\ub2c8\ub2e4",tr:"Yanl\u0131\u015f Dosya T\xfcr\xfc"},error_fetch_url:{zh:"\u8bf7\u68c0\u67e5url\u5730\u5740\u662f\u5426\u6b63\u786e\u6216\u7a0d\u540e\u518d\u8bd5\u3002",en:"Please check if the url address is correct or try again later.",zh_TW:"\u8acb\u6aa2\u67e5 URL \u662f\u5426\u6b63\u78ba\u6216\u7a0d\u5f8c\u518d\u8a66\u3002",ja:"URL\u30a2\u30c9\u30ec\u30b9\u304c\u6b63\u3057\u3044\u304b\u78ba\u8a8d\u3059\u308b\u304b\u3001\u5f8c\u3067\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002",ko:"URL \uc8fc\uc18c\uac00 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\ud558\uac70\ub098 \ub098\uc911\uc5d0 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624.",tr:"L\xfctfen URL adresinin do\u011fru olup olmad\u0131\u011f\u0131n\u0131 kontrol edin veya daha sonra tekrar deneyin."},deepl_api:{zh:"DeepL \u63a5\u53e3",en:"DeepL API",zh_TW:"DeepL \u4ecb\u9762",ja:"DeepL API",ko:"DeepL API",tr:"Deepl API'si"},deepl_key:{zh:"DeepL \u5bc6\u94a5",en:"DeepL Key",zh_TW:"DeepL \u91d1\u9470",ja:"DeepL \u30ad\u30fc",ko:"DeepL \ud0a4",tr:"Deepl Anahtar\u0131"},openai_api:{zh:"OpenAI \u63a5\u53e3",en:"OpenAI API",zh_TW:"OpenAI \u4ecb\u9762",ja:"OpenAI API",ko:"OpenAI API",tr:"OpenAI API"},openai_key:{zh:"OpenAI \u5bc6\u94a5",en:"OpenAI Key",zh_TW:"OpenAI \u91d1\u9470",ja:"OpenAI \u30ad\u30fc",ko:"OpenAI \ud0a4",tr:"OpenAI Anahtar\u0131"},openai_model:{zh:"OpenAI \u6a21\u578b",en:"OpenAI Model",zh_TW:"OpenAI \u6a21\u578b",ja:"OpenAI \u30e2\u30c7\u30eb",ko:"OpenAI \ubaa8\ub378",tr:"OpenAI Modeli"},openai_prompt:{zh:"OpenAI \u63d0\u793a\u8bcd",en:"OpenAI Prompt",zh_TW:"OpenAI \u63d0\u793a\u8a5e",ja:"OpenAI \u30d7\u30ed\u30f3\u30d7\u30c8",ko:"OpenAI \ud504\ub86c\ud504\ud2b8",tr:"OpenAI \u0130stemi"},if_clear_cache:{zh:"\u662f\u5426\u6e05\u9664\u7f13\u5b58\uff08\u9ed8\u8ba4\u7f13\u5b587\u5929\uff09",en:"Whether clear cache (Default cache is 7 days)",zh_TW:"\u662f\u5426\u6e05\u9664\u5feb\u53d6\uff08\u9810\u8a2d\u5feb\u53d67\u5929\uff09",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3057\u307e\u3059\u304b\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u671f\u9593\u306f7\u65e5\u9593\u3067\u3059\uff09",ko:"\uce90\uc2dc\ub97c \uc9c0\uc6b0\uc2dc\uaca0\uc2b5\ub2c8\uae4c (\uae30\ubcf8 \uce90\uc2dc 7\uc77c)",tr:"\xd6nbelle\u011fin Temizlenip Temizlenmeyece\u011fi (Varsay\u0131lan \xd6nbellek 7 G\xfcnd\xfcr)"},clear_cache_never:{zh:"\u4e0d\u6e05\u9664\u7f13\u5b58",en:"Never clear cache",zh_TW:"\u4e0d\u6e05\u9664\u5feb\u53d6",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3057\u306a\u3044",ko:"\uce90\uc2dc \uc9c0\uc6b0\uc9c0 \uc54a\uc74c",tr:"\xd6nbelle\u011fi Hi\xe7bir Zaman Temizleme"},clear_cache_restart:{zh:"\u91cd\u542f\u6d4f\u89c8\u5668\u65f6\u6e05\u9664\u7f13\u5b58",en:"Clear cache when restarting browser",zh_TW:"\u91cd\u65b0\u555f\u52d5\u700f\u89bd\u5668\u6642\u6e05\u9664\u5feb\u53d6",ja:"\u30d6\u30e9\u30a6\u30b6\u518d\u8d77\u52d5\u6642\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2",ko:"\ube0c\ub77c\uc6b0\uc800 \uc7ac\uc2dc\uc791 \uc2dc \uce90\uc2dc \uc9c0\uc6b0\uae30",tr:"Taray\u0131c\u0131y\u0131 Yeniden Ba\u015flat\u0131rken \xd6nbelle\u011fi Temizle"},data_sync_type:{zh:"\u540c\u6b65\u65b9\u5f0f",en:"Sync Type",zh_TW:"\u540c\u6b65\u65b9\u5f0f",ja:"\u540c\u671f\u65b9\u5f0f",ko:"\ub3d9\uae30\ud654 \ubc29\uc2dd",tr:"Senkronizasyon T\xfcr\xfc"},data_sync_url:{zh:"\u540c\u6b65\u63a5\u53e3",en:"Sync API",zh_TW:"\u540c\u6b65\u4ecb\u9762",ja:"\u540c\u671fAPI",ko:"\ub3d9\uae30\ud654 API",tr:"API'yi Senkronize Et"},gist_sync_tip:{zh:"\u9009\u62e9 GitHub Gist \u65f6\u4f1a\u81ea\u52a8\u521b\u5efa\u79c1\u5bc6 Gist\u3002GitHub PAT \u9700\u8981 Gists \u8bfb\u5199\u6743\u9650\u3002",en:"A secret gist will be created automatically when GitHub Gist is selected. GitHub PAT needs Gists read and write permission.",zh_TW:"\u9078\u64c7 GitHub Gist \u6642\u6703\u81ea\u52d5\u5efa\u7acb\u79c1\u5bc6 Gist\u3002GitHub PAT \u9700\u8981 Gists \u8b80\u5beb\u6b0a\u9650\u3002",ja:"GitHub Gist \u3092\u9078\u629e\u3059\u308b\u3068 Secret Gist \u304c\u81ea\u52d5\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002GitHub PAT \u306b\u306f Gists \u306e\u8aad\u307f\u66f8\u304d\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\u3002",ko:"GitHub Gist\ub97c \uc120\ud0dd\ud558\uba74 \ube44\uacf5\uac1c Gist\uac00 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ub429\ub2c8\ub2e4. GitHub PAT\uc5d0\ub294 Gists \uc77d\uae30/\uc4f0\uae30 \uad8c\ud55c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.",tr:"GitHub Gist se\xe7ildi\u011finde otomatik olarak gizli bir \xf6z olu\u015fturulacakt\u0131r. GitHub PAT'in Gists'in okuma ve yazma iznine ihtiyac\u0131 var."},data_sync_user:{zh:"\u540c\u6b65\u8d26\u6237",en:"Sync Account",zh_TW:"\u540c\u6b65\u5e33\u865f",ja:"\u540c\u671f\u30a2\u30ab\u30a6\u30f3\u30c8",ko:"\ub3d9\uae30\ud654 \uacc4\uc815",tr:"Hesab\u0131 Senkronize Et"},data_sync_key:{zh:"\u540c\u6b65\u5bc6\u94a5",en:"Sync Key",zh_TW:"\u540c\u6b65\u91d1\u9470",ja:"\u540c\u671f\u30ad\u30fc",ko:"\ub3d9\uae30\ud654 \ud0a4",tr:"Senkronizasyon Anahtar\u0131"},data_sync_encrypt_key:{zh:"\u52a0\u5bc6\u53e3\u4ee4",en:"Encryption Passphrase",zh_TW:"\u52a0\u5bc6\u5bc6\u78bc",ja:"\u6697\u53f7\u5316\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uc554\ud638\ud654 \ube44\ubc00\ubc88\ud638",tr:"\u015eifreleme Parolas\u0131"},set_sync_encrypt_key:{zh:"\u8bbe\u5b9a\u53e3\u4ee4",en:"Set Passphrase",zh_TW:"\u8a2d\u5b9a\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u8a2d\u5b9a",ko:"\uc554\ud638\ubb38 \uc124\uc815",tr:"Parolay\u0131 Ayarla"},change_sync_encrypt_key:{zh:"\u4fee\u6539\u53e3\u4ee4",en:"Change Passphrase",zh_TW:"\u4fee\u6539\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u5909\u66f4",ko:"\uc554\ud638\ubb38 \ubcc0\uacbd",tr:"Parolay\u0131 De\u011fi\u015ftir"},sync_encrypt_key_not_set:{zh:"\u53e3\u4ee4\u672a\u8bbe\u7f6e\uff0c\u540c\u6b65\u529f\u80fd\u4e0d\u53ef\u7528\u3002",en:"Passphrase is not set. Sync is unavailable.",zh_TW:"\u5bc6\u78bc\u672a\u8a2d\u5b9a\uff0c\u540c\u6b65\u529f\u80fd\u7121\u6cd5\u4f7f\u7528\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u672a\u8a2d\u5b9a\u306e\u305f\u3081\u3001\u540c\u671f\u6a5f\u80fd\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002",ko:"\uc554\ud638\ubb38\uc774 \uc124\uc815\ub418\uc9c0 \uc54a\uc544 \ub3d9\uae30\ud654 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",tr:"Parola ayarlanmad\u0131. Senkronizasyon kullan\u0131lam\u0131yor."},old_sync_encrypt_key:{zh:"\u65e7\u53e3\u4ee4",en:"Old Passphrase",zh_TW:"\u820a\u5bc6\u78bc",ja:"\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uae30\uc874 \uc554\ud638\ubb38",tr:"Eski Parola"},new_sync_encrypt_key:{zh:"\u65b0\u53e3\u4ee4",en:"New Passphrase",zh_TW:"\u65b0\u5bc6\u78bc",ja:"\u65b0\u3057\u3044\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uc0c8 \uc554\ud638\ubb38",tr:"Yeni Parola"},confirm_sync_encrypt_key:{zh:"\u786e\u8ba4\u53e3\u4ee4",en:"Confirm Passphrase",zh_TW:"\u78ba\u8a8d\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u78ba\u8a8d",ko:"\uc554\ud638\ubb38 \ud655\uc778",tr:"Parolay\u0131 Onayla"},sync_encrypt_key_too_short:{zh:"\u53e3\u4ee4\u957f\u5ea6\u81f3\u5c11 6 \u4f4d\u3002",en:"Passphrase must be at least 6 characters.",zh_TW:"\u5bc6\u78bc\u9577\u5ea6\u81f3\u5c11 6 \u4f4d\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306f 6 \u6587\u5b57\u4ee5\u4e0a\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\uc554\ud638\ubb38\uc740 \ucd5c\uc18c 6\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.",tr:"Parola en az 6 karakterden olu\u015fmal\u0131d\u0131r."},sync_encrypt_key_mismatch:{zh:"\u4e24\u6b21\u8f93\u5165\u7684\u53e3\u4ee4\u4e0d\u4e00\u81f4\u3002",en:"The two passphrases do not match.",zh_TW:"\u5169\u6b21\u8f38\u5165\u7684\u5bc6\u78bc\u4e0d\u4e00\u81f4\u3002",ja:"\u5165\u529b\u3057\u305f 2 \u3064\u306e\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002",ko:"\ub450 \ubc88 \uc785\ub825\ud55c \uc554\ud638\ubb38\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",tr:"Her \u0130ki Parola E\u015fle\u015fmiyor."},old_sync_encrypt_key_invalid:{zh:"\u65e7\u53e3\u4ee4\u4e0d\u6b63\u786e\u3002",en:"Old passphrase is incorrect.",zh_TW:"\u820a\u5bc6\u78bc\u4e0d\u6b63\u78ba\u3002",ja:"\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002",ko:"\uae30\uc874 \uc554\ud638\ubb38\uc774 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",tr:"Eski Parola Yanl\u0131\u015f."},clear_sync_encrypt_key:{zh:"\u6e05\u9664\u672c\u5730\u53e3\u4ee4",en:"Clear local passphrase",zh_TW:"\u6e05\u9664\u672c\u6a5f\u5bc6\u78bc",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb",ko:"\ub85c\uceec \uc554\ud638\ubb38 \uc9c0\uc6b0\uae30",tr:"Yerel parolay\u0131 temizle"},clear_sync_encrypt_key_title:{zh:"\u6e05\u9664\u672c\u5730\u540c\u6b65\u53e3\u4ee4\uff1f",en:"Clear local sync passphrase?",zh_TW:"\u6e05\u9664\u672c\u6a5f\u540c\u6b65\u5bc6\u78bc\uff1f",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u540c\u671f\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb\u3057\u307e\u3059\u304b\uff1f",ko:"\ub85c\uceec \ub3d9\uae30\ud654 \uc554\ud638\ubb38\uc744 \uc9c0\uc6b8\uae4c\uc694?",tr:"Yerel e\u015fitleme parolas\u0131 temizlensin mi?"},clear_sync_encrypt_key_message:{zh:"\u8fd9\u4e0d\u4f1a\u4fee\u6539\u4e91\u7aef\u6570\u636e\u3002\u4e4b\u540e\u5fc5\u987b\u91cd\u65b0\u586b\u5165\u80fd\u89e3\u5bc6\u4e91\u7aef\u6570\u636e\u7684\u53e3\u4ee4\uff0c\u624d\u80fd\u7ee7\u7eed\u540c\u6b65\u3002",en:"This does not change cloud data. You must enter the passphrase that decrypts it before syncing again.",zh_TW:"\u9019\u4e0d\u6703\u4fee\u6539\u96f2\u7aef\u8cc7\u6599\u3002\u4e4b\u5f8c\u5fc5\u9808\u91cd\u65b0\u586b\u5165\u53ef\u89e3\u5bc6\u96f2\u7aef\u8cc7\u6599\u7684\u5bc6\u78bc\uff0c\u624d\u80fd\u7e7c\u7e8c\u540c\u6b65\u3002",ja:"\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u306f\u5909\u66f4\u3055\u308c\u307e\u305b\u3093\u3002\u518d\u540c\u671f\u3059\u308b\u306b\u306f\u3001\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u3092\u5fa9\u53f7\u3067\u304d\u308b\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u518d\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",ko:"\ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\ub294 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \ub3d9\uae30\ud654\ud558\ub824\uba74 \ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\ub97c \ud574\ub3c5\ud560 \uc218 \uc788\ub294 \uc554\ud638\ubb38\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.",tr:"Bu i\u015flem bulut verilerini de\u011fi\u015ftirmez. Yeniden e\u015fitlemek i\xe7in bulut verilerini \xe7\xf6zebilen parolay\u0131 girmeniz gerekir."},clear_sync_encrypt_key_confirm:{zh:"\u786e\u8ba4\u6e05\u9664",en:"Clear passphrase",zh_TW:"\u78ba\u8a8d\u6e05\u9664",ja:"\u6d88\u53bb\u3059\u308b",ko:"\uc9c0\uc6b0\uae30",tr:"Parolay\u0131 temizle"},clear_sync_encrypt_key_success:{zh:"\u5df2\u6e05\u9664\u672c\u5730\u540c\u6b65\u53e3\u4ee4\u3002",en:"The local sync passphrase has been cleared.",zh_TW:"\u5df2\u6e05\u9664\u672c\u6a5f\u540c\u6b65\u5bc6\u78bc\u3002",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u540c\u671f\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb\u3057\u307e\u3057\u305f\u3002",ko:"\ub85c\uceec \ub3d9\uae30\ud654 \uc554\ud638\ubb38\uc744 \uc9c0\uc6e0\uc2b5\ub2c8\ub2e4.",tr:"Yerel e\u015fitleme parolas\u0131 temizlendi."},sync_encrypt_key_change_failed:{zh:"\u4fee\u6539\u53e3\u4ee4\u5931\u8d25\u3002\u8bf7\u4fdd\u7559\u65e7\u53e3\u4ee4\u548c\u65b0\u53e3\u4ee4\uff0c\u68c0\u67e5\u7f51\u7edc\u540e\u91cd\u8bd5\uff1b\u5982\u679c\u66fe\u6709\u90e8\u5206\u6570\u636e\u5df2\u7528\u65b0\u53e3\u4ee4\u5199\u5165\u4e91\u7aef\uff0c\u5fc5\u8981\u65f6\u8bf7\u6e05\u7a7a\u8fdc\u7aef\u540c\u6b65\u6587\u4ef6\u540e\u91cd\u65b0\u540c\u6b65\u3002",en:"Failed to change the passphrase. Keep both the old and new passphrases, check your network, and retry. If some cloud data was already written with the new passphrase, clear the remote sync files and sync again if needed.",zh_TW:"\u4fee\u6539\u5bc6\u78bc\u5931\u6557\u3002\u8acb\u4fdd\u7559\u820a\u5bc6\u78bc\u548c\u65b0\u5bc6\u78bc\uff0c\u6aa2\u67e5\u7db2\u8def\u5f8c\u91cd\u8a66\uff1b\u5982\u679c\u5df2\u6709\u90e8\u5206\u8cc7\u6599\u7528\u65b0\u5bc6\u78bc\u5beb\u5165\u96f2\u7aef\uff0c\u5fc5\u8981\u6642\u8acb\u6e05\u7a7a\u9060\u7aef\u540c\u6b65\u6a94\u6848\u5f8c\u91cd\u65b0\u540c\u6b65\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306e\u5909\u66f4\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3068\u65b0\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306e\u4e21\u65b9\u3092\u4fdd\u7ba1\u3057\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u518d\u8a66\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u304c\u65b0\u3057\u3044\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3067\u66f8\u304d\u8fbc\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30ea\u30e2\u30fc\u30c8\u540c\u671f\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u3066\u304b\u3089\u518d\u540c\u671f\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\uc554\ud638\ubb38 \ubcc0\uacbd\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \uae30\uc874 \uc554\ud638\ubb38\uacfc \uc0c8 \uc554\ud638\ubb38\uc744 \ubaa8\ub450 \ubcf4\uad00\ud558\uace0 \ub124\ud2b8\uc6cc\ud06c\ub97c \ud655\uc778\ud55c \ub4a4 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc138\uc694. \uc77c\ubd80 \ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\uac00 \uc774\ubbf8 \uc0c8 \uc554\ud638\ubb38\uc73c\ub85c \uc4f0\uc778 \uacbd\uc6b0 \ud544\uc694\ud558\uba74 \uc6d0\uaca9 \ub3d9\uae30\ud654 \ud30c\uc77c\uc744 \ube44\uc6b4 \ub4a4 \ub2e4\uc2dc \ub3d9\uae30\ud654\ud558\uc138\uc694.",tr:"Parola de\u011fi\u015ftirme i\u015flemi ba\u015far\u0131s\u0131z oldu. Hem eski hem de yeni parolay\u0131 saklay\u0131n, a\u011f\u0131n\u0131z\u0131 kontrol edin ve tekrar deneyin. Yeni parola ile bulut verilerine zaten baz\u0131 veriler yaz\u0131lm\u0131\u015fsa, uzaktan senkronizasyon dosyalar\u0131n\u0131 temizleyin ve gerekirse tekrar senkronize edin"},sync_now:{zh:"\u7acb\u5373\u540c\u6b65",en:"Sync Now",zh_TW:"\u7acb\u5373\u540c\u6b65",ja:"\u4eca\u3059\u3050\u540c\u671f",ko:"\uc9c0\uae08 \ub3d9\uae30\ud654",tr:"\u015eimdi Senkronize Et"},sync_success:{zh:"\u540c\u6b65\u6210\u529f\uff01",en:"Sync Success",zh_TW:"\u540c\u6b65\u6210\u529f\uff01",ja:"\u540c\u671f\u6210\u529f\uff01",ko:"\ub3d9\uae30\ud654 \uc131\uacf5!",tr:"Senkronizasyon Ba\u015far\u0131l\u0131"},sync_failed:{zh:"\u540c\u6b65\u5931\u8d25\uff01",en:"Sync Error",zh_TW:"\u540c\u6b65\u5931\u6557\uff01",ja:"\u540c\u671f\u5931\u6557\uff01",ko:"\ub3d9\uae30\ud654 \uc2e4\ud328!",tr:"Senkronizasyon Hatas\u0131"},error_got_some_wrong:{zh:"\u62b1\u6b49\uff0c\u51fa\u9519\u4e86\uff01",en:"Sorry, something went wrong!",zh_TW:"\u62b1\u6b49\uff0c\u767c\u751f\u932f\u8aa4\uff01",ja:"\u7533\u3057\u8a33\u3042\u308a\u307e\u305b\u3093\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff01",ko:"\uc8c4\uc1a1\ud569\ub2c8\ub2e4, \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4!",tr:"\xdczg\xfcn\xfcm, Bir Sorun Olu\u015ftu"},error_sync_setting:{zh:"\u60a8\u7684\u540c\u6b65\u7c7b\u578b\u5fc5\u987b\u4e3a\u201cKISS-Worker\u201d\uff0c\u4e14\u9700\u586b\u5199\u5b8c\u6574",en:'Your sync type must be "KISS-Worker" and must be filled in completely',zh_TW:"\u60a8\u7684\u540c\u6b65\u578b\u614b\u5fc5\u9808\u70ba\u300cKISS-Worker\u300d\uff0c\u4e14\u9700\u586b\u5beb\u5b8c\u6574\u3002",ja:"\u540c\u671f\u30bf\u30a4\u30d7\u306f\u300cKISS-Worker\u300d\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u3059\u3079\u3066\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",ko:'\ub3d9\uae30\ud654 \uc720\ud615\uc740 "KISS-Worker"\uc5ec\uc57c \ud558\uba70, \ubaa8\ub4e0 \ud56d\ubaa9\uc744 \ube60\uc9d0\uc5c6\uc774 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.',tr:'Senkronizasyon T\xfcr\xfcn\xfcz "KISS-Worker" Olmal\u0131 Ve Eksiksiz Olarak Doldurulmal\u0131d\u0131r'},click_test:{zh:"\u70b9\u51fb\u6d4b\u8bd5",en:"Click Test",zh_TW:"\u9ede\u9078\u6e2c\u8a66",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c6\u30b9\u30c8",ko:"\ud074\ub9ad \ud14c\uc2a4\ud2b8",tr:"Test Et'I T\u0131klay\u0131n"},test_success:{zh:"\u6d4b\u8bd5\u6210\u529f",en:"Test success",zh_TW:"\u6e2c\u8a66\u6210\u529f",ja:"\u30c6\u30b9\u30c8\u6210\u529f",ko:"\ud14c\uc2a4\ud2b8 \uc131\uacf5",tr:"Test Ba\u015far\u0131l\u0131"},test_failed:{zh:"\u6d4b\u8bd5\u5931\u8d25",en:"Test failed",zh_TW:"\u6e2c\u8a66\u5931\u6557",ja:"\u30c6\u30b9\u30c8\u5931\u6557",ko:"\ud14c\uc2a4\ud2b8 \uc2e4\ud328",tr:"Test Ba\u015far\u0131s\u0131z Oldu"},clear_all_cache_now:{zh:"\u7acb\u5373\u6e05\u9664\u5168\u90e8\u7f13\u5b58",en:"Clear all cache now",zh_TW:"\u7acb\u5373\u6e05\u9664\u5168\u90e8\u5feb\u53d6",ja:"\u3059\u3079\u3066\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u4eca\u3059\u3050\u30af\u30ea\u30a2",ko:"\ubaa8\ub4e0 \uce90\uc2dc \uc9c0\uae08 \uc9c0\uc6b0\uae30",tr:"T\xfcm \xd6nbelle\u011fi \u015eimdi Temizle"},clear_cache:{zh:"\u6e05\u9664\u7f13\u5b58",en:"Clear Cache",zh_TW:"\u6e05\u9664\u5feb\u53d6",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2",ko:"\uce90\uc2dc \uc9c0\uc6b0\uae30",tr:"\xd6nbelle\u011fi Temizle"},disable_on_mobile:{zh:"\u79fb\u52a8\u7aef\u7981\u7528",en:"Disable on Mobile",zh_TW:"\u884c\u52d5\u88dd\u7f6e\u505c\u7528",ja:"\u30e2\u30d0\u30a4\u30eb\u3067\u7121\u52b9\u306b\u3059\u308b",ko:"\ubaa8\ubc14\uc77c\uc5d0\uc11c \ube44\ud65c\uc131\ud654",tr:"Mobil Cihazda Devre D\u0131\u015f\u0131 B\u0131rak"},clear_success:{zh:"\u6e05\u9664\u6210\u529f",en:"Clear success",zh_TW:"\u6e05\u9664\u6210\u529f",ja:"\u30af\u30ea\u30a2\u6210\u529f",ko:"\uc9c0\uc6b0\uae30 \uc131\uacf5",tr:"Temizleme Ba\u015far\u0131l\u0131"},clear_failed:{zh:"\u6e05\u9664\u5931\u8d25",en:"Clear failed",zh_TW:"\u6e05\u9664\u5931\u6557",ja:"\u30af\u30ea\u30a2\u5931\u6557",ko:"\uc9c0\uc6b0\uae30 \uc2e4\ud328",tr:"Temizleme Ba\u015far\u0131s\u0131z Oldu"},share:{zh:"\u5206\u4eab",en:"Share",zh_TW:"\u5206\u4eab",ja:"\u5171\u6709",ko:"\uacf5\uc720",tr:"Payla\u015f"},clear_all:{zh:"\u6e05\u7a7a",en:"Clear All",zh_TW:"\u6e05\u7a7a",ja:"\u3059\u3079\u3066\u30af\u30ea\u30a2",ko:"\ubaa8\ub450 \uc9c0\uc6b0\uae30",tr:"T\xfcm\xfcn\xfc Temizle"},help:{zh:"\u6c42\u52a9",en:"Help",zh_TW:"\u6c42\u52a9",ja:"\u30d8\u30eb\u30d7",ko:"\ub3c4\uc6c0\ub9d0",tr:"Yard\u0131m"},restore_default:{zh:"\u6062\u590d\u9ed8\u8ba4",en:"Restore Default",zh_TW:"\u6062\u5fa9\u9810\u8a2d",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u623b\u3059",ko:"\uae30\ubcf8\uac12 \ubcf5\uc6d0",tr:"Varsay\u0131lan\u0131 Geri Y\xfckle"},shortcuts_setting:{zh:"\u5feb\u6377\u952e\u8bbe\u7f6e",en:"Shortcuts Setting",zh_TW:"\u5feb\u901f\u9375\u8a2d\u5b9a",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u8a2d\u5b9a",ko:"\ub2e8\ucd95\ud0a4 \uc124\uc815",tr:"K\u0131sayol Ayar\u0131"},toggle_translate_shortcut:{zh:'"\u5f00\u542f\u7ffb\u8bd1"\u5feb\u6377\u952e',en:'"Toggle Translate" Shortcut',zh_TW:"\u300c\u958b\u555f\u7ffb\u8b6f\u300d\u5feb\u901f\u9375",ja:"\u300c\u7ffb\u8a33\u5207\u308a\u66ff\u3048\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\ubc88\uc5ed \ucf1c\uae30" \ub2e8\ucd95\ud0a4',tr:'"\xc7eviriyi A\xe7/Kapat" K\u0131sayolu'},toggle_transonly_shortcut:{zh:'"\u9690\u85cf\u539f\u6587"\u5feb\u6377\u952e',en:'"Hide Original" Shortcut',zh_TW:"\u300c\u96b1\u85cf\u539f\u6587\u300d\u5feb\u901f\u9375",ja:"\u300c\u539f\u6587\u3092\u96a0\u3059\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc6d0\ubb38 \uc228\uae30\uae30" \ub2e8\ucd95\ud0a4',tr:'"Orijinali Gizle" K\u0131sayolu'},toggle_style_shortcut:{zh:'"\u5207\u6362\u6837\u5f0f"\u5feb\u6377\u952e',en:'"Toggle Style" Shortcut',zh_TW:"\u300c\u5207\u63db\u6a23\u5f0f\u300d\u5feb\u901f\u9375",ja:"\u300c\u30b9\u30bf\u30a4\u30eb\u5207\u308a\u66ff\u3048\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc2a4\ud0c0\uc77c \uc804\ud658" \ub2e8\ucd95\ud0a4',tr:'"Stil De\u011fi\u015ftir" K\u0131sayolu'},toggle_popup_shortcut:{zh:'"\u6253\u5f00\u5f39\u7a97"\u5feb\u6377\u952e',en:'"Open Popup" Shortcut',zh_TW:"\u300c\u958b\u555f\u5f48\u51fa\u8996\u7a97\u300d\u5feb\u901f\u9375",ja:"\u300c\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u958b\u304f\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\ud31d\uc5c5 \uc5f4\uae30" \ub2e8\ucd95\ud0a4',tr:'"A\xe7\u0131l\u0131r Pencereyi A\xe7" K\u0131sayolu'},open_setting_shortcut:{zh:'"\u6253\u5f00\u8bbe\u7f6e"\u5feb\u6377\u952e',en:'"Open Setting" Shortcut',zh_TW:"\u300c\u958b\u555f\u8a2d\u5b9a\u300d\u5feb\u901f\u9375",ja:"\u300c\u8a2d\u5b9a\u3092\u958b\u304f\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc124\uc815 \uc5f4\uae30" \ub2e8\ucd95\ud0a4',tr:'"Ayar\u0131 A\xe7" K\u0131sayolu'},hide_fab_button:{zh:"\u9690\u85cf\u60ac\u6d6e\u6309\u94ae",en:"Hide Fab Button",zh_TW:"\u96b1\u85cf\u6d6e\u52d5\u6309\u9215",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u3092\u96a0\u3059",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \uc228\uae30\uae30",tr:"Y\xfczen Eylem D\xfc\u011fmesini Gizle"},fab_exception_list:{zh:"\u60ac\u6d6e\u6309\u94ae\u7279\u4f8b\u540d\u5355",en:"Fab Button Exception List",zh_TW:"\u6d6e\u52d5\u6309\u9215\u4f8b\u5916\u6e05\u55ae",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u306e\u4f8b\u5916\u30ea\u30b9\u30c8",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \uc608\uc678 \ubaa9\ub85d",tr:"Y\xfczen D\xfc\u011fme \u0130stisna Listesi"},fab_exception_list_helper:{zh:"\u5168\u5c40\u663e\u793a\u65f6\uff0c\u547d\u4e2d\u540d\u5355\u7684\u9875\u9762\u9690\u85cf\u6309\u94ae\uff1b\u5168\u5c40\u9690\u85cf\u65f6\uff0c\u547d\u4e2d\u540d\u5355\u7684\u9875\u9762\u663e\u793a\u6309\u94ae\u3002\u652f\u6301\u661f\u53f7(*)\u901a\u914d\u7b26\uff0c\u591a\u4e2a\u7f51\u5740\u7528\u6362\u884c\u6216\u9017\u53f7\u5206\u9694\u3002",en:"When shown globally, matching pages hide the button; when hidden globally, matching pages show it. Supports * wildcards; separate URLs with newlines or commas.",zh_TW:"\u5168\u57df\u986f\u793a\u6642\uff0c\u547d\u4e2d\u6e05\u55ae\u7684\u9801\u9762\u6703\u96b1\u85cf\u6309\u9215\uff1b\u5168\u57df\u96b1\u85cf\u6642\uff0c\u547d\u4e2d\u6e05\u55ae\u7684\u9801\u9762\u6703\u986f\u793a\u6309\u9215\u3002\u652f\u63f4\u661f\u865f (*) \u842c\u7528\u5b57\u5143\uff0c\u7db2\u5740\u53ef\u7528\u63db\u884c\u6216\u9017\u865f\u5206\u9694\u3002",ja:"\u30b0\u30ed\u30fc\u30d0\u30eb\u8868\u793a\u6642\u306f\u4e00\u81f4\u3059\u308b\u30da\u30fc\u30b8\u3067\u30dc\u30bf\u30f3\u3092\u96a0\u3057\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u975e\u8868\u793a\u6642\u306f\u4e00\u81f4\u3059\u308b\u30da\u30fc\u30b8\u3067\u30dc\u30bf\u30f3\u3092\u8868\u793a\u3057\u307e\u3059\u3002* \u306e\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u306b\u5bfe\u5fdc\u3057\u3001URL \u306f\u6539\u884c\u307e\u305f\u306f\u30ab\u30f3\u30de\u3067\u533a\u5207\u308c\u307e\u3059\u3002",ko:"\uc804\uc5ed \ud45c\uc2dc \uc2dc \ubaa9\ub85d\uacfc \uc77c\uce58\ud558\ub294 \ud398\uc774\uc9c0\uc5d0\uc11c\ub294 \ubc84\ud2bc\uc744 \uc228\uae30\uace0, \uc804\uc5ed \uc228\uae40 \uc2dc\uc5d0\ub294 \ubc84\ud2bc\uc744 \ud45c\uc2dc\ud569\ub2c8\ub2e4. * \uc640\uc77c\ub4dc\uce74\ub4dc\ub97c \uc9c0\uc6d0\ud558\uba70 URL\uc740 \uc904\ubc14\uafc8 \ub610\ub294 \uc27c\ud45c\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4.",tr:"Genel olarak g\xf6sterildi\u011finde e\u015fle\u015fen sayfalarda d\xfc\u011fme gizlenir; genel olarak gizlendi\u011finde e\u015fle\u015fen sayfalarda g\xf6sterilir. * joker karakteri desteklenir; URL'leri sat\u0131r sonu veya virg\xfclle ay\u0131r\u0131n."},fab_click_action:{zh:"\u5355\u51fb\u60ac\u6d6e\u6309\u94ae\u52a8\u4f5c",en:"Single Click Fab Action",zh_TW:"\u9ede\u9078\u6d6e\u52d5\u6309\u9215\u52d5\u4f5c",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u306e\u30af\u30ea\u30c3\u30af\u52d5\u4f5c",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \ud074\ub9ad \ub3d9\uc791",tr:"Tek T\u0131klamayla Y\xfczen Eylem D\xfc\u011fmesi"},fab_click_menu:{zh:"\u5f39\u51fa\u83dc\u5355",en:"Popup Menu",zh_TW:"\u5f48\u51fa\u9078\u55ae",ja:"\u30e1\u30cb\u30e5\u30fc\u3092\u958b\u304f",ko:"\ud31d\uc5c5 \uba54\ub274",tr:"A\xe7\u0131l\u0131r Men\xfc"},fab_click_translate:{zh:"\u76f4\u63a5\u7ffb\u8bd1",en:"Translate",zh_TW:"\u76f4\u63a5\u7ffb\u8b6f",ja:"\u76f4\u63a5\u7ffb\u8a33",ko:"\ubc14\ub85c \ubc88\uc5ed",tr:"\xc7evir"},hide_tran_button:{zh:"\u9690\u85cf\u7ffb\u8bd1\u6309\u94ae",en:"Hide Translate Button",zh_TW:"\u96b1\u85cf\u7ffb\u8b6f\u6309\u9215",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u3092\u96a0\u3059",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc228\uae30\uae30",tr:"\xc7evir D\xfc\u011fmesini Gizle"},hide_click_away:{zh:"\u70b9\u51fb\u5916\u90e8\u5173\u95ed\u5f39\u7a97",en:"Click outside to close the pop-up window",zh_TW:"\u9ede\u9078\u5916\u90e8\u5340\u57df\u95dc\u9589\u5f48\u51fa\u8996\u7a97",ja:"\u5916\u90e8\u30af\u30ea\u30c3\u30af\u3067\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u9589\u3058\u308b",ko:"\ubc14\uae65\ucabd \ud074\ub9ad \uc2dc \ud31d\uc5c5 \ub2eb\uae30",tr:"A\xe7\u0131l\u0131r Pencereyi Kapatmak \u0130\xe7in D\u0131\u015far\u0131y\u0131 T\u0131klay\u0131n"},use_simple_style:{zh:"\u4f7f\u7528\u7b80\u6d01\u754c\u9762",en:"Use a simple interface",zh_TW:"\u4f7f\u7528\u7c21\u6f54\u4ecb\u9762",ja:"\u30b7\u30f3\u30d7\u30ebUI\u3092\u4f7f\u7528",ko:"\uac04\ub2e8\ud55c \uc778\ud130\ud398\uc774\uc2a4 \uc0ac\uc6a9",tr:"Basit Bir Aray\xfcz Kullan\u0131n"},show:{zh:"\u663e\u793a",en:"Show",zh_TW:"\u986f\u793a",ja:"\u8868\u793a",ko:"\ud45c\uc2dc",tr:"G\xf6ster"},hide:{zh:"\u9690\u85cf",en:"Hide",zh_TW:"\u96b1\u85cf",ja:"\u975e\u8868\u793a",ko:"\uc228\uae30\uae30",tr:"Gizle"},save_rule:{zh:"\u4fdd\u5b58\u672c\u7ad9\u89c4\u5219",en:"Save this site rule",zh_TW:"\u5132\u5b58\u672c\u7ad9\u898f\u5247",ja:"\u3053\u306e\u30b5\u30a4\u30c8\u306e\u30eb\u30fc\u30eb\u3092\u4fdd\u5b58",ko:"\uc774 \uc0ac\uc774\ud2b8 \uaddc\uce59 \uc800\uc7a5",tr:"Bu Site Kural\u0131n\u0131 Kaydet"},domain:{zh:"\u7f51\u57df",en:"Domain",zh_TW:"\u7db2\u57df",ja:"\u30c9\u30e1\u30a4\u30f3",ko:"\ub3c4\uba54\uc778",tr:"Alan"},global_rule:{zh:"\u5168\u5c40\u89c4\u5219",en:"Global Rule",zh_TW:"\u5168\u57df\u898f\u5247",ja:"\u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb",ko:"\uc804\uc5ed \uaddc\uce59",tr:"K\xfcresel Kural"},input_translate:{zh:"\u8f93\u5165\u6846\u7ffb\u8bd1",en:"Input Box Translation",zh_TW:"\u8f38\u5165\u6846\u7ffb\u8b6f",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u7ffb\u8a33",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed",tr:"Giri\u015f Kutusu \xc7evirisi"},use_input_box_translation:{zh:"\u542f\u7528\u8f93\u5165\u6846\u7ffb\u8bd1",en:"Input Box Translation",zh_TW:"\u555f\u7528\u8f38\u5165\u6846\u7ffb\u8b6f",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed \uc0ac\uc6a9",tr:"Giri\u015f Kutusu \xc7evirisi"},input_selector:{zh:"\u8f93\u5165\u6846\u9009\u62e9\u5668",en:"Input Selector",zh_TW:"\u8f38\u5165\u6846\u9078\u64c7\u5668",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u30bb\u30ec\u30af\u30bf",ko:"\uc785\ub825\ucc3d \uc120\ud0dd\uc790",tr:"Giri\u015f Se\xe7ici"},input_selector_helper:{zh:"\u7528\u4e8e\u8f93\u5165\u6846\u7ffb\u8bd1\u3002",en:"Used for input box translation.",zh_TW:"\u7528\u65bc\u8f38\u5165\u6846\u7ffb\u8b6f\u3002",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u306e\u7ffb\u8a33\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed\uc5d0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.",tr:"Giri\u015f kutusu \xe7evirisi i\xe7in kullan\u0131l\u0131r."},trigger_trans_shortcut:{zh:"\u89e6\u53d1\u7ffb\u8bd1\u5feb\u6377\u952e",en:"Trigger Translation Shortcut Keys",zh_TW:"\u89f8\u767c\u7ffb\u8b6f\u5feb\u901f\u9375",ja:"\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc",ko:"\ubc88\uc5ed \uc2e4\ud589 \ub2e8\ucd95\ud0a4",tr:"\xc7eviri K\u0131sayol Tu\u015flar\u0131n\u0131 Tetikleyin"},trigger_trans_shortcut_help:{zh:"\u9ed8\u8ba4\u4e3a\u5355\u51fb\u201cAltLeft+KeyI\u201d",en:'Default is "AltLeft+KeyI"',zh_TW:"\u9810\u8a2d\u70ba\u6309\u4e0b\u300cAltLeft+KeyI\u300d",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u306f\u300cAltLeft+KeyI\u300d\u3067\u3059",ko:'\uae30\ubcf8\uac12 "AltLeft+KeyI"',tr:'Varsay\u0131lan "AltLeft+KeyI"'},shortcut_press_count:{zh:"\u5feb\u6377\u952e\u8fde\u51fb\u6b21\u6570",en:"Shortcut Press Number",zh_TW:"\u5feb\u901f\u9375\u9023\u6309\u6b21\u6578",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u306e\u9023\u7d9a\u30d7\u30ec\u30b9\u56de\u6570",ko:"\ub2e8\ucd95\ud0a4 \uc5f0\uc18d \uc785\ub825 \ud69f\uc218",tr:"K\u0131sayol Tu\u015funa Bas\u0131n"},combo_timeout:{zh:"\u8fde\u51fb\u8d85\u65f6\u65f6\u95f4 (10-1000ms)",en:"Combo Timeout (10-1000ms)",zh_TW:"\u9023\u64ca\u903e\u6642 (10-1000ms)",ja:"\u9023\u7d9a\u30d7\u30ec\u30b9\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 (10-1000ms)",ko:"\uc5f0\uc18d \uc785\ub825 \uc2dc\uac04 \ucd08\uacfc (10-1000ms)",tr:"Kombo Zaman A\u015f\u0131m\u0131 (10-1000 Ms)"},input_trans_start_sign:{zh:"\u7ffb\u8bd1\u8d77\u59cb\u6807\u8bc6",en:"Translation Start Sign",zh_TW:"\u7ffb\u8b6f\u8d77\u59cb\u6a19\u8a18",ja:"\u7ffb\u8a33\u958b\u59cb\u8a18\u53f7",ko:"\ubc88\uc5ed \uc2dc\uc791 \ud45c\uc2dc",tr:"\xc7eviri Ba\u015flang\u0131\xe7 \u0130\u015fareti"},input_trans_start_sign_help:{zh:"\u6807\u8bc6\u540e\u9762\u53ef\u4ee5\u52a0\u76ee\u6807\u8bed\u8a00\u4ee3\u7801\uff0c\u5982\uff1a \u201c/en \u4f60\u597d\u201d\u3001\u201c/zh hello\u201d",en:'The target language code can be added after the sign, such as: "/en \u4f60\u597d", "/zh hello"',zh_TW:"\u6a19\u8a18\u5f8c\u53ef\u52a0\u4e0a\u76ee\u6a19\u8a9e\u8a00\u4ee3\u78bc\uff0c\u4f8b\u5982\uff1a\u300c/en \u4f60\u597d\u300d\u3001\u300c/zh hello\u300d",ja:"\u8a18\u53f7\u306e\u5f8c\u306b\u5bfe\u8c61\u8a00\u8a9e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002\u4f8b\uff1a\u300c/en \u4f60\u597d\u300d\u3001\u300c/zh hello\u300d",ko:'\ud45c\uc2dc \ub4a4\uc5d0 \ub300\uc0c1 \uc5b8\uc5b4 \ucf54\ub4dc\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608: "/en \u4f60\u597d", "/zh hello"',tr:'\u0130\u015faretin sonuna hedef dil kodu eklenebilir, \xf6rne\u011fin: "/en \u4f60\u597d", "/zh hello"'},detect_lang_remote:{zh:"\u8fdc\u7a0b\u8bed\u8a00\u68c0\u6d4b",en:"Remote language detection",zh_TW:"\u9060\u7aef\u8a9e\u8a00\u5075\u6e2c",ja:"\u30ea\u30e2\u30fc\u30c8\u8a00\u8a9e\u691c\u51fa",ko:"\uc6d0\uaca9 \uc5b8\uc5b4 \uac10\uc9c0",tr:"Uzaktan Dil Alg\u0131lama"},detect_lang_remote_help:{zh:"\u542f\u7528\u540e\u68c0\u6d4b\u51c6\u786e\u5ea6\u589e\u52a0\uff0c\u4f46\u4f1a\u964d\u4f4e\u7ffb\u8bd1\u901f\u5ea6\uff0c\u8bf7\u914c\u60c5\u5f00\u542f",en:"After enabling, the detection accuracy will increase, but it will reduce the translation speed. Please enable it as appropriate.",zh_TW:"\u555f\u7528\u5f8c\u53ef\u63d0\u5347\u5075\u6e2c\u6e96\u78ba\u5ea6\uff0c\u4f46\u6703\u964d\u4f4e\u7ffb\u8b6f\u901f\u5ea6\uff0c\u8acb\u8996\u9700\u8981\u958b\u555f\u3002",ja:"\u6709\u52b9\u306b\u3059\u308b\u3068\u691c\u51fa\u7cbe\u5ea6\u304c\u5411\u4e0a\u3057\u307e\u3059\u304c\u3001\u7ffb\u8a33\u901f\u5ea6\u304c\u4f4e\u4e0b\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u6709\u52b9\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ud65c\uc131\ud654\ud558\uba74 \uac10\uc9c0 \uc815\ud655\ub3c4\uac00 \ub192\uc544\uc9c0\uc9c0\ub9cc \ubc88\uc5ed \uc18d\ub3c4\uac00 \ub290\ub824\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc801\uc808\ud788 \ud65c\uc131\ud654\ud558\uc2ed\uc2dc\uc624.",tr:"Etkinle\u015ftirildikten sonra alg\u0131lama do\u011frulu\u011fu artacak, ancak \xe7eviri h\u0131z\u0131 d\xfc\u015fecektir. L\xfctfen uygun \u015fekilde etkinle\u015ftirin."},detect_lang_service:{zh:"\u8bed\u8a00\u68c0\u6d4b\u670d\u52a1",en:"Language detect service",zh_TW:"\u8a9e\u8a00\u5075\u6e2c\u670d\u52d9",ja:"\u8a00\u8a9e\u691c\u51fa\u30b5\u30fc\u30d3\u30b9",ko:"\uc5b8\uc5b4 \uac10\uc9c0 \uc11c\ube44\uc2a4",tr:"Dil Alg\u0131lama Hizmeti"},disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},enable:{zh:"\u542f\u7528",en:"Enable",zh_TW:"\u555f\u7528",ja:"\u6709\u52b9",ko:"\ud65c\uc131\ud654",tr:"Etkin"},selection_translate:{zh:"\u5212\u8bcd\u7ffb\u8bd1",en:"Selection Translation",zh_TW:"\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7ffb\u8a33",ko:"\uc120\ud0dd \ubc88\uc5ed",tr:"Se\xe7im \xc7evirisi"},toggle_selection_translate:{zh:"\u542f\u7528\u5212\u8bcd\u7ffb\u8bd1",en:"Use Selection Translate",zh_TW:"\u555f\u7528\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc120\ud0dd \ubc88\uc5ed \uc0ac\uc6a9",tr:"Se\xe7im \xc7evirmeyi Kullan"},trigger_tranbox_shortcut:{zh:"\u663e\u793a\u7ffb\u8bd1\u6846/\u7ffb\u8bd1\u9009\u4e2d\u6587\u5b57\u5feb\u6377\u952e",en:"Open Translate Popup/Translate Selected Shortcut",zh_TW:"\u986f\u793a\u7ffb\u8b6f\u6846\uff0f\u7ffb\u8b6f\u9078\u53d6\u6587\u5b57\u5feb\u901f\u9375",ja:"\u7ffb\u8a33\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u8868\u793a/\u9078\u629e\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:"\ubc88\uc5ed\ucc3d \ud45c\uc2dc/\uc120\ud0dd \ubc88\uc5ed \ub2e8\ucd95\ud0a4",tr:"\xc7eviri A\xe7\u0131l\u0131r Penceresini A\xe7/Se\xe7ilen K\u0131sayolu \xc7evir"},tranbtn_offset_x:{zh:"\u7ffb\u8bd1\u6309\u94ae\u504f\u79fbX\uff08\xb1200\uff09",en:"Translate Button Offset X (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6309\u9215\u4f4d\u79fb X\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u30aa\u30d5\u30bb\u30c3\u30c8X (\xb1200)",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc624\ud504\uc14b X (\xb1200)",tr:"\xc7evirme D\xfc\u011fmesi Ofseti X (\xb1200)"},tranbtn_offset_y:{zh:"\u7ffb\u8bd1\u6309\u94ae\u504f\u79fbY\uff08\xb1200\uff09",en:"Translate Button Offset Y (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6309\u9215\u4f4d\u79fb Y\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u30aa\u30d5\u30bb\u30c3\u30c8Y (\xb1200)",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc624\ud504\uc14b Y (\xb1200)",tr:"\xc7evirme D\xfc\u011fmesi Ofseti Y (\xb1200)"},tranbox_offset_x:{zh:"\u7ffb\u8bd1\u6846\u504f\u79fbX\uff08\xb1200\uff09",en:"Translate Box Offset X (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6846\u4f4d\u79fb X\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u30aa\u30d5\u30bb\u30c3\u30c8X (\xb1200)",ko:"\ubc88\uc5ed\ucc3d \uc624\ud504\uc14b X (\xb1200)",tr:"\xc7evirme Kutusu Ofseti X (\xb1200)"},tranbox_offset_y:{zh:"\u7ffb\u8bd1\u6846\u504f\u79fbY\uff08\xb1200\uff09",en:"Translate Box Offset Y (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6846\u4f4d\u79fb Y\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u30aa\u30d5\u30bb\u30c3\u30c8Y (\xb1200)",ko:"\ubc88\uc5ed\ucc3d \uc624\ud504\uc14b Y (\xb1200)",tr:"\xc7evirme Kutusu Ofseti Y (\xb1200)"},translated_text:{zh:"\u8bd1\u6587",en:"Translated Text",zh_TW:"\u8b6f\u6587",ja:"\u7ffb\u8a33\u6e08\u307f\u30c6\u30ad\u30b9\u30c8",ko:"\ubc88\uc5ed\ub41c \ud14d\uc2a4\ud2b8",tr:"\xc7evrilmi\u015f Metin"},original_text:{zh:"\u539f\u6587",en:"Original Text",zh_TW:"\u539f\u6587",ja:"\u539f\u6587",ko:"\uc6d0\ubcf8 \ud14d\uc2a4\ud2b8",tr:"Orijinal Metin"},favorite_words:{zh:"\u6536\u85cf\u8bcd\u6c47",en:"Favorite Words",zh_TW:"\u6536\u85cf\u8a5e\u5f59",ja:"\u304a\u6c17\u306b\u5165\u308a\u5358\u8a9e",ko:"\uc990\uaca8\ucc3e\ub294 \ub2e8\uc5b4",tr:"Favori Kelimeler"},touch_setting:{zh:"\u89e6\u5c4f\u8bbe\u7f6e",en:"Touch Setting",zh_TW:"\u89f8\u63a7\u8a2d\u5b9a",ja:"\u30bf\u30c3\u30c1\u8a2d\u5b9a",ko:"\ud130\uce58 \uc124\uc815",tr:"Dokunma Ayar\u0131"},touch_translate_shortcut:{zh:"\u89e6\u5c4f\u7ffb\u8bd1\u5feb\u6377\u65b9\u5f0f (\u652f\u6301\u591a\u9009)",en:"Touch Translate Shortcut (multiple supported)",zh_TW:"\u89f8\u63a7\u7ffb\u8b6f\u6377\u5f91 (\u652f\u63f4\u591a\u9078)",ja:"\u30bf\u30c3\u30c1\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8 (\u8907\u6570\u9078\u629e\u53ef)",ko:"\ud130\uce58 \ubc88\uc5ed \ub2e8\ucd95\ud0a4 (\ub2e4\uc911 \uc120\ud0dd \uc9c0\uc6d0)",tr:"Dokunmatik \xc7eviri K\u0131sayolu (Birden Fazla Desteklenir)"},touch_tap_0:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},touch_tap_2:{zh:"\u53cc\u6307\u8f7b\u89e6",en:"Two finger tap",zh_TW:"\u96d9\u6307\u8f15\u89f8",ja:"2\u672c\u6307\u30bf\u30c3\u30d7",ko:"\ub450 \uc190\uac00\ub77d \ud0ed",tr:"\u0130ki Parmakla Dokunma"},touch_tap_3:{zh:"\u4e09\u6307\u8f7b\u89e6",en:"Three finger tap",zh_TW:"\u4e09\u6307\u8f15\u89f8",ja:"3\u672c\u6307\u30bf\u30c3\u30d7",ko:"\uc138 \uc190\uac00\ub77d \ud0ed",tr:"\xdc\xe7 Parmakla Dokunma"},touch_tap_4:{zh:"\u56db\u6307\u8f7b\u89e6",en:"Four finger tap",zh_TW:"\u56db\u6307\u8f15\u89f8",ja:"4\u672c\u6307\u30bf\u30c3\u30d7",ko:"\ub124 \uc190\uac00\ub77d \ud0ed",tr:"D\xf6rt Parmakla Dokunma"},touch_tap_5:{zh:"\u5355\u6307\u53cc\u51fb",en:"Double-click",zh_TW:"\u55ae\u6307\u96d9\u64ca",ja:"\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ub354\ube14 \ud074\ub9ad",tr:"\xc7ift T\u0131klama"},touch_tap_6:{zh:"\u5355\u6307\u4e09\u51fb",en:"Triple-click",zh_TW:"\u55ae\u6307\u4e09\u64ca",ja:"\u30c8\u30ea\u30d7\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ud2b8\ub9ac\ud50c \ud074\ub9ad",tr:"\xdc\xe7l\xfc T\u0131klama"},touch_tap_7:{zh:"\u53cc\u6307\u53cc\u51fb",en:"Two-finger double-click",zh_TW:"\u96d9\u6307\u96d9\u64ca",ja:"2\u672c\u6307\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ub450 \uc190\uac00\ub77d \ub354\ube14 \ud074\ub9ad",tr:"\u0130ki Parmakla \xc7ift T\u0131klama"},translate_blacklist:{zh:"\u7981\u7528\u7ffb\u8bd1\u540d\u5355",en:"Translate Blacklist",zh_TW:"\u505c\u7528\u7ffb\u8b6f\u540d\u55ae",ja:"\u7ffb\u8a33\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8",ko:"\ubc88\uc5ed \ube14\ub799\ub9ac\uc2a4\ud2b8",tr:"Kara Listeyi \xc7evir"},blacklist:{zh:"\u7981\u7528\u9ed1\u540d\u5355",en:"Blacklist",zh_TW:"\u505c\u7528\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8",tr:"Kara Liste"},add_to_blacklist:{zh:"\u52a0\u5165\u9ed1\u540d\u5355",en:"Add to Blacklist",zh_TW:"\u52a0\u5165\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u306b\u8ffd\u52a0",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00",tr:"Kara Listeye Ekle"},remove_from_blacklist:{zh:"\u79fb\u51fa\u9ed1\u540d\u5355",en:"Remove from Blacklist",zh_TW:"\u79fb\u51fa\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8\uc5d0\uc11c \uc81c\uac70",tr:"Kara Listeden Kald\u0131r"},disabled_orilist:{zh:"\u7981\u7528Origin\u540d\u5355",en:"Disabled Origin List",zh_TW:"\u505c\u7528 Origin \u540d\u55ae",ja:"\u7121\u52b9\u5316Origin\u30ea\u30b9\u30c8",ko:"\ube44\ud65c\uc131\ud654\ub41c Origin \ubaa9\ub85d",tr:"Devre D\u0131\u015f\u0131 B\u0131rak\u0131lan Kaynak Listesi"},disabled_csplist:{zh:"\u7981\u7528CSP\u540d\u5355",en:"Disabled CSP List",zh_TW:"\u505c\u7528 CSP \u540d\u55ae",ja:"\u7121\u52b9\u5316CSP\u30ea\u30b9\u30c8",ko:"\ube44\ud65c\uc131\ud654\ub41c CSP \ubaa9\ub85d",tr:"Devre D\u0131\u015f\u0131 CSP Listesi"},disabled_csplist_helper:{zh:"3\u3001\u901a\u8fc7\u8c03\u6574CSP\u7b56\u7565\uff0c\u4f7f\u5f97\u67d0\u4e9b\u9875\u9762\u80fd\u591f\u6ce8\u5165JS/CSS/Media\uff0c\u8bf7\u8c28\u614e\u4f7f\u7528\uff0c\u9664\u975e\u60a8\u5df2\u77e5\u6653\u76f8\u5173\u98ce\u9669\u3002",en:"3. By adjusting the CSP policy, some pages can inject JS/CSS/Media. Please use it with caution unless you are aware of the related risks.",zh_TW:"3. \u900f\u904e\u8abf\u6574 CSP \u653f\u7b56\uff0c\u4f7f\u90e8\u5206\u9801\u9762\u53ef\u6ce8\u5165 JS/CSS/Media\u3002\u8acb\u8b39\u614e\u4f7f\u7528\uff0c\u9664\u975e\u60a8\u5df2\u77e5\u6089\u76f8\u95dc\u98a8\u96aa\u3002",ja:"3. CSP\u30dd\u30ea\u30b7\u30fc\u3092\u8abf\u6574\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u4e00\u90e8\u306e\u30da\u30fc\u30b8\u3067JS/CSS/Media\u306e\u6ce8\u5165\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u95a2\u9023\u3059\u308b\u30ea\u30b9\u30af\u3092\u627f\u77e5\u3057\u3066\u3044\u306a\u3044\u9650\u308a\u3001\u614e\u91cd\u306b\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"3. CSP \uc815\ucc45\uc744 \uc870\uc815\ud558\uc5ec \uc77c\ubd80 \ud398\uc774\uc9c0\uc5d0\uc11c JS/CSS/Media\ub97c \uc8fc\uc785\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uad00\ub828\ub41c \uc704\ud5d8\uc744 \uc778\uc9c0\ud558\uace0 \uc788\ub294 \uacbd\uc6b0\uac00 \uc544\ub2c8\ub77c\uba74 \uc8fc\uc758\ud574\uc11c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.",tr:"3. CSP politikas\u0131n\u0131 ayarlayarak, baz\u0131 sayfalara JS/CSS/Medya dosyalar\u0131 eklenebilir. \u0130lgili risklerin fark\u0131nda de\u011filseniz, l\xfctfen dikkatli kullan\u0131n."},skip_langs:{zh:"\u4e0d\u7ffb\u8bd1\u7684\u8bed\u8a00",en:"Disable Languages",zh_TW:"\u4e0d\u7ffb\u8b6f\u7684\u8a9e\u8a00",ja:"\u7ffb\u8a33\u3057\u306a\u3044\u8a00\u8a9e",ko:"\ubc88\uc5ed\ud558\uc9c0 \uc54a\uc744 \uc5b8\uc5b4",tr:"Dilleri Devre D\u0131\u015f\u0131 B\u0131rak"},skip_langs_helper:{zh:"\u6b64\u529f\u80fd\u4f9d\u8d56\u51c6\u786e\u7684\u8bed\u8a00\u68c0\u6d4b\uff0c\u5efa\u8bae\u542f\u7528\u8fdc\u7a0b\u8bed\u8a00\u68c0\u6d4b\u3002",en:"This feature relies on accurate language detection. It is recommended to enable remote language detection.",zh_TW:"\u6b64\u529f\u80fd\u4ef0\u8cf4\u6e96\u78ba\u7684\u8a9e\u8a00\u5075\u6e2c\uff0c\u5efa\u8b70\u555f\u7528\u9060\u7aef\u8a9e\u8a00\u5075\u6e2c\u3002",ja:"\u3053\u306e\u6a5f\u80fd\u306f\u6b63\u78ba\u306a\u8a00\u8a9e\u691c\u51fa\u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30ea\u30e2\u30fc\u30c8\u8a00\u8a9e\u691c\u51fa\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002",ko:"\uc774 \uae30\ub2a5\uc740 \uc815\ud655\ud55c \uc5b8\uc5b4 \uac10\uc9c0\uc5d0 \uc758\uc874\ud558\ubbc0\ub85c \uc6d0\uaca9 \uc5b8\uc5b4 \uac10\uc9c0\ub97c \ud65c\uc131\ud654\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.",tr:"Bu \xf6zellik, do\u011fru dil alg\u0131lamas\u0131na ba\u011fl\u0131d\u0131r. Uzaktan dil alg\u0131lamay\u0131 etkinle\u015ftirmeniz \xf6nerilir"},context_menus:{zh:"\u53f3\u952e\u83dc\u5355",en:"Context Menus",zh_TW:"\u53f3\u9375\u9078\u55ae",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"\u0130\xe7erik Men\xfcleri"},hide_context_menus:{zh:"\u9690\u85cf\u53f3\u952e\u83dc\u5355",en:"Hide Context Menus",zh_TW:"\u96b1\u85cf\u53f3\u9375\u9078\u55ae",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc\u3092\u96a0\u3059",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274 \uc228\uae30\uae30",tr:"\u0130\xe7erik Men\xfclerini Gizle"},simple_context_menus:{zh:"\u7b80\u5355\u53f3\u952e\u83dc\u5355",en:"Simple_context_menus Context Menus",zh_TW:"\u7c21\u6613\u53f3\u9375\u9078\u55ae",ja:"\u30b7\u30f3\u30d7\u30eb\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\uac04\ub2e8\ud55c \ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"Basit \u0130\xe7erik Men\xfcleri"},secondary_context_menus:{zh:"\u4e8c\u7ea7\u53f3\u952e\u83dc\u5355",en:"Secondary Context Menus",zh_TW:"\u6b21\u7d1a\u53f3\u9375\u9078\u55ae",ja:"\u30b5\u30d6\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\ubcf4\uc870 \ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"\u0130kincil \u0130\xe7erik Men\xfcleri"},mulkeys_help:{zh:"\u652f\u6301\u7528\u6362\u884c\u6216\u82f1\u6587\u9017\u53f7\u201c,\u201d\u5206\u9694\uff0c\u8f6e\u8be2\u8c03\u7528\u3002",en:'Supports polling calls separated by newlines or English commas ",".',zh_TW:"\u652f\u63f4\u4ee5\u63db\u884c\u6216\u82f1\u6587\u9017\u865f\u300c,\u300d\u5206\u9694\uff0c\u8f2a\u8a62\u547c\u53eb\u3002",ja:"\u6539\u884c\u307e\u305f\u306f\u82f1\u8a9e\u306e\u30b3\u30f3\u30de\u300c,\u300d\u3067\u533a\u5207\u3063\u3066\u30dd\u30fc\u30ea\u30f3\u30b0\u30b3\u30fc\u30eb\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002",ko:'\uc904\ubc14\uafc8 \ub610\ub294 \uc601\uc5b4 \uc27c\ud45c ","\ub85c \uad6c\ubd84\ub41c \ud3f4\ub9c1 \ud638\ucd9c\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.',tr:'Anket \xe7a\u011fr\u0131lar\u0131n\u0131n yeni sat\u0131rlarla veya \u0130ngilizce virg\xfcllerle ayr\u0131lmas\u0131n\u0131 destekler"'},translation_element_tag:{zh:"\u8bd1\u6587\u5143\u7d20\u6807\u7b7e",en:"Translation Element Tag",zh_TW:"\u8b6f\u6587\u5143\u7d20\u6a19\u7c64",ja:"\u7ffb\u8a33\u8981\u7d20\u30bf\u30b0",ko:"\ubc88\uc5ed \uc694\uc18c \ud0dc\uadf8",tr:"\xc7eviri \xd6\u011fesi Etiketi"},show_only_translations:{zh:"\u4ec5\u663e\u793a\u8bd1\u6587",en:"Show Only Translations",zh_TW:"\u50c5\u986f\u793a\u8b6f\u6587",ja:"\u7ffb\u8a33\u306e\u307f\u8868\u793a",ko:"\ubc88\uc5ed\ub9cc \ubcf4\uae30",tr:"Yaln\u0131zca \xc7evirileri G\xf6ster"},show_only_translations_help:{zh:"\u975e\u5b8c\u7f8e\u5b9e\u73b0\uff0c\u67d0\u4e9b\u9875\u9762\u53ef\u80fd\u6709\u6837\u5f0f\u7b49\u95ee\u9898\u3002",en:"It is not a perfect implementation and some pages may have style issues.",zh_TW:"\u6b64\u70ba\u975e\u5b8c\u7f8e\u5be6\u4f5c\uff0c\u90e8\u5206\u9801\u9762\u53ef\u80fd\u51fa\u73fe\u6a23\u5f0f\u7b49\u554f\u984c\u3002",ja:"\u5b8c\u5168\u306a\u5b9f\u88c5\u3067\u306f\u306a\u304f\u3001\u4e00\u90e8\u306e\u30da\u30fc\u30b8\u3067\u30b9\u30bf\u30a4\u30eb\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002",ko:"\uc644\ubcbd\ud55c \uad6c\ud604\uc774 \uc544\ub2c8\uba70 \uc77c\ubd80 \ud398\uc774\uc9c0\uc5d0\uc11c \uc2a4\ud0c0\uc77c \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"M\xfckemmel bir uygulama de\u011fildir ve baz\u0131 sayfalarda stil sorunlar\u0131 olabilir"},trans_order:{zh:"\u6587\u672c\u987a\u5e8f",en:"Translation Order",zh_TW:"\u6587\u5b57\u9806\u5e8f",ja:"\u30c6\u30ad\u30b9\u30c8\u9806\u5e8f",ko:"\ud14d\uc2a4\ud2b8 \uc21c\uc11c",tr:"\xc7eviri S\u0131ras\u0131"},wrap_original:{zh:"\u5305\u88f9\u539f\u6587",en:"Wrap Original Text",zh_TW:"\u5305\u88f9\u539f\u6587",ja:"\u539f\u6587\u3092\u30e9\u30c3\u30d7",ko:"\uc6d0\ubb38 \uac10\uc2f8\uae30",tr:"Orijinal Metni Sar"},original_first:{zh:"\u539f\u6587\u5728\u4e0a\u65b9",en:"Original First",zh_TW:"\u539f\u6587\u5728\u4e0a\u65b9",ja:"\u539f\u6587\u304c\u6700\u521d",ko:"\uc6d0\ubb38\uc774 \uba3c\uc800",tr:"Orijinal \u0130lk"},translation_first:{zh:"\u8bd1\u6587\u5728\u4e0a\u65b9",en:"Translation First",zh_TW:"\u8b6f\u6587\u5728\u4e0a\u65b9",ja:"\u7ffb\u8a33\u304c\u6700\u521d",ko:"\ubc88\uc5ed\uc774 \uba3c\uc800",tr:"\xc7eviri \u0130lk"},transonly_revert:{zh:"\u60ac\u6d6e\u663e\u793a\u539f\u6587",en:"Hover to Show Original",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u6642\u986f\u793a\u539f\u6587",ja:"\u30db\u30d0\u30fc\u3067\u539f\u6587\u3092\u8868\u793a",ko:"\ud638\ubc84 \uc2dc \uc6d0\ubb38 \ud45c\uc2dc",tr:"Orijinali G\xf6stermek \u0130\xe7in \xdczerine Gelin"},transonly_revert_delay:{zh:"\u60ac\u6d6e\u5ef6\u8fdf(\u79d2)",en:"Hover Delay (seconds)",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u5ef6\u9072(\u79d2)",ja:"\u30db\u30d0\u30fc\u9045\u5ef6(\u79d2)",ko:"\ud638\ubc84 \uc9c0\uc5f0(\ucd08)",tr:"Vurgulu Gecikme (Saniye)"},translate_page_title:{zh:"\u662f\u5426\u7ffb\u8bd1\u9875\u9762\u6807\u9898",en:"Translate Page Title",zh_TW:"\u662f\u5426\u7ffb\u8b6f\u9801\u9762\u6a19\u984c",ja:"\u30da\u30fc\u30b8\u30bf\u30a4\u30c8\u30eb\u3092\u7ffb\u8a33\u3059\u308b",ko:"\ud398\uc774\uc9c0 \uc81c\ubaa9 \ubc88\uc5ed",tr:"Sayfa Ba\u015fl\u0131\u011f\u0131n\u0131 \xc7evir"},more:{zh:"\u66f4\u591a",en:"More",zh_TW:"\u66f4\u591a",ja:"\u3082\u3063\u3068\u898b\u308b",ko:"\ub354\ubcf4\uae30",tr:"Daha Fazla"},less:{zh:"\u66f4\u5c11",en:"Less",zh_TW:"\u66f4\u5c11",ja:"\u5c11\u306a\u304f",ko:"\uc904\uc774\uae30",tr:"Daha Az"},fixer_selector:{zh:"\u7f51\u9875\u4fee\u590d\u9009\u62e9\u5668",en:"Fixer Selector",zh_TW:"\u7db2\u9801\u4fee\u5fa9\u9078\u64c7\u5668",ja:"Web\u4fee\u6b63\u30bb\u30ec\u30af\u30bf",ko:"\uc6f9\ud398\uc774\uc9c0 \uc218\uc815 \uc120\ud0dd\uc790",tr:"Onar\u0131c\u0131 Se\xe7ici"},trigger_mode:{zh:"\u89e6\u53d1\u65b9\u5f0f",en:"Trigger Mode",zh_TW:"\u89f8\u767c\u65b9\u5f0f",ja:"\u30c8\u30ea\u30ac\u30fc\u30e2\u30fc\u30c9",ko:"\ud2b8\ub9ac\uac70 \ubaa8\ub4dc",tr:"Tetikleme Modu"},trigger_click:{zh:"\u70b9\u51fb\u89e6\u53d1",en:"Click Trigger",zh_TW:"\u9ede\u9078\u89f8\u767c",ja:"\u30af\u30ea\u30c3\u30af\u30c8\u30ea\u30ac\u30fc",ko:"\ud074\ub9ad \ud2b8\ub9ac\uac70",tr:"T\u0131klama Tetikleyicisi"},trigger_hover:{zh:"\u9f20\u6807\u60ac\u505c\u89e6\u53d1",en:"Hover Trigger",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u89f8\u767c",ja:"\u30db\u30d0\u30fc\u30c8\u30ea\u30ac\u30fc",ko:"\ud638\ubc84 \ud2b8\ub9ac\uac70",tr:"Fareyle \xdczerine Gelme Tetikleyicisi"},trigger_select:{zh:"\u9009\u4e2d\u89e6\u53d1",en:"Select Trigger",zh_TW:"\u9078\u53d6\u89f8\u767c",ja:"\u9078\u629e\u30c8\u30ea\u30ac\u30fc",ko:"\uc120\ud0dd \ud2b8\ub9ac\uac70",tr:"Tetikleyiciyi Se\xe7in"},trigger_dblclick:{zh:"\u53cc\u51fb\u89e6\u53d1",en:"Double-click Trigger",zh_TW:"\u96d9\u64ca\u89f8\u767c",ja:"\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u30c8\u30ea\u30ac\u30fc",ko:"\ub354\ube14\ud074\ub9ad \ud2b8\ub9ac\uac70",tr:"\xc7ift T\u0131klama Tetikleyicisi"},tranbtn_position_mode:{zh:"\u5f39\u51fa\u6309\u94ae\u4f4d\u7f6e",en:"Popup Button Position",zh_TW:"\u5f48\u51fa\u6309\u9215\u4f4d\u7f6e",ja:"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30dc\u30bf\u30f3\u4f4d\u7f6e",ko:"\ud31d\uc5c5 \ubc84\ud2bc \uc704\uce58",tr:"A\xe7\u0131l\u0131r D\xfc\u011fme Konumu"},tranbtn_position_fixed:{zh:"\u56fa\u5b9a\u4f4d\u7f6e",en:"Fixed Position",zh_TW:"\u56fa\u5b9a\u4f4d\u7f6e",ja:"\u56fa\u5b9a\u4f4d\u7f6e",ko:"\uace0\uc815 \uc704\uce58",tr:"Sabit Pozisyon"},tranbtn_position_mouse:{zh:"\u8ddf\u968f\u9f20\u6807",en:"Follow Mouse",zh_TW:"\u8ddf\u96a8\u6ed1\u9f20",ja:"\u30de\u30a6\u30b9\u306b\u8ffd\u5f93",ko:"\ub9c8\uc6b0\uc2a4 \ub530\ub77c\uac00\uae30",tr:"Fareyi Takip Et"},extend_styles:{zh:"\u9644\u52a0\u6837\u5f0f",en:"Extend Styles",zh_TW:"\u9644\u52a0\u6a23\u5f0f",ja:"\u62e1\u5f35\u30b9\u30bf\u30a4\u30eb",ko:"\ud655\uc7a5 \uc2a4\ud0c0\uc77c",tr:"Stilleri Geni\u015flet"},custom_option:{zh:"\u81ea\u5b9a\u4e49\u9009\u9879",en:"Custom Option",zh_TW:"\u81ea\u8a02\u9078\u9805",ja:"\u30ab\u30b9\u30bf\u30e0\u30aa\u30d7\u30b7\u30e7\u30f3",ko:"\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc635\uc158",tr:"\xd6zel Se\xe7enek"},translate_selected_text:{zh:"\u7ffb\u8bd1\u9009\u4e2d\u6587\u5b57",en:"Translate Selected Text",zh_TW:"\u7ffb\u8b6f\u9078\u53d6\u6587\u5b57",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8 \ubc88\uc5ed",tr:"Se\xe7ilen Metni \xc7evir"},toggle_style:{zh:"\u5207\u6362\u6837\u5f0f",en:"Toggle Style",zh_TW:"\u5207\u63db\u6a23\u5f0f",ja:"\u30b9\u30bf\u30a4\u30eb\u3092\u5207\u308a\u66ff\u3048",ko:"\uc2a4\ud0c0\uc77c \uc804\ud658",tr:"Stili De\u011fi\u015ftir"},open_menu:{zh:"\u6253\u5f00\u5f39\u7a97\u83dc\u5355",en:"Open Popup Menu",zh_TW:"\u958b\u555f\u5f48\u51fa\u8996\u7a97\u9078\u55ae",ja:"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30e1\u30cb\u30e5\u30fc\u3092\u958b\u304f",ko:"\ud31d\uc5c5 \uba54\ub274 \uc5f4\uae30",tr:"A\xe7\u0131l\u0131r Men\xfcy\xfc A\xe7"},open_setting:{zh:"\u6253\u5f00\u8bbe\u7f6e",en:"Open Setting",zh_TW:"\u958b\u555f\u8a2d\u5b9a",ja:"\u8a2d\u5b9a\u3092\u958b\u304f",ko:"\uc124\uc815 \uc5f4\uae30",tr:"Ayar\u0131 A\xe7"},follow_selection:{zh:"\u7ffb\u8bd1\u6846\u8ddf\u968f\u9009\u4e2d\u6587\u672c",en:"Transbox Follow Selection",zh_TW:"\u7ffb\u8b6f\u6846\u8ddf\u96a8\u9078\u53d6\u6587\u5b57",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u3092\u9078\u629e\u7bc4\u56f2\u306b\u8ffd\u5f93",ko:"\ubc88\uc5ed \uc0c1\uc790\uac00 \uc120\ud0dd \ud56d\ubaa9 \ub530\ub77c\uac00\uae30",tr:"\xc7eviri Kutusu Takip Se\xe7imi"},tranbox_auto_height:{zh:"\u7ffb\u8bd1\u6846\u81ea\u9002\u5e94\u9ad8\u5ea6",en:"Translation box adaptive height",zh_TW:"\u7ffb\u8b6f\u6846\u81ea\u9069\u61c9\u9ad8\u5ea6",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u306e\u9ad8\u3055\u81ea\u52d5\u8abf\u6574",ko:"\ubc88\uc5ed \uc0c1\uc790 \ub192\uc774 \uc790\ub3d9 \uc870\uc808",tr:"\xc7eviri Kutusu Uyarlanabilir Y\xfckseklik"},tranbox_interact_mode:{zh:"\u7ffb\u8bd1\u6846\u5185\u4ea4\u4e92\u6a21\u5f0f",en:"Transbox Interact Mode",zh_TW:"\u7ffb\u8b6f\u6846\u5167\u4e92\u52d5\u6a21\u5f0f",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u5185\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u30e2\u30fc\u30c9",ko:"\ubc88\uc5ed \uc0c1\uc790 \ub0b4 \uc778\ud130\ub799\uc158 \ubaa8\ub4dc",tr:"\xc7eviri Kutusu Etkile\u015fim Modu"},tranbox_interact_click:{zh:"\u5355\u51fb\u9009\u4e2d\u6587\u672c\u89e6\u53d1\u7ffb\u8bd1",en:"Click selected text to translate",zh_TW:"\u55ae\u64ca\u9078\u53d6\u6587\u5b57\u89f8\u767c\u7ffb\u8b6f",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8\ub97c \ud074\ub9ad\ud558\uc5ec \ubc88\uc5ed",tr:"\xc7evirmek \u0130\xe7in Se\xe7ilen Metni T\u0131klay\u0131n"},tranbox_interact_dblclick:{zh:"\u53cc\u51fb\u9009\u4e2d\u6587\u672c\u89e6\u53d1\u7ffb\u8bd1",en:"Double-click selected text to translate",zh_TW:"\u96d9\u64ca\u9078\u53d6\u6587\u5b57\u89f8\u767c\u7ffb\u8b6f",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8\ub97c \ub354\ube14\ud074\ub9ad\ud558\uc5ec \ubc88\uc5ed",tr:"\xc7evirmek \u0130\xe7in Se\xe7ilen Metni \xc7ift T\u0131klay\u0131n"},selection_skip_langs:{zh:"\u5ffd\u7565\u7684\u8bed\u8a00",en:"Ignore Languages",zh_TW:"\u5ffd\u7565\u7684\u8a9e\u8a00",ja:"\u7121\u8996\u3059\u308b\u8a00\u8a9e",ko:"\ubb34\uc2dc\ud560 \uc5b8\uc5b4",tr:"Dilleri Yoksay"},selection_skip_langs_helper:{zh:"\u5217\u8868\u4e2d\u7684\u8bed\u8a00\u4e0d\u5f39\u7a97\uff08\u8bbe\u5b9a\u540e\uff0c\u7b2c\u4e8c\u76ee\u6807\u8bed\u8a00\u4e92\u8bd1\u529f\u80fd\u5c06\u81ea\u52a8\u7981\u7528\uff09",en:"Don't show popup for languages in this list (when enabled, will automatically disable bidirectional translation for the second target language)",zh_TW:"\u5217\u8868\u4e2d\u7684\u8a9e\u8a00\u4e0d\u5f48\u7a97\uff08\u8a2d\u5b9a\u5f8c\uff0c\u7b2c\u4e8c\u76ee\u6a19\u8a9e\u8a00\u7684\u4e92\u8b6f\u529f\u80fd\u5c07\u81ea\u52d5\u7981\u7528\uff09",ja:"\u30ea\u30b9\u30c8\u5185\u306e\u8a00\u8a9e\u306f\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u8868\u793a\u3057\u307e\u305b\u3093\uff08\u6709\u52b9\u306b\u3059\u308b\u3068\u3001\u7b2c\u4e8c\u306e\u5bfe\u8c61\u8a00\u8a9e\u306e\u53cc\u65b9\u5411\u7ffb\u8a33\u6a5f\u80fd\u304c\u81ea\u52d5\u7684\u306b\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\uff09",ko:"\ubaa9\ub85d\uc5d0 \uc788\ub294 \uc5b8\uc5b4\ub294 \ud31d\uc5c5\uc744 \ud45c\uc2dc\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 (\ud65c\uc131\ud654 \uc2dc, \ub450 \ubc88\uc9f8 \ub300\uc0c1 \uc5b8\uc5b4\uc758 \uc591\ubc29\ud5a5 \ubc88\uc5ed \uae30\ub2a5\uc774 \uc790\ub3d9\uc73c\ub85c \ube44\ud65c\uc131\ud654\ub429\ub2c8\ub2e4)",tr:"Bu listedeki diller i\xe7in a\xe7\u0131l\u0131r pencere g\xf6sterilmez (etkinle\u015ftirildi\u011finde, ikinci hedef dil i\xe7in \xe7ift y\xf6nl\xfc \xe7eviri i\u015flevi otomatik olarak devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131r)"},translate_start_hook:{zh:"\u7ffb\u8bd1\u5f00\u59cb\u94a9\u5b50\u51fd\u6570",en:"Translate Start Hook",zh_TW:"\u7ffb\u8b6f\u958b\u59cb Hook",ja:"\u7ffb\u8a33\u958b\u59cb\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc2dc\uc791 \ud6c4\ud06c",tr:"\xc7eviri Ba\u015flad\u0131\u011f\u0131nda Tetiklenen \u0130\u015flev"},translate_start_hook_helper:{zh:"\u7ffb\u8bd1\u524d\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",en:"Run before translation, input parameters are: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",zh_TW:"\u7ffb\u8b6f\u524d\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",ja:"\u7ffb\u8a33\u524d\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",ko:"\ubc88\uc5ed \uc804 \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",tr:"\xc7eviriden \xf6nce \xe7al\u0131\u015ft\u0131r\u0131l\u0131r, giri\u015f parametreleri \u015funlard\u0131r: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}"},translate_end_hook:{zh:"\u7ffb\u8bd1\u5b8c\u6210\u94a9\u5b50\u51fd\u6570",en:"Translate End Hook",zh_TW:"\u7ffb\u8b6f\u5b8c\u6210 Hook",ja:"\u7ffb\u8a33\u5b8c\u4e86\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc644\ub8cc \ud6c4\ud06c",tr:"\xc7eviri Bitti\u011finde Tetiklenen \u0130\u015flev"},translate_end_hook_helper:{zh:"\u7ffb\u8bd1\u5b8c\u6210\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a ({hostNode, parentNode, nodes, wrapperNode, innerNode})",en:"Run when translation is complete, input parameters are: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",zh_TW:"\u7ffb\u8b6f\u5b8c\u6210\u6642\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a ({hostNode, parentNode, nodes, wrapperNode, innerNode})",ja:"\u7ffb\u8a33\u5b8c\u4e86\u6642\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",ko:"\ubc88\uc5ed \uc644\ub8cc \uc2dc \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",tr:"\xc7eviri tamamland\u0131\u011f\u0131nda, giri\u015f parametreleri \u015funlard\u0131r: ({hostNode, parentNode, nodes, wrapperNode, innerNode})"},translate_remove_hook:{zh:"\u7ffb\u8bd1\u79fb\u9664\u94a9\u5b50\u51fd\u6570",en:"Translate Removed Hook",zh_TW:"\u7ffb\u8b6f\u79fb\u9664 Hook",ja:"\u7ffb\u8a33\u524a\u9664\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc81c\uac70 \ud6c4\ud06c",tr:"\xc7eviri Kald\u0131r\u0131ld\u0131\u011f\u0131nda Tetiklenen \u0130\u015flev"},translate_remove_hook_helper:{zh:"\u7ffb\u8bd1\u79fb\u9664\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a \u7ffb\u8bd1\u8282\u70b9\u3002",en:"Run when translation is removed, the input parameters are: translation node.",zh_TW:"\u79fb\u9664\u7ffb\u8b6f\u6642\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a\u7ffb\u8b6f\u7bc0\u9ede\u3002",ja:"\u7ffb\u8a33\u524a\u9664\u6642\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: \u7ffb\u8a33\u30ce\u30fc\u30c9\u3002",ko:"\ubc88\uc5ed \uc81c\uac70 \uc2dc \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: \ubc88\uc5ed \ub178\ub4dc.",tr:"\xc7eviri kald\u0131r\u0131ld\u0131\u011f\u0131nda \xe7al\u0131\u015ft\u0131r\u0131l\u0131r, giri\u015f parametreleri \u015funlard\u0131r: \xe7eviri d\xfc\u011f\xfcm\xfc."},english_dict:{zh:"\u82f1\u6587\u8bcd\u5178",en:"English Dictionary",zh_TW:"\u82f1\u6587\u5b57\u5178",ja:"\u82f1\u8a9e\u8f9e\u66f8",ko:"\uc601\uc5b4 \uc0ac\uc804",tr:"\u0130ngilizce S\xf6zl\xfck"},default_dict:{zh:"\u9ed8\u8ba4\u8bcd\u5178",en:"Default Dictionary",zh_TW:"\u9810\u8a2d\u8a5e\u5178",ja:"\u65e2\u5b9a\u306e\u8f9e\u66f8",ko:"\uae30\ubcf8 \uc0ac\uc804",tr:"Varsay\u0131lan S\xf6zl\xfck"},ai_dict:{zh:"AI \u8bcd\u5178",en:"AI Dictionary",zh_TW:"AI \u8a5e\u5178",ja:"AI \u8f9e\u66f8",ko:"AI \uc0ac\uc804",tr:"AI S\xf6zl\xfc\u011f\xfc"},ai_dict_api:{zh:"AI \u8bcd\u5178\u63a5\u53e3",en:"AI Dictionary API",zh_TW:"AI \u8a5e\u5178\u4ecb\u9762",ja:"AI \u8f9e\u66f8 API",ko:"AI \uc0ac\uc804 API",tr:"AI S\xf6zl\xfck API'si"},ai_dict_prompt:{zh:"AI \u8bcd\u5178\u63d0\u793a\u8bcd",en:"AI Dictionary Prompt",zh_TW:"AI \u8a5e\u5178\u63d0\u793a\u8a5e",ja:"AI \u8f9e\u66f8\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"AI \uc0ac\uc804 \ud504\ub86c\ud504\ud2b8",tr:"AI S\xf6zl\xfck \u0130stemi"},english_suggest:{zh:"\u82f1\u6587\u5efa\u8bae",en:"English Suggest",zh_TW:"\u82f1\u6587\u5efa\u8b70",ja:"\u82f1\u8a9e\u30b5\u30b8\u30a7\u30b9\u30c8",ko:"\uc601\uc5b4 \uc81c\uc548",tr:"\u0130ngilizce \xd6neri"},api_name:{zh:"\u63a5\u53e3\u540d\u79f0",en:"API Name",zh_TW:"\u4ecb\u9762\u540d\u7a31",ja:"API\u540d",ko:"API \uc774\ub984",tr:"API Ad\u0131"},model_list_url:{zh:"\u6a21\u578b\u5217\u8868URL",en:"Model List URL",zh_TW:"\u6a21\u578b\u5217\u8868URL",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7URL",ko:"\ubaa8\ub378 \ubaa9\ub85d URL",tr:"Model Listesi URL'si"},model_list_loading:{zh:"\u6b63\u5728\u52a0\u8f7d\u6a21\u578b\u5217\u8868...",en:"Loading model list...",zh_TW:"\u6b63\u5728\u8f09\u5165\u6a21\u578b\u5217\u8868...",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7\u3092\u8aad\u307f\u8fbc\u307f\u4e2d...",ko:"\ubaa8\ub378 \ubaa9\ub85d\uc744 \ubd88\ub7ec\uc624\ub294 \uc911...",tr:"Model Listesi Y\xfckleniyor..."},model_list_fetch_failed:{zh:"\u6a21\u578b\u5217\u8868\u52a0\u8f7d\u5931\u8d25",en:"Failed to load model list",zh_TW:"\u6a21\u578b\u5217\u8868\u8f09\u5165\u5931\u6557",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f",ko:"\ubaa8\ub378 \ubaa9\ub85d\uc744 \ubd88\ub7ec\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4",tr:"Model Listesi Y\xfcklenemedi"},model_list_empty:{zh:"\u672a\u83b7\u53d6\u5230\u6a21\u578b\u5217\u8868\uff0c\u53ef\u624b\u52a8\u586b\u5199",en:"No models found. You can enter one manually.",zh_TW:"\u672a\u53d6\u5f97\u6a21\u578b\u5217\u8868\uff0c\u53ef\u624b\u52d5\u586b\u5beb",ja:"\u30e2\u30c7\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u624b\u52d5\u5165\u529b\u3067\u304d\u307e\u3059\u3002",ko:"\ubaa8\ub378\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc9c1\uc811 \uc785\ub825\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"Hi\xe7bir model bulunamad\u0131. Manuel olarak bir tane girebilirsiniz."},sort_order:{zh:"\u6392\u5e8f\u6743\u91cd",en:"Sort Order",zh_TW:"\u6392\u5e8f\u6b0a\u91cd",ja:"\u30bd\u30fc\u30c8\u9806\u5e8f",ko:"\uc815\ub82c \uc21c\uc11c",tr:"S\u0131ralama D\xfczeni"},sort_order_help:{zh:"\u6570\u503c\u8d8a\u5c0f\u8d8a\u9760\u524d",en:"Smaller values appear first",zh_TW:"\u6578\u503c\u8d8a\u5c0f\u8d8a\u9760\u524d",ja:"\u5c0f\u3055\u3044\u5024\u304c\u5148\u306b\u8868\u793a\u3055\u308c\u307e\u3059",ko:"\uc791\uc740 \uac12\uc774 \uba3c\uc800 \ud45c\uc2dc\ub429\ub2c8\ub2e4",tr:"\xd6nce K\xfc\xe7\xfck De\u011ferler G\xf6r\xfcn\xfcr"},is_disabled:{zh:"\u662f\u5426\u7981\u7528",en:"Is Disabled",zh_TW:"\u662f\u5426\u505c\u7528",ja:"\u7121\u52b9\u306b\u3059\u308b",ko:"\ube44\ud65c\uc131\ud654 \uc5ec\ubd80",tr:"Devre d\u0131\u015f\u0131 B\u0131rak\u0131ld\u0131"},is_pinned:{zh:"\u662f\u5426\u7f6e\u9876",en:"Is Pinned",zh_TW:"\u662f\u5426\u7f6e\u9802",ja:"\u30d4\u30f3\u7559\u3081",ko:"\uace0\uc815 \uc5ec\ubd80",tr:"Sabitlendi"},sort_alphabetically:{zh:"\u6309\u5b57\u6bcd\u6392\u5e8f",en:"Sort Alphabetically",zh_TW:"\u6309\u5b57\u6bcd\u6392\u5e8f",ja:"\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u9806",ko:"\uc54c\ud30c\ubcb3\uc21c \uc815\ub82c",tr:"Alfabetik Olarak S\u0131rala"},translate_selected:{zh:"\u662f\u5426\u542f\u7528\u5212\u8bcd\u7ffb\u8bd1",en:"If translate selected",zh_TW:"\u662f\u5426\u555f\u7528\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7bc4\u56f2\u306e\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc120\ud0dd \ubc88\uc5ed \uc0ac\uc6a9 \uc5ec\ubd80",tr:"\xc7eviri Se\xe7ene\u011fi Se\xe7ilirse"},use_batch_fetch:{zh:"\u662f\u5426\u805a\u5408\u53d1\u9001\u7ffb\u8bd1\u8bf7\u6c42",en:"Whether to aggregate and send translation requests",zh_TW:"\u662f\u5426\u5f59\u6574\u767c\u9001\u7ffb\u8b6f\u8acb\u6c42",ja:"\u7ffb\u8a33\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u307e\u3068\u3081\u3066\u9001\u4fe1",ko:"\ubc88\uc5ed \uc694\uccad \uc77c\uad04 \uc804\uc1a1 \uc5ec\ubd80",tr:"\xc7eviri isteklerini bir araya getirip g\xf6ndermeye karar verilip verilmeyece\u011fi"},batch_interval:{zh:"\u805a\u5408\u8bf7\u6c42\u7b49\u5f85\u65f6\u95f4(10-10000)",en:"Aggregation request waiting time (10-10000)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u7b49\u5f85\u6642\u9593(10-10000)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5f85\u6a5f\u6642\u9593(10-10000)",ko:"\uc77c\uad04 \uc694\uccad \ub300\uae30 \uc2dc\uac04(10-10000)",tr:"Toplama \u0130ste\u011fi Bekleme S\xfcresi (10-10000)"},batch_size:{zh:"\u805a\u5408\u8bf7\u6c42\u6700\u5927\u6bb5\u843d\u6570(1-100)",en:"Maximum number of paragraphs in an aggregation request (1-100)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u6700\u5927\u6bb5\u843d\u6578(1-100)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6700\u5927\u6bb5\u843d\u6570(1-100)",ko:"\uc77c\uad04 \uc694\uccad \ucd5c\ub300 \ub2e8\ub77d \uc218(1-100)",tr:"Toplama \u0130ste\u011findeki Maksimum Paragraf Say\u0131s\u0131 (1-100)"},batch_length:{zh:"\u805a\u5408\u8bf7\u6c42\u6700\u5927\u6587\u672c\u957f\u5ea6(1000-100000)",en:"Maximum text length for aggregation requests (1000-100000)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u6700\u5927\u6587\u5b57\u9577\u5ea6(1000-100000)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6700\u5927\u30c6\u30ad\u30b9\u30c8\u9577(1000-100000)",ko:"\uc77c\uad04 \uc694\uccad \ucd5c\ub300 \ud14d\uc2a4\ud2b8 \uae38\uc774(1000-100000)",tr:"Toplama Istekleri \u0130\xe7in Maksimum Metin Uzunlu\u011fu (1000-100000)"},batch_concurrency:{zh:"\u805a\u5408\u6279\u6b21\u5e76\u53d1\u6570(1-100)",en:"Concurrent aggregation batches (1-100)",zh_TW:"\u5f59\u6574\u6279\u6b21\u4e26\u884c\u6578(1-100)",ja:"\u540c\u6642\u5b9f\u884c\u3059\u308b\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u6570(1-100)",ko:"\ub3d9\uc2dc \uc77c\uad04 \uc694\uccad \uc218(1-100)",tr:"E\u015fzamanl\u0131 Toplama Grubu Say\u0131s\u0131 (1-100)"},batch_concurrency_context_hint:{zh:"\u4e0a\u4e0b\u6587\u4f1a\u8bdd\u8981\u6c42\u6279\u6b21\u6309\u987a\u5e8f\u6267\u884c\uff0c\u56e0\u6b64\u5e76\u53d1\u6570\u56fa\u5b9a\u4e3a 1",en:"Context sessions require ordered batches, so concurrency is fixed at 1",zh_TW:"\u4e0a\u4e0b\u6587\u6703\u8a71\u8981\u6c42\u6279\u6b21\u4f9d\u5e8f\u57f7\u884c\uff0c\u56e0\u6b64\u4e26\u884c\u6578\u56fa\u5b9a\u70ba 1",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u5229\u7528\u6642\u306f\u9806\u5e8f\u3092\u4fdd\u3064\u305f\u3081\u3001\u540c\u6642\u5b9f\u884c\u6570\u306f1\u306b\u56fa\u5b9a\u3055\u308c\u307e\u3059",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uc138\uc158\uc740 \uc21c\ucc28 \uc2e4\ud589\uc774 \ud544\uc694\ud558\ubbc0\ub85c \ub3d9\uc2dc \uc2e4\ud589 \uc218\ub294 1\ub85c \uace0\uc815\ub429\ub2c8\ub2e4",tr:"Ba\u011flam oturumlar\u0131 s\u0131ral\u0131 gruplar gerektirdi\u011finden e\u015fzamanl\u0131l\u0131k 1 olarak sabitlenir"},use_stream:{zh:"\u662f\u5426\u542f\u7528\u6d41\u5f0f\u4f20\u8f93",en:"Whether to enable streaming",zh_TW:"\u662f\u5426\u555f\u7528\u4e32\u6d41\u50b3\u8f38",ja:"\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc2a4\ud2b8\ub9ac\ubc0d \ud65c\uc131\ud654 \uc5ec\ubd80",tr:"Ak\u0131\u015f\u0131n Etkinle\u015ftirilip Etkinle\u015ftirilmeyece\u011fi"},stream_render_mode:{zh:"\u6d41\u5f0f\u6e32\u67d3\u6a21\u5f0f",en:"Stream render mode",zh_TW:"\u4e32\u6d41\u6e32\u67d3\u6a21\u5f0f",ja:"\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u30e2\u30fc\u30c9",ko:"\uc2a4\ud2b8\ub9ac\ubc0d \ub80c\ub354\ub9c1 \ubaa8\ub4dc",tr:"Ak\u0131\u015f Olu\u015fturma Modu"},stream_render_realtime:{zh:"\u5b9e\u65f6\u6e32\u67d3",en:"Realtime render",zh_TW:"\u5373\u6642\u6e32\u67d3",ja:"\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0",ko:"\uc2e4\uc2dc\uac04 \ub80c\ub354\ub9c1",tr:"Ger\xe7ek Zamanl\u0131 Olu\u015fturma"},stream_render_segment:{zh:"\u7247\u6bb5\u6e32\u67d3",en:"Segment render",zh_TW:"\u7247\u6bb5\u6e32\u67d3",ja:"\u30bb\u30b0\u30e1\u30f3\u30c8\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0",ko:"\uc138\uadf8\uba3c\ud2b8 \ub80c\ub354\ub9c1",tr:"Segment Olu\u015fturma"},use_context:{zh:"\u662f\u5426\u542f\u7528\u667a\u80fd\u4e0a\u4e0b\u6587",en:"Whether to enable AI context",zh_TW:"\u662f\u5426\u555f\u7528\u667a\u6167\u4e0a\u4e0b\u6587",ja:"AI\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"AI \ucee8\ud14d\uc2a4\ud2b8 \ud65c\uc131\ud654 \uc5ec\ubd80",tr:"AI \u0130\xe7eriklerinin Etkinle\u015ftirilip Etkinle\u015ftirilmeyece\u011fi"},context_size:{zh:"\u4e0a\u4e0b\u6587\u4f1a\u8bdd\u6570\u91cf(1-20)",en:"Number of context sessions(1-20)",zh_TW:"\u4e0a\u4e0b\u6587\u6703\u8a71\u6578\u91cf(1-20)",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30bb\u30c3\u30b7\u30e7\u30f3\u6570(1-20)",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uc138\uc158 \uc218(1-20)",tr:"\u0130\xe7erik Oturumlar\u0131n\u0131n Say\u0131s\u0131 (1-20)"},auto_scan_page:{zh:"\u81ea\u52a8\u626b\u63cf\u9875\u9762",en:"Auto scan page",zh_TW:"\u81ea\u52d5\u6383\u63cf\u9801\u9762",ja:"\u30da\u30fc\u30b8\u3092\u81ea\u52d5\u30b9\u30ad\u30e3\u30f3",ko:"\ud398\uc774\uc9c0 \uc790\ub3d9 \uc2a4\uce94",tr:"Sayfay\u0131 Otomatik Tara"},has_rich_text:{zh:"\u542f\u7528\u5bcc\u6587\u672c\u7ffb\u8bd1",en:"Enable rich text translation",zh_TW:"\u555f\u7528\u5bcc\u6587\u5b57\u7ffb\u8b6f",ja:"\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ub9ac\uce58 \ud14d\uc2a4\ud2b8 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Zengin Metin \xc7evirisini Etkinle\u015ftir"},has_shadowroot:{zh:"\u626b\u63cfShadowroot",en:"Scan Shadowroot",zh_TW:"\u6383\u63cfShadowroot",ja:"Shadowroot\u3092\u30b9\u30ad\u30e3\u30f3",ko:"Shadowroot \uc2a4\uce94",tr:"Shadowroot'u Tara"},mousehover_translate:{zh:"\u9f20\u6807\u60ac\u505c\u7ffb\u8bd1",en:"Mouseover Translation",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u7ffb\u8b6f",ja:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u7ffb\u8a33",ko:"\ub9c8\uc6b0\uc2a4\uc624\ubc84 \ubc88\uc5ed",tr:"Fareyle \xdczerine Gelme \xc7evirisi"},use_mousehover_translation:{zh:"\u542f\u7528\u9f20\u6807\u60ac\u505c\u7ffb\u8bd1",en:"Enable mouseover translation",zh_TW:"\u555f\u7528\u6ed1\u9f20\u61f8\u505c\u7ffb\u8b6f",ja:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ub9c8\uc6b0\uc2a4\uc624\ubc84 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Fareyle \xdczerine Gelindi\u011finde \xc7eviriyi Etkinle\u015ftir"},selected_translation_alert:{zh:"\u5212\u8bcd\u7ffb\u8bd1\u7684\u5f00\u542f\u548c\u5173\u95ed\u8bf7\u5230\u201c\u89c4\u5219\u8bbe\u7f6e\u201d\u91cc\u9762\u8bbe\u7f6e\u3002",en:'To turn selected translation on or off, please go to "Rule Settings".',zh_TW:"\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f\u7684\u958b\u555f\u548c\u95dc\u9589\u8acb\u5230\u300c\u898f\u5247\u8a2d\u5b9a\u300d\u88e1\u9762\u8a2d\u5b9a\u3002",ja:"\u9078\u629e\u7ffb\u8a33\u306e\u30aa\u30f3/\u30aa\u30d5\u306f\u300c\u30eb\u30fc\u30eb\u8a2d\u5b9a\u300d\u3067\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:'\uc120\ud0dd \ubc88\uc5ed \ud65c\uc131\ud654/\ube44\ud65c\uc131\ud654\ub294 "\uaddc\uce59 \uc124\uc815"\uc5d0\uc11c \ud558\uc2ed\uc2dc\uc624.',tr:'Se\xe7ilen \xe7eviri \xf6zelli\u011fini a\xe7mak veya kapatmak i\xe7in l\xfctfen "Kural Ayarlar\u0131"na gidin.'},mousehover_key_help:{zh:"\u5f53\u5feb\u6377\u952e\u7f6e\u7a7a\u65f6\u8868\u793a\u9f20\u6807\u61f8\u505c\u76f4\u63a5\u7ffb\u8bd1",en:"When the shortcut key is empty, it means that the mouse hovers to translate directly",zh_TW:"\u5feb\u901f\u9375\u7559\u7a7a\u6642\u8868\u793a\u6ed1\u9f20\u61f8\u505c\u5373\u76f4\u63a5\u7ffb\u8b6f",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc\u304c\u7a7a\u306e\u5834\u5408\u3001\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u3067\u76f4\u63a5\u7ffb\u8a33\u3057\u307e\u3059",ko:"\ub2e8\ucd95\ud0a4\uac00 \ube44\uc5b4 \uc788\uc73c\uba74 \ub9c8\uc6b0\uc2a4\uc624\ubc84 \uc2dc \ubc14\ub85c \ubc88\uc5ed\ud569\ub2c8\ub2e4",tr:"K\u0131sayol tu\u015fu bo\u015f oldu\u011funda, fare imlecinin \xfczerine gelerek do\u011frudan \xe7eviri yapaca\u011f\u0131 anlam\u0131na gelir"},mousehover_display_mode:{zh:"\u5c55\u793a\u6a21\u5f0f",en:"Display mode",zh_TW:"\u986f\u793a\u6a21\u5f0f",ja:"\u8868\u793a\u30e2\u30fc\u30c9",ko:"\ud45c\uc2dc \ubaa8\ub4dc",tr:"Ekran Modu"},mousehover_display_bilingual:{zh:"\u53cc\u8bed\u6a21\u5f0f",en:"Bilingual mode",zh_TW:"\u96d9\u8a9e\u6a21\u5f0f",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u30e2\u30fc\u30c9",ko:"\uc774\uc911 \uc5b8\uc5b4 \ubaa8\ub4dc",tr:"\u0130ki Dilli Mod"},mousehover_display_bubble:{zh:"\u6c14\u6ce1\u6a21\u5f0f",en:"Bubble mode",zh_TW:"\u6c23\u6ce1\u6a21\u5f0f",ja:"\u30d0\u30d6\u30eb\u30e2\u30fc\u30c9",ko:"\ub9d0\ud48d\uc120 \ubaa8\ub4dc",tr:"Kabarc\u0131k Modu"},mousehover_bubble_style:{zh:"\u6c14\u6ce1\u6837\u5f0f CSS",en:"Bubble style CSS",zh_TW:"\u6c23\u6ce1\u6a23\u5f0f CSS",ja:"\u30d0\u30d6\u30eb\u30b9\u30bf\u30a4\u30eb CSS",ko:"\ub9d0\ud48d\uc120 \uc2a4\ud0c0\uc77c CSS",tr:"Kabarc\u0131k Stili Css"},mousehover_bubble_style_helper:{zh:"\u7528\u4e8e\u81ea\u5b9a\u4e49\u6c14\u6ce1\u5bb9\u5668\u6837\u5f0f\uff1b\u5b9a\u4f4d\u548c\u89c6\u53e3\u9632\u6ea2\u51fa\u7531\u7a0b\u5e8f\u81ea\u52a8\u5904\u7406\u3002",en:"Customize the bubble container style. Positioning and viewport overflow are handled automatically.",zh_TW:"\u7528\u65bc\u81ea\u8a02\u6c23\u6ce1\u5bb9\u5668\u6a23\u5f0f\uff1b\u5b9a\u4f4d\u8207\u8996\u7a97\u9632\u6ea2\u51fa\u7531\u7a0b\u5f0f\u81ea\u52d5\u8655\u7406\u3002",ja:"\u30d0\u30d6\u30eb\u30b3\u30f3\u30c6\u30ca\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u307e\u3059\u3002\u4f4d\u7f6e\u3068\u753b\u9762\u5916\u306b\u306f\u307f\u51fa\u3059\u51e6\u7406\u306f\u81ea\u52d5\u3067\u884c\u308f\u308c\u307e\u3059\u3002",ko:"\ub9d0\ud48d\uc120 \ucee8\ud14c\uc774\ub108 \uc2a4\ud0c0\uc77c\uc744 \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc704\uce58\uc640 \ud654\uba74 \ub118\uce68 \ubc29\uc9c0\ub294 \uc790\ub3d9\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4.",tr:"Kabarc\u0131k kab\u0131 stilini \xf6zelle\u015ftirin. Konumland\u0131rma ve g\xf6r\xfcnt\xfc alan\u0131 ta\u015fmas\u0131 otomatik olarak ger\xe7ekle\u015ftirilir."},autoscan_alt:{zh:"\u81ea\u52a8\u626b\u63cf",en:"Auto Scan",zh_TW:"\u81ea\u52d5\u6383\u63cf",ja:"\u81ea\u52d5\u30b9\u30ad\u30e3\u30f3",ko:"\uc790\ub3d9 \uc2a4\uce94",tr:"Otomatik Tara"},scan_all_nodes:{zh:"\u626b\u63cf\u5168\u90e8\u8282\u70b9",en:"Scan All Nodes",zh_TW:"\u6383\u63cf\u5168\u90e8\u7bc0\u9ede",ja:"\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u30b9\u30ad\u30e3\u30f3",ko:"\ubaa8\ub4e0 \ub178\ub4dc \uc2a4\uce94",tr:"T\xfcm D\xfc\u011f\xfcmleri Tara"},shadowroot_alt:{zh:"ShadowRoot",en:"ShadowRoot",zh_TW:"ShadowRoot",ja:"ShadowRoot",ko:"ShadowRoot",tr:"ShadowRoot"},richtext_alt:{zh:"\u4fdd\u7559\u5bcc\u6587\u672c",en:"Rich Text",zh_TW:"\u4fdd\u7559\u5bcc\u6587\u5b57",ja:"\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8",ko:"\ub9ac\uce58 \ud14d\uc2a4\ud2b8",tr:"Zengin Metin"},transonly_alt:{zh:"\u9690\u85cf\u539f\u6587",en:"Hide Original",zh_TW:"\u96b1\u85cf\u539f\u6587",ja:"\u539f\u6587\u3092\u96a0\u3059",ko:"\uc6d0\ubb38 \uc228\uae30\uae30",tr:"Orijinali Gizle"},confirm_title:{zh:"\u786e\u8ba4",en:"Confirm",zh_TW:"\u78ba\u8a8d",ja:"\u78ba\u8a8d",ko:"\ud655\uc778",tr:"Onayla"},confirm_message:{zh:"\u786e\u5b9a\u64cd\u4f5c\u5417\uff1f",en:"Are you sure you want to proceed?",zh_TW:"\u78ba\u5b9a\u64cd\u4f5c\u55ce\uff1f",ja:"\u64cd\u4f5c\u3092\u7d9a\u884c\u3057\u307e\u3059\u304b\uff1f",ko:"\uacc4\uc18d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",tr:"Devam Etmek \u0130stedi\u011finizden Emin Misiniz?"},confirm_action:{zh:"\u786e\u5b9a",en:"Confirm",zh_TW:"\u78ba\u5b9a",ja:"\u78ba\u8a8d",ko:"\ud655\uc778",tr:"Onayla"},cancel_action:{zh:"\u53d6\u6d88",en:"Cancel",zh_TW:"\u53d6\u6d88",ja:"\u30ad\u30e3\u30f3\u30bb\u30eb",ko:"\ucde8\uc18c",tr:"\u0130ptal Et"},pls_press_shortcut:{zh:"\u8bf7\u6309\u4e0b\u5feb\u6377\u952e\u7ec4\u5408",en:"Please press the shortcut key combination",zh_TW:"\u8acb\u6309\u4e0b\u5feb\u901f\u9375\u7d44\u5408",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044",ko:"\ub2e8\ucd95\ud0a4 \uc870\ud569\uc744 \ub204\ub974\uc138\uc694",tr:"L\xfctfen K\u0131sayol Tu\u015f Kombinasyonuna Bas\u0131n"},load_setting_err:{zh:"\u6570\u636e\u52a0\u8f7d\u51fa\u9519\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u6216\u5378\u8f7d\u540e\u91cd\u65b0\u5b89\u88c5\u3002",en:"Data loading error, please refresh the page or uninstall and reinstall.",zh_TW:"\u8cc7\u6599\u8f09\u5165\u767c\u751f\u932f\u8aa4\uff0c\u8acb\u91cd\u65b0\u6574\u7406\u9801\u9762\u6216\u89e3\u9664\u5b89\u88dd\u5f8c\u91cd\u65b0\u5b89\u88dd\u3002",ja:"\u30c7\u30fc\u30bf\u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\u3002\u30da\u30fc\u30b8\u3092\u66f4\u65b0\u3059\u308b\u304b\u3001\u30a2\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u306b\u518d\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ub370\uc774\ud130 \ub85c\ub529 \uc624\ub958. \ud398\uc774\uc9c0\ub97c \uc0c8\ub85c \uace0\uce58\uac70\ub098 \uc81c\uac70 \ud6c4 \ub2e4\uc2dc \uc124\uce58\ud558\uc138\uc694.",tr:"Veri y\xfckleme hatas\u0131, l\xfctfen sayfay\u0131 yenileyin veya uygulamay\u0131 kald\u0131r\u0131p yeniden y\xfckleyin"},translation_style:{zh:"\u7ffb\u8bd1\u98ce\u683c",en:"Translation style",zh_TW:"\u7ffb\u8b6f\u98a8\u683c",ja:"\u7ffb\u8a33\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed \uc2a4\ud0c0\uc77c",tr:"\xc7eviri Stili"},placeholder:{zh:"\u5360\u4f4d\u7b26",en:"Placeholder",zh_TW:"\u4f54\u4f4d\u7b26",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354",tr:"Yer Tutucu"},tag_name:{zh:"\u5360\u4f4d\u6807\u7b7e\u540d",en:"Placeholder tag name",zh_TW:"\u4f54\u4f4d\u6a19\u540d",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u30bf\u30b0\u540d",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354 \ud0dc\uadf8 \uc774\ub984",tr:"Yer Tutucu Etiket Ad\u0131"},system_prompt_helper_1:{zh:"1. \u6839\u636e\u5b9e\u9645\u60c5\u51b5\u9009\u62e9AI\u652f\u6301\u7684\u805a\u5408\u683c\u5f0f\uff1a",en:"1. Select the aggregation format supported by the AI according to your needs:",zh_TW:"1. \u8acb\u4f9d\u5be6\u969b\u60c5\u6cc1\u9078\u64c7 AI \u652f\u63f4\u7684\u5f59\u6574\u683c\u5f0f\uff1a",ja:"1. \u5b9f\u969b\u306e\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u3001AI \u304c\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u96c6\u7d04\u5f62\u5f0f\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\uff1a",ko:"1. \uc0c1\ud669\uc5d0 \ub9de\uac8c AI\uc5d0\uc11c \uc9c0\uc6d0\ud558\ub294 \uc9d1\uacc4 \ud615\uc2dd\uc744 \uc120\ud0dd\ud558\uc138\uc694:",tr:"1. \u0130htiya\xe7lar\u0131n\u0131za G\xf6re AI Taraf\u0131ndan Desteklenen Toplama Format\u0131n\u0131 Se\xe7in:"},json_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201cJSON \u683c\u5f0f\u201c",en:'Click to switch to "JSON Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300cJSON \u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300cJSON \u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "JSON \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"JSON Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},xml_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201cXML \u683c\u5f0f\u201c",en:'Click to switch to "XML Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300cXML \u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300cXML \u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "XML \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"XML Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},textlines_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201c\u591a\u884c\u6587\u672c\u683c\u5f0f\u201c",en:'Click to switch to "Multi-line Text Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300c\u591a\u884c\u6587\u5b57\u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300c\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "\uc5ec\ub7ec \uc904 \ud14d\uc2a4\ud2b8 \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"\xc7ok Sat\u0131rl\u0131 Metin Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},system_prompt_helper_2:{zh:"2. \u5728\u672a\u5b8c\u5168\u7406\u89e3\u9ed8\u8ba4Prompt\u7684\u60c5\u51b5\u4e0b\uff0c\u8bf7\u52ff\u968f\u610f\u4fee\u6539\uff0c\u5426\u5219\u53ef\u80fd\u65e0\u6cd5\u5de5\u4f5c\u3002",en:"2. Do not modify the default prompt without fully understanding it, otherwise it may not work.",zh_TW:"2. \u5728\u672a\u5b8c\u5168\u7406\u89e3\u9810\u8a2dPrompt\u7684\u60c5\u6cc1\u4e0b\uff0c\u8acb\u52ff\u96a8\u610f\u4fee\u6539\uff0c\u5426\u5247\u53ef\u80fd\u7121\u6cd5\u904b\u4f5c\u3002",ja:"2. \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u5b8c\u5168\u306b\u7406\u89e3\u305b\u305a\u306b\u5909\u66f4\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u52d5\u4f5c\u3057\u306a\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002",ko:"2. \uae30\ubcf8 \ud504\ub86c\ud504\ud2b8\ub97c \uc644\uc804\ud788 \uc774\ud574\ud558\uc9c0 \uc54a\uace0 \uc218\uc815\ud558\uc9c0 \ub9c8\uc2ed\uc2dc\uc624. \uc791\ub3d9\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"2. Varsay\u0131lan komut istemini tam olarak anlamadan de\u011fi\u015ftirmeyin, aksi takdirde \xe7al\u0131\u015fmayabilir"},if_pre_init:{zh:"\u662f\u5426\u9884\u521d\u59cb\u5316",en:"Whether to pre-initialize",zh_TW:"\u662f\u5426\u9810\u521d\u59cb\u5316",ja:"\u4e8b\u524d\u521d\u671f\u5316\u3059\u308b\u304b",ko:"\uc0ac\uc804 \ucd08\uae30\ud654 \uc5ec\ubd80",tr:"\xd6nceden Ba\u015flat\u0131l\u0131p Ba\u015flat\u0131lmayaca\u011f\u0131"},export_old:{zh:"\u5bfc\u51fa\u65e7\u7248",en:"Export old version",zh_TW:"\u532f\u51fa\u820a\u7248",ja:"\u65e7\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\uc774\uc804 \ubc84\uc804 \ub0b4\ubcf4\ub0b4\uae30",tr:"Eski S\xfcr\xfcm\xfc D\u0131\u015fa Aktar"},favorite_words_helper:{zh:"\u5bfc\u5165\u8bcd\u6c47\u8bf7\u4f7f\u7528txt\u6587\u4ef6\uff0c\u6bcf\u4e00\u884c\u4e00\u4e2a\u5355\u8bcd\u3002",en:"To import vocabulary, please use a txt file with one word per line.",zh_TW:"\u532f\u5165\u8a5e\u5f59\u8acb\u4f7f\u7528 txt \u6a94\u6848\uff0c\u6bcf\u4e00\u884c\u4e00\u500b\u55ae\u5b57\u3002",ja:"\u5358\u8a9e\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u306b\u306f\u30011\u884c\u306b1\u5358\u8a9e\u305a\u3064\u8a18\u8ff0\u3057\u305ftxt\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ub2e8\uc5b4\ub97c \uac00\uc838\uc624\ub824\uba74 \ud55c \uc904\uc5d0 \ud55c \ub2e8\uc5b4\uc529 .txt \ud30c\uc77c\uc744 \uc0ac\uc6a9\ud558\uc138\uc694.",tr:"S\xf6zl\xfck eklemek i\xe7in l\xfctfen her sat\u0131rda bir kelime bulunan bir txt dosyas\u0131 kullan\u0131n"},btn_tip_click_away:{zh:"\u5931\u7126\u9690\u85cf/\u663e\u793a",en:"Loss of focus hide/show",zh_TW:"\u5931\u7126\u96b1\u85cf/\u986f\u793a",ja:"\u30d5\u30a9\u30fc\u30ab\u30b9\u3092\u5931\u3063\u305f\u6642\u306b\u975e\u8868\u793a/\u8868\u793a",ko:"\ud3ec\ucee4\uc2a4 \uc783\uc744 \uc2dc \uc228\uae30\uae30/\ud45c\uc2dc",tr:"Odak Kayb\u0131nda Gizle/G\xf6ster"},btn_tip_follow_selection:{zh:"\u8ddf\u968f/\u56fa\u5b9a\u6a21\u5f0f",en:"Follow/Fixed Mode",zh_TW:"\u8ddf\u96a8/\u56fa\u5b9a\u6a21\u5f0f",ja:"\u8ffd\u5f93/\u56fa\u5b9a\u30e2\u30fc\u30c9",ko:"\ub530\ub77c\uac00\uae30/\uace0\uc815 \ubaa8\ub4dc",tr:"Takip/Sabit Mod"},btn_tip_simple_style:{zh:"\u8ff7\u4f60/\u5e38\u89c4\u6a21\u5f0f",en:"Mini/Regular Mode",zh_TW:"\u8ff7\u4f60/\u5e38\u898f\u6a21\u5f0f",ja:"\u30df\u30cb/\u901a\u5e38\u30e2\u30fc\u30c9",ko:"\ubbf8\ub2c8/\uc77c\ubc18 \ubaa8\ub4dc",tr:"Mini/Normal Mod"},btn_tip_dark_mode:{zh:"\u4eae\u8272/\u6697\u8272/\u8ddf\u968f\u7cfb\u7edf",en:"Light/Dark/Auto",zh_TW:"\u4eae\u8272/\u6697\u8272/\u8ddf\u96a8\u7cfb\u7d71",ja:"\u30e9\u30a4\u30c8/\u30c0\u30fc\u30af/\u81ea\u52d5",ko:"\ub77c\uc774\ud2b8/\ub2e4\ud06c/\uc790\ub3d9",tr:"A\xe7\u0131k/Koyu/Otomatik"},api_placeholder:{zh:"\u5360\u4f4d\u7b26",en:"Placeholder",zh_TW:"\u4f54\u4f4d\u7b26",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354",tr:"Yer Tutucu"},api_placetag:{zh:"\u5360\u4f4d\u6807\u7b7e",en:"Placeholder tags",zh_TW:"\u4f54\u4f4d\u6a19",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30bf\u30b0",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354 \ud0dc\uadf8",tr:"Yer Tutucu Etiketleri"},placetag_format:{zh:"\u5360\u4f4d\u7b26\u683c\u5f0f",en:"Placeholder Format",zh_TW:"\u4f54\u4f4d\u7b26\u683c\u5f0f",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u5f62\u5f0f",ko:"\uc790\ub9ac \ud45c\uc2dc\uc790 \ud615\uc2dd",tr:"Yer Tutucu Format\u0131"},format_compact:{zh:"\u7b80\u6d01\u683c\u5f0f ",en:"Compact Format ",zh_TW:"\u7c21\u6f54\u683c\u5f0f ",ja:"\u7c21\u6f54\u5f62\u5f0f ",ko:"\uac04\uacb0 \ud615\uc2dd ",tr:"Kompakt Format "},format_attribute:{zh:"\u5c5e\u6027\u683c\u5f0f ",en:"Attribute Format ",zh_TW:"\u5c6c\u6027\u683c\u5f0f ",ja:"\u5c5e\u6027\u5f62\u5f0f ",ko:"\uc18d\uc131 \ud615\uc2dd ",tr:"\xd6znitelik Format\u0131 "},detected_lang:{zh:"\u8bed\u8a00\u68c0\u6d4b",en:"Language detection",zh_TW:"\u8a9e\u8a00\u5075\u6e2c",ja:"\u8a00\u8a9e\u691c\u51fa",ko:"\uc5b8\uc5b4 \uac10\uc9c0",tr:"Dil Alg\u0131lama"},detected_result:{zh:"\u68c0\u6d4b\u7ed3\u679c",en:"Detect result",zh_TW:"\u5075\u6e2c\u7d50\u679c",ja:"\u691c\u51fa\u7d50\u679c",ko:"\uac10\uc9c0 \uacb0\uacfc",tr:"Sonu\xe7 Tespiti"},subtitle_translate:{zh:"\u5b57\u5e55\u7ffb\u8bd1",en:"Subtitle Translation",zh_TW:"\u5b57\u5e55\u7ffb\u8b6f",ja:"\u5b57\u5e55\u7ffb\u8a33",ko:"\uc790\ub9c9 \ubc88\uc5ed",tr:"Altyaz\u0131 \xc7evirisi"},bilingual_subtitles:{zh:"\u53cc\u8bed\u5b57\u5e55",en:"Bilingual subtitles",zh_TW:"\u96d9\u8a9e\u5b57\u5e55",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9",tr:"\u0130ki Dilli Altyaz\u0131lar"},vocabulary_book:{zh:"\u751f\u8bcd\u672c",en:"Vocabulary",zh_TW:"\u751f\u8a5e\u672c",ja:"\u5358\u8a9e\u5e33",ko:"\ub2e8\uc5b4\uc7a5",tr:"Kelime Bilgisi"},download_subtitles_vtt:{zh:"\u4e0b\u8f7d\u5b57\u5e55 (VTT)",en:"Download subtitles (VTT)",zh_TW:"\u4e0b\u8f09\u5b57\u5e55 (VTT)",ja:"\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (VTT)",ko:"\uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc (VTT)",tr:"Altyaz\u0131lar\u0131 \u0130ndir (VTT)"},download_raw_subtitle_events_json:{zh:"\u4e0b\u8f7d\u6e90\u6570\u636e (JSON)",en:"Download source data (JSON)",zh_TW:"\u4e0b\u8f09\u4f86\u6e90\u8cc7\u6599 (JSON)",ja:"\u30bd\u30fc\u30b9\u30c7\u30fc\u30bf\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (JSON)",ko:"\uc6d0\ubcf8 \ub370\uc774\ud130 \ub2e4\uc6b4\ub85c\ub4dc (JSON)",tr:"Kaynak Verilerini \u0130ndirin (JSON)"},download_translation_subtitles_vtt:{zh:"\u4e0b\u8f7d\u8bd1\u6587\u5b57\u5e55 (VTT)",en:"Download translation subtitles (VTT)",zh_TW:"\u4e0b\u8f09\u8b6f\u6587\u5b57\u5e55 (VTT)",ja:"\u7ffb\u8a33\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (VTT)",ko:"\ubc88\uc5ed \uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc (VTT)",tr:"\xc7eviri Altyaz\u0131lar\u0131n\u0131 \u0130ndir (VTT)"},toggle_subtitle_translate:{zh:"\u542f\u7528\u5b57\u5e55\u7ffb\u8bd1",en:"Enable subtitle translation",zh_TW:"\u555f\u7528\u5b57\u5e55\u7ffb\u8b6f",ja:"\u5b57\u5e55\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc790\ub9c9 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Altyaz\u0131 \xc7evirisini Etkinle\u015ftir"},default_subtitle_translate:{zh:"\u9ed8\u8ba4\u7acb\u5373\u7ffb\u8bd1",en:"Translate subtitles immediately by default",zh_TW:"\u9810\u8a2d\u7acb\u5373\u7ffb\u8b6f",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3059\u3050\u306b\u5b57\u5e55\u3092\u7ffb\u8a33",ko:"\uae30\ubcf8\uc801\uc73c\ub85c \uc790\ub9c9 \uc989\uc2dc \ubc88\uc5ed",tr:"Altyaz\u0131lar\u0131 varsay\u0131lan olarak hemen \xe7evir"},enable_subtitle_translate:{zh:"\u5f00\u542f\u7ffb\u8bd1",en:"Enable translation",zh_TW:"\u958b\u555f\u7ffb\u8b6f",ja:"\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ubc88\uc5ed \ud65c\uc131\ud654",tr:"\xc7eviriyi etkinle\u015ftir"},is_bilingual_view:{zh:"\u53cc\u8bed\u663e\u793a",en:"Enable bilingual display",zh_TW:"\u96d9\u8a9e\u986f\u793a",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u8868\u793a",ko:"\uc774\uc911 \uc5b8\uc5b4 \ud45c\uc2dc",tr:"\u0130ki Dilli G\xf6r\xfcnt\xfclemeyi Etkinle\u015ftir"},is_blur_translation:{zh:"\u6a21\u7cca\u8bd1\u6587",en:"Blur Translation",zh_TW:"\u6a21\u7cca\u8b6f\u6587",ja:"\u7ffb\u8a33\u3092\u307c\u304b\u3059",ko:"\ubc88\uc5ed \ud750\ub9bc",tr:"Bulan\u0131kl\u0131k \xc7evirisi"},is_skip_ad:{zh:"\u5feb\u8fdb\u5e7f\u544a",en:"Skip AD",zh_TW:"\u5feb\u8f49\u5ee3\u544a",ja:"\u5e83\u544a\u3092\u30b9\u30ad\u30c3\u30d7",ko:"\uad11\uace0 \uac74\ub108\ub6f0\uae30",tr:"Reklam\u0131 Atla"},download_subtitles:{zh:"\u4e0b\u8f7d\u5b57\u5e55",en:"Download subtitles",zh_TW:"\u4e0b\u8f09\u5b57\u5e55",ja:"\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9",ko:"\uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc",tr:"Altyaz\u0131lar\u0131 \u0130ndir"},background_styles:{zh:"\u80cc\u666f\u6837\u5f0f",en:"Background Style",zh_TW:"\u80cc\u666f\u6a23\u5f0f",ja:"\u80cc\u666f\u30b9\u30bf\u30a4\u30eb",ko:"\ubc30\uacbd \uc2a4\ud0c0\uc77c",tr:"Arka Plan Stili"},origin_styles:{zh:"\u539f\u6587\u6837\u5f0f",en:"Original style",zh_TW:"\u539f\u6587\u6a23\u5f0f",ja:"\u539f\u6587\u30b9\u30bf\u30a4\u30eb",ko:"\uc6d0\ubb38 \uc2a4\ud0c0\uc77c",tr:"Orijinal Stil"},translation_styles:{zh:"\u8bd1\u6587\u6837\u5f0f",en:"Translation style",zh_TW:"\u8b6f\u6587\u6a23\u5f0f",ja:"\u7ffb\u8a33\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed\ubb38 \uc2a4\ud0c0\uc77c",tr:"\xc7eviri Stili"},ai_segmentation:{zh:"AI\u667a\u80fd\u65ad\u53e5",en:"AI intelligent punctuation",zh_TW:"AI\u667a\u6167\u65b7\u53e5",ja:"AI\u306b\u3088\u308b\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u306a\u6587\u5206\u5272",ko:"AI \uc9c0\ub2a5\ud615 \ubb38\uc7a5 \ubd84\ub9ac",tr:"AI Ak\u0131ll\u0131 Noktalama \u0130\u015faretleri"},builtin_sentence_break:{zh:"\u5185\u7f6e\u65ad\u53e5",en:"Built-in Sentence Break",zh_TW:"\u5167\u7f6e\u65b7\u53e5",ja:"\u5185\u8535\u6587\u5206\u5272",ko:"\ub0b4\uc7a5 \ubb38\uc7a5 \ubd84\ub9ac",tr:"Yerle\u015fik C\xfcmle Aras\u0131"},rule_sentence_break:{zh:"\u89c4\u5219\u65ad\u53e5",en:"Rule-based Break",zh_TW:"\u898f\u5247\u65b7\u53e5",ja:"\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u5206\u5272",ko:"\uaddc\uce59 \uae30\ubc18 \ubd84\ub9ac",tr:"Kural Tabanl\u0131 Mola"},statistical_sentence_break:{zh:"\u7edf\u8ba1\u65ad\u53e5",en:"Statistical Break",zh_TW:"\u7d71\u8a08\u65b7\u53e5",ja:"\u7d71\u8a08\u7684\u5206\u5272",ko:"\ud1b5\uacc4 \uae30\ubc18 \ubd84\ub9ac",tr:"\u0130statistiksel K\u0131r\u0131l\u0131m"},force_subtitle_retranslate:{zh:"\u5f3a\u5236\u91cd\u7ffb",en:"Force re-translate",zh_TW:"\u5f37\u5236\u91cd\u7ffb",ja:"\u5f37\u5236\u518d\u7ffb\u8a33",ko:"\uac15\uc81c \uc7ac\ubc88\uc5ed",tr:"Yeniden \xc7evirmeye Zorla"},ai_enhanced_context:{zh:"\u589e\u5f3a\u667a\u80fd\u4e0a\u4e0b\u6587",en:"Enhanced Intelligent Context",zh_TW:"\u589e\u5f37\u667a\u6167\u4e0a\u4e0b\u6587",ja:"\u5f37\u5316\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8",ko:"\uac15\ud654 \uc9c0\ub2a5\ud615 \ucee8\ud14d\uc2a4\ud2b8",tr:"Geli\u015fmi\u015f Ak\u0131ll\u0131 \u0130\xe7erik"},ai_context_analyzing:{zh:"AI\u6b63\u5728\u5206\u6790\u89c6\u9891\u5185\u5bb9...",en:"AI is analyzing video content...",zh_TW:"AI\u6b63\u5728\u5206\u6790\u5f71\u7247\u5167\u5bb9...",ja:"AI\u304c\u52d5\u753b\u5185\u5bb9\u3092\u5206\u6790\u4e2d...",ko:"AI\uac00 \ube44\ub514\uc624 \ucf58\ud150\uce20\ub97c \ubd84\uc11d \uc911...",tr:"AI video i\xe7eri\u011fini analiz ediyor..."},ai_chunk_length:{zh:"AI\u5904\u7406\u5207\u5272\u957f\u5ea6(200-20000)",en:"AI processing chunk length(200-20000)",zh_TW:"AI \u8655\u7406\u5207\u5272\u9577\u5ea6(200-20000)",ja:"AI\u51e6\u7406\u306e\u30c1\u30e3\u30f3\u30af\u9577(200-20000)",ko:"AI \ucc98\ub9ac \uccad\ud06c \uae38\uc774(200-20000)",tr:"AI \u0130\u015fleme Par\xe7a Uzunlu\u011fu (200-20000)"},subtitle_helper_1:{zh:"1\u3001\u76ee\u524d\u4ec5\u652f\u6301Youtube\u684c\u9762\u7f51\u7ad9\u3002",en:"1. Currently only supports Youtube desktop website.",zh_TW:"1.\u76ee\u524d\u50c5\u652f\u63f4Youtube\u684c\u9762\u7db2\u7ad9\uff0c\u4e14\u50c5\u652f\u63f4\u700f\u89bd\u5668\u64f4\u5145\u529f\u80fd\u3002",ja:"1. \u73fe\u5728\u3001Youtube\u306e\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u30b5\u30a4\u30c8\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002",ko:"1. \ud604\uc7ac Youtube \ub370\uc2a4\ud06c\ud1b1 \uc6f9\uc0ac\uc774\ud2b8\ub9cc \uc9c0\uc6d0\ud569\ub2c8\ub2e4.",tr:"1. \u015eu anda yaln\u0131zca Youtube masa\xfcst\xfc web sitesini desteklemektedir."},subtitle_helper_2:{zh:"2\u3001\u63d2\u4ef6\u5185\u7f6e\u57fa\u7840\u7684\u5b57\u5e55\u5408\u5e76\u3001\u65ad\u53e5\u7b97\u6cd5\uff0c\u53ef\u6ee1\u8db3\u5927\u90e8\u5206\u60c5\u51b5\u3002",en:"2. The plug-in has built-in basic subtitle merging and sentence segmentation algorithms, which can meet most situations.",zh_TW:"2. \u64f4\u5145\u529f\u80fd\u5167\u5efa\u57fa\u790e\u7684\u5b57\u5e55\u5408\u4f75\u3001\u65b7\u53e5\u6f14\u7b97\u6cd5\uff0c\u53ef\u6eff\u8db3\u5927\u90e8\u5206\u60c5\u6cc1\u3002",ja:"2. \u30d7\u30e9\u30b0\u30a4\u30f3\u306b\u306f\u57fa\u672c\u7684\u306a\u5b57\u5e55\u7d50\u5408\u3068\u6587\u5206\u5272\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u304a\u308a\u3001\u307b\u3068\u3093\u3069\u306e\u72b6\u6cc1\u306b\u5bfe\u5fdc\u3067\u304d\u307e\u3059\u3002",ko:"2. \ud50c\ub7ec\uadf8\uc778\uc5d0\ub294 \uae30\ubcf8\uc801\uc778 \uc790\ub9c9 \ubcd1\ud569 \ubc0f \ubb38\uc7a5 \ubd84\ub9ac \uc54c\uace0\ub9ac\uc998\uc774 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc5b4 \ub300\ubd80\ubd84\uc758 \uc0c1\ud669\uc5d0 \ub300\uc751\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"2. Eklenti, \xe7o\u011fu duruma uygun temel altyaz\u0131 birle\u015ftirme ve c\xfcmle b\xf6lme algoritmalar\u0131na sahiptir."},subtitle_helper_3:{zh:"3\u3001\u4ea6\u53ef\u4ee5\u542f\u7528AI\u667a\u80fd\u65ad\u53e5\uff0c\u4f46\u9700\u8003\u8651\u5207\u5272\u957f\u5ea6\u53caAI\u63a5\u53e3\u80fd\u529b\uff0c\u53ef\u80fd\u5904\u7406\u65f6\u95f4\u4f1a\u5f88\u957f\u3002\u82e5\u5904\u7406\u5931\u8d25\uff0c\u5c06\u81ea\u52a8\u964d\u7ea7\u4e3a\u5185\u7f6e\u65ad\u53e5\u5e76\u7ffb\u8bd1\u3002",en:"3. You can also enable AI intelligent segmentation, but consider the chunk length and AI interface capacity, as processing may take a long time. If it fails, it will automatically fall back to built-in sentence break and translation.",zh_TW:"3. \u4ea6\u53ef\u555f\u7528 AI \u667a\u6167\u65b7\u53e5\uff0c\u4f46\u9700\u8003\u616e\u5207\u5272\u9577\u5ea6\u53ca AI \u4ecb\u9762\u80fd\u529b\uff0c\u8655\u7406\u6642\u9593\u53ef\u80fd\u6703\u5f88\u9577\u3002\u82e5\u8655\u7406\u5931\u6557\uff0c\u5c07\u81ea\u52d5\u964d\u7d1a\u70ba\u5167\u7f6e\u65b7\u53e5\u4e26\u7ffb\u8b6f\u3002",ja:"3. AI\u306b\u3088\u308b\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u306a\u6587\u5206\u5272\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u304c\u3001\u30c1\u30e3\u30f3\u30af\u9577\u3084AI\u306e\u51e6\u7406\u80fd\u529b\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u51e6\u7406\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u51e6\u7406\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u306f\u3001\u81ea\u52d5\u7684\u306b\u5185\u8535\u6587\u5206\u5272\u3068\u7ffb\u8a33\u306b\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u3055\u308c\u307e\u3059\u3002",ko:"3. AI \uc9c0\ub2a5\ud615 \ubd84\ub9ac\ub97c \ud65c\uc131\ud654\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc, \uccad\ud06c \uae38\uc774\uc640 AI \uc778\ud130\ud398\uc774\uc2a4 \ucc98\ub9ac \ub2a5\ub825\uc744 \uace0\ub824\ud574\uc57c \ud558\uba70 \ucc98\ub9ac \uc2dc\uac04\uc774 \uae38\uc5b4\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucc98\ub9ac\uc5d0 \uc2e4\ud328\ud560 \uacbd\uc6b0 \uc790\ub3d9\uc73c\ub85c \ub0b4\uc7a5 \ubb38\uc7a5 \ubd84\ub9ac \ubc0f \ubc88\uc5ed\uc73c\ub85c \ub300\uccb4\ub429\ub2c8\ub2e4.",tr:"3. AI destekli ak\u0131ll\u0131 b\xf6l\xfcmlemeyi de etkinle\u015ftirebilirsiniz, ancak i\u015flem uzun s\xfcrebilece\u011finden, \xf6bek uzunlu\u011funu ve yapay zek\xe2 aray\xfcz\xfc kapasitesini g\xf6z \xf6n\xfcnde bulundurun. Ba\u015far\u0131s\u0131z olursa, otomatik olarak yerle\u015fik c\xfcmle b\xf6lme ve \xe7eviri \xf6zelli\u011fine geri d\xf6necektir."},show_subtitle_list:{zh:"\u663e\u793a\u5b57\u5e55\u5217\u8868",en:"Show Subtitle List",zh_TW:"\u986f\u793a\u5b57\u5e55\u6e05\u55ae",ja:"\u5b57\u5e55\u30ea\u30b9\u30c8\u3092\u8868\u793a",ko:"\uc790\ub9c9 \ubaa9\ub85d \ud45c\uc2dc",tr:"Altyaz\u0131 Listesini G\xf6ster"},subtitle_loading_notification:{zh:"\u5b57\u5e55\u52a0\u8f7d\u901a\u77e5",en:"Subtitle loading notification",zh_TW:"\u5b57\u5e55\u8f09\u5165\u901a\u77e5",ja:"\u5b57\u5e55\u8aad\u307f\u8fbc\u307f\u901a\u77e5",ko:"\uc790\ub9c9 \ub85c\ub529 \uc54c\ub9bc",tr:"Altyaz\u0131 Y\xfckleme Bildirimi"},hide_subtitle_button:{zh:"\u9690\u85cf\u529f\u80fd\u6309\u94ae",en:"Hide function button",zh_TW:"\u96b1\u85cf\u529f\u80fd\u6309\u9215",ja:"\u6a5f\u80fd\u30dc\u30bf\u30f3\u3092\u975e\u8868\u793a",ko:"\uae30\ub2a5 \ubc84\ud2bc \uc228\uae30\uae30",tr:"\u0130\u015flev D\xfc\u011fmesini Gizle"},subtitle_hover_lookup:{zh:"\u60ac\u505c\u67e5\u8bcd",en:"Hover Word Lookup",zh_TW:"\u61f8\u505c\u67e5\u8a5e",ja:"\u30db\u30d0\u30fc\u8f9e\u66f8\u691c\u7d22",ko:"\ud638\ubc84 \ub2e8\uc5b4 \uc870\ud68c",tr:"Vurgulu Kelime Arama"},default_styles_example:{zh:"\u9ed8\u8ba4\u6837\u5f0f\u53c2\u8003\uff1a",en:"Default styles reference:",zh_TW:"\u9810\u8a2d\u6a23\u5f0f\u53c3\u8003\uff1a",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30bf\u30a4\u30eb\u306e\u4f8b\uff1a",ko:"\uae30\ubcf8 \uc2a4\ud0c0\uc77c \uc608\uc2dc:",tr:"Varsay\u0131lan Stiller Referans\u0131:"},subtitle_load_succeed:{zh:"\u53cc\u8bed\u5b57\u5e55\u52a0\u8f7d\u6210\u529f\uff01",en:"Bilingual subtitles loaded successfully!",zh_TW:"\u96d9\u8a9e\u5b57\u5e55\u8f09\u5165\u6210\u529f\uff01",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55\u306e\u8aad\u307f\u8fbc\u307f\u306b\u6210\u529f\u3057\u307e\u3057\u305f\uff01",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9 \ub85c\ub529 \uc131\uacf5!",tr:"\u0130ki Dilli Altyaz\u0131lar Ba\u015far\u0131yla Y\xfcklendi"},subtitle_load_failed:{zh:"\u53cc\u8bed\u5b57\u5e55\u52a0\u8f7d\u5931\u8d25\uff01",en:"Failed to load bilingual subtitles!",zh_TW:"\u96d9\u8a9e\u5b57\u5e55\u8f09\u5165\u5931\u6557\uff01",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff01",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9 \ub85c\ub529 \uc2e4\ud328!",tr:"\u0130ki Dilli Altyaz\u0131lar Y\xfcklenemedi"},try_get_subtitle_data:{zh:"\u5c1d\u8bd5\u83b7\u53d6\u5b57\u5e55\u6570\u636e\uff0c\u8bf7\u7a0d\u5019...",en:"Trying to get subtitle data, please wait...",zh_TW:"\u5617\u8a66\u53d6\u5f97\u5b57\u5e55\u8cc7\u6599\uff0c\u8acb\u7a0d\u5019...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \uac00\uc838\uc624\ub294 \uc911\uc785\ub2c8\ub2e4. \uc7a0\uc2dc \uae30\ub2e4\ub824\uc8fc\uc138\uc694...",tr:"Altyaz\u0131 verileri al\u0131nmaya \xe7al\u0131\u015f\u0131l\u0131yor"},subtitle_data_processing:{zh:"\u5b57\u5e55\u6570\u636e\u5904\u7406\u4e2d...",en:"Subtitle data processing...",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u8655\u7406\u4e2d...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u4e2d...",ko:"\uc790\ub9c9 \ub370\uc774\ud130 \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 Verileri \u0130\u015fleniyor..."},starting_to_process_subtitle:{zh:"\u5f00\u59cb\u5904\u7406\u5b57\u5e55\u6570\u636e...",en:"Starting to process subtitle data...",zh_TW:"\u958b\u59cb\u8655\u7406\u5b57\u5e55\u8cc7\u6599...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u51e6\u7406\u3092\u958b\u59cb\u3057\u307e\u3059...",ko:"\uc790\ub9c9 \ub370\uc774\ud130 \ucc98\ub9ac\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4...",tr:"Altyaz\u0131 verileri i\u015flenmeye ba\u015fl\u0131yor..."},subtitle_data_is_ready:{zh:"\u5b57\u5e55\u6570\u636e\u5df2\u51c6\u5907\u5c31\u7eea\uff0c\u8bf7\u70b9\u51fbKT\u6309\u94ae\u52a0\u8f7d",en:"The subtitle data is ready, please click the KT button to load it",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u5df2\u6e96\u5099\u5c31\u7dd2\uff0c\u8acb\u9ede\u9078 KT \u6309\u9215\u8f09\u5165",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002KT\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u8aad\u307f\u8fbc\u3093\u3067\u304f\u3060\u3055\u3044",ko:"\uc790\ub9c9 \ub370\uc774\ud130\uac00 \uc900\ube44\ub418\uc5c8\uc2b5\ub2c8\ub2e4. KT \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub85c\ub4dc\ud558\uc138\uc694",tr:"Altyaz\u0131 verileri haz\u0131r, y\xfcklemek i\xe7in l\xfctfen KT d\xfc\u011fmesine t\u0131klay\u0131n"},starting_reprocess_events:{zh:"\u91cd\u65b0\u5904\u7406\u5b57\u5e55\u6570\u636e...",en:"Reprocess the subtitle data...",zh_TW:"\u91cd\u65b0\u8655\u7406\u5b57\u5e55\u8cc7\u6599...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u518d\u51e6\u7406\u3057\u3066\u3044\u307e\u3059...",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \ub2e4\uc2dc \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 verilerini yeniden i\u015fleyin..."},waitting_for_subtitle:{zh:"\u8bf7\u7b49\u5f85\u5b57\u5e55\u6570\u636e",en:"Please wait for the subtitle data.",zh_TW:"\u8acb\u7b49\u5f85\u5b57\u5e55\u8cc7\u6599",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u5f85\u6a5f\u4e2d",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \uae30\ub2e4\ub824\uc8fc\uc138\uc694",tr:"L\xfctfen altyaz\u0131 verilerini bekleyin."},ai_processing_pls_wait:{zh:"AI\u5904\u7406\u4e2d\uff0c\u8bf7\u7a0d\u7b49...",en:"AI processing in progress, please wait...",zh_TW:"AI \u8655\u7406\u4e2d\uff0c\u8acb\u7a0d\u5019...",ja:"AI\u51e6\u7406\u4e2d\u3067\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...",ko:"AI \ucc98\ub9ac \uc911\uc785\ub2c8\ub2e4. \uc7a0\uc2dc \uae30\ub2e4\ub824\uc8fc\uc138\uc694...",tr:"AI i\u015fleme devam ediyor"},processing_subtitles:{zh:"\u5b57\u5e55\u5904\u7406\u4e2d...",en:"Subtitle processing...",zh_TW:"\u5b57\u5e55\u8655\u7406\u4e2d...",ja:"\u5b57\u5e55\u51e6\u7406\u4e2d...",ko:"\uc790\ub9c9 \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 \u0130\u015fleniyor..."},waiting_subtitles:{zh:"\u7b49\u5f85\u5b57\u5e55\u4e2d",en:"Waiting for subtitles",zh_TW:"\u7b49\u5f85\u5b57\u5e55\u4e2d",ja:"\u5b57\u5e55\u5f85\u6a5f\u4e2d",ko:"\uc790\ub9c9 \ub300\uae30 \uc911",tr:"Altyaz\u0131lar\u0131 Bekliyorum"},subtitle_is_not_yet_ready:{zh:"\u5b57\u5e55\u6570\u636e\u5c1a\u672a\u51c6\u5907\u597d",en:"Subtitle is not yet ready.",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u5c1a\u672a\u6e96\u5099\u597d",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u6e96\u5099\u304c\u307e\u3060\u3067\u304d\u3066\u3044\u307e\u305b\u3093\u3002",ko:"\uc790\ub9c9 \ub370\uc774\ud130\uac00 \uc544\uc9c1 \uc900\ube44\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.",tr:"Altyaz\u0131 hen\xfcz haz\u0131r de\u011fil."},log_level:{zh:"\u65e5\u5fd7\u7ea7\u522b",en:"Log Level",zh_TW:"\u65e5\u8a8c\u7b49\u7d1a",ja:"\u30ed\u30b0\u30ec\u30d9\u30eb",ko:"\ub85c\uadf8 \ub808\ubca8",tr:"G\xfcnl\xfck D\xfczeyi"},goto_custom_api_example:{zh:"\u70b9\u51fb\u67e5\u770b\u3010\u81ea\u5b9a\u4e49\u63a5\u53e3\u793a\u4f8b\u3011",en:"Click to view [Custom Interface Example]",zh_TW:"\u9ede\u9078\u6aa2\u8996\u3010\u81ea\u8a02\u4ecb\u9762\u7bc4\u4f8b\u3011",ja:"\u3010\u30ab\u30b9\u30bf\u30e0\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u4f8b\u3011\u3092\u898b\u308b",ko:"[\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc778\ud130\ud398\uc774\uc2a4 \uc608\uc2dc] \ubcf4\uae30",tr:"[\xd6zel Aray\xfcz \xd6rne\u011fi]'ni G\xf6r\xfcnt\xfclemek \u0130\xe7in T\u0131klay\u0131n"},split_paragraph:{zh:"\u5207\u5206\u957f\u6bb5\u843d",en:"Split long paragraph",zh_TW:"\u5207\u5206\u9577\u6bb5\u843d",ja:"\u9577\u3044\u6bb5\u843d\u3092\u5206\u5272",ko:"\uae34 \ub2e8\ub77d \ub098\ub204\uae30",tr:"Uzun Paragraf\u0131 B\xf6l"},split_length:{zh:"\u5207\u5206\u957f\u5ea6 (0-10000)",en:"Segmentation length(0-10000)",zh_TW:"\u5207\u5206\u9577\u5ea6(0-10000)",ja:"\u5206\u5272\u9577(0-10000)",ko:"\ubd84\ud560 \uae38\uc774(0-10000)",tr:"Segmentasyon Uzunlu\u011fu (0-10000)"},highlight_words:{zh:"\u9ad8\u4eae\u6536\u85cf\u8bcd\u6c47",en:"Highlight favorite words",zh_TW:"\u9192\u76ee\u6a19\u793a\u6536\u85cf\u8a5e\u5f59",ja:"\u304a\u6c17\u306b\u5165\u308a\u5358\u8a9e\u3092\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\uc990\uaca8\ucc3e\ub294 \ub2e8\uc5b4 \ud558\uc774\ub77c\uc774\ud2b8",tr:"Favori Kelimeleri Vurgulay\u0131n"},split_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},split_textlength:{zh:"\u6309\u7167\u957f\u5ea6\u5207\u5206",en:"Split by length",zh_TW:"\u4f9d\u9577\u5ea6\u5207\u5206",ja:"\u9577\u3055\u3067\u5206\u5272",ko:"\uae38\uc774\ub85c \ub098\ub204\uae30",tr:"Uzunlu\u011fa G\xf6re B\xf6l\xfcnm\xfc\u015f"},split_punctuation:{zh:"\u6309\u7167\u53e5\u5b50\u5207\u5206",en:"Split by sentence",zh_TW:"\u6309\u7167\u53e5\u5b50\u5207\u5206",ja:"\u6587\u3067\u5206\u5272",ko:"\ubb38\uc7a5\uc73c\ub85c \ub098\ub204\uae30",tr:"C\xfcmleye G\xf6re B\xf6l\xfcnm\xfc\u015f"},highlight_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},highlight_beforetrans:{zh:"\u7ffb\u8bd1\u524d\u9ad8\u4eae",en:"Highlight before translation",zh_TW:"\u7ffb\u8b6f\u524d\u9192\u76ee\u6a19\u793a",ja:"\u7ffb\u8a33\u524d\u306b\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\ubc88\uc5ed \uc804 \ud558\uc774\ub77c\uc774\ud2b8",tr:"\xc7eviriden \xd6nce Vurgula"},highlight_aftertrans:{zh:"\u7ffb\u8bd1\u540e\u9ad8\u4eae",en:"Highlight after translation",zh_TW:"\u7ffb\u8b6f\u5f8c\u9192\u76ee\u6a19\u793a",ja:"\u7ffb\u8a33\u5f8c\u306b\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\ubc88\uc5ed \ud6c4 \ud558\uc774\ub77c\uc774\ud2b8",tr:"\xc7eviriden Sonra Vurgula"},pagescroll_root_margin:{zh:"\u6eda\u52a8\u52a0\u8f7d\u63d0\u524d\u89e6\u53d1 (0-10000px)",en:"Early triggering of scroll loading (0-10000px)",zh_TW:"\u6efe\u52d5\u8f09\u5165\u63d0\u524d\u89f8\u767c (0-10000px)",ja:"\u30b9\u30af\u30ed\u30fc\u30eb\u8aad\u307f\u8fbc\u307f\u306e\u4e8b\u524d\u30c8\u30ea\u30ac\u30fc (0-10000px)",ko:"\uc2a4\ud06c\ub864 \ub85c\ub529 \ubbf8\ub9ac \ud2b8\ub9ac\uac70 (0-10000px)",tr:"Kayd\u0131rma Y\xfcklemesinin Erken Tetiklenmesi (0-10000 Piksel)"},styles_setting:{zh:"\u6837\u5f0f\u8bbe\u7f6e",en:"Style Setting",zh_TW:"\u6a23\u5f0f\u8a2d\u5b9a",ja:"\u30b9\u30bf\u30a4\u30eb\u8a2d\u5b9a",ko:"\uc2a4\ud0c0\uc77c \uc124\uc815",tr:"Stil Ayar\u0131"},style_name:{zh:"\u6837\u5f0f\u540d\u79f0",en:"Style Name",zh_TW:"\u6a23\u5f0f\u540d\u7a31",ja:"\u30b9\u30bf\u30a4\u30eb\u540d",ko:"\uc2a4\ud0c0\uc77c \uc774\ub984",tr:"Stil Ad\u0131"},style_code:{zh:"\u6837\u5f0f\u4ee3\u7801",en:"Style Code",zh_TW:"\u6a23\u5f0f\u7a0b\u5f0f\u78bc",ja:"\u30b9\u30bf\u30a4\u30eb\u30b3\u30fc\u30c9",ko:"\uc2a4\ud0c0\uc77c \ucf54\ub4dc",tr:"Stil Kodu"},long_sentence_threshold:{zh:"\u89c4\u5219\u65ad\u53e5\u9608\u503c (20-300\u5b57\u7b26)",en:"Rule-based segmentation threshold (20-300 chars)",zh_TW:"\u898f\u5247\u65b7\u53e5\u95be\u503c (20-300 \u5b57\u5143)",ja:"\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u5206\u5272\u95be\u5024 (20-300\u6587\u5b57)",ko:"\uaddc\uce59 \uae30\ubc18 \ubd84\ud560 \uc784\uacc4\uac12 (20-300\uc790)",tr:"Kural Tabanl\u0131 Segmentasyon E\u015fi\u011fi (20-300 Karakter)"},pre_trans_seconds:{zh:"\u63d0\u524d\u7ffb\u8bd1\u65f6\u957f (10-36000s)",en:"Pre translation seconds (10-36000s)",zh_TW:"\u63d0\u524d\u7ffb\u8b6f\u6642\u9577 (10-36000s)",ja:"\u4e8b\u524d\u7ffb\u8a33\u6642\u9593 (10-36000s)",ko:"\ubbf8\ub9ac \ubc88\uc5ed \uc2dc\uac04 (10-36000s)",tr:"\xc7eviri \xd6ncesi Saniye (10-36000s)"},throttle_trans_interval:{zh:"\u8282\u6d41\u7ffb\u8bd1\u95f4\u9694 (1-3600s)",en:"Throttling translation interval (1-3600s)",zh_TW:"\u7bc0\u6d41\u7ffb\u8b6f\u9593\u9694 (1-3600s)",ja:"\u7ffb\u8a33\u9593\u9694\u306e\u30b9\u30ed\u30c3\u30c8\u30ea\u30f3\u30b0 (1-3600s)",ko:"\ubc88\uc5ed \uac04\uaca9 \uc870\uc808 (1-3600s)",tr:"\xc7eviri Aral\u0131\u011f\u0131n\u0131 Daraltma (1-3600s)"},subtitle_same_lang:{zh:"\u539f\u8bed\u8a00\u4e0e\u76ee\u6807\u8bed\u8a00\u76f8\u540c\uff0c\u5b57\u5e55\u4e0d\u4e88\u5904\u7406",en:"The source language is the same as the target language, subtitles will not be processed",zh_TW:"\u539f\u8a9e\u8a00\u8207\u76ee\u6a19\u8a9e\u8a00\u76f8\u540c\u6642\uff0c\u5b57\u5e55\u4e0d\u4e88\u8655\u7406",ja:"\u539f\u8a00\u8a9e\u3068\u76ee\u6a19\u8a00\u8a9e\u304c\u540c\u3058\u5834\u5408\u3001\u5b57\u5e55\u306f\u51e6\u7406\u3055\u308c\u307e\u305b\u3093",ko:"\uc6d0\ubcf8 \uc5b8\uc5b4\uc640 \ub300\uc0c1 \uc5b8\uc5b4\uac00 \ub3d9\uc77c\ud55c \uacbd\uc6b0, \uc790\ub9c9\uc740 \ucc98\ub9ac\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4",tr:"Kaynak Dil Hedef Dil \u0130le Ayn\u0131"},plain_text_translate:{zh:"\u7eaf\u6587\u672c\u7ffb\u8bd1",en:"Plain text translation",zh_TW:"\u7d14\u6587\u5b57\u7ffb\u8b6f",ja:"\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33",ko:"\uc21c\uc218 \ud14d\uc2a4\ud2b8 \ubc88\uc5ed",tr:"D\xfcz Metin \xc7evirisi"},is_enable_enhance:{zh:"\u542f\u7528\u589e\u5f3a\u529f\u80fd",en:"Enable Enhancement Features",zh_TW:"\u555f\u7528\u589e\u5f37\u529f\u80fd",ja:"\u5f37\u5316\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ud5a5\uc0c1 \uae30\ub2a5 \ud65c\uc131\ud654",tr:"Geli\u015fmi\u015f \xd6zellikleri Etkinle\u015ftir"},open_separate_window:{zh:"\u72ec\u7acb\u7a97\u53e3\u6253\u5f00",en:"Open in Separate Window",zh_TW:"\u5728\u7368\u7acb\u8996\u7a97\u4e2d\u958b\u555f",ja:"\u5225\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u958b\u304f",ko:"\ubcc4\ub3c4 \ucc3d\uc5d0\uc11c \uc5f4\uae30",tr:"Ayr\u0131 Pencerede A\xe7"},comment_support:{zh:"\u597d\u8bc4\u652f\u6301",en:"Leave a Positive Review",zh_TW:"\u597d\u8a55\u652f\u6301",ja:"\u9ad8\u8a55\u4fa1\u3067\u5fdc\u63f4",ko:"\uc88b\uc740 \ud3c9\uac00\ub85c \uc751\uc6d0",tr:"Olumlu Bir \u0130nceleme B\u0131rak\u0131n"},appreciate_support:{zh:"\u8d5e\u8d4f\u652f\u6301",en:"Support with a Tip",zh_TW:"\u8d0a\u8cde\u652f\u6301",ja:"\u6295\u3052\u92ad\u3067\u5fdc\u63f4",ko:"\ud6c4\uc6d0\ud558\uae30",tr:"Bir Ba\u011f\u0131\u015f \u0130le Destek Ol"},toggle_transbox:{zh:"\u5207\u6362\u7ffb\u8bd1\u7a97",en:"Toggle Translation Box",zh_TW:"\u5207\u63db\u7ffb\u8b6f\u8996\u7a97",ja:"\u7ffb\u8a33\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u5207\u308a\u66ff\u3048",ko:"\ubc88\uc5ed \ucc3d \uc804\ud658",tr:"\xc7eviri Kutusunu De\u011fi\u015ftir"},copy:{zh:"\u590d\u5236",en:"Copy",zh_TW:"\u8907\u88fd",ja:"\u30b3\u30d4\u30fc",ko:"\ubcf5\uc0ac",tr:"Kopyala"},paste:{zh:"\u9ecf\u8d34",en:"Paste",zh_TW:"\u8cbc\u4e0a",ja:"\u8cbc\u308a\u4ed8\u3051",ko:"\ubd99\uc5ec\ub123\uae30",tr:"Yap\u0131\u015ft\u0131r"},submit:{zh:"\u63d0\u4ea4",en:"Submit",zh_TW:"\u63d0\u4ea4",ja:"\u9001\u4fe1",ko:"\uc81c\ucd9c",tr:"G\xf6nder"},collect:{zh:"\u6536\u85cf",en:"Save",zh_TW:"\u6536\u85cf",ja:"\u4fdd\u5b58",ko:"\uc800\uc7a5",tr:"Kaydet"},show_translation_dot:{zh:"\u663e\u793a\u7ffb\u8bd1\u5706\u70b9",en:"Show Translation Dot",zh_TW:"\u986f\u793a\u7ffb\u8b6f\u5713\u9ede",ja:"\u7ffb\u8a33\u30c9\u30c3\u30c8\u3092\u8868\u793a",ko:"\ubc88\uc5ed \uc810 \ud45c\uc2dc",tr:"\xc7eviri Noktas\u0131n\u0131 G\xf6ster"},show_dot_mobile:{zh:"\u4ec5\u79fb\u52a8\u7aef",en:"Mobile Only",zh_TW:"\u50c5\u9650\u884c\u52d5\u88dd\u7f6e",ja:"\u30e2\u30d0\u30a4\u30eb\u306e\u307f",ko:"\ubaa8\ubc14\uc77c \uc804\uc6a9",tr:"Yaln\u0131zca Mobil"},show_dot_always:{zh:"\u603b\u662f\u663e\u793a",en:"Always",zh_TW:"\u7e3d\u662f\u986f\u793a",ja:"\u5e38\u306b\u8868\u793a",ko:"\ud56d\uc0c1 \ud45c\uc2dc",tr:"Her Zaman"},show_dot_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\uc0ac\uc6a9 \uc548 \ud568",tr:"Devre D\u0131\u015f\u0131"},rule_disabled:{zh:"\u89c4\u5219\u5df2\u7981\u7528",en:"Rule Disabled",zh_TW:"\u898f\u5247\u5df2\u505c\u7528",ja:"\u30eb\u30fc\u30eb\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059",ko:"\uaddc\uce59\uc774 \ube44\ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4",tr:"Kural Devre D\u0131\u015f\u0131"},rule_enabled:{zh:"\u89c4\u5219\u5df2\u542f\u7528",en:"Rule Enabled",zh_TW:"\u898f\u5247\u5df2\u555f\u7528",ja:"\u30eb\u30fc\u30eb\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059",ko:"\uaddc\uce59\uc774 \ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4",tr:"Kural Etkin"},rule_toggle_failed:{zh:"\u89c4\u5219\u5207\u6362\u5931\u8d25",en:"Failed to toggle rule",zh_TW:"\u898f\u5247\u5207\u63db\u5931\u6557",ja:"\u30eb\u30fc\u30eb\u306e\u5207\u308a\u66ff\u3048\u306b\u5931\u6557\u3057\u307e\u3057\u305f",ko:"\uaddc\uce59 \uc804\ud658 \uc2e4\ud328",tr:"Kural De\u011fi\u015ftirilemedi"},seg_trans_diff_warning:{zh:"\u65ad\u53e5\u548c\u7ffb\u8bd1\u670d\u52a1\u4e0d\u540c\uff0c\u7ffb\u8bd1\u5f15\u64ce\u4f1a\u91cd\u590d\u7ffb\u8bd1\u5b57\u5e55",en:"Segmentation and translation engines differ; subtitles will be re-translated.",zh_TW:"\u65b7\u53e5\u548c\u7ffb\u8b6f\u670d\u52d9\u4e0d\u540c\uff0c\u7ffb\u8b6f\u5f15\u64ce\u6703\u91cd\u8907\u7ffb\u8b6f\u5b57\u5e55",ja:"\u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u7ffb\u8a33\u30a8\u30f3\u30b8\u30f3\u304c\u7570\u306a\u308a\u307e\u3059\u3002\u5b57\u5e55\u306f\u518d\u7ffb\u8a33\u3055\u308c\u307e\u3059\u3002",ko:"\ubd84\ud560\uacfc \ubc88\uc5ed \uc5d4\uc9c4\uc774 \ub2e4\ub985\ub2c8\ub2e4. \uc790\ub9c9\uc774 \ub2e4\uc2dc \ubc88\uc5ed\ub429\ub2c8\ub2e4.",tr:"Segmentasyon ve \xe7eviri motorlar\u0131 farkl\u0131d\u0131r; altyaz\u0131lar yeniden \xe7evrilecektir."},subtitle_style_preview:{zh:"\u6837\u5f0f\u9884\u89c8",en:"Style Preview",zh_TW:"\u6a23\u5f0f\u9810\u89bd",ja:"\u30b9\u30bf\u30a4\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc",ko:"\uc2a4\ud0c0\uc77c \ubbf8\ub9ac\ubcf4\uae30",tr:"Stil \xd6nizlemesi"},subtitle_preview_sample:{zh:"\u8fd9\u662f\u793a\u4f8b\u5b57\u5e55\u6587\u672c",en:"This is an example subtitle",zh_TW:"\u9019\u662f\u7bc4\u4f8b\u5b57\u5e55\u6587\u5b57",ja:"\u3053\u308c\u306f\u30b5\u30f3\u30d7\u30eb\u5b57\u5e55\u30c6\u30ad\u30b9\u30c8\u3067\u3059",ko:"\uc608\uc2dc \uc790\ub9c9 \ud14d\uc2a4\ud2b8\uc785\ub2c8\ub2e4",tr:"Bu Bir \xd6rnek Altyaz\u0131d\u0131r"},font_size:{zh:"\u5b57\u4f53\u5927\u5c0f",en:"Font Size",zh_TW:"\u5b57\u9ad4\u5927\u5c0f",ja:"\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba",ko:"\uae00\uaf34 \ud06c\uae30",tr:"Yaz\u0131 Tipi Boyutu"},font_color:{zh:"\u5b57\u4f53\u989c\u8272",en:"Font Color",zh_TW:"\u5b57\u9ad4\u984f\u8272",ja:"\u30d5\u30a9\u30f3\u30c8\u306e\u8272",ko:"\uae00\uaf34 \uc0c9\uc0c1",tr:"Yaz\u0131 Tipi Rengi"},background_color:{zh:"\u80cc\u666f\u989c\u8272",en:"Background Color",zh_TW:"\u80cc\u666f\u984f\u8272",ja:"\u80cc\u666f\u8272",ko:"\ubc30\uacbd\uc0c9",tr:"Arka Plan Rengi"},opacity:{zh:"\u900f\u660e\u5ea6",en:"Opacity",zh_TW:"\u900f\u660e\u5ea6",ja:"\u4e0d\u900f\u660e\u5ea6",ko:"\ubd88\ud22c\uba85\ub3c4",tr:"Opakl\u0131k"},line_height:{zh:"\u884c\u9ad8",en:"Line Height",zh_TW:"\u884c\u9ad8",ja:"\u884c\u306e\u9ad8\u3055",ko:"\uc904 \ub192\uc774",tr:"Sat\u0131r Y\xfcksekli\u011fi"},padding:{zh:"\u5185\u8fb9\u8ddd",en:"Padding",zh_TW:"\u5167\u908a\u8ddd",ja:"\u4f59\u767d",ko:"\uc548\ucabd \uc5ec\ubc31",tr:"Dolgu"},vertical:{zh:"\u4e0a\u4e0b",en:"Vertical",zh_TW:"\u4e0a\u4e0b",ja:"\u4e0a\u4e0b",ko:"\uc0c1\ud558",tr:"Dikey"},horizontal:{zh:"\u5de6\u53f3",en:"Horizontal",zh_TW:"\u5de6\u53f3",ja:"\u5de6\u53f3",ko:"\uc88c\uc6b0",tr:"Yatay"},text_shadow:{zh:"\u6587\u5b57\u9634\u5f71",en:"Text Shadow",zh_TW:"\u6587\u5b57\u9670\u5f71",ja:"\u30c6\u30ad\u30b9\u30c8\u306e\u5f71",ko:"\ud14d\uc2a4\ud2b8 \uadf8\ub9bc\uc790",tr:"Metin G\xf6lgesi"},advanced_css:{zh:"\u9ad8\u7ea7 CSS \u7f16\u8f91",en:"Advanced CSS",zh_TW:"\u9032\u968e CSS \u7de8\u8f2f",ja:"\u9ad8\u5ea6\u306a CSS \u7de8\u96c6",ko:"\uace0\uae09 CSS \ud3b8\uc9d1",tr:"Geli\u015fmi\u015f CSS"},close:{zh:"\u5173\u95ed",en:"Close",zh_TW:"\u95dc\u9589",ja:"\u9589\u3058\u308b",ko:"\ub2eb\uae30",tr:"Kapat"}})},3439(e){"use strict";var t=Object.prototype.hasOwnProperty,n=Object.prototype.toString,r=Object.defineProperty,o=Object.getOwnPropertyDescriptor,a=function(e){return"function"===typeof Array.isArray?Array.isArray(e):"[object Array]"===n.call(e)},i=function(e){if(!e||"[object Object]"!==n.call(e))return!1;var r,o=t.call(e,"constructor"),a=e.constructor&&e.constructor.prototype&&t.call(e.constructor.prototype,"isPrototypeOf");if(e.constructor&&!o&&!a)return!1;for(r in e);return"undefined"===typeof r||t.call(e,r)},s=function(e,t){r&&"__proto__"===t.name?r(e,t.name,{enumerable:!0,configurable:!0,value:t.newValue,writable:!0}):e[t.name]=t.newValue},l=function(e,n){if("__proto__"===n){if(!t.call(e,n))return;if(o)return o(e,n).value}return e[n]};e.exports=function e(){var t,n,r,o,u,c,d=arguments[0],p=1,h=arguments.length,f=!1;for("boolean"===typeof d&&(f=d,d=arguments[1]||{},p=2),(null==d||"object"!==typeof d&&"function"!==typeof d)&&(d={});p_,Ah:()=>A,Au:()=>p,Az:()=>P,B7:()=>v,BQ:()=>z,CQ:()=>U,Cx:()=>d,DQ:()=>C,EZ:()=>F,Ee:()=>b,Eq:()=>j,H7:()=>V,IF:()=>s,Jg:()=>R,No:()=>N,Nx:()=>M,Oc:()=>B,T2:()=>u,UP:()=>y,Ww:()=>L,YB:()=>W,Zz:()=>h,aq:()=>c,ax:()=>k,dX:()=>m,eU:()=>w,ee:()=>D,fF:()=>I,l:()=>q,mP:()=>f,mo:()=>O,nQ:()=>S,o$:()=>x,tE:()=>g,vc:()=>T,wJ:()=>G,x0:()=>E,y:()=>H,yz:()=>l});var r=n(4181),o=n(5493),a=n(4307),i=n(1367);const s="toggleTranslate",l="toggleTransOnly",u="toggleStyle",c="togglePopup",d="openSetting",p={[s]:["AltLeft","KeyQ"],[u]:["AltLeft","KeyC"],[c]:["AltLeft","KeyK"],[d]:["AltLeft","KeyO"]},h=20,f=["https://fishjar.github.io/kiss-translator/options.html","https://translate.google.com","https://www.deepl.com/translator"],m=[],g=["https://dict.youdao.com"],v="KISS-Worker",y="WebDAV",b="GitHub Gist",x="kt_",A=[v,y,b],D={syncType:v,syncUrl:"",syncUser:"",syncKey:"",syncEncryptKey:"",syncMeta:{},subRulesSyncAt:0,dataCaches:{}},k="-",w="mobile",S="always",E=["/","//","\\","\\\\",">",">>"],_={transOpen:!0,blacklist:"",apiSlug:o.fF,fromLang:"auto",toLang:"en",triggerShortcut:["AltLeft","KeyI"],triggerCount:1,triggerTime:200,transSign:E[0],showDot:w},C="click",F=[C,"hover","select","dblclick"],T="fixed",j=[T,"mouse"],z="click",I="dblclick",L=[["zh","\u4e2d\u6587 Chinese"],...o.i8.filter(e=>{let[t]=e;return"zh-CN"!==t&&"zh-TW"!==t})],P={transOpen:!0,blacklist:"",apiSlugs:[o.fF],singleWordNoTrans:!1,autoFavWord:!1,fromLang:"auto",toLang:"zh-CN",toLang2:"en",tranboxShortcut:["AltLeft","KeyS"],btnOffsetX:0,btnOffsetY:0,boxOffsetX:0,boxOffsetY:10,hideTranBtn:!1,hideClickAway:!1,simpleStyle:!1,followSelection:!1,autoHeight:!1,triggerMode:C,btnPositionMode:T,tranboxInteractMode:"-",skipLangs:[],enDict:o.GD,enSug:o.s1,aiDictApiSlug:"-",aiDictPromptSlug:a.Qs},R="on",N="off",O="mobile_off",B={enabled:!0,apiSlug:o.fF,segSlug:"-",forceSubtitleRetranslate:!1,chunkLength:1e3,longSentenceThreshold:100,useAlgorithmBreaker:"rule",preTrans:90,throttleTrans:30,toLang:"zh-CN",autoTranslate:!0,isBilingual:!0,displayOrder:"original-first",blurTranslation:!1,skipAd:!1,windowStyle:"padding: 0.5em 1em;\nbackground-color: rgba(0, 0, 0, 0.5);\ncolor: white;\nline-height: 1.3;\ntext-shadow: 1px 1px 2px black;\ndisplay: inline-block",originStyle:"font-size: clamp(1rem, 2cqw, 3rem);",translationStyle:"font-size: clamp(1rem, 2cqw, 3rem);",hoverLookupMode:O,autoFavWord:!1,showList:O,hideSubtitleButton:!1,aiContextSlug:"-",segPromptMode:a.Qs,segPromptSlug:a.Ef},M=[{url:"https://fishjar.github.io/kiss-rules/kiss-rules_v2.json",selected:!0},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-on_v2.json",selected:!1},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-off_v2.json",selected:!1}],W=["ControlLeft"],U="bilingual",V="bubble",H="max-width: min(420px, calc(100vw - 32px));\npadding: 10px 12px;\nborder-radius: 8px;\nbackground: rgb(25, 118, 210);\ncolor: #fff;\nfont-size: 14px;\nline-height: 1.5;\nbox-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);\nbackdrop-filter: blur(8px);",G={useMouseHover:!1,blacklist:"",mouseHoverKey:W,mouseHoverKey2:[],displayMode:U,bubbleStyle:H},q={version:a.xo,darkMode:"auto",uiLang:"en",minLength:2,maxLength:1e5,newlineLength:h,httpTimeout:o.$K,clearCache:!1,injectRules:!0,fabClickAction:0,contextMenuType:1,subrulesList:M,transApis:o._T,prompts:[],deletedTransApiSlugs:[],shortcuts:p,inputRule:_,tranboxSetting:P,touchModes:[2],blacklist:f.join(",\n"),csplist:m.join(",\n"),orilist:g.join(",\n"),skipLangs:[],transInterval:100,langDetector:"-",mouseHoverSetting:G,preInit:!0,transAllnow:!1,subtitleSetting:B,logLevel:r.$b.INFO.value,rootMargin:500,customStyles:i.p5}},3684(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r.createSvgIcon}});var r=n(2297)},3699(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(4320);function o(e,t){const n=(0,r.A)({},t);return Object.keys(e).forEach(a=>{if(a.toString().match(/^(components|slots)$/))n[a]=(0,r.A)({},e[a],n[a]);else if(a.toString().match(/^(componentsProps|slotProps)$/)){const i=e[a]||{},s=t[a];n[a]={},s&&Object.keys(s)?i&&Object.keys(i)?(n[a]=(0,r.A)({},s),Object.keys(i).forEach(e=>{n[a][e]=o(i[e],s[e])})):n[a]=s:n[a]=i}else void 0===n[a]&&(n[a]=e[a])}),n}},3701(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info")},3780(e,t,n){"use strict";n.d(t,{A:()=>a});n(8661);var r=n(1834),o=n(5089);function a(e){const{styles:t,defaultTheme:n={}}=e,a="function"===typeof t?e=>{return t(void 0===(r=e)||null===r||0===Object.keys(r).length?n:e);var r}:t;return(0,o.jsx)(r.mL,{styles:a})}},3806(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(2561).A},3818(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm4 18H6V4h7v5h5zM8 15.01l1.41 1.41L11 14.84V19h2v-4.16l1.59 1.59L16 15.01 12.01 11z"}),"UploadFile")},3830(e,t,n){"use strict";n.d(t,{EU:()=>s,NI:()=>i,iZ:()=>u,kW:()=>c,vf:()=>l,zu:()=>o});var r=n(6997);const o={xs:0,sm:600,md:900,lg:1200,xl:1536},a={keys:["xs","sm","md","lg","xl"],up:e=>"@media (min-width:".concat(o[e],"px)")};function i(e,t,n){const r=e.theme||{};if(Array.isArray(t)){const e=r.breakpoints||a;return t.reduce((r,o,a)=>(r[e.up(e.keys[a])]=n(t[a]),r),{})}if("object"===typeof t){const e=r.breakpoints||a;return Object.keys(t).reduce((r,a)=>{if(-1!==Object.keys(e.values||o).indexOf(a)){r[e.up(a)]=n(t[a],a)}else{const e=a;r[e]=t[e]}return r},{})}return n(t)}function s(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var t;return(null==(t=e.keys)?void 0:t.reduce((t,n)=>(t[e.up(n)]={},t),{}))||{}}function l(e,t){return e.reduce((e,t)=>{const n=e[t];return(!n||0===Object.keys(n).length)&&delete e[t],e},t)}function u(e){const t=s(e);for(var n=arguments.length,o=new Array(n>1?n-1:0),a=1;a(0,r.A)(e,t),{});return l(Object.keys(t),i)}function c(e){let{values:t,breakpoints:n,base:r}=e;const o=r||function(e,t){if("object"!==typeof e)return{};const n={},r=Object.keys(t);return Array.isArray(e)?r.forEach((t,r)=>{r{null!=e[t]&&(n[t]=!0)}),n}(t,n),a=Object.keys(o);if(0===a.length)return t;let i;return a.reduce((e,n,r)=>(Array.isArray(t)?(e[n]=null!=t[r]?t[r]:t[i],i=r):"object"===typeof t?(e[n]=null!=t[n]?t[n]:t[i],i=n):e[n]=t,e),{})}},3951(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(5482);function o(e){var t={},n=!1;function o(t,o){return n=!0,o=new Promise(function(n){n(e[t](o))}),{done:!1,value:new r.A(o,1)}}return t["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},t.next=function(e){return n?(n=!1,e):o("next",e)},"function"==typeof e.throw&&(t.throw=function(e){if(n)throw n=!1,e;return o("throw",e)}),"function"==typeof e.return&&(t.return=function(e){return n?(n=!1,e):o("return",e)}),t}},4077(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(6489).A},4089(e,t,n){"use strict";n.d(t,{Ay:()=>a});var r=n(7599);const o={active:"active",checked:"checked",completed:"completed",disabled:"disabled",error:"error",expanded:"expanded",focused:"focused",focusVisible:"focusVisible",open:"open",readOnly:"readOnly",required:"required",selected:"selected"};function a(e,t){const n=o[t];return n?"".concat(arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Mui","-").concat(n):"".concat(r.A.generate(e),"-").concat(t)}},4093(e,t,n){"use strict";var r;n.d(t,{$:()=>r,Q:()=>o}),function(e){e[e.BACKSPACE=8]="BACKSPACE",e[e.FORM_FEED=12]="FORM_FEED",e[e.NEWLINE=10]="NEWLINE",e[e.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",e[e.TAB=9]="TAB",e[e.SPACE=32]="SPACE",e[e.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",e[e.QUOTATION_MARK=34]="QUOTATION_MARK",e[e.NUMBER_SIGN=35]="NUMBER_SIGN",e[e.DOLLAR_SIGN=36]="DOLLAR_SIGN",e[e.PERCENT_SIGN=37]="PERCENT_SIGN",e[e.AMPERSAND=38]="AMPERSAND",e[e.APOSTROPHE=39]="APOSTROPHE",e[e.LEFT_PARENTHESIS=40]="LEFT_PARENTHESIS",e[e.RIGHT_PARENTHESIS=41]="RIGHT_PARENTHESIS",e[e.ASTERISK=42]="ASTERISK",e[e.PLUS_SIGN=43]="PLUS_SIGN",e[e.COMMA=44]="COMMA",e[e.HYPHEN_MINUS=45]="HYPHEN_MINUS",e[e.FULL_STOP=46]="FULL_STOP",e[e.SOLIDUS=47]="SOLIDUS",e[e.DIGIT_ZERO=48]="DIGIT_ZERO",e[e.DIGIT_ONE=49]="DIGIT_ONE",e[e.DIGIT_TWO=50]="DIGIT_TWO",e[e.DIGIT_THREE=51]="DIGIT_THREE",e[e.DIGIT_FOUR=52]="DIGIT_FOUR",e[e.DIGIT_FIVE=53]="DIGIT_FIVE",e[e.DIGIT_SIX=54]="DIGIT_SIX",e[e.DIGIT_SEVEN=55]="DIGIT_SEVEN",e[e.DIGIT_EIGHT=56]="DIGIT_EIGHT",e[e.DIGIT_NINE=57]="DIGIT_NINE",e[e.COLON=58]="COLON",e[e.SEMICOLON=59]="SEMICOLON",e[e.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",e[e.EQUALS_SIGN=61]="EQUALS_SIGN",e[e.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",e[e.QUESTION_MARK=63]="QUESTION_MARK",e[e.COMMERCIAL_AT=64]="COMMERCIAL_AT",e[e.LATIN_CAPITAL_LETTER_A=65]="LATIN_CAPITAL_LETTER_A",e[e.LATIN_CAPITAL_LETTER_B=66]="LATIN_CAPITAL_LETTER_B",e[e.LATIN_CAPITAL_LETTER_C=67]="LATIN_CAPITAL_LETTER_C",e[e.LATIN_CAPITAL_LETTER_D=68]="LATIN_CAPITAL_LETTER_D",e[e.LATIN_CAPITAL_LETTER_E=69]="LATIN_CAPITAL_LETTER_E",e[e.LATIN_CAPITAL_LETTER_F=70]="LATIN_CAPITAL_LETTER_F",e[e.LATIN_CAPITAL_LETTER_G=71]="LATIN_CAPITAL_LETTER_G",e[e.LATIN_CAPITAL_LETTER_H=72]="LATIN_CAPITAL_LETTER_H",e[e.LATIN_CAPITAL_LETTER_I=73]="LATIN_CAPITAL_LETTER_I",e[e.LATIN_CAPITAL_LETTER_J=74]="LATIN_CAPITAL_LETTER_J",e[e.LATIN_CAPITAL_LETTER_K=75]="LATIN_CAPITAL_LETTER_K",e[e.LATIN_CAPITAL_LETTER_L=76]="LATIN_CAPITAL_LETTER_L",e[e.LATIN_CAPITAL_LETTER_M=77]="LATIN_CAPITAL_LETTER_M",e[e.LATIN_CAPITAL_LETTER_N=78]="LATIN_CAPITAL_LETTER_N",e[e.LATIN_CAPITAL_LETTER_O=79]="LATIN_CAPITAL_LETTER_O",e[e.LATIN_CAPITAL_LETTER_P=80]="LATIN_CAPITAL_LETTER_P",e[e.LATIN_CAPITAL_LETTER_Q=81]="LATIN_CAPITAL_LETTER_Q",e[e.LATIN_CAPITAL_LETTER_R=82]="LATIN_CAPITAL_LETTER_R",e[e.LATIN_CAPITAL_LETTER_S=83]="LATIN_CAPITAL_LETTER_S",e[e.LATIN_CAPITAL_LETTER_T=84]="LATIN_CAPITAL_LETTER_T",e[e.LATIN_CAPITAL_LETTER_U=85]="LATIN_CAPITAL_LETTER_U",e[e.LATIN_CAPITAL_LETTER_V=86]="LATIN_CAPITAL_LETTER_V",e[e.LATIN_CAPITAL_LETTER_W=87]="LATIN_CAPITAL_LETTER_W",e[e.LATIN_CAPITAL_LETTER_X=88]="LATIN_CAPITAL_LETTER_X",e[e.LATIN_CAPITAL_LETTER_Y=89]="LATIN_CAPITAL_LETTER_Y",e[e.LATIN_CAPITAL_LETTER_Z=90]="LATIN_CAPITAL_LETTER_Z",e[e.LEFT_SQUARE_BRACKET=91]="LEFT_SQUARE_BRACKET",e[e.REVERSE_SOLIDUS=92]="REVERSE_SOLIDUS",e[e.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",e[e.CIRCUMFLEX_ACCENT=94]="CIRCUMFLEX_ACCENT",e[e.LOW_LINE=95]="LOW_LINE",e[e.GRAVE_ACCENT=96]="GRAVE_ACCENT",e[e.LATIN_SMALL_LETTER_A=97]="LATIN_SMALL_LETTER_A",e[e.LATIN_SMALL_LETTER_B=98]="LATIN_SMALL_LETTER_B",e[e.LATIN_SMALL_LETTER_C=99]="LATIN_SMALL_LETTER_C",e[e.LATIN_SMALL_LETTER_D=100]="LATIN_SMALL_LETTER_D",e[e.LATIN_SMALL_LETTER_E=101]="LATIN_SMALL_LETTER_E",e[e.LATIN_SMALL_LETTER_F=102]="LATIN_SMALL_LETTER_F",e[e.LATIN_SMALL_LETTER_G=103]="LATIN_SMALL_LETTER_G",e[e.LATIN_SMALL_LETTER_H=104]="LATIN_SMALL_LETTER_H",e[e.LATIN_SMALL_LETTER_I=105]="LATIN_SMALL_LETTER_I",e[e.LATIN_SMALL_LETTER_J=106]="LATIN_SMALL_LETTER_J",e[e.LATIN_SMALL_LETTER_K=107]="LATIN_SMALL_LETTER_K",e[e.LATIN_SMALL_LETTER_L=108]="LATIN_SMALL_LETTER_L",e[e.LATIN_SMALL_LETTER_M=109]="LATIN_SMALL_LETTER_M",e[e.LATIN_SMALL_LETTER_N=110]="LATIN_SMALL_LETTER_N",e[e.LATIN_SMALL_LETTER_O=111]="LATIN_SMALL_LETTER_O",e[e.LATIN_SMALL_LETTER_P=112]="LATIN_SMALL_LETTER_P",e[e.LATIN_SMALL_LETTER_Q=113]="LATIN_SMALL_LETTER_Q",e[e.LATIN_SMALL_LETTER_R=114]="LATIN_SMALL_LETTER_R",e[e.LATIN_SMALL_LETTER_S=115]="LATIN_SMALL_LETTER_S",e[e.LATIN_SMALL_LETTER_T=116]="LATIN_SMALL_LETTER_T",e[e.LATIN_SMALL_LETTER_U=117]="LATIN_SMALL_LETTER_U",e[e.LATIN_SMALL_LETTER_V=118]="LATIN_SMALL_LETTER_V",e[e.LATIN_SMALL_LETTER_W=119]="LATIN_SMALL_LETTER_W",e[e.LATIN_SMALL_LETTER_X=120]="LATIN_SMALL_LETTER_X",e[e.LATIN_SMALL_LETTER_Y=121]="LATIN_SMALL_LETTER_Y",e[e.LATIN_SMALL_LETTER_Z=122]="LATIN_SMALL_LETTER_Z",e[e.LEFT_CURLY_BRACKET=123]="LEFT_CURLY_BRACKET",e[e.VERTICAL_LINE=124]="VERTICAL_LINE",e[e.RIGHT_CURLY_BRACKET=125]="RIGHT_CURLY_BRACKET",e[e.TILDE=126]="TILDE"}(r||(r={}));const o={[r.QUOTATION_MARK]:r.QUOTATION_MARK,[r.REVERSE_SOLIDUS]:r.REVERSE_SOLIDUS,[r.SOLIDUS]:r.SOLIDUS,[r.LATIN_SMALL_LETTER_B]:r.BACKSPACE,[r.LATIN_SMALL_LETTER_F]:r.FORM_FEED,[r.LATIN_SMALL_LETTER_N]:r.NEWLINE,[r.LATIN_SMALL_LETTER_R]:r.CARRIAGE_RETURN,[r.LATIN_SMALL_LETTER_T]:r.TAB}},4107(e,t,n){"use strict";n.d(t,{A:()=>a});var r=n(9371);function o(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function a(e){for(var t=1;tr,h9:()=>a,vF:()=>o});const r={DEBUG:{value:0,name:"DEBUG",color:"#6495ED"},INFO:{value:1,name:"INFO",color:"#4CAF50"},WARN:{value:2,name:"WARN",color:"#FFC107"},ERROR:{value:3,name:"ERROR",color:"#F44336"},SILENT:{value:4,name:"SILENT"}};const o=new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.config={level:e.level||r.INFO,prefix:e.prefix||"KISS-Translator"}}setLevel(e){let t;if("string"===typeof e){if(t=function(e){if("string"!==typeof e||0===e.length)return;const t=e.toUpperCase();return Object.values(r).find(e=>e.name===t)}(e),!t)return void this.warn('Invalid log level name provided: "'.concat(e,'". Keeping current level.'))}else if("number"===typeof e){if(n=e,t=Object.values(r).find(e=>e.value===n),!t)return void this.warn("Invalid log level value provided: ".concat(e,". Keeping current level."))}else{if(!e||"number"!==typeof e.value)return void this.warn("Invalid argument passed to setLevel. Must be a LogLevel object, number, or string.");t=e}var n;this.config.level.value!==t.value&&(this.config.level=t,console.log("[".concat(this.config.prefix,"] Log level dynamically set to ").concat(this.config.level.name)))}_log(e){if(e.value1?a-1:0),s=1;sr});const r=n(2577).A},4262(e,t,n){"use strict";n.d(t,{LX:()=>f,MA:()=>h,_W:()=>m,Lc:()=>y,Ms:()=>b});var r=n(3830),o=n(8343),a=n(1686);const i={m:"margin",p:"padding"},s={t:"Top",r:"Right",b:"Bottom",l:"Left",x:["Left","Right"],y:["Top","Bottom"]},l={marginX:"mx",marginY:"my",paddingX:"px",paddingY:"py"},u=function(e){const t={};return n=>(void 0===t[n]&&(t[n]=e(n)),t[n])}(e=>{if(e.length>2){if(!l[e])return[e];e=l[e]}const[t,n]=e.split(""),r=i[t],o=s[n]||"";return Array.isArray(o)?o.map(e=>r+e):[r+o]}),c=["m","mt","mr","mb","ml","mx","my","margin","marginTop","marginRight","marginBottom","marginLeft","marginX","marginY","marginInline","marginInlineStart","marginInlineEnd","marginBlock","marginBlockStart","marginBlockEnd"],d=["p","pt","pr","pb","pl","px","py","padding","paddingTop","paddingRight","paddingBottom","paddingLeft","paddingX","paddingY","paddingInline","paddingInlineStart","paddingInlineEnd","paddingBlock","paddingBlockStart","paddingBlockEnd"],p=[...c,...d];function h(e,t,n,r){var a;const i=null!=(a=(0,o.Yn)(e,t,!1))?a:n;return"number"===typeof i?e=>"string"===typeof e?e:i*e:Array.isArray(i)?e=>"string"===typeof e?e:i[e]:"function"===typeof i?i:()=>{}}function f(e){return h(e,"spacing",8)}function m(e,t){if("string"===typeof t||null==t)return t;const n=e(Math.abs(t));return t>=0?n:"number"===typeof n?-n:"-".concat(n)}function g(e,t,n,o){if(-1===t.indexOf(n))return null;const a=function(e,t){return n=>e.reduce((e,r)=>(e[r]=m(t,n),e),{})}(u(n),o),i=e[n];return(0,r.NI)(e,i,a)}function v(e,t){const n=f(e.theme);return Object.keys(e).map(r=>g(e,t,r,n)).reduce(a.A,{})}function y(e){return v(e,c)}function b(e){return v(e,d)}function x(e){return v(e,p)}y.propTypes={},y.filterProps=c,b.propTypes={},b.filterProps=d,x.propTypes={},x.filterProps=p},4270(e,t,n){"use strict";n.d(t,{A:()=>b});var r=n(4320),o=n(8661),a=n(8915),i=n(5553),s=n(1163),l=n(5227),u=n(3142),c=n(7183),d=n(5421),p=n(4089);function h(e){return(0,p.Ay)("MuiSvgIcon",e)}(0,d.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var f=n(5089);const m=["children","className","color","component","fontSize","htmlColor","inheritViewBox","titleAccess","viewBox"],g=(0,c.Ay)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"inherit"!==n.color&&t["color".concat((0,l.A)(n.color))],t["fontSize".concat((0,l.A)(n.fontSize))]]}})(e=>{let{theme:t,ownerState:n}=e;var r,o,a,i,s,l,u,c,d,p,h,f,m;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",fill:n.hasSvgAsChild?void 0:"currentColor",flexShrink:0,transition:null==(r=t.transitions)||null==(o=r.create)?void 0:o.call(r,"fill",{duration:null==(a=t.transitions)||null==(a=a.duration)?void 0:a.shorter}),fontSize:{inherit:"inherit",small:(null==(i=t.typography)||null==(s=i.pxToRem)?void 0:s.call(i,20))||"1.25rem",medium:(null==(l=t.typography)||null==(u=l.pxToRem)?void 0:u.call(l,24))||"1.5rem",large:(null==(c=t.typography)||null==(d=c.pxToRem)?void 0:d.call(c,35))||"2.1875rem"}[n.fontSize],color:null!=(p=null==(h=(t.vars||t).palette)||null==(h=h[n.color])?void 0:h.main)?p:{action:null==(f=(t.vars||t).palette)||null==(f=f.action)?void 0:f.active,disabled:null==(m=(t.vars||t).palette)||null==(m=m.action)?void 0:m.disabled,inherit:void 0}[n.color]}}),v=o.forwardRef(function(e,t){const n=(0,u.b)({props:e,name:"MuiSvgIcon"}),{children:c,className:d,color:p="inherit",component:v="svg",fontSize:y="medium",htmlColor:b,inheritViewBox:x=!1,titleAccess:A,viewBox:D="0 0 24 24"}=n,k=(0,a.A)(n,m),w=o.isValidElement(c)&&"svg"===c.type,S=(0,r.A)({},n,{color:p,component:v,fontSize:y,instanceFontSize:e.fontSize,inheritViewBox:x,viewBox:D,hasSvgAsChild:w}),E={};x||(E.viewBox=D);const _=(e=>{const{color:t,fontSize:n,classes:r}=e,o={root:["root","inherit"!==t&&"color".concat((0,l.A)(t)),"fontSize".concat((0,l.A)(n))]};return(0,s.A)(o,h,r)})(S);return(0,f.jsxs)(g,(0,r.A)({as:v,className:(0,i.A)(_.root,d),focusable:"false",color:b,"aria-hidden":!A||void 0,role:A?"img":void 0,ref:t},E,k,w&&c.props,{ownerState:S,children:[w?c.props.children:c,A?(0,f.jsx)("title",{children:A}):null]}))});v.muiName="SvgIcon";const y=v;function b(e,t){function n(n,o){return(0,f.jsx)(y,(0,r.A)({"data-testid":"".concat(t,"Icon"),ref:o},n,{children:e}))}return n.muiName=y.muiName,o.memo(o.forwardRef(n))}},4290(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81 1.66 0 3-1.34 3-3s-1.34-3-3-3-3 1.34-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9c-1.66 0-3 1.34-3 3s1.34 3 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.16c-.05.21-.08.43-.08.65 0 1.61 1.31 2.92 2.92 2.92 1.61 0 2.92-1.31 2.92-2.92s-1.31-2.92-2.92-2.92"}),"Share")},4307(e,t,n){"use strict";n.d(t,{Ef:()=>y,Es:()=>F,N9:()=>c,Ob:()=>S,Pc:()=>te,Qs:()=>u,RF:()=>E,S0:()=>W,SE:()=>b,Vn:()=>X,XD:()=>H,ZS:()=>d,a5:()=>ee,cP:()=>J,eb:()=>p,ej:()=>O,lQ:()=>h,le:()=>V,oG:()=>B,qj:()=>v,rV:()=>_,r_:()=>g,t:()=>Z,uM:()=>x,vo:()=>U,xI:()=>f,xT:()=>m,xo:()=>A,zh:()=>Q});var r=n(4107),o=n(5493);const a="nobatch-translation",i="batch-translation-json",s="subtitle-segmentation",l="dictionary-en-zh",u="follow_api",c="global",d="batch system prompt",p="user prompt",h="subtitle prompt",f="dictionary prompt",m=[p,d,h,f],g=a,v=i,y=s,b=l,x=2,A=3,D=[{slug:a,category:p,nameKey:"preset_prompt_nobatch_translation",name:"Non-batch translation",systemPrompt:o.$1,userPrompt:o.EE},{slug:i,category:d,nameKey:"preset_prompt_batch_translation_json",name:"Batch translation (JSON)",systemPrompt:o.lo,userPrompt:""},{slug:"batch-translation-xml",category:d,nameKey:"preset_prompt_batch_translation_xml",name:"Batch translation (XML)",systemPrompt:o.ad,userPrompt:""},{slug:"batch-translation-line",category:d,nameKey:"preset_prompt_batch_translation_line",name:"Batch translation (LINE)",systemPrompt:o.Ww,userPrompt:""},{slug:s,category:h,nameKey:"preset_prompt_subtitle_segmentation",name:"Subtitle AI segmentation",systemPrompt:o.U$,userPrompt:""},{slug:l,category:f,nameKey:"preset_prompt_dictionary_en_zh",name:"AI English-Chinese Dictionary",systemPrompt:o.im,userPrompt:o.fk}],k=new Set(D.map(e=>e.slug)),w=["slug","category","name","systemPrompt","userPrompt"];function S(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{slug:String(e.slug||""),category:String(e.category||""),nameKey:String(e.nameKey||""),name:String(e.name||""),systemPrompt:String(e.systemPrompt||""),userPrompt:String(e.userPrompt||"")}}function E(e){return k.has(e)}function _(){const e=C(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]);return[...D,...e]}function C(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(Array.isArray(e)?e:[]).map(S).filter(e=>e.slug&&!E(e.slug)).map(e=>{let{slug:t,category:n,name:r,systemPrompt:o,userPrompt:a}=e;return{slug:t,category:n,name:r,systemPrompt:o,userPrompt:a}})}function F(){let e=arguments.length>1?arguments[1]:void 0;return e?_(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).find(t=>(null===t||void 0===t?void 0:t.slug)===e):null}function T(e,t,n){return F(e,t)||F(e,n)}function j(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return Object.prototype.hasOwnProperty.call(e,t)}function z(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return j(e,t)?e[t]:n}function I(){return j(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}function L(){return String((arguments.length>0&&void 0!==arguments[0]?arguments[0]:{})[arguments.length>1?arguments[1]:void 0]||"")}function P(e,t){const n=S(e),r=S(t);return n.category===r.category&&n.systemPrompt===r.systemPrompt&&n.userPrompt===r.userPrompt}function R(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;const n=String(e.apiName||e.apiSlug||"API");return"".concat(n," ").concat(t)}function N(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;const r=function(e){const t=String(e);let n=2166136261,r=16777619;for(let o=0;o>>0).toString(36)).concat((r>>>0).toString(36))}(JSON.stringify({apiSlug:String(e.apiSlug||""),promptType:t,category:n.category,systemPrompt:n.systemPrompt,userPrompt:n.userPrompt}));return"prompt_migrated_".concat(t,"_").concat(r)}function O(){let e=arguments.length>1?arguments[1]:void 0;const t=S(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{});return t.nameKey&&"function"===typeof e?e(t.nameKey,t.name):t.name||t.slug}function B(e,t){if("function"!==typeof t)return e||"";return t({[d]:"prompt_category_batch_system",[p]:"prompt_category_user",[h]:"prompt_category_subtitle",[f]:"prompt_category_dictionary"}[e],e||"")}function M(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return(Array.isArray(e)?e:[]).filter(e=>(null===e||void 0===e?void 0:e.category)===t)}function W(){return M(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],p)}function U(){return M(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],d)}function V(){return M(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],h)}function H(){return M(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],f)}function G(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;return j(e,t)&&e[t]===n}function q(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e)return e;if(!j(e,"batchPromptId")&&!j(e,"nobatchPromptId")&&!j(e,"subtitlePromptId")&&!j(e,"dictPromptId"))return e;const t=(0,r.A)({},e);return delete t.batchPromptId,delete t.nobatchPromptId,delete t.subtitlePromptId,delete t.dictPromptId,t}const K=[{promptType:"batch",promptLabel:"Batch prompt",category:d,systemPromptFieldName:"systemPrompt",userPromptFieldName:"",promptSlugFieldName:"batchPromptSlug"},{promptType:"nobatch",promptLabel:"Non-batch prompt",category:p,systemPromptFieldName:"nobatchPrompt",userPromptFieldName:"nobatchUserPrompt",promptSlugFieldName:"nobatchPromptSlug"},{promptType:"subtitle",promptLabel:"Subtitle prompt",category:h,systemPromptFieldName:"subtitlePrompt",userPromptFieldName:"",promptSlugFieldName:"subtitlePromptSlug"},{promptType:"dict",promptLabel:"Dictionary prompt",category:f,systemPromptFieldName:"dictPrompt",userPromptFieldName:"dictUserPrompt",promptSlugFieldName:"dictPromptSlug"}];function $(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=new Map;return e.forEach(e=>{const n=null===e||void 0===e?void 0:e.slug;n&&!t.has(n)&&t.set(n,e)}),t}function Y(e,t,n){if(I(e,t.promptSlugFieldName))return"";const o=function(e,t){return j(e,t.systemPromptFieldName)?{slug:"",category:t.category,nameKey:"",name:R(e,t.promptLabel),systemPrompt:L(e,t.systemPromptFieldName),userPrompt:t.userPromptFieldName?L(e,t.userPromptFieldName):""}:null}(e,t);if(!o)return"";const a=function(e){return D.find(t=>P(t,e))}(o);if(a)return a.slug;const i=N(e,t.promptType,o),s=function(e,t,n){let r=1,o=n;for(;e.has(o);){if(P(e.get(o),t))return o;r+=1,o="".concat(n,"_").concat(r)}return o}(n.promptBySlug,o,i);if(!n.promptBySlug.has(s)){const e=(0,r.A)((0,r.A)({},o),{},{slug:s});n.prompts.push(e),n.promptBySlug.set(s,e),n.hasPromptChanges=!0}return s}function X(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Number((null===e||void 0===e?void 0:e.version)||1);return Number.isFinite(t)&&t>=1?t:1}function Q(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e||"object"!==typeof e)return e;if(!Array.isArray(e.transApis))return(0,r.A)((0,r.A)({},e),{},{version:x});const t=Array.isArray(e.prompts)?e.prompts:[],n=C(t),a=!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return Array.isArray(e)?e.length===t.length&&e.every((e,n)=>!(!e||"object"!==typeof e)&&(Object.keys(e).every(e=>w.includes(e))&&JSON.stringify(S(e))===JSON.stringify(t[n]))):0===t.length}(t,n),i=function(e){if(!e||!j(e,"segPromptId"))return e;const t=(0,r.A)({},e);return delete t.segPromptId,t}(e.subtitleSetting),s=i!==e.subtitleSetting,l={prompts:[...n],promptBySlug:$([...D,...n]),hasPromptChanges:a};let u=!1;const c=e.transApis.map(e=>{if(!e||"object"!==typeof e)return e;let t=q(e);return t!==e&&(u=!0),K.forEach(n=>{const a=Boolean(t.apiType)&&!o.sN.ai.has(t.apiType),i="string"===typeof t[n.systemPromptFieldName]?t[n.systemPromptFieldName].trim():"",s=n.userPromptFieldName&&"string"===typeof t[n.userPromptFieldName]?t[n.userPromptFieldName].trim():"";if(a||!i&&!s)return void((j(t,n.systemPromptFieldName)||n.userPromptFieldName&&j(t,n.userPromptFieldName))&&(t===e&&(t=(0,r.A)({},e)),t=function(e,t){const n=(0,r.A)({},e);return delete n[t.systemPromptFieldName],t.userPromptFieldName&&delete n[t.userPromptFieldName],n}(t,n),u=!0));const c=Y(t,n,l);c&&t[n.promptSlugFieldName]!==c&&(t===e&&(t=(0,r.A)({},e)),t[n.promptSlugFieldName]=c,delete t[n.systemPromptFieldName],n.userPromptFieldName&&delete t[n.userPromptFieldName],u=!0)}),t}),d=(0,r.A)({},e);return d.version=x,d.transApis=u?c:e.transApis,d.prompts=l.hasPromptChanges?l.prompts:n,s&&(d.subtitleSetting=i),d}function J(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e||"object"!==typeof e)return e;const t=X(e)=3)return t;const n=Array.isArray(t.transApis)?t.transApis.map(e=>(null===e||void 0===e?void 0:e.apiType)!==o.lL||e.url!==o.GY?e:(0,r.A)((0,r.A)({},e),{},{url:o.KK})):t.transApis;return(0,r.A)((0,r.A)({},t),{},{transApis:n,version:3})}function Z(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;if(!t||E(t))return e;let n=!1;const o=(Array.isArray(null===e||void 0===e?void 0:e.transApis)?e.transApis:[]).map(e=>{let o=e;return G(e,"batchPromptSlug",t)&&(o=(0,r.A)((0,r.A)({},o),{},{batchPromptSlug:v}),delete o.systemPrompt,n=!0),G(e,"nobatchPromptSlug",t)&&(o=(0,r.A)((0,r.A)({},o),{},{nobatchPromptSlug:g}),delete o.nobatchPrompt,delete o.nobatchUserPrompt,n=!0),G(e,"subtitlePromptSlug",t)&&(o=(0,r.A)((0,r.A)({},o),{},{subtitlePromptSlug:y}),delete o.subtitlePrompt,n=!0),G(e,"dictPromptSlug",t)&&(o=(0,r.A)((0,r.A)({},o),{},{dictPromptSlug:b}),delete o.dictPrompt,delete o.dictUserPrompt,n=!0),o}),a=G(null===e||void 0===e?void 0:e.subtitleSetting,"segPromptSlug",t),i=G(null===e||void 0===e?void 0:e.tranboxSetting,"aiDictPromptSlug",t);if(!n&&!a&&!i)return e;const s=(0,r.A)({},e);return n&&(s.transApis=o),a&&(s.subtitleSetting=(0,r.A)((0,r.A)({},(null===e||void 0===e?void 0:e.subtitleSetting)||{}),{},{segPromptMode:u,segPromptSlug:y})),i&&(s.tranboxSetting=(0,r.A)((0,r.A)({},(null===e||void 0===e?void 0:e.tranboxSetting)||{}),{},{aiDictPromptSlug:u})),s}function ee(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e)return e;const o=q(e),a=o===e?(0,r.A)({},e):o,i=I(a,"batchPromptSlug"),s=j(a,"systemPrompt"),l=T(t,z(a,"batchPromptSlug",v),v);!l||!i&&s||(a.batchPromptSlug=l.slug,a.systemPrompt=l.systemPrompt);const u=I(a,"nobatchPromptSlug"),d=j(a,"nobatchPrompt")||j(a,"nobatchUserPrompt"),p=T(t,z(a,"nobatchPromptSlug",g),g);!p||!u&&d||(a.nobatchPromptSlug=p.slug,a.nobatchPrompt=p.systemPrompt,a.nobatchUserPrompt=p.userPrompt);const h=(null===n||void 0===n?void 0:n.segPromptMode)===c,f=I(a,"subtitlePromptSlug"),m=j(a,"subtitlePrompt"),x=T(t,h?z(n,"segPromptSlug",y):z(a,"subtitlePromptSlug",y),y);x&&(h||f||!m)&&(h||(a.subtitlePromptSlug=x.slug),a.subtitlePrompt=x.systemPrompt);const A=I(a,"dictPromptSlug"),D=j(a,"dictPrompt")||j(a,"dictUserPrompt"),k=T(t,z(a,"dictPromptSlug",b),b);return!k||!A&&D||(a.dictPromptSlug=k.slug,a.dictPrompt=k.systemPrompt,a.dictUserPrompt=k.userPrompt),a}function te(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return(Array.isArray(e)?e:[]).map(e=>ee(e,t,n))}},4320(e,t,n){"use strict";function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;tr})},4346(e,t,n){"use strict";n.d(t,{A:()=>c});var r,o=n(4093),a=n(1263),i=n(2458);function s(e){return["START","ENDED","ERROR","TRUE1","TRUE2","TRUE3","FALSE1","FALSE2","FALSE3","FALSE4","NULL1","NULL2","NULL3","STRING_DEFAULT","STRING_AFTER_BACKSLASH","STRING_UNICODE_DIGIT_1","STRING_UNICODE_DIGIT_2","STRING_UNICODE_DIGIT_3","STRING_UNICODE_DIGIT_4","STRING_INCOMPLETE_CHAR","NUMBER_AFTER_INITIAL_MINUS","NUMBER_AFTER_INITIAL_ZERO","NUMBER_AFTER_INITIAL_NON_ZERO","NUMBER_AFTER_FULL_STOP","NUMBER_AFTER_DECIMAL","NUMBER_AFTER_E","NUMBER_AFTER_E_AND_SIGN","NUMBER_AFTER_E_AND_DIGIT","SEPARATOR","BOM_OR_START","BOM"][e]}!function(e){e[e.START=0]="START",e[e.ENDED=1]="ENDED",e[e.ERROR=2]="ERROR",e[e.TRUE1=3]="TRUE1",e[e.TRUE2=4]="TRUE2",e[e.TRUE3=5]="TRUE3",e[e.FALSE1=6]="FALSE1",e[e.FALSE2=7]="FALSE2",e[e.FALSE3=8]="FALSE3",e[e.FALSE4=9]="FALSE4",e[e.NULL1=10]="NULL1",e[e.NULL2=11]="NULL2",e[e.NULL3=12]="NULL3",e[e.STRING_DEFAULT=13]="STRING_DEFAULT",e[e.STRING_AFTER_BACKSLASH=14]="STRING_AFTER_BACKSLASH",e[e.STRING_UNICODE_DIGIT_1=15]="STRING_UNICODE_DIGIT_1",e[e.STRING_UNICODE_DIGIT_2=16]="STRING_UNICODE_DIGIT_2",e[e.STRING_UNICODE_DIGIT_3=17]="STRING_UNICODE_DIGIT_3",e[e.STRING_UNICODE_DIGIT_4=18]="STRING_UNICODE_DIGIT_4",e[e.STRING_INCOMPLETE_CHAR=19]="STRING_INCOMPLETE_CHAR",e[e.NUMBER_AFTER_INITIAL_MINUS=20]="NUMBER_AFTER_INITIAL_MINUS",e[e.NUMBER_AFTER_INITIAL_ZERO=21]="NUMBER_AFTER_INITIAL_ZERO",e[e.NUMBER_AFTER_INITIAL_NON_ZERO=22]="NUMBER_AFTER_INITIAL_NON_ZERO",e[e.NUMBER_AFTER_FULL_STOP=23]="NUMBER_AFTER_FULL_STOP",e[e.NUMBER_AFTER_DECIMAL=24]="NUMBER_AFTER_DECIMAL",e[e.NUMBER_AFTER_E=25]="NUMBER_AFTER_E",e[e.NUMBER_AFTER_E_AND_SIGN=26]="NUMBER_AFTER_E_AND_SIGN",e[e.NUMBER_AFTER_E_AND_DIGIT=27]="NUMBER_AFTER_E_AND_DIGIT",e[e.SEPARATOR=28]="SEPARATOR",e[e.BOM_OR_START=29]="BOM_OR_START",e[e.BOM=30]="BOM"}(r||(r={}));const l={stringBufferSize:0,numberBufferSize:0,separator:void 0,emitPartialTokens:!1};class u extends Error{constructor(e){super(e),Object.setPrototypeOf(this,u.prototype)}}class c{constructor(e){this.state=r.BOM_OR_START,this.bomIndex=0,this.separatorIndex=0,this.escapedCharsByteLength=0,this.bytes_remaining=0,this.bytes_in_sequence=0,this.char_split_buffer=new Uint8Array(4),this.encoder=new TextEncoder,this.offset=-1,e=Object.assign(Object.assign({},l),e),this.emitPartialTokens=!0===e.emitPartialTokens,this.bufferedString=e.stringBufferSize&&e.stringBufferSize>4?new a.x(e.stringBufferSize):new a.W,this.bufferedNumber=e.numberBufferSize&&e.numberBufferSize>0?new a.x(e.numberBufferSize):new a.W,this.separator=e.separator,this.separatorBytes=e.separator?this.encoder.encode(e.separator):void 0}get isEnded(){return this.state===r.ENDED}write(e){try{let n;if(e instanceof Uint8Array)n=e;else if("string"===typeof e)n=this.encoder.encode(e);else if(Array.isArray(e))n=Uint8Array.from(e);else{if(!ArrayBuffer.isView(e))throw new TypeError("Unexpected type. The `write` function only accepts Arrays, TypedArrays and Strings.");n=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}for(let t=0;t=o.$.DIGIT_ONE&&a<=o.$.DIGIT_NINE){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_INITIAL_NON_ZERO;continue}if(a===o.$.DIGIT_ZERO){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_INITIAL_ZERO;continue}if(a===o.$.HYPHEN_MINUS){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_INITIAL_MINUS;continue}break;case r.STRING_DEFAULT:if(a===o.$.QUOTATION_MARK){const e=this.bufferedString.toString();this.state=r.START,this.onToken({token:i.A.STRING,value:e,offset:this.offset}),this.offset+=this.escapedCharsByteLength+this.bufferedString.byteLength+1;continue}if(a===o.$.REVERSE_SOLIDUS){this.state=r.STRING_AFTER_BACKSLASH;continue}if(a>=128){if(this.bytes_in_sequence=a>=194&&a<=223?2:a<=239?3:4,this.bytes_in_sequence<=n.length-t){this.bufferedString.appendBuf(n,t,t+this.bytes_in_sequence),t+=this.bytes_in_sequence-1;continue}this.bytes_remaining=t+this.bytes_in_sequence-n.length,this.char_split_buffer.set(n.subarray(t)),t=n.length-1,this.state=r.STRING_INCOMPLETE_CHAR;continue}if(a>=o.$.SPACE){this.bufferedString.appendChar(a);continue}break;case r.STRING_INCOMPLETE_CHAR:this.char_split_buffer.set(n.subarray(t,t+this.bytes_remaining),this.bytes_in_sequence-this.bytes_remaining),this.bufferedString.appendBuf(this.char_split_buffer,0,this.bytes_in_sequence),t=this.bytes_remaining-1,this.state=r.STRING_DEFAULT;continue;case r.STRING_AFTER_BACKSLASH:const s=o.Q[a];if(s){this.bufferedString.appendChar(s),this.escapedCharsByteLength+=1,this.state=r.STRING_DEFAULT;continue}if(a===o.$.LATIN_SMALL_LETTER_U){this.unicode="",this.state=r.STRING_UNICODE_DIGIT_1;continue}break;case r.STRING_UNICODE_DIGIT_1:case r.STRING_UNICODE_DIGIT_2:case r.STRING_UNICODE_DIGIT_3:if(a>=o.$.DIGIT_ZERO&&a<=o.$.DIGIT_NINE||a>=o.$.LATIN_CAPITAL_LETTER_A&&a<=o.$.LATIN_CAPITAL_LETTER_F||a>=o.$.LATIN_SMALL_LETTER_A&&a<=o.$.LATIN_SMALL_LETTER_F){this.unicode+=String.fromCharCode(a),this.state+=1;continue}break;case r.STRING_UNICODE_DIGIT_4:if(a>=o.$.DIGIT_ZERO&&a<=o.$.DIGIT_NINE||a>=o.$.LATIN_CAPITAL_LETTER_A&&a<=o.$.LATIN_CAPITAL_LETTER_F||a>=o.$.LATIN_SMALL_LETTER_A&&a<=o.$.LATIN_SMALL_LETTER_F){const e=parseInt(this.unicode+String.fromCharCode(a),16);let t;if(void 0===this.highSurrogate){if(e>=55296&&e<=56319){this.highSurrogate=e,this.state=r.STRING_DEFAULT;continue}t=String.fromCharCode(e)}else t=e>=56320&&e<=57343?String.fromCharCode(this.highSurrogate,e):String.fromCharCode(this.highSurrogate),this.highSurrogate=void 0;const n=this.encoder.encode(t);this.bufferedString.appendBuf(n),this.escapedCharsByteLength+=6-n.byteLength,this.state=r.STRING_DEFAULT;continue}break;case r.NUMBER_AFTER_INITIAL_MINUS:if(a===o.$.DIGIT_ZERO){this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_INITIAL_ZERO;continue}if(a>=o.$.DIGIT_ONE&&a<=o.$.DIGIT_NINE){this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_INITIAL_NON_ZERO;continue}break;case r.NUMBER_AFTER_INITIAL_ZERO:if(a===o.$.FULL_STOP){this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_FULL_STOP;continue}if(a===o.$.LATIN_SMALL_LETTER_E||a===o.$.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_E;continue}t-=1,this.state=r.START,this.emitNumber();continue;case r.NUMBER_AFTER_INITIAL_NON_ZERO:if(a>=o.$.DIGIT_ZERO&&a<=o.$.DIGIT_NINE){this.bufferedNumber.appendChar(a);continue}if(a===o.$.FULL_STOP){this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_FULL_STOP;continue}if(a===o.$.LATIN_SMALL_LETTER_E||a===o.$.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_E;continue}t-=1,this.state=r.START,this.emitNumber();continue;case r.NUMBER_AFTER_FULL_STOP:if(a>=o.$.DIGIT_ZERO&&a<=o.$.DIGIT_NINE){this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_DECIMAL;continue}break;case r.NUMBER_AFTER_DECIMAL:if(a>=o.$.DIGIT_ZERO&&a<=o.$.DIGIT_NINE){this.bufferedNumber.appendChar(a);continue}if(a===o.$.LATIN_SMALL_LETTER_E||a===o.$.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_E;continue}t-=1,this.state=r.START,this.emitNumber();continue;case r.NUMBER_AFTER_E:if(a===o.$.PLUS_SIGN||a===o.$.HYPHEN_MINUS){this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_E_AND_SIGN;continue}case r.NUMBER_AFTER_E_AND_SIGN:if(a>=o.$.DIGIT_ZERO&&a<=o.$.DIGIT_NINE){this.bufferedNumber.appendChar(a),this.state=r.NUMBER_AFTER_E_AND_DIGIT;continue}break;case r.NUMBER_AFTER_E_AND_DIGIT:if(a>=o.$.DIGIT_ZERO&&a<=o.$.DIGIT_NINE){this.bufferedNumber.appendChar(a);continue}t-=1,this.state=r.START,this.emitNumber();continue;case r.TRUE1:if(a===o.$.LATIN_SMALL_LETTER_R){this.state=r.TRUE2;continue}break;case r.TRUE2:if(a===o.$.LATIN_SMALL_LETTER_U){this.state=r.TRUE3;continue}break;case r.TRUE3:if(a===o.$.LATIN_SMALL_LETTER_E){this.state=r.START,this.onToken({token:i.A.TRUE,value:!0,offset:this.offset}),this.offset+=3;continue}break;case r.FALSE1:if(a===o.$.LATIN_SMALL_LETTER_A){this.state=r.FALSE2;continue}break;case r.FALSE2:if(a===o.$.LATIN_SMALL_LETTER_L){this.state=r.FALSE3;continue}break;case r.FALSE3:if(a===o.$.LATIN_SMALL_LETTER_S){this.state=r.FALSE4;continue}break;case r.FALSE4:if(a===o.$.LATIN_SMALL_LETTER_E){this.state=r.START,this.onToken({token:i.A.FALSE,value:!1,offset:this.offset}),this.offset+=4;continue}break;case r.NULL1:if(a===o.$.LATIN_SMALL_LETTER_U){this.state=r.NULL2;continue}break;case r.NULL2:if(a===o.$.LATIN_SMALL_LETTER_L){this.state=r.NULL3;continue}break;case r.NULL3:if(a===o.$.LATIN_SMALL_LETTER_L){this.state=r.START,this.onToken({token:i.A.NULL,value:null,offset:this.offset}),this.offset+=3;continue}break;case r.SEPARATOR:if(this.separatorIndex+=1,!this.separatorBytes||a!==this.separatorBytes[this.separatorIndex])break;this.separatorIndex===this.separatorBytes.length-1&&(this.state=r.START,this.onToken({token:i.A.SEPARATOR,value:this.separator,offset:this.offset+this.separatorIndex}),this.separatorIndex=0);continue;case r.BOM:if(a===this.bom[this.bomIndex]){if(this.bomIndex===this.bom.length-1){this.state=r.START,this.bom=void 0,this.bomIndex=0;continue}this.bomIndex+=1;continue}break;case r.ENDED:if(a===o.$.SPACE||a===o.$.NEWLINE||a===o.$.CARRIAGE_RETURN||a===o.$.TAB)continue}throw new u('Unexpected "'.concat(String.fromCharCode(a),'" at position "').concat(t,'" in state ').concat(s(this.state)))}if(this.emitPartialTokens)switch(this.state){case r.TRUE1:case r.TRUE2:case r.TRUE3:this.onToken({token:i.A.TRUE,value:!0,offset:this.offset,partial:!0});break;case r.FALSE1:case r.FALSE2:case r.FALSE3:case r.FALSE4:this.onToken({token:i.A.FALSE,value:!1,offset:this.offset,partial:!0});break;case r.NULL1:case r.NULL2:case r.NULL3:this.onToken({token:i.A.NULL,value:null,offset:this.offset,partial:!0});break;case r.STRING_DEFAULT:{const e=this.bufferedString.toString();this.onToken({token:i.A.STRING,value:e,offset:this.offset,partial:!0});break}case r.NUMBER_AFTER_INITIAL_ZERO:case r.NUMBER_AFTER_INITIAL_NON_ZERO:case r.NUMBER_AFTER_DECIMAL:case r.NUMBER_AFTER_E_AND_DIGIT:try{this.onToken({token:i.A.NUMBER,value:this.parseNumber(this.bufferedNumber.toString()),offset:this.offset,partial:!0})}catch(t){}}}catch(n){this.error(n)}}emitNumber(){this.onToken({token:i.A.NUMBER,value:this.parseNumber(this.bufferedNumber.toString()),offset:this.offset}),this.offset+=this.bufferedNumber.byteLength-1}parseNumber(e){return Number(e)}error(e){this.state!==r.ENDED&&(this.state=r.ERROR),this.onError(e)}end(){switch(this.state){case r.NUMBER_AFTER_INITIAL_ZERO:case r.NUMBER_AFTER_INITIAL_NON_ZERO:case r.NUMBER_AFTER_DECIMAL:case r.NUMBER_AFTER_E_AND_DIGIT:this.state=r.ENDED,this.emitNumber(),this.onEnd();break;case r.BOM_OR_START:case r.START:case r.ERROR:case r.SEPARATOR:this.state=r.ENDED,this.onEnd();break;default:this.error(new u("Tokenizer ended in the middle of a token (state: ".concat(s(this.state),"). Either not all the data was received or the data was invalid.")))}}onToken(e){throw new u('Can\'t emit tokens before the "onToken" callback has been set up.')}onError(e){throw e}onEnd(){}}},4399(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M7.41 8.59 12 13.17l4.59-4.58L18 10l-6 6-6-6z"}),"KeyboardArrowDown")},4440(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r.A,private_createBreakpoints:()=>o.A,unstable_applyStyles:()=>a.A});var r=n(2979),o=n(9428),a=n(1006)},4514(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M3 5h2V3c-1.1 0-2 .9-2 2m0 8h2v-2H3zm4 8h2v-2H7zM3 9h2V7H3zm10-6h-2v2h2zm6 0v2h2c0-1.1-.9-2-2-2M5 21v-2H3c0 1.1.9 2 2 2m-2-4h2v-2H3zM9 3H7v2h2zm2 18h2v-2h-2zm8-8h2v-2h-2zm0 8c1.1 0 2-.9 2-2h-2zm0-12h2V7h-2zm0 8h2v-2h-2zm-4 4h2v-2h-2zm0-16h2V3h-2zM7 17h10V7H7zm2-8h6v6H9z"}),"SelectAll")},4539(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6920);const o=e=>(0,r.A)(e)&&"classes"!==e},4651(e,t,n){"use strict";e.exports=n(1508)},4654(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M9 16h6v-6h4l-7-7-7 7h4zm-4 2h14v2H5z"}),"FileUpload")},4762(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M3 9v6h4l5 5V4L7 9zm13.5 3c0-1.77-1.02-3.29-2.5-4.03v8.05c1.48-.73 2.5-2.25 2.5-4.02M14 3.23v2.06c2.89.86 5 3.54 5 6.71s-2.11 5.85-5 6.71v2.06c4.01-.91 7-4.49 7-8.77s-2.99-7.86-7-8.77"}),"VolumeUp")},4774(e,t,n){"use strict";var r;n.d(t,{i:()=>s,s:()=>i});var o=n(8661),a=!!(r||(r=n.t(o,2))).useInsertionEffect&&(r||(r=n.t(o,2))).useInsertionEffect,i=a||function(e){return e()},s=a||o.useLayoutEffect},4825(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"m14 12-2 2-2-2 2-2zm-2-6 2.12 2.12 2.5-2.5L12 1 7.38 5.62l2.5 2.5zm-6 6 2.12-2.12-2.5-2.5L1 12l4.62 4.62 2.5-2.5zm12 0-2.12 2.12 2.5 2.5L23 12l-4.62-4.62-2.5 2.5zm-6 6-2.12-2.12-2.5 2.5L12 23l4.62-4.62-2.5-2.5z"}),"Api")},4837(e){e.exports=function(e){return null!=e&&null!=e.constructor&&"function"===typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}},4849(e,t,n){"use strict";function r(){for(var e=arguments.length,t=new Array(e),n=0;nnull==t?e:function(){for(var n=arguments.length,r=new Array(n),o=0;o{})}n.d(t,{A:()=>r})},4858(e){function t(){return e.exports=t=Object.assign?Object.assign.bind():function(e){for(var t=1;ty,Az:()=>v,HP:()=>d,Sn:()=>p,Sv:()=>m,Tg:()=>b,tN:()=>h,yb:()=>f});var r=n(4107),o=n(1442),a=n(1152),i=n(847),s=n(7877),l=n(1825),u=n(1270),c=n(9385);const d=()=>{let e="";return function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return function*(){e+=t,e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n");let n=e.indexOf("\n\n");for(;-1!==n;){const t=e.slice(0,n);e=e.slice(n+2);const r=[];for(const e of t.split("\n")){if(e.startsWith(":"))continue;if(!e.startsWith("data:"))continue;let t=e.slice(5);t.startsWith(" ")&&(t=t.slice(1)),r.push(t)}if(r.length){const e=r.join("\n");"[DONE]"!==e.trim()&&(yield e)}n=e.indexOf("\n\n")}}()}},p=()=>{const e=[];let t=null,n=!1,r=null;return{push:n=>{e.push(n),t&&(t(),t=null)},finish:()=>{n=!0,t&&(t(),t=null)},error:e=>{r=e,n=!0,t&&(t(),t=null)},iterate:()=>(0,a.A)(function*(){const a=e=>{t=e};for(;!n||e.length>0;)e.length>0?yield e.shift():n||(yield(0,o.A)(new Promise(a)));if(r)throw r})()}};function h(e,t){var n,r,o;switch(t){case s.C3L:case s.KBl:case s.rUY:case s.FsV:case s.F16:case s.EjO:case s.NQu:case s.cbe:case s.kYm:case s.dGW:case s.mmp:case s.edy:case s.lbn:return(null===(n=e.choices)||void 0===n||null===(r=n[0])||void 0===r||null===(o=r.delta)||void 0===o?void 0:o.content)||"";case s.lLy:{var a,i,l,u,c;if("error"===e.event_type){var d;const t=new Error((null===(d=e.error)||void 0===d?void 0:d.message)||"Gemini interaction stream failed");throw t.isAIStreamTerminal=!0,t}if("interaction.status_update"===e.event_type&&["failed","cancelled","incomplete","budget_exceeded"].includes(e.status)){const t=new Error("Gemini interaction stream ended with status: ".concat(e.status));throw t.isAIStreamTerminal=!0,t}if(e.event_type)return"step.delta"===e.event_type&&"text"===(null===(c=e.delta)||void 0===c?void 0:c.type)&&e.delta.text||"";const t=null===(a=e.candidates)||void 0===a||null===(i=a[0])||void 0===i||null===(l=i.content)||void 0===l?void 0:l.parts;return(null===(u=Array.isArray(t)?t.find(e=>!e.thought):void 0)||void 0===u?void 0:u.text)||""}case s.EsI:var p;return"content_block_delta"===e.type&&(null===(p=e.delta)||void 0===p?void 0:p.text)||"";default:return""}}function*f(e,t){if(!e)return;const n=(0,l.Qw)(e);if(n.length>0)for(const{id:r,translation:o}of n)t.has(r)||(t.add(r),yield{id:r,translation:o});else for(const{id:r,translation:o}of(0,l.Xq)(e,{requireCompleteLine:!0}))t.has(r)||(t.add(r),yield{id:r,translation:o})}function m(){const e=[],t=new i.oj({paths:["$.translations.*","$.*"],keepStack:!1});return t.onValue=t=>{let{value:n}=t;const r=(0,l.ek)(n,NaN);r&&e.push(r)},t.onError=()=>{},{*write(n){try{t.write(n)}catch(r){}for(;e.length>0;)yield e.shift()},end(){try{t.end()}catch(e){}}}}const g=function(e){var t,n,o,a,i,s,l,u;let c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],d=arguments.length>2?arguments[2]:void 0;const p=Number(null!==(t=null===e||void 0===e?void 0:e.s)&&void 0!==t?t:null===e||void 0===e?void 0:e.start_id),h=Number(null!==(n=null===e||void 0===e?void 0:e.e)&&void 0!==n?n:null===e||void 0===e?void 0:e.end_id);if(!Number.isInteger(p)||!Number.isInteger(h)||0===c.length)return null;const f=Math.max(0,Math.min(p,c.length-1)),m=Math.max(f,Math.min(h,c.length-1)),g=String(null!==(o=null!==(a=e.o)&&void 0!==a?a:e.original)&&void 0!==o?o:""),v=null===d||void 0===d?void 0:d.realign(p,h,g);return(0,r.A)({start:c[null!==(i=null===v||void 0===v?void 0:v.startIdx)&&void 0!==i?i:f].start,end:c[null!==(s=null===v||void 0===v?void 0:v.endIdx)&&void 0!==s?s:m].end,text:g,translation:String(null!==(l=null!==(u=e.t)&&void 0!==u?u:e.translation)&&void 0!==l?l:""),_si:p,_ei:h},v&&{_alignedSi:v.startIdx,_alignedEi:v.endIdx})};function v(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{fromLang:t="auto"}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n="",r=!1,o=0;const a=new Set,i=(0,u.n)(e);let s=null,l=0,d=!1;const p=()=>{if(r)return;const e=n.search(/[[{]/);-1!==e?(n=n.slice(e),r=!0,o=0):n=n.slice(-20)},h=()=>{const e=[];let t=0,r=-1,a=!1,i=!1,s=-1;for(let l=o;l{const r=[];for(const u of n)try{if(d)break;const n=JSON.parse(u),o=(0,c.Tt)(n)?"index-v1":"boundary";if(s||(s=o),s!==o){d=!0;break}const p="boundary"===s?(0,c.Ir)(n,e,l,t):g(n,e,i);if(!p){if("boundary"===s){d=!0;break}continue}"boundary"===s&&(l=p._ei+1);const h="".concat(p._si,":").concat(p._ei);if(a.has(h))continue;a.add(h),r.push(p)}catch(o){}return r};return{write(){return n+=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",p(),r?f(h()):[]},end:()=>(p(),r?f(h()):[])}}function y(e){const t=e.trim(),n=t.search(/[{[]/),r=t.search(/<(t|item|seg)\s/i),o=t.search(/^\d+\s*\|/m);if(-1===n&&-1===r&&-1===o)return{isJson:!1,detected:!1};const a=[{type:"json",pos:n},{type:"xml",pos:r},{type:"line",pos:o}].filter(e=>-1!==e.pos);if(0===a.length)return{isJson:!1,detected:!1};return{isJson:"json"===a.reduce((e,t)=>e.pos{const t=e.trim();return-1!==t.search(/[{[]/)?"json":-1!==t.search(/<(t|item|seg)\s/i)?"xml":-1!==t.search(/^\d+\s*\|/m)?"line":null})(t),!e))return[];switch(e){case"xml":return(e=>{const t=[],n=/<(t|item|seg)\s+id="(\d+)"(?:\s[^>]*)?>([\s\S]*?)<\/\1>/gi;let r;for(;null!==(r=n.exec(e));){const e=parseInt(r[2],10);t.push({id:e,partialText:r[3],isComplete:!0})}let o=e;o=o.replace(/<(t|item|seg)\s+id="\d+"(?:\s[^>]*)?>[\s\S]*?<\/\1>/gi,"");const a=o.match(/<(t|item|seg)\s+id="(\d+)"(?:\s[^>]*)?>([^]*)$/);if(a){const e=parseInt(a[2],10),n=a[3].replace(/<\/[^>]*$/,"");t.push({id:e,partialText:n,isComplete:!1})}return t})(t);case"line":return(e=>{const t=[],n=e.split("\n");for(let r=0;r/gi,"\n"),i=re,getBuffer:()=>t}}},5089(e,t,n){"use strict";e.exports=n(7811)},5227(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(6175).A},5261(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M10.85 12.65h2.3L12 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zM14.3 16l-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9z"}),"BrightnessAuto")},5323(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M20 2H8c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2m-7.53 12L9 10.5l1.4-1.41 2.07 2.08L17.6 6 19 7.41zM4 6H2v14c0 1.1.9 2 2 2h14v-2H4z"}),"LibraryAddCheck")},5326(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M12 3c-4.97 0-9 4.03-9 9s4.03 9 9 9 9-4.03 9-9c0-.46-.04-.92-.1-1.36-.98 1.37-2.58 2.26-4.4 2.26-2.98 0-5.4-2.42-5.4-5.4 0-1.81.89-3.42 2.26-4.4-.44-.06-.9-.1-1.36-.1"}),"DarkMode")},5421(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(4089);function o(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Mui";const o={};return t.forEach(t=>{o[t]=(0,r.Ay)(e,t,n)}),o}},5449(e,t,n){"use strict";n.d(t,{A:()=>oe});var r=function(){function e(e){var t=this;this._insertTag=function(e){var n;n=0===t.tags.length?t.insertionPoint?t.insertionPoint.nextSibling:t.prepend?t.container.firstChild:t.before:t.tags[t.tags.length-1].nextSibling,t.container.insertBefore(e,n),t.tags.push(e)},this.isSpeedy=void 0===e.speedy||e.speedy,this.tags=[],this.ctr=0,this.nonce=e.nonce,this.key=e.key,this.container=e.container,this.prepend=e.prepend,this.insertionPoint=e.insertionPoint,this.before=null}var t=e.prototype;return t.hydrate=function(e){e.forEach(this._insertTag)},t.insert=function(e){this.ctr%(this.isSpeedy?65e3:1)===0&&this._insertTag(function(e){var t=document.createElement("style");return t.setAttribute("data-emotion",e.key),void 0!==e.nonce&&t.setAttribute("nonce",e.nonce),t.appendChild(document.createTextNode("")),t.setAttribute("data-s",""),t}(this));var t=this.tags[this.tags.length-1];if(this.isSpeedy){var n=function(e){if(e.sheet)return e.sheet;for(var t=0;t0?c(x,--y):0,g--,10===b&&(g=1,m--),b}function w(){return b=y2||C(b)>3?"":" "}function I(e,t){for(;--t&&w()&&!(b<48||b>102||b>57&&b<65||b>70&&b<97););return _(e,E()+(t<6&&32==S()&&32==w()))}function L(e){for(;w();)switch(b){case e:return y;case 34:case 39:34!==e&&39!==e&&L(b);break;case 40:41===e&&L(e);break;case 92:w()}return y}function P(e,t){for(;w()&&e+b!==57&&(e+b!==84||47!==S()););return"/*"+_(t,y-1)+"*"+a(47===e?e:w())}function R(e){for(;!C(S());)w();return _(e,y)}var N="-ms-",O="-moz-",B="-webkit-",M="comm",W="rule",U="decl",V="@keyframes";function H(e,t){for(var n="",r=h(e),o=0;o0&&p(O)-v&&f(b>32?X(O+";",r,n,v-1):X(l(O," ","")+";",r,n,v-2),h);break;case 59:O+=";";default:if(f(N=$(O,t,n,m,g,o,d,F,T=[],L=[],v),i),123===C)if(0===g)K(O,t,N,N,T,i,v,d,L);else switch(99===y&&110===c(O,3)?100:y){case 100:case 108:case 109:case 115:K(e,N,N,r&&f($(e,N,N,0,0,o,d,F,o,T=[],v),L),o,L,v,d,r?T:L);break;default:K(O,N,N,N,[""],L,0,d,L)}}m=g=b=0,A=_=1,F=O="",v=s;break;case 58:v=1+p(O),b=x;default:if(A<1)if(123==C)--A;else if(125==C&&0==A++&&125==k())continue;switch(O+=a(C),C*A){case 38:_=g>0?1:(O+="\f",-1);break;case 44:d[m++]=(p(O)-1)*_,_=1;break;case 64:45===S()&&(O+=j(w())),y=S(),g=v=p(F=O+=R(E())),C++;break;case 45:45===x&&2==p(O)&&(A=0)}}return i}function $(e,t,n,r,a,i,u,c,p,f,m){for(var g=a-1,v=0===a?i:[""],y=h(v),b=0,x=0,D=0;b0?v[k]+" "+w:l(w,/&\f/g,v[k])))&&(p[D++]=S);return A(e,t,n,0===a?W:c,p,f,m)}function Y(e,t,n){return A(e,t,n,M,a(b),d(e,2,-2),0)}function X(e,t,n,r){return A(e,t,n,U,d(e,0,r),d(e,r+1,-1),r)}var Q=function(e,t,n){for(var r=0,o=0;r=o,o=S(),38===r&&12===o&&(t[n]=1),!C(o);)w();return _(e,y)},J=function(e,t){return T(function(e,t){var n=-1,r=44;do{switch(C(r)){case 0:38===r&&12===S()&&(t[n]=1),e[n]+=Q(y-1,t,n);break;case 2:e[n]+=j(r);break;case 4:if(44===r){e[++n]=58===S()?"&\f":"",t[n]=e[n].length;break}default:e[n]+=a(r)}}while(r=w());return e}(F(e),t))},Z=new WeakMap,ee=function(e){if("rule"===e.type&&e.parent&&!(e.length<1)){for(var t=e.value,n=e.parent,r=e.column===n.column&&e.line===n.line;"rule"!==n.type;)if(!(n=n.parent))return;if((1!==e.props.length||58===t.charCodeAt(0)||Z.get(n))&&!r){Z.set(e,!0);for(var o=[],a=J(t,o),i=n.props,s=0,l=0;s6)switch(c(e,t+1)){case 109:if(45!==c(e,t+4))break;case 102:return l(e,/(.+:)(.+)-([^]+)/,"$1"+B+"$2-$3$1"+O+(108==c(e,t+3)?"$3":"$2-$3"))+e;case 115:return~u(e,"stretch")?ne(l(e,"stretch","fill-available"),t)+e:e}break;case 4949:if(115!==c(e,t+1))break;case 6444:switch(c(e,p(e)-3-(~u(e,"!important")&&10))){case 107:return l(e,":",":"+B)+e;case 101:return l(e,/(.+:)([^;!]+)(;|!.+)?/,"$1"+B+(45===c(e,14)?"inline-":"")+"box$3$1"+B+"$2$3$1"+N+"$2box$3")+e}break;case 5936:switch(c(e,t+11)){case 114:return B+e+N+l(e,/[svh]\w+-[tblr]{2}/,"tb")+e;case 108:return B+e+N+l(e,/[svh]\w+-[tblr]{2}/,"tb-rl")+e;case 45:return B+e+N+l(e,/[svh]\w+-[tblr]{2}/,"lr")+e}return B+e+N+e+e}return e}var re=[function(e,t,n,r){if(e.length>-1&&!e.return)switch(e.type){case U:e.return=ne(e.value,e.length);break;case V:return H([D(e,{value:l(e.value,"@","@"+B)})],r);case W:if(e.length)return function(e,t){return e.map(t).join("")}(e.props,function(t){switch(function(e,t){return(e=t.exec(e))?e[0]:e}(t,/(::plac\w+|:read-\w+)/)){case":read-only":case":read-write":return H([D(e,{props:[l(t,/:(read-\w+)/,":-moz-$1")]})],r);case"::placeholder":return H([D(e,{props:[l(t,/:(plac\w+)/,":"+B+"input-$1")]}),D(e,{props:[l(t,/:(plac\w+)/,":-moz-$1")]}),D(e,{props:[l(t,/:(plac\w+)/,N+"input-$1")]})],r)}return""})}}],oe=function(e){var t=e.key;if("css"===t){var n=document.querySelectorAll("style[data-emotion]:not([data-s])");Array.prototype.forEach.call(n,function(e){-1!==e.getAttribute("data-emotion").indexOf(" ")&&(document.head.appendChild(e),e.setAttribute("data-s",""))})}var o,a,i=e.stylisPlugins||re,s={},l=[];o=e.container||document.head,Array.prototype.forEach.call(document.querySelectorAll('style[data-emotion^="'+t+' "]'),function(e){for(var t=e.getAttribute("data-emotion").split(" "),n=1;nr});const r=n(6267).A},5482(e,t,n){"use strict";function r(e,t){this.v=e,this.k=t}n.d(t,{A:()=>r})},5493(e,t,n){"use strict";n.d(t,{$1:()=>Ce,$K:()=>o,$Q:()=>Ae,An:()=>Y,Bi:()=>Z,C3:()=>ee,EE:()=>Fe,Ej:()=>H,Es:()=>re,F$:()=>F,F1:()=>V,FS:()=>B,Fs:()=>U,Fx:()=>fe,G8:()=>de,GD:()=>_,GY:()=>S,HH:()=>ce,Im:()=>he,JI:()=>L,JW:()=>c,KB:()=>M,KK:()=>E,L3:()=>f,NQ:()=>G,O0:()=>I,P9:()=>ge,PP:()=>a,Qf:()=>p,S6:()=>w,SQ:()=>j,TF:()=>ue,U$:()=>Pe,UF:()=>De,WT:()=>u,Wd:()=>m,Ww:()=>ze,X6:()=>g,Ym:()=>y,Z2:()=>xe,_T:()=>Be,ad:()=>je,b9:()=>k,bC:()=>R,bN:()=>oe,bq:()=>s,c0:()=>$,cb:()=>q,dG:()=>ie,dy:()=>C,e7:()=>K,eA:()=>we,ed:()=>ae,fD:()=>h,fF:()=>J,fk:()=>Le,fq:()=>le,h8:()=>P,i8:()=>ve,iV:()=>Ue,im:()=>Ie,jg:()=>l,jy:()=>i,k0:()=>Ee,kX:()=>O,kY:()=>ne,lL:()=>te,lb:()=>X,lo:()=>Te,mS:()=>_e,mm:()=>se,n4:()=>Me,pp:()=>me,q7:()=>T,rU:()=>W,s1:()=>z,sN:()=>pe,sn:()=>x,to:()=>ye,ul:()=>N,vH:()=>be,w6:()=>d,xN:()=>Q,xf:()=>D,xh:()=>A,yD:()=>b,zJ:()=>v});var r=n(4107);const o=30,a=10,i=100,s=400,l=20,u=1e4,c=1,d=3,p="{{from}}",h="{{to}}",f="{{fromLang}}",m="{{toLang}}",g="{{text}}",v="{{tone}}",y="{{title}}",b="{{description}}",x="{{summary}}",A="{{context}}",D="{{key}}",k="{{model}}",w="{{glossary}}",S="https://generativelanguage.googleapis.com/v1beta/models/".concat(k,":generateContent"),E="https://generativelanguage.googleapis.com/v1/interactions",_="Bing",C="Youdao",F=[_,C],T=new Set(F),j="Baidu",z="Youdao",I=[j,z],L=new Set(I),P="BuiltinAI",R="Google",N="Google2",O="Microsoft",B="AzureAI",M="DeepSeek",W="OpenCodeGo",U="SiliconFlow",V="XiaomiMimo",H="AliyunBailian",G="Cerebras",q="Zai",K="DeepL",$="DeepLX",Y="DeepLFree",X="ePhoneAI",Q="Baidu",J="Tencent",Z="Volcengine",ee="OpenAI",te="Gemini",ne="Gemini2",re="Claude",oe="CloudflareAI",ae="Ollama",ie="OpenRouter",se="OrcaRouter",le="Custom",ue=[P,R,N,B,M,W,U,V,H,G,q,J,Z,K,Y,$,X,ee,te,ne,re,oe,ae,ie,se,le],ce=[P,R,O,Q,J],de=new Set(ce),pe={builtin:new Set(ue),machine:new Set([O,Y,Q,J,Z]),ai:new Set([X,ee,M,W,U,V,H,G,q,te,ne,re,ae,ie,se,le]),mulkeys:new Set([B,M,W,U,V,H,G,q,K,ee,te,ne,re,oe,ae,ie,se,X,le]),batch:new Set([B,M,W,U,V,H,G,q,N,O,J,K,ee,te,ne,re,ae,ie,se,X,le]),context:new Set([M,W,U,V,H,G,q,ee,te,ne,re,ae,ie,se,X,le]),stream:new Set([M,W,U,V,H,G,q,ee,te,ne,re,ae,ie,se,X]),sponsors:new Set([X]),darkIcon:new Set([U,V,X,q,K,Y,$,ee,ae,ie])},he={[M]:{type:"deepseek",efforts:[{value:"max",label:"Max"},{value:"high",label:"High"}]},[W]:{type:"deepseek",efforts:[{value:"max",label:"Max"},{value:"high",label:"High"}]},[U]:{type:"siliconflow",efforts:[{value:"max",label:"Max (32768)"},{value:"high",label:"High (16384)"},{value:"medium",label:"Medium (8192)"},{value:"low",label:"Low (4096)"},{value:"minimal",label:"Minimal (2048)"}]},[V]:{type:"deepseek",efforts:null},[H]:{type:"aliyunbailian",efforts:null},[G]:{type:"cerebras",efforts:[{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"}]},[q]:{type:"deepseek",efforts:null},[X]:{type:"openai",efforts:[{value:"xhigh",label:"X-High"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"},{value:"minimal",label:"Minimal"}]},[ee]:{type:"openai",efforts:[{value:"xhigh",label:"X-High"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"},{value:"minimal",label:"Minimal"}]},[te]:{type:"gemini",efforts:[{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"},{value:"minimal",label:"Minimal"}]},[ne]:{type:"openai",efforts:[{value:"xhigh",label:"X-High"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"},{value:"minimal",label:"Minimal"}]},[re]:{type:"claude",disableSupported:!1,efforts:[{value:"max",label:"Max"},{value:"xhigh",label:"X-High"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"}]},[ae]:{type:"cerebras",efforts:[{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"}]},[ie]:{type:"openrouter",disableSupported:!1,efforts:[{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"},{value:"minimal",label:"Minimal"}]},[se]:{type:"openai",efforts:[{value:"xhigh",label:"X-High"},{value:"high",label:"High"},{value:"medium",label:"Medium"},{value:"low",label:"Low"}]}},fe=["formal","casual","neutral","technical","marketing","Literary","academic","legal","literal","idiomatic","transcreation","machine-like","concise"],me=["{ }","{{ }}","[ ]","[[ ]]"],ge=["i","a","b","x","span"],ve=[["en","English - English"],["zh-CN","Simplified Chinese - \u7b80\u4f53\u4e2d\u6587"],["zh-TW","Traditional Chinese - \u7e41\u9ad4\u4e2d\u6587"],["ar","Arabic - \u0627\u0644\u0639\u0631\u0628\u064a\u0629"],["bg","Bulgarian - \u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"],["ca","Catalan - Catal\xe0"],["hr","Croatian - Hrvatski"],["cs","Czech - \u010ce\u0161tina"],["da","Danish - Dansk"],["nl","Dutch - Nederlands"],["fa","Persian - \u0641\u0627\u0631\u0633\u06cc"],["fi","Finnish - Suomi"],["fr","French - Fran\xe7ais"],["de","German - Deutsch"],["el","Greek - \u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"],["hi","Hindi - \u0939\u093f\u0928\u094d\u0926\u0940"],["hu","Hungarian - Magyar"],["id","Indonesian - Indonesia"],["it","Italian - Italiano"],["ja","Japanese - \u65e5\u672c\u8a9e"],["ko","Korean - \ud55c\uad6d\uc5b4"],["ms","Malay - Melayu"],["mt","Maltese - Malti"],["nb","Norwegian - Norsk Bokm\xe5l"],["pl","Polish - Polski"],["pt","Portuguese - Portugu\xeas"],["ro","Romanian - Rom\xe2n\u0103"],["ru","Russian - \u0420\u0443\u0441\u0441\u043a\u0438\u0439"],["sk","Slovak - Sloven\u010dina"],["sl","Slovenian - Sloven\u0161\u010dina"],["es","Spanish - Espa\xf1ol"],["sv","Swedish - Svenska"],["ta","Tamil - \u0ba4\u0bae\u0bbf\u0bb4\u0bcd"],["te","Telugu - \u0c24\u0c46\u0c32\u0c41\u0c17\u0c41"],["th","Thai - \u0e44\u0e17\u0e22"],["tr","Turkish - T\xfcrk\xe7e"],["uk","Ukrainian - \u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"],["vi","Vietnamese - Ti\u1ebfng Vi\u1ec7t"]],ye=ve.map(e=>{let[t]=e;return t}),be=[["auto","AutoDetect - AutoDetect"],...ve],xe=new Map(ve),Ae=ve.map(e=>{let[t,n]=e;return[t,n.split(" - ").reverse().join(" - ")]}),De=be.map(e=>{let[t,n]=e;return[t,n.split(" - ").reverse().join(" - ")]}),ke=new Map(be.map(e=>{let[t,n]=e;return[t,n.split(" - ")[0]]})),we=new Map(be.map(e=>{let[t]=e;return[t,t]})),Se=new Map(be.map(e=>{let[t]=e;return[t,t.toUpperCase()]})),Ee={[P]:new Map([...we,["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]]),[R]:we,[N]:we,[O]:new Map([...we,["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]]),[B]:new Map([...we,["auto",""],["zh-CN","zh-Hans"],["zh-TW","zh-Hant"]]),[K]:new Map([...Se,["auto",""],["zh-CN","ZH"],["zh-TW","ZH"]]),[Y]:new Map([...Se,["auto","auto"],["zh-CN","ZH"],["zh-TW","ZH"]]),[$]:new Map([...Se,["auto","auto"],["zh-CN","ZH"],["zh-TW","ZH"]]),[M]:ke,[W]:ke,[U]:ke,[V]:ke,[H]:ke,[G]:ke,[q]:ke,[Z]:new Map([...we,["auto","auto"],["zh-CN","zh"],["zh-TW","zh-Hant"]]),[Q]:new Map([...we,["zh-CN","zh"],["zh-TW","cht"],["ar","ara"],["bg","bul"],["ca","cat"],["hr","hrv"],["da","dan"],["fi","fin"],["fr","fra"],["hi","mai"],["ja","jp"],["ko","kor"],["ms","may"],["mt","mlt"],["nb","nor"],["ro","rom"],["ru","ru"],["sl","slo"],["es","spa"],["sv","swe"],["ta","tam"],["te","tel"],["uk","ukr"],["vi","vie"]]),[J]:new Map([["auto","auto"],["zh-CN","zh"],["zh-TW","zh"],["en","en"],["ar","ar"],["de","de"],["ru","ru"],["fr","fr"],["fi","fil"],["ko","ko"],["ms","ms"],["pt","pt"],["ja","ja"],["th","th"],["tr","tr"],["es","es"],["it","it"],["hi","hi"],["id","id"],["vi","vi"]]),[X]:ke,[ee]:ke,[te]:ke,[ne]:ke,[re]:ke,[ae]:ke,[ie]:ke,[se]:ke,[oe]:new Map([...we,["auto","en"],["zh-CN","zh"],["zh-TW","zh"]]),[le]:ke},_e={};Object.entries(Ee).forEach(e=>{let[t,n]=e;_e[t]=(e=>new Map(Array.from(e.entries()).map(e=>{let[t,n]=e;return""===n?["auto","auto"]:"zh"===n||"ZH"===n?[n,"zh-CN"]:[n,t]})))(n)});const Ce="You are a professional, authentic machine translation engine.",Fe="# Context\nTitle: ".concat(y,"\nDescription: ").concat(b,"\nSummary: ").concat(x,"\nTone: ").concat(v,"\n\n# Glossary:\n").concat(w,"\n\n# Task\nTranslate the Source Text below to ").concat(h,".\n1. Use the Context to ensure accuracy.\n2. Adapt the wording to match the specified Tone.\n3. Output ONLY the translated text. No markdown, no explanations.\n\nSource Text: ").concat(g,"\n\nTranslated Text:"),Te='Act as a translation API. Output a single raw JSON object only. No extra text or fences.\n\nInput:\n{"targetLanguage":"","title":"","description":"","summary":"","segments":[{"id":1,"text":"..."}],"glossary":{"sourceTerm":"targetTerm"},"tone":""}\n\nOutput:\n{"translations":[{"id":1,"text":"...","sourceLanguage":""}]}\n\nRules:\n1. Use title/description for context only; do not output them.\n2. Keep id, order, and count of segments.\n3. Preserve whitespace, HTML entities, and all HTML-like tags (e.g., , ). Translate inner text only.\n4. Highest priority: Follow \'glossary\'. Use value for translation; if value is "", keep the key.\n5. Do not translate: content in ,
, text enclosed in backticks, or placeholders like {1}, {{1}}, [1], [[1]].\n6.  Apply the specified tone to the translation.\n7.  Detect sourceLanguage for each segment.\n8.  Return empty or unchanged inputs as is.\n\nExample:\nInput: {"targetLanguage":"zh-CN","segments":[{"id":1,"text":"A React component."}],"glossary":{"component":"\u7ec4\u4ef6","React":""}}\nOutput: {"translations":[{"id":1,"text":"\u4e00\u4e2aReact\u7ec4\u4ef6","sourceLanguage":"en"}]}\n\nFail-safe: On any error, return {"translations":[]}.',je='Act as a translation API. Output raw XML-like format only. No Markdown fences (xml). No conversational filler.\n\nInput:\n{"targetLanguage":"","title":"","description":"","summary":"","segments":[{"id":1,"text":"..."}],"glossary":{"sourceTerm":"targetTerm"},"tone":""}\n\nOutput Format:\n\n    Translated text content...\n    Translated text content...\n\n\nRules:\n1.  **Strict Format**: Output ONLY the  element and its children. Do not include "xml" version declarations or markdown code blocks.\n2.  **Structure**: Maintain the exact "id" from the input in the "id" attribute. Detect the source language for the "sourceLanguage" attribute.\n3.  **HTML & Whitespace**: Preserve all HTML tags (e.g., , , 
) and whitespace exactly as they appear in the structure. Only translate the text content inside them.\n4. **Glossary**: Highest priority. Use the glossary value for translation. If the value is "", keep the source term as is.\n5. **Do Not Translate**: Content inside ,
, text in backticks ("code"), and placeholders like {1}, {{1}}, [1], [[1]].\n6.  **Context**: Use the "title" and "description" fields to understand the context for better translation accuracy, but do not output them.\n7.  **Tone**: Apply the specified "tone" (formal/casual).\n\nExample:\nInput:\n{"targetLanguage":"zh-CN","segments":[{"id":0,"text":"Hello World!"}],"glossary":{"World":"\u4e16\u754c"},"tone":"formal"}\n\nOutput:\n\n    \u4f60\u597d \u4e16\u754c\uff01\n',ze='Act as a translation API. Output raw text lines in "ID | Text" format. No Markdown. No conversational filler.\n\nInput:\n{"targetLanguage":"","title":"","description":"","summary":"","segments":[{"id":1,"text":"..."}],"glossary":{"sourceTerm":"targetTerm"},"tone":""}\n\nOutput Format:\n | \n | \n...\n\nRules:\n1.  **Strict Format**: Output exactly one line per segment using the format: "{id} | {translated_text}".\n2.  **ID Mapping**: You MUST copy the exact "id" from the input segment to the output line.\n3.  **Newline Handling**: If the translated text contains a newline, replace it with the HTML tag "
" to ensure it stays on a single line.\n4. **Separator**: Use the pipe symbol " | " strictly to separate the ID and the text.\n5. **Context**: Use title/description for context only; do not output them.\n6. **HTML/Tags**: Preserve whitespace, HTML entities, and all HTML-like tags (e.g., , ). Translate inner text only.\n7. **Glossary**: Highest priority. Follow \'glossary\'. Use value for translation; if value is "", keep the key.\n8. **Do Not Translate**: content in ,
, text enclosed in backticks, or placeholders like {1}, {{1}}, [1].\n9.  **Tone**: Apply the specified tone.\n\nExample:\nInput: {"targetLanguage":"zh-CN","segments":[{"id":0,"text":"Hello."},{"id":1,"text":"Line 1\nLine 2"}],"glossary":{}}\nOutput:\n0 | \u4f60\u597d\u3002\n1 | \u7b2c\u4e00\u884c
\u7b2c\u4e8c\u884c\n\nFail-safe: On error, return "{id} | {original_text}" line by line.',Ie="# Role\n\u4f60\u662f\u4e00\u4f4d\u7cbe\u901a\u5bf9\u6bd4\u8bed\u8a00\u5b66\u3001\u73b0\u4ee3\u8bed\u6599\u5e93\u8bed\u8a00\u5b66\u7684\u4e13\u5bb6\u7ea7\u8bcd\u5178\u7f16\u7e82\u8005\u3002\u8bf7\u4e3a\u7528\u6237\u8f93\u5165\u7684\u6587\u672c\u63d0\u4f9b\u517c\u5177\u5b66\u672f\u4e25\u8c28\u6027\u4e0e\u89c6\u89c9\u4f18\u96c5\u611f\u7684\u5168\u65b9\u4f4d\u89e3\u6790\u6216\u9ad8\u8d28\u91cf\u7ffb\u8bd1\u3002\n\n# Execution Rules\n1. **\u667a\u80fd\u5206\u6d41\u673a\u5236\uff08CRITICAL\uff09**\uff1a\u8bf7\u4e25\u683c\u57fa\u4e8e\u4e0b\u65b9 `[Target / \u76ee\u6807\u6587\u672c]` \u7684\u957f\u5ea6\u548c\u6027\u8d28\u51b3\u5b9a\u5de5\u4f5c\u6a21\u5f0f\uff1a\n - **\u8bcd\u5178\u6a21\u5f0f**\uff1a\u4ec5\u5f53 `[Target / \u76ee\u6807\u6587\u672c]` \u660e\u786e\u662f**\u5355\u4e2a\u8bcd\u3001\u6210\u8bed\uff0c\u6216\u4e0d\u8d85\u8fc7 3 \u4e2a\u8bcd\u7684\u56fa\u5b9a\u642d\u914d**\u65f6\uff0c\u624d\u4e25\u683c\u6267\u884c\u4e0b\u65b9\u7684\u3010\u8bcd\u5178\u8f93\u51fa\u683c\u5f0f\u3011\u3002\n - **\u7eaf\u7ffb\u8bd1\u6a21\u5f0f**\uff1a\u5b8c\u6574\u53e5\u5b50\u3001\u5206\u53e5\u3001\u81ea\u7136\u8bed\u8a00\u77ed\u8bed\u3001\u6bb5\u843d\u3001\u957f\u6587\u672c\uff0c\u6216**\u8d85\u8fc7 3 \u4e2a\u8bcd\u7684\u8fde\u7eed\u6587\u672c**\uff0c\u4e00\u5f8b\u8fdb\u5165\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3002\u65e0\u6cd5\u786e\u5b9a\u65f6\uff0c\u4f18\u5148\u8fdb\u5165\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3002\n2. **\u8bed\u5883\u4f18\u5148\u539f\u5219**\uff1a\u5728\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u4e0b\uff0c\u82e5 `[Context / \u4e0a\u4e0b\u6587]` \u4e2d\u5b58\u5728\u6709\u6548\u4fe1\u606f\uff0c\u8bf7\u4f18\u5148\u9501\u5b9a\u8be5\u8bcd\u5728\u7279\u5b9a\u8bed\u5883\u4e0b\u7684\u4e49\u9879\uff0c\u5e76\u5c06\u5176\u7f6e\u4e8e\u91ca\u4e49\u9996\u4f4d\u3002\n3. **\u683c\u5f0f\u6b7b\u7ebf**\uff1a\u65e0\u8bba\u8fdb\u5165\u54ea\u79cd\u6a21\u5f0f\uff0c\u4e25\u683c\u6309\u5bf9\u5e94\u683c\u5f0f\u8f93\u51fa\uff0c\u7981\u6b62\u8f93\u51fa\u4efb\u4f55\u524d\u5bfc\u5bd2\u6684\uff08\u5982\u201c\u597d\u7684\u201d\u3001\u201c\u4e3a\u60a8\u89e3\u6790\u201d\uff09\u6216\u5c3e\u90e8\u603b\u7ed3\u3002\n\n---\n\n# Pure Translation Output Contract (\u4ec5\u9650\u3010\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3011\u6267\u884c)\n\n\u4f60\u7684\u6574\u6761\u56de\u590d\u5fc5\u987b\u4e14\u53ea\u80fd\u662f\u76ee\u6807\u8bed\u8a00\u8bd1\u6587\u6587\u672c\u672c\u8eab\u3002\u4e0d\u5f97\u6dfb\u52a0\u4efb\u4f55\u5b57\u7b26\u3001\u683c\u5f0f\u6216\u8bf4\u660e\uff1a\n- \u4e0d\u8f93\u51fa\u539f\u6587\u3001\u53cc\u8bed\u5bf9\u7167\u3001\u6807\u9898\u3001\u6807\u7b7e\u3001\u8bed\u8a00\u540d\u79f0\u3001\u5f15\u53f7\u6216 Markdown\u3002\n- \u4e0d\u8f93\u51fa\u201c\u8bd1\u6587\uff1a\u201d\u201c\u7ffb\u8bd1\u5982\u4e0b\uff1a\u201d\u7b49\u524d\u7f00\uff0c\u4e5f\u4e0d\u8f93\u51fa\u89e3\u91ca\u3001\u97f3\u6807\u3001\u8bcd\u6e90\u3001\u642d\u914d\u3001\u4f8b\u53e5\u6216\u81f4\u8c22\u3002\n- \u539f\u6587\u662f\u5355\u6bb5\u65f6\uff0c\u8bd1\u6587\u4e5f\u53ea\u8f93\u51fa\u5355\u6bb5\uff1b\u4ec5\u5728\u539f\u6587\u6709\u591a\u4e2a\u6bb5\u843d\u65f6\u4fdd\u7559\u76f8\u5e94\u5206\u6bb5\u3002\n\n\u793a\u4f8b\uff1a\n- \u8f93\u5165\uff1aThe library for web and native user interfaces\n- \u6b63\u786e\u8f93\u51fa\uff1a\u7528\u4e8e Web \u548c\u539f\u751f\u7528\u6237\u754c\u9762\u7684\u5e93\n\n# Output Format (\u4ec5\u9650\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u6267\u884c)\n\n## \u8bcd\u6761\uff1a[\u539f\u8bcd/\u77ed\u8bed]\n> [\u5982\u679c\u8be5\u8bcd\u5728 `[Context]` \u4e2d\u53d1\u751f\u4e86\u65f6\u6001/\u590d\u6570/\u5c48\u6298\u53d8\u5f62\uff0c\u5728\u6b64\u5904\u62ec\u53f7\u5185\u6ce8\u660e\u5176\u539f\u578b\uff0c\u4f8b\u5982\uff1a(\u539f\u578b: Go)]\n\n### 1. \u57fa\u7840\u5f62\u6001\u4e0e\u97f3\u6807 (Essentials)\n- **\u53d1\u97f3\u6807\u6ce8**\uff1a\ud83c\uddfa\ud83c\uddf8 [\u7f8e\u5f0f\u97f3\u6807] \uff5c uk [\u82f1\u5f0f\u97f3\u6807] \uff08*\u82e5\u975e\u82f1\u8bed\u8bcd\u6c47\uff0c\u8bf7\u81ea\u52a8\u5207\u6362\u4e3a\u76ee\u6807\u8bed\u8a00\u7684\u6807\u51c6\u6ce8\u97f3/\u5047\u540d/\u62fc\u97f3*\uff09\n- **\u8bcd\u6027\u4e0e\u6838\u5fc3\u4e49\u9879**\uff1a\n - `[\u8bcd\u6027\u7f29\u5199. (\u5982 v. / adj.)]` \u2460 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e491] \u2461 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e492]\n - `[\u8bcd\u6027\u7f29\u5199.]` \u2460 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e491]\n\n### 2. \u8bed\u5883\u7cbe\u6790 (Contextual Mapping) *[\u4ec5\u5728\u5177\u6709\u6709\u6548 Context \u65f6\u751f\u6210\u672c\u677f\u5757]*\n- **\u5f53\u524d\u8bed\u4e49\u9501\u5b9a**\uff1a\u8be5\u8bcd\u5728\u7ed9\u5b9a\u8bed\u5883\u4e2d\u8868\u73b0\u4e3a `[\u8bcd\u6027]`\uff0c\u7cbe\u786e\u542b\u4e49\u4e3a\u201c[\u4e2d\u6587\u91ca\u4e49]\u201d\u3002\n- **\u8bed\u5883\u8272\u8c03**\uff1a[\u660e\u793a\u8be5\u8bcd\u5728\u6b64\u5904\u7684\u4fee\u8f9e\u8272\u5f69\uff0c\u5982\uff1a\u611f\u60c5\u8272\u5f69\uff08\u8912/\u8d2c/\u4e2d\u6027\uff09\uff5c \u8bed\u4f53\uff08\u6b63\u5f0f\u4e66\u9762/\u804c\u573a\u4e13\u4e1a/\u4fda\u8bed\u53e3\u8bed\uff09]\n- **\u539f\u53e5\u5e73\u66ff\u8bcd**\uff1a[\u63d0\u4f9b 1-2 \u4e2a\u5728\u5f53\u524d\u8bed\u5883\u4e2d\u53ef\u65e0\u7f1d\u66ff\u6362\u3001\u4e0d\u6539\u53d8\u539f\u610f\u7684\u8fd1\u4e49\u8bcd]\n\n### 3. \u8bcd\u6e90\u6df1\u5ea6\u89e3\u6784\u4e0e\u8fa8\u6790 (Deep Dive)\n- **\u8bcd\u6e90\u4e0e\u8bb0\u5fc6\u951a\u70b9**\uff1a[\u62c6\u89e3\u8bcd\u6839\u8bcd\u7f00\u3001\u5386\u53f2\u6f14\u53d8\uff0c\u6216\u63d0\u4f9b\u4e00\u4e2a\u903b\u8f91\u6e05\u6670\u7684\u8054\u60f3\u8bb0\u5fc6\u6cd5]\n- **\u9ad8\u9891\u642d\u914d (Collocations)**\uff1a\n * `[\u642d\u914d 1]` \u2794 [\u4e2d\u6587\u7cbe\u51c6\u7ffb\u8bd1]\n * `[\u642d\u914d 2]` \u2794 [\u4e2d\u6587\u7cbe\u51c6\u7ffb\u8bd1]\n- **\u540c\u4e49\u8bcd\u5fae\u89c2\u8fa8\u6790 (Synonyms)**\uff1a\n * **[\u539f\u8bcd] vs [\u8fd1\u4e49\u8bcd1] vs [\u8fd1\u4e49\u8bcd2]**\uff1a[\u7528 1-2 \u53e5\u8bdd\u70b9\u900f\u5b83\u4eec\u5728\u201c\u4f7f\u7528\u8bed\u5883\u201d\u3001\u201c\u8bed\u6c14\u8f7b\u91cd\u201d\u6216\u201c\u642d\u914d\u4e60\u60ef\u201d\u4e0a\u7684\u5fae\u5999\u533a\u522b]\n\n### 4. \u8bed\u6599\u5e93\u53cc\u89e3\u4f8b\u53e5 (Corpus Examples)\n[\u8bf7\u63d0\u4f9b 2-3 \u4e2a\u6765\u81ea\u771f\u5b9e\u51fa\u7248\u7269\u3001\u65b0\u95fb\u6216\u5730\u9053\u65e5\u5e38\u573a\u666f\u7684\u4f18\u8d28\u53cc\u8bed\u4f8b\u53e5]\n\n1. **[\u5730\u9053\u82f1\u6587/\u6e90\u8bed\u8a00\u4f8b\u53e5]**\n - \ud83d\udca1 *\u4e2d\u6587\u7ffb\u8bd1*\uff1a[\u7cbe\u51c6\u7684\u3001\u7b26\u5408\u4e2d\u6587\u4e60\u60ef\u7684\u7ffb\u8bd1]\n - \ud83d\udccc *\u573a\u666f\u6807\u7b7e*\uff1a`[\u5b66\u672f\u5199\u4f5c / \u5546\u52a1\u90ae\u4ef6 / \u65e5\u5e38\u8857\u5934 / \u79d1\u6280\u65b0\u95fb]`",Le="# Input Data\n\n## [Context / \u4e0a\u4e0b\u6587] (Optional)\n> \u4ee5\u4e0b\u4fe1\u606f\u7528\u4e8e\u8f85\u52a9\u7cbe\u51c6\u9501\u5b9a\u76ee\u6807\u6587\u672c\u7684\u8bed\u5883\uff1a\n- \u6587\u6863\u6807\u9898\uff1a".concat(y,"\n- \u6587\u6863\u63cf\u8ff0\uff1a").concat(b,"\n- \u6587\u6863\u6458\u8981\uff1a").concat(x,"\n- \u6240\u5728\u6bb5\u843d\uff1a").concat(A,"\n\n## [Target / \u76ee\u6807\u6587\u672c] (Required)\n> \u89e6\u53d1\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u6216\u3010\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3011\u7684\u6838\u5fc3\u5224\u5b9a\u5bf9\u8c61\uff1a\n").concat(g),Pe="# Context\nTitle: ".concat(y,"\nDescription: ").concat(b,"\nSummary: ").concat(x,"\nTone: ").concat(v,"\n\n# Glossary (Terminology):\n").concat(w,"\n\n# Task\nGroup the input word-level JSON array into readable, well-paced bilingual subtitle segments. Target Language: ").concat(h,'.\n\n# Output Contract\n1. STRICTLY output a valid JSON array only. No markdown formatting (e.g., do not use ```json fences), no preamble, and no postscript.\n2. Format per element: {"e":, "o":"exact merged source text", "t":"translation"}\n3. The "e" field must be an inclusive, exact word ID from the input and must increase strictly. The first segment starts at ID 0; every later segment starts at the previous "e" + 1.\n4. Completeness: Cover every input item exactly once. The final "e" must equal the final input ID. No missing items, overlaps, or gaps.\n5. For each segment, first determine its exact input range from the previous "e" + 1 through the current "e", then merge every source item in that range verbatim into "o". Do not paraphrase, normalize, translate, omit, or add source text in "o".\n6. Do not return start IDs, timestamps, or any extra fields. The application reconstructs them from the input.\n\n# Rules\n1. Hard Source Length Limit:\n - For space-separated source languages, each source span MUST contain no more than 15 words; aim for 8-12 words when a natural boundary exists.\n - For Chinese, Japanese, and other non-space-separated source languages, each source span MUST contain no more than 30 source characters.\n - If a sentence exceeds the applicable limit, split it at a clause, comma, conjunction, or natural phrase boundary. The hard length limit takes priority over keeping a long grammatical sentence intact.\n2. Sentence Boundaries: Never merge two complete sentences into one subtitle segment. Terminal punctuation such as .?!\u3002\uff01\uff1f normally ends the current segment.\n3. Pause Indicators: An optional "pauseMs" field is the timeline gap in milliseconds after the current input item. If "pauseMs" is missing, treat it as 0 milliseconds and do not infer a pause. Larger positive values indicate stronger sentence boundaries, but grammatical correctness and semantic coherence always take priority.\n4. Exact Translation Alignment: Build "o" first from the exact source span covered by the current "e", starting after the previous "e". Then translate only the current "o" into "t". The "t" field MUST NOT omit that span, translate future input items, or carry text from adjacent segments.\n5. Silent Self-Check: Before returning, silently verify that every "e", "o", and "t" correspond one-to-one, every "o" matches its exact input range, all source-length limits are satisfied, and all input items are covered exactly once. Do not output the self-check or any reasoning.\n6. Translation Quality: Keep "t" concise, accurate, and natural while strictly adhering to the provided Context, Tone, and Glossary.\n\n# Example\nInput: [{"id":0,"text":"Once"},{"id":1,"text":"the"},{"id":2,"text":"assets"},{"id":3,"text":"are"},{"id":4,"text":"ready,"},{"id":5,"text":"open"},{"id":6,"text":"the"},{"id":7,"text":"storyboard"},{"id":8,"text":"tab.","pauseMs":850},{"id":9,"text":"This"},{"id":10,"text":"is"},{"id":11,"text":"where"},{"id":12,"text":"everything"},{"id":13,"text":"comes"},{"id":14,"text":"together."},{"id":15,"text":"If"},{"id":16,"text":"a"},{"id":17,"text":"scene"},{"id":18,"text":"does"},{"id":19,"text":"not"},{"id":20,"text":"match"},{"id":21,"text":"your"},{"id":22,"text":"idea,"},{"id":23,"text":"regenerate"},{"id":24,"text":"it"},{"id":25,"text":"or"},{"id":26,"text":"adjust"},{"id":27,"text":"the"},{"id":28,"text":"prompt"},{"id":29,"text":"carefully"},{"id":30,"text":"until"},{"id":31,"text":"it"},{"id":32,"text":"feels"},{"id":33,"text":"right."}]\nOutput: [{"e":8,"o":"Once the assets are ready, open the storyboard tab.","t":"\u7d20\u6750\u51c6\u5907\u597d\u540e\uff0c\u6253\u5f00\u6545\u4e8b\u677f\u6807\u7b7e\u9875\u3002"},{"e":14,"o":"This is where everything comes together.","t":"\u4e00\u5207\u4ece\u8fd9\u91cc\u5f00\u59cb\u6574\u5408\u3002"},{"e":22,"o":"If a scene does not match your idea,","t":"\u5982\u679c\u67d0\u4e2a\u573a\u666f\u4e0e\u4f60\u7684\u60f3\u6cd5\u4e0d\u7b26\uff0c"},{"e":33,"o":"regenerate it or adjust the prompt carefully until it feels right.","t":"\u8bf7\u91cd\u65b0\u751f\u6210\uff0c\u6216\u4ed4\u7ec6\u8c03\u6574\u63d0\u793a\u8bcd\uff0c\u76f4\u5230\u6548\u679c\u5408\u9002\u3002"}]'),Re={apiSlug:"",apiName:"",apiType:"",url:"",key:"",model:"",modelListUrl:"",systemPrompt:"",batchPromptSlug:"batch-translation-json",subtitlePrompt:"",subtitlePromptSlug:"subtitle-segmentation",dictPrompt:"",dictUserPrompt:"",dictPromptSlug:"dictionary-en-zh",nobatchPrompt:"",nobatchUserPrompt:"",nobatchPromptSlug:"nobatch-translation",userPrompt:"",tone:fe[0],placeholder:me[0],placetag:ge[0],aiTerms:"",customHeader:"",customBody:"",reqHook:"",resHook:"",fetchLimit:a,fetchInterval:i,httpTimeout:o,batchInterval:s,batchSize:l,batchLength:u,batchConcurrency:c,useBatchFetch:!1,useStream:!1,streamRenderMode:"disabled",transAllnow:!1,rootMargin:2e3,useContext:!1,contextSize:d,temperature:0,maxTokens:20480,thinkingMode:"disabled",thinkingEffort:"_default",isDisabled:!1,region:"",sortOrder:0,placetagFormat:"compact"},Ne={useBatchFetch:!0,thinkingMode:"disabled",thinkingEffort:"_default",useStream:!0,streamRenderMode:"realtime"},Oe={[P]:Re,[R]:(0,r.A)((0,r.A)({},Re),{},{url:"https://translate.googleapis.com/translate_a/single"}),[N]:(0,r.A)((0,r.A)({},Re),{},{url:"https://translate-pa.googleapis.com/v1/translateHtml",key:"AIzaSyATBXajvzQLTDHEQbcpq0Ihe0vWDHmO520",useBatchFetch:!0,placetag:"a",placetagFormat:"attribute"}),[O]:(0,r.A)((0,r.A)({},Re),{},{useBatchFetch:!0}),[B]:(0,r.A)((0,r.A)({},Re),{},{url:"https://api.cognitive.microsofttranslator.com/translate?api-version=3.0",useBatchFetch:!0}),[Q]:(0,r.A)({},Re),[J]:(0,r.A)((0,r.A)({},Re),{},{useBatchFetch:!0}),[Z]:(0,r.A)({},Re),[K]:(0,r.A)((0,r.A)({},Re),{},{url:"https://api-free.deepl.com/v2/translate",useBatchFetch:!0}),[Y]:(0,r.A)((0,r.A)({},Re),{},{fetchLimit:1}),[M]:(0,r.A)((0,r.A)({},Re),{},{url:"https://api.deepseek.com/chat/completions",modelListUrl:"https://api.deepseek.com/models",model:"deepseek-v4-flash"},Ne),[W]:(0,r.A)((0,r.A)({},Re),{},{url:"https://opencode.ai/zen/go/v1/chat/completions",model:"deepseek-v4-flash"},Ne),[U]:(0,r.A)((0,r.A)({},Re),{},{url:"https://api.siliconflow.cn/v1/chat/completions",modelListUrl:"https://api.siliconflow.cn/v1/models",model:"Pro/zai-org/GLM-4.7"},Ne),[V]:(0,r.A)((0,r.A)({},Re),{},{url:"https://api.xiaomimimo.com/v1/chat/completions",modelListUrl:"https://api.xiaomimimo.com/v1/models",model:"mimo-v2.5-pro"},Ne),[H]:(0,r.A)((0,r.A)({},Re),{},{url:"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",modelListUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1/models",model:"qwen-plus"},Ne),[G]:(0,r.A)((0,r.A)({},Re),{},{url:"https://api.cerebras.ai/v1/chat/completions",modelListUrl:"https://api.cerebras.ai/v1/models",model:"gpt-oss-120b"},Ne),[q]:(0,r.A)((0,r.A)({},Re),{},{url:"https://open.bigmodel.cn/api/paas/v4/chat/completions",modelListUrl:"https://open.bigmodel.cn/api/paas/v4/models",model:"glm-5.1"},Ne),[$]:(0,r.A)((0,r.A)({},Re),{},{url:"http://localhost:1188/translate"}),[X]:(0,r.A)((0,r.A)({},Re),{},{url:"https://api.ephone.ai/v1/chat/completions"}),[ee]:(0,r.A)((0,r.A)({},Re),{},{url:"https://api.openai.com/v1/chat/completions",modelListUrl:"https://api.openai.com/v1/models",model:"gpt-4"},Ne),[te]:(0,r.A)((0,r.A)((0,r.A)({},Re),{},{url:E,modelListUrl:"https://generativelanguage.googleapis.com/v1beta/models",model:"gemini-2.5-flash"},Ne),{},{thinkingMode:"disabled",thinkingEffort:"minimal"}),[ne]:(0,r.A)((0,r.A)({},Re),{},{url:"https://generativelanguage.googleapis.com/v1beta/openai/chat/completions",modelListUrl:"https://generativelanguage.googleapis.com/v1beta/models",model:"gemini-2.0-flash"},Ne),[re]:(0,r.A)((0,r.A)({},Re),{},{url:"https://api.anthropic.com/v1/messages",modelListUrl:"https://api.anthropic.com/v1/models",model:"claude-3-haiku-20240307"},Ne),[oe]:(0,r.A)((0,r.A)({},Re),{},{url:"https://api.cloudflare.com/client/v4/accounts/{{ACCOUNT_ID}}/ai/run/@cf/meta/m2m100-1.2b"}),[ae]:(0,r.A)((0,r.A)({},Re),{},{url:"http://localhost:11434/v1/chat/completions",modelListUrl:"http://localhost:11434/v1/models",model:"llama3.1"},Ne),[ie]:(0,r.A)((0,r.A)({},Re),{},{url:"https://openrouter.ai/api/v1/chat/completions",modelListUrl:"https://openrouter.ai/api/v1/models",model:"openai/gpt-4o"},Ne),[se]:(0,r.A)((0,r.A)({},Re),{},{url:"https://api.orcarouter.ai/v1/chat/completions",modelListUrl:"https://api.orcarouter.ai/v1/models",model:"openai/gpt-5.4-mini"},Ne),[le]:(0,r.A)((0,r.A)({},Re),{},{reqHook:'async (args, { url, body, headers, userMsg, method } = {}) => {\n console.log("request hook args:", { args, url, body, headers, userMsg, method });\n // return { url, body, headers, userMsg, method };\n};',resHook:'async ({ res, ...args }) => {\n console.log("reaponse hook args:", { res, args });\n // const translations = [["\u4f60\u597d", "zh"]];\n // const modelMsg = "";\n // return { translations, modelMsg };\n};'})},Be=ue.map(e=>(0,r.A)((0,r.A)({},Oe[e]),{},{apiSlug:e,apiName:e,apiType:e}));function Me(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];if(!Array.isArray(e))return e;let t=!1;const n=e.map(e=>{const n=function(e){if(!e||"object"!==typeof e)return e;if(void 0!==e.modelListUrl)return e;const t=Be.find(t=>t.apiType===e.apiType)||{};return(0,r.A)((0,r.A)({},e),{},{modelListUrl:t.modelListUrl||""})}(e);return n!==e&&(t=!0),n});return t?n:e}const We=J,Ue=Be.find(e=>e.apiType===We)},5553(e,t,n){"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e)){var a=e.length;for(t=0;to});const o=function(){for(var e,t,n=0,o="",a=arguments.length;nr});const r=n(9669).A},5628(e,t,n){"use strict";n.d(t,{x:()=>o});var r=n(1166);const o=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e)throw new Error("Response object does not exist");if(!e.ok){const t={url:e.url,status:e.status,statusText:e.statusText};try{const n=await e.clone().text();try{t.response=JSON.parse(n)}catch(a){t.response=n}}catch(i){t.response="Unable to read error body"}throw new Error(JSON.stringify(t))}const n=e.headers.get("Content-Type")||"";if("blob"===t)return e.blob();if("text"===t)return e.text();if("json"===t)return e.json();if("audio"===t||n.includes("audio")||n.includes("image")||n.includes("video")){const t=await e.blob();return(0,r.Sk)(t)}if(n.includes("text/event-stream"))throw new Error("Received text/event-stream in a non-stream request. Use fetchStream instead.");const o=await e.text();if(!o)return null;try{return JSON.parse(o)}catch(s){return o}}},5729(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M3 17.25V21h3.75L17.81 9.94l-3.75-3.75zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75z"}),"Edit")},5779(e,t,n){"use strict";n.d(t,{A:()=>l,b:()=>s});var r=n(8661),o=n(3699),a=n(5089);const i=r.createContext(void 0);function s(e){let{props:t,name:n}=e;return function(e){const{theme:t,name:n,props:r}=e;if(!t||!t.components||!t.components[n])return r;const a=t.components[n];return a.defaultProps?(0,o.A)(a.defaultProps,r):a.styleOverrides||a.variants?r:(0,o.A)(a,r)}({props:t,name:n,theme:{components:r.useContext(i)}})}const l=function(e){let{value:t,children:n}=e;return(0,a.jsx)(i.Provider,{value:t,children:n})}},5823(e,t){"use strict";var n=Symbol.for("react.transitional.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),l=Symbol.for("react.context"),u=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),d=Symbol.for("react.suspense_list"),p=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),f=Symbol.for("react.view_transition"),m=Symbol.for("react.client.reference");function g(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case n:switch(e=e.type){case o:case i:case a:case c:case d:case f:return e;default:switch(e=e&&e.$$typeof){case l:case u:case h:case p:case s:return e;default:return t}}case r:return t}}}t.vM=u,t.lD=p},5863(e,t,n){"use strict";n.d(t,{A:()=>r});const r="$$material"},5957(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M12 4.5C7 4.5 2.73 7.61 1 12c1.73 4.39 6 7.5 11 7.5s9.27-3.11 11-7.5c-1.73-4.39-6-7.5-11-7.5M12 17c-2.76 0-5-2.24-5-5s2.24-5 5-5 5 2.24 5 5-2.24 5-5 5m0-8c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3"}),"Visibility")},6121(e,t,n){"use strict";n.d(t,{A:()=>c});var r,o=n(4093),a=n(2458),i=n(8763);function s(e){return["VALUE","KEY","COLON","COMMA","ENDED","ERROR","SEPARATOR"][e]}!function(e){e[e.VALUE=0]="VALUE",e[e.KEY=1]="KEY",e[e.COLON=2]="COLON",e[e.COMMA=3]="COMMA",e[e.ENDED=4]="ENDED",e[e.ERROR=5]="ERROR",e[e.SEPARATOR=6]="SEPARATOR"}(r||(r={}));const l={paths:void 0,keepStack:!0,separator:void 0,emitPartialValues:!1};class u extends Error{constructor(e){super(e),Object.setPrototypeOf(this,u.prototype)}}class c{constructor(e){this.state=r.VALUE,this.mode=void 0,this.key=void 0,this.value=void 0,this.stack=[],(e=Object.assign(Object.assign({},l),e)).paths&&(this.paths=e.paths.map(e=>{if(void 0===e||"$*"===e)return;if(!e.startsWith("$"))throw new u('Invalid selector "'.concat(e,'". Should start with "$".'));const t=e.split(".").slice(1);if(t.includes(""))throw new u('Invalid selector "'.concat(e,'". ".." syntax not supported.'));return t})),this.keepStack=e.keepStack||!1,this.separator=e.separator,e.emitPartialValues||(this.emitPartial=()=>{})}shouldEmit(){return!this.paths||this.paths.some(e=>{var t;if(void 0===e)return!0;if(e.length!==this.stack.length)return!1;for(let r=0;r!e.emit)&&delete this.value[this.key],t&&this.onValue({value:e,key:this.key,parent:this.value,stack:this.stack}),0===this.stack.length&&(this.separator?this.state=r.SEPARATOR:void 0===this.separator&&this.end())}emitPartial(e){this.shouldEmit()&&(this.state!==r.KEY?this.onValue({value:e,key:this.key,parent:this.value,stack:this.stack,partial:!0}):this.onValue({value:void 0,key:e,parent:this.value,stack:this.stack,partial:!0}))}get isEnded(){return this.state===r.ENDED}write(e){let{token:t,value:n,partial:l}=e;try{if(l)return void this.emitPartial(n);if(this.state===r.VALUE){if(t===a.A.STRING||t===a.A.NUMBER||t===a.A.TRUE||t===a.A.FALSE||t===a.A.NULL)return this.mode===i.C.OBJECT?(this.value[this.key]=n,this.state=r.COMMA):this.mode===i.C.ARRAY&&(this.value.push(n),this.state=r.COMMA),void this.emit(n,this.shouldEmit());if(t===a.A.LEFT_BRACE){if(this.push(),this.mode===i.C.OBJECT)this.value=this.value[this.key]={};else if(this.mode===i.C.ARRAY){const e={};this.value.push(e),this.value=e}else this.value={};return this.mode=i.C.OBJECT,this.state=r.KEY,this.key=void 0,void this.emitPartial()}if(t===a.A.LEFT_BRACKET){if(this.push(),this.mode===i.C.OBJECT)this.value=this.value[this.key]=[];else if(this.mode===i.C.ARRAY){const e=[];this.value.push(e),this.value=e}else this.value=[];return this.mode=i.C.ARRAY,this.state=r.VALUE,this.key=0,void this.emitPartial()}if(this.mode===i.C.ARRAY&&t===a.A.RIGHT_BRACKET&&0===this.value.length)return void this.pop()}if(this.state===r.KEY){if(t===a.A.STRING)return this.key=n,this.state=r.COLON,void this.emitPartial();if(t===a.A.RIGHT_BRACE&&0===Object.keys(this.value).length)return void this.pop()}if(this.state===r.COLON&&t===a.A.COLON)return void(this.state=r.VALUE);if(this.state===r.COMMA){if(t===a.A.COMMA){if(this.mode===i.C.ARRAY)return this.state=r.VALUE,void(this.key+=1);if(this.mode===i.C.OBJECT)return void(this.state=r.KEY)}if(t===a.A.RIGHT_BRACE&&this.mode===i.C.OBJECT||t===a.A.RIGHT_BRACKET&&this.mode===i.C.ARRAY)return void this.pop()}if(this.state===r.SEPARATOR&&t===a.A.SEPARATOR&&n===this.separator)return void(this.state=r.VALUE);if(t===a.A.SEPARATOR&&this.state!==r.SEPARATOR&&Array.from(n).map(e=>e.charCodeAt(0)).every(e=>e===o.$.SPACE||e===o.$.NEWLINE||e===o.$.CARRIAGE_RETURN||e===o.$.TAB))return;throw new u("Unexpected ".concat(a.A[t]," (").concat(JSON.stringify(n),") in state ").concat(s(this.state)))}catch(c){this.error(c)}}error(e){this.state!==r.ENDED&&(this.state=r.ERROR),this.onError(e)}end(){this.state!==r.VALUE&&this.state!==r.SEPARATOR||this.stack.length>0?this.error(new Error("Parser ended in mid-parsing (state: ".concat(s(this.state),"). Either not all the data was received or the data was invalid."))):(this.state=r.ENDED,this.onEnd())}onValue(e){throw new u('Can\'t emit data before the "onValue" callback has been set up.')}onError(e){throw e}onEnd(){}}},6135(e,t,n){"use strict";n.d(t,{Fd:()=>g,Qy:()=>p.fnPolyfill,iI:()=>p.iI,xF:()=>v});var r=n(4107),o=n(7301),a=n(1152),i=n(1442),s=n(3951),l=n(6639),u=n(9793),c=n(7325),d=n(5047),p=n(1762),h=n(6402);const f=["useCache","usePool","fetchInterval","fetchLimit"],m=["useCache","usePool","fetchInterval","fetchLimit"],g=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{useCache:r,usePool:a,fetchInterval:i,fetchLimit:s}=n,l=(0,o.A)(n,f);if(null===e||void 0===e||!e.trim())throw new Error("URL is empty");if(r){const n=await(0,c.QF)(e,t);if(n)return n}if(a){return(0,u.Fz)(i,s).push(p.fnPolyfill,{fn:p.fetchHandle,input:e,init:t,opts:l})}return(0,p.fnPolyfill)({fn:p.fetchHandle,input:e,init:t,opts:l})};function v(e,t){return y.apply(this,arguments)}function y(){return y=(0,a.A)(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{useCache:a,usePool:f,fetchInterval:g,fetchLimit:v}=n,y=(0,o.A)(n,m);return function*(){if(null===e||void 0===e||!e.trim())throw new Error("URL is empty");if(a){const n=yield(0,i.A)((0,c.QF)(e,t));if(n)return void(yield n)}if(f){const n=(0,u.Fz)(g,v),o=(0,d.Sn)(),a=new AbortController,c=(0,r.A)((0,r.A)({},y),{},{signal:(0,p.OW)([y.signal,a.signal])}),f=n.push(async()=>{try{var n,r=!1,a=!1;try{for(var i,s=(0,l.A)((0,h.y)(e,t,c));r=!(i=await s.next()).done;r=!1){const e=i.value;o.push(e)}}catch(u){a=!0,n=u}finally{try{r&&null!=s.return&&await s.return()}finally{if(a)throw n}}o.finish()}catch(d){o.error(d)}return null});try{yield*(0,s.A)((0,l.A)(o.iterate()),i.A)}finally{a.abort(),yield(0,i.A)(f.catch(()=>{}))}return}yield*(0,s.A)((0,l.A)((0,h.y)(e,t,y)),i.A)}()}),y.apply(this,arguments)}},6175(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(6253);function o(e){if("string"!==typeof e)throw new Error((0,r.A)(7));return e.charAt(0).toUpperCase()+e.slice(1)}},6253(e,t,n){"use strict";function r(e){let t="https://mui.com/production-error/?code="+e;for(let n=1;nr})},6267(e,t,n){"use strict";n.d(t,{A:()=>a});var r=n(8661),o=n(6489);const a=function(e){const t=r.useRef(e);return(0,o.A)(()=>{t.current=e}),r.useRef(function(){return(0,t.current)(...arguments)}).current}},6332(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2M4 12c0-4.42 3.58-8 8-8 1.85 0 3.55.63 4.9 1.69L5.69 16.9C4.63 15.55 4 13.85 4 12m8 8c-1.85 0-3.55-.63-4.9-1.69L18.31 7.1C19.37 8.45 20 10.15 20 12c0 4.42-3.58 8-8 8"}),"Block")},6333(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(9669);function o(e){return(0,r.A)(e).defaultView||window}},6402(e,t,n){"use strict";n.d(t,{y:()=>x});var r=n(7301),o=n(4107),a=n(1152),i=n(1442),s=n(3951),l=n(6639),u=n(9286),c=n.n(u),d=n(252),p=n(1223),h=n(7877),f=n(5047),m=n(1762);const g=["signal"];function v(){return v=(0,a.A)(function(e){let{method:t="GET",headers:n,body:r,timeout:o,signal:a}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return function*(u,c){const d=(0,f.Sn)();let p=(0,f.HP)(),h=!1,m=null,g=!1,v=0,y=!1,b="unknown",x="";const A=new TextDecoder,D=()=>{y||(y=!0,d.finish())},k=e=>{y||(y=!0,d.error(e))},w=e=>{for(const t of p(e))g=!0,d.push(t)},S=(e,t)=>{const n=new Uint8Array(e.length);for(let r=0;r1&&void 0!==arguments[1]&&arguments[1];if(e||t)if("utf8-bytes"!==b){if(x+=e,"unknown"===b)if((e=>{for(let t=0;t255)return!0;return!1})(x))b="text";else if((e=>/[\u00c2-\u00f4][\u0080-\u00bf]/.test(e))(x))b="utf8-bytes";else{if((e=>/[\u0080-\u00ff]/.test(e))(x)&&!t)return;b="text"}w("utf8-bytes"===b?S(x,{stream:!t}):x),x=""}else w(S(e,{stream:!t}))},_=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(h||y)return;const n=function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return"string"===typeof t.responseText?t.responseText:"string"===typeof(null===(e=t.response)||void 0===e?void 0:e.responseText)?t.response.responseText:"string"===typeof t.response?t.response:""}(e);if(n.length<=v)return void E("",t);const r=n.slice(v);v=n.length,E(r,t)},C=((null===(u=window.KISS_GM)||void 0===u?void 0:u.xmlHttpRequest)||GM.xmlHttpRequest)({method:t,url:e,headers:n,data:r,anonymous:!0,timeout:o,responseType:"stream",onloadstart:async function(){let e,{response:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(null!==t&&void 0!==t&&t.getReader){h=!0;try{e=t.getReader();const n=new TextDecoder;for(;;){const{done:t,value:r}=await e.read();if(t)break;for(const e of p(n.decode(r,{stream:!0})))g=!0,d.push(e)}}catch(a){if(!g&&(o=a,String((null===o||void 0===o?void 0:o.message)||o).includes("Accessing TypedArray data over Xrays"))){h=!1,m=a,p=(0,f.HP)();try{var n,r;await(null===(n=e)||void 0===n||null===(r=n.cancel)||void 0===r?void 0:r.call(n))}catch(i){}return}return void k(a)}var o;D()}},onprogress:e=>_(e),onload:e=>{h||y||(_(e,!0),g?D():k(m||new Error("GM stream response is not readable.")))},onerror:e=>k(e),onabort:()=>k(new DOMException("The operation was aborted.","AbortError")),ontimeout:()=>k(new Error("GM stream request timeout"))}),F=()=>{var e;return null===C||void 0===C||null===(e=C.abort)||void 0===e?void 0:e.call(C)};null!==a&&void 0!==a&&a.aborted&&F(),null===a||void 0===a||null===(c=a.addEventListener)||void 0===c||c.call(a,"abort",F,{once:!0});try{yield*(0,s.A)((0,l.A)(d.iterate()),i.A)}finally{var T,j;null===a||void 0===a||null===(T=a.removeEventListener)||void 0===T||T.call(a,"abort",F),null===C||void 0===C||null===(j=C.abort)||void 0===j||j.call(C)}}()}),v.apply(this,arguments)}function y(){return y=(0,a.A)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){const r="number"===typeof n?{httpTimeout:n}:n||{},a=(0,m.Fb)(r.httpTimeout),s=(0,m.OW)([t.signal,r.signal,(0,m.eS)(a)]),l=yield(0,i.A)(fetch(e,(0,o.A)((0,o.A)({},t),{},{signal:s})));if(!l.ok)throw new Error("HTTP error! status: ".concat(l.status));const u=l.body.getReader(),c=new TextDecoder,d=(0,f.HP)();try{for(;;){const{done:e,value:t}=yield(0,i.A)(u.read());if(e)break;for(const n of d(c.decode(t,{stream:!0})))yield n}}finally{var p;yield(0,i.A)(null===(p=u.cancel)||void 0===p?void 0:p.call(u))}}()}),y.apply(this,arguments)}function b(){return(b=(0,a.A)(function*(e,t,n){const o=(0,f.Sn)(),a=n||{},{signal:u}=a,d=(0,r.A)(a,g);let p;try{p=c().runtime.connect({name:h.sRu})}catch(A){throw new Error("Failed to connect to background: "+A.message)}const m=()=>{try{p.disconnect()}catch(e){}};p.onMessage.addListener(e=>{switch(e.type){case"delta":o.push(e.data);break;case"done":o.finish();break;case"error":o.error(new Error(e.error))}}),p.onDisconnect.addListener(()=>{const e=c().runtime.lastError;e&&o.error(new Error(e.message||"Port disconnected"))});const v=()=>{o.error(new DOMException("The operation was aborted.","AbortError")),m()},y=null===u||void 0===u?void 0:u.aborted;var b;y?v():null===u||void 0===u||null===(b=u.addEventListener)||void 0===b||b.call(u,"abort",v,{once:!0});y||p.postMessage({action:"start",args:{input:e,init:t,opts:d}});try{yield*(0,s.A)((0,l.A)(o.iterate()),i.A)}finally{var x;null===u||void 0===u||null===(x=u.removeEventListener)||void 0===x||x.call(u,"abort",v),m()}})).apply(this,arguments)}function x(e,t){return A.apply(this,arguments)}function A(){return A=(0,a.A)(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){const r=yield(0,i.A)((0,m.uX)(n));n=(0,o.A)((0,o.A)({},n),{},{httpTimeout:r}),!d.aQ||(0,p._9)()?d.Zy?yield*(0,s.A)((0,l.A)(function(e){return v.apply(this,arguments)}(e,(0,o.A)((0,o.A)({},t),{},{timeout:n.httpTimeout,signal:n.signal}))),i.A):yield*(0,s.A)((0,l.A)(function(e){return y.apply(this,arguments)}(e,t,n)),i.A):yield*(0,s.A)((0,l.A)(function(e,t,n){return b.apply(this,arguments)}(e,t,n)),i.A)}()}),A.apply(this,arguments)}},6489(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(8661);const o="undefined"!==typeof window?r.useLayoutEffect:r.useEffect},6556(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M20 4H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2M4 12h4v2H4zm10 6H4v-2h10zm6 0h-4v-2h4zm0-4H10v-2h10z"}),"Subtitles")},6604(e,t,n){"use strict";n.d(t,{b:()=>o});const r=/^(?:>>[\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*)?(?:\[(?:[\0-\t\x0B\f\x0E-\\\^-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])+\][\t-\r \xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000\uFEFF]*)+$/;function o(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return r.test(String(e).trim())}},6614(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(6333).A},6639(e,t,n){"use strict";function r(e){var t,n,r,a=2;for("undefined"!=typeof Symbol&&(n=Symbol.asyncIterator,r=Symbol.iterator);a--;){if(n&&null!=(t=e[n]))return t.call(e);if(r&&null!=(t=e[r]))return new o(t.call(e));n="@@asyncIterator",r="@@iterator"}throw new TypeError("Object is not async iterable")}function o(e){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var t=e.done;return Promise.resolve(e.value).then(function(e){return{value:e,done:t}})}return o=function(e){this.s=e,this.n=e.next},o.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var n=this.s.return;return void 0===n?Promise.resolve({value:e,done:!0}):t(n.apply(this.s,arguments))},throw:function(e){var n=this.s.return;return void 0===n?Promise.reject(e):t(n.apply(this.s,arguments))}},new o(e)}n.d(t,{A:()=>r})},6653(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M5 20h14v-2H5zM19 9h-4V3H9v6H5l7 7z"}),"Download")},6811(e,t,n){"use strict";var r=n(7458);t.createRoot=r.createRoot,t.hydrateRoot=r.hydrateRoot},6851(e,t,n){"use strict";e.exports=n(3399)},6920(e,t,n){"use strict";n.d(t,{A:()=>r});const r=function(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}},6966(e,t,n){"use strict";n.d(t,{A:()=>L});var r=n(4320),o=n(8915),a=n(6253),i=n(6997),s=n(2692),l=n(1985),u=n(2979);var c=n(7197);const d={black:"#000",white:"#fff"},p={50:"#fafafa",100:"#f5f5f5",200:"#eeeeee",300:"#e0e0e0",400:"#bdbdbd",500:"#9e9e9e",600:"#757575",700:"#616161",800:"#424242",900:"#212121",A100:"#f5f5f5",A200:"#eeeeee",A400:"#bdbdbd",A700:"#616161"},h={50:"#f3e5f5",100:"#e1bee7",200:"#ce93d8",300:"#ba68c8",400:"#ab47bc",500:"#9c27b0",600:"#8e24aa",700:"#7b1fa2",800:"#6a1b9a",900:"#4a148c",A100:"#ea80fc",A200:"#e040fb",A400:"#d500f9",A700:"#aa00ff"},f={50:"#ffebee",100:"#ffcdd2",200:"#ef9a9a",300:"#e57373",400:"#ef5350",500:"#f44336",600:"#e53935",700:"#d32f2f",800:"#c62828",900:"#b71c1c",A100:"#ff8a80",A200:"#ff5252",A400:"#ff1744",A700:"#d50000"},m={50:"#fff3e0",100:"#ffe0b2",200:"#ffcc80",300:"#ffb74d",400:"#ffa726",500:"#ff9800",600:"#fb8c00",700:"#f57c00",800:"#ef6c00",900:"#e65100",A100:"#ffd180",A200:"#ffab40",A400:"#ff9100",A700:"#ff6d00"},g={50:"#e3f2fd",100:"#bbdefb",200:"#90caf9",300:"#64b5f6",400:"#42a5f5",500:"#2196f3",600:"#1e88e5",700:"#1976d2",800:"#1565c0",900:"#0d47a1",A100:"#82b1ff",A200:"#448aff",A400:"#2979ff",A700:"#2962ff"},v={50:"#e1f5fe",100:"#b3e5fc",200:"#81d4fa",300:"#4fc3f7",400:"#29b6f6",500:"#03a9f4",600:"#039be5",700:"#0288d1",800:"#0277bd",900:"#01579b",A100:"#80d8ff",A200:"#40c4ff",A400:"#00b0ff",A700:"#0091ea"},y={50:"#e8f5e9",100:"#c8e6c9",200:"#a5d6a7",300:"#81c784",400:"#66bb6a",500:"#4caf50",600:"#43a047",700:"#388e3c",800:"#2e7d32",900:"#1b5e20",A100:"#b9f6ca",A200:"#69f0ae",A400:"#00e676",A700:"#00c853"},b=["mode","contrastThreshold","tonalOffset"],x={text:{primary:"rgba(0, 0, 0, 0.87)",secondary:"rgba(0, 0, 0, 0.6)",disabled:"rgba(0, 0, 0, 0.38)"},divider:"rgba(0, 0, 0, 0.12)",background:{paper:d.white,default:d.white},action:{active:"rgba(0, 0, 0, 0.54)",hover:"rgba(0, 0, 0, 0.04)",hoverOpacity:.04,selected:"rgba(0, 0, 0, 0.08)",selectedOpacity:.08,disabled:"rgba(0, 0, 0, 0.26)",disabledBackground:"rgba(0, 0, 0, 0.12)",disabledOpacity:.38,focus:"rgba(0, 0, 0, 0.12)",focusOpacity:.12,activatedOpacity:.12}},A={text:{primary:d.white,secondary:"rgba(255, 255, 255, 0.7)",disabled:"rgba(255, 255, 255, 0.5)",icon:"rgba(255, 255, 255, 0.5)"},divider:"rgba(255, 255, 255, 0.12)",background:{paper:"#121212",default:"#121212"},action:{active:d.white,hover:"rgba(255, 255, 255, 0.08)",hoverOpacity:.08,selected:"rgba(255, 255, 255, 0.16)",selectedOpacity:.16,disabled:"rgba(255, 255, 255, 0.3)",disabledBackground:"rgba(255, 255, 255, 0.12)",disabledOpacity:.38,focus:"rgba(255, 255, 255, 0.12)",focusOpacity:.12,activatedOpacity:.24}};function D(e,t,n,r){const o=r.light||r,a=r.dark||1.5*r;e[t]||(e.hasOwnProperty(n)?e[t]=e[n]:"light"===t?e.light=(0,c.a)(e.main,o):"dark"===t&&(e.dark=(0,c.e$)(e.main,a)))}function k(e){const{mode:t="light",contrastThreshold:n=3,tonalOffset:s=.2}=e,l=(0,o.A)(e,b),u=e.primary||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:g[200],light:g[50],dark:g[400]}:{main:g[700],light:g[400],dark:g[800]}}(t),k=e.secondary||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:h[200],light:h[50],dark:h[400]}:{main:h[500],light:h[300],dark:h[700]}}(t),w=e.error||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:f[500],light:f[300],dark:f[700]}:{main:f[700],light:f[400],dark:f[800]}}(t),S=e.info||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:v[400],light:v[300],dark:v[700]}:{main:v[700],light:v[500],dark:v[900]}}(t),E=e.success||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:y[400],light:y[300],dark:y[700]}:{main:y[800],light:y[500],dark:y[900]}}(t),_=e.warning||function(){return"dark"===(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"light")?{main:m[400],light:m[300],dark:m[700]}:{main:"#ed6c02",light:m[500],dark:m[900]}}(t);function C(e){return(0,c.eM)(e,A.text.primary)>=n?A.text.primary:x.text.primary}const F=e=>{let{color:t,name:n,mainShade:o=500,lightShade:i=300,darkShade:l=700}=e;if(t=(0,r.A)({},t),!t.main&&t[o]&&(t.main=t[o]),!t.hasOwnProperty("main"))throw new Error((0,a.A)(11,n?" (".concat(n,")"):"",o));if("string"!==typeof t.main)throw new Error((0,a.A)(12,n?" (".concat(n,")"):"",JSON.stringify(t.main)));return D(t,"light",i,s),D(t,"dark",l,s),t.contrastText||(t.contrastText=C(t.main)),t},T={dark:A,light:x};return(0,i.A)((0,r.A)({common:(0,r.A)({},d),mode:t,primary:F({color:u,name:"primary"}),secondary:F({color:k,name:"secondary",mainShade:"A400",lightShade:"A200",darkShade:"A700"}),error:F({color:w,name:"error"}),warning:F({color:_,name:"warning"}),info:F({color:S,name:"info"}),success:F({color:E,name:"success"}),grey:p,contrastThreshold:n,getContrastText:C,augmentColor:F,tonalOffset:s},T[t]),l)}const w=["fontFamily","fontSize","fontWeightLight","fontWeightRegular","fontWeightMedium","fontWeightBold","htmlFontSize","allVariants","pxToRem"];const S={textTransform:"uppercase"},E='"Roboto", "Helvetica", "Arial", sans-serif';function _(e,t){const n="function"===typeof t?t(e):t,{fontFamily:a=E,fontSize:s=14,fontWeightLight:l=300,fontWeightRegular:u=400,fontWeightMedium:c=500,fontWeightBold:d=700,htmlFontSize:p=16,allVariants:h,pxToRem:f}=n,m=(0,o.A)(n,w);const g=s/14,v=f||(e=>"".concat(e/p*g,"rem")),y=(e,t,n,o,i)=>{return(0,r.A)({fontFamily:a,fontWeight:e,fontSize:v(t),lineHeight:n},a===E?{letterSpacing:"".concat((s=o/t,Math.round(1e5*s)/1e5),"em")}:{},i,h);var s},b={h1:y(l,96,1.167,-1.5),h2:y(l,60,1.2,-.5),h3:y(u,48,1.167,0),h4:y(u,34,1.235,.25),h5:y(u,24,1.334,0),h6:y(c,20,1.6,.15),subtitle1:y(u,16,1.75,.15),subtitle2:y(c,14,1.57,.1),body1:y(u,16,1.5,.15),body2:y(u,14,1.43,.15),button:y(c,14,1.75,.4,S),caption:y(u,12,1.66,.4),overline:y(u,12,2.66,1,S),inherit:{fontFamily:"inherit",fontWeight:"inherit",fontSize:"inherit",lineHeight:"inherit",letterSpacing:"inherit"}};return(0,i.A)((0,r.A)({htmlFontSize:p,pxToRem:v,fontFamily:a,fontSize:s,fontWeightLight:l,fontWeightRegular:u,fontWeightMedium:c,fontWeightBold:d},b),m,{clone:!1})}function C(){return["".concat(arguments.length<=0?void 0:arguments[0],"px ").concat(arguments.length<=1?void 0:arguments[1],"px ").concat(arguments.length<=2?void 0:arguments[2],"px ").concat(arguments.length<=3?void 0:arguments[3],"px rgba(0,0,0,").concat(.2,")"),"".concat(arguments.length<=4?void 0:arguments[4],"px ").concat(arguments.length<=5?void 0:arguments[5],"px ").concat(arguments.length<=6?void 0:arguments[6],"px ").concat(arguments.length<=7?void 0:arguments[7],"px rgba(0,0,0,").concat(.14,")"),"".concat(arguments.length<=8?void 0:arguments[8],"px ").concat(arguments.length<=9?void 0:arguments[9],"px ").concat(arguments.length<=10?void 0:arguments[10],"px ").concat(arguments.length<=11?void 0:arguments[11],"px rgba(0,0,0,").concat(.12,")")].join(",")}const F=["none",C(0,2,1,-1,0,1,1,0,0,1,3,0),C(0,3,1,-2,0,2,2,0,0,1,5,0),C(0,3,3,-2,0,3,4,0,0,1,8,0),C(0,2,4,-1,0,4,5,0,0,1,10,0),C(0,3,5,-1,0,5,8,0,0,1,14,0),C(0,3,5,-1,0,6,10,0,0,1,18,0),C(0,4,5,-2,0,7,10,1,0,2,16,1),C(0,5,5,-3,0,8,10,1,0,3,14,2),C(0,5,6,-3,0,9,12,1,0,3,16,2),C(0,6,6,-3,0,10,14,1,0,4,18,3),C(0,6,7,-4,0,11,15,1,0,4,20,3),C(0,7,8,-4,0,12,17,2,0,5,22,4),C(0,7,8,-4,0,13,19,2,0,5,24,4),C(0,7,9,-4,0,14,21,2,0,5,26,4),C(0,8,9,-5,0,15,22,2,0,6,28,5),C(0,8,10,-5,0,16,24,2,0,6,30,5),C(0,8,11,-5,0,17,26,2,0,6,32,5),C(0,9,11,-5,0,18,28,2,0,7,34,6),C(0,9,12,-6,0,19,29,2,0,7,36,6),C(0,10,13,-6,0,20,31,3,0,8,38,7),C(0,10,13,-6,0,21,33,3,0,8,40,7),C(0,10,14,-6,0,22,35,3,0,8,42,7),C(0,11,14,-7,0,23,36,3,0,9,44,8),C(0,11,15,-7,0,24,38,3,0,9,46,8)];var T=n(7782);const j={mobileStepper:1e3,fab:1050,speedDial:1050,appBar:1100,drawer:1200,modal:1300,snackbar:1400,tooltip:1500},z=["breakpoints","mixins","spacing","palette","transitions","typography","shape"];function I(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{mixins:t={},palette:n={},transitions:c={},typography:d={}}=e,p=(0,o.A)(e,z);if(e.vars&&void 0===e.generateCssVars)throw new Error((0,a.A)(18));const h=k(n),f=(0,u.A)(e);let m=(0,i.A)(f,{mixins:(g=f.breakpoints,v=t,(0,r.A)({toolbar:{minHeight:56,[g.up("xs")]:{"@media (orientation: landscape)":{minHeight:48}},[g.up("sm")]:{minHeight:64}}},v)),palette:h,shadows:F.slice(),typography:_(h,d),transitions:(0,T.Ay)(c),zIndex:(0,r.A)({},j)});var g,v;m=(0,i.A)(m,p);for(var y=arguments.length,b=new Array(y>1?y-1:0),x=1;x(0,i.A)(e,t),m),m.unstable_sxConfig=(0,r.A)({},s.A,null==p?void 0:p.unstable_sxConfig),m.unstable_sx=function(e){return(0,l.A)({sx:e,theme:this})},m}const L=I},6997(e,t,n){"use strict";n.d(t,{A:()=>s,Q:()=>a});var r=n(4320),o=n(8661);function a(e){if("object"!==typeof e||null===e)return!1;const t=Object.getPrototypeOf(e);return(null===t||t===Object.prototype||null===Object.getPrototypeOf(t))&&!(Symbol.toStringTag in e)&&!(Symbol.iterator in e)}function i(e){if(o.isValidElement(e)||!a(e))return e;const t={};return Object.keys(e).forEach(n=>{t[n]=i(e[n])}),t}function s(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{clone:!0};const l=n.clone?(0,r.A)({},e):e;return a(e)&&a(t)&&Object.keys(t).forEach(r=>{o.isValidElement(t[r])?l[r]=t[r]:a(t[r])&&Object.prototype.hasOwnProperty.call(e,r)&&a(e[r])?l[r]=s(e[r],t[r],n):n.clone?l[r]=a(t[r])?i(t[r]):t[r]:l[r]=t[r]}),l}},7029(e,t,n){e.exports=function(e){"use strict";var t=Object.freeze({__proto__:null,get ExpressionStatement(){return Ue},get BlockStatement(){return Ve},get EmptyStatement(){return He},get DebuggerStatement(){return Ge},get ReturnStatement(){return qe},get BreakStatement(){return Ke},get ContinueStatement(){return $e},get LabeledStatement(){return Ye},get WithStatement(){return Xe},get IfStatement(){return Qe},get SwitchStatement(){return Je},get SwitchCase(){return Ze},get ThrowStatement(){return et},get TryStatement(){return tt},get CatchClause(){return nt},get WhileStatement(){return rt},get DoWhileStatement(){return ot},get ForStatement(){return at},get ForInStatement(){return it},get ForOfStatement(){return st}}),r=Object.freeze({__proto__:null,get FunctionDeclaration(){return lt},get VariableDeclaration(){return ut},get VariableDeclarator(){return ct},get ClassDeclaration(){return dt},get ClassBody(){return pt},get MethodDefinition(){return ht},get PropertyDefinition(){return ft},get StaticBlock(){return mt},get ImportDeclaration(){return gt},get ExportDefaultDeclaration(){return vt},get ExportNamedDeclaration(){return yt},get ExportAllDeclaration(){return bt}}),o=Object.freeze({__proto__:null,get ExpressionStatement(){return on},get BlockStatement(){return an},get EmptyStatement(){return sn},get DebuggerStatement(){return ln},get ReturnStatement(){return un},get BreakStatement(){return cn},get ContinueStatement(){return dn},get LabeledStatement(){return pn},get WithStatement(){return hn},get IfStatement(){return fn},get SwitchStatement(){return mn},get SwitchCase(){return gn},get ThrowStatement(){return vn},get TryStatement(){return yn},get CatchClause(){return bn},get WhileStatement(){return xn},get DoWhileStatement(){return An},get ForStatement(){return Dn},get ForInStatement(){return kn},get ForOfStatement(){return wn}}),a=Object.freeze({__proto__:null,get FunctionDeclaration(){return Sn},get VariableDeclaration(){return En},get VariableDeclarator(){return _n},get ClassDeclaration(){return Cn},get ClassBody(){return Fn},get MethodDefinition(){return Tn},get PropertyDefinition(){return jn},get StaticBlock(){return zn},get ImportDeclaration(){return In},get ExportDefaultDeclaration(){return Ln},get ExportNamedDeclaration(){return Pn},get ExportAllDeclaration(){return Rn}});function i(e,t){var n,r,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:s(0),throw:s(1),return:s(2)},"function"===typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function s(e){return function(t){return l([e,t])}}function l(a){if(n)throw new TypeError("Generator is already executing.");for(;i;)try{if(n=1,r&&(o=2&a[0]?r.return:a[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,a[1])).done)return o;switch(r=0,o&&(a=[2&a[0],o.value]),a[0]){case 0:case 1:o=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,r=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}function l(e,t){var n="function"===typeof Symbol&&e[Symbol.iterator];if(!n)return e;var r,o,a=n.call(e),i=[];try{for(;(void 0===t||t-- >0)&&!(r=a.next()).done;)i.push(r.value)}catch(s){o={error:s}}finally{try{r&&!r.done&&(n=a.return)&&n.call(a)}finally{if(o)throw o.error}}return i}function u(){for(var e=[],t=0;t=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}}}var N={RES:void 0},O={RES:void 0},B={LABEL:void 0},M={LABEL:void 0},W=P("super"),U=P("supercall"),V=P("noctor"),H=P("clsctor"),G=P("newtarget"),q=P("private"),K=P("noinit"),$=P("deadzone"),Y=P("import"),X=P("exports"),Q="0.5.9",J=function(){function e(e,t){this.kind=e,this.value=t}return e.prototype.get=function(){return this.value},e.prototype.set=function(e){if("const"===this.kind)throw new TypeError("Assignment to constant variable");return this.value=e},e}(),Z=function(){function e(e,t){this.object=e,this.property=t}return e.prototype.get=function(){return this.object[this.property]},e.prototype.set=function(e){return this.object[this.property]=e,!0},e.prototype.del=function(){return delete this.object[this.property]},e}(),ee=function(){function e(e,t){void 0===e&&(e=null),void 0===t&&(t=!1),this.context=w(null),this.withContext=w(null),this.parent=e,this.isolated=t}return e.prototype.global=function(){for(var e=this;e.parent;)e=e.parent;return e},e.prototype.find=function(e){if(this.context[e])return this.context[e];if(e in this.withContext)return new Z(this.withContext,e);if(this.parent)return this.parent.find(e);var t=this.global().find("window").get();return e in t?new Z(t,e):null},e.prototype.var=function(e,t){for(var n=this;n.parent&&!n.isolated;)n=n.parent;var r=n.context[e];if(r){if("var"!==r.kind)throw new SyntaxError("Identifier '"+e+"' has already been declared");t!==K&&r.set(t)}else n.context[e]=new J("var",t===K?void 0:t);if(!n.parent){var o=n.find("window").get();t!==K&&d(o,e,{value:t,writable:!0,enumerable:!0})}},e.prototype.let=function(e,t){var n=this.context[e];if(n&&n.get()!==$)throw new SyntaxError("Identifier '"+e+"' has already been declared");this.context[e]=new J("let",t)},e.prototype.const=function(e,t){var n=this.context[e];if(n&&n.get()!==$)throw new SyntaxError("Identifier '"+e+"' has already been declared");this.context[e]=new J("const",t)},e.prototype.func=function(e,t){var n=this.context[e];if(n&&"var"!==n.kind)throw new SyntaxError("Identifier '"+e+"' has already been declared");this.context[e]=new J("var",t)},e.prototype.with=function(e){Object.keys(e)&&(this.withContext=e)},e}();function te(e,t){void 0===t&&(t={});var n=t.res,r=t.err,o=t.ret,a=t.fullRet;return new Promise(function(i,s){if("ret"in t)return i(e.return(o));function l(t){var n;try{n=e.next(t)}catch(r){return s(r)}return c(n),null}function u(t){var n;try{n=e.throw(t)}catch(r){return s(r)}c(n)}function c(e){if(e.done)return i(a?e:e.value);if(e.value!==N)return i(e);var t=e.value.RES;return(t&&"function"===t.then?t:Promise.resolve(t)).then(l,u)}"err"in t?u(r):l(n)})}function ne(e,t,n){var r,o,a,s,l,u;return void 0===n&&(n={}),i(this,function(i){if(r=n.getVar,o=void 0!==r&&r,a=n.throwErr,s=void 0===a||a,"undefined"===e.name)return[2,void 0];if(l=t.find(e.name)){if(o)return[2,l];if((u=l.get())===$)throw new ReferenceError(e.name+" is not defined");return[2,u]}if(s)throw new ReferenceError(e.name+" is not defined");return[2,void 0]})}var re=Object.freeze({__proto__:null,Identifier:ne});function oe(e,t){return i(this,function(t){return[2,e.value]})}var ae=Object.freeze({__proto__:null,Literal:oe});function ie(e,t){var n;return i(this,function(e){if((n=t.find(U))&&!n.get())throw new ReferenceError("Must call super constructor in derived class before accessing 'this' or returning from derived constructor");return[2,t.find("this").get()]})}function se(e,t){var n,r,o,a,l,u,c;return i(this,function(i){switch(i.label){case 0:n=[],r=0,i.label=1;case 1:return r":return[2,n>r];case">=":return[2,n>=r];case"<<":return[2,n<>":return[2,n>>r];case">>>":return[2,n>>>r];case"+":return[2,n+r];case"-":return[2,n-r];case"*":return[2,n*r];case"**":return[2,Math.pow(n,r)];case"/":return[2,n/r];case"%":return[2,n%r];case"|":return[2,n|r];case"^":return[2,n^r];case"&":return[2,n&r];case"in":return[2,n in r];case"instanceof":return[2,n instanceof r];default:throw new SyntaxError("Unexpected token "+e.operator)}}})}function he(e,t){var n,r,o,a,l,u;return i(this,function(i){switch(i.label){case 0:return"Identifier"!==(n=e.left).type?[3,2]:[5,s(ne(n,t,{getVar:!0,throwErr:!1}))];case 1:return(r=i.sent())||(o=t.global().find("window").get(),r=new Z(o,n.name)),[3,7];case 2:return"MemberExpression"!==n.type?[3,4]:[5,s(me(n,t,{getVar:!0}))];case 3:return r=i.sent(),[3,7];case 4:case 7:return[5,s(We(e.right,t))];case 5:return a=i.sent(),[5,s(Gn(n,t,{feed:a}))];case 6:return[2,i.sent()];case 8:switch(l=i.sent(),e.operator){case"=":return r.set(l),[2,r.get()];case"+=":return r.set(r.get()+l),[2,r.get()];case"-=":return r.set(r.get()-l),[2,r.get()];case"*=":return r.set(r.get()*l),[2,r.get()];case"/=":return r.set(r.get()/l),[2,r.get()];case"%=":return r.set(r.get()%l),[2,r.get()];case"**=":return r.set(Math.pow(r.get(),l)),[2,r.get()];case"<<=":return r.set(r.get()<>=":return r.set(r.get()>>l),[2,r.get()];case">>>=":return r.set(r.get()>>>l),[2,r.get()];case"|=":return r.set(r.get()|l),[2,r.get()];case"^=":return r.set(r.get()^l),[2,r.get()];case"&=":return r.set(r.get()&l),[2,r.get()];case"??=":return r.set(null!==(u=r.get())&&void 0!==u?u:l),[2,r.get()];case"&&=":return r.set(r.get()&&l),[2,r.get()];case"||=":return r.set(r.get()||l),[2,r.get()];default:throw new SyntaxError("Unexpected token "+e.operator)}}})}function fe(e,t){var n,r,o,a;return i(this,function(i){switch(i.label){case 0:switch(e.operator){case"||":return[3,1];case"&&":return[3,5];case"??":return[3,9]}return[3,14];case 1:return[5,s(We(e.left,t))];case 2:return(n=i.sent())?[3,4]:[5,s(We(e.right,t))];case 3:n=i.sent(),i.label=4;case 4:return[2,n];case 5:return[5,s(We(e.left,t))];case 6:return(r=i.sent())?[5,s(We(e.right,t))]:[3,8];case 7:r=i.sent(),i.label=8;case 8:return[2,r];case 9:return[5,s(We(e.left,t))];case 10:return null===(a=i.sent())||void 0===a?[3,11]:(o=a,[3,13]);case 11:return[5,s(We(e.right,t))];case 12:o=i.sent(),i.label=13;case 13:return[2,o];case 14:throw new SyntaxError("Unexpected token "+e.operator)}})}function me(e,t,n){var r,o,a,l,u,c,p,h,f,m,g;return void 0===n&&(n={}),i(this,function(i){switch(i.label){case 0:return r=n.getObj,o=void 0!==r&&r,a=n.getVar,l=void 0!==a&&a,"Super"!==e.object.type?[3,2]:[5,s(Ee(e.object,t,{getProto:!0}))];case 1:return u=i.sent(),[3,4];case 2:return[5,s(We(e.object,t))];case 3:u=i.sent(),i.label=4;case 4:return o?[2,u]:(p=!1,e.computed?[5,s(We(e.property,t))]:[3,6]);case 5:return c=i.sent(),[3,7];case 6:"PrivateIdentifier"===e.property.type?(c=e.property.name,p=!0):c=e.property.name,i.label=7;case 7:return p&&(u=u[q]),l?(h=k(u,c),"Super"===e.object.type&&h?(g=t.find("this").get(),f=P(c),d(g,f,{set:h}),[2,new Z(g,f)]):[2,new Z(u,c)]):(m=D(u,c),"Super"===e.object.type&&m?(g=t.find("this").get(),e.optional&&null==g?[2,void 0]:[2,m.call(g)]):e.optional&&null==u?[2,void 0]:[2,u[c]])}})}function ge(e,t){var n;return i(this,function(r){switch(r.label){case 0:return[5,s(We(e.test,t))];case 1:return r.sent()?[5,s(We(e.consequent,t))]:[3,3];case 2:return n=r.sent(),[3,5];case 3:return[5,s(We(e.alternate,t))];case 4:n=r.sent(),r.label=5;case 5:return[2,n]}})}function ve(e,t){var n,r,o,a,l,u,c,d,p,h,f,m,g,v,y;return i(this,function(i){switch(i.label){case 0:return"MemberExpression"!==e.callee.type?[3,5]:[5,s(me(e.callee,t,{getObj:!0}))];case 1:return r=i.sent(),e.callee.optional&&null==r?[2,void 0]:(o=void 0,a=!1,e.callee.computed?[5,s(We(e.callee.property,t))]:[3,3]);case 2:return o=i.sent(),[3,4];case 3:"PrivateIdentifier"===e.callee.property.type?(o=e.callee.property.name,a=!0):o=e.callee.property.name,i.label=4;case 4:if(l=r,a&&(l=l[q]),"Super"===e.callee.object.type?(u=t.find("this").get(),n=l[o].bind(u)):n=l[o],e.optional&&null==n)return[2,void 0];if("function"!==typeof n)throw new TypeError(o+" is not a function");if(n[H])throw new TypeError("Class constructor "+o+" cannot be invoked without 'new'");return[3,7];case 5:return r=t.find("this").get(),[5,s(We(e.callee,t))];case 6:if(n=i.sent(),e.optional&&null==n)return[2,void 0];if("function"!==typeof n||"Super"!==e.callee.type&&n[H]){if("Identifier"===e.callee.type)c=e.callee.name;else try{c=JSON.stringify(n)}catch(Xn){c=""+n}throw"function"!==typeof n?new TypeError(c+" is not a function"):new TypeError("Class constructor "+c+" cannot be invoked without 'new'")}i.label=7;case 7:d=[],p=0,i.label=8;case 8:return p":return n>r;case">=":return n>=r;case"<<":return n<>":return n>>r;case">>>":return n>>>r;case"+":return n+r;case"-":return n-r;case"*":return n*r;case"**":return Math.pow(n,r);case"/":return n/r;case"%":return n%r;case"|":return n|r;case"^":return n^r;case"&":return n&r;case"in":return n in r;case"instanceof":return n instanceof r;default:throw new SyntaxError("Unexpected token "+e.operator)}}function jt(e,t){var n,r,o=e.left;if("Identifier"===o.type){if(!(r=xt(o,t,{getVar:!0,throwErr:!1}))){var a=t.global().find("window").get();r=new Z(a,o.name)}}else{if("MemberExpression"!==o.type)return Bn(o,t,{feed:rn(e.right,t)});r=It(o,t,{getVar:!0})}var i=rn(e.right,t);switch(e.operator){case"=":return r.set(i),r.get();case"+=":return r.set(r.get()+i),r.get();case"-=":return r.set(r.get()-i),r.get();case"*=":return r.set(r.get()*i),r.get();case"/=":return r.set(r.get()/i),r.get();case"%=":return r.set(r.get()%i),r.get();case"**=":return r.set(Math.pow(r.get(),i)),r.get();case"<<=":return r.set(r.get()<>=":return r.set(r.get()>>i),r.get();case">>>=":return r.set(r.get()>>>i),r.get();case"|=":return r.set(r.get()|i),r.get();case"^=":return r.set(r.get()^i),r.get();case"&=":return r.set(r.get()&i),r.get();case"??=":return r.set(null!==(n=r.get())&&void 0!==n?n:i),r.get();case"&&=":return r.set(r.get()&&i),r.get();case"||=":return r.set(r.get()||i),r.get();default:throw new SyntaxError("Unexpected token "+e.operator)}}function zt(e,t){var n;switch(e.operator){case"||":return rn(e.left,t)||rn(e.right,t);case"&&":return rn(e.left,t)&&rn(e.right,t);case"??":return null!==(n=rn(e.left,t))&&void 0!==n?n:rn(e.right,t);default:throw new SyntaxError("Unexpected token "+e.operator)}}function It(e,t,n){void 0===n&&(n={});var r,o,a=n.getObj,i=void 0!==a&&a,s=n.getVar,l=void 0!==s&&s;if(r="Super"===e.object.type?Ht(e.object,t,{getProto:!0}):rn(e.object,t),i)return r;var u=!1;if(e.computed?o=rn(e.property,t):"PrivateIdentifier"===e.property.type?(o=e.property.name,u=!0):o=e.property.name,u&&(r=r[q]),l){var c=k(r,o);if("Super"===e.object.type&&c){var p=t.find("this").get(),h=P(o);return d(p,h,{set:c}),new Z(p,h)}return new Z(r,o)}var f=D(r,o);if("Super"===e.object.type&&f){if(p=t.find("this").get(),e.optional&&null==p)return;return f.call(p)}return e.optional&&null==r?void 0:r[o]}function Lt(e,t){return rn(e.test,t)?rn(e.consequent,t):rn(e.alternate,t)}function Pt(e,t){var n,r;if("MemberExpression"===e.callee.type){if(r=It(e.callee,t,{getObj:!0}),e.callee.optional&&null==r)return;var o=void 0,a=!1;e.callee.computed?o=rn(e.callee.property,t):"PrivateIdentifier"===e.callee.property.type?(o=e.callee.property.name,a=!0):o=e.callee.property.name;var i=r;if(a&&(i=i[q]),"Super"===e.callee.object.type){var s=t.find("this").get();n=i[o].bind(s)}else n=i[o];if(e.optional&&null==n)return;if("function"!==typeof n)throw new TypeError(o+" is not a function");if(n[H])throw new TypeError("Class constructor "+o+" cannot be invoked without 'new'")}else{if(r=t.find("this").get(),n=rn(e.callee,t),e.optional&&null==n)return;if("function"!==typeof n||"Super"!==e.callee.type&&n[H]){var l;if("Identifier"===e.callee.type)l=e.callee.name;else try{l=JSON.stringify(n)}catch(Xn){l=""+n}throw"function"!==typeof n?new TypeError(l+" is not a function"):new TypeError("Class constructor "+l+" cannot be invoked without 'new'")}}for(var u=[],c=0;c-1;s--)e.body.splice(i[s],1);e.body=a.concat(e.body)}}function On(e,t){switch(e.type){case"VariableDeclaration":En(e,t,{hoist:!0});break;case"ForInStatement":case"ForOfStatement":"VariableDeclaration"===e.left.type&&En(e.left,t,{hoist:!0});case"ForStatement":"ForStatement"===e.type&&"VariableDeclaration"===e.init.type&&En(e.init,t,{hoist:!0});case"WhileStatement":case"DoWhileStatement":On(e.body,t);break;case"IfStatement":On(e.consequent,t),e.alternate&&On(e.alternate,t);break;case"BlockStatement":for(var n=0;n-1;c--)e.body.splice(l[c],1);e.body=a.concat(e.body)}return[2]}})}function Hn(e,t){var n,r,o,a,l;return i(this,function(i){switch(i.label){case 0:switch(e.type){case"VariableDeclaration":return[3,1];case"ForInStatement":case"ForOfStatement":return[3,3];case"ForStatement":return[3,5];case"WhileStatement":case"DoWhileStatement":return[3,7];case"IfStatement":return[3,9];case"BlockStatement":return[3,13];case"SwitchStatement":return[3,18];case"TryStatement":return[3,25]}return[3,38];case 1:return[5,s(ut(e,t,{hoist:!0}))];case 2:return i.sent(),[3,38];case 3:return"VariableDeclaration"!==e.left.type?[3,5]:[5,s(ut(e.left,t,{hoist:!0}))];case 4:i.sent(),i.label=5;case 5:return"ForStatement"!==e.type||"VariableDeclaration"!==e.init.type?[3,7]:[5,s(ut(e.init,t,{hoist:!0}))];case 6:i.sent(),i.label=7;case 7:return[5,s(Hn(e.body,t))];case 8:return i.sent(),[3,38];case 9:return[5,s(Hn(e.consequent,t))];case 10:return i.sent(),e.alternate?[5,s(Hn(e.alternate,t))]:[3,12];case 11:i.sent(),i.label=12;case 12:return[3,38];case 13:l=0,i.label=14;case 14:return lYn))throw new Error("unsupported ecmaVer");if(this.options.ecmaVersion=n,this.options.sourceType=i,o){var s=L();this.scope.let("globalThis",s),this.scope.let("window",s),this.scope.let("this",s)}else this.scope.let("globalThis",F),this.scope.let("window",F),this.scope.let("this",F);this.scope.const("module"===i?X:"exports",this.exports={})}return t.prototype.import=function(e,t){var n;if("string"===typeof e&&((n={})[e]=t,e=n),"object"===typeof e)for(var r=m(e),o=0;o=13)?te(function(){return i(this,function(e){switch(e.label){case 0:return[5,s(Vn(t,n))];case 1:return e.sent(),[5,s(We(t,n))];case 2:return e.sent(),[2]}})}()):(Nn(t,n),rn(t,n))},t.version=Q,t}()}(n(8202))},7183(e,t,n){"use strict";n.d(t,{Ay:()=>s});var r=n(2791),o=n(1210),a=n(5863),i=n(4539);const s=(0,r.Ay)({themeId:a.A,defaultTheme:o.A,rootShouldForwardProp:i.A})},7197(e,t,n){"use strict";var r=n(8898);t.X4=h,t.e$=f,t.tL=g,t.eM=function(e,t){const n=p(e),r=p(t);return(Math.max(n,r)+.05)/(Math.min(n,r)+.05)},t.a=m;var o=r(n(288)),a=r(n(8442));function i(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return(0,a.default)(e,t,n)}function s(e){e=e.slice(1);const t=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map(e=>e+e)),n?"rgb".concat(4===n.length?"a":"","(").concat(n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", "),")"):""}function l(e){if(e.type)return e;if("#"===e.charAt(0))return l(s(e));const t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(n))throw new Error((0,o.default)(9,e));let r,a=e.substring(t+1,e.length-1);if("color"===n){if(a=a.split(" "),r=a.shift(),4===a.length&&"/"===a[3].charAt(0)&&(a[3]=a[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(r))throw new Error((0,o.default)(10,r))}else a=a.split(",");return a=a.map(e=>parseFloat(e)),{type:n,values:a,colorSpace:r}}const u=e=>{const t=l(e);return t.values.slice(0,3).map((e,n)=>-1!==t.type.indexOf("hsl")&&0!==n?"".concat(e,"%"):e).join(" ")};function c(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return-1!==t.indexOf("rgb")?r=r.map((e,t)=>t<3?parseInt(e,10):e):-1!==t.indexOf("hsl")&&(r[1]="".concat(r[1],"%"),r[2]="".concat(r[2],"%")),r=-1!==t.indexOf("color")?"".concat(n," ").concat(r.join(" ")):"".concat(r.join(", ")),"".concat(t,"(").concat(r,")")}function d(e){e=l(e);const{values:t}=e,n=t[0],r=t[1]/100,o=t[2]/100,a=r*Math.min(o,1-o),i=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e+n/30)%12;return o-a*Math.max(Math.min(t-3,9-t,1),-1)};let s="rgb";const u=[Math.round(255*i(0)),Math.round(255*i(8)),Math.round(255*i(4))];return"hsla"===e.type&&(s+="a",u.push(t[3])),c({type:s,values:u})}function p(e){let t="hsl"===(e=l(e)).type||"hsla"===e.type?l(d(e)).values:e.values;return t=t.map(t=>("color"!==e.type&&(t/=255),t<=.03928?t/12.92:((t+.055)/1.055)**2.4)),Number((.2126*t[0]+.7152*t[1]+.0722*t[2]).toFixed(3))}function h(e,t){return e=l(e),t=i(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]="/".concat(t):e.values[3]=t,c(e)}function f(e,t){if(e=l(e),t=i(t),-1!==e.type.indexOf("hsl"))e.values[2]*=1-t;else if(-1!==e.type.indexOf("rgb")||-1!==e.type.indexOf("color"))for(let n=0;n<3;n+=1)e.values[n]*=1-t;return c(e)}function m(e,t){if(e=l(e),t=i(t),-1!==e.type.indexOf("hsl"))e.values[2]+=(100-e.values[2])*t;else if(-1!==e.type.indexOf("rgb"))for(let n=0;n<3;n+=1)e.values[n]+=(255-e.values[n])*t;else if(-1!==e.type.indexOf("color"))for(let n=0;n<3;n+=1)e.values[n]+=(1-e.values[n])*t;return c(e)}function g(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.15;return p(e)>.5?f(e,t):m(e,t)}},7261(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"m20.41 8.41-4.83-4.83c-.37-.37-.88-.58-1.41-.58H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V9.83c0-.53-.21-1.04-.59-1.42M7 7h7v2H7zm10 10H7v-2h10zm0-4H7v-2h10z"}),"TextSnippet")},7301(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(8915);function o(e,t){if(null==e)return{};var n,o,a=(0,r.A)(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;ol,Gi:()=>d,NG:()=>h,OT:()=>s,TW:()=>u,WL:()=>i,_E:()=>c,ck:()=>m,lN:()=>f,p1:()=>p});var r=n(4107),o=n(5493),a=n(1367);const i="*",s="#209CEE",l="font",u="split_disable",c=[u,"split_punctuation","split_textlength"],d="highlight_disable",p=[d,"highlight_beforetrans","highlight_aftertrans"],h={pattern:"",enabled:!0,selector:"",keepSelector:"",blockSelector:"",terms:"",aiTerms:"",apiSlug:i,fromLang:i,toLang:i,textStyle:i,wrapOriginal:i,originalTextStyle:i,transOpen:i,textExtStyle:"",termsStyle:"",highlightStyle:"",selectStyle:"",parentStyle:"",grandStyle:"",injectJs:"",transOnly:i,transOnlyRevert:i,transOnlyRevertDelay:i,transOrder:i,transTag:i,transTitle:i,transStartHook:"",transEndHook:"",autoScan:i,hasRichText:i,hasShadowroot:i,scanAll:i,isPlainText:i,rootsSelector:"",ignoreSelector:"",splitParagraph:i,splitLength:0,highlightWords:i},f={pattern:"*",enabled:!0,selector:"h1, h2, h3, h4, h5, h6, li, p, dd, blockquote, figcaption, label, legend",keepSelector:"code, cite, math, .math, a:has(code)",blockSelector:"",terms:"",aiTerms:"",apiSlug:o.fF,fromLang:"auto",toLang:"zh-CN",textStyle:a.ns,wrapOriginal:"false",originalTextStyle:a.ns,transOpen:"false",textExtStyle:"",termsStyle:"font-weight: bold;",highlightStyle:"color: red;",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",parentStyle:"",grandStyle:"",injectJs:"",injectCss:"",transOnly:"false",transOnlyRevert:"false",transOnlyRevertDelay:"0.5",transTag:l,transTitle:"false",transStartHook:"",transEndHook:"",autoScan:"true",hasRichText:"true",hasShadowroot:"false",scanAll:"false",isPlainText:"false",rootsSelector:"body",ignoreSelector:"button, footer, pre, mark, nav, svg, img[src*='.svg'], [class*='logo'] svg, [id*='logo'] svg",splitParagraph:u,splitLength:100,highlightWords:d,transOrder:"original-first"},m=[f];Object.entries({"en.wikipedia.org":{ignoreSelector:".button, code, footer, form, mark, pre, .mwe-math-element, .mw-editsection"},"news.ycombinator.com":{selector:"p, .titleline, .commtext, .hn-item-title, .hn-comment-text, .hn-story-title",keepSelector:"code, img, svg, pre, .sitebit",ignoreSelector:"button, code, footer, form, header, mark, nav, pre, .reply",autoScan:"false"},"twitter.com, https://x.com":{selector:"[data-testid='tweetText'], [data-testid='twitter-article-title'], [data-testid='UserDescription'], .public-DraftStyleDefault-block, span.text-body, div.css-175oi2r.r-3pj75a div.css-175oi2r>span, div.css-175oi2r.r-3pj75a li>span, div.r-1s2bzr4>div.r-16dba41, div.r-16y2uox>div.r-1jeg54m",keepSelector:"img, svg, a, span:has(a), div:has(a)",ignoreSelector:"[data-testid='videoPlayer'], [data-testid^='tweetTextarea']",autoScan:"false",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;"},"www.youtube.com/live_chat":{rootsSelector:"div#items",selector:"span.yt-live-chat-text-message-renderer",autoScan:"false"},"www.youtube.com":{rootsSelector:"ytd-page-manager",ignoreSelector:"aside, button, footer, form, header, pre, mark, nav, #player, #container, .caption-window, .ytp-settings-menu, #kiss-youtube-subtitle-list-container",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",parentStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",grandStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;"},"web.telegram.org":{autoScan:"false",selector:".text-content, .embedded-text-wrapper",rootsSelector:".Transition"},"github.com":{autoScan:"false",selector:'h1, h2, h3, h4, h5, h6, .markdown-body li, p, dd, blockquote, figcaption, label, legend, .user-profile-bio>div, [data-testid="results-list"] .search-match, .Subhead-description, [class^="prc-SelectPanel-Subtitle-"], [class^="prc-ActionList-ItemLabel-"], [role="dialog"] .overflow-auto, .h4, .repos-list-description, .discussion-title, [class*="PinnedIssue-module__Link"] span, .js-wiki-sidebar-page-container :is(.Truncate-text, .Link--primary)',ignoreSelector:"button, p.pinned-item-desc+p"}}).map(e=>{let[t,n]=e;return(0,r.A)((0,r.A)({},n),{},{pattern:t})})},7325(e,t,n){"use strict";n.d(t,{QF:()=>c,v0:()=>d});var r=n(7877),o=n(4181),a=n(252),i=n(1223),s=n(2770),l=n(5628);const u=async(e,t)=>{let n=new Request(e,t);if("GET"!==n.method){const e=await n.text(),t=new URL(n.url);t.pathname+=e,n=new Request(t.toString(),{method:"GET"})}return n},c=(e,t)=>a.aQ&&!(0,i._9)()?(0,s.Ru)(r.QzF,{input:e,init:t}):(async e=>{let{input:t,init:n,expect:a}=e;try{const e=await u(t,n),o=await caches.open(r.bzl),i=await o.match(e);if(i)return await(0,l.x)(i,a)}catch(i){(0,o.h9)("get cache",i)}return null})({input:e,init:t});const d=(e,t,n)=>a.aQ&&!(0,i._9)()?(0,s.Ru)(r.j7m,{input:e,init:t,data:n}):(async e=>{let{input:t,init:n,data:a,maxAge:i=r.$kn}=e;try{const e=await u(t,n),o=await caches.open(r.bzl),s=new Response(JSON.stringify(a),{status:200,headers:{"Content-Type":"application/json","Cache-Control":"max-age=".concat(i)}});await o.put(e,s)}catch(s){(0,o.h9)("put cache",s)}})({input:e,init:t,data:n})},7458(e,t,n){"use strict";!function e(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(t){console.error(t)}}(),e.exports=n(1446)},7461(e,t,n){"use strict";var r;n.d(t,{A:()=>s});var o=n(8661);let a=0;const i=(r||(r=n.t(o,2)))["useId".toString()];function s(e){if(void 0!==i){const t=i();return null!=e?e:t}return function(e){const[t,n]=o.useState(e),r=e||t;return o.useEffect(()=>{null==t&&(a+=1,n("mui-".concat(a)))},[t]),r}(e)}},7470(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M11 18c0 1.1-.9 2-2 2s-2-.9-2-2 .9-2 2-2 2 .9 2 2m-2-8c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0-6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m6 4c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2m0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2m0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2"}),"DragIndicator")},7588(e,t,n){"use strict";n.d(t,{CQ:()=>s,En:()=>u,Ls:()=>a,N8:()=>o,UZ:()=>d,aM:()=>l,aZ:()=>i,qi:()=>c});var r=n(2398);const o="https://".concat(r.jM,"/translate"),a=("https://".concat(r.jM,"/subtitle"),"https://".concat(r.jM,"/detectlang")),i="https://".concat(r.jM,"/bingdict"),s="https://".concat(r.jM,"/dict"),l=("https://".concat(r.jM,"/context"),"https://github.com/fishjar/kiss-worker"),u="https://github.com/settings/personal-access-tokens",c="https://github.com/fishjar/kiss-rules/issues/new",d="https://raw.githubusercontent.com/fishjar/kiss-translator/master"},7599(e,t,n){"use strict";n.d(t,{A:()=>o});const r=e=>e,o=(()=>{let e=r;return{configure(t){e=t},generate:t=>e(t),reset(){e=r}}})()},7601(e,t,n){"use strict";function r(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}n.d(t,{A:()=>r})},7773(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M17 10H7v2h10zm2-7h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m0 16H5V8h14zm-5-5H7v2h7z"}),"EventNote")},7782(e,t,n){"use strict";n.d(t,{Ay:()=>c,p0:()=>s});var r=n(8915),o=n(4320);const a=["duration","easing","delay"],i={easeInOut:"cubic-bezier(0.4, 0, 0.2, 1)",easeOut:"cubic-bezier(0.0, 0, 0.2, 1)",easeIn:"cubic-bezier(0.4, 0, 1, 1)",sharp:"cubic-bezier(0.4, 0, 0.6, 1)"},s={shortest:150,shorter:200,short:250,standard:300,complex:375,enteringScreen:225,leavingScreen:195};function l(e){return"".concat(Math.round(e),"ms")}function u(e){if(!e)return 0;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}function c(e){const t=(0,o.A)({},i,e.easing),n=(0,o.A)({},s,e.duration);return(0,o.A)({getAutoHeightDuration:u,create:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:["all"],o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{duration:i=n.standard,easing:s=t.easeInOut,delay:u=0}=o;(0,r.A)(o,a);return(Array.isArray(e)?e:[e]).map(e=>"".concat(e," ").concat("string"===typeof i?i:l(i)," ").concat(s," ").concat("string"===typeof u?u:l(u))).join(",")}},e,{easing:t,duration:n})}},7811(e,t,n){"use strict";var r=n(8661),o=Symbol.for("react.element"),a=Symbol.for("react.fragment"),i=Object.prototype.hasOwnProperty,s=r.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function u(e,t,n){var r,a={},u=null,c=null;for(r in void 0!==n&&(u=""+n),void 0!==t.key&&(u=""+t.key),void 0!==t.ref&&(c=t.ref),t)i.call(t,r)&&!l.hasOwnProperty(r)&&(a[r]=t[r]);if(e&&e.defaultProps)for(r in t=e.defaultProps)void 0===a[r]&&(a[r]=t[r]);return{$$typeof:o,type:e,key:u,ref:c,props:a,_owner:s.current}}t.Fragment=a,t.jsx=u,t.jsxs=u},7830(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(4849).A},7833(e,t,n){"use strict";t.A=void 0;var r=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var n=a(t);if(n&&n.has(e))return n.get(e);var r={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var s=o?Object.getOwnPropertyDescriptor(e,i):null;s&&(s.get||s.set)?Object.defineProperty(r,i,s):r[i]=e[i]}return r.default=e,n&&n.set(e,r),r}(n(8661)),o=n(1876);function a(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,n=new WeakMap;return(a=function(e){return e?n:t})(e)}t.A=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=r.useContext(o.ThemeContext);return t&&(n=t,0!==Object.keys(n).length)?t:e;var n}},7877(e,t,n){"use strict";n.d(t,{$1M:()=>a.$1,$ET:()=>h.$E,$Kd:()=>a.$K,$QD:()=>a.$Q,$kn:()=>u.$k,AFg:()=>s.AF,AhL:()=>s.Ah,An9:()=>a.An,As$:()=>h.As,Au$:()=>s.Au,Azs:()=>s.Az,B7y:()=>s.B7,BQZ:()=>s.BQ,C3L:()=>a.C3,CEx:()=>o.CE,CQR:()=>s.CQ,CQi:()=>c.CQ,CWU:()=>u.CW,CxD:()=>s.Cx,DQg:()=>s.DQ,DR0:()=>d.DR,EDO:()=>h.ED,EEo:()=>a.EE,EZo:()=>s.EZ,Ed3:()=>u.Ed,EeC:()=>s.Ee,Efh:()=>i.Ef,EjO:()=>a.Ej,EnB:()=>c.En,Eqg:()=>s.Eq,EsI:()=>a.Es,Es_:()=>i.Es,F$3:()=>a.F$,F16:()=>a.F1,FS6:()=>a.FS,FsV:()=>a.Fs,Fxm:()=>a.Fx,G8K:()=>a.G8,GDU:()=>a.GD,Gie:()=>o.Gi,H74:()=>s.H7,HHP:()=>a.HH,HzO:()=>h.Hz,IFN:()=>s.IF,Imq:()=>a.Im,J4u:()=>d.J4,JCj:()=>u.JC,JIP:()=>a.JI,JWB:()=>a.JW,Jg9:()=>s.Jg,KBl:()=>a.KB,L32:()=>a.L3,LsT:()=>c.Ls,Mai:()=>d.M,N8G:()=>c.N8,N9F:()=>i.N9,NGo:()=>o.NG,NQu:()=>a.NQ,Nol:()=>s.No,NxJ:()=>s.Nx,O09:()=>a.O0,OTD:()=>o.OT,ObO:()=>i.Ob,OcY:()=>s.Oc,P97:()=>a.P9,PPd:()=>a.PP,Pco:()=>i.Pc,Qfh:()=>a.Qf,Qs8:()=>i.Qs,QsO:()=>h.Qs,QzF:()=>d.Qz,RFn:()=>i.RF,Rrc:()=>h.Rr,S0s:()=>i.S0,S6X:()=>a.S6,S6q:()=>a.zJ,SE1:()=>i.SE,SEs:()=>i.zh,SQ0:()=>a.SQ,SXq:()=>h.SX,T2s:()=>s.T2,TF1:()=>a.TF,THG:()=>l.TH,TWY:()=>o.TW,TY1:()=>d.TY,TYN:()=>h.TY,U$w:()=>a.U$,UF6:()=>a.UF,UFr:()=>a.Bi,UPC:()=>s.UP,UZK:()=>c.UZ,VEm:()=>h.VE,VFS:()=>u.VF,VfS:()=>h.Vf,Vnn:()=>i.Vn,VwZ:()=>r.Vw,WDZ:()=>h.WD,WL9:()=>o.WL,WTh:()=>a.WT,Wdi:()=>a.Wd,Wi5:()=>u.Wi,WwB:()=>a.Ww,WwQ:()=>s.Ww,X6r:()=>a.X6,XDR:()=>i.XD,XEV:()=>u.XE,YBK:()=>s.YB,Ymt:()=>a.Ym,Z2L:()=>a.Z2,ZSN:()=>i.ZS,Zzg:()=>s.Zz,_E_:()=>o._E,_TQ:()=>a._T,_sN:()=>h._s,aMu:()=>c.aM,aZh:()=>c.aZ,adh:()=>a.ad,aqb:()=>s.aq,axl:()=>s.ax,b9x:()=>a.b9,bCM:()=>a.bC,bNe:()=>a.bN,bqx:()=>a.bq,bzl:()=>u.bz,c0T:()=>a.c0,cO5:()=>d.cO,cPn:()=>i.cP,cbe:()=>a.cb,ckw:()=>o.ck,dGW:()=>a.dG,dXG:()=>s.dX,dyy:()=>a.dy,e70:()=>a.e7,eA2:()=>a.eA,eCV:()=>u.eC,eUB:()=>s.eU,ea4:()=>h.e,eb1:()=>i.eb,edy:()=>a.ed,eeL:()=>s.ee,ejN:()=>i.ej,fDS:()=>a.fD,fFW:()=>a.fF,fFq:()=>s.fF,fSx:()=>r.fS,fkE:()=>a.fk,fqf:()=>a.fq,h8v:()=>a.h8,hrO:()=>h.hr,i8R:()=>a.i8,iPC:()=>u.iP,iVS:()=>a.iV,j7m:()=>d.j7,jM6:()=>r.jM,jgE:()=>a.jg,jy$:()=>a.jy,k0k:()=>a.k0,kXF:()=>a.kX,kYm:()=>a.kY,lLy:()=>a.lL,lNu:()=>o.lN,lQO:()=>i.lQ,la7:()=>s.l,lbn:()=>a.lb,leo:()=>i.le,lgC:()=>u.lg,loo:()=>a.lo,mP$:()=>s.mP,mSZ:()=>a.mS,mmp:()=>a.mm,moZ:()=>s.mo,msE:()=>h.ms,n4W:()=>a.n4,nQv:()=>s.nQ,n_K:()=>p.n_,nsG:()=>h.ns,o$A:()=>s.o$,oGC:()=>i.oG,ojT:()=>p.oj,p1w:()=>o.p1,ppg:()=>a.pp,q77:()=>a.q7,qim:()=>c.qi,qj6:()=>i.qj,qxj:()=>p.qx,r$0:()=>u.r$,r1p:()=>u.r1,rKK:()=>u.rK,rUY:()=>a.rU,rVi:()=>i.rV,r_y:()=>i.r_,s1S:()=>a.s1,sNP:()=>a.sN,sRu:()=>d.sR,sgk:()=>u.sg,snk:()=>a.sn,tEF:()=>s.tE,tPe:()=>p.tP,taj:()=>i.t,tok:()=>a.to,uMq:()=>i.uM,ul7:()=>a.ul,vGH:()=>p.vG,vH2:()=>a.vH,vLL:()=>d.vL,vcx:()=>s.vc,voX:()=>i.vo,vzt:()=>l.vz,w62:()=>a.w6,wJ4:()=>s.wJ,x0p:()=>s.x0,xIu:()=>i.xI,xN$:()=>a.xN,xTS:()=>i.xT,xfV:()=>a.xf,xhA:()=>a.xh,xoZ:()=>i.xo,yDH:()=>a.yD,yDM:()=>u.yD,ya_:()=>s.y,yi6:()=>u.yi,yzF:()=>s.yz,zMP:()=>h.zM,znP:()=>u.zn,zwp:()=>h.zw});var r=n(2398),o=n(7306),a=n(5493),i=n(4307),s=n(3565),l=n(3417),u=n(2216),c=n(7588),d=n(328),p=n(1822),h=n(1367)},7900(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M12 7c2.76 0 5 2.24 5 5 0 .65-.13 1.26-.36 1.83l2.92 2.92c1.51-1.26 2.7-2.89 3.43-4.75-1.73-4.39-6-7.5-11-7.5-1.4 0-2.74.25-3.98.7l2.16 2.16C10.74 7.13 11.35 7 12 7M2 4.27l2.28 2.28.46.46C3.08 8.3 1.78 10.02 1 12c1.73 4.39 6 7.5 11 7.5 1.55 0 3.03-.3 4.38-.84l.42.42L19.73 22 21 20.73 3.27 3zM7.53 9.8l1.55 1.55c-.05.21-.08.43-.08.65 0 1.66 1.34 3 3 3 .22 0 .44-.03.65-.08l1.55 1.55c-.67.33-1.41.53-2.2.53-2.76 0-5-2.24-5-5 0-.79.2-1.53.53-2.2m4.31-.78 3.15 3.15.02-.16c0-1.66-1.34-3-3-3z"}),"VisibilityOff")},7922(e,t,n){var r=n(7930);function o(e,t){var n,o=null;if(!e||"string"!==typeof e)return o;for(var a,i,s=r(e),l="function"===typeof t,u=0,c=s.length;ua});var r=n(9476),o=n(2639);function a(e){var t=(0,o.A)(e,"string");return"symbol"==(0,r.A)(t)?t:t+""}},8202(e,t){!function(e){"use strict";var t=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,80,3,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,343,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,330,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,726,6,110,6,6,9,4759,9,787719,239],n=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,71,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,2,60,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,328,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,129,74,6,0,67,12,65,1,2,0,29,6135,9,1237,42,9,8936,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,496,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4153,7,221,3,5761,15,7472,16,621,2467,541,1507,4938,6,4191],r="\u200c\u200d\xb7\u0300-\u036f\u0387\u0483-\u0487\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u0669\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7\u06e8\u06ea-\u06ed\u06f0-\u06f9\u0711\u0730-\u074a\u07a6-\u07b0\u07c0-\u07c9\u07eb-\u07f3\u07fd\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u0897-\u089f\u08ca-\u08e1\u08e3-\u0903\u093a-\u093c\u093e-\u094f\u0951-\u0957\u0962\u0963\u0966-\u096f\u0981-\u0983\u09bc\u09be-\u09c4\u09c7\u09c8\u09cb-\u09cd\u09d7\u09e2\u09e3\u09e6-\u09ef\u09fe\u0a01-\u0a03\u0a3c\u0a3e-\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a66-\u0a71\u0a75\u0a81-\u0a83\u0abc\u0abe-\u0ac5\u0ac7-\u0ac9\u0acb-\u0acd\u0ae2\u0ae3\u0ae6-\u0aef\u0afa-\u0aff\u0b01-\u0b03\u0b3c\u0b3e-\u0b44\u0b47\u0b48\u0b4b-\u0b4d\u0b55-\u0b57\u0b62\u0b63\u0b66-\u0b6f\u0b82\u0bbe-\u0bc2\u0bc6-\u0bc8\u0bca-\u0bcd\u0bd7\u0be6-\u0bef\u0c00-\u0c04\u0c3c\u0c3e-\u0c44\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0c66-\u0c6f\u0c81-\u0c83\u0cbc\u0cbe-\u0cc4\u0cc6-\u0cc8\u0cca-\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0ce6-\u0cef\u0cf3\u0d00-\u0d03\u0d3b\u0d3c\u0d3e-\u0d44\u0d46-\u0d48\u0d4a-\u0d4d\u0d57\u0d62\u0d63\u0d66-\u0d6f\u0d81-\u0d83\u0dca\u0dcf-\u0dd4\u0dd6\u0dd8-\u0ddf\u0de6-\u0def\u0df2\u0df3\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0e50-\u0e59\u0eb1\u0eb4-\u0ebc\u0ec8-\u0ece\u0ed0-\u0ed9\u0f18\u0f19\u0f20-\u0f29\u0f35\u0f37\u0f39\u0f3e\u0f3f\u0f71-\u0f84\u0f86\u0f87\u0f8d-\u0f97\u0f99-\u0fbc\u0fc6\u102b-\u103e\u1040-\u1049\u1056-\u1059\u105e-\u1060\u1062-\u1064\u1067-\u106d\u1071-\u1074\u1082-\u108d\u108f-\u109d\u135d-\u135f\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17b4-\u17d3\u17dd\u17e0-\u17e9\u180b-\u180d\u180f-\u1819\u18a9\u1920-\u192b\u1930-\u193b\u1946-\u194f\u19d0-\u19da\u1a17-\u1a1b\u1a55-\u1a5e\u1a60-\u1a7c\u1a7f-\u1a89\u1a90-\u1a99\u1ab0-\u1abd\u1abf-\u1ace\u1b00-\u1b04\u1b34-\u1b44\u1b50-\u1b59\u1b6b-\u1b73\u1b80-\u1b82\u1ba1-\u1bad\u1bb0-\u1bb9\u1be6-\u1bf3\u1c24-\u1c37\u1c40-\u1c49\u1c50-\u1c59\u1cd0-\u1cd2\u1cd4-\u1ce8\u1ced\u1cf4\u1cf7-\u1cf9\u1dc0-\u1dff\u200c\u200d\u203f\u2040\u2054\u20d0-\u20dc\u20e1\u20e5-\u20f0\u2cef-\u2cf1\u2d7f\u2de0-\u2dff\u302a-\u302f\u3099\u309a\u30fb\ua620-\ua629\ua66f\ua674-\ua67d\ua69e\ua69f\ua6f0\ua6f1\ua802\ua806\ua80b\ua823-\ua827\ua82c\ua880\ua881\ua8b4-\ua8c5\ua8d0-\ua8d9\ua8e0-\ua8f1\ua8ff-\ua909\ua926-\ua92d\ua947-\ua953\ua980-\ua983\ua9b3-\ua9c0\ua9d0-\ua9d9\ua9e5\ua9f0-\ua9f9\uaa29-\uaa36\uaa43\uaa4c\uaa4d\uaa50-\uaa59\uaa7b-\uaa7d\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uaaeb-\uaaef\uaaf5\uaaf6\uabe3-\uabea\uabec\uabed\uabf0-\uabf9\ufb1e\ufe00-\ufe0f\ufe20-\ufe2f\ufe33\ufe34\ufe4d-\ufe4f\uff10-\uff19\uff3f\uff65",o="\xaa\xb5\xba\xc0-\xd6\xd8-\xf6\xf8-\u02c1\u02c6-\u02d1\u02e0-\u02e4\u02ec\u02ee\u0370-\u0374\u0376\u0377\u037a-\u037d\u037f\u0386\u0388-\u038a\u038c\u038e-\u03a1\u03a3-\u03f5\u03f7-\u0481\u048a-\u052f\u0531-\u0556\u0559\u0560-\u0588\u05d0-\u05ea\u05ef-\u05f2\u0620-\u064a\u066e\u066f\u0671-\u06d3\u06d5\u06e5\u06e6\u06ee\u06ef\u06fa-\u06fc\u06ff\u0710\u0712-\u072f\u074d-\u07a5\u07b1\u07ca-\u07ea\u07f4\u07f5\u07fa\u0800-\u0815\u081a\u0824\u0828\u0840-\u0858\u0860-\u086a\u0870-\u0887\u0889-\u088e\u08a0-\u08c9\u0904-\u0939\u093d\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098c\u098f\u0990\u0993-\u09a8\u09aa-\u09b0\u09b2\u09b6-\u09b9\u09bd\u09ce\u09dc\u09dd\u09df-\u09e1\u09f0\u09f1\u09fc\u0a05-\u0a0a\u0a0f\u0a10\u0a13-\u0a28\u0a2a-\u0a30\u0a32\u0a33\u0a35\u0a36\u0a38\u0a39\u0a59-\u0a5c\u0a5e\u0a72-\u0a74\u0a85-\u0a8d\u0a8f-\u0a91\u0a93-\u0aa8\u0aaa-\u0ab0\u0ab2\u0ab3\u0ab5-\u0ab9\u0abd\u0ad0\u0ae0\u0ae1\u0af9\u0b05-\u0b0c\u0b0f\u0b10\u0b13-\u0b28\u0b2a-\u0b30\u0b32\u0b33\u0b35-\u0b39\u0b3d\u0b5c\u0b5d\u0b5f-\u0b61\u0b71\u0b83\u0b85-\u0b8a\u0b8e-\u0b90\u0b92-\u0b95\u0b99\u0b9a\u0b9c\u0b9e\u0b9f\u0ba3\u0ba4\u0ba8-\u0baa\u0bae-\u0bb9\u0bd0\u0c05-\u0c0c\u0c0e-\u0c10\u0c12-\u0c28\u0c2a-\u0c39\u0c3d\u0c58-\u0c5a\u0c5d\u0c60\u0c61\u0c80\u0c85-\u0c8c\u0c8e-\u0c90\u0c92-\u0ca8\u0caa-\u0cb3\u0cb5-\u0cb9\u0cbd\u0cdd\u0cde\u0ce0\u0ce1\u0cf1\u0cf2\u0d04-\u0d0c\u0d0e-\u0d10\u0d12-\u0d3a\u0d3d\u0d4e\u0d54-\u0d56\u0d5f-\u0d61\u0d7a-\u0d7f\u0d85-\u0d96\u0d9a-\u0db1\u0db3-\u0dbb\u0dbd\u0dc0-\u0dc6\u0e01-\u0e30\u0e32\u0e33\u0e40-\u0e46\u0e81\u0e82\u0e84\u0e86-\u0e8a\u0e8c-\u0ea3\u0ea5\u0ea7-\u0eb0\u0eb2\u0eb3\u0ebd\u0ec0-\u0ec4\u0ec6\u0edc-\u0edf\u0f00\u0f40-\u0f47\u0f49-\u0f6c\u0f88-\u0f8c\u1000-\u102a\u103f\u1050-\u1055\u105a-\u105d\u1061\u1065\u1066\u106e-\u1070\u1075-\u1081\u108e\u10a0-\u10c5\u10c7\u10cd\u10d0-\u10fa\u10fc-\u1248\u124a-\u124d\u1250-\u1256\u1258\u125a-\u125d\u1260-\u1288\u128a-\u128d\u1290-\u12b0\u12b2-\u12b5\u12b8-\u12be\u12c0\u12c2-\u12c5\u12c8-\u12d6\u12d8-\u1310\u1312-\u1315\u1318-\u135a\u1380-\u138f\u13a0-\u13f5\u13f8-\u13fd\u1401-\u166c\u166f-\u167f\u1681-\u169a\u16a0-\u16ea\u16ee-\u16f8\u1700-\u1711\u171f-\u1731\u1740-\u1751\u1760-\u176c\u176e-\u1770\u1780-\u17b3\u17d7\u17dc\u1820-\u1878\u1880-\u18a8\u18aa\u18b0-\u18f5\u1900-\u191e\u1950-\u196d\u1970-\u1974\u1980-\u19ab\u19b0-\u19c9\u1a00-\u1a16\u1a20-\u1a54\u1aa7\u1b05-\u1b33\u1b45-\u1b4c\u1b83-\u1ba0\u1bae\u1baf\u1bba-\u1be5\u1c00-\u1c23\u1c4d-\u1c4f\u1c5a-\u1c7d\u1c80-\u1c8a\u1c90-\u1cba\u1cbd-\u1cbf\u1ce9-\u1cec\u1cee-\u1cf3\u1cf5\u1cf6\u1cfa\u1d00-\u1dbf\u1e00-\u1f15\u1f18-\u1f1d\u1f20-\u1f45\u1f48-\u1f4d\u1f50-\u1f57\u1f59\u1f5b\u1f5d\u1f5f-\u1f7d\u1f80-\u1fb4\u1fb6-\u1fbc\u1fbe\u1fc2-\u1fc4\u1fc6-\u1fcc\u1fd0-\u1fd3\u1fd6-\u1fdb\u1fe0-\u1fec\u1ff2-\u1ff4\u1ff6-\u1ffc\u2071\u207f\u2090-\u209c\u2102\u2107\u210a-\u2113\u2115\u2118-\u211d\u2124\u2126\u2128\u212a-\u2139\u213c-\u213f\u2145-\u2149\u214e\u2160-\u2188\u2c00-\u2ce4\u2ceb-\u2cee\u2cf2\u2cf3\u2d00-\u2d25\u2d27\u2d2d\u2d30-\u2d67\u2d6f\u2d80-\u2d96\u2da0-\u2da6\u2da8-\u2dae\u2db0-\u2db6\u2db8-\u2dbe\u2dc0-\u2dc6\u2dc8-\u2dce\u2dd0-\u2dd6\u2dd8-\u2dde\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303c\u3041-\u3096\u309b-\u309f\u30a1-\u30fa\u30fc-\u30ff\u3105-\u312f\u3131-\u318e\u31a0-\u31bf\u31f0-\u31ff\u3400-\u4dbf\u4e00-\ua48c\ua4d0-\ua4fd\ua500-\ua60c\ua610-\ua61f\ua62a\ua62b\ua640-\ua66e\ua67f-\ua69d\ua6a0-\ua6ef\ua717-\ua71f\ua722-\ua788\ua78b-\ua7cd\ua7d0\ua7d1\ua7d3\ua7d5-\ua7dc\ua7f2-\ua801\ua803-\ua805\ua807-\ua80a\ua80c-\ua822\ua840-\ua873\ua882-\ua8b3\ua8f2-\ua8f7\ua8fb\ua8fd\ua8fe\ua90a-\ua925\ua930-\ua946\ua960-\ua97c\ua984-\ua9b2\ua9cf\ua9e0-\ua9e4\ua9e6-\ua9ef\ua9fa-\ua9fe\uaa00-\uaa28\uaa40-\uaa42\uaa44-\uaa4b\uaa60-\uaa76\uaa7a\uaa7e-\uaaaf\uaab1\uaab5\uaab6\uaab9-\uaabd\uaac0\uaac2\uaadb-\uaadd\uaae0-\uaaea\uaaf2-\uaaf4\uab01-\uab06\uab09-\uab0e\uab11-\uab16\uab20-\uab26\uab28-\uab2e\uab30-\uab5a\uab5c-\uab69\uab70-\uabe2\uac00-\ud7a3\ud7b0-\ud7c6\ud7cb-\ud7fb\uf900-\ufa6d\ufa70-\ufad9\ufb00-\ufb06\ufb13-\ufb17\ufb1d\ufb1f-\ufb28\ufb2a-\ufb36\ufb38-\ufb3c\ufb3e\ufb40\ufb41\ufb43\ufb44\ufb46-\ufbb1\ufbd3-\ufd3d\ufd50-\ufd8f\ufd92-\ufdc7\ufdf0-\ufdfb\ufe70-\ufe74\ufe76-\ufefc\uff21-\uff3a\uff41-\uff5a\uff66-\uffbe\uffc2-\uffc7\uffca-\uffcf\uffd2-\uffd7\uffda-\uffdc",a={3:"abstract boolean byte char class double enum export extends final float goto implements import int interface long native package private protected public short static super synchronized throws transient volatile",5:"class enum extends super const export import",6:"enum",strict:"implements interface let package private protected public static yield",strictBind:"eval arguments"},i="break case catch continue debugger default do else finally for function if return switch throw try var while with null true false instanceof typeof void delete new in this",s={5:i,"5module":i+" export import",6:i+" const class extends export import super"},l=/^in(stanceof)?$/,u=new RegExp("["+o+"]"),c=new RegExp("["+o+r+"]");function d(e,t){for(var n=65536,r=0;re)return!1;if((n+=t[r+1])>=e)return!0}return!1}function p(e,t){return e<65?36===e:e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&u.test(String.fromCharCode(e)):!1!==t&&d(e,n)))}function h(e,r){return e<48?36===e:e<58||!(e<65)&&(e<91||(e<97?95===e:e<123||(e<=65535?e>=170&&c.test(String.fromCharCode(e)):!1!==r&&(d(e,n)||d(e,t)))))}var f=function(e,t){void 0===t&&(t={}),this.label=e,this.keyword=t.keyword,this.beforeExpr=!!t.beforeExpr,this.startsExpr=!!t.startsExpr,this.isLoop=!!t.isLoop,this.isAssign=!!t.isAssign,this.prefix=!!t.prefix,this.postfix=!!t.postfix,this.binop=t.binop||null,this.updateContext=null};function m(e,t){return new f(e,{beforeExpr:!0,binop:t})}var g={beforeExpr:!0},v={startsExpr:!0},y={};function b(e,t){return void 0===t&&(t={}),t.keyword=e,y[e]=new f(e,t)}var x={num:new f("num",v),regexp:new f("regexp",v),string:new f("string",v),name:new f("name",v),privateId:new f("privateId",v),eof:new f("eof"),bracketL:new f("[",{beforeExpr:!0,startsExpr:!0}),bracketR:new f("]"),braceL:new f("{",{beforeExpr:!0,startsExpr:!0}),braceR:new f("}"),parenL:new f("(",{beforeExpr:!0,startsExpr:!0}),parenR:new f(")"),comma:new f(",",g),semi:new f(";",g),colon:new f(":",g),dot:new f("."),question:new f("?",g),questionDot:new f("?."),arrow:new f("=>",g),template:new f("template"),invalidTemplate:new f("invalidTemplate"),ellipsis:new f("...",g),backQuote:new f("`",v),dollarBraceL:new f("${",{beforeExpr:!0,startsExpr:!0}),eq:new f("=",{beforeExpr:!0,isAssign:!0}),assign:new f("_=",{beforeExpr:!0,isAssign:!0}),incDec:new f("++/--",{prefix:!0,postfix:!0,startsExpr:!0}),prefix:new f("!/~",{beforeExpr:!0,prefix:!0,startsExpr:!0}),logicalOR:m("||",1),logicalAND:m("&&",2),bitwiseOR:m("|",3),bitwiseXOR:m("^",4),bitwiseAND:m("&",5),equality:m("==/!=/===/!==",6),relational:m("/<=/>=",7),bitShift:m("<>/>>>",8),plusMin:new f("+/-",{beforeExpr:!0,binop:9,prefix:!0,startsExpr:!0}),modulo:m("%",10),star:m("*",10),slash:m("/",10),starstar:new f("**",{beforeExpr:!0}),coalesce:m("??",1),_break:b("break"),_case:b("case",g),_catch:b("catch"),_continue:b("continue"),_debugger:b("debugger"),_default:b("default",g),_do:b("do",{isLoop:!0,beforeExpr:!0}),_else:b("else",g),_finally:b("finally"),_for:b("for",{isLoop:!0}),_function:b("function",v),_if:b("if"),_return:b("return",g),_switch:b("switch"),_throw:b("throw",g),_try:b("try"),_var:b("var"),_const:b("const"),_while:b("while",{isLoop:!0}),_with:b("with"),_new:b("new",{beforeExpr:!0,startsExpr:!0}),_this:b("this",v),_super:b("super",v),_class:b("class",v),_extends:b("extends",g),_export:b("export"),_import:b("import",v),_null:b("null",v),_true:b("true",v),_false:b("false",v),_in:b("in",{beforeExpr:!0,binop:7}),_instanceof:b("instanceof",{beforeExpr:!0,binop:7}),_typeof:b("typeof",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_void:b("void",{beforeExpr:!0,prefix:!0,startsExpr:!0}),_delete:b("delete",{beforeExpr:!0,prefix:!0,startsExpr:!0})},A=/\r\n?|\n|\u2028|\u2029/,D=new RegExp(A.source,"g");function k(e){return 10===e||13===e||8232===e||8233===e}function w(e,t,n){void 0===n&&(n=e.length);for(var r=t;r>10),56320+(1023&e)))}var P=/(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/,R=function(e,t){this.line=e,this.column=t};R.prototype.offset=function(e){return new R(this.line,this.column+e)};var N=function(e,t,n){this.start=t,this.end=n,null!==e.sourceFile&&(this.source=e.sourceFile)};function O(e,t){for(var n=1,r=0;;){var o=w(e,r,t);if(o<0)return new R(n,t-r);++n,r=o}}var B={ecmaVersion:null,sourceType:"script",onInsertedSemicolon:null,onTrailingComma:null,allowReserved:null,allowReturnOutsideFunction:!1,allowImportExportEverywhere:!1,allowAwaitOutsideFunction:null,allowSuperOutsideMethod:null,allowHashBang:!1,checkPrivateFields:!0,locations:!1,onToken:null,onComment:null,ranges:!1,program:null,sourceFile:null,directSourceFile:null,preserveParens:!1},M=!1;function W(e){var t={};for(var n in B)t[n]=e&&T(e,n)?e[n]:B[n];if("latest"===t.ecmaVersion?t.ecmaVersion=1e8:null==t.ecmaVersion?(!M&&"object"===typeof console&&console.warn&&(M=!0,console.warn("Since Acorn 8.0.0, options.ecmaVersion is required.\nDefaulting to 2020, but this will stop working in the future.")),t.ecmaVersion=11):t.ecmaVersion>=2015&&(t.ecmaVersion-=2009),null==t.allowReserved&&(t.allowReserved=t.ecmaVersion<5),e&&null!=e.allowHashBang||(t.allowHashBang=t.ecmaVersion>=14),j(t.onToken)){var r=t.onToken;t.onToken=function(e){return r.push(e)}}return j(t.onComment)&&(t.onComment=U(t,t.onComment)),t}function U(e,t){return function(n,r,o,a,i,s){var l={type:n?"Block":"Line",value:r,start:o,end:a};e.locations&&(l.loc=new N(this,i,s)),e.ranges&&(l.range=[o,a]),t.push(l)}}var V=1,H=2,G=4,q=8,K=16,$=32,Y=64,X=128,Q=256,J=512,Z=V|H|Q;function ee(e,t){return H|(e?G:0)|(t?q:0)}var te=0,ne=1,re=2,oe=3,ae=4,ie=5,se=function(e,t,n){this.options=e=W(e),this.sourceFile=e.sourceFile,this.keywords=I(s[e.ecmaVersion>=6?6:"module"===e.sourceType?"5module":5]);var r="";!0!==e.allowReserved&&(r=a[e.ecmaVersion>=6?6:5===e.ecmaVersion?5:3],"module"===e.sourceType&&(r+=" await")),this.reservedWords=I(r);var o=(r?r+" ":"")+a.strict;this.reservedWordsStrict=I(o),this.reservedWordsStrictBind=I(o+" "+a.strictBind),this.input=String(t),this.containsEsc=!1,n?(this.pos=n,this.lineStart=this.input.lastIndexOf("\n",n-1)+1,this.curLine=this.input.slice(0,this.lineStart).split(A).length):(this.pos=this.lineStart=0,this.curLine=1),this.type=x.eof,this.value=null,this.start=this.end=this.pos,this.startLoc=this.endLoc=this.curPosition(),this.lastTokEndLoc=this.lastTokStartLoc=null,this.lastTokStart=this.lastTokEnd=this.pos,this.context=this.initialContext(),this.exprAllowed=!0,this.inModule="module"===e.sourceType,this.strict=this.inModule||this.strictDirective(this.pos),this.potentialArrowAt=-1,this.potentialArrowInForAwait=!1,this.yieldPos=this.awaitPos=this.awaitIdentPos=0,this.labels=[],this.undefinedExports=Object.create(null),0===this.pos&&e.allowHashBang&&"#!"===this.input.slice(0,2)&&this.skipLineComment(2),this.scopeStack=[],this.enterScope(V),this.regexpState=null,this.privateNameStack=[]},le={inFunction:{configurable:!0},inGenerator:{configurable:!0},inAsync:{configurable:!0},canAwait:{configurable:!0},allowSuper:{configurable:!0},allowDirectSuper:{configurable:!0},treatFunctionsAsVar:{configurable:!0},allowNewDotTarget:{configurable:!0},inClassStaticBlock:{configurable:!0}};se.prototype.parse=function(){var e=this.options.program||this.startNode();return this.nextToken(),this.parseTopLevel(e)},le.inFunction.get=function(){return(this.currentVarScope().flags&H)>0},le.inGenerator.get=function(){return(this.currentVarScope().flags&q)>0},le.inAsync.get=function(){return(this.currentVarScope().flags&G)>0},le.canAwait.get=function(){for(var e=this.scopeStack.length-1;e>=0;e--){var t=this.scopeStack[e].flags;if(t&(Q|J))return!1;if(t&H)return(t&G)>0}return this.inModule&&this.options.ecmaVersion>=13||this.options.allowAwaitOutsideFunction},le.allowSuper.get=function(){return(this.currentThisScope().flags&Y)>0||this.options.allowSuperOutsideMethod},le.allowDirectSuper.get=function(){return(this.currentThisScope().flags&X)>0},le.treatFunctionsAsVar.get=function(){return this.treatFunctionsAsVarInScope(this.currentScope())},le.allowNewDotTarget.get=function(){for(var e=this.scopeStack.length-1;e>=0;e--){var t=this.scopeStack[e].flags;if(t&(Q|J)||t&H&&!(t&K))return!0}return!1},le.inClassStaticBlock.get=function(){return(this.currentVarScope().flags&Q)>0},se.extend=function(){for(var e=[],t=arguments.length;t--;)e[t]=arguments[t];for(var n=this,r=0;r=,?^&]/.test(o)||"!"===o&&"="===this.input.charAt(r+1))}e+=t[0].length,E.lastIndex=e,e+=E.exec(this.input)[0].length,";"===this.input[e]&&e++}},ue.eat=function(e){return this.type===e&&(this.next(),!0)},ue.isContextual=function(e){return this.type===x.name&&this.value===e&&!this.containsEsc},ue.eatContextual=function(e){return!!this.isContextual(e)&&(this.next(),!0)},ue.expectContextual=function(e){this.eatContextual(e)||this.unexpected()},ue.canInsertSemicolon=function(){return this.type===x.eof||this.type===x.braceR||A.test(this.input.slice(this.lastTokEnd,this.start))},ue.insertSemicolon=function(){if(this.canInsertSemicolon())return this.options.onInsertedSemicolon&&this.options.onInsertedSemicolon(this.lastTokEnd,this.lastTokEndLoc),!0},ue.semicolon=function(){this.eat(x.semi)||this.insertSemicolon()||this.unexpected()},ue.afterTrailingComma=function(e,t){if(this.type===e)return this.options.onTrailingComma&&this.options.onTrailingComma(this.lastTokStart,this.lastTokStartLoc),t||this.next(),!0},ue.expect=function(e){this.eat(e)||this.unexpected()},ue.unexpected=function(e){this.raise(null!=e?e:this.start,"Unexpected token")};var de=function(){this.shorthandAssign=this.trailingComma=this.parenthesizedAssign=this.parenthesizedBind=this.doubleProto=-1};ue.checkPatternErrors=function(e,t){if(e){e.trailingComma>-1&&this.raiseRecoverable(e.trailingComma,"Comma is not permitted after the rest element");var n=t?e.parenthesizedAssign:e.parenthesizedBind;n>-1&&this.raiseRecoverable(n,t?"Assigning to rvalue":"Parenthesized pattern")}},ue.checkExpressionErrors=function(e,t){if(!e)return!1;var n=e.shorthandAssign,r=e.doubleProto;if(!t)return n>=0||r>=0;n>=0&&this.raise(n,"Shorthand property assignments are valid only in destructuring patterns"),r>=0&&this.raiseRecoverable(r,"Redefinition of __proto__ property")},ue.checkYieldAwaitInDefaultParams=function(){this.yieldPos&&(!this.awaitPos||this.yieldPos55295&&r<56320)return!0;if(p(r,!0)){for(var o=n+1;h(r=this.input.charCodeAt(o),!0);)++o;if(92===r||r>55295&&r<56320)return!0;var a=this.input.slice(n,o);if(!l.test(a))return!0}return!1},pe.isAsyncFunction=function(){if(this.options.ecmaVersion<8||!this.isContextual("async"))return!1;E.lastIndex=this.pos;var e,t=E.exec(this.input),n=this.pos+t[0].length;return!A.test(this.input.slice(this.pos,n))&&"function"===this.input.slice(n,n+8)&&(n+8===this.input.length||!(h(e=this.input.charCodeAt(n+8))||e>55295&&e<56320))},pe.isUsingKeyword=function(e,t){if(this.options.ecmaVersion<17||!this.isContextual(e?"await":"using"))return!1;E.lastIndex=this.pos;var n=E.exec(this.input),r=this.pos+n[0].length;if(A.test(this.input.slice(this.pos,r)))return!1;if(e){var o,a=r+5;if("using"!==this.input.slice(r,a)||a===this.input.length||h(o=this.input.charCodeAt(a))||o>55295&&o<56320)return!1;E.lastIndex=a;var i=E.exec(this.input);if(i&&A.test(this.input.slice(a,a+i[0].length)))return!1}if(t){var s,l=r+2;if("of"===this.input.slice(r,l)&&(l===this.input.length||!h(s=this.input.charCodeAt(l))&&!(s>55295&&s<56320)))return!1}var u=this.input.charCodeAt(r);return p(u,!0)||92===u},pe.isAwaitUsing=function(e){return this.isUsingKeyword(!0,e)},pe.isUsing=function(e){return this.isUsingKeyword(!1,e)},pe.parseStatement=function(e,t,n){var r,o=this.type,a=this.startNode();switch(this.isLet(e)&&(o=x._var,r="let"),o){case x._break:case x._continue:return this.parseBreakContinueStatement(a,o.keyword);case x._debugger:return this.parseDebuggerStatement(a);case x._do:return this.parseDoStatement(a);case x._for:return this.parseForStatement(a);case x._function:return e&&(this.strict||"if"!==e&&"label"!==e)&&this.options.ecmaVersion>=6&&this.unexpected(),this.parseFunctionStatement(a,!1,!e);case x._class:return e&&this.unexpected(),this.parseClass(a,!0);case x._if:return this.parseIfStatement(a);case x._return:return this.parseReturnStatement(a);case x._switch:return this.parseSwitchStatement(a);case x._throw:return this.parseThrowStatement(a);case x._try:return this.parseTryStatement(a);case x._const:case x._var:return r=r||this.value,e&&"var"!==r&&this.unexpected(),this.parseVarStatement(a,r);case x._while:return this.parseWhileStatement(a);case x._with:return this.parseWithStatement(a);case x.braceL:return this.parseBlock(!0,a);case x.semi:return this.parseEmptyStatement(a);case x._export:case x._import:if(this.options.ecmaVersion>10&&o===x._import){E.lastIndex=this.pos;var i=E.exec(this.input),s=this.pos+i[0].length,l=this.input.charCodeAt(s);if(40===l||46===l)return this.parseExpressionStatement(a,this.parseExpression())}return this.options.allowImportExportEverywhere||(t||this.raise(this.start,"'import' and 'export' may only appear at the top level"),this.inModule||this.raise(this.start,"'import' and 'export' may appear only with 'sourceType: module'")),o===x._import?this.parseImport(a):this.parseExport(a,n);default:if(this.isAsyncFunction())return e&&this.unexpected(),this.next(),this.parseFunctionStatement(a,!0,!e);var u=this.isAwaitUsing(!1)?"await using":this.isUsing(!1)?"using":null;if(u)return t&&"script"===this.options.sourceType&&this.raise(this.start,"Using declaration cannot appear in the top level when source type is `script`"),"await using"===u&&(this.canAwait||this.raise(this.start,"Await using cannot appear outside of async function"),this.next()),this.next(),this.parseVar(a,!1,u),this.semicolon(),this.finishNode(a,"VariableDeclaration");var c=this.value,d=this.parseExpression();return o===x.name&&"Identifier"===d.type&&this.eat(x.colon)?this.parseLabeledStatement(a,c,d,e):this.parseExpressionStatement(a,d)}},pe.parseBreakContinueStatement=function(e,t){var n="break"===t;this.next(),this.eat(x.semi)||this.insertSemicolon()?e.label=null:this.type!==x.name?this.unexpected():(e.label=this.parseIdent(),this.semicolon());for(var r=0;r=6?this.eat(x.semi):this.semicolon(),this.finishNode(e,"DoWhileStatement")},pe.parseForStatement=function(e){this.next();var t=this.options.ecmaVersion>=9&&this.canAwait&&this.eatContextual("await")?this.lastTokStart:-1;if(this.labels.push(he),this.enterScope(0),this.expect(x.parenL),this.type===x.semi)return t>-1&&this.unexpected(t),this.parseFor(e,null);var n=this.isLet();if(this.type===x._var||this.type===x._const||n){var r=this.startNode(),o=n?"let":this.value;return this.next(),this.parseVar(r,!0,o),this.finishNode(r,"VariableDeclaration"),this.parseForAfterInit(e,r,t)}var a=this.isContextual("let"),i=!1,s=this.isUsing(!0)?"using":this.isAwaitUsing(!0)?"await using":null;if(s){var l=this.startNode();return this.next(),"await using"===s&&this.next(),this.parseVar(l,!0,s),this.finishNode(l,"VariableDeclaration"),this.parseForAfterInit(e,l,t)}var u=this.containsEsc,c=new de,d=this.start,p=t>-1?this.parseExprSubscripts(c,"await"):this.parseExpression(!0,c);return this.type===x._in||(i=this.options.ecmaVersion>=6&&this.isContextual("of"))?(t>-1?(this.type===x._in&&this.unexpected(t),e.await=!0):i&&this.options.ecmaVersion>=8&&(p.start!==d||u||"Identifier"!==p.type||"async"!==p.name?this.options.ecmaVersion>=9&&(e.await=!1):this.unexpected()),a&&i&&this.raise(p.start,"The left-hand side of a for-of loop may not start with 'let'."),this.toAssignable(p,!1,c),this.checkLValPattern(p),this.parseForIn(e,p)):(this.checkExpressionErrors(c,!0),t>-1&&this.unexpected(t),this.parseFor(e,p))},pe.parseForAfterInit=function(e,t,n){return(this.type===x._in||this.options.ecmaVersion>=6&&this.isContextual("of"))&&1===t.declarations.length?(this.options.ecmaVersion>=9&&(this.type===x._in?n>-1&&this.unexpected(n):e.await=n>-1),this.parseForIn(e,t)):(n>-1&&this.unexpected(n),this.parseFor(e,t))},pe.parseFunctionStatement=function(e,t,n){return this.next(),this.parseFunction(e,ge|(n?0:ve),!1,t)},pe.parseIfStatement=function(e){return this.next(),e.test=this.parseParenExpression(),e.consequent=this.parseStatement("if"),e.alternate=this.eat(x._else)?this.parseStatement("if"):null,this.finishNode(e,"IfStatement")},pe.parseReturnStatement=function(e){return this.inFunction||this.options.allowReturnOutsideFunction||this.raise(this.start,"'return' outside of function"),this.next(),this.eat(x.semi)||this.insertSemicolon()?e.argument=null:(e.argument=this.parseExpression(),this.semicolon()),this.finishNode(e,"ReturnStatement")},pe.parseSwitchStatement=function(e){var t;this.next(),e.discriminant=this.parseParenExpression(),e.cases=[],this.expect(x.braceL),this.labels.push(fe),this.enterScope(0);for(var n=!1;this.type!==x.braceR;)if(this.type===x._case||this.type===x._default){var r=this.type===x._case;t&&this.finishNode(t,"SwitchCase"),e.cases.push(t=this.startNode()),t.consequent=[],this.next(),r?t.test=this.parseExpression():(n&&this.raiseRecoverable(this.lastTokStart,"Multiple default clauses"),n=!0,t.test=null),this.expect(x.colon)}else t||this.unexpected(),t.consequent.push(this.parseStatement(null));return this.exitScope(),t&&this.finishNode(t,"SwitchCase"),this.next(),this.labels.pop(),this.finishNode(e,"SwitchStatement")},pe.parseThrowStatement=function(e){return this.next(),A.test(this.input.slice(this.lastTokEnd,this.start))&&this.raise(this.lastTokEnd,"Illegal newline after throw"),e.argument=this.parseExpression(),this.semicolon(),this.finishNode(e,"ThrowStatement")};var me=[];pe.parseCatchClauseParam=function(){var e=this.parseBindingAtom(),t="Identifier"===e.type;return this.enterScope(t?$:0),this.checkLValPattern(e,t?ae:re),this.expect(x.parenR),e},pe.parseTryStatement=function(e){if(this.next(),e.block=this.parseBlock(),e.handler=null,this.type===x._catch){var t=this.startNode();this.next(),this.eat(x.parenL)?t.param=this.parseCatchClauseParam():(this.options.ecmaVersion<10&&this.unexpected(),t.param=null,this.enterScope(0)),t.body=this.parseBlock(!1),this.exitScope(),e.handler=this.finishNode(t,"CatchClause")}return e.finalizer=this.eat(x._finally)?this.parseBlock():null,e.handler||e.finalizer||this.raise(e.start,"Missing catch or finally clause"),this.finishNode(e,"TryStatement")},pe.parseVarStatement=function(e,t,n){return this.next(),this.parseVar(e,!1,t,n),this.semicolon(),this.finishNode(e,"VariableDeclaration")},pe.parseWhileStatement=function(e){return this.next(),e.test=this.parseParenExpression(),this.labels.push(he),e.body=this.parseStatement("while"),this.labels.pop(),this.finishNode(e,"WhileStatement")},pe.parseWithStatement=function(e){return this.strict&&this.raise(this.start,"'with' in strict mode"),this.next(),e.object=this.parseParenExpression(),e.body=this.parseStatement("with"),this.finishNode(e,"WithStatement")},pe.parseEmptyStatement=function(e){return this.next(),this.finishNode(e,"EmptyStatement")},pe.parseLabeledStatement=function(e,t,n,r){for(var o=0,a=this.labels;o=0;s--){var l=this.labels[s];if(l.statementStart!==e.start)break;l.statementStart=this.start,l.kind=i}return this.labels.push({name:t,kind:i,statementStart:this.start}),e.body=this.parseStatement(r?-1===r.indexOf("label")?r+"label":r:"label"),this.labels.pop(),e.label=n,this.finishNode(e,"LabeledStatement")},pe.parseExpressionStatement=function(e,t){return e.expression=t,this.semicolon(),this.finishNode(e,"ExpressionStatement")},pe.parseBlock=function(e,t,n){for(void 0===e&&(e=!0),void 0===t&&(t=this.startNode()),t.body=[],this.expect(x.braceL),e&&this.enterScope(0);this.type!==x.braceR;){var r=this.parseStatement(null);t.body.push(r)}return n&&(this.strict=!1),this.next(),e&&this.exitScope(),this.finishNode(t,"BlockStatement")},pe.parseFor=function(e,t){return e.init=t,this.expect(x.semi),e.test=this.type===x.semi?null:this.parseExpression(),this.expect(x.semi),e.update=this.type===x.parenR?null:this.parseExpression(),this.expect(x.parenR),e.body=this.parseStatement("for"),this.exitScope(),this.labels.pop(),this.finishNode(e,"ForStatement")},pe.parseForIn=function(e,t){var n=this.type===x._in;return this.next(),"VariableDeclaration"===t.type&&null!=t.declarations[0].init&&(!n||this.options.ecmaVersion<8||this.strict||"var"!==t.kind||"Identifier"!==t.declarations[0].id.type)&&this.raise(t.start,(n?"for-in":"for-of")+" loop variable declaration may not have an initializer"),e.left=t,e.right=n?this.parseExpression():this.parseMaybeAssign(),this.expect(x.parenR),e.body=this.parseStatement("for"),this.exitScope(),this.labels.pop(),this.finishNode(e,n?"ForInStatement":"ForOfStatement")},pe.parseVar=function(e,t,n,r){for(e.declarations=[],e.kind=n;;){var o=this.startNode();if(this.parseVarId(o,n),this.eat(x.eq)?o.init=this.parseMaybeAssign(t):r||"const"!==n||this.type===x._in||this.options.ecmaVersion>=6&&this.isContextual("of")?r||"using"!==n&&"await using"!==n||!(this.options.ecmaVersion>=17)||this.type===x._in||this.isContextual("of")?r||"Identifier"===o.id.type||t&&(this.type===x._in||this.isContextual("of"))?o.init=null:this.raise(this.lastTokEnd,"Complex binding patterns require an initialization value"):this.raise(this.lastTokEnd,"Missing initializer in "+n+" declaration"):this.unexpected(),e.declarations.push(this.finishNode(o,"VariableDeclarator")),!this.eat(x.comma))break}return e},pe.parseVarId=function(e,t){e.id="using"===t||"await using"===t?this.parseIdent():this.parseBindingAtom(),this.checkLValPattern(e.id,"var"===t?ne:re,!1)};var ge=1,ve=2,ye=4;function be(e,t){var n=t.key.name,r=e[n],o="true";return"MethodDefinition"!==t.type||"get"!==t.kind&&"set"!==t.kind||(o=(t.static?"s":"i")+t.kind),"iget"===r&&"iset"===o||"iset"===r&&"iget"===o||"sget"===r&&"sset"===o||"sset"===r&&"sget"===o?(e[n]="true",!1):!!r||(e[n]=o,!1)}function xe(e,t){var n=e.computed,r=e.key;return!n&&("Identifier"===r.type&&r.name===t||"Literal"===r.type&&r.value===t)}pe.parseFunction=function(e,t,n,r,o){this.initFunction(e),(this.options.ecmaVersion>=9||this.options.ecmaVersion>=6&&!r)&&(this.type===x.star&&t&ve&&this.unexpected(),e.generator=this.eat(x.star)),this.options.ecmaVersion>=8&&(e.async=!!r),t&ge&&(e.id=t&ye&&this.type!==x.name?null:this.parseIdent(),!e.id||t&ve||this.checkLValSimple(e.id,this.strict||e.generator||e.async?this.treatFunctionsAsVar?ne:re:oe));var a=this.yieldPos,i=this.awaitPos,s=this.awaitIdentPos;return this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,this.enterScope(ee(e.async,e.generator)),t&ge||(e.id=this.type===x.name?this.parseIdent():null),this.parseFunctionParams(e),this.parseFunctionBody(e,n,!1,o),this.yieldPos=a,this.awaitPos=i,this.awaitIdentPos=s,this.finishNode(e,t&ge?"FunctionDeclaration":"FunctionExpression")},pe.parseFunctionParams=function(e){this.expect(x.parenL),e.params=this.parseBindingList(x.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams()},pe.parseClass=function(e,t){this.next();var n=this.strict;this.strict=!0,this.parseClassId(e,t),this.parseClassSuper(e);var r=this.enterClassBody(),o=this.startNode(),a=!1;for(o.body=[],this.expect(x.braceL);this.type!==x.braceR;){var i=this.parseClassElement(null!==e.superClass);i&&(o.body.push(i),"MethodDefinition"===i.type&&"constructor"===i.kind?(a&&this.raiseRecoverable(i.start,"Duplicate constructor in the same class"),a=!0):i.key&&"PrivateIdentifier"===i.key.type&&be(r,i)&&this.raiseRecoverable(i.key.start,"Identifier '#"+i.key.name+"' has already been declared"))}return this.strict=n,this.next(),e.body=this.finishNode(o,"ClassBody"),this.exitClassBody(),this.finishNode(e,t?"ClassDeclaration":"ClassExpression")},pe.parseClassElement=function(e){if(this.eat(x.semi))return null;var t=this.options.ecmaVersion,n=this.startNode(),r="",o=!1,a=!1,i="method",s=!1;if(this.eatContextual("static")){if(t>=13&&this.eat(x.braceL))return this.parseClassStaticBlock(n),n;this.isClassElementNameStart()||this.type===x.star?s=!0:r="static"}if(n.static=s,!r&&t>=8&&this.eatContextual("async")&&(!this.isClassElementNameStart()&&this.type!==x.star||this.canInsertSemicolon()?r="async":a=!0),!r&&(t>=9||!a)&&this.eat(x.star)&&(o=!0),!r&&!a&&!o){var l=this.value;(this.eatContextual("get")||this.eatContextual("set"))&&(this.isClassElementNameStart()?i=l:r=l)}if(r?(n.computed=!1,n.key=this.startNodeAt(this.lastTokStart,this.lastTokStartLoc),n.key.name=r,this.finishNode(n.key,"Identifier")):this.parseClassElementName(n),t<13||this.type===x.parenL||"method"!==i||o||a){var u=!n.static&&xe(n,"constructor"),c=u&&e;u&&"method"!==i&&this.raise(n.key.start,"Constructor can't have get/set modifier"),n.kind=u?"constructor":i,this.parseClassMethod(n,o,a,c)}else this.parseClassField(n);return n},pe.isClassElementNameStart=function(){return this.type===x.name||this.type===x.privateId||this.type===x.num||this.type===x.string||this.type===x.bracketL||this.type.keyword},pe.parseClassElementName=function(e){this.type===x.privateId?("constructor"===this.value&&this.raise(this.start,"Classes can't have an element named '#constructor'"),e.computed=!1,e.key=this.parsePrivateIdent()):this.parsePropertyName(e)},pe.parseClassMethod=function(e,t,n,r){var o=e.key;"constructor"===e.kind?(t&&this.raise(o.start,"Constructor can't be a generator"),n&&this.raise(o.start,"Constructor can't be an async method")):e.static&&xe(e,"prototype")&&this.raise(o.start,"Classes may not have a static property named prototype");var a=e.value=this.parseMethod(t,n,r);return"get"===e.kind&&0!==a.params.length&&this.raiseRecoverable(a.start,"getter should have no params"),"set"===e.kind&&1!==a.params.length&&this.raiseRecoverable(a.start,"setter should have exactly one param"),"set"===e.kind&&"RestElement"===a.params[0].type&&this.raiseRecoverable(a.params[0].start,"Setter cannot use rest params"),this.finishNode(e,"MethodDefinition")},pe.parseClassField=function(e){return xe(e,"constructor")?this.raise(e.key.start,"Classes can't have a field named 'constructor'"):e.static&&xe(e,"prototype")&&this.raise(e.key.start,"Classes can't have a static field named 'prototype'"),this.eat(x.eq)?(this.enterScope(J|Y),e.value=this.parseMaybeAssign(),this.exitScope()):e.value=null,this.semicolon(),this.finishNode(e,"PropertyDefinition")},pe.parseClassStaticBlock=function(e){e.body=[];var t=this.labels;for(this.labels=[],this.enterScope(Q|Y);this.type!==x.braceR;){var n=this.parseStatement(null);e.body.push(n)}return this.next(),this.exitScope(),this.labels=t,this.finishNode(e,"StaticBlock")},pe.parseClassId=function(e,t){this.type===x.name?(e.id=this.parseIdent(),t&&this.checkLValSimple(e.id,re,!1)):(!0===t&&this.unexpected(),e.id=null)},pe.parseClassSuper=function(e){e.superClass=this.eat(x._extends)?this.parseExprSubscripts(null,!1):null},pe.enterClassBody=function(){var e={declared:Object.create(null),used:[]};return this.privateNameStack.push(e),e.declared},pe.exitClassBody=function(){var e=this.privateNameStack.pop(),t=e.declared,n=e.used;if(this.options.checkPrivateFields)for(var r=this.privateNameStack.length,o=0===r?null:this.privateNameStack[r-1],a=0;a=11&&(this.eatContextual("as")?(e.exported=this.parseModuleExportName(),this.checkExport(t,e.exported,this.lastTokStart)):e.exported=null),this.expectContextual("from"),this.type!==x.string&&this.unexpected(),e.source=this.parseExprAtom(),this.options.ecmaVersion>=16&&(e.attributes=this.parseWithClause()),this.semicolon(),this.finishNode(e,"ExportAllDeclaration")},pe.parseExport=function(e,t){if(this.next(),this.eat(x.star))return this.parseExportAllDeclaration(e,t);if(this.eat(x._default))return this.checkExport(t,"default",this.lastTokStart),e.declaration=this.parseExportDefaultDeclaration(),this.finishNode(e,"ExportDefaultDeclaration");if(this.shouldParseExportStatement())e.declaration=this.parseExportDeclaration(e),"VariableDeclaration"===e.declaration.type?this.checkVariableExport(t,e.declaration.declarations):this.checkExport(t,e.declaration.id,e.declaration.id.start),e.specifiers=[],e.source=null,this.options.ecmaVersion>=16&&(e.attributes=[]);else{if(e.declaration=null,e.specifiers=this.parseExportSpecifiers(t),this.eatContextual("from"))this.type!==x.string&&this.unexpected(),e.source=this.parseExprAtom(),this.options.ecmaVersion>=16&&(e.attributes=this.parseWithClause());else{for(var n=0,r=e.specifiers;n=16&&(e.attributes=[])}this.semicolon()}return this.finishNode(e,"ExportNamedDeclaration")},pe.parseExportDeclaration=function(e){return this.parseStatement(null)},pe.parseExportDefaultDeclaration=function(){var e;if(this.type===x._function||(e=this.isAsyncFunction())){var t=this.startNode();return this.next(),e&&this.next(),this.parseFunction(t,ge|ye,!1,e)}if(this.type===x._class){var n=this.startNode();return this.parseClass(n,"nullableID")}var r=this.parseMaybeAssign();return this.semicolon(),r},pe.checkExport=function(e,t,n){e&&("string"!==typeof t&&(t="Identifier"===t.type?t.name:t.value),T(e,t)&&this.raiseRecoverable(n,"Duplicate export '"+t+"'"),e[t]=!0)},pe.checkPatternExport=function(e,t){var n=t.type;if("Identifier"===n)this.checkExport(e,t,t.start);else if("ObjectPattern"===n)for(var r=0,o=t.properties;r=16&&(e.attributes=this.parseWithClause()),this.semicolon(),this.finishNode(e,"ImportDeclaration")},pe.parseImportSpecifier=function(){var e=this.startNode();return e.imported=this.parseModuleExportName(),this.eatContextual("as")?e.local=this.parseIdent():(this.checkUnreserved(e.imported),e.local=e.imported),this.checkLValSimple(e.local,re),this.finishNode(e,"ImportSpecifier")},pe.parseImportDefaultSpecifier=function(){var e=this.startNode();return e.local=this.parseIdent(),this.checkLValSimple(e.local,re),this.finishNode(e,"ImportDefaultSpecifier")},pe.parseImportNamespaceSpecifier=function(){var e=this.startNode();return this.next(),this.expectContextual("as"),e.local=this.parseIdent(),this.checkLValSimple(e.local,re),this.finishNode(e,"ImportNamespaceSpecifier")},pe.parseImportSpecifiers=function(){var e=[],t=!0;if(this.type===x.name&&(e.push(this.parseImportDefaultSpecifier()),!this.eat(x.comma)))return e;if(this.type===x.star)return e.push(this.parseImportNamespaceSpecifier()),e;for(this.expect(x.braceL);!this.eat(x.braceR);){if(t)t=!1;else if(this.expect(x.comma),this.afterTrailingComma(x.braceR))break;e.push(this.parseImportSpecifier())}return e},pe.parseWithClause=function(){var e=[];if(!this.eat(x._with))return e;this.expect(x.braceL);for(var t={},n=!0;!this.eat(x.braceR);){if(n)n=!1;else if(this.expect(x.comma),this.afterTrailingComma(x.braceR))break;var r=this.parseImportAttribute(),o="Identifier"===r.key.type?r.key.name:r.key.value;T(t,o)&&this.raiseRecoverable(r.key.start,"Duplicate attribute key '"+o+"'"),t[o]=!0,e.push(r)}return e},pe.parseImportAttribute=function(){var e=this.startNode();return e.key=this.type===x.string?this.parseExprAtom():this.parseIdent("never"!==this.options.allowReserved),this.expect(x.colon),this.type!==x.string&&this.unexpected(),e.value=this.parseExprAtom(),this.finishNode(e,"ImportAttribute")},pe.parseModuleExportName=function(){if(this.options.ecmaVersion>=13&&this.type===x.string){var e=this.parseLiteral(this.value);return P.test(e.value)&&this.raise(e.start,"An export name cannot include a lone surrogate."),e}return this.parseIdent(!0)},pe.adaptDirectivePrologue=function(e){for(var t=0;t=5&&"ExpressionStatement"===e.type&&"Literal"===e.expression.type&&"string"===typeof e.expression.value&&('"'===this.input[e.start]||"'"===this.input[e.start])};var Ae=se.prototype;Ae.toAssignable=function(e,t,n){if(this.options.ecmaVersion>=6&&e)switch(e.type){case"Identifier":this.inAsync&&"await"===e.name&&this.raise(e.start,"Cannot use 'await' as identifier inside an async function");break;case"ObjectPattern":case"ArrayPattern":case"AssignmentPattern":case"RestElement":break;case"ObjectExpression":e.type="ObjectPattern",n&&this.checkPatternErrors(n,!0);for(var r=0,o=e.properties;r=8&&!s&&"async"===l.name&&!this.canInsertSemicolon()&&this.eat(x._function))return this.overrideContext(ke.f_expr),this.parseFunction(this.startNodeAt(a,i),0,!1,!0,t);if(o&&!this.canInsertSemicolon()){if(this.eat(x.arrow))return this.parseArrowExpression(this.startNodeAt(a,i),[l],!1,t);if(this.options.ecmaVersion>=8&&"async"===l.name&&this.type===x.name&&!s&&(!this.potentialArrowInForAwait||"of"!==this.value||this.containsEsc))return l=this.parseIdent(!1),!this.canInsertSemicolon()&&this.eat(x.arrow)||this.unexpected(),this.parseArrowExpression(this.startNodeAt(a,i),[l],!0,t)}return l;case x.regexp:var u=this.value;return(r=this.parseLiteral(u.value)).regex={pattern:u.pattern,flags:u.flags},r;case x.num:case x.string:return this.parseLiteral(this.value);case x._null:case x._true:case x._false:return(r=this.startNode()).value=this.type===x._null?null:this.type===x._true,r.raw=this.type.keyword,this.next(),this.finishNode(r,"Literal");case x.parenL:var c=this.start,d=this.parseParenAndDistinguishExpression(o,t);return e&&(e.parenthesizedAssign<0&&!this.isSimpleAssignTarget(d)&&(e.parenthesizedAssign=c),e.parenthesizedBind<0&&(e.parenthesizedBind=c)),d;case x.bracketL:return r=this.startNode(),this.next(),r.elements=this.parseExprList(x.bracketR,!0,!0,e),this.finishNode(r,"ArrayExpression");case x.braceL:return this.overrideContext(ke.b_expr),this.parseObj(!1,e);case x._function:return r=this.startNode(),this.next(),this.parseFunction(r,0);case x._class:return this.parseClass(this.startNode(),!1);case x._new:return this.parseNew();case x.backQuote:return this.parseTemplate();case x._import:return this.options.ecmaVersion>=11?this.parseExprImport(n):this.unexpected();default:return this.parseExprAtomDefault()}},Se.parseExprAtomDefault=function(){this.unexpected()},Se.parseExprImport=function(e){var t=this.startNode();if(this.containsEsc&&this.raiseRecoverable(this.start,"Escape sequence in keyword import"),this.next(),this.type===x.parenL&&!e)return this.parseDynamicImport(t);if(this.type===x.dot){var n=this.startNodeAt(t.start,t.loc&&t.loc.start);return n.name="import",t.meta=this.finishNode(n,"Identifier"),this.parseImportMeta(t)}this.unexpected()},Se.parseDynamicImport=function(e){if(this.next(),e.source=this.parseMaybeAssign(),this.options.ecmaVersion>=16)this.eat(x.parenR)?e.options=null:(this.expect(x.comma),this.afterTrailingComma(x.parenR)?e.options=null:(e.options=this.parseMaybeAssign(),this.eat(x.parenR)||(this.expect(x.comma),this.afterTrailingComma(x.parenR)||this.unexpected())));else if(!this.eat(x.parenR)){var t=this.start;this.eat(x.comma)&&this.eat(x.parenR)?this.raiseRecoverable(t,"Trailing comma is not allowed in import()"):this.unexpected(t)}return this.finishNode(e,"ImportExpression")},Se.parseImportMeta=function(e){this.next();var t=this.containsEsc;return e.property=this.parseIdent(!0),"meta"!==e.property.name&&this.raiseRecoverable(e.property.start,"The only valid meta property for import is 'import.meta'"),t&&this.raiseRecoverable(e.start,"'import.meta' must not contain escaped characters"),"module"===this.options.sourceType||this.options.allowImportExportEverywhere||this.raiseRecoverable(e.start,"Cannot use 'import.meta' outside a module"),this.finishNode(e,"MetaProperty")},Se.parseLiteral=function(e){var t=this.startNode();return t.value=e,t.raw=this.input.slice(this.start,this.end),110===t.raw.charCodeAt(t.raw.length-1)&&(t.bigint=null!=t.value?t.value.toString():t.raw.slice(0,-1).replace(/_/g,"")),this.next(),this.finishNode(t,"Literal")},Se.parseParenExpression=function(){this.expect(x.parenL);var e=this.parseExpression();return this.expect(x.parenR),e},Se.shouldParseArrow=function(e){return!this.canInsertSemicolon()},Se.parseParenAndDistinguishExpression=function(e,t){var n,r=this.start,o=this.startLoc,a=this.options.ecmaVersion>=8;if(this.options.ecmaVersion>=6){this.next();var i,s=this.start,l=this.startLoc,u=[],c=!0,d=!1,p=new de,h=this.yieldPos,f=this.awaitPos;for(this.yieldPos=0,this.awaitPos=0;this.type!==x.parenR;){if(c?c=!1:this.expect(x.comma),a&&this.afterTrailingComma(x.parenR,!0)){d=!0;break}if(this.type===x.ellipsis){i=this.start,u.push(this.parseParenItem(this.parseRestBinding())),this.type===x.comma&&this.raiseRecoverable(this.start,"Comma is not permitted after the rest element");break}u.push(this.parseMaybeAssign(!1,p,this.parseParenItem))}var m=this.lastTokEnd,g=this.lastTokEndLoc;if(this.expect(x.parenR),e&&this.shouldParseArrow(u)&&this.eat(x.arrow))return this.checkPatternErrors(p,!1),this.checkYieldAwaitInDefaultParams(),this.yieldPos=h,this.awaitPos=f,this.parseParenArrowList(r,o,u,t);u.length&&!d||this.unexpected(this.lastTokStart),i&&this.unexpected(i),this.checkExpressionErrors(p,!0),this.yieldPos=h||this.yieldPos,this.awaitPos=f||this.awaitPos,u.length>1?((n=this.startNodeAt(s,l)).expressions=u,this.finishNodeAt(n,"SequenceExpression",m,g)):n=u[0]}else n=this.parseParenExpression();if(this.options.preserveParens){var v=this.startNodeAt(r,o);return v.expression=n,this.finishNode(v,"ParenthesizedExpression")}return n},Se.parseParenItem=function(e){return e},Se.parseParenArrowList=function(e,t,n,r){return this.parseArrowExpression(this.startNodeAt(e,t),n,!1,r)};var Ce=[];Se.parseNew=function(){this.containsEsc&&this.raiseRecoverable(this.start,"Escape sequence in keyword new");var e=this.startNode();if(this.next(),this.options.ecmaVersion>=6&&this.type===x.dot){var t=this.startNodeAt(e.start,e.loc&&e.loc.start);t.name="new",e.meta=this.finishNode(t,"Identifier"),this.next();var n=this.containsEsc;return e.property=this.parseIdent(!0),"target"!==e.property.name&&this.raiseRecoverable(e.property.start,"The only valid meta property for new is 'new.target'"),n&&this.raiseRecoverable(e.start,"'new.target' must not contain escaped characters"),this.allowNewDotTarget||this.raiseRecoverable(e.start,"'new.target' can only be used in functions and class static block"),this.finishNode(e,"MetaProperty")}var r=this.start,o=this.startLoc;return e.callee=this.parseSubscripts(this.parseExprAtom(null,!1,!0),r,o,!0,!1),this.eat(x.parenL)?e.arguments=this.parseExprList(x.parenR,this.options.ecmaVersion>=8,!1):e.arguments=Ce,this.finishNode(e,"NewExpression")},Se.parseTemplateElement=function(e){var t=e.isTagged,n=this.startNode();return this.type===x.invalidTemplate?(t||this.raiseRecoverable(this.start,"Bad escape sequence in untagged template literal"),n.value={raw:this.value.replace(/\r\n?/g,"\n"),cooked:null}):n.value={raw:this.input.slice(this.start,this.end).replace(/\r\n?/g,"\n"),cooked:this.value},this.next(),n.tail=this.type===x.backQuote,this.finishNode(n,"TemplateElement")},Se.parseTemplate=function(e){void 0===e&&(e={});var t=e.isTagged;void 0===t&&(t=!1);var n=this.startNode();this.next(),n.expressions=[];var r=this.parseTemplateElement({isTagged:t});for(n.quasis=[r];!r.tail;)this.type===x.eof&&this.raise(this.pos,"Unterminated template literal"),this.expect(x.dollarBraceL),n.expressions.push(this.parseExpression()),this.expect(x.braceR),n.quasis.push(r=this.parseTemplateElement({isTagged:t}));return this.next(),this.finishNode(n,"TemplateLiteral")},Se.isAsyncProp=function(e){return!e.computed&&"Identifier"===e.key.type&&"async"===e.key.name&&(this.type===x.name||this.type===x.num||this.type===x.string||this.type===x.bracketL||this.type.keyword||this.options.ecmaVersion>=9&&this.type===x.star)&&!A.test(this.input.slice(this.lastTokEnd,this.start))},Se.parseObj=function(e,t){var n=this.startNode(),r=!0,o={};for(n.properties=[],this.next();!this.eat(x.braceR);){if(r)r=!1;else if(this.expect(x.comma),this.options.ecmaVersion>=5&&this.afterTrailingComma(x.braceR))break;var a=this.parseProperty(e,t);e||this.checkPropClash(a,o,t),n.properties.push(a)}return this.finishNode(n,e?"ObjectPattern":"ObjectExpression")},Se.parseProperty=function(e,t){var n,r,o,a,i=this.startNode();if(this.options.ecmaVersion>=9&&this.eat(x.ellipsis))return e?(i.argument=this.parseIdent(!1),this.type===x.comma&&this.raiseRecoverable(this.start,"Comma is not permitted after the rest element"),this.finishNode(i,"RestElement")):(i.argument=this.parseMaybeAssign(!1,t),this.type===x.comma&&t&&t.trailingComma<0&&(t.trailingComma=this.start),this.finishNode(i,"SpreadElement"));this.options.ecmaVersion>=6&&(i.method=!1,i.shorthand=!1,(e||t)&&(o=this.start,a=this.startLoc),e||(n=this.eat(x.star)));var s=this.containsEsc;return this.parsePropertyName(i),!e&&!s&&this.options.ecmaVersion>=8&&!n&&this.isAsyncProp(i)?(r=!0,n=this.options.ecmaVersion>=9&&this.eat(x.star),this.parsePropertyName(i)):r=!1,this.parsePropertyValue(i,e,n,r,o,a,t,s),this.finishNode(i,"Property")},Se.parseGetterSetter=function(e){var t=e.key.name;this.parsePropertyName(e),e.value=this.parseMethod(!1),e.kind=t;var n="get"===e.kind?0:1;if(e.value.params.length!==n){var r=e.value.start;"get"===e.kind?this.raiseRecoverable(r,"getter should have no params"):this.raiseRecoverable(r,"setter should have exactly one param")}else"set"===e.kind&&"RestElement"===e.value.params[0].type&&this.raiseRecoverable(e.value.params[0].start,"Setter cannot use rest params")},Se.parsePropertyValue=function(e,t,n,r,o,a,i,s){(n||r)&&this.type===x.colon&&this.unexpected(),this.eat(x.colon)?(e.value=t?this.parseMaybeDefault(this.start,this.startLoc):this.parseMaybeAssign(!1,i),e.kind="init"):this.options.ecmaVersion>=6&&this.type===x.parenL?(t&&this.unexpected(),e.method=!0,e.value=this.parseMethod(n,r),e.kind="init"):t||s||!(this.options.ecmaVersion>=5)||e.computed||"Identifier"!==e.key.type||"get"!==e.key.name&&"set"!==e.key.name||this.type===x.comma||this.type===x.braceR||this.type===x.eq?this.options.ecmaVersion>=6&&!e.computed&&"Identifier"===e.key.type?((n||r)&&this.unexpected(),this.checkUnreserved(e.key),"await"!==e.key.name||this.awaitIdentPos||(this.awaitIdentPos=o),t?e.value=this.parseMaybeDefault(o,a,this.copyNode(e.key)):this.type===x.eq&&i?(i.shorthandAssign<0&&(i.shorthandAssign=this.start),e.value=this.parseMaybeDefault(o,a,this.copyNode(e.key))):e.value=this.copyNode(e.key),e.kind="init",e.shorthand=!0):this.unexpected():((n||r)&&this.unexpected(),this.parseGetterSetter(e))},Se.parsePropertyName=function(e){if(this.options.ecmaVersion>=6){if(this.eat(x.bracketL))return e.computed=!0,e.key=this.parseMaybeAssign(),this.expect(x.bracketR),e.key;e.computed=!1}return e.key=this.type===x.num||this.type===x.string?this.parseExprAtom():this.parseIdent("never"!==this.options.allowReserved)},Se.initFunction=function(e){e.id=null,this.options.ecmaVersion>=6&&(e.generator=e.expression=!1),this.options.ecmaVersion>=8&&(e.async=!1)},Se.parseMethod=function(e,t,n){var r=this.startNode(),o=this.yieldPos,a=this.awaitPos,i=this.awaitIdentPos;return this.initFunction(r),this.options.ecmaVersion>=6&&(r.generator=e),this.options.ecmaVersion>=8&&(r.async=!!t),this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,this.enterScope(ee(t,r.generator)|Y|(n?X:0)),this.expect(x.parenL),r.params=this.parseBindingList(x.parenR,!1,this.options.ecmaVersion>=8),this.checkYieldAwaitInDefaultParams(),this.parseFunctionBody(r,!1,!0,!1),this.yieldPos=o,this.awaitPos=a,this.awaitIdentPos=i,this.finishNode(r,"FunctionExpression")},Se.parseArrowExpression=function(e,t,n,r){var o=this.yieldPos,a=this.awaitPos,i=this.awaitIdentPos;return this.enterScope(ee(n,!1)|K),this.initFunction(e),this.options.ecmaVersion>=8&&(e.async=!!n),this.yieldPos=0,this.awaitPos=0,this.awaitIdentPos=0,e.params=this.toAssignableList(t,!0),this.parseFunctionBody(e,!0,!1,r),this.yieldPos=o,this.awaitPos=a,this.awaitIdentPos=i,this.finishNode(e,"ArrowFunctionExpression")},Se.parseFunctionBody=function(e,t,n,r){var o=t&&this.type!==x.braceL,a=this.strict,i=!1;if(o)e.body=this.parseMaybeAssign(r),e.expression=!0,this.checkParams(e,!1);else{var s=this.options.ecmaVersion>=7&&!this.isSimpleParamList(e.params);a&&!s||(i=this.strictDirective(this.end))&&s&&this.raiseRecoverable(e.start,"Illegal 'use strict' directive in function with non-simple parameter list");var l=this.labels;this.labels=[],i&&(this.strict=!0),this.checkParams(e,!a&&!i&&!t&&!n&&this.isSimpleParamList(e.params)),this.strict&&e.id&&this.checkLValSimple(e.id,ie),e.body=this.parseBlock(!1,void 0,i&&!a),e.expression=!1,this.adaptDirectivePrologue(e.body.body),this.labels=l}this.exitScope()},Se.isSimpleParamList=function(e){for(var t=0,n=e;t-1||o.functions.indexOf(e)>-1||o.var.indexOf(e)>-1,o.lexical.push(e),this.inModule&&o.flags&V&&delete this.undefinedExports[e]}else if(t===ae)this.currentScope().lexical.push(e);else if(t===oe){var a=this.currentScope();r=this.treatFunctionsAsVar?a.lexical.indexOf(e)>-1:a.lexical.indexOf(e)>-1||a.var.indexOf(e)>-1,a.functions.push(e)}else for(var i=this.scopeStack.length-1;i>=0;--i){var s=this.scopeStack[i];if(s.lexical.indexOf(e)>-1&&!(s.flags&$&&s.lexical[0]===e)||!this.treatFunctionsAsVarInScope(s)&&s.functions.indexOf(e)>-1){r=!0;break}if(s.var.push(e),this.inModule&&s.flags&V&&delete this.undefinedExports[e],s.flags&Z)break}r&&this.raiseRecoverable(n,"Identifier '"+e+"' has already been declared")},Te.checkLocalExport=function(e){-1===this.scopeStack[0].lexical.indexOf(e.name)&&-1===this.scopeStack[0].var.indexOf(e.name)&&(this.undefinedExports[e.name]=e)},Te.currentScope=function(){return this.scopeStack[this.scopeStack.length-1]},Te.currentVarScope=function(){for(var e=this.scopeStack.length-1;;e--){var t=this.scopeStack[e];if(t.flags&(Z|J|Q))return t}},Te.currentThisScope=function(){for(var e=this.scopeStack.length-1;;e--){var t=this.scopeStack[e];if(t.flags&(Z|J|Q)&&!(t.flags&K))return t}};var ze=function(e,t,n){this.type="",this.start=t,this.end=0,e.options.locations&&(this.loc=new N(e,n)),e.options.directSourceFile&&(this.sourceFile=e.options.directSourceFile),e.options.ranges&&(this.range=[t,0])},Ie=se.prototype;function Le(e,t,n,r){return e.type=t,e.end=n,this.options.locations&&(e.loc.end=r),this.options.ranges&&(e.range[1]=n),e}Ie.startNode=function(){return new ze(this,this.start,this.startLoc)},Ie.startNodeAt=function(e,t){return new ze(this,e,t)},Ie.finishNode=function(e,t){return Le.call(this,e,t,this.lastTokEnd,this.lastTokEndLoc)},Ie.finishNodeAt=function(e,t,n,r){return Le.call(this,e,t,n,r)},Ie.copyNode=function(e){var t=new ze(this,e.start,this.startLoc);for(var n in e)t[n]=e[n];return t};var Pe="ASCII ASCII_Hex_Digit AHex Alphabetic Alpha Any Assigned Bidi_Control Bidi_C Bidi_Mirrored Bidi_M Case_Ignorable CI Cased Changes_When_Casefolded CWCF Changes_When_Casemapped CWCM Changes_When_Lowercased CWL Changes_When_NFKC_Casefolded CWKCF Changes_When_Titlecased CWT Changes_When_Uppercased CWU Dash Default_Ignorable_Code_Point DI Deprecated Dep Diacritic Dia Emoji Emoji_Component Emoji_Modifier Emoji_Modifier_Base Emoji_Presentation Extender Ext Grapheme_Base Gr_Base Grapheme_Extend Gr_Ext Hex_Digit Hex IDS_Binary_Operator IDSB IDS_Trinary_Operator IDST ID_Continue IDC ID_Start IDS Ideographic Ideo Join_Control Join_C Logical_Order_Exception LOE Lowercase Lower Math Noncharacter_Code_Point NChar Pattern_Syntax Pat_Syn Pattern_White_Space Pat_WS Quotation_Mark QMark Radical Regional_Indicator RI Sentence_Terminal STerm Soft_Dotted SD Terminal_Punctuation Term Unified_Ideograph UIdeo Uppercase Upper Variation_Selector VS White_Space space XID_Continue XIDC XID_Start XIDS",Re=Pe+" Extended_Pictographic",Ne=Re+" EBase EComp EMod EPres ExtPict",Oe={9:Pe,10:Re,11:Re,12:Ne,13:Ne,14:Ne},Be={9:"",10:"",11:"",12:"",13:"",14:"Basic_Emoji Emoji_Keycap_Sequence RGI_Emoji_Modifier_Sequence RGI_Emoji_Flag_Sequence RGI_Emoji_Tag_Sequence RGI_Emoji_ZWJ_Sequence RGI_Emoji"},Me="Cased_Letter LC Close_Punctuation Pe Connector_Punctuation Pc Control Cc cntrl Currency_Symbol Sc Dash_Punctuation Pd Decimal_Number Nd digit Enclosing_Mark Me Final_Punctuation Pf Format Cf Initial_Punctuation Pi Letter L Letter_Number Nl Line_Separator Zl Lowercase_Letter Ll Mark M Combining_Mark Math_Symbol Sm Modifier_Letter Lm Modifier_Symbol Sk Nonspacing_Mark Mn Number N Open_Punctuation Ps Other C Other_Letter Lo Other_Number No Other_Punctuation Po Other_Symbol So Paragraph_Separator Zp Private_Use Co Punctuation P punct Separator Z Space_Separator Zs Spacing_Mark Mc Surrogate Cs Symbol S Titlecase_Letter Lt Unassigned Cn Uppercase_Letter Lu",We="Adlam Adlm Ahom Anatolian_Hieroglyphs Hluw Arabic Arab Armenian Armn Avestan Avst Balinese Bali Bamum Bamu Bassa_Vah Bass Batak Batk Bengali Beng Bhaiksuki Bhks Bopomofo Bopo Brahmi Brah Braille Brai Buginese Bugi Buhid Buhd Canadian_Aboriginal Cans Carian Cari Caucasian_Albanian Aghb Chakma Cakm Cham Cham Cherokee Cher Common Zyyy Coptic Copt Qaac Cuneiform Xsux Cypriot Cprt Cyrillic Cyrl Deseret Dsrt Devanagari Deva Duployan Dupl Egyptian_Hieroglyphs Egyp Elbasan Elba Ethiopic Ethi Georgian Geor Glagolitic Glag Gothic Goth Grantha Gran Greek Grek Gujarati Gujr Gurmukhi Guru Han Hani Hangul Hang Hanunoo Hano Hatran Hatr Hebrew Hebr Hiragana Hira Imperial_Aramaic Armi Inherited Zinh Qaai Inscriptional_Pahlavi Phli Inscriptional_Parthian Prti Javanese Java Kaithi Kthi Kannada Knda Katakana Kana Kayah_Li Kali Kharoshthi Khar Khmer Khmr Khojki Khoj Khudawadi Sind Lao Laoo Latin Latn Lepcha Lepc Limbu Limb Linear_A Lina Linear_B Linb Lisu Lisu Lycian Lyci Lydian Lydi Mahajani Mahj Malayalam Mlym Mandaic Mand Manichaean Mani Marchen Marc Masaram_Gondi Gonm Meetei_Mayek Mtei Mende_Kikakui Mend Meroitic_Cursive Merc Meroitic_Hieroglyphs Mero Miao Plrd Modi Mongolian Mong Mro Mroo Multani Mult Myanmar Mymr Nabataean Nbat New_Tai_Lue Talu Newa Newa Nko Nkoo Nushu Nshu Ogham Ogam Ol_Chiki Olck Old_Hungarian Hung Old_Italic Ital Old_North_Arabian Narb Old_Permic Perm Old_Persian Xpeo Old_South_Arabian Sarb Old_Turkic Orkh Oriya Orya Osage Osge Osmanya Osma Pahawh_Hmong Hmng Palmyrene Palm Pau_Cin_Hau Pauc Phags_Pa Phag Phoenician Phnx Psalter_Pahlavi Phlp Rejang Rjng Runic Runr Samaritan Samr Saurashtra Saur Sharada Shrd Shavian Shaw Siddham Sidd SignWriting Sgnw Sinhala Sinh Sora_Sompeng Sora Soyombo Soyo Sundanese Sund Syloti_Nagri Sylo Syriac Syrc Tagalog Tglg Tagbanwa Tagb Tai_Le Tale Tai_Tham Lana Tai_Viet Tavt Takri Takr Tamil Taml Tangut Tang Telugu Telu Thaana Thaa Thai Thai Tibetan Tibt Tifinagh Tfng Tirhuta Tirh Ugaritic Ugar Vai Vaii Warang_Citi Wara Yi Yiii Zanabazar_Square Zanb",Ue=We+" Dogra Dogr Gunjala_Gondi Gong Hanifi_Rohingya Rohg Makasar Maka Medefaidrin Medf Old_Sogdian Sogo Sogdian Sogd",Ve=Ue+" Elymaic Elym Nandinagari Nand Nyiakeng_Puachue_Hmong Hmnp Wancho Wcho",He=Ve+" Chorasmian Chrs Diak Dives_Akuru Khitan_Small_Script Kits Yezi Yezidi",Ge=He+" Cypro_Minoan Cpmn Old_Uyghur Ougr Tangsa Tnsa Toto Vithkuqi Vith",qe={9:We,10:Ue,11:Ve,12:He,13:Ge,14:Ge+" Gara Garay Gukh Gurung_Khema Hrkt Katakana_Or_Hiragana Kawi Kirat_Rai Krai Nag_Mundari Nagm Ol_Onal Onao Sunu Sunuwar Todhri Todr Tulu_Tigalari Tutg Unknown Zzzz"},Ke={};function $e(e){var t=Ke[e]={binary:I(Oe[e]+" "+Me),binaryOfStrings:I(Be[e]),nonBinary:{General_Category:I(Me),Script:I(qe[e])}};t.nonBinary.Script_Extensions=t.nonBinary.Script,t.nonBinary.gc=t.nonBinary.General_Category,t.nonBinary.sc=t.nonBinary.Script,t.nonBinary.scx=t.nonBinary.Script_Extensions}for(var Ye=0,Xe=[9,10,11,12,13,14];Ye=6?"uy":"")+(e.options.ecmaVersion>=9?"s":"")+(e.options.ecmaVersion>=13?"d":"")+(e.options.ecmaVersion>=15?"v":""),this.unicodeProperties=Ke[e.options.ecmaVersion>=14?14:e.options.ecmaVersion],this.source="",this.flags="",this.start=0,this.switchU=!1,this.switchV=!1,this.switchN=!1,this.pos=0,this.lastIntValue=0,this.lastStringValue="",this.lastAssertionIsQuantifiable=!1,this.numCapturingParens=0,this.maxBackReference=0,this.groupNames=Object.create(null),this.backReferenceNames=[],this.branchID=null};function et(e){for(var t in e)return!0;return!1}function tt(e){return 105===e||109===e||115===e}function nt(e){return 36===e||e>=40&&e<=43||46===e||63===e||e>=91&&e<=94||e>=123&&e<=125}function rt(e){return p(e,!0)||36===e||95===e}function ot(e){return h(e,!0)||36===e||95===e||8204===e||8205===e}function at(e){return e>=65&&e<=90||e>=97&&e<=122}function it(e){return e>=0&&e<=1114111}Ze.prototype.reset=function(e,t,n){var r=-1!==n.indexOf("v"),o=-1!==n.indexOf("u");this.start=0|e,this.source=t+"",this.flags=n,r&&this.parser.options.ecmaVersion>=15?(this.switchU=!0,this.switchV=!0,this.switchN=!0):(this.switchU=o&&this.parser.options.ecmaVersion>=6,this.switchV=!1,this.switchN=o&&this.parser.options.ecmaVersion>=9)},Ze.prototype.raise=function(e){this.parser.raiseRecoverable(this.start,"Invalid regular expression: /"+this.source+"/: "+e)},Ze.prototype.at=function(e,t){void 0===t&&(t=!1);var n=this.source,r=n.length;if(e>=r)return-1;var o=n.charCodeAt(e);if(!t&&!this.switchU||o<=55295||o>=57344||e+1>=r)return o;var a=n.charCodeAt(e+1);return a>=56320&&a<=57343?(o<<10)+a-56613888:o},Ze.prototype.nextIndex=function(e,t){void 0===t&&(t=!1);var n=this.source,r=n.length;if(e>=r)return r;var o,a=n.charCodeAt(e);return!t&&!this.switchU||a<=55295||a>=57344||e+1>=r||(o=n.charCodeAt(e+1))<56320||o>57343?e+1:e+2},Ze.prototype.current=function(e){return void 0===e&&(e=!1),this.at(this.pos,e)},Ze.prototype.lookahead=function(e){return void 0===e&&(e=!1),this.at(this.nextIndex(this.pos,e),e)},Ze.prototype.advance=function(e){void 0===e&&(e=!1),this.pos=this.nextIndex(this.pos,e)},Ze.prototype.eat=function(e,t){return void 0===t&&(t=!1),this.current(t)===e&&(this.advance(t),!0)},Ze.prototype.eatChars=function(e,t){void 0===t&&(t=!1);for(var n=this.pos,r=0,o=e;r-1&&this.raise(e.start,"Duplicate regular expression flag"),"u"===i&&(r=!0),"v"===i&&(o=!0)}this.options.ecmaVersion>=15&&r&&o&&this.raise(e.start,"Invalid regular expression flag")},Qe.validateRegExpPattern=function(e){this.regexp_pattern(e),!e.switchN&&this.options.ecmaVersion>=9&&et(e.groupNames)&&(e.switchN=!0,this.regexp_pattern(e))},Qe.regexp_pattern=function(e){e.pos=0,e.lastIntValue=0,e.lastStringValue="",e.lastAssertionIsQuantifiable=!1,e.numCapturingParens=0,e.maxBackReference=0,e.groupNames=Object.create(null),e.backReferenceNames.length=0,e.branchID=null,this.regexp_disjunction(e),e.pos!==e.source.length&&(e.eat(41)&&e.raise("Unmatched ')'"),(e.eat(93)||e.eat(125))&&e.raise("Lone quantifier brackets")),e.maxBackReference>e.numCapturingParens&&e.raise("Invalid escape");for(var t=0,n=e.backReferenceNames;t=16;for(t&&(e.branchID=new Je(e.branchID,null)),this.regexp_alternative(e);e.eat(124);)t&&(e.branchID=e.branchID.sibling()),this.regexp_alternative(e);t&&(e.branchID=e.branchID.parent),this.regexp_eatQuantifier(e,!0)&&e.raise("Nothing to repeat"),e.eat(123)&&e.raise("Lone quantifier brackets")},Qe.regexp_alternative=function(e){for(;e.pos=9&&(n=e.eat(60)),e.eat(61)||e.eat(33))return this.regexp_disjunction(e),e.eat(41)||e.raise("Unterminated group"),e.lastAssertionIsQuantifiable=!n,!0}return e.pos=t,!1},Qe.regexp_eatQuantifier=function(e,t){return void 0===t&&(t=!1),!!this.regexp_eatQuantifierPrefix(e,t)&&(e.eat(63),!0)},Qe.regexp_eatQuantifierPrefix=function(e,t){return e.eat(42)||e.eat(43)||e.eat(63)||this.regexp_eatBracedQuantifier(e,t)},Qe.regexp_eatBracedQuantifier=function(e,t){var n=e.pos;if(e.eat(123)){var r=0,o=-1;if(this.regexp_eatDecimalDigits(e)&&(r=e.lastIntValue,e.eat(44)&&this.regexp_eatDecimalDigits(e)&&(o=e.lastIntValue),e.eat(125)))return-1!==o&&o=16){var n=this.regexp_eatModifiers(e),r=e.eat(45);if(n||r){for(var o=0;o-1&&e.raise("Duplicate regular expression modifiers")}if(r){var i=this.regexp_eatModifiers(e);n||i||58!==e.current()||e.raise("Invalid regular expression modifiers");for(var s=0;s-1||n.indexOf(l)>-1)&&e.raise("Duplicate regular expression modifiers")}}}}if(e.eat(58)){if(this.regexp_disjunction(e),e.eat(41))return!0;e.raise("Unterminated group")}}e.pos=t}return!1},Qe.regexp_eatCapturingGroup=function(e){if(e.eat(40)){if(this.options.ecmaVersion>=9?this.regexp_groupSpecifier(e):63===e.current()&&e.raise("Invalid group"),this.regexp_disjunction(e),e.eat(41))return e.numCapturingParens+=1,!0;e.raise("Unterminated group")}return!1},Qe.regexp_eatModifiers=function(e){for(var t="",n=0;-1!==(n=e.current())&&tt(n);)t+=L(n),e.advance();return t},Qe.regexp_eatExtendedAtom=function(e){return e.eat(46)||this.regexp_eatReverseSolidusAtomEscape(e)||this.regexp_eatCharacterClass(e)||this.regexp_eatUncapturingGroup(e)||this.regexp_eatCapturingGroup(e)||this.regexp_eatInvalidBracedQuantifier(e)||this.regexp_eatExtendedPatternCharacter(e)},Qe.regexp_eatInvalidBracedQuantifier=function(e){return this.regexp_eatBracedQuantifier(e,!0)&&e.raise("Nothing to repeat"),!1},Qe.regexp_eatSyntaxCharacter=function(e){var t=e.current();return!!nt(t)&&(e.lastIntValue=t,e.advance(),!0)},Qe.regexp_eatPatternCharacters=function(e){for(var t=e.pos,n=0;-1!==(n=e.current())&&!nt(n);)e.advance();return e.pos!==t},Qe.regexp_eatExtendedPatternCharacter=function(e){var t=e.current();return!(-1===t||36===t||t>=40&&t<=43||46===t||63===t||91===t||94===t||124===t)&&(e.advance(),!0)},Qe.regexp_groupSpecifier=function(e){if(e.eat(63)){this.regexp_eatGroupName(e)||e.raise("Invalid group");var t=this.options.ecmaVersion>=16,n=e.groupNames[e.lastStringValue];if(n)if(t)for(var r=0,o=n;r=11,r=e.current(n);return e.advance(n),92===r&&this.regexp_eatRegExpUnicodeEscapeSequence(e,n)&&(r=e.lastIntValue),rt(r)?(e.lastIntValue=r,!0):(e.pos=t,!1)},Qe.regexp_eatRegExpIdentifierPart=function(e){var t=e.pos,n=this.options.ecmaVersion>=11,r=e.current(n);return e.advance(n),92===r&&this.regexp_eatRegExpUnicodeEscapeSequence(e,n)&&(r=e.lastIntValue),ot(r)?(e.lastIntValue=r,!0):(e.pos=t,!1)},Qe.regexp_eatAtomEscape=function(e){return!!(this.regexp_eatBackReference(e)||this.regexp_eatCharacterClassEscape(e)||this.regexp_eatCharacterEscape(e)||e.switchN&&this.regexp_eatKGroupName(e))||(e.switchU&&(99===e.current()&&e.raise("Invalid unicode escape"),e.raise("Invalid escape")),!1)},Qe.regexp_eatBackReference=function(e){var t=e.pos;if(this.regexp_eatDecimalEscape(e)){var n=e.lastIntValue;if(e.switchU)return n>e.maxBackReference&&(e.maxBackReference=n),!0;if(n<=e.numCapturingParens)return!0;e.pos=t}return!1},Qe.regexp_eatKGroupName=function(e){if(e.eat(107)){if(this.regexp_eatGroupName(e))return e.backReferenceNames.push(e.lastStringValue),!0;e.raise("Invalid named reference")}return!1},Qe.regexp_eatCharacterEscape=function(e){return this.regexp_eatControlEscape(e)||this.regexp_eatCControlLetter(e)||this.regexp_eatZero(e)||this.regexp_eatHexEscapeSequence(e)||this.regexp_eatRegExpUnicodeEscapeSequence(e,!1)||!e.switchU&&this.regexp_eatLegacyOctalEscapeSequence(e)||this.regexp_eatIdentityEscape(e)},Qe.regexp_eatCControlLetter=function(e){var t=e.pos;if(e.eat(99)){if(this.regexp_eatControlLetter(e))return!0;e.pos=t}return!1},Qe.regexp_eatZero=function(e){return 48===e.current()&&!gt(e.lookahead())&&(e.lastIntValue=0,e.advance(),!0)},Qe.regexp_eatControlEscape=function(e){var t=e.current();return 116===t?(e.lastIntValue=9,e.advance(),!0):110===t?(e.lastIntValue=10,e.advance(),!0):118===t?(e.lastIntValue=11,e.advance(),!0):102===t?(e.lastIntValue=12,e.advance(),!0):114===t&&(e.lastIntValue=13,e.advance(),!0)},Qe.regexp_eatControlLetter=function(e){var t=e.current();return!!at(t)&&(e.lastIntValue=t%32,e.advance(),!0)},Qe.regexp_eatRegExpUnicodeEscapeSequence=function(e,t){void 0===t&&(t=!1);var n=e.pos,r=t||e.switchU;if(e.eat(117)){if(this.regexp_eatFixedHexDigits(e,4)){var o=e.lastIntValue;if(r&&o>=55296&&o<=56319){var a=e.pos;if(e.eat(92)&&e.eat(117)&&this.regexp_eatFixedHexDigits(e,4)){var i=e.lastIntValue;if(i>=56320&&i<=57343)return e.lastIntValue=1024*(o-55296)+(i-56320)+65536,!0}e.pos=a,e.lastIntValue=o}return!0}if(r&&e.eat(123)&&this.regexp_eatHexDigits(e)&&e.eat(125)&&it(e.lastIntValue))return!0;r&&e.raise("Invalid unicode escape"),e.pos=n}return!1},Qe.regexp_eatIdentityEscape=function(e){if(e.switchU)return!!this.regexp_eatSyntaxCharacter(e)||!!e.eat(47)&&(e.lastIntValue=47,!0);var t=e.current();return!(99===t||e.switchN&&107===t)&&(e.lastIntValue=t,e.advance(),!0)},Qe.regexp_eatDecimalEscape=function(e){e.lastIntValue=0;var t=e.current();if(t>=49&&t<=57){do{e.lastIntValue=10*e.lastIntValue+(t-48),e.advance()}while((t=e.current())>=48&&t<=57);return!0}return!1};var st=0,lt=1,ut=2;function ct(e){return 100===e||68===e||115===e||83===e||119===e||87===e}function dt(e){return at(e)||95===e}function pt(e){return dt(e)||gt(e)}function ht(e){return 33===e||e>=35&&e<=38||e>=42&&e<=44||46===e||e>=58&&e<=64||94===e||96===e||126===e}function ft(e){return 40===e||41===e||45===e||47===e||e>=91&&e<=93||e>=123&&e<=125}function mt(e){return 33===e||35===e||37===e||38===e||44===e||45===e||e>=58&&e<=62||64===e||96===e||126===e}function gt(e){return e>=48&&e<=57}function vt(e){return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function yt(e){return e>=65&&e<=70?e-65+10:e>=97&&e<=102?e-97+10:e-48}function bt(e){return e>=48&&e<=55}Qe.regexp_eatCharacterClassEscape=function(e){var t=e.current();if(ct(t))return e.lastIntValue=-1,e.advance(),lt;var n=!1;if(e.switchU&&this.options.ecmaVersion>=9&&((n=80===t)||112===t)){var r;if(e.lastIntValue=-1,e.advance(),e.eat(123)&&(r=this.regexp_eatUnicodePropertyValueExpression(e))&&e.eat(125))return n&&r===ut&&e.raise("Invalid property name"),r;e.raise("Invalid property name")}return st},Qe.regexp_eatUnicodePropertyValueExpression=function(e){var t=e.pos;if(this.regexp_eatUnicodePropertyName(e)&&e.eat(61)){var n=e.lastStringValue;if(this.regexp_eatUnicodePropertyValue(e)){var r=e.lastStringValue;return this.regexp_validateUnicodePropertyNameAndValue(e,n,r),lt}}if(e.pos=t,this.regexp_eatLoneUnicodePropertyNameOrValue(e)){var o=e.lastStringValue;return this.regexp_validateUnicodePropertyNameOrValue(e,o)}return st},Qe.regexp_validateUnicodePropertyNameAndValue=function(e,t,n){T(e.unicodeProperties.nonBinary,t)||e.raise("Invalid property name"),e.unicodeProperties.nonBinary[t].test(n)||e.raise("Invalid property value")},Qe.regexp_validateUnicodePropertyNameOrValue=function(e,t){return e.unicodeProperties.binary.test(t)?lt:e.switchV&&e.unicodeProperties.binaryOfStrings.test(t)?ut:void e.raise("Invalid property name")},Qe.regexp_eatUnicodePropertyName=function(e){var t=0;for(e.lastStringValue="";dt(t=e.current());)e.lastStringValue+=L(t),e.advance();return""!==e.lastStringValue},Qe.regexp_eatUnicodePropertyValue=function(e){var t=0;for(e.lastStringValue="";pt(t=e.current());)e.lastStringValue+=L(t),e.advance();return""!==e.lastStringValue},Qe.regexp_eatLoneUnicodePropertyNameOrValue=function(e){return this.regexp_eatUnicodePropertyValue(e)},Qe.regexp_eatCharacterClass=function(e){if(e.eat(91)){var t=e.eat(94),n=this.regexp_classContents(e);return e.eat(93)||e.raise("Unterminated character class"),t&&n===ut&&e.raise("Negated character class may contain strings"),!0}return!1},Qe.regexp_classContents=function(e){return 93===e.current()?lt:e.switchV?this.regexp_classSetExpression(e):(this.regexp_nonEmptyClassRanges(e),lt)},Qe.regexp_nonEmptyClassRanges=function(e){for(;this.regexp_eatClassAtom(e);){var t=e.lastIntValue;if(e.eat(45)&&this.regexp_eatClassAtom(e)){var n=e.lastIntValue;!e.switchU||-1!==t&&-1!==n||e.raise("Invalid character class"),-1!==t&&-1!==n&&t>n&&e.raise("Range out of order in character class")}}},Qe.regexp_eatClassAtom=function(e){var t=e.pos;if(e.eat(92)){if(this.regexp_eatClassEscape(e))return!0;if(e.switchU){var n=e.current();(99===n||bt(n))&&e.raise("Invalid class escape"),e.raise("Invalid escape")}e.pos=t}var r=e.current();return 93!==r&&(e.lastIntValue=r,e.advance(),!0)},Qe.regexp_eatClassEscape=function(e){var t=e.pos;if(e.eat(98))return e.lastIntValue=8,!0;if(e.switchU&&e.eat(45))return e.lastIntValue=45,!0;if(!e.switchU&&e.eat(99)){if(this.regexp_eatClassControlLetter(e))return!0;e.pos=t}return this.regexp_eatCharacterClassEscape(e)||this.regexp_eatCharacterEscape(e)},Qe.regexp_classSetExpression=function(e){var t,n=lt;if(this.regexp_eatClassSetRange(e));else if(t=this.regexp_eatClassSetOperand(e)){t===ut&&(n=ut);for(var r=e.pos;e.eatChars([38,38]);)38!==e.current()&&(t=this.regexp_eatClassSetOperand(e))?t!==ut&&(n=lt):e.raise("Invalid character in character class");if(r!==e.pos)return n;for(;e.eatChars([45,45]);)this.regexp_eatClassSetOperand(e)||e.raise("Invalid character in character class");if(r!==e.pos)return n}else e.raise("Invalid character in character class");for(;;)if(!this.regexp_eatClassSetRange(e)){if(!(t=this.regexp_eatClassSetOperand(e)))return n;t===ut&&(n=ut)}},Qe.regexp_eatClassSetRange=function(e){var t=e.pos;if(this.regexp_eatClassSetCharacter(e)){var n=e.lastIntValue;if(e.eat(45)&&this.regexp_eatClassSetCharacter(e)){var r=e.lastIntValue;return-1!==n&&-1!==r&&n>r&&e.raise("Range out of order in character class"),!0}e.pos=t}return!1},Qe.regexp_eatClassSetOperand=function(e){return this.regexp_eatClassSetCharacter(e)?lt:this.regexp_eatClassStringDisjunction(e)||this.regexp_eatNestedClass(e)},Qe.regexp_eatNestedClass=function(e){var t=e.pos;if(e.eat(91)){var n=e.eat(94),r=this.regexp_classContents(e);if(e.eat(93))return n&&r===ut&&e.raise("Negated character class may contain strings"),r;e.pos=t}if(e.eat(92)){var o=this.regexp_eatCharacterClassEscape(e);if(o)return o;e.pos=t}return null},Qe.regexp_eatClassStringDisjunction=function(e){var t=e.pos;if(e.eatChars([92,113])){if(e.eat(123)){var n=this.regexp_classStringDisjunctionContents(e);if(e.eat(125))return n}else e.raise("Invalid escape");e.pos=t}return null},Qe.regexp_classStringDisjunctionContents=function(e){for(var t=this.regexp_classString(e);e.eat(124);)this.regexp_classString(e)===ut&&(t=ut);return t},Qe.regexp_classString=function(e){for(var t=0;this.regexp_eatClassSetCharacter(e);)t++;return 1===t?lt:ut},Qe.regexp_eatClassSetCharacter=function(e){var t=e.pos;if(e.eat(92))return!(!this.regexp_eatCharacterEscape(e)&&!this.regexp_eatClassSetReservedPunctuator(e))||(e.eat(98)?(e.lastIntValue=8,!0):(e.pos=t,!1));var n=e.current();return!(n<0||n===e.lookahead()&&ht(n))&&!ft(n)&&(e.advance(),e.lastIntValue=n,!0)},Qe.regexp_eatClassSetReservedPunctuator=function(e){var t=e.current();return!!mt(t)&&(e.lastIntValue=t,e.advance(),!0)},Qe.regexp_eatClassControlLetter=function(e){var t=e.current();return!(!gt(t)&&95!==t)&&(e.lastIntValue=t%32,e.advance(),!0)},Qe.regexp_eatHexEscapeSequence=function(e){var t=e.pos;if(e.eat(120)){if(this.regexp_eatFixedHexDigits(e,2))return!0;e.switchU&&e.raise("Invalid escape"),e.pos=t}return!1},Qe.regexp_eatDecimalDigits=function(e){var t=e.pos,n=0;for(e.lastIntValue=0;gt(n=e.current());)e.lastIntValue=10*e.lastIntValue+(n-48),e.advance();return e.pos!==t},Qe.regexp_eatHexDigits=function(e){var t=e.pos,n=0;for(e.lastIntValue=0;vt(n=e.current());)e.lastIntValue=16*e.lastIntValue+yt(n),e.advance();return e.pos!==t},Qe.regexp_eatLegacyOctalEscapeSequence=function(e){if(this.regexp_eatOctalDigit(e)){var t=e.lastIntValue;if(this.regexp_eatOctalDigit(e)){var n=e.lastIntValue;t<=3&&this.regexp_eatOctalDigit(e)?e.lastIntValue=64*t+8*n+e.lastIntValue:e.lastIntValue=8*t+n}else e.lastIntValue=t;return!0}return!1},Qe.regexp_eatOctalDigit=function(e){var t=e.current();return bt(t)?(e.lastIntValue=t-48,e.advance(),!0):(e.lastIntValue=0,!1)},Qe.regexp_eatFixedHexDigits=function(e,t){var n=e.pos;e.lastIntValue=0;for(var r=0;r=this.input.length?this.finishToken(x.eof):e.override?e.override(this):void this.readToken(this.fullCharCodeAtPos())},At.readToken=function(e){return p(e,this.options.ecmaVersion>=6)||92===e?this.readWord():this.getTokenFromCode(e)},At.fullCharCodeAtPos=function(){var e=this.input.charCodeAt(this.pos);if(e<=55295||e>=56320)return e;var t=this.input.charCodeAt(this.pos+1);return t<=56319||t>=57344?e:(e<<10)+t-56613888},At.skipBlockComment=function(){var e=this.options.onComment&&this.curPosition(),t=this.pos,n=this.input.indexOf("*/",this.pos+=2);if(-1===n&&this.raise(this.pos-2,"Unterminated comment"),this.pos=n+2,this.options.locations)for(var r=void 0,o=t;(r=w(this.input,o,this.pos))>-1;)++this.curLine,o=this.lineStart=r;this.options.onComment&&this.options.onComment(!0,this.input.slice(t+2,n),t,this.pos,e,this.curPosition())},At.skipLineComment=function(e){for(var t=this.pos,n=this.options.onComment&&this.curPosition(),r=this.input.charCodeAt(this.pos+=e);this.pos8&&e<14||e>=5760&&S.test(String.fromCharCode(e))))break e;++this.pos}}},At.finishToken=function(e,t){this.end=this.pos,this.options.locations&&(this.endLoc=this.curPosition());var n=this.type;this.type=e,this.value=t,this.updateContext(n)},At.readToken_dot=function(){var e=this.input.charCodeAt(this.pos+1);if(e>=48&&e<=57)return this.readNumber(!0);var t=this.input.charCodeAt(this.pos+2);return this.options.ecmaVersion>=6&&46===e&&46===t?(this.pos+=3,this.finishToken(x.ellipsis)):(++this.pos,this.finishToken(x.dot))},At.readToken_slash=function(){var e=this.input.charCodeAt(this.pos+1);return this.exprAllowed?(++this.pos,this.readRegexp()):61===e?this.finishOp(x.assign,2):this.finishOp(x.slash,1)},At.readToken_mult_modulo_exp=function(e){var t=this.input.charCodeAt(this.pos+1),n=1,r=42===e?x.star:x.modulo;return this.options.ecmaVersion>=7&&42===e&&42===t&&(++n,r=x.starstar,t=this.input.charCodeAt(this.pos+2)),61===t?this.finishOp(x.assign,n+1):this.finishOp(r,n)},At.readToken_pipe_amp=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?this.options.ecmaVersion>=12&&61===this.input.charCodeAt(this.pos+2)?this.finishOp(x.assign,3):this.finishOp(124===e?x.logicalOR:x.logicalAND,2):61===t?this.finishOp(x.assign,2):this.finishOp(124===e?x.bitwiseOR:x.bitwiseAND,1)},At.readToken_caret=function(){return 61===this.input.charCodeAt(this.pos+1)?this.finishOp(x.assign,2):this.finishOp(x.bitwiseXOR,1)},At.readToken_plus_min=function(e){var t=this.input.charCodeAt(this.pos+1);return t===e?45!==t||this.inModule||62!==this.input.charCodeAt(this.pos+2)||0!==this.lastTokEnd&&!A.test(this.input.slice(this.lastTokEnd,this.pos))?this.finishOp(x.incDec,2):(this.skipLineComment(3),this.skipSpace(),this.nextToken()):61===t?this.finishOp(x.assign,2):this.finishOp(x.plusMin,1)},At.readToken_lt_gt=function(e){var t=this.input.charCodeAt(this.pos+1),n=1;return t===e?(n=62===e&&62===this.input.charCodeAt(this.pos+2)?3:2,61===this.input.charCodeAt(this.pos+n)?this.finishOp(x.assign,n+1):this.finishOp(x.bitShift,n)):33!==t||60!==e||this.inModule||45!==this.input.charCodeAt(this.pos+2)||45!==this.input.charCodeAt(this.pos+3)?(61===t&&(n=2),this.finishOp(x.relational,n)):(this.skipLineComment(4),this.skipSpace(),this.nextToken())},At.readToken_eq_excl=function(e){var t=this.input.charCodeAt(this.pos+1);return 61===t?this.finishOp(x.equality,61===this.input.charCodeAt(this.pos+2)?3:2):61===e&&62===t&&this.options.ecmaVersion>=6?(this.pos+=2,this.finishToken(x.arrow)):this.finishOp(61===e?x.eq:x.prefix,1)},At.readToken_question=function(){var e=this.options.ecmaVersion;if(e>=11){var t=this.input.charCodeAt(this.pos+1);if(46===t){var n=this.input.charCodeAt(this.pos+2);if(n<48||n>57)return this.finishOp(x.questionDot,2)}if(63===t)return e>=12&&61===this.input.charCodeAt(this.pos+2)?this.finishOp(x.assign,3):this.finishOp(x.coalesce,2)}return this.finishOp(x.question,1)},At.readToken_numberSign=function(){var e=35;if(this.options.ecmaVersion>=13&&(++this.pos,p(e=this.fullCharCodeAtPos(),!0)||92===e))return this.finishToken(x.privateId,this.readWord1());this.raise(this.pos,"Unexpected character '"+L(e)+"'")},At.getTokenFromCode=function(e){switch(e){case 46:return this.readToken_dot();case 40:return++this.pos,this.finishToken(x.parenL);case 41:return++this.pos,this.finishToken(x.parenR);case 59:return++this.pos,this.finishToken(x.semi);case 44:return++this.pos,this.finishToken(x.comma);case 91:return++this.pos,this.finishToken(x.bracketL);case 93:return++this.pos,this.finishToken(x.bracketR);case 123:return++this.pos,this.finishToken(x.braceL);case 125:return++this.pos,this.finishToken(x.braceR);case 58:return++this.pos,this.finishToken(x.colon);case 96:if(this.options.ecmaVersion<6)break;return++this.pos,this.finishToken(x.backQuote);case 48:var t=this.input.charCodeAt(this.pos+1);if(120===t||88===t)return this.readRadixNumber(16);if(this.options.ecmaVersion>=6){if(111===t||79===t)return this.readRadixNumber(8);if(98===t||66===t)return this.readRadixNumber(2)}case 49:case 50:case 51:case 52:case 53:case 54:case 55:case 56:case 57:return this.readNumber(!1);case 34:case 39:return this.readString(e);case 47:return this.readToken_slash();case 37:case 42:return this.readToken_mult_modulo_exp(e);case 124:case 38:return this.readToken_pipe_amp(e);case 94:return this.readToken_caret();case 43:case 45:return this.readToken_plus_min(e);case 60:case 62:return this.readToken_lt_gt(e);case 61:case 33:return this.readToken_eq_excl(e);case 63:return this.readToken_question();case 126:return this.finishOp(x.prefix,1);case 35:return this.readToken_numberSign()}this.raise(this.pos,"Unexpected character '"+L(e)+"'")},At.finishOp=function(e,t){var n=this.input.slice(this.pos,this.pos+t);return this.pos+=t,this.finishToken(e,n)},At.readRegexp=function(){for(var e,t,n=this.pos;;){this.pos>=this.input.length&&this.raise(n,"Unterminated regular expression");var r=this.input.charAt(this.pos);if(A.test(r)&&this.raise(n,"Unterminated regular expression"),e)e=!1;else{if("["===r)t=!0;else if("]"===r&&t)t=!1;else if("/"===r&&!t)break;e="\\"===r}++this.pos}var o=this.input.slice(n,this.pos);++this.pos;var a=this.pos,i=this.readWord1();this.containsEsc&&this.unexpected(a);var s=this.regexpState||(this.regexpState=new Ze(this));s.reset(n,o,i),this.validateRegExpFlags(s),this.validateRegExpPattern(s);var l=null;try{l=new RegExp(o,i)}catch(u){}return this.finishToken(x.regexp,{pattern:o,flags:i,value:l})},At.readInt=function(e,t,n){for(var r=this.options.ecmaVersion>=12&&void 0===t,o=n&&48===this.input.charCodeAt(this.pos),a=this.pos,i=0,s=0,l=0,u=null==t?1/0:t;l=97?c-97+10:c>=65?c-65+10:c>=48&&c<=57?c-48:1/0)>=e)break;s=c,i=i*e+d}}return r&&95===s&&this.raiseRecoverable(this.pos-1,"Numeric separator is not allowed at the last of digits"),this.pos===a||null!=t&&this.pos-a!==t?null:i},At.readRadixNumber=function(e){var t=this.pos;this.pos+=2;var n=this.readInt(e);return null==n&&this.raise(this.start+2,"Expected number in radix "+e),this.options.ecmaVersion>=11&&110===this.input.charCodeAt(this.pos)?(n=kt(this.input.slice(t,this.pos)),++this.pos):p(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(x.num,n)},At.readNumber=function(e){var t=this.pos;e||null!==this.readInt(10,void 0,!0)||this.raise(t,"Invalid number");var n=this.pos-t>=2&&48===this.input.charCodeAt(t);n&&this.strict&&this.raise(t,"Invalid number");var r=this.input.charCodeAt(this.pos);if(!n&&!e&&this.options.ecmaVersion>=11&&110===r){var o=kt(this.input.slice(t,this.pos));return++this.pos,p(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number"),this.finishToken(x.num,o)}n&&/[89]/.test(this.input.slice(t,this.pos))&&(n=!1),46!==r||n||(++this.pos,this.readInt(10),r=this.input.charCodeAt(this.pos)),69!==r&&101!==r||n||(43!==(r=this.input.charCodeAt(++this.pos))&&45!==r||++this.pos,null===this.readInt(10)&&this.raise(t,"Invalid number")),p(this.fullCharCodeAtPos())&&this.raise(this.pos,"Identifier directly after number");var a=Dt(this.input.slice(t,this.pos),n);return this.finishToken(x.num,a)},At.readCodePoint=function(){var e;if(123===this.input.charCodeAt(this.pos)){this.options.ecmaVersion<6&&this.unexpected();var t=++this.pos;e=this.readHexChar(this.input.indexOf("}",this.pos)-this.pos),++this.pos,e>1114111&&this.invalidStringToken(t,"Code point out of bounds")}else e=this.readHexChar(4);return e},At.readString=function(e){for(var t="",n=++this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated string constant");var r=this.input.charCodeAt(this.pos);if(r===e)break;92===r?(t+=this.input.slice(n,this.pos),t+=this.readEscapedChar(!1),n=this.pos):8232===r||8233===r?(this.options.ecmaVersion<10&&this.raise(this.start,"Unterminated string constant"),++this.pos,this.options.locations&&(this.curLine++,this.lineStart=this.pos)):(k(r)&&this.raise(this.start,"Unterminated string constant"),++this.pos)}return t+=this.input.slice(n,this.pos++),this.finishToken(x.string,t)};var wt={};At.tryReadTemplateToken=function(){this.inTemplateElement=!0;try{this.readTmplToken()}catch(e){if(e!==wt)throw e;this.readInvalidTemplateToken()}this.inTemplateElement=!1},At.invalidStringToken=function(e,t){if(this.inTemplateElement&&this.options.ecmaVersion>=9)throw wt;this.raise(e,t)},At.readTmplToken=function(){for(var e="",t=this.pos;;){this.pos>=this.input.length&&this.raise(this.start,"Unterminated template");var n=this.input.charCodeAt(this.pos);if(96===n||36===n&&123===this.input.charCodeAt(this.pos+1))return this.pos!==this.start||this.type!==x.template&&this.type!==x.invalidTemplate?(e+=this.input.slice(t,this.pos),this.finishToken(x.template,e)):36===n?(this.pos+=2,this.finishToken(x.dollarBraceL)):(++this.pos,this.finishToken(x.backQuote));if(92===n)e+=this.input.slice(t,this.pos),e+=this.readEscapedChar(!0),t=this.pos;else if(k(n)){switch(e+=this.input.slice(t,this.pos),++this.pos,n){case 13:10===this.input.charCodeAt(this.pos)&&++this.pos;case 10:e+="\n";break;default:e+=String.fromCharCode(n)}this.options.locations&&(++this.curLine,this.lineStart=this.pos),t=this.pos}else++this.pos}},At.readInvalidTemplateToken=function(){for(;this.pos=48&&t<=55){var r=this.input.substr(this.pos-1,3).match(/^[0-7]+/)[0],o=parseInt(r,8);return o>255&&(r=r.slice(0,-1),o=parseInt(r,8)),this.pos+=r.length-1,t=this.input.charCodeAt(this.pos),"0"===r&&56!==t&&57!==t||!this.strict&&!e||this.invalidStringToken(this.pos-1-r.length,e?"Octal literal in template string":"Octal literal in strict mode"),String.fromCharCode(o)}return k(t)?(this.options.locations&&(this.lineStart=this.pos,++this.curLine),""):String.fromCharCode(t)}},At.readHexChar=function(e){var t=this.pos,n=this.readInt(16,e);return null===n&&this.invalidStringToken(t,"Bad character escape sequence"),n},At.readWord1=function(){this.containsEsc=!1;for(var e="",t=!0,n=this.pos,r=this.options.ecmaVersion>=6;this.poss,BO:()=>i,Yn:()=>a});var r=n(6175),o=n(3830);function a(e,t){let n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];if(!t||"string"!==typeof t)return null;if(e&&e.vars&&n){const n="vars.".concat(t).split(".").reduce((e,t)=>e&&e[t]?e[t]:null,e);if(null!=n)return n}return t.split(".").reduce((e,t)=>e&&null!=e[t]?e[t]:null,e)}function i(e,t,n){let r,o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n;return r="function"===typeof e?e(n):Array.isArray(e)?e[n]||o:a(e,n)||o,t&&(r=t(r,o,e)),r}const s=function(e){const{prop:t,cssProperty:n=e.prop,themeKey:s,transform:l}=e,u=e=>{if(null==e[t])return null;const u=e[t],c=a(e.theme,s)||{};return(0,o.NI)(e,u,e=>{let o=i(c,l,e);return e===o&&"string"===typeof e&&(o=i(c,l,"".concat(t).concat("default"===e?"":(0,r.A)(e)),e)),!1===n?o:{[n]:o}})};return u.propTypes={},u.filterProps=[t],u}},8379(e,t,n){e.exports=n(2615)()},8442(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r.A});var r=n(8581)},8580(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z"}),"ExpandMore")},8581(e,t,n){"use strict";n.d(t,{A:()=>r});const r=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MIN_SAFE_INTEGER,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:Number.MAX_SAFE_INTEGER;return Math.max(t,Math.min(e,n))}},8643(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M16.59 7.58 10 14.17l-3.59-3.58L5 12l5 5 8-8zM12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8"}),"CheckCircleOutline")},8661(e,t,n){"use strict";e.exports=n(1092)},8710(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 17h-2v-2h2zm2.07-7.75-.9.92C13.45 12.9 13 13.5 13 15h-2v-.5c0-1.1.45-2.1 1.17-2.83l1.24-1.26c.37-.36.59-.86.59-1.41 0-1.1-.9-2-2-2s-2 .9-2 2H8c0-2.21 1.79-4 4-4s4 1.79 4 4c0 .88-.36 1.68-.93 2.25"}),"Help")},8720(e,t,n){"use strict";var r=n(2902),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,h=Object.getPrototypeOf,f=Object.prototype;e.exports=function e(t,n,r){if("string"!==typeof n){if(f){var o=h(n);o&&o!==f&&e(t,o,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var s=l(t),m=l(n),g=0;gl});var r=n(4320),o=n(8915),a=n(6997),i=n(2692);const s=["sx"];function l(e){const{sx:t}=e,n=(0,o.A)(e,s),{systemProps:l,otherProps:u}=(e=>{var t,n;const r={systemProps:{},otherProps:{}},o=null!=(t=null==e||null==(n=e.theme)?void 0:n.unstable_sxConfig)?t:i.A;return Object.keys(e).forEach(t=>{o[t]?r.systemProps[t]=e[t]:r.otherProps[t]=e[t]}),r})(n);let c;return c=Array.isArray(t)?[l,...t]:"function"===typeof t?function(){const e=t(...arguments);return(0,a.Q)(e)?(0,r.A)({},l,e):l}:(0,r.A)({},l,t),(0,r.A)({},u,{sx:c})}},8763(e,t,n){"use strict";var r;n.d(t,{C:()=>r}),function(e){e[e.OBJECT=0]="OBJECT",e[e.ARRAY=1]="ARRAY"}(r||(r={}))},8839(e,t,n){"use strict";n.d(t,{E:()=>i,A:()=>s});var r=n(8661);const o={};const a=[];class i{constructor(){this.currentId=null,this.clear=()=>{null!==this.currentId&&(clearTimeout(this.currentId),this.currentId=null)},this.disposeEffect=()=>this.clear}static create(){return new i}start(e,t){this.clear(),this.currentId=setTimeout(()=>{this.currentId=null,t()},e)}}function s(){const e=function(e,t){const n=r.useRef(o);return n.current===o&&(n.current=e(t)),n}(i.create).current;var t;return t=e.disposeEffect,r.useEffect(t,a),e}},8898(e){e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},8915(e,t,n){"use strict";function r(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}n.d(t,{A:()=>r})},8930(e,t,n){"use strict";n.d(t,{C$:()=>D,GY:()=>R,IG:()=>y,J4:()=>N,Kl:()=>C,Q1:()=>I,Qg:()=>S,Sh:()=>j,Sn:()=>T,VX:()=>w,WV:()=>z,Xn:()=>L,ZC:()=>k,aA:()=>_,dF:()=>F,lk:()=>E,pK:()=>P,runDataMigration:()=>A,xe:()=>O});var r=n(4107),o=n(7877),a=n(252),i=n(1223),s=n(4181),l=n(1166),u=n(2375);function c(){return{setValue:(0,u.uP)("setValue","GM_setValue",[window.KISS_GM]),getValue:(0,u.uP)("getValue","GM_getValue",[window.KISS_GM]),deleteValue:(0,u.uP)("deleteValue","GM_deleteValue",[window.KISS_GM])}}async function d(e,t){a.aQ?await i.T.storage.local.set({[e]:t}):a.Zy?await c().setValue(e,t):window.localStorage.setItem(e,t)}async function p(e){if(a.aQ){return(await i.T.storage.local.get([e]))[e]}if(a.Zy){return await c().getValue(e)}return window.localStorage.getItem(e)}async function h(e){a.aQ?await i.T.storage.local.remove([e]):a.Zy?await c().deleteValue(e):window.localStorage.removeItem(e)}async function f(e,t){await d(e,JSON.stringify(t))}async function m(e,t){await p(e)||await f(e,t)}async function g(e){const t=await p(e);if(null===t||void 0===t)return null;try{return JSON.parse(t)}catch(n){(0,s.h9)("parse json in storage err: ",e)}return null}async function v(e,t){var n;const o=null!==(n=await g(e))&&void 0!==n?n:{};await f(e,(0,r.A)((0,r.A)({},o),t))}const y={get:p,set:d,del:h,setObj:f,trySetObj:m,getObj:g,putObj:v},b=()=>g(o.r$0),x=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e;return(0,o.Vnn)(e)>=o.uMq?e:(await(e=>f(o.rKK,e))(t),(0,o.SEs)(e))},A=async()=>{const e=await b();if(e&&(0,o.Vnn)(e){const e=await b();if(!e)return o.la7;return(e=>{var t;return(0,r.A)((0,r.A)((0,r.A)({},o.la7),e||{}),{},{tranboxSetting:(0,r.A)((0,r.A)({},o.Azs),(null===e||void 0===e?void 0:e.tranboxSetting)||{}),version:null!==(t=null===e||void 0===e?void 0:e.version)&&void 0!==t?t:o.la7.version})})((0,o.Vnn)(e)f(o.r$0,e),w=async()=>await g(o.iPC)||o.ckw,S=e=>f(o.iPC,e),E=async()=>await g(o.CWU)||{},_=e=>f(o.CWU,e),C=e=>g(o.JCj+e),F=e=>h(o.JCj+e),T=(e,t)=>f(o.JCj+e,t),j=async e=>{if(!e)return[];const t=await g(o.yDM);if(!t)return[];if("object"===typeof t){const n=t[e];return Array.isArray(n)?n:[]}return[]},z=async(e,t)=>{if(!e)return;const n=await g(o.yDM)||{},r=Array.isArray(t)?[...new Set(t)]:[];0===r.length?n[e]&&delete n[e]:n[e]=r,await f(o.yDM,n)},I=async e=>{if(!e)return;const t=await g(o.yDM);t&&"object"===typeof t&&t[e]&&(delete t[e],await f(o.yDM,t))},L=((0,l.sg)(e=>v(o.VFS,e),300),async()=>await g(o.eCV)||o.eeL),P=e=>v(o.eCV,e),R=(0,l.sg)(async e=>{const{syncMeta:t={}}=await L();t[e]=(0,r.A)((0,r.A)({},t[e]||{}),{},{updateAt:Date.now()}),await P({syncMeta:t})},300),N=()=>g(o.lgC),O=e=>f(o.lgC,e)},9011(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M19 9h-4V3H9v6H5l7 7zM5 18v2h14v-2z"}),"FileDownload")},9150(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M18 8h-1V6c0-2.76-2.24-5-5-5S7 3.24 7 6v2H6c-1.1 0-2 .9-2 2v10c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2V10c0-1.1-.9-2-2-2m-6 9c-1.1 0-2-.9-2-2s.9-2 2-2 2 .9 2 2-.9 2-2 2m3.1-9H8.9V6c0-1.71 1.39-3.1 3.1-3.1 1.71 0 3.1 1.39 3.1 3.1z"}),"Lock")},9286(e,t){var n,r,o;"undefined"!==typeof globalThis?globalThis:"undefined"!==typeof self&&self,r=[e],n=function(e){"use strict";var t;if(null===(t=globalThis.chrome)||void 0===t||null===(t=t.runtime)||void 0===t||!t.id)throw new Error("This script should only be loaded in a browser extension.");if("undefined"===typeof globalThis.browser||Object.getPrototypeOf(globalThis.browser)!==Object.prototype){const t="The message port closed before a response was received.",n=e=>{const n={alarms:{clear:{minArgs:0,maxArgs:1},clearAll:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getAll:{minArgs:0,maxArgs:0}},bookmarks:{create:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},getChildren:{minArgs:1,maxArgs:1},getRecent:{minArgs:1,maxArgs:1},getSubTree:{minArgs:1,maxArgs:1},getTree:{minArgs:0,maxArgs:0},move:{minArgs:2,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeTree:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}},browserAction:{disable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},enable:{minArgs:0,maxArgs:1,fallbackToNoCallback:!0},getBadgeBackgroundColor:{minArgs:1,maxArgs:1},getBadgeText:{minArgs:1,maxArgs:1},getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},openPopup:{minArgs:0,maxArgs:0},setBadgeBackgroundColor:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setBadgeText:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},browsingData:{remove:{minArgs:2,maxArgs:2},removeCache:{minArgs:1,maxArgs:1},removeCookies:{minArgs:1,maxArgs:1},removeDownloads:{minArgs:1,maxArgs:1},removeFormData:{minArgs:1,maxArgs:1},removeHistory:{minArgs:1,maxArgs:1},removeLocalStorage:{minArgs:1,maxArgs:1},removePasswords:{minArgs:1,maxArgs:1},removePluginData:{minArgs:1,maxArgs:1},settings:{minArgs:0,maxArgs:0}},commands:{getAll:{minArgs:0,maxArgs:0}},contextMenus:{remove:{minArgs:1,maxArgs:1},removeAll:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},cookies:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:1,maxArgs:1},getAllCookieStores:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},devtools:{inspectedWindow:{eval:{minArgs:1,maxArgs:2,singleCallbackArg:!1}},panels:{create:{minArgs:3,maxArgs:3,singleCallbackArg:!0},elements:{createSidebarPane:{minArgs:1,maxArgs:1}}}},downloads:{cancel:{minArgs:1,maxArgs:1},download:{minArgs:1,maxArgs:1},erase:{minArgs:1,maxArgs:1},getFileIcon:{minArgs:1,maxArgs:2},open:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},pause:{minArgs:1,maxArgs:1},removeFile:{minArgs:1,maxArgs:1},resume:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},extension:{isAllowedFileSchemeAccess:{minArgs:0,maxArgs:0},isAllowedIncognitoAccess:{minArgs:0,maxArgs:0}},history:{addUrl:{minArgs:1,maxArgs:1},deleteAll:{minArgs:0,maxArgs:0},deleteRange:{minArgs:1,maxArgs:1},deleteUrl:{minArgs:1,maxArgs:1},getVisits:{minArgs:1,maxArgs:1},search:{minArgs:1,maxArgs:1}},i18n:{detectLanguage:{minArgs:1,maxArgs:1},getAcceptLanguages:{minArgs:0,maxArgs:0}},identity:{launchWebAuthFlow:{minArgs:1,maxArgs:1}},idle:{queryState:{minArgs:1,maxArgs:1}},management:{get:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},getSelf:{minArgs:0,maxArgs:0},setEnabled:{minArgs:2,maxArgs:2},uninstallSelf:{minArgs:0,maxArgs:1}},notifications:{clear:{minArgs:1,maxArgs:1},create:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:0},getPermissionLevel:{minArgs:0,maxArgs:0},update:{minArgs:2,maxArgs:2}},pageAction:{getPopup:{minArgs:1,maxArgs:1},getTitle:{minArgs:1,maxArgs:1},hide:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setIcon:{minArgs:1,maxArgs:1},setPopup:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},setTitle:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0},show:{minArgs:1,maxArgs:1,fallbackToNoCallback:!0}},permissions:{contains:{minArgs:1,maxArgs:1},getAll:{minArgs:0,maxArgs:0},remove:{minArgs:1,maxArgs:1},request:{minArgs:1,maxArgs:1}},runtime:{getBackgroundPage:{minArgs:0,maxArgs:0},getPlatformInfo:{minArgs:0,maxArgs:0},openOptionsPage:{minArgs:0,maxArgs:0},requestUpdateCheck:{minArgs:0,maxArgs:0},sendMessage:{minArgs:1,maxArgs:3},sendNativeMessage:{minArgs:2,maxArgs:2},setUninstallURL:{minArgs:1,maxArgs:1}},sessions:{getDevices:{minArgs:0,maxArgs:1},getRecentlyClosed:{minArgs:0,maxArgs:1},restore:{minArgs:0,maxArgs:1}},storage:{local:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}},managed:{get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1}},sync:{clear:{minArgs:0,maxArgs:0},get:{minArgs:0,maxArgs:1},getBytesInUse:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}}},tabs:{captureVisibleTab:{minArgs:0,maxArgs:2},create:{minArgs:1,maxArgs:1},detectLanguage:{minArgs:0,maxArgs:1},discard:{minArgs:0,maxArgs:1},duplicate:{minArgs:1,maxArgs:1},executeScript:{minArgs:1,maxArgs:2},get:{minArgs:1,maxArgs:1},getCurrent:{minArgs:0,maxArgs:0},getZoom:{minArgs:0,maxArgs:1},getZoomSettings:{minArgs:0,maxArgs:1},goBack:{minArgs:0,maxArgs:1},goForward:{minArgs:0,maxArgs:1},highlight:{minArgs:1,maxArgs:1},insertCSS:{minArgs:1,maxArgs:2},move:{minArgs:2,maxArgs:2},query:{minArgs:1,maxArgs:1},reload:{minArgs:0,maxArgs:2},remove:{minArgs:1,maxArgs:1},removeCSS:{minArgs:1,maxArgs:2},sendMessage:{minArgs:2,maxArgs:3},setZoom:{minArgs:1,maxArgs:2},setZoomSettings:{minArgs:1,maxArgs:2},update:{minArgs:1,maxArgs:2}},topSites:{get:{minArgs:0,maxArgs:0}},webNavigation:{getAllFrames:{minArgs:1,maxArgs:1},getFrame:{minArgs:1,maxArgs:1}},webRequest:{handlerBehaviorChanged:{minArgs:0,maxArgs:0}},windows:{create:{minArgs:0,maxArgs:1},get:{minArgs:1,maxArgs:2},getAll:{minArgs:0,maxArgs:1},getCurrent:{minArgs:0,maxArgs:1},getLastFocused:{minArgs:0,maxArgs:1},remove:{minArgs:1,maxArgs:1},update:{minArgs:2,maxArgs:2}}};if(0===Object.keys(n).length)throw new Error("api-metadata.json has not been included in browser-polyfill");class r extends WeakMap{constructor(e){super(arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0),this.createItem=e}get(e){return this.has(e)||this.set(e,this.createItem(e)),super.get(e)}}const o=e=>e&&"object"===typeof e&&"function"===typeof e.then,a=(t,n)=>function(){for(var r=arguments.length,o=new Array(r),a=0;a1==e?"argument":"arguments",s=(e,t)=>function(n){for(var r=arguments.length,o=new Array(r>1?r-1:0),s=1;st.maxArgs)throw new Error("Expected at most ".concat(t.maxArgs," ").concat(i(t.maxArgs)," for ").concat(e,"(), got ").concat(o.length));return new Promise((r,i)=>{if(t.fallbackToNoCallback)try{n[e](...o,a({resolve:r,reject:i},t))}catch(s){console.warn("".concat(e," API method doesn't seem to support the callback parameter, ")+"falling back to call it without a callback: ",s),n[e](...o),t.fallbackToNoCallback=!1,t.noCallback=!0,r()}else t.noCallback?(n[e](...o),r()):n[e](...o,a({resolve:r,reject:i},t))})},l=(e,t,n)=>new Proxy(t,{apply:(t,r,o)=>n.call(r,e,...o)});let u=Function.call.bind(Object.prototype.hasOwnProperty);const c=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=Object.create(null),o={has:(t,n)=>n in e||n in r,get(o,a,i){if(a in r)return r[a];if(!(a in e))return;let d=e[a];if("function"===typeof d)if("function"===typeof t[a])d=l(e,e[a],t[a]);else if(u(n,a)){let t=s(a,n[a]);d=l(e,e[a],t)}else d=d.bind(e);else if("object"===typeof d&&null!==d&&(u(t,a)||u(n,a)))d=c(d,t[a],n[a]);else{if(!u(n,"*"))return Object.defineProperty(r,a,{configurable:!0,enumerable:!0,get:()=>e[a],set(t){e[a]=t}}),d;d=c(d,t[a],n["*"])}return r[a]=d,d},set:(t,n,o,a)=>(n in r?r[n]=o:e[n]=o,!0),defineProperty:(e,t,n)=>Reflect.defineProperty(r,t,n),deleteProperty:(e,t)=>Reflect.deleteProperty(r,t)},a=Object.create(e);return new Proxy(a,o)},d=e=>({addListener(t,n){for(var r=arguments.length,o=new Array(r>2?r-2:0),a=2;at.hasListener(e.get(n)),removeListener(t,n){t.removeListener(e.get(n))}}),p=new r(e=>"function"!==typeof e?e:function(t){const n=c(t,{},{getContent:{minArgs:0,maxArgs:0}});e(n)}),h=new r(e=>"function"!==typeof e?e:function(t,n,r){let a,i,s=!1,l=new Promise(e=>{a=function(t){s=!0,e(t)}});try{i=e(t,n,a)}catch(d){i=Promise.reject(d)}const u=!0!==i&&o(i);if(!0!==i&&!u&&!s)return!1;const c=e=>{e.then(e=>{r(e)},e=>{let t;t=e&&(e instanceof Error||"string"===typeof e.message)?e.message:"An unexpected error occurred",r({__mozWebExtensionPolyfillReject__:!0,message:t})}).catch(e=>{console.error("Failed to send onMessage rejected reply",e)})};return c(u?i:l),!0}),f=(n,r)=>{let{reject:o,resolve:a}=n;e.runtime.lastError?e.runtime.lastError.message===t?a():o(new Error(e.runtime.lastError.message)):r&&r.__mozWebExtensionPolyfillReject__?o(new Error(r.message)):a(r)},m=function(e,t,n){for(var r=arguments.length,o=new Array(r>3?r-3:0),a=3;at.maxArgs)throw new Error("Expected at most ".concat(t.maxArgs," ").concat(i(t.maxArgs)," for ").concat(e,"(), got ").concat(o.length));return new Promise((e,t)=>{const r=f.bind(null,{resolve:e,reject:t});o.push(r),n.sendMessage(...o)})},g={devtools:{network:{onRequestFinished:d(p)}},runtime:{onMessage:d(h),onMessageExternal:d(h),sendMessage:m.bind(null,"sendMessage",{minArgs:1,maxArgs:3})},tabs:{sendMessage:m.bind(null,"sendMessage",{minArgs:2,maxArgs:3})}},v={clear:{minArgs:1,maxArgs:1},get:{minArgs:1,maxArgs:1},set:{minArgs:1,maxArgs:1}};return n.privacy={network:{"*":v},services:{"*":v},websites:{"*":v}},c(e,g,n)};e.exports=n(chrome)}else e.exports=globalThis.browser},void 0===(o="function"===typeof n?n.apply(t,r):n)||(e.exports=o)},9371(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(8154);function o(e,t,n){return(t=(0,r.A)(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}},9374(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM19 4h-3.5l-1-1h-5l-1 1H5v2h14z"}),"Delete")},9385(e,t,n){"use strict";n.d(t,{Ir:()=>i,Tt:()=>s});var r=n(6604);const o=["zh","ja","ko","th","lo","km","my"];function a(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"auto";return e.slice(t,n+1).map(e=>String((null===e||void 0===e?void 0:e.text)||"").trim()).filter(Boolean).join(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return o.some(t=>String(e).startsWith(t))}(r)?"":" ").trim()}function i(e,t,n){var o,i,s;let l=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"auto";const u=Number(null!==(o=null===e||void 0===e?void 0:e.e)&&void 0!==o?o:null===e||void 0===e?void 0:e.end_id);if(!Number.isInteger(u)||!Number.isInteger(n)||n<0||u=t.length)return null;const c=a(t,n,u,l);if(!c)return null;const d=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return(0,r.b)(e)}(c)?c:String(null!==(i=null!==(s=null===e||void 0===e?void 0:e.t)&&void 0!==s?s:null===e||void 0===e?void 0:e.translation)&&void 0!==i?i:"");return{start:t[n].start,end:t[u].end,text:c,translation:d,_si:n,_ei:u}}const s=e=>e&&(Object.prototype.hasOwnProperty.call(e,"s")||Object.prototype.hasOwnProperty.call(e,"start_id"))},9428(e,t,n){"use strict";n.d(t,{A:()=>i});var r=n(8915),o=n(4320);const a=["values","unit","step"];function i(e){const{values:t={xs:0,sm:600,md:900,lg:1200,xl:1536},unit:n="px",step:i=5}=e,s=(0,r.A)(e,a),l=(e=>{const t=Object.keys(e).map(t=>({key:t,val:e[t]}))||[];return t.sort((e,t)=>e.val-t.val),t.reduce((e,t)=>(0,o.A)({},e,{[t.key]:t.val}),{})})(t),u=Object.keys(l);function c(e){const r="number"===typeof t[e]?t[e]:e;return"@media (min-width:".concat(r).concat(n,")")}function d(e){const r="number"===typeof t[e]?t[e]:e;return"@media (max-width:".concat(r-i/100).concat(n,")")}function p(e,r){const o=u.indexOf(r);return"@media (min-width:".concat("number"===typeof t[e]?t[e]:e).concat(n,") and ")+"(max-width:".concat((-1!==o&&"number"===typeof t[u[o]]?t[u[o]]:r)-i/100).concat(n,")")}return(0,o.A)({keys:u,values:l,up:c,down:d,between:p,only:function(e){return u.indexOf(e)+1r})},9521(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),a=n(5089);t.A=(0,o.default)((0,a.jsx)("path",{d:"M21 3.01H3c-1.1 0-2 .9-2 2V9h2V4.99h18v14.03H3V15H1v4.01c0 1.1.9 1.98 2 1.98h18c1.1 0 2-.88 2-1.98v-14c0-1.11-.9-2-2-2M11 16l4-4-4-4v3H1v2h10z"}),"Input")},9669(e,t,n){"use strict";function r(e){return e&&e.ownerDocument||document}n.d(t,{A:()=>r})},9770(e,t){"use strict";var n="function"===typeof Symbol&&Symbol.for,r=n?Symbol.for("react.element"):60103,o=n?Symbol.for("react.portal"):60106,a=n?Symbol.for("react.fragment"):60107,i=n?Symbol.for("react.strict_mode"):60108,s=n?Symbol.for("react.profiler"):60114,l=n?Symbol.for("react.provider"):60109,u=n?Symbol.for("react.context"):60110,c=n?Symbol.for("react.async_mode"):60111,d=n?Symbol.for("react.concurrent_mode"):60111,p=n?Symbol.for("react.forward_ref"):60112,h=n?Symbol.for("react.suspense"):60113,f=n?Symbol.for("react.suspense_list"):60120,m=n?Symbol.for("react.memo"):60115,g=n?Symbol.for("react.lazy"):60116,v=n?Symbol.for("react.block"):60121,y=n?Symbol.for("react.fundamental"):60117,b=n?Symbol.for("react.responder"):60118,x=n?Symbol.for("react.scope"):60119;function A(e){if("object"===typeof e&&null!==e){var t=e.$$typeof;switch(t){case r:switch(e=e.type){case c:case d:case a:case s:case i:case h:return e;default:switch(e=e&&e.$$typeof){case u:case p:case g:case m:case l:return e;default:return t}}case o:return t}}}function D(e){return A(e)===d}t.AsyncMode=c,t.ConcurrentMode=d,t.ContextConsumer=u,t.ContextProvider=l,t.Element=r,t.ForwardRef=p,t.Fragment=a,t.Lazy=g,t.Memo=m,t.Portal=o,t.Profiler=s,t.StrictMode=i,t.Suspense=h,t.isAsyncMode=function(e){return D(e)||A(e)===c},t.isConcurrentMode=D,t.isContextConsumer=function(e){return A(e)===u},t.isContextProvider=function(e){return A(e)===l},t.isElement=function(e){return"object"===typeof e&&null!==e&&e.$$typeof===r},t.isForwardRef=function(e){return A(e)===p},t.isFragment=function(e){return A(e)===a},t.isLazy=function(e){return A(e)===g},t.isMemo=function(e){return A(e)===m},t.isPortal=function(e){return A(e)===o},t.isProfiler=function(e){return A(e)===s},t.isStrictMode=function(e){return A(e)===i},t.isSuspense=function(e){return A(e)===h},t.isValidElementType=function(e){return"string"===typeof e||"function"===typeof e||e===a||e===d||e===s||e===i||e===h||e===f||"object"===typeof e&&null!==e&&(e.$$typeof===g||e.$$typeof===m||e.$$typeof===l||e.$$typeof===u||e.$$typeof===p||e.$$typeof===y||e.$$typeof===b||e.$$typeof===x||e.$$typeof===v)},t.typeOf=A},9793(e,t,n){"use strict";n.d(t,{Fz:()=>D});var r=n(4107),o=n(3073),a=n(1533),i=n(7877),s=n(4181),l=(0,a.A)("pool"),u=(0,a.A)("maxRetry"),c=(0,a.A)("retryInterval"),d=(0,a.A)("limit"),p=(0,a.A)("interval"),h=(0,a.A)("currentConcurrent"),f=(0,a.A)("lastExecutionTime"),m=(0,a.A)("schedulerTimer"),g=(0,a.A)("scheduleNext"),v=(0,a.A)("execute");class y{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i.jy$,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.PPd,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;Object.defineProperty(this,v,{value:x}),Object.defineProperty(this,g,{value:b}),Object.defineProperty(this,l,{writable:!0,value:[]}),Object.defineProperty(this,u,{writable:!0,value:2}),Object.defineProperty(this,c,{writable:!0,value:1e3}),Object.defineProperty(this,d,{writable:!0,value:void 0}),Object.defineProperty(this,p,{writable:!0,value:void 0}),Object.defineProperty(this,h,{writable:!0,value:0}),Object.defineProperty(this,f,{writable:!0,value:0}),Object.defineProperty(this,m,{writable:!0,value:null}),(0,o.A)(this,p)[p]=e,(0,o.A)(this,d)[d]=t,(0,o.A)(this,c)[c]=n}push(e,t){return new Promise((n,r)=>{(0,o.A)(this,l)[l].push({fn:e,args:t,resolve:n,reject:r,retry:0}),(0,o.A)(this,g)[g]()})}update(e,t){e>=0&&((0,o.A)(this,p)[p]=e),t>=1&&((0,o.A)(this,d)[d]=t),(0,o.A)(this,g)[g]()}clear(){for(const e of(0,o.A)(this,l)[l])e.reject("the task pool was cleared");(0,o.A)(this,l)[l].length=0,(0,o.A)(this,m)[m]&&(clearTimeout((0,o.A)(this,m)[m]),(0,o.A)(this,m)[m]=null)}}function b(){if((0,o.A)(this,m)[m])return;if((0,o.A)(this,h)[h]>=(0,o.A)(this,d)[d]||0===(0,o.A)(this,l)[l].length)return;const e=Date.now()-(0,o.A)(this,f)[f],t=Math.max(0,(0,o.A)(this,p)[p]-e);(0,o.A)(this,m)[m]=setTimeout(()=>{if((0,o.A)(this,m)[m]=null,(0,o.A)(this,h)[h]<(0,o.A)(this,d)[d]&&(0,o.A)(this,l)[l].length>0){const e=(0,o.A)(this,l)[l].shift();e&&((0,o.A)(this,f)[f]=Date.now(),(0,o.A)(this,v)[v](e))}(0,o.A)(this,l)[l].length>0&&(0,o.A)(this,g)[g]()},t)}async function x(e){(0,o.A)(this,h)[h]++;const{fn:t,args:n,resolve:a,reject:i,retry:d}=e;try{a(await t(n))}catch(p){(0,s.h9)("task pool",p),d<(0,o.A)(this,u)[u]?setTimeout(()=>{(0,o.A)(this,l)[l].unshift((0,r.A)((0,r.A)({},e),{},{retry:d+1})),(0,o.A)(this,g)[g]()},(0,o.A)(this,c)[c]):i(p)}finally{(0,o.A)(this,h)[h]--,(0,o.A)(this,g)[g]()}}let A;const D=(e,t)=>(A?e&&t&&k(e,t):A=new y(null!==e&&void 0!==e?e:i.jy$,null!==t&&void 0!==t?t:i.PPd),A),k=(e,t)=>{var n;null===(n=A)||void 0===n||n.update(e,t)}},9903(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r.A,extendSxProp:()=>o.A,unstable_createStyleFunctionSx:()=>r.k,unstable_defaultSxConfig:()=>a.A});var r=n(1985),o=n(8757),a=n(2692)}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r].call(a.exports,a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;n.t=function(r,o){if(1&o&&(r=this(r)),8&o)return r;if("object"===typeof r&&r){if(4&o&&r.__esModule)return r;if(16&o&&"function"===typeof r.then)return r}var a=Object.create(null);n.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var s=2&o&&r;("object"==typeof s||"function"==typeof s)&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach(e=>i[e]=()=>r[e]);return i.default=()=>r,n.d(a,i),a}})(),n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}(),n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";var e={};n.r(e),n.d(e,{attentionMarkers:()=>Vr,contentInitial:()=>Nr,disable:()=>Hr,document:()=>Rr,flow:()=>Br,flowInitial:()=>Or,insideSpan:()=>Ur,string:()=>Mr,text:()=>Wr});var t={};n.r(t),n.d(t,{boolean:()=>Bo,booleanish:()=>Mo,commaOrSpaceSeparated:()=>Go,commaSeparated:()=>Ho,number:()=>Uo,overloadedBoolean:()=>Wo,spaceSeparated:()=>Vo});var r={};n.r(r),n.d(r,{exclude:()=>ws,extract:()=>ys,parse:()=>bs,parseUrl:()=>As,pick:()=>ks,stringify:()=>xs,stringifyUrl:()=>Ds});var o,a=n(8661),i=n.t(a,2),s=n(6811),l=n(7458),u=n.t(l,2);function c(){return c=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function y(e,t,n,r){void 0===r&&(r={});let{window:a=document.defaultView,v5Compat:i=!1}=r,s=a.history,l=o.Pop,u=null,h=v();function v(){return(s.state||{idx:null}).idx}function y(){l=o.Pop;let e=v(),t=null==e?null:e-h;h=e,u&&u({action:l,location:x.location,delta:t})}function b(e){let t="null"!==a.location.origin?a.location.origin:a.location.href,n="string"===typeof e?e:g(e);return n=n.replace(/ $/,"%20"),p(t,"No window.location.(origin|href) available to create URL for href: "+n),new URL(n,t)}null==h&&(h=0,s.replaceState(c({},s.state,{idx:h}),""));let x={get action(){return l},get location(){return e(a,s)},listen(e){if(u)throw new Error("A history only accepts one active listener");return a.addEventListener(d,y),u=e,()=>{a.removeEventListener(d,y),u=null}},createHref:e=>t(a,e),createURL:b,encodeLocation(e){let t=b(e);return{pathname:t.pathname,search:t.search,hash:t.hash}},push:function(e,t){l=o.Push;let r=m(x.location,e,t);n&&n(r,e),h=v()+1;let c=f(r,h),d=x.createHref(r);try{s.pushState(c,"",d)}catch(p){if(p instanceof DOMException&&"DataCloneError"===p.name)throw p;a.location.assign(d)}i&&u&&u({action:l,location:x.location,delta:1})},replace:function(e,t){l=o.Replace;let r=m(x.location,e,t);n&&n(r,e),h=v();let a=f(r,h),c=x.createHref(r);s.replaceState(a,"",c),i&&u&&u({action:l,location:x.location,delta:0})},go:e=>s.go(e)};return x}var b;!function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"}(b||(b={}));new Set(["lazy","caseSensitive","path","id","index","children"]);function x(e,t,n){return void 0===n&&(n="/"),A(e,t,n,!1)}function A(e,t,n,r){let o=P(("string"===typeof t?v(t):t).pathname||"/",n);if(null==o)return null;let a=D(e);!function(e){e.sort((e,t)=>e.score!==t.score?t.score-e.score:function(e,t){let n=e.length===t.length&&e.slice(0,-1).every((e,n)=>e===t[n]);return n?e[e.length-1]-t[t.length-1]:0}(e.routesMeta.map(e=>e.childrenIndex),t.routesMeta.map(e=>e.childrenIndex)))}(a);let i=null;for(let s=0;null==i&&s{let i={relativePath:void 0===a?e.path||"":a,caseSensitive:!0===e.caseSensitive,childrenIndex:o,route:e};i.relativePath.startsWith("/")&&(p(i.relativePath.startsWith(r),'Absolute route path "'+i.relativePath+'" nested under path "'+r+'" is not valid. An absolute child route path must start with the combined path of all its parent routes.'),i.relativePath=i.relativePath.slice(r.length));let s=V([r,i.relativePath]),l=n.concat(i);e.children&&e.children.length>0&&(p(!0!==e.index,'Index routes must not have child routes. Please remove all child routes from route path "'+s+'".'),D(e.children,t,l,s)),(null!=e.path||e.index)&&t.push({path:s,score:j(s,e.index),routesMeta:l})};return e.forEach((e,t)=>{var n;if(""!==e.path&&null!=(n=e.path)&&n.includes("?"))for(let r of k(e.path))o(e,t,r);else o(e,t)}),t}function k(e){let t=e.split("/");if(0===t.length)return[];let[n,...r]=t,o=n.endsWith("?"),a=n.replace(/\?$/,"");if(0===r.length)return o?[a,""]:[a];let i=k(r.join("/")),s=[];return s.push(...i.map(e=>""===e?a:[a,e].join("/"))),o&&s.push(...i),s.map(t=>e.startsWith("/")&&""===t?"/":t)}const w=/^:[\w-]+$/,S=3,E=2,_=1,C=10,F=-2,T=e=>"*"===e;function j(e,t){let n=e.split("/"),r=n.length;return n.some(T)&&(r+=F),t&&(r+=E),n.filter(e=>!T(e)).reduce((e,t)=>e+(w.test(t)?S:""===t?_:C),r)}function z(e,t,n){void 0===n&&(n=!1);let{routesMeta:r}=e,o={},a="/",i=[];for(let s=0;s(r.push({paramName:t,isOptional:null!=n}),n?"/?([^\\/]+)?":"/([^\\/]+)"));e.endsWith("*")?(r.push({paramName:"*"}),o+="*"===e||"/*"===e?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":""!==e&&"/"!==e&&(o+="(?:(?=\\/|$))");let a=new RegExp(o,t?void 0:"i");return[a,r]}(e.path,e.caseSensitive,e.end),o=t.match(n);if(!o)return null;let a=o[0],i=a.replace(/(.)\/+$/,"$1"),s=o.slice(1),l=r.reduce((e,t,n)=>{let{paramName:r,isOptional:o}=t;if("*"===r){let e=s[n]||"";i=a.slice(0,a.length-e.length).replace(/(.)\/+$/,"$1")}const l=s[n];return e[r]=o&&!l?void 0:(l||"").replace(/%2F/g,"/"),e},{});return{params:l,pathname:a,pathnameBase:i,pattern:e}}function L(e){try{return e.split("/").map(e=>decodeURIComponent(e).replace(/\//g,"%2F")).join("/")}catch(t){return h(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent encoding ('+t+")."),e}}function P(e,t){if("/"===t)return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&"/"!==r?null:e.slice(n)||"/"}const R=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;function N(e,t){void 0===t&&(t="/");let n,{pathname:r,search:o="",hash:a=""}="string"===typeof e?v(e):e;if(r)if(i=r,R.test(i))n=r;else{if(r.includes("//")){let e=r;r=r.replace(/\/\/+/g,"/"),h(!1,"Pathnames cannot have embedded double slashes - normalizing "+e+" -> "+r)}n=r.startsWith("/")?O(r.substring(1),"/"):O(r,t)}else n=t;var i;return{pathname:n,search:G(o),hash:q(a)}}function O(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(e=>{".."===e?n.length>1&&n.pop():"."!==e&&n.push(e)}),n.length>1?n.join("/"):"/"}function B(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified `to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the `to."+n+'` field. Alternatively you may provide the full path as a string in and the router will parse it for you.'}function M(e){return e.filter((e,t)=>0===t||e.route.path&&e.route.path.length>0)}function W(e,t){let n=M(e);return t?n.map((e,t)=>t===n.length-1?e.pathname:e.pathnameBase):n.map(e=>e.pathnameBase)}function U(e,t,n,r){let o;void 0===r&&(r=!1),"string"===typeof e?o=v(e):(o=c({},e),p(!o.pathname||!o.pathname.includes("?"),B("?","pathname","search",o)),p(!o.pathname||!o.pathname.includes("#"),B("#","pathname","hash",o)),p(!o.search||!o.search.includes("#"),B("#","search","hash",o)));let a,i=""===e||""===o.pathname,s=i?"/":o.pathname;if(null==s)a=n;else{let e=t.length-1;if(!r&&s.startsWith("..")){let t=s.split("/");for(;".."===t[0];)t.shift(),e-=1;o.pathname=t.join("/")}a=e>=0?t[e]:"/"}let l=N(o,a),u=s&&"/"!==s&&s.endsWith("/"),d=(i||"."===s)&&n.endsWith("/");return l.pathname.endsWith("/")||!u&&!d||(l.pathname+="/"),l}const V=e=>e.join("/").replace(/\/\/+/g,"/"),H=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),G=e=>e&&"?"!==e?e.startsWith("?")?e:"?"+e:"",q=e=>e&&"#"!==e?e.startsWith("#")?e:"#"+e:"";Error;function K(e){return null!=e&&"number"===typeof e.status&&"string"===typeof e.statusText&&"boolean"===typeof e.internal&&"data"in e}const $=["post","put","patch","delete"],Y=(new Set($),["get",...$]);new Set(Y),new Set([301,302,303,307,308]),new Set([307,308]);Symbol("deferred");function X(){return X=Object.assign?Object.assign.bind():function(e){for(var t=1;t{n.current=!0});let r=a.useCallback(function(r,o){void 0===o&&(o={}),n.current&&("number"===typeof r?e.navigate(r):e.navigate(r,X({fromRouteId:t},o)))},[e,t]);return r}():function(){re()||p(!1);let e=a.useContext(Q),{basename:t,future:n,navigator:r}=a.useContext(Z),{matches:o}=a.useContext(te),{pathname:i}=oe(),s=JSON.stringify(W(o,n.v7_relativeSplatPath)),l=a.useRef(!1);ae(()=>{l.current=!0});let u=a.useCallback(function(n,o){if(void 0===o&&(o={}),!l.current)return;if("number"===typeof n)return void r.go(n);let a=U(n,JSON.parse(s),i,"path"===o.relative);null==e&&"/"!==t&&(a.pathname="/"===a.pathname?t:V([t,a.pathname])),(o.replace?r.replace:r.push)(a,o.state,o)},[t,r,s,i,e]);return u}()}const se=a.createContext(null);function le(e,t){let{relative:n}=void 0===t?{}:t,{future:r}=a.useContext(Z),{matches:o}=a.useContext(te),{pathname:i}=oe(),s=JSON.stringify(W(o,r.v7_relativeSplatPath));return a.useMemo(()=>U(e,JSON.parse(s),i,"path"===n),[e,s,i,n])}function ue(e,t,n,r){re()||p(!1);let{navigator:i}=a.useContext(Z),{matches:s}=a.useContext(te),l=s[s.length-1],u=l?l.params:{},c=(l&&l.pathname,l?l.pathnameBase:"/");l&&l.route;let d,h=oe();if(t){var f;let e="string"===typeof t?v(t):t;"/"===c||(null==(f=e.pathname)?void 0:f.startsWith(c))||p(!1),d=e}else d=h;let m=d.pathname||"/",g=m;if("/"!==c){let e=c.replace(/^\//,"").split("/");g="/"+m.replace(/^\//,"").split("/").slice(e.length).join("/")}let y=x(e,{pathname:g});let b=fe(y&&y.map(e=>Object.assign({},e,{params:Object.assign({},u,e.params),pathname:V([c,i.encodeLocation?i.encodeLocation(e.pathname).pathname:e.pathname]),pathnameBase:"/"===e.pathnameBase?c:V([c,i.encodeLocation?i.encodeLocation(e.pathnameBase).pathname:e.pathnameBase])})),s,n,r);return t&&b?a.createElement(ee.Provider,{value:{location:X({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:o.Pop}},b):b}function ce(){let e=function(){var e;let t=a.useContext(ne),n=ye(ge.UseRouteError),r=be(ge.UseRouteError);if(void 0!==t)return t;return null==(e=n.errors)?void 0:e[r]}(),t=K(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,r="rgba(200,200,200, 0.5)",o={padding:"0.5rem",backgroundColor:r};return a.createElement(a.Fragment,null,a.createElement("h2",null,"Unexpected Application Error!"),a.createElement("h3",{style:{fontStyle:"italic"}},t),n?a.createElement("pre",{style:o},n):null,null)}const de=a.createElement(ce,null);class pe extends a.Component{constructor(e){super(e),this.state={location:e.location,revalidation:e.revalidation,error:e.error}}static getDerivedStateFromError(e){return{error:e}}static getDerivedStateFromProps(e,t){return t.location!==e.location||"idle"!==t.revalidation&&"idle"===e.revalidation?{error:e.error,location:e.location,revalidation:e.revalidation}:{error:void 0!==e.error?e.error:t.error,location:t.location,revalidation:e.revalidation||t.revalidation}}componentDidCatch(e,t){console.error("React Router caught the following error during render",e,t)}render(){return void 0!==this.state.error?a.createElement(te.Provider,{value:this.props.routeContext},a.createElement(ne.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function he(e){let{routeContext:t,match:n,children:r}=e,o=a.useContext(Q);return o&&o.static&&o.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=n.route.id),a.createElement(te.Provider,{value:t},r)}function fe(e,t,n,r){var o;if(void 0===t&&(t=[]),void 0===n&&(n=null),void 0===r&&(r=null),null==e){var i;if(!n)return null;if(n.errors)e=n.matches;else{if(!(null!=(i=r)&&i.v7_partialHydration&&0===t.length&&!n.initialized&&n.matches.length>0))return null;e=n.matches}}let s=e,l=null==(o=n)?void 0:o.errors;if(null!=l){let e=s.findIndex(e=>e.route.id&&void 0!==(null==l?void 0:l[e.route.id]));e>=0||p(!1),s=s.slice(0,Math.min(s.length,e+1))}let u=!1,c=-1;if(n&&r&&r.v7_partialHydration)for(let a=0;a=0?s.slice(0,c+1):[s[0]];break}}}return s.reduceRight((e,r,o)=>{let i,d=!1,p=null,h=null;var f;n&&(i=l&&r.route.id?l[r.route.id]:void 0,p=r.route.errorElement||de,u&&(c<0&&0===o?(f="route-fallback",!1||xe[f]||(xe[f]=!0),d=!0,h=null):c===o&&(d=!0,h=r.route.hydrateFallbackElement||null)));let m=t.concat(s.slice(0,o+1)),g=()=>{let t;return t=i?p:d?h:r.route.Component?a.createElement(r.route.Component,null):r.route.element?r.route.element:e,a.createElement(he,{match:r,routeContext:{outlet:e,matches:m,isDataRoute:null!=n},children:t})};return n&&(r.route.ErrorBoundary||r.route.errorElement||0===o)?a.createElement(pe,{location:n.location,revalidation:n.revalidation,component:p,error:i,children:g(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):g()},null)}var me=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(me||{}),ge=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(ge||{});function ve(e){let t=a.useContext(Q);return t||p(!1),t}function ye(e){let t=a.useContext(J);return t||p(!1),t}function be(e){let t=function(){let e=a.useContext(te);return e||p(!1),e}(),n=t.matches[t.matches.length-1];return n.route.id||p(!1),n.route.id}const xe={};function Ae(e,t){null==e||e.v7_startTransition,void 0===(null==e?void 0:e.v7_relativeSplatPath)&&(!t||t.v7_relativeSplatPath),t&&(t.v7_fetcherPersist,t.v7_normalizeFormMethod,t.v7_partialHydration,t.v7_skipActionErrorRevalidation)}i.startTransition;function De(e){return function(e){let t=a.useContext(te).outlet;return t?a.createElement(se.Provider,{value:e},t):t}(e.context)}function ke(e){p(!1)}function we(e){let{basename:t="/",children:n=null,location:r,navigationType:i=o.Pop,navigator:s,static:l=!1,future:u}=e;re()&&p(!1);let c=t.replace(/^\/*/,"/"),d=a.useMemo(()=>({basename:c,navigator:s,static:l,future:X({v7_relativeSplatPath:!1},u)}),[c,u,s,l]);"string"===typeof r&&(r=v(r));let{pathname:h="/",search:f="",hash:m="",state:g=null,key:y="default"}=r,b=a.useMemo(()=>{let e=P(h,c);return null==e?null:{location:{pathname:e,search:f,hash:m,state:g,key:y},navigationType:i}},[c,h,f,m,g,y,i]);return null==b?null:a.createElement(Z.Provider,{value:d},a.createElement(ee.Provider,{children:n,value:b}))}function Se(e){let{children:t,location:n}=e;return ue(Ee(t),n)}new Promise(()=>{});a.Component;function Ee(e,t){void 0===t&&(t=[]);let n=[];return a.Children.forEach(e,(e,r)=>{if(!a.isValidElement(e))return;let o=[...t,r];if(e.type===a.Fragment)return void n.push.apply(n,Ee(e.props.children,o));e.type!==ke&&p(!1),e.props.index&&e.props.children&&p(!1);let i={id:e.props.id||o.join("-"),caseSensitive:e.props.caseSensitive,element:e.props.element,Component:e.props.Component,index:e.props.index,path:e.props.path,loader:e.props.loader,action:e.props.action,errorElement:e.props.errorElement,ErrorBoundary:e.props.ErrorBoundary,hasErrorBoundary:null!=e.props.ErrorBoundary||null!=e.props.errorElement,shouldRevalidate:e.props.shouldRevalidate,handle:e.props.handle,lazy:e.props.lazy};e.props.children&&(i.children=Ee(e.props.children,o)),n.push(i)}),n}function _e(){return _e=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0||(o[n]=e[n]);return o}new Set(["application/x-www-form-urlencoded","multipart/form-data","text/plain"]);const Fe=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","viewTransition"],Te=["aria-current","caseSensitive","className","end","style","to","viewTransition","children"];try{window.__reactRouterVersion="6"}catch(gc){}const je=a.createContext({isTransitioning:!1});new Map;const ze=i.startTransition;u.flushSync,i.useId;function Ie(e){let{basename:t,children:n,future:r,window:o}=e,i=a.useRef();var s;null==i.current&&(i.current=(void 0===(s={window:o,v5Compat:!0})&&(s={}),y(function(e,t){let{pathname:n="/",search:r="",hash:o=""}=v(e.location.hash.substr(1));return n.startsWith("/")||n.startsWith(".")||(n="/"+n),m("",{pathname:n,search:r,hash:o},t.state&&t.state.usr||null,t.state&&t.state.key||"default")},function(e,t){let n=e.document.querySelector("base"),r="";if(n&&n.getAttribute("href")){let t=e.location.href,n=t.indexOf("#");r=-1===n?t:t.slice(0,n)}return r+"#"+("string"===typeof t?t:g(t))},function(e,t){h("/"===e.pathname.charAt(0),"relative pathnames are not supported in hash history.push("+JSON.stringify(t)+")")},s)));let l=i.current,[u,c]=a.useState({action:l.action,location:l.location}),{v7_startTransition:d}=r||{},p=a.useCallback(e=>{d&&ze?ze(()=>c(e)):c(e)},[c,d]);return a.useLayoutEffect(()=>l.listen(p),[l,p]),a.useEffect(()=>Ae(r),[r]),a.createElement(we,{basename:t,children:n,location:u.location,navigationType:u.action,navigator:l,future:r})}const Le="undefined"!==typeof window&&"undefined"!==typeof window.document&&"undefined"!==typeof window.document.createElement,Pe=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,Re=a.forwardRef(function(e,t){let n,{onClick:r,relative:o,reloadDocument:i,replace:s,state:l,target:u,to:c,preventScrollReset:d,viewTransition:h}=e,f=Ce(e,Fe),{basename:m}=a.useContext(Z),v=!1;if("string"===typeof c&&Pe.test(c)&&(n=c,Le))try{let e=new URL(window.location.href),t=c.startsWith("//")?new URL(e.protocol+c):new URL(c),n=P(t.pathname,m);t.origin===e.origin&&null!=n?c=n+t.search+t.hash:v=!0}catch(gc){}let y=function(e,t){let{relative:n}=void 0===t?{}:t;re()||p(!1);let{basename:r,navigator:o}=a.useContext(Z),{hash:i,pathname:s,search:l}=le(e,{relative:n}),u=s;return"/"!==r&&(u="/"===s?r:V([r,s])),o.createHref({pathname:u,search:l,hash:i})}(c,{relative:o}),b=function(e,t){let{target:n,replace:r,state:o,preventScrollReset:i,relative:s,viewTransition:l}=void 0===t?{}:t,u=ie(),c=oe(),d=le(e,{relative:s});return a.useCallback(t=>{if(function(e,t){return 0===e.button&&(!t||"_self"===t)&&!function(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}(e)}(t,n)){t.preventDefault();let n=void 0!==r?r:g(c)===g(d);u(e,{replace:n,state:o,preventScrollReset:i,relative:s,viewTransition:l})}},[c,u,d,r,o,n,e,i,s,l])}(c,{replace:s,state:l,target:u,preventScrollReset:d,relative:o,viewTransition:h});return a.createElement("a",_e({},f,{href:n||y,onClick:v||i?r:function(e){r&&r(e),e.defaultPrevented||b(e)},ref:t,target:u}))});const Ne=a.forwardRef(function(e,t){let{"aria-current":n="page",caseSensitive:r=!1,className:o="",end:i=!1,style:s,to:l,viewTransition:u,children:c}=e,d=Ce(e,Te),h=le(l,{relative:d.relative}),f=oe(),m=a.useContext(J),{navigator:g,basename:v}=a.useContext(Z),y=null!=m&&function(e,t){void 0===t&&(t={});let n=a.useContext(je);null==n&&p(!1);let{basename:r}=Me(Oe.useViewTransitionState),o=le(e,{relative:t.relative});if(!n.isTransitioning)return!1;let i=P(n.currentLocation.pathname,r)||n.currentLocation.pathname,s=P(n.nextLocation.pathname,r)||n.nextLocation.pathname;return null!=I(o.pathname,s)||null!=I(o.pathname,i)}(h)&&!0===u,b=g.encodeLocation?g.encodeLocation(h).pathname:h.pathname,x=f.pathname,A=m&&m.navigation&&m.navigation.location?m.navigation.location.pathname:null;r||(x=x.toLowerCase(),A=A?A.toLowerCase():null,b=b.toLowerCase()),A&&v&&(A=P(A,v)||A);const D="/"!==b&&b.endsWith("/")?b.length-1:b.length;let k,w=x===b||!i&&x.startsWith(b)&&"/"===x.charAt(D),S=null!=A&&(A===b||!i&&A.startsWith(b)&&"/"===A.charAt(b.length)),E={isActive:w,isPending:S,isTransitioning:y},_=w?n:void 0;k="function"===typeof o?o(E):[o,w?"active":null,S?"pending":null,y?"transitioning":null].filter(Boolean).join(" ");let C="function"===typeof s?s(E):s;return a.createElement(Re,_e({},d,{"aria-current":_,className:k,ref:t,style:C,to:l,viewTransition:u}),"function"===typeof c?c(E):c)});var Oe,Be;function Me(e){let t=a.useContext(Q);return t||p(!1),t}(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(Oe||(Oe={})),function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"}(Be||(Be={}));var We=n(4320),Ue=n(8915),Ve=n(5553),He=n(1876),Ge=n(1985),qe=n(8757),Ke=n(2979),$e=n(457);const Ye=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=a.useContext($e.T);return t&&(n=t,0!==Object.keys(n).length)?t:e;var n},Xe=(0,Ke.A)();const Qe=function(){return Ye(arguments.length>0&&void 0!==arguments[0]?arguments[0]:Xe)};var Je=n(5089);const Ze=["className","component"];var et=n(7599),tt=n(6966),nt=n(5863),rt=n(5421);const ot=(0,rt.A)("MuiBox",["root"]),at=(0,tt.A)(),it=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{themeId:t,defaultTheme:n,defaultClassName:r="MuiBox-root",generateClassName:o}=e,i=(0,He.default)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(Ge.A);return a.forwardRef(function(e,a){const s=Qe(n),l=(0,qe.A)(e),{className:u,component:c="div"}=l,d=(0,Ue.A)(l,Ze);return(0,Je.jsx)(i,(0,We.A)({as:c,ref:a,className:(0,Ve.A)(u,o?o(r):r),theme:t&&s[t]||s},d))})}({themeId:nt.A,defaultTheme:at,defaultClassName:ot.root,generateClassName:et.A.generate}),st=it;function lt(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var ut=n(1163),ct=n(1834),dt=n(5227),pt=n(3142),ht=n(7183),ft=n(4089);function mt(e){return(0,ft.Ay)("MuiCircularProgress",e)}(0,rt.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var gt,vt,yt,bt;const xt=["className","color","disableShrink","size","style","thickness","value","variant"];let At,Dt,kt,wt;const St=44,Et=(0,ct.i7)(At||(At=gt||(gt=lt(["\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n"])))),_t=(0,ct.i7)(Dt||(Dt=vt||(vt=lt(["\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -125px;\n }\n"])))),Ct=(0,ht.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t["color".concat((0,dt.A)(n.color))]]}})(e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({display:"inline-block"},"determinate"===t.variant&&{transition:n.transitions.create("transform")},"inherit"!==t.color&&{color:(n.vars||n).palette[t.color].main})},e=>{let{ownerState:t}=e;return"indeterminate"===t.variant&&(0,ct.AH)(kt||(kt=yt||(yt=lt(["\n animation: "," 1.4s linear infinite;\n "]))),Et)}),Ft=(0,ht.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),Tt=(0,ht.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.circle,t["circle".concat((0,dt.A)(n.variant))],n.disableShrink&&t.circleDisableShrink]}})(e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({stroke:"currentColor"},"determinate"===t.variant&&{transition:n.transitions.create("stroke-dashoffset")},"indeterminate"===t.variant&&{strokeDasharray:"80px, 200px",strokeDashoffset:0})},e=>{let{ownerState:t}=e;return"indeterminate"===t.variant&&!t.disableShrink&&(0,ct.AH)(wt||(wt=bt||(bt=lt(["\n animation: "," 1.4s ease-in-out infinite;\n "]))),_t)}),jt=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiCircularProgress"}),{className:r,color:o="primary",disableShrink:a=!1,size:i=40,style:s,thickness:l=3.6,value:u=0,variant:c="indeterminate"}=n,d=(0,Ue.A)(n,xt),p=(0,We.A)({},n,{color:o,disableShrink:a,size:i,thickness:l,value:u,variant:c}),h=(e=>{const{classes:t,variant:n,color:r,disableShrink:o}=e,a={root:["root",n,"color".concat((0,dt.A)(r))],svg:["svg"],circle:["circle","circle".concat((0,dt.A)(n)),o&&"circleDisableShrink"]};return(0,ut.A)(a,mt,t)})(p),f={},m={},g={};if("determinate"===c){const e=2*Math.PI*((St-l)/2);f.strokeDasharray=e.toFixed(3),g["aria-valuenow"]=Math.round(u),f.strokeDashoffset="".concat(((100-u)/100*e).toFixed(3),"px"),m.transform="rotate(-90deg)"}return(0,Je.jsx)(Ct,(0,We.A)({className:(0,Ve.A)(h.root,r),style:(0,We.A)({width:i,height:i},m,s),ownerState:p,ref:t,role:"progressbar"},g,d,{children:(0,Je.jsx)(Ft,{className:h.svg,ownerState:p,viewBox:"".concat(22," ").concat(22," ").concat(St," ").concat(St),children:(0,Je.jsx)(Tt,{className:h.circle,style:f,ownerState:p,cx:St,cy:St,r:(St-l)/2,fill:"none",strokeWidth:l})})}))}),zt=jt;var It=n(4107),Lt=n(4837);function Pt(e){return e&&"object"===typeof e?"position"in e||"type"in e?Nt(e.position):"start"in e||"end"in e?Nt(e):"line"in e||"column"in e?Rt(e):"":""}function Rt(e){return Ot(e&&e.line)+":"+Ot(e&&e.column)}function Nt(e){return Rt(e&&e.start)+"-"+Rt(e&&e.end)}function Ot(e){return e&&"number"===typeof e?e:1}class Bt extends Error{constructor(e,t,n){const r=[null,null];let o={start:{line:null,column:null},end:{line:null,column:null}};if(super(),"string"===typeof t&&(n=t,t=void 0),"string"===typeof n){const e=n.indexOf(":");-1===e?r[1]=n:(r[0]=n.slice(0,e),r[1]=n.slice(e+1))}t&&("type"in t||"position"in t?t.position&&(o=t.position):"start"in t||"end"in t?o=t:("line"in t||"column"in t)&&(o.start=t)),this.name=Pt(t)||"1:1",this.message="object"===typeof e?e.message:e,this.stack="","object"===typeof e&&e.stack&&(this.stack=e.stack),this.reason=this.message,this.fatal,this.line=o.start.line,this.column=o.start.column,this.position=o,this.source=r[0],this.ruleId=r[1],this.file,this.actual,this.expected,this.url,this.note}}Bt.prototype.file="",Bt.prototype.name="",Bt.prototype.reason="",Bt.prototype.message="",Bt.prototype.stack="",Bt.prototype.fatal=null,Bt.prototype.column=null,Bt.prototype.line=null,Bt.prototype.source=null,Bt.prototype.ruleId=null,Bt.prototype.position=null;const Mt={basename:function(e,t){if(void 0!==t&&"string"!==typeof t)throw new TypeError('"ext" argument must be a string');Wt(e);let n,r=0,o=-1,a=e.length;if(void 0===t||0===t.length||t.length>e.length){for(;a--;)if(47===e.charCodeAt(a)){if(n){r=a+1;break}}else o<0&&(n=!0,o=a+1);return o<0?"":e.slice(r,o)}if(t===e)return"";let i=-1,s=t.length-1;for(;a--;)if(47===e.charCodeAt(a)){if(n){r=a+1;break}}else i<0&&(n=!0,i=a+1),s>-1&&(e.charCodeAt(a)===t.charCodeAt(s--)?s<0&&(o=a):(s=-1,o=i));r===o?o=i:o<0&&(o=e.length);return e.slice(r,o)},dirname:function(e){if(Wt(e),0===e.length)return".";let t,n=-1,r=e.length;for(;--r;)if(47===e.charCodeAt(r)){if(t){n=r;break}}else t||(t=!0);return n<0?47===e.charCodeAt(0)?"/":".":1===n&&47===e.charCodeAt(0)?"//":e.slice(0,n)},extname:function(e){Wt(e);let t,n=e.length,r=-1,o=0,a=-1,i=0;for(;n--;){const s=e.charCodeAt(n);if(47!==s)r<0&&(t=!0,r=n+1),46===s?a<0?a=n:1!==i&&(i=1):a>-1&&(i=-1);else if(t){o=n+1;break}}if(a<0||r<0||0===i||1===i&&a===r-1&&a===o+1)return"";return e.slice(a,r)},join:function(){let e,t=-1;for(var n=arguments.length,r=new Array(n),o=0;o2){if(r=o.lastIndexOf("/"),r!==o.length-1){r<0?(o="",a=0):(o=o.slice(0,r),a=o.length-1-o.lastIndexOf("/")),i=l,s=0;continue}}else if(o.length>0){o="",a=0,i=l,s=0;continue}t&&(o=o.length>0?o+"/..":"..",a=2)}else o.length>0?o+="/"+e.slice(i+1,l):o=e.slice(i+1,l),a=l-i-1;i=l,s=0}else 46===n&&s>-1?s++:s=-1}return o}(e,!t);0!==n.length||t||(n=".");n.length>0&&47===e.charCodeAt(e.length-1)&&(n+="/");return t?"/"+n:n}(e)},sep:"/"};function Wt(e){if("string"!==typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const Ut={cwd:function(){return"/"}};function Vt(e){return null!==e&&"object"===typeof e&&e.href&&e.origin}function Ht(e){if("string"===typeof e)e=new URL(e);else if(!Vt(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if("file:"!==e.protocol){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return function(e){if(""!==e.hostname){const e=new TypeError('File URL host must be "localhost" or empty on darwin');throw e.code="ERR_INVALID_FILE_URL_HOST",e}const t=e.pathname;let n=-1;for(;++n1?l-1:0),c=1;co.length;let u;l&&o.push(a);try{u=e.apply(this,o)}catch(r){if(l&&n)throw r;return a(r)}l||(u&&u.then&&"function"===typeof u.then?u.then(i,a):u instanceof Error?a(u):i(u))}function a(e){if(!n){n=!0;for(var r=arguments.length,o=new Array(r>1?r-1:0),a=1;a1?t-1:0),s=1;s{if(!e&&t&&n){const o=i.stringify(t,n);void 0===o||null===o||("string"===typeof(r=o)||Lt(r)?n.value=o:n.result=o),a(e,n)}else a(e);var r})}n(null,t)},i.processSync=function(e){let t;i.freeze(),rn("processSync",i.Parser),on("processSync",i.Compiler);const n=un(e);return i.process(n,r),ln("processSync","process",t),n;function r(e){t=!0,Xt(e)}},i;function i(){const t=e();let r=-1;for(;++ro?0:o+t:t>o?o:t,n=n>0?n:0,r.length<1e4)a=Array.from(r),a.unshift(t,n),e.splice(...a);else for(n&&e.splice(t,n);i0?(hn(e,e.length,0,t),e):t}const mn={}.hasOwnProperty;function gn(e,t){let n;for(n in t){const r=(mn.call(e,n)?e[n]:void 0)||(e[n]={}),o=t[n];let a;if(o)for(a in o){mn.call(r,a)||(r[a]=[]);const e=o[a];vn(r[a],Array.isArray(e)?e:e?[e]:[])}}}function vn(e,t){let n=-1;const r=[];for(;++na))return;const n=t.events.length;let o,s,l=n;for(;l--;)if("exit"===t.events[l][0]&&"chunkFlow"===t.events[l][1].type){if(o){s=t.events[l][1].end;break}o=!0}for(v(i),e=n;er;){const r=n[o];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function y(){r.write([null]),o=void 0,r=void 0,t.containerState._closeFlow=void 0}}},Ln={tokenize:function(e,t,n){return jn(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}};const Pn={tokenize:function(e,t,n){return function(t){return _n(t)?jn(e,r,"linePrefix")(t):r(t)};function r(e){return null===e||Sn(e)?t(e):n(e)}},partial:!0};function Rn(e){const t={};let n,r,o,a,i,s,l,u=-1;for(;++u=4?t(o):e.interrupt(r.parser.constructs.flow,n,t)(o)}},partial:!0};const Mn={tokenize:function(e){const t=this,n=e.attempt(Pn,function(r){if(null===r)return void e.consume(r);return e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n},e.attempt(this.parser.constructs.flowInitial,r,jn(e,e.attempt(this.parser.constructs.flow,r,e.attempt(On,r)),"linePrefix")));return n;function r(r){if(null!==r)return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),t.currentConstruct=void 0,n;e.consume(r)}}};const Wn={resolveAll:Gn()},Un=Hn("string"),Vn=Hn("text");function Hn(e){return{tokenize:function(t){const n=this,r=this.parser.constructs[e],o=t.attempt(r,a,i);return a;function a(e){return l(e)?o(e):i(e)}function i(e){if(null!==e)return t.enter("data"),t.consume(e),s;t.consume(e)}function s(e){return l(e)?(t.exit("data"),o(e)):(t.consume(e),s)}function l(e){if(null===e)return!0;const t=r[e];let o=-1;if(t)for(;++o-1){const e=i[0];"string"===typeof e?i[0]=e.slice(r):i.shift()}a>0&&i.push(e[o].slice(0,a))}return i}(i,e)}function f(){const{line:e,column:t,offset:n,_index:o,_bufferIndex:a}=r;return{line:e,column:t,offset:n,_index:o,_bufferIndex:a}}function m(){let e;for(;r._index=3&&(null===a||Sn(a))?(e.exit("thematicBreak"),t(a)):n(a)}function i(t){return t===r?(e.consume(t),o++,i):(e.exit("thematicBreakSequence"),_n(t)?jn(e,a,"whitespace")(t):a(t))}}};const Xn={name:"list",tokenize:function(e,t,n){const r=this,o=r.events[r.events.length-1];let a=o&&"linePrefix"===o[1].type?o[2].sliceSerialize(o[1],!0).length:0,i=0;return function(t){const o=r.containerState.type||(42===t||43===t||45===t?"listUnordered":"listOrdered");if("listUnordered"===o?!r.containerState.marker||t===r.containerState.marker:Dn(t)){if(r.containerState.type||(r.containerState.type=o,e.enter(o,{_container:!0})),"listUnordered"===o)return e.enter("listItemPrefix"),42===t||45===t?e.check(Yn,n,l)(t):l(t);if(!r.interrupt||49===t)return e.enter("listItemPrefix"),e.enter("listItemValue"),s(t)}return n(t)};function s(t){return Dn(t)&&++i<10?(e.consume(t),s):(!r.interrupt||i<2)&&(r.containerState.marker?t===r.containerState.marker:41===t||46===t)?(e.exit("listItemValue"),l(t)):n(t)}function l(t){return e.enter("listItemMarker"),e.consume(t),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||t,e.check(Pn,r.interrupt?n:u,e.attempt(Qn,d,c))}function u(e){return r.containerState.initialBlankLine=!0,a++,d(e)}function c(t){return _n(t)?(e.enter("listItemPrefixWhitespace"),e.consume(t),e.exit("listItemPrefixWhitespace"),d):n(t)}function d(n){return r.containerState.size=a+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(n)}},continuation:{tokenize:function(e,t,n){const r=this;return r.containerState._closeFlow=void 0,e.check(Pn,o,a);function o(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,jn(e,t,"listItemIndent",r.containerState.size+1)(n)}function a(n){return r.containerState.furtherBlankLines||!_n(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,i(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(Jn,t,i)(n))}function i(o){return r.containerState._closeFlow=!0,r.interrupt=void 0,jn(e,e.attempt(Xn,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o)}}},exit:function(e){e.exit(this.containerState.type)}},Qn={tokenize:function(e,t,n){const r=this;return jn(e,function(e){const o=r.events[r.events.length-1];return!_n(e)&&o&&"listItemPrefixWhitespace"===o[1].type?t(e):n(e)},"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5)},partial:!0},Jn={tokenize:function(e,t,n){const r=this;return jn(e,function(e){const o=r.events[r.events.length-1];return o&&"listItemIndent"===o[1].type&&o[2].sliceSerialize(o[1],!0).length===r.containerState.size?t(e):n(e)},"listItemIndent",r.containerState.size+1)},partial:!0};const Zn={name:"blockQuote",tokenize:function(e,t,n){const r=this;return function(t){if(62===t){const n=r.containerState;return n.open||(e.enter("blockQuote",{_container:!0}),n.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(t),e.exit("blockQuoteMarker"),o}return n(t)};function o(n){return _n(n)?(e.enter("blockQuotePrefixWhitespace"),e.consume(n),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(n))}},continuation:{tokenize:function(e,t,n){const r=this;return function(t){if(_n(t))return jn(e,o,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t);return o(t)};function o(r){return e.attempt(Zn,t,n)(r)}}},exit:function(e){e.exit("blockQuote")}};function er(e,t,n,r,o,a,i,s,l){const u=l||Number.POSITIVE_INFINITY;let c=0;return function(t){if(60===t)return e.enter(r),e.enter(o),e.enter(a),e.consume(t),e.exit(a),d;if(null===t||32===t||41===t||An(t))return n(t);return e.enter(r),e.enter(i),e.enter(s),e.enter("chunkString",{contentType:"string"}),f(t)};function d(n){return 62===n?(e.enter(a),e.consume(n),e.exit(a),e.exit(o),e.exit(r),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(n))}function p(t){return 62===t?(e.exit("chunkString"),e.exit(s),d(t)):null===t||60===t||Sn(t)?n(t):(e.consume(t),92===t?h:p)}function h(t){return 60===t||62===t||92===t?(e.consume(t),p):p(t)}function f(o){return c||null!==o&&41!==o&&!En(o)?c999||null===d||91===d||93===d&&!s||94===d&&!l&&"_hiddenFootnoteSupport"in i.parser.constructs?n(d):93===d?(e.exit(a),e.enter(o),e.consume(d),e.exit(o),e.exit(r),t):Sn(d)?(e.enter("lineEnding"),e.consume(d),e.exit("lineEnding"),u):(e.enter("chunkString",{contentType:"string"}),c(d))}function c(t){return null===t||91===t||93===t||Sn(t)||l++>999?(e.exit("chunkString"),u(t)):(e.consume(t),s||(s=!_n(t)),92===t?d:c)}function d(t){return 91===t||92===t||93===t?(e.consume(t),l++,c):c(t)}}function nr(e,t,n,r,o,a){let i;return function(t){if(34===t||39===t||40===t)return e.enter(r),e.enter(o),e.consume(t),e.exit(o),i=40===t?41:t,s;return n(t)};function s(n){return n===i?(e.enter(o),e.consume(n),e.exit(o),e.exit(r),t):(e.enter(a),l(n))}function l(t){return t===i?(e.exit(a),s(i)):null===t?n(t):Sn(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),jn(e,l,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),u(t))}function u(t){return t===i||null===t||Sn(t)?(e.exit("chunkString"),l(t)):(e.consume(t),92===t?c:u)}function c(t){return t===i||92===t?(e.consume(t),u):u(t)}}function rr(e,t){let n;return function r(o){if(Sn(o))return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),n=!0,r;if(_n(o))return jn(e,r,n?"linePrefix":"lineSuffix")(o);return t(o)}}function or(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const ar={name:"definition",tokenize:function(e,t,n){const r=this;let o;return function(t){return e.enter("definition"),function(t){return tr.call(r,e,a,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(t)}(t)};function a(t){return o=or(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),58===t?(e.enter("definitionMarker"),e.consume(t),e.exit("definitionMarker"),i):n(t)}function i(t){return En(t)?rr(e,s)(t):s(t)}function s(t){return er(e,l,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(t)}function l(t){return e.attempt(ir,u,u)(t)}function u(t){return _n(t)?jn(e,c,"whitespace")(t):c(t)}function c(a){return null===a||Sn(a)?(e.exit("definition"),r.parser.defined.push(o),t(a)):n(a)}}},ir={tokenize:function(e,t,n){return function(t){return En(t)?rr(e,r)(t):n(t)};function r(t){return nr(e,o,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(t)}function o(t){return _n(t)?jn(e,a,"whitespace")(t):a(t)}function a(e){return null===e||Sn(e)?t(e):n(e)}},partial:!0};const sr={name:"codeIndented",tokenize:function(e,t,n){const r=this;return function(t){return e.enter("codeIndented"),jn(e,o,"linePrefix",5)(t)};function o(e){const t=r.events[r.events.length-1];return t&&"linePrefix"===t[1].type&&t[2].sliceSerialize(t[1],!0).length>=4?a(e):n(e)}function a(t){return null===t?s(t):Sn(t)?e.attempt(lr,a,s)(t):(e.enter("codeFlowValue"),i(t))}function i(t){return null===t||Sn(t)?(e.exit("codeFlowValue"),a(t)):(e.consume(t),i)}function s(n){return e.exit("codeIndented"),t(n)}}},lr={tokenize:function(e,t,n){const r=this;return o;function o(t){return r.parser.lazy[r.now().line]?n(t):Sn(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),o):jn(e,a,"linePrefix",5)(t)}function a(e){const a=r.events[r.events.length-1];return a&&"linePrefix"===a[1].type&&a[2].sliceSerialize(a[1],!0).length>=4?t(e):Sn(e)?o(e):n(e)}},partial:!0};const ur={name:"headingAtx",tokenize:function(e,t,n){let r=0;return function(t){return e.enter("atxHeading"),function(t){return e.enter("atxHeadingSequence"),o(t)}(t)};function o(t){return 35===t&&r++<6?(e.consume(t),o):null===t||En(t)?(e.exit("atxHeadingSequence"),a(t)):n(t)}function a(n){return 35===n?(e.enter("atxHeadingSequence"),i(n)):null===n||Sn(n)?(e.exit("atxHeading"),t(n)):_n(n)?jn(e,a,"whitespace")(n):(e.enter("atxHeadingText"),s(n))}function i(t){return 35===t?(e.consume(t),i):(e.exit("atxHeadingSequence"),a(t))}function s(t){return null===t||35===t||En(t)?(e.exit("atxHeadingText"),a(t)):(e.consume(t),s)}},resolve:function(e,t){let n,r,o=e.length-2,a=3;"whitespace"===e[a][1].type&&(a+=2);o-2>a&&"whitespace"===e[o][1].type&&(o-=2);"atxHeadingSequence"===e[o][1].type&&(a===o-1||o-4>a&&"whitespace"===e[o-2][1].type)&&(o-=a+1===o?2:4);o>a&&(n={type:"atxHeadingText",start:e[a][1].start,end:e[o][1].end},r={type:"chunkText",start:e[a][1].start,end:e[o][1].end,contentType:"text"},hn(e,a,o-a+1,[["enter",n,t],["enter",r,t],["exit",r,t],["exit",n,t]]));return e}};const cr={name:"setextUnderline",tokenize:function(e,t,n){const r=this;let o;return function(t){let i,s=r.events.length;for(;s--;)if("lineEnding"!==r.events[s][1].type&&"linePrefix"!==r.events[s][1].type&&"content"!==r.events[s][1].type){i="paragraph"===r.events[s][1].type;break}if(!r.parser.lazy[r.now().line]&&(r.interrupt||i))return e.enter("setextHeadingLine"),o=t,function(t){return e.enter("setextHeadingLineSequence"),a(t)}(t);return n(t)};function a(t){return t===o?(e.consume(t),a):(e.exit("setextHeadingLineSequence"),_n(t)?jn(e,i,"lineSuffix")(t):i(t))}function i(r){return null===r||Sn(r)?(e.exit("setextHeadingLine"),t(r)):n(r)}},resolveTo:function(e,t){let n,r,o,a=e.length;for(;a--;)if("enter"===e[a][0]){if("content"===e[a][1].type){n=a;break}"paragraph"===e[a][1].type&&(r=a)}else"content"===e[a][1].type&&e.splice(a,1),o||"definition"!==e[a][1].type||(o=a);const i={type:"setextHeading",start:Object.assign({},e[r][1].start),end:Object.assign({},e[e.length-1][1].end)};e[r][1].type="setextHeadingText",o?(e.splice(r,0,["enter",i,t]),e.splice(o+1,0,["exit",e[n][1],t]),e[n][1].end=Object.assign({},e[o][1].end)):e[n][1]=i;return e.push(["exit",i,t]),e}};const dr=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],pr=["pre","script","style","textarea"],hr={name:"htmlFlow",tokenize:function(e,t,n){const r=this;let o,a,i,s,l;return function(t){return function(t){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(t),u}(t)};function u(s){return 33===s?(e.consume(s),c):47===s?(e.consume(s),a=!0,h):63===s?(e.consume(s),o=3,r.interrupt?t:L):yn(s)?(e.consume(s),i=String.fromCharCode(s),f):n(s)}function c(a){return 45===a?(e.consume(a),o=2,d):91===a?(e.consume(a),o=5,s=0,p):yn(a)?(e.consume(a),o=4,r.interrupt?t:L):n(a)}function d(o){return 45===o?(e.consume(o),r.interrupt?t:L):n(o)}function p(o){const a="CDATA[";return o===a.charCodeAt(s++)?(e.consume(o),6===s?r.interrupt?t:E:p):n(o)}function h(t){return yn(t)?(e.consume(t),i=String.fromCharCode(t),f):n(t)}function f(s){if(null===s||47===s||62===s||En(s)){const l=47===s,u=i.toLowerCase();return l||a||!pr.includes(u)?dr.includes(i.toLowerCase())?(o=6,l?(e.consume(s),m):r.interrupt?t(s):E(s)):(o=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):a?g(s):v(s)):(o=1,r.interrupt?t(s):E(s))}return 45===s||bn(s)?(e.consume(s),i+=String.fromCharCode(s),f):n(s)}function m(o){return 62===o?(e.consume(o),r.interrupt?t:E):n(o)}function g(t){return _n(t)?(e.consume(t),g):w(t)}function v(t){return 47===t?(e.consume(t),w):58===t||95===t||yn(t)?(e.consume(t),y):_n(t)?(e.consume(t),v):w(t)}function y(t){return 45===t||46===t||58===t||95===t||bn(t)?(e.consume(t),y):b(t)}function b(t){return 61===t?(e.consume(t),x):_n(t)?(e.consume(t),b):v(t)}function x(t){return null===t||60===t||61===t||62===t||96===t?n(t):34===t||39===t?(e.consume(t),l=t,A):_n(t)?(e.consume(t),x):D(t)}function A(t){return t===l?(e.consume(t),l=null,k):null===t||Sn(t)?n(t):(e.consume(t),A)}function D(t){return null===t||34===t||39===t||47===t||60===t||61===t||62===t||96===t||En(t)?b(t):(e.consume(t),D)}function k(e){return 47===e||62===e||_n(e)?v(e):n(e)}function w(t){return 62===t?(e.consume(t),S):n(t)}function S(t){return null===t||Sn(t)?E(t):_n(t)?(e.consume(t),S):n(t)}function E(t){return 45===t&&2===o?(e.consume(t),T):60===t&&1===o?(e.consume(t),j):62===t&&4===o?(e.consume(t),P):63===t&&3===o?(e.consume(t),L):93===t&&5===o?(e.consume(t),I):!Sn(t)||6!==o&&7!==o?null===t||Sn(t)?(e.exit("htmlFlowData"),_(t)):(e.consume(t),E):(e.exit("htmlFlowData"),e.check(fr,R,_)(t))}function _(t){return e.check(mr,C,R)(t)}function C(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),F}function F(t){return null===t||Sn(t)?_(t):(e.enter("htmlFlowData"),E(t))}function T(t){return 45===t?(e.consume(t),L):E(t)}function j(t){return 47===t?(e.consume(t),i="",z):E(t)}function z(t){if(62===t){const n=i.toLowerCase();return pr.includes(n)?(e.consume(t),P):E(t)}return yn(t)&&i.length<8?(e.consume(t),i+=String.fromCharCode(t),z):E(t)}function I(t){return 93===t?(e.consume(t),L):E(t)}function L(t){return 62===t?(e.consume(t),P):45===t&&2===o?(e.consume(t),L):E(t)}function P(t){return null===t||Sn(t)?(e.exit("htmlFlowData"),R(t)):(e.consume(t),P)}function R(n){return e.exit("htmlFlow"),t(n)}},resolveTo:function(e){let t=e.length;for(;t--&&("enter"!==e[t][0]||"htmlFlow"!==e[t][1].type););t>1&&"linePrefix"===e[t-2][1].type&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2));return e},concrete:!0},fr={tokenize:function(e,t,n){return function(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),e.attempt(Pn,t,n)}},partial:!0},mr={tokenize:function(e,t,n){const r=this;return function(t){if(Sn(t))return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),o;return n(t)};function o(e){return r.parser.lazy[r.now().line]?n(e):t(e)}},partial:!0};const gr={tokenize:function(e,t,n){const r=this;return function(t){if(null===t)return n(t);return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),o};function o(e){return r.parser.lazy[r.now().line]?n(e):t(e)}},partial:!0},vr={name:"codeFenced",tokenize:function(e,t,n){const r=this,o={tokenize:function(e,t,n){let o=0;return i;function i(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),l}function l(t){return e.enter("codeFencedFence"),_n(t)?jn(e,u,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t):u(t)}function u(t){return t===a?(e.enter("codeFencedFenceSequence"),c(t)):n(t)}function c(t){return t===a?(o++,e.consume(t),c):o>=s?(e.exit("codeFencedFenceSequence"),_n(t)?jn(e,d,"whitespace")(t):d(t)):n(t)}function d(r){return null===r||Sn(r)?(e.exit("codeFencedFence"),t(r)):n(r)}},partial:!0};let a,i=0,s=0;return function(t){return function(t){const n=r.events[r.events.length-1];return i=n&&"linePrefix"===n[1].type?n[2].sliceSerialize(n[1],!0).length:0,a=t,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),l(t)}(t)};function l(t){return t===a?(s++,e.consume(t),l):s<3?n(t):(e.exit("codeFencedFenceSequence"),_n(t)?jn(e,u,"whitespace")(t):u(t))}function u(n){return null===n||Sn(n)?(e.exit("codeFencedFence"),r.interrupt?t(n):e.check(gr,h,y)(n)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),c(n))}function c(t){return null===t||Sn(t)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),u(t)):_n(t)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),jn(e,d,"whitespace")(t)):96===t&&t===a?n(t):(e.consume(t),c)}function d(t){return null===t||Sn(t)?u(t):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),p(t))}function p(t){return null===t||Sn(t)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),u(t)):96===t&&t===a?n(t):(e.consume(t),p)}function h(t){return e.attempt(o,y,f)(t)}function f(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),m}function m(t){return i>0&&_n(t)?jn(e,g,"linePrefix",i+1)(t):g(t)}function g(t){return null===t||Sn(t)?e.check(gr,h,y)(t):(e.enter("codeFlowValue"),v(t))}function v(t){return null===t||Sn(t)?(e.exit("codeFlowValue"),g(t)):(e.consume(t),v)}function y(n){return e.exit("codeFenced"),t(n)}},concrete:!0};const yr=document.createElement("i");function br(e){const t="&"+e+";";yr.innerHTML=t;const n=yr.textContent;return(59!==n.charCodeAt(n.length-1)||"semi"===e)&&(n!==t&&n)}const xr={name:"characterReference",tokenize:function(e,t,n){const r=this;let o,a,i=0;return function(t){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(t),e.exit("characterReferenceMarker"),s};function s(t){return 35===t?(e.enter("characterReferenceMarkerNumeric"),e.consume(t),e.exit("characterReferenceMarkerNumeric"),l):(e.enter("characterReferenceValue"),o=31,a=bn,u(t))}function l(t){return 88===t||120===t?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(t),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),o=6,a=kn,u):(e.enter("characterReferenceValue"),o=7,a=Dn,u(t))}function u(s){if(59===s&&i){const o=e.exit("characterReferenceValue");return a!==bn||br(r.sliceSerialize(o))?(e.enter("characterReferenceMarker"),e.consume(s),e.exit("characterReferenceMarker"),e.exit("characterReference"),t):n(s)}return a(s)&&i++1&&e[c][1].end.offset-e[c][1].start.offset>1?2:1;const d=Object.assign({},e[n][1].end),p=Object.assign({},e[c][1].start);Tr(d,-s),Tr(p,s),a={type:s>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},e[n][1].end)},i={type:s>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[c][1].start),end:p},o={type:s>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[c][1].start)},r={type:s>1?"strong":"emphasis",start:Object.assign({},a.start),end:Object.assign({},i.end)},e[n][1].end=Object.assign({},a.start),e[c][1].start=Object.assign({},i.end),l=[],e[n][1].end.offset-e[n][1].start.offset&&(l=fn(l,[["enter",e[n][1],t],["exit",e[n][1],t]])),l=fn(l,[["enter",r,t],["enter",a,t],["exit",a,t],["enter",o,t]]),l=fn(l,Kn(t.parser.constructs.insideSpan.null,e.slice(n+1,c),t)),l=fn(l,[["exit",o,t],["enter",i,t],["exit",i,t],["exit",r,t]]),e[c][1].end.offset-e[c][1].start.offset?(u=2,l=fn(l,[["enter",e[c][1],t],["exit",e[c][1],t]])):u=0,hn(e,n-1,c-n+3,l),c=n+l.length-u-2;break}c=-1;for(;++c13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||65535===(65535&n)||65534===(65535&n)||n>1114111?"\ufffd":String.fromCharCode(n)}const $r=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function Yr(e,t,n){if(t)return t;if(35===n.charCodeAt(0)){const e=n.charCodeAt(1),t=120===e||88===e;return Kr(n.slice(t?2:1),t?16:10)}return br(n)||e}const Xr={}.hasOwnProperty,Qr=function(e,t,n){return"string"!==typeof t&&(n=t,t=void 0),function(e){const t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:s(ne),autolinkProtocol:_,autolinkEmail:_,atxHeading:s(J),blockQuote:s(K),characterEscape:_,characterReference:_,codeFenced:s($),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:s($,l),codeText:s(Y,l),codeTextData:_,data:_,codeFlowValue:_,definition:s(X),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:s(Q),hardBreakEscape:s(Z),hardBreakTrailing:s(Z),htmlFlow:s(ee,l),htmlFlowData:_,htmlText:s(ee,l),htmlTextData:_,image:s(te),label:l,link:s(ne),listItem:s(oe),listItemValue:f,listOrdered:s(re,h),listUnordered:s(re),paragraph:s(ae),reference:W,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:s(J),strong:s(ie),thematicBreak:s(le)},exit:{atxHeading:c(),atxHeadingSequence:k,autolink:c(),autolinkEmail:q,autolinkProtocol:G,blockQuote:c(),characterEscapeValue:C,characterReferenceMarkerHexadecimal:V,characterReferenceMarkerNumeric:V,characterReferenceValue:H,codeFenced:c(y),codeFencedFence:v,codeFencedFenceInfo:m,codeFencedFenceMeta:g,codeFlowValue:C,codeIndented:c(b),codeText:c(I),codeTextData:C,data:C,definition:c(),definitionDestinationString:D,definitionLabelString:x,definitionTitleString:A,emphasis:c(),hardBreakEscape:c(T),hardBreakTrailing:c(T),htmlFlow:c(j),htmlFlowData:C,htmlText:c(z),htmlTextData:C,image:c(P),label:N,labelText:R,lineEnding:F,link:c(L),listItem:c(),listOrdered:c(),listUnordered:c(),paragraph:c(),referenceString:U,resourceDestinationString:O,resourceTitleString:B,resource:M,setextHeading:c(E),setextHeadingLineSequence:S,setextHeadingText:w,strong:c(),thematicBreak:c()}};Zr(t,(e||{}).mdastExtensions||[]);const n={};return r;function r(e){let n={type:"root",children:[]};const r={stack:[n],tokenStack:[],config:t,enter:u,exit:d,buffer:l,resume:p,setData:a,getData:i},s=[];let c=-1;for(;++c0){const e=r.tokenStack[r.tokenStack.length-1];(e[1]||to).call(r,void 0,e[0])}for(n.position={start:Jr(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:Jr(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},c=-1;++c{const n=this.data("settings");return Qr(t,Object.assign({},n,e,{extensions:this.data("micromarkExtensions")||[],mdastExtensions:this.data("fromMarkdownExtensions")||[]}))}})}function ro(e){const t=[];let n=-1,r=0,o=0;for(;++n55295&&a<57344){const t=e.charCodeAt(n+1);a<56320&&t>56319&&t<57344?(i=String.fromCharCode(a,t),o=1):i="\ufffd"}else i=String.fromCharCode(a);i&&(t.push(e.slice(r,n),encodeURIComponent(i)),r=n+o+1,i=""),o&&(n+=o,o=0)}return t.join("")+e.slice(r)}const oo=function(e){if(void 0===e||null===e)return io;if("string"===typeof e)return function(e){return ao(t);function t(t){return t&&t.type===e}}(e);if("object"===typeof e)return Array.isArray(e)?function(e){const t=[];let n=-1;for(;++n1?n-1:0),o=1;o":"")+")"})}return c;function c(){let u,c,d,p=[];if((!t||o(i,s,l[l.length-1]||null))&&(p=function(e){if(Array.isArray(e))return e;if("number"===typeof e)return[so,e];return[e]}(n(i,l)),p[0]===lo))return p;if(i.children&&"skip"!==p[0])for(c=(r?i.children.length:-1)+a,d=l.concat(i);c>-1&&c-1?n.offset:null}}}const mo={}.hasOwnProperty;function go(e){return String(e||"").toUpperCase()}function vo(e,t){const n=String(t.identifier).toUpperCase(),r=ro(n.toLowerCase()),o=e.footnoteOrder.indexOf(n);let a;-1===o?(e.footnoteOrder.push(n),e.footnoteCounts[n]=1,a=e.footnoteOrder.length):(e.footnoteCounts[n]++,a=o+1);const i=e.footnoteCounts[n],s={type:"element",tagName:"a",properties:{href:"#"+e.clobberPrefix+"fn-"+r,id:e.clobberPrefix+"fnref-"+r+(i>1?"-"+i:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(a)}]};e.patch(t,s);const l={type:"element",tagName:"sup",properties:{},children:[s]};return e.patch(t,l),e.applyData(t,l)}function yo(e,t){const n=t.referenceType;let r="]";if("collapsed"===n?r+="[]":"full"===n&&(r+="["+(t.label||t.identifier)+"]"),"imageReference"===t.type)return{type:"text",value:"!["+t.alt+r};const o=e.all(t),a=o[0];a&&"text"===a.type?a.value="["+a.value:o.unshift({type:"text",value:"["});const i=o[o.length-1];return i&&"text"===i.type?i.value+=r:o.push({type:"text",value:r}),o}function bo(e){const t=e.spread;return void 0===t||null===t?e.children.length>1:t}function xo(e){const t=String(e),n=/\r?\n|\r/g;let r=n.exec(t),o=0;const a=[];for(;r;)a.push(Ao(t.slice(o,r.index),o>0,!0),r[0]),o=r.index+r[0].length,r=n.exec(t);return a.push(Ao(t.slice(o),o>0,!1)),a.join("")}function Ao(e,t,n){let r=0,o=e.length;if(t){let t=e.codePointAt(r);for(;9===t||32===t;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(o-1);for(;9===t||32===t;)o--,t=e.codePointAt(o-1)}return o>r?e.slice(r,o):""}const Do={blockquote:function(e,t){const n={type:"element",tagName:"blockquote",properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)},break:function(e,t){const n={type:"element",tagName:"br",properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:"text",value:"\n"}]},code:function(e,t){const n=t.value?t.value+"\n":"",r=t.lang?t.lang.match(/^[^ \t]+(?=[ \t]|$)/):null,o={};r&&(o.className=["language-"+r]);let a={type:"element",tagName:"code",properties:o,children:[{type:"text",value:n}]};return t.meta&&(a.data={meta:t.meta}),e.patch(t,a),a=e.applyData(t,a),a={type:"element",tagName:"pre",properties:{},children:[a]},e.patch(t,a),a},delete:function(e,t){const n={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},emphasis:function(e,t){const n={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},footnoteReference:vo,footnote:function(e,t){const n=e.footnoteById;let r=1;for(;r in n;)r++;const o=String(r);return n[o]={type:"footnoteDefinition",identifier:o,children:[{type:"paragraph",children:t.children}],position:t.position},vo(e,{type:"footnoteReference",identifier:o,position:t.position})},heading:function(e,t){const n={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},html:function(e,t){if(e.dangerous){const n={type:"raw",value:t.value};return e.patch(t,n),e.applyData(t,n)}return null},imageReference:function(e,t){const n=e.definition(t.identifier);if(!n)return yo(e,t);const r={src:ro(n.url||""),alt:t.alt};null!==n.title&&void 0!==n.title&&(r.title=n.title);const o={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,o),e.applyData(t,o)},image:function(e,t){const n={src:ro(t.url)};null!==t.alt&&void 0!==t.alt&&(n.alt=t.alt),null!==t.title&&void 0!==t.title&&(n.title=t.title);const r={type:"element",tagName:"img",properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)},inlineCode:function(e,t){const n={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)},linkReference:function(e,t){const n=e.definition(t.identifier);if(!n)return yo(e,t);const r={href:ro(n.url||"")};null!==n.title&&void 0!==n.title&&(r.title=n.title);const o={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,o),e.applyData(t,o)},link:function(e,t){const n={href:ro(t.url)};null!==t.title&&void 0!==t.title&&(n.title=t.title);const r={type:"element",tagName:"a",properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)},listItem:function(e,t,n){const r=e.all(t),o=n?function(e){let t=!1;if("list"===e.type){t=e.spread||!1;const n=e.children;let r=-1;for(;!t&&++r0&&n.children.unshift({type:"text",value:" "}),n.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),a.className=["task-list-item"]}let s=-1;for(;++s0){const r={type:"element",tagName:"tbody",properties:{},children:e.wrap(n,!0)},a=po(t.children[1]),i=ho(t.children[t.children.length-1]);a.line&&i.line&&(r.position={start:a,end:i}),o.push(r)}const a={type:"element",tagName:"table",properties:{},children:e.wrap(o,!0)};return e.patch(t,a),e.applyData(t,a)},tableCell:function(e,t){const n={type:"element",tagName:"td",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},tableRow:function(e,t,n){const r=n?n.children:void 0,o=0===(r?r.indexOf(t):1)?"th":"td",a=n&&"table"===n.type?n.align:void 0,i=a?a.length:t.children.length;let s=-1;const l=[];for(;++s{const n=go(e.identifier);n&&!mo.call(t,n)&&(t[n]=e)}),function(e){const n=go(e);return n&&mo.call(t,n)?t[n]:null}}(e),i.footnoteById=o,i.footnoteOrder=[],i.footnoteCounts={},i.patch=Eo,i.applyData=_o,i.one=function(e,t){return Co(i,e,t)},i.all=function(e){return Fo(i,e)},i.wrap=To,i.augment=a,co(e,"footnoteDefinition",e=>{const t=String(e.identifier).toUpperCase();wo.call(o,t)||(o[t]=e)}),i;function a(e,t){if(e&&"data"in e&&e.data){const n=e.data;n.hName&&("element"!==t.type&&(t={type:"element",tagName:"",properties:{},children:[]}),t.tagName=n.hName),"element"===t.type&&n.hProperties&&(t.properties=(0,It.A)((0,It.A)({},t.properties),n.hProperties)),"children"in t&&t.children&&n.hChildren&&(t.children=n.hChildren)}if(e){const n="type"in e?e:{position:e};(function(e){return!e||!e.position||!e.position.start||!e.position.start.line||!e.position.start.column||!e.position.end||!e.position.end.line||!e.position.end.column})(n)||(t.position={start:po(n),end:ho(n)})}return t}function i(e,t,n,r){return Array.isArray(n)&&(r=n,n={}),a(e,{type:"element",tagName:t,properties:n||{},children:r||[]})}}function Eo(e,t){e.position&&(t.position=function(e){return{start:po(e),end:ho(e)}}(e))}function _o(e,t){let n=t;if(e&&e.data){const t=e.data.hName,r=e.data.hChildren,o=e.data.hProperties;"string"===typeof t&&("element"===n.type?n.tagName=t:n={type:"element",tagName:t,properties:{},children:[]}),"element"===n.type&&o&&(n.properties=(0,It.A)((0,It.A)({},n.properties),o)),"children"in n&&n.children&&null!==r&&void 0!==r&&(n.children=r)}return n}function Co(e,t,n){const r=t&&t.type;if(!r)throw new Error("Expected node, got `"+t+"`");return wo.call(e.handlers,r)?e.handlers[r](e,t,n):e.passThrough&&e.passThrough.includes(r)?"children"in t?(0,It.A)((0,It.A)({},t),{},{children:Fo(e,t)}):t:e.unknownHandler?e.unknownHandler(e,t,n):function(e,t){const n=t.data||{},r=!("value"in t)||wo.call(n,"hProperties")||wo.call(n,"hChildren")?{type:"element",tagName:"div",properties:{},children:Fo(e,t)}:{type:"text",value:t.value};return e.patch(t,r),e.applyData(t,r)}(e,t)}function Fo(e,t){const n=[];if("children"in t){const r=t.children;let o=-1;for(;++o0&&n.push({type:"text",value:"\n"}),n}function jo(e,t){const n=So(e,t),r=n.one(e,null),o=function(e){const t=[];let n=-1;for(;++n1?"-"+s:""),dataFootnoteBackref:!0,className:["data-footnote-backref"],ariaLabel:e.footnoteBackLabel},children:[{type:"text",value:"\u21a9"}]};s>1&&t.children.push({type:"element",tagName:"sup",children:[{type:"text",value:String(s)}]}),l.length>0&&l.push({type:"text",value:" "}),l.push(t)}const u=o[o.length-1];if(u&&"element"===u.type&&"p"===u.tagName){const e=u.children[u.children.length-1];e&&"text"===e.type?e.value+=" ":u.children.push({type:"text",value:" "}),u.children.push(...l)}else o.push(...l);const c={type:"element",tagName:"li",properties:{id:e.clobberPrefix+"fn-"+i},children:e.wrap(o,!0)};e.patch(r,c),t.push(c)}if(0!==t.length)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:e.footnoteLabelTagName,properties:(0,It.A)((0,It.A)({},JSON.parse(JSON.stringify(e.footnoteLabelProperties))),{},{id:"footnote-label"}),children:[{type:"text",value:e.footnoteLabel}]},{type:"text",value:"\n"},{type:"element",tagName:"ol",properties:{},children:e.wrap(t,!0)},{type:"text",value:"\n"}]}}(n);return o&&r.children.push({type:"text",value:"\n"},o),Array.isArray(r)?{type:"root",children:r}:r}const zo=function(e,t){return e&&"run"in e?function(e,t){return(n,r,o)=>{e.run(jo(n,t),r,e=>{o(e)})}}(e,t):function(e){return t=>jo(t,e)}(e||t)};var Io=n(8379);class Lo{constructor(e,t,n){this.property=e,this.normal=t,n&&(this.space=n)}}function Po(e,t){const n={},r={};let o=-1;for(;++o"xlink:"+t.slice(5).toLowerCase(),properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null}}),Zo=Qo({space:"xml",transform:(e,t)=>"xml:"+t.slice(3).toLowerCase(),properties:{xmlLang:null,xmlBase:null,xmlSpace:null}});function ea(e,t){return t in e?e[t]:t}function ta(e,t){return ea(e,t.toLowerCase())}const na=Qo({space:"xmlns",attributes:{xmlnsxlink:"xmlns:xlink"},transform:ta,properties:{xmlns:null,xmlnsXLink:null}}),ra=Qo({transform:(e,t)=>"role"===t?t:"aria-"+t.slice(4).toLowerCase(),properties:{ariaActiveDescendant:null,ariaAtomic:Mo,ariaAutoComplete:null,ariaBusy:Mo,ariaChecked:Mo,ariaColCount:Uo,ariaColIndex:Uo,ariaColSpan:Uo,ariaControls:Vo,ariaCurrent:null,ariaDescribedBy:Vo,ariaDetails:null,ariaDisabled:Mo,ariaDropEffect:Vo,ariaErrorMessage:null,ariaExpanded:Mo,ariaFlowTo:Vo,ariaGrabbed:Mo,ariaHasPopup:null,ariaHidden:Mo,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:Vo,ariaLevel:Uo,ariaLive:null,ariaModal:Mo,ariaMultiLine:Mo,ariaMultiSelectable:Mo,ariaOrientation:null,ariaOwns:Vo,ariaPlaceholder:null,ariaPosInSet:Uo,ariaPressed:Mo,ariaReadOnly:Mo,ariaRelevant:null,ariaRequired:Mo,ariaRoleDescription:Vo,ariaRowCount:Uo,ariaRowIndex:Uo,ariaRowSpan:Uo,ariaSelected:Mo,ariaSetSize:Uo,ariaSort:null,ariaValueMax:Uo,ariaValueMin:Uo,ariaValueNow:Uo,ariaValueText:null,role:null}}),oa=Qo({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:ta,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:Ho,acceptCharset:Vo,accessKey:Vo,action:null,allow:null,allowFullScreen:Bo,allowPaymentRequest:Bo,allowUserMedia:Bo,alt:null,as:null,async:Bo,autoCapitalize:null,autoComplete:Vo,autoFocus:Bo,autoPlay:Bo,blocking:Vo,capture:null,charSet:null,checked:Bo,cite:null,className:Vo,cols:Uo,colSpan:null,content:null,contentEditable:Mo,controls:Bo,controlsList:Vo,coords:Uo|Ho,crossOrigin:null,data:null,dateTime:null,decoding:null,default:Bo,defer:Bo,dir:null,dirName:null,disabled:Bo,download:Wo,draggable:Mo,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:Bo,formTarget:null,headers:Vo,height:Uo,hidden:Bo,high:Uo,href:null,hrefLang:null,htmlFor:Vo,httpEquiv:Vo,id:null,imageSizes:null,imageSrcSet:null,inert:Bo,inputMode:null,integrity:null,is:null,isMap:Bo,itemId:null,itemProp:Vo,itemRef:Vo,itemScope:Bo,itemType:Vo,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:Bo,low:Uo,manifest:null,max:null,maxLength:Uo,media:null,method:null,min:null,minLength:Uo,multiple:Bo,muted:Bo,name:null,nonce:null,noModule:Bo,noValidate:Bo,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:Bo,optimum:Uo,pattern:null,ping:Vo,placeholder:null,playsInline:Bo,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:Bo,referrerPolicy:null,rel:Vo,required:Bo,reversed:Bo,rows:Uo,rowSpan:Uo,sandbox:Vo,scope:null,scoped:Bo,seamless:Bo,selected:Bo,shadowRootClonable:Bo,shadowRootDelegatesFocus:Bo,shadowRootMode:null,shape:null,size:Uo,sizes:null,slot:null,span:Uo,spellCheck:Mo,src:null,srcDoc:null,srcLang:null,srcSet:null,start:Uo,step:null,style:null,tabIndex:Uo,target:null,title:null,translate:null,type:null,typeMustMatch:Bo,useMap:null,value:Mo,width:Uo,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:Vo,axis:null,background:null,bgColor:null,border:Uo,borderColor:null,bottomMargin:Uo,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:Bo,declare:Bo,event:null,face:null,frame:null,frameBorder:null,hSpace:Uo,leftMargin:Uo,link:null,longDesc:null,lowSrc:null,marginHeight:Uo,marginWidth:Uo,noResize:Bo,noHref:Bo,noShade:Bo,noWrap:Bo,object:null,profile:null,prompt:null,rev:null,rightMargin:Uo,rules:null,scheme:null,scrolling:Mo,standby:null,summary:null,text:null,topMargin:Uo,valueType:null,version:null,vAlign:null,vLink:null,vSpace:Uo,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:Bo,disableRemotePlayback:Bo,prefix:null,property:null,results:Uo,security:null,unselectable:null}}),aa=Qo({space:"svg",attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},transform:ea,properties:{about:Go,accentHeight:Uo,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:Uo,amplitude:Uo,arabicForm:null,ascent:Uo,attributeName:null,attributeType:null,azimuth:Uo,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:Uo,by:null,calcMode:null,capHeight:Uo,className:Vo,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:Uo,diffuseConstant:Uo,direction:null,display:null,dur:null,divisor:Uo,dominantBaseline:null,download:Bo,dx:null,dy:null,edgeMode:null,editable:null,elevation:Uo,enableBackground:null,end:null,event:null,exponent:Uo,externalResourcesRequired:null,fill:null,fillOpacity:Uo,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:Ho,g2:Ho,glyphName:Ho,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:Uo,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:Uo,horizOriginX:Uo,horizOriginY:Uo,id:null,ideographic:Uo,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:Uo,k:Uo,k1:Uo,k2:Uo,k3:Uo,k4:Uo,kernelMatrix:Go,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:Uo,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:Uo,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:Uo,overlineThickness:Uo,paintOrder:null,panose1:null,path:null,pathLength:Uo,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:Vo,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:Uo,pointsAtY:Uo,pointsAtZ:Uo,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:Go,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:Go,rev:Go,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:Go,requiredFeatures:Go,requiredFonts:Go,requiredFormats:Go,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:Uo,specularExponent:Uo,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:Uo,strikethroughThickness:Uo,string:null,stroke:null,strokeDashArray:Go,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:Uo,strokeOpacity:Uo,strokeWidth:null,style:null,surfaceScale:Uo,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:Go,tabIndex:Uo,tableValues:null,target:null,targetX:Uo,targetY:Uo,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:Go,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:Uo,underlineThickness:Uo,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:Uo,values:null,vAlphabetic:Uo,vMathematical:Uo,vectorEffect:null,vHanging:Uo,vIdeographic:Uo,version:null,vertAdvY:Uo,vertOriginX:Uo,vertOriginY:Uo,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:Uo,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null}}),ia=Po([Zo,Jo,na,ra,oa],"html"),sa=Po([Zo,Jo,na,ra,aa],"svg");function la(e){if(e.allowedElements&&e.disallowedElements)throw new TypeError("Only one of `allowedElements` and `disallowedElements` should be defined");if(e.allowedElements||e.disallowedElements||e.allowElement)return t=>{co(t,"element",(t,n,r)=>{const o=r;let a;if(e.allowedElements?a=!e.allowedElements.includes(t.tagName):e.disallowedElements&&(a=e.disallowedElements.includes(t.tagName)),!a&&e.allowElement&&"number"===typeof n&&(a=!e.allowElement(t,n,o)),a&&"number"===typeof n)return e.unwrapDisallowed&&t.children?o.children.splice(n,1,...t.children):o.children.splice(n,1),n})}}var ua=n(6851);function ca(e){const t=e&&"object"===typeof e&&"text"===e.type?e.value||"":e;return"string"===typeof t&&""===t.replace(/[ \t\n\f\r]/g,"")}const da=/^data[-\w.:]+$/i,pa=/-[a-z]/g,ha=/[A-Z]/g;function fa(e){return"-"+e.toLowerCase()}function ma(e){return e.charAt(1).toUpperCase()}const ga={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"};const va=n(7922),ya=["http","https","mailto","tel"];function ba(e){const t=(e||"").trim(),n=t.charAt(0);if("#"===n||"/"===n)return t;const r=t.indexOf(":");if(-1===r)return t;let o=-1;for(;++oo?t:(o=t.indexOf("#"),-1!==o&&r>o?t:"javascript:void(0)")}const xa={}.hasOwnProperty,Aa=new Set(["table","thead","tbody","tfoot","tr"]);function Da(e,t){const n=[];let r,o=-1;for(;++o0?a.createElement(f,u,p):a.createElement(f,u)}function wa(e,t){let n=-1,r=0;for(;++n4&&"data"===n.slice(0,4)&&da.test(t)){if("-"===t.charAt(4)){const e=t.slice(5).replace(pa,ma);r="data"+e.charAt(0).toUpperCase()+e.slice(1)}else{const e=t.slice(4);if(!pa.test(e)){let n=e.replace(ha,fa);"-"!==n.charAt(0)&&(n="-"+n),t="data"+n}}o=$o}return new o(r,t)}(r.schema,t);let a=n;null!==a&&void 0!==a&&a===a&&(Array.isArray(a)&&(a=o.commaSeparated?function(e,t){const n=t||{};return(""===e[e.length-1]?[...e,""]:e).join((n.padRight?" ":"")+","+(!1===n.padLeft?"":" ")).trim()}(a):function(e){return e.join(" ").trim()}(a)),"style"===o.property&&"string"===typeof a&&(a=function(e){const t={};try{va(e,n)}catch(r){}return t;function n(e,n){const r="-ms-"===e.slice(0,4)?"ms-".concat(e.slice(4)):e;t[r.replace(/-([a-z])/g,Ea)]=n}}(a)),o.space&&o.property?e[xa.call(ga,o.property)?ga[o.property]:o.property]=a:o.attribute&&(e[o.attribute]=a))}function Ea(e,t){return t.toUpperCase()}const _a={}.hasOwnProperty,Ca={plugins:{to:"remarkPlugins",id:"change-plugins-to-remarkplugins"},renderers:{to:"components",id:"change-renderers-to-components"},astPlugins:{id:"remove-buggy-html-in-markdown-parser"},allowDangerousHtml:{id:"remove-buggy-html-in-markdown-parser"},escapeHtml:{id:"remove-buggy-html-in-markdown-parser"},source:{to:"children",id:"change-source-to-children"},allowNode:{to:"allowElement",id:"replace-allownode-allowedtypes-and-disallowedtypes"},allowedTypes:{to:"allowedElements",id:"replace-allownode-allowedtypes-and-disallowedtypes"},disallowedTypes:{to:"disallowedElements",id:"replace-allownode-allowedtypes-and-disallowedtypes"},includeNodeIndex:{to:"includeElementIndex",id:"change-includenodeindex-to-includeelementindex"}};function Fa(e){for(const a in Ca)if(_a.call(Ca,a)&&_a.call(e,a)){const e=Ca[a];console.warn("[react-markdown] Warning: please ".concat(e.to?"use `".concat(e.to,"` instead of"):"remove"," `").concat(a,"` (see <").concat("https://github.com/remarkjs/react-markdown/blob/main/changelog.md","#").concat(e.id,"> for more info)")),delete Ca[a]}const t=en().use(no).use(e.remarkPlugins||[]).use(zo,(0,It.A)((0,It.A)({},e.remarkRehypeOptions),{},{allowDangerousHtml:!0})).use(e.rehypePlugins||[]).use(la,e),n=new qt;"string"===typeof e.children?n.value=e.children:void 0!==e.children&&null!==e.children&&console.warn("[react-markdown] Warning: please pass a string as `children` (not: `".concat(e.children,"`)"));const r=t.runSync(t.parse(n),n);if("root"!==r.type)throw new TypeError("Expected a `root` node");let o=a.createElement(a.Fragment,{},Da({options:e,schema:ia,listDepth:0},r));return e.className&&(o=a.createElement("div",{className:e.className},o)),o}Fa.propTypes={children:Io.string,className:Io.string,allowElement:Io.func,allowedElements:Io.arrayOf(Io.string),disallowedElements:Io.arrayOf(Io.string),unwrapDisallowed:Io.bool,remarkPlugins:Io.arrayOf(Io.oneOfType([Io.object,Io.func,Io.arrayOf(Io.oneOfType([Io.bool,Io.string,Io.object,Io.func,Io.arrayOf(Io.any)]))])),rehypePlugins:Io.arrayOf(Io.oneOfType([Io.object,Io.func,Io.arrayOf(Io.oneOfType([Io.bool,Io.string,Io.object,Io.func,Io.arrayOf(Io.any)]))])),sourcePos:Io.bool,rawSourcePos:Io.bool,skipHtml:Io.bool,includeElementIndex:Io.bool,transformLinkUri:Io.oneOfType([Io.func,Io.bool]),linkTarget:Io.oneOfType([Io.func,Io.string]),transformImageUri:Io.func,components:Io.object};var Ta=n(7197),ja=n(1683);const za=function(e){return"string"===typeof e};const Ia=function(e,t,n){return void 0===e||za(e)?t:(0,We.A)({},t,{ownerState:(0,We.A)({},t.ownerState,n)})};const La=function(e,t,n){return"function"===typeof e?e(t,n):e};const Pa=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(void 0===e)return{};const n={};return Object.keys(e).filter(n=>n.match(/^on[A-Z]/)&&"function"===typeof e[n]&&!t.includes(n)).forEach(t=>{n[t]=e[t]}),n};const Ra=function(e){if(void 0===e)return{};const t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"===typeof e[t])).forEach(n=>{t[n]=e[n]}),t};const Na=function(e){const{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:o,className:a}=e;if(!t){const e=(0,Ve.A)(null==n?void 0:n.className,a,null==o?void 0:o.className,null==r?void 0:r.className),t=(0,We.A)({},null==n?void 0:n.style,null==o?void 0:o.style,null==r?void 0:r.style),i=(0,We.A)({},n,o,r);return e.length>0&&(i.className=e),Object.keys(t).length>0&&(i.style=t),{props:i,internalRef:void 0}}const i=Pa((0,We.A)({},o,r)),s=Ra(r),l=Ra(o),u=t(i),c=(0,Ve.A)(null==u?void 0:u.className,null==n?void 0:n.className,a,null==o?void 0:o.className,null==r?void 0:r.className),d=(0,We.A)({},null==u?void 0:u.style,null==n?void 0:n.style,null==o?void 0:o.style,null==r?void 0:r.style),p=(0,We.A)({},u,n,l,s);return c.length>0&&(p.className=c),Object.keys(d).length>0&&(p.style=d),{props:p,internalRef:u.ref}},Oa=["className","elementType","ownerState","externalForwardedProps","getSlotOwnerState","internalForwardedProps"],Ba=["component","slots","slotProps"],Ma=["component"];function Wa(e,t){const{className:n,elementType:r,ownerState:o,externalForwardedProps:a,getSlotOwnerState:i,internalForwardedProps:s}=t,l=(0,Ue.A)(t,Oa),{component:u,slots:c={[e]:void 0},slotProps:d={[e]:void 0}}=a,p=(0,Ue.A)(a,Ba),h=c[e]||r,f=La(d[e],o),m=Na((0,We.A)({className:n},l,{externalForwardedProps:"root"===e?p:void 0,externalSlotProps:f})),{props:{component:g},internalRef:v}=m,y=(0,Ue.A)(m.props,Ma),b=(0,ja.A)(v,null==f?void 0:f.ref,t.ref),x=i?i(y):{},A=(0,We.A)({},o,x),D="root"===e?g||u:g,k=Ia(h,(0,We.A)({},"root"===e&&!u&&!c[e]&&s,"root"!==e&&!c[e]&&s,y,D&&{as:D},{ref:b}),A);return Object.keys(x).forEach(e=>{delete k[e]}),[h,k]}const Ua=e=>{let t;return t=e<1?5.11916*e**2:4.5*Math.log(e+1)+2,(t/100).toFixed(2)};function Va(e){return(0,ft.Ay)("MuiPaper",e)}(0,rt.A)("MuiPaper",["root","rounded","outlined","elevation","elevation0","elevation1","elevation2","elevation3","elevation4","elevation5","elevation6","elevation7","elevation8","elevation9","elevation10","elevation11","elevation12","elevation13","elevation14","elevation15","elevation16","elevation17","elevation18","elevation19","elevation20","elevation21","elevation22","elevation23","elevation24"]);const Ha=["className","component","elevation","square","variant"],Ga=(0,ht.Ay)("div",{name:"MuiPaper",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],!n.square&&t.rounded,"elevation"===n.variant&&t["elevation".concat(n.elevation)]]}})(e=>{let{theme:t,ownerState:n}=e;var r;return(0,We.A)({backgroundColor:(t.vars||t).palette.background.paper,color:(t.vars||t).palette.text.primary,transition:t.transitions.create("box-shadow")},!n.square&&{borderRadius:t.shape.borderRadius},"outlined"===n.variant&&{border:"1px solid ".concat((t.vars||t).palette.divider)},"elevation"===n.variant&&(0,We.A)({boxShadow:(t.vars||t).shadows[n.elevation]},!t.vars&&"dark"===t.palette.mode&&{backgroundImage:"linear-gradient(".concat((0,Ta.X4)("#fff",Ua(n.elevation)),", ").concat((0,Ta.X4)("#fff",Ua(n.elevation)),")")},t.vars&&{backgroundImage:null==(r=t.vars.overlays)?void 0:r[n.elevation]}))}),qa=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiPaper"}),{className:r,component:o="div",elevation:a=1,square:i=!1,variant:s="elevation"}=n,l=(0,Ue.A)(n,Ha),u=(0,We.A)({},n,{component:o,elevation:a,square:i,variant:s}),c=(e=>{const{square:t,elevation:n,variant:r,classes:o}=e,a={root:["root",r,!t&&"rounded","elevation"===r&&"elevation".concat(n)]};return(0,ut.A)(a,Va,o)})(u);return(0,Je.jsx)(Ga,(0,We.A)({as:o,ownerState:u,className:(0,Ve.A)(c.root,r),ref:t},l))});function Ka(e){return(0,ft.Ay)("MuiAlert",e)}const $a=(0,rt.A)("MuiAlert",["root","action","icon","message","filled","colorSuccess","colorInfo","colorWarning","colorError","filledSuccess","filledInfo","filledWarning","filledError","outlined","outlinedSuccess","outlinedInfo","outlinedWarning","outlinedError","standard","standardSuccess","standardInfo","standardWarning","standardError"]);var Ya=n(2513),Xa=n(5471),Qa=n(4188);function Ja(e,t){return Ja=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},Ja(e,t)}function Za(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,Ja(e,t)}const ei=a.createContext(null);function ti(e,t){var n=Object.create(null);return e&&a.Children.map(e,function(e){return e}).forEach(function(e){n[e.key]=function(e){return t&&(0,a.isValidElement)(e)?t(e):e}(e)}),n}function ni(e,t,n){return null!=n[t]?n[t]:e.props[t]}function ri(e,t,n){var r=ti(e.children),o=function(e,t){function n(n){return n in t?t[n]:e[n]}e=e||{},t=t||{};var r,o=Object.create(null),a=[];for(var i in e)i in t?a.length&&(o[i]=a,a=[]):a.push(i);var s={};for(var l in t){if(o[l])for(r=0;r{if(!l&&null!=u){const e=setTimeout(u,c);return()=>{clearTimeout(e)}}},[u,l,c]),(0,Je.jsx)("span",{className:h,style:f,children:(0,Je.jsx)("span",{className:m})})};const ui=(0,rt.A)("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]);var ci,di,pi,hi;const fi=["center","classes","className"];let mi,gi,vi,yi;const bi=(0,ct.i7)(mi||(mi=ci||(ci=lt(["\n 0% {\n transform: scale(0);\n opacity: 0.1;\n }\n\n 100% {\n transform: scale(1);\n opacity: 0.3;\n }\n"])))),xi=(0,ct.i7)(gi||(gi=di||(di=lt(["\n 0% {\n opacity: 1;\n }\n\n 100% {\n opacity: 0;\n }\n"])))),Ai=(0,ct.i7)(vi||(vi=pi||(pi=lt(["\n 0% {\n transform: scale(1);\n }\n\n 50% {\n transform: scale(0.92);\n }\n\n 100% {\n transform: scale(1);\n }\n"])))),Di=(0,ht.Ay)("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),ki=(0,ht.Ay)(li,{name:"MuiTouchRipple",slot:"Ripple"})(yi||(yi=hi||(hi=lt(["\n opacity: 0;\n position: absolute;\n\n &."," {\n opacity: 0.3;\n transform: scale(1);\n animation-name: ",";\n animation-duration: ","ms;\n animation-timing-function: ",";\n }\n\n &."," {\n animation-duration: ","ms;\n }\n\n & ."," {\n opacity: 1;\n display: block;\n width: 100%;\n height: 100%;\n border-radius: 50%;\n background-color: currentColor;\n }\n\n & ."," {\n opacity: 0;\n animation-name: ",";\n animation-duration: ","ms;\n animation-timing-function: ",";\n }\n\n & ."," {\n position: absolute;\n /* @noflip */\n left: 0px;\n top: 0;\n animation-name: ",";\n animation-duration: 2500ms;\n animation-timing-function: ",";\n animation-iteration-count: infinite;\n animation-delay: 200ms;\n }\n"]))),ui.rippleVisible,bi,550,e=>{let{theme:t}=e;return t.transitions.easing.easeInOut},ui.ripplePulsate,e=>{let{theme:t}=e;return t.transitions.duration.shorter},ui.child,ui.childLeaving,xi,550,e=>{let{theme:t}=e;return t.transitions.easing.easeInOut},ui.childPulsate,Ai,e=>{let{theme:t}=e;return t.transitions.easing.easeInOut}),wi=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiTouchRipple"}),{center:r=!1,classes:o={},className:i}=n,s=(0,Ue.A)(n,fi),[l,u]=a.useState([]),c=a.useRef(0),d=a.useRef(null);a.useEffect(()=>{d.current&&(d.current(),d.current=null)},[l]);const p=a.useRef(!1),h=(0,si.A)(),f=a.useRef(null),m=a.useRef(null),g=a.useCallback(e=>{const{pulsate:t,rippleX:n,rippleY:r,rippleSize:a,cb:i}=e;u(e=>[...e,(0,Je.jsx)(ki,{classes:{ripple:(0,Ve.A)(o.ripple,ui.ripple),rippleVisible:(0,Ve.A)(o.rippleVisible,ui.rippleVisible),ripplePulsate:(0,Ve.A)(o.ripplePulsate,ui.ripplePulsate),child:(0,Ve.A)(o.child,ui.child),childLeaving:(0,Ve.A)(o.childLeaving,ui.childLeaving),childPulsate:(0,Ve.A)(o.childPulsate,ui.childPulsate)},timeout:550,pulsate:t,rippleX:n,rippleY:r,rippleSize:a},c.current)]),c.current+=1,d.current=i},[o]),v=a.useCallback(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:()=>{};const{pulsate:o=!1,center:a=r||t.pulsate,fakeElement:i=!1}=t;if("mousedown"===(null==e?void 0:e.type)&&p.current)return void(p.current=!1);"touchstart"===(null==e?void 0:e.type)&&(p.current=!0);const s=i?null:m.current,l=s?s.getBoundingClientRect():{width:0,height:0,left:0,top:0};let u,c,d;if(a||void 0===e||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)u=Math.round(l.width/2),c=Math.round(l.height/2);else{const{clientX:t,clientY:n}=e.touches&&e.touches.length>0?e.touches[0]:e;u=Math.round(t-l.left),c=Math.round(n-l.top)}if(a)d=Math.sqrt((2*l.width**2+l.height**2)/3),d%2===0&&(d+=1);else{const e=2*Math.max(Math.abs((s?s.clientWidth:0)-u),u)+2,t=2*Math.max(Math.abs((s?s.clientHeight:0)-c),c)+2;d=Math.sqrt(e**2+t**2)}null!=e&&e.touches?null===f.current&&(f.current=()=>{g({pulsate:o,rippleX:u,rippleY:c,rippleSize:d,cb:n})},h.start(80,()=>{f.current&&(f.current(),f.current=null)})):g({pulsate:o,rippleX:u,rippleY:c,rippleSize:d,cb:n})},[r,g,h]),y=a.useCallback(()=>{v({},{pulsate:!0})},[v]),b=a.useCallback((e,t)=>{if(h.clear(),"touchend"===(null==e?void 0:e.type)&&f.current)return f.current(),f.current=null,void h.start(0,()=>{b(e,t)});f.current=null,u(e=>e.length>0?e.slice(1):e),d.current=t},[h]);return a.useImperativeHandle(t,()=>({pulsate:y,start:v,stop:b}),[y,v,b]),(0,Je.jsx)(Di,(0,We.A)({className:(0,Ve.A)(ui.root,o.root,i),ref:m},s,{children:(0,Je.jsx)(ii,{component:null,exit:!0,children:l})}))}),Si=wi;function Ei(e){return(0,ft.Ay)("MuiButtonBase",e)}const _i=(0,rt.A)("MuiButtonBase",["root","disabled","focusVisible"]),Ci=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],Fi=(0,ht.Ay)("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},["&.".concat(_i.disabled)]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),Ti=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiButtonBase"}),{action:r,centerRipple:o=!1,children:i,className:s,component:l="button",disabled:u=!1,disableRipple:c=!1,disableTouchRipple:d=!1,focusRipple:p=!1,LinkComponent:h="a",onBlur:f,onClick:m,onContextMenu:g,onDragLeave:v,onFocus:y,onFocusVisible:b,onKeyDown:x,onKeyUp:A,onMouseDown:D,onMouseLeave:k,onMouseUp:w,onTouchEnd:S,onTouchMove:E,onTouchStart:_,tabIndex:C=0,TouchRippleProps:F,touchRippleRef:T,type:j}=n,z=(0,Ue.A)(n,Ci),I=a.useRef(null),L=a.useRef(null),P=(0,Ya.A)(L,T),{isFocusVisibleRef:R,onFocus:N,onBlur:O,ref:B}=(0,Qa.A)(),[M,W]=a.useState(!1);u&&M&&W(!1),a.useImperativeHandle(r,()=>({focusVisible:()=>{W(!0),I.current.focus()}}),[]);const[U,V]=a.useState(!1);a.useEffect(()=>{V(!0)},[]);const H=U&&!c&&!u;function G(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:d;return(0,Xa.A)(r=>{t&&t(r);return!n&&L.current&&L.current[e](r),!0})}a.useEffect(()=>{M&&p&&!c&&U&&L.current.pulsate()},[c,p,M,U]);const q=G("start",D),K=G("stop",g),$=G("stop",v),Y=G("stop",w),X=G("stop",e=>{M&&e.preventDefault(),k&&k(e)}),Q=G("start",_),J=G("stop",S),Z=G("stop",E),ee=G("stop",e=>{O(e),!1===R.current&&W(!1),f&&f(e)},!1),te=(0,Xa.A)(e=>{I.current||(I.current=e.currentTarget),N(e),!0===R.current&&(W(!0),b&&b(e)),y&&y(e)}),ne=()=>{const e=I.current;return l&&"button"!==l&&!("A"===e.tagName&&e.href)},re=a.useRef(!1),oe=(0,Xa.A)(e=>{p&&!re.current&&M&&L.current&&" "===e.key&&(re.current=!0,L.current.stop(e,()=>{L.current.start(e)})),e.target===e.currentTarget&&ne()&&" "===e.key&&e.preventDefault(),x&&x(e),e.target===e.currentTarget&&ne()&&"Enter"===e.key&&!u&&(e.preventDefault(),m&&m(e))}),ae=(0,Xa.A)(e=>{p&&" "===e.key&&L.current&&M&&!e.defaultPrevented&&(re.current=!1,L.current.stop(e,()=>{L.current.pulsate(e)})),A&&A(e),m&&e.target===e.currentTarget&&ne()&&" "===e.key&&!e.defaultPrevented&&m(e)});let ie=l;"button"===ie&&(z.href||z.to)&&(ie=h);const se={};"button"===ie?(se.type=void 0===j?"button":j,se.disabled=u):(z.href||z.to||(se.role="button"),u&&(se["aria-disabled"]=u));const le=(0,Ya.A)(t,B,I);const ue=(0,We.A)({},n,{centerRipple:o,component:l,disabled:u,disableRipple:c,disableTouchRipple:d,focusRipple:p,tabIndex:C,focusVisible:M}),ce=(e=>{const{disabled:t,focusVisible:n,focusVisibleClassName:r,classes:o}=e,a={root:["root",t&&"disabled",n&&"focusVisible"]},i=(0,ut.A)(a,Ei,o);return n&&r&&(i.root+=" ".concat(r)),i})(ue);return(0,Je.jsxs)(Fi,(0,We.A)({as:ie,className:(0,Ve.A)(ce.root,s),ownerState:ue,onBlur:ee,onClick:m,onContextMenu:K,onFocus:te,onKeyDown:oe,onKeyUp:ae,onMouseDown:q,onMouseLeave:X,onMouseUp:Y,onDragLeave:$,onTouchEnd:J,onTouchMove:Z,onTouchStart:Q,ref:le,tabIndex:u?-1:C,type:j},se,z,{children:[i,H?(0,Je.jsx)(Si,(0,We.A)({ref:P,center:o},F)):null]}))});function ji(e){return(0,ft.Ay)("MuiIconButton",e)}const zi=(0,rt.A)("MuiIconButton",["root","disabled","colorInherit","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","edgeStart","edgeEnd","sizeSmall","sizeMedium","sizeLarge"]),Ii=["edge","children","className","color","disabled","disableFocusRipple","size"],Li=(0,ht.Ay)(Ti,{name:"MuiIconButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"default"!==n.color&&t["color".concat((0,dt.A)(n.color))],n.edge&&t["edge".concat((0,dt.A)(n.edge))],t["size".concat((0,dt.A)(n.size))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({textAlign:"center",flex:"0 0 auto",fontSize:t.typography.pxToRem(24),padding:8,borderRadius:"50%",overflow:"visible",color:(t.vars||t).palette.action.active,transition:t.transitions.create("background-color",{duration:t.transitions.duration.shortest})},!n.disableRipple&&{"&:hover":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.action.activeChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Ta.X4)(t.palette.action.active,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"start"===n.edge&&{marginLeft:"small"===n.size?-3:-12},"end"===n.edge&&{marginRight:"small"===n.size?-3:-12})},e=>{let{theme:t,ownerState:n}=e;var r;const o=null==(r=(t.vars||t).palette)?void 0:r[n.color];return(0,We.A)({},"inherit"===n.color&&{color:"inherit"},"inherit"!==n.color&&"default"!==n.color&&(0,We.A)({color:null==o?void 0:o.main},!n.disableRipple&&{"&:hover":(0,We.A)({},o&&{backgroundColor:t.vars?"rgba(".concat(o.mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Ta.X4)(o.main,t.palette.action.hoverOpacity)},{"@media (hover: none)":{backgroundColor:"transparent"}})}),"small"===n.size&&{padding:5,fontSize:t.typography.pxToRem(18)},"large"===n.size&&{padding:12,fontSize:t.typography.pxToRem(28)},{["&.".concat(zi.disabled)]:{backgroundColor:"transparent",color:(t.vars||t).palette.action.disabled}})}),Pi=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiIconButton"}),{edge:r=!1,children:o,className:a,color:i="default",disabled:s=!1,disableFocusRipple:l=!1,size:u="medium"}=n,c=(0,Ue.A)(n,Ii),d=(0,We.A)({},n,{edge:r,color:i,disabled:s,disableFocusRipple:l,size:u}),p=(e=>{const{classes:t,disabled:n,color:r,edge:o,size:a}=e,i={root:["root",n&&"disabled","default"!==r&&"color".concat((0,dt.A)(r)),o&&"edge".concat((0,dt.A)(o)),"size".concat((0,dt.A)(a))]};return(0,ut.A)(i,ji,t)})(d);return(0,Je.jsx)(Li,(0,We.A)({className:(0,Ve.A)(p.root,a),centerRipple:!0,focusRipple:!l,disabled:s,ref:t},c,{ownerState:d,children:o}))}),Ri=Pi;var Ni=n(4270);const Oi=(0,Ni.A)((0,Je.jsx)("path",{d:"M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z"}),"SuccessOutlined"),Bi=(0,Ni.A)((0,Je.jsx)("path",{d:"M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z"}),"ReportProblemOutlined"),Mi=(0,Ni.A)((0,Je.jsx)("path",{d:"M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"ErrorOutline"),Wi=(0,Ni.A)((0,Je.jsx)("path",{d:"M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z"}),"InfoOutlined"),Ui=(0,Ni.A)((0,Je.jsx)("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"}),"Close"),Vi=["action","children","className","closeText","color","components","componentsProps","icon","iconMapping","onClose","role","severity","slotProps","slots","variant"],Hi=(0,ht.Ay)(qa,{name:"MuiAlert",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t["".concat(n.variant).concat((0,dt.A)(n.color||n.severity))]]}})(e=>{let{theme:t}=e;const n="light"===t.palette.mode?Ta.e$:Ta.a,r="light"===t.palette.mode?Ta.a:Ta.e$;return(0,We.A)({},t.typography.body2,{backgroundColor:"transparent",display:"flex",padding:"6px 16px",variants:[...Object.entries(t.palette).filter(e=>{let[,t]=e;return t.main&&t.light}).map(e=>{let[o]=e;return{props:{colorSeverity:o,variant:"standard"},style:{color:t.vars?t.vars.palette.Alert["".concat(o,"Color")]:n(t.palette[o].light,.6),backgroundColor:t.vars?t.vars.palette.Alert["".concat(o,"StandardBg")]:r(t.palette[o].light,.9),["& .".concat($a.icon)]:t.vars?{color:t.vars.palette.Alert["".concat(o,"IconColor")]}:{color:t.palette[o].main}}}}),...Object.entries(t.palette).filter(e=>{let[,t]=e;return t.main&&t.light}).map(e=>{let[r]=e;return{props:{colorSeverity:r,variant:"outlined"},style:{color:t.vars?t.vars.palette.Alert["".concat(r,"Color")]:n(t.palette[r].light,.6),border:"1px solid ".concat((t.vars||t).palette[r].light),["& .".concat($a.icon)]:t.vars?{color:t.vars.palette.Alert["".concat(r,"IconColor")]}:{color:t.palette[r].main}}}}),...Object.entries(t.palette).filter(e=>{let[,t]=e;return t.main&&t.dark}).map(e=>{let[n]=e;return{props:{colorSeverity:n,variant:"filled"},style:(0,We.A)({fontWeight:t.typography.fontWeightMedium},t.vars?{color:t.vars.palette.Alert["".concat(n,"FilledColor")],backgroundColor:t.vars.palette.Alert["".concat(n,"FilledBg")]}:{backgroundColor:"dark"===t.palette.mode?t.palette[n].dark:t.palette[n].main,color:t.palette.getContrastText(t.palette[n].main)})}})]})}),Gi=(0,ht.Ay)("div",{name:"MuiAlert",slot:"Icon",overridesResolver:(e,t)=>t.icon})({marginRight:12,padding:"7px 0",display:"flex",fontSize:22,opacity:.9}),qi=(0,ht.Ay)("div",{name:"MuiAlert",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0",minWidth:0,overflow:"auto"}),Ki=(0,ht.Ay)("div",{name:"MuiAlert",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"flex-start",padding:"4px 0 0 16px",marginLeft:"auto",marginRight:-8}),$i={success:(0,Je.jsx)(Oi,{fontSize:"inherit"}),warning:(0,Je.jsx)(Bi,{fontSize:"inherit"}),error:(0,Je.jsx)(Mi,{fontSize:"inherit"}),info:(0,Je.jsx)(Wi,{fontSize:"inherit"})},Yi=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiAlert"}),{action:r,children:o,className:a,closeText:i="Close",color:s,components:l={},componentsProps:u={},icon:c,iconMapping:d=$i,onClose:p,role:h="alert",severity:f="success",slotProps:m={},slots:g={},variant:v="standard"}=n,y=(0,Ue.A)(n,Vi),b=(0,We.A)({},n,{color:s,severity:f,variant:v,colorSeverity:s||f}),x=(e=>{const{variant:t,color:n,severity:r,classes:o}=e,a={root:["root","color".concat((0,dt.A)(n||r)),"".concat(t).concat((0,dt.A)(n||r)),"".concat(t)],icon:["icon"],message:["message"],action:["action"]};return(0,ut.A)(a,Ka,o)})(b),A={slots:(0,We.A)({closeButton:l.CloseButton,closeIcon:l.CloseIcon},g),slotProps:(0,We.A)({},u,m)},[D,k]=Wa("closeButton",{elementType:Ri,externalForwardedProps:A,ownerState:b}),[w,S]=Wa("closeIcon",{elementType:Ui,externalForwardedProps:A,ownerState:b});return(0,Je.jsxs)(Hi,(0,We.A)({role:h,elevation:0,ownerState:b,className:(0,Ve.A)(x.root,a),ref:t},y,{children:[!1!==c?(0,Je.jsx)(Gi,{ownerState:b,className:x.icon,children:c||d[f]||$i[f]}):null,(0,Je.jsx)(qi,{ownerState:b,className:x.message,children:o}),null!=r?(0,Je.jsx)(Ki,{ownerState:b,className:x.action,children:r}):null,null==r&&p?(0,Je.jsx)(Ki,{ownerState:b,className:x.action,children:(0,Je.jsx)(D,(0,We.A)({size:"small","aria-label":i,title:i,color:"inherit",onClick:p},k,{children:(0,Je.jsx)(w,(0,We.A)({fontSize:"small"},S))}))}):null]}))}),Xi=Yi;var Qi=n(7877),Ji=n(8930),Zi=n(4181),es=n(6639);const ts="%[a-f0-9]{2}",ns=new RegExp("("+ts+")|([^%]+?)","gi"),rs=new RegExp("("+ts+")+","gi");function os(e,t){try{return[decodeURIComponent(e.join(""))]}catch(o){}if(1===e.length)return e;t=t||1;const n=e.slice(0,t),r=e.slice(t);return Array.prototype.concat.call([],os(n),os(r))}function as(e){try{return decodeURIComponent(e)}catch(t){let n=e.match(ns)||[];for(let r=1;rnull===e||void 0===e,cs=e=>encodeURIComponent(e).replace(/[!'()*]/g,e=>"%".concat(e.charCodeAt(0).toString(16).toUpperCase())),ds=Symbol("encodeFragmentIdentifier");function ps(e){if("string"!==typeof e||1!==e.length)throw new TypeError("arrayFormatSeparator must be single character string")}function hs(e,t){return t.encode?t.strict?cs(e):encodeURIComponent(e):e}function fs(e,t){return t.decode?is(e):e}function ms(e){return Array.isArray(e)?e.sort():"object"===typeof e?ms(Object.keys(e)).sort((e,t)=>Number(e)-Number(t)).map(t=>e[t]):e}function gs(e){const t=e.indexOf("#");return-1!==t&&(e=e.slice(0,t)),e}function vs(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&"string"===typeof e&&""!==e.trim()?e=Number(e):!t.parseBooleans||null===e||"true"!==e.toLowerCase()&&"false"!==e.toLowerCase()||(e="true"===e.toLowerCase()),e}function ys(e){const t=(e=gs(e)).indexOf("?");return-1===t?"":e.slice(t+1)}function bs(e,t){ps((t=(0,It.A)({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},t)).arrayFormatSeparator);const n=function(e){let t;switch(e.arrayFormat){case"index":return(e,n,r)=>{t=/\[(\d*)]$/.exec(e),e=e.replace(/\[\d*]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return(e,n,r)=>{t=/(\[])$/.exec(e),e=e.replace(/\[]$/,""),t?void 0!==r[e]?r[e]=[...r[e],n]:r[e]=[n]:r[e]=n};case"colon-list-separator":return(e,n,r)=>{t=/(:list)$/.exec(e),e=e.replace(/:list$/,""),t?void 0!==r[e]?r[e]=[...r[e],n]:r[e]=[n]:r[e]=n};case"comma":case"separator":return(t,n,r)=>{const o="string"===typeof n&&n.includes(e.arrayFormatSeparator),a="string"===typeof n&&!o&&fs(n,e).includes(e.arrayFormatSeparator);n=a?fs(n,e):n;const i=o||a?n.split(e.arrayFormatSeparator).map(t=>fs(t,e)):null===n?n:fs(n,e);r[t]=i};case"bracket-separator":return(t,n,r)=>{const o=/(\[])$/.test(t);if(t=t.replace(/\[]$/,""),!o)return void(r[t]=n?fs(n,e):n);const a=null===n?[]:n.split(e.arrayFormatSeparator).map(t=>fs(t,e));void 0!==r[t]?r[t]=[...r[t],...a]:r[t]=a};default:return(e,t,n)=>{void 0!==n[e]?n[e]=[...[n[e]].flat(),t]:n[e]=t}}}(t),r=Object.create(null);if("string"!==typeof e)return r;if(!(e=e.trim().replace(/^[?#&]/,"")))return r;for(const o of e.split("&")){if(""===o)continue;const e=t.decode?o.replace(/\+/g," "):o;let[a,i]=ss(e,"=");void 0===a&&(a=e),i=void 0===i?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?i:fs(i,t),n(fs(a,t),i,r)}for(const[o,a]of Object.entries(r))if("object"===typeof a&&null!==a)for(const[e,n]of Object.entries(a))a[e]=vs(n,t);else r[o]=vs(a,t);return!1===t.sort?r:(!0===t.sort?Object.keys(r).sort():Object.keys(r).sort(t.sort)).reduce((e,t)=>{const n=r[t];return e[t]=Boolean(n)&&"object"===typeof n&&!Array.isArray(n)?ms(n):n,e},Object.create(null))}function xs(e,t){if(!e)return"";ps((t=(0,It.A)({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},t)).arrayFormatSeparator);const n=n=>t.skipNull&&us(e[n])||t.skipEmptyString&&""===e[n],r=function(e){switch(e.arrayFormat){case"index":return t=>(n,r)=>{const o=n.length;return void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[hs(t,e),"[",o,"]"].join("")]:[...n,[hs(t,e),"[",hs(o,e),"]=",hs(r,e)].join("")]};case"bracket":return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[hs(t,e),"[]"].join("")]:[...n,[hs(t,e),"[]=",hs(r,e)].join("")];case"colon-list-separator":return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[hs(t,e),":list="].join("")]:[...n,[hs(t,e),":list=",hs(r,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t="bracket-separator"===e.arrayFormat?"[]=":"=";return n=>(r,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:(o=null===o?"":o,0===r.length?[[hs(n,e),t,hs(o,e)].join("")]:[[r,hs(o,e)].join(e.arrayFormatSeparator)])}default:return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,hs(t,e)]:[...n,[hs(t,e),"=",hs(r,e)].join("")]}}(t),o={};for(const[i,s]of Object.entries(e))n(i)||(o[i]=s);const a=Object.keys(o);return!1!==t.sort&&a.sort(t.sort),a.map(n=>{const o=e[n];return void 0===o?"":null===o?hs(n,t):Array.isArray(o)?0===o.length&&"bracket-separator"===t.arrayFormat?hs(n,t)+"[]":o.reduce(r(n),[]).join("&"):hs(n,t)+"="+hs(o,t)}).filter(e=>e.length>0).join("&")}function As(e,t){var n,r;t=(0,It.A)({decode:!0},t);let[o,a]=ss(e,"#");return void 0===o&&(o=e),(0,It.A)({url:null!==(n=null===(r=o)||void 0===r||null===(r=r.split("?"))||void 0===r?void 0:r[0])&&void 0!==n?n:"",query:bs(ys(e),t)},t&&t.parseFragmentIdentifier&&a?{fragmentIdentifier:fs(a,t)}:{})}function Ds(e,t){t=(0,It.A)({encode:!0,strict:!0,[ds]:!0},t);const n=gs(e.url).split("?")[0]||"",r=ys(e.url);let o=xs((0,It.A)((0,It.A)({},bs(r,{sort:!1})),e.query),t);o&&(o="?".concat(o));let a=function(e){let t="";const n=e.indexOf("#");return-1!==n&&(t=e.slice(n)),t}(e.url);if(e.fragmentIdentifier){const r=new URL(n);r.hash=e.fragmentIdentifier,a=t[ds]?r.hash:"#".concat(e.fragmentIdentifier)}return"".concat(n).concat(o).concat(a)}function ks(e,t,n){n=(0,It.A)({parseFragmentIdentifier:!0,[ds]:!1},n);const{url:r,query:o,fragmentIdentifier:a}=As(e,n);return Ds({url:r,query:ls(o,t),fragmentIdentifier:a},n)}function ws(e,t,n){return ks(e,Array.isArray(t)?e=>!t.includes(e):(e,n)=>!t(e,n),n)}const Ss=r;var Es=n(6135),_s=n(1166),Cs=n(328),Fs=n(252),Ts=n(2770);const js=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return(e=>{let t=3735928559,n=1103547991;for(let r=0;r>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(t^t>>>13,3266489909),(n>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")})("".concat(e).concat(t))},zs=async function(e){var t,n;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(null!==(t=globalThis.crypto)&&void 0!==t&&null!==(n=t.subtle)&&void 0!==n&&n.digest)return(0,_s.$Q)(e,r);if(Fs.aQ)try{const t=await(0,Ts.Ru)(Cs.U3,{text:e,salt:r});if("string"===typeof t&&t)return t}catch(o){}return js(e,r)};var Is=n(7301),Ls=n(1152),Ps=n(1442),Rs=n(3951);const Ns=e=>{try{return JSON.parse(atob(e.split(".")[1])).exp}catch(t){(0,Zi.h9)("parseMSToken",t)}return 0},Os=(()=>{let e=null;return async()=>{if(e)try{const t=await e;if(t.expiresAt>Date.now()+1e3)return t.token}catch(t){}e=(async()=>{try{const e=Date.now(),t=await(0,Ji.J4)();if(t){const n=1e3*Ns(t);if(n>e+1e3)return{token:t,expiresAt:n}}const n=await rc();if(!n)throw new Error("Failed to fetch ms token");const r=1e3*Ns(n);return await(0,Ji.xe)(n),{token:n,expiresAt:r}}catch(t){throw(0,Zi.h9)("get msauth failed",t),t}})();return(await e).token}})();let Bs=1e4*Math.round(1e4*Math.random());var Ms=n(7029);const Ws=new(n.n(Ms)())({ecmaVer:"latest",sourceType:"script",sandBox:!0}),{entries:Us,setPrototypeOf:Vs,isFrozen:Hs,getPrototypeOf:Gs,getOwnPropertyDescriptor:qs}=Object;let{freeze:Ks,seal:$s,create:Ys}=Object,{apply:Xs,construct:Qs}="undefined"!==typeof Reflect&&Reflect;Ks||(Ks=function(e){return e}),$s||($s=function(e){return e}),Xs||(Xs=function(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o1?t-1:0),r=1;r1?n-1:0),o=1;o2&&void 0!==arguments[2]?arguments[2]:rl;Vs&&Vs(e,null);let r=t.length;for(;r--;){let o=t[r];if("string"===typeof o){const e=n(o);e!==o&&(Hs(t)||(t[r]=e),o=e)}e[o]=!0}return e}function ml(e){for(let t=0;t/gm),jl=$s(/\$\{[\w\W]*/gm),zl=$s(/^data-[\-\w.\u00B7-\uFFFF]+$/),Il=$s(/^aria-[\-\w]+$/),Ll=$s(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),Pl=$s(/^(?:\w+script|data):/i),Rl=$s(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),Nl=$s(/^html$/i),Ol=$s(/^[a-z][.\w]*(-[.\w]+)+$/i);var Bl=Object.freeze({__proto__:null,ARIA_ATTR:Il,ATTR_WHITESPACE:Rl,CUSTOM_ELEMENT:Ol,DATA_ATTR:zl,DOCTYPE_NAME:Nl,ERB_EXPR:Tl,IS_ALLOWED_URI:Ll,IS_SCRIPT_OR_DATA:Pl,MUSTACHE_EXPR:Fl,TMPLIT_EXPR:jl});const Ml=1,Wl=3,Ul=7,Vl=8,Hl=9,Gl=function(){return"undefined"===typeof window?null:window};var ql=function e(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Gl();const n=t=>e(t);if(n.version="3.4.0",n.removed=[],!t||!t.document||t.document.nodeType!==Hl||!t.Element)return n.isSupported=!1,n;let{document:r}=t;const o=r,a=o.currentScript,{DocumentFragment:i,HTMLTemplateElement:s,Node:l,Element:u,NodeFilter:c,NamedNodeMap:d=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:p,DOMParser:h,trustedTypes:f}=t,m=u.prototype,g=vl(m,"cloneNode"),v=vl(m,"remove"),y=vl(m,"nextSibling"),b=vl(m,"childNodes"),x=vl(m,"parentNode");if("function"===typeof s){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let A,D="";const{implementation:k,createNodeIterator:w,createDocumentFragment:S,getElementsByTagName:E}=r,{importNode:_}=o;let C={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};n.isSupported="function"===typeof Us&&"function"===typeof x&&k&&void 0!==k.createHTMLDocument;const{MUSTACHE_EXPR:F,ERB_EXPR:T,TMPLIT_EXPR:j,DATA_ATTR:z,ARIA_ATTR:I,IS_SCRIPT_OR_DATA:L,ATTR_WHITESPACE:P,CUSTOM_ELEMENT:R}=Bl;let{IS_ALLOWED_URI:N}=Bl,O=null;const B=fl({},[...yl,...bl,...xl,...Dl,...wl]);let M=null;const W=fl({},[...Sl,...El,..._l,...Cl]);let U=Object.seal(Ys(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),V=null,H=null;const G=Object.seal(Ys(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let q=!0,K=!0,$=!1,Y=!0,X=!1,Q=!0,J=!1,Z=!1,ee=!1,te=!1,ne=!1,re=!1,oe=!0,ae=!1,ie=!0,se=!1,le={},ue=null;const ce=fl({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let de=null;const pe=fl({},["audio","video","img","source","image","track"]);let he=null;const fe=fl({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),me="http://www.w3.org/1998/Math/MathML",ge="http://www.w3.org/2000/svg",ve="http://www.w3.org/1999/xhtml";let ye=ve,be=!1,xe=null;const Ae=fl({},[me,ge,ve],ol);let De=fl({},["mi","mo","mn","ms","mtext"]),ke=fl({},["annotation-xml"]);const we=fl({},["title","style","font","a","script"]);let Se=null;const Ee=["application/xhtml+xml","text/html"];let _e=null,Ce=null;const Fe=r.createElement("form"),Te=function(e){return e instanceof RegExp||e instanceof Function},je=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!Ce||Ce!==e){if(e&&"object"===typeof e||(e={}),e=gl(e),Se=-1===Ee.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,_e="application/xhtml+xml"===Se?ol:rl,O=ul(e,"ALLOWED_TAGS")?fl({},e.ALLOWED_TAGS,_e):B,M=ul(e,"ALLOWED_ATTR")?fl({},e.ALLOWED_ATTR,_e):W,xe=ul(e,"ALLOWED_NAMESPACES")?fl({},e.ALLOWED_NAMESPACES,ol):Ae,he=ul(e,"ADD_URI_SAFE_ATTR")?fl(gl(fe),e.ADD_URI_SAFE_ATTR,_e):fe,de=ul(e,"ADD_DATA_URI_TAGS")?fl(gl(pe),e.ADD_DATA_URI_TAGS,_e):pe,ue=ul(e,"FORBID_CONTENTS")?fl({},e.FORBID_CONTENTS,_e):ce,V=ul(e,"FORBID_TAGS")?fl({},e.FORBID_TAGS,_e):gl({}),H=ul(e,"FORBID_ATTR")?fl({},e.FORBID_ATTR,_e):gl({}),le=!!ul(e,"USE_PROFILES")&&e.USE_PROFILES,q=!1!==e.ALLOW_ARIA_ATTR,K=!1!==e.ALLOW_DATA_ATTR,$=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Y=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,X=e.SAFE_FOR_TEMPLATES||!1,Q=!1!==e.SAFE_FOR_XML,J=e.WHOLE_DOCUMENT||!1,te=e.RETURN_DOM||!1,ne=e.RETURN_DOM_FRAGMENT||!1,re=e.RETURN_TRUSTED_TYPE||!1,ee=e.FORCE_BODY||!1,oe=!1!==e.SANITIZE_DOM,ae=e.SANITIZE_NAMED_PROPS||!1,ie=!1!==e.KEEP_CONTENT,se=e.IN_PLACE||!1,N=e.ALLOWED_URI_REGEXP||Ll,ye=e.NAMESPACE||ve,De=e.MATHML_TEXT_INTEGRATION_POINTS||De,ke=e.HTML_INTEGRATION_POINTS||ke,U=e.CUSTOM_ELEMENT_HANDLING||Ys(null),e.CUSTOM_ELEMENT_HANDLING&&Te(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(U.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Te(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(U.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"===typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(U.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),X&&(K=!1),ne&&(te=!0),le&&(O=fl({},wl),M=Ys(null),!0===le.html&&(fl(O,yl),fl(M,Sl)),!0===le.svg&&(fl(O,bl),fl(M,El),fl(M,Cl)),!0===le.svgFilters&&(fl(O,xl),fl(M,El),fl(M,Cl)),!0===le.mathMl&&(fl(O,Dl),fl(M,_l),fl(M,Cl))),G.tagCheck=null,G.attributeCheck=null,e.ADD_TAGS&&("function"===typeof e.ADD_TAGS?G.tagCheck=e.ADD_TAGS:(O===B&&(O=gl(O)),fl(O,e.ADD_TAGS,_e))),e.ADD_ATTR&&("function"===typeof e.ADD_ATTR?G.attributeCheck=e.ADD_ATTR:(M===W&&(M=gl(M)),fl(M,e.ADD_ATTR,_e))),e.ADD_URI_SAFE_ATTR&&fl(he,e.ADD_URI_SAFE_ATTR,_e),e.FORBID_CONTENTS&&(ue===ce&&(ue=gl(ue)),fl(ue,e.FORBID_CONTENTS,_e)),e.ADD_FORBID_CONTENTS&&(ue===ce&&(ue=gl(ue)),fl(ue,e.ADD_FORBID_CONTENTS,_e)),ie&&(O["#text"]=!0),J&&fl(O,["html","head","body"]),O.table&&(fl(O,["tbody"]),delete V.tbody),e.TRUSTED_TYPES_POLICY){if("function"!==typeof e.TRUSTED_TYPES_POLICY.createHTML)throw dl('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!==typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw dl('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');A=e.TRUSTED_TYPES_POLICY,D=A.createHTML("")}else void 0===A&&(A=function(e,t){if("object"!==typeof e||"function"!==typeof e.createPolicy)return null;let n=null;const r="data-tt-policy-suffix";t&&t.hasAttribute(r)&&(n=t.getAttribute(r));const o="dompurify"+(n?"#"+n:"");try{return e.createPolicy(o,{createHTML:e=>e,createScriptURL:e=>e})}catch(a){return console.warn("TrustedTypes policy "+o+" could not be created."),null}}(f,a)),null!==A&&"string"===typeof D&&(D=A.createHTML(""));Ks&&Ks(e),Ce=e}},ze=fl({},[...bl,...xl,...Al]),Ie=fl({},[...Dl,...kl]),Le=function(e){tl(n.removed,{element:e});try{x(e).removeChild(e)}catch(t){v(e)}},Pe=function(e,t){try{tl(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(r){tl(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(te||ne)try{Le(t)}catch(r){}else try{t.setAttribute(e,"")}catch(r){}},Re=function(e){let t=null,n=null;if(ee)e=""+e;else{const t=al(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===Se&&ye===ve&&(e=''+e+"");const o=A?A.createHTML(e):e;if(ye===ve)try{t=(new h).parseFromString(o,Se)}catch(i){}if(!t||!t.documentElement){t=k.createDocument(ye,"template",null);try{t.documentElement.innerHTML=be?D:o}catch(i){}}const a=t.body||t.documentElement;return e&&n&&a.insertBefore(r.createTextNode(n),a.childNodes[0]||null),ye===ve?E.call(t,J?"html":"body")[0]:J?t.documentElement:a},Ne=function(e){return w.call(e.ownerDocument||e,e,c.SHOW_ELEMENT|c.SHOW_COMMENT|c.SHOW_TEXT|c.SHOW_PROCESSING_INSTRUCTION|c.SHOW_CDATA_SECTION,null)},Oe=function(e){return e instanceof p&&("string"!==typeof e.nodeName||"string"!==typeof e.textContent||"function"!==typeof e.removeChild||!(e.attributes instanceof d)||"function"!==typeof e.removeAttribute||"function"!==typeof e.setAttribute||"string"!==typeof e.namespaceURI||"function"!==typeof e.insertBefore||"function"!==typeof e.hasChildNodes)},Be=function(e){return"function"===typeof l&&e instanceof l};function Me(e,t,r){Js(e,e=>{e.call(n,t,r,Ce)})}const We=function(e){let t=null;if(Me(C.beforeSanitizeElements,e,null),Oe(e))return Le(e),!0;const r=_e(e.nodeName);if(Me(C.uponSanitizeElement,e,{tagName:r,allowedTags:O}),Q&&e.hasChildNodes()&&!Be(e.firstElementChild)&&cl(/<[/\w!]/g,e.innerHTML)&&cl(/<[/\w!]/g,e.textContent))return Le(e),!0;if(Q&&e.namespaceURI===ve&&"style"===r&&Be(e.firstElementChild))return Le(e),!0;if(e.nodeType===Ul)return Le(e),!0;if(Q&&e.nodeType===Vl&&cl(/<[/\w]/g,e.data))return Le(e),!0;if(V[r]||!(G.tagCheck instanceof Function&&G.tagCheck(r))&&!O[r]){if(!V[r]&&Ve(r)){if(U.tagNameCheck instanceof RegExp&&cl(U.tagNameCheck,r))return!1;if(U.tagNameCheck instanceof Function&&U.tagNameCheck(r))return!1}if(ie&&!ue[r]){const t=x(e)||e.parentNode,n=b(e)||e.childNodes;if(n&&t){for(let r=n.length-1;r>=0;--r){const o=g(n[r],!0);o.__removalCount=(e.__removalCount||0)+1,t.insertBefore(o,y(e))}}}return Le(e),!0}return e instanceof u&&!function(e){let t=x(e);t&&t.tagName||(t={namespaceURI:ye,tagName:"template"});const n=rl(e.tagName),r=rl(t.tagName);return!!xe[e.namespaceURI]&&(e.namespaceURI===ge?t.namespaceURI===ve?"svg"===n:t.namespaceURI===me?"svg"===n&&("annotation-xml"===r||De[r]):Boolean(ze[n]):e.namespaceURI===me?t.namespaceURI===ve?"math"===n:t.namespaceURI===ge?"math"===n&&ke[r]:Boolean(Ie[n]):e.namespaceURI===ve?!(t.namespaceURI===ge&&!ke[r])&&!(t.namespaceURI===me&&!De[r])&&!Ie[n]&&(we[n]||!ze[n]):!("application/xhtml+xml"!==Se||!xe[e.namespaceURI]))}(e)?(Le(e),!0):"noscript"!==r&&"noembed"!==r&&"noframes"!==r||!cl(/<\/no(script|embed|frames)/i,e.innerHTML)?(X&&e.nodeType===Wl&&(t=e.textContent,Js([F,T,j],e=>{t=il(t,e," ")}),e.textContent!==t&&(tl(n.removed,{element:e.cloneNode()}),e.textContent=t)),Me(C.afterSanitizeElements,e,null),!1):(Le(e),!0)},Ue=function(e,t,n){if(H[t])return!1;if(oe&&("id"===t||"name"===t)&&(n in r||n in Fe))return!1;if(K&&!H[t]&&cl(z,t));else if(q&&cl(I,t));else if(G.attributeCheck instanceof Function&&G.attributeCheck(t,e));else if(!M[t]||H[t]){if(!(Ve(e)&&(U.tagNameCheck instanceof RegExp&&cl(U.tagNameCheck,e)||U.tagNameCheck instanceof Function&&U.tagNameCheck(e))&&(U.attributeNameCheck instanceof RegExp&&cl(U.attributeNameCheck,t)||U.attributeNameCheck instanceof Function&&U.attributeNameCheck(t,e))||"is"===t&&U.allowCustomizedBuiltInElements&&(U.tagNameCheck instanceof RegExp&&cl(U.tagNameCheck,n)||U.tagNameCheck instanceof Function&&U.tagNameCheck(n))))return!1}else if(he[t]);else if(cl(N,il(n,P,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==sl(n,"data:")||!de[e]){if($&&!cl(L,il(n,P,"")));else if(n)return!1}else;return!0},Ve=function(e){return"annotation-xml"!==e&&al(e,R)},He=function(e){Me(C.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||Oe(e))return;const r={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:M,forceKeepAttr:void 0};let o=t.length;for(;o--;){const i=t[o],{name:s,namespaceURI:l,value:u}=i,c=_e(s),d=u;let p="value"===s?d:ll(d);if(r.attrName=c,r.attrValue=p,r.keepAttr=!0,r.forceKeepAttr=void 0,Me(C.uponSanitizeAttribute,e,r),p=r.attrValue,!ae||"id"!==c&&"name"!==c||(Pe(s,e),p="user-content-"+p),Q&&cl(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,p)){Pe(s,e);continue}if("attributename"===c&&al(p,"href")){Pe(s,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){Pe(s,e);continue}if(!Y&&cl(/\/>/i,p)){Pe(s,e);continue}X&&Js([F,T,j],e=>{p=il(p,e," ")});const h=_e(e.nodeName);if(Ue(h,c,p)){if(A&&"object"===typeof f&&"function"===typeof f.getAttributeType)if(l);else switch(f.getAttributeType(h,c)){case"TrustedHTML":p=A.createHTML(p);break;case"TrustedScriptURL":p=A.createScriptURL(p)}if(p!==d)try{l?e.setAttributeNS(l,s,p):e.setAttribute(s,p),Oe(e)?Le(e):el(n.removed)}catch(a){Pe(s,e)}}else Pe(s,e)}Me(C.afterSanitizeAttributes,e,null)},Ge=function(e){let t=null;const n=Ne(e);for(Me(C.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)Me(C.uponSanitizeShadowNode,t,null),We(t),He(t),t.content instanceof i&&Ge(t.content);Me(C.afterSanitizeShadowDOM,e,null)};return n.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=null,a=null,s=null,u=null;if(be=!e,be&&(e="\x3c!--\x3e"),"string"!==typeof e&&!Be(e)){if("function"!==typeof e.toString)throw dl("toString is not a function");if("string"!==typeof(e=e.toString()))throw dl("dirty is not a string, aborting")}if(!n.isSupported)return e;if(Z||je(t),n.removed=[],"string"===typeof e&&(se=!1),se){if(e.nodeName){const t=_e(e.nodeName);if(!O[t]||V[t])throw dl("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof l)r=Re("\x3c!----\x3e"),a=r.ownerDocument.importNode(e,!0),a.nodeType===Ml&&"BODY"===a.nodeName||"HTML"===a.nodeName?r=a:r.appendChild(a);else{if(!te&&!X&&!J&&-1===e.indexOf("<"))return A&&re?A.createHTML(e):e;if(r=Re(e),!r)return te?null:re?D:""}r&&ee&&Le(r.firstChild);const c=Ne(se?e:r);for(;s=c.nextNode();)We(s),He(s),s.content instanceof i&&Ge(s.content);if(se)return e;if(te){if(X){r.normalize();let e=r.innerHTML;Js([F,T,j],t=>{e=il(e,t," ")}),r.innerHTML=e}if(ne)for(u=S.call(r.ownerDocument);r.firstChild;)u.appendChild(r.firstChild);else u=r;return(M.shadowroot||M.shadowrootmode)&&(u=_.call(o,u,!0)),u}let d=J?r.outerHTML:r.innerHTML;return J&&O["!doctype"]&&r.ownerDocument&&r.ownerDocument.doctype&&r.ownerDocument.doctype.name&&cl(Nl,r.ownerDocument.doctype.name)&&(d="\n"+d),X&&Js([F,T,j],e=>{d=il(d,e," ")}),A&&re?A.createHTML(d):d},n.setConfig=function(){je(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Z=!0},n.clearConfig=function(){Ce=null,Z=!1},n.isValidAttribute=function(e,t,n){Ce||je({});const r=_e(e),o=_e(t);return Ue(r,o,n)},n.addHook=function(e,t){"function"===typeof t&&tl(C[e],t)},n.removeHook=function(e,t){if(void 0!==t){const n=Zs(C[e],t);return-1===n?void 0:nl(C[e],n,1)[0]}return el(C[e])},n.removeHooks=function(e){C[e]=[]},n.removeAllHooks=function(){C={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},n}();const Kl=(()=>{const e="kiss-translator-policy";let t=null,n=!1;const r=()=>{if(t||n)return t;if(!globalThis.trustedTypes||!globalThis.trustedTypes.createPolicy)return n=!0,null;try{t=globalThis.trustedTypes.createPolicy(e,{createHTML:e=>ql.sanitize(e),createScript:e=>e,createScriptURL:e=>e})}catch(a){var r,o;if(null!==a&&void 0!==a&&null!==(r=a.message)&&void 0!==r&&r.includes("already exists"))t=(null===(o=globalThis.trustedTypes.policies)||void 0===o?void 0:o.get(e))||null;t||(n=!0)}return t};return{createHTML:e=>{const t=r();return t?t.createHTML(e):ql.sanitize(e)},createScript:e=>{const t=r();return t?t.createScript(e):e},createScriptURL:e=>{const t=r();return t?t.createScriptURL(e):e},isEnabled:()=>null!==t}})();function $l(e){if(!e||"string"!==typeof e)return e;return(new DOMParser).parseFromString(Kl.createHTML(e),"text/html").documentElement.textContent||""}var Yl=n(1825),Xl=n(5047),Ql=n(1270);const Jl=new Map,Zl=(e,t)=>{if(Jl.has(e))return Jl.get(e);const n=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Qi.w62;const t=[];return{add:function(){for(var n=arguments.length,r=new Array(n),o=0;o0&&t.splice(0,a)},getAll:()=>[...t],clear:()=>{t.length=0}}}(t);return Jl.set(e,n),n};function eu(e){const t=e.trim();if(!t.includes(":")&&!t.includes("."))return parseInt(t,10)||0;let n=t,r="0";if(t.includes(".")){const e=t.split(".");n=e[0],r=e[1]}else{const e=t.split(":");e.length>1&&3===e[e.length-1].length&&(r=e.pop(),n=e.join(":"))}const o=n.split(":").map(e=>parseInt(e,10)||0);let a=0,i=0,s=0;3===o.length?[a,i,s]=o:2===o.length?[i,s]=o:1===o.length&&([s]=o);return 1e3*(3600*a+60*i+s)+(parseInt(r.padEnd(3,"0"),10)||0)}function tu(e){const t=Math.floor(e/1e3),n=String(e%1e3).padStart(3,"0"),r=Math.floor(t/60),o=String(t%60).padStart(2,"0"),a=String(Math.floor(r/60)).padStart(2,"0"),i=String(r%60).padStart(2,"0");return"".concat(a,":").concat(i,":").concat(o,".").concat(n)}const nu=e=>e?e.trim().replace(/\s+/g," "):"",ru=()=>({title:(()=>{try{return(0,_s.sz)(nu(document.title))}catch(e){return""}})(),description:(()=>{try{const e=document.querySelector('meta[name="description"]'),t=(null===e||void 0===e?void 0:e.getAttribute("content"))||"";return(0,_s.sz)(nu(t))}catch(e){return""}})(),summary:(()=>{let e="";try{var t,n;const a=(null===(t=document)||void 0===t||null===(n=t.location)||void 0===n?void 0:n.href)||"",i="https://www.youtube.com";if(a.startsWith(i)){const t=document.querySelector("#collapsed-title")||document.querySelector("#description-inline-expander");t&&(e=t.textContent)}var r,o;e||(e=(null===(r=document.querySelector('meta[property="og:description"]'))||void 0===r?void 0:r.getAttribute("content"))||""),e||(e=(null===(o=document.querySelector('meta[name="keywords"]'))||void 0===o?void 0:o.getAttribute("content"))||"")}catch(a){}return(0,_s.sz)(nu(e))})()});var ou=n(9385);const au=["reqHook"],iu=new Map,su=new Map,lu=function(e){var t;let n=arguments.length>2?arguments[2]:void 0;const r=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split(/\n|,/).map(e=>e.trim()).filter(Boolean);if(0===r.length)return"";const o=((null!==(t=n.get(e))&&void 0!==t?t:-1)+1)%r.length;return n.set(e,o),r[o]},uu=function(e){if(!e)return[];if(!(!(arguments.length>1&&void 0!==arguments[1])||arguments[1]))return[[e]];let t=(0,_s.if)(e).trim();const n=(0,Yl.qG)(t,{decodeText:$l});return n.length>0?n.map(e=>e.translation):t.split("\n").map(e=>[$l(e.replace(//gi,"\n").trim()),""])},cu=function(){const e=String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"");if(/WEBVTT|MM:SS\.mmm|-->/i.test(e))return"vtt-legacy";if(/\{\s*["']?s["']?\s*:/.test(e))return"index-v1";const t=/["'`]p["'`]/i.test(e),n=/pause\s+levels?|\u505c\u987f\u7b49\u7ea7|\u66ab\u505c\u7b49\u7d1a/i.test(e);return t&&n?"boundary-v2":"boundary-v3"},du=function(e){const t=cu(arguments.length>1&&void 0!==arguments[1]?arguments[1]:""),n="boundary-v2"===t||"index-v1"===t||"vtt-legacy"===t;return e.map((t,r)=>{const o={id:r,text:t.text};if(n&&r>0){const n=(a=t.start-e[r-1].end,!Number.isFinite(a)||a<=300?0:a<=600?1:a<=1200?2:3);n&&(o.p=n)}else if(!n&&r0&&(o.pauseMs=n)}var a;return o})},pu=function(){return"vtt-legacy"!==cu(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")},hu=e=>Array.isArray(e)?e.filter(e=>!e.thought&&e.text).map(e=>e.text).join(""):"",fu=function(){return/\/v1(?:beta\d*)?\/interactions(?:[/?]|$)/i.test(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")},mu=e=>{var t,n,r;return Array.isArray(null===e||void 0===e?void 0:e.steps)?(e=>Array.isArray(null===e||void 0===e?void 0:e.steps)?e.steps.filter(e=>"model_output"===(null===e||void 0===e?void 0:e.type)).flatMap(e=>Array.isArray(e.content)?e.content:[]).filter(e=>"text"===(null===e||void 0===e?void 0:e.type)&&e.text).map(e=>e.text).join(""):"")(e):hu(null===e||void 0===e||null===(t=e.candidates)||void 0===t||null===(n=t[0])||void 0===n||null===(r=n.content)||void 0===r?void 0:r.parts)},gu=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"auto";if(!e)return[];if(null!==t&&void 0!==t&&t.length){const r=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"auto";const r=(0,Ql.n)(t),o=e=>{if(!Array.isArray(e)||!e.length)return null;const o=e.map(ou.Tt);if(o.some(Boolean)&&!o.every(Boolean))return null;if(!o[0]){const r=[];let o=0;for(const a of e){const e=(0,ou.Ir)(a,t,o,n);if(!e)break;r.push(e),o=e._ei+1}return r.length?r:null}const a=[];for(const n of e){var i,s,l,u,c,d,p,h;const e=Number(null!==(i=n.s)&&void 0!==i?i:n.start_id),o=Number(null!==(s=n.e)&&void 0!==s?s:n.end_id);if(!Number.isInteger(e)||!Number.isInteger(o))continue;const f=Math.max(0,Math.min(e,t.length-1)),m=Math.max(f,Math.min(o,t.length-1)),g=String(null!==(l=null!==(u=n.o)&&void 0!==u?u:n.original)&&void 0!==l?l:""),v=r.realign(e,o,g);a.push((0,It.A)({start:t[null!==(c=null===v||void 0===v?void 0:v.startIdx)&&void 0!==c?c:f].start,end:t[null!==(d=null===v||void 0===v?void 0:v.endIdx)&&void 0!==d?d:m].end,text:g,translation:String(null!==(p=null!==(h=n.t)&&void 0!==h?h:n.translation)&&void 0!==p?p:""),_si:e,_ei:o},v&&{_alignedSi:v.startIdx,_alignedEi:v.endIdx}))}return a.length?a:null},a=(0,_s.if)(String(null!==e&&void 0!==e?e:"")).trim().replace(/"([a-z_]+)">>/g,'"$1":">>');try{return o(JSON.parse(a))}catch(i){try{const e=a.indexOf("["),t=a.lastIndexOf("}");return e<0||te.includes("--\x3e"));if(-1===s)continue;const[l,u]=t[s].split("--\x3e"),c=t.slice(s+1);if(l&&u&&c.length>0){var o,a;const e=$l((null===(o=c[0])||void 0===o?void 0:o.trim())||""),t=$l((null===(a=c[1])||void 0===a?void 0:a.trim())||"");r.push({start:eu(l),end:eu(u),text:e,translation:t})}}return r}(e);if(Array.isArray(t))return t}catch(r){(0,Zi.h9)("parse AI Res: subtitle",r)}return[]},vu={max:32768,high:16384,medium:8192,low:4096,minimal:2048},yu=(e,t)=>{let{apiType:n,thinkingMode:r,thinkingEffort:o}=t;if("auto"===r)return;const a=Qi.Imq[n];if(!a)return;const i=o&&"_default"!==o;switch(a.type){case"deepseek":e.thinking={type:"enabled"===r?"enabled":"disabled"},"enabled"===r&&i&&(e.reasoning_effort=o);break;case"aliyunbailian":e.enable_thinking="enabled"===r;break;case"siliconflow":e.enable_thinking="enabled"===r,"enabled"===r&&i&&(e.thinking_budget=vu[o]||8192);break;case"cerebras":"disabled"===r?e.reasoning_effort="none":i&&(e.reasoning_effort=o);break;case"openai":"disabled"===r?e.reasoning_effort="none":"enabled"===r&&i&&(e.reasoning_effort=o);break;case"openrouter":i&&(e.reasoning={effort:o})}},bu=e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:a,temperature:i,maxTokens:s,hisMsgs:l=[],useStream:u=!1,apiType:c,thinkingMode:d,thinkingEffort:p}=e;const h={role:"user",content:o},f={model:a,messages:[{role:"system",content:r},...l,h],temperature:i,max_completion_tokens:s,stream:u};yu(f,{apiType:c,thinkingMode:d,thinkingEffort:p});return{url:t,body:f,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n)},userMsg:h}},xu={[Qi.bCM]:e=>{let{texts:t,from:n,to:r,url:o,key:a}=e;const i=Ss.stringify({client:"gtx",dt:"t",dj:1,ie:"UTF-8",sl:n,tl:r,q:t.join(" ")});o="".concat(o,"?").concat(i);const s={"Content-type":"application/json"};return a&&(s.Authorization="Bearer ".concat(a)),{url:o,headers:s,method:"GET"}},[Qi.ul7]:e=>{let{texts:t,from:n,to:r,url:o,key:a}=e;return{url:o,body:[[t,n,r],"wt_lib"],headers:{"Content-Type":"application/json+protobuf","X-Goog-API-Key":a}}},[Qi.kXF]:e=>{let{texts:t,from:n,to:r,token:o}=e;const a=Ss.stringify({from:n,to:r,"api-version":"3.0"}),i="https://api-edge.cognitive.microsofttranslator.com/translate?".concat(a),s={"Content-type":"application/json",Authorization:"Bearer ".concat(o)};return{url:i,body:t.map(e=>({Text:e})),headers:s}},[Qi.FS6]:e=>{let{texts:t,from:n,to:r,url:o,key:a,region:i}=e;const s=Ss.stringify({from:n,to:r});o=o.endsWith("&")?"".concat(o).concat(s):"".concat(o,"&").concat(s);const l={"Content-type":"application/json","Ocp-Apim-Subscription-Key":a,"Ocp-Apim-Subscription-Region":i};return{url:o,body:t.map(e=>({Text:e})),headers:l}},[Qi.e70]:e=>{let{texts:t,from:n,to:r,url:o,key:a}=e;return{url:o,body:{text:t,target_lang:r,source_lang:n},headers:{"Content-type":"application/json",Authorization:"DeepL-Auth-Key ".concat(a)}}},[Qi.An9]:e=>{let{texts:t,from:n,to:r}=e;const o=t.join(" "),a=(o.match(/[i]/g)||[]).length+1;let i=Date.now();i+=a-i%a,Bs++;return{url:"https://www2.deepl.com/jsonrpc",body:{jsonrpc:"2.0",method:"LMT_handle_texts",params:{splitting:"newlines",lang:{target_lang:r,source_lang_user_selected:n},commonJobParams:{wasSpoken:!1,transcribe_as:""},id:Bs,timestamp:i,texts:[{text:o,requestAlternatives:3}]}},headers:{"Content-Type":"application/json",Accept:"*/*","x-app-os-name":"iOS","x-app-os-version":"16.3.0","Accept-Language":"en-US,en;q=0.9","Accept-Encoding":"gzip, deflate, br","x-app-device":"iPhone13,2","User-Agent":"DeepL-iOS/2.9.1 iOS 16.3.0 (iPhone13,2)","x-app-build":"510265","x-app-version":"2.9.1"}}},[Qi.KBl]:bu,[Qi.rUY]:bu,[Qi.FsV]:bu,[Qi.F16]:bu,[Qi.EjO]:bu,[Qi.NQu]:bu,[Qi.cbe]:bu,[Qi.c0T]:e=>{let{texts:t,from:n,to:r,url:o,key:a}=e;const i={text:t.join(" "),target_lang:r,source_lang:n},s={"Content-type":"application/json"};return a&&(s.Authorization="Bearer ".concat(a)),{url:o,body:i,headers:s}},[Qi.lbn]:bu,[Qi.xN$]:e=>{let{texts:t,from:n,to:r}=e;return{url:"https://fanyi.baidu.com/transapi",body:{from:n,to:r,query:t.join(" "),source:"txt"},headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8","User-Agent":Qi.qxj}}},[Qi.fFW]:e=>{let{texts:t,from:n,to:r}=e;return{url:"https://transmart.qq.com/api/imt",body:{header:{fn:"auto_translation",client_key:"browser-chrome-110.0.0-Mac OS-df4bd4c5-a65d-44b2-a40f-42f34f3535f2-1677486696487"},type:"plain",model_category:"normal",source:{text_list:t,lang:n},target:{lang:r}},headers:{"Content-Type":"application/json","user-agent":Qi.qxj,referer:"https://transmart.qq.com/zh-CN/index"}}},[Qi.UFr]:e=>{let{texts:t,from:n,to:r}=e;return{url:"https://translate.volcengine.com/crx/translate/v1",body:{source_language:n,target_language:r,text:t.join(" ")},headers:{"Content-type":"application/json"}}},[Qi.C3L]:bu,[Qi.lLy]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:a,maxTokens:i,hisMsgs:s=[],useStream:l=!1,thinkingMode:u,thinkingEffort:c}=e;if(t=t.replaceAll(Qi.b9x,a).replaceAll(Qi.xfV,n),fu(t)){const e={type:"user_input",content:[{type:"text",text:o}]},d={max_output_tokens:i};"disabled"===u?d.thinking_level="minimal":"enabled"===u&&c&&"_default"!==c&&(d.thinking_level=c);return{url:t,body:{model:a,system_instruction:r,input:[...s,e],stream:l,store:!1,generation_config:d,safety_settings:[{type:"harassment",threshold:"block_none"},{type:"hate_speech",threshold:"block_none"},{type:"sexually_explicit",threshold:"block_none"},{type:"dangerous_content",threshold:"block_none"}]},headers:{"Content-type":"application/json","x-goog-api-key":n},userMsg:e}}l&&(t=t.replace(":generateContent",":streamGenerateContent"),t+=(t.includes("?")?"&":"?")+"alt=sse");const d={role:"user",parts:[{text:o}]},p={systemInstruction:{parts:[{text:r}]},contents:[...s,d],generationConfig:{maxOutputTokens:i}};"disabled"===u?p.generationConfig.thinkingConfig={thinkingBudget:0}:u&&"auto"!==u&&c&&"_default"!==c&&(p.generationConfig.thinkingConfig={thinkingLevel:c}),Object.assign(p,{safetySettings:[{category:"HARM_CATEGORY_HARASSMENT",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_HATE_SPEECH",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_SEXUALLY_EXPLICIT",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_DANGEROUS_CONTENT",threshold:"BLOCK_NONE"}]});return{url:t,body:p,headers:{"Content-type":"application/json","x-goog-api-key":n},userMsg:d}},[Qi.kYm]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:a,temperature:i,maxTokens:s,hisMsgs:l=[],useStream:u=!1,apiType:c,thinkingMode:d,thinkingEffort:p}=e;const h={role:"user",content:o},f={model:a,messages:[{role:"system",content:r},...l,h],temperature:i,max_tokens:s,stream:u};yu(f,{apiType:c,thinkingMode:d,thinkingEffort:p});return{url:t,body:f,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n)},userMsg:h}},[Qi.EsI]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:a,temperature:i,maxTokens:s,hisMsgs:l=[],useStream:u=!1,thinkingMode:c,thinkingEffort:d}=e;const p={role:"user",content:o},h={model:a,system:r,messages:[...l,p],temperature:i,max_tokens:s,stream:u};c&&"auto"!==c&&"enabled"===c&&(h.thinking={type:"adaptive"},d&&"_default"!==d&&(h.output_config={effort:d}));return{url:t,body:h,headers:{"Content-type":"application/json","anthropic-version":"2023-06-01","anthropic-dangerous-direct-browser-access":"true","x-api-key":n},userMsg:p}},[Qi.bNe]:e=>{let{texts:t,from:n,to:r,url:o,key:a}=e;return{url:o,body:{text:t.join(" "),source_lang:n,target_lang:r},headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(a)}}},[Qi.edy]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:a,temperature:i,maxTokens:s,hisMsgs:l=[],useStream:u=!1,thinkingMode:c,thinkingEffort:d}=e;const p={role:"user",content:o},h={model:a,messages:[{role:"system",content:r},...l,p],temperature:i,max_tokens:s};yu(h,{apiType:Qi.edy,thinkingMode:c,thinkingEffort:d}),h.stream=u;const f={"Content-type":"application/json"};return n&&(f.Authorization="Bearer ".concat(n)),{url:t,body:h,headers:f,userMsg:p}},[Qi.dGW]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:a,temperature:i,maxTokens:s,hisMsgs:l=[],useStream:u=!1,thinkingMode:c,thinkingEffort:d}=e;const p={role:"user",content:o},h={model:a,messages:[{role:"system",content:r},...l,p],temperature:i,max_tokens:s,stream:u};yu(h,{apiType:Qi.dGW,thinkingMode:c,thinkingEffort:d});return{url:t,body:h,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n),"HTTP-Referer":"https://fishjar.github.io/kiss-translator/","X-OpenRouter-Title":"KISS Translator"},userMsg:p}},[Qi.mmp]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:a,temperature:i,maxTokens:s,hisMsgs:l=[],useStream:u=!1,thinkingMode:c,thinkingEffort:d}=e;const p={role:"user",content:o},h={model:a,messages:[{role:"system",content:r},...l,p],temperature:i,max_completion_tokens:s,stream:u};yu(h,{apiType:Qi.mmp,thinkingMode:c,thinkingEffort:d});return{url:t,body:h,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n),"HTTP-Referer":"https://fishjar.github.io/kiss-translator/","X-Title":"KISS Translator"},userMsg:p}},[Qi.fqf]:e=>{let{texts:t,fromLang:n,toLang:r,url:o,key:a,useBatchFetch:i}=e;return{url:o,body:i?{texts:t,from:n,to:r}:{text:t[0],from:n,to:r},headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(a)}}}},Au=e=>{let{url:t="",body:n=null,headers:r={},userMsg:o=null,method:a="POST"}=e;if(!t)throw new Error("genInit: url is empty");const i={method:a,headers:r};if("GET"!==a&&"HEAD"!==a&&n){var s;let e=JSON.stringify(n);const t=null===n||void 0===n||null===(s=n.params)||void 0===s?void 0:s.id;t&&(e=e.replace('method":"',(t+3)%13===0||(t+5)%29===0?'method" : "':'method": "')),Object.assign(i,{body:e})}return[t,i,o]},Du=async e=>{let{reqHook:t}=e,n=(0,Is.A)(e,au);const{apiType:r,apiSlug:o,key:a,systemPrompt:i,subtitlePrompt:s,nobatchPrompt:l=Qi.$1M,nobatchUserPrompt:u=Qi.EEo,useBatchFetch:c,from:d,to:p,fromLang:h,toLang:f,texts:m,glossary:g,aiTerms:v,customHeader:y,customBody:b,events:x,tone:A,docInfo:D}=n;if(Qi.sNP.mulkeys.has(r)&&(n.key=lu(o,a,iu)),r===Qi.c0T&&(n.url=lu(o,n.url,su)),Qi.sNP.ai.has(r)){const e=D||ru();let t=x?(e=>{let{subtitlePrompt:t,tone:n,from:r,to:o,fromLang:a,toLang:i,docInfo:{title:s="",description:l="",summary:u=""}={},aiTerms:c=""}=e;const d=(0,_s.jJ)(c),p=Object.entries(d).map(e=>{let[t,n]=e;return"- ".concat(t,": ").concat(n)}).join("\n");return String(t||"").replaceAll(Qi.Ymt,s).replaceAll(Qi.yDH,l).replaceAll(Qi.snk,u).replaceAll(Qi.S6q,n).replaceAll(Qi.S6X,p).replaceAll(Qi.Qfh,r).replaceAll(Qi.fDS,o).replaceAll(Qi.L32,a).replaceAll(Qi.Wdi,i)})({subtitlePrompt:s,from:d,to:p,fromLang:h,toLang:f,texts:m,docInfo:e,tone:A,aiTerms:v}):(e=>{let{systemPrompt:t,tone:n,from:r,to:o,fromLang:a,toLang:i,texts:s,docInfo:{title:l="",description:u="",summary:c="",context:d=""}={}}=e;return String(t||"").replaceAll(Qi.Ymt,l).replaceAll(Qi.yDH,u).replaceAll(Qi.snk,c).replaceAll(Qi.xhA,d).replaceAll(Qi.S6q,n).replaceAll(Qi.Qfh,r).replaceAll(Qi.fDS,o).replaceAll(Qi.L32,a).replaceAll(Qi.Wdi,i).replaceAll(Qi.X6r,s[0])})({systemPrompt:c?i:l,from:d,to:p,fromLang:h,toLang:f,texts:m,docInfo:e,tone:A});n.systemPrompt=t,n.userPrompt=x?(e=>{let{formattedEvents:t}=e;return JSON.stringify(t)})({formattedEvents:pu(s)?du(x,s):x}):(e=>{let{nobatchUserPrompt:t,useBatchFetch:n,tone:r,glossary:o={},aiTerms:a="",from:i,to:s,fromLang:l,toLang:u,texts:c,docInfo:{title:d="",description:p="",summary:h="",context:f=""}={}}=e;if(a){const e=(0,_s.jJ)(a);o=(0,It.A)((0,It.A)({},o),e)}if(n){const e={targetLanguage:u,segments:c.map((e,t)=>({id:t,text:e}))};return d&&(e.title=d),p&&(e.description=p),0!==Object.keys(o).length&&(e.glossary=o),r&&(e.tone=r),JSON.stringify(e)}const m=Object.entries(o).map(e=>{let[t,n]=e;return"- ".concat(t,": ").concat(n)}).join("\n");return String(t||"").replaceAll(Qi.Ymt,d).replaceAll(Qi.yDH,p).replaceAll(Qi.snk,h).replaceAll(Qi.xhA,f).replaceAll(Qi.S6q,r).replaceAll(Qi.S6X,m).replaceAll(Qi.Qfh,i).replaceAll(Qi.fDS,s).replaceAll(Qi.L32,l).replaceAll(Qi.Wdi,u).replaceAll(Qi.X6r,c[0])})({nobatchUserPrompt:u,useBatchFetch:c,from:d,to:p,fromLang:h,toLang:f,texts:m,docInfo:e,tone:A,glossary:g,aiTerms:v})}const{url:k="",body:w=null,headers:S={},userMsg:E=null,method:_="POST"}=xu[r](n);if(x&&r===Qi.lLy&&(null!==w&&void 0!==w&&w.generation_config?w.response_format={type:"text",mime_type:"application/json"}:null!==w&&void 0!==w&&w.generationConfig&&(w.generationConfig.responseMimeType="application/json")),null!==y&&void 0!==y&&y.trim()&&Object.assign(S,(0,_s.f6)(y)),null!==b&&void 0!==b&&b.trim()&&Object.assign(w,(0,_s.f6)(b)),null!==t&&void 0!==t&&t.trim()&&!x)try{const e={url:k,body:w,headers:S,userMsg:E,method:_};Ws.run("exports.reqHook = ".concat(t));const r=await Ws.exports.reqHook((0,It.A)((0,It.A)({},n),{},{defaultSystemPrompt:Qi.loo,defaultSystemPromptXml:Qi.adh,defaultSystemPromptLines:Qi.WwB,defaultSubtitlePrompt:Qi.U$w,defaultNobatchPrompt:Qi.$1M,defaultNobatchUserPrompt:Qi.EEo,req:e}),e);if(r&&r.url)return Au(r)}catch(C){throw(0,Zi.h9)("run req hook",C),new Error("Request hook error: ".concat(C.message))}return Au({url:k,body:w,headers:S,userMsg:E,method:_})};function ku(e,t){var n,r,o,a,i;switch(t){case Qi.lbn:case Qi.C3L:case Qi.KBl:case Qi.rUY:case Qi.FsV:case Qi.F16:case Qi.EjO:case Qi.NQu:case Qi.cbe:case Qi.kYm:case Qi.dGW:case Qi.mmp:case Qi.edy:return(null===e||void 0===e||null===(n=e.choices)||void 0===n||null===(r=n[0])||void 0===r||null===(o=r.message)||void 0===o?void 0:o.content)||"";case Qi.lLy:return mu(e);case Qi.EsI:return(null===e||void 0===e||null===(a=e.content)||void 0===a||null===(i=a[0])||void 0===i?void 0:i.text)||"";case Qi.fqf:return"string"===typeof e?e:(null===e||void 0===e?void 0:e.text)||(null===e||void 0===e?void 0:e.result)||""}throw new Error("parse dictionary result: apiType not matched",t)}function wu(){return Su.apply(this,arguments)}function Su(){return Su=(0,Ls.A)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{from:t,to:n,fromLang:r,toLang:o,langMap:a,glossary:i,apiSetting:s,usePool:l,docInfo:u,signal:c}=arguments.length>1?arguments[1]:void 0;return function*(){if(null!==c&&void 0!==c&&c.aborted)return;let d=null,p=[];const{apiType:h,apiSlug:f,contextSize:m,useContext:g,fetchInterval:v,fetchLimit:y,httpTimeout:b,useStream:x}=s;g&&Qi.sNP.context.has(h)&&(d=Zl(f,m),p=d.getAll());const A=x&&Qi.sNP.stream.has(h)&&!(h===Qi.lLy&&g&&fu(s.url));let D="";if(h===Qi.kXF&&(D=yield(0,Ps.A)(Os()),!D))throw new Error("got msauth error");const k=l=>Du((0,It.A)((0,It.A)({},s),{},{texts:e,from:t,to:n,fromLang:r,toLang:o,langMap:a,glossary:i,hisMsgs:p,token:D,useStream:l,docInfo:u})),w=function(){var i=(0,Ls.A)(function*(i,u,p){const h=yield(0,Ps.A)((0,Es.Fd)(i,u,{useCache:!1,usePool:l,fetchInterval:v,fetchLimit:y,httpTimeout:b,signal:c}));if(!h)throw new Error("translate got empty response");const f=yield(0,Ps.A)((async(e,t)=>{var n,r,o,a,i,s,l,u,c,d,p,h,f,m,g,v,y,b;let{texts:x,from:A,to:D,fromLang:k,toLang:w,langMap:S,resHook:E,history:_,userMsg:C,apiType:F,useBatchFetch:T}=t;if(null!==E&&void 0!==E&&E.trim())try{Ws.run("exports.resHook = ".concat(E));const t=await Ws.exports.resHook({apiType:F,userMsg:C,res:e,texts:x,from:A,to:D,fromLang:k,toLang:w,langMap:S,extractJson:_s.eg,parseAIRes:uu});if(t&&Array.isArray(t.translations))return _&&C&&t.modelMsg&&_.add(C,t.modelMsg),t.translations;if(Array.isArray(t))return t}catch(R){throw(0,Zi.h9)("run res hook",R),new Error("Response hook error: ".concat(R.message))}let j="";switch(F){case Qi.bCM:return[[null===e||void 0===e||null===(n=e.sentences)||void 0===n?void 0:n.map(e=>e.trans).join(" "),null===e||void 0===e?void 0:e.src]];case Qi.ul7:return null===e||void 0===e||null===(r=e[0])||void 0===r?void 0:r.map((t,n)=>{var r,o;return[null===e||void 0===e||null===(r=e[0])||void 0===r?void 0:r[n],null===e||void 0===e||null===(o=e[1])||void 0===o?void 0:o[n]]});case Qi.kXF:case Qi.FS6:return null===e||void 0===e?void 0:e.map(e=>{var t;return[e.translations.map(e=>e.text).join(" "),null===(t=e.detectedLanguage)||void 0===t?void 0:t.language]});case Qi.e70:return null===e||void 0===e||null===(o=e.translations)||void 0===o?void 0:o.map(e=>[e.text,e.detected_source_language]);case Qi.An9:return[[null===e||void 0===e||null===(a=e.result)||void 0===a||null===(i=a.texts)||void 0===i?void 0:i.map(e=>e.text).join(" "),null===e||void 0===e||null===(s=e.result)||void 0===s?void 0:s.lang]];case Qi.c0T:return[[null===e||void 0===e?void 0:e.data,null===e||void 0===e?void 0:e.source_lang]];case Qi.xN$:if(1===e.type)return[[Object.keys(JSON.parse(e.result).content[0].mean[0].cont)[0],e.from]];if(2===e.type)return[[e.data.map(e=>e.dst).join(" "),e.from]];break;case Qi.fFW:return null===e||void 0===e||null===(l=e.auto_translation)||void 0===l?void 0:l.map(t=>[t,null===e||void 0===e?void 0:e.src_lang]);case Qi.UFr:return[[null===e||void 0===e?void 0:e.translation,null===e||void 0===e?void 0:e.detected_language]];case Qi.lbn:case Qi.C3L:case Qi.KBl:case Qi.rUY:case Qi.FsV:case Qi.F16:case Qi.EjO:case Qi.NQu:case Qi.cbe:case Qi.kYm:case Qi.dGW:case Qi.mmp:return j=null===e||void 0===e||null===(u=e.choices)||void 0===u||null===(c=u[0])||void 0===c?void 0:c.message,_&&C&&j&&_.add(C,{role:j.role,content:j.content}),uu(null===(d=j)||void 0===d?void 0:d.content,T);case Qi.lLy:var z,I;return _&&Array.isArray(null===e||void 0===e?void 0:e.steps)?(_.clear(),_.add(...e.steps)):(j=null===e||void 0===e||null===(z=e.candidates)||void 0===z||null===(I=z[0])||void 0===I?void 0:I.content,_&&C&&j&&_.add(C,j)),uu(mu(e),T);case Qi.EsI:return j={role:null===e||void 0===e?void 0:e.role,content:null===e||void 0===e||null===(p=e.content)||void 0===p?void 0:p.text},_&&C&&j&&_.add(C,{role:j.role,content:j.content}),uu(null!==(h=null===e||void 0===e||null===(f=e.content)||void 0===f||null===(m=f[0])||void 0===m?void 0:m.text)&&void 0!==h?h:"",T);case Qi.bNe:return[[null===e||void 0===e||null===(g=e.result)||void 0===g?void 0:g.translated_text]];case Qi.edy:return j=null===e||void 0===e||null===(v=e.choices)||void 0===v||null===(y=v[0])||void 0===y?void 0:y.message,_&&C&&j&&_.add(C,{role:j.role,content:j.content}),uu(null===(b=j)||void 0===b?void 0:b.content,T);case Qi.fqf:var L,P;return T?null===(L=null!==(P=null===e||void 0===e?void 0:e.translations)&&void 0!==P?P:e)||void 0===L?void 0:L.map(e=>[e.text,e.src]):[[e.text,e.src||e.from]]}throw new Error("parse translate result: apiType not matched",F)})(h,(0,It.A)({texts:e,from:t,to:n,fromLang:r,toLang:o,langMap:a,history:d,userMsg:p},s)));if(null===f||void 0===f||!f.length)throw new Error("translate got an unexpected result");for(let e=0;e!e);if(S){const t=uu(f,s);for(let n=0;n0&&void 0!==arguments[0]?arguments[0]:[];const t=await Os(),n={headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(t)},method:"POST",body:JSON.stringify(e.map(e=>({Text:e})))},r=await(0,Es.Fd)("https://api-edge.cognitive.microsofttranslator.com/detect?api-version=3.0",n,{useCache:!1});return Array.isArray(r)?r.map(e=>e.language):[]},Cu=async e=>{var t,n,r,o,a,i,s;let{events:l,from:u,to:c,apiSetting:d,docInfo:p,onSubtitleChunk:h,signal:f}=e;const{apiType:m,fetchInterval:g,fetchLimit:v,httpTimeout:y,useStream:b}=d,x=Boolean(h)&&b&&Qi.sNP.stream.has(m),[A,D]=await Du((0,It.A)((0,It.A)({},d),{},{useStream:x,events:l,from:u,to:c,fromLang:u,toLang:c,docInfo:p}));if(x){try{const e=await async function(e,t,n){let{events:r,apiType:o,fetchInterval:a,fetchLimit:i,httpTimeout:s,fromLang:l,onSubtitleChunk:u,signal:c}=n;const d=(0,Xl.Az)(r,{fromLang:l});let p="";const h=[],f=new Set,m=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=[];for(const r of e||[]){const e="".concat(r._si,":").concat(r._ei);f.has(e)||(f.add(e),h.push(r),n.push(r))}n.length&&u({subtitles:n,isFinal:t})};var g,v=!1,y=!1;try{for(var b,x=(0,es.A)((0,Es.xF)(e,t,{useCache:!1,usePool:!0,fetchInterval:a,fetchLimit:i,httpTimeout:s,signal:c}));v=!(b=await x.next()).done;v=!1){const e=b.value;if(null!==c&&void 0!==c&&c.aborted)throw new DOMException("The operation was aborted.","AbortError");try{const t=JSON.parse(e),n=(0,Xl.tN)(t,o);if(!n)continue;p+=n,m(d.write(n),!1)}catch(D){if(null!==D&&void 0!==D&&D.isAIStreamTerminal)throw D}}}catch(k){y=!0,g=k}finally{try{v&&null!=x.return&&await x.return()}finally{if(y)throw g}}m(d.end(),!1);const A=gu(p,r,l);return m(A,!0),null!==A&&void 0!==A&&A.length?A:h.sort((e,t)=>e.start-t.start)}(A,D,{events:l,apiType:m,fetchInterval:g,fetchLimit:v,httpTimeout:y,fromLang:u,onSubtitleChunk:h,signal:f});if(null!==e&&void 0!==e&&e.length)return e}catch(E){if("AbortError"===(null===E||void 0===E?void 0:E.name))throw E;(0,Zi.h9)("subtitle stream failed, fallback to non-stream",E)}return Cu({events:l,from:u,to:c,apiSetting:(0,It.A)((0,It.A)({},d),{},{useStream:!1}),docInfo:p,signal:f})}const k=await(0,Es.Fd)(A,D,{useCache:!1,usePool:!0,fetchInterval:g,fetchLimit:v,httpTimeout:y,signal:f});if(!k)return(0,Zi.h9)("subtitle got empty response"),[];switch(m){case Qi.lbn:case Qi.C3L:case Qi.KBl:case Qi.rUY:case Qi.FsV:case Qi.F16:case Qi.EjO:case Qi.NQu:case Qi.cbe:case Qi.kYm:case Qi.dGW:case Qi.mmp:case Qi.edy:return gu(null!==(t=null===k||void 0===k||null===(n=k.choices)||void 0===n||null===(r=n[0])||void 0===r||null===(o=r.message)||void 0===o?void 0:o.content)&&void 0!==t?t:"",l,u);case Qi.lLy:{var w,S;const{thinkingMode:e}=d,t=e&&"auto"!==e&&"disabled"!==e;if((Array.isArray(null===k||void 0===k?void 0:k.steps)?"incomplete"===(null===k||void 0===k?void 0:k.status)||"budget_exceeded"===(null===k||void 0===k?void 0:k.status):"MAX_TOKENS"===(null===k||void 0===k||null===(w=k.candidates)||void 0===w||null===(S=w[0])||void 0===S?void 0:S.finishReason))&&t){const[e,t]=await Du((0,It.A)((0,It.A)({},d),{},{useStream:!1,thinkingMode:"disabled",events:l,from:u,to:c,fromLang:u,toLang:c,docInfo:p})),n=await(0,Es.Fd)(e,t,{useCache:!1,usePool:!0,fetchInterval:g,fetchLimit:v,httpTimeout:y}),r=mu(n);if(r)return gu(r,l,u)}return gu(mu(k),l,u)}case Qi.EsI:return gu(null!==(a=null===k||void 0===k||null===(i=k.content)||void 0===i||null===(s=i[0])||void 0===s?void 0:s.text)&&void 0!==a?a:"",l,u);case Qi.fqf:return k}return[]};var Fu=n(7325);const Tu=new Map,ju=(e,t,n)=>{if(Tu.has(e))return Tu.get(e);const r=function(e){let{batchInterval:t=Qi.bqx,batchSize:n=Qi.jgE,batchLength:r=Qi.WTh,batchConcurrency:o=Qi.JWB}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const a=[],i=Number(o),s=Number.isFinite(i)&&i>=1?Math.floor(i):Qi.JWB;let l=0,u=null;const c=async()=>{if(u&&(clearTimeout(u),u=null),0===a.length||l>=s)return;l++;let t=[],o=0,i=0;for(const e of a){var p;const t=(null===(p=e.payload)||void 0===p?void 0:p.length)||0;if(i>=n||o+t>r&&i>0)break;o+=t,i++}if(i>0&&(t=a.splice(0,i)),0!==t.length)try{const n=t.map(e=>e.payload),r=t[0].args,o=e(n,r);if(o&&"function"===typeof o[Symbol.asyncIterator]){var h,f=!1,m=!1;try{for(var g,v=(0,es.A)(o);f=!(g=await v.next()).done;f=!1){const e=g.value;{const n=e.id,r=!1!==e.isComplete,o=t[n];var y,b;o&&(!r&&null!==(y=o.args)&&void 0!==y&&y.onStreamChunk&&o.args.onStreamChunk({id:n,text:e.partialText,isComplete:!1}),r&&(null!==(b=o.args)&&void 0!==b&&b.onStreamChunk&&o.args.onStreamChunk({id:n,text:e.result,isComplete:!0}),o.resolved||(o.resolved=!0,o.resolve(e.result))))}}}catch(x){m=!0,h=x}finally{try{f&&null!=v.return&&await v.return()}finally{if(m)throw h}}t.forEach((e,t)=>{e.resolved||e.reject(new Error("No response for item at index ".concat(t)))})}else{const e=await o;if(!Array.isArray(e))throw new Error("responses format error");t.forEach((t,n)=>{const r=e[n];r?t.resolve(r):t.reject(new Error("No response for item at index ".concat(n)))})}}catch(A){t.forEach(e=>{e.resolved||(e.resolved=!0,e.reject(A))})}finally{l--,a.length>0&&(a.length>=n?setTimeout(c,0):d())}else l--},d=()=>{l0&&(u=setTimeout(c,t))};return{addTask:(e,t)=>new Promise((r,o)=>{const i=e;a.push({payload:i,resolve:r,reject:o,args:t}),a.length>=n?c():d()}),destroy:()=>{u&&(clearTimeout(u),u=null),a.forEach(e=>e.reject(new Error("Queue instance was destroyed."))),a.length=0}}}(t,n);return Tu.set(e,r),r};var zu=n(1223),Iu=n(3073),Lu=n(1533),Pu=(0,Lu.A)("translatorMap"),Ru=(0,Lu.A)("detectorPromise"),Nu=(0,Lu.A)("lastReliableDetectedLanguage"),Ou=(0,Lu.A)("defaultProgressHandler"),Bu=(0,Lu.A)("getDetectorPromise"),Mu=(0,Lu.A)("createTranslator");function Wu(e,t){(0,Zi.h9)("Downloading ".concat(e," model: ").concat(t,"%"))}function Uu(){return(0,Iu.A)(this,Ru)[Ru]||((0,Iu.A)(this,Ru)[Ru]=(async()=>{try{if("unavailable"===await LanguageDetector.availability())throw new Error("LanguageDetector unavailable");return await LanguageDetector.create({monitor:e=>this._monitorProgress(e,"detector")})}catch(e){throw(0,Iu.A)(this,Ru)[Ru]=null,e}})()),(0,Iu.A)(this,Ru)[Ru]}function Vu(e,t){const n="".concat(e,"_").concat(t);if((0,Iu.A)(this,Pu)[Pu].has(n))return(0,Iu.A)(this,Pu)[Pu].get(n);const r=(async()=>{try{if("unavailable"===await Translator.availability({sourceLanguage:e,targetLanguage:t}))throw new Error("Translator ".concat(e,"_").concat(t," unavailable"));const r=await Translator.create({sourceLanguage:e,targetLanguage:t,monitor:e=>this._monitorProgress(e,"translator (".concat(n,")"))});return(0,Iu.A)(this,Pu)[Pu].set(n,r),r}catch(r){throw(0,Iu.A)(this,Pu)[Pu].delete(n),r}})();return(0,Iu.A)(this,Pu)[Pu].set(n,r),r}const Hu=new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.defineProperty(this,Mu,{value:Vu}),Object.defineProperty(this,Bu,{value:Uu}),Object.defineProperty(this,Ou,{value:Wu}),Object.defineProperty(this,Pu,{writable:!0,value:new Map}),Object.defineProperty(this,Ru,{writable:!0,value:null}),Object.defineProperty(this,Nu,{writable:!0,value:""}),this.onProgress=e.onProgress||(0,Iu.A)(this,Ou)[Ou]}_monitorProgress(e,t){e.addEventListener("downloadprogress",e=>{const n=e.total>0?Math.round(e.loaded/e.total*100):0;this.onProgress(t,n)})}async detectLanguage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.4;if(!e)return["","Input text cannot be empty."];try{const n=await(0,Iu.A)(this,Bu)[Bu](),r=await n.detect(e);if(!r||0===r.length)return["","No language could be detected."];const{detectedLanguage:o,confidence:a}=r[0];return a2&&void 0!==arguments[2]?arguments[2]:"auto";if(!e||!t||"string"!==typeof e)return["",n,"Input text cannot be empty."];try{let r=n;if("auto"===n){const[t,n]=await this.detectLanguage(e);if(n||!t){return["",r,"Automatic detection of source language failed: ".concat(n||"Unable to determine source language.")]}r=t}if(r===t)return["",r,"Same lang"];const o=await(0,Iu.A)(this,Mu)[Mu](r,t);return[await o.translate(e),r,""]}catch(r){return(0,Zi.h9)("translateText",r,"(".concat(e,")")),r&&r.message&&r.message.includes("Other generic failures occurred")&&(Zi.vF.info("Generic failure detected, resetting translator cache."),(0,Iu.A)(this,Pu)[Pu].clear()),["",n,r.message]}}},Gu=e=>Hu.detectLanguage(e.text),qu=e=>Hu.translateText(e.text,e.to,e.from);var Ku=n(1762),$u=n(9793);const Yu="prompt-cache",Xu="batch",Qu="nobatch",Ju="dict";function Zu(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return t===Xu?[e.systemPrompt||""]:t===Qu?[e.nobatchPrompt||"",null!==(n=e.nobatchUserPrompt)&&void 0!==n?n:Qi.EEo]:t===Ju?[e.dictPrompt||"",null!==(r=e.dictUserPrompt)&&void 0!==r?r:Qi.fkE]:[];var n,r}async function ec(){let e=arguments.length>1?arguments[1]:void 0;const t=[e,...Zu(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e)].join("\n");return(await zs(t,Yu)).slice(0,16)}const tc="https://api.github.com/gists",nc=e=>({Accept:"application/vnd.github+json",Authorization:"Bearer ".concat(e),"Content-type":"application/json","X-GitHub-Api-Version":"2022-11-28"}),rc=async()=>(0,Es.Fd)("https://edge.microsoft.com/translate/auth"),oc=async e=>{const t="https://fanyi.baidu.com/sug",n={headers:{"Content-type":"application/json"},method:"POST",body:JSON.stringify({kw:e})},r=await(0,Es.Fd)(t,n,{useCache:!0});return 0===(null===r||void 0===r?void 0:r.errno)?(await(0,Fu.v0)(t,n,r),r.data):[]},ac=async e=>{var t;const n={num:5,ver:3,doctype:"json",cache:!1,le:"en",q:e},r="https://dict.youdao.com/suggest?".concat(Ss.stringify(n)),o={headers:{accept:"application/json, text/plain, */*","accept-language":"en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ja;q=0.6","content-type":"application/x-www-form-urlencoded"},method:"GET"},a=await(0,Es.Fd)(r,o,{useCache:!0});return 200===(null===a||void 0===a||null===(t=a.result)||void 0===t?void 0:t.code)?(await(0,Fu.v0)(r,o,a),a.data.entries):[]},ic=async e=>{let{text:t,fromLang:n="auto",toLang:r,apiSetting:o=Qi.iVS,glossary:a,onStreamChunk:i,docInfo:s,useCache:l=!0,usePool:u=!0,signal:c}=e;if(!t)throw new Error("The text cannot be empty.");if(null!==c&&void 0!==c&&c.aborted)throw new DOMException("The operation was aborted.","AbortError");const{apiType:d,apiSlug:p,useBatchFetch:h}=o,f=Qi.k0k[d]||Qi.eA2,m=f.get(n),g=f.get(r);if(!g)throw new Error("The target lang: ".concat(r," not support"));const[v,y]="2.0.29".split("."),b=await ec(o,function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Qi.sNP.ai.has(e.apiType)?e.useBatchFetch&&Qi.sNP.batch.has(e.apiType)?Xu:Qu:"plain"}(o)),x=(0,It.A)({apiSlug:p,text:t,fromLang:n,toLang:r,version:[v,y].join("."),promptSig:b},(null===s||void 0===s?void 0:s.summary)&&{ctx:s.summary.slice(0,50)}),A="".concat(Qi.N8G,"?").concat(Ss.stringify(x));if(l){const e=await(0,Fu.QF)(A);if(null!==e&&void 0!==e&&e.trText)return e}if(null!==c&&void 0!==c&&c.aborted)throw new DOMException("The operation was aborted.","AbortError");let D=[];if(d===Qi.h8v)D=await(async e=>{let{text:t,from:n,to:r,apiSetting:o}=e;if(!zu.Lx)return["",!0];const{fetchInterval:a,fetchLimit:i,httpTimeout:s}=o,l=(0,$u.Fz)(a,i),u=await(0,_s.wj)(l.push(Es.Qy,{fn:qu,msg:Qi.J4u,text:t,from:n,to:r}),(0,Ku.Fb)(s));if(!u)throw new Error("apiBuiltinAITranslate got null reault");const[c,d,p]=u;if(p)throw new Error("apiBuiltinAITranslate got error: ".concat(p));return[c,d]})({text:t,from:m,to:g,apiSetting:o});else if(h&&Qi.sNP.batch.has(d)){const{apiSlug:e,batchInterval:l,batchSize:p,batchLength:h,batchConcurrency:v,useStream:y,useContext:x}=o,A=y&&Qi.sNP.stream.has(d),k=Number(v),w=x&&Qi.sNP.context.has(d)?1:Number.isFinite(k)&&k>=1?Math.floor(k):1,S="".concat(e,"_").concat(n,"_").concat(r,"_").concat(A?"stream":"batch","_").concat(b,"_").concat(w),E=ju(S,wu,{batchInterval:l,batchSize:p,batchLength:h,batchConcurrency:w});D=await E.addTask(t,{from:m,to:g,fromLang:n,toLang:r,langMap:f,glossary:a,apiSetting:o,usePool:u,onStreamChunk:i,docInfo:s,signal:c})}else{const e=wu([t],{from:m,to:g,fromLang:n,toLang:r,langMap:f,glossary:a,apiSetting:o,usePool:u,docInfo:s,onStreamChunk:i,signal:c});var k,w=!1,S=!1;try{for(var E,_=(0,es.A)(e);w=!(E=await _.next()).done;w=!1){const e=E.value;if(0!==e.id)continue;if(!(!1!==e.isComplete)){i&&i({id:e.id,text:e.partialText,isComplete:!1});continue}i&&i({id:e.id,text:e.result,isComplete:!0}),D=e.result}}catch(z){S=!0,k=z}finally{try{w&&null!=_.return&&await _.return()}finally{if(S)throw k}}}let C="",F="",T="";if(Array.isArray(D)?([C,F=""]=D,F&&(T=Qi.mSZ[d].get(F)||"")):"string"===typeof D&&(C=D),!C)throw new Error("tanslate api got empty trtext");const j="auto"===n&&F===g;return l&&(0,Fu.v0)(A,null,{trText:C,isSame:j,srLang:F,srCode:T}),{trText:C,srLang:F,srCode:T,isSame:j}},sc=async e=>{let{text:t,fromLang:n="auto",toLang:r,apiSetting:o=Qi.iVS,docInfo:a,context:i="",onStreamChunk:s,useCache:l=!0,signal:u}=e;if(!t)throw new Error("The text cannot be empty.");if(null!==u&&void 0!==u&&u.aborted)throw new DOMException("The operation was aborted.","AbortError");const{apiType:c}=o;if(!Qi.sNP.ai.has(c))throw new Error("AI dictionary only supports AI APIs.");const d=Qi.k0k[c]||Qi.eA2,p=d.get(n),h=d.get(r);if(!h)throw new Error("The target lang: ".concat(r," not support"));const[f,m]="2.0.29".split("."),g=a||ru(),v=await zs([(null===g||void 0===g?void 0:g.title)||"",(null===g||void 0===g?void 0:g.description)||"",(null===g||void 0===g?void 0:g.summary)||"",i||""].join("\n"),Yu),y={apiSlug:o.apiSlug,text:t,fromLang:n,toLang:r,version:[f,m].join("."),promptSig:await ec(o,Ju),contextSig:v.slice(0,16)},b="".concat(Qi.CQi,"?").concat(Ss.stringify(y));if(l){const e=await(0,Fu.QF)(b);if(null!==e&&void 0!==e&&e.markdown)return e.markdown}if(null!==u&&void 0!==u&&u.aborted)throw new DOMException("The operation was aborted.","AbortError");const x=await(async e=>{let{text:t,from:n,to:r,fromLang:o,toLang:a,apiSetting:i,docInfo:s,context:l="",onStreamChunk:u,signal:c}=e;if(null!==c&&void 0!==c&&c.aborted)throw new DOMException("The operation was aborted.","AbortError");const{apiType:d,fetchInterval:p,fetchLimit:h,httpTimeout:f,dictPrompt:m,dictUserPrompt:g}=i,v=Boolean(u)&&i.useStream&&Qi.sNP.stream.has(d);if(!m)throw new Error("AI dictionary prompt is empty.");const y=(0,It.A)((0,It.A)({},i),{},{useBatchFetch:!1,useStream:v,nobatchPrompt:m,nobatchUserPrompt:null!==g&&void 0!==g?g:Qi.fkE}),b=s||ru(),[x,A]=await Du((0,It.A)((0,It.A)({},y),{},{texts:[t],from:n,to:r,fromLang:o,toLang:a,docInfo:(0,It.A)((0,It.A)({},b||{}),{},{context:l})}));if(v){try{let e="";var D,k=!1,w=!1;try{for(var S,E=(0,es.A)((0,Es.xF)(x,A,{useCache:!1,usePool:!0,fetchInterval:p,fetchLimit:h,httpTimeout:f,signal:c}));k=!(S=await E.next()).done;k=!1){const t=S.value;try{const n=JSON.parse(t),r=(0,Xl.tN)(n,d);if(!r)continue;e+=r,e=(0,_s.if)(e,!0),u({markdown:e})}catch(F){if(null!==F&&void 0!==F&&F.isAIStreamTerminal)throw F}}}catch(T){w=!0,D=T}finally{try{k&&null!=E.return&&await E.return()}finally{if(w)throw D}}const t=(0,_s.if)(e).trim();if(!t)throw new Error("dictionary got empty content");return t}catch(T){if("AbortError"===(null===T||void 0===T?void 0:T.name))throw T;(0,Zi.h9)("dictionary stream failed, fallback to non-stream",T)}const[e,i]=await Du((0,It.A)((0,It.A)({},y),{},{useStream:!1,texts:[t],from:n,to:r,fromLang:o,toLang:a,docInfo:(0,It.A)((0,It.A)({},b||{}),{},{context:l})})),s=await(0,Es.Fd)(e,i,{useCache:!1,usePool:!0,fetchInterval:p,fetchLimit:h,httpTimeout:f,signal:c});if(!s)throw new Error("dictionary got empty response");const m=ku(s,d);if(!m)throw new Error("dictionary got empty content");return m}const _=await(0,Es.Fd)(x,A,{useCache:!1,usePool:!0,fetchInterval:p,fetchLimit:h,httpTimeout:f,signal:c});if(!_)throw new Error("dictionary got empty response");const C=ku(_,d);if(!C)throw new Error("dictionary got empty content");return C})({text:t,from:p,to:h,fromLang:n,toLang:r,apiSetting:o,docInfo:g,context:i,onStreamChunk:s,signal:u});return l&&(0,Fu.v0)(b,null,{markdown:x}),x};function lc(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function uc(e,t,n){lc(e,t),t.set(e,n)}var cc,dc=n(9371);function pc(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function hc(e,t){return e.get(pc(e,t))}function fc(e,t,n){return e.set(pc(e,t),n),n}var mc={2:e=>{function t(e,t,o){e instanceof RegExp&&(e=n(e,o)),t instanceof RegExp&&(t=n(t,o));var a=r(e,t,o);return a&&{start:a[0],end:a[1],pre:o.slice(0,a[0]),body:o.slice(a[0]+e.length,a[1]),post:o.slice(a[1]+t.length)}}function n(e,t){var n=t.match(e);return n?n[0]:null}function r(e,t,n){var r,o,a,i,s,l=n.indexOf(e),u=n.indexOf(t,l+1),c=l;if(l>=0&&u>0){for(r=[],a=n.length;c>=0&&!s;)c==l?(r.push(c),l=n.indexOf(e,c+1)):1==r.length?s=[r.pop(),u]:((o=r.pop())=0?l:u;r.length&&(s=[a,i])}return s}e.exports=t,t.range=r},101:function(e,t,r){var o;e=r.nmd(e),function(){var a=(e&&e.exports,"object"==typeof n.g&&n.g);a.global!==a&&a.window;var i=function(e){this.message=e};(i.prototype=new Error).name="InvalidCharacterError";var s=function(e){throw new i(e)},l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",u=/[\t\n\f\r ]/g,c={encode:function(e){e=String(e),/[^\0-\xFF]/.test(e)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var t,n,r,o,a=e.length%3,i="",u=-1,c=e.length-a;++u>18&63)+l.charAt(o>>12&63)+l.charAt(o>>6&63)+l.charAt(63&o);return 2==a?(t=e.charCodeAt(u)<<8,n=e.charCodeAt(++u),i+=l.charAt((o=t+n)>>10)+l.charAt(o>>4&63)+l.charAt(o<<2&63)+"="):1==a&&(o=e.charCodeAt(u),i+=l.charAt(o>>2)+l.charAt(o<<4&63)+"=="),i},decode:function(e){var t=(e=String(e).replace(u,"")).length;t%4==0&&(t=(e=e.replace(/==?$/,"")).length),(t%4==1||/[^+a-zA-Z0-9/]/.test(e))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var n,r,o=0,a="",i=-1;++i>(-2*o&6)));return a},version:"1.0.0"};void 0===(o=function(){return c}.call(t,r,t,e))||(e.exports=o)}()},172:(e,t)=>{t.d=function(e){if(!e)return 0;for(var t=(e=e.toString()).length,n=e.length;n--;){var r=e.charCodeAt(n);56320<=r&&r<=57343&&n--,127{var t={utf8:{stringToBytes:function(e){return t.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(t.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n{var t,n;t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n={rotl:function(e,t){return e<>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&n.rotl(e,8)|4278255360&n.rotl(e,24);for(var t=0;t0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],n=0,r=0;n>>5]|=e[n]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],n=0;n<32*e.length;n+=8)t.push(e[n>>>5]>>>24-n%32&255);return t},bytesToHex:function(e){for(var t=[],n=0;n>>4).toString(16)),t.push((15&e[n]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],n=0;n>>6*(3-a)&63)):n.push("=");return n.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var n=[],r=0,o=0;r>>6-2*o);return n}},e.exports=n},635:(e,t,n)=>{const r=n(31),o=n(338),a=n(221);e.exports={XMLParser:o,XMLValidator:r,XMLBuilder:a}},118:e=>{e.exports=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const n of e){if("string"==typeof n&&t===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}}:()=>!1}},705:(e,t)=>{const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",o=new RegExp("^"+r+"$");t.isExist=function(e){return void 0!==e},t.isEmptyObject=function(e){return 0===Object.keys(e).length},t.merge=function(e,t,n){if(t){const r=Object.keys(t),o=r.length;for(let a=0;a{const r=n(705),o={allowBooleanAttributes:!1,unpairedTags:[]};function a(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function i(e,t){const n=t;for(;t5&&"xml"===r)return f("InvalidXml","XML declaration allowed only at the start of the document.",g(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function s(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let n=1;for(t+=8;t"===e[t]&&(n--,0===n))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}t.validate=function(e,t){t=Object.assign({},o,t);const n=[];let l=!1,u=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let o=0;o"!==e[o]&&" "!==e[o]&&"\t"!==e[o]&&"\n"!==e[o]&&"\r"!==e[o];o++)y+=e[o];if(y=y.trim(),"/"===y[y.length-1]&&(y=y.substring(0,y.length-1),o--),d=y,!r.isName(d)){let t;return t=0===y.trim().length?"Invalid space after '<'.":"Tag '"+y+"' is an invalid name.",f("InvalidTag",t,g(e,o))}const b=c(e,o);if(!1===b)return f("InvalidAttr","Attributes for '"+y+"' have open quote.",g(e,o));let x=b.value;if(o=b.index,"/"===x[x.length-1]){const n=o-x.length;x=x.substring(0,x.length-1);const r=p(x,t);if(!0!==r)return f(r.err.code,r.err.msg,g(e,n+r.err.line));l=!0}else if(v){if(!b.tagClosed)return f("InvalidTag","Closing tag '"+y+"' doesn't have proper closing.",g(e,o));if(x.trim().length>0)return f("InvalidTag","Closing tag '"+y+"' can't have attributes or invalid starting.",g(e,m));if(0===n.length)return f("InvalidTag","Closing tag '"+y+"' has not been opened.",g(e,m));{const t=n.pop();if(y!==t.tagName){let n=g(e,t.tagStartPos);return f("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+n.line+", col "+n.col+") instead of closing tag '"+y+"'.",g(e,m))}0==n.length&&(u=!0)}}else{const r=p(x,t);if(!0!==r)return f(r.err.code,r.err.msg,g(e,o-x.length+r.err.line));if(!0===u)return f("InvalidXml","Multiple possible root nodes found.",g(e,o));-1!==t.unpairedTags.indexOf(y)||n.push({tagName:y,tagStartPos:m}),l=!0}for(o++;o0)||f("InvalidXml","Invalid '"+JSON.stringify(n.map(e=>e.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):f("InvalidXml","Start tag expected.",1)};const l='"',u="'";function c(e,t){let n="",r="",o=!1;for(;t"===e[t]&&""===r){o=!0;break}n+=e[t]}return""===r&&{value:n,index:t,tagClosed:o}}const d=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function p(e,t){const n=r.getAllMatches(e,d),o={};for(let r=0;r{const r=n(87),o=n(118),a={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function i(e){this.options=Object.assign({},a,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=o(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=u),this.processTextOrObjNode=s,this.options.format?(this.indentate=l,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function s(e,t,n,r){const o=this.j2x(e,n+1,r.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,o.attrStr,n):this.buildObjectNode(o.val,t,o.attrStr,n)}function l(e){return this.options.indentBy.repeat(e)}function u(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}i.prototype.build=function(e){return this.options.preserveOrder?r(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},i.prototype.j2x=function(e,t,n){let r="",o="";const a=n.join(".");for(let i in e)if(Object.prototype.hasOwnProperty.call(e,i))if(void 0===e[i])this.isAttribute(i)&&(o+="");else if(null===e[i])this.isAttribute(i)?o+="":"?"===i[0]?o+=this.indentate(t)+"<"+i+"?"+this.tagEndChar:o+=this.indentate(t)+"<"+i+"/"+this.tagEndChar;else if(e[i]instanceof Date)o+=this.buildTextValNode(e[i],i,"",t);else if("object"!=typeof e[i]){const n=this.isAttribute(i);if(n&&!this.ignoreAttributesFn(n,a))r+=this.buildAttrPairStr(n,""+e[i]);else if(!n)if(i===this.options.textNodeName){let t=this.options.tagValueProcessor(i,""+e[i]);o+=this.replaceEntitiesValue(t)}else o+=this.buildTextValNode(e[i],i,"",t)}else if(Array.isArray(e[i])){const r=e[i].length;let a="",s="";for(let l=0;l"+e+o}},i.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":">")+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+"\x3c!--".concat(e,"--\x3e")+this.newLine;if("?"===t[0])return this.indentate(r)+"<"+t+n+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(t,e);return o=this.replaceEntitiesValue(o),""===o?this.indentate(r)+"<"+t+n+this.closeTag(t)+this.tagEndChar:this.indentate(r)+"<"+t+n+">"+o+"0&&this.options.processEntities)for(let t=0;t{function t(e,i,s,l){let u="",c=!1;for(let d=0;d"),c=!1;continue}if(h===i.commentPropName){u+=l+"\x3c!--".concat(p[h][0][i.textNodeName],"--\x3e"),c=!0;continue}if("?"===h[0]){const e=r(p[":@"],i),t="?xml"===h?"":l;let n=p[h][0][i.textNodeName];n=0!==n.length?" "+n:"",u+=t+"<".concat(h).concat(n).concat(e,"?>"),c=!0;continue}let m=l;""!==m&&(m+=i.indentBy);const g=l+"<".concat(h).concat(r(p[":@"],i)),v=t(p[h],i,f,m);-1!==i.unpairedTags.indexOf(h)?i.suppressUnpairedNode?u+=g+">":u+=g+"/>":v&&0!==v.length||!i.suppressEmptyNode?v&&v.endsWith(">")?u+=g+">".concat(v).concat(l,""):(u+=g+">",v&&""!==l&&(v.includes("/>")||v.includes("")):u+=g+"/>",c=!0}return u}function n(e){const t=Object.keys(e);for(let n=0;n0&&t.processEntities)for(let n=0;n0&&(r="\n"),t(e,n,"",r)}},193:(e,t,n)=>{const r=n(705);function o(e,t){let n="";for(;t"===e[t]){if(p?"-"===e[t-1]&&"-"===e[t-2]&&(p=!1,r--):r--,0===r)break}else"["===e[t]?d=!0:h+=e[t];else{if(d&&i(e,t)){let r,a;t+=7,[r,a,t]=o(e,t+1),-1===a.indexOf("&")&&(n[c(r)]={regx:RegExp("&".concat(r,";"),"g"),val:a})}else if(d&&s(e,t))t+=8;else if(d&&l(e,t))t+=8;else if(d&&u(e,t))t+=9;else{if(!a)throw new Error("Invalid DOCTYPE");p=!0}r++,h=""}if(0!==r)throw new Error("Unclosed DOCTYPE")}return{entities:n,i:t}}},63:(e,t)=>{const n={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,n){return e}};t.buildOptions=function(e){return Object.assign({},n,e)},t.defaultOptions=n},299:(e,t,n)=>{const r=n(705),o=n(365),a=n(193),i=n(494),s=n(118);function l(e){const t=Object.keys(e);for(let n=0;n0)){i||(e=this.replaceEntitiesValue(e));const r=this.options.tagValueProcessor(t,e,n,o,a);return null==r?e:typeof r!=typeof e||r!==e?r:this.options.trimValues||e.trim()===e?A(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function c(e){if(this.options.removeNSPrefix){const t=e.split(":"),n="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=n+t[1])}return e}const d=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function p(e,t,n){if(!0!==this.options.ignoreAttributes&&"string"==typeof e){const n=r.getAllMatches(e,d),o=n.length,a={};for(let e=0;e",s,"Closing Tag is not closed.");let o=e.substring(s+2,t).trim();if(this.options.removeNSPrefix){const e=o.indexOf(":");-1!==e&&(o=o.substr(e+1))}this.options.transformTagName&&(o=this.options.transformTagName(o)),n&&(r=this.saveTextToParentTag(r,n,i));const a=i.substring(i.lastIndexOf(".")+1);if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error("Unpaired tag can not be used as closing tag: "));let l=0;a&&-1!==this.options.unpairedTags.indexOf(a)?(l=i.lastIndexOf(".",i.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=i.lastIndexOf("."),i=i.substring(0,l),n=this.tagsNodeStack.pop(),r="",s=t}else if("?"===e[s+1]){let t=b(e,s,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(r=this.saveTextToParentTag(r,n,i),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new o(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,i,t.tagName)),this.addChild(n,e,i)}s=t.closeIndex+1}else if("!--"===e.substr(s+1,3)){const t=y(e,"--\x3e",s+4,"Comment is not closed.");if(this.options.commentPropName){const o=e.substring(s+4,t-2);r=this.saveTextToParentTag(r,n,i),n.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}s=t}else if("!D"===e.substr(s+1,2)){const t=a(e,s);this.docTypeEntities=t.entities,s=t.i}else if("!["===e.substr(s+1,2)){const t=y(e,"]]>",s,"CDATA is not closed.")-2,o=e.substring(s+9,t);r=this.saveTextToParentTag(r,n,i);let a=this.parseTextData(o,n.tagname,i,!0,!1,!0,!0);null==a&&(a=""),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):n.add(this.options.textNodeName,a),s=t+2}else{let a=b(e,s,this.options.removeNSPrefix),l=a.tagName;const u=a.rawTagName;let c=a.tagExp,d=a.attrExpPresent,p=a.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),n&&r&&"!xml"!==n.tagname&&(r=this.saveTextToParentTag(r,n,i,!1));const h=n;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(n=this.tagsNodeStack.pop(),i=i.substring(0,i.lastIndexOf("."))),l!==t.tagname&&(i+=i?"."+l:l),this.isItStopNode(this.options.stopNodes,i,l)){let t="";if(c.length>0&&c.lastIndexOf("/")===c.length-1)"/"===l[l.length-1]?(l=l.substr(0,l.length-1),i=i.substr(0,i.length-1),c=l):c=c.substr(0,c.length-1),s=a.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(l))s=a.closeIndex;else{const n=this.readStopNodeData(e,u,p+1);if(!n)throw new Error("Unexpected end of ".concat(u));s=n.i,t=n.tagContent}const r=new o(l);l!==c&&d&&(r[":@"]=this.buildAttributesMap(c,i,l)),t&&(t=this.parseTextData(t,l,i,!0,d,!0,!0)),i=i.substr(0,i.lastIndexOf(".")),r.add(this.options.textNodeName,t),this.addChild(n,r,i)}else{if(c.length>0&&c.lastIndexOf("/")===c.length-1){"/"===l[l.length-1]?(l=l.substr(0,l.length-1),i=i.substr(0,i.length-1),c=l):c=c.substr(0,c.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));const e=new o(l);l!==c&&d&&(e[":@"]=this.buildAttributesMap(c,i,l)),this.addChild(n,e,i),i=i.substr(0,i.lastIndexOf("."))}else{const e=new o(l);this.tagsNodeStack.push(n),l!==c&&d&&(e[":@"]=this.buildAttributesMap(c,i,l)),this.addChild(n,e,i),n=e}r="",s=p}}else r+=e[s];return t.child};function f(e,t,n){const r=this.options.updateTag(t.tagname,n,t[":@"]);!1===r||("string"==typeof r?(t.tagname=r,e.addChild(t)):e.addChild(t))}const m=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const n=this.docTypeEntities[t];e=e.replace(n.regx,n.val)}for(let t in this.lastEntities){const n=this.lastEntities[t];e=e.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const n=this.htmlEntities[t];e=e.replace(n.regex,n.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function g(e,t,n,r){return e&&(void 0===r&&(r=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,n,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,r))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function v(e,t,n){const r="*."+n;for(const o in e){const n=e[o];if(r===n||t===n)return!0}return!1}function y(e,t,n,r){const o=e.indexOf(t,n);if(-1===o)throw new Error(r);return o+t.length-1}function b(e,t,n){const r=function(e,t){let n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:">",o="";for(let a=t;a3&&void 0!==arguments[3]?arguments[3]:">");if(!r)return;let o=r.data;const a=r.index,i=o.search(/\s/);let s=o,l=!0;-1!==i&&(s=o.substring(0,i),o=o.substring(i+1).trimStart());const u=s;if(n){const e=s.indexOf(":");-1!==e&&(s=s.substr(e+1),l=s!==r.data.substr(e+1))}return{tagName:s,tagExp:o,closeIndex:a,attrExpPresent:l,rawTagName:u}}function x(e,t,n){const r=n;let o=1;for(;n",n,"".concat(t," is not closed"));if(e.substring(n+2,a).trim()===t&&(o--,0===o))return{tagContent:e.substring(r,n),i:a};n=a}else if("?"===e[n+1])n=y(e,"?>",n+1,"StopNode is not closed.");else if("!--"===e.substr(n+1,3))n=y(e,"--\x3e",n+3,"StopNode is not closed.");else if("!["===e.substr(n+1,2))n=y(e,"]]>",n,"StopNode is not closed.")-2;else{const r=b(e,n,">");r&&((r&&r.tagName)===t&&"/"!==r.tagExp[r.tagExp.length-1]&&o++,n=r.closeIndex)}}function A(e,t,n){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&i(e,n)}return r.isExist(e)?e:""}e.exports=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\xa2"},pound:{regex:/&(pound|#163);/g,val:"\xa3"},yen:{regex:/&(yen|#165);/g,val:"\xa5"},euro:{regex:/&(euro|#8364);/g,val:"\u20ac"},copyright:{regex:/&(copy|#169);/g,val:"\xa9"},reg:{regex:/&(reg|#174);/g,val:"\xae"},inr:{regex:/&(inr|#8377);/g,val:"\u20b9"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=l,this.parseXml=h,this.parseTextData=u,this.resolveNameSpace=c,this.buildAttributesMap=p,this.isItStopNode=v,this.replaceEntitiesValue=m,this.readStopNodeData=x,this.saveTextToParentTag=g,this.addChild=f,this.ignoreAttributesFn=s(this.options.ignoreAttributes)}}},338:(e,t,n)=>{const{buildOptions:r}=n(63),o=n(299),{prettify:a}=n(728),i=n(31);e.exports=class{constructor(e){this.externalEntities={},this.options=r(e)}parse(e,t){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(t){!0===t&&(t={});const n=i.validate(e,t);if(!0!==n)throw Error("".concat(n.err.msg,":").concat(n.err.line,":").concat(n.err.col))}const n=new o(this.options);n.addExternalEntities(this.externalEntities);const r=n.parseXml(e);return this.options.preserveOrder||void 0===r?r:a(r,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}},728:(e,t)=>{function n(e,t,i){let s;const l={};for(let u=0;u0&&(l[t.textNodeName]=s):void 0!==s&&(l[t.textNodeName]=s),l}function r(e){const t=Object.keys(e);for(let n=0;n{e.exports=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}},135:e=>{function t(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(t(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&t(e.slice(0,0))}(e)||!!e._isBuffer)}},542:(e,t,n)=>{!function(){var t=n(298),r=n(526).utf8,o=n(135),a=n(526).bin,i=function(e,n){e.constructor==String?e=n&&"binary"===n.encoding?a.stringToBytes(e):r.stringToBytes(e):o(e)?e=Array.prototype.slice.call(e,0):Array.isArray(e)||e.constructor===Uint8Array||(e=e.toString());for(var s=t.bytesToWords(e),l=8*e.length,u=1732584193,c=-271733879,d=-1732584194,p=271733878,h=0;h>>24)|4278255360&(s[h]<<24|s[h]>>>8);s[l>>>5]|=128<>>9<<4)]=l;var f=i._ff,m=i._gg,g=i._hh,v=i._ii;for(h=0;h>>0,c=c+b>>>0,d=d+x>>>0,p=p+A>>>0}return t.endian([u,c,d,p])};i._ff=function(e,t,n,r,o,a,i){var s=e+(t&n|~t&r)+(o>>>0)+i;return(s<>>32-a)+t},i._gg=function(e,t,n,r,o,a,i){var s=e+(t&r|n&~r)+(o>>>0)+i;return(s<>>32-a)+t},i._hh=function(e,t,n,r,o,a,i){var s=e+(t^n^r)+(o>>>0)+i;return(s<>>32-a)+t},i._ii=function(e,t,n,r,o,a,i){var s=e+(n^(t|~r))+(o>>>0)+i;return(s<>>32-a)+t},i._blocksize=16,i._digestsize=16,e.exports=function(e,n){if(null==e)throw new Error("Illegal argument "+e);var r=t.wordsToBytes(i(e,n));return n&&n.asBytes?r:n&&n.asString?a.bytesToString(r):t.bytesToHex(r)}}()},285:(e,t,n)=>{var r=n(2);e.exports=function(e){return e?("{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2)),g(function(e){return e.split("\\\\").join(o).split("\\{").join(a).split("\\}").join(i).split("\\,").join(s).split("\\.").join(l)}(e),!0).map(c)):[]};var o="\0SLASH"+Math.random()+"\0",a="\0OPEN"+Math.random()+"\0",i="\0CLOSE"+Math.random()+"\0",s="\0COMMA"+Math.random()+"\0",l="\0PERIOD"+Math.random()+"\0";function u(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function c(e){return e.split(o).join("\\").split(a).join("{").split(i).join("}").split(s).join(",").split(l).join(".")}function d(e){if(!e)return[""];var t=[],n=r("{","}",e);if(!n)return e.split(",");var o=n.pre,a=n.body,i=n.post,s=o.split(",");s[s.length-1]+="{"+a+"}";var l=d(i);return i.length&&(s[s.length-1]+=l.shift(),s.push.apply(s,l)),t.push.apply(t,s),t}function p(e){return"{"+e+"}"}function h(e){return/^-?0\d/.test(e)}function f(e,t){return e<=t}function m(e,t){return e>=t}function g(e,t){var n=[],o=r("{","}",e);if(!o)return[e];var a=o.pre,s=o.post.length?g(o.post,!1):[""];if(/\$$/.test(o.pre))for(var l=0;l=0;if(!A&&!D)return o.post.match(/,.*\}/)?g(e=o.pre+"{"+o.body+i+o.post):[e];if(A)v=o.body.split(/\.\./);else if(1===(v=d(o.body)).length&&1===(v=g(v[0],!1).map(p)).length)return s.map(function(e){return o.pre+v[0]+e});if(A){var k=u(v[0]),w=u(v[1]),S=Math.max(v[0].length,v[1].length),E=3==v.length?Math.abs(u(v[2])):1,_=f;w0){var z=new Array(j+1).join("0");T=F<0?"-"+z+T.slice(1):z+T}}y.push(T)}}else{y=[];for(var I=0;I{function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}function n(e){var t="function"==typeof Map?new Map:void 0;return n=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,i)}function i(){return r(e,arguments,a(this).constructor)}return i.prototype=Object.create(e.prototype,{constructor:{value:i,enumerable:!1,writable:!0,configurable:!0}}),o(i,e)},n(e)}function r(e,t,n){return r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var a=new(Function.bind.apply(e,r));return n&&o(a,n.prototype),a},r.apply(null,arguments)}function o(e,t){return o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},o(e,t)}function a(e){return a=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},a(e)}var i=function(e){function n(e){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),(r=function(e,n){return!n||"object"!==t(n)&&"function"!=typeof n?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):n}(this,a(n).call(this,e))).name="ObjectPrototypeMutationError",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&o(e,t)}(n,e),n}(n(Error));function s(e,n){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=n.split("."),a=o.length,i=function(t){var n=o[t];if(!e)return{v:void 0};if("+"===n){if(Array.isArray(e))return{v:e.map(function(n,a){var i=o.slice(t+1);return i.length>0?s(n,i.join("."),r):r(e,a,o,t)})};var a=o.slice(0,t).join(".");throw new Error("Object at wildcard (".concat(a,") is not an array"))}e=r(e,n,o,t)},l=0;l2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=t(e)||null===e)return!1;if(void 0===n)return!1;if("number"==typeof n)return n in e;try{var o=!1;return s(e,n,function(e,t,n,a){if(!l(n,a))return e&&e[t];o=r.own?e.hasOwnProperty(t):t in e}),o}catch(e){return!1}},hasOwn:function(e,t,n){return this.has(e,t,n||{own:!0})},isIn:function(e,n,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=t(e)||null===e)return!1;if(void 0===n)return!1;try{var a=!1,i=!1;return s(e,n,function(e,n,o,s){return a=a||e===r||!!e&&e[n]===r,i=l(o,s)&&"object"===t(e)&&n in e,e&&e[n]}),o.validPath?a&&i:a}catch(e){return!1}},ObjectPrototypeMutationError:i}},47:(e,t,n)=>{var r=n(410),o=function(e){return"string"==typeof e};function a(e,t){for(var n=[],r=0;r=-1&&!t;n--){var r=n>=0?arguments[n]:process.cwd();if(!o(r))throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return(t?"/":"")+(e=a(e.split("/"),!t).join("/"))||"."},s.normalize=function(e){var t=s.isAbsolute(e),n="/"===e.substr(-1);return(e=a(e.split("/"),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e},s.isAbsolute=function(e){return"/"===e.charAt(0)},s.join=function(){for(var e="",t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n+1)}e=s.resolve(e).substr(1),t=s.resolve(t).substr(1);for(var r=n(e.split("/")),o=n(t.split("/")),a=Math.min(r.length,o.length),i=a,l=0;l{var n=Object.prototype.hasOwnProperty;function r(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function o(e){try{return encodeURIComponent(e)}catch(e){return null}}t.stringify=function(e,t){t=t||"";var r,a,i=[];for(a in"string"!=typeof t&&(t="?"),e)if(n.call(e,a)){if((r=e[a])||null!=r&&!isNaN(r)||(r=""),a=o(a),r=o(r),null===a||null===r)continue;i.push(a+"="+r)}return i.length?t+i.join("&"):""},t.parse=function(e){for(var t,n=/([^=?#&]+)=?([^&]*)/g,o={};t=n.exec(e);){var a=r(t[1]),i=r(t[2]);null===a||null===i||a in o||(o[a]=i)}return o}},670:e=>{e.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},494:e=>{const t=/^[-+]?0x[a-fA-F0-9]+$/,n=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};e.exports=function(e){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(o=Object.assign({},r,o),!e||"string"!=typeof e)return e;let a=e.trim();if(void 0!==o.skipLike&&o.skipLike.test(a))return e;if(o.hex&&t.test(a))return Number.parseInt(a,16);{const t=n.exec(a);if(t){const n=t[1],r=t[2];let s=(i=t[3])&&-1!==i.indexOf(".")?("."===(i=i.replace(/0+$/,""))?i="0":"."===i[0]?i="0"+i:"."===i[i.length-1]&&(i=i.substr(0,i.length-1)),i):i;const l=t[4]||t[6];if(!o.leadingZeros&&r.length>0&&n&&"."!==a[2])return e;if(!o.leadingZeros&&r.length>0&&!n&&"."!==a[1])return e;{const t=Number(a),i=""+t;return-1!==i.search(/[eE]/)||l?o.eNotation?t:e:-1!==a.indexOf(".")?"0"===i&&""===s||i===s||n&&i==="-"+s?t:e:r?s===i||n+s===i?t:e:a===i||a===n+i?t:e}}return e}var i}},737:(e,t,r)=>{var o=r(670),a=r(647),i=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,l=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,u=/:\d+$/,c=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,d=/^[a-zA-Z]:/;function p(e){return(e||"").toString().replace(i,"")}var h=[["#","hash"],["?","query"],function(e,t){return g(t.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function m(e){var t,r=("undefined"!=typeof window?window:"undefined"!=typeof n.g?n.g:"undefined"!=typeof self?self:{}).location||{},o={},a=typeof(e=e||r);if("blob:"===e.protocol)o=new y(unescape(e.pathname),{});else if("string"===a)for(t in o=new y(e,{}),f)delete o[t];else if("object"===a){for(t in e)t in f||(o[t]=e[t]);void 0===o.slashes&&(o.slashes=l.test(e.href))}return o}function g(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function v(e,t){e=(e=p(e)).replace(s,""),t=t||{};var n,r=c.exec(e),o=r[1]?r[1].toLowerCase():"",a=!!r[2],i=!!r[3],l=0;return a?i?(n=r[2]+r[3]+r[4],l=r[2].length+r[3].length):(n=r[2]+r[4],l=r[2].length):i?(n=r[3]+r[4],l=r[3].length):n=r[4],"file:"===o?l>=2&&(n=n.slice(2)):g(o)?n=r[4]:o?a&&(n=n.slice(2)):l>=2&&g(t.protocol)&&(n=r[4]),{protocol:o,slashes:a||g(o),slashesCount:l,rest:n}}function y(e,t,n){if(e=(e=p(e)).replace(s,""),!(this instanceof y))return new y(e,t,n);var r,i,l,u,c,f,b=h.slice(),x=typeof t,A=this,D=0;for("object"!==x&&"string"!==x&&(n=t,t=null),n&&"function"!=typeof n&&(n=a.parse),r=!(i=v(e||"",t=m(t))).protocol&&!i.slashes,A.slashes=i.slashes||r&&t.slashes,A.protocol=i.protocol||t.protocol||"",e=i.rest,("file:"===i.protocol&&(2!==i.slashesCount||d.test(e))||!i.slashes&&(i.protocol||i.slashesCount<2||!g(A.protocol)))&&(b[3]=[/(.*)/,"pathname"]);D{},388:()=>{},805:()=>{},345:()=>{},800:()=>{}},gc={};function vc(e){var t=gc[e];if(void 0!==t)return t.exports;var n=gc[e]={id:e,loaded:!1,exports:{}};return mc[e].call(n.exports,n,n.exports,vc),n.loaded=!0,n.exports}vc.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return vc.d(t,{a:t}),t},vc.d=(e,t)=>{for(var n in t)vc.o(t,n)&&!vc.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},vc.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),vc.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var yc={};vc.d(yc,{hT:()=>Gc,O4:()=>qc,Kd:()=>Vc,YK:()=>Hc,UU:()=>jh,Gu:()=>Zc,ky:()=>Lp,h4:()=>zp,ch:()=>Ip,hq:()=>wp,i5:()=>Pp});var bc=vc(737),xc=vc.n(bc);function Ac(e){if(!Dc(e))throw new Error("Parameter was not an error")}function Dc(e){return!!e&&"object"==typeof e&&"[object Error]"===(t=e,Object.prototype.toString.call(t))||e instanceof Error;var t}class kc extends Error{constructor(e,t){const n=[...arguments],{options:r,shortMessage:o}=function(e){let t,n="";if(0===e.length)t={};else if(Dc(e[0]))t={cause:e[0]},n=e.slice(1).join(" ")||"";else if(e[0]&&"object"==typeof e[0])t=Object.assign({},e[0]),n=e.slice(1).join(" ")||"";else{if("string"!=typeof e[0])throw new Error("Invalid arguments passed to Layerr");t={},n=n=e.join(" ")||""}return{options:t,shortMessage:n}}(n);let a=o;if(r.cause&&(a="".concat(a,": ").concat(r.cause.message)),super(a),this.message=a,r.name&&"string"==typeof r.name?this.name=r.name:this.name="Layerr",r.cause&&Object.defineProperty(this,"_cause",{value:r.cause}),Object.defineProperty(this,"_info",{value:{}}),r.info&&"object"==typeof r.info&&Object.assign(this._info,r.info),Error.captureStackTrace){const e=r.constructorOpt||this.constructor;Error.captureStackTrace(this,e)}}static cause(e){return Ac(e),e._cause&&Dc(e._cause)?e._cause:null}static fullStack(e){var t;Ac(e);const n=kc.cause(e);return n?"".concat(e.stack,"\ncaused by: ").concat(kc.fullStack(n)):null!==(t=e.stack)&&void 0!==t?t:""}static info(e){Ac(e);const t={},n=kc.cause(e);return n&&Object.assign(t,kc.info(n)),e._info&&Object.assign(t,e._info),t}toString(){let e=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(e="".concat(e,": ").concat(this.message)),e}}var wc=vc(47),Sc=vc.n(wc);const Ec="__PATH_SEPARATOR_POSIX__",_c="__PATH_SEPARATOR_WINDOWS__";function Cc(e){try{const t=e.replace(/\//g,Ec).replace(/\\\\/g,_c);return encodeURIComponent(t).split(_c).join("\\\\").split(Ec).join("/")}catch(e){throw new kc(e,"Failed encoding path")}}function Fc(e){return e.startsWith("/")?e:"/"+e}function Tc(e){let t=e;return"/"!==t[0]&&(t="/"+t),/^.+\/$/.test(t)&&(t=t.substr(0,t.length-1)),t}function jc(e){let t=new(xc())(e).pathname;return t.length<=0&&(t="/"),Tc(t)}function zc(){for(var e=arguments.length,t=new Array(e),n=0;n1){var n=e.shift();e[0]=n+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var r=0;r0&&(o=o.replace(/^[\/]+/,"")),o=r0?"?":"")+i.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}(t.reduce((e,t,n)=>((0===n||"/"!==t||"/"===t&&"/"!==e[e.length-1])&&e.push(t),e),[]))}var Ic=vc(542),Lc=vc.n(Ic);function Pc(e,t){const n=e.url.replace("//",""),r=-1==n.indexOf("/")?"/":n.slice(n.indexOf("/")),o=e.method?e.method.toUpperCase():"GET",a=!!/(^|,)\s*auth\s*($|,)/.test(t.qop)&&"auth",i="00000000".concat(t.nc).slice(-8),s=function(e,t,n,r,o,a,i){const s=i||Lc()("".concat(t,":").concat(n,":").concat(r));return e&&"md5-sess"===e.toLowerCase()?Lc()("".concat(s,":").concat(o,":").concat(a)):s}(t.algorithm,t.username,t.realm,t.password,t.nonce,t.cnonce,t.ha1),l=Lc()("".concat(o,":").concat(r)),u=a?Lc()("".concat(s,":").concat(t.nonce,":").concat(i,":").concat(t.cnonce,":").concat(a,":").concat(l)):Lc()("".concat(s,":").concat(t.nonce,":").concat(l)),c={username:t.username,realm:t.realm,nonce:t.nonce,uri:r,qop:a,response:u,nc:i,cnonce:t.cnonce,algorithm:t.algorithm,opaque:t.opaque},d=[];for(const p in c)c[p]&&("qop"===p||"nc"===p||"algorithm"===p?d.push("".concat(p,"=").concat(c[p])):d.push("".concat(p,'="').concat(c[p],'"')));return"Digest ".concat(d.join(", "))}function Rc(e){return"digest"===(e.headers&&e.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}var Nc=vc(101),Oc=vc.n(Nc);function Bc(e){return Oc().decode(e)}function Mc(e,t){var n;return"Basic ".concat((n="".concat(e,":").concat(t),Oc().encode(n)))}const Wc="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,Uc=Wc.fetch.bind(Wc),Vc=(Wc.Headers,Wc.Request),Hc=Wc.Response;let Gc=function(e){return e.Auto="auto",e.Digest="digest",e.None="none",e.Password="password",e.Token="token",e}({}),qc=function(e){return e.DataTypeNoLength="data-type-no-length",e.InvalidAuthType="invalid-auth-type",e.InvalidOutputFormat="invalid-output-format",e.LinkUnsupportedAuthType="link-unsupported-auth",e.InvalidUpdateRange="invalid-update-range",e.NotSupported="not-supported",e}({});function Kc(e,t,n,r,o){switch(e.authType){case Gc.Auto:t&&n&&(e.headers.Authorization=Mc(t,n));break;case Gc.Digest:e.digest=function(e,t,n){return{username:e,password:t,ha1:n,nc:0,algorithm:"md5",hasDigestAuth:!1}}(t,n,o);break;case Gc.None:break;case Gc.Password:e.headers.Authorization=Mc(t,n);break;case Gc.Token:e.headers.Authorization="".concat((a=r).token_type," ").concat(a.access_token);break;default:throw new kc({info:{code:qc.InvalidAuthType}},"Invalid auth type: ".concat(e.authType))}var a}vc(345),vc(800);const $c="@@HOTPATCHER",Yc=()=>{};function Xc(e){return{original:e,methods:[e],final:!1}}class Qc{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=$c}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(e){this.configuration.getEmptyAction=e}control(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e||e.__type__!==$c)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(e.configuration.registry).forEach(n=>{this.configuration.registry.hasOwnProperty(n)?t&&(this.configuration.registry[n]=Object.assign({},e.configuration.registry[n])):this.configuration.registry[n]=Object.assign({},e.configuration.registry[n])}),e._configuration=this.configuration,this}execute(e){const t=this.get(e)||Yc;for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o0;)o=[t.shift().apply(a,o)];return o[0]}}(...t.methods)}isPatched(e){return!!this.configuration.registry[e]}patch(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{chain:r=!1}=n;if(this.configuration.registry[e]&&this.configuration.registry[e].final)throw new Error("Failed patching '".concat(e,"': Method marked as being final"));if("function"!=typeof t)throw new Error("Failed patching '".concat(e,"': Provided method is not a function"));if(r)this.configuration.registry[e]?this.configuration.registry[e].methods.push(t):this.configuration.registry[e]=Xc(t);else if(this.isPatched(e)){const{original:n}=this.configuration.registry[e];this.configuration.registry[e]=Object.assign(Xc(t),{original:n})}else this.configuration.registry[e]=Xc(t);return this}patchInline(e,t){this.isPatched(e)||this.patch(e,t);for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o1?t-1:0),r=1;r{this.patch(e,t,{chain:!0})}),this}restore(e){if(!this.isPatched(e))throw new Error("Failed restoring method: No method present for key: ".concat(e));if("function"!=typeof this.configuration.registry[e].original)throw new Error("Failed restoring method: Original method not found or of invalid type for key: ".concat(e));return this.configuration.registry[e].methods=[this.configuration.registry[e].original],this}setFinal(e){if(!this.configuration.registry.hasOwnProperty(e))throw new Error("Failed marking '".concat(e,"' as final: No method found for key"));return this.configuration.registry[e].final=!0,this}}let Jc=null;function Zc(){return Jc||(Jc=new Qc),Jc}function ed(e){return function(e){if("object"!=typeof e||null===e||"[object Object]"!=Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}(e)?Object.assign({},e):Object.setPrototypeOf(Object.assign({},e),Object.getPrototypeOf(e))}function td(){for(var e=arguments.length,t=new Array(e),n=0;n0;){const e=o.shift();r=r?nd(r,e):ed(e)}return r}function nd(e,t){const n=ed(e);return Object.keys(t).forEach(e=>{n.hasOwnProperty(e)?Array.isArray(t[e])?n[e]=Array.isArray(n[e])?[...n[e],...t[e]]:[...t[e]]:"object"==typeof t[e]&&t[e]?n[e]="object"==typeof n[e]&&n[e]?nd(n[e],t[e]):ed(t[e]):n[e]=t[e]:n[e]=t[e]}),n}function rd(e){const t={};for(const n of e.keys())t[n]=e.get(n);return t}function od(){for(var e=arguments.length,t=new Array(e),n=0;n(Object.keys(t).forEach(n=>{const o=n.toLowerCase();r.hasOwnProperty(o)?e[r[o]]=t[n]:(r[o]=n,e[n]=t[n])}),e),{})}vc(805);const ad="function"==typeof ArrayBuffer,{toString:id}=Object.prototype;function sd(e){return ad&&(e instanceof ArrayBuffer||"[object ArrayBuffer]"===id.call(e))}function ld(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function ud(e){return function(){for(var t=[],n=0;nt.patchInline("fetch",Uc,e.url,function(e){let t={};const n={method:e.method};if(e.headers&&(t=od(t,e.headers)),void 0!==e.data){const[r,o]=function(e){if("string"==typeof e)return[e,{}];if(ld(e))return[e,{}];if(sd(e))return[e,{}];if(e&&"object"==typeof e)return[JSON.stringify(e),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof e)}(e.data);n.body=r,t=od(t,o)}return e.signal&&(n.signal=e.signal),e.withCredentials&&(n.credentials="include"),n.headers=t,n}(e)),e)}var gd=vc(285);const vd=e=>{if("string"!=typeof e)throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")},yd={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},bd=e=>e.replace(/[[\]\\-]/g,"\\$&"),xd=e=>e.join(""),Ad=(e,t)=>{const n=t;if("["!==e.charAt(n))throw new Error("not in a brace expression");const r=[],o=[];let a=n+1,i=!1,s=!1,l=!1,u=!1,c=n,d="";e:for(;ad?r.push(bd(d)+"-"+bd(t)):t===d&&r.push(bd(t)),d="",a++):e.startsWith("-]",a+1)?(r.push(bd(t+"-")),a+=2):e.startsWith("-",a+1)?(d=t,a+=2):(r.push(bd(t)),a++)}else l=!0,a++}else u=!0,a++}if(c1&&void 0!==arguments[1]?arguments[1]:{};return t?e.replace(/\[([^\/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")},kd=new Set(["!","?","+","*","@"]),wd=e=>kd.has(e),Sd="(?!\\.)",Ed=new Set(["[","."]),_d=new Set(["..","."]),Cd=new Set("().*{}+?[]^$\\!"),Fd="[^/]",Td=Fd+"*?",jd=Fd+"+?";var zd=new WeakMap,Id=new WeakMap,Ld=new WeakMap,Pd=new WeakMap,Rd=new WeakMap,Nd=new WeakMap,Od=new WeakMap,Bd=new WeakMap,Md=new WeakMap,Wd=new WeakMap,Ud=new WeakMap,Vd=new WeakSet;class Hd{constructor(e,t){!function(e,t){lc(e,t),t.add(e)}(this,Vd),(0,dc.A)(this,"type",void 0),uc(this,zd,void 0),uc(this,Id,void 0),uc(this,Ld,!1),uc(this,Pd,[]),uc(this,Rd,void 0),uc(this,Nd,void 0),uc(this,Od,void 0),uc(this,Bd,!1),uc(this,Md,void 0),uc(this,Wd,void 0),uc(this,Ud,!1);let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.type=e,e&&fc(Id,this,!0),fc(Rd,this,t),fc(zd,this,hc(Rd,this)?hc(zd,hc(Rd,this)):this),fc(Md,this,hc(zd,this)===this?n:hc(Md,hc(zd,this))),fc(Od,this,hc(zd,this)===this?[]:hc(Od,hc(zd,this))),"!"!==e||hc(Bd,hc(zd,this))||hc(Od,this).push(this),fc(Nd,this,hc(Rd,this)?hc(Pd,hc(Rd,this)).length:0)}get hasMagic(){if(void 0!==hc(Id,this))return hc(Id,this);for(const e of hc(Pd,this))if("string"!=typeof e&&(e.type||e.hasMagic))return fc(Id,this,!0);return hc(Id,this)}toString(){return void 0!==hc(Wd,this)?hc(Wd,this):this.type?fc(Wd,this,this.type+"("+hc(Pd,this).map(e=>String(e)).join("|")+")"):fc(Wd,this,hc(Pd,this).map(e=>String(e)).join(""))}push(){for(var e=arguments.length,t=new Array(e),n=0;n"string"==typeof e?e:e.toJSON()):[this.type,...hc(Pd,this).map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===hc(zd,this)||hc(Bd,hc(zd,this))&&"!"===(null===(e=hc(Rd,this))||void 0===e?void 0:e.type))&&t.push({}),t}isStart(){var e;if(hc(zd,this)===this)return!0;if(null===(e=hc(Rd,this))||void 0===e||!e.isStart())return!1;if(0===hc(Nd,this))return!0;const t=hc(Rd,this);for(let n=0;n1&&void 0!==arguments[1]?arguments[1]:{};const n=new Hd(null,void 0,t);return qd.call(Hd,e,n,0,t),n}toMMPattern(){if(this!==hc(zd,this))return hc(zd,this).toMMPattern();const e=this.toString(),[t,n,r,o]=this.toRegExpSource();if(!(r||hc(Id,this)||hc(Md,this).nocase&&!hc(Md,this).nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return n;const a=(hc(Md,this).nocase?"i":"")+(o?"u":"");return Object.assign(new RegExp("^".concat(t,"$"),a),{_src:t,_glob:e})}get options(){return hc(Md,this)}toRegExpSource(e){const t=null!==e&&void 0!==e?e:!!hc(Md,this).dot;if(hc(zd,this)===this&&pc(Vd,this,Gd).call(this),!this.type){var n;const r=this.isStart()&&this.isEnd(),o=hc(Pd,this).map(t=>{const[n,o,a,i]="string"==typeof t?$d.call(Hd,t,hc(Id,this),r):t.toRegExpSource(e);return fc(Id,this,hc(Id,this)||a),fc(Ld,this,hc(Ld,this)||i),n}).join("");let a="";if(this.isStart()&&"string"==typeof hc(Pd,this)[0]&&(1!==hc(Pd,this).length||!_d.has(hc(Pd,this)[0]))){const n=Ed,r=t&&n.has(o.charAt(0))||o.startsWith("\\.")&&n.has(o.charAt(2))||o.startsWith("\\.\\.")&&n.has(o.charAt(4)),i=!t&&!e&&n.has(o.charAt(0));a=r?"(?!(?:^|/)\\.\\.?(?:$|/))":i?Sd:""}let i="";return this.isEnd()&&hc(Bd,hc(zd,this))&&"!"===(null===(n=hc(Rd,this))||void 0===n?void 0:n.type)&&(i="(?:$|\\/)"),[a+o+i,Dd(o),fc(Id,this,!!hc(Id,this)),hc(Ld,this)]}const r="*"===this.type||"+"===this.type,o="!"===this.type?"(?:(?!(?:":"(?:";let a=pc(Vd,this,Kd).call(this,t);if(this.isStart()&&this.isEnd()&&!a&&"!"!==this.type){const e=this.toString();return fc(Pd,this,[e]),this.type=null,fc(Id,this,void 0),[e,Dd(this.toString()),!1,!1]}let i=!r||e||t?"":pc(Vd,this,Kd).call(this,!0);i===a&&(i=""),i&&(a="(?:".concat(a,")(?:").concat(i,")*?"));let s="";return s="!"===this.type&&hc(Ud,this)?(this.isStart()&&!t?Sd:"")+jd:o+a+("!"===this.type?"))"+(!this.isStart()||t||e?"":Sd)+Td+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&i?")":"*"===this.type&&i?")?":")".concat(this.type)),[s,Dd(a),fc(Id,this,!!hc(Id,this)),hc(Ld,this)]}}function Gd(){if(this!==hc(zd,this))throw new Error("should only call on root");if(hc(Bd,this))return this;let e;for(this.toString(),fc(Bd,this,!0);e=hc(Od,this).pop();){if("!"!==e.type)continue;let t=e,n=hc(Rd,t);for(;n;){for(let r=hc(Nd,t)+1;!n.type&&r{if("string"==typeof t)throw new Error("string type in extglob ast??");const[n,r,o,a]=t.toRegExpSource(e);return fc(Ld,this,hc(Ld,this)||a),n}).filter(e=>!(this.isStart()&&this.isEnd()&&!e)).join("|")}function $d(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=!1,o="",a=!1;for(let i=0;i2&&void 0!==arguments[2]?arguments[2]:{};return vd(t),!(!n.nocomment&&"#"===t.charAt(0))&&new Ap(t,n).match(e)},Xd=/^\*+([^+@!?\*\[\(]*)$/,Qd=e=>t=>!t.startsWith(".")&&t.endsWith(e),Jd=e=>t=>t.endsWith(e),Zd=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),ep=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),tp=/^\*+\.\*+$/,np=e=>!e.startsWith(".")&&e.includes("."),rp=e=>"."!==e&&".."!==e&&e.includes("."),op=/^\.\*+$/,ap=e=>"."!==e&&".."!==e&&e.startsWith("."),ip=/^\*+$/,sp=e=>0!==e.length&&!e.startsWith("."),lp=e=>0!==e.length&&"."!==e&&".."!==e,up=/^\?+([^+@!?\*\[\(]*)?$/,cp=e=>{let[t,n=""]=e;const r=fp([t]);return n?(n=n.toLowerCase(),e=>r(e)&&e.toLowerCase().endsWith(n)):r},dp=e=>{let[t,n=""]=e;const r=mp([t]);return n?(n=n.toLowerCase(),e=>r(e)&&e.toLowerCase().endsWith(n)):r},pp=e=>{let[t,n=""]=e;const r=mp([t]);return n?e=>r(e)&&e.endsWith(n):r},hp=e=>{let[t,n=""]=e;const r=fp([t]);return n?e=>r(e)&&e.endsWith(n):r},fp=e=>{let[t]=e;const n=t.length;return e=>e.length===n&&!e.startsWith(".")},mp=e=>{let[t]=e;const n=t.length;return e=>e.length===n&&"."!==e&&".."!==e},gp="object"==typeof process&&process?{NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0,REACT_APP_CLIENT:"firefox",REACT_APP_HOMEPAGE:"https://github.com/fishjar/kiss-translator",REACT_APP_LOGOURL:"https://kiss-translator.rayjar.com/images/logo192.png",REACT_APP_NAME:"KISS Translator",REACT_APP_NAME_CN:"\u7b80\u7ea6\u7ffb\u8bd1",REACT_APP_OPTIONSPAGE:"https://kiss-translator.rayjar.com/options",REACT_APP_OPTIONSPAGE_DEV:"https://kiss-translator-dev.rayjar.com/options",REACT_APP_OPTIONSPAGE_GITHUB:"https://fishjar.github.io/kiss-translator/options.html",REACT_APP_OPTIONSPAGE_LOCAL:"http://localhost:3000/options.html",REACT_APP_RELEASES_URL:"https://github.com/fishjar/kiss-translator/releases",REACT_APP_RULESURL:"https://fishjar.github.io/kiss-rules/kiss-rules_v2.json",REACT_APP_RULESURL_OFF:"https://fishjar.github.io/kiss-rules/kiss-rules-off_v2.json",REACT_APP_RULESURL_ON:"https://fishjar.github.io/kiss-rules/kiss-rules-on_v2.json",REACT_APP_SITEURL:"https://kiss-translator.rayjar.com",REACT_APP_SITEURL_DEV:"https://kiss-translator-dev.rayjar.com",REACT_APP_SITEURL_GITHUB:"https://fishjar.github.io/kiss-translator",REACT_APP_USERSCRIPT_DOWNLOADURL:"https://kiss-translator.rayjar.com/kiss-translator.user.js",REACT_APP_USERSCRIPT_IOS_DOWNLOADURL:"https://kiss-translator.rayjar.com/kiss-translator-ios-safari.user.js",REACT_APP_VERSION:"2.0.29",REACT_APP_VERSION_URL:"https://kiss-translator.rayjar.com/version.txt",REACT_APP_VERSION_URL_DEV:"https://kiss-translator-dev.rayjar.com/version.txt",REACT_APP_VERSION_URL_GITHUB:"https://fishjar.github.io/kiss-translator/version.txt"}.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix";Yd.sep="win32"===gp?"\\":"/";const vp=Symbol("globstar **");Yd.GLOBSTAR=vp,Yd.filter=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n=>Yd(n,e,t)};const yp=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.assign({},e,t)};Yd.defaults=e=>{if(!e||"object"!=typeof e||!Object.keys(e).length)return Yd;const t=Yd;return Object.assign(function(n,r){return t(n,r,yp(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))},{Minimatch:class extends t.Minimatch{constructor(t){super(t,yp(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}))}static defaults(n){return t.defaults(yp(e,n)).Minimatch}},AST:class extends t.AST{constructor(t,n){super(t,n,yp(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))}static fromGlob(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.AST.fromGlob(n,yp(e,r))}},unescape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.unescape(n,yp(e,r))},escape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.escape(n,yp(e,r))},filter:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.filter(n,yp(e,r))},defaults:n=>t.defaults(yp(e,n)),makeRe:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.makeRe(n,yp(e,r))},braceExpand:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.braceExpand(n,yp(e,r))},match:function(n,r){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.match(n,r,yp(e,o))},sep:t.sep,GLOBSTAR:vp})};const bp=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return vd(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:gd(e)};Yd.braceExpand=bp,Yd.makeRe=function(e){return new Ap(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).makeRe()},Yd.match=function(e,t){const n=new Ap(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{});return e=e.filter(e=>n.match(e)),n.options.nonull&&!e.length&&e.push(t),e};const xp=/[?*]|[+@!]\(.*?\)|\[|\]/;class Ap{constructor(e){(0,dc.A)(this,"options",void 0),(0,dc.A)(this,"set",void 0),(0,dc.A)(this,"pattern",void 0),(0,dc.A)(this,"windowsPathsNoEscape",void 0),(0,dc.A)(this,"nonegate",void 0),(0,dc.A)(this,"negate",void 0),(0,dc.A)(this,"comment",void 0),(0,dc.A)(this,"empty",void 0),(0,dc.A)(this,"preserveMultipleSlashes",void 0),(0,dc.A)(this,"partial",void 0),(0,dc.A)(this,"globSet",void 0),(0,dc.A)(this,"globParts",void 0),(0,dc.A)(this,"nocase",void 0),(0,dc.A)(this,"isWindows",void 0),(0,dc.A)(this,"platform",void 0),(0,dc.A)(this,"windowsNoMagicRoot",void 0),(0,dc.A)(this,"regexp",void 0);let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};vd(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||gp,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||!1===t.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==t.windowsNoMagicRoot?t.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const e of this.set)for(const t of e)if("string"!=typeof t)return!0;return!1}debug(){}make(){const e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=function(){return console.error(...arguments)}),this.debug(this.pattern,this.globSet);const n=this.globSet.map(e=>this.slashSplit(e));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((e,t,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){const t=!(""!==e[0]||""!==e[1]||"?"!==e[2]&&xp.test(e[2])||xp.test(e[3])),n=/^[a-z]:/i.test(e[0]);if(t)return[...e.slice(0,4),...e.slice(4).map(e=>this.parse(e))];if(n)return[e[0],...e.slice(1).map(e=>this.parse(e))]}return e.map(e=>this.parse(e))});if(this.debug(this.pattern,r),this.set=r.filter(e=>-1===e.indexOf(!1)),this.isWindows)for(let o=0;o=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(e=>{let t=-1;for(;-1!==(t=e.indexOf("**",t+1));){let n=t;for(;"**"===e[n+1];)n++;n!==t&&e.splice(t,n-t)}return e})}levelOneOptimize(e){return e.map(e=>0===(e=e.reduce((e,t)=>{const n=e[e.length-1];return"**"===t&&"**"===n?e:".."===t&&n&&".."!==n&&"."!==n&&"**"!==n?(e.pop(),e):(e.push(t),e)},[])).length?[""]:e)}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let n=1;nr&&n.splice(r+1,o-r);let a=n[r+1];const i=n[r+2],s=n[r+3];if(".."!==a)continue;if(!i||"."===i||".."===i||!s||"."===s||".."===s)continue;t=!0,n.splice(r,1);const l=n.slice(0);l[r]="**",e.push(l),r--}if(!this.preserveMultipleSlashes){for(let e=1;ee.length)}partsMatch(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=0,o=0,a=[],i="";for(;r2&&void 0!==arguments[2]&&arguments[2];const r=this.options;if(this.isWindows){const n="string"==typeof e[0]&&/^[a-z]:$/i.test(e[0]),r=!n&&""===e[0]&&""===e[1]&&"?"===e[2]&&/^[a-z]:$/i.test(e[3]),o="string"==typeof t[0]&&/^[a-z]:$/i.test(t[0]),a=r?3:n?0:void 0,i=!o&&""===t[0]&&""===t[1]&&"?"===t[2]&&"string"==typeof t[3]&&/^[a-z]:$/i.test(t[3])?3:o?0:void 0;if("number"==typeof a&&"number"==typeof i){const[n,r]=[e[a],t[i]];n.toLowerCase()===r.toLowerCase()&&(t[i]=n,i>a?t=t.slice(i):a>i&&(e=e.slice(a)))}}const{optimizationLevel:o=1}=this.options;o>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var a=0,i=0,s=e.length,l=t.length;a>> no match, partial?",e,d,t,p),d!==s))}let o;if("string"==typeof u?(o=c===u,this.debug("string match",u,c,o)):(o=u.test(c),this.debug("pattern match",u,c,o)),!o)return!1}if(a===s&&i===l)return!0;if(a===s)return n;if(i===l)return a===s-1&&""===e[a];throw new Error("wtf?")}braceExpand(){return bp(this.pattern,this.options)}parse(e){vd(e);const t=this.options;if("**"===e)return vp;if(""===e)return"";let n,r=null;(n=e.match(ip))?r=t.dot?lp:sp:(n=e.match(Xd))?r=(t.nocase?t.dot?ep:Zd:t.dot?Jd:Qd)(n[1]):(n=e.match(up))?r=(t.nocase?t.dot?dp:cp:t.dot?pp:hp)(n):(n=e.match(tp))?r=t.dot?rp:np:(n=e.match(op))&&(r=ap);const o=Hd.fromGlob(e,this.options).toMMPattern();return r&&"object"==typeof o&&Reflect.defineProperty(o,"test",{value:r}),o}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const e=this.set;if(!e.length)return this.regexp=!1,this.regexp;const t=this.options,n=t.noglobstar?"[^/]*?":t.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",r=new Set(t.nocase?["i"]:[]);let o=e.map(e=>{const t=e.map(e=>{if(e instanceof RegExp)for(const t of e.flags.split(""))r.add(t);return"string"==typeof e?e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):e===vp?vp:e._src});return t.forEach((e,r)=>{const o=t[r+1],a=t[r-1];e===vp&&a!==vp&&(void 0===a?void 0!==o&&o!==vp?t[r+1]="(?:\\/|"+n+"\\/)?"+o:t[r]=n:void 0===o?t[r-1]=a+"(?:\\/|"+n+")?":o!==vp&&(t[r-1]=a+"(?:\\/|\\/"+n+"\\/)"+o,t[r+1]=vp))}),t.filter(e=>e!==vp).join("/")}).join("|");const[a,i]=e.length>1?["(?:",")"]:["",""];o="^"+a+o+i+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...r].join(""))}catch(e){this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.partial;if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;const n=this.options;this.isWindows&&(e=e.split("\\").join("/"));const r=this.slashSplit(e);this.debug(this.pattern,"split",r);const o=this.set;this.debug(this.pattern,"set",o);let a=r[r.length-1];if(!a)for(let i=r.length-2;!a&&i>=0;i--)a=r[i];for(let i=0;i1&&void 0!==arguments[1]?arguments[1]:"","Invalid response: ").concat(e.status," ").concat(e.statusText));return t.status=e.status,t.response=e,t}function kp(e,t){const{status:n}=t;if(401===n&&e.digest)return t;if(n>=400)throw Dp(t);return t}function wp(e,t){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]?{data:t,headers:e.headers?rd(e.headers):{},status:e.status,statusText:e.statusText}:t}Yd.AST=Hd,Yd.Minimatch=Ap,Yd.escape=function(e){let{windowsPathsNoEscape:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&")},Yd.unescape=Dd;const Sp=(Ep=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const o=fd({url:zc(e.remoteURL,Cc(t)),method:"COPY",headers:{Destination:zc(e.remoteURL,Cc(n)),Overwrite:!1===r.overwrite?"F":"T",Depth:r.shallow?"0":"infinity"}},e,r);return i=function(t){kp(e,t)},(a=hd(o,e))&&a.then||(a=Promise.resolve(a)),i?a.then(i):a;var a,i},function(){for(var e=[],t=0;t2&&void 0!==arguments[2]?arguments[2]:Tp.Original;const r=Fp().get(e,t);return"array"===n&&!1===Array.isArray(r)?[r]:"object"===n&&Array.isArray(r)?r[0]:r}function zp(e){return new Promise(t=>{t(function(e){const{multistatus:t}=e;if(""===t)return{multistatus:{response:[]}};if(!t)throw new Error("Invalid response: No root multistatus found");const n={multistatus:Array.isArray(t)?t[0]:t};return Fp().set(n,"multistatus.response",jp(n,"multistatus.response",Tp.Array)),Fp().set(n,"multistatus.response",Fp().get(n,"multistatus.response").map(e=>function(e){const t=Object.assign({},e);return t.status?Fp().set(t,"status",jp(t,"status",Tp.Object)):(Fp().set(t,"propstat",jp(t,"propstat",Tp.Object)),Fp().set(t,"propstat.prop",jp(t,"propstat.prop",Tp.Object))),t}(e))),n}(new _p.XMLParser({allowBooleanAttributes:!0,attributeNamePrefix:"",textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor:(e,t,n)=>"true"===t||"false"===t?"true"===t:t,tagValueProcessor(e,t,n){if(!n.endsWith("propstat.prop.displayname"))return t}}).parse(e)))})}function Ip(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{getlastmodified:r=null,getcontentlength:o="0",resourcetype:a=null,getcontenttype:i=null,getetag:s=null}=e,l=a&&"object"==typeof a&&void 0!==a.collection?"directory":"file",u={filename:t,basename:Sc().basename(t),lastmod:r,size:parseInt(o,10),type:l,etag:"string"==typeof s?s.replace(/"/g,""):null};return"file"===l&&(u.mime=i&&"string"==typeof i?i.split(";")[0]:""),n&&(void 0!==e.displayname&&(e.displayname=String(e.displayname)),u.props=e),u}function Lp(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=null;try{e.multistatus.response[0].propstat&&(r=e.multistatus.response[0])}catch(e){}if(!r)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:a}}=r,[i,s,l]=a.split(" ",3),u=parseInt(s,10);if(u>=400){const e=new Error("Invalid response: ".concat(u," ").concat(l));throw e.status=u,e}return Ip(o,Tc(t),n)}function Pp(e){switch(String(e)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(e),10)}}function Rp(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Np=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,o=fd({url:zc(e.remoteURL,Cc(t)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},e,n);return Rp(hd(o,e),function(n){return kp(e,n),Rp(n.text(),function(e){return Rp(zp(e),function(e){const o=Lp(e,t,r);return wp(n,o,r)})})})});function Op(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Bp=Mp(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=function(e){if(!e||"/"===e)return[];let t=e;const n=[];do{n.push(t),t=Sc().dirname(t)}while(t&&"/"!==t);return n}(Tc(t));r.sort((e,t)=>e.length>t.length?1:t.length>e.length?-1:0);let o=!1;return function(e,t){if("function"==typeof e[Vp]){var n,r,o,a=e[Vp]();function u(e){try{for(;!(n=a.next()).done;)if((e=t(n.value))&&e.then){if(!qp(e))return void e.then(u,o||(o=Hp.bind(null,r=new Gp,2)));e=e.v}r?Hp(r,1,e):r=e}catch(e){Hp(r||(r=new Gp),2,e)}}if(u(),a.return){var i=function(e){try{n.done||a.return()}catch(e){}return e};if(r&&r.then)return r.then(i,function(e){throw i(e)});i()}return r}if(!("length"in e))throw new TypeError("Object is not iterable");for(var s=[],l=0;l2&&void 0!==arguments[2]?arguments[2]:{};if(!0===n.recursive)return Bp(e,t,n);const r=fd({url:zc(e.remoteURL,(o=Cc(t),o.endsWith("/")?o:o+"/")),method:"MKCOL"},e,n);var o;return Op(hd(r,e),function(t){kp(e,t)})});var $p=vc(388),Yp=vc.n($p);const Xp=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r={};if("object"==typeof n.range&&"number"==typeof n.range.start){let e="bytes=".concat(n.range.start,"-");"number"==typeof n.range.end&&(e="".concat(e).concat(n.range.end)),r.Range=e}const o=fd({url:zc(e.remoteURL,Cc(t)),method:"GET",headers:r},e,n);return i=function(t){if(kp(e,t),r.Range&&206!==t.status){const e=new Error("Invalid response code for partial request: ".concat(t.status));throw e.status=t.status,e}return n.callback&&setTimeout(()=>{n.callback(t)},0),t.body},(a=hd(o,e))&&a.then||(a=Promise.resolve(a)),i?a.then(i):a;var a,i}),Qp=()=>{},Jp=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=fd({url:zc(e.remoteURL,Cc(t)),method:"DELETE"},e,n);return a=function(t){kp(e,t)},(o=hd(r,e))&&o.then||(o=Promise.resolve(o)),a?o.then(a):o;var o,a}),eh=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};return function(r,o){try{var a=(i=Np(e,t,n),s=function(){return!0},i&&i.then||(i=Promise.resolve(i)),s?i.then(s):i)}catch(e){return o(e)}var i,s;return a&&a.then?a.then(void 0,o):a}(0,function(e){if(404===e.status)return!1;throw e})});function th(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const nh=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=fd({url:zc(e.remoteURL,Cc(t),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:n.deep?"infinity":"1"}},e,n);return th(hd(r,e),function(r){return kp(e,r),th(r.text(),function(o){if(!o)throw new Error("Failed parsing directory contents: Empty response");return th(zp(o),function(o){const a=Fc(t);let i=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const a=Sc().join(t,"/"),{multistatus:{response:i}}=e,s=i.map(e=>{const t=function(e){try{return e.replace(/^https?:\/\/[^\/]+/,"")}catch(e){throw new kc(e,"Failed normalising HREF")}}(e.href),{propstat:{prop:n}}=e;return Ip(n,"/"===a?decodeURIComponent(Tc(t)):Tc(Sc().relative(decodeURIComponent(a),decodeURIComponent(t))),r)});return o?s:s.filter(e=>e.basename&&("file"===e.type||e.filename!==n.replace(/\/$/,"")))}(o,Fc(e.remoteBasePath||e.remotePath),a,n.details,n.includeSelf);return n.glob&&(i=function(e,t){return e.filter(e=>Yd(e.filename,t,{matchBase:!0}))}(i,n.glob)),wp(r,i,n.details)})})})});function rh(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=fd({url:zc(e.remoteURL,Cc(t)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[lh]},e,n);return ah(hd(r,e),function(t){return kp(e,t),ah(t.text(),function(e){return wp(t,e,n.details)})})});function ah(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const ih=rh(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=fd({url:zc(e.remoteURL,Cc(t)),method:"GET"},e,n);return ah(hd(r,e),function(t){let r;return kp(e,t),function(e,t){var n=e();return n&&n.then?n.then(t):t()}(function(){return ah(t.arrayBuffer(),function(e){r=e})},function(){return wp(t,r,n.details)})})}),sh=rh(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{format:r="binary"}=n;if("binary"!==r&&"text"!==r)throw new kc({info:{code:qc.InvalidOutputFormat}},"Invalid output format: ".concat(r));return"text"===r?oh(e,t,n):ih(e,t,n)}),lh=e=>e;function uh(e){return new _p.XMLBuilder({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(ch({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:e}}},"d"))}function ch(e,t){const n=(0,It.A)({},e);for(const r in n)n.hasOwnProperty(r)&&(n[r]&&"object"==typeof n[r]&&-1===r.indexOf(":")?(n["".concat(t,":").concat(r)]=ch(n[r],t),delete n[r]):!1===/^@_/.test(r)&&(n["".concat(t,":").concat(r)]=n[r],delete n[r]));return n}function dh(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}function ph(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const o=fd({url:zc(e.remoteURL,Cc(t)),method:"UNLOCK",headers:{"Lock-Token":n}},e,r);return dh(hd(o,e),function(t){if(kp(e,t),204!==t.status&&200!==t.status)throw Dp(t)})}),fh=ph(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{refreshToken:r,timeout:o=mh}=n,a={Accept:"text/plain,application/xml",Timeout:o};r&&(a.If=r);const i=fd({url:zc(e.remoteURL,Cc(t)),method:"LOCK",headers:a,data:uh(e.contactHref)},e,n);return dh(hd(i,e),function(t){return kp(e,t),dh(t.text(),function(e){const n=(a=e,new _p.XMLParser({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(a)),r=Fp().get(n,"prop.lockdiscovery.activelock.locktoken.href"),o=Fp().get(n,"prop.lockdiscovery.activelock.timeout");var a;if(!r)throw Dp(t,"No lock token received: ");return{token:r,serverTimeout:o}})})}),mh="Infinite, Second-4100000000";function gh(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const vh=function(e){return function(){for(var t=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:{};const n=t.path||"/",r=fd({url:zc(e.remoteURL,n),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},e,t);return gh(hd(r,e),function(n){return kp(e,n),gh(n.text(),function(e){return gh(zp(e),function(e){const r=function(e){try{const[t]=e.multistatus.response,{propstat:{prop:{"quota-used-bytes":n,"quota-available-bytes":r}}}=t;return void 0!==n&&void 0!==r?{used:parseInt(String(n),10),available:Pp(r)}:null}catch(e){}return null}(e);return wp(n,r,t.details)})})})});function yh(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const bh=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,o=fd({url:zc(e.remoteURL,Cc(t)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":e.headers["Content-Type"]||"application/xml; charset=utf-8"}},e,n);return yh(hd(o,e),function(n){return kp(e,n),yh(n.text(),function(e){return yh(zp(e),function(e){const o=function(e,t,n){const r={truncated:!1,results:[]};return r.truncated=e.multistatus.response.some(e=>{var n,r;return"507"===(null===(n=(e.status||(null===(r=e.propstat)||void 0===r?void 0:r.status)).split(" ",3))||void 0===n?void 0:n[1])&&e.href.replace(/\/$/,"").endsWith(Cc(t).replace(/\/$/,""))}),e.multistatus.response.forEach(e=>{if(void 0===e.propstat)return;const t=e.href.split("/").map(decodeURIComponent).join("/");r.results.push(Ip(e.propstat.prop,t,n))}),r}(e,t,r);return wp(n,o,r)})})})}),xh=function(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const o=fd({url:zc(e.remoteURL,Cc(t)),method:"MOVE",headers:{Destination:zc(e.remoteURL,Cc(n)),Overwrite:!1===r.overwrite?"F":"T"}},e,r);return i=function(t){kp(e,t)},(a=hd(o,e))&&a.then||(a=Promise.resolve(a)),i?a.then(i):a;var a,i});var Ah=vc(172);const Dh=function(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const{contentLength:o=!0,overwrite:a=!0}=r,i={"Content-Type":"application/octet-stream"};!1===o||(i["Content-Length"]="".concat("number"==typeof o?o:function(e){if(sd(e))return e.byteLength;if(ld(e))return e.length;if("string"==typeof e)return(0,Ah.d)(e);throw new kc({info:{code:qc.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}(n))),a||(i["If-None-Match"]="*");const s=fd({url:zc(e.remoteURL,Cc(t)),method:"PUT",headers:i,data:n},e,r);return u=function(t){try{kp(e,t)}catch(e){const n=e;if(412!==n.status||a)throw n;return!1}return!0},(l=hd(s,e))&&l.then||(l=Promise.resolve(l)),u?l.then(u):l;var l,u}),kh=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=fd({url:zc(e.remoteURL,Cc(t)),method:"OPTIONS"},e,n);return a=function(t){var n,r;try{kp(e,t)}catch(e){throw e}return{compliance:(null!==(n=t.headers.get("DAV"))&&void 0!==n?n:"").split(",").map(e=>e.trim()),server:null!==(r=t.headers.get("Server"))&&void 0!==r?r:""}},(o=hd(r,e))&&o.then||(o=Promise.resolve(o)),a?o.then(a):o;var o,a});function wh(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Sh=Ch(function(e,t,n,r,o){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new kc({info:{code:qc.InvalidUpdateRange}},"Invalid update range ".concat(n," for partial update"));const i={"Content-Type":"application/octet-stream","Content-Length":""+(r-n+1),"Content-Range":"bytes ".concat(n,"-").concat(r,"/*")},s=fd({url:zc(e.remoteURL,Cc(t)),method:"PUT",headers:i,data:o},e,a);return wh(hd(s,e),function(t){kp(e,t)})});function Eh(e,t){var n=e();return n&&n.then?n.then(t):t(n)}const _h=Ch(function(e,t,n,r,o){let a=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new kc({info:{code:qc.InvalidUpdateRange}},"Invalid update range ".concat(n," for partial update"));const i={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(r-n+1),"X-Update-Range":"bytes=".concat(n,"-").concat(r)},s=fd({url:zc(e.remoteURL,Cc(t)),method:"PATCH",headers:i,data:o},e,a);return wh(hd(s,e),function(t){kp(e,t)})});function Ch(e){return function(){for(var t=[],n=0;n5&&void 0!==arguments[5]?arguments[5]:{};return wh(kh(e,t,a),function(i){let s=!1;return Eh(function(){if(i.compliance.includes("sabredav-partialupdate"))return wh(_h(e,t,n,r,o,a),function(e){return s=!0,e})},function(l){let u=!1;return s?l:Eh(function(){if(i.server.includes("Apache")&&i.compliance.includes(""))return wh(Sh(e,t,n,r,o,a),function(e){return u=!0,e})},function(e){if(u)return e;throw new kc({info:{code:qc.NotSupported}},"Not supported")})})})}),Th="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function jh(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{authType:n=null,remoteBasePath:r,contactHref:o=Th,ha1:a,headers:i={},httpAgent:s,httpsAgent:l,password:u,token:c,username:d,withCredentials:p}=t;let h=n;h||(h=d||u?Gc.Password:Gc.None);const f={authType:h,remoteBasePath:r,contactHref:o,ha1:a,headers:Object.assign({},i),httpAgent:s,httpsAgent:l,password:u,remotePath:jc(e),remoteURL:e,token:c,username:d,withCredentials:p};return Kc(f,d,u,c,a),{copyFile:(e,t,n)=>Sp(f,e,t,n),createDirectory:(e,t)=>Kp(f,e,t),createReadStream:(e,t)=>function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=new(0,Yp().PassThrough);return Xp(e,t,n).then(e=>{e.pipe(r)}).catch(e=>{r.emit("error",e)}),r}(f,e,t),createWriteStream:(e,t,n)=>function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:Qp;const o=new(0,Yp().PassThrough),a={};!1===n.overwrite&&(a["If-None-Match"]="*");const i=fd({url:zc(e.remoteURL,Cc(t)),method:"PUT",headers:a,data:o,maxRedirects:0},e,n);return hd(i,e).then(t=>kp(e,t)).then(e=>{setTimeout(()=>{r(e)},0)}).catch(e=>{o.emit("error",e)}),o}(f,e,t,n),customRequest:(e,t)=>Jp(f,e,t),deleteFile:(e,t)=>Zp(f,e,t),exists:(e,t)=>eh(f,e,t),getDirectoryContents:(e,t)=>nh(f,e,t),getFileContents:(e,t)=>sh(f,e,t),getFileDownloadLink:e=>function(e,t){let n=zc(e.remoteURL,Cc(t));const r=/^https:/i.test(n)?"https":"http";switch(e.authType){case Gc.None:break;case Gc.Password:{const t=Bc(e.headers.Authorization.replace(/^Basic /i,"").trim());n=n.replace(/^https?:\/\//,"".concat(r,"://").concat(t,"@"));break}default:throw new kc({info:{code:qc.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(e.authType))}return n}(f,e),getFileUploadLink:e=>function(e,t){let n="".concat(zc(e.remoteURL,Cc(t)),"?Content-Type=application/octet-stream");const r=/^https:/i.test(n)?"https":"http";switch(e.authType){case Gc.None:break;case Gc.Password:{const t=Bc(e.headers.Authorization.replace(/^Basic /i,"").trim());n=n.replace(/^https?:\/\//,"".concat(r,"://").concat(t,"@"));break}default:throw new kc({info:{code:qc.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(e.authType))}return n}(f,e),getHeaders:()=>Object.assign({},f.headers),getQuota:e=>vh(f,e),lock:(e,t)=>fh(f,e,t),moveFile:(e,t,n)=>xh(f,e,t,n),putFileContents:(e,t,n)=>Dh(f,e,t,n),partialUpdateFileContents:(e,t,n,r,o)=>Fh(f,e,t,n,r,o),getDAVCompliance:e=>kh(f,e),search:(e,t)=>bh(f,e,t),setHeaders:e=>{f.headers=Object.assign({},e)},stat:(e,t)=>Np(f,e,t),unlock:(e,t,n)=>hh(f,e,t,n)}}var zh=yc.UU,Ih=yc.Gu;const Lh="AES-GCM",Ph="PBKDF2-SHA-256",Rh=1e5,Nh=new TextEncoder,Oh=new TextDecoder,Bh=()=>{var e;const t=null===(e=globalThis.crypto)||void 0===e?void 0:e.subtle;if(!t)throw new Error("Web Crypto is not available");return t},Mh=e=>{let t="";for(let n=0;n{const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r{const n=Bh(),r=await n.importKey("raw",Nh.encode(e),"PBKDF2",!1,["deriveKey"]);return n.deriveKey({name:"PBKDF2",salt:t,iterations:Rh,hash:"SHA-256"},r,{name:Lh,length:256},!1,["encrypt","decrypt"])},Vh=async(e,t)=>{const n=globalThis.crypto.getRandomValues(new Uint8Array(16)),r=globalThis.crypto.getRandomValues(new Uint8Array(12)),o=await Uh(t,n),a=await Bh().encrypt({name:Lh,iv:r},o,Nh.encode(e));return JSON.stringify({encrypted:!0,version:1,alg:Lh,kdf:Ph,iterations:Rh,salt:Mh(n),iv:Mh(r),data:Mh(new Uint8Array(a))})},Hh=async(e,t)=>{const n=(e=>{try{const t=JSON.parse(e);if(!0===(null===t||void 0===t?void 0:t.encrypted)&&t.version&&t.alg&&t.kdf&&t.data)return t}catch(t){}return null})(e);if(!n)return{value:e,encrypted:!1};if(1!==n.version||n.alg!==Lh||n.kdf!==Ph||n.iterations!==Rh)throw new Error("Unsupported sync encryption format");const r=await Uh(t,Wh(n.salt)),o=await Bh().decrypt({name:Lh,iv:Wh(n.iv)},r,Wh(n.data));return{value:Oh.decode(o),encrypted:!0}};let Gh=!1;const qh="kiss translator sync files",Kh=async function(e,t){let{syncUrl:n,syncUser:r,syncKey:o}=t,{forceWrite:a=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};Gh||(Gh=!0,Ih().patch("request",e=>(0,Es.iI)(e.url,{method:e.method,headers:e.headers,body:e.data})));const i=zh(n,{username:r,password:o}),s="/".concat(Qi.jM6),l="/".concat(Qi.jM6,"/").concat(e.key);!1===await i.exists(s)&&await i.createDirectory(s);if(await i.exists(l)&&!a){const t=await i.getFileContents(l,{format:"text"}),n=JSON.parse(t);if(n.updateAt>=e.updateAt)return n}return await i.putFileContents(l,JSON.stringify(e,null,2)),e},$h=async(e,t)=>{let{syncUrl:n,syncKey:r}=t;return n=(0,_s.Ms)(n,"/"),await(async(e,t,n)=>(0,Es.Fd)(e,{headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(await(0,_s.$Q)(t,Qi.r1p))},method:"POST",body:JSON.stringify(n)}))("".concat(n,"/sync"),r,e)},Yh=async e=>{const t=await(async e=>(0,Es.Fd)("".concat(tc,"?per_page=100"),{method:"GET",headers:nc(e)}))(e);return t.filter(e=>e.description===qh).sort((e,t)=>{const n=Date.parse(e.updated_at||e.created_at||0);return Date.parse(t.updated_at||t.created_at||0)-n})[0]},Xh=async function(e,t){var n,r;let{syncUrl:o,syncKey:a}=t,{forceWrite:i=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").trim();if(!e)return"";try{const t=new URL(e).pathname.split("/").filter(Boolean);return t[t.length-1]||""}catch(t){return e}}(o);const l=(u=e.key).startsWith("kiss-rules_")?"sync-rules_".concat(u):u===Qi.sgk?"sync-words_".concat(u):u;var u;const c=JSON.stringify(e,null,2);if(!s){const e=await Yh(a);null!==e&&void 0!==e&&e.id&&(s=e.id,await(0,Ji.pK)({syncUrl:s}))}if(!s){const t=await(async(e,t,n)=>(0,Es.Fd)(tc,{method:"POST",headers:nc(e),body:JSON.stringify({description:n,public:!1,files:{[t.key]:{content:t.content}}})}))(a,{key:l,content:c},qh);return await(0,Ji.pK)({syncUrl:t.id}),e}const d=await(async(e,t)=>(0,Es.Fd)("".concat(tc,"/").concat(e),{method:"GET",headers:nc(t)}))(s,a),p=(null===(n=d.files)||void 0===n?void 0:n[l])||(null===(r=d.files)||void 0===r?void 0:r[e.key]);if(p&&!i){const t=p.content||await(h=p.raw_url,(0,Es.Fd)(h,void 0,{expect:"text"})),n=JSON.parse(t);if(n.updateAt>=e.updateAt)return n}var h;return await(async(e,t,n,r)=>(0,Es.Fd)("".concat(tc,"/").concat(e),{method:"PATCH",headers:nc(t),body:JSON.stringify({files:{[n]:{content:r}}})}))(s,a,l,c),e},Qh=async(e,t)=>(0,It.A)((0,It.A)({},e),{},{value:await Vh(e.value,t)}),Jh=async(e,t,n,r)=>e===Qi.UPC?await Kh(t,n,r):e===Qi.EeC?await Xh(t,n,r):await $h(t,n),Zh=async(e,t,n)=>{const{syncType:r,syncUrl:o,syncUser:a,syncKey:i,syncMeta:s={}}=await(0,Ji.Xn)();if(!i||!n||r!==Qi.EeC&&!o||r===Qi.UPC&&!a)throw new Error("sync setting is incomplete");const l=Date.now(),u={syncUrl:o,syncUser:a,syncKey:i},c=await Qh({key:e,value:JSON.stringify(t),updateAt:l},n);if(!await Jh(r,c,u,{forceWrite:!0}))throw new Error("sync data got err",e);s[e]={updateAt:l,syncAt:Date.now()},await(0,Ji.pK)({syncMeta:s})},ef=async function(e,t){let{syncEncryptKey:n,forceRemoteRead:r=!1,persistMeta:o=!0}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{syncType:a,syncUrl:i,syncUser:s,syncKey:l,syncEncryptKey:u,syncMeta:c={}}=await(0,Ji.Xn)(),d=null!==n&&void 0!==n?n:u;if(!l||!d||a!==Qi.EeC&&!i||a===Qi.UPC&&!s)return;let{updateAt:p=0,syncAt:h=0}=c[e]||{};0===h&&(p=0);const f={key:e,value:JSON.stringify(t),updateAt:r?0:p},m={syncUrl:i,syncUser:s,syncKey:l},g=await Qh(f,d),v=await Jh(a,g,m);if(!v)throw new Error("sync data got err",e);const{data:y,encrypted:b}=await(async(e,t)=>{const{value:n,encrypted:r}=await Hh(e.value,t);return{data:(0,It.A)((0,It.A)({},e),{},{value:n}),encrypted:r}})(v,d),x=JSON.parse(y.value),A=y.updateAt>p;return b||r||await(async(e,t,n,r)=>{const o=await Qh(t,r);await Jh(e,o,n,{forceWrite:!0})})(a,y,m,d),o&&(c[e]={updateAt:y.updateAt,syncAt:Date.now()},await(0,Ji.pK)({syncMeta:c})),{value:x,isNew:A}},tf=async e=>{const t=await(0,Ji.C$)(),n=await ef(Qi.XEV,t,e);return null!==n&&void 0!==n&&n.isNew&&!1!==(null===e||void 0===e?void 0:e.applyRemote)&&await(0,Ji.ZC)(n.value),n},nf=async()=>{try{await tf()}catch(e){(0,Zi.h9)("sync setting",e.message)}},rf=async e=>{const t=await(0,Ji.VX)(),n=await ef(Qi.Ed3,t,e);return null!==n&&void 0!==n&&n.isNew&&!1!==(null===e||void 0===e?void 0:e.applyRemote)&&await(0,Ji.Qg)(n.value),n},of=async()=>{try{await rf()}catch(e){(0,Zi.h9)("sync user rules",e.message)}},af=async e=>{const t=await(0,Ji.lk)(),n=await ef(Qi.sgk,t,e);return null!==n&&void 0!==n&&n.isNew&&!1!==(null===e||void 0===e?void 0:e.applyRemote)&&await(0,Ji.aA)(n.value),n},sf=async()=>{try{await af()}catch(e){(0,Zi.h9)("sync fav words",e.message)}},lf=async e=>({setting:await tf(e),rules:await rf(e),words:await af(e)});function uf(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";const[r,o]=(0,a.useState)(!0),[i,s]=(0,a.useState)(t),l=(0,a.useRef)();(0,a.useEffect)(()=>{let n=!0;return(async()=>{try{const r=await Ji.IG.getObj(e);void 0===r||null===r?await Ji.IG.setObj(e,t):n&&s(r)}catch(r){(0,Zi.h9)("storage load error for key: ".concat(e),r)}finally{n&&o(!1)}})(),()=>{n=!1}},[e,t]);const u=function(e,t){const n=(0,a.useRef)(e);(0,a.useEffect)(()=>{n.current=e},[e]);const r=(0,a.useMemo)(()=>(0,_s.sg)(function(){return n.current(...arguments)},t),[t]);return(0,a.useEffect)(()=>()=>{r.cancel()},[r]),r}((0,a.useCallback)(async(e,t)=>{try{const n=await ef(e,t);null!==n&&void 0!==n&&n.isNew&&s(n.value)}catch(n){(0,Zi.h9)("Sync failed",e)}},[]),3e3);(0,a.useEffect)(()=>{r||null!==i&&(Ji.IG.setObj(e,i).catch(t=>{(0,Zi.h9)("storage save error for key: ".concat(e),t)}),l.current&&Object.is(l.current.value,i)?l.current=void 0:n&&(0,zu.tc)()&&u(n,i))},[e,n,r,i,u]);const c=(0,a.useCallback)(e=>{s(t=>"function"===typeof e?e(t):e)},[]),d=(0,a.useCallback)(e=>{s(t=>{const n="function"===typeof e?e(t):e,r="object"===typeof t&&null!==t?t:{};return(0,It.A)((0,It.A)({},r),n)})},[]),p=(0,a.useCallback)(async()=>{try{await Ji.IG.del(e),s(null)}catch(t){(0,Zi.h9)("storage remove error for key: ".concat(e),t)}},[e]),h=(0,a.useCallback)(async()=>{try{const n=await Ji.IG.getObj(e),r=null!==n&&void 0!==n?n:t;if(function(e,t){if(Object.is(e,t))return!0;if(e&&t&&"object"===typeof e&&"object"===typeof t&&Array.isArray(e)===Array.isArray(t))try{return JSON.stringify(e)===JSON.stringify(t)}catch(n){return!1}return!1}(i,r))return;Object.is(i,r)||(l.current={value:r}),s(r)}catch(n){(0,Zi.h9)("storage reload error for key: ".concat(e),n)}},[e,t,i]);return{data:i,save:c,update:d,remove:p,reload:h,isLoading:r}}function cf(e){return(0,ft.Ay)("MuiTypography",e)}(0,rt.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const df=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],pf=(0,ht.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],"inherit"!==n.align&&t["align".concat((0,dt.A)(n.align))],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({margin:0},"inherit"===n.variant&&{font:"inherit"},"inherit"!==n.variant&&t.typography[n.variant],"inherit"!==n.align&&{textAlign:n.align},n.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},n.gutterBottom&&{marginBottom:"0.35em"},n.paragraph&&{marginBottom:16})}),hf={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},ff={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},mf=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiTypography"}),r=(e=>ff[e]||e)(n.color),o=(0,qe.A)((0,We.A)({},n,{color:r})),{align:a="inherit",className:i,component:s,gutterBottom:l=!1,noWrap:u=!1,paragraph:c=!1,variant:d="body1",variantMapping:p=hf}=o,h=(0,Ue.A)(o,df),f=(0,We.A)({},o,{align:a,color:r,className:i,component:s,gutterBottom:l,noWrap:u,paragraph:c,variant:d,variantMapping:p}),m=s||(c?"p":p[d]||hf[d])||"span",g=(e=>{const{align:t,gutterBottom:n,noWrap:r,paragraph:o,variant:a,classes:i}=e,s={root:["root",a,"inherit"!==e.align&&"align".concat((0,dt.A)(t)),n&&"gutterBottom",r&&"noWrap",o&&"paragraph"]};return(0,ut.A)(s,cf,i)})(f);return(0,Je.jsx)(pf,(0,We.A)({as:m,ref:t,ownerState:f,className:(0,Ve.A)(g.root,i)},h))}),gf=mf;function vf(e){return(0,ft.Ay)("MuiLink",e)}const yf=(0,rt.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"]);var bf=n(8343);const xf={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},Af=e=>{let{theme:t,ownerState:n}=e;const r=(e=>xf[e]||e)(n.color),o=(0,bf.Yn)(t,"palette.".concat(r),!1)||n.color,a=(0,bf.Yn)(t,"palette.".concat(r,"Channel"));return"vars"in t&&a?"rgba(".concat(a," / 0.4)"):(0,Ta.X4)(o,.4)},Df=["className","color","component","onBlur","onFocus","TypographyClasses","underline","variant","sx"],kf=(0,ht.Ay)(gf,{name:"MuiLink",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["underline".concat((0,dt.A)(n.underline))],"button"===n.component&&t.button]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({},"none"===n.underline&&{textDecoration:"none"},"hover"===n.underline&&{textDecoration:"none","&:hover":{textDecoration:"underline"}},"always"===n.underline&&(0,We.A)({textDecoration:"underline"},"inherit"!==n.color&&{textDecorationColor:Af({theme:t,ownerState:n})},{"&:hover":{textDecorationColor:"inherit"}}),"button"===n.component&&{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},["&.".concat(yf.focusVisible)]:{outline:"auto"}})}),wf=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiLink"}),{className:r,color:o="primary",component:i="a",onBlur:s,onFocus:l,TypographyClasses:u,underline:c="always",variant:d="inherit",sx:p}=n,h=(0,Ue.A)(n,Df),{isFocusVisibleRef:f,onBlur:m,onFocus:g,ref:v}=(0,Qa.A)(),[y,b]=a.useState(!1),x=(0,Ya.A)(t,v),A=(0,We.A)({},n,{color:o,component:i,focusVisible:y,underline:c,variant:d}),D=(e=>{const{classes:t,component:n,focusVisible:r,underline:o}=e,a={root:["root","underline".concat((0,dt.A)(o)),"button"===n&&"button",r&&"focusVisible"]};return(0,ut.A)(a,vf,t)})(A);return(0,Je.jsx)(kf,(0,We.A)({color:o,className:(0,Ve.A)(D.root,r),classes:u,component:i,onBlur:e=>{m(e),!1===f.current&&b(!1),s&&s(e)},onFocus:e=>{g(e),!0===f.current&&b(!0),l&&l(e)},ref:x,ownerState:A,variant:d,sx:[...Object.keys(xf).includes(o)?[]:[{color:o}],...Array.isArray(p)?p:[p]]},h))}),Sf=wf;function Ef(e){return(0,ft.Ay)("MuiDivider",e)}const _f=(0,rt.A)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]),Cf=["absolute","children","className","component","flexItem","light","orientation","role","textAlign","variant"],Ff=(0,ht.Ay)("div",{name:"MuiDivider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.absolute&&t.absolute,t[n.variant],n.light&&t.light,"vertical"===n.orientation&&t.vertical,n.flexItem&&t.flexItem,n.children&&t.withChildren,n.children&&"vertical"===n.orientation&&t.withChildrenVertical,"right"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignRight,"left"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignLeft]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(t.vars||t).palette.divider,borderBottomWidth:"thin"},n.absolute&&{position:"absolute",bottom:0,left:0,width:"100%"},n.light&&{borderColor:t.vars?"rgba(".concat(t.vars.palette.dividerChannel," / 0.08)"):(0,Ta.X4)(t.palette.divider,.08)},"inset"===n.variant&&{marginLeft:72},"middle"===n.variant&&"horizontal"===n.orientation&&{marginLeft:t.spacing(2),marginRight:t.spacing(2)},"middle"===n.variant&&"vertical"===n.orientation&&{marginTop:t.spacing(1),marginBottom:t.spacing(1)},"vertical"===n.orientation&&{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"},n.flexItem&&{alignSelf:"stretch",height:"auto"})},e=>{let{ownerState:t}=e;return(0,We.A)({},t.children&&{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,borderTopStyle:"solid",borderLeftStyle:"solid","&::before, &::after":{content:'""',alignSelf:"center"}})},e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({},n.children&&"vertical"!==n.orientation&&{"&::before, &::after":{width:"100%",borderTop:"thin solid ".concat((t.vars||t).palette.divider),borderTopStyle:"inherit"}})},e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({},n.children&&"vertical"===n.orientation&&{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:"thin solid ".concat((t.vars||t).palette.divider),borderLeftStyle:"inherit"}})},e=>{let{ownerState:t}=e;return(0,We.A)({},"right"===t.textAlign&&"vertical"!==t.orientation&&{"&::before":{width:"90%"},"&::after":{width:"10%"}},"left"===t.textAlign&&"vertical"!==t.orientation&&{"&::before":{width:"10%"},"&::after":{width:"90%"}})}),Tf=(0,ht.Ay)("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.wrapper,"vertical"===n.orientation&&t.wrapperVertical]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({display:"inline-block",paddingLeft:"calc(".concat(t.spacing(1)," * 1.2)"),paddingRight:"calc(".concat(t.spacing(1)," * 1.2)")},"vertical"===n.orientation&&{paddingTop:"calc(".concat(t.spacing(1)," * 1.2)"),paddingBottom:"calc(".concat(t.spacing(1)," * 1.2)")})}),jf=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiDivider"}),{absolute:r=!1,children:o,className:a,component:i=(o?"div":"hr"),flexItem:s=!1,light:l=!1,orientation:u="horizontal",role:c=("hr"!==i?"separator":void 0),textAlign:d="center",variant:p="fullWidth"}=n,h=(0,Ue.A)(n,Cf),f=(0,We.A)({},n,{absolute:r,component:i,flexItem:s,light:l,orientation:u,role:c,textAlign:d,variant:p}),m=(e=>{const{absolute:t,children:n,classes:r,flexItem:o,light:a,orientation:i,textAlign:s,variant:l}=e,u={root:["root",t&&"absolute",l,a&&"light","vertical"===i&&"vertical",o&&"flexItem",n&&"withChildren",n&&"vertical"===i&&"withChildrenVertical","right"===s&&"vertical"!==i&&"textAlignRight","left"===s&&"vertical"!==i&&"textAlignLeft"],wrapper:["wrapper","vertical"===i&&"wrapperVertical"]};return(0,ut.A)(u,Ef,r)})(f);return(0,Je.jsx)(Ff,(0,We.A)({as:i,className:(0,Ve.A)(m.root,a),role:c,ref:t,ownerState:f},h,{children:o?(0,Je.jsx)(Tf,{className:m.wrapper,ownerState:f,children:o}):null}))});jf.muiSkipListHighlight=!0;const zf=jf;function If(){return(0,Je.jsxs)("center",{children:[(0,Je.jsx)(zf,{children:(0,Je.jsx)(Sf,{href:"https://github.com/fishjar/kiss-translator",children:"KISS Translator v".concat("2.0.29")})}),(0,Je.jsx)(zt,{})]})}const Lf=(0,a.createContext)({setting:Qi.la7,updateSetting:()=>{},reloadSetting:()=>{}});function Pf(e){let{children:t,context:n}=e;const r=(0,a.useMemo)(()=>"options"===n,[n]),{data:o,isLoading:i,update:s,reload:l}=uf(Qi.r$0,Qi.la7,Qi.XEV),u=!!o,c=(0,Qi.Vnn)(o),d=null===o||void 0===o?void 0:o.logLevel;(0,a.useEffect)(()=>{!u||c>=Qi.xoZ||s(e=>!e||(0,Qi.Vnn)(e)>=Qi.xoZ?e:(0,Qi.cPn)(e))},[u,c,s]),(0,a.useEffect)(()=>{"boolean"===typeof(null===o||void 0===o?void 0:o.darkMode)&&s(e=>(0,It.A)((0,It.A)({},e),{},{darkMode:e.darkMode?"dark":"light"}))},[null===o||void 0===o?void 0:o.darkMode,s]),(0,a.useEffect)(()=>{r&&(async()=>{try{Zi.vF.setLevel(d),Fs.aQ&&await(0,Ts.Ru)(Qi.Mai,d)}catch(e){Zi.vF.error("Failed to fetch log level, using default.",e)}})()},[r,d]);const p=(0,a.useCallback)(e=>{s(e),(0,Ji.GY)(Qi.XEV)},[s]),h=(0,a.useCallback)(e=>async t=>{p(n=>(0,It.A)((0,It.A)({},n),{},{[e]:(0,It.A)((0,It.A)({},(null===n||void 0===n?void 0:n[e])||{}),t)}))},[p]),f=(0,a.useMemo)(()=>({context:n,setting:o,updateSetting:p,updateChild:h,reloadSetting:l}),[n,o,p,h,l]);return i?r?(0,Je.jsx)(If,{}):null:o?(0,Je.jsx)(Lf.Provider,{value:f,children:t}):r?(0,Je.jsx)("center",{children:(0,Je.jsxs)(Xi,{severity:"error",sx:{maxWidth:600,margin:"60px auto"},children:[(0,Je.jsx)("p",{children:"\u6570\u636e\u52a0\u8f7d\u51fa\u9519\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u6216\u5378\u8f7d\u540e\u91cd\u65b0\u5b89\u88c5\u3002"}),(0,Je.jsx)("p",{children:"Data loading error, please refresh the page or uninstall and reinstall."})]})}):null}function Rf(){return(0,a.useContext)(Lf)}const Nf=["execute"],Of=["execute"],Bf=["get"],Mf=()=>{const[e,t]=(0,a.useState)(null),[n,r]=(0,a.useState)(!1),[o,i]=(0,a.useState)(null),s=(0,a.useCallback)(async function(e){if(e){r(!0),i(null);try{for(var n=arguments.length,o=new Array(n>1?n-1:0),a=1;a{t(null),r(!1),i(null)},[])}},Wf=(e,t)=>{const n=Mf(),{execute:r}=n,o=(0,Is.A)(n,Nf);return(0,a.useEffect)(()=>{e&&r(e,t)},[r,e,t]),(0,It.A)({},o)},Uf=e=>{const t=(()=>{const e=Mf(),{execute:t}=e,n=(0,Is.A)(e,Of),r=(0,a.useCallback)(async(e,t)=>{var n;const r=await fetch(e,t);if(!r.ok){const e=await r.text();throw new Error("Request failed: ".concat(r.status," ").concat(r.statusText," - ").concat(e))}return 204===r.status?null:null!==(n=r.headers.get("Content-Type"))&&void 0!==n&&n.includes("json")?r.json():r.text()},[]),o=(0,a.useCallback)(async function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{return await t(r,e,(0,It.A)((0,It.A)({},n),{},{method:"GET"}))}catch(o){return null}},[t,r]),i=(0,a.useCallback)(async function(e,n){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};try{return await t(r,e,(0,It.A)((0,It.A)({},o),{},{method:"POST",headers:(0,It.A)({"Content-Type":"application/json"},o.headers),body:JSON.stringify(n)}))}catch(a){return null}},[t,r]),s=(0,a.useCallback)(async function(e,n){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};try{return await t(r,e,(0,It.A)((0,It.A)({},o),{},{method:"PUT",headers:(0,It.A)({"Content-Type":"application/json"},o.headers),body:JSON.stringify(n)}))}catch(a){return null}},[t,r]),l=(0,a.useCallback)(async function(e){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};try{return await t(r,e,(0,It.A)((0,It.A)({},n),{},{method:"DELETE"}))}catch(o){return null}},[t,r]);return(0,It.A)((0,It.A)({},n),{},{get:o,post:i,put:s,del:l})})(),{get:n}=t,r=(0,Is.A)(t,Bf);return(0,a.useEffect)(()=>{e&&n(e)},[e,n]),(0,It.A)({},r)},Vf=e=>function(t){return function(e,t){var n,r;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return null!==(n=null===Qi.THG||void 0===Qi.THG||null===(r=Qi.THG[t])||void 0===r?void 0:r[e])&&void 0!==n?n:o}(e,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:"")},Hf=()=>{const{setting:{uiLang:e}}=Rf();return Vf(e)};function Gf(){const e=Hf(),{data:t,loading:n,error:r}=(e=>{const t=Hf()(e),n=t?"".concat(Qi.UZK,"/").concat(t):"";return Uf(n)})("about_md");return(0,Je.jsx)(st,{children:n?(0,Je.jsx)("center",{children:(0,Je.jsx)(zt,{})}):(0,Je.jsx)(Fa,{children:r?e("about_md_local"):t})})}var qf=n(6997);const Kf=["ownerState"],$f=["variants"],Yf=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function Xf(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function Qf(e,t){return t&&e&&"object"===typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles="@layer ".concat(t,"{").concat(String(e.styles),"}")),e}const Jf=(0,Ke.A)(),Zf=e=>e?e.charAt(0).toLowerCase()+e.slice(1):e;function em(e){let{defaultTheme:t,theme:n,themeId:r}=e;return o=n,0===Object.keys(o).length?t:n[r]||n;var o}function tm(e){return e?(t,n)=>n[e]:null}function nm(e,t,n){let{ownerState:r}=t,o=(0,Ue.A)(t,Kf);const a="function"===typeof e?e((0,We.A)({ownerState:r},o)):e;if(Array.isArray(a))return a.flatMap(e=>nm(e,(0,We.A)({ownerState:r},o),n));if(a&&"object"===typeof a&&Array.isArray(a.variants)){const{variants:e=[]}=a;let t=(0,Ue.A)(a,$f);return e.forEach(e=>{let a=!0;if("function"===typeof e.props?a=e.props((0,We.A)({ownerState:r},o,r)):Object.keys(e.props).forEach(t=>{(null==r?void 0:r[t])!==e.props[t]&&o[t]!==e.props[t]&&(a=!1)}),a){Array.isArray(t)||(t=[t]);const a="function"===typeof e.style?e.style((0,We.A)({ownerState:r},o,r)):e.style;t.push(n?Qf((0,He.internal_serializeStyles)(a),n):a)}}),t}return n?Qf((0,He.internal_serializeStyles)(a),n):a}const rm=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{themeId:t,defaultTheme:n=Jf,rootShouldForwardProp:r=Xf,slotShouldForwardProp:o=Xf}=e,a=e=>(0,Ge.A)((0,We.A)({},e,{theme:em((0,We.A)({},e,{defaultTheme:n,themeId:t}))}));return a.__mui_systemSx=!0,function(e){let i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,He.internal_processStyles)(e,e=>e.filter(e=>!(null!=e&&e.__mui_systemSx)));const{name:s,slot:l,skipVariantsResolver:u,skipSx:c,overridesResolver:d=tm(Zf(l))}=i,p=(0,Ue.A)(i,Yf),h=s&&s.startsWith("Mui")||l?"components":"custom",f=void 0!==u?u:l&&"Root"!==l&&"root"!==l||!1,m=c||!1;let g=Xf;"Root"===l||"root"===l?g=r:l?g=o:function(e){return"string"===typeof e&&e.charCodeAt(0)>96}(e)&&(g=void 0);const v=(0,He.default)(e,(0,We.A)({shouldForwardProp:g,label:undefined},p)),y=e=>"function"===typeof e&&e.__emotion_real!==e||(0,qf.Q)(e)?r=>{const o=em({theme:r.theme,defaultTheme:n,themeId:t});return nm(e,(0,We.A)({},r,{theme:o}),o.modularCssLayers?h:void 0)}:e,b=function(r){let o=y(r);for(var i=arguments.length,l=new Array(i>1?i-1:0),u=1;u{const r=em((0,We.A)({},e,{defaultTheme:n,themeId:t}));if(!r.components||!r.components[s]||!r.components[s].styleOverrides)return null;const o=r.components[s].styleOverrides,a={};return Object.entries(o).forEach(t=>{let[n,o]=t;a[n]=nm(o,(0,We.A)({},e,{theme:r}),r.modularCssLayers?"theme":void 0)}),d(e,a)}),s&&!f&&c.push(e=>{var r;const o=em((0,We.A)({},e,{defaultTheme:n,themeId:t}));return nm({variants:null==o||null==(r=o.components)||null==(r=r[s])?void 0:r.variants},(0,We.A)({},e,{theme:o}),o.modularCssLayers?"theme":void 0)}),m||c.push(a);const p=c.length-l.length;if(Array.isArray(r)&&p>0){const e=new Array(p).fill("");o=[...r,...e],o.raw=[...r.raw,...e]}const h=v(o,...c);return e.muiName&&(h.muiName=e.muiName),h};return v.withConfig&&(b.withConfig=v.withConfig),b}}(),om=rm;var am=n(3699);function im(e){const{theme:t,name:n,props:r}=e;return t&&t.components&&t.components[n]&&t.components[n].defaultProps?(0,am.A)(t.components[n].defaultProps,r):r}function sm(e){let{props:t,name:n,defaultTheme:r,themeId:o}=e,a=Qe(r);o&&(a=a[o]||a);return im({theme:a,name:n,props:t})}var lm=n(3830),um=n(4262);const cm=["component","direction","spacing","divider","children","className","useFlexGap"],dm=(0,Ke.A)(),pm=om("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root});function hm(e){return sm({props:e,name:"MuiStack",defaultTheme:dm})}function fm(e,t){const n=a.Children.toArray(e).filter(Boolean);return n.reduce((e,r,o)=>(e.push(r),o{let{ownerState:t,theme:n}=e,r=(0,We.A)({display:"flex",flexDirection:"column"},(0,lm.NI)({theme:n},(0,lm.kW)({values:t.direction,breakpoints:n.breakpoints.values}),e=>({flexDirection:e})));if(t.spacing){const e=(0,um.LX)(n),o=Object.keys(n.breakpoints.values).reduce((e,n)=>(("object"===typeof t.spacing&&null!=t.spacing[n]||"object"===typeof t.direction&&null!=t.direction[n])&&(e[n]=!0),e),{}),a=(0,lm.kW)({values:t.direction,base:o}),i=(0,lm.kW)({values:t.spacing,base:o});"object"===typeof a&&Object.keys(a).forEach((e,t,n)=>{if(!a[e]){const r=t>0?a[n[t-1]]:"column";a[e]=r}});const s=(n,r)=>{return t.useFlexGap?{gap:(0,um._W)(e,n)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":{["margin".concat((o=r?a[r]:t.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[o]))]:(0,um._W)(e,n)}};var o};r=(0,qf.A)(r,(0,lm.NI)({theme:n},i,s))}return r=(0,lm.iZ)(n.breakpoints,r),r};const gm=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{createStyledComponent:t=pm,useThemeProps:n=hm,componentName:r="MuiStack"}=e,o=t(mm),i=a.forwardRef(function(e,t){const a=n(e),i=(0,qe.A)(a),{component:s="div",direction:l="column",spacing:u=0,divider:c,children:d,className:p,useFlexGap:h=!1}=i,f=(0,Ue.A)(i,cm),m={direction:l,spacing:u,useFlexGap:h},g=(0,ut.A)({root:["root"]},e=>(0,ft.Ay)(r,e),{});return(0,Je.jsx)(o,(0,We.A)({as:s,ownerState:m,ref:t,className:(0,Ve.A)(g.root,p)},f,{children:c?fm(d,c):d}))});return i}({createStyledComponent:(0,ht.Ay)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root}),useThemeProps:e=>(0,pt.b)({props:e,name:"MuiStack"})}),vm=gm;var ym=n(7461),bm=n(6253),xm=n(6333),Am=n(6267),Dm=n(6489),km=n(2561);const wm=["onChange","maxRows","minRows","style","value"];function Sm(e){return parseInt(e,10)||0}const Em={visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"};function _m(e){return function(e){for(const t in e)return!1;return!0}(e)||0===e.outerHeightStyle&&!e.overflowing}const Cm=a.forwardRef(function(e,t){const{onChange:n,maxRows:r,minRows:o=1,style:i,value:s}=e,l=(0,Ue.A)(e,wm),{current:u}=a.useRef(null!=s),c=a.useRef(null),d=(0,ja.A)(t,c),p=a.useRef(null),h=a.useRef(null),f=a.useCallback(()=>{const t=c.current,n=h.current;if(!t||!n)return;const a=(0,xm.A)(t).getComputedStyle(t);if("0px"===a.width)return{outerHeightStyle:0,overflowing:!1};n.style.width=a.width,n.value=t.value||e.placeholder||"x","\n"===n.value.slice(-1)&&(n.value+=" ");const i=a.boxSizing,s=Sm(a.paddingBottom)+Sm(a.paddingTop),l=Sm(a.borderBottomWidth)+Sm(a.borderTopWidth),u=n.scrollHeight;n.value="x";const d=n.scrollHeight;let p=u;o&&(p=Math.max(Number(o)*d,p)),r&&(p=Math.min(Number(r)*d,p)),p=Math.max(p,d);return{outerHeightStyle:p+("border-box"===i?s+l:0),overflowing:Math.abs(p-u)<=1}},[r,o,e.placeholder]),m=(0,Am.A)(()=>{const e=c.current,t=f();if(!e||!t||_m(t))return!1;const n=t.outerHeightStyle;return null!=p.current&&p.current!==n}),g=a.useCallback(()=>{const e=c.current,t=f();if(!e||!t||_m(t))return;const n=t.outerHeightStyle;p.current!==n&&(p.current=n,e.style.height="".concat(n,"px")),e.style.overflow=t.overflowing?"hidden":""},[f]),v=a.useRef(-1);(0,Dm.A)(()=>{const e=(0,km.A)(g),t=null==c?void 0:c.current;if(!t)return;const n=(0,xm.A)(t);let r;return n.addEventListener("resize",e),"undefined"!==typeof ResizeObserver&&(r=new ResizeObserver(()=>{m()&&(r.unobserve(t),cancelAnimationFrame(v.current),g(),v.current=requestAnimationFrame(()=>{r.observe(t)}))}),r.observe(t)),()=>{e.clear(),cancelAnimationFrame(v.current),n.removeEventListener("resize",e),r&&r.disconnect()}},[f,g,m]),(0,Dm.A)(()=>{g()});return(0,Je.jsxs)(a.Fragment,{children:[(0,Je.jsx)("textarea",(0,We.A)({value:s,onChange:e=>{u||g(),n&&n(e)},ref:d,rows:o,style:i},l)),(0,Je.jsx)("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:h,tabIndex:-1,style:(0,We.A)({},Em,i,{paddingTop:0,paddingBottom:0})})]})}),Fm=Cm;function Tm(e){let{props:t,states:n,muiFormControl:r}=e;return n.reduce((e,n)=>(e[n]=t[n],r&&"undefined"===typeof t[n]&&(e[n]=r[n]),e),{})}const jm=a.createContext(void 0);function zm(){return a.useContext(jm)}var Im=n(4077),Lm=n(3780);function Pm(e){const t=(0,He.internal_serializeStyles)(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles="@layer global{".concat(t.styles,"}")),t):e}const Rm=function(e){let{styles:t,themeId:n,defaultTheme:r={}}=e;const o=Qe(r),a=n&&o[n]||o;let i="function"===typeof t?t(a):t;return a.modularCssLayers&&(i=Array.isArray(i)?i.map(e=>Pm("function"===typeof e?e(a):e)):Pm(i)),(0,Je.jsx)(Lm.A,{styles:i})};var Nm=n(1210);const Om=function(e){return(0,Je.jsx)(Rm,(0,We.A)({},e,{defaultTheme:Nm.A,themeId:nt.A}))};function Bm(e){return null!=e&&!(Array.isArray(e)&&0===e.length)}function Mm(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e&&(Bm(e.value)&&""!==e.value||t&&Bm(e.defaultValue)&&""!==e.defaultValue)}function Wm(e){return(0,ft.Ay)("MuiInputBase",e)}const Um=(0,rt.A)("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel"]),Vm=["aria-describedby","autoComplete","autoFocus","className","color","components","componentsProps","defaultValue","disabled","disableInjectingGlobalStyles","endAdornment","error","fullWidth","id","inputComponent","inputProps","inputRef","margin","maxRows","minRows","multiline","name","onBlur","onChange","onClick","onFocus","onKeyDown","onKeyUp","placeholder","readOnly","renderSuffix","rows","size","slotProps","slots","startAdornment","type","value"],Hm=(e,t)=>{const{ownerState:n}=e;return[t.root,n.formControl&&t.formControl,n.startAdornment&&t.adornedStart,n.endAdornment&&t.adornedEnd,n.error&&t.error,"small"===n.size&&t.sizeSmall,n.multiline&&t.multiline,n.color&&t["color".concat((0,dt.A)(n.color))],n.fullWidth&&t.fullWidth,n.hiddenLabel&&t.hiddenLabel]},Gm=(e,t)=>{const{ownerState:n}=e;return[t.input,"small"===n.size&&t.inputSizeSmall,n.multiline&&t.inputMultiline,"search"===n.type&&t.inputTypeSearch,n.startAdornment&&t.inputAdornedStart,n.endAdornment&&t.inputAdornedEnd,n.hiddenLabel&&t.inputHiddenLabel]},qm=(0,ht.Ay)("div",{name:"MuiInputBase",slot:"Root",overridesResolver:Hm})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({},t.typography.body1,{color:(t.vars||t).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center",["&.".concat(Um.disabled)]:{color:(t.vars||t).palette.text.disabled,cursor:"default"}},n.multiline&&(0,We.A)({padding:"4px 0 5px"},"small"===n.size&&{paddingTop:1}),n.fullWidth&&{width:"100%"})}),Km=(0,ht.Ay)("input",{name:"MuiInputBase",slot:"Input",overridesResolver:Gm})(e=>{let{theme:t,ownerState:n}=e;const r="light"===t.palette.mode,o=(0,We.A)({color:"currentColor"},t.vars?{opacity:t.vars.opacity.inputPlaceholder}:{opacity:r?.42:.5},{transition:t.transitions.create("opacity",{duration:t.transitions.duration.shorter})}),a={opacity:"0 !important"},i=t.vars?{opacity:t.vars.opacity.inputPlaceholder}:{opacity:r?.42:.5};return(0,We.A)({font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%",animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&::-webkit-input-placeholder":o,"&::-moz-placeholder":o,"&:-ms-input-placeholder":o,"&::-ms-input-placeholder":o,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"},["label[data-shrink=false] + .".concat(Um.formControl," &")]:{"&::-webkit-input-placeholder":a,"&::-moz-placeholder":a,"&:-ms-input-placeholder":a,"&::-ms-input-placeholder":a,"&:focus::-webkit-input-placeholder":i,"&:focus::-moz-placeholder":i,"&:focus:-ms-input-placeholder":i,"&:focus::-ms-input-placeholder":i},["&.".concat(Um.disabled)]:{opacity:1,WebkitTextFillColor:(t.vars||t).palette.text.disabled},"&:-webkit-autofill":{animationDuration:"5000s",animationName:"mui-auto-fill"}},"small"===n.size&&{paddingTop:1},n.multiline&&{height:"auto",resize:"none",padding:0,paddingTop:0},"search"===n.type&&{MozAppearance:"textfield"})}),$m=(0,Je.jsx)(Om,{styles:{"@keyframes mui-auto-fill":{from:{display:"block"}},"@keyframes mui-auto-fill-cancel":{from:{display:"block"}}}}),Ym=a.forwardRef(function(e,t){var n;const r=(0,pt.b)({props:e,name:"MuiInputBase"}),{"aria-describedby":o,autoComplete:i,autoFocus:s,className:l,components:u={},componentsProps:c={},defaultValue:d,disabled:p,disableInjectingGlobalStyles:h,endAdornment:f,fullWidth:m=!1,id:g,inputComponent:v="input",inputProps:y={},inputRef:b,maxRows:x,minRows:A,multiline:D=!1,name:k,onBlur:w,onChange:S,onClick:E,onFocus:_,onKeyDown:C,onKeyUp:F,placeholder:T,readOnly:j,renderSuffix:z,rows:I,slotProps:L={},slots:P={},startAdornment:R,type:N="text",value:O}=r,B=(0,Ue.A)(r,Vm),M=null!=y.value?y.value:O,{current:W}=a.useRef(null!=M),U=a.useRef(),V=a.useCallback(e=>{0},[]),H=(0,Ya.A)(U,b,y.ref,V),[G,q]=a.useState(!1),K=zm();const $=Tm({props:r,muiFormControl:K,states:["color","disabled","error","hiddenLabel","size","required","filled"]});$.focused=K?K.focused:G,a.useEffect(()=>{!K&&p&&G&&(q(!1),w&&w())},[K,p,G,w]);const Y=K&&K.onFilled,X=K&&K.onEmpty,Q=a.useCallback(e=>{Mm(e)?Y&&Y():X&&X()},[Y,X]);(0,Im.A)(()=>{W&&Q({value:M})},[M,Q,W]);a.useEffect(()=>{Q(U.current)},[]);let J=v,Z=y;D&&"input"===J&&(Z=I?(0,We.A)({type:void 0,minRows:I,maxRows:I},Z):(0,We.A)({type:void 0,maxRows:x,minRows:A},Z),J=Fm);a.useEffect(()=>{K&&K.setAdornedStart(Boolean(R))},[K,R]);const ee=(0,We.A)({},r,{color:$.color||"primary",disabled:$.disabled,endAdornment:f,error:$.error,focused:$.focused,formControl:K,fullWidth:m,hiddenLabel:$.hiddenLabel,multiline:D,size:$.size,startAdornment:R,type:N}),te=(e=>{const{classes:t,color:n,disabled:r,error:o,endAdornment:a,focused:i,formControl:s,fullWidth:l,hiddenLabel:u,multiline:c,readOnly:d,size:p,startAdornment:h,type:f}=e,m={root:["root","color".concat((0,dt.A)(n)),r&&"disabled",o&&"error",l&&"fullWidth",i&&"focused",s&&"formControl",p&&"medium"!==p&&"size".concat((0,dt.A)(p)),c&&"multiline",h&&"adornedStart",a&&"adornedEnd",u&&"hiddenLabel",d&&"readOnly"],input:["input",r&&"disabled","search"===f&&"inputTypeSearch",c&&"inputMultiline","small"===p&&"inputSizeSmall",u&&"inputHiddenLabel",h&&"inputAdornedStart",a&&"inputAdornedEnd",d&&"readOnly"]};return(0,ut.A)(m,Wm,t)})(ee),ne=P.root||u.Root||qm,re=L.root||c.root||{},oe=P.input||u.Input||Km;return Z=(0,We.A)({},Z,null!=(n=L.input)?n:c.input),(0,Je.jsxs)(a.Fragment,{children:[!h&&$m,(0,Je.jsxs)(ne,(0,We.A)({},re,!za(ne)&&{ownerState:(0,We.A)({},ee,re.ownerState)},{ref:t,onClick:e=>{U.current&&e.currentTarget===e.target&&U.current.focus(),E&&E(e)}},B,{className:(0,Ve.A)(te.root,re.className,l,j&&"MuiInputBase-readOnly"),children:[R,(0,Je.jsx)(jm.Provider,{value:null,children:(0,Je.jsx)(oe,(0,We.A)({ownerState:ee,"aria-invalid":$.error,"aria-describedby":o,autoComplete:i,autoFocus:s,defaultValue:d,disabled:$.disabled,id:g,onAnimationStart:e=>{Q("mui-auto-fill-cancel"===e.animationName?U.current:{value:"x"})},name:k,placeholder:T,readOnly:j,required:$.required,rows:I,value:M,onKeyDown:C,onKeyUp:F,type:N},Z,!za(oe)&&{as:J,ownerState:(0,We.A)({},ee,Z.ownerState)},{ref:H,className:(0,Ve.A)(te.input,Z.className,j&&"MuiInputBase-readOnly"),onBlur:e=>{w&&w(e),y.onBlur&&y.onBlur(e),K&&K.onBlur?K.onBlur(e):q(!1)},onChange:function(e){if(!W){const t=e.target||U.current;if(null==t)throw new Error((0,bm.A)(1));Q({value:t.value})}for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{$.disabled?e.stopPropagation():(_&&_(e),y.onFocus&&y.onFocus(e),K&&K.onFocus?K.onFocus(e):q(!0))}}))}),f,z?z((0,We.A)({},$,{startAdornment:R})):null]}))]})}),Xm=Ym;var Qm=n(4539);function Jm(e){return(0,ft.Ay)("MuiInput",e)}const Zm=(0,We.A)({},Um,(0,rt.A)("MuiInput",["root","underline","input"])),eg=["disableUnderline","components","componentsProps","fullWidth","inputComponent","multiline","slotProps","slots","type"],tg=(0,ht.Ay)(qm,{shouldForwardProp:e=>(0,Qm.A)(e)||"classes"===e,name:"MuiInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[...Hm(e,t),!n.disableUnderline&&t.underline]}})(e=>{let{theme:t,ownerState:n}=e;let r="light"===t.palette.mode?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return t.vars&&(r="rgba(".concat(t.vars.palette.common.onBackgroundChannel," / ").concat(t.vars.opacity.inputUnderline,")")),(0,We.A)({position:"relative"},n.formControl&&{"label + &":{marginTop:16}},!n.disableUnderline&&{"&::after":{borderBottom:"2px solid ".concat((t.vars||t).palette[n.color].main),left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:t.transitions.create("transform",{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut}),pointerEvents:"none"},["&.".concat(Zm.focused,":after")]:{transform:"scaleX(1) translateX(0)"},["&.".concat(Zm.error)]:{"&::before, &::after":{borderBottomColor:(t.vars||t).palette.error.main}},"&::before":{borderBottom:"1px solid ".concat(r),left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:t.transitions.create("border-bottom-color",{duration:t.transitions.duration.shorter}),pointerEvents:"none"},["&:hover:not(.".concat(Zm.disabled,", .").concat(Zm.error,"):before")]:{borderBottom:"2px solid ".concat((t.vars||t).palette.text.primary),"@media (hover: none)":{borderBottom:"1px solid ".concat(r)}},["&.".concat(Zm.disabled,":before")]:{borderBottomStyle:"dotted"}})}),ng=(0,ht.Ay)(Km,{name:"MuiInput",slot:"Input",overridesResolver:Gm})({}),rg=a.forwardRef(function(e,t){var n,r,o,a;const i=(0,pt.b)({props:e,name:"MuiInput"}),{disableUnderline:s,components:l={},componentsProps:u,fullWidth:c=!1,inputComponent:d="input",multiline:p=!1,slotProps:h,slots:f={},type:m="text"}=i,g=(0,Ue.A)(i,eg),v=(e=>{const{classes:t,disableUnderline:n}=e,r={root:["root",!n&&"underline"],input:["input"]},o=(0,ut.A)(r,Jm,t);return(0,We.A)({},t,o)})(i),y={root:{ownerState:{disableUnderline:s}}},b=(null!=h?h:u)?(0,qf.A)(null!=h?h:u,y):y,x=null!=(n=null!=(r=f.root)?r:l.Root)?n:tg,A=null!=(o=null!=(a=f.input)?a:l.Input)?o:ng;return(0,Je.jsx)(Xm,(0,We.A)({slots:{root:x,input:A},slotProps:b,fullWidth:c,inputComponent:d,multiline:p,ref:t,type:m},g,{classes:v}))});rg.muiName="Input";const og=rg;function ag(e){return(0,ft.Ay)("MuiFilledInput",e)}const ig=(0,We.A)({},Um,(0,rt.A)("MuiFilledInput",["root","underline","input"])),sg=["disableUnderline","components","componentsProps","fullWidth","hiddenLabel","inputComponent","multiline","slotProps","slots","type"],lg=(0,ht.Ay)(qm,{shouldForwardProp:e=>(0,Qm.A)(e)||"classes"===e,name:"MuiFilledInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[...Hm(e,t),!n.disableUnderline&&t.underline]}})(e=>{let{theme:t,ownerState:n}=e;var r;const o="light"===t.palette.mode,a=o?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",i=o?"rgba(0, 0, 0, 0.06)":"rgba(255, 255, 255, 0.09)",s=o?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.13)",l=o?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)";return(0,We.A)({position:"relative",backgroundColor:t.vars?t.vars.palette.FilledInput.bg:i,borderTopLeftRadius:(t.vars||t).shape.borderRadius,borderTopRightRadius:(t.vars||t).shape.borderRadius,transition:t.transitions.create("background-color",{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut}),"&:hover":{backgroundColor:t.vars?t.vars.palette.FilledInput.hoverBg:s,"@media (hover: none)":{backgroundColor:t.vars?t.vars.palette.FilledInput.bg:i}},["&.".concat(ig.focused)]:{backgroundColor:t.vars?t.vars.palette.FilledInput.bg:i},["&.".concat(ig.disabled)]:{backgroundColor:t.vars?t.vars.palette.FilledInput.disabledBg:l}},!n.disableUnderline&&{"&::after":{borderBottom:"2px solid ".concat(null==(r=(t.vars||t).palette[n.color||"primary"])?void 0:r.main),left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:t.transitions.create("transform",{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut}),pointerEvents:"none"},["&.".concat(ig.focused,":after")]:{transform:"scaleX(1) translateX(0)"},["&.".concat(ig.error)]:{"&::before, &::after":{borderBottomColor:(t.vars||t).palette.error.main}},"&::before":{borderBottom:"1px solid ".concat(t.vars?"rgba(".concat(t.vars.palette.common.onBackgroundChannel," / ").concat(t.vars.opacity.inputUnderline,")"):a),left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:t.transitions.create("border-bottom-color",{duration:t.transitions.duration.shorter}),pointerEvents:"none"},["&:hover:not(.".concat(ig.disabled,", .").concat(ig.error,"):before")]:{borderBottom:"1px solid ".concat((t.vars||t).palette.text.primary)},["&.".concat(ig.disabled,":before")]:{borderBottomStyle:"dotted"}},n.startAdornment&&{paddingLeft:12},n.endAdornment&&{paddingRight:12},n.multiline&&(0,We.A)({padding:"25px 12px 8px"},"small"===n.size&&{paddingTop:21,paddingBottom:4},n.hiddenLabel&&{paddingTop:16,paddingBottom:17},n.hiddenLabel&&"small"===n.size&&{paddingTop:8,paddingBottom:9}))}),ug=(0,ht.Ay)(Km,{name:"MuiFilledInput",slot:"Input",overridesResolver:Gm})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({paddingTop:25,paddingRight:12,paddingBottom:8,paddingLeft:12},!t.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===t.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===t.palette.mode?null:"#fff",caretColor:"light"===t.palette.mode?null:"#fff",borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"}},t.vars&&{"&:-webkit-autofill":{borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"},[t.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},"small"===n.size&&{paddingTop:21,paddingBottom:4},n.hiddenLabel&&{paddingTop:16,paddingBottom:17},n.startAdornment&&{paddingLeft:0},n.endAdornment&&{paddingRight:0},n.hiddenLabel&&"small"===n.size&&{paddingTop:8,paddingBottom:9},n.multiline&&{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0})}),cg=a.forwardRef(function(e,t){var n,r,o,a;const i=(0,pt.b)({props:e,name:"MuiFilledInput"}),{components:s={},componentsProps:l,fullWidth:u=!1,inputComponent:c="input",multiline:d=!1,slotProps:p,slots:h={},type:f="text"}=i,m=(0,Ue.A)(i,sg),g=(0,We.A)({},i,{fullWidth:u,inputComponent:c,multiline:d,type:f}),v=(e=>{const{classes:t,disableUnderline:n}=e,r={root:["root",!n&&"underline"],input:["input"]},o=(0,ut.A)(r,ag,t);return(0,We.A)({},t,o)})(i),y={root:{ownerState:g},input:{ownerState:g}},b=(null!=p?p:l)?(0,qf.A)(y,null!=p?p:l):y,x=null!=(n=null!=(r=h.root)?r:s.Root)?n:lg,A=null!=(o=null!=(a=h.input)?a:s.Input)?o:ug;return(0,Je.jsx)(Xm,(0,We.A)({slots:{root:x,input:A},componentsProps:b,fullWidth:u,inputComponent:c,multiline:d,ref:t,type:f},m,{classes:v}))});cg.muiName="Input";const dg=cg;var pg;const hg=["children","classes","className","label","notched"],fg=(0,ht.Ay)("fieldset",{name:"MuiNotchedOutlined",shouldForwardProp:Qm.A})({textAlign:"left",position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden",minWidth:"0%"}),mg=(0,ht.Ay)("legend",{name:"MuiNotchedOutlined",shouldForwardProp:Qm.A})(e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({float:"unset",width:"auto",overflow:"hidden"},!t.withLabel&&{padding:0,lineHeight:"11px",transition:n.transitions.create("width",{duration:150,easing:n.transitions.easing.easeOut})},t.withLabel&&(0,We.A)({display:"block",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:n.transitions.create("max-width",{duration:50,easing:n.transitions.easing.easeOut}),whiteSpace:"nowrap","& > span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}},t.notched&&{maxWidth:"100%",transition:n.transitions.create("max-width",{duration:100,easing:n.transitions.easing.easeOut,delay:50})}))});function gg(e){return(0,ft.Ay)("MuiOutlinedInput",e)}const vg=(0,We.A)({},Um,(0,rt.A)("MuiOutlinedInput",["root","notchedOutline","input"])),yg=["components","fullWidth","inputComponent","label","multiline","notched","slots","type"],bg=(0,ht.Ay)(qm,{shouldForwardProp:e=>(0,Qm.A)(e)||"classes"===e,name:"MuiOutlinedInput",slot:"Root",overridesResolver:Hm})(e=>{let{theme:t,ownerState:n}=e;const r="light"===t.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return(0,We.A)({position:"relative",borderRadius:(t.vars||t).shape.borderRadius,["&:hover .".concat(vg.notchedOutline)]:{borderColor:(t.vars||t).palette.text.primary},"@media (hover: none)":{["&:hover .".concat(vg.notchedOutline)]:{borderColor:t.vars?"rgba(".concat(t.vars.palette.common.onBackgroundChannel," / 0.23)"):r}},["&.".concat(vg.focused," .").concat(vg.notchedOutline)]:{borderColor:(t.vars||t).palette[n.color].main,borderWidth:2},["&.".concat(vg.error," .").concat(vg.notchedOutline)]:{borderColor:(t.vars||t).palette.error.main},["&.".concat(vg.disabled," .").concat(vg.notchedOutline)]:{borderColor:(t.vars||t).palette.action.disabled}},n.startAdornment&&{paddingLeft:14},n.endAdornment&&{paddingRight:14},n.multiline&&(0,We.A)({padding:"16.5px 14px"},"small"===n.size&&{padding:"8.5px 14px"}))}),xg=(0,ht.Ay)(function(e){const{className:t,label:n,notched:r}=e,o=(0,Ue.A)(e,hg),a=null!=n&&""!==n,i=(0,We.A)({},e,{notched:r,withLabel:a});return(0,Je.jsx)(fg,(0,We.A)({"aria-hidden":!0,className:t,ownerState:i},o,{children:(0,Je.jsx)(mg,{ownerState:i,children:a?(0,Je.jsx)("span",{children:n}):pg||(pg=(0,Je.jsx)("span",{className:"notranslate",children:"\u200b"}))})}))},{name:"MuiOutlinedInput",slot:"NotchedOutline",overridesResolver:(e,t)=>t.notchedOutline})(e=>{let{theme:t}=e;const n="light"===t.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:t.vars?"rgba(".concat(t.vars.palette.common.onBackgroundChannel," / 0.23)"):n}}),Ag=(0,ht.Ay)(Km,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:Gm})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({padding:"16.5px 14px"},!t.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===t.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===t.palette.mode?null:"#fff",caretColor:"light"===t.palette.mode?null:"#fff",borderRadius:"inherit"}},t.vars&&{"&:-webkit-autofill":{borderRadius:"inherit"},[t.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},"small"===n.size&&{padding:"8.5px 14px"},n.multiline&&{padding:0},n.startAdornment&&{paddingLeft:0},n.endAdornment&&{paddingRight:0})}),Dg=a.forwardRef(function(e,t){var n,r,o,i,s;const l=(0,pt.b)({props:e,name:"MuiOutlinedInput"}),{components:u={},fullWidth:c=!1,inputComponent:d="input",label:p,multiline:h=!1,notched:f,slots:m={},type:g="text"}=l,v=(0,Ue.A)(l,yg),y=(e=>{const{classes:t}=e,n=(0,ut.A)({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},gg,t);return(0,We.A)({},t,n)})(l),b=zm(),x=Tm({props:l,muiFormControl:b,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),A=(0,We.A)({},l,{color:x.color||"primary",disabled:x.disabled,error:x.error,focused:x.focused,formControl:b,fullWidth:c,hiddenLabel:x.hiddenLabel,multiline:h,size:x.size,type:g}),D=null!=(n=null!=(r=m.root)?r:u.Root)?n:bg,k=null!=(o=null!=(i=m.input)?i:u.Input)?o:Ag;return(0,Je.jsx)(Xm,(0,We.A)({slots:{root:D,input:k},renderSuffix:e=>(0,Je.jsx)(xg,{ownerState:A,className:y.notchedOutline,label:null!=p&&""!==p&&x.required?s||(s=(0,Je.jsxs)(a.Fragment,{children:[p,"\u2009","*"]})):p,notched:"undefined"!==typeof f?f:Boolean(e.startAdornment||e.filled||e.focused)}),fullWidth:c,inputComponent:d,multiline:h,ref:t,type:g},v,{classes:(0,We.A)({},y,{notchedOutline:null})}))});Dg.muiName="Input";const kg=Dg;function wg(e){return(0,ft.Ay)("MuiFormLabel",e)}const Sg=(0,rt.A)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]),Eg=["children","className","color","component","disabled","error","filled","focused","required"],_g=(0,ht.Ay)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return(0,We.A)({},t.root,"secondary"===n.color&&t.colorSecondary,n.filled&&t.filled)}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({color:(t.vars||t).palette.text.secondary},t.typography.body1,{lineHeight:"1.4375em",padding:0,position:"relative",["&.".concat(Sg.focused)]:{color:(t.vars||t).palette[n.color].main},["&.".concat(Sg.disabled)]:{color:(t.vars||t).palette.text.disabled},["&.".concat(Sg.error)]:{color:(t.vars||t).palette.error.main}})}),Cg=(0,ht.Ay)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:(e,t)=>t.asterisk})(e=>{let{theme:t}=e;return{["&.".concat(Sg.error)]:{color:(t.vars||t).palette.error.main}}}),Fg=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiFormLabel"}),{children:r,className:o,component:a="label"}=n,i=(0,Ue.A)(n,Eg),s=Tm({props:n,muiFormControl:zm(),states:["color","required","focused","disabled","error","filled"]}),l=(0,We.A)({},n,{color:s.color||"primary",component:a,disabled:s.disabled,error:s.error,filled:s.filled,focused:s.focused,required:s.required}),u=(e=>{const{classes:t,color:n,focused:r,disabled:o,error:a,filled:i,required:s}=e,l={root:["root","color".concat((0,dt.A)(n)),o&&"disabled",a&&"error",i&&"filled",r&&"focused",s&&"required"],asterisk:["asterisk",a&&"error"]};return(0,ut.A)(l,wg,t)})(l);return(0,Je.jsxs)(_g,(0,We.A)({as:a,ownerState:l,className:(0,Ve.A)(u.root,o),ref:t},i,{children:[r,s.required&&(0,Je.jsxs)(Cg,{ownerState:l,"aria-hidden":!0,className:u.asterisk,children:["\u2009","*"]})]}))}),Tg=Fg;function jg(e){return(0,ft.Ay)("MuiInputLabel",e)}(0,rt.A)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);const zg=["disableAnimation","margin","shrink","variant","className"],Ig=(0,ht.Ay)(Tg,{shouldForwardProp:e=>(0,Qm.A)(e)||"classes"===e,name:"MuiInputLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(Sg.asterisk)]:t.asterisk},t.root,n.formControl&&t.formControl,"small"===n.size&&t.sizeSmall,n.shrink&&t.shrink,!n.disableAnimation&&t.animated,n.focused&&t.focused,t[n.variant]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},n.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===n.size&&{transform:"translate(0, 17px) scale(1)"},n.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!n.disableAnimation&&{transition:t.transitions.create(["color","transform","max-width"],{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut})},"filled"===n.variant&&(0,We.A)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(12px, 13px) scale(1)"},n.shrink&&(0,We.A)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===n.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===n.variant&&(0,We.A)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(14px, 9px) scale(1)"},n.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))}),Lg=a.forwardRef(function(e,t){const n=(0,pt.b)({name:"MuiInputLabel",props:e}),{disableAnimation:r=!1,shrink:o,className:a}=n,i=(0,Ue.A)(n,zg),s=zm();let l=o;"undefined"===typeof l&&s&&(l=s.filled||s.focused||s.adornedStart);const u=Tm({props:n,muiFormControl:s,states:["size","variant","required","focused"]}),c=(0,We.A)({},n,{disableAnimation:r,formControl:s,shrink:l,size:u.size,variant:u.variant,required:u.required,focused:u.focused}),d=(e=>{const{classes:t,formControl:n,size:r,shrink:o,disableAnimation:a,variant:i,required:s}=e,l={root:["root",n&&"formControl",!a&&"animated",o&&"shrink",r&&"normal"!==r&&"size".concat((0,dt.A)(r)),i],asterisk:[s&&"asterisk"]},u=(0,ut.A)(l,jg,t);return(0,We.A)({},t,u)})(c);return(0,Je.jsx)(Ig,(0,We.A)({"data-shrink":l,ownerState:c,ref:t,className:(0,Ve.A)(d.root,a)},i,{classes:d}))});var Pg=n(1867);function Rg(e){return(0,ft.Ay)("MuiFormControl",e)}(0,rt.A)("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);const Ng=["children","className","color","component","disabled","error","focused","fullWidth","hiddenLabel","margin","required","size","variant"],Og=(0,ht.Ay)("div",{name:"MuiFormControl",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return(0,We.A)({},t.root,t["margin".concat((0,dt.A)(n.margin))],n.fullWidth&&t.fullWidth)}})(e=>{let{ownerState:t}=e;return(0,We.A)({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},"normal"===t.margin&&{marginTop:16,marginBottom:8},"dense"===t.margin&&{marginTop:8,marginBottom:4},t.fullWidth&&{width:"100%"})}),Bg=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiFormControl"}),{children:r,className:o,color:i="primary",component:s="div",disabled:l=!1,error:u=!1,focused:c,fullWidth:d=!1,hiddenLabel:p=!1,margin:h="none",required:f=!1,size:m="medium",variant:g="outlined"}=n,v=(0,Ue.A)(n,Ng),y=(0,We.A)({},n,{color:i,component:s,disabled:l,error:u,fullWidth:d,hiddenLabel:p,margin:h,required:f,size:m,variant:g}),b=(e=>{const{classes:t,margin:n,fullWidth:r}=e,o={root:["root","none"!==n&&"margin".concat((0,dt.A)(n)),r&&"fullWidth"]};return(0,ut.A)(o,Rg,t)})(y),[x,A]=a.useState(()=>{let e=!1;return r&&a.Children.forEach(r,t=>{if(!(0,Pg.A)(t,["Input","Select"]))return;const n=(0,Pg.A)(t,["Select"])?t.props.input:t;n&&n.props.startAdornment&&(e=!0)}),e}),[D,k]=a.useState(()=>{let e=!1;return r&&a.Children.forEach(r,t=>{(0,Pg.A)(t,["Input","Select"])&&(Mm(t.props,!0)||Mm(t.props.inputProps,!0))&&(e=!0)}),e}),[w,S]=a.useState(!1);l&&w&&S(!1);const E=void 0===c||l?w:c;let _;const C=a.useMemo(()=>({adornedStart:x,setAdornedStart:A,color:i,disabled:l,error:u,filled:D,focused:E,fullWidth:d,hiddenLabel:p,size:m,onBlur:()=>{S(!1)},onEmpty:()=>{k(!1)},onFilled:()=>{k(!0)},onFocus:()=>{S(!0)},registerEffect:_,required:f,variant:g}),[x,i,l,u,D,E,d,p,_,f,m,g]);return(0,Je.jsx)(jm.Provider,{value:C,children:(0,Je.jsx)(Og,(0,We.A)({as:s,ownerState:y,className:(0,Ve.A)(b.root,o),ref:t},v,{children:r}))})}),Mg=Bg;function Wg(e){return(0,ft.Ay)("MuiFormHelperText",e)}const Ug=(0,rt.A)("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]);var Vg;const Hg=["children","className","component","disabled","error","filled","focused","margin","required","variant"],Gg=(0,ht.Ay)("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.size&&t["size".concat((0,dt.A)(n.size))],n.contained&&t.contained,n.filled&&t.filled]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({color:(t.vars||t).palette.text.secondary},t.typography.caption,{textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,["&.".concat(Ug.disabled)]:{color:(t.vars||t).palette.text.disabled},["&.".concat(Ug.error)]:{color:(t.vars||t).palette.error.main}},"small"===n.size&&{marginTop:4},n.contained&&{marginLeft:14,marginRight:14})}),qg=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiFormHelperText"}),{children:r,className:o,component:a="p"}=n,i=(0,Ue.A)(n,Hg),s=Tm({props:n,muiFormControl:zm(),states:["variant","size","disabled","error","filled","focused","required"]}),l=(0,We.A)({},n,{component:a,contained:"filled"===s.variant||"outlined"===s.variant,variant:s.variant,size:s.size,disabled:s.disabled,error:s.error,filled:s.filled,focused:s.focused,required:s.required}),u=(e=>{const{classes:t,contained:n,size:r,disabled:o,error:a,filled:i,focused:s,required:l}=e,u={root:["root",o&&"disabled",a&&"error",r&&"size".concat((0,dt.A)(r)),n&&"contained",s&&"focused",i&&"filled",l&&"required"]};return(0,ut.A)(u,Wg,t)})(l);return(0,Je.jsx)(Gg,(0,We.A)({as:a,ownerState:l,className:(0,Ve.A)(u.root,o),ref:t},i,{children:" "===r?Vg||(Vg=(0,Je.jsx)("span",{className:"notranslate",children:"\u200b"})):r}))});function Kg(e){var t;return parseInt(a.version,10)>=19?(null==e||null==(t=e.props)?void 0:t.ref)||null:(null==e?void 0:e.ref)||null}var $g=n(5571);const Yg=["value"],Xg=a.createContext();const Qg=()=>{const e=a.useContext(Xg);return null!=e&&e},Jg=function(e){let{value:t}=e,n=(0,Ue.A)(e,Yg);return(0,Je.jsx)(Xg.Provider,(0,We.A)({value:null==t||t},n))},Zg=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];const ev=function(e){var t;const{elementType:n,externalSlotProps:r,ownerState:o,skipResolvingSlotProps:a=!1}=e,i=(0,Ue.A)(e,Zg),s=a?{}:La(r,o),{props:l,internalRef:u}=Na((0,We.A)({},i,{externalSlotProps:s})),c=(0,ja.A)(u,null==s?void 0:s.ref,null==(t=e.additionalProps)?void 0:t.ref);return Ia(n,(0,We.A)({},l,{ref:c}),o)};const tv=a.createContext({});function nv(e){return(0,ft.Ay)("MuiList",e)}(0,rt.A)("MuiList",["root","padding","dense","subheader"]);const rv=["children","className","component","dense","disablePadding","subheader"],ov=(0,ht.Ay)("ul",{name:"MuiList",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disablePadding&&t.padding,n.dense&&t.dense,n.subheader&&t.subheader]}})(e=>{let{ownerState:t}=e;return(0,We.A)({listStyle:"none",margin:0,padding:0,position:"relative"},!t.disablePadding&&{paddingTop:8,paddingBottom:8},t.subheader&&{paddingTop:0})}),av=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiList"}),{children:r,className:o,component:i="ul",dense:s=!1,disablePadding:l=!1,subheader:u}=n,c=(0,Ue.A)(n,rv),d=a.useMemo(()=>({dense:s}),[s]),p=(0,We.A)({},n,{component:i,dense:s,disablePadding:l}),h=(e=>{const{classes:t,disablePadding:n,dense:r,subheader:o}=e,a={root:["root",!n&&"padding",r&&"dense",o&&"subheader"]};return(0,ut.A)(a,nv,t)})(p);return(0,Je.jsx)(tv.Provider,{value:d,children:(0,Je.jsxs)(ov,(0,We.A)({as:i,className:(0,Ve.A)(h.root,o),ref:t,ownerState:p},c,{children:[u,r]}))})});function iv(e){const t=e.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}const sv=iv,lv=["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"];function uv(e,t,n){return e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:n?null:e.firstChild}function cv(e,t,n){return e===t?n?e.firstChild:e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:n?null:e.lastChild}function dv(e,t){if(void 0===t)return!0;let n=e.innerText;return void 0===n&&(n=e.textContent),n=n.trim().toLowerCase(),0!==n.length&&(t.repeating?n[0]===t.keys[0]:0===n.indexOf(t.keys.join("")))}function pv(e,t,n,r,o,a){let i=!1,s=o(e,t,!!t&&n);for(;s;){if(s===e.firstChild){if(i)return!1;i=!0}const t=!r&&(s.disabled||"true"===s.getAttribute("aria-disabled"));if(s.hasAttribute("tabindex")&&dv(s,a)&&!t)return s.focus(),!0;s=o(e,s,n)}return!1}const hv=a.forwardRef(function(e,t){const{actions:n,autoFocus:r=!1,autoFocusItem:o=!1,children:i,className:s,disabledItemsFocusable:l=!1,disableListWrap:u=!1,onKeyDown:c,variant:d="selectedMenu"}=e,p=(0,Ue.A)(e,lv),h=a.useRef(null),f=a.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});(0,Im.A)(()=>{r&&h.current.focus()},[r]),a.useImperativeHandle(n,()=>({adjustStyleForScrollbar:(e,t)=>{let{direction:n}=t;const r=!h.current.style.width;if(e.clientHeight{a.isValidElement(e)?(e.props.disabled||("selectedMenu"===d&&e.props.selected||-1===g)&&(g=t),g===t&&(e.props.disabled||e.props.muiSkipListHighlight||e.type.muiSkipListHighlight)&&(g+=1,g>=i.length&&(g=-1))):g===t&&(g+=1,g>=i.length&&(g=-1))});const v=a.Children.map(i,(e,t)=>{if(t===g){const t={};return o&&(t.autoFocus=!0),void 0===e.props.tabIndex&&"selectedMenu"===d&&(t.tabIndex=0),a.cloneElement(e,t)}return e});return(0,Je.jsx)(av,(0,We.A)({role:"menu",ref:m,className:s,onKeyDown:e=>{const t=h.current,n=e.key,r=(0,$g.A)(t).activeElement;if("ArrowDown"===n)e.preventDefault(),pv(t,r,u,l,uv);else if("ArrowUp"===n)e.preventDefault(),pv(t,r,u,l,cv);else if("Home"===n)e.preventDefault(),pv(t,null,u,l,uv);else if("End"===n)e.preventDefault(),pv(t,null,u,l,cv);else if(1===n.length){const o=f.current,a=n.toLowerCase(),i=performance.now();o.keys.length>0&&(i-o.lastTime>500?(o.keys=[],o.repeating=!0,o.previousKeyMatched=!0):o.repeating&&a!==o.keys[0]&&(o.repeating=!1)),o.lastTime=i,o.keys.push(a);const s=r&&!o.repeating&&dv(r,o);o.previousKeyMatched&&(s||pv(t,r,!1,l,uv,o))?e.preventDefault():o.previousKeyMatched=!1}c&&c(e)},tabIndex:r?0:-1},p,{children:v}))}),fv=hv;var mv=n(3806),gv=n(6614);const vv=!1;var yv="unmounted",bv="exited",xv="entering",Av="entered",Dv="exiting",kv=function(e){function t(t,n){var r;r=e.call(this,t,n)||this;var o,a=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?a?(o=bv,r.appearStatus=xv):o=Av:o=t.unmountOnExit||t.mountOnEnter?yv:bv,r.state={status:o},r.nextCallback=null,r}Za(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===yv?{status:bv}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==xv&&n!==Av&&(t=xv):n!==xv&&n!==Av||(t=Dv)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!==typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===xv){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:l.findDOMNode(this);n&&function(e){e.scrollTop}(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===bv&&this.setState({status:yv})},n.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,o=this.props.nodeRef?[r]:[l.findDOMNode(this),r],a=o[0],i=o[1],s=this.getTimeouts(),u=r?s.appear:s.enter;!e&&!n||vv?this.safeSetState({status:Av},function(){t.props.onEntered(a)}):(this.props.onEnter(a,i),this.safeSetState({status:xv},function(){t.props.onEntering(a,i),t.onTransitionEnd(u,function(){t.safeSetState({status:Av},function(){t.props.onEntered(a,i)})})}))},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:l.findDOMNode(this);t&&!vv?(this.props.onExit(r),this.safeSetState({status:Dv},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:bv},function(){e.props.onExited(r)})})})):this.safeSetState({status:bv},function(){e.props.onExited(r)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:l.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var o=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],a=o[0],i=o[1];this.props.addEndListener(a,i)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===yv)return null;var t=this.props,n=t.children,r=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,(0,Ue.A)(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return a.createElement(ei.Provider,{value:null},"function"===typeof n?n(e,r):a.cloneElement(a.Children.only(n),r))},t}(a.Component);function wv(){}kv.contextType=ei,kv.propTypes={},kv.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:wv,onEntering:wv,onEntered:wv,onExit:wv,onExiting:wv,onExited:wv},kv.UNMOUNTED=yv,kv.EXITED=bv,kv.ENTERING=xv,kv.ENTERED=Av,kv.EXITING=Dv;const Sv=kv;function Ev(){const e=Qe(Nm.A);return e[nt.A]||e}const _v=e=>e.scrollTop;function Cv(e,t){var n,r;const{timeout:o,easing:a,style:i={}}=e;return{duration:null!=(n=i.transitionDuration)?n:"number"===typeof o?o:o[t.mode]||0,easing:null!=(r=i.transitionTimingFunction)?r:"object"===typeof a?a[t.mode]:a,delay:i.transitionDelay}}const Fv=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function Tv(e){return"scale(".concat(e,", ").concat(e**2,")")}const jv={entering:{opacity:1,transform:Tv(1)},entered:{opacity:1,transform:"none"}},zv="undefined"!==typeof navigator&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),Iv=a.forwardRef(function(e,t){const{addEndListener:n,appear:r=!0,children:o,easing:i,in:s,onEnter:l,onEntered:u,onEntering:c,onExit:d,onExited:p,onExiting:h,style:f,timeout:m="auto",TransitionComponent:g=Sv}=e,v=(0,Ue.A)(e,Fv),y=(0,si.A)(),b=a.useRef(),x=Ev(),A=a.useRef(null),D=(0,Ya.A)(A,Kg(o),t),k=e=>t=>{if(e){const n=A.current;void 0===t?e(n):e(n,t)}},w=k(c),S=k((e,t)=>{_v(e);const{duration:n,delay:r,easing:o}=Cv({style:f,timeout:m,easing:i},{mode:"enter"});let a;"auto"===m?(a=x.transitions.getAutoHeightDuration(e.clientHeight),b.current=a):a=n,e.style.transition=[x.transitions.create("opacity",{duration:a,delay:r}),x.transitions.create("transform",{duration:zv?a:.666*a,delay:r,easing:o})].join(","),l&&l(e,t)}),E=k(u),_=k(h),C=k(e=>{const{duration:t,delay:n,easing:r}=Cv({style:f,timeout:m,easing:i},{mode:"exit"});let o;"auto"===m?(o=x.transitions.getAutoHeightDuration(e.clientHeight),b.current=o):o=t,e.style.transition=[x.transitions.create("opacity",{duration:o,delay:n}),x.transitions.create("transform",{duration:zv?o:.666*o,delay:zv?n:n||.333*o,easing:r})].join(","),e.style.opacity=0,e.style.transform=Tv(.75),d&&d(e)}),F=k(p);return(0,Je.jsx)(g,(0,We.A)({appear:r,in:s,nodeRef:A,onEnter:S,onEntered:E,onEntering:w,onExit:C,onExited:F,onExiting:_,addEndListener:e=>{"auto"===m&&y.start(b.current||0,e),n&&n(A.current,e)},timeout:"auto"===m?null:m},v,{children:(e,t)=>a.cloneElement(o,(0,We.A)({style:(0,We.A)({opacity:0,transform:Tv(.75),visibility:"exited"!==e||s?void 0:"hidden"},jv[e],f,o.props.style),ref:D},t))}))});Iv.muiSupportAuto=!0;const Lv=Iv;var Pv=n(9669);const Rv=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function Nv(e){const t=[],n=[];return Array.from(e.querySelectorAll(Rv)).forEach((e,r)=>{const o=function(e){const t=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(t)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:t}(e);-1!==o&&function(e){return!(e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||function(e){if("INPUT"!==e.tagName||"radio"!==e.type)return!1;if(!e.name)return!1;const t=t=>e.ownerDocument.querySelector('input[type="radio"]'.concat(t));let n=t('[name="'.concat(e.name,'"]:checked'));return n||(n=t('[name="'.concat(e.name,'"]'))),n!==e}(e))}(e)&&(0===o?t.push(e):n.push({documentOrder:r,tabIndex:o,node:e}))}),n.sort((e,t)=>e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex).map(e=>e.node).concat(t)}function Ov(){return!0}const Bv=function(e){const{children:t,disableAutoFocus:n=!1,disableEnforceFocus:r=!1,disableRestoreFocus:o=!1,getTabbable:i=Nv,isEnabled:s=Ov,open:l}=e,u=a.useRef(!1),c=a.useRef(null),d=a.useRef(null),p=a.useRef(null),h=a.useRef(null),f=a.useRef(!1),m=a.useRef(null),g=(0,ja.A)(Kg(t),m),v=a.useRef(null);a.useEffect(()=>{l&&m.current&&(f.current=!n)},[n,l]),a.useEffect(()=>{if(!l||!m.current)return;const e=(0,Pv.A)(m.current);return m.current.contains(e.activeElement)||(m.current.hasAttribute("tabIndex")||m.current.setAttribute("tabIndex","-1"),f.current&&m.current.focus()),()=>{o||(p.current&&p.current.focus&&(u.current=!0,p.current.focus()),p.current=null)}},[l]),a.useEffect(()=>{if(!l||!m.current)return;const e=(0,Pv.A)(m.current),t=t=>{v.current=t,!r&&s()&&"Tab"===t.key&&e.activeElement===m.current&&t.shiftKey&&(u.current=!0,d.current&&d.current.focus())},n=()=>{const t=m.current;if(null===t)return;if(!e.hasFocus()||!s()||u.current)return void(u.current=!1);if(t.contains(e.activeElement))return;if(r&&e.activeElement!==c.current&&e.activeElement!==d.current)return;if(e.activeElement!==h.current)h.current=null;else if(null!==h.current)return;if(!f.current)return;let n=[];if(e.activeElement!==c.current&&e.activeElement!==d.current||(n=i(m.current)),n.length>0){var o,a;const e=Boolean((null==(o=v.current)?void 0:o.shiftKey)&&"Tab"===(null==(a=v.current)?void 0:a.key)),t=n[0],r=n[n.length-1];"string"!==typeof t&&"string"!==typeof r&&(e?r.focus():t.focus())}else t.focus()};e.addEventListener("focusin",n),e.addEventListener("keydown",t,!0);const o=setInterval(()=>{e.activeElement&&"BODY"===e.activeElement.tagName&&n()},50);return()=>{clearInterval(o),e.removeEventListener("focusin",n),e.removeEventListener("keydown",t,!0)}},[n,r,o,s,l,i]);const y=e=>{null===p.current&&(p.current=e.relatedTarget),f.current=!0};return(0,Je.jsxs)(a.Fragment,{children:[(0,Je.jsx)("div",{tabIndex:l?0:-1,onFocus:y,ref:c,"data-testid":"sentinelStart"}),a.cloneElement(t,{ref:g,onFocus:e=>{null===p.current&&(p.current=e.relatedTarget),f.current=!0,h.current=e.target;const n=t.props.onFocus;n&&n(e)}}),(0,Je.jsx)("div",{tabIndex:l?0:-1,onFocus:y,ref:d,"data-testid":"sentinelEnd"})]})};var Mv=n(1941);const Wv=a.forwardRef(function(e,t){const{children:n,container:r,disablePortal:o=!1}=e,[i,s]=a.useState(null),u=(0,ja.A)(a.isValidElement(n)?Kg(n):null,t);if((0,Dm.A)(()=>{o||s(function(e){return"function"===typeof e?e():e}(r)||document.body)},[r,o]),(0,Dm.A)(()=>{if(i&&!o)return(0,Mv.A)(t,i),()=>{(0,Mv.A)(t,null)}},[t,i,o]),o){if(a.isValidElement(n)){const e={ref:u};return a.cloneElement(n,e)}return(0,Je.jsx)(a.Fragment,{children:n})}return(0,Je.jsx)(a.Fragment,{children:i?l.createPortal(n,i):i})}),Uv=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],Vv={entering:{opacity:1},entered:{opacity:1}},Hv=a.forwardRef(function(e,t){const n=Ev(),r={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:o,appear:i=!0,children:s,easing:l,in:u,onEnter:c,onEntered:d,onEntering:p,onExit:h,onExited:f,onExiting:m,style:g,timeout:v=r,TransitionComponent:y=Sv}=e,b=(0,Ue.A)(e,Uv),x=a.useRef(null),A=(0,Ya.A)(x,Kg(s),t),D=e=>t=>{if(e){const n=x.current;void 0===t?e(n):e(n,t)}},k=D(p),w=D((e,t)=>{_v(e);const r=Cv({style:g,timeout:v,easing:l},{mode:"enter"});e.style.webkitTransition=n.transitions.create("opacity",r),e.style.transition=n.transitions.create("opacity",r),c&&c(e,t)}),S=D(d),E=D(m),_=D(e=>{const t=Cv({style:g,timeout:v,easing:l},{mode:"exit"});e.style.webkitTransition=n.transitions.create("opacity",t),e.style.transition=n.transitions.create("opacity",t),h&&h(e)}),C=D(f);return(0,Je.jsx)(y,(0,We.A)({appear:i,in:u,nodeRef:x,onEnter:w,onEntered:S,onEntering:k,onExit:_,onExited:C,onExiting:E,addEndListener:e=>{o&&o(x.current,e)},timeout:v},b,{children:(e,t)=>a.cloneElement(s,(0,We.A)({style:(0,We.A)({opacity:0,visibility:"exited"!==e||u?void 0:"hidden"},Vv[e],g,s.props.style),ref:A},t))}))}),Gv=Hv;function qv(e){return(0,ft.Ay)("MuiBackdrop",e)}(0,rt.A)("MuiBackdrop",["root","invisible"]);const Kv=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],$v=(0,ht.Ay)("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.invisible&&t.invisible]}})(e=>{let{ownerState:t}=e;return(0,We.A)({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},t.invisible&&{backgroundColor:"transparent"})}),Yv=a.forwardRef(function(e,t){var n,r,o;const a=(0,pt.b)({props:e,name:"MuiBackdrop"}),{children:i,className:s,component:l="div",components:u={},componentsProps:c={},invisible:d=!1,open:p,slotProps:h={},slots:f={},TransitionComponent:m=Gv,transitionDuration:g}=a,v=(0,Ue.A)(a,Kv),y=(0,We.A)({},a,{component:l,invisible:d}),b=(e=>{const{classes:t,invisible:n}=e,r={root:["root",n&&"invisible"]};return(0,ut.A)(r,qv,t)})(y),x=null!=(n=h.root)?n:c.root;return(0,Je.jsx)(m,(0,We.A)({in:p,timeout:g},v,{children:(0,Je.jsx)($v,(0,We.A)({"aria-hidden":!0},x,{as:null!=(r=null!=(o=f.root)?o:u.Root)?r:l,className:(0,Ve.A)(b.root,s,null==x?void 0:x.className),ownerState:(0,We.A)({},y,null==x?void 0:x.ownerState),classes:b,ref:t,children:i}))}))});var Xv=n(4849);function Qv(e,t){t?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function Jv(e){return parseInt((0,xm.A)(e).getComputedStyle(e).paddingRight,10)||0}function Zv(e,t,n,r,o){const a=[t,n,...r];[].forEach.call(e.children,e=>{const t=-1===a.indexOf(e),n=!function(e){const t=-1!==["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].indexOf(e.tagName),n="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return t||n}(e);t&&n&&Qv(e,o)})}function ey(e,t){let n=-1;return e.some((e,r)=>!!t(e)&&(n=r,!0)),n}function ty(e,t){const n=[],r=e.container;if(!t.disableScrollLock){if(function(e){const t=(0,Pv.A)(e);return t.body===e?(0,xm.A)(e).innerWidth>t.documentElement.clientWidth:e.scrollHeight>e.clientHeight}(r)){const e=iv((0,Pv.A)(r));n.push({value:r.style.paddingRight,property:"padding-right",el:r}),r.style.paddingRight="".concat(Jv(r)+e,"px");const t=(0,Pv.A)(r).querySelectorAll(".mui-fixed");[].forEach.call(t,t=>{n.push({value:t.style.paddingRight,property:"padding-right",el:t}),t.style.paddingRight="".concat(Jv(t)+e,"px")})}let e;if(r.parentNode instanceof DocumentFragment)e=(0,Pv.A)(r).body;else{const t=r.parentElement,n=(0,xm.A)(r);e="HTML"===(null==t?void 0:t.nodeName)&&"scroll"===n.getComputedStyle(t).overflowY?t:r}n.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{n.forEach(e=>{let{value:t,el:n,property:r}=e;t?n.style.setProperty(r,t):n.style.removeProperty(r)})}}const ny=new class{constructor(){this.containers=void 0,this.modals=void 0,this.modals=[],this.containers=[]}add(e,t){let n=this.modals.indexOf(e);if(-1!==n)return n;n=this.modals.length,this.modals.push(e),e.modalRef&&Qv(e.modalRef,!1);const r=function(e){const t=[];return[].forEach.call(e.children,e=>{"true"===e.getAttribute("aria-hidden")&&t.push(e)}),t}(t);Zv(t,e.mount,e.modalRef,r,!0);const o=ey(this.containers,e=>e.container===t);return-1!==o?(this.containers[o].modals.push(e),n):(this.containers.push({modals:[e],container:t,restore:null,hiddenSiblings:r}),n)}mount(e,t){const n=ey(this.containers,t=>-1!==t.modals.indexOf(e)),r=this.containers[n];r.restore||(r.restore=ty(r,t))}remove(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const n=this.modals.indexOf(e);if(-1===n)return n;const r=ey(this.containers,t=>-1!==t.modals.indexOf(e)),o=this.containers[r];if(o.modals.splice(o.modals.indexOf(e),1),this.modals.splice(n,1),0===o.modals.length)o.restore&&o.restore(),e.modalRef&&Qv(e.modalRef,t),Zv(o.container,e.mount,e.modalRef,o.hiddenSiblings,!1),this.containers.splice(r,1);else{const e=o.modals[o.modals.length-1];e.modalRef&&Qv(e.modalRef,!1)}return n}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}};const ry=function(e){const{container:t,disableEscapeKeyDown:n=!1,disableScrollLock:r=!1,manager:o=ny,closeAfterTransition:i=!1,onTransitionEnter:s,onTransitionExited:l,children:u,onClose:c,open:d,rootRef:p}=e,h=a.useRef({}),f=a.useRef(null),m=a.useRef(null),g=(0,ja.A)(m,p),[v,y]=a.useState(!d),b=function(e){return!!e&&e.props.hasOwnProperty("in")}(u);let x=!0;"false"!==e["aria-hidden"]&&!1!==e["aria-hidden"]||(x=!1);const A=()=>(h.current.modalRef=m.current,h.current.mount=f.current,h.current),D=()=>{o.mount(A(),{disableScrollLock:r}),m.current&&(m.current.scrollTop=0)},k=(0,Am.A)(()=>{const e=function(e){return"function"===typeof e?e():e}(t)||(0,Pv.A)(f.current).body;o.add(A(),e),m.current&&D()}),w=a.useCallback(()=>o.isTopModal(A()),[o]),S=(0,Am.A)(e=>{f.current=e,e&&(d&&w()?D():m.current&&Qv(m.current,x))}),E=a.useCallback(()=>{o.remove(A(),x)},[x,o]);a.useEffect(()=>()=>{E()},[E]),a.useEffect(()=>{d?k():b&&i||E()},[d,E,b,i,k]);const _=e=>t=>{var r;null==(r=e.onKeyDown)||r.call(e,t),"Escape"===t.key&&229!==t.which&&w()&&(n||(t.stopPropagation(),c&&c(t,"escapeKeyDown")))},C=e=>t=>{var n;null==(n=e.onClick)||n.call(e,t),t.target===t.currentTarget&&c&&c(t,"backdropClick")};return{getRootProps:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=Pa(e);delete n.onTransitionEnter,delete n.onTransitionExited;const r=(0,We.A)({},n,t);return(0,We.A)({role:"presentation"},r,{onKeyDown:_(r),ref:g})},getBackdropProps:function(){const e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,We.A)({"aria-hidden":!0},e,{onClick:C(e),open:d})},getTransitionProps:()=>({onEnter:(0,Xv.A)(()=>{y(!1),s&&s()},null==u?void 0:u.props.onEnter),onExited:(0,Xv.A)(()=>{y(!0),l&&l(),i&&E()},null==u?void 0:u.props.onExited)}),rootRef:g,portalRef:S,isTopModal:w,exited:v,hasTransition:b}};function oy(e){return(0,ft.Ay)("MuiModal",e)}(0,rt.A)("MuiModal",["root","hidden","backdrop"]);const ay=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","onTransitionEnter","onTransitionExited","open","slotProps","slots","theme"],iy=(0,ht.Ay)("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.open&&n.exited&&t.hidden]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({position:"fixed",zIndex:(t.vars||t).zIndex.modal,right:0,bottom:0,top:0,left:0},!n.open&&n.exited&&{visibility:"hidden"})}),sy=(0,ht.Ay)(Yv,{name:"MuiModal",slot:"Backdrop",overridesResolver:(e,t)=>t.backdrop})({zIndex:-1}),ly=a.forwardRef(function(e,t){var n,r,o,i,s,l;const u=(0,pt.b)({name:"MuiModal",props:e}),{BackdropComponent:c=sy,BackdropProps:d,className:p,closeAfterTransition:h=!1,children:f,container:m,component:g,components:v={},componentsProps:y={},disableAutoFocus:b=!1,disableEnforceFocus:x=!1,disableEscapeKeyDown:A=!1,disablePortal:D=!1,disableRestoreFocus:k=!1,disableScrollLock:w=!1,hideBackdrop:S=!1,keepMounted:E=!1,onBackdropClick:_,open:C,slotProps:F,slots:T}=u,j=(0,Ue.A)(u,ay),z=(0,We.A)({},u,{closeAfterTransition:h,disableAutoFocus:b,disableEnforceFocus:x,disableEscapeKeyDown:A,disablePortal:D,disableRestoreFocus:k,disableScrollLock:w,hideBackdrop:S,keepMounted:E}),{getRootProps:I,getBackdropProps:L,getTransitionProps:P,portalRef:R,isTopModal:N,exited:O,hasTransition:B}=ry((0,We.A)({},z,{rootRef:t})),M=(0,We.A)({},z,{exited:O}),W=(e=>{const{open:t,exited:n,classes:r}=e,o={root:["root",!t&&n&&"hidden"],backdrop:["backdrop"]};return(0,ut.A)(o,oy,r)})(M),U={};if(void 0===f.props.tabIndex&&(U.tabIndex="-1"),B){const{onEnter:e,onExited:t}=P();U.onEnter=e,U.onExited=t}const V=null!=(n=null!=(r=null==T?void 0:T.root)?r:v.Root)?n:iy,H=null!=(o=null!=(i=null==T?void 0:T.backdrop)?i:v.Backdrop)?o:c,G=null!=(s=null==F?void 0:F.root)?s:y.root,q=null!=(l=null==F?void 0:F.backdrop)?l:y.backdrop,K=ev({elementType:V,externalSlotProps:G,externalForwardedProps:j,getSlotProps:I,additionalProps:{ref:t,as:g},ownerState:M,className:(0,Ve.A)(p,null==G?void 0:G.className,null==W?void 0:W.root,!M.open&&M.exited&&(null==W?void 0:W.hidden))}),$=ev({elementType:H,externalSlotProps:q,additionalProps:d,getSlotProps:e=>L((0,We.A)({},e,{onClick:t=>{_&&_(t),null!=e&&e.onClick&&e.onClick(t)}})),className:(0,Ve.A)(null==q?void 0:q.className,null==d?void 0:d.className,null==W?void 0:W.backdrop),ownerState:M});return E||C||B&&!O?(0,Je.jsx)(Wv,{ref:R,container:m,disablePortal:D,children:(0,Je.jsxs)(V,(0,We.A)({},K,{children:[!S&&c?(0,Je.jsx)(H,(0,We.A)({},$)):null,(0,Je.jsx)(Bv,{disableEnforceFocus:x,disableAutoFocus:b,disableRestoreFocus:k,isEnabled:N,open:C,children:a.cloneElement(f,U)})]}))}):null}),uy=ly;function cy(e){return(0,ft.Ay)("MuiPopover",e)}(0,rt.A)("MuiPopover",["root","paper"]);const dy=["onEntering"],py=["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","className","container","elevation","marginThreshold","open","PaperProps","slots","slotProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps","disableScrollLock"],hy=["slotProps"];function fy(e,t){let n=0;return"number"===typeof t?n=t:"center"===t?n=e.height/2:"bottom"===t&&(n=e.height),n}function my(e,t){let n=0;return"number"===typeof t?n=t:"center"===t?n=e.width/2:"right"===t&&(n=e.width),n}function gy(e){return[e.horizontal,e.vertical].map(e=>"number"===typeof e?"".concat(e,"px"):e).join(" ")}function vy(e){return"function"===typeof e?e():e}const yy=(0,ht.Ay)(uy,{name:"MuiPopover",slot:"Root",overridesResolver:(e,t)=>t.root})({}),by=(0,ht.Ay)(qa,{name:"MuiPopover",slot:"Paper",overridesResolver:(e,t)=>t.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),xy=a.forwardRef(function(e,t){var n,r,o;const i=(0,pt.b)({props:e,name:"MuiPopover"}),{action:s,anchorEl:l,anchorOrigin:u={vertical:"top",horizontal:"left"},anchorPosition:c,anchorReference:d="anchorEl",children:p,className:h,container:f,elevation:m=8,marginThreshold:g=16,open:v,PaperProps:y={},slots:b,slotProps:x,transformOrigin:A={vertical:"top",horizontal:"left"},TransitionComponent:D=Lv,transitionDuration:k="auto",TransitionProps:{onEntering:w}={},disableScrollLock:S=!1}=i,E=(0,Ue.A)(i.TransitionProps,dy),_=(0,Ue.A)(i,py),C=null!=(n=null==x?void 0:x.paper)?n:y,F=a.useRef(),T=(0,Ya.A)(F,C.ref),j=(0,We.A)({},i,{anchorOrigin:u,anchorReference:d,elevation:m,marginThreshold:g,externalPaperSlotProps:C,transformOrigin:A,TransitionComponent:D,transitionDuration:k,TransitionProps:E}),z=(e=>{const{classes:t}=e;return(0,ut.A)({root:["root"],paper:["paper"]},cy,t)})(j),I=a.useCallback(()=>{if("anchorPosition"===d)return c;const e=vy(l),t=(e&&1===e.nodeType?e:(0,$g.A)(F.current).body).getBoundingClientRect();return{top:t.top+fy(t,u.vertical),left:t.left+my(t,u.horizontal)}},[l,u.horizontal,u.vertical,c,d]),L=a.useCallback(e=>({vertical:fy(e,A.vertical),horizontal:my(e,A.horizontal)}),[A.horizontal,A.vertical]),P=a.useCallback(e=>{const t={width:e.offsetWidth,height:e.offsetHeight},n=L(t);if("none"===d)return{top:null,left:null,transformOrigin:gy(n)};const r=I();let o=r.top-n.vertical,a=r.left-n.horizontal;const i=o+t.height,s=a+t.width,u=(0,gv.A)(vy(l)),c=u.innerHeight-g,p=u.innerWidth-g;if(null!==g&&oc){const e=i-c;o-=e,n.vertical+=e}if(null!==g&&ap){const e=s-p;a-=e,n.horizontal+=e}return{top:"".concat(Math.round(o),"px"),left:"".concat(Math.round(a),"px"),transformOrigin:gy(n)}},[l,d,I,L,g]),[R,N]=a.useState(v),O=a.useCallback(()=>{const e=F.current;if(!e)return;const t=P(e);null!==t.top&&(e.style.top=t.top),null!==t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,N(!0)},[P]);a.useEffect(()=>(S&&window.addEventListener("scroll",O),()=>window.removeEventListener("scroll",O)),[l,S,O]);a.useEffect(()=>{v&&O()}),a.useImperativeHandle(s,()=>v?{updatePosition:()=>{O()}}:null,[v,O]),a.useEffect(()=>{if(!v)return;const e=(0,mv.A)(()=>{O()}),t=(0,gv.A)(l);return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}},[l,v,O]);let B=k;"auto"!==k||D.muiSupportAuto||(B=void 0);const M=f||(l?(0,$g.A)(vy(l)).body:void 0),W=null!=(r=null==b?void 0:b.root)?r:yy,U=null!=(o=null==b?void 0:b.paper)?o:by,V=ev({elementType:U,externalSlotProps:(0,We.A)({},C,{style:R?C.style:(0,We.A)({},C.style,{opacity:0})}),additionalProps:{elevation:m,ref:T},ownerState:j,className:(0,Ve.A)(z.paper,null==C?void 0:C.className)}),H=ev({elementType:W,externalSlotProps:(null==x?void 0:x.root)||{},externalForwardedProps:_,additionalProps:{ref:t,slotProps:{backdrop:{invisible:!0}},container:M,open:v},ownerState:j,className:(0,Ve.A)(z.root,h)}),{slotProps:G}=H,q=(0,Ue.A)(H,hy);return(0,Je.jsx)(W,(0,We.A)({},q,!za(W)&&{slotProps:G,disableScrollLock:S},{children:(0,Je.jsx)(D,(0,We.A)({appear:!0,in:v,onEntering:(e,t)=>{w&&w(e,t),O()},onExited:()=>{N(!1)},timeout:B},E,{children:(0,Je.jsx)(U,(0,We.A)({},V,{children:p}))}))}))}),Ay=xy;function Dy(e){return(0,ft.Ay)("MuiMenu",e)}(0,rt.A)("MuiMenu",["root","paper","list"]);const ky=["onEntering"],wy=["autoFocus","children","className","disableAutoFocusItem","MenuListProps","onClose","open","PaperProps","PopoverClasses","transitionDuration","TransitionProps","variant","slots","slotProps"],Sy={vertical:"top",horizontal:"right"},Ey={vertical:"top",horizontal:"left"},_y=(0,ht.Ay)(Ay,{shouldForwardProp:e=>(0,Qm.A)(e)||"classes"===e,name:"MuiMenu",slot:"Root",overridesResolver:(e,t)=>t.root})({}),Cy=(0,ht.Ay)(by,{name:"MuiMenu",slot:"Paper",overridesResolver:(e,t)=>t.paper})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),Fy=(0,ht.Ay)(fv,{name:"MuiMenu",slot:"List",overridesResolver:(e,t)=>t.list})({outline:0}),Ty=a.forwardRef(function(e,t){var n,r;const o=(0,pt.b)({props:e,name:"MuiMenu"}),{autoFocus:i=!0,children:s,className:l,disableAutoFocusItem:u=!1,MenuListProps:c={},onClose:d,open:p,PaperProps:h={},PopoverClasses:f,transitionDuration:m="auto",TransitionProps:{onEntering:g}={},variant:v="selectedMenu",slots:y={},slotProps:b={}}=o,x=(0,Ue.A)(o.TransitionProps,ky),A=(0,Ue.A)(o,wy),D=Qg(),k=(0,We.A)({},o,{autoFocus:i,disableAutoFocusItem:u,MenuListProps:c,onEntering:g,PaperProps:h,transitionDuration:m,TransitionProps:x,variant:v}),w=(e=>{const{classes:t}=e;return(0,ut.A)({root:["root"],paper:["paper"],list:["list"]},Dy,t)})(k),S=i&&!u&&p,E=a.useRef(null);let _=-1;a.Children.map(s,(e,t)=>{a.isValidElement(e)&&(e.props.disabled||("selectedMenu"===v&&e.props.selected||-1===_)&&(_=t))});const C=null!=(n=y.paper)?n:Cy,F=null!=(r=b.paper)?r:h,T=ev({elementType:y.root,externalSlotProps:b.root,ownerState:k,className:[w.root,l]}),j=ev({elementType:C,externalSlotProps:F,ownerState:k,className:w.paper});return(0,Je.jsx)(_y,(0,We.A)({onClose:d,anchorOrigin:{vertical:"bottom",horizontal:D?"right":"left"},transformOrigin:D?Sy:Ey,slots:{paper:C,root:y.root},slotProps:{root:T,paper:j},open:p,ref:t,transitionDuration:m,TransitionProps:(0,We.A)({onEntering:(e,t)=>{E.current&&E.current.adjustStyleForScrollbar(e,{direction:D?"rtl":"ltr"}),g&&g(e,t)}},x),ownerState:k},A,{classes:f,children:(0,Je.jsx)(Fy,(0,We.A)({onKeyDown:e=>{"Tab"===e.key&&(e.preventDefault(),d&&d(e,"tabKeyDown"))},actions:E,autoFocus:i&&(-1===_||u),autoFocusItem:S,variant:v},c,{className:(0,Ve.A)(w.list,c.className),children:s}))}))}),jy=Ty;function zy(e){return(0,ft.Ay)("MuiNativeSelect",e)}const Iy=(0,rt.A)("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),Ly=["className","disabled","error","IconComponent","inputRef","variant"],Py=e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":(0,We.A)({},n.vars?{backgroundColor:"rgba(".concat(n.vars.palette.common.onBackgroundChannel," / 0.05)")}:{backgroundColor:"light"===n.palette.mode?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)"},{borderRadius:0}),"&::-ms-expand":{display:"none"},["&.".concat(Iy.disabled)]:{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:(n.vars||n).palette.background.paper},"&&&":{paddingRight:24,minWidth:16}},"filled"===t.variant&&{"&&&":{paddingRight:32}},"outlined"===t.variant&&{borderRadius:(n.vars||n).shape.borderRadius,"&:focus":{borderRadius:(n.vars||n).shape.borderRadius},"&&&":{paddingRight:32}})},Ry=(0,ht.Ay)("select",{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:Qm.A,overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.select,t[n.variant],n.error&&t.error,{["&.".concat(Iy.multiple)]:t.multiple}]}})(Py),Ny=e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(n.vars||n).palette.action.active,["&.".concat(Iy.disabled)]:{color:(n.vars||n).palette.action.disabled}},t.open&&{transform:"rotate(180deg)"},"filled"===t.variant&&{right:7},"outlined"===t.variant&&{right:7})},Oy=(0,ht.Ay)("svg",{name:"MuiNativeSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.icon,n.variant&&t["icon".concat((0,dt.A)(n.variant))],n.open&&t.iconOpen]}})(Ny),By=a.forwardRef(function(e,t){const{className:n,disabled:r,error:o,IconComponent:i,inputRef:s,variant:l="standard"}=e,u=(0,Ue.A)(e,Ly),c=(0,We.A)({},e,{disabled:r,variant:l,error:o}),d=(e=>{const{classes:t,variant:n,disabled:r,multiple:o,open:a,error:i}=e,s={select:["select",n,r&&"disabled",o&&"multiple",i&&"error"],icon:["icon","icon".concat((0,dt.A)(n)),a&&"iconOpen",r&&"disabled"]};return(0,ut.A)(s,zy,t)})(c);return(0,Je.jsxs)(a.Fragment,{children:[(0,Je.jsx)(Ry,(0,We.A)({ownerState:c,className:(0,Ve.A)(d.select,n),disabled:r,ref:s||t},u)),e.multiple?null:(0,Je.jsx)(Oy,{as:i,ownerState:c,className:d.icon})]})});var My=n(6920),Wy=n(2156);function Uy(e){return(0,ft.Ay)("MuiSelect",e)}const Vy=(0,rt.A)("MuiSelect",["root","select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]);var Hy;const Gy=["aria-describedby","aria-label","autoFocus","autoWidth","children","className","defaultOpen","defaultValue","disabled","displayEmpty","error","IconComponent","inputRef","labelId","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","open","readOnly","renderValue","SelectDisplayProps","tabIndex","type","value","variant"],qy=(0,ht.Ay)("div",{name:"MuiSelect",slot:"Select",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["&.".concat(Vy.select)]:t.select},{["&.".concat(Vy.select)]:t[n.variant]},{["&.".concat(Vy.error)]:t.error},{["&.".concat(Vy.multiple)]:t.multiple}]}})(Py,{["&.".concat(Vy.select)]:{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}}),Ky=(0,ht.Ay)("svg",{name:"MuiSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.icon,n.variant&&t["icon".concat((0,dt.A)(n.variant))],n.open&&t.iconOpen]}})(Ny),$y=(0,ht.Ay)("input",{shouldForwardProp:e=>(0,My.A)(e)&&"classes"!==e,name:"MuiSelect",slot:"NativeInput",overridesResolver:(e,t)=>t.nativeInput})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"});function Yy(e,t){return"object"===typeof t&&null!==t?e===t:String(e)===String(t)}function Xy(e){return null==e||"string"===typeof e&&!e.trim()}const Qy=a.forwardRef(function(e,t){var n;const{"aria-describedby":r,"aria-label":o,autoFocus:i,autoWidth:s,children:l,className:u,defaultOpen:c,defaultValue:d,disabled:p,displayEmpty:h,error:f=!1,IconComponent:m,inputRef:g,labelId:v,MenuProps:y={},multiple:b,name:x,onBlur:A,onChange:D,onClose:k,onFocus:w,onOpen:S,open:E,readOnly:_,renderValue:C,SelectDisplayProps:F={},tabIndex:T,value:j,variant:z="standard"}=e,I=(0,Ue.A)(e,Gy),[L,P]=(0,Wy.A)({controlled:j,default:d,name:"Select"}),[R,N]=(0,Wy.A)({controlled:E,default:c,name:"Select"}),O=a.useRef(null),B=a.useRef(null),[M,W]=a.useState(null),{current:U}=a.useRef(null!=E),[V,H]=a.useState(),G=(0,Ya.A)(t,g),q=a.useCallback(e=>{B.current=e,e&&W(e)},[]),K=null==M?void 0:M.parentNode;a.useImperativeHandle(G,()=>({focus:()=>{B.current.focus()},node:O.current,value:L}),[L]),a.useEffect(()=>{c&&R&&M&&!U&&(H(s?null:K.clientWidth),B.current.focus())},[M,s]),a.useEffect(()=>{i&&B.current.focus()},[i]),a.useEffect(()=>{if(!v)return;const e=(0,$g.A)(B.current).getElementById(v);if(e){const t=()=>{getSelection().isCollapsed&&B.current.focus()};return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}},[v]);const $=(e,t)=>{e?S&&S(t):k&&k(t),U||(H(s?null:K.clientWidth),N(e))},Y=a.Children.toArray(l),X=e=>t=>{let n;if(t.currentTarget.hasAttribute("tabindex")){if(b){n=Array.isArray(L)?L.slice():[];const t=L.indexOf(e.props.value);-1===t?n.push(e.props.value):n.splice(t,1)}else n=e.props.value;if(e.props.onClick&&e.props.onClick(t),L!==n&&(P(n),D)){const r=t.nativeEvent||t,o=new r.constructor(r.type,r);Object.defineProperty(o,"target",{writable:!0,value:{value:n,name:x}}),D(o,e)}b||$(!1,t)}},Q=null!==M&&R;let J,Z;delete I["aria-invalid"];const ee=[];let te=!1,ne=!1;(Mm({value:L})||h)&&(C?J=C(L):te=!0);const re=Y.map(e=>{if(!a.isValidElement(e))return null;let t;if(b){if(!Array.isArray(L))throw new Error((0,bm.A)(2));t=L.some(t=>Yy(t,e.props.value)),t&&te&&ee.push(e.props.children)}else t=Yy(L,e.props.value),t&&te&&(Z=e.props.children);return t&&(ne=!0),a.cloneElement(e,{"aria-selected":t?"true":"false",onClick:X(e),onKeyUp:t=>{" "===t.key&&t.preventDefault(),e.props.onKeyUp&&e.props.onKeyUp(t)},role:"option",selected:t,value:void 0,"data-value":e.props.value})});te&&(J=b?0===ee.length?null:ee.reduce((e,t,n)=>(e.push(t),n{const{classes:t,variant:n,disabled:r,multiple:o,open:a,error:i}=e,s={select:["select",n,r&&"disabled",o&&"multiple",i&&"error"],icon:["icon","icon".concat((0,dt.A)(n)),a&&"iconOpen",r&&"disabled"],nativeInput:["nativeInput"]};return(0,ut.A)(s,Uy,t)})(se),ue=(0,We.A)({},y.PaperProps,null==(n=y.slotProps)?void 0:n.paper),ce=(0,ym.A)();return(0,Je.jsxs)(a.Fragment,{children:[(0,Je.jsx)(qy,(0,We.A)({ref:q,tabIndex:oe,role:"combobox","aria-controls":ce,"aria-disabled":p?"true":void 0,"aria-expanded":Q?"true":"false","aria-haspopup":"listbox","aria-label":o,"aria-labelledby":[v,ie].filter(Boolean).join(" ")||void 0,"aria-describedby":r,onKeyDown:e=>{if(!_){-1!==[" ","ArrowUp","ArrowDown","Enter"].indexOf(e.key)&&(e.preventDefault(),$(!0,e))}},onMouseDown:p||_?null:e=>{0===e.button&&(e.preventDefault(),B.current.focus(),$(!0,e))},onBlur:e=>{!Q&&A&&(Object.defineProperty(e,"target",{writable:!0,value:{value:L,name:x}}),A(e))},onFocus:w},F,{ownerState:se,className:(0,Ve.A)(F.className,le.select,u),id:ie,children:Xy(J)?Hy||(Hy=(0,Je.jsx)("span",{className:"notranslate",children:"\u200b"})):J})),(0,Je.jsx)($y,(0,We.A)({"aria-invalid":f,value:Array.isArray(L)?L.join(","):L,name:x,ref:O,"aria-hidden":!0,onChange:e=>{const t=Y.find(t=>t.props.value===e.target.value);void 0!==t&&(P(t.props.value),D&&D(e,t))},tabIndex:-1,disabled:p,className:le.nativeInput,autoFocus:i,ownerState:se},I)),(0,Je.jsx)(Ky,{as:m,className:le.icon,ownerState:se}),(0,Je.jsx)(jy,(0,We.A)({id:"menu-".concat(x||""),anchorEl:K,open:Q,onClose:e=>{$(!1,e)},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"}},y,{MenuListProps:(0,We.A)({"aria-labelledby":v,role:"listbox","aria-multiselectable":b?"true":void 0,disableListWrap:!0,id:ce},y.MenuListProps),slotProps:(0,We.A)({},y.slotProps,{paper:(0,We.A)({},ue,{style:(0,We.A)({minWidth:ae},null!=ue?ue.style:null)})}),children:re}))]})}),Jy=Qy,Zy=(0,Ni.A)((0,Je.jsx)("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown"),eb=["autoWidth","children","classes","className","defaultOpen","displayEmpty","IconComponent","id","input","inputProps","label","labelId","MenuProps","multiple","native","onClose","onOpen","open","renderValue","SelectDisplayProps","variant"],tb=["root"],nb={name:"MuiSelect",overridesResolver:(e,t)=>t.root,shouldForwardProp:e=>(0,Qm.A)(e)&&"variant"!==e,slot:"Root"},rb=(0,ht.Ay)(og,nb)(""),ob=(0,ht.Ay)(kg,nb)(""),ab=(0,ht.Ay)(dg,nb)(""),ib=a.forwardRef(function(e,t){const n=(0,pt.b)({name:"MuiSelect",props:e}),{autoWidth:r=!1,children:o,classes:i={},className:s,defaultOpen:l=!1,displayEmpty:u=!1,IconComponent:c=Zy,id:d,input:p,inputProps:h,label:f,labelId:m,MenuProps:g,multiple:v=!1,native:y=!1,onClose:b,onOpen:x,open:A,renderValue:D,SelectDisplayProps:k,variant:w="outlined"}=n,S=(0,Ue.A)(n,eb),E=y?By:Jy,_=Tm({props:n,muiFormControl:zm(),states:["variant","error"]}),C=_.variant||w,F=(0,We.A)({},n,{variant:C,classes:i}),T=(e=>{const{classes:t}=e;return t})(F),j=(0,Ue.A)(T,tb),z=p||{standard:(0,Je.jsx)(rb,{ownerState:F}),outlined:(0,Je.jsx)(ob,{label:f,ownerState:F}),filled:(0,Je.jsx)(ab,{ownerState:F})}[C],I=(0,Ya.A)(t,Kg(z));return(0,Je.jsx)(a.Fragment,{children:a.cloneElement(z,(0,We.A)({inputComponent:E,inputProps:(0,We.A)({children:o,error:_.error,IconComponent:c,variant:C,type:void 0,multiple:v},y?{id:d}:{autoWidth:r,defaultOpen:l,displayEmpty:u,labelId:m,MenuProps:g,onClose:b,onOpen:x,open:A,renderValue:D,SelectDisplayProps:(0,We.A)({id:d},k)},h,{classes:h?(0,qf.A)(j,h.classes):j},p?p.props.inputProps:{})},(v&&y||u)&&"outlined"===C?{notched:!0}:{},{ref:I,className:(0,Ve.A)(z.props.className,s,T.root)},!p&&{variant:C},S))})});ib.muiName="Select";const sb=ib;function lb(e){return(0,ft.Ay)("MuiTextField",e)}(0,rt.A)("MuiTextField",["root"]);const ub=["autoComplete","autoFocus","children","className","color","defaultValue","disabled","error","FormHelperTextProps","fullWidth","helperText","id","InputLabelProps","inputProps","InputProps","inputRef","label","maxRows","minRows","multiline","name","onBlur","onChange","onFocus","placeholder","required","rows","select","SelectProps","type","value","variant"],cb={standard:og,filled:dg,outlined:kg},db=(0,ht.Ay)(Mg,{name:"MuiTextField",slot:"Root",overridesResolver:(e,t)=>t.root})({}),pb=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiTextField"}),{autoComplete:r,autoFocus:o=!1,children:a,className:i,color:s="primary",defaultValue:l,disabled:u=!1,error:c=!1,FormHelperTextProps:d,fullWidth:p=!1,helperText:h,id:f,InputLabelProps:m,inputProps:g,InputProps:v,inputRef:y,label:b,maxRows:x,minRows:A,multiline:D=!1,name:k,onBlur:w,onChange:S,onFocus:E,placeholder:_,required:C=!1,rows:F,select:T=!1,SelectProps:j,type:z,value:I,variant:L="outlined"}=n,P=(0,Ue.A)(n,ub),R=(0,We.A)({},n,{autoFocus:o,color:s,disabled:u,error:c,fullWidth:p,multiline:D,required:C,select:T,variant:L}),N=(e=>{const{classes:t}=e;return(0,ut.A)({root:["root"]},lb,t)})(R);const O={};"outlined"===L&&(m&&"undefined"!==typeof m.shrink&&(O.notched=m.shrink),O.label=b),T&&(j&&j.native||(O.id=void 0),O["aria-describedby"]=void 0);const B=(0,ym.A)(f),M=h&&B?"".concat(B,"-helper-text"):void 0,W=b&&B?"".concat(B,"-label"):void 0,U=cb[L],V=(0,Je.jsx)(U,(0,We.A)({"aria-describedby":M,autoComplete:r,autoFocus:o,defaultValue:l,fullWidth:p,multiline:D,name:k,rows:F,maxRows:x,minRows:A,type:z,value:I,id:B,inputRef:y,onBlur:w,onChange:S,onFocus:E,placeholder:_,inputProps:g},O,v));return(0,Je.jsxs)(db,(0,We.A)({className:(0,Ve.A)(N.root,i),disabled:u,error:c,fullWidth:p,ref:t,required:C,color:s,variant:L,ownerState:R},P,{children:[null!=b&&""!==b&&(0,Je.jsx)(Lg,(0,We.A)({htmlFor:B,id:W},m,{children:b})),T?(0,Je.jsx)(sb,(0,We.A)({"aria-describedby":M,id:B,labelId:W,value:I,input:V},j,{children:a})):V,h&&(0,Je.jsx)(qg,(0,We.A)({id:M},d,{children:h}))]}))}),hb=pb,fb=["InputProps"];function mb(e){let{InputProps:t}=e,n=(0,Is.A)(e,fb);return(0,Je.jsx)(hb,(0,It.A)((0,It.A)({multiline:!0},n),{},{InputProps:(0,It.A)((0,It.A)({},t),{},{sx:(0,It.A)({fontFamily:'ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace',fontSize:"0.875rem"},(null===t||void 0===t?void 0:t.sx)||{})})}))}function gb(e){return(0,ft.Ay)("MuiButton",e)}const vb=(0,rt.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","colorPrimary","colorSecondary","colorSuccess","colorError","colorInfo","colorWarning","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","icon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);const yb=a.createContext({});const bb=a.createContext(void 0),xb=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],Ab=e=>(0,We.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),Db=(0,ht.Ay)(Ti,{shouldForwardProp:e=>(0,Qm.A)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t["".concat(n.variant).concat((0,dt.A)(n.color))],t["size".concat((0,dt.A)(n.size))],t["".concat(n.variant,"Size").concat((0,dt.A)(n.size))],"inherit"===n.color&&t.colorInherit,n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth]}})(e=>{let{theme:t,ownerState:n}=e;var r,o;const a="light"===t.palette.mode?t.palette.grey[300]:t.palette.grey[800],i="light"===t.palette.mode?t.palette.grey.A100:t.palette.grey[700];return(0,We.A)({},t.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(t.vars||t).shape.borderRadius,transition:t.transitions.create(["background-color","box-shadow","border-color","color"],{duration:t.transitions.duration.short}),"&:hover":(0,We.A)({textDecoration:"none",backgroundColor:t.vars?"rgba(".concat(t.vars.palette.text.primaryChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Ta.X4)(t.palette.text.primary,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===n.variant&&"inherit"!==n.color&&{backgroundColor:t.vars?"rgba(".concat(t.vars.palette[n.color].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Ta.X4)(t.palette[n.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===n.variant&&"inherit"!==n.color&&{border:"1px solid ".concat((t.vars||t).palette[n.color].main),backgroundColor:t.vars?"rgba(".concat(t.vars.palette[n.color].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Ta.X4)(t.palette[n.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===n.variant&&{backgroundColor:t.vars?t.vars.palette.Button.inheritContainedHoverBg:i,boxShadow:(t.vars||t).shadows[4],"@media (hover: none)":{boxShadow:(t.vars||t).shadows[2],backgroundColor:(t.vars||t).palette.grey[300]}},"contained"===n.variant&&"inherit"!==n.color&&{backgroundColor:(t.vars||t).palette[n.color].dark,"@media (hover: none)":{backgroundColor:(t.vars||t).palette[n.color].main}}),"&:active":(0,We.A)({},"contained"===n.variant&&{boxShadow:(t.vars||t).shadows[8]}),["&.".concat(vb.focusVisible)]:(0,We.A)({},"contained"===n.variant&&{boxShadow:(t.vars||t).shadows[6]}),["&.".concat(vb.disabled)]:(0,We.A)({color:(t.vars||t).palette.action.disabled},"outlined"===n.variant&&{border:"1px solid ".concat((t.vars||t).palette.action.disabledBackground)},"contained"===n.variant&&{color:(t.vars||t).palette.action.disabled,boxShadow:(t.vars||t).shadows[0],backgroundColor:(t.vars||t).palette.action.disabledBackground})},"text"===n.variant&&{padding:"6px 8px"},"text"===n.variant&&"inherit"!==n.color&&{color:(t.vars||t).palette[n.color].main},"outlined"===n.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===n.variant&&"inherit"!==n.color&&{color:(t.vars||t).palette[n.color].main,border:t.vars?"1px solid rgba(".concat(t.vars.palette[n.color].mainChannel," / 0.5)"):"1px solid ".concat((0,Ta.X4)(t.palette[n.color].main,.5))},"contained"===n.variant&&{color:t.vars?t.vars.palette.text.primary:null==(r=(o=t.palette).getContrastText)?void 0:r.call(o,t.palette.grey[300]),backgroundColor:t.vars?t.vars.palette.Button.inheritContainedBg:a,boxShadow:(t.vars||t).shadows[2]},"contained"===n.variant&&"inherit"!==n.color&&{color:(t.vars||t).palette[n.color].contrastText,backgroundColor:(t.vars||t).palette[n.color].main},"inherit"===n.color&&{color:"inherit",borderColor:"currentColor"},"small"===n.size&&"text"===n.variant&&{padding:"4px 5px",fontSize:t.typography.pxToRem(13)},"large"===n.size&&"text"===n.variant&&{padding:"8px 11px",fontSize:t.typography.pxToRem(15)},"small"===n.size&&"outlined"===n.variant&&{padding:"3px 9px",fontSize:t.typography.pxToRem(13)},"large"===n.size&&"outlined"===n.variant&&{padding:"7px 21px",fontSize:t.typography.pxToRem(15)},"small"===n.size&&"contained"===n.variant&&{padding:"4px 10px",fontSize:t.typography.pxToRem(13)},"large"===n.size&&"contained"===n.variant&&{padding:"8px 22px",fontSize:t.typography.pxToRem(15)},n.fullWidth&&{width:"100%"})},e=>{let{ownerState:t}=e;return t.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},["&.".concat(vb.focusVisible)]:{boxShadow:"none"},"&:active":{boxShadow:"none"},["&.".concat(vb.disabled)]:{boxShadow:"none"}}}),kb=(0,ht.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.startIcon,t["iconSize".concat((0,dt.A)(n.size))]]}})(e=>{let{ownerState:t}=e;return(0,We.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===t.size&&{marginLeft:-2},Ab(t))}),wb=(0,ht.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.endIcon,t["iconSize".concat((0,dt.A)(n.size))]]}})(e=>{let{ownerState:t}=e;return(0,We.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===t.size&&{marginRight:-2},Ab(t))}),Sb=a.forwardRef(function(e,t){const n=a.useContext(yb),r=a.useContext(bb),o=(0,am.A)(n,e),i=(0,pt.b)({props:o,name:"MuiButton"}),{children:s,color:l="primary",component:u="button",className:c,disabled:d=!1,disableElevation:p=!1,disableFocusRipple:h=!1,endIcon:f,focusVisibleClassName:m,fullWidth:g=!1,size:v="medium",startIcon:y,type:b,variant:x="text"}=i,A=(0,Ue.A)(i,xb),D=(0,We.A)({},i,{color:l,component:u,disabled:d,disableElevation:p,disableFocusRipple:h,fullWidth:g,size:v,type:b,variant:x}),k=(e=>{const{color:t,disableElevation:n,fullWidth:r,size:o,variant:a,classes:i}=e,s={root:["root",a,"".concat(a).concat((0,dt.A)(t)),"size".concat((0,dt.A)(o)),"".concat(a,"Size").concat((0,dt.A)(o)),"color".concat((0,dt.A)(t)),n&&"disableElevation",r&&"fullWidth"],label:["label"],startIcon:["icon","startIcon","iconSize".concat((0,dt.A)(o))],endIcon:["icon","endIcon","iconSize".concat((0,dt.A)(o))]},l=(0,ut.A)(s,gb,i);return(0,We.A)({},i,l)})(D),w=y&&(0,Je.jsx)(kb,{className:k.startIcon,ownerState:D,children:y}),S=f&&(0,Je.jsx)(wb,{className:k.endIcon,ownerState:D,children:f}),E=r||"";return(0,Je.jsxs)(Db,(0,We.A)({ownerState:D,className:(0,Ve.A)(n.className,k.root,c,E),component:u,disabled:d,focusRipple:!h,focusVisibleClassName:(0,Ve.A)(k.focusVisible,m),ref:t,type:b},A,{classes:k,children:[w,s,S]}))}),Eb=Sb;var _b=n(7782);function Cb(e){return(0,ft.Ay)("MuiCollapse",e)}(0,rt.A)("MuiCollapse",["root","horizontal","vertical","entered","hidden","wrapper","wrapperInner"]);const Fb=["addEndListener","children","className","collapsedSize","component","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","orientation","style","timeout","TransitionComponent"],Tb=(0,ht.Ay)("div",{name:"MuiCollapse",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.orientation],"entered"===n.state&&t.entered,"exited"===n.state&&!n.in&&"0px"===n.collapsedSize&&t.hidden]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({height:0,overflow:"hidden",transition:t.transitions.create("height")},"horizontal"===n.orientation&&{height:"auto",width:0,transition:t.transitions.create("width")},"entered"===n.state&&(0,We.A)({height:"auto",overflow:"visible"},"horizontal"===n.orientation&&{width:"auto"}),"exited"===n.state&&!n.in&&"0px"===n.collapsedSize&&{visibility:"hidden"})}),jb=(0,ht.Ay)("div",{name:"MuiCollapse",slot:"Wrapper",overridesResolver:(e,t)=>t.wrapper})(e=>{let{ownerState:t}=e;return(0,We.A)({display:"flex",width:"100%"},"horizontal"===t.orientation&&{width:"auto",height:"100%"})}),zb=(0,ht.Ay)("div",{name:"MuiCollapse",slot:"WrapperInner",overridesResolver:(e,t)=>t.wrapperInner})(e=>{let{ownerState:t}=e;return(0,We.A)({width:"100%"},"horizontal"===t.orientation&&{width:"auto",height:"100%"})}),Ib=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiCollapse"}),{addEndListener:r,children:o,className:i,collapsedSize:s="0px",component:l,easing:u,in:c,onEnter:d,onEntered:p,onEntering:h,onExit:f,onExited:m,onExiting:g,orientation:v="vertical",style:y,timeout:b=_b.p0.standard,TransitionComponent:x=Sv}=n,A=(0,Ue.A)(n,Fb),D=(0,We.A)({},n,{orientation:v,collapsedSize:s}),k=(e=>{const{orientation:t,classes:n}=e,r={root:["root","".concat(t)],entered:["entered"],hidden:["hidden"],wrapper:["wrapper","".concat(t)],wrapperInner:["wrapperInner","".concat(t)]};return(0,ut.A)(r,Cb,n)})(D),w=Ev(),S=(0,si.A)(),E=a.useRef(null),_=a.useRef(),C="number"===typeof s?"".concat(s,"px"):s,F="horizontal"===v,T=F?"width":"height",j=a.useRef(null),z=(0,Ya.A)(t,j),I=e=>t=>{if(e){const n=j.current;void 0===t?e(n):e(n,t)}},L=()=>E.current?E.current[F?"clientWidth":"clientHeight"]:0,P=I((e,t)=>{E.current&&F&&(E.current.style.position="absolute"),e.style[T]=C,d&&d(e,t)}),R=I((e,t)=>{const n=L();E.current&&F&&(E.current.style.position="");const{duration:r,easing:o}=Cv({style:y,timeout:b,easing:u},{mode:"enter"});if("auto"===b){const t=w.transitions.getAutoHeightDuration(n);e.style.transitionDuration="".concat(t,"ms"),_.current=t}else e.style.transitionDuration="string"===typeof r?r:"".concat(r,"ms");e.style[T]="".concat(n,"px"),e.style.transitionTimingFunction=o,h&&h(e,t)}),N=I((e,t)=>{e.style[T]="auto",p&&p(e,t)}),O=I(e=>{e.style[T]="".concat(L(),"px"),f&&f(e)}),B=I(m),M=I(e=>{const t=L(),{duration:n,easing:r}=Cv({style:y,timeout:b,easing:u},{mode:"exit"});if("auto"===b){const n=w.transitions.getAutoHeightDuration(t);e.style.transitionDuration="".concat(n,"ms"),_.current=n}else e.style.transitionDuration="string"===typeof n?n:"".concat(n,"ms");e.style[T]=C,e.style.transitionTimingFunction=r,g&&g(e)});return(0,Je.jsx)(x,(0,We.A)({in:c,onEnter:P,onEntered:N,onEntering:R,onExit:O,onExited:B,onExiting:M,addEndListener:e=>{"auto"===b&&S.start(_.current||0,e),r&&r(j.current,e)},nodeRef:j,timeout:"auto"===b?null:b},A,{children:(e,t)=>(0,Je.jsx)(Tb,(0,We.A)({as:l,className:(0,Ve.A)(k.root,i,{entered:k.entered,exited:!c&&"0px"===C&&k.hidden}[e]),style:(0,We.A)({[F?"minWidth":"minHeight"]:C},y),ref:z},t,{ownerState:(0,We.A)({},D,{state:e}),children:(0,Je.jsx)(jb,{ownerState:(0,We.A)({},D,{state:e}),className:k.wrapper,ref:E,children:(0,Je.jsx)(zb,{ownerState:(0,We.A)({},D,{state:e}),className:k.wrapperInner,children:o})})}))}))});Ib.muiSupportAuto=!0;const Lb=Ib;const Pb=a.createContext({});function Rb(e){return(0,ft.Ay)("MuiAccordion",e)}const Nb=(0,rt.A)("MuiAccordion",["root","rounded","expanded","disabled","gutters","region"]),Ob=["children","className","defaultExpanded","disabled","disableGutters","expanded","onChange","square","slots","slotProps","TransitionComponent","TransitionProps"],Bb=(0,ht.Ay)(qa,{name:"MuiAccordion",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(Nb.region)]:t.region},t.root,!n.square&&t.rounded,!n.disableGutters&&t.gutters]}})(e=>{let{theme:t}=e;const n={duration:t.transitions.duration.shortest};return{position:"relative",transition:t.transitions.create(["margin"],n),overflowAnchor:"none","&::before":{position:"absolute",left:0,top:-1,right:0,height:1,content:'""',opacity:1,backgroundColor:(t.vars||t).palette.divider,transition:t.transitions.create(["opacity","background-color"],n)},"&:first-of-type":{"&::before":{display:"none"}},["&.".concat(Nb.expanded)]:{"&::before":{opacity:0},"&:first-of-type":{marginTop:0},"&:last-of-type":{marginBottom:0},"& + &":{"&::before":{display:"none"}}},["&.".concat(Nb.disabled)]:{backgroundColor:(t.vars||t).palette.action.disabledBackground}}},e=>{let{theme:t}=e;return{variants:[{props:e=>!e.square,style:{borderRadius:0,"&:first-of-type":{borderTopLeftRadius:(t.vars||t).shape.borderRadius,borderTopRightRadius:(t.vars||t).shape.borderRadius},"&:last-of-type":{borderBottomLeftRadius:(t.vars||t).shape.borderRadius,borderBottomRightRadius:(t.vars||t).shape.borderRadius,"@supports (-ms-ime-align: auto)":{borderBottomLeftRadius:0,borderBottomRightRadius:0}}}},{props:e=>!e.disableGutters,style:{["&.".concat(Nb.expanded)]:{margin:"16px 0"}}}]}}),Mb=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiAccordion"}),{children:r,className:o,defaultExpanded:i=!1,disabled:s=!1,disableGutters:l=!1,expanded:u,onChange:c,square:d=!1,slots:p={},slotProps:h={},TransitionComponent:f,TransitionProps:m}=n,g=(0,Ue.A)(n,Ob),[v,y]=(0,Wy.A)({controlled:u,default:i,name:"Accordion",state:"expanded"}),b=a.useCallback(e=>{y(!v),c&&c(e,!v)},[v,c,y]),[x,...A]=a.Children.toArray(r),D=a.useMemo(()=>({expanded:v,disabled:s,disableGutters:l,toggle:b}),[v,s,l,b]),k=(0,We.A)({},n,{square:d,disabled:s,disableGutters:l,expanded:v}),w=(e=>{const{classes:t,square:n,expanded:r,disabled:o,disableGutters:a}=e,i={root:["root",!n&&"rounded",r&&"expanded",o&&"disabled",!a&&"gutters"],region:["region"]};return(0,ut.A)(i,Rb,t)})(k),S=(0,We.A)({transition:f},p),E=(0,We.A)({transition:m},h),[_,C]=Wa("transition",{elementType:Lb,externalForwardedProps:{slots:S,slotProps:E},ownerState:k});return(0,Je.jsxs)(Bb,(0,We.A)({className:(0,Ve.A)(w.root,o),ref:t,ownerState:k,square:d},g,{children:[(0,Je.jsx)(Pb.Provider,{value:D,children:x}),(0,Je.jsx)(_,(0,We.A)({in:v,timeout:"auto"},C,{children:(0,Je.jsx)("div",{"aria-labelledby":x.props.id,id:x.props["aria-controls"],role:"region",className:w.region,children:A})}))]}))});function Wb(e){return(0,ft.Ay)("MuiAccordionSummary",e)}const Ub=(0,rt.A)("MuiAccordionSummary",["root","expanded","focusVisible","disabled","gutters","contentGutters","content","expandIconWrapper"]),Vb=["children","className","expandIcon","focusVisibleClassName","onClick"],Hb=(0,ht.Ay)(Ti,{name:"MuiAccordionSummary",slot:"Root",overridesResolver:(e,t)=>t.root})(e=>{let{theme:t}=e;const n={duration:t.transitions.duration.shortest};return{display:"flex",minHeight:48,padding:t.spacing(0,2),transition:t.transitions.create(["min-height","background-color"],n),["&.".concat(Ub.focusVisible)]:{backgroundColor:(t.vars||t).palette.action.focus},["&.".concat(Ub.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity},["&:hover:not(.".concat(Ub.disabled,")")]:{cursor:"pointer"},variants:[{props:e=>!e.disableGutters,style:{["&.".concat(Ub.expanded)]:{minHeight:64}}}]}}),Gb=(0,ht.Ay)("div",{name:"MuiAccordionSummary",slot:"Content",overridesResolver:(e,t)=>t.content})(e=>{let{theme:t}=e;return{display:"flex",flexGrow:1,margin:"12px 0",variants:[{props:e=>!e.disableGutters,style:{transition:t.transitions.create(["margin"],{duration:t.transitions.duration.shortest}),["&.".concat(Ub.expanded)]:{margin:"20px 0"}}}]}}),qb=(0,ht.Ay)("div",{name:"MuiAccordionSummary",slot:"ExpandIconWrapper",overridesResolver:(e,t)=>t.expandIconWrapper})(e=>{let{theme:t}=e;return{display:"flex",color:(t.vars||t).palette.action.active,transform:"rotate(0deg)",transition:t.transitions.create("transform",{duration:t.transitions.duration.shortest}),["&.".concat(Ub.expanded)]:{transform:"rotate(180deg)"}}}),Kb=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiAccordionSummary"}),{children:r,className:o,expandIcon:i,focusVisibleClassName:s,onClick:l}=n,u=(0,Ue.A)(n,Vb),{disabled:c=!1,disableGutters:d,expanded:p,toggle:h}=a.useContext(Pb),f=(0,We.A)({},n,{expanded:p,disabled:c,disableGutters:d}),m=(e=>{const{classes:t,expanded:n,disabled:r,disableGutters:o}=e,a={root:["root",n&&"expanded",r&&"disabled",!o&&"gutters"],focusVisible:["focusVisible"],content:["content",n&&"expanded",!o&&"contentGutters"],expandIconWrapper:["expandIconWrapper",n&&"expanded"]};return(0,ut.A)(a,Wb,t)})(f);return(0,Je.jsxs)(Hb,(0,We.A)({focusRipple:!1,disableRipple:!0,disabled:c,component:"div","aria-expanded":p,className:(0,Ve.A)(m.root,o),focusVisibleClassName:(0,Ve.A)(m.focusVisible,s),onClick:e=>{h&&h(e),l&&l(e)},ref:t,ownerState:f},u,{children:[(0,Je.jsx)(Gb,{className:m.content,ownerState:f,children:r}),i&&(0,Je.jsx)(qb,{className:m.expandIconWrapper,ownerState:f,children:i})]}))});function $b(e){return(0,ft.Ay)("MuiAccordionDetails",e)}(0,rt.A)("MuiAccordionDetails",["root"]);const Yb=["className"],Xb=(0,ht.Ay)("div",{name:"MuiAccordionDetails",slot:"Root",overridesResolver:(e,t)=>t.root})(e=>{let{theme:t}=e;return{padding:t.spacing(1,2,2)}}),Qb=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiAccordionDetails"}),{className:r}=n,o=(0,Ue.A)(n,Yb),a=n,i=(e=>{const{classes:t}=e;return(0,ut.A)({root:["root"]},$b,t)})(a);return(0,Je.jsx)(Xb,(0,We.A)({className:(0,Ve.A)(i.root,r),ref:t,ownerState:a},o))});var Jb=n(8580);const Zb=async e=>{const{dataCaches:t={}}=await(0,Ji.Xn)();t[e]=Date.now(),await(0,Ji.pK)({dataCaches:t})},ex=async e=>{const t=await(e=>(0,Es.Fd)(e))(e),n=nx(t).filter(e=>{let{pattern:t}=e;return!(0,_s.MF)(t,Qi.WL9)});return n.length>0&&await(0,Ji.Sn)(e,n),n},tx=async e=>{let t=await(0,Ji.Kl)(e);return t&&0!==t.length||(t=await ex(e),await Zb(e)),t||[]};const nx=e=>{if("string"===(0,_s.NW)(e)&&(e=JSON.parse(e)),"array"!==(0,_s.NW)(e))throw new Error("data error");const t=Qi.vH2.map(e=>e[0]),n=Qi.i8R.map(e=>e[0]),r=new Set;return e=e.filter(e=>"object"===(0,_s.NW)(e)).filter(e=>{let{pattern:t}=e;return"string"===(0,_s.NW)(t)&&!r.has(t.trim())&&(r.add(t.trim()),!0)}).map(e=>{let{pattern:r,enabled:o,selector:a,keepSelector:i,blockSelector:s,rootsSelector:l,ignoreSelector:u,terms:c,aiTerms:d,termsStyle:p,highlightStyle:h,textExtStyle:f,selectStyle:m,parentStyle:g,grandStyle:v,injectJs:y,injectCss:b,apiSlug:x,fromLang:A,toLang:D,textStyle:k,wrapOriginal:w,originalTextStyle:S,transOpen:E,transOnly:_,transOnlyRevert:C,transOnlyRevertDelay:F,transOrder:T,autoScan:j,hasRichText:z,hasShadowroot:I,scanAll:L,isPlainText:P,transTag:R,transTitle:N,transStartHook:O,transEndHook:B,splitParagraph:M,splitLength:W,highlightWords:U}=e;return{pattern:r.trim(),enabled:"boolean"!==(0,_s.NW)(o)||o,selector:"string"===(0,_s.NW)(a)?a:"",keepSelector:"string"===(0,_s.NW)(i)?i:"",blockSelector:"string"===(0,_s.NW)(s)?s:"",rootsSelector:"string"===(0,_s.NW)(l)?l:"",ignoreSelector:"string"===(0,_s.NW)(u)?u:"",terms:"string"===(0,_s.NW)(c)?c:"",aiTerms:"string"===(0,_s.NW)(d)?d:"",termsStyle:"string"===(0,_s.NW)(p)?p:"",highlightStyle:"string"===(0,_s.NW)(h)?h:"",textExtStyle:"string"===(0,_s.NW)(f)?f:"",selectStyle:"string"===(0,_s.NW)(m)?m:"",parentStyle:"string"===(0,_s.NW)(g)?g:"",grandStyle:"string"===(0,_s.NW)(v)?v:"",injectJs:"string"===(0,_s.NW)(y)?y:"",injectCss:"string"===(0,_s.NW)(b)?b:"",apiSlug:"string"===(0,_s.NW)(x)&&""!==x.trim()?x.trim():Qi.WL9,fromLang:(0,_s.dt)([Qi.WL9,...t],A),toLang:(0,_s.dt)([Qi.WL9,...n],D),textStyle:"string"===(0,_s.NW)(k)&&""!==k.trim()?k.trim():Qi.WL9,wrapOriginal:(0,_s.dt)([Qi.WL9,"true","false"],[Qi.WL9,"true","false"].includes(w)?w:r.trim()===Qi.WL9?Qi.lNu.wrapOriginal:Qi.WL9),originalTextStyle:"string"===(0,_s.NW)(S)&&""!==S.trim()?S.trim():r.trim()===Qi.WL9?Qi.lNu.originalTextStyle:Qi.WL9,transOpen:(0,_s.dt)([Qi.WL9,"true","false"],E),transOnly:(0,_s.dt)([Qi.WL9,"true","false"],_),transOnlyRevert:(0,_s.dt)([Qi.WL9,"true","false"],C),transOnlyRevertDelay:"string"!==(0,_s.NW)(F)||isNaN(parseFloat(F))?Qi.WL9:F,transOrder:(0,_s.dt)([Qi.WL9,"original-first","translation-first"],T),autoScan:(0,_s.dt)([Qi.WL9,"true","false"],j),hasRichText:(0,_s.dt)([Qi.WL9,"true","false"],z),hasShadowroot:(0,_s.dt)([Qi.WL9,"true","false"],I),scanAll:(0,_s.dt)([Qi.WL9,"true","false"],L),isPlainText:(0,_s.dt)([Qi.WL9,"true","false"],P),transTag:(0,_s.dt)([Qi.WL9,"span","font"],R),transTitle:(0,_s.dt)([Qi.WL9,"true","false"],N),transStartHook:"string"===(0,_s.NW)(O)?O:"",transEndHook:"string"===(0,_s.NW)(B)?B:"",splitParagraph:(0,_s.dt)([Qi.WL9,...Qi._E_],M),splitLength:Number.isInteger(W)?W:0,highlightWords:(0,_s.dt)([Qi.WL9,...Qi.p1w],U)}})};function rx(e){return(0,ft.Ay)("MuiListItemIcon",e)}const ox=(0,rt.A)("MuiListItemIcon",["root","alignItemsFlexStart"]);function ax(e){return(0,ft.Ay)("MuiListItemText",e)}const ix=(0,rt.A)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);function sx(e){return(0,ft.Ay)("MuiMenuItem",e)}const lx=(0,rt.A)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]),ux=["autoFocus","component","dense","divider","disableGutters","focusVisibleClassName","role","tabIndex","className"],cx=(0,ht.Ay)(Ti,{shouldForwardProp:e=>(0,Qm.A)(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,n.divider&&t.divider,!n.disableGutters&&t.gutters]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({},t.typography.body1,{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap"},!n.disableGutters&&{paddingLeft:16,paddingRight:16},n.divider&&{borderBottom:"1px solid ".concat((t.vars||t).palette.divider),backgroundClip:"padding-box"},{"&:hover":{textDecoration:"none",backgroundColor:(t.vars||t).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},["&.".concat(lx.selected)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity),["&.".concat(lx.focusVisible)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.focusOpacity,"))"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.focusOpacity)}},["&.".concat(lx.selected,":hover")]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.hoverOpacity,"))"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity)}},["&.".concat(lx.focusVisible)]:{backgroundColor:(t.vars||t).palette.action.focus},["&.".concat(lx.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity},["& + .".concat(_f.root)]:{marginTop:t.spacing(1),marginBottom:t.spacing(1)},["& + .".concat(_f.inset)]:{marginLeft:52},["& .".concat(ix.root)]:{marginTop:0,marginBottom:0},["& .".concat(ix.inset)]:{paddingLeft:36},["& .".concat(ox.root)]:{minWidth:36}},!n.dense&&{[t.breakpoints.up("sm")]:{minHeight:"auto"}},n.dense&&(0,We.A)({minHeight:32,paddingTop:4,paddingBottom:4},t.typography.body2,{["& .".concat(ox.root," svg")]:{fontSize:"1.25rem"}}))}),dx=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiMenuItem"}),{autoFocus:r=!1,component:o="li",dense:i=!1,divider:s=!1,disableGutters:l=!1,focusVisibleClassName:u,role:c="menuitem",tabIndex:d,className:p}=n,h=(0,Ue.A)(n,ux),f=a.useContext(tv),m=a.useMemo(()=>({dense:i||f.dense||!1,disableGutters:l}),[f.dense,i,l]),g=a.useRef(null);(0,Im.A)(()=>{r&&g.current&&g.current.focus()},[r]);const v=(0,We.A)({},n,{dense:m.dense,divider:s,disableGutters:l}),y=(e=>{const{disabled:t,dense:n,divider:r,disableGutters:o,selected:a,classes:i}=e,s={root:["root",n&&"dense",t&&"disabled",!o&&"gutters",r&&"divider",a&&"selected"]},l=(0,ut.A)(s,sx,i);return(0,We.A)({},i,l)})(n),b=(0,Ya.A)(g,t);let x;return n.disabled||(x=void 0!==d?d:-1),(0,Je.jsx)(tv.Provider,{value:m,children:(0,Je.jsx)(cx,(0,We.A)({ref:b,role:c,tabIndex:x,component:o,focusVisibleClassName:(0,Ve.A)(y.focusVisible,u),className:(0,Ve.A)(y.root,p)},h,{ownerState:v,classes:y}))})});const px=a.createContext();function hx(e){return(0,ft.Ay)("MuiGrid",e)}const fx=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12],mx=(0,rt.A)("MuiGrid",["root","container","item","zeroMinWidth",...[0,1,2,3,4,5,6,7,8,9,10].map(e=>"spacing-xs-".concat(e)),...["column-reverse","column","row-reverse","row"].map(e=>"direction-xs-".concat(e)),...["nowrap","wrap-reverse","wrap"].map(e=>"wrap-xs-".concat(e)),...fx.map(e=>"grid-xs-".concat(e)),...fx.map(e=>"grid-sm-".concat(e)),...fx.map(e=>"grid-md-".concat(e)),...fx.map(e=>"grid-lg-".concat(e)),...fx.map(e=>"grid-xl-".concat(e))]),gx=mx,vx=["className","columns","columnSpacing","component","container","direction","item","rowSpacing","spacing","wrap","zeroMinWidth"];function yx(e){const t=parseFloat(e);return"".concat(t).concat(String(e).replace(String(t),"")||"px")}function bx(e){let{breakpoints:t,values:n}=e,r="";Object.keys(n).forEach(e=>{""===r&&0!==n[e]&&(r=e)});const o=Object.keys(t).sort((e,n)=>t[e]-t[n]);return o.slice(0,o.indexOf(r))}const xx=(0,ht.Ay)("div",{name:"MuiGrid",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e,{container:r,direction:o,item:a,spacing:i,wrap:s,zeroMinWidth:l,breakpoints:u}=n;let c=[];r&&(c=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e||e<=0)return[];if("string"===typeof e&&!Number.isNaN(Number(e))||"number"===typeof e)return[n["spacing-xs-".concat(String(e))]];const r=[];return t.forEach(t=>{const o=e[t];Number(o)>0&&r.push(n["spacing-".concat(t,"-").concat(String(o))])}),r}(i,u,t));const d=[];return u.forEach(e=>{const r=n[e];r&&d.push(t["grid-".concat(e,"-").concat(String(r))])}),[t.root,r&&t.container,a&&t.item,l&&t.zeroMinWidth,...c,"row"!==o&&t["direction-xs-".concat(String(o))],"wrap"!==s&&t["wrap-xs-".concat(String(s))],...d]}})(e=>{let{ownerState:t}=e;return(0,We.A)({boxSizing:"border-box"},t.container&&{display:"flex",flexWrap:"wrap",width:"100%"},t.item&&{margin:0},t.zeroMinWidth&&{minWidth:0},"wrap"!==t.wrap&&{flexWrap:t.wrap})},function(e){let{theme:t,ownerState:n}=e;const r=(0,lm.kW)({values:n.direction,breakpoints:t.breakpoints.values});return(0,lm.NI)({theme:t},r,e=>{const t={flexDirection:e};return 0===e.indexOf("column")&&(t["& > .".concat(gx.item)]={maxWidth:"none"}),t})},function(e){let{theme:t,ownerState:n}=e;const{container:r,rowSpacing:o}=n;let a={};if(r&&0!==o){const e=(0,lm.kW)({values:o,breakpoints:t.breakpoints.values});let n;"object"===typeof e&&(n=bx({breakpoints:t.breakpoints.values,values:e})),a=(0,lm.NI)({theme:t},e,(e,r)=>{var o;const a=t.spacing(e);return"0px"!==a?{marginTop:"-".concat(yx(a)),["& > .".concat(gx.item)]:{paddingTop:yx(a)}}:null!=(o=n)&&o.includes(r)?{}:{marginTop:0,["& > .".concat(gx.item)]:{paddingTop:0}}})}return a},function(e){let{theme:t,ownerState:n}=e;const{container:r,columnSpacing:o}=n;let a={};if(r&&0!==o){const e=(0,lm.kW)({values:o,breakpoints:t.breakpoints.values});let n;"object"===typeof e&&(n=bx({breakpoints:t.breakpoints.values,values:e})),a=(0,lm.NI)({theme:t},e,(e,r)=>{var o;const a=t.spacing(e);return"0px"!==a?{width:"calc(100% + ".concat(yx(a),")"),marginLeft:"-".concat(yx(a)),["& > .".concat(gx.item)]:{paddingLeft:yx(a)}}:null!=(o=n)&&o.includes(r)?{}:{width:"100%",marginLeft:0,["& > .".concat(gx.item)]:{paddingLeft:0}}})}return a},function(e){let t,{theme:n,ownerState:r}=e;return n.breakpoints.keys.reduce((e,o)=>{let a={};if(r[o]&&(t=r[o]),!t)return e;if(!0===t)a={flexBasis:0,flexGrow:1,maxWidth:"100%"};else if("auto"===t)a={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"};else{const i=(0,lm.kW)({values:r.columns,breakpoints:n.breakpoints.values}),s="object"===typeof i?i[o]:i;if(void 0===s||null===s)return e;const l="".concat(Math.round(t/s*1e8)/1e6,"%");let u={};if(r.container&&r.item&&0!==r.columnSpacing){const e=n.spacing(r.columnSpacing);if("0px"!==e){const t="calc(".concat(l," + ").concat(yx(e),")");u={flexBasis:t,maxWidth:t}}}a=(0,We.A)({flexBasis:l,flexGrow:0,maxWidth:l},u)}return 0===n.breakpoints.values[o]?Object.assign(e,a):e[n.breakpoints.up(o)]=a,e},{})});const Ax=e=>{const{classes:t,container:n,direction:r,item:o,spacing:a,wrap:i,zeroMinWidth:s,breakpoints:l}=e;let u=[];n&&(u=function(e,t){if(!e||e<=0)return[];if("string"===typeof e&&!Number.isNaN(Number(e))||"number"===typeof e)return["spacing-xs-".concat(String(e))];const n=[];return t.forEach(t=>{const r=e[t];if(Number(r)>0){const e="spacing-".concat(t,"-").concat(String(r));n.push(e)}}),n}(a,l));const c=[];l.forEach(t=>{const n=e[t];n&&c.push("grid-".concat(t,"-").concat(String(n)))});const d={root:["root",n&&"container",o&&"item",s&&"zeroMinWidth",...u,"row"!==r&&"direction-xs-".concat(String(r)),"wrap"!==i&&"wrap-xs-".concat(String(i)),...c]};return(0,ut.A)(d,hx,t)},Dx=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiGrid"}),{breakpoints:r}=Ev(),o=(0,qe.A)(n),{className:i,columns:s,columnSpacing:l,component:u="div",container:c=!1,direction:d="row",item:p=!1,rowSpacing:h,spacing:f=0,wrap:m="wrap",zeroMinWidth:g=!1}=o,v=(0,Ue.A)(o,vx),y=h||f,b=l||f,x=a.useContext(px),A=c?s||12:x,D={},k=(0,We.A)({},v);r.keys.forEach(e=>{null!=v[e]&&(D[e]=v[e],delete k[e])});const w=(0,We.A)({},o,{columns:A,container:c,direction:d,item:p,rowSpacing:y,columnSpacing:b,wrap:m,zeroMinWidth:g,spacing:f},D,{breakpoints:r.keys}),S=Ax(w);return(0,Je.jsx)(px.Provider,{value:A,children:(0,Je.jsx)(xx,(0,We.A)({ownerState:w,className:(0,Ve.A)(S.root,i),as:u,ref:t},k))})});const kx=Dx;function wx(e){return(0,ft.Ay)("MuiFormControlLabel",e)}const Sx=(0,rt.A)("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]),Ex=["checked","className","componentsProps","control","disabled","disableTypography","inputRef","label","labelPlacement","name","onChange","required","slotProps","value"],_x=(0,ht.Ay)("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(Sx.label)]:t.label},t.root,t["labelPlacement".concat((0,dt.A)(n.labelPlacement))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16,["&.".concat(Sx.disabled)]:{cursor:"default"}},"start"===n.labelPlacement&&{flexDirection:"row-reverse",marginLeft:16,marginRight:-11},"top"===n.labelPlacement&&{flexDirection:"column-reverse",marginLeft:16},"bottom"===n.labelPlacement&&{flexDirection:"column",marginLeft:16},{["& .".concat(Sx.label)]:{["&.".concat(Sx.disabled)]:{color:(t.vars||t).palette.text.disabled}}})}),Cx=(0,ht.Ay)("span",{name:"MuiFormControlLabel",slot:"Asterisk",overridesResolver:(e,t)=>t.asterisk})(e=>{let{theme:t}=e;return{["&.".concat(Sx.error)]:{color:(t.vars||t).palette.error.main}}}),Fx=a.forwardRef(function(e,t){var n,r;const o=(0,pt.b)({props:e,name:"MuiFormControlLabel"}),{className:i,componentsProps:s={},control:l,disabled:u,disableTypography:c,label:d,labelPlacement:p="end",required:h,slotProps:f={}}=o,m=(0,Ue.A)(o,Ex),g=zm(),v=null!=(n=null!=u?u:l.props.disabled)?n:null==g?void 0:g.disabled,y=null!=h?h:l.props.required,b={disabled:v,required:y};["checked","name","onChange","value","inputRef"].forEach(e=>{"undefined"===typeof l.props[e]&&"undefined"!==typeof o[e]&&(b[e]=o[e])});const x=Tm({props:o,muiFormControl:g,states:["error"]}),A=(0,We.A)({},o,{disabled:v,labelPlacement:p,required:y,error:x.error}),D=(e=>{const{classes:t,disabled:n,labelPlacement:r,error:o,required:a}=e,i={root:["root",n&&"disabled","labelPlacement".concat((0,dt.A)(r)),o&&"error",a&&"required"],label:["label",n&&"disabled"],asterisk:["asterisk",o&&"error"]};return(0,ut.A)(i,wx,t)})(A),k=null!=(r=f.typography)?r:s.typography;let w=d;return null==w||w.type===gf||c||(w=(0,Je.jsx)(gf,(0,We.A)({component:"span"},k,{className:(0,Ve.A)(D.label,null==k?void 0:k.className),children:w}))),(0,Je.jsxs)(_x,(0,We.A)({className:(0,Ve.A)(D.root,i),ownerState:A,ref:t},m,{children:[a.cloneElement(l,b),y?(0,Je.jsxs)(vm,{display:"block",children:[w,(0,Je.jsxs)(Cx,{ownerState:A,"aria-hidden":!0,className:D.asterisk,children:["\u2009","*"]})]}):w]}))});function Tx(e){return(0,ft.Ay)("PrivateSwitchBase",e)}(0,rt.A)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);const jx=["autoFocus","checked","checkedIcon","className","defaultChecked","disabled","disableFocusRipple","edge","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"],zx=(0,ht.Ay)(Ti,{name:"MuiSwitchBase"})(e=>{let{ownerState:t}=e;return(0,We.A)({padding:9,borderRadius:"50%"},"start"===t.edge&&{marginLeft:"small"===t.size?-3:-12},"end"===t.edge&&{marginRight:"small"===t.size?-3:-12})}),Ix=(0,ht.Ay)("input",{name:"MuiSwitchBase",shouldForwardProp:Qm.A})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),Lx=a.forwardRef(function(e,t){const{autoFocus:n,checked:r,checkedIcon:o,className:a,defaultChecked:i,disabled:s,disableFocusRipple:l=!1,edge:u=!1,icon:c,id:d,inputProps:p,inputRef:h,name:f,onBlur:m,onChange:g,onFocus:v,readOnly:y,required:b=!1,tabIndex:x,type:A,value:D}=e,k=(0,Ue.A)(e,jx),[w,S]=(0,Wy.A)({controlled:r,default:Boolean(i),name:"SwitchBase",state:"checked"}),E=zm();let _=s;E&&"undefined"===typeof _&&(_=E.disabled);const C="checkbox"===A||"radio"===A,F=(0,We.A)({},e,{checked:w,disabled:_,disableFocusRipple:l,edge:u}),T=(e=>{const{classes:t,checked:n,disabled:r,edge:o}=e,a={root:["root",n&&"checked",r&&"disabled",o&&"edge".concat((0,dt.A)(o))],input:["input"]};return(0,ut.A)(a,Tx,t)})(F);return(0,Je.jsxs)(zx,(0,We.A)({component:"span",className:(0,Ve.A)(T.root,a),centerRipple:!0,focusRipple:!l,disabled:_,tabIndex:null,role:void 0,onFocus:e=>{v&&v(e),E&&E.onFocus&&E.onFocus(e)},onBlur:e=>{m&&m(e),E&&E.onBlur&&E.onBlur(e)},ownerState:F,ref:t},k,{children:[(0,Je.jsx)(Ix,(0,We.A)({autoFocus:n,checked:r,defaultChecked:i,className:T.input,disabled:_,id:C?d:void 0,name:f,onChange:e=>{if(e.nativeEvent.defaultPrevented)return;const t=e.target.checked;S(t),g&&g(e,t)},readOnly:y,ref:h,required:b,ownerState:F,tabIndex:x,type:A},"checkbox"===A&&void 0===D?{}:{value:D},p)),w?o:c]}))}),Px=Lx;function Rx(e){return(0,ft.Ay)("MuiSwitch",e)}const Nx=(0,rt.A)("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"]),Ox=["className","color","edge","size","sx"],Bx=(0,ht.Ay)("span",{name:"MuiSwitch",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.edge&&t["edge".concat((0,dt.A)(n.edge))],t["size".concat((0,dt.A)(n.size))]]}})({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"},variants:[{props:{edge:"start"},style:{marginLeft:-8}},{props:{edge:"end"},style:{marginRight:-8}},{props:{size:"small"},style:{width:40,height:24,padding:7,["& .".concat(Nx.thumb)]:{width:16,height:16},["& .".concat(Nx.switchBase)]:{padding:4,["&.".concat(Nx.checked)]:{transform:"translateX(16px)"}}}}]}),Mx=(0,ht.Ay)(Px,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.switchBase,{["& .".concat(Nx.input)]:t.input},"default"!==n.color&&t["color".concat((0,dt.A)(n.color))]]}})(e=>{let{theme:t}=e;return{position:"absolute",top:0,left:0,zIndex:1,color:t.vars?t.vars.palette.Switch.defaultColor:"".concat("light"===t.palette.mode?t.palette.common.white:t.palette.grey[300]),transition:t.transitions.create(["left","transform"],{duration:t.transitions.duration.shortest}),["&.".concat(Nx.checked)]:{transform:"translateX(20px)"},["&.".concat(Nx.disabled)]:{color:t.vars?t.vars.palette.Switch.defaultDisabledColor:"".concat("light"===t.palette.mode?t.palette.grey[100]:t.palette.grey[600])},["&.".concat(Nx.checked," + .").concat(Nx.track)]:{opacity:.5},["&.".concat(Nx.disabled," + .").concat(Nx.track)]:{opacity:t.vars?t.vars.opacity.switchTrackDisabled:"".concat("light"===t.palette.mode?.12:.2)},["& .".concat(Nx.input)]:{left:"-100%",width:"300%"}}},e=>{let{theme:t}=e;return{"&:hover":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.action.activeChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Ta.X4)(t.palette.action.active,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[...Object.entries(t.palette).filter(e=>{let[,t]=e;return t.main&&t.light}).map(e=>{let[n]=e;return{props:{color:n},style:{["&.".concat(Nx.checked)]:{color:(t.vars||t).palette[n].main,"&:hover":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette[n].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Ta.X4)(t.palette[n].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},["&.".concat(Nx.disabled)]:{color:t.vars?t.vars.palette.Switch["".concat(n,"DisabledColor")]:"".concat("light"===t.palette.mode?(0,Ta.a)(t.palette[n].main,.62):(0,Ta.e$)(t.palette[n].main,.55))}},["&.".concat(Nx.checked," + .").concat(Nx.track)]:{backgroundColor:(t.vars||t).palette[n].main}}}})]}}),Wx=(0,ht.Ay)("span",{name:"MuiSwitch",slot:"Track",overridesResolver:(e,t)=>t.track})(e=>{let{theme:t}=e;return{height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:t.transitions.create(["opacity","background-color"],{duration:t.transitions.duration.shortest}),backgroundColor:t.vars?t.vars.palette.common.onBackground:"".concat("light"===t.palette.mode?t.palette.common.black:t.palette.common.white),opacity:t.vars?t.vars.opacity.switchTrack:"".concat("light"===t.palette.mode?.38:.3)}}),Ux=(0,ht.Ay)("span",{name:"MuiSwitch",slot:"Thumb",overridesResolver:(e,t)=>t.thumb})(e=>{let{theme:t}=e;return{boxShadow:(t.vars||t).shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"}}),Vx=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiSwitch"}),{className:r,color:o="primary",edge:a=!1,size:i="medium",sx:s}=n,l=(0,Ue.A)(n,Ox),u=(0,We.A)({},n,{color:o,edge:a,size:i}),c=(e=>{const{classes:t,edge:n,size:r,color:o,checked:a,disabled:i}=e,s={root:["root",n&&"edge".concat((0,dt.A)(n)),"size".concat((0,dt.A)(r))],switchBase:["switchBase","color".concat((0,dt.A)(o)),a&&"checked",i&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},l=(0,ut.A)(s,Rx,t);return(0,We.A)({},t,l)})(u),d=(0,Je.jsx)(Ux,{className:c.thumb,ownerState:u});return(0,Je.jsxs)(Bx,{className:(0,Ve.A)(c.root,r),sx:s,ownerState:u,children:[(0,Je.jsx)(Mx,(0,We.A)({type:"checkbox",icon:d,checkedIcon:d,ref:t,ownerState:u},l,{classes:(0,We.A)({},c,{root:c.switchBase})})),(0,Je.jsx)(Wx,{className:c.track,ownerState:u})]})}),Hx=Vx;let Gx;function qx(){if(Gx)return Gx;const e=document.createElement("div"),t=document.createElement("div");return t.style.width="10px",t.style.height="1px",e.appendChild(t),e.dir="rtl",e.style.fontSize="14px",e.style.width="4px",e.style.height="1px",e.style.position="absolute",e.style.top="-1000px",e.style.overflow="scroll",document.body.appendChild(e),Gx="reverse",e.scrollLeft>0?Gx="default":(e.scrollLeft=1,0===e.scrollLeft&&(Gx="negative")),document.body.removeChild(e),Gx}function Kx(e,t){const n=e.scrollLeft;if("rtl"!==t)return n;switch(qx()){case"negative":return e.scrollWidth-e.clientWidth+n;case"reverse":return e.scrollWidth-e.clientWidth-n;default:return n}}function $x(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}const Yx=["onChange"],Xx={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};const Qx=(0,Ni.A)((0,Je.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),Jx=(0,Ni.A)((0,Je.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");function Zx(e){return(0,ft.Ay)("MuiTabScrollButton",e)}const eA=(0,rt.A)("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),tA=["className","slots","slotProps","direction","orientation","disabled"],nA=(0,ht.Ay)(Ti,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.orientation&&t[n.orientation]]}})(e=>{let{ownerState:t}=e;return(0,We.A)({width:40,flexShrink:0,opacity:.8,["&.".concat(eA.disabled)]:{opacity:0}},"vertical"===t.orientation&&{width:"100%",height:40,"& svg":{transform:"rotate(".concat(t.isRtl?-90:90,"deg)")}})}),rA=a.forwardRef(function(e,t){var n,r;const o=(0,pt.b)({props:e,name:"MuiTabScrollButton"}),{className:a,slots:i={},slotProps:s={},direction:l}=o,u=(0,Ue.A)(o,tA),c=Qg(),d=(0,We.A)({isRtl:c},o),p=(e=>{const{classes:t,orientation:n,disabled:r}=e,o={root:["root",n,r&&"disabled"]};return(0,ut.A)(o,Zx,t)})(d),h=null!=(n=i.StartScrollButtonIcon)?n:Qx,f=null!=(r=i.EndScrollButtonIcon)?r:Jx,m=ev({elementType:h,externalSlotProps:s.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:d}),g=ev({elementType:f,externalSlotProps:s.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:d});return(0,Je.jsx)(nA,(0,We.A)({component:"div",className:(0,Ve.A)(p.root,a),ref:t,role:null,ownerState:d,tabIndex:null},u,{children:"left"===l?(0,Je.jsx)(h,(0,We.A)({},m)):(0,Je.jsx)(f,(0,We.A)({},g))}))});function oA(e){return(0,ft.Ay)("MuiTabs",e)}const aA=(0,rt.A)("MuiTabs",["root","vertical","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),iA=["aria-label","aria-labelledby","action","centered","children","className","component","allowScrollButtonsMobile","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","slots","slotProps","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant","visibleScrollbar"],sA=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,lA=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,uA=(e,t,n)=>{let r=!1,o=n(e,t);for(;o;){if(o===e.firstChild){if(r)return;r=!0}const t=o.disabled||"true"===o.getAttribute("aria-disabled");if(o.hasAttribute("tabindex")&&!t)return void o.focus();o=n(e,o)}},cA=(0,ht.Ay)("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(aA.scrollButtons)]:t.scrollButtons},{["& .".concat(aA.scrollButtons)]:n.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,n.vertical&&t.vertical]}})(e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},t.vertical&&{flexDirection:"column"},t.scrollButtonsHideMobile&&{["& .".concat(aA.scrollButtons)]:{[n.breakpoints.down("sm")]:{display:"none"}}})}),dA=(0,ht.Ay)("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.scroller,n.fixed&&t.fixed,n.hideScrollbar&&t.hideScrollbar,n.scrollableX&&t.scrollableX,n.scrollableY&&t.scrollableY]}})(e=>{let{ownerState:t}=e;return(0,We.A)({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},t.fixed&&{overflowX:"hidden",width:"100%"},t.hideScrollbar&&{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},t.scrollableX&&{overflowX:"auto",overflowY:"hidden"},t.scrollableY&&{overflowY:"auto",overflowX:"hidden"})}),pA=(0,ht.Ay)("div",{name:"MuiTabs",slot:"FlexContainer",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.flexContainer,n.vertical&&t.flexContainerVertical,n.centered&&t.centered]}})(e=>{let{ownerState:t}=e;return(0,We.A)({display:"flex"},t.vertical&&{flexDirection:"column"},t.centered&&{justifyContent:"center"})}),hA=(0,ht.Ay)("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:(e,t)=>t.indicator})(e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({position:"absolute",height:2,bottom:0,width:"100%",transition:n.transitions.create()},"primary"===t.indicatorColor&&{backgroundColor:(n.vars||n).palette.primary.main},"secondary"===t.indicatorColor&&{backgroundColor:(n.vars||n).palette.secondary.main},t.vertical&&{height:"100%",width:2,right:0})}),fA=(0,ht.Ay)(function(e){const{onChange:t}=e,n=(0,Ue.A)(e,Yx),r=a.useRef(),o=a.useRef(null),i=()=>{r.current=o.current.offsetHeight-o.current.clientHeight};return(0,Im.A)(()=>{const e=(0,mv.A)(()=>{const e=r.current;i(),e!==r.current&&t(r.current)}),n=(0,gv.A)(o.current);return n.addEventListener("resize",e),()=>{e.clear(),n.removeEventListener("resize",e)}},[t]),a.useEffect(()=>{i(),t(r.current)},[t]),(0,Je.jsx)("div",(0,We.A)({style:Xx},n,{ref:o}))})({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),mA={};const gA=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiTabs"}),r=Ev(),o=Qg(),{"aria-label":i,"aria-labelledby":s,action:l,centered:u=!1,children:c,className:d,component:p="div",allowScrollButtonsMobile:h=!1,indicatorColor:f="primary",onChange:m,orientation:g="horizontal",ScrollButtonComponent:v=rA,scrollButtons:y="auto",selectionFollowsFocus:b,slots:x={},slotProps:A={},TabIndicatorProps:D={},TabScrollButtonProps:k={},textColor:w="primary",value:S,variant:E="standard",visibleScrollbar:_=!1}=n,C=(0,Ue.A)(n,iA),F="scrollable"===E,T="vertical"===g,j=T?"scrollTop":"scrollLeft",z=T?"top":"left",I=T?"bottom":"right",L=T?"clientHeight":"clientWidth",P=T?"height":"width",R=(0,We.A)({},n,{component:p,allowScrollButtonsMobile:h,indicatorColor:f,orientation:g,vertical:T,scrollButtons:y,textColor:w,variant:E,visibleScrollbar:_,fixed:!F,hideScrollbar:F&&!_,scrollableX:F&&!T,scrollableY:F&&T,centered:u&&!F,scrollButtonsHideMobile:!h}),N=(e=>{const{vertical:t,fixed:n,hideScrollbar:r,scrollableX:o,scrollableY:a,centered:i,scrollButtonsHideMobile:s,classes:l}=e,u={root:["root",t&&"vertical"],scroller:["scroller",n&&"fixed",r&&"hideScrollbar",o&&"scrollableX",a&&"scrollableY"],flexContainer:["flexContainer",t&&"flexContainerVertical",i&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",s&&"scrollButtonsHideMobile"],scrollableX:[o&&"scrollableX"],hideScrollbar:[r&&"hideScrollbar"]};return(0,ut.A)(u,oA,l)})(R),O=ev({elementType:x.StartScrollButtonIcon,externalSlotProps:A.startScrollButtonIcon,ownerState:R}),B=ev({elementType:x.EndScrollButtonIcon,externalSlotProps:A.endScrollButtonIcon,ownerState:R});const[M,W]=a.useState(!1),[U,V]=a.useState(mA),[H,G]=a.useState(!1),[q,K]=a.useState(!1),[$,Y]=a.useState(!1),[X,Q]=a.useState({overflow:"hidden",scrollbarWidth:0}),J=new Map,Z=a.useRef(null),ee=a.useRef(null),te=()=>{const e=Z.current;let t,n;if(e){const n=e.getBoundingClientRect();t={clientWidth:e.clientWidth,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollLeftNormalized:Kx(e,o?"rtl":"ltr"),scrollWidth:e.scrollWidth,top:n.top,bottom:n.bottom,left:n.left,right:n.right}}if(e&&!1!==S){const e=ee.current.children;if(e.length>0){const t=e[J.get(S)];0,n=t?t.getBoundingClientRect():null}}return{tabsMeta:t,tabMeta:n}},ne=(0,Xa.A)(()=>{const{tabsMeta:e,tabMeta:t}=te();let n,r=0;if(T)n="top",t&&e&&(r=t.top-e.top+e.scrollTop);else if(n=o?"right":"left",t&&e){const a=o?e.scrollLeftNormalized+e.clientWidth-e.scrollWidth:e.scrollLeft;r=(o?-1:1)*(t[n]-e[n]+a)}const a={[n]:r,[P]:t?t[P]:0};if(isNaN(U[n])||isNaN(U[P]))V(a);else{const e=Math.abs(U[n]-a[n]),t=Math.abs(U[P]-a[P]);(e>=1||t>=1)&&V(a)}}),re=function(e){let{animation:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t?function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>{};const{ease:a=$x,duration:i=300}=r;let s=null;const l=t[e];let u=!1;const c=()=>{u=!0},d=r=>{if(u)return void o(new Error("Animation cancelled"));null===s&&(s=r);const c=Math.min(1,(r-s)/i);t[e]=a(c)*(n-l)+l,c>=1?requestAnimationFrame(()=>{o(null)}):requestAnimationFrame(d)};l===n?o(new Error("Element already at target position")):requestAnimationFrame(d)}(j,Z.current,e,{duration:r.transitions.duration.standard}):Z.current[j]=e},oe=e=>{let t=Z.current[j];T?t+=e:(t+=e*(o?-1:1),t*=o&&"reverse"===qx()?-1:1),re(t)},ae=()=>{const e=Z.current[L];let t=0;const n=Array.from(ee.current.children);for(let r=0;re){0===r&&(t=e);break}t+=o[L]}return t},ie=()=>{oe(-1*ae())},se=()=>{oe(ae())},le=a.useCallback(e=>{Q({overflow:null,scrollbarWidth:e})},[]),ue=(0,Xa.A)(e=>{const{tabsMeta:t,tabMeta:n}=te();if(n&&t)if(n[z]t[I]){const r=t[j]+(n[I]-t[I]);re(r,{animation:e})}}),ce=(0,Xa.A)(()=>{F&&!1!==y&&Y(!$)});a.useEffect(()=>{const e=(0,mv.A)(()=>{Z.current&&ne()});let t;const n=n=>{n.forEach(e=>{e.removedNodes.forEach(e=>{var n;null==(n=t)||n.unobserve(e)}),e.addedNodes.forEach(e=>{var n;null==(n=t)||n.observe(e)})}),e(),ce()},r=(0,gv.A)(Z.current);let o;return r.addEventListener("resize",e),"undefined"!==typeof ResizeObserver&&(t=new ResizeObserver(e),Array.from(ee.current.children).forEach(e=>{t.observe(e)})),"undefined"!==typeof MutationObserver&&(o=new MutationObserver(n),o.observe(ee.current,{childList:!0})),()=>{var n,a;e.clear(),r.removeEventListener("resize",e),null==(n=o)||n.disconnect(),null==(a=t)||a.disconnect()}},[ne,ce]),a.useEffect(()=>{const e=Array.from(ee.current.children),t=e.length;if("undefined"!==typeof IntersectionObserver&&t>0&&F&&!1!==y){const n=e[0],r=e[t-1],o={root:Z.current,threshold:.99},a=e=>{G(!e[0].isIntersecting)},i=new IntersectionObserver(a,o);i.observe(n);const s=e=>{K(!e[0].isIntersecting)},l=new IntersectionObserver(s,o);return l.observe(r),()=>{i.disconnect(),l.disconnect()}}},[F,y,$,null==c?void 0:c.length]),a.useEffect(()=>{W(!0)},[]),a.useEffect(()=>{ne()}),a.useEffect(()=>{ue(mA!==U)},[ue,U]),a.useImperativeHandle(l,()=>({updateIndicator:ne,updateScrollButtons:ce}),[ne,ce]);const de=(0,Je.jsx)(hA,(0,We.A)({},D,{className:(0,Ve.A)(N.indicator,D.className),ownerState:R,style:(0,We.A)({},U,D.style)}));let pe=0;const he=a.Children.map(c,e=>{if(!a.isValidElement(e))return null;const t=void 0===e.props.value?pe:e.props.value;J.set(t,pe);const n=t===S;return pe+=1,a.cloneElement(e,(0,We.A)({fullWidth:"fullWidth"===E,indicator:n&&!M&&de,selected:n,selectionFollowsFocus:b,onChange:m,textColor:w,value:t},1!==pe||!1!==S||e.props.tabIndex?{}:{tabIndex:0}))}),fe=(()=>{const e={};e.scrollbarSizeListener=F?(0,Je.jsx)(fA,{onChange:le,className:(0,Ve.A)(N.scrollableX,N.hideScrollbar)}):null;const t=F&&("auto"===y&&(H||q)||!0===y);return e.scrollButtonStart=t?(0,Je.jsx)(v,(0,We.A)({slots:{StartScrollButtonIcon:x.StartScrollButtonIcon},slotProps:{startScrollButtonIcon:O},orientation:g,direction:o?"right":"left",onClick:ie,disabled:!H},k,{className:(0,Ve.A)(N.scrollButtons,k.className)})):null,e.scrollButtonEnd=t?(0,Je.jsx)(v,(0,We.A)({slots:{EndScrollButtonIcon:x.EndScrollButtonIcon},slotProps:{endScrollButtonIcon:B},orientation:g,direction:o?"left":"right",onClick:se,disabled:!q},k,{className:(0,Ve.A)(N.scrollButtons,k.className)})):null,e})();return(0,Je.jsxs)(cA,(0,We.A)({className:(0,Ve.A)(N.root,d),ownerState:R,ref:t,as:p},C,{children:[fe.scrollButtonStart,fe.scrollbarSizeListener,(0,Je.jsxs)(dA,{className:N.scroller,ownerState:R,style:{overflow:X.overflow,[T?"margin".concat(o?"Left":"Right"):"marginBottom"]:_?void 0:-X.scrollbarWidth},ref:Z,children:[(0,Je.jsx)(pA,{"aria-label":i,"aria-labelledby":s,"aria-orientation":"vertical"===g?"vertical":null,className:N.flexContainer,ownerState:R,onKeyDown:e=>{const t=ee.current,n=(0,$g.A)(t).activeElement;if("tab"!==n.getAttribute("role"))return;let r="horizontal"===g?"ArrowLeft":"ArrowUp",a="horizontal"===g?"ArrowRight":"ArrowDown";switch("horizontal"===g&&o&&(r="ArrowRight",a="ArrowLeft"),e.key){case r:e.preventDefault(),uA(t,n,lA);break;case a:e.preventDefault(),uA(t,n,sA);break;case"Home":e.preventDefault(),uA(t,null,sA);break;case"End":e.preventDefault(),uA(t,null,lA)}},ref:ee,role:"tablist",children:he}),M&&de]}),fe.scrollButtonEnd]}))}),vA=gA;function yA(e){return(0,ft.Ay)("MuiTab",e)}const bA=(0,rt.A)("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper"]),xA=["className","disabled","disableFocusRipple","fullWidth","icon","iconPosition","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"],AA=(0,ht.Ay)(Ti,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.label&&n.icon&&t.labelIcon,t["textColor".concat((0,dt.A)(n.textColor))],n.fullWidth&&t.fullWidth,n.wrapped&&t.wrapped,{["& .".concat(bA.iconWrapper)]:t.iconWrapper}]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({},t.typography.button,{maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center"},n.label&&{flexDirection:"top"===n.iconPosition||"bottom"===n.iconPosition?"column":"row"},{lineHeight:1.25},n.icon&&n.label&&{minHeight:72,paddingTop:9,paddingBottom:9,["& > .".concat(bA.iconWrapper)]:(0,We.A)({},"top"===n.iconPosition&&{marginBottom:6},"bottom"===n.iconPosition&&{marginTop:6},"start"===n.iconPosition&&{marginRight:t.spacing(1)},"end"===n.iconPosition&&{marginLeft:t.spacing(1)})},"inherit"===n.textColor&&{color:"inherit",opacity:.6,["&.".concat(bA.selected)]:{opacity:1},["&.".concat(bA.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity}},"primary"===n.textColor&&{color:(t.vars||t).palette.text.secondary,["&.".concat(bA.selected)]:{color:(t.vars||t).palette.primary.main},["&.".concat(bA.disabled)]:{color:(t.vars||t).palette.text.disabled}},"secondary"===n.textColor&&{color:(t.vars||t).palette.text.secondary,["&.".concat(bA.selected)]:{color:(t.vars||t).palette.secondary.main},["&.".concat(bA.disabled)]:{color:(t.vars||t).palette.text.disabled}},n.fullWidth&&{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},n.wrapped&&{fontSize:t.typography.pxToRem(12)})}),DA=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiTab"}),{className:r,disabled:o=!1,disableFocusRipple:i=!1,fullWidth:s,icon:l,iconPosition:u="top",indicator:c,label:d,onChange:p,onClick:h,onFocus:f,selected:m,selectionFollowsFocus:g,textColor:v="inherit",value:y,wrapped:b=!1}=n,x=(0,Ue.A)(n,xA),A=(0,We.A)({},n,{disabled:o,disableFocusRipple:i,selected:m,icon:!!l,iconPosition:u,label:!!d,fullWidth:s,textColor:v,wrapped:b}),D=(e=>{const{classes:t,textColor:n,fullWidth:r,wrapped:o,icon:a,label:i,selected:s,disabled:l}=e,u={root:["root",a&&i&&"labelIcon","textColor".concat((0,dt.A)(n)),r&&"fullWidth",o&&"wrapped",s&&"selected",l&&"disabled"],iconWrapper:["iconWrapper"]};return(0,ut.A)(u,yA,t)})(A),k=l&&d&&a.isValidElement(l)?a.cloneElement(l,{className:(0,Ve.A)(D.iconWrapper,l.props.className)}):l;return(0,Je.jsxs)(AA,(0,We.A)({focusRipple:!i,className:(0,Ve.A)(D.root,r),ref:t,role:"tab","aria-selected":m,disabled:o,onClick:e=>{!m&&p&&p(e,y),h&&h(e)},onFocus:e=>{g&&!m&&p&&p(e,y),f&&f(e)},ownerState:A,tabIndex:m?0:-1},x,{children:["top"===u||"start"===u?(0,Je.jsxs)(a.Fragment,{children:[k,d]}):(0,Je.jsxs)(a.Fragment,{children:[d,k]}),c]}))}),kA=(0,Ni.A)((0,Je.jsx)("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z"}),"RadioButtonUnchecked"),wA=(0,Ni.A)((0,Je.jsx)("path",{d:"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z"}),"RadioButtonChecked"),SA=(0,ht.Ay)("span",{name:"MuiRadioButtonIcon",shouldForwardProp:Qm.A})({position:"relative",display:"flex"}),EA=(0,ht.Ay)(kA,{name:"MuiRadioButtonIcon"})({transform:"scale(1)"}),_A=(0,ht.Ay)(wA,{name:"MuiRadioButtonIcon"})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({left:0,position:"absolute",transform:"scale(0)",transition:t.transitions.create("transform",{easing:t.transitions.easing.easeIn,duration:t.transitions.duration.shortest})},n.checked&&{transform:"scale(1)",transition:t.transitions.create("transform",{easing:t.transitions.easing.easeOut,duration:t.transitions.duration.shortest})})});const CA=function(e){const{checked:t=!1,classes:n={},fontSize:r}=e,o=(0,We.A)({},e,{checked:t});return(0,Je.jsxs)(SA,{className:n.root,ownerState:o,children:[(0,Je.jsx)(EA,{fontSize:r,className:n.background,ownerState:o}),(0,Je.jsx)(_A,{fontSize:r,className:n.dot,ownerState:o})]})};var FA=n(7830);const TA=a.createContext(void 0);function jA(e){return(0,ft.Ay)("MuiRadio",e)}const zA=(0,rt.A)("MuiRadio",["root","checked","disabled","colorPrimary","colorSecondary","sizeSmall"]),IA=["checked","checkedIcon","color","icon","name","onChange","size","className"],LA=(0,ht.Ay)(Px,{shouldForwardProp:e=>(0,Qm.A)(e)||"classes"===e,name:"MuiRadio",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"medium"!==n.size&&t["size".concat((0,dt.A)(n.size))],t["color".concat((0,dt.A)(n.color))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({color:(t.vars||t).palette.text.secondary},!n.disableRipple&&{"&:hover":{backgroundColor:t.vars?"rgba(".concat("default"===n.color?t.vars.palette.action.activeChannel:t.vars.palette[n.color].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Ta.X4)("default"===n.color?t.palette.action.active:t.palette[n.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==n.color&&{["&.".concat(zA.checked)]:{color:(t.vars||t).palette[n.color].main}},{["&.".concat(zA.disabled)]:{color:(t.vars||t).palette.action.disabled}})});const PA=(0,Je.jsx)(CA,{checked:!0}),RA=(0,Je.jsx)(CA,{}),NA=a.forwardRef(function(e,t){var n,r;const o=(0,pt.b)({props:e,name:"MuiRadio"}),{checked:i,checkedIcon:s=PA,color:l="primary",icon:u=RA,name:c,onChange:d,size:p="medium",className:h}=o,f=(0,Ue.A)(o,IA),m=(0,We.A)({},o,{color:l,size:p}),g=(e=>{const{classes:t,color:n,size:r}=e,o={root:["root","color".concat((0,dt.A)(n)),"medium"!==r&&"size".concat((0,dt.A)(r))]};return(0,We.A)({},t,(0,ut.A)(o,jA,t))})(m),v=a.useContext(TA);let y=i;const b=(0,FA.A)(d,v&&v.onChange);let x=c;return v&&("undefined"===typeof y&&(y=function(e,t){return"object"===typeof t&&null!==t?e===t:String(e)===String(t)}(v.value,o.value)),"undefined"===typeof x&&(x=v.name)),(0,Je.jsx)(LA,(0,We.A)({type:"radio",icon:a.cloneElement(u,{fontSize:null!=(n=RA.props.fontSize)?n:p}),checkedIcon:a.cloneElement(s,{fontSize:null!=(r=PA.props.fontSize)?r:p}),ownerState:m,classes:g,name:x,checked:y,onChange:b,ref:t,className:(0,Ve.A)(g.root,h)},f))}),OA=NA;function BA(e){return(0,ft.Ay)("MuiFormGroup",e)}(0,rt.A)("MuiFormGroup",["root","row","error"]);const MA=["className","row"],WA=(0,ht.Ay)("div",{name:"MuiFormGroup",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.row&&t.row]}})(e=>{let{ownerState:t}=e;return(0,We.A)({display:"flex",flexDirection:"column",flexWrap:"wrap"},t.row&&{flexDirection:"row"})}),UA=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiFormGroup"}),{className:r,row:o=!1}=n,a=(0,Ue.A)(n,MA),i=Tm({props:n,muiFormControl:zm(),states:["error"]}),s=(0,We.A)({},n,{row:o,error:i.error}),l=(e=>{const{classes:t,row:n,error:r}=e,o={root:["root",n&&"row",r&&"error"]};return(0,ut.A)(o,BA,t)})(s);return(0,Je.jsx)(WA,(0,We.A)({className:(0,Ve.A)(l.root,r),ownerState:s,ref:t},a))});function VA(e){return(0,ft.Ay)("MuiRadioGroup",e)}(0,rt.A)("MuiRadioGroup",["root","row","error"]);var HA=n(63);const GA=["actions","children","className","defaultValue","name","onChange","value"],qA=a.forwardRef(function(e,t){const{actions:n,children:r,className:o,defaultValue:i,name:s,onChange:l,value:u}=e,c=(0,Ue.A)(e,GA),d=a.useRef(null),p=(e=>{const{classes:t,row:n,error:r}=e,o={root:["root",n&&"row",r&&"error"]};return(0,ut.A)(o,VA,t)})(e),[h,f]=(0,Wy.A)({controlled:u,default:i,name:"RadioGroup"});a.useImperativeHandle(n,()=>({focus:()=>{let e=d.current.querySelector("input:not(:disabled):checked");e||(e=d.current.querySelector("input:not(:disabled)")),e&&e.focus()}}),[]);const m=(0,Ya.A)(t,d),g=(0,HA.A)(s),v=a.useMemo(()=>({name:g,onChange(e){f(e.target.value),l&&l(e,e.target.value)},value:h}),[g,l,f,h]);return(0,Je.jsx)(TA.Provider,{value:v,children:(0,Je.jsx)(UA,(0,We.A)({role:"radiogroup",ref:m,className:(0,Ve.A)(p.root,o)},c,{children:r}))})});var KA=n(9374),$A=n(4290),YA=n(2682);const XA=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{autoHideDuration:t=null,disableWindowBlurListener:n=!1,onClose:r,open:o,resumeHideDuration:i}=e,s=(0,si.A)();a.useEffect(()=>{if(o)return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)};function e(e){e.defaultPrevented||"Escape"!==e.key&&"Esc"!==e.key||null==r||r(e,"escapeKeyDown")}},[o,r]);const l=(0,Am.A)((e,t)=>{null==r||r(e,t)}),u=(0,Am.A)(e=>{r&&null!=e&&s.start(e,()=>{l(null,"timeout")})});a.useEffect(()=>(o&&u(t),s.clear),[o,t,u,s]);const c=s.clear,d=a.useCallback(()=>{null!=t&&u(null!=i?i:.5*t)},[t,i,u]),p=e=>t=>{const n=e.onFocus;null==n||n(t),c()},h=e=>t=>{const n=e.onMouseEnter;null==n||n(t),c()},f=e=>t=>{const n=e.onMouseLeave;null==n||n(t),d()};return a.useEffect(()=>{if(!n&&o)return window.addEventListener("focus",d),window.addEventListener("blur",c),()=>{window.removeEventListener("focus",d),window.removeEventListener("blur",c)}},[n,o,d,c]),{getRootProps:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=(0,We.A)({},Pa(e),Pa(t));return(0,We.A)({role:"presentation"},t,n,{onBlur:(r=n,e=>{const t=r.onBlur;null==t||t(e),d()}),onFocus:p(n),onMouseEnter:h(n),onMouseLeave:f(n)});var r},onClickAway:e=>{null==r||r(e,"clickaway")}}};function QA(e){return e.substring(2).toLowerCase()}function JA(e){const{children:t,disableReactTree:n=!1,mouseEvent:r="onClick",onClickAway:o,touchEvent:i="onTouchEnd"}=e,s=a.useRef(!1),l=a.useRef(null),u=a.useRef(!1),c=a.useRef(!1);a.useEffect(()=>(setTimeout(()=>{u.current=!0},0),()=>{u.current=!1}),[]);const d=(0,ja.A)(Kg(t),l),p=(0,Am.A)(e=>{const t=c.current;c.current=!1;const r=(0,Pv.A)(l.current);if(!u.current||!l.current||"clientX"in e&&function(e,t){return t.documentElement.clientWidth-1:!r.documentElement.contains(e.target)||l.current.contains(e.target),a||!n&&t||o(e)}),h=e=>n=>{c.current=!0;const r=t.props[e];r&&r(n)},f={ref:d};return!1!==i&&(f[i]=h(i)),a.useEffect(()=>{if(!1!==i){const e=QA(i),t=(0,Pv.A)(l.current),n=()=>{s.current=!0};return t.addEventListener(e,p),t.addEventListener("touchmove",n),()=>{t.removeEventListener(e,p),t.removeEventListener("touchmove",n)}}},[p,i]),!1!==r&&(f[r]=h(r)),a.useEffect(()=>{if(!1!==r){const e=QA(r),t=(0,Pv.A)(l.current);return t.addEventListener(e,p),()=>{t.removeEventListener(e,p)}}},[p,r]),(0,Je.jsx)(a.Fragment,{children:a.cloneElement(t,f)})}function ZA(e){return(0,ft.Ay)("MuiSnackbarContent",e)}(0,rt.A)("MuiSnackbarContent",["root","message","action"]);const eD=["action","className","message","role"],tD=(0,ht.Ay)(qa,{name:"MuiSnackbarContent",slot:"Root",overridesResolver:(e,t)=>t.root})(e=>{let{theme:t}=e;const n="light"===t.palette.mode?.8:.98,r=(0,Ta.tL)(t.palette.background.default,n);return(0,We.A)({},t.typography.body2,{color:t.vars?t.vars.palette.SnackbarContent.color:t.palette.getContrastText(r),backgroundColor:t.vars?t.vars.palette.SnackbarContent.bg:r,display:"flex",alignItems:"center",flexWrap:"wrap",padding:"6px 16px",borderRadius:(t.vars||t).shape.borderRadius,flexGrow:1,[t.breakpoints.up("sm")]:{flexGrow:"initial",minWidth:288}})}),nD=(0,ht.Ay)("div",{name:"MuiSnackbarContent",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0"}),rD=(0,ht.Ay)("div",{name:"MuiSnackbarContent",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"center",marginLeft:"auto",paddingLeft:16,marginRight:-8}),oD=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiSnackbarContent"}),{action:r,className:o,message:a,role:i="alert"}=n,s=(0,Ue.A)(n,eD),l=n,u=(e=>{const{classes:t}=e;return(0,ut.A)({root:["root"],action:["action"],message:["message"]},ZA,t)})(l);return(0,Je.jsxs)(tD,(0,We.A)({role:i,square:!0,elevation:6,className:(0,Ve.A)(u.root,o),ownerState:l,ref:t},s,{children:[(0,Je.jsx)(nD,{className:u.message,ownerState:l,children:a}),r?(0,Je.jsx)(rD,{className:u.action,ownerState:l,children:r}):null]}))});function aD(e){return(0,ft.Ay)("MuiSnackbar",e)}(0,rt.A)("MuiSnackbar",["root","anchorOriginTopCenter","anchorOriginBottomCenter","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft"]);const iD=["onEnter","onExited"],sD=["action","anchorOrigin","autoHideDuration","children","className","ClickAwayListenerProps","ContentProps","disableWindowBlurListener","message","onBlur","onClose","onFocus","onMouseEnter","onMouseLeave","open","resumeHideDuration","TransitionComponent","transitionDuration","TransitionProps"],lD=(0,ht.Ay)("div",{name:"MuiSnackbar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["anchorOrigin".concat((0,dt.A)(n.anchorOrigin.vertical)).concat((0,dt.A)(n.anchorOrigin.horizontal))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({zIndex:(t.vars||t).zIndex.snackbar,position:"fixed",display:"flex",left:8,right:8,justifyContent:"center",alignItems:"center"},"top"===n.anchorOrigin.vertical?{top:8}:{bottom:8},"left"===n.anchorOrigin.horizontal&&{justifyContent:"flex-start"},"right"===n.anchorOrigin.horizontal&&{justifyContent:"flex-end"},{[t.breakpoints.up("sm")]:(0,We.A)({},"top"===n.anchorOrigin.vertical?{top:24}:{bottom:24},"center"===n.anchorOrigin.horizontal&&{left:"50%",right:"auto",transform:"translateX(-50%)"},"left"===n.anchorOrigin.horizontal&&{left:24,right:"auto"},"right"===n.anchorOrigin.horizontal&&{right:24,left:"auto"})})}),uD=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiSnackbar"}),r=Ev(),o={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{action:i,anchorOrigin:{vertical:s,horizontal:l}={vertical:"bottom",horizontal:"left"},autoHideDuration:u=null,children:c,className:d,ClickAwayListenerProps:p,ContentProps:h,disableWindowBlurListener:f=!1,message:m,open:g,TransitionComponent:v=Lv,transitionDuration:y=o,TransitionProps:{onEnter:b,onExited:x}={}}=n,A=(0,Ue.A)(n.TransitionProps,iD),D=(0,Ue.A)(n,sD),k=(0,We.A)({},n,{anchorOrigin:{vertical:s,horizontal:l},autoHideDuration:u,disableWindowBlurListener:f,TransitionComponent:v,transitionDuration:y}),w=(e=>{const{classes:t,anchorOrigin:n}=e,r={root:["root","anchorOrigin".concat((0,dt.A)(n.vertical)).concat((0,dt.A)(n.horizontal))]};return(0,ut.A)(r,aD,t)})(k),{getRootProps:S,onClickAway:E}=XA((0,We.A)({},k)),[_,C]=a.useState(!0),F=ev({elementType:lD,getSlotProps:S,externalForwardedProps:D,ownerState:k,additionalProps:{ref:t},className:[w.root,d]});return!g&&_?null:(0,Je.jsx)(JA,(0,We.A)({onClickAway:E},p,{children:(0,Je.jsx)(lD,(0,We.A)({},F,{children:(0,Je.jsx)(v,(0,We.A)({appear:!0,in:g,timeout:y,direction:"top"===s?"down":"up",onEnter:(e,t)=>{C(!1),b&&b(e,t)},onExited:e=>{C(!0),x&&x(e)}},A,{children:c||(0,Je.jsx)(oD,(0,We.A)({message:m,action:i},h))}))}))}))}),cD=uD,dD=(0,a.forwardRef)(function(e,t){return(0,Je.jsx)(Xi,(0,It.A)({elevation:6,ref:t,variant:"filled"},e))}),pD=(0,a.createContext)(null);function hD(e){let{children:t}=e;const[n,r]=(0,a.useState)(!1),[o,i]=(0,a.useState)("info"),[s,l]=(0,a.useState)(null),u=(0,a.useCallback)((e,t)=>{r(!1),setTimeout(()=>{l(e),i(t),r(!0)},0)},[]),c=(0,a.useCallback)((e,t)=>{"clickaway"!==t&&r(!1)},[]),d=(0,a.useMemo)(()=>({error:e=>u(e,"error"),warning:e=>u(e,"warning"),info:e=>u(e,"info"),success:e=>u(e,"success")}),[u]);return(0,Je.jsxs)(pD.Provider,{value:d,children:[t,(0,Je.jsx)(cD,{open:n,autoHideDuration:5e3,onClose:c,anchorOrigin:{vertical:"top",horizontal:"center"},children:(0,Je.jsx)(dD,{onClose:c,severity:o,sx:{minWidth:300,maxWidth:"80vw",wordBreak:"break-word",overflowWrap:"anywhere"},children:s})})]})}function fD(){return(0,a.useContext)(pD)}var mD=n(2793),gD=n(8710);function vD(e){let{url:t}=e;const n=Hf();return(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:()=>{window.open(t,"_blank")},startIcon:(0,Je.jsx)(gD.A,{}),children:n("help")})}function yD(){const{data:e,update:t,reload:n}=uf(Qi.eCV,Qi.eeL);return{sync:e,updateSync:t,reloadSync:n}}var bD=n(9011);function xD(e){return(0,ft.Ay)("MuiLoadingButton",e)}const AD=(0,rt.A)("MuiLoadingButton",["root","loading","loadingIndicator","loadingIndicatorCenter","loadingIndicatorStart","loadingIndicatorEnd","endIconLoadingEnd","startIconLoadingStart"]),DD=["children","disabled","id","loading","loadingIndicator","loadingPosition","variant"],kD=(0,ht.Ay)(Eb,{shouldForwardProp:e=>(e=>"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e&&"classes"!==e)(e)||"classes"===e,name:"MuiLoadingButton",slot:"Root",overridesResolver:(e,t)=>[t.root,t.startIconLoadingStart&&{["& .".concat(AD.startIconLoadingStart)]:t.startIconLoadingStart},t.endIconLoadingEnd&&{["& .".concat(AD.endIconLoadingEnd)]:t.endIconLoadingEnd}]})(e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({["& .".concat(AD.startIconLoadingStart,", & .").concat(AD.endIconLoadingEnd)]:{transition:n.transitions.create(["opacity"],{duration:n.transitions.duration.short}),opacity:0}},"center"===t.loadingPosition&&{transition:n.transitions.create(["background-color","box-shadow","border-color"],{duration:n.transitions.duration.short}),["&.".concat(AD.loading)]:{color:"transparent"}},"start"===t.loadingPosition&&t.fullWidth&&{["& .".concat(AD.startIconLoadingStart,", & .").concat(AD.endIconLoadingEnd)]:{transition:n.transitions.create(["opacity"],{duration:n.transitions.duration.short}),opacity:0,marginRight:-8}},"end"===t.loadingPosition&&t.fullWidth&&{["& .".concat(AD.startIconLoadingStart,", & .").concat(AD.endIconLoadingEnd)]:{transition:n.transitions.create(["opacity"],{duration:n.transitions.duration.short}),opacity:0,marginLeft:-8}})}),wD=(0,ht.Ay)("span",{name:"MuiLoadingButton",slot:"LoadingIndicator",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.loadingIndicator,t["loadingIndicator".concat((0,dt.A)(n.loadingPosition))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({position:"absolute",visibility:"visible",display:"flex"},"start"===n.loadingPosition&&("outlined"===n.variant||"contained"===n.variant)&&{left:"small"===n.size?10:14},"start"===n.loadingPosition&&"text"===n.variant&&{left:6},"center"===n.loadingPosition&&{left:"50%",transform:"translate(-50%)",color:(t.vars||t).palette.action.disabled},"end"===n.loadingPosition&&("outlined"===n.variant||"contained"===n.variant)&&{right:"small"===n.size?10:14},"end"===n.loadingPosition&&"text"===n.variant&&{right:6},"start"===n.loadingPosition&&n.fullWidth&&{position:"relative",left:-10},"end"===n.loadingPosition&&n.fullWidth&&{position:"relative",right:-10})}),SD=a.forwardRef(function(e,t){const n=a.useContext(yb),r=function(e){let{props:t,name:n}=e;return sm({props:t,name:n,defaultTheme:Nm.A,themeId:nt.A})}({props:(0,am.A)(n,e),name:"MuiLoadingButton"}),{children:o,disabled:i=!1,id:s,loading:l=!1,loadingIndicator:u,loadingPosition:c="center",variant:d="text"}=r,p=(0,Ue.A)(r,DD),h=(0,HA.A)(s),f=null!=u?u:(0,Je.jsx)(zt,{"aria-labelledby":h,color:"inherit",size:16}),m=(0,We.A)({},r,{disabled:i,loading:l,loadingIndicator:f,loadingPosition:c,variant:d}),g=(e=>{const{loading:t,loadingPosition:n,classes:r}=e,o={root:["root",t&&"loading"],startIcon:[t&&"startIconLoading".concat((0,dt.A)(n))],endIcon:[t&&"endIconLoading".concat((0,dt.A)(n))],loadingIndicator:["loadingIndicator",t&&"loadingIndicator".concat((0,dt.A)(n))]},a=(0,ut.A)(o,xD,r);return(0,We.A)({},r,a)})(m),v=l?(0,Je.jsx)(wD,{className:g.loadingIndicator,ownerState:m,children:f}):null;return(0,Je.jsxs)(kD,(0,We.A)({disabled:i||l,id:h,ref:t},p,{variant:d,classes:g,ownerState:m,children:["end"===m.loadingPosition?o:v,"end"===m.loadingPosition?v:o]}))}),ED=SD;function _D(e){let{handleData:t,text:n,fileName:r}=e;const[o,i]=(0,a.useState)(!1);return(0,Je.jsx)(ED,{size:"small",variant:"outlined",onClick:async e=>{e.preventDefault();try{i(!0);const e=await t();(0,_s.Qv)(e,r)}catch(n){(0,Zi.h9)("download",n)}finally{i(!1)}},loading:o,startIcon:(0,Je.jsx)(bD.A,{}),children:n})}var CD=n(4654);function FD(e){let{handleImport:t,text:n,fileType:r="json",fileExts:o=[".json"]}=e;const i=Hf(),s=(0,a.useRef)(null);return(0,Je.jsxs)(Eb,{size:"small",variant:"outlined",onClick:()=>{s.current&&(s.current.click(),s.current.value=null)},startIcon:(0,Je.jsx)(CD.A,{}),children:[n,(0,Je.jsx)("input",{type:"file",accept:o.join(", "),ref:s,onChange:e=>{const n=e.target.files[0];if(!n)return;if(!n.type.includes(r))return void alert(i("error_wrong_file_type"));const o=new FileReader;o.onload=async e=>{t(e.target.result)},o.readAsText(n)},hidden:!0})]})}var TD=n(890),jD=n(5729),zD=n(3511),ID=n(60);const LD=["value","onChange","name","min","max","isFloat"];const PD=function(e){let{value:t,onChange:n,name:r,min:o,max:i,isFloat:s=!1}=e,l=(0,Is.A)(e,LD);const[u,c]=(0,a.useState)(t);return(0,a.useEffect)(()=>{c(t)},[t]),(0,Je.jsx)(hb,(0,It.A)((0,It.A)({},l),{},{type:"number",name:r,value:u,onChange:e=>{c(e.target.value)},onBlur:()=>{const e=Number(u);if(isNaN(e))return void c(t);const a=s?(0,_s.C5)(e,o,i):(0,_s.NS)(e,o,i);a!==e&&c(a),n({target:{name:r,value:a},preventDefault:()=>{}})}}))};function RD(){const{setting:e,updateSetting:t}=Rf(),n=(0,a.useMemo)(()=>[...(0,Qi.n4W)((null===e||void 0===e?void 0:e.transApis)||[])].sort((e,t)=>(e.sortOrder||0)-(t.sortOrder||0)),[null===e||void 0===e?void 0:e.transApis]);return{setting:e,transApis:n,updateSetting:t}}function ND(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=e.filter(e=>-1===e.sortOrder&&!e.isDisabled).map(e=>(0,It.A)((0,It.A)({},e),{},{sortOrder:-1})),n=e.filter(e=>-1!==e.sortOrder&&!e.isDisabled).map((e,t)=>(0,It.A)((0,It.A)({},e),{},{sortOrder:t})),r=e.filter(e=>e.isDisabled).map((e,t)=>(0,It.A)((0,It.A)({},e),{},{sortOrder:999+t}));return[...t,...n,...r]}function OD(){return[...arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]].sort((e,t)=>(e.sortOrder||0)-(t.sortOrder||0))}function BD(){const{setting:e,transApis:t,updateSetting:n}=RD();(0,a.useEffect)(()=>{const r=new Set((null===e||void 0===e?void 0:e.deletedTransApiSlugs)||[]),o=new Set(t.map(e=>e.apiSlug)),a=Qi._TQ.filter(e=>!o.has(e.apiSlug)&&!r.has(e.apiSlug));a.length>0&&n(e=>(0,It.A)((0,It.A)({},e),{},{transApis:[...(null===e||void 0===e?void 0:e.transApis)||[],...a]}))},[null===e||void 0===e?void 0:e.deletedTransApiSlugs,t,n]),(0,a.useEffect)(()=>{if(!Array.isArray(null===e||void 0===e?void 0:e.transApis))return;(0,Qi.n4W)(e.transApis)!==e.transApis&&n(e=>{const t=Array.isArray(null===e||void 0===e?void 0:e.transApis)?e.transApis:[],n=(0,Qi.n4W)(t);return n===t?e:(0,It.A)((0,It.A)({},e),{},{transApis:n})})},[null===e||void 0===e?void 0:e.transApis,n]);const r=(0,a.useMemo)(()=>t.filter(e=>!Qi.sNP.builtin.has(e.apiSlug)),[t]),o=(0,a.useMemo)(()=>t.filter(e=>Qi.sNP.builtin.has(e.apiSlug)),[t]),i=(0,a.useMemo)(()=>t.filter(e=>!e.isDisabled),[t]),s=(0,a.useMemo)(()=>i.filter(e=>Qi.sNP.ai.has(e.apiType)),[i]),l=(0,a.useCallback)(e=>{const t=Qi._TQ.find(t=>t.apiType===e)||{},r=crypto.randomUUID(),o="".concat(e,"_").concat(crypto.randomUUID()),a="".concat(e,"_").concat(r.slice(0,8)),i=(0,It.A)((0,It.A)({},t),{},{apiSlug:o,apiName:a,apiType:e});n(e=>(0,It.A)((0,It.A)({},e),{},{transApis:[...(null===e||void 0===e?void 0:e.transApis)||[],i]}))},[n]),u=(0,a.useCallback)(e=>{const t=crypto.randomUUID(),r="".concat(e.apiType,"_").concat(t),o="".concat(e.apiName," - copy"),a=(0,It.A)((0,It.A)({},e),{},{apiSlug:r,apiName:o});n(e=>(0,It.A)((0,It.A)({},e),{},{transApis:[...(null===e||void 0===e?void 0:e.transApis)||[],a]}))},[n]),c=(0,a.useCallback)(e=>{Array.isArray(e)&&0!==e.length&&n(t=>{const n=new Set(e),r=Qi._TQ.filter(e=>n.has(e.apiSlug)).map(e=>e.apiSlug),o=r.length>0?Array.from(new Set([...(null===t||void 0===t?void 0:t.deletedTransApiSlugs)||[],...r])):(null===t||void 0===t?void 0:t.deletedTransApiSlugs)||[];return(0,It.A)((0,It.A)({},t),{},{deletedTransApiSlugs:o,transApis:((null===t||void 0===t?void 0:t.transApis)||[]).filter(e=>!n.has(e.apiSlug))})})},[n]),d=(0,a.useCallback)(e=>{c([e])},[c]),p=(0,a.useCallback)(e=>{Array.isArray(e)&&0!==e.length&&n(t=>{const n=new Set(e),r=OD((null===t||void 0===t?void 0:t.transApis)||[]).map(e=>n.has(e.apiSlug)&&!e.isDisabled?(0,It.A)((0,It.A)({},e),{},{sortOrder:-1}):e);return(0,It.A)((0,It.A)({},t),{},{transApis:ND(r)})})},[n]),h=(0,a.useCallback)(e=>{Array.isArray(e)&&0!==e.length&&n(t=>{const n=new Set(e),r=OD((null===t||void 0===t?void 0:t.transApis)||[]).map(e=>n.has(e.apiSlug)?(0,It.A)((0,It.A)({},e),{},{isDisabled:!0,sortOrder:999}):e);return(0,It.A)((0,It.A)({},t),{},{transApis:ND(r)})})},[n]),f=(0,a.useCallback)(e=>{Array.isArray(e)&&0!==e.length&&n(t=>{const n=new Set(e),r=OD((null===t||void 0===t?void 0:t.transApis)||[]).map(e=>n.has(e.apiSlug)&&e.isDisabled?(0,It.A)((0,It.A)({},e),{},{isDisabled:!1,sortOrder:0}):e);return(0,It.A)((0,It.A)({},t),{},{transApis:ND(r)})})},[n]),m=(0,a.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"asc";n(t=>{const n=(null===t||void 0===t?void 0:t.transApis)||[],r=n.filter(e=>-1===e.sortOrder&&!e.isDisabled),o=n.filter(e=>e.isDisabled),a=n.filter(e=>-1!==e.sortOrder&&!e.isDisabled),i=[...a].sort((t,n)=>{const r=(t.apiName||"").toLowerCase(),o=(n.apiName||"").toLowerCase();return"asc"===e?r.localeCompare(o):o.localeCompare(r)});return(0,It.A)((0,It.A)({},t),{},{transApis:ND([...r,...i,...o])})})},[n]),g=(0,a.useCallback)((e,t)=>{e&&t&&e!==t&&n(n=>{const r=[...(null===n||void 0===n?void 0:n.transApis)||[]].sort((e,t)=>(e.sortOrder||0)-(t.sortOrder||0)),o=r.findIndex(t=>t.apiSlug===e),a=r.findIndex(e=>e.apiSlug===t);if(o<0||a<0)return n;const i=[...r],[s]=i.splice(o,1);return i.splice(a,0,s),(0,It.A)((0,It.A)({},n),{},{transApis:ND(i)})})},[n]);return{transApis:t,userApis:r,builtinApis:o,enabledApis:i,aiEnabledApis:s,addApi:l,copyApi:u,deleteApi:d,deleteApis:c,pinApis:p,disableApis:h,enableApis:f,alphaSortApis:m,reorderApis:g}}var MD=n(4132);function WD(e){let{onChange:t,showMore:n}=e;const r=Hf(),o=()=>{t(e=>!e)};return n?(0,Je.jsx)(Eb,{size:"small",variant:"text",onClick:o,startIcon:(0,Je.jsx)(MD.A,{}),children:r("less")}):(0,Je.jsx)(Eb,{size:"small",variant:"text",onClick:o,startIcon:(0,Je.jsx)(Jb.A,{}),children:r("more")})}function UD(e){return(0,ft.Ay)("MuiDialog",e)}const VD=(0,rt.A)("MuiDialog",["root","scrollPaper","scrollBody","container","paper","paperScrollPaper","paperScrollBody","paperWidthFalse","paperWidthXs","paperWidthSm","paperWidthMd","paperWidthLg","paperWidthXl","paperFullWidth","paperFullScreen"]);const HD=a.createContext({}),GD=["aria-describedby","aria-labelledby","BackdropComponent","BackdropProps","children","className","disableEscapeKeyDown","fullScreen","fullWidth","maxWidth","onBackdropClick","onClick","onClose","open","PaperComponent","PaperProps","scroll","TransitionComponent","transitionDuration","TransitionProps"],qD=(0,ht.Ay)(Yv,{name:"MuiDialog",slot:"Backdrop",overrides:(e,t)=>t.backdrop})({zIndex:-1}),KD=(0,ht.Ay)(uy,{name:"MuiDialog",slot:"Root",overridesResolver:(e,t)=>t.root})({"@media print":{position:"absolute !important"}}),$D=(0,ht.Ay)("div",{name:"MuiDialog",slot:"Container",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.container,t["scroll".concat((0,dt.A)(n.scroll))]]}})(e=>{let{ownerState:t}=e;return(0,We.A)({height:"100%","@media print":{height:"auto"},outline:0},"paper"===t.scroll&&{display:"flex",justifyContent:"center",alignItems:"center"},"body"===t.scroll&&{overflowY:"auto",overflowX:"hidden",textAlign:"center","&::after":{content:'""',display:"inline-block",verticalAlign:"middle",height:"100%",width:"0"}})}),YD=(0,ht.Ay)(qa,{name:"MuiDialog",slot:"Paper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.paper,t["scrollPaper".concat((0,dt.A)(n.scroll))],t["paperWidth".concat((0,dt.A)(String(n.maxWidth)))],n.fullWidth&&t.paperFullWidth,n.fullScreen&&t.paperFullScreen]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({margin:32,position:"relative",overflowY:"auto","@media print":{overflowY:"visible",boxShadow:"none"}},"paper"===n.scroll&&{display:"flex",flexDirection:"column",maxHeight:"calc(100% - 64px)"},"body"===n.scroll&&{display:"inline-block",verticalAlign:"middle",textAlign:"left"},!n.maxWidth&&{maxWidth:"calc(100% - 64px)"},"xs"===n.maxWidth&&{maxWidth:"px"===t.breakpoints.unit?Math.max(t.breakpoints.values.xs,444):"max(".concat(t.breakpoints.values.xs).concat(t.breakpoints.unit,", 444px)"),["&.".concat(VD.paperScrollBody)]:{[t.breakpoints.down(Math.max(t.breakpoints.values.xs,444)+64)]:{maxWidth:"calc(100% - 64px)"}}},n.maxWidth&&"xs"!==n.maxWidth&&{maxWidth:"".concat(t.breakpoints.values[n.maxWidth]).concat(t.breakpoints.unit),["&.".concat(VD.paperScrollBody)]:{[t.breakpoints.down(t.breakpoints.values[n.maxWidth]+64)]:{maxWidth:"calc(100% - 64px)"}}},n.fullWidth&&{width:"calc(100% - 64px)"},n.fullScreen&&{margin:0,width:"100%",maxWidth:"100%",height:"100%",maxHeight:"none",borderRadius:0,["&.".concat(VD.paperScrollBody)]:{margin:0,maxWidth:"100%"}})}),XD=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiDialog"}),r=Ev(),o={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{"aria-describedby":i,"aria-labelledby":s,BackdropComponent:l,BackdropProps:u,children:c,className:d,disableEscapeKeyDown:p=!1,fullScreen:h=!1,fullWidth:f=!1,maxWidth:m="sm",onBackdropClick:g,onClick:v,onClose:y,open:b,PaperComponent:x=qa,PaperProps:A={},scroll:D="paper",TransitionComponent:k=Gv,transitionDuration:w=o,TransitionProps:S}=n,E=(0,Ue.A)(n,GD),_=(0,We.A)({},n,{disableEscapeKeyDown:p,fullScreen:h,fullWidth:f,maxWidth:m,scroll:D}),C=(e=>{const{classes:t,scroll:n,maxWidth:r,fullWidth:o,fullScreen:a}=e,i={root:["root"],container:["container","scroll".concat((0,dt.A)(n))],paper:["paper","paperScroll".concat((0,dt.A)(n)),"paperWidth".concat((0,dt.A)(String(r))),o&&"paperFullWidth",a&&"paperFullScreen"]};return(0,ut.A)(i,UD,t)})(_),F=a.useRef(),T=(0,ym.A)(s),j=a.useMemo(()=>({titleId:T}),[T]);return(0,Je.jsx)(KD,(0,We.A)({className:(0,Ve.A)(C.root,d),closeAfterTransition:!0,components:{Backdrop:qD},componentsProps:{backdrop:(0,We.A)({transitionDuration:w,as:l},u)},disableEscapeKeyDown:p,onClose:y,open:b,ref:t,onClick:e=>{v&&v(e),F.current&&(F.current=null,g&&g(e),y&&y(e,"backdropClick"))},ownerState:_},E,{children:(0,Je.jsx)(k,(0,We.A)({appear:!0,in:b,timeout:w,role:"presentation"},S,{children:(0,Je.jsx)($D,{className:(0,Ve.A)(C.container),onMouseDown:e=>{F.current=e.target===e.currentTarget},ownerState:_,children:(0,Je.jsx)(YD,(0,We.A)({as:x,elevation:24,role:"dialog","aria-describedby":i,"aria-labelledby":T},A,{className:(0,Ve.A)(C.paper,A.className),ownerState:_,children:(0,Je.jsx)(HD.Provider,{value:j,children:c})}))})}))}))});function QD(e){return(0,ft.Ay)("MuiDialogActions",e)}(0,rt.A)("MuiDialogActions",["root","spacing"]);const JD=["className","disableSpacing"],ZD=(0,ht.Ay)("div",{name:"MuiDialogActions",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disableSpacing&&t.spacing]}})(e=>{let{ownerState:t}=e;return(0,We.A)({display:"flex",alignItems:"center",padding:8,justifyContent:"flex-end",flex:"0 0 auto"},!t.disableSpacing&&{"& > :not(style) ~ :not(style)":{marginLeft:8}})}),ek=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiDialogActions"}),{className:r,disableSpacing:o=!1}=n,a=(0,Ue.A)(n,JD),i=(0,We.A)({},n,{disableSpacing:o}),s=(e=>{const{classes:t,disableSpacing:n}=e,r={root:["root",!n&&"spacing"]};return(0,ut.A)(r,QD,t)})(i);return(0,Je.jsx)(ZD,(0,We.A)({className:(0,Ve.A)(s.root,r),ownerState:i,ref:t},a))});function tk(e){return(0,ft.Ay)("MuiDialogContent",e)}(0,rt.A)("MuiDialogContent",["root","dividers"]);function nk(e){return(0,ft.Ay)("MuiDialogTitle",e)}const rk=(0,rt.A)("MuiDialogTitle",["root"]),ok=["className","dividers"],ak=(0,ht.Ay)("div",{name:"MuiDialogContent",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dividers&&t.dividers]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({flex:"1 1 auto",WebkitOverflowScrolling:"touch",overflowY:"auto",padding:"20px 24px"},n.dividers?{padding:"16px 24px",borderTop:"1px solid ".concat((t.vars||t).palette.divider),borderBottom:"1px solid ".concat((t.vars||t).palette.divider)}:{[".".concat(rk.root," + &")]:{paddingTop:0}})}),ik=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiDialogContent"}),{className:r,dividers:o=!1}=n,a=(0,Ue.A)(n,ok),i=(0,We.A)({},n,{dividers:o}),s=(e=>{const{classes:t,dividers:n}=e,r={root:["root",n&&"dividers"]};return(0,ut.A)(r,tk,t)})(i);return(0,Je.jsx)(ak,(0,We.A)({className:(0,Ve.A)(s.root,r),ownerState:i,ref:t},a))});function sk(e){return(0,ft.Ay)("MuiDialogContentText",e)}(0,rt.A)("MuiDialogContentText",["root"]);const lk=["children","className"],uk=(0,ht.Ay)(gf,{shouldForwardProp:e=>(0,Qm.A)(e)||"classes"===e,name:"MuiDialogContentText",slot:"Root",overridesResolver:(e,t)=>t.root})({}),ck=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiDialogContentText"}),{className:r}=n,o=(0,Ue.A)(n,lk),a=(e=>{const{classes:t}=e,n=(0,ut.A)({root:["root"]},sk,t);return(0,We.A)({},t,n)})(o);return(0,Je.jsx)(uk,(0,We.A)({component:"p",variant:"body1",color:"text.secondary",ref:t,ownerState:o,className:(0,Ve.A)(a.root,r)},n,{classes:a}))}),dk=["className","id"],pk=(0,ht.Ay)(gf,{name:"MuiDialogTitle",slot:"Root",overridesResolver:(e,t)=>t.root})({padding:"16px 24px",flex:"0 0 auto"}),hk=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiDialogTitle"}),{className:r,id:o}=n,i=(0,Ue.A)(n,dk),s=n,l=(e=>{const{classes:t}=e;return(0,ut.A)({root:["root"]},nk,t)})(s),{titleId:u=o}=a.useContext(HD);return(0,Je.jsx)(pk,(0,We.A)({component:"h2",className:(0,Ve.A)(l.root,r),ownerState:s,ref:t,variant:"h6",id:null!=o?o:u},i))}),fk=(0,a.createContext)(null);function mk(e){let{children:t}=e;const[n,r]=(0,a.useState)(null),o=(0,a.useRef)(null),i=Hf(),s=(0,a.useMemo)(()=>({title:i("confirm_title","Confirm"),message:i("confirm_message","Are you sure you want to proceed?"),confirmText:i("confirm_action","Confirm"),cancelText:i("cancel_action","Cancel")}),[i]),l=(0,a.useCallback)(e=>new Promise(t=>{r((0,It.A)((0,It.A)({},s),e)),o.current=t}),[s]),u=()=>{o.current&&o.current(!1),r(null)};return(0,Je.jsxs)(fk.Provider,{value:l,children:[t,(0,Je.jsx)(XD,{open:!!n,onClose:u,"aria-labelledby":"confirm-dialog-title","aria-describedby":"confirm-dialog-description",children:n&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(hk,{id:"confirm-dialog-title",children:n.title}),(0,Je.jsx)(ik,{children:(0,Je.jsx)(ck,{id:"confirm-dialog-description",children:n.message})}),(0,Je.jsxs)(ek,{children:[(0,Je.jsx)(Eb,{onClick:u,children:n.cancelText}),(0,Je.jsx)(Eb,{onClick:()=>{o.current&&o.current(!0),r(null)},color:"primary",autoFocus:!0,children:n.confirmText})]})]})})]})}function gk(){const e=(0,a.useContext)(fk);if(!e)throw new Error("useConfirm must be used within a ConfirmProvider");return e}var vk=n(1367),yk=n(5449),bk=n(3385),xk=n(696);function Ak(e,t){if(void 0===e.inserted[t.name])return e.insert("",t,e.sheet,!0)}function Dk(e,t,n){var r=[],o=(0,xk.Rk)(e,r,n);return r.length<2?n:o+t(r)}var kk,wk,Sk,Ek=function e(t){for(var n="",r=0;r2&&void 0!==arguments[2]?arguments[2]:1;return"\n text-decoration-line: underline;\n text-decoration-style: ".concat(e,";\n text-decoration-color: ").concat(t,";\n text-decoration-thickness: ").concat(n,"px;\n text-underline-offset: 0.3em;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-style: ").concat(e,";\n -webkit-text-decoration-color: ").concat(t,";\n -webkit-text-decoration-thickness: 1px;\n -webkit-text-underline-offset: 0.3em;\n\n opacity: 0.8;\n -webkit-opacity: 0.8;\n &:hover {\n opacity: 1;\n -webkit-opacity: 1;\n }\n")},Lk=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:Qi.OTD;return{[Qi.nsG]:"",[Qi.VfS]:Ik("solid",e),[Qi.As$]:Ik("dotted",e),[Qi.hrO]:Ik("dashed",e),[Qi.TYN]:Ik("dashed",e,2),[Qi.QsO]:Ik("wavy",e),[Qi._sN]:Ik("wavy",e,2),[Qi.WDZ]:"\n border: 1px dashed ".concat(e,";\n display: block;\n padding: 0.2em 0.3em;\n box-sizing: border-box;\n "),[Qi.msE]:"\n border: 2px dashed ".concat(e,";\n display: block;\n padding: 0.2em 0.3em;\n box-sizing: border-box;\n "),[Qi.zwp]:"\n background: linear-gradient(to top, ".concat(e," 50%, transparent 50%);\n "),[Qi.ea4]:"\n background: linear-gradient(to top, transparent, ".concat(e," 20%, transparent 60%);\n "),[Qi.$ET]:"\n filter: blur(0.2em);\n -webkit-filter: blur(0.2em);\n &:hover {\n filter: none;\n -webkit-filter: none;\n }\n ",[Qi.zMP]:"\n color: #fff;\n background-color: ".concat(e,";\n "),[Qi.SXq]:"\n opacity: 0.8;\n -webkit-opacity: 0.8;\n display: block;\n padding: 0.25em 0.5em;\n border-left: 0.25em solid ".concat(e,";\n background: rgb(32, 156, 238, 0.2);\n &:hover {\n opacity: 1;\n -webkit-opacity: 1;\n }\n "),[Qi.HzO]:"\n background-image: linear-gradient(\n 90deg,\n #3b82f6,\n #9333ea,\n #ec4899,\n #3b82f6\n );\n background-size: 200% auto;\n color: transparent;\n -webkit-background-clip: text;\n background-clip: text;\n animation: ".concat(Tk," 4s linear infinite;\n & * {\n background-color: transparent !important;\n }\n "),[Qi.VEm]:"\n animation: ".concat(jk," 1s infinite;\n "),[Qi.EDO]:"\n animation: ".concat(zk," 2s ease-in-out infinite alternate;\n "),[Qi.Rrc]:"\n color: #333;\n background: linear-gradient(\n 45deg,\n LightGreen 20%,\n LightPink 20% 40%,\n LightSalmon 40% 60%,\n LightSeaGreen 60% 80%,\n LightSkyBlue 80%\n );\n &:hover {\n color: #111;\n };\n "}},Pk=Lk();function Rk(){const{customStyles:e,updateSetting:t}=function(){const{setting:e,updateSetting:t}=Rf();return{customStyles:(null===e||void 0===e?void 0:e.customStyles)||[],updateSetting:t}}();return{customStyles:e,addStyle:(0,a.useCallback)(()=>{const e=vk.p5[0],n=crypto.randomUUID(),r="custom_".concat(crypto.randomUUID()),o="Style_".concat(n.slice(0,8)),a=(0,It.A)((0,It.A)({},e),{},{styleSlug:r,styleName:o});t(e=>(0,It.A)((0,It.A)({},e),{},{customStyles:[...(null===e||void 0===e?void 0:e.customStyles)||[],a]}))},[t]),deleteStyle:(0,a.useCallback)(e=>{t(t=>(0,It.A)((0,It.A)({},t),{},{customStyles:((null===t||void 0===t?void 0:t.customStyles)||[]).filter(t=>t.styleSlug!==e)}))},[t]),updateStyle:(0,a.useCallback)((e,n)=>{t(t=>(0,It.A)((0,It.A)({},t),{},{customStyles:((null===t||void 0===t?void 0:t.customStyles)||[]).map(t=>t.styleSlug===e?(0,It.A)((0,It.A)({},t),n):t)}))},[t])}}function Nk(){const{customStyles:e}=Rk(),t=Hf(),n=(0,a.useMemo)(()=>vk.q_.map(e=>({styleSlug:e,styleName:t(e),styleCode:Pk[e]||""})),[t]),r=(0,a.useMemo)(()=>[...n,...e],[n,e]);return{builtinStyles:n,customStyles:e,allTextStyles:r}}const Ok=e=>{const t="*"===(null===e||void 0===e?void 0:e.pattern)?Qi.lNu:Qi.NGo;return(0,It.A)((0,It.A)({},t),e||{})};function Bk(e){var t;let{rule:n,rules:r,setShow:o,setKeyword:i}=e;const s=(0,a.useMemo)(()=>!!n,[n]),l=Hf(),[u,c]=(0,a.useState)(s),[d,p]=(0,a.useState)({}),[h,f]=(0,a.useState)(()=>Ok(n)),[m,g]=(0,a.useState)(h),[v,y]=(0,a.useState)(!r),{enabledApis:b}=BD(),{allTextStyles:x}=Nk();(0,a.useEffect)(()=>{const e=Ok(n);f(e),g(e)},[n]);const{pattern:A,selector:D,keepSelector:k="",blockSelector:w="",rootsSelector:S="",ignoreSelector:E="",terms:_,aiTerms:C,termsStyle:F="",highlightStyle:T="color: red;",textExtStyle:j="",selectStyle:z="",parentStyle:I="",grandStyle:L="",injectJs:P="",injectCss:R="",apiSlug:N,fromLang:O,toLang:B,textStyle:M,wrapOriginal:W="false",originalTextStyle:U="style_none",transOpen:V,transOnly:H="false",transOnlyRevert:G="false",transOnlyRevertDelay:q="0.5",autoScan:K="true",hasRichText:$="true",hasShadowroot:Y="false",scanAll:X="false",isPlainText:Q="false",transTag:J=Qi.CEx,transTitle:Z="false",transStartHook:ee="",transEndHook:te="",splitParagraph:ne=Qi.TWY,splitLength:re=0,highlightWords:oe=Qi.Gie,transOrder:ae}=m,ie=null===r||void 0===r||null===(t=r.list)||void 0===t?void 0:t.find(e=>e.pattern===Qi.WL9),se=W===Qi.WL9?"true"===(null===ie||void 0===ie?void 0:ie.wrapOriginal):"true"===W,le=(0,a.useMemo)(()=>JSON.stringify(h)!==JSON.stringify(m),[h,m]),ue=e=>{e.preventDefault();const{name:t}=e.target;p(e=>(0,It.A)((0,It.A)({},e),{},{[t]:""}))},ce=(0,a.useMemo)(()=>(0,_s.sg)(async e=>{i(e.trim())},500),[i]),de=e=>{e.preventDefault();const{name:t,value:n}=e.target;g(e=>(0,It.A)((0,It.A)({},e),{},{[t]:n})),"pattern"!==t||s||ce(n)},pe=e=>{e.preventDefault(),s?c(!0):o(!1),p({}),g(h)},he="*"!==(null===n||void 0===n?void 0:n.pattern)&&(0,Je.jsx)(dx,{value:Qi.WL9,children:Qi.WL9},Qi.WL9);return(0,Je.jsx)("form",{onSubmit:e=>{e.preventDefault();const t={};A.trim()||(t.pattern=l("error_cant_be_blank")),(e=>{for(const t of r.list)if(t.pattern===e&&(null===n||void 0===n?void 0:n.pattern)!==e)return!0;return!1})(A)&&(t.pattern=l("error_duplicate_values")),"*"!==A||t.pattern||D.trim()||(t.selector=l("error_cant_be_blank")),Object.keys(t).length>0?p(t):s?(c(!0),r.put(n.pattern,m)):(r.add(m),o(!1),g(h))},children:(0,Je.jsxs)(vm,{spacing:2,children:[(0,Je.jsx)(mb,{size:"small",label:l("pattern"),error:!!d.pattern,helperText:d.pattern||l("pattern_helper"),name:"pattern",value:A,disabled:"*"===(null===n||void 0===n?void 0:n.pattern)||u,onChange:de,onFocus:ue}),(0,Je.jsx)(mb,{size:"small",label:l("root_selector"),helperText:l("root_selector_helper"),name:"rootsSelector",value:S,disabled:u,onChange:de}),(0,Je.jsx)(mb,{size:"small",label:l("ignore_selector"),helperText:l("ignore_selector_helper"),name:"ignoreSelector",value:E,disabled:u,onChange:de}),(0,Je.jsx)(mb,{size:"small",label:l("target_selector"),error:!!d.selector,helperText:d.selector||l("selector_helper"),name:"selector",value:D,disabled:"true"===K||u,onChange:de,onFocus:ue}),(0,Je.jsx)(mb,{size:"small",label:l("keep_selector"),helperText:l("keep_selector_helper"),name:"keepSelector",value:k,disabled:u,onChange:de}),(0,Je.jsx)(mb,{size:"small",label:l("block_selector"),helperText:l("block_selector_helper"),name:"blockSelector",value:w,disabled:u,onChange:de}),(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"transOpen",value:V,label:l("translate_switch"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"true",children:l("default_enabled")}),(0,Je.jsx)(dx,{value:"false",children:l("default_disabled")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"apiSlug",value:N,label:l("translate_service"),disabled:u,onChange:de,children:[he,b.map(e=>(0,Je.jsx)(dx,{value:e.apiSlug,children:e.apiName},e.apiSlug))]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"fromLang",value:O,label:l("from_lang"),disabled:u,onChange:de,children:[he,Qi.UF6.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"toLang",value:B,label:l("to_lang"),disabled:u,onChange:de,children:[he,Qi.$QD.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"autoScan",value:K,label:l("auto_scan_page"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"false",children:l("disable")}),(0,Je.jsx)(dx,{value:"true",children:l("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"hasRichText",value:$,label:l("has_rich_text"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"false",children:l("disable")}),(0,Je.jsx)(dx,{value:"true",children:l("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"hasShadowroot",value:Y,label:l("has_shadowroot"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"false",children:l("disable")}),(0,Je.jsx)(dx,{value:"true",children:l("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"scanAll",value:X,label:l("scan_all_nodes"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"false",children:l("disable")}),(0,Je.jsx)(dx,{value:"true",children:l("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"isPlainText",value:Q,label:l("plain_text_translate"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"false",children:l("disable")}),(0,Je.jsx)(dx,{value:"true",children:l("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"transOnly",value:H,label:l("show_only_translations"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"false",children:l("disable")}),(0,Je.jsx)(dx,{value:"true",children:l("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"transOrder",value:ae,label:l("trans_order"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"original-first",children:l("original_first")}),(0,Je.jsx)(dx,{value:"translation-first",children:l("translation_first")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"wrapOriginal",value:W,label:l("wrap_original"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"false",children:l("disable")}),(0,Je.jsx)(dx,{value:"true",children:l("enable")})]})}),se&&(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"originalTextStyle",value:U,label:l("original_text_style"),disabled:u,onChange:de,children:[he,x.map(e=>(0,Je.jsx)(dx,{value:e.styleSlug,children:e.styleName},e.styleSlug))]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"transOnlyRevert",value:G,label:l("transonly_revert"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"false",children:l("disable")}),(0,Je.jsx)(dx,{value:"true",children:l("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{size:"small",fullWidth:!0,name:"transOnlyRevertDelay",value:q,label:l("transonly_revert_delay"),disabled:u,onChange:de,type:"number",inputProps:{min:0,step:.1}})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"splitParagraph",value:ne,label:l("split_paragraph"),disabled:u,onChange:de,children:[he,Qi._E_.map(e=>(0,Je.jsx)(dx,{value:e,children:l(e)},e))]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:l("split_length"),type:"number",name:"splitLength",value:re,disabled:u,onChange:de,min:0,max:1e3})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"highlightWords",value:oe,label:l("highlight_words"),disabled:u,onChange:de,children:[he,Qi.p1w.map(e=>(0,Je.jsx)(dx,{value:e,children:l(e)},e))]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"transTitle",value:Z,label:l("translate_page_title"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"false",children:l("disable")}),(0,Je.jsx)(dx,{value:"true",children:l("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"transTag",value:J,label:l("translation_element_tag"),disabled:u,onChange:de,children:[he,(0,Je.jsx)(dx,{value:"span",children:""}),(0,Je.jsx)(dx,{value:"font",children:""})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"textStyle",value:M,label:l("text_style"),disabled:u,onChange:de,children:[he,x.map(e=>(0,Je.jsx)(dx,{value:e.styleSlug,children:e.styleName},e.styleSlug))]})})]})}),v&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(hb,{size:"small",label:l("terms"),helperText:l("terms_helper"),name:"terms",value:_,disabled:u,onChange:de,multiline:!0,maxRows:10}),(0,Je.jsx)(hb,{size:"small",label:l("ai_terms"),helperText:l("ai_terms_helper"),name:"aiTerms",value:C,disabled:u,onChange:de,multiline:!0,maxRows:10}),(0,Je.jsx)(mb,{size:"small",label:l("terms_style"),name:"termsStyle",value:F,disabled:u,onChange:de,maxRows:10}),(0,Je.jsx)(mb,{size:"small",label:l("highlight_style"),name:"highlightStyle",value:T,disabled:u,onChange:de,maxRows:10}),(0,Je.jsx)(mb,{size:"small",label:l("text_ext_style"),name:"textExtStyle",value:j,disabled:u,onChange:de,maxRows:10}),(0,Je.jsx)(mb,{size:"small",label:l("selector_style"),name:"selectStyle",value:z,disabled:u,onChange:de,maxRows:10}),(0,Je.jsx)(mb,{size:"small",label:l("selector_parent_style"),name:"parentStyle",value:I,disabled:u,onChange:de,maxRows:10}),(0,Je.jsx)(mb,{size:"small",label:l("selector_grand_style"),name:"grandStyle",value:L,disabled:u,onChange:de,maxRows:10}),(0,Je.jsx)(mb,{size:"small",label:l("translate_start_hook"),helperText:l("translate_start_hook_helper"),name:"transStartHook",value:ee,disabled:u,onChange:de,maxRows:10}),(0,Je.jsx)(mb,{size:"small",label:l("translate_end_hook"),helperText:l("translate_end_hook_helper"),name:"transEndHook",value:te,disabled:u,onChange:de,maxRows:10}),(0,Je.jsx)(mb,{size:"small",label:l("inject_css"),helperText:l("inject_css_helper"),name:"injectCss",value:R,disabled:u,onChange:de,maxRows:10}),(0,Je.jsx)(mb,{size:"small",label:l("inject_js"),helperText:l("inject_js_helper"),name:"injectJs",value:P,disabled:u,onChange:de,maxRows:10})]}),r&&(s?(0,Je.jsxs)(vm,{direction:"row",spacing:2,children:[u?(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(Eb,{size:"small",variant:"contained",onClick:e=>{e.preventDefault(),c(!1)},startIcon:(0,Je.jsx)(jD.A,{}),children:l("edit")}),"*"!==(null===n||void 0===n?void 0:n.pattern)&&(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:e=>{e.preventDefault(),r.del(n.pattern)},startIcon:(0,Je.jsx)(KA.A,{}),children:l("delete")})]}):(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(Eb,{size:"small",variant:"contained",type:"submit",startIcon:(0,Je.jsx)(ID.A,{}),disabled:!le,children:l("save")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:pe,startIcon:(0,Je.jsx)(zD.A,{}),children:l("cancel")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:e=>{e.preventDefault(),g(e=>{let{pattern:t}=e;return(0,It.A)((0,It.A)({},"*"===t?Qi.lNu:Qi.NGo),{},{pattern:t})})},children:l("restore_default")})]}),(0,Je.jsx)(WD,{showMore:v,onChange:y})]}):(0,Je.jsxs)(vm,{direction:"row",spacing:2,children:[(0,Je.jsx)(Eb,{size:"small",variant:"contained",type:"submit",startIcon:(0,Je.jsx)(ID.A,{}),children:l("save")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:pe,startIcon:(0,Je.jsx)(zD.A,{}),children:l("cancel")}),(0,Je.jsx)(WD,{showMore:v,onChange:y})]}))]})})}function Mk(e){let{rule:t,rules:n,sourceUrl:r,isExpanded:o=!1}=e;const i=Hf(),[s,l]=(0,a.useState)(o),u=!!n&&t.pattern!==Qi.WL9,c=!n,d=!u||!1!==t.enabled,[p,h]=(0,a.useState)(!1),f=fD();(0,a.useEffect)(()=>{if(!n){if(!r)return;(async()=>{try{const e=await(0,Ji.Sh)(r);h(Array.isArray(e)&&e.includes(t.pattern))}catch(e){(0,Zi.h9)("getDisabledSubRules",e)}})()}},[t,n,r]);const m=e=>{e.stopPropagation()},g=u?d?1:.5:n?1:.5;return(0,Je.jsxs)(Mb,{expanded:s,onChange:e=>{l(e=>!e)},children:[(0,Je.jsx)(Kb,{expandIcon:(0,Je.jsx)(Jb.A,{}),children:(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:1,sx:{width:"100%"},children:[u&&(0,Je.jsx)(Hx,{size:"small",checked:d,inputProps:{"aria-label":"Toggle personal rule ".concat(t.pattern)},onPointerDown:m,onClick:m,onChange:e=>{const r=e.target.checked;n.put(t.pattern,{enabled:r}),f.success(i(r?"rule_enabled":"rule_disabled"))}}),c&&(0,Je.jsx)(Hx,{size:"small",checked:!p,onPointerDown:m,onClick:m,onChange:async e=>{const n=!e.target.checked;try{const e=await(0,Ji.Sh)(r),o=new Set(Array.isArray(e)?e:[]);n?o.add(t.pattern):o.delete(t.pattern),await(0,Ji.WV)(r,[...o]),h(n),f.success(i(n?"rule_disabled":"rule_enabled"))}catch(o){(0,Zi.h9)("toggle disabled sub rule",o),f.error(i("rule_toggle_failed"))}}}),(0,Je.jsx)(gf,{sx:{opacity:g,overflowWrap:"anywhere",flex:1},children:t.pattern===Qi.WL9?"[".concat(i("global_rule"),"] ").concat(t.pattern):t.pattern})]})}),(0,Je.jsx)(Qb,{children:s&&(0,Je.jsx)(Bk,{rule:t,rules:n})})]})}function Wk(e){let{rules:t,injectRules:n,selectedUrl:r}=e;const o=fD(),a=Hf();return(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:async()=>{try{const{syncType:e,syncUrl:i,syncKey:s}=await(0,Ji.Xn)();if(e!==Qi.B7y||!i||!s)return void o.warning(a("error_sync_setting"));const l=[...t.list];if(n){const e=await tx(r);l.splice(-1,0,...e)}const u=await(async e=>{let{rules:t,syncUrl:n,syncKey:r}=e;const o={key:Qi.Wi5,value:JSON.stringify(t,null,2),updateAt:Date.now()},a={syncUrl:n,syncKey:r};await $h(o,a);const i=await(0,_s.$Q)(r,Qi.znP);return"".concat(n,"/rules?psk=").concat(i)})({rules:l,syncUrl:i,syncKey:s});window.open(u,"_blank")}catch(e){o.warning(a("error_got_some_wrong")),(0,Zi.h9)("share rules",e)}},startIcon:(0,Je.jsx)($A.A,{}),children:a("share")})}function Uk(e){let{subRules:t,rules:n}=e;const r=Hf(),[o,i]=(0,a.useState)(!1),{setting:s,updateSetting:l}=Rf(),[u,c]=(0,a.useState)(""),d=gk(),p=!(null===s||void 0===s||!s.injectRules),{selectedUrl:h,selectedRules:f}=t;if((0,a.useEffect)(()=>{o||c("")},[o]),n.list)return(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,useFlexGap:!0,flexWrap:"wrap",children:[(0,Je.jsx)(Eb,{size:"small",variant:"contained",disabled:o,onClick:e=>{e.preventDefault(),i(!0)},startIcon:(0,Je.jsx)(TD.A,{}),children:r("add")}),(0,Je.jsx)(FD,{text:r("import"),handleImport:async e=>{try{await n.merge(JSON.parse(e))}catch(t){(0,Zi.h9)("import rules",t)}}}),(0,Je.jsx)(_D,{handleData:()=>JSON.stringify([...n.list],null,2),text:r("export"),fileName:"kiss-rules_v2_".concat(Date.now(),".json")}),(0,Je.jsx)(Wk,{rules:n,injectRules:p,selectedUrl:h}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:async()=>{await d({confirmText:r("confirm_title"),cancelText:r("cancel")})&&n.clear()},startIcon:(0,Je.jsx)(mD.A,{}),children:r("clear_all")}),(0,Je.jsx)(vD,{url:Qi.qim}),(0,Je.jsx)(Fx,{control:(0,Je.jsx)(Hx,{size:"small",checked:p,onChange:()=>{l({injectRules:!p})}}),label:r("inject_rules")})]}),o&&(0,Je.jsx)(Bk,{rules:n,setShow:i,setKeyword:c}),(0,Je.jsx)(st,{children:n.list.filter(e=>"*"!==e.pattern&&(e.pattern.includes(u)||u.includes(e.pattern))).map(e=>(0,Je.jsx)(Mk,{rule:e,rules:n},e.pattern))}),p&&(0,Je.jsx)(st,{children:f.filter(e=>e.pattern.includes(u)||u.includes(e.pattern)).map(e=>(0,Je.jsx)(Mk,{rule:e,sourceUrl:h},e.pattern))})]})}function Vk(e){let{index:t,url:n,syncAt:r,selectedUrl:o,delSub:i,setSelectedRules:s,updateDataCache:l,deleteDataCache:u}=e;const[c,d]=(0,a.useState)(!1),p=fD();return(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,children:[(0,Je.jsx)(Fx,{value:n,control:(0,Je.jsx)(OA,{}),sx:{overflowWrap:"anywhere"},label:n}),r&&(0,Je.jsxs)("span",{style:{marginLeft:"0.5em",opacity:.5},children:["[",new Date(r).toLocaleString(),"]"]}),c?(0,Je.jsx)(zt,{size:16}):(0,Je.jsx)(Ri,{size:"small",onClick:async()=>{try{d(!0);const e=await ex(n);e.length>0&&n===o&&s(e),await l(n)}catch(e){(0,Zi.h9)("sync sub rules",e),p.error((0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)("p",{children:"Sync Error:"}),(0,Je.jsx)("pre",{children:e.message})]}))}finally{d(!1)}},"aria-label":"Sync subscription ".concat(n),children:(0,Je.jsx)(YA.A,{fontSize:"small"})}),0!==t&&o!==n&&(0,Je.jsx)(Ri,{size:"small",onClick:async()=>{try{await i(n),await(0,Ji.dF)(n),await u(n);try{await(0,Ji.Q1)(n)}catch(e){(0,Zi.h9)("removeDisabledSubRules",e)}}catch(e){(0,Zi.h9)("del subrules",e)}},"aria-label":"Delete subscription ".concat(n),children:(0,Je.jsx)(KA.A,{fontSize:"small"})})]})}function Hk(e){let{subList:t,addSub:n,updateDataCache:r}=e;const o=Hf(),[i,s]=(0,a.useState)(""),[l,u]=(0,a.useState)(""),[c,d]=(0,a.useState)(!1),[p,h]=(0,a.useState)(!1);return(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,children:[(0,Je.jsx)(Eb,{size:"small",variant:"contained",disabled:c,onClick:e=>{e.preventDefault(),d(!0)},startIcon:(0,Je.jsx)(TD.A,{}),children:o("add")}),(0,Je.jsx)(vD,{url:Qi.qim})]}),c&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(hb,{size:"small",value:i,error:!!l,helperText:l,onChange:e=>{e.preventDefault(),s(e.target.value)},onFocus:e=>{e.preventDefault(),u("")},label:o("subscribe_url")}),(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,children:[(0,Je.jsx)(Eb,{size:"small",variant:"contained",onClick:async e=>{e.preventDefault();const a=i.trim();if(a)if(t.some(e=>e.url===a))u(o("error_duplicate_values"));else try{h(!0);if(0===(await ex(a)).length)throw new Error("empty rules");await n(a),await r(a),d(!1),s("")}catch(l){(0,Zi.h9)("fetch rules",l),u(o("error_fetch_url"))}finally{h(!1)}else u(o("error_cant_be_blank"))},disabled:p,startIcon:(0,Je.jsx)(ID.A,{}),children:o("save")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:e=>{e.preventDefault(),d(!1),s(""),u("")},startIcon:(0,Je.jsx)(zD.A,{}),children:o("cancel")})]})]})]})}function Gk(e){let{subRules:t}=e;const{subList:n,selectSub:r,addSub:o,delSub:i,selectedUrl:s,selectedRules:l,setSelectedRules:u,loading:c}=t,{dataCaches:d,updateDataCache:p,deleteDataCache:h}=function(){const{sync:e,updateSync:t,reloadSync:n}=yD(),r=(0,a.useCallback)(e=>{t(t=>({dataCaches:(0,It.A)((0,It.A)({},(null===t||void 0===t?void 0:t.dataCaches)||{}),{},{[e]:Date.now()})}))},[t]),o=(0,a.useCallback)(e=>{t(t=>{const n=(0,It.A)({},(null===t||void 0===t?void 0:t.dataCaches)||{});return delete n[e],{dataCaches:n}})},[t]);return{dataCaches:(0,a.useMemo)(()=>(null===e||void 0===e?void 0:e.dataCaches)||{},[null===e||void 0===e?void 0:e.dataCaches]),updateDataCache:r,deleteDataCache:o,reloadSync:n}}();return(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsx)(Hk,{subList:n,addSub:o,updateDataCache:p}),(0,Je.jsx)(qA,{value:s,onChange:e=>{const t=e.target.value;r(t)},children:n.map((e,t)=>(0,Je.jsx)(Vk,{url:e.url,syncAt:d[e.url],index:t,selectedUrl:s,delSub:i,setSelectedRules:u,updateDataCache:p,deleteDataCache:h},e.url))}),(0,Je.jsx)(st,{children:c?(0,Je.jsx)("center",{children:(0,Je.jsx)(zt,{})}):l.map(e=>(0,Je.jsx)(Mk,{rule:e,sourceUrl:s},e.pattern))})]})}function qk(e){let{rules:t}=e;const n=(0,a.useMemo)(()=>t.list[t.list.length-1],[t.list]);if(n)return(0,Je.jsx)(vm,{spacing:3,children:(0,Je.jsx)(Mk,{rule:n,rules:t,isExpanded:!0},n.pattern)})}function Kk(){const e=Hf(),[t,n]=(0,a.useState)(0),r=function(){const[e,t]=(0,a.useState)(!1),[n,r]=(0,a.useState)([]),{setting:o,updateSetting:i}=Rf(),s=(null===o||void 0===o?void 0:o.subrulesList)||Qi.NxJ,l=(0,a.useMemo)(()=>s.find(e=>e.selected),[s]),u=l?l.url:"",c=(0,a.useCallback)(e=>{i(t=>(0,It.A)((0,It.A)({},t),{},{subrulesList:t.subrulesList.map(t=>(0,It.A)((0,It.A)({},t),{},{selected:t.url===e}))}))},[i]),d=(0,a.useCallback)(e=>{i(t=>(0,It.A)((0,It.A)({},t),{},{subrulesList:[...t.subrulesList,{url:e,selected:!1}]}))},[i]),p=(0,a.useCallback)(e=>{i(t=>(0,It.A)((0,It.A)({},t),{},{subrulesList:t.subrulesList.filter(t=>t.url!==e)}))},[i]);return(0,a.useEffect)(()=>{(async()=>{if(u)try{t(!0);const e=await tx(u);r(e)}catch(e){(0,Zi.h9)("loadOrFetchSubRules",e)}finally{t(!1)}else r([])})()},[u]),{subList:s,selectSub:c,addSub:d,delSub:p,selectedSub:l,selectedUrl:u,selectedRules:n,setSelectedRules:r,loading:e}}(),o=function(){const{data:e=[],save:t}=uf(Qi.iPC,Qi.ckw,Qi.Ed3),n=(0,a.useCallback)(e=>{t(e),(0,Ji.GY)(Qi.Ed3)},[t]);return{list:e,add:(0,a.useCallback)(e=>{n(t=>"*"===e.pattern||t.some(t=>t.pattern===e.pattern)?t:[e,...t])},[n]),del:(0,a.useCallback)(e=>{n(t=>"*"===e?t:t.filter(t=>t.pattern!==e))},[n]),clear:(0,a.useCallback)(()=>{n(e=>e.filter(e=>"*"===e.pattern))},[n]),put:(0,a.useCallback)((e,t)=>{n(n=>n.map(n=>n.pattern===e?(0,It.A)((0,It.A)({},n),t):n))},[n]),merge:(0,a.useCallback)(e=>{n(t=>{const n=nx(e);if(0===n.length)return t;const r=new Map(n.map(e=>[e.pattern,e])),o=new Set(t.map(e=>e.pattern)),a=t.map(e=>r.get(e.pattern)||e);return[...n.filter(e=>!o.has(e.pattern)),...a]})},[n])}}();return(0,Je.jsx)(st,{children:(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsxs)(Xi,{severity:"info",children:[e("rules_warn_1"),(0,Je.jsx)("br",{}),e("rules_warn_2"),(0,Je.jsx)("br",{}),e("rules_warn_3")]}),(0,Je.jsx)(st,{sx:{borderBottom:1,borderColor:"divider"},children:(0,Je.jsxs)(vA,{value:t,onChange:(e,t)=>{n(t)},children:[(0,Je.jsx)(DA,{label:e("global_rule")}),(0,Je.jsx)(DA,{label:e("personal_rules")}),(0,Je.jsx)(DA,{label:e("subscribe_rules")})]})}),(0,Je.jsx)("div",{hidden:0!==t,children:0===t&&(0,Je.jsx)(qk,{rules:o})}),(0,Je.jsx)("div",{hidden:1!==t,children:1===t&&(0,Je.jsx)(Uk,{subRules:r,rules:o})}),(0,Je.jsx)("div",{hidden:2!==t,children:2===t&&(0,Je.jsx)(Gk,{subRules:r})})]})})}var $k=n(1397);const Yk=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:()=>{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:window;const r=new Set,o=t=>{t.code&&(r.has(t.code)||(r.add(t.code),e(new Set(r),t)))},a=e=>{e.code&&(t(new Set(r),e),r.delete(e.code))},i=()=>{r.clear()};return n.addEventListener("keydown",o,!0),n.addEventListener("keyup",a,!0),window.addEventListener("blur",i),()=>{n.removeEventListener("keydown",o,!0),n.removeEventListener("keyup",a,!0),window.removeEventListener("blur",i),r.clear()}};function Xk(e){let{value:t,onChange:n,label:r,helperText:o}=e;const[i,s]=(0,a.useState)(!1),[l,u]=(0,a.useState)([]),c=(0,a.useRef)(null),d=Hf(),p=()=>{n(l),s(!1)};(0,a.useEffect)(()=>{if(!i)return;const e=c.current;e&&e.focus();const t=Yk((e,t)=>{t.preventDefault(),t.stopPropagation(),u([...e])});return()=>{t()}},[i]);const h=(i?l:t).map(e=>" "===e?"Space":e).join(" + ");return(0,Je.jsxs)(vm,{direction:"row",alignItems:"flex-start",children:[(0,Je.jsx)(hb,{size:"small",label:r,name:r,value:h,fullWidth:!0,inputRef:c,disabled:!i,onBlur:()=>{p()},helperText:i?d("pls_press_shortcut"):o}),i?(0,Je.jsx)(Ri,{onClick:p,color:"primary",children:(0,Je.jsx)($k.A,{})}):(0,Je.jsx)(Ri,{onClick:()=>{u([]),s(!0)},children:(0,Je.jsx)(jD.A,{})})]})}const Qk={hideExceptionList:""};function Jk(e){let{action:t,label:n}=e;const{shortcut:r,setShortcut:o}=function(e){const{setting:t,updateSetting:n}=Rf();return{shortcut:((null===t||void 0===t?void 0:t.shortcuts)||Qi.Au$)[e]||[],setShortcut:(0,a.useCallback)(t=>{n(n=>(0,It.A)((0,It.A)({},n),{},{shortcuts:(0,It.A)((0,It.A)({},(null===n||void 0===n?void 0:n.shortcuts)||{}),{},{[e]:t})}))},[e,n])}}(t);return(0,Je.jsx)(Xk,{value:r,onChange:o,label:n})}function Zk(){const[e,t]=(0,a.useState)([]);if((0,a.useEffect)(()=>{var e;null!==zu.T&&void 0!==zu.T&&null!==(e=zu.T.commands)&&void 0!==e&&e.getAll&&zu.T.commands.getAll().then(e=>{e&&t(e.filter(e=>e.description))}).catch(e=>{console.error("fetch commands error:",e)})},[]),!e||0===e.length)return null;const n=()=>{var e;let t="chrome://extensions/shortcuts";const n=navigator.userAgent;n.includes("Edg/")?t="edge://extensions/shortcuts":n.includes("Firefox/")?t="about:addons":n.includes("OPR/")?t="opera://extensions/shortcuts":n.includes("Brave/")&&(t="brave://extensions/shortcuts"),null!==zu.T&&void 0!==zu.T&&null!==(e=zu.T.tabs)&&void 0!==e&&e.create?zu.T.tabs.create({url:t}):window.open(t,"_blank")};return(0,Je.jsx)(st,{children:(0,Je.jsx)(kx,{container:!0,spacing:2,columns:12,children:e.map(e=>(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(vm,{direction:"row",alignItems:"flex-start",children:[(0,Je.jsx)(hb,{size:"small",label:e.description,value:e.shortcut||"",fullWidth:!0,disabled:!0}),(0,Je.jsx)(Ri,{onClick:n,children:(0,Je.jsx)(jD.A,{})})]})},e.name))})})}function ew(){const e=Hf(),{setting:t,updateSetting:n}=Rf(),r=fD(),{fab:o,updateFab:a}=function(){const{data:e,update:t}=uf(Qi.yi6,Qk);return{fab:e,updateFab:t}}(),i=e=>{e.preventDefault();let{name:t,value:r}=e.target;switch(t){case"contextMenuType":Fs.aQ&&(0,Ts.Ru)(Qi.DR0,r);break;case"csplist":Fs.aQ&&(0,Ts.Ru)(Qi.TY1,{csplist:r});break;case"orilist":Fs.aQ&&(0,Ts.Ru)(Qi.TY1,{orilist:r})}n({[t]:r})},{uiLang:s,minLength:l,maxLength:u,clearCache:c,newlineLength:d=Qi.Zzg,httpTimeout:p=Qi.$Kd,contextMenuType:h=1,touchModes:f=[2],blacklist:m=Qi.mP$.join(",\n"),csplist:g=Qi.dXG.join(",\n"),orilist:v=Qi.tEF.join(",\n"),transInterval:y=100,langDetector:b="-",logLevel:x=1,preInit:A=!0,skipLangs:D=[]}=t,{isHide:k=!1,fabClickAction:w=0,hideExceptionList:S=""}=o||{};return(0,Je.jsx)(st,{children:(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,useFlexGap:!0,flexWrap:"wrap",children:[(0,Je.jsx)(FD,{text:e("import"),handleImport:async e=>{try{n(JSON.parse(e))}catch(t){(0,Zi.h9)("import setting",t)}}}),(0,Je.jsx)(_D,{handleData:()=>JSON.stringify(t,null,2),text:e("export"),fileName:"kiss-setting_v2_".concat(Date.now(),".json")})]}),(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"uiLang",value:s,label:e("ui_lang"),onChange:i,children:Qi.vzt.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"preInit",value:A,label:e("if_pre_init"),onChange:i,children:[(0,Je.jsx)(dx,{value:!0,children:e("enable")}),(0,Je.jsx)(dx,{value:!1,children:e("disable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"fabClickAction",value:w,label:e("fab_click_action"),onChange:e=>a({fabClickAction:e.target.value}),children:[(0,Je.jsx)(dx,{value:0,children:e("fab_click_menu")}),(0,Je.jsx)(dx,{value:1,children:e("fab_click_translate")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("min_translate_length"),type:"number",name:"minLength",value:l,onChange:i,min:1,max:100})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("max_translate_length"),type:"number",name:"maxLength",value:u,onChange:i,min:100,max:1e5})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("num_of_newline_characters"),type:"number",name:"newlineLength",value:d,onChange:i,min:1,max:1e3})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("translate_interval"),type:"number",name:"transInterval",value:y,onChange:i,min:1,max:2e3})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("http_timeout"),type:"number",name:"httpTimeout",value:p,onChange:i,min:1,max:600})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"touchModes",value:f,label:e("touch_translate_shortcut"),onChange:i,SelectProps:{multiple:!0},children:[0,2,3,4,5,6,7].map(t=>(0,Je.jsx)(dx,{value:t,children:e("touch_tap_".concat(t))},t))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"contextMenuType",value:h,label:e("context_menus"),onChange:i,children:[(0,Je.jsx)(dx,{value:0,children:e("hide_context_menus")}),(0,Je.jsx)(dx,{value:1,children:e("simple_context_menus")}),(0,Je.jsx)(dx,{value:2,children:e("secondary_context_menus")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"langDetector",value:b,label:e("detected_lang"),onChange:i,children:[(0,Je.jsx)(dx,{value:"-",children:e("disable")}),Qi.HHP.map(e=>(0,Je.jsx)(dx,{value:e,children:e},e))]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"logLevel",value:x,label:e("log_level"),onChange:i,children:Object.values(Zi.$b).map(e=>{let{value:t,name:n}=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})})]})}),(0,Je.jsx)(hb,{select:!0,size:"small",label:e("skip_langs"),helperText:e("skip_langs_helper"),name:"skipLangs",value:D,onChange:i,SelectProps:{multiple:!0},children:Qi.$QD.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})}),(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"isHide",value:k,label:e("hide_fab_button"),onChange:e=>{a({isHide:e.target.value})},children:[(0,Je.jsx)(dx,{value:!1,children:e("show")}),(0,Je.jsx)(dx,{value:!0,children:e("hide")})]}),(0,Je.jsx)(hb,{fullWidth:!0,size:"small",multiline:!0,maxRows:10,name:"hideExceptionList",value:S,label:e("fab_exception_list"),helperText:e("fab_exception_list_helper"),onChange:e=>a({hideExceptionList:e.target.value})}),(0,Je.jsx)(hb,{size:"small",label:e("translate_blacklist"),helperText:e("pattern_helper"),name:"blacklist",value:m,onChange:i,maxRows:10,multiline:!0}),Fs.aQ?(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"clearCache",value:c,label:e("if_clear_cache"),onChange:i,helperText:(0,Je.jsx)(Sf,{component:"button",onClick:()=>{try{caches.delete(Qi.bzl),r.success(e("clear_success"))}catch(t){(0,Zi.h9)("clear cache",t)}},children:e("clear_all_cache_now")}),children:[(0,Je.jsx)(dx,{value:!1,children:e("clear_cache_never")}),(0,Je.jsx)(dx,{value:!0,children:e("clear_cache_restart")})]}),(0,Je.jsx)(hb,{size:"small",label:e("disabled_orilist"),helperText:e("pattern_helper"),name:"orilist",value:v,onChange:i,multiline:!0}),(0,Je.jsx)(hb,{size:"small",label:e("disabled_csplist"),helperText:e("pattern_helper")+" "+e("disabled_csplist_helper"),name:"csplist",value:g,onChange:i,multiline:!0}),(0,Je.jsx)(Zk,{})]}):(0,Je.jsx)(Je.Fragment,{children:(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(Jk,{action:Qi.IFN,label:e("toggle_translate_shortcut")})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(Jk,{action:Qi.yzF,label:e("toggle_transonly_shortcut")})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(Jk,{action:Qi.T2s,label:e("toggle_style_shortcut")})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(Jk,{action:Qi.aqb,label:e("toggle_popup_shortcut")})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(Jk,{action:Qi.CxD,label:e("open_setting_shortcut")})})]})})})]})})}function tw(e,t,n,r,o){const[i,s]=a.useState(()=>o&&n?n(e).matches:r?r(e).matches:t);return(0,Dm.A)(()=>{let t=!0;if(!n)return;const r=n(e),o=()=>{t&&s(r.matches)};return o(),r.addListener(o),()=>{t=!1,r.removeListener(o)}},[e,n]),i}const nw=i.useSyncExternalStore;function rw(e,t,n,r,o){const i=a.useCallback(()=>t,[t]),s=a.useMemo(()=>{if(o&&n)return()=>n(e).matches;if(null!==r){const{matches:t}=r(e);return()=>t}return i},[i,e,r,o,n]),[l,u]=a.useMemo(()=>{if(null===n)return[i,()=>()=>{}];const t=n(e);return[()=>t.matches,e=>(t.addListener(e),()=>{t.removeListener(e)})]},[i,n,e]);return nw(u,l,s)}const ow=(e,t)=>(0,We.A)({WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",boxSizing:"border-box",WebkitTextSizeAdjust:"100%"},t&&!e.vars&&{colorScheme:e.palette.mode}),aw=e=>(0,We.A)({color:(e.vars||e).palette.text.primary},e.typography.body1,{backgroundColor:(e.vars||e).palette.background.default,"@media print":{backgroundColor:(e.vars||e).palette.common.white}});const iw=function(e){const t=(0,pt.b)({props:e,name:"MuiCssBaseline"}),{children:n,enableColorScheme:r=!1}=t;return(0,Je.jsxs)(a.Fragment,{children:[(0,Je.jsx)(Om,{styles:e=>function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var n;const r={};t&&e.colorSchemes&&Object.entries(e.colorSchemes).forEach(t=>{let[n,o]=t;var a;r[e.getColorSchemeSelector(n).replace(/\s*&/,"")]={colorScheme:null==(a=o.palette)?void 0:a.mode}});let o=(0,We.A)({html:ow(e,t),"*, *::before, *::after":{boxSizing:"inherit"},"strong, b":{fontWeight:e.typography.fontWeightBold},body:(0,We.A)({margin:0},aw(e),{"&::backdrop":{backgroundColor:(e.vars||e).palette.background.default}})},r);const a=null==(n=e.components)||null==(n=n.MuiCssBaseline)?void 0:n.styleOverrides;return a&&(o=[o,a]),o}(e,r)}),n]})},sw=["addEndListener","appear","children","container","direction","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function lw(e,t,n){var r;const o=function(e,t,n){const r=t.getBoundingClientRect(),o=n&&n.getBoundingClientRect(),a=(0,gv.A)(t);let i;if(t.fakeTransform)i=t.fakeTransform;else{const e=a.getComputedStyle(t);i=e.getPropertyValue("-webkit-transform")||e.getPropertyValue("transform")}let s=0,l=0;if(i&&"none"!==i&&"string"===typeof i){const e=i.split("(")[1].split(")")[0].split(",");s=parseInt(e[4],10),l=parseInt(e[5],10)}return"left"===e?"translateX(".concat(o?o.right+s-r.left:a.innerWidth+s-r.left,"px)"):"right"===e?"translateX(-".concat(o?r.right-o.left-s:r.left+r.width-s,"px)"):"up"===e?"translateY(".concat(o?o.bottom+l-r.top:a.innerHeight+l-r.top,"px)"):"translateY(-".concat(o?r.top-o.top+r.height-l:r.top+r.height-l,"px)")}(e,t,"function"===typeof(r=n)?r():r);o&&(t.style.webkitTransform=o,t.style.transform=o)}const uw=a.forwardRef(function(e,t){const n=Ev(),r={enter:n.transitions.easing.easeOut,exit:n.transitions.easing.sharp},o={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:i,appear:s=!0,children:l,container:u,direction:c="down",easing:d=r,in:p,onEnter:h,onEntered:f,onEntering:m,onExit:g,onExited:v,onExiting:y,style:b,timeout:x=o,TransitionComponent:A=Sv}=e,D=(0,Ue.A)(e,sw),k=a.useRef(null),w=(0,Ya.A)(Kg(l),k,t),S=e=>t=>{e&&(void 0===t?e(k.current):e(k.current,t))},E=S((e,t)=>{lw(c,e,u),_v(e),h&&h(e,t)}),_=S((e,t)=>{const r=Cv({timeout:x,style:b,easing:d},{mode:"enter"});e.style.webkitTransition=n.transitions.create("-webkit-transform",(0,We.A)({},r)),e.style.transition=n.transitions.create("transform",(0,We.A)({},r)),e.style.webkitTransform="none",e.style.transform="none",m&&m(e,t)}),C=S(f),F=S(y),T=S(e=>{const t=Cv({timeout:x,style:b,easing:d},{mode:"exit"});e.style.webkitTransition=n.transitions.create("-webkit-transform",t),e.style.transition=n.transitions.create("transform",t),lw(c,e,u),g&&g(e)}),j=S(e=>{e.style.webkitTransition="",e.style.transition="",v&&v(e)}),z=a.useCallback(()=>{k.current&&lw(c,k.current,u)},[c,u]);return a.useEffect(()=>{if(p||"down"===c||"right"===c)return;const e=(0,mv.A)(()=>{k.current&&lw(c,k.current,u)}),t=(0,gv.A)(k.current);return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}},[c,p,u]),a.useEffect(()=>{p||z()},[p,z]),(0,Je.jsx)(A,(0,We.A)({nodeRef:k,onEnter:E,onEntered:C,onEntering:_,onExit:T,onExited:j,onExiting:F,addEndListener:e=>{i&&i(k.current,e)},appear:s,in:p,timeout:x},D,{children:(e,t)=>a.cloneElement(l,(0,We.A)({ref:w,style:(0,We.A)({visibility:"exited"!==e||p?void 0:"hidden"},b,l.props.style)},t))}))}),cw=uw;function dw(e){return(0,ft.Ay)("MuiDrawer",e)}(0,rt.A)("MuiDrawer",["root","docked","paper","paperAnchorLeft","paperAnchorRight","paperAnchorTop","paperAnchorBottom","paperAnchorDockedLeft","paperAnchorDockedRight","paperAnchorDockedTop","paperAnchorDockedBottom","modal"]);const pw=["BackdropProps"],hw=["anchor","BackdropProps","children","className","elevation","hideBackdrop","ModalProps","onClose","open","PaperProps","SlideProps","TransitionComponent","transitionDuration","variant"],fw=(e,t)=>{const{ownerState:n}=e;return[t.root,("permanent"===n.variant||"persistent"===n.variant)&&t.docked,t.modal]},mw=(0,ht.Ay)(uy,{name:"MuiDrawer",slot:"Root",overridesResolver:fw})(e=>{let{theme:t}=e;return{zIndex:(t.vars||t).zIndex.drawer}}),gw=(0,ht.Ay)("div",{shouldForwardProp:Qm.A,name:"MuiDrawer",slot:"Docked",skipVariantsResolver:!1,overridesResolver:fw})({flex:"0 0 auto"}),vw=(0,ht.Ay)(qa,{name:"MuiDrawer",slot:"Paper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.paper,t["paperAnchor".concat((0,dt.A)(n.anchor))],"temporary"!==n.variant&&t["paperAnchorDocked".concat((0,dt.A)(n.anchor))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({overflowY:"auto",display:"flex",flexDirection:"column",height:"100%",flex:"1 0 auto",zIndex:(t.vars||t).zIndex.drawer,WebkitOverflowScrolling:"touch",position:"fixed",top:0,outline:0},"left"===n.anchor&&{left:0},"top"===n.anchor&&{top:0,left:0,right:0,height:"auto",maxHeight:"100%"},"right"===n.anchor&&{right:0},"bottom"===n.anchor&&{top:"auto",left:0,bottom:0,right:0,height:"auto",maxHeight:"100%"},"left"===n.anchor&&"temporary"!==n.variant&&{borderRight:"1px solid ".concat((t.vars||t).palette.divider)},"top"===n.anchor&&"temporary"!==n.variant&&{borderBottom:"1px solid ".concat((t.vars||t).palette.divider)},"right"===n.anchor&&"temporary"!==n.variant&&{borderLeft:"1px solid ".concat((t.vars||t).palette.divider)},"bottom"===n.anchor&&"temporary"!==n.variant&&{borderTop:"1px solid ".concat((t.vars||t).palette.divider)})}),yw={left:"right",right:"left",top:"down",bottom:"up"};const bw=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiDrawer"}),r=Ev(),o=Qg(),i={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{anchor:s="left",BackdropProps:l,children:u,className:c,elevation:d=16,hideBackdrop:p=!1,ModalProps:{BackdropProps:h}={},onClose:f,open:m=!1,PaperProps:g={},SlideProps:v,TransitionComponent:y=cw,transitionDuration:b=i,variant:x="temporary"}=n,A=(0,Ue.A)(n.ModalProps,pw),D=(0,Ue.A)(n,hw),k=a.useRef(!1);a.useEffect(()=>{k.current=!0},[]);const w=function(e,t){let{direction:n}=e;return"rtl"===n&&function(e){return-1!==["left","right"].indexOf(e)}(t)?yw[t]:t}({direction:o?"rtl":"ltr"},s),S=s,E=(0,We.A)({},n,{anchor:S,elevation:d,open:m,variant:x},D),_=(e=>{const{classes:t,anchor:n,variant:r}=e,o={root:["root"],docked:[("permanent"===r||"persistent"===r)&&"docked"],modal:["modal"],paper:["paper","paperAnchor".concat((0,dt.A)(n)),"temporary"!==r&&"paperAnchorDocked".concat((0,dt.A)(n))]};return(0,ut.A)(o,dw,t)})(E),C=(0,Je.jsx)(vw,(0,We.A)({elevation:"temporary"===x?d:0,square:!0},g,{className:(0,Ve.A)(_.paper,g.className),ownerState:E,children:u}));if("permanent"===x)return(0,Je.jsx)(gw,(0,We.A)({className:(0,Ve.A)(_.root,_.docked,c),ownerState:E,ref:t},D,{children:C}));const F=(0,Je.jsx)(y,(0,We.A)({in:m,direction:yw[w],timeout:b,appear:k.current},v,{children:C}));return"persistent"===x?(0,Je.jsx)(gw,(0,We.A)({className:(0,Ve.A)(_.root,_.docked,c),ownerState:E,ref:t},D,{children:F})):(0,Je.jsx)(mw,(0,We.A)({BackdropProps:(0,We.A)({},l,h,{transitionDuration:b}),className:(0,Ve.A)(_.root,_.modal,c),open:m,ownerState:E,onClose:f,hideBackdrop:p,ref:t},D,A,{children:F}))});function xw(e){return(0,ft.Ay)("MuiListItemButton",e)}const Aw=(0,rt.A)("MuiListItemButton",["root","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","selected"]),Dw=["alignItems","autoFocus","component","children","dense","disableGutters","divider","focusVisibleClassName","selected","className"],kw=(0,ht.Ay)(Ti,{shouldForwardProp:e=>(0,Qm.A)(e)||"classes"===e,name:"MuiListItemButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,"flex-start"===n.alignItems&&t.alignItemsFlexStart,n.divider&&t.divider,!n.disableGutters&&t.gutters]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({display:"flex",flexGrow:1,justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minWidth:0,boxSizing:"border-box",textAlign:"left",paddingTop:8,paddingBottom:8,transition:t.transitions.create("background-color",{duration:t.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(t.vars||t).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},["&.".concat(Aw.selected)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity),["&.".concat(Aw.focusVisible)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.focusOpacity,"))"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.focusOpacity)}},["&.".concat(Aw.selected,":hover")]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.hoverOpacity,"))"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity)}},["&.".concat(Aw.focusVisible)]:{backgroundColor:(t.vars||t).palette.action.focus},["&.".concat(Aw.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity}},n.divider&&{borderBottom:"1px solid ".concat((t.vars||t).palette.divider),backgroundClip:"padding-box"},"flex-start"===n.alignItems&&{alignItems:"flex-start"},!n.disableGutters&&{paddingLeft:16,paddingRight:16},n.dense&&{paddingTop:4,paddingBottom:4})}),ww=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiListItemButton"}),{alignItems:r="center",autoFocus:o=!1,component:i="div",children:s,dense:l=!1,disableGutters:u=!1,divider:c=!1,focusVisibleClassName:d,selected:p=!1,className:h}=n,f=(0,Ue.A)(n,Dw),m=a.useContext(tv),g=a.useMemo(()=>({dense:l||m.dense||!1,alignItems:r,disableGutters:u}),[r,m.dense,l,u]),v=a.useRef(null);(0,Im.A)(()=>{o&&v.current&&v.current.focus()},[o]);const y=(0,We.A)({},n,{alignItems:r,dense:g.dense,disableGutters:u,divider:c,selected:p}),b=(e=>{const{alignItems:t,classes:n,dense:r,disabled:o,disableGutters:a,divider:i,selected:s}=e,l={root:["root",r&&"dense",!a&&"gutters",i&&"divider",o&&"disabled","flex-start"===t&&"alignItemsFlexStart",s&&"selected"]},u=(0,ut.A)(l,xw,n);return(0,We.A)({},n,u)})(y),x=(0,Ya.A)(v,t);return(0,Je.jsx)(tv.Provider,{value:g,children:(0,Je.jsx)(kw,(0,We.A)({ref:x,href:f.href||f.to,component:(f.href||f.to)&&"div"===i?"button":i,focusVisibleClassName:(0,Ve.A)(b.focusVisible,d),ownerState:y,className:(0,Ve.A)(b.root,h)},f,{classes:b,children:s}))})}),Sw=["className"],Ew=(0,ht.Ay)("div",{name:"MuiListItemIcon",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"flex-start"===n.alignItems&&t.alignItemsFlexStart]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({minWidth:56,color:(t.vars||t).palette.action.active,flexShrink:0,display:"inline-flex"},"flex-start"===n.alignItems&&{marginTop:8})}),_w=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiListItemIcon"}),{className:r}=n,o=(0,Ue.A)(n,Sw),i=a.useContext(tv),s=(0,We.A)({},n,{alignItems:i.alignItems}),l=(e=>{const{alignItems:t,classes:n}=e,r={root:["root","flex-start"===t&&"alignItemsFlexStart"]};return(0,ut.A)(r,rx,n)})(s);return(0,Je.jsx)(Ew,(0,We.A)({className:(0,Ve.A)(l.root,r),ownerState:s,ref:t},o))}),Cw=["children","className","disableTypography","inset","primary","primaryTypographyProps","secondary","secondaryTypographyProps"],Fw=(0,ht.Ay)("div",{name:"MuiListItemText",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(ix.primary)]:t.primary},{["& .".concat(ix.secondary)]:t.secondary},t.root,n.inset&&t.inset,n.primary&&n.secondary&&t.multiline,n.dense&&t.dense]}})(e=>{let{ownerState:t}=e;return(0,We.A)({flex:"1 1 auto",minWidth:0,marginTop:4,marginBottom:4},t.primary&&t.secondary&&{marginTop:6,marginBottom:6},t.inset&&{paddingLeft:56})}),Tw=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiListItemText"}),{children:r,className:o,disableTypography:i=!1,inset:s=!1,primary:l,primaryTypographyProps:u,secondary:c,secondaryTypographyProps:d}=n,p=(0,Ue.A)(n,Cw),{dense:h}=a.useContext(tv);let f=null!=l?l:r,m=c;const g=(0,We.A)({},n,{disableTypography:i,inset:s,primary:!!f,secondary:!!m,dense:h}),v=(e=>{const{classes:t,inset:n,primary:r,secondary:o,dense:a}=e,i={root:["root",n&&"inset",a&&"dense",r&&o&&"multiline"],primary:["primary"],secondary:["secondary"]};return(0,ut.A)(i,ax,t)})(g);return null==f||f.type===gf||i||(f=(0,Je.jsx)(gf,(0,We.A)({variant:h?"body2":"body1",className:v.primary,component:null!=u&&u.variant?void 0:"span",display:"block"},u,{children:f}))),null==m||m.type===gf||i||(m=(0,Je.jsx)(gf,(0,We.A)({variant:"body2",className:v.secondary,color:"text.secondary",display:"block"},d,{children:m}))),(0,Je.jsxs)(Fw,(0,We.A)({className:(0,Ve.A)(v.root,o),ownerState:g,ref:t},p,{children:[f,m]}))});function jw(e){return(0,ft.Ay)("MuiToolbar",e)}(0,rt.A)("MuiToolbar",["root","gutters","regular","dense"]);const zw=["className","component","disableGutters","variant"],Iw=(0,ht.Ay)("div",{name:"MuiToolbar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disableGutters&&t.gutters,t[n.variant]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({position:"relative",display:"flex",alignItems:"center"},!n.disableGutters&&{paddingLeft:t.spacing(2),paddingRight:t.spacing(2),[t.breakpoints.up("sm")]:{paddingLeft:t.spacing(3),paddingRight:t.spacing(3)}},"dense"===n.variant&&{minHeight:48})},e=>{let{theme:t,ownerState:n}=e;return"regular"===n.variant&&t.mixins.toolbar}),Lw=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiToolbar"}),{className:r,component:o="div",disableGutters:a=!1,variant:i="regular"}=n,s=(0,Ue.A)(n,zw),l=(0,We.A)({},n,{component:o,disableGutters:a,variant:i}),u=(e=>{const{classes:t,disableGutters:n,variant:r}=e,o={root:["root",!n&&"gutters",r]};return(0,ut.A)(o,jw,t)})(l);return(0,Je.jsx)(Iw,(0,We.A)({as:o,className:(0,Ve.A)(u.root,r),ref:t,ownerState:l},s))});var Pw=n(2220),Rw=n(3701),Nw=n(1419),Ow=n(4825),Bw=n(9521),Mw=n(4514),Ww=n(7773),Uw=n(2994),Vw=n(6556),Hw=n(2944),Gw=n(4165),qw=n(7261);function Kw(e){let{label:t,url:n,icon:r}=e;const o=function(e){re()||p(!1);let{pathname:t}=oe();return a.useMemo(()=>I(e,L(t)),[t,e])}(n);return(0,Je.jsxs)(ww,{component:Ne,to:n,selected:!!o,children:[(0,Je.jsx)(_w,{children:r}),(0,Je.jsx)(Tw,{children:t})]})}function $w(e){const t=Hf(),n=[{id:"basic_setting",label:t("basic_setting"),url:"/",icon:(0,Je.jsx)(Pw.A,{})},{id:"rules_setting",label:t("rules_setting"),url:"/rules",icon:(0,Je.jsx)(Nw.A,{})},{id:"apis_setting",label:t("apis_setting"),url:"/apis",icon:(0,Je.jsx)(Ow.A,{})},{id:"prompt_management",label:t("prompt_management","\u63d0\u793a\u8bcd\u7ba1\u7406"),url:"/prompts",icon:(0,Je.jsx)(qw.A,{})},{id:"styles_setting",label:t("styles_setting"),url:"/styles",icon:(0,Je.jsx)(Hw.A,{})},{id:"sync",label:t("sync_setting"),url:"/sync",icon:(0,Je.jsx)(YA.A,{})},{id:"input_translate",label:t("input_translate"),url:"/input",icon:(0,Je.jsx)(Bw.A,{})},{id:"selection_translate",label:t("selection_translate"),url:"/tranbox",icon:(0,Je.jsx)(Mw.A,{})},{id:"mousehover_translate",label:t("mousehover_translate"),url:"/mousehover",icon:(0,Je.jsx)(Uw.A,{})},{id:"subtitle_translate",label:t("subtitle_translate"),url:"/subtitle",icon:(0,Je.jsx)(Vw.A,{})},{id:"words",label:t("favorite_words"),url:"/words",icon:(0,Je.jsx)(Ww.A,{})},{id:"playground",label:"Playground",url:"/playground",icon:(0,Je.jsx)(Gw.A,{})},{id:"about",label:t("about"),url:"/about",icon:(0,Je.jsx)(Rw.A,{})}];return(0,Je.jsxs)(bw,(0,It.A)((0,It.A)({},e),{},{children:[(0,Je.jsx)(Lw,{variant:"dense"}),(0,Je.jsx)(av,{component:"nav",children:n.map(e=>{let{id:t,label:n,url:r,icon:o}=e;return(0,Je.jsx)(Kw,{label:n,url:r,icon:o},t)})})]}))}function Yw(e){return(0,ft.Ay)("MuiAppBar",e)}(0,rt.A)("MuiAppBar",["root","positionFixed","positionAbsolute","positionSticky","positionStatic","positionRelative","colorDefault","colorPrimary","colorSecondary","colorInherit","colorTransparent","colorError","colorInfo","colorSuccess","colorWarning"]);const Xw=["className","color","enableColorOnDark","position"],Qw=(e,t)=>e?"".concat(null==e?void 0:e.replace(")",""),", ").concat(t,")"):t,Jw=(0,ht.Ay)(qa,{name:"MuiAppBar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["position".concat((0,dt.A)(n.position))],t["color".concat((0,dt.A)(n.color))]]}})(e=>{let{theme:t,ownerState:n}=e;const r="light"===t.palette.mode?t.palette.grey[100]:t.palette.grey[900];return(0,We.A)({display:"flex",flexDirection:"column",width:"100%",boxSizing:"border-box",flexShrink:0},"fixed"===n.position&&{position:"fixed",zIndex:(t.vars||t).zIndex.appBar,top:0,left:"auto",right:0,"@media print":{position:"absolute"}},"absolute"===n.position&&{position:"absolute",zIndex:(t.vars||t).zIndex.appBar,top:0,left:"auto",right:0},"sticky"===n.position&&{position:"sticky",zIndex:(t.vars||t).zIndex.appBar,top:0,left:"auto",right:0},"static"===n.position&&{position:"static"},"relative"===n.position&&{position:"relative"},!t.vars&&(0,We.A)({},"default"===n.color&&{backgroundColor:r,color:t.palette.getContrastText(r)},n.color&&"default"!==n.color&&"inherit"!==n.color&&"transparent"!==n.color&&{backgroundColor:t.palette[n.color].main,color:t.palette[n.color].contrastText},"inherit"===n.color&&{color:"inherit"},"dark"===t.palette.mode&&!n.enableColorOnDark&&{backgroundColor:null,color:null},"transparent"===n.color&&(0,We.A)({backgroundColor:"transparent",color:"inherit"},"dark"===t.palette.mode&&{backgroundImage:"none"})),t.vars&&(0,We.A)({},"default"===n.color&&{"--AppBar-background":n.enableColorOnDark?t.vars.palette.AppBar.defaultBg:Qw(t.vars.palette.AppBar.darkBg,t.vars.palette.AppBar.defaultBg),"--AppBar-color":n.enableColorOnDark?t.vars.palette.text.primary:Qw(t.vars.palette.AppBar.darkColor,t.vars.palette.text.primary)},n.color&&!n.color.match(/^(default|inherit|transparent)$/)&&{"--AppBar-background":n.enableColorOnDark?t.vars.palette[n.color].main:Qw(t.vars.palette.AppBar.darkBg,t.vars.palette[n.color].main),"--AppBar-color":n.enableColorOnDark?t.vars.palette[n.color].contrastText:Qw(t.vars.palette.AppBar.darkColor,t.vars.palette[n.color].contrastText)},!["inherit","transparent"].includes(n.color)&&{backgroundColor:"var(--AppBar-background)"},{color:"inherit"===n.color?"inherit":"var(--AppBar-color)"},"transparent"===n.color&&{backgroundImage:"none",backgroundColor:"transparent",color:"inherit"}))}),Zw=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiAppBar"}),{className:r,color:o="primary",enableColorOnDark:a=!1,position:i="fixed"}=n,s=(0,Ue.A)(n,Xw),l=(0,We.A)({},n,{color:o,position:i,enableColorOnDark:a}),u=(e=>{const{color:t,position:n,classes:r}=e,o={root:["root","color".concat((0,dt.A)(t)),"position".concat((0,dt.A)(n))]};return(0,ut.A)(o,Yw,r)})(l);return(0,Je.jsx)(Jw,(0,We.A)({square:!0,component:"header",ownerState:l,elevation:4,className:(0,Ve.A)(u.root,r,"fixed"===i&&"mui-fixed"),ref:t},s))}),eS=Zw;var tS=n(8150);function nS(){const{setting:{darkMode:e},updateSetting:t}=Rf(),n=(0,a.useCallback)(()=>{t({darkMode:{light:"dark",dark:"auto",auto:"light"}[e]||"light"})},[e,t]);return{darkMode:e,toggleDarkMode:n}}var rS=n(1310),oS=n(5326),aS=n(5261);function iS(){const{darkMode:e,toggleDarkMode:t}=nS();return(0,Je.jsx)(Ri,{onClick:t,color:"inherit",children:"dark"===e?(0,Je.jsx)(oS.A,{}):"light"===e?(0,Je.jsx)(rS.A,{}):(0,Je.jsx)(aS.A,{})})}const sS=function(e){const t=Hf(),{onDrawerToggle:n}=e;return(0,Je.jsx)(eS,{color:"primary",position:"sticky",sx:{zIndex:1300},children:(0,Je.jsxs)(Lw,{variant:"dense",children:[(0,Je.jsx)(st,{sx:{display:{sm:"none",xs:"block"}},children:(0,Je.jsx)(Ri,{color:"inherit","aria-label":"open drawer",onClick:n,edge:"start",children:(0,Je.jsx)(tS.A,{})})}),(0,Je.jsx)(gf,{component:"div",sx:{flexGrow:1,fontWeight:"bold"},children:(0,Je.jsx)(Sf,{underline:"none",color:"inherit",href:"https://github.com/fishjar/kiss-translator",target:"_blank",children:"".concat(t("app_name")," v").concat("2.0.29")})}),(0,Je.jsx)(iS,{})]})})};function lS(){const e=oe(),t=Ev(),[n,r]=(0,a.useState)(!1),o=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=Ye(),r="undefined"!==typeof window&&"undefined"!==typeof window.matchMedia,{defaultMatches:o=!1,matchMedia:a=(r?window.matchMedia:null),ssrMatchMedia:i=null,noSsr:s=!1}=im({name:"MuiUseMediaQuery",props:t,theme:n});let l="function"===typeof e?e(n):e;return l=l.replace(/^@media( ?)/m,""),(void 0!==nw?rw:tw)(l,o,a,i,s)}(t.breakpoints.up("sm")),i=Hf(),[s,l]=(0,a.useState)("");(0,a.useEffect)(()=>{(async function(){const e=["https://kiss-translator.rayjar.com/version.txt","https://fishjar.github.io/kiss-translator/version.txt"].filter(Boolean);let t;for(const r of e)try{const e=await fetch("".concat(r,"?t=").concat(Date.now()));if(!e.ok)throw new Error("Version request failed: ".concat(e.status));return(await e.text()).trim()}catch(n){t=n}throw t||new Error("No version URL configured")})().then(e=>{const t="2.0.29";e&&t&&e!==t&&l(e)}).catch(e=>console.error("fetch version error:",e))},[]);const u=()=>{r(!n)};return(0,a.useEffect)(()=>{r(!1)},[e]),(0,Je.jsxs)(st,{children:[(0,Je.jsx)(iw,{}),(0,Je.jsx)(sS,{onDrawerToggle:u}),(0,Je.jsxs)(st,{sx:{display:"flex"},children:[(0,Je.jsx)(st,{component:"nav",sx:{width:{sm:256},flexShrink:{sm:0}},children:(0,Je.jsx)($w,{PaperProps:{style:{width:256}},variant:o?"permanent":"temporary",open:!!o||n,onClose:u})}),(0,Je.jsxs)(st,{component:"main",sx:{flex:1,p:2,width:"100%"},children:[s&&(0,Je.jsxs)(Xi,{severity:"warning",sx:{mb:2},children:[i("version_warning").replace("{0}","2.0.29").replace("{1}",s),(0,Je.jsx)(Sf,{href:"https://github.com/fishjar/kiss-translator/releases",target:"_blank",rel:"noopener noreferrer",children:i("download_update")})]}),(0,Je.jsx)(De,{})]})]})]})}function uS(e){return(0,ft.Ay)("MuiInputAdornment",e)}const cS=(0,rt.A)("MuiInputAdornment",["root","filled","standard","outlined","positionStart","positionEnd","disablePointerEvents","hiddenLabel","sizeSmall"]);var dS;const pS=["children","className","component","disablePointerEvents","disableTypography","position","variant"],hS=(0,ht.Ay)("div",{name:"MuiInputAdornment",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["position".concat((0,dt.A)(n.position))],!0===n.disablePointerEvents&&t.disablePointerEvents,t[n.variant]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({display:"flex",height:"0.01em",maxHeight:"2em",alignItems:"center",whiteSpace:"nowrap",color:(t.vars||t).palette.action.active},"filled"===n.variant&&{["&.".concat(cS.positionStart,"&:not(.").concat(cS.hiddenLabel,")")]:{marginTop:16}},"start"===n.position&&{marginRight:8},"end"===n.position&&{marginLeft:8},!0===n.disablePointerEvents&&{pointerEvents:"none"})}),fS=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiInputAdornment"}),{children:r,className:o,component:i="div",disablePointerEvents:s=!1,disableTypography:l=!1,position:u,variant:c}=n,d=(0,Ue.A)(n,pS),p=zm()||{};let h=c;c&&p.variant,p&&!h&&(h=p.variant);const f=(0,We.A)({},n,{hiddenLabel:p.hiddenLabel,size:p.size,disablePointerEvents:s,position:u,variant:h}),m=(e=>{const{classes:t,disablePointerEvents:n,hiddenLabel:r,position:o,size:a,variant:i}=e,s={root:["root",n&&"disablePointerEvents",o&&"position".concat((0,dt.A)(o)),i,r&&"hiddenLabel",a&&"size".concat((0,dt.A)(a))]};return(0,ut.A)(s,uS,t)})(f);return(0,Je.jsx)(jm.Provider,{value:null,children:(0,Je.jsx)(hS,(0,We.A)({as:i,ownerState:f,className:(0,Ve.A)(m.root,o),ref:t},d,{children:"string"!==typeof r||l?(0,Je.jsxs)(a.Fragment,{children:["start"===u?dS||(dS=(0,Je.jsx)("span",{className:"notranslate",children:"\u200b"})):null,r]}):(0,Je.jsx)(gf,{color:"text.secondary",children:r})}))})}),mS=fS;var gS=n(1029),vS=n(2705),yS=n(5957),bS=n(7900);function xS(){const e=Hf(),{sync:t,updateSync:n}=yD(),r=fD(),o=gk(),[i,s]=(0,a.useState)(!1),[l,u]=(0,a.useState)(null),[c,d]=(0,a.useState)(""),[p,h]=(0,a.useState)(""),[f,m]=(0,a.useState)(""),[g,v]=(0,a.useState)(""),[y,b]=(0,a.useState)(!1),[x,A]=(0,a.useState)(!1),[D,k]=(0,a.useState)(!1),[w,S]=(0,a.useState)(!1),[E,_]=(0,a.useState)(!1),[C,F]=(0,a.useState)(!1),{reloadSetting:T}=Rf(),j=function(t){let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:e("sync_failed");const r=(null===t||void 0===t?void 0:t.message)||String(t||"");if(!r)return n;try{const e=JSON.parse(r),t=e.status?"HTTP ".concat(e.status):"",o=e.statusText||"",a=[t,o,e.body?JSON.stringify(e.body):""].filter(Boolean).join(" ");return a?"".concat(n,": ").concat(a):"".concat(n,": ").concat(r)}catch(o){return"".concat(n,": ").concat(r)}},z=async e=>{e.preventDefault();const{name:t,value:r}=e.target;await n({[t]:r})},I=()=>{y||(u(null),v(""))};if(!t)return null;const{syncType:L=Qi.B7y,syncUrl:P="",syncUser:R="",syncKey:N="",syncEncryptKey:O=""}=t,B=L===Qi.EeC;return(0,Je.jsxs)(st,{children:[(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsx)(Xi,{severity:"info",children:e("sync_warn_encryption")}),(0,Je.jsx)(Xi,{severity:"warning",children:e("sync_warn")}),(0,Je.jsx)(Xi,{severity:"warning",children:e("sync_warn_2")}),B&&(0,Je.jsx)(Xi,{severity:"warning",children:e("sync_warn_gist")}),(0,Je.jsx)(hb,{select:!0,size:"small",name:"syncType",value:L,label:e("data_sync_type"),onChange:z,helperText:B&&(0,Je.jsx)(Sf,{href:Qi.EnB,target:"_blank",children:e("gist_sync_tip")}),children:Qi.AhL.map(e=>(0,Je.jsx)(dx,{value:e,children:e},e))}),!B&&(0,Je.jsx)(hb,{size:"small",label:e("data_sync_url"),name:"syncUrl",value:P,onChange:z,helperText:L===Qi.B7y&&(0,Je.jsx)(Sf,{href:Qi.aMu,target:"_blank",children:e("about_sync_api")})}),L===Qi.UPC&&(0,Je.jsx)(hb,{size:"small",label:e("data_sync_user"),name:"syncUser",value:R,onChange:z}),(0,Je.jsx)(hb,{size:"small",type:x?"text":"password",label:e("data_sync_key"),name:"syncKey",value:N,onChange:z,InputProps:{endAdornment:(0,Je.jsx)(mS,{position:"end",children:(0,Je.jsx)(Ri,{size:"small",edge:"end",onClick:()=>A(e=>!e),onMouseDown:e=>e.preventDefault(),children:x?(0,Je.jsx)(bS.A,{}):(0,Je.jsx)(yS.A,{})})})}}),(0,Je.jsxs)(st,{children:[(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,children:[(0,Je.jsx)(hb,{fullWidth:!0,size:"small",type:D?"text":"password",label:e("data_sync_encrypt_key"),name:"syncEncryptKey",value:O,InputProps:{readOnly:!0,endAdornment:(0,Je.jsx)(mS,{position:"end",children:(0,Je.jsx)(Ri,{size:"small",edge:"end",onClick:()=>k(e=>!e),onMouseDown:e=>e.preventDefault(),children:D?(0,Je.jsx)(bS.A,{}):(0,Je.jsx)(yS.A,{})})})}}),(0,Je.jsx)(Ri,{size:"small","aria-label":e("data_sync_encrypt_key"),sx:{flexShrink:0},onClick:()=>(u(O?"change":"set"),d(""),h(""),m(""),v(""),S(!1),_(!1),void F(!1)),children:(0,Je.jsx)(jD.A,{})})]}),!O&&(0,Je.jsx)(qg,{error:!0,children:e("sync_encrypt_key_not_set")}),O&&(0,Je.jsx)(Eb,{size:"small",onClick:async()=>{await o({title:e("clear_sync_encrypt_key_title"),message:e("clear_sync_encrypt_key_message"),confirmText:e("clear_sync_encrypt_key_confirm")})&&(await n({syncEncryptKey:""}),r.success(e("clear_sync_encrypt_key_success")))},sx:{mt:1},children:e("clear_sync_encrypt_key")})]}),(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,useFlexGap:!0,flexWrap:"wrap",children:[(0,Je.jsx)(ED,{size:"small",variant:"contained",disabled:!B&&!P||!N||!O||i,onClick:async t=>{t.preventDefault();try{s(!0),await lf(),T(),r.success(e("sync_success"))}catch(n){(0,Zi.h9)("sync all",n),r.error(j(n))}finally{s(!1)}},startIcon:(0,Je.jsx)(YA.A,{}),loading:i,children:e("sync_now")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:async()=>{try{const e=btoa(JSON.stringify({syncType:L,syncUrl:P,syncUser:R,syncKey:N,syncEncryptKey:O})),t="".concat(Qi.o$A).concat(e);await navigator.clipboard.writeText(t),(0,Zi.h9)("Share string copied to clipboard",t)}catch(e){(0,Zi.h9)("Failed to copy share string to clipboard",e)}},startIcon:(0,Je.jsx)(gS.A,{}),children:e("copy","copy")}),(0,Je.jsx)(Eb,{onClick:async()=>{try{const e=await navigator.clipboard.readText();if((0,Zi.h9)("read_clipboard",e),e.startsWith(Qi.o$A)){const t=e.slice(Qi.o$A.length),r=atob(t),o=JSON.parse(r);if(!Qi.AhL.includes(o.syncType))return void(0,Zi.h9)("error syncType",o.syncType);o.syncUrl||o.syncType===Qi.EeC?n({syncType:o.syncType,syncUrl:o.syncUrl,syncUser:o.syncUser,syncKey:o.syncKey,syncEncryptKey:o.syncEncryptKey||""}):(0,Zi.h9)("Invalid config structure")}else(0,Zi.h9)("Invalid share string",e)}catch(e){(0,Zi.h9)("Failed to read from clipboard or parse JSON",e)}},size:"small",variant:"outlined",startIcon:(0,Je.jsx)(vS.A,{}),children:e("import","import")})]})]}),(0,Je.jsxs)(XD,{open:!!l,onClose:I,children:[(0,Je.jsx)(hk,{children:e("change"===l?"change_sync_encrypt_key":"set_sync_encrypt_key")}),(0,Je.jsx)(ik,{children:(0,Je.jsxs)(vm,{spacing:2,sx:{pt:1,minWidth:360},children:["change"===l&&(0,Je.jsx)(hb,{size:"small",type:w?"text":"password",label:e("old_sync_encrypt_key"),value:c,onChange:e=>d(e.target.value),InputProps:{endAdornment:(0,Je.jsx)(mS,{position:"end",children:(0,Je.jsx)(Ri,{size:"small",edge:"end",onClick:()=>S(e=>!e),onMouseDown:e=>e.preventDefault(),children:w?(0,Je.jsx)(bS.A,{}):(0,Je.jsx)(yS.A,{})})})}}),(0,Je.jsx)(hb,{size:"small",type:E?"text":"password",label:e("new_sync_encrypt_key"),value:p,onChange:e=>h(e.target.value),InputProps:{endAdornment:(0,Je.jsx)(mS,{position:"end",children:(0,Je.jsx)(Ri,{size:"small",edge:"end",onClick:()=>_(e=>!e),onMouseDown:e=>e.preventDefault(),children:E?(0,Je.jsx)(bS.A,{}):(0,Je.jsx)(yS.A,{})})})}}),(0,Je.jsx)(hb,{size:"small",type:C?"text":"password",label:e("confirm_sync_encrypt_key"),value:f,onChange:e=>m(e.target.value),error:!!g,helperText:g,InputProps:{endAdornment:(0,Je.jsx)(mS,{position:"end",children:(0,Je.jsx)(Ri,{size:"small",edge:"end",onClick:()=>F(e=>!e),onMouseDown:e=>e.preventDefault(),children:C?(0,Je.jsx)(bS.A,{}):(0,Je.jsx)(yS.A,{})})})}})]})}),(0,Je.jsxs)(ek,{children:[(0,Je.jsx)(Eb,{onClick:I,disabled:y,children:e("cancel","cancel")}),(0,Je.jsx)(ED,{onClick:async()=>{if(v(""),p.length<6)v(e("sync_encrypt_key_too_short"));else if(p===f)try{b(!0),"change"===l&&await(async e=>{var t,n,r;let{oldEncryptKey:o,newEncryptKey:a}=e;const i=await lf({syncEncryptKey:o,forceRemoteRead:!0,persistMeta:!1,applyRemote:!1});null!==(t=i.setting)&&void 0!==t&&t.isNew&&await(0,Ji.ZC)(i.setting.value),null!==(n=i.rules)&&void 0!==n&&n.isNew&&await(0,Ji.Qg)(i.rules.value),null!==(r=i.words)&&void 0!==r&&r.isNew&&await(0,Ji.aA)(i.words.value),await Zh(Qi.XEV,await(0,Ji.C$)(),a),await Zh(Qi.Ed3,await(0,Ji.VX)(),a),await Zh(Qi.sgk,await(0,Ji.lk)(),a),await(0,Ji.pK)({syncEncryptKey:a})})({oldEncryptKey:c,newEncryptKey:p}),await n({syncEncryptKey:p}),u(null),r.success(e("sync_success"))}catch(t){(0,Zi.h9)("save sync encrypt key",t),v(j(t,e("change"===l?"sync_encrypt_key_change_failed":"sync_failed")))}finally{b(!1)}else v(e("sync_encrypt_key_mismatch"))},loading:y,variant:"contained",children:e("save","save")})]})]})]})}const AS=a.createContext(null);function DS(){return a.useContext(AS)}const kS="function"===typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";const wS=function(e){const{children:t,theme:n}=e,r=DS(),o=a.useMemo(()=>{const e=null===r?n:function(e,t){if("function"===typeof t)return t(e);return(0,We.A)({},e,t)}(r,n);return null!=e&&(e[kS]=null!==r),e},[n,r]);return(0,Je.jsx)(AS.Provider,{value:o,children:t})};var SS=n(5779);const ES={};function _S(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return a.useMemo(()=>{const o=e&&t[e]||t;if("function"===typeof n){const a=n(o),i=e?(0,We.A)({},t,{[e]:a}):a;return r?()=>i:i}return e?(0,We.A)({},t,{[e]:n}):(0,We.A)({},t,n)},[e,t,n,r])}const CS=function(e){const{children:t,theme:n,themeId:r}=e,o=Ye(ES),a=DS()||ES,i=_S(r,o,n),s=_S(r,a,n,!0),l="rtl"===i.direction,u=function(e){const t=Ye(),n=(0,ym.A)()||"",{modularCssLayers:r}=e;let o="mui.global, mui.components, mui.theme, mui.custom, mui.sx";return o=r&&null===t?"string"===typeof r?r.replace(/mui(?!\.)/g,o):"@layer ".concat(o,";"):"",(0,Dm.A)(()=>{const e=document.querySelector("head");if(!e)return;const t=e.firstChild;if(o){var r;if(t&&null!=(r=t.hasAttribute)&&r.call(t,"data-mui-layer-order")&&t.getAttribute("data-mui-layer-order")===n)return;const a=document.createElement("style");a.setAttribute("data-mui-layer-order",n),a.textContent=o,e.prepend(a)}else{var a;null==(a=e.querySelector('style[data-mui-layer-order="'.concat(n,'"]')))||a.remove()}},[o,n]),o?(0,Je.jsx)(Rm,{styles:o}):null}(i);return(0,Je.jsx)(wS,{theme:s,children:(0,Je.jsx)($e.T.Provider,{value:i,children:(0,Je.jsx)(Jg,{value:l,children:(0,Je.jsxs)(SS.A,{value:null==i?void 0:i.components,children:[u,t]})})})})},FS=["theme"];function TS(e){let{theme:t}=e,n=(0,Ue.A)(e,FS);const r=t[nt.A];let o=r||t;return"function"!==typeof t&&(r&&!r.vars?o=(0,We.A)({},r,{vars:null}):t&&!t.vars&&(o=(0,We.A)({},t,{vars:null}))),(0,Je.jsx)(CS,(0,We.A)({},n,{themeId:r?nt.A:void 0,theme:o}))}function jS(e){let{children:t,options:n={},styles:r={}}=e;const{darkMode:o}=nS(),[i,s]=(0,a.useState)(Qi.VwZ);(0,a.useEffect)(()=>{if("function"!==typeof window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),t=()=>{s(e.matches?Qi.fSx:Qi.VwZ)};return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]);const l=(0,a.useMemo)(()=>{let e=16;try{const t=window.getComputedStyle(document.documentElement).fontSize;e=parseInt(t.replace("px",""))}catch(r){}const t="dark"===o||"auto"===o&&i===Qi.fSx;return(0,tt.A)((0,It.A)({palette:{mode:t?Qi.fSx:Qi.VwZ},typography:{htmlFontSize:e}},n))},[o,n,i]);return(0,Je.jsxs)(TS,{theme:l,children:[(0,Je.jsx)(iw,{}),(0,Je.jsx)(Om,{styles:r}),t]})}var zS=n(2375);const IS=(0,Ni.A)((0,Je.jsx)("path",{d:"M19 5v14H5V5h14m0-2H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2z"}),"CheckBoxOutlineBlank"),LS=(0,Ni.A)((0,Je.jsx)("path",{d:"M19 3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.11 0 2-.9 2-2V5c0-1.1-.89-2-2-2zm-9 14l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z"}),"CheckBox"),PS=(0,Ni.A)((0,Je.jsx)("path",{d:"M19 3H5c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm-2 10H7v-2h10v2z"}),"IndeterminateCheckBox");function RS(e){return(0,ft.Ay)("MuiCheckbox",e)}const NS=(0,rt.A)("MuiCheckbox",["root","checked","disabled","indeterminate","colorPrimary","colorSecondary","sizeSmall","sizeMedium"]),OS=["checkedIcon","color","icon","indeterminate","indeterminateIcon","inputProps","size","className"],BS=(0,ht.Ay)(Px,{shouldForwardProp:e=>(0,Qm.A)(e)||"classes"===e,name:"MuiCheckbox",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.indeterminate&&t.indeterminate,t["size".concat((0,dt.A)(n.size))],"default"!==n.color&&t["color".concat((0,dt.A)(n.color))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({color:(t.vars||t).palette.text.secondary},!n.disableRipple&&{"&:hover":{backgroundColor:t.vars?"rgba(".concat("default"===n.color?t.vars.palette.action.activeChannel:t.vars.palette[n.color].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Ta.X4)("default"===n.color?t.palette.action.active:t.palette[n.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}}},"default"!==n.color&&{["&.".concat(NS.checked,", &.").concat(NS.indeterminate)]:{color:(t.vars||t).palette[n.color].main},["&.".concat(NS.disabled)]:{color:(t.vars||t).palette.action.disabled}})}),MS=(0,Je.jsx)(LS,{}),WS=(0,Je.jsx)(IS,{}),US=(0,Je.jsx)(PS,{}),VS=a.forwardRef(function(e,t){var n,r;const o=(0,pt.b)({props:e,name:"MuiCheckbox"}),{checkedIcon:i=MS,color:s="primary",icon:l=WS,indeterminate:u=!1,indeterminateIcon:c=US,inputProps:d,size:p="medium",className:h}=o,f=(0,Ue.A)(o,OS),m=u?c:l,g=u?c:i,v=(0,We.A)({},o,{color:s,indeterminate:u,size:p}),y=(e=>{const{classes:t,indeterminate:n,color:r,size:o}=e,a={root:["root",n&&"indeterminate","color".concat((0,dt.A)(r)),"size".concat((0,dt.A)(o))]},i=(0,ut.A)(a,RS,t);return(0,We.A)({},t,i)})(v);return(0,Je.jsx)(BS,(0,We.A)({type:"checkbox",inputProps:(0,We.A)({"data-indeterminate":u},d),icon:a.cloneElement(m,{fontSize:null!=(n=m.props.fontSize)?n:p}),checkedIcon:a.cloneElement(g,{fontSize:null!=(r=g.props.fontSize)?r:p}),ownerState:v,ref:t,className:(0,Ve.A)(y.root,h)},f,{classes:y}))}),HS=VS;var GS=n(2165),qS=n(533),KS=n(2890),$S=n(6332),YS=n(8643);function XS(e){return(0,ft.Ay)("MuiListItem",e)}const QS=(0,rt.A)("MuiListItem",["root","container","focusVisible","dense","alignItemsFlexStart","disabled","divider","gutters","padding","button","secondaryAction","selected"]);function JS(e){return(0,ft.Ay)("MuiListItemSecondaryAction",e)}(0,rt.A)("MuiListItemSecondaryAction",["root","disableGutters"]);const ZS=["className"],eE=(0,ht.Ay)("div",{name:"MuiListItemSecondaryAction",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.disableGutters&&t.disableGutters]}})(e=>{let{ownerState:t}=e;return(0,We.A)({position:"absolute",right:16,top:"50%",transform:"translateY(-50%)"},t.disableGutters&&{right:0})}),tE=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiListItemSecondaryAction"}),{className:r}=n,o=(0,Ue.A)(n,ZS),i=a.useContext(tv),s=(0,We.A)({},n,{disableGutters:i.disableGutters}),l=(e=>{const{disableGutters:t,classes:n}=e,r={root:["root",t&&"disableGutters"]};return(0,ut.A)(r,JS,n)})(s);return(0,Je.jsx)(eE,(0,We.A)({className:(0,Ve.A)(l.root,r),ownerState:s,ref:t},o))});tE.muiName="ListItemSecondaryAction";const nE=tE,rE=["className"],oE=["alignItems","autoFocus","button","children","className","component","components","componentsProps","ContainerComponent","ContainerProps","dense","disabled","disableGutters","disablePadding","divider","focusVisibleClassName","secondaryAction","selected","slotProps","slots"],aE=(0,ht.Ay)("div",{name:"MuiListItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,"flex-start"===n.alignItems&&t.alignItemsFlexStart,n.divider&&t.divider,!n.disableGutters&&t.gutters,!n.disablePadding&&t.padding,n.button&&t.button,n.hasSecondaryAction&&t.secondaryAction]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",width:"100%",boxSizing:"border-box",textAlign:"left"},!n.disablePadding&&(0,We.A)({paddingTop:8,paddingBottom:8},n.dense&&{paddingTop:4,paddingBottom:4},!n.disableGutters&&{paddingLeft:16,paddingRight:16},!!n.secondaryAction&&{paddingRight:48}),!!n.secondaryAction&&{["& > .".concat(Aw.root)]:{paddingRight:48}},{["&.".concat(QS.focusVisible)]:{backgroundColor:(t.vars||t).palette.action.focus},["&.".concat(QS.selected)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity),["&.".concat(QS.focusVisible)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.focusOpacity,"))"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.focusOpacity)}},["&.".concat(QS.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity}},"flex-start"===n.alignItems&&{alignItems:"flex-start"},n.divider&&{borderBottom:"1px solid ".concat((t.vars||t).palette.divider),backgroundClip:"padding-box"},n.button&&{transition:t.transitions.create("background-color",{duration:t.transitions.duration.shortest}),"&:hover":{textDecoration:"none",backgroundColor:(t.vars||t).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},["&.".concat(QS.selected,":hover")]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.hoverOpacity,"))"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity)}}},n.hasSecondaryAction&&{paddingRight:48})}),iE=(0,ht.Ay)("li",{name:"MuiListItem",slot:"Container",overridesResolver:(e,t)=>t.container})({position:"relative"}),sE=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiListItem"}),{alignItems:r="center",autoFocus:o=!1,button:i=!1,children:s,className:l,component:u,components:c={},componentsProps:d={},ContainerComponent:p="li",ContainerProps:{className:h}={},dense:f=!1,disabled:m=!1,disableGutters:g=!1,disablePadding:v=!1,divider:y=!1,focusVisibleClassName:b,secondaryAction:x,selected:A=!1,slotProps:D={},slots:k={}}=n,w=(0,Ue.A)(n.ContainerProps,rE),S=(0,Ue.A)(n,oE),E=a.useContext(tv),_=a.useMemo(()=>({dense:f||E.dense||!1,alignItems:r,disableGutters:g}),[r,E.dense,f,g]),C=a.useRef(null);(0,Im.A)(()=>{o&&C.current&&C.current.focus()},[o]);const F=a.Children.toArray(s),T=F.length&&(0,Pg.A)(F[F.length-1],["ListItemSecondaryAction"]),j=(0,We.A)({},n,{alignItems:r,autoFocus:o,button:i,dense:_.dense,disabled:m,disableGutters:g,disablePadding:v,divider:y,hasSecondaryAction:T,selected:A}),z=(e=>{const{alignItems:t,button:n,classes:r,dense:o,disabled:a,disableGutters:i,disablePadding:s,divider:l,hasSecondaryAction:u,selected:c}=e,d={root:["root",o&&"dense",!i&&"gutters",!s&&"padding",l&&"divider",a&&"disabled",n&&"button","flex-start"===t&&"alignItemsFlexStart",u&&"secondaryAction",c&&"selected"],container:["container"]};return(0,ut.A)(d,XS,r)})(j),I=(0,Ya.A)(C,t),L=k.root||c.Root||aE,P=D.root||d.root||{},R=(0,We.A)({className:(0,Ve.A)(z.root,P.className,l),disabled:m},S);let N=u||"li";return i&&(R.component=u||"div",R.focusVisibleClassName=(0,Ve.A)(QS.focusVisible,b),N=Ti),T?(N=R.component||u?N:"div","li"===p&&("li"===N?N="div":"li"===R.component&&(R.component="div")),(0,Je.jsx)(tv.Provider,{value:_,children:(0,Je.jsxs)(iE,(0,We.A)({as:p,className:(0,Ve.A)(z.container,h),ref:I,ownerState:j},w,{children:[(0,Je.jsx)(L,(0,We.A)({},P,!za(L)&&{as:N,ownerState:(0,We.A)({},j,P.ownerState)},R,{children:F})),F.pop()]}))})):(0,Je.jsx)(tv.Provider,{value:_,children:(0,Je.jsxs)(L,(0,We.A)({},P,{as:N,ref:I},!za(L)&&{ownerState:(0,We.A)({},j,P.ownerState)},R,{children:[F,x&&(0,Je.jsx)(nE,{children:x})]}))})});var lE=n(7833);function uE(e){if(null==e)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function cE(e){return e instanceof uE(e).Element||e instanceof Element}function dE(e){return e instanceof uE(e).HTMLElement||e instanceof HTMLElement}function pE(e){return"undefined"!==typeof ShadowRoot&&(e instanceof uE(e).ShadowRoot||e instanceof ShadowRoot)}var hE=Math.max,fE=Math.min,mE=Math.round;function gE(){var e=navigator.userAgentData;return null!=e&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function vE(){return!/^((?!chrome|android).)*safari/i.test(gE())}function yE(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var r=e.getBoundingClientRect(),o=1,a=1;t&&dE(e)&&(o=e.offsetWidth>0&&mE(r.width)/e.offsetWidth||1,a=e.offsetHeight>0&&mE(r.height)/e.offsetHeight||1);var i=(cE(e)?uE(e):window).visualViewport,s=!vE()&&n,l=(r.left+(s&&i?i.offsetLeft:0))/o,u=(r.top+(s&&i?i.offsetTop:0))/a,c=r.width/o,d=r.height/a;return{width:c,height:d,top:u,right:l+c,bottom:u+d,left:l,x:l,y:u}}function bE(e){var t=uE(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function xE(e){return e?(e.nodeName||"").toLowerCase():null}function AE(e){return((cE(e)?e.ownerDocument:e.document)||window.document).documentElement}function DE(e){return yE(AE(e)).left+bE(e).scrollLeft}function kE(e){return uE(e).getComputedStyle(e)}function wE(e){var t=kE(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function SE(e,t,n){void 0===n&&(n=!1);var r=dE(t),o=dE(t)&&function(e){var t=e.getBoundingClientRect(),n=mE(t.width)/e.offsetWidth||1,r=mE(t.height)/e.offsetHeight||1;return 1!==n||1!==r}(t),a=AE(t),i=yE(e,o,n),s={scrollLeft:0,scrollTop:0},l={x:0,y:0};return(r||!r&&!n)&&(("body"!==xE(t)||wE(a))&&(s=function(e){return e!==uE(e)&&dE(e)?{scrollLeft:(t=e).scrollLeft,scrollTop:t.scrollTop}:bE(e);var t}(t)),dE(t)?((l=yE(t,!0)).x+=t.clientLeft,l.y+=t.clientTop):a&&(l.x=DE(a))),{x:i.left+s.scrollLeft-l.x,y:i.top+s.scrollTop-l.y,width:i.width,height:i.height}}function EE(e){var t=yE(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function _E(e){return"html"===xE(e)?e:e.assignedSlot||e.parentNode||(pE(e)?e.host:null)||AE(e)}function CE(e){return["html","body","#document"].indexOf(xE(e))>=0?e.ownerDocument.body:dE(e)&&wE(e)?e:CE(_E(e))}function FE(e,t){var n;void 0===t&&(t=[]);var r=CE(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=uE(r),i=o?[a].concat(a.visualViewport||[],wE(r)?r:[]):r,s=t.concat(i);return o?s:s.concat(FE(_E(i)))}function TE(e){return["table","td","th"].indexOf(xE(e))>=0}function jE(e){return dE(e)&&"fixed"!==kE(e).position?e.offsetParent:null}function zE(e){for(var t=uE(e),n=jE(e);n&&TE(n)&&"static"===kE(n).position;)n=jE(n);return n&&("html"===xE(n)||"body"===xE(n)&&"static"===kE(n).position)?t:n||function(e){var t=/firefox/i.test(gE());if(/Trident/i.test(gE())&&dE(e)&&"fixed"===kE(e).position)return null;var n=_E(e);for(pE(n)&&(n=n.host);dE(n)&&["html","body"].indexOf(xE(n))<0;){var r=kE(n);if("none"!==r.transform||"none"!==r.perspective||"paint"===r.contain||-1!==["transform","perspective"].indexOf(r.willChange)||t&&"filter"===r.willChange||t&&r.filter&&"none"!==r.filter)return n;n=n.parentNode}return null}(e)||t}var IE="top",LE="bottom",PE="right",RE="left",NE="auto",OE=[IE,LE,PE,RE],BE="start",ME="end",WE="viewport",UE="popper",VE=OE.reduce(function(e,t){return e.concat([t+"-"+BE,t+"-"+ME])},[]),HE=[].concat(OE,[NE]).reduce(function(e,t){return e.concat([t,t+"-"+BE,t+"-"+ME])},[]),GE=["beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite"];function qE(e){var t=new Map,n=new Set,r=[];function o(e){n.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!n.has(e)){var r=t.get(e);r&&o(r)}}),r.push(e)}return e.forEach(function(e){t.set(e.name,e)}),e.forEach(function(e){n.has(e.name)||o(e)}),r}function KE(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}var $E={placement:"bottom",modifiers:[],strategy:"absolute"};function YE(){for(var e=arguments.length,t=new Array(e),n=0;n=0?"x":"y"}function t_(e){var t,n=e.reference,r=e.element,o=e.placement,a=o?JE(o):null,i=o?ZE(o):null,s=n.x+n.width/2-r.width/2,l=n.y+n.height/2-r.height/2;switch(a){case IE:t={x:s,y:n.y-r.height};break;case LE:t={x:s,y:n.y+n.height};break;case PE:t={x:n.x+n.width,y:l};break;case RE:t={x:n.x-r.width,y:l};break;default:t={x:n.x,y:n.y}}var u=a?e_(a):null;if(null!=u){var c="y"===u?"height":"width";switch(i){case BE:t[u]=t[u]-(n[c]/2-r[c]/2);break;case ME:t[u]=t[u]+(n[c]/2-r[c]/2)}}return t}var n_={top:"auto",right:"auto",bottom:"auto",left:"auto"};function r_(e){var t,n=e.popper,r=e.popperRect,o=e.placement,a=e.variation,i=e.offsets,s=e.position,l=e.gpuAcceleration,u=e.adaptive,c=e.roundOffsets,d=e.isFixed,p=i.x,h=void 0===p?0:p,f=i.y,m=void 0===f?0:f,g="function"===typeof c?c({x:h,y:m}):{x:h,y:m};h=g.x,m=g.y;var v=i.hasOwnProperty("x"),y=i.hasOwnProperty("y"),b=RE,x=IE,A=window;if(u){var D=zE(n),k="clientHeight",w="clientWidth";if(D===uE(n)&&"static"!==kE(D=AE(n)).position&&"absolute"===s&&(k="scrollHeight",w="scrollWidth"),o===IE||(o===RE||o===PE)&&a===ME)x=LE,m-=(d&&D===A&&A.visualViewport?A.visualViewport.height:D[k])-r.height,m*=l?1:-1;if(o===RE||(o===IE||o===LE)&&a===ME)b=PE,h-=(d&&D===A&&A.visualViewport?A.visualViewport.width:D[w])-r.width,h*=l?1:-1}var S,E=Object.assign({position:s},u&&n_),_=!0===c?function(e,t){var n=e.x,r=e.y,o=t.devicePixelRatio||1;return{x:mE(n*o)/o||0,y:mE(r*o)/o||0}}({x:h,y:m},uE(n)):{x:h,y:m};return h=_.x,m=_.y,l?Object.assign({},E,((S={})[x]=y?"0":"",S[b]=v?"0":"",S.transform=(A.devicePixelRatio||1)<=1?"translate("+h+"px, "+m+"px)":"translate3d("+h+"px, "+m+"px, 0)",S)):Object.assign({},E,((t={})[x]=y?m+"px":"",t[b]=v?h+"px":"",t.transform="",t))}const o_={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var n=t.styles[e]||{},r=t.attributes[e]||{},o=t.elements[e];dE(o)&&xE(o)&&(Object.assign(o.style,n),Object.keys(r).forEach(function(e){var t=r[e];!1===t?o.removeAttribute(e):o.setAttribute(e,!0===t?"":t)}))})},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var r=t.elements[e],o=t.attributes[e]||{},a=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce(function(e,t){return e[t]="",e},{});dE(r)&&xE(r)&&(Object.assign(r.style,a),Object.keys(o).forEach(function(e){r.removeAttribute(e)}))})}},requires:["computeStyles"]};const a_={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.offset,a=void 0===o?[0,0]:o,i=HE.reduce(function(e,n){return e[n]=function(e,t,n){var r=JE(e),o=[RE,IE].indexOf(r)>=0?-1:1,a="function"===typeof n?n(Object.assign({},t,{placement:e})):n,i=a[0],s=a[1];return i=i||0,s=(s||0)*o,[RE,PE].indexOf(r)>=0?{x:s,y:i}:{x:i,y:s}}(n,t.rects,a),e},{}),s=i[t.placement],l=s.x,u=s.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=l,t.modifiersData.popperOffsets.y+=u),t.modifiersData[r]=i}};var i_={left:"right",right:"left",bottom:"top",top:"bottom"};function s_(e){return e.replace(/left|right|bottom|top/g,function(e){return i_[e]})}var l_={start:"end",end:"start"};function u_(e){return e.replace(/start|end/g,function(e){return l_[e]})}function c_(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&pE(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function d_(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function p_(e,t,n){return t===WE?d_(function(e,t){var n=uE(e),r=AE(e),o=n.visualViewport,a=r.clientWidth,i=r.clientHeight,s=0,l=0;if(o){a=o.width,i=o.height;var u=vE();(u||!u&&"fixed"===t)&&(s=o.offsetLeft,l=o.offsetTop)}return{width:a,height:i,x:s+DE(e),y:l}}(e,n)):cE(t)?function(e,t){var n=yE(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):d_(function(e){var t,n=AE(e),r=bE(e),o=null==(t=e.ownerDocument)?void 0:t.body,a=hE(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),i=hE(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),s=-r.scrollLeft+DE(e),l=-r.scrollTop;return"rtl"===kE(o||n).direction&&(s+=hE(n.clientWidth,o?o.clientWidth:0)-a),{width:a,height:i,x:s,y:l}}(AE(e)))}function h_(e,t,n,r){var o="clippingParents"===t?function(e){var t=FE(_E(e)),n=["absolute","fixed"].indexOf(kE(e).position)>=0&&dE(e)?zE(e):e;return cE(n)?t.filter(function(e){return cE(e)&&c_(e,n)&&"body"!==xE(e)}):[]}(e):[].concat(t),a=[].concat(o,[n]),i=a[0],s=a.reduce(function(t,n){var o=p_(e,n,r);return t.top=hE(o.top,t.top),t.right=fE(o.right,t.right),t.bottom=fE(o.bottom,t.bottom),t.left=hE(o.left,t.left),t},p_(e,i,r));return s.width=s.right-s.left,s.height=s.bottom-s.top,s.x=s.left,s.y=s.top,s}function f_(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function m_(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}function g_(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=void 0===r?e.placement:r,a=n.strategy,i=void 0===a?e.strategy:a,s=n.boundary,l=void 0===s?"clippingParents":s,u=n.rootBoundary,c=void 0===u?WE:u,d=n.elementContext,p=void 0===d?UE:d,h=n.altBoundary,f=void 0!==h&&h,m=n.padding,g=void 0===m?0:m,v=f_("number"!==typeof g?g:m_(g,OE)),y=p===UE?"reference":UE,b=e.rects.popper,x=e.elements[f?y:p],A=h_(cE(x)?x:x.contextElement||AE(e.elements.popper),l,c,i),D=yE(e.elements.reference),k=t_({reference:D,element:b,strategy:"absolute",placement:o}),w=d_(Object.assign({},b,k)),S=p===UE?w:D,E={top:A.top-S.top+v.top,bottom:S.bottom-A.bottom+v.bottom,left:A.left-S.left+v.left,right:S.right-A.right+v.right},_=e.modifiersData.offset;if(p===UE&&_){var C=_[o];Object.keys(E).forEach(function(e){var t=[PE,LE].indexOf(e)>=0?1:-1,n=[IE,LE].indexOf(e)>=0?"y":"x";E[e]+=C[n]*t})}return E}const v_={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,a=void 0===o||o,i=n.altAxis,s=void 0===i||i,l=n.fallbackPlacements,u=n.padding,c=n.boundary,d=n.rootBoundary,p=n.altBoundary,h=n.flipVariations,f=void 0===h||h,m=n.allowedAutoPlacements,g=t.options.placement,v=JE(g),y=l||(v===g||!f?[s_(g)]:function(e){if(JE(e)===NE)return[];var t=s_(e);return[u_(e),t,u_(t)]}(g)),b=[g].concat(y).reduce(function(e,n){return e.concat(JE(n)===NE?function(e,t){void 0===t&&(t={});var n=t,r=n.placement,o=n.boundary,a=n.rootBoundary,i=n.padding,s=n.flipVariations,l=n.allowedAutoPlacements,u=void 0===l?HE:l,c=ZE(r),d=c?s?VE:VE.filter(function(e){return ZE(e)===c}):OE,p=d.filter(function(e){return u.indexOf(e)>=0});0===p.length&&(p=d);var h=p.reduce(function(t,n){return t[n]=g_(e,{placement:n,boundary:o,rootBoundary:a,padding:i})[JE(n)],t},{});return Object.keys(h).sort(function(e,t){return h[e]-h[t]})}(t,{placement:n,boundary:c,rootBoundary:d,padding:u,flipVariations:f,allowedAutoPlacements:m}):n)},[]),x=t.rects.reference,A=t.rects.popper,D=new Map,k=!0,w=b[0],S=0;S=0,T=F?"width":"height",j=g_(t,{placement:E,boundary:c,rootBoundary:d,altBoundary:p,padding:u}),z=F?C?PE:RE:C?LE:IE;x[T]>A[T]&&(z=s_(z));var I=s_(z),L=[];if(a&&L.push(j[_]<=0),s&&L.push(j[z]<=0,j[I]<=0),L.every(function(e){return e})){w=E,k=!1;break}D.set(E,L)}if(k)for(var P=function(e){var t=b.find(function(t){var n=D.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return w=t,"break"},R=f?3:1;R>0;R--){if("break"===P(R))break}t.placement!==w&&(t.modifiersData[r]._skip=!0,t.placement=w,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function y_(e,t,n){return hE(e,fE(t,n))}const b_={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,a=void 0===o||o,i=n.altAxis,s=void 0!==i&&i,l=n.boundary,u=n.rootBoundary,c=n.altBoundary,d=n.padding,p=n.tether,h=void 0===p||p,f=n.tetherOffset,m=void 0===f?0:f,g=g_(t,{boundary:l,rootBoundary:u,padding:d,altBoundary:c}),v=JE(t.placement),y=ZE(t.placement),b=!y,x=e_(v),A="x"===x?"y":"x",D=t.modifiersData.popperOffsets,k=t.rects.reference,w=t.rects.popper,S="function"===typeof m?m(Object.assign({},t.rects,{placement:t.placement})):m,E="number"===typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),_=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,C={x:0,y:0};if(D){if(a){var F,T="y"===x?IE:RE,j="y"===x?LE:PE,z="y"===x?"height":"width",I=D[x],L=I+g[T],P=I-g[j],R=h?-w[z]/2:0,N=y===BE?k[z]:w[z],O=y===BE?-w[z]:-k[z],B=t.elements.arrow,M=h&&B?EE(B):{width:0,height:0},W=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},U=W[T],V=W[j],H=y_(0,k[z],M[z]),G=b?k[z]/2-R-H-U-E.mainAxis:N-H-U-E.mainAxis,q=b?-k[z]/2+R+H+V+E.mainAxis:O+H+V+E.mainAxis,K=t.elements.arrow&&zE(t.elements.arrow),$=K?"y"===x?K.clientTop||0:K.clientLeft||0:0,Y=null!=(F=null==_?void 0:_[x])?F:0,X=I+q-Y,Q=y_(h?fE(L,I+G-Y-$):L,I,h?hE(P,X):P);D[x]=Q,C[x]=Q-I}if(s){var J,Z="x"===x?IE:RE,ee="x"===x?LE:PE,te=D[A],ne="y"===A?"height":"width",re=te+g[Z],oe=te-g[ee],ae=-1!==[IE,RE].indexOf(v),ie=null!=(J=null==_?void 0:_[A])?J:0,se=ae?re:te-k[ne]-w[ne]-ie+E.altAxis,le=ae?te+k[ne]+w[ne]-ie-E.altAxis:oe,ue=h&&ae?function(e,t,n){var r=y_(e,t,n);return r>n?n:r}(se,te,le):y_(h?se:re,te,h?le:oe);D[A]=ue,C[A]=ue-te}t.modifiersData[r]=C}},requiresIfExists:["offset"]};const x_={name:"arrow",enabled:!0,phase:"main",fn:function(e){var t,n=e.state,r=e.name,o=e.options,a=n.elements.arrow,i=n.modifiersData.popperOffsets,s=JE(n.placement),l=e_(s),u=[RE,PE].indexOf(s)>=0?"height":"width";if(a&&i){var c=function(e,t){return f_("number"!==typeof(e="function"===typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:m_(e,OE))}(o.padding,n),d=EE(a),p="y"===l?IE:RE,h="y"===l?LE:PE,f=n.rects.reference[u]+n.rects.reference[l]-i[l]-n.rects.popper[u],m=i[l]-n.rects.reference[l],g=zE(a),v=g?"y"===l?g.clientHeight||0:g.clientWidth||0:0,y=f/2-m/2,b=c[p],x=v-d[u]-c[h],A=v/2-d[u]/2+y,D=y_(b,A,x),k=l;n.modifiersData[r]=((t={})[k]=D,t.centerOffset=D-A,t)}},effect:function(e){var t=e.state,n=e.options.element,r=void 0===n?"[data-popper-arrow]":n;null!=r&&("string"!==typeof r||(r=t.elements.popper.querySelector(r)))&&c_(t.elements.popper,r)&&(t.elements.arrow=r)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function A_(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function D_(e){return[IE,PE,LE,RE].some(function(t){return e[t]>=0})}var k_=XE({defaultModifiers:[{name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,a=void 0===o||o,i=r.resize,s=void 0===i||i,l=uE(t.elements.popper),u=[].concat(t.scrollParents.reference,t.scrollParents.popper);return a&&u.forEach(function(e){e.addEventListener("scroll",n.update,QE)}),s&&l.addEventListener("resize",n.update,QE),function(){a&&u.forEach(function(e){e.removeEventListener("scroll",n.update,QE)}),s&&l.removeEventListener("resize",n.update,QE)}},data:{}},{name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=t_({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},{name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=void 0===r||r,a=n.adaptive,i=void 0===a||a,s=n.roundOffsets,l=void 0===s||s,u={placement:JE(t.placement),variation:ZE(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,r_(Object.assign({},u,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:i,roundOffsets:l})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,r_(Object.assign({},u,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}},o_,a_,v_,b_,x_,{name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,a=t.modifiersData.preventOverflow,i=g_(t,{elementContext:"reference"}),s=g_(t,{altBoundary:!0}),l=A_(i,r),u=A_(s,o,a),c=D_(l),d=D_(u);t.modifiersData[n]={referenceClippingOffsets:l,popperEscapeOffsets:u,isReferenceHidden:c,hasPopperEscaped:d},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":c,"data-popper-escaped":d})}}]});function w_(e){return(0,ft.Ay)("MuiPopper",e)}(0,rt.A)("MuiPopper",["root"]);const S_=["anchorEl","children","direction","disablePortal","modifiers","open","placement","popperOptions","popperRef","slotProps","slots","TransitionProps","ownerState"],E_=["anchorEl","children","container","direction","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","style","transition","slotProps","slots"];function __(e){return"function"===typeof e?e():e}function C_(e){return void 0!==e.nodeType}const F_={},T_=a.forwardRef(function(e,t){var n;const{anchorEl:r,children:o,direction:i,disablePortal:s,modifiers:l,open:u,placement:c,popperOptions:d,popperRef:p,slotProps:h={},slots:f={},TransitionProps:m}=e,g=(0,Ue.A)(e,S_),v=a.useRef(null),y=(0,ja.A)(v,t),b=a.useRef(null),x=(0,ja.A)(b,p),A=a.useRef(x);(0,Dm.A)(()=>{A.current=x},[x]),a.useImperativeHandle(p,()=>b.current,[]);const D=function(e,t){if("ltr"===t)return e;switch(e){case"bottom-end":return"bottom-start";case"bottom-start":return"bottom-end";case"top-end":return"top-start";case"top-start":return"top-end";default:return e}}(c,i),[k,w]=a.useState(D),[S,E]=a.useState(__(r));a.useEffect(()=>{b.current&&b.current.forceUpdate()}),a.useEffect(()=>{r&&E(__(r))},[r]),(0,Dm.A)(()=>{if(!S||!u)return;let e=[{name:"preventOverflow",options:{altBoundary:s}},{name:"flip",options:{altBoundary:s}},{name:"onUpdate",enabled:!0,phase:"afterWrite",fn:e=>{let{state:t}=e;(e=>{w(e.placement)})(t)}}];null!=l&&(e=e.concat(l)),d&&null!=d.modifiers&&(e=e.concat(d.modifiers));const t=k_(S,v.current,(0,We.A)({placement:D},d,{modifiers:e}));return A.current(t),()=>{t.destroy(),A.current(null)}},[S,s,l,u,d,D]);const _={placement:k};null!==m&&(_.TransitionProps=m);const C=(e=>{const{classes:t}=e;return(0,ut.A)({root:["root"]},w_,t)})(e),F=null!=(n=f.root)?n:"div",T=ev({elementType:F,externalSlotProps:h.root,externalForwardedProps:g,additionalProps:{role:"tooltip",ref:y},ownerState:e,className:C.root});return(0,Je.jsx)(F,(0,We.A)({},T,{children:"function"===typeof o?o(_):o}))}),j_=a.forwardRef(function(e,t){const{anchorEl:n,children:r,container:o,direction:i="ltr",disablePortal:s=!1,keepMounted:l=!1,modifiers:u,open:c,placement:d="bottom",popperOptions:p=F_,popperRef:h,style:f,transition:m=!1,slotProps:g={},slots:v={}}=e,y=(0,Ue.A)(e,E_),[b,x]=a.useState(!0);if(!l&&!c&&(!m||b))return null;let A;if(o)A=o;else if(n){const e=__(n);A=e&&C_(e)?(0,Pv.A)(e).body:(0,Pv.A)(null).body}const D=c||!l||m&&!b?void 0:"none",k=m?{in:c,onEnter:()=>{x(!1)},onExited:()=>{x(!0)}}:void 0;return(0,Je.jsx)(Wv,{disablePortal:s,container:A,children:(0,Je.jsx)(T_,(0,We.A)({anchorEl:n,direction:i,disablePortal:s,modifiers:u,ref:t,open:m?!b:c,placement:d,popperOptions:p,popperRef:h,slotProps:g,slots:v},y,{style:(0,We.A)({position:"fixed",top:0,left:0,display:D},f),TransitionProps:k,children:r}))})}),z_=j_,I_=["anchorEl","component","components","componentsProps","container","disablePortal","keepMounted","modifiers","open","placement","popperOptions","popperRef","transition","slots","slotProps"],L_=(0,ht.Ay)(z_,{name:"MuiPopper",slot:"Root",overridesResolver:(e,t)=>t.root})({}),P_=a.forwardRef(function(e,t){var n;const r=(0,lE.A)(),o=(0,pt.b)({props:e,name:"MuiPopper"}),{anchorEl:a,component:i,components:s,componentsProps:l,container:u,disablePortal:c,keepMounted:d,modifiers:p,open:h,placement:f,popperOptions:m,popperRef:g,transition:v,slots:y,slotProps:b}=o,x=(0,Ue.A)(o,I_),A=null!=(n=null==y?void 0:y.root)?n:null==s?void 0:s.Root,D=(0,We.A)({anchorEl:a,container:u,disablePortal:c,keepMounted:d,modifiers:p,open:h,placement:f,popperOptions:m,popperRef:g,transition:v},x);return(0,Je.jsx)(L_,(0,We.A)({as:i,direction:null==r?void 0:r.direction,slots:{root:A},slotProps:null!=b?b:l},D,{ref:t}))});function R_(e){return(0,ft.Ay)("MuiTooltip",e)}const N_=(0,rt.A)("MuiTooltip",["popper","popperInteractive","popperArrow","popperClose","tooltip","tooltipArrow","touch","tooltipPlacementLeft","tooltipPlacementRight","tooltipPlacementTop","tooltipPlacementBottom","arrow"]),O_=["arrow","children","classes","components","componentsProps","describeChild","disableFocusListener","disableHoverListener","disableInteractive","disableTouchListener","enterDelay","enterNextDelay","enterTouchDelay","followCursor","id","leaveDelay","leaveTouchDelay","onClose","onOpen","open","placement","PopperComponent","PopperProps","slotProps","slots","title","TransitionComponent","TransitionProps"];const B_=(0,ht.Ay)(P_,{name:"MuiTooltip",slot:"Popper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.popper,!n.disableInteractive&&t.popperInteractive,n.arrow&&t.popperArrow,!n.open&&t.popperClose]}})(e=>{let{theme:t,ownerState:n,open:r}=e;return(0,We.A)({zIndex:(t.vars||t).zIndex.tooltip,pointerEvents:"none"},!n.disableInteractive&&{pointerEvents:"auto"},!r&&{pointerEvents:"none"},n.arrow&&{['&[data-popper-placement*="bottom"] .'.concat(N_.arrow)]:{top:0,marginTop:"-0.71em","&::before":{transformOrigin:"0 100%"}},['&[data-popper-placement*="top"] .'.concat(N_.arrow)]:{bottom:0,marginBottom:"-0.71em","&::before":{transformOrigin:"100% 0"}},['&[data-popper-placement*="right"] .'.concat(N_.arrow)]:(0,We.A)({},n.isRtl?{right:0,marginRight:"-0.71em"}:{left:0,marginLeft:"-0.71em"},{height:"1em",width:"0.71em","&::before":{transformOrigin:"100% 100%"}}),['&[data-popper-placement*="left"] .'.concat(N_.arrow)]:(0,We.A)({},n.isRtl?{left:0,marginLeft:"-0.71em"}:{right:0,marginRight:"-0.71em"},{height:"1em",width:"0.71em","&::before":{transformOrigin:"0 0"}})})}),M_=(0,ht.Ay)("div",{name:"MuiTooltip",slot:"Tooltip",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.tooltip,n.touch&&t.touch,n.arrow&&t.tooltipArrow,t["tooltipPlacement".concat((0,dt.A)(n.placement.split("-")[0]))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({backgroundColor:t.vars?t.vars.palette.Tooltip.bg:(0,Ta.X4)(t.palette.grey[700],.92),borderRadius:(t.vars||t).shape.borderRadius,color:(t.vars||t).palette.common.white,fontFamily:t.typography.fontFamily,padding:"4px 8px",fontSize:t.typography.pxToRem(11),maxWidth:300,margin:2,wordWrap:"break-word",fontWeight:t.typography.fontWeightMedium},n.arrow&&{position:"relative",margin:0},n.touch&&{padding:"8px 16px",fontSize:t.typography.pxToRem(14),lineHeight:"".concat((r=16/14,Math.round(1e5*r)/1e5),"em"),fontWeight:t.typography.fontWeightRegular},{[".".concat(N_.popper,'[data-popper-placement*="left"] &')]:(0,We.A)({transformOrigin:"right center"},n.isRtl?(0,We.A)({marginLeft:"14px"},n.touch&&{marginLeft:"24px"}):(0,We.A)({marginRight:"14px"},n.touch&&{marginRight:"24px"})),[".".concat(N_.popper,'[data-popper-placement*="right"] &')]:(0,We.A)({transformOrigin:"left center"},n.isRtl?(0,We.A)({marginRight:"14px"},n.touch&&{marginRight:"24px"}):(0,We.A)({marginLeft:"14px"},n.touch&&{marginLeft:"24px"})),[".".concat(N_.popper,'[data-popper-placement*="top"] &')]:(0,We.A)({transformOrigin:"center bottom",marginBottom:"14px"},n.touch&&{marginBottom:"24px"}),[".".concat(N_.popper,'[data-popper-placement*="bottom"] &')]:(0,We.A)({transformOrigin:"center top",marginTop:"14px"},n.touch&&{marginTop:"24px"})});var r}),W_=(0,ht.Ay)("span",{name:"MuiTooltip",slot:"Arrow",overridesResolver:(e,t)=>t.arrow})(e=>{let{theme:t}=e;return{overflow:"hidden",position:"absolute",width:"1em",height:"0.71em",boxSizing:"border-box",color:t.vars?t.vars.palette.Tooltip.bg:(0,Ta.X4)(t.palette.grey[700],.9),"&::before":{content:'""',margin:"auto",display:"block",width:"100%",height:"100%",backgroundColor:"currentColor",transform:"rotate(45deg)"}}});let U_=!1;const V_=new si.E;let H_={x:0,y:0};function G_(e,t){return function(n){for(var r=arguments.length,o=new Array(r>1?r-1:0),a=1;a{void 0!==fe.current&&(document.body.style.WebkitUserSelect=fe.current,fe.current=void 0),ue.clear()});a.useEffect(()=>me,[me]);const ge=e=>{V_.clear(),U_=!0,de(!0),M&&!pe&&M(e)},ve=(0,Xa.A)(e=>{V_.start(800+N,()=>{U_=!1}),de(!1),B&&pe&&B(e),ie.start(J.transitions.duration.shortest,()=>{oe.current=!1})}),ye=e=>{oe.current&&"touchstart"!==e.type||(ee&&ee.removeAttribute("title"),se.clear(),le.clear(),z||U_&&I?se.start(U_?I:z,()=>{ge(e)}):ge(e))},be=e=>{se.clear(),le.start(N,()=>{ve(e)})},{isFocusVisibleRef:xe,onBlur:Ae,onFocus:De,ref:ke}=(0,Qa.A)(),[,we]=a.useState(!1),Se=e=>{Ae(e),!1===xe.current&&(we(!1),be(e))},Ee=e=>{ee||te(e.currentTarget),De(e),!0===xe.current&&(we(!0),ye(e))},_e=e=>{oe.current=!0;const t=Q.props;t.onTouchStart&&t.onTouchStart(e)},Ce=e=>{_e(e),le.clear(),ie.clear(),me(),fe.current=document.body.style.WebkitUserSelect,document.body.style.WebkitUserSelect="none",ue.start(L,()=>{document.body.style.WebkitUserSelect=fe.current,ye(e)})},Fe=e=>{Q.props.onTouchEnd&&Q.props.onTouchEnd(e),me(),le.start(O,()=>{ve(e)})};a.useEffect(()=>{if(pe)return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)};function e(e){"Escape"!==e.key&&"Esc"!==e.key||ve(e)}},[ve,pe]);const Te=(0,Ya.A)(Kg(Q),ke,te,t);K||0===K||(pe=!1);const je=a.useRef(),ze={},Ie="string"===typeof K;_?(ze.title=pe||!Ie||F?null:K,ze["aria-describedby"]=pe?he:null):(ze["aria-label"]=Ie?K:null,ze["aria-labelledby"]=pe&&!Ie?he:null);const Le=(0,We.A)({},ze,X,Q.props,{className:(0,Ve.A)(X.className,Q.props.className),onTouchStart:_e,ref:Te},P?{onMouseMove:e=>{const t=Q.props;t.onMouseMove&&t.onMouseMove(e),H_={x:e.clientX,y:e.clientY},je.current&&je.current.update()}}:{});const Pe={};j||(Le.onTouchStart=Ce,Le.onTouchEnd=Fe),F||(Le.onMouseOver=G_(ye,Le.onMouseOver),Le.onMouseLeave=G_(be,Le.onMouseLeave),ae||(Pe.onMouseOver=ye,Pe.onMouseLeave=be)),C||(Le.onFocus=G_(Ee,Le.onFocus),Le.onBlur=G_(Se,Le.onBlur),ae||(Pe.onFocus=Ee,Pe.onBlur=Se));const Re=a.useMemo(()=>{var e;let t=[{name:"arrow",enabled:Boolean(ne),options:{element:ne,padding:4}}];return null!=(e=H.popperOptions)&&e.modifiers&&(t=t.concat(H.popperOptions.modifiers)),(0,We.A)({},H.popperOptions,{modifiers:t})},[ne,H]),Ne=(0,We.A)({},D,{isRtl:Z,arrow:k,disableInteractive:ae,placement:U,PopperComponentProp:V,touch:oe.current}),Oe=(e=>{const{classes:t,disableInteractive:n,arrow:r,touch:o,placement:a}=e,i={popper:["popper",!n&&"popperInteractive",r&&"popperArrow"],tooltip:["tooltip",r&&"tooltipArrow",o&&"touch","tooltipPlacement".concat((0,dt.A)(a.split("-")[0]))],arrow:["arrow"]};return(0,ut.A)(i,R_,t)})(Ne),Be=null!=(n=null!=(r=q.popper)?r:S.Popper)?n:B_,Me=null!=(o=null!=(i=null!=(s=q.transition)?s:S.Transition)?i:$)?o:Lv,He=null!=(l=null!=(u=q.tooltip)?u:S.Tooltip)?l:M_,Ge=null!=(c=null!=(d=q.arrow)?d:S.Arrow)?c:W_,qe=Ia(Be,(0,We.A)({},H,null!=(p=G.popper)?p:E.popper,{className:(0,Ve.A)(Oe.popper,null==H?void 0:H.className,null==(h=null!=(f=G.popper)?f:E.popper)?void 0:h.className)}),Ne),Ke=Ia(Me,(0,We.A)({},Y,null!=(m=G.transition)?m:E.transition),Ne),$e=Ia(He,(0,We.A)({},null!=(g=G.tooltip)?g:E.tooltip,{className:(0,Ve.A)(Oe.tooltip,null==(v=null!=(y=G.tooltip)?y:E.tooltip)?void 0:v.className)}),Ne),Ye=Ia(Ge,(0,We.A)({},null!=(b=G.arrow)?b:E.arrow,{className:(0,Ve.A)(Oe.arrow,null==(x=null!=(A=G.arrow)?A:E.arrow)?void 0:x.className)}),Ne);return(0,Je.jsxs)(a.Fragment,{children:[a.cloneElement(Q,Le),(0,Je.jsx)(Be,(0,We.A)({as:null!=V?V:P_,placement:U,anchorEl:P?{getBoundingClientRect:()=>({top:H_.y,left:H_.x,right:H_.x,bottom:H_.y,width:0,height:0})}:ee,popperRef:je,open:!!ee&&pe,id:he,transition:!0},Pe,qe,{popperOptions:Re,children:e=>{let{TransitionProps:t}=e;return(0,Je.jsx)(Me,(0,We.A)({timeout:J.transitions.duration.shorter},t,Ke,{children:(0,Je.jsxs)(He,(0,We.A)({},$e,{children:[K,k?(0,Je.jsx)(Ge,(0,We.A)({},Ye,{ref:re})):null]}))}))}}))]})}),K_=q_;var $_=n(4399),Y_=n(7470),X_=n(4307),Q_=n(5493);const J_="{{key}}",Z_=(e,t,n)=>{const r=(e=>"string"===typeof e&&e.startsWith("models/")?e.slice(7):e)("string"===typeof n?n.trim():"");r&&!t.has(r)&&(t.add(r),e.push(r))};const eC=(e,t,n)=>{try{const r=new URL(e);return r.searchParams.set(t,n),r.toString()}catch(r){const o=e.includes("?")?"&":"?";return"".concat(e).concat(o).concat(encodeURIComponent(t),"=").concat(encodeURIComponent(n))}};async function tC(e){let{apiType:t,modelListUrl:r,key:o,httpTimeout:a}=e;const{fetchHandle:i,fnPolyfill:s}=await Promise.resolve().then(n.bind(n,1762)),l=function(e){let{apiType:t,modelListUrl:n,key:r}=e;const o=(n||"").trim(),a=(r||"").trim();return o&&a?o.includes(J_)?{input:o.replaceAll(J_,encodeURIComponent(a)),init:{method:"GET"}}:t===Q_.lL?{input:eC(o,"key",a),init:{method:"GET"}}:{input:o,init:{method:"GET",headers:{Authorization:"Bearer ".concat(a)}}}:null}({apiType:t,modelListUrl:r,key:o});if(!l)return[];return function(e){if(!e||"object"!==typeof e)return[];const t=[],n=new Set;return[e.data,e.models].filter(Array.isArray).forEach(e=>{e.forEach(e=>{if("string"===typeof e)return void Z_(t,n,e);if(!e||"object"!==typeof e)return;const r=[e.id,e.name,e.baseModelId].find(e=>"string"===typeof e&&e.trim());Z_(t,n,r)})}),t}(await s({fn:i,input:l.input,init:l.init,opts:{httpTimeout:a,expect:"json"}}))}var nC=n(2037);const rC=e=>{const t=a.useRef({});return a.useEffect(()=>{t.current=e}),t.current};function oC(e){return"undefined"!==typeof e.normalize?e.normalize("NFD").replace(/[\u0300-\u036f]/g,""):e}function aC(e,t){for(let n=0;n0&&void 0!==arguments[0]?arguments[0]:{};const{ignoreAccents:t=!0,ignoreCase:n=!0,limit:r,matchFrom:o="any",stringify:a,trim:i=!1}=e;return(e,s)=>{let{inputValue:l,getOptionLabel:u}=s,c=i?l.trim():l;n&&(c=c.toLowerCase()),t&&(c=oC(c));const d=c?e.filter(e=>{let r=(a||u)(e);return n&&(r=r.toLowerCase()),t&&(r=oC(r)),"start"===o?0===r.indexOf(c):r.indexOf(c)>-1}):e;return"number"===typeof r?d.slice(0,r):d}}(),sC=e=>{var t;return null!==e.current&&(null==(t=e.current.parentElement)?void 0:t.contains(document.activeElement))},lC=[];const uC=function(e){const{unstable_isActiveElementInListbox:t=sC,unstable_classNamePrefix:n="Mui",autoComplete:r=!1,autoHighlight:o=!1,autoSelect:i=!1,blurOnSelect:s=!1,clearOnBlur:l=!e.freeSolo,clearOnEscape:u=!1,componentName:c="useAutocomplete",defaultValue:d=(e.multiple?lC:null),disableClearable:p=!1,disableCloseOnSelect:h=!1,disabled:f,disabledItemsFocusable:m=!1,disableListWrap:g=!1,filterOptions:v=iC,filterSelectedOptions:y=!1,freeSolo:b=!1,getOptionDisabled:x,getOptionKey:A,getOptionLabel:D=e=>{var t;return null!=(t=e.label)?t:e},groupBy:k,handleHomeEndKeys:w=!e.freeSolo,id:S,includeInputInList:E=!1,inputValue:_,isOptionEqualToValue:C=(e,t)=>e===t,multiple:F=!1,onChange:T,onClose:j,onHighlightChange:z,onInputChange:I,onOpen:L,open:P,openOnFocus:R=!1,options:N,readOnly:O=!1,selectOnFocus:B=!e.freeSolo,value:M}=e,W=(0,ym.A)(S);let U=D;U=e=>{const t=D(e);return"string"!==typeof t?String(t):t};const V=a.useRef(!1),H=a.useRef(!0),G=a.useRef(null),q=a.useRef(null),[K,$]=a.useState(null),[Y,X]=a.useState(-1),Q=o?0:-1,J=a.useRef(Q),[Z,ee]=(0,nC.A)({controlled:M,default:d,name:c}),[te,ne]=(0,nC.A)({controlled:_,default:"",name:c,state:"inputValue"}),[re,oe]=a.useState(!1),ae=a.useCallback((e,t)=>{if(!(F?Z.length!y||!(F?Z:[Z]).some(t=>null!==t&&C(e,t))),{inputValue:ce&&le?"":te,getOptionLabel:U}):[],he=rC({filteredOptions:pe,value:Z,inputValue:te});a.useEffect(()=>{const e=Z!==he.value;re&&!e||b&&!e||ae(null,Z)},[Z,ae,re,he.value,b]);const fe=ie&&pe.length>0&&!O,me=(0,Am.A)(e=>{-1===e?G.current.focus():K.querySelector('[data-tag-index="'.concat(e,'"]')).focus()});a.useEffect(()=>{F&&Y>Z.length-1&&(X(-1),me(-1))},[Z,F,Y,me]);const ge=(0,Am.A)(e=>{let{event:t,index:r,reason:o="auto"}=e;if(J.current=r,-1===r?G.current.removeAttribute("aria-activedescendant"):G.current.setAttribute("aria-activedescendant","".concat(W,"-option-").concat(r)),z&&z(t,-1===r?null:pe[r],o),!q.current)return;const a=q.current.querySelector('[role="option"].'.concat(n,"-focused"));a&&(a.classList.remove("".concat(n,"-focused")),a.classList.remove("".concat(n,"-focusVisible")));let i=q.current;if("listbox"!==q.current.getAttribute("role")&&(i=q.current.parentElement.querySelector('[role="listbox"]')),!i)return;if(-1===r)return void(i.scrollTop=0);const s=q.current.querySelector('[data-option-index="'.concat(r,'"]'));if(s&&(s.classList.add("".concat(n,"-focused")),"keyboard"===o&&s.classList.add("".concat(n,"-focusVisible")),i.scrollHeight>i.clientHeight&&"mouse"!==o&&"touch"!==o)){const e=s,t=i.clientHeight+i.scrollTop,n=e.offsetTop+e.offsetHeight;n>t?i.scrollTop=n-i.clientHeight:e.offsetTop-e.offsetHeight*(k?1.3:0){let{event:t,diff:n,direction:o="next",reason:a="auto"}=e;if(!de)return;const i=function(e,t){if(!q.current||e<0||e>=pe.length)return-1;let n=e;for(;;){const r=q.current.querySelector('[data-option-index="'.concat(n,'"]')),o=!m&&(!r||r.disabled||"true"===r.getAttribute("aria-disabled"));if(r&&r.hasAttribute("tabindex")&&!o)return n;if(n="next"===t?(n+1)%pe.length:(n-1+pe.length)%pe.length,n===e)return-1}}((()=>{const e=pe.length-1;if("reset"===n)return Q;if("start"===n)return 0;if("end"===n)return e;const t=J.current+n;return t<0?-1===t&&E?-1:g&&-1!==J.current||Math.abs(n)>1?0:e:t>e?t===e+1&&E?-1:g||Math.abs(n)>1?e:0:t})(),o);if(ge({index:i,reason:a,event:t}),r&&"reset"!==n)if(-1===i)G.current.value=te;else{const e=U(pe[i]);G.current.value=e;0===e.toLowerCase().indexOf(te.toLowerCase())&&te.length>0&&G.current.setSelectionRange(te.length,e.length)}}),ye=a.useCallback(()=>{if(!de)return;const e=(()=>{if(-1!==J.current&&he.filteredOptions&&he.filteredOptions.length!==pe.length&&he.inputValue===te&&(F?Z.length===he.value.length&&he.value.every((e,t)=>U(Z[t])===U(e)):(e=he.value,t=Z,(e?U(e):"")===(t?U(t):"")))){const e=he.filteredOptions[J.current];if(e)return aC(pe,t=>U(t)===U(e))}var e,t;return-1})();if(-1!==e)return void(J.current=e);const t=F?Z[0]:Z;if(0!==pe.length&&null!=t){if(q.current){if(null!=t){const e=pe[J.current];if(F&&e&&-1!==aC(Z,t=>C(e,t)))return;const n=aC(pe,e=>C(e,t));return void(-1===n?ve({diff:"reset"}):ge({index:n}))}J.current>=pe.length-1?ge({index:pe.length-1}):ge({index:J.current})}}else ve({diff:"reset"})},[pe.length,!F&&Z,y,ve,ge,de,te,F]),be=(0,Am.A)(e=>{(0,Mv.A)(q,e),e&&ye()});a.useEffect(()=>{ye()},[ye]);const xe=e=>{ie||(se(!0),ue(!0),L&&L(e))},Ae=(e,t)=>{ie&&(se(!1),j&&j(e,t))},De=(e,t,n,r)=>{if(F){if(Z.length===t.length&&Z.every((e,n)=>e===t[n]))return}else if(Z===t)return;T&&T(e,t,n,r),ee(t)},ke=a.useRef(!1),we=function(e,t){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"options",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"selectOption",o=t;if(F){o=Array.isArray(Z)?Z.slice():[];const e=aC(o,e=>C(t,e));-1===e?o.push(t):"freeSolo"!==n&&(o.splice(e,1),r="removeOption")}ae(e,o),De(e,o,r,{option:t}),h||e&&(e.ctrlKey||e.metaKey)||Ae(e,r),(!0===s||"touch"===s&&ke.current||"mouse"===s&&!ke.current)&&G.current.blur()},Se=(e,t)=>{if(!F)return;""===te&&Ae(e,"toggleInput");let n=Y;-1===Y?""===te&&"previous"===t&&(n=Z.length-1):(n+="next"===t?1:-1,n<0&&(n=0),n===Z.length&&(n=-1)),n=function(e,t){if(-1===e)return-1;let n=e;for(;;){if("next"===t&&n===Z.length||"previous"===t&&-1===n)return-1;const e=K.querySelector('[data-tag-index="'.concat(n,'"]'));if(e&&e.hasAttribute("tabindex")&&!e.disabled&&"true"!==e.getAttribute("aria-disabled"))return n;n+="next"===t?1:-1}}(n,t),X(n),me(n)},Ee=e=>{V.current=!0,ne(""),I&&I(e,"","clear"),De(e,F?[]:null,"clear")},_e=e=>t=>{if(e.onKeyDown&&e.onKeyDown(t),!t.defaultMuiPrevented&&(-1!==Y&&-1===["ArrowLeft","ArrowRight"].indexOf(t.key)&&(X(-1),me(-1)),229!==t.which))switch(t.key){case"Home":de&&w&&(t.preventDefault(),ve({diff:"start",direction:"next",reason:"keyboard",event:t}));break;case"End":de&&w&&(t.preventDefault(),ve({diff:"end",direction:"previous",reason:"keyboard",event:t}));break;case"PageUp":t.preventDefault(),ve({diff:-5,direction:"previous",reason:"keyboard",event:t}),xe(t);break;case"PageDown":t.preventDefault(),ve({diff:5,direction:"next",reason:"keyboard",event:t}),xe(t);break;case"ArrowDown":t.preventDefault(),ve({diff:1,direction:"next",reason:"keyboard",event:t}),xe(t);break;case"ArrowUp":t.preventDefault(),ve({diff:-1,direction:"previous",reason:"keyboard",event:t}),xe(t);break;case"ArrowLeft":Se(t,"previous");break;case"ArrowRight":Se(t,"next");break;case"Enter":if(-1!==J.current&&de){const e=pe[J.current],n=!!x&&x(e);if(t.preventDefault(),n)return;we(t,e,"selectOption"),r&&G.current.setSelectionRange(G.current.value.length,G.current.value.length)}else b&&""!==te&&!1===ce&&(F&&t.preventDefault(),we(t,te,"createOption","freeSolo"));break;case"Escape":de?(t.preventDefault(),t.stopPropagation(),Ae(t,"escape")):u&&(""!==te||F&&Z.length>0)&&(t.preventDefault(),t.stopPropagation(),Ee(t));break;case"Backspace":if(F&&!O&&""===te&&Z.length>0){const e=-1===Y?Z.length-1:Y,n=Z.slice();n.splice(e,1),De(t,n,"removeOption",{option:Z[e]})}break;case"Delete":if(F&&!O&&""===te&&Z.length>0&&-1!==Y){const e=Y,n=Z.slice();n.splice(e,1),De(t,n,"removeOption",{option:Z[e]})}}},Ce=e=>{oe(!0),R&&!V.current&&xe(e)},Fe=e=>{t(q)?G.current.focus():(oe(!1),H.current=!0,V.current=!1,i&&-1!==J.current&&de?we(e,pe[J.current],"blur"):i&&b&&""!==te?we(e,te,"blur","freeSolo"):l&&ae(e,Z),Ae(e,"blur"))},Te=e=>{const t=e.target.value;te!==t&&(ne(t),ue(!1),I&&I(e,t,"input")),""===t?p||F||De(e,null,"clear"):xe(e)},je=e=>{const t=Number(e.currentTarget.getAttribute("data-option-index"));J.current!==t&&ge({event:e,index:t,reason:"mouse"})},ze=e=>{ge({event:e,index:Number(e.currentTarget.getAttribute("data-option-index")),reason:"touch"}),ke.current=!0},Ie=e=>{const t=Number(e.currentTarget.getAttribute("data-option-index"));we(e,pe[t],"selectOption"),ke.current=!1},Le=e=>t=>{const n=Z.slice();n.splice(e,1),De(t,n,"removeOption",{option:Z[e]})},Pe=e=>{ie?Ae(e,"toggleInput"):xe(e)},Re=e=>{e.currentTarget.contains(e.target)&&e.target.getAttribute("id")!==W&&e.preventDefault()},Ne=e=>{e.currentTarget.contains(e.target)&&(G.current.focus(),B&&H.current&&G.current.selectionEnd-G.current.selectionStart===0&&G.current.select(),H.current=!1)},Oe=e=>{f||""!==te&&ie||Pe(e)};let Be=b&&te.length>0;Be=Be||(F?Z.length>0:null!==Z);let Me=pe;if(k){new Map;Me=pe.reduce((e,t,n)=>{const r=k(t);return e.length>0&&e[e.length-1].group===r?e[e.length-1].options.push(t):e.push({key:n,index:n,group:r,options:[t]}),e},[])}return f&&re&&Fe(),{getRootProps:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,We.A)({"aria-owns":fe?"".concat(W,"-listbox"):null},e,{onKeyDown:_e(e),onMouseDown:Re,onClick:Ne})},getInputLabelProps:()=>({id:"".concat(W,"-label"),htmlFor:W}),getInputProps:()=>({id:W,value:te,onBlur:Fe,onFocus:Ce,onChange:Te,onMouseDown:Oe,"aria-activedescendant":de?"":null,"aria-autocomplete":r?"both":"list","aria-controls":fe?"".concat(W,"-listbox"):void 0,"aria-expanded":fe,autoComplete:"off",ref:G,autoCapitalize:"none",spellCheck:"false",role:"combobox",disabled:f}),getClearProps:()=>({tabIndex:-1,type:"button",onClick:Ee}),getPopupIndicatorProps:()=>({tabIndex:-1,type:"button",onClick:Pe}),getTagProps:e=>{let{index:t}=e;return(0,We.A)({key:t,"data-tag-index":t,tabIndex:-1},!O&&{onDelete:Le(t)})},getListboxProps:()=>({role:"listbox",id:"".concat(W,"-listbox"),"aria-labelledby":"".concat(W,"-label"),ref:be,onMouseDown:e=>{e.preventDefault()}}),getOptionProps:e=>{let{index:t,option:n}=e;var r;const o=(F?Z:[Z]).some(e=>null!=e&&C(n,e)),a=!!x&&x(n);return{key:null!=(r=null==A?void 0:A(n))?r:U(n),tabIndex:-1,role:"option",id:"".concat(W,"-option-").concat(t),onMouseMove:je,onClick:Ie,onTouchStart:ze,"data-option-index":t,"aria-disabled":a,"aria-selected":o}},id:W,inputValue:te,value:Z,dirty:Be,expanded:de&&K,popupOpen:de,focused:re||-1!==Y,anchorEl:K,setAnchorEl:$,focusedTag:Y,groupedOptions:Me}};function cC(e){return(0,ft.Ay)("MuiListSubheader",e)}(0,rt.A)("MuiListSubheader",["root","colorPrimary","colorInherit","gutters","inset","sticky"]);const dC=["className","color","component","disableGutters","disableSticky","inset"],pC=(0,ht.Ay)("li",{name:"MuiListSubheader",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,"default"!==n.color&&t["color".concat((0,dt.A)(n.color))],!n.disableGutters&&t.gutters,n.inset&&t.inset,!n.disableSticky&&t.sticky]}})(e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({boxSizing:"border-box",lineHeight:"48px",listStyle:"none",color:(t.vars||t).palette.text.secondary,fontFamily:t.typography.fontFamily,fontWeight:t.typography.fontWeightMedium,fontSize:t.typography.pxToRem(14)},"primary"===n.color&&{color:(t.vars||t).palette.primary.main},"inherit"===n.color&&{color:"inherit"},!n.disableGutters&&{paddingLeft:16,paddingRight:16},n.inset&&{paddingLeft:72},!n.disableSticky&&{position:"sticky",top:0,zIndex:1,backgroundColor:(t.vars||t).palette.background.paper})}),hC=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiListSubheader"}),{className:r,color:o="default",component:a="li",disableGutters:i=!1,disableSticky:s=!1,inset:l=!1}=n,u=(0,Ue.A)(n,dC),c=(0,We.A)({},n,{color:o,component:a,disableGutters:i,disableSticky:s,inset:l}),d=(e=>{const{classes:t,color:n,disableGutters:r,inset:o,disableSticky:a}=e,i={root:["root","default"!==n&&"color".concat((0,dt.A)(n)),!r&&"gutters",o&&"inset",!a&&"sticky"]};return(0,ut.A)(i,cC,t)})(c);return(0,Je.jsx)(pC,(0,We.A)({as:a,className:(0,Ve.A)(d.root,r),ref:t,ownerState:c},u))});hC.muiSkipListHighlight=!0;const fC=hC,mC=(0,Ni.A)((0,Je.jsx)("path",{d:"M12 2C6.47 2 2 6.47 2 12s4.47 10 10 10 10-4.47 10-10S17.53 2 12 2zm5 13.59L15.59 17 12 13.41 8.41 17 7 15.59 10.59 12 7 8.41 8.41 7 12 10.59 15.59 7 17 8.41 13.41 12 17 15.59z"}),"Cancel");function gC(e){return(0,ft.Ay)("MuiChip",e)}const vC=(0,rt.A)("MuiChip",["root","sizeSmall","sizeMedium","colorError","colorInfo","colorPrimary","colorSecondary","colorSuccess","colorWarning","disabled","clickable","clickableColorPrimary","clickableColorSecondary","deletable","deletableColorPrimary","deletableColorSecondary","outlined","filled","outlinedPrimary","outlinedSecondary","filledPrimary","filledSecondary","avatar","avatarSmall","avatarMedium","avatarColorPrimary","avatarColorSecondary","icon","iconSmall","iconMedium","iconColorPrimary","iconColorSecondary","label","labelSmall","labelMedium","deleteIcon","deleteIconSmall","deleteIconMedium","deleteIconColorPrimary","deleteIconColorSecondary","deleteIconOutlinedColorPrimary","deleteIconOutlinedColorSecondary","deleteIconFilledColorPrimary","deleteIconFilledColorSecondary","focusVisible"]),yC=["avatar","className","clickable","color","component","deleteIcon","disabled","icon","label","onClick","onDelete","onKeyDown","onKeyUp","size","variant","tabIndex","skipFocusWhenDisabled"],bC=(0,ht.Ay)("div",{name:"MuiChip",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e,{color:r,iconColor:o,clickable:a,onDelete:i,size:s,variant:l}=n;return[{["& .".concat(vC.avatar)]:t.avatar},{["& .".concat(vC.avatar)]:t["avatar".concat((0,dt.A)(s))]},{["& .".concat(vC.avatar)]:t["avatarColor".concat((0,dt.A)(r))]},{["& .".concat(vC.icon)]:t.icon},{["& .".concat(vC.icon)]:t["icon".concat((0,dt.A)(s))]},{["& .".concat(vC.icon)]:t["iconColor".concat((0,dt.A)(o))]},{["& .".concat(vC.deleteIcon)]:t.deleteIcon},{["& .".concat(vC.deleteIcon)]:t["deleteIcon".concat((0,dt.A)(s))]},{["& .".concat(vC.deleteIcon)]:t["deleteIconColor".concat((0,dt.A)(r))]},{["& .".concat(vC.deleteIcon)]:t["deleteIcon".concat((0,dt.A)(l),"Color").concat((0,dt.A)(r))]},t.root,t["size".concat((0,dt.A)(s))],t["color".concat((0,dt.A)(r))],a&&t.clickable,a&&"default"!==r&&t["clickableColor".concat((0,dt.A)(r),")")],i&&t.deletable,i&&"default"!==r&&t["deletableColor".concat((0,dt.A)(r))],t[l],t["".concat(l).concat((0,dt.A)(r))]]}})(e=>{let{theme:t,ownerState:n}=e;const r="light"===t.palette.mode?t.palette.grey[700]:t.palette.grey[300];return(0,We.A)({maxWidth:"100%",fontFamily:t.typography.fontFamily,fontSize:t.typography.pxToRem(13),display:"inline-flex",alignItems:"center",justifyContent:"center",height:32,color:(t.vars||t).palette.text.primary,backgroundColor:(t.vars||t).palette.action.selected,borderRadius:16,whiteSpace:"nowrap",transition:t.transitions.create(["background-color","box-shadow"]),cursor:"unset",outline:0,textDecoration:"none",border:0,padding:0,verticalAlign:"middle",boxSizing:"border-box",["&.".concat(vC.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity,pointerEvents:"none"},["& .".concat(vC.avatar)]:{marginLeft:5,marginRight:-6,width:24,height:24,color:t.vars?t.vars.palette.Chip.defaultAvatarColor:r,fontSize:t.typography.pxToRem(12)},["& .".concat(vC.avatarColorPrimary)]:{color:(t.vars||t).palette.primary.contrastText,backgroundColor:(t.vars||t).palette.primary.dark},["& .".concat(vC.avatarColorSecondary)]:{color:(t.vars||t).palette.secondary.contrastText,backgroundColor:(t.vars||t).palette.secondary.dark},["& .".concat(vC.avatarSmall)]:{marginLeft:4,marginRight:-4,width:18,height:18,fontSize:t.typography.pxToRem(10)},["& .".concat(vC.icon)]:(0,We.A)({marginLeft:5,marginRight:-6},"small"===n.size&&{fontSize:18,marginLeft:4,marginRight:-4},n.iconColor===n.color&&(0,We.A)({color:t.vars?t.vars.palette.Chip.defaultIconColor:r},"default"!==n.color&&{color:"inherit"})),["& .".concat(vC.deleteIcon)]:(0,We.A)({WebkitTapHighlightColor:"transparent",color:t.vars?"rgba(".concat(t.vars.palette.text.primaryChannel," / 0.26)"):(0,Ta.X4)(t.palette.text.primary,.26),fontSize:22,cursor:"pointer",margin:"0 5px 0 -6px","&:hover":{color:t.vars?"rgba(".concat(t.vars.palette.text.primaryChannel," / 0.4)"):(0,Ta.X4)(t.palette.text.primary,.4)}},"small"===n.size&&{fontSize:16,marginRight:4,marginLeft:-4},"default"!==n.color&&{color:t.vars?"rgba(".concat(t.vars.palette[n.color].contrastTextChannel," / 0.7)"):(0,Ta.X4)(t.palette[n.color].contrastText,.7),"&:hover, &:active":{color:(t.vars||t).palette[n.color].contrastText}})},"small"===n.size&&{height:24},"default"!==n.color&&{backgroundColor:(t.vars||t).palette[n.color].main,color:(t.vars||t).palette[n.color].contrastText},n.onDelete&&{["&.".concat(vC.focusVisible)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.action.selectedChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.focusOpacity,"))"):(0,Ta.X4)(t.palette.action.selected,t.palette.action.selectedOpacity+t.palette.action.focusOpacity)}},n.onDelete&&"default"!==n.color&&{["&.".concat(vC.focusVisible)]:{backgroundColor:(t.vars||t).palette[n.color].dark}})},e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({},n.clickable&&{userSelect:"none",WebkitTapHighlightColor:"transparent",cursor:"pointer","&:hover":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.action.selectedChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.hoverOpacity,"))"):(0,Ta.X4)(t.palette.action.selected,t.palette.action.selectedOpacity+t.palette.action.hoverOpacity)},["&.".concat(vC.focusVisible)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.action.selectedChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.focusOpacity,"))"):(0,Ta.X4)(t.palette.action.selected,t.palette.action.selectedOpacity+t.palette.action.focusOpacity)},"&:active":{boxShadow:(t.vars||t).shadows[1]}},n.clickable&&"default"!==n.color&&{["&:hover, &.".concat(vC.focusVisible)]:{backgroundColor:(t.vars||t).palette[n.color].dark}})},e=>{let{theme:t,ownerState:n}=e;return(0,We.A)({},"outlined"===n.variant&&{backgroundColor:"transparent",border:t.vars?"1px solid ".concat(t.vars.palette.Chip.defaultBorder):"1px solid ".concat("light"===t.palette.mode?t.palette.grey[400]:t.palette.grey[700]),["&.".concat(vC.clickable,":hover")]:{backgroundColor:(t.vars||t).palette.action.hover},["&.".concat(vC.focusVisible)]:{backgroundColor:(t.vars||t).palette.action.focus},["& .".concat(vC.avatar)]:{marginLeft:4},["& .".concat(vC.avatarSmall)]:{marginLeft:2},["& .".concat(vC.icon)]:{marginLeft:4},["& .".concat(vC.iconSmall)]:{marginLeft:2},["& .".concat(vC.deleteIcon)]:{marginRight:5},["& .".concat(vC.deleteIconSmall)]:{marginRight:3}},"outlined"===n.variant&&"default"!==n.color&&{color:(t.vars||t).palette[n.color].main,border:"1px solid ".concat(t.vars?"rgba(".concat(t.vars.palette[n.color].mainChannel," / 0.7)"):(0,Ta.X4)(t.palette[n.color].main,.7)),["&.".concat(vC.clickable,":hover")]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette[n.color].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,Ta.X4)(t.palette[n.color].main,t.palette.action.hoverOpacity)},["&.".concat(vC.focusVisible)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette[n.color].mainChannel," / ").concat(t.vars.palette.action.focusOpacity,")"):(0,Ta.X4)(t.palette[n.color].main,t.palette.action.focusOpacity)},["& .".concat(vC.deleteIcon)]:{color:t.vars?"rgba(".concat(t.vars.palette[n.color].mainChannel," / 0.7)"):(0,Ta.X4)(t.palette[n.color].main,.7),"&:hover, &:active":{color:(t.vars||t).palette[n.color].main}}})}),xC=(0,ht.Ay)("span",{name:"MuiChip",slot:"Label",overridesResolver:(e,t)=>{const{ownerState:n}=e,{size:r}=n;return[t.label,t["label".concat((0,dt.A)(r))]]}})(e=>{let{ownerState:t}=e;return(0,We.A)({overflow:"hidden",textOverflow:"ellipsis",paddingLeft:12,paddingRight:12,whiteSpace:"nowrap"},"outlined"===t.variant&&{paddingLeft:11,paddingRight:11},"small"===t.size&&{paddingLeft:8,paddingRight:8},"small"===t.size&&"outlined"===t.variant&&{paddingLeft:7,paddingRight:7})});function AC(e){return"Backspace"===e.key||"Delete"===e.key}const DC=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiChip"}),{avatar:r,className:o,clickable:i,color:s="default",component:l,deleteIcon:u,disabled:c=!1,icon:d,label:p,onClick:h,onDelete:f,onKeyDown:m,onKeyUp:g,size:v="medium",variant:y="filled",tabIndex:b,skipFocusWhenDisabled:x=!1}=n,A=(0,Ue.A)(n,yC),D=a.useRef(null),k=(0,Ya.A)(D,t),w=e=>{e.stopPropagation(),f&&f(e)},S=!(!1===i||!h)||i,E=S||f?Ti:l||"div",_=(0,We.A)({},n,{component:E,disabled:c,size:v,color:s,iconColor:a.isValidElement(d)&&d.props.color||s,onDelete:!!f,clickable:S,variant:y}),C=(e=>{const{classes:t,disabled:n,size:r,color:o,iconColor:a,onDelete:i,clickable:s,variant:l}=e,u={root:["root",l,n&&"disabled","size".concat((0,dt.A)(r)),"color".concat((0,dt.A)(o)),s&&"clickable",s&&"clickableColor".concat((0,dt.A)(o)),i&&"deletable",i&&"deletableColor".concat((0,dt.A)(o)),"".concat(l).concat((0,dt.A)(o))],label:["label","label".concat((0,dt.A)(r))],avatar:["avatar","avatar".concat((0,dt.A)(r)),"avatarColor".concat((0,dt.A)(o))],icon:["icon","icon".concat((0,dt.A)(r)),"iconColor".concat((0,dt.A)(a))],deleteIcon:["deleteIcon","deleteIcon".concat((0,dt.A)(r)),"deleteIconColor".concat((0,dt.A)(o)),"deleteIcon".concat((0,dt.A)(l),"Color").concat((0,dt.A)(o))]};return(0,ut.A)(u,gC,t)})(_),F=E===Ti?(0,We.A)({component:l||"div",focusVisibleClassName:C.focusVisible},f&&{disableRipple:!0}):{};let T=null;f&&(T=u&&a.isValidElement(u)?a.cloneElement(u,{className:(0,Ve.A)(u.props.className,C.deleteIcon),onClick:w}):(0,Je.jsx)(mC,{className:(0,Ve.A)(C.deleteIcon),onClick:w}));let j=null;r&&a.isValidElement(r)&&(j=a.cloneElement(r,{className:(0,Ve.A)(C.avatar,r.props.className)}));let z=null;return d&&a.isValidElement(d)&&(z=a.cloneElement(d,{className:(0,Ve.A)(C.icon,d.props.className)})),(0,Je.jsxs)(bC,(0,We.A)({as:E,className:(0,Ve.A)(C.root,o),disabled:!(!S||!c)||void 0,onClick:h,onKeyDown:e=>{e.currentTarget===e.target&&AC(e)&&e.preventDefault(),m&&m(e)},onKeyUp:e=>{e.currentTarget===e.target&&(f&&AC(e)?f(e):"Escape"===e.key&&D.current&&D.current.blur()),g&&g(e)},ref:k,tabIndex:x&&c?-1:b,ownerState:_},F,A,{children:[j||z,(0,Je.jsx)(xC,{className:(0,Ve.A)(C.label),ownerState:_,children:p}),T]}))}),kC=DC;function wC(e){return(0,ft.Ay)("MuiAutocomplete",e)}const SC=(0,rt.A)("MuiAutocomplete",["root","expanded","fullWidth","focused","focusVisible","tag","tagSizeSmall","tagSizeMedium","hasPopupIcon","hasClearIcon","inputRoot","input","inputFocused","endAdornment","clearIndicator","popupIndicator","popupIndicatorOpen","popper","popperDisablePortal","paper","listbox","loading","noOptions","option","groupLabel","groupUl"]);var EC,_C;const CC=["autoComplete","autoHighlight","autoSelect","blurOnSelect","ChipProps","className","clearIcon","clearOnBlur","clearOnEscape","clearText","closeText","componentsProps","defaultValue","disableClearable","disableCloseOnSelect","disabled","disabledItemsFocusable","disableListWrap","disablePortal","filterOptions","filterSelectedOptions","forcePopupIcon","freeSolo","fullWidth","getLimitTagsText","getOptionDisabled","getOptionKey","getOptionLabel","isOptionEqualToValue","groupBy","handleHomeEndKeys","id","includeInputInList","inputValue","limitTags","ListboxComponent","ListboxProps","loading","loadingText","multiple","noOptionsText","onChange","onClose","onHighlightChange","onInputChange","onOpen","open","openOnFocus","openText","options","PaperComponent","PopperComponent","popupIcon","readOnly","renderGroup","renderInput","renderOption","renderTags","selectOnFocus","size","slotProps","value"],FC=["ref"],TC=["key"],jC=["key"],zC=(0,ht.Ay)("div",{name:"MuiAutocomplete",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e,{fullWidth:r,hasClearIcon:o,hasPopupIcon:a,inputFocused:i,size:s}=n;return[{["& .".concat(SC.tag)]:t.tag},{["& .".concat(SC.tag)]:t["tagSize".concat((0,dt.A)(s))]},{["& .".concat(SC.inputRoot)]:t.inputRoot},{["& .".concat(SC.input)]:t.input},{["& .".concat(SC.input)]:i&&t.inputFocused},t.root,r&&t.fullWidth,a&&t.hasPopupIcon,o&&t.hasClearIcon]}})({["&.".concat(SC.focused," .").concat(SC.clearIndicator)]:{visibility:"visible"},"@media (pointer: fine)":{["&:hover .".concat(SC.clearIndicator)]:{visibility:"visible"}},["& .".concat(SC.tag)]:{margin:3,maxWidth:"calc(100% - 6px)"},["& .".concat(SC.inputRoot)]:{[".".concat(SC.hasPopupIcon,"&, .").concat(SC.hasClearIcon,"&")]:{paddingRight:30},[".".concat(SC.hasPopupIcon,".").concat(SC.hasClearIcon,"&")]:{paddingRight:56},["& .".concat(SC.input)]:{width:0,minWidth:30}},["& .".concat(Zm.root)]:{paddingBottom:1,"& .MuiInput-input":{padding:"4px 4px 4px 0px"}},["& .".concat(Zm.root,".").concat(Um.sizeSmall)]:{["& .".concat(Zm.input)]:{padding:"2px 4px 3px 0"}},["& .".concat(vg.root)]:{padding:9,[".".concat(SC.hasPopupIcon,"&, .").concat(SC.hasClearIcon,"&")]:{paddingRight:39},[".".concat(SC.hasPopupIcon,".").concat(SC.hasClearIcon,"&")]:{paddingRight:65},["& .".concat(SC.input)]:{padding:"7.5px 4px 7.5px 5px"},["& .".concat(SC.endAdornment)]:{right:9}},["& .".concat(vg.root,".").concat(Um.sizeSmall)]:{paddingTop:6,paddingBottom:6,paddingLeft:6,["& .".concat(SC.input)]:{padding:"2.5px 4px 2.5px 8px"}},["& .".concat(ig.root)]:{paddingTop:19,paddingLeft:8,[".".concat(SC.hasPopupIcon,"&, .").concat(SC.hasClearIcon,"&")]:{paddingRight:39},[".".concat(SC.hasPopupIcon,".").concat(SC.hasClearIcon,"&")]:{paddingRight:65},["& .".concat(ig.input)]:{padding:"7px 4px"},["& .".concat(SC.endAdornment)]:{right:9}},["& .".concat(ig.root,".").concat(Um.sizeSmall)]:{paddingBottom:1,["& .".concat(ig.input)]:{padding:"2.5px 4px"}},["& .".concat(Um.hiddenLabel)]:{paddingTop:8},["& .".concat(ig.root,".").concat(Um.hiddenLabel)]:{paddingTop:0,paddingBottom:0,["& .".concat(SC.input)]:{paddingTop:16,paddingBottom:17}},["& .".concat(ig.root,".").concat(Um.hiddenLabel,".").concat(Um.sizeSmall)]:{["& .".concat(SC.input)]:{paddingTop:8,paddingBottom:9}},["& .".concat(SC.input)]:{flexGrow:1,textOverflow:"ellipsis",opacity:0},variants:[{props:{fullWidth:!0},style:{width:"100%"}},{props:{size:"small"},style:{["& .".concat(SC.tag)]:{margin:2,maxWidth:"calc(100% - 4px)"}}},{props:{inputFocused:!0},style:{["& .".concat(SC.input)]:{opacity:1}}},{props:{multiple:!0},style:{["& .".concat(SC.inputRoot)]:{flexWrap:"wrap"}}}]}),IC=(0,ht.Ay)("div",{name:"MuiAutocomplete",slot:"EndAdornment",overridesResolver:(e,t)=>t.endAdornment})({position:"absolute",right:0,top:"50%",transform:"translate(0, -50%)"}),LC=(0,ht.Ay)(Ri,{name:"MuiAutocomplete",slot:"ClearIndicator",overridesResolver:(e,t)=>t.clearIndicator})({marginRight:-2,padding:4,visibility:"hidden"}),PC=(0,ht.Ay)(Ri,{name:"MuiAutocomplete",slot:"PopupIndicator",overridesResolver:(e,t)=>{let{ownerState:n}=e;return(0,We.A)({},t.popupIndicator,n.popupOpen&&t.popupIndicatorOpen)}})({padding:2,marginRight:-2,variants:[{props:{popupOpen:!0},style:{transform:"rotate(180deg)"}}]}),RC=(0,ht.Ay)(P_,{name:"MuiAutocomplete",slot:"Popper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(SC.option)]:t.option},t.popper,n.disablePortal&&t.popperDisablePortal]}})(e=>{let{theme:t}=e;return{zIndex:(t.vars||t).zIndex.modal,variants:[{props:{disablePortal:!0},style:{position:"absolute"}}]}}),NC=(0,ht.Ay)(qa,{name:"MuiAutocomplete",slot:"Paper",overridesResolver:(e,t)=>t.paper})(e=>{let{theme:t}=e;return(0,We.A)({},t.typography.body1,{overflow:"auto"})}),OC=(0,ht.Ay)("div",{name:"MuiAutocomplete",slot:"Loading",overridesResolver:(e,t)=>t.loading})(e=>{let{theme:t}=e;return{color:(t.vars||t).palette.text.secondary,padding:"14px 16px"}}),BC=(0,ht.Ay)("div",{name:"MuiAutocomplete",slot:"NoOptions",overridesResolver:(e,t)=>t.noOptions})(e=>{let{theme:t}=e;return{color:(t.vars||t).palette.text.secondary,padding:"14px 16px"}}),MC=(0,ht.Ay)("div",{name:"MuiAutocomplete",slot:"Listbox",overridesResolver:(e,t)=>t.listbox})(e=>{let{theme:t}=e;return{listStyle:"none",margin:0,padding:"8px 0",maxHeight:"40vh",overflow:"auto",position:"relative",["& .".concat(SC.option)]:{minHeight:48,display:"flex",overflow:"hidden",justifyContent:"flex-start",alignItems:"center",cursor:"pointer",paddingTop:6,boxSizing:"border-box",outline:"0",WebkitTapHighlightColor:"transparent",paddingBottom:6,paddingLeft:16,paddingRight:16,[t.breakpoints.up("sm")]:{minHeight:"auto"},["&.".concat(SC.focused)]:{backgroundColor:(t.vars||t).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},'&[aria-disabled="true"]':{opacity:(t.vars||t).palette.action.disabledOpacity,pointerEvents:"none"},["&.".concat(SC.focusVisible)]:{backgroundColor:(t.vars||t).palette.action.focus},'&[aria-selected="true"]':{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity),["&.".concat(SC.focused)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.hoverOpacity,"))"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:(t.vars||t).palette.action.selected}},["&.".concat(SC.focusVisible)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.focusOpacity,"))"):(0,Ta.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.focusOpacity)}}}}}),WC=(0,ht.Ay)(fC,{name:"MuiAutocomplete",slot:"GroupLabel",overridesResolver:(e,t)=>t.groupLabel})(e=>{let{theme:t}=e;return{backgroundColor:(t.vars||t).palette.background.paper,top:-8}}),UC=(0,ht.Ay)("ul",{name:"MuiAutocomplete",slot:"GroupUl",overridesResolver:(e,t)=>t.groupUl})({padding:0,["& .".concat(SC.option)]:{paddingLeft:24}}),VC=a.forwardRef(function(e,t){var n,r,o,i;const s=(0,pt.b)({props:e,name:"MuiAutocomplete"}),{autoComplete:l=!1,autoHighlight:u=!1,autoSelect:c=!1,blurOnSelect:d=!1,ChipProps:p,className:h,clearIcon:f=EC||(EC=(0,Je.jsx)(Ui,{fontSize:"small"})),clearOnBlur:m=!s.freeSolo,clearOnEscape:g=!1,clearText:v="Clear",closeText:y="Close",componentsProps:b={},defaultValue:x=(s.multiple?[]:null),disableClearable:A=!1,disableCloseOnSelect:D=!1,disabled:k=!1,disabledItemsFocusable:w=!1,disableListWrap:S=!1,disablePortal:E=!1,filterSelectedOptions:_=!1,forcePopupIcon:C="auto",freeSolo:F=!1,fullWidth:T=!1,getLimitTagsText:j=e=>"+".concat(e),getOptionLabel:z,groupBy:I,handleHomeEndKeys:L=!s.freeSolo,includeInputInList:P=!1,limitTags:R=-1,ListboxComponent:N="ul",ListboxProps:O,loading:B=!1,loadingText:M="Loading\u2026",multiple:W=!1,noOptionsText:U="No options",openOnFocus:V=!1,openText:H="Open",PaperComponent:G=qa,PopperComponent:q=P_,popupIcon:K=_C||(_C=(0,Je.jsx)(Zy,{})),readOnly:$=!1,renderGroup:Y,renderInput:X,renderOption:Q,renderTags:J,selectOnFocus:Z=!s.freeSolo,size:ee="medium",slotProps:te={}}=s,ne=(0,Ue.A)(s,CC),{getRootProps:re,getInputProps:oe,getInputLabelProps:ae,getPopupIndicatorProps:ie,getClearProps:se,getTagProps:le,getListboxProps:ue,getOptionProps:ce,value:de,dirty:pe,expanded:he,id:fe,popupOpen:me,focused:ge,focusedTag:ve,anchorEl:ye,setAnchorEl:be,inputValue:xe,groupedOptions:Ae}=uC((0,We.A)({},s,{componentName:"Autocomplete"})),De=!A&&!k&&pe&&!$,ke=(!F||!0===C)&&!1!==C,{onMouseDown:we}=oe(),{ref:Se}=null!=O?O:{},Ee=ue(),{ref:_e}=Ee,Ce=(0,Ue.A)(Ee,FC),Fe=(0,Ya.A)(_e,Se),Te=z||(e=>{var t;return null!=(t=e.label)?t:e}),je=(0,We.A)({},s,{disablePortal:E,expanded:he,focused:ge,fullWidth:T,getOptionLabel:Te,hasClearIcon:De,hasPopupIcon:ke,inputFocused:-1===ve,popupOpen:me,size:ee}),ze=(e=>{const{classes:t,disablePortal:n,expanded:r,focused:o,fullWidth:a,hasClearIcon:i,hasPopupIcon:s,inputFocused:l,popupOpen:u,size:c}=e,d={root:["root",r&&"expanded",o&&"focused",a&&"fullWidth",i&&"hasClearIcon",s&&"hasPopupIcon"],inputRoot:["inputRoot"],input:["input",l&&"inputFocused"],tag:["tag","tagSize".concat((0,dt.A)(c))],endAdornment:["endAdornment"],clearIndicator:["clearIndicator"],popupIndicator:["popupIndicator",u&&"popupIndicatorOpen"],popper:["popper",n&&"popperDisablePortal"],paper:["paper"],listbox:["listbox"],loading:["loading"],noOptions:["noOptions"],option:["option"],groupLabel:["groupLabel"],groupUl:["groupUl"]};return(0,ut.A)(d,wC,t)})(je);let Ie;if(W&&de.length>0){const e=e=>(0,We.A)({className:ze.tag,disabled:k},le(e));Ie=J?J(de,e,je):de.map((t,n)=>{const r=e({index:n}),{key:o}=r,a=(0,Ue.A)(r,TC);return(0,Je.jsx)(kC,(0,We.A)({label:Te(t),size:ee},a,p),o)})}if(R>-1&&Array.isArray(Ie)){const e=Ie.length-R;!ge&&e>0&&(Ie=Ie.splice(0,R),Ie.push((0,Je.jsx)("span",{className:ze.tag,children:j(e)},Ie.length)))}const Le=Y||(e=>(0,Je.jsxs)("li",{children:[(0,Je.jsx)(WC,{className:ze.groupLabel,ownerState:je,component:"div",children:e.group}),(0,Je.jsx)(UC,{className:ze.groupUl,ownerState:je,children:e.children})]},e.key)),Pe=Q||((e,t)=>{const{key:n}=e,r=(0,Ue.A)(e,jC);return(0,Je.jsx)("li",(0,We.A)({},r,{children:Te(t)}),n)}),Re=(e,t)=>{const n=ce({option:e,index:t});return Pe((0,We.A)({},n,{className:ze.option}),e,{selected:n["aria-selected"],index:t,inputValue:xe},je)},Ne=null!=(n=te.clearIndicator)?n:b.clearIndicator,Oe=null!=(r=te.paper)?r:b.paper,Be=null!=(o=te.popper)?o:b.popper,Me=null!=(i=te.popupIndicator)?i:b.popupIndicator;return(0,Je.jsxs)(a.Fragment,{children:[(0,Je.jsx)(zC,(0,We.A)({ref:t,className:(0,Ve.A)(ze.root,h),ownerState:je},re(ne),{children:X({id:fe,disabled:k,fullWidth:!0,size:"small"===ee?"small":void 0,InputLabelProps:ae(),InputProps:(0,We.A)({ref:be,className:ze.inputRoot,startAdornment:Ie,onClick:e=>{e.target===e.currentTarget&&we(e)}},(De||ke)&&{endAdornment:(0,Je.jsxs)(IC,{className:ze.endAdornment,ownerState:je,children:[De?(0,Je.jsx)(LC,(0,We.A)({},se(),{"aria-label":v,title:v,ownerState:je},Ne,{className:(0,Ve.A)(ze.clearIndicator,null==Ne?void 0:Ne.className),children:f})):null,ke?(0,Je.jsx)(PC,(0,We.A)({},ie(),{disabled:k,"aria-label":me?y:H,title:me?y:H,ownerState:je},Me,{className:(0,Ve.A)(ze.popupIndicator,null==Me?void 0:Me.className),children:K})):null]})}),inputProps:(0,We.A)({className:ze.input,disabled:k,readOnly:$},oe())})})),ye?(0,Je.jsx)(RC,(0,We.A)({as:q,disablePortal:E,style:{width:ye?ye.clientWidth:null},ownerState:je,role:"presentation",anchorEl:ye,open:me},Be,{className:(0,Ve.A)(ze.popper,null==Be?void 0:Be.className),children:(0,Je.jsxs)(NC,(0,We.A)({ownerState:je,as:G},Oe,{className:(0,Ve.A)(ze.paper,null==Oe?void 0:Oe.className),children:[B&&0===Ae.length?(0,Je.jsx)(OC,{className:ze.loading,ownerState:je,children:M}):null,0!==Ae.length||F||B?null:(0,Je.jsx)(BC,{className:ze.noOptions,ownerState:je,role:"presentation",onMouseDown:e=>{e.preventDefault()},children:U}),Ae.length>0?(0,Je.jsx)(MC,(0,We.A)({as:N,className:ze.listbox,ownerState:je},Ce,O,{ref:Fe,children:Ae.map((e,t)=>I?Le({key:e.key,group:e.group,children:e.options.map((t,n)=>Re(t,e.index+n))}):Re(e,t))})):null]}))})):null]})}),HC=VC,GC=["name","label","value","onChange","textFieldProps"];function qC(e){let{name:t,label:n,value:r,onChange:o,textFieldProps:i={}}=e,s=(0,Is.A)(e,GC);const[l,u]=(0,a.useState)(r||""),c=(0,a.useRef)(!1);(0,a.useEffect)(()=>{u(r||"")},[r]);const d=e=>{if(o){o({target:{name:t,value:e},preventDefault:()=>{}})}};return(0,Je.jsx)(HC,(0,It.A)((0,It.A)({value:r,onChange:(e,t)=>{c.current=!0,d(t)},inputValue:l,onInputChange:(e,t)=>{c.current=!1,u(t)},onBlur:()=>{c.current?c.current=!1:l!==r&&d(l)}},s),{},{renderInput:e=>(0,Je.jsx)(hb,(0,It.A)((0,It.A)((0,It.A)({},e),i),{},{name:t,label:n}))}))}function KC(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const n=crypto.randomUUID(),r=t||(null===e||void 0===e?void 0:e.name)||"Custom Prompt";return"".concat(r,"_").concat(n.slice(0,8))}function $C(){const{setting:e,updateSetting:t}=Rf(),n=(0,a.useMemo)(()=>(null===e||void 0===e?void 0:e.prompts)||[],[null===e||void 0===e?void 0:e.prompts]),r=(0,a.useMemo)(()=>(0,Qi.rVi)(n),[n]),o=(0,a.useCallback)(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";const r=(0,Qi.ObO)(e),o=(0,It.A)((0,It.A)({},r),{},{slug:"prompt_".concat(crypto.randomUUID()),nameKey:"",name:KC(r,n)});return t(e=>(0,It.A)((0,It.A)({},e),{},{prompts:[...(null===e||void 0===e?void 0:e.prompts)||[],o]})),o.slug},[t]),i=(0,a.useCallback)((e,n)=>{if(!e||(0,Qi.RFn)(e))return;const r=(0,Qi.ObO)((0,It.A)((0,It.A)({},n),{},{slug:e}));t(t=>(0,It.A)((0,It.A)({},t),{},{prompts:((null===t||void 0===t?void 0:t.prompts)||[]).map(t=>(0,Qi.ObO)(t).slug!==e?t:(0,Qi.ObO)((0,It.A)((0,It.A)((0,It.A)({},t),r),{},{slug:e})))}))},[t]),s=(0,a.useCallback)(e=>{e&&!(0,Qi.RFn)(e)&&t(t=>(0,It.A)((0,It.A)({},(0,Qi.taj)(t||{},e)),{},{prompts:((null===t||void 0===t?void 0:t.prompts)||[]).filter(t=>(0,Qi.ObO)(t).slug!==e)}))},[t]),l=(0,a.useCallback)(function(e){return o(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:"")},[o]);return{prompts:r,customPrompts:n,addPrompt:o,updatePrompt:i,deletePrompt:s,copyPrompt:l,isPresetPromptSlug:Qi.RFn}}const YC=["value","onChange","inputProps"],XC={width:24,height:24,flex:"0 0 ".concat(24,"px")},QC=["gpt-5.4-mini","gpt-5.4-nano","gemini-3.1-flash-lite-preview","grok-4.20-beta-0309-non-reasoning"],JC={[Qi.h8v]:"BuiltinAI.svg",[Qi.bCM]:"Google.svg",[Qi.ul7]:"Google.svg",[Qi.kXF]:"Microsoft.svg",[Qi.FS6]:"AzureAI.svg",[Qi.KBl]:"DeepSeek.svg",[Qi.rUY]:"OpenCodeGo.svg",[Qi.FsV]:"SiliconFlow.svg",[Qi.F16]:"XiaomiMimo.svg",[Qi.EjO]:"AliyunBailian.svg",[Qi.NQu]:"Cerebras.svg",[Qi.cbe]:"Zai.svg",[Qi.e70]:"DeepL.svg",[Qi.An9]:"DeepL.svg",[Qi.c0T]:"DeepL.svg",[Qi.xN$]:"Baidu.svg",[Qi.fFW]:"Tencent.svg",[Qi.UFr]:"Volcengine.svg",[Qi.lbn]:"ePhoneAI.png",[Qi.C3L]:"OpenAI.svg",[Qi.lLy]:"Gemini.svg",[Qi.kYm]:"Gemini.svg",[Qi.EsI]:"Claude.svg",[Qi.bNe]:"CloudflareAI.svg",[Qi.edy]:"Ollama.svg",[Qi.dGW]:"OpenRouter.svg",[Qi.mmp]:"OrcaRouter.svg"};function ZC(e){let{apiType:t,disabled:n=!1,sx:r={}}=e;const o=function(e){const t=JC[e];return t?"".concat(".","/api/").concat(t):""}(t);return(0,Je.jsx)(st,{sx:(0,It.A)({display:"inline-flex",alignItems:"center",justifyContent:"center",width:22,height:22,flex:"0 0 auto",opacity:n?.5:1},r),children:o?(0,Je.jsx)(st,{component:"img",src:o,alt:"","aria-hidden":"true",sx:e=>({width:22,height:22,objectFit:"contain",display:"block",filter:"dark"===e.palette.mode&&Qi.sNP.darkIcon.has(t)?"invert(100%)":"none"})}):(0,Je.jsx)(Ow.A,{fontSize:"small",color:"action"})})}function eF(e){let{api:t}=e;const n=Hf(),r=fD(),{setting:{prompts:o,subtitleSetting:i,uiLang:s}={}}=Rf(),[l,u]=(0,a.useState)(!1);return(0,Je.jsx)(ED,{size:"small",variant:"outlined",onClick:async()=>{try{u(!0);const e="The quick brown fox jumps over the lazy dog.",a=(0,X_.a5)((0,It.A)({},t),o,i),l="en";let c={zh:"zh-CN",zh_TW:"zh-TW"}[s]||s;Qi.tok.includes(c)&&c!==l||(c="zh-CN");const{trText:d}=await ic({text:e,fromLang:l,toLang:c,apiSetting:a,useCache:!1,usePool:!1});if(!d)throw new Error("empty result");r.success((0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)("div",{children:n("test_success")}),(0,Je.jsx)("div",{children:e}),(0,Je.jsx)("div",{children:d})]}))}catch(e){let t=e.message;try{t=JSON.stringify(JSON.parse(e.message),null,2)}catch(e){}r.error((0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)("div",{children:n("test_failed")}),t===e.message?(0,Je.jsx)("div",{children:t}):(0,Je.jsx)("pre",{children:t})]}))}finally{u(!1)}},loading:l,children:n("click_test")})}function tF(e){let{value:t="",onChange:n,inputProps:r}=e,o=(0,Is.A)(e,YC);const[i,s]=(0,a.useState)(!1),l=i?t:String(t).split("\n").map(e=>e?"\u2022".repeat(Math.min(e.length,24)):"").join("\n");return(0,Je.jsx)(hb,(0,It.A)((0,It.A)({},o),{},{value:l,onFocus:()=>s(!0),onBlur:()=>s(!1),onChange:i?n:void 0,inputProps:(0,It.A)((0,It.A)({},r),{},{readOnly:!i})}))}function nF(e){let{apiSlug:t,deleteApi:n,copyApi:r,onCollapse:o}=e;const{api:i,update:s,reset:l}=function(e){const{transApis:t,updateSetting:n}=RD(),r=(0,a.useMemo)(()=>t.find(t=>t.apiSlug===e),[t,e]);return{api:r,update:(0,a.useCallback)(t=>{n(n=>(0,It.A)((0,It.A)({},n),{},{transApis:((null===n||void 0===n?void 0:n.transApis)||[]).map(n=>n.apiSlug===e?(0,It.A)((0,It.A)((0,It.A)({},n),t),{},{apiSlug:e}):n)}))},[e,n]),reset:(0,a.useCallback)(()=>{n(t=>(0,It.A)((0,It.A)({},t),{},{transApis:((null===t||void 0===t?void 0:t.transApis)||[]).map(t=>{if(t.apiSlug===e){const e=Qi._TQ.find(e=>e.apiType===t.apiType)||{};return(0,It.A)((0,It.A)({},e),{},{apiSlug:t.apiSlug,apiName:t.apiName,apiType:t.apiType,key:t.key})}return t})}))},[e,n])}}(t),{prompts:u}=$C(),c=Hf(),[d,p]=(0,a.useState)(()=>i||{}),[h,f]=(0,a.useState)(!1),[m,g]=(0,a.useState)([]),[v,y]=(0,a.useState)("idle"),[b,x]=(0,a.useState)(""),A=(0,a.useRef)(""),D=gk();(0,a.useLayoutEffect)(()=>{p(i||{})},[i]),(0,a.useLayoutEffect)(()=>{f(!1),g([]),y("idle"),x(""),A.current=""},[t]);const k=(0,a.useMemo)(()=>(null===d||void 0===d?void 0:d.apiSlug)===t?d:i||{},[i,t,d]),w=(0,a.useMemo)(()=>!(!i||(null===k||void 0===k?void 0:k.apiSlug)!==t)&&JSON.stringify(i)!==JSON.stringify(k),[i,t,k]),S=e=>{null===e||void 0===e||e.preventDefault();let{name:n,value:r,type:o,checked:a}=e.target;"checkbox"!==o&&"switch"!==o||(r=a),p(e=>{const o=(null===e||void 0===e?void 0:e.apiSlug)===t?e:i||{},a=(0,It.A)((0,It.A)({},o),{},{[n]:r});return"useStream"===n&&!1===r&&(a.streamRenderMode="disabled"),"isDisabled"===n&&(a.sortOrder=r?999:0),a})},E=e=>{null===e||void 0===e||e.preventDefault();const{name:n,value:r}=e.target,o=u.find(e=>e.slug===r);p(e=>{const a=(null===e||void 0===e?void 0:e.apiSlug)===t?e:i||{},s=(0,It.A)((0,It.A)({},a),{},{[n]:r});return"batchPromptSlug"===n&&o&&(s.systemPrompt=o.systemPrompt),"nobatchPromptSlug"===n&&o&&(s.nobatchPrompt=o.systemPrompt,s.nobatchUserPrompt=o.userPrompt),"subtitlePromptSlug"===n&&o&&(s.subtitlePrompt=o.systemPrompt),"dictPromptSlug"===n&&o&&(s.dictPrompt=o.systemPrompt,s.dictUserPrompt=o.userPrompt),s})},{url:_="",key:C="",model:F="",modelListUrl:T="",apiType:j,customHeader:z="",customBody:I="",fetchLimit:L=Qi.PPd,fetchInterval:P=Qi.jy$,httpTimeout:R=Qi.$Kd,reqHook:N="",resHook:O="",temperature:B=0,maxTokens:M=20480,apiName:W="",isDisabled:U=!1,useBatchFetch:V=!1,useStream:H=!1,streamRenderMode:G="disabled",transAllnow:q=!1,rootMargin:K=500,batchInterval:$=Qi.bqx,batchSize:Y=Qi.jgE,batchLength:X=Qi.WTh,batchConcurrency:Q=Qi.JWB,useContext:J=!1,contextSize:Z=Qi.w62,tone:ee="neutral",placeholder:te=Qi.ppg[0],placetag:ne=Qi.P97[0],placetagFormat:re="compact",region:oe="",sortOrder:ae=0,aiTerms:ie="",thinkingMode:se="disabled",thinkingEffort:le="_default",batchPromptSlug:ue="",nobatchPromptSlug:ce="",subtitlePromptSlug:de="",dictPromptSlug:pe=""}=k,he=J&&Qi.sNP.context.has(j);(0,a.useEffect)(()=>{y("idle"),x(""),A.current=""},[T,C]);const fe=Qi.Imq[j],me=Object.prototype.hasOwnProperty.call(k,"batchPromptSlug")?ue:Qi.qj6,ge=Object.prototype.hasOwnProperty.call(k,"nobatchPromptSlug")?ce:Qi.r_y,ve=Object.prototype.hasOwnProperty.call(k,"subtitlePromptSlug")?de:Qi.Efh,ye=Object.prototype.hasOwnProperty.call(k,"dictPromptSlug")?pe:Qi.SE1,be=(0,a.useMemo)(()=>(0,Qi.S0s)(u),[u]),xe=(0,a.useMemo)(()=>(0,Qi.voX)(u),[u]),Ae=(0,a.useMemo)(()=>(0,Qi.leo)(u),[u]),De=(0,a.useMemo)(()=>(0,Qi.XDR)(u),[u]),ke=(0,a.useMemo)(()=>Qi.sNP.mulkeys.has(j)?c("mulkeys_help"):"",[j,c]),we=(0,a.useMemo)(()=>{const e=j===Qi.lbn?QC:[];return Array.from(new Set([...e,...m]))},[j,m]),Se=(0,a.useMemo)(()=>"loading"===v?c("model_list_loading"):"empty"===v?c("model_list_empty"):"error"===v?"".concat(c("model_list_fetch_failed"),": ").concat(b):"",[c,b,v]),Ee=(0,a.useCallback)(async()=>{const e="".concat(t,"|").concat(T,"|").concat(C);if(null!==T&&void 0!==T&&T.trim()&&null!==C&&void 0!==C&&C.trim()&&A.current!==e&&"loading"!==v){A.current=e,y("loading"),x("");try{const e=await tC({apiType:j,modelListUrl:T,key:C,httpTimeout:R});g(e),y(e.length>0?"success":"empty")}catch(n){y("error"),x((null===n||void 0===n?void 0:n.message)||String(n))}}},[t,j,R,C,v,T]);return(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{size:"small",fullWidth:!0,label:c("api_name"),name:"apiName",value:W,onChange:S})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"transAllnow",value:q,label:c("trigger_mode"),onChange:S,children:[(0,Je.jsx)(dx,{value:!1,children:c("mk_pagescroll")}),(0,Je.jsx)(dx,{value:!0,children:c("mk_pageopen")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:c("pagescroll_root_margin"),type:"number",name:"rootMargin",value:K,onChange:S,min:0,max:1e4})})]})}),!Qi.sNP.machine.has(j)&&j!==Qi.h8v&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(hb,{size:"small",label:"URL",name:"url",value:_,onChange:S,multiline:j===Qi.c0T,maxRows:10,helperText:j===Qi.c0T?c("mulkeys_help"):""}),(0,Je.jsx)(tF,{size:"small",label:"Key",name:"key",value:C,onChange:S,multiline:Qi.sNP.mulkeys.has(j),maxRows:10,helperText:ke})]}),j===Qi.FS6&&(0,Je.jsx)(hb,{size:"small",label:"Region",name:"region",value:oe,onChange:S}),Qi.sNP.ai.has(j)&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(hb,{size:"small",fullWidth:!0,label:c("model_list_url"),name:"modelListUrl",value:T,onChange:S}),(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(qC,{freeSolo:!0,size:"small",fullWidth:!0,options:we,name:"model",label:"Model",value:F,onChange:S,onFocus:Ee,loading:"loading"===v,loadingText:c("model_list_loading"),noOptionsText:c("model_list_empty"),textFieldProps:{helperText:Se,error:"error"===v}})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(qC,{freeSolo:!0,size:"small",fullWidth:!0,options:Qi.Fxm,name:"tone",label:c("translation_style"),value:ee,onChange:S})}),j!==Qi.lLy&&(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{size:"small",fullWidth:!0,label:"Temperature (0.0-2.0)",type:"number",name:"temperature",value:B,onChange:S,min:0,max:2,isFloat:!0,inputProps:{step:.1}})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{size:"small",fullWidth:!0,label:"Max Tokens (0-1000000)",type:"number",name:"maxTokens",value:M,onChange:S,min:0,max:1e6})})]})})]}),j===Qi.fqf&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(mb,{size:"small",label:"Request Hook",name:"reqHook",value:N,onChange:S,maxRows:10,FormHelperTextProps:{component:"div"},helperText:(0,Je.jsx)(st,{component:"pre",sx:{overflowX:"auto"},children:c("request_hook_helper")})}),(0,Je.jsx)(mb,{size:"small",label:"Response Hook",name:"resHook",value:O,onChange:S,maxRows:10,FormHelperTextProps:{component:"div"},helperText:(0,Je.jsx)(st,{component:"pre",sx:{overflowX:"auto"},children:c("response_hook_helper")})})]}),Qi.sNP.batch.has(j)&&(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"useBatchFetch",value:V,label:c("use_batch_fetch"),onChange:S,children:[(0,Je.jsx)(dx,{value:!1,children:c("disable")}),(0,Je.jsx)(dx,{value:!0,children:c("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{size:"small",fullWidth:!0,label:c("batch_interval"),type:"number",name:"batchInterval",value:$,onChange:S,min:10,max:1e4})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{size:"small",fullWidth:!0,label:c("batch_size"),type:"number",name:"batchSize",value:Y,onChange:S,min:1,max:100})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{size:"small",fullWidth:!0,label:c("batch_length"),type:"number",name:"batchLength",value:X,onChange:S,min:1e3,max:1e5})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{size:"small",fullWidth:!0,label:c("batch_concurrency"),type:"number",name:"batchConcurrency",value:he?1:Q,onChange:S,min:1,max:100,disabled:he,helperText:he?c("batch_concurrency_context_hint"):""})})]})}),(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[Qi.sNP.stream.has(j)&&(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"useStream",value:H,label:c("use_stream"),onChange:S,children:[(0,Je.jsx)(dx,{value:!1,children:c("disable")}),(0,Je.jsx)(dx,{value:!0,children:c("enable")})]})}),Qi.sNP.stream.has(j)&&H&&(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"streamRenderMode",value:G,label:c("stream_render_mode"),onChange:S,children:[(0,Je.jsx)(dx,{value:"disabled",children:c("disable")}),(0,Je.jsx)(dx,{value:"realtime",children:c("stream_render_realtime")}),(0,Je.jsx)(dx,{value:"segment",children:c("stream_render_segment")})]})}),Qi.sNP.context.has(j)&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsxs)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:[" ",(0,Je.jsxs)(hb,{select:!0,size:"small",fullWidth:!0,name:"useContext",value:J,label:c("use_context"),onChange:S,children:[(0,Je.jsx)(dx,{value:!1,children:c("disable")}),(0,Je.jsx)(dx,{value:!0,children:c("enable")})]})]}),(0,Je.jsxs)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:[" ",(0,Je.jsx)(hb,{size:"small",fullWidth:!0,label:c("context_size"),type:"number",name:"contextSize",value:Z,onChange:S,min:1,max:20})]})]})]})}),(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{size:"small",fullWidth:!0,label:c("fetch_limit"),type:"number",name:"fetchLimit",value:L,onChange:S,min:1,max:100})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{size:"small",fullWidth:!0,label:c("fetch_interval"),type:"number",name:"fetchInterval",value:P,onChange:S,min:0,max:5e3})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{size:"small",fullWidth:!0,label:c("http_timeout"),type:"number",name:"httpTimeout",value:R,onChange:S,min:1,max:600})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3})]})}),Qi.sNP.ai.has(j)&&(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"nobatchPromptSlug",value:ge,label:c("nobatch_prompt","\u975e\u805a\u5408\u7ffb\u8bd1\u63d0\u793a\u8bcd"),onChange:E,children:be.map(e=>(0,Je.jsx)(dx,{value:e.slug,children:(0,Qi.ejN)(e,c)},e.slug))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"batchPromptSlug",value:me,label:c("batch_prompt","\u805a\u5408\u7ffb\u8bd1\u63d0\u793a\u8bcd"),onChange:E,children:xe.map(e=>(0,Je.jsx)(dx,{value:e.slug,children:(0,Qi.ejN)(e,c)},e.slug))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"subtitlePromptSlug",value:ve,label:c("subtitle_prompt","AI\u65ad\u53e5\u63d0\u793a\u8bcd"),onChange:E,children:Ae.map(e=>(0,Je.jsx)(dx,{value:e.slug,children:(0,Qi.ejN)(e,c)},e.slug))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"dictPromptSlug",value:ye,label:c("ai_dict_prompt","AI\u8bcd\u5178\u63d0\u793a\u8bcd"),onChange:E,children:De.map(e=>(0,Je.jsx)(dx,{value:e.slug,children:(0,Qi.ejN)(e,c)},e.slug))})})]})}),fe&&(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"thinkingMode",value:se,label:c("thinking_mode"),onChange:S,helperText:c("thinking_mode_helper"),children:[(0,Je.jsx)(dx,{value:"auto",children:c("thinking_mode_default")}),(0,Je.jsx)(dx,{value:"enabled",children:c("thinking_mode_enabled")}),!1!==fe.disableSupported&&(0,Je.jsx)(dx,{value:"disabled",children:c("thinking_mode_disabled")})]})}),"enabled"===se&&fe.efforts&&(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"thinkingEffort",value:le,label:c("thinking_effort"),onChange:S,children:[fe.efforts.map(e=>(0,Je.jsx)(dx,{value:e.value,children:e.label},e.value)),(0,Je.jsx)(dx,{value:"_default",children:c("thinking_effort_default")})]})})]})}),h&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"placeholder",value:te,label:c("api_placeholder"),onChange:S,children:Qi.ppg.map(e=>(0,Je.jsx)(dx,{value:e,children:e},e))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"placetag",value:ne,label:c("api_placetag"),onChange:S,children:Qi.P97.map(e=>(0,Je.jsx)(dx,{value:e,children:"<".concat(e,">")},e))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"placetagFormat",value:re,label:c("placetag_format")||"\u5360\u4f4d\u7b26\u683c\u5f0f",onChange:S,children:[(0,Je.jsx)(dx,{value:"compact",children:c("format_compact")||"\u7b80\u6d01\u683c\u5f0f "}),(0,Je.jsx)(dx,{value:"attribute",children:c("format_attribute")||"\u5c5e\u6027\u683c\u5f0f
"})]})})]})}),Qi.sNP.ai.has(j)&&(0,Je.jsx)(hb,{size:"small",label:c("ai_terms"),helperText:c("ai_terms_helper"),name:"aiTerms",value:ie,onChange:S,multiline:!0,maxRows:10}),j!==Qi.h8v&&(0,Je.jsxs)(Je.Fragment,{children:[" ",(0,Je.jsx)(mb,{size:"small",label:c("custom_header"),name:"customHeader",value:z,onChange:S,maxRows:10,helperText:c("custom_header_help")}),(0,Je.jsx)(mb,{size:"small",label:c("custom_body"),name:"customBody",value:I,onChange:S,maxRows:10,helperText:c(j===Qi.lLy?"gemini_interactions_custom_body_help":"custom_body_help")})]}),j!==Qi.fqf&&j!==Qi.h8v&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(mb,{size:"small",label:"Request Hook",name:"reqHook",value:N,onChange:S,maxRows:10,FormHelperTextProps:{component:"div"},helperText:(0,Je.jsx)(st,{component:"pre",sx:{overflowX:"auto"},children:c("request_hook_helper")})}),(0,Je.jsx)(mb,{size:"small",label:"Response Hook",name:"resHook",value:O,onChange:S,maxRows:10,FormHelperTextProps:{component:"div"},helperText:(0,Je.jsx)(st,{component:"pre",sx:{overflowX:"auto"},children:c("response_hook_helper")})})]})]}),(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,useFlexGap:!0,flexWrap:"wrap",children:[(0,Je.jsx)(Eb,{size:"small",variant:"contained",onClick:()=>{s(k),(k.isDisabled||-1===k.sortOrder)&&(null===o||void 0===o||o())},disabled:!w,children:c("save")}),(0,Je.jsx)(eF,{api:k}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:()=>{l()},children:c("restore_default")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:()=>{r(k)},children:c("copy_api")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",color:"error",onClick:async()=>{await D({confirmText:c("delete"),cancelText:c("cancel")})&&n(t)},children:c("delete")}),(0,Je.jsx)(Fx,{control:(0,Je.jsx)(Hx,{size:"small",name:"isDisabled",checked:U,onChange:S}),label:c("is_disabled")}),(0,Je.jsx)(Fx,{control:(0,Je.jsx)(Hx,{size:"small",checked:-1===ae,onChange:e=>{p(n=>(0,It.A)((0,It.A)({},(null===n||void 0===n?void 0:n.apiSlug)===t?n:i||{}),{},{sortOrder:e.target.checked?-1:0}))},disabled:U}),label:c("is_pinned")}),(0,Je.jsx)(WD,{showMore:h,onChange:f})]})]})}function rF(e){let{api:t,selected:n,bulkMode:r,checked:o,dragging:a,dragOver:i,onSelect:s,onCheck:l,onDragStart:u,onDragOver:c,onDrop:d,onDragEnd:p}=e;return(0,Je.jsxs)(sE,{disablePadding:!0,onDragOver:c,onDragEnter:c,onDrop:d,sx:e=>({display:"grid",gridTemplateColumns:r?"".concat(24,"px minmax(0, 1fr)"):"minmax(0, 1fr)",columnGap:.5,alignItems:"center",minHeight:44,px:1,opacity:a?.45:1,borderTop:i?"2px solid ".concat(e.palette.primary.main):"2px solid transparent"}),children:[r&&(0,Je.jsx)(HS,{size:"small",checked:o,onClick:e=>e.stopPropagation(),onChange:e=>l(e,t.apiSlug),inputProps:{"aria-label":t.apiName||t.apiType},sx:(0,It.A)((0,It.A)({},XC),{},{p:0,alignSelf:"center"})}),(0,Je.jsxs)(ww,{selected:r?o:n,onClick:e=>{r?l(e,t.apiSlug):s()},sx:{gap:.5,minWidth:0,minHeight:40,py:.75,px:.5,borderRadius:.5},children:[(0,Je.jsx)(K_,{title:"Drag to reorder",children:(0,Je.jsx)(st,{draggable:!0,onDragStart:u,onDragEnd:p,onClick:e=>e.stopPropagation(),sx:(0,It.A)((0,It.A)({},XC),{},{display:"inline-flex",alignItems:"center",justifyContent:"center",color:"text.secondary",cursor:"grab","&:active":{cursor:"grabbing"}}),children:(0,Je.jsx)(Y_.A,{fontSize:"small"})})}),(0,Je.jsx)(ZC,{apiType:t.apiType,disabled:t.isDisabled}),(0,Je.jsx)(gf,{sx:{minWidth:0,flex:1,opacity:t.isDisabled?.5:1,overflowWrap:"anywhere"},children:t.apiName||t.apiType})]})]})}function oF(){const e=Hf(),{transApis:t,addApi:n,deleteApi:r,deleteApis:o,pinApis:i,disableApis:s,enableApis:l,copyApi:u,alphaSortApis:c,reorderApis:d}=BD(),p=gk(),[h,f]=(0,a.useState)("asc"),[m,g]=(0,a.useState)(0),[v,y]=(0,a.useState)(""),[b,x]=(0,a.useState)(!1),[A,D]=(0,a.useState)([]),[k,w]=(0,a.useState)(""),[S,E]=(0,a.useState)(""),_=(0,a.useRef)(null),C=(0,a.useMemo)(()=>Qi.TF1.map(e=>({type:e,label:e})),[]),F=(0,a.useMemo)(()=>t.map(e=>({api:e})),[t]),T=(0,a.useMemo)(()=>F.map(e=>{let{api:t}=e;return t.apiSlug}),[F]),j=(0,a.useMemo)(()=>new Set(A),[A]),z=A.length,I=z>0,L=F.length>0&&z===F.length;(0,a.useEffect)(()=>{if(0===F.length)return void y("");const e=F.some(e=>{let{api:t}=e;return t.apiSlug===v});e||y(F[0].api.apiSlug)},[F,v]),(0,a.useEffect)(()=>{D(e=>{if(0===e.length)return e;const t=new Set(T),n=e.filter(e=>t.has(e));return n.length===e.length?e:n})},[T]);const P=(0,a.useMemo)(()=>F.find(e=>{let{api:t}=e;return t.apiSlug===v}),[F,v]);(0,a.useLayoutEffect)(()=>{var e;null===(e=_.current)||void 0===e||e.scrollTo({top:0})},[v]);const[R,N]=(0,a.useState)(null),O=Boolean(R),B=()=>{N(null)},M=(0,a.useCallback)((e,t)=>{e.stopPropagation(),D(e=>e.includes(t)?e.filter(e=>e!==t):[...e,t])},[]),W=(0,a.useCallback)(()=>{D(e=>T.length>0&&e.length===T.length?[]:T)},[T]),U=(0,a.useCallback)(()=>{x(e=>(e&&D([]),!e))},[]),V=(0,a.useCallback)(()=>{i(A),g(e=>e+1)},[A,i]),H=(0,a.useCallback)(()=>{l(A),g(e=>e+1)},[A,l]),G=(0,a.useCallback)(()=>{s(A),g(e=>e+1)},[A,s]),q=(0,a.useCallback)(async()=>{await p({message:e("delete_selected_apis_confirm","Delete {count} selected interfaces?").replace("{count}",z),confirmText:e("delete"),cancelText:e("cancel")})&&(o(A),D([]),g(e=>e+1))},[z,A,p,o,e]),K=(0,a.useCallback)((e,t)=>{e.dataTransfer.effectAllowed="move",e.dataTransfer.setData("text/plain",t),w(t)},[]),$=(0,a.useCallback)((e,t)=>{k&&k!==t&&(e.preventDefault(),e.dataTransfer.dropEffect="move",E(t))},[k]),Y=(0,a.useCallback)((e,t)=>{e.preventDefault();const n=k||e.dataTransfer.getData("text/plain");n&&n!==t&&d(n,t),w(""),E("")},[k,d]),X=(0,a.useCallback)(()=>{w(""),E("")},[]);return(0,Je.jsx)(st,{children:(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsxs)(Xi,{severity:"info",children:[e("about_api"),(0,Je.jsx)("br",{}),e("about_api_2"),(0,Je.jsx)("br",{}),e("about_api_3"),(0,Je.jsx)(Sf,{href:"https://github.com/fishjar/kiss-translator/blob/master/custom-api_v2.md",target:"_blank",children:e("goto_custom_api_example")})]}),(0,Je.jsxs)(st,{children:[(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,useFlexGap:!0,flexWrap:"wrap",children:[(0,Je.jsx)(Eb,{size:"small",id:"add-api-button",variant:"contained",onClick:e=>{N(e.currentTarget)},"aria-controls":O?"add-api-menu":void 0,"aria-haspopup":"true","aria-expanded":O?"true":void 0,endIcon:(0,Je.jsx)($_.A,{}),startIcon:(0,Je.jsx)(TD.A,{}),children:e("add")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:()=>{const e="asc"===h?"desc":"asc";f(e),g(e=>e+1),c(e)},startIcon:(0,Je.jsx)(qS.A,{}),children:e("sort_alphabetically")}),(0,Je.jsx)(Eb,{size:"small",variant:b?"contained":"outlined",onClick:U,children:e("bulk_actions")}),b&&(0,Je.jsxs)(vm,{direction:"row",spacing:1,useFlexGap:!0,flexWrap:"wrap",children:[(0,Je.jsx)(Eb,{size:"small",variant:"outlined",disabled:0===F.length,onClick:W,children:e(L?"deselect_all":"select_all")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",disabled:!I,onClick:V,startIcon:(0,Je.jsx)(KS.A,{}),children:e("pin_to_top")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",disabled:!I,onClick:H,startIcon:(0,Je.jsx)(YS.A,{}),children:e("enable")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",disabled:!I,onClick:G,startIcon:(0,Je.jsx)($S.A,{}),children:e("disable")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",color:"error",disabled:!I,onClick:q,startIcon:(0,Je.jsx)(KA.A,{}),children:e("delete")})]})]}),(0,Je.jsx)(jy,{id:"add-api-menu",anchorEl:R,open:O,onClose:B,MenuListProps:{"aria-labelledby":"add-api-button"},children:C.map(e=>(0,Je.jsxs)(dx,{onClick:()=>{return t=e.type,n(t),void B();var t},sx:{gap:1},children:[(0,Je.jsx)(ZC,{apiType:e.type}),(0,Je.jsx)(st,{component:"span",sx:{flex:1},children:e.label}),Qi.sNP.sponsors.has(e.type)&&(0,Je.jsx)(GS.A,{color:"warning",sx:{marginLeft:"0.2em"}})]},e.type))})]}),(0,Je.jsxs)(st,{sx:{display:"flex",flexDirection:{xs:"column",md:"row"},border:1,borderColor:"divider",borderRadius:1,overflow:"hidden",height:{md:"calc(100vh - 250px)"}},children:[(0,Je.jsx)(st,{sx:e=>({width:{xs:"100%",md:280},flex:{xs:"0 0 auto",md:"0 0 280px"},height:{md:"100%"},overflowY:"auto",borderRight:{xs:0,md:"1px solid ".concat(e.palette.divider)},borderBottom:{xs:"1px solid ".concat(e.palette.divider),md:0}}),children:(0,Je.jsx)(av,{disablePadding:!0,children:F.map(e=>{let{api:t}=e;return(0,Je.jsx)(rF,{api:t,selected:t.apiSlug===v,bulkMode:b,checked:j.has(t.apiSlug),dragging:t.apiSlug===k,dragOver:t.apiSlug===S,onSelect:()=>y(t.apiSlug),onCheck:M,onDragStart:e=>K(e,t.apiSlug),onDragOver:e=>$(e,t.apiSlug),onDrop:e=>Y(e,t.apiSlug),onDragEnd:X},t.apiSlug)})})}),(0,Je.jsx)(st,{ref:_,sx:{flex:1,minWidth:0,p:2,boxSizing:"border-box",height:{md:"100%"},overflowY:{md:"auto"},scrollbarGutter:{md:"stable"},overscrollBehavior:"contain"},children:P&&(0,Je.jsx)(nF,{apiSlug:P.api.apiSlug,deleteApi:r,copyApi:u},m)})]})]})})}var aF=n(9150);const iF=[Qi.X6r,Qi.fDS,Qi.Qfh,Qi.Wdi,Qi.L32,Qi.Ymt,Qi.yDH,Qi.snk,Qi.S6q],sF=[Qi.fDS,Qi.Qfh,Qi.Wdi,Qi.L32,Qi.Ymt,Qi.yDH,Qi.snk,Qi.S6q,Qi.S6X],lF=[Qi.X6r,Qi.fDS,Qi.Qfh,Qi.Wdi,Qi.L32,Qi.Ymt,Qi.yDH,Qi.snk,Qi.xhA];function uF(e){let{category:t,disabled:n,onInsert:r}=e;const o=function(e){return e===Qi.lQO?sF:e===Qi.xIu?lF:e===Qi.eb1||e===Qi.ZSN?iF:[]}(t);return 0===o.length?null:(0,Je.jsx)(st,{children:(0,Je.jsx)(vm,{direction:"row",spacing:1,useFlexGap:!0,flexWrap:"wrap",children:o.map(e=>(0,Je.jsx)(Eb,{size:"small",variant:"text",disabled:n,onClick:()=>r(e),sx:{textTransform:"none"},children:e},e))})})}function cF(e){let{prompt:t,selected:n,isPreset:r,onSelect:o}=e;const a=Hf();return(0,Je.jsx)(sE,{disablePadding:!0,sx:{px:1,minHeight:44},children:(0,Je.jsxs)(ww,{selected:n,onClick:o,sx:{gap:1,minWidth:0,minHeight:40,py:.75,px:.5,borderRadius:.5},children:[r?(0,Je.jsx)(aF.A,{fontSize:"small",color:"action"}):(0,Je.jsx)(qw.A,{fontSize:"small",color:"action"}),(0,Je.jsx)(gf,{sx:{minWidth:0,flex:1,overflowWrap:"anywhere"},children:(0,Qi.ejN)(t,a)})]})})}function dF(e){let{prompt:t,isPreset:n,onSave:r,onCopy:o,onDelete:i,onCollapse:s}=e;const l=Hf(),u=gk(),[c,d]=(0,a.useState)(()=>(0,Qi.ObO)(t)),p=(0,Qi.ejN)(t,l),h=(0,a.useRef)(null),f=(0,a.useRef)(null),m=c.category===Qi.eb1||c.category===Qi.xIu;(0,a.useLayoutEffect)(()=>{d((0,Qi.ObO)(t))},[t]);const g=(0,a.useMemo)(()=>!n&&JSON.stringify((0,Qi.ObO)(t))!==JSON.stringify((0,Qi.ObO)(c)),[c,n,t]),v=e=>{const{name:t,value:n}=e.target;d(e=>(0,It.A)((0,It.A)({},e),{},{[t]:n}))},y=(e,t,r)=>{var o,a;if(n)return;const i=t.current,s=c[e]||"",l=null!==(o=null===i||void 0===i?void 0:i.selectionStart)&&void 0!==o?o:s.length,u=null!==(a=null===i||void 0===i?void 0:i.selectionEnd)&&void 0!==a?a:s.length,p=s.slice(0,l)+r+s.slice(u,s.length);d(t=>(0,It.A)((0,It.A)({},t),{},{[e]:p})),setTimeout(()=>{null===i||void 0===i||i.focus(),null===i||void 0===i||i.setSelectionRange(l+r.length,l+r.length)})};return(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsx)(hb,{size:"small",label:l("prompt_name","\u540d\u79f0"),name:"name",value:n?p:c.name,onChange:v,disabled:n}),(0,Je.jsxs)(vm,{spacing:1,children:[(0,Je.jsx)(mb,{size:"small",label:l("system_prompt","\u7cfb\u7edf\u63d0\u793a\u8bcd"),name:"systemPrompt",value:c.systemPrompt,onChange:v,inputRef:h,minRows:3,maxRows:14,disabled:n,sx:{"& textarea":{resize:"vertical"}}}),!n&&(0,Je.jsx)(uF,{category:c.category,onInsert:e=>y("systemPrompt",h,e)})]}),m&&(0,Je.jsxs)(vm,{spacing:1,children:[(0,Je.jsx)(mb,{size:"small",label:l("user_prompt","\u7528\u6237\u63d0\u793a\u8bcd"),name:"userPrompt",value:c.userPrompt,onChange:v,inputRef:f,minRows:3,maxRows:14,disabled:n,sx:{"& textarea":{resize:"vertical"}}}),!n&&(0,Je.jsx)(uF,{category:c.category,onInsert:e=>y("userPrompt",f,e)})]}),(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,useFlexGap:!0,flexWrap:"wrap",children:[(0,Je.jsx)(Eb,{size:"small",variant:"contained",onClick:()=>{r(c)},disabled:!g,startIcon:(0,Je.jsx)(ID.A,{}),children:l("save")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:()=>o(c,p),startIcon:(0,Je.jsx)(gS.A,{}),children:l("copy_as_template","\u590d\u5236\u4e3a\u6a21\u677f")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",color:"error",onClick:async()=>{await u({message:l("delete_prompt_confirm","\u786e\u5b9a\u5220\u9664\u8fd9\u4efd\u63d0\u793a\u8bcd\u5417\uff1f"),confirmText:l("delete"),cancelText:l("cancel")})&&(i(c.slug),null===s||void 0===s||s())},disabled:n,startIcon:(0,Je.jsx)(KA.A,{}),children:l("delete")})]})]})}function pF(){const e=Hf(),{prompts:t,addPrompt:n,updatePrompt:r,deletePrompt:o,copyPrompt:i,isPresetPromptSlug:s}=$C(),[l,u]=(0,a.useState)(""),[c,d]=(0,a.useState)(null),p=(0,a.useRef)(null),h=Boolean(c);(0,a.useEffect)(()=>{if(0===t.length)return void u("");t.some(e=>(0,Qi.ObO)(e).slug===l)||u((0,Qi.ObO)(t[0]).slug)},[t,l]),(0,a.useLayoutEffect)(()=>{var e;null===(e=p.current)||void 0===e||e.scrollTo({top:0})},[l]);const f=(0,a.useMemo)(()=>t.find(e=>(0,Qi.ObO)(e).slug===l),[t,l]),m=(0,a.useMemo)(()=>Qi.xTS.map(e=>({category:e,templates:t.filter(t=>s((0,Qi.ObO)(t).slug)&&(0,Qi.ObO)(t).category===e)})).filter(e=>e.templates.length>0),[s,t]),g=()=>{d(null)};return(0,Je.jsx)(st,{children:(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsx)(st,{children:(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,useFlexGap:!0,flexWrap:"wrap",children:[(0,Je.jsx)(Eb,{size:"small",id:"add-prompt-button",variant:"contained",onClick:e=>{d(e.currentTarget)},"aria-controls":h?"add-prompt-menu":void 0,"aria-haspopup":"true","aria-expanded":h?"true":void 0,startIcon:(0,Je.jsx)(TD.A,{}),endIcon:(0,Je.jsx)($_.A,{}),children:e("add_prompt","\u65b0\u589e\u63d0\u793a\u8bcd")}),(0,Je.jsx)(jy,{id:"add-prompt-menu",anchorEl:c,open:h,onClose:g,MenuListProps:{"aria-labelledby":"add-prompt-button"},children:m.map(t=>(0,Je.jsxs)(a.Fragment,{children:[(0,Je.jsx)(fC,{disableSticky:!0,children:(0,Qi.oGC)(t.category,e)}),t.templates.map(t=>(0,Je.jsxs)(dx,{onClick:()=>(t=>{const r=(0,Qi.ejN)(t,e),o=n(t,r);u(o),g()})(t),sx:{gap:1},children:[(0,Je.jsx)(aF.A,{fontSize:"small",color:"action"}),(0,Je.jsx)(st,{component:"span",sx:{flex:1},children:(0,Qi.ejN)(t,e)})]},(0,Qi.ObO)(t).slug))]},t.category))})]})}),(0,Je.jsxs)(st,{sx:{display:"flex",flexDirection:{xs:"column",md:"row"},border:1,borderColor:"divider",borderRadius:1,overflow:"hidden",height:{md:"calc(100vh - 140px)"},minHeight:{md:450}},children:[(0,Je.jsx)(st,{sx:e=>({width:{xs:"100%",md:280},flex:{xs:"0 0 auto",md:"0 0 280px"},height:{md:"100%"},overflowY:"auto",borderRight:{xs:0,md:"1px solid ".concat(e.palette.divider)},borderBottom:{xs:"1px solid ".concat(e.palette.divider),md:0}}),children:(0,Je.jsx)(av,{disablePadding:!0,children:t.map(e=>(0,Je.jsx)(cF,{prompt:e,selected:(0,Qi.ObO)(e).slug===l,isPreset:s((0,Qi.ObO)(e).slug),onSelect:()=>u((0,Qi.ObO)(e).slug)},(0,Qi.ObO)(e).slug))})}),(0,Je.jsx)(st,{ref:p,sx:{flex:1,minWidth:0,p:2,boxSizing:"border-box",height:{md:"100%"},overflowY:{md:"auto"},scrollbarGutter:{md:"stable"},overscrollBehavior:"contain"},children:f&&(0,Je.jsx)(dF,{prompt:f,isPreset:s((0,Qi.ObO)(f).slug),onSave:e=>r((0,Qi.ObO)(f).slug,e),onCopy:(e,t)=>{const n=i(e,t);u(n)},onDelete:o,onCollapse:()=>u("")})})]})]})})}function hF(){const e=Hf(),{inputRule:t,updateInputRule:n}=function(){const{setting:e,updateChild:t}=Rf();return{inputRule:(null===e||void 0===e?void 0:e.inputRule)||Qi.AFg,updateInputRule:t("inputRule")}}(),{enabledApis:r}=BD(),o=e=>{e.preventDefault();let{name:t,value:r}=e.target;n({[t]:r})},i=(0,a.useCallback)(e=>{n({triggerShortcut:e})},[n]),{transOpen:s,apiSlug:l,fromLang:u,toLang:c,triggerShortcut:d,triggerCount:p,triggerTime:h,transSign:f,showDot:m,blacklist:g=""}=t;return(0,Je.jsx)(st,{children:(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsx)(Fx,{control:(0,Je.jsx)(Hx,{size:"small",name:"transOpen",checked:s,onChange:()=>{n({transOpen:!s})}}),label:e("use_input_box_translation"),sx:{width:"fit-content"}}),(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"apiSlug",value:l,label:e("translate_service"),onChange:o,children:r.map(e=>(0,Je.jsx)(dx,{value:e.apiSlug,children:e.apiName},e.apiSlug))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"fromLang",value:u,label:e("from_lang"),onChange:o,children:Qi.UF6.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"toLang",value:c,label:e("to_lang"),onChange:o,children:Qi.$QD.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"transSign",value:f,label:e("input_trans_start_sign"),onChange:o,helperText:e("input_trans_start_sign_help"),children:[(0,Je.jsx)(dx,{value:"",children:e("style_none")}),Qi.x0p.map(e=>(0,Je.jsx)(dx,{value:e,children:e},e))]})})]})}),(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(Xk,{value:d,onChange:i,label:e("trigger_trans_shortcut"),helperText:e("trigger_trans_shortcut_help")})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"triggerCount",value:p,label:e("shortcut_press_count"),onChange:o,children:[1,2,3,4,5].map(e=>(0,Je.jsx)(dx,{value:e,children:e},e))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("combo_timeout"),type:"number",name:"triggerTime",value:h,onChange:o,min:10,max:1e3})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"showDot",value:m||Qi.eUB,label:e("show_translation_dot"),onChange:o,children:[(0,Je.jsx)(dx,{value:Qi.eUB,children:e("show_dot_mobile")}),(0,Je.jsx)(dx,{value:Qi.nQv,children:e("show_dot_always")}),(0,Je.jsx)(dx,{value:Qi.axl,children:e("show_dot_disable")})]})})]})}),(0,Je.jsx)(hb,{size:"small",label:e("blacklist"),helperText:e("pattern_helper"),name:"blacklist",value:g,onChange:o,maxRows:10,multiline:!0})]})})}function fF(){const e=Hf(),{tranboxSetting:t,updateTranbox:n}=function(){const{setting:e,updateChild:t}=Rf();return{tranboxSetting:(null===e||void 0===e?void 0:e.tranboxSetting)||Qi.Azs,updateTranbox:t("tranboxSetting")}}(),{enabledApis:r,aiEnabledApis:o}=BD(),{prompts:i}=$C(),s=(0,a.useMemo)(()=>(0,Qi.XDR)(i),[i]),l=e=>{e.preventDefault();let{name:t,value:r}=e.target;switch(t){case"btnOffsetX":case"btnOffsetY":case"boxOffsetX":case"boxOffsetY":r=(0,_s.NS)(r,-200,200)}n({[t]:r})},u=(0,a.useCallback)(e=>{n({tranboxShortcut:e})},[n]),{transOpen:c,apiSlugs:d,singleWordNoTrans:p=!1,autoFavWord:h=!1,fromLang:f,toLang:m,toLang2:g="en",tranboxShortcut:v,btnOffsetX:y,btnOffsetY:b,boxOffsetX:x=0,boxOffsetY:A=10,hideTranBtn:D=!1,hideClickAway:k=!1,simpleStyle:w=!1,followSelection:S=!1,autoHeight:E=!1,triggerMode:_=Qi.DQg,tranboxInteractMode:C="-",btnPositionMode:F=Qi.vcx,enDict:T=Qi.GDU,enSug:j=Qi.s1S,aiDictApiSlug:z="-",aiDictPromptSlug:I=Qi.Qs8,blacklist:L="",skipLangs:P=[]}=t;return(0,Je.jsx)(st,{children:(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsx)(Fx,{control:(0,Je.jsx)(Hx,{size:"small",name:"transOpen",checked:c,onChange:()=>{n({transOpen:!c})}}),label:e("toggle_selection_translate"),sx:{width:"fit-content"}}),(0,Je.jsx)(hb,{select:!0,size:"small",label:e("selection_skip_langs"),helperText:e("selection_skip_langs_helper"),name:"skipLangs",value:P,onChange:l,SelectProps:{multiple:!0},children:Qi.WwQ.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})}),(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"apiSlugs",value:d,label:e("translate_service_multiple"),onChange:l,SelectProps:{multiple:!0},children:r.map(e=>(0,Je.jsx)(dx,{value:e.apiSlug,children:e.apiName},e.apiSlug))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"singleWordNoTrans",value:p,label:e("single_word_no_trans"),onChange:l,children:[(0,Je.jsx)(dx,{value:!1,children:e("disable")}),(0,Je.jsx)(dx,{value:!0,children:e("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"autoFavWord",value:h,label:e("auto_fav_word"),onChange:l,children:[(0,Je.jsx)(dx,{value:!1,children:e("disable")}),(0,Je.jsx)(dx,{value:!0,children:e("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{fullWidth:!0,select:!0,size:"small",name:"fromLang",value:f,label:e("from_lang"),onChange:l,children:Qi.UF6.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{fullWidth:!0,select:!0,size:"small",name:"toLang",value:m,label:e("to_lang"),onChange:l,children:Qi.$QD.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"toLang2",value:g,label:e("to_lang2"),helperText:e("to_lang2_helper"),onChange:l,children:[(0,Je.jsx)(dx,{value:"-",children:e("disable")}),Qi.$QD.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"enDict",value:T,label:e("english_dict"),onChange:l,children:[(0,Je.jsx)(dx,{value:"-",children:e("disable")}),Qi.F$3.map(e=>(0,Je.jsx)(dx,{value:e,children:e},e))]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"aiDictApiSlug",value:z,label:e("ai_dict_api","AI\u8bcd\u5178\u63a5\u53e3"),onChange:l,children:[(0,Je.jsx)(dx,{value:"-",children:e("disable")}),o.map(e=>(0,Je.jsx)(dx,{value:e.apiSlug,children:e.apiName},e.apiSlug))]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"aiDictPromptSlug",value:I,label:e("ai_dict_prompt","AI\u8bcd\u5178\u63d0\u793a\u8bcd"),onChange:l,children:[(0,Je.jsx)(dx,{value:Qi.Qs8,children:e("follow_api_prompt","\u63a5\u53e3\u9ed8\u8ba4")}),s.map(t=>(0,Je.jsx)(dx,{value:t.slug,children:(0,Qi.ejN)(t,e)},t.slug))]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"enSug",value:j,label:e("english_suggest"),onChange:l,children:[(0,Je.jsx)(dx,{value:"-",children:e("disable")}),Qi.O09.map(e=>(0,Je.jsx)(dx,{value:e,children:e},e))]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{fullWidth:!0,select:!0,size:"small",name:"triggerMode",value:_,label:e("trigger_mode"),onChange:l,children:Qi.EZo.map(t=>(0,Je.jsx)(dx,{value:t,children:e("trigger_".concat(t))},t))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{fullWidth:!0,select:!0,size:"small",name:"btnPositionMode",value:F,label:e("tranbtn_position_mode"),onChange:l,children:Qi.Eqg.map(t=>(0,Je.jsx)(dx,{value:t,children:e("tranbtn_position_".concat(t))},t))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"hideTranBtn",value:D,label:e("hide_tran_button"),onChange:l,children:[(0,Je.jsx)(dx,{value:!1,children:e("show")}),(0,Je.jsx)(dx,{value:!0,children:e("hide")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"hideClickAway",value:k,label:e("hide_click_away"),onChange:l,children:[(0,Je.jsx)(dx,{value:!1,children:e("disable")}),(0,Je.jsx)(dx,{value:!0,children:e("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"simpleStyle",value:w,label:e("use_simple_style"),onChange:l,children:[(0,Je.jsx)(dx,{value:!1,children:e("disable")}),(0,Je.jsx)(dx,{value:!0,children:e("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"followSelection",value:S,label:e("follow_selection"),onChange:l,children:[(0,Je.jsx)(dx,{value:!1,children:e("disable")}),(0,Je.jsx)(dx,{value:!0,children:e("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("tranbtn_offset_x"),type:"number",name:"btnOffsetX",value:y,onChange:l,min:-200,max:200})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("tranbtn_offset_y"),type:"number",name:"btnOffsetY",value:b,onChange:l,min:-200,max:200})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("tranbox_offset_x"),type:"number",name:"boxOffsetX",value:x,onChange:l,min:-200,max:200})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("tranbox_offset_y"),type:"number",name:"boxOffsetY",value:A,onChange:l,min:-200,max:200})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"autoHeight",value:E,label:e("tranbox_auto_height"),onChange:l,children:[(0,Je.jsx)(dx,{value:!1,children:e("disable")}),(0,Je.jsx)(dx,{value:!0,children:e("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"tranboxInteractMode",value:C,label:e("tranbox_interact_mode"),onChange:l,children:[(0,Je.jsx)(dx,{value:"-",children:e("disable")}),(0,Je.jsx)(dx,{value:Qi.BQZ,children:e("tranbox_interact_click")}),(0,Je.jsx)(dx,{value:Qi.fFq,children:e("tranbox_interact_dblclick")})]})}),!Fs.aQ&&(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(Xk,{value:v,onChange:u,label:e("trigger_tranbox_shortcut")})})]})}),(0,Je.jsx)(hb,{size:"small",label:e("blacklist"),helperText:e("pattern_helper"),name:"blacklist",value:L,onChange:l,maxRows:10,multiline:!0})]})})}const mF={};function gF(){const{data:e,save:t}=uf(Qi.CWU,mF,Qi.sgk),n=(0,a.useCallback)(e=>{t(e),(0,Ji.GY)(Qi.sgk)},[t]),r=(0,a.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];n(n=>{if(!n[e]){const i={createdAt:Date.now(),timestamp:t,phonetic:r,definition:o,examples:a};return Object.keys(i).forEach(e=>{(null===i[e]||void 0===i[e]||Array.isArray(i[e])&&0===i[e].length||"string"===typeof i[e]&&0===i[e].length)&&delete i[e]}),(0,It.A)((0,It.A)({},n),{},{[e]:i})}const i=(0,It.A)({},n);return delete i[e],i})},[n]),o=(0,a.useCallback)(e=>{n(t=>(0,It.A)((0,It.A)({},e.reduce((e,t)=>(e[t]={createdAt:Date.now()},e),{})),t))},[n]),i=(0,a.useCallback)(()=>{n({})},[n]),s=(0,a.useMemo)(()=>Object.entries(e||{}).sort((e,t)=>e[0].localeCompare(t[0])),[e]),l=(0,a.useMemo)(()=>s.map(e=>{let[t]=e;return t}),[s]);return{favWords:e,favList:s,wordList:l,toggleFav:r,mergeWords:o,clearWords:i}}var vF=n(561),yF=n(5555);function bF(e){var t;let{word:n,title:r}=e;const{favWords:o,toggleFav:i}=gF(),{context:s,setting:l}=Rf(),[u,c]=(0,a.useState)(!1),d="tranbox"===s&&(null===l||void 0===l||null===(t=l.tranboxSetting)||void 0===t?void 0:t.autoFavWord),p=(0,a.useCallback)(()=>{try{c(!0),i(n)}catch(e){(0,Zi.h9)("set fav",e)}finally{c(!1)}},[i,n]);return(0,a.useEffect)(()=>{d&&n&&!o[n]&&p()},[d,o,p,n]),(0,Je.jsx)(Ri,{disabled:u,size:"small",onClick:p,title:r,children:o[n]?(0,Je.jsx)(vF.A,{fontSize:"inherit"}):(0,Je.jsx)(yF.A,{fontSize:"inherit"})})}var xF=n(5323);function AF(e){let{text:t,title:n="copy"}=e;const[r,o]=(0,a.useState)(!1);return(0,Je.jsx)(Ri,{size:"small",sx:{opacity:.5,"&:hover":{opacity:1}},onClick:async e=>{e.stopPropagation(),await navigator.clipboard.writeText(t),o(!0);const n=setTimeout(()=>{clearTimeout(n),o(!1)},500)},title:n,children:r?(0,Je.jsx)(xF.A,{fontSize:"inherit"}):(0,Je.jsx)(gS.A,{fontSize:"inherit"})})}var DF=n(4762);function kF(){var e,t;return"function"===typeof(null===(e=globalThis.chrome)||void 0===e||null===(t=e.tts)||void 0===t?void 0:t.speak)}function wF(){var e;return"function"===typeof(null===(e=globalThis.speechSynthesis)||void 0===e?void 0:e.speak)&&"function"===typeof globalThis.SpeechSynthesisUtterance}const SF=new Set(["end","interrupted","cancelled","error"]);function EF(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!wF())return!1;try{const r=new globalThis.SpeechSynthesisUtterance(e);return r.lang=t,r.onend=n.onEnd,r.onerror=n.onEnd,globalThis.speechSynthesis.speak(r),!0}catch(r){return!1}}function _F(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-US",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=null===e||void 0===e?void 0:e.trim();if(!r)return!1;const o=function(e){const t=String(e||"").trim().replace(/_/g,"-"),n=t.toLowerCase();return t&&"en"!==n&&"auto"!==n&&"detect"!==n&&"und"!==n&&"unknown"!==n&&/^[a-z]{2,3}(-[a-z0-9]{2,8})*$/i.test(t)?t:"en-US"}(t);let a=!1;const i=()=>{var e;a||(a=!0,null===(e=n.onEnd)||void 0===e||e.call(n))};if(kF())try{return globalThis.chrome.tts.speak(r,{lang:o,onEvent:e=>{SF.has(null===e||void 0===e?void 0:e.type)&&i()}},()=>{var e,t;null!==(e=globalThis.chrome)&&void 0!==e&&null!==(t=e.runtime)&&void 0!==t&&t.lastError&&(EF(r,o,{onEnd:i})||i())}),!0}catch(s){return EF(r,o,{onEnd:i})}return EF(r,o,{onEnd:i})}function CF(e){let{src:t}=e;const{error:n,ready:r,playing:o,onPlay:i}=function(e){const t=(0,a.useRef)(null),[n,r]=(0,a.useState)(null),[o,i]=(0,a.useState)(!1),[s,l]=(0,a.useState)(!1),[u,c]=(0,a.useState)(!1),d=(0,a.useCallback)(async()=>{if(t.current)try{await t.current.play()}catch(e){Zi.vF.info("Playback failed:",e),l(!1)}},[]),p=(0,a.useCallback)(()=>{var e;null===(e=t.current)||void 0===e||e.pause()},[]);return(0,a.useEffect)(()=>{if(!e)return;let n=!1;i(!1),r(null),l(!1),c(!0);const o=new Audio;t.current=o;const a=()=>i(!0),s=()=>l(!0),u=()=>l(!1),d=()=>l(!1),p=e=>{n||(r(o.error||e),i(!1),c(!1))};return o.addEventListener("canplaythrough",a),o.addEventListener("play",s),o.addEventListener("pause",u),o.addEventListener("ended",d),o.addEventListener("error",p),(async()=>{try{const t=await(0,Es.Fd)(e,{},{expect:"audio"});if(n)return;o.src=t,c(!1)}catch(t){n||(Zi.vF.info("Audio fetch failed:",t),r(t),c(!1))}})(),()=>{n=!0,o.pause(),o.removeAttribute("src"),o.removeEventListener("canplaythrough",a),o.removeEventListener("play",s),o.removeEventListener("pause",u),o.removeEventListener("ended",d),o.removeEventListener("error",p)}},[e]),{loading:u,error:n,ready:o,playing:s,onPlay:d,onPause:p}}(t);return n||!r?(0,Je.jsx)(Ri,{disabled:!0,size:"small",children:(0,Je.jsx)(DF.A,{fontSize:"inherit"})}):o?(0,Je.jsx)(Ri,{color:"primary",size:"small",children:(0,Je.jsx)(DF.A,{fontSize:"inherit"})}):(0,Je.jsx)(Ri,{onClick:i,size:"small",children:(0,Je.jsx)(DF.A,{fontSize:"inherit"})})}function FF(e){let{text:t,lan:n="uk",spd:r=3}=e;if(!t)return null;const o="https://fanyi.baidu.com/gettts?".concat(Ss.stringify({lan:n,text:t,spd:r}));return(0,Je.jsx)(CF,{src:o})}function TF(e){let{text:t,lang:n="en-US"}=e;const[r,o]=(0,a.useState)(!1);if(null===t||void 0===t||!t.trim()||!kF()&&!wF())return null;return(0,Je.jsx)(Ri,{color:r?"primary":"default",onClick:r?void 0:()=>{if(r)return;o(!0);_F(t,n,{onEnd:()=>o(!1)})||o(!1)},size:"small",sx:{ml:.5,verticalAlign:"middle"},children:(0,Je.jsx)(DF.A,{fontSize:"inherit"})})}const jF={[Qi.GDU]:{apiFn:async e=>{var t;const n={text:e},r="".concat(Qi.aZh,"?").concat(Ss.stringify(n)),o=await(0,Fu.QF)(r);if(o)return o;const a="https://www.bing.com",i="".concat(a,"/dict/search?q=").concat(e,"&FORM=BDVSP6&cc=cn"),s=await(0,Es.Fd)(i,{credentials:"include"},{useCache:!1});if(!s)return null;const l=(new DOMParser).parseFromString(Kl.createHTML(s),"text/html"),u=null===(t=l.querySelector("#headword > h1"))||void 0===t?void 0:t.textContent.trim();if(!u)return null;const c=[];l.querySelectorAll("div.qdef > ul > li").forEach(e=>{var t,n,r,o;const a=null===(t=e.querySelector(".pos"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim(),i=null===(r=e.querySelector(".def"))||void 0===r||null===(o=r.textContent)||void 0===o?void 0:o.trim();c.push({pos:a,def:i})});const d=[];l.querySelectorAll("div.hd_div1>.hd_if>.p1-5").forEach(e=>{var t;const n=null===(t=e.textContent)||void 0===t?void 0:t.trim();d.push(n)});const p=[];l.querySelectorAll(".each_seg>.li_pos").forEach(e=>{var t,n;const r=null===(t=e.querySelector(".pos_lin>.pos"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim(),o=[];e.querySelectorAll(".de_seg>.se_lis").forEach(e=>{var t,n;o.push(null===(t=e.querySelector(".de_co"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim())}),p.push({pos:r,lis:o})});const h=[];l.querySelectorAll("#sentenceSeg .se_li").forEach(e=>{var t,n,r,o;const a=null===(t=e.querySelector(".sen_en"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim(),i=null===(r=e.querySelector(".sen_cn"))||void 0===r||null===(o=r.textContent)||void 0===o?void 0:o.trim();a&&i&&h.push({eng:a,chs:i})});const f=[],m=l.querySelector("#bigaud_uk"),g=l.querySelector("#bigaud_us");if(m){var v,y,b,x,A;const e=a+(null===m||void 0===m||null===(v=m.dataset)||void 0===v?void 0:v.mp3link),t=null===(y=m.parentElement)||void 0===y?void 0:y.previousElementSibling,n=null===t||void 0===t||null===(b=t.textContent)||void 0===b||null===(x=b.trim())||void 0===x||null===(A=x.match(/\[(.*?)\]/))||void 0===A?void 0:A[1];f.push({key:"\u82f1",audio:e,phonetic:n})}if(g){var D,k,w,S,E;const e=a+(null===g||void 0===g||null===(D=g.dataset)||void 0===D?void 0:D.mp3link),t=null===(k=g.parentElement)||void 0===k?void 0:k.previousElementSibling,n=null===t||void 0===t||null===(w=t.textContent)||void 0===w||null===(S=w.trim())||void 0===S||null===(E=S.match(/\[(.*?)\]/))||void 0===E?void 0:E[1];f.push({key:"\u7f8e",audio:e,phonetic:n})}if(0===f.length){const e=l.querySelector(".hd_pr"),t=l.querySelector(".hd_prUS");if(e){var _;const t=null===(_=e.textContent)||void 0===_?void 0:_.trim(),n=null===t||void 0===t?void 0:t.match(/\[([^\]]+)\]/);n&&f.push({key:"\u82f1",phonetic:n[1]})}if(t){var C;const e=null===(C=t.textContent)||void 0===C?void 0:C.trim(),n=null===e||void 0===e?void 0:e.match(/\[([^\]]+)\]/);n&&f.push({key:"\u7f8e",phonetic:n[1]})}}const F={word:u,trs:c,aus:f,ecs:p,sentences:h,presents:d};return(0,Fu.v0)(r,null,F),F},reWord:e=>null===e||void 0===e?void 0:e.word,toText:e=>{var t;return(null===e||void 0===e||null===(t=e.trs)||void 0===t?void 0:t.map(e=>{let{pos:t,def:n}=e;return"".concat(t?"[".concat(t,"] "):"").concat(n)}))||[]},uiAudio:e=>{var t;return(0,Je.jsx)(gf,{component:"div",children:null===e||void 0===e||null===(t=e.aus)||void 0===t?void 0:t.map(e=>{let{key:t,audio:n,phonetic:r}=e;return(0,Je.jsxs)(gf,{component:"div",style:{display:"inline-block",paddingRight:"1em"},children:[(0,Je.jsx)(gf,{component:"span",children:"".concat(t," [").concat(r||"","]")}),(0,Je.jsx)(CF,{src:n})]},t)})})},uiTrans:e=>{var t,n,r,o;return(0,Je.jsxs)(gf,{component:"div",children:[(0,Je.jsx)(gf,{component:"ul",children:null===e||void 0===e||null===(t=e.trs)||void 0===t?void 0:t.map((e,t)=>{let{pos:n,def:r}=e;return(0,Je.jsxs)(gf,{component:"li",children:[n&&"[".concat(n,"] "),r]},t)})}),(null===e||void 0===e||null===(n=e.presents)||void 0===n?void 0:n.length)>0&&(0,Je.jsx)(gf,{component:"div",style:{marginTop:"10px"},children:e.presents.join(", ")}),(null===e||void 0===e||null===(r=e.ecs)||void 0===r?void 0:r.length)>0&&(0,Je.jsxs)(gf,{component:"div",style:{marginTop:"10px"},children:[(0,Je.jsx)(gf,{component:"div",style:{fontWeight:"bold",marginBottom:"5px"},children:"\u82f1\u6c49\u53cc\u89e3"}),e.ecs.map(e=>{let{pos:t,lis:n}=e;return(0,Je.jsxs)(gf,{component:"div",children:[(0,Je.jsx)(gf,{component:"div",children:t}),(0,Je.jsx)(gf,{component:"ul",children:n.map((e,t)=>(0,Je.jsx)(gf,{component:"li",children:e},t))})]},t)})]}),(null===e||void 0===e||null===(o=e.sentences)||void 0===o?void 0:o.length)>0&&(0,Je.jsxs)(gf,{component:"div",style:{marginTop:"10px"},children:[(0,Je.jsx)(gf,{component:"div",style:{fontWeight:"bold",marginBottom:"5px"},children:"\u4f8b\u53e5"}),e.sentences.slice(0,2).map((t,n)=>{var r,o;return(0,Je.jsxs)(gf,{component:"div",style:{marginBottom:"5px"},children:[(0,Je.jsx)(gf,{component:"div",children:null===(r=t.eng)||void 0===r||null===(o=r.split(e.word))||void 0===o?void 0:o.map((t,n,r)=>(0,Je.jsxs)("span",{children:[n>0&&(0,Je.jsx)("span",{style:{fontWeight:"bold",color:"#1e88e5"},children:e.word}),t]},n))}),(0,Je.jsx)(gf,{component:"div",style:{opacity:"0.6",fontStyle:"italic"},children:t.chs})]},n)})]})]})}},[Qi.dyy]:{apiFn:async e=>{const t="https://dict.youdao.com/jsonapi_s?".concat(Ss.stringify({doctype:"json",jsonversion:4})),n={headers:{accept:"application/json, text/plain, */*","accept-language":"en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ja;q=0.6","content-type":"application/x-www-form-urlencoded"},method:"POST",body:Ss.stringify({q:e,le:"en",t:3,client:"web",keyfrom:"webdict"})},r=await(0,Es.Fd)(t,n,{useCache:!0});return r?(await(0,Fu.v0)(t,n,r),r):null},reWord:e=>{var t,n;return null===e||void 0===e||null===(t=e.ec)||void 0===t||null===(n=t.word)||void 0===n?void 0:n["return-phrase"]},toText:e=>{var t,n,r;return(null===e||void 0===e||null===(t=e.ec)||void 0===t||null===(n=t.word)||void 0===n||null===(r=n.trs)||void 0===r?void 0:r.map(e=>{let{pos:t,tran:n}=e;return"".concat(t?"[".concat(t,"] "):"").concat(n)}))||[]},uiAudio:e=>{var t,n,r,o,a,i,s,l,u,c,d,p;return(0,Je.jsxs)(gf,{component:"div",children:[(0,Je.jsxs)(gf,{component:"div",style:{display:"inline-block",paddingRight:"1em"},children:[(0,Je.jsx)(gf,{component:"span",children:"\u82f1 ".concat(null!==e&&void 0!==e&&null!==(t=e.ec)&&void 0!==t&&null!==(n=t.word)&&void 0!==n&&n.ukphone?"[".concat(null===e||void 0===e||null===(r=e.ec)||void 0===r||null===(o=r.word)||void 0===o?void 0:o.ukphone,"]"):"")}),(0,Je.jsx)(FF,{text:null===e||void 0===e||null===(a=e.ec)||void 0===a||null===(i=a.word)||void 0===i?void 0:i["return-phrase"],lan:"uk"})]}),(0,Je.jsxs)(gf,{component:"div",style:{display:"inline-block",paddingRight:"1em"},children:[(0,Je.jsx)(gf,{component:"span",children:"\u7f8e ".concat(null!==e&&void 0!==e&&null!==(s=e.ec)&&void 0!==s&&null!==(l=s.word)&&void 0!==l&&l.usphone?"[".concat(null===e||void 0===e||null===(u=e.ec)||void 0===u||null===(c=u.word)||void 0===c?void 0:c.usphone,"]"):"")}),(0,Je.jsx)(FF,{text:null===e||void 0===e||null===(d=e.ec)||void 0===d||null===(p=d.word)||void 0===p?void 0:p["return-phrase"],lan:"en"})]})]})},uiTrans:e=>{var t,n,r,o,a;return(0,Je.jsxs)(gf,{component:"div",children:[(0,Je.jsx)(gf,{component:"ul",children:null===e||void 0===e||null===(t=e.ec)||void 0===t||null===(n=t.word)||void 0===n||null===(r=n.trs)||void 0===r?void 0:r.map((e,t)=>{let{pos:n,tran:r}=e;return(0,Je.jsxs)(gf,{component:"li",children:[n&&"[".concat(n,"] "),r]},t)})}),(null===e||void 0===e||null===(o=e.blng_sents_part)||void 0===o||null===(a=o["sentence-pair"])||void 0===a?void 0:a.length)>0&&(0,Je.jsxs)(gf,{component:"div",style:{marginTop:"10px"},children:[(0,Je.jsx)(gf,{component:"div",style:{fontWeight:"bold",marginBottom:"5px"},children:"\u4f8b\u53e5"}),e.blng_sents_part["sentence-pair"].slice(0,2).map((t,n)=>{var r,o,a,i;return(0,Je.jsxs)(gf,{component:"div",style:{marginBottom:"5px"},children:[(0,Je.jsx)(gf,{component:"div",children:null===(r=t.sentence)||void 0===r||null===(o=r.split(null===(a=e.ec)||void 0===a||null===(i=a.word)||void 0===i?void 0:i["return-phrase"]))||void 0===o?void 0:o.map((t,n,r)=>{var o,a;return(0,Je.jsxs)("span",{children:[n>0&&(null===(o=e.ec)||void 0===o||null===(a=o.word)||void 0===a?void 0:a["return-phrase"])&&(0,Je.jsx)("span",{style:{fontWeight:"bold",color:"#1e88e5"},children:e.ec.word["return-phrase"]}),t]},n)})}),(0,Je.jsx)(gf,{component:"div",style:{opacity:"0.6",fontStyle:"italic"},children:t["sentence-translation"]})]},n)})]})]})}}};function zF(e){let{text:t,setCopyText:n,setRealWord:r,dict:o}=e;const{loading:i,error:s,data:l}=Wf(o.apiFn,t);(0,a.useEffect)(()=>{if(!l)return;const e=o.reWord(l)||t,a=[e,o.toText(l).join("\n")].join("\n");r(e),n(a)},[l,t,o,n,r]);const u=(0,a.useMemo)(()=>o.uiAudio(l),[l,o]),c=(0,a.useMemo)(()=>o.uiTrans(l),[l,o]);return i?(0,Je.jsx)(zt,{size:16}):s?(0,Je.jsx)(Xi,{severity:"error",children:s}):l?(0,Je.jsxs)(gf,{component:"div",children:[u,c]}):(0,Je.jsx)(gf,{children:"Not found!"})}function IF(e){let{text:t,enDict:n}=e;const r=Hf(),[o,i]=(0,a.useState)(t),[s,l]=(0,a.useState)(t),u=jF[n];return(0,Je.jsxs)(vm,{spacing:1,children:[t&&(0,Je.jsxs)(vm,{direction:"row",justifyContent:"space-between",children:[(0,Je.jsx)(gf,{variant:"subtitle1",style:{fontWeight:"bold"},children:s}),(0,Je.jsxs)(vm,{direction:"row",justifyContent:"space-between",children:[(0,Je.jsx)(AF,{text:o,title:r("copy")}),(0,Je.jsx)(bF,{word:s,title:r("collect")})]})]}),(0,Je.jsx)(zf,{}),u&&(0,Je.jsx)(zF,{text:t,setCopyText:i,setRealWord:l,dict:u})]})}const LF=new Map;function PF(e){let{text:t,fromLang:n,speechLang:r,toLang:o,apiSetting:i,context:s=""}=e;const l=Hf(),[u,c]=(0,a.useState)(""),[d,p]=(0,a.useState)(!1),[h,f]=(0,a.useState)(""),m=JSON.stringify(i||{});return(0,a.useEffect)(()=>{if(null===t||void 0===t||!t.trim()||null===i||void 0===i||!i.apiSlug)return c(""),p(!1),void f("");let e=!0;const r=function(e){let{text:t,fromLang:n,toLang:r,apiSettingKey:o,context:a}=e;return JSON.stringify({text:t,fromLang:n,toLang:r,apiSettingKey:o,context:a})}({text:t,fromLang:n,toLang:o,apiSettingKey:m,context:s}),a=t=>{let{markdown:n}=t;e&&n&&c(n)};return(async()=>{try{p(!0),c(""),f("");let l=LF.get(r);l||(l={subscribers:new Set,promise:null},l.promise=sc({text:t,fromLang:n,toLang:o,apiSetting:i,context:s,onStreamChunk:e=>{l.subscribers.forEach(t=>t(e))}}).finally(()=>{LF.delete(r)}),LF.set(r,l)),l.subscribers.add(a);const u=await l.promise;e&&c(u)}catch(l){if("AbortError"===(null===l||void 0===l?void 0:l.name))return;e&&f(l.message)}finally{e&&p(!1)}})(),()=>{var t;e=!1,null===(t=LF.get(r))||void 0===t||t.subscribers.delete(a)}},[t,n,o,m,s]),h?(0,Je.jsx)(Xi,{severity:"error",children:h}):d&&!u?(0,Je.jsx)(zt,{size:16}):u?(0,Je.jsxs)(st,{sx:{position:"relative",pr:8,"& > :first-of-type":{mt:0},"& > :last-child":{mb:0},"& h1, & h2, & h3, & h4, & h5, & h6":{fontSize:"1em",fontWeight:700,lineHeight:1.55,mt:1.25,mb:.75},"& p":{my:1},"& ul, & ol":{pl:3,my:1},"& blockquote":{m:0,pl:1.5,borderLeft:"3px solid",borderColor:"divider",color:"text.secondary"},"& code":{px:.5,py:.1,borderRadius:.5,bgcolor:"action.hover"}},children:[(0,Je.jsxs)(st,{sx:{position:"absolute",top:0,right:0,zIndex:1,display:"flex",alignItems:"center"},children:[(0,Je.jsx)(TF,{text:t,lang:r||n||"en-US"}),(0,Je.jsx)(AF,{text:u,title:l("copy")})]}),d&&(0,Je.jsx)(zt,{size:12,sx:{mr:1}}),(0,Je.jsx)(gf,{component:"div",children:(0,Je.jsx)(Fa,{children:u})})]}):null}function RF(e){let{text:t}=e;const{loading:n,error:r,data:o}=Wf(oc,t);return n?(0,Je.jsx)(zt,{size:16}):r?(0,Je.jsx)(Xi,{severity:"error",children:r}):o?(0,Je.jsx)(Je.Fragment,{children:o.map(e=>{let{k:t,v:n}=e;return(0,Je.jsxs)(gf,{component:"div",children:[(0,Je.jsx)(gf,{children:t}),(0,Je.jsx)(gf,{component:"ul",style:{margin:"0"},children:(0,Je.jsx)(gf,{component:"li",children:n})})]},t)})}):null}function NF(e){let{text:t}=e;const{loading:n,error:r,data:o}=Wf(ac,t);return n?(0,Je.jsx)(zt,{size:16}):r?(0,Je.jsx)(Xi,{severity:"error",children:r}):o?(0,Je.jsx)(Je.Fragment,{children:o.map(e=>{let{entry:t,explain:n}=e;return(0,Je.jsxs)(gf,{component:"div",children:[(0,Je.jsx)(gf,{children:t}),(0,Je.jsx)(gf,{component:"ul",style:{margin:"0"},children:(0,Je.jsx)(gf,{component:"li",children:n})})]},t)})}):null}function OF(e){let{text:t,enSug:n}=e;const r={[Qi.SQ0]:(0,Je.jsx)(RF,{text:t}),[Qi.s1S]:(0,Je.jsx)(NF,{text:t})};return(0,Je.jsxs)(vm,{spacing:1,children:[(0,Je.jsx)(zf,{}),r[n]||(0,Je.jsx)(gf,{children:"Sug not support"})]})}const BF="https://www.zdic.net",MF=e=>(e||"").replace(/\s+/g," ").trim(),WF=e=>e?/^https?:\/\//.test(e)?e:e.startsWith("//")?"https:".concat(e):e.startsWith("/")?"".concat(BF).concat(e):e:"",UF=(e,t)=>{const n=Array.from(e.querySelectorAll(".meta-badge")).find(e=>MF(e.textContent)===t);return(e=>MF(Array.from((null===e||void 0===e?void 0:e.childNodes)||[]).filter(e=>e.nodeType===Node.TEXT_NODE).map(e=>e.textContent).join(""))||MF(null===e||void 0===e?void 0:e.textContent))(null===n||void 0===n?void 0:n.nextElementSibling)},VF=(e,t)=>(e=>Array.from(new Set(e.filter(Boolean))))(Array.from(e.querySelectorAll(t)).map(e=>{var t;return MF(e.getAttribute("title"))||MF(null===(t=e.querySelector("img"))||void 0===t?void 0:t.getAttribute("alt"))||MF(e.textContent)})).join(", "),HF=e=>{const t=[];return e.querySelectorAll(".jbjs>.jnr>p>.dicpy").forEach(e=>{var n,r;const o=MF(null===(n=e.childNodes[0])||void 0===n?void 0:n.nodeValue),a=e.querySelector(".audio_play_button"),i=[];let s=null===(r=e.parentElement)||void 0===r?void 0:r.nextElementSibling;for(;s;){var l;if("ol"===(null===(l=s.tagName)||void 0===l?void 0:l.toLowerCase())){s.querySelectorAll("li").forEach(e=>{i.push(MF(e.textContent))});break}if(s.querySelector(".dicpy"))break;s=s.nextElementSibling}t.push({pinyin:o,audioUrl:WF((null===a||void 0===a?void 0:a.getAttribute("data-src-mp3"))||(null===a||void 0===a?void 0:a.getAttribute("data-audio"))),definitions:i})}),t},GF=async e=>{var t,n,r,o,a,i;const s="".concat(BF,"/hans/").concat(encodeURIComponent(e)),l=await(0,Es.Fd)(s,{credentials:"omit"},{useCache:!1});if(!l)return null;const u=(new DOMParser).parseFromString(Kl.createHTML(l),"text/html"),c=MF(null===(t=u.querySelector(".char-meta"))||void 0===t?void 0:t.getAttribute("content"))||MF(null===(n=u.querySelector("#glyph-img"))||void 0===n?void 0:n.getAttribute("alt"))||MF(null===(r=u.querySelector(".dict-section__char"))||void 0===r?void 0:r.textContent)||MF(null===(o=u.querySelector(".h2_entry>.orth"))||void 0===o?void 0:o.textContent)||e,d=UF(u,"\u90e8\u9996")||MF(null===(a=u.querySelector("[class^='z_bs'] a"))||void 0===a?void 0:a.textContent),p=VF(u,"[class^='z_jfz'] a"),h=VF(u,".char-card__variants .variant-link")||VF(u,"[class^='z_yt'] a"),f=UF(u,"\u4e94\u7b14")||MF(null===(i=u.querySelector(".entry_title table.dsk:nth-child(2) tr:nth-child(2) > td.dsk_2_1:nth-child(1) > p"))||void 0===i?void 0:i.textContent),m=(e=>Array.from(e.querySelectorAll("#jbjs .jbjs-reading")).map(e=>{var t;const n=MF(null===(t=e.querySelector(".jbjs-reading__py"))||void 0===t?void 0:t.textContent),r=e.querySelector(".audio-btn"),o=Array.from(e.querySelectorAll(".jbjs-list li")).map(e=>MF(e.textContent)).filter(Boolean);return{pinyin:n,audioUrl:WF(null===r||void 0===r?void 0:r.getAttribute("data-audio")),definitions:o}}).filter(e=>e.pinyin||e.definitions.length>0))(u),{en:g,de:v,fr:y}=(e=>{const t={en:"",de:"",fr:""},n={"\u82f1\u8bed":"en","\u5fb7\u8bed":"de","\u6cd5\u8bed":"fr"};return Array.from(e.querySelectorAll(".enbox p, #jbjs p, #jbjs div")).forEach(e=>{const r=MF(e.textContent);Object.entries(n).forEach(e=>{let[n,o]=e;!t[o]&&r.startsWith(n)&&(t[o]=MF(r.slice(n.length)))})}),t})(u);return{text:c,bushou:d,fanti:p,yiti:h,wubi:f,results:m.length>0?m:HF(u),en:g,de:v,fr:y}};function qF(e){let{text:t}=e;const[n,r]=(0,a.useState)(null),[o,i]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{if(!t)return;let e=!0;return i(!0),GF(t).then(t=>{e&&(r(t),i(!1))}).catch(t=>{e&&(console.error("\u83b7\u53d6\u6c49\u5178\u6570\u636e\u5931\u8d25:",t),i(!1))}),()=>{e=!1}},[t]),o?(0,Je.jsx)(vm,{alignItems:"center",justifyContent:"center",py:2,children:(0,Je.jsx)(zt,{size:24})}):n?(0,Je.jsxs)(vm,{spacing:1,children:[(0,Je.jsx)(gf,{variant:"subtitle1",style:{fontWeight:"bold"},children:n.text}),(0,Je.jsx)(zf,{}),(n.bushou||n.wubi)&&(0,Je.jsxs)(gf,{variant:"body2",color:"text.secondary",children:[n.bushou&&"[\u90e8\u9996]: ".concat(n.bushou," "),n.wubi&&"[\u4e94\u7b14]: ".concat(n.wubi)]}),(n.fanti||n.yiti)&&(0,Je.jsxs)(gf,{variant:"body2",color:"text.secondary",children:[n.fanti&&"[\u7e41\u4f53]: ".concat(n.fanti," "),n.yiti&&"[\u5f02\u4f53]: ".concat(n.yiti)]}),n.results&&n.results.length>0&&(0,Je.jsx)(vm,{spacing:1,mt:1,children:n.results.map((e,t)=>(0,Je.jsxs)(st,{children:[(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:1,children:[(0,Je.jsxs)(gf,{variant:"body2",color:"primary",style:{fontWeight:"bold"},children:["[",e.pinyin,"]"]}),e.audioUrl&&(0,Je.jsx)(CF,{src:e.audioUrl})]}),(0,Je.jsx)(st,{component:"ol",sx:{pl:3,m:0,mt:.5},children:e.definitions&&e.definitions.map((e,t)=>(0,Je.jsx)(gf,{component:"li",variant:"body2",sx:{mb:.5},children:e},t))})]},t))}),(n.en||n.de||n.fr)&&(0,Je.jsxs)(vm,{spacing:.5,mt:1,children:[n.en&&(0,Je.jsxs)(gf,{variant:"body2",sx:{wordBreak:"break-word"},children:["[\u82f1]: ",n.en]}),n.de&&(0,Je.jsxs)(gf,{variant:"body2",sx:{wordBreak:"break-word"},children:["[\u5fb7]: ",n.de]}),n.fr&&(0,Je.jsxs)(gf,{variant:"body2",sx:{wordBreak:"break-word"},children:["[\u6cd5]: ",n.fr]})]})]}):(0,Je.jsxs)(vm,{spacing:1,children:[(0,Je.jsx)(gf,{variant:"subtitle1",style:{fontWeight:"bold"},children:t}),(0,Je.jsx)(zf,{}),(0,Je.jsx)(gf,{variant:"body2",color:"text.secondary",children:"\u6682\u65e0\u5b57\u5178\u6570\u636e\u6216\u67e5\u8be2\u5931\u8d25"})]})}function KF(e){let{word:t,index:n,tranboxSetting:r,transApis:o,prompts:i}=e;const[s,l]=(0,a.useState)(!1),{enDict:u,enSug:c,aiDictApiSlug:d,aiDictPromptSlug:p,fromLang:h,toLang:f}=r||Qi.Azs,m=Hf(),[g,v]=(0,a.useState)("default"),y=(0,a.useMemo)(()=>(0,_s.Ln)(t),[t]),b=(0,a.useMemo)(()=>(0,_s.Mt)(t),[t]),x=y&&Qi.q77.has(u)||b,A=(0,a.useMemo)(()=>function(e){let{aiDictApiSlug:t,aiDictPromptSlug:n=Qi.Qs8,prompts:r=[],transApis:o=[]}=e;if(!t||"-"===t)return null;const a=o.find(e=>e.apiSlug===t);if(!a)return null;if(n===Qi.Qs8)return a.dictPrompt?a:null;const i=(0,Qi.Es_)(r,n);return i?(0,It.A)((0,It.A)({},a),{},{dictPromptSlug:i.slug,dictPrompt:i.systemPrompt,dictUserPrompt:i.userPrompt}):null}({aiDictApiSlug:d,aiDictPromptSlug:p,prompts:i,transApis:o}),[d,p,i,o]),D=Boolean((null===t||void 0===t?void 0:t.trim())&&A);return(0,Je.jsxs)(Mb,{expanded:s,onChange:e=>{l(e=>!e)},children:[(0,Je.jsx)(Kb,{expandIcon:(0,Je.jsx)(Jb.A,{}),children:(0,Je.jsx)(gf,{children:"".concat(n+1,". ").concat(t)})}),(0,Je.jsx)(Qb,{children:s&&(0,Je.jsxs)(vm,{spacing:2,children:[(x||D)&&(0,Je.jsx)(st,{children:D?(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsxs)(vA,{value:x?g:"ai",onChange:(e,t)=>v(t),variant:"scrollable",allowScrollButtonsMobile:!0,sx:{minHeight:36,mb:1},children:[x&&(0,Je.jsx)(DA,{value:"default",label:m("default_dict","\u9ed8\u8ba4\u8bcd\u5178"),sx:{minHeight:36,py:.5}}),(0,Je.jsx)(DA,{value:"ai",label:m("ai_dict","AI\u8bcd\u5178"),sx:{minHeight:36,py:.5}})]}),x&&"default"===g&&(0,Je.jsxs)(Je.Fragment,{children:[y&&Qi.q77.has(u)&&(0,Je.jsx)(IF,{text:t,enDict:u}),b&&(0,Je.jsx)(qF,{text:t})]}),(!x||"ai"===g)&&(0,Je.jsx)(PF,{text:t,fromLang:h,speechLang:h,toLang:f,apiSetting:A})]}):(0,Je.jsxs)(Je.Fragment,{children:[y&&Qi.q77.has(u)&&(0,Je.jsx)(IF,{text:t,enDict:u}),b&&(0,Je.jsx)(qF,{text:t})]})}),(0,Je.jsx)(OF,{text:t,enSug:c})]})})]})}function $F(){const e=Hf(),{favList:t,wordList:n,mergeWords:r,clearWords:o}=gF(),{setting:i}=Rf(),{transApis:s,prompts:l,subtitleSetting:u,tranboxSetting:c}=i||Qi.la7,d=(0,a.useMemo)(()=>(0,Qi.Pco)(s,l,u),[l,u,s]),p=gk();return(0,Je.jsx)(st,{children:(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsx)(Xi,{severity:"info",children:e("favorite_words_helper")}),(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,useFlexGap:!0,flexWrap:"wrap",children:[(0,Je.jsx)(FD,{text:e("import"),handleImport:e=>{try{const t=e.split("\n").map(e=>e.split(",")[0].trim()).filter(_s.Ln);r(t)}catch(t){(0,Zi.h9)("import rules",t)}},fileType:"text",fileExts:[".txt",".csv"]}),(0,Je.jsx)(_D,{handleData:()=>n.join("\n"),text:e("export"),fileName:"kiss-words_".concat(Date.now(),".txt")}),(0,Je.jsx)(_D,{handleData:async()=>{const e=[];for(const[r,o]of t)e.push({word:r,phonetic:o.phonetic||"",definition:o.definition||"",examples:o.examples||[],timestamp:o.timestamp||null});const n=[];return n.push("\u751f\u8bcd\u672c\u5bfc\u51fa\u6587\u4ef6"),n.push("\u5bfc\u51fa\u65f6\u95f4: ".concat((new Date).toLocaleString("zh-CN"))),n.push(""),e.forEach((e,t)=>{n.push("".concat(t+1,". ").concat(e.word));const r=e.phonetic;if(r&&n.push(" \u97f3\u6807: [".concat(r,"]")),e.definition&&n.push(" \u91ca\u4e49: ".concat(e.definition)),e.examples&&e.examples.length>0&&(n.push(" \u4f8b\u53e5:"),e.examples.slice(0,2).forEach((e,t)=>{n.push(" ".concat(t+1,". ").concat(e.eng)),e.chs&&n.push(" ".concat(e.chs))})),e.timestamp){const t=Math.floor(e.timestamp/1e3),r="https://www.youtube.com/watch?t=".concat(t);n.push(" \u89c6\u9891\u94fe\u63a5: ".concat(r))}n.push("")}),n.join("\n")},text:e("export")+" (TXT)",fileName:"kiss-words_".concat(Date.now(),".txt")}),(0,Je.jsx)(_D,{handleData:async()=>{const e=[];for(const[r,o]of t)e.push({word:r,phonetic:o.phonetic||"",definition:o.definition||"",examples:o.examples||[],timestamp:o.timestamp||null});const n=e.map(e=>{const t=e=>e?'"'.concat(e.toString().replace(/"/g,'""'),'"'):'""',n=e.phonetic,r=n?"[".concat(n,"]"):"",o=e.definition||"";let a="",i="",s="",l="";e.examples&&e.examples.length>0&&(a=e.examples[0].eng||"",i=e.examples[0].chs||""),e.examples&&e.examples.length>1&&(s=e.examples[1].eng||"",l=e.examples[1].chs||"");let u="";if(e.timestamp){const t=Math.floor(e.timestamp/1e3);u="https://www.youtube.com/watch?t=".concat(t)}return"".concat(t(e.word),",").concat(t(r),",").concat(t(o),",").concat(t(a),",").concat(t(i),",").concat(t(s),",").concat(t(l),",").concat(t(u))});return"\ufeff"+['"\u751f\u8bcd\u672c\u5bfc\u51fa\u6587\u4ef6",,,,,,,',",,,,,,,,","Word,Phonetic,Definition,Example1,Translation1,Example2,Translation2,Video Link",...n].join("\n")},text:e("export")+" (CSV)",fileName:"kiss-words_".concat(Date.now(),".csv")}),(0,Je.jsx)(_D,{handleData:async()=>{const e=[];for(const[r,o]of t)e.push({word:r,phonetic:o.phonetic||"",definition:o.definition||"",examples:o.examples||[],timestamp:o.timestamp||null});const n=[];return n.push("# \u751f\u8bcd\u672c\u5bfc\u51fa\u6587\u4ef6"),n.push("_\u5bfc\u51fa\u65f6\u95f4: ".concat((new Date).toLocaleString("zh-CN"),"_")),n.push(""),e.forEach((e,t)=>{n.push("".concat(t+1,". **").concat(e.word,"**"));const r=e.phonetic;if(r&&n.push(" *\u97f3\u6807 Phonetic:* [".concat(r,"]")),e.definition&&n.push(" *\u91ca\u4e49 Definition:* ".concat(e.definition)),e.examples&&e.examples.length>0&&(n.push(" *\u4f8b\u53e5 Examples:*"),e.examples.slice(0,2).forEach((e,t)=>{n.push(" ".concat(t+1,". ").concat(e.eng)),e.chs&&n.push(" ".concat(e.chs))})),e.timestamp){const t=Math.floor(e.timestamp/1e3),r="https://www.youtube.com/watch?t=".concat(t);n.push(" *\u89c6\u9891\u94fe\u63a5 Video Link:* [\u8df3\u8f6c\u5230\u89c6\u9891\u65f6\u95f4\u70b9](".concat(r,")"))}n.push("")}),n.join("\n")},text:e("export")+" (MD)",fileName:"kiss-words_".concat(Date.now(),".md")}),(0,Je.jsx)(_D,{handleData:async()=>{const{enDict:e}=null===i||void 0===i?void 0:i.tranboxSetting,t=jF[e];if(!t)return"";const r=[];for(const a of n)try{const e=await t.apiFn(a),n="## ".concat(t.reWord(e)||a),o=t.toText(e).map(e=>"- ".concat(e)).join("\n");r.push([n,o].join("\n"))}catch(o){(0,Zi.h9)("export translation",o)}return r.join("\n\n")},text:e("export_translation"),fileName:"kiss-words_".concat(Date.now(),".md")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",onClick:async()=>{await p({confirmText:e("confirm_title"),cancelText:e("cancel")})&&o()},startIcon:(0,Je.jsx)(mD.A,{}),children:e("clear_all")})]}),(0,Je.jsx)(st,{children:t.map((e,t)=>{let[n]=e;return(0,Je.jsx)(KF,{index:t,word:n,tranboxSetting:c,transApis:d,prompts:l},n)})})]})})}var YF=n(1437);const XF=(e,t,n)=>{const r=(e=>Array.isArray(e)?e[0]||"":e||"")(e);return t===Qi.ul7?$l(r.replace(/[\t ]*/gi,"\n")):t===Qi.bCM?r.replace(/[\t ]*(\r\n|\r|\n)[\t ]*/g,"\n"):Qi.sNP.ai.has(t)&&/\r\n|\r|\n/.test(n)?r.replace(/\\r\\n|\\n|\\r/g,"\n"):r};function QF(e){let{text:t,fromLang:n,toLang:r,apiSlug:o,transApis:i,simpleStyle:s=!1}=e;const l=Hf(),[u,c]=(0,a.useState)(""),[d,p]=(0,a.useState)(!1),[h,f]=(0,a.useState)(""),m=(0,a.useMemo)(()=>i.find(e=>e.apiSlug===o),[i,o]);return(0,a.useEffect)(()=>{if(null===t||void 0===t||!t.trim()||!m)return c(""),p(!1),void f("");let e=!0;const o=new AbortController,a=(e=>Boolean((null===e||void 0===e?void 0:e.useStream)&&Qi.sNP.stream.has(e.apiType)&&"disabled"!==(e.streamRenderMode||"disabled")))(m),i=a?({text:n})=>{if(!e||o.signal.aborted)return;const r=XF(n,m.apiType,t);r&&c(r)}:void 0;return(async()=>{try{p(!0),c(""),f("");const a=e=>ic({text:e,fromLang:n,toLang:r,apiSetting:m,onStreamChunk:i,signal:o.signal}),{trText:s}=m.apiType===Qi.h8v?await(async(e,t)=>{const n=e.split(/(\r\n|\r|\n)/),r=await Promise.all(n.map(async(e,n)=>n%2!==1&&e.trim()?(await t(e)).trText:e));return{trText:r.join("")}})(t,a):await a(((e,t)=>t===Qi.ul7?e.replace(/\r\n|\r|\n/g,"
"):e)(t,m.apiType));e&&c(XF(s,m.apiType,t))}catch(a){if("AbortError"===(null===a||void 0===a?void 0:a.name))return;e&&f(a.message)}finally{e&&p(!1)}})(),()=>{e=!1,o.abort()}},[t,n,r,m]),m?s?(0,Je.jsx)(st,{children:h?(0,Je.jsx)(Xi,{severity:"error",children:h}):u?(0,Je.jsxs)(vm,{direction:"row",spacing:1,alignItems:"flex-start",children:[d&&(0,Je.jsx)(zt,{size:12,sx:{flex:"0 0 auto",mt:"0.35em"}}),(0,Je.jsx)(gf,{style:{whiteSpace:"pre-line"},children:u})]}):d?(0,Je.jsx)(zt,{size:16}):null}):(0,Je.jsx)(st,{children:(0,Je.jsx)(hb,{size:"small",label:"".concat(l("translated_text")," - ").concat(m.apiName),fullWidth:!0,multiline:!0,maxRows:10,sx:{"& textarea":{resize:"vertical"}},value:u,helperText:h,InputProps:{startAdornment:d?(0,Je.jsx)(zt,{size:16}):null,endAdornment:(0,Je.jsx)(vm,{direction:"row",sx:{position:"absolute",right:0,top:0},children:(0,Je.jsx)(AF,{text:u,title:l("copy")})})}})}):null}const JF={[Qi.bCM]:async e=>{const t={client:"gtx",dt:"t",dj:1,ie:"UTF-8",sl:"auto",tl:"zh-CN",q:e},n="https://translate.googleapis.com/translate_a/single?".concat(Ss.stringify(t)),r={headers:{"Content-type":"application/json"}},o=await(0,Es.Fd)(n,r,{useCache:!0});return null!==o&&void 0!==o&&o.src?(await(0,Fu.v0)(n,r,o),o.src):""},[Qi.kXF]:async e=>{const t={text:e,detector:Qi.kXF},n="".concat(Qi.LsT,"?").concat(Ss.stringify(t)),r=await(0,Fu.QF)(n);if(r)return r;const o="".concat(Qi.LsT,"_").concat(Qi.kXF),a=ju(o,_u,{batchInterval:200,batchSize:20,batchLength:1e5}),i=await a.addTask(e);return i?((0,Fu.v0)(n,null,i),i):""},[Qi.xN$]:async e=>{const t="https://fanyi.baidu.com/langdetect",n={headers:{"Content-type":"application/json"},method:"POST",body:JSON.stringify({query:e})},r=await(0,Es.Fd)(t,n,{useCache:!0});return 0===(null===r||void 0===r?void 0:r.error)?(await(0,Fu.v0)(t,n,r),r.lan):""},[Qi.fFW]:async e=>{const t="https://transmart.qq.com/api/imt",n={headers:{"Content-type":"application/json","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",referer:"https://transmart.qq.com/zh-CN/index"},method:"POST",body:JSON.stringify({header:{fn:"text_analysis",client_key:"browser-chrome-110.0.0-Mac OS-df4bd4c5-a65d-44b2-a40f-42f34f3535f2-1677486696487"},text:e})},r=await(0,Es.Fd)(t,n,{useCache:!0});return null!==r&&void 0!==r&&r.language?(await(0,Fu.v0)(t,n,r),r.language):""},[Qi.h8v]:async e=>{if(!zu.Lx)return"";const[t,n]=await(0,Es.Qy)({fn:Gu,msg:Qi.cO5,text:e});return n?"":t}};function ZF(e){let{text:t,setText:n,translationText:r=t,apiSlugs:o,fromLang:i,toLang:s,toLang2:l,transApis:u,simpleStyle:c=!1,langDetector:d="-",enDict:p="-",enSug:h="-",aiDictApiSlug:f="-",aiDictPromptSlug:m=Qi.Qs8,prompts:g=[],selectionContext:v="",isPlaygound:y=!1}=e;const b=Hf(),[x,A]=(0,a.useState)(!1),[D,k]=(0,a.useState)(t),[w,S]=(0,a.useState)(o),[E,_]=(0,a.useState)(!1),[C,F]=(0,a.useState)(i),[T,j]=(0,a.useState)(s),[z,I]=(0,a.useState)(l),[L,P]=(0,a.useState)(d),[R,N]=(0,a.useState)(p),[O,B]=(0,a.useState)(h),[M,W]=(0,a.useState)("default"),U=(0,a.useRef)(!1),[V,H]=(0,a.useState)(""),[G,q]=(0,a.useState)(!1),K=(0,a.useRef)(null);(0,a.useEffect)(()=>{const e=K.current;if(!e)return;e.focus();const t=e.value.length;e.setSelectionRange(t,t)},[]),(0,a.useEffect)(()=>{if((0,_s.Ln)(t)){const e=new CustomEvent("kiss-add-word",{detail:{word:t}});document.dispatchEvent(e)}},[t]),(0,a.useEffect)(()=>{E||S(o)},[o,E]),(0,a.useEffect)(()=>{x||k(t)},[t,x]),(0,a.useEffect)(()=>{t.trim()?(async()=>{try{q(!0);const e=await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"-",n="";if(Qi.G8K.has(t))try{const r=await JF[t](e);r&&(n=Qi.mSZ[t].get(r)||"")}catch(i){(0,Zi.h9)("detect lang remote",i)}if(!n)try{var r,o,a;const t=await(null===zu.T||void 0===zu.T||null===(r=zu.T.i18n)||void 0===r?void 0:r.detectLanguage(e)),i=null===t||void 0===t||null===(o=t.languages)||void 0===o||null===(a=o[0])||void 0===a?void 0:a.language;null!==t&&void 0!==t&&t.isReliable&&i&&Qi.Z2L.has(i)?n=i:null!==i&&void 0!==i&&i.startsWith("zh")&&(n="zh-CN")}catch(i){(0,Zi.h9)("detect lang local",i)}return n}(t,L);e&&H(e)}catch(e){(0,Zi.h9)("tranbox: detect lang",e)}finally{q(!1)}})():H("")},[t,L,H,q]);const $=(0,a.useMemo)(()=>"auto"===C&&T!==z&&"-"!==z&&V===T?z:T,[C,T,z,V]),Y=(0,a.useMemo)(()=>u.filter(e=>!e.isDisabled).map(e=>({key:e.apiSlug,name:e.apiName||e.apiSlug})),[u]),X=(0,a.useMemo)(()=>(0,_s.Ln)(t),[t]),Q=(0,a.useMemo)(()=>y?6:4,[y]),J=(0,a.useMemo)(()=>y?3:4,[y]),Z=(0,a.useMemo)(()=>{const e=new Set(Y.map(e=>e.key));return w.filter(t=>e.has(t))},[w,Y]),ee=X&&Qi.q77.has(R)||(0,_s.Mt)(t),te=(0,a.useMemo)(()=>{if(!f||"-"===f)return null;const e=u.find(e=>e.apiSlug===f);if(!e)return null;if(m===Qi.Qs8)return e.dictPrompt?e:null;const t=(0,Qi.Es_)(g,m);return t?(0,It.A)((0,It.A)({},e),{},{dictPromptSlug:t.slug,dictPrompt:t.systemPrompt,dictUserPrompt:t.userPrompt}):null},[f,m,g,u]),ne=Boolean((null===t||void 0===t?void 0:t.trim())&&te);return(0,a.useEffect)(()=>{U.current||(ee?W("default"):ne&&W("ai"))},[t,ee,ne]),(0,Je.jsxs)(vm,{spacing:c?1:2,children:[!c&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:Q,md:J,children:(0,Je.jsx)(hb,{select:!0,SelectProps:{multiple:!0,MenuProps:{disablePortal:!y}},fullWidth:!0,size:"small",value:Z,name:"apiSlugs",label:b("translate_service_multiple"),onChange:e=>{_(!0),S(e.target.value)},children:Y.map(e=>{let{key:t,name:n}=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})}),(0,Je.jsx)(kx,{item:!0,xs:Q,md:J,children:(0,Je.jsx)(hb,{select:!0,SelectProps:{MenuProps:{disablePortal:!y}},fullWidth:!0,size:"small",name:"fromLang",value:C,label:b("from_lang"),onChange:e=>{F(e.target.value)},children:Qi.UF6.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})}),(0,Je.jsx)(kx,{item:!0,xs:Q,md:J,children:(0,Je.jsx)(hb,{select:!0,SelectProps:{MenuProps:{disablePortal:!y}},fullWidth:!0,size:"small",name:"toLang",value:T,label:b("to_lang"),onChange:e=>{j(e.target.value)},children:Qi.$QD.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})}),y&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(kx,{item:!0,xs:Q,md:J,children:(0,Je.jsx)(hb,{select:!0,SelectProps:{MenuProps:{disablePortal:!y}},fullWidth:!0,size:"small",name:"toLang2",value:z,label:b("to_lang2"),onChange:e=>{I(e.target.value)},children:Qi.$QD.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})}),(0,Je.jsx)(kx,{item:!0,xs:Q,md:J,children:(0,Je.jsxs)(hb,{select:!0,SelectProps:{MenuProps:{disablePortal:!y}},fullWidth:!0,size:"small",name:"enDict",value:R,label:b("english_dict"),onChange:e=>{N(e.target.value)},children:[(0,Je.jsx)(dx,{value:"-",children:b("disable")}),Qi.F$3.map(e=>(0,Je.jsx)(dx,{value:e,children:e},e))]})}),(0,Je.jsx)(kx,{item:!0,xs:Q,md:J,children:(0,Je.jsxs)(hb,{select:!0,SelectProps:{MenuProps:{disablePortal:!y}},fullWidth:!0,size:"small",name:"enSug",value:O,label:b("english_suggest"),onChange:e=>{B(e.target.value)},children:[(0,Je.jsx)(dx,{value:"-",children:b("disable")}),Qi.O09.map(e=>(0,Je.jsx)(dx,{value:e,children:e},e))]})}),(0,Je.jsx)(kx,{item:!0,xs:Q,md:J,children:(0,Je.jsxs)(hb,{select:!0,SelectProps:{MenuProps:{disablePortal:!y}},fullWidth:!0,size:"small",name:"langDetector",value:L,label:b("detected_lang"),onChange:e=>{P(e.target.value)},children:[(0,Je.jsx)(dx,{value:"-",children:b("disable")}),Qi.HHP.map(e=>(0,Je.jsx)(dx,{value:e,children:e},e))]})}),(0,Je.jsx)(kx,{item:!0,xs:Q,md:J,children:(0,Je.jsx)(hb,{fullWidth:!0,size:"small",name:"deLang",value:V&&Qi.Z2L.get(V),label:b("detected_result"),disabled:!0,InputProps:{startAdornment:G?(0,Je.jsx)(zt,{size:16}):null}})})]})]})}),(0,Je.jsx)(st,{children:(0,Je.jsx)(hb,{size:"small",label:b("original_text"),fullWidth:!0,multiline:!0,inputRef:K,minRows:y?2:1,maxRows:10,sx:{"& textarea":{resize:"vertical"}},value:D,onChange:e=>{k(e.target.value)},onFocus:()=>{A(!0)},onBlur:()=>{A(!1),n(D.trim())},InputProps:{endAdornment:(0,Je.jsx)(vm,{direction:"row",sx:{position:"absolute",right:0,top:0},children:x?(0,Je.jsx)(Ri,{size:"small",onClick:e=>{e.stopPropagation(),A(!1),n(D.trim())},title:b("submit"),children:(0,Je.jsx)(YF.A,{fontSize:"inherit"})}):t?(0,Je.jsx)(AF,{text:t,title:b("copy")}):(0,Je.jsx)(Ri,{size:"small",onClick:async()=>{try{const e=await navigator.clipboard.readText();n(e.trim())}catch(e){}},title:b("paste"),children:(0,Je.jsx)(vS.A,{fontSize:"inherit"})})})}})})]}),Z.map(e=>(0,Je.jsx)(QF,{text:r,fromLang:C,toLang:$,simpleStyle:c,apiSlug:e,transApis:u},e)),(ee||ne)&&(0,Je.jsx)(st,{children:ne?(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsxs)(vA,{value:ee?M:"ai",onChange:(e,t)=>{U.current=!0,W(t)},variant:"scrollable",allowScrollButtonsMobile:!0,sx:{minHeight:36,mb:1},children:[ee&&(0,Je.jsx)(DA,{value:"default",label:b("default_dict","\u9ed8\u8ba4\u8bcd\u5178"),sx:{minHeight:36,py:.5}}),(0,Je.jsx)(DA,{value:"ai",label:b("ai_dict","AI\u8bcd\u5178"),sx:{minHeight:36,py:.5}})]}),ee&&"default"===M&&(0,Je.jsxs)(Je.Fragment,{children:[X&&Qi.q77.has(R)&&(0,Je.jsx)(IF,{text:t,enDict:R}),(0,_s.Mt)(t)&&(0,Je.jsx)(qF,{text:t})]}),(!ee||"ai"===M)&&(0,Je.jsx)(PF,{text:t,fromLang:C,speechLang:"auto"===C?V:C,toLang:$,apiSetting:te,context:v&&v.includes(t)?v:""})]}):(0,Je.jsxs)(Je.Fragment,{children:[X&&Qi.q77.has(R)&&(0,Je.jsx)(IF,{text:t,enDict:R}),(0,_s.Mt)(t)&&(0,Je.jsx)(qF,{text:t})]})}),X&&Qi.JIP.has(O)&&(0,Je.jsx)(OF,{text:t,enSug:O})]})}function eT(e){return(0,ft.Ay)("MuiLinearProgress",e)}(0,rt.A)("MuiLinearProgress",["root","colorPrimary","colorSecondary","determinate","indeterminate","buffer","query","dashed","dashedColorPrimary","dashedColorSecondary","bar","barColorPrimary","barColorSecondary","bar1Indeterminate","bar1Determinate","bar1Buffer","bar2Indeterminate","bar2Buffer"]);var tT,nT,rT,oT,aT,iT;const sT=["className","color","value","valueBuffer","variant"];let lT,uT,cT,dT,pT,hT;const fT=(0,ct.i7)(lT||(lT=tT||(tT=lt(["\n 0% {\n left: -35%;\n right: 100%;\n }\n\n 60% {\n left: 100%;\n right: -90%;\n }\n\n 100% {\n left: 100%;\n right: -90%;\n }\n"])))),mT=(0,ct.i7)(uT||(uT=nT||(nT=lt(["\n 0% {\n left: -200%;\n right: 100%;\n }\n\n 60% {\n left: 107%;\n right: -8%;\n }\n\n 100% {\n left: 107%;\n right: -8%;\n }\n"])))),gT=(0,ct.i7)(cT||(cT=rT||(rT=lt(["\n 0% {\n opacity: 1;\n background-position: 0 -23px;\n }\n\n 60% {\n opacity: 0;\n background-position: 0 -23px;\n }\n\n 100% {\n opacity: 1;\n background-position: -200px -23px;\n }\n"])))),vT=(e,t)=>"inherit"===t?"currentColor":e.vars?e.vars.palette.LinearProgress["".concat(t,"Bg")]:"light"===e.palette.mode?(0,Ta.a)(e.palette[t].main,.62):(0,Ta.e$)(e.palette[t].main,.5),yT=(0,ht.Ay)("span",{name:"MuiLinearProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["color".concat((0,dt.A)(n.color))],t[n.variant]]}})(e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({position:"relative",overflow:"hidden",display:"block",height:4,zIndex:0,"@media print":{colorAdjust:"exact"},backgroundColor:vT(n,t.color)},"inherit"===t.color&&"buffer"!==t.variant&&{backgroundColor:"none","&::before":{content:'""',position:"absolute",left:0,top:0,right:0,bottom:0,backgroundColor:"currentColor",opacity:.3}},"buffer"===t.variant&&{backgroundColor:"transparent"},"query"===t.variant&&{transform:"rotate(180deg)"})}),bT=(0,ht.Ay)("span",{name:"MuiLinearProgress",slot:"Dashed",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.dashed,t["dashedColor".concat((0,dt.A)(n.color))]]}})(e=>{let{ownerState:t,theme:n}=e;const r=vT(n,t.color);return(0,We.A)({position:"absolute",marginTop:0,height:"100%",width:"100%"},"inherit"===t.color&&{opacity:.3},{backgroundImage:"radial-gradient(".concat(r," 0%, ").concat(r," 16%, transparent 42%)"),backgroundSize:"10px 10px",backgroundPosition:"0 -23px"})},(0,ct.AH)(dT||(dT=oT||(oT=lt(["\n animation: "," 3s infinite linear;\n "]))),gT)),xT=(0,ht.Ay)("span",{name:"MuiLinearProgress",slot:"Bar1",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.bar,t["barColor".concat((0,dt.A)(n.color))],("indeterminate"===n.variant||"query"===n.variant)&&t.bar1Indeterminate,"determinate"===n.variant&&t.bar1Determinate,"buffer"===n.variant&&t.bar1Buffer]}})(e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({width:"100%",position:"absolute",left:0,bottom:0,top:0,transition:"transform 0.2s linear",transformOrigin:"left",backgroundColor:"inherit"===t.color?"currentColor":(n.vars||n).palette[t.color].main},"determinate"===t.variant&&{transition:"transform .".concat(4,"s linear")},"buffer"===t.variant&&{zIndex:1,transition:"transform .".concat(4,"s linear")})},e=>{let{ownerState:t}=e;return("indeterminate"===t.variant||"query"===t.variant)&&(0,ct.AH)(pT||(pT=aT||(aT=lt(["\n width: auto;\n animation: "," 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;\n "]))),fT)}),AT=(0,ht.Ay)("span",{name:"MuiLinearProgress",slot:"Bar2",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.bar,t["barColor".concat((0,dt.A)(n.color))],("indeterminate"===n.variant||"query"===n.variant)&&t.bar2Indeterminate,"buffer"===n.variant&&t.bar2Buffer]}})(e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({width:"100%",position:"absolute",left:0,bottom:0,top:0,transition:"transform 0.2s linear",transformOrigin:"left"},"buffer"!==t.variant&&{backgroundColor:"inherit"===t.color?"currentColor":(n.vars||n).palette[t.color].main},"inherit"===t.color&&{opacity:.3},"buffer"===t.variant&&{backgroundColor:vT(n,t.color),transition:"transform .".concat(4,"s linear")})},e=>{let{ownerState:t}=e;return("indeterminate"===t.variant||"query"===t.variant)&&(0,ct.AH)(hT||(hT=iT||(iT=lt(["\n width: auto;\n animation: "," 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite;\n "]))),mT)}),DT=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiLinearProgress"}),{className:r,color:o="primary",value:a,valueBuffer:i,variant:s="indeterminate"}=n,l=(0,Ue.A)(n,sT),u=(0,We.A)({},n,{color:o,variant:s}),c=(e=>{const{classes:t,variant:n,color:r}=e,o={root:["root","color".concat((0,dt.A)(r)),n],dashed:["dashed","dashedColor".concat((0,dt.A)(r))],bar1:["bar","barColor".concat((0,dt.A)(r)),("indeterminate"===n||"query"===n)&&"bar1Indeterminate","determinate"===n&&"bar1Determinate","buffer"===n&&"bar1Buffer"],bar2:["bar","buffer"!==n&&"barColor".concat((0,dt.A)(r)),"buffer"===n&&"color".concat((0,dt.A)(r)),("indeterminate"===n||"query"===n)&&"bar2Indeterminate","buffer"===n&&"bar2Buffer"]};return(0,ut.A)(o,eT,t)})(u),d=Qg(),p={},h={bar1:{},bar2:{}};if("determinate"===s||"buffer"===s)if(void 0!==a){p["aria-valuenow"]=Math.round(a),p["aria-valuemin"]=0,p["aria-valuemax"]=100;let e=a-100;d&&(e=-e),h.bar1.transform="translateX(".concat(e,"%)")}else 0;if("buffer"===s)if(void 0!==i){let e=(i||0)-100;d&&(e=-e),h.bar2.transform="translateX(".concat(e,"%)")}else 0;return(0,Je.jsxs)(yT,(0,We.A)({className:(0,Ve.A)(c.root,r),ownerState:u,role:"progressbar"},p,{ref:t},l,{children:["buffer"===s?(0,Je.jsx)(bT,{className:c.dashed,ownerState:u}):null,(0,Je.jsx)(xT,{className:c.bar1,ownerState:u,style:h.bar1}),"determinate"===s?null:(0,Je.jsx)(AT,{className:c.bar2,ownerState:u,style:h.bar2})]}))}),kT=DT;var wT=n(8581);function ST(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;return(0,wT.A)(e,t,n)}function ET(e){if(e.type)return e;if("#"===e.charAt(0))return ET(function(e){e=e.slice(1);const t=new RegExp(".{1,".concat(e.length>=6?2:1,"}"),"g");let n=e.match(t);return n&&1===n[0].length&&(n=n.map(e=>e+e)),n?"rgb".concat(4===n.length?"a":"","(").concat(n.map((e,t)=>t<3?parseInt(e,16):Math.round(parseInt(e,16)/255*1e3)/1e3).join(", "),")"):""}(e));const t=e.indexOf("("),n=e.substring(0,t);if(-1===["rgb","rgba","hsl","hsla","color"].indexOf(n))throw new Error((0,bm.A)(9,e));let r,o=e.substring(t+1,e.length-1);if("color"===n){if(o=o.split(" "),r=o.shift(),4===o.length&&"/"===o[3].charAt(0)&&(o[3]=o[3].slice(1)),-1===["srgb","display-p3","a98-rgb","prophoto-rgb","rec-2020"].indexOf(r))throw new Error((0,bm.A)(10,r))}else o=o.split(",");return o=o.map(e=>parseFloat(e)),{type:n,values:o,colorSpace:r}}function _T(e){const{type:t,colorSpace:n}=e;let{values:r}=e;return-1!==t.indexOf("rgb")?r=r.map((e,t)=>t<3?parseInt(e,10):e):-1!==t.indexOf("hsl")&&(r[1]="".concat(r[1],"%"),r[2]="".concat(r[2],"%")),r=-1!==t.indexOf("color")?"".concat(n," ").concat(r.join(" ")):"".concat(r.join(", ")),"".concat(t,"(").concat(r,")")}function CT(e,t){return e=ET(e),t=ST(t),"rgb"!==e.type&&"hsl"!==e.type||(e.type+="a"),"color"===e.type?e.values[3]="/".concat(t):e.values[3]=t,_T(e)}function FT(e){return(0,ft.Ay)("MuiToggleButton",e)}const TT=(0,rt.A)("MuiToggleButton",["root","disabled","selected","standard","primary","secondary","sizeSmall","sizeMedium","sizeLarge","fullWidth"]);const jT=a.createContext({});const zT=a.createContext(void 0);function IT(e,t){return void 0!==t&&void 0!==e&&(Array.isArray(t)?t.indexOf(e)>=0:e===t)}const LT=["value"],PT=["children","className","color","disabled","disableFocusRipple","fullWidth","onChange","onClick","selected","size","value"],RT=(0,ht.Ay)(Ti,{name:"MuiToggleButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["size".concat((0,dt.A)(n.size))]]}})(e=>{let t,{theme:n,ownerState:r}=e,o="standard"===r.color?n.palette.text.primary:n.palette[r.color].main;return n.vars&&(o="standard"===r.color?n.vars.palette.text.primary:n.vars.palette[r.color].main,t="standard"===r.color?n.vars.palette.text.primaryChannel:n.vars.palette[r.color].mainChannel),(0,We.A)({},n.typography.button,{borderRadius:(n.vars||n).shape.borderRadius,padding:11,border:"1px solid ".concat((n.vars||n).palette.divider),color:(n.vars||n).palette.action.active},r.fullWidth&&{width:"100%"},{["&.".concat(TT.disabled)]:{color:(n.vars||n).palette.action.disabled,border:"1px solid ".concat((n.vars||n).palette.action.disabledBackground)},"&:hover":{textDecoration:"none",backgroundColor:n.vars?"rgba(".concat(n.vars.palette.text.primaryChannel," / ").concat(n.vars.palette.action.hoverOpacity,")"):CT(n.palette.text.primary,n.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},["&.".concat(TT.selected)]:{color:o,backgroundColor:n.vars?"rgba(".concat(t," / ").concat(n.vars.palette.action.selectedOpacity,")"):CT(o,n.palette.action.selectedOpacity),"&:hover":{backgroundColor:n.vars?"rgba(".concat(t," / calc(").concat(n.vars.palette.action.selectedOpacity," + ").concat(n.vars.palette.action.hoverOpacity,"))"):CT(o,n.palette.action.selectedOpacity+n.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:n.vars?"rgba(".concat(t," / ").concat(n.vars.palette.action.selectedOpacity,")"):CT(o,n.palette.action.selectedOpacity)}}}},"small"===r.size&&{padding:7,fontSize:n.typography.pxToRem(13)},"large"===r.size&&{padding:15,fontSize:n.typography.pxToRem(15)})}),NT=a.forwardRef(function(e,t){const n=a.useContext(jT),{value:r}=n,o=(0,Ue.A)(n,LT),i=a.useContext(zT),s=(0,am.A)((0,We.A)({},o,{selected:IT(e.value,r)}),e),l=(0,pt.b)({props:s,name:"MuiToggleButton"}),{children:u,className:c,color:d="standard",disabled:p=!1,disableFocusRipple:h=!1,fullWidth:f=!1,onChange:m,onClick:g,selected:v,size:y="medium",value:b}=l,x=(0,Ue.A)(l,PT),A=(0,We.A)({},l,{color:d,disabled:p,disableFocusRipple:h,fullWidth:f,size:y}),D=(e=>{const{classes:t,fullWidth:n,selected:r,disabled:o,size:a,color:i}=e,s={root:["root",r&&"selected",o&&"disabled",n&&"fullWidth","size".concat((0,dt.A)(a)),i]};return(0,ut.A)(s,FT,t)})(A),k=i||"";return(0,Je.jsx)(RT,(0,We.A)({className:(0,Ve.A)(o.className,D.root,c,k),disabled:p,focusRipple:!h,ref:t,onClick:e=>{g&&(g(e,b),e.defaultPrevented)||m&&m(e,b)},onChange:m,value:b,ownerState:A,"aria-pressed":v},x,{children:u}))}),OT=NT;function BT(e){return(0,ft.Ay)("MuiToggleButtonGroup",e)}const MT=(0,rt.A)("MuiToggleButtonGroup",["root","selected","horizontal","vertical","disabled","grouped","groupedHorizontal","groupedVertical","fullWidth","firstButton","lastButton","middleButton"]),WT=["children","className","color","disabled","exclusive","fullWidth","onChange","orientation","size","value"],UT=(0,ht.Ay)("div",{name:"MuiToggleButtonGroup",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(MT.grouped)]:t.grouped},{["& .".concat(MT.grouped)]:t["grouped".concat((0,dt.A)(n.orientation))]},{["& .".concat(MT.firstButton)]:t.firstButton},{["& .".concat(MT.lastButton)]:t.lastButton},{["& .".concat(MT.middleButton)]:t.middleButton},t.root,"vertical"===n.orientation&&t.vertical,n.fullWidth&&t.fullWidth]}})(e=>{let{ownerState:t,theme:n}=e;return(0,We.A)({display:"inline-flex",borderRadius:(n.vars||n).shape.borderRadius},"vertical"===t.orientation&&{flexDirection:"column"},t.fullWidth&&{width:"100%"},{["& .".concat(MT.grouped)]:(0,We.A)({},"horizontal"===t.orientation?{["&.".concat(MT.selected," + .").concat(MT.grouped,".").concat(MT.selected)]:{borderLeft:0,marginLeft:0}}:{["&.".concat(MT.selected," + .").concat(MT.grouped,".").concat(MT.selected)]:{borderTop:0,marginTop:0}})},"horizontal"===t.orientation?{["& .".concat(MT.firstButton,",& .").concat(MT.middleButton)]:{borderTopRightRadius:0,borderBottomRightRadius:0},["& .".concat(MT.lastButton,",& .").concat(MT.middleButton)]:{marginLeft:-1,borderLeft:"1px solid transparent",borderTopLeftRadius:0,borderBottomLeftRadius:0}}:{["& .".concat(MT.firstButton,",& .").concat(MT.middleButton)]:{borderBottomLeftRadius:0,borderBottomRightRadius:0},["& .".concat(MT.lastButton,",& .").concat(MT.middleButton)]:{marginTop:-1,borderTop:"1px solid transparent",borderTopLeftRadius:0,borderTopRightRadius:0}},"horizontal"===t.orientation?{["& .".concat(MT.lastButton,".").concat(TT.disabled,",& .").concat(MT.middleButton,".").concat(TT.disabled)]:{borderLeft:"1px solid transparent"}}:{["& .".concat(MT.lastButton,".").concat(TT.disabled,",& .").concat(MT.middleButton,".").concat(TT.disabled)]:{borderTop:"1px solid transparent"}})}),VT=a.forwardRef(function(e,t){const n=(0,pt.b)({props:e,name:"MuiToggleButtonGroup"}),{children:r,className:o,color:i="standard",disabled:s=!1,exclusive:l=!1,fullWidth:u=!1,onChange:c,orientation:d="horizontal",size:p="medium",value:h}=n,f=(0,Ue.A)(n,WT),m=(0,We.A)({},n,{disabled:s,fullWidth:u,orientation:d,size:p}),g=(e=>{const{classes:t,orientation:n,fullWidth:r,disabled:o}=e,a={root:["root","vertical"===n&&"vertical",r&&"fullWidth"],grouped:["grouped","grouped".concat((0,dt.A)(n)),o&&"disabled"],firstButton:["firstButton"],lastButton:["lastButton"],middleButton:["middleButton"]};return(0,ut.A)(a,BT,t)})(m),v=a.useCallback((e,t)=>{if(!c)return;const n=h&&h.indexOf(t);let r;h&&n>=0?(r=h.slice(),r.splice(n,1)):r=h?h.concat(t):[t],c(e,r)},[c,h]),y=a.useCallback((e,t)=>{c&&c(e,h===t?null:t)},[c,h]),b=a.useMemo(()=>({className:g.grouped,onChange:l?y:v,value:h,size:p,fullWidth:u,color:i,disabled:s}),[g.grouped,l,y,v,h,p,u,i,s]),x=function(e){return a.Children.toArray(e).filter(e=>a.isValidElement(e))}(r),A=x.length,D=e=>{const t=0===e,n=e===A-1;return t&&n?"":t?g.firstButton:n?g.lastButton:g.middleButton};return(0,Je.jsx)(UT,(0,We.A)({role:"group",className:(0,Ve.A)(g.root,o),ref:t,ownerState:m},f,{children:(0,Je.jsx)(jT.Provider,{value:b,children:x.map((e,t)=>(0,Je.jsx)(zT.Provider,{value:D(t),children:e},t))})}))}),HT=VT;var GT=n(6653),qT=n(2078),KT=n(1053),$T=n(3818),YT=n(6604);const XT={maxDurationMs:7e3,maxWords:30,sensitivity:2,punctuationBreakBonus:2.5,commaBreakBonus:1,capitalBreakBonus:.5,minBoundaryScore:1.2,minSentenceWords:4,minSentenceDurationMs:500,forceBreakOnPunctuation:!0,forcePunctuationMinWords:6,forcePunctuationMinDurationMs:2e3};class QT{constructor(e,t,n){this.text=e,this.startMs=t,this.endMs=n}get stripped(){return this.text.trim()}get endsWithSentencePunc(){return this.stripped.endsWith(".")||this.stripped.endsWith("?")||this.stripped.endsWith("!")}get endsWithComma(){return this.stripped.endsWith(",")}get startsWithCapital(){const e=this.stripped;return e&&e[0]===e[0].toUpperCase()}get isAllCaps(){const e=this.stripped;return e&&e.length>=2&&e===e.toUpperCase()}get startsWithArrow(){return this.text.startsWith(">>")}}class JT{constructor(e,t,n,r,o,a){this.gapMs=e,this.prevWord=t,this.nextWord=n,this.isYoutubeBreak=r,this.isSameEvent=o,this.gapIndex=a}}class ZT{constructor(e,t,n,r,o,a,i,s,l,u,c,d){this.mean=e,this.median=t,this.std=n,this.minVal=r,this.maxVal=o,this.p25=a,this.p50=i,this.p75=s,this.p90=l,this.p95=u,this.mad=c,this.robustSigma=d||1.4826*c}}class ej{constructor(e,t,n,r){this.words=e||[],this.startMs=t||0,this.endMs=n||0,this.index=r||0}get text(){const e=[];for(const t of this.words){const n=t.text;"\n"!==n&&(e.length?n.startsWith(" ")?e.push(n):e.push(" "+n):e.push(n.trimStart()))}return e.join("").trim()}get durationMs(){return this.endMs-this.startMs}}function tj(e,t){if(!e.length)return 0;const n=(e.length-1)*t/100,r=Math.floor(n),o=Math.ceil(n);return r===o?e[Math.floor(n)]:e[r]*(o-n)+e[o]*(n-r)}function nj(e,t,n,r){if(!e.length||!t.length)return[];const{maxDurationMs:o,maxWords:a,minBoundaryScore:i,minSentenceWords:s,minSentenceDurationMs:l,forceBreakOnPunctuation:u,forcePunctuationMinWords:c,forcePunctuationMinDurationMs:d}=r,p=t.map(e=>function(e,t,n){if(e.gapMs<=0)return-100;const{sensitivity:r,punctuationBreakBonus:o,commaBreakBonus:a,capitalBreakBonus:i,defaultFillValues:s}=n;let l=0;const u=e.gapMs,c=e.prevWord,d=e.nextWord;c.endsWithSentencePunc&&(l+=o),c.endsWithComma&&(l+=a),d.startsWithCapital&&!d.isAllCaps&&(l+=i),c.endsWithSentencePunc&&d.startsWithCapital&&!d.isAllCaps&&(l+=.4*o);let p=0,h=0;t.std>0&&(p=(u-t.mean)/t.std),t.robustSigma>0&&(h=(u-t.median)/t.robustSigma);const f=Math.min(p,h);l+=Math.max(0,f)*r;const m=s&&s.has(u)&&e.isSameEvent?.4:1;return u>=t.p75&&(l+=.5*m),u>=t.p90&&(l+=1*m),u>=t.p95&&(l+=1.5*m),u>=500&&(l+=.3),u>=800&&(l+=.5),u>=1500&&(l+=1),u>=3e3&&(l+=1.5),e.isYoutubeBreak&&(l+=.8),e.isSameEvent?l-=1:l+=.3,l}(e,n,r)),h=[];let f=0,m=-1,g=-1/0;for(let v=0;v=Math.min(l,100)&&x>=s){h.push(v+1),f=v+1,m=-1,g=-1/0;continue}if(u&&r.endsWithSentencePunc&&y.startsWithCapital&&!y.isAllCaps&&x>=Math.max(c,s)&&b>=d&&e.length-(v+1)>=s){h.push(v+1),f=v+1,m=-1,g=-1/0;continue}const A=e[v].endMs-e[f].startMs;n>g&&v-f+1>0&&A>=l&&(g=n,m=v);let D=!1;if((b>=o||x>=a)&&(D=!0),D){const e=m>=0?m:v;h.push(e+1),f=e+1,m=-1,g=-1/0;continue}if(!(x=i){let e=i;t[v].isSameEvent&&(e=1.5*i),r.endsWithSentencePunc&&x=e&&(h.push(v+1),f=v+1,m=-1,g=-1/0)}}return Array.from(new Set(h)).sort((e,t)=>e-t)}function rj(e,t){const n=e.words,r=n.length;if(r<=1)return[e];const o=e.durationMs,a=Math.ceil(o/t),i=Math.ceil(r/a),s=[];for(let l=0;l1&&void 0!==arguments[1]?arguments[1]:{};const n=(0,It.A)((0,It.A)({},XT),t),{words:r,gaps:o,wordEventIds:a}=function(e){const t=e.events||[],n=[],r=[];let o=0;for(const s of t){const e=s.tStartMs||0,t=e+(s.dDurationMs||0),a=s.segs||[],i=1===s.aAppend;if(a.length)if(i&&1===a.length&&"\n"===a[0].utf8)o++;else{for(let i=0;ie.isSameEvent).length,s=new Set;if(i<10)return s;for(const[l,u]of o){const e=u/i,t=a.has(l)?r.filter(e=>!e.isSameEvent&&e.gapMs===l).length/Math.max(r.filter(e=>!e.isSameEvent).length,1):0;e>=.08&&t<.02&&s.add(l)}return s}(0,o,a),s=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;const n=[];for(const g of e)null!==t&&t.has(g.gapMs)||n.push(g.gapMs);n.sort((e,t)=>e-t);const r=n.length;if(0===r)return new ZT(0,0,0,0,0,0,0,0,0,0,0,0);const o=n.reduce((e,t)=>e+t,0)/r,a=tj(n,50);let i=0;if(r>=2){const e=n.reduce((e,t)=>e+Math.pow(t-o,2),0)/(r-1);i=Math.sqrt(e)}const s=n[0],l=n[r-1],u=tj(n,25),c=a,d=tj(n,75),p=tj(n,90),h=tj(n,95),f=n.map(e=>Math.abs(e-a)).sort((e,t)=>e-t),m=f.length?tj(f,50):0;return new ZT(o,a,i,s,l,u,c,d,p,h,m,1.4826*m)}(o,i.size?i:null),l=(0,It.A)((0,It.A)({},n),{},{defaultFillValues:i.size?i:null});let u=nj(r,o,s,l);u=function(e,t,n){const{minSentenceWords:r,maxDurationMs:o}=n;let a=0;const i=[];for(let s=0;s0?e[n].startMs-e[a-1].endMs:0,r=i.length>=2?i[i.length-2]:0,s=e[n-1].endMs-e[r].startMs;if(t<=3e3&&s<=o){i.pop(),a=i.length?i[i.length-1]:0;continue}}i.push(n),a=n}if(e.length-a=1){const t=i[i.length-1],n=t0?e[t].startMs-e[t-1].endMs:0,r=i.length>=2?i[i.length-2]:0,a=e[e.length-1].endMs-e[r].startMs;n<=3e3&&a<=o&&i.pop()}}return i}(r,u,l);const c=function(e,t,n){const{maxDurationMs:r}=n,o=[],a=[0,...t];a[a.length-1]e&&(i[s].endMs=e)}for(let s=0;s({text:e.text,start:e.startMs,end:e.endMs}))}function aj(){return String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").replace(/<[^>]+>/g,"").replace(/\u200B/g,"").trim().replace(/\s+/g," ")}function ij(){let{flatEvents:e,usePause:t=!1,timeout:n=1e3,maxWords:r=15,maxDurationMs:o=1e4}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const a={1:new Set(["actually","also","although","and","anyway","as","basically","because","but","eventually","frankly","honestly","hopefully","however","if","instead","it's","just","let's","like","literally","maybe","meanwhile","nevertheless","nonetheless","now","okay","or","otherwise","perhaps","personally","probably","right","since","so","suddenly","that's","then","there's","therefore","though","thus","unless","until","well","while"])},i=[];let s=[],l=0;const u=()=>{s.length>0&&i.push({text:s.map(e=>e.text).join(" ").trim(),start:s[0].start,end:s[s.length-1].end}),s=[],l=0};return e.forEach(e=>{if(!e.text)return;const i=s[s.length-1];if(i){const c=/[.?!\u2026\])]$/.test(i.text),d=/[,]$/.test(i.text),p=e.start-i.end>n,h=e.start-s[0].start>=o,f=(t||d)&&l>=r,m=/^[[(\u266a]/.test(e.text),g=t&&a[1].has(e.text.toLowerCase().split(" ")[0])&&s.length>1;(c||p||h||f||m||g)&&u()}s.push(e),l+=e.text.split(/\s+/).length}),u(),i}function sj(e,t){let{longSentenceThreshold:n=120}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(null===e||void 0===e||!e.length)return[];if(["zh","ja","ko","th","lo","km","my"].some(e=>null===t||void 0===t?void 0:t.startsWith(e))){const t=[];if(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:.1;if(0===e.length)return!1;const r=e.filter(e=>e.text.length>t).length;return Zi.vF.debug("Youtube Provider: quality check",{longLinesCount:r,totalLines:e.length,percentage:r/e.length}),r/e.length>n}(e,5,.5))return e;let n=null;const r=30,o=1e3;for(const a of e)if(a.text){n&&a.start-n.end>o&&(t.push(n),n=null),n?(n.text+=a.text,n.end=a.end):n={text:a.text,start:a.start,end:a.end};(/[\u3002\uff01\uff1f.!?\u2026][\u201d\u2019"'\u300d\u300f\u3011\uff09\u300b\uff09\]]*$/.test(a.text)||n.text.length>=r)&&(t.push(n),n=null)}else n&&(t.push(n),n=null);return n&&t.push(n),t}let r=ij({flatEvents:e});const o=[];for(const a of r)if(a.text.length>n){const t=e.filter(e=>e.start>=a.start&&e.start1){Zi.vF.debug("Youtube Provider: re-processing long sentence with pause",{length:a.text.length,text:a.text.slice(0,50)+"..."});const e=ij({flatEvents:t,usePause:!0});o.push(...e)}else o.push(a)}else o.push(a);return r=o,r}function lj(){let{events:e=[],flatEvents:t=[],fromLang:n="auto",mode:r="rule",longSentenceThreshold:o=120}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const a=e=>(e||[]).map(e=>({start:e.start,end:e.end,text:e.text,translation:e.translation||""}));if("statistical"===r){Zi.vF.info("Youtube Provider: Sentence break mode: STATISTICAL");const t=function(e){try{return oj({events:e}).map(e=>({text:e.text,start:e.start,end:e.end,translation:""}))}catch(t){return Zi.vF.info("Youtube Provider: Error in algorithmic segmentation",t),null}}(e);if(null!==t&&void 0!==t&&t.length)return a(t);Zi.vF.info("Youtube Provider: Statistical segmentation returned empty, falling back to rule")}return Zi.vF.info("Youtube Provider: Sentence break mode: RULE"),a(sj(t,n,{longSentenceThreshold:o}))}function uj(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1e3;if(!e||0===e.length)return[];const n=[];let r=[],o=0;const a=Math.max(1,Number(t)||1e3),i=Math.floor(.8*a),s=()=>{r.length&&(n.push(r),r=[],o=0)};for(let l=0;la&&s(),r.push(t),o+=n;if(!(l===e.length-1)&&o>=i){const n=/[.?!\u2026\])]$/.test(t.text),r=e[l+1].start-t.end;(n||r>1e3)&&s()}}return s(),n}function cj(e,t){const n=Array.isArray(e)?e:[];if(!n.some(e=>Number.isInteger(null===e||void 0===e?void 0:e._ei)||Number.isInteger(null===e||void 0===e?void 0:e._alignedEi)))return{cues:n,coveredEnd:n.length?t-1:-1,verifiable:!1};const r=[];let o=0;for(const s of n){var a,i;const e=null!==(a=s._alignedSi)&&void 0!==a?a:s._si,n=null!==(i=s._alignedEi)&&void 0!==i?i:s._ei;if(!Number.isInteger(e)||!Number.isInteger(n)||e!==o||n=t)break;r.push(s),o=n+1}return{cues:r,coveredEnd:o-1,verifiable:!0}}function dj(e,t){return t?(e||[]).map(e=>(0,It.A)((0,It.A)({},e),{},{_isDraftTranslation:!0})):e||[]}function pj(e,t,n,r){const o=[...e||[]].sort((e,t)=>e.start-t.start),a=o.some((e,t)=>{const n=Number(e.start),r=Number(e.end),a=o[t-1];return!String(e.text||"").trim()||!Number.isFinite(n)||!Number.isFinite(r)||r<=n||a&&n(e||[]).map(e=>String((null===e||void 0===e?void 0:e.text)||"")).join("").toLowerCase().replace(/(?:[\0-\/:-@\[-`\{-\xA9\xAB-\xB1\xB4\xB6-\xB8\xBB\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u065F\u066A-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07BF\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u0890-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0965\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09E5\u09F2\u09F3\u09FA\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A65\u0A70\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AE5\u0AF0-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B65\u0B70\u0B78-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0BE5\u0BF3-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5E\u0C5F\u0C62-\u0C65\u0C70-\u0C77\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDB\u0CDF\u0CE2-\u0CE5\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57\u0D62-\u0D65\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DE5\u0DF0-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F1F\u0F34-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u104A-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u1368\u137D-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u17DF\u17EA-\u17EF\u17FA-\u180F\u181A-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19FF\u1A17-\u1A1F\u1A55-\u1A7F\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B4F\u1B5A-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BFF\u1C24-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C8B-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u206F\u2072\u2073\u207A-\u207E\u208A-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A-\u245F\u249C-\u24E9\u2500-\u2775\u2794-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFC\u2CFE\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3008-\u3020\u302A-\u3030\u3036\u3037\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u3191\u3196-\u319F\u31C0-\u31EF\u3200-\u321F\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6F0-\uA716\uA720\uA721\uA789\uA78A\uA7DD-\uA7F0\uA802\uA806\uA80B\uA823-\uA82F\uA836-\uA83F\uA874-\uA881\uA8B4-\uA8CF\uA8DA-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9DA-\uA9DF\uA9E5\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD06\uDD34-\uDD3F\uDD79-\uDD89\uDD8C-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEE0\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDBF\uDDF4-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC57\uDC77\uDC78\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1F\uDD3A-\uDD3F\uDD5A-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE3F\uDE49-\uDE5F\uDE7F\uDEA0-\uDEBF\uDEC8\uDEE5-\uDEEA\uDEF0-\uDEFF\uDF36-\uDF3F\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD24-\uDD2F\uDD3A-\uDD3F\uDD66-\uDD6E\uDD86-\uDE5F\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEC1\uDEC8-\uDEFF\uDF28-\uDF2F\uDF46-\uDF50\uDF55-\uDF6F\uDF82-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC51\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDD02\uDD27-\uDD35\uDD40-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDCF\uDDDB\uDDDD-\uDDE0\uDDF5-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDEEF\uDEFA-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDF7F\uDF8A\uDF8C\uDF8D\uDF8F\uDFB6\uDFB8-\uDFD0\uDFD2\uDFD4-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC4F\uDC5A-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEBF\uDECA-\uDECF\uDEE4-\uDEFF\uDF1B-\uDF2F\uDF3C-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFBF\uDFE1-\uDFEF\uDFFA-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC4F\uDC6D-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDD9F\uDDAA-\uDDAF\uDDDC-\uDDDF\uDDEA-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDF4F\uDF5A-\uDFAF\uDFB1-\uDFBF\uDFD5-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD812-\uD817\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD832\uD836\uD83D\uD83F\uD87C\uD87D\uD87F\uD88E-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDC5F]|\uD810[\uDFFB-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD818[\uDC00-\uDCFF\uDD1E-\uDD2F\uDD3A-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6F\uDEBF\uDECA-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDD3F\uDD6D-\uDD6F\uDD7A-\uDE3F\uDE97-\uDE9F\uDEB9\uDEBA\uDED4-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFF1\uDFF7-\uDFFF]|\uD823[\uDCD6-\uDCFE\uDD1F-\uDD7F\uDDF3-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD833[\uDC00-\uDCEF\uDCFA-\uDFFF]|\uD834[\uDC00-\uDEBF\uDED4-\uDEDF\uDEF4-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDEEF\uDEFA-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDCEF\uDCFA-\uDDCF\uDDEE\uDDEF\uDDFB-\uDEBF\uDEDF\uDEE3\uDEE6\uDEEE\uDEEF\uDEF5-\uDEFD\uDF00-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD0-\uDCFF\uDD44-\uDD4A\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCAC\uDCB0\uDCB5-\uDD00\uDD2E\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDCFF\uDD0D-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEAE\uDEAF]|\uD87A[\uDFE1-\uDFEF]|\uD87B[\uDE5E-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD88D[\uDC7A-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g,""),s=i(o)!==i(t);return a||s?(Zi.vF.info("Youtube Provider: AI result validation failed, falling back"),r(t,n).sort((e,t)=>e.start-t.start)):o}async function hj(e){let{videoId:t,fromLang:n,toLang:r,chunkEvents:o,segApiSetting:a,apiSubtitle:i,docInfo:s,formatSubtitles:l,clearSegmentTranslation:u,onSubtitleChunk:c,signal:d,setting:p}=e;const h=(o||[]).filter(e=>null===e||void 0===e?void 0:e.text);if(!h.length)return[];try{const e="".concat(h[0].start," --\x3e ").concat(h[h.length-1].end);Zi.vF.debug("Youtube Provider: aiSegment events",{videoId:t,chunkSign:e,fromLang:n,toLang:r,segmentEvents:h});const o=(0,X_.a5)(a,null===p||void 0===p?void 0:p.prompts,p),m=await i({videoId:t,chunkSign:e,fromLang:n,toLang:r,events:h,apiSetting:o,docInfo:s,signal:d,onSubtitleChunk:e=>{let{subtitles:t}=e;if(null===t||void 0===t||!t.length||!c)return;const n=u?t.map(e=>(0,It.A)((0,It.A)({},e),{},{_isDraftTranslation:!0})):t;c({subtitles:n})}});if(Zi.vF.debug("Youtube Provider: aiSegment subtitles",m),Array.isArray(m)){const e=cj(dj(m,u),h.length);if(!e.verifiable||e.coveredEnd===h.length-1)return pj(e.cues,h,n,l);const a=e.coveredEnd+1,c=h.slice(a);let p={cues:[],coveredEnd:-1,verifiable:!0};try{const e="".concat(c[0].start," --\x3e ").concat(c[c.length-1].end);p=cj(dj(await i({videoId:t,chunkSign:e,fromLang:n,toLang:r,events:c,apiSetting:o,docInfo:s,signal:d}),u),c.length)}catch(f){Zi.vF.info("Youtube Provider: ai tail retry",f)}const g=function(e,t){return(e||[]).map(e=>(0,It.A)((0,It.A)({},e),{},{_si:Number.isInteger(e._si)?e._si+t:e._si,_ei:Number.isInteger(e._ei)?e._ei+t:e._ei,_alignedSi:Number.isInteger(e._alignedSi)?e._alignedSi+t:e._alignedSi,_alignedEi:Number.isInteger(e._alignedEi)?e._alignedEi+t:e._alignedEi}))}(p.cues,a),v=p.verifiable?a+p.coveredEnd+1:h.length,y=h.slice(v),b=y.length?l(y,n):[];return pj([...e.cues,...g,...b],h,n,l)}}catch(m){Zi.vF.info("Youtube Provider: ai segmentation",m)}return l(h,n).sort((e,t)=>e.start-t.start)}const fj=["zh","ja","ko","th","lo","km","my"],mj=e=>Math.round(100*(Number(e)||0))/100,gj=(e,t)=>{if(!e.length)return 0;const n=[...e].sort((e,t)=>e-t),r=Math.ceil(n.length*t)-1;return n[Math.max(0,r)]},vj=e=>({average:mj(e.length?e.reduce((e,t)=>e+t,0)/e.length:0),p95:gj(e,.95),max:e.length?Math.max(...e):0}),yj=(e,t)=>{const n=new Map;for(const r of((e,t)=>{const n=String(e||"").toLowerCase();return t?Array.from(n.replace(/\s+/g,"")):n.match(/(?:[0-9A-Za-z\xAA\xB2\xB3\xB5\xB9\xBA\xBC-\xBE\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u0660-\u0669\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07C0-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088F\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0966-\u096F\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09E6-\u09F1\u09F4-\u09F9\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A66-\u0A6F\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AE6-\u0AEF\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B66-\u0B6F\u0B71-\u0B77\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0BE6-\u0BF2\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5C\u0C5D\u0C60\u0C61\u0C66-\u0C6F\u0C78-\u0C7E\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDC-\u0CDE\u0CE0\u0CE1\u0CE6-\u0CEF\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D58-\u0D61\u0D66-\u0D78\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0DE6-\u0DEF\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E50-\u0E59\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0ED0-\u0ED9\u0EDC-\u0EDF\u0F00\u0F20-\u0F33\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F-\u1049\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u1090-\u1099\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1369-\u137C\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u17E0-\u17E9\u17F0-\u17F9\u1810-\u1819\u1820-\u1878\u1880-\u1884\u1887-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1946-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u19D0-\u19DA\u1A00-\u1A16\u1A20-\u1A54\u1A80-\u1A89\u1A90-\u1A99\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B50-\u1B59\u1B83-\u1BA0\u1BAE-\u1BE5\u1C00-\u1C23\u1C40-\u1C49\u1C4D-\u1C7D\u1C80-\u1C8A\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2070\u2071\u2074-\u2079\u207F-\u2089\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2150-\u2189\u2460-\u249B\u24EA-\u24FF\u2776-\u2793\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2CFD\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u3192-\u3195\u31A0-\u31BF\u31F0-\u31FF\u3220-\u3229\u3248-\u324F\u3251-\u325F\u3280-\u3289\u32B1-\u32BF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7DC\uA7F1-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA830-\uA835\uA840-\uA873\uA882-\uA8B3\uA8D0-\uA8D9\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA900-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF-\uA9D9\uA9E0-\uA9E4\uA9E6-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA50-\uAA59\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uABF0-\uABF9\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF10-\uFF19\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD07-\uDD33\uDD40-\uDD78\uDD8A\uDD8B\uDE80-\uDE9C\uDEA0-\uDED0\uDEE1-\uDEFB\uDF00-\uDF23\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCA0-\uDCA9\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDD70-\uDD7A\uDD7C-\uDD8A\uDD8C-\uDD92\uDD94\uDD95\uDD97-\uDDA1\uDDA3-\uDDB1\uDDB3-\uDDB9\uDDBB\uDDBC\uDDC0-\uDDF3\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67\uDF80-\uDF85\uDF87-\uDFB0\uDFB2-\uDFBA]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC58-\uDC76\uDC79-\uDC9E\uDCA7-\uDCAF\uDCE0-\uDCF2\uDCF4\uDCF5\uDCFB-\uDD1B\uDD20-\uDD39\uDD40-\uDD59\uDD80-\uDDB7\uDDBC-\uDDCF\uDDD2-\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE40-\uDE48\uDE60-\uDE7E\uDE80-\uDE9F\uDEC0-\uDEC7\uDEC9-\uDEE4\uDEEB-\uDEEF\uDF00-\uDF35\uDF40-\uDF55\uDF58-\uDF72\uDF78-\uDF91\uDFA9-\uDFAF]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDCFA-\uDD23\uDD30-\uDD39\uDD40-\uDD65\uDD6F-\uDD85\uDE60-\uDE7E\uDE80-\uDEA9\uDEB0\uDEB1\uDEC2-\uDEC7\uDF00-\uDF27\uDF30-\uDF45\uDF51-\uDF54\uDF70-\uDF81\uDFB0-\uDFCB\uDFE0-\uDFF6]|\uD804[\uDC03-\uDC37\uDC52-\uDC6F\uDC71\uDC72\uDC75\uDC83-\uDCAF\uDCD0-\uDCE8\uDCF0-\uDCF9\uDD03-\uDD26\uDD36-\uDD3F\uDD44\uDD47\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDD0-\uDDDA\uDDDC\uDDE1-\uDDF4\uDE00-\uDE11\uDE13-\uDE2B\uDE3F\uDE40\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDEF0-\uDEF9\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61\uDF80-\uDF89\uDF8B\uDF8E\uDF90-\uDFB5\uDFB7\uDFD1\uDFD3]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC50-\uDC59\uDC5F-\uDC61\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDCD0-\uDCD9\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE50-\uDE59\uDE80-\uDEAA\uDEB8\uDEC0-\uDEC9\uDED0-\uDEE3\uDF00-\uDF1A\uDF30-\uDF3B\uDF40-\uDF46]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCF2\uDCFF-\uDD06\uDD09\uDD0C-\uDD13\uDD15\uDD16\uDD18-\uDD2F\uDD3F\uDD41\uDD50-\uDD59\uDDA0-\uDDA7\uDDAA-\uDDD0\uDDE1\uDDE3\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE89\uDE9D\uDEB0-\uDEF8\uDFC0-\uDFE0\uDFF0-\uDFF9]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC50-\uDC6C\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD50-\uDD59\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDDA0-\uDDA9\uDDB0-\uDDDB\uDDE0-\uDDE9\uDEE0-\uDEF2\uDF02\uDF04-\uDF10\uDF12-\uDF33\uDF50-\uDF59\uDFB0\uDFC0-\uDFD4]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|\uD80B[\uDF90-\uDFF0]|[\uD80C\uD80E\uD80F\uD81C-\uD822\uD840-\uD868\uD86A-\uD86D\uD86F-\uD872\uD874-\uD879\uD880-\uD883\uD885-\uD88C][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2F\uDC41-\uDC46\uDC60-\uDFFF]|\uD810[\uDC00-\uDFFA]|\uD811[\uDC00-\uDE46]|\uD818[\uDD00-\uDD1D\uDD30-\uDD39]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDE60-\uDE69\uDE70-\uDEBE\uDEC0-\uDEC9\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF50-\uDF59\uDF5B-\uDF61\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDD40-\uDD6C\uDD70-\uDD79\uDE40-\uDE96\uDEA0-\uDEB8\uDEBB-\uDED3\uDF00-\uDF4A\uDF50\uDF93-\uDF9F\uDFE0\uDFE1\uDFE3\uDFF2-\uDFF6]|\uD823[\uDC00-\uDCD5\uDCFF-\uDD1E\uDD80-\uDDF2]|\uD82B[\uDFF0-\uDFF3\uDFF5-\uDFFB\uDFFD\uDFFE]|\uD82C[\uDC00-\uDD22\uDD32\uDD50-\uDD52\uDD55\uDD64-\uDD67\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD833[\uDCF0-\uDCF9]|\uD834[\uDEC0-\uDED3\uDEE0-\uDEF3\uDF60-\uDF78]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB\uDFCE-\uDFFF]|\uD837[\uDF00-\uDF1E\uDF25-\uDF2A]|\uD838[\uDC30-\uDC6D\uDD00-\uDD2C\uDD37-\uDD3D\uDD40-\uDD49\uDD4E\uDE90-\uDEAD\uDEC0-\uDEEB\uDEF0-\uDEF9]|\uD839[\uDCD0-\uDCEB\uDCF0-\uDCF9\uDDD0-\uDDED\uDDF0-\uDDFA\uDEC0-\uDEDE\uDEE0-\uDEE2\uDEE4\uDEE5\uDEE7-\uDEED\uDEF0-\uDEF4\uDEFE\uDEFF\uDFE0-\uDFE6\uDFE8-\uDFEB\uDFED\uDFEE\uDFF0-\uDFFE]|\uD83A[\uDC00-\uDCC4\uDCC7-\uDCCF\uDD00-\uDD43\uDD4B\uDD50-\uDD59]|\uD83B[\uDC71-\uDCAB\uDCAD-\uDCAF\uDCB1-\uDCB4\uDD01-\uDD2D\uDD2F-\uDD3D\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD83C[\uDD00-\uDD0C]|\uD83E[\uDFF0-\uDFF9]|\uD869[\uDC00-\uDEDF\uDF00-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEAD\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0\uDFF0-\uDFFF]|\uD87B[\uDC00-\uDE5D]|\uD87E[\uDC00-\uDE1D]|\uD884[\uDC00-\uDF4A\uDF50-\uDFFF]|\uD88D[\uDC00-\uDC79])+|(?:[\0-\x08\x0E-\x1F!-\/:-@\[-`\{-\x9F\xA1-\xA9\xAB-\xB1\xB4\xB6-\xB8\xBB\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u065F\u066A-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07BF\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u0890-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0965\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09E5\u09F2\u09F3\u09FA\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A65\u0A70\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AE5\u0AF0-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B65\u0B70\u0B78-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0BE5\u0BF3-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5E\u0C5F\u0C62-\u0C65\u0C70-\u0C77\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDB\u0CDF\u0CE2-\u0CE5\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57\u0D62-\u0D65\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0DE5\u0DF0-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E4F\u0E5A-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0ECF\u0EDA\u0EDB\u0EE0-\u0EFF\u0F01-\u0F1F\u0F34-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u104A-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F\u109A-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u1368\u137D-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u169B-\u169F\u16EB-\u16ED\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u17DF\u17EA-\u17EF\u17FA-\u180F\u181A-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u1945\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19CF\u19DB-\u19FF\u1A17-\u1A1F\u1A55-\u1A7F\u1A8A-\u1A8F\u1A9A-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B4F\u1B5A-\u1B82\u1BA1-\u1BAD\u1BE6-\u1BFF\u1C24-\u1C3F\u1C4A-\u1C4C\u1C7E\u1C7F\u1C8B-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u1FFF\u200B-\u2027\u202A-\u202E\u2030-\u205E\u2060-\u206F\u2072\u2073\u207A-\u207E\u208A-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F\u218A-\u245F\u249C-\u24E9\u2500-\u2775\u2794-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFC\u2CFE\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u2FFF\u3001-\u3004\u3008-\u3020\u302A-\u3030\u3036\u3037\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u3191\u3196-\u319F\u31C0-\u31EF\u3200-\u321F\u322A-\u3247\u3250\u3260-\u327F\u328A-\u32B0\u32C0-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6F0-\uA716\uA720\uA721\uA789\uA78A\uA7DD-\uA7F0\uA802\uA806\uA80B\uA823-\uA82F\uA836-\uA83F\uA874-\uA881\uA8B4-\uA8CF\uA8DA-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9DA-\uA9DF\uA9E5\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA4F\uAA5A-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABEF\uABFA-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD\uFEFE\uFF00-\uFF0F\uFF1A-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDD06\uDD34-\uDD3F\uDD79-\uDD89\uDD8C-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEE0\uDEFC-\uDEFF\uDF24-\uDF2C\uDF4B-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0\uDFD6-\uDFFF]|\uD801[\uDC9E\uDC9F\uDCAA-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDBF\uDDF4-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56\uDC57\uDC77\uDC78\uDC9F-\uDCA6\uDCB0-\uDCDF\uDCF3\uDCF6-\uDCFA\uDD1C-\uDD1F\uDD3A-\uDD3F\uDD5A-\uDD7F\uDDB8-\uDDBB\uDDD0\uDDD1\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE3F\uDE49-\uDE5F\uDE7F\uDEA0-\uDEBF\uDEC8\uDEE5-\uDEEA\uDEF0-\uDEFF\uDF36-\uDF3F\uDF56\uDF57\uDF73-\uDF77\uDF92-\uDFA8\uDFB0-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCF9\uDD24-\uDD2F\uDD3A-\uDD3F\uDD66-\uDD6E\uDD86-\uDE5F\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEC1\uDEC8-\uDEFF\uDF28-\uDF2F\uDF46-\uDF50\uDF55-\uDF6F\uDF82-\uDFAF\uDFCC-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC51\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDCEF\uDCFA-\uDD02\uDD27-\uDD35\uDD40-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDCF\uDDDB\uDDDD-\uDDE0\uDDF5-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDEEF\uDEFA-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDF7F\uDF8A\uDF8C\uDF8D\uDF8F\uDFB6\uDFB8-\uDFD0\uDFD2\uDFD4-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC4F\uDC5A-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDCCF\uDCDA-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE4F\uDE5A-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEBF\uDECA-\uDECF\uDEE4-\uDEFF\uDF1B-\uDF2F\uDF3C-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCF3-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD4F\uDD5A-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFBF\uDFE1-\uDFEF\uDFFA-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC4F\uDC6D-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD4F\uDD5A-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDD9F\uDDAA-\uDDAF\uDDDC-\uDDDF\uDDEA-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDF4F\uDF5A-\uDFAF\uDFB1-\uDFBF\uDFD5-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC6F-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD812-\uD817\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD832\uD836\uD83D\uD83F\uD87C\uD87D\uD87F\uD88E-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDC5F]|\uD810[\uDFFB-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD818[\uDC00-\uDCFF\uDD1E-\uDD2F\uDD3A-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F\uDE6A-\uDE6F\uDEBF\uDECA-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF4F\uDF5A\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDD3F\uDD6D-\uDD6F\uDD7A-\uDE3F\uDE97-\uDE9F\uDEB9\uDEBA\uDED4-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFF1\uDFF7-\uDFFF]|\uD823[\uDCD6-\uDCFE\uDD1F-\uDD7F\uDDF3-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD833[\uDC00-\uDCEF\uDCFA-\uDFFF]|\uD834[\uDC00-\uDEBF\uDED4-\uDEDF\uDEF4-\uDF5F\uDF79-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC\uDFCD]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E\uDD3F\uDD4A-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDEEF\uDEFA-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDCEF\uDCFA-\uDDCF\uDDEE\uDDEF\uDDFB-\uDEBF\uDEDF\uDEE3\uDEE6\uDEEE\uDEEF\uDEF5-\uDEFD\uDF00-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5\uDCC6\uDCD0-\uDCFF\uDD44-\uDD4A\uDD4C-\uDD4F\uDD5A-\uDFFF]|\uD83B[\uDC00-\uDC70\uDCAC\uDCB0\uDCB5-\uDD00\uDD2E\uDD3E-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD83C[\uDC00-\uDCFF\uDD0D-\uDFFF]|\uD83E[\uDC00-\uDFEF\uDFFA-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEAE\uDEAF]|\uD87A[\uDFE1-\uDFEF]|\uD87B[\uDE5E-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD88D[\uDC7A-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g)||[]})((e||[]).join(" "),t))n.set(r,(n.get(r)||0)+1);return n};function bj(){var e,t;let{rawEvents:n=[],canonicalEvents:r=[],flatEvents:o=[],cues:a=[],fromLang:i="auto",processingMs:s=0,filteredNonSpeechCount:l=0,ai:u=null}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const c=Array.isArray(a)?a:[],d=c.map(e=>String(e.text||"").length),p=c.map(e=>String(e.text||"").trim().split(/\s+/).filter(Boolean).length),h=c.map(e=>Math.max(0,Number(e.end)-Number(e.start))),f=(null===(e=o[0])||void 0===e?void 0:e.start)||0,m=(null===(t=o[o.length-1])||void 0===t?void 0:t.end)||f,g=fj.some(e=>String(i).startsWith(e));let v=0,y=0,b=0,x=0,A=0;c.forEach((e,t)=>{String(e.text||"").trim()||(v+=1);const n=Number(e.end)-Number(e.start);if((!Number.isFinite(Number(e.start))||!Number.isFinite(Number(e.end))||n<=0)&&(x+=1),Number.isFinite(n)&&n>0&&(A+=n),t>0){const n=c[t-1];Number(e.start){const r=yj(e.map(e=>e.text),n),o=yj(t.map(e=>e.text),n);let a=0,i=0,s=0;for(const[l,u]of r)a+=u,i+=Math.max(0,u-(o.get(l)||0));for(const[l,u]of o)s+=Math.max(0,u-(r.get(l)||0));return{textCoveragePercent:a?mj((a-i)/a*100):100,missingTextCount:i,duplicatedTextCount:s}})(o,c,g),k={tooLongTextCount:c.filter((e,t)=>g?d[t]>30:p[t]>15).length,tooLongDurationCount:h.filter(e=>e>1e4).length,fragmentCount:c.filter((e,t)=>p[t]<2&&h[t]<500&&!(0,YT.b)(e.text)).length,nonSpeechCueCount:c.filter(e=>(0,YT.b)(e.text)).length},w=(0,It.A)((0,It.A)({processingMs:mj(s),rawEventCount:n.length,canonicalEventCount:r.length,flatEventCount:o.length,filteredNonSpeechCount:Math.max(0,Number(l)||0),cueCount:c.length,sourceDurationMs:Math.max(0,m-f),coveredDurationMs:A},D),{},{emptyCueCount:v,invalidCueCount:x,overlapCount:y,nonMonotonicCount:b,chars:vj(d),words:vj(p),durationMs:vj(h),warnings:k});return u&&(w.ai=u),w}function xj(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=[];return t.invalidCueCount&&n.push("invalid-cue"),t.emptyCueCount&&n.push("empty-cue"),t.overlapCount&&n.push("overlap"),t.nonMonotonicCount&&n.push("non-monotonic"),t.missingTextCount&&n.push("missing-text"),t.duplicatedTextCount&&n.push("duplicated-text"),null!==(e=t.warnings)&&void 0!==e&&e.nonSpeechCueCount&&n.push("non-speech-leaked"),n}const Aj="".concat("https://kiss-translator.rayjar.com","/subtitle-samples"),Dj=1e5,kj={"& textarea":{resize:"vertical !important",overflow:"auto !important"}};function wj(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return Object.entries(r).reduce((e,t)=>{let[n,r]=t;return e.split("{".concat(n,"}")).join(void 0===r?"":String(r))},e(t,n))}function Sj(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(e,t)=>t;const n=Array.isArray(e)?e:null===e||void 0===e?void 0:e.events;if(!Array.isArray(n)||!n.length)throw new Error(t("subtitle_playground_invalid_events","\u5b57\u5e55\u6587\u4ef6\u6ca1\u6709\u6709\u6548\u7684 events \u6570\u7ec4"));if(n.length>Dj)throw new Error(wj(t,"subtitle_playground_event_limit","\u5b57\u5e55\u4e8b\u4ef6\u6570\u91cf\u4e0d\u80fd\u8d85\u8fc7 {max}",{max:Dj}));if(!n.some(e=>Array.isArray(null===e||void 0===e?void 0:e.segs)))throw new Error(t("subtitle_playground_missing_segments","\u5b57\u5e55\u6587\u4ef6\u7f3a\u5c11 YouTube json3 \u7684 segs \u6570\u636e"));return{events:n,lang:Array.isArray(e)?"":e.lang||""}}const Ej=e=>(e||[]).map(e=>{let{start:t,end:n,text:r,translation:o=""}=e;return{start:t,end:n,text:r,translation:o}});function _j(e){var t;let{subtitleSetting:n={},transApis:r=[],prompts:o=[]}=e;const i=gk(),s=Hf(),[l,u]=(0,a.useState)([]),[c,d]=(0,a.useState)(""),[p,h]=(0,a.useState)("uploaded"),[f,m]=(0,a.useState)("en"),[g,v]=(0,a.useState)(null),[y,b]=(0,a.useState)(""),[x,A]=(0,a.useState)(null),[D,k]=(0,a.useState)(null),[w,S]=(0,a.useState)("json"),[E,_]=(0,a.useState)(!1),[C,F]=(0,a.useState)(null),[T,j]=(0,a.useState)(""),[z,I]=(0,a.useState)(!1),L=(0,a.useRef)(null),P=(0,a.useRef)(null),R=(0,a.useRef)(s);R.current=s;const N=(0,a.useMemo)(()=>null!==n&&void 0!==n&&n.segSlug&&"-"!==n.segSlug?r.find(e=>e.apiSlug===n.segSlug):null,[null===n||void 0===n?void 0:n.segSlug,r]),O=N?"ai":"statistical"===(null===n||void 0===n?void 0:n.useAlgorithmBreaker)?"statistical":"rule",B=(null===n||void 0===n?void 0:n.segPromptMode)===Qi.N9F?(null===n||void 0===n?void 0:n.segPromptSlug)||Qi.Efh:(null===N||void 0===N?void 0:N.subtitlePromptSlug)||Qi.Efh,M=(0,Qi.Es_)(o,B),W=(null===n||void 0===n?void 0:n.segPromptMode)===Qi.N9F?s("subtitle_playground_prompt_global","\u5168\u5c40\u5b57\u5e55\u8bbe\u7f6e"):(0,Qi.RFn)(B)?s("subtitle_playground_prompt_preset","\u63a5\u53e3\u9884\u8bbe"):s("subtitle_playground_prompt_custom","\u63a5\u53e3\u81ea\u5b9a\u4e49"),U=cu((null===N||void 0===N?void 0:N.subtitlePrompt)||""),V=(0,a.useMemo)(()=>{if(!g)return null;try{return function(){var e;let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const n=[],r=[];let o=0,a=null,i="";const s=e=>{a&&((!a.end||Number.isFinite(e)&&a.end>e)&&(a.end=e),Number.isFinite(a.end)&&a.end>a.start&&r.push(a),a=null)};for(const u of Array.isArray(t)?t:[]){var l;const e=u||{},t=Array.isArray(e.segs)?e.segs:[],r=Number(e.tStartMs)||0,c=Number(e.dDurationMs)||0,d=1===e.aAppend&&1===t.length&&"\n"===(null===(l=t[0])||void 0===l?void 0:l.utf8),p=t.map(e=>(0,It.A)((0,It.A)({},e),{},{utf8:d?"\n":aj(null===e||void 0===e?void 0:e.utf8)})),h=p.map(e=>aj(e.utf8)).filter(Boolean).join(" ").replace(/\s+/g," ").trim(),f=h?"".concat(r,"|").concat(c,"|").concat(h):"";if(f&&f===i)continue;const m=(0,It.A)((0,It.A)({},e),{},{segs:p});n.push(m),i=f;for(let n=0;na.start)&&s(l)}}return s(null===(e=a)||void 0===e?void 0:e.end),{events:n,flatEvents:r.filter(e=>e&&Number.isFinite(e.start)&&Number.isFinite(e.end)&&e.end>e.start),filteredNonSpeechCount:o}}(Sj(g).events)}catch(e){return null}},[g]),H=N?uj((null===V||void 0===V?void 0:V.flatEvents)||[],(null===n||void 0===n?void 0:n.chunkLength)||1e3).length:0,G=Boolean(g)&&!N&&"auto"===f;(0,a.useEffect)(()=>{const e=new AbortController;return fetch("".concat(Aj,"/index.json?v=").concat("2.0.29"),{signal:e.signal}).then(e=>{if(!e.ok)throw new Error("HTTP ".concat(e.status));return e.json()}).then(e=>u(e.samples||[])).catch(e=>{"AbortError"!==e.name&&j(R.current("subtitle_playground_remote_index_failed","\u8fdc\u7a0b\u5b57\u5e55\u6837\u672c\u7d22\u5f15\u52a0\u8f7d\u5931\u8d25\uff0c\u53ef\u4ee5\u7ee7\u7eed\u4e0a\u4f20\u672c\u5730 JSON"))}),()=>e.abort()},[]),(0,a.useEffect)(()=>()=>{var e;return null===(e=L.current)||void 0===e?void 0:e.abort()},[]);const q=async e=>{var t;if(null===(t=L.current)||void 0===t||t.abort(),d(e),A(null),k(null),I(!1),!e)return;const n=l.find(t=>t.id===e);if(!n)return;const r=new AbortController;L.current=r,_(!0),F(null),j("");try{const e=await fetch("".concat(Aj,"/").concat(n.path,"?hash=").concat(n.sha256.slice(0,16)),{signal:r.signal});if(!e.ok)throw new Error("HTTP ".concat(e.status));const t=await e.arrayBuffer();await async function(e,t){var n,r;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(e,t)=>t;if(e.byteLength!==t.size)throw new Error(o("subtitle_playground_remote_size_invalid","\u8fdc\u7a0b\u5b57\u5e55\u6837\u672c\u5927\u5c0f\u6821\u9a8c\u5931\u8d25"));if(null===(n=globalThis.crypto)||void 0===n||null===(r=n.subtle)||void 0===r||!r.digest)return;const a=await globalThis.crypto.subtle.digest("SHA-256",e);if([...new Uint8Array(a)].map(e=>e.toString(16).padStart(2,"0")).join("")!==t.sha256)throw new Error(o("subtitle_playground_remote_hash_invalid","\u8fdc\u7a0b\u5b57\u5e55\u6837\u672c\u54c8\u5e0c\u6821\u9a8c\u5931\u8d25"))}(t,n,s);const o=(new TextDecoder).decode(t),a=JSON.parse(o);Sj(a,s),v(a),b(JSON.stringify(a,null,2)),h(n.id),m(n.language||"auto")}catch(o){"AbortError"!==o.name&&j(wj(s,"subtitle_playground_sample_load_failed","\u5b57\u5e55\u6837\u672c\u52a0\u8f7d\u5931\u8d25\uff1a{message}",{message:o.message}))}finally{L.current===r&&(L.current=null,_(!1))}},K=x?"vtt"===w?function(e){if(!Array.isArray(e))return"WEBVTT";const t=e.map((e,t)=>{const n=tu(e.start),r=tu(e.end),o=t+1,a="".concat(n," --\x3e ").concat(r),i=e.text||"",s=e.translation||"";return"".concat(o,"\n").concat(a,"\n").concat(i,"\n").concat(s)});return["WEBVTT",...t].join("\n\n")}(x):JSON.stringify(x,null,2):"",$=N?[[s("subtitle_playground_mode","\u6a21\u5f0f"),"AI"],[s("subtitle_playground_api","API"),N.apiName||N.apiSlug],[s("subtitle_playground_type_model","\u7c7b\u578b / \u6a21\u578b"),"".concat(N.apiType||"-"," / ").concat(N.model||"-")],[s("subtitle_playground_prompt","\u63d0\u793a\u8bcd"),wj(s,"subtitle_playground_prompt_value","{prompt}\uff08{source}\uff09",{prompt:(null===M||void 0===M?void 0:M.name)||B||s("subtitle_playground_api_default","\u63a5\u53e3\u9ed8\u8ba4"),source:W})],[s("subtitle_playground_chunk_length","Chunk \u957f\u5ea6"),(null===n||void 0===n?void 0:n.chunkLength)||1e3],[s("subtitle_playground_estimated_chunks","\u9884\u8ba1 Chunk"),H],[s("subtitle_playground_target_language","\u76ee\u6807\u8bed\u8a00"),(null===n||void 0===n?void 0:n.toLang)||"-"],[s("subtitle_playground_streaming","\u6d41\u5f0f"),N.useStream?s("subtitle_playground_enabled","\u542f\u7528"):s("subtitle_playground_disabled","\u5173\u95ed")],[s("subtitle_playground_protocol","\u534f\u8bae"),wj(s,"subtitle_playground_protocol_value","{protocol}\uff08{compatibility}\uff09",{protocol:U,compatibility:s("subtitle_playground_legacy_compatible","\u517c\u5bb9\u65e7\u534f\u8bae")})]]:"statistical"===O?[[s("subtitle_playground_mode","\u6a21\u5f0f"),s("subtitle_playground_statistical_mode","\u7edf\u8ba1\u65ad\u53e5")],[s("subtitle_playground_max_duration","\u6700\u5927\u65f6\u957f"),"".concat(XT.maxDurationMs,"ms")],[s("subtitle_playground_max_words","\u6700\u5927\u8bcd\u6570"),XT.maxWords],[s("subtitle_playground_min_boundary_score","\u6700\u5c0f\u8fb9\u754c\u8bc4\u5206"),XT.minBoundaryScore],[s("subtitle_playground_min_sentence_words","\u6700\u5c0f\u53e5\u5b50\u8bcd\u6570"),XT.minSentenceWords],[s("subtitle_playground_source_language","\u6e90\u8bed\u8a00"),f]]:[[s("subtitle_playground_mode","\u6a21\u5f0f"),s("subtitle_playground_rule_mode","\u89c4\u5219\u65ad\u53e5")],[s("subtitle_playground_long_sentence_threshold","\u957f\u53e5\u9608\u503c"),null!==(t=null===n||void 0===n?void 0:n.longSentenceThreshold)&&void 0!==t?t:120],[s("subtitle_playground_source_language","\u6e90\u8bed\u8a00"),f]];return(0,Je.jsxs)(vm,{spacing:2,children:[T&&(0,Je.jsx)(Xi,{severity:"warning",children:T}),N&&Number(null===n||void 0===n?void 0:n.chunkLength)>1e3&&(0,Je.jsx)(Xi,{severity:"warning",children:s("subtitle_playground_chunk_risk","\u5f53\u524d AI Chunk \u957f\u5ea6\u9ad8\u4e8e\u63a8\u8350\u9ed8\u8ba4\u503c 1000\uff0c\u957f\u8f93\u5165\u53ef\u80fd\u589e\u52a0\u6f0f\u53e5\u6216\u8fb9\u754c\u9000\u5316\u98ce\u9669\u3002")}),(0,Je.jsxs)(qa,{variant:"outlined",sx:{p:2},children:[(0,Je.jsx)(gf,{variant:"subtitle2",gutterBottom:!0,children:s("subtitle_playground_config_title","\u5f53\u524d\u751f\u6548\u7684\u65ad\u53e5\u914d\u7f6e")}),(0,Je.jsx)(kx,{container:!0,spacing:1,children:$.map(e=>{let[t,n]=e;return(0,Je.jsxs)(kx,{item:!0,xs:6,md:3,children:[(0,Je.jsx)(gf,{variant:"caption",color:"text.secondary",children:t}),(0,Je.jsx)(gf,{variant:"body2",children:String(n)})]},t)})})]}),(0,Je.jsxs)(st,{sx:{display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",md:"repeat(2, minmax(0, 1fr))"},gap:2,alignItems:"start"},children:[(0,Je.jsx)(st,{sx:{minWidth:0},children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",label:s("subtitle_playground_builtin_sample","\u5185\u7f6e\u5b57\u5e55\u6837\u672c"),value:c,disabled:E,onChange:e=>q(e.target.value),children:[(0,Je.jsx)(dx,{value:"",children:s("subtitle_playground_select_sample","\u8bf7\u9009\u62e9\u8fdc\u7a0b\u6837\u672c")}),l.map(e=>(0,Je.jsx)(dx,{value:e.id,children:e.name},e.id))]})}),(0,Je.jsx)(st,{sx:{minWidth:0},children:(0,Je.jsx)(hb,{inputRef:P,select:!0,fullWidth:!0,size:"small",label:s("subtitle_playground_source_language_label","\u5b57\u5e55\u6e90\u8bed\u8a00"),value:f,disabled:E,error:z&&G,helperText:z&&G?s("subtitle_playground_language_required","\u89c4\u5219\u548c\u7edf\u8ba1\u65ad\u53e5\u4e0d\u652f\u6301 AutoDetect\uff0c\u8bf7\u9009\u62e9\u5177\u4f53\u7684\u5b57\u5e55\u6e90\u8bed\u8a00\u3002"):"",onChange:e=>{m(e.target.value),I(!1),A(null),k(null)},children:Qi.UF6.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})}),(0,Je.jsxs)(st,{sx:{minWidth:0,gridColumn:"1 / -1"},"data-testid":"segmentation-actions",children:[(0,Je.jsxs)(vm,{direction:"row",spacing:1,flexWrap:"wrap",children:[(0,Je.jsxs)(Eb,{component:"label",variant:"outlined",startIcon:(0,Je.jsx)($T.A,{}),disabled:E,children:[s("subtitle_playground_upload_json","\u4e0a\u4f20 JSON"),(0,Je.jsx)("input",{hidden:!0,type:"file",accept:".json,application/json",onChange:async e=>{var t;const n=null===(t=e.target.files)||void 0===t?void 0:t[0];if(e.target.value="",n)if(j(""),n.size>10485760)j(s("subtitle_playground_file_too_large","\u5b57\u5e55\u6587\u4ef6\u4e0d\u80fd\u8d85\u8fc7 10MB"));else try{const e=await n.text(),t=JSON.parse(e);Sj(t,s),v(t),b(JSON.stringify(t,null,2)),d(""),h(n.name.replace(/\.json$/i,"")||"uploaded"),m("auto"),A(null),k(null),I(!1)}catch(r){j(wj(s,"subtitle_playground_file_parse_failed","\u5b57\u5e55\u6587\u4ef6\u89e3\u6790\u5931\u8d25\uff1a{message}",{message:r.message}))}}})]}),(0,Je.jsx)(Eb,{variant:"contained",startIcon:E?(0,Je.jsx)(zt,{size:16}):(0,Je.jsx)(qT.A,{}),disabled:!g||E,onClick:async()=>{if(!g||!V||E)return;var e;if(G)return I(!0),void(null===(e=P.current)||void 0===e||e.focus());if(N){if(!await i({title:s("subtitle_playground_ai_confirm_title","\u53d1\u9001 AI \u65ad\u53e5\u8bf7\u6c42"),message:wj(s,"subtitle_playground_ai_confirm_message","\u5c06\u4f7f\u7528 {api} / {model} \u53d1\u9001\u7ea6 {count} \u4e2a\u5b57\u5e55\u8bf7\u6c42\u3002\u6837\u672c\u6587\u672c\u4f1a\u53d1\u9001\u5230\u5f53\u524d AI \u670d\u52a1\u3002",{api:N.apiName||N.apiSlug,model:N.model||s("subtitle_playground_default_model","\u9ed8\u8ba4\u6a21\u578b"),count:H}),confirmText:s("subtitle_playground_continue","\u7ee7\u7eed"),cancelText:s("cancel","\u53d6\u6d88")}))return}const t=new AbortController;L.current=t,_(!0),A(null),k(null),j("");const r=performance.now();try{const e=Sj(g,s).events;let i=[],l=null;if(N){const e=uj(V.flatEvents,(null===n||void 0===n?void 0:n.chunkLength)||1e3);F({completed:0,total:e.length});let r=0,a=0,u=[];const c=async e=>{r+=1;const t=await Cu({events:e.events,from:e.fromLang,to:e.toLang,apiSetting:e.apiSetting,docInfo:e.docInfo,onSubtitleChunk:e.onSubtitleChunk,signal:e.signal});return function(e,t){if(!Array.isArray(e)||!e.length)return!1;if(!e.some(e=>Number.isInteger(null===e||void 0===e?void 0:e._ei)||Number.isInteger(null===e||void 0===e?void 0:e._alignedEi)))return!0;let n=0;for(const a of e){var r,o;const e=null!==(r=a._alignedSi)&&void 0!==r?r:a._si,t=null!==(o=a._alignedEi)&&void 0!==o?o:a._ei;if(e!==n||t{let{subtitles:t}=e;u.push(...t||[]),A(Ej([...i,...u]).sort((e,t)=>e.start-t.start))};for(const[l,m]of e.entries()){u=[];const r=await hj({videoId:"subtitle-playground-".concat(p,"-").concat(l),fromLang:f,toLang:null===n||void 0===n?void 0:n.toLang,chunkEvents:m,segApiSetting:N,apiSubtitle:c,docInfo:{title:s("subtitle_segmentation","\u5b57\u5e55\u65ad\u53e5"),description:"",summary:""},formatSubtitles:(e,t)=>{var r;return sj(e,t,{longSentenceThreshold:null!==(r=null===n||void 0===n?void 0:n.longSentenceThreshold)&&void 0!==r?r:120})},clearSegmentTranslation:!1,signal:t.signal,setting:(0,It.A)((0,It.A)({},n),{},{prompts:o}),onSubtitleChunk:d});i.push(...r),A(Ej(i).sort((e,t)=>e.start-t.start)),F({completed:l+1,total:e.length})}const h=i.filter(e=>!Number.isInteger(e._ei)).length;l={protocol:U,chunkCount:e.length,requestCount:r,retryCount:Math.max(0,r-e.length),fallbackCueCount:h,invalidResponseCount:a}}else{var a;i=lj({events:V.events,flatEvents:V.flatEvents,fromLang:f,mode:O,longSentenceThreshold:null!==(a=null===n||void 0===n?void 0:n.longSentenceThreshold)&&void 0!==a?a:120})}const u=Ej(i).sort((e,t)=>e.start-t.start),c=bj({rawEvents:e,canonicalEvents:V.events,flatEvents:V.flatEvents,cues:u,fromLang:f,processingMs:performance.now()-r,filteredNonSpeechCount:V.filteredNonSpeechCount,ai:l});A(u),k((0,It.A)((0,It.A)({},c),{},{errors:xj(c)}))}catch(l){"AbortError"!==l.name&&j(wj(s,"subtitle_playground_test_failed","\u5b57\u5e55\u65ad\u53e5\u5931\u8d25\uff1a{message}",{message:l.message}))}finally{L.current===t&&(L.current=null,_(!1),F(null))}},children:s("subtitle_playground_run","\u8fd0\u884c\u6d4b\u8bd5")}),(0,Je.jsx)(Eb,{variant:"outlined",color:"warning",startIcon:(0,Je.jsx)(KT.A,{}),disabled:!E,onClick:()=>{var e;return null===(e=L.current)||void 0===e?void 0:e.abort()},children:s("cancel","\u53d6\u6d88")})]}),E&&C&&(0,Je.jsxs)(st,{sx:{mt:1,width:"100%"},"data-testid":"segmentation-progress",children:[(0,Je.jsx)(kT,{variant:"determinate",value:100*C.completed/Math.max(1,C.total)}),(0,Je.jsx)(gf,{variant:"caption",color:"text.secondary",children:wj(s,"subtitle_playground_progress","\u6b63\u5728\u5904\u7406 Chunk {completed}/{total}",C)})]})]})]}),(0,Je.jsxs)(st,{sx:{display:"grid",gridTemplateColumns:{xs:"minmax(0, 1fr)",md:"repeat(2, minmax(0, 1fr))"},gap:2,alignItems:"start"},children:[(0,Je.jsxs)(st,{sx:{minWidth:0},children:[(0,Je.jsx)(gf,{variant:"subtitle2",gutterBottom:!0,children:s("subtitle_playground_source_json","\u539f\u59cb\u5b57\u5e55 JSON")}),(0,Je.jsx)(hb,{fullWidth:!0,multiline:!0,rows:5,value:y,InputProps:{readOnly:!0},inputProps:{"aria-label":s("subtitle_playground_source_json","\u539f\u59cb\u5b57\u5e55 JSON")},sx:kj})]}),(0,Je.jsxs)(st,{sx:{minWidth:0},children:[(0,Je.jsx)(gf,{variant:"subtitle2",gutterBottom:!0,children:s("subtitle_playground_result","\u65ad\u53e5\u7ed3\u679c")}),(0,Je.jsxs)(st,{sx:{position:"relative"},children:[(0,Je.jsx)(hb,{fullWidth:!0,multiline:!0,rows:5,value:K,InputProps:{readOnly:!0},inputProps:{"aria-label":s("subtitle_playground_result","\u65ad\u53e5\u7ed3\u679c")},sx:kj}),(0,Je.jsxs)(vm,{direction:"row",spacing:.5,alignItems:"center",sx:{position:"absolute",zIndex:1,top:8,right:8,p:.25,borderRadius:1,bgcolor:"background.paper",boxShadow:1},children:[(0,Je.jsxs)(HT,{exclusive:!0,size:"small",value:w,onChange:(e,t)=>t&&S(t),children:[(0,Je.jsx)(OT,{value:"json",children:"JSON"}),(0,Je.jsx)(OT,{value:"vtt",children:"VTT"})]}),(0,Je.jsx)(Eb,{size:"small",startIcon:(0,Je.jsx)(GT.A,{}),disabled:!x,onClick:()=>{if(!K)return;const e=(new Date).toISOString().replace(/[:.]/g,"-");(0,_s.Qv)(K,"".concat(p,"-").concat(O,"-").concat(e,".").concat(w))},children:s("subtitle_playground_download","\u4e0b\u8f7d")})]})]})]})]}),D&&!E&&(0,Je.jsxs)(qa,{variant:"outlined",sx:{p:2},children:[(0,Je.jsx)(gf,{variant:"subtitle1",gutterBottom:!0,children:s("subtitle_playground_stats_title","\u65ad\u53e5\u7edf\u8ba1\u4fe1\u606f")}),(0,Je.jsx)(kx,{container:!0,spacing:1.5,children:[[s("subtitle_playground_metric_processing","\u5904\u7406\u8017\u65f6"),"".concat(D.processingMs,"ms")],[s("subtitle_playground_metric_raw_events","\u539f\u59cb\u4e8b\u4ef6"),D.rawEventCount],[s("subtitle_playground_metric_canonical_events","\u89c4\u8303\u5316\u4e8b\u4ef6"),D.canonicalEventCount],[s("subtitle_playground_metric_flat_events","Flat Events"),D.flatEventCount],[s("subtitle_playground_metric_filtered_non_speech","\u5df2\u8fc7\u6ee4\u975e\u8bed\u97f3\u7247\u6bb5"),D.filteredNonSpeechCount],[s("subtitle_playground_metric_cues","\u5b57\u5e55\u6761\u76ee"),D.cueCount],[s("subtitle_playground_metric_source_duration","\u6e90\u65f6\u95f4\u8de8\u5ea6"),"".concat(D.sourceDurationMs,"ms")],[s("subtitle_playground_metric_covered_duration","\u8986\u76d6\u65f6\u957f"),"".concat(D.coveredDurationMs,"ms")],[s("subtitle_playground_metric_text_coverage","\u6587\u672c\u8986\u76d6\u7387"),"".concat(D.textCoveragePercent,"%")],[s("subtitle_playground_metric_empty_cues","\u7a7a\u5b57\u5e55"),D.emptyCueCount],[s("subtitle_playground_metric_invalid_cues","\u65e0\u6548\u5b57\u5e55"),D.invalidCueCount],[s("subtitle_playground_metric_overlaps","\u65f6\u95f4\u91cd\u53e0"),D.overlapCount],[s("subtitle_playground_metric_non_monotonic","\u65f6\u95f4\u5012\u9000"),D.nonMonotonicCount],[s("subtitle_playground_metric_missing_text","\u6587\u672c\u9057\u6f0f"),D.missingTextCount],[s("subtitle_playground_metric_duplicated_text","\u6587\u672c\u91cd\u590d"),D.duplicatedTextCount],[s("subtitle_playground_metric_avg_chars","\u5e73\u5747\u5b57\u7b26"),D.chars.average],[s("subtitle_playground_metric_p95_chars","P95 \u5b57\u7b26"),D.chars.p95],[s("subtitle_playground_metric_max_chars","\u6700\u5927\u5b57\u7b26"),D.chars.max],[s("subtitle_playground_metric_avg_words","\u5e73\u5747\u8bcd\u6570"),D.words.average],[s("subtitle_playground_metric_p95_words","P95 \u8bcd\u6570"),D.words.p95],[s("subtitle_playground_metric_max_words","\u6700\u5927\u8bcd\u6570"),D.words.max],[s("subtitle_playground_metric_avg_duration","\u5e73\u5747\u65f6\u957f"),"".concat(D.durationMs.average,"ms")],[s("subtitle_playground_metric_p95_duration","P95 \u65f6\u957f"),"".concat(D.durationMs.p95,"ms")],[s("subtitle_playground_metric_max_duration","\u6700\u5927\u65f6\u957f"),"".concat(D.durationMs.max,"ms")]].map(e=>{let[t,n]=e;return(0,Je.jsxs)(kx,{item:!0,xs:6,sm:4,md:2,children:[(0,Je.jsx)(gf,{variant:"caption",color:"text.secondary",children:t}),(0,Je.jsx)(gf,{variant:"body1",children:String(n)})]},t)})}),D.errors.length>0&&(0,Je.jsx)(Xi,{severity:"error",sx:{mt:2},children:wj(s,"subtitle_playground_structure_error","\u7ed3\u6784\u9519\u8bef\uff1a{errors}",{errors:D.errors.join(", ")})}),Object.values(D.warnings).some(Boolean)&&(0,Je.jsx)(Xi,{severity:"warning",sx:{mt:2},children:wj(s,"subtitle_playground_readability_warning","\u53ef\u8bfb\u6027\u8b66\u544a\uff1a\u8d85\u957f\u6587\u672c {longText}\uff0c\u8d85\u8fc7 10 \u79d2 {longDuration}\uff0c\u77ed\u788e\u7247 {fragments}\uff0c\u6cc4\u6f0f\u7684\u975e\u8bed\u97f3\u5b57\u5e55 {nonSpeech}",{longText:D.warnings.tooLongTextCount,longDuration:D.warnings.tooLongDurationCount,fragments:D.warnings.fragmentCount,nonSpeech:D.warnings.nonSpeechCueCount})}),D.ai&&(0,Je.jsx)(gf,{variant:"body2",sx:{mt:1},children:wj(s,"subtitle_playground_ai_stats","AI\uff1a\u534f\u8bae {protocol}\uff0cChunk {chunks}\uff0c\u8bf7\u6c42 {requests}\uff0c\u91cd\u8bd5 {retries}\uff0c\u964d\u7ea7\u5b57\u5e55 {fallbacks}\uff0c\u65e0\u6548\u54cd\u5e94 {invalid}",{protocol:D.ai.protocol,chunks:D.ai.chunkCount,requests:D.ai.requestCount,retries:D.ai.retryCount,fallbacks:D.ai.fallbackCueCount,invalid:D.ai.invalidResponseCount})})]})]})}function Cj(){const[e,t]=(0,a.useState)(""),[n,r]=(0,a.useState)("translation"),[o,i]=(0,a.useState)(!1),s=Hf(),{setting:l}=Rf(),{transApis:u,langDetector:c,tranboxSetting:d,prompts:p,subtitleSetting:h}=l||Qi.la7,f=(0,a.useMemo)(()=>(0,Qi.Pco)(u,p,h),[p,h,u]),m=(0,a.useMemo)(()=>o?(e=>String(null!==e&&void 0!==e?e:"").replace(/\r\n?|\n/g,"\n").replace(/[\t ]*(\n(?:[\t ]*\n)*)[\t ]*/g,(e,t)=>t.split("\n").length>2?"\n\n":" "))(e):e,[o,e]),{apiSlugs:g,fromLang:v,toLang:y,toLang2:b,enDict:x,enSug:A,aiDictApiSlug:D,aiDictPromptSlug:k}=d||Qi.Azs;return(0,Je.jsxs)(st,{children:[(0,Je.jsxs)(vA,{value:n,onChange:(e,t)=>r(t),sx:{mb:2},children:[(0,Je.jsx)(DA,{value:"translation",label:s("playground_text_translation","\u6587\u672c\u7ffb\u8bd1")}),(0,Je.jsx)(DA,{value:"segmentation",label:s("subtitle_segmentation","\u5b57\u5e55\u65ad\u53e5")})]}),"translation"===n&&(0,Je.jsxs)(Je.Fragment,{children:[(0,Je.jsx)(Fx,{control:(0,Je.jsx)(Hx,{size:"small",checked:o,onChange:e=>i(e.target.checked)}),label:s("playground_merge_single_line_breaks","\u5408\u5e76\u5355\u4e2a\u6362\u884c\uff08\u4fdd\u7559\u6bb5\u843d\uff09"),sx:{width:"fit-content",ml:0,mb:2}}),(0,Je.jsx)(ZF,{text:e,translationText:m,setText:t,apiSlugs:g,fromLang:v,toLang:y,toLang2:b,transApis:f,simpleStyle:!1,langDetector:c,enDict:x,enSug:A,aiDictApiSlug:D,aiDictPromptSlug:k,prompts:p,isPlaygound:!0})]}),"segmentation"===n&&(0,Je.jsx)(_j,{subtitleSetting:h,transApis:f,prompts:p})]})}function Fj(){const e=Hf(),{mouseHoverSetting:t,updateMouseHoverSetting:n}=function(){const{setting:e,updateChild:t}=Rf();return{mouseHoverSetting:(null===e||void 0===e?void 0:e.mouseHoverSetting)||Qi.wJ4,updateMouseHoverSetting:t("mouseHoverSetting")}}(),r=(0,a.useCallback)(e=>{n({mouseHoverKey:e})},[n]),o=(0,a.useCallback)(e=>{n({mouseHoverKey2:e})},[n]),i=(0,a.useCallback)(e=>{const{value:t}=e.target;n({blacklist:t})},[n]),s=(0,a.useCallback)(e=>{n({displayMode:e.target.value})},[n]),l=(0,a.useCallback)(e=>{n({bubbleStyle:e.target.value})},[n]),{useMouseHover:u=!0,mouseHoverKey:c=Qi.YBK,mouseHoverKey2:d=[],blacklist:p="",displayMode:h=Qi.CQR,bubbleStyle:f=Qi.ya_}=t;return(0,Je.jsx)(st,{children:(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsx)(Fx,{control:(0,Je.jsx)(Hx,{size:"small",name:"useMouseHover",checked:u,onChange:()=>{n({useMouseHover:!u})}}),label:e("use_mousehover_translation"),sx:{width:"fit-content"}}),(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:4,lg:4,children:(0,Je.jsx)(Xk,{value:c,onChange:r,label:e("trigger_trans_shortcut"),helperText:e("mousehover_key_help")})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:4,lg:4,children:(0,Je.jsx)(Xk,{value:d,onChange:o,label:"".concat(e("trigger_trans_shortcut")," (Alternative)"),helperText:e("mousehover_key_help")})})]})}),(0,Je.jsx)(st,{children:(0,Je.jsx)(kx,{container:!0,spacing:2,columns:12,children:(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:4,lg:4,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"displayMode",value:h,label:e("mousehover_display_mode"),onChange:s,children:[(0,Je.jsx)(dx,{value:Qi.CQR,children:e("mousehover_display_bilingual")}),(0,Je.jsx)(dx,{value:Qi.H74,children:e("mousehover_display_bubble")})]})})})}),h===Qi.H74&&(0,Je.jsx)(hb,{size:"small",label:e("mousehover_bubble_style"),helperText:e("mousehover_bubble_style_helper"),name:"bubbleStyle",value:f,onChange:l,maxRows:12,multiline:!0}),(0,Je.jsx)(hb,{size:"small",label:e("blacklist"),helperText:e("pattern_helper"),name:"blacklist",value:p,onChange:i,maxRows:10,multiline:!0})]})})}var Tj=n(2577);const jj={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",whiteSpace:"nowrap",width:"1px"};const zj=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:(e,t)=>e===t;return e.length===t.length&&e.every((e,r)=>n(e,t[r]))};function Ij(e,t){return e-t}function Lj(e,t){var n;const{index:r}=null!=(n=e.reduce((e,n,r)=>{const o=Math.abs(t-n);return null===e||o({left:"".concat(e,"%")}),leap:e=>({width:"".concat(e,"%")})},"horizontal-reverse":{offset:e=>({right:"".concat(e,"%")}),leap:e=>({width:"".concat(e,"%")})},vertical:{offset:e=>({bottom:"".concat(e,"%")}),leap:e=>({height:"".concat(e,"%")})}},Uj=e=>e;let Vj;function Hj(){return void 0===Vj&&(Vj="undefined"===typeof CSS||"function"!==typeof CSS.supports||CSS.supports("touch-action","none")),Vj}function Gj(e){const{"aria-labelledby":t,defaultValue:n,disabled:r=!1,disableSwap:o=!1,isRtl:i=!1,marks:s=!1,max:l=100,min:u=0,name:c,onChange:d,onChangeCommitted:p,orientation:h="horizontal",rootRef:f,scale:m=Uj,step:g=1,shiftStep:v=10,tabIndex:y,value:b}=e,x=a.useRef(void 0),[A,D]=a.useState(-1),[k,w]=a.useState(-1),[S,E]=a.useState(!1),_=a.useRef(0),[C,F]=(0,nC.A)({controlled:b,default:null!=n?n:u,name:"Slider"}),T=d&&((e,t,n)=>{const r=e.nativeEvent||e,o=new r.constructor(r.type,r);Object.defineProperty(o,"target",{writable:!0,value:{value:t,name:c}}),d(o,t,n)}),j=Array.isArray(C);let z=j?C.slice().sort(Ij):[C];z=z.map(e=>null==e?u:(0,wT.A)(e,u,l));const I=!0===s&&null!==g?[...Array(Math.floor((l-u)/g)+1)].map((e,t)=>({value:u+g*t})):s||[],L=I.map(e=>e.value),{isFocusVisibleRef:P,onBlur:R,onFocus:N,ref:O}=(0,Tj.A)(),[B,M]=a.useState(-1),W=a.useRef(null),U=(0,ja.A)(O,W),V=(0,ja.A)(f,U),H=e=>t=>{var n;const r=Number(t.currentTarget.getAttribute("data-index"));N(t),!0===P.current&&M(r),w(r),null==e||null==(n=e.onFocus)||n.call(e,t)},G=e=>t=>{var n;R(t),!1===P.current&&M(-1),w(-1),null==e||null==(n=e.onBlur)||n.call(e,t)},q=(e,t)=>{const n=Number(e.currentTarget.getAttribute("data-index")),r=z[n],a=L.indexOf(r);let i=t;if(I&&null==g){const e=L[L.length-1];i=i>e?e:it=>{var n;if(null!==g){const e=Number(t.currentTarget.getAttribute("data-index")),n=z[e];let r=null;("ArrowLeft"===t.key||"ArrowDown"===t.key)&&t.shiftKey||"PageDown"===t.key?r=Math.max(n-v,u):(("ArrowRight"===t.key||"ArrowUp"===t.key)&&t.shiftKey||"PageUp"===t.key)&&(r=Math.min(n+v,l)),null!==r&&(q(t,r),t.preventDefault())}null==e||null==(n=e.onKeyDown)||n.call(e,t)};(0,Dm.A)(()=>{var e;r&&W.current.contains(document.activeElement)&&(null==(e=document.activeElement)||e.blur())},[r]),r&&-1!==A&&D(-1),r&&-1!==B&&M(-1);const $=a.useRef(void 0);let Y=h;i&&"horizontal"===h&&(Y+="-reverse");const X=e=>{let{finger:t,move:n=!1}=e;const{current:r}=W,{width:a,height:i,bottom:s,left:c}=r.getBoundingClientRect();let d,p;if(d=0===Y.indexOf("vertical")?(s-t.y)/i:(t.x-c)/a,-1!==Y.indexOf("-reverse")&&(d=1-d),p=function(e,t,n){return(n-t)*e+t}(d,u,l),g)p=Nj(p,g,u);else{const e=Lj(L,p);p=L[e]}p=(0,wT.A)(p,u,l);let h=0;if(j){h=n?$.current:Lj(z,p),o&&(p=(0,wT.A)(p,z[h-1]||-1/0,z[h+1]||1/0));const e=p;p=Oj({values:z,newValue:p,index:h}),o&&n||(h=p.indexOf(e),$.current=h)}return{newValue:p,activeIndex:h}},Q=(0,Am.A)(e=>{const t=Pj(e,x);if(!t)return;if(_.current+=1,"mousemove"===e.type&&0===e.buttons)return void J(e);const{newValue:n,activeIndex:r}=X({finger:t,move:!0});Bj({sliderRef:W,activeIndex:r,setActive:D}),F(n),!S&&_.current>2&&E(!0),T&&!Mj(n,C)&&T(e,n,r)}),J=(0,Am.A)(e=>{const t=Pj(e,x);if(E(!1),!t)return;const{newValue:n}=X({finger:t,move:!0});D(-1),"touchend"===e.type&&w(-1),p&&p(e,n),x.current=void 0,ee()}),Z=(0,Am.A)(e=>{if(r)return;Hj()||e.preventDefault();const t=e.changedTouches[0];null!=t&&(x.current=t.identifier);const n=Pj(e,x);if(!1!==n){const{newValue:t,activeIndex:r}=X({finger:n});Bj({sliderRef:W,activeIndex:r,setActive:D}),F(t),T&&!Mj(t,C)&&T(e,t,r)}_.current=0;const o=(0,Pv.A)(W.current);o.addEventListener("touchmove",Q,{passive:!0}),o.addEventListener("touchend",J,{passive:!0})}),ee=a.useCallback(()=>{const e=(0,Pv.A)(W.current);e.removeEventListener("mousemove",Q),e.removeEventListener("mouseup",J),e.removeEventListener("touchmove",Q),e.removeEventListener("touchend",J)},[J,Q]);a.useEffect(()=>{const{current:e}=W;return e.addEventListener("touchstart",Z,{passive:Hj()}),()=>{e.removeEventListener("touchstart",Z),ee()}},[ee,Z]),a.useEffect(()=>{r&&ee()},[r,ee]);const te=Rj(j?z[0]:u,u,l),ne=Rj(z[z.length-1],u,l)-te,re=e=>t=>{var n;null==(n=e.onMouseLeave)||n.call(e,t),w(-1)};return{active:A,axis:Y,axisProps:Wj,dragging:S,focusedThumbIndex:B,getHiddenInputProps:function(){let n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};var o;const a=Pa(n),s={onChange:(d=a||{},e=>{var t;null==(t=d.onChange)||t.call(d,e),q(e,e.target.valueAsNumber)}),onFocus:H(a||{}),onBlur:G(a||{}),onKeyDown:K(a||{})};var d;const p=(0,We.A)({},a,s);return(0,We.A)({tabIndex:y,"aria-labelledby":t,"aria-orientation":h,"aria-valuemax":m(l),"aria-valuemin":m(u),name:c,type:"range",min:e.min,max:e.max,step:null===e.step&&e.marks?"any":null!=(o=e.step)?o:void 0,disabled:r},n,p,{style:(0,We.A)({},jj,{direction:i?"rtl":"ltr",width:"100%",height:"100%"})})},getRootProps:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Pa(e),n={onMouseDown:(o=t||{},e=>{var t;if(null==(t=o.onMouseDown)||t.call(o,e),r)return;if(e.defaultPrevented)return;if(0!==e.button)return;e.preventDefault();const n=Pj(e,x);if(!1!==n){const{newValue:t,activeIndex:r}=X({finger:n});Bj({sliderRef:W,activeIndex:r,setActive:D}),F(t),T&&!Mj(t,C)&&T(e,t,r)}_.current=0;const a=(0,Pv.A)(W.current);a.addEventListener("mousemove",Q,{passive:!0}),a.addEventListener("mouseup",J)})};var o;const a=(0,We.A)({},t,n);return(0,We.A)({},e,{ref:V},a)},getThumbProps:function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Pa(e),n={onMouseOver:(r=t||{},e=>{var t;null==(t=r.onMouseOver)||t.call(r,e);const n=Number(e.currentTarget.getAttribute("data-index"));w(n)}),onMouseLeave:re(t||{})};var r;return(0,We.A)({},e,t,n)},marks:I,open:k,range:j,rootRef:V,trackLeap:ne,trackOffset:te,values:z,getThumbStyle:e=>({pointerEvents:-1!==A&&A!==e?"none":void 0})}}const qj=e=>!e||!za(e);function Kj(e){return(0,ft.Ay)("MuiSlider",e)}const $j=(0,rt.A)("MuiSlider",["root","active","colorPrimary","colorSecondary","colorError","colorInfo","colorSuccess","colorWarning","disabled","dragging","focusVisible","mark","markActive","marked","markLabel","markLabelActive","rail","sizeSmall","thumb","thumbColorPrimary","thumbColorSecondary","thumbColorError","thumbColorSuccess","thumbColorInfo","thumbColorWarning","track","trackInverted","trackFalse","thumbSizeSmall","valueLabel","valueLabelOpen","valueLabelCircle","valueLabelLabel","vertical"]);const Yj=["aria-label","aria-valuetext","aria-labelledby","component","components","componentsProps","color","classes","className","disableSwap","disabled","getAriaLabel","getAriaValueText","marks","max","min","name","onChange","onChangeCommitted","orientation","shiftStep","size","step","scale","slotProps","slots","tabIndex","track","value","valueLabelDisplay","valueLabelFormat"];function Xj(e){return e}const Qj=(0,ht.Ay)("span",{name:"MuiSlider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["color".concat((0,dt.A)(n.color))],"medium"!==n.size&&t["size".concat((0,dt.A)(n.size))],n.marked&&t.marked,"vertical"===n.orientation&&t.vertical,"inverted"===n.track&&t.trackInverted,!1===n.track&&t.trackFalse]}})(e=>{let{theme:t}=e;var n;return{borderRadius:12,boxSizing:"content-box",display:"inline-block",position:"relative",cursor:"pointer",touchAction:"none",WebkitTapHighlightColor:"transparent","@media print":{colorAdjust:"exact"},["&.".concat($j.disabled)]:{pointerEvents:"none",cursor:"default",color:(t.vars||t).palette.grey[400]},["&.".concat($j.dragging)]:{["& .".concat($j.thumb,", & .").concat($j.track)]:{transition:"none"}},variants:[...Object.keys((null!=(n=t.vars)?n:t).palette).filter(e=>{var n;return(null!=(n=t.vars)?n:t).palette[e].main}).map(e=>({props:{color:e},style:{color:(t.vars||t).palette[e].main}})),{props:{orientation:"horizontal"},style:{height:4,width:"100%",padding:"13px 0","@media (pointer: coarse)":{padding:"20px 0"}}},{props:{orientation:"horizontal",size:"small"},style:{height:2}},{props:{orientation:"horizontal",marked:!0},style:{marginBottom:20}},{props:{orientation:"vertical"},style:{height:"100%",width:4,padding:"0 13px","@media (pointer: coarse)":{padding:"0 20px"}}},{props:{orientation:"vertical",size:"small"},style:{width:2}},{props:{orientation:"vertical",marked:!0},style:{marginRight:44}}]}}),Jj=(0,ht.Ay)("span",{name:"MuiSlider",slot:"Rail",overridesResolver:(e,t)=>t.rail})({display:"block",position:"absolute",borderRadius:"inherit",backgroundColor:"currentColor",opacity:.38,variants:[{props:{orientation:"horizontal"},style:{width:"100%",height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{height:"100%",width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:"inverted"},style:{opacity:1}}]}),Zj=(0,ht.Ay)("span",{name:"MuiSlider",slot:"Track",overridesResolver:(e,t)=>t.track})(e=>{let{theme:t}=e;var n;return{display:"block",position:"absolute",borderRadius:"inherit",border:"1px solid currentColor",backgroundColor:"currentColor",transition:t.transitions.create(["left","width","bottom","height"],{duration:t.transitions.duration.shortest}),variants:[{props:{size:"small"},style:{border:"none"}},{props:{orientation:"horizontal"},style:{height:"inherit",top:"50%",transform:"translateY(-50%)"}},{props:{orientation:"vertical"},style:{width:"inherit",left:"50%",transform:"translateX(-50%)"}},{props:{track:!1},style:{display:"none"}},...Object.keys((null!=(n=t.vars)?n:t).palette).filter(e=>{var n;return(null!=(n=t.vars)?n:t).palette[e].main}).map(e=>({props:{color:e,track:"inverted"},style:(0,We.A)({},t.vars?{backgroundColor:t.vars.palette.Slider["".concat(e,"Track")],borderColor:t.vars.palette.Slider["".concat(e,"Track")]}:(0,We.A)({backgroundColor:(0,Ta.a)(t.palette[e].main,.62),borderColor:(0,Ta.a)(t.palette[e].main,.62)},t.applyStyles("dark",{backgroundColor:(0,Ta.e$)(t.palette[e].main,.5)}),t.applyStyles("dark",{borderColor:(0,Ta.e$)(t.palette[e].main,.5)})))}))]}}),ez=(0,ht.Ay)("span",{name:"MuiSlider",slot:"Thumb",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.thumb,t["thumbColor".concat((0,dt.A)(n.color))],"medium"!==n.size&&t["thumbSize".concat((0,dt.A)(n.size))]]}})(e=>{let{theme:t}=e;var n;return{position:"absolute",width:20,height:20,boxSizing:"border-box",borderRadius:"50%",outline:0,backgroundColor:"currentColor",display:"flex",alignItems:"center",justifyContent:"center",transition:t.transitions.create(["box-shadow","left","bottom"],{duration:t.transitions.duration.shortest}),"&::before":{position:"absolute",content:'""',borderRadius:"inherit",width:"100%",height:"100%",boxShadow:(t.vars||t).shadows[2]},"&::after":{position:"absolute",content:'""',borderRadius:"50%",width:42,height:42,top:"50%",left:"50%",transform:"translate(-50%, -50%)"},["&.".concat($j.disabled)]:{"&:hover":{boxShadow:"none"}},variants:[{props:{size:"small"},style:{width:12,height:12,"&::before":{boxShadow:"none"}}},{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-50%, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 50%)"}},...Object.keys((null!=(n=t.vars)?n:t).palette).filter(e=>{var n;return(null!=(n=t.vars)?n:t).palette[e].main}).map(e=>({props:{color:e},style:{["&:hover, &.".concat($j.focusVisible)]:(0,We.A)({},t.vars?{boxShadow:"0px 0px 0px 8px rgba(".concat(t.vars.palette[e].mainChannel," / 0.16)")}:{boxShadow:"0px 0px 0px 8px ".concat((0,Ta.X4)(t.palette[e].main,.16))},{"@media (hover: none)":{boxShadow:"none"}}),["&.".concat($j.active)]:(0,We.A)({},t.vars?{boxShadow:"0px 0px 0px 14px rgba(".concat(t.vars.palette[e].mainChannel," / 0.16)")}:{boxShadow:"0px 0px 0px 14px ".concat((0,Ta.X4)(t.palette[e].main,.16))})}}))]}}),tz=(0,ht.Ay)(function(e){const{children:t,className:n,value:r}=e,o=(e=>{const{open:t}=e;return{offset:(0,Ve.A)(t&&$j.valueLabelOpen),circle:$j.valueLabelCircle,label:$j.valueLabelLabel}})(e);return t?a.cloneElement(t,{className:(0,Ve.A)(t.props.className)},(0,Je.jsxs)(a.Fragment,{children:[t.props.children,(0,Je.jsx)("span",{className:(0,Ve.A)(o.offset,n),"aria-hidden":!0,children:(0,Je.jsx)("span",{className:o.circle,children:(0,Je.jsx)("span",{className:o.label,children:r})})})]})):null},{name:"MuiSlider",slot:"ValueLabel",overridesResolver:(e,t)=>t.valueLabel})(e=>{let{theme:t}=e;return(0,We.A)({zIndex:1,whiteSpace:"nowrap"},t.typography.body2,{fontWeight:500,transition:t.transitions.create(["transform"],{duration:t.transitions.duration.shortest}),position:"absolute",backgroundColor:(t.vars||t).palette.grey[600],borderRadius:2,color:(t.vars||t).palette.common.white,display:"flex",alignItems:"center",justifyContent:"center",padding:"0.25rem 0.75rem",variants:[{props:{orientation:"horizontal"},style:{transform:"translateY(-100%) scale(0)",top:"-10px",transformOrigin:"bottom center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, 50%) rotate(45deg)",backgroundColor:"inherit",bottom:0,left:"50%"},["&.".concat($j.valueLabelOpen)]:{transform:"translateY(-100%) scale(1)"}}},{props:{orientation:"vertical"},style:{transform:"translateY(-50%) scale(0)",right:"30px",top:"50%",transformOrigin:"right center","&::before":{position:"absolute",content:'""',width:8,height:8,transform:"translate(-50%, -50%) rotate(45deg)",backgroundColor:"inherit",right:-8,top:"50%"},["&.".concat($j.valueLabelOpen)]:{transform:"translateY(-50%) scale(1)"}}},{props:{size:"small"},style:{fontSize:t.typography.pxToRem(12),padding:"0.25rem 0.5rem"}},{props:{orientation:"vertical",size:"small"},style:{right:"20px"}}]})}),nz=(0,ht.Ay)("span",{name:"MuiSlider",slot:"Mark",shouldForwardProp:e=>(0,My.A)(e)&&"markActive"!==e,overridesResolver:(e,t)=>{const{markActive:n}=e;return[t.mark,n&&t.markActive]}})(e=>{let{theme:t}=e;return{position:"absolute",width:2,height:2,borderRadius:1,backgroundColor:"currentColor",variants:[{props:{orientation:"horizontal"},style:{top:"50%",transform:"translate(-1px, -50%)"}},{props:{orientation:"vertical"},style:{left:"50%",transform:"translate(-50%, 1px)"}},{props:{markActive:!0},style:{backgroundColor:(t.vars||t).palette.background.paper,opacity:.8}}]}}),rz=(0,ht.Ay)("span",{name:"MuiSlider",slot:"MarkLabel",shouldForwardProp:e=>(0,My.A)(e)&&"markLabelActive"!==e,overridesResolver:(e,t)=>t.markLabel})(e=>{let{theme:t}=e;return(0,We.A)({},t.typography.body2,{color:(t.vars||t).palette.text.secondary,position:"absolute",whiteSpace:"nowrap",variants:[{props:{orientation:"horizontal"},style:{top:30,transform:"translateX(-50%)","@media (pointer: coarse)":{top:40}}},{props:{orientation:"vertical"},style:{left:36,transform:"translateY(50%)","@media (pointer: coarse)":{left:44}}},{props:{markLabelActive:!0},style:{color:(t.vars||t).palette.text.primary}}]})}),oz=e=>{let{children:t}=e;return t},az=a.forwardRef(function(e,t){var n,r,o,i,s,l,u,c,d,p,h,f,m,g,v,y,b,x,A,D,k,w,S,E;const _=(0,pt.b)({props:e,name:"MuiSlider"}),C=Qg(),{"aria-label":F,"aria-valuetext":T,"aria-labelledby":j,component:z="span",components:I={},componentsProps:L={},color:P="primary",classes:R,className:N,disableSwap:O=!1,disabled:B=!1,getAriaLabel:M,getAriaValueText:W,marks:U=!1,max:V=100,min:H=0,orientation:G="horizontal",shiftStep:q=10,size:K="medium",step:$=1,scale:Y=Xj,slotProps:X,slots:Q,track:J="normal",valueLabelDisplay:Z="off",valueLabelFormat:ee=Xj}=_,te=(0,Ue.A)(_,Yj),ne=(0,We.A)({},_,{isRtl:C,max:V,min:H,classes:R,disabled:B,disableSwap:O,orientation:G,marks:U,color:P,size:K,step:$,shiftStep:q,scale:Y,track:J,valueLabelDisplay:Z,valueLabelFormat:ee}),{axisProps:re,getRootProps:oe,getHiddenInputProps:ae,getThumbProps:ie,open:se,active:le,axis:ue,focusedThumbIndex:ce,range:de,dragging:pe,marks:he,values:fe,trackOffset:me,trackLeap:ge,getThumbStyle:ve}=Gj((0,We.A)({},ne,{rootRef:t}));ne.marked=he.length>0&&he.some(e=>e.label),ne.dragging=pe,ne.focusedThumbIndex=ce;const ye=(e=>{const{disabled:t,dragging:n,marked:r,orientation:o,track:a,classes:i,color:s,size:l}=e,u={root:["root",t&&"disabled",n&&"dragging",r&&"marked","vertical"===o&&"vertical","inverted"===a&&"trackInverted",!1===a&&"trackFalse",s&&"color".concat((0,dt.A)(s)),l&&"size".concat((0,dt.A)(l))],rail:["rail"],track:["track"],mark:["mark"],markActive:["markActive"],markLabel:["markLabel"],markLabelActive:["markLabelActive"],valueLabel:["valueLabel"],thumb:["thumb",t&&"disabled",l&&"thumbSize".concat((0,dt.A)(l)),s&&"thumbColor".concat((0,dt.A)(s))],active:["active"],disabled:["disabled"],focusVisible:["focusVisible"]};return(0,ut.A)(u,Kj,i)})(ne),be=null!=(n=null!=(r=null==Q?void 0:Q.root)?r:I.Root)?n:Qj,xe=null!=(o=null!=(i=null==Q?void 0:Q.rail)?i:I.Rail)?o:Jj,Ae=null!=(s=null!=(l=null==Q?void 0:Q.track)?l:I.Track)?s:Zj,De=null!=(u=null!=(c=null==Q?void 0:Q.thumb)?c:I.Thumb)?u:ez,ke=null!=(d=null!=(p=null==Q?void 0:Q.valueLabel)?p:I.ValueLabel)?d:tz,we=null!=(h=null!=(f=null==Q?void 0:Q.mark)?f:I.Mark)?h:nz,Se=null!=(m=null!=(g=null==Q?void 0:Q.markLabel)?g:I.MarkLabel)?m:rz,Ee=null!=(v=null!=(y=null==Q?void 0:Q.input)?y:I.Input)?v:"input",_e=null!=(b=null==X?void 0:X.root)?b:L.root,Ce=null!=(x=null==X?void 0:X.rail)?x:L.rail,Fe=null!=(A=null==X?void 0:X.track)?A:L.track,Te=null!=(D=null==X?void 0:X.thumb)?D:L.thumb,je=null!=(k=null==X?void 0:X.valueLabel)?k:L.valueLabel,ze=null!=(w=null==X?void 0:X.mark)?w:L.mark,Ie=null!=(S=null==X?void 0:X.markLabel)?S:L.markLabel,Le=null!=(E=null==X?void 0:X.input)?E:L.input,Pe=ev({elementType:be,getSlotProps:oe,externalSlotProps:_e,externalForwardedProps:te,additionalProps:(0,We.A)({},qj(be)&&{as:z}),ownerState:(0,We.A)({},ne,null==_e?void 0:_e.ownerState),className:[ye.root,N]}),Re=ev({elementType:xe,externalSlotProps:Ce,ownerState:ne,className:ye.rail}),Ne=ev({elementType:Ae,externalSlotProps:Fe,additionalProps:{style:(0,We.A)({},re[ue].offset(me),re[ue].leap(ge))},ownerState:(0,We.A)({},ne,null==Fe?void 0:Fe.ownerState),className:ye.track}),Oe=ev({elementType:De,getSlotProps:ie,externalSlotProps:Te,ownerState:(0,We.A)({},ne,null==Te?void 0:Te.ownerState),className:ye.thumb}),Be=ev({elementType:ke,externalSlotProps:je,ownerState:(0,We.A)({},ne,null==je?void 0:je.ownerState),className:ye.valueLabel}),Me=ev({elementType:we,externalSlotProps:ze,ownerState:ne,className:ye.mark}),He=ev({elementType:Se,externalSlotProps:Ie,ownerState:ne,className:ye.markLabel}),Ge=ev({elementType:Ee,getSlotProps:ae,externalSlotProps:Le,ownerState:ne});return(0,Je.jsxs)(be,(0,We.A)({},Pe,{children:[(0,Je.jsx)(xe,(0,We.A)({},Re)),(0,Je.jsx)(Ae,(0,We.A)({},Ne)),he.filter(e=>e.value>=H&&e.value<=V).map((e,t)=>{const n=Rj(e.value,H,V),r=re[ue].offset(n);let o;return o=!1===J?-1!==fe.indexOf(e.value):"normal"===J&&(de?e.value>=fe[0]&&e.value<=fe[fe.length-1]:e.value<=fe[0])||"inverted"===J&&(de?e.value<=fe[0]||e.value>=fe[fe.length-1]:e.value>=fe[0]),(0,Je.jsxs)(a.Fragment,{children:[(0,Je.jsx)(we,(0,We.A)({"data-index":t},Me,!za(we)&&{markActive:o},{style:(0,We.A)({},r,Me.style),className:(0,Ve.A)(Me.className,o&&ye.markActive)})),null!=e.label?(0,Je.jsx)(Se,(0,We.A)({"aria-hidden":!0,"data-index":t},He,!za(Se)&&{markLabelActive:o},{style:(0,We.A)({},r,He.style),className:(0,Ve.A)(ye.markLabel,He.className,o&&ye.markLabelActive),children:e.label})):null]},t)}),fe.map((e,t)=>{const n=Rj(e,H,V),r=re[ue].offset(n),o="off"===Z?oz:ke;return(0,Je.jsx)(o,(0,We.A)({},!za(o)&&{valueLabelFormat:ee,valueLabelDisplay:Z,value:"function"===typeof ee?ee(Y(e),t):ee,index:t,open:se===t||le===t||"on"===Z,disabled:B},Be,{children:(0,Je.jsx)(De,(0,We.A)({"data-index":t},Oe,{className:(0,Ve.A)(ye.thumb,Oe.className,le===t&&ye.active,ce===t&&ye.focusVisible),style:(0,We.A)({},r,ve(t),Oe.style),children:(0,Je.jsx)(Ee,(0,We.A)({"data-index":t,"aria-label":M?M(t):F,"aria-valuenow":Y(e),"aria-labelledby":j,"aria-valuetext":W?W(Y(e),t):T,value:fe[t]},Ge))}))}),t)})]}))}),iz=az;(()=>{try{if("undefined"===typeof navigator)return!1;const e=navigator.userAgent,t=/Android/i.test(e),n=/iPhone|iPad|iPod/i.test(e),r=/Macintosh/i.test(e)&&navigator.maxTouchPoints>1;return t||n||r}catch(e){return!1}})();function sz(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Qi.moZ;return!0===e?sz(t):!1===e?Qi.Nol:e===Qi.Jg9||e===Qi.Nol||e===Qi.moZ?e:Qi.moZ}const lz=e=>{const t={};if(!e)return t;const n=e.split(";").filter(e=>e.trim());return n.forEach(e=>{const n=e.indexOf(":");if(n>0){const r=e.substring(0,n).trim(),o=e.substring(n+1).trim();t[r]=o}}),t},uz=e=>{const t=Object.entries(e).filter(e=>{let[,t]=e;return void 0!==t&&""!==t});return 0===t.length?"":t.map(e=>{let[t,n]=e;return"".concat(t,": ").concat(n)}).join(";\n")+";"},cz=e=>{const t=null===e||void 0===e?void 0:e.match(/rgba?\s*\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*([\d.]+))?\s*\)/);return t?{r:parseInt(t[1],10),g:parseInt(t[2],10),b:parseInt(t[3],10),a:void 0!==t[4]?parseFloat(t[4]):1}:null},dz=(e,t,n)=>"#"+[e,t,n].map(e=>{let t=Number(e);return Number.isNaN(t)&&(t=0),t=Math.min(255,Math.max(0,Math.round(t))),t.toString(16).padStart(2,"0")}).join(""),pz=e=>{if(!e)return{min:1,preferred:2,max:3,unit:"rem"};const t=e.match(/clamp\s*\(\s*([\d.]+)(\w+)\s*,\s*([\d.]+)(\w+)\s*,\s*([\d.]+)(\w+)\s*\)/);if(t)return{min:parseFloat(t[1]),preferred:parseFloat(t[3]),max:parseFloat(t[5]),unit:t[2]};const n=e.match(/([\d.]+)(\w+)/);if(n){const e=parseFloat(n[1]);return{min:.5*e,preferred:e,max:1.5*e,unit:n[2]}}return{min:1,preferred:2,max:3,unit:"rem"}},hz=e=>{if(!e)return"#ffffff";const t={white:"#ffffff",black:"#000000",red:"#ff0000",green:"#00ff00",blue:"#0000ff",yellow:"#ffff00",cyan:"#00ffff",magenta:"#ff00ff",gray:"#808080",grey:"#808080",orange:"#ffa500",transparent:"#ffffff"},n=e.toLowerCase().trim();if(t[n])return t[n];if(e.startsWith("#"))return e;const r=cz(e);return r?dz(r.r,r.g,r.b):"#ffffff"};function fz(e){let{windowStyle:t,originStyle:n,translationStyle:r,displayOrder:o}=e;const i=Hf(),s=(0,a.useMemo)(()=>lz(t),[t]),l=(0,a.useMemo)(()=>lz(n),[n]),u=(0,a.useMemo)(()=>lz(r),[r]),c=(0,Je.jsx)("p",{style:(0,It.A)((0,It.A)({},l),{},{margin:0}),children:"This is an example subtitle"}),d=(0,Je.jsx)("p",{style:(0,It.A)((0,It.A)({},u),{},{margin:0}),children:i("subtitle_preview_sample")||"\u8fd9\u662f\u793a\u4f8b\u5b57\u5e55\u6587\u672c"});return(0,Je.jsxs)(st,{children:[(0,Je.jsx)(gf,{variant:"subtitle2",gutterBottom:!0,children:i("subtitle_style_preview")||"\u6837\u5f0f\u9884\u89c8"}),(0,Je.jsx)(st,{sx:{bgcolor:"#ffffff",borderRadius:1,border:"1px solid",borderColor:"divider",overflow:"hidden",display:"flex",justifyContent:"center",alignItems:"center",height:120},children:(0,Je.jsx)(st,{sx:{containerType:"inline-size",width:640,maxWidth:"100%",overflow:"hidden",textAlign:"center"},children:(0,Je.jsx)("div",{style:(0,It.A)((0,It.A)({},s),{},{textAlign:"center"}),children:"translation-first"===o?(0,Je.jsxs)(Je.Fragment,{children:[d,c]}):(0,Je.jsxs)(Je.Fragment,{children:[c,d]})})})})]})}function mz(){const e=Hf(),{subtitleSetting:t,updateSubtitle:n}=function(){const{setting:e,updateChild:t}=Rf();return{subtitleSetting:(null===e||void 0===e?void 0:e.subtitleSetting)||Qi.OcY,updateSubtitle:t("subtitleSetting")}}(),{enabledApis:r,aiEnabledApis:o}=BD(),{prompts:i}=$C(),s=(0,a.useMemo)(()=>(0,Qi.leo)(i),[i]),l=e=>{e.preventDefault();let{name:t,value:r}=e.target;n({[t]:r}),"originStyle"===t?(U(r),Y.current=lz(r)):"translationStyle"===t?(H(r),X.current=lz(r)):"windowStyle"===t&&(q(r),Q.current=lz(r))},{enabled:u,apiSlug:c,segSlug:d,forceSubtitleRetranslate:p=!1,useAlgorithmBreaker:h="rule",chunkLength:f,longSentenceThreshold:m=120,preTrans:g=90,throttleTrans:v=30,toLang:y,autoTranslate:b=!0,isBilingual:x,displayOrder:A="original-first",blurTranslation:D=!1,enhanceMode:k,hoverLookupMode:w,autoFavWord:S=!1,showList:E=Qi.moZ,skipAd:_=!1,aiContextSlug:C="-",segPromptMode:F=Qi.Qs8,segPromptSlug:T,windowStyle:j,originStyle:z,translationStyle:I,showLoadNotification:L=!0,hideSubtitleButton:P=!1}=t,R=sz(w,k||Qi.moZ),N=sz(E,k||Qi.moZ),O=T||Qi.Efh,B=s.some(e=>e.slug===O),M=F===Qi.N9F&&B?O:Qi.Qs8,[W,U]=(0,a.useState)(z),[V,H]=(0,a.useState)(I),[G,q]=(0,a.useState)(j);(0,a.useEffect)(()=>{U(z)},[z]),(0,a.useEffect)(()=>{H(I)},[I]),(0,a.useEffect)(()=>{q(j)},[j]);const K=(0,a.useRef)({}),$=(0,a.useRef)({origin:0,trans:0,window:0}),Y=(0,a.useRef)(lz(W)),X=(0,a.useRef)(lz(V)),Q=(0,a.useRef)(lz(G));(0,a.useEffect)(()=>()=>{Object.values(K.current).forEach(clearTimeout),K.current={},Object.values($.current).forEach(e=>e&&cancelAnimationFrame(e)),$.current={origin:0,trans:0,window:0}},[]);const J=(0,a.useCallback)((e,t)=>{K.current[e]&&clearTimeout(K.current[e]),K.current[e]=setTimeout(()=>{n({[e]:t})},200)},[n]),Z=(0,a.useCallback)((e,t,n)=>{const r={originStyle:"origin",translationStyle:"trans",windowStyle:"window"}[e];$.current[r]&&cancelAnimationFrame($.current[r]),$.current[r]=requestAnimationFrame(()=>{$.current[r]=0,t(n)})},[]),ee=(0,a.useCallback)((e,t)=>{Y.current[e]=t;const n=uz(Y.current);Z("originStyle",U,n),J("originStyle",n)},[J,Z]),te=(0,a.useCallback)((e,t)=>{X.current[e]=t;const n=uz(X.current);Z("translationStyle",H,n),J("translationStyle",n)},[J,Z]),ne=(0,a.useCallback)((e,t)=>{Q.current[e]=t;const n=uz(Q.current);Z("windowStyle",q,n),J("windowStyle",n)},[J,Z]),re=(0,a.useCallback)(e=>{Q.current=lz(e),Z("windowStyle",q,e),J("windowStyle",e)},[J,Z]);(0,a.useEffect)(()=>{Y.current=lz(W)},[W]),(0,a.useEffect)(()=>{X.current=lz(V)},[V]),(0,a.useEffect)(()=>{Q.current=lz(G)},[G]);const oe=(0,a.useMemo)(()=>lz(W),[W]),ae=(0,a.useMemo)(()=>lz(V),[V]),ie=(0,a.useMemo)(()=>lz(G),[G]),se=pz(oe["font-size"]||""),le=pz(ae["font-size"]||""),ue=(e=>{if(!e)return{vertical:.5,horizontal:1,unit:"em"};const t=e.trim().split(/\s+/);if(1===t.length){const e=t[0].match(/([\d.]+)(\w+)/);if(e)return{vertical:parseFloat(e[1]),horizontal:parseFloat(e[1]),unit:e[2]}}else if(t.length>=2){const e=t[0].match(/([\d.]+)(\w+)/),n=t[1].match(/([\d.]+)(\w+)/);if(e&&n)return{vertical:parseFloat(e[1]),horizontal:parseFloat(n[1]),unit:e[2]}}return{vertical:.5,horizontal:1,unit:"em"}})(ie.padding||"0.5em 1em"),ce=cz(ie["background-color"]||"rgba(0, 0, 0, 0.5)")||{r:0,g:0,b:0,a:.5},de=dz(ce.r,ce.g,ce.b),pe=parseFloat(ie["line-height"])||1.3,he=!!ie["text-shadow"],fe=(0,a.useCallback)((t,n,r,o)=>(0,Je.jsxs)(st,{children:[(0,Je.jsx)(gf,{variant:"subtitle2",gutterBottom:!0,children:t}),(0,Je.jsxs)(vm,{spacing:1.5,children:[(0,Je.jsxs)(st,{sx:{display:"flex",alignItems:"center",gap:1.5},children:[(0,Je.jsx)(gf,{variant:"body2",color:"text.secondary",sx:{minWidth:56,flexShrink:0},children:e("font_size")||"\u5b57\u4f53\u5927\u5c0f"}),(0,Je.jsx)(iz,{size:"small",value:n.preferred,min:.5,max:5,step:.1,onChange:(e,t)=>{const r=n.preferred||1,a=n.min/r,i=n.max/r;o("font-size","clamp(".concat((t*a).toFixed(2)).concat(n.unit,", ").concat(t,"cqw, ").concat((t*i).toFixed(2)).concat(n.unit,")"))},sx:{flex:1}}),(0,Je.jsx)(gf,{variant:"body2",sx:{minWidth:28,textAlign:"right"},children:n.preferred})]}),(0,Je.jsxs)(st,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,Je.jsx)(gf,{variant:"body2",color:"text.secondary",sx:{minWidth:56,flexShrink:0},children:e("font_color")||"\u5b57\u4f53\u989c\u8272"}),(0,Je.jsx)(st,{component:"input",type:"color",value:hz(r.color),onChange:e=>o("color",e.target.value),sx:{width:28,height:28,border:"none",cursor:"pointer",p:0,bgcolor:"transparent"}}),(0,Je.jsx)(hb,{size:"small",value:r.color||"",onChange:e=>o("color",e.target.value),placeholder:"#ffffff",sx:{flex:1}})]})]})]}),[e]);return(0,Je.jsx)(st,{children:(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsxs)(Xi,{severity:"info",children:[e("subtitle_helper_1"),(0,Je.jsx)("br",{}),e("subtitle_helper_2"),(0,Je.jsx)("br",{}),e("subtitle_helper_3")]}),(0,Je.jsx)(Fx,{control:(0,Je.jsx)(Hx,{size:"small",name:"enabled",checked:u,onChange:()=>{n({enabled:!u})}}),label:e("toggle_subtitle_translate"),sx:{width:"fit-content"}}),(0,Je.jsx)(st,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,columns:12,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"autoTranslate",value:b,label:e("default_subtitle_translate"),onChange:l,disabled:!u,children:[(0,Je.jsx)(dx,{value:!1,children:e("disable")}),(0,Je.jsx)(dx,{value:!0,children:e("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{select:!0,fullWidth:!0,size:"small",name:"apiSlug",value:c,label:e("translate_service"),onChange:l,children:r.map(e=>(0,Je.jsx)(dx,{value:e.apiSlug,children:e.apiName},e.apiSlug))})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"segSlug",value:d,label:e("ai_segmentation"),onChange:l,helperText:p&&"-"!==d&&d!==c?e("seg_trans_diff_warning")||"\u65ad\u53e5\u548c\u7ffb\u8bd1\u670d\u52a1\u4e0d\u540c\uff0c\u7ffb\u8bd1\u5f15\u64ce\u4f1a\u91cd\u590d\u7ffb\u8bd1\u5b57\u5e55":"",FormHelperTextProps:{sx:{color:"error.main"}},children:[(0,Je.jsx)(dx,{value:"-",children:e("disable")}),o.map(e=>(0,Je.jsx)(dx,{value:e.apiSlug,children:e.apiName},e.apiSlug))]})}),"-"!==d&&(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"segPromptSlug",value:M,label:e("seg_prompt_mode","AI\u65ad\u53e5\u63d0\u793a\u8bcd"),onChange:e=>{e.preventDefault();const{value:t}=e.target;t!==Qi.Qs8?n({segPromptMode:Qi.N9F,segPromptSlug:t}):n({segPromptMode:Qi.Qs8})},children:[(0,Je.jsx)(dx,{value:Qi.Qs8,children:e("follow_api_prompt","\u63a5\u53e3\u9ed8\u8ba4")}),s.map(t=>(0,Je.jsx)(dx,{value:t.slug,children:(0,Qi.ejN)(t,e)},t.slug))]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"forceSubtitleRetranslate",value:p,label:e("force_subtitle_retranslate"),onChange:l,children:[(0,Je.jsx)(dx,{value:!0,children:e("enable")}),(0,Je.jsx)(dx,{value:!1,children:e("disable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"useAlgorithmBreaker",value:h,label:e("builtin_sentence_break"),onChange:l,children:[(0,Je.jsx)(dx,{value:"rule",children:e("rule_sentence_break")}),(0,Je.jsx)(dx,{value:"statistical",children:e("statistical_sentence_break")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{select:!0,fullWidth:!0,size:"small",name:"aiContextSlug",value:C,label:e("ai_enhanced_context"),onChange:l,children:[(0,Je.jsx)(dx,{value:"-",children:e("disable")}),o.map(e=>(0,Je.jsx)(dx,{value:e.apiSlug,children:e.apiName},e.apiSlug))]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("ai_chunk_length"),type:"number",name:"chunkLength",value:f,onChange:l,min:200,max:2e4})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("long_sentence_threshold"),type:"number",name:"longSentenceThreshold",value:m,onChange:l,min:20,max:500})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("pre_trans_seconds"),type:"number",name:"preTrans",value:g,onChange:l,min:10,max:36e3})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(PD,{fullWidth:!0,size:"small",label:e("throttle_trans_interval"),type:"number",name:"throttleTrans",value:v,onChange:l,min:1,max:3600})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsx)(hb,{fullWidth:!0,select:!0,size:"small",name:"toLang",value:y,label:e("to_lang"),onChange:l,children:Qi.$QD.map(e=>{let[t,n]=e;return(0,Je.jsx)(dx,{value:t,children:n},t)})})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"isBilingual",value:x,label:e("is_bilingual_view"),onChange:l,children:[(0,Je.jsx)(dx,{value:!0,children:e("enable")}),(0,Je.jsx)(dx,{value:!1,children:e("disable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"displayOrder",value:A,label:e("trans_order"),onChange:l,children:[(0,Je.jsx)(dx,{value:"original-first",children:e("original_first")}),(0,Je.jsx)(dx,{value:"translation-first",children:e("translation_first")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"blurTranslation",value:D,label:e("is_blur_translation"),onChange:l,children:[(0,Je.jsx)(dx,{value:!0,children:e("enable")}),(0,Je.jsx)(dx,{value:!1,children:e("disable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"skipAd",value:_,label:e("is_skip_ad"),onChange:l,children:[(0,Je.jsx)(dx,{value:!0,children:e("enable")}),(0,Je.jsx)(dx,{value:!1,children:e("disable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"hoverLookupMode",value:R,label:e("subtitle_hover_lookup"),onChange:l,children:[(0,Je.jsx)(dx,{value:Qi.Jg9,children:e("enable")}),(0,Je.jsx)(dx,{value:Qi.Nol,children:e("disable")}),(0,Je.jsx)(dx,{value:Qi.moZ,children:e("disable_on_mobile")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"autoFavWord",value:S,label:e("auto_fav_word"),onChange:l,children:[(0,Je.jsx)(dx,{value:!1,children:e("disable")}),(0,Je.jsx)(dx,{value:!0,children:e("enable")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"showList",value:N,label:e("show_subtitle_list")||"\u663e\u793a\u5b57\u5e55\u5217\u8868",onChange:l,children:[(0,Je.jsx)(dx,{value:Qi.Jg9,children:e("enable")}),(0,Je.jsx)(dx,{value:Qi.Nol,children:e("disable")}),(0,Je.jsx)(dx,{value:Qi.moZ,children:e("disable_on_mobile")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"showLoadNotification",value:L,label:e("subtitle_loading_notification"),onChange:l,children:[(0,Je.jsx)(dx,{value:!0,children:e("show")}),(0,Je.jsx)(dx,{value:!1,children:e("hide")})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:12,md:6,lg:3,children:(0,Je.jsxs)(hb,{fullWidth:!0,select:!0,size:"small",name:"hideSubtitleButton",value:P,label:e("hide_subtitle_button"),onChange:l,children:[(0,Je.jsx)(dx,{value:!0,children:e("enable")}),(0,Je.jsx)(dx,{value:!1,children:e("disable")})]})})]})}),(0,Je.jsx)(st,{sx:{border:"1px solid",borderColor:"divider",borderRadius:1,p:2},children:(0,Je.jsxs)(vm,{spacing:2,children:[(0,Je.jsx)(fz,{windowStyle:G,originStyle:W,translationStyle:V,displayOrder:A}),(0,Je.jsx)(zf,{}),(0,Je.jsxs)(kx,{container:!0,spacing:2,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:6,children:fe(e("origin_styles"),se,oe,ee)}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:6,children:fe(e("translation_styles"),le,ae,te)})]}),(0,Je.jsx)(zf,{}),(0,Je.jsxs)(st,{children:[(0,Je.jsx)(gf,{variant:"subtitle2",gutterBottom:!0,children:e("background_styles")}),(0,Je.jsxs)(kx,{container:!0,spacing:1.5,alignItems:"center",children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:6,children:(0,Je.jsxs)(st,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,Je.jsx)(gf,{variant:"body2",color:"text.secondary",sx:{minWidth:56,flexShrink:0},children:e("background_color")||"\u80cc\u666f\u989c\u8272"}),(0,Je.jsx)(st,{component:"input",type:"color",value:de,onChange:e=>{const t=(e=>{const t=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(e);return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:{r:0,g:0,b:0}})(e.target.value);ne("background-color","rgba(".concat(t.r,", ").concat(t.g,", ").concat(t.b,", ").concat(ce.a,")"))},sx:{width:28,height:28,border:"none",cursor:"pointer",p:0,bgcolor:"transparent"}}),(0,Je.jsx)(gf,{variant:"body2",sx:{minWidth:48},children:e("opacity")||"\u900f\u660e\u5ea6"}),(0,Je.jsx)(iz,{size:"small",value:ce.a,min:0,max:1,step:.05,onChange:(e,t)=>{ne("background-color","rgba(".concat(ce.r,", ").concat(ce.g,", ").concat(ce.b,", ").concat(t,")"))},sx:{flex:1}}),(0,Je.jsxs)(gf,{variant:"body2",sx:{minWidth:36,textAlign:"right"},children:[Math.round(100*ce.a),"%"]})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:6,children:(0,Je.jsxs)(st,{sx:{display:"flex",alignItems:"center",gap:1},children:[(0,Je.jsx)(gf,{variant:"body2",color:"text.secondary",sx:{minWidth:56,flexShrink:0},children:e("line_height")||"\u884c\u9ad8"}),(0,Je.jsx)(iz,{size:"small",value:pe,min:1,max:2.5,step:.1,onChange:(e,t)=>ne("line-height",String(t)),sx:{flex:1}}),(0,Je.jsx)(gf,{variant:"body2",sx:{minWidth:28,textAlign:"right"},children:pe})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:6,children:(0,Je.jsxs)(st,{sx:{display:"flex",alignItems:"center",gap:2},children:[(0,Je.jsx)(gf,{variant:"body2",color:"text.secondary",sx:{minWidth:56,flexShrink:0},children:e("padding")||"\u5185\u8fb9\u8ddd"}),(0,Je.jsx)(gf,{variant:"body2",children:e("vertical")||"\u4e0a\u4e0b"}),(0,Je.jsx)(iz,{size:"small",value:ue.vertical,min:0,max:2,step:.1,onChange:(e,t)=>{ne("padding","".concat(t).concat(ue.unit," ").concat(ue.horizontal).concat(ue.unit))},sx:{width:80}}),(0,Je.jsx)(gf,{variant:"body2",children:e("horizontal")||"\u5de6\u53f3"}),(0,Je.jsx)(iz,{size:"small",value:ue.horizontal,min:0,max:3,step:.1,onChange:(e,t)=>{ne("padding","".concat(ue.vertical).concat(ue.unit," ").concat(t).concat(ue.unit))},sx:{width:80}})]})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:6,children:(0,Je.jsx)(Fx,{control:(0,Je.jsx)(Hx,{size:"small",checked:he,onChange:e=>{if(e.target.checked)ne("text-shadow","1px 1px 2px black");else{const e=(0,It.A)({},Q.current);delete e["text-shadow"],re(uz(e))}}}),label:(0,Je.jsx)(gf,{variant:"body2",children:e("text_shadow")||"\u6587\u5b57\u9634\u5f71"})})})]})]}),(0,Je.jsxs)(Mb,{sx:{boxShadow:"none","&:before":{display:"none"}},children:[(0,Je.jsx)(Kb,{expandIcon:(0,Je.jsx)(Jb.A,{}),children:(0,Je.jsx)(gf,{variant:"body2",color:"text.secondary",children:e("advanced_css")||"\u9ad8\u7ea7 CSS \u7f16\u8f91"})}),(0,Je.jsx)(Qb,{children:(0,Je.jsxs)(kx,{container:!0,spacing:2,children:[(0,Je.jsx)(kx,{item:!0,xs:12,sm:4,children:(0,Je.jsx)(mb,{size:"small",label:e("origin_styles"),name:"originStyle",value:z,onChange:l,maxRows:10,fullWidth:!0})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:4,children:(0,Je.jsx)(mb,{size:"small",label:e("translation_styles"),name:"translationStyle",value:I,onChange:l,maxRows:10,fullWidth:!0})}),(0,Je.jsx)(kx,{item:!0,xs:12,sm:4,children:(0,Je.jsx)(mb,{size:"small",label:e("background_styles"),name:"windowStyle",value:j,onChange:l,maxRows:10,fullWidth:!0})})]})})]})]})})]})})}const gz=[{en:"The unexamined life is not worth living.",zh:"\u672a\u7ecf\u5ba1\u89c6\u7684\u4eba\u751f\u4e0d\u503c\u5f97\u8fc7\u3002",zh_TW:"\u672a\u7d93\u5be9\u8996\u7684\u4eba\u751f\u4e0d\u503c\u5f97\u904e\u3002",ja:"\u541f\u5473\u3055\u308c\u306a\u3044\u4eba\u751f\u306f\u751f\u304d\u308b\u306b\u5024\u3057\u306a\u3044\u3002",ko:"\uc131\ucc30\ud558\uc9c0 \uc54a\ub294 \uc0b6\uc740 \uc0b4 \uac00\uce58\uac00 \uc5c6\ub2e4\u3002"},{en:"I think, therefore I am.",zh:"\u6211\u601d\u6545\u6211\u5728\u3002",zh_TW:"\u6211\u601d\u6545\u6211\u5728\u3002",ja:"\u6211\u601d\u3046\u3001\u3086\u3048\u306b\u6211\u3042\u308a\u3002",ko:"\ub098\ub294 \uc0dd\uac01\ud55c\ub2e4, \uace0\ub85c \uc874\uc7ac\ud55c\ub2e4\u3002"},{en:"He who has a why to live for can bear almost any how.",zh:"\u77e5\u9053\u4e3a\u4f55\u800c\u6d3b\u7684\u4eba\uff0c\u51e0\u4e4e\u80fd\u5fcd\u53d7\u4efb\u4f55\u4e00\u79cd\u751f\u6d3b\u3002",zh_TW:"\u77e5\u9053\u70ba\u4f55\u800c\u6d3b\u7684\u4eba\uff0c\u5e7e\u4e4e\u80fd\u5fcd\u53d7\u4efb\u4f55\u4e00\u7a2e\u751f\u6d3b\u3002",ja:"\u751f\u304d\u308b\u305f\u3081\u306e\u300c\u306a\u305c\u300d\u3092\u6301\u3064\u8005\u306f\u3001\u307b\u3068\u3093\u3069\u3042\u3089\u3086\u308b\u300c\u3069\u306e\u3088\u3046\u306b\u300d\u306b\u3082\u8010\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002",ko:"\uc0b4\uc544\uc57c \ud560 \uc774\uc720\ub97c \uc544\ub294 \uc0ac\ub78c\uc740 \uac70\uc758 \ubaa8\ub4e0 \uc0c1\ud669\uc744 \uacac\ub51c \uc218 \uc788\ub2e4\u3002"},{en:"Life is what happens when you're busy making other plans.",zh:"\u751f\u6d3b\u5c31\u662f\u5f53\u4f60\u5fd9\u7740\u5236\u5b9a\u5176\u4ed6\u8ba1\u5212\u65f6\u6240\u53d1\u751f\u7684\u4e8b\u60c5\u3002",zh_TW:"\u751f\u6d3b\u5c31\u662f\u7576\u4f60\u5fd9\u8457\u5236\u5b9a\u5176\u4ed6\u8a08\u5283\u6642\u6240\u767c\u751f\u7684\u4e8b\u60c5\u3002",ja:"\u4eba\u751f\u3068\u306f\u3001\u4ed6\u306e\u8a08\u753b\u3092\u7acb\u3066\u308b\u306e\u306b\u5fd9\u3057\u3044\u3068\u304d\u306b\u8d77\u3053\u308b\u3082\u306e\u3060\u3002",ko:"\uc778\uc0dd\uc740 \ub2e4\ub978 \uacc4\ud68d\uc744 \uc138\uc6b0\ub290\ub77c \ubc14\uc060 \ub54c \uc77c\uc5b4\ub098\ub294 \uc77c\uc774\ub2e4\u3002"},{en:"Get busy living or get busy dying.",zh:"\u8981\u4e48\u5fd9\u7740\u6d3b\uff0c\u8981\u4e48\u5fd9\u7740\u6b7b\u3002",zh_TW:"\u8981\u4e48\u5fd9\u8457\u6d3b\uff0c\u8981\u4e48\u5fd9\u8457\u6b7b\u3002",ja:"\u5fc5\u6b7b\u306b\u751f\u304d\u308b\u304b\u3001\u5fc5\u6b7b\u306b\u6b7b\u306c\u304b\u3060\u3002",ko:"\ubc14\uc058\uac8c \uc0b4\uac70\ub098, \ubc14\uc058\uac8c \uc8fd\uac70\ub098\u3002"},{en:"We are what we repeatedly do. Excellence, then, is not an act, but a habit.",zh:"\u6211\u4eec\u7531\u6211\u4eec\u53cd\u590d\u505a\u7684\u4e8b\u60c5\u6784\u6210\u7684\u3002\u56e0\u6b64\uff0c\u5353\u8d8a\u4e0d\u662f\u4e00\u79cd\u884c\u4e3a\uff0c\u800c\u662f\u4e00\u79cd\u4e60\u60ef\u3002",zh_TW:"\u6211\u5011\u7531\u6211\u5011\u53cd\u8986\u505a\u7684\u4e8b\u60c5\u69cb\u6210\u7684\u3002\u56e0\u6b64\uff0c\u5353\u8d8a\u4e0d\u662f\u4e00\u7a2e\u884c\u70ba\uff0c\u800c\u662f\u4e00\u7a2e\u7fd2\u6163\u3002",ja:"\u6211\u3005\u306f\u7e70\u308a\u8fd4\u3057\u884c\u3046\u3053\u3068\u306e\u96c6\u5927\u6210\u3067\u3042\u308b\u3002\u5353\u8d8a\u3068\u306f\u884c\u70ba\u3067\u306f\u306a\u304f\u3001\u7fd2\u6163\u306a\u306e\u3060\u3002",ko:"\uc6b0\ub9ac\ub294 \uc6b0\ub9ac\uac00 \ubc18\ubcf5\uc801\uc73c\ub85c \ud558\ub294 \uc77c\uc758 \uacb0\uacfc\ubb3c\uc774\ub2e4. \uadf8\ub807\ub2e4\uba74 \ud0c1\uc6d4\ud568\uc740 \ud589\ub3d9\uc774 \uc544\ub2c8\ub77c \uc2b5\uad00\uc774\ub2e4\u3002"},{en:"Man is condemned to be free.",zh:"\u4eba\u6ce8\u5b9a\u662f\u81ea\u7531\u7684\u3002",zh_TW:"\u4eba\u8a3b\u5b9a\u662f\u81ea\u7531\u7684\u3002",ja:"\u4eba\u9593\u306f\u81ea\u7531\u3067\u3042\u308b\u3088\u3046\u306b\u546a\u308f\u308c\u3066\u3044\u308b\u3002",ko:"\uc778\uac04\uc740 \uc790\uc720\ub86d\ub3c4\ub85d \uc800\uc8fc\ubc1b\uc558\ub2e4\u3002"},{en:"To be, or not to be: that is the question.",zh:"\u751f\u5b58\u8fd8\u662f\u6bc1\u706d\uff0c\u8fd9\u662f\u4e00\u4e2a\u95ee\u9898\u3002",zh_TW:"\u751f\u5b58\u9084\u662f\u6bc0\u6ec5\uff0c\u9019\u662f\u4e00\u500b\u554f\u984c\u3002",ja:"\u751f\u304d\u308b\u3079\u304d\u304b\u3001\u6b7b\u306c\u3079\u304d\u304b\u3001\u305d\u308c\u304c\u554f\u984c\u3060\u3002",ko:"\uc8fd\ub290\ub0d0 \uc0ac\ub290\ub0d0, \uadf8\uac83\uc774 \ubb38\uc81c\ub85c\ub2e4\u3002"},{en:"The purpose of life is not to be happy. It is to be useful, to be honorable, to be compassionate, to have it make some difference that you have lived and lived well.",zh:"\u4eba\u751f\u7684\u76ee\u7684\u4e0d\u662f\u5feb\u4e50\uff0c\u800c\u662f\u6709\u7528\u3001\u9ad8\u5c1a\u3001\u5bcc\u6709\u540c\u60c5\u5fc3\uff0c\u8ba9\u4f60\u6d3b\u8fc7\u5e76\u4e14\u6d3b\u5f97\u597d\uff0c\u4ece\u800c\u4f7f\u4e16\u754c\u6709\u6240\u4e0d\u540c\u3002",zh_TW:"\u4eba\u751f\u7684\u76ee\u7684\u4e0d\u662f\u5feb\u6a02\uff0c\u800c\u662f\u6709\u7528\u3001\u9ad8\u5c1a\u3001\u5bcc\u6709\u540c\u60c5\u5fc3\uff0c\u8b93\u4f60\u6d3b\u904e\u4e26\u4e14\u6d3b\u5f97\u597d\uff0c\u5f9e\u800c\u4f7f\u4e16\u754c\u6709\u6240\u4e0d\u540c\u3002",ja:"\u4eba\u751f\uff08\u3058\u3093\u305b\u3044\uff09\u306e\u76ee\u7684\uff08\u3082\u304f\u3066\u304d\uff09\u306f\u5e78\uff08\u3057\u3042\u308f\uff09\u305b\u306b\u306a\u308b\u3053\u3068\u3067\u306f\u306a\u3044\u3002\u5f79\uff08\u3084\u304f\uff09\u306b\u7acb\uff08\u305f\uff09\u3064\u3053\u3068\u3001\u540d\u8a89\uff08\u3081\u3044\u3088\uff09\u3042\u308b\u3053\u3068\u3001\u601d\uff08\u304a\u3082\uff09\u3044\u3084\u308a\u3092\u6301\uff08\u3082\uff09\u3064\u3053\u3068\u3001\u305d\u3057\u3066\u81ea\u5206\uff08\u3058\u3076\u3093\uff09\u304c\u751f\uff08\u3044\uff09\u304d\u3066\u304d\u305f\u3053\u3068\u3001\u3088\u304f\u751f\uff08\u3044\uff09\u304d\u305f\u3053\u3068\u304c\u4f55\uff08\u306a\u306b\uff09\u304b\u306e\u9055\uff08\u3061\u304c\uff09\u3044\u3092\u3082\u305f\u3089\u3059\u3088\u3046\u306b\u3059\u308b\u3053\u3068\u3060\u3002",ko:"\uc0b6\uc758 \ubaa9\uc801\uc740 \ud589\ubcf5\ud574\uc9c0\ub294 \uac83\uc774 \uc544\ub2c8\ub2e4. \uc720\uc6a9\ud558\uace0, \uba85\uc608\ub86d\uace0, \uc790\ube44\ub85c\uc6b0\uba70, \ub2f9\uc2e0\uc774 \uc0b4\uc558\uace0 \uc798 \uc0b4\uc558\ub2e4\ub294 \uac83\uc774 \uc5b4\ub5a4 \ucc28\uc774\ub97c \ub9cc\ub4e4\ub3c4\ub85d \ud558\ub294 \uac83\uc774\ub2e4\u3002"},{en:"Life is 10% what happens to us and 90% how we react to it.",zh:"\u751f\u6d3b 10% \u53d6\u51b3\u4e8e\u53d1\u751f\u5728\u6211\u4eec\u8eab\u4e0a\u7684\u4e8b\uff0c90% \u53d6\u51b3\u4e8e\u6211\u4eec\u5982\u4f55\u53cd\u5e94\u3002",zh_TW:"\u751f\u6d3b 10% \u53d6\u6c7a\u65bc\u767c\u751f\u5728\u6211\u5011\u8eab\u4e0a\u7684\u4e8b\uff0c90% \u53d6\u6c7a\u65bc\u6211\u5011\u5982\u4f55\u53cd\u61c9\u3002",ja:"\u4eba\u751f\u306f\u3001\u6211\u3005\u306b\u8d77\u3053\u308b\u3053\u3068\u304c10\uff05\u3067\u3001\u305d\u308c\u306b\u3069\u3046\u53cd\u5fdc\u3059\u308b\u304b\u304c90\uff05\u3060\u3002",ko:"\uc778\uc0dd\uc740 \uc6b0\ub9ac\uc5d0\uac8c \uc77c\uc5b4\ub098\ub294 \uc77c\uc774 10%\uc774\uace0, \uadf8 \uc77c\uc5d0 \ub300\ud574 \uc6b0\ub9ac\uac00 \uc5b4\ub5bb\uac8c \ubc18\uc751\ud558\ub290\ub0d0\uac00 90%\uc774\ub2e4\u3002"},{en:"The two most important days in your life are the day you are born and the day you find out why.",zh:"\u4f60\u4e00\u751f\u4e2d\u6700\u91cd\u8981\u7684\u4e24\u5929\u662f\uff1a\u4f60\u51fa\u751f\u7684\u90a3\u5929\u548c\u4f60\u660e\u767d\u4f60\u4e3a\u4f55\u51fa\u751f\u7684\u90a3\u5929\u3002",zh_TW:"\u4f60\u4e00\u751f\u4e2d\u6700\u91cd\u8981\u7684\u5169\u5929\u662f\uff1a\u4f60\u51fa\u751f\u7684\u90a3\u5929\u548c\u4f60\u660e\u767d\u4f60\u70ba\u4f55\u51fa\u751f\u7684\u90a3\u5929\u3002",ja:"\u4eba\u751f\u3067\u6700\u3082\u91cd\u8981\u306a\u65e5\u306f\u4e8c\u65e5\u3042\u308b\u3002\u751f\u307e\u308c\u305f\u65e5\u3068\u3001\u306a\u305c\u751f\u307e\u308c\u305f\u304b\u3092\u609f\u308b\u65e5\u3060\u3002",ko:"\ub2f9\uc2e0\uc758 \uc778\uc0dd\uc5d0\uc11c \uac00\uc7a5 \uc911\uc694\ud55c \ub0a0\uc740 \ub450 \ubc88\uc774\ub2e4. \ub2f9\uc2e0\uc774 \ud0dc\uc5b4\ub09c \ub0a0\uacfc \uadf8 \uc774\uc720\ub97c \uae68\ub2eb\ub294 \ub0a0\uc774\ub2e4\u3002"},{en:"In three words I can sum up everything I've learned about life: it goes on.",zh:"\u5173\u4e8e\u4eba\u751f\uff0c\u6211\u6240\u5b66\u5230\u7684\u4e00\u5207\u53ef\u4ee5\u603b\u7ed3\u4e3a\u4e09\u4e2a\u8bcd\uff1a\u5b83\u5728\u7ee7\u7eed\u3002",zh_TW:"\u95dc\u65bc\u4eba\u751f\uff0c\u6211\u6240\u5b78\u5230\u7684\u4e00\u5207\u53ef\u4ee5\u7e3d\u7d50\u70ba\u4e09\u500b\u8a5e\uff1a\u5b83\u5728\u7e7c\u7e8c\u3002",ja:"\u4eba\u751f\u306b\u3064\u3044\u3066\u5b66\u3093\u3060\u3059\u3079\u3066\u30923\u8a9e\u3067\u307e\u3068\u3081\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u3002\u305d\u308c\u306f\u300c\u305d\u308c\u3067\u3082\u7d9a\u304f\u300d\u3068\u3044\u3046\u3053\u3068\u3060\u3002",ko:"\ub0b4\uac00 \uc778\uc0dd\uc5d0 \ub300\ud574 \ubc30\uc6b4 \ubaa8\ub4e0 \uac83\uc744 \uc138 \ub2e8\uc5b4\ub85c \uc694\uc57d\ud560 \uc218 \uc788\ub2e4: '\uc0b6\uc740 \uacc4\uc18d\ub41c\ub2e4'\ub294 \uac83\uc774\ub2e4\u3002"},{en:"Not all those who wander are lost.",zh:"\u5e76\u975e\u6240\u6709\u6d41\u6d6a\u8005\u90fd\u8ff7\u5931\u4e86\u65b9\u5411\u3002",zh_TW:"\u4e26\u975e\u6240\u6709\u6d41\u6d6a\u8005\u90fd\u8ff7\u5931\u4e86\u65b9\u5411\u3002",ja:"\u3055\u307e\u3088\u3046\u8005\u304c\u3059\u3079\u3066\u9053\u306b\u8ff7\u3063\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u306a\u3044\u3002",ko:"\ubc29\ud669\ud558\ub294 \uc790\uac00 \ub2e4 \uae38\uc744 \uc783\uc740 \uac83\uc740 \uc544\ub2c8\ub2e4\u3002"},{en:"Life is simple, but we insist on making it complicated.",zh:"\u751f\u6d3b\u672c\u7b80\u5355\uff0c\u4f46\u6211\u4eec\u575a\u6301\u8981\u628a\u5b83\u5f04\u590d\u6742\u3002",zh_TW:"\u751f\u6d3b\u672c\u7c21\u55ae\uff0c\u4f46\u6211\u5011\u5805\u6301\u8981\u628a\u5b83\u5f04\u8907\u96dc\u3002",ja:"\u4eba\u751f\u306f\u30b7\u30f3\u30d7\u30eb\u3060\u3002\u3060\u304c\u6211\u3005\u306f\u305d\u308c\u3092\u8907\u96d1\u306b\u3057\u3088\u3046\u3068\u8e8d\u8d77\u306b\u306a\u308b\u3002",ko:"\uc778\uc0dd\uc740 \ub2e8\uc21c\ud558\uc9c0\ub9cc, \uc6b0\ub9ac\uac00 \ubcf5\uc7a1\ud558\uac8c \ub9cc\ub4e4\uae30\ub97c \uace0\uc9d1\ud55c\ub2e4\u3002"},{en:"Our life is what our thoughts make it.",zh:"\u6211\u4eec\u7684\u751f\u6d3b\u662f\u7531\u6211\u4eec\u7684\u601d\u60f3\u9020\u6210\u7684\u3002",zh_TW:"\u6211\u5011\u7684\u751f\u6d3b\u662f\u7531\u6211\u5011\u7684\u601d\u60f3\u9020\u6210\u7684\u3002",ja:"\u6211\u3005\u306e\u4eba\u751f\u306f\u3001\u6211\u3005\u306e\u601d\u8003\u304c\u4f5c\u308b\u3082\u306e\u3060\u3002",ko:"\uc6b0\ub9ac\uc758 \uc0b6\uc740 \uc6b0\ub9ac\uc758 \uc0dd\uac01\uc774 \ub9cc\ub4dc\ub294 \uac83\uc774\ub2e4\u3002"},{en:"Find purpose, the means will follow.",zh:"\u627e\u5230\u76ee\u6807\uff0c\u65b9\u6cd5\u81ea\u4f1a\u968f\u4e4b\u800c\u6765\u3002",zh_TW:"\u627e\u5230\u76ee\u6a19\uff0c\u65b9\u6cd5\u81ea\u6703\u96a8\u4e4b\u800c\u4f86\u3002",ja:"\u76ee\u7684\u3092\u898b\u3064\u3051\u3088\u3001\u624b\u6bb5\u306f\u5f8c\u304b\u3089\u3064\u3044\u3066\u304f\u308b\u3002",ko:"\ubaa9\uc801\uc744 \ucc3e\uc73c\ub77c, \uc218\ub2e8\uc740 \ub530\ub77c\uc62c \uac83\uc774\ub2e4\u3002"},{en:"The goal of life is living in agreement with nature.",zh:"\u751f\u6d3b\u7684\u76ee\u6807\u662f\u4e0e\u81ea\u7136\u548c\u8c10\u76f8\u5904\u3002",zh_TW:"\u751f\u6d3b\u7684\u76ee\u6a19\u662f\u8207\u81ea\u7136\u548c\u8ae7\u76f8\u8655\u3002",ja:"\u4eba\u751f\u306e\u76ee\u6a19\u306f\u3001\u81ea\u7136\u3068\u8abf\u548c\u3057\u3066\u751f\u304d\u308b\u3053\u3068\u3067\u3042\u308b\u3002",ko:"\uc0b6\uc758 \ubaa9\ud45c\ub294 \uc790\uc5f0\uacfc \uc870\ud654\ub97c \uc774\ub8e8\uba70 \uc0ac\ub294 \uac83\uc774\ub2e4\u3002"},{en:"The only true wisdom is in knowing you know nothing.",zh:"\u552f\u4e00\u7684\u771f\u6b63\u667a\u6167\u5728\u4e8e\u77e5\u9053\u81ea\u5df1\u4e00\u65e0\u6240\u6709\u3002",zh_TW:"\u552f\u4e00\u7684\u771f\u6b63\u667a\u6167\u5728\u65bc\u77e5\u9053\u81ea\u5df1\u4e00\u7121\u6240\u6709\u3002",ja:"\u552f\u4e00\u771f\u306e\u77e5\u6075\u306f\u3001\u81ea\u5206\u304c\u4f55\u3082\u77e5\u3089\u306a\u3044\u3053\u3068\u3092\u77e5\u308b\u3053\u3068\u306b\u3042\u308b\u3002",ko:"\uc720\uc77c\ud55c \ucc38\ub41c \uc9c0\ud61c\ub294 \uc790\uc2e0\uc774 \uc544\ubb34\uac83\ub3c4 \ubaa8\ub978\ub2e4\ub294 \uac83\uc744 \uc544\ub294 \uac83\uc774\ub2e4\u3002"},{en:"Knowledge is power.",zh:"\u77e5\u8bc6\u5c31\u662f\u529b\u91cf\u3002",zh_TW:"\u77e5\u8b58\u5c31\u662f\u529b\u91cf\u3002",ja:"\u77e5\u8b58\u306f\u529b\u306a\u308a\u3002",ko:"\uc544\ub294 \uac83\uc774 \ud798\uc774\ub2e4\u3002"},{en:"Knowing yourself is the beginning of all wisdom.",zh:"\u4e86\u89e3\u81ea\u5df1\u662f\u6240\u6709\u667a\u6167\u7684\u5f00\u7aef\u3002",zh_TW:"\u4e86\u89e3\u81ea\u5df1\u662f\u6240\u6709\u667a\u6167\u7684\u958b\u7aef\u3002",ja:"\u81ea\u5206\u81ea\u8eab\u3092\u77e5\u308b\u3053\u3068\u304c\u3001\u3059\u3079\u3066\u306e\u77e5\u6075\u306e\u59cb\u307e\u308a\u3067\u3042\u308b\u3002",ko:"\uc790\uc2e0\uc744 \uc544\ub294 \uac83\uc774 \ubaa8\ub4e0 \uc9c0\ud61c\uc758 \uc2dc\uc791\uc774\ub2e4\u3002"},{en:"The journey of a thousand miles begins with a single step.",zh:"\u5343\u91cc\u4e4b\u884c\uff0c\u59cb\u4e8e\u8db3\u4e0b\u3002",zh_TW:"\u5343\u91cc\u4e4b\u884c\uff0c\u59cb\u65bc\u8db3\u4e0b\u3002",ja:"\u5343\u91cc\u306e\u9053\u3082\u4e00\u6b69\u304b\u3089\u3002",ko:"\ucc9c \ub9ac \uae38\ub3c4 \ud55c \uac78\uc74c\ubd80\ud130\u3002"},{en:"The only source of knowledge is experience.",zh:"\u77e5\u8bc6\u7684\u552f\u4e00\u6765\u6e90\u662f\u7ecf\u9a8c\u3002",zh_TW:"\u77e5\u8b58\u7684\u552f\u4e00\u4f86\u6e90\u662f\u7d93\u9a57\u3002",ja:"\u77e5\u8b58\u306e\u552f\u4e00\u306e\u6e90\u6cc9\u306f\u7d4c\u9a13\u3067\u3042\u308b\u3002",ko:"\uc9c0\uc2dd\uc758 \uc720\uc77c\ud55c \uc6d0\ucc9c\uc740 \uacbd\ud5d8\uc774\ub2e4\u3002"},{en:"A fool thinks himself to be wise, but a wise man knows himself to be a fool.",zh:"\u611a\u8005\u81ea\u4ee5\u4e3a\u806a\u660e\uff0c\u667a\u8005\u81ea\u77e5\u611a\u8822\u3002",zh_TW:"\u611a\u8005\u81ea\u4ee5\u70ba\u8070\u660e\uff0c\u667a\u8005\u81ea\u77e5\u611a\u8822\u3002",ja:"\u611a\u304b\u8005\u306f\u81ea\u5206\u3092\u8ce2\u3044\u3068\u601d\u3046\u304c\u3001\u8ce2\u3044\u8005\u306f\u81ea\u5206\u304c\u611a\u304b\u3067\u3042\u308b\u3053\u3068\u3092\u77e5\u3063\u3066\u3044\u308b\u3002",ko:"\ubc14\ubcf4\ub294 \uc790\uc2e0\uc774 \ud604\uba85\ud558\ub2e4\uace0 \uc0dd\uac01\ud558\uc9c0\ub9cc, \ud604\uba85\ud55c \uc0ac\ub78c\uc740 \uc790\uc2e0\uc774 \ubc14\ubcf4\ub77c\ub294 \uac83\uc744 \uc548\ub2e4\u3002"},{en:"We learn from failure, not from success!",zh:"\u6211\u4eec\u4ece\u5931\u8d25\u4e2d\u5b66\u4e60\uff0c\u800c\u4e0d\u662f\u4ece\u6210\u529f\u4e2d\uff01",zh_TW:"\u6211\u5011\u5f9e\u5931\u6557\u4e2d\u5b78\u7fd2\uff0c\u800c\u4e0d\u662f\u5f9e\u6210\u529f\u4e2d\uff01",ja:"\u6211\u3005\u306f\u6210\u529f\u304b\u3089\u3067\u306f\u306a\u304f\u3001\u5931\u6557\u304b\u3089\u5b66\u3076\uff01",ko:"\uc6b0\ub9ac\ub294 \uc131\uacf5\uc774 \uc544\ub2cc, \uc2e4\ud328\ub85c\ubd80\ud130 \ubc30\uc6b4\ub2e4!"},{en:"The wise man is one who knows what he does not know.",zh:"\u667a\u8005\uff0c\u77e5\u5176\u6240\u4e0d\u77e5\u3002",zh_TW:"\u667a\u8005\uff0c\u77e5\u5176\u6240\u4e0d\u77e5\u3002",ja:"\u8ce2\u3044\u8005\u3068\u306f\u3001\u81ea\u5206\u304c\u4f55\u3092\u77e5\u3089\u306a\u3044\u304b\u3092\u77e5\u3063\u3066\u3044\u308b\u8005\u3067\u3042\u308b\u3002",ko:"\ud604\uba85\ud55c \uc0ac\ub78c\uc740 \uc790\uc2e0\uc774 \ubaa8\ub974\ub294 \uac83\uc744 \uc544\ub294 \uc0ac\ub78c\uc774\ub2e4\u3002"},{en:"To know that we know what we know, and that we do not know what we do not know, that is true knowledge.",zh:"\u77e5\u4e4b\u4e3a\u77e5\u4e4b\uff0c\u4e0d\u77e5\u4e3a\u4e0d\u77e5\uff0c\u662f\u77e5\u4e5f\u3002",zh_TW:"\u77e5\u4e4b\u70ba\u77e5\u4e4b\uff0c\u4e0d\u77e5\u70ba\u4e0d\u77e5\uff0c\u662f\u77e5\u4e5f\u3002",ja:"\u77e5\u308b\u3092\u77e5\u308b\u3068\u306a\u3057\u3001\u77e5\u3089\u3056\u308b\u3092\u77e5\u3089\u305a\u3068\u306a\u3059\u3001\u3053\u308c\u77e5\u308b\u306a\u308a\u3002",ko:"\uc544\ub294 \uac83\uc744 \uc548\ub2e4\uace0 \ud558\uace0, \ubaa8\ub974\ub294 \uac83\uc744 \ubaa8\ub978\ub2e4\uace0 \ud558\ub294 \uac83, \uadf8\uac83\uc774 \ucc38\ub41c \uc54e\uc774\ub2e4\u3002"},{en:"Curiosity is the wick in the candle of learning.",zh:"\u597d\u5947\u5fc3\u662f\u5b66\u4e60\u8fd9\u652f\u8721\u70db\u7684\u706f\u82af\u3002",zh_TW:"\u597d\u5947\u5fc3\u662f\u5b78\u7fd2\u9019\u652f\u881f\u71ed\u7684\u71c8\u82af\u3002",ja:"\u597d\u5947\u5fc3\u306f\u3001\u5b66\u7fd2\u3068\u3044\u3046\u30ed\u30a6\u30bd\u30af\u306e\u82af\u3067\u3042\u308b\u3002",ko:"\ud638\uae30\uc2ec\uc740 \ubc30\uc6c0\uc774\ub77c\ub294 \ucd1b\ubd88\uc758 \uc2ec\uc9c0\uc774\ub2e4\u3002"},{en:"It is the mark of an educated mind to be able to entertain a thought without accepting it.",zh:"\u80fd\u591f\u5bb9\u7eb3\u4e00\u79cd\u601d\u60f3\u800c\u4e0d\u540c\u610f\u5b83\uff0c\u8fd9\u662f\u4e00\u4e2a\u53d7\u8fc7\u6559\u80b2\u7684\u5934\u8111\u7684\u6807\u5fd7\u3002",zh_TW:"\u80fd\u5920\u5bb9\u7d0d\u4e00\u7a2e\u601d\u60f3\u800c\u4e0d\u540c\u610f\u5b83\uff0c\u9019\u662f\u4e00\u500b\u53d7\u904e\u6559\u80b2\u7684\u982d\u8166\u7684\u6a19\u8a8c\u3002",ja:"\u3042\u308b\u8003\u3048\u3092\u53d7\u3051\u5165\u308c\u305a\u306b\u3001\u305d\u306e\u8003\u3048\u3092\u6301\u3061\u7d9a\u3051\u308b\u3053\u3068\u304c\u3067\u304d\u308b\u306e\u304c\u3001\u6559\u80b2\u3042\u308b\u7cbe\u795e\u306e\u8a3c\u3067\u3042\u308b\u3002",ko:"\uc5b4\ub5a4 \uc0dd\uac01\uc744 \ubc1b\uc544\ub4e4\uc774\uc9c0 \uc54a\uace0\ub3c4 \uadf8 \uc0dd\uac01\uc744 \ud574\ubcfc \uc218 \uc788\ub294 \uac83\uc774 \uad50\uc721\ubc1b\uc740 \ub9c8\uc74c\uc758 \ud2b9\uc9d5\uc774\ub2e4\u3002"},{en:"Never stop questioning.",zh:"\u6c38\u8fdc\u4e0d\u8981\u505c\u6b62\u63d0\u95ee\u3002",zh_TW:"\u6c38\u9060\u4e0d\u8981\u505c\u6b62\u63d0\u554f\u3002",ja:"\u7591\u554f\u3092\u6301\u3064\u3053\u3068\u3092\u6c7a\u3057\u3066\u3084\u3081\u308b\u306a\u3002",ko:"\uc9c8\ubb38\ud558\ub294 \uac83\uc744 \uc808\ub300 \uba48\ucd94\uc9c0 \ub9c8\ub77c\u3002"},{en:"The man who asks a question is a fool for a minute, the man who does not ask is a fool for life.",zh:"\u95ee\u95ee\u9898\u7684\u4eba\uff0c\u53ea\u50bb\u4e00\u5206\u949f\uff1b\u4e0d\u95ee\u7684\u4eba\uff0c\u50bb\u4e00\u751f\u3002",zh_TW:"\u554f\u554f\u984c\u7684\u4eba\uff0c\u53ea\u50bb\u4e00\u5206\u9418\uff1b\u4e0d\u554f\u7684\u4eba\uff0c\u50bb\u4e00\u751f\u3002",ja:"\u554f\u3046\u8005\u306f\u4e00\u6642\u306e\u6065\u3001\u554f\u308f\u306c\u8005\u306f\u4e00\u751f\u306e\u6065\u3002",ko:"\uc9c8\ubb38\ud558\ub294 \uc0ac\ub78c\uc740 1\ubd84 \ub3d9\uc548 \ubc14\ubcf4\uac00 \ub418\uc9c0\ub9cc, \uc9c8\ubb38\ud558\uc9c0 \uc54a\ub294 \uc0ac\ub78c\uc740 \ud3c9\uc0dd \ubc14\ubcf4\uac00 \ub41c\ub2e4\u3002"},{en:"Wisdom is not a product of schooling but of the lifelong attempt to acquire it.",zh:"\u667a\u6167\u4e0d\u662f\u5b66\u6821\u6559\u80b2\u7684\u4ea7\u7269\uff0c\u800c\u662f\u7ec8\u751f\u52aa\u529b\u83b7\u5f97\u7684\u4ea7\u7269\u3002",zh_TW:"\u667a\u6167\u4e0d\u662f\u5b78\u6821\u6559\u80b2\u7684\u7522\u7269\uff0c\u800c\u662f\u7d42\u751f\u52aa\u529b\u7372\u5f97\u7684\u7522\u7269\u3002",ja:"\u77e5\u6075\u3068\u306f\u5b66\u6821\u6559\u80b2\u306e\u7523\u7269\u3067\u306f\u306a\u304f\u3001\u751f\u6daf\u3092\u304b\u3051\u3066\u7372\u5f97\u3057\u3088\u3046\u3068\u8a66\u307f\u308b\u3053\u3068\u3067\u5f97\u3089\u308c\u308b\u3082\u306e\u3067\u3042\u308b\u3002",ko:"\uc9c0\ud61c\ub294 \ud559\uad50 \uad50\uc721\uc758 \uc0b0\ubb3c\uc774 \uc544\ub2c8\ub77c, \ud3c9\uc0dd\uc5d0 \uac78\uccd0 \uadf8\uac83\uc744 \uc5bb\uc73c\ub824\ub294 \ub178\ub825\uc758 \uc0b0\ubb3c\uc774\ub2e4\u3002"},{en:"The greatest enemy of knowledge is not ignorance, it is the illusion of knowledge.",zh:"\u77e5\u8bc6\u6700\u5927\u7684\u654c\u4eba\u4e0d\u662f\u65e0\u77e5\uff0c\u800c\u662f\u81ea\u4ee5\u4e3a\u62e5\u6709\u77e5\u8bc6\u7684\u5e7b\u89c9\u3002",zh_TW:"\u77e5\u8b58\u6700\u5927\u7684\u6575\u4eba\u4e0d\u662f\u7121\u77e5\uff0c\u800c\u662f\u81ea\u4ee5\u70ba\u64c1\u6709\u77e5\u8b58\u7684\u5e7b\u89ba\u3002",ja:"\u77e5\u8b58\u306e\u6700\u5927\u306e\u6575\u306f\u7121\u77e5\u3067\u306f\u306a\u304f\u3001\u77e5\u3063\u3066\u3044\u308b\u3068\u3044\u3046\u5e7b\u60f3\u3067\u3042\u308b\u3002",ko:"\uc9c0\uc2dd\uc758 \uac00\uc7a5 \ud070 \uc801\uc740 \ubb34\uc9c0\uac00 \uc544\ub2c8\ub77c, \uc548\ub2e4\ub294 \ucc29\uac01\uc774\ub2e4\u3002"},{en:"True wisdom comes to each of us when we realize how little we understand about life, ourselves, and the world around us.",zh:"\u5f53\u6211\u4eec\u8ba4\u8bc6\u5230\u81ea\u5df1\u5bf9\u751f\u547d\u3001\u5bf9\u81ea\u8eab\u3001\u5bf9\u5468\u56f4\u4e16\u754c\u4e86\u89e3\u5f97\u591a\u4e48\u5c11\u65f6\uff0c\u771f\u6b63\u7684\u667a\u6167\u624d\u4f1a\u964d\u4e34\u5230\u6211\u4eec\u6bcf\u4e2a\u4eba\u8eab\u4e0a\u3002",zh_TW:"\u7576\u6211\u5011\u8a8d\u8b58\u5230\u81ea\u5df1\u5c0d\u751f\u547d\u3001\u5c0d\u81ea\u8eab\u3001\u5c0d\u5468\u570d\u4e16\u754c\u4e86\u89e3\u5f97\u591a\u9ebc\u5c11\u6642\uff0c\u771f\u6b63\u7684\u667a\u6167\u624d\u6703\u964d\u81e8\u5230\u6211\u5011\u6bcf\u500b\u4eba\u8eab\u4e0a\u3002",ja:"\u771f\u306e\u77e5\u6075\u306f\u3001\u6211\u3005\u304c\u4eba\u751f\u3084\u81ea\u5206\u81ea\u8eab\u3001\u305d\u3057\u3066\u6211\u3005\u3092\u53d6\u308a\u5dfb\u304f\u4e16\u754c\u306b\u3064\u3044\u3066\u3001\u3044\u304b\u306b\u308f\u305a\u304b\u3057\u304b\u7406\u89e3\u3057\u3066\u3044\u306a\u3044\u304b\u3092\u609f\u3063\u305f\u3068\u304d\u306b\u8a2a\u308c\u308b\u3002",ko:"\uc9c4\uc815\ud55c \uc9c0\ud61c\ub294 \uc6b0\ub9ac\uac00 \uc0b6\uacfc \uc6b0\ub9ac \uc790\uc2e0, \uadf8\ub9ac\uace0 \uc6b0\ub9ac\ub97c \ub458\ub7ec\uc2fc \uc138\uacc4\uc5d0 \ub300\ud574 \uc5bc\ub9c8\ub098 \uc544\ub294 \uac83\uc774 \uc5c6\ub294\uc9c0\ub97c \uae68\ub2ec\uc744 \ub54c \ucc3e\uc544\uc628\ub2e4\u3002"},{en:"Beware of false knowledge; it is more dangerous than ignorance.",zh:"\u8c28\u9632\u865a\u5047\u7684\u77e5\u8bc6\uff1b\u5b83\u6bd4\u65e0\u77e5\u66f4\u5371\u9669\u3002",zh_TW:"\u8b39\u9632\u865b\u5047\u7684\u77e5\u8b58\uff1b\u5b83\u6bd4\u7121\u77e5\u66f4\u5371\u96aa\u3002",ja:"\u507d\u308a\u306e\u77e5\u8b58\u306b\u7528\u5fc3\u305b\u3088\u3002\u305d\u308c\u306f\u7121\u77e5\u3088\u308a\u3082\u5371\u967a\u3067\u3042\u308b\u3002",ko:"\uac70\uc9d3\ub41c \uc9c0\uc2dd\uc744 \uacbd\uacc4\ud558\ub77c. \uadf8\uac83\uc740 \ubb34\uc9c0\ubcf4\ub2e4 \ub354 \uc704\ud5d8\ud558\ub2e4\u3002"},{en:"What does not kill me makes me stronger.",zh:"\u6740\u4e0d\u6b7b\u6211\u7684\uff0c\u4f7f\u6211\u66f4\u5f3a\u5927\u3002",zh_TW:"\u6bba\u4e0d\u6b7b\u6211\u7684\uff0c\u4f7f\u6211\u66f4\u5f37\u5927\u3002",ja:"\u79c1\u3092\u6bba\u3055\u306a\u3044\u3082\u306e\u306f\u3001\u79c1\u3092\u3088\u308a\u5f37\u304f\u3059\u308b\u3002",ko:"\ub098\ub97c \uc8fd\uc774\uc9c0 \ubabb\ud558\ub294 \uac83\uc740 \ub098\ub97c \ub354 \uac15\ud558\uac8c \ub9cc\ub4e0\ub2e4\u3002"},{en:"The only constant in life is change.",zh:"\u751f\u6d3b\u4e2d\u552f\u4e00\u4e0d\u53d8\u7684\u5c31\u662f\u53d8\u5316\u3002",zh_TW:"\u751f\u6d3b\u4e2d\u552f\u4e00\u4e0d\u8b8a\u7684\u5c31\u662f\u8b8a\u5316\u3002",ja:"\u4eba\u751f\u3067\u552f\u4e00\u5909\u308f\u3089\u306a\u3044\u3082\u306e\u306f\u3001\u5909\u5316\u305d\u306e\u3082\u306e\u3067\u3042\u308b\u3002",ko:"\uc0b6\uc5d0\uc11c \uc720\uc77c\ud558\uac8c \ubcc0\ud558\uc9c0 \uc54a\ub294 \uac83\uc740 \ubcc0\ud654\ubfd0\uc774\ub2e4\u3002"},{en:"If you are going through hell, keep going.",zh:"\u5982\u679c\u4f60\u6b63\u5728\u7ecf\u5386\u5730\u72f1\uff0c\u90a3\u5c31\u7ee7\u7eed\u8d70\u4e0b\u53bb\u3002",zh_TW:"\u5982\u679c\u4f60\u6b63\u5728\u7d93\u6b77\u5730\u7344\uff0c\u90a3\u5c31\u7e7c\u7e8c\u8d70\u4e0b\u53bb\u3002",ja:"\u5730\u7344\u3092\u7d4c\u9a13\u3057\u3066\u3044\u308b\u306a\u3089\u3001\u9032\u307f\u7d9a\u3051\u308d\u3002",ko:"\uc9c0\uc625\uc744 \uacaa\uace0 \uc788\ub2e4\uba74, \uacc4\uc18d \ub098\uc544\uac00\ub77c\u3002"},{en:"In the middle of difficulty lies opportunity.",zh:"\u673a\u4f1a\u8574\u85cf\u5728\u56f0\u96be\u4e4b\u4e2d\u3002",zh_TW:"\u6a5f\u6703\u860a\u85cf\u5728\u56f0\u96e3\u4e4b\u4e2d\u3002",ja:"\u56f0\u96e3\u306e\u771f\u3063\u53ea\u4e2d\u306b\u3001\u597d\u6a5f\u304c\u3042\u308b\u3002",ko:"\uc5b4\ub824\uc6c0\uc758 \ud55c\uac00\uc6b4\ub370\uc5d0 \uae30\ud68c\uac00 \uc788\ub2e4\u3002"},{en:"It is not the strongest of the species that survive, nor the most intelligent, but the one most responsive to change.",zh:"\u5b58\u6d3b\u4e0b\u6765\u7684\u7269\u79cd\u4e0d\u662f\u6700\u5f3a\u58ee\u7684\uff0c\u4e5f\u4e0d\u662f\u6700\u806a\u660e\u7684\uff0c\u800c\u662f\u6700\u80fd\u9002\u5e94\u53d8\u5316\u7684\u3002",zh_TW:"\u5b58\u6d3b\u4e0b\u4f86\u7684\u7269\u7a2e\u4e0d\u662f\u6700\u5f3a\u58ef\u7684\uff0c\u4e5f\u4e0d\u662f\u6700\u8070\u660e\u7684\uff0c\u800c\u662f\u6700\u80fd\u9069\u61c9\u8b8a\u5316\u7684\u3002",ja:"\u751f\u304d\u6b8b\u308b\u7a2e\u3068\u306f\u3001\u6700\u3082\u5f37\u3044\u3082\u306e\u3067\u3082\u3001\u6700\u3082\u77e5\u7684\u306a\u3082\u306e\u3067\u3082\u306a\u3044\u3002\u6700\u3082\u5909\u5316\u306b\u5bfe\u5fdc\u3067\u304d\u308b\u3082\u306e\u3067\u3042\u308b\u3002",ko:"\uc0b4\uc544\ub0a8\ub294 \uc885\uc740 \uac00\uc7a5 \uac15\ud55c \uc885\ub3c4, \uac00\uc7a5 \uc9c0\ub2a5\uc774 \ub192\uc740 \uc885\ub3c4 \uc544\ub2c8\ub2e4. \ubcc0\ud654\uc5d0 \uac00\uc7a5 \uc798 \uc801\uc751\ud558\ub294 \uc885\uc774\ub2e4\u3002"},{en:"We must become the change we wish to see in the world.",zh:"\u6211\u4eec\u5fc5\u987b\u6210\u4e3a\u6211\u4eec\u5e0c\u671b\u5728\u4e16\u754c\u4e0a\u770b\u5230\u7684\u6539\u53d8\u3002",zh_TW:"\u6211\u5011\u5fc5\u9808\u6210\u70ba\u6211\u5011\u5e0c\u671b\u5728\u4e16\u754c\u4e0a\u770b\u5230\u7684\u6539\u8b8a\u3002",ja:"\u4e16\u754c\u306b\u5909\u5316\u3092\u671b\u3080\u306a\u3089\u3001\u307e\u305a\u81ea\u3089\u304c\u305d\u306e\u5909\u5316\u3068\u306a\u308c\u3002",ko:"\uc6b0\ub9ac\ub294 \uc138\uc0c1\uc5d0\uc11c \ubcf4\uace0 \uc2f6\uc740 \ubcc0\ud654\uac00 \ub418\uc5b4\uc57c \ud55c\ub2e4\u3002"},{en:"A smooth sea never made a skilled sailor.",zh:"\u5e73\u9759\u7684\u5927\u6d77\u7ec3\u4e0d\u51fa\u719f\u7ec3\u7684\u6c34\u624b\u3002",zh_TW:"\u5e73\u975c\u7684\u5927\u6d77\u7df4\u4e0d\u51fa\u719f\u7df4\u7684\u6c34\u624b\u3002",ja:"\u7a4f\u3084\u304b\u306a\u6d77\u306f\u3001\u719f\u7df4\u3057\u305f\u8239\u4e57\u308a\u3092\u80b2\u3066\u306a\u3044\u3002",ko:"\uc21c\ud0c4\ud55c \ubc14\ub2e4\ub294 \ub178\ub828\ud55c \ubc43\uc0ac\uacf5\uc744 \ub9cc\ub4e4\uc9c0 \ubabb\ud55c\ub2e4\u3002"},{en:"Obstacles don't block the path, they are the path.",zh:"\u969c\u788d\u4e0d\u662f\u6321\u4f4f\u4e86\u8def\uff0c\u969c\u788d\u672c\u8eab\u5c31\u662f\u8def\u3002",zh_TW:"\u969c\u7919\u4e0d\u662f\u64cb\u4f4f\u4e86\u8def\uff0c\u969c\u7919\u672c\u8eab\u5c31\u662f\u8def\u3002",ja:"\u969c\u5bb3\u306f\u9053\u3092\u585e\u3050\u3082\u306e\u3067\u306f\u306a\u304f\u3001\u9053\u305d\u306e\u3082\u306e\u3067\u3042\u308b\u3002",ko:"\uc7a5\uc560\ubb3c\uc740 \uae38\uc744 \ub9c9\ub294 \uac83\uc774 \uc544\ub2c8\ub77c, \uadf8 \uc790\uccb4\uac00 \uae38\uc774\ub2e4\u3002"},{en:"Fall seven times, stand up eight.",zh:"\u4e03\u6b21\u8dcc\u5012\uff0c\u516b\u6b21\u7ad9\u8d77\u3002",zh_TW:"\u4e03\u6b21\u8dcc\u5012\uff0c\u516b\u6b21\u7ad9\u8d77\u3002",ja:"\u4e03\u8ee2\u3073\u516b\u8d77\u304d\u3002",ko:"\uc77c\uacf1 \ubc88 \ub118\uc5b4\uc838\ub3c4, \uc5ec\ub35f \ubc88 \uc77c\uc5b4\uc120\ub2e4\u3002"},{en:"The art of life lies in a constant readjustment to our surroundings.",zh:"\u751f\u6d3b\u7684\u827a\u672f\u5728\u4e8e\u4e0d\u65ad\u5730\u8c03\u6574\u81ea\u5df1\u4ee5\u9002\u5e94\u73af\u5883\u3002",zh_TW:"\u751f\u6d3b\u7684\u85dd\u8853\u5728\u65bc\u4e0d\u65b7\u5730\u8abf\u6574\u81ea\u5df1\u4ee5\u9069\u61c9\u74b0\u5883\u3002",ja:"\u4eba\u751f\uff08\u3058\u3093\u305b\u3044\uff09\u306e\u82b8\u8853\uff08\u3052\u3044\u3058\u3085\u3064\uff09\u306f\u3001\u6211\u3005\uff08\u308f\u308c\u308f\u308c\uff09\u306e\u74b0\u5883\uff08\u304b\u3093\u304d\u3087\u3046\uff09\u306b\u5bfe\uff08\u305f\u3044\uff09\u3059\u308b\u7d76\uff08\u305f\uff09\u3048\u9593\uff08\u307e\uff09\u306a\u3044\u518d\u8abf\u6574\uff08\u3055\u3044\u3061\u3087\u3046\u305b\u3044\uff09\u306b\u3042\u308b\u3002",ko:"\uc0b6\uc758 \uae30\uc220\uc740 \uc6b0\ub9ac\ub97c \ub458\ub7ec\uc2fc \ud658\uacbd\uc5d0 \ub04a\uc784\uc5c6\uc774 \uc7ac\uc801\uc751\ud558\ub294 \ub370 \uc788\ub2e4\u3002"},{en:"Adversity introduces a man to himself.",zh:"\u9006\u5883\u4f7f\u4eba\u8ba4\u8bc6\u81ea\u5df1\u3002",zh_TW:"\u9006\u5883\u4f7f\u4eba\u8a8d\u8b58\u81ea\u5df1\u3002",ja:"\u9006\u5883\u306f\u3001\u4eba\u306b\u81ea\u5206\u81ea\u8eab\u3092\u6559\u3048\u3066\u304f\u308c\u308b\u3002",ko:"\uc5ed\uacbd\uc740 \uc0ac\ub78c\uc5d0\uac8c \uc790\uae30 \uc790\uc2e0\uc744 \uc18c\uac1c\ud55c\ub2e4\u3002"},{en:"The wound is the place where the Light enters you.",zh:"\u4f24\u53e3\u662f\u5149\u8fdb\u5165\u4f60\u5185\u5fc3\u7684\u5165\u53e3\u3002",zh_TW:"\u50b7\u53e3\u662f\u5149\u9032\u5165\u4f60\u5167\u5fc3\u7684\u5165\u53e3\u3002",ja:"\u50b7\u53e3\u306f\u3001\u5149\u304c\u3042\u306a\u305f\u306e\u4e2d\u306b\u5165\u308b\u5834\u6240\u3060\u3002",ko:"\uc0c1\ucc98\ub294 \ube5b\uc774 \ub2f9\uc2e0\uc5d0\uac8c \ub4e4\uc5b4\uc624\ub294 \uacf3\uc774\ub2e4\u3002"},{en:"When we are no longer able to change a situation, we are challenged to change ourselves.",zh:"\u5f53\u6211\u4eec\u65e0\u6cd5\u6539\u53d8\u73b0\u72b6\u65f6\uff0c\u6211\u4eec\u5c31\u9700\u8981\u6539\u53d8\u81ea\u5df1\u3002",zh_TW:"\u7576\u6211\u5011\u7121\u6cd5\u6539\u8b8a\u73fe\u72c0\u6642\uff0c\u6211\u5011\u5c31\u9700\u8981\u6539\u8b8a\u81ea\u5df1\u3002",ja:"\u72b6\u6cc1\u3092\u5909\u3048\u308b\u3053\u3068\u304c\u3067\u304d\u306a\u304f\u306a\u3063\u305f\u3068\u304d\u3001\u6211\u3005\u306f\u81ea\u5206\u81ea\u8eab\u3092\u5909\u3048\u308b\u3053\u3068\u3092\u6c42\u3081\u3089\u308c\u308b\u3002",ko:"\uc0c1\ud669\uc744 \ub354 \uc774\uc0c1 \ubc14\uafc0 \uc218 \uc5c6\uc744 \ub54c, \uc6b0\ub9ac\ub294 \uc790\uc2e0\uc744 \ubc14\uafd4\uc57c \ud558\ub294 \ub3c4\uc804\uc5d0 \uc9c1\uba74\ud55c\ub2e4\u3002"},{en:"Be the change you wish to see in the world.",zh:"\u6210\u4e3a\u4f60\u5e0c\u671b\u5728\u4e16\u754c\u4e0a\u770b\u5230\u7684\u6539\u53d8\u3002",zh_TW:"\u6210\u70ba\u4f60\u5e0c\u671b\u5728\u4e16\u754c\u4e0a\u770b\u5230\u7684\u6539\u8b8a\u3002",ja:"\u3042\u306a\u305f\u304c\u4e16\u754c\u306b\u898b\u305f\u3044\u3068\u9858\u3046\u5909\u5316\u306b\u3001\u3042\u306a\u305f\u81ea\u8eab\u304c\u306a\u308a\u306a\u3055\u3044\u3002",ko:"\uc138\uc0c1\uc5d0\uc11c \ubcf4\uace0 \uc2f6\uc740 \ubcc0\ud654\uac00 \uc788\ub2e4\uba74, \ub2f9\uc2e0 \uc790\uc2e0\uc774 \uadf8 \ubcc0\ud654\uac00 \ub418\uc5b4\ub77c\u3002"},{en:"Do not pray for an easy life, pray for the strength to endure a difficult one.",zh:"\u4e0d\u8981\u7948\u7977\u751f\u6d3b\u5b89\u9038\uff0c\u8981\u7948\u7977\u6709\u529b\u91cf\u53bb\u5fcd\u53d7\u8270\u96be\u7684\u751f\u6d3b\u3002",zh_TW:"\u4e0d\u8981\u7948\u79b1\u751f\u6d3b\u5b89\u9038\uff0c\u8981\u7948\u79b1\u6709\u529b\u91cf\u53bb\u5fcd\u53d7\u8271\u96e3\u7684\u751f\u6d3b\u3002",ja:"\u697d\u306a\u4eba\u751f\u3092\u7948\u308b\u306a\u3002\u56f0\u96e3\u306a\u4eba\u751f\u3092\u8010\u3048\u629c\u304f\u5f37\u3055\u3092\u7948\u308c\u3002",ko:"\ud3b8\uc548\ud55c \uc0b6\uc744 \uae30\ub3c4\ud558\uc9c0 \ub9d0\uace0, \uc5b4\ub824\uc6b4 \uc0b6\uc744 \uacac\ub38c\ub0bc \ud798\uc744 \uae30\ub3c4\ud558\ub77c\u3002"},{en:"A pessimist sees the difficulty in every opportunity; an optimist sees the opportunity in every difficulty.",zh:"\u60b2\u89c2\u8005\u5728\u6bcf\u4e2a\u673a\u4f1a\u4e2d\u90fd\u770b\u5230\u56f0\u96be\uff1b\u4e50\u89c2\u8005\u5728\u6bcf\u4e2a\u56f0\u96be\u4e2d\u90fd\u770b\u5230\u673a\u4f1a\u3002",zh_TW:"\u60b2\u89c0\u8005\u5728\u6bcf\u500b\u6a5f\u6703\u4e2d\u90fd\u770b\u5230\u56f0\u96e3\uff1b\u6a02\u89c0\u8005\u5728\u6bcf\u500b\u56f0\u96e3\u4e2d\u90fd\u770b\u5230\u6a5f\u6703\u3002",ja:"\u60b2\u89b3\u4e3b\u7fa9\u8005\u306f\u3042\u3089\u3086\u308b\u597d\u6a5f\u306e\u4e2d\u306b\u56f0\u96e3\u3092\u898b\u308b\u3002\u697d\u89b3\u4e3b\u7fa9\u8005\u306f\u3042\u3089\u3086\u308b\u56f0\u96e3\u306e\u4e2d\u306b\u597d\u6a5f\u3092\u898b\u308b\u3002",ko:"\ube44\uad00\ub860\uc790\ub294 \ubaa8\ub4e0 \uae30\ud68c\uc5d0\uc11c \uc5b4\ub824\uc6c0\uc744 \ubcf4\uace0, \ub099\uad00\ub860\uc790\ub294 \ubaa8\ub4e0 \uc5b4\ub824\uc6c0\uc5d0\uc11c \uae30\ud68c\ub97c \ubcf8\ub2e4\u3002"},{en:"It's not what happens to you, but how you react to it that matters.",zh:"\u91cd\u8981\u7684\u4e0d\u662f\u53d1\u751f\u5728\u4f60\u8eab\u4e0a\u7684\u4e8b\uff0c\u800c\u662f\u4f60\u5982\u4f55\u5e94\u5bf9\u5b83\u3002",zh_TW:"\u91cd\u8981\u7684\u4e0d\u662f\u767c\u751f\u5728\u4f60\u8eab\u4e0a\u7684\u4e8b\uff0c\u800c\u662f\u4f60\u5982\u4f55\u61c9\u5c0d\u5b83\u3002",ja:"\u3042\u306a\u305f\u306b\u4f55\u304c\u8d77\u3053\u308b\u304b\u3067\u306f\u306a\u304f\u3001\u305d\u308c\u306b\u3069\u3046\u53cd\u5fdc\u3059\u308b\u304b\u304c\u91cd\u8981\u3060\u3002",ko:"\ub2f9\uc2e0\uc5d0\uac8c \ubb34\uc2a8 \uc77c\uc774 \uc77c\uc5b4\ub0ac\ub294\uc9c0\uac00 \uc911\uc694\ud55c \uac83\uc774 \uc544\ub2c8\ub77c, \ub2f9\uc2e0\uc774 \uadf8\uac83\uc5d0 \uc5b4\ub5bb\uac8c \ubc18\uc751\ud558\ub294\uc9c0\uac00 \uc911\uc694\ud558\ub2e4\u3002"},{en:"To love oneself is the beginning of a lifelong romance.",zh:"\u7231\u81ea\u5df1\u662f\u7ec8\u8eab\u6d6a\u6f2b\u7684\u5f00\u59cb\u3002",zh_TW:"\u611b\u81ea\u5df1\u662f\u7d42\u8eab\u6d6a\u6f2b\u7684\u958b\u59cb\u3002",ja:"\u81ea\u5206\u81ea\u8eab\u3092\u611b\u3059\u308b\u3053\u3068\u306f\u3001\u4e00\u751f\u7d9a\u304f\u30ed\u30de\u30f3\u30b9\u306e\u59cb\u307e\u308a\u3060\u3002",ko:"\uc790\uc2e0\uc744 \uc0ac\ub791\ud558\ub294 \uac83\uc740 \ud3c9\uc0dd \uc9c0\uc18d\ub418\ub294 \ub85c\ub9e8\uc2a4\uc758 \uc2dc\uc791\uc774\ub2e4\u3002"},{en:"Love is composed of a single soul inhabiting two bodies.",zh:"\u7231\u662f\u6816\u606f\u4e8e\u4e24\u4e2a\u8eab\u4f53\u4e2d\u7684\u540c\u4e00\u4e2a\u7075\u9b42\u3002",zh_TW:"\u611b\u662f\u68f2\u606f\u65bc\u5169\u500b\u8eab\u9ad4\u4e2d\u7684\u540c\u4e00\u500b\u9748\u9b42\u3002",ja:"\u611b\u3068\u306f\u3001\u4e8c\u3064\u306e\u4f53\u306b\u5bbf\u308b\u4e00\u3064\u306e\u9b42\u3067\u69cb\u6210\u3055\u308c\u3066\u3044\u308b\u3002",ko:"\uc0ac\ub791\uc740 \ub450 \uac1c\uc758 \ubab8\uc5d0 \uae43\ub4e0 \ud558\ub098\uc758 \uc601\ud63c\uc73c\ub85c \uc774\ub8e8\uc5b4\uc838 \uc788\ub2e4\u3002"},{en:"Man is the measure of all things.",zh:"\u4eba\u662f\u4e07\u7269\u7684\u5c3a\u5ea6\u3002",zh_TW:"\u4eba\u662f\u842c\u7269\u7684\u5c3a\u5ea6\u3002",ja:"\u4eba\u9593\u306f\u4e07\u7269\u306e\u5c3a\u5ea6\u3067\u3042\u308b\u3002",ko:"\uc778\uac04\uc740 \ub9cc\ubb3c\uc758 \ucc99\ub3c4\uc774\ub2e4\u3002"},{en:"The best and most beautiful things in this world cannot be seen or even heard, but must be felt with the heart.",zh:"\u4e16\u754c\u4e0a\u6700\u597d\u6700\u7f8e\u7684\u4e1c\u897f\u662f\u770b\u4e0d\u89c1\u4e5f\u542c\u4e0d\u89c1\u7684\uff0c\u5fc5\u987b\u7528\u5fc3\u53bb\u611f\u53d7\u3002",zh_TW:"\u4e16\u754c\u4e0a\u6700\u597d\u6700\u7f8e\u7684\u6771\u897f\u662f\u770b\u4e0d\u898b\u4e5f\u807d\u4e0d\u898b\u7684\uff0c\u5fc5\u9808\u7528\u5fc3\u53bb\u611f\u53d7\u3002",ja:"\u3053\u306e\u4e16\u3067\u6700\u3082\u7d20\u6674\u3089\u3057\u304f\u3001\u6700\u3082\u7f8e\u3057\u3044\u3082\u306e\u306f\u3001\u76ee\u3067\u898b\u305f\u308a\u805e\u3044\u305f\u308a\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u3002\u5fc3\u3067\u611f\u3058\u306a\u3051\u308c\u3070\u306a\u3089\u306a\u3044\u3002",ko:"\uc774 \uc138\uc0c1\uc5d0\uc11c \uac00\uc7a5 \uc88b\uace0 \uac00\uc7a5 \uc544\ub984\ub2e4\uc6b4 \uac83\ub4e4\uc740 \ubcf4\uc774\uac70\ub098 \ub4e4\ub9ac\uc9c0 \uc54a\ub294\ub2e4. \uc624\uc9c1 \ub9c8\uc74c\uc73c\ub85c\ub9cc \ub290\uaef4\uc57c \ud55c\ub2e4\u3002"},{en:"Where there is love there is life.",zh:"\u6709\u7231\u7684\u5730\u65b9\u5c31\u6709\u751f\u547d\u3002",zh_TW:"\u6709\u611b\u7684\u5730\u65b9\u5c31\u6709\u751f\u547d\u3002",ja:"\u611b\u304c\u3042\u308b\u3068\u3053\u308d\u306b\u4eba\u751f\u304c\u3042\u308b\u3002",ko:"\uc0ac\ub791\uc774 \uc788\ub294 \uacf3\uc5d0 \uc0b6\uc774 \uc788\ub2e4\u3002"},{en:"If you want to be loved, be lovable.",zh:"\u5982\u679c\u4f60\u60f3\u88ab\u7231\uff0c\u5c31\u8981\u53d8\u5f97\u53ef\u7231\u3002",zh_TW:"\u5982\u679c\u4f60\u60f3\u88ab\u611b\uff0c\u5c31\u8981\u8b8a\u5f97\u53ef\u611b\u3002",ja:"\u611b\u3055\u308c\u305f\u3044\u306a\u3089\u3001\u611b\u3089\u3057\u304f\u3042\u308c\u3002",ko:"\uc0ac\ub791\ubc1b\uace0 \uc2f6\ub2e4\uba74, \uc0ac\ub791\uc2a4\ub7ec\uc6cc\uc838\ub77c\u3002"},{en:"We are all in the gutter, but some of us are looking at the stars.",zh:"\u6211\u4eec\u90fd\u8eab\u5904\u6c9f\u6e20\uff0c\u4f46\u4ecd\u6709\u4eba\u4ef0\u671b\u661f\u7a7a\u3002",zh_TW:"\u6211\u5011\u90fd\u8eab\u8655\u6e9d\u6e20\uff0c\u4f46\u4ecd\u6709\u4eba\u4ef0\u671b\u661f\u7a7a\u3002",ja:"\u6211\u3005\u306f\u307f\u306a\u6e9d\u306e\u4e2d\u306b\u3044\u308b\u3002\u3060\u304c\u3001\u305d\u3053\u304b\u3089\u661f\u3092\u898b\u4e0a\u3052\u3066\u3044\u308b\u8005\u3082\u3044\u308b\u306e\u3060\u3002",ko:"\uc6b0\ub9ac\ub294 \ubaa8\ub450 \uc2dc\uad81\ucc3d\uc5d0 \uc788\uc9c0\ub9cc, \uc6b0\ub9ac \uc911 \uc77c\ubd80\ub294 \ubcc4\uc744 \ubc14\ub77c\ubcf4\uace0 \uc788\ub2e4\u3002"},{en:"The only thing we have to fear is fear itself.",zh:"\u6211\u4eec\u552f\u4e00\u9700\u8981\u6050\u60e7\u7684\u5c31\u662f\u6050\u60e7\u672c\u8eab\u3002",zh_TW:"\u6211\u5011\u552f\u4e00\u9700\u8981\u6050\u61fc\u7684\u5c31\u662f\u6050\u61fc\u672c\u8eab\u3002",ja:"\u6211\u3005\u304c\u6050\u308c\u308b\u3079\u304d\u552f\u4e00\u306e\u3082\u306e\u306f\u3001\u6050\u308c\u305d\u306e\u3082\u306e\u3067\u3042\u308b\u3002",ko:"\uc6b0\ub9ac\uac00 \ub450\ub824\uc6cc\ud574\uc57c \ud560 \uc720\uc77c\ud55c \uac83\uc740 \ub450\ub824\uc6c0 \uadf8 \uc790\uccb4\uc774\ub2e4\u3002"},{en:"Be kind, for everyone you meet is fighting a hard battle.",zh:"\u8981\u53cb\u5584\uff0c\u56e0\u4e3a\u4f60\u9047\u5230\u7684\u6bcf\u4e2a\u4eba\u90fd\u5728\u6253\u4e00\u573a\u8270\u82e6\u7684\u6218\u6597\u3002",zh_TW:"\u8981\u53cb\u5584\uff0c\u56e0\u70ba\u4f60\u9047\u5230\u7684\u6bcf\u500b\u4eba\u90fd\u5728\u6253\u4e00\u5834\u8271\u82e6\u7684\u6230\u9b25\u3002",ja:"\u89aa\u5207\u306b\u3057\u306a\u3055\u3044\u3002\u3042\u306a\u305f\u304c\u51fa\u4f1a\u3046\u8ab0\u3082\u304c\u3001\u56f0\u96e3\u306a\u6226\u3044\u3092\u6226\u3063\u3066\u3044\u308b\u306e\u3060\u304b\u3089\u3002",ko:"\uce5c\uc808\ud558\ub77c. \ub2f9\uc2e0\uc774 \ub9cc\ub098\ub294 \ubaa8\ub4e0 \uc0ac\ub78c\uc740 \ud798\uaca8\uc6b4 \uc2f8\uc6c0\uc744 \ud558\uace0 \uc788\uae30 \ub54c\ubb38\uc774\ub2e4\u3002"},{en:"Man is born free, and everywhere he is in chains.",zh:"\u4eba\u751f\u800c\u81ea\u7531\uff0c\u5374\u65e0\u5f80\u4e0d\u5728\u67b7\u9501\u4e4b\u4e2d\u3002",zh_TW:"\u4eba\u751f\u800c\u81ea\u7531\uff0c\u537b\u7121\u5f80\u4e0d\u5728\u67b7\u9396\u4e4b\u4e2d\u3002",ja:"\u4eba\u306f\u751f\u307e\u308c\u306a\u304c\u3089\u306b\u3057\u3066\u81ea\u7531\u3060\u304c\u3001\u3044\u305f\u308b\u3068\u3053\u308d\u3067\u9396\u306b\u3064\u306a\u304c\u308c\u3066\u3044\u308b\u3002",ko:"\uc778\uac04\uc740 \uc790\uc720\ub86d\uac8c \ud0dc\uc5b4\ub0ac\uc73c\ub098, \uc5b4\ub514\uc5d0\uc11c\ub098 \uc1e0\uc0ac\uc2ac\uc5d0 \ubb36\uc5ec \uc788\ub2e4\u3002"},{en:"We love the things we love for what they are.",zh:"\u6211\u4eec\u7231\u6211\u4eec\u6240\u7231\u4e4b\u7269\uff0c\u53ea\u56e0\u5b83\u4eec\u672c\u6765\u7684\u6837\u5b50\u3002",zh_TW:"\u6211\u5011\u611b\u6211\u5011\u6240\u611b\u4e4b\u7269\uff0c\u53ea\u56e0\u5b83\u5011\u672c\u4f86\u7684\u6a23\u5b50\u3002",ja:"\u6211\u3005\u304c\u611b\u3059\u308b\u3082\u306e\u3092\u611b\u3059\u308b\u306e\u306f\u3001\u305d\u308c\u304c\u305d\u308c\u3067\u3042\u308b\u304b\u3089\u3060\u3002",ko:"\uc6b0\ub9ac\ub294 \uc6b0\ub9ac\uac00 \uc0ac\ub791\ud558\ub294 \uac83\ub4e4\uc744 \uadf8 \uc790\uccb4\ub85c \uc0ac\ub791\ud55c\ub2e4\u3002"},{en:"Darkness cannot drive out darkness; only light can do that. Hate cannot drive out hate; only love can do that.",zh:"\u9ed1\u6697\u65e0\u6cd5\u9a71\u9010\u9ed1\u6697\uff0c\u53ea\u6709\u5149\u660e\u53ef\u4ee5\uff1b\u4ec7\u6068\u65e0\u6cd5\u9a71\u9010\u4ec7\u6068\uff0c\u53ea\u6709\u7231\u53ef\u4ee5\u3002",zh_TW:"\u9ed1\u6697\u7121\u6cd5\u9a45\u9010\u9ed1\u6697\uff0c\u53ea\u6709\u5149\u660e\u53ef\u4ee5\uff1b\u4ec7\u6068\u7121\u6cd5\u9a45\u9010\u4ec7\u6068\uff0c\u53ea\u6709\u611b\u53ef\u4ee5\u3002",ja:"\u95c7\u306f\u95c7\u3092\u8ffd\u3044\u6255\u3046\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u3002\u5149\u3060\u3051\u304c\u305d\u308c\u3092\u53ef\u80fd\u306b\u3059\u308b\u3002\u618e\u3057\u307f\u306f\u618e\u3057\u307f\u3092\u8ffd\u3044\u6255\u3046\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u3002\u611b\u3060\u3051\u304c\u305d\u308c\u3092\u53ef\u80fd\u306b\u3059\u308b\u3002",ko:"\uc5b4\ub460\uc740 \uc5b4\ub460\uc744 \ubab0\uc544\ub0bc \uc218 \uc5c6\ub2e4. \uc624\uc9c1 \ube5b\ub9cc\uc774 \ud560 \uc218 \uc788\ub2e4. \uc99d\uc624\ub294 \uc99d\uc624\ub97c \ubab0\uc544\ub0bc \uc218 \uc5c6\ub2e4. \uc624\uc9c1 \uc0ac\ub791\ub9cc\uc774 \ud560 \uc218 \uc788\ub2e4\u3002"},{en:"An eye for an eye only ends up making the whole world blind.",zh:"\u4ee5\u773c\u8fd8\u773c\uff0c\u53ea\u4f1a\u8ba9\u6574\u4e2a\u4e16\u754c\u90fd\u76f2\u76ee\u3002",zh_TW:"\u4ee5\u773c\u9084\u773c\uff0c\u53ea\u6703\u8b93\u6574\u500b\u4e16\u754c\u90fd\u76f2\u76ee\u3002",ja:"\u300c\u76ee\u306b\u306f\u76ee\u3092\u300d\u306f\u3001\u5168\u4e16\u754c\u3092\u76f2\u76ee\u306b\u3059\u308b\u3060\u3051\u3060\u3002",ko:"'\ub208\uc5d0\ub294 \ub208'\uc740 \uacb0\uad6d \uc628 \uc138\uc0c1\uc744 \ub208\uba40\uac8c \ud560 \ubfd0\uc774\ub2e4\u3002"},{en:"Hell is other people.",zh:"\u4ed6\u4eba\u5373\u5730\u72f1\u3002",zh_TW:"\u4ed6\u4eba\u5373\u5730\u7344\u3002",ja:"\u5730\u7344\u3068\u306f\u3001\u4ed6\u4eba\u3067\u3042\u308b\u3002",ko:"\ud0c0\uc778\uc740 \uc9c0\uc625\uc774\ub2e4\u3002"},{en:"You will not be punished for your anger, you will be punished by your anger.",zh:"\u4f60\u4e0d\u4f1a\u56e0\u4e3a\u4f60\u7684\u6124\u6012\u800c\u53d7\u5230\u60e9\u7f5a\uff0c\u4f60\u4f1a\u88ab\u4f60\u7684\u6124\u6012\u6240\u60e9\u7f5a\u3002",zh_TW:"\u4f60\u4e0d\u6703\u56e0\u70ba\u4f60\u7684\u61a4\u6012\u800c\u53d7\u5230\u61f2\u7f70\uff0c\u4f60\u6703\u88ab\u4f60\u7684\u61a4\u6012\u6240\u61f2\u7f70\u3002",ja:"\u3042\u306a\u305f\u306f\u6012\u308a\u306e\u305f\u3081\u306b\u7f70\u305b\u3089\u308c\u308b\u306e\u3067\u306f\u306a\u3044\u3002\u6012\u308a\u306b\u3088\u3063\u3066\u7f70\u305b\u3089\u308c\u308b\u306e\u3060\u3002",ko:"\ub2f9\uc2e0\uc740 \ub2f9\uc2e0\uc758 \ubd84\ub178 \ub54c\ubb38\uc5d0 \ubc8c\uc744 \ubc1b\ub294 \uac83\uc774 \uc544\ub2c8\ub77c, \ub2f9\uc2e0\uc758 \ubd84\ub178\uc5d0 \uc758\ud574 \ubc8c\uc744 \ubc1b\uc744 \uac83\uc774\ub2e4\u3002"},{en:"To err is human, to forgive divine.",zh:"\u72af\u9519\u662f\u4eba\u6027\uff0c\u5bbd\u6055\u662f\u795e\u6027\u3002",zh_TW:"\u72af\u932f\u662f\u4eba\u6027\uff0c\u5bec\u6055\u662f\u795e\u6027\u3002",ja:"\u904e\u3064\u306f\u4eba\u306e\u5e38\u3001\u8a31\u3059\u306f\u795e\u306e\u696d\u3002",ko:"\uc2e4\uc218\ud558\ub294 \uac83\uc740 \uc778\uac04\uc774\uace0, \uc6a9\uc11c\ud558\ub294 \uac83\uc740 \uc2e0\uc774\ub2e4\u3002"},{en:"Man is the only creature who refuses to be what he is.",zh:"\u4eba\u662f\u552f\u4e00\u62d2\u7edd\u627f\u8ba4\u81ea\u5df1\u672c\u8d28\u7684\u751f\u7269\u3002",zh_TW:"\u4eba\u662f\u552f\u4e00\u62d2\u7d55\u627f\u8a8d\u81ea\u5df1\u672c\u8cea\u7684\u751f\u7269\u3002",ja:"\u4eba\u9593\u306f\u3001\u81ea\u5206\u304c\u4f55\u8005\u3067\u3042\u308b\u304b\u3092\u62d2\u5426\u3059\u308b\u552f\u4e00\u306e\u751f\u304d\u7269\u3067\u3042\u308b\u3002",ko:"\uc778\uac04\uc740 \uc790\uc2e0\uc774 \ubb34\uc5c7\uc778\uc9c0\ub97c \uac70\ubd80\ud558\ub294 \uc720\uc77c\ud55c \uc0dd\ubb3c\uc774\ub2e4\u3002"},{en:"Beauty is in the eye of the beholder.",zh:"\u60c5\u4eba\u773c\u91cc\u51fa\u897f\u65bd\u3002",zh_TW:"\u60c5\u4eba\u773c\u88e1\u51fa\u897f\u65bd\u3002",ja:"\u7f8e\u306f\u898b\u308b\u4eba\u306e\u76ee\u306e\u4e2d\u306b\u3042\u308b\u3002",ko:"\uc544\ub984\ub2e4\uc6c0\uc740 \ubcf4\ub294 \uc0ac\ub78c\uc758 \ub208\uc5d0 \ub2ec\ub824 \uc788\ub2e4\u3002"},{en:"All that we see or seem is but a dream within a dream.",zh:"\u6211\u4eec\u6240\u89c1\u6240\u611f\uff0c\u7686\u5982\u68a6\u4e2d\u4e4b\u68a6\u3002",zh_TW:"\u6211\u5011\u6240\u898b\u6240\u611f\uff0c\u7686\u5982\u5922\u4e2d\u4e4b\u5922\u3002",ja:"\u6211\u3005\u304c\u898b\u305f\u308a\u611f\u3058\u305f\u308a\u3059\u308b\u3059\u3079\u3066\u306f\u3001\u5922\u306e\u4e2d\u306e\u5922\u306b\u3059\u304e\u306a\u3044\u3002",ko:"\uc6b0\ub9ac\uac00 \ubcf4\uac70\ub098 \ubcf4\uc774\ub294 \ubaa8\ub4e0 \uac83\uc740 \uafc8\uc18d\uc758 \uafc8\uc77c \ubfd0\uc774\ub2e4\u3002"},{en:"Everything you can imagine is real.",zh:"\u4f60\u80fd\u60f3\u8c61\u7684\u4e00\u5207\u90fd\u662f\u771f\u5b9e\u7684\u3002",zh_TW:"\u4f60\u80fd\u60f3\u50cf\u7684\u4e00\u5207\u90fd\u662f\u771f\u5be6\u7684\u3002",ja:"\u60f3\u50cf\u3067\u304d\u308b\u3053\u3068\u306f\u3001\u3059\u3079\u3066\u73fe\u5b9f\u306a\u306e\u3060\u3002",ko:"\ub2f9\uc2e0\uc774 \uc0c1\uc0c1\ud560 \uc218 \uc788\ub294 \ubaa8\ub4e0 \uac83\uc740 \ud604\uc2e4\uc774\ub2e4\u3002"},{en:"The map is not the territory.",zh:"\u5730\u56fe\u5e76\u975e\u9886\u571f\u3002",zh_TW:"\u5730\u5716\u4e26\u975e\u9818\u571f\u3002",ja:"\u5730\u56f3\u306f\u9818\u571f\u3067\u306f\u306a\u3044\u3002",ko:"\uc9c0\ub3c4\ub294 \uc601\ud1a0\uac00 \uc544\ub2c8\ub2e4\u3002"},{en:"We don't see things as they are, we see them as we are.",zh:"\u6211\u4eec\u770b\u5230\u7684\u4e0d\u662f\u4e8b\u7269\u7684\u539f\u8c8c\uff0c\u800c\u662f\u6211\u4eec\u81ea\u5df1\u7684\u6837\u5b50\u3002",zh_TW:"\u6211\u5011\u770b\u5230\u7684\u4e0d\u662f\u4e8b\u7269\u7684\u539f\u8c8c\uff0c\u800c\u662f\u6211\u5011\u81ea\u5df1\u7684\u6a23\u5b50\u3002",ja:"\u6211\u3005\u306f\u7269\u4e8b\u3092\u3042\u308b\u304c\u307e\u307e\u306b\u898b\u3066\u3044\u308b\u306e\u3067\u306f\u306a\u3044\u3002\u6211\u3005\u304c\u3042\u308b\u304c\u307e\u307e\u306b\u898b\u3066\u3044\u308b\u306e\u3060\u3002",ko:"\uc6b0\ub9ac\ub294 \uc0ac\ubb3c\uc744 \uc788\ub294 \uadf8\ub300\ub85c \ubcf4\uc9c0 \uc54a\uace0, \uc6b0\ub9ac \uc790\uc2e0(\uc758 \ubaa8\uc2b5)\ub300\ub85c \ubcf8\ub2e4\u3002"},{en:"There are two ways to be fooled. One is to believe what isn't true; the other is to refuse to believe what is true.",zh:"\u88ab\u611a\u5f04\u6709\u4e24\u79cd\u65b9\u5f0f\u3002\u4e00\u79cd\u662f\u76f8\u4fe1\u4e0d\u771f\u5b9e\u7684\u4e1c\u897f\uff1b\u53e6\u4e00\u79cd\u662f\u62d2\u7edd\u76f8\u4fe1\u771f\u5b9e\u7684\u4e1c\u897f\u3002",zh_TW:"\u88ab\u611a\u5f04\u6709\u5169\u7a2e\u65b9\u5f0f\u3002\u4e00\u7a2e\u662f\u76f8\u4fe1\u4e0d\u771f\u5be6\u7684\u6771\u897f\uff1b\u53e6\u4e00\u7a2e\u662f\u62d2\u7d55\u76f8\u4fe1\u771f\u5be6\u7684\u6771\u897f\u3002",ja:"\u9a19\u3055\u308c\u308b\u65b9\u6cd5\u306f\u4e8c\u3064\u3042\u308b\u3002\u4e00\u3064\u306f\u771f\u5b9f\u3067\u306a\u3044\u3053\u3068\u3092\u4fe1\u3058\u308b\u3053\u3068\u3002\u3082\u3046\u4e00\u3064\u306f\u771f\u5b9f\u3067\u3042\u308b\u3053\u3068\u3092\u4fe1\u3058\u3088\u3046\u3068\u3057\u306a\u3044\u3053\u3068\u3060\u3002",ko:"\uc18d\ub294 \ubc29\ubc95\uc5d0\ub294 \ub450 \uac00\uc9c0\uac00 \uc788\ub2e4. \ud558\ub098\ub294 \uc0ac\uc2e4\uc774 \uc544\ub2cc \uac83\uc744 \ubbff\ub294 \uac83\uc774\uace0, \ub2e4\ub978 \ud558\ub098\ub294 \uc0ac\uc2e4\uc778 \uac83\uc744 \ubbff\uae30\ub97c \uac70\ubd80\ud558\ub294 \uac83\uc774\ub2e4\u3002"},{en:"Simplicity is the ultimate sophistication.",zh:"\u7b80\u7ea6\u662f\u6781\u81f4\u7684\u590d\u6742\u3002",zh_TW:"\u7c21\u7d04\u662f\u6975\u81f4\u7684\u8907\u96dc\u3002",ja:"\u30b7\u30f3\u30d7\u30eb\u3055\u306f\u3001\u7a76\u6975\u306e\u6d17\u7df4\u3067\u3042\u308b\u3002",ko:"\ub2e8\uc21c\ud568\uc740 \uad81\uadf9\uc758 \uc815\uad50\ud568\uc774\ub2e4\u3002"},{en:"The truth will set you free.",zh:"\u771f\u76f8\u5c06\u4f7f\u4f60\u81ea\u7531\u3002",zh_TW:"\u771f\u76f8\u5c07\u4f7f\u4f60\u81ea\u7531\u3002",ja:"\u771f\u5b9f\u306f\u3001\u3042\u306a\u305f\u3092\u81ea\u7531\u306b\u3059\u308b\u3002",ko:"\uc9c4\ub9ac\uac00 \ub108\ud76c\ub97c \uc790\uc720\ub86d\uac8c \ud558\ub9ac\ub77c\u3002"},{en:"Reality is merely an illusion, albeit a very persistent one.",zh:"\u73b0\u5b9e\u53ea\u662f\u4e00\u79cd\u5e7b\u89c9\uff0c\u5c3d\u7ba1\u662f\u4e00\u79cd\u975e\u5e38\u6301\u4e45\u7684\u5e7b\u89c9\u3002",zh_TW:"\u73fe\u5be6\u53ea\u662f\u4e00\u7a2e\u5e7b\u89ba\uff0c\u5118\u7ba1\u662f\u4e00\u7a2e\u975e\u5e38\u6301\u4e45\u7684\u5e7b\u89ba\u3002",ja:"\u73fe\u5b9f\u3068\u306f\u3001\u975e\u5e38\u306b\u6839\u5f37\u3044\u305f\u3060\u306e\u5e7b\u60f3\u306b\u3059\u304e\u306a\u3044\u3002",ko:"\ud604\uc2e4\uc740 \ub2e8\uc9c0 \ud658\uc0c1\uc77c \ubfd0\uc774\ub2e4. \ube44\ub85d \ub9e4\uc6b0 \uc9d1\uc694\ud55c \ud658\uc0c1\uc774\uae34 \ud558\uc9c0\ub9cc\u3002"},{en:"What is rational is actual and what is actual is rational.",zh:"\u51e1\u662f\u5408\u4e4e\u7406\u6027\u7684\u4e1c\u897f\u90fd\u662f\u73b0\u5b9e\u7684\uff0c\u51e1\u662f\u73b0\u5b9e\u7684\u4e1c\u897f\u90fd\u662f\u5408\u4e4e\u7406\u6027\u7684\u3002",zh_TW:"\u51e1\u662f\u5408\u4e4e\u7406\u6027\u7684\u6771\u897f\u90fd\u662f\u73fe\u5be6\u7684\uff0c\u51e1\u662f\u73fe\u5be6\u7684\u6771\u897f\u90fd\u662f\u5408\u4e4e\u7406\u6027\u7684\u3002",ja:"\u7406\u6027\u7684\u306a\u3082\u306e\u306f\u73fe\u5b9f\u7684\u3067\u3042\u308a\u3001\u73fe\u5b9f\u7684\u306a\u3082\u306e\u306f\u7406\u6027\u7684\u3067\u3042\u308b\u3002",ko:"\uc774\uc131\uc801\uc778 \uac83\uc740 \ud604\uc2e4\uc801\uc774\uace0, \ud604\uc2e4\uc801\uc778 \uac83\uc740 \uc774\uc131\uc801\uc774\ub2e4\u3002"},{en:"Truth is like the sun. You can shut it out for a time, but it ain't goin' away.",zh:"\u771f\u76f8\u5c31\u50cf\u592a\u9633\u3002\u4f60\u53ef\u4ee5\u6682\u65f6\u5c06\u5b83\u906e\u4f4f\uff0c\u4f46\u5b83\u4e0d\u4f1a\u6d88\u5931\u3002",zh_TW:"\u771f\u76f8\u5c31\u50cf\u592a\u967d\u3002\u4f60\u53ef\u4ee5\u66ab\u6642\u5c07\u5b83\u906e\u4f4f\uff0c\u4f46\u5b83\u4e0d\u6703\u6d88\u5931\u3002",ja:"\u771f\u5b9f\u306f\u592a\u967d\u306e\u3088\u3046\u306a\u3082\u306e\u3060\u3002\u4e00\u6642\u7684\u306b\u96a0\u3059\u3053\u3068\u306f\u3067\u304d\u3066\u3082\u3001\u6c7a\u3057\u3066\u306a\u304f\u306a\u308a\u306f\u3057\u306a\u3044\u3002",ko:"\uc9c4\uc2e4\uc740 \ud0dc\uc591\uacfc \uac19\ub2e4. \uc7a0\uc2dc \uac00\ub9b4 \uc218\ub294 \uc788\uc9c0\ub9cc, \uc0ac\ub77c\uc9c0\uac8c \ud560 \uc218\ub294 \uc5c6\ub2e4\u3002"},{en:"Everything we hear is an opinion, not a fact. Everything we see is a perspective, not the truth.",zh:"\u6211\u4eec\u542c\u5230\u7684\u4e00\u5207\u90fd\u53ea\u662f\u89c2\u70b9\uff0c\u800c\u975e\u4e8b\u5b9e\u3002\u6211\u4eec\u770b\u5230\u7684\u4e00\u5207\u90fd\u53ea\u662f\u89c6\u89d2\uff0c\u800c\u975e\u771f\u76f8\u3002",zh_TW:"\u6211\u5011\u807d\u5230\u7684\u4e00\u5207\u90fd\u53ea\u662f\u89c0\u9ede\uff0c\u800c\u975e\u4e8b\u5be6\u3002\u6211\u5011\u770b\u5230\u7684\u4e00\u5207\u90fd\u53ea\u662f\u8996\u89d2\uff0c\u800c\u975e\u771f\u76f8\u3002",ja:"\u6211\u3005\u304c\u805e\u304f\u3053\u3068\u3059\u3079\u3066\u304c\u610f\u898b\u3067\u3042\u308a\u3001\u4e8b\u5b9f\u3067\u306f\u306a\u3044\u3002\u6211\u3005\u304c\u898b\u308b\u3053\u3068\u3059\u3079\u3066\u304c\u8996\u70b9\u3067\u3042\u308a\u3001\u771f\u5b9f\u3067\u306f\u306a\u3044\u3002",ko:"\uc6b0\ub9ac\uac00 \ub4e3\ub294 \ubaa8\ub4e0 \uac83\uc740 \uc758\uacac\uc774\uc9c0, \uc0ac\uc2e4\uc774 \uc544\ub2c8\ub2e4. \uc6b0\ub9ac\uac00 \ubcf4\ub294 \ubaa8\ub4e0 \uac83\uc740 \uad00\uc810\uc774\uc9c0, \uc9c4\uc2e4\uc774 \uc544\ub2c8\ub2e4\u3002"},{en:"There is no truth. There is only perception.",zh:"\u6ca1\u6709\u771f\u76f8\uff0c\u53ea\u6709\u8ba4\u77e5\u3002",zh_TW:"\u6c92\u6709\u771f\u76f8\uff0c\u53ea\u6709\u8a8d\u77e5\u3002",ja:"\u771f\u5b9f\u306a\u3069\u306a\u3044\u3002\u305f\u3060\u8a8d\u8b58\u304c\u3042\u308b\u3060\u3051\u3060\u3002",ko:"\uc9c4\uc2e4\uc740 \uc5c6\ub2e4. \uc624\uc9c1 \uc778\uc2dd\ub9cc\uc774 \uc788\uc744 \ubfd0\uc774\ub2e4\u3002"},{en:"If you look deep enough into anything, you will find mathematics.",zh:"\u5982\u679c\u4f60\u5bf9\u4efb\u4f55\u4e8b\u7269\u770b\u5f97\u8db3\u591f\u6df1\u5165\uff0c\u4f60\u90fd\u4f1a\u53d1\u73b0\u6570\u5b66\u3002",zh_TW:"\u5982\u679c\u4f60\u5c0d\u4efb\u4f55\u4e8b\u7269\u770b\u5f97\u8db3\u5920\u6df1\u5165\uff0c\u4f60\u90fd\u6703\u767c\u73fe\u6578\u5b78\u3002",ja:"\u4f55\u4e8b\u3082\u6df1\u304f\u898b\u3064\u3081\u308c\u3070\u3001\u305d\u3053\u306b\u306f\u6570\u5b66\u304c\u3042\u308b\u3002",ko:"\ubb34\uc5c7\uc774\ub4e0 \ucda9\ubd84\ud788 \uae4a\uc774 \ub4e4\uc5ec\ub2e4\ubcf4\uba74, \uc218\ud559\uc744 \ubc1c\uacac\ud558\uac8c \ub420 \uac83\uc774\ub2e4\u3002"},{en:"The medium is the message.",zh:"\u5a92\u4ecb\u5373\u4fe1\u606f\u3002",zh_TW:"\u5a92\u4ecb\u5373\u8a0a\u606f\u3002",ja:"\u30e1\u30c7\u30a3\u30a2\u306f\u30e1\u30c3\u30bb\u30fc\u30b8\u3067\u3042\u308b\u3002",ko:"\ubbf8\ub514\uc5b4\ub294 \uba54\uc2dc\uc9c0\ub2e4\u3002"},{en:"Nothing is true, everything is permitted.",zh:"\u6ca1\u6709\u4ec0\u4e48\u662f\u771f\u5b9e\u7684\uff0c\u4e00\u5207\u90fd\u88ab\u5141\u8bb8\u3002",zh_TW:"\u6c92\u6709\u4ec0\u9ebc\u662f\u771f\u5be6\u7684\uff0c\u4e00\u5207\u90fd\u88ab\u5141\u8a31\u3002",ja:"\u771f\u5b9f\u306a\u3069\u306a\u3044\u3001\u3059\u3079\u3066\u306f\u8a31\u3055\u308c\u3066\u3044\u308b\u3002",ko:"\uc9c4\uc2e4\uc740 \uc5c6\uc73c\uba70, \ubaa8\ub4e0 \uac83\uc774 \ud5c8\uc6a9\ub41c\ub2e4\u3002"},{en:"We are what we believe we are.",zh:"\u6211\u4eec\u76f8\u4fe1\u81ea\u5df1\u662f\u4ec0\u4e48\uff0c\u6211\u4eec\u5c31\u662f\u4ec0\u4e48\u3002",zh_TW:"\u6211\u5011\u76f8\u4fe1\u81ea\u5df1\u662f\u4ec0\u9ebc\uff0c\u6211\u5011\u5c31\u662f\u4ec0\u9ebc\u3002",ja:"\u6211\u3005\u306f\u3001\u6211\u3005\u304c\u4fe1\u3058\u308b\u901a\u308a\u306e\u4eba\u9593\u3067\u3042\u308b\u3002",ko:"\uc6b0\ub9ac\ub294 \uc6b0\ub9ac\uac00 \uadf8\ub807\ub2e4\uace0 \ubbff\ub294 \uc874\uc7ac\uc774\ub2e4\u3002"},{en:"Yesterday is history, tomorrow is a mystery, but today is a gift. That is why it is called the present.",zh:"\u6628\u5929\u662f\u5386\u53f2\uff0c\u660e\u5929\u662f\u8c1c\u56e2\uff0c\u4f46\u4eca\u5929\u662f\u793c\u7269\u3002\u8fd9\u5c31\u662f\u4e3a\u4ec0\u4e48\u5b83\u88ab\u79f0\u4e3a\u2018\u73b0\u5728\u2019(Present)\u3002",zh_TW:"\u6628\u5929\u662f\u6b77\u53f2\uff0c\u660e\u5929\u662f\u8b0e\u5718\uff0c\u4f46\u4eca\u5929\u662f\u79ae\u7269\u3002\u9019\u5c31\u662f\u70ba\u4ec0\u9ebc\u5b83\u88ab\u7a31\u70ba\u2018\u73fe\u5728\u2019(Present)\u3002",ja:"\u6628\u65e5\u306f\u6b74\u53f2\u3001\u660e\u65e5\u306f\u30df\u30b9\u30c6\u30ea\u30fc\u3001\u3057\u304b\u3057\u4eca\u65e5\u306f\u8d08\u308a\u7269\u3060\u3002\u3060\u304b\u3089\u3053\u305d\u3001\u305d\u308c\u306f\u300e\u30d7\u30ec\u30bc\u30f3\u30c8 (\u73fe\u5728)\u300f\u3068\u547c\u3070\u308c\u308b\u3002",ko:"\uc5b4\uc81c\ub294 \uc5ed\uc0ac\uc774\uace0, \ub0b4\uc77c\uc740 \ubbf8\uc2a4\ud130\ub9ac\uc774\uba70, \uc624\ub298\uc740 \uc120\ubb3c\uc774\ub2e4. \uadf8\ub798\uc11c \uc624\ub298\uc744 '\uc120\ubb3c(present)'\uc774\ub77c\uace0 \ubd80\ub978\ub2e4\u3002"},{en:"Time is money.",zh:"\u65f6\u95f4\u5c31\u662f\u91d1\u94b1\u3002",zh_TW:"\u6642\u9593\u5c31\u662f\u91d1\u9322\u3002",ja:"\u6642\u306f\u91d1\u306a\u308a\u3002",ko:"\uc2dc\uac04\uc740 \ub3c8\uc774\ub2e4\u3002"},{en:"The only thing necessary for the triumph of evil is for good men to do nothing.",zh:"\u90aa\u6076\u5f97\u901e\u7684\u552f\u4e00\u6761\u4ef6\u662f\u597d\u4eba\u8896\u624b\u65c1\u89c2\u3002",zh_TW:"\u90aa\u60e1\u5f97\u901e\u7684\u552f\u4e00\u689d\u4ef6\u662f\u597d\u4eba\u8896\u624b\u65c1\u89c0\u3002",ja:"\u60aa\u304c\u52dd\u5229\u3059\u308b\u305f\u3081\u306b\u5fc5\u8981\u306a\u306e\u306f\u3001\u5584\u4eba\u304c\u4f55\u3082\u3057\u306a\u3044\u3053\u3068\u3060\u3051\u3067\u3042\u308b\u3002",ko:"\uc545\uc758 \uc2b9\ub9ac\ub97c \uc704\ud574 \ud544\uc694\ud55c \uc720\uc77c\ud55c \uac83\uc740 \uc120\ud55c \uc0ac\ub78c\ub4e4\uc774 \uc544\ubb34\uac83\ub3c4 \ud558\uc9c0 \uc54a\ub294 \uac83\uc774\ub2e4\u3002"},{en:"Carpe diem.",zh:"\u6d3b\u5728\u5f53\u4e0b\u3002",zh_TW:"\u6d3b\u5728\u7576\u4e0b\u3002",ja:"\u4eca\u3092\u751f\u304d\u3088\uff08\u30ab\u30eb\u30da\u30fb\u30c7\u30a3\u30a8\u30e0\uff09\u3002",ko:"\ud604\uc7ac\ub97c \uc990\uaca8\ub77c (\uce74\ub974\ud398 \ub514\uc5e0)\u3002"},{en:"Do not dwell in the past, do not dream of the future, concentrate the mind on the present moment.",zh:"\u4e0d\u8981\u6c89\u6e4e\u4e8e\u8fc7\u53bb\uff0c\u4e0d\u8981\u5e7b\u60f3\u672a\u6765\uff0c\u96c6\u4e2d\u7cbe\u795e\u6d3b\u5728\u5f53\u4e0b\u3002",zh_TW:"\u4e0d\u8981\u6c89\u6e4e\u65bc\u904e\u53bb\uff0c\u4e0d\u8981\u5e7b\u60f3\u672a\u4f86\uff0c\u96c6\u4e2d\u7cbe\u795e\u6d3b\u5728\u7576\u4e0b\u3002",ja:"\u904e\u53bb\u306b\u751f\u304d\u308b\u306a\u3001\u672a\u6765\u3092\u5922\u898b\u308b\u306a\u3001\u73fe\u5728\u306e\u77ac\u9593\u306b\u5fc3\u3092\u96c6\u4e2d\u3055\u305b\u3088\u3002",ko:"\uacfc\uac70\uc5d0 \uba38\ubb3c\uc9c0 \ub9d0\uace0, \ubbf8\ub798\ub97c \uafc8\uafb8\uc9c0 \ub9d0\uba70, \ud604\uc7ac \uc774 \uc21c\uac04\uc5d0 \ub9c8\uc74c\uc744 \uc9d1\uc911\ud558\ub77c\u3002"},{en:"The best time to plant a tree was 20 years ago. The second best time is now.",zh:"\u79cd\u6811\u7684\u6700\u4f73\u65f6\u673a\u662f20\u5e74\u524d\u3002\u5176\u6b21\u662f\u73b0\u5728\u3002",zh_TW:"\u7a2e\u6a39\u7684\u6700\u4f73\u6642\u6a5f\u662f20\u5e74\u524d\u3002\u5176\u6b21\u662f\u73fe\u5728\u3002",ja:"\u6728\u3092\u690d\u3048\u308b\u306e\u306b\u6700\u9069\u306a\u6642\u671f\u306f20\u5e74\u524d\u3060\u3063\u305f\u3002\u4e8c\u756a\u76ee\u306b\u6700\u9069\u306a\u6642\u671f\u306f\u3001\u4eca\u3060\u3002",ko:"\ub098\ubb34\ub97c \uc2ec\uae30\uc5d0 \uac00\uc7a5 \uc88b\uc740 \ub54c\ub294 20\ub144 \uc804\uc774\uc5c8\ub2e4. \ub450 \ubc88\uc9f8\ub85c \uc88b\uc740 \ub54c\ub294 \ubc14\ub85c \uc9c0\uae08\uc774\ub2e4\u3002"},{en:"Action speaks louder than words.",zh:"\u4e8b\u5b9e\u80dc\u4e8e\u96c4\u8fa9\u3002",zh_TW:"\u4e8b\u5be6\u52dd\u65bc\u96c4\u8faf\u3002",ja:"\u884c\u52d5\u306f\u8a00\u8449\u3088\u308a\u3082\u96c4\u5f01\u3067\u3042\u308b\u3002",ko:"\ub9d0\ubcf4\ub2e4 \ud589\ub3d9\uc774 \ub354 \uc911\uc694\ud558\ub2e4\u3002"},{en:"Honesty is the first chapter in the book of wisdom.",zh:"\u8bda\u5b9e\u662f\u667a\u6167\u4e4b\u4e66\u7684\u7b2c\u4e00\u7ae0\u3002",zh_TW:"\u8aa0\u5be6\u662f\u667a\u6167\u4e4b\u66f8\u7684\u7b2c\u4e00\u7ae0\u3002",ja:"\u8aa0\u5b9f\u3055\u306f\u3001\u77e5\u6075\u3068\u3044\u3046\u672c\u306e\u7b2c\u4e00\u7ae0\u3067\u3042\u308b\u3002",ko:"\uc815\uc9c1\uc740 \uc9c0\ud61c\ub77c\ub294 \ucc45\uc758 \uccab \uc7a5\uc774\ub2e4\u3002"},{en:"Two things are infinite: the universe and human stupidity; and I'm not sure about the universe.",zh:"\u6709\u4e24\u6837\u4e1c\u897f\u662f\u65e0\u9650\u7684\uff1a\u5b87\u5b99\u548c\u4eba\u7c7b\u7684\u611a\u8822\uff1b\u800c\u4e14\u6211\u4e0d\u592a\u786e\u5b9a\u5b87\u5b99\u662f\u5426\u65e0\u9650\u3002",zh_TW:"\u6709\u5169\u6a23\u6771\u897f\u662f\u7121\u9650\u7684\uff1a\u5b87\u5b99\u548c\u4eba\u985e\u7684\u611a\u8822\uff1b\u800c\u4e14\u6211\u4e0d\u592a\u78ba\u5b9a\u5b87\u5b99\u662f\u5426\u7121\u9650\u3002",ja:"\u7121\u9650\u306a\u3082\u306e\u306f\u4e8c\u3064\u3042\u308b\u3002\u5b87\u5b99\u3068\u4eba\u9593\u306e\u611a\u304b\u3055\u3060\u3002\u305f\u3060\u3001\u5b87\u5b99\u306b\u3064\u3044\u3066\u306f\u79c1\u306b\u3082\u3088\u304f\u5206\u304b\u3089\u306a\u3044\u3002",ko:"\ubb34\ud55c\ud55c \uac83\uc740 \ub450 \uac00\uc9c0\ubfd0\uc774\ub2e4. \uc6b0\uc8fc\uc640 \uc778\uac04\uc758 \uc5b4\ub9ac\uc11d\uc74c. \uadf8\ub7f0\ub370 \uc6b0\uc8fc\uc5d0 \ub300\ud574\uc120 \ub098\ub3c4 \ud655\uc2e0\uc774 \uc5c6\ub2e4\u3002"},{en:"You cannot step twice into the same river.",zh:"\u4eba\u4e0d\u80fd\u4e24\u6b21\u8e0f\u8fdb\u540c\u4e00\u6761\u6cb3\u6d41\u3002",zh_TW:"\u4eba\u4e0d\u80fd\u5169\u6b21\u8e0f\u9032\u540c\u4e00\u689d\u6cb3\u6d41\u3002",ja:"\u540c\uff08\u304a\u306a\uff09\u3058\u5ddd\uff08\u304b\u308f\uff09\u306b\u4e8c\u5ea6\uff08\u306b\u3069\uff09\u5165\uff08\u306f\u3044\uff09\u308b\u3053\u3068\u306f\u3067\u304d\u306a\u3044\u3002",ko:"\uac19\uc740 \uac15\ubb3c\uc5d0 \ub450 \ubc88 \ubc1c\uc744 \ub2f4\uae00 \uc218 \uc5c6\ub2e4\u3002"},{en:"The future belongs to those who believe in the beauty of their dreams.",zh:"\u672a\u6765\u5c5e\u4e8e\u90a3\u4e9b\u76f8\u4fe1\u68a6\u60f3\u4e4b\u7f8e\u7684\u4eba\u3002",zh_TW:"\u672a\u4f86\u5c6c\u65bc\u90a3\u4e9b\u76f8\u4fe1\u5922\u60f3\u4e4b\u7f8e\u7684\u4eba\u3002",ja:"\u672a\u6765\u306f\u3001\u81ea\u5206\u306e\u5922\u306e\u7f8e\u3057\u3055\u3092\u4fe1\u3058\u308b\u8005\u306e\u3082\u306e\u3067\u3042\u308b\u3002",ko:"\ubbf8\ub798\ub294 \uc790\uc2e0\uc758 \uafc8\uc758 \uc544\ub984\ub2e4\uc6c0\uc744 \ubbff\ub294 \uc0ac\ub78c\ub4e4\uc758 \uac83\uc774\ub2e4\u3002"},{en:"Procrastination is the thief of time.",zh:"\u62d6\u5ef6\u662f\u65f6\u95f4\u7684\u5927\u654c\u3002",zh_TW:"\u62d6\u5ef6\u662f\u6642\u9593\u7684\u5927\u6575\u3002",ja:"\u5148\u5ef6\u3070\u3057\u306f\u6642\u9593\u6ce5\u68d2\u3067\u3042\u308b\u3002",ko:"\ubbf8\ub8e8\ub294 \uc2b5\uad00\uc740 \uc2dc\uac04 \ub3c4\ub451\uc774\ub2e4\u3002"},{en:"An investment in knowledge pays the best interest.",zh:"\u6295\u8d44\u77e5\u8bc6\uff0c\u6536\u76ca\u6700\u4f73\u3002",zh_TW:"\u6295\u8cc7\u77e5\u8b58\uff0c\u6536\u76ca\u6700\u4f73\u3002",ja:"\u77e5\u8b58\u3078\u306e\u6295\u8cc7\u306f\u3001\u6700\u826f\u306e\u5229\u606f\u3092\u751f\u3080\u3002",ko:"\uc9c0\uc2dd\uc5d0 \ub300\ud55c \ud22c\uc790\ub294 \ucd5c\uace0\uc758 \uc774\uc790\ub97c \uc9c0\ubd88\ud55c\ub2e4\u3002"},{en:"I have not failed. I've just found 10,000 ways that won't work.",zh:"\u6211\u6ca1\u6709\u5931\u8d25\u3002\u6211\u53ea\u662f\u627e\u5230\u4e86\u4e00\u4e07\u79cd\u884c\u4e0d\u901a\u7684\u65b9\u6cd5\u3002",zh_TW:"\u6211\u6c92\u6709\u5931\u6557\u3002\u6211\u53ea\u662f\u627e\u5230\u4e86\u4e00\u842c\u7a2e\u884c\u4e0d\u901a\u7684\u65b9\u6cd5\u3002",ja:"\u79c1\u306f\u5931\u6557\u3057\u305f\u3053\u3068\u304c\u306a\u3044\u3002\u305f\u3060\u3001\u3046\u307e\u304f\u3044\u304b\u306a\u30441\u4e07\u901a\u308a\u306e\u65b9\u6cd5\u3092\u898b\u3064\u3051\u305f\u3060\u3051\u3060\u3002",ko:"\ub098\ub294 \uc2e4\ud328\ud558\uc9c0 \uc54a\uc558\ub2e4. \ub2e8\uc9c0 \uc791\ub3d9\ud558\uc9c0 \uc54a\ub294 1\ub9cc \uac00\uc9c0 \ubc29\ubc95\uc744 \ucc3e\uc558\uc744 \ubfd0\uc774\ub2e4\u3002"},{en:"That which is done, is done.",zh:"\u6728\u5df2\u6210\u821f\u3002",zh_TW:"\u6728\u5df2\u6210\u821f\u3002",ja:"\u306a\u3055\u308c\u305f\u3053\u3068\u306f\u3001\u306a\u3055\u308c\u305f\u3053\u3068\u3060\u3002\uff08\u8986\u6c34\u76c6\u306b\u8fd4\u3089\u305a\uff09",ko:"\uc77c\uc5b4\ub09c \uc77c\uc740 \uc77c\uc5b4\ub09c \uc77c\uc774\ub2e4. (\uc774\ubbf8 \uc5ce\uc9c8\ub7ec\uc9c4 \ubb3c\uc774\ub2e4.)"}];var vz;function yz(e){let{customStyle:t,deleteStyle:n,updateStyle:r,isBuiltin:o}=e;const i=Hf(),{setting:{uiLang:s}}=Rf(),[l,u]=(0,a.useState)({}),[c,d]=(0,a.useState)(!1),p=gk();(0,a.useEffect)(()=>{t&&u(t)},[t]),(0,a.useEffect)(()=>{if(!t)return;const e=JSON.stringify(t)!==JSON.stringify(l);d(e)},[t,l]);const h=e=>{e.preventDefault();let{name:t,value:n}=e.target;u(e=>(0,It.A)((0,It.A)({},e),{},{[t]:n}))},{styleName:f="",styleCode:m=""}=l,g=(0,a.useMemo)(()=>Fk(vz||(vz=lt(["\n ","\n "])),m),[m]),v=(0,a.useMemo)(()=>{const e=function(){const e=Math.floor(Math.random()*gz.length);return gz[e]}();return"en"===s?[e.zh,e.en]:[e.en,e[s]]},[s]);return(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsxs)(st,{children:[v[0],(0,Je.jsx)("br",{}),(0,Je.jsx)("span",{className:g,children:v[1]})]}),(0,Je.jsx)(hb,{size:"small",label:i("style_name"),name:"styleName",value:f,onChange:h,disabled:o}),(0,Je.jsx)(mb,{size:"small",label:i("style_code"),name:"styleCode",value:m,onChange:h,maxRows:10,disabled:o}),!o&&(0,Je.jsxs)(vm,{direction:"row",alignItems:"center",spacing:2,useFlexGap:!0,flexWrap:"wrap",children:[(0,Je.jsx)(Eb,{size:"small",variant:"contained",onClick:()=>{r(t.styleSlug,l)},disabled:!c,children:i("save")}),(0,Je.jsx)(Eb,{size:"small",variant:"outlined",color:"error",onClick:async()=>{await p({confirmText:i("delete"),cancelText:i("cancel")})&&n(t.styleSlug)},children:i("delete")})]})]})}function bz(e){let{customStyle:t,deleteStyle:n,updateStyle:r,isBuiltin:o}=e;const[i,s]=(0,a.useState)(!1);return(0,Je.jsxs)(Mb,{expanded:i,onChange:e=>{s(e=>!e)},children:[(0,Je.jsx)(Kb,{expandIcon:(0,Je.jsx)(Jb.A,{}),children:(0,Je.jsx)(gf,{sx:{overflowWrap:"anywhere"},children:"".concat(t.styleName)})}),(0,Je.jsx)(Qb,{children:i&&(0,Je.jsx)(yz,{customStyle:t,deleteStyle:n,updateStyle:r,isBuiltin:o})})]})}function xz(){const e=Hf(),{customStyles:t,addStyle:n,deleteStyle:r,updateStyle:o}=Rk(),{builtinStyles:a}=Nk();return(0,Je.jsx)(st,{children:(0,Je.jsxs)(vm,{spacing:3,children:[(0,Je.jsx)(st,{children:(0,Je.jsx)(Eb,{size:"small",id:"add-style-button",variant:"contained",onClick:e=>{e.preventDefault(),n()},startIcon:(0,Je.jsx)(TD.A,{}),children:e("add")})}),(0,Je.jsx)(st,{children:t.map(e=>(0,Je.jsx)(bz,{customStyle:e,deleteStyle:r,updateStyle:o},e.styleSlug))}),(0,Je.jsx)(st,{children:a.map(e=>(0,Je.jsx)(bz,{customStyle:e,deleteStyle:r,updateStyle:o,isBuiltin:!0},e.styleSlug))})]})})}function Az(){const[e,t]=(0,a.useState)(""),[n,r]=(0,a.useState)(!Fs.Zy),[o,i]=(0,a.useState)(!0);return(0,a.useEffect)(()=>{const e=(e,t)=>{if(!e||!t)return!1;const n=e.split("."),r=t.split(".");return n[0]===r[0]&&n[1]===r[1]};(async()=>{if(Fs.Zy){let a=0;for(;;){var n,o;if("KISS Translator"===(null===(n=window)||void 0===n||null===(o=n.APP_INFO)||void 0===o?void 0:o.name)){const{version:n,eventName:o}=window.APP_INFO;if(!e(n,"2.0.29"))return void t("The version of the local script(v".concat(n,") is not the latest version(v").concat("2.0.29","). \u672c\u5730\u811a\u672c\u4e4b\u7248\u672c(v").concat(n,")\u975e\u6700\u65b0\u7248(v").concat("2.0.29",")\u3002"));o&&(0,zS.gd)(o),await(0,Ji.runDataMigration)(),r(!0);break}if(++a>8)return void t("Time out. Please confirm whether to install or enable KISS Translator GreaseMonkey script? \u8fde\u63a5\u8d85\u65f6\uff0c\u8bf7\u68c0\u67e5\u662f\u5426\u5b89\u88c5\u6216\u542f\u7528\u7b80\u7ea6\u7ffb\u8bd1\u6cb9\u7334\u811a\u672c\u3002");await(0,_s.yy)(1e3)}}const{requiredSync:a,backgroundSyncs:s}=(()=>{const e=window.location.hash.replace(/^#/,"")||"/";return"/rules"===e||e.startsWith("/rules/")?{requiredSync:of,backgroundSyncs:[nf,sf]}:"/words"===e||e.startsWith("/words/")?{requiredSync:sf,backgroundSyncs:[nf,of]}:{requiredSync:nf,backgroundSyncs:[of,sf]}})();await a(),i(!1),Promise.all(s.map(e=>e())).catch(e=>{(0,Zi.h9)("sync options background",(null===e||void 0===e?void 0:e.message)||e)})})()},[]),e?(0,Je.jsxs)("center",{children:[(0,Je.jsx)(zf,{children:(0,Je.jsx)(Sf,{href:"https://github.com/fishjar/kiss-translator",children:"KISS Translator v".concat("2.0.29")})}),(0,Je.jsx)(Xi,{severity:"error",children:e}),(0,Je.jsxs)(vm,{spacing:2,children:[(0,Je.jsx)(Sf,{href:"https://kiss-translator.rayjar.com/kiss-translator.user.js",children:"Install/Update Userscript for Tampermonkey/Violentmonkey"}),(0,Je.jsx)(Sf,{href:"https://kiss-translator.rayjar.com/kiss-translator-ios-safari.user.js",children:"Install/Update Userscript for iOS Safari"})]})]}):n?(0,Je.jsx)(Pf,{context:"options",children:(0,Je.jsx)(jS,{children:(0,Je.jsx)(hD,{children:(0,Je.jsxs)(mk,{children:[(0,Je.jsx)(Ie,{children:(0,Je.jsx)(Se,{children:(0,Je.jsxs)(ke,{path:"/",element:(0,Je.jsx)(lS,{}),children:[(0,Je.jsx)(ke,{index:!0,element:(0,Je.jsx)(ew,{})}),(0,Je.jsx)(ke,{path:"rules",element:(0,Je.jsx)(Kk,{})}),(0,Je.jsx)(ke,{path:"styles",element:(0,Je.jsx)(xz,{})}),(0,Je.jsx)(ke,{path:"input",element:(0,Je.jsx)(hF,{})}),(0,Je.jsx)(ke,{path:"tranbox",element:(0,Je.jsx)(fF,{})}),(0,Je.jsx)(ke,{path:"mousehover",element:(0,Je.jsx)(Fj,{})}),(0,Je.jsx)(ke,{path:"subtitle",element:(0,Je.jsx)(mz,{})}),(0,Je.jsx)(ke,{path:"apis",element:(0,Je.jsx)(oF,{})}),(0,Je.jsx)(ke,{path:"prompts",element:(0,Je.jsx)(pF,{})}),(0,Je.jsx)(ke,{path:"sync",element:(0,Je.jsx)(xS,{})}),(0,Je.jsx)(ke,{path:"words",element:(0,Je.jsx)($F,{})}),(0,Je.jsx)(ke,{path:"playground",element:(0,Je.jsx)(Cj,{})}),(0,Je.jsx)(ke,{path:"about",element:(0,Je.jsx)(Gf,{})})]})})}),(0,Je.jsx)(Yv,{"data-testid":"options-sync-backdrop","aria-label":"syncing required data",open:o,sx:e=>({color:"#fff",zIndex:e.zIndex.modal+1}),children:(0,Je.jsx)(zt,{color:"inherit",size:72})})]})})})}):(0,Je.jsx)(Yv,{"data-testid":"options-sync-backdrop","aria-label":"syncing required data",open:!0,sx:e=>({color:"#fff",zIndex:e.zIndex.modal+1}),children:(0,Je.jsx)(zt,{color:"inherit",size:72})})}globalThis.__KISS_CONTEXT__="options";s.createRoot(document.getElementById("root")).render((0,Je.jsx)(a.StrictMode,{children:(0,Je.jsx)(Az,{})}))})()})(); \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/options.js.LICENSE.txt b/android/app/src/main/assets/extensions/kiss_translator/options.js.LICENSE.txt new file mode 100644 index 00000000..4abaec9d --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/options.js.LICENSE.txt @@ -0,0 +1,123 @@ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + +/*! For license information please see index.js.LICENSE.txt */ + +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-is.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @remix-run/router v1.23.2 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */ + +/** + * React Router DOM v6.30.3 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */ + +/** + * React Router v6.30.3 + * + * Copyright (c) Remix Software Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE.md file in the root directory of this source tree. + * + * @license MIT + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/android/app/src/main/assets/extensions/kiss_translator/popup.html b/android/app/src/main/assets/extensions/kiss_translator/popup.html new file mode 100644 index 00000000..7b5b919a --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/popup.html @@ -0,0 +1,11 @@ +KISS Translator - Open-source, minimalist bilingual translation
\ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/popup.js b/android/app/src/main/assets/extensions/kiss_translator/popup.js new file mode 100644 index 00000000..9c26c7b0 --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/popup.js @@ -0,0 +1,2 @@ +/*! For license information please see popup.js.LICENSE.txt */ +(()=>{var e={63(e,t,n){"use strict";n.d(t,{A:()=>r});const r=n(7461).A},288(e,t,n){"use strict";n.r(t),n.d(t,{default:()=>r.A});var r=n(6253)},457(e,t,n){"use strict";n.d(t,{C:()=>c,E:()=>g,T:()=>d,c:()=>f,h:()=>p,w:()=>u});var r=n(8661),o=n(5449),i=n(696),a=n(3385),s=n(4774),l=r.createContext("undefined"!==typeof HTMLElement?(0,o.A)({key:"css"}):null),c=l.Provider,u=function(e){return(0,r.forwardRef)(function(t,n){var o=(0,r.useContext)(l);return e(t,o,n)})},d=r.createContext({});var p={}.hasOwnProperty,h="__EMOTION_TYPE_PLEASE_DO_NOT_USE__",f=function(e,t){var n={};for(var r in t)p.call(t,r)&&(n[r]=t[r]);return n[h]=e,n},m=function(e){var t=e.cache,n=e.serialized,r=e.isStringTag;return(0,i.SF)(t,n,r),(0,s.s)(function(){return(0,i.sk)(t,n,r)}),null},g=u(function(e,t,n){var o=e.css;"string"===typeof o&&void 0!==t.registered[o]&&(o=t.registered[o]);var s=e[h],l=[o],c="";"string"===typeof e.className?c=(0,i.Rk)(t.registered,l,e.className):null!=e.className&&(c=e.className+" ");var u=(0,a.J)(l,void 0,r.useContext(d));c+=t.key+"-"+u.name;var f={};for(var g in e)p.call(e,g)&&"css"!==g&&g!==h&&(f[g]=e[g]);return f.className=c,n&&(f.ref=n),r.createElement(r.Fragment,null,r.createElement(m,{cache:t,serialized:u,isStringTag:"string"===typeof s}),r.createElement(s,f))})},561(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),i=n(5089);t.A=(0,o.default)((0,i.jsx)("path",{d:"m12 21.35-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54z"}),"Favorite")},696(e,t,n){"use strict";n.d(t,{Rk:()=>r,SF:()=>o,sk:()=>i});function r(e,t,n){var r="";return n.split(" ").forEach(function(n){void 0!==e[n]?t.push(e[n]+";"):n&&(r+=n+" ")}),r}var o=function(e,t,n){var r=e.key+"-"+t.name;!1===n&&void 0===e.registered[r]&&(e.registered[r]=t.styles)},i=function(e,t,n){o(e,t,n);var r=e.key+"-"+t.name;if(void 0===e.inserted[t.name]){var i=t;do{e.insert(t===i?"."+r:"",i,e.sheet,!0),i=i.next}while(void 0!==i)}}},1006(e,t,n){"use strict";function r(e,t){const n=this;if(n.vars&&"function"===typeof n.getColorSchemeSelector){const r=n.getColorSchemeSelector(e).replace(/(\[[^\]]+\])/,"*:where($1)");return{[r]:t}}return n.palette.mode===e?t:{}}n.d(t,{A:()=>r})},1029(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),i=n(5089);t.A=(0,o.default)((0,i.jsx)("path",{d:"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2m0 16H8V7h11z"}),"ContentCopy")},1092(e,t){"use strict";var n=Symbol.for("react.element"),r=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),a=Symbol.for("react.profiler"),s=Symbol.for("react.provider"),l=Symbol.for("react.context"),c=Symbol.for("react.forward_ref"),u=Symbol.for("react.suspense"),d=Symbol.for("react.memo"),p=Symbol.for("react.lazy"),h=Symbol.iterator;var f={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},m=Object.assign,g={};function y(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||f}function v(){}function b(e,t,n){this.props=e,this.context=t,this.refs=g,this.updater=n||f}y.prototype.isReactComponent={},y.prototype.setState=function(e,t){if("object"!==typeof e&&"function"!==typeof e&&null!=e)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},v.prototype=y.prototype;var x=b.prototype=new v;x.constructor=b,m(x,y.prototype),x.isPureReactComponent=!0;var k=Array.isArray,A=Object.prototype.hasOwnProperty,S={current:null},_={key:!0,ref:!0,__self:!0,__source:!0};function w(e,t,r){var o,i={},a=null,s=null;if(null!=t)for(o in void 0!==t.ref&&(s=t.ref),void 0!==t.key&&(a=""+t.key),t)A.call(t,o)&&!_.hasOwnProperty(o)&&(i[o]=t[o]);var l=arguments.length-2;if(1===l)i.children=r;else if(12&&void 0!==arguments[2]?arguments[2]:void 0;const r={};return Object.keys(e).forEach(o=>{r[o]=e[o].reduce((e,r)=>{if(r){const o=t(r);""!==o&&e.push(o),n&&n[r]&&e.push(n[r])}return e},[]).join(" ")}),r}n.d(t,{A:()=>r})},1210(e,t,n){"use strict";n.d(t,{A:()=>r});const r=(0,n(6966).A)()},1229(e){e.exports=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n},e.exports.__esModule=!0,e.exports.default=e.exports},1437(e,t,n){"use strict";var r=n(8898);t.A=void 0;var o=r(n(3684)),i=n(5089);t.A=(0,o.default)((0,i.jsx)("path",{d:"M9 16.2 4.8 12l-1.4 1.4L9 19 21 7l-1.4-1.4z"}),"Done")},1446(e,t,n){"use strict";var r=n(8661),o=n(4651);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n
, text enclosed in backticks, or placeholders like {1}, {{1}}, [1], [[1]].\n6.  Apply the specified tone to the translation.\n7.  Detect sourceLanguage for each segment.\n8.  Return empty or unchanged inputs as is.\n\nExample:\nInput: {"targetLanguage":"zh-CN","segments":[{"id":1,"text":"A React component."}],"glossary":{"component":"\u7ec4\u4ef6","React":""}}\nOutput: {"translations":[{"id":1,"text":"\u4e00\u4e2aReact\u7ec4\u4ef6","sourceLanguage":"en"}]}\n\nFail-safe: On any error, return {"translations":[]}.',hn='Act as a translation API. Output raw XML-like format only. No Markdown fences (xml). No conversational filler.\n\nInput:\n{"targetLanguage":"","title":"","description":"","summary":"","segments":[{"id":1,"text":"..."}],"glossary":{"sourceTerm":"targetTerm"},"tone":""}\n\nOutput Format:\n\n    Translated text content...\n    Translated text content...\n\n\nRules:\n1.  **Strict Format**: Output ONLY the  element and its children. Do not include "xml" version declarations or markdown code blocks.\n2.  **Structure**: Maintain the exact "id" from the input in the "id" attribute. Detect the source language for the "sourceLanguage" attribute.\n3.  **HTML & Whitespace**: Preserve all HTML tags (e.g., , , 
) and whitespace exactly as they appear in the structure. Only translate the text content inside them.\n4. **Glossary**: Highest priority. Use the glossary value for translation. If the value is "", keep the source term as is.\n5. **Do Not Translate**: Content inside ,
, text in backticks ("code"), and placeholders like {1}, {{1}}, [1], [[1]].\n6.  **Context**: Use the "title" and "description" fields to understand the context for better translation accuracy, but do not output them.\n7.  **Tone**: Apply the specified "tone" (formal/casual).\n\nExample:\nInput:\n{"targetLanguage":"zh-CN","segments":[{"id":0,"text":"Hello World!"}],"glossary":{"World":"\u4e16\u754c"},"tone":"formal"}\n\nOutput:\n\n    \u4f60\u597d \u4e16\u754c\uff01\n',fn='Act as a translation API. Output raw text lines in "ID | Text" format. No Markdown. No conversational filler.\n\nInput:\n{"targetLanguage":"","title":"","description":"","summary":"","segments":[{"id":1,"text":"..."}],"glossary":{"sourceTerm":"targetTerm"},"tone":""}\n\nOutput Format:\n | \n | \n...\n\nRules:\n1.  **Strict Format**: Output exactly one line per segment using the format: "{id} | {translated_text}".\n2.  **ID Mapping**: You MUST copy the exact "id" from the input segment to the output line.\n3.  **Newline Handling**: If the translated text contains a newline, replace it with the HTML tag "
" to ensure it stays on a single line.\n4. **Separator**: Use the pipe symbol " | " strictly to separate the ID and the text.\n5. **Context**: Use title/description for context only; do not output them.\n6. **HTML/Tags**: Preserve whitespace, HTML entities, and all HTML-like tags (e.g., , ). Translate inner text only.\n7. **Glossary**: Highest priority. Follow \'glossary\'. Use value for translation; if value is "", keep the key.\n8. **Do Not Translate**: content in ,
, text enclosed in backticks, or placeholders like {1}, {{1}}, [1].\n9.  **Tone**: Apply the specified tone.\n\nExample:\nInput: {"targetLanguage":"zh-CN","segments":[{"id":0,"text":"Hello."},{"id":1,"text":"Line 1\nLine 2"}],"glossary":{}}\nOutput:\n0 | \u4f60\u597d\u3002\n1 | \u7b2c\u4e00\u884c
\u7b2c\u4e8c\u884c\n\nFail-safe: On error, return "{id} | {original_text}" line by line.',mn="# Input Data\n\n## [Context / \u4e0a\u4e0b\u6587] (Optional)\n> \u4ee5\u4e0b\u4fe1\u606f\u7528\u4e8e\u8f85\u52a9\u7cbe\u51c6\u9501\u5b9a\u76ee\u6807\u6587\u672c\u7684\u8bed\u5883\uff1a\n- \u6587\u6863\u6807\u9898\uff1a".concat(ot,"\n- \u6587\u6863\u63cf\u8ff0\uff1a").concat(it,"\n- \u6587\u6863\u6458\u8981\uff1a").concat(at,"\n- \u6240\u5728\u6bb5\u843d\uff1a").concat(st,"\n\n## [Target / \u76ee\u6807\u6587\u672c] (Required)\n> \u89e6\u53d1\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u6216\u3010\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3011\u7684\u6838\u5fc3\u5224\u5b9a\u5bf9\u8c61\uff1a\n").concat(nt),gn="# Context\nTitle: ".concat(ot,"\nDescription: ").concat(it,"\nSummary: ").concat(at,"\nTone: ").concat(rt,"\n\n# Glossary (Terminology):\n").concat(ct,"\n\n# Task\nGroup the input word-level JSON array into readable, well-paced bilingual subtitle segments. Target Language: ").concat(Ze,'.\n\n# Output Contract\n1. STRICTLY output a valid JSON array only. No markdown formatting (e.g., do not use ```json fences), no preamble, and no postscript.\n2. Format per element: {"e":, "o":"exact merged source text", "t":"translation"}\n3. The "e" field must be an inclusive, exact word ID from the input and must increase strictly. The first segment starts at ID 0; every later segment starts at the previous "e" + 1.\n4. Completeness: Cover every input item exactly once. The final "e" must equal the final input ID. No missing items, overlaps, or gaps.\n5. For each segment, first determine its exact input range from the previous "e" + 1 through the current "e", then merge every source item in that range verbatim into "o". Do not paraphrase, normalize, translate, omit, or add source text in "o".\n6. Do not return start IDs, timestamps, or any extra fields. The application reconstructs them from the input.\n\n# Rules\n1. Hard Source Length Limit:\n - For space-separated source languages, each source span MUST contain no more than 15 words; aim for 8-12 words when a natural boundary exists.\n - For Chinese, Japanese, and other non-space-separated source languages, each source span MUST contain no more than 30 source characters.\n - If a sentence exceeds the applicable limit, split it at a clause, comma, conjunction, or natural phrase boundary. The hard length limit takes priority over keeping a long grammatical sentence intact.\n2. Sentence Boundaries: Never merge two complete sentences into one subtitle segment. Terminal punctuation such as .?!\u3002\uff01\uff1f normally ends the current segment.\n3. Pause Indicators: An optional "pauseMs" field is the timeline gap in milliseconds after the current input item. If "pauseMs" is missing, treat it as 0 milliseconds and do not infer a pause. Larger positive values indicate stronger sentence boundaries, but grammatical correctness and semantic coherence always take priority.\n4. Exact Translation Alignment: Build "o" first from the exact source span covered by the current "e", starting after the previous "e". Then translate only the current "o" into "t". The "t" field MUST NOT omit that span, translate future input items, or carry text from adjacent segments.\n5. Silent Self-Check: Before returning, silently verify that every "e", "o", and "t" correspond one-to-one, every "o" matches its exact input range, all source-length limits are satisfied, and all input items are covered exactly once. Do not output the self-check or any reasoning.\n6. Translation Quality: Keep "t" concise, accurate, and natural while strictly adhering to the provided Context, Tone, and Glossary.\n\n# Example\nInput: [{"id":0,"text":"Once"},{"id":1,"text":"the"},{"id":2,"text":"assets"},{"id":3,"text":"are"},{"id":4,"text":"ready,"},{"id":5,"text":"open"},{"id":6,"text":"the"},{"id":7,"text":"storyboard"},{"id":8,"text":"tab.","pauseMs":850},{"id":9,"text":"This"},{"id":10,"text":"is"},{"id":11,"text":"where"},{"id":12,"text":"everything"},{"id":13,"text":"comes"},{"id":14,"text":"together."},{"id":15,"text":"If"},{"id":16,"text":"a"},{"id":17,"text":"scene"},{"id":18,"text":"does"},{"id":19,"text":"not"},{"id":20,"text":"match"},{"id":21,"text":"your"},{"id":22,"text":"idea,"},{"id":23,"text":"regenerate"},{"id":24,"text":"it"},{"id":25,"text":"or"},{"id":26,"text":"adjust"},{"id":27,"text":"the"},{"id":28,"text":"prompt"},{"id":29,"text":"carefully"},{"id":30,"text":"until"},{"id":31,"text":"it"},{"id":32,"text":"feels"},{"id":33,"text":"right."}]\nOutput: [{"e":8,"o":"Once the assets are ready, open the storyboard tab.","t":"\u7d20\u6750\u51c6\u5907\u597d\u540e\uff0c\u6253\u5f00\u6545\u4e8b\u677f\u6807\u7b7e\u9875\u3002"},{"e":14,"o":"This is where everything comes together.","t":"\u4e00\u5207\u4ece\u8fd9\u91cc\u5f00\u59cb\u6574\u5408\u3002"},{"e":22,"o":"If a scene does not match your idea,","t":"\u5982\u679c\u67d0\u4e2a\u573a\u666f\u4e0e\u4f60\u7684\u60f3\u6cd5\u4e0d\u7b26\uff0c"},{"e":33,"o":"regenerate it or adjust the prompt carefully until it feels right.","t":"\u8bf7\u91cd\u65b0\u751f\u6210\uff0c\u6216\u4ed4\u7ec6\u8c03\u6574\u63d0\u793a\u8bcd\uff0c\u76f4\u5230\u6548\u679c\u5408\u9002\u3002"}]'),yn={apiSlug:"",apiName:"",apiType:"",url:"",key:"",model:"",modelListUrl:"",systemPrompt:"",batchPromptSlug:"batch-translation-json",subtitlePrompt:"",subtitlePromptSlug:"subtitle-segmentation",dictPrompt:"",dictUserPrompt:"",dictPromptSlug:"dictionary-en-zh",nobatchPrompt:"",nobatchUserPrompt:"",nobatchPromptSlug:"nobatch-translation",userPrompt:"",tone:"formal",placeholder:"{ }",placetag:"i",aiTerms:"",customHeader:"",customBody:"",reqHook:"",resHook:"",fetchLimit:10,fetchInterval:100,httpTimeout:30,batchInterval:$e,batchSize:Ye,batchLength:Xe,batchConcurrency:Je,useBatchFetch:!1,useStream:!1,streamRenderMode:"disabled",transAllnow:!1,rootMargin:2e3,useContext:!1,contextSize:3,temperature:0,maxTokens:20480,thinkingMode:"disabled",thinkingEffort:"_default",isDisabled:!1,region:"",sortOrder:0,placetagFormat:"compact"},vn={useBatchFetch:!0,thinkingMode:"disabled",thinkingEffort:"_default",useStream:!0,streamRenderMode:"realtime"},bn={[xt]:yn,[kt]:u(u({},yn),{},{url:"https://translate.googleapis.com/translate_a/single"}),[At]:u(u({},yn),{},{url:"https://translate-pa.googleapis.com/v1/translateHtml",key:"AIzaSyATBXajvzQLTDHEQbcpq0Ihe0vWDHmO520",useBatchFetch:!0,placetag:"a",placetagFormat:"attribute"}),[St]:u(u({},yn),{},{useBatchFetch:!0}),[_t]:u(u({},yn),{},{url:"https://api.cognitive.microsofttranslator.com/translate?api-version=3.0",useBatchFetch:!0}),[Ot]:u({},yn),[Mt]:u(u({},yn),{},{useBatchFetch:!0}),[Dt]:u({},yn),[Pt]:u(u({},yn),{},{url:"https://api-free.deepl.com/v2/translate",useBatchFetch:!0}),[Rt]:u(u({},yn),{},{fetchLimit:1}),[wt]:u(u({},yn),{},{url:"https://api.deepseek.com/chat/completions",modelListUrl:"https://api.deepseek.com/models",model:"deepseek-v4-flash"},vn),[Tt]:u(u({},yn),{},{url:"https://opencode.ai/zen/go/v1/chat/completions",model:"deepseek-v4-flash"},vn),[Et]:u(u({},yn),{},{url:"https://api.siliconflow.cn/v1/chat/completions",modelListUrl:"https://api.siliconflow.cn/v1/models",model:"Pro/zai-org/GLM-4.7"},vn),[Ct]:u(u({},yn),{},{url:"https://api.xiaomimimo.com/v1/chat/completions",modelListUrl:"https://api.xiaomimimo.com/v1/models",model:"mimo-v2.5-pro"},vn),[It]:u(u({},yn),{},{url:"https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions",modelListUrl:"https://dashscope.aliyuncs.com/compatible-mode/v1/models",model:"qwen-plus"},vn),[Lt]:u(u({},yn),{},{url:"https://api.cerebras.ai/v1/chat/completions",modelListUrl:"https://api.cerebras.ai/v1/models",model:"gpt-oss-120b"},vn),[zt]:u(u({},yn),{},{url:"https://open.bigmodel.cn/api/paas/v4/chat/completions",modelListUrl:"https://open.bigmodel.cn/api/paas/v4/models",model:"glm-5.1"},vn),[Nt]:u(u({},yn),{},{url:"http://localhost:1188/translate"}),[jt]:u(u({},yn),{},{url:"https://api.ephone.ai/v1/chat/completions"}),[Ft]:u(u({},yn),{},{url:"https://api.openai.com/v1/chat/completions",modelListUrl:"https://api.openai.com/v1/models",model:"gpt-4"},vn),[Bt]:u(u(u({},yn),{},{url:dt,modelListUrl:"https://generativelanguage.googleapis.com/v1beta/models",model:"gemini-2.5-flash"},vn),{},{thinkingMode:"disabled",thinkingEffort:"minimal"}),[Wt]:u(u({},yn),{},{url:"https://generativelanguage.googleapis.com/v1beta/openai/chat/completions",modelListUrl:"https://generativelanguage.googleapis.com/v1beta/models",model:"gemini-2.0-flash"},vn),[Ut]:u(u({},yn),{},{url:"https://api.anthropic.com/v1/messages",modelListUrl:"https://api.anthropic.com/v1/models",model:"claude-3-haiku-20240307"},vn),[Vt]:u(u({},yn),{},{url:"https://api.cloudflare.com/client/v4/accounts/{{ACCOUNT_ID}}/ai/run/@cf/meta/m2m100-1.2b"}),[Ht]:u(u({},yn),{},{url:"http://localhost:11434/v1/chat/completions",modelListUrl:"http://localhost:11434/v1/models",model:"llama3.1"},vn),[Gt]:u(u({},yn),{},{url:"https://openrouter.ai/api/v1/chat/completions",modelListUrl:"https://openrouter.ai/api/v1/models",model:"openai/gpt-4o"},vn),[qt]:u(u({},yn),{},{url:"https://api.orcarouter.ai/v1/chat/completions",modelListUrl:"https://api.orcarouter.ai/v1/models",model:"openai/gpt-5.4-mini"},vn),[Kt]:u(u({},yn),{},{reqHook:'async (args, { url, body, headers, userMsg, method } = {}) => {\n console.log("request hook args:", { args, url, body, headers, userMsg, method });\n // return { url, body, headers, userMsg, method };\n};',resHook:'async ({ res, ...args }) => {\n console.log("reaponse hook args:", { res, args });\n // const translations = [["\u4f60\u597d", "zh"]];\n // const modelMsg = "";\n // return { translations, modelMsg };\n};'})},xn=$t.map(e=>u(u({},bn[e]),{},{apiSlug:e,apiName:e,apiType:e}));const kn=Mt,An=xn.find(e=>e.apiType===kn),Sn="style_none",_n="under_line",wn="dot_line",Tn="dash_line",En="dash_line_bold",Cn="dash_box",In="dash_box_bold",Ln="wavy_line",zn="wavy_line_bold",Pn="marker",Nn="gradient_marker",Rn="fuzzy",jn="highlight",On="blockquote",Mn="gradient",Dn="blink",Fn="glow",Bn="colorful",Wn=[Sn,_n,wn,Tn,En,Ln,zn,Cn,In,Pn,Nn,Rn,jn,On,Mn,Dn,Fn,Bn],Un=[{styleSlug:"custom",styleName:"Custom Style",styleCode:"color: #209CEE;"}],Vn="*",Hn="split_disable",Gn="highlight_disable",qn={pattern:"",enabled:!0,selector:"",keepSelector:"",blockSelector:"",terms:"",aiTerms:"",apiSlug:Vn,fromLang:Vn,toLang:Vn,textStyle:Vn,wrapOriginal:Vn,originalTextStyle:Vn,transOpen:Vn,textExtStyle:"",termsStyle:"",highlightStyle:"",selectStyle:"",parentStyle:"",grandStyle:"",injectJs:"",transOnly:Vn,transOnlyRevert:Vn,transOnlyRevertDelay:Vn,transOrder:Vn,transTag:Vn,transTitle:Vn,transStartHook:"",transEndHook:"",autoScan:Vn,hasRichText:Vn,hasShadowroot:Vn,scanAll:Vn,isPlainText:Vn,rootsSelector:"",ignoreSelector:"",splitParagraph:Vn,splitLength:0,highlightWords:Vn},Kn={pattern:"*",enabled:!0,selector:"h1, h2, h3, h4, h5, h6, li, p, dd, blockquote, figcaption, label, legend",keepSelector:"code, cite, math, .math, a:has(code)",blockSelector:"",terms:"",aiTerms:"",apiSlug:Mt,fromLang:"auto",toLang:"zh-CN",textStyle:Sn,wrapOriginal:"false",originalTextStyle:Sn,transOpen:"false",textExtStyle:"",termsStyle:"font-weight: bold;",highlightStyle:"color: red;",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",parentStyle:"",grandStyle:"",injectJs:"",injectCss:"",transOnly:"false",transOnlyRevert:"false",transOnlyRevertDelay:"0.5",transTag:"font",transTitle:"false",transStartHook:"",transEndHook:"",autoScan:"true",hasRichText:"true",hasShadowroot:"false",scanAll:"false",isPlainText:"false",rootsSelector:"body",ignoreSelector:"button, footer, pre, mark, nav, svg, img[src*='.svg'], [class*='logo'] svg, [id*='logo'] svg",splitParagraph:Hn,splitLength:100,highlightWords:Gn,transOrder:"original-first"},$n=[Kn],Yn=(Object.entries({"en.wikipedia.org":{ignoreSelector:".button, code, footer, form, mark, pre, .mwe-math-element, .mw-editsection"},"news.ycombinator.com":{selector:"p, .titleline, .commtext, .hn-item-title, .hn-comment-text, .hn-story-title",keepSelector:"code, img, svg, pre, .sitebit",ignoreSelector:"button, code, footer, form, header, mark, nav, pre, .reply",autoScan:"false"},"twitter.com, https://x.com":{selector:"[data-testid='tweetText'], [data-testid='twitter-article-title'], [data-testid='UserDescription'], .public-DraftStyleDefault-block, span.text-body, div.css-175oi2r.r-3pj75a div.css-175oi2r>span, div.css-175oi2r.r-3pj75a li>span, div.r-1s2bzr4>div.r-16dba41, div.r-16y2uox>div.r-1jeg54m",keepSelector:"img, svg, a, span:has(a), div:has(a)",ignoreSelector:"[data-testid='videoPlayer'], [data-testid^='tweetTextarea']",autoScan:"false",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;"},"www.youtube.com/live_chat":{rootsSelector:"div#items",selector:"span.yt-live-chat-text-message-renderer",autoScan:"false"},"www.youtube.com":{rootsSelector:"ytd-page-manager",ignoreSelector:"aside, button, footer, form, header, pre, mark, nav, #player, #container, .caption-window, .ytp-settings-menu, #kiss-youtube-subtitle-list-container",selectStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",parentStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;",grandStyle:"-webkit-line-clamp: unset; max-height: none; height: auto;"},"web.telegram.org":{autoScan:"false",selector:".text-content, .embedded-text-wrapper",rootsSelector:".Transition"},"github.com":{autoScan:"false",selector:'h1, h2, h3, h4, h5, h6, .markdown-body li, p, dd, blockquote, figcaption, label, legend, .user-profile-bio>div, [data-testid="results-list"] .search-match, .Subhead-description, [class^="prc-SelectPanel-Subtitle-"], [class^="prc-ActionList-ItemLabel-"], [role="dialog"] .overflow-auto, .h4, .repos-list-description, .discussion-title, [class*="PinnedIssue-module__Link"] span, .js-wiki-sidebar-page-container :is(.Truncate-text, .Link--primary)',ignoreSelector:"button, p.pinned-item-desc+p"}}).map(e=>{let[t,n]=e;return u(u({},n),{},{pattern:t})}),"nobatch-translation"),Xn="batch-translation-json",Jn="subtitle-segmentation",Qn="dictionary-en-zh",Zn="follow_api",er="batch system prompt",tr="user prompt",nr="subtitle prompt",rr="dictionary prompt",or=Yn,ir=Xn,ar=Jn,sr=Qn,lr=[{slug:Yn,category:tr,nameKey:"preset_prompt_nobatch_translation",name:"Non-batch translation",systemPrompt:un,userPrompt:dn},{slug:Xn,category:er,nameKey:"preset_prompt_batch_translation_json",name:"Batch translation (JSON)",systemPrompt:pn,userPrompt:""},{slug:"batch-translation-xml",category:er,nameKey:"preset_prompt_batch_translation_xml",name:"Batch translation (XML)",systemPrompt:hn,userPrompt:""},{slug:"batch-translation-line",category:er,nameKey:"preset_prompt_batch_translation_line",name:"Batch translation (LINE)",systemPrompt:fn,userPrompt:""},{slug:Jn,category:nr,nameKey:"preset_prompt_subtitle_segmentation",name:"Subtitle AI segmentation",systemPrompt:gn,userPrompt:""},{slug:Qn,category:rr,nameKey:"preset_prompt_dictionary_en_zh",name:"AI English-Chinese Dictionary",systemPrompt:"# Role\n\u4f60\u662f\u4e00\u4f4d\u7cbe\u901a\u5bf9\u6bd4\u8bed\u8a00\u5b66\u3001\u73b0\u4ee3\u8bed\u6599\u5e93\u8bed\u8a00\u5b66\u7684\u4e13\u5bb6\u7ea7\u8bcd\u5178\u7f16\u7e82\u8005\u3002\u8bf7\u4e3a\u7528\u6237\u8f93\u5165\u7684\u6587\u672c\u63d0\u4f9b\u517c\u5177\u5b66\u672f\u4e25\u8c28\u6027\u4e0e\u89c6\u89c9\u4f18\u96c5\u611f\u7684\u5168\u65b9\u4f4d\u89e3\u6790\u6216\u9ad8\u8d28\u91cf\u7ffb\u8bd1\u3002\n\n# Execution Rules\n1. **\u667a\u80fd\u5206\u6d41\u673a\u5236\uff08CRITICAL\uff09**\uff1a\u8bf7\u4e25\u683c\u57fa\u4e8e\u4e0b\u65b9 `[Target / \u76ee\u6807\u6587\u672c]` \u7684\u957f\u5ea6\u548c\u6027\u8d28\u51b3\u5b9a\u5de5\u4f5c\u6a21\u5f0f\uff1a\n - **\u8bcd\u5178\u6a21\u5f0f**\uff1a\u4ec5\u5f53 `[Target / \u76ee\u6807\u6587\u672c]` \u660e\u786e\u662f**\u5355\u4e2a\u8bcd\u3001\u6210\u8bed\uff0c\u6216\u4e0d\u8d85\u8fc7 3 \u4e2a\u8bcd\u7684\u56fa\u5b9a\u642d\u914d**\u65f6\uff0c\u624d\u4e25\u683c\u6267\u884c\u4e0b\u65b9\u7684\u3010\u8bcd\u5178\u8f93\u51fa\u683c\u5f0f\u3011\u3002\n - **\u7eaf\u7ffb\u8bd1\u6a21\u5f0f**\uff1a\u5b8c\u6574\u53e5\u5b50\u3001\u5206\u53e5\u3001\u81ea\u7136\u8bed\u8a00\u77ed\u8bed\u3001\u6bb5\u843d\u3001\u957f\u6587\u672c\uff0c\u6216**\u8d85\u8fc7 3 \u4e2a\u8bcd\u7684\u8fde\u7eed\u6587\u672c**\uff0c\u4e00\u5f8b\u8fdb\u5165\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3002\u65e0\u6cd5\u786e\u5b9a\u65f6\uff0c\u4f18\u5148\u8fdb\u5165\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3002\n2. **\u8bed\u5883\u4f18\u5148\u539f\u5219**\uff1a\u5728\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u4e0b\uff0c\u82e5 `[Context / \u4e0a\u4e0b\u6587]` \u4e2d\u5b58\u5728\u6709\u6548\u4fe1\u606f\uff0c\u8bf7\u4f18\u5148\u9501\u5b9a\u8be5\u8bcd\u5728\u7279\u5b9a\u8bed\u5883\u4e0b\u7684\u4e49\u9879\uff0c\u5e76\u5c06\u5176\u7f6e\u4e8e\u91ca\u4e49\u9996\u4f4d\u3002\n3. **\u683c\u5f0f\u6b7b\u7ebf**\uff1a\u65e0\u8bba\u8fdb\u5165\u54ea\u79cd\u6a21\u5f0f\uff0c\u4e25\u683c\u6309\u5bf9\u5e94\u683c\u5f0f\u8f93\u51fa\uff0c\u7981\u6b62\u8f93\u51fa\u4efb\u4f55\u524d\u5bfc\u5bd2\u6684\uff08\u5982\u201c\u597d\u7684\u201d\u3001\u201c\u4e3a\u60a8\u89e3\u6790\u201d\uff09\u6216\u5c3e\u90e8\u603b\u7ed3\u3002\n\n---\n\n# Pure Translation Output Contract (\u4ec5\u9650\u3010\u7eaf\u7ffb\u8bd1\u6a21\u5f0f\u3011\u6267\u884c)\n\n\u4f60\u7684\u6574\u6761\u56de\u590d\u5fc5\u987b\u4e14\u53ea\u80fd\u662f\u76ee\u6807\u8bed\u8a00\u8bd1\u6587\u6587\u672c\u672c\u8eab\u3002\u4e0d\u5f97\u6dfb\u52a0\u4efb\u4f55\u5b57\u7b26\u3001\u683c\u5f0f\u6216\u8bf4\u660e\uff1a\n- \u4e0d\u8f93\u51fa\u539f\u6587\u3001\u53cc\u8bed\u5bf9\u7167\u3001\u6807\u9898\u3001\u6807\u7b7e\u3001\u8bed\u8a00\u540d\u79f0\u3001\u5f15\u53f7\u6216 Markdown\u3002\n- \u4e0d\u8f93\u51fa\u201c\u8bd1\u6587\uff1a\u201d\u201c\u7ffb\u8bd1\u5982\u4e0b\uff1a\u201d\u7b49\u524d\u7f00\uff0c\u4e5f\u4e0d\u8f93\u51fa\u89e3\u91ca\u3001\u97f3\u6807\u3001\u8bcd\u6e90\u3001\u642d\u914d\u3001\u4f8b\u53e5\u6216\u81f4\u8c22\u3002\n- \u539f\u6587\u662f\u5355\u6bb5\u65f6\uff0c\u8bd1\u6587\u4e5f\u53ea\u8f93\u51fa\u5355\u6bb5\uff1b\u4ec5\u5728\u539f\u6587\u6709\u591a\u4e2a\u6bb5\u843d\u65f6\u4fdd\u7559\u76f8\u5e94\u5206\u6bb5\u3002\n\n\u793a\u4f8b\uff1a\n- \u8f93\u5165\uff1aThe library for web and native user interfaces\n- \u6b63\u786e\u8f93\u51fa\uff1a\u7528\u4e8e Web \u548c\u539f\u751f\u7528\u6237\u754c\u9762\u7684\u5e93\n\n# Output Format (\u4ec5\u9650\u3010\u8bcd\u5178\u6a21\u5f0f\u3011\u6267\u884c)\n\n## \u8bcd\u6761\uff1a[\u539f\u8bcd/\u77ed\u8bed]\n> [\u5982\u679c\u8be5\u8bcd\u5728 `[Context]` \u4e2d\u53d1\u751f\u4e86\u65f6\u6001/\u590d\u6570/\u5c48\u6298\u53d8\u5f62\uff0c\u5728\u6b64\u5904\u62ec\u53f7\u5185\u6ce8\u660e\u5176\u539f\u578b\uff0c\u4f8b\u5982\uff1a(\u539f\u578b: Go)]\n\n### 1. \u57fa\u7840\u5f62\u6001\u4e0e\u97f3\u6807 (Essentials)\n- **\u53d1\u97f3\u6807\u6ce8**\uff1a\ud83c\uddfa\ud83c\uddf8 [\u7f8e\u5f0f\u97f3\u6807] \uff5c uk [\u82f1\u5f0f\u97f3\u6807] \uff08*\u82e5\u975e\u82f1\u8bed\u8bcd\u6c47\uff0c\u8bf7\u81ea\u52a8\u5207\u6362\u4e3a\u76ee\u6807\u8bed\u8a00\u7684\u6807\u51c6\u6ce8\u97f3/\u5047\u540d/\u62fc\u97f3*\uff09\n- **\u8bcd\u6027\u4e0e\u6838\u5fc3\u4e49\u9879**\uff1a\n - `[\u8bcd\u6027\u7f29\u5199. (\u5982 v. / adj.)]` \u2460 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e491] \u2461 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e492]\n - `[\u8bcd\u6027\u7f29\u5199.]` \u2460 [\u6838\u5fc3\u4e2d\u6587\u91ca\u4e491]\n\n### 2. \u8bed\u5883\u7cbe\u6790 (Contextual Mapping) *[\u4ec5\u5728\u5177\u6709\u6709\u6548 Context \u65f6\u751f\u6210\u672c\u677f\u5757]*\n- **\u5f53\u524d\u8bed\u4e49\u9501\u5b9a**\uff1a\u8be5\u8bcd\u5728\u7ed9\u5b9a\u8bed\u5883\u4e2d\u8868\u73b0\u4e3a `[\u8bcd\u6027]`\uff0c\u7cbe\u786e\u542b\u4e49\u4e3a\u201c[\u4e2d\u6587\u91ca\u4e49]\u201d\u3002\n- **\u8bed\u5883\u8272\u8c03**\uff1a[\u660e\u793a\u8be5\u8bcd\u5728\u6b64\u5904\u7684\u4fee\u8f9e\u8272\u5f69\uff0c\u5982\uff1a\u611f\u60c5\u8272\u5f69\uff08\u8912/\u8d2c/\u4e2d\u6027\uff09\uff5c \u8bed\u4f53\uff08\u6b63\u5f0f\u4e66\u9762/\u804c\u573a\u4e13\u4e1a/\u4fda\u8bed\u53e3\u8bed\uff09]\n- **\u539f\u53e5\u5e73\u66ff\u8bcd**\uff1a[\u63d0\u4f9b 1-2 \u4e2a\u5728\u5f53\u524d\u8bed\u5883\u4e2d\u53ef\u65e0\u7f1d\u66ff\u6362\u3001\u4e0d\u6539\u53d8\u539f\u610f\u7684\u8fd1\u4e49\u8bcd]\n\n### 3. \u8bcd\u6e90\u6df1\u5ea6\u89e3\u6784\u4e0e\u8fa8\u6790 (Deep Dive)\n- **\u8bcd\u6e90\u4e0e\u8bb0\u5fc6\u951a\u70b9**\uff1a[\u62c6\u89e3\u8bcd\u6839\u8bcd\u7f00\u3001\u5386\u53f2\u6f14\u53d8\uff0c\u6216\u63d0\u4f9b\u4e00\u4e2a\u903b\u8f91\u6e05\u6670\u7684\u8054\u60f3\u8bb0\u5fc6\u6cd5]\n- **\u9ad8\u9891\u642d\u914d (Collocations)**\uff1a\n * `[\u642d\u914d 1]` \u2794 [\u4e2d\u6587\u7cbe\u51c6\u7ffb\u8bd1]\n * `[\u642d\u914d 2]` \u2794 [\u4e2d\u6587\u7cbe\u51c6\u7ffb\u8bd1]\n- **\u540c\u4e49\u8bcd\u5fae\u89c2\u8fa8\u6790 (Synonyms)**\uff1a\n * **[\u539f\u8bcd] vs [\u8fd1\u4e49\u8bcd1] vs [\u8fd1\u4e49\u8bcd2]**\uff1a[\u7528 1-2 \u53e5\u8bdd\u70b9\u900f\u5b83\u4eec\u5728\u201c\u4f7f\u7528\u8bed\u5883\u201d\u3001\u201c\u8bed\u6c14\u8f7b\u91cd\u201d\u6216\u201c\u642d\u914d\u4e60\u60ef\u201d\u4e0a\u7684\u5fae\u5999\u533a\u522b]\n\n### 4. \u8bed\u6599\u5e93\u53cc\u89e3\u4f8b\u53e5 (Corpus Examples)\n[\u8bf7\u63d0\u4f9b 2-3 \u4e2a\u6765\u81ea\u771f\u5b9e\u51fa\u7248\u7269\u3001\u65b0\u95fb\u6216\u5730\u9053\u65e5\u5e38\u573a\u666f\u7684\u4f18\u8d28\u53cc\u8bed\u4f8b\u53e5]\n\n1. **[\u5730\u9053\u82f1\u6587/\u6e90\u8bed\u8a00\u4f8b\u53e5]**\n - \ud83d\udca1 *\u4e2d\u6587\u7ffb\u8bd1*\uff1a[\u7cbe\u51c6\u7684\u3001\u7b26\u5408\u4e2d\u6587\u4e60\u60ef\u7684\u7ffb\u8bd1]\n - \ud83d\udccc *\u573a\u666f\u6807\u7b7e*\uff1a`[\u5b66\u672f\u5199\u4f5c / \u5546\u52a1\u90ae\u4ef6 / \u65e5\u5e38\u8857\u5934 / \u79d1\u6280\u65b0\u95fb]`",userPrompt:mn}],cr=new Set(lr.map(e=>e.slug)),ur=["slug","category","name","systemPrompt","userPrompt"];function dr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return{slug:String(e.slug||""),category:String(e.category||""),nameKey:String(e.nameKey||""),name:String(e.name||""),systemPrompt:String(e.systemPrompt||""),userPrompt:String(e.userPrompt||"")}}function pr(e){return cr.has(e)}function hr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return(Array.isArray(e)?e:[]).map(dr).filter(e=>e.slug&&!pr(e.slug)).map(e=>{let{slug:t,category:n,name:r,systemPrompt:o,userPrompt:i}=e;return{slug:t,category:n,name:r,systemPrompt:o,userPrompt:i}})}function fr(){let e=arguments.length>1?arguments[1]:void 0;return e?function(){const e=hr(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]);return[...lr,...e]}(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).find(t=>(null===t||void 0===t?void 0:t.slug)===e):null}function mr(e,t,n){return fr(e,t)||fr(e,n)}function gr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return Object.prototype.hasOwnProperty.call(e,t)}function yr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return gr(e,t)?e[t]:n}function vr(){return gr(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},arguments.length>1?arguments[1]:void 0)}function br(){return String((arguments.length>0&&void 0!==arguments[0]?arguments[0]:{})[arguments.length>1?arguments[1]:void 0]||"")}function xr(e,t){const n=dr(e),r=dr(t);return n.category===r.category&&n.systemPrompt===r.systemPrompt&&n.userPrompt===r.userPrompt}function kr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;const n=String(e.apiName||e.apiSlug||"API");return"".concat(n," ").concat(t)}function Ar(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=arguments.length>2?arguments[2]:void 0;const r=function(e){const t=String(e);let n=2166136261,r=16777619;for(let o=0;o>>0).toString(36)).concat((r>>>0).toString(36))}(JSON.stringify({apiSlug:String(e.apiSlug||""),promptType:t,category:n.category,systemPrompt:n.systemPrompt,userPrompt:n.userPrompt}));return"prompt_migrated_".concat(t,"_").concat(r)}function Sr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e)return e;if(!gr(e,"batchPromptId")&&!gr(e,"nobatchPromptId")&&!gr(e,"subtitlePromptId")&&!gr(e,"dictPromptId"))return e;const t=u({},e);return delete t.batchPromptId,delete t.nobatchPromptId,delete t.subtitlePromptId,delete t.dictPromptId,t}const _r=[{promptType:"batch",promptLabel:"Batch prompt",category:er,systemPromptFieldName:"systemPrompt",userPromptFieldName:"",promptSlugFieldName:"batchPromptSlug"},{promptType:"nobatch",promptLabel:"Non-batch prompt",category:tr,systemPromptFieldName:"nobatchPrompt",userPromptFieldName:"nobatchUserPrompt",promptSlugFieldName:"nobatchPromptSlug"},{promptType:"subtitle",promptLabel:"Subtitle prompt",category:nr,systemPromptFieldName:"subtitlePrompt",userPromptFieldName:"",promptSlugFieldName:"subtitlePromptSlug"},{promptType:"dict",promptLabel:"Dictionary prompt",category:rr,systemPromptFieldName:"dictPrompt",userPromptFieldName:"dictUserPrompt",promptSlugFieldName:"dictPromptSlug"}];function wr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const t=new Map;return e.forEach(e=>{const n=null===e||void 0===e?void 0:e.slug;n&&!t.has(n)&&t.set(n,e)}),t}function Tr(e,t,n){if(vr(e,t.promptSlugFieldName))return"";const r=function(e,t){return gr(e,t.systemPromptFieldName)?{slug:"",category:t.category,nameKey:"",name:kr(e,t.promptLabel),systemPrompt:br(e,t.systemPromptFieldName),userPrompt:t.userPromptFieldName?br(e,t.userPromptFieldName):""}:null}(e,t);if(!r)return"";const o=function(e){return lr.find(t=>xr(t,e))}(r);if(o)return o.slug;const i=Ar(e,t.promptType,r),a=function(e,t,n){let r=1,o=n;for(;e.has(o);){if(xr(e.get(o),t))return o;r+=1,o="".concat(n,"_").concat(r)}return o}(n.promptBySlug,r,i);if(!n.promptBySlug.has(a)){const e=u(u({},r),{},{slug:a});n.prompts.push(e),n.promptBySlug.set(a,e),n.hasPromptChanges=!0}return a}function Er(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=Number((null===e||void 0===e?void 0:e.version)||1);return Number.isFinite(t)&&t>=1?t:1}function Cr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e||"object"!==typeof e)return e;if(!Array.isArray(e.transApis))return u(u({},e),{},{version:2});const t=Array.isArray(e.prompts)?e.prompts:[],n=hr(t),r=!function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0;return Array.isArray(e)?e.length===t.length&&e.every((e,n)=>!(!e||"object"!==typeof e)&&(Object.keys(e).every(e=>ur.includes(e))&&JSON.stringify(dr(e))===JSON.stringify(t[n]))):0===t.length}(t,n),o=function(e){if(!e||!gr(e,"segPromptId"))return e;const t=u({},e);return delete t.segPromptId,t}(e.subtitleSetting),i=o!==e.subtitleSetting,a={prompts:[...n],promptBySlug:wr([...lr,...n]),hasPromptChanges:r};let s=!1;const l=e.transApis.map(e=>{if(!e||"object"!==typeof e)return e;let t=Sr(e);return t!==e&&(s=!0),_r.forEach(n=>{const r=Boolean(t.apiType)&&!Jt.ai.has(t.apiType),o="string"===typeof t[n.systemPromptFieldName]?t[n.systemPromptFieldName].trim():"",i=n.userPromptFieldName&&"string"===typeof t[n.userPromptFieldName]?t[n.userPromptFieldName].trim():"";if(r||!o&&!i)return void((gr(t,n.systemPromptFieldName)||n.userPromptFieldName&&gr(t,n.userPromptFieldName))&&(t===e&&(t=u({},e)),t=function(e,t){const n=u({},e);return delete n[t.systemPromptFieldName],t.userPromptFieldName&&delete n[t.userPromptFieldName],n}(t,n),s=!0));const l=Tr(t,n,a);l&&t[n.promptSlugFieldName]!==l&&(t===e&&(t=u({},e)),t[n.promptSlugFieldName]=l,delete t[n.systemPromptFieldName],n.userPromptFieldName&&delete t[n.userPromptFieldName],s=!0)}),t}),c=u({},e);return c.version=2,c.transApis=s?l:e.transApis,c.prompts=a.hasPromptChanges?a.prompts:n,i&&(c.subtitleSetting=o),c}function Ir(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!e||"object"!==typeof e)return e;const t=Er(e)<2?Cr(e):e;if(Er(t)>=3)return t;const n=Array.isArray(t.transApis)?t.transApis.map(e=>(null===e||void 0===e?void 0:e.apiType)!==Bt||e.url!==ut?e:u(u({},e),{},{url:dt})):t.transApis;return u(u({},t),{},{transApis:n,version:3})}function Lr(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return(Array.isArray(e)?e:[]).map(e=>function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e)return e;const r=Sr(e),o=r===e?u({},e):r,i=vr(o,"batchPromptSlug"),a=gr(o,"systemPrompt"),s=mr(t,yr(o,"batchPromptSlug",ir),ir);!s||!i&&a||(o.batchPromptSlug=s.slug,o.systemPrompt=s.systemPrompt);const l=vr(o,"nobatchPromptSlug"),c=gr(o,"nobatchPrompt")||gr(o,"nobatchUserPrompt"),d=mr(t,yr(o,"nobatchPromptSlug",or),or);!d||!l&&c||(o.nobatchPromptSlug=d.slug,o.nobatchPrompt=d.systemPrompt,o.nobatchUserPrompt=d.userPrompt);const p="global"===(null===n||void 0===n?void 0:n.segPromptMode),h=vr(o,"subtitlePromptSlug"),f=gr(o,"subtitlePrompt"),m=mr(t,p?yr(n,"segPromptSlug",ar):yr(o,"subtitlePromptSlug",ar),ar);m&&(p||h||!f)&&(p||(o.subtitlePromptSlug=m.slug),o.subtitlePrompt=m.systemPrompt);const g=vr(o,"dictPromptSlug"),y=gr(o,"dictPrompt")||gr(o,"dictUserPrompt"),v=mr(t,yr(o,"dictPromptSlug",sr),sr);return!v||!g&&y||(o.dictPromptSlug=v.slug,o.dictPrompt=v.systemPrompt,o.dictUserPrompt=v.userPrompt),o}(e,t,n))}const zr={DEBUG:{value:0,name:"DEBUG",color:"#6495ED"},INFO:{value:1,name:"INFO",color:"#4CAF50"},WARN:{value:2,name:"WARN",color:"#FFC107"},ERROR:{value:3,name:"ERROR",color:"#F44336"},SILENT:{value:4,name:"SILENT"}};const Pr=new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.config={level:e.level||zr.INFO,prefix:e.prefix||"KISS-Translator"}}setLevel(e){let t;if("string"===typeof e){if(t=function(e){if("string"!==typeof e||0===e.length)return;const t=e.toUpperCase();return Object.values(zr).find(e=>e.name===t)}(e),!t)return void this.warn('Invalid log level name provided: "'.concat(e,'". Keeping current level.'))}else if("number"===typeof e){if(n=e,t=Object.values(zr).find(e=>e.value===n),!t)return void this.warn("Invalid log level value provided: ".concat(e,". Keeping current level."))}else{if(!e||"number"!==typeof e.value)return void this.warn("Invalid argument passed to setLevel. Must be a LogLevel object, number, or string.");t=e}var n;this.config.level.value!==t.value&&(this.config.level=t,console.log("[".concat(this.config.prefix,"] Log level dynamically set to ").concat(this.config.level.name)))}_log(e){if(e.value1?i-1:0),s=1;s{let[t]=e;return"zh-CN"!==t&&"zh-TW"!==t}),{transOpen:!0,blacklist:"",apiSlugs:[Mt],singleWordNoTrans:!1,autoFavWord:!1,fromLang:"auto",toLang:"zh-CN",toLang2:"en",tranboxShortcut:["AltLeft","KeyS"],btnOffsetX:0,btnOffsetY:0,boxOffsetX:0,boxOffsetY:10,hideTranBtn:!1,hideClickAway:!1,simpleStyle:!1,followSelection:!1,autoHeight:!1,triggerMode:Hr,btnPositionMode:Gr,tranboxInteractMode:"-",skipLangs:[],enDict:pt,enSug:yt,aiDictApiSlug:"-",aiDictPromptSlug:Zn}),Kr="mobile_off",$r={enabled:!0,apiSlug:Mt,segSlug:"-",forceSubtitleRetranslate:!1,chunkLength:1e3,longSentenceThreshold:100,useAlgorithmBreaker:"rule",preTrans:90,throttleTrans:30,toLang:"zh-CN",autoTranslate:!0,isBilingual:!0,displayOrder:"original-first",blurTranslation:!1,skipAd:!1,windowStyle:"padding: 0.5em 1em;\nbackground-color: rgba(0, 0, 0, 0.5);\ncolor: white;\nline-height: 1.3;\ntext-shadow: 1px 1px 2px black;\ndisplay: inline-block",originStyle:"font-size: clamp(1rem, 2cqw, 3rem);",translationStyle:"font-size: clamp(1rem, 2cqw, 3rem);",hoverLookupMode:Kr,autoFavWord:!1,showList:Kr,hideSubtitleButton:!1,aiContextSlug:"-",segPromptMode:Zn,segPromptSlug:ar},Yr={useMouseHover:!1,blacklist:"",mouseHoverKey:["ControlLeft"],mouseHoverKey2:[],displayMode:"bilingual",bubbleStyle:"max-width: min(420px, calc(100vw - 32px));\npadding: 10px 12px;\nborder-radius: 8px;\nbackground: rgb(25, 118, 210);\ncolor: #fff;\nfont-size: 14px;\nline-height: 1.5;\nbox-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);\nbackdrop-filter: blur(8px);"},Xr={version:3,darkMode:"auto",uiLang:"en",minLength:2,maxLength:1e5,newlineLength:20,httpTimeout:30,clearCache:!1,injectRules:!0,fabClickAction:0,contextMenuType:1,subrulesList:[{url:"https://fishjar.github.io/kiss-rules/kiss-rules_v2.json",selected:!0},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-on_v2.json",selected:!1},{url:"https://fishjar.github.io/kiss-rules/kiss-rules-off_v2.json",selected:!1}],transApis:xn,prompts:[],deletedTransApiSlugs:[],shortcuts:Dr,inputRule:Vr,tranboxSetting:qr,touchModes:[2],blacklist:["https://fishjar.github.io/kiss-translator/options.html","https://translate.google.com","https://www.deepl.com/translator"].join(",\n"),csplist:[].join(",\n"),orilist:["https://dict.youdao.com"].join(",\n"),skipLangs:[],transInterval:100,langDetector:"-",mouseHoverSetting:Yr,preInit:!0,transAllnow:!1,subtitleSetting:$r,logLevel:zr.INFO.value,rootMargin:500,customStyles:Un},Jr='["en", "English - English"],\n["zh-CN", "Simplified Chinese - \u7b80\u4f53\u4e2d\u6587"],\n["zh-TW", "Traditional Chinese - \u7e41\u9ad4\u4e2d\u6587"],\n["ar", "Arabic - \u0627\u0644\u0639\u0631\u0628\u064a\u0629"],\n["bg", "Bulgarian - \u0411\u044a\u043b\u0433\u0430\u0440\u0441\u043a\u0438"],\n["ca", "Catalan - Catal\xe0"],\n["hr", "Croatian - Hrvatski"],\n["cs", "Czech - \u010ce\u0161tina"],\n["da", "Danish - Dansk"],\n["nl", "Dutch - Nederlands"],\n["fi", "Finnish - Suomi"],\n["fr", "French - Fran\xe7ais"],\n["de", "German - Deutsch"],\n["el", "Greek - \u0395\u03bb\u03bb\u03b7\u03bd\u03b9\u03ba\u03ac"],\n["hi", "Hindi - \u0939\u093f\u0928\u094d\u0926\u0940"],\n["hu", "Hungarian - Magyar"],\n["id", "Indonesian - Indonesia"],\n["it", "Italian - Italiano"],\n["ja", "Japanese - \u65e5\u672c\u8a9e"],\n["ko", "Korean - \ud55c\uad6d\uc5b4"],\n["ms", "Malay - Melayu"],\n["mt", "Maltese - Malti"],\n["nb", "Norwegian - Norsk Bokm\xe5l"],\n["pl", "Polish - Polski"],\n["pt", "Portuguese - Portugu\xeas"],\n["ro", "Romanian - Rom\xe2n\u0103"],\n["ru", "Russian - \u0420\u0443\u0441\u0441\u043a\u0438\u0439"],\n["sk", "Slovak - Sloven\u010dina"],\n["sl", "Slovenian - Sloven\u0161\u010dina"],\n["es", "Spanish - Espa\xf1ol"],\n["sv", "Swedish - Svenska"],\n["ta", "Tamil - \u0ba4\u0bae\u0bbf\u0bb4\u0bcd"],\n["te", "Telugu - \u0c24\u0c46\u0c32\u0c41\u0c17\u0c41"],\n["th", "Thai - \u0e44\u0e17\u0e22"],\n["tr", "Turkish - T\xfcrk\xe7e"],\n["uk", "Ukrainian - \u0423\u043a\u0440\u0430\u0457\u043d\u0441\u044c\u043a\u0430"],\n["vi", "Vietnamese - Ti\u1ebfng Vi\u1ec7t"],\n',Qr='// \u8bf7\u6c42\u6570\u636e\u9ed8\u8ba4\u683c\u5f0f\n{\n "url": "{{url}}",\n "method": "POST",\n "headers": {\n "Content-type": "application/json",\n "Authorization": "Bearer {{key}}"\n },\n "body": {\n "text": "{{text}}", // \u5f85\u7ffb\u8bd1\u6587\u5b57\n "from": "{{from}}", // \u6587\u5b57\u7684\u8bed\u8a00\uff08\u53ef\u80fd\u4e3a\u7a7a\uff09\n "to": "{{to}}", // \u76ee\u6807\u8bed\u8a00\n },\n}\n\n\n// \u8fd4\u56de\u6570\u636e\u9ed8\u8ba4\u683c\u5f0f\n{\n text: "", // \u7ffb\u8bd1\u540e\u7684\u6587\u5b57\n from: "", // \u8bc6\u522b\u7684\u6e90\u8bed\u8a00\n to: "", // \u76ee\u6807\u8bed\u8a00\uff08\u53ef\u9009\uff09\n}\n\n\n// Hook \u8303\u4f8b\n// URL\nhttps://translate.googleapis.com/translate_a/single?client=gtx&dj=1&dt=t&ie=UTF-8&q={{text}}&sl=en&tl=zh-CN\n\n// Request Hook\n(text, from, to, url, key) => [url, {\n headers: {\n "Content-type": "application/json",\n },\n method: "GET",\n body: null,\n}]\n\n// Response Hook\n// \u5176\u4e2d\u8fd4\u56de\u6570\u7ec4\u7b2c\u4e00\u4e2a\u503c\u8868\u793a\u8bd1\u6587\u5b57\u7b26\u4e32\uff0c\u7b2c\u4e8c\u4e2a\u503c\u4e3a\u5e03\u5c14\u503c\uff0c\u8868\u793a\u539f\u6587\u8bed\u8a00\u4e0e\u76ee\u6807\u8bed\u8a00\u662f\u5426\u76f8\u540c\n(res, text, from, to) => [res.sentences.map((item) => item.trans).join(" "), to === res.src]\n\n\n// \u652f\u6301\u7684\u8bed\u8a00\u4ee3\u7801\u5982\u4e0b\n'.concat(Jr,"\n"),Zr='// Default request\n{\n "url": "{{url}}",\n "method": "POST",\n "headers": {\n "Content-type": "application/json",\n "Authorization": "Bearer {{key}}"\n },\n "body": {\n "text": "{{text}}", // Text to be translated\n "from": "{{from}}", // The language of the text (may be empty)\n "to": "{{to}}", // Target language\n },\n}\n\n\n// Default response\n{\n text: "", // translated text\n from: "", // Recognized source language\n to: "", // Target language (optional)\n}\n\n\n/// Hook Example\n// URL\nhttps://translate.googleapis.com/translate_a/single?client=gtx&dj=1&dt=t&ie=UTF-8&q={{text}}&sl=en&tl=zh-CN\n\n// Request Hook\n(text, from, to, url, key) => [url, {\n headers: {\n "Content-type": "application/json",\n },\n method: "GET",\n body: null,\n}]\n\n// Response Hook\n// In the returned array, the first value is the translated string, while the second value is a boolean\n// that indicates whether the source language is the same as the target language.\n(res, text, from, to) => [res.sentences.map((item) => item.trans).join(" "), to === res.src]\n\n\n// The supported language codes are as follows\n'.concat(Jr,"\n"),eo="1. The first parameter contains the following fields: 'texts', 'from', 'to', 'url', 'key', 'model', 'systemPrompt', ...\n2. The return value must be an object containing the following fields: 'url', 'body', 'headers', 'method'\n3. If a null value is returned, the hook function will have no effect.\n\n// Example\nasync (args, { url, body, headers, userMsg, method } = {}) => {\n return { url, body, headers, userMsg, method };\n}",to="1. The first parameter contains the following fields: 'res', ...\n2. The return value must be an object containing the following fields: 'translations'\n ('translations' should be a two-dimensional array: [[translation, source language]]).\n3. If a null value is returned, the hook function will have no effect.\n\n// Example\nasync ({ res, ...args }) => {\n const translations = [[\"\u4f60\u597d\", \"en\"]];\n const modelMsg = {}; // For AI context\n return { translations, modelMsg };\n}",no='// \u8acb\u6c42\u8cc7\u6599\u9810\u8a2d\u683c\u5f0f\n{\n "url": "{{url}}",\n "method": "POST",\n "headers": {\n "Content-type": "application/json",\n "Authorization": "Bearer {{key}}"\n },\n "body": {\n "text": "{{text}}", // \u5f85\u7ffb\u8b6f\u6587\u5b57\n "from": "{{from}}", // \u6587\u5b57\u7684\u8a9e\u8a00\uff08\u53ef\u80fd\u70ba\u7a7a\uff09\n "to": "{{to}}", // \u76ee\u6a19\u8a9e\u8a00\n },\n}\n\n\n// \u56de\u50b3\u8cc7\u6599\u9810\u8a2d\u683c\u5f0f\n{\n text: "", // \u7ffb\u8b6f\u5f8c\u7684\u6587\u5b57\n from: "", // \u8fa8\u8b58\u7684\u4f86\u6e90\u8a9e\u8a00\n to: "", // \u76ee\u6a19\u8a9e\u8a00\uff08\u9078\u586b\uff09\n}\n\n\n// Hook \u7bc4\u4f8b\n// URL\nhttps://translate.googleapis.com/translate_a/single?client=gtx&dj=1&dt=t&ie=UTF-8&q={{text}}&sl=en&tl=zh-CN\n\n// Request Hook\n(text, from, to, url, key) => [url, {\n headers: {\n "Content-type": "application/json",\n },\n method: "GET",\n body: null,\n}]\n\n// Response Hook\n// \u5176\u4e2d\u56de\u50b3\u9663\u5217\u7b2c\u4e00\u500b\u503c\u8868\u793a\u8b6f\u6587\u5b57\u4e32\uff0c\u7b2c\u4e8c\u500b\u503c\u70ba\u5e03\u6797\u503c\uff0c\u8868\u793a\u539f\u6587\u8a9e\u8a00\u8207\u76ee\u6a19\u8a9e\u8a00\u662f\u5426\u76f8\u540c\n(res, text, from, to) => [res.sentences.map((item) => item.trans).join(" "), to === res.src]\n\n\n// \u652f\u63f4\u7684\u8a9e\u8a00\u4ee3\u78bc\u5982\u4e0b\n'.concat(Jr,"\n"),ro=(e,t,n,r,o,i)=>({zh:e,en:t,zh_TW:n,ja:r,ko:o,tr:i}),oo=u(u({},{playground_text_translation:ro("\u6587\u672c\u7ffb\u8bd1","Text translation","\u6587\u5b57\u7ffb\u8b6f","\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33","\ud14d\uc2a4\ud2b8 \ubc88\uc5ed","Metin \xe7evirisi"),playground_merge_single_line_breaks:ro("\u5408\u5e76\u5355\u4e2a\u6362\u884c\uff08\u4fdd\u7559\u6bb5\u843d\uff09","Merge single line breaks (preserve paragraphs)","\u5408\u4f75\u55ae\u500b\u63db\u884c\uff08\u4fdd\u7559\u6bb5\u843d\uff09","\u5358\u4e00\u6539\u884c\u3092\u7d50\u5408\uff08\u6bb5\u843d\u306f\u4fdd\u6301\uff09","\ub2e8\uc77c \uc904\ubc14\uafc8 \ubcd1\ud569(\ubb38\ub2e8 \uc720\uc9c0)","Tek sat\u0131r sonlar\u0131n\u0131 birle\u015ftir (paragraflar\u0131 koru)"),subtitle_segmentation:ro("\u5b57\u5e55\u65ad\u53e5","Subtitle segmentation","\u5b57\u5e55\u65b7\u53e5","\u5b57\u5e55\u5206\u5272","\uc790\ub9c9 \ubd84\ud560","Altyaz\u0131 b\xf6l\xfcmleme"),subtitle_playground_invalid_events:ro("\u5b57\u5e55\u6587\u4ef6\u6ca1\u6709\u6709\u6548\u7684 events \u6570\u7ec4","The subtitle file has no valid events array","\u5b57\u5e55\u6a94\u6848\u6c92\u6709\u6709\u6548\u7684 events \u9663\u5217","\u5b57\u5e55\u30d5\u30a1\u30a4\u30eb\u306b\u6709\u52b9\u306a events \u914d\u5217\u304c\u3042\u308a\u307e\u305b\u3093","\uc790\ub9c9 \ud30c\uc77c\uc5d0 \uc720\ud6a8\ud55c events \ubc30\uc5f4\uc774 \uc5c6\uc2b5\ub2c8\ub2e4","Altyaz\u0131 dosyas\u0131nda ge\xe7erli bir events dizisi yok"),subtitle_playground_event_limit:ro("\u5b57\u5e55\u4e8b\u4ef6\u6570\u91cf\u4e0d\u80fd\u8d85\u8fc7 {max}","Subtitle events cannot exceed {max}","\u5b57\u5e55\u4e8b\u4ef6\u6578\u91cf\u4e0d\u80fd\u8d85\u904e {max}","\u5b57\u5e55\u30a4\u30d9\u30f3\u30c8\u6570\u306f {max} \u3092\u8d85\u3048\u3089\u308c\u307e\u305b\u3093","\uc790\ub9c9 \uc774\ubca4\ud2b8 \uc218\ub294 {max}\uac1c\ub97c \ucd08\uacfc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4","Altyaz\u0131 olay\u0131 say\u0131s\u0131 {max} de\u011ferini a\u015famaz"),subtitle_playground_missing_segments:ro("\u5b57\u5e55\u6587\u4ef6\u7f3a\u5c11 YouTube json3 \u7684 segs \u6570\u636e","The subtitle file is missing YouTube json3 segs data","\u5b57\u5e55\u6a94\u6848\u7f3a\u5c11 YouTube json3 \u7684 segs \u8cc7\u6599","\u5b57\u5e55\u30d5\u30a1\u30a4\u30eb\u306b YouTube json3 \u306e segs \u30c7\u30fc\u30bf\u304c\u3042\u308a\u307e\u305b\u3093","\uc790\ub9c9 \ud30c\uc77c\uc5d0 YouTube json3 segs \ub370\uc774\ud130\uac00 \uc5c6\uc2b5\ub2c8\ub2e4","Altyaz\u0131 dosyas\u0131nda YouTube json3 segs verisi yok"),subtitle_playground_remote_size_invalid:ro("\u8fdc\u7a0b\u5b57\u5e55\u6837\u672c\u5927\u5c0f\u6821\u9a8c\u5931\u8d25","Remote subtitle sample size validation failed","\u9060\u7aef\u5b57\u5e55\u6a23\u672c\u5927\u5c0f\u9a57\u8b49\u5931\u6557","\u30ea\u30e2\u30fc\u30c8\u5b57\u5e55\u30b5\u30f3\u30d7\u30eb\u306e\u30b5\u30a4\u30ba\u691c\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f","\uc6d0\uaca9 \uc790\ub9c9 \uc0d8\ud50c \ud06c\uae30 \uac80\uc99d\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4","Uzak altyaz\u0131 \xf6rne\u011fi boyut do\u011frulamas\u0131 ba\u015far\u0131s\u0131z"),subtitle_playground_remote_hash_invalid:ro("\u8fdc\u7a0b\u5b57\u5e55\u6837\u672c\u54c8\u5e0c\u6821\u9a8c\u5931\u8d25","Remote subtitle sample hash validation failed","\u9060\u7aef\u5b57\u5e55\u6a23\u672c\u96dc\u6e4a\u9a57\u8b49\u5931\u6557","\u30ea\u30e2\u30fc\u30c8\u5b57\u5e55\u30b5\u30f3\u30d7\u30eb\u306e\u30cf\u30c3\u30b7\u30e5\u691c\u8a3c\u306b\u5931\u6557\u3057\u307e\u3057\u305f","\uc6d0\uaca9 \uc790\ub9c9 \uc0d8\ud50c \ud574\uc2dc \uac80\uc99d\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4","Uzak altyaz\u0131 \xf6rne\u011fi karma do\u011frulamas\u0131 ba\u015far\u0131s\u0131z"),subtitle_playground_remote_index_failed:ro("\u8fdc\u7a0b\u5b57\u5e55\u6837\u672c\u7d22\u5f15\u52a0\u8f7d\u5931\u8d25\uff0c\u53ef\u4ee5\u7ee7\u7eed\u4e0a\u4f20\u672c\u5730 JSON","Failed to load the remote sample index. You can still upload a local JSON file","\u9060\u7aef\u5b57\u5e55\u6a23\u672c\u7d22\u5f15\u8f09\u5165\u5931\u6557\uff0c\u4ecd\u53ef\u4e0a\u50b3\u672c\u6a5f JSON","\u30ea\u30e2\u30fc\u30c8\u5b57\u5e55\u30b5\u30f3\u30d7\u30eb\u306e\u7d22\u5f15\u3092\u8aad\u307f\u8fbc\u3081\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u30ed\u30fc\u30ab\u30eb JSON \u306f\u5f15\u304d\u7d9a\u304d\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9\u3067\u304d\u307e\u3059","\uc6d0\uaca9 \uc790\ub9c9 \uc0d8\ud50c \uc0c9\uc778\uc744 \ubd88\ub7ec\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4. \ub85c\uceec JSON\uc740 \uacc4\uc18d \uc5c5\ub85c\ub4dc\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4","Uzak \xf6rnek dizini y\xfcklenemedi. Yerel bir JSON dosyas\u0131 y\xfckleyebilirsiniz"),subtitle_playground_sample_load_failed:ro("\u5b57\u5e55\u6837\u672c\u52a0\u8f7d\u5931\u8d25\uff1a{message}","Failed to load subtitle sample: {message}","\u5b57\u5e55\u6a23\u672c\u8f09\u5165\u5931\u6557\uff1a{message}","\u5b57\u5e55\u30b5\u30f3\u30d7\u30eb\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff1a{message}","\uc790\ub9c9 \uc0d8\ud50c\uc744 \ubd88\ub7ec\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4: {message}","Altyaz\u0131 \xf6rne\u011fi y\xfcklenemedi: {message}"),subtitle_playground_file_too_large:ro("\u5b57\u5e55\u6587\u4ef6\u4e0d\u80fd\u8d85\u8fc7 10MB","The subtitle file cannot exceed 10 MB","\u5b57\u5e55\u6a94\u6848\u4e0d\u80fd\u8d85\u904e 10MB","\u5b57\u5e55\u30d5\u30a1\u30a4\u30eb\u306f 10 MB \u3092\u8d85\u3048\u3089\u308c\u307e\u305b\u3093","\uc790\ub9c9 \ud30c\uc77c\uc740 10MB\ub97c \ucd08\uacfc\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4","Altyaz\u0131 dosyas\u0131 10 MB'\u0131 a\u015famaz"),subtitle_playground_file_parse_failed:ro("\u5b57\u5e55\u6587\u4ef6\u89e3\u6790\u5931\u8d25\uff1a{message}","Failed to parse subtitle file: {message}","\u5b57\u5e55\u6a94\u6848\u89e3\u6790\u5931\u6557\uff1a{message}","\u5b57\u5e55\u30d5\u30a1\u30a4\u30eb\u306e\u89e3\u6790\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff1a{message}","\uc790\ub9c9 \ud30c\uc77c\uc744 \ubd84\uc11d\ud558\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4: {message}","Altyaz\u0131 dosyas\u0131 ayr\u0131\u015ft\u0131r\u0131lamad\u0131: {message}"),subtitle_playground_ai_confirm_title:ro("\u53d1\u9001 AI \u65ad\u53e5\u8bf7\u6c42","Send AI segmentation requests","\u50b3\u9001 AI \u65b7\u53e5\u8acb\u6c42","AI \u5b57\u5e55\u5206\u5272\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1","AI \uc790\ub9c9 \ubd84\ud560 \uc694\uccad \ubcf4\ub0b4\uae30","AI b\xf6l\xfcmleme isteklerini g\xf6nder"),subtitle_playground_ai_confirm_message:ro("\u5c06\u4f7f\u7528 {api} / {model} \u53d1\u9001\u7ea6 {count} \u4e2a\u5b57\u5e55\u8bf7\u6c42\u3002\u6837\u672c\u6587\u672c\u4f1a\u53d1\u9001\u5230\u5f53\u524d AI \u670d\u52a1\u3002","About {count} subtitle requests will be sent using {api} / {model}. The sample text will be sent to the current AI service.","\u5c07\u4f7f\u7528 {api} / {model} \u50b3\u9001\u7d04 {count} \u500b\u5b57\u5e55\u8acb\u6c42\u3002\u6a23\u672c\u6587\u5b57\u6703\u50b3\u9001\u5230\u76ee\u524d\u7684 AI \u670d\u52d9\u3002","{api} / {model} \u3092\u4f7f\u7528\u3057\u3066\u7d04 {count} \u4ef6\u306e\u5b57\u5e55\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3057\u307e\u3059\u3002\u30b5\u30f3\u30d7\u30eb\u30c6\u30ad\u30b9\u30c8\u306f\u73fe\u5728\u306e AI \u30b5\u30fc\u30d3\u30b9\u306b\u9001\u4fe1\u3055\u308c\u307e\u3059\u3002","{api} / {model}\uc744 \uc0ac\uc6a9\ud574 \uc57d {count}\uac1c\uc758 \uc790\ub9c9 \uc694\uccad\uc744 \ubcf4\ub0c5\ub2c8\ub2e4. \uc0d8\ud50c \ud14d\uc2a4\ud2b8\uac00 \ud604\uc7ac AI \uc11c\ube44\uc2a4\ub85c \uc804\uc1a1\ub429\ub2c8\ub2e4.","{api} / {model} kullan\u0131larak yakla\u015f\u0131k {count} altyaz\u0131 iste\u011fi g\xf6nderilecek. \xd6rnek metin mevcut AI hizmetine g\xf6nderilecektir."),subtitle_playground_default_model:ro("\u9ed8\u8ba4\u6a21\u578b","Default model","\u9810\u8a2d\u6a21\u578b","\u65e2\u5b9a\u306e\u30e2\u30c7\u30eb","\uae30\ubcf8 \ubaa8\ub378","Varsay\u0131lan model"),subtitle_playground_continue:ro("\u7ee7\u7eed","Continue","\u7e7c\u7e8c","\u7d9a\u884c","\uacc4\uc18d","Devam"),subtitle_playground_test_failed:ro("\u5b57\u5e55\u65ad\u53e5\u5931\u8d25\uff1a{message}","Subtitle segmentation failed: {message}","\u5b57\u5e55\u65b7\u53e5\u5931\u6557\uff1a{message}","\u5b57\u5e55\u5206\u5272\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff1a{message}","\uc790\ub9c9 \ubd84\ud560\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4: {message}","Altyaz\u0131 b\xf6l\xfcmleme ba\u015far\u0131s\u0131z: {message}"),subtitle_playground_prompt_global:ro("\u5168\u5c40\u5b57\u5e55\u8bbe\u7f6e","Global subtitle settings","\u5168\u57df\u5b57\u5e55\u8a2d\u5b9a","\u30b0\u30ed\u30fc\u30d0\u30eb\u5b57\u5e55\u8a2d\u5b9a","\uc804\uc5ed \uc790\ub9c9 \uc124\uc815","Genel altyaz\u0131 ayarlar\u0131"),subtitle_playground_prompt_preset:ro("\u63a5\u53e3\u9884\u8bbe","API preset","\u4ecb\u9762\u9810\u8a2d","API \u30d7\u30ea\u30bb\u30c3\u30c8","API \ud504\ub9ac\uc14b","API \xf6n ayar\u0131"),subtitle_playground_prompt_custom:ro("\u63a5\u53e3\u81ea\u5b9a\u4e49","API custom","\u4ecb\u9762\u81ea\u8a02","API \u30ab\u30b9\u30bf\u30e0","API \uc0ac\uc6a9\uc790 \uc9c0\uc815","\xd6zel API"),subtitle_playground_config_title:ro("\u5f53\u524d\u751f\u6548\u7684\u65ad\u53e5\u914d\u7f6e","Active segmentation configuration","\u76ee\u524d\u751f\u6548\u7684\u65b7\u53e5\u8a2d\u5b9a","\u73fe\u5728\u6709\u52b9\u306a\u5b57\u5e55\u5206\u5272\u8a2d\u5b9a","\ud604\uc7ac \uc801\uc6a9 \uc911\uc778 \uc790\ub9c9 \ubd84\ud560 \uc124\uc815","Etkin b\xf6l\xfcmleme yap\u0131land\u0131rmas\u0131"),subtitle_playground_mode:ro("\u6a21\u5f0f","Mode","\u6a21\u5f0f","\u30e2\u30fc\u30c9","\ubaa8\ub4dc","Mod"),subtitle_playground_api:ro("API","API","API","API","API","API"),subtitle_playground_type_model:ro("\u7c7b\u578b / \u6a21\u578b","Type / model","\u985e\u578b / \u6a21\u578b","\u30bf\u30a4\u30d7 / \u30e2\u30c7\u30eb","\uc720\ud615 / \ubaa8\ub378","T\xfcr / model"),subtitle_playground_prompt:ro("\u63d0\u793a\u8bcd","Prompt","\u63d0\u793a\u8a5e","\u30d7\u30ed\u30f3\u30d7\u30c8","\ud504\ub86c\ud504\ud2b8","\u0130stem"),subtitle_playground_api_default:ro("\u63a5\u53e3\u9ed8\u8ba4","API default","\u4ecb\u9762\u9810\u8a2d","API \u306e\u65e2\u5b9a\u5024","API \uae30\ubcf8\uac12","API varsay\u0131lan\u0131"),subtitle_playground_prompt_value:ro("{prompt}\uff08{source}\uff09","{prompt} ({source})","{prompt}\uff08{source}\uff09","{prompt}\uff08{source}\uff09","{prompt} ({source})","{prompt} ({source})"),subtitle_playground_chunk_length:ro("Chunk \u957f\u5ea6","Chunk length","Chunk \u9577\u5ea6","\u30c1\u30e3\u30f3\u30af\u9577","\uccad\ud06c \uae38\uc774","Par\xe7a uzunlu\u011fu"),subtitle_playground_estimated_chunks:ro("\u9884\u8ba1 Chunk","Estimated chunks","\u9810\u4f30 Chunk","\u63a8\u5b9a\u30c1\u30e3\u30f3\u30af\u6570","\uc608\uc0c1 \uccad\ud06c \uc218","Tahmini par\xe7a say\u0131s\u0131"),subtitle_playground_target_language:ro("\u76ee\u6807\u8bed\u8a00","Target language","\u76ee\u6a19\u8a9e\u8a00","\u7ffb\u8a33\u5148\u8a00\u8a9e","\ub300\uc0c1 \uc5b8\uc5b4","Hedef dil"),subtitle_playground_streaming:ro("\u6d41\u5f0f","Streaming","\u4e32\u6d41","\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0","\uc2a4\ud2b8\ub9ac\ubc0d","Ak\u0131\u015f"),subtitle_playground_enabled:ro("\u542f\u7528","Enabled","\u555f\u7528","\u6709\u52b9","\uc0ac\uc6a9","Etkin"),subtitle_playground_disabled:ro("\u5173\u95ed","Disabled","\u95dc\u9589","\u7121\u52b9","\uc0ac\uc6a9 \uc548 \ud568","Devre d\u0131\u015f\u0131"),subtitle_playground_protocol:ro("\u534f\u8bae","Protocol","\u5354\u5b9a","\u30d7\u30ed\u30c8\u30b3\u30eb","\ud504\ub85c\ud1a0\ucf5c","Protokol"),subtitle_playground_legacy_compatible:ro("\u517c\u5bb9\u65e7\u534f\u8bae","Legacy protocol compatible","\u76f8\u5bb9\u820a\u5354\u5b9a","\u65e7\u30d7\u30ed\u30c8\u30b3\u30eb\u4e92\u63db","\uc774\uc804 \ud504\ub85c\ud1a0\ucf5c \ud638\ud658","Eski protokolle uyumlu"),subtitle_playground_protocol_value:ro("{protocol}\uff08{compatibility}\uff09","{protocol} ({compatibility})","{protocol}\uff08{compatibility}\uff09","{protocol}\uff08{compatibility}\uff09","{protocol} ({compatibility})","{protocol} ({compatibility})"),subtitle_playground_statistical_mode:ro("\u7edf\u8ba1\u65ad\u53e5","Statistical segmentation","\u7d71\u8a08\u65b7\u53e5","\u7d71\u8a08\u7684\u5b57\u5e55\u5206\u5272","\ud1b5\uacc4 \uc790\ub9c9 \ubd84\ud560","\u0130statistiksel b\xf6l\xfcmleme"),subtitle_playground_rule_mode:ro("\u89c4\u5219\u65ad\u53e5","Rule-based segmentation","\u898f\u5247\u65b7\u53e5","\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u5b57\u5e55\u5206\u5272","\uaddc\uce59 \uae30\ubc18 \uc790\ub9c9 \ubd84\ud560","Kural tabanl\u0131 b\xf6l\xfcmleme"),subtitle_playground_max_duration:ro("\u6700\u5927\u65f6\u957f","Maximum duration","\u6700\u9577\u6642\u9577","\u6700\u5927\u6642\u9593","\ucd5c\ub300 \uae38\uc774","Azami s\xfcre"),subtitle_playground_max_words:ro("\u6700\u5927\u8bcd\u6570","Maximum words","\u6700\u591a\u8a5e\u6578","\u6700\u5927\u5358\u8a9e\u6570","\ucd5c\ub300 \ub2e8\uc5b4 \uc218","Azami kelime"),subtitle_playground_min_boundary_score:ro("\u6700\u5c0f\u8fb9\u754c\u8bc4\u5206","Minimum boundary score","\u6700\u5c0f\u908a\u754c\u5206\u6578","\u6700\u5c0f\u5883\u754c\u30b9\u30b3\u30a2","\ucd5c\uc18c \uacbd\uacc4 \uc810\uc218","Asgari s\u0131n\u0131r puan\u0131"),subtitle_playground_min_sentence_words:ro("\u6700\u5c0f\u53e5\u5b50\u8bcd\u6570","Minimum sentence words","\u6700\u5c11\u53e5\u5b50\u8a5e\u6578","\u6587\u306e\u6700\u5c0f\u5358\u8a9e\u6570","\ubb38\uc7a5 \ucd5c\uc18c \ub2e8\uc5b4 \uc218","Asgari c\xfcmle kelimesi"),subtitle_playground_source_language:ro("\u6e90\u8bed\u8a00","Source language","\u4f86\u6e90\u8a9e\u8a00","\u5143\u8a00\u8a9e","\uc6d0\ubcf8 \uc5b8\uc5b4","Kaynak dil"),subtitle_playground_source_language_label:ro("\u5b57\u5e55\u6e90\u8bed\u8a00","Subtitle source language","\u5b57\u5e55\u4f86\u6e90\u8a9e\u8a00","\u5b57\u5e55\u306e\u5143\u8a00\u8a9e","\uc790\ub9c9 \uc6d0\ubcf8 \uc5b8\uc5b4","Altyaz\u0131 kaynak dili"),subtitle_playground_language_required:ro("\u89c4\u5219\u548c\u7edf\u8ba1\u65ad\u53e5\u4e0d\u652f\u6301 AutoDetect\uff0c\u8bf7\u9009\u62e9\u5177\u4f53\u7684\u5b57\u5e55\u6e90\u8bed\u8a00\u3002","Rule-based and statistical segmentation do not support AutoDetect. Select a specific subtitle source language.","\u898f\u5247\u548c\u7d71\u8a08\u65b7\u53e5\u4e0d\u652f\u63f4 AutoDetect\uff0c\u8acb\u9078\u64c7\u5177\u9ad4\u7684\u5b57\u5e55\u4f86\u6e90\u8a9e\u8a00\u3002","\u30eb\u30fc\u30eb\u304a\u3088\u3073\u7d71\u8a08\u7684\u5b57\u5e55\u5206\u5272\u3067\u306f AutoDetect \u3092\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\u5b57\u5e55\u306e\u5143\u8a00\u8a9e\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002","\uaddc\uce59 \ubc0f \ud1b5\uacc4 \uc790\ub9c9 \ubd84\ud560\uc740 AutoDetect\ub97c \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc790\ub9c9 \uc6d0\ubcf8 \uc5b8\uc5b4\ub97c \uc120\ud0dd\ud558\uc138\uc694.","Kural tabanl\u0131 ve istatistiksel b\xf6l\xfcmleme AutoDetect'i desteklemez. Belirli bir altyaz\u0131 kaynak dili se\xe7in."),subtitle_playground_long_sentence_threshold:ro("\u957f\u53e5\u9608\u503c","Long-sentence threshold","\u9577\u53e5\u9580\u6abb","\u9577\u6587\u3057\u304d\u3044\u5024","\uae34 \ubb38\uc7a5 \uc784\uacc4\uac12","Uzun c\xfcmle e\u015fi\u011fi"),subtitle_playground_chunk_risk:ro("\u5f53\u524d AI Chunk \u957f\u5ea6\u9ad8\u4e8e\u63a8\u8350\u9ed8\u8ba4\u503c 1000\uff0c\u957f\u8f93\u5165\u53ef\u80fd\u589e\u52a0\u6f0f\u53e5\u6216\u8fb9\u754c\u9000\u5316\u98ce\u9669\u3002","The current AI chunk length exceeds the recommended default of 1000. Long input may increase the risk of missing text or degraded boundaries.","\u76ee\u524d AI Chunk \u9577\u5ea6\u9ad8\u65bc\u5efa\u8b70\u9810\u8a2d\u503c 1000\uff0c\u9577\u8f38\u5165\u53ef\u80fd\u589e\u52a0\u6f0f\u53e5\u6216\u908a\u754c\u9000\u5316\u98a8\u96aa\u3002","\u73fe\u5728\u306e AI \u30c1\u30e3\u30f3\u30af\u9577\u306f\u63a8\u5968\u65e2\u5b9a\u5024 1000 \u3092\u8d85\u3048\u3066\u3044\u307e\u3059\u3002\u9577\u3044\u5165\u529b\u3067\u306f\u6587\u306e\u6b20\u843d\u3084\u5883\u754c\u7cbe\u5ea6\u4f4e\u4e0b\u306e\u30ea\u30b9\u30af\u304c\u9ad8\u307e\u308a\u307e\u3059\u3002","\ud604\uc7ac AI \uccad\ud06c \uae38\uc774\uac00 \uad8c\uc7a5 \uae30\ubcf8\uac12 1000\ubcf4\ub2e4 \ud07d\ub2c8\ub2e4. \uae34 \uc785\ub825\uc740 \ubb38\uc7a5 \ub204\ub77d\uc774\ub098 \uacbd\uacc4 \ud488\uc9c8 \uc800\ud558 \uc704\ud5d8\uc744 \ub192\uc77c \uc218 \uc788\uc2b5\ub2c8\ub2e4.","Ge\xe7erli AI par\xe7a uzunlu\u011fu \xf6nerilen varsay\u0131lan 1000 de\u011ferini a\u015f\u0131yor. Uzun girdiler eksik metin veya s\u0131n\u0131r kalitesi d\xfc\u015f\xfc\u015f\xfc riskini art\u0131rabilir."),subtitle_playground_builtin_sample:ro("\u5185\u7f6e\u5b57\u5e55\u6837\u672c","Built-in subtitle sample","\u5167\u5efa\u5b57\u5e55\u6a23\u672c","\u5185\u8535\u5b57\u5e55\u30b5\u30f3\u30d7\u30eb","\ub0b4\uc7a5 \uc790\ub9c9 \uc0d8\ud50c","Yerle\u015fik altyaz\u0131 \xf6rne\u011fi"),subtitle_playground_select_sample:ro("\u8bf7\u9009\u62e9\u8fdc\u7a0b\u6837\u672c","Select a remote sample","\u8acb\u9078\u64c7\u9060\u7aef\u6a23\u672c","\u30ea\u30e2\u30fc\u30c8\u30b5\u30f3\u30d7\u30eb\u3092\u9078\u629e","\uc6d0\uaca9 \uc0d8\ud50c\uc744 \uc120\ud0dd\ud558\uc138\uc694","Uzak bir \xf6rnek se\xe7in"),subtitle_playground_upload_json:ro("\u4e0a\u4f20 JSON","Upload JSON","\u4e0a\u50b3 JSON","JSON \u3092\u30a2\u30c3\u30d7\u30ed\u30fc\u30c9","JSON \uc5c5\ub85c\ub4dc","JSON y\xfckle"),subtitle_playground_run:ro("\u8fd0\u884c\u6d4b\u8bd5","Run test","\u57f7\u884c\u6e2c\u8a66","\u30c6\u30b9\u30c8\u3092\u5b9f\u884c","\ud14c\uc2a4\ud2b8 \uc2e4\ud589","Testi \xe7al\u0131\u015ft\u0131r"),subtitle_playground_progress:ro("\u6b63\u5728\u5904\u7406 Chunk {completed}/{total}","Processing chunk {completed}/{total}","\u6b63\u5728\u8655\u7406 Chunk {completed}/{total}","\u30c1\u30e3\u30f3\u30af {completed}/{total} \u3092\u51e6\u7406\u4e2d","\uccad\ud06c \ucc98\ub9ac \uc911 {completed}/{total}","Par\xe7a i\u015fleniyor {completed}/{total}"),subtitle_playground_source_json:ro("\u539f\u59cb\u5b57\u5e55 JSON","Original subtitle JSON","\u539f\u59cb\u5b57\u5e55 JSON","\u5143\u306e\u5b57\u5e55 JSON","\uc6d0\ubcf8 \uc790\ub9c9 JSON","Orijinal altyaz\u0131 JSON"),subtitle_playground_result:ro("\u65ad\u53e5\u7ed3\u679c","Segmentation result","\u65b7\u53e5\u7d50\u679c","\u5b57\u5e55\u5206\u5272\u7d50\u679c","\uc790\ub9c9 \ubd84\ud560 \uacb0\uacfc","B\xf6l\xfcmleme sonucu"),subtitle_playground_download:ro("\u4e0b\u8f7d","Download","\u4e0b\u8f09","\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9","\ub2e4\uc6b4\ub85c\ub4dc","\u0130ndir"),subtitle_playground_stats_title:ro("\u65ad\u53e5\u7edf\u8ba1\u4fe1\u606f","Segmentation statistics","\u65b7\u53e5\u7d71\u8a08\u8cc7\u8a0a","\u5b57\u5e55\u5206\u5272\u306e\u7d71\u8a08","\uc790\ub9c9 \ubd84\ud560 \ud1b5\uacc4","B\xf6l\xfcmleme istatistikleri"),subtitle_playground_metric_processing:ro("\u5904\u7406\u8017\u65f6","Processing time","\u8655\u7406\u8017\u6642","\u51e6\u7406\u6642\u9593","\ucc98\ub9ac \uc2dc\uac04","\u0130\u015fleme s\xfcresi"),subtitle_playground_metric_raw_events:ro("\u539f\u59cb\u4e8b\u4ef6","Raw events","\u539f\u59cb\u4e8b\u4ef6","\u5143\u30a4\u30d9\u30f3\u30c8","\uc6d0\ubcf8 \uc774\ubca4\ud2b8","Ham olaylar"),subtitle_playground_metric_canonical_events:ro("\u89c4\u8303\u5316\u4e8b\u4ef6","Canonical events","\u6b63\u898f\u5316\u4e8b\u4ef6","\u6b63\u898f\u5316\u30a4\u30d9\u30f3\u30c8","\uc815\uaddc\ud654 \uc774\ubca4\ud2b8","Standart olaylar"),subtitle_playground_metric_flat_events:ro("Flat Events","Flat events","Flat Events","\u30d5\u30e9\u30c3\u30c8\u30a4\u30d9\u30f3\u30c8","\ud50c\ub7ab \uc774\ubca4\ud2b8","D\xfcz olaylar"),subtitle_playground_metric_filtered_non_speech:ro("\u5df2\u8fc7\u6ee4\u975e\u8bed\u97f3\u7247\u6bb5","Filtered non-speech segments","\u5df2\u904e\u6ffe\u975e\u8a9e\u97f3\u7247\u6bb5","\u9664\u5916\u3057\u305f\u975e\u97f3\u58f0\u533a\u9593","\ud544\ud130\ub9c1\ub41c \ube44\uc74c\uc131 \uad6c\uac04","Filtrelenen konu\u015fma d\u0131\u015f\u0131 b\xf6l\xfcmler"),subtitle_playground_metric_cues:ro("\u5b57\u5e55\u6761\u76ee","Subtitle cues","\u5b57\u5e55\u9805\u76ee","\u5b57\u5e55\u30ad\u30e5\u30fc","\uc790\ub9c9 \ud050","Altyaz\u0131 \xf6\u011feleri"),subtitle_playground_metric_source_duration:ro("\u6e90\u65f6\u95f4\u8de8\u5ea6","Source duration","\u4f86\u6e90\u6642\u9593\u8de8\u5ea6","\u5143\u306e\u6642\u9593\u7bc4\u56f2","\uc6d0\ubcf8 \uc2dc\uac04 \ubc94\uc704","Kaynak s\xfcresi"),subtitle_playground_metric_covered_duration:ro("\u8986\u76d6\u65f6\u957f","Covered duration","\u6db5\u84cb\u6642\u9577","\u30ab\u30d0\u30fc\u6642\u9593","\ud3ec\ud568 \uc2dc\uac04","Kapsanan s\xfcre"),subtitle_playground_metric_text_coverage:ro("\u6587\u672c\u8986\u76d6\u7387","Text coverage","\u6587\u5b57\u6db5\u84cb\u7387","\u30c6\u30ad\u30b9\u30c8\u7db2\u7f85\u7387","\ud14d\uc2a4\ud2b8 \ud3ec\ud568\ub960","Metin kapsam\u0131"),subtitle_playground_metric_empty_cues:ro("\u7a7a\u5b57\u5e55","Empty cues","\u7a7a\u5b57\u5e55","\u7a7a\u306e\u5b57\u5e55","\ube48 \uc790\ub9c9","Bo\u015f altyaz\u0131lar"),subtitle_playground_metric_invalid_cues:ro("\u65e0\u6548\u5b57\u5e55","Invalid cues","\u7121\u6548\u5b57\u5e55","\u7121\u52b9\u306a\u5b57\u5e55","\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc790\ub9c9","Ge\xe7ersiz altyaz\u0131lar"),subtitle_playground_metric_overlaps:ro("\u65f6\u95f4\u91cd\u53e0","Time overlaps","\u6642\u9593\u91cd\u758a","\u6642\u9593\u306e\u91cd\u8907","\uc2dc\uac04 \uacb9\uce68","Zaman \xe7ak\u0131\u015fmalar\u0131"),subtitle_playground_metric_non_monotonic:ro("\u65f6\u95f4\u5012\u9000","Non-monotonic time","\u6642\u9593\u5012\u9000","\u6642\u9593\u306e\u9006\u884c","\uc2dc\uac04 \uc5ed\ud589","Geri giden zaman"),subtitle_playground_metric_missing_text:ro("\u6587\u672c\u9057\u6f0f","Missing text","\u6587\u5b57\u907a\u6f0f","\u6b20\u843d\u30c6\u30ad\u30b9\u30c8","\ub204\ub77d \ud14d\uc2a4\ud2b8","Eksik metin"),subtitle_playground_metric_duplicated_text:ro("\u6587\u672c\u91cd\u590d","Duplicated text","\u6587\u5b57\u91cd\u8907","\u91cd\u8907\u30c6\u30ad\u30b9\u30c8","\uc911\ubcf5 \ud14d\uc2a4\ud2b8","Yinelenen metin"),subtitle_playground_metric_avg_chars:ro("\u5e73\u5747\u5b57\u7b26","Average characters","\u5e73\u5747\u5b57\u5143","\u5e73\u5747\u6587\u5b57\u6570","\ud3c9\uade0 \ubb38\uc790 \uc218","Ortalama karakter"),subtitle_playground_metric_p95_chars:ro("P95 \u5b57\u7b26","P95 characters","P95 \u5b57\u5143","P95 \u6587\u5b57\u6570","P95 \ubb38\uc790 \uc218","P95 karakter"),subtitle_playground_metric_max_chars:ro("\u6700\u5927\u5b57\u7b26","Maximum characters","\u6700\u591a\u5b57\u5143","\u6700\u5927\u6587\u5b57\u6570","\ucd5c\ub300 \ubb38\uc790 \uc218","Azami karakter"),subtitle_playground_metric_avg_words:ro("\u5e73\u5747\u8bcd\u6570","Average words","\u5e73\u5747\u8a5e\u6578","\u5e73\u5747\u5358\u8a9e\u6570","\ud3c9\uade0 \ub2e8\uc5b4 \uc218","Ortalama kelime"),subtitle_playground_metric_p95_words:ro("P95 \u8bcd\u6570","P95 words","P95 \u8a5e\u6578","P95 \u5358\u8a9e\u6570","P95 \ub2e8\uc5b4 \uc218","P95 kelime"),subtitle_playground_metric_max_words:ro("\u6700\u5927\u8bcd\u6570","Maximum words","\u6700\u591a\u8a5e\u6578","\u6700\u5927\u5358\u8a9e\u6570","\ucd5c\ub300 \ub2e8\uc5b4 \uc218","Azami kelime"),subtitle_playground_metric_avg_duration:ro("\u5e73\u5747\u65f6\u957f","Average duration","\u5e73\u5747\u6642\u9577","\u5e73\u5747\u6642\u9593","\ud3c9\uade0 \uae38\uc774","Ortalama s\xfcre"),subtitle_playground_metric_p95_duration:ro("P95 \u65f6\u957f","P95 duration","P95 \u6642\u9577","P95 \u6642\u9593","P95 \uae38\uc774","P95 s\xfcre"),subtitle_playground_metric_max_duration:ro("\u6700\u5927\u65f6\u957f","Maximum duration","\u6700\u9577\u6642\u9577","\u6700\u5927\u6642\u9593","\ucd5c\ub300 \uae38\uc774","Azami s\xfcre"),subtitle_playground_structure_error:ro("\u7ed3\u6784\u9519\u8bef\uff1a{errors}","Structure errors: {errors}","\u7d50\u69cb\u932f\u8aa4\uff1a{errors}","\u69cb\u9020\u30a8\u30e9\u30fc\uff1a{errors}","\uad6c\uc870 \uc624\ub958: {errors}","Yap\u0131 hatalar\u0131: {errors}"),subtitle_playground_readability_warning:ro("\u53ef\u8bfb\u6027\u8b66\u544a\uff1a\u8d85\u957f\u6587\u672c {longText}\uff0c\u8d85\u8fc7 10 \u79d2 {longDuration}\uff0c\u77ed\u788e\u7247 {fragments}\uff0c\u6cc4\u6f0f\u7684\u975e\u8bed\u97f3\u5b57\u5e55 {nonSpeech}","Readability warnings: long text {longText}, over 10 seconds {longDuration}, short fragments {fragments}, leaked non-speech cues {nonSpeech}","\u53ef\u8b80\u6027\u8b66\u544a\uff1a\u904e\u9577\u6587\u5b57 {longText}\uff0c\u8d85\u904e 10 \u79d2 {longDuration}\uff0c\u77ed\u7247\u6bb5 {fragments}\uff0c\u6d29\u6f0f\u7684\u975e\u8a9e\u97f3\u5b57\u5e55 {nonSpeech}","\u53ef\u8aad\u6027\u306e\u8b66\u544a\uff1a\u9577\u3059\u304e\u308b\u30c6\u30ad\u30b9\u30c8 {longText}\u300110 \u79d2\u8d85 {longDuration}\u3001\u77ed\u3044\u65ad\u7247 {fragments}\u3001\u6df7\u5165\u3057\u305f\u975e\u97f3\u58f0\u5b57\u5e55 {nonSpeech}","\uac00\ub3c5\uc131 \uacbd\uace0: \ub108\ubb34 \uae34 \ud14d\uc2a4\ud2b8 {longText}, 10\ucd08 \ucd08\uacfc {longDuration}, \uc9e7\uc740 \uc870\uac01 {fragments}, \uc720\ucd9c\ub41c \ube44\uc74c\uc131 \uc790\ub9c9 {nonSpeech}","Okunabilirlik uyar\u0131lar\u0131: uzun metin {longText}, 10 saniyeyi a\u015fan {longDuration}, k\u0131sa par\xe7alar {fragments}, s\u0131zan konu\u015fma d\u0131\u015f\u0131 altyaz\u0131lar {nonSpeech}"),subtitle_playground_ai_stats:ro("AI\uff1a\u534f\u8bae {protocol}\uff0cChunk {chunks}\uff0c\u8bf7\u6c42 {requests}\uff0c\u91cd\u8bd5 {retries}\uff0c\u964d\u7ea7\u5b57\u5e55 {fallbacks}\uff0c\u65e0\u6548\u54cd\u5e94 {invalid}","AI: protocol {protocol}, chunks {chunks}, requests {requests}, retries {retries}, fallback cues {fallbacks}, invalid responses {invalid}","AI\uff1a\u5354\u5b9a {protocol}\uff0cChunk {chunks}\uff0c\u8acb\u6c42 {requests}\uff0c\u91cd\u8a66 {retries}\uff0c\u964d\u7d1a\u5b57\u5e55 {fallbacks}\uff0c\u7121\u6548\u56de\u61c9 {invalid}","AI\uff1a\u30d7\u30ed\u30c8\u30b3\u30eb {protocol}\u3001\u30c1\u30e3\u30f3\u30af {chunks}\u3001\u30ea\u30af\u30a8\u30b9\u30c8 {requests}\u3001\u518d\u8a66\u884c {retries}\u3001\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u5b57\u5e55 {fallbacks}\u3001\u7121\u52b9\u306a\u5fdc\u7b54 {invalid}","AI: \ud504\ub85c\ud1a0\ucf5c {protocol}, \uccad\ud06c {chunks}, \uc694\uccad {requests}, \uc7ac\uc2dc\ub3c4 {retries}, \ub300\uccb4 \uc790\ub9c9 {fallbacks}, \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc751\ub2f5 {invalid}","AI: protokol {protocol}, par\xe7a {chunks}, istek {requests}, yeniden deneme {retries}, yedek altyaz\u0131 {fallbacks}, ge\xe7ersiz yan\u0131t {invalid}")}),{},{app_name:{zh:"\u7b80\u7ea6\u7ffb\u8bd1",en:"KISS Translator",zh_TW:"\u7c21\u7d04\u7ffb\u8b6f",ja:"KISS Translator",ko:"KISS Translator",tr:"KISS Translator"},translate:{zh:"\u7ffb\u8bd1",en:"Translate",zh_TW:"\u7ffb\u8b6f",ja:"\u7ffb\u8a33",ko:"\ubc88\uc5ed",tr:"\xc7eviri"},custom_api_help:{zh:Qr,en:Zr,zh_TW:no,ja:Zr,ko:Zr,tr:Zr},request_hook_helper:{zh:"1\u3001\u7b2c\u4e00\u4e2a\u53c2\u6570\u5305\u542b\u5982\u4e0b\u5b57\u6bb5\uff1a'texts', 'from', 'to', 'url', 'key', 'model', 'systemPrompt', ...\n2\u3001\u8fd4\u56de\u503c\u5fc5\u987b\u662f\u5305\u542b\u4ee5\u4e0b\u5b57\u6bb5\u7684\u5bf9\u8c61\uff1a 'url', 'body', 'headers', 'method'\n3\u3001\u5982\u8fd4\u56de\u7a7a\u503c\uff0c\u5219hook\u51fd\u6570\u4e0d\u4f1a\u4ea7\u751f\u4efb\u4f55\u6548\u679c\u3002\n\n// \u793a\u4f8b\nasync (args, { url, body, headers, userMsg, method } = {}) => {\n return { url, body, headers, userMsg, method };\n}",en:eo,zh_TW:"1\u3001\u7b2c\u4e00\u500b\u53c3\u6578\u5305\u542b\u5982\u4e0b\u6b04\u4f4d\uff1a'texts', 'from', 'to', 'url', 'key', 'model', 'systemPrompt', ...\n2\u3001\u56de\u50b3\u503c\u5fc5\u9808\u662f\u5305\u542b\u4ee5\u4e0b\u6b04\u4f4d\u7684\u7269\u4ef6\uff1a 'url', 'body', 'headers', 'method'\n3\u3001\u82e5\u56de\u50b3\u7a7a\u503c\uff0c\u5247 hook \u51fd\u5f0f\u4e0d\u6703\u7522\u751f\u4efb\u4f55\u6548\u679c\u3002\n\n// \u7bc4\u4f8b\nasync (args, { url, body, headers, userMsg, method } = {}) => {\n return { url, body, headers, userMsg, method };\n}",ja:eo,ko:eo,tr:eo},response_hook_helper:{zh:"1\u3001\u7b2c\u4e00\u4e2a\u53c2\u6570\u5305\u542b\u5982\u4e0b\u5b57\u6bb5\uff1a'res', ...\n2\u3001\u8fd4\u56de\u503c\u5fc5\u987b\u662f\u5305\u542b\u4ee5\u4e0b\u5b57\u6bb5\u7684\u5bf9\u8c61\uff1a 'translations'\n \uff08'translations' \u5e94\u4e3a\u4e00\u4e2a\u4e8c\u7ef4\u6570\u7ec4\uff1a[[\u8bd1\u6587, \u539f\u6587\u8bed\u8a00]]\uff09\n3\u3001\u5982\u8fd4\u56de\u7a7a\u503c\uff0c\u5219hook\u51fd\u6570\u4e0d\u4f1a\u4ea7\u751f\u4efb\u4f55\u6548\u679c\u3002\n\n// \u793a\u4f8b\nasync ({ res, ...args }) => {\n const translations = [[\"\u4f60\u597d\", \"en\"]];\n const modelMsg = {}; // \u7528\u4e8eAI\u4e0a\u4e0b\u6587\n return { translations, modelMsg };\n}",en:to,zh_TW:"1\u3001\u7b2c\u4e00\u500b\u53c3\u6578\u5305\u542b\u5982\u4e0b\u6b04\u4f4d\uff1a'res', ...\n2\u3001\u56de\u50b3\u503c\u5fc5\u9808\u662f\u5305\u542b\u4ee5\u4e0b\u6b04\u4f4d\u7684\u7269\u4ef6\uff1a 'translations'\n \uff08'translations' \u61c9\u70ba\u4e00\u500b\u4e8c\u7dad\u9663\u5217\uff1a[[\u8b6f\u6587, \u539f\u6587\u8a9e\u8a00]]\uff09\n3\u3001\u82e5\u56de\u50b3\u7a7a\u503c\uff0c\u5247 hook \u51fd\u5f0f\u4e0d\u6703\u7522\u751f\u4efb\u4f55\u6548\u679c\u3002\n\n// \u7bc4\u4f8b\nasync ({ res, ...args }) => {\n const translations = [[\"\u4f60\u597d\", \"en\"]];\n const modelMsg = {}; // \u7528\u65bc AI \u4e0a\u4e0b\u6587\n return { translations, modelMsg };\n}",ja:to,ko:to,tr:to},translate_alt:{zh:"\u7ffb\u8bd1",en:"Translate",zh_TW:"\u7ffb\u8b6f",ja:"\u7ffb\u8a33",ko:"\ubc88\uc5ed",tr:"\xc7eviri"},basic_setting:{zh:"\u57fa\u672c\u8bbe\u7f6e",en:"Basic Setting",zh_TW:"\u57fa\u672c\u8a2d\u5b9a",ja:"\u57fa\u672c\u8a2d\u5b9a",ko:"\uae30\ubcf8 \uc124\uc815",tr:"Basit Ayar"},rules_setting:{zh:"\u89c4\u5219\u8bbe\u7f6e",en:"Rules Setting",zh_TW:"\u898f\u5247\u8a2d\u5b9a",ja:"\u30eb\u30fc\u30eb\u8a2d\u5b9a",ko:"\uaddc\uce59 \uc124\uc815",tr:"Kural Ayar\u0131"},apis_setting:{zh:"\u63a5\u53e3\u8bbe\u7f6e",en:"Apis Setting",zh_TW:"API\u8a2d\u5b9a",ja:"API\u8a2d\u5b9a",ko:"API \uc124\uc815",tr:"API Ayar\u0131"},prompt_management:{zh:"\u63d0\u793a\u8bcd\u7ba1\u7406",en:"Prompt Management",zh_TW:"\u63d0\u793a\u8a5e\u7ba1\u7406",ja:"\u30d7\u30ed\u30f3\u30d7\u30c8\u7ba1\u7406",ko:"\ud504\ub86c\ud504\ud2b8 \uad00\ub9ac",tr:"\u0130stem Y\xf6netimi"},sync_setting:{zh:"\u540c\u6b65\u8bbe\u7f6e",en:"Sync Setting",zh_TW:"\u540c\u6b65\u8a2d\u5b9a",ja:"\u540c\u671f\u8a2d\u5b9a",ko:"\ub3d9\uae30\ud654 \uc124\uc815",tr:"Senkronizasyon Ayar\u0131"},patch_setting:{zh:"\u8865\u4e01\u8bbe\u7f6e",en:"Patch Setting",zh_TW:"\u4fee\u88dc\u8a2d\u5b9a",ja:"\u30d1\u30c3\u30c1\u8a2d\u5b9a",ko:"\ud328\uce58 \uc124\uc815",tr:"Yama Ayar\u0131"},patch_setting_help:{zh:"\u9488\u5bf9\u4e00\u4e9b\u7279\u6b8a\u7f51\u7ad9\u7684\u4fee\u6b63\u811a\u672c\uff0c\u4ee5\u4fbf\u7ffb\u8bd1\u8f6f\u4ef6\u5f97\u5230\u66f4\u597d\u7684\u5c55\u793a\u6548\u679c\u3002",en:"Corrected scripts for some special websites so that the translation software can get better display results.",zh_TW:"\u91dd\u5c0d\u67d0\u4e9b\u7279\u6b8a\u7db2\u7ad9\u7684\u4fee\u6b63\u8173\u672c\uff0c\u8b93\u7ffb\u8b6f\u8edf\u9ad4\u6709\u66f4\u597d\u7684\u986f\u793a\u6548\u679c\u3002",ja:"\u4e00\u90e8\u306e\u7279\u6b8a\u306a\u30a6\u30a7\u30d6\u30b5\u30a4\u30c8\u7528\u306e\u4fee\u6b63\u30b9\u30af\u30ea\u30d7\u30c8\u3067\u3001\u7ffb\u8a33\u30bd\u30d5\u30c8\u30a6\u30a7\u30a2\u306e\u8868\u793a\u52b9\u679c\u3092\u5411\u4e0a\u3055\u305b\u307e\u3059\u3002",ko:"\uc77c\ubd80 \ud2b9\uc218 \uc6f9\uc0ac\uc774\ud2b8\ub97c \uc704\ud55c \uc218\uc815 \uc2a4\ud06c\ub9bd\ud2b8\ub85c, \ubc88\uc5ed \uc18c\ud504\ud2b8\uc6e8\uc5b4\uc758 \ud45c\uc2dc \ud6a8\uacfc\ub97c \uac1c\uc120\ud569\ub2c8\ub2e4.",tr:"\xc7eviri yaz\u0131l\u0131m\u0131n\u0131n daha iyi g\xf6r\xfcnt\xfc sonu\xe7lar\u0131 alabilmesi i\xe7in baz\u0131 \xf6zel web sitelerinin komut dosyalar\u0131 d\xfczeltildi."},inject_webfix:{zh:"\u6ce8\u5165\u4fee\u590d\u8865\u4e01",en:"Inject Webfix",zh_TW:"\u6ce8\u5165\u4fee\u6b63\u88dc\u4e01",ja:"Webfix\u3092\u6ce8\u5165",ko:"\uc6f9 \uc218\uc815 \ud328\uce58 \uc8fc\uc785",tr:"Webfix'i Enjekte Edin"},about:{zh:"\u5173\u4e8e",en:"About",zh_TW:"\u95dc\u65bc",ja:"\u6982\u8981",ko:"\uc815\ubcf4",tr:"Hakk\u0131nda"},about_md:{zh:"README.md",en:"README.en.md",zh_TW:"README.md",ja:"README.ja.md",ko:"README.ko.md",tr:"Readme.En.Md"},about_md_local:{zh:"\u8bf7 [\u70b9\u51fb\u8fd9\u91cc](".concat("https://github.com/fishjar/kiss-translator",") \u67e5\u770b\u8be6\u60c5\u3002"),en:"Please [click here](".concat("https://github.com/fishjar/kiss-translator",") for details."),zh_TW:"\u8acb [\u9ede\u9019\u88e1](".concat("https://github.com/fishjar/kiss-translator",") \u6aa2\u8996\u8a73\u7d30\u5167\u5bb9\u3002"),ja:"\u8a73\u7d30\u306f [\u3053\u3061\u3089](".concat("https://github.com/fishjar/kiss-translator",") \u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u304f\u3060\u3055\u3044\u3002"),ko:"\uc790\uc138\ud55c \ub0b4\uc6a9\uc740 [\uc5ec\uae30](".concat("https://github.com/fishjar/kiss-translator",")\ub97c \ud074\ub9ad\ud558\uc138\uc694."),tr:"L\xfctfen Ayr\u0131nt\u0131lar \u0130\xe7in [Buraya T\u0131kla](".concat("https://github.com/fishjar/kiss-translator",")")},ui_lang:{zh:"\u754c\u9762\u8bed\u8a00",en:"Interface Language",zh_TW:"\u4ecb\u9762\u8a9e\u8a00",ja:"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u8a00\u8a9e",ko:"\uc778\ud130\ud398\uc774\uc2a4 \uc5b8\uc5b4",tr:"Aray\xfcz Dili"},version_warning:{zh:"\u5f53\u524d\u7248\u672c (v{0}) \u4e0d\u662f\u6700\u65b0\u7248\u672c (v{1})\uff0c\u53ef\u4ee5\u7b49\u5f85\u81ea\u52a8\u5347\u7ea7\u6216\u624b\u52a8",en:"Current version (v{0}) is not the latest version (v{1}). You can wait for auto-update or manually ",zh_TW:"\u7576\u524d\u7248\u672c (v{0}) \u4e0d\u662f\u6700\u65b0\u7248\u672c (v{1})\uff0c\u53ef\u4ee5\u7b49\u5f85\u81ea\u52d5\u5347\u7d1a\u6216\u624b\u52d5",ja:"\u73fe\u5728\u306e\u30d0\u30fc\u30b8\u30e7\u30f3 (v{0}) \u306f\u6700\u65b0\u30d0\u30fc\u30b8\u30e7\u30f3 (v{1}) \u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u81ea\u52d5\u66f4\u65b0\u3092\u5f85\u3064\u304b\u3001\u624b\u52d5\u3067",ko:"\ud604\uc7ac \ubc84\uc804(v{0})\uc740 \ucd5c\uc2e0 \ubc84\uc804(v{1})\uc774 \uc544\ub2d9\ub2c8\ub2e4. \uc790\ub3d9 \uc5c5\ub370\uc774\ud2b8\ub97c \uae30\ub2e4\ub9ac\uac70\ub098 \uc218\ub3d9\uc73c\ub85c ",tr:"Mevcut s\xfcr\xfcm (v{0}), en son s\xfcr\xfcm (v{1}) de\u011fildir. Otomatik g\xfcncellemeyi bekleyebilir veya manuel olarak g\xfcncelleyebilirsiniz "},download_update:{zh:"\u4e0b\u8f7d\u66f4\u65b0",en:"download update",zh_TW:"\u4e0b\u8f09\u66f4\u65b0",ja:"\u30a2\u30c3\u30d7\u30c7\u30fc\u30c8\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9",ko:"\uc5c5\ub370\uc774\ud2b8 \ub2e4\uc6b4\ub85c\ub4dc",tr:"G\xfcncellemeyi Indir"},fetch_limit:{zh:"\u6700\u5927\u5e76\u53d1\u8bf7\u6c42\u6570\u91cf (1-100)",en:"Maximum Number Of Concurrent Requests (1-100)",zh_TW:"\u6700\u5927\u540c\u6642\u8acb\u6c42\u6578\u91cf (1-100)",ja:"\u6700\u5927\u540c\u6642\u30ea\u30af\u30a8\u30b9\u30c8\u6570 (1-100)",ko:"\ucd5c\ub300 \ub3d9\uc2dc \uc694\uccad \uc218 (1-100)",tr:"Maksimum E\u015fzamanl\u0131 \u0130stek Say\u0131s\u0131 (1-100)"},if_think:{zh:"\u542f\u7528\u6216\u7981\u7528\u6a21\u578b\u7684\u6df1\u5ea6\u601d\u8003\u80fd\u529b",en:"Enable or disable the model\u2019s thinking behavior ",zh_TW:"\u555f\u7528\u6216\u505c\u7528\u6a21\u578b\u7684\u6df1\u5ea6\u601d\u8003\u80fd\u529b",ja:"\u30e2\u30c7\u30eb\u306e\u601d\u8003\u884c\u52d5\u3092\u6709\u52b9\u307e\u305f\u306f\u7121\u52b9\u306b\u3059\u308b",ko:"\ubaa8\ub378\uc758 \uc0ac\uace0 \ud589\ub3d9 \ud65c\uc131\ud654 \ub610\ub294 \ube44\ud65c\uc131\ud654",tr:"Modelin D\xfc\u015f\xfcnme Davran\u0131\u015f\u0131n\u0131 Etkinle\u015ftirme Veya Devre D\u0131\u015f\u0131 B\u0131rakma"},think:{zh:"\u542f\u7528\u6df1\u5ea6\u601d\u8003",en:"enable thinking",zh_TW:"\u555f\u7528\u6df1\u5ea6\u601d\u8003",ja:"\u601d\u8003\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc0ac\uace0 \ud65c\uc131\ud654",tr:"D\xfc\u015f\xfcnmeyi Etkinle\u015ftir"},nothink:{zh:"\u7981\u7528\u6df1\u5ea6\u601d\u8003",en:"disable thinking",zh_TW:"\u505c\u7528\u6df1\u5ea6\u601d\u8003",ja:"\u601d\u8003\u3092\u7121\u52b9\u306b\u3059\u308b",ko:"\uc0ac\uace0 \ube44\ud65c\uc131\ud654",tr:"D\xfc\u015f\xfcnmeyi Devre D\u0131\u015f\u0131 B\u0131rak"},think_ignore:{zh:"\u5ffd\u7565\u4ee5\u4e0b\u6a21\u578b\u7684\u8f93\u51fa,\u9017\u53f7(,)\u5206\u5272,\u5f53\u6a21\u578b\u652f\u6301\u601d\u8003\u4f46ollama\u4e0d\u652f\u6301\u65f6\u9700\u8981\u586b\u5199\u672c\u53c2\u6570",en:"Ignore the block for the following models, comma (,) separated",zh_TW:"\u5ffd\u7565\u4ee5\u4e0b\u6a21\u578b\u7684 \u8f38\u51fa\uff0c\u4ee5\u9017\u865f (,) \u5206\u9694\uff1b\u7576\u6a21\u578b\u652f\u63f4\u601d\u8003\u4f46 ollama \u4e0d\u652f\u63f4\u6642\u9700\u8981\u586b\u5beb\u6b64\u53c3\u6578",ja:"\u4ee5\u4e0b\u306e\u30e2\u30c7\u30eb\u306e\u51fa\u529b\u3092\u7121\u8996\u3059\u308b (\u30b3\u30f3\u30de(,)\u533a\u5207\u308a)\u3002\u30e2\u30c7\u30eb\u304c\u601d\u8003\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u304c\u3001ollama\u304c\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u306a\u3044\u5834\u5408\u306b\u8a18\u5165\u304c\u5fc5\u8981\u3067\u3059",ko:"\ub2e4\uc74c \ubaa8\ub378\uc758 \ube14\ub85d \ubb34\uc2dc (\uc27c\ud45c(,)\ub85c \uad6c\ubd84), \ubaa8\ub378\uc774 \uc0ac\uace0\ub97c \uc9c0\uc6d0\ud558\uc9c0\ub9cc ollama\uac00 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\ub294 \uacbd\uc6b0 \uc774 \ub9e4\uac1c\ubcc0\uc218\ub97c \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4",tr:"A\u015fa\u011f\u0131daki modeller i\xe7in blo\u011funu dikkate almay\u0131n"},thinking_mode:{zh:"\u601d\u8003\u6a21\u5f0f",en:"Thinking Mode",zh_TW:"\u601d\u8003\u6a21\u5f0f",ja:"\u601d\u8003\u30e2\u30fc\u30c9",ko:"\uc0ac\uace0 \ubaa8\ub4dc",tr:"D\xfc\u015f\xfcnme Modu"},thinking_mode_default:{zh:"\u63a5\u53e3\u9ed8\u8ba4",en:"API Default",zh_TW:"\u4ecb\u9762\u9810\u8a2d",ja:"API\u30c7\u30d5\u30a9\u30eb\u30c8",ko:"API \uae30\ubcf8\uac12",tr:"API Varsay\u0131lan\u0131"},thinking_mode_enabled:{zh:"\u5f00\u542f\u601d\u8003",en:"Enable Thinking",zh_TW:"\u958b\u555f\u601d\u8003",ja:"\u601d\u8003\u3092\u6709\u52b9",ko:"\uc0ac\uace0 \ud65c\uc131\ud654",tr:"D\xfc\u015f\xfcnmeyi Etkinle\u015ftir"},thinking_mode_disabled:{zh:"\u5173\u95ed\u601d\u8003",en:"Disable Thinking",zh_TW:"\u95dc\u9589\u601d\u8003",ja:"\u601d\u8003\u3092\u7121\u52b9",ko:"\uc0ac\uace0 \ube44\ud65c\uc131\ud654",tr:"D\xfc\u015f\xfcnmeyi Devre D\u0131\u015f\u0131 B\u0131rak"},thinking_mode_helper:{zh:"\u76ee\u524d\u5404\u5bb6\u63a5\u53e3\u6df7\u4e71\uff0c\u5982\u679c\u51fa\u73b0\u5f02\u5e38\uff0c\u8bf7\u4f7f\u7528\u63a5\u53e3\u9ed8\u8ba4\u9009\u9879",en:'The thinking parameters vary across APIs. If you encounter errors, please use the "API Default" option.',zh_TW:"\u76ee\u524d\u5404\u5bb6\u4ecb\u9762\u6df7\u4e82\uff0c\u5982\u679c\u51fa\u73fe\u7570\u5e38\uff0c\u8acb\u4f7f\u7528\u4ecb\u9762\u9810\u8a2d\u9078\u9805",ja:"\u5404API\u306e\u601d\u8003\u30d1\u30e9\u30e1\u30fc\u30bf\u306f\u7d71\u4e00\u3055\u308c\u3066\u3044\u307e\u305b\u3093\u3002\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u305f\u5834\u5408\u306f\u300cAPI\u30c7\u30d5\u30a9\u30eb\u30c8\u300d\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:'API\ubcc4 \uc0ac\uace0 \ub9e4\uac1c\ubcc0\uc218\uac00 \ud1b5\uc77c\ub418\uc5b4 \uc788\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \uc624\ub958 \ubc1c\uc0dd \uc2dc "API \uae30\ubcf8\uac12"\uc744 \uc0ac\uc6a9\ud558\uc138\uc694.',tr:'API\'ler aras\u0131nda d\xfc\u015f\xfcnme parametreleri farkl\u0131l\u0131k g\xf6sterir. Hata ile kar\u015f\u0131la\u015f\u0131rsan\u0131z l\xfctfen "API Varsay\u0131lan\u0131" se\xe7ene\u011fini kullan\u0131n.'},thinking_effort:{zh:"\u601d\u8003\u5f3a\u5ea6",en:"Thinking Effort",zh_TW:"\u601d\u8003\u5f37\u5ea6",ja:"\u601d\u8003\u30ec\u30d9\u30eb",ko:"\uc0ac\uace0 \uc218\uc900",tr:"D\xfc\u015f\xfcnme \xc7abas\u0131"},thinking_effort_default:{zh:"\u63a5\u53e3\u9ed8\u8ba4",en:"API Default",zh_TW:"\u4ecb\u9762\u9810\u8a2d",ja:"API\u30c7\u30d5\u30a9\u30eb\u30c8",ko:"API \uae30\ubcf8\uac12",tr:"API Varsay\u0131lan\u0131"},fetch_interval:{zh:"\u6bcf\u6b21\u8bf7\u6c42\u95f4\u9694\u65f6\u95f4 (0-5000ms)",en:"Time Between Requests (0-5000ms)",zh_TW:"\u6bcf\u6b21\u8acb\u6c42\u9593\u9694\u6642\u9593 (0-5000ms)",ja:"\u30ea\u30af\u30a8\u30b9\u30c8\u9593\u9694 (0-5000ms)",ko:"\uc694\uccad \uac04 \uc2dc\uac04 (0-5000ms)",tr:"\u0130stekler Aras\u0131ndaki S\xfcre (0-5000Ms)"},translate_interval:{zh:"\u7ffb\u8bd1\u95f4\u9694\u65f6\u95f4 (1-2000ms)",en:"Translation Interval (1-2000ms)",zh_TW:"\u7ffb\u8b6f\u9593\u9694\u6642\u9593 (1-2000ms)",ja:"\u7ffb\u8a33\u9593\u9694 (1-2000ms)",ko:"\ubc88\uc5ed \uac04\uaca9 (1-2000ms)",tr:"\xc7eviri Aral\u0131\u011f\u0131 (1-2000Ms)"},http_timeout:{zh:"\u8bf7\u6c42\u8d85\u65f6\u65f6\u95f4 (1-600s)",en:"Request Timeout Time (1-600s)",zh_TW:"\u8acb\u6c42\u903e\u6642\u6642\u9593 (1-600s)",ja:"\u30ea\u30af\u30a8\u30b9\u30c8\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 (1-600s)",ko:"\uc694\uccad \uc2dc\uac04 \ucd08\uacfc (1-600s)",tr:"\u0130stek Zaman A\u015f\u0131m\u0131 S\xfcresi (1-600S)"},custom_header:{zh:"\u81ea\u5b9a\u4e49Header\u53c2\u6570",en:"Custom Header Params",zh_TW:"\u81ea\u8a02 Header \u53c3\u6578",ja:"\u30ab\u30b9\u30bf\u30e0\u30d8\u30c3\u30c0\u30fc",ko:"\uc0ac\uc6a9\uc790 \uc9c0\uc815 \ud5e4\ub354",tr:"\xd6zel Ba\u015fl\u0131k Parametreleri"},custom_header_help:{zh:'\u4f7f\u7528JSON\u683c\u5f0f\uff0c\u4f8b\u5982 "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"',en:'Use JSON format, for example "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"',zh_TW:'\u4f7f\u7528JSON\u683c\u5f0f\uff0c\u4f8b\u5982 "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"',ja:'JSON\u5f62\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b: "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"',ko:'JSON \ud615\uc2dd\uc744 \uc0ac\uc6a9\ud558\uc138\uc694. \uc608: "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0"',tr:'\xd6rne\u011fin, "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:141.0) Gecko/20100101 Firefox/141.0" \u015feklinde JSON format\u0131n\u0131 kullan\u0131n.'},custom_body:{zh:"\u81ea\u5b9a\u4e49Body\u53c2\u6570",en:"Custom Body Params",zh_TW:"\u81ea\u8a02 Body \u53c3\u6578",ja:"\u30ab\u30b9\u30bf\u30e0\u30dc\u30c7\u30a3",ko:"\uc0ac\uc6a9\uc790 \uc9c0\uc815 \ubc14\ub514",tr:"\xd6zel G\xf6vde Parametreleri"},custom_body_help:{zh:'\u4f7f\u7528JSON\u683c\u5f0f\uff0c\u4f8b\u5982 "top_p": 0.7',en:'Use JSON format, for example "top_p": 0.7',zh_TW:'\u4f7f\u7528JSON\u683c\u5f0f\uff0c\u4f8b\u5982 "top_p": 0.7',ja:'JSON\u5f62\u5f0f\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4f8b: "top_p": 0.7',ko:'JSON \ud615\uc2dd\uc744 \uc0ac\uc6a9\ud558\uc138\uc694. \uc608: "top_p": 0.7',tr:'JSON format\u0131n\u0131 kullan\u0131n, \xf6rne\u011fin "top_p": 0.7'},gemini_interactions_custom_body_help:{zh:"\u4f7f\u7528 Interactions API \u9876\u5c42 JSON \u5b57\u6bb5\uff1bRequest Hook \u6536\u5230\u7684\u4e5f\u662f Interactions \u8bf7\u6c42\u7ed3\u6784\u3002",en:"Use top-level Interactions API JSON fields. Request Hook also receives the Interactions request shape.",zh_TW:"\u4f7f\u7528 Interactions API \u9802\u5c64 JSON \u6b04\u4f4d\uff1bRequest Hook \u6536\u5230\u7684\u4e5f\u662f Interactions \u8acb\u6c42\u7d50\u69cb\u3002",ja:"Interactions API \u306e\u30c8\u30c3\u30d7\u30ec\u30d9\u30eb JSON \u30d5\u30a3\u30fc\u30eb\u30c9\u3092\u4f7f\u7528\u3057\u307e\u3059\u3002Request Hook \u3082 Interactions \u306e\u30ea\u30af\u30a8\u30b9\u30c8\u5f62\u5f0f\u3092\u53d7\u3051\u53d6\u308a\u307e\u3059\u3002",ko:"Interactions API \ucd5c\uc0c1\uc704 JSON \ud544\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc138\uc694. Request Hook\ub3c4 Interactions \uc694\uccad \uad6c\uc870\ub97c \ubc1b\uc2b5\ub2c8\ub2e4.",tr:"\xdcst d\xfczey Interactions API JSON alanlar\u0131n\u0131 kullan\u0131n. Request Hook da Interactions istek yap\u0131s\u0131n\u0131 al\u0131r."},min_translate_length:{zh:"\u6700\u5c0f\u7ffb\u8bd1\u5b57\u7b26\u6570 (1-100)",en:"Minimum number Of Translated Characters (1-100)",zh_TW:"\u6700\u5c0f\u7ffb\u8b6f\u5b57\u5143\u6578 (1-100)",ja:"\u6700\u5c0f\u7ffb\u8a33\u6587\u5b57\u6570 (1-100)",ko:"\ucd5c\uc18c \ubc88\uc5ed \ubb38\uc790 \uc218 (1-100)",tr:"Minimum \xc7evrilmi\u015f Karakter Say\u0131s\u0131 (1-100)"},max_translate_length:{zh:"\u6700\u5927\u7ffb\u8bd1\u5b57\u7b26\u6570 (100-100000)",en:"Maximum number Of Translated Characters (100-100000)",zh_TW:"\u6700\u5927\u7ffb\u8b6f\u5b57\u5143\u6578 (100-100000)",ja:"\u6700\u5927\u7ffb\u8a33\u6587\u5b57\u6570 (100-100000)",ko:"\ucd5c\ub300 \ubc88\uc5ed \ubb38\uc790 \uc218 (100-100000)",tr:"Maksimum \xc7evrilmi\u015f Karakter Say\u0131s\u0131 (100-100000)"},num_of_newline_characters:{zh:"\u6362\u884c\u5b57\u7b26\u6570 (1-1000)",en:"Number of Newline Characters (1-1000)",zh_TW:"\u63db\u884c\u5b57\u5143\u6578 (1-1000)",ja:"\u6539\u884c\u6587\u5b57\u6570 (1-1000)",ko:"\uc904\ubc14\uafc8 \ubb38\uc790 \uc218 (1-1000)",tr:"Yeni Sat\u0131r Karakter Say\u0131s\u0131 (1-1000)"},translate_service:{zh:"\u7ffb\u8bd1\u670d\u52a1",en:"Translate Service",zh_TW:"\u7ffb\u8b6f\u670d\u52d9",ja:"\u7ffb\u8a33\u30b5\u30fc\u30d3\u30b9",ko:"\ubc88\uc5ed \uc11c\ube44\uc2a4",tr:"\xc7eviri Hizmeti"},translate_service_multiple:{zh:"\u7ffb\u8bd1\u670d\u52a1 (\u652f\u6301\u591a\u9009)",en:"Translation service (multiple supported)",zh_TW:"\u7ffb\u8b6f\u670d\u52d9 (\u652f\u63f4\u591a\u9078)",ja:"\u7ffb\u8a33\u30b5\u30fc\u30d3\u30b9 (\u8907\u6570\u9078\u629e\u53ef)",ko:"\ubc88\uc5ed \uc11c\ube44\uc2a4 (\ub2e4\uc911 \uc120\ud0dd \uc9c0\uc6d0)",tr:"\xc7eviri Hizmeti (Birden Fazla Desteklenir)"},single_word_no_trans:{zh:"\u5355\u4e2a\u5355\u8bcd\u5212\u8bcd\u4e0d\u8c03\u7528\u7ffb\u8bd1\u670d\u52a1",en:"Do not use translation services for single word",zh_TW:"\u9078\u53d6\u55ae\u4e00\u55ae\u5b57\u6642\u4e0d\u547c\u53eb\u7ffb\u8b6f\u670d\u52d9",ja:"\u5358\u4e00\u5358\u8a9e\u306f\u7ffb\u8a33\u30b5\u30fc\u30d3\u30b9\u3092\u4f7f\u7528\u3057\u306a\u3044",ko:"\ub2e8\uc77c \ub2e8\uc5b4\ub294 \ubc88\uc5ed \uc11c\ube44\uc2a4\ub97c \uc0ac\uc6a9\ud558\uc9c0 \uc54a\uc74c",tr:"Tek Kelime \u0130\xe7in \xc7eviri Hizmetlerini Kullanmay\u0131n"},auto_fav_word:{zh:"\u81ea\u52a8\u6536\u85cf\u8bcd\u6c47",en:"Automatically favorite words",zh_TW:"\u81ea\u52d5\u6536\u85cf\u8a5e\u5f59",ja:"\u5358\u8a9e\u3092\u81ea\u52d5\u3067\u304a\u6c17\u306b\u5165\u308a\u306b\u8ffd\u52a0",ko:"\ub2e8\uc5b4 \uc790\ub3d9 \uc990\uaca8\ucc3e\uae30",tr:"Kelimeleri Otomatik Favorilere Ekle"},translate_timing:{zh:"\u7ffb\u8bd1\u65f6\u673a",en:"Translate Timing",zh_TW:"\u7ffb\u8b6f\u6642\u6a5f",ja:"\u7ffb\u8a33\u30bf\u30a4\u30df\u30f3\u30b0",ko:"\ubc88\uc5ed \uc2dc\uc810",tr:"\xc7eviri Zamanlamas\u0131"},mk_pagescroll:{zh:"\u6eda\u52a8\u52a0\u8f7d\u7ffb\u8bd1\uff08\u63a8\u8350\uff09",en:"Rolling Loading (Suggested)",zh_TW:"\u6efe\u52d5\u8f09\u5165\u7ffb\u8b6f\uff08\u5efa\u8b70\uff09",ja:"\u30b9\u30af\u30ed\u30fc\u30eb\u7ffb\u8a33 (\u63a8\u5968)",ko:"\uc2a4\ud06c\ub864 \ubc88\uc5ed (\uad8c\uc7a5)",tr:"Kademeli Y\xfckleme (\xd6nerilen)"},mk_pageopen:{zh:"\u7acb\u5373\u5168\u90e8\u7ffb\u8bd1",en:"Translate all now",zh_TW:"\u7acb\u5373\u5168\u90e8\u7ffb\u8b6f",ja:"\u3059\u3050\u306b\u3059\u3079\u3066\u7ffb\u8a33",ko:"\uc989\uc2dc \ubaa8\ub450 \ubc88\uc5ed",tr:"Hepsini \u015eimdi \xc7evir"},mk_mouseover:{zh:"\u9f20\u6807\u60ac\u505c\u7ffb\u8bd1",en:"Mouseover",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u7ffb\u8b6f",ja:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u7ffb\u8a33",ko:"\ub9c8\uc6b0\uc2a4\uc624\ubc84 \ubc88\uc5ed",tr:"Fareyle \xdczerine Gelme"},mk_ctrlKey:{zh:"Control + \u9f20\u6807\u60ac\u505c",en:"Control + Mouseover",zh_TW:"Control + \u6ed1\u9f20\u61f8\u505c",ja:"Control + \u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc",ko:"Control + \ub9c8\uc6b0\uc2a4\uc624\ubc84",tr:"Control + Fareyle \xdczerine Gelme"},mk_shiftKey:{zh:"Shift + \u9f20\u6807\u60ac\u505c",en:"Shift + Mouseover",zh_TW:"Shift + \u6ed1\u9f20\u61f8\u505c",ja:"Shift + \u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc",ko:"Shift + \ub9c8\uc6b0\uc2a4\uc624\ubc84",tr:"Shift + Fareyle \xdczerine Gelme"},mk_altKey:{zh:"Alt + \u9f20\u6807\u60ac\u505c",en:"Alt + Mouseover",zh_TW:"Alt + \u6ed1\u9f20\u61f8\u505c",ja:"Alt + \u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc",ko:"Alt + \ub9c8\uc6b0\uc2a4\uc624\ubc84",tr:"Alt + Fareyle \xdczerine Gelme"},from_lang:{zh:"\u539f\u6587\u8bed\u8a00",en:"Source Language",zh_TW:"\u539f\u6587\u8a9e\u8a00",ja:"\u539f\u6587\u306e\u8a00\u8a9e",ko:"\uc6d0\ubcf8 \uc5b8\uc5b4",tr:"Kaynak Dil"},to_lang:{zh:"\u76ee\u6807\u8bed\u8a00",en:"Target Language",zh_TW:"\u76ee\u6a19\u8a9e\u8a00",ja:"\u7ffb\u8a33\u5148\u306e\u8a00\u8a9e",ko:"\ub300\uc0c1 \uc5b8\uc5b4",tr:"Hedef Dil"},to_lang2:{zh:"\u7b2c\u4e8c\u76ee\u6807\u8bed\u8a00",en:"Target Language 2",zh_TW:"\u7b2c\u4e8c\u76ee\u6a19\u8a9e\u8a00",ja:"\u7b2c\u4e8c\u7ffb\u8a33\u5148\u306e\u8a00\u8a9e",ko:"\ub450 \ubc88\uc9f8 \ub300\uc0c1 \uc5b8\uc5b4",tr:"Hedef Dil 2"},to_lang2_helper:{zh:"\u8bbe\u5b9a\u540e\uff0c\u4e0e\u76ee\u6807\u8bed\u8a00\u4ea7\u751f\u4e92\u8bd1\u6548\u679c\uff0c\u4f46\u4f9d\u8d56\u8fdc\u7a0b\u8bed\u8a00\u8bc6\u522b\u3002",en:"After setting, it will produce mutual translation effect with the target language, but it relies on remote language recognition.",zh_TW:"\u8a2d\u5b9a\u5f8c\u6703\u8207\u76ee\u6a19\u8a9e\u8a00\u4e92\u8b6f\uff0c\u4f46\u4f9d\u8cf4\u9060\u7aef\u8a9e\u8a00\u5075\u6e2c\u3002",ja:"\u8a2d\u5b9a\u5f8c\u3001\u30bf\u30fc\u30b2\u30c3\u30c8\u8a00\u8a9e\u3068\u306e\u76f8\u4e92\u7ffb\u8a33\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u304c\u3001\u30ea\u30e2\u30fc\u30c8\u8a00\u8a9e\u8a8d\u8b58\u306b\u4f9d\u5b58\u3057\u307e\u3059\u3002",ko:"\uc124\uc815 \ud6c4, \ub300\uc0c1 \uc5b8\uc5b4\uc640 \uc0c1\ud638 \ubc88\uc5ed \ud6a8\uacfc\uac00 \ubc1c\uc0dd\ud558\uc9c0\ub9cc, \uc6d0\uaca9 \uc5b8\uc5b4 \uc778\uc2dd\uc5d0 \uc758\uc874\ud569\ub2c8\ub2e4.",tr:"Ayarlar yap\u0131ld\u0131ktan sonra, hedef dille kar\u015f\u0131l\u0131kl\u0131 \xe7eviri etkisi yaratacakt\u0131r, ancak uzaktan dil tan\u0131ma \xf6zelli\u011fine ba\u011fl\u0131d\u0131r"},text_style:{zh:"\u8bd1\u6587\u6837\u5f0f",en:"Text Style",zh_TW:"\u8b6f\u6587\u6a23\u5f0f",ja:"\u7ffb\u8a33\u30c6\u30ad\u30b9\u30c8\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed \ud14d\uc2a4\ud2b8 \uc2a4\ud0c0\uc77c",tr:"Metin Stili"},original_text_style:{zh:"\u539f\u6587\u6837\u5f0f",en:"Original Text Style",zh_TW:"\u539f\u6587\u6a23\u5f0f",ja:"\u539f\u6587\u30c6\u30ad\u30b9\u30c8\u30b9\u30bf\u30a4\u30eb",ko:"\uc6d0\ubb38 \ud14d\uc2a4\ud2b8 \uc2a4\ud0c0\uc77c",tr:"Orijinal Metin Stili"},text_style_alt:{zh:"\u8bd1\u6587\u6837\u5f0f",en:"Text Style",zh_TW:"\u8b6f\u6587\u6a23\u5f0f",ja:"\u7ffb\u8a33\u30c6\u30ad\u30b9\u30c8\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed \ud14d\uc2a4\ud2b8 \uc2a4\ud0c0\uc77c",tr:"Metin Stili"},bg_color:{zh:"\u6837\u5f0f\u989c\u8272",en:"Style Color",zh_TW:"\u6a23\u5f0f\u984f\u8272",ja:"\u30b9\u30bf\u30a4\u30eb\u30ab\u30e9\u30fc",ko:"\uc2a4\ud0c0\uc77c \uc0c9\uc0c1",tr:"Stil Rengi"},remain_unchanged:{zh:"\u4fdd\u7559\u4e0d\u53d8",en:"Remain Unchanged",zh_TW:"\u4fdd\u7559\u4e0d\u8b8a",ja:"\u5909\u66f4\u3057\u306a\u3044",ko:"\ubcc0\uacbd\ud558\uc9c0 \uc54a\uc74c",tr:"De\u011fi\u015fmeden Kal"},google_api:{zh:"\u8c37\u6b4c\u7ffb\u8bd1\u63a5\u53e3",en:"Google Translate API",zh_TW:"Google \u7ffb\u8b6f\u4ecb\u9762",ja:"Google \u7ffb\u8a33 API",ko:"Google \ubc88\uc5ed API",tr:"Google \xc7eviri API'si"},default_selector:{zh:"\u9ed8\u8ba4\u9009\u62e9\u5668",en:"Default selector",zh_TW:"\u9810\u8a2d\u9078\u64c7\u5668",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u30bb\u30ec\u30af\u30bf",ko:"\uae30\ubcf8 \uc120\ud0dd\uc790",tr:"Varsay\u0131lan Se\xe7ici"},selector_rules:{zh:"\u9009\u62e9\u5668\u89c4\u5219",en:"Selector Rules",zh_TW:"\u9078\u64c7\u5668\u898f\u5247",ja:"\u30bb\u30ec\u30af\u30bf\u30fc\u30eb\u30fc\u30eb",ko:"\uc120\ud0dd\uc790 \uaddc\uce59",tr:"Se\xe7ici Kurallar\u0131"},save:{zh:"\u4fdd\u5b58",en:"Save",zh_TW:"\u5132\u5b58",ja:"\u4fdd\u5b58",ko:"\uc800\uc7a5",tr:"Kaydet"},edit:{zh:"\u7f16\u8f91",en:"Edit",zh_TW:"\u7de8\u8f2f",ja:"\u7de8\u96c6",ko:"\uc218\uc815",tr:"D\xfczenle"},cancel:{zh:"\u53d6\u6d88",en:"Cancel",zh_TW:"\u53d6\u6d88",ja:"\u30ad\u30e3\u30f3\u30bb\u30eb",ko:"\ucde8\uc18c",tr:"\u0130ptal Et"},delete:{zh:"\u5220\u9664",en:"Delete",zh_TW:"\u522a\u9664",ja:"\u524a\u9664",ko:"\uc0ad\uc81c",tr:"Sil"},reset:{zh:"\u91cd\u7f6e",en:"Reset",zh_TW:"\u91cd\u8a2d",ja:"\u30ea\u30bb\u30c3\u30c8",ko:"\ucd08\uae30\ud654",tr:"S\u0131f\u0131rla"},add:{zh:"\u6dfb\u52a0",en:"Add",zh_TW:"\u65b0\u589e",ja:"\u8ffd\u52a0",ko:"\ucd94\uac00",tr:"Ekle"},bulk_actions:{zh:"\u6279\u91cf\u64cd\u4f5c",en:"Bulk Actions",zh_TW:"\u6279\u6b21\u64cd\u4f5c",ja:"\u4e00\u62ec\u64cd\u4f5c",ko:"\uc77c\uad04 \uc791\uc5c5",tr:"Toplu \u0130\u015flemler"},select_all:{zh:"\u5168\u9009",en:"Select All",zh_TW:"\u5168\u9078",ja:"\u3059\u3079\u3066\u9078\u629e",ko:"\ubaa8\ub450 \uc120\ud0dd",tr:"T\xfcm\xfcn\xfc Se\xe7"},deselect_all:{zh:"\u5168\u4e0d\u9009",en:"Deselect All",zh_TW:"\u5168\u90e8\u53d6\u6d88\u9078\u53d6",ja:"\u3059\u3079\u3066\u89e3\u9664",ko:"\ubaa8\ub450 \ud574\uc81c",tr:"T\xfcm\xfcn\xfcn Se\xe7imini Kald\u0131r"},pin_to_top:{zh:"\u7f6e\u9876",en:"Pin to Top",zh_TW:"\u7f6e\u9802",ja:"\u5148\u982d\u306b\u56fa\u5b9a",ko:"\ub9e8 \uc704\uc5d0 \uace0\uc815",tr:"En \xdcste Sabitle"},delete_selected_apis_confirm:{zh:"\u786e\u5b9a\u5220\u9664\u5df2\u9009\u7684 {count} \u4e2a\u63a5\u53e3\u5417\uff1f",en:"Delete {count} selected interfaces?",zh_TW:"\u78ba\u5b9a\u522a\u9664\u5df2\u9078\u7684 {count} \u500b\u4ecb\u9762\u55ce\uff1f",ja:"\u9078\u629e\u3057\u305f {count} \u4ef6\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f",ko:"\uc120\ud0dd\ud55c \uc778\ud130\ud398\uc774\uc2a4 {count}\uac1c\ub97c \uc0ad\uc81c\ud560\uae4c\uc694?",tr:"Se\xe7ili {Count} Aray\xfcz\xfc Silmek \u0130stiyor Musunuz?"},copy_api:{zh:"\u590d\u5236\u63a5\u53e3",en:"Copy Interface",zh_TW:"\u8907\u88fd\u4ecb\u9762",ja:"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3092\u30b3\u30d4\u30fc",ko:"\uc778\ud130\ud398\uc774\uc2a4 \ubcf5\uc0ac",tr:"Aray\xfcz\xfc Kopyala"},prompt_name:{zh:"\u540d\u79f0",en:"Name",zh_TW:"\u540d\u7a31",ja:"\u540d\u524d",ko:"\uc774\ub984",tr:"Ad"},system_prompt:{zh:"\u7cfb\u7edf\u63d0\u793a\u8bcd",en:"System Prompt",zh_TW:"\u7cfb\u7d71\u63d0\u793a\u8a5e",ja:"\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc2dc\uc2a4\ud15c \ud504\ub86c\ud504\ud2b8",tr:"Sistem \u0130stemi"},user_prompt:{zh:"\u7528\u6237\u63d0\u793a\u8bcd",en:"User Prompt",zh_TW:"\u4f7f\u7528\u8005\u63d0\u793a\u8a5e",ja:"\u30e6\u30fc\u30b6\u30fc\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc0ac\uc6a9\uc790 \ud504\ub86c\ud504\ud2b8",tr:"Kullan\u0131c\u0131 \u0130stemi"},copy_as_template:{zh:"\u590d\u5236\u4e3a\u6a21\u677f",en:"Copy as Template",zh_TW:"\u8907\u88fd\u70ba\u7bc4\u672c",ja:"\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u3068\u3057\u3066\u30b3\u30d4\u30fc",ko:"\ud15c\ud50c\ub9bf\uc73c\ub85c \ubcf5\uc0ac",tr:"\u015eablon Olarak Kopyala"},delete_prompt_confirm:{zh:"\u786e\u5b9a\u5220\u9664\u8fd9\u4efd\u63d0\u793a\u8bcd\u5417\uff1f",en:"Delete this prompt?",zh_TW:"\u78ba\u5b9a\u522a\u9664\u9019\u4efd\u63d0\u793a\u8a5e\u55ce\uff1f",ja:"\u3053\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u524a\u9664\u3057\u307e\u3059\u304b\uff1f",ko:"\uc774 \ud504\ub86c\ud504\ud2b8\ub97c \uc0ad\uc81c\ud560\uae4c\uc694?",tr:"Bu \u0130stem Silinsin Mi?"},custom_prompt:{zh:"\u81ea\u5b9a\u4e49\u63d0\u793a\u8bcd",en:"Custom Prompt",zh_TW:"\u81ea\u8a02\u63d0\u793a\u8a5e",ja:"\u30ab\u30b9\u30bf\u30e0\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc0ac\uc6a9\uc790 \ud504\ub86c\ud504\ud2b8",tr:"\xd6zel \u0130stem"},add_prompt:{zh:"\u65b0\u589e\u63d0\u793a\u8bcd",en:"Add Prompt",zh_TW:"\u65b0\u589e\u63d0\u793a\u8a5e",ja:"\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u8ffd\u52a0",ko:"\ud504\ub86c\ud504\ud2b8 \ucd94\uac00",tr:"\u0130stem Ekle"},prompt_category_batch_system:{zh:"\u805a\u5408\u7cfb\u7edf\u63d0\u793a\u8bcd",en:"Batch System Prompt",zh_TW:"\u805a\u5408\u7cfb\u7d71\u63d0\u793a\u8a5e",ja:"\u4e00\u62ec\u7ffb\u8a33\u30b7\u30b9\u30c6\u30e0\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc77c\uad04 \uc2dc\uc2a4\ud15c \ud504\ub86c\ud504\ud2b8",tr:"Toplu Sistem \u0130stemi"},prompt_category_user:{zh:"\u7528\u6237\u63d0\u793a\u8bcd",en:"User Prompt",zh_TW:"\u4f7f\u7528\u8005\u63d0\u793a\u8a5e",ja:"\u30e6\u30fc\u30b6\u30fc\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc0ac\uc6a9\uc790 \ud504\ub86c\ud504\ud2b8",tr:"Kullan\u0131c\u0131 \u0130stemi"},prompt_category_subtitle:{zh:"\u5b57\u5e55\u63d0\u793a\u8bcd",en:"Subtitle Prompt",zh_TW:"\u5b57\u5e55\u63d0\u793a\u8a5e",ja:"\u5b57\u5e55\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc790\ub9c9 \ud504\ub86c\ud504\ud2b8",tr:"Altyaz\u0131 \u0130stemi"},prompt_category_dictionary:{zh:"\u8bcd\u5178\u63d0\u793a\u8bcd",en:"Dictionary Prompt",zh_TW:"\u8a5e\u5178\u63d0\u793a\u8a5e",ja:"\u8f9e\u66f8\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc0ac\uc804 \ud504\ub86c\ud504\ud2b8",tr:"S\xf6zl\xfck \u0130stemi"},batch_prompt:{zh:"\u805a\u5408\u7ffb\u8bd1\u63d0\u793a\u8bcd",en:"Batch Translation Prompt",zh_TW:"\u805a\u5408\u7ffb\u8b6f\u63d0\u793a\u8a5e",ja:"\u4e00\u62ec\u7ffb\u8a33\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\uc77c\uad04 \ubc88\uc5ed \ud504\ub86c\ud504\ud2b8",tr:"Toplu \xc7eviri \u0130stemi"},nobatch_prompt:{zh:"\u975e\u805a\u5408\u7ffb\u8bd1\u63d0\u793a\u8bcd",en:"Non-batch Translation Prompt",zh_TW:"\u975e\u805a\u5408\u7ffb\u8b6f\u63d0\u793a\u8a5e",ja:"\u975e\u4e00\u62ec\u7ffb\u8a33\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"\ube44\uc77c\uad04 \ubc88\uc5ed \ud504\ub86c\ud504\ud2b8",tr:"Toplu Olmayan \xc7eviri \u0130stemi"},subtitle_prompt:{zh:"AI\u65ad\u53e5\u63d0\u793a\u8bcd",en:"AI Segmentation Prompt",zh_TW:"AI\u65b7\u53e5\u63d0\u793a\u8a5e",ja:"AI \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"AI \ubb38\uc7a5 \ubd84\ud560 \ud504\ub86c\ud504\ud2b8",tr:"AI Altyaz\u0131 \u0130stemi"},seg_prompt_mode:{zh:"AI\u65ad\u53e5\u63d0\u793a\u8bcd",en:"AI Segmentation Prompt",zh_TW:"AI\u65b7\u53e5\u63d0\u793a\u8a5e",ja:"AI \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"AI \ubb38\uc7a5 \ubd84\ud560 \ud504\ub86c\ud504\ud2b8",tr:"AI Segmentasyon \u0130stemi"},follow_api_prompt:{zh:"\u63a5\u53e3\u9ed8\u8ba4",en:"Interface Default",zh_TW:"\u4ecb\u9762\u9810\u8a2d",ja:"\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u65e2\u5b9a",ko:"\uc778\ud130\ud398\uc774\uc2a4 \uae30\ubcf8\uac12",tr:"Aray\xfcz Varsay\u0131lan\u0131"},preset_prompt_nobatch_translation:{zh:"\u975e\u805a\u5408\u7ffb\u8bd1",en:"Non-batch Translation",zh_TW:"\u975e\u805a\u5408\u7ffb\u8b6f",ja:"\u975e\u4e00\u62ec\u7ffb\u8a33",ko:"\ube44\uc77c\uad04 \ubc88\uc5ed",tr:"Toplu Olmayan \xc7eviri"},preset_prompt_batch_translation_json:{zh:"\u805a\u5408\u7ffb\u8bd1\uff08JSON\uff09",en:"Batch Translation (JSON)",zh_TW:"\u805a\u5408\u7ffb\u8b6f\uff08JSON\uff09",ja:"\u4e00\u62ec\u7ffb\u8a33\uff08JSON\uff09",ko:"\uc77c\uad04 \ubc88\uc5ed(JSON)",tr:"Toplu \xc7eviri (JSON)"},preset_prompt_batch_translation_xml:{zh:"\u805a\u5408\u7ffb\u8bd1\uff08XML\uff09",en:"Batch Translation (XML)",zh_TW:"\u805a\u5408\u7ffb\u8b6f\uff08XML\uff09",ja:"\u4e00\u62ec\u7ffb\u8a33\uff08XML\uff09",ko:"\uc77c\uad04 \ubc88\uc5ed(XML)",tr:"Toplu \xc7eviri (XML)"},preset_prompt_batch_translation_line:{zh:"\u805a\u5408\u7ffb\u8bd1\uff08LINE\uff09",en:"Batch Translation (LINE)",zh_TW:"\u805a\u5408\u7ffb\u8b6f\uff08LINE\uff09",ja:"\u4e00\u62ec\u7ffb\u8a33\uff08LINE\uff09",ko:"\uc77c\uad04 \ubc88\uc5ed(LINE)",tr:"Toplu \xc7eviri (Line)"},preset_prompt_subtitle_segmentation:{zh:"\u5b57\u5e55 AI \u65ad\u53e5",en:"Subtitle AI Segmentation",zh_TW:"\u5b57\u5e55 AI \u65b7\u53e5",ja:"\u5b57\u5e55 AI \u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3",ko:"\uc790\ub9c9 AI \ubb38\uc7a5 \ubd84\ud560",tr:"Altyaz\u0131 AI Segmentasyonu"},preset_prompt_dictionary_en_zh:{zh:"AI \u82f1\u6c49\u8bcd\u5178",en:"AI English-Chinese Dictionary",zh_TW:"AI \u82f1\u6f22\u8a5e\u5178",ja:"AI \u82f1\u4e2d\u8f9e\u66f8",ko:"AI \uc601\uc911 \uc0ac\uc804",tr:"AI \u0130ngilizce-\xc7ince S\xf6zl\xfck"},inject_rules:{zh:"\u6ce8\u5165\u8ba2\u9605\u89c4\u5219",en:"Inject Subscribe Rules",zh_TW:"\u6ce8\u5165\u8a02\u95b1\u898f\u5247",ja:"\u8cfc\u8aad\u30eb\u30fc\u30eb\u3092\u6ce8\u5165",ko:"\uad6c\ub3c5 \uaddc\uce59 \uc8fc\uc785",tr:"Abonelik Kurallar\u0131n\u0131 Ekle"},personal_rules:{zh:"\u4e2a\u4eba\u89c4\u5219",en:"Rules",zh_TW:"\u500b\u4eba\u898f\u5247",ja:"\u500b\u4eba\u30eb\u30fc\u30eb",ko:"\uac1c\uc778 \uaddc\uce59",tr:"Kurallar"},subscribe_rules:{zh:"\u8ba2\u9605\u89c4\u5219",en:"Subscribe",zh_TW:"\u8a02\u95b1\u898f\u5247",ja:"\u8cfc\u8aad\u30eb\u30fc\u30eb",ko:"\uad6c\ub3c5 \uaddc\uce59",tr:"Abonelik Kurallar\u0131"},overwrite_subscribe_rules:{zh:"\u8986\u5199\u8ba2\u9605\u89c4\u5219",en:"Overwrite",zh_TW:"\u8986\u5beb\u8a02\u95b1\u898f\u5247",ja:"\u8cfc\u8aad\u30eb\u30fc\u30eb\u3092\u4e0a\u66f8\u304d",ko:"\uad6c\ub3c5 \uaddc\uce59 \ub36e\uc5b4\uc4f0\uae30",tr:"\xdczerine Yaz"},subscribe_url:{zh:"\u8ba2\u9605\u5730\u5740",en:"Subscribe URL",zh_TW:"\u8a02\u95b1\u7db2\u5740",ja:"\u8cfc\u8aadURL",ko:"\uad6c\ub3c5 URL",tr:"Abonelik URL'si"},rules_warn_1:{zh:'1\u3001\u89c4\u5219\u751f\u6548\u7684\u4f18\u5148\u7ea7\u4f9d\u6b21\u4e3a\uff1a\u4e2a\u4eba\u89c4\u5219 > \u8ba2\u9605\u89c4\u5219 > \u5168\u5c40\u89c4\u5219\u3002"\u5168\u5c40\u89c4\u5219"\u76f8\u5f53\u4e8e\u515c\u5e95\u89c4\u5219\u3002',en:'1. The priority of rules is: personal rules > subscription rules > global rules. "Global rules" are like a fallback rule.',zh_TW:"1. \u898f\u5247\u751f\u6548\u7684\u512a\u5148\u9806\u5e8f\u4f9d\u5e8f\u70ba\uff1a\u500b\u4eba\u898f\u5247 > \u8a02\u95b1\u898f\u5247 > \u5168\u57df\u898f\u5247\u3002\u300c\u5168\u57df\u898f\u5247\u300d\u76f8\u7576\u65bc\u5099\u63f4\u898f\u5247\u3002",ja:"1. \u30eb\u30fc\u30eb\u306e\u512a\u5148\u9806\u4f4d: \u500b\u4eba\u30eb\u30fc\u30eb > \u8cfc\u8aad\u30eb\u30fc\u30eb > \u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb\u3002\u300c\u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb\u300d\u306f\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u30eb\u30fc\u30eb\u306e\u3088\u3046\u306a\u3082\u306e\u3067\u3059\u3002",ko:'1. \uaddc\uce59 \uc6b0\uc120\uc21c\uc704: \uac1c\uc778 \uaddc\uce59 > \uad6c\ub3c5 \uaddc\uce59 > \uc804\uc5ed \uaddc\uce59. "\uc804\uc5ed \uaddc\uce59"\uc740 \uc77c\uc885\uc758 \ud3f4\ubc31(fallback) \uaddc\uce59\uc785\ub2c8\ub2e4.',tr:'1. Kurallar\u0131n \xf6nceli\u011fi \u015fudur: ki\u015fisel kurallar > abonelik kurallar\u0131 > genel kurallar. "Genel kurallar" bir geri d\xf6n\xfc\u015f kural\u0131 gibidir'},rules_warn_2:{zh:"2\u3001\u201c\u8ba2\u9605\u89c4\u5219\u201d\u9009\u62e9\u6ce8\u5165\u540e\u624d\u4f1a\u751f\u6548\u3002",en:'2. "Subscription rules" will take effect only after injection is selected.',zh_TW:"2\u3001\u300c\u8a02\u95b1\u898f\u5247\u300d\u9078\u64c7\u6ce8\u5165\u5f8c\u624d\u6703\u751f\u6548\u3002",ja:"2. \u300c\u8cfc\u8aad\u30eb\u30fc\u30eb\u300d\u306f\u6ce8\u5165\u3092\u9078\u629e\u3057\u305f\u5f8c\u306b\u306e\u307f\u6709\u52b9\u306b\u306a\u308a\u307e\u3059\u3002",ko:'2. "\uad6c\ub3c5 \uaddc\uce59"\uc740 \uc8fc\uc785\uc744 \uc120\ud0dd\ud55c \ud6c4\uc5d0\ub9cc \uc801\uc6a9\ub429\ub2c8\ub2e4.',tr:'2. "Abonelik kurallar\u0131" yaln\u0131zca enjeksiyon se\xe7ildikten sonra ge\xe7erli olacakt\u0131r.'},rules_warn_3:{zh:"3\u3001\u5173\u4e8e\u89c4\u5219\u586b\u5199\uff1a\u8f93\u5165\u6846\u7559\u7a7a\u6216\u4e0b\u62c9\u6846\u9009\u201c*\u201d\u8868\u793a\u91c7\u7528\u5168\u5c40\u89c4\u5219\u3002CSS\u9009\u62e9\u5668\u652f\u6301 + \u53f7\u524d\u7f00\u8868\u793a\u5728\u5168\u5c40\u89c4\u5219\u57fa\u7840\u4e0a\u8ffd\u52a0\uff0c- \u53f7\u8868\u793a\u5254\u9664\u3002",en:'3. Regarding filling in the rules: Leave the input box blank or select "*" in the drop-down box to use global rule. CSS selectors support prefixes: "+" means add to the global rules, "-" means exclude.',zh_TW:"3. \u898f\u5247\u586b\u5beb\u8aaa\u660e\uff1a\u8f38\u5165\u6846\u7559\u7a7a\u6216\u4e0b\u62c9\u9078\u64c7\u300c*\u300d\u8868\u793a\u4f7f\u7528\u5168\u57df\u898f\u5247\u3002CSS \u9078\u64c7\u5668\u652f\u63f4\u4f7f\u7528\u524d\u7db4\uff1a\u300c+\u300d\u8868\u793a\u5728\u5168\u57df\u898f\u5247\u57fa\u790e\u4e0a\u65b0\u589e\uff0c\u300c-\u300d\u8868\u793a\u6392\u9664\u3002",ja:"3. \u30eb\u30fc\u30eb\u306e\u8a18\u5165\u306b\u3064\u3044\u3066: \u5165\u529b\u30dc\u30c3\u30af\u30b9\u3092\u7a7a\u767d\u306b\u3059\u308b\u304b\u3001\u30c9\u30ed\u30c3\u30d7\u30c0\u30a6\u30f3\u3067\u300c*\u300d\u3092\u9078\u629e\u3059\u308b\u3068\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb\u304c\u4f7f\u7528\u3055\u308c\u307e\u3059\u3002CSS \u30bb\u30ec\u30af\u30bf\u30fc\u306f\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u306b\u5bfe\u5fdc\u3057\u3066\u3044\u307e\u3059\u3002\u300c+\u300d\u306f\u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb\u3078\u306e\u8ffd\u52a0\u3001\u300c-\u300d\u306f\u9664\u5916\u3092\u610f\u5473\u3057\u307e\u3059\u3002",ko:'3. \uaddc\uce59 \uc791\uc131 \uad00\ub828: \uc785\ub825\ub780\uc744 \ube44\uc6cc\ub450\uac70\ub098 \ub4dc\ub86d\ub2e4\uc6b4\uc5d0\uc11c "*"\ub97c \uc120\ud0dd\ud558\uba74 \uc804\uc5ed \uaddc\uce59\uc774 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. CSS \uc120\ud0dd\uc790\ub294 \uc811\ub450\uc0ac\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. "+"\ub294 \uc804\uc5ed \uaddc\uce59\uc5d0 \ucd94\uac00, "-"\ub294 \uc81c\uc678\ub97c \uc758\ubbf8\ud569\ub2c8\ub2e4.',tr:'3. Kurallar\u0131n Doldurulmas\u0131yla \u0130lgili Olarak: Genel Kural\u0131 Kullanmak \u0130\xe7in Giri\u015f Kutusunu Bo\u015f B\u0131rak\u0131n Veya A\xe7\u0131l\u0131r Kutuda "*" Se\xe7ene\u011fini Se\xe7in. Css Se\xe7icileri \xd6nekleri Destekler: "+" Genel Kurallara Ekleme Anlam\u0131na Gelir'},sync_warn:{zh:"\u6d89\u53ca\u9690\u79c1\u6570\u636e\u7684\u540c\u6b65\u8bf7\u8c28\u614e\u9009\u62e9\u7b2c\u4e09\u65b9\u540c\u6b65\u670d\u52a1\uff0c\u5efa\u8bae\u81ea\u884c\u642d\u5efa kiss-worker \u6216 WebDAV \u670d\u52a1\u3002",en:"When synchronizing data that involves privacy, please be cautious about choosing third-party sync services. It is recommended to set up your own sync service using kiss-worker or WebDAV.",zh_TW:"\u540c\u6b65\u6d89\u53ca\u96b1\u79c1\u8cc7\u6599\u6642\uff0c\u8acb\u8b39\u614e\u9078\u64c7\u7b2c\u4e09\u65b9\u540c\u6b65\u670d\u52d9\uff1b\u5efa\u8b70\u81ea\u884c\u67b6\u8a2d kiss-worker \u6216 WebDAV \u670d\u52d9\u3002",ja:"\u30d7\u30e9\u30a4\u30d0\u30b7\u30fc\u306b\u95a2\u308f\u308b\u30c7\u30fc\u30bf\u3092\u540c\u671f\u3059\u308b\u5834\u5408\u3001\u30b5\u30fc\u30c9\u30d1\u30fc\u30c6\u30a3\u306e\u540c\u671f\u30b5\u30fc\u30d3\u30b9\u306f\u614e\u91cd\u306b\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\u3002kiss-worker \u3084 WebDAV \u30b5\u30fc\u30d3\u30b9\u3092\u81ea\u5df1\u30db\u30b9\u30c6\u30a3\u30f3\u30b0\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002",ko:"\uac1c\uc778\uc815\ubcf4\uac00 \ud3ec\ud568\ub41c \ub370\uc774\ud130\ub97c \ub3d9\uae30\ud654\ud560 \uacbd\uc6b0, \ud0c0\uc0ac \ub3d9\uae30\ud654 \uc11c\ube44\uc2a4 \uc120\ud0dd\uc5d0 \uc2e0\uc911\uc744 \uae30\ud558\uc2ed\uc2dc\uc624. \uc790\uccb4 kiss-worker \ub610\ub294 WebDAV \uc11c\ube44\uc2a4\ub97c \uad6c\ucd95\ud558\ub294 \uac83\uc744 \uad8c\uc7a5\ud569\ub2c8\ub2e4.",tr:"Gizlilikle ilgili verileri senkronize ederken, \xfc\xe7\xfcnc\xfc taraf senkronizasyon hizmetlerini se\xe7erken l\xfctfen dikkatli olun. KISS-Worker veya WebDAV kullanarak kendi senkronizasyon hizmetinizi kurman\u0131z \xf6nerilir"},sync_warn_gist:{zh:"GitHub Gist \u4e0d\u4f1a\u51fa\u73b0\u5728\u516c\u5f00\u641c\u7d22\u6216\u53d1\u73b0\u9875\u9762\u4e2d\uff0c\u4f46\u4efb\u4f55\u62e5\u6709\u8be5\u94fe\u63a5\u7684\u4eba\u90fd\u53ef\u4ee5\u67e5\u770b\u5185\u5bb9\u3002",en:"GitHub Gists do not appear in public searches or discovery pages, but anyone with the link can view the content.",zh_TW:"GitHub Gist \u4e0d\u6703\u51fa\u73fe\u5728\u516c\u958b\u641c\u5c0b\u6216\u63a2\u7d22\u9801\u9762\u4e2d\uff0c\u4f46\u4efb\u4f55\u64c1\u6709\u8a72\u9023\u7d50\u7684\u4eba\u90fd\u53ef\u4ee5\u67e5\u770b\u5167\u5bb9\u3002",ja:"GitHub Gist \u306f\u516c\u958b\u691c\u7d22\u3084\u767a\u898b\u30da\u30fc\u30b8\u306b\u306f\u8868\u793a\u3055\u308c\u307e\u305b\u3093\u304c\u3001\u30ea\u30f3\u30af\u3092\u6301\u3063\u3066\u3044\u308b\u4eba\u306f\u8ab0\u3067\u3082\u5185\u5bb9\u3092\u95b2\u89a7\u3067\u304d\u307e\u3059\u3002",ko:"GitHub Gist\ub294 \uacf5\uac1c \uac80\uc0c9\uc774\ub098 \ud0d0\uc0c9 \ud398\uc774\uc9c0\uc5d0 \ud45c\uc2dc\ub418\uc9c0 \uc54a\uc9c0\ub9cc, \ub9c1\ud06c\ub97c \uac00\uc9c4 \uc0ac\ub78c\uc740 \ub204\uad6c\ub098 \ub0b4\uc6a9\uc744 \ubcfc \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"GitHub Gist'leri herkese a\xe7\u0131k aramalarda veya ke\u015fif sayfalar\u0131nda g\xf6r\xfcnmez, ancak ba\u011flant\u0131ya sahip herkes i\xe7eri\u011fi g\xf6r\xfcnt\xfcleyebilir."},sync_warn_2:{zh:"\u5982\u679c\u670d\u52a1\u5668\u5b58\u5728\u5176\u4ed6\u5ba2\u6237\u7aef\u540c\u6b65\u7684\u6570\u636e\uff0c\u7b2c\u4e00\u6b21\u540c\u6b65\u5c06\u76f4\u63a5\u8986\u76d6\u672c\u5730\u914d\u7f6e\uff0c\u540e\u9762\u5219\u6839\u636e\u4fee\u6539\u65f6\u95f4\uff0c\u65b0\u7684\u8986\u76d6\u65e7\u7684\u3002",en:"If the server has data synchronized by other clients, the first synchronization will directly overwrite the local configuration, and later, according to the modification time, the new one will overwrite the old one.",zh_TW:"\u82e5\u4f3a\u670d\u5668\u4e0a\u5b58\u5728\u5176\u4ed6\u7528\u6236\u7aef\u540c\u6b65\u7684\u8cc7\u6599\uff0c\u7b2c\u4e00\u6b21\u540c\u6b65\u6703\u76f4\u63a5\u8986\u84cb\u672c\u6a5f\u8a2d\u5b9a\uff1b\u4e4b\u5f8c\u5247\u4f9d\u4fee\u6539\u6642\u9593\uff0c\u7531\u65b0\u7684\u8986\u84cb\u820a\u7684\u3002",ja:"\u30b5\u30fc\u30d0\u30fc\u306b\u4ed6\u306e\u30af\u30e9\u30a4\u30a2\u30f3\u30c8\u306b\u3088\u3063\u3066\u540c\u671f\u3055\u308c\u305f\u30c7\u30fc\u30bf\u304c\u3042\u308b\u5834\u5408\u3001\u6700\u521d\u306e\u540c\u671f\u306f\u30ed\u30fc\u30ab\u30eb\u8a2d\u5b9a\u3092\u76f4\u63a5\u4e0a\u66f8\u304d\u3057\u3001\u305d\u306e\u5f8c\u306f\u5909\u66f4\u6642\u9593\u306b\u5fdc\u3058\u3066\u65b0\u3057\u3044\u3082\u306e\u304c\u53e4\u3044\u3082\u306e\u3092\u4e0a\u66f8\u304d\u3057\u307e\u3059\u3002",ko:"\uc11c\ubc84\uc5d0 \ub2e4\ub978 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \ub3d9\uae30\ud654\ud55c \ub370\uc774\ud130\uac00 \uc788\ub294 \uacbd\uc6b0, \uccab \ubc88\uc9f8 \ub3d9\uae30\ud654\ub294 \ub85c\uceec \uad6c\uc131\uc744 \uc9c1\uc811 \ub36e\uc5b4\uc4f0\uba70, \uc774\ud6c4\uc5d0\ub294 \uc218\uc815 \uc2dc\uac04\uc5d0 \ub530\ub77c \uc0c8 \ud56d\ubaa9\uc774 \uae30\uc874 \ud56d\ubaa9\uc744 \ub36e\uc5b4\uc501\ub2c8\ub2e4.",tr:"E\u011fer sunucuda di\u011fer istemciler taraf\u0131ndan senkronize edilen veriler varsa, ilk senkronizasyon do\u011frudan yerel yap\u0131land\u0131rman\u0131n \xfczerine yaz\u0131l\u0131r ve daha sonra, de\u011fi\u015fiklik zaman\u0131na g\xf6re, yenisi eskisinin \xfczerine yaz\u0131l\u0131r"},sync_warn_encryption:{zh:"\u65b0\u7248\u672c\u4f1a\u81ea\u52a8\u5c06\u65e7\u7248\u660e\u6587\u540c\u6b65\u6570\u636e\u8fc1\u79fb\u4e3a\u52a0\u5bc6\u6570\u636e\uff1b\u540c\u6b65\u52a0\u5bc6\u53e3\u4ee4\u72ec\u7acb\u7528\u4e8e\u6570\u636e\u89e3\u5bc6\uff0c\u8bf7\u59a5\u5584\u4fdd\u5b58\uff0c\u9057\u5931\u540e\u65e0\u6cd5\u8bfb\u53d6\u5df2\u52a0\u5bc6\u7684\u4e91\u7aef\u6570\u636e\u3002",en:"New versions automatically migrate legacy plaintext sync data to encrypted data. The sync encryption passphrase is used independently for data decryption, so keep it safe; encrypted cloud data cannot be read if it is lost.",zh_TW:"\u65b0\u7248\u672c\u6703\u81ea\u52d5\u5c07\u820a\u7248\u660e\u6587\u540c\u6b65\u8cc7\u6599\u9077\u79fb\u70ba\u52a0\u5bc6\u8cc7\u6599\uff1b\u540c\u6b65\u52a0\u5bc6\u5bc6\u78bc\u7368\u7acb\u7528\u65bc\u8cc7\u6599\u89e3\u5bc6\uff0c\u8acb\u59a5\u5584\u4fdd\u5b58\uff0c\u907a\u5931\u5f8c\u5c07\u7121\u6cd5\u8b80\u53d6\u5df2\u52a0\u5bc6\u7684\u96f2\u7aef\u8cc7\u6599\u3002",ja:"\u65b0\u3057\u3044\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306f\u3001\u5f93\u6765\u306e\u5e73\u6587\u540c\u671f\u30c7\u30fc\u30bf\u3092\u6697\u53f7\u5316\u30c7\u30fc\u30bf\u3078\u81ea\u52d5\u79fb\u884c\u3057\u307e\u3059\u3002\u540c\u671f\u6697\u53f7\u5316\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306f\u30c7\u30fc\u30bf\u5fa9\u53f7\u5c02\u7528\u306b\u72ec\u7acb\u3057\u3066\u4f7f\u7528\u3055\u308c\u308b\u305f\u3081\u3001\u5b89\u5168\u306b\u4fdd\u7ba1\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u7d1b\u5931\u3059\u308b\u3068\u6697\u53f7\u5316\u6e08\u307f\u306e\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u306f\u8aad\u307f\u53d6\u308c\u307e\u305b\u3093\u3002",ko:"\uc0c8 \ubc84\uc804\uc740 \uae30\uc874 \uc77c\ubc18 \ud14d\uc2a4\ud2b8 \ub3d9\uae30\ud654 \ub370\uc774\ud130\ub97c \uc554\ud638\ud654 \ub370\uc774\ud130\ub85c \uc790\ub3d9 \ub9c8\uc774\uadf8\ub808\uc774\uc158\ud569\ub2c8\ub2e4. \ub3d9\uae30\ud654 \uc554\ud638\ud654 \uc554\ud638\ubb38\uc740 \ub370\uc774\ud130 \ubcf5\ud638\ud654\uc5d0 \ub3c5\ub9bd\uc801\uc73c\ub85c \uc0ac\uc6a9\ub418\ubbc0\ub85c \uc548\uc804\ud558\uac8c \ubcf4\uad00\ud558\uc138\uc694. \ubd84\uc2e4\ud558\uba74 \uc554\ud638\ud654\ub41c \ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\ub97c \uc77d\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",tr:"Yeni s\xfcr\xfcmler, eski d\xfcz metin senkronizasyon verilerini otomatik olarak \u015fifrelenmi\u015f verilere ta\u015f\u0131r. Senkronizasyon \u015fifreleme parolas\u0131, veri \u015fifresinin \xe7\xf6z\xfclmesi i\xe7in ba\u011f\u0131ms\u0131z olarak kullan\u0131l\u0131r"},about_sync_api:{zh:"\u81ea\u5efakiss-wroker\u6570\u636e\u540c\u6b65\u670d\u52a1",en:"Self-hosting a Kiss-worker data sync service",zh_TW:"\u81ea\u884c\u67b6\u8a2d kiss-worker \u8cc7\u6599\u540c\u6b65\u670d\u52d9",ja:"Kiss-worker \u30c7\u30fc\u30bf\u540c\u671f\u30b5\u30fc\u30d3\u30b9\u3092\u30bb\u30eb\u30d5\u30db\u30b9\u30c8\u3059\u308b",ko:"Kiss-worker \ub370\uc774\ud130 \ub3d9\uae30\ud654 \uc11c\ube44\uc2a4 \uc790\uccb4 \ud638\uc2a4\ud305",tr:"KISS-Worker Veri Senkronizasyon Hizmetini Kendi Kendine Bar\u0131nd\u0131rma"},about_api:{zh:"1\u3001\u5176\u4e2d BuiltinAI \u4e3a\u6d4f\u89c8\u5668\u5185\u7f6eAI\u7ffb\u8bd1\uff0c\u76ee\u524d\u4ec5 Chrome 138 \u53ca\u4ee5\u4e0a\u7248\u672c\u5f97\u5230\u652f\u6301\u3002",en:"1. BuiltinAI is the browser's built-in AI translation, which is currently only supported by Chrome 138 and above.",zh_TW:"1.\u5176\u4e2d BuiltinAI \u70ba\u700f\u89bd\u5668\u5167\u5efaAI\u7ffb\u8b6f\uff0c\u76ee\u524d\u50c5 Chrome 138 \u4ee5\u4e0a\u7248\u672c\u652f\u63f4\u3002",ja:"1. BuiltinAI \u306f\u30d6\u30e9\u30a6\u30b6\u5185\u8535\u306eAI\u7ffb\u8a33\u3067\u3001\u73fe\u5728 Chrome 138 \u4ee5\u964d\u306e\u30d0\u30fc\u30b8\u30e7\u30f3\u3067\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3055\u308c\u3066\u3044\u307e\u3059\u3002",ko:"1. BuiltinAI\ub294 \ube0c\ub77c\uc6b0\uc800 \ub0b4\uc7a5 AI \ubc88\uc5ed\uc73c\ub85c, \ud604\uc7ac Chrome 138 \uc774\uc0c1 \ubc84\uc804\uc5d0\uc11c\ub9cc \uc9c0\uc6d0\ub429\ub2c8\ub2e4.",tr:"1. BuiltinAI, taray\u0131c\u0131n\u0131n yerle\u015fik AI \xe7eviri \xf6zelli\u011fidir ve \u015fu anda yaln\u0131zca Chrome 138 ve \xfczeri s\xfcr\xfcmler taraf\u0131ndan desteklenmektedir."},about_api_2:{zh:"2\u3001\u5927\u90e8\u5206AI\u63a5\u53e3\u90fd\u4e0eOpenAI\u517c\u5bb9\uff0c\u56e0\u6b64\u9009\u62e9OpenAI\u7c7b\u578b\u5373\u53ef\u3002\u201c\u662f\u5426\u805a\u5408\u53d1\u9001\u7ffb\u8bd1\u8bf7\u6c42\u201d\u6240\u5bf9\u5e94\u7684 Prompt \u5e76\u4e0d\u76f8\u540c\uff0c\u5e76\u4e14\u4e0d\u662f\u6240\u6709\u63a5\u53e3\u90fd\u652f\u6301\u805a\u5408\u7ffb\u8bd1\u3002",en:"2. Most AI interfaces are compatible with OpenAI, so you can simply select the OpenAI type. The prompts corresponding to \u201cWhether to aggregate translation requests\u201d are different, and not all interfaces support aggregated translation.",zh_TW:"2. \u5927\u90e8\u5206\u7684 AI \u4ecb\u9762\u90fd\u8207 OpenAI \u76f8\u5bb9\uff0c\u56e0\u6b64\u9078\u64c7 OpenAI \u985e\u578b\u5373\u53ef\u3002\u300c\u662f\u5426\u5f59\u6574\u767c\u9001\u7ffb\u8b6f\u8acb\u6c42\u300d\u6240\u5c0d\u61c9\u7684 Prompt \u4e26\u4e0d\u76f8\u540c\uff0c\u4e26\u4e14\u4e0d\u662f\u6240\u6709\u4ecb\u9762\u90fd\u652f\u63f4\u5f59\u6574\u7ffb\u8b6f\u3002",ja:"2. \u307b\u3068\u3093\u3069\u306e AI \u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306f OpenAI \u3068\u4e92\u63db\u6027\u304c\u3042\u308b\u305f\u3081\u3001OpenAI \u30bf\u30a4\u30d7\u3092\u9078\u629e\u3059\u308c\u3070\u554f\u984c\u3042\u308a\u307e\u305b\u3093\u3002\u300c\u7ffb\u8a33\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u307e\u3068\u3081\u3066\u9001\u4fe1\u3059\u308b\u304b\u3069\u3046\u304b\u300d\u306b\u5bfe\u5fdc\u3059\u308b\u30d7\u30ed\u30f3\u30d7\u30c8\u306f\u7570\u306a\u308a\u3001\u3059\u3079\u3066\u306e\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u304c\u96c6\u7d04\u7ffb\u8a33\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002",ko:"2. \ub300\ubd80\ubd84\uc758 AI \uc778\ud130\ud398\uc774\uc2a4\ub294 OpenAI\uc640 \ud638\ud658\ub418\ubbc0\ub85c OpenAI \uc720\ud615\uc744 \uc120\ud0dd\ud558\uba74 \ub429\ub2c8\ub2e4. \u201c\ubc88\uc5ed \uc694\uccad\uc744 \uc9d1\ud569\uc801\uc73c\ub85c \ubcf4\ub0bc\uc9c0 \uc5ec\ubd80\u201d\uc5d0 \ub300\uc751\ud558\ub294 \ud504\ub86c\ud504\ud2b8\ub294 \uc11c\ub85c \ub2e4\ub974\uba70, \ubaa8\ub4e0 \uc778\ud130\ud398\uc774\uc2a4\uac00 \uc9d1\ud569 \ubc88\uc5ed\uc744 \uc9c0\uc6d0\ud558\ub294 \uac83\uc740 \uc544\ub2d9\ub2c8\ub2e4.",tr:'2. \xc7o\u011fu AI aray\xfcz\xfc OpenAI ile uyumludur, bu nedenle OpenAI t\xfcr\xfcn\xfc se\xe7meniz yeterlidir. "\xc7eviri isteklerinin birle\u015ftirilip birle\u015ftirilmeyece\u011fi" ile ilgili istemler farkl\u0131d\u0131r ve t\xfcm aray\xfczler birle\u015ftirilmi\u015f \xe7eviriyi desteklemez.'},about_api_3:{zh:"3\u3001\u7406\u8bba\u4e0a\uff0c\u6240\u6709\u7ffb\u8bd1\u63a5\u53e3\uff0c\u90fd\u53ef\u4ee5\u901a\u8fc7\u81ea\u5b9a\u4e49\u63a5\u53e3 (Custom) \u7684\u5f62\u5f0f\u4f7f\u7528\u3002",en:"3. In theory, all translation interfaces can be used by configuring them as a custom interface.",zh_TW:"3. \u7406\u8ad6\u4e0a\uff0c\u6240\u6709\u7ffb\u8b6f\u4ecb\u9762\u90fd\u53ef\u4ee5\u900f\u904e\u81ea\u8a02\u4ecb\u9762\uff08Custom\uff09\u7684\u65b9\u5f0f\u4f86\u4f7f\u7528\u3002",ja:"3. \u7406\u8ad6\u7684\u306b\u306f\u3001\u3059\u3079\u3066\u306e\u7ffb\u8a33\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306f\u30ab\u30b9\u30bf\u30e0\uff08Custom\uff09\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u3068\u3057\u3066\u8a2d\u5b9a\u3059\u308b\u3053\u3068\u3067\u5229\u7528\u3067\u304d\u307e\u3059\u3002",ko:"3. \uc774\ub860\uc801\uc73c\ub85c \ubaa8\ub4e0 \ubc88\uc5ed \uc778\ud130\ud398\uc774\uc2a4\ub294 \ucee4\uc2a4\ud140(Custom) \uc778\ud130\ud398\uc774\uc2a4\ub85c \uc124\uc815\ud558\uc5ec \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"3. Teorik olarak, t\xfcm \xe7eviri aray\xfczleri \xf6zel bir aray\xfcz olarak yap\u0131land\u0131r\u0131larak kullan\u0131labilir."},about_api_proxy:{zh:"\u67e5\u770b\u81ea\u5efa\u4e00\u4e2a\u7ffb\u8bd1\u63a5\u53e3\u4ee3\u7406",en:"Check out the self-built translation interface proxy",zh_TW:"\u6aa2\u8996\u5982\u4f55\u81ea\u884c\u67b6\u8a2d\u7ffb\u8b6f\u4ecb\u9762 Proxy",ja:"\u81ea\u4f5c\u306e\u7ffb\u8a33\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u30d7\u30ed\u30ad\u30b7\u3092\u30c1\u30a7\u30c3\u30af\u3059\u308b",ko:"\uc790\uccb4 \uad6c\ucd95 \ubc88\uc5ed \uc778\ud130\ud398\uc774\uc2a4 \ud504\ub85d\uc2dc \ud655\uc778\ud558\uae30",tr:"Kendi Olu\u015fturdu\u011funuz \xc7eviri Aray\xfcz\xfc Proxy'sine G\xf6z At\u0131n"},setting_helper:{zh:"\u65b0\u65e7\u914d\u7f6e\u5e76\u4e0d\u517c\u5bb9\uff0c\u5bfc\u51fa\u7684\u65e7\u7248\u914d\u7f6e\uff0c\u52ff\u518d\u6b21\u5bfc\u5165\u3002",en:"The old and new configurations are not compatible. Do not import the exported old configuration again.",zh_TW:"\u65b0\u820a\u8a2d\u5b9a\u4e26\u4e0d\u76f8\u5bb9\uff0c\u532f\u51fa\u7684\u820a\u7248\u8a2d\u5b9a\u8acb\u52ff\u518d\u6b21\u532f\u5165\u3002",ja:"\u65b0\u65e7\u306e\u8a2d\u5b9a\u306b\u4e92\u63db\u6027\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30a8\u30af\u30b9\u30dd\u30fc\u30c8\u3057\u305f\u53e4\u3044\u8a2d\u5b9a\u3092\u518d\u5ea6\u30a4\u30f3\u30dd\u30fc\u30c8\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002",ko:"\uc774\uc804 \uad6c\uc131\uacfc \uc0c8 \uad6c\uc131\uc740 \ud638\ud658\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub0b4\ubcf4\ub0b8 \uc774\uc804 \uad6c\uc131\uc744 \ub2e4\uc2dc \uac00\uc838\uc624\uc9c0 \ub9c8\uc2ed\uc2dc\uc624.",tr:"Eski ve yeni konfig\xfcrasyonlar uyumlu de\u011fildir. D\u0131\u015fa aktar\u0131lan eski konfig\xfcrasyonu tekrar i\xe7e aktarmay\u0131n."},style_none:{zh:"\u65e0",en:"None",zh_TW:"\u7121",ja:"\u306a\u3057",ko:"\uc5c6\uc74c",tr:"Hi\xe7biri"},under_line:{zh:"\u4e0b\u5212\u76f4\u7ebf",en:"Underline",zh_TW:"\u4e0b\u5283\u76f4\u7dda",ja:"\u4e0b\u7dda",ko:"\ubc11\uc904",tr:"Alt\u0131 \xc7izili"},dot_line:{zh:"\u4e0b\u5212\u70b9\u72b6\u7ebf",en:"Dotted Underline",zh_TW:"\u4e0b\u5283\u9ede\u72c0\u7dda",ja:"\u70b9\u7dda\u306e\u4e0b\u7dda",ko:"\uc810\uc120 \ubc11\uc904",tr:"Noktal\u0131 Alt \xc7izgi"},dash_line:{zh:"\u4e0b\u5212\u865a\u7ebf",en:"Dashed Underline",zh_TW:"\u4e0b\u5283\u865b\u7dda",ja:"\u7834\u7dda\u306e\u4e0b\u7dda",ko:"\ud30c\uc120 \ubc11\uc904",tr:"Kesikli Alt \xc7izgi"},dash_box:{zh:"\u865a\u7ebf\u6846",en:"Dashed Box",zh_TW:"\u865b\u7dda\u6846",ja:"\u7834\u7dda\u30dc\u30c3\u30af\u30b9",ko:"\ud30c\uc120 \uc0c1\uc790",tr:"Kesikli Kutu"},dash_line_bold:{zh:"\u4e0b\u5212\u865a\u7ebf\u52a0\u7c97",en:"Dashed Underline Bold",zh_TW:"\u4e0b\u5283\u865b\u7dda",ja:"\u7834\u7dda\u306e\u4e0b\u7dda (\u592a\u5b57)",ko:"\uad75\uc740 \ud30c\uc120 \ubc11\uc904",tr:"Kesikli Alt\u0131 \xc7izili Kal\u0131n"},dash_box_bold:{zh:"\u865a\u7ebf\u6846\u52a0\u7c97",en:"Dashed Box Bold",zh_TW:"\u865b\u7dda\u6846\u52a0\u7c97",ja:"\u7834\u7dda\u30dc\u30c3\u30af\u30b9 (\u592a\u5b57)",ko:"\uad75\uc740 \ud30c\uc120 \uc0c1\uc790",tr:"Kesikli Kutu Kal\u0131n"},marker:{zh:"\u9a6c\u514b\u7b14",en:"Marker",zh_TW:"\u99ac\u514b\u7b46",ja:"\u30de\u30fc\u30ab\u30fc",ko:"\ub9c8\ucee4",tr:"\u0130\u015faretleyici"},gradient_marker:{zh:"\u6e10\u53d8\u9a6c\u514b\u7b14",en:"Gradient Marker",zh_TW:"\u6f38\u5c64\u99ac\u514b\u7b46",ja:"\u30b0\u30e9\u30c7\u30fc\u30b7\u30e7\u30f3\u30de\u30fc\u30ab\u30fc",ko:"\uadf8\ub77c\ub370\uc774\uc158 \ub9c8\ucee4",tr:"Gradyan \u0130\u015faretleyici"},wavy_line:{zh:"\u4e0b\u5212\u6ce2\u6d6a\u7ebf",en:"Wavy Underline",zh_TW:"\u4e0b\u5283\u6ce2\u6d6a\u7dda",ja:"\u6ce2\u7dda\u306e\u4e0b\u7dda",ko:"\ubb3c\uacb0 \ubc11\uc904",tr:"Dalgal\u0131 Alt \xc7izgi"},wavy_line_bold:{zh:"\u4e0b\u5212\u6ce2\u6d6a\u7ebf\u52a0\u7c97",en:"Wavy Underline Bold",zh_TW:"\u4e0b\u5283\u6ce2\u6d6a\u7dda\u52a0\u7c97",ja:"\u6ce2\u7dda\u306e\u4e0b\u7dda (\u592a\u5b57)",ko:"\uad75\uc740 \ubb3c\uacb0 \ubc11\uc904",tr:"Dalgal\u0131 Alt\u0131 \xc7izili Kal\u0131n"},fuzzy:{zh:"\u6a21\u7cca",en:"Fuzzy",zh_TW:"\u6a21\u7cca",ja:"\u307c\u304b\u3057",ko:"\ud750\ub9bc",tr:"Bulan\u0131k"},highlight:{zh:"\u9ad8\u4eae",en:"Highlight",zh_TW:"\u53cd\u767d\u6a19\u793a",ja:"\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\ud558\uc774\ub77c\uc774\ud2b8",tr:"Vurgu"},blockquote:{zh:"\u5f15\u7528",en:"Blockquote",zh_TW:"\u5f15\u7528",ja:"\u5f15\u7528",ko:"\uc778\uc6a9",tr:"Blok Al\u0131nt\u0131"},gradient:{zh:"\u6e10\u53d8",en:"Gradient",zh_TW:"\u6f38\u8b8a",ja:"\u30b0\u30e9\u30c7\u30fc\u30b7\u30e7\u30f3",ko:"\uadf8\ub77c\ub370\uc774\uc158",tr:"Gradyan"},blink:{zh:"\u95ea\u73b0",en:"Blink",zh_TW:"\u9583\u73fe",ja:"\u70b9\u6ec5",ko:"\uae5c\ubc15\uc784",tr:"I\u015f\u0131lt\u0131"},glow:{zh:"\u53d1\u5149",en:"Glow",zh_TW:"\u767c\u5149",ja:"\u767a\u5149",ko:"\ubc1c\uad11",tr:"Par\u0131lt\u0131"},colorful:{zh:"\u591a\u5f69",en:"Colorful",zh_TW:"\u591a\u5f69",ja:"\u30ab\u30e9\u30d5\u30eb",ko:"\ub2e4\ucc44\ub86d\uac8c",tr:"Renkli"},setting:{zh:"\u8bbe\u7f6e",en:"Setting",zh_TW:"\u8a2d\u5b9a",ja:"\u8a2d\u5b9a",ko:"\uc124\uc815",tr:"Ayar"},pattern:{zh:"\u5339\u914d\u7f51\u5740",en:"URL pattern",zh_TW:"\u5339\u914d\u7db2\u5740",ja:"URL\u30d1\u30bf\u30fc\u30f3",ko:"URL \ud328\ud134",tr:"URL Modeli"},pattern_helper:{zh:"1\u3001\u652f\u6301\u661f\u53f7(*)\u901a\u914d\u7b26\u30022\u3001\u591a\u4e2aURL\u7528\u6362\u884c\u6216\u82f1\u6587\u9017\u53f7\u201c,\u201d\u5206\u9694\u3002",en:'1. Supports the asterisk (*) wildcard character. 2. Separate multiple URLs with newlines or English commas ",".',zh_TW:"1. \u652f\u63f4\u661f\u865f (*) \u842c\u7528\u5b57\u5143\u30022. \u591a\u500b URL \u8acb\u4ee5\u63db\u884c\u6216\u82f1\u6587\u9017\u865f\u300c,\u300d\u5206\u9694\u3002",ja:"1. \u30a2\u30b9\u30bf\u30ea\u30b9\u30af (*) \u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002 2. \u8907\u6570\u306eURL\u306f\u6539\u884c\u307e\u305f\u306f\u82f1\u8a9e\u306e\u30b3\u30f3\u30de\u300c,\u300d\u3067\u533a\u5207\u308a\u307e\u3059\u3002",ko:'1. \ubcc4\ud45c(*) \uc640\uc77c\ub4dc\uce74\ub4dc \ubb38\uc790\ub97c \uc9c0\uc6d0\ud569\ub2c8\ub2e4. 2. \uc5ec\ub7ec URL\uc740 \uc904\ubc14\uafc8 \ub610\ub294 \uc601\uc5b4 \uc27c\ud45c ","\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4.',tr:"1. Y\u0131ld\u0131z (*) Joker Karakterini Destekler. 2. Birden Fazla URL'Yi Yeni Sat\u0131rlarla Veya Virg\xfcllerle Ay\u0131r\u0131n \""},selector_helper:{zh:"1\u3001\u9700\u8981\u7ffb\u8bd1\u7684\u76ee\u6807\u5143\u7d20\u30022\u3001\u5f00\u542f\u81ea\u52a8\u626b\u63cf\u9875\u9762\u540e\uff0c\u672c\u8bbe\u7f6e\u65e0\u6548\u30023\u3001\u9075\u5faaCSS\u9009\u62e9\u5668\u8bed\u6cd5\u3002",en:"1. The target element to be translated. 2. This setting is invalid when automatic page scanning is enabled. 3. Follow the CSS selector syntax.",zh_TW:"1\u3001\u9700\u8981\u7ffb\u8b6f\u7684\u76ee\u6a19\u5143\u7d20\u3002 2.\u958b\u555f\u81ea\u52d5\u6383\u63cf\u9801\u9762\u5f8c\uff0c\u672c\u8a2d\u5b9a\u7121\u6548\u3002 3.\u9075\u5faaCSS\u9078\u64c7\u5668\u8a9e\u6cd5\u3002",ja:"1. \u7ffb\u8a33\u5bfe\u8c61\u306e\u8981\u7d20\u3002 2. \u30da\u30fc\u30b8\u306e\u81ea\u52d5\u30b9\u30ad\u30e3\u30f3\u3092\u6709\u52b9\u306b\u3059\u308b\u3068\u3001\u3053\u306e\u8a2d\u5b9a\u306f\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\u3002 3. CSS\u30bb\u30ec\u30af\u30bf\u69cb\u6587\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:"1. \ubc88\uc5ed\ud560 \ub300\uc0c1 \uc694\uc18c\uc785\ub2c8\ub2e4. 2. \uc790\ub3d9 \ud398\uc774\uc9c0 \uc2a4\uce94\uc774 \ud65c\uc131\ud654\ub418\uba74 \uc774 \uc124\uc815\uc740 \ubb34\ud6a8\ud654\ub429\ub2c8\ub2e4. 3. CSS \uc120\ud0dd\uc790 \uad6c\ubb38\uc744 \ub530\ub985\ub2c8\ub2e4.",tr:"1. \xc7evrilecek hedef \xf6\u011fe. 2. Otomatik sayfa tarama etkinle\u015ftirildi\u011finde bu ayar ge\xe7ersizdir. 3. CSS se\xe7ici s\xf6zdizimini takip edin."},translate_switch:{zh:"\u5f00\u542f\u7ffb\u8bd1",en:"Translate Switch",zh_TW:"\u958b\u555f\u7ffb\u8b6f",ja:"\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ubc88\uc5ed \ucf1c\uae30",tr:"\xc7eviri Anahtar\u0131"},default_enabled:{zh:"\u9ed8\u8ba4\u5f00\u542f",en:"Enabled",zh_TW:"\u9810\u8a2d\u958b\u555f",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u6709\u52b9",ko:"\uae30\ubcf8\uc73c\ub85c \uc0ac\uc6a9",tr:"Etkin"},default_disabled:{zh:"\u9ed8\u8ba4\u5173\u95ed",en:"Disabled",zh_TW:"\u9810\u8a2d\u95dc\u9589",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u7121\u52b9",ko:"\uae30\ubcf8\uc73c\ub85c \uc0ac\uc6a9 \uc548\ud568",tr:"Devre D\u0131\u015f\u0131"},selector:{zh:"\u9009\u62e9\u5668",en:"Selector",zh_TW:"\u9078\u64c7\u5668",ja:"\u30bb\u30ec\u30af\u30bf",ko:"\uc120\ud0dd\uc790",tr:"Se\xe7ici"},target_selector:{zh:"\u76ee\u6807\u5143\u7d20\u9009\u62e9\u5668",en:"Target element selector",zh_TW:"\u76ee\u6a19\u5143\u7d20\u9078\u64c7\u5668",ja:"\u5bfe\u8c61\u8981\u7d20\u30bb\u30ec\u30af\u30bf",ko:"\ub300\uc0c1 \uc694\uc18c \uc120\ud0dd\uc790",tr:"Hedef \xd6\u011fe Se\xe7ici"},keep_selector:{zh:"\u4fdd\u7559\u5143\u7d20\u9009\u62e9\u5668",en:"Keep unchanged selector",zh_TW:"\u4fdd\u7559\u5143\u7d20\u9078\u64c7\u5668",ja:"\u4fdd\u6301\u8981\u7d20\u30bb\u30ec\u30af\u30bf",ko:"\uc720\uc9c0\ud560 \uc694\uc18c \uc120\ud0dd\uc790",tr:"Se\xe7iciyi De\u011fi\u015ftirmeden Tut"},keep_selector_helper:{zh:"1\u3001\u76ee\u6807\u5143\u7d20\u4e0b\u9762\u9700\u8981\u539f\u6837\u4fdd\u7559\u7684\u5b50\u8282\u70b9\u30022\u3001\u9075\u5faaCSS\u9009\u62e9\u5668\u8bed\u6cd5\u3002",en:"1. The child nodes under the target element need to remain intact. 2. Follow the CSS selector syntax.",zh_TW:"1. \u76ee\u6a19\u5143\u7d20\u4e0b\u7684\u5b50\u7bc0\u9ede\u9700\u8981\u4fdd\u6301\u539f\u6a23\u3002 2. \u9075\u5faa CSS \u9078\u64c7\u5668\u8a9e\u6cd5\u3002",ja:"1. \u5bfe\u8c61\u8981\u7d20\u306e\u4e0b\u306b\u3042\u308b\u3001\u305d\u306e\u307e\u307e\u4fdd\u6301\u3059\u308b\u5fc5\u8981\u304c\u3042\u308b\u5b50\u30ce\u30fc\u30c9\u3002 2. CSS\u30bb\u30ec\u30af\u30bf\u69cb\u6587\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:"1. \ub300\uc0c1 \uc694\uc18c \uc544\ub798\uc758 \uc790\uc2dd \ub178\ub4dc \uc911 \uadf8\ub300\ub85c \uc720\uc9c0\ud574\uc57c \ud558\ub294 \ub178\ub4dc. 2. CSS \uc120\ud0dd\uc790 \uad6c\ubb38\uc744 \ub530\ub985\ub2c8\ub2e4.",tr:"1. Hedef \xf6\u011fenin alt\u0131ndaki alt d\xfc\u011f\xfcmlerin sa\u011flam kalmas\u0131 gerekir. 2. CSS se\xe7ici s\xf6zdizimini takip edin."},block_selector:{zh:"\u5757\u7ea7\u5143\u7d20\u9009\u62e9\u5668",en:"Block element selector",zh_TW:"\u5340\u584a\u5143\u7d20\u9078\u64c7\u5668",ja:"\u30d6\u30ed\u30c3\u30af\u8981\u7d20\u30bb\u30ec\u30af\u30bf",ko:"\ube14\ub85d \uc694\uc18c \uc120\ud0dd\uc790",tr:"Blok \xd6\u011fe Se\xe7ici"},block_selector_helper:{zh:"1\u3001\u5339\u914d\u5230\u7684\u5143\u7d20\u4f1a\u88ab\u5f53\u4f5c\u5757\u7ea7\u8282\u70b9\u5904\u7406\u30022\u3001\u9075\u5faaCSS\u9009\u62e9\u5668\u8bed\u6cd5\u3002",en:"1. Matched elements will be treated as block nodes. 2. Follow the CSS selector syntax.",zh_TW:"1. \u7b26\u5408\u7684\u5143\u7d20\u6703\u88ab\u7576\u4f5c\u5340\u584a\u7bc0\u9ede\u8655\u7406\u30022. \u9075\u5faa CSS \u9078\u64c7\u5668\u8a9e\u6cd5\u3002",ja:"1. \u4e00\u81f4\u3057\u305f\u8981\u7d20\u306f\u30d6\u30ed\u30c3\u30af\u30ce\u30fc\u30c9\u3068\u3057\u3066\u6271\u308f\u308c\u307e\u3059\u30022. CSS\u30bb\u30ec\u30af\u30bf\u69cb\u6587\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:"1. \uc77c\uce58\ud558\ub294 \uc694\uc18c\ub294 \ube14\ub85d \ub178\ub4dc\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4. 2. CSS \uc120\ud0dd\uc790 \uad6c\ubb38\uc744 \ub530\ub974\uc138\uc694.",tr:"1. E\u015fle\u015fen \xf6\u011feler blok d\xfc\u011f\xfcmleri olarak ele al\u0131nacakt\u0131r. 2. CSS se\xe7ici s\xf6zdizimini takip edin."},root_selector:{zh:"\u6839\u8282\u70b9\u9009\u62e9\u5668",en:"Root node selector",zh_TW:"\u6839\u7bc0\u9ede\u9078\u64c7\u5668",ja:"\u30eb\u30fc\u30c8\u30ce\u30fc\u30c9\u30bb\u30ec\u30af\u30bf",ko:"\ub8e8\ud2b8 \ub178\ub4dc \uc120\ud0dd\uc790",tr:"K\xf6k D\xfc\u011f\xfcm Se\xe7ici"},root_selector_helper:{zh:"1\u3001\u7528\u4e8e\u7f29\u5c0f\u9875\u9762\u7ffb\u8bd1\u8303\u56f4\u30022\u3001\u9075\u5faaCSS\u9009\u62e9\u5668\u8bed\u6cd5\u3002",en:"1. Used to narrow the translation scope of the page. 2. Follow the CSS selector syntax.",zh_TW:"1.\u7528\u65bc\u7e2e\u5c0f\u9801\u9762\u7ffb\u8b6f\u7bc4\u570d\u3002 2\u3001\u9075\u5faaCSS\u9078\u64c7\u5668\u8a9e\u6cd5\u3002",ja:"1. \u30da\u30fc\u30b8\u306e\u7ffb\u8a33\u7bc4\u56f2\u3092\u7d5e\u308a\u8fbc\u3080\u305f\u3081\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002 2. CSS\u30bb\u30ec\u30af\u30bf\u69cb\u6587\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:"1. \ud398\uc774\uc9c0\uc758 \ubc88\uc5ed \ubc94\uc704\ub97c \uc881\ud788\ub294 \ub370 \uc0ac\uc6a9\ub429\ub2c8\ub2e4. 2. CSS \uc120\ud0dd\uc790 \uad6c\ubb38\uc744 \ub530\ub985\ub2c8\ub2e4.",tr:"1. Sayfan\u0131n \xe7eviri kapsam\u0131n\u0131 daraltmak i\xe7in kullan\u0131l\u0131r. 2. CSS se\xe7ici s\xf6zdizimini takip edin."},ignore_selector:{zh:"\u4e0d\u7ffb\u8bd1\u8282\u70b9\u9009\u62e9\u5668",en:"Ignore node selectors",zh_TW:"\u4e0d\u7ffb\u8b6f\u7bc0\u9ede\u9078\u64c7\u5668",ja:"\u7ffb\u8a33\u3057\u306a\u3044\u30ce\u30fc\u30c9\u30bb\u30ec\u30af\u30bf",ko:"\ubc88\uc5ed \ubb34\uc2dc \ub178\ub4dc \uc120\ud0dd\uc790",tr:"D\xfc\u011f\xfcm Se\xe7icileri Yoksay"},ignore_selector_helper:{zh:"1\u3001\u9700\u8981\u5ffd\u7565\u7684\u8282\u70b9\u30022\u3001\u9075\u5faaCSS\u9009\u62e9\u5668\u8bed\u6cd5\u3002",en:"1. Nodes to be ignored. 2. Follow CSS selector syntax.",zh_TW:"1\u3001\u9700\u8981\u5ffd\u7565\u7684\u7bc0\u9ede\u3002 2\u3001\u9075\u5faaCSS\u9078\u64c7\u5668\u8a9e\u6cd5\u3002",ja:"1. \u7121\u8996\u3059\u308b\u30ce\u30fc\u30c9\u3002 2. CSS\u30bb\u30ec\u30af\u30bf\u69cb\u6587\u306b\u5f93\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:"1. \ubb34\uc2dc\ud560 \ub178\ub4dc. 2. CSS \uc120\ud0dd\uc790 \uad6c\ubb38\uc744 \ub530\ub985\ub2c8\ub2e4.",tr:"1. G\xf6z ard\u0131 edilecek d\xfc\u011f\xfcmler. 2. CSS se\xe7ici s\xf6zdizimini takip edin."},terms:{zh:"\u4e13\u4e1a\u672f\u8bed",en:"Terms",zh_TW:"\u5c08\u696d\u8853\u8a9e",ja:"\u5c02\u9580\u7528\u8a9e",ko:"\uc804\ubb38 \uc6a9\uc5b4",tr:"\u015eartlar"},terms_helper:{zh:"1\u3001\u652f\u6301\u6b63\u5219\u8868\u8fbe\u5f0f\u5339\u914d\uff0c\u65e0\u9700\u659c\u6746\uff0c\u4e0d\u652f\u6301\u4fee\u9970\u7b26\u30022\u3001\u591a\u6761\u672f\u8bed\u7528\u6362\u884c\u6216\u5206\u53f7\u201c;\u201d\u9694\u5f00\u30023\u3001\u672f\u8bed\u548c\u8bd1\u6587\u7528\u82f1\u6587\u9017\u53f7\u201c,\u201d\u9694\u5f00\u30024\u3001\u6ca1\u6709\u8bd1\u6587\u89c6\u4e3a\u4e0d\u7ffb\u8bd1\u672f\u8bed\u3002",en:'1. Supports regular expression matching, no slash required, and no modifiers are supported. 2. Separate multiple terms with newlines or semicolons ";". 3. Terms and translations are separated by English commas ",". 4. If there is no translation, the term will be deemed not to be translated.',zh_TW:"1. \u652f\u63f4\u6b63\u898f\u8868\u793a\u5f0f\u6bd4\u5c0d\uff0c\u4e0d\u9700\u659c\u7dda\uff0c\u4e14\u4e0d\u652f\u63f4\u4fee\u98fe\u7b26\u30022. \u591a\u689d\u8853\u8a9e\u4ee5\u63db\u884c\u6216\u5206\u865f\u300c;\u300d\u5206\u9694\u30023. \u8853\u8a9e\u8207\u8b6f\u6587\u4ee5\u82f1\u6587\u9017\u865f\u300c,\u300d\u5206\u9694\u30024. \u7121\u8b6f\u6587\u8005\u8996\u70ba\u4e0d\u7ffb\u8b6f\u8a72\u8853\u8a9e\u3002",ja:"1. \u6b63\u898f\u8868\u73fe\u30de\u30c3\u30c1\u30f3\u30b0\u3092\u30b5\u30dd\u30fc\u30c8 (\u30b9\u30e9\u30c3\u30b7\u30e5\u4e0d\u8981\u3001\u4fee\u98fe\u5b50\u975e\u5bfe\u5fdc)\u3002 2. \u8907\u6570\u306e\u7528\u8a9e\u306f\u6539\u884c\u307e\u305f\u306f\u30bb\u30df\u30b3\u30ed\u30f3\u300c;\u300d\u3067\u533a\u5207\u308a\u307e\u3059\u3002 3. \u7528\u8a9e\u3068\u7ffb\u8a33\u306f\u82f1\u8a9e\u306e\u30b3\u30f3\u30de\u300c,\u300d\u3067\u533a\u5207\u308a\u307e\u3059\u3002 4. \u7ffb\u8a33\u304c\u306a\u3044\u5834\u5408\u306f\u3001\u305d\u306e\u7528\u8a9e\u3092\u7ffb\u8a33\u3057\u306a\u3044\u3082\u306e\u3068\u307f\u306a\u3057\u307e\u3059\u3002",ko:'1. \uc815\uaddc\uc2dd \uc77c\uce58\ub97c \uc9c0\uc6d0\ud558\uba70, \uc2ac\ub798\uc2dc\uac00 \ud544\uc694 \uc5c6\uace0 \uc218\uc815\uc790\ub294 \uc9c0\uc6d0\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. 2. \uc5ec\ub7ec \uc6a9\uc5b4\ub294 \uc904\ubc14\uafc8 \ub610\ub294 \uc138\ubbf8\ucf5c\ub860 ";"\uc73c\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4. 3. \uc6a9\uc5b4\uc640 \ubc88\uc5ed\uc740 \uc601\uc5b4 \uc27c\ud45c ","\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4. 4. \ubc88\uc5ed\uc774 \uc5c6\ub294 \uacbd\uc6b0 \ud574\ub2f9 \uc6a9\uc5b4\ub97c \ubc88\uc5ed\ud558\uc9c0 \uc54a\ub294 \uac83\uc73c\ub85c \uac04\uc8fc\ud569\ub2c8\ub2e4.',tr:'1. D\xfczenli ifade e\u015fle\u015ftirmeyi destekler, e\u011fik \xe7izgi gerekmez ve de\u011fi\u015ftiriciler desteklenmez. 2. Birden fazla terim yeni sat\u0131r veya noktal\u0131 virg\xfcl ";" ile ayr\u0131l\u0131r. 3. Terimler ve \xe7eviriler \u0130ngilizce virg\xfcl "," ile ayr\u0131l\u0131r. 4. \xc7eviri yoksa, terim \xe7evrilmemi\u015f olarak kabul edilir.'},ai_terms:{zh:"AI\u4e13\u4e1a\u672f\u8bed",en:"AI Terms",zh_TW:"AI\u5c08\u696d\u8853\u8a9e",ja:"AI\u5c02\u9580\u7528\u8a9e",ko:"AI \uc804\ubb38 \uc6a9\uc5b4",tr:"AI \u015eartlar\u0131"},ai_terms_helper:{zh:"1\u3001AI\u667a\u80fd\u66ff\u6362\uff0c\u4e0d\u652f\u6301\u6b63\u5219\u8868\u8fbe\u5f0f\u30022\u3001\u591a\u6761\u672f\u8bed\u7528\u6362\u884c\u6216\u5206\u53f7\u201c;\u201d\u9694\u5f00\u30023\u3001\u672f\u8bed\u548c\u8bd1\u6587\u7528\u82f1\u6587\u9017\u53f7\u201c,\u201d\u9694\u5f00\u30024\u3001\u6ca1\u6709\u8bd1\u6587\u89c6\u4e3a\u4e0d\u7ffb\u8bd1\u672f\u8bed\u3002",en:'1. AI intelligent replacement does not support regular expressions.2. Separate multiple terms with newlines or semicolons ";". 3. Terms and translations are separated by English commas ",". 4. If there is no translation, the term will be deemed not to be translated.',zh_TW:"1. AI \u667a\u6167\u66ff\u63db\uff0c\u4e0d\u652f\u63f4\u6b63\u898f\u8868\u793a\u5f0f\u30022. \u591a\u689d\u8853\u8a9e\u4ee5\u63db\u884c\u6216\u5206\u865f\u300c;\u300d\u5206\u9694\u30023. \u8853\u8a9e\u8207\u8b6f\u6587\u4ee5\u82f1\u6587\u9017\u865f\u300c,\u300d\u5206\u9694\u30024. \u7121\u8b6f\u6587\u8005\u8996\u70ba\u4e0d\u7ffb\u8b6f\u8a72\u8853\u8a9e\u3002",ja:"1. AI\u306b\u3088\u308b\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u306a\u7f6e\u63db (\u6b63\u898f\u8868\u73fe\u975e\u5bfe\u5fdc)\u3002 2. \u8907\u6570\u306e\u7528\u8a9e\u306f\u6539\u884c\u307e\u305f\u306f\u30bb\u30df\u30b3\u30ed\u30f3\u300c;\u300d\u3067\u533a\u5207\u308a\u307e\u3059\u3002 3. \u7528\u8a9e\u3068\u7ffb\u8a33\u306f\u82f1\u8a9e\u306e\u30b3\u30f3\u30de\u300c,\u300d\u3067\u533a\u5207\u308a\u307e\u3059\u3002 4. \u7ffb\u8a33\u304c\u306a\u3044\u5834\u5408\u306f\u3001\u305d\u306e\u7528\u8a9e\u3092\u7ffb\u8a33\u3057\u306a\u3044\u3082\u306e\u3068\u307f\u306a\u3057\u307e\u3059\u3002",ko:'1. AI \uc9c0\ub2a5\ud615 \ub300\uccb4, \uc815\uaddc\uc2dd\uc744 \uc9c0\uc6d0\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. 2. \uc5ec\ub7ec \uc6a9\uc5b4\ub294 \uc904\ubc14\uafc8 \ub610\ub294 \uc138\ubbf8\ucf5c\ub860 ";"\uc73c\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4. 3. \uc6a9\uc5b4\uc640 \ubc88\uc5ed\uc740 \uc601\uc5b4 \uc27c\ud45c ","\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4. 4. \ubc88\uc5ed\uc774 \uc5c6\ub294 \uacbd\uc6b0 \ud574\ub2f9 \uc6a9\uc5b4\ub97c \ubc88\uc5ed\ud558\uc9c0 \uc54a\ub294 \uac83\uc73c\ub85c \uac04\uc8fc\ud569\ub2c8\ub2e4.',tr:'1. Yapay Zek\xe2 Destekli Ak\u0131ll\u0131 De\u011fi\u015ftirme, D\xfczenli Ifadeleri Desteklemez. 2. Birden Fazla Terim, Yeni Sat\u0131r Veya Noktal\u0131 Virg\xfcl ";" Ile Ayr\u0131lmal\u0131d\u0131r. 3. Terimler Ve \xc7eviriler, \u0130ngilizce Virg\xfcl "," Ile Ayr\u0131lmal\u0131d\u0131r. 4. \xc7eviri Yoksa, Terim \xc7evrilmemi\u015f Olarak Kabul Edilecektir."'},text_ext_style:{zh:"\u8bd1\u6587\u9644\u52a0\u6837\u5f0f",en:"Translation additional styles",zh_TW:"\u8b6f\u6587\u9644\u52a0\u6a23\u5f0f",ja:"\u7ffb\u8a33\u306e\u8ffd\u52a0\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed \ucd94\uac00 \uc2a4\ud0c0\uc77c",tr:"\xc7eviriye Ek Stiller"},selector_style:{zh:"\u9009\u62e9\u5668\u8282\u70b9\u6837\u5f0f",en:"Selector Style",zh_TW:"\u9078\u64c7\u5668\u7bc0\u9ede\u6a23\u5f0f",ja:"\u30bb\u30ec\u30af\u30bf\u30ce\u30fc\u30c9\u30b9\u30bf\u30a4\u30eb",ko:"\uc120\ud0dd\uc790 \ub178\ub4dc \uc2a4\ud0c0\uc77c",tr:"Se\xe7ici Stili"},terms_style:{zh:"\u4e13\u4e1a\u672f\u8bed\u6837\u5f0f",en:"Terms Style",zh_TW:"\u5c08\u696d\u8853\u8a9e\u6a23\u5f0f",ja:"\u5c02\u9580\u7528\u8a9e\u30b9\u30bf\u30a4\u30eb",ko:"\uc804\ubb38 \uc6a9\uc5b4 \uc2a4\ud0c0\uc77c",tr:"Terimler Stili"},highlight_style:{zh:"\u8bcd\u6c47\u9ad8\u4eae\u6837\u5f0f",en:"Fav Words highlight style",zh_TW:"\u8a5e\u5f59\u9192\u76ee\u6a19\u793a\u6a23\u5f0f",ja:"\u5358\u8a9e\u30cf\u30a4\u30e9\u30a4\u30c8\u30b9\u30bf\u30a4\u30eb",ko:"\ub2e8\uc5b4 \ud558\uc774\ub77c\uc774\ud2b8 \uc2a4\ud0c0\uc77c",tr:"Favori Kelimeler Vurgu Stili"},selector_style_helper:{zh:"\u5f00\u542f\u7ffb\u8bd1\u65f6\u6ce8\u5165\u3002",en:"It is injected when translation is turned on.",zh_TW:"\u5728\u958b\u555f\u7ffb\u8b6f\u6642\u6ce8\u5165\u3002",ja:"\u7ffb\u8a33\u304c\u6709\u52b9\u306a\u3068\u304d\u306b\u6ce8\u5165\u3055\u308c\u307e\u3059\u3002",ko:"\ubc88\uc5ed\uc774 \ucf1c\uc838 \uc788\uc744 \ub54c \uc8fc\uc785\ub429\ub2c8\ub2e4.",tr:"\xc7eviri a\xe7\u0131ld\u0131\u011f\u0131nda enjekte edilir."},selector_parent_style:{zh:"\u9009\u62e9\u5668\u7236\u8282\u70b9\u6837\u5f0f",en:"Parent Selector Style",zh_TW:"\u9078\u64c7\u5668\u7236\u7bc0\u9ede\u6a23\u5f0f",ja:"\u89aa\u30bb\u30ec\u30af\u30bf\u30b9\u30bf\u30a4\u30eb",ko:"\ubd80\ubaa8 \uc120\ud0dd\uc790 \uc2a4\ud0c0\uc77c",tr:"Ebeveyn Se\xe7ici Stili"},selector_grand_style:{zh:"\u9009\u62e9\u5668\u7956\u8282\u70b9\u6837\u5f0f",en:"Grand Selector Style",zh_TW:"\u9078\u64c7\u5668\u7956\u7bc0\u9ede\u6a23\u5f0f",ja:"\u7956\u5148\u30bb\u30ec\u30af\u30bf\u30b9\u30bf\u30a4\u30eb",ko:"\uc0c1\uc704 \uc120\ud0dd\uc790 \uc2a4\ud0c0\uc77c",tr:"\xdcst Se\xe7ici Stili"},inject_js:{zh:"\u6ce8\u5165JS",en:"Inject JS",zh_TW:"\u6ce8\u5165 JS",ja:"JS\u3092\u6ce8\u5165",ko:"JS \uc8fc\uc785",tr:"JS'yi Enjekte Et"},inject_js_helper:{zh:"\u9884\u52a0\u8f7d\u65f6\u6ce8\u5165\uff0c\u4e00\u4e2a\u9875\u9762\u4ec5\u8fd0\u884c\u4e00\u6b21\u3002\u5185\u7f6e\u5168\u5c40\u5bf9\u8c61 KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }",en:"Injected during preload, runs only once per page. Built-in global object KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }",zh_TW:"\u9810\u5148\u8f09\u5165\u6642\u6ce8\u5165\uff0c\u4e00\u500b\u9801\u9762\u50c5\u57f7\u884c\u4e00\u6b21\u3002\u5167\u5efa\u5168\u57df\u7269\u4ef6 KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }",ja:"\u30d7\u30ea\u30ed\u30fc\u30c9\u6642\u306b\u6ce8\u5165\u3055\u308c\u3001\u30da\u30fc\u30b8\u3054\u3068\u306b1\u56de\u3060\u3051\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002\u7d44\u307f\u8fbc\u307f\u30b0\u30ed\u30fc\u30d0\u30eb\u30aa\u30d6\u30b8\u30a7\u30af\u30c8 KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }",ko:"\ubbf8\ub9ac \ub85c\ub4dc \uc2dc \uc8fc\uc785\ub418\uba70 \ud398\uc774\uc9c0\ub2f9 \ud55c \ubc88\ub9cc \uc2e4\ud589\ub429\ub2c8\ub2e4. \ub0b4\uc7a5 \uc804\uc5ed \uac1d\uccb4 KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }",tr:"\xd6n y\xfckleme s\u0131ras\u0131nda enjekte edilir, sayfa ba\u015f\u0131na yaln\u0131zca bir kez \xe7al\u0131\u015f\u0131r. Dahili global nesne KT: {\n apiTranslate,\n apiDectect,\n apiSetting,\n apisMap,\n toLang,\n docInfo,\n glossary,\n }"},inject_css:{zh:"\u6ce8\u5165CSS",en:"Inject CSS",zh_TW:"\u6ce8\u5165 CSS",ja:"CSS\u3092\u6ce8\u5165",ko:"CSS \uc8fc\uc785",tr:"CSS'yi Enjekte Et"},inject_css_helper:{zh:"\u9884\u52a0\u8f7d\u65f6\u6ce8\u5165\uff0c\u4e00\u4e2a\u9875\u9762\u4ec5\u8fd0\u884c\u4e00\u6b21\u3002",en:"Injected during preload, runs only once per page.",zh_TW:"\u9810\u5148\u8f09\u5165\u6642\u6ce8\u5165\uff0c\u4e00\u500b\u9801\u9762\u50c5\u57f7\u884c\u4e00\u6b21\u3002",ja:"\u30d7\u30ea\u30ed\u30fc\u30c9\u6642\u306b\u6ce8\u5165\u3055\u308c\u3001\u30da\u30fc\u30b8\u3054\u3068\u306b1\u56de\u3060\u3051\u5b9f\u884c\u3055\u308c\u307e\u3059\u3002",ko:"\ubbf8\ub9ac \ub85c\ub4dc \uc2dc \uc8fc\uc785\ub418\uba70 \ud398\uc774\uc9c0\ub2f9 \ud55c \ubc88\ub9cc \uc2e4\ud589\ub429\ub2c8\ub2e4.",tr:"\xd6n y\xfckleme s\u0131ras\u0131nda enjekte edildi"},fixer_function:{zh:"\u4fee\u590d\u51fd\u6570",en:"Fixer Function",zh_TW:"\u4fee\u5fa9\u51fd\u5f0f",ja:"\u4fee\u6b63\u95a2\u6570",ko:"\uc218\uc815 \ud568\uc218",tr:"Onar\u0131c\u0131 Fonksiyonu"},fixer_function_helper:{zh:'1\u3001br\u662f\u5c06
\u6362\u884c\u66ff\u6362\u6210

\u30022\u3001bn\u662f\u5c06\\n\u6362\u884c\u66ff\u6362\u6210

\u30023\u3001brToDiv\u548cbnToDiv\u662f\u66ff\u6362\u6210

\u3002',en:'1. br replaces
line breaks with

. 2. bn replaces \\n newline with

. 3. brToDiv and bnToDiv are replaced with

.',zh_TW:'1. br \u6703\u5c07
\u63db\u884c\u66ff\u63db\u70ba

\u30022. bn \u6703\u5c07 \\n \u63db\u884c\u66ff\u63db\u70ba

\u30023. brToDiv \u8207 bnToDiv \u6703\u66ff\u63db\u70ba

\u3002',ja:'1. br \u306f
\u6539\u884c\u3092

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002 2. bn \u306f \\n \u6539\u884c\u3092

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002 3. brToDiv \u3068 bnToDiv \u306f

\u306b\u7f6e\u304d\u63db\u3048\u307e\u3059\u3002',ko:'1. br\uc740
\uc904\ubc14\uafc8\uc744

\ub85c \ub300\uccb4\ud569\ub2c8\ub2e4. 2. bn\uc740 \\n \uc904\ubc14\uafc8\uc744

\ub85c \ub300\uccb4\ud569\ub2c8\ub2e4. 3. brToDiv \ubc0f bnToDiv\ub294

\ub85c \ub300\uccb4\ub429\ub2c8\ub2e4.',tr:'1. br,
sat\u0131r sonlar\u0131n\u0131

ile de\u011fi\u015ftirir. 2. bn, \\n yeni sat\u0131r\u0131

ile de\u011fi\u015ftirir. 3. brToDiv ve bnToDiv,

ile de\u011fi\u015ftirildi.'},import:{zh:"\u5bfc\u5165",en:"Import",zh_TW:"\u532f\u5165",ja:"\u30a4\u30f3\u30dd\u30fc\u30c8",ko:"\uac00\uc838\uc624\uae30",tr:"\u0130\xe7e Aktar"},export:{zh:"\u5bfc\u51fa",en:"Export",zh_TW:"\u532f\u51fa",ja:"\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\ub0b4\ubcf4\ub0b4\uae30",tr:"D\u0131\u015fa Aktar"},export_translation:{zh:"\u5bfc\u51fa\u91ca\u4e49",en:"Export Translation",zh_TW:"\u532f\u51fa\u91cb\u7fa9",ja:"\u8a33\u6587\u306e\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\ubc88\uc5ed \ub0b4\ubcf4\ub0b4\uae30",tr:"\xc7eviriyi D\u0131\u015fa Aktar"},error_cant_be_blank:{zh:"\u4e0d\u80fd\u4e3a\u7a7a",en:"Can not be blank",zh_TW:"\u4e0d\u53ef\u70ba\u7a7a",ja:"\u7a7a\u767d\u306b\u3059\u308b\u3053\u3068\u306f\u3067\u304d\u307e\u305b\u3093",ko:"\ube44\uc6cc\ub458 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4",tr:"Bo\u015f Olamaz"},error_duplicate_values:{zh:"\u5b58\u5728\u91cd\u590d\u7684\u503c",en:"There are duplicate values",zh_TW:"\u5b58\u5728\u91cd\u8907\u7684\u503c",ja:"\u91cd\u8907\u3059\u308b\u5024\u304c\u5b58\u5728\u3057\u307e\u3059",ko:"\uc911\ubcf5\ub41c \uac12\uc774 \uc788\uc2b5\ub2c8\ub2e4",tr:"Yinelenen De\u011ferler Var"},error_wrong_file_type:{zh:"\u9519\u8bef\u7684\u6587\u4ef6\u7c7b\u578b",en:"Wrong file type",zh_TW:"\u6a94\u6848\u985e\u578b\u932f\u8aa4",ja:"\u4e0d\u6b63\u306a\u30d5\u30a1\u30a4\u30eb\u30bf\u30a4\u30d7\u3067\u3059",ko:"\uc798\ubabb\ub41c \ud30c\uc77c \ud615\uc2dd\uc785\ub2c8\ub2e4",tr:"Yanl\u0131\u015f Dosya T\xfcr\xfc"},error_fetch_url:{zh:"\u8bf7\u68c0\u67e5url\u5730\u5740\u662f\u5426\u6b63\u786e\u6216\u7a0d\u540e\u518d\u8bd5\u3002",en:"Please check if the url address is correct or try again later.",zh_TW:"\u8acb\u6aa2\u67e5 URL \u662f\u5426\u6b63\u78ba\u6216\u7a0d\u5f8c\u518d\u8a66\u3002",ja:"URL\u30a2\u30c9\u30ec\u30b9\u304c\u6b63\u3057\u3044\u304b\u78ba\u8a8d\u3059\u308b\u304b\u3001\u5f8c\u3067\u3082\u3046\u4e00\u5ea6\u304a\u8a66\u3057\u304f\u3060\u3055\u3044\u3002",ko:"URL \uc8fc\uc18c\uac00 \uc62c\ubc14\ub978\uc9c0 \ud655\uc778\ud558\uac70\ub098 \ub098\uc911\uc5d0 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc2ed\uc2dc\uc624.",tr:"L\xfctfen URL adresinin do\u011fru olup olmad\u0131\u011f\u0131n\u0131 kontrol edin veya daha sonra tekrar deneyin."},deepl_api:{zh:"DeepL \u63a5\u53e3",en:"DeepL API",zh_TW:"DeepL \u4ecb\u9762",ja:"DeepL API",ko:"DeepL API",tr:"Deepl API'si"},deepl_key:{zh:"DeepL \u5bc6\u94a5",en:"DeepL Key",zh_TW:"DeepL \u91d1\u9470",ja:"DeepL \u30ad\u30fc",ko:"DeepL \ud0a4",tr:"Deepl Anahtar\u0131"},openai_api:{zh:"OpenAI \u63a5\u53e3",en:"OpenAI API",zh_TW:"OpenAI \u4ecb\u9762",ja:"OpenAI API",ko:"OpenAI API",tr:"OpenAI API"},openai_key:{zh:"OpenAI \u5bc6\u94a5",en:"OpenAI Key",zh_TW:"OpenAI \u91d1\u9470",ja:"OpenAI \u30ad\u30fc",ko:"OpenAI \ud0a4",tr:"OpenAI Anahtar\u0131"},openai_model:{zh:"OpenAI \u6a21\u578b",en:"OpenAI Model",zh_TW:"OpenAI \u6a21\u578b",ja:"OpenAI \u30e2\u30c7\u30eb",ko:"OpenAI \ubaa8\ub378",tr:"OpenAI Modeli"},openai_prompt:{zh:"OpenAI \u63d0\u793a\u8bcd",en:"OpenAI Prompt",zh_TW:"OpenAI \u63d0\u793a\u8a5e",ja:"OpenAI \u30d7\u30ed\u30f3\u30d7\u30c8",ko:"OpenAI \ud504\ub86c\ud504\ud2b8",tr:"OpenAI \u0130stemi"},if_clear_cache:{zh:"\u662f\u5426\u6e05\u9664\u7f13\u5b58\uff08\u9ed8\u8ba4\u7f13\u5b587\u5929\uff09",en:"Whether clear cache (Default cache is 7 days)",zh_TW:"\u662f\u5426\u6e05\u9664\u5feb\u53d6\uff08\u9810\u8a2d\u5feb\u53d67\u5929\uff09",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3057\u307e\u3059\u304b\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u671f\u9593\u306f7\u65e5\u9593\u3067\u3059\uff09",ko:"\uce90\uc2dc\ub97c \uc9c0\uc6b0\uc2dc\uaca0\uc2b5\ub2c8\uae4c (\uae30\ubcf8 \uce90\uc2dc 7\uc77c)",tr:"\xd6nbelle\u011fin Temizlenip Temizlenmeyece\u011fi (Varsay\u0131lan \xd6nbellek 7 G\xfcnd\xfcr)"},clear_cache_never:{zh:"\u4e0d\u6e05\u9664\u7f13\u5b58",en:"Never clear cache",zh_TW:"\u4e0d\u6e05\u9664\u5feb\u53d6",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2\u3057\u306a\u3044",ko:"\uce90\uc2dc \uc9c0\uc6b0\uc9c0 \uc54a\uc74c",tr:"\xd6nbelle\u011fi Hi\xe7bir Zaman Temizleme"},clear_cache_restart:{zh:"\u91cd\u542f\u6d4f\u89c8\u5668\u65f6\u6e05\u9664\u7f13\u5b58",en:"Clear cache when restarting browser",zh_TW:"\u91cd\u65b0\u555f\u52d5\u700f\u89bd\u5668\u6642\u6e05\u9664\u5feb\u53d6",ja:"\u30d6\u30e9\u30a6\u30b6\u518d\u8d77\u52d5\u6642\u306b\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2",ko:"\ube0c\ub77c\uc6b0\uc800 \uc7ac\uc2dc\uc791 \uc2dc \uce90\uc2dc \uc9c0\uc6b0\uae30",tr:"Taray\u0131c\u0131y\u0131 Yeniden Ba\u015flat\u0131rken \xd6nbelle\u011fi Temizle"},data_sync_type:{zh:"\u540c\u6b65\u65b9\u5f0f",en:"Sync Type",zh_TW:"\u540c\u6b65\u65b9\u5f0f",ja:"\u540c\u671f\u65b9\u5f0f",ko:"\ub3d9\uae30\ud654 \ubc29\uc2dd",tr:"Senkronizasyon T\xfcr\xfc"},data_sync_url:{zh:"\u540c\u6b65\u63a5\u53e3",en:"Sync API",zh_TW:"\u540c\u6b65\u4ecb\u9762",ja:"\u540c\u671fAPI",ko:"\ub3d9\uae30\ud654 API",tr:"API'yi Senkronize Et"},gist_sync_tip:{zh:"\u9009\u62e9 GitHub Gist \u65f6\u4f1a\u81ea\u52a8\u521b\u5efa\u79c1\u5bc6 Gist\u3002GitHub PAT \u9700\u8981 Gists \u8bfb\u5199\u6743\u9650\u3002",en:"A secret gist will be created automatically when GitHub Gist is selected. GitHub PAT needs Gists read and write permission.",zh_TW:"\u9078\u64c7 GitHub Gist \u6642\u6703\u81ea\u52d5\u5efa\u7acb\u79c1\u5bc6 Gist\u3002GitHub PAT \u9700\u8981 Gists \u8b80\u5beb\u6b0a\u9650\u3002",ja:"GitHub Gist \u3092\u9078\u629e\u3059\u308b\u3068 Secret Gist \u304c\u81ea\u52d5\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002GitHub PAT \u306b\u306f Gists \u306e\u8aad\u307f\u66f8\u304d\u6a29\u9650\u304c\u5fc5\u8981\u3067\u3059\u3002",ko:"GitHub Gist\ub97c \uc120\ud0dd\ud558\uba74 \ube44\uacf5\uac1c Gist\uac00 \uc790\ub3d9\uc73c\ub85c \uc0dd\uc131\ub429\ub2c8\ub2e4. GitHub PAT\uc5d0\ub294 Gists \uc77d\uae30/\uc4f0\uae30 \uad8c\ud55c\uc774 \ud544\uc694\ud569\ub2c8\ub2e4.",tr:"GitHub Gist se\xe7ildi\u011finde otomatik olarak gizli bir \xf6z olu\u015fturulacakt\u0131r. GitHub PAT'in Gists'in okuma ve yazma iznine ihtiyac\u0131 var."},data_sync_user:{zh:"\u540c\u6b65\u8d26\u6237",en:"Sync Account",zh_TW:"\u540c\u6b65\u5e33\u865f",ja:"\u540c\u671f\u30a2\u30ab\u30a6\u30f3\u30c8",ko:"\ub3d9\uae30\ud654 \uacc4\uc815",tr:"Hesab\u0131 Senkronize Et"},data_sync_key:{zh:"\u540c\u6b65\u5bc6\u94a5",en:"Sync Key",zh_TW:"\u540c\u6b65\u91d1\u9470",ja:"\u540c\u671f\u30ad\u30fc",ko:"\ub3d9\uae30\ud654 \ud0a4",tr:"Senkronizasyon Anahtar\u0131"},data_sync_encrypt_key:{zh:"\u52a0\u5bc6\u53e3\u4ee4",en:"Encryption Passphrase",zh_TW:"\u52a0\u5bc6\u5bc6\u78bc",ja:"\u6697\u53f7\u5316\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uc554\ud638\ud654 \ube44\ubc00\ubc88\ud638",tr:"\u015eifreleme Parolas\u0131"},set_sync_encrypt_key:{zh:"\u8bbe\u5b9a\u53e3\u4ee4",en:"Set Passphrase",zh_TW:"\u8a2d\u5b9a\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u8a2d\u5b9a",ko:"\uc554\ud638\ubb38 \uc124\uc815",tr:"Parolay\u0131 Ayarla"},change_sync_encrypt_key:{zh:"\u4fee\u6539\u53e3\u4ee4",en:"Change Passphrase",zh_TW:"\u4fee\u6539\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u5909\u66f4",ko:"\uc554\ud638\ubb38 \ubcc0\uacbd",tr:"Parolay\u0131 De\u011fi\u015ftir"},sync_encrypt_key_not_set:{zh:"\u53e3\u4ee4\u672a\u8bbe\u7f6e\uff0c\u540c\u6b65\u529f\u80fd\u4e0d\u53ef\u7528\u3002",en:"Passphrase is not set. Sync is unavailable.",zh_TW:"\u5bc6\u78bc\u672a\u8a2d\u5b9a\uff0c\u540c\u6b65\u529f\u80fd\u7121\u6cd5\u4f7f\u7528\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u672a\u8a2d\u5b9a\u306e\u305f\u3081\u3001\u540c\u671f\u6a5f\u80fd\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002",ko:"\uc554\ud638\ubb38\uc774 \uc124\uc815\ub418\uc9c0 \uc54a\uc544 \ub3d9\uae30\ud654 \uae30\ub2a5\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4.",tr:"Parola ayarlanmad\u0131. Senkronizasyon kullan\u0131lam\u0131yor."},old_sync_encrypt_key:{zh:"\u65e7\u53e3\u4ee4",en:"Old Passphrase",zh_TW:"\u820a\u5bc6\u78bc",ja:"\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uae30\uc874 \uc554\ud638\ubb38",tr:"Eski Parola"},new_sync_encrypt_key:{zh:"\u65b0\u53e3\u4ee4",en:"New Passphrase",zh_TW:"\u65b0\u5bc6\u78bc",ja:"\u65b0\u3057\u3044\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba",ko:"\uc0c8 \uc554\ud638\ubb38",tr:"Yeni Parola"},confirm_sync_encrypt_key:{zh:"\u786e\u8ba4\u53e3\u4ee4",en:"Confirm Passphrase",zh_TW:"\u78ba\u8a8d\u5bc6\u78bc",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u78ba\u8a8d",ko:"\uc554\ud638\ubb38 \ud655\uc778",tr:"Parolay\u0131 Onayla"},sync_encrypt_key_too_short:{zh:"\u53e3\u4ee4\u957f\u5ea6\u81f3\u5c11 6 \u4f4d\u3002",en:"Passphrase must be at least 6 characters.",zh_TW:"\u5bc6\u78bc\u9577\u5ea6\u81f3\u5c11 6 \u4f4d\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306f 6 \u6587\u5b57\u4ee5\u4e0a\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\uc554\ud638\ubb38\uc740 \ucd5c\uc18c 6\uc790 \uc774\uc0c1\uc774\uc5b4\uc57c \ud569\ub2c8\ub2e4.",tr:"Parola en az 6 karakterden olu\u015fmal\u0131d\u0131r."},sync_encrypt_key_mismatch:{zh:"\u4e24\u6b21\u8f93\u5165\u7684\u53e3\u4ee4\u4e0d\u4e00\u81f4\u3002",en:"The two passphrases do not match.",zh_TW:"\u5169\u6b21\u8f38\u5165\u7684\u5bc6\u78bc\u4e0d\u4e00\u81f4\u3002",ja:"\u5165\u529b\u3057\u305f 2 \u3064\u306e\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u4e00\u81f4\u3057\u307e\u305b\u3093\u3002",ko:"\ub450 \ubc88 \uc785\ub825\ud55c \uc554\ud638\ubb38\uc774 \uc77c\uce58\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",tr:"Her \u0130ki Parola E\u015fle\u015fmiyor."},old_sync_encrypt_key_invalid:{zh:"\u65e7\u53e3\u4ee4\u4e0d\u6b63\u786e\u3002",en:"Old passphrase is incorrect.",zh_TW:"\u820a\u5bc6\u78bc\u4e0d\u6b63\u78ba\u3002",ja:"\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u304c\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002",ko:"\uae30\uc874 \uc554\ud638\ubb38\uc774 \uc62c\ubc14\ub974\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4.",tr:"Eski Parola Yanl\u0131\u015f."},clear_sync_encrypt_key:{zh:"\u6e05\u9664\u672c\u5730\u53e3\u4ee4",en:"Clear local passphrase",zh_TW:"\u6e05\u9664\u672c\u6a5f\u5bc6\u78bc",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb",ko:"\ub85c\uceec \uc554\ud638\ubb38 \uc9c0\uc6b0\uae30",tr:"Yerel parolay\u0131 temizle"},clear_sync_encrypt_key_title:{zh:"\u6e05\u9664\u672c\u5730\u540c\u6b65\u53e3\u4ee4\uff1f",en:"Clear local sync passphrase?",zh_TW:"\u6e05\u9664\u672c\u6a5f\u540c\u6b65\u5bc6\u78bc\uff1f",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u540c\u671f\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb\u3057\u307e\u3059\u304b\uff1f",ko:"\ub85c\uceec \ub3d9\uae30\ud654 \uc554\ud638\ubb38\uc744 \uc9c0\uc6b8\uae4c\uc694?",tr:"Yerel e\u015fitleme parolas\u0131 temizlensin mi?"},clear_sync_encrypt_key_message:{zh:"\u8fd9\u4e0d\u4f1a\u4fee\u6539\u4e91\u7aef\u6570\u636e\u3002\u4e4b\u540e\u5fc5\u987b\u91cd\u65b0\u586b\u5165\u80fd\u89e3\u5bc6\u4e91\u7aef\u6570\u636e\u7684\u53e3\u4ee4\uff0c\u624d\u80fd\u7ee7\u7eed\u540c\u6b65\u3002",en:"This does not change cloud data. You must enter the passphrase that decrypts it before syncing again.",zh_TW:"\u9019\u4e0d\u6703\u4fee\u6539\u96f2\u7aef\u8cc7\u6599\u3002\u4e4b\u5f8c\u5fc5\u9808\u91cd\u65b0\u586b\u5165\u53ef\u89e3\u5bc6\u96f2\u7aef\u8cc7\u6599\u7684\u5bc6\u78bc\uff0c\u624d\u80fd\u7e7c\u7e8c\u540c\u6b65\u3002",ja:"\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u306f\u5909\u66f4\u3055\u308c\u307e\u305b\u3093\u3002\u518d\u540c\u671f\u3059\u308b\u306b\u306f\u3001\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u3092\u5fa9\u53f7\u3067\u304d\u308b\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u518d\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",ko:"\ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\ub294 \ubcc0\uacbd\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4. \ub2e4\uc2dc \ub3d9\uae30\ud654\ud558\ub824\uba74 \ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\ub97c \ud574\ub3c5\ud560 \uc218 \uc788\ub294 \uc554\ud638\ubb38\uc744 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.",tr:"Bu i\u015flem bulut verilerini de\u011fi\u015ftirmez. Yeniden e\u015fitlemek i\xe7in bulut verilerini \xe7\xf6zebilen parolay\u0131 girmeniz gerekir."},clear_sync_encrypt_key_confirm:{zh:"\u786e\u8ba4\u6e05\u9664",en:"Clear passphrase",zh_TW:"\u78ba\u8a8d\u6e05\u9664",ja:"\u6d88\u53bb\u3059\u308b",ko:"\uc9c0\uc6b0\uae30",tr:"Parolay\u0131 temizle"},clear_sync_encrypt_key_success:{zh:"\u5df2\u6e05\u9664\u672c\u5730\u540c\u6b65\u53e3\u4ee4\u3002",en:"The local sync passphrase has been cleared.",zh_TW:"\u5df2\u6e05\u9664\u672c\u6a5f\u540c\u6b65\u5bc6\u78bc\u3002",ja:"\u30ed\u30fc\u30ab\u30eb\u306e\u540c\u671f\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3092\u6d88\u53bb\u3057\u307e\u3057\u305f\u3002",ko:"\ub85c\uceec \ub3d9\uae30\ud654 \uc554\ud638\ubb38\uc744 \uc9c0\uc6e0\uc2b5\ub2c8\ub2e4.",tr:"Yerel e\u015fitleme parolas\u0131 temizlendi."},sync_encrypt_key_change_failed:{zh:"\u4fee\u6539\u53e3\u4ee4\u5931\u8d25\u3002\u8bf7\u4fdd\u7559\u65e7\u53e3\u4ee4\u548c\u65b0\u53e3\u4ee4\uff0c\u68c0\u67e5\u7f51\u7edc\u540e\u91cd\u8bd5\uff1b\u5982\u679c\u66fe\u6709\u90e8\u5206\u6570\u636e\u5df2\u7528\u65b0\u53e3\u4ee4\u5199\u5165\u4e91\u7aef\uff0c\u5fc5\u8981\u65f6\u8bf7\u6e05\u7a7a\u8fdc\u7aef\u540c\u6b65\u6587\u4ef6\u540e\u91cd\u65b0\u540c\u6b65\u3002",en:"Failed to change the passphrase. Keep both the old and new passphrases, check your network, and retry. If some cloud data was already written with the new passphrase, clear the remote sync files and sync again if needed.",zh_TW:"\u4fee\u6539\u5bc6\u78bc\u5931\u6557\u3002\u8acb\u4fdd\u7559\u820a\u5bc6\u78bc\u548c\u65b0\u5bc6\u78bc\uff0c\u6aa2\u67e5\u7db2\u8def\u5f8c\u91cd\u8a66\uff1b\u5982\u679c\u5df2\u6709\u90e8\u5206\u8cc7\u6599\u7528\u65b0\u5bc6\u78bc\u5beb\u5165\u96f2\u7aef\uff0c\u5fc5\u8981\u6642\u8acb\u6e05\u7a7a\u9060\u7aef\u540c\u6b65\u6a94\u6848\u5f8c\u91cd\u65b0\u540c\u6b65\u3002",ja:"\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306e\u5909\u66f4\u306b\u5931\u6557\u3057\u307e\u3057\u305f\u3002\u65e7\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3068\u65b0\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u306e\u4e21\u65b9\u3092\u4fdd\u7ba1\u3057\u3001\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3092\u78ba\u8a8d\u3057\u3066\u304b\u3089\u518d\u8a66\u884c\u3057\u3066\u304f\u3060\u3055\u3044\u3002\u4e00\u90e8\u306e\u30af\u30e9\u30a6\u30c9\u30c7\u30fc\u30bf\u304c\u65b0\u3057\u3044\u30d1\u30b9\u30d5\u30ec\u30fc\u30ba\u3067\u66f8\u304d\u8fbc\u307e\u308c\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u30ea\u30e2\u30fc\u30c8\u540c\u671f\u30d5\u30a1\u30a4\u30eb\u3092\u524a\u9664\u3057\u3066\u304b\u3089\u518d\u540c\u671f\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\uc554\ud638\ubb38 \ubcc0\uacbd\uc5d0 \uc2e4\ud328\ud588\uc2b5\ub2c8\ub2e4. \uae30\uc874 \uc554\ud638\ubb38\uacfc \uc0c8 \uc554\ud638\ubb38\uc744 \ubaa8\ub450 \ubcf4\uad00\ud558\uace0 \ub124\ud2b8\uc6cc\ud06c\ub97c \ud655\uc778\ud55c \ub4a4 \ub2e4\uc2dc \uc2dc\ub3c4\ud558\uc138\uc694. \uc77c\ubd80 \ud074\ub77c\uc6b0\ub4dc \ub370\uc774\ud130\uac00 \uc774\ubbf8 \uc0c8 \uc554\ud638\ubb38\uc73c\ub85c \uc4f0\uc778 \uacbd\uc6b0 \ud544\uc694\ud558\uba74 \uc6d0\uaca9 \ub3d9\uae30\ud654 \ud30c\uc77c\uc744 \ube44\uc6b4 \ub4a4 \ub2e4\uc2dc \ub3d9\uae30\ud654\ud558\uc138\uc694.",tr:"Parola de\u011fi\u015ftirme i\u015flemi ba\u015far\u0131s\u0131z oldu. Hem eski hem de yeni parolay\u0131 saklay\u0131n, a\u011f\u0131n\u0131z\u0131 kontrol edin ve tekrar deneyin. Yeni parola ile bulut verilerine zaten baz\u0131 veriler yaz\u0131lm\u0131\u015fsa, uzaktan senkronizasyon dosyalar\u0131n\u0131 temizleyin ve gerekirse tekrar senkronize edin"},sync_now:{zh:"\u7acb\u5373\u540c\u6b65",en:"Sync Now",zh_TW:"\u7acb\u5373\u540c\u6b65",ja:"\u4eca\u3059\u3050\u540c\u671f",ko:"\uc9c0\uae08 \ub3d9\uae30\ud654",tr:"\u015eimdi Senkronize Et"},sync_success:{zh:"\u540c\u6b65\u6210\u529f\uff01",en:"Sync Success",zh_TW:"\u540c\u6b65\u6210\u529f\uff01",ja:"\u540c\u671f\u6210\u529f\uff01",ko:"\ub3d9\uae30\ud654 \uc131\uacf5!",tr:"Senkronizasyon Ba\u015far\u0131l\u0131"},sync_failed:{zh:"\u540c\u6b65\u5931\u8d25\uff01",en:"Sync Error",zh_TW:"\u540c\u6b65\u5931\u6557\uff01",ja:"\u540c\u671f\u5931\u6557\uff01",ko:"\ub3d9\uae30\ud654 \uc2e4\ud328!",tr:"Senkronizasyon Hatas\u0131"},error_got_some_wrong:{zh:"\u62b1\u6b49\uff0c\u51fa\u9519\u4e86\uff01",en:"Sorry, something went wrong!",zh_TW:"\u62b1\u6b49\uff0c\u767c\u751f\u932f\u8aa4\uff01",ja:"\u7533\u3057\u8a33\u3042\u308a\u307e\u305b\u3093\u3001\u30a8\u30e9\u30fc\u304c\u767a\u751f\u3057\u307e\u3057\u305f\uff01",ko:"\uc8c4\uc1a1\ud569\ub2c8\ub2e4, \uc624\ub958\uac00 \ubc1c\uc0dd\ud588\uc2b5\ub2c8\ub2e4!",tr:"\xdczg\xfcn\xfcm, Bir Sorun Olu\u015ftu"},error_sync_setting:{zh:"\u60a8\u7684\u540c\u6b65\u7c7b\u578b\u5fc5\u987b\u4e3a\u201cKISS-Worker\u201d\uff0c\u4e14\u9700\u586b\u5199\u5b8c\u6574",en:'Your sync type must be "KISS-Worker" and must be filled in completely',zh_TW:"\u60a8\u7684\u540c\u6b65\u578b\u614b\u5fc5\u9808\u70ba\u300cKISS-Worker\u300d\uff0c\u4e14\u9700\u586b\u5beb\u5b8c\u6574\u3002",ja:"\u540c\u671f\u30bf\u30a4\u30d7\u306f\u300cKISS-Worker\u300d\u3067\u3042\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u3059\u3079\u3066\u5165\u529b\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002",ko:'\ub3d9\uae30\ud654 \uc720\ud615\uc740 "KISS-Worker"\uc5ec\uc57c \ud558\uba70, \ubaa8\ub4e0 \ud56d\ubaa9\uc744 \ube60\uc9d0\uc5c6\uc774 \uc785\ub825\ud574\uc57c \ud569\ub2c8\ub2e4.',tr:'Senkronizasyon T\xfcr\xfcn\xfcz "KISS-Worker" Olmal\u0131 Ve Eksiksiz Olarak Doldurulmal\u0131d\u0131r'},click_test:{zh:"\u70b9\u51fb\u6d4b\u8bd5",en:"Click Test",zh_TW:"\u9ede\u9078\u6e2c\u8a66",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u30c6\u30b9\u30c8",ko:"\ud074\ub9ad \ud14c\uc2a4\ud2b8",tr:"Test Et'I T\u0131klay\u0131n"},test_success:{zh:"\u6d4b\u8bd5\u6210\u529f",en:"Test success",zh_TW:"\u6e2c\u8a66\u6210\u529f",ja:"\u30c6\u30b9\u30c8\u6210\u529f",ko:"\ud14c\uc2a4\ud2b8 \uc131\uacf5",tr:"Test Ba\u015far\u0131l\u0131"},test_failed:{zh:"\u6d4b\u8bd5\u5931\u8d25",en:"Test failed",zh_TW:"\u6e2c\u8a66\u5931\u6557",ja:"\u30c6\u30b9\u30c8\u5931\u6557",ko:"\ud14c\uc2a4\ud2b8 \uc2e4\ud328",tr:"Test Ba\u015far\u0131s\u0131z Oldu"},clear_all_cache_now:{zh:"\u7acb\u5373\u6e05\u9664\u5168\u90e8\u7f13\u5b58",en:"Clear all cache now",zh_TW:"\u7acb\u5373\u6e05\u9664\u5168\u90e8\u5feb\u53d6",ja:"\u3059\u3079\u3066\u306e\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u4eca\u3059\u3050\u30af\u30ea\u30a2",ko:"\ubaa8\ub4e0 \uce90\uc2dc \uc9c0\uae08 \uc9c0\uc6b0\uae30",tr:"T\xfcm \xd6nbelle\u011fi \u015eimdi Temizle"},clear_cache:{zh:"\u6e05\u9664\u7f13\u5b58",en:"Clear Cache",zh_TW:"\u6e05\u9664\u5feb\u53d6",ja:"\u30ad\u30e3\u30c3\u30b7\u30e5\u3092\u30af\u30ea\u30a2",ko:"\uce90\uc2dc \uc9c0\uc6b0\uae30",tr:"\xd6nbelle\u011fi Temizle"},disable_on_mobile:{zh:"\u79fb\u52a8\u7aef\u7981\u7528",en:"Disable on Mobile",zh_TW:"\u884c\u52d5\u88dd\u7f6e\u505c\u7528",ja:"\u30e2\u30d0\u30a4\u30eb\u3067\u7121\u52b9\u306b\u3059\u308b",ko:"\ubaa8\ubc14\uc77c\uc5d0\uc11c \ube44\ud65c\uc131\ud654",tr:"Mobil Cihazda Devre D\u0131\u015f\u0131 B\u0131rak"},clear_success:{zh:"\u6e05\u9664\u6210\u529f",en:"Clear success",zh_TW:"\u6e05\u9664\u6210\u529f",ja:"\u30af\u30ea\u30a2\u6210\u529f",ko:"\uc9c0\uc6b0\uae30 \uc131\uacf5",tr:"Temizleme Ba\u015far\u0131l\u0131"},clear_failed:{zh:"\u6e05\u9664\u5931\u8d25",en:"Clear failed",zh_TW:"\u6e05\u9664\u5931\u6557",ja:"\u30af\u30ea\u30a2\u5931\u6557",ko:"\uc9c0\uc6b0\uae30 \uc2e4\ud328",tr:"Temizleme Ba\u015far\u0131s\u0131z Oldu"},share:{zh:"\u5206\u4eab",en:"Share",zh_TW:"\u5206\u4eab",ja:"\u5171\u6709",ko:"\uacf5\uc720",tr:"Payla\u015f"},clear_all:{zh:"\u6e05\u7a7a",en:"Clear All",zh_TW:"\u6e05\u7a7a",ja:"\u3059\u3079\u3066\u30af\u30ea\u30a2",ko:"\ubaa8\ub450 \uc9c0\uc6b0\uae30",tr:"T\xfcm\xfcn\xfc Temizle"},help:{zh:"\u6c42\u52a9",en:"Help",zh_TW:"\u6c42\u52a9",ja:"\u30d8\u30eb\u30d7",ko:"\ub3c4\uc6c0\ub9d0",tr:"Yard\u0131m"},restore_default:{zh:"\u6062\u590d\u9ed8\u8ba4",en:"Restore Default",zh_TW:"\u6062\u5fa9\u9810\u8a2d",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u306b\u623b\u3059",ko:"\uae30\ubcf8\uac12 \ubcf5\uc6d0",tr:"Varsay\u0131lan\u0131 Geri Y\xfckle"},shortcuts_setting:{zh:"\u5feb\u6377\u952e\u8bbe\u7f6e",en:"Shortcuts Setting",zh_TW:"\u5feb\u901f\u9375\u8a2d\u5b9a",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u8a2d\u5b9a",ko:"\ub2e8\ucd95\ud0a4 \uc124\uc815",tr:"K\u0131sayol Ayar\u0131"},toggle_translate_shortcut:{zh:'"\u5f00\u542f\u7ffb\u8bd1"\u5feb\u6377\u952e',en:'"Toggle Translate" Shortcut',zh_TW:"\u300c\u958b\u555f\u7ffb\u8b6f\u300d\u5feb\u901f\u9375",ja:"\u300c\u7ffb\u8a33\u5207\u308a\u66ff\u3048\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\ubc88\uc5ed \ucf1c\uae30" \ub2e8\ucd95\ud0a4',tr:'"\xc7eviriyi A\xe7/Kapat" K\u0131sayolu'},toggle_transonly_shortcut:{zh:'"\u9690\u85cf\u539f\u6587"\u5feb\u6377\u952e',en:'"Hide Original" Shortcut',zh_TW:"\u300c\u96b1\u85cf\u539f\u6587\u300d\u5feb\u901f\u9375",ja:"\u300c\u539f\u6587\u3092\u96a0\u3059\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc6d0\ubb38 \uc228\uae30\uae30" \ub2e8\ucd95\ud0a4',tr:'"Orijinali Gizle" K\u0131sayolu'},toggle_style_shortcut:{zh:'"\u5207\u6362\u6837\u5f0f"\u5feb\u6377\u952e',en:'"Toggle Style" Shortcut',zh_TW:"\u300c\u5207\u63db\u6a23\u5f0f\u300d\u5feb\u901f\u9375",ja:"\u300c\u30b9\u30bf\u30a4\u30eb\u5207\u308a\u66ff\u3048\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc2a4\ud0c0\uc77c \uc804\ud658" \ub2e8\ucd95\ud0a4',tr:'"Stil De\u011fi\u015ftir" K\u0131sayolu'},toggle_popup_shortcut:{zh:'"\u6253\u5f00\u5f39\u7a97"\u5feb\u6377\u952e',en:'"Open Popup" Shortcut',zh_TW:"\u300c\u958b\u555f\u5f48\u51fa\u8996\u7a97\u300d\u5feb\u901f\u9375",ja:"\u300c\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u958b\u304f\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\ud31d\uc5c5 \uc5f4\uae30" \ub2e8\ucd95\ud0a4',tr:'"A\xe7\u0131l\u0131r Pencereyi A\xe7" K\u0131sayolu'},open_setting_shortcut:{zh:'"\u6253\u5f00\u8bbe\u7f6e"\u5feb\u6377\u952e',en:'"Open Setting" Shortcut',zh_TW:"\u300c\u958b\u555f\u8a2d\u5b9a\u300d\u5feb\u901f\u9375",ja:"\u300c\u8a2d\u5b9a\u3092\u958b\u304f\u300d\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:'"\uc124\uc815 \uc5f4\uae30" \ub2e8\ucd95\ud0a4',tr:'"Ayar\u0131 A\xe7" K\u0131sayolu'},hide_fab_button:{zh:"\u9690\u85cf\u60ac\u6d6e\u6309\u94ae",en:"Hide Fab Button",zh_TW:"\u96b1\u85cf\u6d6e\u52d5\u6309\u9215",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u3092\u96a0\u3059",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \uc228\uae30\uae30",tr:"Y\xfczen Eylem D\xfc\u011fmesini Gizle"},fab_exception_list:{zh:"\u60ac\u6d6e\u6309\u94ae\u7279\u4f8b\u540d\u5355",en:"Fab Button Exception List",zh_TW:"\u6d6e\u52d5\u6309\u9215\u4f8b\u5916\u6e05\u55ae",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u306e\u4f8b\u5916\u30ea\u30b9\u30c8",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \uc608\uc678 \ubaa9\ub85d",tr:"Y\xfczen D\xfc\u011fme \u0130stisna Listesi"},fab_exception_list_helper:{zh:"\u5168\u5c40\u663e\u793a\u65f6\uff0c\u547d\u4e2d\u540d\u5355\u7684\u9875\u9762\u9690\u85cf\u6309\u94ae\uff1b\u5168\u5c40\u9690\u85cf\u65f6\uff0c\u547d\u4e2d\u540d\u5355\u7684\u9875\u9762\u663e\u793a\u6309\u94ae\u3002\u652f\u6301\u661f\u53f7(*)\u901a\u914d\u7b26\uff0c\u591a\u4e2a\u7f51\u5740\u7528\u6362\u884c\u6216\u9017\u53f7\u5206\u9694\u3002",en:"When shown globally, matching pages hide the button; when hidden globally, matching pages show it. Supports * wildcards; separate URLs with newlines or commas.",zh_TW:"\u5168\u57df\u986f\u793a\u6642\uff0c\u547d\u4e2d\u6e05\u55ae\u7684\u9801\u9762\u6703\u96b1\u85cf\u6309\u9215\uff1b\u5168\u57df\u96b1\u85cf\u6642\uff0c\u547d\u4e2d\u6e05\u55ae\u7684\u9801\u9762\u6703\u986f\u793a\u6309\u9215\u3002\u652f\u63f4\u661f\u865f (*) \u842c\u7528\u5b57\u5143\uff0c\u7db2\u5740\u53ef\u7528\u63db\u884c\u6216\u9017\u865f\u5206\u9694\u3002",ja:"\u30b0\u30ed\u30fc\u30d0\u30eb\u8868\u793a\u6642\u306f\u4e00\u81f4\u3059\u308b\u30da\u30fc\u30b8\u3067\u30dc\u30bf\u30f3\u3092\u96a0\u3057\u3001\u30b0\u30ed\u30fc\u30d0\u30eb\u975e\u8868\u793a\u6642\u306f\u4e00\u81f4\u3059\u308b\u30da\u30fc\u30b8\u3067\u30dc\u30bf\u30f3\u3092\u8868\u793a\u3057\u307e\u3059\u3002* \u306e\u30ef\u30a4\u30eb\u30c9\u30ab\u30fc\u30c9\u306b\u5bfe\u5fdc\u3057\u3001URL \u306f\u6539\u884c\u307e\u305f\u306f\u30ab\u30f3\u30de\u3067\u533a\u5207\u308c\u307e\u3059\u3002",ko:"\uc804\uc5ed \ud45c\uc2dc \uc2dc \ubaa9\ub85d\uacfc \uc77c\uce58\ud558\ub294 \ud398\uc774\uc9c0\uc5d0\uc11c\ub294 \ubc84\ud2bc\uc744 \uc228\uae30\uace0, \uc804\uc5ed \uc228\uae40 \uc2dc\uc5d0\ub294 \ubc84\ud2bc\uc744 \ud45c\uc2dc\ud569\ub2c8\ub2e4. * \uc640\uc77c\ub4dc\uce74\ub4dc\ub97c \uc9c0\uc6d0\ud558\uba70 URL\uc740 \uc904\ubc14\uafc8 \ub610\ub294 \uc27c\ud45c\ub85c \uad6c\ubd84\ud569\ub2c8\ub2e4.",tr:"Genel olarak g\xf6sterildi\u011finde e\u015fle\u015fen sayfalarda d\xfc\u011fme gizlenir; genel olarak gizlendi\u011finde e\u015fle\u015fen sayfalarda g\xf6sterilir. * joker karakteri desteklenir; URL'leri sat\u0131r sonu veya virg\xfclle ay\u0131r\u0131n."},fab_click_action:{zh:"\u5355\u51fb\u60ac\u6d6e\u6309\u94ae\u52a8\u4f5c",en:"Single Click Fab Action",zh_TW:"\u9ede\u9078\u6d6e\u52d5\u6309\u9215\u52d5\u4f5c",ja:"\u30d5\u30ed\u30fc\u30c6\u30a3\u30f3\u30b0\u30dc\u30bf\u30f3\u306e\u30af\u30ea\u30c3\u30af\u52d5\u4f5c",ko:"\ud50c\ub85c\ud305 \ubc84\ud2bc \ud074\ub9ad \ub3d9\uc791",tr:"Tek T\u0131klamayla Y\xfczen Eylem D\xfc\u011fmesi"},fab_click_menu:{zh:"\u5f39\u51fa\u83dc\u5355",en:"Popup Menu",zh_TW:"\u5f48\u51fa\u9078\u55ae",ja:"\u30e1\u30cb\u30e5\u30fc\u3092\u958b\u304f",ko:"\ud31d\uc5c5 \uba54\ub274",tr:"A\xe7\u0131l\u0131r Men\xfc"},fab_click_translate:{zh:"\u76f4\u63a5\u7ffb\u8bd1",en:"Translate",zh_TW:"\u76f4\u63a5\u7ffb\u8b6f",ja:"\u76f4\u63a5\u7ffb\u8a33",ko:"\ubc14\ub85c \ubc88\uc5ed",tr:"\xc7evir"},hide_tran_button:{zh:"\u9690\u85cf\u7ffb\u8bd1\u6309\u94ae",en:"Hide Translate Button",zh_TW:"\u96b1\u85cf\u7ffb\u8b6f\u6309\u9215",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u3092\u96a0\u3059",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc228\uae30\uae30",tr:"\xc7evir D\xfc\u011fmesini Gizle"},hide_click_away:{zh:"\u70b9\u51fb\u5916\u90e8\u5173\u95ed\u5f39\u7a97",en:"Click outside to close the pop-up window",zh_TW:"\u9ede\u9078\u5916\u90e8\u5340\u57df\u95dc\u9589\u5f48\u51fa\u8996\u7a97",ja:"\u5916\u90e8\u30af\u30ea\u30c3\u30af\u3067\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u9589\u3058\u308b",ko:"\ubc14\uae65\ucabd \ud074\ub9ad \uc2dc \ud31d\uc5c5 \ub2eb\uae30",tr:"A\xe7\u0131l\u0131r Pencereyi Kapatmak \u0130\xe7in D\u0131\u015far\u0131y\u0131 T\u0131klay\u0131n"},use_simple_style:{zh:"\u4f7f\u7528\u7b80\u6d01\u754c\u9762",en:"Use a simple interface",zh_TW:"\u4f7f\u7528\u7c21\u6f54\u4ecb\u9762",ja:"\u30b7\u30f3\u30d7\u30ebUI\u3092\u4f7f\u7528",ko:"\uac04\ub2e8\ud55c \uc778\ud130\ud398\uc774\uc2a4 \uc0ac\uc6a9",tr:"Basit Bir Aray\xfcz Kullan\u0131n"},show:{zh:"\u663e\u793a",en:"Show",zh_TW:"\u986f\u793a",ja:"\u8868\u793a",ko:"\ud45c\uc2dc",tr:"G\xf6ster"},hide:{zh:"\u9690\u85cf",en:"Hide",zh_TW:"\u96b1\u85cf",ja:"\u975e\u8868\u793a",ko:"\uc228\uae30\uae30",tr:"Gizle"},save_rule:{zh:"\u4fdd\u5b58\u672c\u7ad9\u89c4\u5219",en:"Save this site rule",zh_TW:"\u5132\u5b58\u672c\u7ad9\u898f\u5247",ja:"\u3053\u306e\u30b5\u30a4\u30c8\u306e\u30eb\u30fc\u30eb\u3092\u4fdd\u5b58",ko:"\uc774 \uc0ac\uc774\ud2b8 \uaddc\uce59 \uc800\uc7a5",tr:"Bu Site Kural\u0131n\u0131 Kaydet"},domain:{zh:"\u7f51\u57df",en:"Domain",zh_TW:"\u7db2\u57df",ja:"\u30c9\u30e1\u30a4\u30f3",ko:"\ub3c4\uba54\uc778",tr:"Alan"},global_rule:{zh:"\u5168\u5c40\u89c4\u5219",en:"Global Rule",zh_TW:"\u5168\u57df\u898f\u5247",ja:"\u30b0\u30ed\u30fc\u30d0\u30eb\u30eb\u30fc\u30eb",ko:"\uc804\uc5ed \uaddc\uce59",tr:"K\xfcresel Kural"},input_translate:{zh:"\u8f93\u5165\u6846\u7ffb\u8bd1",en:"Input Box Translation",zh_TW:"\u8f38\u5165\u6846\u7ffb\u8b6f",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u7ffb\u8a33",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed",tr:"Giri\u015f Kutusu \xc7evirisi"},use_input_box_translation:{zh:"\u542f\u7528\u8f93\u5165\u6846\u7ffb\u8bd1",en:"Input Box Translation",zh_TW:"\u555f\u7528\u8f38\u5165\u6846\u7ffb\u8b6f",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed \uc0ac\uc6a9",tr:"Giri\u015f Kutusu \xc7evirisi"},input_selector:{zh:"\u8f93\u5165\u6846\u9009\u62e9\u5668",en:"Input Selector",zh_TW:"\u8f38\u5165\u6846\u9078\u64c7\u5668",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u30bb\u30ec\u30af\u30bf",ko:"\uc785\ub825\ucc3d \uc120\ud0dd\uc790",tr:"Giri\u015f Se\xe7ici"},input_selector_helper:{zh:"\u7528\u4e8e\u8f93\u5165\u6846\u7ffb\u8bd1\u3002",en:"Used for input box translation.",zh_TW:"\u7528\u65bc\u8f38\u5165\u6846\u7ffb\u8b6f\u3002",ja:"\u5165\u529b\u30dc\u30c3\u30af\u30b9\u306e\u7ffb\u8a33\u306b\u4f7f\u7528\u3057\u307e\u3059\u3002",ko:"\uc785\ub825\ucc3d \ubc88\uc5ed\uc5d0 \uc0ac\uc6a9\ub429\ub2c8\ub2e4.",tr:"Giri\u015f kutusu \xe7evirisi i\xe7in kullan\u0131l\u0131r."},trigger_trans_shortcut:{zh:"\u89e6\u53d1\u7ffb\u8bd1\u5feb\u6377\u952e",en:"Trigger Translation Shortcut Keys",zh_TW:"\u89f8\u767c\u7ffb\u8b6f\u5feb\u901f\u9375",ja:"\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc",ko:"\ubc88\uc5ed \uc2e4\ud589 \ub2e8\ucd95\ud0a4",tr:"\xc7eviri K\u0131sayol Tu\u015flar\u0131n\u0131 Tetikleyin"},trigger_trans_shortcut_help:{zh:"\u9ed8\u8ba4\u4e3a\u5355\u51fb\u201cAltLeft+KeyI\u201d",en:'Default is "AltLeft+KeyI"',zh_TW:"\u9810\u8a2d\u70ba\u6309\u4e0b\u300cAltLeft+KeyI\u300d",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u306f\u300cAltLeft+KeyI\u300d\u3067\u3059",ko:'\uae30\ubcf8\uac12 "AltLeft+KeyI"',tr:'Varsay\u0131lan "AltLeft+KeyI"'},shortcut_press_count:{zh:"\u5feb\u6377\u952e\u8fde\u51fb\u6b21\u6570",en:"Shortcut Press Number",zh_TW:"\u5feb\u901f\u9375\u9023\u6309\u6b21\u6578",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u306e\u9023\u7d9a\u30d7\u30ec\u30b9\u56de\u6570",ko:"\ub2e8\ucd95\ud0a4 \uc5f0\uc18d \uc785\ub825 \ud69f\uc218",tr:"K\u0131sayol Tu\u015funa Bas\u0131n"},combo_timeout:{zh:"\u8fde\u51fb\u8d85\u65f6\u65f6\u95f4 (10-1000ms)",en:"Combo Timeout (10-1000ms)",zh_TW:"\u9023\u64ca\u903e\u6642 (10-1000ms)",ja:"\u9023\u7d9a\u30d7\u30ec\u30b9\u30bf\u30a4\u30e0\u30a2\u30a6\u30c8 (10-1000ms)",ko:"\uc5f0\uc18d \uc785\ub825 \uc2dc\uac04 \ucd08\uacfc (10-1000ms)",tr:"Kombo Zaman A\u015f\u0131m\u0131 (10-1000 Ms)"},input_trans_start_sign:{zh:"\u7ffb\u8bd1\u8d77\u59cb\u6807\u8bc6",en:"Translation Start Sign",zh_TW:"\u7ffb\u8b6f\u8d77\u59cb\u6a19\u8a18",ja:"\u7ffb\u8a33\u958b\u59cb\u8a18\u53f7",ko:"\ubc88\uc5ed \uc2dc\uc791 \ud45c\uc2dc",tr:"\xc7eviri Ba\u015flang\u0131\xe7 \u0130\u015fareti"},input_trans_start_sign_help:{zh:"\u6807\u8bc6\u540e\u9762\u53ef\u4ee5\u52a0\u76ee\u6807\u8bed\u8a00\u4ee3\u7801\uff0c\u5982\uff1a \u201c/en \u4f60\u597d\u201d\u3001\u201c/zh hello\u201d",en:'The target language code can be added after the sign, such as: "/en \u4f60\u597d", "/zh hello"',zh_TW:"\u6a19\u8a18\u5f8c\u53ef\u52a0\u4e0a\u76ee\u6a19\u8a9e\u8a00\u4ee3\u78bc\uff0c\u4f8b\u5982\uff1a\u300c/en \u4f60\u597d\u300d\u3001\u300c/zh hello\u300d",ja:"\u8a18\u53f7\u306e\u5f8c\u306b\u5bfe\u8c61\u8a00\u8a9e\u30b3\u30fc\u30c9\u3092\u8ffd\u52a0\u3067\u304d\u307e\u3059\u3002\u4f8b\uff1a\u300c/en \u4f60\u597d\u300d\u3001\u300c/zh hello\u300d",ko:'\ud45c\uc2dc \ub4a4\uc5d0 \ub300\uc0c1 \uc5b8\uc5b4 \ucf54\ub4dc\ub97c \ucd94\uac00\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc608: "/en \u4f60\u597d", "/zh hello"',tr:'\u0130\u015faretin sonuna hedef dil kodu eklenebilir, \xf6rne\u011fin: "/en \u4f60\u597d", "/zh hello"'},detect_lang_remote:{zh:"\u8fdc\u7a0b\u8bed\u8a00\u68c0\u6d4b",en:"Remote language detection",zh_TW:"\u9060\u7aef\u8a9e\u8a00\u5075\u6e2c",ja:"\u30ea\u30e2\u30fc\u30c8\u8a00\u8a9e\u691c\u51fa",ko:"\uc6d0\uaca9 \uc5b8\uc5b4 \uac10\uc9c0",tr:"Uzaktan Dil Alg\u0131lama"},detect_lang_remote_help:{zh:"\u542f\u7528\u540e\u68c0\u6d4b\u51c6\u786e\u5ea6\u589e\u52a0\uff0c\u4f46\u4f1a\u964d\u4f4e\u7ffb\u8bd1\u901f\u5ea6\uff0c\u8bf7\u914c\u60c5\u5f00\u542f",en:"After enabling, the detection accuracy will increase, but it will reduce the translation speed. Please enable it as appropriate.",zh_TW:"\u555f\u7528\u5f8c\u53ef\u63d0\u5347\u5075\u6e2c\u6e96\u78ba\u5ea6\uff0c\u4f46\u6703\u964d\u4f4e\u7ffb\u8b6f\u901f\u5ea6\uff0c\u8acb\u8996\u9700\u8981\u958b\u555f\u3002",ja:"\u6709\u52b9\u306b\u3059\u308b\u3068\u691c\u51fa\u7cbe\u5ea6\u304c\u5411\u4e0a\u3057\u307e\u3059\u304c\u3001\u7ffb\u8a33\u901f\u5ea6\u304c\u4f4e\u4e0b\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002\u5fc5\u8981\u306b\u5fdc\u3058\u3066\u6709\u52b9\u306b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ud65c\uc131\ud654\ud558\uba74 \uac10\uc9c0 \uc815\ud655\ub3c4\uac00 \ub192\uc544\uc9c0\uc9c0\ub9cc \ubc88\uc5ed \uc18d\ub3c4\uac00 \ub290\ub824\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uc801\uc808\ud788 \ud65c\uc131\ud654\ud558\uc2ed\uc2dc\uc624.",tr:"Etkinle\u015ftirildikten sonra alg\u0131lama do\u011frulu\u011fu artacak, ancak \xe7eviri h\u0131z\u0131 d\xfc\u015fecektir. L\xfctfen uygun \u015fekilde etkinle\u015ftirin."},detect_lang_service:{zh:"\u8bed\u8a00\u68c0\u6d4b\u670d\u52a1",en:"Language detect service",zh_TW:"\u8a9e\u8a00\u5075\u6e2c\u670d\u52d9",ja:"\u8a00\u8a9e\u691c\u51fa\u30b5\u30fc\u30d3\u30b9",ko:"\uc5b8\uc5b4 \uac10\uc9c0 \uc11c\ube44\uc2a4",tr:"Dil Alg\u0131lama Hizmeti"},disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},enable:{zh:"\u542f\u7528",en:"Enable",zh_TW:"\u555f\u7528",ja:"\u6709\u52b9",ko:"\ud65c\uc131\ud654",tr:"Etkin"},selection_translate:{zh:"\u5212\u8bcd\u7ffb\u8bd1",en:"Selection Translation",zh_TW:"\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7ffb\u8a33",ko:"\uc120\ud0dd \ubc88\uc5ed",tr:"Se\xe7im \xc7evirisi"},toggle_selection_translate:{zh:"\u542f\u7528\u5212\u8bcd\u7ffb\u8bd1",en:"Use Selection Translate",zh_TW:"\u555f\u7528\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc120\ud0dd \ubc88\uc5ed \uc0ac\uc6a9",tr:"Se\xe7im \xc7evirmeyi Kullan"},trigger_tranbox_shortcut:{zh:"\u663e\u793a\u7ffb\u8bd1\u6846/\u7ffb\u8bd1\u9009\u4e2d\u6587\u5b57\u5feb\u6377\u952e",en:"Open Translate Popup/Translate Selected Shortcut",zh_TW:"\u986f\u793a\u7ffb\u8b6f\u6846\uff0f\u7ffb\u8b6f\u9078\u53d6\u6587\u5b57\u5feb\u901f\u9375",ja:"\u7ffb\u8a33\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u8868\u793a/\u9078\u629e\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8",ko:"\ubc88\uc5ed\ucc3d \ud45c\uc2dc/\uc120\ud0dd \ubc88\uc5ed \ub2e8\ucd95\ud0a4",tr:"\xc7eviri A\xe7\u0131l\u0131r Penceresini A\xe7/Se\xe7ilen K\u0131sayolu \xc7evir"},tranbtn_offset_x:{zh:"\u7ffb\u8bd1\u6309\u94ae\u504f\u79fbX\uff08\xb1200\uff09",en:"Translate Button Offset X (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6309\u9215\u4f4d\u79fb X\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u30aa\u30d5\u30bb\u30c3\u30c8X (\xb1200)",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc624\ud504\uc14b X (\xb1200)",tr:"\xc7evirme D\xfc\u011fmesi Ofseti X (\xb1200)"},tranbtn_offset_y:{zh:"\u7ffb\u8bd1\u6309\u94ae\u504f\u79fbY\uff08\xb1200\uff09",en:"Translate Button Offset Y (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6309\u9215\u4f4d\u79fb Y\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30bf\u30f3\u30aa\u30d5\u30bb\u30c3\u30c8Y (\xb1200)",ko:"\ubc88\uc5ed \ubc84\ud2bc \uc624\ud504\uc14b Y (\xb1200)",tr:"\xc7evirme D\xfc\u011fmesi Ofseti Y (\xb1200)"},tranbox_offset_x:{zh:"\u7ffb\u8bd1\u6846\u504f\u79fbX\uff08\xb1200\uff09",en:"Translate Box Offset X (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6846\u4f4d\u79fb X\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u30aa\u30d5\u30bb\u30c3\u30c8X (\xb1200)",ko:"\ubc88\uc5ed\ucc3d \uc624\ud504\uc14b X (\xb1200)",tr:"\xc7evirme Kutusu Ofseti X (\xb1200)"},tranbox_offset_y:{zh:"\u7ffb\u8bd1\u6846\u504f\u79fbY\uff08\xb1200\uff09",en:"Translate Box Offset Y (\xb1200)",zh_TW:"\u7ffb\u8b6f\u6846\u4f4d\u79fb Y\uff08\xb1200\uff09",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u30aa\u30d5\u30bb\u30c3\u30c8Y (\xb1200)",ko:"\ubc88\uc5ed\ucc3d \uc624\ud504\uc14b Y (\xb1200)",tr:"\xc7evirme Kutusu Ofseti Y (\xb1200)"},translated_text:{zh:"\u8bd1\u6587",en:"Translated Text",zh_TW:"\u8b6f\u6587",ja:"\u7ffb\u8a33\u6e08\u307f\u30c6\u30ad\u30b9\u30c8",ko:"\ubc88\uc5ed\ub41c \ud14d\uc2a4\ud2b8",tr:"\xc7evrilmi\u015f Metin"},original_text:{zh:"\u539f\u6587",en:"Original Text",zh_TW:"\u539f\u6587",ja:"\u539f\u6587",ko:"\uc6d0\ubcf8 \ud14d\uc2a4\ud2b8",tr:"Orijinal Metin"},favorite_words:{zh:"\u6536\u85cf\u8bcd\u6c47",en:"Favorite Words",zh_TW:"\u6536\u85cf\u8a5e\u5f59",ja:"\u304a\u6c17\u306b\u5165\u308a\u5358\u8a9e",ko:"\uc990\uaca8\ucc3e\ub294 \ub2e8\uc5b4",tr:"Favori Kelimeler"},touch_setting:{zh:"\u89e6\u5c4f\u8bbe\u7f6e",en:"Touch Setting",zh_TW:"\u89f8\u63a7\u8a2d\u5b9a",ja:"\u30bf\u30c3\u30c1\u8a2d\u5b9a",ko:"\ud130\uce58 \uc124\uc815",tr:"Dokunma Ayar\u0131"},touch_translate_shortcut:{zh:"\u89e6\u5c4f\u7ffb\u8bd1\u5feb\u6377\u65b9\u5f0f (\u652f\u6301\u591a\u9009)",en:"Touch Translate Shortcut (multiple supported)",zh_TW:"\u89f8\u63a7\u7ffb\u8b6f\u6377\u5f91 (\u652f\u63f4\u591a\u9078)",ja:"\u30bf\u30c3\u30c1\u7ffb\u8a33\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8 (\u8907\u6570\u9078\u629e\u53ef)",ko:"\ud130\uce58 \ubc88\uc5ed \ub2e8\ucd95\ud0a4 (\ub2e4\uc911 \uc120\ud0dd \uc9c0\uc6d0)",tr:"Dokunmatik \xc7eviri K\u0131sayolu (Birden Fazla Desteklenir)"},touch_tap_0:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},touch_tap_2:{zh:"\u53cc\u6307\u8f7b\u89e6",en:"Two finger tap",zh_TW:"\u96d9\u6307\u8f15\u89f8",ja:"2\u672c\u6307\u30bf\u30c3\u30d7",ko:"\ub450 \uc190\uac00\ub77d \ud0ed",tr:"\u0130ki Parmakla Dokunma"},touch_tap_3:{zh:"\u4e09\u6307\u8f7b\u89e6",en:"Three finger tap",zh_TW:"\u4e09\u6307\u8f15\u89f8",ja:"3\u672c\u6307\u30bf\u30c3\u30d7",ko:"\uc138 \uc190\uac00\ub77d \ud0ed",tr:"\xdc\xe7 Parmakla Dokunma"},touch_tap_4:{zh:"\u56db\u6307\u8f7b\u89e6",en:"Four finger tap",zh_TW:"\u56db\u6307\u8f15\u89f8",ja:"4\u672c\u6307\u30bf\u30c3\u30d7",ko:"\ub124 \uc190\uac00\ub77d \ud0ed",tr:"D\xf6rt Parmakla Dokunma"},touch_tap_5:{zh:"\u5355\u6307\u53cc\u51fb",en:"Double-click",zh_TW:"\u55ae\u6307\u96d9\u64ca",ja:"\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ub354\ube14 \ud074\ub9ad",tr:"\xc7ift T\u0131klama"},touch_tap_6:{zh:"\u5355\u6307\u4e09\u51fb",en:"Triple-click",zh_TW:"\u55ae\u6307\u4e09\u64ca",ja:"\u30c8\u30ea\u30d7\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ud2b8\ub9ac\ud50c \ud074\ub9ad",tr:"\xdc\xe7l\xfc T\u0131klama"},touch_tap_7:{zh:"\u53cc\u6307\u53cc\u51fb",en:"Two-finger double-click",zh_TW:"\u96d9\u6307\u96d9\u64ca",ja:"2\u672c\u6307\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af",ko:"\ub450 \uc190\uac00\ub77d \ub354\ube14 \ud074\ub9ad",tr:"\u0130ki Parmakla \xc7ift T\u0131klama"},translate_blacklist:{zh:"\u7981\u7528\u7ffb\u8bd1\u540d\u5355",en:"Translate Blacklist",zh_TW:"\u505c\u7528\u7ffb\u8b6f\u540d\u55ae",ja:"\u7ffb\u8a33\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8",ko:"\ubc88\uc5ed \ube14\ub799\ub9ac\uc2a4\ud2b8",tr:"Kara Listeyi \xc7evir"},blacklist:{zh:"\u7981\u7528\u9ed1\u540d\u5355",en:"Blacklist",zh_TW:"\u505c\u7528\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8",tr:"Kara Liste"},add_to_blacklist:{zh:"\u52a0\u5165\u9ed1\u540d\u5355",en:"Add to Blacklist",zh_TW:"\u52a0\u5165\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u306b\u8ffd\u52a0",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8\uc5d0 \ucd94\uac00",tr:"Kara Listeye Ekle"},remove_from_blacklist:{zh:"\u79fb\u51fa\u9ed1\u540d\u5355",en:"Remove from Blacklist",zh_TW:"\u79fb\u51fa\u9ed1\u540d\u55ae",ja:"\u30d6\u30e9\u30c3\u30af\u30ea\u30b9\u30c8\u304b\u3089\u524a\u9664",ko:"\ube14\ub799\ub9ac\uc2a4\ud2b8\uc5d0\uc11c \uc81c\uac70",tr:"Kara Listeden Kald\u0131r"},disabled_orilist:{zh:"\u7981\u7528Origin\u540d\u5355",en:"Disabled Origin List",zh_TW:"\u505c\u7528 Origin \u540d\u55ae",ja:"\u7121\u52b9\u5316Origin\u30ea\u30b9\u30c8",ko:"\ube44\ud65c\uc131\ud654\ub41c Origin \ubaa9\ub85d",tr:"Devre D\u0131\u015f\u0131 B\u0131rak\u0131lan Kaynak Listesi"},disabled_csplist:{zh:"\u7981\u7528CSP\u540d\u5355",en:"Disabled CSP List",zh_TW:"\u505c\u7528 CSP \u540d\u55ae",ja:"\u7121\u52b9\u5316CSP\u30ea\u30b9\u30c8",ko:"\ube44\ud65c\uc131\ud654\ub41c CSP \ubaa9\ub85d",tr:"Devre D\u0131\u015f\u0131 CSP Listesi"},disabled_csplist_helper:{zh:"3\u3001\u901a\u8fc7\u8c03\u6574CSP\u7b56\u7565\uff0c\u4f7f\u5f97\u67d0\u4e9b\u9875\u9762\u80fd\u591f\u6ce8\u5165JS/CSS/Media\uff0c\u8bf7\u8c28\u614e\u4f7f\u7528\uff0c\u9664\u975e\u60a8\u5df2\u77e5\u6653\u76f8\u5173\u98ce\u9669\u3002",en:"3. By adjusting the CSP policy, some pages can inject JS/CSS/Media. Please use it with caution unless you are aware of the related risks.",zh_TW:"3. \u900f\u904e\u8abf\u6574 CSP \u653f\u7b56\uff0c\u4f7f\u90e8\u5206\u9801\u9762\u53ef\u6ce8\u5165 JS/CSS/Media\u3002\u8acb\u8b39\u614e\u4f7f\u7528\uff0c\u9664\u975e\u60a8\u5df2\u77e5\u6089\u76f8\u95dc\u98a8\u96aa\u3002",ja:"3. CSP\u30dd\u30ea\u30b7\u30fc\u3092\u8abf\u6574\u3059\u308b\u3053\u3068\u306b\u3088\u308a\u3001\u4e00\u90e8\u306e\u30da\u30fc\u30b8\u3067JS/CSS/Media\u306e\u6ce8\u5165\u304c\u53ef\u80fd\u306b\u306a\u308a\u307e\u3059\u3002\u95a2\u9023\u3059\u308b\u30ea\u30b9\u30af\u3092\u627f\u77e5\u3057\u3066\u3044\u306a\u3044\u9650\u308a\u3001\u614e\u91cd\u306b\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"3. CSP \uc815\ucc45\uc744 \uc870\uc815\ud558\uc5ec \uc77c\ubd80 \ud398\uc774\uc9c0\uc5d0\uc11c JS/CSS/Media\ub97c \uc8fc\uc785\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \uad00\ub828\ub41c \uc704\ud5d8\uc744 \uc778\uc9c0\ud558\uace0 \uc788\ub294 \uacbd\uc6b0\uac00 \uc544\ub2c8\ub77c\uba74 \uc8fc\uc758\ud574\uc11c \uc0ac\uc6a9\ud558\uc2ed\uc2dc\uc624.",tr:"3. CSP politikas\u0131n\u0131 ayarlayarak, baz\u0131 sayfalara JS/CSS/Medya dosyalar\u0131 eklenebilir. \u0130lgili risklerin fark\u0131nda de\u011filseniz, l\xfctfen dikkatli kullan\u0131n."},skip_langs:{zh:"\u4e0d\u7ffb\u8bd1\u7684\u8bed\u8a00",en:"Disable Languages",zh_TW:"\u4e0d\u7ffb\u8b6f\u7684\u8a9e\u8a00",ja:"\u7ffb\u8a33\u3057\u306a\u3044\u8a00\u8a9e",ko:"\ubc88\uc5ed\ud558\uc9c0 \uc54a\uc744 \uc5b8\uc5b4",tr:"Dilleri Devre D\u0131\u015f\u0131 B\u0131rak"},skip_langs_helper:{zh:"\u6b64\u529f\u80fd\u4f9d\u8d56\u51c6\u786e\u7684\u8bed\u8a00\u68c0\u6d4b\uff0c\u5efa\u8bae\u542f\u7528\u8fdc\u7a0b\u8bed\u8a00\u68c0\u6d4b\u3002",en:"This feature relies on accurate language detection. It is recommended to enable remote language detection.",zh_TW:"\u6b64\u529f\u80fd\u4ef0\u8cf4\u6e96\u78ba\u7684\u8a9e\u8a00\u5075\u6e2c\uff0c\u5efa\u8b70\u555f\u7528\u9060\u7aef\u8a9e\u8a00\u5075\u6e2c\u3002",ja:"\u3053\u306e\u6a5f\u80fd\u306f\u6b63\u78ba\u306a\u8a00\u8a9e\u691c\u51fa\u306b\u4f9d\u5b58\u3057\u3066\u3044\u308b\u305f\u3081\u3001\u30ea\u30e2\u30fc\u30c8\u8a00\u8a9e\u691c\u51fa\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3092\u304a\u52e7\u3081\u3057\u307e\u3059\u3002",ko:"\uc774 \uae30\ub2a5\uc740 \uc815\ud655\ud55c \uc5b8\uc5b4 \uac10\uc9c0\uc5d0 \uc758\uc874\ud558\ubbc0\ub85c \uc6d0\uaca9 \uc5b8\uc5b4 \uac10\uc9c0\ub97c \ud65c\uc131\ud654\ud558\ub294 \uac83\uc774 \uc88b\uc2b5\ub2c8\ub2e4.",tr:"Bu \xf6zellik, do\u011fru dil alg\u0131lamas\u0131na ba\u011fl\u0131d\u0131r. Uzaktan dil alg\u0131lamay\u0131 etkinle\u015ftirmeniz \xf6nerilir"},context_menus:{zh:"\u53f3\u952e\u83dc\u5355",en:"Context Menus",zh_TW:"\u53f3\u9375\u9078\u55ae",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"\u0130\xe7erik Men\xfcleri"},hide_context_menus:{zh:"\u9690\u85cf\u53f3\u952e\u83dc\u5355",en:"Hide Context Menus",zh_TW:"\u96b1\u85cf\u53f3\u9375\u9078\u55ae",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc\u3092\u96a0\u3059",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274 \uc228\uae30\uae30",tr:"\u0130\xe7erik Men\xfclerini Gizle"},simple_context_menus:{zh:"\u7b80\u5355\u53f3\u952e\u83dc\u5355",en:"Simple_context_menus Context Menus",zh_TW:"\u7c21\u6613\u53f3\u9375\u9078\u55ae",ja:"\u30b7\u30f3\u30d7\u30eb\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\uac04\ub2e8\ud55c \ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"Basit \u0130\xe7erik Men\xfcleri"},secondary_context_menus:{zh:"\u4e8c\u7ea7\u53f3\u952e\u83dc\u5355",en:"Secondary Context Menus",zh_TW:"\u6b21\u7d1a\u53f3\u9375\u9078\u55ae",ja:"\u30b5\u30d6\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30e1\u30cb\u30e5\u30fc",ko:"\ubcf4\uc870 \ucee8\ud14d\uc2a4\ud2b8 \uba54\ub274",tr:"\u0130kincil \u0130\xe7erik Men\xfcleri"},mulkeys_help:{zh:"\u652f\u6301\u7528\u6362\u884c\u6216\u82f1\u6587\u9017\u53f7\u201c,\u201d\u5206\u9694\uff0c\u8f6e\u8be2\u8c03\u7528\u3002",en:'Supports polling calls separated by newlines or English commas ",".',zh_TW:"\u652f\u63f4\u4ee5\u63db\u884c\u6216\u82f1\u6587\u9017\u865f\u300c,\u300d\u5206\u9694\uff0c\u8f2a\u8a62\u547c\u53eb\u3002",ja:"\u6539\u884c\u307e\u305f\u306f\u82f1\u8a9e\u306e\u30b3\u30f3\u30de\u300c,\u300d\u3067\u533a\u5207\u3063\u3066\u30dd\u30fc\u30ea\u30f3\u30b0\u30b3\u30fc\u30eb\u3092\u30b5\u30dd\u30fc\u30c8\u3057\u307e\u3059\u3002",ko:'\uc904\ubc14\uafc8 \ub610\ub294 \uc601\uc5b4 \uc27c\ud45c ","\ub85c \uad6c\ubd84\ub41c \ud3f4\ub9c1 \ud638\ucd9c\uc744 \uc9c0\uc6d0\ud569\ub2c8\ub2e4.',tr:'Anket \xe7a\u011fr\u0131lar\u0131n\u0131n yeni sat\u0131rlarla veya \u0130ngilizce virg\xfcllerle ayr\u0131lmas\u0131n\u0131 destekler"'},translation_element_tag:{zh:"\u8bd1\u6587\u5143\u7d20\u6807\u7b7e",en:"Translation Element Tag",zh_TW:"\u8b6f\u6587\u5143\u7d20\u6a19\u7c64",ja:"\u7ffb\u8a33\u8981\u7d20\u30bf\u30b0",ko:"\ubc88\uc5ed \uc694\uc18c \ud0dc\uadf8",tr:"\xc7eviri \xd6\u011fesi Etiketi"},show_only_translations:{zh:"\u4ec5\u663e\u793a\u8bd1\u6587",en:"Show Only Translations",zh_TW:"\u50c5\u986f\u793a\u8b6f\u6587",ja:"\u7ffb\u8a33\u306e\u307f\u8868\u793a",ko:"\ubc88\uc5ed\ub9cc \ubcf4\uae30",tr:"Yaln\u0131zca \xc7evirileri G\xf6ster"},show_only_translations_help:{zh:"\u975e\u5b8c\u7f8e\u5b9e\u73b0\uff0c\u67d0\u4e9b\u9875\u9762\u53ef\u80fd\u6709\u6837\u5f0f\u7b49\u95ee\u9898\u3002",en:"It is not a perfect implementation and some pages may have style issues.",zh_TW:"\u6b64\u70ba\u975e\u5b8c\u7f8e\u5be6\u4f5c\uff0c\u90e8\u5206\u9801\u9762\u53ef\u80fd\u51fa\u73fe\u6a23\u5f0f\u7b49\u554f\u984c\u3002",ja:"\u5b8c\u5168\u306a\u5b9f\u88c5\u3067\u306f\u306a\u304f\u3001\u4e00\u90e8\u306e\u30da\u30fc\u30b8\u3067\u30b9\u30bf\u30a4\u30eb\u306e\u554f\u984c\u304c\u767a\u751f\u3059\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002",ko:"\uc644\ubcbd\ud55c \uad6c\ud604\uc774 \uc544\ub2c8\uba70 \uc77c\ubd80 \ud398\uc774\uc9c0\uc5d0\uc11c \uc2a4\ud0c0\uc77c \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"M\xfckemmel bir uygulama de\u011fildir ve baz\u0131 sayfalarda stil sorunlar\u0131 olabilir"},trans_order:{zh:"\u6587\u672c\u987a\u5e8f",en:"Translation Order",zh_TW:"\u6587\u5b57\u9806\u5e8f",ja:"\u30c6\u30ad\u30b9\u30c8\u9806\u5e8f",ko:"\ud14d\uc2a4\ud2b8 \uc21c\uc11c",tr:"\xc7eviri S\u0131ras\u0131"},wrap_original:{zh:"\u5305\u88f9\u539f\u6587",en:"Wrap Original Text",zh_TW:"\u5305\u88f9\u539f\u6587",ja:"\u539f\u6587\u3092\u30e9\u30c3\u30d7",ko:"\uc6d0\ubb38 \uac10\uc2f8\uae30",tr:"Orijinal Metni Sar"},original_first:{zh:"\u539f\u6587\u5728\u4e0a\u65b9",en:"Original First",zh_TW:"\u539f\u6587\u5728\u4e0a\u65b9",ja:"\u539f\u6587\u304c\u6700\u521d",ko:"\uc6d0\ubb38\uc774 \uba3c\uc800",tr:"Orijinal \u0130lk"},translation_first:{zh:"\u8bd1\u6587\u5728\u4e0a\u65b9",en:"Translation First",zh_TW:"\u8b6f\u6587\u5728\u4e0a\u65b9",ja:"\u7ffb\u8a33\u304c\u6700\u521d",ko:"\ubc88\uc5ed\uc774 \uba3c\uc800",tr:"\xc7eviri \u0130lk"},transonly_revert:{zh:"\u60ac\u6d6e\u663e\u793a\u539f\u6587",en:"Hover to Show Original",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u6642\u986f\u793a\u539f\u6587",ja:"\u30db\u30d0\u30fc\u3067\u539f\u6587\u3092\u8868\u793a",ko:"\ud638\ubc84 \uc2dc \uc6d0\ubb38 \ud45c\uc2dc",tr:"Orijinali G\xf6stermek \u0130\xe7in \xdczerine Gelin"},transonly_revert_delay:{zh:"\u60ac\u6d6e\u5ef6\u8fdf(\u79d2)",en:"Hover Delay (seconds)",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u5ef6\u9072(\u79d2)",ja:"\u30db\u30d0\u30fc\u9045\u5ef6(\u79d2)",ko:"\ud638\ubc84 \uc9c0\uc5f0(\ucd08)",tr:"Vurgulu Gecikme (Saniye)"},translate_page_title:{zh:"\u662f\u5426\u7ffb\u8bd1\u9875\u9762\u6807\u9898",en:"Translate Page Title",zh_TW:"\u662f\u5426\u7ffb\u8b6f\u9801\u9762\u6a19\u984c",ja:"\u30da\u30fc\u30b8\u30bf\u30a4\u30c8\u30eb\u3092\u7ffb\u8a33\u3059\u308b",ko:"\ud398\uc774\uc9c0 \uc81c\ubaa9 \ubc88\uc5ed",tr:"Sayfa Ba\u015fl\u0131\u011f\u0131n\u0131 \xc7evir"},more:{zh:"\u66f4\u591a",en:"More",zh_TW:"\u66f4\u591a",ja:"\u3082\u3063\u3068\u898b\u308b",ko:"\ub354\ubcf4\uae30",tr:"Daha Fazla"},less:{zh:"\u66f4\u5c11",en:"Less",zh_TW:"\u66f4\u5c11",ja:"\u5c11\u306a\u304f",ko:"\uc904\uc774\uae30",tr:"Daha Az"},fixer_selector:{zh:"\u7f51\u9875\u4fee\u590d\u9009\u62e9\u5668",en:"Fixer Selector",zh_TW:"\u7db2\u9801\u4fee\u5fa9\u9078\u64c7\u5668",ja:"Web\u4fee\u6b63\u30bb\u30ec\u30af\u30bf",ko:"\uc6f9\ud398\uc774\uc9c0 \uc218\uc815 \uc120\ud0dd\uc790",tr:"Onar\u0131c\u0131 Se\xe7ici"},trigger_mode:{zh:"\u89e6\u53d1\u65b9\u5f0f",en:"Trigger Mode",zh_TW:"\u89f8\u767c\u65b9\u5f0f",ja:"\u30c8\u30ea\u30ac\u30fc\u30e2\u30fc\u30c9",ko:"\ud2b8\ub9ac\uac70 \ubaa8\ub4dc",tr:"Tetikleme Modu"},trigger_click:{zh:"\u70b9\u51fb\u89e6\u53d1",en:"Click Trigger",zh_TW:"\u9ede\u9078\u89f8\u767c",ja:"\u30af\u30ea\u30c3\u30af\u30c8\u30ea\u30ac\u30fc",ko:"\ud074\ub9ad \ud2b8\ub9ac\uac70",tr:"T\u0131klama Tetikleyicisi"},trigger_hover:{zh:"\u9f20\u6807\u60ac\u505c\u89e6\u53d1",en:"Hover Trigger",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u89f8\u767c",ja:"\u30db\u30d0\u30fc\u30c8\u30ea\u30ac\u30fc",ko:"\ud638\ubc84 \ud2b8\ub9ac\uac70",tr:"Fareyle \xdczerine Gelme Tetikleyicisi"},trigger_select:{zh:"\u9009\u4e2d\u89e6\u53d1",en:"Select Trigger",zh_TW:"\u9078\u53d6\u89f8\u767c",ja:"\u9078\u629e\u30c8\u30ea\u30ac\u30fc",ko:"\uc120\ud0dd \ud2b8\ub9ac\uac70",tr:"Tetikleyiciyi Se\xe7in"},trigger_dblclick:{zh:"\u53cc\u51fb\u89e6\u53d1",en:"Double-click Trigger",zh_TW:"\u96d9\u64ca\u89f8\u767c",ja:"\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u30c8\u30ea\u30ac\u30fc",ko:"\ub354\ube14\ud074\ub9ad \ud2b8\ub9ac\uac70",tr:"\xc7ift T\u0131klama Tetikleyicisi"},tranbtn_position_mode:{zh:"\u5f39\u51fa\u6309\u94ae\u4f4d\u7f6e",en:"Popup Button Position",zh_TW:"\u5f48\u51fa\u6309\u9215\u4f4d\u7f6e",ja:"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30dc\u30bf\u30f3\u4f4d\u7f6e",ko:"\ud31d\uc5c5 \ubc84\ud2bc \uc704\uce58",tr:"A\xe7\u0131l\u0131r D\xfc\u011fme Konumu"},tranbtn_position_fixed:{zh:"\u56fa\u5b9a\u4f4d\u7f6e",en:"Fixed Position",zh_TW:"\u56fa\u5b9a\u4f4d\u7f6e",ja:"\u56fa\u5b9a\u4f4d\u7f6e",ko:"\uace0\uc815 \uc704\uce58",tr:"Sabit Pozisyon"},tranbtn_position_mouse:{zh:"\u8ddf\u968f\u9f20\u6807",en:"Follow Mouse",zh_TW:"\u8ddf\u96a8\u6ed1\u9f20",ja:"\u30de\u30a6\u30b9\u306b\u8ffd\u5f93",ko:"\ub9c8\uc6b0\uc2a4 \ub530\ub77c\uac00\uae30",tr:"Fareyi Takip Et"},extend_styles:{zh:"\u9644\u52a0\u6837\u5f0f",en:"Extend Styles",zh_TW:"\u9644\u52a0\u6a23\u5f0f",ja:"\u62e1\u5f35\u30b9\u30bf\u30a4\u30eb",ko:"\ud655\uc7a5 \uc2a4\ud0c0\uc77c",tr:"Stilleri Geni\u015flet"},custom_option:{zh:"\u81ea\u5b9a\u4e49\u9009\u9879",en:"Custom Option",zh_TW:"\u81ea\u8a02\u9078\u9805",ja:"\u30ab\u30b9\u30bf\u30e0\u30aa\u30d7\u30b7\u30e7\u30f3",ko:"\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc635\uc158",tr:"\xd6zel Se\xe7enek"},translate_selected_text:{zh:"\u7ffb\u8bd1\u9009\u4e2d\u6587\u5b57",en:"Translate Selected Text",zh_TW:"\u7ffb\u8b6f\u9078\u53d6\u6587\u5b57",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8 \ubc88\uc5ed",tr:"Se\xe7ilen Metni \xc7evir"},toggle_style:{zh:"\u5207\u6362\u6837\u5f0f",en:"Toggle Style",zh_TW:"\u5207\u63db\u6a23\u5f0f",ja:"\u30b9\u30bf\u30a4\u30eb\u3092\u5207\u308a\u66ff\u3048",ko:"\uc2a4\ud0c0\uc77c \uc804\ud658",tr:"Stili De\u011fi\u015ftir"},open_menu:{zh:"\u6253\u5f00\u5f39\u7a97\u83dc\u5355",en:"Open Popup Menu",zh_TW:"\u958b\u555f\u5f48\u51fa\u8996\u7a97\u9078\u55ae",ja:"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u30e1\u30cb\u30e5\u30fc\u3092\u958b\u304f",ko:"\ud31d\uc5c5 \uba54\ub274 \uc5f4\uae30",tr:"A\xe7\u0131l\u0131r Men\xfcy\xfc A\xe7"},open_setting:{zh:"\u6253\u5f00\u8bbe\u7f6e",en:"Open Setting",zh_TW:"\u958b\u555f\u8a2d\u5b9a",ja:"\u8a2d\u5b9a\u3092\u958b\u304f",ko:"\uc124\uc815 \uc5f4\uae30",tr:"Ayar\u0131 A\xe7"},follow_selection:{zh:"\u7ffb\u8bd1\u6846\u8ddf\u968f\u9009\u4e2d\u6587\u672c",en:"Transbox Follow Selection",zh_TW:"\u7ffb\u8b6f\u6846\u8ddf\u96a8\u9078\u53d6\u6587\u5b57",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u3092\u9078\u629e\u7bc4\u56f2\u306b\u8ffd\u5f93",ko:"\ubc88\uc5ed \uc0c1\uc790\uac00 \uc120\ud0dd \ud56d\ubaa9 \ub530\ub77c\uac00\uae30",tr:"\xc7eviri Kutusu Takip Se\xe7imi"},tranbox_auto_height:{zh:"\u7ffb\u8bd1\u6846\u81ea\u9002\u5e94\u9ad8\u5ea6",en:"Translation box adaptive height",zh_TW:"\u7ffb\u8b6f\u6846\u81ea\u9069\u61c9\u9ad8\u5ea6",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u306e\u9ad8\u3055\u81ea\u52d5\u8abf\u6574",ko:"\ubc88\uc5ed \uc0c1\uc790 \ub192\uc774 \uc790\ub3d9 \uc870\uc808",tr:"\xc7eviri Kutusu Uyarlanabilir Y\xfckseklik"},tranbox_interact_mode:{zh:"\u7ffb\u8bd1\u6846\u5185\u4ea4\u4e92\u6a21\u5f0f",en:"Transbox Interact Mode",zh_TW:"\u7ffb\u8b6f\u6846\u5167\u4e92\u52d5\u6a21\u5f0f",ja:"\u7ffb\u8a33\u30dc\u30c3\u30af\u30b9\u5185\u30a4\u30f3\u30bf\u30e9\u30af\u30b7\u30e7\u30f3\u30e2\u30fc\u30c9",ko:"\ubc88\uc5ed \uc0c1\uc790 \ub0b4 \uc778\ud130\ub799\uc158 \ubaa8\ub4dc",tr:"\xc7eviri Kutusu Etkile\u015fim Modu"},tranbox_interact_click:{zh:"\u5355\u51fb\u9009\u4e2d\u6587\u672c\u89e6\u53d1\u7ffb\u8bd1",en:"Click selected text to translate",zh_TW:"\u55ae\u64ca\u9078\u53d6\u6587\u5b57\u89f8\u767c\u7ffb\u8b6f",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8\ub97c \ud074\ub9ad\ud558\uc5ec \ubc88\uc5ed",tr:"\xc7evirmek \u0130\xe7in Se\xe7ilen Metni T\u0131klay\u0131n"},tranbox_interact_dblclick:{zh:"\u53cc\u51fb\u9009\u4e2d\u6587\u672c\u89e6\u53d1\u7ffb\u8bd1",en:"Double-click selected text to translate",zh_TW:"\u96d9\u64ca\u9078\u53d6\u6587\u5b57\u89f8\u767c\u7ffb\u8b6f",ja:"\u9078\u629e\u3057\u305f\u30c6\u30ad\u30b9\u30c8\u3092\u30c0\u30d6\u30eb\u30af\u30ea\u30c3\u30af\u3057\u3066\u7ffb\u8a33",ko:"\uc120\ud0dd\ud55c \ud14d\uc2a4\ud2b8\ub97c \ub354\ube14\ud074\ub9ad\ud558\uc5ec \ubc88\uc5ed",tr:"\xc7evirmek \u0130\xe7in Se\xe7ilen Metni \xc7ift T\u0131klay\u0131n"},selection_skip_langs:{zh:"\u5ffd\u7565\u7684\u8bed\u8a00",en:"Ignore Languages",zh_TW:"\u5ffd\u7565\u7684\u8a9e\u8a00",ja:"\u7121\u8996\u3059\u308b\u8a00\u8a9e",ko:"\ubb34\uc2dc\ud560 \uc5b8\uc5b4",tr:"Dilleri Yoksay"},selection_skip_langs_helper:{zh:"\u5217\u8868\u4e2d\u7684\u8bed\u8a00\u4e0d\u5f39\u7a97\uff08\u8bbe\u5b9a\u540e\uff0c\u7b2c\u4e8c\u76ee\u6807\u8bed\u8a00\u4e92\u8bd1\u529f\u80fd\u5c06\u81ea\u52a8\u7981\u7528\uff09",en:"Don't show popup for languages in this list (when enabled, will automatically disable bidirectional translation for the second target language)",zh_TW:"\u5217\u8868\u4e2d\u7684\u8a9e\u8a00\u4e0d\u5f48\u7a97\uff08\u8a2d\u5b9a\u5f8c\uff0c\u7b2c\u4e8c\u76ee\u6a19\u8a9e\u8a00\u7684\u4e92\u8b6f\u529f\u80fd\u5c07\u81ea\u52d5\u7981\u7528\uff09",ja:"\u30ea\u30b9\u30c8\u5185\u306e\u8a00\u8a9e\u306f\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u3092\u8868\u793a\u3057\u307e\u305b\u3093\uff08\u6709\u52b9\u306b\u3059\u308b\u3068\u3001\u7b2c\u4e8c\u306e\u5bfe\u8c61\u8a00\u8a9e\u306e\u53cc\u65b9\u5411\u7ffb\u8a33\u6a5f\u80fd\u304c\u81ea\u52d5\u7684\u306b\u7121\u52b9\u306b\u306a\u308a\u307e\u3059\uff09",ko:"\ubaa9\ub85d\uc5d0 \uc788\ub294 \uc5b8\uc5b4\ub294 \ud31d\uc5c5\uc744 \ud45c\uc2dc\ud558\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4 (\ud65c\uc131\ud654 \uc2dc, \ub450 \ubc88\uc9f8 \ub300\uc0c1 \uc5b8\uc5b4\uc758 \uc591\ubc29\ud5a5 \ubc88\uc5ed \uae30\ub2a5\uc774 \uc790\ub3d9\uc73c\ub85c \ube44\ud65c\uc131\ud654\ub429\ub2c8\ub2e4)",tr:"Bu listedeki diller i\xe7in a\xe7\u0131l\u0131r pencere g\xf6sterilmez (etkinle\u015ftirildi\u011finde, ikinci hedef dil i\xe7in \xe7ift y\xf6nl\xfc \xe7eviri i\u015flevi otomatik olarak devre d\u0131\u015f\u0131 b\u0131rak\u0131l\u0131r)"},translate_start_hook:{zh:"\u7ffb\u8bd1\u5f00\u59cb\u94a9\u5b50\u51fd\u6570",en:"Translate Start Hook",zh_TW:"\u7ffb\u8b6f\u958b\u59cb Hook",ja:"\u7ffb\u8a33\u958b\u59cb\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc2dc\uc791 \ud6c4\ud06c",tr:"\xc7eviri Ba\u015flad\u0131\u011f\u0131nda Tetiklenen \u0130\u015flev"},translate_start_hook_helper:{zh:"\u7ffb\u8bd1\u524d\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",en:"Run before translation, input parameters are: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",zh_TW:"\u7ffb\u8b6f\u524d\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",ja:"\u7ffb\u8a33\u524d\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",ko:"\ubc88\uc5ed \uc804 \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}",tr:"\xc7eviriden \xf6nce \xe7al\u0131\u015ft\u0131r\u0131l\u0131r, giri\u015f parametreleri \u015funlard\u0131r: {text,\n fromLang,\n toLang,\n apiSetting,\n docInfo,\n glossary,}"},translate_end_hook:{zh:"\u7ffb\u8bd1\u5b8c\u6210\u94a9\u5b50\u51fd\u6570",en:"Translate End Hook",zh_TW:"\u7ffb\u8b6f\u5b8c\u6210 Hook",ja:"\u7ffb\u8a33\u5b8c\u4e86\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc644\ub8cc \ud6c4\ud06c",tr:"\xc7eviri Bitti\u011finde Tetiklenen \u0130\u015flev"},translate_end_hook_helper:{zh:"\u7ffb\u8bd1\u5b8c\u6210\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a ({hostNode, parentNode, nodes, wrapperNode, innerNode})",en:"Run when translation is complete, input parameters are: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",zh_TW:"\u7ffb\u8b6f\u5b8c\u6210\u6642\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a ({hostNode, parentNode, nodes, wrapperNode, innerNode})",ja:"\u7ffb\u8a33\u5b8c\u4e86\u6642\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",ko:"\ubc88\uc5ed \uc644\ub8cc \uc2dc \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: ({hostNode, parentNode, nodes, wrapperNode, innerNode})",tr:"\xc7eviri tamamland\u0131\u011f\u0131nda, giri\u015f parametreleri \u015funlard\u0131r: ({hostNode, parentNode, nodes, wrapperNode, innerNode})"},translate_remove_hook:{zh:"\u7ffb\u8bd1\u79fb\u9664\u94a9\u5b50\u51fd\u6570",en:"Translate Removed Hook",zh_TW:"\u7ffb\u8b6f\u79fb\u9664 Hook",ja:"\u7ffb\u8a33\u524a\u9664\u30d5\u30c3\u30af",ko:"\ubc88\uc5ed \uc81c\uac70 \ud6c4\ud06c",tr:"\xc7eviri Kald\u0131r\u0131ld\u0131\u011f\u0131nda Tetiklenen \u0130\u015flev"},translate_remove_hook_helper:{zh:"\u7ffb\u8bd1\u79fb\u9664\u65f6\u8fd0\u884c\uff0c\u5165\u53c2\u4e3a\uff1a \u7ffb\u8bd1\u8282\u70b9\u3002",en:"Run when translation is removed, the input parameters are: translation node.",zh_TW:"\u79fb\u9664\u7ffb\u8b6f\u6642\u57f7\u884c\uff0c\u8f38\u5165\u53c3\u6578\u70ba\uff1a\u7ffb\u8b6f\u7bc0\u9ede\u3002",ja:"\u7ffb\u8a33\u524a\u9664\u6642\u306b\u5b9f\u884c\u3001\u5165\u529b\u30d1\u30e9\u30e1\u30fc\u30bf: \u7ffb\u8a33\u30ce\u30fc\u30c9\u3002",ko:"\ubc88\uc5ed \uc81c\uac70 \uc2dc \uc2e4\ud589, \uc785\ub825 \ub9e4\uac1c\ubcc0\uc218: \ubc88\uc5ed \ub178\ub4dc.",tr:"\xc7eviri kald\u0131r\u0131ld\u0131\u011f\u0131nda \xe7al\u0131\u015ft\u0131r\u0131l\u0131r, giri\u015f parametreleri \u015funlard\u0131r: \xe7eviri d\xfc\u011f\xfcm\xfc."},english_dict:{zh:"\u82f1\u6587\u8bcd\u5178",en:"English Dictionary",zh_TW:"\u82f1\u6587\u5b57\u5178",ja:"\u82f1\u8a9e\u8f9e\u66f8",ko:"\uc601\uc5b4 \uc0ac\uc804",tr:"\u0130ngilizce S\xf6zl\xfck"},default_dict:{zh:"\u9ed8\u8ba4\u8bcd\u5178",en:"Default Dictionary",zh_TW:"\u9810\u8a2d\u8a5e\u5178",ja:"\u65e2\u5b9a\u306e\u8f9e\u66f8",ko:"\uae30\ubcf8 \uc0ac\uc804",tr:"Varsay\u0131lan S\xf6zl\xfck"},ai_dict:{zh:"AI \u8bcd\u5178",en:"AI Dictionary",zh_TW:"AI \u8a5e\u5178",ja:"AI \u8f9e\u66f8",ko:"AI \uc0ac\uc804",tr:"AI S\xf6zl\xfc\u011f\xfc"},ai_dict_api:{zh:"AI \u8bcd\u5178\u63a5\u53e3",en:"AI Dictionary API",zh_TW:"AI \u8a5e\u5178\u4ecb\u9762",ja:"AI \u8f9e\u66f8 API",ko:"AI \uc0ac\uc804 API",tr:"AI S\xf6zl\xfck API'si"},ai_dict_prompt:{zh:"AI \u8bcd\u5178\u63d0\u793a\u8bcd",en:"AI Dictionary Prompt",zh_TW:"AI \u8a5e\u5178\u63d0\u793a\u8a5e",ja:"AI \u8f9e\u66f8\u30d7\u30ed\u30f3\u30d7\u30c8",ko:"AI \uc0ac\uc804 \ud504\ub86c\ud504\ud2b8",tr:"AI S\xf6zl\xfck \u0130stemi"},english_suggest:{zh:"\u82f1\u6587\u5efa\u8bae",en:"English Suggest",zh_TW:"\u82f1\u6587\u5efa\u8b70",ja:"\u82f1\u8a9e\u30b5\u30b8\u30a7\u30b9\u30c8",ko:"\uc601\uc5b4 \uc81c\uc548",tr:"\u0130ngilizce \xd6neri"},api_name:{zh:"\u63a5\u53e3\u540d\u79f0",en:"API Name",zh_TW:"\u4ecb\u9762\u540d\u7a31",ja:"API\u540d",ko:"API \uc774\ub984",tr:"API Ad\u0131"},model_list_url:{zh:"\u6a21\u578b\u5217\u8868URL",en:"Model List URL",zh_TW:"\u6a21\u578b\u5217\u8868URL",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7URL",ko:"\ubaa8\ub378 \ubaa9\ub85d URL",tr:"Model Listesi URL'si"},model_list_loading:{zh:"\u6b63\u5728\u52a0\u8f7d\u6a21\u578b\u5217\u8868...",en:"Loading model list...",zh_TW:"\u6b63\u5728\u8f09\u5165\u6a21\u578b\u5217\u8868...",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7\u3092\u8aad\u307f\u8fbc\u307f\u4e2d...",ko:"\ubaa8\ub378 \ubaa9\ub85d\uc744 \ubd88\ub7ec\uc624\ub294 \uc911...",tr:"Model Listesi Y\xfckleniyor..."},model_list_fetch_failed:{zh:"\u6a21\u578b\u5217\u8868\u52a0\u8f7d\u5931\u8d25",en:"Failed to load model list",zh_TW:"\u6a21\u578b\u5217\u8868\u8f09\u5165\u5931\u6557",ja:"\u30e2\u30c7\u30eb\u4e00\u89a7\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f",ko:"\ubaa8\ub378 \ubaa9\ub85d\uc744 \ubd88\ub7ec\uc624\uc9c0 \ubabb\ud588\uc2b5\ub2c8\ub2e4",tr:"Model Listesi Y\xfcklenemedi"},model_list_empty:{zh:"\u672a\u83b7\u53d6\u5230\u6a21\u578b\u5217\u8868\uff0c\u53ef\u624b\u52a8\u586b\u5199",en:"No models found. You can enter one manually.",zh_TW:"\u672a\u53d6\u5f97\u6a21\u578b\u5217\u8868\uff0c\u53ef\u624b\u52d5\u586b\u5beb",ja:"\u30e2\u30c7\u30eb\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3002\u624b\u52d5\u5165\u529b\u3067\u304d\u307e\u3059\u3002",ko:"\ubaa8\ub378\uc744 \ucc3e\uc744 \uc218 \uc5c6\uc2b5\ub2c8\ub2e4. \uc9c1\uc811 \uc785\ub825\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"Hi\xe7bir model bulunamad\u0131. Manuel olarak bir tane girebilirsiniz."},sort_order:{zh:"\u6392\u5e8f\u6743\u91cd",en:"Sort Order",zh_TW:"\u6392\u5e8f\u6b0a\u91cd",ja:"\u30bd\u30fc\u30c8\u9806\u5e8f",ko:"\uc815\ub82c \uc21c\uc11c",tr:"S\u0131ralama D\xfczeni"},sort_order_help:{zh:"\u6570\u503c\u8d8a\u5c0f\u8d8a\u9760\u524d",en:"Smaller values appear first",zh_TW:"\u6578\u503c\u8d8a\u5c0f\u8d8a\u9760\u524d",ja:"\u5c0f\u3055\u3044\u5024\u304c\u5148\u306b\u8868\u793a\u3055\u308c\u307e\u3059",ko:"\uc791\uc740 \uac12\uc774 \uba3c\uc800 \ud45c\uc2dc\ub429\ub2c8\ub2e4",tr:"\xd6nce K\xfc\xe7\xfck De\u011ferler G\xf6r\xfcn\xfcr"},is_disabled:{zh:"\u662f\u5426\u7981\u7528",en:"Is Disabled",zh_TW:"\u662f\u5426\u505c\u7528",ja:"\u7121\u52b9\u306b\u3059\u308b",ko:"\ube44\ud65c\uc131\ud654 \uc5ec\ubd80",tr:"Devre d\u0131\u015f\u0131 B\u0131rak\u0131ld\u0131"},is_pinned:{zh:"\u662f\u5426\u7f6e\u9876",en:"Is Pinned",zh_TW:"\u662f\u5426\u7f6e\u9802",ja:"\u30d4\u30f3\u7559\u3081",ko:"\uace0\uc815 \uc5ec\ubd80",tr:"Sabitlendi"},sort_alphabetically:{zh:"\u6309\u5b57\u6bcd\u6392\u5e8f",en:"Sort Alphabetically",zh_TW:"\u6309\u5b57\u6bcd\u6392\u5e8f",ja:"\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8\u9806",ko:"\uc54c\ud30c\ubcb3\uc21c \uc815\ub82c",tr:"Alfabetik Olarak S\u0131rala"},translate_selected:{zh:"\u662f\u5426\u542f\u7528\u5212\u8bcd\u7ffb\u8bd1",en:"If translate selected",zh_TW:"\u662f\u5426\u555f\u7528\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f",ja:"\u9078\u629e\u7bc4\u56f2\u306e\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc120\ud0dd \ubc88\uc5ed \uc0ac\uc6a9 \uc5ec\ubd80",tr:"\xc7eviri Se\xe7ene\u011fi Se\xe7ilirse"},use_batch_fetch:{zh:"\u662f\u5426\u805a\u5408\u53d1\u9001\u7ffb\u8bd1\u8bf7\u6c42",en:"Whether to aggregate and send translation requests",zh_TW:"\u662f\u5426\u5f59\u6574\u767c\u9001\u7ffb\u8b6f\u8acb\u6c42",ja:"\u7ffb\u8a33\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u307e\u3068\u3081\u3066\u9001\u4fe1",ko:"\ubc88\uc5ed \uc694\uccad \uc77c\uad04 \uc804\uc1a1 \uc5ec\ubd80",tr:"\xc7eviri isteklerini bir araya getirip g\xf6ndermeye karar verilip verilmeyece\u011fi"},batch_interval:{zh:"\u805a\u5408\u8bf7\u6c42\u7b49\u5f85\u65f6\u95f4(10-10000)",en:"Aggregation request waiting time (10-10000)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u7b49\u5f85\u6642\u9593(10-10000)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u5f85\u6a5f\u6642\u9593(10-10000)",ko:"\uc77c\uad04 \uc694\uccad \ub300\uae30 \uc2dc\uac04(10-10000)",tr:"Toplama \u0130ste\u011fi Bekleme S\xfcresi (10-10000)"},batch_size:{zh:"\u805a\u5408\u8bf7\u6c42\u6700\u5927\u6bb5\u843d\u6570(1-100)",en:"Maximum number of paragraphs in an aggregation request (1-100)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u6700\u5927\u6bb5\u843d\u6578(1-100)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6700\u5927\u6bb5\u843d\u6570(1-100)",ko:"\uc77c\uad04 \uc694\uccad \ucd5c\ub300 \ub2e8\ub77d \uc218(1-100)",tr:"Toplama \u0130ste\u011findeki Maksimum Paragraf Say\u0131s\u0131 (1-100)"},batch_length:{zh:"\u805a\u5408\u8bf7\u6c42\u6700\u5927\u6587\u672c\u957f\u5ea6(1000-100000)",en:"Maximum text length for aggregation requests (1000-100000)",zh_TW:"\u5f59\u6574\u8acb\u6c42\u6700\u5927\u6587\u5b57\u9577\u5ea6(1000-100000)",ja:"\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u306e\u6700\u5927\u30c6\u30ad\u30b9\u30c8\u9577(1000-100000)",ko:"\uc77c\uad04 \uc694\uccad \ucd5c\ub300 \ud14d\uc2a4\ud2b8 \uae38\uc774(1000-100000)",tr:"Toplama Istekleri \u0130\xe7in Maksimum Metin Uzunlu\u011fu (1000-100000)"},batch_concurrency:{zh:"\u805a\u5408\u6279\u6b21\u5e76\u53d1\u6570(1-100)",en:"Concurrent aggregation batches (1-100)",zh_TW:"\u5f59\u6574\u6279\u6b21\u4e26\u884c\u6578(1-100)",ja:"\u540c\u6642\u5b9f\u884c\u3059\u308b\u4e00\u62ec\u30ea\u30af\u30a8\u30b9\u30c8\u6570(1-100)",ko:"\ub3d9\uc2dc \uc77c\uad04 \uc694\uccad \uc218(1-100)",tr:"E\u015fzamanl\u0131 Toplama Grubu Say\u0131s\u0131 (1-100)"},batch_concurrency_context_hint:{zh:"\u4e0a\u4e0b\u6587\u4f1a\u8bdd\u8981\u6c42\u6279\u6b21\u6309\u987a\u5e8f\u6267\u884c\uff0c\u56e0\u6b64\u5e76\u53d1\u6570\u56fa\u5b9a\u4e3a 1",en:"Context sessions require ordered batches, so concurrency is fixed at 1",zh_TW:"\u4e0a\u4e0b\u6587\u6703\u8a71\u8981\u6c42\u6279\u6b21\u4f9d\u5e8f\u57f7\u884c\uff0c\u56e0\u6b64\u4e26\u884c\u6578\u56fa\u5b9a\u70ba 1",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u5229\u7528\u6642\u306f\u9806\u5e8f\u3092\u4fdd\u3064\u305f\u3081\u3001\u540c\u6642\u5b9f\u884c\u6570\u306f1\u306b\u56fa\u5b9a\u3055\u308c\u307e\u3059",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uc138\uc158\uc740 \uc21c\ucc28 \uc2e4\ud589\uc774 \ud544\uc694\ud558\ubbc0\ub85c \ub3d9\uc2dc \uc2e4\ud589 \uc218\ub294 1\ub85c \uace0\uc815\ub429\ub2c8\ub2e4",tr:"Ba\u011flam oturumlar\u0131 s\u0131ral\u0131 gruplar gerektirdi\u011finden e\u015fzamanl\u0131l\u0131k 1 olarak sabitlenir"},use_stream:{zh:"\u662f\u5426\u542f\u7528\u6d41\u5f0f\u4f20\u8f93",en:"Whether to enable streaming",zh_TW:"\u662f\u5426\u555f\u7528\u4e32\u6d41\u50b3\u8f38",ja:"\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc2a4\ud2b8\ub9ac\ubc0d \ud65c\uc131\ud654 \uc5ec\ubd80",tr:"Ak\u0131\u015f\u0131n Etkinle\u015ftirilip Etkinle\u015ftirilmeyece\u011fi"},stream_render_mode:{zh:"\u6d41\u5f0f\u6e32\u67d3\u6a21\u5f0f",en:"Stream render mode",zh_TW:"\u4e32\u6d41\u6e32\u67d3\u6a21\u5f0f",ja:"\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0\u30e2\u30fc\u30c9",ko:"\uc2a4\ud2b8\ub9ac\ubc0d \ub80c\ub354\ub9c1 \ubaa8\ub4dc",tr:"Ak\u0131\u015f Olu\u015fturma Modu"},stream_render_realtime:{zh:"\u5b9e\u65f6\u6e32\u67d3",en:"Realtime render",zh_TW:"\u5373\u6642\u6e32\u67d3",ja:"\u30ea\u30a2\u30eb\u30bf\u30a4\u30e0\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0",ko:"\uc2e4\uc2dc\uac04 \ub80c\ub354\ub9c1",tr:"Ger\xe7ek Zamanl\u0131 Olu\u015fturma"},stream_render_segment:{zh:"\u7247\u6bb5\u6e32\u67d3",en:"Segment render",zh_TW:"\u7247\u6bb5\u6e32\u67d3",ja:"\u30bb\u30b0\u30e1\u30f3\u30c8\u30ec\u30f3\u30c0\u30ea\u30f3\u30b0",ko:"\uc138\uadf8\uba3c\ud2b8 \ub80c\ub354\ub9c1",tr:"Segment Olu\u015fturma"},use_context:{zh:"\u662f\u5426\u542f\u7528\u667a\u80fd\u4e0a\u4e0b\u6587",en:"Whether to enable AI context",zh_TW:"\u662f\u5426\u555f\u7528\u667a\u6167\u4e0a\u4e0b\u6587",ja:"AI\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"AI \ucee8\ud14d\uc2a4\ud2b8 \ud65c\uc131\ud654 \uc5ec\ubd80",tr:"AI \u0130\xe7eriklerinin Etkinle\u015ftirilip Etkinle\u015ftirilmeyece\u011fi"},context_size:{zh:"\u4e0a\u4e0b\u6587\u4f1a\u8bdd\u6570\u91cf(1-20)",en:"Number of context sessions(1-20)",zh_TW:"\u4e0a\u4e0b\u6587\u6703\u8a71\u6578\u91cf(1-20)",ja:"\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u30bb\u30c3\u30b7\u30e7\u30f3\u6570(1-20)",ko:"\ucee8\ud14d\uc2a4\ud2b8 \uc138\uc158 \uc218(1-20)",tr:"\u0130\xe7erik Oturumlar\u0131n\u0131n Say\u0131s\u0131 (1-20)"},auto_scan_page:{zh:"\u81ea\u52a8\u626b\u63cf\u9875\u9762",en:"Auto scan page",zh_TW:"\u81ea\u52d5\u6383\u63cf\u9801\u9762",ja:"\u30da\u30fc\u30b8\u3092\u81ea\u52d5\u30b9\u30ad\u30e3\u30f3",ko:"\ud398\uc774\uc9c0 \uc790\ub3d9 \uc2a4\uce94",tr:"Sayfay\u0131 Otomatik Tara"},has_rich_text:{zh:"\u542f\u7528\u5bcc\u6587\u672c\u7ffb\u8bd1",en:"Enable rich text translation",zh_TW:"\u555f\u7528\u5bcc\u6587\u5b57\u7ffb\u8b6f",ja:"\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ub9ac\uce58 \ud14d\uc2a4\ud2b8 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Zengin Metin \xc7evirisini Etkinle\u015ftir"},has_shadowroot:{zh:"\u626b\u63cfShadowroot",en:"Scan Shadowroot",zh_TW:"\u6383\u63cfShadowroot",ja:"Shadowroot\u3092\u30b9\u30ad\u30e3\u30f3",ko:"Shadowroot \uc2a4\uce94",tr:"Shadowroot'u Tara"},mousehover_translate:{zh:"\u9f20\u6807\u60ac\u505c\u7ffb\u8bd1",en:"Mouseover Translation",zh_TW:"\u6ed1\u9f20\u61f8\u505c\u7ffb\u8b6f",ja:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u7ffb\u8a33",ko:"\ub9c8\uc6b0\uc2a4\uc624\ubc84 \ubc88\uc5ed",tr:"Fareyle \xdczerine Gelme \xc7evirisi"},use_mousehover_translation:{zh:"\u542f\u7528\u9f20\u6807\u60ac\u505c\u7ffb\u8bd1",en:"Enable mouseover translation",zh_TW:"\u555f\u7528\u6ed1\u9f20\u61f8\u505c\u7ffb\u8b6f",ja:"\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ub9c8\uc6b0\uc2a4\uc624\ubc84 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Fareyle \xdczerine Gelindi\u011finde \xc7eviriyi Etkinle\u015ftir"},selected_translation_alert:{zh:"\u5212\u8bcd\u7ffb\u8bd1\u7684\u5f00\u542f\u548c\u5173\u95ed\u8bf7\u5230\u201c\u89c4\u5219\u8bbe\u7f6e\u201d\u91cc\u9762\u8bbe\u7f6e\u3002",en:'To turn selected translation on or off, please go to "Rule Settings".',zh_TW:"\u9078\u53d6\u6587\u5b57\u7ffb\u8b6f\u7684\u958b\u555f\u548c\u95dc\u9589\u8acb\u5230\u300c\u898f\u5247\u8a2d\u5b9a\u300d\u88e1\u9762\u8a2d\u5b9a\u3002",ja:"\u9078\u629e\u7ffb\u8a33\u306e\u30aa\u30f3/\u30aa\u30d5\u306f\u300c\u30eb\u30fc\u30eb\u8a2d\u5b9a\u300d\u3067\u884c\u3063\u3066\u304f\u3060\u3055\u3044\u3002",ko:'\uc120\ud0dd \ubc88\uc5ed \ud65c\uc131\ud654/\ube44\ud65c\uc131\ud654\ub294 "\uaddc\uce59 \uc124\uc815"\uc5d0\uc11c \ud558\uc2ed\uc2dc\uc624.',tr:'Se\xe7ilen \xe7eviri \xf6zelli\u011fini a\xe7mak veya kapatmak i\xe7in l\xfctfen "Kural Ayarlar\u0131"na gidin.'},mousehover_key_help:{zh:"\u5f53\u5feb\u6377\u952e\u7f6e\u7a7a\u65f6\u8868\u793a\u9f20\u6807\u61f8\u505c\u76f4\u63a5\u7ffb\u8bd1",en:"When the shortcut key is empty, it means that the mouse hovers to translate directly",zh_TW:"\u5feb\u901f\u9375\u7559\u7a7a\u6642\u8868\u793a\u6ed1\u9f20\u61f8\u505c\u5373\u76f4\u63a5\u7ffb\u8b6f",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc\u304c\u7a7a\u306e\u5834\u5408\u3001\u30de\u30a6\u30b9\u30aa\u30fc\u30d0\u30fc\u3067\u76f4\u63a5\u7ffb\u8a33\u3057\u307e\u3059",ko:"\ub2e8\ucd95\ud0a4\uac00 \ube44\uc5b4 \uc788\uc73c\uba74 \ub9c8\uc6b0\uc2a4\uc624\ubc84 \uc2dc \ubc14\ub85c \ubc88\uc5ed\ud569\ub2c8\ub2e4",tr:"K\u0131sayol tu\u015fu bo\u015f oldu\u011funda, fare imlecinin \xfczerine gelerek do\u011frudan \xe7eviri yapaca\u011f\u0131 anlam\u0131na gelir"},mousehover_display_mode:{zh:"\u5c55\u793a\u6a21\u5f0f",en:"Display mode",zh_TW:"\u986f\u793a\u6a21\u5f0f",ja:"\u8868\u793a\u30e2\u30fc\u30c9",ko:"\ud45c\uc2dc \ubaa8\ub4dc",tr:"Ekran Modu"},mousehover_display_bilingual:{zh:"\u53cc\u8bed\u6a21\u5f0f",en:"Bilingual mode",zh_TW:"\u96d9\u8a9e\u6a21\u5f0f",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u30e2\u30fc\u30c9",ko:"\uc774\uc911 \uc5b8\uc5b4 \ubaa8\ub4dc",tr:"\u0130ki Dilli Mod"},mousehover_display_bubble:{zh:"\u6c14\u6ce1\u6a21\u5f0f",en:"Bubble mode",zh_TW:"\u6c23\u6ce1\u6a21\u5f0f",ja:"\u30d0\u30d6\u30eb\u30e2\u30fc\u30c9",ko:"\ub9d0\ud48d\uc120 \ubaa8\ub4dc",tr:"Kabarc\u0131k Modu"},mousehover_bubble_style:{zh:"\u6c14\u6ce1\u6837\u5f0f CSS",en:"Bubble style CSS",zh_TW:"\u6c23\u6ce1\u6a23\u5f0f CSS",ja:"\u30d0\u30d6\u30eb\u30b9\u30bf\u30a4\u30eb CSS",ko:"\ub9d0\ud48d\uc120 \uc2a4\ud0c0\uc77c CSS",tr:"Kabarc\u0131k Stili Css"},mousehover_bubble_style_helper:{zh:"\u7528\u4e8e\u81ea\u5b9a\u4e49\u6c14\u6ce1\u5bb9\u5668\u6837\u5f0f\uff1b\u5b9a\u4f4d\u548c\u89c6\u53e3\u9632\u6ea2\u51fa\u7531\u7a0b\u5e8f\u81ea\u52a8\u5904\u7406\u3002",en:"Customize the bubble container style. Positioning and viewport overflow are handled automatically.",zh_TW:"\u7528\u65bc\u81ea\u8a02\u6c23\u6ce1\u5bb9\u5668\u6a23\u5f0f\uff1b\u5b9a\u4f4d\u8207\u8996\u7a97\u9632\u6ea2\u51fa\u7531\u7a0b\u5f0f\u81ea\u52d5\u8655\u7406\u3002",ja:"\u30d0\u30d6\u30eb\u30b3\u30f3\u30c6\u30ca\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u30ab\u30b9\u30bf\u30de\u30a4\u30ba\u3057\u307e\u3059\u3002\u4f4d\u7f6e\u3068\u753b\u9762\u5916\u306b\u306f\u307f\u51fa\u3059\u51e6\u7406\u306f\u81ea\u52d5\u3067\u884c\u308f\u308c\u307e\u3059\u3002",ko:"\ub9d0\ud48d\uc120 \ucee8\ud14c\uc774\ub108 \uc2a4\ud0c0\uc77c\uc744 \uc0ac\uc6a9\uc790 \uc9c0\uc815\ud569\ub2c8\ub2e4. \uc704\uce58\uc640 \ud654\uba74 \ub118\uce68 \ubc29\uc9c0\ub294 \uc790\ub3d9\uc73c\ub85c \ucc98\ub9ac\ub429\ub2c8\ub2e4.",tr:"Kabarc\u0131k kab\u0131 stilini \xf6zelle\u015ftirin. Konumland\u0131rma ve g\xf6r\xfcnt\xfc alan\u0131 ta\u015fmas\u0131 otomatik olarak ger\xe7ekle\u015ftirilir."},autoscan_alt:{zh:"\u81ea\u52a8\u626b\u63cf",en:"Auto Scan",zh_TW:"\u81ea\u52d5\u6383\u63cf",ja:"\u81ea\u52d5\u30b9\u30ad\u30e3\u30f3",ko:"\uc790\ub3d9 \uc2a4\uce94",tr:"Otomatik Tara"},scan_all_nodes:{zh:"\u626b\u63cf\u5168\u90e8\u8282\u70b9",en:"Scan All Nodes",zh_TW:"\u6383\u63cf\u5168\u90e8\u7bc0\u9ede",ja:"\u3059\u3079\u3066\u306e\u30ce\u30fc\u30c9\u3092\u30b9\u30ad\u30e3\u30f3",ko:"\ubaa8\ub4e0 \ub178\ub4dc \uc2a4\uce94",tr:"T\xfcm D\xfc\u011f\xfcmleri Tara"},shadowroot_alt:{zh:"ShadowRoot",en:"ShadowRoot",zh_TW:"ShadowRoot",ja:"ShadowRoot",ko:"ShadowRoot",tr:"ShadowRoot"},richtext_alt:{zh:"\u4fdd\u7559\u5bcc\u6587\u672c",en:"Rich Text",zh_TW:"\u4fdd\u7559\u5bcc\u6587\u5b57",ja:"\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8",ko:"\ub9ac\uce58 \ud14d\uc2a4\ud2b8",tr:"Zengin Metin"},transonly_alt:{zh:"\u9690\u85cf\u539f\u6587",en:"Hide Original",zh_TW:"\u96b1\u85cf\u539f\u6587",ja:"\u539f\u6587\u3092\u96a0\u3059",ko:"\uc6d0\ubb38 \uc228\uae30\uae30",tr:"Orijinali Gizle"},confirm_title:{zh:"\u786e\u8ba4",en:"Confirm",zh_TW:"\u78ba\u8a8d",ja:"\u78ba\u8a8d",ko:"\ud655\uc778",tr:"Onayla"},confirm_message:{zh:"\u786e\u5b9a\u64cd\u4f5c\u5417\uff1f",en:"Are you sure you want to proceed?",zh_TW:"\u78ba\u5b9a\u64cd\u4f5c\u55ce\uff1f",ja:"\u64cd\u4f5c\u3092\u7d9a\u884c\u3057\u307e\u3059\u304b\uff1f",ko:"\uacc4\uc18d\ud558\uc2dc\uaca0\uc2b5\ub2c8\uae4c?",tr:"Devam Etmek \u0130stedi\u011finizden Emin Misiniz?"},confirm_action:{zh:"\u786e\u5b9a",en:"Confirm",zh_TW:"\u78ba\u5b9a",ja:"\u78ba\u8a8d",ko:"\ud655\uc778",tr:"Onayla"},cancel_action:{zh:"\u53d6\u6d88",en:"Cancel",zh_TW:"\u53d6\u6d88",ja:"\u30ad\u30e3\u30f3\u30bb\u30eb",ko:"\ucde8\uc18c",tr:"\u0130ptal Et"},pls_press_shortcut:{zh:"\u8bf7\u6309\u4e0b\u5feb\u6377\u952e\u7ec4\u5408",en:"Please press the shortcut key combination",zh_TW:"\u8acb\u6309\u4e0b\u5feb\u901f\u9375\u7d44\u5408",ja:"\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\u30ad\u30fc\u3092\u62bc\u3057\u3066\u304f\u3060\u3055\u3044",ko:"\ub2e8\ucd95\ud0a4 \uc870\ud569\uc744 \ub204\ub974\uc138\uc694",tr:"L\xfctfen K\u0131sayol Tu\u015f Kombinasyonuna Bas\u0131n"},load_setting_err:{zh:"\u6570\u636e\u52a0\u8f7d\u51fa\u9519\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u6216\u5378\u8f7d\u540e\u91cd\u65b0\u5b89\u88c5\u3002",en:"Data loading error, please refresh the page or uninstall and reinstall.",zh_TW:"\u8cc7\u6599\u8f09\u5165\u767c\u751f\u932f\u8aa4\uff0c\u8acb\u91cd\u65b0\u6574\u7406\u9801\u9762\u6216\u89e3\u9664\u5b89\u88dd\u5f8c\u91cd\u65b0\u5b89\u88dd\u3002",ja:"\u30c7\u30fc\u30bf\u8aad\u307f\u8fbc\u307f\u30a8\u30e9\u30fc\u3002\u30da\u30fc\u30b8\u3092\u66f4\u65b0\u3059\u308b\u304b\u3001\u30a2\u30f3\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u5f8c\u306b\u518d\u30a4\u30f3\u30b9\u30c8\u30fc\u30eb\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ub370\uc774\ud130 \ub85c\ub529 \uc624\ub958. \ud398\uc774\uc9c0\ub97c \uc0c8\ub85c \uace0\uce58\uac70\ub098 \uc81c\uac70 \ud6c4 \ub2e4\uc2dc \uc124\uce58\ud558\uc138\uc694.",tr:"Veri y\xfckleme hatas\u0131, l\xfctfen sayfay\u0131 yenileyin veya uygulamay\u0131 kald\u0131r\u0131p yeniden y\xfckleyin"},translation_style:{zh:"\u7ffb\u8bd1\u98ce\u683c",en:"Translation style",zh_TW:"\u7ffb\u8b6f\u98a8\u683c",ja:"\u7ffb\u8a33\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed \uc2a4\ud0c0\uc77c",tr:"\xc7eviri Stili"},placeholder:{zh:"\u5360\u4f4d\u7b26",en:"Placeholder",zh_TW:"\u4f54\u4f4d\u7b26",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354",tr:"Yer Tutucu"},tag_name:{zh:"\u5360\u4f4d\u6807\u7b7e\u540d",en:"Placeholder tag name",zh_TW:"\u4f54\u4f4d\u6a19\u540d",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u30bf\u30b0\u540d",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354 \ud0dc\uadf8 \uc774\ub984",tr:"Yer Tutucu Etiket Ad\u0131"},system_prompt_helper_1:{zh:"1. \u6839\u636e\u5b9e\u9645\u60c5\u51b5\u9009\u62e9AI\u652f\u6301\u7684\u805a\u5408\u683c\u5f0f\uff1a",en:"1. Select the aggregation format supported by the AI according to your needs:",zh_TW:"1. \u8acb\u4f9d\u5be6\u969b\u60c5\u6cc1\u9078\u64c7 AI \u652f\u63f4\u7684\u5f59\u6574\u683c\u5f0f\uff1a",ja:"1. \u5b9f\u969b\u306e\u72b6\u6cc1\u306b\u5fdc\u3058\u3066\u3001AI \u304c\u5bfe\u5fdc\u3057\u3066\u3044\u308b\u96c6\u7d04\u5f62\u5f0f\u3092\u9078\u629e\u3057\u3066\u304f\u3060\u3055\u3044\uff1a",ko:"1. \uc0c1\ud669\uc5d0 \ub9de\uac8c AI\uc5d0\uc11c \uc9c0\uc6d0\ud558\ub294 \uc9d1\uacc4 \ud615\uc2dd\uc744 \uc120\ud0dd\ud558\uc138\uc694:",tr:"1. \u0130htiya\xe7lar\u0131n\u0131za G\xf6re AI Taraf\u0131ndan Desteklenen Toplama Format\u0131n\u0131 Se\xe7in:"},json_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201cJSON \u683c\u5f0f\u201c",en:'Click to switch to "JSON Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300cJSON \u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300cJSON \u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "JSON \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"JSON Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},xml_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201cXML \u683c\u5f0f\u201c",en:'Click to switch to "XML Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300cXML \u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300cXML \u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "XML \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"XML Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},textlines_output:{zh:"\u70b9\u51fb\u5207\u6362 \u201c\u591a\u884c\u6587\u672c\u683c\u5f0f\u201c",en:'Click to switch to "Multi-line Text Format"',zh_TW:"\u9ede\u9078\u5207\u63db\u300c\u591a\u884c\u6587\u5b57\u683c\u5f0f\u300d",ja:"\u30af\u30ea\u30c3\u30af\u3057\u3066\u300c\u8907\u6570\u884c\u30c6\u30ad\u30b9\u30c8\u5f62\u5f0f\u300d\u306b\u5207\u308a\u66ff\u3048",ko:'\ud074\ub9ad\ud558\uc5ec "\uc5ec\ub7ec \uc904 \ud14d\uc2a4\ud2b8 \ud615\uc2dd"\uc73c\ub85c \uc804\ud658',tr:'"\xc7ok Sat\u0131rl\u0131 Metin Format\u0131na Ge\xe7mek \u0130\xe7in T\u0131klay\u0131n'},system_prompt_helper_2:{zh:"2. \u5728\u672a\u5b8c\u5168\u7406\u89e3\u9ed8\u8ba4Prompt\u7684\u60c5\u51b5\u4e0b\uff0c\u8bf7\u52ff\u968f\u610f\u4fee\u6539\uff0c\u5426\u5219\u53ef\u80fd\u65e0\u6cd5\u5de5\u4f5c\u3002",en:"2. Do not modify the default prompt without fully understanding it, otherwise it may not work.",zh_TW:"2. \u5728\u672a\u5b8c\u5168\u7406\u89e3\u9810\u8a2dPrompt\u7684\u60c5\u6cc1\u4e0b\uff0c\u8acb\u52ff\u96a8\u610f\u4fee\u6539\uff0c\u5426\u5247\u53ef\u80fd\u7121\u6cd5\u904b\u4f5c\u3002",ja:"2. \u30c7\u30d5\u30a9\u30eb\u30c8\u306e\u30d7\u30ed\u30f3\u30d7\u30c8\u3092\u5b8c\u5168\u306b\u7406\u89e3\u305b\u305a\u306b\u5909\u66f4\u3057\u306a\u3044\u3067\u304f\u3060\u3055\u3044\u3002\u52d5\u4f5c\u3057\u306a\u304f\u306a\u308b\u53ef\u80fd\u6027\u304c\u3042\u308a\u307e\u3059\u3002",ko:"2. \uae30\ubcf8 \ud504\ub86c\ud504\ud2b8\ub97c \uc644\uc804\ud788 \uc774\ud574\ud558\uc9c0 \uc54a\uace0 \uc218\uc815\ud558\uc9c0 \ub9c8\uc2ed\uc2dc\uc624. \uc791\ub3d9\ud558\uc9c0 \uc54a\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"2. Varsay\u0131lan komut istemini tam olarak anlamadan de\u011fi\u015ftirmeyin, aksi takdirde \xe7al\u0131\u015fmayabilir"},if_pre_init:{zh:"\u662f\u5426\u9884\u521d\u59cb\u5316",en:"Whether to pre-initialize",zh_TW:"\u662f\u5426\u9810\u521d\u59cb\u5316",ja:"\u4e8b\u524d\u521d\u671f\u5316\u3059\u308b\u304b",ko:"\uc0ac\uc804 \ucd08\uae30\ud654 \uc5ec\ubd80",tr:"\xd6nceden Ba\u015flat\u0131l\u0131p Ba\u015flat\u0131lmayaca\u011f\u0131"},export_old:{zh:"\u5bfc\u51fa\u65e7\u7248",en:"Export old version",zh_TW:"\u532f\u51fa\u820a\u7248",ja:"\u65e7\u30d0\u30fc\u30b8\u30e7\u30f3\u3092\u30a8\u30af\u30b9\u30dd\u30fc\u30c8",ko:"\uc774\uc804 \ubc84\uc804 \ub0b4\ubcf4\ub0b4\uae30",tr:"Eski S\xfcr\xfcm\xfc D\u0131\u015fa Aktar"},favorite_words_helper:{zh:"\u5bfc\u5165\u8bcd\u6c47\u8bf7\u4f7f\u7528txt\u6587\u4ef6\uff0c\u6bcf\u4e00\u884c\u4e00\u4e2a\u5355\u8bcd\u3002",en:"To import vocabulary, please use a txt file with one word per line.",zh_TW:"\u532f\u5165\u8a5e\u5f59\u8acb\u4f7f\u7528 txt \u6a94\u6848\uff0c\u6bcf\u4e00\u884c\u4e00\u500b\u55ae\u5b57\u3002",ja:"\u5358\u8a9e\u3092\u30a4\u30f3\u30dd\u30fc\u30c8\u3059\u308b\u306b\u306f\u30011\u884c\u306b1\u5358\u8a9e\u305a\u3064\u8a18\u8ff0\u3057\u305ftxt\u30d5\u30a1\u30a4\u30eb\u3092\u4f7f\u7528\u3057\u3066\u304f\u3060\u3055\u3044\u3002",ko:"\ub2e8\uc5b4\ub97c \uac00\uc838\uc624\ub824\uba74 \ud55c \uc904\uc5d0 \ud55c \ub2e8\uc5b4\uc529 .txt \ud30c\uc77c\uc744 \uc0ac\uc6a9\ud558\uc138\uc694.",tr:"S\xf6zl\xfck eklemek i\xe7in l\xfctfen her sat\u0131rda bir kelime bulunan bir txt dosyas\u0131 kullan\u0131n"},btn_tip_click_away:{zh:"\u5931\u7126\u9690\u85cf/\u663e\u793a",en:"Loss of focus hide/show",zh_TW:"\u5931\u7126\u96b1\u85cf/\u986f\u793a",ja:"\u30d5\u30a9\u30fc\u30ab\u30b9\u3092\u5931\u3063\u305f\u6642\u306b\u975e\u8868\u793a/\u8868\u793a",ko:"\ud3ec\ucee4\uc2a4 \uc783\uc744 \uc2dc \uc228\uae30\uae30/\ud45c\uc2dc",tr:"Odak Kayb\u0131nda Gizle/G\xf6ster"},btn_tip_follow_selection:{zh:"\u8ddf\u968f/\u56fa\u5b9a\u6a21\u5f0f",en:"Follow/Fixed Mode",zh_TW:"\u8ddf\u96a8/\u56fa\u5b9a\u6a21\u5f0f",ja:"\u8ffd\u5f93/\u56fa\u5b9a\u30e2\u30fc\u30c9",ko:"\ub530\ub77c\uac00\uae30/\uace0\uc815 \ubaa8\ub4dc",tr:"Takip/Sabit Mod"},btn_tip_simple_style:{zh:"\u8ff7\u4f60/\u5e38\u89c4\u6a21\u5f0f",en:"Mini/Regular Mode",zh_TW:"\u8ff7\u4f60/\u5e38\u898f\u6a21\u5f0f",ja:"\u30df\u30cb/\u901a\u5e38\u30e2\u30fc\u30c9",ko:"\ubbf8\ub2c8/\uc77c\ubc18 \ubaa8\ub4dc",tr:"Mini/Normal Mod"},btn_tip_dark_mode:{zh:"\u4eae\u8272/\u6697\u8272/\u8ddf\u968f\u7cfb\u7edf",en:"Light/Dark/Auto",zh_TW:"\u4eae\u8272/\u6697\u8272/\u8ddf\u96a8\u7cfb\u7d71",ja:"\u30e9\u30a4\u30c8/\u30c0\u30fc\u30af/\u81ea\u52d5",ko:"\ub77c\uc774\ud2b8/\ub2e4\ud06c/\uc790\ub3d9",tr:"A\xe7\u0131k/Koyu/Otomatik"},api_placeholder:{zh:"\u5360\u4f4d\u7b26",en:"Placeholder",zh_TW:"\u4f54\u4f4d\u7b26",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354",tr:"Yer Tutucu"},api_placetag:{zh:"\u5360\u4f4d\u6807\u7b7e",en:"Placeholder tags",zh_TW:"\u4f54\u4f4d\u6a19",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30bf\u30b0",ko:"\ud50c\ub808\uc774\uc2a4\ud640\ub354 \ud0dc\uadf8",tr:"Yer Tutucu Etiketleri"},placetag_format:{zh:"\u5360\u4f4d\u7b26\u683c\u5f0f",en:"Placeholder Format",zh_TW:"\u4f54\u4f4d\u7b26\u683c\u5f0f",ja:"\u30d7\u30ec\u30fc\u30b9\u30db\u30eb\u30c0\u30fc\u5f62\u5f0f",ko:"\uc790\ub9ac \ud45c\uc2dc\uc790 \ud615\uc2dd",tr:"Yer Tutucu Format\u0131"},format_compact:{zh:"\u7b80\u6d01\u683c\u5f0f ",en:"Compact Format ",zh_TW:"\u7c21\u6f54\u683c\u5f0f ",ja:"\u7c21\u6f54\u5f62\u5f0f ",ko:"\uac04\uacb0 \ud615\uc2dd ",tr:"Kompakt Format "},format_attribute:{zh:"\u5c5e\u6027\u683c\u5f0f ",en:"Attribute Format ",zh_TW:"\u5c6c\u6027\u683c\u5f0f ",ja:"\u5c5e\u6027\u5f62\u5f0f ",ko:"\uc18d\uc131 \ud615\uc2dd ",tr:"\xd6znitelik Format\u0131 "},detected_lang:{zh:"\u8bed\u8a00\u68c0\u6d4b",en:"Language detection",zh_TW:"\u8a9e\u8a00\u5075\u6e2c",ja:"\u8a00\u8a9e\u691c\u51fa",ko:"\uc5b8\uc5b4 \uac10\uc9c0",tr:"Dil Alg\u0131lama"},detected_result:{zh:"\u68c0\u6d4b\u7ed3\u679c",en:"Detect result",zh_TW:"\u5075\u6e2c\u7d50\u679c",ja:"\u691c\u51fa\u7d50\u679c",ko:"\uac10\uc9c0 \uacb0\uacfc",tr:"Sonu\xe7 Tespiti"},subtitle_translate:{zh:"\u5b57\u5e55\u7ffb\u8bd1",en:"Subtitle Translation",zh_TW:"\u5b57\u5e55\u7ffb\u8b6f",ja:"\u5b57\u5e55\u7ffb\u8a33",ko:"\uc790\ub9c9 \ubc88\uc5ed",tr:"Altyaz\u0131 \xc7evirisi"},bilingual_subtitles:{zh:"\u53cc\u8bed\u5b57\u5e55",en:"Bilingual subtitles",zh_TW:"\u96d9\u8a9e\u5b57\u5e55",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9",tr:"\u0130ki Dilli Altyaz\u0131lar"},vocabulary_book:{zh:"\u751f\u8bcd\u672c",en:"Vocabulary",zh_TW:"\u751f\u8a5e\u672c",ja:"\u5358\u8a9e\u5e33",ko:"\ub2e8\uc5b4\uc7a5",tr:"Kelime Bilgisi"},download_subtitles_vtt:{zh:"\u4e0b\u8f7d\u5b57\u5e55 (VTT)",en:"Download subtitles (VTT)",zh_TW:"\u4e0b\u8f09\u5b57\u5e55 (VTT)",ja:"\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (VTT)",ko:"\uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc (VTT)",tr:"Altyaz\u0131lar\u0131 \u0130ndir (VTT)"},download_raw_subtitle_events_json:{zh:"\u4e0b\u8f7d\u6e90\u6570\u636e (JSON)",en:"Download source data (JSON)",zh_TW:"\u4e0b\u8f09\u4f86\u6e90\u8cc7\u6599 (JSON)",ja:"\u30bd\u30fc\u30b9\u30c7\u30fc\u30bf\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (JSON)",ko:"\uc6d0\ubcf8 \ub370\uc774\ud130 \ub2e4\uc6b4\ub85c\ub4dc (JSON)",tr:"Kaynak Verilerini \u0130ndirin (JSON)"},download_translation_subtitles_vtt:{zh:"\u4e0b\u8f7d\u8bd1\u6587\u5b57\u5e55 (VTT)",en:"Download translation subtitles (VTT)",zh_TW:"\u4e0b\u8f09\u8b6f\u6587\u5b57\u5e55 (VTT)",ja:"\u7ffb\u8a33\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 (VTT)",ko:"\ubc88\uc5ed \uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc (VTT)",tr:"\xc7eviri Altyaz\u0131lar\u0131n\u0131 \u0130ndir (VTT)"},toggle_subtitle_translate:{zh:"\u542f\u7528\u5b57\u5e55\u7ffb\u8bd1",en:"Enable subtitle translation",zh_TW:"\u555f\u7528\u5b57\u5e55\u7ffb\u8b6f",ja:"\u5b57\u5e55\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\uc790\ub9c9 \ubc88\uc5ed \ud65c\uc131\ud654",tr:"Altyaz\u0131 \xc7evirisini Etkinle\u015ftir"},default_subtitle_translate:{zh:"\u9ed8\u8ba4\u7acb\u5373\u7ffb\u8bd1",en:"Translate subtitles immediately by default",zh_TW:"\u9810\u8a2d\u7acb\u5373\u7ffb\u8b6f",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u3067\u3059\u3050\u306b\u5b57\u5e55\u3092\u7ffb\u8a33",ko:"\uae30\ubcf8\uc801\uc73c\ub85c \uc790\ub9c9 \uc989\uc2dc \ubc88\uc5ed",tr:"Altyaz\u0131lar\u0131 varsay\u0131lan olarak hemen \xe7evir"},enable_subtitle_translate:{zh:"\u5f00\u542f\u7ffb\u8bd1",en:"Enable translation",zh_TW:"\u958b\u555f\u7ffb\u8b6f",ja:"\u7ffb\u8a33\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ubc88\uc5ed \ud65c\uc131\ud654",tr:"\xc7eviriyi etkinle\u015ftir"},is_bilingual_view:{zh:"\u53cc\u8bed\u663e\u793a",en:"Enable bilingual display",zh_TW:"\u96d9\u8a9e\u986f\u793a",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u8868\u793a",ko:"\uc774\uc911 \uc5b8\uc5b4 \ud45c\uc2dc",tr:"\u0130ki Dilli G\xf6r\xfcnt\xfclemeyi Etkinle\u015ftir"},is_blur_translation:{zh:"\u6a21\u7cca\u8bd1\u6587",en:"Blur Translation",zh_TW:"\u6a21\u7cca\u8b6f\u6587",ja:"\u7ffb\u8a33\u3092\u307c\u304b\u3059",ko:"\ubc88\uc5ed \ud750\ub9bc",tr:"Bulan\u0131kl\u0131k \xc7evirisi"},is_skip_ad:{zh:"\u5feb\u8fdb\u5e7f\u544a",en:"Skip AD",zh_TW:"\u5feb\u8f49\u5ee3\u544a",ja:"\u5e83\u544a\u3092\u30b9\u30ad\u30c3\u30d7",ko:"\uad11\uace0 \uac74\ub108\ub6f0\uae30",tr:"Reklam\u0131 Atla"},download_subtitles:{zh:"\u4e0b\u8f7d\u5b57\u5e55",en:"Download subtitles",zh_TW:"\u4e0b\u8f09\u5b57\u5e55",ja:"\u5b57\u5e55\u3092\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9",ko:"\uc790\ub9c9 \ub2e4\uc6b4\ub85c\ub4dc",tr:"Altyaz\u0131lar\u0131 \u0130ndir"},background_styles:{zh:"\u80cc\u666f\u6837\u5f0f",en:"Background Style",zh_TW:"\u80cc\u666f\u6a23\u5f0f",ja:"\u80cc\u666f\u30b9\u30bf\u30a4\u30eb",ko:"\ubc30\uacbd \uc2a4\ud0c0\uc77c",tr:"Arka Plan Stili"},origin_styles:{zh:"\u539f\u6587\u6837\u5f0f",en:"Original style",zh_TW:"\u539f\u6587\u6a23\u5f0f",ja:"\u539f\u6587\u30b9\u30bf\u30a4\u30eb",ko:"\uc6d0\ubb38 \uc2a4\ud0c0\uc77c",tr:"Orijinal Stil"},translation_styles:{zh:"\u8bd1\u6587\u6837\u5f0f",en:"Translation style",zh_TW:"\u8b6f\u6587\u6a23\u5f0f",ja:"\u7ffb\u8a33\u30b9\u30bf\u30a4\u30eb",ko:"\ubc88\uc5ed\ubb38 \uc2a4\ud0c0\uc77c",tr:"\xc7eviri Stili"},ai_segmentation:{zh:"AI\u667a\u80fd\u65ad\u53e5",en:"AI intelligent punctuation",zh_TW:"AI\u667a\u6167\u65b7\u53e5",ja:"AI\u306b\u3088\u308b\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u306a\u6587\u5206\u5272",ko:"AI \uc9c0\ub2a5\ud615 \ubb38\uc7a5 \ubd84\ub9ac",tr:"AI Ak\u0131ll\u0131 Noktalama \u0130\u015faretleri"},builtin_sentence_break:{zh:"\u5185\u7f6e\u65ad\u53e5",en:"Built-in Sentence Break",zh_TW:"\u5167\u7f6e\u65b7\u53e5",ja:"\u5185\u8535\u6587\u5206\u5272",ko:"\ub0b4\uc7a5 \ubb38\uc7a5 \ubd84\ub9ac",tr:"Yerle\u015fik C\xfcmle Aras\u0131"},rule_sentence_break:{zh:"\u89c4\u5219\u65ad\u53e5",en:"Rule-based Break",zh_TW:"\u898f\u5247\u65b7\u53e5",ja:"\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u5206\u5272",ko:"\uaddc\uce59 \uae30\ubc18 \ubd84\ub9ac",tr:"Kural Tabanl\u0131 Mola"},statistical_sentence_break:{zh:"\u7edf\u8ba1\u65ad\u53e5",en:"Statistical Break",zh_TW:"\u7d71\u8a08\u65b7\u53e5",ja:"\u7d71\u8a08\u7684\u5206\u5272",ko:"\ud1b5\uacc4 \uae30\ubc18 \ubd84\ub9ac",tr:"\u0130statistiksel K\u0131r\u0131l\u0131m"},force_subtitle_retranslate:{zh:"\u5f3a\u5236\u91cd\u7ffb",en:"Force re-translate",zh_TW:"\u5f37\u5236\u91cd\u7ffb",ja:"\u5f37\u5236\u518d\u7ffb\u8a33",ko:"\uac15\uc81c \uc7ac\ubc88\uc5ed",tr:"Yeniden \xc7evirmeye Zorla"},ai_enhanced_context:{zh:"\u589e\u5f3a\u667a\u80fd\u4e0a\u4e0b\u6587",en:"Enhanced Intelligent Context",zh_TW:"\u589e\u5f37\u667a\u6167\u4e0a\u4e0b\u6587",ja:"\u5f37\u5316\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8",ko:"\uac15\ud654 \uc9c0\ub2a5\ud615 \ucee8\ud14d\uc2a4\ud2b8",tr:"Geli\u015fmi\u015f Ak\u0131ll\u0131 \u0130\xe7erik"},ai_context_analyzing:{zh:"AI\u6b63\u5728\u5206\u6790\u89c6\u9891\u5185\u5bb9...",en:"AI is analyzing video content...",zh_TW:"AI\u6b63\u5728\u5206\u6790\u5f71\u7247\u5167\u5bb9...",ja:"AI\u304c\u52d5\u753b\u5185\u5bb9\u3092\u5206\u6790\u4e2d...",ko:"AI\uac00 \ube44\ub514\uc624 \ucf58\ud150\uce20\ub97c \ubd84\uc11d \uc911...",tr:"AI video i\xe7eri\u011fini analiz ediyor..."},ai_chunk_length:{zh:"AI\u5904\u7406\u5207\u5272\u957f\u5ea6(200-20000)",en:"AI processing chunk length(200-20000)",zh_TW:"AI \u8655\u7406\u5207\u5272\u9577\u5ea6(200-20000)",ja:"AI\u51e6\u7406\u306e\u30c1\u30e3\u30f3\u30af\u9577(200-20000)",ko:"AI \ucc98\ub9ac \uccad\ud06c \uae38\uc774(200-20000)",tr:"AI \u0130\u015fleme Par\xe7a Uzunlu\u011fu (200-20000)"},subtitle_helper_1:{zh:"1\u3001\u76ee\u524d\u4ec5\u652f\u6301Youtube\u684c\u9762\u7f51\u7ad9\u3002",en:"1. Currently only supports Youtube desktop website.",zh_TW:"1.\u76ee\u524d\u50c5\u652f\u63f4Youtube\u684c\u9762\u7db2\u7ad9\uff0c\u4e14\u50c5\u652f\u63f4\u700f\u89bd\u5668\u64f4\u5145\u529f\u80fd\u3002",ja:"1. \u73fe\u5728\u3001Youtube\u306e\u30c7\u30b9\u30af\u30c8\u30c3\u30d7\u30b5\u30a4\u30c8\u306e\u307f\u30b5\u30dd\u30fc\u30c8\u3057\u3066\u3044\u307e\u3059\u3002",ko:"1. \ud604\uc7ac Youtube \ub370\uc2a4\ud06c\ud1b1 \uc6f9\uc0ac\uc774\ud2b8\ub9cc \uc9c0\uc6d0\ud569\ub2c8\ub2e4.",tr:"1. \u015eu anda yaln\u0131zca Youtube masa\xfcst\xfc web sitesini desteklemektedir."},subtitle_helper_2:{zh:"2\u3001\u63d2\u4ef6\u5185\u7f6e\u57fa\u7840\u7684\u5b57\u5e55\u5408\u5e76\u3001\u65ad\u53e5\u7b97\u6cd5\uff0c\u53ef\u6ee1\u8db3\u5927\u90e8\u5206\u60c5\u51b5\u3002",en:"2. The plug-in has built-in basic subtitle merging and sentence segmentation algorithms, which can meet most situations.",zh_TW:"2. \u64f4\u5145\u529f\u80fd\u5167\u5efa\u57fa\u790e\u7684\u5b57\u5e55\u5408\u4f75\u3001\u65b7\u53e5\u6f14\u7b97\u6cd5\uff0c\u53ef\u6eff\u8db3\u5927\u90e8\u5206\u60c5\u6cc1\u3002",ja:"2. \u30d7\u30e9\u30b0\u30a4\u30f3\u306b\u306f\u57fa\u672c\u7684\u306a\u5b57\u5e55\u7d50\u5408\u3068\u6587\u5206\u5272\u30a2\u30eb\u30b4\u30ea\u30ba\u30e0\u304c\u7d44\u307f\u8fbc\u307e\u308c\u3066\u304a\u308a\u3001\u307b\u3068\u3093\u3069\u306e\u72b6\u6cc1\u306b\u5bfe\u5fdc\u3067\u304d\u307e\u3059\u3002",ko:"2. \ud50c\ub7ec\uadf8\uc778\uc5d0\ub294 \uae30\ubcf8\uc801\uc778 \uc790\ub9c9 \ubcd1\ud569 \ubc0f \ubb38\uc7a5 \ubd84\ub9ac \uc54c\uace0\ub9ac\uc998\uc774 \ub0b4\uc7a5\ub418\uc5b4 \uc788\uc5b4 \ub300\ubd80\ubd84\uc758 \uc0c1\ud669\uc5d0 \ub300\uc751\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.",tr:"2. Eklenti, \xe7o\u011fu duruma uygun temel altyaz\u0131 birle\u015ftirme ve c\xfcmle b\xf6lme algoritmalar\u0131na sahiptir."},subtitle_helper_3:{zh:"3\u3001\u4ea6\u53ef\u4ee5\u542f\u7528AI\u667a\u80fd\u65ad\u53e5\uff0c\u4f46\u9700\u8003\u8651\u5207\u5272\u957f\u5ea6\u53caAI\u63a5\u53e3\u80fd\u529b\uff0c\u53ef\u80fd\u5904\u7406\u65f6\u95f4\u4f1a\u5f88\u957f\u3002\u82e5\u5904\u7406\u5931\u8d25\uff0c\u5c06\u81ea\u52a8\u964d\u7ea7\u4e3a\u5185\u7f6e\u65ad\u53e5\u5e76\u7ffb\u8bd1\u3002",en:"3. You can also enable AI intelligent segmentation, but consider the chunk length and AI interface capacity, as processing may take a long time. If it fails, it will automatically fall back to built-in sentence break and translation.",zh_TW:"3. \u4ea6\u53ef\u555f\u7528 AI \u667a\u6167\u65b7\u53e5\uff0c\u4f46\u9700\u8003\u616e\u5207\u5272\u9577\u5ea6\u53ca AI \u4ecb\u9762\u80fd\u529b\uff0c\u8655\u7406\u6642\u9593\u53ef\u80fd\u6703\u5f88\u9577\u3002\u82e5\u8655\u7406\u5931\u6557\uff0c\u5c07\u81ea\u52d5\u964d\u7d1a\u70ba\u5167\u7f6e\u65b7\u53e5\u4e26\u7ffb\u8b6f\u3002",ja:"3. AI\u306b\u3088\u308b\u30a4\u30f3\u30c6\u30ea\u30b8\u30a7\u30f3\u30c8\u306a\u6587\u5206\u5272\u3092\u6709\u52b9\u306b\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u307e\u3059\u304c\u3001\u30c1\u30e3\u30f3\u30af\u9577\u3084AI\u306e\u51e6\u7406\u80fd\u529b\u3092\u8003\u616e\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u3001\u51e6\u7406\u306b\u6642\u9593\u304c\u304b\u304b\u308b\u5834\u5408\u304c\u3042\u308a\u307e\u3059\u3002\u51e6\u7406\u304c\u5931\u6557\u3057\u305f\u5834\u5408\u306f\u3001\u81ea\u52d5\u7684\u306b\u5185\u8535\u6587\u5206\u5272\u3068\u7ffb\u8a33\u306b\u30d5\u30a9\u30fc\u30eb\u30d0\u30c3\u30af\u3055\u308c\u307e\u3059\u3002",ko:"3. AI \uc9c0\ub2a5\ud615 \ubd84\ub9ac\ub97c \ud65c\uc131\ud654\ud560 \uc218\ub3c4 \uc788\uc9c0\ub9cc, \uccad\ud06c \uae38\uc774\uc640 AI \uc778\ud130\ud398\uc774\uc2a4 \ucc98\ub9ac \ub2a5\ub825\uc744 \uace0\ub824\ud574\uc57c \ud558\uba70 \ucc98\ub9ac \uc2dc\uac04\uc774 \uae38\uc5b4\uc9c8 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucc98\ub9ac\uc5d0 \uc2e4\ud328\ud560 \uacbd\uc6b0 \uc790\ub3d9\uc73c\ub85c \ub0b4\uc7a5 \ubb38\uc7a5 \ubd84\ub9ac \ubc0f \ubc88\uc5ed\uc73c\ub85c \ub300\uccb4\ub429\ub2c8\ub2e4.",tr:"3. AI destekli ak\u0131ll\u0131 b\xf6l\xfcmlemeyi de etkinle\u015ftirebilirsiniz, ancak i\u015flem uzun s\xfcrebilece\u011finden, \xf6bek uzunlu\u011funu ve yapay zek\xe2 aray\xfcz\xfc kapasitesini g\xf6z \xf6n\xfcnde bulundurun. Ba\u015far\u0131s\u0131z olursa, otomatik olarak yerle\u015fik c\xfcmle b\xf6lme ve \xe7eviri \xf6zelli\u011fine geri d\xf6necektir."},show_subtitle_list:{zh:"\u663e\u793a\u5b57\u5e55\u5217\u8868",en:"Show Subtitle List",zh_TW:"\u986f\u793a\u5b57\u5e55\u6e05\u55ae",ja:"\u5b57\u5e55\u30ea\u30b9\u30c8\u3092\u8868\u793a",ko:"\uc790\ub9c9 \ubaa9\ub85d \ud45c\uc2dc",tr:"Altyaz\u0131 Listesini G\xf6ster"},subtitle_loading_notification:{zh:"\u5b57\u5e55\u52a0\u8f7d\u901a\u77e5",en:"Subtitle loading notification",zh_TW:"\u5b57\u5e55\u8f09\u5165\u901a\u77e5",ja:"\u5b57\u5e55\u8aad\u307f\u8fbc\u307f\u901a\u77e5",ko:"\uc790\ub9c9 \ub85c\ub529 \uc54c\ub9bc",tr:"Altyaz\u0131 Y\xfckleme Bildirimi"},hide_subtitle_button:{zh:"\u9690\u85cf\u529f\u80fd\u6309\u94ae",en:"Hide function button",zh_TW:"\u96b1\u85cf\u529f\u80fd\u6309\u9215",ja:"\u6a5f\u80fd\u30dc\u30bf\u30f3\u3092\u975e\u8868\u793a",ko:"\uae30\ub2a5 \ubc84\ud2bc \uc228\uae30\uae30",tr:"\u0130\u015flev D\xfc\u011fmesini Gizle"},subtitle_hover_lookup:{zh:"\u60ac\u505c\u67e5\u8bcd",en:"Hover Word Lookup",zh_TW:"\u61f8\u505c\u67e5\u8a5e",ja:"\u30db\u30d0\u30fc\u8f9e\u66f8\u691c\u7d22",ko:"\ud638\ubc84 \ub2e8\uc5b4 \uc870\ud68c",tr:"Vurgulu Kelime Arama"},default_styles_example:{zh:"\u9ed8\u8ba4\u6837\u5f0f\u53c2\u8003\uff1a",en:"Default styles reference:",zh_TW:"\u9810\u8a2d\u6a23\u5f0f\u53c3\u8003\uff1a",ja:"\u30c7\u30d5\u30a9\u30eb\u30c8\u30b9\u30bf\u30a4\u30eb\u306e\u4f8b\uff1a",ko:"\uae30\ubcf8 \uc2a4\ud0c0\uc77c \uc608\uc2dc:",tr:"Varsay\u0131lan Stiller Referans\u0131:"},subtitle_load_succeed:{zh:"\u53cc\u8bed\u5b57\u5e55\u52a0\u8f7d\u6210\u529f\uff01",en:"Bilingual subtitles loaded successfully!",zh_TW:"\u96d9\u8a9e\u5b57\u5e55\u8f09\u5165\u6210\u529f\uff01",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55\u306e\u8aad\u307f\u8fbc\u307f\u306b\u6210\u529f\u3057\u307e\u3057\u305f\uff01",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9 \ub85c\ub529 \uc131\uacf5!",tr:"\u0130ki Dilli Altyaz\u0131lar Ba\u015far\u0131yla Y\xfcklendi"},subtitle_load_failed:{zh:"\u53cc\u8bed\u5b57\u5e55\u52a0\u8f7d\u5931\u8d25\uff01",en:"Failed to load bilingual subtitles!",zh_TW:"\u96d9\u8a9e\u5b57\u5e55\u8f09\u5165\u5931\u6557\uff01",ja:"\u30d0\u30a4\u30ea\u30f3\u30ac\u30eb\u5b57\u5e55\u306e\u8aad\u307f\u8fbc\u307f\u306b\u5931\u6557\u3057\u307e\u3057\u305f\uff01",ko:"\uc774\uc911 \uc5b8\uc5b4 \uc790\ub9c9 \ub85c\ub529 \uc2e4\ud328!",tr:"\u0130ki Dilli Altyaz\u0131lar Y\xfcklenemedi"},try_get_subtitle_data:{zh:"\u5c1d\u8bd5\u83b7\u53d6\u5b57\u5e55\u6570\u636e\uff0c\u8bf7\u7a0d\u5019...",en:"Trying to get subtitle data, please wait...",zh_TW:"\u5617\u8a66\u53d6\u5f97\u5b57\u5e55\u8cc7\u6599\uff0c\u8acb\u7a0d\u5019...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u53d6\u5f97\u3057\u3066\u3044\u307e\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \uac00\uc838\uc624\ub294 \uc911\uc785\ub2c8\ub2e4. \uc7a0\uc2dc \uae30\ub2e4\ub824\uc8fc\uc138\uc694...",tr:"Altyaz\u0131 verileri al\u0131nmaya \xe7al\u0131\u015f\u0131l\u0131yor"},subtitle_data_processing:{zh:"\u5b57\u5e55\u6570\u636e\u5904\u7406\u4e2d...",en:"Subtitle data processing...",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u8655\u7406\u4e2d...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u51e6\u7406\u4e2d...",ko:"\uc790\ub9c9 \ub370\uc774\ud130 \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 Verileri \u0130\u015fleniyor..."},starting_to_process_subtitle:{zh:"\u5f00\u59cb\u5904\u7406\u5b57\u5e55\u6570\u636e...",en:"Starting to process subtitle data...",zh_TW:"\u958b\u59cb\u8655\u7406\u5b57\u5e55\u8cc7\u6599...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u51e6\u7406\u3092\u958b\u59cb\u3057\u307e\u3059...",ko:"\uc790\ub9c9 \ub370\uc774\ud130 \ucc98\ub9ac\ub97c \uc2dc\uc791\ud569\ub2c8\ub2e4...",tr:"Altyaz\u0131 verileri i\u015flenmeye ba\u015fl\u0131yor..."},subtitle_data_is_ready:{zh:"\u5b57\u5e55\u6570\u636e\u5df2\u51c6\u5907\u5c31\u7eea\uff0c\u8bf7\u70b9\u51fbKT\u6309\u94ae\u52a0\u8f7d",en:"The subtitle data is ready, please click the KT button to load it",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u5df2\u6e96\u5099\u5c31\u7dd2\uff0c\u8acb\u9ede\u9078 KT \u6309\u9215\u8f09\u5165",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u6e96\u5099\u304c\u3067\u304d\u307e\u3057\u305f\u3002KT\u30dc\u30bf\u30f3\u3092\u30af\u30ea\u30c3\u30af\u3057\u3066\u8aad\u307f\u8fbc\u3093\u3067\u304f\u3060\u3055\u3044",ko:"\uc790\ub9c9 \ub370\uc774\ud130\uac00 \uc900\ube44\ub418\uc5c8\uc2b5\ub2c8\ub2e4. KT \ubc84\ud2bc\uc744 \ud074\ub9ad\ud558\uc5ec \ub85c\ub4dc\ud558\uc138\uc694",tr:"Altyaz\u0131 verileri haz\u0131r, y\xfcklemek i\xe7in l\xfctfen KT d\xfc\u011fmesine t\u0131klay\u0131n"},starting_reprocess_events:{zh:"\u91cd\u65b0\u5904\u7406\u5b57\u5e55\u6570\u636e...",en:"Reprocess the subtitle data...",zh_TW:"\u91cd\u65b0\u8655\u7406\u5b57\u5e55\u8cc7\u6599...",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u518d\u51e6\u7406\u3057\u3066\u3044\u307e\u3059...",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \ub2e4\uc2dc \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 verilerini yeniden i\u015fleyin..."},waitting_for_subtitle:{zh:"\u8bf7\u7b49\u5f85\u5b57\u5e55\u6570\u636e",en:"Please wait for the subtitle data.",zh_TW:"\u8acb\u7b49\u5f85\u5b57\u5e55\u8cc7\u6599",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u3092\u5f85\u6a5f\u4e2d",ko:"\uc790\ub9c9 \ub370\uc774\ud130\ub97c \uae30\ub2e4\ub824\uc8fc\uc138\uc694",tr:"L\xfctfen altyaz\u0131 verilerini bekleyin."},ai_processing_pls_wait:{zh:"AI\u5904\u7406\u4e2d\uff0c\u8bf7\u7a0d\u7b49...",en:"AI processing in progress, please wait...",zh_TW:"AI \u8655\u7406\u4e2d\uff0c\u8acb\u7a0d\u5019...",ja:"AI\u51e6\u7406\u4e2d\u3067\u3059\u3002\u304a\u5f85\u3061\u304f\u3060\u3055\u3044...",ko:"AI \ucc98\ub9ac \uc911\uc785\ub2c8\ub2e4. \uc7a0\uc2dc \uae30\ub2e4\ub824\uc8fc\uc138\uc694...",tr:"AI i\u015fleme devam ediyor"},processing_subtitles:{zh:"\u5b57\u5e55\u5904\u7406\u4e2d...",en:"Subtitle processing...",zh_TW:"\u5b57\u5e55\u8655\u7406\u4e2d...",ja:"\u5b57\u5e55\u51e6\u7406\u4e2d...",ko:"\uc790\ub9c9 \ucc98\ub9ac \uc911...",tr:"Altyaz\u0131 \u0130\u015fleniyor..."},waiting_subtitles:{zh:"\u7b49\u5f85\u5b57\u5e55\u4e2d",en:"Waiting for subtitles",zh_TW:"\u7b49\u5f85\u5b57\u5e55\u4e2d",ja:"\u5b57\u5e55\u5f85\u6a5f\u4e2d",ko:"\uc790\ub9c9 \ub300\uae30 \uc911",tr:"Altyaz\u0131lar\u0131 Bekliyorum"},subtitle_is_not_yet_ready:{zh:"\u5b57\u5e55\u6570\u636e\u5c1a\u672a\u51c6\u5907\u597d",en:"Subtitle is not yet ready.",zh_TW:"\u5b57\u5e55\u8cc7\u6599\u5c1a\u672a\u6e96\u5099\u597d",ja:"\u5b57\u5e55\u30c7\u30fc\u30bf\u306e\u6e96\u5099\u304c\u307e\u3060\u3067\u304d\u3066\u3044\u307e\u305b\u3093\u3002",ko:"\uc790\ub9c9 \ub370\uc774\ud130\uac00 \uc544\uc9c1 \uc900\ube44\ub418\uc9c0 \uc54a\uc558\uc2b5\ub2c8\ub2e4.",tr:"Altyaz\u0131 hen\xfcz haz\u0131r de\u011fil."},log_level:{zh:"\u65e5\u5fd7\u7ea7\u522b",en:"Log Level",zh_TW:"\u65e5\u8a8c\u7b49\u7d1a",ja:"\u30ed\u30b0\u30ec\u30d9\u30eb",ko:"\ub85c\uadf8 \ub808\ubca8",tr:"G\xfcnl\xfck D\xfczeyi"},goto_custom_api_example:{zh:"\u70b9\u51fb\u67e5\u770b\u3010\u81ea\u5b9a\u4e49\u63a5\u53e3\u793a\u4f8b\u3011",en:"Click to view [Custom Interface Example]",zh_TW:"\u9ede\u9078\u6aa2\u8996\u3010\u81ea\u8a02\u4ecb\u9762\u7bc4\u4f8b\u3011",ja:"\u3010\u30ab\u30b9\u30bf\u30e0\u30a4\u30f3\u30bf\u30fc\u30d5\u30a7\u30fc\u30b9\u306e\u4f8b\u3011\u3092\u898b\u308b",ko:"[\uc0ac\uc6a9\uc790 \uc9c0\uc815 \uc778\ud130\ud398\uc774\uc2a4 \uc608\uc2dc] \ubcf4\uae30",tr:"[\xd6zel Aray\xfcz \xd6rne\u011fi]'ni G\xf6r\xfcnt\xfclemek \u0130\xe7in T\u0131klay\u0131n"},split_paragraph:{zh:"\u5207\u5206\u957f\u6bb5\u843d",en:"Split long paragraph",zh_TW:"\u5207\u5206\u9577\u6bb5\u843d",ja:"\u9577\u3044\u6bb5\u843d\u3092\u5206\u5272",ko:"\uae34 \ub2e8\ub77d \ub098\ub204\uae30",tr:"Uzun Paragraf\u0131 B\xf6l"},split_length:{zh:"\u5207\u5206\u957f\u5ea6 (0-10000)",en:"Segmentation length(0-10000)",zh_TW:"\u5207\u5206\u9577\u5ea6(0-10000)",ja:"\u5206\u5272\u9577(0-10000)",ko:"\ubd84\ud560 \uae38\uc774(0-10000)",tr:"Segmentasyon Uzunlu\u011fu (0-10000)"},highlight_words:{zh:"\u9ad8\u4eae\u6536\u85cf\u8bcd\u6c47",en:"Highlight favorite words",zh_TW:"\u9192\u76ee\u6a19\u793a\u6536\u85cf\u8a5e\u5f59",ja:"\u304a\u6c17\u306b\u5165\u308a\u5358\u8a9e\u3092\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\uc990\uaca8\ucc3e\ub294 \ub2e8\uc5b4 \ud558\uc774\ub77c\uc774\ud2b8",tr:"Favori Kelimeleri Vurgulay\u0131n"},split_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},split_textlength:{zh:"\u6309\u7167\u957f\u5ea6\u5207\u5206",en:"Split by length",zh_TW:"\u4f9d\u9577\u5ea6\u5207\u5206",ja:"\u9577\u3055\u3067\u5206\u5272",ko:"\uae38\uc774\ub85c \ub098\ub204\uae30",tr:"Uzunlu\u011fa G\xf6re B\xf6l\xfcnm\xfc\u015f"},split_punctuation:{zh:"\u6309\u7167\u53e5\u5b50\u5207\u5206",en:"Split by sentence",zh_TW:"\u6309\u7167\u53e5\u5b50\u5207\u5206",ja:"\u6587\u3067\u5206\u5272",ko:"\ubb38\uc7a5\uc73c\ub85c \ub098\ub204\uae30",tr:"C\xfcmleye G\xf6re B\xf6l\xfcnm\xfc\u015f"},highlight_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\ube44\ud65c\uc131\ud654",tr:"Devre D\u0131\u015f\u0131"},highlight_beforetrans:{zh:"\u7ffb\u8bd1\u524d\u9ad8\u4eae",en:"Highlight before translation",zh_TW:"\u7ffb\u8b6f\u524d\u9192\u76ee\u6a19\u793a",ja:"\u7ffb\u8a33\u524d\u306b\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\ubc88\uc5ed \uc804 \ud558\uc774\ub77c\uc774\ud2b8",tr:"\xc7eviriden \xd6nce Vurgula"},highlight_aftertrans:{zh:"\u7ffb\u8bd1\u540e\u9ad8\u4eae",en:"Highlight after translation",zh_TW:"\u7ffb\u8b6f\u5f8c\u9192\u76ee\u6a19\u793a",ja:"\u7ffb\u8a33\u5f8c\u306b\u30cf\u30a4\u30e9\u30a4\u30c8",ko:"\ubc88\uc5ed \ud6c4 \ud558\uc774\ub77c\uc774\ud2b8",tr:"\xc7eviriden Sonra Vurgula"},pagescroll_root_margin:{zh:"\u6eda\u52a8\u52a0\u8f7d\u63d0\u524d\u89e6\u53d1 (0-10000px)",en:"Early triggering of scroll loading (0-10000px)",zh_TW:"\u6efe\u52d5\u8f09\u5165\u63d0\u524d\u89f8\u767c (0-10000px)",ja:"\u30b9\u30af\u30ed\u30fc\u30eb\u8aad\u307f\u8fbc\u307f\u306e\u4e8b\u524d\u30c8\u30ea\u30ac\u30fc (0-10000px)",ko:"\uc2a4\ud06c\ub864 \ub85c\ub529 \ubbf8\ub9ac \ud2b8\ub9ac\uac70 (0-10000px)",tr:"Kayd\u0131rma Y\xfcklemesinin Erken Tetiklenmesi (0-10000 Piksel)"},styles_setting:{zh:"\u6837\u5f0f\u8bbe\u7f6e",en:"Style Setting",zh_TW:"\u6a23\u5f0f\u8a2d\u5b9a",ja:"\u30b9\u30bf\u30a4\u30eb\u8a2d\u5b9a",ko:"\uc2a4\ud0c0\uc77c \uc124\uc815",tr:"Stil Ayar\u0131"},style_name:{zh:"\u6837\u5f0f\u540d\u79f0",en:"Style Name",zh_TW:"\u6a23\u5f0f\u540d\u7a31",ja:"\u30b9\u30bf\u30a4\u30eb\u540d",ko:"\uc2a4\ud0c0\uc77c \uc774\ub984",tr:"Stil Ad\u0131"},style_code:{zh:"\u6837\u5f0f\u4ee3\u7801",en:"Style Code",zh_TW:"\u6a23\u5f0f\u7a0b\u5f0f\u78bc",ja:"\u30b9\u30bf\u30a4\u30eb\u30b3\u30fc\u30c9",ko:"\uc2a4\ud0c0\uc77c \ucf54\ub4dc",tr:"Stil Kodu"},long_sentence_threshold:{zh:"\u89c4\u5219\u65ad\u53e5\u9608\u503c (20-300\u5b57\u7b26)",en:"Rule-based segmentation threshold (20-300 chars)",zh_TW:"\u898f\u5247\u65b7\u53e5\u95be\u503c (20-300 \u5b57\u5143)",ja:"\u30eb\u30fc\u30eb\u30d9\u30fc\u30b9\u5206\u5272\u95be\u5024 (20-300\u6587\u5b57)",ko:"\uaddc\uce59 \uae30\ubc18 \ubd84\ud560 \uc784\uacc4\uac12 (20-300\uc790)",tr:"Kural Tabanl\u0131 Segmentasyon E\u015fi\u011fi (20-300 Karakter)"},pre_trans_seconds:{zh:"\u63d0\u524d\u7ffb\u8bd1\u65f6\u957f (10-36000s)",en:"Pre translation seconds (10-36000s)",zh_TW:"\u63d0\u524d\u7ffb\u8b6f\u6642\u9577 (10-36000s)",ja:"\u4e8b\u524d\u7ffb\u8a33\u6642\u9593 (10-36000s)",ko:"\ubbf8\ub9ac \ubc88\uc5ed \uc2dc\uac04 (10-36000s)",tr:"\xc7eviri \xd6ncesi Saniye (10-36000s)"},throttle_trans_interval:{zh:"\u8282\u6d41\u7ffb\u8bd1\u95f4\u9694 (1-3600s)",en:"Throttling translation interval (1-3600s)",zh_TW:"\u7bc0\u6d41\u7ffb\u8b6f\u9593\u9694 (1-3600s)",ja:"\u7ffb\u8a33\u9593\u9694\u306e\u30b9\u30ed\u30c3\u30c8\u30ea\u30f3\u30b0 (1-3600s)",ko:"\ubc88\uc5ed \uac04\uaca9 \uc870\uc808 (1-3600s)",tr:"\xc7eviri Aral\u0131\u011f\u0131n\u0131 Daraltma (1-3600s)"},subtitle_same_lang:{zh:"\u539f\u8bed\u8a00\u4e0e\u76ee\u6807\u8bed\u8a00\u76f8\u540c\uff0c\u5b57\u5e55\u4e0d\u4e88\u5904\u7406",en:"The source language is the same as the target language, subtitles will not be processed",zh_TW:"\u539f\u8a9e\u8a00\u8207\u76ee\u6a19\u8a9e\u8a00\u76f8\u540c\u6642\uff0c\u5b57\u5e55\u4e0d\u4e88\u8655\u7406",ja:"\u539f\u8a00\u8a9e\u3068\u76ee\u6a19\u8a00\u8a9e\u304c\u540c\u3058\u5834\u5408\u3001\u5b57\u5e55\u306f\u51e6\u7406\u3055\u308c\u307e\u305b\u3093",ko:"\uc6d0\ubcf8 \uc5b8\uc5b4\uc640 \ub300\uc0c1 \uc5b8\uc5b4\uac00 \ub3d9\uc77c\ud55c \uacbd\uc6b0, \uc790\ub9c9\uc740 \ucc98\ub9ac\ub418\uc9c0 \uc54a\uc2b5\ub2c8\ub2e4",tr:"Kaynak Dil Hedef Dil \u0130le Ayn\u0131"},plain_text_translate:{zh:"\u7eaf\u6587\u672c\u7ffb\u8bd1",en:"Plain text translation",zh_TW:"\u7d14\u6587\u5b57\u7ffb\u8b6f",ja:"\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u7ffb\u8a33",ko:"\uc21c\uc218 \ud14d\uc2a4\ud2b8 \ubc88\uc5ed",tr:"D\xfcz Metin \xc7evirisi"},is_enable_enhance:{zh:"\u542f\u7528\u589e\u5f3a\u529f\u80fd",en:"Enable Enhancement Features",zh_TW:"\u555f\u7528\u589e\u5f37\u529f\u80fd",ja:"\u5f37\u5316\u6a5f\u80fd\u3092\u6709\u52b9\u306b\u3059\u308b",ko:"\ud5a5\uc0c1 \uae30\ub2a5 \ud65c\uc131\ud654",tr:"Geli\u015fmi\u015f \xd6zellikleri Etkinle\u015ftir"},open_separate_window:{zh:"\u72ec\u7acb\u7a97\u53e3\u6253\u5f00",en:"Open in Separate Window",zh_TW:"\u5728\u7368\u7acb\u8996\u7a97\u4e2d\u958b\u555f",ja:"\u5225\u30a6\u30a3\u30f3\u30c9\u30a6\u3067\u958b\u304f",ko:"\ubcc4\ub3c4 \ucc3d\uc5d0\uc11c \uc5f4\uae30",tr:"Ayr\u0131 Pencerede A\xe7"},comment_support:{zh:"\u597d\u8bc4\u652f\u6301",en:"Leave a Positive Review",zh_TW:"\u597d\u8a55\u652f\u6301",ja:"\u9ad8\u8a55\u4fa1\u3067\u5fdc\u63f4",ko:"\uc88b\uc740 \ud3c9\uac00\ub85c \uc751\uc6d0",tr:"Olumlu Bir \u0130nceleme B\u0131rak\u0131n"},appreciate_support:{zh:"\u8d5e\u8d4f\u652f\u6301",en:"Support with a Tip",zh_TW:"\u8d0a\u8cde\u652f\u6301",ja:"\u6295\u3052\u92ad\u3067\u5fdc\u63f4",ko:"\ud6c4\uc6d0\ud558\uae30",tr:"Bir Ba\u011f\u0131\u015f \u0130le Destek Ol"},toggle_transbox:{zh:"\u5207\u6362\u7ffb\u8bd1\u7a97",en:"Toggle Translation Box",zh_TW:"\u5207\u63db\u7ffb\u8b6f\u8996\u7a97",ja:"\u7ffb\u8a33\u30a6\u30a3\u30f3\u30c9\u30a6\u3092\u5207\u308a\u66ff\u3048",ko:"\ubc88\uc5ed \ucc3d \uc804\ud658",tr:"\xc7eviri Kutusunu De\u011fi\u015ftir"},copy:{zh:"\u590d\u5236",en:"Copy",zh_TW:"\u8907\u88fd",ja:"\u30b3\u30d4\u30fc",ko:"\ubcf5\uc0ac",tr:"Kopyala"},paste:{zh:"\u9ecf\u8d34",en:"Paste",zh_TW:"\u8cbc\u4e0a",ja:"\u8cbc\u308a\u4ed8\u3051",ko:"\ubd99\uc5ec\ub123\uae30",tr:"Yap\u0131\u015ft\u0131r"},submit:{zh:"\u63d0\u4ea4",en:"Submit",zh_TW:"\u63d0\u4ea4",ja:"\u9001\u4fe1",ko:"\uc81c\ucd9c",tr:"G\xf6nder"},collect:{zh:"\u6536\u85cf",en:"Save",zh_TW:"\u6536\u85cf",ja:"\u4fdd\u5b58",ko:"\uc800\uc7a5",tr:"Kaydet"},show_translation_dot:{zh:"\u663e\u793a\u7ffb\u8bd1\u5706\u70b9",en:"Show Translation Dot",zh_TW:"\u986f\u793a\u7ffb\u8b6f\u5713\u9ede",ja:"\u7ffb\u8a33\u30c9\u30c3\u30c8\u3092\u8868\u793a",ko:"\ubc88\uc5ed \uc810 \ud45c\uc2dc",tr:"\xc7eviri Noktas\u0131n\u0131 G\xf6ster"},show_dot_mobile:{zh:"\u4ec5\u79fb\u52a8\u7aef",en:"Mobile Only",zh_TW:"\u50c5\u9650\u884c\u52d5\u88dd\u7f6e",ja:"\u30e2\u30d0\u30a4\u30eb\u306e\u307f",ko:"\ubaa8\ubc14\uc77c \uc804\uc6a9",tr:"Yaln\u0131zca Mobil"},show_dot_always:{zh:"\u603b\u662f\u663e\u793a",en:"Always",zh_TW:"\u7e3d\u662f\u986f\u793a",ja:"\u5e38\u306b\u8868\u793a",ko:"\ud56d\uc0c1 \ud45c\uc2dc",tr:"Her Zaman"},show_dot_disable:{zh:"\u7981\u7528",en:"Disable",zh_TW:"\u505c\u7528",ja:"\u7121\u52b9",ko:"\uc0ac\uc6a9 \uc548 \ud568",tr:"Devre D\u0131\u015f\u0131"},rule_disabled:{zh:"\u89c4\u5219\u5df2\u7981\u7528",en:"Rule Disabled",zh_TW:"\u898f\u5247\u5df2\u505c\u7528",ja:"\u30eb\u30fc\u30eb\u304c\u7121\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059",ko:"\uaddc\uce59\uc774 \ube44\ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4",tr:"Kural Devre D\u0131\u015f\u0131"},rule_enabled:{zh:"\u89c4\u5219\u5df2\u542f\u7528",en:"Rule Enabled",zh_TW:"\u898f\u5247\u5df2\u555f\u7528",ja:"\u30eb\u30fc\u30eb\u304c\u6709\u52b9\u306b\u306a\u3063\u3066\u3044\u307e\u3059",ko:"\uaddc\uce59\uc774 \ud65c\uc131\ud654\ub418\uc5c8\uc2b5\ub2c8\ub2e4",tr:"Kural Etkin"},rule_toggle_failed:{zh:"\u89c4\u5219\u5207\u6362\u5931\u8d25",en:"Failed to toggle rule",zh_TW:"\u898f\u5247\u5207\u63db\u5931\u6557",ja:"\u30eb\u30fc\u30eb\u306e\u5207\u308a\u66ff\u3048\u306b\u5931\u6557\u3057\u307e\u3057\u305f",ko:"\uaddc\uce59 \uc804\ud658 \uc2e4\ud328",tr:"Kural De\u011fi\u015ftirilemedi"},seg_trans_diff_warning:{zh:"\u65ad\u53e5\u548c\u7ffb\u8bd1\u670d\u52a1\u4e0d\u540c\uff0c\u7ffb\u8bd1\u5f15\u64ce\u4f1a\u91cd\u590d\u7ffb\u8bd1\u5b57\u5e55",en:"Segmentation and translation engines differ; subtitles will be re-translated.",zh_TW:"\u65b7\u53e5\u548c\u7ffb\u8b6f\u670d\u52d9\u4e0d\u540c\uff0c\u7ffb\u8b6f\u5f15\u64ce\u6703\u91cd\u8907\u7ffb\u8b6f\u5b57\u5e55",ja:"\u30bb\u30b0\u30e1\u30f3\u30c6\u30fc\u30b7\u30e7\u30f3\u3068\u7ffb\u8a33\u30a8\u30f3\u30b8\u30f3\u304c\u7570\u306a\u308a\u307e\u3059\u3002\u5b57\u5e55\u306f\u518d\u7ffb\u8a33\u3055\u308c\u307e\u3059\u3002",ko:"\ubd84\ud560\uacfc \ubc88\uc5ed \uc5d4\uc9c4\uc774 \ub2e4\ub985\ub2c8\ub2e4. \uc790\ub9c9\uc774 \ub2e4\uc2dc \ubc88\uc5ed\ub429\ub2c8\ub2e4.",tr:"Segmentasyon ve \xe7eviri motorlar\u0131 farkl\u0131d\u0131r; altyaz\u0131lar yeniden \xe7evrilecektir."},subtitle_style_preview:{zh:"\u6837\u5f0f\u9884\u89c8",en:"Style Preview",zh_TW:"\u6a23\u5f0f\u9810\u89bd",ja:"\u30b9\u30bf\u30a4\u30eb\u30d7\u30ec\u30d3\u30e5\u30fc",ko:"\uc2a4\ud0c0\uc77c \ubbf8\ub9ac\ubcf4\uae30",tr:"Stil \xd6nizlemesi"},subtitle_preview_sample:{zh:"\u8fd9\u662f\u793a\u4f8b\u5b57\u5e55\u6587\u672c",en:"This is an example subtitle",zh_TW:"\u9019\u662f\u7bc4\u4f8b\u5b57\u5e55\u6587\u5b57",ja:"\u3053\u308c\u306f\u30b5\u30f3\u30d7\u30eb\u5b57\u5e55\u30c6\u30ad\u30b9\u30c8\u3067\u3059",ko:"\uc608\uc2dc \uc790\ub9c9 \ud14d\uc2a4\ud2b8\uc785\ub2c8\ub2e4",tr:"Bu Bir \xd6rnek Altyaz\u0131d\u0131r"},font_size:{zh:"\u5b57\u4f53\u5927\u5c0f",en:"Font Size",zh_TW:"\u5b57\u9ad4\u5927\u5c0f",ja:"\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba",ko:"\uae00\uaf34 \ud06c\uae30",tr:"Yaz\u0131 Tipi Boyutu"},font_color:{zh:"\u5b57\u4f53\u989c\u8272",en:"Font Color",zh_TW:"\u5b57\u9ad4\u984f\u8272",ja:"\u30d5\u30a9\u30f3\u30c8\u306e\u8272",ko:"\uae00\uaf34 \uc0c9\uc0c1",tr:"Yaz\u0131 Tipi Rengi"},background_color:{zh:"\u80cc\u666f\u989c\u8272",en:"Background Color",zh_TW:"\u80cc\u666f\u984f\u8272",ja:"\u80cc\u666f\u8272",ko:"\ubc30\uacbd\uc0c9",tr:"Arka Plan Rengi"},opacity:{zh:"\u900f\u660e\u5ea6",en:"Opacity",zh_TW:"\u900f\u660e\u5ea6",ja:"\u4e0d\u900f\u660e\u5ea6",ko:"\ubd88\ud22c\uba85\ub3c4",tr:"Opakl\u0131k"},line_height:{zh:"\u884c\u9ad8",en:"Line Height",zh_TW:"\u884c\u9ad8",ja:"\u884c\u306e\u9ad8\u3055",ko:"\uc904 \ub192\uc774",tr:"Sat\u0131r Y\xfcksekli\u011fi"},padding:{zh:"\u5185\u8fb9\u8ddd",en:"Padding",zh_TW:"\u5167\u908a\u8ddd",ja:"\u4f59\u767d",ko:"\uc548\ucabd \uc5ec\ubc31",tr:"Dolgu"},vertical:{zh:"\u4e0a\u4e0b",en:"Vertical",zh_TW:"\u4e0a\u4e0b",ja:"\u4e0a\u4e0b",ko:"\uc0c1\ud558",tr:"Dikey"},horizontal:{zh:"\u5de6\u53f3",en:"Horizontal",zh_TW:"\u5de6\u53f3",ja:"\u5de6\u53f3",ko:"\uc88c\uc6b0",tr:"Yatay"},text_shadow:{zh:"\u6587\u5b57\u9634\u5f71",en:"Text Shadow",zh_TW:"\u6587\u5b57\u9670\u5f71",ja:"\u30c6\u30ad\u30b9\u30c8\u306e\u5f71",ko:"\ud14d\uc2a4\ud2b8 \uadf8\ub9bc\uc790",tr:"Metin G\xf6lgesi"},advanced_css:{zh:"\u9ad8\u7ea7 CSS \u7f16\u8f91",en:"Advanced CSS",zh_TW:"\u9032\u968e CSS \u7de8\u8f2f",ja:"\u9ad8\u5ea6\u306a CSS \u7de8\u96c6",ko:"\uace0\uae09 CSS \ud3b8\uc9d1",tr:"Geli\u015fmi\u015f CSS"},close:{zh:"\u5173\u95ed",en:"Close",zh_TW:"\u95dc\u9589",ja:"\u9589\u3058\u308b",ko:"\ub2eb\uae30",tr:"Kapat"}}),io="kiss-rules_v".concat(Ge[0],".json"),ao="kiss-words.json",so=("kiss-rules-share_v".concat(Ge[0],".json"),"kiss-setting_v".concat(Ge[0],".json")),lo="".concat(Ve,"_msauth"),co=("".concat(Ve,"_bdauth"),"".concat(Ve,"_setting"),"".concat(Ve,"_rules"),"".concat(Ve,"_setting_v").concat(Ge[0])),uo=("".concat(co,"_backup_v1_before_v2"),"".concat(Ve,"_rules_v").concat(Ge[0])),po="".concat(Ve,"_words"),ho="".concat(Ve,"_sync"),fo=("".concat(Ve,"_fab"),"".concat(Ve,"_tranbox")),mo=("".concat(Ve,"_separate_window"),"".concat(Ve,"_rulescache_"),"".concat(Ve,"_disabled_sub_rules"),"".concat(Ve,"_cache")),go=604800,yo="https://".concat(He,"/translate"),vo=("https://".concat(He,"/subtitle"),"https://".concat(He,"/detectlang")),bo="https://".concat(He,"/bingdict"),xo="https://".concat(He,"/dict"),ko=("https://".concat(He,"/context"),"kiss_fetch"),Ao="get_httpcache",So="toggle_translate",_o="trans_putrule",wo="toggle_transbox",To="toggle_mousehover",Eo="toggle_input_translation",Co="firefox",Io="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36",Lo="firefox",zo=["chrome","edge",Co,"thunderbird"].includes(Lo);const Po=function(){try{return n(9286)}catch(e){}}(),No=()=>{const e=globalThis.__KISS_CONTEXT__;return e||"undefined"},Ro=()=>"background"===No(),jo="LanguageDetector"in globalThis&&"Translator"in globalThis;function Oo(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e)return"";let n=e.replace(/^```[a-z]*\s*\n?/i,"");return t||(n=n.replace(/\n?```$/i,"")),n}const Mo=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:200,n=null;const r=function(){for(var r=arguments.length,o=new Array(r),i=0;i{e(...o),n=null},t)};return r.cancel=()=>{clearTimeout(n),n=null},r},Do=(e,t)=>{if(0===e.length||0===t.length)return!1;t="*"+t+"*";let[n,r]=[0,0],[o,i]=[-1,-1];for(;n2&&void 0!==arguments[2]?arguments[2]:0;for(;n{const n=(new TextEncoder).encode(e+t),r=await crypto.subtle.digest({name:"SHA-256"},n);return[...new Uint8Array(r)].map(e=>e.toString(16).padStart(2,"0")).join("")},Bo=e=>/^[a-zA-Z-]+$/.test(e),Wo=e=>{if(!e||"string"!==(e=>Object.prototype.toString.call(e).match(/\[object (.*?)\]/)[1].toLowerCase())(e))return{};try{return"{"!==e.trim()[0]&&(e="{".concat(e,"}")),JSON.parse(e)}catch(t){}return{}},Uo=e=>{const t=e.match(/({[^]*}|\[[^]*\])/);return t?t[0]:null},Vo=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:300;if("string"!==typeof e)return"";if(e.length<=t)return e;const n=e.slice(0,t);return n.slice(0,n.lastIndexOf(" "))+" \u2026"};function Ho(e){if("string"!==typeof e||""===e.trim())return{};try{return Object.fromEntries(e.split(/\n|;/).map(e=>{const[t="",n=""]=e.split(",").map(e=>e.trim());return[t,n]}).filter(e=>{let[t]=e;return t}))}catch(t){return{}}}const Go=e=>/^[\u4e00-\u9fa5]$/.test(e||"");function qo(e,t){if(null==e)return{};var n,r,o=(0,d.A)(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(r=0;r0&&void 0!==arguments[0]?arguments[0]:100,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:10,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1e3;Object.defineProperty(this,pi,{value:mi}),Object.defineProperty(this,di,{value:fi}),Object.defineProperty(this,ri,{writable:!0,value:[]}),Object.defineProperty(this,oi,{writable:!0,value:2}),Object.defineProperty(this,ii,{writable:!0,value:1e3}),Object.defineProperty(this,ai,{writable:!0,value:void 0}),Object.defineProperty(this,si,{writable:!0,value:void 0}),Object.defineProperty(this,li,{writable:!0,value:0}),Object.defineProperty(this,ci,{writable:!0,value:0}),Object.defineProperty(this,ui,{writable:!0,value:null}),ei(this,si)[si]=e,ei(this,ai)[ai]=t,ei(this,ii)[ii]=n}push(e,t){return new Promise((n,r)=>{ei(this,ri)[ri].push({fn:e,args:t,resolve:n,reject:r,retry:0}),ei(this,di)[di]()})}update(e,t){e>=0&&(ei(this,si)[si]=e),t>=1&&(ei(this,ai)[ai]=t),ei(this,di)[di]()}clear(){for(const e of ei(this,ri)[ri])e.reject("the task pool was cleared");ei(this,ri)[ri].length=0,ei(this,ui)[ui]&&(clearTimeout(ei(this,ui)[ui]),ei(this,ui)[ui]=null)}}function fi(){if(ei(this,ui)[ui])return;if(ei(this,li)[li]>=ei(this,ai)[ai]||0===ei(this,ri)[ri].length)return;const e=Date.now()-ei(this,ci)[ci],t=Math.max(0,ei(this,si)[si]-e);ei(this,ui)[ui]=setTimeout(()=>{if(ei(this,ui)[ui]=null,ei(this,li)[li]0){const e=ei(this,ri)[ri].shift();e&&(ei(this,ci)[ci]=Date.now(),ei(this,pi)[pi](e))}ei(this,ri)[ri].length>0&&ei(this,di)[di]()},t)}async function mi(e){ei(this,li)[li]++;const{fn:t,args:n,resolve:r,reject:o,retry:i}=e;try{r(await t(n))}catch(a){Nr("task pool",a),i{ei(this,ri)[ri].unshift(u(u({},e),{},{retry:i+1})),ei(this,di)[di]()},ei(this,ii)[ii]):o(a)}finally{ei(this,li)[li]--,ei(this,di)[di]()}}let gi;const yi=(e,t)=>(gi?e&&t&&vi(e,t):gi=new hi(null!==e&&void 0!==e?e:100,null!==t&&void 0!==t?t:10),gi),vi=(e,t)=>{var n;null===(n=gi)||void 0===n||n.update(e,t)},bi=async()=>{const[e]=await Po.tabs.query({active:!0,lastFocusedWindow:!0});return e},xi=(e,t)=>null===Po||void 0===Po?void 0:Po.runtime.sendMessage({action:e,args:t}),ki=async(e,t)=>{const n=await(async()=>{const e=await bi();return null===e||void 0===e?void 0:e.id})();if(n)return Po.tabs.sendMessage(n,{action:e,args:t}).catch(e=>{var t,n;if(!(null!==e&&void 0!==e&&null!==(t=e.message)&&void 0!==t&&t.includes("Could not establish connection")||null!==e&&void 0!==e&&null!==(n=e.message)&&void 0!==n&&n.includes("Receiving end does not exist")))throw e})},Ai=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;if(!e)throw new Error("Response object does not exist");if(!e.ok){const t={url:e.url,status:e.status,statusText:e.statusText};try{const n=await e.clone().text();try{t.response=JSON.parse(n)}catch(o){t.response=n}}catch(Lc){t.response="Unable to read error body"}throw new Error(JSON.stringify(t))}const n=e.headers.get("Content-Type")||"";if("blob"===t)return e.blob();if("text"===t)return e.text();if("json"===t)return e.json();if("audio"===t||n.includes("audio")||n.includes("image")||n.includes("video")){return(e=>new Promise(t=>{const n=new FileReader;n.onloadend=()=>t(n.result),n.readAsDataURL(e)}))(await e.blob())}if(n.includes("text/event-stream"))throw new Error("Received text/event-stream in a non-stream request. Use fetchStream instead.");const r=await e.text();if(!r)return null;try{return JSON.parse(r)}catch(i){return r}},Si=async(e,t)=>{let n=new Request(e,t);if("GET"!==n.method){const e=await n.text(),t=new URL(n.url);t.pathname+=e,n=new Request(t.toString(),{method:"GET"})}return n},_i=(e,t)=>zo&&!Ro()?xi(Ao,{input:e,init:t}):(async e=>{let{input:t,init:n,expect:r}=e;try{const e=await Si(t,n),o=await caches.open(mo),i=await o.match(e);if(i)return await Ai(i,r)}catch(o){Nr("get cache",o)}return null})({input:e,init:t});const wi=(e,t,n)=>zo&&!Ro()?xi("put_httpcache",{input:e,init:t,data:n}):(async e=>{let{input:t,init:n,data:r,maxAge:o=go}=e;try{const e=await Si(t,n),i=await caches.open(mo),a=new Response(JSON.stringify(r),{status:200,headers:{"Content-Type":"application/json","Cache-Control":"max-age=".concat(o)}});await i.put(e,a)}catch(i){Nr("put cache",i)}})({input:e,init:t,data:n});var Ti;!function(e){e[e.BACKSPACE=8]="BACKSPACE",e[e.FORM_FEED=12]="FORM_FEED",e[e.NEWLINE=10]="NEWLINE",e[e.CARRIAGE_RETURN=13]="CARRIAGE_RETURN",e[e.TAB=9]="TAB",e[e.SPACE=32]="SPACE",e[e.EXCLAMATION_MARK=33]="EXCLAMATION_MARK",e[e.QUOTATION_MARK=34]="QUOTATION_MARK",e[e.NUMBER_SIGN=35]="NUMBER_SIGN",e[e.DOLLAR_SIGN=36]="DOLLAR_SIGN",e[e.PERCENT_SIGN=37]="PERCENT_SIGN",e[e.AMPERSAND=38]="AMPERSAND",e[e.APOSTROPHE=39]="APOSTROPHE",e[e.LEFT_PARENTHESIS=40]="LEFT_PARENTHESIS",e[e.RIGHT_PARENTHESIS=41]="RIGHT_PARENTHESIS",e[e.ASTERISK=42]="ASTERISK",e[e.PLUS_SIGN=43]="PLUS_SIGN",e[e.COMMA=44]="COMMA",e[e.HYPHEN_MINUS=45]="HYPHEN_MINUS",e[e.FULL_STOP=46]="FULL_STOP",e[e.SOLIDUS=47]="SOLIDUS",e[e.DIGIT_ZERO=48]="DIGIT_ZERO",e[e.DIGIT_ONE=49]="DIGIT_ONE",e[e.DIGIT_TWO=50]="DIGIT_TWO",e[e.DIGIT_THREE=51]="DIGIT_THREE",e[e.DIGIT_FOUR=52]="DIGIT_FOUR",e[e.DIGIT_FIVE=53]="DIGIT_FIVE",e[e.DIGIT_SIX=54]="DIGIT_SIX",e[e.DIGIT_SEVEN=55]="DIGIT_SEVEN",e[e.DIGIT_EIGHT=56]="DIGIT_EIGHT",e[e.DIGIT_NINE=57]="DIGIT_NINE",e[e.COLON=58]="COLON",e[e.SEMICOLON=59]="SEMICOLON",e[e.LESS_THAN_SIGN=60]="LESS_THAN_SIGN",e[e.EQUALS_SIGN=61]="EQUALS_SIGN",e[e.GREATER_THAN_SIGN=62]="GREATER_THAN_SIGN",e[e.QUESTION_MARK=63]="QUESTION_MARK",e[e.COMMERCIAL_AT=64]="COMMERCIAL_AT",e[e.LATIN_CAPITAL_LETTER_A=65]="LATIN_CAPITAL_LETTER_A",e[e.LATIN_CAPITAL_LETTER_B=66]="LATIN_CAPITAL_LETTER_B",e[e.LATIN_CAPITAL_LETTER_C=67]="LATIN_CAPITAL_LETTER_C",e[e.LATIN_CAPITAL_LETTER_D=68]="LATIN_CAPITAL_LETTER_D",e[e.LATIN_CAPITAL_LETTER_E=69]="LATIN_CAPITAL_LETTER_E",e[e.LATIN_CAPITAL_LETTER_F=70]="LATIN_CAPITAL_LETTER_F",e[e.LATIN_CAPITAL_LETTER_G=71]="LATIN_CAPITAL_LETTER_G",e[e.LATIN_CAPITAL_LETTER_H=72]="LATIN_CAPITAL_LETTER_H",e[e.LATIN_CAPITAL_LETTER_I=73]="LATIN_CAPITAL_LETTER_I",e[e.LATIN_CAPITAL_LETTER_J=74]="LATIN_CAPITAL_LETTER_J",e[e.LATIN_CAPITAL_LETTER_K=75]="LATIN_CAPITAL_LETTER_K",e[e.LATIN_CAPITAL_LETTER_L=76]="LATIN_CAPITAL_LETTER_L",e[e.LATIN_CAPITAL_LETTER_M=77]="LATIN_CAPITAL_LETTER_M",e[e.LATIN_CAPITAL_LETTER_N=78]="LATIN_CAPITAL_LETTER_N",e[e.LATIN_CAPITAL_LETTER_O=79]="LATIN_CAPITAL_LETTER_O",e[e.LATIN_CAPITAL_LETTER_P=80]="LATIN_CAPITAL_LETTER_P",e[e.LATIN_CAPITAL_LETTER_Q=81]="LATIN_CAPITAL_LETTER_Q",e[e.LATIN_CAPITAL_LETTER_R=82]="LATIN_CAPITAL_LETTER_R",e[e.LATIN_CAPITAL_LETTER_S=83]="LATIN_CAPITAL_LETTER_S",e[e.LATIN_CAPITAL_LETTER_T=84]="LATIN_CAPITAL_LETTER_T",e[e.LATIN_CAPITAL_LETTER_U=85]="LATIN_CAPITAL_LETTER_U",e[e.LATIN_CAPITAL_LETTER_V=86]="LATIN_CAPITAL_LETTER_V",e[e.LATIN_CAPITAL_LETTER_W=87]="LATIN_CAPITAL_LETTER_W",e[e.LATIN_CAPITAL_LETTER_X=88]="LATIN_CAPITAL_LETTER_X",e[e.LATIN_CAPITAL_LETTER_Y=89]="LATIN_CAPITAL_LETTER_Y",e[e.LATIN_CAPITAL_LETTER_Z=90]="LATIN_CAPITAL_LETTER_Z",e[e.LEFT_SQUARE_BRACKET=91]="LEFT_SQUARE_BRACKET",e[e.REVERSE_SOLIDUS=92]="REVERSE_SOLIDUS",e[e.RIGHT_SQUARE_BRACKET=93]="RIGHT_SQUARE_BRACKET",e[e.CIRCUMFLEX_ACCENT=94]="CIRCUMFLEX_ACCENT",e[e.LOW_LINE=95]="LOW_LINE",e[e.GRAVE_ACCENT=96]="GRAVE_ACCENT",e[e.LATIN_SMALL_LETTER_A=97]="LATIN_SMALL_LETTER_A",e[e.LATIN_SMALL_LETTER_B=98]="LATIN_SMALL_LETTER_B",e[e.LATIN_SMALL_LETTER_C=99]="LATIN_SMALL_LETTER_C",e[e.LATIN_SMALL_LETTER_D=100]="LATIN_SMALL_LETTER_D",e[e.LATIN_SMALL_LETTER_E=101]="LATIN_SMALL_LETTER_E",e[e.LATIN_SMALL_LETTER_F=102]="LATIN_SMALL_LETTER_F",e[e.LATIN_SMALL_LETTER_G=103]="LATIN_SMALL_LETTER_G",e[e.LATIN_SMALL_LETTER_H=104]="LATIN_SMALL_LETTER_H",e[e.LATIN_SMALL_LETTER_I=105]="LATIN_SMALL_LETTER_I",e[e.LATIN_SMALL_LETTER_J=106]="LATIN_SMALL_LETTER_J",e[e.LATIN_SMALL_LETTER_K=107]="LATIN_SMALL_LETTER_K",e[e.LATIN_SMALL_LETTER_L=108]="LATIN_SMALL_LETTER_L",e[e.LATIN_SMALL_LETTER_M=109]="LATIN_SMALL_LETTER_M",e[e.LATIN_SMALL_LETTER_N=110]="LATIN_SMALL_LETTER_N",e[e.LATIN_SMALL_LETTER_O=111]="LATIN_SMALL_LETTER_O",e[e.LATIN_SMALL_LETTER_P=112]="LATIN_SMALL_LETTER_P",e[e.LATIN_SMALL_LETTER_Q=113]="LATIN_SMALL_LETTER_Q",e[e.LATIN_SMALL_LETTER_R=114]="LATIN_SMALL_LETTER_R",e[e.LATIN_SMALL_LETTER_S=115]="LATIN_SMALL_LETTER_S",e[e.LATIN_SMALL_LETTER_T=116]="LATIN_SMALL_LETTER_T",e[e.LATIN_SMALL_LETTER_U=117]="LATIN_SMALL_LETTER_U",e[e.LATIN_SMALL_LETTER_V=118]="LATIN_SMALL_LETTER_V",e[e.LATIN_SMALL_LETTER_W=119]="LATIN_SMALL_LETTER_W",e[e.LATIN_SMALL_LETTER_X=120]="LATIN_SMALL_LETTER_X",e[e.LATIN_SMALL_LETTER_Y=121]="LATIN_SMALL_LETTER_Y",e[e.LATIN_SMALL_LETTER_Z=122]="LATIN_SMALL_LETTER_Z",e[e.LEFT_CURLY_BRACKET=123]="LEFT_CURLY_BRACKET",e[e.VERTICAL_LINE=124]="VERTICAL_LINE",e[e.RIGHT_CURLY_BRACKET=125]="RIGHT_CURLY_BRACKET",e[e.TILDE=126]="TILDE"}(Ti||(Ti={}));const Ei={[Ti.QUOTATION_MARK]:Ti.QUOTATION_MARK,[Ti.REVERSE_SOLIDUS]:Ti.REVERSE_SOLIDUS,[Ti.SOLIDUS]:Ti.SOLIDUS,[Ti.LATIN_SMALL_LETTER_B]:Ti.BACKSPACE,[Ti.LATIN_SMALL_LETTER_F]:Ti.FORM_FEED,[Ti.LATIN_SMALL_LETTER_N]:Ti.NEWLINE,[Ti.LATIN_SMALL_LETTER_R]:Ti.CARRIAGE_RETURN,[Ti.LATIN_SMALL_LETTER_T]:Ti.TAB};class Ci{constructor(){this.decoder=new TextDecoder("utf-8"),this.strings=[],this.byteLength=0}appendChar(e){this.strings.push(String.fromCharCode(e)),this.byteLength+=1}appendBuf(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length;this.strings.push(this.decoder.decode(e.subarray(t,n))),this.byteLength+=n-t}reset(){this.strings=[],this.byteLength=0}toString(){return this.strings.join("")}}class Ii{constructor(e){this.decoder=new TextDecoder("utf-8"),this.bufferOffset=0,this.string="",this.byteLength=0,this.buffer=new Uint8Array(e)}appendChar(e){this.bufferOffset>=this.buffer.length&&this.flushStringBuffer(),this.buffer[this.bufferOffset++]=e,this.byteLength+=1}appendBuf(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length;const r=n-t;this.bufferOffset+r>this.buffer.length&&this.flushStringBuffer(),this.buffer.set(e.subarray(t,n),this.bufferOffset),this.bufferOffset+=r,this.byteLength+=r}flushStringBuffer(){this.string+=this.decoder.decode(this.buffer.subarray(0,this.bufferOffset)),this.bufferOffset=0}reset(){this.string="",this.bufferOffset=0,this.byteLength=0}toString(){return this.flushStringBuffer(),this.string}}var Li;!function(e){e[e.LEFT_BRACE=0]="LEFT_BRACE",e[e.RIGHT_BRACE=1]="RIGHT_BRACE",e[e.LEFT_BRACKET=2]="LEFT_BRACKET",e[e.RIGHT_BRACKET=3]="RIGHT_BRACKET",e[e.COLON=4]="COLON",e[e.COMMA=5]="COMMA",e[e.TRUE=6]="TRUE",e[e.FALSE=7]="FALSE",e[e.NULL=8]="NULL",e[e.STRING=9]="STRING",e[e.NUMBER=10]="NUMBER",e[e.SEPARATOR=11]="SEPARATOR"}(Li||(Li={}));const zi=Li;var Pi;function Ni(e){return["START","ENDED","ERROR","TRUE1","TRUE2","TRUE3","FALSE1","FALSE2","FALSE3","FALSE4","NULL1","NULL2","NULL3","STRING_DEFAULT","STRING_AFTER_BACKSLASH","STRING_UNICODE_DIGIT_1","STRING_UNICODE_DIGIT_2","STRING_UNICODE_DIGIT_3","STRING_UNICODE_DIGIT_4","STRING_INCOMPLETE_CHAR","NUMBER_AFTER_INITIAL_MINUS","NUMBER_AFTER_INITIAL_ZERO","NUMBER_AFTER_INITIAL_NON_ZERO","NUMBER_AFTER_FULL_STOP","NUMBER_AFTER_DECIMAL","NUMBER_AFTER_E","NUMBER_AFTER_E_AND_SIGN","NUMBER_AFTER_E_AND_DIGIT","SEPARATOR","BOM_OR_START","BOM"][e]}!function(e){e[e.START=0]="START",e[e.ENDED=1]="ENDED",e[e.ERROR=2]="ERROR",e[e.TRUE1=3]="TRUE1",e[e.TRUE2=4]="TRUE2",e[e.TRUE3=5]="TRUE3",e[e.FALSE1=6]="FALSE1",e[e.FALSE2=7]="FALSE2",e[e.FALSE3=8]="FALSE3",e[e.FALSE4=9]="FALSE4",e[e.NULL1=10]="NULL1",e[e.NULL2=11]="NULL2",e[e.NULL3=12]="NULL3",e[e.STRING_DEFAULT=13]="STRING_DEFAULT",e[e.STRING_AFTER_BACKSLASH=14]="STRING_AFTER_BACKSLASH",e[e.STRING_UNICODE_DIGIT_1=15]="STRING_UNICODE_DIGIT_1",e[e.STRING_UNICODE_DIGIT_2=16]="STRING_UNICODE_DIGIT_2",e[e.STRING_UNICODE_DIGIT_3=17]="STRING_UNICODE_DIGIT_3",e[e.STRING_UNICODE_DIGIT_4=18]="STRING_UNICODE_DIGIT_4",e[e.STRING_INCOMPLETE_CHAR=19]="STRING_INCOMPLETE_CHAR",e[e.NUMBER_AFTER_INITIAL_MINUS=20]="NUMBER_AFTER_INITIAL_MINUS",e[e.NUMBER_AFTER_INITIAL_ZERO=21]="NUMBER_AFTER_INITIAL_ZERO",e[e.NUMBER_AFTER_INITIAL_NON_ZERO=22]="NUMBER_AFTER_INITIAL_NON_ZERO",e[e.NUMBER_AFTER_FULL_STOP=23]="NUMBER_AFTER_FULL_STOP",e[e.NUMBER_AFTER_DECIMAL=24]="NUMBER_AFTER_DECIMAL",e[e.NUMBER_AFTER_E=25]="NUMBER_AFTER_E",e[e.NUMBER_AFTER_E_AND_SIGN=26]="NUMBER_AFTER_E_AND_SIGN",e[e.NUMBER_AFTER_E_AND_DIGIT=27]="NUMBER_AFTER_E_AND_DIGIT",e[e.SEPARATOR=28]="SEPARATOR",e[e.BOM_OR_START=29]="BOM_OR_START",e[e.BOM=30]="BOM"}(Pi||(Pi={}));const Ri={stringBufferSize:0,numberBufferSize:0,separator:void 0,emitPartialTokens:!1};class ji extends Error{constructor(e){super(e),Object.setPrototypeOf(this,ji.prototype)}}class Oi{constructor(e){this.state=Pi.BOM_OR_START,this.bomIndex=0,this.separatorIndex=0,this.escapedCharsByteLength=0,this.bytes_remaining=0,this.bytes_in_sequence=0,this.char_split_buffer=new Uint8Array(4),this.encoder=new TextEncoder,this.offset=-1,e=Object.assign(Object.assign({},Ri),e),this.emitPartialTokens=!0===e.emitPartialTokens,this.bufferedString=e.stringBufferSize&&e.stringBufferSize>4?new Ii(e.stringBufferSize):new Ci,this.bufferedNumber=e.numberBufferSize&&e.numberBufferSize>0?new Ii(e.numberBufferSize):new Ci,this.separator=e.separator,this.separatorBytes=e.separator?this.encoder.encode(e.separator):void 0}get isEnded(){return this.state===Pi.ENDED}write(e){try{let t;if(e instanceof Uint8Array)t=e;else if("string"===typeof e)t=this.encoder.encode(e);else if(Array.isArray(e))t=Uint8Array.from(e);else{if(!ArrayBuffer.isView(e))throw new TypeError("Unexpected type. The `write` function only accepts Arrays, TypedArrays and Strings.");t=new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}for(let n=0;n=Ti.DIGIT_ONE&&r<=Ti.DIGIT_NINE){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_INITIAL_NON_ZERO;continue}if(r===Ti.DIGIT_ZERO){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_INITIAL_ZERO;continue}if(r===Ti.HYPHEN_MINUS){this.bufferedNumber.reset(),this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_INITIAL_MINUS;continue}break;case Pi.STRING_DEFAULT:if(r===Ti.QUOTATION_MARK){const e=this.bufferedString.toString();this.state=Pi.START,this.onToken({token:zi.STRING,value:e,offset:this.offset}),this.offset+=this.escapedCharsByteLength+this.bufferedString.byteLength+1;continue}if(r===Ti.REVERSE_SOLIDUS){this.state=Pi.STRING_AFTER_BACKSLASH;continue}if(r>=128){if(this.bytes_in_sequence=r>=194&&r<=223?2:r<=239?3:4,this.bytes_in_sequence<=t.length-n){this.bufferedString.appendBuf(t,n,n+this.bytes_in_sequence),n+=this.bytes_in_sequence-1;continue}this.bytes_remaining=n+this.bytes_in_sequence-t.length,this.char_split_buffer.set(t.subarray(n)),n=t.length-1,this.state=Pi.STRING_INCOMPLETE_CHAR;continue}if(r>=Ti.SPACE){this.bufferedString.appendChar(r);continue}break;case Pi.STRING_INCOMPLETE_CHAR:this.char_split_buffer.set(t.subarray(n,n+this.bytes_remaining),this.bytes_in_sequence-this.bytes_remaining),this.bufferedString.appendBuf(this.char_split_buffer,0,this.bytes_in_sequence),n=this.bytes_remaining-1,this.state=Pi.STRING_DEFAULT;continue;case Pi.STRING_AFTER_BACKSLASH:const o=Ei[r];if(o){this.bufferedString.appendChar(o),this.escapedCharsByteLength+=1,this.state=Pi.STRING_DEFAULT;continue}if(r===Ti.LATIN_SMALL_LETTER_U){this.unicode="",this.state=Pi.STRING_UNICODE_DIGIT_1;continue}break;case Pi.STRING_UNICODE_DIGIT_1:case Pi.STRING_UNICODE_DIGIT_2:case Pi.STRING_UNICODE_DIGIT_3:if(r>=Ti.DIGIT_ZERO&&r<=Ti.DIGIT_NINE||r>=Ti.LATIN_CAPITAL_LETTER_A&&r<=Ti.LATIN_CAPITAL_LETTER_F||r>=Ti.LATIN_SMALL_LETTER_A&&r<=Ti.LATIN_SMALL_LETTER_F){this.unicode+=String.fromCharCode(r),this.state+=1;continue}break;case Pi.STRING_UNICODE_DIGIT_4:if(r>=Ti.DIGIT_ZERO&&r<=Ti.DIGIT_NINE||r>=Ti.LATIN_CAPITAL_LETTER_A&&r<=Ti.LATIN_CAPITAL_LETTER_F||r>=Ti.LATIN_SMALL_LETTER_A&&r<=Ti.LATIN_SMALL_LETTER_F){const e=parseInt(this.unicode+String.fromCharCode(r),16);let t;if(void 0===this.highSurrogate){if(e>=55296&&e<=56319){this.highSurrogate=e,this.state=Pi.STRING_DEFAULT;continue}t=String.fromCharCode(e)}else t=e>=56320&&e<=57343?String.fromCharCode(this.highSurrogate,e):String.fromCharCode(this.highSurrogate),this.highSurrogate=void 0;const n=this.encoder.encode(t);this.bufferedString.appendBuf(n),this.escapedCharsByteLength+=6-n.byteLength,this.state=Pi.STRING_DEFAULT;continue}break;case Pi.NUMBER_AFTER_INITIAL_MINUS:if(r===Ti.DIGIT_ZERO){this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_INITIAL_ZERO;continue}if(r>=Ti.DIGIT_ONE&&r<=Ti.DIGIT_NINE){this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_INITIAL_NON_ZERO;continue}break;case Pi.NUMBER_AFTER_INITIAL_ZERO:if(r===Ti.FULL_STOP){this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_FULL_STOP;continue}if(r===Ti.LATIN_SMALL_LETTER_E||r===Ti.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_E;continue}n-=1,this.state=Pi.START,this.emitNumber();continue;case Pi.NUMBER_AFTER_INITIAL_NON_ZERO:if(r>=Ti.DIGIT_ZERO&&r<=Ti.DIGIT_NINE){this.bufferedNumber.appendChar(r);continue}if(r===Ti.FULL_STOP){this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_FULL_STOP;continue}if(r===Ti.LATIN_SMALL_LETTER_E||r===Ti.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_E;continue}n-=1,this.state=Pi.START,this.emitNumber();continue;case Pi.NUMBER_AFTER_FULL_STOP:if(r>=Ti.DIGIT_ZERO&&r<=Ti.DIGIT_NINE){this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_DECIMAL;continue}break;case Pi.NUMBER_AFTER_DECIMAL:if(r>=Ti.DIGIT_ZERO&&r<=Ti.DIGIT_NINE){this.bufferedNumber.appendChar(r);continue}if(r===Ti.LATIN_SMALL_LETTER_E||r===Ti.LATIN_CAPITAL_LETTER_E){this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_E;continue}n-=1,this.state=Pi.START,this.emitNumber();continue;case Pi.NUMBER_AFTER_E:if(r===Ti.PLUS_SIGN||r===Ti.HYPHEN_MINUS){this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_E_AND_SIGN;continue}case Pi.NUMBER_AFTER_E_AND_SIGN:if(r>=Ti.DIGIT_ZERO&&r<=Ti.DIGIT_NINE){this.bufferedNumber.appendChar(r),this.state=Pi.NUMBER_AFTER_E_AND_DIGIT;continue}break;case Pi.NUMBER_AFTER_E_AND_DIGIT:if(r>=Ti.DIGIT_ZERO&&r<=Ti.DIGIT_NINE){this.bufferedNumber.appendChar(r);continue}n-=1,this.state=Pi.START,this.emitNumber();continue;case Pi.TRUE1:if(r===Ti.LATIN_SMALL_LETTER_R){this.state=Pi.TRUE2;continue}break;case Pi.TRUE2:if(r===Ti.LATIN_SMALL_LETTER_U){this.state=Pi.TRUE3;continue}break;case Pi.TRUE3:if(r===Ti.LATIN_SMALL_LETTER_E){this.state=Pi.START,this.onToken({token:zi.TRUE,value:!0,offset:this.offset}),this.offset+=3;continue}break;case Pi.FALSE1:if(r===Ti.LATIN_SMALL_LETTER_A){this.state=Pi.FALSE2;continue}break;case Pi.FALSE2:if(r===Ti.LATIN_SMALL_LETTER_L){this.state=Pi.FALSE3;continue}break;case Pi.FALSE3:if(r===Ti.LATIN_SMALL_LETTER_S){this.state=Pi.FALSE4;continue}break;case Pi.FALSE4:if(r===Ti.LATIN_SMALL_LETTER_E){this.state=Pi.START,this.onToken({token:zi.FALSE,value:!1,offset:this.offset}),this.offset+=4;continue}break;case Pi.NULL1:if(r===Ti.LATIN_SMALL_LETTER_U){this.state=Pi.NULL2;continue}break;case Pi.NULL2:if(r===Ti.LATIN_SMALL_LETTER_L){this.state=Pi.NULL3;continue}break;case Pi.NULL3:if(r===Ti.LATIN_SMALL_LETTER_L){this.state=Pi.START,this.onToken({token:zi.NULL,value:null,offset:this.offset}),this.offset+=3;continue}break;case Pi.SEPARATOR:if(this.separatorIndex+=1,!this.separatorBytes||r!==this.separatorBytes[this.separatorIndex])break;this.separatorIndex===this.separatorBytes.length-1&&(this.state=Pi.START,this.onToken({token:zi.SEPARATOR,value:this.separator,offset:this.offset+this.separatorIndex}),this.separatorIndex=0);continue;case Pi.BOM:if(r===this.bom[this.bomIndex]){if(this.bomIndex===this.bom.length-1){this.state=Pi.START,this.bom=void 0,this.bomIndex=0;continue}this.bomIndex+=1;continue}break;case Pi.ENDED:if(r===Ti.SPACE||r===Ti.NEWLINE||r===Ti.CARRIAGE_RETURN||r===Ti.TAB)continue}throw new ji('Unexpected "'.concat(String.fromCharCode(r),'" at position "').concat(n,'" in state ').concat(Ni(this.state)))}if(this.emitPartialTokens)switch(this.state){case Pi.TRUE1:case Pi.TRUE2:case Pi.TRUE3:this.onToken({token:zi.TRUE,value:!0,offset:this.offset,partial:!0});break;case Pi.FALSE1:case Pi.FALSE2:case Pi.FALSE3:case Pi.FALSE4:this.onToken({token:zi.FALSE,value:!1,offset:this.offset,partial:!0});break;case Pi.NULL1:case Pi.NULL2:case Pi.NULL3:this.onToken({token:zi.NULL,value:null,offset:this.offset,partial:!0});break;case Pi.STRING_DEFAULT:{const e=this.bufferedString.toString();this.onToken({token:zi.STRING,value:e,offset:this.offset,partial:!0});break}case Pi.NUMBER_AFTER_INITIAL_ZERO:case Pi.NUMBER_AFTER_INITIAL_NON_ZERO:case Pi.NUMBER_AFTER_DECIMAL:case Pi.NUMBER_AFTER_E_AND_DIGIT:try{this.onToken({token:zi.NUMBER,value:this.parseNumber(this.bufferedNumber.toString()),offset:this.offset,partial:!0})}catch(Zu){}}}catch(t){this.error(t)}}emitNumber(){this.onToken({token:zi.NUMBER,value:this.parseNumber(this.bufferedNumber.toString()),offset:this.offset}),this.offset+=this.bufferedNumber.byteLength-1}parseNumber(e){return Number(e)}error(e){this.state!==Pi.ENDED&&(this.state=Pi.ERROR),this.onError(e)}end(){switch(this.state){case Pi.NUMBER_AFTER_INITIAL_ZERO:case Pi.NUMBER_AFTER_INITIAL_NON_ZERO:case Pi.NUMBER_AFTER_DECIMAL:case Pi.NUMBER_AFTER_E_AND_DIGIT:this.state=Pi.ENDED,this.emitNumber(),this.onEnd();break;case Pi.BOM_OR_START:case Pi.START:case Pi.ERROR:case Pi.SEPARATOR:this.state=Pi.ENDED,this.onEnd();break;default:this.error(new ji("Tokenizer ended in the middle of a token (state: ".concat(Ni(this.state),"). Either not all the data was received or the data was invalid.")))}}onToken(e){throw new ji('Can\'t emit tokens before the "onToken" callback has been set up.')}onError(e){throw e}onEnd(){}}var Mi,Di;function Fi(e){return["VALUE","KEY","COLON","COMMA","ENDED","ERROR","SEPARATOR"][e]}!function(e){e[e.OBJECT=0]="OBJECT",e[e.ARRAY=1]="ARRAY"}(Mi||(Mi={})),function(e){e[e.VALUE=0]="VALUE",e[e.KEY=1]="KEY",e[e.COLON=2]="COLON",e[e.COMMA=3]="COMMA",e[e.ENDED=4]="ENDED",e[e.ERROR=5]="ERROR",e[e.SEPARATOR=6]="SEPARATOR"}(Di||(Di={}));const Bi={paths:void 0,keepStack:!0,separator:void 0,emitPartialValues:!1};class Wi extends Error{constructor(e){super(e),Object.setPrototypeOf(this,Wi.prototype)}}class Ui{constructor(e){this.state=Di.VALUE,this.mode=void 0,this.key=void 0,this.value=void 0,this.stack=[],(e=Object.assign(Object.assign({},Bi),e)).paths&&(this.paths=e.paths.map(e=>{if(void 0===e||"$*"===e)return;if(!e.startsWith("$"))throw new Wi('Invalid selector "'.concat(e,'". Should start with "$".'));const t=e.split(".").slice(1);if(t.includes(""))throw new Wi('Invalid selector "'.concat(e,'". ".." syntax not supported.'));return t})),this.keepStack=e.keepStack||!1,this.separator=e.separator,e.emitPartialValues||(this.emitPartial=()=>{})}shouldEmit(){return!this.paths||this.paths.some(e=>{var t;if(void 0===e)return!0;if(e.length!==this.stack.length)return!1;for(let r=0;r!e.emit)&&delete this.value[this.key],t&&this.onValue({value:e,key:this.key,parent:this.value,stack:this.stack}),0===this.stack.length&&(this.separator?this.state=Di.SEPARATOR:void 0===this.separator&&this.end())}emitPartial(e){this.shouldEmit()&&(this.state!==Di.KEY?this.onValue({value:e,key:this.key,parent:this.value,stack:this.stack,partial:!0}):this.onValue({value:void 0,key:e,parent:this.value,stack:this.stack,partial:!0}))}get isEnded(){return this.state===Di.ENDED}write(e){let{token:t,value:n,partial:r}=e;try{if(r)return void this.emitPartial(n);if(this.state===Di.VALUE){if(t===zi.STRING||t===zi.NUMBER||t===zi.TRUE||t===zi.FALSE||t===zi.NULL)return this.mode===Mi.OBJECT?(this.value[this.key]=n,this.state=Di.COMMA):this.mode===Mi.ARRAY&&(this.value.push(n),this.state=Di.COMMA),void this.emit(n,this.shouldEmit());if(t===zi.LEFT_BRACE){if(this.push(),this.mode===Mi.OBJECT)this.value=this.value[this.key]={};else if(this.mode===Mi.ARRAY){const e={};this.value.push(e),this.value=e}else this.value={};return this.mode=Mi.OBJECT,this.state=Di.KEY,this.key=void 0,void this.emitPartial()}if(t===zi.LEFT_BRACKET){if(this.push(),this.mode===Mi.OBJECT)this.value=this.value[this.key]=[];else if(this.mode===Mi.ARRAY){const e=[];this.value.push(e),this.value=e}else this.value=[];return this.mode=Mi.ARRAY,this.state=Di.VALUE,this.key=0,void this.emitPartial()}if(this.mode===Mi.ARRAY&&t===zi.RIGHT_BRACKET&&0===this.value.length)return void this.pop()}if(this.state===Di.KEY){if(t===zi.STRING)return this.key=n,this.state=Di.COLON,void this.emitPartial();if(t===zi.RIGHT_BRACE&&0===Object.keys(this.value).length)return void this.pop()}if(this.state===Di.COLON&&t===zi.COLON)return void(this.state=Di.VALUE);if(this.state===Di.COMMA){if(t===zi.COMMA){if(this.mode===Mi.ARRAY)return this.state=Di.VALUE,void(this.key+=1);if(this.mode===Mi.OBJECT)return void(this.state=Di.KEY)}if(t===zi.RIGHT_BRACE&&this.mode===Mi.OBJECT||t===zi.RIGHT_BRACKET&&this.mode===Mi.ARRAY)return void this.pop()}if(this.state===Di.SEPARATOR&&t===zi.SEPARATOR&&n===this.separator)return void(this.state=Di.VALUE);if(t===zi.SEPARATOR&&this.state!==Di.SEPARATOR&&Array.from(n).map(e=>e.charCodeAt(0)).every(e=>e===Ti.SPACE||e===Ti.NEWLINE||e===Ti.CARRIAGE_RETURN||e===Ti.TAB))return;throw new Wi("Unexpected ".concat(zi[t]," (").concat(JSON.stringify(n),") in state ").concat(Fi(this.state)))}catch(o){this.error(o)}}error(e){this.state!==Di.ENDED&&(this.state=Di.ERROR),this.onError(e)}end(){this.state!==Di.VALUE&&this.state!==Di.SEPARATOR||this.stack.length>0?this.error(new Error("Parser ended in mid-parsing (state: ".concat(Fi(this.state),"). Either not all the data was received or the data was invalid."))):(this.state=Di.ENDED,this.onEnd())}onValue(e){throw new Wi('Can\'t emit data before the "onValue" callback has been set up.')}onError(e){throw e}onEnd(){}}class Vi{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.tokenizer=new Oi(e),this.tokenParser=new Ui(e),this.tokenizer.onToken=this.tokenParser.write.bind(this.tokenParser),this.tokenizer.onEnd=()=>{this.tokenParser.isEnded||this.tokenParser.end()},this.tokenParser.onError=this.tokenizer.error.bind(this.tokenizer),this.tokenParser.onEnd=()=>{this.tokenizer.isEnded||this.tokenizer.end()}}get isEnded(){return this.tokenizer.isEnded&&this.tokenParser.isEnded}write(e){this.tokenizer.write(e)}end(){this.tokenizer.end()}set onToken(e){this.tokenizer.onToken=t=>{e(t),this.tokenParser.write(t)}}set onValue(e){this.tokenParser.onValue=e}set onError(e){this.tokenizer.onError=e}set onEnd(e){this.tokenParser.onEnd=()=>{this.tokenizer.isEnded||this.tokenizer.end(),e.call(this.tokenParser)}}}const Hi=["order"],Gi=e=>e,qi=e=>e.slice().sort((e,t)=>e.id-t.id||e.order-t.order).map(e=>{let{order:t}=e;return qo(e,Hi)}),Ki=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,{decodeText:r=Gi}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e||"object"!==typeof e)return null;const o=void 0!==e.text?e.text:void 0!==e.translation?e.translation:void 0;if(void 0===o)return null;const i=null!==(t=e.id)&&void 0!==t?t:n,a=Number(i);return Number.isInteger(a)?{id:a,translation:[r(String(o||"")),String(e.sourceLanguage||e.src||"")]}:null},$i=e=>{const t=[],n=/<(t|item|seg)\b([^>]*)>([\s\S]*?)<\/\1>/gi;let r;for(;null!==(r=n.exec(e));){const e=r[2]||"",n=e.match(/\bid\s*=\s*["']?(\d+)["']?/i),o=e.match(/\bsourceLanguage\s*=\s*["']([^"']*)["']/i),i=n?Number(n[1]):t.length;Number.isInteger(i)&&t.push({id:i,order:t.length,translation:[r[3].trim(),(null===o||void 0===o?void 0:o[1])||""]})}return qi(t)},Yi=function(e){let{requireCompleteLine:t=!1,decodeText:n=Gi}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const r=e.endsWith("\n"),o=e.split("\n"),i=t&&!r?o.slice(0,-1):o,a=[];for(const s of i){const e=s.trim();if(!e)continue;const t=e.match(/^(\d+)\s*\|\s*(.*)/);t&&a.push({id:Number(t[1]),order:a.length,translation:[n(t[2].trim().replace(//gi,"\n")),""]})}return qi(a)},Xi=function(e){let{decodeText:t=Gi}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=function(e){let{decodeText:t=Gi}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const n=e.search(/(\{|\[)/),r=Math.max(e.lastIndexOf("}"),e.lastIndexOf("]"));if(n<0||r<0)return[];try{const o=JSON.parse(e.substring(n,r+1)),i=Array.isArray(o)?o:o.translations||(o.result?[o.result]:[o]);if(!Array.isArray(i)||0===i.length)return[];const a=i.map((e,n)=>Ki(e,n,{decodeText:t})).filter(Boolean).map((e,t)=>u(u({},e),{},{order:t}));return qi(a)}catch(o){return[]}}(e,{decodeText:t});if(n.length>0)return n;const r=$i(e);return r.length>0?r:Yi(e,{decodeText:t})},Ji=()=>{let e="";return function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"";return function*(){e+=t,e=e.replace(/\r\n/g,"\n").replace(/\r/g,"\n");let n=e.indexOf("\n\n");for(;-1!==n;){const t=e.slice(0,n);e=e.slice(n+2);const r=[];for(const e of t.split("\n")){if(e.startsWith(":"))continue;if(!e.startsWith("data:"))continue;let t=e.slice(5);t.startsWith(" ")&&(t=t.slice(1)),r.push(t)}if(r.length){const e=r.join("\n");"[DONE]"!==e.trim()&&(yield e)}n=e.indexOf("\n\n")}}()}},Qi=()=>{const e=[];let t=null,n=!1,r=null;return{push:n=>{e.push(n),t&&(t(),t=null)},finish:()=>{n=!0,t&&(t(),t=null)},error:e=>{r=e,n=!0,t&&(t(),t=null)},iterate:()=>$o(function*(){const o=e=>{t=e};for(;!n||e.length>0;)e.length>0?yield e.shift():n||(yield Xo(new Promise(o)));if(r)throw r})()}};function Zi(e,t){var n,r,o;switch(t){case Ft:case wt:case Tt:case Et:case Ct:case It:case Lt:case zt:case Wt:case Gt:case qt:case Ht:case jt:return(null===(n=e.choices)||void 0===n||null===(r=n[0])||void 0===r||null===(o=r.delta)||void 0===o?void 0:o.content)||"";case Bt:{var i,a,s,l,c;if("error"===e.event_type){var u;const t=new Error((null===(u=e.error)||void 0===u?void 0:u.message)||"Gemini interaction stream failed");throw t.isAIStreamTerminal=!0,t}if("interaction.status_update"===e.event_type&&["failed","cancelled","incomplete","budget_exceeded"].includes(e.status)){const t=new Error("Gemini interaction stream ended with status: ".concat(e.status));throw t.isAIStreamTerminal=!0,t}if(e.event_type)return"step.delta"===e.event_type&&"text"===(null===(c=e.delta)||void 0===c?void 0:c.type)&&e.delta.text||"";const t=null===(i=e.candidates)||void 0===i||null===(a=i[0])||void 0===a||null===(s=a.content)||void 0===s?void 0:s.parts;return(null===(l=Array.isArray(t)?t.find(e=>!e.thought):void 0)||void 0===l?void 0:l.text)||""}case Ut:var d;return"content_block_delta"===e.type&&(null===(d=e.delta)||void 0===d?void 0:d.text)||"";default:return""}}function*ea(e,t){if(!e)return;const n=$i(e);if(n.length>0)for(const{id:r,translation:o}of n)t.has(r)||(t.add(r),yield{id:r,translation:o});else for(const{id:r,translation:o}of Yi(e,{requireCompleteLine:!0}))t.has(r)||(t.add(r),yield{id:r,translation:o})}function ta(e){const t=e.trim(),n=t.search(/[{[]/),r=t.search(/<(t|item|seg)\s/i),o=t.search(/^\d+\s*\|/m);if(-1===n&&-1===r&&-1===o)return{isJson:!1,detected:!1};const i=[{type:"json",pos:n},{type:"xml",pos:r},{type:"line",pos:o}].filter(e=>-1!==e.pos);if(0===i.length)return{isJson:!1,detected:!1};const a=i.reduce((e,t)=>e.pos{const t=e.trim();return-1!==t.search(/[{[]/)?"json":-1!==t.search(/<(t|item|seg)\s/i)?"xml":-1!==t.search(/^\d+\s*\|/m)?"line":null})(t),!e))return[];switch(e){case"xml":return(e=>{const t=[],n=/<(t|item|seg)\s+id="(\d+)"(?:\s[^>]*)?>([\s\S]*?)<\/\1>/gi;let r;for(;null!==(r=n.exec(e));){const e=parseInt(r[2],10);t.push({id:e,partialText:r[3],isComplete:!0})}let o=e;o=o.replace(/<(t|item|seg)\s+id="\d+"(?:\s[^>]*)?>[\s\S]*?<\/\1>/gi,"");const i=o.match(/<(t|item|seg)\s+id="(\d+)"(?:\s[^>]*)?>([^]*)$/);if(i){const e=parseInt(i[2],10),n=i[3].replace(/<\/[^>]*$/,"");t.push({id:e,partialText:n,isComplete:!1})}return t})(t);case"line":return(e=>{const t=[],n=e.split("\n");for(let r=0;r/gi,"\n"),a=re,getBuffer:()=>t}}const ra=["fn","msg"],oa=e=>{const t=e||30;return t>600?t:1e3*t},ia=async function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=null===e||void 0===e?void 0:e.httpTimeout;if(!t)try{var n;t=null===(n=await Pa())||void 0===n?void 0:n.httpTimeout}catch(r){Nr("getSettingWithDefault",r)}return oa(t)},aa=function(){var e;const t=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:[]).filter(Boolean);if(0===t.length)return;if(1===t.length)return t[0];if(null!==(e=AbortSignal)&&void 0!==e&&e.any)return AbortSignal.any(t);const n=new AbortController,r=e=>{n.signal.aborted||n.abort(null===e||void 0===e?void 0:e.reason)};for(const o of t){if(o.aborted){r(o);break}o.addEventListener("abort",()=>r(o),{once:!0})}return n.signal},sa=e=>{var t;return null!==(t=AbortSignal)&&void 0!==t&&t.timeout&&e?AbortSignal.timeout(e):void 0},la=async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2?arguments[2]:void 0;const r=await ia(n),o=aa([t.signal,null===n||void 0===n?void 0:n.signal,sa(r)]),i=u(u({},t),{},{signal:o});return fetch(e,i)},ca=async e=>{let{input:t,init:n,opts:r={}}=e;const o=await la(t,n,r);return Ai(o,r.expect)},ua=e=>{let{fn:t,msg:n=ko}=e,r=qo(e,ra);if(zo&&!Ro()){var o;const e=null===(o=r.opts)||void 0===o?void 0:o.signal,t=u(u({},r),{},{opts:u(u({},r.opts),{},{signal:void 0})}),i=xi(n,t);if(e){const t=new Promise((t,n)=>{e.aborted?n(new DOMException("The operation was aborted.","AbortError")):e.addEventListener("abort",()=>n(new DOMException("The operation was aborted.","AbortError")),{once:!0})});return Promise.race([i,t])}return i}return t(u({},r))};var da=n(9286),pa=n.n(da);const ha=["signal"];function fa(){return fa=$o(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){const r="number"===typeof n?{httpTimeout:n}:n||{},o=oa(r.httpTimeout),i=aa([t.signal,r.signal,sa(o)]),a=yield Xo(fetch(e,u(u({},t),{},{signal:i})));if(!a.ok)throw new Error("HTTP error! status: ".concat(a.status));const s=a.body.getReader(),l=new TextDecoder,c=Ji();try{for(;;){const{done:e,value:t}=yield Xo(s.read());if(e)break;for(const n of c(l.decode(t,{stream:!0})))yield n}}finally{var d;yield Xo(null===(d=s.cancel)||void 0===d?void 0:d.call(s))}}()}),fa.apply(this,arguments)}function ma(){return ma=$o(function*(e,t,n){const r=Qi(),o=n||{},{signal:i}=o,a=qo(o,ha);let s;try{s=pa().runtime.connect({name:"kiss_stream_fetch"})}catch(Lc){throw new Error("Failed to connect to background: "+Lc.message)}const l=()=>{try{s.disconnect()}catch(e){}};s.onMessage.addListener(e=>{switch(e.type){case"delta":r.push(e.data);break;case"done":r.finish();break;case"error":r.error(new Error(e.error))}}),s.onDisconnect.addListener(()=>{const e=pa().runtime.lastError;e&&r.error(new Error(e.message||"Port disconnected"))});const c=()=>{r.error(new DOMException("The operation was aborted.","AbortError")),l()},u=null===i||void 0===i?void 0:i.aborted;var d;u?c():null===i||void 0===i||null===(d=i.addEventListener)||void 0===d||d.call(i,"abort",c,{once:!0});u||s.postMessage({action:"start",args:{input:e,init:t,opts:a}});try{yield*Jo(Qo(r.iterate()))}finally{var p;null===i||void 0===i||null===(p=i.removeEventListener)||void 0===p||p.call(i,"abort",c),l()}}),ma.apply(this,arguments)}function ga(e,t){return ya.apply(this,arguments)}function ya(){return ya=$o(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return function*(){const r=yield Xo(ia(n));n=u(u({},n),{},{httpTimeout:r}),!zo||Ro()?yield*Jo(Qo(function(e){return fa.apply(this,arguments)}(e,t,n))):yield*Jo(Qo(function(e,t,n){return ma.apply(this,arguments)}(e,t,n)))}()}),ya.apply(this,arguments)}const va=["useCache","usePool","fetchInterval","fetchLimit"],ba=["useCache","usePool","fetchInterval","fetchLimit"],xa=async function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{useCache:r,usePool:o,fetchInterval:i,fetchLimit:a}=n,s=qo(n,va);if(null===e||void 0===e||!e.trim())throw new Error("URL is empty");if(r){const n=await _i(e,t);if(n)return n}if(o){return yi(i,a).push(ua,{fn:ca,input:e,init:t,opts:s})}return ua({fn:ca,input:e,init:t,opts:s})};function ka(e,t){return Aa.apply(this,arguments)}function Aa(){return Aa=$o(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},{useCache:r,usePool:o,fetchInterval:i,fetchLimit:a}=n,s=qo(n,ba);return function*(){if(null===e||void 0===e||!e.trim())throw new Error("URL is empty");if(r){const n=yield Xo(_i(e,t));if(n)return void(yield n)}if(o){const n=yi(i,a),r=Qi(),o=new AbortController,l=u(u({},s),{},{signal:aa([s.signal,o.signal])}),c=n.push(async()=>{try{var n,o=!1,i=!1;try{for(var a,s=Qo(ga(e,t,l));o=!(a=await s.next()).done;o=!1){const e=a.value;r.push(e)}}catch(c){i=!0,n=c}finally{try{o&&null!=s.return&&await s.return()}finally{if(i)throw n}}r.finish()}catch(Lc){r.error(Lc)}return null});try{yield*Jo(Qo(r.iterate()))}finally{o.abort(),yield Xo(c.catch(()=>{}))}return}yield*Jo(Qo(ga(e,t,s)))}()}),Aa.apply(this,arguments)}new Set(["onload","onerror","onabort","ontimeout"]),new Map;async function Sa(e,t){zo?await Po.storage.local.set({[e]:t}):window.localStorage.setItem(e,t)}async function _a(e){if(zo){return(await Po.storage.local.get([e]))[e]}return window.localStorage.getItem(e)}async function wa(e){zo?await Po.storage.local.remove([e]):window.localStorage.removeItem(e)}async function Ta(e,t){await Sa(e,JSON.stringify(t))}async function Ea(e,t){await _a(e)||await Ta(e,t)}async function Ca(e){const t=await _a(e);if(null===t||void 0===t)return null;try{return JSON.parse(t)}catch(n){Nr("parse json in storage err: ",e)}return null}async function Ia(e,t){var n;const r=null!==(n=await Ca(e))&&void 0!==n?n:{};await Ta(e,u(u({},r),t))}const La={get:_a,set:Sa,del:wa,setObj:Ta,trySetObj:Ea,getObj:Ca,putObj:Ia},za=()=>Ca(co),Pa=async()=>{const e=await za();if(!e)return Xr;return(e=>{var t;return u(u(u({},Xr),e||{}),{},{tranboxSetting:u(u({},qr),(null===e||void 0===e?void 0:e.tranboxSetting)||{}),version:null!==(t=null===e||void 0===e?void 0:e.version)&&void 0!==t?t:Xr.version})})(Er(e)<3?Ir(e):e)},Na=async()=>await Ca(uo)||$n,Ra=e=>Ta(uo,e),ja=(Mo(e=>Ia(fo,e),300),async()=>await Ca(ho)||Ur),Oa=e=>Ia(ho,e),Ma=Mo(async e=>{const{syncMeta:t={}}=await ja();t[e]=u(u({},t[e]||{}),{},{updateAt:Date.now()}),await Oa({syncMeta:t})},300),Da="%[a-f0-9]{2}",Fa=new RegExp("("+Da+")|([^%]+?)","gi"),Ba=new RegExp("("+Da+")+","gi");function Wa(e,t){try{return[decodeURIComponent(e.join(""))]}catch(o){}if(1===e.length)return e;t=t||1;const n=e.slice(0,t),r=e.slice(t);return Array.prototype.concat.call([],Wa(n),Wa(r))}function Ua(e){try{return decodeURIComponent(e)}catch(t){let n=e.match(Fa)||[];for(let r=1;rnull===e||void 0===e,Ka=e=>encodeURIComponent(e).replace(/[!'()*]/g,e=>"%".concat(e.charCodeAt(0).toString(16).toUpperCase())),$a=Symbol("encodeFragmentIdentifier");function Ya(e){if("string"!==typeof e||1!==e.length)throw new TypeError("arrayFormatSeparator must be single character string")}function Xa(e,t){return t.encode?t.strict?Ka(e):encodeURIComponent(e):e}function Ja(e,t){return t.decode?Va(e):e}function Qa(e){return Array.isArray(e)?e.sort():"object"===typeof e?Qa(Object.keys(e)).sort((e,t)=>Number(e)-Number(t)).map(t=>e[t]):e}function Za(e){const t=e.indexOf("#");return-1!==t&&(e=e.slice(0,t)),e}function es(e,t){return t.parseNumbers&&!Number.isNaN(Number(e))&&"string"===typeof e&&""!==e.trim()?e=Number(e):!t.parseBooleans||null===e||"true"!==e.toLowerCase()&&"false"!==e.toLowerCase()||(e="true"===e.toLowerCase()),e}function ts(e){const t=(e=Za(e)).indexOf("?");return-1===t?"":e.slice(t+1)}function ns(e,t){Ya((t=u({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},t)).arrayFormatSeparator);const n=function(e){let t;switch(e.arrayFormat){case"index":return(e,n,r)=>{t=/\[(\d*)]$/.exec(e),e=e.replace(/\[\d*]$/,""),t?(void 0===r[e]&&(r[e]={}),r[e][t[1]]=n):r[e]=n};case"bracket":return(e,n,r)=>{t=/(\[])$/.exec(e),e=e.replace(/\[]$/,""),t?void 0!==r[e]?r[e]=[...r[e],n]:r[e]=[n]:r[e]=n};case"colon-list-separator":return(e,n,r)=>{t=/(:list)$/.exec(e),e=e.replace(/:list$/,""),t?void 0!==r[e]?r[e]=[...r[e],n]:r[e]=[n]:r[e]=n};case"comma":case"separator":return(t,n,r)=>{const o="string"===typeof n&&n.includes(e.arrayFormatSeparator),i="string"===typeof n&&!o&&Ja(n,e).includes(e.arrayFormatSeparator);n=i?Ja(n,e):n;const a=o||i?n.split(e.arrayFormatSeparator).map(t=>Ja(t,e)):null===n?n:Ja(n,e);r[t]=a};case"bracket-separator":return(t,n,r)=>{const o=/(\[])$/.test(t);if(t=t.replace(/\[]$/,""),!o)return void(r[t]=n?Ja(n,e):n);const i=null===n?[]:n.split(e.arrayFormatSeparator).map(t=>Ja(t,e));void 0!==r[t]?r[t]=[...r[t],...i]:r[t]=i};default:return(e,t,n)=>{void 0!==n[e]?n[e]=[...[n[e]].flat(),t]:n[e]=t}}}(t),r=Object.create(null);if("string"!==typeof e)return r;if(!(e=e.trim().replace(/^[?#&]/,"")))return r;for(const o of e.split("&")){if(""===o)continue;const e=t.decode?o.replace(/\+/g," "):o;let[i,a]=Ha(e,"=");void 0===i&&(i=e),a=void 0===a?null:["comma","separator","bracket-separator"].includes(t.arrayFormat)?a:Ja(a,t),n(Ja(i,t),a,r)}for(const[o,i]of Object.entries(r))if("object"===typeof i&&null!==i)for(const[e,n]of Object.entries(i))i[e]=es(n,t);else r[o]=es(i,t);return!1===t.sort?r:(!0===t.sort?Object.keys(r).sort():Object.keys(r).sort(t.sort)).reduce((e,t)=>{const n=r[t];return e[t]=Boolean(n)&&"object"===typeof n&&!Array.isArray(n)?Qa(n):n,e},Object.create(null))}function rs(e,t){if(!e)return"";Ya((t=u({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},t)).arrayFormatSeparator);const n=n=>t.skipNull&&qa(e[n])||t.skipEmptyString&&""===e[n],r=function(e){switch(e.arrayFormat){case"index":return t=>(n,r)=>{const o=n.length;return void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[Xa(t,e),"[",o,"]"].join("")]:[...n,[Xa(t,e),"[",Xa(o,e),"]=",Xa(r,e)].join("")]};case"bracket":return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[Xa(t,e),"[]"].join("")]:[...n,[Xa(t,e),"[]=",Xa(r,e)].join("")];case"colon-list-separator":return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,[Xa(t,e),":list="].join("")]:[...n,[Xa(t,e),":list=",Xa(r,e)].join("")];case"comma":case"separator":case"bracket-separator":{const t="bracket-separator"===e.arrayFormat?"[]=":"=";return n=>(r,o)=>void 0===o||e.skipNull&&null===o||e.skipEmptyString&&""===o?r:(o=null===o?"":o,0===r.length?[[Xa(n,e),t,Xa(o,e)].join("")]:[[r,Xa(o,e)].join(e.arrayFormatSeparator)])}default:return t=>(n,r)=>void 0===r||e.skipNull&&null===r||e.skipEmptyString&&""===r?n:null===r?[...n,Xa(t,e)]:[...n,[Xa(t,e),"=",Xa(r,e)].join("")]}}(t),o={};for(const[a,s]of Object.entries(e))n(a)||(o[a]=s);const i=Object.keys(o);return!1!==t.sort&&i.sort(t.sort),i.map(n=>{const o=e[n];return void 0===o?"":null===o?Xa(n,t):Array.isArray(o)?0===o.length&&"bracket-separator"===t.arrayFormat?Xa(n,t)+"[]":o.reduce(r(n),[]).join("&"):Xa(n,t)+"="+Xa(o,t)}).filter(e=>e.length>0).join("&")}function os(e,t){var n,r;t=u({decode:!0},t);let[o,i]=Ha(e,"#");return void 0===o&&(o=e),u({url:null!==(n=null===(r=o)||void 0===r||null===(r=r.split("?"))||void 0===r?void 0:r[0])&&void 0!==n?n:"",query:ns(ts(e),t)},t&&t.parseFragmentIdentifier&&i?{fragmentIdentifier:Ja(i,t)}:{})}function is(e,t){t=u({encode:!0,strict:!0,[$a]:!0},t);const n=Za(e.url).split("?")[0]||"";let r=rs(u(u({},ns(ts(e.url),{sort:!1})),e.query),t);r&&(r="?".concat(r));let o=function(e){let t="";const n=e.indexOf("#");return-1!==n&&(t=e.slice(n)),t}(e.url);if(e.fragmentIdentifier){const r=new URL(n);r.hash=e.fragmentIdentifier,o=t[$a]?r.hash:"#".concat(e.fragmentIdentifier)}return"".concat(n).concat(r).concat(o)}function as(e,t,n){n=u({parseFragmentIdentifier:!0,[$a]:!1},n);const{url:r,query:o,fragmentIdentifier:i}=os(e,n);return is({url:r,query:Ga(o,t),fragmentIdentifier:i},n)}function ss(e,t,n){return as(e,Array.isArray(t)?e=>!t.includes(e):(e,n)=>!t(e,n),n)}const ls=e,cs=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return(e=>{let t=3735928559,n=1103547991;for(let r=0;r>>16,2246822507)^Math.imul(n^n>>>13,3266489909),n=Math.imul(n^n>>>16,2246822507)^Math.imul(t^t>>>13,3266489909),(n>>>0).toString(16).padStart(8,"0")+(t>>>0).toString(16).padStart(8,"0")})("".concat(e).concat(t))},us=async function(e){var t,n;let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";if(null!==(t=globalThis.crypto)&&void 0!==t&&null!==(n=t.subtle)&&void 0!==n&&n.digest)return Fo(e,r);if(zo)try{const t=await xi("sha256",{text:e,salt:r});if("string"===typeof t&&t)return t}catch(o){}return cs(e,r)},ds=e=>{try{return JSON.parse(atob(e.split(".")[1])).exp}catch(t){Nr("parseMSToken",t)}return 0},ps=(()=>{let e=null;const t=async()=>{try{const t=Date.now(),n=await Ca(lo);if(n){const e=1e3*ds(n);if(e>t+1e3)return{token:n,expiresAt:e}}const r=await yc();if(!r)throw new Error("Failed to fetch ms token");const o=1e3*ds(r);return await(e=r,Ta(lo,e)),{token:r,expiresAt:o}}catch(t){throw Nr("get msauth failed",t),t}var e};return async()=>{if(e)try{const t=await e;if(t.expiresAt>Date.now()+1e3)return t.token}catch(n){}e=t();return(await e).token}})();let hs=1e4*Math.round(1e4*Math.random());var fs=n(7029);const ms=new(n.n(fs)())({ecmaVer:"latest",sourceType:"script",sandBox:!0}),{entries:gs,setPrototypeOf:ys,isFrozen:vs,getPrototypeOf:bs,getOwnPropertyDescriptor:xs}=Object;let{freeze:ks,seal:As,create:Ss}=Object,{apply:_s,construct:ws}="undefined"!==typeof Reflect&&Reflect;ks||(ks=function(e){return e}),As||(As=function(e){return e}),_s||(_s=function(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o1?t-1:0),r=1;r1?n-1:0),o=1;o2&&void 0!==arguments[2]?arguments[2]:zs;ys&&ys(e,null);let r=t.length;for(;r--;){let o=t[r];if("string"===typeof o){const e=n(o);e!==o&&(vs(t)||(t[r]=e),o=e)}e[o]=!0}return e}function Vs(e){for(let t=0;t/gm),il=As(/\$\{[\w\W]*/gm),al=As(/^data-[\-\w.\u00B7-\uFFFF]+$/),sl=As(/^aria-[\-\w]+$/),ll=As(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|sms|cid|xmpp|matrix):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i),cl=As(/^(?:\w+script|data):/i),ul=As(/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205F\u3000]/g),dl=As(/^html$/i),pl=As(/^[a-z][.\w]*(-[.\w]+)+$/i);var hl=Object.freeze({__proto__:null,ARIA_ATTR:sl,ATTR_WHITESPACE:ul,CUSTOM_ELEMENT:pl,DATA_ATTR:al,DOCTYPE_NAME:dl,ERB_EXPR:ol,IS_ALLOWED_URI:ll,IS_SCRIPT_OR_DATA:cl,MUSTACHE_EXPR:rl,TMPLIT_EXPR:il});const fl=1,ml=3,gl=7,yl=8,vl=9,bl=function(){return"undefined"===typeof window?null:window};var xl=function e(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:bl();const n=t=>e(t);if(n.version="3.4.0",n.removed=[],!t||!t.document||t.document.nodeType!==vl||!t.Element)return n.isSupported=!1,n;let{document:r}=t;const o=r,i=o.currentScript,{DocumentFragment:a,HTMLTemplateElement:s,Node:l,Element:c,NodeFilter:u,NamedNodeMap:d=t.NamedNodeMap||t.MozNamedAttrMap,HTMLFormElement:p,DOMParser:h,trustedTypes:f}=t,m=c.prototype,g=Gs(m,"cloneNode"),y=Gs(m,"remove"),v=Gs(m,"nextSibling"),b=Gs(m,"childNodes"),x=Gs(m,"parentNode");if("function"===typeof s){const e=r.createElement("template");e.content&&e.content.ownerDocument&&(r=e.content.ownerDocument)}let k,A="";const{implementation:S,createNodeIterator:_,createDocumentFragment:w,getElementsByTagName:T}=r,{importNode:E}=o;let C={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]};n.isSupported="function"===typeof gs&&"function"===typeof x&&S&&void 0!==S.createHTMLDocument;const{MUSTACHE_EXPR:I,ERB_EXPR:L,TMPLIT_EXPR:z,DATA_ATTR:P,ARIA_ATTR:N,IS_SCRIPT_OR_DATA:R,ATTR_WHITESPACE:j,CUSTOM_ELEMENT:O}=hl;let{IS_ALLOWED_URI:M}=hl,D=null;const F=Us({},[...qs,...Ks,...$s,...Xs,...Qs]);let B=null;const W=Us({},[...Zs,...el,...tl,...nl]);let U=Object.seal(Ss(null,{tagNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeNameCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},allowCustomizedBuiltInElements:{writable:!0,configurable:!1,enumerable:!0,value:!1}})),V=null,H=null;const G=Object.seal(Ss(null,{tagCheck:{writable:!0,configurable:!1,enumerable:!0,value:null},attributeCheck:{writable:!0,configurable:!1,enumerable:!0,value:null}}));let q=!0,K=!0,$=!1,Y=!0,X=!1,J=!0,Q=!1,Z=!1,ee=!1,te=!1,ne=!1,re=!1,oe=!0,ie=!1,ae=!0,se=!1,le={},ce=null;const ue=Us({},["annotation-xml","audio","colgroup","desc","foreignobject","head","iframe","math","mi","mn","mo","ms","mtext","noembed","noframes","noscript","plaintext","script","style","svg","template","thead","title","video","xmp"]);let de=null;const pe=Us({},["audio","video","img","source","image","track"]);let he=null;const fe=Us({},["alt","class","for","id","label","name","pattern","placeholder","role","summary","title","value","style","xmlns"]),me="http://www.w3.org/1998/Math/MathML",ge="http://www.w3.org/2000/svg",ye="http://www.w3.org/1999/xhtml";let ve=ye,be=!1,xe=null;const ke=Us({},[me,ge,ye],Ps);let Ae=Us({},["mi","mo","mn","ms","mtext"]),Se=Us({},["annotation-xml"]);const _e=Us({},["title","style","font","a","script"]);let we=null;const Te=["application/xhtml+xml","text/html"];let Ee=null,Ce=null;const Ie=r.createElement("form"),Le=function(e){return e instanceof RegExp||e instanceof Function},ze=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(!Ce||Ce!==e){if(e&&"object"===typeof e||(e={}),e=Hs(e),we=-1===Te.indexOf(e.PARSER_MEDIA_TYPE)?"text/html":e.PARSER_MEDIA_TYPE,Ee="application/xhtml+xml"===we?Ps:zs,D=Ms(e,"ALLOWED_TAGS")?Us({},e.ALLOWED_TAGS,Ee):F,B=Ms(e,"ALLOWED_ATTR")?Us({},e.ALLOWED_ATTR,Ee):W,xe=Ms(e,"ALLOWED_NAMESPACES")?Us({},e.ALLOWED_NAMESPACES,Ps):ke,he=Ms(e,"ADD_URI_SAFE_ATTR")?Us(Hs(fe),e.ADD_URI_SAFE_ATTR,Ee):fe,de=Ms(e,"ADD_DATA_URI_TAGS")?Us(Hs(pe),e.ADD_DATA_URI_TAGS,Ee):pe,ce=Ms(e,"FORBID_CONTENTS")?Us({},e.FORBID_CONTENTS,Ee):ue,V=Ms(e,"FORBID_TAGS")?Us({},e.FORBID_TAGS,Ee):Hs({}),H=Ms(e,"FORBID_ATTR")?Us({},e.FORBID_ATTR,Ee):Hs({}),le=!!Ms(e,"USE_PROFILES")&&e.USE_PROFILES,q=!1!==e.ALLOW_ARIA_ATTR,K=!1!==e.ALLOW_DATA_ATTR,$=e.ALLOW_UNKNOWN_PROTOCOLS||!1,Y=!1!==e.ALLOW_SELF_CLOSE_IN_ATTR,X=e.SAFE_FOR_TEMPLATES||!1,J=!1!==e.SAFE_FOR_XML,Q=e.WHOLE_DOCUMENT||!1,te=e.RETURN_DOM||!1,ne=e.RETURN_DOM_FRAGMENT||!1,re=e.RETURN_TRUSTED_TYPE||!1,ee=e.FORCE_BODY||!1,oe=!1!==e.SANITIZE_DOM,ie=e.SANITIZE_NAMED_PROPS||!1,ae=!1!==e.KEEP_CONTENT,se=e.IN_PLACE||!1,M=e.ALLOWED_URI_REGEXP||ll,ve=e.NAMESPACE||ye,Ae=e.MATHML_TEXT_INTEGRATION_POINTS||Ae,Se=e.HTML_INTEGRATION_POINTS||Se,U=e.CUSTOM_ELEMENT_HANDLING||Ss(null),e.CUSTOM_ELEMENT_HANDLING&&Le(e.CUSTOM_ELEMENT_HANDLING.tagNameCheck)&&(U.tagNameCheck=e.CUSTOM_ELEMENT_HANDLING.tagNameCheck),e.CUSTOM_ELEMENT_HANDLING&&Le(e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)&&(U.attributeNameCheck=e.CUSTOM_ELEMENT_HANDLING.attributeNameCheck),e.CUSTOM_ELEMENT_HANDLING&&"boolean"===typeof e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements&&(U.allowCustomizedBuiltInElements=e.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements),X&&(K=!1),ne&&(te=!0),le&&(D=Us({},Qs),B=Ss(null),!0===le.html&&(Us(D,qs),Us(B,Zs)),!0===le.svg&&(Us(D,Ks),Us(B,el),Us(B,nl)),!0===le.svgFilters&&(Us(D,$s),Us(B,el),Us(B,nl)),!0===le.mathMl&&(Us(D,Xs),Us(B,tl),Us(B,nl))),G.tagCheck=null,G.attributeCheck=null,e.ADD_TAGS&&("function"===typeof e.ADD_TAGS?G.tagCheck=e.ADD_TAGS:(D===F&&(D=Hs(D)),Us(D,e.ADD_TAGS,Ee))),e.ADD_ATTR&&("function"===typeof e.ADD_ATTR?G.attributeCheck=e.ADD_ATTR:(B===W&&(B=Hs(B)),Us(B,e.ADD_ATTR,Ee))),e.ADD_URI_SAFE_ATTR&&Us(he,e.ADD_URI_SAFE_ATTR,Ee),e.FORBID_CONTENTS&&(ce===ue&&(ce=Hs(ce)),Us(ce,e.FORBID_CONTENTS,Ee)),e.ADD_FORBID_CONTENTS&&(ce===ue&&(ce=Hs(ce)),Us(ce,e.ADD_FORBID_CONTENTS,Ee)),ae&&(D["#text"]=!0),Q&&Us(D,["html","head","body"]),D.table&&(Us(D,["tbody"]),delete V.tbody),e.TRUSTED_TYPES_POLICY){if("function"!==typeof e.TRUSTED_TYPES_POLICY.createHTML)throw Fs('TRUSTED_TYPES_POLICY configuration option must provide a "createHTML" hook.');if("function"!==typeof e.TRUSTED_TYPES_POLICY.createScriptURL)throw Fs('TRUSTED_TYPES_POLICY configuration option must provide a "createScriptURL" hook.');k=e.TRUSTED_TYPES_POLICY,A=k.createHTML("")}else void 0===k&&(k=function(e,t){if("object"!==typeof e||"function"!==typeof e.createPolicy)return null;let n=null;const r="data-tt-policy-suffix";t&&t.hasAttribute(r)&&(n=t.getAttribute(r));const o="dompurify"+(n?"#"+n:"");try{return e.createPolicy(o,{createHTML:e=>e,createScriptURL:e=>e})}catch(i){return console.warn("TrustedTypes policy "+o+" could not be created."),null}}(f,i)),null!==k&&"string"===typeof A&&(A=k.createHTML(""));ks&&ks(e),Ce=e}},Pe=Us({},[...Ks,...$s,...Ys]),Ne=Us({},[...Xs,...Js]),Re=function(e){Is(n.removed,{element:e});try{x(e).removeChild(e)}catch(t){y(e)}},je=function(e,t){try{Is(n.removed,{attribute:t.getAttributeNode(e),from:t})}catch(r){Is(n.removed,{attribute:null,from:t})}if(t.removeAttribute(e),"is"===e)if(te||ne)try{Re(t)}catch(r){}else try{t.setAttribute(e,"")}catch(r){}},Oe=function(e){let t=null,n=null;if(ee)e=""+e;else{const t=Ns(e,/^[\r\n\t ]+/);n=t&&t[0]}"application/xhtml+xml"===we&&ve===ye&&(e=''+e+"");const o=k?k.createHTML(e):e;if(ve===ye)try{t=(new h).parseFromString(o,we)}catch(a){}if(!t||!t.documentElement){t=S.createDocument(ve,"template",null);try{t.documentElement.innerHTML=be?A:o}catch(a){}}const i=t.body||t.documentElement;return e&&n&&i.insertBefore(r.createTextNode(n),i.childNodes[0]||null),ve===ye?T.call(t,Q?"html":"body")[0]:Q?t.documentElement:i},Me=function(e){return _.call(e.ownerDocument||e,e,u.SHOW_ELEMENT|u.SHOW_COMMENT|u.SHOW_TEXT|u.SHOW_PROCESSING_INSTRUCTION|u.SHOW_CDATA_SECTION,null)},De=function(e){return e instanceof p&&("string"!==typeof e.nodeName||"string"!==typeof e.textContent||"function"!==typeof e.removeChild||!(e.attributes instanceof d)||"function"!==typeof e.removeAttribute||"function"!==typeof e.setAttribute||"string"!==typeof e.namespaceURI||"function"!==typeof e.insertBefore||"function"!==typeof e.hasChildNodes)},Fe=function(e){return"function"===typeof l&&e instanceof l};function Be(e,t,r){Ts(e,e=>{e.call(n,t,r,Ce)})}const We=function(e){let t=null;if(Be(C.beforeSanitizeElements,e,null),De(e))return Re(e),!0;const r=Ee(e.nodeName);if(Be(C.uponSanitizeElement,e,{tagName:r,allowedTags:D}),J&&e.hasChildNodes()&&!Fe(e.firstElementChild)&&Ds(/<[/\w!]/g,e.innerHTML)&&Ds(/<[/\w!]/g,e.textContent))return Re(e),!0;if(J&&e.namespaceURI===ye&&"style"===r&&Fe(e.firstElementChild))return Re(e),!0;if(e.nodeType===gl)return Re(e),!0;if(J&&e.nodeType===yl&&Ds(/<[/\w]/g,e.data))return Re(e),!0;if(V[r]||!(G.tagCheck instanceof Function&&G.tagCheck(r))&&!D[r]){if(!V[r]&&Ve(r)){if(U.tagNameCheck instanceof RegExp&&Ds(U.tagNameCheck,r))return!1;if(U.tagNameCheck instanceof Function&&U.tagNameCheck(r))return!1}if(ae&&!ce[r]){const t=x(e)||e.parentNode,n=b(e)||e.childNodes;if(n&&t){for(let r=n.length-1;r>=0;--r){const o=g(n[r],!0);o.__removalCount=(e.__removalCount||0)+1,t.insertBefore(o,v(e))}}}return Re(e),!0}return e instanceof c&&!function(e){let t=x(e);t&&t.tagName||(t={namespaceURI:ve,tagName:"template"});const n=zs(e.tagName),r=zs(t.tagName);return!!xe[e.namespaceURI]&&(e.namespaceURI===ge?t.namespaceURI===ye?"svg"===n:t.namespaceURI===me?"svg"===n&&("annotation-xml"===r||Ae[r]):Boolean(Pe[n]):e.namespaceURI===me?t.namespaceURI===ye?"math"===n:t.namespaceURI===ge?"math"===n&&Se[r]:Boolean(Ne[n]):e.namespaceURI===ye?!(t.namespaceURI===ge&&!Se[r])&&!(t.namespaceURI===me&&!Ae[r])&&!Ne[n]&&(_e[n]||!Pe[n]):!("application/xhtml+xml"!==we||!xe[e.namespaceURI]))}(e)?(Re(e),!0):"noscript"!==r&&"noembed"!==r&&"noframes"!==r||!Ds(/<\/no(script|embed|frames)/i,e.innerHTML)?(X&&e.nodeType===ml&&(t=e.textContent,Ts([I,L,z],e=>{t=Rs(t,e," ")}),e.textContent!==t&&(Is(n.removed,{element:e.cloneNode()}),e.textContent=t)),Be(C.afterSanitizeElements,e,null),!1):(Re(e),!0)},Ue=function(e,t,n){if(H[t])return!1;if(oe&&("id"===t||"name"===t)&&(n in r||n in Ie))return!1;if(K&&!H[t]&&Ds(P,t));else if(q&&Ds(N,t));else if(G.attributeCheck instanceof Function&&G.attributeCheck(t,e));else if(!B[t]||H[t]){if(!(Ve(e)&&(U.tagNameCheck instanceof RegExp&&Ds(U.tagNameCheck,e)||U.tagNameCheck instanceof Function&&U.tagNameCheck(e))&&(U.attributeNameCheck instanceof RegExp&&Ds(U.attributeNameCheck,t)||U.attributeNameCheck instanceof Function&&U.attributeNameCheck(t,e))||"is"===t&&U.allowCustomizedBuiltInElements&&(U.tagNameCheck instanceof RegExp&&Ds(U.tagNameCheck,n)||U.tagNameCheck instanceof Function&&U.tagNameCheck(n))))return!1}else if(he[t]);else if(Ds(M,Rs(n,j,"")));else if("src"!==t&&"xlink:href"!==t&&"href"!==t||"script"===e||0!==js(n,"data:")||!de[e]){if($&&!Ds(R,Rs(n,j,"")));else if(n)return!1}else;return!0},Ve=function(e){return"annotation-xml"!==e&&Ns(e,O)},He=function(e){Be(C.beforeSanitizeAttributes,e,null);const{attributes:t}=e;if(!t||De(e))return;const r={attrName:"",attrValue:"",keepAttr:!0,allowedAttributes:B,forceKeepAttr:void 0};let o=t.length;for(;o--;){const a=t[o],{name:s,namespaceURI:l,value:c}=a,u=Ee(s),d=c;let p="value"===s?d:Os(d);if(r.attrName=u,r.attrValue=p,r.keepAttr=!0,r.forceKeepAttr=void 0,Be(C.uponSanitizeAttribute,e,r),p=r.attrValue,!ie||"id"!==u&&"name"!==u||(je(s,e),p="user-content-"+p),J&&Ds(/((--!?|])>)|<\/(style|script|title|xmp|textarea|noscript|iframe|noembed|noframes)/i,p)){je(s,e);continue}if("attributename"===u&&Ns(p,"href")){je(s,e);continue}if(r.forceKeepAttr)continue;if(!r.keepAttr){je(s,e);continue}if(!Y&&Ds(/\/>/i,p)){je(s,e);continue}X&&Ts([I,L,z],e=>{p=Rs(p,e," ")});const h=Ee(e.nodeName);if(Ue(h,u,p)){if(k&&"object"===typeof f&&"function"===typeof f.getAttributeType)if(l);else switch(f.getAttributeType(h,u)){case"TrustedHTML":p=k.createHTML(p);break;case"TrustedScriptURL":p=k.createScriptURL(p)}if(p!==d)try{l?e.setAttributeNS(l,s,p):e.setAttribute(s,p),De(e)?Re(e):Cs(n.removed)}catch(i){je(s,e)}}else je(s,e)}Be(C.afterSanitizeAttributes,e,null)},Ge=function(e){let t=null;const n=Me(e);for(Be(C.beforeSanitizeShadowDOM,e,null);t=n.nextNode();)Be(C.uponSanitizeShadowNode,t,null),We(t),He(t),t.content instanceof a&&Ge(t.content);Be(C.afterSanitizeShadowDOM,e,null)};return n.sanitize=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=null,i=null,s=null,c=null;if(be=!e,be&&(e="\x3c!--\x3e"),"string"!==typeof e&&!Fe(e)){if("function"!==typeof e.toString)throw Fs("toString is not a function");if("string"!==typeof(e=e.toString()))throw Fs("dirty is not a string, aborting")}if(!n.isSupported)return e;if(Z||ze(t),n.removed=[],"string"===typeof e&&(se=!1),se){if(e.nodeName){const t=Ee(e.nodeName);if(!D[t]||V[t])throw Fs("root node is forbidden and cannot be sanitized in-place")}}else if(e instanceof l)r=Oe("\x3c!----\x3e"),i=r.ownerDocument.importNode(e,!0),i.nodeType===fl&&"BODY"===i.nodeName||"HTML"===i.nodeName?r=i:r.appendChild(i);else{if(!te&&!X&&!Q&&-1===e.indexOf("<"))return k&&re?k.createHTML(e):e;if(r=Oe(e),!r)return te?null:re?A:""}r&&ee&&Re(r.firstChild);const u=Me(se?e:r);for(;s=u.nextNode();)We(s),He(s),s.content instanceof a&&Ge(s.content);if(se)return e;if(te){if(X){r.normalize();let e=r.innerHTML;Ts([I,L,z],t=>{e=Rs(e,t," ")}),r.innerHTML=e}if(ne)for(c=w.call(r.ownerDocument);r.firstChild;)c.appendChild(r.firstChild);else c=r;return(B.shadowroot||B.shadowrootmode)&&(c=E.call(o,c,!0)),c}let d=Q?r.outerHTML:r.innerHTML;return Q&&D["!doctype"]&&r.ownerDocument&&r.ownerDocument.doctype&&r.ownerDocument.doctype.name&&Ds(dl,r.ownerDocument.doctype.name)&&(d="\n"+d),X&&Ts([I,L,z],e=>{d=Rs(d,e," ")}),k&&re?k.createHTML(d):d},n.setConfig=function(){ze(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{}),Z=!0},n.clearConfig=function(){Ce=null,Z=!1},n.isValidAttribute=function(e,t,n){Ce||ze({});const r=Ee(e),o=Ee(t);return Ue(r,o,n)},n.addHook=function(e,t){"function"===typeof t&&Is(C[e],t)},n.removeHook=function(e,t){if(void 0!==t){const n=Es(C[e],t);return-1===n?void 0:Ls(C[e],n,1)[0]}return Cs(C[e])},n.removeHooks=function(e){C[e]=[]},n.removeAllHooks=function(){C={afterSanitizeAttributes:[],afterSanitizeElements:[],afterSanitizeShadowDOM:[],beforeSanitizeAttributes:[],beforeSanitizeElements:[],beforeSanitizeShadowDOM:[],uponSanitizeAttribute:[],uponSanitizeElement:[],uponSanitizeShadowNode:[]}},n}();const kl=(()=>{const e="kiss-translator-policy";let t=null,n=!1;const r=()=>{if(t||n)return t;if(!globalThis.trustedTypes||!globalThis.trustedTypes.createPolicy)return n=!0,null;try{t=globalThis.trustedTypes.createPolicy(e,{createHTML:e=>xl.sanitize(e),createScript:e=>e,createScriptURL:e=>e})}catch(i){var r,o;if(null!==i&&void 0!==i&&null!==(r=i.message)&&void 0!==r&&r.includes("already exists"))t=(null===(o=globalThis.trustedTypes.policies)||void 0===o?void 0:o.get(e))||null;t||(n=!0)}return t};return{createHTML:e=>{const t=r();return t?t.createHTML(e):xl.sanitize(e)},createScript:e=>{const t=r();return t?t.createScript(e):e},createScriptURL:e=>{const t=r();return t?t.createScriptURL(e):e},isEnabled:()=>null!==t}})();function Al(e){if(!e||"string"!==typeof e)return e;return(new DOMParser).parseFromString(kl.createHTML(e),"text/html").documentElement.textContent||""}const Sl=new Map,_l=(e,t)=>{if(Sl.has(e))return Sl.get(e);const n=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:3;const t=[];return{add:function(){for(var n=arguments.length,r=new Array(n),o=0;o0&&t.splice(0,i)},getAll:()=>[...t],clear:()=>{t.length=0}}}(t);return Sl.set(e,n),n};const wl=e=>e?e.trim().replace(/\s+/g," "):"",Tl=()=>({title:(()=>{try{return Vo(wl(document.title))}catch(e){return""}})(),description:(()=>{try{const e=document.querySelector('meta[name="description"]'),t=(null===e||void 0===e?void 0:e.getAttribute("content"))||"";return Vo(wl(t))}catch(e){return""}})(),summary:(()=>{let e="";try{var t,n;const i=(null===(t=document)||void 0===t||null===(n=t.location)||void 0===n?void 0:n.href)||"",a="https://www.youtube.com";if(i.startsWith(a)){const t=document.querySelector("#collapsed-title")||document.querySelector("#description-inline-expander");t&&(e=t.textContent)}var r,o;e||(e=(null===(r=document.querySelector('meta[property="og:description"]'))||void 0===r?void 0:r.getAttribute("content"))||""),e||(e=(null===(o=document.querySelector('meta[name="keywords"]'))||void 0===o?void 0:o.getAttribute("content"))||"")}catch(i){}return Vo(wl(e))})()}),El=["reqHook"],Cl=new Map,Il=new Map,Ll=function(e){var t;let n=arguments.length>2?arguments[2]:void 0;const r=(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split(/\n|,/).map(e=>e.trim()).filter(Boolean);if(0===r.length)return"";const o=((null!==(t=n.get(e))&&void 0!==t?t:-1)+1)%r.length;return n.set(e,o),r[o]},zl=function(e){if(!e)return[];if(!(!(arguments.length>1&&void 0!==arguments[1])||arguments[1]))return[[e]];let t=Oo(e).trim();const n=Xi(t,{decodeText:Al});return n.length>0?n.map(e=>e.translation):t.split("\n").map(e=>[Al(e.replace(//gi,"\n").trim()),""])},Pl=function(){const e=String(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"");if(/WEBVTT|MM:SS\.mmm|-->/i.test(e))return"vtt-legacy";if(/\{\s*["']?s["']?\s*:/.test(e))return"index-v1";const t=/["'`]p["'`]/i.test(e),n=/pause\s+levels?|\u505c\u987f\u7b49\u7ea7|\u66ab\u505c\u7b49\u7d1a/i.test(e);return t&&n?"boundary-v2":"boundary-v3"},Nl=function(e){const t=Pl(arguments.length>1&&void 0!==arguments[1]?arguments[1]:""),n="boundary-v2"===t||"index-v1"===t||"vtt-legacy"===t;return e.map((t,r)=>{const o={id:r,text:t.text};if(n&&r>0){const n=(i=t.start-e[r-1].end,!Number.isFinite(i)||i<=300?0:i<=600?1:i<=1200?2:3);n&&(o.p=n)}else if(!n&&r0&&(o.pauseMs=n)}var i;return o})},Rl=function(){return"vtt-legacy"!==Pl(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")},jl=e=>Array.isArray(e)?e.filter(e=>!e.thought&&e.text).map(e=>e.text).join(""):"",Ol=function(){return/\/v1(?:beta\d*)?\/interactions(?:[/?]|$)/i.test(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"")},Ml=e=>{var t,n,r;return Array.isArray(null===e||void 0===e?void 0:e.steps)?(e=>Array.isArray(null===e||void 0===e?void 0:e.steps)?e.steps.filter(e=>"model_output"===(null===e||void 0===e?void 0:e.type)).flatMap(e=>Array.isArray(e.content)?e.content:[]).filter(e=>"text"===(null===e||void 0===e?void 0:e.type)&&e.text).map(e=>e.text).join(""):"")(e):jl(null===e||void 0===e||null===(t=e.candidates)||void 0===t||null===(n=t[0])||void 0===n||null===(r=n.content)||void 0===r?void 0:r.parts)},Dl={max:32768,high:16384,medium:8192,low:4096,minimal:2048},Fl=(e,t)=>{let{apiType:n,thinkingMode:r,thinkingEffort:o}=t;if("auto"===r)return;const i=Qt[n];if(!i)return;const a=o&&"_default"!==o;switch(i.type){case"deepseek":e.thinking={type:"enabled"===r?"enabled":"disabled"},"enabled"===r&&a&&(e.reasoning_effort=o);break;case"aliyunbailian":e.enable_thinking="enabled"===r;break;case"siliconflow":e.enable_thinking="enabled"===r,"enabled"===r&&a&&(e.thinking_budget=Dl[o]||8192);break;case"cerebras":"disabled"===r?e.reasoning_effort="none":a&&(e.reasoning_effort=o);break;case"openai":"disabled"===r?e.reasoning_effort="none":"enabled"===r&&a&&(e.reasoning_effort=o);break;case"openrouter":a&&(e.reasoning={effort:o})}},Bl=e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:i,temperature:a,maxTokens:s,hisMsgs:l=[],useStream:c=!1,apiType:u,thinkingMode:d,thinkingEffort:p}=e;const h={role:"user",content:o},f={model:i,messages:[{role:"system",content:r},...l,h],temperature:a,max_completion_tokens:s,stream:c};Fl(f,{apiType:u,thinkingMode:d,thinkingEffort:p});return{url:t,body:f,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n)},userMsg:h}},Wl={[kt]:e=>{let{texts:t,from:n,to:r,url:o,key:i}=e;const a=ls.stringify({client:"gtx",dt:"t",dj:1,ie:"UTF-8",sl:n,tl:r,q:t.join(" ")});o="".concat(o,"?").concat(a);const s={"Content-type":"application/json"};return i&&(s.Authorization="Bearer ".concat(i)),{url:o,headers:s,method:"GET"}},[At]:e=>{let{texts:t,from:n,to:r,url:o,key:i}=e;return{url:o,body:[[t,n,r],"wt_lib"],headers:{"Content-Type":"application/json+protobuf","X-Goog-API-Key":i}}},[St]:e=>{let{texts:t,from:n,to:r,token:o}=e;const i=ls.stringify({from:n,to:r,"api-version":"3.0"}),a="https://api-edge.cognitive.microsofttranslator.com/translate?".concat(i),s={"Content-type":"application/json",Authorization:"Bearer ".concat(o)};return{url:a,body:t.map(e=>({Text:e})),headers:s}},[_t]:e=>{let{texts:t,from:n,to:r,url:o,key:i,region:a}=e;const s=ls.stringify({from:n,to:r});o=o.endsWith("&")?"".concat(o).concat(s):"".concat(o,"&").concat(s);const l={"Content-type":"application/json","Ocp-Apim-Subscription-Key":i,"Ocp-Apim-Subscription-Region":a};return{url:o,body:t.map(e=>({Text:e})),headers:l}},[Pt]:e=>{let{texts:t,from:n,to:r,url:o,key:i}=e;return{url:o,body:{text:t,target_lang:r,source_lang:n},headers:{"Content-type":"application/json",Authorization:"DeepL-Auth-Key ".concat(i)}}},[Rt]:e=>{let{texts:t,from:n,to:r}=e;const o=t.join(" "),i=(o.match(/[i]/g)||[]).length+1;let a=Date.now();a+=i-a%i,hs++;return{url:"https://www2.deepl.com/jsonrpc",body:{jsonrpc:"2.0",method:"LMT_handle_texts",params:{splitting:"newlines",lang:{target_lang:r,source_lang_user_selected:n},commonJobParams:{wasSpoken:!1,transcribe_as:""},id:hs,timestamp:a,texts:[{text:o,requestAlternatives:3}]}},headers:{"Content-Type":"application/json",Accept:"*/*","x-app-os-name":"iOS","x-app-os-version":"16.3.0","Accept-Language":"en-US,en;q=0.9","Accept-Encoding":"gzip, deflate, br","x-app-device":"iPhone13,2","User-Agent":"DeepL-iOS/2.9.1 iOS 16.3.0 (iPhone13,2)","x-app-build":"510265","x-app-version":"2.9.1"}}},[wt]:Bl,[Tt]:Bl,[Et]:Bl,[Ct]:Bl,[It]:Bl,[Lt]:Bl,[zt]:Bl,[Nt]:e=>{let{texts:t,from:n,to:r,url:o,key:i}=e;const a={text:t.join(" "),target_lang:r,source_lang:n},s={"Content-type":"application/json"};return i&&(s.Authorization="Bearer ".concat(i)),{url:o,body:a,headers:s}},[jt]:Bl,[Ot]:e=>{let{texts:t,from:n,to:r}=e;return{url:"https://fanyi.baidu.com/transapi",body:{from:n,to:r,query:t.join(" "),source:"txt"},headers:{"content-type":"application/x-www-form-urlencoded; charset=UTF-8","User-Agent":Io}}},[Mt]:e=>{let{texts:t,from:n,to:r}=e;return{url:"https://transmart.qq.com/api/imt",body:{header:{fn:"auto_translation",client_key:"browser-chrome-110.0.0-Mac OS-df4bd4c5-a65d-44b2-a40f-42f34f3535f2-1677486696487"},type:"plain",model_category:"normal",source:{text_list:t,lang:n},target:{lang:r}},headers:{"Content-Type":"application/json","user-agent":Io,referer:"https://transmart.qq.com/zh-CN/index"}}},[Dt]:e=>{let{texts:t,from:n,to:r}=e;return{url:"https://translate.volcengine.com/crx/translate/v1",body:{source_language:n,target_language:r,text:t.join(" ")},headers:{"Content-type":"application/json"}}},[Ft]:Bl,[Bt]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:i,maxTokens:a,hisMsgs:s=[],useStream:l=!1,thinkingMode:c,thinkingEffort:u}=e;if(t=t.replaceAll(lt,i).replaceAll("{{key}}",n),Ol(t)){const e={type:"user_input",content:[{type:"text",text:o}]},d={max_output_tokens:a};"disabled"===c?d.thinking_level="minimal":"enabled"===c&&u&&"_default"!==u&&(d.thinking_level=u);return{url:t,body:{model:i,system_instruction:r,input:[...s,e],stream:l,store:!1,generation_config:d,safety_settings:[{type:"harassment",threshold:"block_none"},{type:"hate_speech",threshold:"block_none"},{type:"sexually_explicit",threshold:"block_none"},{type:"dangerous_content",threshold:"block_none"}]},headers:{"Content-type":"application/json","x-goog-api-key":n},userMsg:e}}l&&(t=t.replace(":generateContent",":streamGenerateContent"),t+=(t.includes("?")?"&":"?")+"alt=sse");const d={role:"user",parts:[{text:o}]},p={systemInstruction:{parts:[{text:r}]},contents:[...s,d],generationConfig:{maxOutputTokens:a}};"disabled"===c?p.generationConfig.thinkingConfig={thinkingBudget:0}:c&&"auto"!==c&&u&&"_default"!==u&&(p.generationConfig.thinkingConfig={thinkingLevel:u}),Object.assign(p,{safetySettings:[{category:"HARM_CATEGORY_HARASSMENT",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_HATE_SPEECH",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_SEXUALLY_EXPLICIT",threshold:"BLOCK_NONE"},{category:"HARM_CATEGORY_DANGEROUS_CONTENT",threshold:"BLOCK_NONE"}]});return{url:t,body:p,headers:{"Content-type":"application/json","x-goog-api-key":n},userMsg:d}},[Wt]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:i,temperature:a,maxTokens:s,hisMsgs:l=[],useStream:c=!1,apiType:u,thinkingMode:d,thinkingEffort:p}=e;const h={role:"user",content:o},f={model:i,messages:[{role:"system",content:r},...l,h],temperature:a,max_tokens:s,stream:c};Fl(f,{apiType:u,thinkingMode:d,thinkingEffort:p});return{url:t,body:f,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n)},userMsg:h}},[Ut]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:i,temperature:a,maxTokens:s,hisMsgs:l=[],useStream:c=!1,thinkingMode:u,thinkingEffort:d}=e;const p={role:"user",content:o},h={model:i,system:r,messages:[...l,p],temperature:a,max_tokens:s,stream:c};u&&"auto"!==u&&"enabled"===u&&(h.thinking={type:"adaptive"},d&&"_default"!==d&&(h.output_config={effort:d}));return{url:t,body:h,headers:{"Content-type":"application/json","anthropic-version":"2023-06-01","anthropic-dangerous-direct-browser-access":"true","x-api-key":n},userMsg:p}},[Vt]:e=>{let{texts:t,from:n,to:r,url:o,key:i}=e;return{url:o,body:{text:t.join(" "),source_lang:n,target_lang:r},headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(i)}}},[Ht]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:i,temperature:a,maxTokens:s,hisMsgs:l=[],useStream:c=!1,thinkingMode:u,thinkingEffort:d}=e;const p={role:"user",content:o},h={model:i,messages:[{role:"system",content:r},...l,p],temperature:a,max_tokens:s};Fl(h,{apiType:Ht,thinkingMode:u,thinkingEffort:d}),h.stream=c;const f={"Content-type":"application/json"};return n&&(f.Authorization="Bearer ".concat(n)),{url:t,body:h,headers:f,userMsg:p}},[Gt]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:i,temperature:a,maxTokens:s,hisMsgs:l=[],useStream:c=!1,thinkingMode:u,thinkingEffort:d}=e;const p={role:"user",content:o},h={model:i,messages:[{role:"system",content:r},...l,p],temperature:a,max_tokens:s,stream:c};Fl(h,{apiType:Gt,thinkingMode:u,thinkingEffort:d});return{url:t,body:h,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n),"HTTP-Referer":"https://fishjar.github.io/kiss-translator/","X-OpenRouter-Title":"KISS Translator"},userMsg:p}},[qt]:e=>{let{url:t,key:n,systemPrompt:r,userPrompt:o,model:i,temperature:a,maxTokens:s,hisMsgs:l=[],useStream:c=!1,thinkingMode:u,thinkingEffort:d}=e;const p={role:"user",content:o},h={model:i,messages:[{role:"system",content:r},...l,p],temperature:a,max_completion_tokens:s,stream:c};Fl(h,{apiType:qt,thinkingMode:u,thinkingEffort:d});return{url:t,body:h,headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(n),"HTTP-Referer":"https://fishjar.github.io/kiss-translator/","X-Title":"KISS Translator"},userMsg:p}},[Kt]:e=>{let{texts:t,fromLang:n,toLang:r,url:o,key:i,useBatchFetch:a}=e;return{url:o,body:a?{texts:t,from:n,to:r}:{text:t[0],from:n,to:r},headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(i)}}}},Ul=e=>{let{url:t="",body:n=null,headers:r={},userMsg:o=null,method:i="POST"}=e;if(!t)throw new Error("genInit: url is empty");const a={method:i,headers:r};if("GET"!==i&&"HEAD"!==i&&n){var s;let e=JSON.stringify(n);const t=null===n||void 0===n||null===(s=n.params)||void 0===s?void 0:s.id;t&&(e=e.replace('method":"',(t+3)%13===0||(t+5)%29===0?'method" : "':'method": "')),Object.assign(a,{body:e})}return[t,a,o]},Vl=async e=>{let{reqHook:t}=e,n=qo(e,El);const{apiType:r,apiSlug:o,key:i,systemPrompt:a,subtitlePrompt:s,nobatchPrompt:l=un,nobatchUserPrompt:c=dn,useBatchFetch:d,from:p,to:h,fromLang:f,toLang:m,texts:g,glossary:y,aiTerms:v,customHeader:b,customBody:x,events:k,tone:A,docInfo:S}=n;if(Jt.mulkeys.has(r)&&(n.key=Ll(o,i,Cl)),r===Nt&&(n.url=Ll(o,n.url,Il)),Jt.ai.has(r)){const e=S||Tl();let t=k?(e=>{let{subtitlePrompt:t,tone:n,from:r,to:o,fromLang:i,toLang:a,docInfo:{title:s="",description:l="",summary:c=""}={},aiTerms:u=""}=e;const d=Ho(u),p=Object.entries(d).map(e=>{let[t,n]=e;return"- ".concat(t,": ").concat(n)}).join("\n");return String(t||"").replaceAll(ot,s).replaceAll(it,l).replaceAll(at,c).replaceAll(rt,n).replaceAll(ct,p).replaceAll(Qe,r).replaceAll(Ze,o).replaceAll(et,i).replaceAll(tt,a)})({subtitlePrompt:s,from:p,to:h,fromLang:f,toLang:m,texts:g,docInfo:e,tone:A,aiTerms:v}):(e=>{let{systemPrompt:t,tone:n,from:r,to:o,fromLang:i,toLang:a,texts:s,docInfo:{title:l="",description:c="",summary:u="",context:d=""}={}}=e;return String(t||"").replaceAll(ot,l).replaceAll(it,c).replaceAll(at,u).replaceAll(st,d).replaceAll(rt,n).replaceAll(Qe,r).replaceAll(Ze,o).replaceAll(et,i).replaceAll(tt,a).replaceAll(nt,s[0])})({systemPrompt:d?a:l,from:p,to:h,fromLang:f,toLang:m,texts:g,docInfo:e,tone:A});n.systemPrompt=t,n.userPrompt=k?(e=>{let{formattedEvents:t}=e;return JSON.stringify(t)})({formattedEvents:Rl(s)?Nl(k,s):k}):(e=>{let{nobatchUserPrompt:t,useBatchFetch:n,tone:r,glossary:o={},aiTerms:i="",from:a,to:s,fromLang:l,toLang:c,texts:d,docInfo:{title:p="",description:h="",summary:f="",context:m=""}={}}=e;if(i){const e=Ho(i);o=u(u({},o),e)}if(n){const e={targetLanguage:c,segments:d.map((e,t)=>({id:t,text:e}))};return p&&(e.title=p),h&&(e.description=h),0!==Object.keys(o).length&&(e.glossary=o),r&&(e.tone=r),JSON.stringify(e)}const g=Object.entries(o).map(e=>{let[t,n]=e;return"- ".concat(t,": ").concat(n)}).join("\n");return String(t||"").replaceAll(ot,p).replaceAll(it,h).replaceAll(at,f).replaceAll(st,m).replaceAll(rt,r).replaceAll(ct,g).replaceAll(Qe,a).replaceAll(Ze,s).replaceAll(et,l).replaceAll(tt,c).replaceAll(nt,d[0])})({nobatchUserPrompt:c,useBatchFetch:d,from:p,to:h,fromLang:f,toLang:m,texts:g,docInfo:e,tone:A,glossary:y,aiTerms:v})}const{url:_="",body:w=null,headers:T={},userMsg:E=null,method:C="POST"}=Wl[r](n);if(k&&r===Bt&&(null!==w&&void 0!==w&&w.generation_config?w.response_format={type:"text",mime_type:"application/json"}:null!==w&&void 0!==w&&w.generationConfig&&(w.generationConfig.responseMimeType="application/json")),null!==b&&void 0!==b&&b.trim()&&Object.assign(T,Wo(b)),null!==x&&void 0!==x&&x.trim()&&Object.assign(w,Wo(x)),null!==t&&void 0!==t&&t.trim()&&!k)try{const e={url:_,body:w,headers:T,userMsg:E,method:C};ms.run("exports.reqHook = ".concat(t));const r=await ms.exports.reqHook(u(u({},n),{},{defaultSystemPrompt:pn,defaultSystemPromptXml:hn,defaultSystemPromptLines:fn,defaultSubtitlePrompt:gn,defaultNobatchPrompt:un,defaultNobatchUserPrompt:dn,req:e}),e);if(r&&r.url)return Ul(r)}catch(I){throw Nr("run req hook",I),new Error("Request hook error: ".concat(I.message))}return Ul({url:_,body:w,headers:T,userMsg:E,method:C})};function Hl(e,t){var n,r,o,i,a;switch(t){case jt:case Ft:case wt:case Tt:case Et:case Ct:case It:case Lt:case zt:case Wt:case Gt:case qt:case Ht:return(null===e||void 0===e||null===(n=e.choices)||void 0===n||null===(r=n[0])||void 0===r||null===(o=r.message)||void 0===o?void 0:o.content)||"";case Bt:return Ml(e);case Ut:return(null===e||void 0===e||null===(i=e.content)||void 0===i||null===(a=i[0])||void 0===a?void 0:a.text)||"";case Kt:return"string"===typeof e?e:(null===e||void 0===e?void 0:e.text)||(null===e||void 0===e?void 0:e.result)||""}throw new Error("parse dictionary result: apiType not matched",t)}function Gl(){return ql.apply(this,arguments)}function ql(){return ql=$o(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],{from:t,to:n,fromLang:r,toLang:o,langMap:i,glossary:a,apiSetting:s,usePool:l,docInfo:c,signal:d}=arguments.length>1?arguments[1]:void 0;return function*(){if(null!==d&&void 0!==d&&d.aborted)return;let p=null,h=[];const{apiType:f,apiSlug:m,contextSize:g,useContext:y,fetchInterval:v,fetchLimit:b,httpTimeout:x,useStream:k}=s;y&&Jt.context.has(f)&&(p=_l(m,g),h=p.getAll());const A=k&&Jt.stream.has(f)&&!(f===Bt&&y&&Ol(s.url));let S="";if(f===St&&(S=yield Xo(ps()),!S))throw new Error("got msauth error");const _=l=>Vl(u(u({},s),{},{texts:e,from:t,to:n,fromLang:r,toLang:o,langMap:i,glossary:a,hisMsgs:h,token:S,useStream:l,docInfo:c})),w=function(){var a=$o(function*(a,c,h){const f=yield Xo(xa(a,c,{useCache:!1,usePool:l,fetchInterval:v,fetchLimit:b,httpTimeout:x,signal:d}));if(!f)throw new Error("translate got empty response");const m=yield Xo((async(e,t)=>{var n,r,o,i,a,s,l,c,u,d,p,h,f,m,g,y,v,b;let{texts:x,from:k,to:A,fromLang:S,toLang:_,langMap:w,resHook:T,history:E,userMsg:C,apiType:I,useBatchFetch:L}=t;if(null!==T&&void 0!==T&&T.trim())try{ms.run("exports.resHook = ".concat(T));const t=await ms.exports.resHook({apiType:I,userMsg:C,res:e,texts:x,from:k,to:A,fromLang:S,toLang:_,langMap:w,extractJson:Uo,parseAIRes:zl});if(t&&Array.isArray(t.translations))return E&&C&&t.modelMsg&&E.add(C,t.modelMsg),t.translations;if(Array.isArray(t))return t}catch(O){throw Nr("run res hook",O),new Error("Response hook error: ".concat(O.message))}let z="";switch(I){case kt:return[[null===e||void 0===e||null===(n=e.sentences)||void 0===n?void 0:n.map(e=>e.trans).join(" "),null===e||void 0===e?void 0:e.src]];case At:return null===e||void 0===e||null===(r=e[0])||void 0===r?void 0:r.map((t,n)=>{var r,o;return[null===e||void 0===e||null===(r=e[0])||void 0===r?void 0:r[n],null===e||void 0===e||null===(o=e[1])||void 0===o?void 0:o[n]]});case St:case _t:return null===e||void 0===e?void 0:e.map(e=>{var t;return[e.translations.map(e=>e.text).join(" "),null===(t=e.detectedLanguage)||void 0===t?void 0:t.language]});case Pt:return null===e||void 0===e||null===(o=e.translations)||void 0===o?void 0:o.map(e=>[e.text,e.detected_source_language]);case Rt:return[[null===e||void 0===e||null===(i=e.result)||void 0===i||null===(a=i.texts)||void 0===a?void 0:a.map(e=>e.text).join(" "),null===e||void 0===e||null===(s=e.result)||void 0===s?void 0:s.lang]];case Nt:return[[null===e||void 0===e?void 0:e.data,null===e||void 0===e?void 0:e.source_lang]];case Ot:if(1===e.type)return[[Object.keys(JSON.parse(e.result).content[0].mean[0].cont)[0],e.from]];if(2===e.type)return[[e.data.map(e=>e.dst).join(" "),e.from]];break;case Mt:return null===e||void 0===e||null===(l=e.auto_translation)||void 0===l?void 0:l.map(t=>[t,null===e||void 0===e?void 0:e.src_lang]);case Dt:return[[null===e||void 0===e?void 0:e.translation,null===e||void 0===e?void 0:e.detected_language]];case jt:case Ft:case wt:case Tt:case Et:case Ct:case It:case Lt:case zt:case Wt:case Gt:case qt:return z=null===e||void 0===e||null===(c=e.choices)||void 0===c||null===(u=c[0])||void 0===u?void 0:u.message,E&&C&&z&&E.add(C,{role:z.role,content:z.content}),zl(null===(d=z)||void 0===d?void 0:d.content,L);case Bt:var P,N;return E&&Array.isArray(null===e||void 0===e?void 0:e.steps)?(E.clear(),E.add(...e.steps)):(z=null===e||void 0===e||null===(P=e.candidates)||void 0===P||null===(N=P[0])||void 0===N?void 0:N.content,E&&C&&z&&E.add(C,z)),zl(Ml(e),L);case Ut:return z={role:null===e||void 0===e?void 0:e.role,content:null===e||void 0===e||null===(p=e.content)||void 0===p?void 0:p.text},E&&C&&z&&E.add(C,{role:z.role,content:z.content}),zl(null!==(h=null===e||void 0===e||null===(f=e.content)||void 0===f||null===(m=f[0])||void 0===m?void 0:m.text)&&void 0!==h?h:"",L);case Vt:return[[null===e||void 0===e||null===(g=e.result)||void 0===g?void 0:g.translated_text]];case Ht:return z=null===e||void 0===e||null===(y=e.choices)||void 0===y||null===(v=y[0])||void 0===v?void 0:v.message,E&&C&&z&&E.add(C,{role:z.role,content:z.content}),zl(null===(b=z)||void 0===b?void 0:b.content,L);case Kt:var R,j;return L?null===(R=null!==(j=null===e||void 0===e?void 0:e.translations)&&void 0!==j?j:e)||void 0===R?void 0:R.map(e=>[e.text,e.src]):[[e.text,e.src||e.from]]}throw new Error("parse translate result: apiType not matched",I)})(f,u({texts:e,from:t,to:n,fromLang:r,toLang:o,langMap:i,history:p,userMsg:h},s)));if(null===m||void 0===m||!m.length)throw new Error("translate got an unexpected result");for(let e=0;e{let{value:n}=t;const r=Ki(n,NaN);r&&e.push(r)},t.onError=()=>{},{*write(n){try{t.write(n)}catch(Lc){}for(;e.length>0;)yield e.shift()},end(){try{t.end()}catch(Lc){}}}}(),y="realtime"===h?na():null;let v=!1,b=!1;try{var x,k=!1,A=!1;try{for(var S,_=Qo(ka(t,n,{useCache:!1,usePool:l,fetchInterval:c,fetchLimit:u,httpTimeout:d,signal:p}));k=!(S=yield Xo(_.next())).done;k=!1){const e=S.value;try{const t=Zi(JSON.parse(e),o);if(t){if(f+=t,f=Oo(f,!0),!s){"realtime"===h&&(yield{id:0,partialText:f,isComplete:!1});continue}if(b)if(v)for(const{id:e,translation:n}of g.write(t))r[e]=n,yield{id:e,result:n};else for(const{id:e,translation:t}of ea(f,m))r[e]=t,yield{id:e,result:t};else{const{isJson:e,detected:t}=ta(f);if(t&&(b=!0,v=e,v))for(const{id:n,translation:o}of g.write(f))r[n]=o,yield{id:n,result:o}}if(y&&"realtime"===h){const e=y.write(t);for(const{id:t,partialText:n,isComplete:r}of e)r||(yield{id:t,partialText:n,isComplete:!1})}}}catch(Lc){if(null!==Lc&&void 0!==Lc&&Lc.isAIStreamTerminal)throw Lc}}}catch(T){A=!0,x=T}finally{try{k&&null!=_.return&&(yield Xo(_.return()))}finally{if(A)throw x}}v&&g.end()}catch(E){throw Nr("handleTranslateStream error",E),E}const w=r.some(e=>!e);if(w){const t=zl(f,s);for(let n=0;n0&&void 0!==arguments[0]?arguments[0]:[];const t=await ps(),n={headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(t)},method:"POST",body:JSON.stringify(e.map(e=>({Text:e})))},r=await xa("https://api-edge.cognitive.microsofttranslator.com/detect?api-version=3.0",n,{useCache:!1});return Array.isArray(r)?r.map(e=>e.language):[]};const Yl=new Map,Xl=(e,t,n)=>{if(Yl.has(e))return Yl.get(e);const r=function(e){let{batchInterval:t=$e,batchSize:n=Ye,batchLength:r=Xe,batchConcurrency:o=Je}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const i=[],a=Number(o),s=Number.isFinite(a)&&a>=1?Math.floor(a):Je;let l=0,c=null;const u=async()=>{if(c&&(clearTimeout(c),c=null),0===i.length||l>=s)return;l++;let t=[],o=0,a=0;for(const e of i){var p;const t=(null===(p=e.payload)||void 0===p?void 0:p.length)||0;if(a>=n||o+t>r&&a>0)break;o+=t,a++}if(a>0&&(t=i.splice(0,a)),0!==t.length)try{const n=t.map(e=>e.payload),r=t[0].args,o=e(n,r);if(o&&"function"===typeof o[Symbol.asyncIterator]){var h,f=!1,m=!1;try{for(var g,y=Qo(o);f=!(g=await y.next()).done;f=!1){const e=g.value;{const n=e.id,r=!1!==e.isComplete,o=t[n];var v,b;o&&(!r&&null!==(v=o.args)&&void 0!==v&&v.onStreamChunk&&o.args.onStreamChunk({id:n,text:e.partialText,isComplete:!1}),r&&(null!==(b=o.args)&&void 0!==b&&b.onStreamChunk&&o.args.onStreamChunk({id:n,text:e.result,isComplete:!0}),o.resolved||(o.resolved=!0,o.resolve(e.result))))}}}catch(x){m=!0,h=x}finally{try{f&&null!=y.return&&await y.return()}finally{if(m)throw h}}t.forEach((e,t)=>{e.resolved||e.reject(new Error("No response for item at index ".concat(t)))})}else{const e=await o;if(!Array.isArray(e))throw new Error("responses format error");t.forEach((t,n)=>{const r=e[n];r?t.resolve(r):t.reject(new Error("No response for item at index ".concat(n)))})}}catch(k){t.forEach(e=>{e.resolved||(e.resolved=!0,e.reject(k))})}finally{l--,i.length>0&&(i.length>=n?setTimeout(u,0):d())}else l--},d=()=>{l0&&(c=setTimeout(u,t))};return{addTask:(e,t)=>new Promise((r,o)=>{const a=e;i.push({payload:a,resolve:r,reject:o,args:t}),i.length>=n?u():d()}),destroy:()=>{c&&(clearTimeout(c),c=null),i.forEach(e=>e.reject(new Error("Queue instance was destroyed."))),i.length=0}}}(t,n);return Yl.set(e,r),r};var Jl=ni("translatorMap"),Ql=ni("detectorPromise"),Zl=ni("lastReliableDetectedLanguage"),ec=ni("defaultProgressHandler"),tc=ni("getDetectorPromise"),nc=ni("createTranslator");function rc(e,t){Nr("Downloading ".concat(e," model: ").concat(t,"%"))}function oc(){return ei(this,Ql)[Ql]||(ei(this,Ql)[Ql]=(async()=>{try{if("unavailable"===await LanguageDetector.availability())throw new Error("LanguageDetector unavailable");return await LanguageDetector.create({monitor:e=>this._monitorProgress(e,"detector")})}catch(e){throw ei(this,Ql)[Ql]=null,e}})()),ei(this,Ql)[Ql]}function ic(e,t){const n="".concat(e,"_").concat(t);if(ei(this,Jl)[Jl].has(n))return ei(this,Jl)[Jl].get(n);const r=(async()=>{try{if("unavailable"===await Translator.availability({sourceLanguage:e,targetLanguage:t}))throw new Error("Translator ".concat(e,"_").concat(t," unavailable"));const r=await Translator.create({sourceLanguage:e,targetLanguage:t,monitor:e=>this._monitorProgress(e,"translator (".concat(n,")"))});return ei(this,Jl)[Jl].set(n,r),r}catch(r){throw ei(this,Jl)[Jl].delete(n),r}})();return ei(this,Jl)[Jl].set(n,r),r}const ac=new class{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};Object.defineProperty(this,nc,{value:ic}),Object.defineProperty(this,tc,{value:oc}),Object.defineProperty(this,ec,{value:rc}),Object.defineProperty(this,Jl,{writable:!0,value:new Map}),Object.defineProperty(this,Ql,{writable:!0,value:null}),Object.defineProperty(this,Zl,{writable:!0,value:""}),this.onProgress=e.onProgress||ei(this,ec)[ec]}_monitorProgress(e,t){e.addEventListener("downloadprogress",e=>{const n=e.total>0?Math.round(e.loaded/e.total*100):0;this.onProgress(t,n)})}async detectLanguage(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.4;if(!e)return["","Input text cannot be empty."];try{const n=await ei(this,tc)[tc](),r=await n.detect(e);if(!r||0===r.length)return["","No language could be detected."];const{detectedLanguage:o,confidence:i}=r[0];return i2&&void 0!==arguments[2]?arguments[2]:"auto";if(!e||!t||"string"!==typeof e)return["",n,"Input text cannot be empty."];try{let r=n;if("auto"===n){const[t,n]=await this.detectLanguage(e);if(n||!t){return["",r,"Automatic detection of source language failed: ".concat(n||"Unable to determine source language.")]}r=t}if(r===t)return["",r,"Same lang"];const o=await ei(this,nc)[nc](r,t);return[await o.translate(e),r,""]}catch(r){return Nr("translateText",r,"(".concat(e,")")),r&&r.message&&r.message.includes("Other generic failures occurred")&&(Pr.info("Generic failure detected, resetting translator cache."),ei(this,Jl)[Jl].clear()),["",n,r.message]}}},sc=e=>ac.detectLanguage(e.text),lc=e=>ac.translateText(e.text,e.to,e.from),cc="prompt-cache",uc="batch",dc="nobatch",pc="dict";function hc(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return t===uc?[e.systemPrompt||""]:t===dc?[e.nobatchPrompt||"",null!==(n=e.nobatchUserPrompt)&&void 0!==n?n:dn]:t===pc?[e.dictPrompt||"",null!==(r=e.dictUserPrompt)&&void 0!==r?r:mn]:[];var n,r}async function fc(){let e=arguments.length>1?arguments[1]:void 0;const t=[e,...hc(arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e)].join("\n");return(await us(t,cc)).slice(0,16)}const mc="https://api.github.com/gists",gc=e=>({Accept:"application/vnd.github+json",Authorization:"Bearer ".concat(e),"Content-type":"application/json","X-GitHub-Api-Version":"2022-11-28"}),yc=async()=>xa("https://edge.microsoft.com/translate/auth"),vc=async e=>{const t="https://fanyi.baidu.com/sug",n={headers:{"Content-type":"application/json"},method:"POST",body:JSON.stringify({kw:e})},r=await xa(t,n,{useCache:!0});return 0===(null===r||void 0===r?void 0:r.errno)?(await wi(t,n,r),r.data):[]},bc=async e=>{var t;const n={num:5,ver:3,doctype:"json",cache:!1,le:"en",q:e},r="https://dict.youdao.com/suggest?".concat(ls.stringify(n)),o={headers:{accept:"application/json, text/plain, */*","accept-language":"en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ja;q=0.6","content-type":"application/x-www-form-urlencoded"},method:"GET"},i=await xa(r,o,{useCache:!0});return 200===(null===i||void 0===i||null===(t=i.result)||void 0===t?void 0:t.code)?(await wi(r,o,i),i.data.entries):[]},xc=async e=>{let{text:t,from:n,to:r,apiSetting:o}=e;if(!jo)return["",!0];const{fetchInterval:i,fetchLimit:a,httpTimeout:s}=o,l=yi(i,a),c=await function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"Task timed out";const r="function"===typeof e?e():e;return Promise.race([r,new Promise((e,r)=>setTimeout(()=>r(new Error(n)),t))])}(l.push(ua,{fn:lc,msg:"builtinai_translte",text:t,from:n,to:r}),oa(s));if(!c)throw new Error("apiBuiltinAITranslate got null reault");const[u,d,p]=c;if(p)throw new Error("apiBuiltinAITranslate got error: ".concat(p));return[u,d]},kc=async e=>{let{text:t,fromLang:n="auto",toLang:r,apiSetting:o=An,glossary:i,onStreamChunk:a,docInfo:s,useCache:l=!0,usePool:c=!0,signal:d}=e;if(!t)throw new Error("The text cannot be empty.");if(null!==d&&void 0!==d&&d.aborted)throw new DOMException("The operation was aborted.","AbortError");const{apiType:p,apiSlug:h,useBatchFetch:f}=o,m=ln[p]||an,g=m.get(n),y=m.get(r);if(!y)throw new Error("The target lang: ".concat(r," not support"));const[v,b]="2.0.29".split("."),x=await fc(o,function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return Jt.ai.has(e.apiType)?e.useBatchFetch&&Jt.batch.has(e.apiType)?uc:dc:"plain"}(o)),k=u({apiSlug:h,text:t,fromLang:n,toLang:r,version:[v,b].join("."),promptSig:x},(null===s||void 0===s?void 0:s.summary)&&{ctx:s.summary.slice(0,50)}),A="".concat(yo,"?").concat(ls.stringify(k));if(l){const e=await _i(A);if(null!==e&&void 0!==e&&e.trText)return e}if(null!==d&&void 0!==d&&d.aborted)throw new DOMException("The operation was aborted.","AbortError");let S=[];if(p===xt)S=await xc({text:t,from:g,to:y,apiSetting:o});else if(f&&Jt.batch.has(p)){const{apiSlug:e,batchInterval:l,batchSize:u,batchLength:h,batchConcurrency:f,useStream:v,useContext:b}=o,k=v&&Jt.stream.has(p),A=Number(f),_=b&&Jt.context.has(p)?1:Number.isFinite(A)&&A>=1?Math.floor(A):1,w="".concat(e,"_").concat(n,"_").concat(r,"_").concat(k?"stream":"batch","_").concat(x,"_").concat(_),T=Xl(w,Gl,{batchInterval:l,batchSize:u,batchLength:h,batchConcurrency:_});S=await T.addTask(t,{from:g,to:y,fromLang:n,toLang:r,langMap:m,glossary:i,apiSetting:o,usePool:c,onStreamChunk:a,docInfo:s,signal:d})}else{const e=Gl([t],{from:g,to:y,fromLang:n,toLang:r,langMap:m,glossary:i,apiSetting:o,usePool:c,docInfo:s,onStreamChunk:a,signal:d});var _,w=!1,T=!1;try{for(var E,C=Qo(e);w=!(E=await C.next()).done;w=!1){const e=E.value;if(0!==e.id)continue;if(!(!1!==e.isComplete)){a&&a({id:e.id,text:e.partialText,isComplete:!1});continue}a&&a({id:e.id,text:e.result,isComplete:!0}),S=e.result}}catch(N){T=!0,_=N}finally{try{w&&null!=C.return&&await C.return()}finally{if(T)throw _}}}let I="",L="",z="";if(Array.isArray(S)?([I,L=""]=S,L&&(z=cn[p].get(L)||"")):"string"===typeof S&&(I=S),!I)throw new Error("tanslate api got empty trtext");const P="auto"===n&&L===y;return l&&wi(A,null,{trText:I,isSame:P,srLang:L,srCode:z}),{trText:I,srLang:L,srCode:z,isSame:P}},Ac=async e=>{let{text:t,fromLang:n="auto",toLang:r,apiSetting:o=An,docInfo:i,context:a="",onStreamChunk:s,useCache:l=!0,signal:c}=e;if(!t)throw new Error("The text cannot be empty.");if(null!==c&&void 0!==c&&c.aborted)throw new DOMException("The operation was aborted.","AbortError");const{apiType:d}=o;if(!Jt.ai.has(d))throw new Error("AI dictionary only supports AI APIs.");const p=ln[d]||an,h=p.get(n),f=p.get(r);if(!f)throw new Error("The target lang: ".concat(r," not support"));const[m,g]="2.0.29".split("."),y=i||Tl(),v=await us([(null===y||void 0===y?void 0:y.title)||"",(null===y||void 0===y?void 0:y.description)||"",(null===y||void 0===y?void 0:y.summary)||"",a||""].join("\n"),cc),b={apiSlug:o.apiSlug,text:t,fromLang:n,toLang:r,version:[m,g].join("."),promptSig:await fc(o,pc),contextSig:v.slice(0,16)},x="".concat(xo,"?").concat(ls.stringify(b));if(l){const e=await _i(x);if(null!==e&&void 0!==e&&e.markdown)return e.markdown}if(null!==c&&void 0!==c&&c.aborted)throw new DOMException("The operation was aborted.","AbortError");const k=await(async e=>{let{text:t,from:n,to:r,fromLang:o,toLang:i,apiSetting:a,docInfo:s,context:l="",onStreamChunk:c,signal:d}=e;if(null!==d&&void 0!==d&&d.aborted)throw new DOMException("The operation was aborted.","AbortError");const{apiType:p,fetchInterval:h,fetchLimit:f,httpTimeout:m,dictPrompt:g,dictUserPrompt:y}=a,v=Boolean(c)&&a.useStream&&Jt.stream.has(p);if(!g)throw new Error("AI dictionary prompt is empty.");const b=u(u({},a),{},{useBatchFetch:!1,useStream:v,nobatchPrompt:g,nobatchUserPrompt:null!==y&&void 0!==y?y:mn}),x=s||Tl(),[k,A]=await Vl(u(u({},b),{},{texts:[t],from:n,to:r,fromLang:o,toLang:i,docInfo:u(u({},x||{}),{},{context:l})}));if(v){try{let e="";var S,_=!1,w=!1;try{for(var T,E=Qo(ka(k,A,{useCache:!1,usePool:!0,fetchInterval:h,fetchLimit:f,httpTimeout:m,signal:d}));_=!(T=await E.next()).done;_=!1){const t=T.value;try{const n=Zi(JSON.parse(t),p);if(!n)continue;e+=n,e=Oo(e,!0),c({markdown:e})}catch(L){if(null!==L&&void 0!==L&&L.isAIStreamTerminal)throw L}}}catch(z){w=!0,S=z}finally{try{_&&null!=E.return&&await E.return()}finally{if(w)throw S}}const t=Oo(e).trim();if(!t)throw new Error("dictionary got empty content");return t}catch(z){if("AbortError"===(null===z||void 0===z?void 0:z.name))throw z;Nr("dictionary stream failed, fallback to non-stream",z)}const[e,a]=await Vl(u(u({},b),{},{useStream:!1,texts:[t],from:n,to:r,fromLang:o,toLang:i,docInfo:u(u({},x||{}),{},{context:l})})),s=await xa(e,a,{useCache:!1,usePool:!0,fetchInterval:h,fetchLimit:f,httpTimeout:m,signal:d});if(!s)throw new Error("dictionary got empty response");const g=Hl(s,p);if(!g)throw new Error("dictionary got empty content");return g}const C=await xa(k,A,{useCache:!1,usePool:!0,fetchInterval:h,fetchLimit:f,httpTimeout:m,signal:d});if(!C)throw new Error("dictionary got empty response");const I=Hl(C,p);if(!I)throw new Error("dictionary got empty content");return I})({text:t,from:h,to:f,fromLang:n,toLang:r,apiSetting:o,docInfo:y,context:a,onStreamChunk:s,signal:c});return l&&wi(x,null,{markdown:k}),k};function Sc(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function _c(e,t,n){Sc(e,t),t.set(e,n)}function wc(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}function Tc(e,t){return e.get(wc(e,t))}function Ec(e,t,n){return e.set(wc(e,t),n),n}var Cc,Ic={2:e=>{function t(e,t,o){e instanceof RegExp&&(e=n(e,o)),t instanceof RegExp&&(t=n(t,o));var i=r(e,t,o);return i&&{start:i[0],end:i[1],pre:o.slice(0,i[0]),body:o.slice(i[0]+e.length,i[1]),post:o.slice(i[1]+t.length)}}function n(e,t){var n=t.match(e);return n?n[0]:null}function r(e,t,n){var r,o,i,a,s,l=n.indexOf(e),c=n.indexOf(t,l+1),u=l;if(l>=0&&c>0){for(r=[],i=n.length;u>=0&&!s;)u==l?(r.push(u),l=n.indexOf(e,u+1)):1==r.length?s=[r.pop(),c]:((o=r.pop())=0?l:c;r.length&&(s=[i,a])}return s}e.exports=t,t.range=r},101:function(e,t,r){var o;e=r.nmd(e),function(){var i=(e&&e.exports,"object"==typeof n.g&&n.g);i.global!==i&&i.window;var a=function(e){this.message=e};(a.prototype=new Error).name="InvalidCharacterError";var s=function(e){throw new a(e)},l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",c=/[\t\n\f\r ]/g,u={encode:function(e){e=String(e),/[^\0-\xFF]/.test(e)&&s("The string to be encoded contains characters outside of the Latin1 range.");for(var t,n,r,o,i=e.length%3,a="",c=-1,u=e.length-i;++c>18&63)+l.charAt(o>>12&63)+l.charAt(o>>6&63)+l.charAt(63&o);return 2==i?(t=e.charCodeAt(c)<<8,n=e.charCodeAt(++c),a+=l.charAt((o=t+n)>>10)+l.charAt(o>>4&63)+l.charAt(o<<2&63)+"="):1==i&&(o=e.charCodeAt(c),a+=l.charAt(o>>2)+l.charAt(o<<4&63)+"=="),a},decode:function(e){var t=(e=String(e).replace(c,"")).length;t%4==0&&(t=(e=e.replace(/==?$/,"")).length),(t%4==1||/[^+a-zA-Z0-9/]/.test(e))&&s("Invalid character: the string to be decoded is not correctly encoded.");for(var n,r,o=0,i="",a=-1;++a>(-2*o&6)));return i},version:"1.0.0"};void 0===(o=function(){return u}.call(t,r,t,e))||(e.exports=o)}()},172:(e,t)=>{t.d=function(e){if(!e)return 0;for(var t=(e=e.toString()).length,n=e.length;n--;){var r=e.charCodeAt(n);56320<=r&&r<=57343&&n--,127{var t={utf8:{stringToBytes:function(e){return t.bin.stringToBytes(unescape(encodeURIComponent(e)))},bytesToString:function(e){return decodeURIComponent(escape(t.bin.bytesToString(e)))}},bin:{stringToBytes:function(e){for(var t=[],n=0;n{var t,n;t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n={rotl:function(e,t){return e<>>32-t},rotr:function(e,t){return e<<32-t|e>>>t},endian:function(e){if(e.constructor==Number)return 16711935&n.rotl(e,8)|4278255360&n.rotl(e,24);for(var t=0;t0;e--)t.push(Math.floor(256*Math.random()));return t},bytesToWords:function(e){for(var t=[],n=0,r=0;n>>5]|=e[n]<<24-r%32;return t},wordsToBytes:function(e){for(var t=[],n=0;n<32*e.length;n+=8)t.push(e[n>>>5]>>>24-n%32&255);return t},bytesToHex:function(e){for(var t=[],n=0;n>>4).toString(16)),t.push((15&e[n]).toString(16));return t.join("")},hexToBytes:function(e){for(var t=[],n=0;n>>6*(3-i)&63)):n.push("=");return n.join("")},base64ToBytes:function(e){e=e.replace(/[^A-Z0-9+\/]/gi,"");for(var n=[],r=0,o=0;r>>6-2*o);return n}},e.exports=n},635:(e,t,n)=>{const r=n(31),o=n(338),i=n(221);e.exports={XMLParser:o,XMLValidator:r,XMLBuilder:i}},118:e=>{e.exports=function(e){return"function"==typeof e?e:Array.isArray(e)?t=>{for(const n of e){if("string"==typeof n&&t===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}}:()=>!1}},705:(e,t)=>{const n=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",r="["+n+"]["+n+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*",o=new RegExp("^"+r+"$");t.isExist=function(e){return void 0!==e},t.isEmptyObject=function(e){return 0===Object.keys(e).length},t.merge=function(e,t,n){if(t){const r=Object.keys(t),o=r.length;for(let i=0;i{const r=n(705),o={allowBooleanAttributes:!1,unpairedTags:[]};function i(e){return" "===e||"\t"===e||"\n"===e||"\r"===e}function a(e,t){const n=t;for(;t5&&"xml"===r)return f("InvalidXml","XML declaration allowed only at the start of the document.",g(e,t));if("?"==e[t]&&">"==e[t+1]){t++;break}}return t}function s(e,t){if(e.length>t+5&&"-"===e[t+1]&&"-"===e[t+2]){for(t+=3;t"===e[t+2]){t+=2;break}}else if(e.length>t+8&&"D"===e[t+1]&&"O"===e[t+2]&&"C"===e[t+3]&&"T"===e[t+4]&&"Y"===e[t+5]&&"P"===e[t+6]&&"E"===e[t+7]){let n=1;for(t+=8;t"===e[t]&&(n--,0===n))break}else if(e.length>t+9&&"["===e[t+1]&&"C"===e[t+2]&&"D"===e[t+3]&&"A"===e[t+4]&&"T"===e[t+5]&&"A"===e[t+6]&&"["===e[t+7])for(t+=8;t"===e[t+2]){t+=2;break}return t}t.validate=function(e,t){t=Object.assign({},o,t);const n=[];let l=!1,c=!1;"\ufeff"===e[0]&&(e=e.substr(1));for(let o=0;o"!==e[o]&&" "!==e[o]&&"\t"!==e[o]&&"\n"!==e[o]&&"\r"!==e[o];o++)v+=e[o];if(v=v.trim(),"/"===v[v.length-1]&&(v=v.substring(0,v.length-1),o--),d=v,!r.isName(d)){let t;return t=0===v.trim().length?"Invalid space after '<'.":"Tag '"+v+"' is an invalid name.",f("InvalidTag",t,g(e,o))}const b=u(e,o);if(!1===b)return f("InvalidAttr","Attributes for '"+v+"' have open quote.",g(e,o));let x=b.value;if(o=b.index,"/"===x[x.length-1]){const n=o-x.length;x=x.substring(0,x.length-1);const r=p(x,t);if(!0!==r)return f(r.err.code,r.err.msg,g(e,n+r.err.line));l=!0}else if(y){if(!b.tagClosed)return f("InvalidTag","Closing tag '"+v+"' doesn't have proper closing.",g(e,o));if(x.trim().length>0)return f("InvalidTag","Closing tag '"+v+"' can't have attributes or invalid starting.",g(e,m));if(0===n.length)return f("InvalidTag","Closing tag '"+v+"' has not been opened.",g(e,m));{const t=n.pop();if(v!==t.tagName){let n=g(e,t.tagStartPos);return f("InvalidTag","Expected closing tag '"+t.tagName+"' (opened in line "+n.line+", col "+n.col+") instead of closing tag '"+v+"'.",g(e,m))}0==n.length&&(c=!0)}}else{const r=p(x,t);if(!0!==r)return f(r.err.code,r.err.msg,g(e,o-x.length+r.err.line));if(!0===c)return f("InvalidXml","Multiple possible root nodes found.",g(e,o));-1!==t.unpairedTags.indexOf(v)||n.push({tagName:v,tagStartPos:m}),l=!0}for(o++;o0)||f("InvalidXml","Invalid '"+JSON.stringify(n.map(e=>e.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1}):f("InvalidXml","Start tag expected.",1)};const l='"',c="'";function u(e,t){let n="",r="",o=!1;for(;t"===e[t]&&""===r){o=!0;break}n+=e[t]}return""===r&&{value:n,index:t,tagClosed:o}}const d=new RegExp("(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['\"])(([\\s\\S])*?)\\5)?","g");function p(e,t){const n=r.getAllMatches(e,d),o={};for(let r=0;r{const r=n(87),o=n(118),i={attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,cdataPropName:!1,format:!1,indentBy:" ",suppressEmptyNode:!1,suppressUnpairedNode:!0,suppressBooleanAttributes:!0,tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},preserveOrder:!1,commentPropName:!1,unpairedTags:[],entities:[{regex:new RegExp("&","g"),val:"&"},{regex:new RegExp(">","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function a(e){this.options=Object.assign({},i,e),!0===this.options.ignoreAttributes||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=o(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=c),this.processTextOrObjNode=s,this.options.format?(this.indentate=l,this.tagEndChar=">\n",this.newLine="\n"):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}function s(e,t,n,r){const o=this.j2x(e,n+1,r.concat(t));return void 0!==e[this.options.textNodeName]&&1===Object.keys(e).length?this.buildTextValNode(e[this.options.textNodeName],t,o.attrStr,n):this.buildObjectNode(o.val,t,o.attrStr,n)}function l(e){return this.options.indentBy.repeat(e)}function c(e){return!(!e.startsWith(this.options.attributeNamePrefix)||e===this.options.textNodeName)&&e.substr(this.attrPrefixLen)}a.prototype.build=function(e){return this.options.preserveOrder?r(e,this.options):(Array.isArray(e)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(e={[this.options.arrayNodeName]:e}),this.j2x(e,0,[]).val)},a.prototype.j2x=function(e,t,n){let r="",o="";const i=n.join(".");for(let a in e)if(Object.prototype.hasOwnProperty.call(e,a))if(void 0===e[a])this.isAttribute(a)&&(o+="");else if(null===e[a])this.isAttribute(a)?o+="":"?"===a[0]?o+=this.indentate(t)+"<"+a+"?"+this.tagEndChar:o+=this.indentate(t)+"<"+a+"/"+this.tagEndChar;else if(e[a]instanceof Date)o+=this.buildTextValNode(e[a],a,"",t);else if("object"!=typeof e[a]){const n=this.isAttribute(a);if(n&&!this.ignoreAttributesFn(n,i))r+=this.buildAttrPairStr(n,""+e[a]);else if(!n)if(a===this.options.textNodeName){let t=this.options.tagValueProcessor(a,""+e[a]);o+=this.replaceEntitiesValue(t)}else o+=this.buildTextValNode(e[a],a,"",t)}else if(Array.isArray(e[a])){const r=e[a].length;let i="",s="";for(let l=0;l"+e+o}},a.prototype.closeTag=function(e){let t="";return-1!==this.options.unpairedTags.indexOf(e)?this.options.suppressUnpairedNode||(t="/"):t=this.options.suppressEmptyNode?"/":">")+this.newLine;if(!1!==this.options.commentPropName&&t===this.options.commentPropName)return this.indentate(r)+"\x3c!--".concat(e,"--\x3e")+this.newLine;if("?"===t[0])return this.indentate(r)+"<"+t+n+"?"+this.tagEndChar;{let o=this.options.tagValueProcessor(t,e);return o=this.replaceEntitiesValue(o),""===o?this.indentate(r)+"<"+t+n+this.closeTag(t)+this.tagEndChar:this.indentate(r)+"<"+t+n+">"+o+"0&&this.options.processEntities)for(let t=0;t{function t(e,a,s,l){let c="",u=!1;for(let d=0;d"),u=!1;continue}if(h===a.commentPropName){c+=l+"\x3c!--".concat(p[h][0][a.textNodeName],"--\x3e"),u=!0;continue}if("?"===h[0]){const e=r(p[":@"],a),t="?xml"===h?"":l;let n=p[h][0][a.textNodeName];n=0!==n.length?" "+n:"",c+=t+"<".concat(h).concat(n).concat(e,"?>"),u=!0;continue}let m=l;""!==m&&(m+=a.indentBy);const g=l+"<".concat(h).concat(r(p[":@"],a)),y=t(p[h],a,f,m);-1!==a.unpairedTags.indexOf(h)?a.suppressUnpairedNode?c+=g+">":c+=g+"/>":y&&0!==y.length||!a.suppressEmptyNode?y&&y.endsWith(">")?c+=g+">".concat(y).concat(l,""):(c+=g+">",y&&""!==l&&(y.includes("/>")||y.includes("")):c+=g+"/>",u=!0}return c}function n(e){const t=Object.keys(e);for(let n=0;n0&&t.processEntities)for(let n=0;n0&&(r="\n"),t(e,n,"",r)}},193:(e,t,n)=>{const r=n(705);function o(e,t){let n="";for(;t"===e[t]){if(p?"-"===e[t-1]&&"-"===e[t-2]&&(p=!1,r--):r--,0===r)break}else"["===e[t]?d=!0:h+=e[t];else{if(d&&a(e,t)){let r,i;t+=7,[r,i,t]=o(e,t+1),-1===i.indexOf("&")&&(n[u(r)]={regx:RegExp("&".concat(r,";"),"g"),val:i})}else if(d&&s(e,t))t+=8;else if(d&&l(e,t))t+=8;else if(d&&c(e,t))t+=9;else{if(!i)throw new Error("Invalid DOCTYPE");p=!0}r++,h=""}if(0!==r)throw new Error("Unclosed DOCTYPE")}return{entities:n,i:t}}},63:(e,t)=>{const n={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0},tagValueProcessor:function(e,t){return t},attributeValueProcessor:function(e,t){return t},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(e,t,n){return e}};t.buildOptions=function(e){return Object.assign({},n,e)},t.defaultOptions=n},299:(e,t,n)=>{const r=n(705),o=n(365),i=n(193),a=n(494),s=n(118);function l(e){const t=Object.keys(e);for(let n=0;n0)){a||(e=this.replaceEntitiesValue(e));const r=this.options.tagValueProcessor(t,e,n,o,i);return null==r?e:typeof r!=typeof e||r!==e?r:this.options.trimValues||e.trim()===e?k(e,this.options.parseTagValue,this.options.numberParseOptions):e}}function u(e){if(this.options.removeNSPrefix){const t=e.split(":"),n="/"===e.charAt(0)?"/":"";if("xmlns"===t[0])return"";2===t.length&&(e=n+t[1])}return e}const d=new RegExp("([^\\s=]+)\\s*(=\\s*(['\"])([\\s\\S]*?)\\3)?","gm");function p(e,t,n){if(!0!==this.options.ignoreAttributes&&"string"==typeof e){const n=r.getAllMatches(e,d),o=n.length,i={};for(let e=0;e",s,"Closing Tag is not closed.");let o=e.substring(s+2,t).trim();if(this.options.removeNSPrefix){const e=o.indexOf(":");-1!==e&&(o=o.substr(e+1))}this.options.transformTagName&&(o=this.options.transformTagName(o)),n&&(r=this.saveTextToParentTag(r,n,a));const i=a.substring(a.lastIndexOf(".")+1);if(o&&-1!==this.options.unpairedTags.indexOf(o))throw new Error("Unpaired tag can not be used as closing tag: "));let l=0;i&&-1!==this.options.unpairedTags.indexOf(i)?(l=a.lastIndexOf(".",a.lastIndexOf(".")-1),this.tagsNodeStack.pop()):l=a.lastIndexOf("."),a=a.substring(0,l),n=this.tagsNodeStack.pop(),r="",s=t}else if("?"===e[s+1]){let t=b(e,s,!1,"?>");if(!t)throw new Error("Pi Tag is not closed.");if(r=this.saveTextToParentTag(r,n,a),this.options.ignoreDeclaration&&"?xml"===t.tagName||this.options.ignorePiTags);else{const e=new o(t.tagName);e.add(this.options.textNodeName,""),t.tagName!==t.tagExp&&t.attrExpPresent&&(e[":@"]=this.buildAttributesMap(t.tagExp,a,t.tagName)),this.addChild(n,e,a)}s=t.closeIndex+1}else if("!--"===e.substr(s+1,3)){const t=v(e,"--\x3e",s+4,"Comment is not closed.");if(this.options.commentPropName){const o=e.substring(s+4,t-2);r=this.saveTextToParentTag(r,n,a),n.add(this.options.commentPropName,[{[this.options.textNodeName]:o}])}s=t}else if("!D"===e.substr(s+1,2)){const t=i(e,s);this.docTypeEntities=t.entities,s=t.i}else if("!["===e.substr(s+1,2)){const t=v(e,"]]>",s,"CDATA is not closed.")-2,o=e.substring(s+9,t);r=this.saveTextToParentTag(r,n,a);let i=this.parseTextData(o,n.tagname,a,!0,!1,!0,!0);null==i&&(i=""),this.options.cdataPropName?n.add(this.options.cdataPropName,[{[this.options.textNodeName]:o}]):n.add(this.options.textNodeName,i),s=t+2}else{let i=b(e,s,this.options.removeNSPrefix),l=i.tagName;const c=i.rawTagName;let u=i.tagExp,d=i.attrExpPresent,p=i.closeIndex;this.options.transformTagName&&(l=this.options.transformTagName(l)),n&&r&&"!xml"!==n.tagname&&(r=this.saveTextToParentTag(r,n,a,!1));const h=n;if(h&&-1!==this.options.unpairedTags.indexOf(h.tagname)&&(n=this.tagsNodeStack.pop(),a=a.substring(0,a.lastIndexOf("."))),l!==t.tagname&&(a+=a?"."+l:l),this.isItStopNode(this.options.stopNodes,a,l)){let t="";if(u.length>0&&u.lastIndexOf("/")===u.length-1)"/"===l[l.length-1]?(l=l.substr(0,l.length-1),a=a.substr(0,a.length-1),u=l):u=u.substr(0,u.length-1),s=i.closeIndex;else if(-1!==this.options.unpairedTags.indexOf(l))s=i.closeIndex;else{const n=this.readStopNodeData(e,c,p+1);if(!n)throw new Error("Unexpected end of ".concat(c));s=n.i,t=n.tagContent}const r=new o(l);l!==u&&d&&(r[":@"]=this.buildAttributesMap(u,a,l)),t&&(t=this.parseTextData(t,l,a,!0,d,!0,!0)),a=a.substr(0,a.lastIndexOf(".")),r.add(this.options.textNodeName,t),this.addChild(n,r,a)}else{if(u.length>0&&u.lastIndexOf("/")===u.length-1){"/"===l[l.length-1]?(l=l.substr(0,l.length-1),a=a.substr(0,a.length-1),u=l):u=u.substr(0,u.length-1),this.options.transformTagName&&(l=this.options.transformTagName(l));const e=new o(l);l!==u&&d&&(e[":@"]=this.buildAttributesMap(u,a,l)),this.addChild(n,e,a),a=a.substr(0,a.lastIndexOf("."))}else{const e=new o(l);this.tagsNodeStack.push(n),l!==u&&d&&(e[":@"]=this.buildAttributesMap(u,a,l)),this.addChild(n,e,a),n=e}r="",s=p}}else r+=e[s];return t.child};function f(e,t,n){const r=this.options.updateTag(t.tagname,n,t[":@"]);!1===r||("string"==typeof r?(t.tagname=r,e.addChild(t)):e.addChild(t))}const m=function(e){if(this.options.processEntities){for(let t in this.docTypeEntities){const n=this.docTypeEntities[t];e=e.replace(n.regx,n.val)}for(let t in this.lastEntities){const n=this.lastEntities[t];e=e.replace(n.regex,n.val)}if(this.options.htmlEntities)for(let t in this.htmlEntities){const n=this.htmlEntities[t];e=e.replace(n.regex,n.val)}e=e.replace(this.ampEntity.regex,this.ampEntity.val)}return e};function g(e,t,n,r){return e&&(void 0===r&&(r=0===Object.keys(t.child).length),void 0!==(e=this.parseTextData(e,t.tagname,n,!1,!!t[":@"]&&0!==Object.keys(t[":@"]).length,r))&&""!==e&&t.add(this.options.textNodeName,e),e=""),e}function y(e,t,n){const r="*."+n;for(const o in e){const n=e[o];if(r===n||t===n)return!0}return!1}function v(e,t,n,r){const o=e.indexOf(t,n);if(-1===o)throw new Error(r);return o+t.length-1}function b(e,t,n){const r=function(e,t){let n,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:">",o="";for(let i=t;i3&&void 0!==arguments[3]?arguments[3]:">");if(!r)return;let o=r.data;const i=r.index,a=o.search(/\s/);let s=o,l=!0;-1!==a&&(s=o.substring(0,a),o=o.substring(a+1).trimStart());const c=s;if(n){const e=s.indexOf(":");-1!==e&&(s=s.substr(e+1),l=s!==r.data.substr(e+1))}return{tagName:s,tagExp:o,closeIndex:i,attrExpPresent:l,rawTagName:c}}function x(e,t,n){const r=n;let o=1;for(;n",n,"".concat(t," is not closed"));if(e.substring(n+2,i).trim()===t&&(o--,0===o))return{tagContent:e.substring(r,n),i:i};n=i}else if("?"===e[n+1])n=v(e,"?>",n+1,"StopNode is not closed.");else if("!--"===e.substr(n+1,3))n=v(e,"--\x3e",n+3,"StopNode is not closed.");else if("!["===e.substr(n+1,2))n=v(e,"]]>",n,"StopNode is not closed.")-2;else{const r=b(e,n,">");r&&((r&&r.tagName)===t&&"/"!==r.tagExp[r.tagExp.length-1]&&o++,n=r.closeIndex)}}function k(e,t,n){if(t&&"string"==typeof e){const t=e.trim();return"true"===t||"false"!==t&&a(e,n)}return r.isExist(e)?e:""}e.exports=class{constructor(e){this.options=e,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\xa2"},pound:{regex:/&(pound|#163);/g,val:"\xa3"},yen:{regex:/&(yen|#165);/g,val:"\xa5"},euro:{regex:/&(euro|#8364);/g,val:"\u20ac"},copyright:{regex:/&(copy|#169);/g,val:"\xa9"},reg:{regex:/&(reg|#174);/g,val:"\xae"},inr:{regex:/&(inr|#8377);/g,val:"\u20b9"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(e,t)=>String.fromCharCode(Number.parseInt(t,16))}},this.addExternalEntities=l,this.parseXml=h,this.parseTextData=c,this.resolveNameSpace=u,this.buildAttributesMap=p,this.isItStopNode=y,this.replaceEntitiesValue=m,this.readStopNodeData=x,this.saveTextToParentTag=g,this.addChild=f,this.ignoreAttributesFn=s(this.options.ignoreAttributes)}}},338:(e,t,n)=>{const{buildOptions:r}=n(63),o=n(299),{prettify:i}=n(728),a=n(31);e.exports=class{constructor(e){this.externalEntities={},this.options=r(e)}parse(e,t){if("string"==typeof e);else{if(!e.toString)throw new Error("XML data is accepted in String or Bytes[] form.");e=e.toString()}if(t){!0===t&&(t={});const n=a.validate(e,t);if(!0!==n)throw Error("".concat(n.err.msg,":").concat(n.err.line,":").concat(n.err.col))}const n=new o(this.options);n.addExternalEntities(this.externalEntities);const r=n.parseXml(e);return this.options.preserveOrder||void 0===r?r:i(r,this.options)}addEntity(e,t){if(-1!==t.indexOf("&"))throw new Error("Entity value can't have '&'");if(-1!==e.indexOf("&")||-1!==e.indexOf(";"))throw new Error("An entity must be set without '&' and ';'. Eg. use '#xD' for ' '");if("&"===t)throw new Error("An entity with value '&' is not permitted");this.externalEntities[e]=t}}},728:(e,t)=>{function n(e,t,a){let s;const l={};for(let c=0;c0&&(l[t.textNodeName]=s):void 0!==s&&(l[t.textNodeName]=s),l}function r(e){const t=Object.keys(e);for(let n=0;n{e.exports=class{constructor(e){this.tagname=e,this.child=[],this[":@"]={}}add(e,t){"__proto__"===e&&(e="#__proto__"),this.child.push({[e]:t})}addChild(e){"__proto__"===e.tagname&&(e.tagname="#__proto__"),e[":@"]&&Object.keys(e[":@"]).length>0?this.child.push({[e.tagname]:e.child,":@":e[":@"]}):this.child.push({[e.tagname]:e.child})}}},135:e=>{function t(e){return!!e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}e.exports=function(e){return null!=e&&(t(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&t(e.slice(0,0))}(e)||!!e._isBuffer)}},542:(e,t,n)=>{!function(){var t=n(298),r=n(526).utf8,o=n(135),i=n(526).bin,a=function(e,n){e.constructor==String?e=n&&"binary"===n.encoding?i.stringToBytes(e):r.stringToBytes(e):o(e)?e=Array.prototype.slice.call(e,0):Array.isArray(e)||e.constructor===Uint8Array||(e=e.toString());for(var s=t.bytesToWords(e),l=8*e.length,c=1732584193,u=-271733879,d=-1732584194,p=271733878,h=0;h>>24)|4278255360&(s[h]<<24|s[h]>>>8);s[l>>>5]|=128<>>9<<4)]=l;var f=a._ff,m=a._gg,g=a._hh,y=a._ii;for(h=0;h>>0,u=u+b>>>0,d=d+x>>>0,p=p+k>>>0}return t.endian([c,u,d,p])};a._ff=function(e,t,n,r,o,i,a){var s=e+(t&n|~t&r)+(o>>>0)+a;return(s<>>32-i)+t},a._gg=function(e,t,n,r,o,i,a){var s=e+(t&r|n&~r)+(o>>>0)+a;return(s<>>32-i)+t},a._hh=function(e,t,n,r,o,i,a){var s=e+(t^n^r)+(o>>>0)+a;return(s<>>32-i)+t},a._ii=function(e,t,n,r,o,i,a){var s=e+(n^(t|~r))+(o>>>0)+a;return(s<>>32-i)+t},a._blocksize=16,a._digestsize=16,e.exports=function(e,n){if(null==e)throw new Error("Illegal argument "+e);var r=t.wordsToBytes(a(e,n));return n&&n.asBytes?r:n&&n.asString?i.bytesToString(r):t.bytesToHex(r)}}()},285:(e,t,n)=>{var r=n(2);e.exports=function(e){return e?("{}"===e.substr(0,2)&&(e="\\{\\}"+e.substr(2)),g(function(e){return e.split("\\\\").join(o).split("\\{").join(i).split("\\}").join(a).split("\\,").join(s).split("\\.").join(l)}(e),!0).map(u)):[]};var o="\0SLASH"+Math.random()+"\0",i="\0OPEN"+Math.random()+"\0",a="\0CLOSE"+Math.random()+"\0",s="\0COMMA"+Math.random()+"\0",l="\0PERIOD"+Math.random()+"\0";function c(e){return parseInt(e,10)==e?parseInt(e,10):e.charCodeAt(0)}function u(e){return e.split(o).join("\\").split(i).join("{").split(a).join("}").split(s).join(",").split(l).join(".")}function d(e){if(!e)return[""];var t=[],n=r("{","}",e);if(!n)return e.split(",");var o=n.pre,i=n.body,a=n.post,s=o.split(",");s[s.length-1]+="{"+i+"}";var l=d(a);return a.length&&(s[s.length-1]+=l.shift(),s.push.apply(s,l)),t.push.apply(t,s),t}function p(e){return"{"+e+"}"}function h(e){return/^-?0\d/.test(e)}function f(e,t){return e<=t}function m(e,t){return e>=t}function g(e,t){var n=[],o=r("{","}",e);if(!o)return[e];var i=o.pre,s=o.post.length?g(o.post,!1):[""];if(/\$$/.test(o.pre))for(var l=0;l=0;if(!k&&!A)return o.post.match(/,.*\}/)?g(e=o.pre+"{"+o.body+a+o.post):[e];if(k)y=o.body.split(/\.\./);else if(1===(y=d(o.body)).length&&1===(y=g(y[0],!1).map(p)).length)return s.map(function(e){return o.pre+y[0]+e});if(k){var S=c(y[0]),_=c(y[1]),w=Math.max(y[0].length,y[1].length),T=3==y.length?Math.abs(c(y[2])):1,E=f;_0){var P=new Array(z+1).join("0");L=I<0?"-"+P+L.slice(1):P+L}}v.push(L)}}else{v=[];for(var N=0;N{function t(e){return t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},t(e)}function n(e){var t="function"==typeof Map?new Map:void 0;return n=function(e){if(null===e||(n=e,-1===Function.toString.call(n).indexOf("[native code]")))return e;var n;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,a)}function a(){return r(e,arguments,i(this).constructor)}return a.prototype=Object.create(e.prototype,{constructor:{value:a,enumerable:!1,writable:!0,configurable:!0}}),o(a,e)},n(e)}function r(e,t,n){return r=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Date.prototype.toString.call(Reflect.construct(Date,[],function(){})),!0}catch(e){return!1}}()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var i=new(Function.bind.apply(e,r));return n&&o(i,n.prototype),i},r.apply(null,arguments)}function o(e,t){return o=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e},o(e,t)}function i(e){return i=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)},i(e)}var a=function(e){function n(e){var r;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),(r=function(e,n){return!n||"object"!==t(n)&&"function"!=typeof n?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):n}(this,i(n).call(this,e))).name="ObjectPrototypeMutationError",r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&o(e,t)}(n,e),n}(n(Error));function s(e,n){for(var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:function(){},o=n.split("."),i=o.length,a=function(t){var n=o[t];if(!e)return{v:void 0};if("+"===n){if(Array.isArray(e))return{v:e.map(function(n,i){var a=o.slice(t+1);return a.length>0?s(n,a.join("."),r):r(e,i,o,t)})};var i=o.slice(0,t).join(".");throw new Error("Object at wildcard (".concat(i,") is not an array"))}e=r(e,n,o,t)},l=0;l2&&void 0!==arguments[2]?arguments[2]:{};if("object"!=t(e)||null===e)return!1;if(void 0===n)return!1;if("number"==typeof n)return n in e;try{var o=!1;return s(e,n,function(e,t,n,i){if(!l(n,i))return e&&e[t];o=r.own?e.hasOwnProperty(t):t in e}),o}catch(e){return!1}},hasOwn:function(e,t,n){return this.has(e,t,n||{own:!0})},isIn:function(e,n,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};if("object"!=t(e)||null===e)return!1;if(void 0===n)return!1;try{var i=!1,a=!1;return s(e,n,function(e,n,o,s){return i=i||e===r||!!e&&e[n]===r,a=l(o,s)&&"object"===t(e)&&n in e,e&&e[n]}),o.validPath?i&&a:i}catch(e){return!1}},ObjectPrototypeMutationError:a}},47:(e,t,n)=>{var r=n(410),o=function(e){return"string"==typeof e};function i(e,t){for(var n=[],r=0;r=-1&&!t;n--){var r=n>=0?arguments[n]:process.cwd();if(!o(r))throw new TypeError("Arguments to path.resolve must be strings");r&&(e=r+"/"+e,t="/"===r.charAt(0))}return(t?"/":"")+(e=i(e.split("/"),!t).join("/"))||"."},s.normalize=function(e){var t=s.isAbsolute(e),n="/"===e.substr(-1);return(e=i(e.split("/"),!t).join("/"))||t||(e="."),e&&n&&(e+="/"),(t?"/":"")+e},s.isAbsolute=function(e){return"/"===e.charAt(0)},s.join=function(){for(var e="",t=0;t=0&&""===e[n];n--);return t>n?[]:e.slice(t,n+1)}e=s.resolve(e).substr(1),t=s.resolve(t).substr(1);for(var r=n(e.split("/")),o=n(t.split("/")),i=Math.min(r.length,o.length),a=i,l=0;l{var n=Object.prototype.hasOwnProperty;function r(e){try{return decodeURIComponent(e.replace(/\+/g," "))}catch(e){return null}}function o(e){try{return encodeURIComponent(e)}catch(e){return null}}t.stringify=function(e,t){t=t||"";var r,i,a=[];for(i in"string"!=typeof t&&(t="?"),e)if(n.call(e,i)){if((r=e[i])||null!=r&&!isNaN(r)||(r=""),i=o(i),r=o(r),null===i||null===r)continue;a.push(i+"="+r)}return a.length?t+a.join("&"):""},t.parse=function(e){for(var t,n=/([^=?#&]+)=?([^&]*)/g,o={};t=n.exec(e);){var i=r(t[1]),a=r(t[2]);null===i||null===a||i in o||(o[i]=a)}return o}},670:e=>{e.exports=function(e,t){if(t=t.split(":")[0],!(e=+e))return!1;switch(t){case"http":case"ws":return 80!==e;case"https":case"wss":return 443!==e;case"ftp":return 21!==e;case"gopher":return 70!==e;case"file":return!1}return 0!==e}},494:e=>{const t=/^[-+]?0x[a-fA-F0-9]+$/,n=/^([\-\+])?(0*)(\.[0-9]+([eE]\-?[0-9]+)?|[0-9]+(\.[0-9]+([eE]\-?[0-9]+)?)?)$/;!Number.parseInt&&window.parseInt&&(Number.parseInt=window.parseInt),!Number.parseFloat&&window.parseFloat&&(Number.parseFloat=window.parseFloat);const r={hex:!0,leadingZeros:!0,decimalPoint:".",eNotation:!0};e.exports=function(e){let o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(o=Object.assign({},r,o),!e||"string"!=typeof e)return e;let i=e.trim();if(void 0!==o.skipLike&&o.skipLike.test(i))return e;if(o.hex&&t.test(i))return Number.parseInt(i,16);{const t=n.exec(i);if(t){const n=t[1],r=t[2];let s=(a=t[3])&&-1!==a.indexOf(".")?("."===(a=a.replace(/0+$/,""))?a="0":"."===a[0]?a="0"+a:"."===a[a.length-1]&&(a=a.substr(0,a.length-1)),a):a;const l=t[4]||t[6];if(!o.leadingZeros&&r.length>0&&n&&"."!==i[2])return e;if(!o.leadingZeros&&r.length>0&&!n&&"."!==i[1])return e;{const t=Number(i),a=""+t;return-1!==a.search(/[eE]/)||l?o.eNotation?t:e:-1!==i.indexOf(".")?"0"===a&&""===s||a===s||n&&a==="-"+s?t:e:r?s===a||n+s===a?t:e:i===a||i===n+a?t:e}}return e}var a}},737:(e,t,r)=>{var o=r(670),i=r(647),a=/^[\x00-\x20\u00a0\u1680\u2000-\u200a\u2028\u2029\u202f\u205f\u3000\ufeff]+/,s=/[\n\r\t]/g,l=/^[A-Za-z][A-Za-z0-9+-.]*:\/\//,c=/:\d+$/,u=/^([a-z][a-z0-9.+-]*:)?(\/\/)?([\\/]+)?([\S\s]*)/i,d=/^[a-zA-Z]:/;function p(e){return(e||"").toString().replace(a,"")}var h=[["#","hash"],["?","query"],function(e,t){return g(t.protocol)?e.replace(/\\/g,"/"):e},["/","pathname"],["@","auth",1],[NaN,"host",void 0,1,1],[/:(\d*)$/,"port",void 0,1],[NaN,"hostname",void 0,1,1]],f={hash:1,query:1};function m(e){var t,r=("undefined"!=typeof window?window:"undefined"!=typeof n.g?n.g:"undefined"!=typeof self?self:{}).location||{},o={},i=typeof(e=e||r);if("blob:"===e.protocol)o=new v(unescape(e.pathname),{});else if("string"===i)for(t in o=new v(e,{}),f)delete o[t];else if("object"===i){for(t in e)t in f||(o[t]=e[t]);void 0===o.slashes&&(o.slashes=l.test(e.href))}return o}function g(e){return"file:"===e||"ftp:"===e||"http:"===e||"https:"===e||"ws:"===e||"wss:"===e}function y(e,t){e=(e=p(e)).replace(s,""),t=t||{};var n,r=u.exec(e),o=r[1]?r[1].toLowerCase():"",i=!!r[2],a=!!r[3],l=0;return i?a?(n=r[2]+r[3]+r[4],l=r[2].length+r[3].length):(n=r[2]+r[4],l=r[2].length):a?(n=r[3]+r[4],l=r[3].length):n=r[4],"file:"===o?l>=2&&(n=n.slice(2)):g(o)?n=r[4]:o?i&&(n=n.slice(2)):l>=2&&g(t.protocol)&&(n=r[4]),{protocol:o,slashes:i||g(o),slashesCount:l,rest:n}}function v(e,t,n){if(e=(e=p(e)).replace(s,""),!(this instanceof v))return new v(e,t,n);var r,a,l,c,u,f,b=h.slice(),x=typeof t,k=this,A=0;for("object"!==x&&"string"!==x&&(n=t,t=null),n&&"function"!=typeof n&&(n=i.parse),r=!(a=y(e||"",t=m(t))).protocol&&!a.slashes,k.slashes=a.slashes||r&&t.slashes,k.protocol=a.protocol||t.protocol||"",e=a.rest,("file:"===a.protocol&&(2!==a.slashesCount||d.test(e))||!a.slashes&&(a.protocol||a.slashesCount<2||!g(k.protocol)))&&(b[3]=[/(.*)/,"pathname"]);A{},388:()=>{},805:()=>{},345:()=>{},800:()=>{}},Lc={};function zc(e){var t=Lc[e];if(void 0!==t)return t.exports;var n=Lc[e]={id:e,loaded:!1,exports:{}};return Ic[e].call(n.exports,n,n.exports,zc),n.loaded=!0,n.exports}zc.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return zc.d(t,{a:t}),t},zc.d=(e,t)=>{for(var n in t)zc.o(t,n)&&!zc.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},zc.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),zc.nmd=e=>(e.paths=[],e.children||(e.children=[]),e);var Pc={};zc.d(Pc,{hT:()=>iu,O4:()=>au,Kd:()=>ru,YK:()=>ou,UU:()=>Gp,Gu:()=>hu,ky:()=>$d,h4:()=>qd,ch:()=>Kd,hq:()=>Dd,i5:()=>Yd});var Nc=zc(737),Rc=zc.n(Nc);function jc(e){if(!Oc(e))throw new Error("Parameter was not an error")}function Oc(e){return!!e&&"object"==typeof e&&"[object Error]"===(t=e,Object.prototype.toString.call(t))||e instanceof Error;var t}class Mc extends Error{constructor(e,t){const n=[...arguments],{options:r,shortMessage:o}=function(e){let t,n="";if(0===e.length)t={};else if(Oc(e[0]))t={cause:e[0]},n=e.slice(1).join(" ")||"";else if(e[0]&&"object"==typeof e[0])t=Object.assign({},e[0]),n=e.slice(1).join(" ")||"";else{if("string"!=typeof e[0])throw new Error("Invalid arguments passed to Layerr");t={},n=n=e.join(" ")||""}return{options:t,shortMessage:n}}(n);let i=o;if(r.cause&&(i="".concat(i,": ").concat(r.cause.message)),super(i),this.message=i,r.name&&"string"==typeof r.name?this.name=r.name:this.name="Layerr",r.cause&&Object.defineProperty(this,"_cause",{value:r.cause}),Object.defineProperty(this,"_info",{value:{}}),r.info&&"object"==typeof r.info&&Object.assign(this._info,r.info),Error.captureStackTrace){const e=r.constructorOpt||this.constructor;Error.captureStackTrace(this,e)}}static cause(e){return jc(e),e._cause&&Oc(e._cause)?e._cause:null}static fullStack(e){var t;jc(e);const n=Mc.cause(e);return n?"".concat(e.stack,"\ncaused by: ").concat(Mc.fullStack(n)):null!==(t=e.stack)&&void 0!==t?t:""}static info(e){jc(e);const t={},n=Mc.cause(e);return n&&Object.assign(t,Mc.info(n)),e._info&&Object.assign(t,e._info),t}toString(){let e=this.name||this.constructor.name||this.constructor.prototype.name;return this.message&&(e="".concat(e,": ").concat(this.message)),e}}var Dc=zc(47),Fc=zc.n(Dc);const Bc="__PATH_SEPARATOR_POSIX__",Wc="__PATH_SEPARATOR_WINDOWS__";function Uc(e){try{const t=e.replace(/\//g,Bc).replace(/\\\\/g,Wc);return encodeURIComponent(t).split(Wc).join("\\\\").split(Bc).join("/")}catch(e){throw new Mc(e,"Failed encoding path")}}function Vc(e){return e.startsWith("/")?e:"/"+e}function Hc(e){let t=e;return"/"!==t[0]&&(t="/"+t),/^.+\/$/.test(t)&&(t=t.substr(0,t.length-1)),t}function Gc(e){let t=new(Rc())(e).pathname;return t.length<=0&&(t="/"),Hc(t)}function qc(){for(var e=arguments.length,t=new Array(e),n=0;n1){var n=e.shift();e[0]=n+e[0]}e[0].match(/^file:\/\/\//)?e[0]=e[0].replace(/^([^/:]+):\/*/,"$1:///"):e[0]=e[0].replace(/^([^/:]+):\/*/,"$1://");for(var r=0;r0&&(o=o.replace(/^[\/]+/,"")),o=r0?"?":"")+a.join("&")}("object"==typeof arguments[0]?arguments[0]:[].slice.call(arguments))}(t.reduce((e,t,n)=>((0===n||"/"!==t||"/"===t&&"/"!==e[e.length-1])&&e.push(t),e),[]))}var Kc=zc(542),$c=zc.n(Kc);function Yc(e,t){const n=e.url.replace("//",""),r=-1==n.indexOf("/")?"/":n.slice(n.indexOf("/")),o=e.method?e.method.toUpperCase():"GET",i=!!/(^|,)\s*auth\s*($|,)/.test(t.qop)&&"auth",a="00000000".concat(t.nc).slice(-8),s=function(e,t,n,r,o,i,a){const s=a||$c()("".concat(t,":").concat(n,":").concat(r));return e&&"md5-sess"===e.toLowerCase()?$c()("".concat(s,":").concat(o,":").concat(i)):s}(t.algorithm,t.username,t.realm,t.password,t.nonce,t.cnonce,t.ha1),l=$c()("".concat(o,":").concat(r)),c=i?$c()("".concat(s,":").concat(t.nonce,":").concat(a,":").concat(t.cnonce,":").concat(i,":").concat(l)):$c()("".concat(s,":").concat(t.nonce,":").concat(l)),u={username:t.username,realm:t.realm,nonce:t.nonce,uri:r,qop:i,response:c,nc:a,cnonce:t.cnonce,algorithm:t.algorithm,opaque:t.opaque},d=[];for(const p in u)u[p]&&("qop"===p||"nc"===p||"algorithm"===p?d.push("".concat(p,"=").concat(u[p])):d.push("".concat(p,'="').concat(u[p],'"')));return"Digest ".concat(d.join(", "))}function Xc(e){return"digest"===(e.headers&&e.headers.get("www-authenticate")||"").split(/\s/)[0].toLowerCase()}var Jc=zc(101),Qc=zc.n(Jc);function Zc(e){return Qc().decode(e)}function eu(e,t){var n;return"Basic ".concat((n="".concat(e,":").concat(t),Qc().encode(n)))}const tu="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:"undefined"!=typeof window?window:globalThis,nu=tu.fetch.bind(tu),ru=(tu.Headers,tu.Request),ou=tu.Response;let iu=function(e){return e.Auto="auto",e.Digest="digest",e.None="none",e.Password="password",e.Token="token",e}({}),au=function(e){return e.DataTypeNoLength="data-type-no-length",e.InvalidAuthType="invalid-auth-type",e.InvalidOutputFormat="invalid-output-format",e.LinkUnsupportedAuthType="link-unsupported-auth",e.InvalidUpdateRange="invalid-update-range",e.NotSupported="not-supported",e}({});function su(e,t,n,r,o){switch(e.authType){case iu.Auto:t&&n&&(e.headers.Authorization=eu(t,n));break;case iu.Digest:e.digest=function(e,t,n){return{username:e,password:t,ha1:n,nc:0,algorithm:"md5",hasDigestAuth:!1}}(t,n,o);break;case iu.None:break;case iu.Password:e.headers.Authorization=eu(t,n);break;case iu.Token:e.headers.Authorization="".concat((i=r).token_type," ").concat(i.access_token);break;default:throw new Mc({info:{code:au.InvalidAuthType}},"Invalid auth type: ".concat(e.authType))}var i}zc(345),zc(800);const lu="@@HOTPATCHER",cu=()=>{};function uu(e){return{original:e,methods:[e],final:!1}}class du{constructor(){this._configuration={registry:{},getEmptyAction:"null"},this.__type__=lu}get configuration(){return this._configuration}get getEmptyAction(){return this.configuration.getEmptyAction}set getEmptyAction(e){this.configuration.getEmptyAction=e}control(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!e||e.__type__!==lu)throw new Error("Failed taking control of target HotPatcher instance: Invalid type or object");return Object.keys(e.configuration.registry).forEach(n=>{this.configuration.registry.hasOwnProperty(n)?t&&(this.configuration.registry[n]=Object.assign({},e.configuration.registry[n])):this.configuration.registry[n]=Object.assign({},e.configuration.registry[n])}),e._configuration=this.configuration,this}execute(e){const t=this.get(e)||cu;for(var n=arguments.length,r=new Array(n>1?n-1:0),o=1;o0;)o=[t.shift().apply(i,o)];return o[0]}}(...t.methods)}isPatched(e){return!!this.configuration.registry[e]}patch(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{chain:r=!1}=n;if(this.configuration.registry[e]&&this.configuration.registry[e].final)throw new Error("Failed patching '".concat(e,"': Method marked as being final"));if("function"!=typeof t)throw new Error("Failed patching '".concat(e,"': Provided method is not a function"));if(r)this.configuration.registry[e]?this.configuration.registry[e].methods.push(t):this.configuration.registry[e]=uu(t);else if(this.isPatched(e)){const{original:n}=this.configuration.registry[e];this.configuration.registry[e]=Object.assign(uu(t),{original:n})}else this.configuration.registry[e]=uu(t);return this}patchInline(e,t){this.isPatched(e)||this.patch(e,t);for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o1?t-1:0),r=1;r{this.patch(e,t,{chain:!0})}),this}restore(e){if(!this.isPatched(e))throw new Error("Failed restoring method: No method present for key: ".concat(e));if("function"!=typeof this.configuration.registry[e].original)throw new Error("Failed restoring method: Original method not found or of invalid type for key: ".concat(e));return this.configuration.registry[e].methods=[this.configuration.registry[e].original],this}setFinal(e){if(!this.configuration.registry.hasOwnProperty(e))throw new Error("Failed marking '".concat(e,"' as final: No method found for key"));return this.configuration.registry[e].final=!0,this}}let pu=null;function hu(){return pu||(pu=new du),pu}function fu(e){return function(e){if("object"!=typeof e||null===e||"[object Object]"!=Object.prototype.toString.call(e))return!1;if(null===Object.getPrototypeOf(e))return!0;let t=e;for(;null!==Object.getPrototypeOf(t);)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}(e)?Object.assign({},e):Object.setPrototypeOf(Object.assign({},e),Object.getPrototypeOf(e))}function mu(){for(var e=arguments.length,t=new Array(e),n=0;n0;){const e=o.shift();r=r?gu(r,e):fu(e)}return r}function gu(e,t){const n=fu(e);return Object.keys(t).forEach(e=>{n.hasOwnProperty(e)?Array.isArray(t[e])?n[e]=Array.isArray(n[e])?[...n[e],...t[e]]:[...t[e]]:"object"==typeof t[e]&&t[e]?n[e]="object"==typeof n[e]&&n[e]?gu(n[e],t[e]):fu(t[e]):n[e]=t[e]:n[e]=t[e]}),n}function yu(e){const t={};for(const n of e.keys())t[n]=e.get(n);return t}function vu(){for(var e=arguments.length,t=new Array(e),n=0;n(Object.keys(t).forEach(n=>{const o=n.toLowerCase();r.hasOwnProperty(o)?e[r[o]]=t[n]:(r[o]=n,e[n]=t[n])}),e),{})}zc(805);const bu="function"==typeof ArrayBuffer,{toString:xu}=Object.prototype;function ku(e){return bu&&(e instanceof ArrayBuffer||"[object ArrayBuffer]"===xu.call(e))}function Au(e){return null!=e&&null!=e.constructor&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)}function Su(e){return function(){for(var t=[],n=0;nt.patchInline("fetch",nu,e.url,function(e){let t={};const n={method:e.method};if(e.headers&&(t=vu(t,e.headers)),void 0!==e.data){const[r,o]=function(e){if("string"==typeof e)return[e,{}];if(Au(e))return[e,{}];if(ku(e))return[e,{}];if(e&&"object"==typeof e)return[JSON.stringify(e),{"content-type":"application/json"}];throw new Error("Unable to convert request body: Unexpected body type: "+typeof e)}(e.data);n.body=r,t=vu(t,o)}return e.signal&&(n.signal=e.signal),e.withCredentials&&(n.credentials="include"),n.headers=t,n}(e)),e)}var Lu=zc(285);const zu=e=>{if("string"!=typeof e)throw new TypeError("invalid pattern");if(e.length>65536)throw new TypeError("pattern is too long")},Pu={"[:alnum:]":["\\p{L}\\p{Nl}\\p{Nd}",!0],"[:alpha:]":["\\p{L}\\p{Nl}",!0],"[:ascii:]":["\\x00-\\x7f",!1],"[:blank:]":["\\p{Zs}\\t",!0],"[:cntrl:]":["\\p{Cc}",!0],"[:digit:]":["\\p{Nd}",!0],"[:graph:]":["\\p{Z}\\p{C}",!0,!0],"[:lower:]":["\\p{Ll}",!0],"[:print:]":["\\p{C}",!0],"[:punct:]":["\\p{P}",!0],"[:space:]":["\\p{Z}\\t\\r\\n\\v\\f",!0],"[:upper:]":["\\p{Lu}",!0],"[:word:]":["\\p{L}\\p{Nl}\\p{Nd}\\p{Pc}",!0],"[:xdigit:]":["A-Fa-f0-9",!1]},Nu=e=>e.replace(/[[\]\\-]/g,"\\$&"),Ru=e=>e.join(""),ju=(e,t)=>{const n=t;if("["!==e.charAt(n))throw new Error("not in a brace expression");const r=[],o=[];let i=n+1,a=!1,s=!1,l=!1,c=!1,u=n,d="";e:for(;id?r.push(Nu(d)+"-"+Nu(t)):t===d&&r.push(Nu(t)),d="",i++):e.startsWith("-]",i+1)?(r.push(Nu(t+"-")),i+=2):e.startsWith("-",i+1)?(d=t,i+=2):(r.push(Nu(t)),i++)}else l=!0,i++}else c=!0,i++}if(u1&&void 0!==arguments[1]?arguments[1]:{};return t?e.replace(/\[([^\/\\])\]/g,"$1"):e.replace(/((?!\\).|^)\[([^\/\\])\]/g,"$1$2").replace(/\\([^\/])/g,"$1")},Mu=new Set(["!","?","+","*","@"]),Du=e=>Mu.has(e),Fu="(?!\\.)",Bu=new Set(["[","."]),Wu=new Set(["..","."]),Uu=new Set("().*{}+?[]^$\\!"),Vu="[^/]",Hu=Vu+"*?",Gu=Vu+"+?";var qu=new WeakMap,Ku=new WeakMap,$u=new WeakMap,Yu=new WeakMap,Xu=new WeakMap,Ju=new WeakMap,Qu=new WeakMap,Zu=new WeakMap,ed=new WeakMap,td=new WeakMap,nd=new WeakMap,rd=new WeakSet;class od{constructor(e,t){!function(e,t){Sc(e,t),t.add(e)}(this,rd),l(this,"type",void 0),_c(this,qu,void 0),_c(this,Ku,void 0),_c(this,$u,!1),_c(this,Yu,[]),_c(this,Xu,void 0),_c(this,Ju,void 0),_c(this,Qu,void 0),_c(this,Zu,!1),_c(this,ed,void 0),_c(this,td,void 0),_c(this,nd,!1);let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.type=e,e&&Ec(Ku,this,!0),Ec(Xu,this,t),Ec(qu,this,Tc(Xu,this)?Tc(qu,Tc(Xu,this)):this),Ec(ed,this,Tc(qu,this)===this?n:Tc(ed,Tc(qu,this))),Ec(Qu,this,Tc(qu,this)===this?[]:Tc(Qu,Tc(qu,this))),"!"!==e||Tc(Zu,Tc(qu,this))||Tc(Qu,this).push(this),Ec(Ju,this,Tc(Xu,this)?Tc(Yu,Tc(Xu,this)).length:0)}get hasMagic(){if(void 0!==Tc(Ku,this))return Tc(Ku,this);for(const e of Tc(Yu,this))if("string"!=typeof e&&(e.type||e.hasMagic))return Ec(Ku,this,!0);return Tc(Ku,this)}toString(){return void 0!==Tc(td,this)?Tc(td,this):this.type?Ec(td,this,this.type+"("+Tc(Yu,this).map(e=>String(e)).join("|")+")"):Ec(td,this,Tc(Yu,this).map(e=>String(e)).join(""))}push(){for(var e=arguments.length,t=new Array(e),n=0;n"string"==typeof e?e:e.toJSON()):[this.type,...Tc(Yu,this).map(e=>e.toJSON())];return this.isStart()&&!this.type&&t.unshift([]),this.isEnd()&&(this===Tc(qu,this)||Tc(Zu,Tc(qu,this))&&"!"===(null===(e=Tc(Xu,this))||void 0===e?void 0:e.type))&&t.push({}),t}isStart(){var e;if(Tc(qu,this)===this)return!0;if(null===(e=Tc(Xu,this))||void 0===e||!e.isStart())return!1;if(0===Tc(Ju,this))return!0;const t=Tc(Xu,this);for(let n=0;n1&&void 0!==arguments[1]?arguments[1]:{};const n=new od(null,void 0,t);return ad.call(od,e,n,0,t),n}toMMPattern(){if(this!==Tc(qu,this))return Tc(qu,this).toMMPattern();const e=this.toString(),[t,n,r,o]=this.toRegExpSource();if(!(r||Tc(Ku,this)||Tc(ed,this).nocase&&!Tc(ed,this).nocaseMagicOnly&&e.toUpperCase()!==e.toLowerCase()))return n;const i=(Tc(ed,this).nocase?"i":"")+(o?"u":"");return Object.assign(new RegExp("^".concat(t,"$"),i),{_src:t,_glob:e})}get options(){return Tc(ed,this)}toRegExpSource(e){const t=null!==e&&void 0!==e?e:!!Tc(ed,this).dot;if(Tc(qu,this)===this&&wc(rd,this,id).call(this),!this.type){var n;const r=this.isStart()&&this.isEnd(),o=Tc(Yu,this).map(t=>{const[n,o,i,a]="string"==typeof t?ld.call(od,t,Tc(Ku,this),r):t.toRegExpSource(e);return Ec(Ku,this,Tc(Ku,this)||i),Ec($u,this,Tc($u,this)||a),n}).join("");let i="";if(this.isStart()&&"string"==typeof Tc(Yu,this)[0]&&(1!==Tc(Yu,this).length||!Wu.has(Tc(Yu,this)[0]))){const n=Bu,r=t&&n.has(o.charAt(0))||o.startsWith("\\.")&&n.has(o.charAt(2))||o.startsWith("\\.\\.")&&n.has(o.charAt(4)),a=!t&&!e&&n.has(o.charAt(0));i=r?"(?!(?:^|/)\\.\\.?(?:$|/))":a?Fu:""}let a="";return this.isEnd()&&Tc(Zu,Tc(qu,this))&&"!"===(null===(n=Tc(Xu,this))||void 0===n?void 0:n.type)&&(a="(?:$|\\/)"),[i+o+a,Ou(o),Ec(Ku,this,!!Tc(Ku,this)),Tc($u,this)]}const r="*"===this.type||"+"===this.type,o="!"===this.type?"(?:(?!(?:":"(?:";let i=wc(rd,this,sd).call(this,t);if(this.isStart()&&this.isEnd()&&!i&&"!"!==this.type){const e=this.toString();return Ec(Yu,this,[e]),this.type=null,Ec(Ku,this,void 0),[e,Ou(this.toString()),!1,!1]}let a=!r||e||t?"":wc(rd,this,sd).call(this,!0);a===i&&(a=""),a&&(i="(?:".concat(i,")(?:").concat(a,")*?"));let s="";return s="!"===this.type&&Tc(nd,this)?(this.isStart()&&!t?Fu:"")+Gu:o+i+("!"===this.type?"))"+(!this.isStart()||t||e?"":Fu)+Hu+")":"@"===this.type?")":"?"===this.type?")?":"+"===this.type&&a?")":"*"===this.type&&a?")?":")".concat(this.type)),[s,Ou(i),Ec(Ku,this,!!Tc(Ku,this)),Tc($u,this)]}}function id(){if(this!==Tc(qu,this))throw new Error("should only call on root");if(Tc(Zu,this))return this;let e;for(this.toString(),Ec(Zu,this,!0);e=Tc(Qu,this).pop();){if("!"!==e.type)continue;let t=e,n=Tc(Xu,t);for(;n;){for(let r=Tc(Ju,t)+1;!n.type&&r{if("string"==typeof t)throw new Error("string type in extglob ast??");const[n,r,o,i]=t.toRegExpSource(e);return Ec($u,this,Tc($u,this)||i),n}).filter(e=>!(this.isStart()&&this.isEnd()&&!e)).join("|")}function ld(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=!1,o="",i=!1;for(let a=0;a2&&void 0!==arguments[2]?arguments[2]:{};return zu(t),!(!n.nocomment&&"#"===t.charAt(0))&&new jd(t,n).match(e)},ud=/^\*+([^+@!?\*\[\(]*)$/,dd=e=>t=>!t.startsWith(".")&&t.endsWith(e),pd=e=>t=>t.endsWith(e),hd=e=>(e=e.toLowerCase(),t=>!t.startsWith(".")&&t.toLowerCase().endsWith(e)),fd=e=>(e=e.toLowerCase(),t=>t.toLowerCase().endsWith(e)),md=/^\*+\.\*+$/,gd=e=>!e.startsWith(".")&&e.includes("."),yd=e=>"."!==e&&".."!==e&&e.includes("."),vd=/^\.\*+$/,bd=e=>"."!==e&&".."!==e&&e.startsWith("."),xd=/^\*+$/,kd=e=>0!==e.length&&!e.startsWith("."),Ad=e=>0!==e.length&&"."!==e&&".."!==e,Sd=/^\?+([^+@!?\*\[\(]*)?$/,_d=e=>{let[t,n=""]=e;const r=Cd([t]);return n?(n=n.toLowerCase(),e=>r(e)&&e.toLowerCase().endsWith(n)):r},wd=e=>{let[t,n=""]=e;const r=Id([t]);return n?(n=n.toLowerCase(),e=>r(e)&&e.toLowerCase().endsWith(n)):r},Td=e=>{let[t,n=""]=e;const r=Id([t]);return n?e=>r(e)&&e.endsWith(n):r},Ed=e=>{let[t,n=""]=e;const r=Cd([t]);return n?e=>r(e)&&e.endsWith(n):r},Cd=e=>{let[t]=e;const n=t.length;return e=>e.length===n&&!e.startsWith(".")},Id=e=>{let[t]=e;const n=t.length;return e=>e.length===n&&"."!==e&&".."!==e},Ld="object"==typeof process&&process?{NODE_ENV:"production",PUBLIC_URL:"",WDS_SOCKET_HOST:void 0,WDS_SOCKET_PATH:void 0,WDS_SOCKET_PORT:void 0,FAST_REFRESH:!0,REACT_APP_CLIENT:"firefox",REACT_APP_HOMEPAGE:"https://github.com/fishjar/kiss-translator",REACT_APP_LOGOURL:"https://kiss-translator.rayjar.com/images/logo192.png",REACT_APP_NAME:"KISS Translator",REACT_APP_NAME_CN:"\u7b80\u7ea6\u7ffb\u8bd1",REACT_APP_OPTIONSPAGE:"https://kiss-translator.rayjar.com/options",REACT_APP_OPTIONSPAGE_DEV:"https://kiss-translator-dev.rayjar.com/options",REACT_APP_OPTIONSPAGE_GITHUB:"https://fishjar.github.io/kiss-translator/options.html",REACT_APP_OPTIONSPAGE_LOCAL:"http://localhost:3000/options.html",REACT_APP_RELEASES_URL:"https://github.com/fishjar/kiss-translator/releases",REACT_APP_RULESURL:"https://fishjar.github.io/kiss-rules/kiss-rules_v2.json",REACT_APP_RULESURL_OFF:"https://fishjar.github.io/kiss-rules/kiss-rules-off_v2.json",REACT_APP_RULESURL_ON:"https://fishjar.github.io/kiss-rules/kiss-rules-on_v2.json",REACT_APP_SITEURL:"https://kiss-translator.rayjar.com",REACT_APP_SITEURL_DEV:"https://kiss-translator-dev.rayjar.com",REACT_APP_SITEURL_GITHUB:"https://fishjar.github.io/kiss-translator",REACT_APP_USERSCRIPT_DOWNLOADURL:"https://kiss-translator.rayjar.com/kiss-translator.user.js",REACT_APP_USERSCRIPT_IOS_DOWNLOADURL:"https://kiss-translator.rayjar.com/kiss-translator-ios-safari.user.js",REACT_APP_VERSION:"2.0.29",REACT_APP_VERSION_URL:"https://kiss-translator.rayjar.com/version.txt",REACT_APP_VERSION_URL_DEV:"https://kiss-translator-dev.rayjar.com/version.txt",REACT_APP_VERSION_URL_GITHUB:"https://fishjar.github.io/kiss-translator/version.txt"}.__MINIMATCH_TESTING_PLATFORM__||process.platform:"posix";cd.sep="win32"===Ld?"\\":"/";const zd=Symbol("globstar **");cd.GLOBSTAR=zd,cd.filter=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return n=>cd(n,e,t)};const Pd=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return Object.assign({},e,t)};cd.defaults=e=>{if(!e||"object"!=typeof e||!Object.keys(e).length)return cd;const t=cd;return Object.assign(function(n,r){return t(n,r,Pd(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))},{Minimatch:class extends t.Minimatch{constructor(t){super(t,Pd(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}))}static defaults(n){return t.defaults(Pd(e,n)).Minimatch}},AST:class extends t.AST{constructor(t,n){super(t,n,Pd(e,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{}))}static fromGlob(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.AST.fromGlob(n,Pd(e,r))}},unescape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.unescape(n,Pd(e,r))},escape:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.escape(n,Pd(e,r))},filter:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.filter(n,Pd(e,r))},defaults:n=>t.defaults(Pd(e,n)),makeRe:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.makeRe(n,Pd(e,r))},braceExpand:function(n){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t.braceExpand(n,Pd(e,r))},match:function(n,r){let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return t.match(n,r,Pd(e,o))},sep:t.sep,GLOBSTAR:zd})};const Nd=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return zu(e),t.nobrace||!/\{(?:(?!\{).)*\}/.test(e)?[e]:Lu(e)};cd.braceExpand=Nd,cd.makeRe=function(e){return new jd(e,arguments.length>1&&void 0!==arguments[1]?arguments[1]:{}).makeRe()},cd.match=function(e,t){const n=new jd(t,arguments.length>2&&void 0!==arguments[2]?arguments[2]:{});return e=e.filter(e=>n.match(e)),n.options.nonull&&!e.length&&e.push(t),e};const Rd=/[?*]|[+@!]\(.*?\)|\[|\]/;class jd{constructor(e){l(this,"options",void 0),l(this,"set",void 0),l(this,"pattern",void 0),l(this,"windowsPathsNoEscape",void 0),l(this,"nonegate",void 0),l(this,"negate",void 0),l(this,"comment",void 0),l(this,"empty",void 0),l(this,"preserveMultipleSlashes",void 0),l(this,"partial",void 0),l(this,"globSet",void 0),l(this,"globParts",void 0),l(this,"nocase",void 0),l(this,"isWindows",void 0),l(this,"platform",void 0),l(this,"windowsNoMagicRoot",void 0),l(this,"regexp",void 0);let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};zu(e),t=t||{},this.options=t,this.pattern=e,this.platform=t.platform||Ld,this.isWindows="win32"===this.platform,this.windowsPathsNoEscape=!!t.windowsPathsNoEscape||!1===t.allowWindowsEscape,this.windowsPathsNoEscape&&(this.pattern=this.pattern.replace(/\\/g,"/")),this.preserveMultipleSlashes=!!t.preserveMultipleSlashes,this.regexp=null,this.negate=!1,this.nonegate=!!t.nonegate,this.comment=!1,this.empty=!1,this.partial=!!t.partial,this.nocase=!!this.options.nocase,this.windowsNoMagicRoot=void 0!==t.windowsNoMagicRoot?t.windowsNoMagicRoot:!(!this.isWindows||!this.nocase),this.globSet=[],this.globParts=[],this.set=[],this.make()}hasMagic(){if(this.options.magicalBraces&&this.set.length>1)return!0;for(const e of this.set)for(const t of e)if("string"!=typeof t)return!0;return!1}debug(){}make(){const e=this.pattern,t=this.options;if(!t.nocomment&&"#"===e.charAt(0))return void(this.comment=!0);if(!e)return void(this.empty=!0);this.parseNegate(),this.globSet=[...new Set(this.braceExpand())],t.debug&&(this.debug=function(){return console.error(...arguments)}),this.debug(this.pattern,this.globSet);const n=this.globSet.map(e=>this.slashSplit(e));this.globParts=this.preprocess(n),this.debug(this.pattern,this.globParts);let r=this.globParts.map((e,t,n)=>{if(this.isWindows&&this.windowsNoMagicRoot){const t=!(""!==e[0]||""!==e[1]||"?"!==e[2]&&Rd.test(e[2])||Rd.test(e[3])),n=/^[a-z]:/i.test(e[0]);if(t)return[...e.slice(0,4),...e.slice(4).map(e=>this.parse(e))];if(n)return[e[0],...e.slice(1).map(e=>this.parse(e))]}return e.map(e=>this.parse(e))});if(this.debug(this.pattern,r),this.set=r.filter(e=>-1===e.indexOf(!1)),this.isWindows)for(let o=0;o=2?(e=this.firstPhasePreProcess(e),e=this.secondPhasePreProcess(e)):e=t>=1?this.levelOneOptimize(e):this.adjascentGlobstarOptimize(e),e}adjascentGlobstarOptimize(e){return e.map(e=>{let t=-1;for(;-1!==(t=e.indexOf("**",t+1));){let n=t;for(;"**"===e[n+1];)n++;n!==t&&e.splice(t,n-t)}return e})}levelOneOptimize(e){return e.map(e=>0===(e=e.reduce((e,t)=>{const n=e[e.length-1];return"**"===t&&"**"===n?e:".."===t&&n&&".."!==n&&"."!==n&&"**"!==n?(e.pop(),e):(e.push(t),e)},[])).length?[""]:e)}levelTwoFileOptimize(e){Array.isArray(e)||(e=this.slashSplit(e));let t=!1;do{if(t=!1,!this.preserveMultipleSlashes){for(let n=1;nr&&n.splice(r+1,o-r);let i=n[r+1];const a=n[r+2],s=n[r+3];if(".."!==i)continue;if(!a||"."===a||".."===a||!s||"."===s||".."===s)continue;t=!0,n.splice(r,1);const l=n.slice(0);l[r]="**",e.push(l),r--}if(!this.preserveMultipleSlashes){for(let e=1;ee.length)}partsMatch(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=0,o=0,i=[],a="";for(;r2&&void 0!==arguments[2]&&arguments[2];const r=this.options;if(this.isWindows){const n="string"==typeof e[0]&&/^[a-z]:$/i.test(e[0]),r=!n&&""===e[0]&&""===e[1]&&"?"===e[2]&&/^[a-z]:$/i.test(e[3]),o="string"==typeof t[0]&&/^[a-z]:$/i.test(t[0]),i=r?3:n?0:void 0,a=!o&&""===t[0]&&""===t[1]&&"?"===t[2]&&"string"==typeof t[3]&&/^[a-z]:$/i.test(t[3])?3:o?0:void 0;if("number"==typeof i&&"number"==typeof a){const[n,r]=[e[i],t[a]];n.toLowerCase()===r.toLowerCase()&&(t[a]=n,a>i?t=t.slice(a):i>a&&(e=e.slice(i)))}}const{optimizationLevel:o=1}=this.options;o>=2&&(e=this.levelTwoFileOptimize(e)),this.debug("matchOne",this,{file:e,pattern:t}),this.debug("matchOne",e.length,t.length);for(var i=0,a=0,s=e.length,l=t.length;i>> no match, partial?",e,d,t,p),d!==s))}let o;if("string"==typeof c?(o=u===c,this.debug("string match",c,u,o)):(o=c.test(u),this.debug("pattern match",c,u,o)),!o)return!1}if(i===s&&a===l)return!0;if(i===s)return n;if(a===l)return i===s-1&&""===e[i];throw new Error("wtf?")}braceExpand(){return Nd(this.pattern,this.options)}parse(e){zu(e);const t=this.options;if("**"===e)return zd;if(""===e)return"";let n,r=null;(n=e.match(xd))?r=t.dot?Ad:kd:(n=e.match(ud))?r=(t.nocase?t.dot?fd:hd:t.dot?pd:dd)(n[1]):(n=e.match(Sd))?r=(t.nocase?t.dot?wd:_d:t.dot?Td:Ed)(n):(n=e.match(md))?r=t.dot?yd:gd:(n=e.match(vd))&&(r=bd);const o=od.fromGlob(e,this.options).toMMPattern();return r&&"object"==typeof o&&Reflect.defineProperty(o,"test",{value:r}),o}makeRe(){if(this.regexp||!1===this.regexp)return this.regexp;const e=this.set;if(!e.length)return this.regexp=!1,this.regexp;const t=this.options,n=t.noglobstar?"[^/]*?":t.dot?"(?:(?!(?:\\/|^)(?:\\.{1,2})($|\\/)).)*?":"(?:(?!(?:\\/|^)\\.).)*?",r=new Set(t.nocase?["i"]:[]);let o=e.map(e=>{const t=e.map(e=>{if(e instanceof RegExp)for(const t of e.flags.split(""))r.add(t);return"string"==typeof e?e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&"):e===zd?zd:e._src});return t.forEach((e,r)=>{const o=t[r+1],i=t[r-1];e===zd&&i!==zd&&(void 0===i?void 0!==o&&o!==zd?t[r+1]="(?:\\/|"+n+"\\/)?"+o:t[r]=n:void 0===o?t[r-1]=i+"(?:\\/|"+n+")?":o!==zd&&(t[r-1]=i+"(?:\\/|\\/"+n+"\\/)"+o,t[r+1]=zd))}),t.filter(e=>e!==zd).join("/")}).join("|");const[i,a]=e.length>1?["(?:",")"]:["",""];o="^"+i+o+a+"$",this.negate&&(o="^(?!"+o+").+$");try{this.regexp=new RegExp(o,[...r].join(""))}catch(e){this.regexp=!1}return this.regexp}slashSplit(e){return this.preserveMultipleSlashes?e.split("/"):this.isWindows&&/^\/\/[^\/]+/.test(e)?["",...e.split(/\/+/)]:e.split(/\/+/)}match(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.partial;if(this.debug("match",e,this.pattern),this.comment)return!1;if(this.empty)return""===e;if("/"===e&&t)return!0;const n=this.options;this.isWindows&&(e=e.split("\\").join("/"));const r=this.slashSplit(e);this.debug(this.pattern,"split",r);const o=this.set;this.debug(this.pattern,"set",o);let i=r[r.length-1];if(!i)for(let a=r.length-2;!i&&a>=0;a--)i=r[a];for(let a=0;a1&&void 0!==arguments[1]?arguments[1]:"","Invalid response: ").concat(e.status," ").concat(e.statusText));return t.status=e.status,t.response=e,t}function Md(e,t){const{status:n}=t;if(401===n&&e.digest)return t;if(n>=400)throw Od(t);return t}function Dd(e,t){return arguments.length>2&&void 0!==arguments[2]&&arguments[2]?{data:t,headers:e.headers?yu(e.headers):{},status:e.status,statusText:e.statusText}:t}cd.AST=od,cd.Minimatch=jd,cd.escape=function(e){let{windowsPathsNoEscape:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return t?e.replace(/[?*()[\]]/g,"[$&]"):e.replace(/[?*()[\]\\]/g,"\\$&")},cd.unescape=Ou;const Fd=(Bd=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};const o=Cu({url:qc(e.remoteURL,Uc(t)),method:"COPY",headers:{Destination:qc(e.remoteURL,Uc(n)),Overwrite:!1===r.overwrite?"F":"T",Depth:r.shallow?"0":"infinity"}},e,r);return a=function(t){Md(e,t)},(i=Eu(o,e))&&i.then||(i=Promise.resolve(i)),a?i.then(a):i;var i,a},function(){for(var e=[],t=0;t2&&void 0!==arguments[2]?arguments[2]:Hd.Original;const r=Vd().get(e,t);return"array"===n&&!1===Array.isArray(r)?[r]:"object"===n&&Array.isArray(r)?r[0]:r}function qd(e){return new Promise(t=>{t(function(e){const{multistatus:t}=e;if(""===t)return{multistatus:{response:[]}};if(!t)throw new Error("Invalid response: No root multistatus found");const n={multistatus:Array.isArray(t)?t[0]:t};return Vd().set(n,"multistatus.response",Gd(n,"multistatus.response",Hd.Array)),Vd().set(n,"multistatus.response",Vd().get(n,"multistatus.response").map(e=>function(e){const t=Object.assign({},e);return t.status?Vd().set(t,"status",Gd(t,"status",Hd.Object)):(Vd().set(t,"propstat",Gd(t,"propstat",Hd.Object)),Vd().set(t,"propstat.prop",Gd(t,"propstat.prop",Hd.Object))),t}(e))),n}(new Wd.XMLParser({allowBooleanAttributes:!0,attributeNamePrefix:"",textNodeName:"text",ignoreAttributes:!1,removeNSPrefix:!0,numberParseOptions:{hex:!0,leadingZeros:!1},attributeValueProcessor:(e,t,n)=>"true"===t||"false"===t?"true"===t:t,tagValueProcessor(e,t,n){if(!n.endsWith("propstat.prop.displayname"))return t}}).parse(e)))})}function Kd(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];const{getlastmodified:r=null,getcontentlength:o="0",resourcetype:i=null,getcontenttype:a=null,getetag:s=null}=e,l=i&&"object"==typeof i&&void 0!==i.collection?"directory":"file",c={filename:t,basename:Fc().basename(t),lastmod:r,size:parseInt(o,10),type:l,etag:"string"==typeof s?s.replace(/"/g,""):null};return"file"===l&&(c.mime=a&&"string"==typeof a?a.split(";")[0]:""),n&&(void 0!==e.displayname&&(e.displayname=String(e.displayname)),c.props=e),c}function $d(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=null;try{e.multistatus.response[0].propstat&&(r=e.multistatus.response[0])}catch(e){}if(!r)throw new Error("Failed getting item stat: bad response");const{propstat:{prop:o,status:i}}=r,[a,s,l]=i.split(" ",3),c=parseInt(s,10);if(c>=400){const e=new Error("Invalid response: ".concat(c," ").concat(l));throw e.status=c,e}return Kd(o,Hc(t),n)}function Yd(e){switch(String(e)){case"-3":return"unlimited";case"-2":case"-1":return"unknown";default:return parseInt(String(e),10)}}function Xd(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Jd=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,o=Cu({url:qc(e.remoteURL,Uc(t)),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},e,n);return Xd(Eu(o,e),function(n){return Md(e,n),Xd(n.text(),function(e){return Xd(qd(e),function(e){const o=$d(e,t,r);return Dd(n,o,r)})})})});function Qd(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Zd=ep(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=function(e){if(!e||"/"===e)return[];let t=e;const n=[];do{n.push(t),t=Fc().dirname(t)}while(t&&"/"!==t);return n}(Hc(t));r.sort((e,t)=>e.length>t.length?1:t.length>e.length?-1:0);let o=!1;return function(e,t){if("function"==typeof e[rp]){var n,r,o,i=e[rp]();function c(e){try{for(;!(n=i.next()).done;)if((e=t(n.value))&&e.then){if(!ap(e))return void e.then(c,o||(o=op.bind(null,r=new ip,2)));e=e.v}r?op(r,1,e):r=e}catch(e){op(r||(r=new ip),2,e)}}if(c(),i.return){var a=function(e){try{n.done||i.return()}catch(e){}return e};if(r&&r.then)return r.then(a,function(e){throw a(e)});a()}return r}if(!("length"in e))throw new TypeError("Object is not iterable");for(var s=[],l=0;l2&&void 0!==arguments[2]?arguments[2]:{};if(!0===n.recursive)return Zd(e,t,n);const r=Cu({url:qc(e.remoteURL,(o=Uc(t),o.endsWith("/")?o:o+"/")),method:"MKCOL"},e,n);var o;return Qd(Eu(r,e),function(t){Md(e,t)})});var lp=zc(388),cp=zc.n(lp);const up=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r={};if("object"==typeof n.range&&"number"==typeof n.range.start){let e="bytes=".concat(n.range.start,"-");"number"==typeof n.range.end&&(e="".concat(e).concat(n.range.end)),r.Range=e}const o=Cu({url:qc(e.remoteURL,Uc(t)),method:"GET",headers:r},e,n);return a=function(t){if(Md(e,t),r.Range&&206!==t.status){const e=new Error("Invalid response code for partial request: ".concat(t.status));throw e.status=t.status,e}return n.callback&&setTimeout(()=>{n.callback(t)},0),t.body},(i=Eu(o,e))&&i.then||(i=Promise.resolve(i)),a?i.then(a):i;var i,a}),dp=()=>{},pp=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Cu({url:qc(e.remoteURL,Uc(t)),method:"DELETE"},e,n);return i=function(t){Md(e,t)},(o=Eu(r,e))&&o.then||(o=Promise.resolve(o)),i?o.then(i):o;var o,i}),fp=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};return function(r,o){try{var i=(a=Jd(e,t,n),s=function(){return!0},a&&a.then||(a=Promise.resolve(a)),s?a.then(s):a)}catch(e){return o(e)}var a,s;return i&&i.then?i.then(void 0,o):i}(0,function(e){if(404===e.status)return!1;throw e})});function mp(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const gp=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Cu({url:qc(e.remoteURL,Uc(t),"/"),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:n.deep?"infinity":"1"}},e,n);return mp(Eu(r,e),function(r){return Md(e,r),mp(r.text(),function(o){if(!o)throw new Error("Failed parsing directory contents: Empty response");return mp(qd(o),function(o){const i=Vc(t);let a=function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],o=arguments.length>4&&void 0!==arguments[4]&&arguments[4];const i=Fc().join(t,"/"),{multistatus:{response:a}}=e,s=a.map(e=>{const t=function(e){try{return e.replace(/^https?:\/\/[^\/]+/,"")}catch(e){throw new Mc(e,"Failed normalising HREF")}}(e.href),{propstat:{prop:n}}=e;return Kd(n,"/"===i?decodeURIComponent(Hc(t)):Hc(Fc().relative(decodeURIComponent(i),decodeURIComponent(t))),r)});return o?s:s.filter(e=>e.basename&&("file"===e.type||e.filename!==n.replace(/\/$/,"")))}(o,Vc(e.remoteBasePath||e.remotePath),i,n.details,n.includeSelf);return n.glob&&(a=function(e,t){return e.filter(e=>cd(e.filename,t,{matchBase:!0}))}(a,n.glob)),Dd(r,a,n.details)})})})});function yp(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Cu({url:qc(e.remoteURL,Uc(t)),method:"GET",headers:{Accept:"text/plain"},transformResponse:[Ap]},e,n);return bp(Eu(r,e),function(t){return Md(e,t),bp(t.text(),function(e){return Dd(t,e,n.details)})})});function bp(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const xp=yp(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=Cu({url:qc(e.remoteURL,Uc(t)),method:"GET"},e,n);return bp(Eu(r,e),function(t){let r;return Md(e,t),function(e,t){var n=e();return n&&n.then?n.then(t):t()}(function(){return bp(t.arrayBuffer(),function(e){r=e})},function(){return Dd(t,r,n.details)})})}),kp=yp(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{format:r="binary"}=n;if("binary"!==r&&"text"!==r)throw new Mc({info:{code:au.InvalidOutputFormat}},"Invalid output format: ".concat(r));return"text"===r?vp(e,t,n):xp(e,t,n)}),Ap=e=>e;function Sp(e){return new Wd.XMLBuilder({attributeNamePrefix:"@_",format:!0,ignoreAttributes:!1,suppressEmptyNode:!0}).build(_p({lockinfo:{"@_xmlns:d":"DAV:",lockscope:{exclusive:{}},locktype:{write:{}},owner:{href:e}}},"d"))}function _p(e,t){const n=u({},e);for(const r in n)n.hasOwnProperty(r)&&(n[r]&&"object"==typeof n[r]&&-1===r.indexOf(":")?(n["".concat(t,":").concat(r)]=_p(n[r],t),delete n[r]):!1===/^@_/.test(r)&&(n["".concat(t,":").concat(r)]=n[r],delete n[r]));return n}function wp(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}function Tp(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const o=Cu({url:qc(e.remoteURL,Uc(t)),method:"UNLOCK",headers:{"Lock-Token":n}},e,r);return wp(Eu(o,e),function(t){if(Md(e,t),204!==t.status&&200!==t.status)throw Od(t)})}),Cp=Tp(function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{refreshToken:r,timeout:o=Ip}=n,i={Accept:"text/plain,application/xml",Timeout:o};r&&(i.If=r);const a=Cu({url:qc(e.remoteURL,Uc(t)),method:"LOCK",headers:i,data:Sp(e.contactHref)},e,n);return wp(Eu(a,e),function(t){return Md(e,t),wp(t.text(),function(e){const n=(i=e,new Wd.XMLParser({removeNSPrefix:!0,parseAttributeValue:!0,parseTagValue:!0}).parse(i)),r=Vd().get(n,"prop.lockdiscovery.activelock.locktoken.href"),o=Vd().get(n,"prop.lockdiscovery.activelock.timeout");var i;if(!r)throw Od(t,"No lock token received: ");return{token:r,serverTimeout:o}})})}),Ip="Infinite, Second-4100000000";function Lp(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const zp=function(e){return function(){for(var t=[],n=0;n1&&void 0!==arguments[1]?arguments[1]:{};const n=t.path||"/",r=Cu({url:qc(e.remoteURL,n),method:"PROPFIND",headers:{Accept:"text/plain,application/xml",Depth:"0"}},e,t);return Lp(Eu(r,e),function(n){return Md(e,n),Lp(n.text(),function(e){return Lp(qd(e),function(e){const r=function(e){try{const[t]=e.multistatus.response,{propstat:{prop:{"quota-used-bytes":n,"quota-available-bytes":r}}}=t;return void 0!==n&&void 0!==r?{used:parseInt(String(n),10),available:Yd(r)}:null}catch(e){}return null}(e);return Dd(n,r,t.details)})})})});function Pp(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Np=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const{details:r=!1}=n,o=Cu({url:qc(e.remoteURL,Uc(t)),method:"SEARCH",headers:{Accept:"text/plain,application/xml","Content-Type":e.headers["Content-Type"]||"application/xml; charset=utf-8"}},e,n);return Pp(Eu(o,e),function(n){return Md(e,n),Pp(n.text(),function(e){return Pp(qd(e),function(e){const o=function(e,t,n){const r={truncated:!1,results:[]};return r.truncated=e.multistatus.response.some(e=>{var n,r;return"507"===(null===(n=(e.status||(null===(r=e.propstat)||void 0===r?void 0:r.status)).split(" ",3))||void 0===n?void 0:n[1])&&e.href.replace(/\/$/,"").endsWith(Uc(t).replace(/\/$/,""))}),e.multistatus.response.forEach(e=>{if(void 0===e.propstat)return;const t=e.href.split("/").map(decodeURIComponent).join("/");r.results.push(Kd(e.propstat.prop,t,n))}),r}(e,t,r);return Dd(n,o,r)})})})}),Rp=function(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const o=Cu({url:qc(e.remoteURL,Uc(t)),method:"MOVE",headers:{Destination:qc(e.remoteURL,Uc(n)),Overwrite:!1===r.overwrite?"F":"T"}},e,r);return a=function(t){Md(e,t)},(i=Eu(o,e))&&i.then||(i=Promise.resolve(i)),a?i.then(a):i;var i,a});var jp=zc(172);const Op=function(e){return function(){for(var t=[],n=0;n3&&void 0!==arguments[3]?arguments[3]:{};const{contentLength:o=!0,overwrite:i=!0}=r,a={"Content-Type":"application/octet-stream"};!1===o||(a["Content-Length"]="".concat("number"==typeof o?o:function(e){if(ku(e))return e.byteLength;if(Au(e))return e.length;if("string"==typeof e)return(0,jp.d)(e);throw new Mc({info:{code:au.DataTypeNoLength}},"Cannot calculate data length: Invalid type")}(n))),i||(a["If-None-Match"]="*");const s=Cu({url:qc(e.remoteURL,Uc(t)),method:"PUT",headers:a,data:n},e,r);return c=function(t){try{Md(e,t)}catch(e){const n=e;if(412!==n.status||i)throw n;return!1}return!0},(l=Eu(s,e))&&l.then||(l=Promise.resolve(l)),c?l.then(c):l;var l,c}),Mp=function(e){return function(){for(var t=[],n=0;n2&&void 0!==arguments[2]?arguments[2]:{};const r=Cu({url:qc(e.remoteURL,Uc(t)),method:"OPTIONS"},e,n);return i=function(t){var n,r;try{Md(e,t)}catch(e){throw e}return{compliance:(null!==(n=t.headers.get("DAV"))&&void 0!==n?n:"").split(",").map(e=>e.trim()),server:null!==(r=t.headers.get("Server"))&&void 0!==r?r:""}},(o=Eu(r,e))&&o.then||(o=Promise.resolve(o)),i?o.then(i):o;var o,i});function Dp(e,t,n){return n?t?t(e):e:(e&&e.then||(e=Promise.resolve(e)),t?e.then(t):e)}const Fp=Up(function(e,t,n,r,o){let i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new Mc({info:{code:au.InvalidUpdateRange}},"Invalid update range ".concat(n," for partial update"));const a={"Content-Type":"application/octet-stream","Content-Length":""+(r-n+1),"Content-Range":"bytes ".concat(n,"-").concat(r,"/*")},s=Cu({url:qc(e.remoteURL,Uc(t)),method:"PUT",headers:a,data:o},e,i);return Dp(Eu(s,e),function(t){Md(e,t)})});function Bp(e,t){var n=e();return n&&n.then?n.then(t):t(n)}const Wp=Up(function(e,t,n,r,o){let i=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(n>r||n<0)throw new Mc({info:{code:au.InvalidUpdateRange}},"Invalid update range ".concat(n," for partial update"));const a={"Content-Type":"application/x-sabredav-partialupdate","Content-Length":""+(r-n+1),"X-Update-Range":"bytes=".concat(n,"-").concat(r)},s=Cu({url:qc(e.remoteURL,Uc(t)),method:"PATCH",headers:a,data:o},e,i);return Dp(Eu(s,e),function(t){Md(e,t)})});function Up(e){return function(){for(var t=[],n=0;n5&&void 0!==arguments[5]?arguments[5]:{};return Dp(Mp(e,t,i),function(a){let s=!1;return Bp(function(){if(a.compliance.includes("sabredav-partialupdate"))return Dp(Wp(e,t,n,r,o,i),function(e){return s=!0,e})},function(l){let c=!1;return s?l:Bp(function(){if(a.server.includes("Apache")&&a.compliance.includes(""))return Dp(Fp(e,t,n,r,o,i),function(e){return c=!0,e})},function(e){if(c)return e;throw new Mc({info:{code:au.NotSupported}},"Not supported")})})})}),Hp="https://github.com/perry-mitchell/webdav-client/blob/master/LOCK_CONTACT.md";function Gp(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};const{authType:n=null,remoteBasePath:r,contactHref:o=Hp,ha1:i,headers:a={},httpAgent:s,httpsAgent:l,password:c,token:u,username:d,withCredentials:p}=t;let h=n;h||(h=d||c?iu.Password:iu.None);const f={authType:h,remoteBasePath:r,contactHref:o,ha1:i,headers:Object.assign({},a),httpAgent:s,httpsAgent:l,password:c,remotePath:Gc(e),remoteURL:e,token:u,username:d,withCredentials:p};return su(f,d,c,u,i),{copyFile:(e,t,n)=>Fd(f,e,t,n),createDirectory:(e,t)=>sp(f,e,t),createReadStream:(e,t)=>function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=new(0,cp().PassThrough);return up(e,t,n).then(e=>{e.pipe(r)}).catch(e=>{r.emit("error",e)}),r}(f,e,t),createWriteStream:(e,t,n)=>function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:dp;const o=new(0,cp().PassThrough),i={};!1===n.overwrite&&(i["If-None-Match"]="*");const a=Cu({url:qc(e.remoteURL,Uc(t)),method:"PUT",headers:i,data:o,maxRedirects:0},e,n);return Eu(a,e).then(t=>Md(e,t)).then(e=>{setTimeout(()=>{r(e)},0)}).catch(e=>{o.emit("error",e)}),o}(f,e,t,n),customRequest:(e,t)=>pp(f,e,t),deleteFile:(e,t)=>hp(f,e,t),exists:(e,t)=>fp(f,e,t),getDirectoryContents:(e,t)=>gp(f,e,t),getFileContents:(e,t)=>kp(f,e,t),getFileDownloadLink:e=>function(e,t){let n=qc(e.remoteURL,Uc(t));const r=/^https:/i.test(n)?"https":"http";switch(e.authType){case iu.None:break;case iu.Password:{const t=Zc(e.headers.Authorization.replace(/^Basic /i,"").trim());n=n.replace(/^https?:\/\//,"".concat(r,"://").concat(t,"@"));break}default:throw new Mc({info:{code:au.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(e.authType))}return n}(f,e),getFileUploadLink:e=>function(e,t){let n="".concat(qc(e.remoteURL,Uc(t)),"?Content-Type=application/octet-stream");const r=/^https:/i.test(n)?"https":"http";switch(e.authType){case iu.None:break;case iu.Password:{const t=Zc(e.headers.Authorization.replace(/^Basic /i,"").trim());n=n.replace(/^https?:\/\//,"".concat(r,"://").concat(t,"@"));break}default:throw new Mc({info:{code:au.LinkUnsupportedAuthType}},"Unsupported auth type for file link: ".concat(e.authType))}return n}(f,e),getHeaders:()=>Object.assign({},f.headers),getQuota:e=>zp(f,e),lock:(e,t)=>Cp(f,e,t),moveFile:(e,t,n)=>Rp(f,e,t,n),putFileContents:(e,t,n)=>Op(f,e,t,n),partialUpdateFileContents:(e,t,n,r,o)=>Vp(f,e,t,n,r,o),getDAVCompliance:e=>Mp(f,e),search:(e,t)=>Np(f,e,t),setHeaders:e=>{f.headers=Object.assign({},e)},stat:(e,t)=>Jd(f,e,t),unlock:(e,t,n)=>Ep(f,e,t,n)}}var qp=Pc.UU,Kp=Pc.Gu;const $p="AES-GCM",Yp="PBKDF2-SHA-256",Xp=1e5,Jp=new TextEncoder,Qp=new TextDecoder,Zp=()=>{var e;const t=null===(e=globalThis.crypto)||void 0===e?void 0:e.subtle;if(!t)throw new Error("Web Crypto is not available");return t},eh=e=>{let t="";for(let n=0;n{const t=atob(e),n=new Uint8Array(t.length);for(let r=0;r{const n=Zp(),r=await n.importKey("raw",Jp.encode(e),"PBKDF2",!1,["deriveKey"]);return n.deriveKey({name:"PBKDF2",salt:t,iterations:Xp,hash:"SHA-256"},r,{name:$p,length:256},!1,["encrypt","decrypt"])},rh=async(e,t)=>{const n=globalThis.crypto.getRandomValues(new Uint8Array(16)),r=globalThis.crypto.getRandomValues(new Uint8Array(12)),o=await nh(t,n),i=await Zp().encrypt({name:$p,iv:r},o,Jp.encode(e));return JSON.stringify({encrypted:!0,version:1,alg:$p,kdf:Yp,iterations:Xp,salt:eh(n),iv:eh(r),data:eh(new Uint8Array(i))})},oh=async(e,t)=>{const n=(e=>{try{const t=JSON.parse(e);if(!0===(null===t||void 0===t?void 0:t.encrypted)&&t.version&&t.alg&&t.kdf&&t.data)return t}catch(t){}return null})(e);if(!n)return{value:e,encrypted:!1};if(1!==n.version||n.alg!==$p||n.kdf!==Yp||n.iterations!==Xp)throw new Error("Unsupported sync encryption format");const r=await nh(t,th(n.salt)),o=await Zp().decrypt({name:$p,iv:th(n.iv)},r,th(n.data));return{value:Qp.decode(o),encrypted:!0}};let ih=!1;const ah="kiss translator sync files",sh=async function(e,t){let{syncUrl:n,syncUser:r,syncKey:o}=t,{forceWrite:i=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};ih||(ih=!0,Kp().patch("request",e=>la(e.url,{method:e.method,headers:e.headers,body:e.data})));const a=qp(n,{username:r,password:o}),s="/".concat(He),l="/".concat(He,"/").concat(e.key);!1===await a.exists(s)&&await a.createDirectory(s);if(await a.exists(l)&&!i){const t=await a.getFileContents(l,{format:"text"}),n=JSON.parse(t);if(n.updateAt>=e.updateAt)return n}return await a.putFileContents(l,JSON.stringify(e,null,2)),e},lh=async(e,t)=>{let{syncUrl:n,syncKey:r}=t;return n=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(!e)return"";let r=e.length;for(;r>e.length-n&&e[r-1]===t;)r--;return e.slice(0,r)}(n,"/"),await(async(e,t,n)=>xa(e,{headers:{"Content-type":"application/json",Authorization:"Bearer ".concat(await Fo(t,"KISS-Translator-SYNC"))},method:"POST",body:JSON.stringify(n)}))("".concat(n,"/sync"),r,e)},ch=async e=>{const t=await(async e=>xa("".concat(mc,"?per_page=100"),{method:"GET",headers:gc(e)}))(e);return t.filter(e=>e.description===ah).sort((e,t)=>{const n=Date.parse(e.updated_at||e.created_at||0);return Date.parse(t.updated_at||t.created_at||0)-n})[0]},uh=async function(e,t){var n,r;let{syncUrl:o,syncKey:i}=t,{forceWrite:a=!1}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},s=function(){const e=(arguments.length>0&&void 0!==arguments[0]?arguments[0]:"").trim();if(!e)return"";try{const t=new URL(e).pathname.split("/").filter(Boolean);return t[t.length-1]||""}catch(t){return e}}(o);const l=(c=e.key).startsWith("kiss-rules_")?"sync-rules_".concat(c):c===ao?"sync-words_".concat(c):c;var c;const u=JSON.stringify(e,null,2);if(!s){const e=await ch(i);null!==e&&void 0!==e&&e.id&&(s=e.id,await Oa({syncUrl:s}))}if(!s){const t=await(async(e,t,n)=>xa(mc,{method:"POST",headers:gc(e),body:JSON.stringify({description:n,public:!1,files:{[t.key]:{content:t.content}}})}))(i,{key:l,content:u},ah);return await Oa({syncUrl:t.id}),e}const d=await(async(e,t)=>xa("".concat(mc,"/").concat(e),{method:"GET",headers:gc(t)}))(s,i),p=(null===(n=d.files)||void 0===n?void 0:n[l])||(null===(r=d.files)||void 0===r?void 0:r[e.key]);if(p&&!a){const t=p.content||await(h=p.raw_url,xa(h,void 0,{expect:"text"})),n=JSON.parse(t);if(n.updateAt>=e.updateAt)return n}var h;return await(async(e,t,n,r)=>xa("".concat(mc,"/").concat(e),{method:"PATCH",headers:gc(t),body:JSON.stringify({files:{[n]:{content:r}}})}))(s,i,l,u),e},dh=async(e,t)=>u(u({},e),{},{value:await rh(e.value,t)}),ph=async(e,t,n,r)=>e===Br?await sh(t,n,r):e===Wr?await uh(t,n,r):await lh(t,n),hh=async function(e,t){let{syncEncryptKey:n,forceRemoteRead:r=!1,persistMeta:o=!0}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const{syncType:i,syncUrl:a,syncUser:s,syncKey:l,syncEncryptKey:c,syncMeta:d={}}=await ja(),p=null!==n&&void 0!==n?n:c;if(!l||!p||i!==Wr&&!a||i===Br&&!s)return;let{updateAt:h=0,syncAt:f=0}=d[e]||{};0===f&&(h=0);const m={key:e,value:JSON.stringify(t),updateAt:r?0:h},g={syncUrl:a,syncUser:s,syncKey:l},y=await dh(m,p),v=await ph(i,y,g);if(!v)throw new Error("sync data got err",e);const{data:b,encrypted:x}=await(async(e,t)=>{const{value:n,encrypted:r}=await oh(e.value,t);return{data:u(u({},e),{},{value:n}),encrypted:r}})(v,p),k=JSON.parse(b.value),A=b.updateAt>h;return x||r||await(async(e,t,n,r)=>{const o=await dh(t,r);await ph(e,o,n,{forceWrite:!0})})(i,b,g,p),o&&(d[e]={updateAt:b.updateAt,syncAt:Date.now()},await Oa({syncMeta:d})),{value:k,isNew:A}},fh=async e=>{const t=await Na(),n=await hh(io,t,e);return null!==n&&void 0!==n&&n.isNew&&!1!==(null===e||void 0===e?void 0:e.applyRemote)&&await Ra(n.value),n},mh=async()=>{try{await fh()}catch(e){Nr("sync user rules",e.message)}};function gh(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";const[r,i]=(0,o.useState)(!0),[a,s]=(0,o.useState)(t),l=(0,o.useRef)();(0,o.useEffect)(()=>{let n=!0;return(async()=>{try{const r=await La.getObj(e);void 0===r||null===r?await La.setObj(e,t):n&&s(r)}catch(r){Nr("storage load error for key: ".concat(e),r)}finally{n&&i(!1)}})(),()=>{n=!1}},[e,t]);const c=function(e,t){const n=(0,o.useRef)(e);(0,o.useEffect)(()=>{n.current=e},[e]);const r=(0,o.useMemo)(()=>Mo(function(){return n.current(...arguments)},t),[t]);return(0,o.useEffect)(()=>()=>{r.cancel()},[r]),r}((0,o.useCallback)(async(e,t)=>{try{const n=await hh(e,t);null!==n&&void 0!==n&&n.isNew&&s(n.value)}catch(n){Nr("Sync failed",e)}},[]),3e3);(0,o.useEffect)(()=>{r||null!==a&&(La.setObj(e,a).catch(t=>{Nr("storage save error for key: ".concat(e),t)}),l.current&&Object.is(l.current.value,a)?l.current=void 0:n&&"options"===No()&&c(n,a))},[e,n,r,a,c]);const d=(0,o.useCallback)(e=>{s(t=>"function"===typeof e?e(t):e)},[]),p=(0,o.useCallback)(e=>{s(t=>{const n="function"===typeof e?e(t):e;return u(u({},"object"===typeof t&&null!==t?t:{}),n)})},[]),h=(0,o.useCallback)(async()=>{try{await La.del(e),s(null)}catch(t){Nr("storage remove error for key: ".concat(e),t)}},[e]),f=(0,o.useCallback)(async()=>{try{const n=await La.getObj(e),r=null!==n&&void 0!==n?n:t;if(function(e,t){if(Object.is(e,t))return!0;if(e&&t&&"object"===typeof e&&"object"===typeof t&&Array.isArray(e)===Array.isArray(t))try{return JSON.stringify(e)===JSON.stringify(t)}catch(n){return!1}return!1}(a,r))return;Object.is(a,r)||(l.current={value:r}),s(r)}catch(n){Nr("storage reload error for key: ".concat(e),n)}},[e,t,a]);return{data:a,save:d,update:p,remove:h,reload:f,isLoading:r}}function yh(e){return(0,P.Ay)("MuiCircularProgress",e)}(0,z.A)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var vh,bh,xh,kh;const Ah=["className","color","disableShrink","size","style","thickness","value","variant"];let Sh,_h,wh,Th;const Eh=44,Ch=(0,Z.i7)(Sh||(Sh=vh||(vh=V(["\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n"])))),Ih=(0,Z.i7)(_h||(_h=bh||(bh=V(["\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -125px;\n }\n"])))),Lh=(0,g.Ay)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t["color".concat((0,I.A)(n.color))]]}})(e=>{let{ownerState:t,theme:n}=e;return(0,p.A)({display:"inline-block"},"determinate"===t.variant&&{transition:n.transitions.create("transform")},"inherit"!==t.color&&{color:(n.vars||n).palette[t.color].main})},e=>{let{ownerState:t}=e;return"indeterminate"===t.variant&&(0,Z.AH)(wh||(wh=xh||(xh=V(["\n animation: "," 1.4s linear infinite;\n "]))),Ch)}),zh=(0,g.Ay)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),Ph=(0,g.Ay)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.circle,t["circle".concat((0,I.A)(n.variant))],n.disableShrink&&t.circleDisableShrink]}})(e=>{let{ownerState:t,theme:n}=e;return(0,p.A)({stroke:"currentColor"},"determinate"===t.variant&&{transition:n.transitions.create("stroke-dashoffset")},"indeterminate"===t.variant&&{strokeDasharray:"80px, 200px",strokeDashoffset:0})},e=>{let{ownerState:t}=e;return"indeterminate"===t.variant&&!t.disableShrink&&(0,Z.AH)(Th||(Th=kh||(kh=V(["\n animation: "," 1.4s ease-in-out infinite;\n "]))),Ih)}),Nh=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiCircularProgress"}),{className:r,color:o="primary",disableShrink:i=!1,size:a=40,style:s,thickness:l=3.6,value:c=0,variant:u="indeterminate"}=n,m=(0,d.A)(n,Ah),g=(0,p.A)({},n,{color:o,disableShrink:i,size:a,thickness:l,value:c,variant:u}),v=(e=>{const{classes:t,variant:n,color:r,disableShrink:o}=e,i={root:["root",n,"color".concat((0,I.A)(r))],svg:["svg"],circle:["circle","circle".concat((0,I.A)(n)),o&&"circleDisableShrink"]};return(0,f.A)(i,yh,t)})(g),b={},x={},k={};if("determinate"===u){const e=2*Math.PI*((Eh-l)/2);b.strokeDasharray=e.toFixed(3),k["aria-valuenow"]=Math.round(c),b.strokeDashoffset="".concat(((100-c)/100*e).toFixed(3),"px"),x.transform="rotate(-90deg)"}return(0,R.jsx)(Lh,(0,p.A)({className:(0,h.A)(v.root,r),style:(0,p.A)({width:a,height:a},x,s),ownerState:g,ref:t,role:"progressbar"},k,m,{children:(0,R.jsx)(zh,{className:v.svg,ownerState:g,viewBox:"".concat(22," ").concat(22," ").concat(Eh," ").concat(Eh),children:(0,R.jsx)(Ph,{className:v.circle,style:b,ownerState:g,cx:Eh,cy:Eh,r:(Eh-l)/2,fill:"none",strokeWidth:l})})}))}),Rh=Nh;var jh=n(8757);function Oh(e){return(0,P.Ay)("MuiTypography",e)}(0,z.A)("MuiTypography",["root","h1","h2","h3","h4","h5","h6","subtitle1","subtitle2","body1","body2","inherit","button","caption","overline","alignLeft","alignRight","alignCenter","alignJustify","noWrap","gutterBottom","paragraph"]);const Mh=["align","className","component","gutterBottom","noWrap","paragraph","variant","variantMapping"],Dh=(0,g.Ay)("span",{name:"MuiTypography",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.variant&&t[n.variant],"inherit"!==n.align&&t["align".concat((0,I.A)(n.align))],n.noWrap&&t.noWrap,n.gutterBottom&&t.gutterBottom,n.paragraph&&t.paragraph]}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({margin:0},"inherit"===n.variant&&{font:"inherit"},"inherit"!==n.variant&&t.typography[n.variant],"inherit"!==n.align&&{textAlign:n.align},n.noWrap&&{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},n.gutterBottom&&{marginBottom:"0.35em"},n.paragraph&&{marginBottom:16})}),Fh={h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",h6:"h6",subtitle1:"h6",subtitle2:"h6",body1:"p",body2:"p",inherit:"p"},Bh={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},Wh=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiTypography"}),r=(e=>Bh[e]||e)(n.color),o=(0,jh.A)((0,p.A)({},n,{color:r})),{align:i="inherit",className:a,component:s,gutterBottom:l=!1,noWrap:c=!1,paragraph:u=!1,variant:m="body1",variantMapping:g=Fh}=o,v=(0,d.A)(o,Mh),b=(0,p.A)({},o,{align:i,color:r,className:a,component:s,gutterBottom:l,noWrap:c,paragraph:u,variant:m,variantMapping:g}),x=s||(u?"p":g[m]||Fh[m])||"span",k=(e=>{const{align:t,gutterBottom:n,noWrap:r,paragraph:o,variant:i,classes:a}=e,s={root:["root",i,"inherit"!==e.align&&"align".concat((0,I.A)(t)),n&&"gutterBottom",r&&"noWrap",o&&"paragraph"]};return(0,f.A)(s,Oh,a)})(b);return(0,R.jsx)(Dh,(0,p.A)({as:x,ref:t,ownerState:b,className:(0,h.A)(k.root,a)},v))}),Uh=Wh;function Vh(e){return(0,P.Ay)("MuiLink",e)}const Hh=(0,z.A)("MuiLink",["root","underlineNone","underlineHover","underlineAlways","button","focusVisible"]);var Gh=n(8343);const qh={primary:"primary.main",textPrimary:"text.primary",secondary:"secondary.main",textSecondary:"text.secondary",error:"error.main"},Kh=e=>{let{theme:t,ownerState:n}=e;const r=(e=>qh[e]||e)(n.color),o=(0,Gh.Yn)(t,"palette.".concat(r),!1)||n.color,i=(0,Gh.Yn)(t,"palette.".concat(r,"Channel"));return"vars"in t&&i?"rgba(".concat(i," / 0.4)"):(0,m.X4)(o,.4)},$h=["className","color","component","onBlur","onFocus","TypographyClasses","underline","variant","sx"],Yh=(0,g.Ay)(Uh,{name:"MuiLink",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["underline".concat((0,I.A)(n.underline))],"button"===n.component&&t.button]}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({},"none"===n.underline&&{textDecoration:"none"},"hover"===n.underline&&{textDecoration:"none","&:hover":{textDecoration:"underline"}},"always"===n.underline&&(0,p.A)({textDecoration:"underline"},"inherit"!==n.color&&{textDecorationColor:Kh({theme:t,ownerState:n})},{"&:hover":{textDecorationColor:"inherit"}}),"button"===n.component&&{position:"relative",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none","&::-moz-focus-inner":{borderStyle:"none"},["&.".concat(Hh.focusVisible)]:{outline:"auto"}})}),Xh=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiLink"}),{className:r,color:i="primary",component:a="a",onBlur:s,onFocus:l,TypographyClasses:c,underline:u="always",variant:m="inherit",sx:g}=n,v=(0,d.A)(n,$h),{isFocusVisibleRef:b,onBlur:x,onFocus:k,ref:A}=(0,U.A)(),[S,_]=o.useState(!1),w=(0,B.A)(t,A),T=(0,p.A)({},n,{color:i,component:a,focusVisible:S,underline:u,variant:m}),E=(e=>{const{classes:t,component:n,focusVisible:r,underline:o}=e,i={root:["root","underline".concat((0,I.A)(o)),"button"===n&&"button",r&&"focusVisible"]};return(0,f.A)(i,Vh,t)})(T);return(0,R.jsx)(Yh,(0,p.A)({color:i,className:(0,h.A)(E.root,r),classes:c,component:a,onBlur:e=>{x(e),!1===b.current&&_(!1),s&&s(e)},onFocus:e=>{k(e),!0===b.current&&_(!0),l&&l(e)},ref:w,ownerState:T,variant:m,sx:[...Object.keys(qh).includes(i)?[]:[{color:i}],...Array.isArray(g)?g:[g]]},v))}),Jh=Xh;function Qh(e){return(0,P.Ay)("MuiDivider",e)}const Zh=(0,z.A)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"]),ef=["absolute","children","className","component","flexItem","light","orientation","role","textAlign","variant"],tf=(0,g.Ay)("div",{name:"MuiDivider",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.absolute&&t.absolute,t[n.variant],n.light&&t.light,"vertical"===n.orientation&&t.vertical,n.flexItem&&t.flexItem,n.children&&t.withChildren,n.children&&"vertical"===n.orientation&&t.withChildrenVertical,"right"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignRight,"left"===n.textAlign&&"vertical"!==n.orientation&&t.textAlignLeft]}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({margin:0,flexShrink:0,borderWidth:0,borderStyle:"solid",borderColor:(t.vars||t).palette.divider,borderBottomWidth:"thin"},n.absolute&&{position:"absolute",bottom:0,left:0,width:"100%"},n.light&&{borderColor:t.vars?"rgba(".concat(t.vars.palette.dividerChannel," / 0.08)"):(0,m.X4)(t.palette.divider,.08)},"inset"===n.variant&&{marginLeft:72},"middle"===n.variant&&"horizontal"===n.orientation&&{marginLeft:t.spacing(2),marginRight:t.spacing(2)},"middle"===n.variant&&"vertical"===n.orientation&&{marginTop:t.spacing(1),marginBottom:t.spacing(1)},"vertical"===n.orientation&&{height:"100%",borderBottomWidth:0,borderRightWidth:"thin"},n.flexItem&&{alignSelf:"stretch",height:"auto"})},e=>{let{ownerState:t}=e;return(0,p.A)({},t.children&&{display:"flex",whiteSpace:"nowrap",textAlign:"center",border:0,borderTopStyle:"solid",borderLeftStyle:"solid","&::before, &::after":{content:'""',alignSelf:"center"}})},e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({},n.children&&"vertical"!==n.orientation&&{"&::before, &::after":{width:"100%",borderTop:"thin solid ".concat((t.vars||t).palette.divider),borderTopStyle:"inherit"}})},e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({},n.children&&"vertical"===n.orientation&&{flexDirection:"column","&::before, &::after":{height:"100%",borderLeft:"thin solid ".concat((t.vars||t).palette.divider),borderLeftStyle:"inherit"}})},e=>{let{ownerState:t}=e;return(0,p.A)({},"right"===t.textAlign&&"vertical"!==t.orientation&&{"&::before":{width:"90%"},"&::after":{width:"10%"}},"left"===t.textAlign&&"vertical"!==t.orientation&&{"&::before":{width:"10%"},"&::after":{width:"90%"}})}),nf=(0,g.Ay)("span",{name:"MuiDivider",slot:"Wrapper",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.wrapper,"vertical"===n.orientation&&t.wrapperVertical]}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({display:"inline-block",paddingLeft:"calc(".concat(t.spacing(1)," * 1.2)"),paddingRight:"calc(".concat(t.spacing(1)," * 1.2)")},"vertical"===n.orientation&&{paddingTop:"calc(".concat(t.spacing(1)," * 1.2)"),paddingBottom:"calc(".concat(t.spacing(1)," * 1.2)")})}),rf=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiDivider"}),{absolute:r=!1,children:o,className:i,component:a=(o?"div":"hr"),flexItem:s=!1,light:l=!1,orientation:c="horizontal",role:u=("hr"!==a?"separator":void 0),textAlign:m="center",variant:g="fullWidth"}=n,v=(0,d.A)(n,ef),b=(0,p.A)({},n,{absolute:r,component:a,flexItem:s,light:l,orientation:c,role:u,textAlign:m,variant:g}),x=(e=>{const{absolute:t,children:n,classes:r,flexItem:o,light:i,orientation:a,textAlign:s,variant:l}=e,c={root:["root",t&&"absolute",l,i&&"light","vertical"===a&&"vertical",o&&"flexItem",n&&"withChildren",n&&"vertical"===a&&"withChildrenVertical","right"===s&&"vertical"!==a&&"textAlignRight","left"===s&&"vertical"!==a&&"textAlignLeft"],wrapper:["wrapper","vertical"===a&&"wrapperVertical"]};return(0,f.A)(c,Qh,r)})(b);return(0,R.jsx)(tf,(0,p.A)({as:a,className:(0,h.A)(x.root,i),role:u,ref:t,ownerState:b},v,{children:o?(0,R.jsx)(nf,{className:x.wrapper,ownerState:b,children:o}):null}))});rf.muiSkipListHighlight=!0;const of=rf;function af(){return(0,R.jsxs)("center",{children:[(0,R.jsx)(of,{children:(0,R.jsx)(Jh,{href:"https://github.com/fishjar/kiss-translator",children:"KISS Translator v".concat("2.0.29")})}),(0,R.jsx)(Rh,{})]})}const sf=(0,o.createContext)({setting:Xr,updateSetting:()=>{},reloadSetting:()=>{}});function lf(e){let{children:t,context:n}=e;const r=(0,o.useMemo)(()=>"options"===n,[n]),{data:i,isLoading:a,update:s,reload:l}=gh(co,Xr,so),c=!!i,d=Er(i),p=null===i||void 0===i?void 0:i.logLevel;(0,o.useEffect)(()=>{!c||d>=3||s(e=>!e||Er(e)>=3?e:Ir(e))},[c,d,s]),(0,o.useEffect)(()=>{"boolean"===typeof(null===i||void 0===i?void 0:i.darkMode)&&s(e=>u(u({},e),{},{darkMode:e.darkMode?"dark":"light"}))},[null===i||void 0===i?void 0:i.darkMode,s]),(0,o.useEffect)(()=>{r&&(async()=>{try{Pr.setLevel(p),zo&&await xi("set_loglevel",p)}catch(e){Pr.error("Failed to fetch log level, using default.",e)}})()},[r,p]);const h=(0,o.useCallback)(e=>{s(e),Ma(so)},[s]),f=(0,o.useCallback)(e=>async t=>{h(n=>u(u({},n),{},{[e]:u(u({},(null===n||void 0===n?void 0:n[e])||{}),t)}))},[h]),m=(0,o.useMemo)(()=>({context:n,setting:i,updateSetting:h,updateChild:f,reloadSetting:l}),[n,i,h,f,l]);return a?r?(0,R.jsx)(af,{}):null:i?(0,R.jsx)(sf.Provider,{value:m,children:t}):r?(0,R.jsx)("center",{children:(0,R.jsxs)(Ue,{severity:"error",sx:{maxWidth:600,margin:"60px auto"},children:[(0,R.jsx)("p",{children:"\u6570\u636e\u52a0\u8f7d\u51fa\u9519\uff0c\u8bf7\u5237\u65b0\u9875\u9762\u6216\u5378\u8f7d\u540e\u91cd\u65b0\u5b89\u88c5\u3002"}),(0,R.jsx)("p",{children:"Data loading error, please refresh the page or uninstall and reinstall."})]})}):null}function cf(){return(0,o.useContext)(sf)}var uf=n(6966);const df=o.createContext(null);function pf(){return o.useContext(df)}const hf="function"===typeof Symbol&&Symbol.for?Symbol.for("mui.nested"):"__THEME_NESTED__";const ff=function(e){const{children:t,theme:n}=e,r=pf(),i=o.useMemo(()=>{const e=null===r?n:function(e,t){if("function"===typeof t)return t(e);return(0,p.A)({},e,t)}(r,n);return null!=e&&(e[hf]=null!==r),e},[n,r]);return(0,R.jsx)(df.Provider,{value:i,children:t})};var mf=n(457);const gf=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;const t=o.useContext(mf.T);return t&&(n=t,0!==Object.keys(n).length)?t:e;var n},yf=["value"],vf=o.createContext();const bf=()=>{const e=o.useContext(vf);return null!=e&&e},xf=function(e){let{value:t}=e,n=(0,d.A)(e,yf);return(0,R.jsx)(vf.Provider,(0,p.A)({value:null==t||t},n))};var kf=n(5779),Af=n(6489),Sf=n(7461),_f=n(1876),wf=n(3780),Tf=n(2979);const Ef=(0,Tf.A)();const Cf=function(){return gf(arguments.length>0&&void 0!==arguments[0]?arguments[0]:Ef)};function If(e){const t=(0,_f.internal_serializeStyles)(e);return e!==t&&t.styles?(t.styles.match(/^@layer\s+[^{]*$/)||(t.styles="@layer global{".concat(t.styles,"}")),t):e}const Lf=function(e){let{styles:t,themeId:n,defaultTheme:r={}}=e;const o=Cf(r),i=n&&o[n]||o;let a="function"===typeof t?t(i):t;return i.modularCssLayers&&(a=Array.isArray(a)?a.map(e=>If("function"===typeof e?e(i):e)):If(a)),(0,R.jsx)(wf.A,{styles:a})};const zf={};function Pf(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];return o.useMemo(()=>{const o=e&&t[e]||t;if("function"===typeof n){const i=n(o),a=e?(0,p.A)({},t,{[e]:i}):i;return r?()=>a:a}return e?(0,p.A)({},t,{[e]:n}):(0,p.A)({},t,n)},[e,t,n,r])}const Nf=function(e){const{children:t,theme:n,themeId:r}=e,o=gf(zf),i=pf()||zf,a=Pf(r,o,n),s=Pf(r,i,n,!0),l="rtl"===a.direction,c=function(e){const t=gf(),n=(0,Sf.A)()||"",{modularCssLayers:r}=e;let o="mui.global, mui.components, mui.theme, mui.custom, mui.sx";return o=r&&null===t?"string"===typeof r?r.replace(/mui(?!\.)/g,o):"@layer ".concat(o,";"):"",(0,Af.A)(()=>{const e=document.querySelector("head");if(!e)return;const t=e.firstChild;if(o){var r;if(t&&null!=(r=t.hasAttribute)&&r.call(t,"data-mui-layer-order")&&t.getAttribute("data-mui-layer-order")===n)return;const i=document.createElement("style");i.setAttribute("data-mui-layer-order",n),i.textContent=o,e.prepend(i)}else{var i;null==(i=e.querySelector('style[data-mui-layer-order="'.concat(n,'"]')))||i.remove()}},[o,n]),o?(0,R.jsx)(Lf,{styles:o}):null}(a);return(0,R.jsx)(ff,{theme:s,children:(0,R.jsx)(mf.T.Provider,{value:a,children:(0,R.jsx)(xf,{value:l,children:(0,R.jsxs)(kf.A,{value:null==a?void 0:a.components,children:[c,t]})})})})};var Rf=n(5863);const jf=["theme"];function Of(e){let{theme:t}=e,n=(0,d.A)(e,jf);const r=t[Rf.A];let o=r||t;return"function"!==typeof t&&(r&&!r.vars?o=(0,p.A)({},r,{vars:null}):t&&!t.vars&&(o=(0,p.A)({},t,{vars:null}))),(0,R.jsx)(Nf,(0,p.A)({},n,{themeId:r?Rf.A:void 0,theme:o}))}var Mf=n(1210);const Df=function(e){return(0,R.jsx)(Lf,(0,p.A)({},e,{defaultTheme:Mf.A,themeId:Rf.A}))},Ff=(e,t)=>(0,p.A)({WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",boxSizing:"border-box",WebkitTextSizeAdjust:"100%"},t&&!e.vars&&{colorScheme:e.palette.mode}),Bf=e=>(0,p.A)({color:(e.vars||e).palette.text.primary},e.typography.body1,{backgroundColor:(e.vars||e).palette.background.default,"@media print":{backgroundColor:(e.vars||e).palette.common.white}});const Wf=function(e){const t=(0,y.b)({props:e,name:"MuiCssBaseline"}),{children:n,enableColorScheme:r=!1}=t;return(0,R.jsxs)(o.Fragment,{children:[(0,R.jsx)(Df,{styles:e=>function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];var n;const r={};t&&e.colorSchemes&&Object.entries(e.colorSchemes).forEach(t=>{let[n,o]=t;var i;r[e.getColorSchemeSelector(n).replace(/\s*&/,"")]={colorScheme:null==(i=o.palette)?void 0:i.mode}});let o=(0,p.A)({html:Ff(e,t),"*, *::before, *::after":{boxSizing:"inherit"},"strong, b":{fontWeight:e.typography.fontWeightBold},body:(0,p.A)({margin:0},Bf(e),{"&::backdrop":{backgroundColor:(e.vars||e).palette.background.default}})},r);const i=null==(n=e.components)||null==(n=n.MuiCssBaseline)?void 0:n.styleOverrides;return i&&(o=[o,i]),o}(e,r)}),n]})};function Uf(e){let{children:t,options:n={},styles:r={}}=e;const{darkMode:i}=function(){const{setting:{darkMode:e},updateSetting:t}=cf(),n=(0,o.useCallback)(()=>{t({darkMode:{light:"dark",dark:"auto",auto:"light"}[e]||"light"})},[e,t]);return{darkMode:e,toggleDarkMode:n}}(),[a,s]=(0,o.useState)(qe);(0,o.useEffect)(()=>{if("function"!==typeof window.matchMedia)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),t=()=>{s(e.matches?Ke:qe)};return t(),e.addEventListener("change",t),()=>e.removeEventListener("change",t)},[]);const l=(0,o.useMemo)(()=>{let e=16;try{const t=window.getComputedStyle(document.documentElement).fontSize;e=parseInt(t.replace("px",""))}catch(r){}const t="dark"===i||"auto"===i&&a===Ke;return(0,uf.A)(u({palette:{mode:t?Ke:qe},typography:{htmlFontSize:e}},n))},[i,n,a]);return(0,R.jsxs)(Of,{theme:l,children:[(0,R.jsx)(Wf,{}),(0,R.jsx)(Df,{styles:r}),t]})}var Vf=n(1985);const Hf=["className","component"];var Gf=n(7599);const qf=(0,z.A)("MuiBox",["root"]),Kf=(0,uf.A)(),$f=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{themeId:t,defaultTheme:n,defaultClassName:r="MuiBox-root",generateClassName:i}=e,a=(0,_f.default)("div",{shouldForwardProp:e=>"theme"!==e&&"sx"!==e&&"as"!==e})(Vf.A);return o.forwardRef(function(e,o){const s=Cf(n),l=(0,jh.A)(e),{className:c,component:u="div"}=l,f=(0,d.A)(l,Hf);return(0,R.jsx)(a,(0,p.A)({as:u,ref:o,className:(0,h.A)(c,i?i(r):r),theme:t&&s[t]||s},f))})}({themeId:Rf.A,defaultTheme:Kf,defaultClassName:qf.root,generateClassName:Gf.A.generate}),Yf=$f;var Xf=n(6997);const Jf=["ownerState"],Qf=["variants"],Zf=["name","slot","skipVariantsResolver","skipSx","overridesResolver"];function em(e){return"ownerState"!==e&&"theme"!==e&&"sx"!==e&&"as"!==e}function tm(e,t){return t&&e&&"object"===typeof e&&e.styles&&!e.styles.startsWith("@layer")&&(e.styles="@layer ".concat(t,"{").concat(String(e.styles),"}")),e}const nm=(0,Tf.A)(),rm=e=>e?e.charAt(0).toLowerCase()+e.slice(1):e;function om(e){let{defaultTheme:t,theme:n,themeId:r}=e;return o=n,0===Object.keys(o).length?t:n[r]||n;var o}function im(e){return e?(t,n)=>n[e]:null}function am(e,t,n){let{ownerState:r}=t,o=(0,d.A)(t,Jf);const i="function"===typeof e?e((0,p.A)({ownerState:r},o)):e;if(Array.isArray(i))return i.flatMap(e=>am(e,(0,p.A)({ownerState:r},o),n));if(i&&"object"===typeof i&&Array.isArray(i.variants)){const{variants:e=[]}=i;let t=(0,d.A)(i,Qf);return e.forEach(e=>{let i=!0;if("function"===typeof e.props?i=e.props((0,p.A)({ownerState:r},o,r)):Object.keys(e.props).forEach(t=>{(null==r?void 0:r[t])!==e.props[t]&&o[t]!==e.props[t]&&(i=!1)}),i){Array.isArray(t)||(t=[t]);const i="function"===typeof e.style?e.style((0,p.A)({ownerState:r},o,r)):e.style;t.push(n?tm((0,_f.internal_serializeStyles)(i),n):i)}}),t}return n?tm((0,_f.internal_serializeStyles)(i),n):i}const sm=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{themeId:t,defaultTheme:n=nm,rootShouldForwardProp:r=em,slotShouldForwardProp:o=em}=e,i=e=>(0,Vf.A)((0,p.A)({},e,{theme:om((0,p.A)({},e,{defaultTheme:n,themeId:t}))}));return i.__mui_systemSx=!0,function(e){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};(0,_f.internal_processStyles)(e,e=>e.filter(e=>!(null!=e&&e.__mui_systemSx)));const{name:s,slot:l,skipVariantsResolver:c,skipSx:u,overridesResolver:h=im(rm(l))}=a,f=(0,d.A)(a,Zf),m=s&&s.startsWith("Mui")||l?"components":"custom",g=void 0!==c?c:l&&"Root"!==l&&"root"!==l||!1,y=u||!1;let v=em;"Root"===l||"root"===l?v=r:l?v=o:function(e){return"string"===typeof e&&e.charCodeAt(0)>96}(e)&&(v=void 0);const b=(0,_f.default)(e,(0,p.A)({shouldForwardProp:v,label:undefined},f)),x=e=>"function"===typeof e&&e.__emotion_real!==e||(0,Xf.Q)(e)?r=>{const o=om({theme:r.theme,defaultTheme:n,themeId:t});return am(e,(0,p.A)({},r,{theme:o}),o.modularCssLayers?m:void 0)}:e,k=function(r){let o=x(r);for(var a=arguments.length,l=new Array(a>1?a-1:0),c=1;c{const r=om((0,p.A)({},e,{defaultTheme:n,themeId:t}));if(!r.components||!r.components[s]||!r.components[s].styleOverrides)return null;const o=r.components[s].styleOverrides,i={};return Object.entries(o).forEach(t=>{let[n,o]=t;i[n]=am(o,(0,p.A)({},e,{theme:r}),r.modularCssLayers?"theme":void 0)}),h(e,i)}),s&&!g&&u.push(e=>{var r;const o=om((0,p.A)({},e,{defaultTheme:n,themeId:t}));return am({variants:null==o||null==(r=o.components)||null==(r=r[s])?void 0:r.variants},(0,p.A)({},e,{theme:o}),o.modularCssLayers?"theme":void 0)}),y||u.push(i);const d=u.length-l.length;if(Array.isArray(r)&&d>0){const e=new Array(d).fill("");o=[...r,...e],o.raw=[...r.raw,...e]}const f=b(o,...u);return e.muiName&&(f.muiName=e.muiName),f};return b.withConfig&&(k.withConfig=b.withConfig),k}}(),lm=sm;var cm=n(3699);function um(e){let{props:t,name:n,defaultTheme:r,themeId:o}=e,i=Cf(r);o&&(i=i[o]||i);const a=function(e){const{theme:t,name:n,props:r}=e;return t&&t.components&&t.components[n]&&t.components[n].defaultProps?(0,cm.A)(t.components[n].defaultProps,r):r}({theme:i,name:n,props:t});return a}var dm=n(3830),pm=n(4262);const hm=["component","direction","spacing","divider","children","className","useFlexGap"],fm=(0,Tf.A)(),mm=lm("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root});function gm(e){return um({props:e,name:"MuiStack",defaultTheme:fm})}function ym(e,t){const n=o.Children.toArray(e).filter(Boolean);return n.reduce((e,r,i)=>(e.push(r),i{let{ownerState:t,theme:n}=e,r=(0,p.A)({display:"flex",flexDirection:"column"},(0,dm.NI)({theme:n},(0,dm.kW)({values:t.direction,breakpoints:n.breakpoints.values}),e=>({flexDirection:e})));if(t.spacing){const e=(0,pm.LX)(n),o=Object.keys(n.breakpoints.values).reduce((e,n)=>(("object"===typeof t.spacing&&null!=t.spacing[n]||"object"===typeof t.direction&&null!=t.direction[n])&&(e[n]=!0),e),{}),i=(0,dm.kW)({values:t.direction,base:o}),a=(0,dm.kW)({values:t.spacing,base:o});"object"===typeof i&&Object.keys(i).forEach((e,t,n)=>{if(!i[e]){const r=t>0?i[n[t-1]]:"column";i[e]=r}});const s=(n,r)=>{return t.useFlexGap?{gap:(0,pm._W)(e,n)}:{"& > :not(style):not(style)":{margin:0},"& > :not(style) ~ :not(style)":{["margin".concat((o=r?i[r]:t.direction,{row:"Left","row-reverse":"Right",column:"Top","column-reverse":"Bottom"}[o]))]:(0,pm._W)(e,n)}};var o};r=(0,Xf.A)(r,(0,dm.NI)({theme:n},a,s))}return r=(0,dm.iZ)(n.breakpoints,r),r};const bm=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{createStyledComponent:t=mm,useThemeProps:n=gm,componentName:r="MuiStack"}=e,i=t(vm),a=o.forwardRef(function(e,t){const o=n(e),a=(0,jh.A)(o),{component:s="div",direction:l="column",spacing:c=0,divider:u,children:m,className:g,useFlexGap:y=!1}=a,v=(0,d.A)(a,hm),b={direction:l,spacing:c,useFlexGap:y},x=(0,f.A)({root:["root"]},e=>(0,P.Ay)(r,e),{});return(0,R.jsx)(i,(0,p.A)({as:s,ownerState:b,ref:t,className:(0,h.A)(x.root,g)},v,{children:u?ym(m,u):m}))});return a}({createStyledComponent:(0,g.Ay)("div",{name:"MuiStack",slot:"Root",overridesResolver:(e,t)=>t.root}),useThemeProps:e=>(0,y.b)({props:e,name:"MuiStack"})}),xm=bm;var km=n(4539);function Am(e){return(0,P.Ay)("MuiButton",e)}const Sm=(0,z.A)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","colorPrimary","colorSecondary","colorSuccess","colorError","colorInfo","colorWarning","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","icon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]);const _m=o.createContext({});const wm=o.createContext(void 0),Tm=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],Em=e=>(0,p.A)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),Cm=(0,g.Ay)(Ae,{shouldForwardProp:e=>(0,km.A)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t[n.variant],t["".concat(n.variant).concat((0,I.A)(n.color))],t["size".concat((0,I.A)(n.size))],t["".concat(n.variant,"Size").concat((0,I.A)(n.size))],"inherit"===n.color&&t.colorInherit,n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth]}})(e=>{let{theme:t,ownerState:n}=e;var r,o;const i="light"===t.palette.mode?t.palette.grey[300]:t.palette.grey[800],a="light"===t.palette.mode?t.palette.grey.A100:t.palette.grey[700];return(0,p.A)({},t.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(t.vars||t).shape.borderRadius,transition:t.transitions.create(["background-color","box-shadow","border-color","color"],{duration:t.transitions.duration.short}),"&:hover":(0,p.A)({textDecoration:"none",backgroundColor:t.vars?"rgba(".concat(t.vars.palette.text.primaryChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,m.X4)(t.palette.text.primary,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===n.variant&&"inherit"!==n.color&&{backgroundColor:t.vars?"rgba(".concat(t.vars.palette[n.color].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,m.X4)(t.palette[n.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===n.variant&&"inherit"!==n.color&&{border:"1px solid ".concat((t.vars||t).palette[n.color].main),backgroundColor:t.vars?"rgba(".concat(t.vars.palette[n.color].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,m.X4)(t.palette[n.color].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===n.variant&&{backgroundColor:t.vars?t.vars.palette.Button.inheritContainedHoverBg:a,boxShadow:(t.vars||t).shadows[4],"@media (hover: none)":{boxShadow:(t.vars||t).shadows[2],backgroundColor:(t.vars||t).palette.grey[300]}},"contained"===n.variant&&"inherit"!==n.color&&{backgroundColor:(t.vars||t).palette[n.color].dark,"@media (hover: none)":{backgroundColor:(t.vars||t).palette[n.color].main}}),"&:active":(0,p.A)({},"contained"===n.variant&&{boxShadow:(t.vars||t).shadows[8]}),["&.".concat(Sm.focusVisible)]:(0,p.A)({},"contained"===n.variant&&{boxShadow:(t.vars||t).shadows[6]}),["&.".concat(Sm.disabled)]:(0,p.A)({color:(t.vars||t).palette.action.disabled},"outlined"===n.variant&&{border:"1px solid ".concat((t.vars||t).palette.action.disabledBackground)},"contained"===n.variant&&{color:(t.vars||t).palette.action.disabled,boxShadow:(t.vars||t).shadows[0],backgroundColor:(t.vars||t).palette.action.disabledBackground})},"text"===n.variant&&{padding:"6px 8px"},"text"===n.variant&&"inherit"!==n.color&&{color:(t.vars||t).palette[n.color].main},"outlined"===n.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===n.variant&&"inherit"!==n.color&&{color:(t.vars||t).palette[n.color].main,border:t.vars?"1px solid rgba(".concat(t.vars.palette[n.color].mainChannel," / 0.5)"):"1px solid ".concat((0,m.X4)(t.palette[n.color].main,.5))},"contained"===n.variant&&{color:t.vars?t.vars.palette.text.primary:null==(r=(o=t.palette).getContrastText)?void 0:r.call(o,t.palette.grey[300]),backgroundColor:t.vars?t.vars.palette.Button.inheritContainedBg:i,boxShadow:(t.vars||t).shadows[2]},"contained"===n.variant&&"inherit"!==n.color&&{color:(t.vars||t).palette[n.color].contrastText,backgroundColor:(t.vars||t).palette[n.color].main},"inherit"===n.color&&{color:"inherit",borderColor:"currentColor"},"small"===n.size&&"text"===n.variant&&{padding:"4px 5px",fontSize:t.typography.pxToRem(13)},"large"===n.size&&"text"===n.variant&&{padding:"8px 11px",fontSize:t.typography.pxToRem(15)},"small"===n.size&&"outlined"===n.variant&&{padding:"3px 9px",fontSize:t.typography.pxToRem(13)},"large"===n.size&&"outlined"===n.variant&&{padding:"7px 21px",fontSize:t.typography.pxToRem(15)},"small"===n.size&&"contained"===n.variant&&{padding:"4px 10px",fontSize:t.typography.pxToRem(13)},"large"===n.size&&"contained"===n.variant&&{padding:"8px 22px",fontSize:t.typography.pxToRem(15)},n.fullWidth&&{width:"100%"})},e=>{let{ownerState:t}=e;return t.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},["&.".concat(Sm.focusVisible)]:{boxShadow:"none"},"&:active":{boxShadow:"none"},["&.".concat(Sm.disabled)]:{boxShadow:"none"}}}),Im=(0,g.Ay)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.startIcon,t["iconSize".concat((0,I.A)(n.size))]]}})(e=>{let{ownerState:t}=e;return(0,p.A)({display:"inherit",marginRight:8,marginLeft:-4},"small"===t.size&&{marginLeft:-2},Em(t))}),Lm=(0,g.Ay)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.endIcon,t["iconSize".concat((0,I.A)(n.size))]]}})(e=>{let{ownerState:t}=e;return(0,p.A)({display:"inherit",marginRight:-4,marginLeft:8},"small"===t.size&&{marginRight:-2},Em(t))}),zm=o.forwardRef(function(e,t){const n=o.useContext(_m),r=o.useContext(wm),i=(0,cm.A)(n,e),a=(0,y.b)({props:i,name:"MuiButton"}),{children:s,color:l="primary",component:c="button",className:u,disabled:m=!1,disableElevation:g=!1,disableFocusRipple:v=!1,endIcon:b,focusVisibleClassName:x,fullWidth:k=!1,size:A="medium",startIcon:S,type:_,variant:w="text"}=a,T=(0,d.A)(a,Tm),E=(0,p.A)({},a,{color:l,component:c,disabled:m,disableElevation:g,disableFocusRipple:v,fullWidth:k,size:A,type:_,variant:w}),C=(e=>{const{color:t,disableElevation:n,fullWidth:r,size:o,variant:i,classes:a}=e,s={root:["root",i,"".concat(i).concat((0,I.A)(t)),"size".concat((0,I.A)(o)),"".concat(i,"Size").concat((0,I.A)(o)),"color".concat((0,I.A)(t)),n&&"disableElevation",r&&"fullWidth"],label:["label"],startIcon:["icon","startIcon","iconSize".concat((0,I.A)(o))],endIcon:["icon","endIcon","iconSize".concat((0,I.A)(o))]},l=(0,f.A)(s,Am,a);return(0,p.A)({},a,l)})(E),L=S&&(0,R.jsx)(Im,{className:C.startIcon,ownerState:E,children:S}),z=b&&(0,R.jsx)(Lm,{className:C.endIcon,ownerState:E,children:b}),P=r||"";return(0,R.jsxs)(Cm,(0,p.A)({ownerState:E,className:(0,h.A)(n.className,C.root,u,P),component:c,disabled:m,focusRipple:!v,focusVisibleClassName:(0,h.A)(C.focusVisible,x),ref:t,type:_},T,{classes:C,children:[L,s,z]}))}),Pm=zm,Nm=["execute"],Rm=()=>{const[e,t]=(0,o.useState)(null),[n,r]=(0,o.useState)(!1),[i,a]=(0,o.useState)(null),s=(0,o.useCallback)(async function(e){if(e){r(!0),a(null);try{for(var n=arguments.length,o=new Array(n>1?n-1:0),i=1;i{t(null),r(!1),a(null)},[])}},jm=(e,t)=>{const n=Rm(),{execute:r}=n,i=qo(n,Nm);return(0,o.useEffect)(()=>{e&&r(e,t)},[r,e,t]),u({},i)},Om=e=>function(t){return function(e,t){var n,r;let o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";return null!==(n=null===oo||void 0===oo||null===(r=oo[t])||void 0===r?void 0:r[e])&&void 0!==n?n:o}(e,t,arguments.length>1&&void 0!==arguments[1]?arguments[1]:"")},Mm=()=>{const{setting:{uiLang:e}}=cf();return Om(e)};var Dm=n(8201),Fm=n(8902),Bm=n(9079),Wm=n(2266);function Um(e){let{onClose:t,toggleTab:n,openSeparateWindow:r}=e;const o=Mm();return(0,R.jsxs)(xm,{direction:"row",justifyContent:"space-between",alignItems:"center",spacing:2,children:[(0,R.jsxs)(xm,{direction:"row",justifyContent:"flex-start",alignItems:"center",children:[(0,R.jsx)(Ce,{onClick:()=>{window.open("https://github.com/fishjar/kiss-translator","_blank")},children:(0,R.jsx)(Fm.A,{})}),(0,R.jsx)(Uh,{component:"div",sx:{userSelect:"none",WebkitUserSelect:"none",fontWeight:"bold"},children:"".concat("KISS Translator"," v").concat("2.0.29")})]}),t?(0,R.jsx)(Ce,{onClick:()=>{t()},children:(0,R.jsx)(Dm.A,{})}):(0,R.jsxs)(xm,{direction:"row",alignItems:"center",title:o("toggle_transbox"),children:[(0,R.jsx)(Ce,{onClick:n,children:(0,R.jsx)(Bm.A,{})}),(0,R.jsx)(Ce,{onClick:r,title:o("open_separate_window"),children:(0,R.jsx)(Wm.A,{})})]})]})}const Vm=o.createContext({});var Hm=n(4077);const Gm=(0,z.A)("MuiListItemIcon",["root","alignItemsFlexStart"]);const qm=(0,z.A)("MuiListItemText",["root","multiline","dense","inset","primary","secondary"]);function Km(e){return(0,P.Ay)("MuiMenuItem",e)}const $m=(0,z.A)("MuiMenuItem",["root","focusVisible","dense","disabled","divider","gutters","selected"]),Ym=["autoFocus","component","dense","divider","disableGutters","focusVisibleClassName","role","tabIndex","className"],Xm=(0,g.Ay)(Ae,{shouldForwardProp:e=>(0,km.A)(e)||"classes"===e,name:"MuiMenuItem",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.dense&&t.dense,n.divider&&t.divider,!n.disableGutters&&t.gutters]}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({},t.typography.body1,{display:"flex",justifyContent:"flex-start",alignItems:"center",position:"relative",textDecoration:"none",minHeight:48,paddingTop:6,paddingBottom:6,boxSizing:"border-box",whiteSpace:"nowrap"},!n.disableGutters&&{paddingLeft:16,paddingRight:16},n.divider&&{borderBottom:"1px solid ".concat((t.vars||t).palette.divider),backgroundClip:"padding-box"},{"&:hover":{textDecoration:"none",backgroundColor:(t.vars||t).palette.action.hover,"@media (hover: none)":{backgroundColor:"transparent"}},["&.".concat($m.selected)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,m.X4)(t.palette.primary.main,t.palette.action.selectedOpacity),["&.".concat($m.focusVisible)]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.focusOpacity,"))"):(0,m.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.focusOpacity)}},["&.".concat($m.selected,":hover")]:{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / calc(").concat(t.vars.palette.action.selectedOpacity," + ").concat(t.vars.palette.action.hoverOpacity,"))"):(0,m.X4)(t.palette.primary.main,t.palette.action.selectedOpacity+t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.primary.mainChannel," / ").concat(t.vars.palette.action.selectedOpacity,")"):(0,m.X4)(t.palette.primary.main,t.palette.action.selectedOpacity)}},["&.".concat($m.focusVisible)]:{backgroundColor:(t.vars||t).palette.action.focus},["&.".concat($m.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity},["& + .".concat(Zh.root)]:{marginTop:t.spacing(1),marginBottom:t.spacing(1)},["& + .".concat(Zh.inset)]:{marginLeft:52},["& .".concat(qm.root)]:{marginTop:0,marginBottom:0},["& .".concat(qm.inset)]:{paddingLeft:36},["& .".concat(Gm.root)]:{minWidth:36}},!n.dense&&{[t.breakpoints.up("sm")]:{minHeight:"auto"}},n.dense&&(0,p.A)({minHeight:32,paddingTop:4,paddingBottom:4},t.typography.body2,{["& .".concat(Gm.root," svg")]:{fontSize:"1.25rem"}}))}),Jm=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiMenuItem"}),{autoFocus:r=!1,component:i="li",dense:a=!1,divider:s=!1,disableGutters:l=!1,focusVisibleClassName:c,role:u="menuitem",tabIndex:m,className:g}=n,v=(0,d.A)(n,Ym),b=o.useContext(Vm),x=o.useMemo(()=>({dense:a||b.dense||!1,disableGutters:l}),[b.dense,a,l]),k=o.useRef(null);(0,Hm.A)(()=>{r&&k.current&&k.current.focus()},[r]);const A=(0,p.A)({},n,{dense:x.dense,divider:s,disableGutters:l}),S=(e=>{const{disabled:t,dense:n,divider:r,disableGutters:o,selected:i,classes:a}=e,s={root:["root",n&&"dense",t&&"disabled",!o&&"gutters",r&&"divider",i&&"selected"]},l=(0,f.A)(s,Km,a);return(0,p.A)({},a,l)})(n),_=(0,B.A)(k,t);let w;return n.disabled||(w=void 0!==m?m:-1),(0,R.jsx)(Vm.Provider,{value:x,children:(0,R.jsx)(Xm,(0,p.A)({ref:_,role:u,tabIndex:w,component:i,focusVisibleClassName:(0,h.A)(S.focusVisible,c),className:(0,h.A)(S.root,g)},v,{ownerState:A,classes:S}))})});const Qm=o.createContext(void 0);function Zm(){return o.useContext(Qm)}function eg(e){return(0,P.Ay)("MuiFormControlLabel",e)}const tg=(0,z.A)("MuiFormControlLabel",["root","labelPlacementStart","labelPlacementTop","labelPlacementBottom","disabled","label","error","required","asterisk"]);function ng(e){let{props:t,states:n,muiFormControl:r}=e;return n.reduce((e,n)=>(e[n]=t[n],r&&"undefined"===typeof t[n]&&(e[n]=r[n]),e),{})}const rg=["checked","className","componentsProps","control","disabled","disableTypography","inputRef","label","labelPlacement","name","onChange","required","slotProps","value"],og=(0,g.Ay)("label",{name:"MuiFormControlLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(tg.label)]:t.label},t.root,t["labelPlacement".concat((0,I.A)(n.labelPlacement))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({display:"inline-flex",alignItems:"center",cursor:"pointer",verticalAlign:"middle",WebkitTapHighlightColor:"transparent",marginLeft:-11,marginRight:16,["&.".concat(tg.disabled)]:{cursor:"default"}},"start"===n.labelPlacement&&{flexDirection:"row-reverse",marginLeft:16,marginRight:-11},"top"===n.labelPlacement&&{flexDirection:"column-reverse",marginLeft:16},"bottom"===n.labelPlacement&&{flexDirection:"column",marginLeft:16},{["& .".concat(tg.label)]:{["&.".concat(tg.disabled)]:{color:(t.vars||t).palette.text.disabled}}})}),ig=(0,g.Ay)("span",{name:"MuiFormControlLabel",slot:"Asterisk",overridesResolver:(e,t)=>t.asterisk})(e=>{let{theme:t}=e;return{["&.".concat(tg.error)]:{color:(t.vars||t).palette.error.main}}}),ag=o.forwardRef(function(e,t){var n,r;const i=(0,y.b)({props:e,name:"MuiFormControlLabel"}),{className:a,componentsProps:s={},control:l,disabled:c,disableTypography:u,label:m,labelPlacement:g="end",required:v,slotProps:b={}}=i,x=(0,d.A)(i,rg),k=Zm(),A=null!=(n=null!=c?c:l.props.disabled)?n:null==k?void 0:k.disabled,S=null!=v?v:l.props.required,_={disabled:A,required:S};["checked","name","onChange","value","inputRef"].forEach(e=>{"undefined"===typeof l.props[e]&&"undefined"!==typeof i[e]&&(_[e]=i[e])});const w=ng({props:i,muiFormControl:k,states:["error"]}),T=(0,p.A)({},i,{disabled:A,labelPlacement:g,required:S,error:w.error}),E=(e=>{const{classes:t,disabled:n,labelPlacement:r,error:o,required:i}=e,a={root:["root",n&&"disabled","labelPlacement".concat((0,I.A)(r)),o&&"error",i&&"required"],label:["label",n&&"disabled"],asterisk:["asterisk",o&&"error"]};return(0,f.A)(a,eg,t)})(T),C=null!=(r=b.typography)?r:s.typography;let L=m;return null==L||L.type===Uh||u||(L=(0,R.jsx)(Uh,(0,p.A)({component:"span"},C,{className:(0,h.A)(E.label,null==C?void 0:C.className),children:L}))),(0,R.jsxs)(og,(0,p.A)({className:(0,h.A)(E.root,a),ownerState:T,ref:t},x,{children:[o.cloneElement(l,_),S?(0,R.jsxs)(xm,{display:"block",children:[L,(0,R.jsxs)(ig,{ownerState:T,"aria-hidden":!0,className:E.asterisk,children:["\u2009","*"]})]}):L]}))});var sg=n(2156);function lg(e){return(0,P.Ay)("PrivateSwitchBase",e)}(0,z.A)("PrivateSwitchBase",["root","checked","disabled","input","edgeStart","edgeEnd"]);const cg=["autoFocus","checked","checkedIcon","className","defaultChecked","disabled","disableFocusRipple","edge","icon","id","inputProps","inputRef","name","onBlur","onChange","onFocus","readOnly","required","tabIndex","type","value"],ug=(0,g.Ay)(Ae,{name:"MuiSwitchBase"})(e=>{let{ownerState:t}=e;return(0,p.A)({padding:9,borderRadius:"50%"},"start"===t.edge&&{marginLeft:"small"===t.size?-3:-12},"end"===t.edge&&{marginRight:"small"===t.size?-3:-12})}),dg=(0,g.Ay)("input",{name:"MuiSwitchBase",shouldForwardProp:km.A})({cursor:"inherit",position:"absolute",opacity:0,width:"100%",height:"100%",top:0,left:0,margin:0,padding:0,zIndex:1}),pg=o.forwardRef(function(e,t){const{autoFocus:n,checked:r,checkedIcon:o,className:i,defaultChecked:a,disabled:s,disableFocusRipple:l=!1,edge:c=!1,icon:u,id:m,inputProps:g,inputRef:y,name:v,onBlur:b,onChange:x,onFocus:k,readOnly:A,required:S=!1,tabIndex:_,type:w,value:T}=e,E=(0,d.A)(e,cg),[C,L]=(0,sg.A)({controlled:r,default:Boolean(a),name:"SwitchBase",state:"checked"}),z=Zm();let P=s;z&&"undefined"===typeof P&&(P=z.disabled);const N="checkbox"===w||"radio"===w,j=(0,p.A)({},e,{checked:C,disabled:P,disableFocusRipple:l,edge:c}),O=(e=>{const{classes:t,checked:n,disabled:r,edge:o}=e,i={root:["root",n&&"checked",r&&"disabled",o&&"edge".concat((0,I.A)(o))],input:["input"]};return(0,f.A)(i,lg,t)})(j);return(0,R.jsxs)(ug,(0,p.A)({component:"span",className:(0,h.A)(O.root,i),centerRipple:!0,focusRipple:!l,disabled:P,tabIndex:null,role:void 0,onFocus:e=>{k&&k(e),z&&z.onFocus&&z.onFocus(e)},onBlur:e=>{b&&b(e),z&&z.onBlur&&z.onBlur(e)},ownerState:j,ref:t},E,{children:[(0,R.jsx)(dg,(0,p.A)({autoFocus:n,checked:r,defaultChecked:a,className:O.input,disabled:P,id:N?m:void 0,name:v,onChange:e=>{if(e.nativeEvent.defaultPrevented)return;const t=e.target.checked;L(t),x&&x(e,t)},readOnly:A,ref:y,required:S,ownerState:j,tabIndex:_,type:w},"checkbox"===w&&void 0===T?{}:{value:T},g)),C?o:u]}))}),hg=pg;function fg(e){return(0,P.Ay)("MuiSwitch",e)}const mg=(0,z.A)("MuiSwitch",["root","edgeStart","edgeEnd","switchBase","colorPrimary","colorSecondary","sizeSmall","sizeMedium","checked","disabled","input","thumb","track"]),gg=["className","color","edge","size","sx"],yg=(0,g.Ay)("span",{name:"MuiSwitch",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.edge&&t["edge".concat((0,I.A)(n.edge))],t["size".concat((0,I.A)(n.size))]]}})({display:"inline-flex",width:58,height:38,overflow:"hidden",padding:12,boxSizing:"border-box",position:"relative",flexShrink:0,zIndex:0,verticalAlign:"middle","@media print":{colorAdjust:"exact"},variants:[{props:{edge:"start"},style:{marginLeft:-8}},{props:{edge:"end"},style:{marginRight:-8}},{props:{size:"small"},style:{width:40,height:24,padding:7,["& .".concat(mg.thumb)]:{width:16,height:16},["& .".concat(mg.switchBase)]:{padding:4,["&.".concat(mg.checked)]:{transform:"translateX(16px)"}}}}]}),vg=(0,g.Ay)(hg,{name:"MuiSwitch",slot:"SwitchBase",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.switchBase,{["& .".concat(mg.input)]:t.input},"default"!==n.color&&t["color".concat((0,I.A)(n.color))]]}})(e=>{let{theme:t}=e;return{position:"absolute",top:0,left:0,zIndex:1,color:t.vars?t.vars.palette.Switch.defaultColor:"".concat("light"===t.palette.mode?t.palette.common.white:t.palette.grey[300]),transition:t.transitions.create(["left","transform"],{duration:t.transitions.duration.shortest}),["&.".concat(mg.checked)]:{transform:"translateX(20px)"},["&.".concat(mg.disabled)]:{color:t.vars?t.vars.palette.Switch.defaultDisabledColor:"".concat("light"===t.palette.mode?t.palette.grey[100]:t.palette.grey[600])},["&.".concat(mg.checked," + .").concat(mg.track)]:{opacity:.5},["&.".concat(mg.disabled," + .").concat(mg.track)]:{opacity:t.vars?t.vars.opacity.switchTrackDisabled:"".concat("light"===t.palette.mode?.12:.2)},["& .".concat(mg.input)]:{left:"-100%",width:"300%"}}},e=>{let{theme:t}=e;return{"&:hover":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette.action.activeChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,m.X4)(t.palette.action.active,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},variants:[...Object.entries(t.palette).filter(e=>{let[,t]=e;return t.main&&t.light}).map(e=>{let[n]=e;return{props:{color:n},style:{["&.".concat(mg.checked)]:{color:(t.vars||t).palette[n].main,"&:hover":{backgroundColor:t.vars?"rgba(".concat(t.vars.palette[n].mainChannel," / ").concat(t.vars.palette.action.hoverOpacity,")"):(0,m.X4)(t.palette[n].main,t.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},["&.".concat(mg.disabled)]:{color:t.vars?t.vars.palette.Switch["".concat(n,"DisabledColor")]:"".concat("light"===t.palette.mode?(0,m.a)(t.palette[n].main,.62):(0,m.e$)(t.palette[n].main,.55))}},["&.".concat(mg.checked," + .").concat(mg.track)]:{backgroundColor:(t.vars||t).palette[n].main}}}})]}}),bg=(0,g.Ay)("span",{name:"MuiSwitch",slot:"Track",overridesResolver:(e,t)=>t.track})(e=>{let{theme:t}=e;return{height:"100%",width:"100%",borderRadius:7,zIndex:-1,transition:t.transitions.create(["opacity","background-color"],{duration:t.transitions.duration.shortest}),backgroundColor:t.vars?t.vars.palette.common.onBackground:"".concat("light"===t.palette.mode?t.palette.common.black:t.palette.common.white),opacity:t.vars?t.vars.opacity.switchTrack:"".concat("light"===t.palette.mode?.38:.3)}}),xg=(0,g.Ay)("span",{name:"MuiSwitch",slot:"Thumb",overridesResolver:(e,t)=>t.thumb})(e=>{let{theme:t}=e;return{boxShadow:(t.vars||t).shadows[1],backgroundColor:"currentColor",width:20,height:20,borderRadius:"50%"}}),kg=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiSwitch"}),{className:r,color:o="primary",edge:i=!1,size:a="medium",sx:s}=n,l=(0,d.A)(n,gg),c=(0,p.A)({},n,{color:o,edge:i,size:a}),u=(e=>{const{classes:t,edge:n,size:r,color:o,checked:i,disabled:a}=e,s={root:["root",n&&"edge".concat((0,I.A)(n)),"size".concat((0,I.A)(r))],switchBase:["switchBase","color".concat((0,I.A)(o)),i&&"checked",a&&"disabled"],thumb:["thumb"],track:["track"],input:["input"]},l=(0,f.A)(s,fg,t);return(0,p.A)({},t,l)})(c),m=(0,R.jsx)(xg,{className:u.thumb,ownerState:c});return(0,R.jsxs)(yg,{className:(0,h.A)(u.root,r),sx:s,ownerState:c,children:[(0,R.jsx)(vg,(0,p.A)({type:"checkbox",icon:m,checkedIcon:m,ref:t,ownerState:c},l,{classes:(0,p.A)({},u,{root:u.switchBase})})),(0,R.jsx)(bg,{className:u.track,ownerState:c})]})}),Ag=kg;function Sg(){const e=Cf(Mf.A);return e[Rf.A]||e}const _g=o.createContext();function wg(e){return(0,P.Ay)("MuiGrid",e)}const Tg=["auto",!0,1,2,3,4,5,6,7,8,9,10,11,12],Eg=(0,z.A)("MuiGrid",["root","container","item","zeroMinWidth",...[0,1,2,3,4,5,6,7,8,9,10].map(e=>"spacing-xs-".concat(e)),...["column-reverse","column","row-reverse","row"].map(e=>"direction-xs-".concat(e)),...["nowrap","wrap-reverse","wrap"].map(e=>"wrap-xs-".concat(e)),...Tg.map(e=>"grid-xs-".concat(e)),...Tg.map(e=>"grid-sm-".concat(e)),...Tg.map(e=>"grid-md-".concat(e)),...Tg.map(e=>"grid-lg-".concat(e)),...Tg.map(e=>"grid-xl-".concat(e))]),Cg=Eg,Ig=["className","columns","columnSpacing","component","container","direction","item","rowSpacing","spacing","wrap","zeroMinWidth"];function Lg(e){const t=parseFloat(e);return"".concat(t).concat(String(e).replace(String(t),"")||"px")}function zg(e){let{breakpoints:t,values:n}=e,r="";Object.keys(n).forEach(e=>{""===r&&0!==n[e]&&(r=e)});const o=Object.keys(t).sort((e,n)=>t[e]-t[n]);return o.slice(0,o.indexOf(r))}const Pg=(0,g.Ay)("div",{name:"MuiGrid",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e,{container:r,direction:o,item:i,spacing:a,wrap:s,zeroMinWidth:l,breakpoints:c}=n;let u=[];r&&(u=function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!e||e<=0)return[];if("string"===typeof e&&!Number.isNaN(Number(e))||"number"===typeof e)return[n["spacing-xs-".concat(String(e))]];const r=[];return t.forEach(t=>{const o=e[t];Number(o)>0&&r.push(n["spacing-".concat(t,"-").concat(String(o))])}),r}(a,c,t));const d=[];return c.forEach(e=>{const r=n[e];r&&d.push(t["grid-".concat(e,"-").concat(String(r))])}),[t.root,r&&t.container,i&&t.item,l&&t.zeroMinWidth,...u,"row"!==o&&t["direction-xs-".concat(String(o))],"wrap"!==s&&t["wrap-xs-".concat(String(s))],...d]}})(e=>{let{ownerState:t}=e;return(0,p.A)({boxSizing:"border-box"},t.container&&{display:"flex",flexWrap:"wrap",width:"100%"},t.item&&{margin:0},t.zeroMinWidth&&{minWidth:0},"wrap"!==t.wrap&&{flexWrap:t.wrap})},function(e){let{theme:t,ownerState:n}=e;const r=(0,dm.kW)({values:n.direction,breakpoints:t.breakpoints.values});return(0,dm.NI)({theme:t},r,e=>{const t={flexDirection:e};return 0===e.indexOf("column")&&(t["& > .".concat(Cg.item)]={maxWidth:"none"}),t})},function(e){let{theme:t,ownerState:n}=e;const{container:r,rowSpacing:o}=n;let i={};if(r&&0!==o){const e=(0,dm.kW)({values:o,breakpoints:t.breakpoints.values});let n;"object"===typeof e&&(n=zg({breakpoints:t.breakpoints.values,values:e})),i=(0,dm.NI)({theme:t},e,(e,r)=>{var o;const i=t.spacing(e);return"0px"!==i?{marginTop:"-".concat(Lg(i)),["& > .".concat(Cg.item)]:{paddingTop:Lg(i)}}:null!=(o=n)&&o.includes(r)?{}:{marginTop:0,["& > .".concat(Cg.item)]:{paddingTop:0}}})}return i},function(e){let{theme:t,ownerState:n}=e;const{container:r,columnSpacing:o}=n;let i={};if(r&&0!==o){const e=(0,dm.kW)({values:o,breakpoints:t.breakpoints.values});let n;"object"===typeof e&&(n=zg({breakpoints:t.breakpoints.values,values:e})),i=(0,dm.NI)({theme:t},e,(e,r)=>{var o;const i=t.spacing(e);return"0px"!==i?{width:"calc(100% + ".concat(Lg(i),")"),marginLeft:"-".concat(Lg(i)),["& > .".concat(Cg.item)]:{paddingLeft:Lg(i)}}:null!=(o=n)&&o.includes(r)?{}:{width:"100%",marginLeft:0,["& > .".concat(Cg.item)]:{paddingLeft:0}}})}return i},function(e){let t,{theme:n,ownerState:r}=e;return n.breakpoints.keys.reduce((e,o)=>{let i={};if(r[o]&&(t=r[o]),!t)return e;if(!0===t)i={flexBasis:0,flexGrow:1,maxWidth:"100%"};else if("auto"===t)i={flexBasis:"auto",flexGrow:0,flexShrink:0,maxWidth:"none",width:"auto"};else{const a=(0,dm.kW)({values:r.columns,breakpoints:n.breakpoints.values}),s="object"===typeof a?a[o]:a;if(void 0===s||null===s)return e;const l="".concat(Math.round(t/s*1e8)/1e6,"%");let c={};if(r.container&&r.item&&0!==r.columnSpacing){const e=n.spacing(r.columnSpacing);if("0px"!==e){const t="calc(".concat(l," + ").concat(Lg(e),")");c={flexBasis:t,maxWidth:t}}}i=(0,p.A)({flexBasis:l,flexGrow:0,maxWidth:l},c)}return 0===n.breakpoints.values[o]?Object.assign(e,i):e[n.breakpoints.up(o)]=i,e},{})});const Ng=e=>{const{classes:t,container:n,direction:r,item:o,spacing:i,wrap:a,zeroMinWidth:s,breakpoints:l}=e;let c=[];n&&(c=function(e,t){if(!e||e<=0)return[];if("string"===typeof e&&!Number.isNaN(Number(e))||"number"===typeof e)return["spacing-xs-".concat(String(e))];const n=[];return t.forEach(t=>{const r=e[t];if(Number(r)>0){const e="spacing-".concat(t,"-").concat(String(r));n.push(e)}}),n}(i,l));const u=[];l.forEach(t=>{const n=e[t];n&&u.push("grid-".concat(t,"-").concat(String(n)))});const d={root:["root",n&&"container",o&&"item",s&&"zeroMinWidth",...c,"row"!==r&&"direction-xs-".concat(String(r)),"wrap"!==a&&"wrap-xs-".concat(String(a)),...u]};return(0,f.A)(d,wg,t)},Rg=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiGrid"}),{breakpoints:r}=Sg(),i=(0,jh.A)(n),{className:a,columns:s,columnSpacing:l,component:c="div",container:u=!1,direction:f="row",item:m=!1,rowSpacing:g,spacing:v=0,wrap:b="wrap",zeroMinWidth:x=!1}=i,k=(0,d.A)(i,Ig),A=g||v,S=l||v,_=o.useContext(_g),w=u?s||12:_,T={},E=(0,p.A)({},k);r.keys.forEach(e=>{null!=k[e]&&(T[e]=k[e],delete E[e])});const C=(0,p.A)({},i,{columns:w,container:u,direction:f,item:m,rowSpacing:A,columnSpacing:S,wrap:b,zeroMinWidth:x,spacing:v},T,{breakpoints:r.keys}),I=Ng(C);return(0,R.jsx)(_g.Provider,{value:w,children:(0,R.jsx)(Pg,(0,p.A)({ownerState:C,className:(0,h.A)(I.root,a),as:c,ref:t},E))})});const jg=Rg,Og=["elementType","externalSlotProps","ownerState","skipResolvingSlotProps"];const Mg=function(e){var t;const{elementType:n,externalSlotProps:r,ownerState:o,skipResolvingSlotProps:i=!1}=e,a=(0,d.A)(e,Og),s=i?{}:k(r,o),{props:l,internalRef:c}=_((0,p.A)({},a,{externalSlotProps:s})),u=(0,v.A)(c,null==s?void 0:s.ref,null==(t=e.additionalProps)?void 0:t.ref);return x(n,(0,p.A)({},l,{ref:u}),o)};var Dg=n(6267);const Fg=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const{autoHideDuration:t=null,disableWindowBlurListener:n=!1,onClose:r,open:i,resumeHideDuration:a}=e,s=(0,ee.A)();o.useEffect(()=>{if(i)return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)};function e(e){e.defaultPrevented||"Escape"!==e.key&&"Esc"!==e.key||null==r||r(e,"escapeKeyDown")}},[i,r]);const l=(0,Dg.A)((e,t)=>{null==r||r(e,t)}),c=(0,Dg.A)(e=>{r&&null!=e&&s.start(e,()=>{l(null,"timeout")})});o.useEffect(()=>(i&&c(t),s.clear),[i,t,c,s]);const u=s.clear,d=o.useCallback(()=>{null!=t&&c(null!=a?a:.5*t)},[t,a,c]),h=e=>t=>{const n=e.onFocus;null==n||n(t),u()},f=e=>t=>{const n=e.onMouseEnter;null==n||n(t),u()},m=e=>t=>{const n=e.onMouseLeave;null==n||n(t),d()};return o.useEffect(()=>{if(!n&&i)return window.addEventListener("focus",d),window.addEventListener("blur",u),()=>{window.removeEventListener("focus",d),window.removeEventListener("blur",u)}},[n,i,d,u]),{getRootProps:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=(0,p.A)({},A(e),A(t));return(0,p.A)({role:"presentation"},t,n,{onBlur:(r=n,e=>{const t=r.onBlur;null==t||t(e),d()}),onFocus:h(n),onMouseEnter:f(n),onMouseLeave:m(n)});var r},onClickAway:e=>{null==r||r(e,"clickaway")}}};var Bg=n(9669);function Wg(e){var t;return parseInt(o.version,10)>=19?(null==e||null==(t=e.props)?void 0:t.ref)||null:(null==e?void 0:e.ref)||null}function Ug(e){return e.substring(2).toLowerCase()}function Vg(e){const{children:t,disableReactTree:n=!1,mouseEvent:r="onClick",onClickAway:i,touchEvent:a="onTouchEnd"}=e,s=o.useRef(!1),l=o.useRef(null),c=o.useRef(!1),u=o.useRef(!1);o.useEffect(()=>(setTimeout(()=>{c.current=!0},0),()=>{c.current=!1}),[]);const d=(0,v.A)(Wg(t),l),p=(0,Dg.A)(e=>{const t=u.current;u.current=!1;const r=(0,Bg.A)(l.current);if(!c.current||!l.current||"clientX"in e&&function(e,t){return t.documentElement.clientWidth-1:!r.documentElement.contains(e.target)||l.current.contains(e.target),o||!n&&t||i(e)}),h=e=>n=>{u.current=!0;const r=t.props[e];r&&r(n)},f={ref:d};return!1!==a&&(f[a]=h(a)),o.useEffect(()=>{if(!1!==a){const e=Ug(a),t=(0,Bg.A)(l.current),n=()=>{s.current=!0};return t.addEventListener(e,p),t.addEventListener("touchmove",n),()=>{t.removeEventListener(e,p),t.removeEventListener("touchmove",n)}}},[p,a]),!1!==r&&(f[r]=h(r)),o.useEffect(()=>{if(!1!==r){const e=Ug(r),t=(0,Bg.A)(l.current);return t.addEventListener(e,p),()=>{t.removeEventListener(e,p)}}},[p,r]),(0,R.jsx)(o.Fragment,{children:o.cloneElement(t,f)})}var Hg=n(7458);const Gg=!1;var qg="unmounted",Kg="exited",$g="entering",Yg="entered",Xg="exiting",Jg=function(e){function t(t,n){var r;r=e.call(this,t,n)||this;var o,i=n&&!n.isMounting?t.enter:t.appear;return r.appearStatus=null,t.in?i?(o=Kg,r.appearStatus=$g):o=Yg:o=t.unmountOnExit||t.mountOnEnter?qg:Kg,r.state={status:o},r.nextCallback=null,r}G(t,e),t.getDerivedStateFromProps=function(e,t){return e.in&&t.status===qg?{status:Kg}:null};var n=t.prototype;return n.componentDidMount=function(){this.updateStatus(!0,this.appearStatus)},n.componentDidUpdate=function(e){var t=null;if(e!==this.props){var n=this.state.status;this.props.in?n!==$g&&n!==Yg&&(t=$g):n!==$g&&n!==Yg||(t=Xg)}this.updateStatus(!1,t)},n.componentWillUnmount=function(){this.cancelNextCallback()},n.getTimeouts=function(){var e,t,n,r=this.props.timeout;return e=t=n=r,null!=r&&"number"!==typeof r&&(e=r.exit,t=r.enter,n=void 0!==r.appear?r.appear:t),{exit:e,enter:t,appear:n}},n.updateStatus=function(e,t){if(void 0===e&&(e=!1),null!==t)if(this.cancelNextCallback(),t===$g){if(this.props.unmountOnExit||this.props.mountOnEnter){var n=this.props.nodeRef?this.props.nodeRef.current:Hg.findDOMNode(this);n&&function(e){e.scrollTop}(n)}this.performEnter(e)}else this.performExit();else this.props.unmountOnExit&&this.state.status===Kg&&this.setState({status:qg})},n.performEnter=function(e){var t=this,n=this.props.enter,r=this.context?this.context.isMounting:e,o=this.props.nodeRef?[r]:[Hg.findDOMNode(this),r],i=o[0],a=o[1],s=this.getTimeouts(),l=r?s.appear:s.enter;!e&&!n||Gg?this.safeSetState({status:Yg},function(){t.props.onEntered(i)}):(this.props.onEnter(i,a),this.safeSetState({status:$g},function(){t.props.onEntering(i,a),t.onTransitionEnd(l,function(){t.safeSetState({status:Yg},function(){t.props.onEntered(i,a)})})}))},n.performExit=function(){var e=this,t=this.props.exit,n=this.getTimeouts(),r=this.props.nodeRef?void 0:Hg.findDOMNode(this);t&&!Gg?(this.props.onExit(r),this.safeSetState({status:Xg},function(){e.props.onExiting(r),e.onTransitionEnd(n.exit,function(){e.safeSetState({status:Kg},function(){e.props.onExited(r)})})})):this.safeSetState({status:Kg},function(){e.props.onExited(r)})},n.cancelNextCallback=function(){null!==this.nextCallback&&(this.nextCallback.cancel(),this.nextCallback=null)},n.safeSetState=function(e,t){t=this.setNextCallback(t),this.setState(e,t)},n.setNextCallback=function(e){var t=this,n=!0;return this.nextCallback=function(r){n&&(n=!1,t.nextCallback=null,e(r))},this.nextCallback.cancel=function(){n=!1},this.nextCallback},n.onTransitionEnd=function(e,t){this.setNextCallback(t);var n=this.props.nodeRef?this.props.nodeRef.current:Hg.findDOMNode(this),r=null==e&&!this.props.addEndListener;if(n&&!r){if(this.props.addEndListener){var o=this.props.nodeRef?[this.nextCallback]:[n,this.nextCallback],i=o[0],a=o[1];this.props.addEndListener(i,a)}null!=e&&setTimeout(this.nextCallback,e)}else setTimeout(this.nextCallback,0)},n.render=function(){var e=this.state.status;if(e===qg)return null;var t=this.props,n=t.children,r=(t.in,t.mountOnEnter,t.unmountOnExit,t.appear,t.enter,t.exit,t.timeout,t.addEndListener,t.onEnter,t.onEntering,t.onEntered,t.onExit,t.onExiting,t.onExited,t.nodeRef,(0,d.A)(t,["children","in","mountOnEnter","unmountOnExit","appear","enter","exit","timeout","addEndListener","onEnter","onEntering","onEntered","onExit","onExiting","onExited","nodeRef"]));return o.createElement(q.Provider,{value:null},"function"===typeof n?n(e,r):o.cloneElement(o.Children.only(n),r))},t}(o.Component);function Qg(){}Jg.contextType=q,Jg.propTypes={},Jg.defaultProps={in:!1,mountOnEnter:!1,unmountOnExit:!1,appear:!1,enter:!0,exit:!0,onEnter:Qg,onEntering:Qg,onEntered:Qg,onExit:Qg,onExiting:Qg,onExited:Qg},Jg.UNMOUNTED=qg,Jg.EXITED=Kg,Jg.ENTERING=$g,Jg.ENTERED=Yg,Jg.EXITING=Xg;const Zg=Jg,ey=e=>e.scrollTop;function ty(e,t){var n,r;const{timeout:o,easing:i,style:a={}}=e;return{duration:null!=(n=a.transitionDuration)?n:"number"===typeof o?o:o[t.mode]||0,easing:null!=(r=a.transitionTimingFunction)?r:"object"===typeof i?i[t.mode]:i,delay:a.transitionDelay}}const ny=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"];function ry(e){return"scale(".concat(e,", ").concat(e**2,")")}const oy={entering:{opacity:1,transform:ry(1)},entered:{opacity:1,transform:"none"}},iy="undefined"!==typeof navigator&&/^((?!chrome|android).)*(safari|mobile)/i.test(navigator.userAgent)&&/(os |version\/)15(.|_)4/i.test(navigator.userAgent),ay=o.forwardRef(function(e,t){const{addEndListener:n,appear:r=!0,children:i,easing:a,in:s,onEnter:l,onEntered:c,onEntering:u,onExit:h,onExited:f,onExiting:m,style:g,timeout:y="auto",TransitionComponent:v=Zg}=e,b=(0,d.A)(e,ny),x=(0,ee.A)(),k=o.useRef(),A=Sg(),S=o.useRef(null),_=(0,B.A)(S,Wg(i),t),w=e=>t=>{if(e){const n=S.current;void 0===t?e(n):e(n,t)}},T=w(u),E=w((e,t)=>{ey(e);const{duration:n,delay:r,easing:o}=ty({style:g,timeout:y,easing:a},{mode:"enter"});let i;"auto"===y?(i=A.transitions.getAutoHeightDuration(e.clientHeight),k.current=i):i=n,e.style.transition=[A.transitions.create("opacity",{duration:i,delay:r}),A.transitions.create("transform",{duration:iy?i:.666*i,delay:r,easing:o})].join(","),l&&l(e,t)}),C=w(c),I=w(m),L=w(e=>{const{duration:t,delay:n,easing:r}=ty({style:g,timeout:y,easing:a},{mode:"exit"});let o;"auto"===y?(o=A.transitions.getAutoHeightDuration(e.clientHeight),k.current=o):o=t,e.style.transition=[A.transitions.create("opacity",{duration:o,delay:n}),A.transitions.create("transform",{duration:iy?o:.666*o,delay:iy?n:n||.333*o,easing:r})].join(","),e.style.opacity=0,e.style.transform=ry(.75),h&&h(e)}),z=w(f);return(0,R.jsx)(v,(0,p.A)({appear:r,in:s,nodeRef:S,onEnter:E,onEntered:C,onEntering:T,onExit:L,onExited:z,onExiting:I,addEndListener:e=>{"auto"===y&&x.start(k.current||0,e),n&&n(S.current,e)},timeout:"auto"===y?null:y},b,{children:(e,t)=>o.cloneElement(i,(0,p.A)({style:(0,p.A)({opacity:0,transform:ry(.75),visibility:"exited"!==e||s?void 0:"hidden"},oy[e],g,i.props.style),ref:_},t))}))});ay.muiSupportAuto=!0;const sy=ay;function ly(e){return(0,P.Ay)("MuiSnackbarContent",e)}(0,z.A)("MuiSnackbarContent",["root","message","action"]);const cy=["action","className","message","role"],uy=(0,g.Ay)(M,{name:"MuiSnackbarContent",slot:"Root",overridesResolver:(e,t)=>t.root})(e=>{let{theme:t}=e;const n="light"===t.palette.mode?.8:.98,r=(0,m.tL)(t.palette.background.default,n);return(0,p.A)({},t.typography.body2,{color:t.vars?t.vars.palette.SnackbarContent.color:t.palette.getContrastText(r),backgroundColor:t.vars?t.vars.palette.SnackbarContent.bg:r,display:"flex",alignItems:"center",flexWrap:"wrap",padding:"6px 16px",borderRadius:(t.vars||t).shape.borderRadius,flexGrow:1,[t.breakpoints.up("sm")]:{flexGrow:"initial",minWidth:288}})}),dy=(0,g.Ay)("div",{name:"MuiSnackbarContent",slot:"Message",overridesResolver:(e,t)=>t.message})({padding:"8px 0"}),py=(0,g.Ay)("div",{name:"MuiSnackbarContent",slot:"Action",overridesResolver:(e,t)=>t.action})({display:"flex",alignItems:"center",marginLeft:"auto",paddingLeft:16,marginRight:-8}),hy=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiSnackbarContent"}),{action:r,className:o,message:i,role:a="alert"}=n,s=(0,d.A)(n,cy),l=n,c=(e=>{const{classes:t}=e;return(0,f.A)({root:["root"],action:["action"],message:["message"]},ly,t)})(l);return(0,R.jsxs)(uy,(0,p.A)({role:a,square:!0,elevation:6,className:(0,h.A)(c.root,o),ownerState:l,ref:t},s,{children:[(0,R.jsx)(dy,{className:c.message,ownerState:l,children:i}),r?(0,R.jsx)(py,{className:c.action,ownerState:l,children:r}):null]}))});function fy(e){return(0,P.Ay)("MuiSnackbar",e)}(0,z.A)("MuiSnackbar",["root","anchorOriginTopCenter","anchorOriginBottomCenter","anchorOriginTopRight","anchorOriginBottomRight","anchorOriginTopLeft","anchorOriginBottomLeft"]);const my=["onEnter","onExited"],gy=["action","anchorOrigin","autoHideDuration","children","className","ClickAwayListenerProps","ContentProps","disableWindowBlurListener","message","onBlur","onClose","onFocus","onMouseEnter","onMouseLeave","open","resumeHideDuration","TransitionComponent","transitionDuration","TransitionProps"],yy=(0,g.Ay)("div",{name:"MuiSnackbar",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,t["anchorOrigin".concat((0,I.A)(n.anchorOrigin.vertical)).concat((0,I.A)(n.anchorOrigin.horizontal))]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({zIndex:(t.vars||t).zIndex.snackbar,position:"fixed",display:"flex",left:8,right:8,justifyContent:"center",alignItems:"center"},"top"===n.anchorOrigin.vertical?{top:8}:{bottom:8},"left"===n.anchorOrigin.horizontal&&{justifyContent:"flex-start"},"right"===n.anchorOrigin.horizontal&&{justifyContent:"flex-end"},{[t.breakpoints.up("sm")]:(0,p.A)({},"top"===n.anchorOrigin.vertical?{top:24}:{bottom:24},"center"===n.anchorOrigin.horizontal&&{left:"50%",right:"auto",transform:"translateX(-50%)"},"left"===n.anchorOrigin.horizontal&&{left:24,right:"auto"},"right"===n.anchorOrigin.horizontal&&{right:24,left:"auto"})})}),vy=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiSnackbar"}),r=Sg(),i={enter:r.transitions.duration.enteringScreen,exit:r.transitions.duration.leavingScreen},{action:a,anchorOrigin:{vertical:s,horizontal:l}={vertical:"bottom",horizontal:"left"},autoHideDuration:c=null,children:u,className:h,ClickAwayListenerProps:m,ContentProps:g,disableWindowBlurListener:v=!1,message:b,open:x,TransitionComponent:k=sy,transitionDuration:A=i,TransitionProps:{onEnter:S,onExited:_}={}}=n,w=(0,d.A)(n.TransitionProps,my),T=(0,d.A)(n,gy),E=(0,p.A)({},n,{anchorOrigin:{vertical:s,horizontal:l},autoHideDuration:c,disableWindowBlurListener:v,TransitionComponent:k,transitionDuration:A}),C=(e=>{const{classes:t,anchorOrigin:n}=e,r={root:["root","anchorOrigin".concat((0,I.A)(n.vertical)).concat((0,I.A)(n.horizontal))]};return(0,f.A)(r,fy,t)})(E),{getRootProps:L,onClickAway:z}=Fg((0,p.A)({},E)),[P,N]=o.useState(!0),j=Mg({elementType:yy,getSlotProps:L,externalForwardedProps:T,ownerState:E,additionalProps:{ref:t},className:[C.root,h]});return!x&&P?null:(0,R.jsx)(Vg,(0,p.A)({onClickAway:z},m,{children:(0,R.jsx)(yy,(0,p.A)({},j,{children:(0,R.jsx)(k,(0,p.A)({appear:!0,in:x,timeout:A,direction:"top"===s?"down":"up",onEnter:(e,t)=>{N(!1),S&&S(e,t)},onExited:e=>{N(!0),_&&_(e)}},w,{children:u||(0,R.jsx)(hy,(0,p.A)({message:b,action:a},g))}))}))}))}),by=vy;var xy=n(6253),ky=n(6333),Ay=n(2561);const Sy=["onChange","maxRows","minRows","style","value"];function _y(e){return parseInt(e,10)||0}const wy={visibility:"hidden",position:"absolute",overflow:"hidden",height:0,top:0,left:0,transform:"translateZ(0)"};function Ty(e){return function(e){for(const t in e)return!1;return!0}(e)||0===e.outerHeightStyle&&!e.overflowing}const Ey=o.forwardRef(function(e,t){const{onChange:n,maxRows:r,minRows:i=1,style:a,value:s}=e,l=(0,d.A)(e,Sy),{current:c}=o.useRef(null!=s),u=o.useRef(null),h=(0,v.A)(t,u),f=o.useRef(null),m=o.useRef(null),g=o.useCallback(()=>{const t=u.current,n=m.current;if(!t||!n)return;const o=(0,ky.A)(t).getComputedStyle(t);if("0px"===o.width)return{outerHeightStyle:0,overflowing:!1};n.style.width=o.width,n.value=t.value||e.placeholder||"x","\n"===n.value.slice(-1)&&(n.value+=" ");const a=o.boxSizing,s=_y(o.paddingBottom)+_y(o.paddingTop),l=_y(o.borderBottomWidth)+_y(o.borderTopWidth),c=n.scrollHeight;n.value="x";const d=n.scrollHeight;let p=c;i&&(p=Math.max(Number(i)*d,p)),r&&(p=Math.min(Number(r)*d,p)),p=Math.max(p,d);return{outerHeightStyle:p+("border-box"===a?s+l:0),overflowing:Math.abs(p-c)<=1}},[r,i,e.placeholder]),y=(0,Dg.A)(()=>{const e=u.current,t=g();if(!e||!t||Ty(t))return!1;const n=t.outerHeightStyle;return null!=f.current&&f.current!==n}),b=o.useCallback(()=>{const e=u.current,t=g();if(!e||!t||Ty(t))return;const n=t.outerHeightStyle;f.current!==n&&(f.current=n,e.style.height="".concat(n,"px")),e.style.overflow=t.overflowing?"hidden":""},[g]),x=o.useRef(-1);(0,Af.A)(()=>{const e=(0,Ay.A)(b),t=null==u?void 0:u.current;if(!t)return;const n=(0,ky.A)(t);let r;return n.addEventListener("resize",e),"undefined"!==typeof ResizeObserver&&(r=new ResizeObserver(()=>{y()&&(r.unobserve(t),cancelAnimationFrame(x.current),b(),x.current=requestAnimationFrame(()=>{r.observe(t)}))}),r.observe(t)),()=>{e.clear(),cancelAnimationFrame(x.current),n.removeEventListener("resize",e),r&&r.disconnect()}},[g,b,y]),(0,Af.A)(()=>{b()});return(0,R.jsxs)(o.Fragment,{children:[(0,R.jsx)("textarea",(0,p.A)({value:s,onChange:e=>{c||b(),n&&n(e)},ref:h,rows:i,style:a},l)),(0,R.jsx)("textarea",{"aria-hidden":!0,className:e.className,readOnly:!0,ref:m,tabIndex:-1,style:(0,p.A)({},wy,a,{paddingTop:0,paddingBottom:0})})]})}),Cy=Ey;function Iy(e){return null!=e&&!(Array.isArray(e)&&0===e.length)}function Ly(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return e&&(Iy(e.value)&&""!==e.value||t&&Iy(e.defaultValue)&&""!==e.defaultValue)}function zy(e){return(0,P.Ay)("MuiInputBase",e)}const Py=(0,z.A)("MuiInputBase",["root","formControl","focused","disabled","adornedStart","adornedEnd","error","sizeSmall","multiline","colorSecondary","fullWidth","hiddenLabel","readOnly","input","inputSizeSmall","inputMultiline","inputTypeSearch","inputAdornedStart","inputAdornedEnd","inputHiddenLabel"]),Ny=["aria-describedby","autoComplete","autoFocus","className","color","components","componentsProps","defaultValue","disabled","disableInjectingGlobalStyles","endAdornment","error","fullWidth","id","inputComponent","inputProps","inputRef","margin","maxRows","minRows","multiline","name","onBlur","onChange","onClick","onFocus","onKeyDown","onKeyUp","placeholder","readOnly","renderSuffix","rows","size","slotProps","slots","startAdornment","type","value"],Ry=(e,t)=>{const{ownerState:n}=e;return[t.root,n.formControl&&t.formControl,n.startAdornment&&t.adornedStart,n.endAdornment&&t.adornedEnd,n.error&&t.error,"small"===n.size&&t.sizeSmall,n.multiline&&t.multiline,n.color&&t["color".concat((0,I.A)(n.color))],n.fullWidth&&t.fullWidth,n.hiddenLabel&&t.hiddenLabel]},jy=(e,t)=>{const{ownerState:n}=e;return[t.input,"small"===n.size&&t.inputSizeSmall,n.multiline&&t.inputMultiline,"search"===n.type&&t.inputTypeSearch,n.startAdornment&&t.inputAdornedStart,n.endAdornment&&t.inputAdornedEnd,n.hiddenLabel&&t.inputHiddenLabel]},Oy=(0,g.Ay)("div",{name:"MuiInputBase",slot:"Root",overridesResolver:Ry})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({},t.typography.body1,{color:(t.vars||t).palette.text.primary,lineHeight:"1.4375em",boxSizing:"border-box",position:"relative",cursor:"text",display:"inline-flex",alignItems:"center",["&.".concat(Py.disabled)]:{color:(t.vars||t).palette.text.disabled,cursor:"default"}},n.multiline&&(0,p.A)({padding:"4px 0 5px"},"small"===n.size&&{paddingTop:1}),n.fullWidth&&{width:"100%"})}),My=(0,g.Ay)("input",{name:"MuiInputBase",slot:"Input",overridesResolver:jy})(e=>{let{theme:t,ownerState:n}=e;const r="light"===t.palette.mode,o=(0,p.A)({color:"currentColor"},t.vars?{opacity:t.vars.opacity.inputPlaceholder}:{opacity:r?.42:.5},{transition:t.transitions.create("opacity",{duration:t.transitions.duration.shorter})}),i={opacity:"0 !important"},a=t.vars?{opacity:t.vars.opacity.inputPlaceholder}:{opacity:r?.42:.5};return(0,p.A)({font:"inherit",letterSpacing:"inherit",color:"currentColor",padding:"4px 0 5px",border:0,boxSizing:"content-box",background:"none",height:"1.4375em",margin:0,WebkitTapHighlightColor:"transparent",display:"block",minWidth:0,width:"100%",animationName:"mui-auto-fill-cancel",animationDuration:"10ms","&::-webkit-input-placeholder":o,"&::-moz-placeholder":o,"&:-ms-input-placeholder":o,"&::-ms-input-placeholder":o,"&:focus":{outline:0},"&:invalid":{boxShadow:"none"},"&::-webkit-search-decoration":{WebkitAppearance:"none"},["label[data-shrink=false] + .".concat(Py.formControl," &")]:{"&::-webkit-input-placeholder":i,"&::-moz-placeholder":i,"&:-ms-input-placeholder":i,"&::-ms-input-placeholder":i,"&:focus::-webkit-input-placeholder":a,"&:focus::-moz-placeholder":a,"&:focus:-ms-input-placeholder":a,"&:focus::-ms-input-placeholder":a},["&.".concat(Py.disabled)]:{opacity:1,WebkitTextFillColor:(t.vars||t).palette.text.disabled},"&:-webkit-autofill":{animationDuration:"5000s",animationName:"mui-auto-fill"}},"small"===n.size&&{paddingTop:1},n.multiline&&{height:"auto",resize:"none",padding:0,paddingTop:0},"search"===n.type&&{MozAppearance:"textfield"})}),Dy=(0,R.jsx)(Df,{styles:{"@keyframes mui-auto-fill":{from:{display:"block"}},"@keyframes mui-auto-fill-cancel":{from:{display:"block"}}}}),Fy=o.forwardRef(function(e,t){var n;const r=(0,y.b)({props:e,name:"MuiInputBase"}),{"aria-describedby":i,autoComplete:a,autoFocus:s,className:l,components:c={},componentsProps:u={},defaultValue:m,disabled:g,disableInjectingGlobalStyles:v,endAdornment:x,fullWidth:k=!1,id:A,inputComponent:S="input",inputProps:_={},inputRef:w,maxRows:T,minRows:E,multiline:C=!1,name:L,onBlur:z,onChange:P,onClick:N,onFocus:j,onKeyDown:O,onKeyUp:M,placeholder:D,readOnly:F,renderSuffix:W,rows:U,slotProps:V={},slots:H={},startAdornment:G,type:q="text",value:K}=r,$=(0,d.A)(r,Ny),Y=null!=_.value?_.value:K,{current:X}=o.useRef(null!=Y),J=o.useRef(),Q=o.useCallback(e=>{0},[]),Z=(0,B.A)(J,w,_.ref,Q),[ee,te]=o.useState(!1),ne=Zm();const re=ng({props:r,muiFormControl:ne,states:["color","disabled","error","hiddenLabel","size","required","filled"]});re.focused=ne?ne.focused:ee,o.useEffect(()=>{!ne&&g&&ee&&(te(!1),z&&z())},[ne,g,ee,z]);const oe=ne&&ne.onFilled,ie=ne&&ne.onEmpty,ae=o.useCallback(e=>{Ly(e)?oe&&oe():ie&&ie()},[oe,ie]);(0,Hm.A)(()=>{X&&ae({value:Y})},[Y,ae,X]);o.useEffect(()=>{ae(J.current)},[]);let se=S,le=_;C&&"input"===se&&(le=U?(0,p.A)({type:void 0,minRows:U,maxRows:U},le):(0,p.A)({type:void 0,maxRows:T,minRows:E},le),se=Cy);o.useEffect(()=>{ne&&ne.setAdornedStart(Boolean(G))},[ne,G]);const ce=(0,p.A)({},r,{color:re.color||"primary",disabled:re.disabled,endAdornment:x,error:re.error,focused:re.focused,formControl:ne,fullWidth:k,hiddenLabel:re.hiddenLabel,multiline:C,size:re.size,startAdornment:G,type:q}),ue=(e=>{const{classes:t,color:n,disabled:r,error:o,endAdornment:i,focused:a,formControl:s,fullWidth:l,hiddenLabel:c,multiline:u,readOnly:d,size:p,startAdornment:h,type:m}=e,g={root:["root","color".concat((0,I.A)(n)),r&&"disabled",o&&"error",l&&"fullWidth",a&&"focused",s&&"formControl",p&&"medium"!==p&&"size".concat((0,I.A)(p)),u&&"multiline",h&&"adornedStart",i&&"adornedEnd",c&&"hiddenLabel",d&&"readOnly"],input:["input",r&&"disabled","search"===m&&"inputTypeSearch",u&&"inputMultiline","small"===p&&"inputSizeSmall",c&&"inputHiddenLabel",h&&"inputAdornedStart",i&&"inputAdornedEnd",d&&"readOnly"]};return(0,f.A)(g,zy,t)})(ce),de=H.root||c.Root||Oy,pe=V.root||u.root||{},he=H.input||c.Input||My;return le=(0,p.A)({},le,null!=(n=V.input)?n:u.input),(0,R.jsxs)(o.Fragment,{children:[!v&&Dy,(0,R.jsxs)(de,(0,p.A)({},pe,!b(de)&&{ownerState:(0,p.A)({},ce,pe.ownerState)},{ref:t,onClick:e=>{J.current&&e.currentTarget===e.target&&J.current.focus(),N&&N(e)}},$,{className:(0,h.A)(ue.root,pe.className,l,F&&"MuiInputBase-readOnly"),children:[G,(0,R.jsx)(Qm.Provider,{value:null,children:(0,R.jsx)(he,(0,p.A)({ownerState:ce,"aria-invalid":re.error,"aria-describedby":i,autoComplete:a,autoFocus:s,defaultValue:m,disabled:re.disabled,id:A,onAnimationStart:e=>{ae("mui-auto-fill-cancel"===e.animationName?J.current:{value:"x"})},name:L,placeholder:D,readOnly:F,required:re.required,rows:U,value:Y,onKeyDown:O,onKeyUp:M,type:q},le,!b(he)&&{as:se,ownerState:(0,p.A)({},ce,le.ownerState)},{ref:Z,className:(0,h.A)(ue.input,le.className,F&&"MuiInputBase-readOnly"),onBlur:e=>{z&&z(e),_.onBlur&&_.onBlur(e),ne&&ne.onBlur?ne.onBlur(e):te(!1)},onChange:function(e){if(!X){const t=e.target||J.current;if(null==t)throw new Error((0,xy.A)(1));ae({value:t.value})}for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{re.disabled?e.stopPropagation():(j&&j(e),_.onFocus&&_.onFocus(e),ne&&ne.onFocus?ne.onFocus(e):te(!0))}}))}),x,W?W((0,p.A)({},re,{startAdornment:G})):null]}))]})}),By=Fy;function Wy(e){return(0,P.Ay)("MuiInput",e)}const Uy=(0,p.A)({},Py,(0,z.A)("MuiInput",["root","underline","input"])),Vy=["disableUnderline","components","componentsProps","fullWidth","inputComponent","multiline","slotProps","slots","type"],Hy=(0,g.Ay)(Oy,{shouldForwardProp:e=>(0,km.A)(e)||"classes"===e,name:"MuiInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[...Ry(e,t),!n.disableUnderline&&t.underline]}})(e=>{let{theme:t,ownerState:n}=e;let r="light"===t.palette.mode?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)";return t.vars&&(r="rgba(".concat(t.vars.palette.common.onBackgroundChannel," / ").concat(t.vars.opacity.inputUnderline,")")),(0,p.A)({position:"relative"},n.formControl&&{"label + &":{marginTop:16}},!n.disableUnderline&&{"&::after":{borderBottom:"2px solid ".concat((t.vars||t).palette[n.color].main),left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:t.transitions.create("transform",{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut}),pointerEvents:"none"},["&.".concat(Uy.focused,":after")]:{transform:"scaleX(1) translateX(0)"},["&.".concat(Uy.error)]:{"&::before, &::after":{borderBottomColor:(t.vars||t).palette.error.main}},"&::before":{borderBottom:"1px solid ".concat(r),left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:t.transitions.create("border-bottom-color",{duration:t.transitions.duration.shorter}),pointerEvents:"none"},["&:hover:not(.".concat(Uy.disabled,", .").concat(Uy.error,"):before")]:{borderBottom:"2px solid ".concat((t.vars||t).palette.text.primary),"@media (hover: none)":{borderBottom:"1px solid ".concat(r)}},["&.".concat(Uy.disabled,":before")]:{borderBottomStyle:"dotted"}})}),Gy=(0,g.Ay)(My,{name:"MuiInput",slot:"Input",overridesResolver:jy})({}),qy=o.forwardRef(function(e,t){var n,r,o,i;const a=(0,y.b)({props:e,name:"MuiInput"}),{disableUnderline:s,components:l={},componentsProps:c,fullWidth:u=!1,inputComponent:h="input",multiline:m=!1,slotProps:g,slots:v={},type:b="text"}=a,x=(0,d.A)(a,Vy),k=(e=>{const{classes:t,disableUnderline:n}=e,r={root:["root",!n&&"underline"],input:["input"]},o=(0,f.A)(r,Wy,t);return(0,p.A)({},t,o)})(a),A={root:{ownerState:{disableUnderline:s}}},S=(null!=g?g:c)?(0,Xf.A)(null!=g?g:c,A):A,_=null!=(n=null!=(r=v.root)?r:l.Root)?n:Hy,w=null!=(o=null!=(i=v.input)?i:l.Input)?o:Gy;return(0,R.jsx)(By,(0,p.A)({slots:{root:_,input:w},slotProps:S,fullWidth:u,inputComponent:h,multiline:m,ref:t,type:b},x,{classes:k}))});qy.muiName="Input";const Ky=qy;function $y(e){return(0,P.Ay)("MuiFilledInput",e)}const Yy=(0,p.A)({},Py,(0,z.A)("MuiFilledInput",["root","underline","input"])),Xy=["disableUnderline","components","componentsProps","fullWidth","hiddenLabel","inputComponent","multiline","slotProps","slots","type"],Jy=(0,g.Ay)(Oy,{shouldForwardProp:e=>(0,km.A)(e)||"classes"===e,name:"MuiFilledInput",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[...Ry(e,t),!n.disableUnderline&&t.underline]}})(e=>{let{theme:t,ownerState:n}=e;var r;const o="light"===t.palette.mode,i=o?"rgba(0, 0, 0, 0.42)":"rgba(255, 255, 255, 0.7)",a=o?"rgba(0, 0, 0, 0.06)":"rgba(255, 255, 255, 0.09)",s=o?"rgba(0, 0, 0, 0.09)":"rgba(255, 255, 255, 0.13)",l=o?"rgba(0, 0, 0, 0.12)":"rgba(255, 255, 255, 0.12)";return(0,p.A)({position:"relative",backgroundColor:t.vars?t.vars.palette.FilledInput.bg:a,borderTopLeftRadius:(t.vars||t).shape.borderRadius,borderTopRightRadius:(t.vars||t).shape.borderRadius,transition:t.transitions.create("background-color",{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut}),"&:hover":{backgroundColor:t.vars?t.vars.palette.FilledInput.hoverBg:s,"@media (hover: none)":{backgroundColor:t.vars?t.vars.palette.FilledInput.bg:a}},["&.".concat(Yy.focused)]:{backgroundColor:t.vars?t.vars.palette.FilledInput.bg:a},["&.".concat(Yy.disabled)]:{backgroundColor:t.vars?t.vars.palette.FilledInput.disabledBg:l}},!n.disableUnderline&&{"&::after":{borderBottom:"2px solid ".concat(null==(r=(t.vars||t).palette[n.color||"primary"])?void 0:r.main),left:0,bottom:0,content:'""',position:"absolute",right:0,transform:"scaleX(0)",transition:t.transitions.create("transform",{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut}),pointerEvents:"none"},["&.".concat(Yy.focused,":after")]:{transform:"scaleX(1) translateX(0)"},["&.".concat(Yy.error)]:{"&::before, &::after":{borderBottomColor:(t.vars||t).palette.error.main}},"&::before":{borderBottom:"1px solid ".concat(t.vars?"rgba(".concat(t.vars.palette.common.onBackgroundChannel," / ").concat(t.vars.opacity.inputUnderline,")"):i),left:0,bottom:0,content:'"\\00a0"',position:"absolute",right:0,transition:t.transitions.create("border-bottom-color",{duration:t.transitions.duration.shorter}),pointerEvents:"none"},["&:hover:not(.".concat(Yy.disabled,", .").concat(Yy.error,"):before")]:{borderBottom:"1px solid ".concat((t.vars||t).palette.text.primary)},["&.".concat(Yy.disabled,":before")]:{borderBottomStyle:"dotted"}},n.startAdornment&&{paddingLeft:12},n.endAdornment&&{paddingRight:12},n.multiline&&(0,p.A)({padding:"25px 12px 8px"},"small"===n.size&&{paddingTop:21,paddingBottom:4},n.hiddenLabel&&{paddingTop:16,paddingBottom:17},n.hiddenLabel&&"small"===n.size&&{paddingTop:8,paddingBottom:9}))}),Qy=(0,g.Ay)(My,{name:"MuiFilledInput",slot:"Input",overridesResolver:jy})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({paddingTop:25,paddingRight:12,paddingBottom:8,paddingLeft:12},!t.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===t.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===t.palette.mode?null:"#fff",caretColor:"light"===t.palette.mode?null:"#fff",borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"}},t.vars&&{"&:-webkit-autofill":{borderTopLeftRadius:"inherit",borderTopRightRadius:"inherit"},[t.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},"small"===n.size&&{paddingTop:21,paddingBottom:4},n.hiddenLabel&&{paddingTop:16,paddingBottom:17},n.startAdornment&&{paddingLeft:0},n.endAdornment&&{paddingRight:0},n.hiddenLabel&&"small"===n.size&&{paddingTop:8,paddingBottom:9},n.multiline&&{paddingTop:0,paddingBottom:0,paddingLeft:0,paddingRight:0})}),Zy=o.forwardRef(function(e,t){var n,r,o,i;const a=(0,y.b)({props:e,name:"MuiFilledInput"}),{components:s={},componentsProps:l,fullWidth:c=!1,inputComponent:u="input",multiline:h=!1,slotProps:m,slots:g={},type:v="text"}=a,b=(0,d.A)(a,Xy),x=(0,p.A)({},a,{fullWidth:c,inputComponent:u,multiline:h,type:v}),k=(e=>{const{classes:t,disableUnderline:n}=e,r={root:["root",!n&&"underline"],input:["input"]},o=(0,f.A)(r,$y,t);return(0,p.A)({},t,o)})(a),A={root:{ownerState:x},input:{ownerState:x}},S=(null!=m?m:l)?(0,Xf.A)(A,null!=m?m:l):A,_=null!=(n=null!=(r=g.root)?r:s.Root)?n:Jy,w=null!=(o=null!=(i=g.input)?i:s.Input)?o:Qy;return(0,R.jsx)(By,(0,p.A)({slots:{root:_,input:w},componentsProps:S,fullWidth:c,inputComponent:u,multiline:h,ref:t,type:v},b,{classes:k}))});Zy.muiName="Input";const ev=Zy;var tv;const nv=["children","classes","className","label","notched"],rv=(0,g.Ay)("fieldset",{name:"MuiNotchedOutlined",shouldForwardProp:km.A})({textAlign:"left",position:"absolute",bottom:0,right:0,top:-5,left:0,margin:0,padding:"0 8px",pointerEvents:"none",borderRadius:"inherit",borderStyle:"solid",borderWidth:1,overflow:"hidden",minWidth:"0%"}),ov=(0,g.Ay)("legend",{name:"MuiNotchedOutlined",shouldForwardProp:km.A})(e=>{let{ownerState:t,theme:n}=e;return(0,p.A)({float:"unset",width:"auto",overflow:"hidden"},!t.withLabel&&{padding:0,lineHeight:"11px",transition:n.transitions.create("width",{duration:150,easing:n.transitions.easing.easeOut})},t.withLabel&&(0,p.A)({display:"block",padding:0,height:11,fontSize:"0.75em",visibility:"hidden",maxWidth:.01,transition:n.transitions.create("max-width",{duration:50,easing:n.transitions.easing.easeOut}),whiteSpace:"nowrap","& > span":{paddingLeft:5,paddingRight:5,display:"inline-block",opacity:0,visibility:"visible"}},t.notched&&{maxWidth:"100%",transition:n.transitions.create("max-width",{duration:100,easing:n.transitions.easing.easeOut,delay:50})}))});function iv(e){return(0,P.Ay)("MuiOutlinedInput",e)}const av=(0,p.A)({},Py,(0,z.A)("MuiOutlinedInput",["root","notchedOutline","input"])),sv=["components","fullWidth","inputComponent","label","multiline","notched","slots","type"],lv=(0,g.Ay)(Oy,{shouldForwardProp:e=>(0,km.A)(e)||"classes"===e,name:"MuiOutlinedInput",slot:"Root",overridesResolver:Ry})(e=>{let{theme:t,ownerState:n}=e;const r="light"===t.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return(0,p.A)({position:"relative",borderRadius:(t.vars||t).shape.borderRadius,["&:hover .".concat(av.notchedOutline)]:{borderColor:(t.vars||t).palette.text.primary},"@media (hover: none)":{["&:hover .".concat(av.notchedOutline)]:{borderColor:t.vars?"rgba(".concat(t.vars.palette.common.onBackgroundChannel," / 0.23)"):r}},["&.".concat(av.focused," .").concat(av.notchedOutline)]:{borderColor:(t.vars||t).palette[n.color].main,borderWidth:2},["&.".concat(av.error," .").concat(av.notchedOutline)]:{borderColor:(t.vars||t).palette.error.main},["&.".concat(av.disabled," .").concat(av.notchedOutline)]:{borderColor:(t.vars||t).palette.action.disabled}},n.startAdornment&&{paddingLeft:14},n.endAdornment&&{paddingRight:14},n.multiline&&(0,p.A)({padding:"16.5px 14px"},"small"===n.size&&{padding:"8.5px 14px"}))}),cv=(0,g.Ay)(function(e){const{className:t,label:n,notched:r}=e,o=(0,d.A)(e,nv),i=null!=n&&""!==n,a=(0,p.A)({},e,{notched:r,withLabel:i});return(0,R.jsx)(rv,(0,p.A)({"aria-hidden":!0,className:t,ownerState:a},o,{children:(0,R.jsx)(ov,{ownerState:a,children:i?(0,R.jsx)("span",{children:n}):tv||(tv=(0,R.jsx)("span",{className:"notranslate",children:"\u200b"}))})}))},{name:"MuiOutlinedInput",slot:"NotchedOutline",overridesResolver:(e,t)=>t.notchedOutline})(e=>{let{theme:t}=e;const n="light"===t.palette.mode?"rgba(0, 0, 0, 0.23)":"rgba(255, 255, 255, 0.23)";return{borderColor:t.vars?"rgba(".concat(t.vars.palette.common.onBackgroundChannel," / 0.23)"):n}}),uv=(0,g.Ay)(My,{name:"MuiOutlinedInput",slot:"Input",overridesResolver:jy})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({padding:"16.5px 14px"},!t.vars&&{"&:-webkit-autofill":{WebkitBoxShadow:"light"===t.palette.mode?null:"0 0 0 100px #266798 inset",WebkitTextFillColor:"light"===t.palette.mode?null:"#fff",caretColor:"light"===t.palette.mode?null:"#fff",borderRadius:"inherit"}},t.vars&&{"&:-webkit-autofill":{borderRadius:"inherit"},[t.getColorSchemeSelector("dark")]:{"&:-webkit-autofill":{WebkitBoxShadow:"0 0 0 100px #266798 inset",WebkitTextFillColor:"#fff",caretColor:"#fff"}}},"small"===n.size&&{padding:"8.5px 14px"},n.multiline&&{padding:0},n.startAdornment&&{paddingLeft:0},n.endAdornment&&{paddingRight:0})}),dv=o.forwardRef(function(e,t){var n,r,i,a,s;const l=(0,y.b)({props:e,name:"MuiOutlinedInput"}),{components:c={},fullWidth:u=!1,inputComponent:h="input",label:m,multiline:g=!1,notched:v,slots:b={},type:x="text"}=l,k=(0,d.A)(l,sv),A=(e=>{const{classes:t}=e,n=(0,f.A)({root:["root"],notchedOutline:["notchedOutline"],input:["input"]},iv,t);return(0,p.A)({},t,n)})(l),S=Zm(),_=ng({props:l,muiFormControl:S,states:["color","disabled","error","focused","hiddenLabel","size","required"]}),w=(0,p.A)({},l,{color:_.color||"primary",disabled:_.disabled,error:_.error,focused:_.focused,formControl:S,fullWidth:u,hiddenLabel:_.hiddenLabel,multiline:g,size:_.size,type:x}),T=null!=(n=null!=(r=b.root)?r:c.Root)?n:lv,E=null!=(i=null!=(a=b.input)?a:c.Input)?i:uv;return(0,R.jsx)(By,(0,p.A)({slots:{root:T,input:E},renderSuffix:e=>(0,R.jsx)(cv,{ownerState:w,className:A.notchedOutline,label:null!=m&&""!==m&&_.required?s||(s=(0,R.jsxs)(o.Fragment,{children:[m,"\u2009","*"]})):m,notched:"undefined"!==typeof v?v:Boolean(e.startAdornment||e.filled||e.focused)}),fullWidth:u,inputComponent:h,multiline:g,ref:t,type:x},k,{classes:(0,p.A)({},A,{notchedOutline:null})}))});dv.muiName="Input";const pv=dv;function hv(e){return(0,P.Ay)("MuiFormLabel",e)}const fv=(0,z.A)("MuiFormLabel",["root","colorSecondary","focused","disabled","error","filled","required","asterisk"]),mv=["children","className","color","component","disabled","error","filled","focused","required"],gv=(0,g.Ay)("label",{name:"MuiFormLabel",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return(0,p.A)({},t.root,"secondary"===n.color&&t.colorSecondary,n.filled&&t.filled)}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({color:(t.vars||t).palette.text.secondary},t.typography.body1,{lineHeight:"1.4375em",padding:0,position:"relative",["&.".concat(fv.focused)]:{color:(t.vars||t).palette[n.color].main},["&.".concat(fv.disabled)]:{color:(t.vars||t).palette.text.disabled},["&.".concat(fv.error)]:{color:(t.vars||t).palette.error.main}})}),yv=(0,g.Ay)("span",{name:"MuiFormLabel",slot:"Asterisk",overridesResolver:(e,t)=>t.asterisk})(e=>{let{theme:t}=e;return{["&.".concat(fv.error)]:{color:(t.vars||t).palette.error.main}}}),vv=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiFormLabel"}),{children:r,className:o,component:i="label"}=n,a=(0,d.A)(n,mv),s=ng({props:n,muiFormControl:Zm(),states:["color","required","focused","disabled","error","filled"]}),l=(0,p.A)({},n,{color:s.color||"primary",component:i,disabled:s.disabled,error:s.error,filled:s.filled,focused:s.focused,required:s.required}),c=(e=>{const{classes:t,color:n,focused:r,disabled:o,error:i,filled:a,required:s}=e,l={root:["root","color".concat((0,I.A)(n)),o&&"disabled",i&&"error",a&&"filled",r&&"focused",s&&"required"],asterisk:["asterisk",i&&"error"]};return(0,f.A)(l,hv,t)})(l);return(0,R.jsxs)(gv,(0,p.A)({as:i,ownerState:l,className:(0,h.A)(c.root,o),ref:t},a,{children:[r,s.required&&(0,R.jsxs)(yv,{ownerState:l,"aria-hidden":!0,className:c.asterisk,children:["\u2009","*"]})]}))}),bv=vv;function xv(e){return(0,P.Ay)("MuiInputLabel",e)}(0,z.A)("MuiInputLabel",["root","focused","disabled","error","required","asterisk","formControl","sizeSmall","shrink","animated","standard","filled","outlined"]);const kv=["disableAnimation","margin","shrink","variant","className"],Av=(0,g.Ay)(bv,{shouldForwardProp:e=>(0,km.A)(e)||"classes"===e,name:"MuiInputLabel",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(fv.asterisk)]:t.asterisk},t.root,n.formControl&&t.formControl,"small"===n.size&&t.sizeSmall,n.shrink&&t.shrink,!n.disableAnimation&&t.animated,n.focused&&t.focused,t[n.variant]]}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({display:"block",transformOrigin:"top left",whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis",maxWidth:"100%"},n.formControl&&{position:"absolute",left:0,top:0,transform:"translate(0, 20px) scale(1)"},"small"===n.size&&{transform:"translate(0, 17px) scale(1)"},n.shrink&&{transform:"translate(0, -1.5px) scale(0.75)",transformOrigin:"top left",maxWidth:"133%"},!n.disableAnimation&&{transition:t.transitions.create(["color","transform","max-width"],{duration:t.transitions.duration.shorter,easing:t.transitions.easing.easeOut})},"filled"===n.variant&&(0,p.A)({zIndex:1,pointerEvents:"none",transform:"translate(12px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(12px, 13px) scale(1)"},n.shrink&&(0,p.A)({userSelect:"none",pointerEvents:"auto",transform:"translate(12px, 7px) scale(0.75)",maxWidth:"calc(133% - 24px)"},"small"===n.size&&{transform:"translate(12px, 4px) scale(0.75)"})),"outlined"===n.variant&&(0,p.A)({zIndex:1,pointerEvents:"none",transform:"translate(14px, 16px) scale(1)",maxWidth:"calc(100% - 24px)"},"small"===n.size&&{transform:"translate(14px, 9px) scale(1)"},n.shrink&&{userSelect:"none",pointerEvents:"auto",maxWidth:"calc(133% - 32px)",transform:"translate(14px, -9px) scale(0.75)"}))}),Sv=o.forwardRef(function(e,t){const n=(0,y.b)({name:"MuiInputLabel",props:e}),{disableAnimation:r=!1,shrink:o,className:i}=n,a=(0,d.A)(n,kv),s=Zm();let l=o;"undefined"===typeof l&&s&&(l=s.filled||s.focused||s.adornedStart);const c=ng({props:n,muiFormControl:s,states:["size","variant","required","focused"]}),u=(0,p.A)({},n,{disableAnimation:r,formControl:s,shrink:l,size:c.size,variant:c.variant,required:c.required,focused:c.focused}),m=(e=>{const{classes:t,formControl:n,size:r,shrink:o,disableAnimation:i,variant:a,required:s}=e,l={root:["root",n&&"formControl",!i&&"animated",o&&"shrink",r&&"normal"!==r&&"size".concat((0,I.A)(r)),a],asterisk:[s&&"asterisk"]},c=(0,f.A)(l,xv,t);return(0,p.A)({},t,c)})(u);return(0,R.jsx)(Av,(0,p.A)({"data-shrink":l,ownerState:u,ref:t,className:(0,h.A)(m.root,i)},a,{classes:m}))});var _v=n(1867);function wv(e){return(0,P.Ay)("MuiFormControl",e)}(0,z.A)("MuiFormControl",["root","marginNone","marginNormal","marginDense","fullWidth","disabled"]);const Tv=["children","className","color","component","disabled","error","focused","fullWidth","hiddenLabel","margin","required","size","variant"],Ev=(0,g.Ay)("div",{name:"MuiFormControl",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:n}=e;return(0,p.A)({},t.root,t["margin".concat((0,I.A)(n.margin))],n.fullWidth&&t.fullWidth)}})(e=>{let{ownerState:t}=e;return(0,p.A)({display:"inline-flex",flexDirection:"column",position:"relative",minWidth:0,padding:0,margin:0,border:0,verticalAlign:"top"},"normal"===t.margin&&{marginTop:16,marginBottom:8},"dense"===t.margin&&{marginTop:8,marginBottom:4},t.fullWidth&&{width:"100%"})}),Cv=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiFormControl"}),{children:r,className:i,color:a="primary",component:s="div",disabled:l=!1,error:c=!1,focused:u,fullWidth:m=!1,hiddenLabel:g=!1,margin:v="none",required:b=!1,size:x="medium",variant:k="outlined"}=n,A=(0,d.A)(n,Tv),S=(0,p.A)({},n,{color:a,component:s,disabled:l,error:c,fullWidth:m,hiddenLabel:g,margin:v,required:b,size:x,variant:k}),_=(e=>{const{classes:t,margin:n,fullWidth:r}=e,o={root:["root","none"!==n&&"margin".concat((0,I.A)(n)),r&&"fullWidth"]};return(0,f.A)(o,wv,t)})(S),[w,T]=o.useState(()=>{let e=!1;return r&&o.Children.forEach(r,t=>{if(!(0,_v.A)(t,["Input","Select"]))return;const n=(0,_v.A)(t,["Select"])?t.props.input:t;n&&n.props.startAdornment&&(e=!0)}),e}),[E,C]=o.useState(()=>{let e=!1;return r&&o.Children.forEach(r,t=>{(0,_v.A)(t,["Input","Select"])&&(Ly(t.props,!0)||Ly(t.props.inputProps,!0))&&(e=!0)}),e}),[L,z]=o.useState(!1);l&&L&&z(!1);const P=void 0===u||l?L:u;let N;const j=o.useMemo(()=>({adornedStart:w,setAdornedStart:T,color:a,disabled:l,error:c,filled:E,focused:P,fullWidth:m,hiddenLabel:g,size:x,onBlur:()=>{z(!1)},onEmpty:()=>{C(!1)},onFilled:()=>{C(!0)},onFocus:()=>{z(!0)},registerEffect:N,required:b,variant:k}),[w,a,l,c,E,P,m,g,N,b,x,k]);return(0,R.jsx)(Qm.Provider,{value:j,children:(0,R.jsx)(Ev,(0,p.A)({as:s,ownerState:S,className:(0,h.A)(_.root,i),ref:t},A,{children:r}))})}),Iv=Cv;function Lv(e){return(0,P.Ay)("MuiFormHelperText",e)}const zv=(0,z.A)("MuiFormHelperText",["root","error","disabled","sizeSmall","sizeMedium","contained","focused","filled","required"]);var Pv;const Nv=["children","className","component","disabled","error","filled","focused","margin","required","variant"],Rv=(0,g.Ay)("p",{name:"MuiFormHelperText",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.size&&t["size".concat((0,I.A)(n.size))],n.contained&&t.contained,n.filled&&t.filled]}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({color:(t.vars||t).palette.text.secondary},t.typography.caption,{textAlign:"left",marginTop:3,marginRight:0,marginBottom:0,marginLeft:0,["&.".concat(zv.disabled)]:{color:(t.vars||t).palette.text.disabled},["&.".concat(zv.error)]:{color:(t.vars||t).palette.error.main}},"small"===n.size&&{marginTop:4},n.contained&&{marginLeft:14,marginRight:14})}),jv=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiFormHelperText"}),{children:r,className:o,component:i="p"}=n,a=(0,d.A)(n,Nv),s=ng({props:n,muiFormControl:Zm(),states:["variant","size","disabled","error","filled","focused","required"]}),l=(0,p.A)({},n,{component:i,contained:"filled"===s.variant||"outlined"===s.variant,variant:s.variant,size:s.size,disabled:s.disabled,error:s.error,filled:s.filled,focused:s.focused,required:s.required}),c=(e=>{const{classes:t,contained:n,size:r,disabled:o,error:i,filled:a,focused:s,required:l}=e,c={root:["root",o&&"disabled",i&&"error",r&&"size".concat((0,I.A)(r)),n&&"contained",s&&"focused",a&&"filled",l&&"required"]};return(0,f.A)(c,Lv,t)})(l);return(0,R.jsx)(Rv,(0,p.A)({as:i,ownerState:l,className:(0,h.A)(c.root,o),ref:t},a,{children:" "===r?Pv||(Pv=(0,R.jsx)("span",{className:"notranslate",children:"\u200b"})):r}))});var Ov=n(5571);function Mv(e){return(0,P.Ay)("MuiList",e)}(0,z.A)("MuiList",["root","padding","dense","subheader"]);const Dv=["children","className","component","dense","disablePadding","subheader"],Fv=(0,g.Ay)("ul",{name:"MuiList",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.disablePadding&&t.padding,n.dense&&t.dense,n.subheader&&t.subheader]}})(e=>{let{ownerState:t}=e;return(0,p.A)({listStyle:"none",margin:0,padding:0,position:"relative"},!t.disablePadding&&{paddingTop:8,paddingBottom:8},t.subheader&&{paddingTop:0})}),Bv=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiList"}),{children:r,className:i,component:a="ul",dense:s=!1,disablePadding:l=!1,subheader:c}=n,u=(0,d.A)(n,Dv),m=o.useMemo(()=>({dense:s}),[s]),g=(0,p.A)({},n,{component:a,dense:s,disablePadding:l}),v=(e=>{const{classes:t,disablePadding:n,dense:r,subheader:o}=e,i={root:["root",!n&&"padding",r&&"dense",o&&"subheader"]};return(0,f.A)(i,Mv,t)})(g);return(0,R.jsx)(Vm.Provider,{value:m,children:(0,R.jsxs)(Fv,(0,p.A)({as:a,className:(0,h.A)(v.root,i),ref:t,ownerState:g},u,{children:[c,r]}))})});function Wv(e){const t=e.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}const Uv=Wv,Vv=["actions","autoFocus","autoFocusItem","children","className","disabledItemsFocusable","disableListWrap","onKeyDown","variant"];function Hv(e,t,n){return e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:n?null:e.firstChild}function Gv(e,t,n){return e===t?n?e.firstChild:e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:n?null:e.lastChild}function qv(e,t){if(void 0===t)return!0;let n=e.innerText;return void 0===n&&(n=e.textContent),n=n.trim().toLowerCase(),0!==n.length&&(t.repeating?n[0]===t.keys[0]:0===n.indexOf(t.keys.join("")))}function Kv(e,t,n,r,o,i){let a=!1,s=o(e,t,!!t&&n);for(;s;){if(s===e.firstChild){if(a)return!1;a=!0}const t=!r&&(s.disabled||"true"===s.getAttribute("aria-disabled"));if(s.hasAttribute("tabindex")&&qv(s,i)&&!t)return s.focus(),!0;s=o(e,s,n)}return!1}const $v=o.forwardRef(function(e,t){const{actions:n,autoFocus:r=!1,autoFocusItem:i=!1,children:a,className:s,disabledItemsFocusable:l=!1,disableListWrap:c=!1,onKeyDown:u,variant:h="selectedMenu"}=e,f=(0,d.A)(e,Vv),m=o.useRef(null),g=o.useRef({keys:[],repeating:!0,previousKeyMatched:!0,lastTime:null});(0,Hm.A)(()=>{r&&m.current.focus()},[r]),o.useImperativeHandle(n,()=>({adjustStyleForScrollbar:(e,t)=>{let{direction:n}=t;const r=!m.current.style.width;if(e.clientHeight{o.isValidElement(e)?(e.props.disabled||("selectedMenu"===h&&e.props.selected||-1===v)&&(v=t),v===t&&(e.props.disabled||e.props.muiSkipListHighlight||e.type.muiSkipListHighlight)&&(v+=1,v>=a.length&&(v=-1))):v===t&&(v+=1,v>=a.length&&(v=-1))});const b=o.Children.map(a,(e,t)=>{if(t===v){const t={};return i&&(t.autoFocus=!0),void 0===e.props.tabIndex&&"selectedMenu"===h&&(t.tabIndex=0),o.cloneElement(e,t)}return e});return(0,R.jsx)(Bv,(0,p.A)({role:"menu",ref:y,className:s,onKeyDown:e=>{const t=m.current,n=e.key,r=(0,Ov.A)(t).activeElement;if("ArrowDown"===n)e.preventDefault(),Kv(t,r,c,l,Hv);else if("ArrowUp"===n)e.preventDefault(),Kv(t,r,c,l,Gv);else if("Home"===n)e.preventDefault(),Kv(t,null,c,l,Hv);else if("End"===n)e.preventDefault(),Kv(t,null,c,l,Gv);else if(1===n.length){const o=g.current,i=n.toLowerCase(),a=performance.now();o.keys.length>0&&(a-o.lastTime>500?(o.keys=[],o.repeating=!0,o.previousKeyMatched=!0):o.repeating&&i!==o.keys[0]&&(o.repeating=!1)),o.lastTime=a,o.keys.push(i);const s=r&&!o.repeating&&qv(r,o);o.previousKeyMatched&&(s||Kv(t,r,!1,l,Hv,o))?e.preventDefault():o.previousKeyMatched=!1}u&&u(e)},tabIndex:r?0:-1},f,{children:b}))}),Yv=$v;var Xv=n(3806),Jv=n(6614);const Qv=["input","select","textarea","a[href]","button","[tabindex]","audio[controls]","video[controls]",'[contenteditable]:not([contenteditable="false"])'].join(",");function Zv(e){const t=[],n=[];return Array.from(e.querySelectorAll(Qv)).forEach((e,r)=>{const o=function(e){const t=parseInt(e.getAttribute("tabindex")||"",10);return Number.isNaN(t)?"true"===e.contentEditable||("AUDIO"===e.nodeName||"VIDEO"===e.nodeName||"DETAILS"===e.nodeName)&&null===e.getAttribute("tabindex")?0:e.tabIndex:t}(e);-1!==o&&function(e){return!(e.disabled||"INPUT"===e.tagName&&"hidden"===e.type||function(e){if("INPUT"!==e.tagName||"radio"!==e.type)return!1;if(!e.name)return!1;const t=t=>e.ownerDocument.querySelector('input[type="radio"]'.concat(t));let n=t('[name="'.concat(e.name,'"]:checked'));return n||(n=t('[name="'.concat(e.name,'"]'))),n!==e}(e))}(e)&&(0===o?t.push(e):n.push({documentOrder:r,tabIndex:o,node:e}))}),n.sort((e,t)=>e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex).map(e=>e.node).concat(t)}function eb(){return!0}const tb=function(e){const{children:t,disableAutoFocus:n=!1,disableEnforceFocus:r=!1,disableRestoreFocus:i=!1,getTabbable:a=Zv,isEnabled:s=eb,open:l}=e,c=o.useRef(!1),u=o.useRef(null),d=o.useRef(null),p=o.useRef(null),h=o.useRef(null),f=o.useRef(!1),m=o.useRef(null),g=(0,v.A)(Wg(t),m),y=o.useRef(null);o.useEffect(()=>{l&&m.current&&(f.current=!n)},[n,l]),o.useEffect(()=>{if(!l||!m.current)return;const e=(0,Bg.A)(m.current);return m.current.contains(e.activeElement)||(m.current.hasAttribute("tabIndex")||m.current.setAttribute("tabIndex","-1"),f.current&&m.current.focus()),()=>{i||(p.current&&p.current.focus&&(c.current=!0,p.current.focus()),p.current=null)}},[l]),o.useEffect(()=>{if(!l||!m.current)return;const e=(0,Bg.A)(m.current),t=t=>{y.current=t,!r&&s()&&"Tab"===t.key&&e.activeElement===m.current&&t.shiftKey&&(c.current=!0,d.current&&d.current.focus())},n=()=>{const t=m.current;if(null===t)return;if(!e.hasFocus()||!s()||c.current)return void(c.current=!1);if(t.contains(e.activeElement))return;if(r&&e.activeElement!==u.current&&e.activeElement!==d.current)return;if(e.activeElement!==h.current)h.current=null;else if(null!==h.current)return;if(!f.current)return;let n=[];if(e.activeElement!==u.current&&e.activeElement!==d.current||(n=a(m.current)),n.length>0){var o,i;const e=Boolean((null==(o=y.current)?void 0:o.shiftKey)&&"Tab"===(null==(i=y.current)?void 0:i.key)),t=n[0],r=n[n.length-1];"string"!==typeof t&&"string"!==typeof r&&(e?r.focus():t.focus())}else t.focus()};e.addEventListener("focusin",n),e.addEventListener("keydown",t,!0);const o=setInterval(()=>{e.activeElement&&"BODY"===e.activeElement.tagName&&n()},50);return()=>{clearInterval(o),e.removeEventListener("focusin",n),e.removeEventListener("keydown",t,!0)}},[n,r,i,s,l,a]);const b=e=>{null===p.current&&(p.current=e.relatedTarget),f.current=!0};return(0,R.jsxs)(o.Fragment,{children:[(0,R.jsx)("div",{tabIndex:l?0:-1,onFocus:b,ref:u,"data-testid":"sentinelStart"}),o.cloneElement(t,{ref:g,onFocus:e=>{null===p.current&&(p.current=e.relatedTarget),f.current=!0,h.current=e.target;const n=t.props.onFocus;n&&n(e)}}),(0,R.jsx)("div",{tabIndex:l?0:-1,onFocus:b,ref:d,"data-testid":"sentinelEnd"})]})};var nb=n(1941);const rb=o.forwardRef(function(e,t){const{children:n,container:r,disablePortal:i=!1}=e,[a,s]=o.useState(null),l=(0,v.A)(o.isValidElement(n)?Wg(n):null,t);if((0,Af.A)(()=>{i||s(function(e){return"function"===typeof e?e():e}(r)||document.body)},[r,i]),(0,Af.A)(()=>{if(a&&!i)return(0,nb.A)(t,a),()=>{(0,nb.A)(t,null)}},[t,a,i]),i){if(o.isValidElement(n)){const e={ref:l};return o.cloneElement(n,e)}return(0,R.jsx)(o.Fragment,{children:n})}return(0,R.jsx)(o.Fragment,{children:a?Hg.createPortal(n,a):a})}),ob=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],ib={entering:{opacity:1},entered:{opacity:1}},ab=o.forwardRef(function(e,t){const n=Sg(),r={enter:n.transitions.duration.enteringScreen,exit:n.transitions.duration.leavingScreen},{addEndListener:i,appear:a=!0,children:s,easing:l,in:c,onEnter:u,onEntered:h,onEntering:f,onExit:m,onExited:g,onExiting:y,style:v,timeout:b=r,TransitionComponent:x=Zg}=e,k=(0,d.A)(e,ob),A=o.useRef(null),S=(0,B.A)(A,Wg(s),t),_=e=>t=>{if(e){const n=A.current;void 0===t?e(n):e(n,t)}},w=_(f),T=_((e,t)=>{ey(e);const r=ty({style:v,timeout:b,easing:l},{mode:"enter"});e.style.webkitTransition=n.transitions.create("opacity",r),e.style.transition=n.transitions.create("opacity",r),u&&u(e,t)}),E=_(h),C=_(y),I=_(e=>{const t=ty({style:v,timeout:b,easing:l},{mode:"exit"});e.style.webkitTransition=n.transitions.create("opacity",t),e.style.transition=n.transitions.create("opacity",t),m&&m(e)}),L=_(g);return(0,R.jsx)(x,(0,p.A)({appear:a,in:c,nodeRef:A,onEnter:T,onEntered:E,onEntering:w,onExit:I,onExited:L,onExiting:C,addEndListener:e=>{i&&i(A.current,e)},timeout:b},k,{children:(e,t)=>o.cloneElement(s,(0,p.A)({style:(0,p.A)({opacity:0,visibility:"exited"!==e||c?void 0:"hidden"},ib[e],v,s.props.style),ref:S},t))}))}),sb=ab;function lb(e){return(0,P.Ay)("MuiBackdrop",e)}(0,z.A)("MuiBackdrop",["root","invisible"]);const cb=["children","className","component","components","componentsProps","invisible","open","slotProps","slots","TransitionComponent","transitionDuration"],ub=(0,g.Ay)("div",{name:"MuiBackdrop",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.invisible&&t.invisible]}})(e=>{let{ownerState:t}=e;return(0,p.A)({position:"fixed",display:"flex",alignItems:"center",justifyContent:"center",right:0,bottom:0,top:0,left:0,backgroundColor:"rgba(0, 0, 0, 0.5)",WebkitTapHighlightColor:"transparent"},t.invisible&&{backgroundColor:"transparent"})}),db=o.forwardRef(function(e,t){var n,r,o;const i=(0,y.b)({props:e,name:"MuiBackdrop"}),{children:a,className:s,component:l="div",components:c={},componentsProps:u={},invisible:m=!1,open:g,slotProps:v={},slots:b={},TransitionComponent:x=sb,transitionDuration:k}=i,A=(0,d.A)(i,cb),S=(0,p.A)({},i,{component:l,invisible:m}),_=(e=>{const{classes:t,invisible:n}=e,r={root:["root",n&&"invisible"]};return(0,f.A)(r,lb,t)})(S),w=null!=(n=v.root)?n:u.root;return(0,R.jsx)(x,(0,p.A)({in:g,timeout:k},A,{children:(0,R.jsx)(ub,(0,p.A)({"aria-hidden":!0},w,{as:null!=(r=null!=(o=b.root)?o:c.Root)?r:l,className:(0,h.A)(_.root,s,null==w?void 0:w.className),ownerState:(0,p.A)({},S,null==w?void 0:w.ownerState),classes:_,ref:t,children:a}))}))});var pb=n(4849);function hb(e,t){t?e.setAttribute("aria-hidden","true"):e.removeAttribute("aria-hidden")}function fb(e){return parseInt((0,ky.A)(e).getComputedStyle(e).paddingRight,10)||0}function mb(e,t,n,r,o){const i=[t,n,...r];[].forEach.call(e.children,e=>{const t=-1===i.indexOf(e),n=!function(e){const t=-1!==["TEMPLATE","SCRIPT","STYLE","LINK","MAP","META","NOSCRIPT","PICTURE","COL","COLGROUP","PARAM","SLOT","SOURCE","TRACK"].indexOf(e.tagName),n="INPUT"===e.tagName&&"hidden"===e.getAttribute("type");return t||n}(e);t&&n&&hb(e,o)})}function gb(e,t){let n=-1;return e.some((e,r)=>!!t(e)&&(n=r,!0)),n}function yb(e,t){const n=[],r=e.container;if(!t.disableScrollLock){if(function(e){const t=(0,Bg.A)(e);return t.body===e?(0,ky.A)(e).innerWidth>t.documentElement.clientWidth:e.scrollHeight>e.clientHeight}(r)){const e=Wv((0,Bg.A)(r));n.push({value:r.style.paddingRight,property:"padding-right",el:r}),r.style.paddingRight="".concat(fb(r)+e,"px");const t=(0,Bg.A)(r).querySelectorAll(".mui-fixed");[].forEach.call(t,t=>{n.push({value:t.style.paddingRight,property:"padding-right",el:t}),t.style.paddingRight="".concat(fb(t)+e,"px")})}let e;if(r.parentNode instanceof DocumentFragment)e=(0,Bg.A)(r).body;else{const t=r.parentElement,n=(0,ky.A)(r);e="HTML"===(null==t?void 0:t.nodeName)&&"scroll"===n.getComputedStyle(t).overflowY?t:r}n.push({value:e.style.overflow,property:"overflow",el:e},{value:e.style.overflowX,property:"overflow-x",el:e},{value:e.style.overflowY,property:"overflow-y",el:e}),e.style.overflow="hidden"}return()=>{n.forEach(e=>{let{value:t,el:n,property:r}=e;t?n.style.setProperty(r,t):n.style.removeProperty(r)})}}const vb=new class{constructor(){this.containers=void 0,this.modals=void 0,this.modals=[],this.containers=[]}add(e,t){let n=this.modals.indexOf(e);if(-1!==n)return n;n=this.modals.length,this.modals.push(e),e.modalRef&&hb(e.modalRef,!1);const r=function(e){const t=[];return[].forEach.call(e.children,e=>{"true"===e.getAttribute("aria-hidden")&&t.push(e)}),t}(t);mb(t,e.mount,e.modalRef,r,!0);const o=gb(this.containers,e=>e.container===t);return-1!==o?(this.containers[o].modals.push(e),n):(this.containers.push({modals:[e],container:t,restore:null,hiddenSiblings:r}),n)}mount(e,t){const n=gb(this.containers,t=>-1!==t.modals.indexOf(e)),r=this.containers[n];r.restore||(r.restore=yb(r,t))}remove(e){let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];const n=this.modals.indexOf(e);if(-1===n)return n;const r=gb(this.containers,t=>-1!==t.modals.indexOf(e)),o=this.containers[r];if(o.modals.splice(o.modals.indexOf(e),1),this.modals.splice(n,1),0===o.modals.length)o.restore&&o.restore(),e.modalRef&&hb(e.modalRef,t),mb(o.container,e.mount,e.modalRef,o.hiddenSiblings,!1),this.containers.splice(r,1);else{const e=o.modals[o.modals.length-1];e.modalRef&&hb(e.modalRef,!1)}return n}isTopModal(e){return this.modals.length>0&&this.modals[this.modals.length-1]===e}};const bb=function(e){const{container:t,disableEscapeKeyDown:n=!1,disableScrollLock:r=!1,manager:i=vb,closeAfterTransition:a=!1,onTransitionEnter:s,onTransitionExited:l,children:c,onClose:u,open:d,rootRef:h}=e,f=o.useRef({}),m=o.useRef(null),g=o.useRef(null),y=(0,v.A)(g,h),[b,x]=o.useState(!d),k=function(e){return!!e&&e.props.hasOwnProperty("in")}(c);let S=!0;"false"!==e["aria-hidden"]&&!1!==e["aria-hidden"]||(S=!1);const _=()=>(f.current.modalRef=g.current,f.current.mount=m.current,f.current),w=()=>{i.mount(_(),{disableScrollLock:r}),g.current&&(g.current.scrollTop=0)},T=(0,Dg.A)(()=>{const e=function(e){return"function"===typeof e?e():e}(t)||(0,Bg.A)(m.current).body;i.add(_(),e),g.current&&w()}),E=o.useCallback(()=>i.isTopModal(_()),[i]),C=(0,Dg.A)(e=>{m.current=e,e&&(d&&E()?w():g.current&&hb(g.current,S))}),I=o.useCallback(()=>{i.remove(_(),S)},[S,i]);o.useEffect(()=>()=>{I()},[I]),o.useEffect(()=>{d?T():k&&a||I()},[d,I,k,a,T]);const L=e=>t=>{var r;null==(r=e.onKeyDown)||r.call(e,t),"Escape"===t.key&&229!==t.which&&E()&&(n||(t.stopPropagation(),u&&u(t,"escapeKeyDown")))},z=e=>t=>{var n;null==(n=e.onClick)||n.call(e,t),t.target===t.currentTarget&&u&&u(t,"backdropClick")};return{getRootProps:function(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const n=A(e);delete n.onTransitionEnter,delete n.onTransitionExited;const r=(0,p.A)({},n,t);return(0,p.A)({role:"presentation"},r,{onKeyDown:L(r),ref:y})},getBackdropProps:function(){const e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return(0,p.A)({"aria-hidden":!0},e,{onClick:z(e),open:d})},getTransitionProps:()=>({onEnter:(0,pb.A)(()=>{x(!1),s&&s()},null==c?void 0:c.props.onEnter),onExited:(0,pb.A)(()=>{x(!0),l&&l(),a&&I()},null==c?void 0:c.props.onExited)}),rootRef:y,portalRef:C,isTopModal:E,exited:b,hasTransition:k}};function xb(e){return(0,P.Ay)("MuiModal",e)}(0,z.A)("MuiModal",["root","hidden","backdrop"]);const kb=["BackdropComponent","BackdropProps","classes","className","closeAfterTransition","children","container","component","components","componentsProps","disableAutoFocus","disableEnforceFocus","disableEscapeKeyDown","disablePortal","disableRestoreFocus","disableScrollLock","hideBackdrop","keepMounted","onBackdropClick","onClose","onTransitionEnter","onTransitionExited","open","slotProps","slots","theme"],Ab=(0,g.Ay)("div",{name:"MuiModal",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,!n.open&&n.exited&&t.hidden]}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({position:"fixed",zIndex:(t.vars||t).zIndex.modal,right:0,bottom:0,top:0,left:0},!n.open&&n.exited&&{visibility:"hidden"})}),Sb=(0,g.Ay)(db,{name:"MuiModal",slot:"Backdrop",overridesResolver:(e,t)=>t.backdrop})({zIndex:-1}),_b=o.forwardRef(function(e,t){var n,r,i,a,s,l;const c=(0,y.b)({name:"MuiModal",props:e}),{BackdropComponent:u=Sb,BackdropProps:m,className:g,closeAfterTransition:v=!1,children:b,container:x,component:k,components:A={},componentsProps:S={},disableAutoFocus:_=!1,disableEnforceFocus:w=!1,disableEscapeKeyDown:T=!1,disablePortal:E=!1,disableRestoreFocus:C=!1,disableScrollLock:I=!1,hideBackdrop:L=!1,keepMounted:z=!1,onBackdropClick:P,open:N,slotProps:j,slots:O}=c,M=(0,d.A)(c,kb),D=(0,p.A)({},c,{closeAfterTransition:v,disableAutoFocus:_,disableEnforceFocus:w,disableEscapeKeyDown:T,disablePortal:E,disableRestoreFocus:C,disableScrollLock:I,hideBackdrop:L,keepMounted:z}),{getRootProps:F,getBackdropProps:B,getTransitionProps:W,portalRef:U,isTopModal:V,exited:H,hasTransition:G}=bb((0,p.A)({},D,{rootRef:t})),q=(0,p.A)({},D,{exited:H}),K=(e=>{const{open:t,exited:n,classes:r}=e,o={root:["root",!t&&n&&"hidden"],backdrop:["backdrop"]};return(0,f.A)(o,xb,r)})(q),$={};if(void 0===b.props.tabIndex&&($.tabIndex="-1"),G){const{onEnter:e,onExited:t}=W();$.onEnter=e,$.onExited=t}const Y=null!=(n=null!=(r=null==O?void 0:O.root)?r:A.Root)?n:Ab,X=null!=(i=null!=(a=null==O?void 0:O.backdrop)?a:A.Backdrop)?i:u,J=null!=(s=null==j?void 0:j.root)?s:S.root,Q=null!=(l=null==j?void 0:j.backdrop)?l:S.backdrop,Z=Mg({elementType:Y,externalSlotProps:J,externalForwardedProps:M,getSlotProps:F,additionalProps:{ref:t,as:k},ownerState:q,className:(0,h.A)(g,null==J?void 0:J.className,null==K?void 0:K.root,!q.open&&q.exited&&(null==K?void 0:K.hidden))}),ee=Mg({elementType:X,externalSlotProps:Q,additionalProps:m,getSlotProps:e=>B((0,p.A)({},e,{onClick:t=>{P&&P(t),null!=e&&e.onClick&&e.onClick(t)}})),className:(0,h.A)(null==Q?void 0:Q.className,null==m?void 0:m.className,null==K?void 0:K.backdrop),ownerState:q});return z||N||G&&!H?(0,R.jsx)(rb,{ref:U,container:x,disablePortal:E,children:(0,R.jsxs)(Y,(0,p.A)({},Z,{children:[!L&&u?(0,R.jsx)(X,(0,p.A)({},ee)):null,(0,R.jsx)(tb,{disableEnforceFocus:w,disableAutoFocus:_,disableRestoreFocus:C,isEnabled:V,open:N,children:o.cloneElement(b,$)})]}))}):null}),wb=_b;function Tb(e){return(0,P.Ay)("MuiPopover",e)}(0,z.A)("MuiPopover",["root","paper"]);const Eb=["onEntering"],Cb=["action","anchorEl","anchorOrigin","anchorPosition","anchorReference","children","className","container","elevation","marginThreshold","open","PaperProps","slots","slotProps","transformOrigin","TransitionComponent","transitionDuration","TransitionProps","disableScrollLock"],Ib=["slotProps"];function Lb(e,t){let n=0;return"number"===typeof t?n=t:"center"===t?n=e.height/2:"bottom"===t&&(n=e.height),n}function zb(e,t){let n=0;return"number"===typeof t?n=t:"center"===t?n=e.width/2:"right"===t&&(n=e.width),n}function Pb(e){return[e.horizontal,e.vertical].map(e=>"number"===typeof e?"".concat(e,"px"):e).join(" ")}function Nb(e){return"function"===typeof e?e():e}const Rb=(0,g.Ay)(wb,{name:"MuiPopover",slot:"Root",overridesResolver:(e,t)=>t.root})({}),jb=(0,g.Ay)(M,{name:"MuiPopover",slot:"Paper",overridesResolver:(e,t)=>t.paper})({position:"absolute",overflowY:"auto",overflowX:"hidden",minWidth:16,minHeight:16,maxWidth:"calc(100% - 32px)",maxHeight:"calc(100% - 32px)",outline:0}),Ob=o.forwardRef(function(e,t){var n,r,i;const a=(0,y.b)({props:e,name:"MuiPopover"}),{action:s,anchorEl:l,anchorOrigin:c={vertical:"top",horizontal:"left"},anchorPosition:u,anchorReference:m="anchorEl",children:g,className:v,container:x,elevation:k=8,marginThreshold:A=16,open:S,PaperProps:_={},slots:w,slotProps:T,transformOrigin:E={vertical:"top",horizontal:"left"},TransitionComponent:C=sy,transitionDuration:I="auto",TransitionProps:{onEntering:L}={},disableScrollLock:z=!1}=a,P=(0,d.A)(a.TransitionProps,Eb),N=(0,d.A)(a,Cb),j=null!=(n=null==T?void 0:T.paper)?n:_,O=o.useRef(),M=(0,B.A)(O,j.ref),D=(0,p.A)({},a,{anchorOrigin:c,anchorReference:m,elevation:k,marginThreshold:A,externalPaperSlotProps:j,transformOrigin:E,TransitionComponent:C,transitionDuration:I,TransitionProps:P}),F=(e=>{const{classes:t}=e;return(0,f.A)({root:["root"],paper:["paper"]},Tb,t)})(D),W=o.useCallback(()=>{if("anchorPosition"===m)return u;const e=Nb(l),t=(e&&1===e.nodeType?e:(0,Ov.A)(O.current).body).getBoundingClientRect();return{top:t.top+Lb(t,c.vertical),left:t.left+zb(t,c.horizontal)}},[l,c.horizontal,c.vertical,u,m]),U=o.useCallback(e=>({vertical:Lb(e,E.vertical),horizontal:zb(e,E.horizontal)}),[E.horizontal,E.vertical]),V=o.useCallback(e=>{const t={width:e.offsetWidth,height:e.offsetHeight},n=U(t);if("none"===m)return{top:null,left:null,transformOrigin:Pb(n)};const r=W();let o=r.top-n.vertical,i=r.left-n.horizontal;const a=o+t.height,s=i+t.width,c=(0,Jv.A)(Nb(l)),u=c.innerHeight-A,d=c.innerWidth-A;if(null!==A&&ou){const e=a-u;o-=e,n.vertical+=e}if(null!==A&&id){const e=s-d;i-=e,n.horizontal+=e}return{top:"".concat(Math.round(o),"px"),left:"".concat(Math.round(i),"px"),transformOrigin:Pb(n)}},[l,m,W,U,A]),[H,G]=o.useState(S),q=o.useCallback(()=>{const e=O.current;if(!e)return;const t=V(e);null!==t.top&&(e.style.top=t.top),null!==t.left&&(e.style.left=t.left),e.style.transformOrigin=t.transformOrigin,G(!0)},[V]);o.useEffect(()=>(z&&window.addEventListener("scroll",q),()=>window.removeEventListener("scroll",q)),[l,z,q]);o.useEffect(()=>{S&&q()}),o.useImperativeHandle(s,()=>S?{updatePosition:()=>{q()}}:null,[S,q]),o.useEffect(()=>{if(!S)return;const e=(0,Xv.A)(()=>{q()}),t=(0,Jv.A)(l);return t.addEventListener("resize",e),()=>{e.clear(),t.removeEventListener("resize",e)}},[l,S,q]);let K=I;"auto"!==I||C.muiSupportAuto||(K=void 0);const $=x||(l?(0,Ov.A)(Nb(l)).body:void 0),Y=null!=(r=null==w?void 0:w.root)?r:Rb,X=null!=(i=null==w?void 0:w.paper)?i:jb,J=Mg({elementType:X,externalSlotProps:(0,p.A)({},j,{style:H?j.style:(0,p.A)({},j.style,{opacity:0})}),additionalProps:{elevation:k,ref:M},ownerState:D,className:(0,h.A)(F.paper,null==j?void 0:j.className)}),Q=Mg({elementType:Y,externalSlotProps:(null==T?void 0:T.root)||{},externalForwardedProps:N,additionalProps:{ref:t,slotProps:{backdrop:{invisible:!0}},container:$,open:S},ownerState:D,className:(0,h.A)(F.root,v)}),{slotProps:Z}=Q,ee=(0,d.A)(Q,Ib);return(0,R.jsx)(Y,(0,p.A)({},ee,!b(Y)&&{slotProps:Z,disableScrollLock:z},{children:(0,R.jsx)(C,(0,p.A)({appear:!0,in:S,onEntering:(e,t)=>{L&&L(e,t),q()},onExited:()=>{G(!1)},timeout:K},P,{children:(0,R.jsx)(X,(0,p.A)({},J,{children:g}))}))}))});function Mb(e){return(0,P.Ay)("MuiMenu",e)}(0,z.A)("MuiMenu",["root","paper","list"]);const Db=["onEntering"],Fb=["autoFocus","children","className","disableAutoFocusItem","MenuListProps","onClose","open","PaperProps","PopoverClasses","transitionDuration","TransitionProps","variant","slots","slotProps"],Bb={vertical:"top",horizontal:"right"},Wb={vertical:"top",horizontal:"left"},Ub=(0,g.Ay)(Ob,{shouldForwardProp:e=>(0,km.A)(e)||"classes"===e,name:"MuiMenu",slot:"Root",overridesResolver:(e,t)=>t.root})({}),Vb=(0,g.Ay)(jb,{name:"MuiMenu",slot:"Paper",overridesResolver:(e,t)=>t.paper})({maxHeight:"calc(100% - 96px)",WebkitOverflowScrolling:"touch"}),Hb=(0,g.Ay)(Yv,{name:"MuiMenu",slot:"List",overridesResolver:(e,t)=>t.list})({outline:0}),Gb=o.forwardRef(function(e,t){var n,r;const i=(0,y.b)({props:e,name:"MuiMenu"}),{autoFocus:a=!0,children:s,className:l,disableAutoFocusItem:c=!1,MenuListProps:u={},onClose:m,open:g,PaperProps:v={},PopoverClasses:b,transitionDuration:x="auto",TransitionProps:{onEntering:k}={},variant:A="selectedMenu",slots:S={},slotProps:_={}}=i,w=(0,d.A)(i.TransitionProps,Db),T=(0,d.A)(i,Fb),E=bf(),C=(0,p.A)({},i,{autoFocus:a,disableAutoFocusItem:c,MenuListProps:u,onEntering:k,PaperProps:v,transitionDuration:x,TransitionProps:w,variant:A}),I=(e=>{const{classes:t}=e;return(0,f.A)({root:["root"],paper:["paper"],list:["list"]},Mb,t)})(C),L=a&&!c&&g,z=o.useRef(null);let P=-1;o.Children.map(s,(e,t)=>{o.isValidElement(e)&&(e.props.disabled||("selectedMenu"===A&&e.props.selected||-1===P)&&(P=t))});const N=null!=(n=S.paper)?n:Vb,j=null!=(r=_.paper)?r:v,O=Mg({elementType:S.root,externalSlotProps:_.root,ownerState:C,className:[I.root,l]}),M=Mg({elementType:N,externalSlotProps:j,ownerState:C,className:I.paper});return(0,R.jsx)(Ub,(0,p.A)({onClose:m,anchorOrigin:{vertical:"bottom",horizontal:E?"right":"left"},transformOrigin:E?Bb:Wb,slots:{paper:N,root:S.root},slotProps:{root:O,paper:M},open:g,ref:t,transitionDuration:x,TransitionProps:(0,p.A)({onEntering:(e,t)=>{z.current&&z.current.adjustStyleForScrollbar(e,{direction:E?"rtl":"ltr"}),k&&k(e,t)}},w),ownerState:C},T,{classes:b,children:(0,R.jsx)(Hb,(0,p.A)({onKeyDown:e=>{"Tab"===e.key&&(e.preventDefault(),m&&m(e,"tabKeyDown"))},actions:z,autoFocus:a&&(-1===P||c),autoFocusItem:L,variant:A},u,{className:(0,h.A)(I.list,u.className),children:s}))}))}),qb=Gb;function Kb(e){return(0,P.Ay)("MuiNativeSelect",e)}const $b=(0,z.A)("MuiNativeSelect",["root","select","multiple","filled","outlined","standard","disabled","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]),Yb=["className","disabled","error","IconComponent","inputRef","variant"],Xb=e=>{let{ownerState:t,theme:n}=e;return(0,p.A)({MozAppearance:"none",WebkitAppearance:"none",userSelect:"none",borderRadius:0,cursor:"pointer","&:focus":(0,p.A)({},n.vars?{backgroundColor:"rgba(".concat(n.vars.palette.common.onBackgroundChannel," / 0.05)")}:{backgroundColor:"light"===n.palette.mode?"rgba(0, 0, 0, 0.05)":"rgba(255, 255, 255, 0.05)"},{borderRadius:0}),"&::-ms-expand":{display:"none"},["&.".concat($b.disabled)]:{cursor:"default"},"&[multiple]":{height:"auto"},"&:not([multiple]) option, &:not([multiple]) optgroup":{backgroundColor:(n.vars||n).palette.background.paper},"&&&":{paddingRight:24,minWidth:16}},"filled"===t.variant&&{"&&&":{paddingRight:32}},"outlined"===t.variant&&{borderRadius:(n.vars||n).shape.borderRadius,"&:focus":{borderRadius:(n.vars||n).shape.borderRadius},"&&&":{paddingRight:32}})},Jb=(0,g.Ay)("select",{name:"MuiNativeSelect",slot:"Select",shouldForwardProp:km.A,overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.select,t[n.variant],n.error&&t.error,{["&.".concat($b.multiple)]:t.multiple}]}})(Xb),Qb=e=>{let{ownerState:t,theme:n}=e;return(0,p.A)({position:"absolute",right:0,top:"calc(50% - .5em)",pointerEvents:"none",color:(n.vars||n).palette.action.active,["&.".concat($b.disabled)]:{color:(n.vars||n).palette.action.disabled}},t.open&&{transform:"rotate(180deg)"},"filled"===t.variant&&{right:7},"outlined"===t.variant&&{right:7})},Zb=(0,g.Ay)("svg",{name:"MuiNativeSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.icon,n.variant&&t["icon".concat((0,I.A)(n.variant))],n.open&&t.iconOpen]}})(Qb),ex=o.forwardRef(function(e,t){const{className:n,disabled:r,error:i,IconComponent:a,inputRef:s,variant:l="standard"}=e,c=(0,d.A)(e,Yb),u=(0,p.A)({},e,{disabled:r,variant:l,error:i}),m=(e=>{const{classes:t,variant:n,disabled:r,multiple:o,open:i,error:a}=e,s={select:["select",n,r&&"disabled",o&&"multiple",a&&"error"],icon:["icon","icon".concat((0,I.A)(n)),i&&"iconOpen",r&&"disabled"]};return(0,f.A)(s,Kb,t)})(u);return(0,R.jsxs)(o.Fragment,{children:[(0,R.jsx)(Jb,(0,p.A)({ownerState:u,className:(0,h.A)(m.select,n),disabled:r,ref:s||t},c)),e.multiple?null:(0,R.jsx)(Zb,{as:a,ownerState:u,className:m.icon})]})});var tx=n(6920);function nx(e){return(0,P.Ay)("MuiSelect",e)}const rx=(0,z.A)("MuiSelect",["root","select","multiple","filled","outlined","standard","disabled","focused","icon","iconOpen","iconFilled","iconOutlined","iconStandard","nativeInput","error"]);var ox;const ix=["aria-describedby","aria-label","autoFocus","autoWidth","children","className","defaultOpen","defaultValue","disabled","displayEmpty","error","IconComponent","inputRef","labelId","MenuProps","multiple","name","onBlur","onChange","onClose","onFocus","onOpen","open","readOnly","renderValue","SelectDisplayProps","tabIndex","type","value","variant"],ax=(0,g.Ay)("div",{name:"MuiSelect",slot:"Select",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["&.".concat(rx.select)]:t.select},{["&.".concat(rx.select)]:t[n.variant]},{["&.".concat(rx.error)]:t.error},{["&.".concat(rx.multiple)]:t.multiple}]}})(Xb,{["&.".concat(rx.select)]:{height:"auto",minHeight:"1.4375em",textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden"}}),sx=(0,g.Ay)("svg",{name:"MuiSelect",slot:"Icon",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.icon,n.variant&&t["icon".concat((0,I.A)(n.variant))],n.open&&t.iconOpen]}})(Qb),lx=(0,g.Ay)("input",{shouldForwardProp:e=>(0,tx.A)(e)&&"classes"!==e,name:"MuiSelect",slot:"NativeInput",overridesResolver:(e,t)=>t.nativeInput})({bottom:0,left:0,position:"absolute",opacity:0,pointerEvents:"none",width:"100%",boxSizing:"border-box"});function cx(e,t){return"object"===typeof t&&null!==t?e===t:String(e)===String(t)}function ux(e){return null==e||"string"===typeof e&&!e.trim()}const dx=o.forwardRef(function(e,t){var n;const{"aria-describedby":r,"aria-label":i,autoFocus:a,autoWidth:s,children:l,className:c,defaultOpen:u,defaultValue:m,disabled:g,displayEmpty:y,error:v=!1,IconComponent:b,inputRef:x,labelId:k,MenuProps:A={},multiple:S,name:_,onBlur:w,onChange:T,onClose:E,onFocus:C,onOpen:L,open:z,readOnly:P,renderValue:N,SelectDisplayProps:j={},tabIndex:O,value:M,variant:D="standard"}=e,F=(0,d.A)(e,ix),[W,U]=(0,sg.A)({controlled:M,default:m,name:"Select"}),[V,H]=(0,sg.A)({controlled:z,default:u,name:"Select"}),G=o.useRef(null),q=o.useRef(null),[K,$]=o.useState(null),{current:Y}=o.useRef(null!=z),[X,J]=o.useState(),Q=(0,B.A)(t,x),Z=o.useCallback(e=>{q.current=e,e&&$(e)},[]),ee=null==K?void 0:K.parentNode;o.useImperativeHandle(Q,()=>({focus:()=>{q.current.focus()},node:G.current,value:W}),[W]),o.useEffect(()=>{u&&V&&K&&!Y&&(J(s?null:ee.clientWidth),q.current.focus())},[K,s]),o.useEffect(()=>{a&&q.current.focus()},[a]),o.useEffect(()=>{if(!k)return;const e=(0,Ov.A)(q.current).getElementById(k);if(e){const t=()=>{getSelection().isCollapsed&&q.current.focus()};return e.addEventListener("click",t),()=>{e.removeEventListener("click",t)}}},[k]);const te=(e,t)=>{e?L&&L(t):E&&E(t),Y||(J(s?null:ee.clientWidth),H(e))},ne=o.Children.toArray(l),re=e=>t=>{let n;if(t.currentTarget.hasAttribute("tabindex")){if(S){n=Array.isArray(W)?W.slice():[];const t=W.indexOf(e.props.value);-1===t?n.push(e.props.value):n.splice(t,1)}else n=e.props.value;if(e.props.onClick&&e.props.onClick(t),W!==n&&(U(n),T)){const r=t.nativeEvent||t,o=new r.constructor(r.type,r);Object.defineProperty(o,"target",{writable:!0,value:{value:n,name:_}}),T(o,e)}S||te(!1,t)}},oe=null!==K&&V;let ie,ae;delete F["aria-invalid"];const se=[];let le=!1,ce=!1;(Ly({value:W})||y)&&(N?ie=N(W):le=!0);const ue=ne.map(e=>{if(!o.isValidElement(e))return null;let t;if(S){if(!Array.isArray(W))throw new Error((0,xy.A)(2));t=W.some(t=>cx(t,e.props.value)),t&&le&&se.push(e.props.children)}else t=cx(W,e.props.value),t&&le&&(ae=e.props.children);return t&&(ce=!0),o.cloneElement(e,{"aria-selected":t?"true":"false",onClick:re(e),onKeyUp:t=>{" "===t.key&&t.preventDefault(),e.props.onKeyUp&&e.props.onKeyUp(t)},role:"option",selected:t,value:void 0,"data-value":e.props.value})});le&&(ie=S?0===se.length?null:se.reduce((e,t,n)=>(e.push(t),n{const{classes:t,variant:n,disabled:r,multiple:o,open:i,error:a}=e,s={select:["select",n,r&&"disabled",o&&"multiple",a&&"error"],icon:["icon","icon".concat((0,I.A)(n)),i&&"iconOpen",r&&"disabled"],nativeInput:["nativeInput"]};return(0,f.A)(s,nx,t)})(fe),ge=(0,p.A)({},A.PaperProps,null==(n=A.slotProps)?void 0:n.paper),ye=(0,Sf.A)();return(0,R.jsxs)(o.Fragment,{children:[(0,R.jsx)(ax,(0,p.A)({ref:Z,tabIndex:de,role:"combobox","aria-controls":ye,"aria-disabled":g?"true":void 0,"aria-expanded":oe?"true":"false","aria-haspopup":"listbox","aria-label":i,"aria-labelledby":[k,he].filter(Boolean).join(" ")||void 0,"aria-describedby":r,onKeyDown:e=>{if(!P){-1!==[" ","ArrowUp","ArrowDown","Enter"].indexOf(e.key)&&(e.preventDefault(),te(!0,e))}},onMouseDown:g||P?null:e=>{0===e.button&&(e.preventDefault(),q.current.focus(),te(!0,e))},onBlur:e=>{!oe&&w&&(Object.defineProperty(e,"target",{writable:!0,value:{value:W,name:_}}),w(e))},onFocus:C},j,{ownerState:fe,className:(0,h.A)(j.className,me.select,c),id:he,children:ux(ie)?ox||(ox=(0,R.jsx)("span",{className:"notranslate",children:"\u200b"})):ie})),(0,R.jsx)(lx,(0,p.A)({"aria-invalid":v,value:Array.isArray(W)?W.join(","):W,name:_,ref:G,"aria-hidden":!0,onChange:e=>{const t=ne.find(t=>t.props.value===e.target.value);void 0!==t&&(U(t.props.value),T&&T(e,t))},tabIndex:-1,disabled:g,className:me.nativeInput,autoFocus:a,ownerState:fe},F)),(0,R.jsx)(sx,{as:b,className:me.icon,ownerState:fe}),(0,R.jsx)(qb,(0,p.A)({id:"menu-".concat(_||""),anchorEl:ee,open:oe,onClose:e=>{te(!1,e)},anchorOrigin:{vertical:"bottom",horizontal:"center"},transformOrigin:{vertical:"top",horizontal:"center"}},A,{MenuListProps:(0,p.A)({"aria-labelledby":k,role:"listbox","aria-multiselectable":S?"true":void 0,disableListWrap:!0,id:ye},A.MenuListProps),slotProps:(0,p.A)({},A.slotProps,{paper:(0,p.A)({},ge,{style:(0,p.A)({minWidth:pe},null!=ge?ge.style:null)})}),children:ue}))]})}),px=dx,hx=(0,Ie.A)((0,R.jsx)("path",{d:"M7 10l5 5 5-5z"}),"ArrowDropDown"),fx=["autoWidth","children","classes","className","defaultOpen","displayEmpty","IconComponent","id","input","inputProps","label","labelId","MenuProps","multiple","native","onClose","onOpen","open","renderValue","SelectDisplayProps","variant"],mx=["root"],gx={name:"MuiSelect",overridesResolver:(e,t)=>t.root,shouldForwardProp:e=>(0,km.A)(e)&&"variant"!==e,slot:"Root"},yx=(0,g.Ay)(Ky,gx)(""),vx=(0,g.Ay)(pv,gx)(""),bx=(0,g.Ay)(ev,gx)(""),xx=o.forwardRef(function(e,t){const n=(0,y.b)({name:"MuiSelect",props:e}),{autoWidth:r=!1,children:i,classes:a={},className:s,defaultOpen:l=!1,displayEmpty:c=!1,IconComponent:u=hx,id:f,input:m,inputProps:g,label:v,labelId:b,MenuProps:x,multiple:k=!1,native:A=!1,onClose:S,onOpen:_,open:w,renderValue:T,SelectDisplayProps:E,variant:C="outlined"}=n,I=(0,d.A)(n,fx),L=A?ex:px,z=ng({props:n,muiFormControl:Zm(),states:["variant","error"]}),P=z.variant||C,N=(0,p.A)({},n,{variant:P,classes:a}),j=(e=>{const{classes:t}=e;return t})(N),O=(0,d.A)(j,mx),M=m||{standard:(0,R.jsx)(yx,{ownerState:N}),outlined:(0,R.jsx)(vx,{label:v,ownerState:N}),filled:(0,R.jsx)(bx,{ownerState:N})}[P],D=(0,B.A)(t,Wg(M));return(0,R.jsx)(o.Fragment,{children:o.cloneElement(M,(0,p.A)({inputComponent:L,inputProps:(0,p.A)({children:i,error:z.error,IconComponent:u,variant:P,type:void 0,multiple:k},A?{id:f}:{autoWidth:r,defaultOpen:l,displayEmpty:c,labelId:b,MenuProps:x,onClose:S,onOpen:_,open:w,renderValue:T,SelectDisplayProps:(0,p.A)({id:f},E)},g,{classes:g?(0,Xf.A)(O,g.classes):O},m?m.props.inputProps:{})},(k&&A||c)&&"outlined"===P?{notched:!0}:{},{ref:D,className:(0,h.A)(M.props.className,s,j.root)},!m&&{variant:P},I))})});xx.muiName="Select";const kx=xx;function Ax(e){return(0,P.Ay)("MuiTextField",e)}(0,z.A)("MuiTextField",["root"]);const Sx=["autoComplete","autoFocus","children","className","color","defaultValue","disabled","error","FormHelperTextProps","fullWidth","helperText","id","InputLabelProps","inputProps","InputProps","inputRef","label","maxRows","minRows","multiline","name","onBlur","onChange","onFocus","placeholder","required","rows","select","SelectProps","type","value","variant"],_x={standard:Ky,filled:ev,outlined:pv},wx=(0,g.Ay)(Iv,{name:"MuiTextField",slot:"Root",overridesResolver:(e,t)=>t.root})({}),Tx=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiTextField"}),{autoComplete:r,autoFocus:o=!1,children:i,className:a,color:s="primary",defaultValue:l,disabled:c=!1,error:u=!1,FormHelperTextProps:m,fullWidth:g=!1,helperText:v,id:b,InputLabelProps:x,inputProps:k,InputProps:A,inputRef:S,label:_,maxRows:w,minRows:T,multiline:E=!1,name:C,onBlur:I,onChange:L,onFocus:z,placeholder:P,required:N=!1,rows:j,select:O=!1,SelectProps:M,type:D,value:F,variant:B="outlined"}=n,W=(0,d.A)(n,Sx),U=(0,p.A)({},n,{autoFocus:o,color:s,disabled:c,error:u,fullWidth:g,multiline:E,required:N,select:O,variant:B}),V=(e=>{const{classes:t}=e;return(0,f.A)({root:["root"]},Ax,t)})(U);const H={};"outlined"===B&&(x&&"undefined"!==typeof x.shrink&&(H.notched=x.shrink),H.label=_),O&&(M&&M.native||(H.id=void 0),H["aria-describedby"]=void 0);const G=(0,Sf.A)(b),q=v&&G?"".concat(G,"-helper-text"):void 0,K=_&&G?"".concat(G,"-label"):void 0,$=_x[B],Y=(0,R.jsx)($,(0,p.A)({"aria-describedby":q,autoComplete:r,autoFocus:o,defaultValue:l,fullWidth:g,multiline:E,name:C,rows:j,maxRows:w,minRows:T,type:D,value:F,id:G,inputRef:S,onBlur:I,onChange:L,onFocus:z,placeholder:P,inputProps:k},H,A));return(0,R.jsxs)(wx,(0,p.A)({className:(0,h.A)(V.root,a),disabled:c,error:u,fullWidth:g,ref:t,required:N,color:s,variant:B,ownerState:U},W,{children:[null!=_&&""!==_&&(0,R.jsx)(Sv,(0,p.A)({htmlFor:G,id:K},x,{children:_})),O?(0,R.jsx)(kx,(0,p.A)({"aria-describedby":q,id:G,labelId:K,value:F,input:Y},M,{children:i})):Y,v&&(0,R.jsx)(jv,(0,p.A)({id:q},m,{children:v}))]}))}),Ex=Tx;const Cx=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:45;if(e.length<=t)return e;const n=t-3,r=Math.ceil(n/2),o=Math.floor(n/2);return"".concat(e.slice(0,r)).concat("...").concat(e.slice(-o))},Ix=e=>{if(!e||"string"!==typeof e)return[];try{if(e.startsWith("file"))return(e=>{const t=e.replace(/^file:\/\//,""),n=t.substring(t.lastIndexOf("/")+1),r=t.substring(0,t.lastIndexOf("/")),o=n.includes(".")?n.substring(n.lastIndexOf(".")):"",i=[];if(t)try{i.push(decodeURIComponent(t))}catch(a){i.push(t)}if(r&&i.push("".concat(r,"/*")),o&&i.push("*".concat(o)),n&&n!==t)try{i.push(decodeURIComponent(n))}catch(s){i.push(n)}return i})(e);if(!e.startsWith("http"))return[];const t=new URL(e),{hostname:n,port:r,protocol:o}=t,i="https:"===o?"443":"80",a=(e=>{if((e=>{const t=/^(\d{1,3}\.){3}\d{1,3}$/.test(e),n=e.includes(":");return t||n})(e))return[e];const t=e.split(".");if(t.length<=1)return[e];if(2===t.length)return[e,"*.".concat(e)];const n=[e],r=t.slice(-2).join(".");for(let o=1;o<=t.length-2;o++){const e="*.".repeat(o),i=t.slice(o).join(".");i===r&&1!==o||n.push("".concat(e).concat(i))}return n})(n);if(r&&r!==i){const e=a[0];return["".concat(e,":").concat(r),"".concat(e,":*"),e,...a.slice(1)]}return a}catch(t){return[]}};var Lx=n(5449),zx=n(3385),Px=n(696);function Nx(e,t){if(void 0===e.inserted[t.name])return e.insert("",t,e.sheet,!0)}function Rx(e,t,n){var r=[],o=(0,Px.Rk)(e,r,n);return r.length<2?n:o+t(r)}var jx,Ox,Mx,Dx=function e(t){for(var n="",r=0;r2&&void 0!==arguments[2]?arguments[2]:1;return"\n text-decoration-line: underline;\n text-decoration-style: ".concat(e,";\n text-decoration-color: ").concat(t,";\n text-decoration-thickness: ").concat(n,"px;\n text-underline-offset: 0.3em;\n -webkit-text-decoration-line: underline;\n -webkit-text-decoration-style: ").concat(e,";\n -webkit-text-decoration-color: ").concat(t,";\n -webkit-text-decoration-thickness: 1px;\n -webkit-text-underline-offset: 0.3em;\n\n opacity: 0.8;\n -webkit-opacity: 0.8;\n &:hover {\n opacity: 1;\n -webkit-opacity: 1;\n }\n")},Gx=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#209CEE";return{[Sn]:"",[_n]:Hx("solid",e),[wn]:Hx("dotted",e),[Tn]:Hx("dashed",e),[En]:Hx("dashed",e,2),[Ln]:Hx("wavy",e),[zn]:Hx("wavy",e,2),[Cn]:"\n border: 1px dashed ".concat(e,";\n display: block;\n padding: 0.2em 0.3em;\n box-sizing: border-box;\n "),[In]:"\n border: 2px dashed ".concat(e,";\n display: block;\n padding: 0.2em 0.3em;\n box-sizing: border-box;\n "),[Pn]:"\n background: linear-gradient(to top, ".concat(e," 50%, transparent 50%);\n "),[Nn]:"\n background: linear-gradient(to top, transparent, ".concat(e," 20%, transparent 60%);\n "),[Rn]:"\n filter: blur(0.2em);\n -webkit-filter: blur(0.2em);\n &:hover {\n filter: none;\n -webkit-filter: none;\n }\n ",[jn]:"\n color: #fff;\n background-color: ".concat(e,";\n "),[On]:"\n opacity: 0.8;\n -webkit-opacity: 0.8;\n display: block;\n padding: 0.25em 0.5em;\n border-left: 0.25em solid ".concat(e,";\n background: rgb(32, 156, 238, 0.2);\n &:hover {\n opacity: 1;\n -webkit-opacity: 1;\n }\n "),[Mn]:"\n background-image: linear-gradient(\n 90deg,\n #3b82f6,\n #9333ea,\n #ec4899,\n #3b82f6\n );\n background-size: 200% auto;\n color: transparent;\n -webkit-background-clip: text;\n background-clip: text;\n animation: ".concat(Wx," 4s linear infinite;\n & * {\n background-color: transparent !important;\n }\n "),[Dn]:"\n animation: ".concat(Ux," 1s infinite;\n "),[Fn]:"\n animation: ".concat(Vx," 2s ease-in-out infinite alternate;\n "),[Bn]:"\n color: #333;\n background: linear-gradient(\n 45deg,\n LightGreen 20%,\n LightPink 20% 40%,\n LightSalmon 40% 60%,\n LightSeaGreen 60% 80%,\n LightSkyBlue 80%\n );\n &:hover {\n color: #111;\n };\n "}},qx=Gx();function Kx(){const{customStyles:e,updateSetting:t}=function(){const{setting:e,updateSetting:t}=cf();return{customStyles:(null===e||void 0===e?void 0:e.customStyles)||[],updateSetting:t}}();return{customStyles:e,addStyle:(0,o.useCallback)(()=>{const e=Un[0],n=crypto.randomUUID(),r="custom_".concat(crypto.randomUUID()),o="Style_".concat(n.slice(0,8)),i=u(u({},e),{},{styleSlug:r,styleName:o});t(e=>u(u({},e),{},{customStyles:[...(null===e||void 0===e?void 0:e.customStyles)||[],i]}))},[t]),deleteStyle:(0,o.useCallback)(e=>{t(t=>u(u({},t),{},{customStyles:((null===t||void 0===t?void 0:t.customStyles)||[]).filter(t=>t.styleSlug!==e)}))},[t]),updateStyle:(0,o.useCallback)((e,n)=>{t(t=>u(u({},t),{},{customStyles:((null===t||void 0===t?void 0:t.customStyles)||[]).map(t=>t.styleSlug===e?u(u({},t),n):t)}))},[t])}}function $x(e){var t,n,r;let{rule:i,setting:a,setRule:s,setSetting:l,handleOpenSetting:c,processActions:d,isContent:p=!1}=e;const h=Mm(),{setting:f,updateSetting:m}=cf(),[g,y]=(0,o.useState)({}),[v,b]=(0,o.useState)([]),[x,k]=(0,o.useState)(""),[A,S]=(0,o.useState)({open:!1,message:""}),{allTextStyles:_}=function(){const{customStyles:e}=Kx(),t=Mm(),n=(0,o.useMemo)(()=>Wn.map(e=>({styleSlug:e,styleName:t(e),styleCode:qx[e]||""})),[t]),r=(0,o.useMemo)(()=>[...n,...e],[n,e]);return{builtinStyles:n,customStyles:e,allTextStyles:r}}(),[w,T]=(0,o.useState)(""),E=(null===f||void 0===f?void 0:f.blacklist)||"",C=(0,o.useMemo)(()=>!(!x||!E)&&function(e){return(arguments.length>1&&void 0!==arguments[1]?arguments[1]:"").split(/\n|,/).some(t=>Do(e,t.trim()))}(w,E),[x,E,w]),I=(0,o.useCallback)(()=>{if(!x)return;const e=E?"".concat(E,"\n").concat(x):x;m(t=>u(u({},t),{},{blacklist:e})),S({open:!0,message:"".concat(h("add_to_blacklist"),": ").concat(x)})},[x,E,m,h]),L=(0,o.useCallback)(()=>{if(!x)return;const e=E.split(/\n|,/).map(e=>e.trim()).filter(e=>e!==x).join("\n");m(t=>u(u({},t),{},{blacklist:e})),S({open:!0,message:"".concat(h("remove_from_blacklist"),": ").concat(x)})},[x,E,m,h]),z=async e=>{try{let{name:t,value:n,checked:r}=e.target;"isPlainText"===t&&(n=r),s(e=>u(u({},e),{},{[t]:n})),d?d({action:_o,args:{[t]:n}}):await ki(_o,{[t]:n})}catch(t){Nr("update rule",t)}};(0,o.useEffect)(()=>{(async()=>{try{let t="";if(p){var e;t=null===(e=window.location)||void 0===e?void 0:e.href}else{const e=await bi();t=(null===e||void 0===e?void 0:e.url)||""}if(t&&"string"===typeof t){T(t);const e=Ix(t);b(e),e.length>0&&k(e[0])}}catch(t){Nr("get domain options",t)}})()},[p]),(0,o.useEffect)(()=>{(async()=>{try{const e={};if(zo){(await xi("command_shortcuts")).forEach(t=>{let{name:n,shortcut:r}=t;e[n]=r})}else{const t=null===a||void 0===a?void 0:a.shortcuts;t&&Object.entries(t).forEach(t=>{let[n,r]=t;e[n]=r.join("+")})}y(e)}catch(e){Nr("query cmds",e)}})()},[null===a||void 0===a?void 0:a.shortcuts]);const P=(0,o.useMemo)(()=>((null===a||void 0===a?void 0:a.transApis)||[]).filter(e=>!e.isDisabled).sort((e,t)=>(e.sortOrder||0)-(t.sortOrder||0)).map(e=>({key:e.apiSlug,name:e.apiName||e.apiSlug})),[null===a||void 0===a?void 0:a.transApis]),N=null===a||void 0===a||null===(t=a.tranboxSetting)||void 0===t?void 0:t.transOpen,j=null===a||void 0===a||null===(n=a.mouseHoverSetting)||void 0===n?void 0:n.useMouseHover,O=null===a||void 0===a||null===(r=a.inputRule)||void 0===r?void 0:r.transOpen,{transOpen:M,apiSlug:D,fromLang:F,toLang:B,textStyle:W,autoScan:U,transOnly:V,hasRichText:H,scanAll:G,isPlainText:q=!1}=i||{},K=!0===q||"true"===q;return(0,R.jsxs)(xm,{sx:{p:2},spacing:2,children:[(0,R.jsxs)(jg,{container:!0,columns:12,spacing:1,children:[(0,R.jsx)(jg,{item:!0,xs:12,children:(0,R.jsx)(ag,{control:(0,R.jsx)(Ag,{checked:"true"===M,onChange:async e=>{try{s(u(u({},i),{},{transOpen:e.target.checked?"true":"false"})),d?d({action:So}):await ki(So)}catch(t){Nr("toggle trans",t)}}}),label:g.toggleTranslate?"".concat(h("translate_alt"),"(").concat(g.toggleTranslate,")"):h("translate_alt")})}),(0,R.jsx)(jg,{item:!0,xs:6,children:(0,R.jsx)(ag,{control:(0,R.jsx)(Ag,{size:"small",name:"autoScan",value:"true"===U?"false":"true",checked:"true"===U,onChange:z}),label:h("autoscan_alt")})}),(0,R.jsx)(jg,{item:!0,xs:6,children:(0,R.jsx)(ag,{control:(0,R.jsx)(Ag,{size:"small",name:"scanAll",value:"true"===G?"false":"true",checked:"true"===G,onChange:z}),label:h("scan_all_nodes")})}),(0,R.jsx)(jg,{item:!0,xs:6,children:(0,R.jsx)(ag,{control:(0,R.jsx)(Ag,{size:"small",name:"hasRichText",value:"true"===H?"false":"true",checked:"true"===H,onChange:z}),label:h("richtext_alt")})}),(0,R.jsx)(jg,{item:!0,xs:6,children:(0,R.jsx)(ag,{control:(0,R.jsx)(Ag,{size:"small",name:"transOnly",value:"true"===V?"false":"true",checked:"true"===V,onChange:z}),label:h("transonly_alt")})}),(0,R.jsx)(jg,{item:!0,xs:6,children:(0,R.jsx)(ag,{control:(0,R.jsx)(Ag,{size:"small",name:"tranboxEnabled",value:!N,checked:N,onChange:async e=>{try{l(t=>u(u({},t),{},{tranboxSetting:u(u({},t.tranboxSetting),{},{transOpen:e.target.checked})})),d?d({action:wo}):await ki(wo)}catch(t){Nr("toggle transbox",t)}}}),label:h("selection_translate")})}),(0,R.jsx)(jg,{item:!0,xs:6,children:(0,R.jsx)(ag,{control:(0,R.jsx)(Ag,{size:"small",name:"mouseHoverEnabled",value:!j,checked:j,onChange:async e=>{try{l(t=>u(u({},t),{},{mouseHoverSetting:u(u({},t.mouseHoverSetting),{},{useMouseHover:e.target.checked})})),d?d({action:To}):await ki(To)}catch(t){Nr("toggle mousehover",t)}}}),label:h("mousehover_translate")})}),(0,R.jsx)(jg,{item:!0,xs:6,children:(0,R.jsx)(ag,{control:(0,R.jsx)(Ag,{size:"small",name:"inputTransEnabled",value:!O,checked:O,onChange:async e=>{try{l(t=>u(u({},t),{},{inputRule:u(u({},t.inputRule),{},{transOpen:e.target.checked})})),d?d({action:Eo}):await ki(Eo)}catch(t){Nr("toggle inputtrans",t)}}}),label:h("input_translate")})}),(0,R.jsx)(jg,{item:!0,xs:6,children:(0,R.jsx)(ag,{control:(0,R.jsx)(Ag,{size:"small",name:"isPlainText",value:!K,checked:K,onChange:z}),label:h("plain_text_translate")})})]}),(0,R.jsxs)(xm,{direction:"row",spacing:2,children:[(0,R.jsx)(Ex,{select:!0,SelectProps:{MenuProps:{disablePortal:!0}},size:"small",value:F,name:"fromLang",label:h("from_lang"),onChange:z,fullWidth:!0,children:rn.map(e=>{let[t,n]=e;return(0,R.jsx)(Jm,{value:t,children:n},t)})}),(0,R.jsx)(Ex,{select:!0,SelectProps:{MenuProps:{disablePortal:!0}},size:"small",value:B,name:"toLang",label:h("to_lang"),onChange:z,fullWidth:!0,children:nn.map(e=>{let[t,n]=e;return(0,R.jsx)(Jm,{value:t,children:n},t)})})]}),(0,R.jsxs)(xm,{direction:"row",spacing:2,children:[(0,R.jsx)(Ex,{select:!0,SelectProps:{MenuProps:{disablePortal:!0}},size:"small",value:D,name:"apiSlug",label:h("translate_service"),onChange:z,fullWidth:!0,children:P.map(e=>{let{key:t,name:n}=e;return(0,R.jsx)(Jm,{value:t,children:n},t)})}),(0,R.jsx)(Ex,{select:!0,SelectProps:{MenuProps:{disablePortal:!0}},size:"small",value:W,name:"textStyle",label:g.toggleStyle?"".concat(h("text_style_alt"),"(").concat(g.toggleStyle,")"):h("text_style_alt"),onChange:z,fullWidth:!0,children:_.map(e=>(0,R.jsx)(Jm,{value:e.styleSlug,children:e.styleName},e.styleSlug))})]}),(0,R.jsxs)(xm,{children:[(0,R.jsx)(Ex,{select:!0,SelectProps:{MenuProps:{disablePortal:!0}},size:"small",value:x,label:h("domain"),onChange:e=>k(e.target.value),fullWidth:!0,sx:{mb:1},children:v.map(e=>(0,R.jsx)(Jm,{value:e,title:e,children:Cx(e)},e))}),(0,R.jsxs)(xm,{direction:"row",justifyContent:"space-between",alignItems:"center",children:[(0,R.jsx)(Pm,{variant:"text",onClick:async()=>{try{if(!x)return;const e=u(u({},i),{},{pattern:x});zo&&p?xi("save_rule",e):(async e=>{const t=await Na(),n=t.findIndex(t=>t.pattern!==Vn&&Do(e.pattern,t.pattern));if(-1!==n){const r=t.splice(n,1)[0];e=u(u(u({},r),e),{},{pattern:r.pattern,selector:r.selector,keepSelector:r.keepSelector,blockSelector:r.blockSelector,rootsSelector:r.rootsSelector,ignoreSelector:r.ignoreSelector})}const r={},o=u(u({},Kn),t.find(e=>e.pattern===Vn)||{});Object.keys(Kn).forEach(t=>{if("isPlainText"===t){const n=!0===e[t]||"true"===e[t]?"true":!1===e[t]||"false"===e[t]?"false":qn[t];return void(r[t]=n===o[t]?qn[t]:n)}r[t]=e[t]&&e[t]!==o[t]?e[t]:qn[t]}),t.unshift(r),await Ra(t),mh()})(e),S({open:!0,message:"".concat(h("save_rule"),": ").concat(x)})}catch(e){Nr("save rule",e)}},disabled:0===v.length,children:h("save_rule")}),(0,R.jsx)(Pm,{variant:"text",onClick:C?L:I,disabled:0===v.length,children:h(C?"remove_from_blacklist":"add_to_blacklist")}),(0,R.jsx)(Pm,{variant:"text",onClick:()=>{(async()=>{try{zo&&!Ro()?await xi("clear_caches"):await caches.delete(mo)}catch(e){Nr("clean caches",e)}})()},children:h("clear_cache")})]}),(0,R.jsxs)(xm,{direction:"row",justifyContent:"space-between",alignItems:"center",children:[(0,R.jsx)(Pm,{variant:"text",onClick:()=>{window.open("https://chromewebstore.google.com/detail/kiss-translator/bdiifdefkgmcblbcghdlonllpjhhjgof/reviews","_blank")},children:h("comment_support")}),(0,R.jsx)(Pm,{variant:"text",onClick:()=>{window.open("https://github.com/fishjar/kiss-translator#%E8%B5%9E%E8%B5%8F","_blank")},children:h("appreciate_support")}),(0,R.jsx)(Pm,{variant:"text",onClick:c,children:h("setting")})]})]}),(0,R.jsx)(by,{open:A.open,autoHideDuration:3e3,onClose:()=>S({open:!1,message:""}),anchorOrigin:{vertical:"top",horizontal:"center"},children:(0,R.jsx)(Ue,{onClose:()=>S({open:!1,message:""}),severity:"success",variant:"filled",sx:{width:"100%"},children:A.message})})]})}let Yx;function Xx(){if(Yx)return Yx;const e=document.createElement("div"),t=document.createElement("div");return t.style.width="10px",t.style.height="1px",e.appendChild(t),e.dir="rtl",e.style.fontSize="14px",e.style.width="4px",e.style.height="1px",e.style.position="absolute",e.style.top="-1000px",e.style.overflow="scroll",document.body.appendChild(e),Yx="reverse",e.scrollLeft>0?Yx="default":(e.scrollLeft=1,0===e.scrollLeft&&(Yx="negative")),document.body.removeChild(e),Yx}function Jx(e,t){const n=e.scrollLeft;if("rtl"!==t)return n;switch(Xx()){case"negative":return e.scrollWidth-e.clientWidth+n;case"reverse":return e.scrollWidth-e.clientWidth-n;default:return n}}function Qx(e){return(1+Math.sin(Math.PI*e-Math.PI/2))/2}const Zx=["onChange"],ek={width:99,height:99,position:"absolute",top:-9999,overflow:"scroll"};const tk=(0,Ie.A)((0,R.jsx)("path",{d:"M15.41 16.09l-4.58-4.59 4.58-4.59L14 5.5l-6 6 6 6z"}),"KeyboardArrowLeft"),nk=(0,Ie.A)((0,R.jsx)("path",{d:"M8.59 16.34l4.58-4.59-4.58-4.59L10 5.75l6 6-6 6z"}),"KeyboardArrowRight");function rk(e){return(0,P.Ay)("MuiTabScrollButton",e)}const ok=(0,z.A)("MuiTabScrollButton",["root","vertical","horizontal","disabled"]),ik=["className","slots","slotProps","direction","orientation","disabled"],ak=(0,g.Ay)(Ae,{name:"MuiTabScrollButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.orientation&&t[n.orientation]]}})(e=>{let{ownerState:t}=e;return(0,p.A)({width:40,flexShrink:0,opacity:.8,["&.".concat(ok.disabled)]:{opacity:0}},"vertical"===t.orientation&&{width:"100%",height:40,"& svg":{transform:"rotate(".concat(t.isRtl?-90:90,"deg)")}})}),sk=o.forwardRef(function(e,t){var n,r;const o=(0,y.b)({props:e,name:"MuiTabScrollButton"}),{className:i,slots:a={},slotProps:s={},direction:l}=o,c=(0,d.A)(o,ik),u=bf(),m=(0,p.A)({isRtl:u},o),g=(e=>{const{classes:t,orientation:n,disabled:r}=e,o={root:["root",n,r&&"disabled"]};return(0,f.A)(o,rk,t)})(m),v=null!=(n=a.StartScrollButtonIcon)?n:tk,b=null!=(r=a.EndScrollButtonIcon)?r:nk,x=Mg({elementType:v,externalSlotProps:s.startScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:m}),k=Mg({elementType:b,externalSlotProps:s.endScrollButtonIcon,additionalProps:{fontSize:"small"},ownerState:m});return(0,R.jsx)(ak,(0,p.A)({component:"div",className:(0,h.A)(g.root,i),ref:t,role:null,ownerState:m,tabIndex:null},c,{children:"left"===l?(0,R.jsx)(v,(0,p.A)({},x)):(0,R.jsx)(b,(0,p.A)({},k))}))});function lk(e){return(0,P.Ay)("MuiTabs",e)}const ck=(0,z.A)("MuiTabs",["root","vertical","flexContainer","flexContainerVertical","centered","scroller","fixed","scrollableX","scrollableY","hideScrollbar","scrollButtons","scrollButtonsHideMobile","indicator"]),uk=["aria-label","aria-labelledby","action","centered","children","className","component","allowScrollButtonsMobile","indicatorColor","onChange","orientation","ScrollButtonComponent","scrollButtons","selectionFollowsFocus","slots","slotProps","TabIndicatorProps","TabScrollButtonProps","textColor","value","variant","visibleScrollbar"],dk=(e,t)=>e===t?e.firstChild:t&&t.nextElementSibling?t.nextElementSibling:e.firstChild,pk=(e,t)=>e===t?e.lastChild:t&&t.previousElementSibling?t.previousElementSibling:e.lastChild,hk=(e,t,n)=>{let r=!1,o=n(e,t);for(;o;){if(o===e.firstChild){if(r)return;r=!0}const t=o.disabled||"true"===o.getAttribute("aria-disabled");if(o.hasAttribute("tabindex")&&!t)return void o.focus();o=n(e,o)}},fk=(0,g.Ay)("div",{name:"MuiTabs",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[{["& .".concat(ck.scrollButtons)]:t.scrollButtons},{["& .".concat(ck.scrollButtons)]:n.scrollButtonsHideMobile&&t.scrollButtonsHideMobile},t.root,n.vertical&&t.vertical]}})(e=>{let{ownerState:t,theme:n}=e;return(0,p.A)({overflow:"hidden",minHeight:48,WebkitOverflowScrolling:"touch",display:"flex"},t.vertical&&{flexDirection:"column"},t.scrollButtonsHideMobile&&{["& .".concat(ck.scrollButtons)]:{[n.breakpoints.down("sm")]:{display:"none"}}})}),mk=(0,g.Ay)("div",{name:"MuiTabs",slot:"Scroller",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.scroller,n.fixed&&t.fixed,n.hideScrollbar&&t.hideScrollbar,n.scrollableX&&t.scrollableX,n.scrollableY&&t.scrollableY]}})(e=>{let{ownerState:t}=e;return(0,p.A)({position:"relative",display:"inline-block",flex:"1 1 auto",whiteSpace:"nowrap"},t.fixed&&{overflowX:"hidden",width:"100%"},t.hideScrollbar&&{scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}},t.scrollableX&&{overflowX:"auto",overflowY:"hidden"},t.scrollableY&&{overflowY:"auto",overflowX:"hidden"})}),gk=(0,g.Ay)("div",{name:"MuiTabs",slot:"FlexContainer",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.flexContainer,n.vertical&&t.flexContainerVertical,n.centered&&t.centered]}})(e=>{let{ownerState:t}=e;return(0,p.A)({display:"flex"},t.vertical&&{flexDirection:"column"},t.centered&&{justifyContent:"center"})}),yk=(0,g.Ay)("span",{name:"MuiTabs",slot:"Indicator",overridesResolver:(e,t)=>t.indicator})(e=>{let{ownerState:t,theme:n}=e;return(0,p.A)({position:"absolute",height:2,bottom:0,width:"100%",transition:n.transitions.create()},"primary"===t.indicatorColor&&{backgroundColor:(n.vars||n).palette.primary.main},"secondary"===t.indicatorColor&&{backgroundColor:(n.vars||n).palette.secondary.main},t.vertical&&{height:"100%",width:2,right:0})}),vk=(0,g.Ay)(function(e){const{onChange:t}=e,n=(0,d.A)(e,Zx),r=o.useRef(),i=o.useRef(null),a=()=>{r.current=i.current.offsetHeight-i.current.clientHeight};return(0,Hm.A)(()=>{const e=(0,Xv.A)(()=>{const e=r.current;a(),e!==r.current&&t(r.current)}),n=(0,Jv.A)(i.current);return n.addEventListener("resize",e),()=>{e.clear(),n.removeEventListener("resize",e)}},[t]),o.useEffect(()=>{a(),t(r.current)},[t]),(0,R.jsx)("div",(0,p.A)({style:ek},n,{ref:i}))})({overflowX:"auto",overflowY:"hidden",scrollbarWidth:"none","&::-webkit-scrollbar":{display:"none"}}),bk={};const xk=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiTabs"}),r=Sg(),i=bf(),{"aria-label":a,"aria-labelledby":s,action:l,centered:c=!1,children:u,className:m,component:g="div",allowScrollButtonsMobile:v=!1,indicatorColor:b="primary",onChange:x,orientation:k="horizontal",ScrollButtonComponent:A=sk,scrollButtons:S="auto",selectionFollowsFocus:_,slots:w={},slotProps:T={},TabIndicatorProps:E={},TabScrollButtonProps:C={},textColor:I="primary",value:L,variant:z="standard",visibleScrollbar:P=!1}=n,N=(0,d.A)(n,uk),j="scrollable"===z,O="vertical"===k,M=O?"scrollTop":"scrollLeft",D=O?"top":"left",F=O?"bottom":"right",B=O?"clientHeight":"clientWidth",U=O?"height":"width",V=(0,p.A)({},n,{component:g,allowScrollButtonsMobile:v,indicatorColor:b,orientation:k,vertical:O,scrollButtons:S,textColor:I,variant:z,visibleScrollbar:P,fixed:!j,hideScrollbar:j&&!P,scrollableX:j&&!O,scrollableY:j&&O,centered:c&&!j,scrollButtonsHideMobile:!v}),H=(e=>{const{vertical:t,fixed:n,hideScrollbar:r,scrollableX:o,scrollableY:i,centered:a,scrollButtonsHideMobile:s,classes:l}=e,c={root:["root",t&&"vertical"],scroller:["scroller",n&&"fixed",r&&"hideScrollbar",o&&"scrollableX",i&&"scrollableY"],flexContainer:["flexContainer",t&&"flexContainerVertical",a&&"centered"],indicator:["indicator"],scrollButtons:["scrollButtons",s&&"scrollButtonsHideMobile"],scrollableX:[o&&"scrollableX"],hideScrollbar:[r&&"hideScrollbar"]};return(0,f.A)(c,lk,l)})(V),G=Mg({elementType:w.StartScrollButtonIcon,externalSlotProps:T.startScrollButtonIcon,ownerState:V}),q=Mg({elementType:w.EndScrollButtonIcon,externalSlotProps:T.endScrollButtonIcon,ownerState:V});const[K,$]=o.useState(!1),[Y,X]=o.useState(bk),[J,Q]=o.useState(!1),[Z,ee]=o.useState(!1),[te,ne]=o.useState(!1),[re,oe]=o.useState({overflow:"hidden",scrollbarWidth:0}),ie=new Map,ae=o.useRef(null),se=o.useRef(null),le=()=>{const e=ae.current;let t,n;if(e){const n=e.getBoundingClientRect();t={clientWidth:e.clientWidth,scrollLeft:e.scrollLeft,scrollTop:e.scrollTop,scrollLeftNormalized:Jx(e,i?"rtl":"ltr"),scrollWidth:e.scrollWidth,top:n.top,bottom:n.bottom,left:n.left,right:n.right}}if(e&&!1!==L){const e=se.current.children;if(e.length>0){const t=e[ie.get(L)];0,n=t?t.getBoundingClientRect():null}}return{tabsMeta:t,tabMeta:n}},ce=(0,W.A)(()=>{const{tabsMeta:e,tabMeta:t}=le();let n,r=0;if(O)n="top",t&&e&&(r=t.top-e.top+e.scrollTop);else if(n=i?"right":"left",t&&e){const o=i?e.scrollLeftNormalized+e.clientWidth-e.scrollWidth:e.scrollLeft;r=(i?-1:1)*(t[n]-e[n]+o)}const o={[n]:r,[U]:t?t[U]:0};if(isNaN(Y[n])||isNaN(Y[U]))X(o);else{const e=Math.abs(Y[n]-o[n]),t=Math.abs(Y[U]-o[U]);(e>=1||t>=1)&&X(o)}}),ue=function(e){let{animation:t=!0}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};t?function(e,t,n){let r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:()=>{};const{ease:i=Qx,duration:a=300}=r;let s=null;const l=t[e];let c=!1;const u=()=>{c=!0},d=r=>{if(c)return void o(new Error("Animation cancelled"));null===s&&(s=r);const u=Math.min(1,(r-s)/a);t[e]=i(u)*(n-l)+l,u>=1?requestAnimationFrame(()=>{o(null)}):requestAnimationFrame(d)};l===n?o(new Error("Element already at target position")):requestAnimationFrame(d)}(M,ae.current,e,{duration:r.transitions.duration.standard}):ae.current[M]=e},de=e=>{let t=ae.current[M];O?t+=e:(t+=e*(i?-1:1),t*=i&&"reverse"===Xx()?-1:1),ue(t)},pe=()=>{const e=ae.current[B];let t=0;const n=Array.from(se.current.children);for(let r=0;re){0===r&&(t=e);break}t+=o[B]}return t},he=()=>{de(-1*pe())},fe=()=>{de(pe())},me=o.useCallback(e=>{oe({overflow:null,scrollbarWidth:e})},[]),ge=(0,W.A)(e=>{const{tabsMeta:t,tabMeta:n}=le();if(n&&t)if(n[D]t[F]){const r=t[M]+(n[F]-t[F]);ue(r,{animation:e})}}),ye=(0,W.A)(()=>{j&&!1!==S&&ne(!te)});o.useEffect(()=>{const e=(0,Xv.A)(()=>{ae.current&&ce()});let t;const n=n=>{n.forEach(e=>{e.removedNodes.forEach(e=>{var n;null==(n=t)||n.unobserve(e)}),e.addedNodes.forEach(e=>{var n;null==(n=t)||n.observe(e)})}),e(),ye()},r=(0,Jv.A)(ae.current);let o;return r.addEventListener("resize",e),"undefined"!==typeof ResizeObserver&&(t=new ResizeObserver(e),Array.from(se.current.children).forEach(e=>{t.observe(e)})),"undefined"!==typeof MutationObserver&&(o=new MutationObserver(n),o.observe(se.current,{childList:!0})),()=>{var n,i;e.clear(),r.removeEventListener("resize",e),null==(n=o)||n.disconnect(),null==(i=t)||i.disconnect()}},[ce,ye]),o.useEffect(()=>{const e=Array.from(se.current.children),t=e.length;if("undefined"!==typeof IntersectionObserver&&t>0&&j&&!1!==S){const n=e[0],r=e[t-1],o={root:ae.current,threshold:.99},i=e=>{Q(!e[0].isIntersecting)},a=new IntersectionObserver(i,o);a.observe(n);const s=e=>{ee(!e[0].isIntersecting)},l=new IntersectionObserver(s,o);return l.observe(r),()=>{a.disconnect(),l.disconnect()}}},[j,S,te,null==u?void 0:u.length]),o.useEffect(()=>{$(!0)},[]),o.useEffect(()=>{ce()}),o.useEffect(()=>{ge(bk!==Y)},[ge,Y]),o.useImperativeHandle(l,()=>({updateIndicator:ce,updateScrollButtons:ye}),[ce,ye]);const ve=(0,R.jsx)(yk,(0,p.A)({},E,{className:(0,h.A)(H.indicator,E.className),ownerState:V,style:(0,p.A)({},Y,E.style)}));let be=0;const xe=o.Children.map(u,e=>{if(!o.isValidElement(e))return null;const t=void 0===e.props.value?be:e.props.value;ie.set(t,be);const n=t===L;return be+=1,o.cloneElement(e,(0,p.A)({fullWidth:"fullWidth"===z,indicator:n&&!K&&ve,selected:n,selectionFollowsFocus:_,onChange:x,textColor:I,value:t},1!==be||!1!==L||e.props.tabIndex?{}:{tabIndex:0}))}),ke=(()=>{const e={};e.scrollbarSizeListener=j?(0,R.jsx)(vk,{onChange:me,className:(0,h.A)(H.scrollableX,H.hideScrollbar)}):null;const t=j&&("auto"===S&&(J||Z)||!0===S);return e.scrollButtonStart=t?(0,R.jsx)(A,(0,p.A)({slots:{StartScrollButtonIcon:w.StartScrollButtonIcon},slotProps:{startScrollButtonIcon:G},orientation:k,direction:i?"right":"left",onClick:he,disabled:!J},C,{className:(0,h.A)(H.scrollButtons,C.className)})):null,e.scrollButtonEnd=t?(0,R.jsx)(A,(0,p.A)({slots:{EndScrollButtonIcon:w.EndScrollButtonIcon},slotProps:{endScrollButtonIcon:q},orientation:k,direction:i?"left":"right",onClick:fe,disabled:!Z},C,{className:(0,h.A)(H.scrollButtons,C.className)})):null,e})();return(0,R.jsxs)(fk,(0,p.A)({className:(0,h.A)(H.root,m),ownerState:V,ref:t,as:g},N,{children:[ke.scrollButtonStart,ke.scrollbarSizeListener,(0,R.jsxs)(mk,{className:H.scroller,ownerState:V,style:{overflow:re.overflow,[O?"margin".concat(i?"Left":"Right"):"marginBottom"]:P?void 0:-re.scrollbarWidth},ref:ae,children:[(0,R.jsx)(gk,{"aria-label":a,"aria-labelledby":s,"aria-orientation":"vertical"===k?"vertical":null,className:H.flexContainer,ownerState:V,onKeyDown:e=>{const t=se.current,n=(0,Ov.A)(t).activeElement;if("tab"!==n.getAttribute("role"))return;let r="horizontal"===k?"ArrowLeft":"ArrowUp",o="horizontal"===k?"ArrowRight":"ArrowDown";switch("horizontal"===k&&i&&(r="ArrowRight",o="ArrowLeft"),e.key){case r:e.preventDefault(),hk(t,n,pk);break;case o:e.preventDefault(),hk(t,n,dk);break;case"Home":e.preventDefault(),hk(t,null,dk);break;case"End":e.preventDefault(),hk(t,null,pk)}},ref:se,role:"tablist",children:xe}),K&&ve]}),ke.scrollButtonEnd]}))}),kk=xk;function Ak(e){return(0,P.Ay)("MuiTab",e)}const Sk=(0,z.A)("MuiTab",["root","labelIcon","textColorInherit","textColorPrimary","textColorSecondary","selected","disabled","fullWidth","wrapped","iconWrapper"]),_k=["className","disabled","disableFocusRipple","fullWidth","icon","iconPosition","indicator","label","onChange","onClick","onFocus","selected","selectionFollowsFocus","textColor","value","wrapped"],wk=(0,g.Ay)(Ae,{name:"MuiTab",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:n}=e;return[t.root,n.label&&n.icon&&t.labelIcon,t["textColor".concat((0,I.A)(n.textColor))],n.fullWidth&&t.fullWidth,n.wrapped&&t.wrapped,{["& .".concat(Sk.iconWrapper)]:t.iconWrapper}]}})(e=>{let{theme:t,ownerState:n}=e;return(0,p.A)({},t.typography.button,{maxWidth:360,minWidth:90,position:"relative",minHeight:48,flexShrink:0,padding:"12px 16px",overflow:"hidden",whiteSpace:"normal",textAlign:"center"},n.label&&{flexDirection:"top"===n.iconPosition||"bottom"===n.iconPosition?"column":"row"},{lineHeight:1.25},n.icon&&n.label&&{minHeight:72,paddingTop:9,paddingBottom:9,["& > .".concat(Sk.iconWrapper)]:(0,p.A)({},"top"===n.iconPosition&&{marginBottom:6},"bottom"===n.iconPosition&&{marginTop:6},"start"===n.iconPosition&&{marginRight:t.spacing(1)},"end"===n.iconPosition&&{marginLeft:t.spacing(1)})},"inherit"===n.textColor&&{color:"inherit",opacity:.6,["&.".concat(Sk.selected)]:{opacity:1},["&.".concat(Sk.disabled)]:{opacity:(t.vars||t).palette.action.disabledOpacity}},"primary"===n.textColor&&{color:(t.vars||t).palette.text.secondary,["&.".concat(Sk.selected)]:{color:(t.vars||t).palette.primary.main},["&.".concat(Sk.disabled)]:{color:(t.vars||t).palette.text.disabled}},"secondary"===n.textColor&&{color:(t.vars||t).palette.text.secondary,["&.".concat(Sk.selected)]:{color:(t.vars||t).palette.secondary.main},["&.".concat(Sk.disabled)]:{color:(t.vars||t).palette.text.disabled}},n.fullWidth&&{flexShrink:1,flexGrow:1,flexBasis:0,maxWidth:"none"},n.wrapped&&{fontSize:t.typography.pxToRem(12)})}),Tk=o.forwardRef(function(e,t){const n=(0,y.b)({props:e,name:"MuiTab"}),{className:r,disabled:i=!1,disableFocusRipple:a=!1,fullWidth:s,icon:l,iconPosition:c="top",indicator:u,label:m,onChange:g,onClick:v,onFocus:b,selected:x,selectionFollowsFocus:k,textColor:A="inherit",value:S,wrapped:_=!1}=n,w=(0,d.A)(n,_k),T=(0,p.A)({},n,{disabled:i,disableFocusRipple:a,selected:x,icon:!!l,iconPosition:c,label:!!m,fullWidth:s,textColor:A,wrapped:_}),E=(e=>{const{classes:t,textColor:n,fullWidth:r,wrapped:o,icon:i,label:a,selected:s,disabled:l}=e,c={root:["root",i&&a&&"labelIcon","textColor".concat((0,I.A)(n)),r&&"fullWidth",o&&"wrapped",s&&"selected",l&&"disabled"],iconWrapper:["iconWrapper"]};return(0,f.A)(c,Ak,t)})(T),C=l&&m&&o.isValidElement(l)?o.cloneElement(l,{className:(0,h.A)(E.iconWrapper,l.props.className)}):l;return(0,R.jsxs)(wk,(0,p.A)({focusRipple:!a,className:(0,h.A)(E.root,r),ref:t,role:"tab","aria-selected":x,disabled:i,onClick:e=>{!x&&g&&g(e,S),v&&v(e)},onFocus:e=>{k&&!x&&g&&g(e,S),b&&b(e)},ownerState:T,tabIndex:x?0:-1},w,{children:["top"===c||"start"===c?(0,R.jsxs)(o.Fragment,{children:[C,m]}):(0,R.jsxs)(o.Fragment,{children:[m,C]}),u]}))});var Ek=n(1437),Ck=n(2705),Ik=n(1029),Lk=n(5323);function zk(e){let{text:t,title:n="copy"}=e;const[r,i]=(0,o.useState)(!1);return(0,R.jsx)(Ce,{size:"small",sx:{opacity:.5,"&:hover":{opacity:1}},onClick:async e=>{e.stopPropagation(),await navigator.clipboard.writeText(t),i(!0);const n=setTimeout(()=>{clearTimeout(n),i(!1)},500)},title:n,children:r?(0,R.jsx)(Lk.A,{fontSize:"inherit"}):(0,R.jsx)(Ik.A,{fontSize:"inherit"})})}const Pk=(e,t,n)=>{const r=(e=>Array.isArray(e)?e[0]||"":e||"")(e);return t===At?Al(r.replace(/[\t ]*/gi,"\n")):t===kt?r.replace(/[\t ]*(\r\n|\r|\n)[\t ]*/g,"\n"):Jt.ai.has(t)&&/\r\n|\r|\n/.test(n)?r.replace(/\\r\\n|\\n|\\r/g,"\n"):r};function Nk(e){let{text:t,fromLang:n,toLang:r,apiSlug:i,transApis:a,simpleStyle:s=!1}=e;const l=Mm(),[c,u]=(0,o.useState)(""),[d,p]=(0,o.useState)(!1),[h,f]=(0,o.useState)(""),m=(0,o.useMemo)(()=>a.find(e=>e.apiSlug===i),[a,i]);return(0,o.useEffect)(()=>{if(null===t||void 0===t||!t.trim()||!m)return u(""),p(!1),void f("");let e=!0;const o=new AbortController,i=(e=>Boolean((null===e||void 0===e?void 0:e.useStream)&&Jt.stream.has(e.apiType)&&"disabled"!==(e.streamRenderMode||"disabled")))(m),a=i?({text:n})=>{if(!e||o.signal.aborted)return;const r=Pk(n,m.apiType,t);r&&u(r)}:void 0;return(async()=>{try{p(!0),u(""),f("");const i=e=>kc({text:e,fromLang:n,toLang:r,apiSetting:m,onStreamChunk:a,signal:o.signal}),{trText:s}=m.apiType===xt?await(async(e,t)=>{const n=e.split(/(\r\n|\r|\n)/),r=await Promise.all(n.map(async(e,n)=>n%2!==1&&e.trim()?(await t(e)).trText:e));return{trText:r.join("")}})(t,i):await i(((e,t)=>t===At?e.replace(/\r\n|\r|\n/g,"
"):e)(t,m.apiType));e&&u(Pk(s,m.apiType,t))}catch(i){if("AbortError"===(null===i||void 0===i?void 0:i.name))return;e&&f(i.message)}finally{e&&p(!1)}})(),()=>{e=!1,o.abort()}},[t,n,r,m]),m?s?(0,R.jsx)(Yf,{children:h?(0,R.jsx)(Ue,{severity:"error",children:h}):c?(0,R.jsxs)(xm,{direction:"row",spacing:1,alignItems:"flex-start",children:[d&&(0,R.jsx)(Rh,{size:12,sx:{flex:"0 0 auto",mt:"0.35em"}}),(0,R.jsx)(Uh,{style:{whiteSpace:"pre-line"},children:c})]}):d?(0,R.jsx)(Rh,{size:16}):null}):(0,R.jsx)(Yf,{children:(0,R.jsx)(Ex,{size:"small",label:"".concat(l("translated_text")," - ").concat(m.apiName),fullWidth:!0,multiline:!0,maxRows:10,sx:{"& textarea":{resize:"vertical"}},value:c,helperText:h,InputProps:{startAdornment:d?(0,R.jsx)(Rh,{size:16}):null,endAdornment:(0,R.jsx)(xm,{direction:"row",sx:{position:"absolute",right:0,top:0},children:(0,R.jsx)(zk,{text:c,title:l("copy")})})}})}):null}var Rk=n(561),jk=n(5555);const Ok={};function Mk(e){var t;let{word:n,title:r}=e;const{favWords:i,toggleFav:a}=function(){const{data:e,save:t}=gh(po,Ok,ao),n=(0,o.useCallback)(e=>{t(e),Ma(ao)},[t]),r=(0,o.useCallback)(function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];n(n=>{if(!n[e]){const a={createdAt:Date.now(),timestamp:t,phonetic:r,definition:o,examples:i};return Object.keys(a).forEach(e=>{(null===a[e]||void 0===a[e]||Array.isArray(a[e])&&0===a[e].length||"string"===typeof a[e]&&0===a[e].length)&&delete a[e]}),u(u({},n),{},{[e]:a})}const a=u({},n);return delete a[e],a})},[n]),i=(0,o.useCallback)(e=>{n(t=>u(u({},e.reduce((e,t)=>(e[t]={createdAt:Date.now()},e),{})),t))},[n]),a=(0,o.useCallback)(()=>{n({})},[n]),s=(0,o.useMemo)(()=>Object.entries(e||{}).sort((e,t)=>e[0].localeCompare(t[0])),[e]),l=(0,o.useMemo)(()=>s.map(e=>{let[t]=e;return t}),[s]);return{favWords:e,favList:s,wordList:l,toggleFav:r,mergeWords:i,clearWords:a}}(),{context:s,setting:l}=cf(),[c,d]=(0,o.useState)(!1),p="tranbox"===s&&(null===l||void 0===l||null===(t=l.tranboxSetting)||void 0===t?void 0:t.autoFavWord),h=(0,o.useCallback)(()=>{try{d(!0),a(n)}catch(e){Nr("set fav",e)}finally{d(!1)}},[a,n]);return(0,o.useEffect)(()=>{p&&n&&!i[n]&&h()},[p,i,h,n]),(0,R.jsx)(Ce,{disabled:c,size:"small",onClick:h,title:r,children:i[n]?(0,R.jsx)(Rk.A,{fontSize:"inherit"}):(0,R.jsx)(jk.A,{fontSize:"inherit"})})}var Dk=n(4762);function Fk(){var e,t;return"function"===typeof(null===(e=globalThis.chrome)||void 0===e||null===(t=e.tts)||void 0===t?void 0:t.speak)}function Bk(){var e;return"function"===typeof(null===(e=globalThis.speechSynthesis)||void 0===e?void 0:e.speak)&&"function"===typeof globalThis.SpeechSynthesisUtterance}const Wk=new Set(["end","interrupted","cancelled","error"]);function Uk(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(!Bk())return!1;try{const r=new globalThis.SpeechSynthesisUtterance(e);return r.lang=t,r.onend=n.onEnd,r.onerror=n.onEnd,globalThis.speechSynthesis.speak(r),!0}catch(r){return!1}}function Vk(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"en-US",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};const r=null===e||void 0===e?void 0:e.trim();if(!r)return!1;const o=function(e){const t=String(e||"").trim().replace(/_/g,"-"),n=t.toLowerCase();return t&&"en"!==n&&"auto"!==n&&"detect"!==n&&"und"!==n&&"unknown"!==n&&/^[a-z]{2,3}(-[a-z0-9]{2,8})*$/i.test(t)?t:"en-US"}(t);let i=!1;const a=()=>{var e;i||(i=!0,null===(e=n.onEnd)||void 0===e||e.call(n))};if(Fk())try{return globalThis.chrome.tts.speak(r,{lang:o,onEvent:e=>{Wk.has(null===e||void 0===e?void 0:e.type)&&a()}},()=>{var e,t;null!==(e=globalThis.chrome)&&void 0!==e&&null!==(t=e.runtime)&&void 0!==t&&t.lastError&&(Uk(r,o,{onEnd:a})||a())}),!0}catch(s){return Uk(r,o,{onEnd:a})}return Uk(r,o,{onEnd:a})}function Hk(e){let{src:t}=e;const{error:n,ready:r,playing:i,onPlay:a}=function(e){const t=(0,o.useRef)(null),[n,r]=(0,o.useState)(null),[i,a]=(0,o.useState)(!1),[s,l]=(0,o.useState)(!1),[c,u]=(0,o.useState)(!1),d=(0,o.useCallback)(async()=>{if(t.current)try{await t.current.play()}catch(e){Pr.info("Playback failed:",e),l(!1)}},[]),p=(0,o.useCallback)(()=>{var e;null===(e=t.current)||void 0===e||e.pause()},[]);return(0,o.useEffect)(()=>{if(!e)return;let n=!1;a(!1),r(null),l(!1),u(!0);const o=new Audio;t.current=o;const i=()=>a(!0),s=()=>l(!0),c=()=>l(!1),d=()=>l(!1),p=e=>{n||(r(o.error||e),a(!1),u(!1))};return o.addEventListener("canplaythrough",i),o.addEventListener("play",s),o.addEventListener("pause",c),o.addEventListener("ended",d),o.addEventListener("error",p),(async()=>{try{const t=await xa(e,{},{expect:"audio"});if(n)return;o.src=t,u(!1)}catch(t){n||(Pr.info("Audio fetch failed:",t),r(t),u(!1))}})(),()=>{n=!0,o.pause(),o.removeAttribute("src"),o.removeEventListener("canplaythrough",i),o.removeEventListener("play",s),o.removeEventListener("pause",c),o.removeEventListener("ended",d),o.removeEventListener("error",p)}},[e]),{loading:c,error:n,ready:i,playing:s,onPlay:d,onPause:p}}(t);return n||!r?(0,R.jsx)(Ce,{disabled:!0,size:"small",children:(0,R.jsx)(Dk.A,{fontSize:"inherit"})}):i?(0,R.jsx)(Ce,{color:"primary",size:"small",children:(0,R.jsx)(Dk.A,{fontSize:"inherit"})}):(0,R.jsx)(Ce,{onClick:a,size:"small",children:(0,R.jsx)(Dk.A,{fontSize:"inherit"})})}function Gk(e){let{text:t,lan:n="uk",spd:r=3}=e;if(!t)return null;const o="https://fanyi.baidu.com/gettts?".concat(ls.stringify({lan:n,text:t,spd:r}));return(0,R.jsx)(Hk,{src:o})}function qk(e){let{text:t,lang:n="en-US"}=e;const[r,i]=(0,o.useState)(!1);if(null===t||void 0===t||!t.trim()||!Fk()&&!Bk())return null;return(0,R.jsx)(Ce,{color:r?"primary":"default",onClick:r?void 0:()=>{if(r)return;i(!0);Vk(t,n,{onEnd:()=>i(!1)})||i(!1)},size:"small",sx:{ml:.5,verticalAlign:"middle"},children:(0,R.jsx)(Dk.A,{fontSize:"inherit"})})}const Kk={[pt]:{apiFn:async e=>{var t;const n={text:e},r="".concat(bo,"?").concat(ls.stringify(n)),o=await _i(r);if(o)return o;const i="https://www.bing.com",a="".concat(i,"/dict/search?q=").concat(e,"&FORM=BDVSP6&cc=cn"),s=await xa(a,{credentials:"include"},{useCache:!1});if(!s)return null;const l=(new DOMParser).parseFromString(kl.createHTML(s),"text/html"),c=null===(t=l.querySelector("#headword > h1"))||void 0===t?void 0:t.textContent.trim();if(!c)return null;const u=[];l.querySelectorAll("div.qdef > ul > li").forEach(e=>{var t,n,r,o;const i=null===(t=e.querySelector(".pos"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim(),a=null===(r=e.querySelector(".def"))||void 0===r||null===(o=r.textContent)||void 0===o?void 0:o.trim();u.push({pos:i,def:a})});const d=[];l.querySelectorAll("div.hd_div1>.hd_if>.p1-5").forEach(e=>{var t;const n=null===(t=e.textContent)||void 0===t?void 0:t.trim();d.push(n)});const p=[];l.querySelectorAll(".each_seg>.li_pos").forEach(e=>{var t,n;const r=null===(t=e.querySelector(".pos_lin>.pos"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim(),o=[];e.querySelectorAll(".de_seg>.se_lis").forEach(e=>{var t,n;o.push(null===(t=e.querySelector(".de_co"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim())}),p.push({pos:r,lis:o})});const h=[];l.querySelectorAll("#sentenceSeg .se_li").forEach(e=>{var t,n,r,o;const i=null===(t=e.querySelector(".sen_en"))||void 0===t||null===(n=t.textContent)||void 0===n?void 0:n.trim(),a=null===(r=e.querySelector(".sen_cn"))||void 0===r||null===(o=r.textContent)||void 0===o?void 0:o.trim();i&&a&&h.push({eng:i,chs:a})});const f=[],m=l.querySelector("#bigaud_uk"),g=l.querySelector("#bigaud_us");if(m){var y,v,b,x,k;const e=i+(null===m||void 0===m||null===(y=m.dataset)||void 0===y?void 0:y.mp3link),t=null===(v=m.parentElement)||void 0===v?void 0:v.previousElementSibling,n=null===t||void 0===t||null===(b=t.textContent)||void 0===b||null===(x=b.trim())||void 0===x||null===(k=x.match(/\[(.*?)\]/))||void 0===k?void 0:k[1];f.push({key:"\u82f1",audio:e,phonetic:n})}if(g){var A,S,_,w,T;const e=i+(null===g||void 0===g||null===(A=g.dataset)||void 0===A?void 0:A.mp3link),t=null===(S=g.parentElement)||void 0===S?void 0:S.previousElementSibling,n=null===t||void 0===t||null===(_=t.textContent)||void 0===_||null===(w=_.trim())||void 0===w||null===(T=w.match(/\[(.*?)\]/))||void 0===T?void 0:T[1];f.push({key:"\u7f8e",audio:e,phonetic:n})}if(0===f.length){const e=l.querySelector(".hd_pr"),t=l.querySelector(".hd_prUS");if(e){var E;const t=null===(E=e.textContent)||void 0===E?void 0:E.trim(),n=null===t||void 0===t?void 0:t.match(/\[([^\]]+)\]/);n&&f.push({key:"\u82f1",phonetic:n[1]})}if(t){var C;const e=null===(C=t.textContent)||void 0===C?void 0:C.trim(),n=null===e||void 0===e?void 0:e.match(/\[([^\]]+)\]/);n&&f.push({key:"\u7f8e",phonetic:n[1]})}}const I={word:c,trs:u,aus:f,ecs:p,sentences:h,presents:d};return wi(r,null,I),I},reWord:e=>null===e||void 0===e?void 0:e.word,toText:e=>{var t;return(null===e||void 0===e||null===(t=e.trs)||void 0===t?void 0:t.map(e=>{let{pos:t,def:n}=e;return"".concat(t?"[".concat(t,"] "):"").concat(n)}))||[]},uiAudio:e=>{var t;return(0,R.jsx)(Uh,{component:"div",children:null===e||void 0===e||null===(t=e.aus)||void 0===t?void 0:t.map(e=>{let{key:t,audio:n,phonetic:r}=e;return(0,R.jsxs)(Uh,{component:"div",style:{display:"inline-block",paddingRight:"1em"},children:[(0,R.jsx)(Uh,{component:"span",children:"".concat(t," [").concat(r||"","]")}),(0,R.jsx)(Hk,{src:n})]},t)})})},uiTrans:e=>{var t,n,r,o;return(0,R.jsxs)(Uh,{component:"div",children:[(0,R.jsx)(Uh,{component:"ul",children:null===e||void 0===e||null===(t=e.trs)||void 0===t?void 0:t.map((e,t)=>{let{pos:n,def:r}=e;return(0,R.jsxs)(Uh,{component:"li",children:[n&&"[".concat(n,"] "),r]},t)})}),(null===e||void 0===e||null===(n=e.presents)||void 0===n?void 0:n.length)>0&&(0,R.jsx)(Uh,{component:"div",style:{marginTop:"10px"},children:e.presents.join(", ")}),(null===e||void 0===e||null===(r=e.ecs)||void 0===r?void 0:r.length)>0&&(0,R.jsxs)(Uh,{component:"div",style:{marginTop:"10px"},children:[(0,R.jsx)(Uh,{component:"div",style:{fontWeight:"bold",marginBottom:"5px"},children:"\u82f1\u6c49\u53cc\u89e3"}),e.ecs.map(e=>{let{pos:t,lis:n}=e;return(0,R.jsxs)(Uh,{component:"div",children:[(0,R.jsx)(Uh,{component:"div",children:t}),(0,R.jsx)(Uh,{component:"ul",children:n.map((e,t)=>(0,R.jsx)(Uh,{component:"li",children:e},t))})]},t)})]}),(null===e||void 0===e||null===(o=e.sentences)||void 0===o?void 0:o.length)>0&&(0,R.jsxs)(Uh,{component:"div",style:{marginTop:"10px"},children:[(0,R.jsx)(Uh,{component:"div",style:{fontWeight:"bold",marginBottom:"5px"},children:"\u4f8b\u53e5"}),e.sentences.slice(0,2).map((t,n)=>{var r,o;return(0,R.jsxs)(Uh,{component:"div",style:{marginBottom:"5px"},children:[(0,R.jsx)(Uh,{component:"div",children:null===(r=t.eng)||void 0===r||null===(o=r.split(e.word))||void 0===o?void 0:o.map((t,n,r)=>(0,R.jsxs)("span",{children:[n>0&&(0,R.jsx)("span",{style:{fontWeight:"bold",color:"#1e88e5"},children:e.word}),t]},n))}),(0,R.jsx)(Uh,{component:"div",style:{opacity:"0.6",fontStyle:"italic"},children:t.chs})]},n)})]})]})}},[ht]:{apiFn:async e=>{const t="https://dict.youdao.com/jsonapi_s?".concat(ls.stringify({doctype:"json",jsonversion:4})),n={headers:{accept:"application/json, text/plain, */*","accept-language":"en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7,ja;q=0.6","content-type":"application/x-www-form-urlencoded"},method:"POST",body:ls.stringify({q:e,le:"en",t:3,client:"web",keyfrom:"webdict"})},r=await xa(t,n,{useCache:!0});return r?(await wi(t,n,r),r):null},reWord:e=>{var t,n;return null===e||void 0===e||null===(t=e.ec)||void 0===t||null===(n=t.word)||void 0===n?void 0:n["return-phrase"]},toText:e=>{var t,n,r;return(null===e||void 0===e||null===(t=e.ec)||void 0===t||null===(n=t.word)||void 0===n||null===(r=n.trs)||void 0===r?void 0:r.map(e=>{let{pos:t,tran:n}=e;return"".concat(t?"[".concat(t,"] "):"").concat(n)}))||[]},uiAudio:e=>{var t,n,r,o,i,a,s,l,c,u,d,p;return(0,R.jsxs)(Uh,{component:"div",children:[(0,R.jsxs)(Uh,{component:"div",style:{display:"inline-block",paddingRight:"1em"},children:[(0,R.jsx)(Uh,{component:"span",children:"\u82f1 ".concat(null!==e&&void 0!==e&&null!==(t=e.ec)&&void 0!==t&&null!==(n=t.word)&&void 0!==n&&n.ukphone?"[".concat(null===e||void 0===e||null===(r=e.ec)||void 0===r||null===(o=r.word)||void 0===o?void 0:o.ukphone,"]"):"")}),(0,R.jsx)(Gk,{text:null===e||void 0===e||null===(i=e.ec)||void 0===i||null===(a=i.word)||void 0===a?void 0:a["return-phrase"],lan:"uk"})]}),(0,R.jsxs)(Uh,{component:"div",style:{display:"inline-block",paddingRight:"1em"},children:[(0,R.jsx)(Uh,{component:"span",children:"\u7f8e ".concat(null!==e&&void 0!==e&&null!==(s=e.ec)&&void 0!==s&&null!==(l=s.word)&&void 0!==l&&l.usphone?"[".concat(null===e||void 0===e||null===(c=e.ec)||void 0===c||null===(u=c.word)||void 0===u?void 0:u.usphone,"]"):"")}),(0,R.jsx)(Gk,{text:null===e||void 0===e||null===(d=e.ec)||void 0===d||null===(p=d.word)||void 0===p?void 0:p["return-phrase"],lan:"en"})]})]})},uiTrans:e=>{var t,n,r,o,i;return(0,R.jsxs)(Uh,{component:"div",children:[(0,R.jsx)(Uh,{component:"ul",children:null===e||void 0===e||null===(t=e.ec)||void 0===t||null===(n=t.word)||void 0===n||null===(r=n.trs)||void 0===r?void 0:r.map((e,t)=>{let{pos:n,tran:r}=e;return(0,R.jsxs)(Uh,{component:"li",children:[n&&"[".concat(n,"] "),r]},t)})}),(null===e||void 0===e||null===(o=e.blng_sents_part)||void 0===o||null===(i=o["sentence-pair"])||void 0===i?void 0:i.length)>0&&(0,R.jsxs)(Uh,{component:"div",style:{marginTop:"10px"},children:[(0,R.jsx)(Uh,{component:"div",style:{fontWeight:"bold",marginBottom:"5px"},children:"\u4f8b\u53e5"}),e.blng_sents_part["sentence-pair"].slice(0,2).map((t,n)=>{var r,o,i,a;return(0,R.jsxs)(Uh,{component:"div",style:{marginBottom:"5px"},children:[(0,R.jsx)(Uh,{component:"div",children:null===(r=t.sentence)||void 0===r||null===(o=r.split(null===(i=e.ec)||void 0===i||null===(a=i.word)||void 0===a?void 0:a["return-phrase"]))||void 0===o?void 0:o.map((t,n,r)=>{var o,i;return(0,R.jsxs)("span",{children:[n>0&&(null===(o=e.ec)||void 0===o||null===(i=o.word)||void 0===i?void 0:i["return-phrase"])&&(0,R.jsx)("span",{style:{fontWeight:"bold",color:"#1e88e5"},children:e.ec.word["return-phrase"]}),t]},n)})}),(0,R.jsx)(Uh,{component:"div",style:{opacity:"0.6",fontStyle:"italic"},children:t["sentence-translation"]})]},n)})]})]})}}};function $k(e){let{text:t,setCopyText:n,setRealWord:r,dict:i}=e;const{loading:a,error:s,data:l}=jm(i.apiFn,t);(0,o.useEffect)(()=>{if(!l)return;const e=i.reWord(l)||t,o=[e,i.toText(l).join("\n")].join("\n");r(e),n(o)},[l,t,i,n,r]);const c=(0,o.useMemo)(()=>i.uiAudio(l),[l,i]),u=(0,o.useMemo)(()=>i.uiTrans(l),[l,i]);return a?(0,R.jsx)(Rh,{size:16}):s?(0,R.jsx)(Ue,{severity:"error",children:s}):l?(0,R.jsxs)(Uh,{component:"div",children:[c,u]}):(0,R.jsx)(Uh,{children:"Not found!"})}function Yk(e){let{text:t,enDict:n}=e;const r=Mm(),[i,a]=(0,o.useState)(t),[s,l]=(0,o.useState)(t),c=Kk[n];return(0,R.jsxs)(xm,{spacing:1,children:[t&&(0,R.jsxs)(xm,{direction:"row",justifyContent:"space-between",children:[(0,R.jsx)(Uh,{variant:"subtitle1",style:{fontWeight:"bold"},children:s}),(0,R.jsxs)(xm,{direction:"row",justifyContent:"space-between",children:[(0,R.jsx)(zk,{text:i,title:r("copy")}),(0,R.jsx)(Mk,{word:s,title:r("collect")})]})]}),(0,R.jsx)(of,{}),c&&(0,R.jsx)($k,{text:t,setCopyText:a,setRealWord:l,dict:c})]})}var Xk=n(4837);function Jk(e){return e&&"object"===typeof e?"position"in e||"type"in e?Zk(e.position):"start"in e||"end"in e?Zk(e):"line"in e||"column"in e?Qk(e):"":""}function Qk(e){return eA(e&&e.line)+":"+eA(e&&e.column)}function Zk(e){return Qk(e&&e.start)+"-"+Qk(e&&e.end)}function eA(e){return e&&"number"===typeof e?e:1}class tA extends Error{constructor(e,t,n){const r=[null,null];let o={start:{line:null,column:null},end:{line:null,column:null}};if(super(),"string"===typeof t&&(n=t,t=void 0),"string"===typeof n){const e=n.indexOf(":");-1===e?r[1]=n:(r[0]=n.slice(0,e),r[1]=n.slice(e+1))}t&&("type"in t||"position"in t?t.position&&(o=t.position):"start"in t||"end"in t?o=t:("line"in t||"column"in t)&&(o.start=t)),this.name=Jk(t)||"1:1",this.message="object"===typeof e?e.message:e,this.stack="","object"===typeof e&&e.stack&&(this.stack=e.stack),this.reason=this.message,this.fatal,this.line=o.start.line,this.column=o.start.column,this.position=o,this.source=r[0],this.ruleId=r[1],this.file,this.actual,this.expected,this.url,this.note}}tA.prototype.file="",tA.prototype.name="",tA.prototype.reason="",tA.prototype.message="",tA.prototype.stack="",tA.prototype.fatal=null,tA.prototype.column=null,tA.prototype.line=null,tA.prototype.source=null,tA.prototype.ruleId=null,tA.prototype.position=null;const nA={basename:function(e,t){if(void 0!==t&&"string"!==typeof t)throw new TypeError('"ext" argument must be a string');rA(e);let n,r=0,o=-1,i=e.length;if(void 0===t||0===t.length||t.length>e.length){for(;i--;)if(47===e.charCodeAt(i)){if(n){r=i+1;break}}else o<0&&(n=!0,o=i+1);return o<0?"":e.slice(r,o)}if(t===e)return"";let a=-1,s=t.length-1;for(;i--;)if(47===e.charCodeAt(i)){if(n){r=i+1;break}}else a<0&&(n=!0,a=i+1),s>-1&&(e.charCodeAt(i)===t.charCodeAt(s--)?s<0&&(o=i):(s=-1,o=a));r===o?o=a:o<0&&(o=e.length);return e.slice(r,o)},dirname:function(e){if(rA(e),0===e.length)return".";let t,n=-1,r=e.length;for(;--r;)if(47===e.charCodeAt(r)){if(t){n=r;break}}else t||(t=!0);return n<0?47===e.charCodeAt(0)?"/":".":1===n&&47===e.charCodeAt(0)?"//":e.slice(0,n)},extname:function(e){rA(e);let t,n=e.length,r=-1,o=0,i=-1,a=0;for(;n--;){const s=e.charCodeAt(n);if(47!==s)r<0&&(t=!0,r=n+1),46===s?i<0?i=n:1!==a&&(a=1):i>-1&&(a=-1);else if(t){o=n+1;break}}if(i<0||r<0||0===a||1===a&&i===r-1&&i===o+1)return"";return e.slice(i,r)},join:function(){let e,t=-1;for(var n=arguments.length,r=new Array(n),o=0;o2){if(r=o.lastIndexOf("/"),r!==o.length-1){r<0?(o="",i=0):(o=o.slice(0,r),i=o.length-1-o.lastIndexOf("/")),a=l,s=0;continue}}else if(o.length>0){o="",i=0,a=l,s=0;continue}t&&(o=o.length>0?o+"/..":"..",i=2)}else o.length>0?o+="/"+e.slice(a+1,l):o=e.slice(a+1,l),i=l-a-1;a=l,s=0}else 46===n&&s>-1?s++:s=-1}return o}(e,!t);0!==n.length||t||(n=".");n.length>0&&47===e.charCodeAt(e.length-1)&&(n+="/");return t?"/"+n:n}(e)},sep:"/"};function rA(e){if("string"!==typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}const oA={cwd:function(){return"/"}};function iA(e){return null!==e&&"object"===typeof e&&e.href&&e.origin}function aA(e){if("string"===typeof e)e=new URL(e);else if(!iA(e)){const t=new TypeError('The "path" argument must be of type string or an instance of URL. Received `'+e+"`");throw t.code="ERR_INVALID_ARG_TYPE",t}if("file:"!==e.protocol){const e=new TypeError("The URL must be of scheme file");throw e.code="ERR_INVALID_URL_SCHEME",e}return function(e){if(""!==e.hostname){const e=new TypeError('File URL host must be "localhost" or empty on darwin');throw e.code="ERR_INVALID_FILE_URL_HOST",e}const t=e.pathname;let n=-1;for(;++n1?l-1:0),u=1;uo.length;let c;l&&o.push(i);try{c=e.apply(this,o)}catch(r){if(l&&n)throw r;return i(r)}l||(c&&c.then&&"function"===typeof c.then?c.then(a,i):c instanceof Error?i(c):a(c))}function i(e){if(!n){n=!0;for(var r=arguments.length,o=new Array(r>1?r-1:0),i=1;i1?t-1:0),s=1;s{if(!e&&t&&n){const o=a.stringify(t,n);void 0===o||null===o||("string"===typeof(r=o)||Xk(r)?n.value=o:n.result=o),i(e,n)}else i(e);var r})}n(null,t)},a.processSync=function(e){let t;a.freeze(),bA("processSync",a.Parser),xA("processSync",a.Compiler);const n=_A(e);return a.process(n,r),SA("processSync","process",t),n;function r(e){t=!0,pA(e)}},a;function a(){const t=e();let r=-1;for(;++ro?0:o+t:t>o?o:t,n=n>0?n:0,r.length<1e4)i=Array.from(r),i.unshift(t,n),e.splice(...i);else for(n&&e.splice(t,n);a0?(CA(e,e.length,0,t),e):t}const LA={}.hasOwnProperty;function zA(e,t){let n;for(n in t){const r=(LA.call(e,n)?e[n]:void 0)||(e[n]={}),o=t[n];let i;if(o)for(i in o){LA.call(r,i)||(r[i]=[]);const e=o[i];PA(r[i],Array.isArray(e)?e:e?[e]:[])}}}function PA(e,t){let n=-1;const r=[];for(;++ni))return;const n=t.events.length;let o,s,l=n;for(;l--;)if("exit"===t.events[l][0]&&"chunkFlow"===t.events[l][1].type){if(o){s=t.events[l][1].end;break}o=!0}for(y(a),e=n;er;){const r=n[o];t.containerState=r[1],r[0].exit.call(t,e)}n.length=r}function v(){r.write([null]),o=void 0,r=void 0,t.containerState._closeFlow=void 0}}},YA={tokenize:function(e,t,n){return qA(e,e.attempt(this.parser.constructs.document,t,n),"linePrefix",this.parser.constructs.disable.null.includes("codeIndented")?void 0:4)}};const XA={tokenize:function(e,t,n){return function(t){return UA(t)?qA(e,r,"linePrefix")(t):r(t)};function r(e){return null===e||BA(e)?t(e):n(e)}},partial:!0};function JA(e){const t={};let n,r,o,i,a,s,l,c=-1;for(;++c=4?t(o):e.interrupt(r.parser.constructs.flow,n,t)(o)}},partial:!0};const tS={tokenize:function(e){const t=this,n=e.attempt(XA,function(r){if(null===r)return void e.consume(r);return e.enter("lineEndingBlank"),e.consume(r),e.exit("lineEndingBlank"),t.currentConstruct=void 0,n},e.attempt(this.parser.constructs.flowInitial,r,qA(e,e.attempt(this.parser.constructs.flow,r,e.attempt(ZA,r)),"linePrefix")));return n;function r(r){if(null!==r)return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),t.currentConstruct=void 0,n;e.consume(r)}}};const nS={resolveAll:aS()},rS=iS("string"),oS=iS("text");function iS(e){return{tokenize:function(t){const n=this,r=this.parser.constructs[e],o=t.attempt(r,i,a);return i;function i(e){return l(e)?o(e):a(e)}function a(e){if(null!==e)return t.enter("data"),t.consume(e),s;t.consume(e)}function s(e){return l(e)?(t.exit("data"),o(e)):(t.consume(e),s)}function l(e){if(null===e)return!0;const t=r[e];let o=-1;if(t)for(;++o-1){const e=a[0];"string"===typeof e?a[0]=e.slice(r):a.shift()}i>0&&a.push(e[o].slice(0,i))}return a}(a,e)}function f(){const{line:e,column:t,offset:n,_index:o,_bufferIndex:i}=r;return{line:e,column:t,offset:n,_index:o,_bufferIndex:i}}function m(){let e;for(;r._index=3&&(null===i||BA(i))?(e.exit("thematicBreak"),t(i)):n(i)}function a(t){return t===r?(e.consume(t),o++,a):(e.exit("thematicBreakSequence"),UA(t)?qA(e,i,"whitespace")(t):i(t))}}};const dS={name:"list",tokenize:function(e,t,n){const r=this,o=r.events[r.events.length-1];let i=o&&"linePrefix"===o[1].type?o[2].sliceSerialize(o[1],!0).length:0,a=0;return function(t){const o=r.containerState.type||(42===t||43===t||45===t?"listUnordered":"listOrdered");if("listUnordered"===o?!r.containerState.marker||t===r.containerState.marker:MA(t)){if(r.containerState.type||(r.containerState.type=o,e.enter(o,{_container:!0})),"listUnordered"===o)return e.enter("listItemPrefix"),42===t||45===t?e.check(uS,n,l)(t):l(t);if(!r.interrupt||49===t)return e.enter("listItemPrefix"),e.enter("listItemValue"),s(t)}return n(t)};function s(t){return MA(t)&&++a<10?(e.consume(t),s):(!r.interrupt||a<2)&&(r.containerState.marker?t===r.containerState.marker:41===t||46===t)?(e.exit("listItemValue"),l(t)):n(t)}function l(t){return e.enter("listItemMarker"),e.consume(t),e.exit("listItemMarker"),r.containerState.marker=r.containerState.marker||t,e.check(XA,r.interrupt?n:c,e.attempt(pS,d,u))}function c(e){return r.containerState.initialBlankLine=!0,i++,d(e)}function u(t){return UA(t)?(e.enter("listItemPrefixWhitespace"),e.consume(t),e.exit("listItemPrefixWhitespace"),d):n(t)}function d(n){return r.containerState.size=i+r.sliceSerialize(e.exit("listItemPrefix"),!0).length,t(n)}},continuation:{tokenize:function(e,t,n){const r=this;return r.containerState._closeFlow=void 0,e.check(XA,o,i);function o(n){return r.containerState.furtherBlankLines=r.containerState.furtherBlankLines||r.containerState.initialBlankLine,qA(e,t,"listItemIndent",r.containerState.size+1)(n)}function i(n){return r.containerState.furtherBlankLines||!UA(n)?(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,a(n)):(r.containerState.furtherBlankLines=void 0,r.containerState.initialBlankLine=void 0,e.attempt(hS,t,a)(n))}function a(o){return r.containerState._closeFlow=!0,r.interrupt=void 0,qA(e,e.attempt(dS,t,n),"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(o)}}},exit:function(e){e.exit(this.containerState.type)}},pS={tokenize:function(e,t,n){const r=this;return qA(e,function(e){const o=r.events[r.events.length-1];return!UA(e)&&o&&"listItemPrefixWhitespace"===o[1].type?t(e):n(e)},"listItemPrefixWhitespace",r.parser.constructs.disable.null.includes("codeIndented")?void 0:5)},partial:!0},hS={tokenize:function(e,t,n){const r=this;return qA(e,function(e){const o=r.events[r.events.length-1];return o&&"listItemIndent"===o[1].type&&o[2].sliceSerialize(o[1],!0).length===r.containerState.size?t(e):n(e)},"listItemIndent",r.containerState.size+1)},partial:!0};const fS={name:"blockQuote",tokenize:function(e,t,n){const r=this;return function(t){if(62===t){const n=r.containerState;return n.open||(e.enter("blockQuote",{_container:!0}),n.open=!0),e.enter("blockQuotePrefix"),e.enter("blockQuoteMarker"),e.consume(t),e.exit("blockQuoteMarker"),o}return n(t)};function o(n){return UA(n)?(e.enter("blockQuotePrefixWhitespace"),e.consume(n),e.exit("blockQuotePrefixWhitespace"),e.exit("blockQuotePrefix"),t):(e.exit("blockQuotePrefix"),t(n))}},continuation:{tokenize:function(e,t,n){const r=this;return function(t){if(UA(t))return qA(e,o,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t);return o(t)};function o(r){return e.attempt(fS,t,n)(r)}}},exit:function(e){e.exit("blockQuote")}};function mS(e,t,n,r,o,i,a,s,l){const c=l||Number.POSITIVE_INFINITY;let u=0;return function(t){if(60===t)return e.enter(r),e.enter(o),e.enter(i),e.consume(t),e.exit(i),d;if(null===t||32===t||41===t||OA(t))return n(t);return e.enter(r),e.enter(a),e.enter(s),e.enter("chunkString",{contentType:"string"}),f(t)};function d(n){return 62===n?(e.enter(i),e.consume(n),e.exit(i),e.exit(o),e.exit(r),t):(e.enter(s),e.enter("chunkString",{contentType:"string"}),p(n))}function p(t){return 62===t?(e.exit("chunkString"),e.exit(s),d(t)):null===t||60===t||BA(t)?n(t):(e.consume(t),92===t?h:p)}function h(t){return 60===t||62===t||92===t?(e.consume(t),p):p(t)}function f(o){return u||null!==o&&41!==o&&!WA(o)?u999||null===d||91===d||93===d&&!s||94===d&&!l&&"_hiddenFootnoteSupport"in a.parser.constructs?n(d):93===d?(e.exit(i),e.enter(o),e.consume(d),e.exit(o),e.exit(r),t):BA(d)?(e.enter("lineEnding"),e.consume(d),e.exit("lineEnding"),c):(e.enter("chunkString",{contentType:"string"}),u(d))}function u(t){return null===t||91===t||93===t||BA(t)||l++>999?(e.exit("chunkString"),c(t)):(e.consume(t),s||(s=!UA(t)),92===t?d:u)}function d(t){return 91===t||92===t||93===t?(e.consume(t),l++,u):u(t)}}function yS(e,t,n,r,o,i){let a;return function(t){if(34===t||39===t||40===t)return e.enter(r),e.enter(o),e.consume(t),e.exit(o),a=40===t?41:t,s;return n(t)};function s(n){return n===a?(e.enter(o),e.consume(n),e.exit(o),e.exit(r),t):(e.enter(i),l(n))}function l(t){return t===a?(e.exit(i),s(a)):null===t?n(t):BA(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),qA(e,l,"linePrefix")):(e.enter("chunkString",{contentType:"string"}),c(t))}function c(t){return t===a||null===t||BA(t)?(e.exit("chunkString"),l(t)):(e.consume(t),92===t?u:c)}function u(t){return t===a||92===t?(e.consume(t),c):c(t)}}function vS(e,t){let n;return function r(o){if(BA(o))return e.enter("lineEnding"),e.consume(o),e.exit("lineEnding"),n=!0,r;if(UA(o))return qA(e,r,n?"linePrefix":"lineSuffix")(o);return t(o)}}function bS(e){return e.replace(/[\t\n\r ]+/g," ").replace(/^ | $/g,"").toLowerCase().toUpperCase()}const xS={name:"definition",tokenize:function(e,t,n){const r=this;let o;return function(t){return e.enter("definition"),function(t){return gS.call(r,e,i,n,"definitionLabel","definitionLabelMarker","definitionLabelString")(t)}(t)};function i(t){return o=bS(r.sliceSerialize(r.events[r.events.length-1][1]).slice(1,-1)),58===t?(e.enter("definitionMarker"),e.consume(t),e.exit("definitionMarker"),a):n(t)}function a(t){return WA(t)?vS(e,s)(t):s(t)}function s(t){return mS(e,l,n,"definitionDestination","definitionDestinationLiteral","definitionDestinationLiteralMarker","definitionDestinationRaw","definitionDestinationString")(t)}function l(t){return e.attempt(kS,c,c)(t)}function c(t){return UA(t)?qA(e,u,"whitespace")(t):u(t)}function u(i){return null===i||BA(i)?(e.exit("definition"),r.parser.defined.push(o),t(i)):n(i)}}},kS={tokenize:function(e,t,n){return function(t){return WA(t)?vS(e,r)(t):n(t)};function r(t){return yS(e,o,n,"definitionTitle","definitionTitleMarker","definitionTitleString")(t)}function o(t){return UA(t)?qA(e,i,"whitespace")(t):i(t)}function i(e){return null===e||BA(e)?t(e):n(e)}},partial:!0};const AS={name:"codeIndented",tokenize:function(e,t,n){const r=this;return function(t){return e.enter("codeIndented"),qA(e,o,"linePrefix",5)(t)};function o(e){const t=r.events[r.events.length-1];return t&&"linePrefix"===t[1].type&&t[2].sliceSerialize(t[1],!0).length>=4?i(e):n(e)}function i(t){return null===t?s(t):BA(t)?e.attempt(SS,i,s)(t):(e.enter("codeFlowValue"),a(t))}function a(t){return null===t||BA(t)?(e.exit("codeFlowValue"),i(t)):(e.consume(t),a)}function s(n){return e.exit("codeIndented"),t(n)}}},SS={tokenize:function(e,t,n){const r=this;return o;function o(t){return r.parser.lazy[r.now().line]?n(t):BA(t)?(e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),o):qA(e,i,"linePrefix",5)(t)}function i(e){const i=r.events[r.events.length-1];return i&&"linePrefix"===i[1].type&&i[2].sliceSerialize(i[1],!0).length>=4?t(e):BA(e)?o(e):n(e)}},partial:!0};const _S={name:"headingAtx",tokenize:function(e,t,n){let r=0;return function(t){return e.enter("atxHeading"),function(t){return e.enter("atxHeadingSequence"),o(t)}(t)};function o(t){return 35===t&&r++<6?(e.consume(t),o):null===t||WA(t)?(e.exit("atxHeadingSequence"),i(t)):n(t)}function i(n){return 35===n?(e.enter("atxHeadingSequence"),a(n)):null===n||BA(n)?(e.exit("atxHeading"),t(n)):UA(n)?qA(e,i,"whitespace")(n):(e.enter("atxHeadingText"),s(n))}function a(t){return 35===t?(e.consume(t),a):(e.exit("atxHeadingSequence"),i(t))}function s(t){return null===t||35===t||WA(t)?(e.exit("atxHeadingText"),i(t)):(e.consume(t),s)}},resolve:function(e,t){let n,r,o=e.length-2,i=3;"whitespace"===e[i][1].type&&(i+=2);o-2>i&&"whitespace"===e[o][1].type&&(o-=2);"atxHeadingSequence"===e[o][1].type&&(i===o-1||o-4>i&&"whitespace"===e[o-2][1].type)&&(o-=i+1===o?2:4);o>i&&(n={type:"atxHeadingText",start:e[i][1].start,end:e[o][1].end},r={type:"chunkText",start:e[i][1].start,end:e[o][1].end,contentType:"text"},CA(e,i,o-i+1,[["enter",n,t],["enter",r,t],["exit",r,t],["exit",n,t]]));return e}};const wS={name:"setextUnderline",tokenize:function(e,t,n){const r=this;let o;return function(t){let a,s=r.events.length;for(;s--;)if("lineEnding"!==r.events[s][1].type&&"linePrefix"!==r.events[s][1].type&&"content"!==r.events[s][1].type){a="paragraph"===r.events[s][1].type;break}if(!r.parser.lazy[r.now().line]&&(r.interrupt||a))return e.enter("setextHeadingLine"),o=t,function(t){return e.enter("setextHeadingLineSequence"),i(t)}(t);return n(t)};function i(t){return t===o?(e.consume(t),i):(e.exit("setextHeadingLineSequence"),UA(t)?qA(e,a,"lineSuffix")(t):a(t))}function a(r){return null===r||BA(r)?(e.exit("setextHeadingLine"),t(r)):n(r)}},resolveTo:function(e,t){let n,r,o,i=e.length;for(;i--;)if("enter"===e[i][0]){if("content"===e[i][1].type){n=i;break}"paragraph"===e[i][1].type&&(r=i)}else"content"===e[i][1].type&&e.splice(i,1),o||"definition"!==e[i][1].type||(o=i);const a={type:"setextHeading",start:Object.assign({},e[r][1].start),end:Object.assign({},e[e.length-1][1].end)};e[r][1].type="setextHeadingText",o?(e.splice(r,0,["enter",a,t]),e.splice(o+1,0,["exit",e[n][1],t]),e[n][1].end=Object.assign({},e[o][1].end)):e[n][1]=a;return e.push(["exit",a,t]),e}};const TS=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","search","section","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"],ES=["pre","script","style","textarea"],CS={name:"htmlFlow",tokenize:function(e,t,n){const r=this;let o,i,a,s,l;return function(t){return function(t){return e.enter("htmlFlow"),e.enter("htmlFlowData"),e.consume(t),c}(t)};function c(s){return 33===s?(e.consume(s),u):47===s?(e.consume(s),i=!0,h):63===s?(e.consume(s),o=3,r.interrupt?t:R):NA(s)?(e.consume(s),a=String.fromCharCode(s),f):n(s)}function u(i){return 45===i?(e.consume(i),o=2,d):91===i?(e.consume(i),o=5,s=0,p):NA(i)?(e.consume(i),o=4,r.interrupt?t:R):n(i)}function d(o){return 45===o?(e.consume(o),r.interrupt?t:R):n(o)}function p(o){const i="CDATA[";return o===i.charCodeAt(s++)?(e.consume(o),6===s?r.interrupt?t:T:p):n(o)}function h(t){return NA(t)?(e.consume(t),a=String.fromCharCode(t),f):n(t)}function f(s){if(null===s||47===s||62===s||WA(s)){const l=47===s,c=a.toLowerCase();return l||i||!ES.includes(c)?TS.includes(a.toLowerCase())?(o=6,l?(e.consume(s),m):r.interrupt?t(s):T(s)):(o=7,r.interrupt&&!r.parser.lazy[r.now().line]?n(s):i?g(s):y(s)):(o=1,r.interrupt?t(s):T(s))}return 45===s||RA(s)?(e.consume(s),a+=String.fromCharCode(s),f):n(s)}function m(o){return 62===o?(e.consume(o),r.interrupt?t:T):n(o)}function g(t){return UA(t)?(e.consume(t),g):_(t)}function y(t){return 47===t?(e.consume(t),_):58===t||95===t||NA(t)?(e.consume(t),v):UA(t)?(e.consume(t),y):_(t)}function v(t){return 45===t||46===t||58===t||95===t||RA(t)?(e.consume(t),v):b(t)}function b(t){return 61===t?(e.consume(t),x):UA(t)?(e.consume(t),b):y(t)}function x(t){return null===t||60===t||61===t||62===t||96===t?n(t):34===t||39===t?(e.consume(t),l=t,k):UA(t)?(e.consume(t),x):A(t)}function k(t){return t===l?(e.consume(t),l=null,S):null===t||BA(t)?n(t):(e.consume(t),k)}function A(t){return null===t||34===t||39===t||47===t||60===t||61===t||62===t||96===t||WA(t)?b(t):(e.consume(t),A)}function S(e){return 47===e||62===e||UA(e)?y(e):n(e)}function _(t){return 62===t?(e.consume(t),w):n(t)}function w(t){return null===t||BA(t)?T(t):UA(t)?(e.consume(t),w):n(t)}function T(t){return 45===t&&2===o?(e.consume(t),L):60===t&&1===o?(e.consume(t),z):62===t&&4===o?(e.consume(t),j):63===t&&3===o?(e.consume(t),R):93===t&&5===o?(e.consume(t),N):!BA(t)||6!==o&&7!==o?null===t||BA(t)?(e.exit("htmlFlowData"),E(t)):(e.consume(t),T):(e.exit("htmlFlowData"),e.check(IS,O,E)(t))}function E(t){return e.check(LS,C,O)(t)}function C(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),I}function I(t){return null===t||BA(t)?E(t):(e.enter("htmlFlowData"),T(t))}function L(t){return 45===t?(e.consume(t),R):T(t)}function z(t){return 47===t?(e.consume(t),a="",P):T(t)}function P(t){if(62===t){const n=a.toLowerCase();return ES.includes(n)?(e.consume(t),j):T(t)}return NA(t)&&a.length<8?(e.consume(t),a+=String.fromCharCode(t),P):T(t)}function N(t){return 93===t?(e.consume(t),R):T(t)}function R(t){return 62===t?(e.consume(t),j):45===t&&2===o?(e.consume(t),R):T(t)}function j(t){return null===t||BA(t)?(e.exit("htmlFlowData"),O(t)):(e.consume(t),j)}function O(n){return e.exit("htmlFlow"),t(n)}},resolveTo:function(e){let t=e.length;for(;t--&&("enter"!==e[t][0]||"htmlFlow"!==e[t][1].type););t>1&&"linePrefix"===e[t-2][1].type&&(e[t][1].start=e[t-2][1].start,e[t+1][1].start=e[t-2][1].start,e.splice(t-2,2));return e},concrete:!0},IS={tokenize:function(e,t,n){return function(r){return e.enter("lineEnding"),e.consume(r),e.exit("lineEnding"),e.attempt(XA,t,n)}},partial:!0},LS={tokenize:function(e,t,n){const r=this;return function(t){if(BA(t))return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),o;return n(t)};function o(e){return r.parser.lazy[r.now().line]?n(e):t(e)}},partial:!0};const zS={tokenize:function(e,t,n){const r=this;return function(t){if(null===t)return n(t);return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),o};function o(e){return r.parser.lazy[r.now().line]?n(e):t(e)}},partial:!0},PS={name:"codeFenced",tokenize:function(e,t,n){const r=this,o={tokenize:function(e,t,n){let o=0;return a;function a(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),l}function l(t){return e.enter("codeFencedFence"),UA(t)?qA(e,c,"linePrefix",r.parser.constructs.disable.null.includes("codeIndented")?void 0:4)(t):c(t)}function c(t){return t===i?(e.enter("codeFencedFenceSequence"),u(t)):n(t)}function u(t){return t===i?(o++,e.consume(t),u):o>=s?(e.exit("codeFencedFenceSequence"),UA(t)?qA(e,d,"whitespace")(t):d(t)):n(t)}function d(r){return null===r||BA(r)?(e.exit("codeFencedFence"),t(r)):n(r)}},partial:!0};let i,a=0,s=0;return function(t){return function(t){const n=r.events[r.events.length-1];return a=n&&"linePrefix"===n[1].type?n[2].sliceSerialize(n[1],!0).length:0,i=t,e.enter("codeFenced"),e.enter("codeFencedFence"),e.enter("codeFencedFenceSequence"),l(t)}(t)};function l(t){return t===i?(s++,e.consume(t),l):s<3?n(t):(e.exit("codeFencedFenceSequence"),UA(t)?qA(e,c,"whitespace")(t):c(t))}function c(n){return null===n||BA(n)?(e.exit("codeFencedFence"),r.interrupt?t(n):e.check(zS,h,v)(n)):(e.enter("codeFencedFenceInfo"),e.enter("chunkString",{contentType:"string"}),u(n))}function u(t){return null===t||BA(t)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),c(t)):UA(t)?(e.exit("chunkString"),e.exit("codeFencedFenceInfo"),qA(e,d,"whitespace")(t)):96===t&&t===i?n(t):(e.consume(t),u)}function d(t){return null===t||BA(t)?c(t):(e.enter("codeFencedFenceMeta"),e.enter("chunkString",{contentType:"string"}),p(t))}function p(t){return null===t||BA(t)?(e.exit("chunkString"),e.exit("codeFencedFenceMeta"),c(t)):96===t&&t===i?n(t):(e.consume(t),p)}function h(t){return e.attempt(o,v,f)(t)}function f(t){return e.enter("lineEnding"),e.consume(t),e.exit("lineEnding"),m}function m(t){return a>0&&UA(t)?qA(e,g,"linePrefix",a+1)(t):g(t)}function g(t){return null===t||BA(t)?e.check(zS,h,v)(t):(e.enter("codeFlowValue"),y(t))}function y(t){return null===t||BA(t)?(e.exit("codeFlowValue"),g(t)):(e.consume(t),y)}function v(n){return e.exit("codeFenced"),t(n)}},concrete:!0};const NS=document.createElement("i");function RS(e){const t="&"+e+";";NS.innerHTML=t;const n=NS.textContent;return(59!==n.charCodeAt(n.length-1)||"semi"===e)&&(n!==t&&n)}const jS={name:"characterReference",tokenize:function(e,t,n){const r=this;let o,i,a=0;return function(t){return e.enter("characterReference"),e.enter("characterReferenceMarker"),e.consume(t),e.exit("characterReferenceMarker"),s};function s(t){return 35===t?(e.enter("characterReferenceMarkerNumeric"),e.consume(t),e.exit("characterReferenceMarkerNumeric"),l):(e.enter("characterReferenceValue"),o=31,i=RA,c(t))}function l(t){return 88===t||120===t?(e.enter("characterReferenceMarkerHexadecimal"),e.consume(t),e.exit("characterReferenceMarkerHexadecimal"),e.enter("characterReferenceValue"),o=6,i=DA,c):(e.enter("characterReferenceValue"),o=7,i=MA,c(t))}function c(s){if(59===s&&a){const o=e.exit("characterReferenceValue");return i!==RA||RS(r.sliceSerialize(o))?(e.enter("characterReferenceMarker"),e.consume(s),e.exit("characterReferenceMarker"),e.exit("characterReference"),t):n(s)}return i(s)&&a++1&&e[u][1].end.offset-e[u][1].start.offset>1?2:1;const d=Object.assign({},e[n][1].end),p=Object.assign({},e[u][1].start);GS(d,-s),GS(p,s),i={type:s>1?"strongSequence":"emphasisSequence",start:d,end:Object.assign({},e[n][1].end)},a={type:s>1?"strongSequence":"emphasisSequence",start:Object.assign({},e[u][1].start),end:p},o={type:s>1?"strongText":"emphasisText",start:Object.assign({},e[n][1].end),end:Object.assign({},e[u][1].start)},r={type:s>1?"strong":"emphasis",start:Object.assign({},i.start),end:Object.assign({},a.end)},e[n][1].end=Object.assign({},i.start),e[u][1].start=Object.assign({},a.end),l=[],e[n][1].end.offset-e[n][1].start.offset&&(l=IA(l,[["enter",e[n][1],t],["exit",e[n][1],t]])),l=IA(l,[["enter",r,t],["enter",i,t],["exit",i,t],["enter",o,t]]),l=IA(l,lS(t.parser.constructs.insideSpan.null,e.slice(n+1,u),t)),l=IA(l,[["exit",o,t],["enter",a,t],["exit",a,t],["exit",r,t]]),e[u][1].end.offset-e[u][1].start.offset?(c=2,l=IA(l,[["enter",e[u][1],t],["exit",e[u][1],t]])):c=0,CA(e,n-1,u-n+3,l),u=n+l.length-c-2;break}u=-1;for(;++u13&&n<32||n>126&&n<160||n>55295&&n<57344||n>64975&&n<65008||65535===(65535&n)||65534===(65535&n)||n>1114111?"\ufffd":String.fromCharCode(n)}const c_=/\\([!-/:-@[-`{-~])|&(#(?:\d{1,7}|x[\da-f]{1,6})|[\da-z]{1,31});/gi;function u_(e,t,n){if(t)return t;if(35===n.charCodeAt(0)){const e=n.charCodeAt(1),t=120===e||88===e;return l_(n.slice(t?2:1),t?16:10)}return RS(n)||e}const d_={}.hasOwnProperty,p_=function(e,t,n){return"string"!==typeof t&&(n=t,t=void 0),function(e){const t={transforms:[],canContainEols:["emphasis","fragment","heading","paragraph","strong"],enter:{autolink:s(ne),autolinkProtocol:E,autolinkEmail:E,atxHeading:s(Q),blockQuote:s(K),characterEscape:E,characterReference:E,codeFenced:s($),codeFencedFenceInfo:l,codeFencedFenceMeta:l,codeIndented:s($,l),codeText:s(Y,l),codeTextData:E,data:E,codeFlowValue:E,definition:s(X),definitionDestinationString:l,definitionLabelString:l,definitionTitleString:l,emphasis:s(J),hardBreakEscape:s(Z),hardBreakTrailing:s(Z),htmlFlow:s(ee,l),htmlFlowData:E,htmlText:s(ee,l),htmlTextData:E,image:s(te),label:l,link:s(ne),listItem:s(oe),listItemValue:f,listOrdered:s(re,h),listUnordered:s(re),paragraph:s(ie),reference:W,referenceString:l,resourceDestinationString:l,resourceTitleString:l,setextHeading:s(Q),strong:s(ae),thematicBreak:s(le)},exit:{atxHeading:u(),atxHeadingSequence:S,autolink:u(),autolinkEmail:q,autolinkProtocol:G,blockQuote:u(),characterEscapeValue:C,characterReferenceMarkerHexadecimal:V,characterReferenceMarkerNumeric:V,characterReferenceValue:H,codeFenced:u(v),codeFencedFence:y,codeFencedFenceInfo:m,codeFencedFenceMeta:g,codeFlowValue:C,codeIndented:u(b),codeText:u(N),codeTextData:C,data:C,definition:u(),definitionDestinationString:A,definitionLabelString:x,definitionTitleString:k,emphasis:u(),hardBreakEscape:u(L),hardBreakTrailing:u(L),htmlFlow:u(z),htmlFlowData:C,htmlText:u(P),htmlTextData:C,image:u(j),label:M,labelText:O,lineEnding:I,link:u(R),listItem:u(),listOrdered:u(),listUnordered:u(),paragraph:u(),referenceString:U,resourceDestinationString:D,resourceTitleString:F,resource:B,setextHeading:u(T),setextHeadingLineSequence:w,setextHeadingText:_,strong:u(),thematicBreak:u()}};f_(t,(e||{}).mdastExtensions||[]);const n={};return r;function r(e){let n={type:"root",children:[]};const r={stack:[n],tokenStack:[],config:t,enter:c,exit:d,buffer:l,resume:p,setData:i,getData:a},s=[];let u=-1;for(;++u0){const e=r.tokenStack[r.tokenStack.length-1];(e[1]||g_).call(r,void 0,e[0])}for(n.position={start:h_(e.length>0?e[0][1].start:{line:1,column:1,offset:0}),end:h_(e.length>0?e[e.length-2][1].end:{line:1,column:1,offset:0})},u=-1;++u{const n=this.data("settings");return p_(t,Object.assign({},n,e,{extensions:this.data("micromarkExtensions")||[],mdastExtensions:this.data("fromMarkdownExtensions")||[]}))}})}function v_(e){const t=[];let n=-1,r=0,o=0;for(;++n55295&&i<57344){const t=e.charCodeAt(n+1);i<56320&&t>56319&&t<57344?(a=String.fromCharCode(i,t),o=1):a="\ufffd"}else a=String.fromCharCode(i);a&&(t.push(e.slice(r,n),encodeURIComponent(a)),r=n+o+1,a=""),o&&(n+=o,o=0)}return t.join("")+e.slice(r)}const b_=function(e){if(void 0===e||null===e)return k_;if("string"===typeof e)return function(e){return x_(t);function t(t){return t&&t.type===e}}(e);if("object"===typeof e)return Array.isArray(e)?function(e){const t=[];let n=-1;for(;++n1?n-1:0),o=1;o":"")+")"})}return u;function u(){let c,u,d,p=[];if((!t||o(a,s,l[l.length-1]||null))&&(p=function(e){if(Array.isArray(e))return e;if("number"===typeof e)return[A_,e];return[e]}(n(a,l)),p[0]===S_))return p;if(a.children&&"skip"!==p[0])for(u=(r?a.children.length:-1)+i,d=l.concat(a);u>-1&&u-1?n.offset:null}}}const I_={}.hasOwnProperty;function L_(e){return String(e||"").toUpperCase()}function z_(e,t){const n=String(t.identifier).toUpperCase(),r=v_(n.toLowerCase()),o=e.footnoteOrder.indexOf(n);let i;-1===o?(e.footnoteOrder.push(n),e.footnoteCounts[n]=1,i=e.footnoteOrder.length):(e.footnoteCounts[n]++,i=o+1);const a=e.footnoteCounts[n],s={type:"element",tagName:"a",properties:{href:"#"+e.clobberPrefix+"fn-"+r,id:e.clobberPrefix+"fnref-"+r+(a>1?"-"+a:""),dataFootnoteRef:!0,ariaDescribedBy:["footnote-label"]},children:[{type:"text",value:String(i)}]};e.patch(t,s);const l={type:"element",tagName:"sup",properties:{},children:[s]};return e.patch(t,l),e.applyData(t,l)}function P_(e,t){const n=t.referenceType;let r="]";if("collapsed"===n?r+="[]":"full"===n&&(r+="["+(t.label||t.identifier)+"]"),"imageReference"===t.type)return{type:"text",value:"!["+t.alt+r};const o=e.all(t),i=o[0];i&&"text"===i.type?i.value="["+i.value:o.unshift({type:"text",value:"["});const a=o[o.length-1];return a&&"text"===a.type?a.value+=r:o.push({type:"text",value:r}),o}function N_(e){const t=e.spread;return void 0===t||null===t?e.children.length>1:t}function R_(e){const t=String(e),n=/\r?\n|\r/g;let r=n.exec(t),o=0;const i=[];for(;r;)i.push(j_(t.slice(o,r.index),o>0,!0),r[0]),o=r.index+r[0].length,r=n.exec(t);return i.push(j_(t.slice(o),o>0,!1)),i.join("")}function j_(e,t,n){let r=0,o=e.length;if(t){let t=e.codePointAt(r);for(;9===t||32===t;)r++,t=e.codePointAt(r)}if(n){let t=e.codePointAt(o-1);for(;9===t||32===t;)o--,t=e.codePointAt(o-1)}return o>r?e.slice(r,o):""}const O_={blockquote:function(e,t){const n={type:"element",tagName:"blockquote",properties:{},children:e.wrap(e.all(t),!0)};return e.patch(t,n),e.applyData(t,n)},break:function(e,t){const n={type:"element",tagName:"br",properties:{},children:[]};return e.patch(t,n),[e.applyData(t,n),{type:"text",value:"\n"}]},code:function(e,t){const n=t.value?t.value+"\n":"",r=t.lang?t.lang.match(/^[^ \t]+(?=[ \t]|$)/):null,o={};r&&(o.className=["language-"+r]);let i={type:"element",tagName:"code",properties:o,children:[{type:"text",value:n}]};return t.meta&&(i.data={meta:t.meta}),e.patch(t,i),i=e.applyData(t,i),i={type:"element",tagName:"pre",properties:{},children:[i]},e.patch(t,i),i},delete:function(e,t){const n={type:"element",tagName:"del",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},emphasis:function(e,t){const n={type:"element",tagName:"em",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},footnoteReference:z_,footnote:function(e,t){const n=e.footnoteById;let r=1;for(;r in n;)r++;const o=String(r);return n[o]={type:"footnoteDefinition",identifier:o,children:[{type:"paragraph",children:t.children}],position:t.position},z_(e,{type:"footnoteReference",identifier:o,position:t.position})},heading:function(e,t){const n={type:"element",tagName:"h"+t.depth,properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},html:function(e,t){if(e.dangerous){const n={type:"raw",value:t.value};return e.patch(t,n),e.applyData(t,n)}return null},imageReference:function(e,t){const n=e.definition(t.identifier);if(!n)return P_(e,t);const r={src:v_(n.url||""),alt:t.alt};null!==n.title&&void 0!==n.title&&(r.title=n.title);const o={type:"element",tagName:"img",properties:r,children:[]};return e.patch(t,o),e.applyData(t,o)},image:function(e,t){const n={src:v_(t.url)};null!==t.alt&&void 0!==t.alt&&(n.alt=t.alt),null!==t.title&&void 0!==t.title&&(n.title=t.title);const r={type:"element",tagName:"img",properties:n,children:[]};return e.patch(t,r),e.applyData(t,r)},inlineCode:function(e,t){const n={type:"text",value:t.value.replace(/\r?\n|\r/g," ")};e.patch(t,n);const r={type:"element",tagName:"code",properties:{},children:[n]};return e.patch(t,r),e.applyData(t,r)},linkReference:function(e,t){const n=e.definition(t.identifier);if(!n)return P_(e,t);const r={href:v_(n.url||"")};null!==n.title&&void 0!==n.title&&(r.title=n.title);const o={type:"element",tagName:"a",properties:r,children:e.all(t)};return e.patch(t,o),e.applyData(t,o)},link:function(e,t){const n={href:v_(t.url)};null!==t.title&&void 0!==t.title&&(n.title=t.title);const r={type:"element",tagName:"a",properties:n,children:e.all(t)};return e.patch(t,r),e.applyData(t,r)},listItem:function(e,t,n){const r=e.all(t),o=n?function(e){let t=!1;if("list"===e.type){t=e.spread||!1;const n=e.children;let r=-1;for(;!t&&++r0&&n.children.unshift({type:"text",value:" "}),n.children.unshift({type:"element",tagName:"input",properties:{type:"checkbox",checked:t.checked,disabled:!0},children:[]}),i.className=["task-list-item"]}let s=-1;for(;++s0){const r={type:"element",tagName:"tbody",properties:{},children:e.wrap(n,!0)},i=T_(t.children[1]),a=E_(t.children[t.children.length-1]);i.line&&a.line&&(r.position={start:i,end:a}),o.push(r)}const i={type:"element",tagName:"table",properties:{},children:e.wrap(o,!0)};return e.patch(t,i),e.applyData(t,i)},tableCell:function(e,t){const n={type:"element",tagName:"td",properties:{},children:e.all(t)};return e.patch(t,n),e.applyData(t,n)},tableRow:function(e,t,n){const r=n?n.children:void 0,o=0===(r?r.indexOf(t):1)?"th":"td",i=n&&"table"===n.type?n.align:void 0,a=i?i.length:t.children.length;let s=-1;const l=[];for(;++s{const n=L_(e.identifier);n&&!I_.call(t,n)&&(t[n]=e)}),function(e){const n=L_(e);return n&&I_.call(t,n)?t[n]:null}}(e),a.footnoteById=o,a.footnoteOrder=[],a.footnoteCounts={},a.patch=B_,a.applyData=W_,a.one=function(e,t){return U_(a,e,t)},a.all=function(e){return V_(a,e)},a.wrap=H_,a.augment=i,w_(e,"footnoteDefinition",e=>{const t=String(e.identifier).toUpperCase();D_.call(o,t)||(o[t]=e)}),a;function i(e,t){if(e&&"data"in e&&e.data){const n=e.data;n.hName&&("element"!==t.type&&(t={type:"element",tagName:"",properties:{},children:[]}),t.tagName=n.hName),"element"===t.type&&n.hProperties&&(t.properties=u(u({},t.properties),n.hProperties)),"children"in t&&t.children&&n.hChildren&&(t.children=n.hChildren)}if(e){const n="type"in e?e:{position:e};(function(e){return!e||!e.position||!e.position.start||!e.position.start.line||!e.position.start.column||!e.position.end||!e.position.end.line||!e.position.end.column})(n)||(t.position={start:T_(n),end:E_(n)})}return t}function a(e,t,n,r){return Array.isArray(n)&&(r=n,n={}),i(e,{type:"element",tagName:t,properties:n||{},children:r||[]})}}function B_(e,t){e.position&&(t.position=function(e){return{start:T_(e),end:E_(e)}}(e))}function W_(e,t){let n=t;if(e&&e.data){const t=e.data.hName,r=e.data.hChildren,o=e.data.hProperties;"string"===typeof t&&("element"===n.type?n.tagName=t:n={type:"element",tagName:t,properties:{},children:[]}),"element"===n.type&&o&&(n.properties=u(u({},n.properties),o)),"children"in n&&n.children&&null!==r&&void 0!==r&&(n.children=r)}return n}function U_(e,t,n){const r=t&&t.type;if(!r)throw new Error("Expected node, got `"+t+"`");return D_.call(e.handlers,r)?e.handlers[r](e,t,n):e.passThrough&&e.passThrough.includes(r)?"children"in t?u(u({},t),{},{children:V_(e,t)}):t:e.unknownHandler?e.unknownHandler(e,t,n):function(e,t){const n=t.data||{},r=!("value"in t)||D_.call(n,"hProperties")||D_.call(n,"hChildren")?{type:"element",tagName:"div",properties:{},children:V_(e,t)}:{type:"text",value:t.value};return e.patch(t,r),e.applyData(t,r)}(e,t)}function V_(e,t){const n=[];if("children"in t){const r=t.children;let o=-1;for(;++o0&&n.push({type:"text",value:"\n"}),n}function G_(e,t){const n=F_(e,t),r=n.one(e,null),o=function(e){const t=[];let n=-1;for(;++n1?"-"+s:""),dataFootnoteBackref:!0,className:["data-footnote-backref"],ariaLabel:e.footnoteBackLabel},children:[{type:"text",value:"\u21a9"}]};s>1&&t.children.push({type:"element",tagName:"sup",children:[{type:"text",value:String(s)}]}),l.length>0&&l.push({type:"text",value:" "}),l.push(t)}const c=o[o.length-1];if(c&&"element"===c.type&&"p"===c.tagName){const e=c.children[c.children.length-1];e&&"text"===e.type?e.value+=" ":c.children.push({type:"text",value:" "}),c.children.push(...l)}else o.push(...l);const u={type:"element",tagName:"li",properties:{id:e.clobberPrefix+"fn-"+a},children:e.wrap(o,!0)};e.patch(r,u),t.push(u)}if(0!==t.length)return{type:"element",tagName:"section",properties:{dataFootnotes:!0,className:["footnotes"]},children:[{type:"element",tagName:e.footnoteLabelTagName,properties:u(u({},JSON.parse(JSON.stringify(e.footnoteLabelProperties))),{},{id:"footnote-label"}),children:[{type:"text",value:e.footnoteLabel}]},{type:"text",value:"\n"},{type:"element",tagName:"ol",properties:{},children:e.wrap(t,!0)},{type:"text",value:"\n"}]}}(n);return o&&r.children.push({type:"text",value:"\n"},o),Array.isArray(r)?{type:"root",children:r}:r}const q_=function(e,t){return e&&"run"in e?function(e,t){return(n,r,o)=>{e.run(G_(n,t),r,e=>{o(e)})}}(e,t):function(e){return t=>G_(t,e)}(e||t)};var K_=n(8379);class $_{constructor(e,t,n){this.property=e,this.normal=t,n&&(this.space=n)}}function Y_(e,t){const n={},r={};let o=-1;for(;++o"xlink:"+t.slice(5).toLowerCase(),properties:{xLinkActuate:null,xLinkArcRole:null,xLinkHref:null,xLinkRole:null,xLinkShow:null,xLinkTitle:null,xLinkType:null}}),hw=dw({space:"xml",transform:(e,t)=>"xml:"+t.slice(3).toLowerCase(),properties:{xmlLang:null,xmlBase:null,xmlSpace:null}});function fw(e,t){return t in e?e[t]:t}function mw(e,t){return fw(e,t.toLowerCase())}const gw=dw({space:"xmlns",attributes:{xmlnsxlink:"xmlns:xlink"},transform:mw,properties:{xmlns:null,xmlnsXLink:null}}),yw=dw({transform:(e,t)=>"role"===t?t:"aria-"+t.slice(4).toLowerCase(),properties:{ariaActiveDescendant:null,ariaAtomic:ew,ariaAutoComplete:null,ariaBusy:ew,ariaChecked:ew,ariaColCount:nw,ariaColIndex:nw,ariaColSpan:nw,ariaControls:rw,ariaCurrent:null,ariaDescribedBy:rw,ariaDetails:null,ariaDisabled:ew,ariaDropEffect:rw,ariaErrorMessage:null,ariaExpanded:ew,ariaFlowTo:rw,ariaGrabbed:ew,ariaHasPopup:null,ariaHidden:ew,ariaInvalid:null,ariaKeyShortcuts:null,ariaLabel:null,ariaLabelledBy:rw,ariaLevel:nw,ariaLive:null,ariaModal:ew,ariaMultiLine:ew,ariaMultiSelectable:ew,ariaOrientation:null,ariaOwns:rw,ariaPlaceholder:null,ariaPosInSet:nw,ariaPressed:ew,ariaReadOnly:ew,ariaRelevant:null,ariaRequired:ew,ariaRoleDescription:rw,ariaRowCount:nw,ariaRowIndex:nw,ariaRowSpan:nw,ariaSelected:ew,ariaSetSize:nw,ariaSort:null,ariaValueMax:nw,ariaValueMin:nw,ariaValueNow:nw,ariaValueText:null,role:null}}),vw=dw({space:"html",attributes:{acceptcharset:"accept-charset",classname:"class",htmlfor:"for",httpequiv:"http-equiv"},transform:mw,mustUseProperty:["checked","multiple","muted","selected"],properties:{abbr:null,accept:ow,acceptCharset:rw,accessKey:rw,action:null,allow:null,allowFullScreen:Z_,allowPaymentRequest:Z_,allowUserMedia:Z_,alt:null,as:null,async:Z_,autoCapitalize:null,autoComplete:rw,autoFocus:Z_,autoPlay:Z_,blocking:rw,capture:null,charSet:null,checked:Z_,cite:null,className:rw,cols:nw,colSpan:null,content:null,contentEditable:ew,controls:Z_,controlsList:rw,coords:nw|ow,crossOrigin:null,data:null,dateTime:null,decoding:null,default:Z_,defer:Z_,dir:null,dirName:null,disabled:Z_,download:tw,draggable:ew,encType:null,enterKeyHint:null,fetchPriority:null,form:null,formAction:null,formEncType:null,formMethod:null,formNoValidate:Z_,formTarget:null,headers:rw,height:nw,hidden:Z_,high:nw,href:null,hrefLang:null,htmlFor:rw,httpEquiv:rw,id:null,imageSizes:null,imageSrcSet:null,inert:Z_,inputMode:null,integrity:null,is:null,isMap:Z_,itemId:null,itemProp:rw,itemRef:rw,itemScope:Z_,itemType:rw,kind:null,label:null,lang:null,language:null,list:null,loading:null,loop:Z_,low:nw,manifest:null,max:null,maxLength:nw,media:null,method:null,min:null,minLength:nw,multiple:Z_,muted:Z_,name:null,nonce:null,noModule:Z_,noValidate:Z_,onAbort:null,onAfterPrint:null,onAuxClick:null,onBeforeMatch:null,onBeforePrint:null,onBeforeToggle:null,onBeforeUnload:null,onBlur:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onContextLost:null,onContextMenu:null,onContextRestored:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnded:null,onError:null,onFocus:null,onFormData:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLanguageChange:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadEnd:null,onLoadStart:null,onMessage:null,onMessageError:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRejectionHandled:null,onReset:null,onResize:null,onScroll:null,onScrollEnd:null,onSecurityPolicyViolation:null,onSeeked:null,onSeeking:null,onSelect:null,onSlotChange:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnhandledRejection:null,onUnload:null,onVolumeChange:null,onWaiting:null,onWheel:null,open:Z_,optimum:nw,pattern:null,ping:rw,placeholder:null,playsInline:Z_,popover:null,popoverTarget:null,popoverTargetAction:null,poster:null,preload:null,readOnly:Z_,referrerPolicy:null,rel:rw,required:Z_,reversed:Z_,rows:nw,rowSpan:nw,sandbox:rw,scope:null,scoped:Z_,seamless:Z_,selected:Z_,shadowRootClonable:Z_,shadowRootDelegatesFocus:Z_,shadowRootMode:null,shape:null,size:nw,sizes:null,slot:null,span:nw,spellCheck:ew,src:null,srcDoc:null,srcLang:null,srcSet:null,start:nw,step:null,style:null,tabIndex:nw,target:null,title:null,translate:null,type:null,typeMustMatch:Z_,useMap:null,value:ew,width:nw,wrap:null,writingSuggestions:null,align:null,aLink:null,archive:rw,axis:null,background:null,bgColor:null,border:nw,borderColor:null,bottomMargin:nw,cellPadding:null,cellSpacing:null,char:null,charOff:null,classId:null,clear:null,code:null,codeBase:null,codeType:null,color:null,compact:Z_,declare:Z_,event:null,face:null,frame:null,frameBorder:null,hSpace:nw,leftMargin:nw,link:null,longDesc:null,lowSrc:null,marginHeight:nw,marginWidth:nw,noResize:Z_,noHref:Z_,noShade:Z_,noWrap:Z_,object:null,profile:null,prompt:null,rev:null,rightMargin:nw,rules:null,scheme:null,scrolling:ew,standby:null,summary:null,text:null,topMargin:nw,valueType:null,version:null,vAlign:null,vLink:null,vSpace:nw,allowTransparency:null,autoCorrect:null,autoSave:null,disablePictureInPicture:Z_,disableRemotePlayback:Z_,prefix:null,property:null,results:nw,security:null,unselectable:null}}),bw=dw({space:"svg",attributes:{accentHeight:"accent-height",alignmentBaseline:"alignment-baseline",arabicForm:"arabic-form",baselineShift:"baseline-shift",capHeight:"cap-height",className:"class",clipPath:"clip-path",clipRule:"clip-rule",colorInterpolation:"color-interpolation",colorInterpolationFilters:"color-interpolation-filters",colorProfile:"color-profile",colorRendering:"color-rendering",crossOrigin:"crossorigin",dataType:"datatype",dominantBaseline:"dominant-baseline",enableBackground:"enable-background",fillOpacity:"fill-opacity",fillRule:"fill-rule",floodColor:"flood-color",floodOpacity:"flood-opacity",fontFamily:"font-family",fontSize:"font-size",fontSizeAdjust:"font-size-adjust",fontStretch:"font-stretch",fontStyle:"font-style",fontVariant:"font-variant",fontWeight:"font-weight",glyphName:"glyph-name",glyphOrientationHorizontal:"glyph-orientation-horizontal",glyphOrientationVertical:"glyph-orientation-vertical",hrefLang:"hreflang",horizAdvX:"horiz-adv-x",horizOriginX:"horiz-origin-x",horizOriginY:"horiz-origin-y",imageRendering:"image-rendering",letterSpacing:"letter-spacing",lightingColor:"lighting-color",markerEnd:"marker-end",markerMid:"marker-mid",markerStart:"marker-start",navDown:"nav-down",navDownLeft:"nav-down-left",navDownRight:"nav-down-right",navLeft:"nav-left",navNext:"nav-next",navPrev:"nav-prev",navRight:"nav-right",navUp:"nav-up",navUpLeft:"nav-up-left",navUpRight:"nav-up-right",onAbort:"onabort",onActivate:"onactivate",onAfterPrint:"onafterprint",onBeforePrint:"onbeforeprint",onBegin:"onbegin",onCancel:"oncancel",onCanPlay:"oncanplay",onCanPlayThrough:"oncanplaythrough",onChange:"onchange",onClick:"onclick",onClose:"onclose",onCopy:"oncopy",onCueChange:"oncuechange",onCut:"oncut",onDblClick:"ondblclick",onDrag:"ondrag",onDragEnd:"ondragend",onDragEnter:"ondragenter",onDragExit:"ondragexit",onDragLeave:"ondragleave",onDragOver:"ondragover",onDragStart:"ondragstart",onDrop:"ondrop",onDurationChange:"ondurationchange",onEmptied:"onemptied",onEnd:"onend",onEnded:"onended",onError:"onerror",onFocus:"onfocus",onFocusIn:"onfocusin",onFocusOut:"onfocusout",onHashChange:"onhashchange",onInput:"oninput",onInvalid:"oninvalid",onKeyDown:"onkeydown",onKeyPress:"onkeypress",onKeyUp:"onkeyup",onLoad:"onload",onLoadedData:"onloadeddata",onLoadedMetadata:"onloadedmetadata",onLoadStart:"onloadstart",onMessage:"onmessage",onMouseDown:"onmousedown",onMouseEnter:"onmouseenter",onMouseLeave:"onmouseleave",onMouseMove:"onmousemove",onMouseOut:"onmouseout",onMouseOver:"onmouseover",onMouseUp:"onmouseup",onMouseWheel:"onmousewheel",onOffline:"onoffline",onOnline:"ononline",onPageHide:"onpagehide",onPageShow:"onpageshow",onPaste:"onpaste",onPause:"onpause",onPlay:"onplay",onPlaying:"onplaying",onPopState:"onpopstate",onProgress:"onprogress",onRateChange:"onratechange",onRepeat:"onrepeat",onReset:"onreset",onResize:"onresize",onScroll:"onscroll",onSeeked:"onseeked",onSeeking:"onseeking",onSelect:"onselect",onShow:"onshow",onStalled:"onstalled",onStorage:"onstorage",onSubmit:"onsubmit",onSuspend:"onsuspend",onTimeUpdate:"ontimeupdate",onToggle:"ontoggle",onUnload:"onunload",onVolumeChange:"onvolumechange",onWaiting:"onwaiting",onZoom:"onzoom",overlinePosition:"overline-position",overlineThickness:"overline-thickness",paintOrder:"paint-order",panose1:"panose-1",pointerEvents:"pointer-events",referrerPolicy:"referrerpolicy",renderingIntent:"rendering-intent",shapeRendering:"shape-rendering",stopColor:"stop-color",stopOpacity:"stop-opacity",strikethroughPosition:"strikethrough-position",strikethroughThickness:"strikethrough-thickness",strokeDashArray:"stroke-dasharray",strokeDashOffset:"stroke-dashoffset",strokeLineCap:"stroke-linecap",strokeLineJoin:"stroke-linejoin",strokeMiterLimit:"stroke-miterlimit",strokeOpacity:"stroke-opacity",strokeWidth:"stroke-width",tabIndex:"tabindex",textAnchor:"text-anchor",textDecoration:"text-decoration",textRendering:"text-rendering",transformOrigin:"transform-origin",typeOf:"typeof",underlinePosition:"underline-position",underlineThickness:"underline-thickness",unicodeBidi:"unicode-bidi",unicodeRange:"unicode-range",unitsPerEm:"units-per-em",vAlphabetic:"v-alphabetic",vHanging:"v-hanging",vIdeographic:"v-ideographic",vMathematical:"v-mathematical",vectorEffect:"vector-effect",vertAdvY:"vert-adv-y",vertOriginX:"vert-origin-x",vertOriginY:"vert-origin-y",wordSpacing:"word-spacing",writingMode:"writing-mode",xHeight:"x-height",playbackOrder:"playbackorder",timelineBegin:"timelinebegin"},transform:fw,properties:{about:iw,accentHeight:nw,accumulate:null,additive:null,alignmentBaseline:null,alphabetic:nw,amplitude:nw,arabicForm:null,ascent:nw,attributeName:null,attributeType:null,azimuth:nw,bandwidth:null,baselineShift:null,baseFrequency:null,baseProfile:null,bbox:null,begin:null,bias:nw,by:null,calcMode:null,capHeight:nw,className:rw,clip:null,clipPath:null,clipPathUnits:null,clipRule:null,color:null,colorInterpolation:null,colorInterpolationFilters:null,colorProfile:null,colorRendering:null,content:null,contentScriptType:null,contentStyleType:null,crossOrigin:null,cursor:null,cx:null,cy:null,d:null,dataType:null,defaultAction:null,descent:nw,diffuseConstant:nw,direction:null,display:null,dur:null,divisor:nw,dominantBaseline:null,download:Z_,dx:null,dy:null,edgeMode:null,editable:null,elevation:nw,enableBackground:null,end:null,event:null,exponent:nw,externalResourcesRequired:null,fill:null,fillOpacity:nw,fillRule:null,filter:null,filterRes:null,filterUnits:null,floodColor:null,floodOpacity:null,focusable:null,focusHighlight:null,fontFamily:null,fontSize:null,fontSizeAdjust:null,fontStretch:null,fontStyle:null,fontVariant:null,fontWeight:null,format:null,fr:null,from:null,fx:null,fy:null,g1:ow,g2:ow,glyphName:ow,glyphOrientationHorizontal:null,glyphOrientationVertical:null,glyphRef:null,gradientTransform:null,gradientUnits:null,handler:null,hanging:nw,hatchContentUnits:null,hatchUnits:null,height:null,href:null,hrefLang:null,horizAdvX:nw,horizOriginX:nw,horizOriginY:nw,id:null,ideographic:nw,imageRendering:null,initialVisibility:null,in:null,in2:null,intercept:nw,k:nw,k1:nw,k2:nw,k3:nw,k4:nw,kernelMatrix:iw,kernelUnitLength:null,keyPoints:null,keySplines:null,keyTimes:null,kerning:null,lang:null,lengthAdjust:null,letterSpacing:null,lightingColor:null,limitingConeAngle:nw,local:null,markerEnd:null,markerMid:null,markerStart:null,markerHeight:null,markerUnits:null,markerWidth:null,mask:null,maskContentUnits:null,maskUnits:null,mathematical:null,max:null,media:null,mediaCharacterEncoding:null,mediaContentEncodings:null,mediaSize:nw,mediaTime:null,method:null,min:null,mode:null,name:null,navDown:null,navDownLeft:null,navDownRight:null,navLeft:null,navNext:null,navPrev:null,navRight:null,navUp:null,navUpLeft:null,navUpRight:null,numOctaves:null,observer:null,offset:null,onAbort:null,onActivate:null,onAfterPrint:null,onBeforePrint:null,onBegin:null,onCancel:null,onCanPlay:null,onCanPlayThrough:null,onChange:null,onClick:null,onClose:null,onCopy:null,onCueChange:null,onCut:null,onDblClick:null,onDrag:null,onDragEnd:null,onDragEnter:null,onDragExit:null,onDragLeave:null,onDragOver:null,onDragStart:null,onDrop:null,onDurationChange:null,onEmptied:null,onEnd:null,onEnded:null,onError:null,onFocus:null,onFocusIn:null,onFocusOut:null,onHashChange:null,onInput:null,onInvalid:null,onKeyDown:null,onKeyPress:null,onKeyUp:null,onLoad:null,onLoadedData:null,onLoadedMetadata:null,onLoadStart:null,onMessage:null,onMouseDown:null,onMouseEnter:null,onMouseLeave:null,onMouseMove:null,onMouseOut:null,onMouseOver:null,onMouseUp:null,onMouseWheel:null,onOffline:null,onOnline:null,onPageHide:null,onPageShow:null,onPaste:null,onPause:null,onPlay:null,onPlaying:null,onPopState:null,onProgress:null,onRateChange:null,onRepeat:null,onReset:null,onResize:null,onScroll:null,onSeeked:null,onSeeking:null,onSelect:null,onShow:null,onStalled:null,onStorage:null,onSubmit:null,onSuspend:null,onTimeUpdate:null,onToggle:null,onUnload:null,onVolumeChange:null,onWaiting:null,onZoom:null,opacity:null,operator:null,order:null,orient:null,orientation:null,origin:null,overflow:null,overlay:null,overlinePosition:nw,overlineThickness:nw,paintOrder:null,panose1:null,path:null,pathLength:nw,patternContentUnits:null,patternTransform:null,patternUnits:null,phase:null,ping:rw,pitch:null,playbackOrder:null,pointerEvents:null,points:null,pointsAtX:nw,pointsAtY:nw,pointsAtZ:nw,preserveAlpha:null,preserveAspectRatio:null,primitiveUnits:null,propagate:null,property:iw,r:null,radius:null,referrerPolicy:null,refX:null,refY:null,rel:iw,rev:iw,renderingIntent:null,repeatCount:null,repeatDur:null,requiredExtensions:iw,requiredFeatures:iw,requiredFonts:iw,requiredFormats:iw,resource:null,restart:null,result:null,rotate:null,rx:null,ry:null,scale:null,seed:null,shapeRendering:null,side:null,slope:null,snapshotTime:null,specularConstant:nw,specularExponent:nw,spreadMethod:null,spacing:null,startOffset:null,stdDeviation:null,stemh:null,stemv:null,stitchTiles:null,stopColor:null,stopOpacity:null,strikethroughPosition:nw,strikethroughThickness:nw,string:null,stroke:null,strokeDashArray:iw,strokeDashOffset:null,strokeLineCap:null,strokeLineJoin:null,strokeMiterLimit:nw,strokeOpacity:nw,strokeWidth:null,style:null,surfaceScale:nw,syncBehavior:null,syncBehaviorDefault:null,syncMaster:null,syncTolerance:null,syncToleranceDefault:null,systemLanguage:iw,tabIndex:nw,tableValues:null,target:null,targetX:nw,targetY:nw,textAnchor:null,textDecoration:null,textRendering:null,textLength:null,timelineBegin:null,title:null,transformBehavior:null,type:null,typeOf:iw,to:null,transform:null,transformOrigin:null,u1:null,u2:null,underlinePosition:nw,underlineThickness:nw,unicode:null,unicodeBidi:null,unicodeRange:null,unitsPerEm:nw,values:null,vAlphabetic:nw,vMathematical:nw,vectorEffect:null,vHanging:nw,vIdeographic:nw,version:null,vertAdvY:nw,vertOriginX:nw,vertOriginY:nw,viewBox:null,viewTarget:null,visibility:null,width:null,widths:null,wordSpacing:null,writingMode:null,x:null,x1:null,x2:null,xChannelSelector:null,xHeight:nw,y:null,y1:null,y2:null,yChannelSelector:null,z:null,zoomAndPan:null}}),xw=Y_([hw,pw,gw,yw,vw],"html"),kw=Y_([hw,pw,gw,yw,bw],"svg");function Aw(e){if(e.allowedElements&&e.disallowedElements)throw new TypeError("Only one of `allowedElements` and `disallowedElements` should be defined");if(e.allowedElements||e.disallowedElements||e.allowElement)return t=>{w_(t,"element",(t,n,r)=>{const o=r;let i;if(e.allowedElements?i=!e.allowedElements.includes(t.tagName):e.disallowedElements&&(i=e.disallowedElements.includes(t.tagName)),!i&&e.allowElement&&"number"===typeof n&&(i=!e.allowElement(t,n,o)),i&&"number"===typeof n)return e.unwrapDisallowed&&t.children?o.children.splice(n,1,...t.children):o.children.splice(n,1),n})}}var Sw=n(6851);function _w(e){const t=e&&"object"===typeof e&&"text"===e.type?e.value||"":e;return"string"===typeof t&&""===t.replace(/[ \t\n\f\r]/g,"")}const ww=/^data[-\w.:]+$/i,Tw=/-[a-z]/g,Ew=/[A-Z]/g;function Cw(e){return"-"+e.toLowerCase()}function Iw(e){return e.charAt(1).toUpperCase()}const Lw={classId:"classID",dataType:"datatype",itemId:"itemID",strokeDashArray:"strokeDasharray",strokeDashOffset:"strokeDashoffset",strokeLineCap:"strokeLinecap",strokeLineJoin:"strokeLinejoin",strokeMiterLimit:"strokeMiterlimit",typeOf:"typeof",xLinkActuate:"xlinkActuate",xLinkArcRole:"xlinkArcrole",xLinkHref:"xlinkHref",xLinkRole:"xlinkRole",xLinkShow:"xlinkShow",xLinkTitle:"xlinkTitle",xLinkType:"xlinkType",xmlnsXLink:"xmlnsXlink"};const zw=n(7922),Pw=["http","https","mailto","tel"];function Nw(e){const t=(e||"").trim(),n=t.charAt(0);if("#"===n||"/"===n)return t;const r=t.indexOf(":");if(-1===r)return t;let o=-1;for(;++oo?t:(o=t.indexOf("#"),-1!==o&&r>o?t:"javascript:void(0)")}const Rw={}.hasOwnProperty,jw=new Set(["table","thead","tbody","tfoot","tr"]);function Ow(e,t){const n=[];let r,o=-1;for(;++o0?o.createElement(f,c,p):o.createElement(f,c)}function Dw(e,t){let n=-1,r=0;for(;++n4&&"data"===n.slice(0,4)&&ww.test(t)){if("-"===t.charAt(4)){const e=t.slice(5).replace(Tw,Iw);r="data"+e.charAt(0).toUpperCase()+e.slice(1)}else{const e=t.slice(4);if(!Tw.test(e)){let n=e.replace(Ew,Cw);"-"!==n.charAt(0)&&(n="-"+n),t="data"+n}}o=lw}return new o(r,t)}(r.schema,t);let i=n;null!==i&&void 0!==i&&i===i&&(Array.isArray(i)&&(i=o.commaSeparated?function(e,t){const n=t||{};return(""===e[e.length-1]?[...e,""]:e).join((n.padRight?" ":"")+","+(!1===n.padLeft?"":" ")).trim()}(i):function(e){return e.join(" ").trim()}(i)),"style"===o.property&&"string"===typeof i&&(i=function(e){const t={};try{zw(e,n)}catch(r){}return t;function n(e,n){const r="-ms-"===e.slice(0,4)?"ms-".concat(e.slice(4)):e;t[r.replace(/-([a-z])/g,Bw)]=n}}(i)),o.space&&o.property?e[Rw.call(Lw,o.property)?Lw[o.property]:o.property]=i:o.attribute&&(e[o.attribute]=i))}function Bw(e,t){return t.toUpperCase()}const Ww={}.hasOwnProperty,Uw={plugins:{to:"remarkPlugins",id:"change-plugins-to-remarkplugins"},renderers:{to:"components",id:"change-renderers-to-components"},astPlugins:{id:"remove-buggy-html-in-markdown-parser"},allowDangerousHtml:{id:"remove-buggy-html-in-markdown-parser"},escapeHtml:{id:"remove-buggy-html-in-markdown-parser"},source:{to:"children",id:"change-source-to-children"},allowNode:{to:"allowElement",id:"replace-allownode-allowedtypes-and-disallowedtypes"},allowedTypes:{to:"allowedElements",id:"replace-allownode-allowedtypes-and-disallowedtypes"},disallowedTypes:{to:"disallowedElements",id:"replace-allownode-allowedtypes-and-disallowedtypes"},includeNodeIndex:{to:"includeElementIndex",id:"change-includenodeindex-to-includeelementindex"}};function Vw(e){for(const o in Uw)if(Ww.call(Uw,o)&&Ww.call(e,o)){const e=Uw[o];console.warn("[react-markdown] Warning: please ".concat(e.to?"use `".concat(e.to,"` instead of"):"remove"," `").concat(o,"` (see <").concat("https://github.com/remarkjs/react-markdown/blob/main/changelog.md","#").concat(e.id,"> for more info)")),delete Uw[o]}const t=gA().use(y_).use(e.remarkPlugins||[]).use(q_,u(u({},e.remarkRehypeOptions),{},{allowDangerousHtml:!0})).use(e.rehypePlugins||[]).use(Aw,e),n=new lA;"string"===typeof e.children?n.value=e.children:void 0!==e.children&&null!==e.children&&console.warn("[react-markdown] Warning: please pass a string as `children` (not: `".concat(e.children,"`)"));const r=t.runSync(t.parse(n),n);if("root"!==r.type)throw new TypeError("Expected a `root` node");let i=o.createElement(o.Fragment,{},Ow({options:e,schema:xw,listDepth:0},r));return e.className&&(i=o.createElement("div",{className:e.className},i)),i}Vw.propTypes={children:K_.string,className:K_.string,allowElement:K_.func,allowedElements:K_.arrayOf(K_.string),disallowedElements:K_.arrayOf(K_.string),unwrapDisallowed:K_.bool,remarkPlugins:K_.arrayOf(K_.oneOfType([K_.object,K_.func,K_.arrayOf(K_.oneOfType([K_.bool,K_.string,K_.object,K_.func,K_.arrayOf(K_.any)]))])),rehypePlugins:K_.arrayOf(K_.oneOfType([K_.object,K_.func,K_.arrayOf(K_.oneOfType([K_.bool,K_.string,K_.object,K_.func,K_.arrayOf(K_.any)]))])),sourcePos:K_.bool,rawSourcePos:K_.bool,skipHtml:K_.bool,includeElementIndex:K_.bool,transformLinkUri:K_.oneOfType([K_.func,K_.bool]),linkTarget:K_.oneOfType([K_.func,K_.string]),transformImageUri:K_.func,components:K_.object};const Hw=new Map;function Gw(e){let{text:t,fromLang:n,speechLang:r,toLang:i,apiSetting:a,context:s=""}=e;const l=Mm(),[c,u]=(0,o.useState)(""),[d,p]=(0,o.useState)(!1),[h,f]=(0,o.useState)(""),m=JSON.stringify(a||{});return(0,o.useEffect)(()=>{if(null===t||void 0===t||!t.trim()||null===a||void 0===a||!a.apiSlug)return u(""),p(!1),void f("");let e=!0;const r=function(e){let{text:t,fromLang:n,toLang:r,apiSettingKey:o,context:i}=e;return JSON.stringify({text:t,fromLang:n,toLang:r,apiSettingKey:o,context:i})}({text:t,fromLang:n,toLang:i,apiSettingKey:m,context:s}),o=t=>{let{markdown:n}=t;e&&n&&u(n)};return(async()=>{try{p(!0),u(""),f("");let l=Hw.get(r);l||(l={subscribers:new Set,promise:null},l.promise=Ac({text:t,fromLang:n,toLang:i,apiSetting:a,context:s,onStreamChunk:e=>{l.subscribers.forEach(t=>t(e))}}).finally(()=>{Hw.delete(r)}),Hw.set(r,l)),l.subscribers.add(o);const c=await l.promise;e&&u(c)}catch(l){if("AbortError"===(null===l||void 0===l?void 0:l.name))return;e&&f(l.message)}finally{e&&p(!1)}})(),()=>{var t;e=!1,null===(t=Hw.get(r))||void 0===t||t.subscribers.delete(o)}},[t,n,i,m,s]),h?(0,R.jsx)(Ue,{severity:"error",children:h}):d&&!c?(0,R.jsx)(Rh,{size:16}):c?(0,R.jsxs)(Yf,{sx:{position:"relative",pr:8,"& > :first-of-type":{mt:0},"& > :last-child":{mb:0},"& h1, & h2, & h3, & h4, & h5, & h6":{fontSize:"1em",fontWeight:700,lineHeight:1.55,mt:1.25,mb:.75},"& p":{my:1},"& ul, & ol":{pl:3,my:1},"& blockquote":{m:0,pl:1.5,borderLeft:"3px solid",borderColor:"divider",color:"text.secondary"},"& code":{px:.5,py:.1,borderRadius:.5,bgcolor:"action.hover"}},children:[(0,R.jsxs)(Yf,{sx:{position:"absolute",top:0,right:0,zIndex:1,display:"flex",alignItems:"center"},children:[(0,R.jsx)(qk,{text:t,lang:r||n||"en-US"}),(0,R.jsx)(zk,{text:c,title:l("copy")})]}),d&&(0,R.jsx)(Rh,{size:12,sx:{mr:1}}),(0,R.jsx)(Uh,{component:"div",children:(0,R.jsx)(Vw,{children:c})})]}):null}function qw(e){let{text:t}=e;const{loading:n,error:r,data:o}=jm(vc,t);return n?(0,R.jsx)(Rh,{size:16}):r?(0,R.jsx)(Ue,{severity:"error",children:r}):o?(0,R.jsx)(R.Fragment,{children:o.map(e=>{let{k:t,v:n}=e;return(0,R.jsxs)(Uh,{component:"div",children:[(0,R.jsx)(Uh,{children:t}),(0,R.jsx)(Uh,{component:"ul",style:{margin:"0"},children:(0,R.jsx)(Uh,{component:"li",children:n})})]},t)})}):null}function Kw(e){let{text:t}=e;const{loading:n,error:r,data:o}=jm(bc,t);return n?(0,R.jsx)(Rh,{size:16}):r?(0,R.jsx)(Ue,{severity:"error",children:r}):o?(0,R.jsx)(R.Fragment,{children:o.map(e=>{let{entry:t,explain:n}=e;return(0,R.jsxs)(Uh,{component:"div",children:[(0,R.jsx)(Uh,{children:t}),(0,R.jsx)(Uh,{component:"ul",style:{margin:"0"},children:(0,R.jsx)(Uh,{component:"li",children:n})})]},t)})}):null}function $w(e){let{text:t,enSug:n}=e;const r={[gt]:(0,R.jsx)(qw,{text:t}),[yt]:(0,R.jsx)(Kw,{text:t})};return(0,R.jsxs)(xm,{spacing:1,children:[(0,R.jsx)(of,{}),r[n]||(0,R.jsx)(Uh,{children:"Sug not support"})]})}const Yw="https://www.zdic.net",Xw=e=>(e||"").replace(/\s+/g," ").trim(),Jw=e=>e?/^https?:\/\//.test(e)?e:e.startsWith("//")?"https:".concat(e):e.startsWith("/")?"".concat(Yw).concat(e):e:"",Qw=(e,t)=>{const n=Array.from(e.querySelectorAll(".meta-badge")).find(e=>Xw(e.textContent)===t);return(e=>Xw(Array.from((null===e||void 0===e?void 0:e.childNodes)||[]).filter(e=>e.nodeType===Node.TEXT_NODE).map(e=>e.textContent).join(""))||Xw(null===e||void 0===e?void 0:e.textContent))(null===n||void 0===n?void 0:n.nextElementSibling)},Zw=(e,t)=>(e=>Array.from(new Set(e.filter(Boolean))))(Array.from(e.querySelectorAll(t)).map(e=>{var t;return Xw(e.getAttribute("title"))||Xw(null===(t=e.querySelector("img"))||void 0===t?void 0:t.getAttribute("alt"))||Xw(e.textContent)})).join(", "),eT=e=>{const t=[];return e.querySelectorAll(".jbjs>.jnr>p>.dicpy").forEach(e=>{var n,r;const o=Xw(null===(n=e.childNodes[0])||void 0===n?void 0:n.nodeValue),i=e.querySelector(".audio_play_button"),a=[];let s=null===(r=e.parentElement)||void 0===r?void 0:r.nextElementSibling;for(;s;){var l;if("ol"===(null===(l=s.tagName)||void 0===l?void 0:l.toLowerCase())){s.querySelectorAll("li").forEach(e=>{a.push(Xw(e.textContent))});break}if(s.querySelector(".dicpy"))break;s=s.nextElementSibling}t.push({pinyin:o,audioUrl:Jw((null===i||void 0===i?void 0:i.getAttribute("data-src-mp3"))||(null===i||void 0===i?void 0:i.getAttribute("data-audio"))),definitions:a})}),t},tT=async e=>{var t,n,r,o,i,a;const s="".concat(Yw,"/hans/").concat(encodeURIComponent(e)),l=await xa(s,{credentials:"omit"},{useCache:!1});if(!l)return null;const c=(new DOMParser).parseFromString(kl.createHTML(l),"text/html"),u=Xw(null===(t=c.querySelector(".char-meta"))||void 0===t?void 0:t.getAttribute("content"))||Xw(null===(n=c.querySelector("#glyph-img"))||void 0===n?void 0:n.getAttribute("alt"))||Xw(null===(r=c.querySelector(".dict-section__char"))||void 0===r?void 0:r.textContent)||Xw(null===(o=c.querySelector(".h2_entry>.orth"))||void 0===o?void 0:o.textContent)||e,d=Qw(c,"\u90e8\u9996")||Xw(null===(i=c.querySelector("[class^='z_bs'] a"))||void 0===i?void 0:i.textContent),p=Zw(c,"[class^='z_jfz'] a"),h=Zw(c,".char-card__variants .variant-link")||Zw(c,"[class^='z_yt'] a"),f=Qw(c,"\u4e94\u7b14")||Xw(null===(a=c.querySelector(".entry_title table.dsk:nth-child(2) tr:nth-child(2) > td.dsk_2_1:nth-child(1) > p"))||void 0===a?void 0:a.textContent),m=(e=>Array.from(e.querySelectorAll("#jbjs .jbjs-reading")).map(e=>{var t;const n=Xw(null===(t=e.querySelector(".jbjs-reading__py"))||void 0===t?void 0:t.textContent),r=e.querySelector(".audio-btn"),o=Array.from(e.querySelectorAll(".jbjs-list li")).map(e=>Xw(e.textContent)).filter(Boolean);return{pinyin:n,audioUrl:Jw(null===r||void 0===r?void 0:r.getAttribute("data-audio")),definitions:o}}).filter(e=>e.pinyin||e.definitions.length>0))(c),{en:g,de:y,fr:v}=(e=>{const t={en:"",de:"",fr:""},n={"\u82f1\u8bed":"en","\u5fb7\u8bed":"de","\u6cd5\u8bed":"fr"};return Array.from(e.querySelectorAll(".enbox p, #jbjs p, #jbjs div")).forEach(e=>{const r=Xw(e.textContent);Object.entries(n).forEach(e=>{let[n,o]=e;!t[o]&&r.startsWith(n)&&(t[o]=Xw(r.slice(n.length)))})}),t})(c);return{text:u,bushou:d,fanti:p,yiti:h,wubi:f,results:m.length>0?m:eT(c),en:g,de:y,fr:v}};function nT(e){let{text:t}=e;const[n,r]=(0,o.useState)(null),[i,a]=(0,o.useState)(!1);return(0,o.useEffect)(()=>{if(!t)return;let e=!0;return a(!0),tT(t).then(t=>{e&&(r(t),a(!1))}).catch(t=>{e&&(console.error("\u83b7\u53d6\u6c49\u5178\u6570\u636e\u5931\u8d25:",t),a(!1))}),()=>{e=!1}},[t]),i?(0,R.jsx)(xm,{alignItems:"center",justifyContent:"center",py:2,children:(0,R.jsx)(Rh,{size:24})}):n?(0,R.jsxs)(xm,{spacing:1,children:[(0,R.jsx)(Uh,{variant:"subtitle1",style:{fontWeight:"bold"},children:n.text}),(0,R.jsx)(of,{}),(n.bushou||n.wubi)&&(0,R.jsxs)(Uh,{variant:"body2",color:"text.secondary",children:[n.bushou&&"[\u90e8\u9996]: ".concat(n.bushou," "),n.wubi&&"[\u4e94\u7b14]: ".concat(n.wubi)]}),(n.fanti||n.yiti)&&(0,R.jsxs)(Uh,{variant:"body2",color:"text.secondary",children:[n.fanti&&"[\u7e41\u4f53]: ".concat(n.fanti," "),n.yiti&&"[\u5f02\u4f53]: ".concat(n.yiti)]}),n.results&&n.results.length>0&&(0,R.jsx)(xm,{spacing:1,mt:1,children:n.results.map((e,t)=>(0,R.jsxs)(Yf,{children:[(0,R.jsxs)(xm,{direction:"row",alignItems:"center",spacing:1,children:[(0,R.jsxs)(Uh,{variant:"body2",color:"primary",style:{fontWeight:"bold"},children:["[",e.pinyin,"]"]}),e.audioUrl&&(0,R.jsx)(Hk,{src:e.audioUrl})]}),(0,R.jsx)(Yf,{component:"ol",sx:{pl:3,m:0,mt:.5},children:e.definitions&&e.definitions.map((e,t)=>(0,R.jsx)(Uh,{component:"li",variant:"body2",sx:{mb:.5},children:e},t))})]},t))}),(n.en||n.de||n.fr)&&(0,R.jsxs)(xm,{spacing:.5,mt:1,children:[n.en&&(0,R.jsxs)(Uh,{variant:"body2",sx:{wordBreak:"break-word"},children:["[\u82f1]: ",n.en]}),n.de&&(0,R.jsxs)(Uh,{variant:"body2",sx:{wordBreak:"break-word"},children:["[\u5fb7]: ",n.de]}),n.fr&&(0,R.jsxs)(Uh,{variant:"body2",sx:{wordBreak:"break-word"},children:["[\u6cd5]: ",n.fr]})]})]}):(0,R.jsxs)(xm,{spacing:1,children:[(0,R.jsx)(Uh,{variant:"subtitle1",style:{fontWeight:"bold"},children:t}),(0,R.jsx)(of,{}),(0,R.jsx)(Uh,{variant:"body2",color:"text.secondary",children:"\u6682\u65e0\u5b57\u5178\u6570\u636e\u6216\u67e5\u8be2\u5931\u8d25"})]})}const rT={[kt]:async e=>{const t={client:"gtx",dt:"t",dj:1,ie:"UTF-8",sl:"auto",tl:"zh-CN",q:e},n="https://translate.googleapis.com/translate_a/single?".concat(ls.stringify(t)),r={headers:{"Content-type":"application/json"}},o=await xa(n,r,{useCache:!0});return null!==o&&void 0!==o&&o.src?(await wi(n,r,o),o.src):""},[St]:async e=>{const t={text:e,detector:St},n="".concat(vo,"?").concat(ls.stringify(t)),r=await _i(n);if(r)return r;const o="".concat(vo,"_").concat(St),i=Xl(o,$l,{batchInterval:200,batchSize:20,batchLength:1e5}),a=await i.addTask(e);return a?(wi(n,null,a),a):""},[Ot]:async e=>{const t="https://fanyi.baidu.com/langdetect",n={headers:{"Content-type":"application/json"},method:"POST",body:JSON.stringify({query:e})},r=await xa(t,n,{useCache:!0});return 0===(null===r||void 0===r?void 0:r.error)?(await wi(t,n,r),r.lan):""},[Mt]:async e=>{const t="https://transmart.qq.com/api/imt",n={headers:{"Content-type":"application/json","user-agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36",referer:"https://transmart.qq.com/zh-CN/index"},method:"POST",body:JSON.stringify({header:{fn:"text_analysis",client_key:"browser-chrome-110.0.0-Mac OS-df4bd4c5-a65d-44b2-a40f-42f34f3535f2-1677486696487"},text:e})},r=await xa(t,n,{useCache:!0});return null!==r&&void 0!==r&&r.language?(await wi(t,n,r),r.language):""},[xt]:async e=>{if(!jo)return"";const[t,n]=await ua({fn:sc,msg:"builtinai_detect",text:e});return n?"":t}};function oT(e){let{text:t,setText:n,translationText:r=t,apiSlugs:i,fromLang:a,toLang:s,toLang2:l,transApis:c,simpleStyle:d=!1,langDetector:p="-",enDict:h="-",enSug:f="-",aiDictApiSlug:m="-",aiDictPromptSlug:g=Zn,prompts:y=[],selectionContext:v="",isPlaygound:b=!1}=e;const x=Mm(),[k,A]=(0,o.useState)(!1),[S,_]=(0,o.useState)(t),[w,T]=(0,o.useState)(i),[E,C]=(0,o.useState)(!1),[I,L]=(0,o.useState)(a),[z,P]=(0,o.useState)(s),[N,j]=(0,o.useState)(l),[O,M]=(0,o.useState)(p),[D,F]=(0,o.useState)(h),[B,W]=(0,o.useState)(f),[U,V]=(0,o.useState)("default"),H=(0,o.useRef)(!1),[G,q]=(0,o.useState)(""),[K,$]=(0,o.useState)(!1),Y=(0,o.useRef)(null);(0,o.useEffect)(()=>{const e=Y.current;if(!e)return;e.focus();const t=e.value.length;e.setSelectionRange(t,t)},[]),(0,o.useEffect)(()=>{if(Bo(t)){const e=new CustomEvent("kiss-add-word",{detail:{word:t}});document.dispatchEvent(e)}},[t]),(0,o.useEffect)(()=>{E||T(i)},[i,E]),(0,o.useEffect)(()=>{k||_(t)},[t,k]),(0,o.useEffect)(()=>{t.trim()?(async()=>{try{$(!0);const e=await async function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"-",n="";if(Xt.has(t))try{const r=await rT[t](e);r&&(n=cn[t].get(r)||"")}catch(a){Nr("detect lang remote",a)}if(!n)try{var r,o,i;const t=await(null===Po||void 0===Po||null===(r=Po.i18n)||void 0===r?void 0:r.detectLanguage(e)),a=null===t||void 0===t||null===(o=t.languages)||void 0===o||null===(i=o[0])||void 0===i?void 0:i.language;null!==t&&void 0!==t&&t.isReliable&&a&&tn.has(a)?n=a:null!==a&&void 0!==a&&a.startsWith("zh")&&(n="zh-CN")}catch(a){Nr("detect lang local",a)}return n}(t,O);e&&q(e)}catch(e){Nr("tranbox: detect lang",e)}finally{$(!1)}})():q("")},[t,O,q,$]);const X=(0,o.useMemo)(()=>"auto"===I&&z!==N&&"-"!==N&&G===z?N:z,[I,z,N,G]),J=(0,o.useMemo)(()=>c.filter(e=>!e.isDisabled).map(e=>({key:e.apiSlug,name:e.apiName||e.apiSlug})),[c]),Q=(0,o.useMemo)(()=>Bo(t),[t]),Z=(0,o.useMemo)(()=>b?6:4,[b]),ee=(0,o.useMemo)(()=>b?3:4,[b]),te=(0,o.useMemo)(()=>{const e=new Set(J.map(e=>e.key));return w.filter(t=>e.has(t))},[w,J]),ne=Q&&mt.has(D)||Go(t),re=(0,o.useMemo)(()=>{if(!m||"-"===m)return null;const e=c.find(e=>e.apiSlug===m);if(!e)return null;if(g===Zn)return e.dictPrompt?e:null;const t=fr(y,g);return t?u(u({},e),{},{dictPromptSlug:t.slug,dictPrompt:t.systemPrompt,dictUserPrompt:t.userPrompt}):null},[m,g,y,c]),oe=Boolean((null===t||void 0===t?void 0:t.trim())&&re);return(0,o.useEffect)(()=>{H.current||(ne?V("default"):oe&&V("ai"))},[t,ne,oe]),(0,R.jsxs)(xm,{spacing:d?1:2,children:[!d&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(Yf,{children:(0,R.jsxs)(jg,{container:!0,spacing:2,columns:12,children:[(0,R.jsx)(jg,{item:!0,xs:Z,md:ee,children:(0,R.jsx)(Ex,{select:!0,SelectProps:{multiple:!0,MenuProps:{disablePortal:!b}},fullWidth:!0,size:"small",value:te,name:"apiSlugs",label:x("translate_service_multiple"),onChange:e=>{C(!0),T(e.target.value)},children:J.map(e=>{let{key:t,name:n}=e;return(0,R.jsx)(Jm,{value:t,children:n},t)})})}),(0,R.jsx)(jg,{item:!0,xs:Z,md:ee,children:(0,R.jsx)(Ex,{select:!0,SelectProps:{MenuProps:{disablePortal:!b}},fullWidth:!0,size:"small",name:"fromLang",value:I,label:x("from_lang"),onChange:e=>{L(e.target.value)},children:rn.map(e=>{let[t,n]=e;return(0,R.jsx)(Jm,{value:t,children:n},t)})})}),(0,R.jsx)(jg,{item:!0,xs:Z,md:ee,children:(0,R.jsx)(Ex,{select:!0,SelectProps:{MenuProps:{disablePortal:!b}},fullWidth:!0,size:"small",name:"toLang",value:z,label:x("to_lang"),onChange:e=>{P(e.target.value)},children:nn.map(e=>{let[t,n]=e;return(0,R.jsx)(Jm,{value:t,children:n},t)})})}),b&&(0,R.jsxs)(R.Fragment,{children:[(0,R.jsx)(jg,{item:!0,xs:Z,md:ee,children:(0,R.jsx)(Ex,{select:!0,SelectProps:{MenuProps:{disablePortal:!b}},fullWidth:!0,size:"small",name:"toLang2",value:N,label:x("to_lang2"),onChange:e=>{j(e.target.value)},children:nn.map(e=>{let[t,n]=e;return(0,R.jsx)(Jm,{value:t,children:n},t)})})}),(0,R.jsx)(jg,{item:!0,xs:Z,md:ee,children:(0,R.jsxs)(Ex,{select:!0,SelectProps:{MenuProps:{disablePortal:!b}},fullWidth:!0,size:"small",name:"enDict",value:D,label:x("english_dict"),onChange:e=>{F(e.target.value)},children:[(0,R.jsx)(Jm,{value:"-",children:x("disable")}),ft.map(e=>(0,R.jsx)(Jm,{value:e,children:e},e))]})}),(0,R.jsx)(jg,{item:!0,xs:Z,md:ee,children:(0,R.jsxs)(Ex,{select:!0,SelectProps:{MenuProps:{disablePortal:!b}},fullWidth:!0,size:"small",name:"enSug",value:B,label:x("english_suggest"),onChange:e=>{W(e.target.value)},children:[(0,R.jsx)(Jm,{value:"-",children:x("disable")}),vt.map(e=>(0,R.jsx)(Jm,{value:e,children:e},e))]})}),(0,R.jsx)(jg,{item:!0,xs:Z,md:ee,children:(0,R.jsxs)(Ex,{select:!0,SelectProps:{MenuProps:{disablePortal:!b}},fullWidth:!0,size:"small",name:"langDetector",value:O,label:x("detected_lang"),onChange:e=>{M(e.target.value)},children:[(0,R.jsx)(Jm,{value:"-",children:x("disable")}),Yt.map(e=>(0,R.jsx)(Jm,{value:e,children:e},e))]})}),(0,R.jsx)(jg,{item:!0,xs:Z,md:ee,children:(0,R.jsx)(Ex,{fullWidth:!0,size:"small",name:"deLang",value:G&&tn.get(G),label:x("detected_result"),disabled:!0,InputProps:{startAdornment:K?(0,R.jsx)(Rh,{size:16}):null}})})]})]})}),(0,R.jsx)(Yf,{children:(0,R.jsx)(Ex,{size:"small",label:x("original_text"),fullWidth:!0,multiline:!0,inputRef:Y,minRows:b?2:1,maxRows:10,sx:{"& textarea":{resize:"vertical"}},value:S,onChange:e=>{_(e.target.value)},onFocus:()=>{A(!0)},onBlur:()=>{A(!1),n(S.trim())},InputProps:{endAdornment:(0,R.jsx)(xm,{direction:"row",sx:{position:"absolute",right:0,top:0},children:k?(0,R.jsx)(Ce,{size:"small",onClick:e=>{e.stopPropagation(),A(!1),n(S.trim())},title:x("submit"),children:(0,R.jsx)(Ek.A,{fontSize:"inherit"})}):t?(0,R.jsx)(zk,{text:t,title:x("copy")}):(0,R.jsx)(Ce,{size:"small",onClick:async()=>{try{const e=await navigator.clipboard.readText();n(e.trim())}catch(e){}},title:x("paste"),children:(0,R.jsx)(Ck.A,{fontSize:"inherit"})})})}})})]}),te.map(e=>(0,R.jsx)(Nk,{text:r,fromLang:I,toLang:X,simpleStyle:d,apiSlug:e,transApis:c},e)),(ne||oe)&&(0,R.jsx)(Yf,{children:oe?(0,R.jsxs)(R.Fragment,{children:[(0,R.jsxs)(kk,{value:ne?U:"ai",onChange:(e,t)=>{H.current=!0,V(t)},variant:"scrollable",allowScrollButtonsMobile:!0,sx:{minHeight:36,mb:1},children:[ne&&(0,R.jsx)(Tk,{value:"default",label:x("default_dict","\u9ed8\u8ba4\u8bcd\u5178"),sx:{minHeight:36,py:.5}}),(0,R.jsx)(Tk,{value:"ai",label:x("ai_dict","AI\u8bcd\u5178"),sx:{minHeight:36,py:.5}})]}),ne&&"default"===U&&(0,R.jsxs)(R.Fragment,{children:[Q&&mt.has(D)&&(0,R.jsx)(Yk,{text:t,enDict:D}),Go(t)&&(0,R.jsx)(nT,{text:t})]}),(!ne||"ai"===U)&&(0,R.jsx)(Gw,{text:t,fromLang:I,speechLang:"auto"===I?G:I,toLang:X,apiSetting:re,context:v&&v.includes(t)?v:""})]}):(0,R.jsxs)(R.Fragment,{children:[Q&&mt.has(D)&&(0,R.jsx)(Yk,{text:t,enDict:D}),Go(t)&&(0,R.jsx)(nT,{text:t})]})}),Q&&bt.has(B)&&(0,R.jsx)($w,{text:t,enSug:B})]})}function iT(){const[e,t]=(0,o.useState)(""),{setting:n}=cf(),{tranboxSetting:{enDict:r,enSug:i,apiSlugs:a,fromLang:s,toLang:l,toLang2:c,aiDictApiSlug:u,aiDictPromptSlug:d},transApis:p,langDetector:h,prompts:f,subtitleSetting:m}=n,g=(0,o.useMemo)(()=>Lr(p,f,m),[f,m,p]);return(0,R.jsx)(Yf,{sx:{p:2},children:(0,R.jsx)(oT,{text:e,setText:t,apiSlugs:a,fromLang:s,toLang:l,toLang2:c,transApis:g,simpleStyle:!1,langDetector:h,enDict:r,enSug:i,aiDictApiSlug:u,aiDictPromptSlug:d,prompts:f})})}function aT(){const e=Mm(),[t,n]=(0,o.useState)(null),[r,i]=(0,o.useState)(null),[a,s]=(0,o.useState)(!1),[l,c]=(0,o.useState)(!1),u=(0,o.useCallback)(()=>{xi("open_options")},[]);(0,o.useEffect)(()=>{(async()=>{try{if("tranbox"===window.location.hash.slice(1))return void c(!0);const e=await ki("trans_getrule");e&&!e.error&&(n(e.rule),i(e.setting))}catch(e){Nr("query rule",e)}})()},[]);const d=(0,o.useCallback)(()=>{s(e=>!e)},[]),p=(0,o.useCallback)(()=>{xi("open_separate_window"),window.close()},[]);return l?(0,R.jsx)(Yf,{children:(0,R.jsx)(iT,{})}):(0,R.jsxs)(Yf,{width:360,children:[(0,R.jsx)(Um,{toggleTab:d,openSeparateWindow:p}),(0,R.jsx)(of,{}),(0,R.jsx)(Yf,{sx:{overflowY:"auto",maxHeight:500},children:a?(0,R.jsx)(iT,{}):t?(0,R.jsx)($x,{rule:t,setting:r,setRule:n,setSetting:i,handleOpenSetting:u}):(0,R.jsxs)(xm,{sx:{p:2},direction:"row",justifyContent:"space-between",alignItems:"center",children:[(0,R.jsx)(Pm,{variant:"text",onClick:()=>{window.open("https://chromewebstore.google.com/detail/kiss-translator/bdiifdefkgmcblbcghdlonllpjhhjgof/reviews","_blank")},children:e("comment_support")}),(0,R.jsx)(Pm,{variant:"text",onClick:()=>{window.open("https://github.com/fishjar/kiss-translator#%E8%B5%9E%E8%B5%8F","_blank")},children:e("appreciate_support")}),(0,R.jsx)(Pm,{variant:"text",onClick:u,children:e("setting")})]})})]})}globalThis.__KISS_CONTEXT__="popup";i.createRoot(document.getElementById("root")).render((0,R.jsx)(o.StrictMode,{children:(0,R.jsx)(lf,{context:"popup",children:(0,R.jsx)(Uf,{children:(0,R.jsx)(aT,{})})})}))})()})(); \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/kiss_translator/popup.js.LICENSE.txt b/android/app/src/main/assets/extensions/kiss_translator/popup.js.LICENSE.txt new file mode 100644 index 00000000..361fdb8f --- /dev/null +++ b/android/app/src/main/assets/extensions/kiss_translator/popup.js.LICENSE.txt @@ -0,0 +1,90 @@ +/*! + * Determine if an object is a Buffer + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +/*! ***************************************************************************** + Copyright (c) Microsoft Corporation. All rights reserved. + Licensed under the Apache License, Version 2.0 (the "License"); you may not use + this file except in compliance with the License. You may obtain a copy of the + License at http://www.apache.org/licenses/LICENSE-2.0 + THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED + WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, + MERCHANTABLITY OR NON-INFRINGEMENT. + See the Apache Version 2.0 License for specific language governing permissions + and limitations under the License. + ***************************************************************************** */ + +/*! For license information please see index.js.LICENSE.txt */ + +/** + * @license React + * react-dom.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-is.production.js + * + * Copyright (c) Meta Platforms, Inc. and affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react-jsx-runtime.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * react.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * @license React + * scheduler.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** @license React v16.13.1 + * react-is.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ diff --git a/android/app/src/main/assets/extensions/ublock_origin/1p-filters.html b/android/app/src/main/assets/extensions/ublock_origin/1p-filters.html new file mode 100644 index 00000000..d35124f2 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/1p-filters.html @@ -0,0 +1,70 @@ + + + + + + +uBlock — Your filters + + + + + + + + + + + + + + + + +
+
+

+ + +   + + +

+

+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/3p-filters.html b/android/app/src/main/assets/extensions/ublock_origin/3p-filters.html new file mode 100644 index 00000000..c7db3b7b --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/3p-filters.html @@ -0,0 +1,118 @@ + + + + + + +uBlock — Filter lists + + + + + + + + + + +
+ +
+ + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/LICENSE.txt b/android/app/src/main/assets/extensions/ublock_origin/LICENSE.txt new file mode 100644 index 00000000..5e1c8e21 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/LICENSE.txt @@ -0,0 +1,674 @@ +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. {http://fsf.org/} + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {{project}} Copyright (C) {{year}} {{fullname}} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +{http://www.gnu.org/licenses/}. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +{http://www.gnu.org/philosophy/why-not-lgpl.html}. diff --git a/android/app/src/main/assets/extensions/ublock_origin/META-INF/cose.manifest b/android/app/src/main/assets/extensions/ublock_origin/META-INF/cose.manifest new file mode 100644 index 00000000..15086e6c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/META-INF/cose.manifest @@ -0,0 +1,3252 @@ +Manifest-Version: 1.0 + +Name: dashboard.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: S9on/fO1HQFwztT4UJx4eKOM1l4= +SHA256-Digest: CqYknE/ryI3VdbTTqXDjX3K5NYAvCuyDAYYYe3aP0mY= + +Name: 1p-filters.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: OVLu/HNTAoJ/FEnAnVHDUE1Vcu4= +SHA256-Digest: EdCkNWD0FrEkMBI++dLYWwXNCT0Ks0BixGBWRqCm6+4= + +Name: cloud-ui.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bfxounj3n7lZs9v18CNXk0ZMLhU= +SHA256-Digest: kUj7z6ViBYLjdNRQQxseihEXpikwU2+TucoD6I7GPXE= + +Name: managed_storage.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rPFNu9LLHrRZdTVMhHnjb9m0bhs= +SHA256-Digest: Mejf89/XmYZ9poJUaFo66BdGDb/8VR8rIOdfyEVKIJ0= + +Name: dyna-rules.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: w4bA1aXDeUIlrN0xO2Yvutk2+Q4= +SHA256-Digest: L9n2CJHYTlBPzyISmNT4KYkkeZ3uTJvA4xYwTbW/8hA= + +Name: code-viewer.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ySuz8/CXCZE26z/JRSajnrnDUOk= +SHA256-Digest: MGqvqSfgj+DVtD9s/oipxXnafsYbLP1SgZ76kgtsXX8= + +Name: settings.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aq+fXMfOXfPnai+/08Jd0/CB7Zo= +SHA256-Digest: eQC3G3H76hKWiXie5AjdvBOYzGXQHIm/oC/0bz+KS0k= + +Name: 3p-filters.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pGu75it+2U3NVSVqnR/SuHKLG8Y= +SHA256-Digest: 0/ksEE/1xHhdCumjYExhnYNxtbk4qUgYykgQp0Nx/YY= + +Name: devtools.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4VEH67m/FUVmaSd4+Sm78K6rSuY= +SHA256-Digest: 188oBoiG8K6GvCnKmD+CipyCAN+nA9VYJvGbpsuCfHs= + +Name: advanced-settings.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4FCwf6hntEmhC6IaU+aYND6gaxk= +SHA256-Digest: iEC/oJFnDclBpmOqk3ZWgVzmACyGsKqQGfkDwZU6QkE= + +Name: no-dashboard.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1XuyAgyfbVcocbdexASFqDjLN/g= +SHA256-Digest: SDlt0rkUxoWILP5H16nEGmhMm4VEb7WMFEDwTrY0B70= + +Name: background.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YJPUID8AWQAiPKO1ZW03oQxqIEk= +SHA256-Digest: Zk4wVACmMtPfZO2e+OS20qTGAhk1Lcrdhejpwx29SsE= + +Name: document-blocked.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yLrR8gQW26Ak3LgeYm2VP16m3+s= +SHA256-Digest: XvbU1P8KQfSgq82W86c1qPp3LSIjA9g1Y77VYTrLWEY= + +Name: manifest.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nO5wTu0BH1/9DSYWUem8ljIc3fA= +SHA256-Digest: qTHO+rot6CunoO7D7eeoSaBB0+61pQhUO1NJcF35a18= + +Name: asset-viewer.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 92MgBvbopRd7W9m6VvtYrhfYB9M= +SHA256-Digest: SdDIrDc+9DHDhfm3zZ+ojCkagKfnEpRPCT/5R79vC/w= + +Name: whitelist.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9C6lti2uJlIFu2I3KKpjDVKuIL8= +SHA256-Digest: 671DjozGbq9iAwTuAirC9cxl/IHxaExOivemysyNlNQ= + +Name: LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: MwvjZbUUTxY0JGqSEBQH2a1HrAE= +SHA256-Digest: 5z0zhB+UL6c6paY9SmOZzDmilWTbHbygkVSFhC/LI20= + +Name: support.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qzTFM8tPJjqqV0GJuaAXeplBnWQ= +SHA256-Digest: WdsRME6y/Avib+QUysgRKSiqxLLUDuygPQ+C+0ImCno= + +Name: logger-ui.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6EEqnv1trCV4O/Oo8P6IAVJvYT8= +SHA256-Digest: OLXrL3wieyNuA+/9L22PafgNS3fhMYuyC/KQv+NXCpY= + +Name: popup-fenix.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8SnWCVFtM3SkTFKcA4z4AZu72hI= +SHA256-Digest: V/aY9fNS8HqkRCyruMiAsX7bMyWRrZo6VYgEcOhL4U4= + +Name: blank.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: LslgqfZWxhkqvZea4vivGhwsTSU= +SHA256-Digest: GZlr1HWFZfEHCids0ym2IWa48oai7zR/V6mV+Cm+fHo= + +Name: about.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Kq/DT9E8pC9uNQV1biztbYR41AM= +SHA256-Digest: tEcOFZMjoyk23YNcD59kcsPaav8HvSOViZIVRhCbLP8= + +Name: web_accessible_resources/chartbeat.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ts8uZRVwmkgaPuEETaeso5HVcqY= +SHA256-Digest: XmrdFNo2shPAk+d/rmIvJiTMPsHtd+8Kfak0pppiKI0= + +Name: web_accessible_resources/amazon_ads.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2/i3CFYhCBxzHcPMAXSHNAp4P8M= +SHA256-Digest: QZAYBfV12dBmCGgpmc9YixLDGPrOLtBOhWbsjL7ExhA= + +Name: web_accessible_resources/noop.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D06dzjg4yibcLL54gBq8ellbLBw= +SHA256-Digest: zMxeipp61gigTyQlMDRWlL1xUL1zMVUTKEFCtqObpLc= + +Name: web_accessible_resources/1x1.gif +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uAsRID2X/gHFWXyjvnBAbqSPVwk= +SHA256-Digest: r+Dc/KKSoProvOCKSMFNPlnJ2CxgUqttSKIuzGxI8nc= + +Name: web_accessible_resources/noop.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vyGp6PvFo4RvsFtPoIWeCReyIC8= +SHA256-Digest: RBNvo1WzZ4oRRq0W9+hknpT7T8If536DEMBg9hyq/4o= + +Name: web_accessible_resources/noop-0.1s.mp3 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uGlv87ue8dUqhL60/gTQPQD1GgY= +SHA256-Digest: /ITGlnMYuK3mgb+CypPmPs1i4qhDDhptLhI5DoAX6qg= + +Name: web_accessible_resources/2x2.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pk9pPskSspm+lW0z5nB6v1eFJBg= +SHA256-Digest: rfoMfeA7w76j3oC0pFFIgci2KWVo9DpazVzXoW//0ck= + +Name: web_accessible_resources/nitropay_ads.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vlGL13UNyNiZLxUwu7u9pMfh/y4= +SHA256-Digest: GAliz98eLyyLfCsZTrYkkTDrmnrOSljpvVm79ZxiYzo= + +Name: web_accessible_resources/dom-inspector.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zWoK+r9+2T1d8D2XtVKZRF11q8k= +SHA256-Digest: ExH8eoPpwZdEYFM60kcdyOdTOBpyLTk/3QZ/lYR83OA= + +Name: web_accessible_resources/noeval-silent.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: +ZUt1DZ79sD0zm+68guC415KPTI= +SHA256-Digest: vLcQ7X5kKVzI/pi4YRl44IAf/c5lEH0cucMYM5pWRNY= + +Name: web_accessible_resources/sensors-analytics.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UktG39Ad+jQQBX6ukWy/iHaXrPw= +SHA256-Digest: l2tgzamHtkUF2PqjYaNxcg27Wnja/7KAzC8Y1+WkAng= + +Name: web_accessible_resources/doubleclick_instream_ad_status.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5L6bcTZpeUKgNvl88m669wOtIGc= +SHA256-Digest: 7tDcH9tdl+0YiuFv1eECSlu3RK9HNANGviFGMApsVLk= + +Name: web_accessible_resources/noeval.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qPnONejIH00fV2xIlNKjmJWGi0k= +SHA256-Digest: PN1vdBKvQxc3SGBTNDSVllLbnmFjO9yuR1WtkDlzK8Y= + +Name: web_accessible_resources/nobab.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SNARISjtnc1sDV9IQdedG6EBNW8= +SHA256-Digest: G8R7DptkLPzySWl33za6vbJj8T0M/WSyhutcTITMMZw= + +Name: web_accessible_resources/nofab.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Mm8KZQmicvrCjzE7wBxhTumG3Rg= +SHA256-Digest: 3XaEFF/+kBgAdapNmKekV8vca3MpW+oXxVvyMDMs8FY= + +Name: web_accessible_resources/scorecardresearch_beacon.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1xoqCr7efuClB+uG336ZQ5zlITA= +SHA256-Digest: wXc2CzcjuSShaPxy7XKPkk/nLkDPwMHT+1I3hJxZCUY= + +Name: web_accessible_resources/adthrive_abd.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8NqSdNkn7FW+sKA2r4Cl3BWhn1M= +SHA256-Digest: Gme+p25V3BcFf66B9H6keM014MYKoQG1fnbHN2mTHjU= + +Name: web_accessible_resources/popads.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rboFRFTrhctX3WGHPI4gTS+H/CE= +SHA256-Digest: hXAOSI94Ld4urGZNgSc5n3ZQgyZ4GI7L3hQ+VIKgv1g= + +Name: web_accessible_resources/noop-vast4.xml +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: n4B6Y38QCv7UpiwVGVnmkd7Nv54= +SHA256-Digest: 0GxzO6Qrgc1mx/yqvHW1HFkpLNvM3PtqiL8rV9JiBHs= + +Name: web_accessible_resources/noop.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: emdqbGhVNMGNPBxk2OU7mciaAfo= +SHA256-Digest: VZK/ol3nXBjvARbLuZkMEiF4se/l4HbxxFBJoJ2TWiU= + +Name: web_accessible_resources/noop-1s.mp4 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: lQD3nR1je3KAearD7eF1Sc2nEOA= +SHA256-Digest: on7boONLJkipCoAK6U/e8+OQFtG5vW5Uox7eHxzd/tA= + +Name: web_accessible_resources/amazon_apstag.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AhcsMBIG+Ibg/nHjxxCyLjzXlpI= +SHA256-Digest: zz9cQckBNP9+5mpHGHWx4HY4TXiao4J5kOqZ8A7kAjE= + +Name: web_accessible_resources/outbrain-widget.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: oVoJhTMXjBObrSTZFt3z7JwCogw= +SHA256-Digest: in8xNXmLSBjaUPfo13VkFE8QVOaDmeQmr38UVEb1t7Y= + +Name: web_accessible_resources/hd-main.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: RtbNqtPFxIXgLZJDKK3X7eycEAQ= +SHA256-Digest: SaJc/Lwvr+2j2QUeOA88pQ7vSxlQh0lNp7dN0EanZ9I= + +Name: web_accessible_resources/google-analytics_analytics.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0bhsb6Kw0+M3flHZTe7bUOaiRwI= +SHA256-Digest: a0YhhoysWJpgP+EmOq0kL2cmLvlxvayszBpRXNBIhGY= + +Name: web_accessible_resources/fingerprint3.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: crgzDtwnJRNiOdTWdKCH62afP1s= +SHA256-Digest: b9VwPyvdhZMvGK3JnzDYc20r9fCbHd5sEp9GFiWfyCc= + +Name: web_accessible_resources/32x32.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Tqqy5u1dRPQgTAQFpl9H4qfwdlI= +SHA256-Digest: NuEMH3DLyZL5ig51lQ4p896bf9Ib7NQaP8ujdRyUI7k= + +Name: web_accessible_resources/noop.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1ac9n0CoS3gI4x0XsQyJRlHAbnk= +SHA256-Digest: zuDwJyuuhhi7NrlurkQFetetgyWvwAluJHdxOxRuGtw= + +Name: web_accessible_resources/googletagmanager_gtm.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: OksS6a9FZjUzKB9NyXvvrp1hgmU= +SHA256-Digest: tgkS+Hbt0qKkVE362N3W5A0GxOcM9yQrXeuG8ImPryA= + +Name: web_accessible_resources/nobab2.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CtrfCqzXksAwJYE6TF8IiHda3Kg= +SHA256-Digest: PuR/mRFgiKlOHCgNPNYhanVROpEJo4du15Jol+x8/JY= + +Name: web_accessible_resources/README.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: F6ioQvxoHqlocFhweMwwEGCX1jI= +SHA256-Digest: 6cIvyY1GgtdBKxItuPSNDATXl9YBDFLC6vqSrhg8BUI= + +Name: web_accessible_resources/ampproject_v0.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ChcNG1VZrWk8jVAahYRgbM+tE0w= +SHA256-Digest: PvscvPT9KjNhl0epI9GbSG+5MJK53ZURQIThdbAm2qA= + +Name: web_accessible_resources/popads-dummy.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WA1FbtSNdcdieuQBNqB4divbJOk= +SHA256-Digest: fZ6kj8Lb8caAQG1TNapWf4SWfpGxDoI7fiRizlMfooE= + +Name: web_accessible_resources/click2load.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SogoPJgZSgoZ9Bdm4qY9IhwM95o= +SHA256-Digest: gUvsGGIMMwyZPJcNP8IYl20LemZmTYByZXzWNgfwMGI= + +Name: web_accessible_resources/3x2.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: cpBpE6KAgOhr5bET4K0PJ08NVeA= +SHA256-Digest: w/25lPJlykE3TVrur+/g4P55t0UIx/CdJvZ2eXExfu0= + +Name: web_accessible_resources/googletagservices_gpt.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D/VgqWTOlzRfwLK/hOShi46gR0w= +SHA256-Digest: eZL+NoaQkNQ87rmo0YZ6bmDbe3DWnpXmBIo0oA/TO8s= + +Name: web_accessible_resources/google-analytics_inpage_linkid.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: r6UFkaSA1jYgeWY0LTU0eybVo40= +SHA256-Digest: gWuDZnaZgfY+vaSu13ltUe2vgfIZlRoawfFiIOnyb6w= + +Name: web_accessible_resources/noop-0.5s.mp3 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Y0PrKlLsrxIDBNs4TOftF5ysoO8= +SHA256-Digest: dNzq6wEGkL97aPINidOJHJidjQvZzTiKhwliafvgkV4= + +Name: web_accessible_resources/epicker-ui.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PIpYHr8X4j9YGfEdTB1v9cGy4RI= +SHA256-Digest: n0eOQttdXIHurCn9oeUxWWu1vRrkN6Tz6fJGoupYMU0= + +Name: web_accessible_resources/google-ima.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2YEySE3Q+8ZXoEfYzBqZi2+yxIs= +SHA256-Digest: S/jjmKRsmCzXLsFyPgP1h4RiTaL0HK7u+3jh+tHUdTU= + +Name: web_accessible_resources/noop-vmap1.xml +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FEyQvTEMa7Ezyh5Fixxu4loxuYM= +SHA256-Digest: /MQPNthsj3FG1LLwwSc8xGKCwsI2MD2rwXLfrP34ZQg= + +Name: web_accessible_resources/prebid-ads.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ovaW0FTksPUeUTx8net3U39jsoc= +SHA256-Digest: TvQ0jjL//fpzmxYPd9C5b8TIYcCJz66EWCdeMENhebM= + +Name: web_accessible_resources/google-analytics_ga.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: lgkxO7lWnWfhM9ZdZ0cxLK4PFn4= +SHA256-Digest: 8FRnZ2dax+/3JFISNr6DHodTp7jBWqHHktgSHLUxEJQ= + +Name: web_accessible_resources/googlesyndication_adsbygoogle.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9CZncEuZriVNYUX2XWHcpRVm7R8= +SHA256-Digest: iUhbR4Vs/eYUuuaWccLKI64IRvBadcHrmYH0Xk4qnDo= + +Name: web_accessible_resources/fingerprint2.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 52UB0JpPF8QvgArnRcAMMfDnw/o= +SHA256-Digest: dVLDQjYZ6yOdYEKpH4Qwy+TymLTenCY5VKu82gfslyU= + +Name: web_accessible_resources/empty +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2jmj7l5rSw0yVb/vlWAYkK/YBwk= +SHA256-Digest: 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + +Name: web_accessible_resources/noop.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rcg7GeeTSRscbqD9i0bNnzLlkvw= +SHA256-Digest: AbpHGcgLb+kRsJGnwFEktk7uzpZOCcBY74+YBdrKVGs= + +Name: web_accessible_resources/google-analytics_cx_api.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: EnyHik/Dpfo+9wLJ6sI0uwjZEdk= +SHA256-Digest: sb24wwxnRL48aLul3knfei8E09iylfCiarGt5a9zgTk= + +Name: web_accessible_resources/noop-vast3.xml +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zcjtsKZ15qRPwpTbRadIfwF6DSU= +SHA256-Digest: cakEunJq44qKoIQluugk6YUEUrXEGhgr3FJqE5ujqbw= + +Name: web_accessible_resources/noop-vast2.xml +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: k6NiOpIhepZFqiTcOw1qVfxhx88= +SHA256-Digest: qPsYGnl7Tki7XSOatQMPM+1l6/M544pRMc6WYzEibO8= + +Name: js/arglist-parser.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: B0xF+Rfh0F3huA2ckgkPeWlSVJs= +SHA256-Digest: V9vfiXBfWdebsgGJyLHHhOpBBTI9C80H7sdOgYzIwQY= + +Name: js/dashboard.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QsriHMz7/bGOIWnu5h7aMFKGfAY= +SHA256-Digest: tAKCNnpCmY+t4Ifostj2pGgITeffmGauERQMU2FRNzU= + +Name: js/vapi-background.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: A1yllNiw7fAYRoUF97qp7wpyKEE= +SHA256-Digest: OyQ4GqLHd03HAandgwTXW1vIFhtd4vyTM21ysBiSgDM= + +Name: js/epicker-ui.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vRzMqzqzfH+izavArtV14/4lE3Y= +SHA256-Digest: jVWpXASdsEKOkSIZQASmTjR9dpTXwg6ahLzLoah2ddY= + +Name: js/cachestorage.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9FtBUwsnjh/DEa3UD2Qn7JVVlJk= +SHA256-Digest: L+euj3PFu1W4l+eNp99YQ97AgGsOiYW+rgX9Cp8QmH8= + +Name: js/broadcast.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iDgF6vuY1699zi+j7xTKUNY4i8o= +SHA256-Digest: g7z7lnn/i+WOE4kbHRcuTHXan76bZDgEOX8kUfCg+E8= + +Name: js/assets.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AMYCRssEQZ7APjwLA59aqAla4sU= +SHA256-Digest: 3KRRz6WGwrd4SvoURG16DN0bFki+CPO/9rkFG5Utb/s= + +Name: js/vapi-background-ext.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Nx2UzypQwqGQUgW3z2mbngfI4pc= +SHA256-Digest: V5gtyPKxUn1OhRaKv1GNVf1sZCJ3iufmGXkrIT0MINQ= + +Name: js/static-dnr-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5VYkkkkrpq5JjxrcEhRuFD5ykyA= +SHA256-Digest: ENArJAxR6TzxAZ6keJTFas9BjR+kqM8UcHnPakBpQ2Y= + +Name: js/static-filtering-io.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uqfHbzilcyRig7zXJ09dnYs6YRs= +SHA256-Digest: vLWtPheJo7QfZaCGKuHEz+HgHSJ8EH24+3XxRmdms/M= + +Name: js/vapi-common.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fj2ydkK/u3JXCFbG5eo4dakaO7E= +SHA256-Digest: Qp+O10wUnHmrSTujo7LGVJsdR5Ta4wyzDPQhmQOb59Y= + +Name: js/dashboard-common.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ANArtHB1Y0BUf2F6A2MQIRKajKg= +SHA256-Digest: G7ftQ8YjcvDIEEFsBs6erehV9v004RiMv+MEJ3qpjaw= + +Name: js/dynamic-net-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: l+n+Ybl84jo6fFWwtbAZDbYG7BI= +SHA256-Digest: o42DuGxW6F8vo5WAPtdbOm/R3NIysUQnrC6ClCcacuA= + +Name: js/background.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gtafP3l59TUN2otuYiQ/nsd5+34= +SHA256-Digest: RkcPo+xdOxonZ7Fo1CHjxbQiZkpGKmrFT5lC936zeTY= + +Name: js/logger-ui-inspector.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: C7hGia3iDLylZzIzBMi1qArVnGc= +SHA256-Digest: cDYMKOQ1nTjEPhj/JWxKm3XnMAJtbf9U1kWHSAbM8k8= + +Name: js/cosmetic-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1o3UA06R2iXJNPmNYmqM/sa0bTQ= +SHA256-Digest: 8ZoK4uhhBrlKuRqttHbPY7F6yCxkV15fK+o1JzTxDTw= + +Name: js/base64-custom.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: y25Z42sr6BeE1y3c0ivHYWr9ZSc= +SHA256-Digest: ktV/yPMkkvwdgkp9mw9f3Cy8QA+Z/ynxiI0ErzQM0pk= + +Name: js/filtering-engines.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7rdMaCsyknlM3PYck0zT46wuoE4= +SHA256-Digest: vJcuy2U5ZGvnNR73aCaaA0kLZBWaMlolQul6JS5kyWQ= + +Name: js/contentscript-extra.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CI2uecXgH3m7iOF02WDVvDY0h1A= +SHA256-Digest: 3446/Mbu1CrOZHrYPJ0kq/3DkcWf3ArZ3Ga7oLOswd8= + +Name: js/storage.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /QJOXEJB4CSJvWY5KmHWc0UM7nw= +SHA256-Digest: /xwSIS950I1DHD+UupVU0OGnsF+gD7JpeojIUzCRuYE= + +Name: js/utils.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BdGvpUTJInwyKLj6uQji2GpWzSM= +SHA256-Digest: urJg5ep27XG8LfFd2n7l59CSDErpTZDWRfoC7RdEt8Y= + +Name: js/scriptlet-filtering-core.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: TmstYZAfRbGuTeEdd/RUl432ixg= +SHA256-Digest: YdYPoRRvtnlpHnjGxB4ibsFwuELQ/ZSGR5OiB9Tv3Js= + +Name: js/start.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YGO1mzZAdFdr6pYAZJYYw46MLtc= +SHA256-Digest: UBHzrJqKJpE2/qCGmHMD/PO5EEh2hbNRFtGuwmFDZmc= + +Name: js/static-ext-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zkk/EFOL90nlnIyu/wi+paDPDGI= +SHA256-Digest: HjD401yRq0uSrqR7w0AEp1ntoCaofomnN+1gaKcF4A4= + +Name: js/static-net-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: m3/41Ea83VsxJaG7Qad6HtMs6Tw= +SHA256-Digest: bmq2Upj3nWjwPp3kbVzVQAfLHCpDdsC16OdeP6wLCvs= + +Name: js/benchmarks.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: IpMGZyhRtdWXvosmeBJXo2Q3qiY= +SHA256-Digest: OsVddIfYeW9/t2n/R4wjiHTLMPEFQ2br6HaH13RxfNs= + +Name: js/url-net-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pJ6KFzsrfB4aB0i2MUkDosY2Ors= +SHA256-Digest: UgZAjfyNQmkMGWheFo4jF9HUDUh3YbjQ45hG3R3hvgY= + +Name: js/console.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: GETPT/QAIy4rPnIXY+8lfbgXTnM= +SHA256-Digest: 2oezsNHi0rRT3YrFk+dnIgvfmUcDIxRjzXcqHp391xk= + +Name: js/popup-fenix.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: V9FztsB3dSfYufYCe+D7AZS1uKU= +SHA256-Digest: JwNnpjIYFCmEoMrUyyH3iAkcPxA15RuKgOZ+5gOys9c= + +Name: js/contextmenu.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JhPKsI8+YPTfop69zgMpBcTIht0= +SHA256-Digest: CS2EHHjS7lUJEhpGNkdpBWBUU6I93osEP58WcIcmJbw= + +Name: js/dyna-rules.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bX5otZDvbcf03pLHadawCfrpUhM= +SHA256-Digest: uw2bflk2K18aW/BObNvIvqbmN06wkFZ6/VHrbBUMRW4= + +Name: js/httpheader-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wrrFh/deuU8ssnF7QAlXsmRpSEo= +SHA256-Digest: Q+HSCJZiR4dUla0SmHMHbSTU1dbFjjaC6dIZQhlv2TU= + +Name: js/hntrie.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mkcZJk82pUfcNKMrrkfk5RG7ZHg= +SHA256-Digest: 71BKqOxGRAhBOREvIzMKggvIxqicUIAXwViqV/enGmA= + +Name: js/scriptlet-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hbCTnCAuin963dT9dsmPjkWlDrE= +SHA256-Digest: Tg4cuAqzjKmGB8imOlTRip7LLTaSvhMAyACJQ90RDYY= + +Name: js/asset-viewer.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QuEDIN2HZHT4NK/rW/5cQ7mDDog= +SHA256-Digest: kogNu4hml0sHO2DDQxm1aA7dLKK2fX+YC07qPCLjCWk= + +Name: js/static-filtering-parser.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: b7X7FKERiorA0F7SlVH+CzfyiI8= +SHA256-Digest: C2LiIgPOx/KeokJdE0bXg9eDUs7RlOD9Vu4qtsOHj3E= + +Name: js/vapi.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: T6fzrdCQU74+tBk903nMA9htPS0= +SHA256-Digest: MeZkRW6NU6qJpJgw9I1Er8Ekuoy4EyP+Og6Hbwuk3g8= + +Name: js/tab.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: EsQjolyFd7eHtenQXmUoqz2gSc4= +SHA256-Digest: vzZnCejp66EukCjvswWTyTANuDZl1dV5sLmhVARCNKg= + +Name: js/static-ext-filtering-db.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 04MBl+ZcSYVMjZXk4hYUgCxIaoQ= +SHA256-Digest: XLPGcupKBH5btGKCTWGTfKt2uiHxfhVaOgLw3x+IbLQ= + +Name: js/traffic.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: +3jbfWFQuVEqN0DI1WWnDnSFCbU= +SHA256-Digest: oBTLHrTQMyotKx8HNJbwlMebA+C/PSnfanIUo1DIaWk= + +Name: js/dom.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: X+gJUOcnGY03rdEWP2P2eJz5daQ= +SHA256-Digest: WBkciH+w5mdSg8U1aP+VBVnbgKgXTSq7U1wkgdIr7Zo= + +Name: js/messaging.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WvbLAUTiWljL7PbceF2zxQ601wk= +SHA256-Digest: 1HSGxatlXPLOW/ve52OtB96qzpme39MwSFE99TGFpiw= + +Name: js/cloud-ui.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uZzy1ZEpx36jipVSV3Ot2+6zdIM= +SHA256-Digest: mVWB6A/DYUPzYvdIUErkPrc2p61mKo05RMr3eMJRCac= + +Name: js/redirect-resources.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: MaDy0JcnqEcoP1RJjvc4Bg95J6M= +SHA256-Digest: iyeTEk83dtPKmia//cubiTtqYot/GQmTAb/pqDhUKQA= + +Name: js/html-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pMhiSDHqmPnmWKPYXbYjKro7lJs= +SHA256-Digest: IgpoqKEAb4xzSZt9TCgBqkVHnNW87iD72y6fykmOxUE= + +Name: js/support.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: cPKgCV3ZfvIMRfDTFi0gDt8uv8w= +SHA256-Digest: xqvDXblFzpD+PxmzHr1SC/sdEKJbmPZewy8e1MZOpGc= + +Name: js/theme.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pmEX21/Xf/K/5tvZ5kC2zOWWm00= +SHA256-Digest: uUR31rmN3354OUxt5p0wY7lRQmQp/TTKUbz/kXOQlmc= + +Name: js/uri-utils.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0TsArnMe6G+ijql0BEncyYWfNHk= +SHA256-Digest: W9dwo8WcurqbdM2GRcmHZ4fHDM5qluq8FXmHJ70nhKU= + +Name: js/text-utils.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D9nuAkEfYge5E2rFTTMAr1CTeGU= +SHA256-Digest: f4P6bwULvAXEP64Y5sujIsnOrFovLPNkl+oMGvYa+Y0= + +Name: js/reverselookup.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mr3K8n3j1IRhoqXUARA+7LnpVdc= +SHA256-Digest: iNo6W6tE30t3+CPM1WpJmL20X86d4+eYgUp+ejXqCAI= + +Name: js/jsonpath.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: oSEBhadok4Jw9hTzTYV0wtB2z4w= +SHA256-Digest: NrgwaMf3/Xu6CQqFUubEjyWo3Nx4oWGWiuTUL+Ii1oY= + +Name: js/filtering-context.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pRhx1hM0+UQMhIRKmB0iuSgRT0U= +SHA256-Digest: jW2O7EATpjd1SQeoy/op26PJIe9IQRi2kl9t4fQwjZE= + +Name: js/biditrie.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QNq6XKOYA0GSlkZ1/yu9clXboJk= +SHA256-Digest: zA5FSkVGKmnrMNYbWpTAtjBPzBJ5IimvQwV9J8maWVM= + +Name: js/document-blocked.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Hwx58F+w0ljxTq+3/O7jOqOTuwA= +SHA256-Digest: iRMDnnIgoOIe8t1J/+xagDKwx2ZKxzxcNuHZCgI2+AY= + +Name: js/fa-icons.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: lrF61+x4RBXVd4Ed4KazZGtl5Lw= +SHA256-Digest: VlEBA+w4vbjJE9iVE+G/dm3VH1z1iiDl31prDSgAutw= + +Name: js/1p-filters.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: TTQihjK2FsTTbveafoq1kz7bOAU= +SHA256-Digest: LTpyLWVB5o4v8P4TvBdICG3RVLaI0QHJiAKXg1Y9JPQ= + +Name: js/settings.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HcFgFEl27GyMePp6tc8AqcyO35c= +SHA256-Digest: +PCB08948JLDqLv6ENKwYUDMlap36IG6A9mDRwrZeGg= + +Name: js/logger-ui.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5djHOIoWN7MfEu8/krV1QSuL4Lg= +SHA256-Digest: E2c9A66EWq7HYQpcNWy1wIVKcsZErAVB1F3vBd/B3Qw= + +Name: js/mrucache.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bApMyx3ChCyw71LnT2Cd0LJ4YUs= +SHA256-Digest: Yi4cl4S9BlHTAyKIx3RWa+ZPYjv04QBMsz129J6GaqU= + +Name: js/reverselookup-worker.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: m/Fq3PYdeTYMrPM+Bp6sR67vIu0= +SHA256-Digest: 8YO/m2VN6c4JYE9zQVIeYVVmgag8rtLjQVEUFx4XrpA= + +Name: js/urlskip.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HgD34iy1HBGOe0TNWXFxgG32hT0= +SHA256-Digest: HXHdr+4wtwE35gPjLHm1rmWvZee3H0thrmUwHXYhbW0= + +Name: js/webext.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0ESfyJhK+0VVaA4OQuZ0XRpkI1g= +SHA256-Digest: l0xf/7xy5Zrtvzj+5KlegEV5qEOnVwzAbaTnsOt/vNo= + +Name: js/lz4.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /MmBqE/9CZnQ2NLUf2QjtIHEVrQ= +SHA256-Digest: KwDBJYVAIX3lGVCqSsc9CZUuvfXog6T95eZ+eDT5yw8= + +Name: js/ublock.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7JZn5MjqdrNEtTSh/mOoHBOrTmA= +SHA256-Digest: 6dw2csqcnH0uBG7jyNLUDEf+VvJjyiGBkQ8RR3mKvzc= + +Name: js/code-viewer.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: E15nRR8X4Bf7Lz3vY6PyHLAwRkg= +SHA256-Digest: zoIgM/T1ef3zaU+q3O8Ia4IEy5NOScC4dzIK3EnPjFc= + +Name: js/tasks.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FJutCPl9gfU0A8Kg8UA1jYbB4BI= +SHA256-Digest: 3+q3Z/2eKPu8DgBFaz095MUCtJP3P6vlguuuz5fhGIY= + +Name: js/advanced-settings.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VUk7vbDsph/ZHj2DxMd0x695v3w= +SHA256-Digest: pkTwlczZ+Z1/cWuC9PsSJtLz6PwjxSUuGdZBQ+JhWgc= + +Name: js/pagestore.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pLpVulMD/JGzxKfblgRvDPMy1No= +SHA256-Digest: mgOEovBBlsjQoURSbtyPFf5lliw2I2n1bwUSLum8K/Y= + +Name: js/text-encode.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: adL5LJy8znbRVaww7dRySBf7zxg= +SHA256-Digest: mqmBbDFtZ1Naon2QyMYxI9P6mxPWu/6gqpz8XvyhN+k= + +Name: js/devtools.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Xt6ujYpNGsYfLCnqVIyvujLR3PY= +SHA256-Digest: 3evQ/qADxl2smz4R7dhtjii1oKURrOWYgjtmLAOZ1nY= + +Name: js/whitelist.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: k2skdA9dMrb/MXmsBR3YV8iOCZY= +SHA256-Digest: E+FCW4t+TPvBuIXrMC9QIM7hfySxGj8uZAfHESph604= + +Name: js/3p-filters.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tiksHPheRmK/Zp5ChG7XaUusGpk= +SHA256-Digest: KUo1ViOD5AIZIq3kwgkTKam5QYa2G6YpfEA96BobIL4= + +Name: js/redirect-engine.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Br3Gjqe4dClsJNgE2W1/luDD3mc= +SHA256-Digest: Vdj75qSolTNkZh0R/taZDTiuuF6Nga+eFsBaPnoD0gc= + +Name: js/diff-updater.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yOWfMeqUb6EwJF+0waovHB+BMDc= +SHA256-Digest: fSkTQcK7kXhYFYwQxpqwAnWWMHIODAKb1KlitUBKlb8= + +Name: js/logger.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /FJLDvPg4KexPrR5R9IwRHfreiE= +SHA256-Digest: 4nsGLTT4QDde+wVZ1bOSp2dHQmpCAcqOSTI+yMLuX0A= + +Name: js/click2load.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /51M6QJp37pAEYQq2SuIbDJ197w= +SHA256-Digest: VsbMj2TLo5ky2djDuUUGBZFhamKL7yTmuaIWlEJv4Us= + +Name: js/i18n.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8Vg9ShJ7lTZKSqsdeRKKUh2DFpI= +SHA256-Digest: J8O9/OZ89XqYUmllj6e/8UeYQLba9Ln+rrQvyG2eCqg= + +Name: js/regex-analyzer.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VVhRf2iTUhqDXNCQqgYht3J9urY= +SHA256-Digest: 0LbiQXJIWYxf2NzkS5iOThfrZVQkEr2MQZCTJR7n8Vk= + +Name: js/contentscript.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ucabMnvVOjnugEWE2sLwovnWuOY= +SHA256-Digest: mkQF/C+ip8fBVk9gkntAPbmuxYU5APOEN4mWwQ/Nb3Y= + +Name: js/commands.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xKvBVeKzy3sHuC1FGtKdxcG9CMc= +SHA256-Digest: dJLAAiP355ytPEoh5KnzY9njBdMzstUzaYOO5fNib+c= + +Name: js/about.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: V0fKw+zhn5pqEAw7iqPt6PRCo3k= +SHA256-Digest: lfgiforXgYHJCIi8mAjVtNABKHP3HaHex6JrOkAzcTE= + +Name: js/hnswitches.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: p8eUAkU7KBAOJChpIiOHM11U3ik= +SHA256-Digest: +1n8oIqAP0yLJIdyf+V13czOQo4dz/jDBGqXTn6Ka3g= + +Name: js/dom-inspector.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yJctMTNcNfh1TFFwB6WOu0eH0fk= +SHA256-Digest: +OW9rH/0ui3wrVPn/E03apA39r6Kt611otn09SgJ4QY= + +Name: js/s14e-serializer.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: J3dIgUhPuICtL51pebtEr+XfUwM= +SHA256-Digest: p2AsIXMvgowWAbR+xIS3a87Ls7exRZunyk9Cn4owN70= + +Name: js/vapi-client.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XKAO0a0qn+HN7aTZx+18JvH5CGo= +SHA256-Digest: gZNgGPtCL04+vME57QLj5yvVpHCZznHCHvNuq/6U+LQ= + +Name: js/scriptlets/load-large-media-all.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Ac4NJ4vZ2weRnRIg9Eq9gebPS30= +SHA256-Digest: t6aTFAQHs/iDsrDXVyJsMSmMWzGeq66M2ORFBRItXoc= + +Name: js/scriptlets/cosmetic-logger.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UqXc1kW5b7qZxgFSc8tiOnwm+Rc= +SHA256-Digest: pMIcJYEfHLXlg3Fss703ciCOftsiHxl7OXZvKRBv0F0= + +Name: js/scriptlets/load-3p-css.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: B1EiL7yGZpmR2+CUWoBvPrLIrvs= +SHA256-Digest: lHM43Wg8gHiITl+nnw1qDY7qQBfzS0btcawtoYiY2ek= + +Name: js/scriptlets/cosmetic-on.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nmYgMX65iGxqrJ8ot7b0WBLu2As= +SHA256-Digest: 8hIq/H+E8YpwpQiTv30P9J+SUP73w5+2RuRdHGa+eNI= + +Name: js/scriptlets/should-inject-contentscript.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: LUxduqcR40KUlLnaRgtCp7f4lZc= +SHA256-Digest: ImlesPA6/FJRDu94WjCucUEguEkrf0Ec02BMBdIe980= + +Name: js/scriptlets/dom-survey-elements.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KN4qg0Ccd22PfMObEKRMIBERweE= +SHA256-Digest: OVRtTNRAQYWch6fePBcoqh55YEvDXvoh2OaQ5rTHEJM= + +Name: js/scriptlets/dom-survey-scripts.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yLYmJNCxsP2TwkxVzPMt6B6jERQ= +SHA256-Digest: LwMubxv19iAhgCTM8b5NxgkTs6mMG6umE8kpbt5BTZI= + +Name: js/scriptlets/cosmetic-report.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZNpzKAsUluUAgVu97Q7TfesrEVI= +SHA256-Digest: TLf0fDHae6MdBd+1GJwm6GYoF54OraBoadH6E3h6DYE= + +Name: js/scriptlets/scriptlet-loglevel-1.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q9MIUq+WcSlfRNkAev7oisudnX8= +SHA256-Digest: S7xm3PTwsK2rXaft+xUIMI4eW7G8Cpmxuje90Bgq9Rk= + +Name: js/scriptlets/updater.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AVG73CWHmboymKn6fXuJPd26pBM= +SHA256-Digest: fK9nMn/2bbG539kNjdXjsTyrQkwa7rrFFdzbDMrznag= + +Name: js/scriptlets/epicker.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eZ+dFn/wAJ74CjUDeHaZRvXMeQo= +SHA256-Digest: UM3nBg8i/Gc4n8h+FZ0S/O8JxEBTpwf1x02aXqECjk0= + +Name: js/scriptlets/noscript-spoof.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ml435AD0IKT/x07Q3o+/4cuBtHQ= +SHA256-Digest: yANCj/kXaAW/dQq0TBpxvCMNzf6yKoRHMKdu1V+OESA= + +Name: js/scriptlets/scriptlet-loglevel-2.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Spf/4BxICONHP26NPWS1YvvEwU0= +SHA256-Digest: GAzrtLGIYf5sUJO33MiIrXDXMFkO3T9aUHC7nsBfQL4= + +Name: js/scriptlets/cosmetic-off.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7/zcpEgmh7+dKeKuLatCUZ/aPnE= +SHA256-Digest: xD1xqLjDi1WtfQGXZ9mkDOBkTBqU+Hv2heAFsvWqL6A= + +Name: js/scriptlets/subscriber.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: J6CT4ThV3TGpxo82m3E8UHtGfC8= +SHA256-Digest: JlKHDQ6rQRkZ/PuxjnywsZzskIyYZZxDkKq/hqhCEvE= + +Name: js/scriptlets/load-large-media-interactive.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aWB3WqHyP/zCD2bqVnAdWOy9Kdo= +SHA256-Digest: j95xaCm9+GogtYEU6C476XUuKTzxzBkeWwY95bDHgCE= + +Name: js/scriptlets/dom-inspector.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vK13D3PcmSm5ZGX7UYbFM6JJAqs= +SHA256-Digest: o8wHnKCBQv824BstjhUGm5myb+YA7ydr7DgpHqdvbIg= + +Name: js/codemirror/search.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: J2NLu2zSvyeppffMd2c6rsS0Iic= +SHA256-Digest: T81P+1ZEK5UOQi2H9cpl/gRix7XLvfhM4qgUC7HrbmA= + +Name: js/codemirror/ubo-dynamic-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8D7ghWkAUXzAUTJI6yUHEXBJBhg= +SHA256-Digest: sKkh8U9Q+5wLdZXbySa123QvKvITmXMZE4qn5BxYUxc= + +Name: js/codemirror/ubo-static-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wdUO5VN3+g9ZwtsQPm29WN1rTh8= +SHA256-Digest: axRBFZ4bOYG8lcA3LfUqJ53OXoKVrL5yZRzNh82B7NQ= + +Name: js/codemirror/search-thread.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WjxPQBL0ru83xV/gqqrjrrEyB3k= +SHA256-Digest: 50TlFwt7B03QJikEd3l0aYgZhwjzzEPZ4jpedoX42CM= + +Name: js/resources/object-prune.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ircRZ4VaHwKjAjEg5WbmqbeUiPE= +SHA256-Digest: XYU+eC7Rt4jafg3DcgL5L0BPhMq84g3TQJr9RmIzMxk= + +Name: js/resources/attribute.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uk4D5vmdYBdUZauHym1vmSR/FO4= +SHA256-Digest: XbKyN5nAQXbGLz1n+z1mikqEJtrYvWkuc8Jin7ulMsc= + +Name: js/resources/prevent-innerHTML.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tSxSC8S0/3k6xQf0H3Bx0tt33WI= +SHA256-Digest: GHGTBse+uHtfCdWyQc8uyJNjjj+5apPSIYy94he77i0= + +Name: js/resources/href-sanitizer.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YqZHDf+Y0TAQ1UeNBLlLV0r+4ro= +SHA256-Digest: sX32gGLY2HJAyXB2PBDokSJJYXWbYXjLfFjhreLte/w= + +Name: js/resources/stack-trace.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Z+ai1UkvTk8W9Rm5NUVdB7Czo6g= +SHA256-Digest: GuO3cc9Lmdlutl0NinmJTCL5dEi06PDOIGq9UPnatJY= + +Name: js/resources/safe-self.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rceKyyUHgTk+u/w477KG1dAhnLo= +SHA256-Digest: BCzPQ1Bs5hitGgYuKp0gkO94Iu05NhFZQZlUxtvNMW8= + +Name: js/resources/noeval.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1CA3tEPmFLOXCvQNyBmB7kwXLn0= +SHA256-Digest: C0JHIRQSC9WGQQ0Lv9kSwZjeGrsLO2LREYP/a4k+VzE= + +Name: js/resources/utils.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9ogsF/VbU0564we81T22L5Pw9bA= +SHA256-Digest: lqo3Fo1f6Hdh3JyxqW3zgul7S0ZbY+2KImRNpQpZBkA= + +Name: js/resources/cookie.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zNFOi6LlZResNofsLHDkGaxuxgM= +SHA256-Digest: v1kgPMQpAupjc83ljzvFM25dfRQDMb4qPbKznjaqYQ0= + +Name: js/resources/run-at.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HQ6iPjJ2baWEX/xd5a8gANMtc4E= +SHA256-Digest: Etqht5aRCVuLp4K3cSLvaJI/8t0QIPOxsAj8M635Wmw= + +Name: js/resources/prevent-settimeout.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xjyp8sleJ60NRaSxrWTl9aI7Pes= +SHA256-Digest: SlFSxMyXFRg7yeScTk4nqH8CuXjeibccahWGzJzBX5U= + +Name: js/resources/json-prune.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: M//WDs2apqSbY2rI/5p5pFvV9W8= +SHA256-Digest: Ciz3FkejofgdV5A6pVUqLIsImpvwBSvBhtS9M7IAaRs= + +Name: js/resources/proxy-apply.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: RDcCLVSMwtDejfBBfnh9ulGPWeo= +SHA256-Digest: dxyeWinXWDJGy18kRbV29tQOpvyW0cgoIJlxLeWJtm8= + +Name: js/resources/prevent-fetch.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Q4wDBGIPM2j+7q68ZzTgMudmu7s= +SHA256-Digest: SeSJDCUjdzrUa/b8soVugESq8Yk/1+rtdz9YP5ROWzs= + +Name: js/resources/localstorage.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yJusbTV5sR2pSv67IrzgSOwq148= +SHA256-Digest: MlXG56vIuNLDoS+DO8XmqSFH3H0fqOikWo/52krvQ50= + +Name: js/resources/prevent-dialog.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kfmhi+lE0f8vRTmWmApGYKEHIH8= +SHA256-Digest: kE/K4I63LqLhYkZQx+JHQfyA9xf4wkODZ4B/vKGVgh0= + +Name: js/resources/create-html.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: auZlEfpp6MyehLNL1MWkGLWzfsE= +SHA256-Digest: cc0v+LigHsyzPW5/5qx7dJ8kGGF8RwysEj7f4iDETZY= + +Name: js/resources/shared.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uZKWmUw57BzZPhjEeRQYM1zTBe4= +SHA256-Digest: JrBPoJXYEjD0askK3faBCgG78Jbwav0UME37uQAZleI= + +Name: js/resources/base.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: byqgaayKNMjgoBKbyObeMDTjVQc= +SHA256-Digest: XrD1wghmFJ+ZU35klZxRxGb5tDzU/eFoKuBTSkCWpLg= + +Name: js/resources/set-constant.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZAwlnpIdIMg0mte3nvGEy/wKqlE= +SHA256-Digest: JGb7wcpFuJGETu4T5UQhu9exckH57Yl1yx/kWSecOvc= + +Name: js/resources/spoof-css.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fs2sTSGBswrq+RwiQw4/ngUq1so= +SHA256-Digest: 3TCwmIArI+8LRsYtkkLAr0mZem1mr6xUSTeR1/vO4iU= + +Name: js/resources/prevent-navigation.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tBOuruMmwfYP+iVz+maThjA/Qz8= +SHA256-Digest: vXAxsgAXKsoxa0ieS06VpS6JGxCYuDxIOkX4z3mVrEk= + +Name: js/resources/replace-argument.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: F8WJVs6YpHah/E096rGIbJtQGGs= +SHA256-Digest: jW+ytMzvA7mMQaRq/MGcpee/hZHmDB4nfuTfHiuoc2A= + +Name: js/resources/parse-replace.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JAUrFeysAXDozR4mPiJ7Qfj6Kzk= +SHA256-Digest: /KIPI9aN/JBqAoODMOJtESPc5I/NqghrN9ulwNWzjlc= + +Name: js/resources/prevent-xhr.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DYLBawuEqTlqBKlWXfjm5WbMjT4= +SHA256-Digest: v6B2aWGIn6878PgEYswwSCLQuzAd4iMk7TokPqa/Ado= + +Name: js/resources/scriptlets.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: E8LTqyGR1cyPCq4Vt/PD0svYvEw= +SHA256-Digest: GS0YQbDbpYvGA/kLpydK3gB13Ru4ODIUwn9DUuja0rE= + +Name: js/resources/json-edit.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Z9ZIpIgLvs7TlNiAJ9kDcQS6l2A= +SHA256-Digest: AqrINmMYBZ14oCIAUU4wzz3vUc9DSmhiLO5b3Hg/4ac= + +Name: js/resources/prevent-addeventlistener.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NjmeVCDI7C3adXIsQOTt6RtYMo0= +SHA256-Digest: b29gTiTiyTiLuHnh/3Im/xiicwrN1xu+5R2TOeGaWmA= + +Name: js/wasm/biditrie.wat +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WWIDCbt03dvsUucsjEHIN+NPefs= +SHA256-Digest: wE+PhfyhJhEkhUWRY/qpTRp/VizJCdHbaJtvQ2F0Ev4= + +Name: js/wasm/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: F+Mpgi88iybis4fDNj+cofys59o= +SHA256-Digest: 8BSI8acUoGQJWV8kPrj6E5vdtaDol4HDiyF5sdyphZs= + +Name: js/wasm/hntrie.wasm +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JrlXR1Nm9oPmLIbv+Pn7wKixF18= +SHA256-Digest: CiX9viDeCcOQgr6Kt8j6ZKawkINR7zfpGQ9Y4t5w164= + +Name: js/wasm/biditrie.wasm +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DgOIUlPK5MFrkDgGp0s8C/bltgI= +SHA256-Digest: LbWLKOAG+vFG711oQfa2mEuOrcDheOsqnke4rdfgzR8= + +Name: js/wasm/hntrie.wat +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HtWWU40Y7dKf9jbZIYZIgJLcTD8= +SHA256-Digest: gDZc8OjaK+dvnCA9eGaycpQHVfllUgm1FFGeF9V1vM4= + +Name: _locales/tr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BPT95JAhazKtelPR5gHeuTBR0oI= +SHA256-Digest: KvaizJWCrDc02aUETc6Cgz4AiCZRYBG18RdcC4YDN3I= + +Name: _locales/ms/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QLdVBK0vGnbnWUTg6pUzn5AthQc= +SHA256-Digest: XuUr3jD3vtL0rjyvGAZpbNsPOcAR9FM3RuVPXLlWK3c= + +Name: _locales/fa/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gJ8FyHPdVdHMuPEuh71c6hv1C8M= +SHA256-Digest: XcFj5LVypzXCS2Ucaq7xQ3N8wtr3qMDgyz9gPb+GYEg= + +Name: _locales/ja/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: k9bfnakHDC4tPWgiRP6k7sCxknc= +SHA256-Digest: nbfeYAIAigYX7eNwwEyH8HXRlwjey3eTvwauGkhYzmA= + +Name: _locales/da/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: N2ksZ05awOy0essfGaILZBUPBzQ= +SHA256-Digest: 0zBJmbFIl2ZnKnzuk9em31mafgGJZSMaV1bDPMXcMVM= + +Name: _locales/nl/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bSd+ifBX5iVlZUq4Cx2qX719M+g= +SHA256-Digest: zUR4EsQNDi6+/fsfHME8PCnYwQdWonpSV8wuRFO4iWA= + +Name: _locales/oc/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QwUCH1ym90A1Mwmavoy4KQJTLHo= +SHA256-Digest: 7hzOvhDeIelAeIJTUbTU1DYpMbat8USni/fVt+Z9m/s= + +Name: _locales/sw/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fWXxyu87oAR1KNUoOYJHibAYGQU= +SHA256-Digest: 3nGnAymSpaHyQ+9LcYqY8TWOAkG57XSKheFxdPihl5Q= + +Name: _locales/ca/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0VAW+CRtZ+UKuFebi8juekGjeT4= +SHA256-Digest: nPG3OUF93FBzgUmBOHdi0z41TLsDn3dGcnLbXejhUow= + +Name: _locales/ta/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Uwi5zHVeMIj85ho+DE5zJePFSUM= +SHA256-Digest: mVFlAf4CLuHRrr5qpSh8mPuyJjpSeYUGJl+Veg08VqM= + +Name: _locales/bs/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VWEjwDzoydpMClIuUNz09Dx57ek= +SHA256-Digest: hOPnBOHEvrYMI1fywRQaEXQe8EbOXWT935GfldE+OqU= + +Name: _locales/zh_TW/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 74nbKtCg24/Jqhf/Ci2FG2OkLw0= +SHA256-Digest: zDTPXiqNxmtNIOw+Uth85jWugjk90tKXp87Fm2ZOVdg= + +Name: _locales/ml/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q5d4jjE7D9zjt+XD4pHQlP8+WNE= +SHA256-Digest: bAvzKTJ1/pGOxjYi4HnzId/a4SrTqF+jZ3EgzSeZ1No= + +Name: _locales/gl/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JTkcS1JwzUjTkq4QydFUMAoEip0= +SHA256-Digest: 545D7uvnZgGAPdZT23xGGm9fpS2doCsKL6x3Qa8VbgU= + +Name: _locales/kn/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: IuHniixvFBSLUlNORfUzp9RF5JE= +SHA256-Digest: 451JYmH0MKGBq/mUIWXeiTScerDnPNIqQgxDzsk7ne4= + +Name: _locales/gu/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 21IdwgTBAA2fUCUsiofS8V+IkGI= +SHA256-Digest: 00jqiVXVfFcdXCtc25KlCIBJcCmjzDrreCE0iN03JyI= + +Name: _locales/th/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ei69q3xbZ8BZcWgsuqOnLB9oHnw= +SHA256-Digest: jJhVeoxAF5w17LdFkYrQpO0b21ixjJLsWY6uIP/gDmg= + +Name: _locales/et/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6PmrA+EE717B8IjK11OcytxgcGM= +SHA256-Digest: mo9nHRQRkOKAFFYAJbetM5hR0ZMJwTY/I0fBkkFr2rE= + +Name: _locales/pt_BR/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZlxjlBiywFgZEiJpktQgVXqyPyc= +SHA256-Digest: F+AcVk+pKkhD+6Vle9fjCrBhlYtq/WdQ/DVHoENFPj4= + +Name: _locales/nb/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9DNL9fmPxJ0mVDU3PPr7b9sIh+I= +SHA256-Digest: DU50aS3olL7HyEKbf3NqDHfrI+z0BazXQt18cn98iUM= + +Name: _locales/ko/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 18vT2MrAZxIwLS5b5kzWhDV/J04= +SHA256-Digest: BVQ8CuhRFLz3I0AHeTzEIb7rFNMV/5mY1K3C3rIkkkc= + +Name: _locales/bg/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BsqVB88tUx+Bl1gVAI8tzXV6un8= +SHA256-Digest: Unq7ExTCy2HL1BYleKuTtclXHNscBK9ORmf0oEuICSg= + +Name: _locales/hr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HwFDw9perP01FA/Yu4peD20foh8= +SHA256-Digest: Ulrz1OYebjv7TN/BJ4tkgrWvN+MaZN6+xT8U7REjq+Q= + +Name: _locales/he/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: lPhZwwk1z7Hkj8D9chn+fUru0x4= +SHA256-Digest: ZEfMryFRytrqIjf06JV0QJiSyS+H5wNCbMAtPzOkQws= + +Name: _locales/br_FR/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8TxCBvY9dB31Pmiu1eJismSDXZY= +SHA256-Digest: 7tMImlQC2ftM8FY3xU7P4ZRcRrYOARk2zMgAXY4RJRw= + +Name: _locales/so/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tfVzG9AE0zGI/IGuw5DuKJ1r9Z0= +SHA256-Digest: WE3jr6VAMU9g0apRhfCImp2JaGNNk9m/nUrHV/B32Zg= + +Name: _locales/az/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vwyq80mxQXp1+p4jR+Y3Ktsw7o4= +SHA256-Digest: H7FeOy4s1k33ZQ+GNeSizK6OlTBfgozGhRgJ8jrW9PQ= + +Name: _locales/lv/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XmQsC9P1h3HtRxGvgKvMqNBijLM= +SHA256-Digest: Qxz5/zPaGR7iVVBj1TGGG1mvunw5QzU6GkPBSNxIlGc= + +Name: _locales/sq/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4DwnA+BRMGpYBOJ5nKYc7iTfiXA= +SHA256-Digest: VwMBLi7cQkwaDLQwwuXRk7CR7n/i3sQ+i4SCBucWbw4= + +Name: _locales/eu/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SarxhmwYHXImEGXzWjIoEqnNMkU= +SHA256-Digest: o28S1rt4gxqDVtIeF3rFcM585maTOUli42+devn87aQ= + +Name: _locales/sv/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: thU/jOzevWIoQV7cMckV6z5lQHY= +SHA256-Digest: +nDv5bQCVg5VwoLzTNe5py/0G4tXyJ9R6f0Jf1jFyRg= + +Name: _locales/fil/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yArn0khc25YORrI4p5heJEkC8Ck= +SHA256-Digest: cmEeo/Ahh/Nl9g0IBd4RPLo0KKrK6KY4o/mnz0/B+a8= + +Name: _locales/cy/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aAzJ4WbV/h/ry3DYnmEJlzGmax0= +SHA256-Digest: EWE62qwO9O088fKlhWKmmzcJvT2GXHG6yRDD5czn6kk= + +Name: _locales/en/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ttrFQx4iLZdY2DxUT1ORRbFY/0Y= +SHA256-Digest: XHF9g09cA/8pVjsUB5VF33fHVx9HMkI+EBPzaBVGwws= + +Name: _locales/sl/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: INKM0D+e4/WnL7I2W49S/cDZdxY= +SHA256-Digest: 7M4rMQYu0P31905UWUj5EXcjT2mAefQjrJBTVLAOicw= + +Name: _locales/mr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5fxPHyrTMJyDJUUog8pc1JIkbRg= +SHA256-Digest: 20izlTWC80GUpuwuL1ZWuTEC09fC0VXlSNEEWZ/Tu1M= + +Name: _locales/cv/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QI3El42QujVJZrDaSbuhiScIOk0= +SHA256-Digest: NVTmRRFGckFhrD5rETHxq0x4dNQJGtQZeTLBX1C5JLU= + +Name: _locales/zh_CN/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: MI2HYuN7UEPcOf9awhp+nFUFlAw= +SHA256-Digest: zqFLgbt+Sane7SJfFO/9cDgSa2AYiXNgLMMj1rK04ec= + +Name: _locales/ar/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: EjF1XcuDQ8wzaocXtxZixJWFRoI= +SHA256-Digest: a0AcdnzgHQsF8O4D3HPCI7aCXJbupVKneeP/IzpVgds= + +Name: _locales/es/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8TDzCsnopjOjkBC56af5dJLjsDo= +SHA256-Digest: SvXxvDoM1A+pM+dSUqFtHYQShGJGNBU84lVBCBovYmo= + +Name: _locales/en_GB/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: c2/b9NJf+lXmbA4gRKTSiUkhFIs= +SHA256-Digest: GD2lGCBSiHfMUte7ppTGRSxkDbXBMnHE2rQ1zMtQQdA= + +Name: _locales/si/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iUNfJrfgdZjyeHEZl73tPK76ho0= +SHA256-Digest: 9DpHrYhrCn5KgJP7dYUwmtrdbwxdUdmtOHf5FRGQNnI= + +Name: _locales/no/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9DNL9fmPxJ0mVDU3PPr7b9sIh+I= +SHA256-Digest: DU50aS3olL7HyEKbf3NqDHfrI+z0BazXQt18cn98iUM= + +Name: _locales/ro/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gBiFsK9TTHnXkq4NivXgeePMAwg= +SHA256-Digest: pj5fOa7DjQIMZdt3iL+3yyebtfIb99e2crx3birzpgA= + +Name: _locales/te/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: e0FavC+NSLTsEV8jAmqQg0tU/Es= +SHA256-Digest: /r5VSG+z/tNjpiHo4mH/8rIGMWpOum2Kdek3RwDLh/E= + +Name: _locales/pa/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KjKxw26NQF5FQj8LyxHJ2gpqQBk= +SHA256-Digest: +weKZMuHd4qilYbxsNEd09jKTN/8hxIPi8y/nVX0TvI= + +Name: _locales/id/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: anDbftPGox/qFkNfee/WcWRm0Xg= +SHA256-Digest: JglPwsMh5tkgKWkjLoxVD+0m2b6Y4/ydmwIJwV20RCQ= + +Name: _locales/hu/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /XPzAZCXuz+HHIFzxJ2YT0PiRys= +SHA256-Digest: HLDTGaUCxmuS/izbn663gd0LugdCYH8ZsejFaqq7VIU= + +Name: _locales/uk/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q0LZnVajoY5RaseQmDWJp8YKyMc= +SHA256-Digest: sIV3pbdd32EDBQ1KQR0e1tmzXneuj0IefXcQ/7Xss/4= + +Name: _locales/ur/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: N7ProMHRRNhPVaXk3Fh9rQmztiw= +SHA256-Digest: Po+ayZJKyCCHnqb+miTHxsk05qVejavbNZlhO/tWewU= + +Name: _locales/fy/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0jqb7RVlqA3PhWHPdm4niTfzEAM= +SHA256-Digest: f0EaAy16YsRHKTo6HQgXvwH0Wanwwd2MJ7sTKXrPIGM= + +Name: _locales/eo/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DpMNoQCXoU0Tl4W8NX0/nt5KRas= +SHA256-Digest: gZ9fnk/RZYrJHAzEzoK6tTHzz1IWSnldFT3o1I8Gseg= + +Name: _locales/ru/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PgAOPMfGXGK3A1xGp9hzQcAYQNQ= +SHA256-Digest: TL1QZeP19hn8/oAkOouGyZLRIXSsehjDtGvziExwqP0= + +Name: _locales/hy/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wjm/uTjauo7aWqsYKVVg62u7SPw= +SHA256-Digest: s2NpiFFb0VxW54J+TFZ5LgRWy4sSWzlLl7Js2UQt5Jo= + +Name: _locales/de/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WalLsziKh2AH05eHH3FbrKj0BHc= +SHA256-Digest: 15KB32Xc0zra4CSSTl//hdUiCW1x9oTpOW3m3Skoyfs= + +Name: _locales/hi/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: z4+wnZAykaTmXSasQW+zRA2tcBA= +SHA256-Digest: 8HwnlGVY/w9XwDheUO7A4A7xtFC7oIHUQYYCc7ZwjzQ= + +Name: _locales/be/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PVbnGipwl0EwMRq5rGEdsXPWRrI= +SHA256-Digest: KHv8vMWGMh4WZBqVerhBvCptrqAS1sxVuIgyogcnJP8= + +Name: _locales/ka/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ji9lHY+wHXUmZscpCmT/G9xKDXo= +SHA256-Digest: EP35pt7XGOCcMFVN+Lfj5MuuhrQny/ZeZd1ejeLccrk= + +Name: _locales/kk/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4ZcM2uPd5R89zrckXztwayf1Fww= +SHA256-Digest: bVrYEPrN1slcjIk84T9nX5x+OO4l67VehBXEh781mJ8= + +Name: _locales/sk/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: O3qWEICS4m+3+J5+uvbDgp8Ec0E= +SHA256-Digest: GYfzPA/sh5sBE4hE3Kc1DZEwbs62VhpIDfMIdIa9eYc= + +Name: _locales/fr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 3VMSgdBagvVDaJgRAAmDI+l8N9I= +SHA256-Digest: ZcwCOYwRl6bHGy9p1BAqq4wB+eW/oNVV6/QHK7RNRmY= + +Name: _locales/pt_PT/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 28bRulS+7AnoSgjajtM+KiNfvo8= +SHA256-Digest: TvEZEUzyS0WdPzE/dYbPy8dqO0PBBal9q0eCKYkfRS4= + +Name: _locales/fi/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2a/1oxKLFBhn59xOe7d+f2AFY7o= +SHA256-Digest: jSlrS41NG2zmqSDVpKTaX4a0fd10OlhEcOaiEUJBSsM= + +Name: _locales/it/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AAStnxga4HDhbZTfzlvzJ9tc+o8= +SHA256-Digest: V/jYhzdd0+SHzKs8R9PKYmcBWq5NMcXDXmEupebySGM= + +Name: _locales/sr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jLJg/HPyo7bbrvM7Tt7oPxlEBw0= +SHA256-Digest: 3WISSXTV2SSMOcyI1+TpJ9vlMvX7azgoTJqYiOkoE0o= + +Name: _locales/lt/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ymmUzFck734OUBSYsoiZ5y+pJuU= +SHA256-Digest: UTOpn112PItx6jiMKM7JcQR+SbgUCBxIYv/saSsWMPQ= + +Name: _locales/bn/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fbbiCrSWNW8o4uL2+B036nNgXwU= +SHA256-Digest: ku6sMToHMcf1QvTR8gfx2yliivTibdDdTdpKkGHPQpU= + +Name: _locales/mk/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HKPc7dJq0FvyGZuccXhTO3U8WFY= +SHA256-Digest: Kzxk9Y9zjPFMdXpyqwwm8J7ecS/K3yeqwuYFivYFxKs= + +Name: _locales/el/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HJekLUd2mdMVxTpXffh7BStiq9g= +SHA256-Digest: AbkUM7EMGyXo+Y56j2NJpb8BQPnZZStwGrHhLr1cIiY= + +Name: _locales/vi/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XClyf3QhdifQQ+bjmxNpcDEq1LU= +SHA256-Digest: sec/Y5c7PU0/EWFFM8OboCcu3SgG1ZoKjfIzxXNylIw= + +Name: _locales/pl/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D+8pS0y+deIjnbAxZuJPRzooCk4= +SHA256-Digest: zS/fs1//7CbD0HF7SPSPvpDUAh7ypqCzC5OnDfbrI8I= + +Name: _locales/cs/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: w+pqkuU1w3zxV7FtlQ4ydb/x1Qk= +SHA256-Digest: 3CdAPcYpje5mDeEpmk+nR0VsLqJAwAUr6pTxH6F/s+Y= + +Name: assets/assets.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: O2akJDNf4rEoB9ymlfSY7Ysl8p8= +SHA256-Digest: //B31qH1UiFw+jQwCOGKTkEij66N1avleWGR9/NACxc= + +Name: assets/thirdparties/pgl.yoyo.org/as/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: a8+H1Jsco4oNuvNEY+rsEJeHyaw= +SHA256-Digest: OHTVzwDeu/ANgKqnet9Vbpw2m6fjd6HzH8186TWiGb0= + +Name: assets/thirdparties/pgl.yoyo.org/as/serverlist +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4NDX/4E5FegVJ9nfiAzcRI+RYUY= +SHA256-Digest: ifdYh78np6OxS/q9M2g9TUvdqehyucdSz+nh/6BSRjQ= + +Name: assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XfOmlv11M8QvwL6r3aBzW5CGb0M= +SHA256-Digest: cTe8cbaAPe3WpCzkNmg9m7FmwXiZ4XuWp+wp56D66Sg= + +Name: assets/thirdparties/urlhaus-filter/LICENSE.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: OAeD02gFJPBlylLXgQie7E0+lxg= +SHA256-Digest: LYuxa5J1olxcKoA26I86A/3MV2nTaRx2pHzQ7ij0kAI= + +Name: assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1f3VnLzrFOBwOo9htw3bqro8898= +SHA256-Digest: wL8d3WmMD9BRiHEAdRIHb7lWmf8ROkLrrdIZ6/d9ehg= + +Name: assets/thirdparties/easylist/easyprivacy.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZHiHgXKlHbD4sbGnA4oatgA1Wsk= +SHA256-Digest: P4ms2a7ERaAN46SNG/25dTxPOuErfFBhsyG/iC8Y3XU= + +Name: assets/thirdparties/easylist/easylist.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VPiF01NCIemUt/JL1T8kyvajEfw= +SHA256-Digest: D7Mh8bPk9ytxvnuTBfPCC7ukiVWBJVsIrFa7VThozxI= + +Name: assets/ublock/privacy.min.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KaoYl0GuxVfUl2U5CWxkm5ZLrdM= +SHA256-Digest: q5D5F6M88z0tEb5lLxbs9JKB4qlzCcjoEXvZNDM99CQ= + +Name: assets/ublock/filters.min.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kmx40zigjoPDSPN6EQNFwqLkbWY= +SHA256-Digest: uZvv3JL+FlVEi+m2Nuvs6YjyW7A88p16wjk2qFsdWys= + +Name: assets/ublock/badware.min.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eXO69urvdFVSftbF07yGAgrjxOs= +SHA256-Digest: znfFZuFYLHs9P0E0F2xXqEvs0UO1uAxMDIgyDt+fZqQ= + +Name: assets/ublock/unbreak.min.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: stE6hHvMxhwqHZ4N1tPsIGyPE1o= +SHA256-Digest: YLtG6+7EB6lD5MlOb1bXw60EoNpIMH8jANgJOZ2voz8= + +Name: assets/ublock/quick-fixes.min.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Idswv/EQOb9b+va02gCKG3o5LrE= +SHA256-Digest: MVBW6i2nHw9qdfypXiYXulSN0xsS5HE2IKR8l1KEHlQ= + +Name: assets/ublock/badlists.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: GX8yahhb1pWWYxutZ3VWvvYbtVU= +SHA256-Digest: 85pB2ls2EgFPgUk1RwcInboTxkT3K5kYMvqxDw640W4= + +Name: img/icon_64-loading.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CHhcliC8DB/ioefrSbvF6EtbZ2Y= +SHA256-Digest: R2T2yRzZhDLZRg5ycobTq2cj7Bu77bXdTxMVu5DMlMg= + +Name: img/icon_16-loading.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: dJPvg5n6pqJ2ll/DB4wmDJWxeKY= +SHA256-Digest: MHgJhZm4LtPp6Y1b+AjuinZOrcqydnqxMZBEMsjPMhU= + +Name: img/icon_32.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6SbYiRJWlbXXhkxaIhL0wI83U5E= +SHA256-Digest: yeOgLxtxFhWAeeJvKArXZaI6Qif5wzibIryD1nsTiPE= + +Name: img/icon_64.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jh0MKYtl3t6Gguph4ia6/FzlPMU= +SHA256-Digest: 2GaiU3L4jKtTUBrNc5ngnhGoBbGl5ng/zEOEB6rBojo= + +Name: img/icon_64-off.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FfISB7+3PTkFeSE8/xLlpnGFi/k= +SHA256-Digest: 5/gNC/5HnQY3zXDxJ21s4pmErr/IcA+5UJOM/ggqPJM= + +Name: img/ublock.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FmZghBqbe8cspbikKT2BDE4O29Q= +SHA256-Digest: BcOevViBv03hrS1fBMHb/e654TK+Y61tbjQSUvGKSv0= + +Name: img/icon_16-off.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uPCPYgKF2el5mNzET8Xw3qqeKhY= +SHA256-Digest: KdsCCeuwRpC5+kb8YG+3oDGiu/6KLv42+GREeDoKR1c= + +Name: img/photon.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8wGKsdfn0CVaqOrCD3sySpPe3rM= +SHA256-Digest: C4Lj7Ybqs4ieCAJ+BF7Jqaz/f8rHvl4AGsbkNmQ7rA0= + +Name: img/icon_16.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4V5QI/T07ICbPoW25YmZRF8cTMY= +SHA256-Digest: V4ESlYeFdSB3F1BYyap5l7WXGt0PZT+4g8ayeCIkpmg= + +Name: img/cloud.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9+VlMgEx9tYi5b1Wi5V1/LgjG0M= +SHA256-Digest: DiYpB9ohxsRcdTGrAmM3boEyA/Ax7miqH7CDsX8gJ8Y= + +Name: img/ublock-defs.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5XU1rmAqmr0Ep106zuLotbNkDEg= +SHA256-Digest: TsKdPEBRXK5Qyz/V44JE5PA00UBtCGAGZiPPSrEJrFo= + +Name: img/help16.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VLzw/+lZV9myWdIkB7KSLXQc4rc= +SHA256-Digest: iOSkVceIVDHcGOKr5imR9/Pg7SYZCScOICks9xzckYo= + +Name: img/icon_32-loading.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rWodmDts6Fhs6VmYhdNbJ/MgDH4= +SHA256-Digest: 0hQuwHRcpPYEobE2w/v0veZ66bV/BhJzVPCYPPr7oNs= + +Name: img/material-design.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: MGYogYvrDObZ/s0zIkX6OlSMeqU= +SHA256-Digest: VSem5dgVUi1astIVKg21fnTm9Sod1UtDkYO13InKt/U= + +Name: img/icon_32-off.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Ewfjggr3gW+sdBWgrW6Ww7sNQII= +SHA256-Digest: 6iyK86y3LAdr+hvfsXwyW36l+Z1mRtFRhNuOZ4vjQF4= + +Name: img/fontawesome/fontawesome-defs.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ELFye2RoJS8N16I4XA0QQn1WhhE= +SHA256-Digest: RCPscl0PD/v2to7P7aMqzuzN3XbTTgxzwsrCcF1l+Z4= + +Name: img/fontawesome/LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eg5asfQBiAJhGrPLPhVtEXV4N/Y= +SHA256-Digest: ttpJAoAHrkv3kejYquuAqic5Ouji0zjeDoefeQ3kkVI= + +Name: img/flags-of-the-world/cm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hjnbWQkIkaj9CdDdNg6NEFpXz+0= +SHA256-Digest: 7PR3rZbllDvIshgVxaDOnRMPO8utp/dMiEPkwgIYgYg= + +Name: img/flags-of-the-world/it.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gFXbKXmh5GeCKY0YjrdGJeseVbA= +SHA256-Digest: ncBqw1ZLUnp/aebOqxREfYl3V8du6Yx+KHsI1YMr9DA= + +Name: img/flags-of-the-world/tt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8aoI32a4p6qc+sMbBTBpHOTWI2c= +SHA256-Digest: AuypI9n7dusP/tmqz3Q6io1F2ukRVtDlJV4YKHAwplQ= + +Name: img/flags-of-the-world/ax.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vUZ6NCm3Xn25aaVHo6ggy1R21Zg= +SHA256-Digest: akOpLQRLxN1ymsuoUJuisFNVr5+kIEXOWYJVvcR3a3k= + +Name: img/flags-of-the-world/nu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: g8n/aQfxG6R1xU4uwsei5x8iyuw= +SHA256-Digest: WDvZF2+gCpMdWBCAsw9HRKpDmqxTZx3waLnnjOLGsEs= + +Name: img/flags-of-the-world/ec.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: cg2bOBEFf0SO/d82YKMWMg5PA+E= +SHA256-Digest: ii+lKZJJxU2pGPLQCpYplHUriZINjvu/vGc1SkaJ0Yg= + +Name: img/flags-of-the-world/id.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kdhrCfDCgYqzUntTd65sEAk5iSg= +SHA256-Digest: WlKxKdtE3GFmgvy85WZoNaUybestV4s9JZjE3U7T2Go= + +Name: img/flags-of-the-world/dj.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vGNutoi7VBoSVC+QPaISuqXbUgw= +SHA256-Digest: wdBWjuH9Nupi1RFjntyymReGTTArhc99HEZGB6jjowU= + +Name: img/flags-of-the-world/lb.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D8Zke8VFmSU7oVV2ok1NRaHSDEc= +SHA256-Digest: fAr3tZdx2FMmZRLhuyZ1NswQYVDtjJ8EMTGCHciSW20= + +Name: img/flags-of-the-world/pw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: RVYzD3nkPBkTiSMnY4km15tVNa4= +SHA256-Digest: lWqCcjQoKxINDdrvcQgJGSaVbQbXih2/SHu+QXdmNt0= + +Name: img/flags-of-the-world/fk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QRsYaFmlLIRzQP8D/zbPed24Bo8= +SHA256-Digest: K8ZBRMYnFK4a8xVNpdZ9Ye6/tRmzQQJ9hpISd+/kijA= + +Name: img/flags-of-the-world/gw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iWVBuDZIiunTFNzoQPxBGuh1lCo= +SHA256-Digest: 107kxHMCPMyQaun/zM242QRZVIppLG8MhG1VBZNMkl8= + +Name: img/flags-of-the-world/sg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KcSWLn7lZRS2IKT5HpezL3IoRVY= +SHA256-Digest: e3jDbTTeUDS8W9uYfRskXahNLXBJYITXFceuZUff9eM= + +Name: img/flags-of-the-world/ci.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: cbJkPn8rmpDCguC6sGEghtgyXxg= +SHA256-Digest: cMSpT0848W3L6InH21fTiC287sRbb0dnMp2yHcJw9mM= + +Name: img/flags-of-the-world/vg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: J50qKmMvjChcFL+Tgj/49N2D9sg= +SHA256-Digest: IV8fxdqRwofXtZ1YchLoE2XayoBCBkK6D7xtzA4qHCY= + +Name: img/flags-of-the-world/tw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0RCwjWe5WjNXYxn2A78+fzDKb+o= +SHA256-Digest: BnJ5ZaMtqi2eecHkPu7rJF+RCze/uiIYsE7dUrwz/hk= + +Name: img/flags-of-the-world/at.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Cz12OBXAXhP9p4ZdaqrYh/S8S7U= +SHA256-Digest: OVQ/aPllby+iwcNL7LVuLRj7baW5bwktSv8Ocg88hYg= + +Name: img/flags-of-the-world/sz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: j9KRKIugkMnJMyNL6TEx1jkLccE= +SHA256-Digest: GgbJXyCE/2a1nD8svLl1tpytDl6M1TdpGJryo26qU4I= + +Name: img/flags-of-the-world/gs.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JjcK8BCcKEGHYIeSsADjm414VFY= +SHA256-Digest: w9uY4RZ3AM4TXXU1nhOQHnpkn32wKLiRHYxNiHs7LfU= + +Name: img/flags-of-the-world/tv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: G958xzZmL9uHNpmeBPoDqafzbgc= +SHA256-Digest: 1vw5v6xZH0vbHaahn25gCzyhyUcrYXHUf7rd+0Zu29s= + +Name: img/flags-of-the-world/dm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mYBL7crf0OjPddFPL4yCxRDRmZU= +SHA256-Digest: qOJXjxBNW4LzBzKd77WBVKEFqoaTmFlwuKddqYqmxCM= + +Name: img/flags-of-the-world/eg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zqQzfpEPDJJSQkhjQ0FRM7Vis/U= +SHA256-Digest: /GZdf8fxuWFWrJ7DGR6oPe6UYNch1jGS5KL/JTXP8KU= + +Name: img/flags-of-the-world/nz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: knY1NVFs0Ncv7QKgk+kXT+a29pk= +SHA256-Digest: 8MgTHwbznHU0K2cHfxCbijvzNTJF/OFfkW9wHfRrmcs= + +Name: img/flags-of-the-world/ai.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2+/6nA3lh71oXLD7R4g1Vrh3wjc= +SHA256-Digest: CgVfuMyQKr0FendSeILwYwa1Xft7T3TiT5UrXjxgdSc= + +Name: img/flags-of-the-world/sn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2Ela8gy/juEh0V8CGSokltwuwhg= +SHA256-Digest: 8KvnIHYgZ5J1ltkanKn0a33C7sE7n3T8WDyUsatt3hI= + +Name: img/flags-of-the-world/io.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jeDe5XcG/3+7cvFA25LitHYyjDA= +SHA256-Digest: B4dUizQhBlc6UJWYKIZ8LWA5xHWtmLJeewSEVjyttAM= + +Name: img/flags-of-the-world/ne.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PqCnuShCdddFNkTB2Qp6idk2znA= +SHA256-Digest: LjFAyb4INJflHx+5J/KEqJzjGyEfuYjgRDLvMBe5igY= + +Name: img/flags-of-the-world/mo.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8mOCnOu5iuvIY3cHeiOsVaij1oY= +SHA256-Digest: CGEGh8nnSK/bxa7QVi666Vboqoc1WP27uAgzQ3xkxhU= + +Name: img/flags-of-the-world/gm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: oqxeawEqeB5pl4ciDsBHrQ2jVss= +SHA256-Digest: UaHmpusucvzcqWiSJRgjb/G78CfyoC0RudeHO4E+oWU= + +Name: img/flags-of-the-world/sh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: IR6KzudfshRKQFk4vpBtsQeuLsE= +SHA256-Digest: X0K0Ew4ExBvL+HrSLrnjUK1tzYXeUDTMvBWo8u7hEFE= + +Name: img/flags-of-the-world/uz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5m9F/H3WsUCuD8dsLMFZsQ3Pzr4= +SHA256-Digest: rZhGhYOe6ogZJmBYomy5wTuABgbEMJUtz3fo3uBi7ro= + +Name: img/flags-of-the-world/yt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: r86nm58LuWE15DkxkCFUO3P2QUQ= +SHA256-Digest: 4ecwFwJ+J3UGbkCmrK6U9/xFQ5Kg/ijk//nXJjbSbRE= + +Name: img/flags-of-the-world/kz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CNaLCiH9ent25uGRBS0C5xCRFuM= +SHA256-Digest: IkbsJCPmGylEMsRN31ldkajuS6KGZ8vUeS+FElVX/g4= + +Name: img/flags-of-the-world/sa.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q5AkBiMIpgGpRjYLZPwlC/G7P7U= +SHA256-Digest: +5wjK4UnGlbVT9yQuZhwEZZUe72TkW3/8dS6LOFMRFM= + +Name: img/flags-of-the-world/mn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: i3pTOVnj9zF2pVYjkD48/cbaHp0= +SHA256-Digest: 0PkiLLxHDdICIUFKSr719WmEeQuasPHp/i8v/P2FRus= + +Name: img/flags-of-the-world/cz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HegC2E9i4Z0P9WEjCs91+TAJ/E4= +SHA256-Digest: rb9U805HMbrcBgbxeKY3mMy4qVAGQl32rXBLY8l9BK0= + +Name: img/flags-of-the-world/pe.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PpPyRvS4jM5+0qnNwjpcijI1CSI= +SHA256-Digest: +Spvmoe/yOoxbqmcySbo/2e8F6kqz/EY8AQbubSP+q0= + +Name: img/flags-of-the-world/pk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: h8x8k76ZN9nsMEGPSxe4R2g9YM8= +SHA256-Digest: 04gFHGbmiGEfOGLbxJCtZPNVqByfJQY9e8b/A0ACjhQ= + +Name: img/flags-of-the-world/ps.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: naxReqvrUO+/vth3iSMvqdcey70= +SHA256-Digest: epe9kRmHhGrQjJvS9dZjkAVOhplykCiNRuTbKDhtsds= + +Name: img/flags-of-the-world/ee.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Mz5/cksAvZMAVTiM18IcwJqBxu4= +SHA256-Digest: X5/ncHwhqdPYIu2V4T7LL1RyyppVBEQCi1zV8V5Bbqg= + +Name: img/flags-of-the-world/co.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: oPOUAhJpqEDk28DVbC7Zng5jFMs= +SHA256-Digest: LsO1IYRb2vNn0tfL094tYPSCt7ZLCztMIZjGgCq0zDw= + +Name: img/flags-of-the-world/mk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Oanomk20n7pvns2P+En/sG7YHX8= +SHA256-Digest: XkydL0JjdvIJRLFANn0YYwQ7FsilKfYlR0Sj0zhUhPc= + +Name: img/flags-of-the-world/je.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BPGU3QIG+AiO6zJGtAvb/KbfPsQ= +SHA256-Digest: QULyNp7mflKJ0s1gzMO5JuA9bNfvSuzDODlnEeyrq1U= + +Name: img/flags-of-the-world/tz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8OmIsr97i7fFtBlPncGaVQ+x1Lo= +SHA256-Digest: W7R0W6HXtVYGXQaoALnVV51Tqh9esR6ZNRC/kJfNcNA= + +Name: img/flags-of-the-world/th.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xwJ7qKBTEd8VTer6hcBV7yJHS7g= +SHA256-Digest: L0EtIJb48lSkpbFSO9ZHqY/fPuDXEFqYXuO/FAzJy9w= + +Name: img/flags-of-the-world/bd.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 00nfK/YqNXI2gadDLKMKgydnWig= +SHA256-Digest: 1Dxt0KVA90nqTrrkfgJvbvDW4ohAsUSQk+RbbsBwZbI= + +Name: img/flags-of-the-world/ae.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iER2z5swp8Ef0d7zhn3yFBxW9Ps= +SHA256-Digest: ZwvpontGNXsK0BxE0vN4Poxdu5jNQXxVVuwZ5cw02s4= + +Name: img/flags-of-the-world/bh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vOkxG1jm2GAx2ShyFJtH5oQ2tdE= +SHA256-Digest: p1+yglj3x52YNFIvVeRo6Y4BlNSl8PWGu8iW2h6HgFA= + +Name: img/flags-of-the-world/fj.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NJfJNWc53K9tSm53uov79tfpg2c= +SHA256-Digest: d9eUTOwSxjeREMcMt7oALt7b5CP+1hY3uuT4s2PiyAY= + +Name: img/flags-of-the-world/my.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JLYq/VKb6bKn99rCqLXikfivh6M= +SHA256-Digest: QPjyZ2woewlNi/2Afvwb1ybsV1/gd7iNht9L31i53zg= + +Name: img/flags-of-the-world/bi.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jvdMyI8OYawleKvMkjehkE/dFdU= +SHA256-Digest: h+ndE5mYwIrRZBxfWRzOeiMb8ETkN+PwaDEzywamRJM= + +Name: img/flags-of-the-world/jo.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /U4afjmedR1Io5fUhxme3wjE9ug= +SHA256-Digest: DL1bEcJ2xCGynj1/IgEpQneFwyttmN0WLxH+L8UX2G0= + +Name: img/flags-of-the-world/gb-eng.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Dii2rNV6sHqJkv2pMHSxpvKCbTE= +SHA256-Digest: Nr8eWNYcjY7Th+Lzxh6YCAAlYZMo3EwZfA3DPrTnTD4= + +Name: img/flags-of-the-world/wf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: f1WYWiMXBuRaODo1MKICoo32kmY= +SHA256-Digest: ltELf4urIQGGb2jCUELH9U7OsWZ7tb3qCDj+C6UJPNo= + +Name: img/flags-of-the-world/zw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wdSyYTCIRNh/S21SoizwBqOavnI= +SHA256-Digest: VU7AB2MkYxPVkxegbYR7QlbC6wwl9Cia3Vy6WbBxWs0= + +Name: img/flags-of-the-world/cv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fpIQsftWKioIw3zZQpGPUeHP00U= +SHA256-Digest: /hd9ilvOvOP5h0Q6AhcyXhKa4jF+jC0+eiiQ73+03LM= + +Name: img/flags-of-the-world/ly.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YXO4iY2ySAwbTZToj+eQ8rT2gIM= +SHA256-Digest: eqfvSUg6AOmM2JwAqNsmgHT08x36CZe30zH5RbslZtc= + +Name: img/flags-of-the-world/mh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: e28pARoWvKIhBcSCpyQMTUHvgAk= +SHA256-Digest: D10z7qkj++OjdqbT6agtqSn94dM7j1UWGt8iyn6/0Co= + +Name: img/flags-of-the-world/om.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jmUwBE7QY9xIbk5YQnajFL9kAG4= +SHA256-Digest: toRQWFW10TDFh3xRbELju6SxSyo6dk8p+o+xeLP9X1Y= + +Name: img/flags-of-the-world/jp.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AQTnAqny7q+J+jRekc5H+xjarCE= +SHA256-Digest: eudt3bW4r69QbKTG9gSA+Hbm3wKoHmYDfGWuLmXSEeU= + +Name: img/flags-of-the-world/ca.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1WkTEEFnv2rc90900wGGxDTOBpw= +SHA256-Digest: F3Xpt+MJK8zkV4aX0roVIOJWfpRu63mTYLN5SrQ/HdI= + +Name: img/flags-of-the-world/si.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: evQgCdQ88+wuxzWvMzss7a2Tvfg= +SHA256-Digest: 8QfgU1fDzHApmqffvmbfGb4bWYnNDfOMaCGd8gbEzaM= + +Name: img/flags-of-the-world/hm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7c90WMa1+ylGxLIFhASPhGYTbgI= +SHA256-Digest: kDLiiC7QZ7Ck8VXRwKQKaCXvdiW754d138YaeYI7IX8= + +Name: img/flags-of-the-world/kr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ys4DO1Mv4JJX5vQo8vl3/Asa4Og= +SHA256-Digest: 09byyAURZPtxpCJMx61tHQA5ml/dgrZXsLZJdtgl8hk= + +Name: img/flags-of-the-world/pn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1WSTPiYkDiOghMhh99lD6Aayvdg= +SHA256-Digest: ZFLrwmAlx6htow2jbOe+7IzsXskDbVwi2A3NVk0e+Qo= + +Name: img/flags-of-the-world/sm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9kuta2+bjdb24VWMKW9/k2+AQcQ= +SHA256-Digest: h/KuTk3qkv8TcIA79mcZHqo67cPae+/GOjvz6qkB+3s= + +Name: img/flags-of-the-world/um.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iqJICZiNJ4g0EnutzqiQ8NqJEpo= +SHA256-Digest: lP2P6eFOXfxkAUu760WL4kBH+AU8OKbNGgX2TG1Ox/k= + +Name: img/flags-of-the-world/jm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eaOtPE5ldRfJqpIAtVwWLLYg8DU= +SHA256-Digest: Gx2BVvqRne9w38T+ZRdRC4rJAE0E3TZpt4DCGxkt2Ds= + +Name: img/flags-of-the-world/af.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Llz6IiDPfbLVdhMkO4hkM6owQFE= +SHA256-Digest: ieviH4yRuY0pyahFAfLCfa0qXRLfjLnOyB4AivDlx28= + +Name: img/flags-of-the-world/ro.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ak2GEPY+7Km5iwdJq0ACvL14O6g= +SHA256-Digest: mJWoWQaNdUUicroj81fXBq7nvowCImtsNfwfXTYL7bo= + +Name: img/flags-of-the-world/as.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 84Rr5+FGWop602njZ/xXwZZHzUA= +SHA256-Digest: mSBqIn6wKSmPleeN0ngKdnyjFgzggGpx9X8BMUMjNs0= + +Name: img/flags-of-the-world/vu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rsxKUX7FclyqON7vU9mb+4gypEY= +SHA256-Digest: afYeLIDMxjeCDc/2qhKDcg4cI/i9gOR0tRtFMKJGQu0= + +Name: img/flags-of-the-world/dk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8Q/Z4WpUYVQl01G/tSt00W2rKiM= +SHA256-Digest: 5Aaoi5YxBEMjdo9aw8H7/6dIg7Wt6vb4C0G3aJ6Zvl4= + +Name: img/flags-of-the-world/bw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Tm9eiLGACnbpMoks+putwR3qg+U= +SHA256-Digest: CHi1o20r6A9NRIKHmNNnxXhCSVG2iUeF+OKPrY4HnfA= + +Name: img/flags-of-the-world/cd.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: px2D0tjbBZebOOIiMbAGQWN9JI0= +SHA256-Digest: 3gTsVuNmXQCj8K5HnbfB7ObNFZ2XNlvxstS5CSwD0+0= + +Name: img/flags-of-the-world/hn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2wWB6Atb/gGyCHMYSREDe8vCvuU= +SHA256-Digest: zaBS9iFOUoEIAAJGnd4LuVo8x9bT4CSG+rCs+VCao10= + +Name: img/flags-of-the-world/sx.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: A1USIHmbesA4BsR0sCMdKCgmCXU= +SHA256-Digest: zvY9Gc2j90fMyQlottYn55UlUvCbX1la014gL9Ffstc= + +Name: img/flags-of-the-world/li.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tTg7a2t+H2fc+reGp8QtuyOkNi8= +SHA256-Digest: 1z2fvl874iqMHKPlwRLF2j9fn8QoVYJLokPblxjoq4g= + +Name: img/flags-of-the-world/km.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Fdes9msjMUPYAngAA/9KU6ta8hY= +SHA256-Digest: E7N6+vwxQbIYmu3EP3jX9YAvkiCLL/kokEOw6k2ZNgk= + +Name: img/flags-of-the-world/es.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wO7sA4U7Y/ZC/j7TxOT2DBM//fk= +SHA256-Digest: vDOacfoZ3EF5MRRWemBdMlWE/0DwQPXFZOMqOsE2TE0= + +Name: img/flags-of-the-world/tk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BvAV7jB7fYYY8H9Gw0uVCLiUbss= +SHA256-Digest: ghcTcbwCSBlnmogI4nSwkUhtq7IjsMLYMbgcXbdMGH0= + +Name: img/flags-of-the-world/gg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZmDmp9WDjhp9XImkYwDeBRJFTAA= +SHA256-Digest: cVgFSl54D+mixbz/ilcQFKB3wu3cUDipCZyxW8H6q70= + +Name: img/flags-of-the-world/sk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 91d9O+j9Z/g0kM/gBcbSK4gS8rE= +SHA256-Digest: aM85rKH8xeFRHhBjystruk32bNPwHOdKYLY6pCkkAcE= + +Name: img/flags-of-the-world/vn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: GB2OhlLjjt8PmGVlLrQGiZaEtg8= +SHA256-Digest: dCHH6FxnXV/a417Z8Nh3MUXA8PEAc0M42OBpT9LgRMY= + +Name: img/flags-of-the-world/gb-sct.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NMOwpKmOlQ/ECzohl3YqGqdUczc= +SHA256-Digest: 4cUQQQRntvLIVtNknpfR/qzIMrekl5xxg6S15NLTt5Q= + +Name: img/flags-of-the-world/so.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: P4DQG18tj1Y4RJJ3XXivYgzP03M= +SHA256-Digest: LA6JF7+Y11+HxUpScU66Og9y3OSqeAWtnvp5Wj9HBSo= + +Name: img/flags-of-the-world/ky.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SRdvwKfDhX7V+Go9HhV8OAIvfko= +SHA256-Digest: Pj5WK+bQWiMgz09v9KB4fZ+TJbrUn7vSLFHcxKBRbjE= + +Name: img/flags-of-the-world/lu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1fqrV0K7FvTrBg7RdhnOReimSeQ= +SHA256-Digest: 3r2D9B85L7zLSvmHLXd+VsCDMtsNLiSRBf9c5K525Ik= + +Name: img/flags-of-the-world/ad.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mqDFAs36UE1RriHecYHdMHpLuFc= +SHA256-Digest: Du/eKS5WWKwNYK8PeqDKihd0rLWYdS8+MlLyNuFa910= + +Name: img/flags-of-the-world/sr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: X4d9y9N8gAUAvTS10fRihUKDGE8= +SHA256-Digest: SFVFp2zkXOR7WWSDUsxuejlnhvHxd+2BNfiLBCXfzuA= + +Name: img/flags-of-the-world/ua.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CmdaCNCNn+kUYFE1b6xLwWI0mk8= +SHA256-Digest: dGZBHujwe2mNHN1X7ZE1rA9cvQNm17v4h7z7XJUCua8= + +Name: img/flags-of-the-world/gr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CXU6A64EzG0KIMV3YZ0/+zBYuIs= +SHA256-Digest: LIgtJoicg0qXEx40bjt2OCcNF0fFEE3NE/r171UBlRo= + +Name: img/flags-of-the-world/bt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tajchmWCGTxpgIcQqntMcw/ZXt4= +SHA256-Digest: 2Qv80iOmLI0CruZT6iYdbpq9mldhETJMCxi5NSBEzr0= + +Name: img/flags-of-the-world/ao.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qS36pkAZ65J9tH2jwgztZ82v7Rc= +SHA256-Digest: c5cJ5xO05Ts/znhKkvxPbQoVGiMlrrUxGBuLb26fmTs= + +Name: img/flags-of-the-world/gn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: L7bxkiMCcgTBWbT66rdm6cGkpag= +SHA256-Digest: gfqoPUcxlIIB/uIGrJvg8oCtdAdonbxo6sFd0Er/DHY= + +Name: img/flags-of-the-world/tf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gqBbZy63L9GZZ7XiyPdBwVgEA/U= +SHA256-Digest: gDjloY9dnctIZuUOLj8oqzNVPubUTNuV+lTQMuEi3xw= + +Name: img/flags-of-the-world/nr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bNKUQVmwL/ODIOUQLPUQ+oG1shY= +SHA256-Digest: Or60aqWmPsiqDPQHvXJDM1K/ArnESPw4heQqQ29bJ1o= + +Name: img/flags-of-the-world/lt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ihL9kIkfDtS2Wyhjf4TMtcNXoh4= +SHA256-Digest: moqUa4vo6q+iL355b1wuzlt9MYdeDPVWRwMe/qeY5DU= + +Name: img/flags-of-the-world/ie.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 05uiSJbIXpFRjRIRDcq9ofwBpvc= +SHA256-Digest: qOQajyKLzVpO7l5KjsOp57Dnx1woP2BwbHcqrgjB4Q4= + +Name: img/flags-of-the-world/by.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pJhRU4aX8JicUklTI/Br4qW30U8= +SHA256-Digest: 1dL324sGGp8KZDPmCUVc2SgYnpZjikxhnVFucz1/Yqg= + +Name: img/flags-of-the-world/pm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XjZAdW8AUblAzJuBeaz5hoPVzXs= +SHA256-Digest: 8RwWawC8qhiOSPsyYXYpHFZ5yfxSdvii0hgMponZEKk= + +Name: img/flags-of-the-world/ir.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D3jIlA9wUpjDeWbt8Rxsi9MQz8c= +SHA256-Digest: 4IQ9LFXdNiNf4vQzNVVeSuxlb/buJBJbQlZQyR6L0bY= + +Name: img/flags-of-the-world/gb-nir.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hdS1j7ST6BidU9F25F5u17gngQo= +SHA256-Digest: 3NQgmclkDsMw03QSVNVpFN2CnVqCnEPILXYSiNcLzzU= + +Name: img/flags-of-the-world/ng.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: J4uwu2RtTBTv7xGNTJqErcaCrzo= +SHA256-Digest: OXCyzXGn7DdIPWbYoJGt/+GJdmLz5rFrHR76335KqO4= + +Name: img/flags-of-the-world/iq.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Clh0IUvI6FUz+Xa+dTGlakjuuSA= +SHA256-Digest: aUIl/DOzJinou8Tz8n/9l9RX0+zSj6EweUyXzXFmFok= + +Name: img/flags-of-the-world/is.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: csmyVC8bOqzbtyvczBB+akE1/A8= +SHA256-Digest: OF1NfXPCjj2QoQqwFN8n9UQ4pksEwYzIYjKKcahUwrE= + +Name: img/flags-of-the-world/aq.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qgA1QnhV2jpVK18HAKYwrEIpX+4= +SHA256-Digest: LS3J1Ro7MdiBwSB2ofJEjP9aRE5tVsbWkes2vPio91o= + +Name: img/flags-of-the-world/gb.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kDYhKuGf6t+wWblsXZp7GFgYMWQ= +SHA256-Digest: nXTj/9Y1FAfmXDdVBXFDrzd4njecGOSE2CBjRo3m3H8= + +Name: img/flags-of-the-world/na.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bSrq/2kX+gzJ+doH1V0amC+l6U8= +SHA256-Digest: A3qS0E/KqAxQ22ypYnTHpewaQcSo9n5wgT7HlaJR69c= + +Name: img/flags-of-the-world/ls.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kO7/6iqvMchPV0MsLndQ/0ZWNxE= +SHA256-Digest: jBddEf0udQwc2dvo4krIZ+kwtKXG5rcaOotxypyaKn4= + +Name: img/flags-of-the-world/sb.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 3s0g7YfNmZ8Uu+kprPbdCPiqkO0= +SHA256-Digest: 5Dt78G/9aOc0Emn5vLGXzyPoF7Oc/rFS0uPNGmoXpq8= + +Name: img/flags-of-the-world/za.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6dEoP/831rpwqT9VTXfJi0qcVd8= +SHA256-Digest: fnc4MUVXg4y+kni9Rh6bLItJT6lM34JrZw7n1kjx/TE= + +Name: img/flags-of-the-world/pf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: S5wF5MHs17GQj530bcH36lEND4s= +SHA256-Digest: Il0Z6pR7+zpKWD0X/6mi0mN96TbsVdVA7Utg5beRhao= + +Name: img/flags-of-the-world/tc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pS42XiaNloqsTo4kvztZBdvl1GQ= +SHA256-Digest: sLlvVxZSHbUnOTxCmgn1HTNFfnHsbXLWzIni7lKR9xo= + +Name: img/flags-of-the-world/cn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wQ2wCGFEg6lVxkqqJB2yU2FVbdQ= +SHA256-Digest: PHQtAn+5TjLKA8kmlqVialG44gPDGcqwSo0q6iXllg0= + +Name: img/flags-of-the-world/fr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SIuA/tjk5+UPrJpb/UvEIpwyyOY= +SHA256-Digest: NiBcr6xRHiRwN90JAR/ZuUzCuw1yQSbzMAGqOi+IF5U= + +Name: img/flags-of-the-world/mg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UIP+ixtSsE6YMUv3qE5ZNNhc5w8= +SHA256-Digest: ocVUXIoVqwthlts/b6sw+2KQukNOyMJxxTS1svN9i0w= + +Name: img/flags-of-the-world/am.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uoPaU48oYF7uHtnDadfjGcCa4PY= +SHA256-Digest: Wv5O/QEoyCgCT8ch85Dlv5uX7TeB/2XwPEb0l44vEUk= + +Name: img/flags-of-the-world/pr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SP8jifx/ct37W2Fk7e5hf5qPJe8= +SHA256-Digest: LR+xPU1sxuEh7i67/pHm7AD+lEEKBXayPewbUGLPYmQ= + +Name: img/flags-of-the-world/rs.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rTGrurhIHdgoQjH26nqsvJaKQo8= +SHA256-Digest: Qu9dZFDlELQxSUFkhd9INvv1QhYRRoY/LKIsoofoXU8= + +Name: img/flags-of-the-world/ms.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: z78tbgW/jpdfkXQL5gFJhIsn1YI= +SHA256-Digest: d1o0H5Bq8cGRmlbQWO1OqruYVb0OPoOKhK23LcHmF7U= + +Name: img/flags-of-the-world/nf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UWGEa2m5nl4pkqtnBunvYhYcRH8= +SHA256-Digest: hISUL37YgsJteKmNFH3fE4NTLwfywRJlvqa975a758g= + +Name: img/flags-of-the-world/bo.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uhvDLaO4C61U2wxYy6Z/KGABxTw= +SHA256-Digest: BNHuVmMIKtRXgttU/L08AJVVeSTewBeC+urNUkU6h4c= + +Name: img/flags-of-the-world/mm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: S/65q6IR+5nhvksMlRahDVA+eKo= +SHA256-Digest: cpNkkM+zw2NahYgSPH78f9RLGq5FTqDOac9WnpRXOzU= + +Name: img/flags-of-the-world/tl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vdh/D39HJ4UyXDYm248lokJlt2U= +SHA256-Digest: gPtzV66slgS9q4BsQEWDOXl7wfNnsJIJ7DQ2n+tTMIs= + +Name: img/flags-of-the-world/ws.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Ka1xzfhGwGlL1yN2hBQnhsR4Ers= +SHA256-Digest: jmSwVfCBtckKSdg0yMosNXa1M5CwQTXo054yHc4/W9s= + +Name: img/flags-of-the-world/me.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eRBEsX0DTpQJLlRFsJVgQ1r+9wQ= +SHA256-Digest: 5IjGhKz1Mse97cyiOBC2xMOTcCLMHKLoRmuCqM5N1D8= + +Name: img/flags-of-the-world/tg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: A7g9OY5GwcyvNDkFrVsH18sg/mA= +SHA256-Digest: VOmIeB0I7u/cr5HLNef/p3GoLhQKFxkU6dwStVH1Vkk= + +Name: img/flags-of-the-world/ni.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0x0VUqDP7yZzJEKipvIUK+UVvbc= +SHA256-Digest: CY+rtVok1lG9wHQNVqtLaHNad2XhMM8P0QXT51IFen0= + +Name: img/flags-of-the-world/re.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZAfdZ+JwoOQOLFWSeqp65LSAhkg= +SHA256-Digest: aNoDhGKDPJwOcKSllGLp9v199eZSo/WNiqw0UQ4OsEA= + +Name: img/flags-of-the-world/cc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WQdpXxSwH77IXi9Yvzm132X3658= +SHA256-Digest: KBZ1tuyt2eqvFlYwWP0QYYkse8eehc2Lsx7qCWGduhY= + +Name: img/flags-of-the-world/kh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aFfq+MkQUpRJcqvhwjql/N5JoPU= +SHA256-Digest: 6IqOxJRLd+/UzkH2RglgmwXKFHJi0VMfE2CV/KuO330= + +Name: img/flags-of-the-world/py.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ffC3L1XajmomUGa1cTBKw9MidbQ= +SHA256-Digest: eqCaur/liAoa7YYzkWZ7G6niWZ4eEq1rZXm2Bi/iViA= + +Name: img/flags-of-the-world/gu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 724Gd0JFhIQ+Fm6677iM36CZV1Y= +SHA256-Digest: 5B/IG5B8iCQYEiUmrNVcswbRFGyBEmJo9DtoPSwzvF4= + +Name: img/flags-of-the-world/mq.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rsmIjeYWagxqUFjROX0AUMOK7/4= +SHA256-Digest: a08DZQMGO6DOR2d5hJX0TJ9Wdd0QLjyxJiRoA/mezU8= + +Name: img/flags-of-the-world/de.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mjdChndXdSBam5seqMcthvg0gXE= +SHA256-Digest: K1wxfbT7NiuWJXXBZ3LJ9Wddro0X5x6oo/u6x2hYUWo= + +Name: img/flags-of-the-world/np.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nvEahkc2RS0TLaEa8V9xPqkx4PE= +SHA256-Digest: KfOcn7b9XtnSmUhH5kDJyH4Z6PC6GB7TzGvU2Bjo4+8= + +Name: img/flags-of-the-world/fo.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: p13wcU+YmYl+RtlKrekIiPy/rJ4= +SHA256-Digest: +ZUwFJJUr3egDyWi/rw8xc1bj77VEKlrptpSdNWQ6TY= + +Name: img/flags-of-the-world/us.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iqJICZiNJ4g0EnutzqiQ8NqJEpo= +SHA256-Digest: lP2P6eFOXfxkAUu760WL4kBH+AU8OKbNGgX2TG1Ox/k= + +Name: img/flags-of-the-world/rw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QCe5IHOd4FfOWJQhffvoZgMsBfw= +SHA256-Digest: lHPxY7RCVMh27qOxZyLWbYJ8tF2Vp3JdRYp8up/VH3A= + +Name: img/flags-of-the-world/sj.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: sKWl3fs9BCc9iEu6Eum/lkUst2M= +SHA256-Digest: Y44WJPWC2wMbMig0rbaylOIWbw0cecueRiQPYUFpOvM= + +Name: img/flags-of-the-world/mx.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yPg5FWKrugd6nZeFJIzH3vtaByU= +SHA256-Digest: rK1xOKf1aERJhOH0Kb5viXpS+tFvcPllO8yNZYmIHQU= + +Name: img/flags-of-the-world/ph.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: U2S5dCH+T8LqBsdGzrfPTH5t3m0= +SHA256-Digest: uig4gDgl6rtT5nlaFvP6CJRU5xi8Zy3C7DjAN2OGln0= + +Name: img/flags-of-the-world/mf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SIuA/tjk5+UPrJpb/UvEIpwyyOY= +SHA256-Digest: NiBcr6xRHiRwN90JAR/ZuUzCuw1yQSbzMAGqOi+IF5U= + +Name: img/flags-of-the-world/gp.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hHtkN2NvkjE6+BOu5Ux42fYxbmk= +SHA256-Digest: ey/I3LNNtuHb6uQpcP0ppWwrbeBfIfEfurVKTZFHOWA= + +Name: img/flags-of-the-world/sv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pNRuidSQFHqAhM5VtEvWQiRb/II= +SHA256-Digest: 2Z3YUB5QhaRS+bVfwBDpvdCS2/GFFNuId1MNZFrrY08= + +Name: img/flags-of-the-world/kw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1AUO2X3ESP/vzrxUH/SfRl6+7rA= +SHA256-Digest: 1EuS9+fyWbGYbKssdRjZ3E1S/hPDQKfTzPZlk3ChHuw= + +Name: img/flags-of-the-world/ch.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1BssGiH+Po0JCYQ6/9sJWqhb6xQ= +SHA256-Digest: 1/07Fe/h20GY6Vd8v4YahzJ2JMJxtT1hLQZMERS4sQo= + +Name: img/flags-of-the-world/gf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 38v1I3M8JHjatl3v2k92UorNjsg= +SHA256-Digest: sZPo2i5fUWYvgEbx1mqV0kt0LG/TSrcXVsZQqoevY+I= + +Name: img/flags-of-the-world/gb-wls.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bIax1JG7RT6sRPpGm7NzCH30Ywc= +SHA256-Digest: sMBoVGvZ2GbFRQ3kmRsRlN6e84lAwQr1xlJuWQaFnP0= + +Name: img/flags-of-the-world/bf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: C90JREJQZul/Llj3O2WifgdMQI0= +SHA256-Digest: kRWDXLbs4DjAap8oxIT+A6OdZewOlcg57KsdKEBVLIM= + +Name: img/flags-of-the-world/do.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: OszBBrlKzWZi5wDLZc56mK37v2g= +SHA256-Digest: nYcc0fIxUG4OmcgwMzYeFE1adoafmR/sXeEdmm4Fm2c= + +Name: img/flags-of-the-world/bn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jBXAshHKC/CH2N2Y/RqYw3jLl2I= +SHA256-Digest: csUJfWBcXbOKUwYXheatc6QzskXKzRISDsJMQT9HcUQ= + +Name: img/flags-of-the-world/et.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Q/F1at8GqYfUTzhHG4N84x/D+0Q= +SHA256-Digest: CJv8IOeihlDnbpabsH4d8OGjyh3w6ZQNT7XAdJwYxLk= + +Name: img/flags-of-the-world/ba.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AH2JmeOyoQIjHcDVN6SSz0EPuVw= +SHA256-Digest: 1vDUC6NQlwdW3VMCoaPbx3LMp2QsAz6zH8u6Ae9Z5Qc= + +Name: img/flags-of-the-world/bq.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zeQObEsXFEgNna0eeLYADyPeBNY= +SHA256-Digest: BKJpjMz/Fe0Mhl5oyvtgg2RTr3DCOU308hJCh8fWIxk= + +Name: img/flags-of-the-world/be.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CMnZpTLqK9SyZWLrAC+bWXXCSHo= +SHA256-Digest: sgvkfWChjtEbA+GZFNosSmpr89RqWTES0wBkbZ9IUYs= + +Name: img/flags-of-the-world/nl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8X47Vy+4qMMnu+/BAkoyelR0VvU= +SHA256-Digest: e8PlX1kgTWGmIQmElxv4LGkZrsSFAKRXe44E+j+FbHo= + +Name: img/flags-of-the-world/sd.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: V4heRh0sjLXFJ6nRfdjKay2hw1w= +SHA256-Digest: wZmeGLcUeFbSVGtRq4srIber7gingQZc79C6sRhduzs= + +Name: img/flags-of-the-world/tr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9fGVby9dO8SK9rOrydjWXfCgXTI= +SHA256-Digest: NM1e+/K3sAvShnHeOns+Im0EvmpjT4vbT9ktQyTOhsE= + +Name: img/flags-of-the-world/kg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: EzYzQGSg5cp6MBFOcls8t6op/gs= +SHA256-Digest: oMX6oKXGbwLQ3w1igOCpoBKyQ7YEDTJH+sreWNcSxh8= + +Name: img/flags-of-the-world/mz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: M8sKOwKTgM+rB9jXtZCNyhoUBWI= +SHA256-Digest: j/3bhajwK+Y0wGjtKykVwtaDQtgdQ2CGx+Ws5EhIWk8= + +Name: img/flags-of-the-world/mp.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gQzZvyUPwvNhGqYvo5oYNz08DPg= +SHA256-Digest: HWoXr/dIXX/JMNNYAHYfJzXW7rOYwVuAQo8Oq3JcszY= + +Name: img/flags-of-the-world/xk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yJL3GZ5NFshpFqIdagdKijes3bk= +SHA256-Digest: Swk7idHbxxBdCoXlsJxuu4UUh1OzKCT5ilL/7GWg20k= + +Name: img/flags-of-the-world/ss.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zS5F1RIuvOvnehNZueTUBOd93SI= +SHA256-Digest: 6PIgXSqNAMOvFoO/4Al1JgZu0uQBA/Z+EpYb2TnT108= + +Name: img/flags-of-the-world/ag.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: F6glHPlqVNt+/3oGRm9DYJPtgkU= +SHA256-Digest: k4O4OqiP7NSK/DEV0gs9qHneG0UaK1oVz5SBd8i8etM= + +Name: img/flags-of-the-world/hk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1AdYvchXMEpzKmiGDk1bkMBiWVo= +SHA256-Digest: kZ4nSiCf4/qKjOD2ev9O9AZExLj5GOb2exqbFL/UeH0= + +Name: img/flags-of-the-world/tn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: a7Sypo2YI4CNQ+LosESMW7RUbr4= +SHA256-Digest: BmSNGk8oKnQaMWcG5cm5iYopvO2Bsukqh2PE69BieBE= + +Name: img/flags-of-the-world/ma.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: RNSX7Nf4Q5mEUFcNH+SMFl28CbQ= +SHA256-Digest: XOk7Dc+XFq5r/XwNTlyLNQAz0zNXkDuiA07YwsRTRao= + +Name: img/flags-of-the-world/bl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xvXd5f8tgCVjAM8gdsZnGZkGtAA= +SHA256-Digest: G63ue5EoduEcsx5CRQJexaNvB86JKoDoiORQD3b4jVk= + +Name: img/flags-of-the-world/cf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PEc7nyz3qL17pLF+K1YaPnazHpM= +SHA256-Digest: 2t6qKA8eJSqBQeqNlqDDMZGiPdsXKnn6kgd7BEDd3pM= + +Name: img/flags-of-the-world/ke.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aPACrUhEwKwBTQfL4fA+4z1bV8c= +SHA256-Digest: mZL3LbCJwLpmE6A1YtqTl4EoGMzpy6foB6+VEEUVduI= + +Name: img/flags-of-the-world/gd.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FMJ0q3NOYPC4cin7Bb6eqEY3DOA= +SHA256-Digest: Hqk8SDocrF7TEmr2wn4LXHjJyw4wiI3Pz+57wyVI7MM= + +Name: img/flags-of-the-world/er.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eUF2Te7GnCHV/VHw2IXufmnFYOE= +SHA256-Digest: sTOrRMnvRwqJx4t3inQp3rXoAbNyQez+VWdpd/+i7J0= + +Name: img/flags-of-the-world/gi.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: twLmPp4YKXhUVrpknTstXlw3GmI= +SHA256-Digest: ckNmAm8VxjVuBUBtS/abslZwSOJH2IZq/WV7+ycx7A8= + +Name: img/flags-of-the-world/pt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 43PjnXYN/L5F0zxhNfCMrMl+SB0= +SHA256-Digest: HP5ri3iHKlb2eI3lR0e6FRR2sieZ+ZhQtlZvxlMFqLk= + +Name: img/flags-of-the-world/bv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: sKWl3fs9BCc9iEu6Eum/lkUst2M= +SHA256-Digest: Y44WJPWC2wMbMig0rbaylOIWbw0cecueRiQPYUFpOvM= + +Name: img/flags-of-the-world/bm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ge+JsEhPtKMJ79PChS9bsWtlspA= +SHA256-Digest: 3XPIUDtnaonqZ435oWBaAf6rzW6+5VWmI6KWDA89ZP8= + +Name: img/flags-of-the-world/ki.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zy51fTWHfSrf0pbgcu8Dmf+XPMg= +SHA256-Digest: mjopY0EFa7PTyksrAKebIS+reT/huKRbxuKDco8jyNw= + +Name: img/flags-of-the-world/bs.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: C61HZtBpXT6eFUb8fLQLVGtmzAc= +SHA256-Digest: VQ7lb4VrnTXDdkWmP9iDvnpf6I+sA93KJ/PyQmUn31c= + +Name: img/flags-of-the-world/kp.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2ZocIQz/SpjKLeID2NxENNOf/Bg= +SHA256-Digest: YzEeBJJv37gRPIPh13NXeoW5osjBD1gDCEmgtzy6grE= + +Name: img/flags-of-the-world/pg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xTFUxxqn6jrEHdp7qmb5dhYl4bo= +SHA256-Digest: Y5WlsbpUiQEzPqebDTHkjWYZMJJjiIIDV4KBeTzLHro= + +Name: img/flags-of-the-world/mr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CAePwY8/+hDOlSCSwk6bIufGXlA= +SHA256-Digest: PiwomQ6y7iA/G03+jnqI7kqI9eBPPgXAKIHlWgklibw= + +Name: img/flags-of-the-world/va.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Aqd59WBb5VIeQ0mYkIVTqZI7qFo= +SHA256-Digest: fW4AmTRRhu76fvnOpixp76Qpnl0qGAosqk0nbZf2HDI= + +Name: img/flags-of-the-world/lc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: td3bFLFhuoVPYKa4fdRmn74k19E= +SHA256-Digest: vzfrHbvY6Gg8/q8GdxOzx37MFofwg8z0d3pJ/Fc1Ctc= + +Name: img/flags-of-the-world/README +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8/l8520syX/S9ICM2bJXacB5qmc= +SHA256-Digest: 9SkNsoAHrI0nT0MIMZDDw/GcjBDIJ+jskOGg4Gqg5Ic= + +Name: img/flags-of-the-world/ga.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QBpTxYo3T6BvjDg9Pr/ItkctDAs= +SHA256-Digest: BSf/r/bA9QUI3yzGXIX0I6aaFC9MUQI5zlvZAhv/QCE= + +Name: img/flags-of-the-world/tm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: atm1wAQdFooGsbiNaJaGwEnimjo= +SHA256-Digest: +c8qiseFKjUMlLpVRvjaRomiHqx+6AUFaIhrgMSfG5M= + +Name: img/flags-of-the-world/mv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4nsBeGAajBhW2SEG5WOHJSQgKJU= +SHA256-Digest: i1IX93LIe5PiI3bmz/Eu02G58X9dibpoaBK6dDUFM5A= + +Name: img/flags-of-the-world/tj.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: g4vQAdtlnoxZeML/jpDkux+e3+Y= +SHA256-Digest: F67HFZ8yuDJdYW6Dtq5JmB9yB136j8j8Iz3tRhIMiJ0= + +Name: img/flags-of-the-world/ml.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aQtqPE3kt3Tzrem5Rrtb03O5UQs= +SHA256-Digest: 3nID7f02dSk2SJJXL8sOyaJz4ulMgy1W919TzXct3os= + +Name: img/flags-of-the-world/bb.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: i2XrRDk86g+uFOnqB//uEqqWdKQ= +SHA256-Digest: YBqnyb46ejIAwZyDqNU6bXTVqZOeidcOWKsQkNkyzmA= + +Name: img/flags-of-the-world/cx.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: OOzHpqG+qRri+N4t6fZlM3JLdLI= +SHA256-Digest: BHxC9d7iFT1QHscoYb6ZvoWtmfCfI8HoMNcimPeapzw= + +Name: img/flags-of-the-world/mw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: m8eysgSVac7VUs6N1sJNxShyCls= +SHA256-Digest: hg1KLlkHrux4nkbY06r4G3D6Asn0jy7t/6HEMMykh6c= + +Name: img/flags-of-the-world/ug.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xG8yzQLhpq8lIOfH0DbKAHazuKE= +SHA256-Digest: H3Ua2xPEp0E9zYtxvQZlig1YDZyeqqKMUKCsOpp/KI8= + +Name: img/flags-of-the-world/ru.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Wzp2+Nts3ddP0catqAdS9a3w8uw= +SHA256-Digest: +YzXLTsu96aNtdR3UjgTKQmPL0S4rYqxUZ81VF68YsM= + +Name: img/flags-of-the-world/sc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4jkN0Wq20/vU/h//bziCGwggPkI= +SHA256-Digest: Q86kbn5Peo71N+Ei6rlHTJYLMbWtAffeIJzFYY0V2EI= + +Name: img/flags-of-the-world/hu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Nlh+6ZiQ8lryubrQYLEUVkzctnQ= +SHA256-Digest: rk9WPfeoc4MgmI8DOPLexm46VqHShHYid0on3ZENpA0= + +Name: img/flags-of-the-world/gy.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: +H8oTtyMghdfUGv4iDQtZ3DvZ+M= +SHA256-Digest: CrNGnJoa1GUUf9iKWrU+04qfh1F63CL5uet39fcoO/Y= + +Name: img/flags-of-the-world/la.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jsof1hNt+5htbuwe3mMHf+dt4nM= +SHA256-Digest: /9J+osYGQO6mQ2sYDE+7qrn8rW5aPn+oZGoQyPsxpTk= + +Name: img/flags-of-the-world/cg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WkpPTtUzhVGfkPLf2Y+e3o4isks= +SHA256-Digest: ZbOo3hLYXzLWHiPJ9oTy3UbICq/abARHrKzz8ytxDNo= + +Name: img/flags-of-the-world/lv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aIFdlTw6P39yyJ34RJzLE/aPSjY= +SHA256-Digest: rP9phTv4N97ldHJrw+LZqCdNHXjnIifUhJRxRZI0m8Q= + +Name: img/flags-of-the-world/cu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gn+lesiLbzNACWl9p04M8qNc7fA= +SHA256-Digest: hSYwZ93liN4HNWzRprwQVk1qEx2K0SUd6fbBUMdl9e4= + +Name: img/flags-of-the-world/aw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KrHgzexS+VC8yjrFDspLGS9B9iw= +SHA256-Digest: qv/w0DOnfQ5ruukZVzWGST/T0EsURwonF4uaY6uR11Q= + +Name: img/flags-of-the-world/br.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: LLCn72ZNdbMHIsVKTP7u8keOvxo= +SHA256-Digest: nshn36eAL3DNAr/xwbLygm7mwnxJDggAwpcmLqhSkzs= + +Name: img/flags-of-the-world/cl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rwCuhMkd3LKK1mKbmQlRPnGoNPY= +SHA256-Digest: lO4ndxmUkHL1oYiW9SFgdEx2mF4NrRP1h7kN/vYpA54= + +Name: img/flags-of-the-world/mt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0EbDFsL+5AMrMsKHWmvoVkpqKWw= +SHA256-Digest: awbQqfFH/nKXpxHWx6uEhGpr0weCiy50dTT+gSM6gGA= + +Name: img/flags-of-the-world/gq.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XyRtfaCbRiuf0nL6gq3O0/rIwpU= +SHA256-Digest: MdN1nj2UbweGmJmU4BGFU1cud0a2XnIpjb4qSDymhes= + +Name: img/flags-of-the-world/au.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VAbcPIcyy7o8aXhaGWDzCXSE5GA= +SHA256-Digest: 5mRQFsIRYOEksTidK/XniMOnz4cwxclh/fRg/Rqsdkw= + +Name: img/flags-of-the-world/td.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7si2MiEE/Ge7QIEOj2YhQLS0dqg= +SHA256-Digest: FS/d9uRlMsEQQEMiNg1qcSj2NVgVJCam/Dt8iECnBy8= + +Name: img/flags-of-the-world/ve.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: g8b3Mzx6km+03VuDZ0mB7FB6j48= +SHA256-Digest: GKm4uDCyERCgEkA+xqacyf9MLXbwwc9/YmOpYbU2CMY= + +Name: img/flags-of-the-world/ar.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WkeRsytuFn2aWZzFfRdI6vWV8eg= +SHA256-Digest: XZRdWz3KMJScNCcffZBmUeC5og91okicgvlva/M6bPs= + +Name: img/flags-of-the-world/pa.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hFeEcDOdjC9qi+kZo3JGw4l77jk= +SHA256-Digest: fjQ/08VM5fVecuZlOJild1KOoUwNpzjt+W4NAiplzFY= + +Name: img/flags-of-the-world/il.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UJ5luA6KjDOpARiLW9LmiXP3m0o= +SHA256-Digest: MXZF6P4nnFxhgzX20PlV6o2Mdm3mHVZf8LaJ/nMdEnM= + +Name: img/flags-of-the-world/eh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pjjSNSLWGBlkimoj2No8jeSC2z8= +SHA256-Digest: ZgQdpoKhd2nKnPiLTGBy4XxrAUlaja2ocfM5XS8Y3TM= + +Name: img/flags-of-the-world/mu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /gst9bLSKX1ZBKMFk8vLinBLhjQ= +SHA256-Digest: 80hzNHFif9AwJ28eZKtkZGSpirjly273ubzc/rTOjIk= + +Name: img/flags-of-the-world/fm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: cQB0/gS9oWORIaju1Ezs7TBr5KU= +SHA256-Digest: iGZsjdtT0ra2urFY3Vyx8burgRRx/j40Y0G1AsFn8CE= + +Name: img/flags-of-the-world/no.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: sKWl3fs9BCc9iEu6Eum/lkUst2M= +SHA256-Digest: Y44WJPWC2wMbMig0rbaylOIWbw0cecueRiQPYUFpOvM= + +Name: img/flags-of-the-world/mc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gnfAl1lg6riYLuLLKsVu9rA2DhQ= +SHA256-Digest: YB5HKh/EzpexxCnmZBHGSFKI9GoSbQwF0soohiea0w0= + +Name: img/flags-of-the-world/kn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4fOwXb//tK1/fcz/pITNnB1JYwc= +SHA256-Digest: YepvbpNSlXFsLOTlzekmT7sF297SvccRduqFhBgTC4Q= + +Name: img/flags-of-the-world/md.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7hd9Wzg7C+MFb9GQ5DYmSomM1SE= +SHA256-Digest: Hh8UZkYq3gl2vM44Em2G/xSjn8j9hcpgpXZZCWXaWE0= + +Name: img/flags-of-the-world/se.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /En5T3kxNDQSJwUWbH8u6duKqZI= +SHA256-Digest: rFgEDYZVvtp84hcFBr8SiRh/a9I1fZBzCNsdF+dUDOY= + +Name: img/flags-of-the-world/in.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: IqDhNFgH4Te372NpudlkZHfY+1k= +SHA256-Digest: 6mh9DdtGoOvmxmblYPn/glIS1iiD1zIxz1p3mLEznzM= + +Name: img/flags-of-the-world/cw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Y12Tln8BGaK2nle3BZx2vhI1+Vs= +SHA256-Digest: ONIYyrAPlZzuPxCfR9VWE2Q7+mBVeYsa3jHmTU6uF70= + +Name: img/flags-of-the-world/bj.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 3x0FDisW5bsiikzbli5LcuDh+VI= +SHA256-Digest: WByXRswW9tYl9TH20Js1lm+XPEUgvzL2F9hhcGbTuuA= + +Name: img/flags-of-the-world/uy.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Up07WpW2wxjc1MHMivCYziVxu2Q= +SHA256-Digest: NlrVkGL5ZEQCQMN5IXIV0Ln/YDIeC7eWm4z2/XJfgEA= + +Name: img/flags-of-the-world/pl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: obK68Rj8ng9qxATiMtz2kaHw3sI= +SHA256-Digest: R/5oTvikDPQEs91DO9EEx0zKTvYkkO3eWaKWQ2nk80E= + +Name: img/flags-of-the-world/fi.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Ent15s0sDknuDURNBMCjVqTLJ6o= +SHA256-Digest: gaZUKqcHZQL3SEXDD/UuypGQwG5QsWrq6Evp6jSziJY= + +Name: img/flags-of-the-world/bg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uW5ktxTFWbK1B5Bh+pMcq5pws/M= +SHA256-Digest: Y8nsqRH4jqcAH0WrIDNyKMwPnvd4wjSfxpUJnfUH/18= + +Name: img/flags-of-the-world/vc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qH3fLI2xN53BEKK0QPgDZ9D8a1w= +SHA256-Digest: NAxPYJFxz5NMsGA6kTgdkHjq/8BmwZ7oC6WQAt4Ltwo= + +Name: img/flags-of-the-world/sy.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nTIhLBFPM60HnNRSuJHdCrqvQNg= +SHA256-Digest: ioXsDguVq3SdhlF0lr4iyisev9/YzQOsFyD4GkvKaNo= + +Name: img/flags-of-the-world/ye.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZdBavwPZxLfSbUebkpNMT/33EDA= +SHA256-Digest: aeQz/7oPzrkTpQif+WIfMQAtxhBGX3eVmFFbdsTtyGs= + +Name: img/flags-of-the-world/bz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PmgOFgs1GqBd/Zwm3V50S7HDmyg= +SHA256-Digest: H5hbO6GdI97LS6M7a7k/Bz27X406mav6F9zQV1Iji4o= + +Name: img/flags-of-the-world/lr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VZtgcgv3oNDdmBsFfbpm5aMyHrQ= +SHA256-Digest: 1wtjGnTm+fNwtckNdYLPeFG91lGxydn947HXp31dwHA= + +Name: img/flags-of-the-world/ck.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Xtqbn/uXOFcoxJ1iUjKiHbcNtu0= +SHA256-Digest: ek3NtsI+sh3XSUfVQw5bzUBDiBPGFKqdjBGw0UgNHYw= + +Name: img/flags-of-the-world/cr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tqkZNFTpJ1tMAtyzT4JwU8h0udk= +SHA256-Digest: WQUurutNOA49zlIESh6P6WPyERr3a6y5q3nJekxd3Zs= + +Name: img/flags-of-the-world/gh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NyaXcwg5nFGsXvEIRRRLgkQPRiQ= +SHA256-Digest: hDJEOhLmy0sSg74HMctZqDJzP9Wa6M1jYFllhCrWIFw= + +Name: img/flags-of-the-world/hr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: I4dbsaHB3VMmhI8vqqs1K0Zc4Fg= +SHA256-Digest: L7ww2JvhNlpJ+CyVnIsgY5pJiqZLOXKmGuV4yR6tNpQ= + +Name: img/flags-of-the-world/to.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: e4QKOoqnTWOMKLbEwcxyzeRJYVE= +SHA256-Digest: JGCXvtFAAt5SnnmsQSP0O5adqWxae1AVE3qNoFXWLrI= + +Name: img/flags-of-the-world/ht.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aS+emQ6jUmBorQs4u2e/197BP/Q= +SHA256-Digest: TMrNWALW4cnYOYJbjefTaFYSBcSmgybUhIIy+K8lSYs= + +Name: img/flags-of-the-world/cy.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DtCWn3Q+VGLaam2DDbHDTh2yrxo= +SHA256-Digest: tLPv7k6yTJ/+P2dQLbzavLTQZR0y++HW+7StuuxAfRU= + +Name: img/flags-of-the-world/al.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Nf5e1wvCEg8+cC9pm9cGXhOBJsA= +SHA256-Digest: nbGKVH/BjmsvLqr3Z5UOxF9CW0JiKbs50Qw79/juGkM= + +Name: img/flags-of-the-world/im.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eckbFyUk7Hj1kr2nW2LUvvyfkA4= +SHA256-Digest: exfHlJO1h/WPFzkgVEVvZEkbHOREVCuCOU2qY41xQvA= + +Name: img/flags-of-the-world/lk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZPhdkQIrIZhvB1uSMkQV7O17z34= +SHA256-Digest: n6sc/6xYZ2vBCpjDMfs737M5SsQkr8aGQbl15akdzps= + +Name: img/flags-of-the-world/nc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9aLjhz4bzC2dIyRLdC7xs5nLzew= +SHA256-Digest: ONcx7oh1PE9/8w1VSa7Z/ybq7+FxSId/ICIy2B8772k= + +Name: img/flags-of-the-world/st.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0YpSK92UuM80bxyTvX8QX0jiPBg= +SHA256-Digest: TJI7moavlKF6vtxp76M9Bi0tKFm1s76sh5DmTEwOoHQ= + +Name: img/flags-of-the-world/gl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qX4FQszg/VsXi6TWxL5MLadSgi4= +SHA256-Digest: sxKWr7+f4d0QgayFl2TgclVlh6kanb6QAqfmABl2ZAU= + +Name: img/flags-of-the-world/zm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Re18zHhQuQiHLL29cF/h5vYPL5c= +SHA256-Digest: Qbx6vvqveF/ufyZeVyefFvM0IAzFl96zwdBkzsC+JNw= + +Name: img/flags-of-the-world/ge.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1VDyNNsf7F8tU9ObdrQMuABtLDM= +SHA256-Digest: LE7MWu416mR4PyOvSDIJYJPiaVtKZ6GcLGxJYTaaKho= + +Name: img/flags-of-the-world/vi.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4PYciXAsoFeWmlWjqmSNSYVFfX4= +SHA256-Digest: NCaheBtzj5jyRGLpjWW3IekHHNKZ4+iXAPkijDNEM9w= + +Name: img/flags-of-the-world/sl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qmdIDoAd3gqAPWWBxC3OhEUj8a0= +SHA256-Digest: Fy9pIn6Zh3ZHH7DADQRK6kXG62GNQKW4Fr9kr73liTE= + +Name: img/flags-of-the-world/gt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: A4oaUU4HQTzgVdSqs2dYNk+mieQ= +SHA256-Digest: vM9XrXShNQPqBGlsvgNrpIOqZCeyv6Lvv+BUQWwP+3E= + +Name: img/flags-of-the-world/dz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: X38RpXLg1fWdwWkKab36NSfUtts= +SHA256-Digest: gCPn5Cl0BdjnfJVy6LlvS4o4NnCzmhB2oXSFrb3ZlnI= + +Name: img/flags-of-the-world/qa.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PyCVs9O18SQLEYAn2Y+qgQlBwQs= +SHA256-Digest: e5aVbm9PB8yTmXrvMu1erAbpT3kPeY1VJmD+VG7hG0M= + +Name: img/flags-of-the-world/az.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NJIV7NeRagLj3THQOYG/gQolaLQ= +SHA256-Digest: 1hwtWYDTjIkD15HEiEsOY1rwng+zGKCOWe8TEJoz/2g= + +Name: css/dashboard-common.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: muYbP0RgzKF2QXa6Ul9LGLgMLXs= +SHA256-Digest: kruPxuBkEOc4XeKFI3M8z//qJXr7gTEWm7liL3dhorQ= + +Name: css/dom-inspector.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6tXD3Oi5C24EREZnkzzFAc8ObDg= +SHA256-Digest: 1MLcLLr2ic0QvwQt0DmHg7wN9yeC+gqvmsUEGAmiIG0= + +Name: css/settings.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xeKu95Qo0XdPW8wSRFHsXQKp1aQ= +SHA256-Digest: ofG3IjfZFMS/X91ZOakR4BuZKTmCfavxAPqdVVRvvpk= + +Name: css/dashboard.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9koMcae6HRkgp1b2mCORrdNBXbE= +SHA256-Digest: KY4r+T67t5/U+DYJyipG0Rnr7DrLqgWBF44sl6qWgLE= + +Name: css/fa-icons.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: guqKDh8bQD+pXAyjcbAp8IUojDc= +SHA256-Digest: x5L73HBwt/ufaiU3LAsESqUd0poiOsIFu+UL5qThQxc= + +Name: css/support.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iXUMk/pJl/HKYnCfjEr+1MD8MAc= +SHA256-Digest: C2lnfJontdOli/MKVqaarllX5k5brJ+t8dBCw+Y1C9Q= + +Name: css/common.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FvLA2LrM0JxaOnGPQCf3xcj0L4Q= +SHA256-Digest: 6atjvEzbeIGlfQN6eT3AfpdU9ZhSUQeCFQmq87yhkJA= + +Name: css/document-blocked.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2GP1OFJTCsf1qXPB1kL1seG5beo= +SHA256-Digest: eaqQ0Gs4avYmPHpewwxgXdOnx21eHPpax4Vd39bej74= + +Name: css/devtools.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: w9+EjOpdnFIEjZJzt7TCrRwLFzs= +SHA256-Digest: YO8fCS/V5O1ueOMQnuLUVfnCLMareN0yv7QwSRrsLss= + +Name: css/logger-ui.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /XrJERmvrDBj5V+hMMrVGXBlb3M= +SHA256-Digest: l1Jii8KDbC6jxB7R26aJ4GiztsqR0ZdqP44QN2iktyk= + +Name: css/epicker-ui.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D0mkW7aiDzDDwnWwUg9+2HMGdmo= +SHA256-Digest: Cv6RKLNLlY5+OWA5VSduNf/CGftitkb9OZS6mtjv/j0= + +Name: css/1p-filters.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 3rO2+jzuPzDduApNCvPAhoYW1IU= +SHA256-Digest: 0SD5SsSq8FEi5Y5PScotlnt6iKmEUJzIzPUQcw0ZBm8= + +Name: css/cloud-ui.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Kp6Co6dYdGhOisU1oTlQe3W/jok= +SHA256-Digest: kxmUCA55Cl2RRQ9N9ube0j2c1ZTXb3ftBKYfHgAFPPc= + +Name: css/code-viewer.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YPcHEUHoMITaLMJfDL4g5mhi4HM= +SHA256-Digest: ghFCxtmUNYEgpgBgIwb7NO6eyZbuV5uuFm2RZdwHDSQ= + +Name: css/codemirror.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jtvPzjEo9HtcNOG8WcGg02m8xRg= +SHA256-Digest: 07Ae6hR9kJUoFxKpW5Zej3N9IyPie/VjCjIZ2qnsR3w= + +Name: css/3p-filters.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8AeJcyfrfQ6n6fG+3PXZSN0ukas= +SHA256-Digest: E+TsftWXtYWEAJBjS4fqBQXNZAWxFEBtnu/2RtDCTgk= + +Name: css/asset-viewer.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: EVFkxzPX7Wo6w/hXLz/1kQ5+4iQ= +SHA256-Digest: OySBQSC3UDyaAIPwwW7mtSQxaIz8bP4fkQAUmZXweKc= + +Name: css/about.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ab+vt5uxYLkfO4O/ByNK7QkOJXw= +SHA256-Digest: V/QtQofTGNP7zD4mIs4dZIR3kQu459vfG8AURDBZs0Y= + +Name: css/dyna-rules.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mV+GSC/9ZkxtbC7kZYLSBd0VtVo= +SHA256-Digest: 0OuRRj3nAPILETDwEDgc5u7MAd7bIO0Qa6+AbUdcdT4= + +Name: css/logger-ui-inspector.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nhAP53tD5LdbVCbdnA8GPDKLXUE= +SHA256-Digest: Sr9hzO9meAZTI2aOckgGapHlfnMGjobnJGSA+O4ENIk= + +Name: css/popup-fenix.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eQCxIB61HzUcwdS/nnwbiobgQE0= +SHA256-Digest: F6iC1rFUuAVgJ57Mmng45n9XUbmfm1owrCOQMFKtwcc= + +Name: css/advanced-settings.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Rg9jGTMOlyoDTSXShZAEmVqzV54= +SHA256-Digest: fPKxUmsvmUDIQoek3r7dgLkrt/lWRZvBYw9KVXNsMaY= + +Name: css/whitelist.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Q3/rSH61yhSzxz872E/AfmEOoCw= +SHA256-Digest: otpDG66BCBIMH/9rbt2iaZhvKdhBEn5qES7Qz9KOaqE= + +Name: css/click2load.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: LgE++ij0KRfuBzq6iebmwbDjO1Y= +SHA256-Digest: dbgbrRvtTnNF51boWNa7/Ovp7f7PqhgOAwez+hLhcn4= + +Name: css/themes/default.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VnlTUGGxMW29kciBuvUwkCq18L4= +SHA256-Digest: nAxvCAjPuwkJjE1sKavLIBh4YX2z/GwXw9Uf/+hvMl8= + +Name: css/fonts/Inter/Inter-SemiBold.woff2 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nMKxDUGGtjyNkL40YGmyARRRiXw= +SHA256-Digest: XLcQPk5gWYmv68A9mJx5IB5UshtRg9szmB9w25F4owE= + +Name: css/fonts/Inter/LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5fdies0+OEjILN8PKPfOYr9t+BU= +SHA256-Digest: gFelPP0IAXfbs8BAEpK65ZX575DzOoUdRpjvIzDjrUE= + +Name: css/fonts/Inter/Inter-Regular.woff2 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: t6C2++vEDrKbds8TXEt75QuYG0s= +SHA256-Digest: 4G9rG8VTqupORmgCPtCrChRxKcMQf1Ebx9A9NhsK4IU= + +Name: css/fonts/Metropolis/Metropolis-SemiBold.woff2 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QLDzmDoPR1hAC9B/BU72PMEDOlM= +SHA256-Digest: aVhw0VaJwE91lV1vXD48A4QdQ1HUQzL0BJq7D4JdxuM= + +Name: css/fonts/Metropolis/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: et4GCm7QfELYtm85MjO1suZUTK8= +SHA256-Digest: UAvwKeM6VZ8jYxqXwtcMFCvYfRKGPAaofj0aVgKDdR8= + +Name: css/fonts/Metropolis/UNLICENSE +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /wB84R8/95ZPGlsEICxOlbXILIU= +SHA256-Digest: fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM+U6Fw= + +Name: css/fonts/Metropolis/Metropolis-Regular.woff2 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SLtMsKmburkHSHITw760IRovVCc= +SHA256-Digest: 6SDmsOeYes643zJlbQHUQFfiwIZGcWIC1ZTga1AQrnA= + +Name: lib/punycode.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NGJrrELOsKSN8CxpBfdhHkP1VTc= +SHA256-Digest: MpJJhWqCoC9p+y2Sn4ngKu+msEzKTvajub6/pI1ugkw= + +Name: lib/regexanalyzer/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: dtqOOYchUOeoE5c8uYX+UxllfjE= +SHA256-Digest: nHqMa2l21WmW/BTbkVViv1OkPl1TMdkOTGuQs/H7scw= + +Name: lib/regexanalyzer/regex.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UKW5A4ZzGMK5Ii9x28Zz6dpF+Lw= +SHA256-Digest: UZEUnrJXf6t6Z+8Qx7s+Flx1x7JCpPnVIV0OdYmhQcs= + +Name: lib/regexanalyzer/CHANGES.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gpzJtjwovpLDLTeM4JfJbpkFLzI= +SHA256-Digest: rMANQkU/7hCabm4k33RO6zMhTz+GlruipynTX5bp5nw= + +Name: lib/publicsuffixlist/publicsuffixlist.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PgMYRleEMGQYTFPkXx8SYlDwNYA= +SHA256-Digest: KCKIu0Sk/QqM8hV6tk6oKWOCDM5Of9VIPs3SZuZ1Xus= + +Name: lib/publicsuffixlist/wasm/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Gq1+cPul1jyTgj539R2IwKluuTs= +SHA256-Digest: lIn2BUoWbJU70xuz5wH9JUf/sELVD4rF0ZHkaOFSAMg= + +Name: lib/publicsuffixlist/wasm/publicsuffixlist.wasm +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eiW4nGK5lXkajEz8r6yF4PPrHic= +SHA256-Digest: LyjWWc/o7iT2eselm3f+Hdulj56HVfldwlQY5sr2BCU= + +Name: lib/publicsuffixlist/wasm/publicsuffixlist.wat +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qyp/ExBXQcv7UNoITRThQpDMtNY= +SHA256-Digest: xfeExoAsnkXnMGrlxWyyz7yuLnyPDr0GgogmN0Efd08= + +Name: lib/js-beautify/LICENSE +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iqLfBE+JAwEe//TSsKeNo2tLIKM= +SHA256-Digest: KClxZ3Xf2sRUZ9c4TY6xvKoa4YaZTu3KD1E/sJA4wTQ= + +Name: lib/js-beautify/README +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vSG0VmU9LFe8ZFGvaMts02Z0v9U= +SHA256-Digest: fAkL11yFefVyv64k+RGe8KREQ67PcV7ygi9WXPizjTQ= + +Name: lib/js-beautify/beautifier.min.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vGmFDzIN/QbZ07CnBhSYt/Io5+0= +SHA256-Digest: jlIsJcJqkOQjBaJicXhYpvFSQGBDGNV7vS9hmCYcX80= + +Name: lib/codemirror/LICENSE +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xDV1SZkf1wkNCstoXuFc+yohV1A= +SHA256-Digest: o/L+Ksa0caqAxzfF0oPdBJvckDpzg17m1NLKwC/dU78= + +Name: lib/codemirror/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mJvq9ezhW+5B8ypazBe3WA3l61A= +SHA256-Digest: 8XXAJ2hANl3l3fkUBIyGcsoO5knKPdDXObsdmA3793o= + +Name: lib/codemirror/mode/javascript/javascript.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jiUCRuD2wpRCqQjoaD+EUfNZlv4= +SHA256-Digest: XxB90cNdnOuUFQjAE56w4OBTdMu5SHChSz02/Ki3oAQ= + +Name: lib/codemirror/mode/htmlmixed/htmlmixed.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: by/7BxupNJvB9yL3zQLeVaG5QqA= +SHA256-Digest: km7gfgjhuaEXSSLiRlVpFdE5a4N0ESY9t/mxMg1rOIY= + +Name: lib/codemirror/mode/css/css.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BBX0mzV0I1V4oCfbTh9GDsf8JLE= +SHA256-Digest: a3Yrc3Qc++OxgVCk4nAsT6B2IvrboLQvxbUiqpOXNkU= + +Name: lib/codemirror/mode/xml/xml.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mOtAgFKUI3dtthQmbcVPaG27o7c= +SHA256-Digest: 0Yg9o24xI4hYyfU8U7GzhNFz9xmI/LTyK9H7a7GVWHY= + +Name: lib/codemirror/lib/codemirror.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: flvVSpqAjeNr4NmCsfwX+cD5sc8= +SHA256-Digest: 5fTM07R1KcdRuHzpRVWGxov8vA5EmDJDWE1AisGOsZU= + +Name: lib/codemirror/lib/codemirror.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mQ4GGVAUGEckoRjM85raPlrYzlg= +SHA256-Digest: ylWkFzi+pmuVQm80SJjUJvNjzXmRc6+naSkH2xWL5+8= + +Name: lib/codemirror/theme/night.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: l1diAne3DzzxBqivL5T30+fMHfU= +SHA256-Digest: DF3eQXEFl768TkITJEuIi+d+5FHH45TYo6LqmohwPuU= + +Name: lib/codemirror/addon/comment/comment.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5mQzC27rAIkOSSOpHsAF3K0cwfw= +SHA256-Digest: cKDzw5t67lKVtlZNh7D4iARLmVm7+AhhGjqzXizaev4= + +Name: lib/codemirror/addon/merge/merge.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xbMvg3Uxjx6eSWVAVpUf5Hhx3rE= +SHA256-Digest: BZOB0QESGE77WpAGfDlvsk4lepfw8RkN50Ck6uu/4qM= + +Name: lib/codemirror/addon/merge/merge.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BdJN+Acthp7N9PnFd/66ramvPV8= +SHA256-Digest: V1bj2YZpwPg+/BDQwbyL+PRQ47kzxkEmwqueseosATk= + +Name: lib/codemirror/addon/hint/show-hint.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eE9MHwmhm0gtIkKrl+i+NX7yVUA= +SHA256-Digest: 9PjI1IwVXcv44E37KbDVAJdEYNCCBK3+Ddo757s6L8g= + +Name: lib/codemirror/addon/hint/show-hint.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mca75Q6b1KwpVMH3dxtUgThxOU4= +SHA256-Digest: pr3u1BT8rPV/xYTr7Ex2tbR6WClKjw36LSQ2Mb4Jb/4= + +Name: lib/codemirror/addon/scroll/annotatescrollbar.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ptcDTWBcJu7IWBnu2ihb6ukfw8Q= +SHA256-Digest: BA8j11u6Ahe/x3wLjxGkc+fwS+BWttvHCMsltK6Nhos= + +Name: lib/codemirror/addon/search/searchcursor.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PHoM0BkXbBcJhhrTLXqizsLThgs= +SHA256-Digest: SHh2Sh1WFMnvXvPxKjNUdx+VUlHHSfdPJGbJLiO8Cnk= + +Name: lib/codemirror/addon/search/matchesonscrollbar.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fQCC7YgR6D5d1fH4CcQ8pS9074k= +SHA256-Digest: 7k376bbRF3oe2V8vbJRGVHFlfWW2fmcZTeUdsG3Hdfs= + +Name: lib/codemirror/addon/selection/active-line.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: h8zGR0yeGFaaBHazUcrF/y97pkI= +SHA256-Digest: iohiSDy7CbDI8RU22sh2ZNTkIQb44IjCHHCHHL4oZrA= + +Name: lib/codemirror/addon/edit/matchbrackets.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CK5efnf3KzHazyh2kGF5FHqJPKk= +SHA256-Digest: RoNSBt4o9mmbhuzIv6XJzAatiSCEZAvu7VU9KVM4m1w= + +Name: lib/codemirror/addon/edit/closebrackets.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: poMvVaBZrJe2ALvER7rmxPGDrf8= +SHA256-Digest: XtnJbrLUohV7ied1nRSf+IWJsxgDSMl4NUtlBEc5osI= + +Name: lib/codemirror/addon/display/panel.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8H+OVJqqvPFdPxzxt9EP2QP5dPs= +SHA256-Digest: B4HMKwieyGEogqkT7lH065VJFcS+H2YKGVzZoOktVu4= + +Name: lib/codemirror/addon/fold/foldgutter.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Dlmn9/hdncNS5xHRI5R7F5L9lVY= +SHA256-Digest: V27800C3cLYNd9jCnp3za/WFdjkb6rUbQ5EU5O0BrFY= + +Name: lib/codemirror/addon/fold/foldgutter.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9r2hAl5XqfavzFo+vZR0x3E468g= +SHA256-Digest: UjqbKBTcJwani3fXnb3B6UWguF8iEYAouMsTn425SKU= + +Name: lib/codemirror/addon/fold/foldcode.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SX3N5I2sM1cm4Wwb8UMJFBczXfU= +SHA256-Digest: eHCxXsZStfhMVmmDh1UQZwVz6RDWmxDTohRrwg/Wifo= + +Name: lib/hsluv/LICENSE +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9EpmIaTmf64s8axEwlRwIxjqDjA= +SHA256-Digest: ooENME2HHVvLKzAtwlzfgWQVX3k2V+TPWwyX8kzhQ9o= + +Name: lib/hsluv/hsluv-0.1.0.min.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tctLsR8OWuu1vv3Z/zbRSspGWl8= +SHA256-Digest: eZN2TVCBmW4/KbZChw7FjU0ETWBXAWq6D52pdFpuIVg= + +Name: lib/hsluv/README +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hgP2zTQMef61VxxNvQZBqdQ5nSI= +SHA256-Digest: 2t8LWJhYAPOH1Oi7MqPLhquUoQBhnZybhCq/ZweQvRw= + +Name: lib/lz4/lz4-block-codec-wasm.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5mwISNaTpl2BkwLW7JDjRM8Cklc= +SHA256-Digest: +Qphr0G0IYFFrOeCebhCzOUOrAz2w58PaiLzrDAGCGs= + +Name: lib/lz4/lz4-block-codec.wat +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UGN+7EiPbKwxrbfUcaCfpBXkc3I= +SHA256-Digest: F/wEI6PpLS+lBZ0swr/OlFw0RnDBmUyqXrkpP1yiYoU= + +Name: lib/lz4/lz4-block-codec-any.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: l0Scy8Fidk1D1YKNUNv6WT4MCXY= +SHA256-Digest: 1PE3Hn1hrgK4RMiRGqzCVl7xsGvKq80YdSfmcqCYeAI= + +Name: lib/lz4/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: maGlsJFBR/NLC3nCbC7GI39oI/M= +SHA256-Digest: W9rGQ8kkOnO2DQhMdGYt5G3Is4Wa6M6DPshO3JqiIkg= + +Name: lib/lz4/lz4-block-codec-js.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fdidsebbmsdhOpr4WunLHgcY+Hc= +SHA256-Digest: llfcDBy/8grqIeiTiitZKXdq9fslZZbJnC+1p52xFj0= + +Name: lib/lz4/lz4-block-codec.wasm +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Bx6p+aeNJMczRO9NSAsnsoXMqjk= +SHA256-Digest: S9ppR6BJhhhVLLpTqzeAdF/TTMGg2EaW6DoFR9zWis8= + +Name: lib/diff/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yaAHmix7fIZJ8xbjHcPCtcKrU+o= +SHA256-Digest: 9Mn0XXAS9gaUHRtwugxN8ONkfJ5LGuLKllvyd6Yg9EA= + +Name: lib/diff/swatinem_diff.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6mzEW/1mU4cdqGpT7MmY+R77suY= +SHA256-Digest: FnUWPrUUg+lCCoPPNcjN8rtCO04YnRHXAJwcGz7bmdQ= + +Name: lib/csstree/LICENSE +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QSKeMDmhW9KijrHTlQYI7R8U71Y= +SHA256-Digest: vh/b+Gv9LHLYvOO0b7KLJN1eFHt9KZyBDFmVCd3Apm4= + +Name: lib/csstree/css-tree.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XmdnhBsFof/uCxHBfbO9usN54n4= +SHA256-Digest: 7MRQf6yUbL5EKWLhG7BYGV2+clRczkLzQzioNybsVuA= + +Name: mozilla-recommendation.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DNw65qt+NEWXcBVB8DOTqh2NYV4= +SHA256-Digest: UPnRNCQMP2eD9oGcsJ41+brng7jRqIz24s0jPgPzxAE= + diff --git a/android/app/src/main/assets/extensions/ublock_origin/META-INF/cose.sig b/android/app/src/main/assets/extensions/ublock_origin/META-INF/cose.sig new file mode 100644 index 00000000..4ddb7961 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/META-INF/cose.sig differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/META-INF/manifest.mf b/android/app/src/main/assets/extensions/ublock_origin/META-INF/manifest.mf new file mode 100644 index 00000000..e93066bc --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/META-INF/manifest.mf @@ -0,0 +1,3262 @@ +Manifest-Version: 1.0 + +Name: dashboard.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: S9on/fO1HQFwztT4UJx4eKOM1l4= +SHA256-Digest: CqYknE/ryI3VdbTTqXDjX3K5NYAvCuyDAYYYe3aP0mY= + +Name: 1p-filters.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: OVLu/HNTAoJ/FEnAnVHDUE1Vcu4= +SHA256-Digest: EdCkNWD0FrEkMBI++dLYWwXNCT0Ks0BixGBWRqCm6+4= + +Name: cloud-ui.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bfxounj3n7lZs9v18CNXk0ZMLhU= +SHA256-Digest: kUj7z6ViBYLjdNRQQxseihEXpikwU2+TucoD6I7GPXE= + +Name: managed_storage.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rPFNu9LLHrRZdTVMhHnjb9m0bhs= +SHA256-Digest: Mejf89/XmYZ9poJUaFo66BdGDb/8VR8rIOdfyEVKIJ0= + +Name: dyna-rules.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: w4bA1aXDeUIlrN0xO2Yvutk2+Q4= +SHA256-Digest: L9n2CJHYTlBPzyISmNT4KYkkeZ3uTJvA4xYwTbW/8hA= + +Name: code-viewer.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ySuz8/CXCZE26z/JRSajnrnDUOk= +SHA256-Digest: MGqvqSfgj+DVtD9s/oipxXnafsYbLP1SgZ76kgtsXX8= + +Name: settings.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aq+fXMfOXfPnai+/08Jd0/CB7Zo= +SHA256-Digest: eQC3G3H76hKWiXie5AjdvBOYzGXQHIm/oC/0bz+KS0k= + +Name: 3p-filters.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pGu75it+2U3NVSVqnR/SuHKLG8Y= +SHA256-Digest: 0/ksEE/1xHhdCumjYExhnYNxtbk4qUgYykgQp0Nx/YY= + +Name: devtools.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4VEH67m/FUVmaSd4+Sm78K6rSuY= +SHA256-Digest: 188oBoiG8K6GvCnKmD+CipyCAN+nA9VYJvGbpsuCfHs= + +Name: advanced-settings.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4FCwf6hntEmhC6IaU+aYND6gaxk= +SHA256-Digest: iEC/oJFnDclBpmOqk3ZWgVzmACyGsKqQGfkDwZU6QkE= + +Name: no-dashboard.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1XuyAgyfbVcocbdexASFqDjLN/g= +SHA256-Digest: SDlt0rkUxoWILP5H16nEGmhMm4VEb7WMFEDwTrY0B70= + +Name: background.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YJPUID8AWQAiPKO1ZW03oQxqIEk= +SHA256-Digest: Zk4wVACmMtPfZO2e+OS20qTGAhk1Lcrdhejpwx29SsE= + +Name: document-blocked.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yLrR8gQW26Ak3LgeYm2VP16m3+s= +SHA256-Digest: XvbU1P8KQfSgq82W86c1qPp3LSIjA9g1Y77VYTrLWEY= + +Name: manifest.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nO5wTu0BH1/9DSYWUem8ljIc3fA= +SHA256-Digest: qTHO+rot6CunoO7D7eeoSaBB0+61pQhUO1NJcF35a18= + +Name: asset-viewer.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 92MgBvbopRd7W9m6VvtYrhfYB9M= +SHA256-Digest: SdDIrDc+9DHDhfm3zZ+ojCkagKfnEpRPCT/5R79vC/w= + +Name: whitelist.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9C6lti2uJlIFu2I3KKpjDVKuIL8= +SHA256-Digest: 671DjozGbq9iAwTuAirC9cxl/IHxaExOivemysyNlNQ= + +Name: LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: MwvjZbUUTxY0JGqSEBQH2a1HrAE= +SHA256-Digest: 5z0zhB+UL6c6paY9SmOZzDmilWTbHbygkVSFhC/LI20= + +Name: support.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qzTFM8tPJjqqV0GJuaAXeplBnWQ= +SHA256-Digest: WdsRME6y/Avib+QUysgRKSiqxLLUDuygPQ+C+0ImCno= + +Name: logger-ui.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6EEqnv1trCV4O/Oo8P6IAVJvYT8= +SHA256-Digest: OLXrL3wieyNuA+/9L22PafgNS3fhMYuyC/KQv+NXCpY= + +Name: popup-fenix.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8SnWCVFtM3SkTFKcA4z4AZu72hI= +SHA256-Digest: V/aY9fNS8HqkRCyruMiAsX7bMyWRrZo6VYgEcOhL4U4= + +Name: blank.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: LslgqfZWxhkqvZea4vivGhwsTSU= +SHA256-Digest: GZlr1HWFZfEHCids0ym2IWa48oai7zR/V6mV+Cm+fHo= + +Name: about.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Kq/DT9E8pC9uNQV1biztbYR41AM= +SHA256-Digest: tEcOFZMjoyk23YNcD59kcsPaav8HvSOViZIVRhCbLP8= + +Name: web_accessible_resources/chartbeat.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ts8uZRVwmkgaPuEETaeso5HVcqY= +SHA256-Digest: XmrdFNo2shPAk+d/rmIvJiTMPsHtd+8Kfak0pppiKI0= + +Name: web_accessible_resources/amazon_ads.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2/i3CFYhCBxzHcPMAXSHNAp4P8M= +SHA256-Digest: QZAYBfV12dBmCGgpmc9YixLDGPrOLtBOhWbsjL7ExhA= + +Name: web_accessible_resources/noop.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D06dzjg4yibcLL54gBq8ellbLBw= +SHA256-Digest: zMxeipp61gigTyQlMDRWlL1xUL1zMVUTKEFCtqObpLc= + +Name: web_accessible_resources/1x1.gif +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uAsRID2X/gHFWXyjvnBAbqSPVwk= +SHA256-Digest: r+Dc/KKSoProvOCKSMFNPlnJ2CxgUqttSKIuzGxI8nc= + +Name: web_accessible_resources/noop.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vyGp6PvFo4RvsFtPoIWeCReyIC8= +SHA256-Digest: RBNvo1WzZ4oRRq0W9+hknpT7T8If536DEMBg9hyq/4o= + +Name: web_accessible_resources/noop-0.1s.mp3 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uGlv87ue8dUqhL60/gTQPQD1GgY= +SHA256-Digest: /ITGlnMYuK3mgb+CypPmPs1i4qhDDhptLhI5DoAX6qg= + +Name: web_accessible_resources/2x2.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pk9pPskSspm+lW0z5nB6v1eFJBg= +SHA256-Digest: rfoMfeA7w76j3oC0pFFIgci2KWVo9DpazVzXoW//0ck= + +Name: web_accessible_resources/nitropay_ads.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vlGL13UNyNiZLxUwu7u9pMfh/y4= +SHA256-Digest: GAliz98eLyyLfCsZTrYkkTDrmnrOSljpvVm79ZxiYzo= + +Name: web_accessible_resources/dom-inspector.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zWoK+r9+2T1d8D2XtVKZRF11q8k= +SHA256-Digest: ExH8eoPpwZdEYFM60kcdyOdTOBpyLTk/3QZ/lYR83OA= + +Name: web_accessible_resources/noeval-silent.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: +ZUt1DZ79sD0zm+68guC415KPTI= +SHA256-Digest: vLcQ7X5kKVzI/pi4YRl44IAf/c5lEH0cucMYM5pWRNY= + +Name: web_accessible_resources/sensors-analytics.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UktG39Ad+jQQBX6ukWy/iHaXrPw= +SHA256-Digest: l2tgzamHtkUF2PqjYaNxcg27Wnja/7KAzC8Y1+WkAng= + +Name: web_accessible_resources/doubleclick_instream_ad_status.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5L6bcTZpeUKgNvl88m669wOtIGc= +SHA256-Digest: 7tDcH9tdl+0YiuFv1eECSlu3RK9HNANGviFGMApsVLk= + +Name: web_accessible_resources/noeval.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qPnONejIH00fV2xIlNKjmJWGi0k= +SHA256-Digest: PN1vdBKvQxc3SGBTNDSVllLbnmFjO9yuR1WtkDlzK8Y= + +Name: web_accessible_resources/nobab.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SNARISjtnc1sDV9IQdedG6EBNW8= +SHA256-Digest: G8R7DptkLPzySWl33za6vbJj8T0M/WSyhutcTITMMZw= + +Name: web_accessible_resources/nofab.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Mm8KZQmicvrCjzE7wBxhTumG3Rg= +SHA256-Digest: 3XaEFF/+kBgAdapNmKekV8vca3MpW+oXxVvyMDMs8FY= + +Name: web_accessible_resources/scorecardresearch_beacon.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1xoqCr7efuClB+uG336ZQ5zlITA= +SHA256-Digest: wXc2CzcjuSShaPxy7XKPkk/nLkDPwMHT+1I3hJxZCUY= + +Name: web_accessible_resources/adthrive_abd.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8NqSdNkn7FW+sKA2r4Cl3BWhn1M= +SHA256-Digest: Gme+p25V3BcFf66B9H6keM014MYKoQG1fnbHN2mTHjU= + +Name: web_accessible_resources/popads.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rboFRFTrhctX3WGHPI4gTS+H/CE= +SHA256-Digest: hXAOSI94Ld4urGZNgSc5n3ZQgyZ4GI7L3hQ+VIKgv1g= + +Name: web_accessible_resources/noop-vast4.xml +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: n4B6Y38QCv7UpiwVGVnmkd7Nv54= +SHA256-Digest: 0GxzO6Qrgc1mx/yqvHW1HFkpLNvM3PtqiL8rV9JiBHs= + +Name: web_accessible_resources/noop.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: emdqbGhVNMGNPBxk2OU7mciaAfo= +SHA256-Digest: VZK/ol3nXBjvARbLuZkMEiF4se/l4HbxxFBJoJ2TWiU= + +Name: web_accessible_resources/noop-1s.mp4 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: lQD3nR1je3KAearD7eF1Sc2nEOA= +SHA256-Digest: on7boONLJkipCoAK6U/e8+OQFtG5vW5Uox7eHxzd/tA= + +Name: web_accessible_resources/amazon_apstag.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AhcsMBIG+Ibg/nHjxxCyLjzXlpI= +SHA256-Digest: zz9cQckBNP9+5mpHGHWx4HY4TXiao4J5kOqZ8A7kAjE= + +Name: web_accessible_resources/outbrain-widget.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: oVoJhTMXjBObrSTZFt3z7JwCogw= +SHA256-Digest: in8xNXmLSBjaUPfo13VkFE8QVOaDmeQmr38UVEb1t7Y= + +Name: web_accessible_resources/hd-main.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: RtbNqtPFxIXgLZJDKK3X7eycEAQ= +SHA256-Digest: SaJc/Lwvr+2j2QUeOA88pQ7vSxlQh0lNp7dN0EanZ9I= + +Name: web_accessible_resources/google-analytics_analytics.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0bhsb6Kw0+M3flHZTe7bUOaiRwI= +SHA256-Digest: a0YhhoysWJpgP+EmOq0kL2cmLvlxvayszBpRXNBIhGY= + +Name: web_accessible_resources/fingerprint3.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: crgzDtwnJRNiOdTWdKCH62afP1s= +SHA256-Digest: b9VwPyvdhZMvGK3JnzDYc20r9fCbHd5sEp9GFiWfyCc= + +Name: web_accessible_resources/32x32.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Tqqy5u1dRPQgTAQFpl9H4qfwdlI= +SHA256-Digest: NuEMH3DLyZL5ig51lQ4p896bf9Ib7NQaP8ujdRyUI7k= + +Name: web_accessible_resources/noop.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1ac9n0CoS3gI4x0XsQyJRlHAbnk= +SHA256-Digest: zuDwJyuuhhi7NrlurkQFetetgyWvwAluJHdxOxRuGtw= + +Name: web_accessible_resources/googletagmanager_gtm.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: OksS6a9FZjUzKB9NyXvvrp1hgmU= +SHA256-Digest: tgkS+Hbt0qKkVE362N3W5A0GxOcM9yQrXeuG8ImPryA= + +Name: web_accessible_resources/nobab2.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CtrfCqzXksAwJYE6TF8IiHda3Kg= +SHA256-Digest: PuR/mRFgiKlOHCgNPNYhanVROpEJo4du15Jol+x8/JY= + +Name: web_accessible_resources/README.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: F6ioQvxoHqlocFhweMwwEGCX1jI= +SHA256-Digest: 6cIvyY1GgtdBKxItuPSNDATXl9YBDFLC6vqSrhg8BUI= + +Name: web_accessible_resources/ampproject_v0.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ChcNG1VZrWk8jVAahYRgbM+tE0w= +SHA256-Digest: PvscvPT9KjNhl0epI9GbSG+5MJK53ZURQIThdbAm2qA= + +Name: web_accessible_resources/popads-dummy.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WA1FbtSNdcdieuQBNqB4divbJOk= +SHA256-Digest: fZ6kj8Lb8caAQG1TNapWf4SWfpGxDoI7fiRizlMfooE= + +Name: web_accessible_resources/click2load.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SogoPJgZSgoZ9Bdm4qY9IhwM95o= +SHA256-Digest: gUvsGGIMMwyZPJcNP8IYl20LemZmTYByZXzWNgfwMGI= + +Name: web_accessible_resources/3x2.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: cpBpE6KAgOhr5bET4K0PJ08NVeA= +SHA256-Digest: w/25lPJlykE3TVrur+/g4P55t0UIx/CdJvZ2eXExfu0= + +Name: web_accessible_resources/googletagservices_gpt.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D/VgqWTOlzRfwLK/hOShi46gR0w= +SHA256-Digest: eZL+NoaQkNQ87rmo0YZ6bmDbe3DWnpXmBIo0oA/TO8s= + +Name: web_accessible_resources/google-analytics_inpage_linkid.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: r6UFkaSA1jYgeWY0LTU0eybVo40= +SHA256-Digest: gWuDZnaZgfY+vaSu13ltUe2vgfIZlRoawfFiIOnyb6w= + +Name: web_accessible_resources/noop-0.5s.mp3 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Y0PrKlLsrxIDBNs4TOftF5ysoO8= +SHA256-Digest: dNzq6wEGkL97aPINidOJHJidjQvZzTiKhwliafvgkV4= + +Name: web_accessible_resources/epicker-ui.html +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PIpYHr8X4j9YGfEdTB1v9cGy4RI= +SHA256-Digest: n0eOQttdXIHurCn9oeUxWWu1vRrkN6Tz6fJGoupYMU0= + +Name: web_accessible_resources/google-ima.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2YEySE3Q+8ZXoEfYzBqZi2+yxIs= +SHA256-Digest: S/jjmKRsmCzXLsFyPgP1h4RiTaL0HK7u+3jh+tHUdTU= + +Name: web_accessible_resources/noop-vmap1.xml +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FEyQvTEMa7Ezyh5Fixxu4loxuYM= +SHA256-Digest: /MQPNthsj3FG1LLwwSc8xGKCwsI2MD2rwXLfrP34ZQg= + +Name: web_accessible_resources/prebid-ads.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ovaW0FTksPUeUTx8net3U39jsoc= +SHA256-Digest: TvQ0jjL//fpzmxYPd9C5b8TIYcCJz66EWCdeMENhebM= + +Name: web_accessible_resources/google-analytics_ga.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: lgkxO7lWnWfhM9ZdZ0cxLK4PFn4= +SHA256-Digest: 8FRnZ2dax+/3JFISNr6DHodTp7jBWqHHktgSHLUxEJQ= + +Name: web_accessible_resources/googlesyndication_adsbygoogle.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9CZncEuZriVNYUX2XWHcpRVm7R8= +SHA256-Digest: iUhbR4Vs/eYUuuaWccLKI64IRvBadcHrmYH0Xk4qnDo= + +Name: web_accessible_resources/fingerprint2.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 52UB0JpPF8QvgArnRcAMMfDnw/o= +SHA256-Digest: dVLDQjYZ6yOdYEKpH4Qwy+TymLTenCY5VKu82gfslyU= + +Name: web_accessible_resources/empty +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2jmj7l5rSw0yVb/vlWAYkK/YBwk= +SHA256-Digest: 47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU= + +Name: web_accessible_resources/noop.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rcg7GeeTSRscbqD9i0bNnzLlkvw= +SHA256-Digest: AbpHGcgLb+kRsJGnwFEktk7uzpZOCcBY74+YBdrKVGs= + +Name: web_accessible_resources/google-analytics_cx_api.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: EnyHik/Dpfo+9wLJ6sI0uwjZEdk= +SHA256-Digest: sb24wwxnRL48aLul3knfei8E09iylfCiarGt5a9zgTk= + +Name: web_accessible_resources/noop-vast3.xml +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zcjtsKZ15qRPwpTbRadIfwF6DSU= +SHA256-Digest: cakEunJq44qKoIQluugk6YUEUrXEGhgr3FJqE5ujqbw= + +Name: web_accessible_resources/noop-vast2.xml +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: k6NiOpIhepZFqiTcOw1qVfxhx88= +SHA256-Digest: qPsYGnl7Tki7XSOatQMPM+1l6/M544pRMc6WYzEibO8= + +Name: js/arglist-parser.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: B0xF+Rfh0F3huA2ckgkPeWlSVJs= +SHA256-Digest: V9vfiXBfWdebsgGJyLHHhOpBBTI9C80H7sdOgYzIwQY= + +Name: js/dashboard.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QsriHMz7/bGOIWnu5h7aMFKGfAY= +SHA256-Digest: tAKCNnpCmY+t4Ifostj2pGgITeffmGauERQMU2FRNzU= + +Name: js/vapi-background.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: A1yllNiw7fAYRoUF97qp7wpyKEE= +SHA256-Digest: OyQ4GqLHd03HAandgwTXW1vIFhtd4vyTM21ysBiSgDM= + +Name: js/epicker-ui.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vRzMqzqzfH+izavArtV14/4lE3Y= +SHA256-Digest: jVWpXASdsEKOkSIZQASmTjR9dpTXwg6ahLzLoah2ddY= + +Name: js/cachestorage.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9FtBUwsnjh/DEa3UD2Qn7JVVlJk= +SHA256-Digest: L+euj3PFu1W4l+eNp99YQ97AgGsOiYW+rgX9Cp8QmH8= + +Name: js/broadcast.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iDgF6vuY1699zi+j7xTKUNY4i8o= +SHA256-Digest: g7z7lnn/i+WOE4kbHRcuTHXan76bZDgEOX8kUfCg+E8= + +Name: js/assets.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AMYCRssEQZ7APjwLA59aqAla4sU= +SHA256-Digest: 3KRRz6WGwrd4SvoURG16DN0bFki+CPO/9rkFG5Utb/s= + +Name: js/vapi-background-ext.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Nx2UzypQwqGQUgW3z2mbngfI4pc= +SHA256-Digest: V5gtyPKxUn1OhRaKv1GNVf1sZCJ3iufmGXkrIT0MINQ= + +Name: js/static-dnr-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5VYkkkkrpq5JjxrcEhRuFD5ykyA= +SHA256-Digest: ENArJAxR6TzxAZ6keJTFas9BjR+kqM8UcHnPakBpQ2Y= + +Name: js/static-filtering-io.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uqfHbzilcyRig7zXJ09dnYs6YRs= +SHA256-Digest: vLWtPheJo7QfZaCGKuHEz+HgHSJ8EH24+3XxRmdms/M= + +Name: js/vapi-common.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fj2ydkK/u3JXCFbG5eo4dakaO7E= +SHA256-Digest: Qp+O10wUnHmrSTujo7LGVJsdR5Ta4wyzDPQhmQOb59Y= + +Name: js/dashboard-common.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ANArtHB1Y0BUf2F6A2MQIRKajKg= +SHA256-Digest: G7ftQ8YjcvDIEEFsBs6erehV9v004RiMv+MEJ3qpjaw= + +Name: js/dynamic-net-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: l+n+Ybl84jo6fFWwtbAZDbYG7BI= +SHA256-Digest: o42DuGxW6F8vo5WAPtdbOm/R3NIysUQnrC6ClCcacuA= + +Name: js/background.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gtafP3l59TUN2otuYiQ/nsd5+34= +SHA256-Digest: RkcPo+xdOxonZ7Fo1CHjxbQiZkpGKmrFT5lC936zeTY= + +Name: js/logger-ui-inspector.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: C7hGia3iDLylZzIzBMi1qArVnGc= +SHA256-Digest: cDYMKOQ1nTjEPhj/JWxKm3XnMAJtbf9U1kWHSAbM8k8= + +Name: js/cosmetic-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1o3UA06R2iXJNPmNYmqM/sa0bTQ= +SHA256-Digest: 8ZoK4uhhBrlKuRqttHbPY7F6yCxkV15fK+o1JzTxDTw= + +Name: js/base64-custom.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: y25Z42sr6BeE1y3c0ivHYWr9ZSc= +SHA256-Digest: ktV/yPMkkvwdgkp9mw9f3Cy8QA+Z/ynxiI0ErzQM0pk= + +Name: js/filtering-engines.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7rdMaCsyknlM3PYck0zT46wuoE4= +SHA256-Digest: vJcuy2U5ZGvnNR73aCaaA0kLZBWaMlolQul6JS5kyWQ= + +Name: js/contentscript-extra.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CI2uecXgH3m7iOF02WDVvDY0h1A= +SHA256-Digest: 3446/Mbu1CrOZHrYPJ0kq/3DkcWf3ArZ3Ga7oLOswd8= + +Name: js/storage.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /QJOXEJB4CSJvWY5KmHWc0UM7nw= +SHA256-Digest: /xwSIS950I1DHD+UupVU0OGnsF+gD7JpeojIUzCRuYE= + +Name: js/utils.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BdGvpUTJInwyKLj6uQji2GpWzSM= +SHA256-Digest: urJg5ep27XG8LfFd2n7l59CSDErpTZDWRfoC7RdEt8Y= + +Name: js/scriptlet-filtering-core.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: TmstYZAfRbGuTeEdd/RUl432ixg= +SHA256-Digest: YdYPoRRvtnlpHnjGxB4ibsFwuELQ/ZSGR5OiB9Tv3Js= + +Name: js/start.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YGO1mzZAdFdr6pYAZJYYw46MLtc= +SHA256-Digest: UBHzrJqKJpE2/qCGmHMD/PO5EEh2hbNRFtGuwmFDZmc= + +Name: js/static-ext-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zkk/EFOL90nlnIyu/wi+paDPDGI= +SHA256-Digest: HjD401yRq0uSrqR7w0AEp1ntoCaofomnN+1gaKcF4A4= + +Name: js/static-net-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: m3/41Ea83VsxJaG7Qad6HtMs6Tw= +SHA256-Digest: bmq2Upj3nWjwPp3kbVzVQAfLHCpDdsC16OdeP6wLCvs= + +Name: js/benchmarks.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: IpMGZyhRtdWXvosmeBJXo2Q3qiY= +SHA256-Digest: OsVddIfYeW9/t2n/R4wjiHTLMPEFQ2br6HaH13RxfNs= + +Name: js/url-net-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pJ6KFzsrfB4aB0i2MUkDosY2Ors= +SHA256-Digest: UgZAjfyNQmkMGWheFo4jF9HUDUh3YbjQ45hG3R3hvgY= + +Name: js/console.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: GETPT/QAIy4rPnIXY+8lfbgXTnM= +SHA256-Digest: 2oezsNHi0rRT3YrFk+dnIgvfmUcDIxRjzXcqHp391xk= + +Name: js/popup-fenix.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: V9FztsB3dSfYufYCe+D7AZS1uKU= +SHA256-Digest: JwNnpjIYFCmEoMrUyyH3iAkcPxA15RuKgOZ+5gOys9c= + +Name: js/contextmenu.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JhPKsI8+YPTfop69zgMpBcTIht0= +SHA256-Digest: CS2EHHjS7lUJEhpGNkdpBWBUU6I93osEP58WcIcmJbw= + +Name: js/dyna-rules.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bX5otZDvbcf03pLHadawCfrpUhM= +SHA256-Digest: uw2bflk2K18aW/BObNvIvqbmN06wkFZ6/VHrbBUMRW4= + +Name: js/httpheader-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wrrFh/deuU8ssnF7QAlXsmRpSEo= +SHA256-Digest: Q+HSCJZiR4dUla0SmHMHbSTU1dbFjjaC6dIZQhlv2TU= + +Name: js/hntrie.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mkcZJk82pUfcNKMrrkfk5RG7ZHg= +SHA256-Digest: 71BKqOxGRAhBOREvIzMKggvIxqicUIAXwViqV/enGmA= + +Name: js/scriptlet-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hbCTnCAuin963dT9dsmPjkWlDrE= +SHA256-Digest: Tg4cuAqzjKmGB8imOlTRip7LLTaSvhMAyACJQ90RDYY= + +Name: js/asset-viewer.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QuEDIN2HZHT4NK/rW/5cQ7mDDog= +SHA256-Digest: kogNu4hml0sHO2DDQxm1aA7dLKK2fX+YC07qPCLjCWk= + +Name: js/static-filtering-parser.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: b7X7FKERiorA0F7SlVH+CzfyiI8= +SHA256-Digest: C2LiIgPOx/KeokJdE0bXg9eDUs7RlOD9Vu4qtsOHj3E= + +Name: js/vapi.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: T6fzrdCQU74+tBk903nMA9htPS0= +SHA256-Digest: MeZkRW6NU6qJpJgw9I1Er8Ekuoy4EyP+Og6Hbwuk3g8= + +Name: js/tab.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: EsQjolyFd7eHtenQXmUoqz2gSc4= +SHA256-Digest: vzZnCejp66EukCjvswWTyTANuDZl1dV5sLmhVARCNKg= + +Name: js/static-ext-filtering-db.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 04MBl+ZcSYVMjZXk4hYUgCxIaoQ= +SHA256-Digest: XLPGcupKBH5btGKCTWGTfKt2uiHxfhVaOgLw3x+IbLQ= + +Name: js/traffic.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: +3jbfWFQuVEqN0DI1WWnDnSFCbU= +SHA256-Digest: oBTLHrTQMyotKx8HNJbwlMebA+C/PSnfanIUo1DIaWk= + +Name: js/dom.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: X+gJUOcnGY03rdEWP2P2eJz5daQ= +SHA256-Digest: WBkciH+w5mdSg8U1aP+VBVnbgKgXTSq7U1wkgdIr7Zo= + +Name: js/messaging.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WvbLAUTiWljL7PbceF2zxQ601wk= +SHA256-Digest: 1HSGxatlXPLOW/ve52OtB96qzpme39MwSFE99TGFpiw= + +Name: js/cloud-ui.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uZzy1ZEpx36jipVSV3Ot2+6zdIM= +SHA256-Digest: mVWB6A/DYUPzYvdIUErkPrc2p61mKo05RMr3eMJRCac= + +Name: js/redirect-resources.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: MaDy0JcnqEcoP1RJjvc4Bg95J6M= +SHA256-Digest: iyeTEk83dtPKmia//cubiTtqYot/GQmTAb/pqDhUKQA= + +Name: js/html-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pMhiSDHqmPnmWKPYXbYjKro7lJs= +SHA256-Digest: IgpoqKEAb4xzSZt9TCgBqkVHnNW87iD72y6fykmOxUE= + +Name: js/support.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: cPKgCV3ZfvIMRfDTFi0gDt8uv8w= +SHA256-Digest: xqvDXblFzpD+PxmzHr1SC/sdEKJbmPZewy8e1MZOpGc= + +Name: js/theme.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pmEX21/Xf/K/5tvZ5kC2zOWWm00= +SHA256-Digest: uUR31rmN3354OUxt5p0wY7lRQmQp/TTKUbz/kXOQlmc= + +Name: js/uri-utils.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0TsArnMe6G+ijql0BEncyYWfNHk= +SHA256-Digest: W9dwo8WcurqbdM2GRcmHZ4fHDM5qluq8FXmHJ70nhKU= + +Name: js/text-utils.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D9nuAkEfYge5E2rFTTMAr1CTeGU= +SHA256-Digest: f4P6bwULvAXEP64Y5sujIsnOrFovLPNkl+oMGvYa+Y0= + +Name: js/reverselookup.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mr3K8n3j1IRhoqXUARA+7LnpVdc= +SHA256-Digest: iNo6W6tE30t3+CPM1WpJmL20X86d4+eYgUp+ejXqCAI= + +Name: js/jsonpath.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: oSEBhadok4Jw9hTzTYV0wtB2z4w= +SHA256-Digest: NrgwaMf3/Xu6CQqFUubEjyWo3Nx4oWGWiuTUL+Ii1oY= + +Name: js/filtering-context.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pRhx1hM0+UQMhIRKmB0iuSgRT0U= +SHA256-Digest: jW2O7EATpjd1SQeoy/op26PJIe9IQRi2kl9t4fQwjZE= + +Name: js/biditrie.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QNq6XKOYA0GSlkZ1/yu9clXboJk= +SHA256-Digest: zA5FSkVGKmnrMNYbWpTAtjBPzBJ5IimvQwV9J8maWVM= + +Name: js/document-blocked.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Hwx58F+w0ljxTq+3/O7jOqOTuwA= +SHA256-Digest: iRMDnnIgoOIe8t1J/+xagDKwx2ZKxzxcNuHZCgI2+AY= + +Name: js/fa-icons.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: lrF61+x4RBXVd4Ed4KazZGtl5Lw= +SHA256-Digest: VlEBA+w4vbjJE9iVE+G/dm3VH1z1iiDl31prDSgAutw= + +Name: js/1p-filters.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: TTQihjK2FsTTbveafoq1kz7bOAU= +SHA256-Digest: LTpyLWVB5o4v8P4TvBdICG3RVLaI0QHJiAKXg1Y9JPQ= + +Name: js/settings.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HcFgFEl27GyMePp6tc8AqcyO35c= +SHA256-Digest: +PCB08948JLDqLv6ENKwYUDMlap36IG6A9mDRwrZeGg= + +Name: js/logger-ui.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5djHOIoWN7MfEu8/krV1QSuL4Lg= +SHA256-Digest: E2c9A66EWq7HYQpcNWy1wIVKcsZErAVB1F3vBd/B3Qw= + +Name: js/mrucache.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bApMyx3ChCyw71LnT2Cd0LJ4YUs= +SHA256-Digest: Yi4cl4S9BlHTAyKIx3RWa+ZPYjv04QBMsz129J6GaqU= + +Name: js/reverselookup-worker.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: m/Fq3PYdeTYMrPM+Bp6sR67vIu0= +SHA256-Digest: 8YO/m2VN6c4JYE9zQVIeYVVmgag8rtLjQVEUFx4XrpA= + +Name: js/urlskip.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HgD34iy1HBGOe0TNWXFxgG32hT0= +SHA256-Digest: HXHdr+4wtwE35gPjLHm1rmWvZee3H0thrmUwHXYhbW0= + +Name: js/webext.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0ESfyJhK+0VVaA4OQuZ0XRpkI1g= +SHA256-Digest: l0xf/7xy5Zrtvzj+5KlegEV5qEOnVwzAbaTnsOt/vNo= + +Name: js/lz4.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /MmBqE/9CZnQ2NLUf2QjtIHEVrQ= +SHA256-Digest: KwDBJYVAIX3lGVCqSsc9CZUuvfXog6T95eZ+eDT5yw8= + +Name: js/ublock.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7JZn5MjqdrNEtTSh/mOoHBOrTmA= +SHA256-Digest: 6dw2csqcnH0uBG7jyNLUDEf+VvJjyiGBkQ8RR3mKvzc= + +Name: js/code-viewer.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: E15nRR8X4Bf7Lz3vY6PyHLAwRkg= +SHA256-Digest: zoIgM/T1ef3zaU+q3O8Ia4IEy5NOScC4dzIK3EnPjFc= + +Name: js/tasks.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FJutCPl9gfU0A8Kg8UA1jYbB4BI= +SHA256-Digest: 3+q3Z/2eKPu8DgBFaz095MUCtJP3P6vlguuuz5fhGIY= + +Name: js/advanced-settings.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VUk7vbDsph/ZHj2DxMd0x695v3w= +SHA256-Digest: pkTwlczZ+Z1/cWuC9PsSJtLz6PwjxSUuGdZBQ+JhWgc= + +Name: js/pagestore.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pLpVulMD/JGzxKfblgRvDPMy1No= +SHA256-Digest: mgOEovBBlsjQoURSbtyPFf5lliw2I2n1bwUSLum8K/Y= + +Name: js/text-encode.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: adL5LJy8znbRVaww7dRySBf7zxg= +SHA256-Digest: mqmBbDFtZ1Naon2QyMYxI9P6mxPWu/6gqpz8XvyhN+k= + +Name: js/devtools.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Xt6ujYpNGsYfLCnqVIyvujLR3PY= +SHA256-Digest: 3evQ/qADxl2smz4R7dhtjii1oKURrOWYgjtmLAOZ1nY= + +Name: js/whitelist.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: k2skdA9dMrb/MXmsBR3YV8iOCZY= +SHA256-Digest: E+FCW4t+TPvBuIXrMC9QIM7hfySxGj8uZAfHESph604= + +Name: js/3p-filters.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tiksHPheRmK/Zp5ChG7XaUusGpk= +SHA256-Digest: KUo1ViOD5AIZIq3kwgkTKam5QYa2G6YpfEA96BobIL4= + +Name: js/redirect-engine.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Br3Gjqe4dClsJNgE2W1/luDD3mc= +SHA256-Digest: Vdj75qSolTNkZh0R/taZDTiuuF6Nga+eFsBaPnoD0gc= + +Name: js/diff-updater.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yOWfMeqUb6EwJF+0waovHB+BMDc= +SHA256-Digest: fSkTQcK7kXhYFYwQxpqwAnWWMHIODAKb1KlitUBKlb8= + +Name: js/logger.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /FJLDvPg4KexPrR5R9IwRHfreiE= +SHA256-Digest: 4nsGLTT4QDde+wVZ1bOSp2dHQmpCAcqOSTI+yMLuX0A= + +Name: js/click2load.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /51M6QJp37pAEYQq2SuIbDJ197w= +SHA256-Digest: VsbMj2TLo5ky2djDuUUGBZFhamKL7yTmuaIWlEJv4Us= + +Name: js/i18n.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8Vg9ShJ7lTZKSqsdeRKKUh2DFpI= +SHA256-Digest: J8O9/OZ89XqYUmllj6e/8UeYQLba9Ln+rrQvyG2eCqg= + +Name: js/regex-analyzer.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VVhRf2iTUhqDXNCQqgYht3J9urY= +SHA256-Digest: 0LbiQXJIWYxf2NzkS5iOThfrZVQkEr2MQZCTJR7n8Vk= + +Name: js/contentscript.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ucabMnvVOjnugEWE2sLwovnWuOY= +SHA256-Digest: mkQF/C+ip8fBVk9gkntAPbmuxYU5APOEN4mWwQ/Nb3Y= + +Name: js/commands.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xKvBVeKzy3sHuC1FGtKdxcG9CMc= +SHA256-Digest: dJLAAiP355ytPEoh5KnzY9njBdMzstUzaYOO5fNib+c= + +Name: js/about.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: V0fKw+zhn5pqEAw7iqPt6PRCo3k= +SHA256-Digest: lfgiforXgYHJCIi8mAjVtNABKHP3HaHex6JrOkAzcTE= + +Name: js/hnswitches.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: p8eUAkU7KBAOJChpIiOHM11U3ik= +SHA256-Digest: +1n8oIqAP0yLJIdyf+V13czOQo4dz/jDBGqXTn6Ka3g= + +Name: js/dom-inspector.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yJctMTNcNfh1TFFwB6WOu0eH0fk= +SHA256-Digest: +OW9rH/0ui3wrVPn/E03apA39r6Kt611otn09SgJ4QY= + +Name: js/s14e-serializer.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: J3dIgUhPuICtL51pebtEr+XfUwM= +SHA256-Digest: p2AsIXMvgowWAbR+xIS3a87Ls7exRZunyk9Cn4owN70= + +Name: js/vapi-client.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XKAO0a0qn+HN7aTZx+18JvH5CGo= +SHA256-Digest: gZNgGPtCL04+vME57QLj5yvVpHCZznHCHvNuq/6U+LQ= + +Name: js/scriptlets/load-large-media-all.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Ac4NJ4vZ2weRnRIg9Eq9gebPS30= +SHA256-Digest: t6aTFAQHs/iDsrDXVyJsMSmMWzGeq66M2ORFBRItXoc= + +Name: js/scriptlets/cosmetic-logger.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UqXc1kW5b7qZxgFSc8tiOnwm+Rc= +SHA256-Digest: pMIcJYEfHLXlg3Fss703ciCOftsiHxl7OXZvKRBv0F0= + +Name: js/scriptlets/load-3p-css.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: B1EiL7yGZpmR2+CUWoBvPrLIrvs= +SHA256-Digest: lHM43Wg8gHiITl+nnw1qDY7qQBfzS0btcawtoYiY2ek= + +Name: js/scriptlets/cosmetic-on.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nmYgMX65iGxqrJ8ot7b0WBLu2As= +SHA256-Digest: 8hIq/H+E8YpwpQiTv30P9J+SUP73w5+2RuRdHGa+eNI= + +Name: js/scriptlets/should-inject-contentscript.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: LUxduqcR40KUlLnaRgtCp7f4lZc= +SHA256-Digest: ImlesPA6/FJRDu94WjCucUEguEkrf0Ec02BMBdIe980= + +Name: js/scriptlets/dom-survey-elements.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KN4qg0Ccd22PfMObEKRMIBERweE= +SHA256-Digest: OVRtTNRAQYWch6fePBcoqh55YEvDXvoh2OaQ5rTHEJM= + +Name: js/scriptlets/dom-survey-scripts.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yLYmJNCxsP2TwkxVzPMt6B6jERQ= +SHA256-Digest: LwMubxv19iAhgCTM8b5NxgkTs6mMG6umE8kpbt5BTZI= + +Name: js/scriptlets/cosmetic-report.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZNpzKAsUluUAgVu97Q7TfesrEVI= +SHA256-Digest: TLf0fDHae6MdBd+1GJwm6GYoF54OraBoadH6E3h6DYE= + +Name: js/scriptlets/scriptlet-loglevel-1.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q9MIUq+WcSlfRNkAev7oisudnX8= +SHA256-Digest: S7xm3PTwsK2rXaft+xUIMI4eW7G8Cpmxuje90Bgq9Rk= + +Name: js/scriptlets/updater.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AVG73CWHmboymKn6fXuJPd26pBM= +SHA256-Digest: fK9nMn/2bbG539kNjdXjsTyrQkwa7rrFFdzbDMrznag= + +Name: js/scriptlets/epicker.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eZ+dFn/wAJ74CjUDeHaZRvXMeQo= +SHA256-Digest: UM3nBg8i/Gc4n8h+FZ0S/O8JxEBTpwf1x02aXqECjk0= + +Name: js/scriptlets/noscript-spoof.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ml435AD0IKT/x07Q3o+/4cuBtHQ= +SHA256-Digest: yANCj/kXaAW/dQq0TBpxvCMNzf6yKoRHMKdu1V+OESA= + +Name: js/scriptlets/scriptlet-loglevel-2.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Spf/4BxICONHP26NPWS1YvvEwU0= +SHA256-Digest: GAzrtLGIYf5sUJO33MiIrXDXMFkO3T9aUHC7nsBfQL4= + +Name: js/scriptlets/cosmetic-off.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7/zcpEgmh7+dKeKuLatCUZ/aPnE= +SHA256-Digest: xD1xqLjDi1WtfQGXZ9mkDOBkTBqU+Hv2heAFsvWqL6A= + +Name: js/scriptlets/subscriber.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: J6CT4ThV3TGpxo82m3E8UHtGfC8= +SHA256-Digest: JlKHDQ6rQRkZ/PuxjnywsZzskIyYZZxDkKq/hqhCEvE= + +Name: js/scriptlets/load-large-media-interactive.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aWB3WqHyP/zCD2bqVnAdWOy9Kdo= +SHA256-Digest: j95xaCm9+GogtYEU6C476XUuKTzxzBkeWwY95bDHgCE= + +Name: js/scriptlets/dom-inspector.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vK13D3PcmSm5ZGX7UYbFM6JJAqs= +SHA256-Digest: o8wHnKCBQv824BstjhUGm5myb+YA7ydr7DgpHqdvbIg= + +Name: js/codemirror/search.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: J2NLu2zSvyeppffMd2c6rsS0Iic= +SHA256-Digest: T81P+1ZEK5UOQi2H9cpl/gRix7XLvfhM4qgUC7HrbmA= + +Name: js/codemirror/ubo-dynamic-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8D7ghWkAUXzAUTJI6yUHEXBJBhg= +SHA256-Digest: sKkh8U9Q+5wLdZXbySa123QvKvITmXMZE4qn5BxYUxc= + +Name: js/codemirror/ubo-static-filtering.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wdUO5VN3+g9ZwtsQPm29WN1rTh8= +SHA256-Digest: axRBFZ4bOYG8lcA3LfUqJ53OXoKVrL5yZRzNh82B7NQ= + +Name: js/codemirror/search-thread.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WjxPQBL0ru83xV/gqqrjrrEyB3k= +SHA256-Digest: 50TlFwt7B03QJikEd3l0aYgZhwjzzEPZ4jpedoX42CM= + +Name: js/resources/object-prune.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ircRZ4VaHwKjAjEg5WbmqbeUiPE= +SHA256-Digest: XYU+eC7Rt4jafg3DcgL5L0BPhMq84g3TQJr9RmIzMxk= + +Name: js/resources/attribute.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uk4D5vmdYBdUZauHym1vmSR/FO4= +SHA256-Digest: XbKyN5nAQXbGLz1n+z1mikqEJtrYvWkuc8Jin7ulMsc= + +Name: js/resources/prevent-innerHTML.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tSxSC8S0/3k6xQf0H3Bx0tt33WI= +SHA256-Digest: GHGTBse+uHtfCdWyQc8uyJNjjj+5apPSIYy94he77i0= + +Name: js/resources/href-sanitizer.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YqZHDf+Y0TAQ1UeNBLlLV0r+4ro= +SHA256-Digest: sX32gGLY2HJAyXB2PBDokSJJYXWbYXjLfFjhreLte/w= + +Name: js/resources/stack-trace.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Z+ai1UkvTk8W9Rm5NUVdB7Czo6g= +SHA256-Digest: GuO3cc9Lmdlutl0NinmJTCL5dEi06PDOIGq9UPnatJY= + +Name: js/resources/safe-self.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rceKyyUHgTk+u/w477KG1dAhnLo= +SHA256-Digest: BCzPQ1Bs5hitGgYuKp0gkO94Iu05NhFZQZlUxtvNMW8= + +Name: js/resources/noeval.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1CA3tEPmFLOXCvQNyBmB7kwXLn0= +SHA256-Digest: C0JHIRQSC9WGQQ0Lv9kSwZjeGrsLO2LREYP/a4k+VzE= + +Name: js/resources/utils.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9ogsF/VbU0564we81T22L5Pw9bA= +SHA256-Digest: lqo3Fo1f6Hdh3JyxqW3zgul7S0ZbY+2KImRNpQpZBkA= + +Name: js/resources/cookie.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zNFOi6LlZResNofsLHDkGaxuxgM= +SHA256-Digest: v1kgPMQpAupjc83ljzvFM25dfRQDMb4qPbKznjaqYQ0= + +Name: js/resources/run-at.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HQ6iPjJ2baWEX/xd5a8gANMtc4E= +SHA256-Digest: Etqht5aRCVuLp4K3cSLvaJI/8t0QIPOxsAj8M635Wmw= + +Name: js/resources/prevent-settimeout.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xjyp8sleJ60NRaSxrWTl9aI7Pes= +SHA256-Digest: SlFSxMyXFRg7yeScTk4nqH8CuXjeibccahWGzJzBX5U= + +Name: js/resources/json-prune.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: M//WDs2apqSbY2rI/5p5pFvV9W8= +SHA256-Digest: Ciz3FkejofgdV5A6pVUqLIsImpvwBSvBhtS9M7IAaRs= + +Name: js/resources/proxy-apply.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: RDcCLVSMwtDejfBBfnh9ulGPWeo= +SHA256-Digest: dxyeWinXWDJGy18kRbV29tQOpvyW0cgoIJlxLeWJtm8= + +Name: js/resources/prevent-fetch.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Q4wDBGIPM2j+7q68ZzTgMudmu7s= +SHA256-Digest: SeSJDCUjdzrUa/b8soVugESq8Yk/1+rtdz9YP5ROWzs= + +Name: js/resources/localstorage.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yJusbTV5sR2pSv67IrzgSOwq148= +SHA256-Digest: MlXG56vIuNLDoS+DO8XmqSFH3H0fqOikWo/52krvQ50= + +Name: js/resources/prevent-dialog.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kfmhi+lE0f8vRTmWmApGYKEHIH8= +SHA256-Digest: kE/K4I63LqLhYkZQx+JHQfyA9xf4wkODZ4B/vKGVgh0= + +Name: js/resources/create-html.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: auZlEfpp6MyehLNL1MWkGLWzfsE= +SHA256-Digest: cc0v+LigHsyzPW5/5qx7dJ8kGGF8RwysEj7f4iDETZY= + +Name: js/resources/shared.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uZKWmUw57BzZPhjEeRQYM1zTBe4= +SHA256-Digest: JrBPoJXYEjD0askK3faBCgG78Jbwav0UME37uQAZleI= + +Name: js/resources/base.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: byqgaayKNMjgoBKbyObeMDTjVQc= +SHA256-Digest: XrD1wghmFJ+ZU35klZxRxGb5tDzU/eFoKuBTSkCWpLg= + +Name: js/resources/set-constant.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZAwlnpIdIMg0mte3nvGEy/wKqlE= +SHA256-Digest: JGb7wcpFuJGETu4T5UQhu9exckH57Yl1yx/kWSecOvc= + +Name: js/resources/spoof-css.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fs2sTSGBswrq+RwiQw4/ngUq1so= +SHA256-Digest: 3TCwmIArI+8LRsYtkkLAr0mZem1mr6xUSTeR1/vO4iU= + +Name: js/resources/prevent-navigation.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tBOuruMmwfYP+iVz+maThjA/Qz8= +SHA256-Digest: vXAxsgAXKsoxa0ieS06VpS6JGxCYuDxIOkX4z3mVrEk= + +Name: js/resources/replace-argument.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: F8WJVs6YpHah/E096rGIbJtQGGs= +SHA256-Digest: jW+ytMzvA7mMQaRq/MGcpee/hZHmDB4nfuTfHiuoc2A= + +Name: js/resources/parse-replace.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JAUrFeysAXDozR4mPiJ7Qfj6Kzk= +SHA256-Digest: /KIPI9aN/JBqAoODMOJtESPc5I/NqghrN9ulwNWzjlc= + +Name: js/resources/prevent-xhr.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DYLBawuEqTlqBKlWXfjm5WbMjT4= +SHA256-Digest: v6B2aWGIn6878PgEYswwSCLQuzAd4iMk7TokPqa/Ado= + +Name: js/resources/scriptlets.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: E8LTqyGR1cyPCq4Vt/PD0svYvEw= +SHA256-Digest: GS0YQbDbpYvGA/kLpydK3gB13Ru4ODIUwn9DUuja0rE= + +Name: js/resources/json-edit.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Z9ZIpIgLvs7TlNiAJ9kDcQS6l2A= +SHA256-Digest: AqrINmMYBZ14oCIAUU4wzz3vUc9DSmhiLO5b3Hg/4ac= + +Name: js/resources/prevent-addeventlistener.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NjmeVCDI7C3adXIsQOTt6RtYMo0= +SHA256-Digest: b29gTiTiyTiLuHnh/3Im/xiicwrN1xu+5R2TOeGaWmA= + +Name: js/wasm/biditrie.wat +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WWIDCbt03dvsUucsjEHIN+NPefs= +SHA256-Digest: wE+PhfyhJhEkhUWRY/qpTRp/VizJCdHbaJtvQ2F0Ev4= + +Name: js/wasm/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: F+Mpgi88iybis4fDNj+cofys59o= +SHA256-Digest: 8BSI8acUoGQJWV8kPrj6E5vdtaDol4HDiyF5sdyphZs= + +Name: js/wasm/hntrie.wasm +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JrlXR1Nm9oPmLIbv+Pn7wKixF18= +SHA256-Digest: CiX9viDeCcOQgr6Kt8j6ZKawkINR7zfpGQ9Y4t5w164= + +Name: js/wasm/biditrie.wasm +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DgOIUlPK5MFrkDgGp0s8C/bltgI= +SHA256-Digest: LbWLKOAG+vFG711oQfa2mEuOrcDheOsqnke4rdfgzR8= + +Name: js/wasm/hntrie.wat +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HtWWU40Y7dKf9jbZIYZIgJLcTD8= +SHA256-Digest: gDZc8OjaK+dvnCA9eGaycpQHVfllUgm1FFGeF9V1vM4= + +Name: _locales/tr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BPT95JAhazKtelPR5gHeuTBR0oI= +SHA256-Digest: KvaizJWCrDc02aUETc6Cgz4AiCZRYBG18RdcC4YDN3I= + +Name: _locales/ms/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QLdVBK0vGnbnWUTg6pUzn5AthQc= +SHA256-Digest: XuUr3jD3vtL0rjyvGAZpbNsPOcAR9FM3RuVPXLlWK3c= + +Name: _locales/fa/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gJ8FyHPdVdHMuPEuh71c6hv1C8M= +SHA256-Digest: XcFj5LVypzXCS2Ucaq7xQ3N8wtr3qMDgyz9gPb+GYEg= + +Name: _locales/ja/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: k9bfnakHDC4tPWgiRP6k7sCxknc= +SHA256-Digest: nbfeYAIAigYX7eNwwEyH8HXRlwjey3eTvwauGkhYzmA= + +Name: _locales/da/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: N2ksZ05awOy0essfGaILZBUPBzQ= +SHA256-Digest: 0zBJmbFIl2ZnKnzuk9em31mafgGJZSMaV1bDPMXcMVM= + +Name: _locales/nl/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bSd+ifBX5iVlZUq4Cx2qX719M+g= +SHA256-Digest: zUR4EsQNDi6+/fsfHME8PCnYwQdWonpSV8wuRFO4iWA= + +Name: _locales/oc/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QwUCH1ym90A1Mwmavoy4KQJTLHo= +SHA256-Digest: 7hzOvhDeIelAeIJTUbTU1DYpMbat8USni/fVt+Z9m/s= + +Name: _locales/sw/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fWXxyu87oAR1KNUoOYJHibAYGQU= +SHA256-Digest: 3nGnAymSpaHyQ+9LcYqY8TWOAkG57XSKheFxdPihl5Q= + +Name: _locales/ca/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0VAW+CRtZ+UKuFebi8juekGjeT4= +SHA256-Digest: nPG3OUF93FBzgUmBOHdi0z41TLsDn3dGcnLbXejhUow= + +Name: _locales/ta/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Uwi5zHVeMIj85ho+DE5zJePFSUM= +SHA256-Digest: mVFlAf4CLuHRrr5qpSh8mPuyJjpSeYUGJl+Veg08VqM= + +Name: _locales/bs/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VWEjwDzoydpMClIuUNz09Dx57ek= +SHA256-Digest: hOPnBOHEvrYMI1fywRQaEXQe8EbOXWT935GfldE+OqU= + +Name: _locales/zh_TW/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 74nbKtCg24/Jqhf/Ci2FG2OkLw0= +SHA256-Digest: zDTPXiqNxmtNIOw+Uth85jWugjk90tKXp87Fm2ZOVdg= + +Name: _locales/ml/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q5d4jjE7D9zjt+XD4pHQlP8+WNE= +SHA256-Digest: bAvzKTJ1/pGOxjYi4HnzId/a4SrTqF+jZ3EgzSeZ1No= + +Name: _locales/gl/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JTkcS1JwzUjTkq4QydFUMAoEip0= +SHA256-Digest: 545D7uvnZgGAPdZT23xGGm9fpS2doCsKL6x3Qa8VbgU= + +Name: _locales/kn/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: IuHniixvFBSLUlNORfUzp9RF5JE= +SHA256-Digest: 451JYmH0MKGBq/mUIWXeiTScerDnPNIqQgxDzsk7ne4= + +Name: _locales/gu/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 21IdwgTBAA2fUCUsiofS8V+IkGI= +SHA256-Digest: 00jqiVXVfFcdXCtc25KlCIBJcCmjzDrreCE0iN03JyI= + +Name: _locales/th/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ei69q3xbZ8BZcWgsuqOnLB9oHnw= +SHA256-Digest: jJhVeoxAF5w17LdFkYrQpO0b21ixjJLsWY6uIP/gDmg= + +Name: _locales/et/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6PmrA+EE717B8IjK11OcytxgcGM= +SHA256-Digest: mo9nHRQRkOKAFFYAJbetM5hR0ZMJwTY/I0fBkkFr2rE= + +Name: _locales/pt_BR/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZlxjlBiywFgZEiJpktQgVXqyPyc= +SHA256-Digest: F+AcVk+pKkhD+6Vle9fjCrBhlYtq/WdQ/DVHoENFPj4= + +Name: _locales/nb/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9DNL9fmPxJ0mVDU3PPr7b9sIh+I= +SHA256-Digest: DU50aS3olL7HyEKbf3NqDHfrI+z0BazXQt18cn98iUM= + +Name: _locales/ko/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 18vT2MrAZxIwLS5b5kzWhDV/J04= +SHA256-Digest: BVQ8CuhRFLz3I0AHeTzEIb7rFNMV/5mY1K3C3rIkkkc= + +Name: _locales/bg/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BsqVB88tUx+Bl1gVAI8tzXV6un8= +SHA256-Digest: Unq7ExTCy2HL1BYleKuTtclXHNscBK9ORmf0oEuICSg= + +Name: _locales/hr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HwFDw9perP01FA/Yu4peD20foh8= +SHA256-Digest: Ulrz1OYebjv7TN/BJ4tkgrWvN+MaZN6+xT8U7REjq+Q= + +Name: _locales/he/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: lPhZwwk1z7Hkj8D9chn+fUru0x4= +SHA256-Digest: ZEfMryFRytrqIjf06JV0QJiSyS+H5wNCbMAtPzOkQws= + +Name: _locales/br_FR/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8TxCBvY9dB31Pmiu1eJismSDXZY= +SHA256-Digest: 7tMImlQC2ftM8FY3xU7P4ZRcRrYOARk2zMgAXY4RJRw= + +Name: _locales/so/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tfVzG9AE0zGI/IGuw5DuKJ1r9Z0= +SHA256-Digest: WE3jr6VAMU9g0apRhfCImp2JaGNNk9m/nUrHV/B32Zg= + +Name: _locales/az/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vwyq80mxQXp1+p4jR+Y3Ktsw7o4= +SHA256-Digest: H7FeOy4s1k33ZQ+GNeSizK6OlTBfgozGhRgJ8jrW9PQ= + +Name: _locales/lv/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XmQsC9P1h3HtRxGvgKvMqNBijLM= +SHA256-Digest: Qxz5/zPaGR7iVVBj1TGGG1mvunw5QzU6GkPBSNxIlGc= + +Name: _locales/sq/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4DwnA+BRMGpYBOJ5nKYc7iTfiXA= +SHA256-Digest: VwMBLi7cQkwaDLQwwuXRk7CR7n/i3sQ+i4SCBucWbw4= + +Name: _locales/eu/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SarxhmwYHXImEGXzWjIoEqnNMkU= +SHA256-Digest: o28S1rt4gxqDVtIeF3rFcM585maTOUli42+devn87aQ= + +Name: _locales/sv/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: thU/jOzevWIoQV7cMckV6z5lQHY= +SHA256-Digest: +nDv5bQCVg5VwoLzTNe5py/0G4tXyJ9R6f0Jf1jFyRg= + +Name: _locales/fil/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yArn0khc25YORrI4p5heJEkC8Ck= +SHA256-Digest: cmEeo/Ahh/Nl9g0IBd4RPLo0KKrK6KY4o/mnz0/B+a8= + +Name: _locales/cy/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aAzJ4WbV/h/ry3DYnmEJlzGmax0= +SHA256-Digest: EWE62qwO9O088fKlhWKmmzcJvT2GXHG6yRDD5czn6kk= + +Name: _locales/en/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ttrFQx4iLZdY2DxUT1ORRbFY/0Y= +SHA256-Digest: XHF9g09cA/8pVjsUB5VF33fHVx9HMkI+EBPzaBVGwws= + +Name: _locales/sl/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: INKM0D+e4/WnL7I2W49S/cDZdxY= +SHA256-Digest: 7M4rMQYu0P31905UWUj5EXcjT2mAefQjrJBTVLAOicw= + +Name: _locales/mr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5fxPHyrTMJyDJUUog8pc1JIkbRg= +SHA256-Digest: 20izlTWC80GUpuwuL1ZWuTEC09fC0VXlSNEEWZ/Tu1M= + +Name: _locales/cv/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QI3El42QujVJZrDaSbuhiScIOk0= +SHA256-Digest: NVTmRRFGckFhrD5rETHxq0x4dNQJGtQZeTLBX1C5JLU= + +Name: _locales/zh_CN/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: MI2HYuN7UEPcOf9awhp+nFUFlAw= +SHA256-Digest: zqFLgbt+Sane7SJfFO/9cDgSa2AYiXNgLMMj1rK04ec= + +Name: _locales/ar/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: EjF1XcuDQ8wzaocXtxZixJWFRoI= +SHA256-Digest: a0AcdnzgHQsF8O4D3HPCI7aCXJbupVKneeP/IzpVgds= + +Name: _locales/es/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8TDzCsnopjOjkBC56af5dJLjsDo= +SHA256-Digest: SvXxvDoM1A+pM+dSUqFtHYQShGJGNBU84lVBCBovYmo= + +Name: _locales/en_GB/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: c2/b9NJf+lXmbA4gRKTSiUkhFIs= +SHA256-Digest: GD2lGCBSiHfMUte7ppTGRSxkDbXBMnHE2rQ1zMtQQdA= + +Name: _locales/si/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iUNfJrfgdZjyeHEZl73tPK76ho0= +SHA256-Digest: 9DpHrYhrCn5KgJP7dYUwmtrdbwxdUdmtOHf5FRGQNnI= + +Name: _locales/no/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9DNL9fmPxJ0mVDU3PPr7b9sIh+I= +SHA256-Digest: DU50aS3olL7HyEKbf3NqDHfrI+z0BazXQt18cn98iUM= + +Name: _locales/ro/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gBiFsK9TTHnXkq4NivXgeePMAwg= +SHA256-Digest: pj5fOa7DjQIMZdt3iL+3yyebtfIb99e2crx3birzpgA= + +Name: _locales/te/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: e0FavC+NSLTsEV8jAmqQg0tU/Es= +SHA256-Digest: /r5VSG+z/tNjpiHo4mH/8rIGMWpOum2Kdek3RwDLh/E= + +Name: _locales/pa/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KjKxw26NQF5FQj8LyxHJ2gpqQBk= +SHA256-Digest: +weKZMuHd4qilYbxsNEd09jKTN/8hxIPi8y/nVX0TvI= + +Name: _locales/id/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: anDbftPGox/qFkNfee/WcWRm0Xg= +SHA256-Digest: JglPwsMh5tkgKWkjLoxVD+0m2b6Y4/ydmwIJwV20RCQ= + +Name: _locales/hu/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /XPzAZCXuz+HHIFzxJ2YT0PiRys= +SHA256-Digest: HLDTGaUCxmuS/izbn663gd0LugdCYH8ZsejFaqq7VIU= + +Name: _locales/uk/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q0LZnVajoY5RaseQmDWJp8YKyMc= +SHA256-Digest: sIV3pbdd32EDBQ1KQR0e1tmzXneuj0IefXcQ/7Xss/4= + +Name: _locales/ur/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: N7ProMHRRNhPVaXk3Fh9rQmztiw= +SHA256-Digest: Po+ayZJKyCCHnqb+miTHxsk05qVejavbNZlhO/tWewU= + +Name: _locales/fy/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0jqb7RVlqA3PhWHPdm4niTfzEAM= +SHA256-Digest: f0EaAy16YsRHKTo6HQgXvwH0Wanwwd2MJ7sTKXrPIGM= + +Name: _locales/eo/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DpMNoQCXoU0Tl4W8NX0/nt5KRas= +SHA256-Digest: gZ9fnk/RZYrJHAzEzoK6tTHzz1IWSnldFT3o1I8Gseg= + +Name: _locales/ru/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PgAOPMfGXGK3A1xGp9hzQcAYQNQ= +SHA256-Digest: TL1QZeP19hn8/oAkOouGyZLRIXSsehjDtGvziExwqP0= + +Name: _locales/hy/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wjm/uTjauo7aWqsYKVVg62u7SPw= +SHA256-Digest: s2NpiFFb0VxW54J+TFZ5LgRWy4sSWzlLl7Js2UQt5Jo= + +Name: _locales/de/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WalLsziKh2AH05eHH3FbrKj0BHc= +SHA256-Digest: 15KB32Xc0zra4CSSTl//hdUiCW1x9oTpOW3m3Skoyfs= + +Name: _locales/hi/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: z4+wnZAykaTmXSasQW+zRA2tcBA= +SHA256-Digest: 8HwnlGVY/w9XwDheUO7A4A7xtFC7oIHUQYYCc7ZwjzQ= + +Name: _locales/be/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PVbnGipwl0EwMRq5rGEdsXPWRrI= +SHA256-Digest: KHv8vMWGMh4WZBqVerhBvCptrqAS1sxVuIgyogcnJP8= + +Name: _locales/ka/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ji9lHY+wHXUmZscpCmT/G9xKDXo= +SHA256-Digest: EP35pt7XGOCcMFVN+Lfj5MuuhrQny/ZeZd1ejeLccrk= + +Name: _locales/kk/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4ZcM2uPd5R89zrckXztwayf1Fww= +SHA256-Digest: bVrYEPrN1slcjIk84T9nX5x+OO4l67VehBXEh781mJ8= + +Name: _locales/sk/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: O3qWEICS4m+3+J5+uvbDgp8Ec0E= +SHA256-Digest: GYfzPA/sh5sBE4hE3Kc1DZEwbs62VhpIDfMIdIa9eYc= + +Name: _locales/fr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 3VMSgdBagvVDaJgRAAmDI+l8N9I= +SHA256-Digest: ZcwCOYwRl6bHGy9p1BAqq4wB+eW/oNVV6/QHK7RNRmY= + +Name: _locales/pt_PT/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 28bRulS+7AnoSgjajtM+KiNfvo8= +SHA256-Digest: TvEZEUzyS0WdPzE/dYbPy8dqO0PBBal9q0eCKYkfRS4= + +Name: _locales/fi/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2a/1oxKLFBhn59xOe7d+f2AFY7o= +SHA256-Digest: jSlrS41NG2zmqSDVpKTaX4a0fd10OlhEcOaiEUJBSsM= + +Name: _locales/it/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AAStnxga4HDhbZTfzlvzJ9tc+o8= +SHA256-Digest: V/jYhzdd0+SHzKs8R9PKYmcBWq5NMcXDXmEupebySGM= + +Name: _locales/sr/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jLJg/HPyo7bbrvM7Tt7oPxlEBw0= +SHA256-Digest: 3WISSXTV2SSMOcyI1+TpJ9vlMvX7azgoTJqYiOkoE0o= + +Name: _locales/lt/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ymmUzFck734OUBSYsoiZ5y+pJuU= +SHA256-Digest: UTOpn112PItx6jiMKM7JcQR+SbgUCBxIYv/saSsWMPQ= + +Name: _locales/bn/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fbbiCrSWNW8o4uL2+B036nNgXwU= +SHA256-Digest: ku6sMToHMcf1QvTR8gfx2yliivTibdDdTdpKkGHPQpU= + +Name: _locales/mk/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HKPc7dJq0FvyGZuccXhTO3U8WFY= +SHA256-Digest: Kzxk9Y9zjPFMdXpyqwwm8J7ecS/K3yeqwuYFivYFxKs= + +Name: _locales/el/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HJekLUd2mdMVxTpXffh7BStiq9g= +SHA256-Digest: AbkUM7EMGyXo+Y56j2NJpb8BQPnZZStwGrHhLr1cIiY= + +Name: _locales/vi/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XClyf3QhdifQQ+bjmxNpcDEq1LU= +SHA256-Digest: sec/Y5c7PU0/EWFFM8OboCcu3SgG1ZoKjfIzxXNylIw= + +Name: _locales/pl/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D+8pS0y+deIjnbAxZuJPRzooCk4= +SHA256-Digest: zS/fs1//7CbD0HF7SPSPvpDUAh7ypqCzC5OnDfbrI8I= + +Name: _locales/cs/messages.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: w+pqkuU1w3zxV7FtlQ4ydb/x1Qk= +SHA256-Digest: 3CdAPcYpje5mDeEpmk+nR0VsLqJAwAUr6pTxH6F/s+Y= + +Name: assets/assets.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: O2akJDNf4rEoB9ymlfSY7Ysl8p8= +SHA256-Digest: //B31qH1UiFw+jQwCOGKTkEij66N1avleWGR9/NACxc= + +Name: assets/thirdparties/pgl.yoyo.org/as/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: a8+H1Jsco4oNuvNEY+rsEJeHyaw= +SHA256-Digest: OHTVzwDeu/ANgKqnet9Vbpw2m6fjd6HzH8186TWiGb0= + +Name: assets/thirdparties/pgl.yoyo.org/as/serverlist +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4NDX/4E5FegVJ9nfiAzcRI+RYUY= +SHA256-Digest: ifdYh78np6OxS/q9M2g9TUvdqehyucdSz+nh/6BSRjQ= + +Name: assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XfOmlv11M8QvwL6r3aBzW5CGb0M= +SHA256-Digest: cTe8cbaAPe3WpCzkNmg9m7FmwXiZ4XuWp+wp56D66Sg= + +Name: assets/thirdparties/urlhaus-filter/LICENSE.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: OAeD02gFJPBlylLXgQie7E0+lxg= +SHA256-Digest: LYuxa5J1olxcKoA26I86A/3MV2nTaRx2pHzQ7ij0kAI= + +Name: assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1f3VnLzrFOBwOo9htw3bqro8898= +SHA256-Digest: wL8d3WmMD9BRiHEAdRIHb7lWmf8ROkLrrdIZ6/d9ehg= + +Name: assets/thirdparties/easylist/easyprivacy.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZHiHgXKlHbD4sbGnA4oatgA1Wsk= +SHA256-Digest: P4ms2a7ERaAN46SNG/25dTxPOuErfFBhsyG/iC8Y3XU= + +Name: assets/thirdparties/easylist/easylist.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VPiF01NCIemUt/JL1T8kyvajEfw= +SHA256-Digest: D7Mh8bPk9ytxvnuTBfPCC7ukiVWBJVsIrFa7VThozxI= + +Name: assets/ublock/privacy.min.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KaoYl0GuxVfUl2U5CWxkm5ZLrdM= +SHA256-Digest: q5D5F6M88z0tEb5lLxbs9JKB4qlzCcjoEXvZNDM99CQ= + +Name: assets/ublock/filters.min.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kmx40zigjoPDSPN6EQNFwqLkbWY= +SHA256-Digest: uZvv3JL+FlVEi+m2Nuvs6YjyW7A88p16wjk2qFsdWys= + +Name: assets/ublock/badware.min.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eXO69urvdFVSftbF07yGAgrjxOs= +SHA256-Digest: znfFZuFYLHs9P0E0F2xXqEvs0UO1uAxMDIgyDt+fZqQ= + +Name: assets/ublock/unbreak.min.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: stE6hHvMxhwqHZ4N1tPsIGyPE1o= +SHA256-Digest: YLtG6+7EB6lD5MlOb1bXw60EoNpIMH8jANgJOZ2voz8= + +Name: assets/ublock/quick-fixes.min.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Idswv/EQOb9b+va02gCKG3o5LrE= +SHA256-Digest: MVBW6i2nHw9qdfypXiYXulSN0xsS5HE2IKR8l1KEHlQ= + +Name: assets/ublock/badlists.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: GX8yahhb1pWWYxutZ3VWvvYbtVU= +SHA256-Digest: 85pB2ls2EgFPgUk1RwcInboTxkT3K5kYMvqxDw640W4= + +Name: img/icon_64-loading.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CHhcliC8DB/ioefrSbvF6EtbZ2Y= +SHA256-Digest: R2T2yRzZhDLZRg5ycobTq2cj7Bu77bXdTxMVu5DMlMg= + +Name: img/icon_16-loading.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: dJPvg5n6pqJ2ll/DB4wmDJWxeKY= +SHA256-Digest: MHgJhZm4LtPp6Y1b+AjuinZOrcqydnqxMZBEMsjPMhU= + +Name: img/icon_32.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6SbYiRJWlbXXhkxaIhL0wI83U5E= +SHA256-Digest: yeOgLxtxFhWAeeJvKArXZaI6Qif5wzibIryD1nsTiPE= + +Name: img/icon_64.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jh0MKYtl3t6Gguph4ia6/FzlPMU= +SHA256-Digest: 2GaiU3L4jKtTUBrNc5ngnhGoBbGl5ng/zEOEB6rBojo= + +Name: img/icon_64-off.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FfISB7+3PTkFeSE8/xLlpnGFi/k= +SHA256-Digest: 5/gNC/5HnQY3zXDxJ21s4pmErr/IcA+5UJOM/ggqPJM= + +Name: img/ublock.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FmZghBqbe8cspbikKT2BDE4O29Q= +SHA256-Digest: BcOevViBv03hrS1fBMHb/e654TK+Y61tbjQSUvGKSv0= + +Name: img/icon_16-off.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uPCPYgKF2el5mNzET8Xw3qqeKhY= +SHA256-Digest: KdsCCeuwRpC5+kb8YG+3oDGiu/6KLv42+GREeDoKR1c= + +Name: img/photon.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8wGKsdfn0CVaqOrCD3sySpPe3rM= +SHA256-Digest: C4Lj7Ybqs4ieCAJ+BF7Jqaz/f8rHvl4AGsbkNmQ7rA0= + +Name: img/icon_16.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4V5QI/T07ICbPoW25YmZRF8cTMY= +SHA256-Digest: V4ESlYeFdSB3F1BYyap5l7WXGt0PZT+4g8ayeCIkpmg= + +Name: img/cloud.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9+VlMgEx9tYi5b1Wi5V1/LgjG0M= +SHA256-Digest: DiYpB9ohxsRcdTGrAmM3boEyA/Ax7miqH7CDsX8gJ8Y= + +Name: img/ublock-defs.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5XU1rmAqmr0Ep106zuLotbNkDEg= +SHA256-Digest: TsKdPEBRXK5Qyz/V44JE5PA00UBtCGAGZiPPSrEJrFo= + +Name: img/help16.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VLzw/+lZV9myWdIkB7KSLXQc4rc= +SHA256-Digest: iOSkVceIVDHcGOKr5imR9/Pg7SYZCScOICks9xzckYo= + +Name: img/icon_32-loading.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rWodmDts6Fhs6VmYhdNbJ/MgDH4= +SHA256-Digest: 0hQuwHRcpPYEobE2w/v0veZ66bV/BhJzVPCYPPr7oNs= + +Name: img/material-design.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: MGYogYvrDObZ/s0zIkX6OlSMeqU= +SHA256-Digest: VSem5dgVUi1astIVKg21fnTm9Sod1UtDkYO13InKt/U= + +Name: img/icon_32-off.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Ewfjggr3gW+sdBWgrW6Ww7sNQII= +SHA256-Digest: 6iyK86y3LAdr+hvfsXwyW36l+Z1mRtFRhNuOZ4vjQF4= + +Name: img/fontawesome/fontawesome-defs.svg +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ELFye2RoJS8N16I4XA0QQn1WhhE= +SHA256-Digest: RCPscl0PD/v2to7P7aMqzuzN3XbTTgxzwsrCcF1l+Z4= + +Name: img/fontawesome/LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eg5asfQBiAJhGrPLPhVtEXV4N/Y= +SHA256-Digest: ttpJAoAHrkv3kejYquuAqic5Ouji0zjeDoefeQ3kkVI= + +Name: img/flags-of-the-world/cm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hjnbWQkIkaj9CdDdNg6NEFpXz+0= +SHA256-Digest: 7PR3rZbllDvIshgVxaDOnRMPO8utp/dMiEPkwgIYgYg= + +Name: img/flags-of-the-world/it.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gFXbKXmh5GeCKY0YjrdGJeseVbA= +SHA256-Digest: ncBqw1ZLUnp/aebOqxREfYl3V8du6Yx+KHsI1YMr9DA= + +Name: img/flags-of-the-world/tt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8aoI32a4p6qc+sMbBTBpHOTWI2c= +SHA256-Digest: AuypI9n7dusP/tmqz3Q6io1F2ukRVtDlJV4YKHAwplQ= + +Name: img/flags-of-the-world/ax.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vUZ6NCm3Xn25aaVHo6ggy1R21Zg= +SHA256-Digest: akOpLQRLxN1ymsuoUJuisFNVr5+kIEXOWYJVvcR3a3k= + +Name: img/flags-of-the-world/nu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: g8n/aQfxG6R1xU4uwsei5x8iyuw= +SHA256-Digest: WDvZF2+gCpMdWBCAsw9HRKpDmqxTZx3waLnnjOLGsEs= + +Name: img/flags-of-the-world/ec.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: cg2bOBEFf0SO/d82YKMWMg5PA+E= +SHA256-Digest: ii+lKZJJxU2pGPLQCpYplHUriZINjvu/vGc1SkaJ0Yg= + +Name: img/flags-of-the-world/id.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kdhrCfDCgYqzUntTd65sEAk5iSg= +SHA256-Digest: WlKxKdtE3GFmgvy85WZoNaUybestV4s9JZjE3U7T2Go= + +Name: img/flags-of-the-world/dj.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vGNutoi7VBoSVC+QPaISuqXbUgw= +SHA256-Digest: wdBWjuH9Nupi1RFjntyymReGTTArhc99HEZGB6jjowU= + +Name: img/flags-of-the-world/lb.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D8Zke8VFmSU7oVV2ok1NRaHSDEc= +SHA256-Digest: fAr3tZdx2FMmZRLhuyZ1NswQYVDtjJ8EMTGCHciSW20= + +Name: img/flags-of-the-world/pw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: RVYzD3nkPBkTiSMnY4km15tVNa4= +SHA256-Digest: lWqCcjQoKxINDdrvcQgJGSaVbQbXih2/SHu+QXdmNt0= + +Name: img/flags-of-the-world/fk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QRsYaFmlLIRzQP8D/zbPed24Bo8= +SHA256-Digest: K8ZBRMYnFK4a8xVNpdZ9Ye6/tRmzQQJ9hpISd+/kijA= + +Name: img/flags-of-the-world/gw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iWVBuDZIiunTFNzoQPxBGuh1lCo= +SHA256-Digest: 107kxHMCPMyQaun/zM242QRZVIppLG8MhG1VBZNMkl8= + +Name: img/flags-of-the-world/sg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KcSWLn7lZRS2IKT5HpezL3IoRVY= +SHA256-Digest: e3jDbTTeUDS8W9uYfRskXahNLXBJYITXFceuZUff9eM= + +Name: img/flags-of-the-world/ci.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: cbJkPn8rmpDCguC6sGEghtgyXxg= +SHA256-Digest: cMSpT0848W3L6InH21fTiC287sRbb0dnMp2yHcJw9mM= + +Name: img/flags-of-the-world/vg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: J50qKmMvjChcFL+Tgj/49N2D9sg= +SHA256-Digest: IV8fxdqRwofXtZ1YchLoE2XayoBCBkK6D7xtzA4qHCY= + +Name: img/flags-of-the-world/tw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0RCwjWe5WjNXYxn2A78+fzDKb+o= +SHA256-Digest: BnJ5ZaMtqi2eecHkPu7rJF+RCze/uiIYsE7dUrwz/hk= + +Name: img/flags-of-the-world/at.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Cz12OBXAXhP9p4ZdaqrYh/S8S7U= +SHA256-Digest: OVQ/aPllby+iwcNL7LVuLRj7baW5bwktSv8Ocg88hYg= + +Name: img/flags-of-the-world/sz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: j9KRKIugkMnJMyNL6TEx1jkLccE= +SHA256-Digest: GgbJXyCE/2a1nD8svLl1tpytDl6M1TdpGJryo26qU4I= + +Name: img/flags-of-the-world/gs.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JjcK8BCcKEGHYIeSsADjm414VFY= +SHA256-Digest: w9uY4RZ3AM4TXXU1nhOQHnpkn32wKLiRHYxNiHs7LfU= + +Name: img/flags-of-the-world/tv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: G958xzZmL9uHNpmeBPoDqafzbgc= +SHA256-Digest: 1vw5v6xZH0vbHaahn25gCzyhyUcrYXHUf7rd+0Zu29s= + +Name: img/flags-of-the-world/dm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mYBL7crf0OjPddFPL4yCxRDRmZU= +SHA256-Digest: qOJXjxBNW4LzBzKd77WBVKEFqoaTmFlwuKddqYqmxCM= + +Name: img/flags-of-the-world/eg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zqQzfpEPDJJSQkhjQ0FRM7Vis/U= +SHA256-Digest: /GZdf8fxuWFWrJ7DGR6oPe6UYNch1jGS5KL/JTXP8KU= + +Name: img/flags-of-the-world/nz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: knY1NVFs0Ncv7QKgk+kXT+a29pk= +SHA256-Digest: 8MgTHwbznHU0K2cHfxCbijvzNTJF/OFfkW9wHfRrmcs= + +Name: img/flags-of-the-world/ai.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2+/6nA3lh71oXLD7R4g1Vrh3wjc= +SHA256-Digest: CgVfuMyQKr0FendSeILwYwa1Xft7T3TiT5UrXjxgdSc= + +Name: img/flags-of-the-world/sn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2Ela8gy/juEh0V8CGSokltwuwhg= +SHA256-Digest: 8KvnIHYgZ5J1ltkanKn0a33C7sE7n3T8WDyUsatt3hI= + +Name: img/flags-of-the-world/io.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jeDe5XcG/3+7cvFA25LitHYyjDA= +SHA256-Digest: B4dUizQhBlc6UJWYKIZ8LWA5xHWtmLJeewSEVjyttAM= + +Name: img/flags-of-the-world/ne.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PqCnuShCdddFNkTB2Qp6idk2znA= +SHA256-Digest: LjFAyb4INJflHx+5J/KEqJzjGyEfuYjgRDLvMBe5igY= + +Name: img/flags-of-the-world/mo.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8mOCnOu5iuvIY3cHeiOsVaij1oY= +SHA256-Digest: CGEGh8nnSK/bxa7QVi666Vboqoc1WP27uAgzQ3xkxhU= + +Name: img/flags-of-the-world/gm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: oqxeawEqeB5pl4ciDsBHrQ2jVss= +SHA256-Digest: UaHmpusucvzcqWiSJRgjb/G78CfyoC0RudeHO4E+oWU= + +Name: img/flags-of-the-world/sh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: IR6KzudfshRKQFk4vpBtsQeuLsE= +SHA256-Digest: X0K0Ew4ExBvL+HrSLrnjUK1tzYXeUDTMvBWo8u7hEFE= + +Name: img/flags-of-the-world/uz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5m9F/H3WsUCuD8dsLMFZsQ3Pzr4= +SHA256-Digest: rZhGhYOe6ogZJmBYomy5wTuABgbEMJUtz3fo3uBi7ro= + +Name: img/flags-of-the-world/yt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: r86nm58LuWE15DkxkCFUO3P2QUQ= +SHA256-Digest: 4ecwFwJ+J3UGbkCmrK6U9/xFQ5Kg/ijk//nXJjbSbRE= + +Name: img/flags-of-the-world/kz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CNaLCiH9ent25uGRBS0C5xCRFuM= +SHA256-Digest: IkbsJCPmGylEMsRN31ldkajuS6KGZ8vUeS+FElVX/g4= + +Name: img/flags-of-the-world/sa.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: q5AkBiMIpgGpRjYLZPwlC/G7P7U= +SHA256-Digest: +5wjK4UnGlbVT9yQuZhwEZZUe72TkW3/8dS6LOFMRFM= + +Name: img/flags-of-the-world/mn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: i3pTOVnj9zF2pVYjkD48/cbaHp0= +SHA256-Digest: 0PkiLLxHDdICIUFKSr719WmEeQuasPHp/i8v/P2FRus= + +Name: img/flags-of-the-world/cz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: HegC2E9i4Z0P9WEjCs91+TAJ/E4= +SHA256-Digest: rb9U805HMbrcBgbxeKY3mMy4qVAGQl32rXBLY8l9BK0= + +Name: img/flags-of-the-world/pe.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PpPyRvS4jM5+0qnNwjpcijI1CSI= +SHA256-Digest: +Spvmoe/yOoxbqmcySbo/2e8F6kqz/EY8AQbubSP+q0= + +Name: img/flags-of-the-world/pk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: h8x8k76ZN9nsMEGPSxe4R2g9YM8= +SHA256-Digest: 04gFHGbmiGEfOGLbxJCtZPNVqByfJQY9e8b/A0ACjhQ= + +Name: img/flags-of-the-world/ps.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: naxReqvrUO+/vth3iSMvqdcey70= +SHA256-Digest: epe9kRmHhGrQjJvS9dZjkAVOhplykCiNRuTbKDhtsds= + +Name: img/flags-of-the-world/ee.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Mz5/cksAvZMAVTiM18IcwJqBxu4= +SHA256-Digest: X5/ncHwhqdPYIu2V4T7LL1RyyppVBEQCi1zV8V5Bbqg= + +Name: img/flags-of-the-world/co.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: oPOUAhJpqEDk28DVbC7Zng5jFMs= +SHA256-Digest: LsO1IYRb2vNn0tfL094tYPSCt7ZLCztMIZjGgCq0zDw= + +Name: img/flags-of-the-world/mk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Oanomk20n7pvns2P+En/sG7YHX8= +SHA256-Digest: XkydL0JjdvIJRLFANn0YYwQ7FsilKfYlR0Sj0zhUhPc= + +Name: img/flags-of-the-world/je.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BPGU3QIG+AiO6zJGtAvb/KbfPsQ= +SHA256-Digest: QULyNp7mflKJ0s1gzMO5JuA9bNfvSuzDODlnEeyrq1U= + +Name: img/flags-of-the-world/tz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8OmIsr97i7fFtBlPncGaVQ+x1Lo= +SHA256-Digest: W7R0W6HXtVYGXQaoALnVV51Tqh9esR6ZNRC/kJfNcNA= + +Name: img/flags-of-the-world/th.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xwJ7qKBTEd8VTer6hcBV7yJHS7g= +SHA256-Digest: L0EtIJb48lSkpbFSO9ZHqY/fPuDXEFqYXuO/FAzJy9w= + +Name: img/flags-of-the-world/bd.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 00nfK/YqNXI2gadDLKMKgydnWig= +SHA256-Digest: 1Dxt0KVA90nqTrrkfgJvbvDW4ohAsUSQk+RbbsBwZbI= + +Name: img/flags-of-the-world/ae.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iER2z5swp8Ef0d7zhn3yFBxW9Ps= +SHA256-Digest: ZwvpontGNXsK0BxE0vN4Poxdu5jNQXxVVuwZ5cw02s4= + +Name: img/flags-of-the-world/bh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vOkxG1jm2GAx2ShyFJtH5oQ2tdE= +SHA256-Digest: p1+yglj3x52YNFIvVeRo6Y4BlNSl8PWGu8iW2h6HgFA= + +Name: img/flags-of-the-world/fj.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NJfJNWc53K9tSm53uov79tfpg2c= +SHA256-Digest: d9eUTOwSxjeREMcMt7oALt7b5CP+1hY3uuT4s2PiyAY= + +Name: img/flags-of-the-world/my.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: JLYq/VKb6bKn99rCqLXikfivh6M= +SHA256-Digest: QPjyZ2woewlNi/2Afvwb1ybsV1/gd7iNht9L31i53zg= + +Name: img/flags-of-the-world/bi.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jvdMyI8OYawleKvMkjehkE/dFdU= +SHA256-Digest: h+ndE5mYwIrRZBxfWRzOeiMb8ETkN+PwaDEzywamRJM= + +Name: img/flags-of-the-world/jo.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /U4afjmedR1Io5fUhxme3wjE9ug= +SHA256-Digest: DL1bEcJ2xCGynj1/IgEpQneFwyttmN0WLxH+L8UX2G0= + +Name: img/flags-of-the-world/gb-eng.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Dii2rNV6sHqJkv2pMHSxpvKCbTE= +SHA256-Digest: Nr8eWNYcjY7Th+Lzxh6YCAAlYZMo3EwZfA3DPrTnTD4= + +Name: img/flags-of-the-world/wf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: f1WYWiMXBuRaODo1MKICoo32kmY= +SHA256-Digest: ltELf4urIQGGb2jCUELH9U7OsWZ7tb3qCDj+C6UJPNo= + +Name: img/flags-of-the-world/zw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wdSyYTCIRNh/S21SoizwBqOavnI= +SHA256-Digest: VU7AB2MkYxPVkxegbYR7QlbC6wwl9Cia3Vy6WbBxWs0= + +Name: img/flags-of-the-world/cv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fpIQsftWKioIw3zZQpGPUeHP00U= +SHA256-Digest: /hd9ilvOvOP5h0Q6AhcyXhKa4jF+jC0+eiiQ73+03LM= + +Name: img/flags-of-the-world/ly.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YXO4iY2ySAwbTZToj+eQ8rT2gIM= +SHA256-Digest: eqfvSUg6AOmM2JwAqNsmgHT08x36CZe30zH5RbslZtc= + +Name: img/flags-of-the-world/mh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: e28pARoWvKIhBcSCpyQMTUHvgAk= +SHA256-Digest: D10z7qkj++OjdqbT6agtqSn94dM7j1UWGt8iyn6/0Co= + +Name: img/flags-of-the-world/om.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jmUwBE7QY9xIbk5YQnajFL9kAG4= +SHA256-Digest: toRQWFW10TDFh3xRbELju6SxSyo6dk8p+o+xeLP9X1Y= + +Name: img/flags-of-the-world/jp.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AQTnAqny7q+J+jRekc5H+xjarCE= +SHA256-Digest: eudt3bW4r69QbKTG9gSA+Hbm3wKoHmYDfGWuLmXSEeU= + +Name: img/flags-of-the-world/ca.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1WkTEEFnv2rc90900wGGxDTOBpw= +SHA256-Digest: F3Xpt+MJK8zkV4aX0roVIOJWfpRu63mTYLN5SrQ/HdI= + +Name: img/flags-of-the-world/si.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: evQgCdQ88+wuxzWvMzss7a2Tvfg= +SHA256-Digest: 8QfgU1fDzHApmqffvmbfGb4bWYnNDfOMaCGd8gbEzaM= + +Name: img/flags-of-the-world/hm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7c90WMa1+ylGxLIFhASPhGYTbgI= +SHA256-Digest: kDLiiC7QZ7Ck8VXRwKQKaCXvdiW754d138YaeYI7IX8= + +Name: img/flags-of-the-world/kr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ys4DO1Mv4JJX5vQo8vl3/Asa4Og= +SHA256-Digest: 09byyAURZPtxpCJMx61tHQA5ml/dgrZXsLZJdtgl8hk= + +Name: img/flags-of-the-world/pn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1WSTPiYkDiOghMhh99lD6Aayvdg= +SHA256-Digest: ZFLrwmAlx6htow2jbOe+7IzsXskDbVwi2A3NVk0e+Qo= + +Name: img/flags-of-the-world/sm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9kuta2+bjdb24VWMKW9/k2+AQcQ= +SHA256-Digest: h/KuTk3qkv8TcIA79mcZHqo67cPae+/GOjvz6qkB+3s= + +Name: img/flags-of-the-world/um.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iqJICZiNJ4g0EnutzqiQ8NqJEpo= +SHA256-Digest: lP2P6eFOXfxkAUu760WL4kBH+AU8OKbNGgX2TG1Ox/k= + +Name: img/flags-of-the-world/jm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eaOtPE5ldRfJqpIAtVwWLLYg8DU= +SHA256-Digest: Gx2BVvqRne9w38T+ZRdRC4rJAE0E3TZpt4DCGxkt2Ds= + +Name: img/flags-of-the-world/af.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Llz6IiDPfbLVdhMkO4hkM6owQFE= +SHA256-Digest: ieviH4yRuY0pyahFAfLCfa0qXRLfjLnOyB4AivDlx28= + +Name: img/flags-of-the-world/ro.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ak2GEPY+7Km5iwdJq0ACvL14O6g= +SHA256-Digest: mJWoWQaNdUUicroj81fXBq7nvowCImtsNfwfXTYL7bo= + +Name: img/flags-of-the-world/as.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 84Rr5+FGWop602njZ/xXwZZHzUA= +SHA256-Digest: mSBqIn6wKSmPleeN0ngKdnyjFgzggGpx9X8BMUMjNs0= + +Name: img/flags-of-the-world/vu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rsxKUX7FclyqON7vU9mb+4gypEY= +SHA256-Digest: afYeLIDMxjeCDc/2qhKDcg4cI/i9gOR0tRtFMKJGQu0= + +Name: img/flags-of-the-world/dk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8Q/Z4WpUYVQl01G/tSt00W2rKiM= +SHA256-Digest: 5Aaoi5YxBEMjdo9aw8H7/6dIg7Wt6vb4C0G3aJ6Zvl4= + +Name: img/flags-of-the-world/bw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Tm9eiLGACnbpMoks+putwR3qg+U= +SHA256-Digest: CHi1o20r6A9NRIKHmNNnxXhCSVG2iUeF+OKPrY4HnfA= + +Name: img/flags-of-the-world/cd.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: px2D0tjbBZebOOIiMbAGQWN9JI0= +SHA256-Digest: 3gTsVuNmXQCj8K5HnbfB7ObNFZ2XNlvxstS5CSwD0+0= + +Name: img/flags-of-the-world/hn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2wWB6Atb/gGyCHMYSREDe8vCvuU= +SHA256-Digest: zaBS9iFOUoEIAAJGnd4LuVo8x9bT4CSG+rCs+VCao10= + +Name: img/flags-of-the-world/sx.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: A1USIHmbesA4BsR0sCMdKCgmCXU= +SHA256-Digest: zvY9Gc2j90fMyQlottYn55UlUvCbX1la014gL9Ffstc= + +Name: img/flags-of-the-world/li.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tTg7a2t+H2fc+reGp8QtuyOkNi8= +SHA256-Digest: 1z2fvl874iqMHKPlwRLF2j9fn8QoVYJLokPblxjoq4g= + +Name: img/flags-of-the-world/km.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Fdes9msjMUPYAngAA/9KU6ta8hY= +SHA256-Digest: E7N6+vwxQbIYmu3EP3jX9YAvkiCLL/kokEOw6k2ZNgk= + +Name: img/flags-of-the-world/es.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wO7sA4U7Y/ZC/j7TxOT2DBM//fk= +SHA256-Digest: vDOacfoZ3EF5MRRWemBdMlWE/0DwQPXFZOMqOsE2TE0= + +Name: img/flags-of-the-world/tk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BvAV7jB7fYYY8H9Gw0uVCLiUbss= +SHA256-Digest: ghcTcbwCSBlnmogI4nSwkUhtq7IjsMLYMbgcXbdMGH0= + +Name: img/flags-of-the-world/gg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZmDmp9WDjhp9XImkYwDeBRJFTAA= +SHA256-Digest: cVgFSl54D+mixbz/ilcQFKB3wu3cUDipCZyxW8H6q70= + +Name: img/flags-of-the-world/sk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 91d9O+j9Z/g0kM/gBcbSK4gS8rE= +SHA256-Digest: aM85rKH8xeFRHhBjystruk32bNPwHOdKYLY6pCkkAcE= + +Name: img/flags-of-the-world/vn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: GB2OhlLjjt8PmGVlLrQGiZaEtg8= +SHA256-Digest: dCHH6FxnXV/a417Z8Nh3MUXA8PEAc0M42OBpT9LgRMY= + +Name: img/flags-of-the-world/gb-sct.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NMOwpKmOlQ/ECzohl3YqGqdUczc= +SHA256-Digest: 4cUQQQRntvLIVtNknpfR/qzIMrekl5xxg6S15NLTt5Q= + +Name: img/flags-of-the-world/so.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: P4DQG18tj1Y4RJJ3XXivYgzP03M= +SHA256-Digest: LA6JF7+Y11+HxUpScU66Og9y3OSqeAWtnvp5Wj9HBSo= + +Name: img/flags-of-the-world/ky.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SRdvwKfDhX7V+Go9HhV8OAIvfko= +SHA256-Digest: Pj5WK+bQWiMgz09v9KB4fZ+TJbrUn7vSLFHcxKBRbjE= + +Name: img/flags-of-the-world/lu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1fqrV0K7FvTrBg7RdhnOReimSeQ= +SHA256-Digest: 3r2D9B85L7zLSvmHLXd+VsCDMtsNLiSRBf9c5K525Ik= + +Name: img/flags-of-the-world/ad.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mqDFAs36UE1RriHecYHdMHpLuFc= +SHA256-Digest: Du/eKS5WWKwNYK8PeqDKihd0rLWYdS8+MlLyNuFa910= + +Name: img/flags-of-the-world/sr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: X4d9y9N8gAUAvTS10fRihUKDGE8= +SHA256-Digest: SFVFp2zkXOR7WWSDUsxuejlnhvHxd+2BNfiLBCXfzuA= + +Name: img/flags-of-the-world/ua.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CmdaCNCNn+kUYFE1b6xLwWI0mk8= +SHA256-Digest: dGZBHujwe2mNHN1X7ZE1rA9cvQNm17v4h7z7XJUCua8= + +Name: img/flags-of-the-world/gr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CXU6A64EzG0KIMV3YZ0/+zBYuIs= +SHA256-Digest: LIgtJoicg0qXEx40bjt2OCcNF0fFEE3NE/r171UBlRo= + +Name: img/flags-of-the-world/bt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tajchmWCGTxpgIcQqntMcw/ZXt4= +SHA256-Digest: 2Qv80iOmLI0CruZT6iYdbpq9mldhETJMCxi5NSBEzr0= + +Name: img/flags-of-the-world/ao.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qS36pkAZ65J9tH2jwgztZ82v7Rc= +SHA256-Digest: c5cJ5xO05Ts/znhKkvxPbQoVGiMlrrUxGBuLb26fmTs= + +Name: img/flags-of-the-world/gn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: L7bxkiMCcgTBWbT66rdm6cGkpag= +SHA256-Digest: gfqoPUcxlIIB/uIGrJvg8oCtdAdonbxo6sFd0Er/DHY= + +Name: img/flags-of-the-world/tf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gqBbZy63L9GZZ7XiyPdBwVgEA/U= +SHA256-Digest: gDjloY9dnctIZuUOLj8oqzNVPubUTNuV+lTQMuEi3xw= + +Name: img/flags-of-the-world/nr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bNKUQVmwL/ODIOUQLPUQ+oG1shY= +SHA256-Digest: Or60aqWmPsiqDPQHvXJDM1K/ArnESPw4heQqQ29bJ1o= + +Name: img/flags-of-the-world/lt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ihL9kIkfDtS2Wyhjf4TMtcNXoh4= +SHA256-Digest: moqUa4vo6q+iL355b1wuzlt9MYdeDPVWRwMe/qeY5DU= + +Name: img/flags-of-the-world/ie.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 05uiSJbIXpFRjRIRDcq9ofwBpvc= +SHA256-Digest: qOQajyKLzVpO7l5KjsOp57Dnx1woP2BwbHcqrgjB4Q4= + +Name: img/flags-of-the-world/by.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pJhRU4aX8JicUklTI/Br4qW30U8= +SHA256-Digest: 1dL324sGGp8KZDPmCUVc2SgYnpZjikxhnVFucz1/Yqg= + +Name: img/flags-of-the-world/pm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XjZAdW8AUblAzJuBeaz5hoPVzXs= +SHA256-Digest: 8RwWawC8qhiOSPsyYXYpHFZ5yfxSdvii0hgMponZEKk= + +Name: img/flags-of-the-world/ir.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D3jIlA9wUpjDeWbt8Rxsi9MQz8c= +SHA256-Digest: 4IQ9LFXdNiNf4vQzNVVeSuxlb/buJBJbQlZQyR6L0bY= + +Name: img/flags-of-the-world/gb-nir.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hdS1j7ST6BidU9F25F5u17gngQo= +SHA256-Digest: 3NQgmclkDsMw03QSVNVpFN2CnVqCnEPILXYSiNcLzzU= + +Name: img/flags-of-the-world/ng.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: J4uwu2RtTBTv7xGNTJqErcaCrzo= +SHA256-Digest: OXCyzXGn7DdIPWbYoJGt/+GJdmLz5rFrHR76335KqO4= + +Name: img/flags-of-the-world/iq.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Clh0IUvI6FUz+Xa+dTGlakjuuSA= +SHA256-Digest: aUIl/DOzJinou8Tz8n/9l9RX0+zSj6EweUyXzXFmFok= + +Name: img/flags-of-the-world/is.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: csmyVC8bOqzbtyvczBB+akE1/A8= +SHA256-Digest: OF1NfXPCjj2QoQqwFN8n9UQ4pksEwYzIYjKKcahUwrE= + +Name: img/flags-of-the-world/aq.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qgA1QnhV2jpVK18HAKYwrEIpX+4= +SHA256-Digest: LS3J1Ro7MdiBwSB2ofJEjP9aRE5tVsbWkes2vPio91o= + +Name: img/flags-of-the-world/gb.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kDYhKuGf6t+wWblsXZp7GFgYMWQ= +SHA256-Digest: nXTj/9Y1FAfmXDdVBXFDrzd4njecGOSE2CBjRo3m3H8= + +Name: img/flags-of-the-world/na.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bSrq/2kX+gzJ+doH1V0amC+l6U8= +SHA256-Digest: A3qS0E/KqAxQ22ypYnTHpewaQcSo9n5wgT7HlaJR69c= + +Name: img/flags-of-the-world/ls.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: kO7/6iqvMchPV0MsLndQ/0ZWNxE= +SHA256-Digest: jBddEf0udQwc2dvo4krIZ+kwtKXG5rcaOotxypyaKn4= + +Name: img/flags-of-the-world/sb.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 3s0g7YfNmZ8Uu+kprPbdCPiqkO0= +SHA256-Digest: 5Dt78G/9aOc0Emn5vLGXzyPoF7Oc/rFS0uPNGmoXpq8= + +Name: img/flags-of-the-world/za.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6dEoP/831rpwqT9VTXfJi0qcVd8= +SHA256-Digest: fnc4MUVXg4y+kni9Rh6bLItJT6lM34JrZw7n1kjx/TE= + +Name: img/flags-of-the-world/pf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: S5wF5MHs17GQj530bcH36lEND4s= +SHA256-Digest: Il0Z6pR7+zpKWD0X/6mi0mN96TbsVdVA7Utg5beRhao= + +Name: img/flags-of-the-world/tc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pS42XiaNloqsTo4kvztZBdvl1GQ= +SHA256-Digest: sLlvVxZSHbUnOTxCmgn1HTNFfnHsbXLWzIni7lKR9xo= + +Name: img/flags-of-the-world/cn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: wQ2wCGFEg6lVxkqqJB2yU2FVbdQ= +SHA256-Digest: PHQtAn+5TjLKA8kmlqVialG44gPDGcqwSo0q6iXllg0= + +Name: img/flags-of-the-world/fr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SIuA/tjk5+UPrJpb/UvEIpwyyOY= +SHA256-Digest: NiBcr6xRHiRwN90JAR/ZuUzCuw1yQSbzMAGqOi+IF5U= + +Name: img/flags-of-the-world/mg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UIP+ixtSsE6YMUv3qE5ZNNhc5w8= +SHA256-Digest: ocVUXIoVqwthlts/b6sw+2KQukNOyMJxxTS1svN9i0w= + +Name: img/flags-of-the-world/am.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uoPaU48oYF7uHtnDadfjGcCa4PY= +SHA256-Digest: Wv5O/QEoyCgCT8ch85Dlv5uX7TeB/2XwPEb0l44vEUk= + +Name: img/flags-of-the-world/pr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SP8jifx/ct37W2Fk7e5hf5qPJe8= +SHA256-Digest: LR+xPU1sxuEh7i67/pHm7AD+lEEKBXayPewbUGLPYmQ= + +Name: img/flags-of-the-world/rs.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rTGrurhIHdgoQjH26nqsvJaKQo8= +SHA256-Digest: Qu9dZFDlELQxSUFkhd9INvv1QhYRRoY/LKIsoofoXU8= + +Name: img/flags-of-the-world/ms.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: z78tbgW/jpdfkXQL5gFJhIsn1YI= +SHA256-Digest: d1o0H5Bq8cGRmlbQWO1OqruYVb0OPoOKhK23LcHmF7U= + +Name: img/flags-of-the-world/nf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UWGEa2m5nl4pkqtnBunvYhYcRH8= +SHA256-Digest: hISUL37YgsJteKmNFH3fE4NTLwfywRJlvqa975a758g= + +Name: img/flags-of-the-world/bo.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uhvDLaO4C61U2wxYy6Z/KGABxTw= +SHA256-Digest: BNHuVmMIKtRXgttU/L08AJVVeSTewBeC+urNUkU6h4c= + +Name: img/flags-of-the-world/mm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: S/65q6IR+5nhvksMlRahDVA+eKo= +SHA256-Digest: cpNkkM+zw2NahYgSPH78f9RLGq5FTqDOac9WnpRXOzU= + +Name: img/flags-of-the-world/tl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vdh/D39HJ4UyXDYm248lokJlt2U= +SHA256-Digest: gPtzV66slgS9q4BsQEWDOXl7wfNnsJIJ7DQ2n+tTMIs= + +Name: img/flags-of-the-world/ws.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Ka1xzfhGwGlL1yN2hBQnhsR4Ers= +SHA256-Digest: jmSwVfCBtckKSdg0yMosNXa1M5CwQTXo054yHc4/W9s= + +Name: img/flags-of-the-world/me.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eRBEsX0DTpQJLlRFsJVgQ1r+9wQ= +SHA256-Digest: 5IjGhKz1Mse97cyiOBC2xMOTcCLMHKLoRmuCqM5N1D8= + +Name: img/flags-of-the-world/tg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: A7g9OY5GwcyvNDkFrVsH18sg/mA= +SHA256-Digest: VOmIeB0I7u/cr5HLNef/p3GoLhQKFxkU6dwStVH1Vkk= + +Name: img/flags-of-the-world/ni.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0x0VUqDP7yZzJEKipvIUK+UVvbc= +SHA256-Digest: CY+rtVok1lG9wHQNVqtLaHNad2XhMM8P0QXT51IFen0= + +Name: img/flags-of-the-world/re.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZAfdZ+JwoOQOLFWSeqp65LSAhkg= +SHA256-Digest: aNoDhGKDPJwOcKSllGLp9v199eZSo/WNiqw0UQ4OsEA= + +Name: img/flags-of-the-world/cc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WQdpXxSwH77IXi9Yvzm132X3658= +SHA256-Digest: KBZ1tuyt2eqvFlYwWP0QYYkse8eehc2Lsx7qCWGduhY= + +Name: img/flags-of-the-world/kh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aFfq+MkQUpRJcqvhwjql/N5JoPU= +SHA256-Digest: 6IqOxJRLd+/UzkH2RglgmwXKFHJi0VMfE2CV/KuO330= + +Name: img/flags-of-the-world/py.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ffC3L1XajmomUGa1cTBKw9MidbQ= +SHA256-Digest: eqCaur/liAoa7YYzkWZ7G6niWZ4eEq1rZXm2Bi/iViA= + +Name: img/flags-of-the-world/gu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 724Gd0JFhIQ+Fm6677iM36CZV1Y= +SHA256-Digest: 5B/IG5B8iCQYEiUmrNVcswbRFGyBEmJo9DtoPSwzvF4= + +Name: img/flags-of-the-world/mq.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rsmIjeYWagxqUFjROX0AUMOK7/4= +SHA256-Digest: a08DZQMGO6DOR2d5hJX0TJ9Wdd0QLjyxJiRoA/mezU8= + +Name: img/flags-of-the-world/de.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mjdChndXdSBam5seqMcthvg0gXE= +SHA256-Digest: K1wxfbT7NiuWJXXBZ3LJ9Wddro0X5x6oo/u6x2hYUWo= + +Name: img/flags-of-the-world/np.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nvEahkc2RS0TLaEa8V9xPqkx4PE= +SHA256-Digest: KfOcn7b9XtnSmUhH5kDJyH4Z6PC6GB7TzGvU2Bjo4+8= + +Name: img/flags-of-the-world/fo.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: p13wcU+YmYl+RtlKrekIiPy/rJ4= +SHA256-Digest: +ZUwFJJUr3egDyWi/rw8xc1bj77VEKlrptpSdNWQ6TY= + +Name: img/flags-of-the-world/us.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iqJICZiNJ4g0EnutzqiQ8NqJEpo= +SHA256-Digest: lP2P6eFOXfxkAUu760WL4kBH+AU8OKbNGgX2TG1Ox/k= + +Name: img/flags-of-the-world/rw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QCe5IHOd4FfOWJQhffvoZgMsBfw= +SHA256-Digest: lHPxY7RCVMh27qOxZyLWbYJ8tF2Vp3JdRYp8up/VH3A= + +Name: img/flags-of-the-world/sj.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: sKWl3fs9BCc9iEu6Eum/lkUst2M= +SHA256-Digest: Y44WJPWC2wMbMig0rbaylOIWbw0cecueRiQPYUFpOvM= + +Name: img/flags-of-the-world/mx.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yPg5FWKrugd6nZeFJIzH3vtaByU= +SHA256-Digest: rK1xOKf1aERJhOH0Kb5viXpS+tFvcPllO8yNZYmIHQU= + +Name: img/flags-of-the-world/ph.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: U2S5dCH+T8LqBsdGzrfPTH5t3m0= +SHA256-Digest: uig4gDgl6rtT5nlaFvP6CJRU5xi8Zy3C7DjAN2OGln0= + +Name: img/flags-of-the-world/mf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SIuA/tjk5+UPrJpb/UvEIpwyyOY= +SHA256-Digest: NiBcr6xRHiRwN90JAR/ZuUzCuw1yQSbzMAGqOi+IF5U= + +Name: img/flags-of-the-world/gp.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hHtkN2NvkjE6+BOu5Ux42fYxbmk= +SHA256-Digest: ey/I3LNNtuHb6uQpcP0ppWwrbeBfIfEfurVKTZFHOWA= + +Name: img/flags-of-the-world/sv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pNRuidSQFHqAhM5VtEvWQiRb/II= +SHA256-Digest: 2Z3YUB5QhaRS+bVfwBDpvdCS2/GFFNuId1MNZFrrY08= + +Name: img/flags-of-the-world/kw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1AUO2X3ESP/vzrxUH/SfRl6+7rA= +SHA256-Digest: 1EuS9+fyWbGYbKssdRjZ3E1S/hPDQKfTzPZlk3ChHuw= + +Name: img/flags-of-the-world/ch.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1BssGiH+Po0JCYQ6/9sJWqhb6xQ= +SHA256-Digest: 1/07Fe/h20GY6Vd8v4YahzJ2JMJxtT1hLQZMERS4sQo= + +Name: img/flags-of-the-world/gf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 38v1I3M8JHjatl3v2k92UorNjsg= +SHA256-Digest: sZPo2i5fUWYvgEbx1mqV0kt0LG/TSrcXVsZQqoevY+I= + +Name: img/flags-of-the-world/gb-wls.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: bIax1JG7RT6sRPpGm7NzCH30Ywc= +SHA256-Digest: sMBoVGvZ2GbFRQ3kmRsRlN6e84lAwQr1xlJuWQaFnP0= + +Name: img/flags-of-the-world/bf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: C90JREJQZul/Llj3O2WifgdMQI0= +SHA256-Digest: kRWDXLbs4DjAap8oxIT+A6OdZewOlcg57KsdKEBVLIM= + +Name: img/flags-of-the-world/do.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: OszBBrlKzWZi5wDLZc56mK37v2g= +SHA256-Digest: nYcc0fIxUG4OmcgwMzYeFE1adoafmR/sXeEdmm4Fm2c= + +Name: img/flags-of-the-world/bn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jBXAshHKC/CH2N2Y/RqYw3jLl2I= +SHA256-Digest: csUJfWBcXbOKUwYXheatc6QzskXKzRISDsJMQT9HcUQ= + +Name: img/flags-of-the-world/et.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Q/F1at8GqYfUTzhHG4N84x/D+0Q= +SHA256-Digest: CJv8IOeihlDnbpabsH4d8OGjyh3w6ZQNT7XAdJwYxLk= + +Name: img/flags-of-the-world/ba.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: AH2JmeOyoQIjHcDVN6SSz0EPuVw= +SHA256-Digest: 1vDUC6NQlwdW3VMCoaPbx3LMp2QsAz6zH8u6Ae9Z5Qc= + +Name: img/flags-of-the-world/bq.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zeQObEsXFEgNna0eeLYADyPeBNY= +SHA256-Digest: BKJpjMz/Fe0Mhl5oyvtgg2RTr3DCOU308hJCh8fWIxk= + +Name: img/flags-of-the-world/be.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CMnZpTLqK9SyZWLrAC+bWXXCSHo= +SHA256-Digest: sgvkfWChjtEbA+GZFNosSmpr89RqWTES0wBkbZ9IUYs= + +Name: img/flags-of-the-world/nl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8X47Vy+4qMMnu+/BAkoyelR0VvU= +SHA256-Digest: e8PlX1kgTWGmIQmElxv4LGkZrsSFAKRXe44E+j+FbHo= + +Name: img/flags-of-the-world/sd.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: V4heRh0sjLXFJ6nRfdjKay2hw1w= +SHA256-Digest: wZmeGLcUeFbSVGtRq4srIber7gingQZc79C6sRhduzs= + +Name: img/flags-of-the-world/tr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9fGVby9dO8SK9rOrydjWXfCgXTI= +SHA256-Digest: NM1e+/K3sAvShnHeOns+Im0EvmpjT4vbT9ktQyTOhsE= + +Name: img/flags-of-the-world/kg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: EzYzQGSg5cp6MBFOcls8t6op/gs= +SHA256-Digest: oMX6oKXGbwLQ3w1igOCpoBKyQ7YEDTJH+sreWNcSxh8= + +Name: img/flags-of-the-world/mz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: M8sKOwKTgM+rB9jXtZCNyhoUBWI= +SHA256-Digest: j/3bhajwK+Y0wGjtKykVwtaDQtgdQ2CGx+Ws5EhIWk8= + +Name: img/flags-of-the-world/mp.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gQzZvyUPwvNhGqYvo5oYNz08DPg= +SHA256-Digest: HWoXr/dIXX/JMNNYAHYfJzXW7rOYwVuAQo8Oq3JcszY= + +Name: img/flags-of-the-world/xk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yJL3GZ5NFshpFqIdagdKijes3bk= +SHA256-Digest: Swk7idHbxxBdCoXlsJxuu4UUh1OzKCT5ilL/7GWg20k= + +Name: img/flags-of-the-world/ss.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zS5F1RIuvOvnehNZueTUBOd93SI= +SHA256-Digest: 6PIgXSqNAMOvFoO/4Al1JgZu0uQBA/Z+EpYb2TnT108= + +Name: img/flags-of-the-world/ag.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: F6glHPlqVNt+/3oGRm9DYJPtgkU= +SHA256-Digest: k4O4OqiP7NSK/DEV0gs9qHneG0UaK1oVz5SBd8i8etM= + +Name: img/flags-of-the-world/hk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1AdYvchXMEpzKmiGDk1bkMBiWVo= +SHA256-Digest: kZ4nSiCf4/qKjOD2ev9O9AZExLj5GOb2exqbFL/UeH0= + +Name: img/flags-of-the-world/tn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: a7Sypo2YI4CNQ+LosESMW7RUbr4= +SHA256-Digest: BmSNGk8oKnQaMWcG5cm5iYopvO2Bsukqh2PE69BieBE= + +Name: img/flags-of-the-world/ma.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: RNSX7Nf4Q5mEUFcNH+SMFl28CbQ= +SHA256-Digest: XOk7Dc+XFq5r/XwNTlyLNQAz0zNXkDuiA07YwsRTRao= + +Name: img/flags-of-the-world/bl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xvXd5f8tgCVjAM8gdsZnGZkGtAA= +SHA256-Digest: G63ue5EoduEcsx5CRQJexaNvB86JKoDoiORQD3b4jVk= + +Name: img/flags-of-the-world/cf.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PEc7nyz3qL17pLF+K1YaPnazHpM= +SHA256-Digest: 2t6qKA8eJSqBQeqNlqDDMZGiPdsXKnn6kgd7BEDd3pM= + +Name: img/flags-of-the-world/ke.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aPACrUhEwKwBTQfL4fA+4z1bV8c= +SHA256-Digest: mZL3LbCJwLpmE6A1YtqTl4EoGMzpy6foB6+VEEUVduI= + +Name: img/flags-of-the-world/gd.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FMJ0q3NOYPC4cin7Bb6eqEY3DOA= +SHA256-Digest: Hqk8SDocrF7TEmr2wn4LXHjJyw4wiI3Pz+57wyVI7MM= + +Name: img/flags-of-the-world/er.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eUF2Te7GnCHV/VHw2IXufmnFYOE= +SHA256-Digest: sTOrRMnvRwqJx4t3inQp3rXoAbNyQez+VWdpd/+i7J0= + +Name: img/flags-of-the-world/gi.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: twLmPp4YKXhUVrpknTstXlw3GmI= +SHA256-Digest: ckNmAm8VxjVuBUBtS/abslZwSOJH2IZq/WV7+ycx7A8= + +Name: img/flags-of-the-world/pt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 43PjnXYN/L5F0zxhNfCMrMl+SB0= +SHA256-Digest: HP5ri3iHKlb2eI3lR0e6FRR2sieZ+ZhQtlZvxlMFqLk= + +Name: img/flags-of-the-world/bv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: sKWl3fs9BCc9iEu6Eum/lkUst2M= +SHA256-Digest: Y44WJPWC2wMbMig0rbaylOIWbw0cecueRiQPYUFpOvM= + +Name: img/flags-of-the-world/bm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ge+JsEhPtKMJ79PChS9bsWtlspA= +SHA256-Digest: 3XPIUDtnaonqZ435oWBaAf6rzW6+5VWmI6KWDA89ZP8= + +Name: img/flags-of-the-world/ki.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: zy51fTWHfSrf0pbgcu8Dmf+XPMg= +SHA256-Digest: mjopY0EFa7PTyksrAKebIS+reT/huKRbxuKDco8jyNw= + +Name: img/flags-of-the-world/bs.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: C61HZtBpXT6eFUb8fLQLVGtmzAc= +SHA256-Digest: VQ7lb4VrnTXDdkWmP9iDvnpf6I+sA93KJ/PyQmUn31c= + +Name: img/flags-of-the-world/kp.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2ZocIQz/SpjKLeID2NxENNOf/Bg= +SHA256-Digest: YzEeBJJv37gRPIPh13NXeoW5osjBD1gDCEmgtzy6grE= + +Name: img/flags-of-the-world/pg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xTFUxxqn6jrEHdp7qmb5dhYl4bo= +SHA256-Digest: Y5WlsbpUiQEzPqebDTHkjWYZMJJjiIIDV4KBeTzLHro= + +Name: img/flags-of-the-world/mr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CAePwY8/+hDOlSCSwk6bIufGXlA= +SHA256-Digest: PiwomQ6y7iA/G03+jnqI7kqI9eBPPgXAKIHlWgklibw= + +Name: img/flags-of-the-world/va.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Aqd59WBb5VIeQ0mYkIVTqZI7qFo= +SHA256-Digest: fW4AmTRRhu76fvnOpixp76Qpnl0qGAosqk0nbZf2HDI= + +Name: img/flags-of-the-world/lc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: td3bFLFhuoVPYKa4fdRmn74k19E= +SHA256-Digest: vzfrHbvY6Gg8/q8GdxOzx37MFofwg8z0d3pJ/Fc1Ctc= + +Name: img/flags-of-the-world/README +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8/l8520syX/S9ICM2bJXacB5qmc= +SHA256-Digest: 9SkNsoAHrI0nT0MIMZDDw/GcjBDIJ+jskOGg4Gqg5Ic= + +Name: img/flags-of-the-world/ga.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QBpTxYo3T6BvjDg9Pr/ItkctDAs= +SHA256-Digest: BSf/r/bA9QUI3yzGXIX0I6aaFC9MUQI5zlvZAhv/QCE= + +Name: img/flags-of-the-world/tm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: atm1wAQdFooGsbiNaJaGwEnimjo= +SHA256-Digest: +c8qiseFKjUMlLpVRvjaRomiHqx+6AUFaIhrgMSfG5M= + +Name: img/flags-of-the-world/mv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4nsBeGAajBhW2SEG5WOHJSQgKJU= +SHA256-Digest: i1IX93LIe5PiI3bmz/Eu02G58X9dibpoaBK6dDUFM5A= + +Name: img/flags-of-the-world/tj.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: g4vQAdtlnoxZeML/jpDkux+e3+Y= +SHA256-Digest: F67HFZ8yuDJdYW6Dtq5JmB9yB136j8j8Iz3tRhIMiJ0= + +Name: img/flags-of-the-world/ml.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aQtqPE3kt3Tzrem5Rrtb03O5UQs= +SHA256-Digest: 3nID7f02dSk2SJJXL8sOyaJz4ulMgy1W919TzXct3os= + +Name: img/flags-of-the-world/bb.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: i2XrRDk86g+uFOnqB//uEqqWdKQ= +SHA256-Digest: YBqnyb46ejIAwZyDqNU6bXTVqZOeidcOWKsQkNkyzmA= + +Name: img/flags-of-the-world/cx.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: OOzHpqG+qRri+N4t6fZlM3JLdLI= +SHA256-Digest: BHxC9d7iFT1QHscoYb6ZvoWtmfCfI8HoMNcimPeapzw= + +Name: img/flags-of-the-world/mw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: m8eysgSVac7VUs6N1sJNxShyCls= +SHA256-Digest: hg1KLlkHrux4nkbY06r4G3D6Asn0jy7t/6HEMMykh6c= + +Name: img/flags-of-the-world/ug.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xG8yzQLhpq8lIOfH0DbKAHazuKE= +SHA256-Digest: H3Ua2xPEp0E9zYtxvQZlig1YDZyeqqKMUKCsOpp/KI8= + +Name: img/flags-of-the-world/ru.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Wzp2+Nts3ddP0catqAdS9a3w8uw= +SHA256-Digest: +YzXLTsu96aNtdR3UjgTKQmPL0S4rYqxUZ81VF68YsM= + +Name: img/flags-of-the-world/sc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4jkN0Wq20/vU/h//bziCGwggPkI= +SHA256-Digest: Q86kbn5Peo71N+Ei6rlHTJYLMbWtAffeIJzFYY0V2EI= + +Name: img/flags-of-the-world/hu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Nlh+6ZiQ8lryubrQYLEUVkzctnQ= +SHA256-Digest: rk9WPfeoc4MgmI8DOPLexm46VqHShHYid0on3ZENpA0= + +Name: img/flags-of-the-world/gy.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: +H8oTtyMghdfUGv4iDQtZ3DvZ+M= +SHA256-Digest: CrNGnJoa1GUUf9iKWrU+04qfh1F63CL5uet39fcoO/Y= + +Name: img/flags-of-the-world/la.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jsof1hNt+5htbuwe3mMHf+dt4nM= +SHA256-Digest: /9J+osYGQO6mQ2sYDE+7qrn8rW5aPn+oZGoQyPsxpTk= + +Name: img/flags-of-the-world/cg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WkpPTtUzhVGfkPLf2Y+e3o4isks= +SHA256-Digest: ZbOo3hLYXzLWHiPJ9oTy3UbICq/abARHrKzz8ytxDNo= + +Name: img/flags-of-the-world/lv.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aIFdlTw6P39yyJ34RJzLE/aPSjY= +SHA256-Digest: rP9phTv4N97ldHJrw+LZqCdNHXjnIifUhJRxRZI0m8Q= + +Name: img/flags-of-the-world/cu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gn+lesiLbzNACWl9p04M8qNc7fA= +SHA256-Digest: hSYwZ93liN4HNWzRprwQVk1qEx2K0SUd6fbBUMdl9e4= + +Name: img/flags-of-the-world/aw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: KrHgzexS+VC8yjrFDspLGS9B9iw= +SHA256-Digest: qv/w0DOnfQ5ruukZVzWGST/T0EsURwonF4uaY6uR11Q= + +Name: img/flags-of-the-world/br.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: LLCn72ZNdbMHIsVKTP7u8keOvxo= +SHA256-Digest: nshn36eAL3DNAr/xwbLygm7mwnxJDggAwpcmLqhSkzs= + +Name: img/flags-of-the-world/cl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: rwCuhMkd3LKK1mKbmQlRPnGoNPY= +SHA256-Digest: lO4ndxmUkHL1oYiW9SFgdEx2mF4NrRP1h7kN/vYpA54= + +Name: img/flags-of-the-world/mt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0EbDFsL+5AMrMsKHWmvoVkpqKWw= +SHA256-Digest: awbQqfFH/nKXpxHWx6uEhGpr0weCiy50dTT+gSM6gGA= + +Name: img/flags-of-the-world/gq.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XyRtfaCbRiuf0nL6gq3O0/rIwpU= +SHA256-Digest: MdN1nj2UbweGmJmU4BGFU1cud0a2XnIpjb4qSDymhes= + +Name: img/flags-of-the-world/au.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VAbcPIcyy7o8aXhaGWDzCXSE5GA= +SHA256-Digest: 5mRQFsIRYOEksTidK/XniMOnz4cwxclh/fRg/Rqsdkw= + +Name: img/flags-of-the-world/td.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7si2MiEE/Ge7QIEOj2YhQLS0dqg= +SHA256-Digest: FS/d9uRlMsEQQEMiNg1qcSj2NVgVJCam/Dt8iECnBy8= + +Name: img/flags-of-the-world/ve.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: g8b3Mzx6km+03VuDZ0mB7FB6j48= +SHA256-Digest: GKm4uDCyERCgEkA+xqacyf9MLXbwwc9/YmOpYbU2CMY= + +Name: img/flags-of-the-world/ar.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: WkeRsytuFn2aWZzFfRdI6vWV8eg= +SHA256-Digest: XZRdWz3KMJScNCcffZBmUeC5og91okicgvlva/M6bPs= + +Name: img/flags-of-the-world/pa.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hFeEcDOdjC9qi+kZo3JGw4l77jk= +SHA256-Digest: fjQ/08VM5fVecuZlOJild1KOoUwNpzjt+W4NAiplzFY= + +Name: img/flags-of-the-world/il.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UJ5luA6KjDOpARiLW9LmiXP3m0o= +SHA256-Digest: MXZF6P4nnFxhgzX20PlV6o2Mdm3mHVZf8LaJ/nMdEnM= + +Name: img/flags-of-the-world/eh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: pjjSNSLWGBlkimoj2No8jeSC2z8= +SHA256-Digest: ZgQdpoKhd2nKnPiLTGBy4XxrAUlaja2ocfM5XS8Y3TM= + +Name: img/flags-of-the-world/mu.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /gst9bLSKX1ZBKMFk8vLinBLhjQ= +SHA256-Digest: 80hzNHFif9AwJ28eZKtkZGSpirjly273ubzc/rTOjIk= + +Name: img/flags-of-the-world/fm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: cQB0/gS9oWORIaju1Ezs7TBr5KU= +SHA256-Digest: iGZsjdtT0ra2urFY3Vyx8burgRRx/j40Y0G1AsFn8CE= + +Name: img/flags-of-the-world/no.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: sKWl3fs9BCc9iEu6Eum/lkUst2M= +SHA256-Digest: Y44WJPWC2wMbMig0rbaylOIWbw0cecueRiQPYUFpOvM= + +Name: img/flags-of-the-world/mc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gnfAl1lg6riYLuLLKsVu9rA2DhQ= +SHA256-Digest: YB5HKh/EzpexxCnmZBHGSFKI9GoSbQwF0soohiea0w0= + +Name: img/flags-of-the-world/kn.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4fOwXb//tK1/fcz/pITNnB1JYwc= +SHA256-Digest: YepvbpNSlXFsLOTlzekmT7sF297SvccRduqFhBgTC4Q= + +Name: img/flags-of-the-world/md.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 7hd9Wzg7C+MFb9GQ5DYmSomM1SE= +SHA256-Digest: Hh8UZkYq3gl2vM44Em2G/xSjn8j9hcpgpXZZCWXaWE0= + +Name: img/flags-of-the-world/se.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /En5T3kxNDQSJwUWbH8u6duKqZI= +SHA256-Digest: rFgEDYZVvtp84hcFBr8SiRh/a9I1fZBzCNsdF+dUDOY= + +Name: img/flags-of-the-world/in.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: IqDhNFgH4Te372NpudlkZHfY+1k= +SHA256-Digest: 6mh9DdtGoOvmxmblYPn/glIS1iiD1zIxz1p3mLEznzM= + +Name: img/flags-of-the-world/cw.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Y12Tln8BGaK2nle3BZx2vhI1+Vs= +SHA256-Digest: ONIYyrAPlZzuPxCfR9VWE2Q7+mBVeYsa3jHmTU6uF70= + +Name: img/flags-of-the-world/bj.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 3x0FDisW5bsiikzbli5LcuDh+VI= +SHA256-Digest: WByXRswW9tYl9TH20Js1lm+XPEUgvzL2F9hhcGbTuuA= + +Name: img/flags-of-the-world/uy.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Up07WpW2wxjc1MHMivCYziVxu2Q= +SHA256-Digest: NlrVkGL5ZEQCQMN5IXIV0Ln/YDIeC7eWm4z2/XJfgEA= + +Name: img/flags-of-the-world/pl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: obK68Rj8ng9qxATiMtz2kaHw3sI= +SHA256-Digest: R/5oTvikDPQEs91DO9EEx0zKTvYkkO3eWaKWQ2nk80E= + +Name: img/flags-of-the-world/fi.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Ent15s0sDknuDURNBMCjVqTLJ6o= +SHA256-Digest: gaZUKqcHZQL3SEXDD/UuypGQwG5QsWrq6Evp6jSziJY= + +Name: img/flags-of-the-world/bg.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: uW5ktxTFWbK1B5Bh+pMcq5pws/M= +SHA256-Digest: Y8nsqRH4jqcAH0WrIDNyKMwPnvd4wjSfxpUJnfUH/18= + +Name: img/flags-of-the-world/vc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qH3fLI2xN53BEKK0QPgDZ9D8a1w= +SHA256-Digest: NAxPYJFxz5NMsGA6kTgdkHjq/8BmwZ7oC6WQAt4Ltwo= + +Name: img/flags-of-the-world/sy.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nTIhLBFPM60HnNRSuJHdCrqvQNg= +SHA256-Digest: ioXsDguVq3SdhlF0lr4iyisev9/YzQOsFyD4GkvKaNo= + +Name: img/flags-of-the-world/ye.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZdBavwPZxLfSbUebkpNMT/33EDA= +SHA256-Digest: aeQz/7oPzrkTpQif+WIfMQAtxhBGX3eVmFFbdsTtyGs= + +Name: img/flags-of-the-world/bz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PmgOFgs1GqBd/Zwm3V50S7HDmyg= +SHA256-Digest: H5hbO6GdI97LS6M7a7k/Bz27X406mav6F9zQV1Iji4o= + +Name: img/flags-of-the-world/lr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VZtgcgv3oNDdmBsFfbpm5aMyHrQ= +SHA256-Digest: 1wtjGnTm+fNwtckNdYLPeFG91lGxydn947HXp31dwHA= + +Name: img/flags-of-the-world/ck.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Xtqbn/uXOFcoxJ1iUjKiHbcNtu0= +SHA256-Digest: ek3NtsI+sh3XSUfVQw5bzUBDiBPGFKqdjBGw0UgNHYw= + +Name: img/flags-of-the-world/cr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tqkZNFTpJ1tMAtyzT4JwU8h0udk= +SHA256-Digest: WQUurutNOA49zlIESh6P6WPyERr3a6y5q3nJekxd3Zs= + +Name: img/flags-of-the-world/gh.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NyaXcwg5nFGsXvEIRRRLgkQPRiQ= +SHA256-Digest: hDJEOhLmy0sSg74HMctZqDJzP9Wa6M1jYFllhCrWIFw= + +Name: img/flags-of-the-world/hr.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: I4dbsaHB3VMmhI8vqqs1K0Zc4Fg= +SHA256-Digest: L7ww2JvhNlpJ+CyVnIsgY5pJiqZLOXKmGuV4yR6tNpQ= + +Name: img/flags-of-the-world/to.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: e4QKOoqnTWOMKLbEwcxyzeRJYVE= +SHA256-Digest: JGCXvtFAAt5SnnmsQSP0O5adqWxae1AVE3qNoFXWLrI= + +Name: img/flags-of-the-world/ht.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: aS+emQ6jUmBorQs4u2e/197BP/Q= +SHA256-Digest: TMrNWALW4cnYOYJbjefTaFYSBcSmgybUhIIy+K8lSYs= + +Name: img/flags-of-the-world/cy.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DtCWn3Q+VGLaam2DDbHDTh2yrxo= +SHA256-Digest: tLPv7k6yTJ/+P2dQLbzavLTQZR0y++HW+7StuuxAfRU= + +Name: img/flags-of-the-world/al.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Nf5e1wvCEg8+cC9pm9cGXhOBJsA= +SHA256-Digest: nbGKVH/BjmsvLqr3Z5UOxF9CW0JiKbs50Qw79/juGkM= + +Name: img/flags-of-the-world/im.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eckbFyUk7Hj1kr2nW2LUvvyfkA4= +SHA256-Digest: exfHlJO1h/WPFzkgVEVvZEkbHOREVCuCOU2qY41xQvA= + +Name: img/flags-of-the-world/lk.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ZPhdkQIrIZhvB1uSMkQV7O17z34= +SHA256-Digest: n6sc/6xYZ2vBCpjDMfs737M5SsQkr8aGQbl15akdzps= + +Name: img/flags-of-the-world/nc.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9aLjhz4bzC2dIyRLdC7xs5nLzew= +SHA256-Digest: ONcx7oh1PE9/8w1VSa7Z/ybq7+FxSId/ICIy2B8772k= + +Name: img/flags-of-the-world/st.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 0YpSK92UuM80bxyTvX8QX0jiPBg= +SHA256-Digest: TJI7moavlKF6vtxp76M9Bi0tKFm1s76sh5DmTEwOoHQ= + +Name: img/flags-of-the-world/gl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qX4FQszg/VsXi6TWxL5MLadSgi4= +SHA256-Digest: sxKWr7+f4d0QgayFl2TgclVlh6kanb6QAqfmABl2ZAU= + +Name: img/flags-of-the-world/zm.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Re18zHhQuQiHLL29cF/h5vYPL5c= +SHA256-Digest: Qbx6vvqveF/ufyZeVyefFvM0IAzFl96zwdBkzsC+JNw= + +Name: img/flags-of-the-world/ge.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1VDyNNsf7F8tU9ObdrQMuABtLDM= +SHA256-Digest: LE7MWu416mR4PyOvSDIJYJPiaVtKZ6GcLGxJYTaaKho= + +Name: img/flags-of-the-world/vi.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 4PYciXAsoFeWmlWjqmSNSYVFfX4= +SHA256-Digest: NCaheBtzj5jyRGLpjWW3IekHHNKZ4+iXAPkijDNEM9w= + +Name: img/flags-of-the-world/sl.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qmdIDoAd3gqAPWWBxC3OhEUj8a0= +SHA256-Digest: Fy9pIn6Zh3ZHH7DADQRK6kXG62GNQKW4Fr9kr73liTE= + +Name: img/flags-of-the-world/gt.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: A4oaUU4HQTzgVdSqs2dYNk+mieQ= +SHA256-Digest: vM9XrXShNQPqBGlsvgNrpIOqZCeyv6Lvv+BUQWwP+3E= + +Name: img/flags-of-the-world/dz.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: X38RpXLg1fWdwWkKab36NSfUtts= +SHA256-Digest: gCPn5Cl0BdjnfJVy6LlvS4o4NnCzmhB2oXSFrb3ZlnI= + +Name: img/flags-of-the-world/qa.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PyCVs9O18SQLEYAn2Y+qgQlBwQs= +SHA256-Digest: e5aVbm9PB8yTmXrvMu1erAbpT3kPeY1VJmD+VG7hG0M= + +Name: img/flags-of-the-world/az.png +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NJIV7NeRagLj3THQOYG/gQolaLQ= +SHA256-Digest: 1hwtWYDTjIkD15HEiEsOY1rwng+zGKCOWe8TEJoz/2g= + +Name: css/dashboard-common.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: muYbP0RgzKF2QXa6Ul9LGLgMLXs= +SHA256-Digest: kruPxuBkEOc4XeKFI3M8z//qJXr7gTEWm7liL3dhorQ= + +Name: css/dom-inspector.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6tXD3Oi5C24EREZnkzzFAc8ObDg= +SHA256-Digest: 1MLcLLr2ic0QvwQt0DmHg7wN9yeC+gqvmsUEGAmiIG0= + +Name: css/settings.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xeKu95Qo0XdPW8wSRFHsXQKp1aQ= +SHA256-Digest: ofG3IjfZFMS/X91ZOakR4BuZKTmCfavxAPqdVVRvvpk= + +Name: css/dashboard.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9koMcae6HRkgp1b2mCORrdNBXbE= +SHA256-Digest: KY4r+T67t5/U+DYJyipG0Rnr7DrLqgWBF44sl6qWgLE= + +Name: css/fa-icons.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: guqKDh8bQD+pXAyjcbAp8IUojDc= +SHA256-Digest: x5L73HBwt/ufaiU3LAsESqUd0poiOsIFu+UL5qThQxc= + +Name: css/support.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iXUMk/pJl/HKYnCfjEr+1MD8MAc= +SHA256-Digest: C2lnfJontdOli/MKVqaarllX5k5brJ+t8dBCw+Y1C9Q= + +Name: css/common.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: FvLA2LrM0JxaOnGPQCf3xcj0L4Q= +SHA256-Digest: 6atjvEzbeIGlfQN6eT3AfpdU9ZhSUQeCFQmq87yhkJA= + +Name: css/document-blocked.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 2GP1OFJTCsf1qXPB1kL1seG5beo= +SHA256-Digest: eaqQ0Gs4avYmPHpewwxgXdOnx21eHPpax4Vd39bej74= + +Name: css/devtools.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: w9+EjOpdnFIEjZJzt7TCrRwLFzs= +SHA256-Digest: YO8fCS/V5O1ueOMQnuLUVfnCLMareN0yv7QwSRrsLss= + +Name: css/logger-ui.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /XrJERmvrDBj5V+hMMrVGXBlb3M= +SHA256-Digest: l1Jii8KDbC6jxB7R26aJ4GiztsqR0ZdqP44QN2iktyk= + +Name: css/epicker-ui.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: D0mkW7aiDzDDwnWwUg9+2HMGdmo= +SHA256-Digest: Cv6RKLNLlY5+OWA5VSduNf/CGftitkb9OZS6mtjv/j0= + +Name: css/1p-filters.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 3rO2+jzuPzDduApNCvPAhoYW1IU= +SHA256-Digest: 0SD5SsSq8FEi5Y5PScotlnt6iKmEUJzIzPUQcw0ZBm8= + +Name: css/cloud-ui.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Kp6Co6dYdGhOisU1oTlQe3W/jok= +SHA256-Digest: kxmUCA55Cl2RRQ9N9ube0j2c1ZTXb3ftBKYfHgAFPPc= + +Name: css/code-viewer.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: YPcHEUHoMITaLMJfDL4g5mhi4HM= +SHA256-Digest: ghFCxtmUNYEgpgBgIwb7NO6eyZbuV5uuFm2RZdwHDSQ= + +Name: css/codemirror.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jtvPzjEo9HtcNOG8WcGg02m8xRg= +SHA256-Digest: 07Ae6hR9kJUoFxKpW5Zej3N9IyPie/VjCjIZ2qnsR3w= + +Name: css/3p-filters.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8AeJcyfrfQ6n6fG+3PXZSN0ukas= +SHA256-Digest: E+TsftWXtYWEAJBjS4fqBQXNZAWxFEBtnu/2RtDCTgk= + +Name: css/asset-viewer.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: EVFkxzPX7Wo6w/hXLz/1kQ5+4iQ= +SHA256-Digest: OySBQSC3UDyaAIPwwW7mtSQxaIz8bP4fkQAUmZXweKc= + +Name: css/about.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ab+vt5uxYLkfO4O/ByNK7QkOJXw= +SHA256-Digest: V/QtQofTGNP7zD4mIs4dZIR3kQu459vfG8AURDBZs0Y= + +Name: css/dyna-rules.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mV+GSC/9ZkxtbC7kZYLSBd0VtVo= +SHA256-Digest: 0OuRRj3nAPILETDwEDgc5u7MAd7bIO0Qa6+AbUdcdT4= + +Name: css/logger-ui-inspector.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nhAP53tD5LdbVCbdnA8GPDKLXUE= +SHA256-Digest: Sr9hzO9meAZTI2aOckgGapHlfnMGjobnJGSA+O4ENIk= + +Name: css/popup-fenix.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eQCxIB61HzUcwdS/nnwbiobgQE0= +SHA256-Digest: F6iC1rFUuAVgJ57Mmng45n9XUbmfm1owrCOQMFKtwcc= + +Name: css/advanced-settings.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Rg9jGTMOlyoDTSXShZAEmVqzV54= +SHA256-Digest: fPKxUmsvmUDIQoek3r7dgLkrt/lWRZvBYw9KVXNsMaY= + +Name: css/whitelist.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Q3/rSH61yhSzxz872E/AfmEOoCw= +SHA256-Digest: otpDG66BCBIMH/9rbt2iaZhvKdhBEn5qES7Qz9KOaqE= + +Name: css/click2load.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: LgE++ij0KRfuBzq6iebmwbDjO1Y= +SHA256-Digest: dbgbrRvtTnNF51boWNa7/Ovp7f7PqhgOAwez+hLhcn4= + +Name: css/themes/default.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: VnlTUGGxMW29kciBuvUwkCq18L4= +SHA256-Digest: nAxvCAjPuwkJjE1sKavLIBh4YX2z/GwXw9Uf/+hvMl8= + +Name: css/fonts/Inter/Inter-SemiBold.woff2 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: nMKxDUGGtjyNkL40YGmyARRRiXw= +SHA256-Digest: XLcQPk5gWYmv68A9mJx5IB5UshtRg9szmB9w25F4owE= + +Name: css/fonts/Inter/LICENSE.txt +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5fdies0+OEjILN8PKPfOYr9t+BU= +SHA256-Digest: gFelPP0IAXfbs8BAEpK65ZX575DzOoUdRpjvIzDjrUE= + +Name: css/fonts/Inter/Inter-Regular.woff2 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: t6C2++vEDrKbds8TXEt75QuYG0s= +SHA256-Digest: 4G9rG8VTqupORmgCPtCrChRxKcMQf1Ebx9A9NhsK4IU= + +Name: css/fonts/Metropolis/Metropolis-SemiBold.woff2 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QLDzmDoPR1hAC9B/BU72PMEDOlM= +SHA256-Digest: aVhw0VaJwE91lV1vXD48A4QdQ1HUQzL0BJq7D4JdxuM= + +Name: css/fonts/Metropolis/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: et4GCm7QfELYtm85MjO1suZUTK8= +SHA256-Digest: UAvwKeM6VZ8jYxqXwtcMFCvYfRKGPAaofj0aVgKDdR8= + +Name: css/fonts/Metropolis/UNLICENSE +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: /wB84R8/95ZPGlsEICxOlbXILIU= +SHA256-Digest: fhLl30uuEsshWBuhV87SDhmGoFCN0Q0Oikq5pM+U6Fw= + +Name: css/fonts/Metropolis/Metropolis-Regular.woff2 +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SLtMsKmburkHSHITw760IRovVCc= +SHA256-Digest: 6SDmsOeYes643zJlbQHUQFfiwIZGcWIC1ZTga1AQrnA= + +Name: lib/punycode.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: NGJrrELOsKSN8CxpBfdhHkP1VTc= +SHA256-Digest: MpJJhWqCoC9p+y2Sn4ngKu+msEzKTvajub6/pI1ugkw= + +Name: lib/regexanalyzer/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: dtqOOYchUOeoE5c8uYX+UxllfjE= +SHA256-Digest: nHqMa2l21WmW/BTbkVViv1OkPl1TMdkOTGuQs/H7scw= + +Name: lib/regexanalyzer/regex.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UKW5A4ZzGMK5Ii9x28Zz6dpF+Lw= +SHA256-Digest: UZEUnrJXf6t6Z+8Qx7s+Flx1x7JCpPnVIV0OdYmhQcs= + +Name: lib/regexanalyzer/CHANGES.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: gpzJtjwovpLDLTeM4JfJbpkFLzI= +SHA256-Digest: rMANQkU/7hCabm4k33RO6zMhTz+GlruipynTX5bp5nw= + +Name: lib/publicsuffixlist/publicsuffixlist.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PgMYRleEMGQYTFPkXx8SYlDwNYA= +SHA256-Digest: KCKIu0Sk/QqM8hV6tk6oKWOCDM5Of9VIPs3SZuZ1Xus= + +Name: lib/publicsuffixlist/wasm/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Gq1+cPul1jyTgj539R2IwKluuTs= +SHA256-Digest: lIn2BUoWbJU70xuz5wH9JUf/sELVD4rF0ZHkaOFSAMg= + +Name: lib/publicsuffixlist/wasm/publicsuffixlist.wasm +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eiW4nGK5lXkajEz8r6yF4PPrHic= +SHA256-Digest: LyjWWc/o7iT2eselm3f+Hdulj56HVfldwlQY5sr2BCU= + +Name: lib/publicsuffixlist/wasm/publicsuffixlist.wat +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: qyp/ExBXQcv7UNoITRThQpDMtNY= +SHA256-Digest: xfeExoAsnkXnMGrlxWyyz7yuLnyPDr0GgogmN0Efd08= + +Name: lib/js-beautify/LICENSE +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: iqLfBE+JAwEe//TSsKeNo2tLIKM= +SHA256-Digest: KClxZ3Xf2sRUZ9c4TY6xvKoa4YaZTu3KD1E/sJA4wTQ= + +Name: lib/js-beautify/README +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vSG0VmU9LFe8ZFGvaMts02Z0v9U= +SHA256-Digest: fAkL11yFefVyv64k+RGe8KREQ67PcV7ygi9WXPizjTQ= + +Name: lib/js-beautify/beautifier.min.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: vGmFDzIN/QbZ07CnBhSYt/Io5+0= +SHA256-Digest: jlIsJcJqkOQjBaJicXhYpvFSQGBDGNV7vS9hmCYcX80= + +Name: lib/codemirror/LICENSE +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xDV1SZkf1wkNCstoXuFc+yohV1A= +SHA256-Digest: o/L+Ksa0caqAxzfF0oPdBJvckDpzg17m1NLKwC/dU78= + +Name: lib/codemirror/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mJvq9ezhW+5B8ypazBe3WA3l61A= +SHA256-Digest: 8XXAJ2hANl3l3fkUBIyGcsoO5knKPdDXObsdmA3793o= + +Name: lib/codemirror/mode/javascript/javascript.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: jiUCRuD2wpRCqQjoaD+EUfNZlv4= +SHA256-Digest: XxB90cNdnOuUFQjAE56w4OBTdMu5SHChSz02/Ki3oAQ= + +Name: lib/codemirror/mode/htmlmixed/htmlmixed.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: by/7BxupNJvB9yL3zQLeVaG5QqA= +SHA256-Digest: km7gfgjhuaEXSSLiRlVpFdE5a4N0ESY9t/mxMg1rOIY= + +Name: lib/codemirror/mode/css/css.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BBX0mzV0I1V4oCfbTh9GDsf8JLE= +SHA256-Digest: a3Yrc3Qc++OxgVCk4nAsT6B2IvrboLQvxbUiqpOXNkU= + +Name: lib/codemirror/mode/xml/xml.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mOtAgFKUI3dtthQmbcVPaG27o7c= +SHA256-Digest: 0Yg9o24xI4hYyfU8U7GzhNFz9xmI/LTyK9H7a7GVWHY= + +Name: lib/codemirror/lib/codemirror.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: flvVSpqAjeNr4NmCsfwX+cD5sc8= +SHA256-Digest: 5fTM07R1KcdRuHzpRVWGxov8vA5EmDJDWE1AisGOsZU= + +Name: lib/codemirror/lib/codemirror.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mQ4GGVAUGEckoRjM85raPlrYzlg= +SHA256-Digest: ylWkFzi+pmuVQm80SJjUJvNjzXmRc6+naSkH2xWL5+8= + +Name: lib/codemirror/theme/night.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: l1diAne3DzzxBqivL5T30+fMHfU= +SHA256-Digest: DF3eQXEFl768TkITJEuIi+d+5FHH45TYo6LqmohwPuU= + +Name: lib/codemirror/addon/comment/comment.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5mQzC27rAIkOSSOpHsAF3K0cwfw= +SHA256-Digest: cKDzw5t67lKVtlZNh7D4iARLmVm7+AhhGjqzXizaev4= + +Name: lib/codemirror/addon/merge/merge.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: xbMvg3Uxjx6eSWVAVpUf5Hhx3rE= +SHA256-Digest: BZOB0QESGE77WpAGfDlvsk4lepfw8RkN50Ck6uu/4qM= + +Name: lib/codemirror/addon/merge/merge.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: BdJN+Acthp7N9PnFd/66ramvPV8= +SHA256-Digest: V1bj2YZpwPg+/BDQwbyL+PRQ47kzxkEmwqueseosATk= + +Name: lib/codemirror/addon/hint/show-hint.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: eE9MHwmhm0gtIkKrl+i+NX7yVUA= +SHA256-Digest: 9PjI1IwVXcv44E37KbDVAJdEYNCCBK3+Ddo757s6L8g= + +Name: lib/codemirror/addon/hint/show-hint.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: mca75Q6b1KwpVMH3dxtUgThxOU4= +SHA256-Digest: pr3u1BT8rPV/xYTr7Ex2tbR6WClKjw36LSQ2Mb4Jb/4= + +Name: lib/codemirror/addon/scroll/annotatescrollbar.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: ptcDTWBcJu7IWBnu2ihb6ukfw8Q= +SHA256-Digest: BA8j11u6Ahe/x3wLjxGkc+fwS+BWttvHCMsltK6Nhos= + +Name: lib/codemirror/addon/search/searchcursor.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: PHoM0BkXbBcJhhrTLXqizsLThgs= +SHA256-Digest: SHh2Sh1WFMnvXvPxKjNUdx+VUlHHSfdPJGbJLiO8Cnk= + +Name: lib/codemirror/addon/search/matchesonscrollbar.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fQCC7YgR6D5d1fH4CcQ8pS9074k= +SHA256-Digest: 7k376bbRF3oe2V8vbJRGVHFlfWW2fmcZTeUdsG3Hdfs= + +Name: lib/codemirror/addon/selection/active-line.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: h8zGR0yeGFaaBHazUcrF/y97pkI= +SHA256-Digest: iohiSDy7CbDI8RU22sh2ZNTkIQb44IjCHHCHHL4oZrA= + +Name: lib/codemirror/addon/edit/matchbrackets.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: CK5efnf3KzHazyh2kGF5FHqJPKk= +SHA256-Digest: RoNSBt4o9mmbhuzIv6XJzAatiSCEZAvu7VU9KVM4m1w= + +Name: lib/codemirror/addon/edit/closebrackets.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: poMvVaBZrJe2ALvER7rmxPGDrf8= +SHA256-Digest: XtnJbrLUohV7ied1nRSf+IWJsxgDSMl4NUtlBEc5osI= + +Name: lib/codemirror/addon/display/panel.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 8H+OVJqqvPFdPxzxt9EP2QP5dPs= +SHA256-Digest: B4HMKwieyGEogqkT7lH065VJFcS+H2YKGVzZoOktVu4= + +Name: lib/codemirror/addon/fold/foldgutter.css +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Dlmn9/hdncNS5xHRI5R7F5L9lVY= +SHA256-Digest: V27800C3cLYNd9jCnp3za/WFdjkb6rUbQ5EU5O0BrFY= + +Name: lib/codemirror/addon/fold/foldgutter.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9r2hAl5XqfavzFo+vZR0x3E468g= +SHA256-Digest: UjqbKBTcJwani3fXnb3B6UWguF8iEYAouMsTn425SKU= + +Name: lib/codemirror/addon/fold/foldcode.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: SX3N5I2sM1cm4Wwb8UMJFBczXfU= +SHA256-Digest: eHCxXsZStfhMVmmDh1UQZwVz6RDWmxDTohRrwg/Wifo= + +Name: lib/hsluv/LICENSE +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 9EpmIaTmf64s8axEwlRwIxjqDjA= +SHA256-Digest: ooENME2HHVvLKzAtwlzfgWQVX3k2V+TPWwyX8kzhQ9o= + +Name: lib/hsluv/hsluv-0.1.0.min.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: tctLsR8OWuu1vv3Z/zbRSspGWl8= +SHA256-Digest: eZN2TVCBmW4/KbZChw7FjU0ETWBXAWq6D52pdFpuIVg= + +Name: lib/hsluv/README +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: hgP2zTQMef61VxxNvQZBqdQ5nSI= +SHA256-Digest: 2t8LWJhYAPOH1Oi7MqPLhquUoQBhnZybhCq/ZweQvRw= + +Name: lib/lz4/lz4-block-codec-wasm.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 5mwISNaTpl2BkwLW7JDjRM8Cklc= +SHA256-Digest: +Qphr0G0IYFFrOeCebhCzOUOrAz2w58PaiLzrDAGCGs= + +Name: lib/lz4/lz4-block-codec.wat +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: UGN+7EiPbKwxrbfUcaCfpBXkc3I= +SHA256-Digest: F/wEI6PpLS+lBZ0swr/OlFw0RnDBmUyqXrkpP1yiYoU= + +Name: lib/lz4/lz4-block-codec-any.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: l0Scy8Fidk1D1YKNUNv6WT4MCXY= +SHA256-Digest: 1PE3Hn1hrgK4RMiRGqzCVl7xsGvKq80YdSfmcqCYeAI= + +Name: lib/lz4/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: maGlsJFBR/NLC3nCbC7GI39oI/M= +SHA256-Digest: W9rGQ8kkOnO2DQhMdGYt5G3Is4Wa6M6DPshO3JqiIkg= + +Name: lib/lz4/lz4-block-codec-js.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: fdidsebbmsdhOpr4WunLHgcY+Hc= +SHA256-Digest: llfcDBy/8grqIeiTiitZKXdq9fslZZbJnC+1p52xFj0= + +Name: lib/lz4/lz4-block-codec.wasm +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: Bx6p+aeNJMczRO9NSAsnsoXMqjk= +SHA256-Digest: S9ppR6BJhhhVLLpTqzeAdF/TTMGg2EaW6DoFR9zWis8= + +Name: lib/diff/README.md +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: yaAHmix7fIZJ8xbjHcPCtcKrU+o= +SHA256-Digest: 9Mn0XXAS9gaUHRtwugxN8ONkfJ5LGuLKllvyd6Yg9EA= + +Name: lib/diff/swatinem_diff.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 6mzEW/1mU4cdqGpT7MmY+R77suY= +SHA256-Digest: FnUWPrUUg+lCCoPPNcjN8rtCO04YnRHXAJwcGz7bmdQ= + +Name: lib/csstree/LICENSE +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: QSKeMDmhW9KijrHTlQYI7R8U71Y= +SHA256-Digest: vh/b+Gv9LHLYvOO0b7KLJN1eFHt9KZyBDFmVCd3Apm4= + +Name: lib/csstree/css-tree.js +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XmdnhBsFof/uCxHBfbO9usN54n4= +SHA256-Digest: 7MRQf6yUbL5EKWLhG7BYGV2+clRczkLzQzioNybsVuA= + +Name: mozilla-recommendation.json +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: DNw65qt+NEWXcBVB8DOTqh2NYV4= +SHA256-Digest: UPnRNCQMP2eD9oGcsJ41+brng7jRqIz24s0jPgPzxAE= + +Name: META-INF/cose.manifest +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: XPAkXX19CF9oFDFYiu9Cxex3BtE= +SHA256-Digest: XHyt2k9GuO2iOiLBN771YYCgtbCLBkRUu/kDuxfURVw= + +Name: META-INF/cose.sig +Digest-Algorithms: SHA1 SHA256 +SHA1-Digest: 1ePPnIU7lOtpjZF6FOC68b/iuS0= +SHA256-Digest: XsZIrmyRMTCu2Er3A0siFiecubG/OM8Vo7NF6XddBUI= + diff --git a/android/app/src/main/assets/extensions/ublock_origin/META-INF/mozilla.rsa b/android/app/src/main/assets/extensions/ublock_origin/META-INF/mozilla.rsa new file mode 100644 index 00000000..1274d318 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/META-INF/mozilla.rsa differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/META-INF/mozilla.sf b/android/app/src/main/assets/extensions/ublock_origin/META-INF/mozilla.sf new file mode 100644 index 00000000..552dc0f4 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/META-INF/mozilla.sf @@ -0,0 +1,4 @@ +Signature-Version: 1.0 +SHA1-Digest-Manifest: 8yTfcOsZMf5d0dz4T5CBbQoeNzM= +SHA256-Digest-Manifest: A3hZbtMTTOolf9gg3JkITTDya3Nwh1uhFETzTAUn6DA= + diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/ar/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/ar/messages.json new file mode 100644 index 00000000..4884d345 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/ar/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "يو بلوك أوريجين", + "description": "extension name." + }, + "extShortDesc": { + "message": "وأخيراً, مانع اعلانات كفوء. خفيف على المعالج و الذاكرة.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — لوحة التحكم", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "تنبيه! لديك تغييرات لم تقم بحفظها", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "إبقى", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "تجاهل", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "الإعدادات", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "قوائم الفلاتر", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "الفلاتر الخاصة بي", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "القواعد الخاصة بي", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "المواقع الموثوقة", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "الاختصارات", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "\"uBlock₀\" — سجل الإتصال بالشبكة", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "حول البرنامج", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "الدعم", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — مُعاين العناصر", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "الإعدادات المتقدمة", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "اضغط: لتعطيل/تشغيل ميكروبلوك لهذا الموقع.\n\nCtrl+click لتعطيل ميكروبلوك لهذه الصفحة فقط.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "اضغط لتعطيل uBlock₀ لهذا الموقع.\n\nCtrl+click لتعطيل uBlock₀ لهذه الصفحة فقط.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "اضغط لتفعيل uBlock₀ لهذا الموقع.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "تم منع الطلبات", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "على هذه الصفحة", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} أو {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "منذ التنصيب", + "description": "English: since install" + }, + "popupOr": { + "message": "أو", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "محجوب في هذه الصفحة", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "حُجِب منذ التنصيب", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "النطاقات المتصلة", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "إضغط لفتح لوحة التحكم", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "دخول وضع تحديد العناصر السريع", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "دخول وضع تحديد العناصر", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "إفتح سجل طلبات الشبكة", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "الإبلاغ عن مشكلة في هذا الموقع", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "تفعيل أو تعطيل النوافذ منبثقة لهذا الموقع", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "اضغط لحجب جميع النوافذ المنبثقة لهذا الموقع", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "أضغط للوقف منع جميع النوافذ المنبثقة لهذا الموقع", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "تفعيل أو تعطيل حجب عناصر الوسائط الكبيرة لهذا الموقع", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "اضغط لحجب عناصر الوسائط الكبيرة لهذا الموقع", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "أضغط للوقف منع عناصر الوسائط الكبيرة لهذا الموقع", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "تفعيل أو تعطيل الفلترة التجميلية لهذا الموقع", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "اضغط لتعطيل الفلترة التجميلية لهذا الموقع", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "اضغط لتشغيل الفلترة التجميلية لهذا الموقع", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "تفعيل أو تعطيل حجب الخطوط الخارجية لهذا الموقع", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "أضغط لحجب الخطوط الخارجية لهذا الموقع", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "أضغط للسماح للخطوط الخارجية لهذا الموقع", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "انقر لتعطيل الجافا سكريبت على هذا الموقع", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "انقر لإلغاء تعطيل الجافا سكريبت على هذا الموقع", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "النوافذ المنبثقة", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "عناصر وسائط كبيرة", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "المرشحات التجميلية", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "الخطوط الخارجية", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "جافا سكريبت", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "المزيد", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "أقل", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "القواعد العامة: هذا العمود يتعلق بالقواعد التي تنطبق على جميع الموقع.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "الشروط المحلية: هذا العمود يحص القواعد التي تنطبق فقط على الموقع المزار حاليا.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "إضغط لحفظ التغييرات بشكل دائم.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "إضغط لإعادة التغييرات للوضع السابق.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "الكل", + "description": "" + }, + "popupImageRulePrompt": { + "message": "الصور", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "جهة خارجية", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "كود CSS/صورة من مصدر خارجي", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "نصوص برمجة بين السطور", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "سكربتات من الطرف الاول", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "سكربتات من طرف خارجي", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "إطارات من طرف خارجي", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "النطاقات المتصلة", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} من {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "الإصدار", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "سكربت", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "إطار", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "إنشاء", + "description": "English: Create" + }, + "pickerPick": { + "message": "اختار", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "خروج", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "معاينة", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "فلاتر الشبكة", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "فلاتر تجميلية", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "إضغط، إضغط مع Ctrl", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "حجب العنصر...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "اخفاء مكان العناصر المحجوبه", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "عرض عدد طلبات المحضوره على الايقونه", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "تعطيل التلميحات", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "إستخدم لائحة السياق في المكان المناسب", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "وضع عمى الألوان", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "المظهر", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "السمة", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "لون التمييز المخصص", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "تفعيل دعم سحابة التخزين", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "أنا مستخدم ذو خبرة (قراءة إجبارية)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "تعطيل الجلب المسبق على الشبكة (لمنع أي اتصال لطلبات الشبكة المحجوبة)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "تعطيل مراجعة الروابط التشعبية", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "منع WebRTC من كشف عنوان الـ IP المحلي", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "السلوك الإفتراضي", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "هذه السلوكيات الإفتراضية يمكن إستبدالها في كل حالة", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "تعطيل الفلترة التجميلية", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "احجب عناصر الوسائط الأكبر من {{input}} كيلو بايت", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "منع الخطوط البعيدة", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "تعطيل الجافا سكريبت", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "حظر تقارير الـ CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "تعرية الأسماء المعروفة", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "متقدم", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "ميزات مناسبة فقط للتقنيين", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "الإعدادات المتقدمة", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "آخر إسترجاع:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "آخر نسخ إحتياطي:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} من فلاتر الشبكه + {{cosmeticFilterCount}} فلاتر تجميليه:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} تم استعماله من {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "تحديث تلقائي للستات الفلاتر", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "حدث الان", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "نظف جميع المخابئ", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "تحليل وتطبيق فلاتر التجميليه", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "تعمل المرشحات التجميلية على إزالة العناصر من الصفحة التي تعد إزعاجا بصريا، ولا يمكن حجبها بمحركات الترشيح المبنية على طلبات الشبكة.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "تجاهل الفلاتر التجميلية العامة", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "المرشحات التجميلية العامة هي تلك التي تُطبّق على كل مواقع الإنترنت. تفعيل هذا الخيار سيحرر موارد الذاكرة والمعالجة التي تضاف للصفحات بسبب التعامل مع المرشحات التجميلية العامة.\n\nينصح بتفعيل هذا الخيار في الأجهزة الضعيفة.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "تعليق نشاط الشبكة إلى حين تحميل كافة قوائم المرشحات", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "قائمة المواقع المحجوبة", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "حفظ التغيرات", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "مدمج", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "اعلانات", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "خصوصيه", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "مواقع مصابة أو تحتوي على فايروسات", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "أدوات مواقع التواصل الاجتماعية", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "إشعارات معرفات الارتباط", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "عناصر مزعجة", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "متعددة الأغراض", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "المناطق واللغات", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "مخصصه", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "استيراد…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "رابط واحد في كل سطر. الروابط الغير الصحيحة سوف يتم تجاهلها بصمت.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "متقادم.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "مشاهدة المحتوى", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "آخر تحديث: {{ago}}. \nانقر لفرض التحديث.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "جار التحديث…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "حدث خطأ في الشبكة منع تحديث المورد.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "لا تضف مرشحات من مصادر غير موثوقة.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "تمكين المرشحات المخصصة", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "السماح بالتشريحات المخصصة التي تتطلب الثقة", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "استورد وألحق…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "تصدير…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "حفظ التغيرات", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "قواعد دائمة", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "قواعد مؤقتة", + "description": "header" + }, + "rulesRevert": { + "message": "إلغاء", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "تطبق", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "تعديل", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "حفظ", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "إلغاء", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "استيراد من ملف…", + "description": "" + }, + "rulesExport": { + "message": "تصدير إلى ملف", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "قائمة قواعد الفلترات الديناميكية الخاصة بك.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "صياغة القواعد: مصدر نوع وجهة العمل (تعليمات كاملة).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "الفرز:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "نوع الاشتراط", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "المصدر", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "الوجهة", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "تحدد توجيهات المواقع الموثوقة الصفحات التي يجب تعطيل uBlock Origin عليها. إدخال واحد في كل سطر.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "استورد وألحق…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "صدّر…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-whitelist_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "حفظ التغيرات", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "النوع", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "الموقع", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "رابط الموقع", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "فلتر", + "description": "English: Filter" + }, + "logAll": { + "message": "كل", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "بلا تبويب", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "علامة التبويب الحالية", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "أعد تحميل محتوى علامة التبويب", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "بدّل فاحص DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "تفعيل أو تعطيل اللوحة المنبثقة", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "ويكي يو بلوك أوريجين: حافظ السجلات", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "امسح المُسجّل", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "أوقف المُسجّل مؤقتا (استبعاد كل البيانات الواردة)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "استئناف حافظ السجلات", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "بدّل ترشيح المُسجّل", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "رشّح محتوى السجل", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "خيارات التصفية للمسجّل", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "ليس", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "محظور", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "مسموح", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "معدّل", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "أول طرف ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "ثالث-طرف ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "تفاصيل", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "المرشّح", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "قائمة المرشحات", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "قاعدة", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "السياق", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "سياق الجدر", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "عديمة الطرف", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "النوع", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "قاعدة URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "حالة:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "نوع:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "فلتر ثابت", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} طلبات شبكة {{type}} {{br}}اللتي تحتوي عنوان الرابط {{url}} {{br}}من المصدر {{origin}},{{br}}{{importance}} هناك فلتر استثناء مطابق.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "حجب", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "سماح", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "نوع “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "أي نوع", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "من “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "من أي مكان", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "باستثناء إذا", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "حتى لو", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "تصفية ثابتة {{filter}} موجود في:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "الترشيح الثابت لا يوجد في أي من قوائم التشريحات المفعلة", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "مدخلات المُسجّل التي لا تطابق أيا من المعايير ستتجاهل تلقائيا:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "أبق على المدخلات في آخر {{input}} دقيقة", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "أبقِ بحد أقصى على {{input}} تحميلات للصفحة في كل لسان", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "أبق بحد أقصى على {{input}} مدخلات في كل لسان", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "استخدم {{input}} من السطور لكل مدخلة في الوضع الرأسي", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "أخفِ الأعمدة:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} الوقت", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} المرشِّح\\القاعدة", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} السياق", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} الجهة", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "قائمة", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "جدول", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "بسيط", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "افتح", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "إنشاء تقرير جديد", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "العثور على تقارير مماثلة", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "وثائق", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "اقرأ الوثائق الموجودة في uBlock/wiki للتعرف على جميع ميزات uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "الأسئلة والدعم", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "يتم توفير إجابات للأسئلة وأنواع أخرى من دعم المساعدة على subreddit /r/uBlockOriginuBlockOrigin/uAssets issue tracker. يتطلب حساب GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "هام: تجنب استخدام أدوات حظر أخرى ذات أغراض مماثلة مع uBlock Origin، لأن ذلك قد يتسبب في مشكلات في التصفية على مواقع ويب معينة.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "نصائح: تأكد من تحديث قوائم التصفية. المُسجِّل هو الأداة الأساسية لتشخيص المشكلات المتعلقة بالفلتر.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "تقرير الأخطاء", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "الإبلاغ عن المشكلات المتعلقة بيو بلوك أوريجين نفسه إلى uBlockOrigin/uBlock-issue أداة تعقب المشكلات. يتطلب حساب GitHub", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "رأس قسم \"معلومات استكشاف الأخطاء وإصلاحها\" في جزء الدعم", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "فيما يلي معلومات فنية قد تكون مفيدة عندما يحاول المتطوعون مساعدتك في حل مشكلة ما.فيما يلي معلومات فنية قد تكون مفيدة عندما يحاول المتطوعون مساعدتك في حل مشكلة ما. ", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "الإبلاغ عن مشكلة في عوامل التصفية", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "لتجنب إثقال كاهل المتطوعين بتقارير مكررة، يرجى التحقق من عدم الإبلاغ عن المشكلة بالفعل.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "يتم تحديث قوائم الفلتر بشكل يومي. تحقق أن مشكلتك لم يتم مواجهتها في أحدث قوائم الفلتر.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "تحقق من أن المشكلة ما تزال موجودة بعد إعادة تحميل صفحة الويب التي بها إشكالية.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "عنوان صفحة الويب:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "صفحة الويب…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- إختر خيارًا --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "ٌيُظهر الإعلانات أو بقايا الإعلانات", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "به تراكبات أو مضايقات أخرى", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "يكتشف يو بلوك أوريجين", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "توجد مشكلات متعلقة بالخصوصية", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "أعطال عند تمكين uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "افتح التبويبات أو النوافذ التي ليس مرغوبًا بها", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "يؤدي إلى البرامج الضارة والإحتيال", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "ضع علامة على صفحة الويب بـ ”NSFW“ (”غير آمن للعمل“)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "سياسة الخصوصية", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "سجل التغييرات", + "description": "" + }, + "aboutCode": { + "message": "اكواد البرنامج (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "المساهمين", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "شيفرة المصدر", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "الترجمات", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "القوائم المرشحة", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "الإعتماديات الخارجية (متوافقة مع GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "قوائم التصفية الخاصة بـ uBO مستضافة مجانًا على CDNs التالية:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "يتم استخدام CDN الذي تم اختياره عشوائيًا عند الحاجة إلى تحديث قائمة عوامل التصفية.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "النسخ الإحتياطي إلى ملف…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "إحتياط-ublock-الخاص-بي_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "إسترجع من الملف…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "إعادة الضبط للوضع الافتراضي...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "كل إعداداتك سوف يتم كتابتها بإستعمال البيانات التي تم نسخها إحتياطيا على {{time}}، و سيعيد uBlock₀ التشغيل.\n\nأعد كتابة كل الإعدادات الموجود بإستخدام البيانات التي تم نسخها إحتياطيا؟", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "تعذر قراءة البيانات أو إنها غير صالحة", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "كل إعداداتك سيتم إلغائها، و سيتم إعادة تشغيل \"uBlock₀\".\n\n\nإعادة ضبط \"uBlock₀\" على الإعدادات الأصلية؟", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "خطأ في الشبكة: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "اشترك", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "منذ دقيقة", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "منذ {{value}} دقائق", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "منذ ساعة", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "منذ {{value}} ساعات", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "قبل يوم واحد", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "منذ {{value}} أيام", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "عرض لوحة التحكم", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "عرض سجل الإتصال بالشبكة", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "تعطيل", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "الصفحة محجوبة", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock₀ منع الصفحة التالية من التحميل:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "بسبب الفلتر التالي", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "دون معلمات", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "موجود في:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "العودة للخلف", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "أغلق هذه النافذة", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "لا تحذرني مرة أخرى بشأن هذا الموقع", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "تعطيل الحجب الصارم على {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "مؤقتا", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "بشكل دائم", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "تقدّم", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "الصفحة المحظورة تريد إعادة توجيهك إلى موقع آخر. إذا اخترت المتابعة، فسوف تنتقل مباشرة إلى: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "السبب:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "ضار", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "متتبع", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "سيئ السمعة", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "التصدير إلى سحابة التخزين", + "description": "tooltip" + }, + "cloudPull": { + "message": "إستيراد من سحابة التخزين", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "إستيراد التخزين من السحابية و دمجه مع الإعدادات الحالية", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "إسم هذا الجهاز:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "تحذير! تغيير هذه الإعدادات المتقدمة يكون على مسؤوليتك.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "تطبيق", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "حفظ التغييرات", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "إلغاء", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "بايت", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "احظر العنصر في الإطار…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "اشترك في قائمة التصفية…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "السماح مؤقتا لعناصر الوسائط كبيرة", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "عرض كود المصدر…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "أدخِل اختصار", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "بدل حالة التمرير الموصَد", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "نسخ إلى الحافظة", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "اختر الكل", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "تبديل تصفية مستحضرات التجميل", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "تعطيل جافا سكريبت", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "وضع الحظر المتراخي", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "مساحة التخزين المستخدمة: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "كيلوبايت", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "ميجابايت", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "جيجابايت", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "اضغط للتحميل", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "أخطاء: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "لا يمكن الفلترة بشكل صحيح عند تشغيل المتصفح.\nقم بتحديث الصفحة للتأكد من الفلترة بشكل صحيح.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "يجب أن يكون هذا الإدخال آخر واحد", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/az/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/az/messages.json new file mode 100644 index 00000000..b4cfdc2f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/az/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Axır ki, prosessor və yaddaş yükünü azaldan səmərəli bir əngəlləyici var.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — İdarəetmə paneli", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Xəbərdarlıq: dəyişiklikləriniz yadda saxlanılmayıb!", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Qal", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Əhəmiyyət vermə", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Tənzimləmələr", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filtr siyahıları", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Filtrlərim", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Qaydalarım", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Etibarlı saytlar", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Qısayollar", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Jurnal", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Haqqında", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Dəstək", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Resurslar", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Qabaqcıl tənzimləmələr", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klikləmə: Bu sayt üçün uBlock₀-u fəallaşdır/sıradan çıxart.\n\nCtrl+klikləmə: Yalnız bu səhifə üçün uBlock₀-u sıradan çıxart.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Bu sayt üçün uBlock₀-u sıradan çıxartmaq üçün klikləyin.\n\nYalnız bu səhifə üçün uBlock₀-u sıradan çıxartmaq üçün Ctrl+klikləyin.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Bu saytda uBlock₀-u fəallaşdırmaq üçün klikləyin.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "tələb(request) bloklandı", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "bu səhifədə", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} və ya {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "quraşdırmadan bəri", + "description": "English: since install" + }, + "popupOr": { + "message": "və ya", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Bu səhifədə əngəllənən", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Quraşdırmadan bəri əngəllənən", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Bağlantı qurulmuş domenlər", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "İdarəetmə panelini aç", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Element silmə rejiminə keç", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Element seçmə rejiminə keç", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Jurnalı aç", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Bu veb-saytdakı problemi bildir", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Bu sayt üçün bütün açılan pəncələri aç/bağla", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Bu saytda bütün açılan pəncərələri əngəlləmək üçün kliklə", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Bu saytdakı bütün açılan pəncələri artıq əngəlləməmək üçün kliklə", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Bu saytda böyük media elemetlərini əngəlləməyi aç/bağla", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Bu saytda böyük media elementlərini əngəlləmək üçün düyməyə basın", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Bu saytda böyük media elementlərini daha əngəlləməmək üçün düyməyə basın", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Bu saytda kosmetik filtrləri qoş/söndür", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Bu saytda kosmetik filtrləri söndürmək üçün düyməyə basın", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Bu saytda kosmetik filtrləri qoşmaq üçün düyməyə basın", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Bu saytda uzaqdan idarə olunan şriftləri qoş/söndür", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Bu saytda uzaqdan idarə olunan şriftləri əngəlləmək üçün düyməyə basın", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Bu saytda uzaqdan idarə olunan şriftləri daha əngəlləməmək üçün düyməyə basın", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Bu saytda JavaScript-i sıradan çıxartmaq üçün kliklə", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Bu saytda JavaScript-i artıq əngəlləməmək üçün düyməyə basın", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Peyda olan pəncərələr", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Böyük ölçülü media elementləri", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kosmetik filtrləmə", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Kənar şriftlər", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Daha çox", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Daha az", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Qlobal qaydalar: bu sütun bütün saytlarda tətbiq olunan qaydalar üçündür.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokal qaydalar: bu sütun yalnız bu saytda tətbiq olunan qaydalar üçündür.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Dəyişiklikləri daimi etmək üçün klikləyin.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Dəyişiklikləri geri qaytarmaq üçün düyməyə basın.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "hamısı", + "description": "" + }, + "popupImageRulePrompt": { + "message": "təsvirlər", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3-cü tərəf", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "3-cü tərəf CSS/təsvirlər", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "sətiriçi skriptlər", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1-ci tərəf skriptlər", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3-cü tərəf skriptlər", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3-cü tərəf frame-lər", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "qoşulmuş domen", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} / {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versiya", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skript", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "çərçivə", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Yarat", + "description": "English: Create" + }, + "pickerPick": { + "message": "Seç", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Çıxış", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Önbaxış", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Şəbəkə filtrləri", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kosmetik filtrlər", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Ctrl-klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Elementi əngəllə...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Əngəllənmiş elementlərin tutduğu yeri gizlə", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Əngəllənən tələb sayını nişan üstündə göstər", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Alət izahlarını söndür", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Uyğun olduqda kontekst menüsündən istifadə et", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Rəng seçmə qabiliyyəti olmayanlar üçün rəngləmə rejimi", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Görünüş", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Mövzu", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Xüsusi vurğu rəngi", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Bulud yaddaşı dəstəyini işə sal", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Mən təcrübəli istifadəçiyəm (mütləq oxuyun)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Erkən yükləməni dayandır (əngəllənmiş şəbəkə sorğuları üzrə qoşulmalara yol verməmək üçün)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Hiperkeçidlərin yoxlanılmasını dayandır", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Lokal IP-ünvanların WebRTC vasitəsilə sızmasını əngəllə", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Standart davranış", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Bu standart parametrlər hər bir sayt üçün ayrıca qeyd oluna bilər", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Kosmetik filtrləri söndür", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "{{input}} KB-dan artıq olan media elementlərini əngəllə", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Uzaqdan idarə olunan şriftləri əngəllə", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "JavaScript-i Əngəllə", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP hesabatlarını əngəllə", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Canonical adları ortaya çıxarın", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Təkmil", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Yalnız texniki istifadəçilərə uyğun parametrlər", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "əlavə parametrlər", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Son bərpa əməliyyatının tarixi:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Son ehtiyat nüsxəsinin tarixi:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} şəbəkə filtri + {{cosmeticFilterCount}} kosmetik filtr:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}} ədəddən {{used}} ədədi istifadə olundu", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Filtr siyahılarını avtomatik yenilə", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Yenilə", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Bütün keşləri sil", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Kosmetik filtrləri təhlil və tətbiq et", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Kosmetik filtrlər bir veb səhifəsində görüntü rahatsızlığına səbəb olan və şəbəkə sorğularının filtrlənməsi vasitəsilə əngəllənə bilməyən elementləri gizlətmək üçün istifadə olunur.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ümumi kosmetik filtrləri nəzərə alma", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Ümumi kosmetik filtrlərin bütün veb-saytlarda istifadəsi nəzərdə tutulur. Bu seçimi etdiyiniz təqdirdə veb-səhifələrdə ümumi kosmetik filtrlərin işlənməsi ilə əlaqədar yaddaşdan istifadə və prosessor yükü azalacaq.\n\nAz güclü cihazlarda bu seçimin aktivləşdirilməsi tövsiyə olunur.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Filter siyahıları yüklənənə kimi şəbəkə fəaliyyətini dayandır", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Dəyişiklikləri tətbiq et", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Lokal filtrlər", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklam", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Məxfilik", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Zərərli proqram təminatından qorunma, təhlükəsizlik", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sosial media düymələri", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Çərəz bildirişləri", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Zəhlətökən elementlər əleyhinə filtrlər", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Çoxməqsədli filtrlər", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Bölgələr, dillər", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Fərdi", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Əlavə et…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Hər sətrdə yalnız bir URL. Yanlış URL-lər xəbərdarlıq edilmədən nəzərə alınmayacaq.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Köhnəlmişdir.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "məzmunu nəzərdən keçir", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Sonuncu yeniləmə: {{ago}}.\nYeniləmək üçün düyməyə basın.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Yenilənir...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Şəbəkə xətası üzündən yeniləmə mümkün olmadı.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Etibarsız mənbələrdən filtrlər əlavə etməyin.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Xüsusi filtrlərimi aktivləşdir", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Etibarlılıq tələb edən xüsusi filtrləri aktivləşdir", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "İdxal və əlavə et…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "İxrac et", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Dəyişiklikləri tətbiq et", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Daimi qaydalar", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Müvəqqəti qaydalar", + "description": "header" + }, + "rulesRevert": { + "message": "Geri qaytar", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Təsdiq et", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Redaktə", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Yadda saxla", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Nəzərə alma", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Fayldan götür…", + "description": "" + }, + "rulesExport": { + "message": "Fayla yaz", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Dinamik filtr qaydalarınızın siyahısı.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Qaydalar sintaksisi: mənbə təyinat növ əməliyyat (bütün sənədlər).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sırala:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Qayda növü", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Mənbə", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Hədəf", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "İstisnalar siyahısındakı təlimatlar uBlock Origin-in hansı veb-səhifələrdə işləyişinin dayandırılmasını təmin edir. Hər sətirdə yalnız bir təlimat ola bilər. Yanlış təlimatlar xəbərdarlıq edilmədən nəzərə alınmayacaq və şərhə çeviriləcəkdir.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "İdxal və əlavə et…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "İxrac et", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-whitelist_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Dəyişiklikləri tətbiq et", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Növü", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domen", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtr", + "description": "English: Filter" + }, + "logAll": { + "message": "Hamısı", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tabsız", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Cari tab vərəqi", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Tab vərəqinin məzmununu yenidən yüklə", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM müfəttişini işə sal/söndür", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Peyda olan paneli aç/bağla", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin viki: Logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Loggeri təmizlə", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Loggeri dayandır (daxil olan bütün məlumatları rədd et)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Loggeri yenidən işə sal", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Logger filtrləməsini işə sal/dayandır", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "logger qeydlərinin filtrlənməsi", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logger üçün filtrləmə parametrləri", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Deyil", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "əngəllənmiş", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "icazə verilmiş", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "dəyişdirildi", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1-ci tərəf resurslar", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3-cü tərəf resurslar", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Təfsilatlar", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtr", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filtr siyahısı", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Qayda", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Məzmun", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Ana məzmun", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Tərəf", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Növü", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL qaydası", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Məzmun:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Növ:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statik filtr", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "Müvafiq istisna filtri varsa {{importance}},{{br}}URL ünvanı {{url}} {{br}}ilə eyni olan və mənbəyi {{origin}} {{br}}olan {{type}} növlü şəbəkə sorğularını {{action}}.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Əngəllə", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "İcazə ver", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "“{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "istənilən növ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "“{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "istənilən yerdən", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "halından savayı", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "əgər hətta", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "{{filter}} statik filtrinin mənbəyi:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statik filtr hal-hazırda aktiv olan filtr siyahılarının heç birində tapılmadı", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Üç şərtin hamısına cavab erməyən aşağıdakı logger qeydləri avtomatik olaraq rədd ediləcək:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Son {{input}} dəq. ərzində edilmiş qeydləri saxla", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Hər tab vərəqi üzrə ən çox {{input}} səh. yükləməsini saxla", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Hər tab vərəqi üzrə ən çox {{input}} qeyd saxla", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Şaquli genişləndirilmiş rejimdə hər qeyd üçün {{input}} sətir istifadə et", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Sütunları gizlə:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Vaxt", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtr/Qayda", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Məzmun", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Tərəf", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Siyahı", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Cədvəl", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Sadə", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Nişanlı", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Aç", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Yeni hesabat yaradın", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Oxşar hesabat tap", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentasiya", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "UBlock Origin-in bütün xüsusiyyətlərini öyrənmək üçün uBlock/wiki ünvanında sənədləri oxuyun.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Suallar və dəstək", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Suallara və yardım dəstəyinin digər növlərinə cavablar /r/uBlock Origin - də təqdim olunur.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter problemləri / vebsəhifə işləmir", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Müəyyən vebsaytların filtr problemlərini uBlockOrigin/uAssets problem izləyicisinə bildirin. GitHub hesabı tələb edir.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Vacib: uBlock Origin-lə yanaşı, oxşar bloklayıcı genişləndirmələrin istifadəsindən çəkinin. Əks halda bəzi veb-saytlarda filtr problemləri ilə üzləşə bilərsiniz.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "İpuçları: Filtr siyahınızın yenilənmiş olduğundan əmin olun. Qeydiyyatçı, filtrlərlə bağlı problemləri müəyyənləşdirmək üçün başlıca vasitədir.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Xəta bildirişi", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "uBlock Origin-lə bağlı problemləri uBlockOrigin/uBlock-issue problem izləyicisinə bildirin. Github hesabı tələb edir.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Problemlərin Həlli", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Aşağıdaki könüllülər sizə probleminizi aradan qaldırmağa çalışırkən faydalı ola biləcək texniki məlumatdır.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Filter problemini bildir", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Könüllülərə eyni hesabatların narahatçılıq verməməsi üçün, xahiş olunur problemin əvvəlcədən bildirilmədiyinə əmin olun.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filtr siyahıları hər gün yenilənir. Probleminizin ən son filtr siyahılarında həll edilmədiyinə əmin olun.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Problemli veb-səhifəni yenidən yüklədikdən sonra problemin hələ də qaldığından əmin olun.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Veb-səhifənin ünvanı:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Səhifə...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Bir daxiletmə seçin --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Reklam və ya reklam qalıqları göstərir", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Üst-üstə düşmə və ya digər nasazlıqları var", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "uBlock Origin-i aşkarlayır", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Məxfiliklə bağlı problemləri var", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "uBlock Origin aktiv ikən xarab olur", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Arzuolunmaz tab-vərəqələr və ya pəncərələr açır", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Zərərli proqram və fişinq riski var", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Veb-səhifəni uyğun olmayan (“NSFW”) olaraq işarələ (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Məxfilik siyasəti", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Dəyişikliklər siyahısı", + "description": "" + }, + "aboutCode": { + "message": "Mənbə kodu (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Layihəyə töhfə verənlər", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Mənbə kodu", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Tərcümələr", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filtr siyahıları", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Xarici asılılıqlar (GPLv3-uyumlu):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO-nun öz filtr siyahıları ödənişsiz şəkildə bu CDN-lərdə yerləşdirilib:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Bir filtr siyahısının yenilənməsi lazım olduqda təsadüfi seçilən bir CDN istifadə olunur", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Fayla yaz", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Fayldan bərpa et...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Standart parametrləri yüklə...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Bütün parametrləriniz {{time}} tarixində yadda saxlanılmış məlumatlarla əvəz olunacaq və uBlock₀ yenidən başladılacaq.\n\nBütün cari parametrlər ehtiyat nüsxəsindəki məlumatlarla əvəz olunsun?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Məlumat oxunmur yaxud xətalıdır", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Bütün parametrləriniz silinəcək və uBlock₀ yenidən başladılacaq.\n\nuBlock₀ standart parametrlərə qaytarılsın?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Şəbəkə xətası: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Abunə ol", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "bir dəqiqə əvvəl", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} dəq. əvvəl", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "bir saat əvvəl", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} saat əvvəl", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "bir gün əvvəl", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} gün əvvəl", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "İdarəetmə panelini göstər", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Loggeri göstər", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "işləmir", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Səhifə əngəlləndi", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin bu səhifənin yüklənməsini əngəllədi:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Bu filtrə görə", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "parametrsiz", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Mənbə:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Geriyə qayıt", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Bu pəncərəni bağla", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Bu sayt barədə məni xəbərdar etmə", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "{{hostname}} üçün sərt əngəlləməni dayandır", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Müvəqqəti", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Daimi", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Davam et", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Bloklanmış səhifə sizi başqa sayta yönləndirmək istəyir. Əgər davam etsəniz, birbaşa bu ünvana keçəcəksiniz: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Səbəb:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Zərərli", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "İzləyici", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Etibarsız", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Bulud yaddaşa göndər", + "description": "tooltip" + }, + "cloudPull": { + "message": "Bulud yaddaşdan götür", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Bulud yaddaşdan götür və cari parametrlərlə birləşdir", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Bu cihazın adı:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Diqqət! Bu əlavə parametrlərdəki dəyişikliklərə görə siz məsuliyyət daşıyırsınız.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Təsdiqlə", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Dəyişiklikləri tətbiq et", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Geri qaytar", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bayt", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Çərçivədəki elementi əngəllə", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Filter siyahısına abunə ol", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Böyük media elementlərinin yüklənməsinə müvəqqəti icazə ver", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Mənbə kodunu nəzərdən keçir...", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Qısayol yaz", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Məhdud sürüşdürməni işə sal/dayandır", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Lövhəyə kopyala", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Hamısını seç", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Kozmetik filtrləməni yandır/söndür", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript-i Aç/Bağla", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Əngəlləmə rejimini yüngülləşdir", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "İstifadə olunan anbar: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Yükləmək üçün düyməyə bas", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Xətalar: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Brauzer açılışında filtrləmə düzgün alınmadı. Düzgün filtrləməni təmin etmək üçün səhifəni yenidən yükləyin.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/be/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/be/messages.json new file mode 100644 index 00000000..0e0910d8 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/be/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Нарэшце, эфектыўны блакавальнік. Не нагружае працэсар і памяць.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Панэль кіравання", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Увага! Ёсць незахаваныя змены", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Застацца", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ігнараваць", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Налады", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Спісы фільтраў", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Мае фільтры", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Мае правілы", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Давераныя сайты", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Спалучэнні клавіш", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Журнал сеткавых запытаў", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Пра пашырэнне", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Падтрымка", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Прагляд рэсурсаў", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Пашыраныя налады", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Націсканне: адключыць/уключыць uBlock₀ для гэтага сайта.\n\nCtrl+націсканне: адключыць uBlock₀ толькі на гэтай старонцы.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Націсніце, каб адключыць uBlock₀ для гэтага сайта.\n\nНацісніце з Ctrl, каб адключыць uBlock₀ толькі на гэтай старонцы.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Націсніце, каб уключыць uBlock₀ для гэтага сайта.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "запытаў заблакавана", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "на гэтай старонцы", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "з моманту ўсталявання", + "description": "English: since install" + }, + "popupOr": { + "message": "або", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Заблакавана на гэтай старонцы", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Заблакавана з моманту ўсталявання", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Даменаў падлучана", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Адкрыць панэль кіравання", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Перайсці ў рэжым імгненнага хавання элементаў", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Перайсці ў рэжым выбару элементаў", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Адкрыць журнал запытаў", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Паведаміць аб праблеме з сайтам", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Пераключыць блакаванне ўсіх выплыўных акон на гэтым сайце", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Націсніце, каб блакаваць усе выплыўныя вокны на гэтым сайце", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Націсніце, каб выключыць блакаванне ўсіх выплыўных акон на гэтым сайце", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Пераключыць блакаванне вялікіх медыя-элементаў на гэтым сайце", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Націсніце, каб блакаваць вялікія медыя-элементы на гэтым сайце", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Націсніце, каб выключыць блакаванне вялікіх медыя-элементаў на гэтым сайце", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Пераключыць касметычнае фільтраванне на гэтым сайце", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Націсніце, каб выключыць касметычнае фільтраванне на гэтым сайце", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Націсніце, каб уключыць касметычнае фільтраванне на гэтым сайце", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Пераключыць блакаванне аддаленых шрыфтоў на гэтым сайце", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Націсніце, каб блакаваць аддаленыя шрыфты на гэтым сайце", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Націсніце, каб выключыць блакаванне аддаленых шрыфтоў на гэтым сайце", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Націсніце, каб выключыць JavaScript на гэтым сайце", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Націсніце, каб JavaScript не быў выключаны на гэтым сайце", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Выплыўныя вокны", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Вялікія медыя-элементы", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Касметычнае фільтраванне", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Аддаленыя шрыфты", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Больш", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Менш", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Глабальныя правілы: гэты слупок для правіл, якія прымяняюцца на ўсіх сайтах.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Лакальныя правілы: гэты слупок для правіл, якія прымяняюцца толькі на гэтым сайце.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Націсніце, каб захаваць змены.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Націсніце, каб вярнуць змены.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "усе", + "description": "" + }, + "popupImageRulePrompt": { + "message": "відарысы", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "староннія", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "староннія CSS/відарысы", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "убудаваныя скрыпты", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Асноўныя скрыпты", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "староннія скрыпты", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "староннія фрэймы", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "даменаў падлучана", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} з {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Версія", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "скрыпт", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "рамка", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Стварыць", + "description": "English: Create" + }, + "pickerPick": { + "message": "Выбраць", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Выйсці", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Папярэдні прагляд", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Сеткавыя фільтры", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Касметычныя фільтры", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Націсканне, Ctrl + націсканне", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Блакаваць элемент…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Хаваць контуры заблакаваных элементаў", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Паказваць колькасць заблакаваных запытаў на значцы", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Адключыць выплыўныя падказкі", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Выкарыстоўваць кантэкстнае меню, дзе магчыма", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Колеравая схема для дальтонікаў", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Выгляд", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Тэма", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Уласны колеравы акцэнт", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Уключыць падтрымку воблачнага сховішча", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Я — дасведчаны карыстальнік", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Адключыць папярэднюю загрузку (каб прадухіліць злучэнне для заблакаваных сеткавых запытаў)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Выключыць праверку гіперспасылак", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Прадухіліць уцечку лакальнага IP-адраса праз WebRTC", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Прадвызначаныя паводзіны", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Гэтыя налады могуць быць перавызначаныя для кожнага сайта асобна", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Выключыць касметычныя фільтры", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Блакаваць медыя-элементы большыя за {{input}} КБ", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Блакаваць аддаленыя шрыфты", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Адключыць JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Блакаваць справаздачы CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Раскрываць CNAME назвы", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Пашыраныя налады", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Функцыі, патрэбныя толькі тэхнічным карыстальнікам", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "пашыраныя налады", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Апошняе аднаўленне:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Апошняя рэзервовая копія:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} сеткавых фільтраў + {{cosmeticFilterCount}} касметычных фільтраў з:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "Выкарыстана: {{used}} з {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Аўтаматычна абнаўляць спісы фільтраў", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Абнавіць зараз", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Ачысціць усе кэшы", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Разбіраць і прымяняць касметычныя фільтры", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Касметычныя фільтры служаць для хавання элементаў вэб-старонак, якія ствараюць візуальныя нязручнасці, і якія не могуць быць заблакаваныя сродкамі фільтравання сеткавых запытаў.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ігнараваць агульныя касметычныя фільтры", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Агульныя касметычныя фільтры — гэта тыя касметычныя фільтры, якія прызначаны для прымянення на ўсіх вэб-сайтах. Уключэнне гэтай налады знізіць спажыванне памяці і працэсара, дададзенае да вэб-старонак у выніку працы агульных касметычных фільтраў.\n\nРэкамендуецца ўключыць гэту наладу на менш магутных прыладах.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Прыпыніць сеткавую актыўнасць, пакуль не пагрузяцца ўсе спісы фільтраў", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Ужыць змяненні", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Убудаваныя", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Рэклама", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Прыватнасць", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Абарона ад шкоднасных праграм, бяспека", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Віджэты сацыяльных сетак", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Абвесткі пра кукі", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Надакучлівасці", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Шматмэтавыя", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Рэгіёны, мовы", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Карыстальніцкія", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Імпартаваць…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Адзін URL на радок. Няспраўныя URL-адрасы будуць праігнараваныя.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Неактуальны.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "паглядзець змест", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Апошняе абнаўленне: {{ago}}.\nНацісніце для прымусовага абнаўлення.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Абнаўляецца…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Памылка сеткі не дазволіла абнавіць рэсурс.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Не дадавайце фільтры з крыніц, якім не давяраеце.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Уключыць мае карыстальніцкія фільтры", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Дазволіць карыстальніцкія фільтры, якія патрабуюць даверу", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Імпартаваць і дадаць…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Экспартаваць…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Ужыць змяненні", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Пастаянныя правілы", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Часовыя правілы", + "description": "header" + }, + "rulesRevert": { + "message": "Вярнуць", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Зацвердзіць", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Змяніць", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Захаваць", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Адкінуць", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Імпартаваць з файла…", + "description": "" + }, + "rulesExport": { + "message": "Экспартаваць у файл…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Спіс вашых правіл дынамічнага фільтравання.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Сінтаксіс правіл: крыніца прызначэнне тып дзеянне (поўная дакументацыя).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Сартаванне:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Тып правіла", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Крыніца", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Прызначэнне", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Дырэктывы давераных сайтаў указваюць, на якіх вэб-старонках uBlock Origin павінен быць выключаны. Адзін запіс на радок.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Імпартаваць і дадаць…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Экспартаваць…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Ужыць змяненні", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Тып", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Дамен", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Фільтр", + "description": "English: Filter" + }, + "logAll": { + "message": "Усе", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Па-за карткамі", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Бягучая ўкладка", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Перазагрузіць змесціва карткі", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Пераключыць інспектар DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Пераключыць выплыўную панэль", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin вікі: Логер", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Ачысціць логер", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Паставіць логер на паўзу (адкідваць усе ўваходныя звесткі)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Зняць логер з паўзы", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Пераключыць фільтраванне логера", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "фільтраваць запісы логера", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Налады фільтравання логера", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Не", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "заблакаваны", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "дазволены", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "мадыфікаваны", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "асноўны", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "староннія", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Падрабязнасці", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Фільтр", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Спіс фільтраў", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Правіла", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Кантэкст", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Кантэкст кораня", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Старана", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Тып", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL-адрас", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL правіла", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Кантэкст:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Тып:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Статычны фільтр", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} сеткавыя запыты {{type}}, {{br}}URL-адрас якіх супадае з {{url}} {{br}}і якія паходзяць з {{origin}},{{br}}{{importance}} з'яўляюцца адпаведным фільтрам выключэння.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Блакаваць", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Дазволіць", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "тыпу “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "любы тып", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "з “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "з любога месца", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "акрамя выпадкаў, калі", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "нават калі", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Статычны фільтр {{filter}} знойдзены ў:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Статычны фільтр не знойдзены ні ў адным з уключаных зараз спісе фільтраў", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Запісы логера, якія не адпавядаюць усім тром дадзеным ніжэй умовам, будуць аўтаматычна адкінуты:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Захоўваць запісы за апошнія {{input}} хвілін", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Захоўваць не больш за {{input}} загрузак старонкі на картцы", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Захоўваць не больш за {{input}} запісаў на картку", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Выкарыстоўваць {{input}} радкоў на запіс пры вертыкальным пашырэнні", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Схаваць слупкі:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Час", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Фільтр/правіла", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Кантэкст", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Старана", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Спіс", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Табліца", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Просты", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Адкрыць", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Стварыць новую справаздачу на GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Знайсці падобныя справаздачы на GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Дакументацыя", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Прачытайце дакументацыю на uBlock/wiki, каб даведацца пра ўсе магчымасці uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Пытанні і падтрымка", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Адказы на пытанні і іншыя віды падтрымкі даступныя на сабрэддыце /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Праблемы з фільтрамі/няспраўны сайт", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Паведамляйце аб праблемах з фільтрамі на пэўных сайтах на трэкеры хібаў uBlockOrigin/uAssets. Патрабуе ўліковы запіс GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Важна: Пазбягайце выкарыстання іншых блакавальнікаў падобнага прызначэння разам з uBlock Origin, паколькі гэта можа прывесці да праблем з фільтрамі на пэўных сайтах.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Парада: Пераканайцеся, што вашы спісы фільтраў знаходзяцца ў актуальным стане. Рэгістратар — гэта галоўны інструмент для дыягностыкі праблем, якія звязаны з фільтрамі.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Справаздача пра хібу", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Паведамляйце пра праблемы самога uBlock Origin на трэкеры хібаў uBlockOrigin/uBlock-issue. Патрабуе ўліковы запіс GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Інфармацыя для выпраўлення непаладак", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Ніжэй - тэхнічная інфармацыя, што можа быць карысная добраахвотнікам, якія паспрабуюць дапамагчы вам вырашыць праблему.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Паведаміць аб праблеме з фільтрам", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Каб не абцяжарваць добраахвотнікаў дубляванымі справаздачамі, праверце, ці не паведамлялі пра гэтую праблему раней. Заўвага: націсканне кнопкі прывядзе да адпраўкі паходжання старонкі на GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Спісы фільтраў абнаўляюцца штодзённа. Упэўніцеся, што ваша праблема не была вырашана ў найноўшых спісах фільтраў.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Спраўдзіце, ці праблема ўсё яшчэ існуе пасля перазагрузкі праблемнай вэб-старонкі.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Адрас вэб-старонкі:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Вэб-старонка…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Выберыце праблему --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Паказвае рэкламу або яе астачу", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Мае накладанні або іншыя недарэчнасці", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Выяўляе uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Праблемы, звязаныя з прыватнасцю", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Няспраўная, калі ўключаны uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Адкрывае непажаданыя карткі або вокны", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Вядзе да шкодных праграм, фішынгу", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Пазначыць вэб-старонку як “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Палітыка прыватнасці", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Журнал змяненняў", + "description": "" + }, + "aboutCode": { + "message": "Зыходны код (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Удзельнікі", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Зыходны код", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Пераклады", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Спісы фільтраў", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Вонкавыя залежнасці (GPLv3-сумяшчальныя):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Уласныя спісы фільтраў uBO свабодна размяшчаюцца ў наступных сетках CDN:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Пры абнаўленні спіса фільтраў выкарыстоўваецца CDN, які выбіраецца выпадковым чынам", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Стварыць рэзервовую копію…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Аднавіць з файла…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Скінуць на пачатковыя налады…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Усе вашы налады будуць заменены звесткамі з рэзервовай копіі, створанай {{time}}, затым uBlock₀ будзе перазапушчаны.\n\nПеразапісаць усе налады, выкарыстаўшы рэзервовую копію?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Звесткі немагчыма прачытаць або яны нядзейсныя", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Усе вашы налады будуць выдаленыя, uBlock₀ будзе перазапушчаны.\n\nСкінуць uBlock₀ да прадвызначаных налад?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Памылка сеткі: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Падпісацца", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "хвіліну таму", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "Хвілін таму: {{value}}", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "гадзіну таму", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "Гадзін таму: {{value}}", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "дзень таму", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "Дзён таму: {{value}}", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Паказаць панэль кіравання", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Паказаць логер", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "выключаны", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Старонка заблакавана", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin папярэдзіў чытанне наступнай старонкі:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Гэта адбылося з-за наступнага фільтра:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "без параметраў", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Фільтр быў знойдзены ў:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Вярнуцца", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Закрыць гэта акно", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Не папярэджваць больш пра гэты сайт", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Выключыць строгае блакаванне для {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Часова", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Назаўжды", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Працягнуць", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Заблакаваная старонка мае намер перанакіраваць на іншы сайт. Калі вырашыце працягнуць, вы пяройдзеце непасрэдна да: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Падстава:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Шкодная актыўнасць", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Трэкер", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Сумнеўны змест", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Экспартаваць у воблачнае сховішча", + "description": "tooltip" + }, + "cloudPull": { + "message": "Імпартаваць з воблачнага сховішча", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Імпартаваць з воблачнага сховішча і аб'яднаць з дзейнымі наладамі", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Назва гэтай прылады:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Увага! Змяняйце гэтыя пашыраныя налады на ўласную рызыку.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Пацвердзіць", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Ужыць змяненні", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Вярнуць", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "байтаў", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Заблакаваць элемент у рамцы…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Падпісацца на спіс фільтраў…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Тымчасова дазволіць вялікія медыя-элементы", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Паглядзець зыходны код…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Упішыце спалучэнне", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Пераключыць агульную пракрутку", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Капіяваць у буфер абмену", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Абраць усе", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Пераключыць касметычнае фільтраванне", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Уключыць/адключыць JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Паслаблены рэжым блакавання", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Памер сховішча: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "КБ", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "МБ", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "ГБ", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Націсніце, каб загрузіць", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Памылак: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Немагчыма фільтраваць належным чынам пры запуску браўзера.\nАбнавіце старонку, каб забяспечыць належнае фільтраванне.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/bg/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/bg/messages.json new file mode 100644 index 00000000..213886eb --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/bg/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Най-накрая, ефективен блокер. Щадящ процесора и паметта.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Табло", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Внимание! Има незапазени промени", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Оставане", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Игнориране", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Настройки", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Филтри", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Мои филтри", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Мои правила", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Доверени сайтове", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Клавишни комбинации", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Дневник", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Относно", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Поддръжка", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Активи", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Разширени настройки", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Щракване: изключва/включва uBlock₀ за този сайт.\n\nCtrl + щракване: изключва uBlock₀ само за тази страница.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Щракване: изключва uBlock₀ за този сайт.\n\nCtrl + щракване: изключва uBlock₀ само за тази страница.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Щракнете, за да включите uBlock₀ за този сайт.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "блокирани заявки", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "на тази страница", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} или {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "общо досега", + "description": "English: since install" + }, + "popupOr": { + "message": "или", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Блокирани на тази страница", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Блокирани общо досега", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Свързани домейни", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Табло с настройки", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Временно блокиране на отделен елемент", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Блокиране на отделен елемент", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Преглед на дневника със заявки", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Докладване на проблем с този уебсайт", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Превключване блокирането на всички изскачащи прозорци за този сайт", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Щракнете, за да блокирате всички изскачащи прозорци за този сайт", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Щракнете, за да разрешите всички изскачащи прозорци за този сайт", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Превключване блокирането на големи мултимедийни елементи за този сайт", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Щракнете, за да блокирате големите мултимедийни елементи за този сайт", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Щракнете, за да разрешите големите мултимедийни елементи за този сайт", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Превключване на козметичното филтриране за този сайт", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Щракнете, за да изключите козметичните филтри за този сайт", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Щракнете, за да включите козметичните филтри за този сайт", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Превключване блокирането на външни шрифтове за този сайт", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Щракнете, за да блокирате външните шрифтове за този сайт", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Щракнете, за да разрешите външните шрифтове за този сайт", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Щракнете, за да забраните JavaScript за този сайт", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Щракнете, за да разрешите JavaScript за този сайт", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Изкачащи прозорци", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Големи мултимедийни елементи", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Козметично филтриране", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Външни шрифтове", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Още", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "По-малко", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Глобални правила: колона с правила, приложими към всички сайтове.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Локални правила: колона с правила, приложими само към текущият сайт.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Щракнете, за да направите промените постоянни.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Щракнете, за да отмените направените промени.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "Всички", + "description": "" + }, + "popupImageRulePrompt": { + "message": "Изображения", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3-ти страни", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/изображения от 3-ти страни", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "Вградени скриптове", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Скриптове от 1-ви страни", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Скриптове от 3-ти страни", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Рамки от 3-ти страни", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "свързани домейни", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} от {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Версия", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "скрипт", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "рамка", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Създаване", + "description": "English: Create" + }, + "pickerPick": { + "message": "Нов избор", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Отказ", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Преглед", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Мрежови филтри", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Козметични филтри", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Щракване, Ctrl + щракване", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Блокиране на елемент…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Скриване подсказващите текстове на блокираните елементи", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Показване на брояч в иконката за блокираните заявки", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Изключване на поясненията", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Използване на контекстното меню, когато е възможно", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Достъпност за хора с нарушено цветоусещане", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Външен вид", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Тема", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Потребителски цвят на акцента", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Включване на поддръжка за съхранение в облак", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Аз съм опитен потребител", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Изключване на предварителното извличане (за избягване на всяка връзка за блокираните мрежови заявки)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Изключване на проверката за препратки", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Предотвратяване изтичането на локалния IP адрес през WebRTC", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Поведение по подразбиране", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Тези поведения по подразбиране могат да бъдат отменени за отделни сайтове", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Изключване на козметичното филтриране", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Блокиране на мултимедийни елементи, по-големи от {{input}} kB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Блокиране на външни шрифтове", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Забраняване на JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Блокиране на CSP отчетите", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Разкриване на каноничните имена", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Разширени", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Функции, подходящи само за технически грамотни потребители", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "разширени настройки", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Последно възстановяване:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Последно резервно копие:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} мрежови филтри + {{cosmeticFilterCount}} козметични филтри от:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "ползвани {{used}} от общо {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Автоматично обновяване на филтрите", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Обновяване", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Изчистване на кеш паметта", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Анализиране и прилагане на козметичните филтри", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Козметичните филтри служат за скриване на елементи в уебстраницата, които се считат за визуално неприятни и които не могат да бъдат блокирани от механизмите за филтриране, базирани на мрежови заявки.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Игнориране на общите козметични филтри", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Общокозметични са филтрите, предназначени за прилагане във всички сайтове. Разрешаването на тази опция ще премахне натоварването на паметта и процесора, добавено към уеб страниците в резултат на обработката на общите козметични филтри.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Преустановяване на мрежовата дейност, докато се заредят всички списъци с филтри", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Списъци на блокираните хостове", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Прилагане на промените", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Вградени", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Реклами", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Поверителност", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Защита от зловреден софтуер, сигурност", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Социални джаджи", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Известия за бисквитки", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Досадни неща", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Многоцелеви", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Региони, езици", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Потребителски", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Внасяне...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Един адрес на ред. Невалидните адреси ще бъдат игнорирани.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Остарял", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "Преглед на съдържанието", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Последно обновяване: {{ago}}.\nЩракнете за принудително обновяване.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Обновяване...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Грешка в мрежата възпрепятства обновяването на ресурса.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Не добавяйте филтри от ненадеждни източници.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Активиране на моите потребителски филтри", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Разрешаване на потребителски филтри, изискващи доверие", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Внасяне и добавяне...", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Изнасяне...", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-мои-филтри_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Прилагане на промените", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Постоянни правила", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Временни правила", + "description": "header" + }, + "rulesRevert": { + "message": "Връщане", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Приемане", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Редактиране", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Запазване", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Отказ на промените", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Внасяне от файл...", + "description": "" + }, + "rulesExport": { + "message": "Изнасяне във файл...", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ublock-мои-правила_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Списък на динамичните правила за филтриране.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Синтаксис на правилото: източник цел тип действие (пълна документация).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Сортиране:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Тип правило", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Източник", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Дестинация", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Указанията за доверени сайтове определят кои уеб страници трябва да бъдат изключени от uBlock Origin. По един запис на ред.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Внасяне и добавяне...", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Изнасяне...", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ublock-доверени_сайтове_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Прилагане на промените", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Тип", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Домейн", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL адрес", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Филтър", + "description": "English: Filter" + }, + "logAll": { + "message": "Всички", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Скрити", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Последно активен раздел", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Презареждане съдържанието на раздела", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Превключване на DOM инспектора", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Превключване на изскачащия панел", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Дневникът със заявки", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Изчистване на заявките", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Пауза на заявките (отхвърляне на входящите данни)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Включване на заявките", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Превключване на филтрирането", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "филтриране на записи", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Опции за филтриране", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Изкл.", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "изпълнен със събития", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "блокирани", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "позволени", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "променен", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1-ви страни", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3-ти страни", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Детайли", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Филтър", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Списък с филтри", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Правило", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Контекст", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Основен контекст", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Страна", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Тип", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "Адрес", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Правило за адрес", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Контекст:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Тип:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Статично филтриране", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} на мрежови заявки от {{type}} за адрес, съвпадащ с {{br}}{{url}}{{br}}и произлизащ от {{origin}},{{importance}} има филтър със съвпадащи изключения.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Блокиране", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Разрешаване", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "тип \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "всеки тип", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "\"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "където и да е", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "с изключение, когато", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "дори ако", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Статичният филтър {{filter}} е намерен в:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Статичният филтър не е намерен в никой от активните списъци с филтри", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Записите в дневника, които не отговарят на трите условия по-долу ще бъдат автоматично отхвърлени:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Запазване на записите от последните {{input}} минути", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Запазване най-много на {{input}} зареждания на страница за раздел", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Запазване най-много на {{input}} записа за раздел", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Използване на {{input}} реда за записи в разширен вертикален режим", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Скриване на колони:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Време", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Филтър/правило", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Контекст", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Страна", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Списък", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Таблица", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Обикновен", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Отваряне", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Нов доклад", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Намиране на подобни доклади", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Документация", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Прочетете документацията в uBlock/wiki, за да научите повече за всички функции на uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Въпроси и поддръжка", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Отговори на въпроси и други видове помощ се предоставят в Reddit /r/uBlockOrigin", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Проблеми с филтъра/уебсайтът е счупен", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Докладвайте за проблеми с филтрирането на конкретни уебсайтове в uBlockOrigin/uAssets за проследяване на проблеми. Изисква се акаунт в GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Важно: Избягвайте да използвате други блокери с подобно предназначение заедно с uBlock Origin, тъй като това може да доведе до проблеми с филтрирането на определени уебсайтове.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Съвети: Уверете се, че списъците ви с филтри са актуални. Дневникът е основният инструмент за диагностициране на проблеми, свързани с филтрите.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Доклад за грешка", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Докладвайте за проблеми със самия uBlock Origin в uBlockOrigin/uBlock-issue за проследяване на проблеми. Изисква се акаунт в GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Информация за отстраняване на неизправности", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "По-долу е представена техническа информация, която може да е полезна, когато доброволците се опитват да ви помогнат да разрешите даден проблем.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Докладване на проблем с филтъра", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "За да се избегне натоварването на доброволците с дублиращи се доклади, моля, проверете дали проблемът все още не е докладван.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Списъците с филтри се актуализират ежедневно. Уверете се, че вашият проблем вече не е решен в най-новите списъци с филтри.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Проверете дали проблемът продължава да съществува след презареждане на проблемната уеб страница.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Адрес на уеб страницата:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Уеб страницата...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Изберете запис --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Показва реклами или остатъци от реклами", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Има наслагвания или други неудобства", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Открива uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Има проблеми, свързани с поверителността", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Функционира неправилно, когато uBlock Origin е активиран", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Отваря нежелани раздели или прозорци", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Води до зловреден софтуер, фишинг", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Маркиране на уеб страницата като “NSFW” (“не е безопасна за работа”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Политика за поверителност", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Списък с промени", + "description": "" + }, + "aboutCode": { + "message": "Изходен код (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Сътрудници", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Изходен код", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Преводи", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Списъци с филтри", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Външни зависимости (съвместими с GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Собствените списъци с филтри на uBO се хостват свободно на следните CDN-и:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Ще бъде използван случайно избран CDN, когато трябва да се обнови списък с филтри", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Изнасяне във файл...", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-всички-настройки_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Възстановяване от файл...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Възстановяване на първоначалните настройки...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Всички настройки ще бъдат презаписани с данни, архивирани на {{time}} и uBlock₀ ще се рестартира.\n\nПрезаписване на съществуващите настройки, използвайки архивираните данни?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Данните не могат да бъдат прочетени или са невалидни", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Всички настройки ще бъдат премахнати и uBlock₀ ще се рестартира.\n\nВръщане на uBlock₀ към стандартните настройки?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Грешка в мрежата: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Абониране", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "преди минута", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "преди {{value}} минути", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "преди час", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "преди {{value}} часа", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "преди ден", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "преди {{value}} дни", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Показване на табло", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Показване на дневник за мрежовите заявки", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "изключен", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Страницата е блокирана", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin предотврати зареждането на страницата:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Блокиращ филтър", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "без параметри", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Намерен в:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Назад", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Затваряне на прозореца", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Без повторно предупреждение за този сайт", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Изключване на строгото блокиране за {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Временно", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Постоянно", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Продължаване", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Блокираната страница иска да Ви пренасочи към друг сайт. Ако изберете да продължите, ще отидете директно на: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Причина:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Злонамерена", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Проследяване", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Неблагонадеждна", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Изнасяне в облачно хранилище", + "description": "tooltip" + }, + "cloudPull": { + "message": "Внасяне от облачно хранилище", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Внасяне на настройки от облачно хранилище и обединяване с текущите", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Име на устройството:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Внимание! Променяте настройките на свой собствен риск.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Изпращане", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Прилагане на промените", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Връщане", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "байта", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Блокиране на елемента в рамката...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Абониране за списъка с филтри...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Временно разрешаване на големи мултимедийни елементи", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Преглед на изходния код…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Натиснете клавиши", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Превключване на заключеното превъртане", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Копиране в клипборда", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Избиране на всичко", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Превключване на козметичното филтриране", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Превключване на JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Отпуснат режим на блокиране", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Използвано пространство: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "КБ", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "МБ", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "ГБ", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Щракнете, за да се зареди", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Грешки: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Не може да се филтрира правилно при стартиране на браузъра.\nПрезаредете страницата, за да се уверите, че филтрирането е правилно.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Това поле трябва да бъде последното", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/bn/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/bn/messages.json new file mode 100644 index 00000000..058dbc26 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/bn/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "একটি শক্তিশালী বিজ্ঞাপন প্রতিরোধক, অবশেষে তৈরী হল। যা সিপিইউ এবং মেমরির জন্য সহনীয়।", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — ড্যাশবোর্ড", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "সতর্কীকরণ! আপনার পরিবর্তনগুলো সংরক্ষণ করা হয়নি।", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "এখানে থাকুন", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "বাদ দিন", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "সেটিংস", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "ছাঁকন তালিকা", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "আমার ফিল্টার", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "আমার নিয়ম", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "বিশ্বস্ত তালিকা", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "শর্টকাটগুলি", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — ঘটনাবলী", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "সম্পর্কে", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "সাহায্য", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — তথ্য নিরিক্ষক", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "অ্যাডভান্সড সেটিংস", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "ক্লিক: এই সাইটের জন্য uBlock₀ সক্রিয়/নিষ্ক্রিয় করুন\n\nCtrl+ক্লিক: শুধু এই পেজে uBlock₀ নিষ্ক্রিয় করুন", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "এই সাইটে uBlock₀ নিষ্ক্রিয় করুন\n\nCtrl+ক্লিক: শুধু এই পেজে uBlock₀ নিষ্ক্রিয় করুন", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "এই সাইটের জন্য ইউব্লক₀ সক্রিয় করতে ক্লিক করুন।", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "অবরোধের অনুরোধ", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "এই পাতায়", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}}টি বা {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "ইনস্টলের পর থেকে", + "description": "English: since install" + }, + "popupOr": { + "message": "বা", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "এই পাতাটা অবরুদ্ধ হয়েছে", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "ইনস্টল করার পর থেকে অবরুদ্ধ হয়েছে", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "যুক্ত ডোমেন ", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "ড্যাশবোর্ড খুলুন", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "উপাদান অপসারণ মোডে প্রবেশ করুন", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "উপাদান বাছাইকারী মোডে প্রবেশ করুন", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "ঘটনাবলী খুলুন", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "এই ওয়েবসাইট এর একটি সমস্যার ব্যাপারা অভিযোগ যানান", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "এই সাইটের সব পপআপ ব্লকিং চালু/বন্ধ করুন", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "এই সাইটে সকল পপআপ বন্ধ করতে ক্লিক করুন", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "এই সাইটে আর কোনো পপআপ ব্লক না করতে ক্লিক করুন", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "এই সাইটের বড় মিডিয়া উপাদানগুলো অবরোধ ব্লক করার জন্য অদলবদল করুন", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "এই সাইটে বড় মিডিয়া এলিমেন্ট ব্লক করতে ক্লিক করুন", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "এই সাইটের বর মিডিয়া এলিমেন্টগুলি ব্লক করা বন্ধ করতে ক্লিক করুন", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "এই সাইটের জন্য সৌন্দর্যবর্ধক ছাঁকন চালু/বন্ধ করুন", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "এই সাইটে সৌন্দর্যবর্ধক ছাঁকন প্রক্রিয়া বন্ধ করতে ক্লিক করুন", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "এই সাইটে সৌন্দর্যবর্ধক ছাঁকন প্রক্রিয়া চালু করতে ক্লিক করুন", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "এই সাইটের রিমোট ফন্ট বন্ধের প্রক্রিয়া অদলবদল করুন", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "এই সাইটে রিমোট ফন্ট ব্লক করতে ক্লিক করুন", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "এই সাইটে রিমোট ফন্ট আর ব্লক না করতে ক্লিক করুন", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "এই সাইটের জাভাস্ক্রিপ্ট বন্ধ করতে ক্লিক করুণ", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "এই সাইটের জাভাস্ক্রিপ্ট চালু করতে ক্লিক করুন", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "পপ-আপ উইন্ডোগুলি", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "বড় মিডিয়ার এলিমেন্টগুলো", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "সৌন্দর্য্যবর্ধক ছাকন প্রক্রিয়া", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "রিমোট ফন্টগুলি", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "জাভাস্ক্রিপ্ট", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "আরো", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "কম", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "সার্বজনীন নিয়ম: এই স্তম্ভ সেইসব নিয়মের জন্য যা সকল সাইটের উপর প্রযোজ্য।", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "অভ্যন্তরীন নিয়ম: এই কলামটি সেইসব নিয়মের জন্য যা শুধু বর্তমান সাইটে প্রয়োগ করা হবে।", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "আপনার পরিবর্তনগুলি স্থায়ী করতে ক্লিক করুন।", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "আপনার পরিবর্তনগুলি ফেরত নিতে ক্লিক করুন।", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "সব", + "description": "" + }, + "popupImageRulePrompt": { + "message": "চিত্র", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "৩য়-পক্ষ", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "৩য়-পক্ষের সিএসএস/চিত্র", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "সারির সাথে সঙ্গতিপূর্ণ স্ক্রিপ্ট", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "১ম-পক্ষের স্ক্রিপ্ট", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "৩য়-পক্ষের স্ক্রিপ্ট", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "৩য়-পক্ষের ফ্রেম", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "যুক্ত ডোমেন ", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}}টির মধ্যে {{count}}টি", + "description": "appears in popup" + }, + "popupVersion": { + "message": "সংস্করণ", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "স্ক্রিপ্ট", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "কাঠামো", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "তৈরি করুন", + "description": "English: Create" + }, + "pickerPick": { + "message": "চয়ন করুন", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "প্রস্থান", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "প্রাকদর্শন", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "নেটওয়ার্ক ফিল্টার", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "প্রসাধনী ফিল্টার", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "ক্লিক, Ctrl-ক্লিক", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "উপাদান রুদ্ধ করুন", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "অবরুদ্ধ উপাদানের স্থানধারক লুকান", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "আইকনে অবরোধের অনুরোধ সংখ্যা দেখান", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "টুলটিপ নিষ্ক্রিয় করুন", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "উপযুক্ত স্থানে প্রাসঙ্গিক মেনু ব্যবহার করুন", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "বর্ণান্ধ সহযোগী", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "দৃষ্টি", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "থিম", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "কাস্টম অ্যাকসেন্ট রঙ", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "ক্লাউড সংরক্ষণ সক্রিয় করুন", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "আমি একজন উন্নত ব্যবহারকারী (পড়া আবশ্যক)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "প্রি-ফেচিং বন্ধ করুন (অবরুদ্ধ নেটওয়ার্ক থেকে যে কোনো সংযোগ প্রতিরোধ করতে)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "হাইপারলিঙ্ক নিরীক্ষণ নিষ্ক্রিয় করুন", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "স্থানীয় আইপি ঠিকানা ফাঁস থেকে ওয়েব আর.টি.সি.কে প্রতিরোধ করুন", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "পূর্বনির্ধারিত আচরণ", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "এই পূর্বনির্ধারিত আচরণ প্রতি সাইট ভিত্তিতে ওভাররাইড করা যেতে পারে", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "প্রসাধন ফিল্টারিং নিষ্ক্রিয় করুন", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "{{input:number}} কেবির থেকে বড় মিডিয়া উপাদান অবরুদ্ধ করুন", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "রিমোট ফন্ট অবরুদ্ধ করুন", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "জাভা স্ক্রিপ্ট বন্ধ করা", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP প্রতিবেদন অবরুদ্ধ করুন", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Canonical Name এর উন্মোচন", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "অ্যাডভান্সড", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "শুধুমাত্র প্রযুক্তিগত ব্যবহারকারীদের জন্য উপযুক্ত ফিচারসমুহ", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "উন্নত সেটিংস", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "সর্বশেষ পুনঃস্থাপন:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "সর্বশেষ ব্যাকআপ:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "এ থেকে {{netFilterCount}}টি নেটওয়ার্ক ফিল্টার + {{cosmeticFilterCount}}টি প্রসাধনী ফিল্টার:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}}টির মধ্যে {{used}}টি ব্যবহৃত", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "ফিল্টার তালিকা স্বয়ংক্রিয়-হালনাগাদ করুন।", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "এখনই হালনাগাদ করুন", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "সব ক্যাশে শোধন করুন", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "প্রসাধনী ফিল্টার পার্স ও কার্যকর করুন।", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

এই অপশনটি অ্যাডব্লক-প্লাসের সামঞ্জস্যপূর্ণ “উপাদান আড়াল করার” ফিল্টারকে সক্রিয় করবে। এই ফিল্টারগুলি মূলত প্রসাধনী, তাদের একটি ওয়েব পাতায় উপাদান আড়াল করতে প্রয়োজন হয় যাকে চাক্ষুষ উত্পাত বলিয়া গণ্য করা হয়, এবং যাদের নেট অনুরোধ ভিত্তিক ফিল্টারিং ইঞ্জিন দ্বারা অবরুদ্ধ করা যায় না।

এই বৈশিষ্ট্য সক্রিয় করলে uBlock₀-এর মেমরির পদচিহ্ন বৃদ্ধি পাবে।

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "জেরেরিক প্রসাধনী ছাঁকনি উপেক্ষা করুন।", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

জেনেরিক প্রসাধনী ছাঁকনি হচ্ছে সেইসব প্রসাধনী ছাঁকনি যা সব ওয়েবসাইটে প্রয়োগের জন্য অভিপ্রেত।

যদিও তা uBlock₀ দ্বারা দক্ষতার সঙ্গে পরিচালনা করে, কিন্তু জেনেরিক প্রসাধন ফিল্টার এখনও কিছু ওয়েব পাতার পরিমাপযোগ্য মেমরি ও CPU-র অত্যাধিক চাপ সৃষ্টিতে অবদান রাখতে পারে, বিশেষ করে বড় এবং দীর্ঘ একটিতে।

এই অপশন সক্রিয় করলে জেনেরিক প্রসাধনী ছাঁকনি পরিচালিত হবে যা ওয়েব পাতার পরিমাপযোগ্য মেমরি ও CPU-র অত্যাধিক চাপ সৃষ্টি দূর করবে এবং uBlock₀ নিজেই মেমরি পদাঙ্ক অর্ধ করবে।

এটা কম শক্তিশালী ডিভাইসে এই অপশনটি সক্রিয় করার জন্য সুপারিশ করা হচ্ছে।", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "সবগুলি ফিল্টার তালিকা লোড না হওয়া পর্যন্ত নেটওয়ার্ক কার্যকলাপ স্থগিত করুন", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "অবরুদ্ধ হোস্টের তালিকা", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "পরিবর্তনগুলি প্রয়োগ", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "বিল্ট-ইন", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "বিজ্ঞাপন", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "গোপনীয়তা", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "ম্যালওয়্যার ডোমেইন", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "সোশ্যাল উইজেট", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "কুকি নোটিশ", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "বিরক্তিকর", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "বহুমুখী", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "অঞ্চল, ভাষা", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "স্বনির্ধারিত", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "আমদানি করুন...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "লাইন প্রতি একটি URL। ‘!’ সহ উপসর্গ লাইন উপেক্ষা করা হবে। অকার্যকর URL গুলি নীরবে উপেক্ষা করা হবে।", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "পুরোনো", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "কন্টেন্ট দেখুন", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "সর্বশেষ হালনাগাদ: {{ago}}", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "হালনাগাদ করা হচ্ছে...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "একটি নেটওয়ার্ক ত্রুটি রিসোর্স বা তথ্য হালনাগাদ হওয়া রোধ করেছে।", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "সন্দেহজনক উৎস থেকে ফিল্টারে কোন কিছু যোগ করবেন না।", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "আপনার কাস্টম ফিল্টারটি চালু করুন", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "কাস্টম ফিল্টারকে বিশ্বস্ততার অনুমতি দিন", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "আমদানি করে পরিশেষে যোগ করুন", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "রপ্তানি করুন", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "amar-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "পরিবর্তনগুলি প্রয়োগ", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "স্থায়ী নিয়ম", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "অস্থায়ী নিয়ম", + "description": "header" + }, + "rulesRevert": { + "message": "প্রত্যাবর্তন", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "কমিট", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "সম্পাদনা", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "সংরক্ষণ", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "বাতিল করুন", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "ফাইল থেকে আমদানি...", + "description": "" + }, + "rulesExport": { + "message": "ফাইলে রপ্তানি", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "amar-ublock-dynamic-niyom_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "আপনার গতিশীল ফিল্টারের নিয়মের তালিকা।", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "শব্দবিন্যাসের নিয়ম: source destination type action (সম্পূর্ণ নথিপত্র)।", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "সাজাও:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "নিয়মের ধরন", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "উৎস", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "গন্তব্য", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "আপনার হোস্টের তালিকা যাদের জন্য uBlock₀ নিষ্ক্রিয় করা হবে। লাইন প্রতি একটি ভুক্তি। অবৈধ হোস্ট নাম নিশব্দে উপেক্ষা করা হবে।", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "আমদানি ও পরিশেষে যোগ করুন", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "রপ্তানি করুন", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "amar-ublock-whitelist_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "পরিবর্তনগুলি প্রয়োগ", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "ধরন", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "ডোমেইন", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "ফিল্টার", + "description": "English: Filter" + }, + "logAll": { + "message": "সব", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "পর্দার আড়ালে", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "বর্তমান ট্যাব", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "ট্যাবের বিষয় বস্তু রিলোড করুণ", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "ড.অ.ম. পরিদর্শক বোতাম", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "পপআপ এলাকার বোতাম", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "ইউব্লক অরিজিন উইকি: লগার", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "লগার পরিষ্কার করুন", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "লগার থামান (আগত সকল তথ্য বাতিল করুন)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "লগার চালু করুন", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "লগার ছাকন বোতাম", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "ফিল্টার লগের ভুক্তি", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "লগার ছাকন বাছাইকরণ", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "না", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "অবরুদ্ধ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "অনুমোদিত", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "পাল্টানো", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "১ম-পক্ষ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "৩য়-পক্ষ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "বিস্তারিত", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "ছাকন", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "ছাঁকন তালিকা", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "নিয়ম", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "প্রসঙ্গ", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "রুট প্রসঙ্গ", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "দলমত", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "ধরন", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "ইউ.আর.এল.", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "ডায়নামিক URL ফিল্টারিং", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "প্রসঙ্গ:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "ধরন:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "স্থির ফিল্টারিং", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{type}}-এর নেটওয়ার্ক অনুরোধ {{action}} {{br}}যার URL ঠিকানা {{url}}-এর সাথে মিলেছে {{br}}এবং যার মূলভিত্তি {{origin}},{{br}} {{importance}} এখানে একটি মেলানো ব্যতিক্রম ফিল্টার আছে।", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "অবরুদ্ধ করুন", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "মঞ্জুর", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "ধরন “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "যে কোন ধরন", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "“{{origin}}” থেকে", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "যে কোন জায়গা থেকে", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "এছাড়া যখন", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "এমনকি যদি", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "স্থির ফিল্টার {{filter}} পাওয়া গেছে:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "স্থির ফিল্টার বর্তমানে সক্রিয় ফিল্টার তালিকার কোনটিতে পাওয়া যায় নি", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "নীচের যে লগার এন্ট্রিগুলি তিনটি শর্ত সম্পূর্ণ পূরণ করে না তাদেরকে স্বয়ংক্রিয়ভাবে বাতিল হবে:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "শেষ {{input}} মিনিটের এন্ত্রিগুলো সংরক্ষণ করা হবে", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "প্রত্যেক ট্যাবের সর্বোচ্চ {{input}} পেজ লোড সংরক্ষণ করা হবে", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "প্রত্যেক ট্যাবে সর্বোচ্চ {{input}} এন্ট্রি সংরক্ষণ করা হবে", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "প্রত্যেক এন্ট্রির জন্য খাড়াভাবে ছড়ানো মোডে {{input}}গুলো লাইন ব্যবহার করা হবে", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "কলাম লুকানো:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "সময় {{input}}", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "ছাকন/নিয়ম {{input}}", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "অনুবন্ধ {{input}}", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "দলের অন্তর্ভুক্ত", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "তালিকা", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "ছক", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "সমান্তরাল", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "মার্কডাউন", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "খুলুন", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "নতুন অভিযোগ", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "একই রকম অভিযোগ দেখুন", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "ডকুমেন্টেশন", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "uBlock Origin এর সমস্ত ফিচার সম্পর্কে জানতে uBlock/wiki এ ডকুমেন্টেশন পড়ুন।", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "যোগাযোগ এবং সহায়তা", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "প্রশ্নের উত্তর এবং অন্যান্য ধরনের সাহায্য ও সহায়তা /r/uBlockOrigin সাবরেডিট এ দেওয়া আছে।", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "ফিল্টার সমস্যা/ওয়েবসাইট ভেঙে গেছে", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "নির্দিষ্ট ওয়েবসাইটের ফিল্টার সমস্যাগুলি uBlockOrigin/uAssets ইস্যু ট্র্যাকারে রিপোর্ট করুন একটি GitHub অ্যাকাউন্ট প্রয়োজন৷", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "গুরুত্বপূর্ণ: uBlock Origin-এর সাথে একই রকম-উদ্দেশ্যযুক্ত ব্লকার ব্যবহার করা এড়িয়ে চলুন, কারণ এটি নির্দিষ্ট ওয়েবসাইটে ফিল্টার এর সমস্যা সৃষ্টি করতে পারে।", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "টিপস: আপনার ফিল্টার তালিকা আপ টু ডেট আছে তা নিশ্চিত করুন। লগার হল ফিল্টার-সম্পর্কিত সমস্যা নির্ণয়ের প্রাথমিক টুল।", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "বাগ রিপোর্ট", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "uBlockOrigin/uBlock-issue ইস্যু ট্র্যাকার এ uBlock অরিজিন সংক্রান্ত সমস্যাগুলি রিপোর্ট করুন। একটি GitHub অ্যাকাউন্ট প্রয়োজন৷৷", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "সমস্যা সমাধানের তথ্য", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "স্বেচ্ছাসেবকরা যখন কোনো সমস্যা সমাধানের জন্য আপনাকে সাহায্য করার চেষ্টা করছেন তখন প্রযুক্তিগত তথ্য নিচে দেওয়া হল যা কার্যকর হতে পারে।", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "একটি ফিল্টার সমস্যা রিপোর্ট করুন", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "ডুপ্লিকেট রিপোর্ট সহ স্বেচ্ছাসেবকদের বোঝা এড়াতে, অনুগ্রহ করে যাচাই করুন যে সমস্যাটি ইতিমধ্যে রিপোর্ট করা হয়নি।", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "ফিল্টারের লিস্ট প্রতিদিন আপডেট করা হয়। নতুন আপডেটে আপনার সমস্যার সমাধান করা হয়েছে কিনা তা লক্ষ্য করুন। ", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "অভিযোগ দিন যদি আপনার রিলোডের পরও ওয়েবপেজের সমস্যার সমাধান না হয়।", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "ওয়েব পেজের ঠিকানা:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "ওয়েব পেজটি…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- একটি এন্ট্রি চয়ন করুন --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "বিজ্ঞাপন বা বিজ্ঞাপনের অবশিষ্টাংশ দেখায়", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "ওভারলে বা অন্যান্য উপদ্রব আছে", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "uBlock Origin শনাক্ত করে", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "গোপনীয়তা-সম্পর্কিত সমস্যা আছে", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "যখন uBlock Origin চালু করা থাকে তখন সমস্যা দেখা দেয়", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "অবাঞ্ছিত ট্যাব বা উইন্ডো খোলে", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "ব্যাডওয়্যার, প্রতারণমূলক জায়গায় নেয়", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "ওয়েব পৃষ্ঠাটিকে “NSFW” হিসাবে লেবেল করুন (“কাজের জন্য নিরাপদ নয়”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "গোপনীয়তার নীতি", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "পরিবর্তন লগ", + "description": "" + }, + "aboutCode": { + "message": "উত্স কোড (GPLv৩)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "অবদানকারী", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "সোর্স কোড", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "অনুবাদ সমূহ", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "ফিল্টার লিস্ট", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "বাহ্যিকভাবে নির্ভশীলসমূহ (জিপিএল ভা.৩-সঙ্গতিপূর্ণ)", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO-এর নিজস্ব ফিল্টার তালিকাগুলি নিম্নলিখিত CDN এ অবাধে হোস্ট করা হয়েছে:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "একটি ফিল্টার তালিকা আপডেট করার প্রয়োজন হলে একটি এলোমেলোভাবে বাছাই করা CDN ব্যবহার করা হয়", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "ফাইলে ব্যাকআপ", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "amar-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "ফাইল থেকে পুনরুদ্ধার...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "ডিফল্ট সেটিংসে পুন:স্থাপন করুন...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "{{time}}-এর ডেটা ব্যাকআপ ব্যবহার করে আপনার সেটিংস পুনঃলিখিত হবে, এবং uBlock₀ পুনরায় চালু হবে।\n\nডেটা ব্যাকআপ ব্যবহার করে সমস্ত বিদ্যমান সেটিংস পুনঃলিখবেন?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "উপাত্তটি পড়া যায়নি বা অকার্যকর", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "আপনার সব সেটিংস বাতিল করা হবে, এবং uBlock₀ পুনরায় চালু হবে।\n\nইউব্লক₀ সেটিংস পুনঃস্থাপন করবেন?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "{{url}} -এ সংযোগ করতে অক্ষম", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "সদস্যতা নাও", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "এক মিনিট আগে", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} মিনিট আগে", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "এক ঘণ্টা আগে", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} ঘণ্টা আগে", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "এক দিন আগে", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} দিন আগে", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "ড্যাশবোর্ড দেখুন", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "লগার দেখান", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "বন্ধ", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "পেজটি ব্লক করা হয়েছে", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uব্লক অরিজিন নিচের পৃষ্ঠা লোড করাকে প্রতিহত করেছে:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "নিম্নলিখিত ফিল্টারের কারণে", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "প্যারামিটার বিহীন", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "যা এতে পাওয়া গেছে:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "ফিরে যান", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "এই উইন্ডোটি বন্ধ করুন", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "এই সাইটের ব্যাপারে আর সতর্ক করবেন না", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "{{hostname}}-এর জন্য কঠোর অবরোধ নিষ্ক্রিয় করুন", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "সাময়িকভাবে", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "স্থায়ীভাবে", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "এগিয়ে যান", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "ব্লককৃত পাতাটি আরেকটি ওয়েবসাইটে নেয়। এগিয়ে যেতে চাইলে, সরাসরি এই জায়গায় যাবে: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "কারণ:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "ক্ষতিকারক", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "ট্র্যাকার", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "অখ্যাতিপূর্ণ", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "ক্লাউড সঞ্চয়ে রপ্তানি করুন", + "description": "tooltip" + }, + "cloudPull": { + "message": "ক্লাউড সঞ্চয় থেকে আমদানি করুন", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "ক্লাউড সংগ্রহস্থল থেকে আমদানি করে বর্তমানে সেটিংসের সঙ্গে একত্রীকরণ করুন", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "এই ডিভাইসের নাম:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "সতর্কবাণী! আপনার নিজ ঝুঁকিতে এই উন্নত সেটিংগুলি পরিবর্তন করুন।", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "জমা দিন", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "পরিবর্তনগুলি প্রয়োগ", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "প্রত্যাবর্তন", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "বাইট", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "ফ্রেমের উপাদান রুদ্ধ করো...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "ফিল্টার তালিকায় সাবস্ক্রাইব করুন...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "সাময়িকভাবে বৃহৎ মিডিয়া উপাদান মঞ্জুরি দিন", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "সোর্স কোড দেখুন.... ", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "শর্টকাট লিখুন", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "স্ক্রলিং চালু/বন্ধ করুন", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "ক্লিপবোর্ডে প্রতিলিপি করুন", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "সবগুলো নির্বাচন করুন", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "সৌন্দর্য্যবর্ধক ফিল্টার চালু বা বন্ধ করুন", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Javascript টগল করুন", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "রোধক মোড শিথিল করুন", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "ব্যবহৃত স্টোরেজ: {{value}}{{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "কিলোবাইট", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "মেগাবাইট", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "গিগাবাইট", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "লোড করতে টিপ দাও", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "এরর: {{গণনা}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "ঠিকভাবে ফিল্টার চালু করা যায়নি। পুনরায় আবার পেজ রিলোড করুন ঠিকভাবে ফিল্টার চালু করার জন্য", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/br_FR/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/br_FR/messages.json new file mode 100644 index 00000000..7702e299 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/br_FR/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Erfin, ur stanker saotradurioù efedus hag a zouj d'ho reizhiad korvoiñ ha d'ho memor.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Taolenn-vourzh", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Diwallit! Kemmoù zo ha n'ho peus ket enrollet", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Chom amañ", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Tremen e-bioù", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Arventennoù", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Roll ar siloù", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Ma siloù", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Ma reolennoù", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Lec'hiennoù sur", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Berradennoù", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Deizlevr ar rekedoù", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Diwar-benn", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Skoazell", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Enseller elfennoù", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Arventennoù araokaet", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klik: lazhañ/enaouiñ uBlock₀ war al lec'hienn-mañ.\n\nReol+klik: lazhañ uBlock₀ war al lec'hienn-mañ nemetken.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Klikit evit lazhañ uBlock₀ war al lec'hienn-mañ.\n\nReol+klik evit lazhañ uBlock₀ war al lec'hienn-mañ.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Enaouiñ uBlock₀ war al lec'hienn-mañ.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "Rekedoù stanket", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "er bajenn-mañ", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} pe {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "abaoe ar staliadur", + "description": "English: since install" + }, + "popupOr": { + "message": "pe", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Stanket er bajenn-mañ", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Stanket abaoe ar staliadur", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domanioù kennasket", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Digeriñ an daolenn-vourzh", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Lemel elfennoù", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Diuzañ elfennoù", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Digeriñ deizlevr ar rekedoù", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Danevelliñ ur gudenn war al lec'hienn-mañ", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Lazhañ/enaouiñ evit stankañ an holl brenestroù pop-up war al lec'hienn-mañ", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Stankañ an holl brenestroù pop-up war al lec'hienn-mañ", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Aotren an holl brenestroù pop-up war al lec'hienn-mañ", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Stankañ/aotren kargadur an elfennoù media pounner war al lec'hienn-mañ", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Stankañ an elfennoù media pounner war al lec'hienn-mañ", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Aotren an elfennoù media pounner en-dro war al lec'hienn-mañ", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Lazhañ/enaouiñ ar siloù kenedel war al lec'hienn-mañ", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Lazhañ ar siloù kenedel war al lec'hienn-mañ", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Enaouiñ ar siloù kenedel war al lec'hienn-mañ", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Aotren/stankañ ar polisoù diavaez war al lec'hienn-mañ", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Stankañ ar polisoù diavaez war al lec'hienn-mañ", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Aotren ar polisoù diavaez war al lec'hienn-mañ", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Diweredekaat JavaScript war al lec'hienn-mañ", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Gweredekaat JavaScript war al lec'hienn-mañ en-dro", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Prenestroù pop-up", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Elfennoù media pounner", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Silañ kenedel", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Polisoù diavaez", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Muioc'h", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Nebeutoc'h", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Reolennoù hollek: er bann-mañ e vez lakaet ar reolennoù a dalvez da gement lec'hienn.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Reolennoù lec'hel: er bann-mañ e vez lakaet ar reolennoù ne dalvezont nemet d'al lec'hienn m'emaoc'h.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Lakaat ho kemmoù da dalvezout.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Nullañ ar c'hemmoù ho peus graet.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "Pep tra", + "description": "" + }, + "popupImageRulePrompt": { + "message": "Skeudennoù", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Kevelerien diavaez", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/skeudennoù kevelerien diavaez", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "skriptoù enlakaet", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Skriptoù domani ar bajenn", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Skriptoù kevelerien diavaez", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Frammoù kevelerien diavaez", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domanioù kennasket", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} diwar {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Handelv", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skript", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "framm", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Krouiñ", + "description": "English: Create" + }, + "pickerPick": { + "message": "Dibab", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Kuitaat", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Rakwel", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Siloù rouedad", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Siloù kenedel", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Reol.-klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Stankañ an elfenn-mañ…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Kuzhat an esaouennoù lezet gant an elfennoù bet stanket", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Diskouez an niver a rekedoù bet stanket war an arouez", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Diweredekaat an tunioù", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Ober gant al lañser kendestenn pa vez ezhomm", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Mod daltonek", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Neuz", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tem", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Liv splannañ personelaet", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Gweredekaat ar stokañ e-barzh ar goumoulenn (cloud)", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Me zo un implijer araokaet", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Diweredekaat ar \"rak-lenn\", pe diougan an oberoù war ar rouedad (evit ma ne gennaskfe ket rekedoù ar rouedadoù stanket)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Diweredekaat evezhiañ ar gourliammoù", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Mirout ouzh WebRTC da ziskuilhañ chomlec'hioù IP lec'hel", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Emzalc'h dre ziouer", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Gallout a reer erlec'hiañ an emzalc'hioù-se dre ziouer e lec'hiennoù resis", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Lazhañ ar siloù kenedel", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Stankañ an elfennoù media a zo pounneroc'h evit {{input}} KB ", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Stankañ ar polisoù diavaez", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Diweredekaat JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Stankañ an danevelloù CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Diskouez an anvioù gwir (CNAME)", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Araokaet", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Fonksionelezhioù azasaet d'an implijerien araokaet hepken", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "arventennoù araokaet", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Adsavet da ziwezhañ:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Gwaredet da ziwezhañ:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} sil rouedad + {{cosmeticFilterCount}} sil kenedel diouzh:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} anezho implijet diwar {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Hizivaat ar rolloù siloù ent-emgefreek", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Hizivaat diouzhtu", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Riñsañ an holl grubuilhoù", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Dielfennañ ha lakaat ar siloù kenedel da dalvezout", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Ar siloù kenedel a servij da guzhat elfennoù ur bajenn web a c'hallfe saotrañ ar gweled ha ne c'hallont ket bezañ stanket gant ar siloù rouedad diazezet war ar rekedoù.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ober fae ouzh ar siloù kenedel hollek", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Ar siloù kenedel hollek a zo siloù kenedel bet savet evit bezañ implijet war an holl lec'hiennoù. Ma'z enaouit an dibarzh-mañ e vo implijer nebeutoc'h a vevor hag ar reizhiad korvoiñ (CPU) war al lec'hiennoù-se.\n\nErbedet eo deoc'h enaouiñ an dibarzh-mañ m'emaoc'h oc'h ober gant un ardivink re zic'halloudek.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Ehan oberoù ar rouedad betek ma kargo an holl rolloù siloù", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Lakaat da dalvezout", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Enframmet", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Bruderezh", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Buhez prevez", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Gwarez a-enep ar malware ha surentez", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widgetoù sokial", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Notennoù diwar-benn an toupinoù", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Saotradurioù", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Siloù lies-implij", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Rannvroioù, broioù", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Personelaet", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Enporzhiañ", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Un URL dre linenn. Graet e vo fae ouzh an URLoù direizh hep kemenn deoc'h.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Diamzeriet.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "gwelet an endalc'had", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Hizivaet da ziwezhañ: {{ago}}.\nKlikit evit hizivaat.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Oc'h hizivaat…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Ur fazi rouedad en deus miret an danvez da vezañ hizivaet.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Arabat ouzhpennañ siloù a zeu diouzh mammennoù douetus.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Gweredekaat ma siloù personelaet", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Kaout fiziañs er siloù personelaet", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Enporzhiañ hag ouzhpennañ", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Ezporzhiañ", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ma-siloù-statek-ublock_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Lakaat da dalvezout", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Reolennoù da badout", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Reolennoù berrbad", + "description": "header" + }, + "rulesRevert": { + "message": "Nullañ", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Lakaat da dalvezout", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Kemmañ", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Enrollañ", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Nullañ", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Enporzhiañ diouzh ur restr…", + "description": "" + }, + "rulesExport": { + "message": "Ezporzhiañ etrezek ur restr", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ma-reolennoù-silañ-dinamek-ublock_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Roll eus ho reolennoù silañ dinamek.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Reolenn ereadurezh: mammenn pal seurt ober (Teuliadur klok e saozneg).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Rummañ:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Seurt reolenn", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Mammenn", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Pal", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "En ur dermeniñ peseurt lec'hiennoù a zo sur e lavarit da uBlock Origin e peseurt lec'hiennoù e rank bezañ diweredekaet. Un enmont dre linenn.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Enporzhiañ hag ouzhpennañ", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Ezporzhiañ", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ma-lec'hiennoù-fizius-ublock_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Lakaat da dalvezout", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Seurt", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domani", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Sil", + "description": "English: Filter" + }, + "logAll": { + "message": "Pep tra", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Rekedoù dre guzh", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Ivinell a-vremañ", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Adkargañ endalc'had an ivinell", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Enaouiñ/lazhañ an enseller DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Enaouiñ/lazhañ ar banell pop-up", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "Pajenn wiki uBlock Origin: An Deizlevr", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Skarzhañ an deizlevr", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Ehan an deizlevr (ober fae ouzh an titouroù resevet)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Adstagañ gant an deizlevr", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Stagañ da silañ an deizlevr", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "Silañ endalc'had an deizlevr", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Arventennoù silañ an deizlevr", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Pas", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "stanket", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "aotreet", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "kemmet", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Domani ar bajenn", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Kevelerien diavaez", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Munudoù", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Sil", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Roll ar siloù", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Reolenn", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontekst", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Kontekst gwrizienn", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Seurt keveler", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Seurt", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Reolenn URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontekst:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Seurt:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Sil statek", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} ar rekedoù rouedad eus ar seurt {{type}} {{br}}da neuze an URL a glot gant {{url}} {{br}}hag a zeu eus {{origin}},{{br}}{{importance}} bout zo ur sil nemedennoù hag a glot gantañ.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Stankañ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Aotren", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "seurt \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "a bep seurt", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "\"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "n'eus forzh pelec'h", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "nemet pa", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "zoken ma", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Kavet e vez ar sil statek {{filter}} e-barzh:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "N'haller ket kavout ar sil statek-mañ e-touez ar rolloù siloù oberiant", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Enmonedoù an deizlevr ha ne glot gant an tri diviz zo amañ dindan a vo skarzhet ent-emgefreek:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Mirout an enmonedoù eus ar/an {{input}} v/munutenn gent", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Mirout {{input}} g/kargadenn pajenn dre ivinell d'ar muiañ", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Mirout {{input}} enmont dre ivinell d'ar muiañ", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Ober gant {{input}} linenn dre enmont er mod dispaket a-blom", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Kuzhat ar bannoù:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Eur", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Sil/reolenn", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Kendestenn", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Seurt keveler", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Listenn", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Taolenn", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plaen", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Digeriñ", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Sevel ur rentañ-kont nevez", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Klask danevelloù koulz ha homañ", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Teuliadur", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Lennit an teuliadur en uBlock/wiki evit gouzout hiroc'h diwar-benn uBlock Origin ha pep tra a c'hall ober.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Goulennoù ha skor", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Er subreddit /r/uBlockOrigin e c'hallit kavout respontoù d'ho koulennoù hag a bep seurt skoazelloù all.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Kudennoù silañ/lec'hienn sac'het", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Danevellit kudennoù ar siloù e lec'hiennoù resis e-barzh uBlockOrigin/uAssets roll evezhiañ kudennoù. Ur c'hont GitHub zo rekis.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "A-bouez: Chomit hep ober gant meur a stanker a zo heñvel ouzh uBlock Origin war un dro rak kement-se a c'hallfe degas kudennoù e lod lec'hiennoù zo.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tro-bleg: Gwiriit ma'z eo bet hizivaet ho rolloù siloù. An deizlevr eo an ostilh pennañ evit diagnostikañ kudennoù e-keñver ar silañ.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Danevelliñ un draen", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Danevellit kudennoù gant uBlock Origin e-unan e-barzh roll evezhiañ kudennoù uBlockOrigin/uBlock-issue. Ur c'hont GitHub zo rekis.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Titouroù diagnostikañ kudennoù", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Amañ dindan ez eus titouroù teknikel a c'hallfe sikour an dud a-youl vat a zo o klask diskoulmañ ur gudenn.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Danevelliñ ur gudenn gant ur sil", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Evit nompas sammañ ar genlabourerien a-youl vat gant meur a zanevell heñvel, gwiriit ma n'eo ket bet danevellet ho kudenn en a-raok mar plij.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Bemdez e vez hizivaet ar rolloù siloù. Gwiriit ma n'eo ket bet diskoulmet ho kudenn c'hoazh er rolloù siloù nevesañ.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Gwiriit ma chom ar gudenn goude bezañ adloc'het ar bajenn gudennek.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Chomlec'h ar bajenn web:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Ar bajenn web-mañ…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Dibab ur seurt --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Diskouez a ra bruderezh pa restachoù bruderezh", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Gwiskadoù pe saotradurioù all en deus", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Diskoachañ a ra uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Kudennoù a-fed ar vuhez prevez he deus", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Ne ya ket mat en-dro p'eo enaouet uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Digeriñ a ra ivinelloù pe prenestroù noazus", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Kas a ra da veziantoù droukyoulet pe d'an higennañ niverel", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Merkañ ar bejenn evel \"NSFW\" (“Not Safe For Work”) hag a dalv ez eus danvez noazus pe kizidik enni", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Politikerezh ar vuhez prevez", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Deizlevr ar cheñchamantoù", + "description": "" + }, + "aboutCode": { + "message": "Kod mammenn (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Kenlabourerien", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Kod mammenn", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Troidigezhioù", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Rolloù ar siloù", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Dalc'hioù diavaez (a glot gant GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Ar rolloù siloù a zo da uBO e-unan a zo herberc'hiet digoust war ar CDNoù-mañ:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Graet e vez gant ur CDN dre zegouezh pa vez ezhomm hizivaat ur roll siloù.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Ezporzhiañ war-zu ur restr…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ma-roadennoù-ublock_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Adsevel diwar ur restr…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Adlakaat an arventennoù dre ziouer…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Hoc'h arventennoù a vo erlec'hiet gant ar roadennoù bet gwaredet d'an/ar {{time}}, goude-se ec'h adloc'ho uBlock₀.\n\nKenderc'hel gant an oberiadenn-se?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "N'haller ket lenn ar roadennoù pe direizh ez int", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Skarzhet e vo hoc'h arventennoù hag adloc'het uBlock₀.\n\nHa fellout a ra deoc'h adderaouekaat arventennoù uBlock₀?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Fazi rouedad: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Koumanantiñ", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "ur vunutenn zo", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} v/munutenn zo", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "un eurvezh zo", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} eur zo", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "un devezh zo", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} deiz zo", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Diskouez an daolenn-vourzh", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Gwelet deizlevr ar rekedoù", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "enaouet", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Pajenn stanket", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin en deus miret ar bajenn-mañ da gargañ:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Stanket eo bet abalamour d'ar sil-mañ:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "kuit a arventennoù", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Hag a zo kavet e-barzh:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Distreiñ", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Serriñ ar prenestr-mañ", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Arabat kemenn din diwar-benn al lec'hienn-mañ en-dro", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Lazhañ ar stankañ strizh evit {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "berrbad", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Da badout", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Kenderc'hel", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Ar bajenn stanket a fell dezhi adkas d'ul lec'hienn all. M'ho peus c'hoant da genderc'hel e vioc'h kaset d'ar chomlec'h-mañ: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Abeg:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malisius", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Heulier", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Douetus", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Ezporzhiañ etrezek stokañ ar goumoulenn (cloud)", + "description": "tooltip" + }, + "cloudPull": { + "message": "Enporzhiañ diouzh stokañ ar goumoulenn (cloud)", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Enporzhiañ adalek ar goumoulenn ha kendeuziñ gant an arventennoù a-vremañ", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Anv an ardivink-mañ:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Diwallit! Kemmit an arventennoù araokaet-mañ nemet ma ouifec'h petra emaoc'h oc'h ober.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Kas", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Lakaat da dalvezout", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Nullañ", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "eizhbitoù", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Stankañ an elfenn er framm…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Koumanantiñ d'ar roll siloù…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Aotren elfennoù media pounner evit ar mare", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Diskouez ar c'hod mammenn…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Enankit ur verradenn", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Prennañ/dibrennañ an dibunañ", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Eilañ er golver", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Diuzañ an holl", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Enaouiñ ar siloù kenedel", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Enaouiñ/lazhañ JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Distanañ ar mod stankañ", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Spas stokañ implijet: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klikañ evit kargañ", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Fazioù: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Ur fazi silañ zo bet en ur lañsañ ar merdeer. Adkargit ar bajenn evit ma vo silet mat.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/bs/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/bs/messages.json new file mode 100644 index 00000000..2bafc96a --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/bs/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Konačno, efikasan bloker. Štedljiv na procesoru i memoriji.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Kontrolna ploča", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Upozorenje! Imate nesačuvane promjene", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Ostani", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignoriši", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Postavke", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Liste filtera", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Moji filteri", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Moja pravila", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Bijela lista", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Prečice", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Logiranje", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "O aplikaciji", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Podrška", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Pregled sadržaja", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Napredne postavke", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klik: onemogućite/omogućite uBlock₀ za ovaj sajt.\n\nCtrl+klik: onemogućite µBlock₀ samo za ovu stranicu.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Kliknite da onemogućite uBlock₀ za ovaj sajt.\n\nCtrl+klik da onemogućite uBlock₀ samo za ovu stranicu.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Kliknite da omogućite uBlock₀ za ovaj sajt.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "zahtjeva blokirano", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "na ovoj stranici", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "od instalacije", + "description": "English: since install" + }, + "popupOr": { + "message": "ili", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokirano na ovoj stranici", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blokirano od instalacije", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domena povezano", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Otvori kontrolnu ploču", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Pokrenite režim za odabiranje i uklanjanje elemenata", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Pokrenite režim za odabiranje elemenata", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Otvorite zapisnik", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Prijavite problem na ovoj web stranici", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Uključite/isključite sve iskačujuće prozore na ovoj stranici", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Kliknite da blokirate sve iskačujuće prozore na ovoj stranici", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Kliknite da više ne blokirate sve iskačujuće prozore na ovoj stranici", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Uključite/isključite blokiranje velikih medijskih elemenata za ovaj sajt", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Kliknite da blokirate velike medijske elemente na ovom sajtu", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Kliknite da više ne blokirate velike medijske elemente na ovom sajtu", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Uključite/isključite estetsko filtriranje za ovaj sajt", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Kliknite da isključite estetsko filtriranje za ovaj sajt", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Kliknite da uključite estetsko filtriranje za ovaj sajt", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Uključite/isključite blokiranje udaljenih fontova za ovaj sajt", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Kliknite da blokirate udaljene fontove na ovom sajtu", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Kliknite da više ne blokirate udaljene fontove na ovom sajtu", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Kliknite da isključite JavaScript na ovom sajtu", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Kliknite da uključite JavaScript na ovom sajtu", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Pop-Up prozor", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Veliki medijski elementi", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Estetsko filtriranje", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Udaljeni fontovi", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Više", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Manje", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globalna pravila: ovaj stupac je za pravila koja su primjenjena za sve sajtove.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokalna pravila: ovaj stupac je za pravila koja su primjenjena samo za ovaj sajt.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Kliknite da vaše promjene učinite trajnim.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Kliknite da biste vratili promjene.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "sve", + "description": "" + }, + "popupImageRulePrompt": { + "message": "slike", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Treće strane", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/slike trećih strana", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "umetnute skripte", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Korisničke skripte", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Skripte trećih strana", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Okviri trećih strana", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "povezane domene", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} od {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Verzija", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skripta", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "okvir", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Kreiraj", + "description": "English: Create" + }, + "pickerPick": { + "message": "Odaberi", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Zatvori", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Pregled", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Mrežni filteri", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Estetski filteri", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Ctrl-klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blokiraj elemenat…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Sakrij držače blokiranih elemenata", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Prikaži broj blokiranih zahtjeva na ikoni", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Isključi savjete", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Koristite kontekstni meni gdje je prikladno", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Mod za daltoniste", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Izgled", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Prilagođena prikazna boja", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Uključi podršku za pohranu u oblaku", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Ja sam napredni korisnik (obavezna literatura)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Onemogućite predučitavanje (da bi ste spriječili bilo koju vezu za blokirane mrežne zahtjeve)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Onemogućite provjeravanje hiperlinkova", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Spriječite WebRTC da propušta lokalnu IP adresu", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Podrazumijevano ponašanje", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Ova podrazumijevana ponašanja mogu biti poništena posebno po stranici", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Onemogućite estesko filtriranje", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokirajte medijske elemente veće od {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokirajte udaljene fontove", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Islkjučite JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blokirajte CSP izvještaje", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Otkrijte kanonske nazive", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Napredno", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funkcije prikladne samo za napredne korisnike", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "napredne postavke", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Posljednji prijašnji povratak:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Posljednja rezervna kopija:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} mrežni/ih filter/a + {{cosmeticFilterCount}} estetski/ih filter/a iz:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} iskorišteno od {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Automatski ažuriraj popise filtera", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Ažuriraj sada", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Obriši svu predmemoriju", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Raščlanite i primijenite estetske filtre.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Estetski filteri služe za sakrivanje elementa na web stranici koji se smatraju izglednim smjetnjama, i koji ne mogu biti blokirani filterima zasnovanih od mrežnih zahtjeva.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorišite opće estetske filtere.", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Opći estetski filteri su onakvi estetski filteri koji su namijenjeni za primjenu na svim sajtovima. Uključivanjem ove postavke će se eliminirati dodatna upotreba memorije i procesora na sajtovima kao rezultat upravljanja općih estetskih filtera.\n\nPreporučeno je omogućiti ovu postavku na slabijim uređajima.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Obustavite mrežnu aktivnost dok se ne učitaju svi popisi filtera", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lista blokiranih hostova", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Primijenite promjene", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Ugrađeno", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklame", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privatnost", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Zaštita od zlonamjernog softvera, sigurnost", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Društveni widgeti", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Obavještenja o kolačićima", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Smetnje", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Višenamjenski", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regije, jezici", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Prilagođeno", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Uvezi…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Jedan URL po redu. Neispravni URL-ovi će biti tiho ignorisani.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Zastarjelo.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "prikaži sadržaj", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Posljednje ažuriranje: {{ago}}.\nKliknite za biste prisilili ažuriranje.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Ažuriranje u toku…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Mrežna greška je spriječila ažuriranje resursa.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Nemojte dodavati filtere iz nepouzdanih izvora.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Omogući moje prilagođene filtere", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Dozvolite prilagođene filtere koji zahtijevaju povjerenje", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Uvezi i dodaj…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Izvoz…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "moji-ublock-statični-filteri_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Primijenite promjene", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Trajna/Stalna pravila", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Privremena pravila", + "description": "header" + }, + "rulesRevert": { + "message": "Vrati", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Potvrdi", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Uredi", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Spremi", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Odbaci", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Uvezi iz datoteke…", + "description": "" + }, + "rulesExport": { + "message": "Izvoz u datoteku…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "moja-ublock-dinamična-pravila_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Lista vaših dinamičkih pravila za filtriranje.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Pravila sintakse: izvor odredište tip akcija (sva dokumentacija).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sortiraj:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Vrsta/tip pravila", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Izvor", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destinacija/odredište", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Direktive pouzdanih sajtova kažu na kojim sajtovima bi uBlock Origin trebao biti isključen. Jedna stavka po redu.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Uvezi i dodaj…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Izvoz…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "moji-ublock-pouzdani-sajtovi_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Primijenite izmjene", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Vrsta", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domena", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Sve", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Bez tabova", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Trenutni tab", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Ponovo učitaj sadržaj taba", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Uključite/isključite DOM inspektor", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Uključite/isključite okno za skočne prozore", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: zapisnik", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Očistite zapise", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pauzirajte zapise (odbacite sve dolazne podatke)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Pokrenite zapise", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Uključite/isključite filtriranje zapisa", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrirajte sadržaj zapisa", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Postavke filtriranja zapisa", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Nije", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "puno događaja", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokirano", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "dozvoljeno", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "Izmjenjeno:", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Prve strane", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Treće strane", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detalji", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Lista filtera", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Pravilo", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontekst", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Korijenski kontekst", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Pripadna informacija", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Vrsta", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL pravilo", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontekst:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Vrsta:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statični filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} mrežni zahtjevi {{type}} {{br}} od čiji se URL adresa slaže sa {{url}} {{br}} i koji izvire od {{origin}},{{br}}{{importance}} postoji odgovarajući odstupni filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokiraj", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Dozvoli", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "vrsta “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "bilo koja vrsta", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "od “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "od bilo kuda", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "osim kada", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "čak iako", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statični filter {{filter}} pronađen u:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statični filter nije pronađen u nijednoj od trenutno uključenih filterskih listi", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Unosi u bilješku koji ne ispunjavaju sva tri navedena uvjeta/uslova ispod će biti automatski odbačeni:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Spremite unose iz zadnje/ih {{input}} minute/a", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Spremite najviše {{input}} učitavanja stranica po kartici", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Spremite najviše {{input}} unosa po kartici", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Koristi {{input}} linija po unosu u vertikalno proširenom režimu", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Sakrij stubove:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Vrijeme", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/pravilo", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Kontekst", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Strana/Pripadnost", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Popis/Lista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tablica", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Obično", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Otvori", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Napravite novu prijavu", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Pronađite slične prijave", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentacija", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Pročitajte dokumentaciju na uBlock/wiki da bi ste naučili sve o uBlock Origin-ovim funkcijama.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Pitanja i podrška", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Odgovori na pitanja i druge vrste podrške nalaze se na podreditu r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problemi sa filterom/website ne radi", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Prijavite probleme s filterima na određenim web stranicama uBlockOrigin/uAssets sistemu za praćenje problema . Potreban je GitHub račun.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Važno: Nemojte koristiti druge blokere slične namjene zajedno sa uBlock Origin-om, jer bi to moglo uzrokovati probleme s filtriranjem na određenim web stranicama.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Savjeti: Provjerite jesu li vaše liste filtera ažurirane. Zapisnik je primarni alat za dijagnosticiranje problema povezanim sa filterima.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Prijava greške", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Prijavite probleme sa samim uBlock Origin-om na uBlockOrigin/uBlock-problem stranici za praćenje problema. Potreban če vam biti GitHub račun.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informacija o rješavanju problema", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Ispod se nalaze tehničke informacije koje bi vam mogle biti korisne kada vam dobrovoljci pokušavaju pomoći s rješenjem problema.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Prijavite problem sa filterom", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Da bi ste izbjegli opterećivanje dobrovoljaca sa dupliciranim prijavama, molimo vas da provjerite da li je vaš problem već prijavljen, ili nije.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Liste filtera se ažuriraju svakodnevno. Budite sigurni da vaš problem nije već riješen na najnovijim listama filtera.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Provjerite postoji li problem i nakon ponovnog učitavanja problematične web stranice.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adresa web stranice:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Web stranica…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Odaberite unos --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Pokaže oglase ili ostatke oglasa", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Ima prekrive ili druge dosade", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Otkrije uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Ima probleme povezane za privatnost", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Kvari se kad je uBlock Origin uključen", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Otvara neželjene kartice ili prozore", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Vodi do zlonamjernog softvera i phishinga", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Označite web stranicu kao “NSZP” (“Ne-Sigurna-Za-Posao”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Pravila privatnosti", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Popis izmjena", + "description": "" + }, + "aboutCode": { + "message": "Izvorni kod (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Saradnici", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Izvorni kod", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Prijevodi", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Liste filtera", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Vanjske zavisnosti (GPLv3-kompatiblini):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Sopstveni zapisi filtera uBO-a su besplatno hostani na sljedećim CDN-ovima:\n", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Nasumično odabrana CDN mreža se koristi kada je potrebno ažurirati listu filtera.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Sačuvaj rezervnu kopiju u datoteku…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "moja-ublock-rez_kopija_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Vrati iz datoteke…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Vrati na izvorne postavke…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Sve vaše postavke će je biti prebrisane koristeći rezervnu kopiju sa postavkama sačuvanim {{time}}, i uBlock₀ će se ponovno pokrenuti. \n\nPrepisati sve postojeće postavke sa rezervnom kopijom postavki?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Podatke nije moguće učitati ili su neispravni", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Sve vaše postavke će je biti obrisane i µBlock₀ će se ponovo pokrenuti. \n\nVrati µBlock₀ na izvorne postavke?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Greška sa mrežom: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Pretplatite se", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "prije minutu", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "prije {{value}} minute/a", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "prije sat vremena", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "prije {{value}} sata/i", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "prije jedan dan", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "prije {{value}} dana", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Prikaži kontrolnu ploču", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Pokaži zapisnik", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "isključen", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Stranica je blokirana", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin je onemogućio učitavanje sljedeće stranice:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Zbog sljedećeg filtera", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "bez parametara", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Pronađeno u:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Nazad", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Zatvori ovaj prozor", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Ne upozoravaj me ponovo za ovu stranicu", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Isključi strogo blokiranje za {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Privremeno", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Trajno", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Nastavi", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Blokirana stranica želi preusmjeriti na drugu stranicu. Ako odlučite nastaviti, bit ćete direktno na: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Razlog:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Zlonamjerno", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Praćenje", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Neugledno", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Izvezi u cloud pohranu", + "description": "tooltip" + }, + "cloudPull": { + "message": "Uvezi iz cloud pohrane", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Uvezite iz cloud pohrane i spojite sa trenutnim postavkama", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Naziv ovog uređaja:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Upozorenje! Napredne postavke mijenjate na vlastitu odgovornost.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Pošalji", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Primijeni promjene", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Vrati", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bajta", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blokiraj elemenat u okviru…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Pretplatite se na popis filtera…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Privremeno omogući velike medijske elemente", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Pogledaj izvorni kod…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Upišite prečicu", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "(De)aktivacija zaključanog pomicanja", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopiraj u međuspremnik", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Označi sve", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Uključi/isključi estetsko filtriranje", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Uključi JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relaksiran mod blokiranja", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Iskorišten prostor: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Kliknite za učitavanje", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Greške: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Nije moguće ispravno filtrirati pri pokretanju preglednika. Ponovo učitajte stranicu kako biste osigurali pravilno filtriranje.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Ova stavka mora biti posljednja", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/ca/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/ca/messages.json new file mode 100644 index 00000000..6f9aa9c6 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/ca/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Finalment, un blocador eficient que utilitza pocs recursos de memòria i processador.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Tauler de control", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Atenció! Hi ha canvis sense desar", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Roman", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignora", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Configuració", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filtres de tercers", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Filtres personalitzats", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Regles personalitzades", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Llista blanca", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Dreceres", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Registre de peticions de xarxa", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Quant a", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Ajuda", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Visor de recursos", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Configuració avançada", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Clic: habilita/inhabilita l'uBlock₀ per a aquest lloc.\n\nCtrl+clic: inhabilita l'uBlock₀ només en aquesta pàgina.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Feu clic per inhabilitar l'uBlock₀ en aquest lloc.\n\nFeu Ctrl+clic per inhabilitar l'uBlock₀ només en aquesta pàgina.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Feu clic per habilitar l'uBlock₀ en aquest lloc.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "sol·licituds bloquejades", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "en aquesta pàgina", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} o {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "des de la instal·lació", + "description": "English: since install" + }, + "popupOr": { + "message": "o", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blocat en aquesta pàgina", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blocat des de la instal·lació", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Dominis connectats", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Clic per obrir el tauler de control", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Activa el mode d'eliminació d'elements", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Canvia al mode de selecció d'elements", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Obre el registre d'esdeveniments", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Informeu d'un problema en aquest lloc web", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Commuta el bloqueig de totes les finestres emergents d'aquest lloc", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Feu clic per blocar totes les finestres emergents d'aquest lloc", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Feu clic per desblocar les finestres emergents d'aquest lloc", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Commuta el bloqueig d'elements multimèdia grans per a aquest lloc", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Feu clic per blocar elements multimèdia grans en aquest lloc", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Feu clic per desblocar elements multimèdia grans en aquest lloc", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Commuta els filtres cosmètics d'aquest lloc", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Feu clic per inhabilitar els filtres cosmètics en aquest lloc", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Feu clic per habilitar els filtres cosmètics en aquest lloc", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Commuta el bloqueig de fonts remotes per a aquest lloc", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Feu clic per blocar les fonts remotes en aquest lloc", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Feu clic per desblocar les fonts remotes en aquest lloc", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Feu clic per inhabilitar completament el JavaScript en aquest lloc", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Feu clic per no inhabilitar el JavaScript en aquest lloc", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Finestres emergents", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Elements multimèdia grans", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filtres cosmètics", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Fonts remotes", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Més", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Menys", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Regles globals: les regles d'aquesta columna s'apliquen a tots els llocs.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Regles locals: les regles d'aquesta columna s'apliquen només al lloc actual.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Feu clic per fer els canvis permanents.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Feu clic per desfer els canvis.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "tot", + "description": "" + }, + "popupImageRulePrompt": { + "message": "imatges", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "de tercers", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "css/imatges de tercers", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "scripts incrustats", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "scripts", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "scripts de tercers", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "marcs de tercers", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "dominis connectats", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} de {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versió", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "marc", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Crear", + "description": "English: Create" + }, + "pickerPick": { + "message": "Escollir", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Sortir", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Vista prèvia", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filtres de xarxa", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filtres cosmètics", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Clic, Ctrl+clic", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Bloca l'element", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Amaga els marcadors de posició dels elements blocats", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Mostra el número de peticions blocades a l'icona", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Inhabilita els suggeriments", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Utilitzar el menú contextual quan sigui possible", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Configuració per a persones daltòniques", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Aparença", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Color d'accent personalitzat", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Habilita el suport d'emmagatzematge al núvol", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Sóc un usuari avançat (lectura necessària)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Inhabilita la cerca prèvia (per evitar qualsevol connexió de xarxa per a sol·licituds blocades)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Inhabilita l'auditoria de l'enllaç", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Evita que el protocol WebRTC divulgui la IP local", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Comportament per defecte", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Es pot anul·lar el comportament per defecte per a qualsevol web", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Inhabilita els filtres cosmètics", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Bloca els fitxers multimèdia més grans que {{input:number}} kB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Bloca les fonts remotes", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Inhabilita el JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Bloca els informes CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Revela els noms canònics", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avançat", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Característiques adequades només per a usuaris tècnics", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "configuració avançada", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Darrera restauració:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Darrera còpia de seguretat:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} filtres de xarxa + {{cosmeticFilterCount}} filtres cosmètics de:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} utilitzats de {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Actualitzar automàticament la llista de filtres.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Actualitza ara", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Neteja la memòria caché", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analitzar i aplicar filtres cosmètics.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

Aquesta opció permet l'anàlisi i l'aplicació dels filtres compatibles amb l'Adblock Plus “element hiding”. Aquests filtres són principalment cosmètics, que serveixen per amagar elements d'una pàgina web molestos que per defecte no es poden amagar.

Habilitant aquesta opció augmentarà el consum de memòria de l'µBlock.

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignora els filtres cosmètics genèrics", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

Els filtres cosmètics genèrics són filtres que no s'apliquen a tots els llocs web.

Tot i que l'uBlock₀ els gestiona de manera eficient, aquests filtres encara poden contribuir a un augment d'ús de la memòria o sobrecàrrega de la CPU en algunes pàgines web, especialment si tenen molt contingut, elements d'animació o temps real.

En habilitar aquesta opció s'elimina el risc de sobrecàrrega a la CPU i excés d'ús de la memòria com a resultat de la manipulació de filtres cosmètics genèrics i també es redueix el consum de memòria de l'uBlock₀.

Es recomana habilitar aquesta opció en dispositius poc potents.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspèn l'activitat de la xarxa fins a carregar totes les llistes de filtres", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Llistes de servidors bloquejats", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Aplicar canvis", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Local", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Anuncis", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privacitat", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Dominis perillosos", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Ginys socials", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Avís de galetes", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Elements molestos", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Polivalent", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regions, llengües", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Personalitzat", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importa...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Una URL per línia. S'ignoraran les línies amb el símbol ‘!’. Les URL no vàlides s'ignoraran silenciosament.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Obsolet", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "mostra el contingut", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Darrera actualització: {{ago}}", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "S'està actualitzant...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Un error de xarxa va impedir que s'actualitzés el recurs.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "No afegiu filtres de fonts no confiables.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Habilita els filtres personalitzats", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Permet filtres personalitzats que requereixin confiança", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importa i annexa", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exporta", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-custom-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Aplicar canvis", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Normes permanents", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Normes temporals", + "description": "header" + }, + "rulesRevert": { + "message": "Desfer", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Establir", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Editar", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Desar", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Descartar", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importa des del fitxer...", + "description": "" + }, + "rulesExport": { + "message": "Exporta a...", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Llista de regles de filtrat dinàmic.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Sintaxi de les regles: origen destinació tipus acció (documentació).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Ordena:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Tipus de regla", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Origen", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destinació", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Llistat dels noms de servidor amb que s'inhabilitarà l'µBlock. Una entrada per línia. S'ignoraran els noms de servidor no vàlids.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importa i annexa", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exporta", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "Llista-blanca-de-l'ublock_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Aplicar canvis", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tipus", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domini", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtre", + "description": "English: Filter" + }, + "logAll": { + "message": "Tot", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Peticions amagades", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Pestanya actual", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Torna a carregar el contingut de la pestanya", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Commuta l'inspector DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Commuta el menú emergent", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "Wiki - uBlock Origin: L'informe", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Neteja l'informe", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pausa el registre de l'informe (descarta qualsevol data entrant)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Continua creant el registre", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Commuta el filtratge del registre", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtra entrades del registre", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opcions de filtratge del registre", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Cap", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "important", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blocat", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "permès", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modificat", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "primari", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "de tercers", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detalls", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtre", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Llista de filtres", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regla", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Context", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Context arrel", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Petició", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tipus", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Filtre dinàmic d'URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Context:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tipus:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Filtre estàtic", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} peticions de la xarxa {{type}} {{br}}amb l'URL coincidint {{url}} {{br}}originada des de {{origin}},{{br}}{{importance}} si és una concordança d'un filtre d'excepció.\nhttps://github.com/gorhill/uBlock/issues/235#issuecomment-109745745.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Bloca", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Permet", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "tipus «{{type}}»", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "de qualsevol tipus", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "des de «{{origin}}»", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "des de qualsevol web", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "excepte", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "fins i tot", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "S'ha trobat el filtre estàtic {{filter}} a:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "No s'ha trobat el filtre estàtic {{filter}} a cap de les llistes de filtres actualment habilitades", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Les entrades del registrador que no compleixin les tres condicions següents es rebutjaran automàticament:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Conserva les entrades dels darrers {{input}} minuts", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Conserva com a màxim {{input}} càrregues de pàgina per pestanya", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Conserva com a màxim {{input}} entrades per pestanya", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Utilitza {{input}} línies per entrada en mode expandit verticalment", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Amaga les columnes:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Temps", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtre/regla", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "Petició de {{input}}", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Llista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Taula", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Text pla", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Obre", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Crea un informe nou al GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Cerca informes similars al GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentació", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Llegiu la documentació a uBlock/wiki per obtenir informació sobre totes les funcions de l'uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Preguntes i suport", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Les respostes a preguntes i altres tipus d’ajuda es proporcionen al subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problemes de filtre/lloc web trencat", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Informeu de problemes de filtres amb llocs web específics al uBlockOrigin/uAssets rastrejador de problemes. Requereix un compte de GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: eviteu utilitzar altres bloquejadors amb propòsits similars juntament amb l'uBlock Origin, ja que això pot causar problemes de filtratge en llocs web específics.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Consells: Assegureu-vos que les vostres llistes de filtres estiguin actualitzades. El registrador és l’eina principal per diagnosticar problemes relacionats amb els filtres.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Informe d'errors", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Informeu de problemes amb el propi uBlock Origin al uBlockOrigin/uBlock-issue rastrejador de problemes . Requereix un compte de GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informació de resolució de problemes", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "A continuació es mostra informació tècnica que pot ser útil quan els voluntaris intenten ajudar-vos a resoldre un problema.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Informeu d'un problema de filtre", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Per a evitar la sobrecàrrega del nostre voluntariat amb informes duplicats, verifiqueu abans que el problema encara no s'ha notificat. Nota: en fer clic, enviareu la pàgina causant al nostre GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Les llistes de filtres s'actualitzen diàriament. Assegureu-vos que el vostre problema encara no s'hagi resolt amb les llistes de filtres més recents.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Comproveu que el problema encara existeix després de recarregar la pàgina web problemàtica.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adreça de la pàgina web:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "La pàgina web...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Trieu una entrada --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Mostra anuncis o restes d'anuncis", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Té superposicions o altres errors", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detecta l'uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Té problemes relacionats amb la privadesa", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "No funciona amb l'uBlock Origin habilitat", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Obre pestanyes o finestres no desitjades", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Condueix a programari maliciós, pesca electrònica", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Marca aquesta pàgina com a “NSFW” (“No segur per al treball”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Política de privadesa", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Registre de canvis", + "description": "" + }, + "aboutCode": { + "message": "Codi font (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Col·laboradors", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Codi font", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Traduccions", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Llistat de filtres", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Dependències externes (compatibles amb GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Les llistes de filtres pròpies d'uBO s'allotgen lliurement als següents CDN:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "S'utilitzarà un CDN triat a l'atzar quan calgui actualitzar una llista de filtres", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Còpia de seguretat a un fitxer", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restaura des d'un fitxer...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Restaura als valors per defecte...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "La configuració es sobreescriurà amb la còpia de seguretat del {{time}}, i l'uBlock₀ es reiniciarà.\n\nVoleu restaurar la configuració amb la còpia de seguretat?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Les dades no es poden llegir o no son vàlides", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "La configuració serà suprimida i es reiniciarà l'uBlock₀.\n\nVoleu reiniciar l'uBlock₀ als valors per defecte?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Error de xarxa: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subscriu-me", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "fa un minut", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "fa {{value}} minuts", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "fa una hora", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "fa {{value}} hores", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "fa un dia", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "fa {{value}} dies", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Mostrar Tauler de control", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Mostra el registre d'esdeveniments", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "desactivat", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Pàgina blocada", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "L'uBlock Origin ha impedit que es carregui la pàgina:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Detectat per aquest filtre", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "sense paràmetres", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Trobat a:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Enrere", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Tanca aquesta finestra", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "No em tornis a avisar sobre aquest lloc", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Inhabilita el blocatge estricte per {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporalment", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanentment", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Procedeix", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "La pàgina blocada vol redirigir-vos a un altre web diferent. Si continueu, si us reenviarà a: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Motiu:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Perjudicial", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Seguidor", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Mala reputació", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exporta a un servei al núvol", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importa des d'un servei al núvol", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importa des del núvol i afegeix a la configuració actual", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Nom d'aquest dispositiu:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Atenció! Canvieu aquestes configuracions avançades sota la vostra responsabilitat.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Envia", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Aplica els canvis", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Desfés", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Bloca l'element al marc...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Uniu-vos a la llista de filtres... ", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Permet temporalment els fitxers multimèdia grans", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Mostra el codi font…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Escriviu una drecera", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Commuta el desplaçament blocat", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copia al porta-retalls", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Selecciona-ho tot", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Commuta els filtres cosmètics", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Commuta el JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Mode de bloqueig relaxat", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Emmagatzematge utilitzat: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Clic per carregar", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "No s'ha pogut filtrar correctament en iniciar el navegador.\nTorneu a carregar la pàgina per garantir un filtratge correcte", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Aquesta entrada ha de ser l'última", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/cs/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/cs/messages.json new file mode 100644 index 00000000..c6511e51 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/cs/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Konečně efektivní blokovač. Nezatěžuje CPU a paměť.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ - Ovládací panel", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Varování: Máte neuložené změny!", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Zůstat zde", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorovat", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Nastavení", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Seznamy filtrů", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Moje filtry", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Moje pravidla", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Povolené stránky", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Zkratky", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ - Logger", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "O rozšíření", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Podpora", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ - Prohlížeč zdrojů", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Pokročilá nastavení", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klepnutí: zakáže/povolí uBlock₀ pro tento web.\n\nCtrl+klepnutí: zakáže uBlock₀ jen pro tuto stránku.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Klepněte pro zakázání uBlock₀ pro tento web.\n\nCtrl+klepněte pro zakázání uBlock₀ jen pro tuto stránku.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klepněre pro povolení uBlock₀ pro tento web.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "zablokované požadavky", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "na této stránce", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}}, což je {{percent}} %", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "od instalace", + "description": "English: since install" + }, + "popupOr": { + "message": "což je", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Zablokováno na této stránce", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Zablokováno od instalace", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Počet připojených domén", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Otevřít ovládací panel", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Zapnout režim likvidace prvků", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Zapnout režim výběru prvků", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Otevřít Logger", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Nahlásit problém na tomto webu", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Přepnout blokování všech vyskakovacích oken na tomto webu", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klepnutím zablokujete všechna vyskakovací okna na tomto webu", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klepnutím vypnete blokování všech vyskakovacích oken na tomto webu", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Přepnout blokování velkých multimediálních prvků na tomto webu", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klepnutím zablokujete velké multimediální prvky na tomto webu", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klepnutím vypnete blokování velkých multimediálních prvků na tomto webu", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Přepnout kosmetické filtrování na tomto webu", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klepnutím zakážete kosmetické filtrování na tomto webu", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klepnutím povolíte kosmetické filtrování na tomto webu", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Přepnout blokování vzdálených písem na tomto webu", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klepnutím zablokujete vzdálená písma na tomto webu", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klepnutím vypnete blokování vzdálených písem na tomto webu", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klepnutím zakážete JavaScript na tomto webu", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klepnutím znovu povolíte JavaScript na tomto webu", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Vyskakovací okna", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Velké multimediální prvky", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kosmetické filtrování", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Vzdálená písma", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Více", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Méně", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globální pravidla: tento sloupec slouží pro pravidla, která platí pro všechny weby.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokální pravidla: tento sloupec slouží pro pravidla, která platí jen pro aktuální web.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Klepnutím natrvalo uložíte provedené změny.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klepnutím zrušíte provedené změny.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "vše", + "description": "" + }, + "popupImageRulePrompt": { + "message": "obrázky", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "z třetí strany", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/obrázky třetích stran", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "vložené skripty", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "skripty první strany", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "skripty třetích stran", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "rámce třetích stran", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "připojené domény", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} z {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Verze", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skript", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "rámec", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Vytvořit", + "description": "English: Create" + }, + "pickerPick": { + "message": "Vybrat", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Ukončit", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Náhled", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Síťové filtry", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kosmetické filtry", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klepnutí, Ctrl+klepnutí", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Zablokovat prvek…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Skrýt zástupné objekty zablokovaných prvků", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Zobrazit počet blokovaných požadavků u ikony", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Zakázat nápovědu při najetí", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Využít kontextovou nabídku, kde je to možné", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Styl pro barvoslepé", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Vzhled", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Motiv", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Vlastní barva motivu", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Povolit podporu cloudového úložiště", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Jsem pokročilý uživatel (nutno přečíst)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Zakázat přednačítání (zakáže jakékoli spojení pro zablokované síťové požadavky)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Vypnout auditování hypertextových odkazů", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Předejít úniku lokálních IP adres přes WebRTC", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Výchozí chování", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Tato výchozí chování mohou být přepsána u jednotlivých webů", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Zakázat kosmetické filtrování", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokovat multimediální prvky větší než {{input}} kB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokovat externí písma", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Zakázat JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blokovat CSP reporty", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Odkrýt kanonické názvy", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Pokročilé", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funkce vhodné jen pro pokročilé uživatele", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "pokročilá nastavení", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Poslední obnova:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Poslední záloha:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} síťových filtrů + {{cosmeticFilterCount}} kosmetických filtrů z:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} použito z celkových {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Automaticky aktualizovat seznamy filtrů", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Aktualizovat nyní", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Vyčistit celou mezipaměť", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analyzovat a vynucovat kosmetické filtry", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "\nKosmetické filtry slouží ke skrytí prvků na webové stránce, které jsou považovány za vizuálně obtěžující a které nemohou být blokovány filtry na základě síťových volání.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorovat obecné kosmetické filtry", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Obecné kosmetické filtry jsou takové kosmetické filtry, které jsou určeny k použití na všech webových stránkách. Povolení této volby eliminuje nadbytečnou režii paměti a procesoru, přidanou na webové stránky v důsledku manipulace s obecnými kosmetickými filtry.\n\nTuto volbu doporučujeme povolit na méně výkonných zařízeních.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Pozastavit síťové aktivity, dokud se nenačtou všechny seznamy filtrů", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Seznamy blokovaných hostitelů", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Použít změny", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Zabudované", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklamy", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Soukromí", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Ochrana před malwarem, zabezpečení", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widgety sociálních sítí", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Oznámení o používání souborů cookie", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Dotěrnosti", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Víceúčelové", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regionální, jazykové", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Vlastní", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importovat…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Jedna URL adresa na řádek. Neplatné URL adresy budou tiše ignorovány.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Zastaralé.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "Zobrazit obsah", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Poslední aktualizace: {{ago}}.\nKlepnutím vynutíte aktualizaci.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Aktualizování…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Chyba sítě znemožnila aktualizaci tohoto zdroje.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Nepřidávejte filtry z nedůvěryhodných zdrojů.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Povolit mé vlastní filtry", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Povolit vlastní filtry vyžadující důvěryhodnost", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importovat a připojit…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exportovat…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "moje-vlastni-filtry-ublock_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Použít změny", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Trvalá pravidla", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Dočasná pravidla", + "description": "header" + }, + "rulesRevert": { + "message": "Vrátit", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Potvrdit", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Upravit", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Uložit", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Zrušit", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importovat ze souboru…", + "description": "" + }, + "rulesExport": { + "message": "Exportovat do souboru…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "moje-dynamicka-pravidla-ublock_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Seznam Vašich pravidel pro dynamické filtrování.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Syntaxe pravidla: zdroj cíl typ akce (kompletní dokumentace).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Třídit:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Typ pravidla", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Zdroj", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Cíl", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Pravidla v seznamu povolených webů určují, pro které webové stránky bude uBlock Origin vypnutý. Jedna položka na řádek.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importovat a připojit…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exportovat…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "muj-whitelist-ublock_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Použít změny", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Typ", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Doména", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtr", + "description": "English: Filter" + }, + "logAll": { + "message": "Vše", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Za oponou", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Aktivní list", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Znovu načíst obsah listu", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Přepnout DOM inspektor", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Přepnout vyskakovací panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Vyčistit Logger", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Zastavit logování (ignorovat všechny příchozí údaje)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Pokračovat v logování", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Přepnout filtrování Loggeru", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrovat obsah loggeru", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Volby filtrování Loggeru", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Není", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "cokoli", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokováno", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "povoleno", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "upraveno", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "vlastní doména", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "třetí strany", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Podrobnosti", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtr", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Seznam filtrů", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Pravidlo", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontext", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Kořenový kontext", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Strana", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Typ", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Pravidlo URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontext:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Typ:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statický filtr", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} síťové požadavky {{type}} {{br}}, jejichž URL adresa se shoduje s {{url}} {{br}}a pochází {{origin}},{{br}}{{importance}} shodný výjimkový filtr.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokovat", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Povolit", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "typu \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "jakéhokoli typu", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "z \"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "odkudkoli", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "pokud neexistuje", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "i když existuje", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statický filtr {{filter}} byl nalezen v seznamech:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statický filtr nebyl nalezen v žádném aktuálně povoleném seznamu filtrů", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Záznamy logu, které nesplní všechny uvedené podmínky, budou automaticky zahozeny:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Zachovat záznamy z posledních {{input}} minut", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Zachovat nejvýše {{input}} načtení stránky pro list", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Zachovat nejvýše {{input}} záznamů pro list", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Použít {{input}} řádků pro jeden záznam v režimu svislého rozbalení", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Skrýt sloupce:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Čas", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtr/pravidlo", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Kontext", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} strana", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Seznam", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabulka", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Prostý text", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Otevřít", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Vytvořit nové hlášení na GitHubu", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Vyhledat podobná hlášení na GitHubu", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentace", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Přečtěte si dokumentaci na uBlock/wiki, kde se dozvíte o všech funkcích uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Dotazy a podpora", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Odpovědi na otázky a další druhy podpory jsou poskytovány na subredditu /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problémy s filtrem/web je nefunkční", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Nahlaste problémy s filtrem u učitých webových stránek do sledovače problémů uBlockOrigin/uAssets. Vyžaduje účet GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Důležité: Nepoužívejte podobně zaměřené blokátory s uBlock Origin, může to způsobit problémy s filtry na určitých webových stránkách.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tipy: Ověřte, že jsou seznamy filtrů aktuální. Logger je hlavní nástroj pro diagnózu problémů s filtry.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Hlášení chyb", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Nahlaste problémy se samotným uBlock Origin do uBlockOrigin/uBlock-issue sledovače problémů. Vyžaduje účet GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informace o řešení problémů", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Níže jsou technické informace, které mohou být užitečné, když Vám dobrovolníci pomáhají vyřešit nějaký problém.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Nahlásit problém s filtrem", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Abyste dobrovolníky nezatěžovali duplicitními hlášeními, ověřte si, zda již problém nebyl nahlášen. Poznámka: Klepnutím na tlačítko bude originální stránka odeslána na GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Seznamy filtrů jsou aktualizovány denně. Ujistěte se, že Váš problém již nebyl vyřešen v nejnovějších seznamech filtrů.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Ověřte, že problém přetrvává i po opětovném načtení problematické webové stránky.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adresa webové stránky:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Webová stránka…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Vyberte položku --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Zobrazuje reklamy nebo zbytky reklam", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Je překrytá nebo má jiné nedostatky", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detekuje uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Má problémy související se soukromím", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Je rozbitá, když je povolen uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Otevírá nechtěné karty nebo okna", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Vede k badwaru, phishingu", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Označit webovou stránku jako \"NSFW\" (“Není bezpečné pro práci”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Zásady ochrany osobních údajů", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Přehled změn", + "description": "" + }, + "aboutCode": { + "message": "Zdrojový kód (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Přispěvatelé", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Zdrojový kód", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Překlady", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Seznam filtrů", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Externí závislosti (kompatibilní s GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Vlastní seznamy filtrů uBO jsou volně hostovány na následujících CDN:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Při aktualizaci seznamu filtrů se použije náhodně vybraná síť CDN.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Zálohovat do souboru…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "moje-zaloha-ublock_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Obnovit ze souboru…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Obnovit výchozí nastavení…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Všechna nastavení budou přepsána daty, zálohovanými {{time}} a uBlock₀ se restartuje.\n\nPřepsat všechna existující nastavení zálohovanými daty?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Data nemohla být načtena nebo jsou neplatná", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Všechna nastavení budou smazána a uBlock₀ se restartuje.\n\nObnovit uBlock₀ do továrního nastavení?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Chyba sítě: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Odebírat", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "před minutou", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "před {{value}} minutami", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "před hodinou", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "před {{value}} hodinami", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "včera", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "před {{value}} dny", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Zobrazit ovládací panel", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Zobrazit Logger", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "vypnuto", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Stránka byla zablokována", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin zabránil následující stránce v načtení:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Toto se stalo kvůli následujícímu filtru:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "bez parametrů", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Filtr byl nalezen v:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Jít zpět", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Zavřít toto okno", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Příště na tuto stránku neupozorňovat", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Zakázat striktní blokování pro {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Dočasně", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Trvale", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Pokračovat", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Zablokovaná stránka Vás chce přesměrovat na jiný web. Pokud se rozhodnete pokračovat, přejdete přímo na: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Důvod:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Škodlivá", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Sledovač", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Pochybná", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exportovat do cloudového úložiště", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importovat z cloudového úložiště", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importovat z cloudového úložiště a sloučit se současným nastavením", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Název tohoto zařízení:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Pozor! Tato pokročilá nastavení měňte jen na vlastní nebezpečí.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Odeslat", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Použít změny", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Vrátit", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bajtů", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Zablokovat prvek v rámci…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Přihlásit se k odběru seznamu filtrů…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Dočasně povolit velké multimediální prvky", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Zobrazit zdrojový kód…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Zapište zkratku", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Přepnout uzamčení posunu", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopírovat do schránky", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Označit vše", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Zapnout kosmetické filtrování", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Přepnout JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Uvolnit režim blokování", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Využití úložiště: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klepněte pro načtení", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Chyby: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Nebylo možné správně filtrovat při spuštění prohlížeče. Načtěte stránku znovu, abyste zajistili správné filtrování.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Tento záznam musí být poslední", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/cv/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/cv/messages.json new file mode 100644 index 00000000..1e03eca8 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/cv/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock₀", + "description": "extension name." + }, + "extShortDesc": { + "message": "Тинех Интернет тишкерӳҫӗ валли хӑвӑрт та витӗмлӗ чаркӑч пур.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "Йӗркелӳ ҫӳлӗкӗ", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Асӑрха! Санӑн упраман улшӑнусем пур", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Stay here", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignore", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Ӗнерлев", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Ют фильтрсем", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Манӑн фильтрсем", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Манӑн йӗрке", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Trusted sites", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Shortcuts", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Logger", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Сарӑм пирки", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Support", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Asset viewer", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Advanced settings", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Click to enable uBlock₀ for this site.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "requests blocked", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "on this page", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} е {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "since install", + "description": "English: since install" + }, + "popupOr": { + "message": "е", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blocked on this page", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blocked since install", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domains connected", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Йӗркелӳ ҫӳлӗкне уҫма пус", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Enter element zapper mode", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Enter element picker mode", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Open the logger", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Report an issue on this website", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Toggle the blocking of all popups for this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Click to block all popups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Click to no longer block all popups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Toggle the blocking of large media elements for this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Click to block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Click to no longer block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Toggle cosmetic filtering for this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Click to disable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Click to enable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Toggle the blocking of remote fonts for this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Click to block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Click to no longer block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Click to disable JavaScript on this site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Click to no longer disable JavaScript on this site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Pop-up windows", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Large media elements", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Cosmetic filtering", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Remote fonts", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Тата", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Global rules: this column is for rules which apply to all sites.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Local rules: this column is for rules which apply to the current site only.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Click to make your changes permanent.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Click to revert your changes.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "пурте", + "description": "" + }, + "popupImageRulePrompt": { + "message": "ӳкерчӗксем", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "ют ресурссем", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "ют css/ӳкерчӗксем", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline-скриптсем", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Харпӑр скриптсем", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "ют скриптсем", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Ют фреймсем", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domains connected", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} out of {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Create", + "description": "English: Create" + }, + "pickerPick": { + "message": "Суйласа ил", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Тух", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Preview", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Network filters", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Cosmetic filters", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Click, Ctrl-click", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Block element…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Hide placeholders of blocked elements", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Show the number of blocked requests on the icon", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Disable tooltips", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Make use of context menu where appropriate", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Color-blind friendly", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Appearance", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Theme", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Enable cloud storage support", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Эпӗ ӑста усӑҫ (Вуламасӑр иртме ҫук)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Disable pre-fetching (to prevent any connection for blocked network requests)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Disable hyperlink auditing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Prevent WebRTC from leaking local IP addresses", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Default behavior", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Ку ӗнерлеве кашни сайт валли уйрӑм палӑртма май пур", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Disable cosmetic filtering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "{{input:number}} КБ йывӑртарах медиа-элементсене чар", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Ют шрифтсене чар", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Disable JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Block CSP reports", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Advanced", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "advanced settings", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Юлашки тавӑру:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Last backup:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} used out of {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Auto-update filter lists", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Халех ҫӗнет", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Purge all caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Parse and enforce cosmetic filters", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignore generic cosmetic filters", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Чарнӑ хостсен йышӗ", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Улшӑнӑва ҫирӗплет", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Built-in", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Реклама", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Вӑрттӑнлӑх", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Malware protection, security", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Annoyances", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Нумай тӗллевлисем", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Регионсем, чӗлхесем", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Custom", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Import…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "One URL per line. Invalid URLs will be silently ignored.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Кивелнӗ", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "view content", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Юлашки ҫӗнетӳ: {{ago}}", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Updating…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "A network error prevented the resource from being updated.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Import and append…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Куҫар", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-custom-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Улшӑнӑва ҫирӗплет", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Яланлӑх йӗрке", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Вӑхӑтлӑх йӗрке", + "description": "header" + }, + "rulesRevert": { + "message": "Тавӑр", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Ҫирӗплет", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Улӑштар", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Упра", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Discard", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Import from file…", + "description": "" + }, + "rulesExport": { + "message": "Export to file…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "List of your dynamic filtering rules.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rule syntax: source destination type action (full documentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sort:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Rule type", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Source", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destination", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Import and append…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Export…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Улшӑнӑва ҫирӗплет", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Тĕсĕ", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Домен", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Фильтр", + "description": "English: Filter" + }, + "logAll": { + "message": "Пурте", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tabless", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Current tab", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Reload the tab content", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Toggle the DOM inspector", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Toggle the popup panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: The logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Clear logger", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pause logger (discard all incoming data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Unpause logger", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Toggle logger filtering", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filter logger content", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logger filtering options", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Not", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blocked", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "allowed", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modified", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1st-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3rd-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Details", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filter list", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Rule", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Context", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Root context", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Type", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "Тӗл", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": " URL динамика фильтрацийӗ", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Контекст:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Тĕсĕ:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Статика фильстрацийӗ", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Чар", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Ирӗк пар", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "тĕсĕ “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "any type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": " “{{origin}}” ран", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "Кирек ӑҫтан та", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "except when", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "even if", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Static filter {{filter}} found in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Static filter could not be found in any of the currently enabled filter lists", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Preserve entries from the last {{input}} minutes", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preserve at most {{input}} page loads per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preserve at most {{input}} entries per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Use {{input}} lines per entry in vertically expanded mode", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Hide columns:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Time", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/rule", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "List", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Table", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plain", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Open", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Create new report on GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Find similar reports on GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentation", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Read the documentation at uBlock/wiki to learn about all of uBlock Origin's features.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Questions and support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Bug report", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Troubleshooting Information", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Privacy policy", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Улшӑнусен йышӗ", + "description": "" + }, + "aboutCode": { + "message": "Source code (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Пайташсем", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Source code", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Translations", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filter lists", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "External dependencies (GPLv3-compatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's own filter lists are freely hosted on the following CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A randomly picked CDN is used when a filter list needs to be updated.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Back up to file…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restore from file…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Reset to default settings…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "The data could not be read or is invalid", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Network error: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subscribe", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "пӗр минут каялла", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} минут каялла", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "пӗр сехет каялла", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} сехет каялла", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "пӗр кун каялла", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} кун каялла", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Йӗркелӳ ҫӳлӗкне кӑтарт", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Show Logger", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "off", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Page blocked", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin has prevented the following page from loading:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Тепӗр фильтра пула", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "ӗнерлевсӗр", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Тупӑннӑ:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Таврӑн", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Close this window", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Disable strict blocking for {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Вӑхӑтлӑха", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Яланлăха", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceed", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Export to cloud storage", + "description": "tooltip" + }, + "cloudPull": { + "message": "Import from cloud storage", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Import from cloud storage and merge with current settings", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Ку хатӗрӗн ячӗ:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Warning! Change these advanced settings at your own risk.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Йышӑн", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Apply changes", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Тавӑр", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "байт", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Block element in frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribe to filter list…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Пысӑк медиа-элементсене вӑхӑтлӑха уҫ", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Type a shortcut", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Toggle locked scrolling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copy to clipboard", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Select all", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relax blocking mode", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Storage used: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Click to load", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Ку ҫыру юлашки пулмалла", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/cy/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/cy/messages.json new file mode 100644 index 00000000..f4dc7be2 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/cy/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "O'r diwedd, rhwystrydd effeithlon sy'n well ar y CPU a'r cof.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dangosfwrdd", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Rhybudd: mae gennych newidiadau heb eu cadw!", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Aros yma", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Anwybyddu", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Gosodiadau", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Rhestri hidlo", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Fy hidlyddion", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Fy rheolau", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Gwefannau dibynadwy", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Llwybrau byr", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Logiwr", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Ynghylch", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Cymorth", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Asset viewer", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Gosodiadau uwch", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Clic: analluogi/galluogi uBlock₀ ar y wefan hon.\n\nCtrl+clic: analluogi uBlock₀ ar y dudalen hon yn unig.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Cliciwch i analluogi uBlock₀ ar y wefan hon.\n\nDefnyddiwch ctrl+clic i analluogi uBlock₀ ar y dudalen hon yn unig.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Cliciwch i alluogi uBlock₀ ar y wefan hon.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "requests blocked", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "ar y dudalen hon", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "ers gosod", + "description": "English: since install" + }, + "popupOr": { + "message": "neu", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Wedi rhwystro ar y dudalen hon", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Wedi rhwystro ers gosod", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Parthau wedi'u cysylltu", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Agor y dashfwrdd", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Galluogi modd saethu elfen", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Galluogi modd dewis elfen", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Agor y logiwr", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Adrodd nam ar y wefan hon", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Toggle the blocking of all popups for this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Click to block all popups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Click to no longer block all popups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Toggle the blocking of large media elements for this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Click to block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Click to no longer block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Toglo hidlo arwynebol ar gyfer y wefan hon", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Cliciwch i analluogi hidlo arwynebol ar y wefan hon", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Cliciwch i alluogi hidlo arwynebol ar y wefan hon", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Toggle the blocking of remote fonts for this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Cliciwch i rwystro ffontiau pell ar y wefan hon", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Cliciwch i ganiatáu ffontiau pell ar y wefan hon", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Cliciwch i analluogi JavaScript ar y wefan hon", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Cliciwch i alluogi JavaScript ar y wefan hon", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Ffenestri naid", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Elfennau cyfryngau mawr", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Hidlo arwynebol", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Ffontiau pell", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Rhagor", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Llai", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Global rules: this column is for rules which apply to all sites.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Local rules: this column is for rules which apply to the current site only.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Click to make your changes permanent.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Click to revert your changes.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "popeth", + "description": "" + }, + "popupImageRulePrompt": { + "message": "delweddau", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3ydd-parti", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/delweddau 3ydd-parti", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline scripts", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1st-party scripts", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3rd-party scripts", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3rd-party frames", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domains connected", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} o {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Fersiwn", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "sgript", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "ffram", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Creu", + "description": "English: Create" + }, + "pickerPick": { + "message": "Dewis", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Gadael", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Rhagolwg", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Network filters", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Hidlyddion arwynebol", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Click, Ctrl-click", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blocio elfen…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Hide placeholders of blocked elements", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Show the number of blocked requests on the icon", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Disable tooltips", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Make use of context menu where appropriate", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Color-blind friendly", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Gwedd", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Thema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Enable cloud storage support", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Rwy'n ddefnyddiwr profiadol", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Disable pre-fetching (to prevent any connection for blocked network requests)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Disable hyperlink auditing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Rhwystro WebRTC rhag datgelu eich cyfeiriad IP mewnol", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Default behavior", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "These default behaviors can be overridden on a per-site basis", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Analluogi hidlo arwynebol", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Block media elements larger than {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Rhwystro ffontiau pell", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Analluogi JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Block CSP reports", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Uwch", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "gosodiadau uwch", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Last restore:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Last backup:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "Defnyddir {{used}} o {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Auto-update filter lists", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Diweddaru nawr", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Purge all caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Parse and enforce cosmetic filters", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Anwybyddu hidlyddion arwynebol cyffredinol", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Hidlyddion arwynebol cyffredinol yw'r hidlyddion arwynebol hynny sy'n gweithredu ar bob gwefan. Mae galluogi'r dewisiad hwn yn dileu'r pwysau a roddir ar y cof a'r CPU gan wefannau o ganlyniad i drin hidlyddion arwynebol cyffredinol.\n\nArgymhellir galluogi'r dewisiad hwn ar ddyfeisiau llai pwerus.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Rhoi newidiadau ar waith", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Mewnol", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Hysbysebion", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Preifatrwydd", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Diogelwch ac amddiffyn rhag maleiswedd", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Hysbysiadau cwci", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Pethau diflas", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Amlbwrpas", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Rhanbarthau, ieithoedd", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Addas", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Mewnforio…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "One URL per line. Invalid URLs will be silently ignored.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Wedi dyddio.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "gweld cynnwys", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Last update: {{ago}}.\nClick to force an update.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Wrthi'n diweddaru…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "A network error prevented the resource from being updated.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Galluogi fy hidlyddion addasedig", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Mewnforio ac atodi...", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Allforio…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "fy-hidlyddion-statig_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Rhoi'r newidiadau ar waith", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Rheolau parhaol", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Rheolau dros dro", + "description": "header" + }, + "rulesRevert": { + "message": "Gwrthdroi", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Cadw", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Golygu", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Cadw", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Dileu", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Mewnforio o ffeil...", + "description": "" + }, + "rulesExport": { + "message": "Allforio i ffeil…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "fy-hidlyddion-deinamig_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Rhestr o'ch rheolau hidlo deinamig. ", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rule syntax: source destination type action (full documentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Trefnu:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Math o reol", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Ffynhonnell", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Cyrchfan", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Mewnforio ac atodi...", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Allforio…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Rhoi'r newidiadau ar waith", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Math", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Parth", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Hidlydd", + "description": "English: Filter" + }, + "logAll": { + "message": "Y cyfan", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tabless", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Y tab presennol", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Reload the tab content", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Toggle the DOM inspector", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Toggle the popup panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: The logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Clirio'r logiwr", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Oedi'r logiwr (diystyru data sy'n cyrraedd)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Dad-oedi'r logiwr", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Toglo hidlo'r logiwr", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "hidlo cynnwys yr hidlydd", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Dewisiadau hidlo'r logiwr", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Nid", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "wedi rhwystro", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "wedi caniatáu", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "wedi addasu", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1st-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3ydd-parti", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Manylion", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Hidlydd", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filter list", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Rheol", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Cyd-destun", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Root context", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Lefel parti", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Math", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Rheol URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Cyd-destun:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Math:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Hidlydd statig", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Rhwystro", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Caniatáu", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "math \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "unrhyw fath", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "o \"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "o unrhyw le", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "ac eithrio pan", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "hyd yn oed os", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Static filter {{filter}} found in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Static filter could not be found in any of the currently enabled filter lists", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Preserve entries from the last {{input}} minutes", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preserve at most {{input}} page loads per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preserve at most {{input}} entries per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Use {{input}} lines per entry in vertically expanded mode", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Cuddio colofnau:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Amser", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Hidlydd/rheol", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Cyd-destun", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Rhestr", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabl", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plaen", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Agor", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Creu adroddiad newydd", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Canfod adroddiadau tebyg", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dogfennaeth", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Read the documentation at uBlock/wiki to learn about all of uBlock Origin's features.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Cwestiynau a chymorth", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Adroddiad nam", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Gwybodaeth datrys problemau", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Adrodd nam ar hidlydd", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Cyfeiriad y dudalen we:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Y dudalen we…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Yn dangos hysbysebion neu weddillion hysbysebion", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Yn canfod uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Yn cynnwys materion preifatrwydd", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Rhoi label “NSFW” (“Not Safe For Work”) ar y dudalen we", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Polisi preifatrwydd", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Cofnod newidiadau", + "description": "" + }, + "aboutCode": { + "message": "Cod ffynhonnell (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Cyfranwyr", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Cod ffynhonnell", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Cyfieithiadau", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Rhestri hidlo", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Gofynion allanol (cydnaws â GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's own filter lists are freely hosted on the following CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A randomly picked CDN is used when a filter list needs to be updated.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Copïo wrth gefn i ffeil...", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "copi-wrth-gefn-ublock_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Adfer o ffeil...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Ailosod y gosodiadau i'r rhagosodiad...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "The data could not be read or is invalid", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Gwall rhwydwaith: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Tanysgrifio", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "funud yn ôl", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} o funudau yn ôl", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "awr yn ôl", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} awr yn ôl", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "ddiwrnod yn ôl", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} o ddiwrnodau yn ôl", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Dangos y dashfwrdd", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Dangos y logiwr", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "na", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Tudalen wedi'i blocio", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "Mae uBlock Origin wedi atal y dudalen ganlynol rhag llwytho:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Digwyddodd hyn oherwydd y hidlydd canlynol:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "heb baramedrau", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "The filter has been found in:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Yn ôl", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Cau'r ffenestr hon", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Peidio â'm rhybuddio eto am y wefan hon", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Disable strict blocking for {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Dros dro", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Yn barhaol", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Parhau", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Rheswm:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Maleisus", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Traciwr", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Export to cloud storage", + "description": "tooltip" + }, + "cloudPull": { + "message": "Import from cloud storage", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Import from cloud storage and merge with current settings", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Enw'r ddyfais hon:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Warning! Change these advanced settings at your own risk.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Cyflwyno", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Rhoi newidiadau ar waith", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Gwrthdroi", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "beit", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Block element in frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribe to filter list…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Temporarily allow large media elements", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Gweld y cod ffynhonnell…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Type a shortcut", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Toggle locked scrolling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copïo i'r clipfwrdd", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Dewis y cyfan", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toglo hidlo arwynebol", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toglo JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relax blocking mode", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Storfa: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Clicio i lwytho", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Gwallau: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/da/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/da/messages.json new file mode 100644 index 00000000..d885364d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/da/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Endelig en effektiv blocker. Lavt CPU- og hukommelsesforbrug.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Kontrolpanel", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Advarsel! Du har ændringer, der ikke er gemt", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Bliv her", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorér", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Indstillinger", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filterlister", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Mine filtre", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Mine regler", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Betroede websteder", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Genveje", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Logger", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Om", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Support", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Visning af aktiver", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Avancerede indstillinger", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klik: Deaktivér/aktivér uBlock₀ på dette websted.\n\nCtrl+klik: Deaktivér kun uBlock₀ på denne side.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Klik for at deaktivere uBlock₀ på dette websted.\n\nCtrl+klik for kun at deaktivere uBlock₀ på denne side.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klik for at aktivere uBlock₀ på dette websted.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "blokerede forespørgsler", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "på denne side", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} eller {{percent}} %", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "siden installation", + "description": "English: since install" + }, + "popupOr": { + "message": "eller", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokeret på denne side", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blokeret siden installation", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Tilknyttede domæner", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Åbn kontrolpanelet", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Gå til elementdræber­tilstand", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Gå til elementvælger­tilstand", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Åbn loggeren", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Anmeld et problem med dette websted", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Aktivér/deaktivér blokering af alle popups på dette websted", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klik for at blokere alle popups på dette websted", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klik for ikke længere at blokere alle popups på dette websted", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Aktivér/deaktivér blokering af store medieelementer på dette websted", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klik for at blokere store medieelementer på dette websted", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klik for ikke længere at blokere store medieelementer på dette websted", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Slå kosmetisk filtrering til/fra for dette websted", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klik for at slå kosmetisk filtrering fra på dette websted", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klik for at slå kosmetisk filtrering til på dette websted", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Slå blokeringen af fjernskrifttyper til/fra for dette websted", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klik for at blokere fjernskrifttyper på dette websted", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klik for ikke længere at blokere fjernskrifttyper på dette websted", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klik for at deaktivere JavaScript på dette websted", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klik for ikke længere at deaktivere JavaScript på dette websted", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Popup-vinduer", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Store medieelementer", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kosmetisk filtrering", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Fjernskrifttyper", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Mere", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Skjul", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globale regler: Denne kolonne er til regler gældende alle websteder.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokale regler: Søjlen viser de regler, som alene gælder på det aktuelle websted.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Klik for at gøre dine ændringer permanente.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klik for at fortryde dine ændringer.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "alle", + "description": "" + }, + "popupImageRulePrompt": { + "message": "billeder", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Tredjeparts", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "Tredjeparts CSS/billeder", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "indlejrede scripts", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Førsteparts-scripts", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Tredjeparts-scripts", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Tredjeparts-rammer", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "forbundne domæner", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} af {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Opret", + "description": "English: Create" + }, + "pickerPick": { + "message": "Vælg", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Afslut", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Forhåndsvisning", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Netværksfiltre", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kosmetiske filtre", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Ctrl-klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blokér element...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Skjul blokerede elementers pladsholdere", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Vis antallet af blokerede forespørgsler på ikonet", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Deaktivér værktøjstips", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Benyt kontekstmenuen, hvor det er relevant", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Optimeret til farveblinde", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Udseende", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Tilpasset fremhævningsfarve", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Aktivér understøttelse for Skylagring", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Jeg er en erfaren bruger", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Deaktivér præindlæsning (for at hindre enhver forbindelse for blokerede netværksanmodninger)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Deaktivér hyperlinkrevision", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Forhindr WebRTC i at lække lokale IP-adresser", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Standardadfærd", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Standardadfærd som disse kan tilsidesættes pr. websted", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Deaktivér kosmetisk filtrering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokér medieelementer større end {{input:number}} kB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokér fjernskrifttyper", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Deaktivér JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blokér CSP-rapporter", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Vis kanoniske navne", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avanceret", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funktioner kun egnet til tekniske brugere.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "avancerede indstillinger", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Seneste gendannelse:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Seneste sikkerhedskopi:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} netværksfiltre + {{cosmeticFilterCount}} kosmetiske filtre fra:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} af {{total}} brugt", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Auto-opdatér filterlister", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Opdatér nu", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Ryd alle caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Fortolk og benyt kosmetiske filtre", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Kosmetiske filtre tjener til at skjule elementer på en webside, der anses for at være visuel generende, og som ikke kan blokeres af den netværksanmodningsbaserede filtreringsmotor.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorér generiske kosmetiske filtre", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generiske kosmetiske filtre er de kosmetiske filtre, der er beregnet til at gælde på alle websteder. Aktivering af denne indstilling vil eliminere hukommelse- og CPU-forbrug, der tilføjes til websider som et resultat af håndtering af generiske kosmetiske filtre.\n\nDet anbefales at aktivere denne indstilling på mindre kraftfulde enheder.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspendér netværksaktivitet, indtil alle filterlister er indlæst", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Liste over blokerede værter", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Effektuér ændringer", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Integreret", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Annoncer", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privatliv", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Malware-beskyttelse, sikkerhed", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sociale widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie-meddelelser", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Gener", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Universalfiltre", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regioner, sprog", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Tilpasset", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importér...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Én URL pr. linje. Ugyldige URL'er ignoreres uden notificering.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Forældet.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "vis indhold", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Seneste opdatering: {{ago}}.\nKlik for at gennemtvinge en opdatering.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Opdaterer...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "En netværksfejl forhindrede opdatering af ressourcen.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Tilføj ikke filtre fra ikke-betroede kilder.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Aktivér mine tilpassede filtre", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Tillad tilpassede filtre som kræver tillid", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importér og tilføj…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Eksportér…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "mine-ublock-statiske-filtre_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Effektuér ændringer", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Permanente regler", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Midlertidige regler", + "description": "header" + }, + "rulesRevert": { + "message": "Gendan", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Gør permanent", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Redigér", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Gem", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Kassér", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importér fra fil...", + "description": "" + }, + "rulesExport": { + "message": "Eksportér til fil…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "mine-ublock-dynamiske-regler_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Liste over dine dynamiske filtreringsregler.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Regelsyntaks: kilde destination type handling (fuld dokumentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sortering:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Regeltype", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Kilde", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destination", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "De betroede webstedsdirektiver dikterer, på hvilke websider uBlock Origin skal deaktiveres. En post pr. linje.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importér og tilføj…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Eksportér…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "mine-ublock-betroede-websteder_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Effektuér ændringer", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Type", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domæne", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Alle", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Bag kulisserne", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Aktuel fane", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Genindlæs faneindholdet", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Slå DOM-inspektøren til/fra", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Slå popup-panelet til/fra", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin-wiki: Loggeren", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Ryd logger", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Sæt logger på pause (ignorér alle indgående data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Fortsæt logger", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Slå logger-filtrering til/fra", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrér logindhold", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logger-filtreringsindstillinger", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Ikke", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "begivenhedsrig", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokerede", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "tilladte", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "ændret", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "førsteparts", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "tredjeparts", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detaljer", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filterliste", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regel", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontekst", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Root-kontekst", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partsrelation", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Type", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL-regel", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontekst:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Type:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statisk filtrering", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} netværksanmodninger af {{type}} {{br}}, hvis URL matcher {{url}} {{br}}, og som stammer fra {{origin}},{{br}}{{importance}} når der er et matchende undtagelsesfilter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokér", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Tillad", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "enhver type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "fra \"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "fra hvor som helst", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "undtagen når", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "selvom", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statisk filter {{filter}} fundet i:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statisk filter kunne ikke findes i nogen af de aktuelt aktiverede filterlister", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Loggerposter, som ikke opfylder alle tre betingelser nedenfor, kasseres automatisk:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Bevar poster fra de seneste {{input}} minutter", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Bevar maks. {{input}} sideindlæsninger pr. fane", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Bevar maks. {{input}} poster pr. fane", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Benyt {{input}} linjer pr. post i lodret udvidet tilstand", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Skjul kolonner:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} tid", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/regel", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Kontekst", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partsrelation", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Liste", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabel", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Enkel", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Åbn", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Opret ny anmeldelse på GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Find lign. anmeldelser på GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentation", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Læs dokumentationen på uBlock/wiki for at få mere at vide om alle uBlock Origin-funktionerne.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Spørgsmål og Support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Svar på spørgsmål samt andre former for hjælp/support er tilgængelig via subreddit/r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filterproblemer/websted er ødelagt", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Rapportér filterproblemer med bestemte websteder via uBlockOrigin/uAssets-problemsporing. Kræver en GitHub-konto.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Vigtigt: Undgå brug af andre blockere med lign. formål sammen med uBlock Origin, da dette kan medføre filterproblemer på visse websteder.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tip: Sørg for, at dine filterlister er opdaterede. Loggeren er det primære værktøj til diagnosticering af filterrelaterede problemer.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Fejlrapport", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Rapportér problemer med selve uBlock Origin via uBlockOrigin/uBlock-issue problemsporingen. Kræver en GitHub-konto.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Fejlfindingsinformation", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Nedenfor findes tekniske oplysninger, som kan være nyttige, når frivillige forsøger at hjælpe dig med at løse et problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Anmeld et filterproblem", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "For at undgå at bebyrde frivillige med dubletanmeldelser, så tjek venligst, at problematikken ikke allerede er anmeldt. Bemærk: Ved at klikke på knappen, sendes sidens oprindelse til GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filterlister opdateres dagligt. Sørg for, at problematikken ikke allerede er blevet behandlet i de seneste filterlister.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Bekræft problematikkens fortsatte eksistens efter genindlæsning af den problematiske webside.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Websideadressen", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Websiden...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Vælg problemtype --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Viser annoncer eller annoncerester", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Indeholder overlejringer eller andre gener", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detekterer uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Indeholder fortrolighedsrelaterede problemer", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Ødelægges, når uBlock Origin er aktiveret", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Åbner uønskede faner eller vinduer", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Fører til badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Markér websiden som “NSFW” (“Ikke sikker til arbejdsbrug”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Fortrolighedspolitik", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Ændringslog", + "description": "" + }, + "aboutCode": { + "message": "Kildekode (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Bidragsydere", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Kildekode", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Oversættelser", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filterlister", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Eksterne afhængigheder (GPLv3-kompatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBOs egne filterlister hostes frit på flg. CDN'er:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "En tilfældigt valgt CDN anvendes, når en filterliste kræver opdatering.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Sikkerhedskopiér til fil...", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "min-ublock-sikkerhedskopi_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Gendan fra fil...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Nulstil til standardindstillinger...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Alle dine indstillinger overskreves med data sikkerhedskopieret d. {{time}}, hvorefter uBlock₀ genstarter.\n\nOverskriv aktuelle indstillinger med data fra sikkerhedskopien?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Dataene kunne ikke læses eller er ugyldige", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Alle dine indstillinger fjernes, hvorefter uBlock₀ genstarter.\n\nNulstil uBlock₀ til standardindstillingerne?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Netværksfejl: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Abonnér", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "et minut siden", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minutter siden", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "en time siden", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} timer siden", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "en dag siden", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} dage siden", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Vis Kontrolpanel", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Vis Logger", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "Slået fra", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Side blokeret", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origins har blokeret flg. side fra at hente:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Grundet flg. filter", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "uden parametre", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Fundet i:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Gå tilbage", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Luk dette vindue", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Advar ikke igen om dette websted", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Deaktivér stringent blokering for {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Midlertidig", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanent", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Fortsæt", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Den blokerede side ønsker at omdirigere til et andet websted. Vælger man at fortsætte, navigeres direkte til: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Årsag:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Ondsindet", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Ikke-velrenommeret", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Eksportér til Skylager", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importér fra Skylager", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importér fra Skylager og sammenflet med de aktuelle indstillinger", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Denne enheds navn:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Advarsel! Ændring af disse avancerede indstillinger sker på eget ansvar.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Indsend", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Effektuér ændringer", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Gendan", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blokér element i ramme...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Abonnér på filterliste...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Tillad midlertidigt store medieelementer", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Vis kildekode…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Angiv en genvej", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Slå rullelåsning til/fra", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopiér til Udklipsholder", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Vælg alt", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Kosmetisk filtrering til/fra", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript til/fra", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Lemp blokeringstilstand", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Lagerplads brugt: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klik for at indlæse", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Fejl: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Kunne ikke filtrere korrekt ved webbrowserstart. Genindlæs siden for at sikre korrekt filtrering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Denne post skal være den sidste", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/de/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/de/messages.json new file mode 100644 index 00000000..01a1dc11 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/de/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Ein effizienter Blocker mit geringer CPU- und Speicherauslastung.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dashboard", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Warnung! Nicht gespeicherte Änderungen", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Bleiben", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorieren", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Einstellungen", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filterlisten", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Meine Filter", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Meine Regeln", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Ausnahmeregeln", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Tastenkombinationen", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Protokoll der Netzwerkanfragen", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Über", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Unterstützung", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Ressourcenbetrachter", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Erweiterte Einstellungen", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klick: uBlock₀ für diese Website ein-/ausschalten.\n\nStrg+Klick: uBlock₀ nur für die aktuelle Seite ausschalten.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Hier klicken, um uBlock₀ für diese Website auszuschalten. \n\nStrg+Klick, um uBlock₀ nur auf dieser Seite auszuschalten.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Hier klicken, um uBlock₀ für diese Website einzuschalten.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "Blockierte Anfragen", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "auf dieser Seite", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}} %)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "seit Installation", + "description": "English: since install" + }, + "popupOr": { + "message": "oder", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Auf dieser Seite blockiert", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Seit der Installation blockiert", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Verbundene Domains", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Dashboard öffnen", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Element temporär entfernen", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Element dauerhaft entfernen", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Protokoll der Netzwerkanfragen öffnen", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Ein Problem mit dieser Website melden", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Pop-ups auf dieser Website blockieren/zulassen", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Hier klicken, um alle Pop-ups auf dieser Website zu blockieren", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Hier klicken, um Pop-ups auf dieser Website wieder zuzulassen", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Große Medienelemente auf dieser Website anzeigen/blockieren", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Hier klicken, um große Medienelemente auf dieser Website zu blockieren", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Hier klicken, um große Medienelemente auf dieser Website wieder zuzulassen", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Kosmetisches Filtern für diese Website ein-/ausschalten", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Hier klicken, um kosmetisches Filtern auf dieser Website zu deaktivieren", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Hier klicken, um kosmetisches Filtern auf dieser Website zu aktivieren", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Externe Schriftarten für diese Website blockieren/zulassen", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Hier klicken, um externe Schriftarten auf dieser Website zu blockieren", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Hier klicken, um externe Schriftarten auf dieser Website wieder zuzulassen", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Hier klicken, um JavaScript auf dieser Website zu deaktivieren", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Hier klicken, um JavaScript auf dieser Website wieder zuzulassen", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Pop-up-Fenster", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Große Medienelemente", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kosmetisches Filtern", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Externe Schriftarten", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Mehr", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Weniger", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globale Regeln: Die Regeln in dieser Spalte gelten für alle Websites.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokale Regeln: Die Regeln in dieser Spalte gelten nur für diese Website.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Hier klicken, um die Änderungen dauerhaft zu übernehmen.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Hier klicken, um die Änderungen rückgängig zu machen.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "Alle Ressourcen", + "description": "" + }, + "popupImageRulePrompt": { + "message": "Bilder", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Ressourcen aus Drittquellen", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/Bilder aus Drittquellen", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "Inline-Skripte", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Skripte dieser Domain", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Skripte aus Drittquellen", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Frames aus Drittquellen", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "Verbundene Domains", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} von {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "Skript", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "Frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Erstellen", + "description": "English: Create" + }, + "pickerPick": { + "message": "Auswählen", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Beenden", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Vorschau", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Netzwerkfilter", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kosmetische Filter", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klick, Strg+Klick", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Element blockieren …", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Platzhalter für blockierte Elemente ausblenden", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Anzahl der blockierten Anfragen auf dem Symbol in der Symbolleiste anzeigen", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Tooltips deaktivieren", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Kontextmenü verwenden, falls verfügbar", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Modus für Farbenblinde", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Erscheinungsbild", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Farbschema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Personalisierte Akzentfarbe", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Unterstützung für Cloud-Speicher aktivieren", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Ich bin technisch versiert", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Vorabruf von Webseiten deaktivieren (um jede Verbindung für blockierte Netzwerkanfragen zu verhindern)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Hyperlink-Überwachung deaktivieren", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Freigabe der lokalen IP-Adresse via WebRTC verhindern", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Standardverhalten", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Dieses Standardverhalten kann für jede Website angepasst werden", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Kosmetisches Filtern deaktivieren", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Medienelemente größer als {{input}} KB blockieren", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Externe Schriftarten blockieren", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "JavaScript deaktivieren", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP-Berichte blockieren", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Kanonische Namen auflösen", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Erweitert", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funktionen, die nur für technisch Versierte bestimmt sind", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "Erweiterte Einstellungen", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Letzte Wiederherstellung:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Letztes Backup:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} Netzwerkfilter + {{cosmeticFilterCount}} kosmetische Filter von:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}}/{{total}} verwendet", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Filterlisten automatisch aktualisieren", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Jetzt aktualisieren", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Alle Caches leeren", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Kosmetische Filter auswerten und anwenden", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Kosmetische Filter dienen dazu, Elemente in einer Webseite auszublenden, die als visuell störend empfunden werden und die von den auf Netzwerkanfragen basierenden Filter-Engines nicht blockiert werden können.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Allgemeine kosmetische Filter ignorieren", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Allgemeine kosmetische Filter können auf alle Websites angewendet werden. Diese Option reduziert die CPU- und Speicherauslastung, die durch das Verarbeiten allgemeiner kosmetischer Filter auf Websites entsteht.\n\nEs wird empfohlen, diese Option auf weniger leistungsfähigen Geräten zu aktivieren.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Netzwerkaktivität unterbrechen, bis alle Filterlisten geladen sind", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Listen blockierter Hostnamen", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Änderungen übernehmen", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "uBlock-eigene Filterlisten", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Werbung", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Datenschutz", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Schutz vor Schadsoftware, Sicherheit", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Soziale Widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie-Hinweise", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Belästigungen", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Verschiedene Zwecke", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regionen, Sprachen", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Eigene Filterlisten", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importieren …", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Eine URL pro Zeile. Ungültige URLs werden stillschweigend ignoriert.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "veraltet", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "Inhalt anzeigen", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Zuletzt aktualisiert: {{ago}}.\nAktualisierung durch Anklicken durchführen.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Wird aktualisiert …", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Ein Netzwerkfehler verhinderte die Aktualisierung der Ressource.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Verwenden Sie keine Filter aus unseriösen Quellen.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Eigene Filter aktivieren", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Eigene Filter zulassen, die Vertrauen erfordern", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importieren und ergänzen …", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exportieren …", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-statische-filter_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Änderungen übernehmen", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Dauerhafte Regeln", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Temporäre Regeln", + "description": "header" + }, + "rulesRevert": { + "message": "Rückgängig machen", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Dauerhaft speichern", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Bearbeiten", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Speichern", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Verwerfen", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Aus Datei importieren …", + "description": "" + }, + "rulesExport": { + "message": "In Datei exportieren …", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ublock-dynamische-regeln_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Liste eigener dynamischer Filterregeln.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Regelsyntax: Quelle Ziel Typ Aktion (Ausführliche Dokumentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sortieren:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Regeltyp", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Quelle", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Ziel", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Ausnahmeregeln bestimmen, auf welchen Webseiten uBlock Origin deaktiviert werden soll. Ein Eintrag pro Zeile.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importieren und ergänzen …", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exportieren …", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ublock-ausnahmeregeln_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Änderungen übernehmen", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Typ", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domain", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Alle", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Hintergrund-Netzwerkanfragen", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Aktueller Tab", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Inhalt des Tabs neu laden", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM-Inspektor ein-/ausschalten", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Pop-up-Fenster ein-/ausblenden", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin-Wiki: Protokoll der Netzwerkanfragen", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Protokoll leeren", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Protokollierung anhalten (alle eingehenden Daten verwerfen)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Protokollierung fortsetzen", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Protokollfilter ein-/ausschalten", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "Protokolleinträge filtern", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Protokollfilteroptionen", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Nicht", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "Ereignisreich", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blockiert", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "zugelassen", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "geändert", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Aktuelle Domain", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Ressourcen aus Drittquellen", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Details", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filterliste", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regel", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontext", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Wurzelkontext", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Zugehörigkeit", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Typ", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL-Regel", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontext:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Typ:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statischer Filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "Netzwerkanfragen {{type}} {{action}},{{br}}deren URL-Adresse mit {{url}} übereinstimmt{{br}}und von {{origin}} stammen,{{br}}{{importance}} ein übereinstimmender Ausnahmefilter existiert.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "blockieren", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "zulassen", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "vom Typ »{{type}}«", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "aller Typen", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "{{origin}}", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "überall", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "außer wenn", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "selbst wenn", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statischer Filter {{filter}} gefunden in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statischer Filter konnte in keiner der derzeit aktivierten Filterlisten gefunden werden", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Protokolleinträge werden automatisch verworfen, wenn sie nicht alle der drei folgenden Bedingungen erfüllen:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Einträge der letzten {{input}} Minuten beibehalten", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Höchstens {{input}} Seitenladevorgänge pro Tab beibehalten", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Höchstens {{input}} Einträge pro Tab beibehalten", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "{{input}} Zeilen pro Eintrag im vertikal erweiterten Modus verwenden", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Spalten ausblenden:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Uhrzeit", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/Regel", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Kontext", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Zugehörigkeit", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Liste", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabelle", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Reiner Text", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Öffnen", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Neue Meldung auf GitHub erstellen", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Ähnliche Meldungen auf GitHub finden", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentation", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Lesen Sie die Dokumentation auf uBlock/wiki, um mehr über alle Funktionen von uBlock Origin zu erfahren.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Fragen und Unterstützung", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Antworten auf Fragen und andere Arten der Hilfe werden im Subreddit /r/uBlockOrigin gegeben.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filterprobleme / Website funktioniert nicht", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Bitte melden Sie Filterprobleme mit bestimmten Websites an den uBlockOrigin/uAssets Issue Tracker. Erfordert ein GitHub-Konto.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Wichtig: Vermeiden Sie es, andere ähnliche Blocker zusammen mit uBlock Origin zu verwenden, da dies bei einigen Websites zu Filterproblemen führen kann.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tipp: Vergewissern Sie sich, dass die Filterlisten auf dem aktuellen Stand sind. Protokoll der Netzwerkanfragen ist das primäre Werkzeug, um filterbezogene Fehler zu diagnostizieren.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Fehlerbericht", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Bitte melden Sie Probleme mit uBlock Origin an den uBlockOrigin/uBlock-issue Issue Tracker. Erfordert ein GitHub-Konto.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informationen zur Fehlerbehebung", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Im Folgenden sind einige technische Informationen aufgeführt, die nützlich sein können, wenn Freiwillige versuchen, bei der Lösung eines Problems zu helfen.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Ein Filterproblem melden", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Um die Freiwilligen nicht mit doppelten Meldungen zu überlasten, vergewissern Sie sich bitte, dass das Problem noch nicht gemeldet wurde. Hinweis: Das Anklicken der Schaltfläche übermittelt die Internetadresse an GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filterlisten werden täglich aktualisiert. Bitte vergewissern Sie sich, dass Ihr Problem nicht durch aktuelle Filterlisten behoben wurde.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Bitte überprüfen Sie, ob das Problem nach dem Neuladen der Webseite weiterhin besteht.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adresse der Webseite:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Die Webseite …", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Einen Eintrag auswählen --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Zeigt Werbung oder deren Überreste", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Enthält überdeckende oder belästigende Elemente", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Erkennt uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Weist Datenschutzprobleme auf", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Funktioniert nicht richtig, wenn uBlock Origin aktiviert ist", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Öffnet unerwünschte Tabs oder Fenster", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Führt zu Schadsoftware, Phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Webseite als »NSFW« kennzeichnen (»Unpassend für den Arbeitsplatz«)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Datenschutzhinweise", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Änderungsprotokoll", + "description": "" + }, + "aboutCode": { + "message": "Quellcode (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Mitwirkende", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Quellcode", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Übersetzungen", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filterlisten", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Externe Abhängigkeiten (GPLv3-kompatibel):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Die uBO-eigenen Filterlisten werden auf den folgenden CDNs frei zur Verfügung gestellt:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Es wird ein zufällig ausgewähltes CDN verwendet, wenn eine Filterliste aktualisiert werden muss.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "In Datei sichern …", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Aus Datei wiederherstellen …", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Auf Werkseinstellungen zurücksetzen …", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Alle Einstellungen werden überschrieben und auf den Stand vom {{time}} gebracht. Anschließend wird uBlock₀ neu gestartet.\n\nSollen die aktuellen Einstellungen durch das Backup ersetzt werden?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Die Daten konnten nicht gelesen werden oder sind ungültig", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Alle Einstellungen werden gelöscht und uBlock₀ wird neu gestartet.\n\nSoll uBlock₀ auf Werkseinstellungen zurückgesetzt werden?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Netzwerkfehler: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Abonnieren", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "vor einer Minute", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "vor {{value}} Minuten", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "vor einer Stunde", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "vor {{value}} Stunden", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "vor einem Tag", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "vor {{value}} Tagen", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Dashboard anzeigen", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Protokoll der Netzwerkanfragen anzeigen", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "aus", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Seite blockiert", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin hat das Laden der folgenden Seite verhindert:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Aufgrund des folgenden Filters:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "ohne Parameter", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Gefunden in:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Zurück", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Dieses Fenster schließen", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Nicht erneut vor dieser Seite warnen", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Striktes Blockieren für {{hostname}} deaktivieren", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporär", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Dauerhaft", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Fortfahren", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Die blockierte Seite möchte zu einer anderen Website weiterleiten. Beim Fortfahren wird folgende Seite aufgerufen: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Grund:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Schädlich", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Unseriös", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "In den Cloud-Speicher exportieren", + "description": "tooltip" + }, + "cloudPull": { + "message": "Aus dem Cloud-Speicher importieren", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Aus dem Cloud-Speicher importieren und mit den aktuellen Einstellungen zusammenführen", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Name dieses Gerätes:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Warnung! Das Ändern der erweiterten Einstellungen erfolgt auf eigenes Risiko.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Absenden", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Änderungen übernehmen", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Rückgängig machen", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "Bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Element im Frame blockieren …", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Filterliste abonnieren …", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Große Medienelemente temporär zulassen", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Quellcode anzeigen …", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Tastenkombination drücken", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Synchrones Scrollen ein-/ausschalten", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "In die Zwischenablage kopieren", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Alles auswählen", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Kosmetisches Filtern ein-/ausschalten", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript aktivieren/deaktivieren", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Blockiermodus lockern", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Belegter Speicherplatz: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Zum Laden anklicken", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Fehler: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Beim Start des Browsers konnte nicht richtig gefiltert werden. Bitte die Seite neu laden, um ein korrektes Filtern zu gewährleisten.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Dieser Eintrag muss der letzte sein", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/el/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/el/messages.json new file mode 100644 index 00000000..e011a600 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/el/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Επιτέλους, ένας αποτελεσματικός blocker. Ελαφρύς για τον επεξεργαστή και τη μνήμη.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Πίνακας ελέγχου", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Προειδοποίηση: έχετε μη αποθηκευμένες αλλαγές!", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Παραμονή", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Παράβλεψη", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Ρυθμίσεις", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Λίστες φίλτρων", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Τα φίλτρα μου", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Οι κανόνες μου", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Αξιόπιστες τοποθεσίες", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Συντομεύσεις", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ - Καταγραφή αιτημάτων δικτύου", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Σχετικά", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Υποστήριξη", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Προβολή πόρων", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Ρυθμίσεις για προχωρημένους", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Κλικ: απενεργοποίηση/ενεργοποίηση του uBlock₀ για αυτόν τον ιστότοπο.\n\nCtrl+κλικ: απενεργοποίηση του uBlock₀ μόνο σε αυτήν τη σελίδα.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Κάντε κλικ για απενεργοποίηση του uBlock₀ για αυτόν τον ιστότοπο.\n\nCtrl+κλικ για απενεργοποίηση του uBlock₀ μόνο σε αυτήν τη σελίδα.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Κάντε κλικ για ενεργοποίηση του uBlock₀ για αυτόν τον ιστότοπο.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "αποκλεισμένα αιτήματα", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "σε αυτήν τη σελίδα", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ή {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "από την εγκατάσταση", + "description": "English: since install" + }, + "popupOr": { + "message": "ή", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Αποκλεισμένα σε αυτήν τη σελίδα", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Αποκλεισμένο από εγκατάσταση", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Συνδεδεμένοι τομείς", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Ανοίξτε τον πίνακα ελέγχου", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Είσοδος σε λειτουργία αφαίρεσης στοιχείων", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Είσοδος στη λειτουργία επιλογής στοιχείων", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Πηγαίνετε στο αρχείο καταγραφής αιτημάτων", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Αναφέρετε ένα σφάλμα σε αυτόν τον ιστότοπο", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Παρεμπόδιση αναδυόμενων παραθύρων για αυτόν τον ιστότοπο", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Κάντε κλικ για φραγή όλων των αναδυόμενων σε αυτή την ιστοσελίδα", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Κάντε κλικ για φραγή όλων των αναδυόμενων σε αυτή την ιστοσελίδα", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Εναλλαγή της φραγής των μεγάλων στοιχείων πολυμέσων για αυτήν την τοποθεσία", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Κάντε κλικ για αποκλεισμό μεγάλων στοιχείων πολυμέσων σε αυτή την ιστοσελίδα", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Κάντε κλικ για αναίρεση φραγής των μεγάλων στοιχείων πολυμέσων σε αυτή την τοποθεσία", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Ενεργοποιήστε διακοσμητικό φιλτράρισμα για αυτήν τη σελίδα", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Κάντε κλικ για να απενεργοποιήσετε το καλλωπιστικό φιλτράρισμα σε αυτή την τοποθεσία", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Κάντε κλικ για να ενεργοποιήσετε το καλλωπιστικό φιλτράρισμα σε αυτή την τοποθεσία", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Ενεργοποιήστε το μπλοκάρισμα απομακρυσμένων γραμματοσειρών για αυτήν την ιστοσελίδα", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Κάντε κλικ για φραγή απομακρυσμένων γραμματοσειρών σε αυτή την ιστοσελίδα", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Κάντε κλικ για να μην μπλοκάρετε πλέον απομακρυσμένες γραμματοσειρές σε αυτήν την ιστοσελίδα", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Κάντε κλικ για να απενεργοποιήσετε το JavaScript σε αυτήν την ιστοσελίδα", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Κάντε κλικ για να μην απενεργοποιήσετε πλέον τη JavaScript σε αυτόν τον ιστότοπο", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Αναδυόμενα παράθυρα", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Στοιχεία μεγάλων πολυμέσων", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Κοσμητικά φίλτρα", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Απομακρυσμένες γραμματοσειρές", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Περισσότερα", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Λιγότερα", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Καθολικοί κανόνες: αυτή η στήλη είναι για κανόνες με εφαρμογή σε όλες τις τοποθεσίες.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Τοπικοί κανόνες: αυτή η στήλη είναι για κανόνες με εφαρμογή στην τρέχουσα τοποθεσία μόνο.\nΟι τοπικοί κανόνες παραμερίζουν τους καθολικούς κανόνες.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Κάντε κλικ για να μονιμοποιήσετε τις αλλαγές σας.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Πατήστε για να αντιστρέψετε τις αλλαγές σας.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "όλα", + "description": "" + }, + "popupImageRulePrompt": { + "message": "Εικόνες", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "πόροι ιστότοπων τρίτων", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/Εικόνες τρίτων", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline scripts", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "scripts τρέχοντος ιστότοπου", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "scripts ιστότοπων τρίτων", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "frames ιστότοπων τρίτων", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "συνδεδεμένοι τομείς", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} από {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Έκδοση", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "δέσμη ενεργειών", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "πλαίσιο", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Δημιουργία", + "description": "English: Create" + }, + "pickerPick": { + "message": "Επιλογή", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Κλείσιμο", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Προεπισκόπηση", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Φίλτρα δικτύου", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Κοσμητικά φίλτρα", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Κλικ, Ctrl-κλικ", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Φραγή στοιχείου...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Απόκρυψη κρατημένων πεδίων από αποκλεισμένα στοιχεία", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Εμφάνιση του αριθμού αποκλεισμένων αιτημάτων στο εικονίδιο", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Απενεργοποίηση υποδείξεων", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Να γίνεται χρήση του αναδυόμενου μενού, όπου ενδείκνυται", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Λειτουργία φιλική προς χρήστες με αχρωματοψία", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Εμφάνιση", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Θέμα", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Προσαρμοσμένο χρώμα έμφασης", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Ενεργοποίηση υποστήριξης cloud storage", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Είμαι προχωρημένος χρήστης (Aπαραίτητη ανάγνωση)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Απενεργοποίηση προ-φόρτωσης (για να αποτραπεί κάθε σύνδεση σε αποκλεισμένες αιτήσεις δικτύου)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Απενεργοποίηση ελέγχου/διόπτευσης υπερσυνδέσμων", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Αποτρέψτε το WebRTC από το να διαρρέει την τοπική διεύθυνση IP", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Προεπιλεγμένη συμπεριφορά", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Αυτές οι προεπιλεγμένες συμπεριφορές μπορούν να παρακαμφθούν ανά τοποθεσία", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Απενεργοποίηση διακοσμητικού φιλτραρίσματος", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Φραγή στοιχείων πολυμέσων μεγαλύτερων από {{input:number}} kB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Φραγή απομακρυσμένων γραμματοσειρών", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Απενεργοποίηση JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Φραγή αναφορών CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Ξεσκέπασμα/εμφάνιση κανονικών ονομάτων CNAME", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Για προχωρημένους", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Χαρακτηριστικά κατάλληλα μόνο για τεχνικούς χρήστες.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "ρυθμίσεις για προχωρημένους", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Τελευταία ανάκτηση:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Τελευταίο αντίγραφο ασφαλείας:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} φίλτρα δικτύου+ {{cosmeticFilterCount}} κοσμητικά φίλτρα από:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} σε χρήση από {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Αυτόματη ενημέρωση λιστών φίλτρων.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Ενημέρωση τώρα", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Εκκαθάριση προσωρινής μνήμης κάθε λίστας", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Ανάλυση και επιβολή κοσμητικών φίλτρων.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Τα καλλωπιστικά φίλτρα χρησιμεύουν για να κρύβουν εκείνα τα στοιχεία σε μια ιστοσελίδα που οπτικά θεωρούνται ενοχλητικά, και τα οποία δεν μπορούν να αποκλειστούν με τις μηχανές φιλτραρίσματος που βασίζονται σε αιτήματα δικτύου.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Παράβλεψη γενικών κοσμητικών φίλτρων", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

Τα γενικά κοσμητικά φίλτρα είναι εκείνα τα κοσμητικά φίλτρα που εφαρμόζονται σε όλες τις ιστοσελίδες.

Αν και γίνεται αποτελεσματική διαχείρισή τους από το uBlock₀, τα γενικά κοσμητικά φίλτρα ενδέχεται να καταναλώσουν σημαντική μνήμη και να υπερφορτώσουν τη CPU σε μερικές ιστοσελίδες, ειδικά για μεγάλες μακροχρόνιες.

Η ενεργοποίηση αυτής της επιλογής θα εξαλείψει την υπερφόρτωση μνήμης και CPU στις ιστοσελίδες ως αποτέλεσμα της διαχείρισης γενικών κοσμητικών φίλτρων, ενώ ενδέχεται να μειώσει την κατανάλωση μνήμης του ίδιου του uBlock₀.

Προτείνεται η ενεργοποίηση αυτής της επιλογής στις λιγότερο ισχυρές συσκευές.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Αναστολή της δραστηριότητας δικτύου μέχρι να φορτωθούν όλες οι λίστες φίλτρων", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Λίστες αποκλεισμένων hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Εφαρμογή αλλαγών", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Ενσωματωμένο", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Διαφημίσεις", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Ιδιωτικό απόρρητο", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Τομείς κακόβουλου λογισμικού", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Γραφικά στοιχεία κοινωνικής δικτύωσης", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Ειδοποιήσεις για cookies", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Ενοχλήσεις", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Πολλαπλών χρήσεων", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Περιοχές, γλώσσες", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Προσαρμοσμένη", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Εισαγωγή...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Ένα URL ανά γραμμή. Γραμμές με το πρόθεμα ‘!’ θα παραβλέπονται. Άκυρα URL θα παρακάμπτονται σιωπηλά.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "απαρχαιωμένη.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "εμφάνιση περιεχομένου", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Τελευταία ενημέρωση: {{ago}}.\nΚάντε κλικ για επιβολή ενημέρωσης.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Ενημέρωση...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Ένα σφάλμα δικτύου εμπόδισε την ενημέρωση του πόρου.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Να μην προστίθενται φίλτρα από μη αξιόπιστες πηγές.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Ενεργοποίηση των προσαρμοσμένων φίλτρων μου", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Επιτρέψτε προσαρμοσμένα φίλτρα που απαιτούν εμπιστοσύνη", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Εισαγωγή και προσάρτηση", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Εξαγωγή", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "τα-στατικά-ublock-φίλτρα-μου_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Εφαρμογή αλλαγών", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Μόνιμοι κανόνες", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Προσωρινοί κανόνες", + "description": "header" + }, + "rulesRevert": { + "message": "Επαναφορά", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Επικύρωση", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Επεξεργασία", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Αποθήκευση", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Απόρριψη", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Εισαγωγή από αρχείο…", + "description": "" + }, + "rulesExport": { + "message": "Εξαγωγή σε αρχείο…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "οι-δυναμικοί-ublock-κανόνες-μου_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Λίστα δυναμικών κανόνων φιλτραρίσματος.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Συντακτικό κανόνων: προέλευση προορισμός τύπος ενέργεια (πλήρης τεκμηρίωση).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Ταξινόμηση:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Τύπος κανόνα", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Προέλευση", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Προορισμός", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Η λίστα σας με τα ονόματα κόμβων (host names) στα οποία το uBlock θα είναι απενεργοποιημένο. Μια καταχώρηση ανά γραμμή. Άκυρα ονόματα κόμβων θα παρακάμπτονται σιωπηλά.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Εισαγωγή και προσθήκη…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Εξαγωγή…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ublock-έμπιστες-τοποθεσίες_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Εφαρμογή αλλαγών", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Τύπος", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Τομέας", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Φίλτρο", + "description": "English: Filter" + }, + "logAll": { + "message": "Όλα", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Παρασκήνιο", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Τρέχουσα καρτέλα", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Επαναφόρτωση του περιεχόμενου της καρτέλας", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Εναλλαγή του επιθεωρητή DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Εναλλαγή του αναδυόμενου πίνακα", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Ο καταγραφέας", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Καθαρισμός καταγραφέα", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Παύση καταγραφέα (απόρριψη όλων των εισερχόμενων δεδομένων)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Κατάργηση παύσης καταγραφέα", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Εναλλαγή φίλτρου καταγραφέα", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "φιλτράρισμα των καταχωρήσεων", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Ρυθμίσης φιλτραρίσματος καταγραφέα", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Δεν", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "μπλοκαρισμένο", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "επιτρέπεται", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "επεξεργασμένο", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Πρωτομερής", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Τριτομερής", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Λεπτομέρειες", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Φίλτρο", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Λίστα φίλτρων", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Κανόνας", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Συμφραζόμενα", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Πλαίσιο ρίζας", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Μέρος αιτήματος", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Τύπος", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Κανόνας διεύθυνσης URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Περιεχόμενο:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Τύπος:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Στατικό φιλτράρισμα", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} τα δικτυακά αιτήματα {{type}} {{br}} των οποίων η διεύθυνση ταιριάζει με {{url}} {{br}} και προέρχεται από {{origin}},{{br}}{{importance}} υπάρχει ένα ταιριαστό φίλτρο για εξαίρεση.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Φραγή", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Αποδοχή", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "τύπος “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "οποιοσδήποτε τύπος", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "από “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "από οπουδήποτε", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "εκτός όταν", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "ακόμη και αν", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Στατικό φίλτρο {{filter}} βρέθηκε σε:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Το στατικό φίλτρο δεν βρέθηκε σε καμία από τις λίστες φίλτρων που έχουν ενεργοποιηθεί αυτήν τη στιγμή", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Οι καταχωρίσεις στον καταγραφέα που δεν εκπληρούν και τις τρεις συνθήκες θα απορρίπτονται αυτόματα:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Διατηρήσε καταχωρήσεις από τα {{input}} τελευταία λεπτά", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Διατηρήσε το πολύ {{input}} page loads ανά καρτέλα", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Διατηρήσε το πολύ {{input}} καταχωρήσεις ανά καρτέλα", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Χρησιμοποιήστε {{input}} γραμμές ανά καταχώριση σε κατακόρυφη λειτουργία", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Απόκρυψη στηλών:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Ώρα", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Φίλτρο/κανόνας", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Περιεχόμενο", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} μέρος αιτήματος", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Λίστα", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Πίνακας", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Απλό", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Άνοιγμα", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Δημιουργία νέας αναφοράς στο Github", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Εύρεση παρόμοιων αναφορών στο GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Οδηγίες", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Διαβάστε τις οδηγίες στο uBlock/wiki για να μάθετε για όλες τις δυνατότητες του uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Ερωτήσεις και υποστήριξη", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Απαντήσεις σε ερωτήσεις και άλλα είδη υποστήριξης βοήθειας παρέχονται στο subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Προβλήματα φίλτρου/ιστότοπος είναι κατεστραμμένος", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Αναφέρετε προβλήματα φίλτρου με συγκεκριμένους ιστότοπους στο uBlockOrigin/uAssets issue tracker. Απαιτείται λογαριασμός GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Σημαντικό: Αποφύγετε τη χρήση άλλων blocker με παρόμοιο σκοπό μαζί με το uBlock Origin, καθώς αυτό μπορεί να προκαλέσει προβλήματα φιλτραρίσματος σε συγκεκριμένους ιστότοπους.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Συμβουλές: Βεβαιωθείτε ότι οι λίστες φίλτρων σας είναι ενημερωμένες. Ο καταγραφέας είναι το κύριο εργαλείο για τη διάγνωση προβλημάτων που σχετίζονται με το φίλτρο.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Αναφορά σφάλματος", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Αναφέρετε προβλήματα με το ίδιο το uBlock Origin στο uBlockOrigin/uBlock-issue issue tracker. Απαιτείται λογαριασμός GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Πληροφορίες για αντιμετώπιση προβλημάτων", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Παρακάτω υπάρχουν τεχνικές πληροφορίες που μπορεί να είναι χρήσιμες όταν εθελοντές προσπαθούν να σας βοηθήσουν να λύσετε ένα πρόβλημα.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Αναφέρετε πρόβλημα φίλτρου", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Για να αποφύγετε την επιβάρυνση των εθελοντών με διπλές αναφορές, βεβαιωθείτε ότι το ζήτημα δεν έχει ήδη αναφερθεί.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Οι λίστες φίλτρων ενημερώνονται καθημερινά. Βεβαιωθείτε ότι το πρόβλημά σας δεν έχει ήδη αντιμετωπιστεί στις πιο πρόσφατες λίστες φίλτρων.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Βεβαιωθείτε ότι το πρόβλημα εξακολουθεί να υπάρχει μετά τη φόρτωση εκ νέου της προβληματικής ιστοσελίδας.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Διεύθυνση της ιστοσελίδας:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Η ιστοσελίδα…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Επιλέξτε μια καταχώρηση --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Εμφανίζει διαφημίσεις ή υπολείμματα διαφημίσεων", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Έχει επικαλύψεις ή άλλες ενοχλήσεις", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Ανιχνεύει το uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Έχει ζητήματα που σχετίζονται με το απόρρητο", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Μη λειτουργικό όταν το uBlock Origin είναι ενεργοποιημένο", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Ανοίγει ανεπιθύμητες καρτέλες ή παράθυρα", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Οδηγεί σε κακόβουλο λογισμικό, ηλεκτρονικό «ψάρεμα»", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Επισημάνετε την ιστοσελίδα ως “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Πολιτική απορρήτου", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Αρχείο αλλαγών", + "description": "" + }, + "aboutCode": { + "message": "Πηγαίος κώδικας (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Συνεισφέροντες", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Πηγαίος κώδικας", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Μεταφράσεις", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Λίστες φίλτρων", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Εξωτερικές εξαρτήσεις (συμβατές με GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Οι λίστες φίλτρων του uBO φιλοξενούνται ελεύθερα στα ακόλουθα CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Χρησιμοποιείται τυχαία-επιλεγμένο CDN όταν πρέπει να ενημερωθεί μια λίστα φίλτρων", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Δημιουργία αντιγράφου ασφαλείας σε αρχείο...", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "το-ublock-αντίγραφο-ασφαλείας-μου_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Επαναφορά από αρχείο…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Επαναφορά στις προεπιλεγμένες ρυθμίσεις…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Όλες οι ρυθμίσεις σας θα αντικατασταθούν χρησιμοποιώντας τα δεδομένα του αντιγράφου ασφαλείας που δημιουργήθηκε κατά ημ/νία και ώρα: {{time}} και θα ακολουθήσει επανεκκίνηση του uBlock.", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Τα δεδομένα ήταν αδύνατο να αναγνωστούν ή είναι άκυρα", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Όλες οι ρυθμίσεις σας θα καταργηθούν και θα γίνει επανεκκίνηση του uBlock₀.\n\nΕπαναφορά του uBlock₀ στις αρχικές ρυθμίσεις;", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Σφάλμα δικτύου: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Εγγραφή", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "πριν από ένα λεπτό", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "πριν από {{value}} λεπτά", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "πριν από μια ώρα", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "πριν από {{value}} ώρες", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "πριν από μια ημέρα", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "πριν από {{value}} ημέρες", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Προβολή Πίνακα Εργαλείων", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Προβολή Αρχείου Καταγραφών Αιτημάτων Δικτύου", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "απενεργοποιημένο", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Η σελίδα αποκλείστηκε", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "Το uBlock₀ έχει αποτρέψει τη φόρτωση της παρακάτω σελίδας:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Εξαιτίας του ακόλουθου φίλτρου", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "χωρίς παραμέτρους", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Βρέθηκε σε:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Επιστροφή", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Κλείσιμο του παραθύρου", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Να μην προειδοποιηθώ ξανά για αυτόν τον ιστότοπο", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Απενεργοποίηση αυστηρής φραγής για το {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Προσωρινά", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Μόνιμα", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Συνέχεια", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Η αποκλεισμένη σελίδα θέλει να κάνει ανακατεύθυνση σε άλλο ιστότοπο. Αν επιλέξετε να συνεχίσετε, θα μεταβείτε απευθείας στο: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Αιτία:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Κακόβουλος ιστότοπος", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Ιχνηλάτης", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Κακόφημος ιστότοπος", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Εξαγωγή στο cloud storage", + "description": "tooltip" + }, + "cloudPull": { + "message": "Εισαγωγή από cloud storage", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Εισαγωγή αποθηκευμένων στο νέφος ρυθμίσεων και συγχώνευση στις τρέχουσες ρυθμίσεις", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Όνομα αυτής της συσκευής:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Προειδοποίηση! Αλλάξτε αυτές τις ρυθμίσεις για προχωρημένους με δική σας ευθύνη.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Υποβολή", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Εφαρμογή αλλαγών", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Επαναφορά", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Αποκλεισμός στοιχείου σε frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Εγγραφή σε λιστα φιλτρων", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Να επιτρέπονται προσωρινά μεγάλα στοιχεία πολυμέσων", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Προβολή πηγαίου κώδικα…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Πληκτρολογήστε μια συντόμευση", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Εναλλαγή κλειδώματος ολίσθησης", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Αντιγραφή στο πρόχειρο", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Επιλογή όλων", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Εναλλαγή διακοσμητικού φιλτραρίσματος", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Εναλλαγή JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Χαλάρωση κατάστασης φραγής", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Χώρος σε χρήση: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Κάντε κλικ για φόρτωση", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Σφάλματα: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Δεν ήταν δυνατό το σωστό φιλτράρισμα κατά την εκκίνηση του προγράμματος περιήγησης.\nΦορτώστε ξανά τη σελίδα για να διασφαλίσετε το σωστό φιλτράρισμα", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Αυτή η καταχώρηση θα πρέπει να είναι τελευταία", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/en/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/en/messages.json new file mode 100644 index 00000000..350b9288 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/en/messages.json @@ -0,0 +1,1315 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Finally, an efficient blocker. Easy on CPU and memory.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dashboard", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Warning: you have unsaved changes!", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Stay here", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignore", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Settings", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filter lists", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "My filters", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "My rules", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Trusted sites", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Shortcuts", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Logger", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "About", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Support", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Asset viewer", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Advanced settings", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Click to enable uBlock₀ for this site.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "requests blocked", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "on this page", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "since install", + "description": "English: since install" + }, + "popupOr": { + "message": "or", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blocked on this page", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blocked since install", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domains connected", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Open the dashboard", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Enter element zapper mode", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Enter element picker mode", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Open the logger", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Report an issue on this website", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Toggle the blocking of all popups for this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Click to block all popups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Click to no longer block all popups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Toggle the blocking of large media elements for this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Click to block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Click to no longer block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Toggle cosmetic filtering for this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Click to disable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Click to enable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Toggle the blocking of remote fonts for this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Click to block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Click to no longer block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Click to disable JavaScript on this site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Click to no longer disable JavaScript on this site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Pop-up windows", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Large media elements", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Cosmetic filtering", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Remote fonts", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "More", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Global rules: this column is for rules which apply to all sites.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Local rules: this column is for rules which apply to the current site only.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Click to make your changes permanent.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Click to revert your changes.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "all", + "description": "" + }, + "popupImageRulePrompt": { + "message": "images", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3rd-party", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "3rd-party CSS/images", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline scripts", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1st-party scripts", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3rd-party scripts", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3rd-party frames", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domains connected", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} out of {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Create", + "description": "English: Create" + }, + "pickerPick": { + "message": "Pick", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Quit", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Preview", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Network filters", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Cosmetic filters", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Click, Ctrl-click", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Block element…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Hide placeholders of blocked elements", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Show the number of blocked requests on the icon", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Disable tooltips", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Make use of context menu where appropriate", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Color-blind friendly", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Appearance", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Theme", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Enable cloud storage support", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "I am an advanced user", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Disable pre-fetching (to prevent any connection for blocked network requests)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Disable hyperlink auditing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Prevent WebRTC from leaking local IP addresses", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Default behavior", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "These default behaviors can be overridden on a per-site basis", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Disable cosmetic filtering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Block media elements larger than {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Block remote fonts", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Disable JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Block CSP reports", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Advanced", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "advanced settings", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Last restore:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Last backup:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} used out of {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Auto-update filter lists", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Update now", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Purge all caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Parse and enforce cosmetic filters", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignore generic cosmetic filters", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Built-in", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Ads", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privacy", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Malware protection, security", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Annoyances", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multipurpose", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regions, languages", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Custom", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Import…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "One URL per line. Invalid URLs will be silently ignored.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Out of date.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "view content", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Last update: {{ago}}.\nClick to force an update.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Updating…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "A network error prevented the resource from being updated.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Import and append…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Export…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Permanent rules", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Temporary rules", + "description": "header" + }, + "rulesRevert": { + "message": "Revert", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Commit", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Edit", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Save", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Discard", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Import from file…", + "description": "" + }, + "rulesExport": { + "message": "Export to file…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "List of your dynamic filtering rules.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rule syntax: source destination type action (full documentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sort:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Rule type", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Source", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destination", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Import and append…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Export…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Type", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domain", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "All", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tabless", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Current tab", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Reload the tab content", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Toggle the DOM inspector", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Toggle the popup panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: The logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Clear logger", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pause logger (discard all incoming data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Unpause logger", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Toggle logger filtering", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filter logger content", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logger filtering options", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Not", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blocked", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "allowed", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modified", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1st-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3rd-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Details", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filter list", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Rule", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Context", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Root context", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Type", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL rule", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Context:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Type:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Static filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Block", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Allow", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "any type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "from “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "from anywhere", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "except when", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "even if", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Static filter {{filter}} found in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Static filter could not be found in any of the currently enabled filter lists", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Preserve entries from the last {{input}} minutes", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preserve at most {{input}} page loads per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preserve at most {{input}} entries per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Use {{input}} lines per entry in vertically expanded mode", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Hide columns:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Time", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/rule", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "List", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Table", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plain", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + + "supportOpenButton": { + "message": "Open", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Create new report on GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Find similar reports on GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentation", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Read the documentation at uBlock/wiki to learn about all of uBlock Origin's features.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Questions and support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Bug report", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Troubleshooting Information", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Privacy policy", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Changelog", + "description": "" + }, + "aboutCode": { + "message": "Source code (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Contributors", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Source code", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Translations", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filter lists", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "External dependencies (GPLv3-compatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's own filter lists are freely hosted on the following CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A randomly picked CDN is used when a filter list needs to be updated.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Back up to file…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restore from file…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Reset to default settings…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "The data could not be read or is invalid", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Network error: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subscribe", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "a minute ago", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minutes ago", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "an hour ago", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} hours ago", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "a day ago", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} days ago", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Show Dashboard", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Show Logger", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "off", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Page blocked", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin has prevented the following page from loading:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "This happened because of the following filter:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "without parameters", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "The filter has been found in:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Go back", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Close this window", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Disable strict blocking for {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporarily", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanently", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceed", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Export to cloud storage", + "description": "tooltip" + }, + "cloudPull": { + "message": "Import from cloud storage", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Import from cloud storage and merge with current settings", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "This device name:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Warning! Change these advanced settings at your own risk.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Submit", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Apply changes", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Revert", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Block element in frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribe to filter list…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Temporarily allow large media elements", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Type a shortcut", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Toggle locked scrolling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copy to clipboard", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Select all", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relax blocking mode", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Storage used: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Click to load", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/en_GB/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/en_GB/messages.json new file mode 100644 index 00000000..bbe976d6 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/en_GB/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Finally, an efficient blocker. Easy on CPU and memory.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dashboard", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Warning! You have unsaved changes", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Stay", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignore", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Settings", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filter lists", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "My filters", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "My rules", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Trusted sites", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Shortcuts", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Logger", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "About", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Support", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Asset viewer", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Advanced settings", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Click to enable uBlock₀ for this site.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "requests blocked", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "on this page", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "since install", + "description": "English: since install" + }, + "popupOr": { + "message": "or", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blocked on this page", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blocked since install", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domains connected", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Open the dashboard", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Enter element zapper mode", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Enter element picker mode", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Open the logger", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Report an issue on this website", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Toggle the blocking of all pop-ups for this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Click to block all pop-ups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Click to no longer block all pop-ups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Toggle the blocking of large media elements for this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Click to block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Click to no longer block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Toggle cosmetic filtering for this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Click to disable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Click to enable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Toggle the blocking of remote fonts for this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Click to block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Click to no longer block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Click to disable JavaScript on this site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Click to no longer disable JavaScript on this site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Pop-up windows", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Large media elements", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Cosmetic filtering", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Remote fonts", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "More", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Global rules: this column is for rules which apply to all sites.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Local rules: this column is for rules which apply to the current site only.\nLocal rules override global rules.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Click to make your changes permanent.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Click to revert your changes.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "all", + "description": "" + }, + "popupImageRulePrompt": { + "message": "images", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3rd-party", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "3rd-party CSS/images", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline scripts", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1st-party scripts", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3rd-party scripts", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3rd-party frames", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domains connected", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} out of {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Create", + "description": "English: Create" + }, + "pickerPick": { + "message": "Pick", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Quit", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Preview", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Network filters", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Cosmetic filters", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Click, Ctrl-click", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Block element…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Hide placeholders of blocked elements", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Show the number of blocked requests on the icon", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Disable tooltips", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Make use of context menu where appropriate", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Colour-blind friendly", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Appearance", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Theme", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent colour", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Enable cloud storage support", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "I am an advanced user", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Disable pre-fetching (to prevent any connection for blocked network requests)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Disable hyperlink auditing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Prevent WebRTC from leaking local IP addresses", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Default behaviour", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "These default behaviours can be overridden on a per-site basis", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Disable cosmetic filtering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Block media elements larger than {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Block remote fonts", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Disable JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Block CSP reports", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Advanced", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "advanced settings", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Last restore:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Last backup:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} used out of {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Auto-update filter lists", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Update now", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Purge all caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Parse and enforce cosmetic filters", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Cosmetic filters serve to hide elements in a webpage which are deemed to be a visual nuisance, and which cannot be blocked by the network request-based filtering engines.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignore generic cosmetic filters", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all websites. Enabling this option will eliminate the memory and CPU overhead added to webpages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Built-in", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Ads", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privacy", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Malware domains", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Annoyances", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multi-purpose", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regions, languages", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Custom", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Import…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "One URL per line. Invalid URLs will be silently ignored.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Out of date.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "view content", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Last update: {{ago}}.\nClick to force an update.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Updating…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "A network error prevented the resource from being updated.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Import and append", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Export", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Permanent rules", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Temporary rules", + "description": "header" + }, + "rulesRevert": { + "message": "Revert", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Commit", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Edit", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Save", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Discard", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Import from file…", + "description": "" + }, + "rulesExport": { + "message": "Export to file", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "List of your dynamic filtering rules.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rule syntax: source destination type action (full documentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sort:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Rule type", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Source", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destination", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "The trusted site directives dictate on which webpages uBlock Origin should be disabled. One entry per line.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Import and append", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Export", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Type", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domain", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "All", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tabless", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Current tab", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Reload the tab content", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Toggle the DOM inspector", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Toggle the pop-up panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: The logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Clear logger", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pause logger (discard all incoming data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Unpause logger", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Toggle logger filtering", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filter logger content", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logger filtering options", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Not", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blocked", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "allowed", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modified", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1st-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3rd-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Details", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filter list", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Rule", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Context", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Root context", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Type", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL rule", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Context:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Type:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Static filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Block", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Allow", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "any type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "from “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "from anywhere", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "except when", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "even if", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Static filter {{filter}} found in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Static filter could not be found in any of the currently enabled filter lists", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logger entries which do not fulfil all three conditions below will be automatically discarded:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Preserve entries from the last {{input}} minutes", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preserve at most {{input}} page loads per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preserve at most {{input}} entries per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Use {{input}} lines per entry in vertically expanded mode", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Hide columns:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Time", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/rule", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "List", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Table", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plain", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Open", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Create new report on GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Find similar reports on GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentation", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Read the documentation at uBlock/wiki to learn about all of uBlock Origin's features.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Questions and support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Bug report", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Troubleshooting Information", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic webpage.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the webpage:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The webpage…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the webpage as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Privacy policy", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Changelog", + "description": "" + }, + "aboutCode": { + "message": "Source code (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Contributors", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Source code", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Translations", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filter lists", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "External dependencies (GPLv3-compatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's own filter lists are freely hosted on the following CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A randomly picked CDN is used when a filter list needs to be updated.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Back up to file", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restore from file…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Reset to default settings…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "The data could not be read or is invalid", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Network error: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subscribe", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "a minute ago", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minutes ago", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "an hour ago", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} hours ago", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "a day ago", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} days ago", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Show Dashboard", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Show Logger", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "off", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Page blocked", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin has prevented the following page from loading:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "This happened because of the following filter:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "without parameters", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Found in:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Go back", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Close this window", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Disable strict blocking for {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporarily", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanently", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceed", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Export to cloud storage", + "description": "tooltip" + }, + "cloudPull": { + "message": "Import from cloud storage", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Import from cloud storage and merge with current settings", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "This device name:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Warning! Change these advanced settings at your own risk.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Submit", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Apply changes", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Revert", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Block element in frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribe to filter list…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Temporarily allow large media elements", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Type a shortcut", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Toggle locked scrolling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copy to clipboard", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Select all", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relax blocking mode", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Storage used: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Click to load", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/eo/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/eo/messages.json new file mode 100644 index 00000000..149a38fc --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/eo/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Finfine rendimenta reklamoblokilo. Afabla por ĉefprocesoro kaj memoro.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Panelo", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Averto! Vi havas nekonservitajn ŝanĝojn", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Resti", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignori", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Agordoj", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Listoj de filtriloj", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Miaj filtriloj", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Miaj reguloj", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Permeslisto", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Alirklavoj", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Protokolilo", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Pri", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Subteno", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Montrilo de rimedoj", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Altgradaj agordoj", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klako: malŝalti/ŝalti uBlock₀ por ĉi tiu retejo.\n\nStir+klako: malŝalti uBlock₀ nur en ĉi tiu paĝo.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Alklaku premante la stirklavo por malŝalti uBlock₀ nur en tiu ĉi retejo.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Alklaku por aktivigi uBlock₀ en tiu ĉi retejo.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "blokitaj petoj", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "en ĉi tiu paĝo", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} aŭ {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "ekde instalado", + "description": "English: since install" + }, + "popupOr": { + "message": "aŭ", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokita ĉe ĉi tiu paĝo", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blokita ekde instalo", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Konektitaj domajnoj", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Klaku por malfermi la panelon", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Eniri la reĝimon de forigo de elementoj", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Malfermi reĝimon de elementoselektilo", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Malfermi la protokolilon", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Raporti problemon ĉe ĉi tiu retejo", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Baskuligi la blokadon de ŝprucfenestroj por ĉi tiu retejo", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Alklaku por bloki ĉiujn ŝprucfenestrojn en tiu ĉi retejo", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Alklaku por ne plu bloki ĉiujn ŝprucfenestrojn en tiu ĉi retejo", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Baskuligi la blokadon de grandaj aŭdvidaj elementoj en tiu ĉi retejo", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Alklaku por bloki grandajn aŭdvidajn elementojn en tiu ĉi retejo", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Alklaku por ne plu bloki grandajn aŭdvidajn elementojn en tiu ĉi retejo", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Baskuligi ornaman filtradon por ĉi tiu retejo", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Alklaku por malaktivigi kosmetikan filtradon en tiu ĉi retejo", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Alklaku por aktivigi kosmetikan filtradon en tiu ĉi retejo", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Baskuligi la blokadon de foraj tiparoj por ĉi tiu retejo", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Alklaku por bloki forajn tiparojn en tiu ĉi retejo", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Alklaku por ne plu bloki forajn tiparojn en tiu ĉi retejo", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Alklaku por malaktivigi JavaScript en tiu ĉi retejo", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Alklaku por ne plu malaktivigi JavaScript en tiu ĉi retejo", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Ŝprucfenestroj", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Grandaj aŭdvidaj elementoj", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Ornama filtrado", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Foraj tiparoj", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Pli", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Malpli", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Ĝeneralaj reguloj: ĉi tiu kolumno estas por reguloj, kiuj aplikas al ĉiuj retejoj.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokaj reguloj: ĉi tiu kolumno estas por reguloj, kiuj aplikas nur al la nuna retejo.\nLokaj reguloj transpasas ĝeneralajn regulojn.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Klaku por fari viajn ŝanĝojn konstante.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klaku por malfari viajn ŝanĝojn.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "ĉio", + "description": "" + }, + "popupImageRulePrompt": { + "message": "bildoj", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "De eksteraj liverantoj", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/bildoj de eksteraj liverantoj", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "entekstaj skriptoj", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Skriptoj de propraj liverantoj", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Skriptoj de eksteraj liverantoj", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Kadroj de eksteraj liverantoj", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "konektitaj domajnoj", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} de {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versio", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skripto", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "kadro", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Krei", + "description": "English: Create" + }, + "pickerPick": { + "message": "Elekti", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Forlasi", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Antaŭrigardo", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Retaj filtriloj", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Ornamaj filtriloj", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klako, Stir-klako", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Bloki elementon", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Kaŝi lokokupilojn de blokitaj elementoj", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Montri la nombron de la blokitaj petoj sur la bildsimbolo", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Malŝalti butonajn informojn", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Uzi kuntekstan menuon laŭeble", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Afabla por kolorblinduloj", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Aspekto", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Etoso", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Propra akcenta koloro", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Ŝalti subtenon por nelokdependa konservado", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Mi estas sperta uzanto", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Malŝalti antaŭvenigadon (por preventi ajnan konekton de blokitaj retaj petoj)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Malŝalti ekzamenadon de ligiloj", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Preventi likado de WebRTC de lokaj IP-adresoj", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Norma konduto", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Oni povas superregi la normajn kondutojn depende de la retejo", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Malŝalti ornaman filtradon", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Bloki aŭdvideajn elementojn pli granda ol {{input:number}} kB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Bloki forajn tiparojn", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Malŝalti JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Bloki CSP-raportojn", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Malkaŝi ĉefnomojn", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Altnivelaj agordoj", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funkcioj taŭgaj nur por spertuloj", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "altgradaj agordoj", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Lasta restaŭro:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Lasta savkopio:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} retaj filtriloj kaj {{cosmeticFilterCount}} ornamaj filtriloj de:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} estas uzita de {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Ĝisdatigi listojn de filtriloj aŭtomate", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Ĝisdatigi nun", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Malplenigi ĉiujn kaŝmemorojn", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analizi kaj eltrudi ornamajn filtrilojn", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

Ĉi tiu opcio ŝaltas la analizadon kaj eltrudadon de la Adblock Plus-kongruaj “elementokaŝadaj” filtriloj. Ĉi tiuj filtriloj estas nur ornama kaj servas por kaŝi elementojn en retpaĝoj kiuj estas opiniite vidaj ĝenaĵoj kaj ne blokeblaj de la reta peta filtrado.

Ŝalti ĉi tiun trajton pligrandigas la memoruzadon de uBlock₀.

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignori ĝeneralajn ornamajn filtrilojn", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Ĝenerikaj kozmetikaj filtriloj estas tiuj kozmetikaj filtriloj, kiuj estas intencitaj esti aplikitaj sur ĉiuj retejoj. Aktivigante tiun opcion, oni eliminigos la memoran kaj procesorecan ŝarĝon, kiu estas aldonita al retpaĝoj pro la pritraktado de ĝenerikaj kozmetikaj filtriloj.\n\nEstas rekomendite aktivigi tiun opcion sur aparatoj ne estas potencaj.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspendu retan aktivecon ĝis ĉiuj filtraj listoj estas ŝargitaj.", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Apliki ŝanĝojn", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Interna", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklamoj", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privateco", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Protekto kontraŭ fiprogramaro, sekureco", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Socialaj fenestraĵoj", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Avizoj de kuketoj", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Ĝenoj", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Plurcela", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regionoj, lingvoj", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Tajlorita", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importi…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Unu regulo por ĉiu linio. Prefiksitaj linioj kun ‘!’ estos ignorataj. Nevalidaj ligiloj estos ignorataj silente.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Malaktuala.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "vidi enhavon", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Lasta ĝisdatigo: {{ago}}.\nKlaku por ĝisdatigi nun.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Ĝisdatigo…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Reta eraro malhelpis ĝisdatigon de la resurso.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Ne aldonu filtrilojn el ne fidindaj fontoj.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Ŝalti miajn proprajn filtrilojn", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Permesi proprajn filtrilojn, kiuj postulas fidon", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importi kaj postaldoni", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Eksporti", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "miaj-statikaj-ublock-filtriloj_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Apliki ŝanĝojn", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Daŭraj reguloj", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Nedaŭraj reguloj", + "description": "header" + }, + "rulesRevert": { + "message": "Malfari", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Apliki", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Redakti", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Konservi", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Nuligi", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importi el dosiero…", + "description": "" + }, + "rulesExport": { + "message": "Eksporti al dosiero…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "miaj-dinamikaj-ublock-reguloj_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Listo de viaj dinamikaj filtradaj reguloj.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Sintakso de reguloj: fonto celo tipo ago (kompleta dokumentado).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Ordigi:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Speco de regulo", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Fonto", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Celo", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Via listo de gastignomoj por kiuj uBlock₀ estos malŝaltata. Unu gastignomo por ĉiu linio. Nevalidaj gastignomoj estos ignorataj silente.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importi kaj postaldoni", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Eksporti", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "mia-ublock-blanklisto_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Apliki ŝanĝojn", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tipo", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domajno", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "Ligilo", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtrilo", + "description": "English: Filter" + }, + "logAll": { + "message": "Ĉio", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Fonaj petoj", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Nuna langeto", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Reŝargi la langetan enhavon", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Baskuligi la DOM-inspektilon", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Baskuligi la ŝprucpanelon", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "Dokumentaro de uBlock Origin: la protokolilo", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Klariĝi protokolilon", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Paŭzigi protokolilon (forĵeti ĉiujn envenantajn datenojn)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Malpaŭzigi protokolilon", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Baskuligi filtradon de protokolilo", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtri protokolerojn", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opcioj pri filtrado de protokolilo", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Ne", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokita", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "permesata", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modifita", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "rekta", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "nerekta", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detaloj", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtrilo", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Listo de filtriloj", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regulo", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kunteksto", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Ĉefa kunteksto", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Nivelo de rekteco", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tipo", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "Retadreso", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Dinamika filtrado de ligiloj", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kunteksto:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tipo:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statika filtrado", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} retaj petoj de {{type}} {{br}}kiu ligilo estas la sama kiel {{url}} {{br}}kaj kiu devenas el {{origin}},{{br}}{{importance}} estas kongrua escepta filtrilo.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Bloki", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Permesi", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "tipo “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "ajna tipo", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "de “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "de ie ajn", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "krom se", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "eĉ se", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statika filtrilo {{filter}} estas trovita en:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Stata filtro ne povis esti trovita en iu ajn el la nuntempe aktivigitaj filtro-listoj.", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logeto-enskriboj, kiuj ne plenumas ĉiujn tri kondiĉojn sube, estos aŭtomate forĵetitaj:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Konservi enigojn ekde la lastaj {{input}} minutoj", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Teni maksimume {{input}} paĝo-ŝargojn en ĉiu langeto", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Teni maksimume {{input}} elementojn en ĉiu langeto", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Uzi {{input}} liniojn en elemento en vertikale vasta reĝimo", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Kaŝi kolumnojn:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} tempo", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} filtrilo/regulo", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} kunteksto", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} rekteco", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Listo", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabulo", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Simpla", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Malfermi", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Krei novan raporton", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Serĉi similajn raportojn", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentaro", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Legu la dokumentaron ĉe uBlock/wiki por lerni ĉiujn funkciojn de uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Demandoj kaj subtenado", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Respondojn al demandoj kaj alian helpon provizas la subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problemoj pri filtrilo / la retejo misfunkcias", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Raportu problemojn pri specifaj retejoj ĉe la cimspurilo uBlockOrigin/uAssets. Tio postulas konton ĉe GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Atentu: eviti la uzadon de aliaj, similaj reklamoblokiloj kun uBlock Origin, ĉar tio eblas kaŭzi filtradajn problemojn en apartaj retejoj.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Konsiletoj: konfirmu vian filtradajn listojn estas aktuala. La protokolilo estas la ĉefa ilo por analizi problemojn kiuj rilatas al filtrado.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Raporto pri cimo", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Raportu problemojn pri uBlock Origin mem ĉe la cimspurilo uBlockOrigin/uBlock-issue. Tio postulas konton ĉe GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informoj pri problemsolvado", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Jen teknikaj informoj eble utilaj al tiuj volontuloj, kiuj helpas vin solvi problemon.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Raporti problemon pri filtrado", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Por eviti ŝarĝi volontulojn per duplikataj raportoj, bonvolu konfirmi ke la problemo ankoraŭ ne raportitas. Noto: klaki la butonon kaŭzas ke la HTTP-origino de la paĝo senditas al GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filtradoj listoj ĝisdatiĝas tage. Konfirmu ke via problemo ankoraŭ ne riparitas per la plej novaj filtradaj listoj.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Konfirmu ke la problemo ankoraŭ ekzistas reŝarginte la probleman retpaĝon.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adreso de la retpaĝo:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "La retpaĝo…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Elektu ion --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Montras reklamojn aŭ restaĵojn de reklamoj", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Havas plustavolojn aŭ aliajn ĝenaĵojn", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detektas uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Havas problemojn pri privateco", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Misfunkcias, se uBlock Origin estas ŝaltita", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Malfermas nedeziratajn langetojn aŭ fenestrojn", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Sekvas malbon-programoj, trompo-retejoj", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Marki la paĝon kiel «nelabortaŭgan»", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Reguloj pri privateco", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Ŝanĝoprotokolo", + "description": "" + }, + "aboutCode": { + "message": "Fontkodo (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Kontribuantoj", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Fontkodo", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Tradukoj", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Listoj de filtriloj", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Eksteraj dependaĵoj (kongruaj kun GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "La proprajn filtrilojn de uBO gastigas la jenaj enhavo-liverantaj retoj:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Kiam filtrilo postulas ĝisdatigon, hazarde elektita enhavo-liveranta reto estas uzata.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Savkopii al dosiero", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "mia-ublock-savkopio_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restaŭri el dosiero…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Remeti normajn agordojn…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Ĉiuj viaj agordoj estos anstataŭigitaj per via savkopio kreita je {{time}} kaj uBlock₀ restartigos.\n\nĈu vi volas anstataŭigi ĉiujn de viaj ekzistantaj agordoj uzita la savkopio?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "La datumoj ne legeblas aŭ ĝi estas nevalida", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Ĉiuj viaj agordoj estos forigita kaj uBlock₀ restartigos.\n\nĈu vi volas reagordi uBlock₀ al la defaŭltaj agordoj?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "{{url}} ne konekteblas", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Sekvi", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "antaŭ 1 minuto", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "antaŭ {{value}} minutoj", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "antaŭ 1 horo", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "antaŭ {{value}} horoj", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "antaŭ 1 tago", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "antaŭ {{value}} tagoj", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Montri panelon", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Montri protokolilon", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "ne aktiva", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Paĝo blokita", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock₀ preventis la ŝarĝadon de la sekva paĝo:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Pro la sekva filtrilo", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "sen parametroj", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Trovita en:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Reen", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Fermi ĉi tiun fenestron", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Ne plu avertu min pri tiu ĉi retejo", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Malŝalti striktan blokadon por {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Nedaŭra", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Daŭra", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Procedi", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "La blokita paĝo volas fordirekti al alia retejo. Se vi daŭras, vi navigos senpere al {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Kialo:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malica", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Spurilo", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Malbona reputacio", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Eksporti al nuba konservado", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importi el nuba konservado", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importi el nuba konservado kaj kunfandi kun nunaj agordoj", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Nomo de ĉi tiu aparato:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Averto! Tiuj altnivelaj opcioj esta eble danĝeraj.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Sendi", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Apliki ŝanĝojn", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Malfari", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bajtoj", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Bloki elementon en kadro…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Aboni filtrilon…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Permesi grandajn aŭdvideajn elementojn nedaŭre", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Vidi fontkodon…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Tajpu alirklavon", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Baskuligi ŝlositan rulumadon", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopii al tondujo", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Elekti ĉiujn", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Baskuligi ornaman filtradon", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Baskuli Javascript-kodoj", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Malstriktigi blokadan reĝimon", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Uzata memoro: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "kB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Alklaku por ŝarĝi", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Eraroj: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Ne povas filtri ĝuste kiam la retumilo komenciĝis.\nReŝargu la paĝon por certigi ĝustan filtradon.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/es/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/es/messages.json new file mode 100644 index 00000000..4b187c15 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/es/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Por fin, un bloqueador eficiente con uso mínimo de procesador y memoria.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Panel de control", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "¡Atención! Tienes cambios sin guardar", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Conservar", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorar", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Configuración", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Listas de filtros", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Mis filtros", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Mis reglas", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Sitios de confianza", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Atajos", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Registro de peticiones", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Acerca de", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Soporte", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Visor de recursos", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Configuración avanzada", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Clic: deshabilitar/habilitar uBlock₀ en este sitio.\n\nCtrl+clic: deshabilitar uBlock₀ solo en esta página.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Clic para deshabilitar uBlock₀ en este sitio.\n\nCtrl+clic para deshabilitar uBlock₀ solo en esta página.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Clic para habilitar uBlock₀ en este sitio.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "peticiones bloqueadas", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "en esta página", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} o {{percent}} %", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "desde que se instaló", + "description": "English: since install" + }, + "popupOr": { + "message": "o", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Bloqueado en esta página", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Bloqueado desde que se instaló", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Dominios conectados", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Abrir panel de control", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Entrar al modo eliminación de elementos", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Entrar al modo selección de elementos", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Ir al registro de peticiones", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Reportar un problema en este sitio web", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Alternar bloqueo de todas las ventanas emergentes en este sitio", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Clic para bloquear todas las ventanas emergentes en este sitio", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Clic para no bloquear más todas las ventanas emergentes en este sitio", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Alternar bloqueo de elementos multimedia grandes en este sitio", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Clic para bloquear elementos multimedia grandes en este sitio", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Clic para no bloquear más elementos multimedia grandes en este sitio", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Alternar el filtrado cosmético en este sitio", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Clic para deshabilitar el filtrado cosmético en este sitio", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Clic para habilitar el filtrado cosmético en este sitio", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Alternar bloqueo de fuentes remotas en este sitio", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Clic para bloquear fuentes remotas en este sitio", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Clic para no bloquear más fuentes remotas en este sitio", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Clic para deshabilitar JavaScript en este sitio", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Clic para no deshabilitar más JavaScript en este sitio", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Ventanas emergentes", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Elementos multimedia grandes", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filtrado cosmético", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Fuentes remotas", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Más", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Menos", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Reglas globales: las reglas en esta columna se aplican a todos los sitios.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Reglas locales: las reglas en esta columna se aplican solo al sitio actual.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Haz clic para hacer tus cambios permanentes.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Haz clic para revertir tus cambios.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "todo", + "description": "" + }, + "popupImageRulePrompt": { + "message": "imágenes", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "peticiones de terceros", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/imágenes de terceros", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "scripts integrados", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "scripts del dominio", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "scripts de terceros", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "frames de terceros", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "dominios conectados", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} de {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versión", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Crear", + "description": "English: Create" + }, + "pickerPick": { + "message": "Elegir", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Salir", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Vista previa", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filtros de red", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filtros cosméticos", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Clic, Ctrl-clic", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Bloquear elemento…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Ocultar marcadores de posición de los elementos bloqueados", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Mostrar el número de peticiones bloqueadas en el icono", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Deshabilitar las descripciones emergentes", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Hacer uso del menú contextual cuando sea posible", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Accesible para daltónicos", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Apariencia", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Tono de color personalizado", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Habilitar almacenamiento en la nube", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Soy usuario avanzado", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Deshabilitar pre-carga de sitios (previene cualquier conexión para peticiones de red bloqueadas)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Deshabilitar auditoría de hipervínculos", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Impedir que WebRTC divulgue la dirección IP local", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Comportamiento predeterminado", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Es posible anular el comportamiento predeterminado para cada sitio", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Deshabilitar el filtrado cosmético", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Bloquear elementos multimedia mayores que {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Bloquear fuentes remotas", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Deshabilitar JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Bloquear reportes CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Desvelar nombres canónicos", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avanzado", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Características aptas solo para usuarios técnicos", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "configuración avanzada", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Última restauración:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Último respaldo:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} filtros de red y {{cosmeticFilterCount}} filtros cosméticos de:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} utilizados de {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Actualizar automáticamente las listas de filtros", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Actualizar ahora", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Vaciar todas las memorias caché", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analizar y aplicar filtros cosméticos", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Los filtros cosméticos sirven para ocultar elementos que se consideran una molestia visual en una página web, y que no pueden ser bloqueados por los motores de filtrado basados ​​en peticiones de red.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorar los filtros cosméticos genéricos", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Los filtros cosméticos genéricos son aquellos filtros cosméticos que se aplican a todos los sitios web. Al habilitar esta opción se elimina el riesgo de sobrecarga a la CPU y exceso de uso de la memoria que resulta del procesamiento de los filtros cosméticos genéricos.\n\nSe recomienda habilitar esta opción en dispositivos poco potentes.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspender actividad de la red hasta que todas las listas de filtros estén cargadas", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lista de dominios bloqueados", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Aplicar cambios", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Incluidos", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Anuncios", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privacidad", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Protección de malware, seguridad", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widgets sociales", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Avisos de cookies", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Elementos molestos", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multiusos", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regiones, idiomas", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Personalizado", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importar…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Una URL por línea. Las URL no válidas serán ignoradas.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Desactualizado.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "ver contenido", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Última actualización: {{ago}}.\nHaz clic para actualizar ahora.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Actualizando…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Un error de red impide que se actualicen los recursos.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "No añadas filtros de fuentes no confiables.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Habilitar mis filtros personalizados", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Permitir filtros personalizados que requieran confianza", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importar y anexar…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exportar…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-mis-filtros-estaticos_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Aplicar cambios", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Reglas permanentes", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Reglas temporales", + "description": "header" + }, + "rulesRevert": { + "message": "Revertir", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Establecer", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Editar", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Guardar", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Descartar", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importar desde archivo…", + "description": "" + }, + "rulesExport": { + "message": "Exportar a archivo…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ublock-mis-reglas-dinamicas_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Lista de tus reglas de filtrado dinámico.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Sintaxis de las reglas: origen destino tipo acción (documentación completa).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Ordenar:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Tipo de regla", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Fuente", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destino", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Sitios de confianza para los cuales se deshabilitará uBlock Origin. Una entrada por línea.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importar y anexar…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exportar…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ublock-mis-sitios-de-confianza_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Aplicar cambios", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tipo", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Dominio", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtro", + "description": "English: Filter" + }, + "logAll": { + "message": "Todo", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Sin pestaña", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Pestaña actual", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Recargar contenido de la pestaña", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Alternar el inspector DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Alternar el panel emergente", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Registro de peticiones", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Borrar el registro de peticiones", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pausar registro de peticiones (descarta todos los datos entrantes)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Continuar con el registro de peticiones", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Alternar el filtrado del registro de peticiones", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrar contenido", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opciones de filtrado del registro de peticiones", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "No", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "destacado", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "bloqueado", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "permitido", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modificado", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "petición del dominio", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "petición de tercero", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detalles", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtro", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Lista de filtros", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regla", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Contexto", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Contexto raíz", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Tipo de petición", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tipo", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Regla de URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Contexto:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tipo:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Filtro estático", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} peticiones de red de {{type}} {{br}}cuya dirección URL contenga {{url}} {{br}}y que se origine {{origin}},{{br}}{{importance}} exista una regla de excepción aplicable.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Bloquear", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Permitir", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "tipo “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "cualquier tipo", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "desde “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "desde cualquier lugar", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "excepto cuando", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "incluso cuando", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Filtro estático {{filter}} encontrado en:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "No se pudo encontrar el filtro estático en ninguna de las listas de filtros actualmente habilitadas", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Las entradas del registro de peticiones que no cumplan las tres condiciones a continuación se descartarán automáticamente:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Conservar entradas de los últimos {{input}} minutos", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Conservar como máximo {{input}} cargas de página por pestaña", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Conservar como máximo {{input}} entradas por pestaña", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Usar {{input}} líneas por entrada en modo expandido verticalmente", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Ocultar columnas:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Hora", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtro/regla", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Contexto", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Tipo de petición", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Lista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabla", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Sin formato", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Formato markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Abrir", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Crear nuevo reporte en GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Encontrar reportes similares en GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentación", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Lee la documentación en uBlock/wiki para aprender sobre todas las características de uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Preguntas y soporte", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Respuestas a preguntas y otros tipos de ayuda se proporcionan en el sub-reddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problemas de filtros/sitio web roto", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Reportar problemas de filtros con sitios web específicos en el registro de problemas uBlockOrigin/uAssets. Requiere una cuenta en GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Importante: evita utilizar otros bloqueadores con propósito similar junto con uBlock Origin, ya que esto puede causar problemas de filtros en sitios web específicos.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Consejos: asegúrate de que tus listas de filtros estén actualizadas. El registro de peticiones es la principal herramienta para diagnosticar problemas relacionados con los filtros.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Reportar error", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Reportar problemas con uBlock Origin en el registro de problemas uBlockOrigin/uBlock-issue. Requiere una cuenta en GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Información para solucionar problemas", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "A continuación encontrarás información técnica que puede ser útil cuando los voluntarios intenten ayudarte a resolver un problema.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Reportar un problema de filtro", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Para evitar sobrecargar a voluntarios con reportes duplicados, verifica que el problema no haya sido reportado. Nota: al hacer clic en el botón, hará que el origen de la página se envíe a GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Las listas de filtros se actualizan diariamente. Asegúrate de que tu problema no haya sido abordado en las listas de filtros más recientes.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verifica que el problema aún exista después de recargar la página web problemática.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Dirección de la página web:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "La página web…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Elige una entrada --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Muestra anuncios o restos de anuncios", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Tiene superposiciones u otras molestias", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detecta uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Tiene problemas relacionados con la privacidad", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Funciona mal cuando uBlock Origin está habilitado", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Abre pestañas o ventanas no deseadas", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Conduce a malware y phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Etiquetar la página web como “NSFW” (“no es seguro/apropiado para el trabajo”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Política de privacidad", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Registro de cambios", + "description": "" + }, + "aboutCode": { + "message": "Código fuente (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Colaboradores", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Código fuente", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Traducciones", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Listas de filtros", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Dependencias externas (compatibles con GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Las listas de filtros propias de uBO se alojan de forma gratuita en las siguientes CDN:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Se utilizará una CDN elegida al azar cuando sea necesario actualizar una lista de filtros.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Respaldar en archivo…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-mi-respaldo_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restaurar desde archivo…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Restablecer ajustes predeterminados…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Toda la configuración se sobrescribirá utilizando datos respaldados en {{time}} y uBlock₀ se reiniciará.\n\n¿Sobrescribir toda la configuración existente utilizando los datos de respaldo?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Los datos no se pueden leer o no son válidos", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Se borrará todas tus configuraciones y uBlock₀ se reiniciará.\n\n¿Restablecer uBlock₀ a la configuración predeterminada?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Error de red: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Suscribirse", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "hace un minuto", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "hace {{value}} minutos", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "hace 1 hora", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "hace {{value}} horas", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "hace un día", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "hace {{value}} días", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Mostrar panel de control", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Mostrar registro de peticiones", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "deshabilitado", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Página bloqueada", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin impidió la carga de la página:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Como resultado del siguiente filtro:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "sin parámetros", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Encontrado en:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Regresar", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Cerrar esta ventana", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "No me adviertas de nuevo sobre este sitio", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Deshabilitar bloqueo estricto para {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporalmente", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanentemente", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Continuar", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "La página bloqueada quiere redirigir a otro sitio. Si eliges continuar, navegarás directamente a: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Razón:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicioso", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Rastreador", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Mala reputación", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exportar datos a la nube", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importar datos de la nube", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importar desde la nube y anexar a la configuración actual", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Nombre de este dispositivo:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "¡Atención! Cambia estas configuraciones avanzadas bajo tu propio riesgo.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Enviar", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Aplicar cambios", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Revertir", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Bloquear elemento en frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Suscribirse a lista de filtros…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Permitir temporalmente elementos multimedia grandes", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Ver código fuente…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Escribe un atajo", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Alternar bloqueo de desplazamiento", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copiar al portapapeles", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Seleccionar todo", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Alternar filtrado cosmético", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Alternar JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Modo de bloqueo relajado", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Almacenamiento usado: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Clic para cargar", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errores: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "No se puede filtrar correctamente al iniciar el navegador. Recarga la página para garantizar el filtrado correcto.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Esta entrada debe ser la última", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/et/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/et/messages.json new file mode 100644 index 00000000..2da28a74 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/et/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Lõpuks on valminud tõhus blokeerija. Protsessori- ja mälusõbralik.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Töölaud", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Hoiatus! Sul on salvestamata muutusi", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Jää lehele", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Eira", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Seaded", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filtriloendid", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Minu filtrid", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Minu reeglid", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Usaldatud saidid", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Kiirklahvid", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Logija", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Teave", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Tugi", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — vara vaatur", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Täpsemad seaded", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klõps: keela/luba uBlock₀ sellel saidil.\n\nCtrl+klõps: keela uBlock₀ ainult sellel lehel.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Klõpsa, et keelata uBlock₀ sellel saidil.\n\nCtrl+klõps, et keelata uBlock₀ ainult sellel lehel.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klõpsa, et lubada uBlock₀ sellel saidil.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "blokeeritud taotlusi", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "sellel lehel", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} või {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "paigaldamise algusest", + "description": "English: since install" + }, + "popupOr": { + "message": "või", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Sellel lehel blokeeritud", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Paigaldamise algusest blokeeritud", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domeene ühendatud", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Ava töölaud", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Sisene elemendi hävitusrežiimi", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Sisene elemendi valikuolekusse", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Ava logija", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Teavita selle veebilehe probleemist", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Keela hüpikaknad sellel saidil", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klõpsa, et keelata kõik hüpikaknad sellel saidil", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klõpsa, et lõpetada hüpikakende keelamine sellel saidil", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Lülita mahukate meediaelementide blokeerimine siin saidil sisse/välja", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klõpsa, et keelata mahukad meediaelemendid sellel saidil", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klõpsa, et lõpetada mahukate meediaelementide keelamine sellel saidil", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Keela ilufiltrid sellel saidil", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klõpsa, et keelata ilufiltrid sellel saidil", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klõpsa, et lubada ilufiltrid sellel saidil", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Luba väliste fontide blokeerimine sellel saidil", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klõpsa, et keelata välisfondid sellel saidil", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klõpsa, et lõpetada välisfontide keelamine sellel saidil", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klõpsa, et keelata JavaScript sellel saidil", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klõpsa, et lõpetada sellel saidil JavaScripti keelamine", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Hüpikaknad", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Suured meediaelemendid", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Ilufiltrid", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Välised fondid", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Rohkem", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Vähem", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Üldised reeglid: selle veeru reeglid kehtivad kõikidele saitidele.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Kohalikud reeglid: selle veeru reeglid kehtivad ainult praegusele saidile.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Klõpsa, et teha oma muudatused püsivaks.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klõpsa, et võtta muudatused tagasi.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "kõik", + "description": "" + }, + "popupImageRulePrompt": { + "message": "pildid", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3. osapool", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "3. osapoole CSS/pildid", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "tekstisisesed skriptid", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1. osapoole skriptid", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3. osapoole skriptid", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3. osapoole raamid", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "ühendatud domeene", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}}/{{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versioon", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skript", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "raam", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Loo", + "description": "English: Create" + }, + "pickerPick": { + "message": "Vali", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Välju", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Eelvaade", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Võrgufiltrid", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Ilufiltrid", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klõps, Ctrl-klõps", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blokeeri element...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Peida blokeeritud elementide asukohad", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Kuva ikoonil blokeeritud elementide arv", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Keela näpunäited", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Kasuta sobivusel kontekstmenüüd", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Värvipimeduse-sõbralik", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Välimus", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Teema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Kohandatud rõhuvärv", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Luba pilves hoiustamise tugi", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Olen kogenud kasutaja", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Keela eellaadimine (et vältida ühendusi blokeeritud võrgutaotlustele)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Keela hüperlingi auditeerimine", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Tõkesta WebRTC'l kohalike IP-aadresside lekitamist", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Vaikeväärtused", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Neid vaikeväärtusi saab saitide põhiselt eraldi määrata", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Keela ilufiltrid", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokeeri meediaelemendid, mis on suuremad kui {{input}} kB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Keela välised fondid", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Keela JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Keela lehe turvareeglite (CSP-de) aruanded", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Kanooniliste nimede tuvastamine", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Täpsemad", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funktsioonid, mis on sobilikud vaid tehnikas pädevatele kasutajatele.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "täpsemad seaded", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Viimane taastus:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Viimane varundus:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} võrgufiltrit + {{cosmeticFilterCount}} ilufiltrit:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "kasutusel {{used}}/{{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Uuenda filtriloendeid automaatselt.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Uuenda kohe", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Tühjenda kõik vahemälud", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Tuvasta ja rakenda ilufiltrid.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Ilufiltrid peidavad veebilehe elemente, mis häirivad visuaalselt ning mida ei saa blokeerida võrgutaotlustel põhinevate filtreerimismootoritega.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Eira üldiseid ilufiltreid.", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Üldised ilufiltrid on need ilufiltrid, mis töötavad kõikidel veebisaitidel. Selle valiku lubamine vähendab veebisaitidel üldiste ilufiltrite kasutamisest tulenevat mälu ja protsessori koormust.\n\nSelle valiku lubamine on soovitatav vähem võimekates seadmetes.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Peata võrguliiklus kõikide filtriloendite laadimiseni", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Blokeeritud domeenide loendid", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Kinnita muudatused", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Sisseehitatud", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklaamid", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privaatsus", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Pahavara kaitse, turvalisus", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sotsiaalvõrgustike vidinad", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Küpsise teatised", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Tüütused", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Mitmeotstarbelised", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regioonid, keeled", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Kohandatud", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Impordi...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Üks URL rea kohta. Vigaseid URLe eiratakse hoiatuseta.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "vananenud", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "vaata sisu", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Viimane uuendus: {{ago}}.\nUuendamiseks vajutage.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Uuendamine...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Ressursi uuendamist takistas võrgu viga.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Ära lisa filtreid tundmatutest allikatest.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Luba enda loodud filtrid", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Luba usaldusväärsust tõestama peavad enda loodud filtrid", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Impordi ja lisa…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Ekspordi…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "minu-ublocki-staatilised-filtrid_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Kinnita muudatused", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Igavesed reeglid", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Ajutised reeglid", + "description": "header" + }, + "rulesRevert": { + "message": "Ennista", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Rakenda", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Muuda", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Salvesta", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Tühista", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Impordi failist...", + "description": "" + }, + "rulesExport": { + "message": "Ekspordi faili…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "minu-ublocki-dünaamilised-reeglid_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Sinu dünaamiliste filtrite reeglide nimekiri.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Reegli süntaks: allikas sihtkoht tüüp tegevus (kogu dokumentatsioon).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sorteeri:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Reegli tüüp", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Allikas", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Sihtkoht", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Usaldatud saitide direktiivid määravad, millistel veebilehtedel peaks uBlock Origin keelatud olema. Üks kirje rea kohta.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Impordi ja lisa…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Ekspordi…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "minu-ublocki-usaldatud-saidid_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Kinnita muudatused", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tüüp", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domeen", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Kõik", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Kaardivaba", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Praegune kaart", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Laadi kaardi sisu uuesti", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Lülita sisse DOM-inspektor", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Lülita sisse hüpikpaneel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin'i viki: Logija", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Tühjenda logija", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Peata logija (ignoreeri sissetulevaid andmeid)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Jätka logimist", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Lülita sisse logija filtreerimine", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtreeri logija sisu", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logija filtreerimise valikud", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Mitte", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "oluline", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokeeritud", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "lubatud", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "muudetud", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1. osapool", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3. osapool", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Andmed", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filtriloend", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Reegel", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontekst", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Juurkontekst", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Osapool", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tüüp", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL'i reegel", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontekst:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tüüp:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Staatiline filtreerimine", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} võrgupäringud {{type}} {{br}}mille URL-aadress vastab väärtusele {{url}} {{br}}ja mis pärineb {{origin}},{{br}}{{importance}} on olemas vastav erandfilter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokeeri", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Luba", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "tüübiga “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "mistahes tüübiga", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "domeenilt “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "mistahes domeenilt", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "välja arvatud, kui", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "isegi, kui", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Staatiline filter {{filter}} asub:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Staatilist filtrit ei leitud ühegi hetkel lubatud filtrite loendist", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logija kirjeid, mis ei vasta kõigile kolmele alumisele tingimusele, eiratakse automaatselt:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Säilita viimase {{input}} minuti kirjed", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Säilita kuni {{input}} lehe laadimist vahekaardi kohta", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Säilita kuni {{input}} kirjet vahekaardi kohta", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Kasuta {{input}} rida kirje kohta vertikaalses laiendatud režiimis", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Peida veerud:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} aeg", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} filter/reegel", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} kontekst", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} osapool", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Loend", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabel", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Lihttekst", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Ava", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Loo GitHubis uus aruanne", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Leia GitHubist sarnaseid aruandeid", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumendid", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Loe dokumente kohas uBlock/wiki, et avastada kõik uBlock Origini võimalusi.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Küsimused ja tugi", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Vastused küsimustele ja muud sorti kliendituge pakutakse subredditis /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filtrivead/veebileht on katki", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Teata kindlate veebilehtede filtrivigadest uBlockOrigin/uAssets veahalduris. Nõuab GitHubi kontot.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Oluline: väldi teiste sarnaselt toimivate blokeerijate kasutamist koos uBlock Originiga, see võib põhjustada teatud lehtedel filtrivigu.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Nõuanne: veendu, et filtrinimekirjad on ajakohased. Logija on peamine tööriist filtritega seotud vigade diagnoosimiseks.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Veast teatamine", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Teata uBlock Origini vigadest uBlockOrigin/uBlock-issue
veahalduris. Nõuab GitHubi kontot.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Tõrkeotsingu teave", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Allpool on tehniline info, mis võib olla kasulik, kui vabatahtlikud aitavad sul probleemi lahendada.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Teavita filtri veast", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Vabatahtlike koormuse vähendamiseks palun veendu, et probleemi ei ole juba teatatud. Märkus: nupu klõpsamine saadab lehe aadressi GitHubi.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filtriloendeid uuendatakse iga päev. Kindlasti veenduge, kas probleem on juba lahendatud uusimates filtriloendites.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Kontrollige probleemi olemasolu veel kord, laadides muret tekitav veebileht uuesti.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Veebilehe aadress:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Veebileht...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Vali kirje --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Kuvab reklaame või reklaami kohatäitjaid", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Omab ülekatteid või teisi nuhtlusi", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Tuvastab uBlock Origini", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Omab privaatsusega seonduvaid probleeme", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Läheb uBlock Origini olemasolul katki", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Avab soovimatuid kaarte või aknaid", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Põhjustab pahavara, õngitsuskirju", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Sildista veebileht kui „NSFW“ (“tööks sobimatu”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Privaatsusteatis", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Muudatuste logi", + "description": "" + }, + "aboutCode": { + "message": "Lähtekood (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Toetajad", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Lähtekood", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Tõlked", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filtriloendid", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Välised sõltuvused (ühilduvad GPLv3-ga):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO enda filtriloendid on vabalt hostitud järgnevates sisuedastusvõrkudes:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Filtriloendi uuendamiseks kasutatakse juhuslikult valitud sisuedastusvõrku.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Varunda faili…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "minu-ublocki-varundus_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Taasta failist...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Alusta nullist...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Kõik seaded kirjutatakse üle, kasutades varundust kuupäevast {{time}} ning uBlock₀ taaskäivitatakse.\n\nKirjutan üle kõik praegused seaded varundusandmetega?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Andmeid ei suudetud lugeda või on vigased", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Kõik seaded kustutatakse ning uBlock₀ taaskäivitatakse.\n\nTaastan uBlock₀'i algseadetele?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Võrgu viga: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Telli", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "minuti eest", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minuti eest", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "tunni eest", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} tunni eest", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "eile", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} päeva tagasi", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Kuva töölaud", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Kuva logija", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "väljas", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Leht blokeeritud", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin on keelanud järgneva lehe laadimise:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Järgneva filtri tõttu", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "parameetriteta", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Asub filtrites:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Mine tagasi", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Sulge see aken", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Ära selle saidi puhul enam hoiata", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Keela karm blokeerimine {{hostname}} jaoks", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Ajutiselt", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Püsivalt", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Jätka", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Tõkestatud veebileht üritab suunata muule veebilehele. Jätkates suunatakse teid veebilehele {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Põhjus:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Kahtlane", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Jälgija", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Kaak", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Ekspordi pilvehoidlasse", + "description": "tooltip" + }, + "cloudPull": { + "message": "Impordi pilvehoidlast", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Impordi pilvekettalt ja ühilda praeguste seadetega", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Selle seadme nimi:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Hoiatus! Muuda täpsemaid seadeid oma vastutusel.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Saada", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Kinnita muudatused", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Ennista", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "baiti", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blokeeri raamis olev element...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Telli filtriloend...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Luba ajutiselt mahukad meediaelemendid", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Vaata lähtekoodi…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Kirjuta kiirklahv", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Lülita sisse lukustatud kerimine", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopeeri lõikelauale", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Vali kõik", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Lülita kosmeetilist filtreerimist", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Lülita JavaScripti", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Rahulik blokeerimisrežiim", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Mahtu kasutatud: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klõpsa laadimiseks", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Vigu: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Brauseri avamisel korralikult filtreerimine ebaõnnestus. Selle parandamiseks laadi leht uuesti.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "See sisestus peab olema viimane", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/eu/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/eu/messages.json new file mode 100644 index 00000000..61102e41 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/eu/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Behingoz, blokeatzaile eraginkor bat. PUZ eta memorian arina.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Kontrol panela", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Abisua! Gorde gabeko aldaketak dituzu", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Geratu", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ezikusi", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Ezarpenak", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Iragazki-zerrendak", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Nire iragazkiak", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Nire arauak", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Konfidantzazko webguneak", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Lasterbideak", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Egunkaria", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Honi buruz", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Soportea", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Aktibo-ikuslea", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Ezarpen aurreratuak", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klik: gaitu/ezgaitu uBlock₀ gune honetan.\n\nKtrl+klik: ezgaitu uBlock₀ orri honetan soilik.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Klik: Gaitu/ezgaitu uBlock₀ gune honetan.\n\nKtrl+klik: Desgaitu uBlock₀ orri honetan soilik.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klik: Gaitu uBlock₀ gune honetan.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "blokeatutako eskariak", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "orri honetan", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} edo %{{percent}}", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "instalaziotik", + "description": "English: since install" + }, + "popupOr": { + "message": "edo", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokeatuta orri honetan", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blokeatuta instalaziotik", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Konektatutako domeinuak", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Ireki kontrol panela", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Elementuak lekuz aldatzeko modua", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Elementuak hautatzeko modua", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Ireki egunkaria", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Webgune honetan arazo baten berri eman", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Txandakatu laster-leihoen blokeoa gune honetan", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klik: Blokeatu gune honetako laster leiho guztiak", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klik: Utzi gune honetako laster-leihoak blokeatzeari", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Txandakatu multimedia elementu handiak blokeatzea gune honetan", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klik: Blokeatu gune honetako tamaina handiko elementuak", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klik: Utzi gune honetako tamaina handiko elementuak blokeatzeari", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Txandakatu iragazki kosmetikoa gune honetan", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klik: Desgaitu iragazki kosmetikoak gune honetan", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klik: Gaitu iragazki kosmetikoak gune honetan", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Txandakatu urruneko letra tipoen blokeoa gune honetan", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klik: Blokeatu urruneko letra-tipoak gune honetan", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klik: Utzi urruneko letra-tipoak gune honetan blokeatzeari", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Egin klik gune honetan JavaScript desgaitzeko", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Egin klik gune honetan JavaScript desgaitzeari uzteko", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Laster-leihoak", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Multimedia elementu handiak", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Iragazki kosmetikoak", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Urruneko tipografiak", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Gehiago", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Gutxiago", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Arau orokorrak: Zutabe hau gune guztietan aplikatzen diren arauentzat da.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Tokiko arauak: Zutabe hau soilik uneko gunean aplikatuko diren arauentzat da.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Sakatu aldaketak gordetzeko.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Sakatu aldaketak desegiteko.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "guztiak", + "description": "" + }, + "popupImageRulePrompt": { + "message": "irudiak", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Hirugarrengoak", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "Hirugarrengoen CSS/Irudiak", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "barne scriptak", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "bertako scriptak", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "hirugarrengoen scriptak", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "hirugarrengoen markoak", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "konektatutako domeinuak", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} / {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Bertsioa", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "scripta", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "markoa", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Sortu", + "description": "English: Create" + }, + "pickerPick": { + "message": "Hautatu", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Irten", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Aurreikusi", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Sare iragazkiak", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Iragazki kosmetikoak", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Ktrl-klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blokeatu elementua...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Ezkutatu blokeatutako elementuen hutsuneak", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Bistaratu blokeatutako eskari kopurua ikonoan", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Desgaitu argibideak", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Erabili laster-menua egokia denean", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Kolore-itsuentzat egokia", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Itxura", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Azala", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Azentu-kolore pertsonalizatua", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Gaitu hodei biltegiratzearen euskarria", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Erabiltzaile aurreratua naiz (Irakurri beharrekoa)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Desgaitu aurrez-kargatzea (blokeatutako sare eskaeretako edozein konexio galarazteko)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Desgaitu loturen auditoretza", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Galarazi WebRTCk tokiko IP helbidea iragartzea", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Lehenetsitako portaera", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Lehenetsitako portaera hauek gunez gune gainidatzi daitezke", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Desgaitu iragazki kosmetikoa", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokeatu {{input:number}} kB baino handiagoak diren multimedia elementuak", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokeatu urruneko letra-tipoak", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Desgaitu JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blokeatu CSP txostenak", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Erakutsi izen kanonikoak", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Aurreratua", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Erabiltzaile teknikoentzat soilik egokiak diren funtzioak", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "ezarpen aurreratuak", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Azken berreskuratzea:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Azken babeskopia:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} sare iragazki + {{cosmeticFilterCount}} iragazki kosmetiko hemendik:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} erabilita, guztira {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Automatikoki eguneratu iragazkien zerrenda.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Eguneratu orain", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Garbitu cache guztiak", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Prozesatu eta ezarri iragazki kosmetikoak.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

Aukera honek Adblock Plusekin bateragarriak diren “elementuak ezkutatzeko” iragazkiak prozesatzea eta ezartzea gaitzen du. Iragazki hauek nagusiki kosmetikoak dira, web orri batean itsusitzat jo diren eta sare iragazkien bidez blokeatzerik ez dauden elementuak ezkutatzeko balio dute.

Ezaugarri hau gaitzeak uBlock₀en memoria erabilera handitzen du.

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ezikusi iragazki kosmetiko orokorrak", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

Iragazki kosmetiko orokorrak webgune guztietan aplikatzeko sortu diren iragazki kosmetikoak dira.

uBlock₀ aplikazioak ongi kudeatzen baditu ere iragazki kosmetiko orokorrek wegune batzuetan memoria edo PUZ erabilera nabarmena ekar dezakete handiak eta antzinakoak diren horietan gehienbat.

Aukera hau gaituz iragazki kosmetiko orokorren erabileraren ondoriozko memoria eta PUZ erabilera gehigarria sahiestuko da, eta baita uBlock₀ beraren memoria erabilera gutxiagotu.

Ahalmen gutxiagoko gailuetan aukera hau gaitzea aholkatzen da.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Eten sarearen jarduera iragazki-zerrenda guztiak kargatuta egon arte", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Aplikatu aldaketak", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Barnekoa", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Iragarkiak", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Pribatutasuna", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Malwarearen aurkako babesa, segurtasuna", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widgets Sozialak", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie oharrak", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Eragozpenak", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Helburu anitzekoak", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Eskualdeak, hizkuntzak", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Pertsonala", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Inportatu...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "URL bat lerroko. Baliogabeko URL-ak ezikusiko dira.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Zaharkituta.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "ikusi edukia", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Azken eguneraketa: {{ago}}.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Eguneratzen...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Sare errore batek baliabidea eguneratzea eragotzi du.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Ez gehitu jatorri ezezaguneko iragazkirik", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Aktibatu nire filtro pertsonalitsatuak", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Konfiantza behar duten iragazki pertsonalizatuak baimendu", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Inportatu eta gehitu", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Esportatu", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "nire-ublock-iragazki-estatikoak_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Aplikatu aldaketak", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Behin betiko arauak", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Behin behineko arauak", + "description": "header" + }, + "rulesRevert": { + "message": "Baztertu", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Behin betiko bihurtu", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Aldatu", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Gorde", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Baztertu", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Inportatu fitxategitik...", + "description": "" + }, + "rulesExport": { + "message": "Esportatu fitxategira", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "nire-ublock-arau-dinamikoak_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Zure iragazki dinamikoen arau zerrenda.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Arauen sintaxia: jatorria helburua mota ekintza(Dokumentazio osoa).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Ordena:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Arau mota", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Iturria", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Helburua", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Zerrenda zuriaren direktibek uBlock zeintzu web orrietan desgaituko den zehazten dute. Sarrera bat lerroko. Baliogabeko ostalari izenak ezikusiko dira.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Inportatu eta gehitu", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Esportatu", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "nire-ublock-zerrendazuria_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Aplikatu aldaketak", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Mota", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domeinua", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Iragazkia", + "description": "English: Filter" + }, + "logAll": { + "message": "Guztiak", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Atzeko planoan", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Uneko fitxa", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Birkargatu fitxako edukia", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Txandakatu DOM ikuskatzailea", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Txandakatu laster-leiho panela", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Egunkaria", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Garbitu egunkaria", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pausatu egunkaria (baztertu jasotako informazioa)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Kendu pausa egunkariari", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Txandakatu egunkariaren iragazkia", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "iragazi egunkariko sarrerak", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Egunkaria iragazteko aukerak", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Ez", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokeatuta", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "baimenduta", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "aldatua", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Lehen eskukoa", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Hirugarrengoa", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Xehetasunak", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Iragazkia", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Iragazki-zerrendak", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Araua", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Testuingurua", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Erro testuingurua", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Jatorria", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Mota", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URLa", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL araua", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Testuingurua:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Mota:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Iragazketa estatikoa", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} {{type}} motako sare eskariak {{br}}URL helbidea {{url}} helbidearekin bat datorrenean {{br}}eta jatorria {{origin}} denean,{{br}}{{importance}} bat datorren salbuespen iragazki bat badago.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokeatu", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Baimendu", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "mota “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "edozein mota", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "hemendik “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "edonondik", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "kenduta", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "nahiz eta", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "{{filter}} iragazki estatikoa aurkitu da hemen:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "{{filter}} iragazki estatikoa ezin izan da aurkitu orain aktibatutako iragazki zerrendetan", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Beheko hiru baldintzak betetzen ez dituzten egunkariko sarrerak automatikoki ezikusiko dira:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Mantendu azken {{input}} minutuetako sarrerak", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Mantendu gehienez {{input}} orrien kargak fitxako", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Mantendu gehienez {{input}} sarrera fitxako", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Erabili {{input}} errenkada sarrerako bertikalki hedatutako moduan", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Ezkutatu zutabeak:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Denbora", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Iragazkia/araua", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Testuingurua", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} jatorria", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Zerrenda", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Taula", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Laua", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Ireki", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Txosten berri bat sortu", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Antzeko txostenak aurkitu", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentazioa", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Irakurri dokumentazioa uBlock/wiki helbidean, uBlock Originen funtzio guztiak ezagutzeko.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Galderak eta laguntza", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "/r/uBlockOrigin azpidian galderen erantzunak eta beste laguntza mota batzuk eskaintzen dira.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Arazoak iragazkiekin/webguneak ez du funtzionatzen", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Web-gune espezifikoekin iragazteko arazoak jakinaraz iezaguzu hemen: uBlockOrigin/uAssets issue tracker. GitHub kontu bat behar da", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Kontuan izan: Ez erabili antzeko helburua duten beste blokeatzaile batzuk uBlock Originekin batera, horrek arazoak sor baititzake webgune espezifikoetan iragazteko.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Aholkuak Ziurtatu zure iragazki-zerrendak eguneratuta daudela. Erregistratzailea da iragazkiekin lotutako arazoak diagnostikatzeko tresna nagusia.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Errore-txostena", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Arazoak jakinarazi uBlock Originekin arazoen erregistroan uBlockOrigin/uBlock-issueissue tracker. GitHub kontua beharrezkoa da.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Arazoen konponbideari buruzko informazioa", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Jarraian, boluntarioek arazo bat konpontzen laguntzen saiatzen direnean baliagarria izan daitekeen informazio teknikoa aurkituko duzu.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Iragazkiko arazo baten berri eman", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Txosten bikoiztuak dituzten boluntarioak ez gainkargatzeko, mesedez egiaztatu arazoa ez dela jakinarazi.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Iragazki-zerrendak egunero eguneratzen dira. Begiratu zure kasua azken iragazki-zerrendetako baten konpondu den.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Egiaztatu zure kasua arazoak eman dizkizun webgunea berriz kargatu ostean oraindik ere gertatzen den.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Web orriaren helbidea:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Webgunea...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Aukeratu sarrera bat --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Iragarkiak edo iragarkien hondarrak erakusten ditu", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Gainjartzeak edo bestelako eragozpenak ditu", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "uBlock Origin detektatzen du", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Pribatutasun-arazoak ditu", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Funtzionamendu-akatsak uBlock Origin aktibatuta dagoenean", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Ireki nahi ez diren erlaitzak edo leihoak", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Web orria «NSFW» moduan jarri (“Not Safe For Work” )", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Pribatutasun politika", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Aldaketa egunkaria", + "description": "" + }, + "aboutCode": { + "message": "Iturburu kodea (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Parte-hartzaileak", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Iturburu-kodea", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Itzulpenak", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Iragazki-zerrendak", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Kanpo menpekotasunak (GPLv3 lizentziarekin bateragarriak):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBOren iragazki zerrendan CDN hauetan daude:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Ausaz aukeratutako CDN bat erabiltzen da iragazki zerrenda bat eguneratu behar denean", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Egin babeskopia fitxategian", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "nire-ublock-babeskopia_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Berreskuratu fitxategitik...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Leheneratu lehenetsitako ezarpenetara...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Zure ezarpen guztiak gainidatziko dira {{time}}ko datuak erabiliz, eta uBlock₀ berrabiaraziko da.\n\nGainidatzi ezarpen guztiak babeskopiako datuekin?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Datuak ezin dira irakurri edo baliogabeak dira", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Zure ezarpen guztiak ezabatuko dira, eta uBlock₀ berrabiaraziko da.\n\nLeheneratu uBlock₀ jatorrizko ezarpenetara?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Sare-errorea: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Harpidetu", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "duela minutu bat", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "duela {{value}} minutu", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "duela ordu bat", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "duela {{value}} ordu", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "duela egun bat", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "duela {{value}} egun", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Bistaratu kontrol panela", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Bistaratu egunkaria", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "itzalita", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Blokeatutako orrialdea", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock₀ek orri hau kargatzea galarazi du:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Iragazki hau dela eta", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "parametrorik gabe", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Hemen aurkitua:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Atzera", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Itxi leiho hau", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Ez esan ezer berriz ere orrialde honi buruz", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Ezgaitu blokeatze zorrotza {{hostname}} gunean", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Une batez", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Behin betiko", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Aurrera", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Blokeatutako orrialdeak beste helbide batera berbideratu nahi zaitu. Jarraitu nahi baduzu, zuzenean helbide honetara joango zara: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Esportatu hodei biltegiratzera", + "description": "tooltip" + }, + "cloudPull": { + "message": "Inportatu hodei biltegiratzetik", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Inportatu hodeiko biltegiratzetik eta nahastu oraingo ezarpenekin", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Gailu honen izena:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Abisua! Ez aldatu ezarpen aurreratu hauek zertan ari zaren ez badakizu.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Bidali", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Aplikatu aldaketak", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Baztertu", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "byte", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Marko bateko elementua blokeatu...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Harpidetu iragazki zerrenda batera...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Une batez baimendu multimedia elementu handiak", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Ikusi iturburu kodea…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Idatzi lasterbide bat", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Txandakatu korritze blokeatua", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopiatu arbelera", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Hautatu dena", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Iragazte kosmetikoa txandakatu", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScripta aktibatu/desaktibatu", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Baretu blokeatze-modua", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Erabilitako biltegiratzea: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Sakatu kargatzeko", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Erroreak: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Iragazkia ezin izan da kargatu nabigatzailea irekitzeak. Kargatu berriz orria iragazkiak ondo funtzionatzen duela ziurtatzeko.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/fa/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/fa/messages.json new file mode 100644 index 00000000..b71aaff6 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/fa/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "بالاخره، یک بلاکر کارآمد. کم حجم بر روی پردازنده و حافظه.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — داشبورد", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "هشدار! شما تنطیمات ذخیره نشده دارید", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "بمان", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "نادیده بگیر", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "تنظیمات", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "لیست‌های فیلتر", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "فیلترهای من", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "قوانین من", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "لیست سپید", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "میانبرها", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — واقعه‌نگار", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "در باره", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "پشتیبانی", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — نماینگر دارایی", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "تنظیمات پیشرفته", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "کلیک: غیر فعال/ فعال کردن uBlock₀ برای این سایت.\n\nکنترل+کلیک: غیر فعال کردن uBlock₀ فقط برای همین صفحه.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "کلیک کنید تا uBlock₀ برای این سایت غیر فعال شود.\n\nهمزمان کلیدکنترل را نگهدارید و کلیک کنید تا uBlock₀ فقط برای این صفحه غیر فعال شود.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "کلیک کنید تا uBlock₀ برای این سایت فعال شود.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "درخواست مسدود شده", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "در این صفحه", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} یا {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "از زمان نصب", + "description": "English: since install" + }, + "popupOr": { + "message": "یا", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "بلاک‌شده در این صفحه", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "بلاک شده از زمان نصب", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "دامنه‌های متصل‌شده", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "باز کردن داشبورد", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "ورود به حالت له کردن اشیاء", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "ورود به حالت انتخاب اشیاء", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "بازکردن واقعه‌نگار", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "گزارش یک اشکال در خصوص این وبسایت", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "تغییر وضعیت انسداد همه‌ی پنجره های بالاپَر برای این سایت", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "کلیک کنید تا همۀ پنجره های بالاپَر در این سایت مسدود شوند", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "کلیک کنید تا دیگر هیچ کدام از پنجره های بالاپَر این سایت مسدود نشوند", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "تغییر وضعیت مسدود کردن عناصر رسانه ای حجیم برای این سایت", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "کلیک کنید تا عناصر رسانه ای حجیم بر روی این سایت مسدود شوند", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "کلیک کنید تا از این به بعد عناصر رسانه ای حجیم روی این سایت مسدود نشوند", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "تغییر وضعیت فیلترزیباسازی برای این سایت", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "کلیک کنید تا فیلتر زیبا سازی بر روی این سایت غیر فعال شود", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "کلیک کنید تا فیلتر زیبا سازی بر روی این سایت فعال شود", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "تغییر وضعیت انسداد فونت های راه دور برای این سایت", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "کلیک کنید تا فونت های راه دور در این سایت مسدود شوند", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "کلیک کنید تا از این به بعد فونت های راه دور در این سایت مسدود نشوند", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "کلیک کنید تا جاوا اسکریپت در این سایت غیرفعال شود", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "کلیک کنید تا جاوا اسکریپت دیگر در این سایت غیرفعال نشود", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "پنجره‌ی پاپ‌آپ", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "اِلمان‌های دارای مدیای بزرگ", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "فیلترهای انتخابی", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "فونت‌های راه دور", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "جاوااسکریپت", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "بیشتر", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "کمتر", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "قوانین همگانی: این ستون برای قوانینی است که برای همۀ سایت ها اعمال می شوند.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "قوانین محلی: این ستون برای قوانینی است که تنها در این وب‌گاه اعمال می شود.\nقوانین محلی بر قوانین سراسری برتری دارد.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "برای دائمی سازی تغییرات کلیک کنید.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "برای دور انداختن تغییراتی که اعمال کرده اید کلیک کنید.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "همه", + "description": "" + }, + "popupImageRulePrompt": { + "message": "تصاویر", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3rd-party", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "تصاویر/css سایت های ثالث", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "اسکریپت های درون خطی", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "اسکریپت های 1st-party", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "اسکریپت های 3rd-party", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "فریم های 3rd-party", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "دامنه های دست خورده", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "تعداد {{count}} از {{total}} تا", + "description": "appears in popup" + }, + "popupVersion": { + "message": "نگارش", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "اسکریپت", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "چارچوب", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "ایجاد", + "description": "English: Create" + }, + "pickerPick": { + "message": "انتخاب", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "خروج", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "پیش نمایش", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "فیلترهای شبکه", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "فیلترهای انتخابی", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "کلیک، کنترل-کلیک", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "بلاک کردن این بخش", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "مخفی کردن نگاهدارنده اشیاء بلاک شده", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "نمایش تعداد درخواست های بلاک شده بر روی آیکون", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "غیر فعال سازی راهنماها", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "استفاده از منوی متنی در زمانهای لازم", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "بهینه سازی کور رنگی", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "ظاهر", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "پوسته", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "رنگ اصلی دلخواه", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "فعال سازی پشتیبانی ذخیره سازی ابری", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "من کاربر حرفه ای هستم (لازم است بخوانید)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "غیر فعال کردن واکشی اولیه (برای جلوگیری از هر گونه اتصال برای درخواست های مسدود شدۀ شبکه)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "غیرفعال کردن حسابرسی پیوند", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "جلوگیری کردن از WebRTC از افشاسازی آدرس های IP محلی", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "رفتار پیش فرض", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "تنظیمات مخصوص هر سایت این تنظیمات پیش فرض را لغو می‌کند", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "غیر فعال‌سازی فیلتر زیبا سازی", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "انسداد عناصر رسانه ای حجیم تر از {{input:number}} کیلوبایت", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "انسداد فونت های راه دور", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "غیرفعال کردن جاوا اسکریپت", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "مسدود کردن براساس گزارشات سیاست امنیت محتوا", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "اسامی متعارف را از حالت قفل خارج کنید", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "پیشرفته", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "قابلیت‌های مناسب برای کاربران فنی", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "تنظیمات پیشرفته", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "آخرین بازیابی:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "آخرین پشتیبانی:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} فیلتر های شبکه + {{cosmeticFilterCount}} فرم های فیلتر انتخابی:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "تعداد {{used}} از {{total}} مورد استفاده شده", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "بروز رسانی خودکار لیست فیلتر.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "اکنون به روز رسانی شود", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "پاکسازی تمام انبارها", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "تجزیه و اجرای فیلترهای انتخابی.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

این گزینه فیلترهای “مخفی‌کردن اشیا” سازگار با ادبلاک پلاس را تجزیه و اجرا میکند. این فیلتر ها اساساً فنی هستند، آنها اشیاء موجود در صفحه وب را که مزاحم تلقی میشوند و با موتور فیلترینگ شبکه قابل بلاک کردن نیستند را حذف میکنند.

فعال کردن این قابلیت مصرف حافظه ی uBlock را افزایش میدهد.

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "نادیده گرفتن فیلترهای زیبا سازی عمومی", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

فیلترهای زیبا سازی عمومی، آن دسته از فیلترهای زیبا سازی هستند که در همه وب سایت ها کاربرد دارند.\n

اگر چه بصورت موثر توسط uBlock₀ انجام شده، ولی فیلترهای عمومی زیبا سازی هنوز هم ممکن است سربار حافظه قابل اندازه گیری و سربار پردازنده در برخی از صفحات وب به جای بگذارد، به ویژه برای صفحات وب بزرگ و طولانی مدت.

فعال کردن این گزینه سربارهای حافظه و پردازنده را که به صفحات اضافه شده به عنوان نتیجۀ اجرای فیلترهای عمومی زیبا سازی برطرف می‌کند، و همچنین ردپای حافظۀ خود uBlock₀ را کمتر می‌کند

توصیه می شود این گزینه را در دستگاه های با قدرت کمتر فعال کنید.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "تا وقتی همه‌ی فیلترها لود نشده‌اند ارتباط شبکه را قطع کن", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "فهرست میزبان های مسدود شده", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "اعمال تغییرات", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "داخلی", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "تبلیغات", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "حریم خصوصی", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "محافظت در برابر بدافزار، امنیت", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "ابزارک‌های اجتماعی", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "اطلاعیه‌های کلوچک", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "مزاحم‌ها", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "چند منظوره", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "مناطق، زبانها", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "سفارشی", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "وارد شده", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "هر آدرس در یک خط. خطوطی با پیشوند ‘!’ در نظر گرفته نمیشوند. آدرس های نامعتبر نیز در سکوت نادیده گرفته میشوند.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "منقضی شده.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "نمایش محتویات", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "آخرین به روز رسانی: {{ago}}.\nبرای یک به روز رسانی اجباری کلیک کنید.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "درحال بروزرسانی...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "یک خطای شبکه از بروزشدن این منبع جلوگیری کرد.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "پالایه‌ها از منابع نامعتبر افزوده نشود.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "فعال‌سازی پالایه‌های سفارشی من", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "اجازه‌دهی به پالایه‌های سفارشی نیازمند اعتمادسازی ", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "وارد کردن و الحاق", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "خروجي گرفتن", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "اعمال تغییرات", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "قوانین دائمی", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "قوانین موقت", + "description": "header" + }, + "rulesRevert": { + "message": "بازگرداندن", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "ذخیره در منبع", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "ویرایش", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "ذخيره", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "لغو", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "وارد کردن از فایل...", + "description": "" + }, + "rulesExport": { + "message": "خروجی گرفتن به فایل...", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "لیست قوانین فیلترینگ پویای شما.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "نحوه استفاده: source destination type action (مستندات کامل).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "مرتب‌سازی:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "نوع قانون", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "منبع ", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "مقصد", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "دستور العمل‌های لیست سفید حکم می‌کند که uBlock₀ باید بر روی کدام یک از صفحات وب غیر فعال باشد. در هر خط فقط یک مورد. دستور العمل‌های نامعتبر بدون اشاره ای نادیده گرفته شده و بیرون انداخته می‌شوند.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "وارد کردن و الحاق", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "خروجي گرفتن", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-whitelist_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "اعمال تغییرات", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "نوع", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "دامنه", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "آدرس", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "فیلتر", + "description": "English: Filter" + }, + "logAll": { + "message": "همه", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "پشت صحنه", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "برگۀ فعلی", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "بارگیری مجدد محتوای صفحه", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "تغییر وضعیت جستجوگر DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "تغییر وضعیت پنل پاپ‌آپ", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "ویکی uBlock Origin: ثبت‌کننده رویداد‌ها", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "پاک‌کردن رویداد‌ها", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "توقف ثبت رویداد‌ها (تمام داده‌های ورودی را نادیده بگیر)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "از سرگیری ثبت رویداد‌ها", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "تغییر وضعیت فیلتر ثبت رویداد‌ها", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "فیلتر کردن محتوای لاگ", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "گزینه‌های فیلتر ثبت رویداد‌ها", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "نفی", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "مسدود شده", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "مجاز", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "تغییر کرده", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1st-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "طرف سوم", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "جزئیات", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "فیلتر", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "لیست فیلتر", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "قانون", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "محتوا", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "محتوای ریشه", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "نوع", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "آدرس", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "فیلترینگ پویای آدرس اینترنتی", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "زمینه:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "نوع:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "فیلترینگ ایستا", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} درخواست های شبکه از نوع {{type}}{{br}} که مطابقت دارد با آدرس اینترنی {{url}}{{br}} و سرچشمه می‌گیرد از {{origin}}،{{br}}{{importance}} اینها یک فیلتر استثناء از تطبیق هستند.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "انسداد", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "مجاز", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "نوع “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "هر نوعی", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "از “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "از هر جایی", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "بجز وقتی", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "حتی اگر", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "انسداد ایستا {{filter}} یافت شد در:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "فیلتر ایستا {{filter}} در هیچ یک از لیست‌های فیلتر فعال پیدا نشد", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "رویدادهای ورودی که مطابق سه شرط زیر نباشند، بصورت خودکار نادیده گرفته خواهند شد:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "ورودی‌های {{input}} دقیقه اخیر را نگه دار", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "در هر سربرگ حداقل {{input}} ورودی نگه دار", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "لطفا در هر تب حداکثر {{input}} مدخل نگه‌دارید", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "استفاده از {{input}} خط برای هر ورودی در حالت عمودی گسترش‌یافته", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "پنهان‌سازی ستون", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} زمان", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} فیلتر/قانون", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "لیست", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "جدول", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "ساده", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "مارک‌داون", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "باز کردن", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "ایجاد گزارش جدید", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "یافتن گزارش‌های مشابه", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "مستندات", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "مستنداتی که در uBlock/wiki هست را بخوانید تا با تمام امکانات uBlock Origin آشنا شوید.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "سوال‌ها و پشتیبانی", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "پاسخ به سوالات و انواع راهنمایی‌ها در ساب‌ردیت /r/uBlockOrigin ارائه می‌شود.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "مشکل فیلترها/وبسایتی ایراد دارد", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "مشکلات فیلتر با وب‌سایت‌های خاص را به uBlockOrigin/uAssets گزارش دهید. نیاز به یک حساب کاربری GitHub دارد.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "مهم: از مسدودکننده‌های مشابه دیگر در کنار یوبلاک اوریجین استفاده نکنید. این کار ممکن است باعث ایجاد مشکل در فیلترها برای برخی سایت‌ها شود.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "نکته‌ها: مطمئن شوید که فهرست‌های فیلتر شما به‌روز هستند. گزارشگر ابزار اصلی برای تشخیص مشکلات مربوط به فیلترهاست.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "گزارش اشکال", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "مشکلات مربوط به خود uBlock Origin را به uBlockOrigin/uBlock-issue گزارش دهید. نیاز به یک حساب کاربری GitHub دارد.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "اطلاعات مشکل‌گشایی", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "در زیر اطلاعات فنی آمده که ممکن است برای داوطلبانی که می‌خواهند در حل یک مشکل کمک کنند مفید باشد.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "گزارش یک اشکال در فیلتر", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "برای این که وقت داوطلبان با گزارش‌های تکراری گرفته نشوند، لطفا مطمئن شوید که این اشکال قبلا گزارش نشده باشد.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "فهرست‌های پالایش روزانه به‌روز می‌شوند. مطمئن شوید که مشکل شما پیشتر در فهرست‌های پالایش اخیر بررسی نشده باشد.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "تأیید کنید که مشکل پس از بارگذاری مجدد صفحهٔ مشکل‌دار همچنان وجود دارد.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "آدرس صفحه‌ی وب:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "این صفحه‌ی وب...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- یک گزینه را انتخاب کنید --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "تبلیغات یا باقی‌مانده‌هایی از آن نشان می‌دهد", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "دارای لایه‌های اضافی یا مشکلات مزاحم دیگر", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "یوبلاک اوریجین را تشخیص می‌دهد", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "دارای ایراد مربوط به حریم خصوصی است", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "وقتی یوبلاک اوریجین فعال است عملکرد درستی ندارد", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "تب یا پنجره‌ی ناخواسته باز می‌کند", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "منجر به بدافزار یا فیشینگ می‌شود", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "علامت زدن صفحه به عنوان \"NSFW\" (\"نامناسب برای کار\")", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "قوانین حریم خصوصی", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "تغییرات اخیر", + "description": "" + }, + "aboutCode": { + "message": "سورس کد (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "مشارکت کنندگان", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "کد منبع", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "ترجمه‌ها", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "لیست‌های فیلتر", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "وابستگی‌های خارجی (سازگار با GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "لیست‌های فیلتر اصلی uBlock Origin به صورت آزاد در این شبکه‌های تحویل محتوا میزبانی می‌شوند.", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "وقتی که لازم باشد تا یک لیست فیلتر به روزرسانی شود، از یکی از شبکه‌های تحویل محتوا به صورت تصادفی استفاده می‌شود", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "پشتیبان گیری در فایل", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "بازیابی از فایل...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "تنظیم مجدد تنظیمات پیش فرض...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "تمام تنظیمات با استفاده از پشتیبان گیری در {{time}}، رونویسی شده و uBlock₀ مجدد راه اندازی میشود.\n\nتمام تنظیمات موجود با استفاده از داده های پشتیبانی رونویسی شود؟", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "داده ها نمی تواند خوانده شوند و یا نامعتبر اند", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "تمام تنظیمات شما حذف شده و uBlock₀ دوباره راه اندازی خواهد شد.\n\nتنظیم مجدد uBlock₀ به تنظیمات کارخانه؟", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "خطای شبکه: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "آبونه شدن", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "1 دقیقه پیش", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} دقیقه پیش", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "یک ساعت پیش", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} ساعت قبل", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "دیروز", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} روز قبل", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "نمایش داشبورد", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "نمایش واقعه‌نگار", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "خاموش", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "صفحه مسدود شده است", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock₀ از بارگذاری این صفحات جلوگیری کرده:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "بخاطر فیلتر زیر", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "بدون پارامترها", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "یافته شده در:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "بازگشت به عقب", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "بستن این پنجره", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "دیگر در مورد این تارنما هشداری به من داده نشود", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "غیر فعال کردن بلاک برای {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "موقتا", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "دائمی", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "ادامه", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "صفحه مسدود شده می‌خواد به سایت دیگری شما را هدایت کند. در صورت قبول کردن، شما مستقیم به {{url}} وارد خواهید شد", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "دلیل", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "مخرب", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "ردیاب", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "صدور به فضای ذخیره سازی ابری", + "description": "tooltip" + }, + "cloudPull": { + "message": "وارد کردن از فضای ذخیره سازی ابری", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "وارد کردن از فضای ذخیره سازی ابری و ادغام با تنظیمات فعلی", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "نام این وسیله:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "هشدار! این تنظیمات پیشرفته را با مسئولیت خود تغییر دهید.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "ارسال", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "اعمال تغییرات", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "بازگرداندن", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "بایت", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "بلاک‌کردن اِلمان در فریم...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribe to filter list...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "اجازه موقت عناصر رسانه‌ای حجیم", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "مشاهده کد منبع…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "یک میانبر وارد کنید", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "تغییر وضعیت پیمایش قفل شده", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "کپی به کلیپ‌بورد", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "انتخاب همه", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "فیلترگذاری ظاهری را فعال/غیرفعال کنید", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "تغییر وضعیت جاوا اسکریپت", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "حالت بلاک‌کردن غیرسخت‌گیر", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "فضای مصرفی: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "کیلوبایت", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "مگابایت", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "گیگابایت", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "برای بازکردن کلیک نمایید", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "خطا: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "فیلترگذاری به‌درستی در هنگام راه‌اندازی مرورگر انجام نشد. صفحه را دوباره بارگذاری کنید تا از فیلترگذاری صحیح اطمینان حاصل کنید.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "این باید آخرین مطلب باشد", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/fi/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/fi/messages.json new file mode 100644 index 00000000..eb40d010 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/fi/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Viimeinkin tehokas estotyökalu, joka ei kuormita prosessoria ja muistia.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Hallintapaneeli", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Varoitus! Olet tehnyt muutoksia, joita ei ole vielä tallennettu", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Älä poistu", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ohita", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Asetukset", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Suodatinlistat", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Omat suodattimet", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Omat säännöt", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Luotetut sivustot", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Pikanäppäimet", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Pyyntöhistoria", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Tietoja", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Tuki", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Resurssien katselu", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Lisäasetukset", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Painallus: poista uBlock₀ käytöstä/ota se käyttöön tällä sivustolla.\n\nCtrl+painallus: poista uBlock₀ käytöstä vain tällä sivulla.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Poista uBlock₀ käytöstä tällä sivustolla painamalla tästä.\n\nCtrl+painallus poistaa uBlock₀:n käytöstä vain tällä sivulla.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Ota uBlock₀ käyttöön tällä sivustolla painamalla tästä.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "pyyntöjä estetty", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "tällä sivulla", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "asennuksen jälkeen", + "description": "English: since install" + }, + "popupOr": { + "message": "tai", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Estetty tällä sivulla", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Estetty asennuksen jälkeen", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Verkkotunnuksia yhdistetty", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Avaa hallintapaneeli", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Avaa elementtien piilotustila", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Avaa elementtien valintatila", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Näytä pyyntöhistoria", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Ilmoita ongelmasta tällä verkkosivustolla", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Muuta ponnahduseston tilaa tällä sivustolla", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Estä kaikki ponnahdukset tällä sivustolla painamalla tästä", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Salli kaikki ponnahdukset tällä sivustolla painamalla tästä", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Muuta suurten mediaelementtien eston tilaa tällä sivustolla", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Estä suuret mediaelementit tällä sivustolla painamalla tästä", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Salli suuret mediaelementit tällä sivustolla painamalla tästä", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Muuta kosmeettisen suodatuksen tilaa tällä sivustolla", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Poista kosmeettinen suodatus käytöstä tällä sivustolla painamalla tästä", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Ota kosmeettinen suodatus käyttöön tällä sivustolla painamalla tästä", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Muuta ulkoisten fonttien lataustilaa tällä sivustolla", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Estä ulkoisten fonttien lataus tällä sivustolla painamalla tästä", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Salli ulkoisten fonttien lataus tällä sivustolla painamalla tästä", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Estä JavaScript tällä sivustolla painamalla tästä", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Salli JavaScript tällä sivustolla painamalla tästä", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Ponnahdukset", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Suuret mediaelementit", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kosmeettinen suodatus", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Ulkoiset fontit", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Enemmän", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Vähemmän", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Yleiset säännöt: Sarake säännöille, joita käytetään kaikilla sivustoilla.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Paikalliset säännöt: Sarake säännöille, joita käytetään vain nykyisellä sivustolla.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Tee muutoksistasi pysyviä painamalla tästä.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Kumoa muutoksesi painamalla tästä.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "kaikki", + "description": "" + }, + "popupImageRulePrompt": { + "message": "kuvat", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3. osapuoli", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "Kolmannen osapuolen css/kuvat", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "upotetut komentosarjat", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1. osapuolen komentosarjat", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3. osapuolen komentosarjat", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3. osapuolen kehykset", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "verkkotunnuksia yhdistetty", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}}/{{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versio", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "komentosarja", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "kehys", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Luo", + "description": "English: Create" + }, + "pickerPick": { + "message": "Valitse", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Lopeta", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Esikatsele", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Verkkosuodattimet", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kosmeettiset suodattimet", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Painallus, Ctrl-painallus", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Estä elementti…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Piilota estettyjen elementtien paikkamerkit", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Näytä estettyjen pyyntöjen määrä", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Älä näytä työkaluvihjeitä", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Käytä kontekstivalikkoa tarvittaessa", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Värisokeille sopiva tila", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Ulkoasu", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Teema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Oma korostusväri", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Käytä pilvitallennusta", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Olen edistynyt käyttäjä", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Älä käytä esihakua (estää kaikki yhteydet estetyiltä verkkopyynnöiltä)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Älä salli hyperlinkkien käytönseurantaa", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Estä paikallisen IP-osoitteen vuoto WebRTC:n välityksellä", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Oletuskäytännöt", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Nämä oletuskäytännöt voidaan ohittaa sivustokohtaisesti", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Älä käytä kosmeetista suodatusta", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Estä mediaelementit, jotka ovat suurempia kuin {{input:number}} kt", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Estä ulkoisten fonttien lataus", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Poista JavaScript käytöstä", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Estä CSP-raportit", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Paljasta kanoniset nimet (CNAME-uncloaking)", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Lisäasetukset", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Teknisille käyttäjille sopivat ominaisuudet", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "Lisäasetukset", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Viimeisin palautus:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Viimeisin varmuuskopio:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} verkkosuodatinta + {{cosmeticFilterCount}} kosmeettista suodatinta:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "Käytössä {{used}}/{{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Päivitä suodatinlistat automaattisesti", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Päivitä nyt", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Tyhjennä kaikki välimuistit", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Jäsennä ja pakota kosmeettiset suodattimet", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Kosmeettisten suodattimien tehtävä on piilottaa sivujen elementtejä, jotka on luokiteltu visuaalisiksi ärsykkeiksi ja joiden esto ei ole mahdollista verkkopyyntöjen estoon perustuvien suodatusmoottoreiden avulla.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ohita kosmeettiset yleissuodattimet", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Kosmeettiset yleissuodattimet ovat sellaisia kosmeettisia suodattimia, jotka on tarkoitettu käytettäväksi kaikilla verkkosivustoilla. Tämä asetus poistaa tällaisten suodattimien käsittelystä verkkosivuille aiheutuvan, korkeamman keskusmuistin ja suorittimen kuormituksen.\n\nAsetuksen käyttö on suositeltavaa heikkotehoisilla laitteilla.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Keskeytä verkon toiminta, kunnes kaikki suodatinlistat on ladattu", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lista estetyistä osoitteista", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Vahvista muutokset", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Laajennukseen sisältyvät", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Mainokset", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Tietosuoja", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Haittaohjelmasuojaus, tietoturva", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sosiaaliset widgetit", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Evästeilmoitukset", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Ärsykkeet", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Yleishyödylliset", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Alueet, kielet", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Muut listat", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Tuo…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Yksi URL-osoite riviä kohden. Virheelliset osoitteet ohitetaan huomaamattomasti.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Vanhentunut", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "Näytä sisältö", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Viimeisin päivitys: {{ago}}.\nPakota päivitys painamalla tästä.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Päivitetään…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Verkkovirhe esti resurssin päivityksen.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Älä lisää suodattimia lähteistä, joihin et luota.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Käytä omia suodattimia", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Salli luottamusta edellyttävät omat suodattimet", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Tuo ja lisää…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Vie…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "omat-staattiset-ublock-suodattimet_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Vahvista muutokset", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Pysyvät säännöt", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Tilapäiset säännöt", + "description": "header" + }, + "rulesRevert": { + "message": "Palauta", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Pysyväksi", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Muokkaa", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Tallenna", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Hylkää", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Tuo tiedostosta…", + "description": "" + }, + "rulesExport": { + "message": "Vie tiedostoon…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "omat-dynaamiset-ublock-saannot_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Listaus dynaamisista suodatussäännöistä.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Sääntösyntaksi: lähde kohde tyyppi toiminto (täysi ohje).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Järjestys:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Säännön tyyppi", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Lähde", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Kohde", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Luotettu sivusto -luokitukset määrittelevät millä sivuilla uBlock Originia ei käytetä. Yksi osoite riviä kohden.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Tuo ja lisää…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Vie…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "omat-luotetut-ublock-sivustot_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Vahvista muutokset", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tyyppi", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Verkkotunnus", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Suodatin", + "description": "English: Filter" + }, + "logAll": { + "message": "Kaikki", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Piilotetut", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Nykyinen välilehti", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Lataa välilehden sisältö uudelleen", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Kytke DOM-rakennenäkymä", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Kytke ponnahduspaneeli", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Pyyntöhistoria", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Tyhjennä pyyntöhistoria", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pysäytä pyyntöhistoria (ohita kaikki saapuva tietoliikenne)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Käynnistä pyyntöhistoria", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Muuta pyyntöhistorian suodatusta", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "Suodata pyyntöhistoriaa", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Pyyntöhistorian suodatusvalinnat", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Ei", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "tapahtumarikas", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "estetty", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "sallittu", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "muokattu", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1. osapuoli", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3. osapuoli", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Tiedot", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Suodatin", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Suodatinlista", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Sääntö", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Konteksti", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Juurikonteksti", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Osapuoli", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tyyppi", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL-sääntö", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Konteksti: ", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tyyppi: ", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Staattinen suodatus", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} verkkopyynnöt, joiden tyyppi on {{type}}, {{br}}URL vastaa osoitetta {{url}} {{br}}ja joiden lähde on {{origin}},{{br}}{{importance}} vastaava poikkeussuodatin.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Estä", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Salli", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "{{type}}", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "mikä tahansa", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "{{origin}}", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "mikä tahansa", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "paitsi, kun löytyy", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "vaikka löytyisi", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Staattinen suodatin {{filter}} löydettiin:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Staattista suodatinta ei löytynyt tällä hetkellä käytössä olevilta suodatinlistoilta", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Merkinnät, jotka eivät täytä alla olevista kolmesta ehdosta jokaista, ohitetaan automaattisesti:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Säilytä merkinnät viimeisten {{input}} minuutin ajalta", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Säilytä enintään {{input}} sivulatausta välilehteä kohden", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Säilytä enintään {{input}} pyyntöä välilehteä kohden", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Näytä pyynnöille {{input}} riviä pystysuutaan laajennetussa tilassa", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Piilota sarakkeita:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Aika", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Suodatin/sääntö", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Konteksti", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Osapuoli", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Lista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Taulukko", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Pelkkä teksti", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown-kieli", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Avaa", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Luo GitHubiin uusi ilmoitus", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Etsi GitHubista vastaavia ilmoituksia", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Ohje", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Lue ohjeet sijainnista uBlock/wiki tutustuaksesi uBlock Originin kaikkiin ominaisuuksiin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Kysymykset ja tuki", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Vastauksia kysymyksiin ja muuta tukea on saatavilla /r/uBlockOrigin-subredditistä.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Suodatusongelma/sivusto on hajonnut", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Ilmoita sivustokohtaisista suodatinongelmista uBlockOrigin/uAssets -ongelmaseurantaan. Vaatii GitHub-tilin.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Tärkeää: Vältä muiden vastaavien estotyökalujen samanaikaista käyttöä uBlock Originin kanssa, koska se voi aiheuttaa ongelmia joillakin sivustoilla.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Vinkkejä: Varmista, että suodatinlistasi ovat ajan tasalla. Pyyntöhistoria on pääasiallinen työkalu suodattimiin liittyvien ongelmien selvityksessä.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Virheilmoitus", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Ilmoita uBlock Origin -laajennuksen ongelmista uBlockOrigin/uBlock-ongelmaseurannanssa. Vaatii GitHub-tilin.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Vianselvitystiedot", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Alla on teknisiä tietoja, jotka saattavat auttaa ongelmasi ratkonnassa auttavia vapaaehtoisia.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Ilmoita suodatinongelmasta", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Välttääksesi vapaaehtoisten kuormittamisen ylimääräisillä ilmoituksilla, tarkasta ensin onko ongelmasta jo ilmoitettu. Huomioi: Painikkeen painallus lähettää sivun osoitteen GitHubiin.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Suodatinlistoja päivitetään päivittäin. Varmista, ettei ongelmaasi ole jo korjattu listojen uusissa versioissa.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Vahvista ongelman edelleen esiintyvän kyseisellä verkkosivulla.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Verkkosivun osoite:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Verkkosivu…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Valitse aihe --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Näyttää mainoksia tai niiden jäänteitä", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Sisältää peiteruutuja tai muita ärsykkeitä", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Havaitsee uBlock Originin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Sisältää tietosuojaan liittyviä ongelmia", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Ei toimi oikein uBlock Originin ollessa käytössä", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Avaa ei-toivottuja välilehtiä tai ikkunoita", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Johtaa badwareen ja tietojenkalasteluun", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Luokittele verkkosivu ns. työpaikalle sopimattomaksi, \"NSFW\" (\"Not Safe For Work\")", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Tietosuojakäytäntö", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Muutoshistoria", + "description": "" + }, + "aboutCode": { + "message": "Lähdekoodi (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Avustajat", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Lähdekoodi", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Käännökset", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Suodatinlistat", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Ulkopuoliset riippuvuudet (GPLv3-yhteensopiva):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO:n omat suodatinlistat ovat vapaasti saatavilla seuraavista sisällönjakeluverkoista:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Suodatinlistat päivitetään satunnaisesti valitusta sisällönjakeluverkosta (CDN).", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Varmuuskopioi tiedostoon…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "oma-ublock-varmuuskopio_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Palauta tiedostosta…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Palauta oletusasetukset…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Kaikki asetuksesi korvataan {{time}} varmuuskopioiduilla tiedoilla ja uBlock₀ käynnistyy uudelleen.\n\nKorvataanko kaikki nykyiset asetukset varmuuskopioduilla tiedoilla?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Tietoja ei voitu lukea tai ne ovat virheellisiä", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Kaikki asetuksesi poistetaan ja uBlock₀ käynnistyy uudelleen. \n\nPalautetaanko uBlock₀ oletusasetuksiin?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Verkkovirhe: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Tilaa", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "minuutti sitten", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minuuttia sitten", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "tunti sitten", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} tuntia sitten", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "päivä sitten", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} päivää sitten", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Näytä Hallintapaneeli", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Näytä pyyntöhistoria", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "ei käytössä", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Sivu estetty", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock₀ on estänyt seuraavan sivun latauksen:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Seuraavan suodattimen vuoksi:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "ilman parametrejä", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Sisältyy listoihin:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Palaa takaisin", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Sulje tämä ikkuna", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Älä varoita tästä sivustosta uudelleen", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Älä käytä tiukkaa estoa osoitteelle {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Tilapäisesti", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Pysyvästi", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Jatka", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Estetty sivu ohjautuu eri sivustolle. Jos jatkat, siirryt suoraan osoitteeseen {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Syy:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Haitallinen", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Seuranta", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Huonomaineinen", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Vie pilvitallennustilaan", + "description": "tooltip" + }, + "cloudPull": { + "message": "Tuo pilvitallennustilasta", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Tuo pilvitallennustilasta ja yhdistä nykyisiin asetuksiin", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Tämän laitteen nimi:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Varoitus! Muuta näitä lisäasetuksia omalla vastuullasi.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Lähetä", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Vahvista muutokset", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Palauta", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "tavua", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Estä elementti kehyksestä…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Tilaa suodatinlista…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Salli suuret mediaelementit tilapäisesti", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Näytä lähdekoodi…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Syötä näppäinyhdistelmä", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Kytke puoliskojen välisen vierityksen lukitus", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopioi leikepöydälle", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Valitse kaikki", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Kytke kosmeettinen suodatus", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Kytke JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Kevennetty estotila", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Tallennustilan käyttö: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "kt", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "Mt", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "Gt", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Lataa painamalla tästä", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Virheitä: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Suodatus ei onnistunut kunnolla selaimen käynnistyessä. Päivitä sivu varmistaaksesi kunnollisen suodatuksen.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Tämän on oltava viimeinen merkintä", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/fil/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/fil/messages.json new file mode 100644 index 00000000..3778341f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/fil/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Mainam na pangharang sa content. Magaan sa CPU at memorya.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dashboard", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Babala! Hindi pa na-save ang ilan mong mga pagbabago", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Manatili rito", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Balewalain", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Mga Setting", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Listahan ng mga filter", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Mga filter ko", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Mga patakaran ko", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Mga pinagkakatiwalaang site", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Mga Shortcut", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Talaan", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Tungkol", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Suporta", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Tingnan ang mga Asset", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Karagdagang mga setting", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Click: patayin/paandarin ang uBlock₀ para sa site na ito.\n\nCtrl+click: patayin ang uBlock₀ sa pahinang ito lang.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "I-click para patayin ang uBlock₀ sa site na ito.\n\nI-Ctrl+click para patayin ang uBlock₀ sa pahinang ito lang.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "I-click para paandarin ang uBlock₀ sa site na ito.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "mga hinarang na hiling", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "sa pahinang ito", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "mula pagka-install", + "description": "English: since install" + }, + "popupOr": { + "message": "o", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Hinarang sa pahinang ito", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Hinarang mula pagka-install", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Mga konektadong domain", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Buksan ang dashboard", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Buksan ang pantanggal sa mga elemento", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Buksan ang tagapili sa mga elemento", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Buksan ang talaan", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Mag-ulat ng isyu sa website na ito", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Paandarin/patayin ang pagharang sa mga popup sa site na ito", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Pindutin upang harangin lahat ng mga popup sa site na ito", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Pindutin upang payagan lahat ng mga popup sa site na ito", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Paandarin/patayin ang pagharang sa mga malalaking elemento ng media sa site na ito", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Pindutin upang harangin ang mga malalaking elemento ng media sa site na ito", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Pindutin upang ihinto ang pagharang sa mga malalaking elemento ng media sa site na ito", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Paandarin/patayin ang kosmetikong pagfi-filter sa site na ito", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Pindutin upang ihinto ang kosmetikong pagfi-filter sa site na ito", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Pindutin upang paandarin ang kosmetikong pagfi-filter sa site na ito", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Paandarin/patayin ang pagharang sa remote fonts sa site na ito", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Pindutin upang harangin ang remote fonts sa site na ito", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Pindutin upang ihinto ang pagharang sa remote fonts sa site na ito", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Pindutin upang harangin ang JavaScript sa site na ito", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Pindutin upang paandarin ang JavaScript sa site na ito", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Mga window na nagpa-pop-up", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Malalaking mga elemento ng media", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kosmetikong pagfi-filter", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Remote fonts", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Higit pa", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mas konti", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Mga pangkalahatang patakaran: ang hanay na ito ay para sa mga patakarang ipinapatupad sa lahat ng mga site.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Mga lokal na patakaran: ang hanay na ito ay para sa mga patakarang ipinapatupad sa site site na ito lamang.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Pindutin upang maging permanente ang mga pagbabago mo.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Pindutin upang kanselahin ang mga pagbabago mo.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "lahat", + "description": "" + }, + "popupImageRulePrompt": { + "message": "mga larawan", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3rd-party", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "mga 3rd-party na CSS/larawan", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "mga nakapaloob na script", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "mga 1st-party na script", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "mga 3rd-party na script", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "mga 3rd-party na frame", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "mga konektadong domain", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} sa {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Bersyon", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Lumikha", + "description": "English: Create" + }, + "pickerPick": { + "message": "Pumili", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Umalis", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Silipin", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Mga filter sa network", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Mga kosmetikong filter", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "I-click, Ctrl-click", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Harangin ang elemento…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Itago ang placeholder ng mga hinarang na mga elemento", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Ipakita kung ilan ang mga naharang na hiling sa icon", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Huwag magpakita ng mga tooltip", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Gamitin ang menu sa konteksto kung naaangkop", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Para sa color-blind", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Hitsura", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Pinasadyang kulay ng accent", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Paandarin ang suporta sa imbakan sa cloud", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Isa akong advanced user", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Pigilan ang browser na mag-preload ng mga pahinang iniisip nito na baka bisitahin mo (upang pigilan ang koneksyon sa mga hinarang na site)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Pigilan ang pag-audit sa hyperlink", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Pigilan ang WebRTC na magkalat ng mga lokal na IP address", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Default na ugali", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Mas sinusunod ang mga per-site na ugali kaysa sa default na ugali", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Ihinto ang kosmetikong pagfi-filter", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Harangin ang mga elemento ng media na mas malaki sa {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Harangin ang remote fonts", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Harangin ang JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Harangin ang mga ulat ng CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Ilantad ang totoong pagkakakilanlan ng mga kanonikal na pangalan (CNAME)", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Advanced", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Mga feature na angkop lang sa mga gumagamit na maraming alam", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "karagdagang mga setting", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Huling pag-restore:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Huling pag-backup:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} (na) mga network filter + {{cosmeticFilterCount}} (na) mga kosmetikong filter mula sa:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} ginagamit sa {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Awtomatikong i-update ang listahan ng mga filter", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "I-update ngayon", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Tanggalin lahat ng mga cache", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Iproseso at ipatupad ang mga kosmetikong filter", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Hinaharang ng kosmetikong filter ang mga elemento sa web page na nakakaabala at hindi maharang ng mga pangharang na nakabase sa mga hiling sa network.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Huwag pansinin ang mga generikong kosmetikong filter", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Ang generikong kosmetikong filter ay ang mga kosmetikong filter na para sa lahat ng mga website. Nakakatipid ito ng memorya at CPU sapagkat ihihinto ang pagproseso sa mga generikong kosmetikong filter.\n\nMainam na gamitin ang opsyong ito sa mga device na hindi ganoon kalakas.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Itigil ang lahat ng mga aktibidad sa network hanggang sa ma-load ang lahat ng mga listahan ng mga filter", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Listahan ng mga naharang na host", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Ilapat ang mga pagbabago", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Built-in", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Mga ad", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Pagkapribado", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Proteksyon sa malware, seguridad", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Panlipunang mga widget", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Pabatid para sa mga cookie", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Mga nakakaabalang bagay", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Maraming-mapaggagamitan", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Mga rehiyon o wika", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Ipinasadya", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Mag-import…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Isang URL kada linya. Hindi papansinin ang mga invalid na URL.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Luma na", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "tingnan ang nilalaman", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Huling update: {{ago}}.\nPindutin upang pilitin ang pag-update.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Ina-update…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Hindi na-update ang resource dahil sa isang network error.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Huwag magdagdag ng pangsala mula sa mga hindi katiwa-tiwalang pinagmulan.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Paganahin ang mga pasadyang filter", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Hayaan ang mga pansariling filter na kailangan ng tiwala", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "I-import at idagdag", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "I-export", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "mga-static-filter-ko-sa-ublock_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Ilapat ang mga pagbabago", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Mga permanenteng patakaran", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Mga panandaliang patakaran", + "description": "header" + }, + "rulesRevert": { + "message": "Ibalik", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Ilapat", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Baguhin", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "I-save", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Itapon", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Mag-import mula sa file…", + "description": "" + }, + "rulesExport": { + "message": "I-export sa file", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "mga-dynamikong-patakaran-ko-sa-ublock_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Listahan ng mga dynamikong patakaran mo sa pagfi-filter.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Format ng patakaran: pinagmulan patutunguhan uri aksyon (kumpletong dokumentasyon [sa Ingles]).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Pagsunud-sunurin:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Uri ng patakaran", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Pinagmulan", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Patutunguhan", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Idinidikta nito kung sa aling mga webpage papatayin ang uBlock Origin. Isang entry kada linya.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "I-import at idagdag", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "I-export", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "mga-pinagkakatiwalaan-kong-site-sa-ublock_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Ilapat ang mga pagbabago", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Uri", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domain", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Lahat", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Walang tab", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Kasalukuyang tab", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "I-reload ang nilalaman ng tab", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Buksan/isara ang inspektor ng DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Buksan/isara ang popup panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "wiki ng uBlock Origin: Ang talaan", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Linisin ang talaan", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Ihinto ang tagatala (itapon ang lahat ng papasok na datos)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Ituloy ang pagtatala", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Paandarin/patayin ang pagfi-filter ng talaan", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "nilalaman ng filter sa pagtatala", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Mga opsyon sa pagfi-filter ng talaan", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Hindi", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "inaksyunan", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "hinarang", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "pinayagan", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "binago", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1st-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3rd-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Mga detalye", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Listahan ng filter", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Patakaran", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Konteksto", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Pangunahing konteksto", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Pagkapartido", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Uri", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Patakaran sa URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Konteksto:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Uri:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statikong filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} ang mga hiling sa network na {{type}} {{br}}kung tumutugma ang URL address nito sa {{url}} {{br}}at nagmumula ito sa {{origin}},{{br}}{{importance}} may tugmang exception filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Harangin", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Payagan", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "uri “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "anumang uri", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "mula sa “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "mula saanman", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "maliban na lang kung", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "kahit na", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statikong filter {{filter}} sa:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Hindi mahanap ang statikong filter sa mga kasalukuyang ipinapatupad na listahan ng mga filter", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Awtomatikong itatapon ang mga entry sa talaan na hindi nakakasunod sa lahat ng mga kondisyon sa ibaba:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Panatilihin ang mga entry mula sa huling {{input}} (na mga) minuto", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Panatilihin ang hanggang sa {{input}} page load kada tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Panatilihin ang hanggang sa {{input}} entry kada tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Gumamit ng {{input}} (na mga) linya kada entry sa mode na pinalaki patayo", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Itago ang mga hanay:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Oras", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/patakaran", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Konteksto", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Pagkapartido", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Listahan", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Talahanayan", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plain", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Buksan", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Gumawa ng bagong ulat sa Github", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Maghanap ng katulad ng ulat sa GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentasyon", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Basahin ang dokumentasyon sa uBlock/wiki upang matuto tungkol sa lahat ng mga feature ng uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Mga tanong at suporta", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Makakapagtanong at sasagutin ka, o makakahingi ka ng higit pang tulong sa subreddit na /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Mga problema sa filter/may problema sa website", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Iulat ang mga problema sa filter sa iilang mga website sa issue tracker ng uBlockOrigin/uAssets. Kailangan mo ng account sa GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Mahalaga: Upang maiwasan ang mga problema sa ilang mga website, iwasang gumamit ng iba pang mga katulad na pangharang sa content kasabay ng uBlock Origin.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tip: Siguraduhing updated ang listahan mo ng mga filter. Gamitin mo ang talaan upang ayusin ang mga problemang naidudulot ng ilang mga filter.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Mag-ulat ng problema", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Iulat ang mga problema ng mismong uBlock Origin sa issue tracker ng uBlockOrigin/uBlock-issues. Kailangan mo ng account sa GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Impormasyon para sa Pag-aayos ng Problema", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Nasa ibaba ang mga teknikal na impormasyon na maaaring makatulong sa mga volunteer na tumutulong masolusyonan ang problema mo.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Mag-ulat ng problema ng filter", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Siguraduhing wala pang ibang nakakapag-ulat ng problema mo upang hindi bahain ng trabaho ang mga volunteer.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Ang listahan ng pangsala ng kontent ay araw-araw binabago at dinadag-dagan. Siguruhin na ang iyong isyu ay hindi pa napauukulan sa mga pinakabagong update sa listahan ng pangsala. ", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Kumpirmahin na nanatili ang isyu pagkatapos i-reload ang nagkaproblema na pahina ng web.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address ng web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Ang web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pumili rito --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Nagpapakita ng mga ad o mga tira-tira ng ad", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "May overlay o iba pang mga panggulo", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Nade-detect ang uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "May mga problema sa pagkapribado", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Nasisira kung umaandar ang uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Kung anu-anong mga tab o window ang binubuksan", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Patungo sa badware o phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Markahan bilang hindi dapat tinitignan sa pook-trabahuan (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Patakaran sa pagkapribado", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Talaan ng mga pagbabago", + "description": "" + }, + "aboutCode": { + "message": "Source code (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Mga nag-ambag", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Source code", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Mga pagsasalin", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Listahan ng mga filter", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Mga panlabas na dependency (angkop sa GPLv3)", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Naka-host sa mga CDN na ito ang mga listahan ng mga filter ng uBO:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Random na pumipili ng CDN ang uBO kung may listahan ng mga filter na kailangang i-update", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "I-back up sa file…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-backup-ko_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Ibalik mula sa file…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "I-reset sa mga default na setting…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Papalitan ng datos na binack-up noong {{time}} ang mga setting mo, at magre-restart ang uBlock₀.\n\nPayagang palitan ng naka-back up na data ang kasalukuyan mong mga setting?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Hindi mabasa o invalid ang datos", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Tatanggalin lahat ng mga setting mo, at magre-restart ang uBlock₀.\n\nI-reset ang uBlock₀ sa default na mga setting?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Error sa network: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subaybayan", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "isang minuto ang nakalipas", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} (na) mga minuto ang nakalipas", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "isang oras ang nakalipas", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} (na) mga oras ang nakalipas", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "isang araw ang nakalipas", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} (na) mga araw ang nakalipas", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Ipakita ang Dashboard", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Ipakita ang Talaan", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "hindi umaandar", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Hinarang ang pahina", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "Hinarang ng uBlock Origin ang sumusunod na pahina sa paglo-load:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Dahil sa sumusunod na filter:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "kung walang mga parameter", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Nahanap sa:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Bumalik", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Isarado ang window na ito", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Huwag na akong balaan ulit tungkol sa site na ito", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Patayin ang striktong pagharang para sa {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Pansamantala", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanente", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Tumuloy", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Nais nitong website na dalhin ka sa iss pang site. Kung tutuloy ka, pupunta ka sa: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "I-export sa imbakan sa cloud", + "description": "tooltip" + }, + "cloudPull": { + "message": "Mag-export mula sa imbakan sa cloud", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Mag-export mula sa imbakan sa cloud at ihalo sa mga kasalukuyang setting", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Itong pangalan ng device:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Babala! Mag-ingat kung babaguhin mo ang mga advanced na setting.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "I-submit", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Ilapat ang mga pagbabago", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Ibalik", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "(na) mga byte", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Harangin ang elemento sa frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subaybayan ang listahan ng filter…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Pansamantalang payagan ang mga malalaking elemento ng media", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Tingnan ang source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Magsulat ng shortcut", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Paandarin/patayin ang naka-lock na pagso-scroll", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopyahin sa clipboard", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Piliin lahat", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Paandarin/patayin ang kosmetikong pagfi-filter", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Paganahin ang JavaScript ", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Babaan ang lebel ng pagharang", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Nagamit na imbakan: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Pindutin upang i-load", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Hindi nakapagsala ng maayos nung binuksan ang browser. I-reload ang pahina upang masiguro ang tamang proseso ng pagsasala.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Dapat mahuli ang entry na ito", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/fr/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/fr/messages.json new file mode 100644 index 00000000..f8bdff4d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/fr/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Un bloqueur de nuisances efficace, qui ménagera votre processeur et votre mémoire vive.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Tableau de bord", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Attention, vous avez des changements non enregistrés !", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Rester ici", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorer", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Paramètres", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Listes de filtres", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Mes filtres", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Mon filtrage dynamique", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Sites Web fiables", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Raccourcis", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Journal des requêtes réseau", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "À propos", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Support", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Visionneuse d'éléments", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Paramètres avancés", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Clic : Désactiver/Activer uBlock₀ pour ce site.\n\nCtrl+clic : Désactiver uBlock₀ uniquement sur cette page.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Cliquez pour désactiver uBlock₀ pour ce site\n\nCtrl+Clic pour désactiver uBlock₀ uniquement pour cette page", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Cliquez pour activer uBlock₀ pour ce site", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "Requêtes bloquées", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "sur cette page :", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}}, soit {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "depuis toujours :", + "description": "English: since install" + }, + "popupOr": { + "message": "soit", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Bloqués sur cette page", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Bloqués depuis l'installation", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domaines connectés", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Ouvrir le Tableau de bord", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Entrer en mode Zappeur d'élément", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Entrer en mode Sélecteur", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Ouvrir le journal des requêtes", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Rapporter un problème sur ce site Web", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Activer/Désactiver le blocage des fenêtres pop-ups pour ce site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Cliquez pour bloquer toutes les pop-ups de ce site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Cliquez pour cesser de bloquer toutes les pop-ups de ce site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Bloquer/Autoriser le chargement d'éléments médias à taille plus importante pour ce site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Cliquez pour bloquer les médias de grande taille sur ce site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Cliquez pour cesser de bloquer les médias de grande taille sur ce site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Activer/Désactiver le filtrage esthétique pour ce site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Cliquez pour désactiver le filtrage esthétique sur ce site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Cliquez pour activer le filtrage esthétique sur ce site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Autoriser/Bloquer le téléchargement des polices d'écriture distantes pour ce site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Cliquez pour bloquer les polices d'écriture distantes sur ce site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Cliquez pour cesser de bloquer les polices d'écriture distantes sur ce site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Cliquez pour désactiver JavaScript sur ce site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Cliquez pour cesser de désactiver JavaScript sur ce site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Fenêtres pop-ups", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Médias de grande taille", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filtrage esthétique", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Polices d'écriture distantes", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Plus", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Moins", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Règles globales : Cette colonne concerne des règles qui s'appliquent partout.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Règles locales : Cette colonne concerne des règles qui ne s'appliquent que sur le site actuellement visité.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Cliquez pour rendre les changements opérés permanents.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Cliquez pour annuler les changements opérés.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "Tout", + "description": "" + }, + "popupImageRulePrompt": { + "message": "Images", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Tierce-partie", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/Images de tierce-partie", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "Scripts embarqués", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Scripts du domaine de la page", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Scripts de tierce-partie", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Cadres de tierce-partie", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "Domaines connectés", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} sur un total de {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "cadre", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Créer", + "description": "English: Create" + }, + "pickerPick": { + "message": "Cibler", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Quitter", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Aperçu", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filtres de réseau", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filtres esthétiques", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Clic, Ctrl-clic", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Bloquer l'élément", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Cacher les espaces réservés aux éléments bloqués", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Afficher le nombre de requêtes bloquées sur l'icône", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Désactiver les infobulles", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Utiliser le menu contextuel si possible", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Mode Daltonien", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Apparence", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Thème", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Couleur d'accentuation personnalisée", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Activer le stockage des paramètres dans le nuage", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Je suis un utilisateur/une utilisatrice avancé(e)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Désactiver la prédiction des actions sur le réseau (afin d'empêcher toute connexion pour les requêtes réseau bloquées)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Désactiver l'audit hyperlien", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Empêcher la fuite des adresses IP locales via WebRTC", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Comportement par défaut", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Ces comportements par défaut peuvent être remplacés au cas par cas", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Désactiver le filtrage esthétique", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Bloquer les éléments médias d'une taille supérieure à {{input}} Ko", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Bloquer les polices d'écriture distantes", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Désactiver JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Bloquer les rapports CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Révéler les noms canoniques", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avancé", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Fonctionnalités convenant uniquement aux utilisateurs avancés", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "Paramètres avancés", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Date de la dernière restauration :", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Date de la dernière sauvegarde :", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} filtre(s) réseau et {{cosmeticFilterCount}} filtre(s) esthétique(s) sont actuellement en vigueur :", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} utilisé(s) sur un total de {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Mettre à jour les listes de filtres sélectionnées automatiquement", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Mettre à jour maintenant", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Vider tous les caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Utiliser en plus les règles esthétiques", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Les filtres esthétiques servent à cacher des éléments d'une page Web considérés comme une nuisance visuelle, et qui ne peuvent pas être bloqués par le filtrage réseau basé sur les requêtes.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorer les filtres esthétiques génériques", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Les filtres esthétiques génériques sont des filtres esthétiques conçus pour être appliqués sur tous les sites Web. Activer cette option réduira l'utilisation en mémoire et en processeur sur les pages Web.\n\nIl est recommandé d'activer ce paramètre sur des appareils à la puissance modeste.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspendre l'activité réseau jusqu'au chargement de toutes les listes de filtres", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Listes prédéfinies d'hôtes à bloquer", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Appliquer", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Intégrées", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Publicités", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Confidentialité", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Protection anti-malware et sécurité", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widgets de réseaux sociaux", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Bannières de cookie", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Nuisances", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Tout usage", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Régions, langues", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Vos propres listes", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importer", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Une adresse Web par ligne. Les adresses Web invalides seront ignorées sans avertissement.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Obsolète", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "Voir le contenu", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Dernière mise à jour effectuée : {{ago}}\nCliquez pour forcer la mise à jour", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Mise à jour en cours…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Une erreur réseau a empêché la mise à jour de la ressource.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Il est recommandé de ne pas ajouter de filtres en provenance de sources non fiables.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Activer mes filtres personnalisés", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Faire confiance aux filtres personnalisés", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importer", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exporter", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "mes-filtres-statiques-ublock_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Appliquer", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Règles permanentes", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Règles temporaires", + "description": "header" + }, + "rulesRevert": { + "message": "Rétablir", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Appliquer", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Éditer", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Enregistrer", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Annuler", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importer à partir du fichier…", + "description": "" + }, + "rulesExport": { + "message": "Exporter vers un fichier", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "mes-regles-de-filtrage-dynamique-ublock_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Liste de vos règles de filtrage dynamique", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Syntaxe : source destination type action (Documentation complète en anglais)", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Trier :", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Type de règle", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Source", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destination", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Les directives de site de confiance indiquent sur quelles pages Web uBlock Origin devrait être désactivée. Une entrée par ligne.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importer", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exporter", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "mes-sites-fiables-ublock-{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Appliquer", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Type", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domaine", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtre", + "description": "English: Filter" + }, + "logAll": { + "message": "Tout", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "En coulisses", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Onglet courant", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Recharger le contenu de l'onglet", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Activer/Désactiver l'Inspecteur DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Activer/Désactiver le panneau pop-up", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "Page Wiki uBlock Origin : Le journal", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Vider le journal", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Mettre en pause le journal (désactive toutes les données entrantes)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Terminer la mise en pause du journal", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Activer le filtrage du journal", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "Filtrer le contenu du journal", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Options de filtrage du journal", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Pas", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "dynamique", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "bloquée", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "autorisée", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "Modifié", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Domaine de la page", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Tierce-partie", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Détails", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtre", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Liste de filtres", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Règle", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Contexte", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Contexte racine", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Niveau de partie", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Type", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "Lien", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Règle de lien", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Contexte :", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Type :", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Filtre statique", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} les requêtes réseau de {{type}} {{br}} dont l'adresse Web correspond à {{url}} {{br}} qui provient du domaine {{origin}}, {{br}}{{importance}} il y a un filtre d'exception correspondant", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Bloquer", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Autoriser", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "tout type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "\"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "de n'importe où", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "sauf quand", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "même s'", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Filtre statique {{filter}} trouvé dans :", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Filtre statique introuvable parmi les listes de filtre actives", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Les entrées du journal ne remplissant aucune des trois conditions ci-dessous seront automatiquement abandonnées :", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Conserver les entrées des {{input}} dernières minutes", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Préserver {{input}} chargements de page maximum par onglet", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Préserver {{input}} entrées maximum par onglet", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Utiliser {{input}} lignes par entrée dans le mode développé verticalement", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Cacher les colonnes :", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Heure", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtre/Règle", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Contexte", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Niveau de partie", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Liste", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tableau", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Brut", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Ouvrir", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Créer un nouveau rapport sur GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Trouver des rapports similaires sur GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentation", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Lisez la documentation à uBlock/wiki pour apprendre toutes les fonctionnalités d'uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Questions et support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Les réponses aux questions et autres formes d'assistance sont fournies dans le subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problèmes de filtrage/Site Web non fonctionnel", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Rapportez les problèmes de filtrage avec des sites Web spécifiques dans le suivi des problèmes. Nécessite un compte GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important : Evitez d'utiliser des bloqueurs similaires à uBlock Origin en même temps que ce dernier, car cela peut causer des problèmes de filtrage sur certains sites Web.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Astuces : Assurez-vous que vos listes de filtres sont à jour. Le journal des requêtes est l'outil principal pour diagnostiquer des problèmes liés au filtrage.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Rapporter un bogue", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Rapportez des problèmes avec l'extension uBlock Origin elle-même dans le suivi des problèmes. Nécessite un compte GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informations de dépannage", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Veuillez trouver ci-dessous les informations techniques pouvant aider les bénévoles à vous assister dans la résolution de problème.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Rapporter un problème de filtre", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Pour éviter d'encombrer les contributeurs avec des rapports en double, veuillez vérifier que le problème n'a pas déjà été rapporté.\nNote : Cliquer sur le bouton entraînera l'envoi de la page d'origine à GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Les listes de filtres sont actualisées tous les jours. Assurez-vous que votre problème n'ait pas déjà été résolu dans les listes de filtres les plus récentes.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Vérifiez que le problème persiste après avoir rechargé la page Web problématique.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adresse de la page Web :", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "La page Web…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Choisir un type --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "affiche des publicités ou des résidus de publicité", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "a une surcouche ou d'autres nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "détecte uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "a des problèmes de confidentialité", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "ne fonctionne pas correctement quand uBlock Origin est activée", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "ouvre des onglets ou fenêtres indésirables", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "conduit à/redirige vers des logiciels malveillants, du hameçonnage", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Marquer le site Web en tant que \"NSFW\" (\"Not Safe For Work\", c'est-à-dire pour public averti/inapproprié au travail)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Politique de confidentialité", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Journal des changements", + "description": "" + }, + "aboutCode": { + "message": "Code Source (Licence GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Contributeurs", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Code source", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Traductions", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Listes de filtres", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Dépendances externes (compatibles GPLv3) :", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Les propres listes de filtres d'uBO sont hébergées gratuitement sur les RDC suivants :", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Un RDC choisi aléatoirement est utilisé lorsqu'une liste de filtres doit être mise à jour.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Exporter vers un fichier", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "mes-donnees-ublock_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restaurer depuis un fichier…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Réinitialiser les réglages", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Vos paramètres seront remplacés par les données sauvegardées le {{time}}, puis uBlock₀ redémarrera.\n\nProcéder à l'importation ?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Les données ne peuvent être lues ou sont invalides", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Vos paramètres seront effacés, puis uBlock₀ redémarrera.\n\nProcéder à la réinitialisation des paramètres ?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Erreur réseau : {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Souscrire", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "Il y a une minute", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "Il y a {{value}} minutes", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "Il y a une heure", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "Il y a {{value}} heures", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "Il y a un jour", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "Il y a {{value}} jours", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Afficher le Tableau de bord", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Voir le Journal", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "Arrêt", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Page bloquée", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock₀ a empêché le chargement de la page suivante :", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "À cause du filtre suivant :", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "sans paramètres", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Trouvé dans :", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Retour", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Fermer cette fenêtre", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Ne plus m'avertir à propos de ce site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Désactiver le blocage strict du domaine {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "De manière temporaire", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "De manière définitive", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Poursuivre", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "La page bloquée souhaite rediriger vers un autre site. Si vous choisissez de continuer, vous vous rendrez à l'adresse suivante : {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Motif du blocage :", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malveillant", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Pisteur", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Douteux", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exporter vers le stockage dans le nuage", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importer depuis le stockage dans le nuage", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importer depuis le stockage dans le nuage et fusionner avec les réglages actuels", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Nom de ce périphérique :", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Attention, modifiez ces paramètres avancés à vos risques et périls.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Appliquer", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Appliquer", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Rétablir", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "octets", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Bloquer l'élément dans le cadre", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Souscrire à la liste de filtres", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Autoriser temporairement le chargement d'éléments médias à taille plus importante", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Voir la source…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Saisir un raccourci", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Verrouiller/Déverrouiller le défilement", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copier vers le presse-papier", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Sélectionner tout", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Commuter le filtrage esthétique", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Commuter JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Détendre le mode de blocage", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Espace de stockage utilisé : {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "Ko", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "Mo", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "Go", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Cliquez pour charger", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Erreurs : {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Échec du filtrage au lancement du navigateur. Rechargez la page pour assurer un filtrage correct.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/fy/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/fy/messages.json new file mode 100644 index 00000000..6030a4d7 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/fy/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock₀", + "description": "extension name." + }, + "extShortDesc": { + "message": "Einlik, in effisjinte adblocker. Brûkt hast gjin prosessorkrêft of ûnthâld.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dashboerd", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Warskôging! Net bewarre wizigingen", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Bliuwe", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Negearje", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Ynstellingen", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filterlisten", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Myn filters", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Myn rigels", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Fertroude websites", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Fluchtoetsen", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Lochboek", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Oer", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Stipe", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ – Middelenviewer", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Avansearre ynstellingen", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klikke: uBlock₀ foar dizze website yn-/útskeakelje.\n\nCtrl+klikke: uBlock₀ inkeld foar dizze side útskeakelje.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Klik om uBlock₀ foar dizze website út te skeakeljen.\n\nCtrl+klik om uBlock₀ inkeld foar dizze side út te skeakeljen.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klik om uBlock₀ foar dizze website yn te skeakeljen.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "blokkearre fersiken", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "op dizze side", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} fan {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "sûnt ynstallaasje", + "description": "English: since install" + }, + "popupOr": { + "message": "of", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokkearre op dizze side", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blokkearre sûnt ynstallaasje", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Ferbûne domeinen", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Dashboerd iepenje", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Elemintwiskmodus iepenje", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Elemintkiesmodus iepenje", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Lochboek iepenje", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "In probleem op dizze website melde", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Alle pop-ups foar dizze website yn-/útskeakelje", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klik om alle pop-ups op dizze website te blokkearjen", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klik om alle pop-ups op dizze website net mear te blokkearjen", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Grutte media-eleminten foar dizze website yn-/útskeakelje", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klik om grutte media-eleminten op dizze website te blokkearjen", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klik om grutte media-eleminten op dizze website net mear te blokkearjen", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Kosmetyske filters foar dizze website yn-/útskeakelje", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klik om kosmetyske filters op dizze website út te skeakeljen", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klik om kosmetyske filters op dizze website yn te skeakeljen", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Blokkearjen fan eksterne lettertypen foar dizze website yn-/útskeakelje", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klik om eksterne lettertypen op dizze website te blokkearjen", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klik om eksterne lettertypen op dizze website net mear te blokkearjen", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klik om JavaScript op dizze website út te skeakeljen", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klik om JavaScript op dizze website net mear út te skeakeljen", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Pop-upfinsters", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Grutte media-eleminten", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kosmetyske filters", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Eksterne lettertypen", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Mear", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Minder", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globale rigels: dizze kolom is foar rigels dy't op alle websites fan tapassing binne.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokale rigels: dizze kolom is foar rigels dy't allinnich op de aktuele website fan tapassing binne.\nLokale rigels hawwe foarrang op globale rigels.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Klik om jo wizigingen permanint te meitsjen.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klik om jo wizigingen werom te draaien.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "alles", + "description": "" + }, + "popupImageRulePrompt": { + "message": "ôfbyldingen", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "fan tredden", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/ôfbyldingen fan tredden", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "ynline skripts", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "skripts fan de websites sels", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "skripts fan tredden", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "frames fan tredden", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "ferbûne domeinen", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} fan {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Ferzje", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Meitsje", + "description": "English: Create" + }, + "pickerPick": { + "message": "Kieze", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Slute", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Foarbyld", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Netfilters", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kosmetyske filters", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Ctrl-klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Elemint blokkearje…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Tydlike oantsjutting fan blokkearre eleminten ferstopje", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "It tal blokkearre oanfragen op it ikoan toane", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Tooltips útskeakelje", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Wêr mooglik gebrûk meitsje fan it kontekstmenu", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Kleureblynfreonlik", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Foarmjouwing", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Oanpaste aksintkleur", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Stipe foar cloudûnthâld ynskeakelje", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Ik bin in betûfte brûker (Lês dit earst)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Pre-fetching útskeakelje (om eltse ferbining foar blokkearre netwurkfersiken foar te kommen)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Auditing fan keppelingen útskeakelje", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "It lekken fan it lokale IP-adres fia WebRTC opkeare", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Standertgedrach", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Dizze standertgedragingen kinne foar eltse website oerskreaun wurde", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Kosmetyske filters útskeakelje", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Media-eleminten grutter as {{input}} KB blokkearje", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Eksterne lettertypen blokkearje", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "JavaScript útskeakelje", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP-rapporten blokkearje", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Kanonike nammen toane", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avansearre", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Allinnich foar technyske brûkers geskikte funksjes.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "avansearre ynstellingen", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Lêste werstel:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Lêste reservekopy:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} netwurkfilters + {{cosmeticFilterCount}} kosmetyske filters fan:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} fan de {{total}} brûkt", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Filterlisten automatysk fernije.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "No fernije", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Alle buffers leegje", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Kosmetyske filters ynlêze en tapasse.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Kosmetyske filters binne foar it ferstopjen fan eleminten yn in webside dy't fisueel steurend wêze kinne en net troch de op netwurkoanfragen basearre filter-masinen blokkearre wurde kinne.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Algemiene kosmetyske filters negearje", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Algemiene kosmetyske filters binne dy kosmetyske filters dy't bedoeld binne om op alle websites tapast te wurden. It ynskeakeljen fan dizze opsje eliminearret de oan websiden tafoege ûnthâld- en cpu-oerhead as gefolch fan it ferwurkjen fan algemiene kosmetyske filters.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Netwurkaktiviteit ûnderbrekke oant alle filterlisten laden binne", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "List fan blokkearre hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Wizigingen tapasse", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Lokaal", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Advertinsjes", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privacy", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Malwaredomeinen", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sosjale widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookiemeldingen", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Ungeriif", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multifunksjoneel", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Gebieden, talen", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Oanpast", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Ymportearje…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Ien URL per rigel. Unjildige URL's wurde stil negearre.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Ferâldere.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "ynhâld werjaan", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Lêste fernijing: {{ago}}.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Fernijt…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "In netwurkflater hat opkeard dat de boarne bywurke waard.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Foegje gjin filters fan ûnbekende boarnen ta.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Myn oanpaste filters ynskeakelje", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Oanpaste filters dy’t fertrouwen fereaskje tastean", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Ymportearje en tafoegje", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Eksportearje", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "myn-ublock-statyske-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Wizigingen tapasse", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Permaninte rigels", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Tydlike rigels", + "description": "header" + }, + "rulesRevert": { + "message": "Tebeksette", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Tapasse", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Bewurkje", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Bewarje", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Annulearje", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Ut bestân ymportearje…", + "description": "" + }, + "rulesExport": { + "message": "Nei bestân eksportearje", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "myn-ublock-dynamyske-rigels_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "List fan jo dynamyske filterrigels.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rigelsyntaks: boarne bestimming type aksje (folsleine dokumintaasje).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sortearje:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Rigeltype", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Boarne", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Bestimming", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "De fertroude-website-ynstruksjes skriuwe foar op hokker websiden uBlock Origin útskeakele wurde moat. Ien fermelding per rigel.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Ymportearje en tafoegje", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Eksportearje", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "myn-ublock-whitelist_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Wizigingen tapasse", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Type", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domein", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Alles", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Efter de skermen", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Aktuele ljepblêd", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "De ljepblêdynhâld fernije", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "De DOM-inspector yn-/útskeakelje", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "It pop-uppaniel yn-/útskeakelje", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin-wiki: de logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Logger wiskje", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Lochboek pauzearje (alle ynkommende gegevens negearje)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Lochboek ferfetsje", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Loggerfiltering yn-/útskeakelje", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "loggerynhâld filterje", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opsjes foar loggerfiltering", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Net", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "ôfwikseljend", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokkearre", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "tastien", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "oanpast", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "aktuele domein", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "fan tredden", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Details", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filterlist", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Rigel", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontekst", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Haadkontekst", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "1e/3e partij", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Type", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Dynamyske URL-filtering", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontekst:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Type:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statysk filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} netwurkfersiken fan {{type}} {{br}}wêrfan de URL lyk is oan {{url}} {{br}}en dy komme fan {{origin}},{{br}}{{importance}} der is in oerienkomstich útsûnderingsfilter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokkearje", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Tastean", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type ‘{{type}}’", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "elts type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "fan ‘{{origin}}’", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "fan oeral wei", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "útsein as", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "sels as", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statysk filter {{filter}} fûn yn:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statysk filter koe net yn ien fan de op dit stuit ynskeakele filterlisten fûn wurde", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Loggerfermeldingen dy't net oan alle trije fan de ûndersteande betingsten foldogge, wurde automatysk negearre:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Fermeldingen fan de lêste {{input}} minuten behâlde", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Maksimaal {{input}} sideladingen per ljepblêd behâlde", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Maksimaal {{input}} fermeldingen per ljepblêd behâlde", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "{{input}} rigels per fermelding yn fertikaal útklappe modus brûke", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Kolommen ferstopje:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Tiid", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/rigel", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Kontekst", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} 1e/3e partij", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "List", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabel", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plat", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Iepenje", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Nije melding meitsje", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Soartgelikense meldingen sykje", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumintaasje", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Lês de dokumintaasje op uBlock/wiki foar mear ynfo oer alle funksjes fan uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Fragen en stipe", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Antwurden op fragen en oare soarten stipe wurde levere op de subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filterproblemen/website wurket net", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Meld filterproblemen mei spesifike websites op de probleemtracker. Fereasket in GitHub-account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Wichtich: mij it gebrûk fan oare adblockers foar itselde doel yn kombinaasje mei uBlock Origin, omdat dit op bepaalde websites problemen jaan kin.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: soargje derfoar dat jo filterlisten by-de-tiid binne. De logger is it primêre helpmiddel foar it analysearjen fan filterrelatearre problemen.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Bugmelding", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Meld problemen mei uBlock Origin sels by de probleemtracker. Fereasket in GitHub-account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Probleemoplossingsynformaasje", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Hjirûnder stiet technyske ynformaasje dy't handich wêze kin wannear't frijwilligers jo probearje te helpen by it oplossen fan in probleem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "In filterprobleem melde", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Kontrolearje oft it probleem net earder meld is om foar te kommen dat frijwilligers mei dûbele meldingen belêst wurde.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filterlisten wurde elke dei bywurke. Kontrolearje oft jo probleem net al yn de meast resinte filterlisten ferholpen is.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Kontrolearje oft it probleem noch hieltyd bestiet nei opnij laden fan de problematyske webside.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adres fan de webside:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "De webside...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Meitsje in kar --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Toant advertinsjes of restanten", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Hat oerlapingen of oare ûngemakken", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detektearret uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Hat privacy-relatearre problemen", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Wurket net as uBlock Origin ynskeakele is", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Iepenet net-winske ljepblêden of finsters", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Liedt ta badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "De webside labelje as ‘NSFW’ (‘Not Safe For Work’)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Privacybelied", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Wizigingenlochboek", + "description": "" + }, + "aboutCode": { + "message": "Boarnekoade (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Meiwurkers", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Boarnekoade", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Oersettingen", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filterlisten", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Eksterne ôfhinklikheden (GPLv3-kompatibel):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO’s eigen filterlisten binne fergees beskikber op de folgjende CDN’s:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "As in filterlist bywurke wurde moat, wurdt samar in CDN brûkt", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Reservekopy nei bestân meitsje…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "myn-ublock-reservekopy_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Ut bestân werstelle…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Nei de standertynstellingen weromsette…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Al jo ynstellingen sille oerskreaun wurde mei de reservekopygegevens fan {{time}} en uBlock₀ sil werstart wurde.\n\nBinne jo wis dat jo alle besteande ynstellingen oerskriuwe wolle mei de reservekopygegevens?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "De gegevens koene net lêzen wurde of binne ûnjildich", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Al jo ynstellingen sille fuortsmiten wurde, wêrnei uBlock₀ werstart.\n\nYnstellingen dochs werstelle nei de standertwearden?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Netwurkflater: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Abonnearje", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "in minút lyn", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minuten lyn", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "in oere lyn", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} oeren lyn", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "in dei lyn", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} dagen lyn", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Dashboerd toane", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Lochboek toane", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "útskeakele", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Side blokkearre", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin hat it laden fan de folgjende side opkeard:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Fanwege it folgjende filter", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "sûnder parameters", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Fûn yn:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Tebekgean", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Dit finster slute", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "My net mear warskôgje oer dizze website", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Strikte blokkearring foar {{hostname}} útskeakelje", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Tydlik", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanint", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Trochgean", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "De blokkearre side wol nei in oare website trochferwize. As jo fierder gean, wurdt de folgjende side oproppen: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reden:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "kweawillich", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "berucht", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Eksportearje nei cloudûnthâld", + "description": "tooltip" + }, + "cloudPull": { + "message": "Ymportearje fan cloudûnthâld", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Ut cloudopslach ymportearje en gearfoegje mei aktuele ynstellingen", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Apparaatnamme:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Warskôging! Wizigje dizze avansearre ynstellingen op eigen risiko.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Ferstjoere", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Wizigingen tapasse", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Tebeksette", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Elemint yn frame blokkearje...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Abonnearje op filterlist...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Grutte media-eleminten tydlik tastean", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Boarnekoade besjen…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Typ in fluchtoets", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Beskoattele skowe yn-/útskeakelje", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopiearje nei klamboerd", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Alles selektearje", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Kosmetyske filters yn-/útskeakelje", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript yn-/útskeakelje", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Blokkearringsmodus beheine", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Brûkte ûnthâldromte {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klik om te laden", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Flaters: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Koe net goed filterje by starten fan browser.\nFernij de side foar in goede filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/gl/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/gl/messages.json new file mode 100644 index 00000000..25bd3698 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/gl/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Ó fin, un bloqueador eficiente que non chupa toda a memoria e o procesador.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Panel de control", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Aviso! Non gardaches os cambios", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Non saír", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorar", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Configuración", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filtros de terceiros", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Os meus filtros", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "As miñas regras", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Sitios de confianza", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Atallos", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Rexistro de peticións de rede", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Sobre", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Axuda", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Visor de elementos", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Configuración avanzada", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Click: desactivar/activar o uBlock₀ neste sitio.\n\nCtrl+click: desactivar o Block₀ só nesta páxina.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Click: desactivar/activar o uBlock₀ neste sitio.\n\nCtrl+click: desactivar o Block₀ só nesta páxina.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Click: activar o uBlock₀ neste sitio.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "peticións bloqueadas", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "nesta páxina", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ou {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "dende a instalación", + "description": "English: since install" + }, + "popupOr": { + "message": "ou", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Bloqueado nesta páxina", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Bloqueado desde a instalación", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Dominios conectados", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Fai click para abrir o panel de control", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Activar o modo \"eliminación de elementos\"", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Ir ó modo do selector de elementos", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Ir ó rexistro de peticións", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Informar dun problema nesta web", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Activar todas as xanelas emerxentes nesta páxina", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Click: bloquear todos os elementos emerxentes neste sitio", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Click: deixar de bloquear todos os elementos emerxentes neste sitio", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Activar/desactivar o bloqueo de elementos multimedia grandes para este sitio", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Click: bloquear todos elementos multimedia de gran tamaño neste sitio", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Click: deixar de bloquear todos elementos multimedia de gran tamaño neste sitio", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Activar o filtrado cosmético nesta páxina", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Click: desactivar filtrado cosmético neste sitio", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Click: activar filtrado cosmético neste sitio", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Activar o bloqueo de fontes remotas para esta páxina", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Click: bloquear fontes remotas neste sitio", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Click: deixar de bloquear fontes remotas neste sitio", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Preme para desactivar JavaScript nesta web", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Preme para volver activar JavaScript nesta web", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Ventás emerxentes", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Elementos multimedia grandes", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filtrado cosmético", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Tipografías remotas", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Máis", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Menos", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Reglas globais: esta columna é para as reglas que afectan a todos os sitios.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Reglas locais: esta columna é para as reglas que afectan só a un sitio.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Fai click para gardar os cambios.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Fai click para desfacer os cambios.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "todo", + "description": "" + }, + "popupImageRulePrompt": { + "message": "imaxes", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "de terceiros", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "Imaxes/css de terceiros", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "Scripts embebidos", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Scripts de dominio", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Scripts de terceiros", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Frames de terceiros", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "dominios conectados", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} de {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versión", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "marco", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Crear", + "description": "English: Create" + }, + "pickerPick": { + "message": "Escoller", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Saír", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Vista previa", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filtros da rede", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filtros cosméticos", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Click, Ctrl-click", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Bloquear elemento…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Agochar marcadores de posición dos elementos bloqueados", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Amosar o número de peticións bloqueadas no icono", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Desactivar axuda emerxente", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Empregar o menú contextual cando sexa posible", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Accesible para daltónicos", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Aparencia", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Decorado", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Cor destacada personalizada", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Activar soporte para almacenamento na nube", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Son unha persoa experta", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Desactivar a precarga de sitios (prevén calquera conexión para peticións de red bloqueadas)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Desactivar a auditoría de hiperligazóns/señais (beacons)", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Impedir que o WebRTC revele os enderezos IP locais", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Comportamento predefinido", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Estes comportamentos predefinidos poden ser modificados para cada páxina en particular", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Desactivar o filtrado cosmético", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Bloquear elementos audiovisuais maiores de {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Bloquear fontes remotas", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Desactivar JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Bloquear reportes CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Descubrir nomes canónicos", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avanzadas", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Ferramentas orientadas a persoas con coñecemento técnico", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "configuración avanzada", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Última recuperación:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Última copia de seguridade:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} filtros de rede + {{cosmeticFilterCount}} filtros cosméticos:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "Empregados {{used}} de {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Actualización automática das listas de filtros.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Actualizar agora", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Vaciar todas as cachés", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analizar e aplicar filtros cosméticos.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

Esta opción permitirache a análise e a aplicación de “filtros de ocultación de elementos” compatibles co Adblock Plus. \nEstes filtros sonche sobre todo cosméticos, serven para agochar elementos visualmente molestos nunha determinada páxina, non sendo posible a súa eliminación cun motor de bloqueo baseado en peticións.

Activar esta opción incrementará o uso de memoria do uBlock₀.

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorar os filtros cosméticos xenéricos", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

Os filtros cosméticos xenéricos estanche pensados para seren aplicados en todas as páxinas.

Aínda que o uBlock₀ os xestiona dun xeito eficiente, algúns deles precisan de altas cantidades de memoria e sobreemprego da CPU, especialmente nas páxinas grandes e nas máis duradeiras.

Activar esta opción suprimirá os requerimentos de memoria e CPU por causa destes filtros cosméticos xenéricos, así como reducirá a cantidade de memoria ocupada polo uBlock₀ mesmo.

Recomendámosche activar esta opción sobre todo nos dispositivos menos potentes.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspender actividade da rede ata que se carguen todas as listas de filtrado", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lista dos servidores bloqueados", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Aplicar os cambios", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Local", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Anuncios", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privacidade", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Protección contra malware, seguridade", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widgets sociais", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Avisos de rastro", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Molestias", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multipropósito", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Rexións, linguaxes", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Personalizado", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importar...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Un enderezo por liña. Os enderezos inválidos seranche ignorados.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Desactualizada.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "ver contido", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Última actualización: {{ago}}\nFai click para forzar a actualización.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Actualizando...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Un erro de rede está a impedir que se actualicen os recursos.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Non engadir filtros de fontes non confiables.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Activar os meus filtros personais", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Requerir confiar nos filtros personalizados", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importar e engadir…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exportar…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "o-meu-ublock-filtros-estaticos_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Aplicar cambios", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Regras permanentes", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Regras temporais", + "description": "header" + }, + "rulesRevert": { + "message": "Reverter", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Estabelecer", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Editar", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Gardar", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Descartar", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importar dun arquivo...", + "description": "" + }, + "rulesExport": { + "message": "Exportar a un ficheiro…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "o-meu-ublock-regras-dinamicas_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Listado coas túas regras de filtrado dinámico.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Sintaxe das regras: orixe destino tipo acción (documentación completa).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Orde:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Tipo de regra", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Orixe", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destino", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "As directivas de sitios de confianza indican as páxinas nas que uBlock Origin estará desactivado. Ten unha entrada por cada liña.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importar e engadir…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exportar…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "o-meu-ublock-webs-confiables_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Aplicar os cambios", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tipo", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Dominio", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "Enderezo", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtro", + "description": "English: Filter" + }, + "logAll": { + "message": "Todas", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Peticións ocultas", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Lapela activa", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Recargar contido da pestana", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Activar inspector do DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Activar panel emerxente", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "wiki de uBlock Origin: The logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Baleirar rexistro", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pausar rexistro (desbotar todos os datos de entrada)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Reactivar rexistro", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Activar filtrado do rexistro", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtras as entradas de rexistro", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opcións do filtrado do rexistro", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Non", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "bloqueado", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "permitido", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modificado", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "da orixe", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "de terceiras partes", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detalles", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtrar", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Lista de filtrado", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regra", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Contexto", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Contexto Root", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Orixe do elemento", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tipo", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Filtrado dinámico do enderezo", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Contexto:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tipo:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Filtrado estático", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} peticións de rede tipo {{type}} {{br}} nas cales o enderezo contenga {{url}} {{br}}e que teñan como orixe {{origin}},{{br}}{{importance}} haxa un filtro de excepción aplicable.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Bloquear", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Permitir", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "tipo “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "calquera tipo", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "dende “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "dende calquera sitio", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "agás cando", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "aínda cando", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Filtro estático {{filter}}atopado en:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Non atopamos filtro estático {{filter}} en ningunha das listas de filtros activas", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "As entradas no rexistro que non cumpran coas tres condicións inferiores desbotaranse automáticamente:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Manter entradas dos últimos {{input}} minutos", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Manter como máximo {{input}} cargas da páxina por pestana", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Manter como máximo {{input}} entradas por pestana", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Usar {{input}} liñas por entrada en modo vertical despregado", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Agochar columnas:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Hora", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtro/regra", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Contexto", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Orixe", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Lista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Táboa", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plano", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Abrir", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Crear nova denuncia", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Atopar denuncias parecidas", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentación", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Le a documentación en uBlock/wiki para saber máis acerca das ferramentas de uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Preguntas e axuda", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "No subreddit /r/uBlockOrigin hai respostas a preguntas e outro tipo de axuda", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problemas co filtrado/Esta web non funciona", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Informar de problemas co filtrado en sitios web específicos no uBlockOrigin/uAssets issue tracker.Require unha conta en GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Importante: Evitar usar ao mesmo tempo outros bloqueadores semellantes a uBlock Origin, xa que podería causar problemas co filtrado nalgunhas webs en concreto.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Truco: Mira que as listas de filtrado estean actualizadas.The logger é a ferramenta principal para diagnosticar problemas relacionados co filtrado.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Informar de problemas", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Informar de problemas co filtrado en sitios web específicos no uBlockOrigin/uAssets issue tracker.Require unha conta en GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Información para arranxar problemas", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "A información técnica seguinte podería ser útil para que as persoas que intentan axudar poidan resolver o problema.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Informar dun problema co filtrado", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Para evitar a sobrecarga de traballo para as persoas voluntarias con duplicados dos problemas, comproba que aínda non se informou acerca do problema.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "As listas de filtrado actualizanse a diario. Comproba que non fose solucionado coa lista de filtrado máis recente.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Comproba que o problema persiste despois de recargar a web problemática.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Enderezo da páxina web:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "A páxina web...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Escolle unha opción --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Mostra publicidade ou restos dela", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Ten capas sobreimpostas ou elementos molestos", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detecta uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Ten problemas relacionados coa privacidade", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Funciona mal cando teño uBlock Origin activado", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Abre ventás ou páxinas non desexadas", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leva a software malicioso, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Etiqueta a páxina como \"NSFW\" (\"Non é Segura No Traballo\")", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Política de privacidade", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Rexistro de cambios", + "description": "" + }, + "aboutCode": { + "message": "Código fonte (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Colaboradores", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Código fonte", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Traducións", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Listas de filtrado", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Dependencias externas (GPLv3-compatible)", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "As listas de filtrado de uBO están aloxadas gratuitamente nos seguintes servidores CDN:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Escóllese un CDN ao chou cando se precisa actualizar a lista.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Facer copia de seguridade nun arquivo", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-copia-seguridade_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Recuperar desde arquivo...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Restabelecer os axustes por defecto...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Todas as túas preferencias serán rescritas, usando os datos rexistrados no {{time}}, e o uBlock₀ reiniciará. Queres sobrescribir toda a configuración existente empregando os datos da copia de seguridade?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Os datos son inválidos ou non poden ser lidos", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Eliminaranse todas as túas preferencias, e reiniciará o uBlock₀. Queres resetear o uBlock₀ á configuración por defecto?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Erro da rede: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subscribir", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "fai un minuto", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "fai {{value}} minutos", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "fai unha hora", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "fai {{value}} horas", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "fai un día", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "fai {{value}} días", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Amosar no Panel de control", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Amosar o rexistro de peticións da rede", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "desactivado", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Páxina bloqueada", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "O uBlock₀ impediu cargar a seguinte páxina:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Por mor deste filtro:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "sen parámetros", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Atopado en:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Retroceder", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Pechar esta xanela", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Non avisarme máis sobre esta web", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Desactivar o bloqueo estricto en {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporalmente", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanentemente", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceder", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "A páxina bloqueada quere redirixir a outra web. Se elixes continuar vas ir directamente a: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Razón:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Daniña", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Rastrexo", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Mala reputación", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exportar ó almacenamento na nube", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importar dende o almacenamento na nube", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importar dende a nube e combinar coas preferencias actuais", + "description": "tooltip" + }, + "cloudNoData": { + "message": "... ...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "O nome deste dispositivo:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Ollo! Non cambies estas configuracións avanzadas senón sabes ben o que estás a facer.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Enviar", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Aplicar os cambios", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Reverter", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Bloquear elemento no marco...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribirse á lista de filtrado...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Permitir temporalmente os elementos multimedia grandes", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Ver código fonte...", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Introduce un atallo", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Cambiar estado desprazamento", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copiar ao portapapeis", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Seleccionar todo", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Activar filtrado cosmético", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Alternar JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relaxar o modo de bloqueo", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Almacenaxe usada: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Preme para cargar", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Erros: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Non se filtrou correctamente ao inicio do navegador. Recarga a páxina para asegurar un filtrado correcto.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Esta ten que ser a derradeira entrada", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/gu/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/gu/messages.json new file mode 100644 index 00000000..e6640da8 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/gu/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "અંતે, એક કાર્યક્ષમ અવરોધક. સીપીયુ અને મેમરી પર સરળ.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dashboard", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "ચેતવણી! તમારા ફેરફારો સચવાયેલા નથી ", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "અહીં રહો", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "અવગણો", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "સેટિંગ્સ", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "ફિલ્ટર યાદીઓ", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "મારા ફિલ્ટર ", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "મારા નિયમો", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Trusted sites", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Shortcuts", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Logger", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "About", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Support", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Asset viewer", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Advanced settings", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Click to enable uBlock₀ for this site.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "requests blocked", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "on this page", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "since install", + "description": "English: since install" + }, + "popupOr": { + "message": "or", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blocked on this page", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blocked since install", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domains connected", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Open the dashboard", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Enter element zapper mode", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Enter element picker mode", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Open the logger", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Report an issue on this website", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Toggle the blocking of all popups for this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Click to block all popups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Click to no longer block all popups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Toggle the blocking of large media elements for this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Click to block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Click to no longer block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Toggle cosmetic filtering for this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Click to disable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Click to enable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Toggle the blocking of remote fonts for this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Click to block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Click to no longer block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Click to disable JavaScript on this site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Click to no longer disable JavaScript on this site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Pop-up windows", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Large media elements", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Cosmetic filtering", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Remote fonts", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "More", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Global rules: this column is for rules which apply to all sites.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Local rules: this column is for rules which apply to the current site only.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Click to make your changes permanent.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Click to revert your changes.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "all", + "description": "" + }, + "popupImageRulePrompt": { + "message": "images", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3rd-party", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "3rd-party CSS/images", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline scripts", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1st-party scripts", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3rd-party scripts", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3rd-party frames", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domains connected", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} out of {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Create", + "description": "English: Create" + }, + "pickerPick": { + "message": "Pick", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Quit", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Preview", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Network filters", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Cosmetic filters", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Click, Ctrl-click", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Block element…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Hide placeholders of blocked elements", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Show the number of blocked requests on the icon", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Disable tooltips", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Make use of context menu where appropriate", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Color-blind friendly", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Appearance", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Theme", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Enable cloud storage support", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "I am an advanced user", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Disable pre-fetching (to prevent any connection for blocked network requests)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Disable hyperlink auditing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Prevent WebRTC from leaking local IP addresses", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Default behavior", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "These default behaviors can be overridden on a per-site basis", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Disable cosmetic filtering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Block media elements larger than {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Block remote fonts", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Disable JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Block CSP reports", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Advanced", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "advanced settings", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Last restore:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Last backup:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} used out of {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Auto-update filter lists", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Update now", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Purge all caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Parse and enforce cosmetic filters", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignore generic cosmetic filters", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Built-in", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Ads", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privacy", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Malware protection, security", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Annoyances", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multipurpose", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regions, languages", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Custom", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Import…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "One URL per line. Invalid URLs will be silently ignored.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Out of date.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "view content", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Last update: {{ago}}.\nClick to force an update.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Updating…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "A network error prevented the resource from being updated.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Import and append…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Export…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Permanent rules", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Temporary rules", + "description": "header" + }, + "rulesRevert": { + "message": "Revert", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Commit", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Edit", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Save", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Discard", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Import from file…", + "description": "" + }, + "rulesExport": { + "message": "Export to file…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "List of your dynamic filtering rules.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rule syntax: source destination type action (full documentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sort:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Rule type", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Source", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destination", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Import and append…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Export…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Type", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domain", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "All", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tabless", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Current tab", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Reload the tab content", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Toggle the DOM inspector", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Toggle the popup panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: The logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Clear logger", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pause logger (discard all incoming data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Unpause logger", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Toggle logger filtering", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filter logger content", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logger filtering options", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Not", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blocked", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "allowed", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modified", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1st-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3rd-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Details", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filter list", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Rule", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Context", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Root context", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Type", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL rule", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Context:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Type:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Static filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Block", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Allow", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "any type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "from “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "from anywhere", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "except when", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "even if", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Static filter {{filter}} found in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Static filter could not be found in any of the currently enabled filter lists", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Preserve entries from the last {{input}} minutes", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preserve at most {{input}} page loads per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preserve at most {{input}} entries per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Use {{input}} lines per entry in vertically expanded mode", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Hide columns:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Time", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/rule", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "List", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Table", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plain", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Open", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Create new report on GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Find similar reports on GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentation", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Read the documentation at uBlock/wiki to learn about all of uBlock Origin's features.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Questions and support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Bug report", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Troubleshooting Information", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Privacy policy", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Changelog", + "description": "" + }, + "aboutCode": { + "message": "Source code (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Contributors", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Source code", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Translations", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filter lists", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "External dependencies (GPLv3-compatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's own filter lists are freely hosted on the following CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A randomly picked CDN is used when a filter list needs to be updated.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Back up to file…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restore from file…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Reset to default settings…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "The data could not be read or is invalid", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Network error: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subscribe", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "a minute ago", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minutes ago", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "an hour ago", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} hours ago", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "a day ago", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} days ago", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Show Dashboard", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Show Logger", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "off", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Page blocked", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin has prevented the following page from loading:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "This happened because of the following filter:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "without parameters", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "The filter has been found in:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Go back", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Close this window", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Disable strict blocking for {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporarily", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanently", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceed", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Export to cloud storage", + "description": "tooltip" + }, + "cloudPull": { + "message": "Import from cloud storage", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Import from cloud storage and merge with current settings", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "This device name:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Warning! Change these advanced settings at your own risk.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Submit", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Apply changes", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Revert", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Block element in frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribe to filter list…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Temporarily allow large media elements", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Type a shortcut", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Toggle locked scrolling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copy to clipboard", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Select all", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relax blocking mode", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Storage used: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Click to load", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/he/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/he/messages.json new file mode 100644 index 00000000..970a0ff4 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/he/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock₀", + "description": "extension name." + }, + "extShortDesc": { + "message": "סוף סוף, חוסם יעיל. קל על המעבד והזיכרון.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — לוח מחוונים", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "אזהרה! יש לך שינויים שלא שמרת עדיין", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "הישאר", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "התעלם", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "הגדרות", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "רשימות מסננים", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "המסננים שלי", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "החוקים שלי", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "אתרים מהימנים", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "קיצורי דרך", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — מתעד הבקשות", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "אודות", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "תמיכה", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — מציג הנכסים", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "הגדרות מתקדמות", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "לחיצה: כבה/הפעל את uBlock₀ לאתר זה לצמיתות.\n\nCtrl+לחיצה: כבה את uBlock₀ רק בדף זה.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "לחיצה: כבה את uBlock₀ לאתר זה.\n\nCtrl+לחיצה: כבה את uBlock₀ רק בדף זה.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "לחץ על מנת להפעיל את uBlock₀ באתר זה.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "בקשות שנחסמו", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "בדף זה", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "מאז ההתקנה", + "description": "English: since install" + }, + "popupOr": { + "message": "או", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "חסומים בדף זה", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "נחסמו מאז ההתקנה", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "דומיינים שהתחברת אליהם", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "פתח את לוח המחוונים", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "היכנס למצב מחיקת אלמנט באופן זמני", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "היכנס למצב בחירת אלמנט", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "פתח את מתעד הבקשות", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "דווח על בעיה באתר אינטרנט זה", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "הפעל/כבה את החסימה של חלונות קופצים באתר זה", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "לחץ על מנת לחסום חלונות קופצים באתר זה", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "לחץ על מנת לבטל את החסימה של חלונות קופצים באתר זה", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "הפעל/כבה את החסימה של אלמנטי מדיה גדולים באתר זה", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "לחץ על מנת לחסום אלמנטי מדיה גדולים באתר זה", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "לחץ על מנת לבטל את החסימה של אלמנטי מדיה גדולים באתר זה", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "הפעל/כבה מסננים קוסמטיים באתר זה", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "לחץ על מנת לכבות מסננים קוסמטיים באתר זה", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "לחץ על מנת להפעיל מסננים קוסמטיים באתר זה", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "הפעל/כבה את החסימה של פונטים חיצוניים באתר זה", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "לחץ על מנת לחסום פונטים חיצוניים באתר זה", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "לחץ על מנת לבטל את החסימה של פונטים חיצוניים באתר זה", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "לחץ על מנת לחסום JavaScript באתר זה", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "לחץ על מנת להפסיק לחסום JavaScript באתר זה", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "חלונות קופצים", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "אלמנטי מדיה גדולים", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "מסננים קוסמטיים", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "פונטים חיצוניים", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "עוד", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "פחות", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "חוקים גלובליים: עמודה זו היא עבור חוקים אשר תקפים לכל האתרים.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "חוקים לוקאליים: עמודה זו היא עבור חוקים אשר תקפים לאתר הנוכחי בלבד.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "לחץ על מנת להפוך את השינויים שלך לקבועים.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "לחץ על מנת לבטל את השינויים שלך.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "הכל", + "description": "" + }, + "popupImageRulePrompt": { + "message": "תמונות", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "צד-3", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/תמונות צד-3", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "סקריפטים מוטמעים", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "סקריפטים צד-1", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "סקריפטים צד-3", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "מסגרות צד-3", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "דומיינים שהתחברת אליהם", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} מתוך {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "גרסה", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "סקריפט", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "מסגרת", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "צור", + "description": "English: Create" + }, + "pickerPick": { + "message": "בחר", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "צא", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "תצוגה מקדימה", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "מסנני רשת", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "מסננים קוסמטיים", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "לחיצה, Ctrl+לחיצה", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "חסום אלמנט…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "הסתר את המקום שנשאר מחסימה של אלמנטים", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "הראה את מספר הבקשות החסומות על האייקון", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "כבה רמזים צצים", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "הצגת הפריט 'חסום אלמנט' בתפריט הלחצן הימני איפה שאפשר", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "ידידותי לעיוורי צבעים", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "נראות", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "ערכת נושא", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "צבע הדגשה מותאם אישית", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "הפעל אחסון בענן", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "אני משתמש מתקדם", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "כבה אחזור מוקדם של משאבים (על מנת למנוע מחיבורים של בקשות רשת חסומות להישלח)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "חסום Hyperlink auditing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "מנע מ WebRTC להדליף כתובות IP לוקאליות", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "התנהגות ברירת מחדל", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "התנהגויות ברירת מחדל אלו יכולות להיקבע עבור כל אתר בנפרד", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "כבה מסננים קוסמטיים", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "חסום אלמנטי מדיה הגדולים מ {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "חסום פונטים חיצוניים", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "חסום JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "חסום דיווחי CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "חשוף רשומות DNS מסוג CNAME", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "מתקדם", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "מאפיינים למשתמשים בעלי ידע טכני בלבד", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "הגדרות מתקדמות", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "שחזור אחרון:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "גיבוי אחרון:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} מסנני רשת + {{cosmeticFilterCount}} מסננים קוסמטיים מתוך:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} בשימוש מתוך {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "עדכן אוטומטית את רשימות המסננים.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "עדכן כעת", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "נקה את כל זיכרוני המטמון", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "פרסר ואפשר מסננים קוסמטיים.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "מסננים קוסמטיים נועדו להסתיר אלמנטים בדף אינטרנט אשר נחשבים למטרד חזותי, ואשר לא יכולים להיחסם על ידי מנוע חסימת בקשות רשת.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "התעלם ממסננים קוסמטיים כלליים", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "מסננים קוסמטיים כלליים - אלה הם המסננים הקוסמטיים, אשר מיועדים להיות מוחלים על כל דפי האינטרנט. אפשור הגדרה זו תוריד את צריכת הזיכרון והמעבד אשר מתווספות לדפי אינטרנט כתוצאה משימוש במסננים קוסמטיים כלליים.\n\nמומלץ לאפשר הגדרה זו במכשירים פחות חזקים.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "השהה פעילות רשת עד לסיום טעינת כל רשימות הסינון", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "רשימה של דומיינים חסומים", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "החל שינויים", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "מובנה", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "פרסומות", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "פרטיות", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "הגנה מפני נוזקות, אבטחה", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "יישומונים חברתיים", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "הודעות בקשר לעוגיות", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "מטרדים", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "רב תכליתי", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "אזורים, שפות", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "מותאם אישית", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "ייבא…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "כתובת אינטרנט אחת בכל שורה. כתובות אינטרנט שאינן חוקיות לא יפורשו.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "לא עדכני.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "הצג תוכן", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "עדכון אחרון: {{ago}}.\nלחץ על מנת לאלץ עידכון.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "מעדכן…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "בעיית רשת מנעה מהמשאב להתעדכן.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "אל תוסיף מסננים ממקורות לא מהימנים.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "אפשור מסננים מותאמים אישית", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "אפשור למסננים מותאמים אישית לדרוש אמון", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "ייבא וצרף…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "ייצוא…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "החל שינויים", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "חוקים קבועים", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "חוקים זמניים", + "description": "header" + }, + "rulesRevert": { + "message": "החזר למצב הקודם", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "החל", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "ערוך", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "שמור", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "בטל", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "ייבא מקובץ…", + "description": "" + }, + "rulesExport": { + "message": "ייצא לקובץ…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "רשימת חוקי המסננים הדינאמיים שלך.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "סינטקס חוק: פעולה סוג יעד מקור (תיעוד מלא).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "מיין לפי:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "סוג הרשומה", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "מקור", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "יעד", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "הנחיות אתר מהימנות, מכתיבות באילו עמודי מרשתת יש להשבית את uBlock Origin. רשומה אחת לכול שורה.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "ייבא וצרף…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "ייצוא…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "החל שינויים", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "סוג", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "דומיין", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "כתובת", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "מסנן", + "description": "English: Filter" + }, + "logAll": { + "message": "כל הטאבים", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "מאחורי הקלעים", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "לשונית נוכחית", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "טען מחדש את תוכן הלשונית", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "פתח/סגור את ה DOM inspector", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "הצג/הסתר את הפאנל הקופץ", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin וויקי: מתעד הבקשות", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "נקה בקשות", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "עצור תיעוד של בקשות (התעלם מכל בקשה חדשה)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "המשך תיעוד של בקשות", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "הפעל/כבה סינון של מתעד הבקשות", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "סנן רשומות של מתעד הבקשות", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "הגדרות סינון של מתעד הבקשות", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "לא", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "חסום", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "מאופשר", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "השתנה", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "צד-1", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "צד-3", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "פרטים", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "מסנן", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "רשימת מסננים", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "חוק", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "הקשר", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "ההקשר המקורי", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "צד", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "סוג", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "כתובת", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "סינון URL דינאמי", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "הקשר:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "סוג:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "סינון סטאטי", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} בקשות רשת מסוג {{type}} {{br}} שה URL שלהן הוא {{url}} {{br}} ואשר מגיע מהאתר {{origin}},{{br}}{{importance}} קיים כבר מסנן שמתיר להעביר בקשות רשת אלה.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "חסום", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "אפשר", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "מסוג \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "כל סוג", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "מתוך \"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "מכל מקום", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "אך לא כאשר", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "גם אם", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "המסנן הסטאטי {{filter}} נמצא ב:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "המסנן הסטאטי לא נמצא בשום אחת מרשימות המסננים המופעלות כרגע", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "רשומות של מתעד הבקשות שלא תואמות את כל שלושת התנאים הבאים לא ישמרו:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "שמור היסטוריית רשומות של {{input}} הדקות האחרונות", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "שמור היסטוריה של עד {{input}} טעינות עמוד עבור כל לשונית", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "שמור היסטוריה עד {{input}} רשומות עבור כל לשונית", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "השתמש ב {{input}} שורות עבור כל רשומה במצב פרוס אנכית", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "הסתר עמודות:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} זמן", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} מסנן/חוק", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} הקשר", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} צד", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "רשימה", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "טבלה", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "פשוט", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "פורמט Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "לפתוח", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "צור דוח חדש ב-GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "מצא דיווחים דומים ב-GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "דוקומנטציה", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "קרא את הדוקומנטציה ב uBlock/wik על מנת ללמוד על כל היכולות של uBlock Origin", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "שאלות ותמיכה", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "תשובות לשאלות ושאר סוגי העזרה ניתן להיעזר בסאברדיט /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "בעיות סינון/אתר שבור", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "דווח על בעיות סינון באתרים קונקרטיים בלוח הבעיות uBlockOrigin/uAssets. נדרש משתמש GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "חשוב: המנע משימוש בחוסמים אחרים שיש להם את אותה המטרה באותו הזמן עם uBlock Origin, שכן זה יכול לגרום לבעיות סינון באתרים ספציפיים.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "טיפים: וודאו כי רשימות המסננים שלכם מעודכנים. מתעד הבקשות הינו הכלי המרכזי לפענוח בעיות הקשורות לרשימות מסננים.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "דיווח על באג", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "דווח על בעיות ב uBlock Origin עצמו ל מעקב הסוגייות uBlockOrigin/uBlock-issue.\nנידרש חשבון גיטהאב (GitHub)", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "מידע לפתרון בעיות", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "ראה מטה מידע טכני שיכול להיות מועיל למתנדב, כאשר הוא מנסה לעזור לך לפתור בעיה.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "דיווח על בעיית מסנן", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "כדי להימנע מהכבדה על מתנדבים בדווחים כפולים, נא לודא שבעיה דומה טרם דווחה.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "רשימות הסינון מתעדכנות מדי יום. וודא שהבעיה שלך עדיין לא טופלה ברשימות הסינון המעודכנות.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "וודא כי הבעיה עדיין קיימת לאחר רענון הדף הבעייתי.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "כתובת דף האינטרנט:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "דף האינטרנט…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- בחר קטגוריה --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "הצגת פרסומות או שאריות שלהן", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "קיים ריבוד או מטרד אחר", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "מזהה את uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "בעיות הקשורות לפרטיות", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "כשל תפעולי כאשר uBlock Origin פעיל", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "נפתחים לשוניות או חלונות לא רצויים", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "מוביל לנוזקה, פישינג", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "תיוג דף האינטרנט כ- לב\"ל ('לא בטוח לעבודה')", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "מדיניות פרטיות", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "רשימת שינויים", + "description": "" + }, + "aboutCode": { + "message": "קוד מקור (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "תורמים", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "קוד מקור", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "תרגומים", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "רשימות מסננים", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "תלויות חיצוניות (תואם-GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "רשימות המסננים של uBO מופצות בחינם בשירותי ה CDN הבאים:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "שרות CDN אקראי נבחר לשם עדכון רשימת מסננים", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "גבה לקובץ…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "שחזר מקובץ…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "אפס להגדרות ברירת מחדל…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "כל ההגדרות שלך יוחלפו בנתונים שגובו ב {{time}}, ו uBlock₀ יופעל מחדש.\n\nהאם להחליף את כל ההגדרות הקיימות בנתונים המגובים?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "לא הוצלח לקרוא את המידע או שהוא פגום", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "כל ההגדרות שלך יימחקו, ו uBlock₀ יופעל מחדש.\n\nלאפס את uBlock₀ להגדרות ברירת מחדל?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "בעיית רשת: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "הירשם כמנוי", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "לפני דקה", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "לפני {{value}} דקות", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "לפני שעה", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "לפני {{value}} שעות", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "לפני יום", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "לפני {{value}} ימים", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "הצג את לוח המחוונים", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "הצג את מתעד הבקשות", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "מכובה", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "הדף חסום", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin מנע מהעמוד הבא להיטען:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "בגלל המסנן הבא", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "ללא פרמטרים", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "נמצא ב:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "חזור אחורה", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "סגור חלון זה", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "אל תתריע לי שוב על אתר זה", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "בטל חסימה נוקשה עבור {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "זמנית", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "לצמיתות", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "המשך", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "הדף החסום מבקש לעבור לאתר אחר. אם תחליטו להמשיך, תעברו ישירות ל: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "הסיבה:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "זדוני", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "מעקב", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "מפוקפק", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "ייצא לאחסון ענן", + "description": "tooltip" + }, + "cloudPull": { + "message": "ייבא מאחסון ענן", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "ייבא מהגיבוי בענן ומזג עם ההגדרות הקיימות", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "שם המכשיר:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "אזהרה! שינוי הגדרות אלו על אחריותך בלבד.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "שלח", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "החל שינויים", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "החזר למצב הקודם", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "בתים", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "חסום אלמנט בתוך מסגרת…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "הירשם לרשימת המסננים…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "זמנית אפשר אלמנטי מדיה גדולים", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "צפה בקוד המקור…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "הקלד קיצור דרך", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "הפעל/כבה נעילת גלילה", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "העתק ללוח", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "בחר הכל", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "הפעל/כבה מסננים קוסמטיים", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "כיבוי/הפעלה של JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "הרפה את מצב החסימה הנוכחי", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "אחסון בשימוש: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "לחץ על מנת לטעון", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "שגיאות: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "לא ניתן היה לסנן כראוי בעת הפעלת הדפדפן. נא לטעון את העמוד מחדש להבטחת סינון ראוי.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "ערך זה חייב להיות האחרון", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/hi/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/hi/messages.json new file mode 100644 index 00000000..76e7caab --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/hi/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "आख़िरकार, क्रोमियम-बेस्ड ब्राउज़रों के लिए एक कुशल अवरोधक। सीपीयू और मेमोरी पर कम भार के साथ।\n", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — डैशबोर्ड", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "चेतावनी! आपके कुछ परिवर्तनों को सहेजना अभी बाकी है", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "यहाँ रुकें", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "नज़रअंदाज़ करें ", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "सेटिंग्स", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "तृतीय-पक्ष फ़िल्टर", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "मेरे फिल्टर", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "मेरे नियमों", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "विश्वस्त साइट सूची", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "शॉर्टकट", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — लॉगर", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "जानकारी", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "सहायता", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — असेट व्यूअर", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "उन्नत सेटिंग्स", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "दबाए : uBlock को इस साईट में बंद/चालु करने के लिए।\n\nCtrl के साथ दबाए : uBlock को सिर्फ इस पेज में बंद करने के लिए।", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "दबाए: uBlock को इस साईट पर बंद करने के लिए।\n\nCtrl के साथ दबाए: uBlock को केवल इस पेज पर बंद करने के लिए।", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "इस साईट में uBlock₀ को चालू करने के लिए क्लिक कीजिये।", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "रुके हुए अनुरोध", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "इस पृष्ठ पर", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} या {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "स्थापना से अब तक", + "description": "English: since install" + }, + "popupOr": { + "message": "या", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "इस पेज पर ब्लॉक किया गया ", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "स्थापना के समय से ब्लॉक किया हुआ", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "कनेक्ट हुई डोमेंस", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "डैशबोर्ड खोलें", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "चीजें मिटाने के मोड में जाएं", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "एलिमेंट पिकर मोड में जाएं ", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "लॉगर खोलें", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "इस वेबसाइट पर किसी समस्या की रिपोर्ट करें", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "इस साईट के लिए कोई पॉपअप नहीं", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "इस वेबसाइट पर सभी पॉप-अप्स को ब्लाक करने के लिए क्लिक करें", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "इस वेबसाइट पर सभी पॉप-अप्स को और ब्लाक न करने के लिए क्लिक करें", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "बड़े मीडिया चीजों को रोक दें", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "इस वेबसाइट पर बड़े मीडिया ऐलिमेंटस को ब्लाक करने के लिए क्लिक करें", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "इस वेबसाइट पर बड़े मीडिया ऐलिमेंटस को ब्लाक न करने के लिए क्लिक करें", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "इस वेबसाइट की खूबसूरत फ़िल्टरिंग करें", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "इस साइट पर कॉस्मेटिक फ़िल्टरिंग बंद करने के लिए क्लिक करें", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "इस साइट पर कॉस्मेटिक फ़िल्टरिंग चालू करने के लिए क्लिक करें", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "बाहरी फ़ॉन्ट्स को ब्लॉक करें", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "इस साइट पर रिमोट फोंट को बंद करने के लिए क्लिक करें", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "इस साइट पर रिमोट फोंट अब और नहीं ब्लॉक करने के क्लिक करें ", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "जावास्क्रिप्ट को रोकने के के लिए दबाएं", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "जावास्क्रिप्ट को अब और न बंद करने के लिए दबाएं", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "पॉप-अप विंडोज", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "बड़े मीडिया एलिमेंट्स ", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "कॉस्मेटिक फिल्टर", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "रिमोट फोंट्स\n", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "जावास्क्रिप्ट ", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "और", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "कम", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "सार्वत्रिक नियम: इस क़तार के नियम सारे साइट्स पर लागु करने के लिए हैं ", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "निन्मलिखित नियमें सिर्फ इस वेबसाइट पर लागू है", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "अपने परिवर्तनों को पक्का बनाने के लिए क्लिक करें।", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "आपके परिवर्तनों को उलटने के लिए क्लिक करें", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "सभी", + "description": "" + }, + "popupImageRulePrompt": { + "message": "चित्र", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "तीसरे पक्ष", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "३री-पार्टी CSS/तस्वीरें ", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "लाइन के बीच वाले स्क्रिप्ट्स", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "असली साइट के स्क्रिप्ट्स", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "दूसरी साइट के स्क्रिप्ट्स", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "दूसरी साइट के फ्रेम्स", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "कनेक्ट हुई साइटें ", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}} मे से {{count}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "वर्जन", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "स्क्रिप्ट", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "फ़्रेम", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "बनाएँ", + "description": "English: Create" + }, + "pickerPick": { + "message": "चयन", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "बंद करें", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "पूर्व दर्शन", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "नेट फिलटर्स", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "कॉस्मेटिक फिल्टर", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "क्लिक, कंट्रोल - क्लिक", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "इस को ब्लॉक करो", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "ब्लॉक किये चीज़ो की प्लेसहोल्डर को हटाओ", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "ब्लॉक कि गयी चीज़ो की गिनती आइकॉन पर दिखाओ", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "टूलटिप्स बंद कीजिऐ", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "जहाँ उपयुक्त हो, संदर्भ मेनू का इस्तेमाल करें", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "वरणांध अनुकूलित ", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "दिखावट", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "थीम", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "निर्मित किए हुए उच्चारण रंग", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "क्लाउड स्टोरेज सपोर्ट चालू करें", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "मैं एक उन्नत प्रयोक्ता हूँ", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "प्री-फ़ेचिंग बंद करें (कोई भी ब्लॉक किये गए कनेक्शंनो से संपर्क न करने लिए)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "हाइपरलिंक जाँच को बंद करें", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "WebRTC को स्थानीय IP पतों लीक करने से रोकें ", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "सामान्य व्यवहार", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "ये सामान्य व्यवहारों को प्रति-पृष्ठ आधार पर बदला जा सकता है", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "कॉस्मेटिक फ़िल्टरिंग बंद करें ", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "{{input}} KB से बड़े मीडिया चीजें को बंद करें ", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "बाहरी फोंट्स को बंद करें ", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "जावास्क्रिप्ट को बंद करें ", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": " CSP रिपोर्ट्स को ब्लॉक करें ", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "विहित नाम अनलॉक करें", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "उन्नत", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "केवल तकनीकी उपयोगकर्ताओं के लिए उपयुक्त सुविधाएँ.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "उन्नत सेटिंग्स", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": " पिछला रिस्टोर:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "पिछला बैकअप", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} नेटवर्क फिल्टर्स + {{cosmeticFilterCount}} कॉस्मेटिक फिल्टर्स यहां से:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}} में से {{used}} का इस्तेमाल किया", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "स्व-अद्यतन फ़िल्टर सूचियां", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "अभी नवीकृत करें", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "सभी अस्थायी मेमोरी को शुद्ध करे", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "कॉस्मेटिक फिल्टर्स को लें और लागू करें", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "यह विकल्प कॉस्मेटिक फिल्टर्स को लेता और उन्हें जारी करता है जो Adblock Plus- \"एलीमेंट हाइड\" से मिलतें-जुलातें हैं। यह उन चीजों को ब्लॉक करतें हैं जो वेब पेज के दिखावत में छोटे- मोटी समस्या पैदा करतें है जो नेटवर्क रिक्वेस्ट-के फिल्टरों से ब्लुक नहीं किए जा सकते। ", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "जेनेरिक कम्सेटिक फिल्टरों को नजरंदाज करें", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "जेनेरिक कॉस्मेटिक फिल्टरस वो कॉस्मेटिक फिल्टरस हैं जो सब वेब साइट्स पर लागू होते हैं। यह विकल्प को चालू कराने से मेमोरी और सीपीयू पर जो उपर का दबाव पड़ता है वो नहीं रहेगा जो कॉस्मेटिक फिल्टरों को जारी करने से हुआ था।\n\nइस विकल्प को कमज़ोर डिवाइसों पर चालू कराने की सलाह दी जाती है।", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "सभी फ़िल्टर सूचियाँ लोड होने तक नेटवर्क गति-विधि को निलंबित करें", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "परिवर्तन लागू करें", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "बिल्ट-इन ", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "विज्ञापन", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "गोपनीयता", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "मैलवेयर सुरक्षा, सिक्योरिटी", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "सोशल विज़ेट्स", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "कुकी सूचनाएं", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "सतानेवाले विज्ञापन", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "बहुउद्देशीय", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "क्षेत्र, भाषा", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "कस्टम", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "इम्पोर्ट...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "एक URL हर लाइन में. अमान्य URLs को सीधे से नजरअंदाज किया जायेगा।", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "पुरानी", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "चीजों को देखें ", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "अन्तिम अद्यातन: {{ago}}. \nकृत्रिम नवीकरण के लिए क्लिक की जिए", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "नवीकरण प्रगति में हैं...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "एक नेटवर्क त्रुटि ने रिसोर्स को अपडेट होने से रोक दिया। ", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "अविश्वसनीय स्रोतों से फ़िल्टर न जोड़ें.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "मेरे कस्टम फ़िल्टर सक्षम करें", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "विश्वास की आवश्यकता वाले कस्टम फ़िल्टर की अनुमति दें", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "इम्पोर्ट करें और जोड़ें...", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "निर्यात करें", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "मेरे-ublock-स्‍थिर-फिल्टेरें_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "परिवर्तन लागू करें", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "स्थायी नियम", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "अस्थायी नियम", + "description": "header" + }, + "rulesRevert": { + "message": "पलटदे", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "पक्का करो", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "एडिट", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "सहेजें", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "रद्द करें", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "फाइल से आयात करे...", + "description": "" + }, + "rulesExport": { + "message": "फाइल में एक्सपोर्ट करें...", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "मेरे-ublock-डायनामिक-नियम_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "मेरे डायनामिक रूल्स की लिस्ट।", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "सिंटेक्स नियम: सोर्स डेस्टिनेशन टाइप एक्शन ( पूरी डॉक्यूमेंटेशन).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "क्रम में लगाये:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "नियम प्रकार", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "मूल", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "गंतव्य", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "वाइटलिस्ट के नियम यह बताते हैं कि uBlock Origin को किस वेब पेज पर बंद करना चाहिए। एक एंट्री हर लाइन में। अमान्य नियमों को सीधे-सीधे नजरअंदाज कर दिया जाएगा।", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "इम्पोर्ट करें और जोड़ें...", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "निर्यात करें...", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "मेरे-उबलॉक-व्हाइटलिस्ट_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "परिवर्तन लागू करें", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "प्रकार", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "डोमेन", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "यू आर एल", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "फिल्टर", + "description": "English: Filter" + }, + "logAll": { + "message": "सब", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "पर्दे के पीछे", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "वर्तमान टैब", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "टैब की चीज़ों को फिर से लोड करें ", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM इंस्पेक्टर को टॉगल करें ", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "पॉप-उप पैनल को टॉगल करें ", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin विकी: लॉग्गर ", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "लॉगर क्लियर करें ", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "लॉग्गर क्लियर करें", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "लोगेर को फिर से चालू करें ", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "लोगर फ़िल्टर को टॉगल करें ", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "लोगर चीज़ों को फिल्टीर करें ", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "लोगर फ़िल्टर के चुनाव ", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "नही", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "ब्लॉक किया हुआ ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "स्वीकार किया हुआ ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "परिवर्तित", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "१ली-पार्टी ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "तृतीय-पक्ष", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "विवरण", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "फ़िल्टर ", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "फिल्टीर सूची", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "नियम", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "संदर्भ", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "मूल सन्दर्भ ", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "पर्टिनेस", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "प्रकार", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL नियम ", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "सन्दर्भ:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "प्रकार:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "स्थिर फ़िल्टर", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{type}}{{br}} कि नेटवर्क रिक्वेस्ट्स {{action}} जो मिलती है इस URL पते से {{url}}{{br}} और जो आती है यहां से {{origin}},{{br}}{{importance}} मैचिंग एक्सेप्शन फिल्टर मौजूद है।", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "ब्लॉक", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "अनुमति दें", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "प्रकार \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "कोई भी प्रकार का", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "\"{{origin}}\" से", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "कहि से भी", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "सिवाय जब ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "फिर भी ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "{{filter}} में पाया गया स्थिर फ़िल्टर", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "फिलहाल चालू की गई हुई कोई भी फिल्टर्स सूची में स्थिर फिल्टर नहीं मिल पाया", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "नीचे दी गई तीनों सूचियों से जो नहीं मिलते उनको ऑटोमेटिकली निकाल दिया जाएगा:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "आखरी {{input}} मिनट की जो एंट्रेंस हैं उन्हें बचा कर रखें", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "ज्यादा-से-ज्यादा इतनी पेज लोड्स को बचा कर रखें {{input}}", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "ज्यादा से ज्यादा {{input}} एंट्रीज को रखें", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "{{input}} लाइनों को इस्तेमाल करें पर एंट्री में जो खड़ी स्थिति में हैं", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "कॉलम्स को छिपाएं:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} समय", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} फिल्टर/रूल", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} संदर्भ", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "पर्टीनेस", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "सूची", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "टेबल", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "प्लेन", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "मार्कडाउन", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "खोलें", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "नई रिपोर्ट बनाएं", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "ऐसी ही रिपोर्ट खोजें", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "प्रलेखन", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "uBlock की सभी विशेषताओं के बारे में जानने के लिए uBlock/wiki पर दस्तावेज़ पढ़ें।", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "प्रश्न और समर्थन", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "सबरेडिट /r/uBlockOrigin. पर सवालों के जवाब और अन्य प्रकार की सहायता सहायता प्रदान की जाती है", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "फ़िल्टर समस्याएं/वेबसाइट टूट गई है", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "विशिष्ट वेबसाइटों के साथ फ़िल्टर समस्याओं की रिपोर्टuBlockOrigin/uAssets इश्यू ट्रैकर. GitHub खाते की आवश्यकता है। ", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "ध्यान दें :uBlock Origin के साथ समान उद्देश्य वाले अन्य अवरोधकों का उपयोग करने से बचें, क्योंकि इससे विशिष्ट वेबसाइटों पर फ़िल्टर समस्याएँ हो सकती हैं।", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "युक्तियाँ : सुनिश्चित करें कि आपकी फ़िल्टर सूचियाँ नवीनतम हैं। लॉगर आपकी फ़िल्टर से संबंधित समस्याओं के निदान के लिए प्राथमिक टूल है।", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "बग रिपोर्ट", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "uBlock Origin के साथ समस्याओं की रिपोर्ट यहाँ uBlockOrigin/uBlock-issueइश्यू ट्रैकर पर करें। इसके लिए GitHub खाते की आवश्यकता है।", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "समस्या निवारक जानकारी", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "नीचे तकनीकी जानकारी दी गई है जो तब उपयोगी हो सकती है जब स्वयंसेवक किसी समस्या का समाधान करने में आपकी सहायता करने का प्रयास कर रहे हों।", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "फ़िल्टर समस्या की रिपोर्ट करें", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "स्वयंसेवकों पर डुप्लीकेट रिपोर्ट का बोझ डालने से बचने के लिए, कृपया सत्यापित करें कि समस्या की रिपोर्ट पहले ही नहीं की गई है।", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "फ़िल्टर सूचियों को रोजाना अपडेट किया जाता है। सुनिश्चित करें कि आपकी समस्या का समाधान पहले से ही नवीनतम फ़िल्टर सूचियों में नहीं किया गया है।", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "सत्यापित करें कि समस्यात्मक वेबपेज को रीलोड करने के बाद समस्या अभी भी बनी हुई है।", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "वेब पेज का पता:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "वेब पेज...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- एक प्रविष्टि चुनें --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "विज्ञापन या बचा हुआ विज्ञापन दिखाता है", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "ओवरले या अन्य उपद्रव हैं", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "uBlock Origin का पता लगाता है", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "गोपनीयता से संबंधित समस्याएं हैं", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "uBlock Origin सक्षम होने पर खराबी", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "अवांछित टैब या विंडो खोलता है", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "बैडवेयर, फ़िशिंग की ओर ले जाता है", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "वेब पेज को इस रूप में लेबल करें “NSFW” (“काम करने के लिए सुरक्षित नहीं”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "गोपनीयता नीति", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "परिवर्तन सूची", + "description": "" + }, + "aboutCode": { + "message": "सोर्स कोड {GPLv3}", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "योगदानकर्ता", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "सोर्स कोड", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "अनुवाद", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "फिल्टर सूची", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "बाहरी डिपेंडेंसीज (GPLv3-compatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's स्वयं की फ़िल्टर सूचियाँ निम्नलिखित पर स्वतंत्र रूप से होस्ट की जाती हैं CDNs ", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "बेतरतीब ढंग से चुनी गई सीडीएन का उपयोग तब किया जाता है जब फ़िल्टर सूची को अद्यतन करने की आवश्यकता होती है", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "फ़ाइल में बैकअप लें", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "मेरे-ublock-बैकअप_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "फाइल से वापस करो", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "सेटिंग्स को पहले की तरह करें...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "{{समय}} पर बैकअप किए गए डेटा इस्तेमाल करके आपकी सभी सेटिंग्स को ओवरराइट कर दिया जाएगा, और uBlock₀ फिर से चालू किया जाएगा।\n\nबैकअप डेटा का इस्तेमाल करके सभी मौजूदा सेटिंग्स को ओवरराइट करें?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "डेटा पढ़ा नहीं जा सका या अमान्य है", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "आपकी सारी सेटिंग्स मिटा दी जाएंगी, और uBlock₀ को फिर से चालू किया जाएगा।\n\nuBlock₀ को फ़ैक्टरी सेटिंग्स पर रीसेट करें?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "नेटवर्क त्रुटि: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "फ़िल्टर सूची का उपयोग करें", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "एक मिनट पेहेले ", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} मिनट पेहेले ", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "एक घंटे पेहेले ", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} घंटे पहले", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "एक दिन पहले", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} दिन पहले", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "डैशबोर्ड दिखाओ", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "लॉगर दिखाएं", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "बंद", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "पृष्ठ प्रतिबंधित है", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin ने इस पेज को लोड होने से रोक दिया हैं:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "इस फिल्टर की वजह से ", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "पैरामीटर के बिना", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "इन में पायी है:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "पीछे जाएं", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "इस विंडो को बंद करे", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "इस साइट के बारे में मुझे दोबारा चेतावनी न दें", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "स्ट्रिक्ट ब्लॉकिंग को बंद करें इस साइट पर {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "कुछ समय के लिए", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "स्थायी", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "आगे बढ़ें", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "ब्लॉक किया गया पेज किसी दूसरी साइट पर ले जाना चाहता है. अगर आप आगे बढ़ना चुनते हैं, तो आप सीधे इस लिंक को खोल सकते हैं: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "कारण:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "दुर्भावनापूर्ण", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "ट्रैकर", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "जर्जर", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "क्लाउड स्टोरेज में भेजें", + "description": "tooltip" + }, + "cloudPull": { + "message": "क्लाउड स्टोरेज से आयात करें", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "क्लाउड स्टोरेज से डाउनलोड करें और मौजूदा सेटिंग्स के साथ मिलाएं ", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "इस साधन का नाम:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "चेतावनी! इन एडवांस सेटिंग्स को अपने जोखिम पर बदलें", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "पक्का", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "परिवर्तन लागू करें", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "पलटदे", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "बाइट्स", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "फ्रेम में तत्व को ब्लॉक करें...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "फ़िल्टर सूची की सदस्यता लें...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "कुछ समय के लिए विशाल तत्वोंको चलने की अनुमति दे", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "स्रोत कोड देखें", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "शॉर्टकट को टाइप करें ", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "लॉक की हुई स्क्रोलिंग को टोगल करें ", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "क्लिपबोर्ड में कॉपी करें", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "सभी चुनें", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "कॉस्मेटिक फ़िल्टरिंग टॉगल करें", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "जावास्क्रिप्ट टॉगल करें", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "ब्लैकिंग मोड को ढील दें", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "इस्तेमाल हुई स्टोरेज:{{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "केबी", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "एमबी", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "जीबी", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "लोड करने के लिए क्लिक करें", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "त्रुटियाँ : {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "ब्राउज़र खोलने पर ठीक से फ़िल्टर नहीं कर सका। उचित फ़िल्टरिंग सुनिश्चित करने के लिए वेबपेज को रीलोड करें।", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/hr/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/hr/messages.json new file mode 100644 index 00000000..d6561f12 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/hr/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Konačno, efikasan blokator. Lak na CPU i memoriji.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Nadzorna ploča", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Upozorenje! Niste spremili promjene", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Ostani", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignoriraj", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Postavke", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Liste filtera", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Moji filteri", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Moja pravila", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Pouzdane stranice", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Tipkovni prečaci", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Zapisnik mrežnih zahtjeva", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "O programu", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Podrška", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Preglednik svojstva", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Napredne postavke", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klik: trajno onemogućiti/omogućiti uBlock₀ za ovaj sajt.\n\nCtrl+klik: onemogućiti µBlock₀ samo za ovu stranicu.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Kliknite za onemogućiti uBlock₀ za ovaj sajt.\n\nCtrl+klik za onemogućiti uBlock₀ samo za ovu stranicu.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Kliknite za omogućiti uBlock₀ za ovaj sajt.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "zahtjeva blokirano", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "na ovoj stranici", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ili {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "od instalacije", + "description": "English: since install" + }, + "popupOr": { + "message": "ili", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokirano na ovoj stranici", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blokirano od instalacije", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domena povezano", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Otvori upravljačku ploču", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Pokrenite odabir elementa za blokiranje", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Pokrenite odabir elementa", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Odlazak na zapisnik zahtjeva", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Prijavite problem na ovoj web stranici", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Uključi/isključi skočne prozore na ovoj stranici", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Kliknite za blokiranje svih pop-up prozora na ovom sajtu", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Kliknite za ukloniti blokiranje svih pop-up prozora na ovoj stranici", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Namjestite blokiranje velikih medijskih elemenata za ovu stranicu", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Kliknite za blokiranje velikih medijskih elemenata na ovom sajtu", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Kliknite za ukloniti blokiranje velikih medijskih elemenata na ovom sajtu", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Uključi/isključi estestko filtriranje na ovoj stranici", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Kliknite kako biste onemogućili estestko filtriranje na ovom sajtu", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Kliknite kako biste omogućili estestko filtriranje na ovom sajtu", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Uključi/isključi blokiranje udaljenih fontova za ovu stranicu", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Kliknite za blokiranje udaljenih fontova na ovom sajtu", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Kliknite za ukloniti blokiranje udaljenih fontova na ovom sajtu", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Kliknite kako biste onemogućili JavaScript na ovoj stranici", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Kliknite kako biste omogućili JavaScript na ovoj stranici", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Skočni prozori", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Veliki medija elementi", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Estetski filteri", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Udaljeni fontovi", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Više", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Manje", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globalna pravila: ovaj stupac je za pravila koja vrijede za sve stranice.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokalna pravila: ovaj stupac je za pravila koja vrijede samo za trenutnu stranicu.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Kliknite kako biste spremili promjene.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Kliknite kako bi vratili promjene.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "sve", + "description": "" + }, + "popupImageRulePrompt": { + "message": "slike", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "treće strane", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/slike trećih strana", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "skripte u liniji", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Skripte prve strane", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Skripte trećih strana", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Okviri trećih strana", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domena povezan", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} od {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Verzija", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skripta", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "okvir", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Stvaranje", + "description": "English: Create" + }, + "pickerPick": { + "message": "Odabir", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Izlaz", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Pregled", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Mrežni filteri", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Estetski filteri", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Ctrl-klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blokiraj element…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Sakrij rezervirana mjesta blokiranih elemenata", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Pokaži broj blokiranih zahtjeva na ikoni", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Isključi naputke", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Koristite kontekstni izbornik gdje je prikladno", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Ugodan za daltoniste", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Izgled", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Prilagođena glavna boja", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Omogući podršku za pohranu u oblaku", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Ja sam napredni korisnik", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Onemogući pretpreuzimanje (za sprečavanje bilo koje veze blokiranih mrežnih zahtjeva)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Onemogući provjeravanje hiperlinkova", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Spriječi WebRTC da propušta lokalnu IP adresu", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Zadano ponašanje", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Ova zadana ponašanja mogu biti poništena na bazi web-stranice", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Onemogući estesko filtriranje", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokiraj medijske elemente veće od {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokiraj udaljene fontove", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Onemogući JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blokiraj CSP izvješća", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Prikaži kanonske nazive", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Napredno", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Značajke prikladne samo za napredne korisnike.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "napredne postavke", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Posljednji povratak na prijašnje:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Posljednja sigurnosna kopija:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} mrežni/ih filter/a + {{cosmeticFilterCount}} estetski/ih filter/a iz:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} korišteno od {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Automatsko ažuriranje popisa filtera.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Ažuriraj odmah", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Očistiti sve cache-ove", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Raščlaniti i primijeniti estetske filtre.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Estetski filteri služe za skrivanje elementa web stranice koji se smatraju vizualnim smetanjem i koji ne mogu biti blokirani filtriranjem mrežnih zahtjeva.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignoriraj opće estetsko filtriranje.", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generički estetski filteri su takvi filteri koji su namijenjeni svim web stranicama. Omogućavanjem ove postavke eliminirati će se memorijska i procesorska dodatna upotreba na web stranicama kao rezultat korištenja generičkih estetskih filtera.\n\nPreporučeno je omogućiti ovu postavku na slabijim uređajima.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Obustavite mrežnu aktivnost dok se ne učitaju svi popisi filtera", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Popis blokiranih hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Primijeni promjene", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Ugrađeno", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklame", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privatnost", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Zaštita od zlonamjernog softvera, sigurnost", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Socijalni widgeti", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Obavijest o kolačićima", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Nametljivost", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Višenamjensko", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regije, jezici", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Prilagođeno", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Uvoz…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Jedan URL po retku. Nevaljani URL-ovi će biti tiho ignorirani.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Zastarjelo.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "vidi sadržaj", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Posljednje ažuriranje: {{ago}}.\nKliknite za ažuriranje.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Ažuriranje u tijeku…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Mrežna pogreška je sprječila ažuriranje resursa.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Nemojte dodavati filtere iz nepouzdanih izvora.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Omogući moje prilagođene filtre", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Dopusti prilagođene filtre koji zahtijevaju povjerenje", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Uvesti i dodati...", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Izvoz...", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "moji-ublock-staticni-filteri_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Primijeni promjene", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Trajna pravila", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Privremena pravila", + "description": "header" + }, + "rulesRevert": { + "message": "Vratiti", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Izvršiti", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Uredi", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Spremi", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Odbaci", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Uvoz iz datoteke…", + "description": "" + }, + "rulesExport": { + "message": "Izvoz u datoteku...", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "moja-ublock-dinamicna-pravila_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Popis dinamičkih pravila filtriranja.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Pravila sintakse: akcija tipa izvornog odredišta (sva dokumentacija).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sortiraj:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Vrsta pravila", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Izvor", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destinacija", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Direktiva pouzdanih stranica govori za koje bi web stranice uBlock Origin trebao biti onemogućen. Jedan zapis po retku.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Uvesti i dodati...", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Izvoz...", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "moje-ublock-pouzdane-stranice_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Primijeni promjene", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tip", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domena", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Sve", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Iza scene", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Trenutna kartica", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Ponovno učitaj sadržaj kartice", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Uključi/Isključi DOM inspektor", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Uključi/Isključi panel sa skočnim prozorima", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Zabilješke", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Očisti zabilješke", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pauziraj zabilješke (odbaci sve dolazne podatke)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Uključite zabilješke", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Uključi/Isključi filtriranje zabilješki", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrirajte zabilješke", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Postavke filtiriranja zabilješki", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Ne", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "sadržajno", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokirano", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "dopušteno", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "promijenjeno", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Prve strane", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Treće strane", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detalji", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Lista filtera", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Pravilo", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontekst", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Korijenski kontekst", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Pripadnost", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tip", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Dinamično URL filtriranje", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontekst:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tip:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statičko filtriranje", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} mrežni zahtjev {{type}} {{br}}kojem URL adresa odgovora {{url}} {{br}}i koji dolazi od {{origin}},{{br}}{{importance}} postoji odgovarajući filter izuzetak.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokiraj", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Dopusti", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "tip “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "i tip", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "od “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "bilo gdje", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "osim kad", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "čak i ako", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statični filter {{filter}} pronađen u:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statični filter nije pronađen u trenutno uključenim listama filtera", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Unosi zapisnika koji ne ispunjavaju sva tri uvjeta navedena ispod bit će automatski odbačeni:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Sačuvajte unose od zadnjih {{input}} minuta", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Sačuvajte najviše {{input}} osvježavanja stranice po kartici", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Sačuvajte najviše {{input}} unosa po kartici", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Koristi {{input}} linija po unosu u vertikalno proširenom načinu", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Sakrij stupce:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Vrijeme", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/pravilo", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Kontekst", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Pripadnost", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Popis", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tablica", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Obično", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Otvori", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Napravi novu prijavu na GitHub-u", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Nađi slične prijave na GitHub-u", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentacija", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Pročitajte dokumentaciju na uBlock/wiki kako bi ste saznali uBlock Origin mogućnosti.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Pitanja i podrška", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Odgovori na pitanja i druge vrste podrške nalaze se na subreddit r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter problemi/website je pao", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Prijavite probleme s filtriranjem određenih web stranica uBlockOrigin/uAssets alatki za praćenje problema. Potreban je GitHub račun.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Važno: Izbjegavajte korištenje drugih blokera slične namjene u isto vrijeme s uBlock Origin-om jer to može uzrokovati probleme s filtriranjem na određenim web stranicama.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Savjeti: Provjerite jesu li vaše liste filtera ažurirane. Zapisnik je primarni alat za dijagnosticiranje problema povezanih s filterima.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Prijava greške", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Prijavite probleme sa samim uBlock Origin-om na uBlockOrigin/uBlock-problem alatki za praćenje problema. Potreban je GitHub račun.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informacije o rješavanju problema", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "U nastavku se nalaze tehničke informacije koje bi mogle biti korisne kada vam volonteri pokušavaju pomoći u rješavanju problema.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Prijavi problem sa filterom", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Kako biste izbjegli opterećivanje volontera duplim prijavama, provjerite nije li problem već prijavljen. Napomena: klik na gumb uzrokovat će slanje izvorne stranice na GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Popisi filtera ažuriraju se svakodnevno. Provjerite nije li vaš problem već riješen sa najnovijim popisima filtera.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Provjerite postoji li problem i dalje nakon ponovnog učitavanja problematične web stranice.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adresa web stranice:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Web stranica…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Odaberite unos --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Prikazuje oglase ili ostatke oglasa", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Ima overlaye ili druge smetnje", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detektira uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Ima problema u vezi s privatnošću", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Ruši se kad je uBlock Origin omogućen", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Otvara neželjene kartice ili prozore", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Vodi do zloćudnog softvera, krađe identiteta", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Označite web stranicu kao “NSFW” (“nije sigurno za pregledavanje na poslu“)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Pravila privatnosti", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Popis promjena", + "description": "" + }, + "aboutCode": { + "message": "Izvorni kôd (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Suradnici", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Izvorni kod", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Prijevodi", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Liste filtera", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Vanjski korišteni programi (GPLv3-kompatiblini):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Vlastiti popisi filtera uBO-a besplatno su posluženi sa sljedećih CDN-ova:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Koristit će se slučajno odabrani CDN kada treba ažurirati popis filtera", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Sigurnosno kopiranje u datoteku...", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "moja-ublock-sig_kopija_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Vraćanje iz datoteke…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Vraćanje izvornih zadanih postavki…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Sve vaše postavke prebrisat će se sa postavkama spremljenim {{time}}, i uBlock₀ će se ponovno pokrenuti. \n\nPrepisati sve postojeće postavke pomoću sigurnosne kopije postavki?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Podatke nije moguće učitati ili su neispravni", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Sve vaše postavke će biti obrisane i µBlock₀ će se ponovno pokrenuti. \n\nVraćanje µBlock₀ tvorničkih postavki?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Mrežna greška {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Prijava", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "prije minutu", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "prije {{value}} minute/a", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "prije jedan sat", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "prije {{value}} sata/i", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "prije jedan dan", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "prije {{value}} dana", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Prikaži kontrolnu ploču", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Prikaži zapis mrežnih zahtjeva", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "isključen", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Stranica blokirana", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin je onemogućio učitavanje sljedeće stranice:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Zbog sljedećeg filtera", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "bez parametara", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Pronađeno u:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Natrag", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Zatvori ovaj prozor", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Ne upozoravaj me više za ovu web stranicu", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Isključi strogo blokiranje za {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Privremeno", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Trajno", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Nastavi", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Blokirana stranica želi preusmjeriti na drugu stranicu. Ako odlučite nastaviti, otići ćete izravno na: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Razlog:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Zlonamjerno", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Pratioc", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Zloglasno", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Izvezi u pohranu u oblaku", + "description": "tooltip" + }, + "cloudPull": { + "message": "Uvezi iz pohrane u oblaku", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Uvezite iz spremišta u oblaku i spojite sa trenutnim postavkama", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Naziv ovog uređaja:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Upozorenje! Mijenjate ove napredne postavke na vlastitu odgovornost.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Pošalji", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Primijeni promjene", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Vratiti", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bajtovi", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blokiraj element u okviru…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Prijavite se na popis filtera…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Privremeno dopusti velike medijske elemente", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Pogledaj izvorni kod...", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Utipkajte tipkovni prečac", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Uključi/Isključi zaključano pomicanje", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopiraj u međuspremnik", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Odaberi sve", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Prekidač estetskog filtriranja", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Uključi/isključi JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Opušteni način blokiranja", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Korišteno prostora: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Kliknite za pokretanje", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Greške: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Nije moguće pravilno filtrirati pri pokretanju \npreglednika. Ponovno učitajte stranicu \nkako biste osigurali ispravno filtriranje.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Ova stavka mora biti posljednja", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/hu/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/hu/messages.json new file mode 100644 index 00000000..b76014dc --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/hu/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Végre egy hatékony blokkoló, amely kíméletes a processzorral és a memóriával.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Vezérlőpult", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Figyelem! Mentetlen változtatásai vannak.", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Tartózkodás", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Figyelmen kívül hagyás", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Beállítások", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Külső szűrők", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Saját szűrők", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Saját szabályok", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Kivételek", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Billentyűparancsok", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Hálózati lekérések naplója", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Névjegy", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Támogatás", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ - Eszköznézet", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Haladó beállítások", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klikk: uBlock₀ tiltása/engedélyezése ezen a webhelyen.\n\nCtrl+klikk: csak a jelenlegi oldal tiltása/engedélyezése.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Kattints a uBlock₀ letiltásához ezen a webhelyen.\n\nCtrl+kattintás a uBlock₀ letiltásához csak a jelenlegi oldalon.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Kattintson a uBlock₀ engedélyezéséhez ezen a webhelyen.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "blokkolt lekérések", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "ezen a lapon", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} vagy {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "telepítés óta", + "description": "English: since install" + }, + "popupOr": { + "message": "vagy", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokkolva ezen az oldalon", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blokkolva a telepítés óta", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Kapcsolódott domainek", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Vezérlőpult megnyitása", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Belépés az elemeltávolító módba", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Elemválasztó mód aktiválása", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Naplózott lekérések megtekintése", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Az oldalon lévő probléma bejelentése", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Oldal összes felugró ablakának blokkolása/engedélyezése", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Kattintson az összes felugró ablak letiltásához ezen a webhelyen", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Kattints, hogy ne legyen többé az összes előugró ablak blokkolva ezen a webhelyen", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Nagyméretű média elemek blokkolásának ki/bekapcsolása", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Kattintson a nagy méretű médiaelemek blokkolásához ezen a webhelyen", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Kattints a nagyméretű médiaelemek blokkolásának visszavonásához ezen a webhelyen", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Kozmetikai szűrés ki- és bekapcsolása ezen a weboldalon", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Kattints a kozmetikai szűrés kikapcsolásához ezen a webhelyen", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Kattints a kozmetikai szűrés bekapcsolásához ezen a webhelyen", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Távoli betűkészletek blokkolásának ki/bekapcsolása ezen az oldalon", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Kattints a távoli fontok blokkolásához ezen a webhelyen", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Kattints a távoli betűtípusok blokkolásának visszavonásához ezen a webhelyen", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Kattints a JavaScript teljes letiltásához ezen az oldalon", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Kattints, hogy JavaScript ne legyen teljesen letiltva ezen az oldalon", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Felugró ablakok", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Nagy médiaelemek", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kozmetikai szűrés", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Távoli betűkészletek", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Több", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Kevesebb", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globális szabályok: ebben az oszlopban azok a szabályok vannak, amelyek minden weboldalra vonatkoznak.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokális szabályok: ebben az oszlopban azok a szabályok vannak, amelyek csak a jelenlegi weboldalra vonatkoznak.\nA lokális szabályok felülírják a globális szabályokat.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Kattintson a módosítások véglegesítéséhez.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Kattintson ide a módosítások visszavonásához.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "minden", + "description": "" + }, + "popupImageRulePrompt": { + "message": "képek", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "külső féltől", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "külső féltől származó css/képek", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline scriptek", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1st-party scriptek", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3rd-party scriptek", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3rd-party frame-ek", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domain csatlakozik", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}}, összesen: {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Verzió", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "parancsfájl", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "keret", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Létrehoz", + "description": "English: Create" + }, + "pickerPick": { + "message": "Választ", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Kilép", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Előnézet", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Hálózati szűrők", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kozmetikai szűrők", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klikk, Ctrl-klikk", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Elem blokkolása…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Blokkolt elemek helyőrzőinek elrejtése", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Jelenjen meg a blokkolt lekérések száma az ikonon", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Buboréksúgó (tooltip) kikapcsolása", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Környezeti menü alkalmazása, ahol lehetséges", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Színvak-barát", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Kinézet", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Téma", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Egyéni kiemelőszín", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Felhőben tárolás bekapcsolása", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Haladó felhasználó vagyok (További tudnivalók)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Előtöltés kikapcsolása (kapcsolódás megakadályozása blokkolt hálózati lekérésekhez)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Hivatkozás-vizsgálat kikapcsolása", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "WebRTC helyi IP-cím szivárogtatásának megakadályozása", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Alapértelmezett viselkedés", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Ezek az alapértelmezett viselkedések felülírhatóak weboldal-szinten", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Kozmetikai szűrés kikapcsolása", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "{{input}} kB-nál nagyobb médiaelemek blokkolása", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Távoli betűkészletek blokkolása", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "JavaScript letiltása", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP jelentések blokkolása", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Kanonikus nevek felfedése", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Speciális", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funkciók csak hozzáértő felhasználóknak", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "haladó beállítások", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Utolsó visszaállítás:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Utolsó biztonsági mentés:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} hálózati szűrők + {{cosmeticFilterCount}} kozmetikai szűrők:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} használatban a listában lévő {{total}} szűrő közül", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Szűrőlisták automatikus frissítése.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Frissítés most", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Gyorsítótárak ürítése", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Értelmezze és alkalmazza a kozmetikai szűrőket.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "A kozmetikai célú szűrők elrejtik a webhely azon elemeit, amelyek vizuálisan zavaróak, de a hálózati kérések alapján nem szűrhetők ki.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Általános kozmetikai szűrők figyelmen kívül hagyása", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

Az általános kozmetikai szűrők azok a kozmetikai szűrők, amelyek minden weboldalra érvényesek.

Ugyan a uBlock₀ hatékonyan kezeli őket, az általános kozmetikai szűrők mégis mérhetően magasabb memória és CPU használatot eredményezhetnek néhány weboldalon, főleg nagy, és régóta futóak esetében.

Ennek az opciónak a bekapcsolása kiküszöböli az általános kozmetikai szűrők kezeléséből a weboldalakon adódó memória és CPU használat többletet, továbbá csökkenti a uBlock₀ által foglalt memóriát is.

Ajánlott bekapcsolni ezt az opciót a gyengébb eszközökön.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Hálózati forgalom szüneteltetése, amíg a szűrőlisták be nem töltődtek", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Blokkolt hostokat tartalmazó listák", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Módosítások alkalmazása", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Beépített", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Hirdetések", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Adatvédelem", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Malware domainek", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Közösségi média felületi elemei", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Sütiértesítések", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Kellemetlenségek", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Többcélú", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Régiók, nyelvek", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Saját", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importálás...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Soronként egy URL. A ‘!’ kezdetű sorok figyelmen kívül maradnak. A szabálytalan URL-ek szintén figyelmen kívül maradnak, hibajelzés nélkül.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Elavult.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "tartalom megtekintése", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Utolsó frissítés: {{ago}}.\nKattintson a frissítés kényszerítéséhez.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Frissítés...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Egy hálózati hiba megakadályozta az erőforrás frissítését.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Ne adjon hozzá megbízhatatlan forrásokból származó szűrőket.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Egyéni szűrők engedélyezése", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Bizalmas egyéni szűrők engedélyezése", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importál és hozzáad", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exportál", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-statikus-szabalyaim_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Módosítások alkalmazása", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Állandó szabályok", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Átmeneti szabályok", + "description": "header" + }, + "rulesRevert": { + "message": "Visszaállítás", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Alkalmaz", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Szerkesztés", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Mentés", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Elvetés", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importálás fájlból…", + "description": "" + }, + "rulesExport": { + "message": "Exportálás fájlba…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ublock-dinamikus-szabalyaim_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Saját szűrőszabályok listája.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Szabály szintaxis: forrás cél típus művelet (Teljes dokumentáció).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Rendezés:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Szabály típusa", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Forrás", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Cél", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Az alábbi listában felsorolt hostokon a kiegészítő nem fog működni. Soronként egy bejegyzés. Érvénytelen hostnevek figyelmen kívül maradnak.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importál és hozzáad", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exportál", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ublock-megbizhato-oldalak_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Módosítások alkalmazása", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Típus", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domain", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Szűrő", + "description": "English: Filter" + }, + "logAll": { + "message": "Összes", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Hálózati forgalom a háttérben", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Jelenlegi lap", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Töltse újra a lap tartalmát", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM ellenőrző kapcsolása", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Felugró panel kapcsolása", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: A naplózó", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Naplózó törlése", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Naplózás szüneteltetése (az összes bejövő adat elvetése)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Naplózó folytatása", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Naplózó szűrése be/ki", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "naplóbejegyzések szűrése", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Naplózó szűrőbeállításai", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Nem", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokkolva", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "engedélyezve", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "módosítva", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1. fél", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3. fél", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Részletek", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Szűrő", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Szűrőlista", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Szabály", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Környezet", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Gyökérkörnyezet", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Fél", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Típus", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Webcímszabály", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontextus:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Típus:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statikus szűrő", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "Hálózati kérések {{action}} amik {{type}} {{br}} és illeszkednek a(z) {{url}} URL-re {{br}} és amik innen származnak: {{origin}},{{br}}{{importance}} van illeszkedő kivétel szűrő.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "blokkolása", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "engedélyezése", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "„{{type}}” típusúak", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "bármilyen típusúak", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "{{origin}}", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "bárhonnan", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "kivéve ha", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "akkor is, ha", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statikus filter, amiben {{filter}} benne van:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "A statikus szűrő {{filter}} nem található az aktuálisan engedélyezett szűrőlisták egyikében sem", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Azok a naplóbejegyzések, amelyek nem felelnek meg az alábbi három feltételnek, automatikusan eldobásra kerülnek:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Bejegyzések megőrzése az utolsó {{input}} percből", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Laponként legfeljebb {{input}} oldalbetöltés megtartása", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Laponként legfeljebb {{input}} bejegyzés megtartása", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Bejegyzésenként {{input}} sor használata a függőlegesen bővített módban", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Oszlopok elrejtése:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Idő", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Szűrő/szabály", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Környezet", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Fél", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Lista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tábla", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Egyszerű", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Megnyitás", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Hiba bejelentése", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Hasonló hibák keresése", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentáció", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "A uBlock Origin további funkcióihoz olvassa el a dokumentációt itt: uBlock/wiki.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Kérdések és támogatás", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "A felhasználói kérdésekre választ és további segítséget, támogatást az /r/uBlockOrigin subredditen nyújtunk.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Szűrőhibák/a weboldal nem működik megfelelően", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Az adott weboldalra vonatkozó szűrőhibákat jelentse a uBlockOrigin/uAssets hibakövetőben. GitHub-fiók szükséges.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Fontos: Ne használjon hasonló célú reklámblokkolókat a uBlock Originnel egyidőben, mert ez szűrőhibákat okozhat bizonyos weboldalakon.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tippek: Bizonyosodjon meg arról, hogy a legfrissebb szűrőlistákat használja. A naplózó a legfontosabb eszköz a szűrőkkel kapcsolatos hibák megállapításában.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Hibajelentés", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "A uBlock Origin hibáit jelentse a uBlockOrigin/uBlock-issue hibakövetőben. GitHub-fiók szükséges.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Hibakeresési információk", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Az alábbi műszaki információk segíthetnek önkénteseinknek megoldani a problémáját.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Szűrőhibák bejelentése", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Az önkéntesek terhelésének csökkentése érdekében győződjön meg róla, hogy a hiba még nem lett bejelentve.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "A szűrőlisták naponta frissülnek. Győződjön meg róla, hogy a problémáját nem oldják meg a legfrissebb szűrőlisták.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Ellenőrizze, hogy a probléma a problémás weboldal újratöltése után is fennáll-e.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "A weboldal címe:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "A weboldal…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Válasszon egy bejegyzést --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Hirdetéseket vagy azok maradványait jelenít meg", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Zavaró elemeket tartalmaz", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Észleli a uBlock Origint", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Adatvédelmi problémákat vet fel", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Hibásan működik, amikor a uBlock Origin be van kapcsolva", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Kéretlen lapokat vagy ablakokat nyit meg", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Kártékony programokhoz, adathalászathoz vezet", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "A weboldal megjelölése felnőtt tartalomként", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Adatvédelmi irányelvek", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Változások listája", + "description": "" + }, + "aboutCode": { + "message": "Forráskód (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Közreműködők", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Forráskód", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Fordítások", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Szűrőlisták", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Külső függőségek (GPLv3-kompatibilis):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "A uBO saját szűrőlistáit a következő ingyenes CDN-ek (angol) szolgáltatják:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A szűrőlisták frissítéséhez egy véletlenszerűen kiválasztott CDN használatos.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Biztonsági mentés fájlba…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-mentesem_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Visszaállítás fájlból...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Alapértelmezett beállítások visszaállítása…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "A jelenlegi beállítások felülíródnak a mentett adatokkal (mentési idő: {{time}}), utána a uBlock₀ újraindul.\n\nFelülírja a jelenlegi beállításokat a biztonsági mentéssel?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Nem olvasható vagy érvénytelen adat", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Az összes beállítás törlődik, utána a uBlock₀ újraindul.\n\nÁllítsa vissza a gyári beállításokat?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Hálózati hiba: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Feliratkozás", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "egy perce", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} perce", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "egy órája", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} órája", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "egy napja", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} napja", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Vezérlőpult megnyitása", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Napló mutatása", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "kikapcsolva", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Oldal blokkolva", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin nem engedte a következő lap betöltését:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "A következő szűrő miatt", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "paraméterek nélkül", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Ezekben található:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Vissza", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Ablak bezárása", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Ne figyelmeztessen újra ennél az oldalnál", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Kapcsolja ki a szigorú tiltást a(z) {{hostname}} részére", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Ideiglenesen", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Véglegesen", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Továbblépés", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "A blokkolt oldal egy másik webhelyre akarja átirányítani. Ha a folytatást választja, akkor közvetlenül ide fog navigálni: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Ok:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Káros", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Nyomkövető", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Rossz hírnevű", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exportálás a felhőszolgáltatásba", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importálás a felhőszolgáltatásból", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importálás a felhőből és egybevonás a jelenlegi beállításokkal", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Ennek az eszköznek a neve:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Figyelem! Haladó beállítások, megváltoztatásuk csak saját felelősségre.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Küldés", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Módosítások alkalmazása", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Visszaállítás", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bájt", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Elem blokkolása a keretben…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Feliratkozás szűrőlistára…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Nagyméretű média elemek ideiglenes engedélyezése", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Forráskód megtekintése…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Billentyűkombináció megadása", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Zárolt görgetés be/ki", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Másolás a vágólapra", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Összes kijelölése", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Kozmetikai szűrés kapcsolása", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Javascript be/ki", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Blokkolási mód lazítása", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Használt tárhely: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "kB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Kattintson a betöltéshez", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Hibák: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Nem sikerült megfelelően szűrni a böngésző indításakor. Töltse újra az oldalt a megfelelő szűrés biztosítása érdekében.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Ez a bejegyzés utolsó kell hogy legyen", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/hy/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/hy/messages.json new file mode 100644 index 00000000..21667ae0 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/hy/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Վերջապե՛ս, արդյունավետ արգելափակիչ։ Խնայում է մշակիչը և հիշողությունը։", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Կառավահան", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Ուշադրությո՛ւն։ Դուք ունեք չպահպանված փոփոխություններ։", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Մնալ", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Անտեսել", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Կարգավորումներ", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Զտիչների ցանկեր", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Իմ զտիչները", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Իս կանոնները", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Վստահված կայքեր", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Դյուրանցումներ", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Մատյան", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Ընդլայնման մասին", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Աջակցություն", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Ակտիվների դիտակ", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Ընդլայնված կարգավորումներ", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Կտտոց՝ անջատել/միացնել uBlock₀-ն այս կայքի համար։\n\nCtrl+կտտոց՝ անջատել uBlock₀-ը միայն այս էջում։", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Կտտացրեք՝ uBlock₀֊ն այս կայքի համար անջատելու համար։\n\nCtrl+կտտոց՝ uBlock₀֊ն միայն այս էջում անջատելու համար։", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "կտտացրեք՝ uBlock₀֊ն այս կայքի համար միացնելու համար։", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "արգելափակված հարցում", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "այս էջում", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "տեղադրման պահից", + "description": "English: since install" + }, + "popupOr": { + "message": "կամ", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Արգելափակվել է այս էջում", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Արգելափակվել է տեղադրման պահից", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Միացվել է տիրույթներ", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Բացել կառավահանը", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Գործարկել տարրերի ջնջման ռեժիմը", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Գործարկել տարրերի ընտրության ռեժիմը", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Բացել մատյանը", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Հաղորդել կայքում առաջացած խնդրի մասին", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Միաց./Անջ. այս կայքի բոլոր ելնող լուսամուտների արգելափակումը", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Կտտացրեք՝ այս կայքի բոլոր ելնող լուսամուտներն արգելափակելու", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Կտտացրեք՝ այս կայքի բոլոր ելնող լուսամուտների արգելափակումն անջատելու", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Միաց./Անջ. այս կայքի խոշոր մեդիա տարրերի արգելափակումը", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Կտտացրեք՝ այս կայքի խոշոր մեդիա տարրերն արգելափակելու", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Կտտացրեք՝ այս կայքի խոշոր մեդիա տարրերի արգելափակումն անջատելու", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Միաց./Անջ. կոսմետիկ զտումն այս կայքի համար", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Կտտացրեք՝ այս կայքում կոսմետիկ զտումն անջատելու", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Կտտացրեք՝ այս կայքում կոսմետիկ զտումը միացնելու", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Միաց./Անջ. կողմնակի տառատեսակների արգելափակումն այս կայքի համար", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Կտտացրեք՝ կողմնակի տառատեսակներն այս կայքում արգելափակելու", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Կտտացրեք՝ այս կայքի համար կողմնակի տառատեսակների արգելափակումն անջատելու", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Կտտացրեք՝ JavaScript֊ն այս կայքում անջատելու", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Կտտացրեք՝ այս կայքում JavaScript֊ն այլևս չանջատելու համար", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Ելնող լուսամուտներ", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Խոշոր մեդիա տարրեր", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Կոսմետիկ զտում", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Կողմնակի տառատեսակներ", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Ավել", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Պակաս", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Համընդհանուր կանոններ. այս սյունակը նախատեսված է բոլոր կայքերի վրա տարածվող կանոնների համար։", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Տեղական կանոններ. այս սյունակը նախատեսված է միայն այս կայքի վրա տարածվող կանոնների համար։", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Կտտացրեք՝ փոփոխությունները պահպանելու համար։", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Կտտացրեք՝ փոփոխությունները հետարկելու համար։", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "բոլորը", + "description": "" + }, + "popupImageRulePrompt": { + "message": "պատկերներ", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3-րդ կողմերի ռեսուրսներ", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "3-րդ կողմերի CSS/պատկերներ", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "ներտող սկրիպտներ", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1-ին կողմի սկրիպտներ", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3-րդ կողմերի սկրիպտներ", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3-րդ կողմերի շրջանակներ", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "միացված տիրույթներ", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}}֊ից {{count}}֊ը", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Տարբերակ", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "սկրիպտ", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "շրջանակ", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Ստեղծել", + "description": "English: Create" + }, + "pickerPick": { + "message": "Ընտրել", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Դուրս գալ", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Նախադիտում", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Ցանցային զտիչներ", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Կոսմետիկ զտիչներ", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Կտտոց, Ctrl+կտտոց", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Արգելափակել տարրը...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Թաքցնել արգելափակված տարրերի տեղապահները", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Ցուցադրել արգելափակված հայտերի քանակը պատկերակի վրա", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Անջատել գործիքահուշերը", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Օգտվեք համատեքստային ընտրացանկից, երբ դա տեղին է", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Բարեհաճ գույներ գունակուրություն ունեցողների համար", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Արտաքին տեսք", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Թեմա", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Ընտրովի շեշտային գույն", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Միացնել ամպային պահեստի աջակցոմը", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Ես հմուտ օգտվող եմ (կարդալը պարտադիր է)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Անջատել նախաբեռնումը՝ արգելափակված ցանցային հայտերի համար միացումները կանխելու", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Անջատել հիպերհղումների ստուգումը", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Կանխել տեղական IP-հասցեների արտահոսքը WebRTC-ի միջոցով", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Լռելյայն վարքագիծ", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Այս կարգավորումները կարող են նշված լինել յուրաքանչյուր կայքի համար ջոկ֊ջոկ", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Անջատել կոսմետիկ զտումը", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Արգելափակել {{input}} ԿԲ-ից մեծ մեդիա տարրերը", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Արգելափակել կողմնակի տառատեսակները", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Անջատել JavaScript֊ը", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Արգելափակել CSP հաշվետվությունները", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Բանալ կանոնական անունները", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Ընդլայնված կարգավորումներ", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Տեխնիկական օգտվողների համար նախատեսված գործառույթներ", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "ընդլայնված կարգավորումներ", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Վերջին վերականգնումը՝", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Վերջին պահուստային պատճենը՝", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} ցանցային զտիչ + {{cosmeticFilterCount}} կոսմետիկ զտիչ այստեղից՝", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}}֊ից օգտագործվում է {{used}}֊ը", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Ինքնաշխատորեն թարմացնել զտիչների ցանկերը", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Թարմացնել հիմա", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Մաքրել բոլոր հիշապահեստները", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Վերլուծել և կիրառել կոսմետիկ զտիչներ", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Կոսմետիկ զտիչները ծառայում են կայքէջի այն տարրերը թաքցնելու համար, որոնք պատճառում են տեսողական անհանգստություն և որոնք չեն կարող արգելափակվել ցանցային հայտերի հիման վրա աշխատող զտման մեխանիզմներով։", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Անտեսել ընդհանուր կոսմետիկ զտիչները", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Ընդհանուր կոսմետիկ զտիչներն այն կոսմետիկ զտիչներն են, որոնք նախատեսված են կիրառվել բոլոր կայքերում։ Այս ընտրանքը միացնելը կվերացնի հիշողության և մշակիչի բեռնվածությունը, որը կայքեջերի մոտ ավելանում է ընդհանուր կոսմետիկ զտիչների մշակման արդյունքում։\n\nԽորհուրդ է տրվում միացնել այս ընտրանքը ոչ բավականաչափ հզոր սարքերում։", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Կանգնեցնել ցանցային ակտիվությմւնը մինչև բեռնվեն զտիչների բոլոր ցուցակները", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Կիրառել փոփոխությունները", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Ներկառուցված", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Գովազդ", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Գաղտնիություն", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Վնասակար ծրագրերից պաշտպանություն, անվտանգություն", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Սոցիալական վիդջեթներ", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie ծանուցում", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Ջղայնացնող տարրեր", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Բազմանպատակային", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Տարածաշրջաններ, լեզուներ", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Օգտվողային", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Ներմուծել...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Մեկ URL մեկ տողում։ Անվավեր URL֊ներն անտեսվելու են առանց նախազգուշացման։", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Ժամկետանց։", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "տեսնել բովանդակությունը", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Վերջին թարմացումը՝ {{ago}}։\nԿտտացրեք՝ ստիպողական թարմացման համար։", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Թարմացվում է...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Ցանցի սխալի պատճառով թարմացումը տեղի չունեցավ։", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Մի՛ ավելացրեք զտիչներ անվստահելի աղբյուրներից։", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Թուլատրել իմ անհատական ֆիլտրերը", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Թույլատրել վստահություն պահանջող հատուկ զտիչները", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Ներմուծել և հավելել", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Արտահանել", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Կիրառել փոփոխությունները", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Մշտական կանոններ", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Ժամանակավոր կանոններ", + "description": "header" + }, + "rulesRevert": { + "message": "Հետադարձել", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Հաստատել", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Խմբագրել", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Պահպանել", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Չեղարկել", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Ներմուծել նիշքից...", + "description": "" + }, + "rulesExport": { + "message": "Արտահանել դեպի նիշք", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Դինամիկական զտման կանոնների Ձեր ցուցակը։", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Կանոնների շարահյուսություն՝ աղբյուր նպատակակետ տեսակ գործողություն (բոլոր փաստաթղթերը)։", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Տեսակավորել՝", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Կանոնի տեսակ", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Աղբյուր", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Նպատակակետ", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Վստահված կայքերի ցուցակը սահմանում է, թե որ կայքերում uBlock Origin-ը պիտի անջատված լինի։ Մեկ տողում մեկ գրառում։ Անճիշտ կանոններն առանց նախազգուշացման անտեսվելու և մեկնաբանվելու են։", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Ներմուծել և հավելել", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Արտահանել", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Կիրառել փոփոխությունները", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Տեսակ", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Տիրույթ", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Զտիչ", + "description": "English: Filter" + }, + "logAll": { + "message": "Բոլորը", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Անդրկուլիսյան հարցումներ", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Ընթացիկ ներդիր", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Վերաբեռնել ներդիրի բովանդակությունը", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Միաց./Անջատել DOM-տեսուչը", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Միաց./Անջատել ելնող վահանակը", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin վիքի. Մատյան", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Մաքրել մատյանը", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Դադարեցնել մատյանավորումը (մերժել բոլոր մուտքային տվյալները)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Վերսկսել մատյանավորումը", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Միաց./Անջ. մատյանի զտումը", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "մատյանի գրառումների զտում", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Մատյանի զտման ընտրանքներ", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Ոչ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "արգելափակված", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "թույլատրված", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "փոփոխված", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1-ին կողմ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3-րդ կողմ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Մանրամասներ", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Զտիչ", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Զտիչների ցանկ", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Կանոն", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Համատեքստ", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Արմատային համատեքստ", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Պատկանելություն", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Տեսակ", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL-ի կանոն", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Համատեքստ՝", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Տեսակ՝", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Ստատիկ զտիչ", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} {{type}} ցանցային հարցումները,{{br}}որոնց URL-հասցեներն համընկնում են {{url}} {{br}}և որոնք ծագում են {{origin}},{{br}}{{importance}} կա համապատասխան բացառության կանոն։", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Արգելափակել", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Թույլատրել", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "«{{type}}» տեսակի", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "ցանկացած տեսակի", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "«{{origin}}»-ից", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "ցանկացած տեղից", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "բացառությամբ այն դեպքերի, երբ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "նույնիսկ եթե", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "{{filter}} ստատիկ զտիչը գտնվել է՝", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Ստատիկ զտիչն անհնար է գտնել ներկայումս միացված զտիչների ցանկերից որևէ մեկում", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Մատյանի գրառումները, որոնք չեն բավարարում ցածում նշված բոլոր երեք պայմաններին, ինքնաշխատ կմերժվեն։", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Պահպանել վերջին {{input}} րոպեի գրառումները", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Պահպանել ոչ ավելի, քան {{input}} բեռնում ամեն մի ներդիրում", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Պահպանել ոչ ավելի, քան {{input}} գրառում ամեն մի ներդիրում", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Ուղղահայացորեն ընդլայնված ռեժիմում օգտագործել {{input}} տող ամեն մի գրառման համար", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Թաքցնել սյունակները՝", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Ժամանակ", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Զտիչ/կանոն", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Համատեքստ", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Պատկանելություն", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Ցանկ", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Աղյուսակ", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Պարզ", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Բացել", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Նոր զեկույց ստեղծել", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Գտնել նման զեկույցներ", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Փաստաթղթեր", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Կարդացեք փաստաթղթերը uBlock/wiki-ում՝ uBlock Origin-ի բոլոր հնարավորությունների մասին իմանալու։", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Հարցեր և աջակցություն", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Հարցերի պատասխանները և օգնության այլ տեսակները մատչելի են Reddit-ի /r/uBlockOrigin բաժնում։", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Զտիչի խնդիրներ/կայքը կոտրված է", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Հաղորդեք որոշակի կայքերի հետ կապված զտիչի խնդիրների մասին uBlockOrigin/uAssets-ի խնդիրների հետագծիչի բաժնում։ Պահանջվում է GitHub հաշիվ։", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Կարևոր է. Խուսափեք uBlock Origin-ի հետ մեկտեղ նման այլ արգելափակիչներ օգտագործելուց, քանի որ դա կարող է որոշակի կայքերում զտիչի հետ կապված խնդիրներ առաջացնել:", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Խորհուրդներ.Համոզվեք, որ Ձեր զտիչների ցուցակները թարմացված են: Մատյանը զտիչների հետ կապված խնդիրների ախտորոշման հիմնական գործիքն է։", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Զեկույց սխալի մասին", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Հաղորդեք uBlock Origin-ի սեփական սխալների մասին uBlockOrigin/uBlock-issue խնդիրների հետագծիչի բաժնում։ Պահանջվում է GitHub հաշիվ։", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Ախտորոշիչ տեղեկություն", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Ցածում տեխնիկական տեղեկություն է, որը կարող է օգտակար լինել, երբ կամավորները փորձում են օգնել Ձեզ լուծել խնդիրը։", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Հաղորդել զտիչի խնդրի մասին", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Կամավորներին կրկնօրինակ զեկույցներով չծանրաբեռնելու համար խնդրում ենք ստուգել, որ խնդիրն արդեն հաղորդված չէ։", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Զտիչների ցուցակները թարմացվում են ամեն օր։ Համոզվեք, որ Ձեր խնդիրը չի լուծվել զտիչների թարմ ցուցակներում։", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Համոզվեք, որ խնդիրը պահպանվում է նույնիսկ խնդրահարույց էջը վերաբեռնելուց հետո։", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Վեբ էջի հասցեն՝", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Վեբ էջը...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Ընտրեք կատեգորիա --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Գովազդ է ցուցադրվում կամ դրա մնացորդներ", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Վրածածկումներ կամ այլ խանգարումներ", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Հայտնաբերվում է uBlock Origin-ը", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Գաղտնիության հետ կապված խնդիրներ", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Անսարքություններ, երբ uBlock Origin-ը միացված է", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Բացում է անցանկալի ներդիրները կամ լուսամուտները", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Նշել վեբ էջը որպես «NSFW» («Աշխատանքի համար անվտանգ չէ»)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Գաղտնիության քաղաքականություն", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Փոփոխությունների մատյան", + "description": "" + }, + "aboutCode": { + "message": "Աղբյուրի կոդ (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Աջակցողներ", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Աղբյուրի կոդ", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Թարգմանություններ", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Զտիչների ցանկեր", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Արտաքին կախվածություններ (GPLv3-համատեղելի)՝", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO-ի սեփական զտիչների ցանկերն ազատորեն տեղաբաշխված են հետևյալ CDN-երում.", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Զտիչների ցանկը թարմացնելիս օգտագործվում է պատահականորեն ընտրված CDN", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Պահուստավորել նիշքում...", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-իմ-պահուստ_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Վերականգնել նիշքից...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Վերականգնել լռելյայն կարգավորումները...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Ընթացիկ կարգավորումները կփոխարինվեն տվյալներով {{time}}-ին ստեղծված պահուստային պատճենից, և uBlock₀-ը կվերագործարկվի։\n\nՓոխարինե՞լ առկա բոլոր կարգավորումները պահուստավորված տվյալներով։", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Տվյալները չեն կարող ընթերցվել կամ անվավեր են", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Ձեր բոլոր կարգավորումները կջնջվեն, uBlock₀֊ը կվերագործարկվի։\n\nՎերականգնե՞լ լռելյայն կարգավորումները։", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Ցանցի սխալ՝ {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Բաժանորդագրվել", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "րոպե առաջ", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} րոպե առաջ", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "ժամ առաջ", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} ժամ առաջ", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "օր առաջ", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} օր առաջ", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Ցույց տալ կառավահանը", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Ցույց տալ մատյանը", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "անջատված է", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Էջն արգելաբացվեց", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin֊ը կանխել է հետևյալ էջի բեռնումը՝", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Հետևյալ զտիչի պատճառով՝", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "առանց չափանիշների", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Գտնվել է այստեղ՝", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Հետ", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Փակել այս լուսամուտը", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Այլևս չզգուշացնե՛լ ինձ այս կայքի մասին", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Անջատեք խիստ արգելափակումը {{hostname}}-ի համար", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Առժամապես", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Մշտապես", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Շարունակել", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Արգելափակված կայքը ցանկանում է տեղափոխել Ձեզ ուրիշ կայք։ Եթե ցանկանում եք շարունակել, Դուք անմիջապես կտեղափոխվեք {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Արտահանել առ ամպային պահեստ", + "description": "tooltip" + }, + "cloudPull": { + "message": "Ներմուծել ամպային պահեստից", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Ներմուծել ամպային պահեստից և միաձուլել ընթացիկ կարգավորումների հետ", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Այս սարքի անունը՝", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Ուշադրությո՛ւն։ Փոխեք այս կարգավորումները Ձեր ռիսկով և պատասխանատվությամբ։", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Հաստատել", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Կիրառել", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Հետադարձել", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "բայթ", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Արգելափակել տարրը շրջանակում...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Բաժնեգրվել զտիչների ցանկի...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Ժամանակավորապես թույլ տալ խոշոր մեդիա տարրերը", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Դիտել աղբյուրի կոդը…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Մուտքագրեք դյուրանցում", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Միաց./Անջատել ընդհանուր ոլորումը", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Պատճենել առ սեղմատախտակ", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Ընտրել բոլորը", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Փոխանջատել կոսմետիկ զտումը", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Անջատել JavaScript֊ը", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Արգելափակման թուլացված ռեժիմ", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Պահեստի չափը՝ {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "ԿԲ", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "ՄԲ", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "ԳԲ", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Կտտացրեք՝ բեռնելու համար", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Սխալներ՝ {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Չհաջողվեց կատարել զտումը զննիչի գործարկման ժամանակ։\nՎերաբեռնեք էջը՝ պատշաճ զտումն ապահովելու համար։", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/id/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/id/messages.json new file mode 100644 index 00000000..00312f70 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/id/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Akhirnya, pemblokir iklan yang efisien. Ringan penggunaan CPU dan memori.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dasbor", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Peringatan! Anda memiliki ubahan yang belum disimpan", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Tinggal", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Abaikan", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Pengaturan", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Daftar Filter", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Filter Saya", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Aturan Saya", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Situs Terpercaya", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Pintasan", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Pencatat Log", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Tentang", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Dukungan", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Penampil aset", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Pengaturan lanjutan", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klik: nonaktif/aktifkan uBlock₀ untuk situs ini.\n\nCtrl+klik: nonaktifkan uBlock₀ hanya di laman ini.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Klik untuk menonaktifkan uBlock₀ pada situs ini.\n\nCtrl+klik untuk menonaktifkan uBlock₀ hanya di laman ini.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klik untuk mengaktifkan uBlock₀ pada situs ini.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "permintaan diblokir", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "di laman ini", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} atau {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "sejak dipasang", + "description": "English: since install" + }, + "popupOr": { + "message": "atau", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Diblokir di laman ini", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Diblokir sejak dipasang", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domain terhubung", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Buka dasbor", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Memasuki mode penghapus elemen", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Memasuki mode pemilihan elemen", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Buka pencatat log", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Laporkan masalah di situs web ini", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Alihkan pemblokiran semua popup untuk situs ini", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klik untuk memblokir semua popup pada situs ini", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klik untuk tidak lagi memblokir semua popup pada situs ini", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Aktifkan/Nonaktifkan pemblokiran elemen media besar untuk situs ini", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klik untuk memblokir elemen media berukuran besar pada situs ini", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klik untuk tidak lagi memblokir elemen media berukuran besar pada situs ini", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Aktif/Nonaktifkan filter tampilan untuk situs ini", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klik untuk menonaktifkan filter tampilan pada situs ini", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klik untuk mengaktifkan filter tampilan pada situs ini", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Aktif/Nonaktifkan pemblokiran fon eksternal untuk situs ini", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klik untuk memblokir fon eksternal pada situs ini", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klik untuk tidak lagi memblokir fon eksternal pada situs ini", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klik untuk menonaktifkan total JavaScript di situs ini", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klik untuk tidak lagi menonaktifkan total JavaScript di situs ini", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Jendela pop-up", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Elemen media besar", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filter tampilan", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Fon eksternal", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Lebih banyak", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Lebih sedikit", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Aturan global: kolom ini untuk aturan yang diterapkan ke semua situs.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Aturan lokal: kolom ini untuk aturan yang diterapkan ke situs yang sedang dikunjungi saja.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Klik untuk membuat ubahan Anda permanen.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klik untuk membatalkan ubahan Anda.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "semua", + "description": "" + }, + "popupImageRulePrompt": { + "message": "gambar", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "pihak ketiga", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/gambar pihak ke-3", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "skrip inline", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "skrip pihak pertama", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "skrip pihak ketiga", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "frame pihak ketiga", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domain terhubung", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} dari {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versi", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skrip", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Buat", + "description": "English: Create" + }, + "pickerPick": { + "message": "Pilih", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Keluar", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Pratinjau", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filter jaringan", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filter tampilan", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Ctrl-klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blok elemen", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Sembunyikan wadah elemen yang diblokir", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Tampilkan jumlah permintaan yang diblokir pada ikon", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Nonaktifkan tip alat", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Pergunakan menu konteks jika sesuai", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Ramah buta warna", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Tampilan", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Warna aksen khusus", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Aktifkan dukungan penyimpanan awan", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Saya pengguna tingkat lanjut", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Nonaktifkan pra-ambil (untuk mencegah sambungan apapun untuk permintaan jaringan yang diblokir)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Nonaktifkan pengauditan pranala", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Cegah WebRTC membocorkan alamat IP lokal", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Perilaku bawaan", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Perilaku bawaan ini bisa ditimpa pada masing-masing aturan situs", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Nonaktifkan filter tampilan", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokir elemen media yang lebih besar dari {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokir fon eksternal", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Nonaktifkan JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blokir laporan CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Ungkap nama kanonis", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Tingkat lanjut", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Fitur ditujukan untuk pengguna tingkat lanjut.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "pengaturan lanjutan", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Pemulihan terakhir:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Pencadangan terakhir:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} filter jaringan + {{cosmeticFilterCount}} filter tampilan dari:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} digunakan dari {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Otomatis perbarui daftar filter", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Perbarui sekarang", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Bersihkan semua tembolok", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Urai dan paksa terapkan filter tampilan", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Filter tampilan berfungsi untuk menyembunyikan elemen di halaman web yang dianggap sebagai gangguan visual, dan tidak bisa diblokir oleh filter berbasis permintaan jaringan.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Abaikan filter tampilan generik", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Filter tampilan generik adalah filter tampilan yang dibuat untuk diterapkan pada semua situs web. Mengaktifkan opsi ini akan menghilangkan peningkatan overhead memori ram dan CPU pada halaman web akibat diterapkannya filter tampilan generik.\n\nDirekomendasikan untuk mengaktifkan opsi ini pada perangkat dengan performa rendah.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Tunda aktivitas jaringan sampai semua daftar filter dimuat", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Daftar host yang diblokir", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Terapkan perubahan", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Bawaan", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Iklan", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privasi", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Perlindungan malware, keamanan", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Gawai sosial", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Pemberitahuan cookie", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Gangguan", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Serbaguna", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Wilayah, bahasa", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Khusus", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Impor…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Satu URL per baris. URL yang tidak valid akan diabaikan tanpa peringatan.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Sudah usang.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "lihat konten", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Pembaruan terakhir: {{ago}}.\nKlik untuk memaksa memperbarui.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Memperbarui…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Galat jaringan mencegah sumber daya diperbarui.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Jangan tambah filter dari sumber yang tidak terpercaya.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Aktifkan filter kustom saya", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Izinkan filter kustom yang memerlukan kepercayaan", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Impor dan tambahkan…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Ekspor…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Terapkan perubahan", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Aturan permanen", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Aturan sementara", + "description": "header" + }, + "rulesRevert": { + "message": "Urungkan", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Tetapkan", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Sunting", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Simpan", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Batal", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Impor dari berkas…", + "description": "" + }, + "rulesExport": { + "message": "Ekspor ke berkas…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Daftar aturan filter dinamis Anda.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Aturan sintaksis: sumber tujuan jenis tindakan (dokumentasi lengkap).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Urutkan:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Tipe aturan", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Sumber", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Tujuan", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Arahan situs tepercaya menentukan halaman web mana yang uBlock Origin harus dinonaktifkan. Satu entri per baris.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Impor dan tambahkan…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Ekspor…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Terapkan perubahan", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Jenis", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domain", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Semua", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Di balik layar", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Tab saat ini", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Muat ulang konten tab", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Aktif/Nonaktifkan inspeksi DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Aktif/Nonaktifkan panel popup", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Pencatat log", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Kosongkan pencatat log", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Jeda pencatat log (buang semua data masuk)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Lanjutkan pencatat log", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Aktif/Nonaktifkan penyaringan pencatat log", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filter konten pencatat log", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opsi filter pencatat log", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Tidak", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "diblokir", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "diizinkan", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "diubah", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "pihak ke-1", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "pihak ke-3", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detail", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Daftar filter", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Aturan", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Konteks", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Konteks induk", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Hubungan", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Jenis", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Aturan URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Konteks:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Jenis:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Filter statis", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} permintaan jaringan dari {{type}} {{br}}yang alamat URLnya cocok dengan {{url}} {{br}}dan yang berasal dari {{origin}},{{br}}{{importance}} ada pengecualian penyaring yang cocok.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokir", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Izinkan", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "jenis “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "semua jenis", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "dari “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "dari manapun", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "kecuali ketika", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "meskipun", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Filter statis {{filter}} ditemukan di dalam:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Filter statis tidak dapat ditemukan di semua daftar filter yang aktif saat ini", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Entri pencatat log yang tidak memenuhi ketiga kondisi di bawah akan otomatis dibuang:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Pertahankan entri sejak {{input}} menit terakhir", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Pertahankan maksimal {{input}} pemuatan laman per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Pertahankan maksimal {{input}} entri per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Gunakan {{input}} baris per entri dalam mode perluasan vertikal", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Sembunyikan kolom:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Waktu", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/aturan", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Konteks", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Relasi", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Daftar", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabel", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Biasa", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Buka", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Buat laporan baru di Github", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Temukan laporan serupa di Github", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentasi", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Baca dokumentasi di uBlock/wiki untuk mempelajari semua fitur uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Pertanyaan dan dukungan", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Jawaban pertanyaan dan dukungan bantuan lainnya tersedia di subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Masalah filter/situs web rusak", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Laporkan masalah filter pada situs web ke pelacak masalah uBlockOrigin/uAssets. Membutuhkan akun GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Penting: Hindari menggunakan pemblokir sejenis bersamaan dengan uBlock Origin, karena mungkin akan mengakibatkan terjadinya masalah filter pada situs web tertentu.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Pastikan filter Anda selalu yang terbaru. Pencatat log adalah utilitas utama untuk mendiagnosis masalah yang terkait dengan filter.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Laporan bug", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Laporkan masalah ekstensi uBlock Origin ke pelacak masalah uBlockOrigin/uBlock-issue. Membutuhkan akun GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informasi penyelesaian masalah", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Di bawah ini adalah informasi teknis yang mungkin berguna saat sukarelawan berusaha membantu memecahkan masalah Anda.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Laporkan masalah filter", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Untuk menghindari membebani sukarelawan dengan laporan duplikat, harap verifikasi bahwa masalah tersebut belum dilaporkan.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Daftar filter diperbarui setiap hari. Pastikan masalah Anda belum teratasi dalam daftar filter terbaru.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verifikasi bahwa masalah masih ada setelah memuat ulang halaman web yang bermasalah.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Alamat laman web:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Laman web…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pilih entri --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Menampilkan iklan atau sejenisnya", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Memiliki overlay atau gangguan lainnya", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Mendeteksi uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Memiliki masalah terkait privasi", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Rusak saat uBlock Origin aktif", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Membuka tab atau jendela yang tidak diinginkan", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Mengarah ke perangkat lunak jahat, pengelabuan", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Beri label halaman web sebagai “TAUSB” (“Tidak Aman Untuk Saat Bekerja”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Kebijakan privasi", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Catatan perubahan", + "description": "" + }, + "aboutCode": { + "message": "Kode sumber (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Kontributor", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Kode sumber", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Terjemahan", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Daftar filter", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Dependensi eksternal (kompatibel GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Daftar filter bawaan uBO dihosting secara gratis di CDN berikut:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "CDN yang dipilih secara acak digunakan saat daftar filter perlu diperbarui", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Cadangkan ke berkas…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Pulihkan dari berkas…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Kembalikan ke pengaturan bawaan…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Semua pengaturan Anda akan ditimpa dengan data yang dicadangkan pada {{time}}, dan uBlock₀ akan memulai ulang.\n\nTimpa semua pengaturan yang ada dengan data cadangan?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Data tidak dapat dibaca atau tidak valid", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Semua pengaturan Anda akan dihapus, dan uBlock₀ akan memulai ulang.\n\nKembalikan uBlock₀ ke pengaturan bawaan?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Galat jaringan: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Berlangganan", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "semenit yang lalu", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} menit yang lalu", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "sejam yang lalu", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} jam yang lalu", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "sehari yang lalu", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} hari yang lalu", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Tampilkan Dasbor", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Tampilkan Pencatat Log", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "mati", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Halaman diblokir", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin telah mencegah halaman berikut dimuat:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Disebabkan oleh filter berikut", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "tanpa parameter", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Ditemukan di:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Kembali", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Tutup jendela ini", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Jangan ingatkan saya lagi tentang situs ini", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Nonaktifkan pemblokiran ketat untuk {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Sementara", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanen", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Lanjutkan", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Halaman yang terblokir ingin dialihkan ke situs lain. Jika Anda memilih untuk melanjutkan, Anda akan langsung menuju ke: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Penyebab", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Berbahaya", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Pelacak", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Tidak bisa dipercaya", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Ekspor ke penyimpanan awan", + "description": "tooltip" + }, + "cloudPull": { + "message": "Impor dari penyimpanan awan", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Impor dari penyimpanan awan dan gabungkan dengan pengaturan saat ini", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Nama perangkat ini:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Peringatan! Ubah pengaturan lanjutan berikut dengan risiko Anda sendiri.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Kirim", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Terapkan perubahan", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Urungkan", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "byte", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blokir elemen di dalam frame...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Berlangganan daftar filter…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Sementara izinkan elemen media besar", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Lihat kode sumber…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Ketik pintasan", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Aktif/Nonaktifkan bilah gulir", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Salin ke papan klip", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Pilih semua", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Aktif/Nonaktifkan filter tampilan", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Aktif/Nonaktifkan JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Perlonggar mode pemblokiran", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Penyimpanan terpakai: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klik untuk memuat", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Galat: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Filter tidak dapat bekerja dengan baik saat peramban dimulai.\nMuat ulang halaman agar filter dapat bekerja dengan baik.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Entri ini harus menjadi yang terakhir", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/it/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/it/messages.json new file mode 100644 index 00000000..1ee64d9c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/it/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Finalmente, un blocker efficiente. Leggero sulla CPU e sulla memoria.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dashboard", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Attenzione! Ci sono delle modifiche non ancora salvate", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Attendi", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignora", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Opzioni", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Liste dei filtri", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "I miei filtri", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Le mie regole", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Siti affidabili", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Scorciatoie", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Cronologia richieste di rete", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Info", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Supporto", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Visualizzatore di risorse", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Impostazioni avanzate", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Click: disabilita/abilita uBlock₀ per questo sito.\n\nCtrl+click: disabilita uBlock₀ solo per questa pagina.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Click per disabilitare uBlock₀ per questo sito.\n\nCtrl+click per disabilitare uBlock₀ solo su questa pagina.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Clicca per abilitare uBlock₀ per questo sito.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "richieste bloccate", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "in questa pagina", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} o {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "dall'installazione", + "description": "English: since install" + }, + "popupOr": { + "message": "o", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Bloccati su questa pagina", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Bloccati dall'installazione", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domini connessi", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Apri la dashboard", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Accedi alla modalità elimina elemento", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Accedi alla modalità seleziona elemento", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Vai al registro delle richieste", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Segnala un problema su questo sito", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Disabilita/abilita il blocco di tutti i popup per questo sito", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Clicca per bloccare tutti i popup in questo sito", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Clicca per sbloccare tutti i popup in questo sito", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Abilita/disabilita il blocco di elementi multimediali di grandi dimensioni per questo sito", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Clicca per bloccare elementi multimediali di grandi dimensioni in questo sito", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Clicca per sbloccare elementi multimediali di grandi dimensioni in questo sito", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Disabilita/abilita filtraggio cosmetico per questo sito", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Clicca per disattivare il filtraggio cosmetico in questo sito", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Clicca per attivare il filtraggio cosmetico in questo sito", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Attiva o disattiva il blocco dei font remoti per questo sito", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Clicca per bloccare i font remoti in questo sito", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Clicca per sbloccare i font remoti in questo sito", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Clicca per disattivare JavaScript su questo sito", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Clicca per non disabilitare più JavaScript su questo sito", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Finestre pop-up", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Elementi multimediali di grandi dimensioni", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filtraggio cosmetico", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Caratteri remoti", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Altro", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Meno", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Regole globali: questa colonna è per le regole che si applicano a tutti i siti.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Regole locali: questa colonna è per le regole che si applicano solo al sito corrente.\nLe regole locali hanno la precedenza su quelle globali.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Clicca per rendere le tue scelte permanenti.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Clicca per annullare i cambiamenti.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "Tutto", + "description": "" + }, + "popupImageRulePrompt": { + "message": "Immagini", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Di terze parti", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "Immagini/CSS di terze parti", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "Script inline", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Script di proprietà del sito", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Script di terze parti", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Frame di terze parti", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domini connessi", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} di {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versione", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Crea", + "description": "English: Create" + }, + "pickerPick": { + "message": "Seleziona", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Esci", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Anteprima", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filtri di rete", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filtri cosmetici", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Click, Ctrl-click", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blocca elemento...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Nascondi lo spazio riservato agli elementi bloccati", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Visualizza il numero degli elementi bloccati sull'icona", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Disabilita suggerimenti", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Usa il menu contestuale quando è possibile", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Adatto ai daltonici", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Aspetto", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Colore di risalto personalizzato", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Abilita supporto salvataggio nel cloud", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Sono un utente avanzato (Lettura obbligatoria)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Disattiva pre-fetching (per evitare qualsiasi connessione per le richieste di rete bloccate)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Disattiva la revisione dei collegamenti ipertestuali", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Impedisci a WebRTC di rivelare l'indirizzo IP locale", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Comportamento predefinito", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Questi comportamenti predefiniti possono essere modificati per ogni singolo sito", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Disabilita filtraggio cosmetico", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blocca gli elementi multimediali di dimensioni maggiori di {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blocca font remoti", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Disattiva JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blocca i report CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Rivela i nomi canonici", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avanzate", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funzionalità adatte solo per gli utenti tecnici.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "impostazioni avanzate", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Ultimo ripristino:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Ultimo backup:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} filtri di rete + {{cosmeticFilterCount}} filtri cosmetici da:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} usati su {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Aggiornamento automatico liste.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Aggiorna ora", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Elimina tutte le cache", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analizza e applica i filtri cosmetici", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "I filtri cosmetici servono a nascondere elementi in una pagina web che sono considerati visivamente fastidiosi e che non possono essere bloccati dai motori di filtraggio basati sulle richieste di rete.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignora filtri cosmetici generici.", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

I filtri cosmetici generici sono i filtri cosmetici intesi per essere applicati a tutti i siti Web.

Benché questi siano gestiti in modo efficiente da uBlock₀, i filtri cosmetici generici potrebbero contribuire a un carico elevato in termini di memoria e CPU su alcune pagine Web, in particolare quelle di notevoli dimensioni e a lunga scadenza.

L'attivazione di quest'opzione eliminerà il carico elevato in termini di memoria e CPU aggiunto alle pagine Web in conseguenza della gestione dei filtri cosmetici generici, e inoltre ridurrà l'impatto sulla memoria di uBlock₀ stesso.

È raccomandato abilitare quest'opzione sui dispositivi meno potenti.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Sospendi l'attività di rete finché tutte le liste dei filtri sono caricate", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lista degli hosts bloccati", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Salva i cambiamenti", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Integrati", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Pubblicità", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privacy", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Protezione dai malware, sicurezza", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widget dei social", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Avvisi sui cookie", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Elementi fastidiosi", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multiuso", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regioni, lingue", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Personalizzate", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importa...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Un URL per riga. Gli URL non validi saranno silenziosamente ignorati.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Obsoleto.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "visualizza contenuto", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Ultimo aggiornamento: {{ago}}.\nClicca per forzare l'aggiornamento.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Aggiornamento in corso...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Un errore di rete ha impedito l'aggiornamento della risorsa.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Non aggiungere filtri da fonti non attendibili.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Abilita i miei filtri personalizzati", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Consenti i filtri personalizzati che richiedono affidabilità", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importa e aggiungi", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Esporta", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-filtri-statici-personalizzati_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Salva i cambiamenti", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Regole permanenti", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Regole temporanee", + "description": "header" + }, + "rulesRevert": { + "message": "Ripristina", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Applica", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Modifica", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Salva", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Annulla", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importa da file...", + "description": "" + }, + "rulesExport": { + "message": "Esporta in file", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ublock-filtri-dinamici-personalizzati_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Lista delle regole di filtraggio dinamiche personalizzate.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Sintassi per le regole: sorgente destinazione tipo azione (documentazione completa).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Ordina:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Tipo regola", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Fonte", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destinazione", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Lista dei siti dove uBlock è disattivato. Un sito per ogni riga. Le voci non valide verranno silenziosamente ignorate.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importa e aggiungi", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Esporta", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ublock-whitelist_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Salva i cambiamenti", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tipo", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Dominio", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtro", + "description": "English: Filter" + }, + "logAll": { + "message": "Tutte", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Dietro le quinte", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Scheda corrente", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Ricarica il contenuto della scheda", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Attiva o disattiva l'ispettore DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Attiva o disattiva il pannello popup", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "Wiki di uBlock Origin: Il registro", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Pulisci il registro", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Metti in pausa il registro (scarta tutti i dati in arrivo)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Riattiva il registro", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Attiva o disattiva il filtraggio del registro", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtra il contenuto del registro", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opzioni di filtraggio del registro", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Non", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "movimentato", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "bloccato", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "Consentito", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modificato", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Dominio attuale", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Di terze parti", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Dettagli", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtro", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Elenco dei filtri", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regola", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Contesto", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Contesto di root", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Parte della richiesta", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tipo", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Regola dell'URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Contesto:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tipo:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Filtraggio statico", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} la richiesta di rete di {{type}} {{br}} il cui indirizzo URL corrisponde a {{url}} {{br}}e che proviene da {{origin}},{{br}}{{importance}} c'è una corrispondenza nel filtro delle eccezioni.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blocca", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Permetti", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "tipo “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "qualsiasi tipo", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "da “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "da ovunque", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "tranne quando", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "anche se", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Filtro statico {{filter}} trovato in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Non è stato possibile trovare il filtro statico in alcuna delle liste dei filtri attualmente abilitate", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Le voci del registro che non soddisfano tutte e tre le condizioni seguenti verranno automaticamente scartate:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Mantieni le voci degli ultimi {{input}} minuti", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Conserva al massimo {{input}} caricamenti di pagina per scheda", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Conserva al massimo {{input}} voci per scheda", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Usa {{input}} righe per voce in modalità espansa verticale", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Nascondi colonne:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Tempo", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtro/regola", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Contesto", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Parte della richiesta", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Lista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabella", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Semplice", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Apri", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Crea una nuova segnalazione", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Trova segnalazioni simili", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentazione", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Leggi la documentazione su uBlock/wiki per conoscere tutte le funzionalità di uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Domande e supporto", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Le risposte alle domande e ad altri tipi di supporto sono fornite sul subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problemi dei filtri/siti malfunzionanti", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Segnala problemi dei filtri con siti specifici al tracciatore di bug uBlockOrigin/uAssets. Richiede un account GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Importante: Evita di utilizzare altre estensioni simili insieme a uBlock Origin, poiché ciò potrebbe causare problemi di filtraggio su specifici siti.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Suggerimenti: Assicurati che le tue liste di filtri siano aggiornate. Il registro è lo strumento principale per diagnosticare i problemi relativi ai filtri.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Segnalazione di errori", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Segnala problemi di uBlock Origin stesso al tracciatore di bug uBlockOrigin/uBlock-issue. Richiede un account GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informazioni sulla risoluzione dei problemi", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Di seguito sono riportate informazioni tecniche che potrebbero essere utili quando i volontari cercheranno di aiutarti a risolvere un problema.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Segnala un problema con un filtro", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Per evitare di appesantire i volontari con segnalazioni doppie, verifica che il problema non sia già stato segnalato.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Gli elenchi dei filtri vengono aggiornati quotidianamente. Assicurati che il tuo problema non sia già stato risolto negli elenchi di filtri più recenti.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verifica che il problema sussista ancora dopo aver ricaricato la pagina web problematica.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Indirizzo della pagina web:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "La pagina web...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "Scegli una voce", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Mostra pubblicità o avanzi di pubblicità", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Ha sovrapposizioni o altri fastidi", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Rileva uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Ha problemi relativi alla privacy", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Si rompe quando uBlock Origin è attivato", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Apre schede o finestre indesiderate", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Porta a badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Etichetta la pagina web come “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Informativa sulla privacy", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Registro delle modifiche", + "description": "" + }, + "aboutCode": { + "message": "Codice sorgente (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Collaboratori", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Codice sorgente", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Traduzioni", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Liste filtri", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Dipendenze esterne (GPLv3-compatibili):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Gli elenchi di filtri di uBO sono liberamente ospitati sui seguenti CDN:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Un CDN selezionato a caso verrà utilizzato quando è necessario aggiornare un elenco di filtri", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Crea file di backup...", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Ripristina dal file...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Ripristina le impostazioni predefinite…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Tutte le impostazioni verranno sovrascritte utilizzando i dati di backup del {{time}} e uBlock sarà riavviato.\n\nSovrascrivere tutte le impostazioni esistenti con quelle del backup?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "I dati non possono essere letti o non sono validi", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Verranno cancellate tutte le impostazioni, e uBlock₀ sarà riavviato.\n\nResettare uBlock alle impostazioni di fabbrica?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Errore di rete: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Sottoscrivi", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "un minuto fa", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minuti fa", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "un'ora fa", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} ore fa", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "un giorno fa", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} giorni fa", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Visualizza Dashboard", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Visualizza registro richieste di rete", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "disattivato", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Pagina bloccata", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock₀ ha impedito alla seguente pagina di caricarsi:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "A causa del seguente filtro", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "senza parametri", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Trovato in:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Torna indietro", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Chiudi questa finestra", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Non avvisarmi di nuovo riguardo questo sito", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Disabilita blocco assoluto per {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporaneamente", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanentemente", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Procedi", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "La pagina bloccata tenta di reindirizzare a un altro sito. Se scegli di procedere, navigherai direttamente verso: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Motivo:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Maligno", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Localizzatore", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disdicevole", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Esporta nel cloud", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importa dal cloud", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importa da archivio cloud ed unisci con le impostazioni attuali", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Nome di questo dispositivo:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Attenzione! Modifica queste impostazioni avanzate a tuo rischio e pericolo.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Invia", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Salva i cambiamenti", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Ripristina", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "byte", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blocca elemento in un frame", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Iscriviti alla lista dei filtri...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Consenti temporaneamente elementi multimediali di grandi dimensioni", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Visualizza il codice sorgente…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Digita una scorciatoia", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Attiva o disattiva il blocco dello scorrimento", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copia negli appunti", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Seleziona tutto", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Attiva/Disattiva il filtraggio cosmetico", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Attiva o disattiva JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Rilassa la modalità di blocco", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Spazio utilizzato: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Clicca per caricare", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errori: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Non è stato effettuato correttamente il filtraggio all'avvio del browser. Ricarica la pagina per garantire un filtraggio adeguato.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/ja/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/ja/messages.json new file mode 100644 index 00000000..dd66f5a5 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/ja/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "高効率ブロッカーついに登場。CPU とメモリーに負担をかけません。", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — ダッシュボード", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "警告! 保存していない変更があります", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "留まる", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "無視", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "設定", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "フィルターリスト", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "マイフィルター", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "マイルール", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "信頼するサイト", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "ショートカットキー", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — ログ", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "uBlock₀ について", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "サポート", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — アセットビューアー", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "高度な設定", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "クリック: このサイトで uBlock₀ を無効または有効にします。\n\nCtrl+クリック: このページだけで uBlock₀ を無効にします。", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "クリックするとこのサイトで uBlock₀ を無効にします。\n\nCtrl+クリックでこのページだけで uBlock₀ を無効にします。", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "クリックするとこのサイトで uBlock₀ を有効にします。", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "ブロックしたリクエスト数", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "このページ", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} 件 ({{percent}} %)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "インストールしてから", + "description": "English: since install" + }, + "popupOr": { + "message": "/", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "このページでのブロック数", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "インストールからのブロック数", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "接続したドメイン数", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "ダッシュボードを開く", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "要素抹消モードに入る", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "要素選択モードに入る", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "ログを開く", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "このサイト上での問題を報告", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "このサイトに対するポップアップブロックの有効/無効をすべて切り替えます", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "クリックするとこのサイトのポップアップをすべてブロックします", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "クリックするとこのサイトのポップアップをすべてブロックしなくなります", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "このサイトに対する大きなメディア要素のブロックの有効/無効を切り替えます", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "クリックするとこのサイトの大きなメディア要素をブロックします", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "クリックするとこのサイトの大きなメディア要素をブロックしなくなります", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "このサイトに対する整形フィルタリングの有効/無効を切り替えます", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "クリックするとこのサイトでの整形フィルタリングを無効にします", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "クリックするとこのサイトでの整形フィルタリングを有効にします", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "このサイトに対するリモートフォントのブロックの有効/無効を切り替えます", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "クリックするとこのサイトのリモートフォントをブロックします", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "クリックするとこのサイトのリモートフォントをブロックしなくなります", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "クリックするとこのサイトの JavaScript を無効にします", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "クリックするとこのサイトの JavaScript は無効にならなくなります", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "ポップアップウィンドウ", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "大きなメディア要素", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "整形フィルタリング", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "リモートフォント", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "さらに表示", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "折りたたむ", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "グローバルルール: この列のルールはすべてのサイトに適用されます。", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "ローカルルール: この列にあるルールは、現在のサイトのみに適用されます。", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "クリックすると変更を確定します。", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "クリックすると変更を元に戻します。", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "すべて", + "description": "" + }, + "popupImageRulePrompt": { + "message": "画像", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "サードパーティ", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "サードパーティ CSS/画像", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "インラインスクリプト", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "ファーストパーティスクリプト", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "サードパーティスクリプト", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "サードパーティフレーム", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "接続したドメイン数", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} 件 ({{total}} 件中)", + "description": "appears in popup" + }, + "popupVersion": { + "message": "バージョン", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "スクリプト", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "フレーム", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "作成", + "description": "English: Create" + }, + "pickerPick": { + "message": "選択", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "終了", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "プレビュー", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "ネットワークフィルター", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "整形フィルター", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "クリック、Ctrl+クリック", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "要素をブロック...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "ブロックした要素のプレースホルダーを非表示にする", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "ブロックしたリクエストの数をアイコンに表示する", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "ツールチップを無効にする", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "状況に合わせてコンテキストメニューを活用する", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "色覚多様性に配慮した色を使用する", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "外観", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "テーマ", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "カスタムアクセントカラー", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "クラウドストレージのサポートを有効にする", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "私は上級者です", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "先読み機能を無効にする (ブロックしているネットワークリクエストへの接続を完全に防ぐため)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "ハイパーリンクの監査を無効にする", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "WebRTC によるローカル IP アドレスの漏洩を防ぐ", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "既定の動作", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "以下の既定の動作はサイトごとに上書きできます", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "整形フィルタリングを無効にする", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "{{input}} KB より大きいメディア要素をブロックする", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "リモートフォントをブロックする", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "JavaScript を無効にする", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP レポートをブロックする", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "CNAME クローキングを解除する", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "高度な設定", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "技術に詳しいユーザーのみを対象にした機能です", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "高度な設定", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "前回の復元:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "前回のバックアップ:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} 件のネットワークフィルター + {{cosmeticFilterCount}} 件の整形フィルター:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}} 件中 {{used}} 件使用", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "フィルターリストを自動更新する", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "今すぐ更新", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "キャッシュをすべて削除", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "整形フィルターを解析して適用する", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "整形フィルターは、ネットワークリクエストに基づいたフィルタリングエンジンではブロックできない、邪魔とみなされる視覚的要素をウェブページ上から隠すという機能を果たします。", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "汎用整形フィルターを無視する", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "汎用整形フィルターとは、すべてのウェブサイトに適用することを目的とした整形フィルターです。このオプションを有効にすると、汎用整形フィルターを処理する結果としてウェブページに加わる、メモリーと CPU のオーバーヘッドが削減されます。\n\n性能の低い端末ではこのオプションを有効にすることをお勧めします。", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "フィルターリストをすべて読み込むまで、ネットワークアクティビティを停止する", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "ブロックしたホストの一覧", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "変更を適用", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "内製", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "広告", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "プライバシー", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "マルウェアからの保護、セキュリティ", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "SNS ウィジェット", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "クッキー通知", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "迷惑系", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "多目的", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "地域・言語", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "カスタム", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "インポート...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "1 行につき 1 つの URL です。無効な URL はそのまま無視されます。", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "期限切れです。", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "中身を表示します", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "最終更新: {{ago}}。\nクリックすると強制的に更新できます。", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "更新中...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "ネットワークエラーが発生したため、リソースを更新できませんでした。", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "信頼できないソースからフィルターを追加しないでください。", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "自分のカスタムフィルターを有効化", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "信頼が必要なカスタムフィルターを許可する", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "インポートと追加", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "エクスポート", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "変更を適用", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "永続ルール", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "一時ルール", + "description": "header" + }, + "rulesRevert": { + "message": "元に戻す", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "確定", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "編集", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "保存", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "破棄", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "ファイルからインポート...", + "description": "" + }, + "rulesExport": { + "message": "ファイルへエクスポート", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "動的フィルタリングルールの一覧です。", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "ルールの構文: 発信源 通信先 タイプ アクション (詳しい解説)", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "並べ替え:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "ルールの種類", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "発信源", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "通信先", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "[信頼するサイト] では uBlock Origin を無効にするウェブページを指定します。1 行につき 1 つです。", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "インポートと追加", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "エクスポート", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "変更を適用", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "タイプ", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "ドメイン", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "フィルター", + "description": "English: Filter" + }, + "logAll": { + "message": "すべて", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "バックグラウンド通信", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "現在のタブ", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "タブを再読み込みします", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM インスペクターの表示/非表示を切り替えます", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "ポップアップパネルの表示/非表示を切り替えます", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: ログ", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "ログを消去します", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "ログの出力を中断します (以後のデータはすべて破棄)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "ログの出力を再開します", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "ログの絞り込みの有効/無効を切り替えます", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "出力するログを絞り込む", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "ログ絞り込みオプション", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "除外", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "フィルタリングした", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "ブロックした", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "許可した", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "変更した", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "ファーストパーティ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "サードパーティ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "詳細", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "フィルター", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "フィルターリスト", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "ルール", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "コンテキスト", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "ルートコンテキスト", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "パーティ種別", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "タイプ", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL ルール", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "コンテキスト:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "タイプ:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "静的フィルター", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "一致する例外フィルター {{importance}}{{br}}{{url}} に URL アドレスが一致し{{br}}{{origin}} 発信された{{br}}{{type}} のネットワークリクエストを {{action}} する。", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "ブロック", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "許可", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "タイプ “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "任意のタイプ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "“{{origin}}” から", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "任意のサイトから", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "がない場合", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "に関係なく", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "この静的フィルター {{filter}} を含むフィルターリスト:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "この静的フィルターは現在有効なフィルターリストのどれにも含まれていません", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "以下の 3 つの条件から 1 つでも外れたログは自動的に破棄されます:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "過去 {{input}} 分間のログを保持する", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "1 つのタブにつき最大 {{input}} ページの読み込みを保持する", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "1 つのタブにつき最大 {{input}} 件のログを保持する", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "展開表示モードではログ 1 件につき {{input}} 行で表示する", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "非表示にする列:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} 時刻", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} フィルター/ルール", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} コンテキスト", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} パーティ種別", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "リスト形式", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "表形式", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "テキスト形式", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown 形式", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "開く", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "新しい報告を作成", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "似た報告を探す", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "ドキュメント", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "uBlock Origin のすべての機能については uBlock/wiki のドキュメントをお読みください。", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "質問とサポート", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "質問への回答などのヘルプやサポートは /r/uBlockOrigin の subreddit で提供しています。", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "フィルターの問題 / ウェブサイトが正しく動作しない", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "特定のウェブサイトで起きるフィルターの問題は uBlockOrigin/uAssets の Issue トラッカーに報告してください。GitHub のアカウントが必要です。", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "重要: 似た機能を持つブロッカーを uBlock Origin と併用することは控えてください。特定のウェブサイトでフィルターの問題を引き起こすことがあります。", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "ヒント: フィルターリストが最新か確認しましょう。ログはフィルターに関連する問題の原因を調査するための第一のツールです。", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "バグ報告", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "uBlock Origin 自体の問題は uBlockOrigin/uBlock-issue の Issue トラッカーに報告してください。GitHub のアカウントが必要です。", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "トラブルシューティング情報", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "以下の技術情報はボランティアが問題解決の手助けをするときに役立つことがあります。", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "フィルターの問題を報告する", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "重複した報告によってボランティアに負担をかけないように、問題がすでに報告されていないか確認してください。", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "フィルターリストは毎日更新されます。まず最新のフィルターリストで問題が修正されていないか確認してください。", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "問題のあるページを再読み込みしても問題がまだ残っているか確認してください。", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "ウェブページのアドレス:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "ウェブページは...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- エントリーを選択する --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "広告またはその消し残りを表示します", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "オーバーレイなど邪魔なものがあります", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "uBlock Origin を検出します", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "プライバシーに関連する問題があります", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "uBlock Origin を有効にすると誤動作します", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "勝手にタブやウィンドウを開きます", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "悪質ソフトやフィッシングへの誘導", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "ウェブページに“NSFW” (閲覧注意、“Not Safe For Work”) とラベルをつける", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "プライバシーポリシー", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "更新履歴", + "description": "" + }, + "aboutCode": { + "message": "ソースコード (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "貢献者", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "ソースコード", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "翻訳", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "フィルターリスト", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "外部依存関係 (GPLv3 と両立):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO の内製フィルターリストは以下の CDN に無料でホストしています:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "フィルターリストの更新が必要なときにはランダムに選択した CDN を使用します", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "ファイルにバックアップ...", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "ファイルから復元...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "初期設定にリセット...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "すべての設定を {{time}} にバックアップしたデータを使用して上書きした後、uBlock₀ が再起動します。\n\nバックアップデータを使用して既存の設定をすべて上書きしますか?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "データが無効、または読み込みができませんでした", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "すべての設定を削除した後、uBlock₀ が再起動します。\n\nuBlock₀ を初期設定にリセットしますか?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "ネットワークエラー: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "購読", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "1 分前", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} 分前", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "1 時間前", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} 時間前", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "1 日前", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} 日前", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "ダッシュボードを表示", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "ログを表示", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "オフ", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "ブロックしたページ", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin は、 以下のサイトの読み込みを防止しました:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "以下のフィルターと一致したためです:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "パラメーターなし", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "このフィルターを含むフィルターリスト:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "戻る", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "このウィンドウを閉じる", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "今後このサイトに関する警告を表示しない", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "{{hostname}} への厳格なブロッキングを無効にする", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "一時的", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "永続的", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "続行する", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "ブロックしたページは別のサイトへリダイレクトしようとしています。続行すると次の URL へ移動します: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "理由:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "悪意のある", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "トラッカー", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "悪い評判", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "クラウドストレージにエクスポートします", + "description": "tooltip" + }, + "cloudPull": { + "message": "クラウドストレージからインポートします", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "クラウドストレージからインポートして現在の設定に統合します", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "この端末の名前:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "警告! 以下の高度な設定の変更は自己責任で行ってください。", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "送信", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "変更を適用", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "元に戻す", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "バイト", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "フレーム内の要素をブロック...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "フィルターリストを購読...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "大きなメディア要素を一時的に許可", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "ソースを表示…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "ショートカットキーを入力", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "スクロールの同期/非同期を切り替えます", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "クリップボードにコピー", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "すべて選択", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "整形フィルタリングの有効/無効を切り替える", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript の切り替え", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "ブロッキングモードを緩和する", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "ストレージ使用量: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "クリックして読み込む", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "エラー: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "ブラウザー起動時に正しくフィルターできませんでした。\nページを再読み込みしてください。", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/ka/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/ka/messages.json new file mode 100644 index 00000000..d1369aa5 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/ka/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "როგორც იქნა, მძლავრი და შედეგიანი რეკლამების შემზღუდავი. ზოგავს CPU-ს და მეხსიერებას.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — სამართავი დაფა", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "გაფრთხილება! ცვლილებები არ შენახულა!", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "დარჩი აქ", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "უგულებელყოფა", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "პარამეტრები", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "სხვა ფილტრები", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "ჩემი ფილტრები", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "ჩემი წესები", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "გამონაკლისები", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "მალსახმობები", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — აღმრიცხავი", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "შესახებ", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "მხარდაჭერა", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — მასალების ნახვა", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "გაფართოებული პარამეტრები", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "დაწკაპებით: ჩაირთვება/გამოირთვება uBlock ამ საიტზე.\n\nCtrl+დაწკაპებით: გამოირთვება uBlock მხოლოდ ამ გვერდზე.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "დაწკაპეთ, რომ გაითიშოს uBlock₀ ამ საიტისთვის.\n\nCtrl+დაწკაპებით uBlock₀ მხოლოდ ამ გვერდზე გაითიშება.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "დაწკაპეთ, რომ ჩაირთოს uBlock₀ ამ საიტისთვის.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "შეზღუდული მოთხოვნები", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "ამ გვერდზე", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ანუ {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "დაყენების შემდგომ", + "description": "English: since install" + }, + "popupOr": { + "message": "ანუ", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "შეზღუდული ამ გვერდზე", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "შეზღუდული დაყენების შემდგომ", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "დაკავშირებული დომენები", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "სამართავის გახსნა", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "ნაწილების ამოჭრა", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "ნაწილების შერჩევა", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "აღმრიცხავის გახსნა", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "ამ საიტზე ხარვეზის მოხსენება", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "ამ საიტზე ყველა ამომხტომის შეზღუდვის ჩამრთველი", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "დაწკაპეთ, რომ ყველა ამომხტომი ფანჯარა შეიზღუდოს ამ საიტზე", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "დაწკაპეთ, რომ ამომხტომი ფანჯრები აღარ შეიზღუდოს ამ საიტზე", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "ამ საიტზე დიდი მედიაფაილების შეზღუდვის ჩამრთველი", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "დაწკაპეთ, რომ დიდი მედიაფაილები შეიზღუდოს ამ საიტზე", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "დაწკაპეთ, რომ დიდი მედიაფაილები აღარ შეიზღუდოს ამ საიტზე", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "გარეგნული ნაწილების ფილტრის ჩამრთველი", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "დაწკაპეთ გარეგნული ნაწილების ფილტრის გასათიშად ამ საიტზე", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "დაწკაპეთ გარეგნული ნაწილების გასაფილტრად ამ საიტზე", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "ვებშრიფტების შეზღუდვის ჩართვა/გამორთვა ამ საიტზე", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "დაწკაპეთ, რომ ვებშრიფტები შეიზღუდოს ამ საიტზე", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "დაწკაპეთ, რომ ვებშრიფტები აღარ შეიზღუდოს ამ საიტზე", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "დაწკაპეთ, რომ გაითიშოს JavaScript ამ საიტზე", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "დაწკაპეთ, რომ აღარ გაითიშოს JavaScript ამ საიტზე", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "ამომხტომი ფანჯრები", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "დიდი მედიაფაილები", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "გარეგნული გაფილტვრა", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "ვებშრიფტები", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "ვრცლად", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "მოკლედ", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "გლობალური წესები: ეს სვეტი არის წესებისთვის, რომლებიც მოქმედებს ყველა საიტზე.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "ლოკალური წესები: ეს სვეტი არის წესებისთვის, რომლებიც მოქმედებს მხოლოდ მიმდინარე საიტზე.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "დაწკაპეთ ცვლილებების მუდმივად შენახვისთვის.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "დააწკაპუნეთ შეტანილი ცვლილებების გაუქმებისთვის.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "ყველა", + "description": "" + }, + "popupImageRulePrompt": { + "message": "სურათები", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "მესამე მხარე", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "მესამე მხრის css/ნახატები", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "ხაზოვანი სკრიპტები", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1-ლი მხრის სკრიპტები", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "მე-3 მხრის სკრიპტები", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "მე-3 მხრის ჩარჩოები", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "დაკავშირებული დომენები", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}}-დან {{count}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "ვერსია", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "სკრიპტი", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "ჩარჩო", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "შექმნა", + "description": "English: Create" + }, + "pickerPick": { + "message": "გადარჩევა", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "გამოსვლა", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "შეთვალიერება", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "ქსელის ფილტრები", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "გარეგნული ფილტრები", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Click, Ctrl + დაწკაპუნება", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "ამ ნაწილის შეზღუდვა…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "შეზღუდული ნაწილების ადგილის შემავსებლის დამალვა", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "შეზღუდული მოთხოვნების რაოდენობის ჩვენება ხატულაზე", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "მინიშნებების გათიშვა", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "კონტექსტური მენიუს გამოყენება, როდესაც ეს ხელსაყრელია", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "ფერთა მორგება სუსტად მხედველთათვის", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "იერსახე", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "თემა", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "სასურველი შეფერილობა", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "ღრუბლოვანი მეხსიერების მხარდაჭერის ჩართვა", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "მე ვარ გამოცდილი მომხმარებელი (აუცილებლად წასაკითხი)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "წინასწარი ჩატვირთვის გათიშვა (კავშირის არიდება ქსელის შეზღუდული მოთხოვნებისთვის)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "ბმულებით სარგებლობისას აღრიცხვის არიდება", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "WebRTC-ით შიდა IP-მისამართის გამჟღავნების აღკვეთა", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "ნაგულისხმევი მითითებები", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "ეს ნაგულისხმევი მითითებები შესაძლებელია შეიცვალოს ცალკეული საიტისთვის", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "გარეგნული ნაწილების გაფილტვრის გათიშვა", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "მედიაფაილების შეზღუდვა, რომლებიც აჭარბებს {{input:number}} კბაიტს", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "ვებშრიფტების შეზღუდვა", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "გაითიშოს JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP-მოხსენებების აკრძალვა", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "დადგენილი სახელების გამოაშკარავება", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "გაფართოებული", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "შესაძლებლობები მხოლოდ ტექნიკური მომხმარებლებისთვის", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "გაფართოებული პარამეტრები", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "ბოლო აღდგენა:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "ბოლო მარქაფი:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} ქსელის ფილტრი + {{cosmeticFilterCount}} გარეგნული ნაწილების ფილტრი:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}}-იდან გამოიყენება {{used}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "ფილტრების წესების თვითგანახლება", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "ახლავე განახლება", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "მარაგის გასუფთავება", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "გარეგნული ნაწილების ფილტრების დამუშავება და გამოყენება", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "გარეგნული ფილტრები, ჩვეულებრივ, ვებგვერდზე იმ ხილული ნაწილების დასამალად გამოიყენება, რომლებზეც ქსელში მოთხოვნის შემზღუდავი ფილტრები ვერ მოქმედებს.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "გარეგნული საერთო ფილტრების უგულებელყოფა", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "გარეგნული საერთო ფილტრებია, რომლებიც ყველა ვებსაიტზე მოქმედებს. ამ პარამეტრის ჩართვით კი თავიდან აიცილებთ გარეგნული საერთო ფილტრებით მეხსიერებისა და პროცესორის ზედმეტ დატვირთვას.\n\nამ პარამეტრის ჩართვა სასურველია სუსტ მოწყობილობებზე.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "ქსელის მოქმედებების გადავადება ყველა ფილტრის ჩატვირთვამდე", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "ცვლილებების ასახვა", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "ჩაშენებული", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "რეკლამები", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "პირადულობა", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "მავნე პროგრამებისგან დაცვა, უსაფრთხოება", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "სოცქსელების ნაწილები", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "ცნობები ფუნთუშების შესახებ", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "შემაწუხებელი შიგთავსი", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "უნივერსალური", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "რეგიონები, ენები", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "საკუთარი სიები", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "შემოტანა...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "თითოეული URL ცალკეულ ხაზზე. არამართებული URL-ბმულები უგულებელყოფილი იქნება გაუფრთხილებლად.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "მოძველებული", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "შიგთავსის ნახვა", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "ბოლო განახლება: {{ago}}.\nდააწკაპეთ ახლავე გასაახლებლად.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "ახლდება...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "ქსელის შეცდომის შედეგად, შიგთავსის განახლება ვერ მოხერხდა.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "ნუ დაამატებთ ფილტრებს არასანდო წყაროებიდან.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "საკუთარი ფილტრების ამოქმედება", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "ნების დართვა მორგებული ფილტრებისთვის, რომლებიც ნდობას ითხოვს", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "შემოტანა და დამატება", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "შენახვა", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ჩემი-უცვლელი-ublock-ფილტრები_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "ცვლილებების ასახვა", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "მუდმივი წესები", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "დროებითი წესები", + "description": "header" + }, + "rulesRevert": { + "message": "დაბრუნება", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "მიბარება", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "შეცვლა", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "შენახვა", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "გაუქმება", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "ფაილიდან შემოტანა...", + "description": "" + }, + "rulesExport": { + "message": "ფაილში შენახვა", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ჩემი-ublock-ცვალებადი-წესები_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "თქვენი ცვალებადი ფილტრების წესები.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "წესის აგებულება: წყარო დანიშნულება მოთხოვნის სახე მოქმედება (მასალები სრულად).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "დალაგება:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "წესის სახეობა", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "წყარო", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "დანიშნულება", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "გამონაკლისებში მითითებულ ვებგვერდებზე uBlock Origin გამოირთვება. თითო ჩანაწერი ცალკეულ ხაზზე.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "შემოტანა და დამატება", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "შენახვა", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ჩემი-ublock-გამონაკლისები_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "ცვლილებების ასახვა", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "სახეობა", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "დომენი", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "ფილტრი", + "description": "English: Filter" + }, + "logAll": { + "message": "ყველა", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "ფარული მოთხოვნები", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "მიმდინარე ჩანართი", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "ჩანართის შიგთავსის ხელახლა ჩატვირთვა", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM-დამკვირვებლის ჩამრთველი", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "ამომხტომი არეს ჩამრთველი", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock-Origin-ცნობარი: აღმრიცხავი", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "აღმრიცხავის გასუფთავება", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "აღმრიცხავის შეჩერება (მიღებული მონაცემების მოცილება)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "აღრიცხვის გაგრძელება", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "აღმრიცხავის გამორჩევის ჩამრთველი", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "აღრიცხული ჩანაწერების გამორჩევა", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "აღრიცხულის გამორჩევის პარამეტრები", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "განურჩევლად", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "საგულისხმო", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "შეზღუდული", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "დაშვებული", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "ჩასწორებული", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "მონახულებული", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "გარეშე მხარის", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "ვრცლად", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "ფილტრი", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "ფილტრების სია", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "წესი", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "კონტექსტი", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "ძირეული კონტექსტი", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "მხარე", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "სახეობა", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "მისამართი", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "ცვალებადი URL ფილტრები", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "კონტექსტი:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "სახეობა:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "უცვლელი ფილტრები", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{type}} ქსელის მოთხოვნების {{action}} {{br}}რომლის URL მისამართიც შეესაბამება ბმულს {{url}} {{br}}და რომლის წყაროცაა {{origin}},{{br}}{{importance}}, როცა არსებობს შესაბამისი გამონაკლისი.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "შეზღუდვა", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "დაშვება", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "„{{type}}“ სახის", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "ნებისმიერი სახის", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "„{{origin}}“", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "ნებისმიერი", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "გარდა იმ შემთხვევისა", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "იმ შემთხვევაშიც კი", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "უცვლელი ფილტრი {{filter}} ნაპოვნია სიაში:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "უცვლელი ფილტრი ვერ მოიძებნა ამჟამად გამოყენებულ ფილტრებში", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "აღრიცხული ჩანაწერი, რომელიც არ აკმაყოფილებს ქვემოთ მოცემულ სამივე პირობას, ავტომატურად ამოიშლება:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "ბოლო {{input}} წუთის ჩანაწერების დატოვება", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "არაუმეტეს {{input}} გვერდის ჩატვირთვის დატოვება თითოეულ ჩანართზე", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "არაუმეტეს {{input}} ჩანაწერის დატოვება თითოეულ ჩანართში", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "თითოეული ჩანაწერისთვის {{input}} ხაზის გამოყენება, შვეულად ჩამოშლის რეჟიმში", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "სვეტების დამალვა:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} დრო", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} ფილტრი/წესი", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} კონტექსტი", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} მხარე", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "სია", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "ცხრილი", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "მარტივი", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "გაფორმებული", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "გახსნა", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "შექმენით ახალი მოსხენება", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "იპოვეთ მსგავსი მოხსენებები", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "მასალები", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "დამატებითი მასალებისთვის იხილეთ uBlock/wiki, რომ უკეთ გაიცნოთ uBlock Origin და მისი შესაძლებლობები.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "შეკითხვები და დახმარება", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "კითხვებზე პასუხისა და სხვა სახის მხარდაჭერის მისაღებად ეწვიეთ Reddit-განყოფილებას /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "ფილტრის ხარვეზი/გაუმართაობა საიტზე", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "ცალკეულ საიტზე ფილტრების ხარვეზების მოსახსენებლად გამოიყენეთ uBlockOrigin/uAssets ხარვეზების აღსარიცხავი. დაგჭირდებათ GitHub-ანგარიში.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "ყურადღება: ეცადეთ, არ გამოიყენოთ uBlock Origin და სხვა მსგავსი შემზღუდავები ერთდროულად, ვინაიდან წარმოიქმნება ფილტრების ხარვეზები ცალკეულ საიტებზე.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "რჩევა: გადაამოწმეთ, რომ ფილტრები განახლებულია. აღმრიცხავი ხელსაწყო მთავარი საშუალებაა ფილტრების ხარვეზების გამოსავლენად.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "ხარვეზის მოხსენება", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "ხარვეზების მოხსენებისთვის, რომლის წყაროცაა თავად uBlock Origin, გამოიყენეთ uBlockOrigin/uBlock-issue ხარვეზების აღსარიცხავი. დაგჭირდებათ GitHub-ანგარიში.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "მონაცემები ხარვეზის მოსაგვარებლად", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "ქვემოთ მოცემულია ტექნიკური ინფორმაცია, რომელიც გამოადგებათ მოხალისეებს, უკეთ დაგეხმარონ ხარვეზის აღმოფხვრაში.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "ფილტრის ხარვეზის მოხსენება", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "მოხალისეები რომ არ მოცდნენ ერთნაირი მოსხენებების ნახვით, გთოხვთ გადაამოწმოთ, უკვე ხომ არაა გაგზავნილი საჩივარი ამ ხარვეზზე.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "ფილტრთა სიები ახლდება ყოველდღე. გადაამოწმეთ, ხარვეზი ხომ არ გამოსწორებულა უახლეს სიებში.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "შეამოწმეთ, გაახლებით ხომ არ გამოსწორდა ხარვეზიანი ვებგვერდი. ", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "ვებგვერდის მისამართი", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "ვებგვერდი...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- შეარჩიეთ --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "აჩვენებს რეკლამებს ან მის ნარჩენებს", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "ადებს შემაწუხებელ შრეებსა და მისთანებს", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "ამჩნევს, რომ uBlock Origin ჩართულია", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": " პირადულობის დაცვის ხარვეზებითაა", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "ფუჭდება, როცა uBlock Origin ჩართულია", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "ხსნის არასასურველ ჩანართებს ან ფანჯრებს", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "გადადის მავნე, თაღლითურ შიგთავსზე", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "გვერდი მოინიშნოს, როგორც „NSFW“ („შეუსაბამო“)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "პირადულობის დებულება", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "ცვლილებათა ჟურნალი", + "description": "" + }, + "aboutCode": { + "message": "წყაროს კოდი (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "მოხალისეები", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "პირველწყარო კოდი", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "თარგმანები", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "ფილტრების სიები", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "ცალკეული დაქვემდებარებული პროექტები (GPLv3-თან თავსებადი):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO საკუთარ ფილტრებს ღიად ათავსებს მოცემულ CDN-ებზე:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "CDN შეირჩევა შემთხვევითობით ფილტრების განახლების დროს", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "ფაილში დამარქაფება", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ჩემი-ublock-მარქაფი_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "აღდგენა ფაილიდან...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "ნაგულისხმევ პარამეტრებზე დაბრუნება...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "თქვენს ყველა პარამეტრს გადაეწერება {{time}} დროინდელი დამარქაფებული მონაცემები და uBlock₀ გაეშვება ხელახლა.\n\nნამდვილად გსურთ არსებული პარამეტრების დამარქაფებული მონაცემებით ჩანაცვლება?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "მონაცემები ვერ იკითხება, ან დაზიანებულია", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "თქვენ მიერ მითითებული ყველა პარამეტრი წაიშლება და uBlock₀ გაეშვება ხელახლა.\n\nნამდვილად გსურთ დაბრუნდეს uBlock₀ ნაგულისხმევ პარამეტრებზე?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "ქსელის შეცდომა: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "გამოწერა", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "ერთი წუთის წინ", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} წუთის წინ", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "ერთი საათის წინ", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} საათის წინ", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "ერთი დღის წინ", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} დღის წინ", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "ხელსაწყოების გვერდის ჩვენება", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "აღრიცხვის ჩვენება", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "გამორთული", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "გვერდი შეიზღუდა", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin ზღუდავს მოცემული გვერდის ჩატვირთვას:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "აღნიშნული ფილტრის მიხედვით:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "პარამეტრების გარეშე", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "შეიცავს:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "უკან დაბრუნება", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "ფანჯრის დახურვა", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "მომავალში გაფრთხილების გარეშე ამ საიტზე", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "მკაცრი შეზღუდვის მოხსნა საიტისთვის: {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "დროებით", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "მუდმივად", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "მაინც გადასვლა", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "ეს შეზღუდული გვერდი ცდილობს სხვა საიტზე გადაყვანას. თუ განაგრძობთ, პირდაპირ გაიხსნება: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "მიზეზი:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "მავნებელი", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "მეთვალყურე", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "სახელგატეხილი", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "ღრუბლოვან საცავში შენახვა", + "description": "tooltip" + }, + "cloudPull": { + "message": "ღრუბლოვანი საცავიდან გადმოტანა", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "ღრუბლოვანი საცავიდან გადმოტანა და არსებულ პარამეტრებთან მისადაგება", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "ამ მოწყობილობის დასახელება:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "გაფრთხილება! გაფართოებული პარამეტრების ჩასწორების შედეგებზე თავად იქნებით პასუხისმგებელი.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "მიღება", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "ცვლილებების ასახვა", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "დაბრუნება", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "ბაიტი", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "ნაწილების შეზღუდვა ჩარჩოში...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "ფილტრის სიის გამოწერა...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "დიდი მედიაფაილების დროებით დაშვება", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "პირველწყარო კოდის ნახვა…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "მალსახმობის მითითება", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "ჩაკეტილად გადაადგილების ჩამრთველი", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "ასლის აღება", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "ყველას მონიშვნა", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "გარეგნული ფილტრის ჩამრთველი", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript – გადამრთველი", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "მსუბუქი შეზღუდვის რეჟიმი", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "გამოყენებული მოცულობა: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "კბ", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "მბ", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "გბ", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "დაწკაპეთ ჩასატვირთად", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "შეცდომა: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "სათანადოდ ვერ გაიფილტრა ბრაუზერის ჩართვისას.\nახლიდან გახსენით გვერდი უკეთ გასაფილტრად.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/kk/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/kk/messages.json new file mode 100644 index 00000000..e7dd2133 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/kk/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Ақыры, тиімді блоктаушы. Процессор мен жадыға жеңіл.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Бақылау тақтасы", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Ескерту: сізде сақталмаған өзгерістер бар!", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Осында қалу", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Елемеу", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Баптаулар", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Сүзгілер тізімі", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Менің сүзгілерім", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Менің ережелерім", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Сенімді сайттар", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Жарлықтар", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Журналшы", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Туралы", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Қолдау", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Нысандарды көру", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Кеңейтілген баптаулар", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Шерту: бұл сайт үшін uBlock₀ сөндіру/іске қосу.\n\nCtrl+шерту: uBlock₀ тек осы бетте сөндіру.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Бұл сайт үшін uBlock₀ сөндіру үшін шертіңіз.\n\nТек осы бетте uBlock₀ сөндіру үшін Ctrl+шертіңіз.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Бұл сайт үшін uBlock₀ іске қосу үшін шертіңіз.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "блокталған сұраулар", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "осы бетте", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} немесе {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "орнатқаннан бері", + "description": "English: since install" + }, + "popupOr": { + "message": "немесе", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Осы бетте блокталған", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Орнатқаннан бері блокталған", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Қосылған домендер", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Бақылау тақтасын ашу", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Элементтерді жылдам жою режиміне өту", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Элемент таңдағыш режиміне өту", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Logger-ді ашу", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Осы веб-сайттағы мәселе туралы хабарлау", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Бұл сайт үшін барлық қалқымалы терезелерді блоктауды ауыстырып қосу", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Бұл сайттағы барлық қалқымалы терезелерді блоктау үшін шертіңіз", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Бұл сайттағы барлық қалқымалы терезелерді бұдан былай блоктамау үшін шертіңіз", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Бұл сайт үшін үлкен медиа элементтерін блоктауды ауыстырып қосу", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Бұл сайттағы үлкен медиа элементтерін блоктау үшін шертіңіз", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Бұл сайттағы үлкен медиа элементтерін бұдан былай блоктамау үшін шертіңіз", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Бұл сайт үшін косметикалық сүзгілеуді ауыстырып қосу", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Бұл сайтта косметикалық сүзгілеуді сөндіру үшін шертіңіз", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Бұл сайтта косметикалық сүзгілеуді іске қосу үшін шертіңіз", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Бұл сайт үшін қашықтағы қаріптерді блоктауды ауыстырып қосу", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Бұл сайттағы қашықтағы қаріптерді блоктау үшін шертіңіз", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Бұл сайттағы қашықтағы қаріптерді бұдан былай блоктамау үшін шертіңіз", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Бұл сайтта JavaScript-ті сөндіру үшін шертіңіз", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Бұл сайтта JavaScript-ті бұдан былай сөндірмеу үшін шертіңіз", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Қалқымалы терезелер", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Үлкен медиа элементтері", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Косметикалық сүзгілеу", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Қашықтағы қаріптер", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Көбірек", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Азырақ", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Глобалды ережелер: бұл баған барлық сайттарға қолданылатын ережелерге арналған.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Жергілікті ережелер: бұл баған тек ағымдағы сайтқа қолданылатын ережелерге арналған.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Өзгерістерді тұрақты ету үшін шертіңіз.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Өзгерістерді кері қайтару үшін шертіңіз.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "барлығы", + "description": "" + }, + "popupImageRulePrompt": { + "message": "суреттер", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3-ші жақты", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "3-ші тарап CSS/суреттері", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "жолішілік скрипттер", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1-ші тарап скрипттері", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3-ші тарап скрипттері", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3-ші тарап кадрлары", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "қосылған домендер", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}} ішінен {{count}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Нұсқа", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "скрипт", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "кадр", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Жасау", + "description": "English: Create" + }, + "pickerPick": { + "message": "Таңдау", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Шығу", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Алдын ала қарау", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Желілік сүзгілер", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Косметикалық сүзгілер", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Шерту, Ctrl+шерту", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Элементті блоктау…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Блокталған элементтердің орынбасарларын жасыру", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Таңбашада блокталған сұраулар санын көрсету", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Қалқымалы кеңестерді сөндіру", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Тиісті жерлерде контексттік мәзірді қолдану", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Дальтониктерге ыңғайлы", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Сыртқы көрініс", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Тема", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Ерекшелеу түсі", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Бұлттық сақтау қоймасын қолдауды іске қосу", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Мен кеңейтілген пайдаланушымын", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Алдын ала жүктеуді сөндіру (блокталған желілік сұраулар үшін кез келген қосылымды болдырмау үшін)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Гиперсілтемелер аудитін сөндіру", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "WebRTC-нің жергілікті IP адрестерді ашып қоюына жол бермеу", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Үнсіз келісім бойынша әрекет", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Бұл үнсіз келісім бойынша әрекеттерді әр сайт үшін жеке өзгертуге болады", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Косметикалық сүзгілеуді сөндіру", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "{{input}} КБ-тан үлкен медиа элементтерін блоктау", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Қашықтағы қаріптерді блоктау", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "JavaScript-ті сөндіру", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP есептерін блоктау", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Канондық атауларды ашу", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Кеңейтілген", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Тек техникалық пайдаланушыларға сай келетін мүмкіндіктер", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "кеңейтілген баптаулар", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Соңғы қалпына келтіру:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Соңғы сақтық көшірме:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} желі сүзгісі + {{cosmeticFilterCount}} косметикалық сүзгі, дереккөздері:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}} ішінен {{used}} қолданылуда", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Сүзгілер тізімін автожаңарту", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Қазір жаңарту", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Барлық кэштерді толық жою", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Косметикалық сүзгілерді талдау және қолдану", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Косметикалық сүзгілер веб-беттердегі визуалды кедергі деп саналатын және желілік сұрауларға негізделген сүзгілеу қозғалтқыштарымен блокталмайтын элементтерді жасыру үшін қолданылады.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Жалпы косметикалық сүзгілерді елемеу", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Жалпы косметикалық сүзгілер — бұл барлық веб-сайттарға қолданылатын сүзгілер. Бұл опцияны іске қосу жалпы косметикалық сүзгілерді өңдеу нәтижесінде веб-беттерге қосылатын жады мен процессор шығындарын азайтады.\n\nБұл опцияны қуаты азырақ құрылғыларда іске қосу ұсынылады.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Барлық сүзгілер тізімі жүктелгенше желі белсенділігін кідірту", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Өзгерістерді іске асыру", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Кірістірілген", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Жарнама", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Жекелік", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Зиянды бағдарламалардан қорғау, қауіпсіздік", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Әлеуметтік виджеттер", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie ескертулері", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Кедергілер", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Әмбебап", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Аймақтар, тілдер", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Пайдаланушылық", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Импорттау…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Бір жолға бір URL. Жарамсыз URL-дер ескертусіз еленбейді.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Ескірген.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "мазмұнын көру", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Соңғы жаңарту: {{ago}}.\nЖаңартуға мәжбүрлеу үшін шертіңіз.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Жаңартылуда…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Желілік қате ресурс жаңартылуына кедергі келтірді.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Сенімсіз дереккөздерден сүзгілер қоспаңыз.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Менің пайдаланушылық сүзгілерімді іске қосу", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Сенімді талап ететін пайдаланушылық сүзгілерге рұқсат ету", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Импорттау және қосу…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Экспорттау…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Өзгерістерді іске асыру", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Тұрақты ережелер", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Уақытша ережелер", + "description": "header" + }, + "rulesRevert": { + "message": "Кері қайтару", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Бекіту", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Түзету", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Сақтау", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Болдырмау", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Файлдан импорттау…", + "description": "" + }, + "rulesExport": { + "message": "Файлға экспорттау…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Сіздің динамикалық сүзгілеу ережелеріңіздің тізімі.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Ереже синтаксисі: дереккөз мақсатты_орын түр әрекет (толық құжаттама).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Сұрыптау:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Ереже түрі", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Дереккөз", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Мақсатты орын", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Сенімді сайттар директивалары uBlock Origin қай веб-беттерде сөндірілуі керектігін анықтайды. Бір жолға бір жазба.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Импорттау және қосу…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Экспорттау…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-whitelist_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Өзгерістерді іске асыру", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Түр", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Домен", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Сүзгі", + "description": "English: Filter" + }, + "logAll": { + "message": "Барлығы", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Бетсіз", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Ағымдағы бет", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Бет мазмұнын қайта жүктеу", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM инспекторын ауыстырып қосу", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Қалқымалы панельді ауыстырып қосу", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Logger-ді тазарту", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Logger-ді аялдату (барлық кіріс деректерді болдырмау)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Logger-ді жалғастыру", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Logger сүзгілеуін ауыстырып қосу", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "logger мазмұнын сүзгілеу", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logger сүзгілеу опциялары", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Емес", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "блокталған", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "рұқсат етілген", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "өзгертілген", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1-ші тарап", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3-ші тарап", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Толық ақпарат", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Сүзгі", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Сүзгілер тізімі", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Ереже", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Контекст", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Түбірлік контекст", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Тараптылығы", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Түр", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL ережесі", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Контекст:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Түр:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Статикалық сүзгі", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} келесі шарттарға сай {{type}} желілік сұраулары: {{br}}URL адресі {{url}} сәйкес келеді {{br}}және {{origin}} басталады,{{br}}{{importance}} сәйкес келетін ерекшелік сүзгісі бар.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Блоктау", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Рұқсат ету", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "“{{type}}” түрі", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "кез келген түр", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "“{{origin}}” дереккөзінен", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "кез келген жерден", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "келесі жағдайлардан басқа", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "болса да", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Статикалық сүзгі {{filter}} келесі жерде табылды:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Статикалық сүзгі қазіргі уақытта іске қосылған сүзгілер тізімдерінің ешбірінен табылмады", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Төмендегі үш шартты қанағаттандырмайтын Logger жазбалары автоматты түрде жойылады:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Соңғы {{input}} минуттағы жазбаларды сақтап қалу", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Бір бетке ең көп дегенде {{input}} бет жүктеуін сақтап қалу", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Бір бетке ең көп дегенде {{input}} жазбаны сақтап қалу", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Вертикалды кеңейтілген режимде бір жазбаға {{input}} жол қолдану", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Бағандарды жасыру:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Уақыт", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Сүзгі/ереже", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Контекст", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Тараптылығы", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Тізім", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Кесте", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Жай", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Ашу", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "GitHub-та жаңа есеп жасау", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "GitHub-тан ұқсас есептерді табу", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Құжаттама", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "uBlock Origin-нің барлық мүмкіндіктері туралы білу үшін uBlock/wiki мекенжайындағы құжаттаманы оқыңыз.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Сұрақтар және қолдау", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Сұрақтарға жауаптар және басқа да көмек /r/uBlockOrigin сабреддитінде беріледі.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Сүзгі мәселелері/веб-сайт бұзылған", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Белгілі бір веб-сайттардағы сүзгі мәселелерін uBlockOrigin/uAssets мәселелерді бақылау жүйесіне хабарлаңыз. GitHub тіркелгісі талап етіледі.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Маңызды: uBlock Origin-мен бірге басқа ұқсас блоктаушыларды қолданбауға тырысыңыз, себебі бұл белгілі бір веб-сайттарда сүзгі мәселелерін тудыруы мүмкін.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Кеңестер: Сүзгілер тізімі жаңартылғанына көз жеткізіңіз. Logger — сүзгілерге қатысты мәселелерді анықтауға арналған негізгі сайман.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Ақау туралы есеп", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "uBlock Origin-нің өзіне қатысты мәселелерді uBlockOrigin/uBlock-issue мәселелерді бақылау жүйесіне хабарлаңыз. GitHub тіркелгісі талап етіледі.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Мәселелерді шешу ақпараты", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Төменде еріктілер мәселені шешуге көмектесу кезінде пайдалы болуы мүмкін техникалық ақпарат берілген.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Сүзгі мәселесі туралы хабарлау", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Еріктілерге артық жүк болмас үшін, мәселенің бұрын хабарланбағанын тексеріңіз. Ескертпе: батырманы шерту беттің дереккөзін GitHub-қа жібереді.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Сүзгілер тізімі күн сайын жаңартылып тұрады. Мәселеңіздің ең соңғы сүзгілер тізімдерінде шешілмегеніне көз жеткізіңіз.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Мәселе туындаған веб-бетті қайта жүктегеннен кейін мәселенің әлі де бар екенін тексеріңіз.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Веб-бет адресі:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Веб-бет…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Жазбаны таңдау --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Жарнамаларды немесе жарнама қалдықтарын көрсетеді", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Қабаттастырулары немесе басқа да кедергілері бар", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "uBlock Origin-ді анықтайды", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Жекелікке қатысты мәселелері бар", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "uBlock Origin іске қосылғанда дұрыс жұмыс істемейді", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Қажетсіз беттерді немесе терезелерді ашады", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Зиянды бағдарламаларға, фишингке апарады", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Веб-бетті “NSFW” (“Not Safe For Work”) ретінде таңбалау", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Жекелік саясаты", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Өзгерістер журналы", + "description": "" + }, + "aboutCode": { + "message": "Бастапқы код (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Үлес қосушылар", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Бастапқы код", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Аудармалар", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Сүзгілер тізімі", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Сыртқы тәуелділіктер (GPLv3-үйлесімді):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO-ның өз сүзгілер тізімдері келесі CDNs-де еркін орналастырылған:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Сүзгілер тізімін жаңарту қажет болғанда кездейсоқ таңдалған CDN қолданылады.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Файлға сақтық көшірме жасау…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Файлдан қалпына келтіру…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Бастапқы баптауларға қайтару…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Барлық баптауларыңыз {{time}} кезінде сақталған деректермен ауыстырылады және uBlock₀ қайта іске қосылады.\n\nБарлық қолданыстағы баптауларды сақтық көшірме деректерімен ауыстыру керек пе?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Деректерді оқу мүмкін емес немесе олар жарамсыз", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Барлық баптауларыңыз өшіріледі және uBlock₀ қайта іске қосылады.\n\nuBlock₀-ді бастапқы (зауыттық) баптауларға қайтару керек пе?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Желілік қате: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Жазылу", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "бір минут бұрын", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} минут бұрын", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "бір сағат бұрын", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} сағат бұрын", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "бір күн бұрын", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} күн бұрын", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Бақылау тақтасын көрсету", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Logger-ді көрсету", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "сөндірулі", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Бет блокталған", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin келесі беттің жүктелуіне жол бермеді:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Бұл келесі сүзгінің кесірінен болды:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "параметрлерсіз", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Сүзгі келесі жерден табылды:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Артқа қайту", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Бұл терезені жабу", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Бұл сайт туралы маған қайтадан ескертпеу", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "{{hostname}} үшін қатаң блоктауды сөндіру", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Уақытша", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Толығымен", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Өту", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Блокталған бет басқа сайтқа бағыттағысы келеді. Егер жалғастыруды таңдасаңыз, сіз тікелей келесі мекенжайға өтесіз: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Себебі:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Зиянды", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Трекер", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Сенімсіз", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Бұлттық сақтау қоймасына экспорттау", + "description": "tooltip" + }, + "cloudPull": { + "message": "Бұлттық сақтау қоймасынан импорттау", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Бұлттық сақтау қоймасынан импорттау және ағымдағы баптаулармен біріктіру", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Бұл құрылғының аты:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Ескерту! Бұл кеңейтілген баптауларды өз жауапкершілігіңізбен өзгертіңіз.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Жіберу", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Өзгерістерді іске асыру", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Кері қайтару", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "байт", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Кадрдағы элементті блоктау…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Сүзгілер тізіміне жазылу…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Үлкен медиа элементтеріне уақытша рұқсат ету", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Бастапқы кодты көру…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Жарлықты теріңіз", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Құлыпталған айналдыруды ауыстырып қосу", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Алмасу буферіне көшіру", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Барлығын таңдау", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Косметикалық сүзгілеуді ауыстырып қосу", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript-ті ауыстырып қосу", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Блоктау режимін жеңілдету", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Қолданылған сақтау орны: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "КБ", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "МБ", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "ГБ", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Жүктеу үшін шертіңіз", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Қателер: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Браузер іске қосылғанда дұрыс сүзгілеу мүмкін болмады. Дұрыс сүзгілеуді қамтасыз ету үшін бетті қайта жүктеңіз.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/kn/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/kn/messages.json new file mode 100644 index 00000000..72f80be8 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/kn/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "ಯುಬ್ಲಾಕ್", + "description": "extension name." + }, + "extShortDesc": { + "message": "ಕೊನೆಗೆ, ಒಂದು ದಕ್ಷ ನಿರ್ಬಂಧಕ. ಮಿತವಾದ ಸಿಪಿಯೂ ಹಾಗು ಮೆಮೊರಿ ಬಳಿಕೇಒಂದಿಗೆ .", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ - ಡ್ಯಾಶ್ಬೋರ್ಡು", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "ಎಚ್ಚರಿಕೆ! ನೀವು ಉಳಿಸದ ಬದಲಾವಣೆಗಳನ್ನು ಹೊಂದಿದ್ದೀರಿ", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "ಇಲ್ಲೇ ಇರು", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "ನಿರ್ಲಕ್ಷಿಸು", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "ಸೆಟ್ಟಿಂಗ್ಸ್", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "೩ನೇ ವ್ಯಕ್ತಿ ಶೋಧಕಗಳು", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "ನನ್ನ ಶೋಧಕಗಳು", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "ನನ್ನ ನಿಯಮಗಳು", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "ವೈಟ್ ಲಿಸ್ಟ್", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "ಶಾರ್ಟ್‌ಕಟ್‌ಗಳು", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — ಲಾಗರ್", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "ಕುರಿತು", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "ಬೆಂಬಲ", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — ಆಸ್ತಿ ವೀಕ್ಷಕ", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "ಸುಧಾರಿತ ಆಯ್ಕೆಗಳು", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "ಕ್ಲಿಕ್: ಈ ಜಾಲತಾಣಕ್ಕೆ ನಿಷ್ಕ್ರಿಯ/ಸಕ್ರಿಯಗೊಳಿಸಲು.\nಕಂಟ್ರೋಲ್ + ಕ್ಲಿಕ್: ಈ ಜಾಲತಾಣಕ್ಕೆ ಮಾತ್ರ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "ಈ ಸೈಟ್‌ಗಾಗಿ uBlock₀ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ.\n\nಈ ಪುಟದಲ್ಲಿ ಮಾತ್ರ uBlock₀ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು Ctrl+ಕ್ಲಿಕ್ ಮಾಡಿ.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "ಈ ಸೈಟ್‌ಗಾಗಿ uBlock₀ ಸಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "ಬೇಡಿಕೆಗಳನ್ನು ತಡೆಹಿಡಿಯಲಾಗಿದೆ", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "ಈ ಪುಟದಲ್ಲಿ", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ಅಥವಾ {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "ಅನುಸ್ಥಾಪಿಸಿದ ಈಚೆಗೆ", + "description": "English: since install" + }, + "popupOr": { + "message": "ಅಥವಾ", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "ಈ ಪುಟದಲ್ಲಿ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "ಸ್ಥಾಪಿಸಿದಾಗಿನಿಂದ ನಿರ್ಬಂಧಿಸಲಾಗಿದೆ", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "ಸಂಪರ್ಕಳಗಿಸಿದ ಡೊಮೈನುಗಳು ", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "ಡ್ಯಾಶ್ಬೋರ್ಡ ತೆರೆಯಲು ಕ್ಲಿಕಿಸಿ", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Element zapper ಮೋಡ್ ಅನ್ನು ಬಳಸಿ", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "ಅಂಶ ಆಯ್ವಿಕೆ ಕ್ರಮಕ್ಕೆ ದಾಖಲಾಗಿ", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "ಲಾಗರ್ ತೆರೆಯಿರಿ", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "ublock origin ಗೆ ಸಂಬಂಧಿಸಿದ ಈ ವೆಬ್‌ಸೈಟ್‌ನಲ್ಲಿ ಸಮಸ್ಯೆಯನ್ನು ವರದಿ ಮಾಡಿ", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "ಈ ಜಾಲತಾಣದ ಎಲ್ಲಾ ಪಾಪ್ಅಪ್ ಗಳ ನಿರ್ಬಂಧವನ್ನು ಟಾಗಲ್ ಮಾಡಿ", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "ಈ ಸೈಟ್‌ನಲ್ಲಿ ಎಲ್ಲಾ ಪಾಪ್‌ಅಪ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "ಈ ಸೈಟ್‌ನಲ್ಲಿ ಇನ್ನು ಮುಂದೆ ಎಲ್ಲಾ ಪಾಪ್‌ಅಪ್‌ಗಳನ್ನು ನಿರ್ಬಂಧಿಸದಿರಲು ಕ್ಲಿಕ್ ಮಾಡಿ", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "ಈ ಸೈಟ್‌ಗಾಗಿ ದೊಡ್ಡ ಮಾಧ್ಯಮ ಅಂಶಗಳ ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "ಈ ಸೈಟ್‌ಗಾಗಿ ದೊಡ್ಡ ಮಾಧ್ಯಮ ಅಂಶಗಳ ನಿರ್ಬಂಧಿಸುವಿಕೆಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Click to no longer block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "ಈ ಜಾಲತಾಣಕ್ಕೆ ಕಾಸ್ಮೆಟಿಕ್ ಫಿಲ್ಟರಿಂಗನ್ನು ಟಾಗಲ್ ಮಾಡಿ", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "ಈ ಸೈಟ್‌ನಲ್ಲಿ ಕಾಸ್ಮೆಟಿಕ್ ಫಿಲ್ಟರಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ.", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "ಈ ಸೈಟ್‌ನಲ್ಲಿ ಕಾಸ್ಮೆಟಿಕ್ ಫಿಲ್ಟರಿಂಗ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ.", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "ಈ ಜಾಲತಾಣಕ್ಕೆ ದೂರಸ್ಥ ಅಕ್ಷರಶೈಲಿಯ ನಿರ್ಬಂಧವನ್ನು ಟಾಗಲ್ ಮಾಡಿ", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Click to block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Click to no longer block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "ಈ ಸೈಟ್‌ನಲ್ಲಿ ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Click to no longer disable JavaScript on this site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "ಪಾಪ್-ಅಪ್ ವಿಂಡೋ", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "ದೊಡ್ಡ ಮಾಧ್ಯಮ ಅಂಶಗಳು", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "ಕಾಸ್ಮೆಟಿಕ್ ಫಿಲ್ಟರಿಂಗ್", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Remote fonts", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "ಅಧಿಕ", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "ಕಡಿಮೆ", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Global rules: this column is for rules which apply to all sites.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Local rules: this column is for rules which apply to the current site only.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "ಶಾಶ್ವತ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು ಕ್ಲಿಕ್ ಮಾಡಿ", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "ನಿಮ್ಮ ಬದಲಾವಣೆಗಳನ್ನು ಹಿಂತಿರುಗಿಸಲು ಕ್ಲಿಕ್ ಮಾಡಿ", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "ಎಲ್ಲಾ", + "description": "" + }, + "popupImageRulePrompt": { + "message": "ಚಿತ್ರಗಳು", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "೩ನೇ ವ್ಯಕ್ತಿ", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "೩ನೇ ವ್ಯಕ್ತಿ ಸಿಎಸ್ಸೇಸು/ಚಿತ್ರಗಳು", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "ಒಳಸಾಲಿನ ಸ್ಕ್ರಿಪ್ಟುಗಳು", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "೧ನೇ ವ್ಯಕ್ತಿ ಸ್ಕ್ರಿಪ್ಟುಗಳು", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "೩ನೇ ವ್ಯಕ್ತಿ ಸ್ಕ್ರಿಪ್ಟುಗಳು", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "೩ನೇ ವ್ಯಕ್ತಿ ಫ್ರೇಮುಗಳು", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "ಸಂಪರ್ಕ ಹೊಂದಿರುವ ಡೊಮೈನ್ಗಳು", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}} ರಲ್ಲಿ {{count}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "ಆವೃತ್ತಿ", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "ಸ್ಕ್ರಿಪ್ಟ್", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "ಫ್ರೇಮ್", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "ರಚಿಸಿ", + "description": "English: Create" + }, + "pickerPick": { + "message": "ಆಯ್ಕೆ", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "ತ್ಯಜಿಸಿ", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "ಮುನ್ನೋಟ", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "ನಿವ್ವಳ ಫಿಲ್ಟರುಗಳು", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "ಕಾಸ್ಮೆಟಿಕ್ ಫಿಲ್ಟರುಗಳು", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "ಕ್ಲಿಕ್, ಕಂಟ್ರೋಲ್-ಕ್ಲಿಕ್", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "ಭಾಗ ತಡೆಹಿಡಿಯಿರಿ", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "ನಿರ್ಬಂಧಿಸಿದ ಭಾಗಗಳಿರುವ ಪ್ಲೇಸ್ಹೋಲ್ಡರ್ಸ್ ಮರೆಮಾಡಿ", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Show the number of blocked requests on the icon", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Disable tooltips", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Make use of context menu where appropriate", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "ಬಣ್ಣ ಅಂಧತೆ ಉಪಯುಕ್ತ", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "ನೋಟ", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "ಥೀಮ್", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Enable cloud storage support", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "ನಾನು ಮುಂದುವರಿದ ಬಳಕೆದಾರ", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Disable pre-fetching (to prevent any connection for blocked network requests)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Disable hyperlink auditing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Prevent WebRTC from leaking local IP addresses", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Default behavior", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "These default behaviors can be overridden on a per-site basis", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Disable cosmetic filtering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Block media elements larger than {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Block remote fonts", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "ಜಾವಾಸ್ಕ್ರಿಪ್ಟ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Block CSP reports", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "ಉನ್ನತ ಸಂಯೋಜನೆಗಳು", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "ಮು೦ದುವರಿದ ಸೆಟ್ಟಿಂಗ್ಸ್", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Last restore:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "ಕೊನೆಯ ಬ್ಯಾಕಪ್:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "ಕೆಳಗಿನ ಫೈಲಟ್ರ್ಪಟ್ಟಿಗೆಯಿಂದ {{netFilterCount}} ನೆಟ್ವರ್ಕ್ ಫಿಲ್ಟರ್ಗಳು + {{cosmeticfiltercount}} ಕಾಸ್ಮೆಟಿಕ್ ಶೋಧಕಗಳು ಕ್ರಿಯಾಶೀಲವಾಗಿದೆ:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}} ರಿಂದ {{used}} ಬಳಸಲುಗುವುತಿದೆ ", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "ಶೋಧಕ ಪಟ್ಟಿಗಳನ್ನು ಸ್ವಯಂ ನವೀಕರಿಸಿ.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "ಈಗ ನವೀಕರಿಸಿ", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Purge all caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Parse and enforce cosmetic filters", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignore generic cosmetic filters", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿ", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Built-in", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "ಜಾಹಿರಾತು", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "ಗೌಪ್ಯತೆ", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "ಮಾಲ್ವೇರ್ ರಕ್ಷಣೆ, ಭದ್ರತೆ", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Annoyances", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "ಬಹುಪಯೋಗಿ", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "ಪ್ರದೇಶಗಳು, ಭಾಷೆಗಳು", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "ಇಚ್ಛೆಯ", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "ಆಮದು...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "One URL per line. Invalid URLs will be silently ignored.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "ಹಳೆಯದಾಗಿದೆ", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "ವಿಷಯವನ್ನು ವೀಕ್ಷಿಸಿ", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Last update: {{ago}}.\nClick to force an update.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "ಸೇರಿಸಲಾಗುತ್ತಿದೆ...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "A network error prevented the resource from being updated.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "ಆಮದಿಸಿ ಸೇರ್ಪಡಿಸು...", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "ರಫ್ತು...", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ನನ್ನ-ublock-ಸ್ಥಿರ-ಶೋಧಕಗಳು_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿ", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "ಶಾಶ್ವತ ನಿಯಮಗಳು", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "ತಾತ್ಕಾಲಿಕ ನಿಯಮಗಳು", + "description": "header" + }, + "rulesRevert": { + "message": "ಹಿಂತಿರುಗಿಸಿ", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "ಕಮಿಟ್", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "ತಿದ್ದಿ ", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "ಉಳಿಸು", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "ತ್ಯಜಿಸಿ", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "ಫೈಲಿಂದ ಆಮದಿಸು...\n", + "description": "" + }, + "rulesExport": { + "message": "Export to file…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ನನ್ನ-ublock-ಡೈನಾಮಿಕ್-ಫಿಲ್ಟರ್-ನಿಯಮಗಳು_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "List of your dynamic filtering rules.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rule syntax: source destination type action (full documentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sort:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "ನಿಯಮದ ಪ್ರಕಾರ", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "ಮೂಲ", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "ಗಮ್ಯಸ್ಥಾನ", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "ಆಮದಿಸಿ ಸೇರ್ಪಡಿಸು", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "ರಫ್ತು...\n", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ನನ್ನ-ublock-ವಿಶ್ವಾಸಾರ್ಹ-ಸೈಟ್ಗಳು_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿ", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "ವಿಧ", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "ಡೊಮೇನ್", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "ಫಿಲ್ಟರ್", + "description": "English: Filter" + }, + "logAll": { + "message": "ಎಲ್ಲಾ", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tabless", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "ಪ್ರಸ್ತುತ ಟ್ಯಾಬ್", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Reload the tab content", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Toggle the DOM inspector", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Toggle the popup panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: The logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Clear logger", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pause logger (discard all incoming data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Unpause logger", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Toggle logger filtering", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filter logger content", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logger filtering options", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "ಅಲ್ಲದ ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blocked", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "ಅನುಮತಿಸಲಾಗಿದೆ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modified", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1st-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3rd-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "ವಿವರಗಳು", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "ಫಿಲ್ಟರ್", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "ಫಿಲ್ಟರ್ ಪಟ್ಟಿ", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "ನಿಯಮ", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Context", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Root context", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "ವಿಧ", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL ನಿಯಮ ", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Context:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "ವಿಧ:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Static filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "ನಿರ್ಬಂಧಿಸು", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "ಅನುಮತಿಸು", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "any type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "\"{{origin}} \"ಇಂದಾ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "from anywhere", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "except when", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "even if", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Static filter {{filter}} found in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Static filter could not be found in any of the currently enabled filter lists", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Preserve entries from the last {{input}} minutes", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preserve at most {{input}} page loads per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preserve at most {{input}} entries per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Use {{input}} lines per entry in vertically expanded mode", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Hide columns:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} ಗಂಟೆ", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/rule", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "List", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Table", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "ಸಾದಾ", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "ತೆರೆ", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Create new report on GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Find similar reports on GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentation", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Read the documentation at uBlock/wiki to learn about all of uBlock Origin's features.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Questions and support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Bug report", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Troubleshooting Information", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "ಗೌಪ್ಯತಾ ನೀತಿ\n", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "ಬದಲಾವಣೆಗಳು", + "description": "" + }, + "aboutCode": { + "message": "Source code (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "ನೀಡುಗರು", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "ಮೂಲ ಕೊಡ್", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "ಅನುವಾದ", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "ಫಿಲ್ಟರ್ ಪಟ್ಟಿಗಳು", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "External dependencies (GPLv3-compatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's own filter lists are freely hosted on the following CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A randomly picked CDN is used when a filter list needs to be updated.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Back up to file…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restore from file…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Reset to default settings…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "The data could not be read or is invalid", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Network error: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "ಫಿಲ್ಟರ್ ಪಟ್ಟಿಯನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "ಒಂದು ನಿಮಿಷದ ಹಿಂದೆ", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} ನಿಮಿಷದ ಹಿಂದೆ", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "ಒಂದು ತಾಸಿನ ಹಿಂದೆ", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} ತಾಸಿನ ಹಿಂದೆ", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "ಒಂದು ದಿನದ ಹಿಂದೆ", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} ದಿನದ ಹಿಂದೆ", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Show Dashboard", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Show Logger", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "ಆಫ್", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Page blocked", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin ಈ ಕೆಳಗಿನ ಪುಟವನ್ನು ಲೋಡ್ ಮಾಡುವುದನ್ನು ತಡೆಯುತ್ತದೆ:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "This happened because of the following filter:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "without parameters", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "The filter has been found in:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "ಹಿಂದೆ ಹೋಗಿ", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "ಈ ವಿಂಡೋವನ್ನು ಮುಚ್ಚಿ", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Disable strict blocking for {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "ತಾತ್ಕಾಲಿಕವಾಗಿ", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "ಶಾಶ್ವತವಾಗಿ", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceed", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Export to cloud storage", + "description": "tooltip" + }, + "cloudPull": { + "message": "Import from cloud storage", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Import from cloud storage and merge with current settings", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "ಈ ಸಾಧನದ ಹೆಸರು:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Warning! Change these advanced settings at your own risk.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "ಸಲ್ಲಿಸಿ", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "ಬದಲಾವಣೆಗಳನ್ನು ಅನ್ವಯಿಸಿ", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "ಹಿಂತಿರುಗಿಸಿ", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "ಬೈಟ್ಗಳು", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Block element in frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribe to filter list…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Temporarily allow large media elements", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Type a shortcut", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Toggle locked scrolling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copy to clipboard", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Select all", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relax blocking mode", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "ಉಪಯೊಗಿಸುತಿರುವ ಸಂಗ್ರಹಣೆ: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Click to load", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/ko/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/ko/messages.json new file mode 100644 index 00000000..afb791f1 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/ko/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock₀", + "description": "extension name." + }, + "extShortDesc": { + "message": "이 부가 기능은 효율적인 차단기입니다. CPU와 메모리에 주는 부담이 적습니다.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — 대시보드", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "경고: 저장되지 않은 변경 사항이 있습니다!", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "머무르기", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "무시", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "설정", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "필터 목록", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "내 필터", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "내 규칙", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "제외 목록", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "단축키", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — 로그", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "정보", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "지원", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Asset 뷰어", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "고급 설정", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "클릭: 이 사이트에서 uBlock₀을 켜고 끕니다.\n\nCtrl+클릭: 이 페이지에서 uBlock₀을 끕니다.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "클릭: 이 사이트에서 uBlock₀을 비활성화합니다.\nCtrl+클릭: 이 페이지에서만 uBlock₀을 비활성화합니다.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "클릭하여 이 사이트에서 uBlock₀ 을 켭니다.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "요청 차단됨", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "이 페이지에서", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}}개 / {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "설치된 이후", + "description": "English: since install" + }, + "popupOr": { + "message": "또는", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "이 페이지에서 차단됨", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "설치 후 차단됨", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "도메인 연결됨", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "클릭하여 대시보드 열기", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "구성 요소 선택기 모드로 진입", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "구성 요소 선택기 모드로 진입", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "로그로 이동", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "이 사이트의 문제 신고", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "이 사이트에서 팝업 차단 토글", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "클릭하여 이 사이트에서 모든 팝업을 차단합니다", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "클릭하여 이 사이트에서 팝업 차단을 해제합니다", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "이 사이트에서만 적용되는 대용량 미디어 요소 차단 기능을 켜고 끕니다", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "클릭하여 이 사이트에서 대용량 미디어를 차단합니다", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "클릭하여 이 사이트에서 대용량 미디어 차단을 해제합니다", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "이 사이트에서 요소 숨김 필터링 토글", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "클릭하여 이 사이트에서 요소 숨김 필터링을 끕니다", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "클릭하여 이 사이트에서 요소 숨김 필터링을 켭니다", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "이 사이트에서 외부 폰트 차단 토글", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "클릭하여 이 사이트에서 외부 폰트를 차단합니다", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "클릭하여 이 사이트에서 외부 폰트 차단을 해제합니다", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "클릭하여 이 사이트에서 JavaScript를 비활성화합니다", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "클릭하여 이 사이트에서 JavaScript를 활성화합니다", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "팝업 창", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "대용량 미디어 요소", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "요소 숨김 필터링", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "외부 폰트", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "더 보기", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "간단히", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "공용 규칙: 이 열은 모든 사이트에 적용되는 규칙 열 입니다.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "로컬 규칙: 이 열은 현재 사이트만 적용되는 규칙 열 입니다.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "클릭하여 변경사항을 저장합니다.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "클릭하여 변경사항 적용을 되돌립니다.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "전체", + "description": "" + }, + "popupImageRulePrompt": { + "message": "이미지", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "서드 파티 필터", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "서드 파티 CSS/이미지", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "인라인 스크립트", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "스크립트", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "서드 파티 스크립트", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "서드 파티 프레임", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "도메인 연결됨", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}}개 중 {{count}}개", + "description": "appears in popup" + }, + "popupVersion": { + "message": "버전", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "스크립트", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "프레임", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "생성", + "description": "English: Create" + }, + "pickerPick": { + "message": "선택", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "종료", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "미리보기", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "네트워크 필터", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "요소 숨김 필터", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "클릭, Ctrl-클릭", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "구성 요소 차단", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "차단된 요소의 자리 감추기", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "차단된 요청 개수를 아이콘에 표시", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "툴팁 비활성화", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "컨텍스트 메뉴를 상황에 맞게 사용", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "색맹 접근성 향상", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "표시", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "테마", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "사용자 지정 강조 색상", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "클라우드 저장소 활성화", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "저는 고급 사용자입니다", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "프리-페칭 비활성화 (차단된 네트워크 요청에 대해 모든 접속요청 방지)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "하이퍼링크 검사 비활성화", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "WebRTC로부터 로컬 IP 주소 유출을 방지", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "기본 동작", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "이 기본 동작들은 사이트 별로 정의 할 수 있습니다.", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "요소 숨김 필터 비활성화", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "{{input:number}} KB 보다 큰 미디어 구성요소 차단", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "외부 폰트 차단", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "JavaScript 비활성화", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP 보고서 차단", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "표준 이름 잠금 해제", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "고급", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "전문적인 사용자에게만 권장되는 설정입니다.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "고급 설정", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "최근 복원:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "최근 백업:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} 네트워크 필터 + {{cosmeticFilterCount}} 요소 숨김 필터:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}}개 중 {{used}}개 사용 중", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "필터 목록 자동 업데이트", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "지금 업데이트", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "모든 캐시 제거", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "요소 숨김 필터 분석 및 적용", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "요소 숨김 필터링은 네트워크 요청 차단 방식으로는 막을 수 없는, 웹 페이지 내의 시각적으로 거슬리는 요소들을 숨기는 역할을 합니다.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "범용 요소 숨김 필터 무시", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "범용 요소 숨김 필터는 모든 웹사이트에 공통적으로 적용되는 필터입니다. 이 옵션을 활성화하면 범용 요소 숨김 필터링을 처리하는 과정에서 발생하는 웹 페이지의 메모리 및 CPU 부하를 제거할 수 있습니다.\n\n사양이 낮은 기기에서는 이 옵션을 활성화하는 것을 권장합니다.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "모든 필터 목록을 불러올 때까지 네트워크 일시 중단", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "차단된 호스트 목록", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "변경사항 적용", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "기본 내장", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "광고", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "개인정보 보호", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "멀웨어 및 보안", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "소셜 위젯", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "쿠키 공지", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "방해 요소", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "다목적", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "지역 및 언어", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "사용자 지정", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "불러오기..", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "한 줄에 한 개의 URL을 입력하세요. 존재하지 않는 URL은 자동으로 무시됩니다.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "구버전", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "내용 보기", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "마지막 업데이트: {{ago}}\n업데이트하려면 여기를 클릭하세요.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "업데이트 중...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "네트워크 오류로 인해 리소스가 업데이트되지 못했습니다.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "신뢰할 수 없는 출처의 필터를 추가하지 마십시오.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "내 사용자 정의 필터 활성화", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "신뢰가 필요한 사용자 정의 필터 허용", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "가져오기 및 추가하기", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "내보내기", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-고정필터_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "변경사항 적용", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "영구 규칙", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "임시 규칙", + "description": "header" + }, + "rulesRevert": { + "message": "되돌리기", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "제출", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "편집", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "저장", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "취소", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "파일로부터 불러오기...", + "description": "" + }, + "rulesExport": { + "message": "파일로 내보내기...", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ublock-동적규칙_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "동적 필터링 규칙 목록입니다.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "규칙 문법: 소스 페이지, 필터링 대상, 필터링할 타입, 적용할 조치 (전체 설명서).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "분류:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "규칙 유형", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "소스", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "목표", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "목록에 있는 호스트들은 uBlock₀에서 비활성화됩니다. 한 줄에 한 개씩 입력하세요. 존재하지 않는 호스트는 자동으로 무시됩니다.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "가져오기 및 추가하기", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "내보내기", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ublock-제외목록_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "변경사항 적용", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "유형", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "도메인", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "필터", + "description": "English: Filter" + }, + "logAll": { + "message": "전체", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "숨겨진 구성 요소", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "현재 탭", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "탭 내용 새로고침", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM 속성 검사기 토글", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "팝업 패널 토글", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin 위키: 로거", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "로거 초기화", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "로거 일시중지 (들어오는 모든 데이터 무시)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "로거 일시중지 해제", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "로거 필터링 토글", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "필터 로그 항목", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "로거 필터링 옵션", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "제외", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "차단됨", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "허용됨", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "수정됨", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "퍼스트 파티", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "서드 파티", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "상세정보", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "필터", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "필터 목록", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "규칙", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "컨텍스트", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "최상위 컨텍스트", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "파티", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "유형", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "동적 URL 필터링", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "페이지:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "유형:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "고정 필터링", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "네트워크 요청이 {{type}} 일 경우,{{br}}URL 주소가 {{url}} 와 일치하고{{br}}{{origin}} 에서 비롯되었을 경우 {{action}} 한다.{{br}}그리고 다음 예외 필터와 일치할 경우 {{importance}} 한다.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "차단", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "허용", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "\"{{type}}\" 종류", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "모든 종류", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "\"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "전체", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "예외 처리", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "비 예외 처리", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "{{filter}} 에서 찾은 고정 필터:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "현재 활성화된 필터 목록에서 정적 필터를 찾을 수 없습니다", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "아래의 세 가지 조건을 모두 충족하지 않는 항목은 자동으로 삭제됩니다.", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "최근 {{input}} 분의 항목 유지", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "탭 당 최대 {{input}} 페이지로드 유지", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "탭 당 최대 {{input}} 항목 유지", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "수직 확장 모드에서 항목 당 {{input}} 줄 사용", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "숨긴 열:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} 시간", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} 필터/규칙", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} 컨텍스트", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} 파티", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "목록", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "테이블", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "일반", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "마크다운", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "열기", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "GitHub에서 새 신고 생성", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "유사한 신고 탐색", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "문서", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "uBlock/wiki의 문서를 읽고 uBlock Origin의 모든 기능에 대해 알아보세요.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "질문 및 지원", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "질문에 대한 답변 및 기타 도움 지원은 /r/uBlockOrigin 서브레딧에서 제공됩니다.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "필터 문제/웹사이트가 망가짐", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "특정 웹사이트에서 발생하는 필터 문제는 uBlockOrigin/uAssets 이슈 트래커에 보고해주세요. GitHub 계정이 필요합니다", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "중요: uBlock Origin과 유사한 목적의 다른 차단기를 함께 사용하지 마세요. 일부 웹사이트에서 필터 문제가 발생할 수 있습니다.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "팁: 필터 목록이 최신 버전인지 확인하세요. 로거는 필터 관련 문제를 진단하는 데에 사용되는 기본적인 도구입니다.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "오류 신고", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "uBlock Origin 자체에 대한 이슈는 uBlockOrigin/uBlock-issue 이슈 트래커에 보고해주세요. GitHub 계정이 필요합니다.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "문제 해결 정보", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "다음은 자원봉사자들이 문제를 해결을 돕는 데 유용할 수 있는 기술적인 정보입니다.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "필터 문제 신고", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "자원봉사자들이 중복 신고로 인해 부담을 겪지 않도록, 해당 문제가 이미 신고되지는 않았는지 확인해주시기 바랍니다. 중요: 버튼을 클릭하면 페이지의 출처가 GitHub로 전송됩니다.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "필터 목록은 매일 업데이트됩니다. 최신 필터 목록에서 문제가 이미 해결되었는지 확인해 주세요.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "문제가 있는 웹페이지를 새로고침한 후에도 문제가 여전히 발생하는지 확인해 주세요.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "웹 페이지의 주소:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "웹 페이지가...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- 주제 선택 --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "광고나 광고 흔적을 보여줍니다", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "오버레이나 기타 성가신 요소를 보여줍니다", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "uBlock Origin 사용을 감지합니다", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "개인정보 보호 관련 이슈가 있습니다", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "uBlock Origin을 켜면 깨집니다", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "원치 않는 탭이나 창을 엽니다", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "악성코드, 피싱으로 유도합니다", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "웹 페이지를 “NSFW” (“Not Safe For Work”)로 분류", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "개인정보 처리방침", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "변경사항", + "description": "" + }, + "aboutCode": { + "message": "소스 코드 (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "기여자", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "소스 코드", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "번역", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "필터 목록", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "외부 종속성 (GPLv3 호환):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "아래 CDN에서 uBO의 필터 목록을 무료로 호스팅해 줍니다:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "필터 목록을 업데이트할 때 무작위로 선택된 CDN이 쓰입니다.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "파일로 백업하기", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-백업_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "파일로부터 복원하기...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "기본 설정으로 초기화...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "모든 설정은 {{time}}에 백업된 데이터에 덮어씌워지며, uBlock₀이 재시작됩니다.\n\n백업된 데이터로 기존의 모든 설정을 덮어쓰시겠습니까?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "데이터를 읽을 수 없거나 잘못되었습니다.", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "모든 설정이 제거되며, uBlock₀이 재시작됩니다.\n\nuBlock₀의 설정을 처음 설정으로 초기화하시겠습니까?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "네트워크 오류: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "구독", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "1분 전", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}}분 전", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "1시간 전", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}}시간 전", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "1일 전", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}}일 전", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "대시보드 보기", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "로그 보기", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "끄기", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "페이지 차단됨", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin이 다음 페이지를 로드하는것을 방지했습니다:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "다음 필터로 인해 방지됨", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "제외 매개 변수", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "다음 필터에서 찾음:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "돌아가기", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "이 창을 닫기", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "더 이상 이 사이트에 대해 경고 하지 않기", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "{{hostname}}에서 엄격 차단기능 끄기", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "일시적으로", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "항상", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "계속", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "차단된 페이지에서 다른 사이트로 이동하려 합니다. 계속하시면, {{url}} 주소로 바로 이동합니다.", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "사유:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "악성", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "추적기", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "낮은 평판", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "클라우드 저장소로 내보내기", + "description": "tooltip" + }, + "cloudPull": { + "message": "클라우드 저장소로부터 가져오기", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "클라우드 저장소의 설정 불러오기 및 현재 설정과 통합", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "현재 기기의 이름:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "경고! 고급 옵션을 변경하여 발생하는 문제는 사용자에게 있습니다.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "제출", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "변경사항 적용", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "되돌리기", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "바이트", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "프레임 내 구성 요소 차단", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "필터 목록 구독...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "일시적으로 대용량 미디어 요소 허용", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "소스 코드 보기…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "단축키를 입력하세요", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "스크롤 잠금 토글", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "클립보드에 복사", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "모두 선택", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "요소 숨김 필터링 토글", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript 토글", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "차단 모드 완화", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "스토리지 사용량: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "불러오려면 클릭하기", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "오류: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "브라우저 시작 시 필터링을 제대로 수행할 수 없습니다.\n정확한 필터링을 위해 페이지를 새로고침해주세요.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/lt/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/lt/messages.json new file mode 100644 index 00000000..c6781158 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/lt/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Pagaliau, efektyvus blokatorius, neapkraunantis nei procesoriaus, nei darbinės atminties.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Prietaisų skydas", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Dėmesio! Turite neišsaugotų pakeitimų", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Pasilikti čia", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignoruoti", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Nustatymai", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filtrų sąrašai", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Mano filtrai", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Mano taisyklės", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Išimtys", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Nuorodos", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Žurnalas", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Apie", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Pagalba", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — resursų žiūryklė", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Sudėtingesni nustatymai", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Spustelėjimas: įjungti/išjungti uBlock₀ šiam puslapiui.\n\nVald+spustelėjimas: išjungti uBlock₀ tik šiam puslapiui.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Spustelėkite, kad išjungtumėte uBlock₀ šiai svetainei.\n\nVald+spustelėkite, kad išjungtumėte uBlock₀ tik šiam puslapiui.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Spustelėkite, kad įjungtumėte uBlock₀ šiai svetainei.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "blokuotos užklausos", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "šiame puslapyje", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} arba {{percent}} %", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "nuo įdiegimo", + "description": "English: since install" + }, + "popupOr": { + "message": "arba", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokuojama šiame puslapyje", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Užblokuota nuo įdiegimo", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Prijungti domenai", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Atverti prietaisų skydą", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Atverti elementų trynimo veikseną", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Atverti elementų parinkimo veikseną", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Atverti žurnalą", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Pranešti apie problemą šioje svetainėje", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Perjungti visų iškylančiųjų langų blokavimą šiame puslapyje", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Spustelėkite visų iškylančių langų blokavimui šioje svetainėje", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Spustelėkite visų iškylančių langų neblokavimui šioje svetainėje", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Perjungti didelių medijos elementų blokavimą šiame puslapyje", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Spustelėkite didelių medijos elementų blokavimui šioje svetainėje", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Spustelėkite didelių medijos elementų neblokavimui šioje svetainėje", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Perjungti kosmetinį filtravimą šiame puslapyje", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Spustelėkite kosmetinių filtrų išjungimui šioje svetainėje", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Spustelėkite kosmetinių filtrų įjungimui šioje svetainėje", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Perjungti nuotolinių šriftų blokavimą šiame puslapyje", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Spustelėkite nutolusių šriftų blokavimui šioje svetainėje", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Spustelėkite nutolusių šriftų neblokavimui šioje svetainėje", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Spustelėkite JavaScript išjungimui šioje svetainėje", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Spustelėkite JavaScript įjungimui šioje svetainėje", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Iškylantysis langas", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Dideli medijos elementai", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kosmetinis filtravimas", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Nuotoliniai šriftai", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Daugiau", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mažiau", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globalios taisyklės: ši skiltis skirta visiems puslapiams taikomoms taisyklėms.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Vietinės taisyklės: ši skiltis skirta dabartiniam puslapiui taikomoms taisyklėms.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Spauskite pakeitimams padaryti pastoviais.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Spauskite pakeitimams atstatyti.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "visi", + "description": "" + }, + "popupImageRulePrompt": { + "message": "vaizdai", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "trečios šalies", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "3-ios šalies CSS/paveikslai", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "įterptieji scenarijai", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1-os šalies scenarijai", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3-ios šalies scenarijai", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3-ios šalies rėmeliai", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "jungtasi prie sričių", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} iš {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versija", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "Skriptas", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Sukurti", + "description": "English: Create" + }, + "pickerPick": { + "message": "Parinkti", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Baigti", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Peržiūra", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Tinklo filtrai", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kosmetiniai filtrai", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Spustelėjimas, Vald-spustelėjimas", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blokuoti elementą", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Slėpti blokuotų elementų rezervuotą vietą", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Rodyti blokuotų užklausų skaičių piktogramoje", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Išjungti paaiškinimus", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Kur tinka, naudoti kontekstinį meniu", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Draugiškas neskiriantiems spalvų", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Išvaizda", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Įjungti nuotolinės saugyklos palaikymą", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Aš esu patyręs naudotojas (privaloma perskaityti)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Išjungti išankstinį gavimą (visiems blokuotų tinklo užklausų prisijungimams išvengti)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Išjungti saitų auditą", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Neleisti WebRTC atskleisti vietinio IP adreso", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Numatytoji elgsena", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Šios numatytosios elgsenos gali būti nustelbtos kiekvienam puslapiui atskirai", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Išjungti kosmetinius filtrus", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokuoti medijos elementus didesnius nei {{input}} kB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokuoti nuotolinius šriftus", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Išjungti JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blokuoti CSP ataskaitas", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Papildomi nustatymai", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "sudėtingesni nustatymai", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Paskutinis atkūrimas:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Paskutinė atsarginė kopija:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "Tinklo filtrų ({{netFilterCount}}) + kosmetinių filtrų ({{cosmeticFilterCount}}) iš:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "naudojama {{used}} iš {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Automatiškai atnaujinti filtrų sąrašus.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Atnaujinti dabar", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Valyti visus podėlius", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analizuoti ir taikyti kosmetinius filtrus.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

Ši nuostata įjungia Su Adblock Plus suderinamų „elementų slėpimo“ filtrų analizę ir taikymą. Šie filtrai iš esmės yra kosmetiniai, jie naudojami tinklalapio elementams, kurie yra laikomi vaizdiniais nepatogumais ir kurių negalima užblokuoti tinklo užklausomis paremtais filtrais, paslėpti.

Šios nuostatos įjungimas padidina uBlock₀ atminties naudojimą.

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignoruoti daugybinius kosmetinius filtrus.", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

Daugybiniai kosmetiniai filtrai yra tokie kosmetiniai filtrai, kurie taikomi visoms svetainėms.

Nors uBlock₀ juos apdoroja efektyviai, daugybiniai kosmetiniai filtrai vis tiek gali prisidėti prie pamatuojamo atminties ir procesoriaus panaudojimo kai kuriose svetainėse, ypač didelėse ir ilgai gyvuojančiose.

Šio nustatymo įjungimas sumažins atminties ir procesoriaus naudojimą, kurį sukelia svetainės dėl daugybinių kosmetinių filtrų apdorojimo, bei sumažins bendrą uBlock₀ atminties naudojimą.

Rekomenduojama įjungti šį nustatymą mažiau galinguose įrenginiuose.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Blokuotų serverių sąrašas", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Taikyti pakeitimus", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Įtaisyti", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklamos", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privatumas", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Apsauga nuo kenkėjiškų programų, saugumas", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Erzinimas", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Univarsalūs", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regionai, kalbos", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Adaptuoti", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importuoti...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Vienas URL eilutėje. Neteisingi URL bus tyliai ignoruoti.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Pasenęs.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "peržiūrėti turinį", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Paskutinis atnaujinimas: {{ago}}.\nIeškoti atnaujinimo.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Atnaujinama...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Tinklo klaida sutrukdė atnaujinti resursą.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importuoti ir papildyti", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Eksportuoti", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "mano-ublock-statiniai-filtrai_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Taikyti pakeitimus", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Pastovios taisyklės", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Laikinos taisyklės", + "description": "header" + }, + "rulesRevert": { + "message": "Atstatyti", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Pritaikyti", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Redaguoti", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Įrašyti", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Atmesti", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importuoti iš failo...", + "description": "" + }, + "rulesExport": { + "message": "Eksportuoti į failą", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "mano-ublock-dinaminės-taisyklės_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Dinaminių filtravimo taisyklių sąrašas.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Taisyklės sintaksė: šaltinis paskirtis tipas veiksmas (dokumentacija).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Rikiuoti pagal:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Taisyklės tipas", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Šaltinis", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Tikslas", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Baltojo sąrašo direktyvos nurodo, kurioms svetainėms uBlock Origin turėtų būti išjungtas. Vienas įrašas eilutėje. Neteisingos direktyvos bus tyliai ignoruotos ir užkomentuotos.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importuoti ir papildyti", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Eksportuoti", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "mano-ublock-išimtys_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Taikyti pakeitimus", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tipas", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Sritis", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtras", + "description": "English: Filter" + }, + "logAll": { + "message": "Visos", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Užkulisiai", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Dabartinė kortelė", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Įkelti kortelės turinį iš naujo", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Įjungti / išjungti DOM tyriklį", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Įjungti/išjungti iššokantį langą", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "„uBlock Origin“ viki: žurnalas", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Valyti žurnalą", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pristabdyti žurnalą (atmesti visus gaunamus duomenis)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Tęsti žurnalą", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Įjungti / išjungti žurnalo filtravimą", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtruoti žurnalo įrašus", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Žurnalo filtravimo nuostatos", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Ne", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "užblokuota", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "leidžiama", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modifikuota", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1-oji šalis", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3-ioji šalis", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Išsamiau", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtras", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filtrų sąrašas", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Taisyklė", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontekstas", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Šakninis kontekstas", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tipas", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL taisyklė", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontekstas:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tipas:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statinis filtravimas", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} {{type}} tinklo užklausas, {{br}}kur URL adresas atitinka {{url}} {{br}}ir kurios kyla {{origin}},{{br}}{{importance}} yra atitinkantis išimties filtras.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokuoti", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Leisti", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "„{{type}}“ tipo", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "bet kokio tipo", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "iš „{{origin}}“", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "bet kur", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "išskyrus kai", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "net jei", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statinis filtras {{filter}} rastas:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statinis filtras {{filter}} nerastas jokiame dabar įjungtame filtrų sąraše", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Loggerio įrašai, kurie neatitinka visų trijų žemiau esančių sąlygų bus automatiškai panaikinami", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Išsaugoti įrašus ne senesnius kaip {{input}} min.", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preserve at most {{input}} page loads per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preserve at most {{input}} entries per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Use {{input}} lines per entry in vertically expanded mode", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Hide columns:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Time", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/rule", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Sąrašas", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Lentelė", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Neformatuotas", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Atidaryti", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Sukurti naują ataskaitą", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Rasti panašias ataskaitas", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentacija", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Read the documentation at uBlock/wiki to learn about all of uBlock Origin's features.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Klausimai ir pagalba", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Klaidos pranešimas", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Troubleshooting Information", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Privatumo politika", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Pakeitimų žurnalas", + "description": "" + }, + "aboutCode": { + "message": "Pirminis tekstas (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Talkininkai", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Programinis kodas", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Vertimai", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filtrų sąrašai", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Išorinės priklausomybės (suderinamos su „GPLv3“):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's own filter lists are freely hosted on the following CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A randomly picked CDN is used when a filter list needs to be updated.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Padaryti atsarginę kopiją į failą", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "mano-ublock-atsarginė_kopija_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Atkurti iš failo...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Atkurti numatytuosius nustatymus...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Visi jūsų nustatymai bus perrašyti naudojant duomenis iš {{time}} atsarginės kopijos, o uBlock₀ bus perleistas.\n\nPerrašyti visus nustatymus naudojant atsarginės kopijos duomenis?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Nepavyko nuskaityti duomenų arba jie neteisingi", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Visi jūsų nustatymai bus pašalinti, o uBlock₀ bus perleistas.\n\nAtkurti uBlock₀ pradinius nustatymus?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Tinklo klaida: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Prenumeruoti", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "prieš minutę", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "prieš {{value}} min.", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "prieš valandą", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "prieš {{value}} val.", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "prieš dieną", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "prieš {{value}} d.", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Rodyti prietaisų skydą", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Rodyti žurnalą", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "išjungta", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Puslapis užblokuotas", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin neleido įkelti šio puslapio:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Dėl šio filtro", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "be parametrų", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Rasta:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Grįžti", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Užverti langą", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Išjungti griežtą {{hostname}} blokavimą", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Laikinai", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Negrįžtamai", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Tęsti", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Eksportuoti į nuotolinę saugyklą", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importuoti iš nuotolinės saugyklos", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importuoti iš nuotolinės saugyklos ir sulieti su dabartiniais nustatymais", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Šio įrenginio vardas:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Įspėjimas! Keiskite šiuos sudėtingesnius nustatymus savo rizika.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Pateikti", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Taikyti pakeitimus", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Atstatyti", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "baitai", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Block element in frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribe to filter list…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Laikinai leisti didelius medijos elementus", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Įveskite nuorodą", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Toggle locked scrolling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopijuoti į iškarpinę", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Žymėti viską", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relax blocking mode", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Storage used: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Click to load", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Klaidos: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/lv/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/lv/messages.json new file mode 100644 index 00000000..22cb29e8 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/lv/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock₀", + "description": "extension name." + }, + "extShortDesc": { + "message": "Beidzot, efektīvs bloķētājs. Nepārslogo procesoru un atmiņu.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Vadības panelis", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Uzmanību! Ir nesaglabātas izmaiņas", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Palikt", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Neņemt vērā", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Iestatījumi", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Trešo pušu filtri", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Mani filtri", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Mani noteikumi", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Uzticamas vietnes", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Īsceļi", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Tīkla pieprasījumu žurnāls", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Par", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Atbalsts", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — līdzekļu skatītājs", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Papildu iestatījumi", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klikšķis: atslēgt/ieslēgt uBlock₀ šajā vietnē.\n\nCtrl+klikšķis: atslēgt uBlock₀ tikai šai lapai.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Noklikšķināt, lai atslēgtu uBlock₀ šajā vietnē.\n\nCtrl + klikšķis, lai atslēgtu uBlock₀ tikai šajā lapā.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klikšķināt, lai šajā vietnē iespējotu uBlock₀.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "bloķētie pieprasījumi", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "šajā lapā", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} vai {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "kopš instalācijas brīža", + "description": "English: since install" + }, + "popupOr": { + "message": "vai", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Aizturētas šajā lapā", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Pavisam aizturētas", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Savienotie domēni", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Atvērt vadības paneli", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Ieiet elementa dzēšanas režīmā", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Ienākt elementa atlasītāju režīmā", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Atvērt pieprasījumu žurnālu", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Ziņot par nepilnību šajā vietnē", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Pārslēgt uznirstošo logu bloķēšanu šajā vietnē", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klikšķināt, lai šajā vietnē aizturētu uznirstošos logus", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klikšķināt, lai šajā vietnē vairs neaizturētu uznirstošos logus", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Pārslēgt lielu multivides elementu bloķēšanu šajā vietnē", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klikšķināt, lai šajā vietnē aizturētu lielas informācijas nesēju daļas", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klikšķināt, lai neaizturētu lielas informācijas nesēju daļas", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Pārslēgt kosmētisko filtrēšanu šajā vietnē", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klikšķināt, lai šajā vietnē atspējotu vizuālo aizturēšanu", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klikšķināt, lai šajā vietnē iespējotu vizuālo aizturēšanu", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Pārslēgt ārējo fontu bloķēšanu šajā vietnē", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klikšķināt, lai šajā vietnē aizturētu attālos fontus", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klikšķināt, lai šajā vietnē vairs neaizturēt attālos fontus", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klikšķināt, lai šajā vietnē atspējotu JavaScript", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klikšķināt, lai šajā vietnē vairs neatspējotu JavaScript", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Uznirstošie logi", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Lielas informācijas nesēju daļas", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Vizuālā aizturēšana", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Attālinātie fonti", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Vairāk", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mazāk", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globālie ierobežojumi: šī kolonna paredzēta ierobežojumiem, kas attieksies uz visām mājaslapām.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Vietējie ierobežojumi: šī kolonna paredzēta ierobežojumiem, kas attieksies tikai uz konkrēto mājaslapu.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Nokliķšķināt šeit, lai saglabātu izmaiņas.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klikšķināt, lai atceltu izmaiņas.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "Visi", + "description": "" + }, + "popupImageRulePrompt": { + "message": "attēli", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "No trešajām pusēm", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "trešo pušu CSS/attēli", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline skripti", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1st-party skripti", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3rd-party skripti", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3rd-party freimi", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "savienotie domēni", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} no {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versija", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skripts", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "rāmis", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Izveidot", + "description": "English: Create" + }, + "pickerPick": { + "message": "Izvēlēties", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Iziet", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Priekšskatījums", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Resursu filtri", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Vizuālie filtri", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Click, Ctrl-click", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Bloķēt elementu…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Paslēpt vietu no bloķētā elementa", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Parādīt bloķēto pieprasījumu skaitu uz ikonas", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Atslēgt rīka padomus (tooltips)", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Izmantot konteksta izvēlni vajadzības gadījumā", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Daltoniķiem draudzīgs", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Izskats", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Izskats", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Pielāgota izcēluma krāsa", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Aktivizēt mākoņdatu glabāšanas atbalstu", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Es esmu pieredzējis lietotājs (Vēlams izlasīt)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Atslēgt pirmsielādi (lai novērstu bloķētus tīkla pieprasījumus)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Atslēgt tīmekļa saišu izsekošanu", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Novērst savas IP adreses noplūdi ar WebRTC", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Noklusējuma darbība", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Šos uzstādījumus var mainīt katrai vietnei atsevišķi", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Atslēgt kosmētiskos filtrus", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Aizturēt informācijas nesēju daļas, kas ir lielākas par {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Bloķēt ārējos fontus", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Atspējot JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Bloķēt CSP atskaites", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Atslēpt kanoniskos nosaukumus", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Paplašināti", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Iespējas, kas piemērotas tikai tehniskiem lietotājiem.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "papildu iestatījumi", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Pēdējā atjaunošana veikta:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Pēdējā rezerves kopija:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} tīkla filtri + {{cosmeticFilterCount}} kosmētikas filtri no:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} izmanto no {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Automātiski atjaunināt filtra sarakstus.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Atjaunināt tūlīt", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Visas kešatmiņas iztīrīšana", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Apstrādāt un izpildīt kosmētikas filtrus.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

Šī opcija iespējo apstrādāt un ieviest ar Adblock Plus saderīgus “elementu paslēpšanas” filtrus. Šie filtri ir būtībā kosmētiski, tie kalpo, lai paslēptu tīmekļa lapu elementus, kas tiek uzskatīti par vizuālu traucējumu, un kas nevar būt nobloķēti ar pieprasījumu balstītu filtrēšanas programmu.

Šī līdzekļa iespējošana palielina uBlock₀ izmantojamās atmiņas daudzumu.

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Neņemt vērā vispārīgos kosmētiskos aizturētājus", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Vispārīgie kosmētiskie aizturētāji ir tādi kosmētiskie aizturētāji, kurus paredzēts pielietot visās tīmekļvietnēs. Šīs iespējas iespējošana novērsīs tīmekļa lapām pievienoto atmiņas un CPU virstēriņu kā vispārīgo kosmētisko aizturētāju apstrādāšanas iznākumu.\n\nIr ieteicams iespējot šo iespēju mazāk jaudīgās ierīcēs.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Atlikt tīkla darbības, līdz visi aizturēšanas saraksti ir ielādēti.", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Bloķēto hostu saraksti", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Lietot izmaiņas", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Iebūvētie", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklāmas", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Konfidencialitāte", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Aizsardzība pret ļaunprātīgām (inficētas vai satur vīrusus) vietnēm, drošība", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sabiedriskās ekrānvadīklas", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Sīkdatņu paziņojumi", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Traucējoši elementi", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Daudzfunkcionālie", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Reģionālie, valodas", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Lietotāja", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Ievietot…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Viens URL katrā rindā. Nederīgi URL netiks ņemti vērā.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Novecojis.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "skatīt saturu", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Pēdējo reizi atjaunināts: {{ago}}.\nNoklikšķiniet, lai atjauninātu.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Atjaunina…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Tīkla kļūda neļāva atjaunināt resursu.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Nevajag pievienot filtrus no neuzticamiem avotiem.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Iespējot manas pielāgotās atlases", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Ļaut pielāgotas atlases, kas pieprasa uzticēšanos", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importēt un pievienot", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Izgūt…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Lietot izmaiņas", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Pastāvīgie noteikumi", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Pagaidu noteikumi", + "description": "header" + }, + "rulesRevert": { + "message": "Atgriezt", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Ieviest", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Rediģēt", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Saglabāt", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Atsacīties", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Ievietot no datnes…", + "description": "" + }, + "rulesExport": { + "message": "Izgūt datnē…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Dinamisko filtrēšanas noteikumu saraksts.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Noteikumu sintakse: avots mērķis tips rīcība (pilna dokumentācija).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Kārtot:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Nosacījuma veids", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Avots", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Mērķis", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Saraksts ar interneta resursiem, kuriem tiks atslēgts uBlock Origin. Viens ieraksts katrā rindiņā. Nederīgi interneta resursu nosaukumi tiks ignorēti bez brīdinājuma.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importēt un pievienot", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Izgūt…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-whitelist_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Lietot izmaiņas", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tips", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domēns", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtrs", + "description": "English: Filter" + }, + "logAll": { + "message": "Viss", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Aizkulisēs", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Šī cilne", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Pārlādēt cilnes saturu", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Pārslēgt DOM pārlūku", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Pārslēgt uznirstošo paneli", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: žurnāls", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Iztīrīt žurnālu", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Apturēt žurnalēšanu (atmest visus ienākošos datus)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Atsākt žurnālus", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Pārslēgt žurnāla atlasi", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "žurnāla ierakstu filtrs", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Žurnāla atlases iespējas", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Nav", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "aizturēts", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "atļauts", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "mainīts", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Pirmā puse", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Trešā puse", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Izklāsts", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtrs", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filtru saraksts", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Nosacījums", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Konteksts", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Saknes konteksts", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Ballīte", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Veids", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "Vietnes URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Dinamiskā URL filtrēšana", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Konteksts:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tips:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statiskā filtrēšana", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} tīkla pieprasījumiem {{type}} {{br}}kuru URL adrese satur {{url}} {{br}}un kas nāk no {{origin}},{{br}}{{importance}} ir atbilstošs izņēmumu filtrs.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Bloķēt", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Atļaut", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "tips “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "jebkurš tips", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "no “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "no jebkuras vietas", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "izņemot gadījumus, kad", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "pat ja", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statiskais filtrs {{filter}} atrasts:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Nemainīgs aizturētājs netika atrasts nevienā no pašreiz iespējotajiem aizturēšanas sarakstiem", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Žurnāla ieraksti, kas neatbilsts visiem trim zemāk esošajiem nosacījumiem, tiks atmesti:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Saglabāt pēdējo {{input}} minūšu ierakstus", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Saglabāt ne vairāk kā {{input}} lapu ielādes cilnē", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Saglabāt ne vairāk kā {{input}} ierakstus cilnē", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Izmantot {{input}} rindas ierakstam stateniski izvērstā skatā", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Paslēpt kolonnas:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Laiks", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} aizturētājs/nosacījums", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Konteksts", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Ballīte", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Saraksts", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabula", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Vienkāršs", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Atvērt", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Izveidot jaunu ziņojumu", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Meklēt līdzīgus ziņojumus", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentācija", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Dokumentāciju var lasīt uBlock/wiki, lai uzzinātu par visām uBlock Origin iespējām.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Jautājumi un atbalsts", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Atbildes uz jautājumiem un cita veida atbalsts tiek sniegts /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Aizturēšanas nepilnības/nedarbojas vietne", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Par aizturēšanas nepilnībām noteiktās vietnēs var ziņot nepilnību uzskaitē uBlockOrigin/uAssets.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Svarīgi: ir jāizvairās no līdzīgu aizturētāju izmantošanas vienlaicīgi ar uBlock Origin, jo tas var radīt aizturēšanas kļūmes noteiktās vietnēs.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Ieteikums: jāpārliecinās, ka aizturēšanas saraksti ir atjaunināti. Žurnāls ir galvenais rīks, lai noteiktu ar aizturēšanu saistītas kļūmes.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Nepilnību ziņojums", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Par uBlock Origin nepilnībām jāziņo uBlockOrigin/uBlock-issue.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Kļūmju noteikšanas informācija", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Zemāk ir tehniskā informācija, kas var būt noderīga, kad brīvprātīgie mēģinās palīdzēt atrisināt sarežģījumus.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Ziņot par aizturētāja nepilnībām", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Lai izvairītos no brīvprātīgo noslogošanas ar ziņojumiem, kas atkārtojas, lūgums pārbaudīt, vai par šādu nepilnību jau ir ziņots.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Aizturēšanas saraksti tiek atjaunināti ik dienu. Jāpārliecinās, vai nepilnība jau nav novērsta visjaunākajos aizturēšanas sarakstos.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Jāpārliecinās, vai nepilnība joprojām pastāv pēc tīmekļa vietnes ar sarežģījumiem pārlādēšanas.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Tīmekļa lapas adrese:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Tīmekļa lapa…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Atlasīt ierakstu --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Rāda reklāmas vai to paliekas", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Ir pārklājumi vai citas neērtības", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Nosaka uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Ir ar privātumu saistītas nebūšanas", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Salūzt, kad uBlock Origin ir iespējots", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Atver nevēlamas cilnes vai logus", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Noved pie slitkas programmatūras, pikšķerēšanas", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Iezīmēt tīmekļa lapu kā \"NSFW\" (\"Not Safe for Work (nav droša darbam))", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Privātuma nosacījumi", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Izmaiņu žurnāls", + "description": "" + }, + "aboutCode": { + "message": "Pirmkods (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Atbalstītāji", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Pirmkods", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Tulkojumi", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filtru saraksti", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Ārējās atkarības (GPLv3 saderīgas):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO pašu aizturēšanas saraksti ir brīvi pieejami šajos SPT (satura piegādes tīklos):", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Nejauši izvēlēts SPT tiks izmantots, kad būs jāatjaunina aizturēšanas saraksts.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Saglabāt iestatījumus failā", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Atjaunot iestatījumus no faila...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Atgriezt noklusējuma iestatījumus…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Tiks pārrakstīti visi iestatījumi izmantojot datus, kas saglabāti {{time}}, un µBlock₀ tiks restartēts. Pārrakstīt visus esošos iestatījumus, izmantojot rezerves kopiju?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Datus nevar nolasīt vai tie nav derīgi", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Tiks atcelti visi Jūsu iestatījumi, un uBlock₀ tiks restartēts. \nAtjaunot rūpnīcas iestatījumus?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Tīkla kļūda: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Abonēt", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "pirms minūtes", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "pirms {{value}} minūtēm", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "pirms stundas", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "pirms {{value}} stundām", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "vakar", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "pirms {{value}} dienām", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Parādīt Vadības paneli", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Parādīt tīkla pieprasījumu žurnālu", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "izslēgts", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Lapa aizturēta", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock₀ novērsa šo lapu no ielādes:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Sakarā ar šādu filtru", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "bez parametriem", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Atrodas:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Doties atpakaļ", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Aizvērt šo logu", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Vairs nebrīdināt par šo vietni", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Atslēgt satura bloķēšanu saitnei {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Pagaidu", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Paliekoši", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Turpināt", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Aizturētā lapa veic pārvirzīšanu uz citu vietni. Ja izvēlēsies turpināt, nonāksi uzreiz šeit: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Iemesls:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Ļaunprātīgas darbības", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Izsekotājs", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Slikta slava", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Eksports uz mākoņdatu glabātuvi", + "description": "tooltip" + }, + "cloudPull": { + "message": "Imports no mākoņdatu glabātuves", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importēt no mākoņdatu glabātuves un apvienot ar pašreizējiem iestatījumiem", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Šīs ierīces nosaukums:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Brīdinājums! Mainiet šos iestatījumus uz savu atbildību.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Iesniegt", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Lietot izmaiņas", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Atgriezt", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "baiti", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Aizturēt elementu rāmī…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Abonēt filtru sarakstu…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Īslaicīgi atļaut lielos multivides elementus", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Skatīt pirmkodu…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Ievadīt saīsni", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Pārslēgt slēgto ritināšanu", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopēt starpliktuvē", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Atlasīt visu", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Pārslēgt kosmētisko atlasi", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Pārslēgt JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Atslābinātais aizturēšanas režīms", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Izmantotais krātuves lielums: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klikšķināt, lai ielādētu", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Kļūdas: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Nevarēja pienācīgi aizturēt pārlūka palaišanas laikā.\nJāpārlādē lapa, lai nodrošinātu pienācīgu aizturēšanu.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Šim ierakstam ir jābūt pēdējam", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/mk/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/mk/messages.json new file mode 100644 index 00000000..e63ae9ae --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/mk/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Конечно, ефикасен блокер. Лесен на CPU и меморија.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Табла", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Предупредување! Имате неснимени промени", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Остани тука", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Игнорирај", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Подесувања", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Филтер листи", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Мои филтери", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Мои правила", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Верувани сајтови", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Кратенки", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Логови", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "За", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Поддршка", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Прегледувач на средства", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Напредни подесувања", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Кликнете: деактивирајте/активирајте uBlock₀ за оваа страница.\n\nCtrl+клик: деактивирајте uBlock₀ само на оваа страница.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Кликнете за да го деактивирате uBlock₀ за оваа страница.\n\nCtrl+кликнете за да го деактивирате uBlock₀ само на оваа страница.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Кликнете за да го активирате uBlock₀ за оваа страница.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "побарувања блокирани", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "на оваа страница", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} или {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "од инсталирање", + "description": "English: since install" + }, + "popupOr": { + "message": "или", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Блокирани на оваа страна", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Блокирани од инсталирање", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Домени конектирани", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Отворија ја таблата", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Влези во елемент западник мод", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Влези во елемент одбирач мод", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Отвоери го логерот", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Пријави проблем на оваа веб-страница", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Промени ја блокадата на сите поп-упи за оваа страница", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Кликни да блокираш сите попапи на оваа страница", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Кликнете за да не блокирате повеќе сите поп-упи на оваа страница", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Промени ја блокадата на големите медиумски елементи за оваа страница", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Кликнете за да блокирате големи медиумски елементи на оваа страница", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Кликнете за да не блокирате повеќе големи медиумски елементи на оваа страница", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Промени го козметичкото филтрирање за оваа страница", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Кликнете да го исклучите козметичките филтри на оваа страна", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Кликнете да го уклучите козметичките филтри на оваа страна", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Промени ја блокадата на далечински фонтови за оваа страница", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Кликнете за да блокирате далечински фонтови на оваа страница", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Кликнете за да не блокирате повеќе далечински фонтови на оваа страница", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Кликнете за да се блокира JavaScript на оваа страна", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Кликнете за да не се блокира JavaScript на оваа страна повеќе", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Поп-ап прозорец", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Големи медија елемнти", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Козметичко филтрирање", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Далечни фонтови", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Повеќе", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Помалку", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Глобални правила: оваа колона е за правила што се однесуваат на сите сајтови.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Локални правила: оваа колона е за правила што се однесуваат само на моменталниот сајт.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Кликни да ги снимиш твоите промени трајно", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Кликни да ги повратиш твоите промени", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "сите", + "description": "" + }, + "popupImageRulePrompt": { + "message": "слики", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Трети лица", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "Трети лица css/слики", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "внатрешни скрипти", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Самострани скрипти", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Други страни скрипти", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3rd-party фрејмови", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "домени конектирани", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} од {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Верзија", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "скрипта", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "рамка", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Создади", + "description": "English: Create" + }, + "pickerPick": { + "message": "Одбери", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Исклучи", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Прегледај", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Мрежни филтери", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Козметичко филтрирање", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Клик, Контрол-клик", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Блокирај елемент...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Скријте ги местата за блокирани елементи", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Покажувај ја бројката на блокирани барања на иконата", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": " Исклучи ги советите", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Искористете го контекстуалното мени каде што е соодветно", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Користи бои за слепоболност", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Изглед", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Тема", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Прилагодена боја на акцентот", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Уклучи поддршка за складирање во облак", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Јас сум напреден корисник (потребно читање)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Деактивирајте пред-фаќање (за да се спречат било какви врски за блокирани мрежни барања)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Деактивирајте проверка на хиперврски", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Спречете WebRTC да ги открие локалните IP адреси", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Стандардно однесување", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Овие стандардни однесувања можат да се променат на база на сајт", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Исклучи козметичо филтрирање", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Блокирај медија елементи поголеми од {{input}} КБ", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Блокирај далечни фонтови", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Исклучи JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Блокирајте CSP извештаи", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Откријте канонски имиња", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Напредно", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Функции погодни само за технички корисници", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "напредни подесувања", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Последно ресторирање:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Последно снимено:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} мрежни филтери + {{cosmeticFilterCount}} козметичи филтери од:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} користени од {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Авто-ажурирање филтер листи", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Апдејтирај сега", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Исчисти сите кешови", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Парсирајте и спроведете козметички филтри", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Козметичките филтри служат за сокривање на елементи во веб-страница кои се сметаат за визуелна непријатност, и кои не можат да се блокираат со мрежните мотори за филтрирање базирани на барања.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Игнорирајте генералистички козметички филтри", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Генералистичките козметички филтри се оние козметички филтри што се наменети да се применуваат на сите веб-страници. Вклучувањето на оваа опција ќе ја елиминира оптовареноста на меморијата и ЦПУ-то додадена на веб-страниците како резултат на обработката на генералистичките козметички филтри.\n\nСе препорачува да се вклучи оваа опција на помалку моќни уреди.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Суспендирајте ја мрежната активност додека не се вчитат сите листи со филтри", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Примени измени", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Вградено", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Реклами", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Приватност", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Заштита од малициозен софтвер, безбедност", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Социјални widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Известија за колачиња", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Досадни", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Многуцелно", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Региони, јазици", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Прилагодено", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Импортирај...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Еден УРЛ по линија. Неважечки УРЛи ќе бидат игнорирани во тишина.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Застарени.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "прегледајте содржина", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Последно обновување: {{ago}}.\nКликнете за да принудите обновување.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Ажурирање...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Мрежна грешка ја спречи обновата на ресурсот.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Не додавајте филтри од ненадежни извори.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Вклучете ги моите прилагодени филтри", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Дозволете прилагодени филтри што бараат доверба", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Внеси и додај", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Ескпортирај", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "мои-ублок-статични-филтери_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Применете ги промените", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Постојани правила", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Привремени правила", + "description": "header" + }, + "rulesRevert": { + "message": "Поврати", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Изврши", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Уреди", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Сними", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Отфрли", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Внеси од фајл", + "description": "" + }, + "rulesExport": { + "message": "Изнеси во фајл", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "мои_ублок_динамични_правила_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Листа од твоите динамични филтер правила", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Синтакса на правило: извор дестинација тип акција (целосна документација).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Подреди:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Тип на правило", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Извор", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Дестинација", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Директивите за доверливи веб-страници одредуваат на кои веб-страници uBlock Origin треба да биде исклучен. Еден внос по ред.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Внеси и додади", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Експортирај", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "моите_ублок_верувани_сајтови_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Примени ги измените", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Тип", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Домен", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "УРЛ", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Филтер", + "description": "English: Filter" + }, + "logAll": { + "message": "Сите", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Без табови", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Сегашен таб", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Понови ја содржината на табот", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Вклучи/исклучи DOM инспектор", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Вклучи/исклучи панелот за поп-уп", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin вики: Логер", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Исчисти логови", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Паузирај логови (отфрли влезни податоци)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Продолжи логирање", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Вклучи/исклучи филтрирање на логерот", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "филтрирајте ја содржината на логерот", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Опции за филтрирање на логерот", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Не", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "блокиран", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "Дозволен", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "модифицирано", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1ва-партија", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3та-партија", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Детали", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Филтер", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Филтер листа", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Правило", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Контекст", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Корен контекст", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Партија", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Тип", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "УРЛ", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "УРЛ правило", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Контекст: ", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Тип:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Статичен филтер", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} мрежни барана од {{type}} {{br}} кои УРЛ адреси одговараат на {{url}} {{br}}кои доаѓаат од {{origin}},{{br}}{{importance}} има соодветен филтер за исклучоци.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Блокирај", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Дозволи", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "тип \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "било кој тип", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "од \"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "од било каде", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "освен кога", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "иако ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Статичен филтер {{filter}} најден во:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Статичкиот филтер не може да биде најден во ниедна од моментално овозможените листи со филтри.", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Записите во логерот кои не ги исполнуваат сите три услови подолу автоматски ќе бидат игнорирани:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Зачувајте записи од последните {{input}} минути", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Зачувајте најмногу {{input}} вчитувања на страници по таб", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Зачувајте најмногу {{input}} записи по таб", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Користете {{input}} редови по запис во вертикално проширен режим", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Скријте колони:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Време", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Филтер/правило", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} контекст", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Партија", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Листа\n", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Табла", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Обично", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Маркдаун", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Отвори", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Создај нова пријава", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Најди слични пријави", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Документација", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Прочитајте ја документацијата на uBlock/wiki за да научите за сите функции на uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Прашања и поддршка", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Одговори на прашања и други видови поддршка се обезбедени на subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Проблеми со филтрирањето/веб-страницата е расипана", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Пријавете проблеми со филтрите за специфични веб-страници на uBlockOrigin/uAssets issue tracker. Потребен е GitHub профил.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Важно: Избегнувајте да користите други блокатори со слична намена заедно со uBlock Origin, бидејќи тоа може да предизвика проблеми со филтрањето на специфични веб-страници.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Совети: Проверете дали вашите листи со филтри се ажурирани. Логерот е главниот алат за дијагностицирање на проблемите поврзани со филтрите.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Пријава за грешка", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Пријавете проблеми со самиот uBlock Origin на uBlockOrigin/uBlock-issue issue tracker. Потребен е GitHub профил.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Информации за решавање проблеми", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Подолу е техничка информација која може да биде корисна кога волонтерите се обидуваат да ви помогнат да решите проблем.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Пријави проблем со филтерот", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "За да се избегне оптоварување на волонтерите со дупликат пријави, ве молиме проверете дека проблемот веќе не е пријавен.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Листите со филтри се обновуваат дневно. Осигурајте се дека вашиот проблем веќе не е решен во најновите листи со филтри.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Проверете дали проблемот сè уште постои по повторно вчитување на проблематичната веб-страница.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Адреса на веб-страницата:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Веб-страницата…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Изберете внос --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Покажува реклами или остатоци од реклами", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Има преOverlayи или други непријатности", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Детектира uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Има проблеми поврзани со приватноста", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Има многу проблеми кога е вклучен uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Отвора непожелни табови или прозорци", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Води до злонамерен софтвер, фишинг", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Означи ја веб-страницата како “NSFW” (“Не е безбедно за работа”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Политика на приватност", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Дневник на промена", + "description": "" + }, + "aboutCode": { + "message": "Сорс Код (ГПЛв3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Соработници", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Сорс код", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Преведувања", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Филтер листи", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Надворешни зависности (компатибилни со GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Листите со филтри на uBO се одвиваат слободно на следните CDN-ови:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Се користи случајно одбран CDN кога е потребно да се обнови листата со филтри.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Направи резервна копија во датотека…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "мој-ублок-бекап_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Врати од датотека…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Врати на подразбирање…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Сите ваши поставки ќе бидат надминати со податоците направени на {{time}}, и uBlock₀ ќе се рестартира.\n\nДали сакате да го надминете сите постоечки поставки со резервираните податоци?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Податоците не можат да бидат прочитани или се невалидни", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Сите ваши поставки ќе бидат отстранети, и uBlock₀ ќе се рестартира.\n\nДали сакате да го ресетирате uBlock₀ на фабрички поставки?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Мрежна грешка: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Пријави се", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "пред една минута", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "пред {{value}} минути", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "пред саат време", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "пред {{value}} саати", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "пред еден ден", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "пред {{value}} дена", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Покажи Дешборд", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Покажи Логер", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "исклучи", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Страницата е блокирана", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin го спречи вчитувањето на следната страница:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Поради следниот филтер:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "без параметри", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Најдено во:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Оди назад", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Затвори го прозорецот", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Не ми предупредувај повторно за оваа веб-страница", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Исклучи строго блокирање за {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Повремено", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Трајно", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Продолжи", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Блокираната страница сака да ве пренасочи на друга веб-страница. Ако изберете да продолжите, директно ќе навигирате до: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Извези во облачно складиште", + "description": "tooltip" + }, + "cloudPull": { + "message": "Импортирај од облачно складиште", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Импортирај од облачно складиште и спои со тековните поставки", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Име на уред:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Предупредување! Менувањето на овие напредни поставки е на ваша сопствена одговорност.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Испрати", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Примени ги измените", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Поврати", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "бајтови", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Блокирај елемент во рамката…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Пријави се на списокот со филтри…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Привремено дозволи големи медиумски елементи", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Прикажи изворен код…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Внесете кратенка", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Промени заклучување на скролувањето", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Копирај во табла со исечоци", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Избери сè", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Промени козметичко филтрирање", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Промени JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Релаксиран мод на блокирање", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Место вземено: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "КБ", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "МБ", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "ГБ", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Кликнете за да вчитате", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Грешки: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Не можеше да се филтрира правилно при стартување на прелистувачот. Повторно вчитате ја страницата за да осигурите правилно филтрирање.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/ml/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/ml/messages.json new file mode 100644 index 00000000..f628775e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/ml/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "അവസാനം, ഒരു കാര്യക്ഷമമായ ബ്ലോക്കര്‍. ലഘുവായ CPU, memory ഉപയോഗം.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "യുബ്ലോക്ക്ഒ - ഡാഷ്ബോര്‍ഡ്", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "മുന്നറിയിപ്പ്! നിങ്ങൾക്ക് സംരക്ഷിക്കാത്ത മാറ്റങ്ങളുണ്ട്", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "ഇവിടെ തുടരുക", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "അവഗണിക്കുക", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "ക്രമീകരണം", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "തേര്‍ഡ് പാര്‍ട്ടി ഫില്‍ട്ടറുകള്‍", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "എന്‍റെ ഫില്‍ട്ടറുകള്‍", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "എന്‍റെ നിയമങ്ങള്‍", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "വൈറ്റ് ലിസ്റ്റ്", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "കുറുക്കുവഴികൾ", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "യുബ്ലോക്ക്ഒ - നെറ്റ്‌വര്‍ക്ക് അപേക്ഷാ ലോഗ്", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "ഇതിനെ കുറിച്ച്", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "സഹായം ", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ - അസറ്റ് വ്യൂവർ", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "വിപുലമായ ക്രമീകരണങ്ങൾ", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "ക്ലിക്ക്: ഈ സൈറ്റില്‍ യുബ്ലോക്ക്ഒ ഡിസേബിള്‍/എനെബിള്‍ ചെയ്യാന്‍.\nCtrl + ക്ലിക്ക്: ഈ പേജില്‍ യുബ്ലോക്ക്ഒ ഡിസേബിള്‍/എനെബിള്‍ ചെയ്യാന്‍.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "ഈ സൈറ്റിനായി uBlock₀ പ്രവർത്തനരഹിതമാക്കാൻ ക്ലിക്കുചെയ്യുക.\n\nഈ പേജിൽ മാത്രം uBlock₀ പ്രവർത്തനരഹിതമാക്കാൻ Ctrl + ക്ലിക്കുചെയ്യുക.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "ഈ സൈറ്റിനായി uBlock₀ പ്രവർത്തനക്ഷമമാക്കാൻ ക്ലിക്കുചെയ്യുക.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "അപേക്ഷകള്‍ ബ്ലോക്ക്‌ ചെയ്യപ്പെട്ടു", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "ഈ പേജില്‍", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} അല്ലെങ്കില്‍ {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "ഇന്‍സ്റ്റാളിനു ശേഷം", + "description": "English: since install" + }, + "popupOr": { + "message": "അല്ലെങ്കില്‍", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "ഈ പേജിൽ തടഞ്ഞു", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "ഇൻസ്റ്റാളുചെയ്‌തതിനുശേഷം തടഞ്ഞു", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "ഡൊമെയ്‌നുകൾ കണക്റ്റുചെയ്‌തു", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "ഡാഷ്ബോര്‍ഡ് തുറക്കാന്‍ ക്ലിക്ക് ചെയ്യുക", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "ഘടക സപ്പർ മോഡ് നൽകുക", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "എലമെന്‍ഡ് പിക്കര്‍ മോഡില്‍ കടക്കുക", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "അപേക്ഷാ ലോഗിലേക്ക് പോകുക", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "ഈ വെബ്‌സൈറ്റിൽ ഉള്ള പ്രശ്നങ്ങൾ അറിയിക്കുക ", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "ഈ സൈറ്റിലെ എല്ലാ പോപ്‌അപ്പുകളും ബ്ലോക്ക്‌ ചെയ്യുന്നത് ടോഗ്ഗിള്‍ ചെയ്യുക", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "ഈ സൈറ്റിലെ എല്ലാ പോപ്പ്അപ്പുകളും തടയാൻ ക്ലിക്കുചെയ്യുക", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "ഈ സൈറ്റിലെ എല്ലാ പോപ്പ്അപ്പുകളും മേലിൽ തടയാൻ ക്ലിക്കുചെയ്യുക", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "ഈ സൈറ്റിനായി വലിയ മീഡിയ ഘടകങ്ങളുടെ തടയൽ ടോഗിൾ ചെയ്യുക", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "ഈ സൈറ്റിലെ വലിയ മീഡിയ ഘടകങ്ങൾ തടയാൻ ക്ലിക്കുചെയ്യുക", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "ഈ സൈറ്റിലെ വലിയ മീഡിയ ഘടകങ്ങളെ മേലിൽ തടയാൻ ക്ലിക്കുചെയ്യുക", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "ഈ സൈറ്റില്‍ സൗന്ദര്യ ഫില്‍ട്ടറുകള്‍ ടോഗ്ഗിള്‍ ചെയ്യുക", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "ഈ സൈറ്റിൽ കോസ്മെറ്റിക് ഫിൽ‌ട്ടറിംഗ് അപ്രാപ്‌തമാക്കാൻ ക്ലിക്കുചെയ്യുക", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "ഈ സൈറ്റിൽ കോസ്മെറ്റിക് ഫിൽ‌ട്ടറിംഗ് പ്രാപ്തമാക്കുന്നതിന് ക്ലിക്കുചെയ്യുക", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "ഈ സൈറ്റില്‍ റിമോട്ട് ഫോണ്ടുകള്‍ ബ്ലോക്ക് ചെയ്യുന്നത് ടോഗ്ഗിള്‍ ചെയ്യുക", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "ഈ സൈറ്റിലെ വിദൂര ഫോണ്ടുകൾ തടയാൻ ക്ലിക്കുചെയ്യുക", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "ഈ സൈറ്റിൽ വിദൂര ഫോണ്ടുകൾ മേലിൽ തടയാൻ ക്ലിക്കുചെയ്യുക", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "ഈ സൈറ്റിൽ JavaScript അപ്രാപ്തമാക്കാൻ ക്ലിക്കുചെയ്യുക", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "ഈ സൈറ്റിൽ‌ ഇനിമുതൽ‌ JavaScript അപ്രാപ്‌തമാക്കുന്നതിന് ക്ലിക്കുചെയ്യുക", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "പോപ്പ്-അപ്പ് വിൻഡോകൾ", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "വലിയ മീഡിയ ഘടകങ്ങൾ", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "കോസ്മെറ്റിക് ഫിൽട്ടറിംഗ്", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "വിദൂര ഫോണ്ടുകൾ", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "ജാവാസ്ക്രിപ്റ്റ്", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "കൂടുതൽ", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "കുറവ്", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "ആഗോള നിയമങ്ങൾ: ഈ കോളത്തിലെ നിയമങ്ങൾ എല്ലാ സൈറ്റുകളിലും പ്രയോഗിക്കുന്ന നിയമങ്ങള് ആണ്.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "പ്രാദേശിക നിയമങ്ങൾ: ഈ കോളത്തിലെ നിയമങ്ങൾ നിലവിലെ സൈറ്റിലെ മാത്രം പ്രയോഗിക്കുന്ന.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "നിങ്ങളുടെ മാറ്റങ്ങൾ സ്ഥിരപെടുത്താന്‍ ക്ലിക്കുചെയ്യുക.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "നിങ്ങളുടെ മാറ്റങ്ങൾ പഴയപടി ആകാന്‍ ക്ലിക്കുചെയ്യുക.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "എല്ലാം", + "description": "" + }, + "popupImageRulePrompt": { + "message": "ചിത്രങ്ങള്‍", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "തേര്‍ഡ് പാര്‍ട്ടി", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "മൂന്നാം പാര്‍ട്ടി സിഎസ്എസ്/ ചിത്രങ്ങള്‍", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "ഇന്‍ലൈന്‍ സ്ക്രിപ്റ്റുകള്‍", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "ഫസ്റ്റ് പാര്‍ട്ടി സ്ക്രിപ്റ്റുകള്‍", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "തേര്‍ഡ് പാര്‍ട്ടി സ്ക്രിപ്റ്റുകള്‍", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "തേര്‍ഡ് പാര്‍ട്ടി ഫ്രെയിമുകള്‍", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "കണക്റ്റ് ചെയ്യപ്പെട്ട ഡൊമൈനുകള്‍", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}} ല്‍ നിന്നും {{count}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "പതിപ്പ്", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "ക്രിയേറ്റ് ചെയ്യുക", + "description": "English: Create" + }, + "pickerPick": { + "message": "പിക്ക് ചെയ്യുക", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "പുറത്ത് കടക്കുക", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "പ്രിവ്യൂ", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "നെറ്റ് ഫില്‍ട്ടറുകള്‍", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "സൗന്ദര്യ ഫില്‍ട്ടറുകള്‍", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "ക്ലിക്ക്, Ctrl - ക്ലിക്ക്", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "എലമെന്‍ഡ് ബ്ലോക്ക് ചെയ്യുക", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "ബ്ലോക്ക് ചെയ്യപ്പെട്ട എലമെന്‍ഡുകള്‍ക്ക് പകരമായുള്ള പ്ലയ്സ്ഹോള്‍ഡറുകള്‍ മറയ്ക്കുക", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "ഐക്കണില്‍ ബ്ലോക്ക് ചെയ്യപ്പെട്ട അപേക്ഷകളുടെ എണ്ണം കാണിക്കുക", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "ടൂള്ടിപ്പ് പ്രവർത്തനരഹിതമാക്കുക", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "ആവശ്യമായ ഇടങ്ങളില്‍ കോണ്‍ടെക്സ്റ്റ്‌ മെനു ഉപയോഗിക്കുക", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "വർണ്ണാന്ധതാ സൗഹാര്‍ദ്ദപരമായത്", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Appearance", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Theme", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "ക്ലൌഡ് സ്റ്റോറെജ് സപ്പോര്‍ട്ട് എനേബിള്‍ ചെയ്യുക", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "ഞാന്‍ ഒരു അഡ്വാന്‍സ്ഡ് യൂസര്‍ ആണ് ( വായിക്കേണ്ടത്)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "പ്രീ-ഫെച്ചിംഗ് ഡിസേബിള്‍ ചെയ്യുക (ബ്ലോക്ക് ചെയ്ത നെറ്റ്‌വര്‍ക്ക് അപേക്ഷകള്‍ക്ക് കണക്ഷന്‍ ലഭിക്കുന്നത് തടയുന്നതിന്)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "ഹൈപര്‍ ലിങ്ക് ഓഡിറ്റിങ്ങ്/ബീക്കന്‍ ഡിസേബിള്‍ ചെയ്യുക", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "വെബ്‌ആര്‍ടിസി ലോക്കല്‍ ഐ പി അഡ്രസുകള്‍ ലീക്ക് ചെയ്യുന്നത് തടയുക", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "സ്ഥിര രീതി", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "ഓരോ സ്ഥിരസ്ഥിതി അടിസ്ഥാനത്തിലും ഈ സ്ഥിരസ്ഥിതി പെരുമാറ്റങ്ങൾ അസാധുവാക്കാനാകും", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "കോസ്മെറ്റിക് ഫിൽട്ടറിംഗ് പ്രവർത്തനരഹിതമാക്കുക", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "മീഡിയ ഘടകങ്ങളെക്കാൾ വലുത് തടയുക {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "വിദൂര ഫോണ്ടുകൾ തടയുക", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "ജാവാസ്ക്രിപ്റ്റ് അപ്രാപ്തമാക്കുക", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "സി‌എസ്‌പി റിപ്പോർട്ടുകൾ തടയുക", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "കാനോനിക്കൽ പേരുകൾ അൺലോക്ക് ചെയ്യുക", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "വിപുലമായ ക്രമീകരണങ്ങൾ", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "വിപുലമായ ക്രമീകരണങ്ങൾ", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "അവസാന റീസ്റ്റോര്‍:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "അവസാന ബാക്ക്അപ്:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} നെറ്റ്‌വര്‍ക്ക് ഫില്‍ട്ടറുകള്‍ + {{cosmeticFilterCount}} സൗന്ദര്യ ഫില്‍ട്ടറുകള്‍ ഇവിടെ നിന്നും:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}} ല്‍ നിന്നും {{used}} ഉപയോഗിക്കുന്നു", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "ഫില്‍ട്ടര്‍ ലിസ്റ്റുകള്‍ ഓട്ടോ-അപ്ഡേറ്റ് ചെയ്യുക.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "ഇപ്പോള്‍ അപ്ഡേറ്റ് ചെയ്യുക", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "ക്യാഷ് ശുദ്ധീകരിക്കുക", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "ശുദ്ധീകരിച്ച് സൗന്ദര്യ ഫില്‍ട്ടറുകള്‍ എന്‍ഫോര്‍സ് ചെയ്യുക.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "ഒരു വിഷ്വൽ ശല്യമെന്ന് കരുതപ്പെടുന്നതും നെറ്റ്‌വർക്ക് അഭ്യർത്ഥന അടിസ്ഥാനമാക്കിയുള്ള ഫിൽട്ടറിംഗ് എഞ്ചിനുകൾക്ക് തടയാൻ കഴിയാത്തതുമായ ഒരു വെബ് പേജിലെ ഘടകങ്ങൾ മറയ്ക്കാൻ കോസ്മെറ്റിക് ഫിൽട്ടറുകൾ സഹായിക്കുന്നു.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "ജനറിക് കോസ്മെറ്റിക് ഫിൽട്ടറുകൾ അവഗണിക്കുക", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "എല്ലാ വെബ് സൈറ്റുകളിലും പ്രയോഗിക്കാൻ ഉദ്ദേശിക്കുന്ന കോസ്മെറ്റിക് ഫിൽട്ടറുകളാണ് ജനറിക് കോസ്മെറ്റിക് ഫിൽട്ടറുകൾ. ഈ ഓപ്ഷൻ പ്രവർത്തനക്ഷമമാക്കുന്നത് ജനറിക് കോസ്മെറ്റിക് ഫിൽട്ടറുകൾ കൈകാര്യം ചെയ്യുന്നതിന്റെ ഫലമായി വെബ് പേജുകളിൽ ചേർത്ത മെമ്മറിയും സിപിയു ഓവർഹെഡും ഇല്ലാതാക്കും.\n\nശക്തി കുറഞ്ഞ ഉപകരണങ്ങളിൽ ഈ ഓപ്‌ഷൻ പ്രവർത്തനക്ഷമമാക്കാൻ ശുപാർശ ചെയ്യുന്നു.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "മാറ്റങ്ങള്‍ അപ്ലേ ചെയ്യുക", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "അന്തർനിർമ്മിതം", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "പരസ്യങ്ങള്‍", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "സ്വകാര്യത", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "മാൽവെയർ സംരക്ഷണം, സുരക്ഷ", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "ശല്യപ്പെടുത്തലുകൾ", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "മള്‍ട്ടിപര്‍പ്പസ്", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "പ്രാദേശികം, ഭാഷകള്‍", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "കസ്റ്റം", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "ഇറക്കുമതി ചെയ്യുക ...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "ഒരു വരിയില്‍ ഒരു യുആര്‍എല്‍ എന്ന രീതിയില്‍. ‘!’ എന്നിവയില്‍ തുടങ്ങുന്ന വരികള്‍ ഇഗ്നോര്‍ ചെയ്യപ്പെടും. ഇന്‍വാലിഡ്‌ ആയ യുആര്‍എല്ലുകള്‍ നിശബ്ദമായി ഇഗ്നോര്‍ ചെയ്യപ്പെടും.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "കാലഹരണപ്പെട്ടത്", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "ഉള്ളടക്കം കാണുക", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "അവസാന അപ്ഡേറ്റ്:{{ago}}", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "അപ്‌ഡേറ്റുചെയ്യുന്നു...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "ഒരു നെറ്റ്‌വർക്ക് പിശക് ഉറവിടം അപ്‌ഡേറ്റുചെയ്യുന്നതിൽ നിന്ന് തടഞ്ഞു.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "ഇമ്പോര്‍ട്ടും കൂട്ടിചേര്‍ക്കലും ചെയ്യുക", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "എക്സ്പോര്‍ട്ട്‌", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "എന്‍റെ-യുബ്ലോക്ക്-സ്റ്റാറ്റിക്ക്-ഫില്‍ട്ടറുകള്‍_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "മാറ്റങ്ങള്‍ അപ്ലേ ചെയ്യുക", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "സ്ഥിര നിയമങ്ങള്‍", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "താല്‍ക്കാലിക നിയമങ്ങള്‍", + "description": "header" + }, + "rulesRevert": { + "message": "റിവേര്‍ട്ട്", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "കമ്മിറ്റ്", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "എഡിറ്റ്‌", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "സേവ്", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "കളയുക", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "ഫയലില്‍ നിന്നും ഇമ്പോര്‍ട്ട് ചെയ്യുക...", + "description": "" + }, + "rulesExport": { + "message": "ഫയലിലേക്ക് എക്സ്പോര്‍ട്ട്‌ ചെയ്യുക", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "എന്‍റെ-യുബ്ലോക്ക്-ഡൈനാമിക്-നിയമങ്ങള്‍_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "താങ്കളുടെ ഡൈനാമിക് ഫില്‍റ്റര്‍ നിയമങ്ങളുടെ ലിസ്റ്റ്.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "നിയമത്തിന്‍റെ സിന്‍റ്റാക്സ്‌: സോര്‍സ് ഡെസ്റ്റിനേഷന്‍ ടൈപ്പ് ആക്ഷന്‍ ( മുഴുനീള പ്രമാണം).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "അടുക്കുക:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "റൂൾ തരം", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "ഉറവിടം", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "ലക്ഷ്യസ്ഥാനം", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "യുബ്ലോക്ക്ഒ ഡിസേബിള്‍ ചെയ്യപ്പെടേണ്ട ഹോസ്റ്റ് നെയിമുകള്‍. ഒരു വരിയില്‍ ഒരു എന്‍ട്രി എന്ന രീതിയില്‍ ചേര്‍ക്കുക. ഇന്‍വാലിഡ്‌ ഹോസ്റ്റ് നെയിമുകള്‍ നിശബ്ദമായി ഇഗ്നോര്‍ ചെയ്യപെടും.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "ഇമ്പോര്‍ട്ടും കൂട്ടിചേര്‍ക്കലും ചെയ്യുക", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "എക്സ്പോര്‍ട്ട്‌", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "എന്‍റെ-യുബ്ലോക്ക്-വൈറ്റ്ലിസ്റ്റ്_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "മാറ്റങ്ങള്‍ അപ്ലേ ചെയ്യുക", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "ടൈപ്പ്", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "ഡൊമൈന്‍", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "യുആര്‍എല്‍", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "ഫില്‍ട്ടര്‍", + "description": "English: Filter" + }, + "logAll": { + "message": "എല്ലാം", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "സീനിനു പിന്നില്‍", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "നിലവിലെ ടാബ്", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "ടാബ് ഉള്ളടക്കം വീണ്ടും ലോഡുചെയ്യുക", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM ഇൻസ്പെക്ടർ ടോഗിൾ ചെയ്യുക", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "പോപ്പ്അപ്പ് പാനൽ ടോഗിൾ ചെയ്യുക", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock ഉറവിട വിക്കി: ലോഗർ", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "ലോഗർ മായ്‌ക്കുക", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "ലോഗർ താൽക്കാലികമായി നിർത്തുക (ഇൻകമിംഗ് ഡാറ്റയെല്ലാം ഉപേക്ഷിക്കുക)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "ലോഗർ അൺപോസ് ചെയ്യുക", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "ലോഗർ ഫിൽട്ടറിംഗ് ടോഗിൾ ചെയ്യുക", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "ലോഗ് എന്‍ട്രി ഫില്‍ട്ടര്‍ ചെയ്യുക", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "ലോഗർ ഫിൽട്ടറിംഗ് ഓപ്ഷനുകൾ", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "അല്ല", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "തടഞ്ഞു", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "അനുവദനീയമാണ്", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "തിരുത്തപ്പെട്ടത്", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "ഒന്നാം കക്ഷി", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "തേര്‍ഡ് പാര്‍ട്ടി", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "വിശദാംശങ്ങൾ", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "ഫിൽട്ടർ ചെയ്യുക", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "ലിസ്റ്റ് ഫിൽട്ടർ ചെയ്യുക", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "ഭരണം", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "സന്ദർഭം", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "റൂട്ട് സന്ദർഭം", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "പാർട്ടിത്വം", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "തരം", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL\n", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "ഡൈനാമിക് യുആര്‍എല്‍ ഫില്‍ട്ടറിങ്ങ്", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "കോണ്‍ടെക്സ്റ്റ്:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "ടൈപ്പ്:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "സ്റ്റാറ്റിക് ഫില്‍ട്ടറിങ്ങ്", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "URL {{action}} നെറ്റ്വർക്ക് അഭ്യർത്ഥനകൾ {{type}} {{br}} ഏത് URL വിലാസം പൊരുത്തപ്പെടുന്നു {{url}} {{br}}, ഒപ്പം {{origin}}, {{br}} {{importance}} an പൊരുത്തപ്പെടുന്ന ഒഴിവാക്കൽ ഫിൽട്ടർ ഉണ്ട്.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "ബ്ലോക്ക്‌ ചെയ്യുക", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "അനുവദിക്കുക", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "ടൈപ്പ് \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "ഏതു ടൈപ്പും", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "\"{{origin}}\"ല്‍ നിന്നും", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "എവിടെ നിന്നും", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "അങ്ങിനെ അല്ലെങ്കില്‍", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "എന്നിരുന്നാലും", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "സ്റ്റാറ്റിക് ഫില്‍ട്ടര്‍ {{filter}} ഇതില്‍ കണ്ടെത്തി:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "നിലവിൽ പ്രവർത്തനക്ഷമമാക്കിയ ഏതെങ്കിലും ഫിൽട്ടർ ലിസ്റ്റുകളിൽ സ്റ്റാറ്റിക് ഫിൽട്ടർ കണ്ടെത്താൻ കഴിഞ്ഞില്ല", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "ചുവടെയുള്ള മൂന്ന് നിബന്ധനകളും പാലിക്കാത്ത ലോഗർ എൻ‌ട്രികൾ സ്വപ്രേരിതമായി നിരസിക്കപ്പെടും:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "അവസാന {{input}} മിനിറ്റുകളിൽ നിന്ന് എൻട്രികൾ സംരക്ഷിക്കുക", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "ഒരു ടാബിന് പരമാവധി {{input}} പേജ് ലോഡുകൾ സംരക്ഷിക്കുക", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "ഒരു ടാബിന് പരമാവധി {{input}} എൻ‌ട്രികൾ സംരക്ഷിക്കുക", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "ലംബമായി വികസിപ്പിച്ച മോഡിൽ ഓരോ എൻട്രിക്കും {{input}} വരികൾ ഉപയോഗിക്കുക", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "നിരകൾ മറയ്‌ക്കുക:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} സമയം", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} ഫിൽട്ടർ / റൂൾ", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}}സന്ദർഭം", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} പാർട്ടിത്വം", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "പട്ടിക", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "മേശ", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "പ്ലെയിൻ", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "മാർക്ക്ഡ .ൺ", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "തുറക്കുക", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "പുതിയ റിപ്പോർട്ട് നിർമ്മിക്കുക", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "സമാനമായ റിപോർട്ടുകൾ കാണുക", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "പ്രമാണീകരണം", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Read the documentation at uBlock/wiki to learn about all of uBlock Origin's features.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Questions and support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Bug report", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Troubleshooting Information", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "സ്വകാര്യതാ നയം", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "മാറ്റങ്ങളുടെ ലോഗ്", + "description": "" + }, + "aboutCode": { + "message": "സോര്‍സ് കോഡ് (ജിപിഎല്‍വി3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "കോണ്‍ട്രിബ്യൂട്ടര്‍മാര്‍", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "സോഴ്സ് കോഡ്", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "വിവർത്തനങ്ങൾ", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "ലിസ്റ്റുകൾ ഫിൽട്ടർ ചെയ്യുക", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "ബാഹ്യ ഡിപൻഡൻസികൾ (GPLv3- അനുയോജ്യമാണ്):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO- യുടെ സ്വന്തം ഫിൽട്ടർ ലിസ്റ്റുകൾ ഇനിപ്പറയുന്നവയിൽ സ്വതന്ത്രമായി ഹോസ്റ്റുചെയ്യുന്നു CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "ഒരു ഫിൽട്ടർ ലിസ്റ്റ് അപ്ഡേറ്റ് ചെയ്യേണ്ടിവരുമ്പോൾ ക്രമരഹിതമായി തിരഞ്ഞെടുത്ത CDN ഉപയോഗിക്കുന്നു", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "ഫയലിലേക്ക് ബാക്അപ്", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "എന്‍റെ-യുബ്ലോക്ക്-ബാക്ക്അപ്_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "ഫയലില്‍ നിന്നും റീസ്റ്റോര്‍ ചെയ്യുക...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "ഡീഫാള്‍ട്ട് സെറ്റിംഗ്സിലേക്ക് റീസ്റ്റോര്‍ ചെയ്യുക...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "{{time}}ല്‍ ബാക്ക്അപ് ചെയ്യപ്പെട്ട ഡേറ്റ ഉപയോഗിച്ച് താങ്കളുടെ എല്ലാ സെറ്റിംഗ്സും ഓവര്‍ റൈറ്റ് ചെയ്യപ്പെടും. അതിനു ശേഷം യുബ്ലോക്ക്‌ഒ റീസ്റ്റാര്‍ട്ട്‌ ചെയ്യപ്പെടും.\n\nനിലവിലുള്ള എല്ലാ സെറ്റിങ്ങുകളും ഓവര്‍റൈറ്റ് ചെയ്യട്ടെയോ?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "ഡേറ്റ വായിക്കാന്‍ ഒക്കുന്നില്ല അല്ലെങ്കില്‍ അത് ഇന്‍വാലിഡ്‌ ആണ്", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "എല്ലാ സെറ്റിങ്ങുകളും റിമൂവ് ചെയ്യപ്പെടും. അതിനു ശേഷം യുബ്ലോക്ക്ഒ റീസ്റ്റാര്‍ട്ട്‌ ചെയ്യപ്പെടും.\n\nയുബ്ലോക്ക്ഒ-യെ ഫാക്ടറി സെറ്റിങ്ങുകളിലേക്ക് റീസെറ്റ് ചെയ്യട്ടെയോ?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "{{url}} എന്നതിലേക്ക് കണക്റ്റ് ചെയ്യാനാകുന്നില്ല", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "സബ്‌സ്‌ക്രൈബുചെയ്യുക", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "ഒരു മിനിറ്റ് മുന്‍പ്", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} മിനിറ്റുകള്‍ മുന്‍പ്", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "ഒരു മണിക്കൂര്‍ മുന്‍പ്", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} മണിക്കൂറുകള്‍ മുന്‍പ്", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "ഒരു ദിവസം മുന്‍പ്", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} ദിവസങ്ങള്‍ക്ക്മുന്‍പ്", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "ഡാഷ്ബോര്‍ഡ് കാണിക്കുക", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "ലോഗ്ഗര്‍ കാണിക്കുക", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "ഓഫ്", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Page blocked", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "താഴെ പറയുന്ന പേജ് ലോഡ് ചെയ്യുന്നത് യുബ്ലോക്ക് ഒറിജിന്‍ തടഞ്ഞിരിക്കുന്നു:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "ഈ ഫില്‍റ്റര്‍ കാരണം", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "പാരാമീറ്ററുകള്‍ ഇല്ലാതെ", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "ഇതില്‍ കണ്ടെത്തി:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "പിന്നിലേക്ക്‌ പോകുക", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "ഈ വിന്‍ഡോ ക്ലോസ് ചെയ്യുക", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "{{hostname}}ലേക്ക് കര്‍ശന ബ്ലോക്കിംഗ് ഡിസേബിള്‍ ചെയ്യുക", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "താല്‍ക്കാലികമായി", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "സ്ഥിരമായി", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceed", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "ക്ലൌഡ് സ്റ്റോറേജിലേക്ക് എക്സ്പോര്‍ട്ട്‌ ചെയ്യുക", + "description": "tooltip" + }, + "cloudPull": { + "message": "ക്ലൌഡ് സ്റ്റോറേജില്‍ നിന്ന് ഇമ്പോര്‍ട്ട് ചെയ്യുക", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "ക്ലൗഡ് സംഭരനിയില്‍ നിന്ന് ഇറക്കുമതി ചെയ്ത് നിലവിലെ ക്രമീകരണത്തില്‍ ലയിപ്പിക്കും", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "ഈ ഉപകരണത്തിന്‍റെ പേര്:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "മുന്നറിയിപ്പ്! നിങ്ങളുടെ സ്വന്തം ഉത്തരവാദിത്തത്തിൽ ഈ നൂതന ക്രമീകരണങ്ങൾ മാറ്റുക.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "സബ്മിറ്റ്", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "മാറ്റങ്ങൾ വരുത്തു", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "റിവേര്‍ട്ട്", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "ബൈറ്റുകള്‍", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "ഫ്രെയിമിലെ ഘടകം തടയുക ...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "ഫിൽട്ടർ ലിസ്റ്റിലേക്ക് സബ്സ്ക്രൈബ് ചെയ്യുക ...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "താൽക്കാലികമായി വലിയ മീഡിയ അനുവദിക്കുക", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "ഒരു കുറുക്കുവഴി ടൈപ്പുചെയ്യുക", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "ലോക്കുചെയ്‌ത സ്ക്രോളിംഗ് ടോഗിൾ ചെയ്യുക", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "ക്ലിപ്പ്ബോർഡിലേയ്ക്ക് പകർത്തുക", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Select all", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "തടയൽ മോഡ് വിശ്രമിക്കുക", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "ഉപയോഗിച്ച സംഭരണം: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "കെ.ബി.", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "എം.ബി.", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "ജി.ബി.", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "ലോഡുചെയ്യാൻ ക്ലിക്കുചെയ്യുക", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/mr/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/mr/messages.json new file mode 100644 index 00000000..98bb3852 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/mr/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "शेवटी, एक कार्यक्षम ब्लॉकर क्रोमियम आधारित ब्राउझरांसाठी. सीपीयू आणि मेमरी वर सोपे जातो.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "म्यूब्लॉक — डैशबोर्ड", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Warning: you have unsaved changes!", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Stay here", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignore", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "सेटिंग्ज", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "तृतीय-पक्ष फिल्टर", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "आपले फिल्टर", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "माझे नियम", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "श्वेतसूची", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Shortcuts", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — लॉगर", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "माहिती", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Support", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Asset viewer", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "प्रगत सेटिंग्ज", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "क्लिक करा : या साइटसाठी म्यूब्लॉक अक्षम/सक्षम.\n\nCtrl+क्लिक करा: फक्त या पृष्ठावर म्यूब्लॉक अक्षम.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Ctrl क्लिक करा फक्त या साइटवर म्यूब्लॉक बंद करण्यासाठी.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Ctrl क्लिक करा फक्त या साइटवर म्यूब्लॉक चालू करण्यासाठी.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "विनंत्या अवरोधित", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "या पृष्ठावर", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} किंवा {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "स्थापने पासून", + "description": "English: since install" + }, + "popupOr": { + "message": "किंवा", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blocked on this page", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blocked since install", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domains connected", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "डॅशबोर्ड उघडण्यासाठी क्लिक करा", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Enter element zapper mode", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "घटक निवडक मोड प्रविष्ट करा", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "विनंती लॉग ला जा", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Report an issue on this website", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "या साइटसाठी सर्व पॉपअप अवरोधित करणे टॉगल करा", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Click to block all popups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Click to no longer block all popups on this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "या साइटसाठी मोठ्या माध्यम घटक अवरोधित करणे टॉगल करा", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Click to block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Click to no longer block large media elements on this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "या साइटसाठी कॉस्मेटिक फिल्टरिंग टॉगल करा", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Click to disable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Click to enable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Toggle the blocking of remote fonts for this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Click to block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Click to no longer block remote fonts on this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Click to disable JavaScript on this site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Click to no longer disable JavaScript on this site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Pop-up windows", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Large media elements", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Cosmetic filtering", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Remote fonts", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "More", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Less", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Global rules: this column is for rules which apply to all sites.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Local rules: this column is for rules which apply to the current site only.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Click to make your changes permanent.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Click to revert your changes.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "सर्व", + "description": "" + }, + "popupImageRulePrompt": { + "message": "चित्रे", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "तृतीय पक्ष", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "तृतीय पक्षी css/चित्रे", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline scripts", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1st-party scripts", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3rd-party scripts", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3rd-party frames", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domains connected", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} पैकी {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "निर्माण करा", + "description": "English: Create" + }, + "pickerPick": { + "message": "निवडा", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "बाहेर पडा", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Preview", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "नेट फिल्टर", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "उटणे फिल्टर", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Ctrl - क्लिक करा", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "घटक अवरोधित करा", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "अवरोधित घटकाचे प्लेसहोल्डर लपवा", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "अवरोधित विनंत्यांची संख्या चिन्हावर दाखवा", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Disable tooltips", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "जेथे योग्य तेथे संदर्भ मेनू याचा वापर करा", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Color-blind friendly", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Appearance", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Theme", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Enable cloud storage support", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "I am an advanced user", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Disable pre-fetching (to prevent any connection for blocked network requests)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Disable hyperlink auditing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Prevent WebRTC from leaking local IP addresses", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Default behavior", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "These default behaviors can be overridden on a per-site basis", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Disable cosmetic filtering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Block media elements larger than {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Block remote fonts", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Disable JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Block CSP reports", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Advanced", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "प्रगत सेटिंग्ज", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "अखेरचे पुनर्संचयित:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "अंतिम बॅकअप:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} नेटवर्क फिल्टर + {{cosmeticFilterCount}} उटणे फिल्टर :", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} वापरले {{total}} पैकी", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "स्वयं-अद्यतन फिल्टर यादी.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "आता अद्यतनित करा", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "सर्व कॅशे साफ करा", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "उटणे फिल्टरना विश्लेषित करा आणि त्यांची अंमलबजावणी करा.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

हा पर्याय अद्ब्लोक प्लस सुसंगत “घटक लपवणारे” फिल्टरचे विश्लेषण आणि अंमलबजावणी सक्षम करतो. हे फिल्टर मूलत: उटणे आहेत, ते वेब पृष्ठावर घटक लपवतात जें व्हिज्युअल उपद्रव असल्याचे मानण्यात येतात आणि जे निव्वळ विनंती-आधारित फिल्टरिंग इंजिनद्वारे अवरोधित करणे शक्य नाही.

हे वैशिष्ट्य सक्षम केले तरम्यूब्लॉकचे मेमरी पावलाचा ठसा वाढतो.

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignore generic cosmetic filters", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "उअवरोधित होस्ट यांची सूची", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "बदल लागू करा", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Built-in", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "जाहिराती", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "गोपनीयता", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "मालवेअरपासून संरक्षण, सुरक्षा", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "चिडवणाऱ्या गोष्टी", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "बहुउद्देशीय", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "विभाग , भाषा", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "सानुकूल", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Import…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "प्रति ओळ एक युआरएल. ओळी सह प्रिफिक्स ‘!’ कढे दुर्लक्ष केले जाईल. अवैध युआरएल शांतपणे दुर्लक्ष केले जाईल.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "कालबाह्य", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "view content", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Last update: {{ago}}.\nClick to force an update.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Updating…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "A network error prevented the resource from being updated.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "आयात आणि समावेश करा", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "निर्यात करा", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "बदल लागू करा", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "स्थायी नियम", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "अस्थायी नियम", + "description": "header" + }, + "rulesRevert": { + "message": "मागे जा", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Commit", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "संपादित करा", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Save", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Discard", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Import from file…", + "description": "" + }, + "rulesExport": { + "message": "Export to file…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "List of your dynamic filtering rules.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rule syntax: source destination type action (full documentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sort:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Rule type", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Source", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destination", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "आपली होस्ट नावांची यादी ज्याचासाठी म्यूब्लॉक अक्षम केले जाईल. प्रति ओळ एक प्रविष्टी. अवैध होस्ट नावांकडे शांतपणे दुर्लक्ष केले जाईल.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "आयात आणि समावेश करा", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "निर्यात करा", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "बदल लागू करा", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "प्रकार", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "डोमेन", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "यूआरएल", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "फिल्टर", + "description": "English: Filter" + }, + "logAll": { + "message": "All", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tabless", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Current tab", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Reload the tab content", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Toggle the DOM inspector", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Toggle the popup panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: The logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Clear logger", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pause logger (discard all incoming data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Unpause logger", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Toggle logger filtering", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filter logger content", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logger filtering options", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Not", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blocked", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "allowed", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modified", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1st-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3rd-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Details", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filter list", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Rule", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Context", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Root context", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Type", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL rule", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Context:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Type:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Static filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Block", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Allow", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "any type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "from “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "from anywhere", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "except when", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "even if", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Static filter {{filter}} found in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Static filter could not be found in any of the currently enabled filter lists", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Preserve entries from the last {{input}} minutes", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preserve at most {{input}} page loads per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preserve at most {{input}} entries per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Use {{input}} lines per entry in vertically expanded mode", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Hide columns:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Time", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/rule", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "List", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Table", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plain", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Open", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Create new report on GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Find similar reports on GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentation", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Read the documentation at uBlock/wiki to learn about all of uBlock Origin's features.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Questions and support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Bug report", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Troubleshooting Information", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Privacy policy", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "बदल नोंदी", + "description": "" + }, + "aboutCode": { + "message": "स्त्रोत कोड (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "सहभागी", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Source code", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Translations", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filter lists", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "External dependencies (GPLv3-compatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's own filter lists are freely hosted on the following CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A randomly picked CDN is used when a filter list needs to be updated.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "फाइल वर बॅकअप करा...", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "फाइल पासून पुनर्संचयित करा...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "मुळापासून सुरू करा...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "आपले सर्व सेटिंग्ज ना खोडून {{time}} चा बॅकअप डेटा वापरला जाईल, आणि म्यूब्लॉक रीस्टार्ट होईल.\n\nसर्व विद्यमान सेटिंग्ज ना खोडून बॅकअप डेटा वापरावे का?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "The data could not be read or is invalid", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "आपले सर्व सेटिंग्ज पुसले जातील, आणि म्यूब्लॉक रीस्टार्ट होईल .\n\nम्यूब्लॉक ला फॉक्टोरी सेटिंग्ज ला रीसेट करावे का?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "{{url}} ला कनेक्ट करण्यात अक्षम", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subscribe", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "a minute ago", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minutes ago", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "an hour ago", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} hours ago", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "a day ago", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} days ago", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Show Dashboard", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Show Logger", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "off", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Page blocked", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin has prevented the following page from loading:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "This happened because of the following filter:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "without parameters", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "The filter has been found in:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Go back", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Close this window", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Disable strict blocking for {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporarily", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanently", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceed", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Export to cloud storage", + "description": "tooltip" + }, + "cloudPull": { + "message": "Import from cloud storage", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Import from cloud storage and merge with current settings", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "This device name:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Warning! Change these advanced settings at your own risk.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Submit", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Apply changes", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Revert", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Block element in frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribe to filter list…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Temporarily allow large media elements", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Type a shortcut", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Toggle locked scrolling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copy to clipboard", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Select all", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relax blocking mode", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Storage used: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Click to load", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/ms/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/ms/messages.json new file mode 100644 index 00000000..338b736d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/ms/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Akhirnya, penyekat yang cekap. Tidak membebankan CPU dan memori.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Papan pemuka", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Amaran! Anda mempunyai perubahan yang tidak disimpan", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Tinggal di sini", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Abaikan", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Tetapan", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Senarai penapis", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Penapis saya", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Peraturan saya", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Halaman dipercayai", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Pintasan", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Catatan", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Mengenai", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Sokongan", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Pertonton aset", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Tetapan lanjut", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klik: tutup/aktifkan uBlock₀ untuk laman web ini.\n\nCtrl+klik: tutupkan uBlock₀ pada halaman ini sahaja.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Kilk untuk nyahdayakan uBlock₀ untuk laman web ini.\n\nCtrl+klik untuk nyahdayakan uBlock₀ hanya di halaman ini.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klik untuk mendayakan uBlock₀ untuk laman web ini.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "permintaan dihalang", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "pada halaman ini", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} atau {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "sejak dipasang", + "description": "English: since install" + }, + "popupOr": { + "message": "atau", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Disekat di halaman ini", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Disekat sejak dipasang", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domain telah dihubungkan", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Klik untuk membuka dashboard", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Masuk mod pilihan elemen", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Memasuki mod pemetik elemen", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Buka pengelog", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Laporkan masalah tentang laman web ini", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Togol penghalang untuk segala pop timbul laman ini", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klik untuk menyekat semua pop timbul di laman ini", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klik untuk berhenti menyekat semua pop timbul di laman ini", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Togol penghalang semua elemen media besar untuk laman ini", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klik untuk menyekat elemen media yang besar di laman ini", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klik untuk berhenti menyekat elemen media yang besar di laman ini", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Togol penapis kosmetik untuk laman ini", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klik untuk mematikan penapisan kosmetik di laman ini", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klik untuk mengaktifkan penapisan kosmetik di laman ini", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Togol menyekat fon terpencil untuk laman web ini", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klik untuk menyekat fon jauh di laman ini", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klik untuk berhenti menyekat fon jauh di laman ini", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klik untuk hilangkan keupayaan JavaScript di halaman ini", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klik untuk berhenti hilangkan keupayaan JavaScript di halaman ini", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Tingkap timbul", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Unsur-unsur media besar", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Tapisan kosmetik", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Font tersendiri", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Lagi", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Kurangkan", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Peraturan global: lajur ini adalah untuk peraturan yang dikuatkuasakan untuk semua laman.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Peraturan tempatan: lajur ini adalah untuk peraturan yang dikuatkuasakan untuk laman semasa sahaja.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Klik untuk membuat perubahan anda kekal.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klik untuk memungkiri perubahan anda.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "semua", + "description": "" + }, + "popupImageRulePrompt": { + "message": "gambar", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "pihak ketiga", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/imej pihak ketiga", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "Skrip dalam ayat", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Skrip parti pertama", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Skrip parti ke-3", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Kerangka parti ke-3", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "Domain telah dihubungkan", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} daripada {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versi", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skrip", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "kerangka", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Cipta", + "description": "English: Create" + }, + "pickerPick": { + "message": "Pilih", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Keluar", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Preview", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Penapis network", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Penapis Kosmetik", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Ctrl-klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Halang elemen", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Sembunyikan simbol unsur-unsur yang disekat", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Tunjukkan nombor permintaan yang disekat di atas ikon", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Menutupkan mesej bantuan", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Gunakan menu konteks yang sesuai", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Mesra buta warna", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Appearance", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Membolehkan sokongan storan awangan", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Saya adalah pengguna mahir (memerlukan pembacaan)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Lumpuhkan pra-ambilan (untuk mengelakkan apa-apa sambungan untuk permintaan rangkaian yang disekat)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Nyahaktifkan pengauditan hiperpautan", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Mencegah WebRTC dari membocorkan alamat IP tempatan", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Kelakuan lalai", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Tingkah laku lalai ini boleh diatasi secara per-halaman", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Lumpuhkan tapisan kosmetik", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Sekat unsur-unsur media yang lebih besar dari {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Sekat fon terpencil", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Lumpuhkan JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Sekat laporan CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Mendedahkan nama kanonik", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Lanjutan", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "tetapan lanjutan", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Pemulihan lalu:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Sandaran lalu:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} penapis rangkaian + {{cosmeticFilterCount}} penapis kosmetik dari:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} digunakan dari {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Kemas kini auto senarai tapisan", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Kemas kini sekarang", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Bersihkan semua cache", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Hurai dan kuatkuasakan tapisan kosmetik", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Penapis kosmetik berkhidmat untuk menyembunyikan unsur-unsur dalam laman web yang disifatkan sebagai suatu gangguan visual, dan yang tidak mampu disekat oleh enjin tapisan berasaskan permintaan rangkaian.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Abaikan penapis kosmetik generik", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Penapis kosmetik generik adalah penapis kosmetik itu mengubah kesemua laman web. Mendayakan tetapan ini akan mengurangkan penggunaan memori dan overhed CPU dari laman web sebagai hasil pengendalian penapis kosmetik generik.\n\nIa disyorkan untuk mengaktifkan tetapan ini untuk peranti yang lemah.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Gantung aktiviti rangkaian sehingga semua senarai penapis dimuatkan", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Terapkan perubahan", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Terbina dalam", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Iklan", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privasi", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Perlindungan perisian hasad, keselamatan", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widget sosial", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Notis kuki", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Kejengkelan", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Pelbagai guna", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Wilayah, bahasa", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Tersuai", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Import...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Satu URL per garisan. URL yang tidak sah akan diabaikan secara senyap.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Usang.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "melihat kandungan", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Kemaskini terakhir: {{ago}}.\nKlik untuk memaksa kemas kini.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Sedang mengemaskini...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Ralat rangkaian menghalang sumber dikemas kini..", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Jangan tambah penapis daripada sumber yang tidak dipercayai.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Dayakan penapis tersuai saya", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Benarkan penapis tersuai yang memerlukan kepercayaan", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Import dan melampirkan", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Eksport", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filter _ {{datetime}}. txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Terapkan perubahan", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Peraturan kekal", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Peraturan sementara", + "description": "header" + }, + "rulesRevert": { + "message": "Bebalik", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Keterikatan", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Edit", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Simpan", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Batal", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Import dari fail...", + "description": "" + }, + "rulesExport": { + "message": "Eksport ke fail", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt\n", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Senaraikan peraturan penapisan dinamik anda.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Sintaks peraturan: tindakan jenis tujuan sumber ( dokumentasi lengkap ).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Susun:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Jenis peraturan", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Sumber", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destinasi", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Arahan laman web yang dipercayai menentukan halaman web mana uBlock Origin harus dilumpuhkan. Satu penyertaan setiap baris. Arahan tidak sah akan diam-diam diabaikan dan dikomentari.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Import dan melampirkan", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Eksport", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt\n", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Terapkan perubahan", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Jenis", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domain", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Penapis", + "description": "English: Filter" + }, + "logAll": { + "message": "Semua", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tanpa tab", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Tab semasa", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Muat semula kandungan tab", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Togol pemeriksa DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Togol panel pop timbul", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Catatan", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Kosongkan catatan", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Jedakan catatan (singkirkan semua data masuk)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Nyahjeda catatan", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Togol penapis catatan", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "tapis kandungan catatan", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Pilihan tapisan catatan", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Bukan", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "disekat", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "dibenarkan", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "diubah suai", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "pihak pertama", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "pihak ketiga", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Butiran", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Penapis", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Senarai tapisan", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Peraturan", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Konteks", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Konteks akar", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Jenis", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Aturan URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Konteks:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Jenis:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Penapis statik", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} permintaan rangkaian {{type}} {{br}} alamat URL yang sesuai dengan {{url}} {{br}} dan mana yang berasal {{origin}}, {{br}} {{kepentingan} } ada penapis pengecualian yang sepadan.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Sekat", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Benarkan", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "jenis “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "pelbagai jenis", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "dari “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "dari mana-mana ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "kecuali bila", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "walaupun", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Penapis statik {{filter}} terdapat di:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Penapis statik tidak dapat dijumpai dalam daftar penapis yang diaktifkan sekarang", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Entri logger yang tidak memenuhi ketiga-tiga syarat di bawah akan dibuang secara automatik:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Simpan entri dari {{input}} minit terakhir", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Simpan paling banyak {{input}} pemuatan halaman setiap tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Simpan paling banyak {{input}} entri setiap tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Gunakan baris {{input}} setiap entri dalam mod yang diluaskan secara menegak", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Sembunyikan lajur:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Masa", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Tapis / peraturan", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Konteks", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Kesopanan", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Senarai", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Jadual", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Kosong", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Penurunan harga", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Buka", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Cipta laporan baru", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Cari laporan yang serupa", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Pendokumenan", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Baca pendokumenan di uBlock/wiki untuk belajar tentang kesemua ciri-ciri uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Soalan dan sokongan", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Menjawab soalan dan pelbagai sokongan disediakan di subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Masalah penapisan/laman web rosak", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Laporkan masalah penapisan di laman web tertentu di uBlockOrigin/uAssets pengesan masalah. Memerlukan akaun GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Penting: Elakkan menggunakan penyekat-penyekat lain yang serupa dengan uBlock Origin, kerana ia menimbulkan masalah penapis di laman web tertentu.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tip: Pastikan senarai penapis kamu dikemaskinikan \tPencatat adalah peralatan utama untuk memeriksa masalah yang berkaitan penapis.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Laporan pepijat", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Laporkan masalah dengan uBlock Origin sendiri ke uBlockOrigin/uBlock-issue pengesan masalah. Memerlukan akaun GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informasi Pencarisilapan", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Berikut adalah maklumat teknikal yang mungkin berguna ketika sukarelawan berusaha membantu anda menyelesaikan masalah.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Laporkan masalah berkaitan penapis", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Untuk menggelakkan bebanan penyumbang dengan laporan pendua, sila mengesahkan bahawa isu itu belum dilaporkan.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Senarai penapis dikemas kini setiap hari. Pastikan isu anda belum ditangani dalam senarai penapis terbaharu.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Sahkan bahawa isu itu masih wujud selepas memuat semula halaman web yang bermasalah.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Alamat laman web:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Laman web...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pilih entri --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Tunjuk iklan dan baki iklan tertinggal", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Mempunyai panel dan gangguan lain", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Mengesan uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Mempunyai masalah berkaitan privasi", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Rosak pabila uBlock Origin didayakan", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Membuka tab atau tetingkap yang tidak diingini", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Menghala to perisian merbahaya atau laman memancing data", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Labelkan laman web itu sebagai \"NSFW\" (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Dasar privasi", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Catatan perubahan", + "description": "" + }, + "aboutCode": { + "message": "Kod sumber (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Penyumbang", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Kod sumber", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Terjemahan", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Senarai penapis", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Pergantungan luaran (serasi dengan GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Senarai penapis uBO sendiri dihoskan secara bebas di CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "CDN yang dipilih secara rawak digunakan apabila senarai penapis perlu dikemas kini", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Sandarkan ke fail", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt\n", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Pulihkan dari fail ...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Tetapkan semula ke tetapan lalai ...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Semua tetapan anda akan ditimpa menggunakan data yang disandarkan pada {{time}}, dan uBlock₀ akan dimulakan semula.\n\nMenimpa semua tetapan yang ada menggunakan data yang disandarkan?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Data tidak dapat dibaca atau tidak sah", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Semua tetapan anda akan dikeluarkan, dan uBlock₀ akan dimulakan semula.\n\nTetapkan semula uBlock₀ ke tetapan kilang?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Ralat rangkaian: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Langgan", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "seminit yang lalu", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minit yang lalu", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "satu jam yang lalu", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} jam yang lalu", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "sehari yang lalu", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} hari yang lalu", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Tunjukkan Papan Pemuka", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Tunjukkan Pencatat", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "mati", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Halaman disekat", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin menghalang halaman berikut memuatkan:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Kerana penapis berikut:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "tanpa parameter", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Dijumpai di:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Kembali", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Tutup tetingkap ini", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Jangan beri amaran kepada saya lagi tentang laman web ini", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Lumpuhkan sekatan ketat untuk {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Sementara", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Kekal", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Teruskan", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Eksport ke storan awan", + "description": "tooltip" + }, + "cloudPull": { + "message": "Import dari storan awan", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Import dari storan awan dan gabungkan dengan tetapan semasa", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Nama peranti ini:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Amaran! Ubah tetapan lanjutan ini dengan risiko anda sendiri.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Hantar", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Terapkan perubahan", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Membalikkan", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bait", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blok elemen dalam bingkai ...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Langgan ke senarai tapisan...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Biarkan sementara elemen media besar", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Lihat kod sumber…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Taipkan jalan pintas", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Togol tatal terkunci", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Salin ke papan keratan", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Pilih semua", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Togol penapis kosmetik", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Togol JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Tenang mod menyekat", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Storan yang digunakan: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klik untuk memuatkan", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Ralat: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Tidak dapat menapis dengan betul semasa pelancaran pelayar. Muat semula halaman untuk memastikan penapisan yang betul.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/nb/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/nb/messages.json new file mode 100644 index 00000000..bc3db492 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/nb/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Endelig en effektiv blokkeringsutvidelse. Lavt CPU- og minnebruk.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dashbord", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Advarsel! Du har ulagrede endringer", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Bli her", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorer", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Innstillinger", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filterlister", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Mine filtre", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Mine regler", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Betrodde sider", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Snarveier", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Logg", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Om", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Brukerstøtte", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Ressursviser", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Avanserte innstillinger", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klikk: Deaktiver/aktiver uBlock₀ for dette nettstedet.\n\nCtrl+klikk: Deaktiver uBlock₀ bare på denne siden.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Klikk for å deaktivere uBlock₀ for dette nettstedet.\n\nCtrl+klikk for å deaktivere uBlock₀ bare på denne siden.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klikk for å aktivere uBlock₀ for dette nettstedet.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "forespørsler blokkert", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "på denne siden", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "siden installering", + "description": "English: since install" + }, + "popupOr": { + "message": "eller", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokkert på denne siden", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blokkert siden installering", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domener tilkoblet", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Åpne dashbordet", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Gå til element­fjernings­modus", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Gå til element­velger­modus", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Åpne loggen", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Rapporter om problem på dette nettstedet", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Slå av/på blokkering av alle oppspretts-vinduer for dette nettstedet", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klikk for å blokkere alle oppspretts-vinduer på dette nettstedet", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klikk for å ikke lenger blokkere alle oppspretts-vinduer på dette nettstedet", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Slå av/på blokkering av store mediaelementer for dette nettstedet", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klikk for å blokkere store mediaelementer på dette nettstedet", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klikk for å ikke lenger blokkere store mediaelementer på dette nettstedet", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Slå av/på kosmetisk filtrering for dette nettstedet", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klikk for å slå av kosmetisk filtrering på dette nettstedet", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klikk for å slå på kosmetisk filtrering på dette nettstedet", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Slå av/på blokkering av eksterne skrifttyper for dette nettstedet", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klikk for å blokkere eksterne skrifttyper på dette nettstedet", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klikk for å ikke lenger blokkere eksterne skrifttyper på dette nettstedet", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klikk for å slå av JavaScript på dette nettstedet", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klikk for å ikke lenger slå av JavaScript på dette nettstedet", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Oppspretts-vinduer", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Store media­elementer", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kosmetisk filtrering", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Eksterne skrifttyper", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Mer", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mindre", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globale regler: Denne kolonnen er for regler som gjelder alle nettsteder.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokale regler: Denne kolonnen er for regler som bare gjelder for det gjeldende nettstedet.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Klikk for å gjøre endringer permanente.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klikk for å tilbakestille endringer.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "alle", + "description": "" + }, + "popupImageRulePrompt": { + "message": "bilder", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "tredjepart", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "tredjeparts CSS/bilder", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "integrerte skript", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "førsteparts skript", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "tredjeparts skript", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "tredjeparts rammer", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domener tilkoblet", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} av {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versjon", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skript", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "ramme", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Opprett", + "description": "English: Create" + }, + "pickerPick": { + "message": "Velg", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Avslutt", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Forhåndsvis", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Nettfiltre", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kosmetiske filtre", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klikk, Ctrl-klikk", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blokker element…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Skjul blokkerte elementers plassholdere", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Vis antall blokkerte forespørsler på ikonet", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Deaktiver hjelpetekst (verktøytips)", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Gjør bruk av høyreklikkmeny der det er hensiktsmessig", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Fargeblind-vennlig", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Utseende", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Tilpasset aksentfarge", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Aktiver støtte for nettlagring", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Jeg er en avansert bruker", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Deaktiver forhåndshenting (for å hindre enhver tilkobling for blokkerte nettverksforespørsler)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Deaktiver lenkesporing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Hindre WebRTC i å lekke lokale IP-adresser", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Standard virkemåte", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Disse standard virkemåtene kan overstyres for hvert enkelt nettsted", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Deaktiver kosmetisk filtrering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokker mediaelementer større enn {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokker eksterne skrifttyper", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Deaktiver JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blokker CSP-rapporter", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "CNAME-avdekking", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avansert", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funksjoner kun egnet for tekniske brukere", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "Avanserte innstillinger", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Siste gjenoppretting:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Siste sikkerhetskopi:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} nettverksfiltre + {{cosmeticFilterCount}} kosmetiske filtre fra:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} brukt av {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Automatisk oppdatering av filterlister", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Oppdater nå", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Tøm alle hurtigbuffere", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analyser og bruk kosmetiske filtre", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Kosmetiske filtre tjener den hensikt å skjule elementer i en nettside som anses for å være en visuell ulempe, og som ikke blokkeres av de nettverkforespørselsbaserte filtreringsmotorene.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorer generelle kosmetiske filtre", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generelle kosmetiske filtre er de kosmetiske filtrene som er ment å brukes på alle nettsteder. Aktivering av dette alternativet vil eliminere ekstra minne- og prosessorbruk på nettsider grunnet håndteringen av generelle kosmetiske filtre.\n\nDet anbefales å aktivere dette alternativet på mindre kraftige enheter.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Stans nettverksaktivitet inntil alle filterlister er lastet", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Bruk endringer", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Innebygd", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklame", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Personvern", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Beskyttelse mot skadelig programvare, sikkerhet", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sosiale moduler", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Infokapselmeldinger", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Irritasjonsmomenter", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multi-formål", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regioner, språk", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Egendefinert", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importer…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "En nettadresse per linje. Ugyldige nettadresser ignoreres stille.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Utgått på dato", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "Vis innhold", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Siste oppdatering: {{ago}}.\nKlikk for å framtvinge en oppdatering.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Oppdaterer…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "En nettverksfeil forhindret ressursen i å bli oppdatert.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Ikke legg til filtre fra ikke-betrodde kilder.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Aktiver mine egendefinerte filtre", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Tillat egendefinerte filtre som krever tiltro", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importer og legg til…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Eksporter…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "mine-ublock-statiske-filtre_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Bruk endringer", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Permanente regler", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Midlertidige regler", + "description": "header" + }, + "rulesRevert": { + "message": "Tilbakestill", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Send", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Rediger", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Lagre", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Forkast", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importer fra fil…", + "description": "" + }, + "rulesExport": { + "message": "Eksporter til fil…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "mine-ublock-dynamiske-regler_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Liste over dine dynamiske filtreringsregler.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Regelsyntaks: kilde destinasjon type handling (full dokumentasjon).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sorter:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Regeltype", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Kilde", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destinasjon", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Direktivene for betrodde sider bestemmer hvilke nettsider uBlock Origin ikke skal være aktiv på. Én oppføring per linje.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importer og legg til…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Eksporter…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "mine-ublock-betrodde-sider_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Bruk endringer", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Type", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domene", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "Nettadresse", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Alle", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Faneløs", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Gjeldende fane", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Last faneinnholdet på nytt", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Slå av/på DOM-inspektør", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Slå av/på oppsprettspanelet", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Loggen", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Tøm loggen", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Sett loggen i pausemodus (forkast alle innkommende data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Gjenoppta logging", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Slå av/på loggfiltrering", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrer logginnhold", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Alternativer for loggfiltrering", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Ikke", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "hendelsesrik", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokkert", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "tillatt", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "endret", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "førstepart", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "tredjepart", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detaljer", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filterliste", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regel", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontekst", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Rotkontekst", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partsrelasjon", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Type", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "Nettadresse", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Nettadresseregel", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontekst:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Type:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statisk filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} nettverksforespørsler av {{type}} {{br}}som matcher nettadressen {{url}} {{br}}og som stammer {{origin}},{{br}}{{importance}} det er et matchende unntaksfilter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokker", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Tillat", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "enhver type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "fra “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "fra hvor som helst", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "unntatt når", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "selv om", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statisk filter {{filter}} funnet i:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statisk filter ble ikke funnet i noen av filterlistene som er aktiverte nå", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Loggoppføringer som ikke oppfyller alle tre betingelser nedenfor blir automatisk forkastet:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Bevar oppføringer fra de siste {{input}} minuttene", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Bevar maksimalt {{input}} sideinnlastinger per fane", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Bevar maksimalt {{input}} oppføringer per fane", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Bruk {{input}} linjer per oppføring i vertikalt utvidet modus", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Skjul kolonner:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Tid", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/regel", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Kontekst", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partsrelasjon", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Liste", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabell", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Uformatert", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Åpne", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Opprett ny rapport på GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Finn lignende rapporter på GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentasjon", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Les dokumentasjonen på uBlock/wiki for å lære om alle uBlock Origins funksjoner.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Spørsmål og brukerstøtte", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Svar på spørsmål og andre typer hjelp er gitt på subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filterproblemer/nettside defekt", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Rapporter filterproblemer med bestemte nettsteder til uBlockOrigin/uAssets problemsporing. Krever en GitHub-konto.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Viktig: Unngå å bruke andre blokkerere med lignende formål sammen med uBlock Origin, da dette kan forårsake filterproblemer på bestemte nettsteder.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Sørg for at filterlistene dine er oppdaterte. Loggen er primærverktøyet for å diagnostisere filterrelaterte problemer.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Feilrapport", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Rapporter problemer med selve uBlock Origin til uBlockOrigin/uBlock-issue problemsporing. Krever en GitHub-konto.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Problemløsingsinformasjon", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Nedenfor er teknisk informasjon som kan være nyttig når frivillige prøver å hjelpe deg med å løse et problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Rapporter om filterproblem", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "For å unngå å belaste de frivillige med dobbeltrapporter, må du kontrollere at problemet ikke allerede har blitt rapportert. Noter: ved å klikke på knappen vil sidens opprinnelse bli sendt til GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filterlister oppdateres daglig. Forsikre deg om at problemet ikke har blitt løst allerede i de nyeste filterlistene.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verifiser at problemet fremdeles eksisterer etter å ha lastet den problematiske nettsiden på nytt.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Nettsidens adresse:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Nettsiden…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Velg en type --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Viser reklame eller reklamerester", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Har overlegg eller andre ulemper", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detekterer uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Har personvernrelaterte problemer", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Fungerer ikke riktig når uBlock Origin er aktivert", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Åpner uønskede faner eller vinduer", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Fører til skadelig programvare og/eller phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Merk nettsiden som “NSFW” (“Not Safe For Work”) (advarsel mot sider med upassende innhold)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Personvernpraksis", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Endringslogg", + "description": "" + }, + "aboutCode": { + "message": "Kildekode (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Bidragsytere", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Kildekode", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Oversettelser", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filterlister", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Eksterne avhengigheter (GPLv3-kompatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBlock Origins egne filterlister finnes fritt tilgjengelig hos følgende CDN-er:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "En tilfeldig valgt CDN blir brukt når en filterliste trenger å bli oppdatert.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Sikkerhetskopier til fil…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "min-ublock-sikkerhetskopi_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Gjenopprett fra fil…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Tilbakestill til standardinnstillinger…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Alle dine innstillinger vil bli overskrevet med data sikkerhetskopiert {{time}}, og uBlock₀ vil starte på nytt.\n\nOverskrive alle eksisterende innstillinger med sikkerhetskopierte data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Dataene kunne ikke leses eller er ugyldige", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Alle dine innstillinger blir fjernet, og uBlock₀ vil starte på nytt.\n\nTilbakestille uBlock₀ til opprinnelige innstillinger?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Nettverksfeil: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Abonner", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "et minutt siden", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minutter siden", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "en time siden", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} timer siden", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "en dag siden", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} dager siden", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Vis dashbord", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Vis logg", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "av", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Side blokkert", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin har forhindret lasting av følgende side:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "På grunn av følgende filter:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "uten parametere", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Funnet i:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Gå tilbake", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Lukk dette vinduet", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Ikke varsle igjen om dette nettstedet", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Slå av streng (fullstendig) blokkering for {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Midlertidig", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanent", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Fortsett", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Den blokkerte siden ønsker å omdirigere til et annet nettsted. Hvis du velger å fortsette, vil du navigere direkte til: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Grunn:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Ondsinnet", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Sporer", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Tvilsom", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Eksporter til nettlagring", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importer fra nettlagring", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importer fra nettlagring og slå sammen med gjeldende innstillinger", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Denne enhets navn:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Advarsel! Endringer av de avanserte innstillingene skjer på eget ansvar.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Send", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Bruk endringer", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Tilbakestill", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blokker element i ramme…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Abonner på filterliste…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Tillat store mediaelementer midlertidig", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Vis kildekode…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Oppfør en snarvei", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Slå av/på låst rulling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopier til utklippstavle", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Merk alt", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Slå av/på kosmetisk filtrering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Slå av/på JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Lemp på blokkeringsmodus", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Brukt lagringsplass: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klikk for å laste", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Feil: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Kan ikke filtrere riktig ved nettleseroppstart. Last siden på nytt for å sikre riktig filtrering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/nl/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/nl/messages.json new file mode 100644 index 00000000..3449ed17 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/nl/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Eindelijk, een efficiënte blokker. Gebruikt weinig processorkracht en geheugen.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ – Dashboard", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Waarschuwing: niet-opgeslagen wijzigingen!", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Hier blijven", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Negeren", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Instellingen", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filterlijsten", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Mijn filters", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Mijn regels", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Vertrouwde websites", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Sneltoetsen", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ – Logger", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Over", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Ondersteuning", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ – Middelenviewer", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Geavanceerde instellingen", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klikken: uBlock₀ voor deze website in- of uitschakelen.\n\nCtrl+klikken: uBlock₀ alleen voor deze pagina uitschakelen.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Klik om uBlock₀ voor deze website uit te schakelen.\n\nCtrl+klik om uBlock₀ alleen op deze pagina uit te schakelen.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klik om uBlock₀ voor deze website in te schakelen.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "geblokkeerde aanvragen", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "op deze pagina", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "sinds installatie", + "description": "English: since install" + }, + "popupOr": { + "message": "of", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Geblokkeerd op deze pagina", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Geblokkeerd sinds installatie", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Verbonden domeinen", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Dashboard openen", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Element­wisser­modus openen", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Element­kiezer­modus openen", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Logger openen", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Een probleem op deze website melden", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Alle pop-ups voor deze website in-/uitschakelen", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klik om alle pop-ups op deze website te blokkeren", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klik om alle pop-ups op deze website niet meer te blokkeren", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Grote media-elementen voor deze website in-/uitschakelen", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klik om grote media-elementen op deze website te blokkeren", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klik om grote media-elementen op deze website niet meer te blokkeren", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Cosmetische filters voor deze website in-/uitschakelen", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klik om cosmetische filters op deze website uit te schakelen", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klik om cosmetische filters op deze website in te schakelen", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Blokkeren van externe lettertypen voor deze website in-/uitschakelen", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klik om externe lettertypen op deze website te blokkeren", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klik om externe lettertypen op deze website niet meer te blokkeren", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klik om JavaScript op deze website uit te schakelen", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klik om JavaScript op deze website niet meer uit te schakelen", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Pop-upvensters", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Grote media-elementen", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Cosmetische filters", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Externe lettertypen", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Meer", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Minder", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Algemene regels: deze kolom is voor regels die op alle websites van toepassing zijn.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokale regels: deze kolom is voor regels die alleen op de huidige website van toepassing zijn.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Klik om uw wijzigingen permanent te maken.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klik om uw wijzigingen ongedaan te maken.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "alles", + "description": "" + }, + "popupImageRulePrompt": { + "message": "afbeeldingen", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "van derden", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/afbeeldingen van derden", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline scripts", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "scripts van de webpagina", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "scripts van derden", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "frames van derden", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "verbonden domeinen", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} van {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versie", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Aanmaken", + "description": "English: Create" + }, + "pickerPick": { + "message": "Kiezen", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Afsluiten", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Voorbeeld", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Netwerkfilters", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Cosmetische filters", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Ctrl-klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Element blokkeren…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Aanduidingen van geblokkeerde elementen verbergen", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Het aantal geblokkeerde aanvragen op het pictogram tonen", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Tooltips uitschakelen", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Contextmenu gebruiken waar mogelijk", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Vriendelijk voor kleurenblinden", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Vormgeving", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Thema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Aangepaste accentkleur", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Ondersteuning voor cloudopslag inschakelen", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Ik ben een ervaren gebruiker", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Vooraf ophalen uitschakelen (om verbindingen voor geblokkeerde netwerkaanvragen te voorkomen)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Hyperlink auditing uitschakelen", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Het lekken van lokale IP-adressen via WebRTC voorkomen", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Standaardgedrag", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Van deze standaardgedragingen kan per website worden afgeweken", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Cosmetische filters uitschakelen", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Media-elementen groter dan {{input}} KB blokkeren", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Externe lettertypen blokkeren", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "JavaScript uitschakelen", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP-rapporten blokkeren", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Canonieke namen onthullen", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Geavanceerd", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Alleen voor technische gebruikers geschikte functies", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "geavanceerde instellingen", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Laatste terugzetactie:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Laatste back-up:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} netwerkfilters + {{cosmeticFilterCount}} cosmetische filters van:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} van de {{total}} gebruikt", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Filterlijsten automatisch bijwerken", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Nu bijwerken", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Alle caches legen", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Cosmetische filters inlezen en toepassen", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Cosmetische filters dienen voor het verbergen van elementen in een webpagina die visueel storend kunnen zijn en niet door de op netwerkaanvragen gebaseerde filter-engines kunnen worden geblokkeerd.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Algemene cosmetische filters negeren", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Algemene cosmetische filters zijn die cosmetische filters die zijn bedoeld om op alle websites te worden toegepast. Het inschakelen van deze optie elimineert de aan webpagina’s toegevoegde geheugen- en cpu-overhead als gevolg van het verwerken van algemene cosmetische filters.\n\nHet wordt aanbevolen deze optie op minder krachtige apparaten in te schakelen.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Netwerkactiviteit onderbreken totdat alle filterlijsten zijn geladen", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lijst van geblokkeerde hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Wijzigingen toepassen", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Ingebouwd", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Advertenties", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privacy", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Bescherming tegen malware, beveiliging", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sociale widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookiemeldingen", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Storende elementen", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multifunctioneel", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Gebieden, talen", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Aangepast", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importeren…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Eén URL per regel. Ongeldige URL’s worden zonder mededeling genegeerd.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Verouderd.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "inhoud weergeven", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Laatst bijgewerkt: {{ago}}.\nKlik om een update af te dwingen.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Bijwerken…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Een netwerkfout heeft voorkomen dat de bron werd bijgewerkt.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Voeg geen filters van niet-vertrouwde bronnen toe.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Mijn aangepaste filters inschakelen", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Aangepaste filters die vertrouwen vereisen toestaan", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importeren en toevoegen…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exporteren…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "mijn-ublock-statische-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Wijzigingen toepassen", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Permanente regels", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Tijdelijke regels", + "description": "header" + }, + "rulesRevert": { + "message": "Terugzetten", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Vastleggen", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Bewerken", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Opslaan", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Annuleren", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importeren uit bestand…", + "description": "" + }, + "rulesExport": { + "message": "Exporteren naar bestand…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "mijn-ublock-dynamische-regels_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Lijst van uw dynamische filterregels.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Regelsyntaxis: bron bestemming type actie (volledige documentatie).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sorteren:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Regeltype", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Bron", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Bestemming", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "De vertrouwde-website-instructies schrijven voor op welke webpagina’s uBlock Origin dient te worden uitgeschakeld. Eén vermelding per regel.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importeren en toevoegen…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exporteren…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "mijn-ublock-vertrouwde-websites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Wijzigingen toepassen", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Type", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domein", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Alles", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Achter de schermen", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Huidige tabblad", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "De tabbladinhoud vernieuwen", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "De DOM-inspector in-/uitschakelen", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Het pop-uppaneel in-/uitschakelen", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin-wiki: de logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Logger wissen", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Logger pauzeren (alle inkomende gegevens negeren)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Logger hervatten", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Loggerfiltering in-/uitschakelen", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "loggerinhoud filteren", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opties voor loggerfiltering", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Niet", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "belangrijk", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "geblokkeerd", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "toegestaan", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "aangepast", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "huidige domein", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "van derden", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Details", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filterlijst", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regel", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Context", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Hoofdcontext", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "1e/3e partij", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Type", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL-regel", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Context:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Type:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statisch filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "Netwerkaanvragen van {{type}} {{action}}{{br}}waarvan de URL overeenkomt met {{url}} {{br}}en die {{origin}} afkomstig zijn,{{br}}{{importance}} er een overeenkomstig uitzonderingsfilter bestaat.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "blokkeren", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "toestaan", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type ‘{{type}}’", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "alle typen", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "van ‘{{origin}}’", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "van overal", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "behalve wanneer", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "zelfs als", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statisch filter {{filter}} gevonden in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statisch filter kon niet in een van de momenteel ingeschakelde filterlijsten worden gevonden", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Loggervermeldingen die niet aan alle drie de onderstaande voorwaarden voldoen, worden automatisch genegeerd:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Vermeldingen van de laatste {{input}} minuten behouden", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Maximaal {{input}} paginalaadacties per tabblad behouden", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Maximaal {{input}} vermeldingen per tabblad behouden", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "{{input}} regels per vermelding in verticaal uitgevouwen modus gebruiken", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Kolommen verbergen:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Tijd", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/regel", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} 1e/3e partij", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Lijst", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabel", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plat", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Openen", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Nieuwe melding op GitHub maken", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Soortgelijke meldingen op GitHub zoeken", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentatie", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Lees de documentatie op uBlock/wiki voor meer info over alle functies van uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Vragen en ondersteuning", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Antwoorden op vragen en andere soorten ondersteuning worden geleverd op de subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filterproblemen/website werkt niet", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Meld filterproblemen met specifieke websites in de uBlockOrigin/uAssets-probleemtracker. Vereist een GitHub-account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Belangrijk: vermijd het gebruik van andere blokkers voor dezelfde doeleinden in combinatie met uBlock Origin, omdat dit op bepaalde websites problemen kan geven.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: zorg ervoor dat uw filterlijsten up-to-date zijn. De logger is het primaire hulpmiddel voor het analyseren van filtergerelateerde problemen.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Bugmelding", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Meld problemen met uBlock Origin zelf in de uBlockOrigin/uBlock-issue-probleemtracker. Vereist een GitHub-account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Probleemoplossingsinformatie", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Hieronder bevindt zich technische informatie die handig kan zijn wanneer vrijwilligers u proberen te helpen bij het oplossen van een probleem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Een filterprobleem melden", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Controleer of het probleem niet eerder is gemeld om te voorkomen dat vrijwilligers met dubbele meldingen worden belast. Noot: op de knop klikken zorgt ervoor dat de oorsprong van de pagina naar GitHub wordt verzonden.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filterlijsten worden dagelijks bijgewerkt. Controleer of uw probleem niet al in de meest recente filterlijsten is verholpen.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Controleer of het probleem nog steeds bestaat na vernieuwen van de problematische webpagina.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adres van de webpagina:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "De webpagina…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Maak een keuze --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Toont advertenties of restanten", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Heeft overlappingen of andere ongemakken", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detecteert uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Heeft privacy-gerelateerde problemen", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Werkt niet als uBlock Origin is ingeschakeld", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opent ongewenste tabbladen of vensters", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leidt tot badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "De webpagina labelen als ‘NSFW’ (‘Not Safe For Work’)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Privacybeleid", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Wijzigingenlogboek", + "description": "" + }, + "aboutCode": { + "message": "Broncode (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Medewerkers", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Broncode", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Vertalingen", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filterlijsten", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Externe afhankelijkheden (GPLv3-compatibel):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO’s eigen filterlijsten zijn gratis beschikbaar op de volgende CDN’s:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Als een filterlijst moet worden bijgewerkt, wordt een willekeurig gekozen CDN gebruikt.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Back-up maken naar bestand…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "mijn-ublock-back-up_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Terugzetten uit bestand…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Standaardinstellingen terugzetten…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Al uw instellingen zullen met back-upgegevens van {{time}} worden overschreven, en uBlock₀ zal worden herstart.\n\nWilt u alle bestaande instellingen met back-upgegevens overschrijven?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "De gegevens konden niet worden gelezen of zijn ongeldig", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Al uw instellingen zullen worden verwijderd, waarna uBlock₀ wordt herstart.\n\nStandaardinstellingen van uBlock₀ terugzetten?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Netwerkfout: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Abonneren", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "een minuut geleden", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minuten geleden", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "een uur geleden", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} uur geleden", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "een dag geleden", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} dagen geleden", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Dashboard tonen", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Logger tonen", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "uitgeschakeld", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Pagina geblokkeerd", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin heeft het laden van de volgende pagina voorkomen:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Dit is gebeurd vanwege het volgende filter:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "zonder parameters", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Het filter is gevonden in:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Teruggaan", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Dit venster sluiten", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Mij niet meer waarschuwen over deze website", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Strenge blokkering voor {{hostname}} uitschakelen", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Tijdelijk", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanent", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Doorgaan", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "De geblokkeerde pagina wil u omleiden naar een andere website. Als u doorgaat, navigeert u rechtstreeks naar: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reden:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "kwaadwillend", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "berucht", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exporteren naar cloudopslag", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importeren uit cloudopslag", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importeren uit cloudopslag en samenvoegen met huidige instellingen", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Naam van dit apparaat:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Waarschuwing! Wijzig deze geavanceerde instellingen op eigen risico.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Verzenden", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Wijzigingen toepassen", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Ongedaan maken", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Element in deelvenster blokkeren…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Abonneren op filterlijst…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Grote media-elementen tijdelijk toestaan", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Broncode weergeven…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Typ een sneltoets", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Vergrendeld scrollen in-/uitschakelen", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopiëren naar klembord", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Alles selecteren", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Cosmetische filters in-/uitschakelen", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript in-/uitschakelen", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Blokkeringsmodus beperken", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Gebruikte opslagruimte: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klik om te laden", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Fouten: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Kon niet goed filteren bij het starten van de browser. Vernieuw de pagina voor een juiste filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/no/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/no/messages.json new file mode 100644 index 00000000..bc3db492 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/no/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Endelig en effektiv blokkeringsutvidelse. Lavt CPU- og minnebruk.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dashbord", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Advarsel! Du har ulagrede endringer", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Bli her", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorer", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Innstillinger", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filterlister", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Mine filtre", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Mine regler", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Betrodde sider", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Snarveier", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Logg", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Om", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Brukerstøtte", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Ressursviser", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Avanserte innstillinger", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klikk: Deaktiver/aktiver uBlock₀ for dette nettstedet.\n\nCtrl+klikk: Deaktiver uBlock₀ bare på denne siden.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Klikk for å deaktivere uBlock₀ for dette nettstedet.\n\nCtrl+klikk for å deaktivere uBlock₀ bare på denne siden.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klikk for å aktivere uBlock₀ for dette nettstedet.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "forespørsler blokkert", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "på denne siden", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "siden installering", + "description": "English: since install" + }, + "popupOr": { + "message": "eller", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokkert på denne siden", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blokkert siden installering", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domener tilkoblet", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Åpne dashbordet", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Gå til element­fjernings­modus", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Gå til element­velger­modus", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Åpne loggen", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Rapporter om problem på dette nettstedet", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Slå av/på blokkering av alle oppspretts-vinduer for dette nettstedet", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klikk for å blokkere alle oppspretts-vinduer på dette nettstedet", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klikk for å ikke lenger blokkere alle oppspretts-vinduer på dette nettstedet", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Slå av/på blokkering av store mediaelementer for dette nettstedet", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klikk for å blokkere store mediaelementer på dette nettstedet", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klikk for å ikke lenger blokkere store mediaelementer på dette nettstedet", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Slå av/på kosmetisk filtrering for dette nettstedet", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klikk for å slå av kosmetisk filtrering på dette nettstedet", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klikk for å slå på kosmetisk filtrering på dette nettstedet", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Slå av/på blokkering av eksterne skrifttyper for dette nettstedet", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klikk for å blokkere eksterne skrifttyper på dette nettstedet", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klikk for å ikke lenger blokkere eksterne skrifttyper på dette nettstedet", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klikk for å slå av JavaScript på dette nettstedet", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klikk for å ikke lenger slå av JavaScript på dette nettstedet", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Oppspretts-vinduer", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Store media­elementer", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kosmetisk filtrering", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Eksterne skrifttyper", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Mer", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mindre", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globale regler: Denne kolonnen er for regler som gjelder alle nettsteder.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokale regler: Denne kolonnen er for regler som bare gjelder for det gjeldende nettstedet.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Klikk for å gjøre endringer permanente.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klikk for å tilbakestille endringer.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "alle", + "description": "" + }, + "popupImageRulePrompt": { + "message": "bilder", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "tredjepart", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "tredjeparts CSS/bilder", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "integrerte skript", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "førsteparts skript", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "tredjeparts skript", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "tredjeparts rammer", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domener tilkoblet", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} av {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versjon", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skript", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "ramme", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Opprett", + "description": "English: Create" + }, + "pickerPick": { + "message": "Velg", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Avslutt", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Forhåndsvis", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Nettfiltre", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kosmetiske filtre", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klikk, Ctrl-klikk", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blokker element…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Skjul blokkerte elementers plassholdere", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Vis antall blokkerte forespørsler på ikonet", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Deaktiver hjelpetekst (verktøytips)", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Gjør bruk av høyreklikkmeny der det er hensiktsmessig", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Fargeblind-vennlig", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Utseende", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Tilpasset aksentfarge", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Aktiver støtte for nettlagring", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Jeg er en avansert bruker", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Deaktiver forhåndshenting (for å hindre enhver tilkobling for blokkerte nettverksforespørsler)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Deaktiver lenkesporing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Hindre WebRTC i å lekke lokale IP-adresser", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Standard virkemåte", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Disse standard virkemåtene kan overstyres for hvert enkelt nettsted", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Deaktiver kosmetisk filtrering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokker mediaelementer større enn {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokker eksterne skrifttyper", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Deaktiver JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blokker CSP-rapporter", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "CNAME-avdekking", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avansert", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funksjoner kun egnet for tekniske brukere", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "Avanserte innstillinger", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Siste gjenoppretting:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Siste sikkerhetskopi:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} nettverksfiltre + {{cosmeticFilterCount}} kosmetiske filtre fra:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} brukt av {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Automatisk oppdatering av filterlister", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Oppdater nå", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Tøm alle hurtigbuffere", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analyser og bruk kosmetiske filtre", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Kosmetiske filtre tjener den hensikt å skjule elementer i en nettside som anses for å være en visuell ulempe, og som ikke blokkeres av de nettverkforespørselsbaserte filtreringsmotorene.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorer generelle kosmetiske filtre", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generelle kosmetiske filtre er de kosmetiske filtrene som er ment å brukes på alle nettsteder. Aktivering av dette alternativet vil eliminere ekstra minne- og prosessorbruk på nettsider grunnet håndteringen av generelle kosmetiske filtre.\n\nDet anbefales å aktivere dette alternativet på mindre kraftige enheter.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Stans nettverksaktivitet inntil alle filterlister er lastet", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Bruk endringer", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Innebygd", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklame", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Personvern", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Beskyttelse mot skadelig programvare, sikkerhet", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sosiale moduler", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Infokapselmeldinger", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Irritasjonsmomenter", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multi-formål", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regioner, språk", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Egendefinert", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importer…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "En nettadresse per linje. Ugyldige nettadresser ignoreres stille.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Utgått på dato", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "Vis innhold", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Siste oppdatering: {{ago}}.\nKlikk for å framtvinge en oppdatering.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Oppdaterer…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "En nettverksfeil forhindret ressursen i å bli oppdatert.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Ikke legg til filtre fra ikke-betrodde kilder.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Aktiver mine egendefinerte filtre", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Tillat egendefinerte filtre som krever tiltro", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importer og legg til…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Eksporter…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "mine-ublock-statiske-filtre_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Bruk endringer", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Permanente regler", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Midlertidige regler", + "description": "header" + }, + "rulesRevert": { + "message": "Tilbakestill", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Send", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Rediger", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Lagre", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Forkast", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importer fra fil…", + "description": "" + }, + "rulesExport": { + "message": "Eksporter til fil…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "mine-ublock-dynamiske-regler_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Liste over dine dynamiske filtreringsregler.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Regelsyntaks: kilde destinasjon type handling (full dokumentasjon).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sorter:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Regeltype", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Kilde", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destinasjon", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Direktivene for betrodde sider bestemmer hvilke nettsider uBlock Origin ikke skal være aktiv på. Én oppføring per linje.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importer og legg til…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Eksporter…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "mine-ublock-betrodde-sider_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Bruk endringer", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Type", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domene", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "Nettadresse", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Alle", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Faneløs", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Gjeldende fane", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Last faneinnholdet på nytt", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Slå av/på DOM-inspektør", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Slå av/på oppsprettspanelet", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Loggen", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Tøm loggen", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Sett loggen i pausemodus (forkast alle innkommende data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Gjenoppta logging", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Slå av/på loggfiltrering", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrer logginnhold", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Alternativer for loggfiltrering", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Ikke", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "hendelsesrik", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokkert", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "tillatt", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "endret", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "førstepart", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "tredjepart", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detaljer", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filterliste", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regel", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontekst", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Rotkontekst", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partsrelasjon", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Type", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "Nettadresse", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Nettadresseregel", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontekst:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Type:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statisk filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} nettverksforespørsler av {{type}} {{br}}som matcher nettadressen {{url}} {{br}}og som stammer {{origin}},{{br}}{{importance}} det er et matchende unntaksfilter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokker", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Tillat", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "enhver type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "fra “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "fra hvor som helst", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "unntatt når", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "selv om", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statisk filter {{filter}} funnet i:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statisk filter ble ikke funnet i noen av filterlistene som er aktiverte nå", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Loggoppføringer som ikke oppfyller alle tre betingelser nedenfor blir automatisk forkastet:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Bevar oppføringer fra de siste {{input}} minuttene", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Bevar maksimalt {{input}} sideinnlastinger per fane", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Bevar maksimalt {{input}} oppføringer per fane", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Bruk {{input}} linjer per oppføring i vertikalt utvidet modus", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Skjul kolonner:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Tid", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/regel", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Kontekst", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partsrelasjon", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Liste", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabell", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Uformatert", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Åpne", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Opprett ny rapport på GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Finn lignende rapporter på GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentasjon", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Les dokumentasjonen på uBlock/wiki for å lære om alle uBlock Origins funksjoner.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Spørsmål og brukerstøtte", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Svar på spørsmål og andre typer hjelp er gitt på subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filterproblemer/nettside defekt", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Rapporter filterproblemer med bestemte nettsteder til uBlockOrigin/uAssets problemsporing. Krever en GitHub-konto.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Viktig: Unngå å bruke andre blokkerere med lignende formål sammen med uBlock Origin, da dette kan forårsake filterproblemer på bestemte nettsteder.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Sørg for at filterlistene dine er oppdaterte. Loggen er primærverktøyet for å diagnostisere filterrelaterte problemer.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Feilrapport", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Rapporter problemer med selve uBlock Origin til uBlockOrigin/uBlock-issue problemsporing. Krever en GitHub-konto.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Problemløsingsinformasjon", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Nedenfor er teknisk informasjon som kan være nyttig når frivillige prøver å hjelpe deg med å løse et problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Rapporter om filterproblem", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "For å unngå å belaste de frivillige med dobbeltrapporter, må du kontrollere at problemet ikke allerede har blitt rapportert. Noter: ved å klikke på knappen vil sidens opprinnelse bli sendt til GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filterlister oppdateres daglig. Forsikre deg om at problemet ikke har blitt løst allerede i de nyeste filterlistene.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verifiser at problemet fremdeles eksisterer etter å ha lastet den problematiske nettsiden på nytt.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Nettsidens adresse:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Nettsiden…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Velg en type --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Viser reklame eller reklamerester", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Har overlegg eller andre ulemper", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detekterer uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Har personvernrelaterte problemer", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Fungerer ikke riktig når uBlock Origin er aktivert", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Åpner uønskede faner eller vinduer", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Fører til skadelig programvare og/eller phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Merk nettsiden som “NSFW” (“Not Safe For Work”) (advarsel mot sider med upassende innhold)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Personvernpraksis", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Endringslogg", + "description": "" + }, + "aboutCode": { + "message": "Kildekode (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Bidragsytere", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Kildekode", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Oversettelser", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filterlister", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Eksterne avhengigheter (GPLv3-kompatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBlock Origins egne filterlister finnes fritt tilgjengelig hos følgende CDN-er:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "En tilfeldig valgt CDN blir brukt når en filterliste trenger å bli oppdatert.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Sikkerhetskopier til fil…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "min-ublock-sikkerhetskopi_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Gjenopprett fra fil…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Tilbakestill til standardinnstillinger…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Alle dine innstillinger vil bli overskrevet med data sikkerhetskopiert {{time}}, og uBlock₀ vil starte på nytt.\n\nOverskrive alle eksisterende innstillinger med sikkerhetskopierte data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Dataene kunne ikke leses eller er ugyldige", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Alle dine innstillinger blir fjernet, og uBlock₀ vil starte på nytt.\n\nTilbakestille uBlock₀ til opprinnelige innstillinger?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Nettverksfeil: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Abonner", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "et minutt siden", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minutter siden", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "en time siden", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} timer siden", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "en dag siden", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} dager siden", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Vis dashbord", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Vis logg", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "av", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Side blokkert", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin har forhindret lasting av følgende side:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "På grunn av følgende filter:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "uten parametere", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Funnet i:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Gå tilbake", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Lukk dette vinduet", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Ikke varsle igjen om dette nettstedet", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Slå av streng (fullstendig) blokkering for {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Midlertidig", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanent", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Fortsett", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Den blokkerte siden ønsker å omdirigere til et annet nettsted. Hvis du velger å fortsette, vil du navigere direkte til: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Grunn:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Ondsinnet", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Sporer", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Tvilsom", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Eksporter til nettlagring", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importer fra nettlagring", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importer fra nettlagring og slå sammen med gjeldende innstillinger", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Denne enhets navn:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Advarsel! Endringer av de avanserte innstillingene skjer på eget ansvar.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Send", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Bruk endringer", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Tilbakestill", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blokker element i ramme…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Abonner på filterliste…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Tillat store mediaelementer midlertidig", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Vis kildekode…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Oppfør en snarvei", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Slå av/på låst rulling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopier til utklippstavle", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Merk alt", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Slå av/på kosmetisk filtrering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Slå av/på JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Lemp på blokkeringsmodus", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Brukt lagringsplass: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klikk for å laste", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Feil: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Kan ikke filtrere riktig ved nettleseroppstart. Last siden på nytt for å sikre riktig filtrering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/oc/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/oc/messages.json new file mode 100644 index 00000000..7e78f139 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/oc/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Enfin un blocador eficaç. Sollicita pauc lo CPU e la memòria", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Tablèu de bòrd", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Atencion ! Avètz de modificacions pas enregistradas", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Demorar aicí", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorar", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Paramètres", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Listas de filtre", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Mos filtres", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Mas règlas", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Lista blanca", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Acorchis", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Jornals d’eveniments", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "A prepaus", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Assisténcia", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Visualizaira d’elements", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Paramètres avançats", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Clicatz per desactivar uBlock₀ per aqueste site\n\nCtrl+Clic per desactivar uBlock₀ sonque per aquesta pagina", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Clicatz per activar uBlock₀ per aqueste site", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "requèstas blocadas", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "sus aquesta pagina", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} o {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "dempuèi l’installacion", + "description": "English: since install" + }, + "popupOr": { + "message": "o", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blocats sus aquesta pagina", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blocats dempuèi l’installacion", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domenis connectats", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Dobrir lo tablèu de bòrd", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Passar en mòde Eliminador", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Passar en mòde Selector", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Dobrir la visualizaira d’eveniments", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Senhalar un problèma amb aqueste site web", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Toggle the blocking of all popups for this site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Clicatz per blocar las fenèstras sorgissentas d’aqueste site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Clicatz per blocar pas mai las fenèstras sorgissentas d’aqueste site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Toggle the blocking of large media elements for this site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Clicatz per blocar los mèdias de granda talha d’aqueste site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Clicatz per blocar pas mai los mèdias de granda talha d’aqueste site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Toggle cosmetic filtering for this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Click to disable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Click to enable cosmetic filtering on this site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Toggle the blocking of remote fonts for this site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Clicatz per blocar las poliças distantas d’aqueste site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Clicatz per blocar pas mai las poliças distantas d’aqueste site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Clicatz per desactivar JavaScript sus aqueste site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Clicatz per quitar de desactivar JavaScript sus aqueste site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Fenèstras sorgissentas", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Mèdias de granda talha", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filtres cosmetics", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Poliças distantas", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Mai", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mens", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Global rules: this column is for rules which apply to all sites.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Local rules: this column is for rules which apply to the current site only.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Click to make your changes permanent.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Click to revert your changes.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "totes", + "description": "" + }, + "popupImageRulePrompt": { + "message": "imatges", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Tèrça partida", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "3rd-party CSS/images", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "scripts en una linha", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1st-party scripts", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3rd-party scripts", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3rd-party frames", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domenis connectats", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} de {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Crear", + "description": "English: Create" + }, + "pickerPick": { + "message": "Causir", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Quitar", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Apercebut", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filtres ret", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filtres cosmetics", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Click, Ctrl-click", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blocar un element...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Hide placeholders of blocked elements", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Show the number of blocked requests on the icon", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Disable tooltips", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Make use of context menu where appropriate", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "De bon usar pels daltonians", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Aparéncia", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tèmas", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Personalizar la color afortida", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Enable cloud storage support", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Soi un-a utilizaire-a avandat-ada", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Disable pre-fetching (to prevent any connection for blocked network requests)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Disable hyperlink auditing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Prevent WebRTC from leaking local IP addresses", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Compòrtament per defaut", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "These default behaviors can be overridden on a per-site basis", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Disable cosmetic filtering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Block media elements larger than {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blocar las poliças distantas", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Desactivar JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Block CSP reports", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avançat", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "paramètres avançats", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Darrièra restauracion :", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Darrièra salvagarda :", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} used out of {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Mesa a jorn auto de las listas", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Metre a jorn ara", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Purgar totes los caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Parse and enforce cosmetic filters", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignore generic cosmetic filters", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Aplicar las modificacions", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Integrats", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Publicitats", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Confidencialitat", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Proteccion dels malware, seguretat", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Annoyances", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multipurpose", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regions, lengas", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Personalizat", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importar...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "One URL per line. Invalid URLs will be silently ignored.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Obsolèt.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "veire contengut", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Darrièra actualizacion : {{ago}}.\nClicar per forçar la mesa a jorn.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Mesa a jorn...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "A network error prevented the resource from being updated.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importar e apondre", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exportar", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "mos-filtres-estatics-ublock_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Aplicar las modificacions", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Règlas permanentas", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Règlas temporàrias", + "description": "header" + }, + "rulesRevert": { + "message": "Revert", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Commit", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Modificar", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Enregistrar", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Anullar", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Import from file…", + "description": "" + }, + "rulesExport": { + "message": "Export to file…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "List of your dynamic filtering rules.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rule syntax: source destination type action (full documentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Triar :", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Tipe de règla", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Font", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destinacion", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Import and append…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exportar", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Aplicar las modificacions", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tipe", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domeni", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtre", + "description": "English: Filter" + }, + "logAll": { + "message": "Totes", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tabless", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Onglet actual", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Reload the tab content", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Toggle the DOM inspector", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Toggle the popup panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: The logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Clear logger", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pause logger (discard all incoming data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Unpause logger", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Toggle logger filtering", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filter logger content", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logger filtering options", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Not", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blocat", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "autorizat", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modificat", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1st-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3rd-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detalhs", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtre", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Lista de filtre", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Règla", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Contèxte", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Root context", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tipe", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Règla d’URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Contèxte :", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tipe :", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Static filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blocar", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Autorizar", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "type “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "any type", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "from “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "from anywhere", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "except when", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "even if", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Static filter {{filter}} found in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Static filter could not be found in any of the currently enabled filter lists", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Preserve entries from the last {{input}} minutes", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preserve at most {{input}} page loads per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preserve at most {{input}} entries per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Use {{input}} lines per entry in vertically expanded mode", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Hide columns:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Time", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/rule", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Lista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tablèu", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Brut", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Dobrir", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Create new report on GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Find similar reports on GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentacion", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Read the documentation at uBlock/wiki to learn about all of uBlock Origin's features.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Questions and support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Senhalament d’avarias", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Troubleshooting Information", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Politica de confidencialitat", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Jornal de modificacions", + "description": "" + }, + "aboutCode": { + "message": "Còdi font (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Contributors", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Còdi font", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Traduccions", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Listas de filtres", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "External dependencies (GPLv3-compatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's own filter lists are freely hosted on the following CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A randomly picked CDN is used when a filter list needs to be updated.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Back up to file…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restore from file…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Reset to default settings…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "The data could not be read or is invalid", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Network error: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "S'abonar", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "fa una minuta", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "fa {{value}} minutas", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "fa una ora", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "fa {{value}} oras", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "a un jorn", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "fa {{value}} jorns", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Show Dashboard", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Show Logger", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "off", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Pagina blocada", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin a empachat lo cargament de la pagina seguenta :", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "A causa del filtre seguent :", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "without parameters", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Trobat dins :", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Tornar", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Tampar aquesta fenèstra", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "M’assabentar pas mai per aqueste site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Desactivar lo blocatge estric del domeni {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporàriament", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanentament", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Contunhar", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "La pagina blocada vòl redirigir cap a un autre site. Se causissètz de perseguir, aniretz dirèctament a : {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Export to cloud storage", + "description": "tooltip" + }, + "cloudPull": { + "message": "Import from cloud storage", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Import from cloud storage and merge with current settings", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Nom d’aqueste periferic :", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Warning! Change these advanced settings at your own risk.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Mandar", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Aplicar las modificacions", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Restablir", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "octets", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Block element in frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribe to filter list…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Permetre temporàriament los elements mèdias larges", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Picar un acorchi", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Toggle locked scrolling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copiar al quichapapièrs", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Tot seleccionar", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relax blocking mode", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Espaci emmagazinatge : {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "Ko", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "Mo", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "Go", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Clicatz per cargar", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/pa/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/pa/messages.json new file mode 100644 index 00000000..cccd08aa --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/pa/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "ਆਖਰਕਾਰ ਪ੍ਰਭਾਵੀ ਬਲੌਕਰ ਹੈ। CPU ਅਤੇ ਮੈਮੋਰੀ ਲਈ ਸੌਖਾ।", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — ਡੈਸ਼ਬੋਰਡ", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "ਸਾਵਧਾਨ! ਤੁਹਾਡੇ ਕੋਲ ਨਾ-ਸੰਭਾਲੀਆਂ ਤਬਦੀਲੀਆਂ ਹਨ", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "ਇੱਥੇ ਰਹੋ", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "ਅਣਡਿੱਠਾ", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "ਸੈਟਿੰਗਾਂ", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "ਫਿਲਟਰ ਸੂਚੀਆਂ", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "ਮੇਰੇ ਫਿਲਟਰ", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "ਮੇਰੇ ਨਿਯਮ", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "ਭਰੋਸੇਯੋਗ ਸਾਈਟਾਂ", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "ਸ਼ਾਰਟਕੱਟ", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — ਲੌਗਰ", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "ਇਸ ਬਾਰੇ", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "ਸਹਿਯੋਗ", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — ਸੰਪੱਤੀ ਦਰਸ਼ਕ", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "ਤਕਨੀਕੀ ਸੈਟਿੰਗਾਂ", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "ਕਲਿੱਕ: ਇਸ ਸਾਈਟ ਲਈ uBlock₀ ਨੂੰ ਅਸਮਰੱਥ/ਸਮਰੱਥ ਕਰੋ।\n\nCtrl+ਕਲਿੱਕ: ਸਿਰਫ਼ ਇਸ ਸਫ਼ੇ ਲਈ uBlock₀ ਨੂੰ ਅਸਮਰੱਥ/ਸਮਰੱਥ ਕਰੋ।", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "ਇਸ ਸਾਈਟ ਲਈ uBlock₀ ਨੂੰ ਅਸਮਰੱਥ/ਸਮਰੱਥ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ।\n\nਸਿਰਫ਼ ਇਸ ਸਫ਼ੇ ਲਈ uBlock₀ ਨੂੰ ਅਸਮਰੱਥ/ਸਮਰੱਥ ਕਰਨ ਲਈ Ctrl+ਕਲਿੱਕ ਕਰੋ।", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "ਇਸ ਸਾਈਟ ਲਈ uBlock₀ ਸਮਰੱਥ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ।", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "ਪਾਬੰਦੀ ਲਾਈਆਂ ਬੇਨਤੀਆਂ", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "ਇਸ ਸਫ਼ੇ ਉੱਤੇ", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "ਇੰਸਟਾਲ ਕਰਨ ਤੋਂ ਬਾਅਦ", + "description": "English: since install" + }, + "popupOr": { + "message": "ਜਾਂ", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "ਇਸ ਸਫ਼ੇ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਏ", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "ਇੰਸਟਾਲ ਹੋਣ ਤੋਂ ਬਾਅਦ ਪਾਬੰਦੀ ਲਾਏ", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "ਕਨੈਕਟ ਹੋਈਆਂ ਡੋਮੇਨਾਂ", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "ਡੈਸ਼ਬੋਰਡ ਨੂੰ ਖੋਲ੍ਹੋ", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Enter element zapper mode", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Enter element picker mode", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "ਲੌਗਰ ਖੋਲ੍ਹੋ", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "ਇਸ ਵੈੱਬਸਾਈਟ ਉੱਤੇ ਮਸਲੇ ਬਾਰੇ ਰਿਪੋਰਟ ਕਰੋ", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "ਇਸ ਸਾਈਟ ਲਈ ਸਾਰੇ ਪੌਪ-ਅੱਪ ਉੱਤੇ ਪਾਬੰਦੀਆਂ ਨੂੰ ਬਦਲੋ", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "ਇਸ ਸਾਈਟ ਲਈ ਸਾਰੇ ਪੌਪ-ਅੱਪ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "ਇਸ ਸਾਈਟ ਲਈ ਸਾਰੇ ਪੌਪ-ਅੱਪ ਉੱਤੇ ਪਾਬੰਦੀ ਨਾ ਲਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "ਇਸ ਸਾਈਟ ਲਈ ਵੱਡੇ ਮੀਡਿਆ ਭਾਗਾਂ ਉੱਤੇ ਪਾਬੰਦੀਆਂ ਨੂੰ ਬਦਲੋ", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "ਇਸ ਸਾਈਟ ਲਈ ਵੱਡੇ ਮੀਡੀਆ ਭਾਗਾਂ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "ਇਸ ਸਾਈਟ ਲਈ ਵੱਡੇ ਮੀਡੀਆ ਭਾਗਾਂ ਉੱਤੇ ਪਾਬੰਦੀ ਹਟਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "ਇਸ ਸਾਈਟ ਲਈ ਦਿੱਖ ਫਿਲਟਰ ਕਰਨ ਨੂੰ ਬਦਲੋ", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "ਇਸ ਸਾਈਟ ਉੱਤੇ ਦਿੱਖ ਫਿਲਟਰ ਕਰਨ ਨੂੰ ਅਸਮਰੱਥ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "ਇਸ ਸਾਈਟ ਉੱਤੇ ਦਿੱਖ ਫਿਲਟਰ ਕਰਨ ਨੂੰ ਸਮਰੱਥ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "ਇਸ ਸਾਈਟ ਲਈ ਰਿਮੋਟ ਫ਼ੌਂਟਾਂ ਉੱਤੇ ਪਾਬੰਦੀਆਂ ਨੂੰ ਬਦਲੋ", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "ਇਸ ਸਾਈਟ ਲਈ ਰਿਮੋਟ ਫ਼ੌਂਟਾਂ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "ਇਸ ਸਾਈਟ ਲਈ ਰਿਮੋਟ ਫ਼ੌਂਟਾਂ ਉੱਤੇ ਪਾਬੰਦੀ ਹਟਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "ਇਸ ਸਾਈਟ ਉੱਤੇ JavaScript ਅਸਮਰੱਥ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "ਇਸ ਸਾਈਟ ਉੱਤੇ JavaScript ਅਸਮਰੱਥ ਕਰਨ ਨੂੰ ਹਟਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "ਪੌਪ-ਅੱਪ ਵਿੰਡੋ", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "ਵੱਡੇ ਮੀਡੀਆ ਭਾਗ", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "ਦਿੱਖ ਫਿਲਟਰ ਕਰਨਾ", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "ਰਿਮੋਟ ਫ਼ੌਂਟ", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "ਹੋਰ", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "ਘੱਟ", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "ਗਲੋਬਲ ਨਿਯਮ: ਇਹ ਕਾਲਮ ਸਾਰੀਆਂ ਸਾਈਟਾਂ ਉੱਤੇ ਲਾਗੂ ਹੋਣ ਵਾਲੇ ਨਿਯਮਾਂ ਲਈ ਹੈ।", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "ਲੋਕਲ ਨਿਯਮ: ਇਹ ਕਾਲਮ ਨਿਯਮਾਂ ਲਈ ਹੈ, ਜੋ ਕਿ ਸਿਰਫ਼ ਲੋਕਲ ਸਾਈਟਾਂ ਉੱਤੇ ਹੀ ਲਾਗੂ ਹੁੰਦੇ ਹਨ।", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਪੱਕਾ ਬਣਾਉਣ ਲਈ ਕਲਿੱਕ ਕਰੋ।", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "ਆਪਣੀਆਂ ਤਬਦੀਲੀਆਂ ਨੂੰ ਵਾਪਸ ਲੈਣ ਲਈ ਕਲਿੱਕ ਕਰੋ।", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "ਸਭ", + "description": "" + }, + "popupImageRulePrompt": { + "message": "ਚਿੱਤਰ", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "ਤੀਜੀ-ਧਿਰ", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "ਤੀਜੀ-ਧਿਰ CSS/ਚਿੱਤਰ", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "ਇਨ-ਲਾਈਨ ਸਕ੍ਰਿਪਟਾਂ", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1ਲੀ-ਧਿਰ ਸਕ੍ਰਿਪਟਾਂ", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "ਤੀਜੀ-ਧਿਰ ਸਕ੍ਰਿਪਟਾਂ", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "ਤੀਜੀ-ਧਿਰ ਫਰੇਮ", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "ਕਨੈਕਟ ਹੋਈਆਂ ਡੋਮੇਨਾਂ", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}} ਵਿੱਚੋਂ {{count}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "ਵਰਜ਼ਨ", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "ਸਕ੍ਰਿਪਟ", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "ਫਰੇਮ", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "ਬਣਾਓ", + "description": "English: Create" + }, + "pickerPick": { + "message": "ਚੁਣੋ", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "ਬਾਹਰ", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "ਝਲਕ", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "ਨੈੱਟਵਰਕ ਫਿਲਟਰ", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "ਦਿੱਖ ਫਿਲਟਰ ਕਰਨਾ", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "ਕਲਿੱਕ, Ctrl-ਕਲਿੱਕ", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "ਭਾਗ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "ਪਾਬੰਦੀ ਲਾਏ ਭਾਗਾਂ ਲਈ ਸਥਾਨ ਨੂੰ ਓਹਲੇ ਕਰੋ", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "ਆਈਕਾਨ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਈਆਂ ਬੇਨਤੀਆਂ ਦੀ ਗਿਣਤੀ ਦਿਖਾਓ", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "ਟੂਲ-ਟਿੱਪ ਅਸਮਰੱਥ ਕਰੋ", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "ਜਦੋਂ ਵੀ ਵਾਜਬ ਹੋਵੇ ਤਾਂ ਪ੍ਰਸੰਗ ਮੇਨੂ ਨੂੰ ਵਰਤੋਂ", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "ਰੰਗ-ਅੰਨ੍ਹੇਪਣ ਲਈ ਸਰਲ", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "ਦਿੱਖ", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "ਥੀਮ", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "ਕਲਾਉਡ ਸਟੋਰੇਜ਼ ਸਹਾਇਤਾ ਸਮਰੱਥ ਕਰੋ", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "ਮੈਂ ਮਾਹਰ ਵਰਤੋਂਕਾਰ ਹਾਂ", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "ਪਹਿਲਾਂ-ਪ੍ਰਾਪਤ ਕਰਨਾ ਅਸਮਰੱਥ (ਪਾਬੰਦੀ ਲਾਈਆਂ ਨੈੱਟਵਰਕ ਬੇਨਤੀਆਂ ਲਈ ਕਿਸੇ ਵੀ ਕਨੈਕਸ਼ਨ ਨੂੰ ਰੋਕਣ ਲਈ)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "ਹਾਈਪਰ-ਲਿੰਕ ਪੜਤਾਲ ਨੂੰ ਅਸਮਰੱਥ ਕਰੋ", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "WebRTC ਨੂੰ ਲੋਕਲ IP ਐਡਰੈਸ ਲੀਕ ਕਰਨ ਤੋਂ ਰੋਕੋ", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "ਮੂਲ ਰਵੱਈਆ", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "ਇਹ ਮੂਲ ਰਵੱਈਏ ਨੂੰ ਹਰ-ਸਟਾਈ ਮੁਤਾਬਕ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "ਦਿੱਖ ਫਿਲਟਰ ਕਰਨ ਨੂੰ ਅਸਮਰੱਥ ਕਰੋ", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "{{input}} KB ਤੋਂ ਵੱਡੇ ਮੀਡੀਆ ਭਾਗਾਂ ਉੱਤੇ ਪਾਬੰਦੀ", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "ਰਿਮੋਟ ਫ਼ੌਂਟਾਂ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਓ", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "JavaScript ਅਸਮਰੱਥ ਕਰੋ", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP ਰਿਪੋਰਟਾਂ ਉੱਤੇ ਪਾਬੰਦੀ", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "ਤਕਨੀਕੀ", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "ਫ਼ੀਚਰ ਸਿਰਫ਼ ਤਕਨੀਕੀ ਮਾਹਰ ਵਰਤੋਂਕਾਰਾਂ ਲਈ ਢੁੱਕਵੇਂ ਹਨ", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "ਤਕਨੀਕੀ ਸੈਟਿੰਗਾਂ", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "ਪਿਛਲਾ ਰੀ-ਸਟੋਰ:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "ਪਿਛਲਾ ਬੈਕਅੱਪ:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} ਨੈੱਟਵਰਕ ਫਿਲਟਰ + {{cosmeticFilterCount}} ਦਿੱਖ ਫਿਲਟਰ, ਇੱਥੋਂ:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}} ਵਿੱਚੋਂ {{used}} ਵਰਤੇ", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "ਫਿਲਟਰ ਸੂਚੀਆਂ ਆਪੇ ਅੱਪਡੇਟ ਕਰੋ", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "ਹੁਣੇ ਅੱਪਡੇਟ ਕਰੋ", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "ਸਭ ਕੈਸ਼ ਮਿਟਾਓ", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "ਦਿੱਖ ਫਿਲਟਰ ਨੂੰ ਪਾਰਸ ਅਤੇ ਲਾਗੂ ਕਰੋ", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "ਦਿੱਖ (cosmetic) ਫਿਲਟਰ ਵੈੱਬ ਸਫ਼ੇ ਉੱਤੇ ਅਜਿਹਾ ਭਾਗਾਂ ਨੂੰ ਲੁਕਾਉਂਦੇ ਹਨ, ਜੋ ਕਿ ਦਿੱਖ ਵਿੱਚ ਰੁਕਾਵਟ ਬਣਦੇ ਹਨ ਅਤੇ ਜਿਹਨਾਂ ਉੱਤੇ ਨੈੱਟਵਰਕ ਅਧਾਰਿਤ ਫਿਲਟਰ ਇੰਜਣਾਂ ਰਾਹੀਂ ਪਾਬੰਦੀ ਨਹੀਂ ਲਾਈ ਜਾ ਸਕਦੀ ਹੈ।", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "ਆਮ ਦਿੱਖ ਆਧਾਰਿਤ ਫਿਲਟਰ ਅਣਡਿੱਠੇ ਕਰੋ", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "ਸਭ ਫਿਲਟਰ ਸੂਚੀਆਂ ਲੋਡ ਹੋਣ ਤੱਕ ਨੈੱਟਵਰਕ ਸਰਗਰਮੀ ਨੂੰ ਸਸਪੈਂਡ ਰੱਖੋ", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰੋ", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "ਬਿਲਟ-ਇਨ", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "ਇਸ਼ਤਿਹਾਰ", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "ਪਰਦੇਦਾਰੀ", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "ਮਾਲਵੇਅਰਾਂ ਤੋਂ ਬਚਾਅ, ਸੁਰੱਖਿਆ", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "ਸ਼ੋਸ਼ਲ ਵਿਜੈਟ", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "ਕੂਕੀਜ਼ ਨੋਟਿਸ", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "ਅਣਚਾਹੇ", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "ਬਹੁ-ਮਕਸਦੀ", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "ਖੇਤਰ, ਭਾਸ਼ਾਵਾਂ", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "ਕਸਟਮ", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "ਇੰਪੋਰਟ…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "ਹਰ ਲਾਈਨ ਵਿੱਚ ਇੱਕ URL। ਗਲਤ URL ਨੂੰ ਬਿਨਾਂ ਰੁਕੇ ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾਵੇਗਾ।", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "ਪੁਰਾਣਾ।", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "ਸਮੱਗਰੀ ਵੇਖੋ", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "ਆਖਰੀ ਅੱਪਡੇਟ: {{ago}}।\nਅੱਪਡੇਟ ਲਈ ਮਜ਼ਬੂਰ ਕਰਨ ਵਾਸਤੇ ਕਲਿੱਕ ਕਰੋ।", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "…ਅੱਪਡੇਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "ਨੈੱਟਵਰਕ ਗਲਤੀ ਸਰੋਤ ਨੂੰ ਅੱਪਡੇਟ ਹੋਣ ਤੋਂ ਰੋਕਦੀ ਹੈ।", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "ਗ਼ੈਰ-ਭਰੋਸੇਯੋਗ ਸਰੋਤਾਂ ਤੋਂ ਫਿਲਟਰ ਨਾ ਜੋੜੋ।", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "ਮੇਰੇ ਕਸਟਮ ਫਿਲਟਰ ਸਮਰੱਥ ਕਰੋ", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "ਇੰਪੋਰਟ ਕਰੋ ਤੇ ਜੋੜੋ…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "ਐਕਸਪੋਰਟ…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰੋ", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "ਪੱਕੇ ਨਿਯਮ", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "ਆਰਜ਼ੀ ਨਿਯਮ", + "description": "header" + }, + "rulesRevert": { + "message": "ਵਾਪਸ ਲਵੋ", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "ਕਮਿਟ", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "ਸੋਧੋ", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "ਸੰਭਾਲੋ", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "ਖ਼ਾਰਜ", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "…ਫ਼ਾਈਲ ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ", + "description": "" + }, + "rulesExport": { + "message": "…ਫ਼ਾਈਲ ਉੱਤੇ ਐਕਸਪੋਰਟ ਕਰੋ", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "ਤੁਹਾਡੇ ਚਾਲੂ ਫਿਲਟਰ ਕਰਨ ਦੇ ਨਿਯਮਾਂ ਦੀ ਸੂਚੀ ਹੈ।", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rule syntax: source destination type action (full documentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "ਲੜੀਬੱਧ:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "ਨਿਯਮ ਦੀ ਕਿਸਮ", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "ਸਰੋਤ", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "ਟਿਕਾਣਾ", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "ਇੰਪੋਰਟ ਕਰੋ ਤੇ ਜੋੜੋ…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "ਐਕਸਪੋਰਟ…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰੋ", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "ਕਿਸਮ", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "ਡੋਮੇਨ", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "ਫਿਲਟਰ", + "description": "English: Filter" + }, + "logAll": { + "message": "ਸਭ", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "ਬਿਨ-ਟੈਬ", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "ਮੌਜੂਦਾ ਟੈਬ", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "ਟੈਬ ਸਮੱਗਰੀ ਮੁੜ-ਲੋਡ ਕਰੋ", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM ਇੰਸਪੈਕਟਰ ਨੂੰ ਬਦਲੋ", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "ਪੌਪ-ਅੱਪ ਪੈਨਲ ਬਦਲੋ", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin ਵਿਕੀ: ਲੌਗਰ", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "ਲੌਗਰ ਮਿਟਾਓ", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "ਲੌਗਰ ਨੂੰ ਰੋਕੋ (ਸਭ ਆਉਣ ਵਾਲੇ ਡਾਟੇ ਨੂੰ ਅਣਡਿੱਠਾ ਕਰੋ)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "ਲੌਗਰ ਨੂੰ ਚਾਲੂ ਕਰੋ", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "ਲੌਗਰ ਫਿਲਟਰਾਂ ਨੂੰ ਬਦਲੋ", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "ਲੌਗਰ ਸਮੱਗਰੀ ਨੂੰ ਫਿਲਟਰ ਕਰੋ", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "ਲੌਗਰ ਫਿਲਟਰ ਕਰਨ ਲਈ ਚੋਣਾਂ", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "ਨਹੀਂ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "ਪਾਬੰਦੀ ਲਾਏ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "ਮਨਜ਼ੂਰ ਕੀਤੇ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "ਸੋਧ ਕੀਤੇ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1ਲੀ-ਧਿਰ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3ਜੀ-ਧਿਰ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "ਵੇਰਵੇ", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "ਫਿਲਟਰ", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "ਫਿਲਟਰ ਸੂਚੀ", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "ਨਿਯਮ", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "ਪਰਸੰਗ", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "ਰੂਟ ਪਰਸੰਗ", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "ਬਿਨ-ਧਿਰ", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "ਕਿਸਮ", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL ਨਿਯਮ", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "ਪਰਸੰਗ:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "ਕਿਸਮ:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "ਟਿਕਾਊ ਫਿਲਟਰ", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "ਪਾਬੰਦੀ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "ਮਨਜ਼ੂਰ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "ਕਿਸਮ “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "ਕੋਈ ਵੀ ਕਿਸਮ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "“{{origin}}” ਤੋਂ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "ਕਿਸੇ ਵੀ ਥਾਂ ਤੋਂ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "ਛੋਟ ਜਦੋਂ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "ਭਾਵੇਂ ਜੇ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "ਸਥਿਰ ਫਿਲਟਰ {{filter}} ਇਸ ਵਿੱਚ ਮੌਜੂਦ ਹੈ:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Static filter could not be found in any of the currently enabled filter lists", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "ਪਿਛਲੇ {{input}} ਮਿੰਟਾਂ ਤੋਂ ਐਂਟਰੀਆਂ ਰੱਖੋ", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preserve at most {{input}} page loads per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preserve at most {{input}} entries per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Use {{input}} lines per entry in vertically expanded mode", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "ਕਾਲਮ ਲੁਕਾਓ:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} ਸਮਾਂ", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} ਫਿਲਟਰ/ਨਿਯਮ", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} ਪਰਸੰਗ", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} ਬਿਨ-ਧਿਰ", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "ਸੂਚੀ", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "ਸਾਰਣੀ", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "ਸਰਲ", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "ਮਾਰਕਡਾਊਨ", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "ਖੋਲ੍ਹੋ", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "ਨਵੀਂ ਰਿਪੋਰਟ ਬਣਾਓ", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "ਰਲਦੀਆਂ ਰਿਪੋਰਟਾਂ ਲੱਭੋ", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "ਦਸਤਾਵੇਜ਼", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "uBlock Origin ਦੇ ਸਾਰੇ ਫੀਚਰਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਲੈਣ ਲਈ uBlock/wiki ਤੋਂ ਦਸਤਾਵੇਜ਼ ਪੜ੍ਹੋ।", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "ਸਵਾਲ ਅਤੇ ਸਹਿਯੋਗ", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "ਸਵਾਲਾਂ ਦੇ ਜਵਾਬ ਅਤੇ ਹੋਰ ਕਿਸੇ ਵੀ ਕਿਸਮ ਦੀ ਮਦਦ subreddit /r/uBlockOrigin ਉੱਤੇ ਦਿੱਤੀ ਜਾਂਦੀ ਹੈ।", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "ਫਿਲਟਰ ਮਸਲੇ/ਵੈੱਬਸਾਈਟ ਖਰਾਬ ਹੈ", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "ਬੱਗ ਰਿਪੋਰਟ", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "ਸਮੱਸਿਆ ਹੱਲ ਕਰਨ ਸੰਬੰਧੀ ਜਾਣਕਾਰੀ", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "ਹੇਠਾਂ ਤਕਨੀਕੀ ਜਾਣਕਾਰੀ ਦਿੱਤੀ ਹੈ, ਜੋ ਕਿ ਵਲੰਟੀਅਰਾਂ ਲਈ ਮਦਦਗਾਰ ਹੋ ਸਕਦੀ ਹੈ, ਜੋ ਤੁਹਾਡੀ ਸਮੱਸਿਆ ਹੱਲ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ ਕਰਦੇ ਹਨ।", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "ਫਿਲਟਰ ਮਸਲੇ ਬਾਰੇ ਰਿਪੋਰਟ ਕਰੋ", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "ਵਲੰਟੀਅਰਾਂ ਕੋਲ ਡੁਪਲੀਕੇਟ ਰਿਪੋਰਟਾਂ ਦਾ ਕੰਮ ਵਧਾਉਣ ਤੋਂ ਬਚਣ ਲਈ ਕਿਰਪਾ ਕਰਕੇ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਮਸਲਾ ਕਿਤੇ ਪਹਿਲਾਂ ਰਿਪੋਰਟ ਤਾਂ ਨਹੀ ਕੀਤਾ ਹੋਇਆ ਹੈ।", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "ਫਿਲਟਰ ਸੂਚੀਆਂ ਰੋਜ਼ ਅੱਪਡੇਟ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ। ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਕਿਤੇ ਤੁਹਾਡਾ ਮਸਲਾ ਪਹਿਲਾਂ ਹੀ ਸਭ ਤੋਂ ਤਾਜ਼ਾ ਫਿਲਟਰ ਸੂਚੀਆਂ ਰਾਹੀਂ ਹੱਲ ਤਾਂ ਨਹੀਂ ਹੋ ਚੁੱਕਿਆ ਹੈ।", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "ਸਮੱਸਿਆ ਵਾਲੇ ਵੈੱਬ-ਸਫ਼ੇ ਨੂੰ ਮੁੜ-ਲੋਡ ਕਰਨ ਦੇ ਬਾਅਦ ਜਾਂਚ ਕਰੋ ਕਿ ਕੀ ਮਸਲਾ ਹਾਲੇ ਵੀ ਮੌਜੂਦ ਹੈ।", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "ਵੈੱਬ ਸਾਈਟ ਦਾ ਸਿਰਨਾਵਾਂ:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "ਵੈੱਬ ਸਫ਼ਾ…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- ਐਂਟਰੀ ਚੁਣੋ --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "ਇਸ਼ਤਿਹਾਰ ਜਾਂ ਇਸ਼ਤਿਹਾਰ ਦੀ ਰਹਿੰਦ-ਖੂੰਦ ਦਿਖਾਉਂਦਾ ਹੈ", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "uBlock Origin ਖੋਜਦਾ ਹੈ", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "ਪਰਦੇਦਾਰੀ ਸੰਬੰਧੀ ਮਸਲੇ ਹਨ", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "uBlock Origin ਸਮਰੱਥ ਕਰਨ ਦੇ ਬਾਅਦ ਗੜਬੜ ਹੁੰਦੀ ਹੈ", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "ਬੇਲੋੜੀਆਂ ਟੈਬਾਂ ਜਾਂ ਵਿੰਡੋ ਖੋਲ੍ਹਦਾ ਹੈ", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "ਪਰਦੇਦਾਰੀ ਨੀਤੀ", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "ਤਬਦੀਲੀ-ਸੂਚੀ", + "description": "" + }, + "aboutCode": { + "message": "ਸਰੋਤ ਕੋਡ (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "ਯੋਗਦਾਨੀ", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "ਸਰੋਤ ਕੋਡ", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "ਅਨੁਵਾਦ", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "ਫਿਲਟਰ ਸੂਚੀਆਂ", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "ਬਾਹਰੀ ਨਿਰਭਰਤਾਵਾਂ (GPLv3-ਅਨੁਕੂਲ):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO ਦੀਆਂ ਆਪਣੀਆਂ ਫਿਲਟਰ ਸੂਚੀਆਂ CDN ਉੱਤੇ ਆਜ਼ਾਦ ਰੂਪ ਵਿੱਚ ਹੋਸਟ ਕੀਤੀਆਂ ਹਨ:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A randomly picked CDN is used when a filter list needs to be updated.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "ਫ਼ਾਈਲ ਤੋਂ ਬੈਕਅੱਪ ਲਵੋ…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ਮੇਰਾ-ublock-ਬੈਕ-ਅੱਪ_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "…ਫ਼ਾਈਲ ਤੋਂ ਬਹਾਲ ਕਰੋ", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "…ਮੂਲ ਸੈਟਿੰਗਾਂ ਬਹਾਲ ਕਰੋ", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "ਡਾਟਾ ਪੜ੍ਹਿਆ ਨਹੀਂ ਜਾ ਸਕਿਆ ਜਾਂ ਗ਼ੈਰ-ਵਾਜਬ ਹੈ", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "ਤੁਹਾਡੀਆਂ ਸਾਰੀਆਂ ਸੈਟਿੰਗਾਂ ਨੂੰ ਹਟਾਇਆ ਜਾਵੇਗਾ ਅਤੇ uBlock₀ ਮੁੜ-ਚਾਲੂ ਹੋਵੇਗਾ।\n\nਕੀ uBlock₀ ਨੂੰ ਫੈਕਟਰੀ ਸੈਟਿੰਗਾਂ ਲਈ ਮੁੜ-ਸੈੱਟ ਕਰਨਾ ਹੈ?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "ਨੈੱਟਵਰਕ ਗਲਤੀ: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "ਮੈਂਬਰ ਬਣੋ", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "ਮਿੰਟ ਪਹਿਲਾਂ", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} ਮਿੰਟ ਪਹਿਲਾਂ", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "ਘੰਟਾ ਪਹਿਲਾਂ", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} ਘੰਟੇ ਪਹਿਲਾਂ", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "ਇੱਕ ਦਿਨ ਪਹਿਲਾਂ", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} ਦਿਨ ਪਹਿਲਾਂ", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "ਡੈਸ਼ਬੋਰਡ ਵੇਖਾਓ", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "ਲੌਗਰ ਵੇਖਾਓ", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "ਬੰਦ", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "ਸਫ਼ੇ ਉੱਤੇ ਪਾਬੰਦੀ ਹੈ", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin ਨੇ ਅੱਗੇ ਦਿੱਤੇ ਸਫ਼ੇ ਨੂੰ ਲੋਡ ਹੋਣ ਤੋਂ ਰੋਕਿਆ ਹੈ:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "ਅੱਗੇ ਦਿੱਤੇ ਫਿਲਟਰ ਕਰਕੇ:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "ਬਿਨਾਂ ਪੈਰਾਮੀਟਰ", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "ਲੱਭੋ:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "ਪਿੱਛੇ ਜਾਓ", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "ਇਹ ਵਿੰਡੋ ਬੰਦ ਕਰੋ", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "ਇਸ ਸਾਈਟ ਬਾਰੇ ਮੈਨੂੰ ਮੁੜ ਚੇਤਾਵਨੀ ਨਾ ਦਿਓ", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "{{hostname}} ਲਈ ਸਖ਼ਤ ਪਾਬੰਦੀਆਂ ਲਾਉਣਾ ਅਸਮਰੱਥ ਕਰੋ", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "ਆਰਜ਼ੀ", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "ਪੱਕੇ ਤੌਰ ਉੱਤੇ", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "ਜਾਰੀ ਰੱਖੋ", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "ਕਾਰਨ:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "ਟੋਹੀ", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "ਕਲਾਉਡ ਸਟੋਰੇਜ਼ ਉੱਤੇ ਐਕਸਪੋਰਟ ਕਰੋ", + "description": "tooltip" + }, + "cloudPull": { + "message": "ਕਲਾਉਡ ਸਟੋਰੇਜ਼ ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "ਕਲਾਉਡ ਸਟੋਰੇਜ਼ ਤੋਂ ਇੰਪੋਰਟ ਕਰੋ ਅਤੇ ਮੌਜੂਦਾ ਸੈਟਿੰਗਾਂ ਨਾਲ ਮਿਲਾਓ", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "ਇਸ ਡਿਵਾਈਸ ਦਾ ਨਾਂ:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "ਸਾਵਧਾਨ! ਇਹ ਤਕਨੀਕੀ ਸੈਟਿੰਗਾਂ ਨੂੰ ਆਪਣੇ ਖ਼ਤਰੇ ਮੁਤਾਬਕ ਬਦਲੋ।", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "ਭੇਜੋ", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "ਤਬਦੀਲੀਆਂ ਲਾਗੂ ਕਰੋ", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "ਵਾਪਸ ਲਵੋ", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "ਬਾਈਟ", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "ਫਰੇਮ ਵਿੱਚ ਭਾਗ ਉੱਤੇ ਪਾਬੰਦੀ ਲਾਈ…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "ਫਿਲਟਰ ਸੂਚੀ ਲਈ ਮੈਂਬਰ ਬਣੋ…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "ਆਰਜ਼ੀ ਤੌਰ ਉੱਤੇ ਵੱਡੇ ਮੀਡੀਆ ਭਾਗਾਂ ਨੂੰ ਮਨਜ਼ੂਰੀ ਦਿਓ", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "ਸਰੋਤ ਕੋਡ ਵੇਖੋ…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "ਸ਼ਾਰਟਕੱਟ ਲਿਖੋ", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Toggle locked scrolling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "ਕਲਿੱਪਬੋਰਡ ਵਿੱਚ ਕਾਪੀ ਕਰੋ", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "ਸਭ ਚੁਣੋ", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript ਨੂੰ ਬਦਲੋ", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relax blocking mode", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "ਵਰਤੀ ਗਈ ਸਟੋਰੇਜ਼: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "ਲੋਡ ਕਰਨ ਲਈ ਕਲਿੱਕ ਕਰੋ", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "ਗਲਤੀਆਂ: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/pl/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/pl/messages.json new file mode 100644 index 00000000..4802a3a0 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/pl/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Nareszcie skuteczny bloker charakteryzujący się niskim użyciem procesora i pamięci.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ – Panel sterowania", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Uwaga! Masz niezapisane zmiany", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Zostań", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignoruj", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Ustawienia", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Listy filtrów", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Moje filtry", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Moje reguły", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Zaufane witryny", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Skróty", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ – Rejestrator", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "O rozszerzeniu", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Pomoc techniczna", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ – Podgląd zasobu", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Ustawienia zaawansowane", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Kliknij, aby wyłączyć uBlock₀ dla tej witryny.\n\nKliknij z wciśniętym klawiszem Ctrl,\naby wyłączyć uBlock₀ tylko dla tej strony.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Kliknij, aby wyłączyć uBlock₀ dla tej witryny.\n\nKliknij z wciśniętym klawiszem Ctrl, aby wyłączyć uBlock₀ tylko dla tej strony.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Kliknij, aby włączyć uBlock₀ dla tej witryny.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "zablokowane żądania", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "na tej stronie", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "od instalacji", + "description": "English: since install" + }, + "popupOr": { + "message": "lub", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Zablokowane na tej stronie", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Zablokowane od instalacji", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domeny podłączone", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Otwórz panel sterowania", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Przejdź do trybu usuwania elementów", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Przejdź do trybu zaznaczania elementów", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Otwórz rejestrator", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Zgłoś problem z tą stroną", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Włącz/wyłącz blokowanie wyskakujących okien na tej witrynie", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Kliknij, aby zablokować wszystkie wyskakujące okna na tej witrynie", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Kliknij, aby nie blokować wyskakujących okien na tej witrynie", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Włącz/wyłącz blokowanie dużych elementów multimedialnych na tej witrynie", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Kliknij, aby zablokować duże elementy multimedialne na tej witrynie", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Kliknij, aby nie blokować dużych elementów multimedialnych na tej witrynie", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Włącz/wyłącz kosmetyczne filtrowanie na tej witrynie", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Kliknij, aby wyłączyć filtrowanie kosmetyczne na tej witrynie", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Kliknij, aby włączyć filtrowanie kosmetyczne na tej witrynie", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Włącz/wyłącz blokowanie zdalnych czcionek na tej witrynie", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Kliknij, aby zablokować zdalne czcionki na tej witrynie", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Kliknij, aby nie blokować zdalnych czcionek na tej witrynie", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Kliknij, aby wyłączyć JavaScript na tej witrynie", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Kliknij, aby JavaScript nie był już wyłączony na tej witrynie", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Wyskakujące okna", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Duże elementy multimedialne", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filtrowanie kosmetyczne", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Zdalne czcionki", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Więcej", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mniej", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Reguły globalne:\nW tej kolumnie znajdują się reguły stosowane na wszystkich witrynach.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Reguły lokalne:\nW tej kolumnie znajdują się reguły stosowane tylko na bieżącej witrynie.\nReguły lokalne zastępują reguły globalne.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Kliknij, aby zastosować zmiany na stałe.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Kliknij, aby odrzucić zmiany.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "wszystko", + "description": "" + }, + "popupImageRulePrompt": { + "message": "obrazki", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "domeny zewnętrzne", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "zewnętrzne CSS/obrazki", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "zagnieżdżone skrypty", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "skrypty tej samej domeny", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "skrypty z domen zewnętrznych", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "ramki z domen zewnętrznych", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "podłączone domeny", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} z {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Wersja", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skrypt", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "ramka", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Utwórz", + "description": "English: Create" + }, + "pickerPick": { + "message": "Wybierz", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Zamknij", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Podgląd", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filtry sieciowe", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filtry kosmetyczne", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Ctrl + klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Zablokuj element…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Ukrywaj symbole zastępcze zablokowanych elementów", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Wyświetlaj liczbę zablokowanych żądań na ikonie rozszerzenia", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Nie wyświetlaj dymków podpowiedzi", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Używaj menu kontekstowego, gdzie to możliwe", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Interfejs przyjazny osobom z zaburzeniami widzenia kolorów", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Wygląd", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Motyw", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Własny kolor akcentujący", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Włącz obsługę zapisu ustawień w chmurze", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Jestem zaawansowanym użytkownikiem", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Wyłącz wstępne pobieranie (by uniknąć połączeń z zablokowanymi zapytaniami sieciowymi)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Wyłącz śledzenie kliknięć odnośników", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Zapobiegaj ujawnianiu lokalnego adresu IP poprzez interfejs WebRTC", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Działanie domyślne", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Te ustawienia mogą być zastąpione przez ustawienia danej witryny", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Wyłącz filtrowanie kosmetyczne", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokuj elementy multimedialne większe niż {{input}} KiB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokuj zdalne czcionki", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Wyłącz JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blokuj raporty CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Pokaż rzeczywistą nazwę domeny (CNAME)", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Zaawansowane", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funkcje odpowiednie tylko dla użytkowników z przygotowaniem technicznym", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "Ustawienia zaawansowane", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Ostatnie przywrócenie wykonano:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Ostatnią kopię zapasową wykonano:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "Filtry sieciowe: {{netFilterCount}} + filtry kosmetyczne: {{cosmeticFilterCount}} z:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "użytych {{used}} z {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Automatycznie aktualizuj listy filtrów", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Zaktualizuj teraz", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Wyczyść całą pamięć podręczną", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Przetwarzaj i stosuj filtry kosmetyczne", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Filtry kosmetyczne służą do ukrywania elementów stron internetowych uważanych za wizualne uciążliwe, które to nie mogą zostać zablokowane za pomocą filtrów żądań sieciowych.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignoruj ogólne filtry kosmetyczne", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Ogólne filtry kosmetyczne, to filtry które mają być zastosowane na wszystkich stronach internetowych. Włącznie tej funkcji zmniejszy obciążenie procesora i pamięci.\n\nZaleca się włączenie tej funkcji na mniej wydajnych urządzeniach.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Zawieś aktywność sieciową do czasu załadowania wszystkich list filtrów", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Listy zablokowanych hostów", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Zastosuj zmiany", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Wbudowane", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklamy", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Prywatność", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Ochrona przed złośliwym oprogramowaniem, bezpieczeństwo", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widety społecznościowe", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Powiadomienia o ciasteczkach", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Elementy irytujące", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Wielofunkcyjne", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regiony, języki", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Własne", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importuj…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Jeden adres URL listy na linię. Błędne adresy URL będą pomijane.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Nieaktualna.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "zobacz zawartość", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Zaktualizowano: {{ago}}.\nKliknij, aby wymusić aktualizację.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Aktualizowanie…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Błąd sieci uniemożliwił aktualizację zasobów.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Nie dodawaj filtrów z niezaufanych źródeł.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Włącz moje własne filtry", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Zezwól na filtry wymagające zaufania", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importuj i dołącz…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Eksportuj…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-statyczne-filtry_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Zastosuj zmiany", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Stałe reguły", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Tymczasowe reguły", + "description": "header" + }, + "rulesRevert": { + "message": "Przywróć", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Zatwierdź", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Edytuj", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Zapisz", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Odrzuć", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importuj z pliku…", + "description": "" + }, + "rulesExport": { + "message": "Eksportuj do pliku…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ublock-dynamiczne-reguly_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Lista reguł dynamicznego filtrowania.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Składnia reguły: źródło cel typ akcja (pełna dokumentacja).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sortowanie:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Typ reguły", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Źródło", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Miejsce docelowe", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Wytyczne zaufanych witryn nakazują, na których stronach uBlock Origin powinien zostać wyłączony. Jeden wpis na linię.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importuj i dołącz…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Eksportuj…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ublock-zaufane-witryny_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Zastosuj zmiany", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Typ", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domena", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "Adres URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtr", + "description": "English: Filter" + }, + "logAll": { + "message": "Wszystkie", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Bez kart", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Aktywna karta", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Przeładuj zawartość karty", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Przełącz inspektor DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Przełącz panel popup", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Rejestrator (ang.)", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Wyczyść rejestr", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pauzuj rejestrowanie (porzuć wszystkie przychodzące dane)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Wznów rejestrowanie", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Przełącz filtrowanie rejestru", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtruj zawartość rejestru", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opcje filtrowania rejestru", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Nie", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "akcje", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "zablokowane", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "dozwolone", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "zmodyfikowane", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "własna domena", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "domeny zewnętrzne", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Szczegóły", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtr", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Lista filtrów", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Reguła", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontekst", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Kontekst główny", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Lokalność", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Typ", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "Adres URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Reguła URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontekst:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Typ:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Filtr statyczny", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} żądania sieciowe {{type}}, których adres URL jest zgodny z: {{url}} {{br}}i pochodzi {{origin}}, {{importance}} filtr znajduje się na liście wyjątków.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokuj", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Zezwalaj na", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "typu „{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "każdego typu", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "z „{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "z dowolnego miejsca", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "z wyjątkiem, gdy", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "nawet, jeśli", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Filtr statyczny {{filter}} znajdujący się w:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Filtr statyczny nie został znaleziony w aktualnie włączonych listach filtrów", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Wpisy rejestru niespełniające wszystkich trzech warunków będą automatycznie porzucane:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Zachowuj wpisy z ostatnich {{input}} minut", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Zachowuj nie więcej niż {{input}} przeładowań strony na kartę", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Zachowuj nie więcej niż {{input}} wpisów na kartę", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Użyj {{input}} linie na wpis w widoku poszerzonym", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Ukryj kolumny:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Czas", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtr/reguła", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Kontekst", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Lokalność", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Lista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabela", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Bez formatowania", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Otwórz", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Utwórz nowy raport", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Znajdź podobne raporty", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentacja", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Przeczytaj dokumentację na uBlock/wiki, by nauczyć się obsługi uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Pytania oraz pomoc", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Odpowiedzi na pytania oraz inne rodzaje pomocy są udzielane na subreddicie /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problemy z filtrami/błędy w wyświetlaniu stron", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Zgłoś problemy z filtrami na poszczególnych stronach na trackerze błędów uBlockOrigin/uAssets. Wymaga konta GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Ważne: Unikaj innych podobnie działających dodatków razem z uBlock Origin, ponieważ może to powodować problemy z filtrami na poszczególnych stronach.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Porada: Upewnij się, że listy filtrów są aktualne. Rejestrator jest głównym narzędziem do diagnozowania problemów związanych z filtrami.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Zgłaszanie błędów", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Zgłoś problemy związane bezpośrednio z uBlock Origin na trackerze błędów uBlockOrigin/uBlock-issue. Wymaga konta GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informacje pomocne w rozwiązywaniu problemów", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Poniżej znajdują się informacje techniczne które mogą być użyteczne gdy wolontariusze próbują pomóc ci w rozwiązaniu problemu.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Zgłoś problem z filtrem", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Aby uniknąć obciążania wolontariuszy zduplikowanymi zgłoszeniami, sprawdź, czy problem nie został już zgłoszony.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Listy filtrów są aktualizowane codziennie. Sprawdź, czy twój problem nie został już rozwiązany w najnowszych listach filtrów.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Sprawdź, czy problem nadal występuje po odświeżeniu problematycznej strony internetowej.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adres strony internetowej:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Strona internetowa…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "— Wybierz pozycję —", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Wyświetla reklamy lub ich pozostałości", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Ma nakładki lub inne niedogodności", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Wykrywa uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Ma problemy związane z prywatnością", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Działa nieprawidłowo, gdy włączony jest uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Otwiera niepożądane karty lub okna", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Prowadzi do szkodliwego oprogramowania, phishingu", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Oznacz stronę internetową jako „NSFW” („Not Safe For Work (nieodpowiednią w pracy)”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Polityka prywatności", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Informacje o wydaniu", + "description": "" + }, + "aboutCode": { + "message": "Kod źródłowy (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Współtwórcy", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Kod źródłowy", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Tłumaczenia", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Listy filtrów", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Zewnętrzne zależności (kompatybilne z GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Własne listy filtrów uBO są dobrowolnie hostowane w następujących sieciach CDN:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Losowo wybrana sieć CDN zostanie użyta, gdy lista filtrów będzie wymagała aktualizacji.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Utwórz kopię zapasową…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-kopia-zapasowa_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Przywróć kopię z pliku…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Przywróć ustawienia domyślne…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Wszystkie twoje ustawienia zostaną zastąpione ustawieniami z kopii stworzonej {{time}}. Po zakończeniu uBlock₀ zostanie uruchomiony ponownie.\n\nPrzywrócić ustawienia z kopii zapasowej?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Danych nie można odczytać lub są nieprawidłowe", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Wszystkie twoje ustawienia zostaną usunięte i uBlock₀ zostanie ponownie uruchomiony.\n\nCzy chcesz przywrócić ustawienia domyślne?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Błąd sieci: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subskrybuj", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "minutę temu", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} min. temu", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "godzinę temu", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} godz. temu", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "wczoraj", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} dni temu", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Panel sterowania", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Pokaż rejestrator", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "wyłączony", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Strona zablokowana", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin zablokował wczytywanie następującej strony:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Powodem zablokowania jest filtr", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "bez parametrów", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Filtr znajduje się na liście:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Wstecz", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Zamknij to okno", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Nie ostrzegaj mnie ponownie o tej stronie", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Wyłącz rygorystyczne blokowanie dla {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Tymczasowo", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Na stałe", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Kontynuuj", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Zablokowana strona chce przekierować na inną witrynę. Jeśli zdecydujesz się kontynuować, przejdziesz bezpośrednio do: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Powód:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "złośliwa", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "śledząca", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "podejrzana", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Eksportuj do chmury", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importuj z chmury", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importuj z chmury i połącz z aktualnymi ustawieniami", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Nazwa urządzenia:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Uwaga! Te ustawienia zmieniasz na własne ryzyko.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Wyślij", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Zastosuj zmiany", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Przywróć", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bajty", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Zablokuj element w ramce…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subskrybuj listę filtrów…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Tymczasowo zezwalaj na wyświetlanie dużych elementów multimedialnych", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Pokaż źródło…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Wprowadź skrót", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Przełącz przewijanie synchroniczne", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopiuj do schowka", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Zaznacz wszystko", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Włącz/wyłącz filtrowanie kosmetyczne", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Włącz/wyłącz JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Rozluźnij tryb blokowania", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Użycie pamięci dyskowej: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Kliknij, aby załadować", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Błędy: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Podczas uruchamiania przeglądarki nie można prawidłowo filtrować.\nAby zapewnić prawidłowe filtrowanie, wczytaj ponownie stronę.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Ten wpis musi być ostatni", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/pt_BR/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/pt_BR/messages.json new file mode 100644 index 00000000..f9887e5d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/pt_BR/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Finalmente, um bloqueador eficiente. Com baixo uso de CPU e memória.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Painel", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Aviso! Você tem mudanças não salvas", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Ficar aqui", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorar", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Configurações", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Listas de filtros", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Meus filtros", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Minhas regras", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Sites confiáveis", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Atalhos", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Coletor", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Sobre", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Suporte", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Visualizador de recursos", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Configurações avançadas", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Clique: desativa/ativa o uBlock₀ neste site.\n\nCtrl+clique: desativa o uBlock₀ só nesta página.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Clique para desativar o uBlock₀ neste site.\n\nCtrl+clique para desativar o uBlock₀ só nesta página.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Clique para ativar o uBlock₀ neste site.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "requisições bloqueadas", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "nesta página", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "desde a instalação", + "description": "English: since install" + }, + "popupOr": { + "message": "ou", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Bloqueios nesta página", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Bloqueios desde a instalação", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domínios conectados", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Abrir painel", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Entrar no modo de remoção de elementos", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Entrar no modo de seleção de elemento", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Abrir o coletor", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Reportar um problema com este site", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Alternar o bloqueio de todos os pop-ups neste site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Clique pra bloquear todos os pop-ups neste site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Clique pra não mais bloquear todos os pop-ups neste site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Habilitar o bloqueio de grandes elementos de mídia neste site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Clique pra bloquear grandes elementos de mídia neste site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Clique pra não mais bloquear grandes elementos de mídia neste site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Habilitar a filtragem cosmética neste site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Clique pra desativar a filtragem cosmética neste site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Clique pra ativar a filtragem cosmética neste site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Habilitar o bloqueio de fontes remotas neste site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Clique pra bloquear fontes remotas neste site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Clique para deixar de bloquear fontes remotas neste site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Clique para desativar o JavaScript neste site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Clique para deixar de desativar o JavaScript neste site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Janelas pop-up", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Grandes elementos de mídia", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filtragem cosmética", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Fontes remotas", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Mais", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Menos", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Regras globais: esta coluna é para as regras as quais se aplicam a todos os sites.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Regras locais: esta coluna é para regras as quais se aplicam só ao site atual.\nRegras locais substituem regras globais.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Clique pra tornar suas mudanças permanentes.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Clique pra reverter suas mudanças.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "todos", + "description": "" + }, + "popupImageRulePrompt": { + "message": "imagens", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "de terceiros", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/imagens de terceiros", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "scripts inline", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "scripts primários", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "scripts de terceiros", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "frames de terceiros", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domínios conectados", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} de {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versão", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Criar", + "description": "English: Create" + }, + "pickerPick": { + "message": "Escolher", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Sair", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Pré-visualizar", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filtros de rede", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filtros cosméticos", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Clique, Ctrl-clique", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Bloquear elemento...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Ocultar os espaços reservados dos elementos bloqueados", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Mostrar o número de requisições bloqueadas no ícone", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Desativar dicas das ferramentas", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Fazer uso do menu de contexto aonde apropriado", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Cores amigáveis para daltônicos", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Aparência", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Cor de destaque personalizada", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Ativar suporte de armazenamento na nuvem", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Eu sou um usuário avançado", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Desativar pré-solicitações (para impedir qualquer solicitação de rede a recursos bloqueados)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Desativar auditoria de hyperlinks", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Impedir o WebRTC de vazar endereços de IP locais", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Comportamento padrão", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Estes comportamentos padrão podem ser substituídos numa base por site", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Desativar filtragem cosmética", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Bloquear elementos de mídia maiores do que {{input}} KBs", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Bloquear fontes remotas", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Desativar JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Bloquear relatórios de CSPs", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Revelar nomes canônicos", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avançado", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Recursos adequados só pra usuários técnicos.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "configurações avançadas", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Última restauração:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Último backup:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} filtros de rede + {{cosmeticFilterCount}} filtros cosméticos de:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} usados dos {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Auto-atualizar as listas de filtros", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Atualizar agora", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Limpar todos os caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analisar e impor filtros cosméticos", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Os filtros cosméticos servem para ocultar elementos em uma página os quais são considerados um incômodo visual e os quais não podem ser bloqueados pelos motores de filtragem baseadas em solicitações de rede.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorar filtros cosméticos genéricos", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Os filtros cosméticos genéricos são aqueles filtros cosméticos os quais são destinados a serem aplicados em todos os sites. Ativar esta opção eliminará a sobrecarga da memória e da CPU adicionada as páginas como um resultado de lidar com filtros cosméticos genéricos.\n\nÉ recomendado ativar esta opção em dispositivos mais lentos.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspender atividade da rede até que todas as listas de filtros estejam carregadas", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Listas de hospedeiros bloqueados", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Aplicar mudanças", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Embutidos", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Anúncios", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privacidade", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Proteção contra malware, segurança", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widgets sociais", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Avisos dos cookies", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Aborrecimentos", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multi-propósito", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regiões, idiomas", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Personalizar", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importar...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Uma URL por linha. As URLs inválidas serão ignoradas silenciosamente.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Desatualizada.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "visualizar conteúdo", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Última atualização: {{ago}}.\nClique para forçar uma atualização.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Atualizando...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Um erro de rede impediu o recurso de ser atualizado.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Não adicione filtros de fontes não confiáveis.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Ativar meus filtros personalizados", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Permitir os filtros personalizados que requerem confiança", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importar e anexar…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exportar", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "meus-filtros-estáticos-do-ublock_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Aplicar mudanças", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Regras permanentes", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Regras temporárias", + "description": "header" + }, + "rulesRevert": { + "message": "Reverter", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Confirmar", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Editar", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Salvar", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Descartar", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importar do arquivo...", + "description": "" + }, + "rulesExport": { + "message": "Exportar para um arquivo…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "minhas-regras-dinâmicas-do-ublock_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Lista das suas regras de filtragem dinâmica.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Regras de sintaxe: fonte destino tipo ação (documentação completa).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Organizar:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Tipo de regra", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Fonte", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destino", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "As diretivas dos sites confiáveis ditam em quais páginas o uBlock Origin deve ser desativado. Uma entrada por linha. ", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importar e anexar…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exportar", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "meus-sites-confiaveis-do-ublock_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Aplicar mudanças", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tipo", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domínio", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtro", + "description": "English: Filter" + }, + "logAll": { + "message": "Todos", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Sem abas", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Aba atual", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Recarregar o conteúdo da aba", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Habilitar o inspetor de DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Habilitar o painel pop-up", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "Wiki do uBlock Origin: O coletor", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Limpar coletor", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pausar coletor (descartar todos os dados futuros)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Despausar coletor", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Habilitar filtragem do coletor", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrar conteúdo do coletor", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opções de filtragem do coletor", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Não", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "importante", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "bloqueado", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "permitido", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modificado", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "primário", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "de terceiros", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detalhes", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtro", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Lista de filtros", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regra", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Contexto", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Contexto raiz", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Originário/de terceiros", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tipo", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Regra da URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Contexto:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tipo:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Filtro estático", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} solicitações de rede do tipo {{type}} {{br}}onde o endereço da URL corresponde a {{url}} {{br}} e que origina de {{origin}},{{br}}{{importance}} há um filtro de exceção correspondente.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Bloquear", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Permitir", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "tipo “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "qualquer tipo", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "de “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "de qualquer lugar", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "exceto quando", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "mesmo se", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Filtro estático {{filter}} achado em:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "O filtro estático não pôde ser achado em nenhuma das listas de filtros ativadas atualmente", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Os registros que não preencherem todas as três condições abaixo serão descartados automaticamente:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Preservar entradas dos últimos {{input}} minutos", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preservar no máximo {{input}} carregamentos de página por aba", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preservar no máximo {{input}} registros por aba", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Usar {{input}} linhas por registro no modo expandido verticalmente", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Ocultar colunas:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Hora", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtro/regra", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Contexto", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Originário/de terceiros", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Lista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabela", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Simples", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Formatação", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Abrir", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Criar um novo relatório no GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Achar relatórios similares no GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentação", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Leia a documentação em uBlock/wiki para saber sobre todos os recursos do uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Perguntas e suporte", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Respostas a perguntas e outros tipos de suporte de ajuda são fornecidas no subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problemas com filtros/o site não funciona", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Reporte problemas com os filtros em sites específicos no rastreador de problemas do uBlockOrigin/uAssets. Uma conta do GitHub é necessária.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Importante: Evite usar outros bloqueadores junto com o uBlock Origin pois isto pode causar problemas com filtros em sites específicos.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Dicas: Certifique-se que suas listas de filtros estão atualizadas. O coletor é a ferramenta principal para diagnosticar problemas relacionados aos filtros.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Relatório de erro", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Reporte problemas com o próprio uBlock Origin no rastreador de problemas do uBlockOrigin/uBlock-issue. Uma conta do GitHub é necessária.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informações para solução de problemas", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Abaixo estão informações técnicas que poderiam ser úteis quando voluntários estão tentando ajudar você a resolver um problema.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Reportar um problema com o filtro", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Para evitar sobrecarregar os voluntários com relatórios duplicados por favor verifique se o problema já não foi reportado. Observação: clicar no botão fará com que a origem da página seja enviada ao GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "As listas de filtros são atualizadas diariamente. Certifique-se que seu problema ainda não foi abordado nas listas de filtros mais recentes.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verifique se o problema ainda existe após recarregar a página da Web problemática.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Endereço da página da web:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "A página da web...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "— Selecione um tipo —", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Mostra anúncios ou restos de anúncios", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Tem sobreposições ou outras perturbações", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detecta o uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Tem problemas relacionados a privacidade", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Não funciona direito quando o uBlock Origin está ativado", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Abre abas ou janelas indesejadas", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leva a badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Rotular a página da web como \"NSFW\" (\"Não é Seguro no Trabalho\")", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Política de privacidade", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Changelog", + "description": "" + }, + "aboutCode": { + "message": "Código fonte (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Colaboradores", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Código fonte", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Traduções", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Listas de filtros", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Dependências externas (compatíveis com GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "As próprias listas de filtros do uBO estão hospedadas gratuitamente nas seguintes CDNs: ", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Uma CDN é escolhida automaticamente quando uma lista de filtros precisa ser atualizada.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Fazer backup para arquivo", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "meu-backup-do-ublock_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restaurar do arquivo...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Reconfigurar tudo para o padrão…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Todas as suas configurações serão sobrescritas usando dados do backup salvos em {{time}}, e o uBlock₀ reiniciará. \n\nSobrescrever todas as configurações existentes usando os dados do backup?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Os dados não puderam ser lidos ou são inválidos", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Todas as suas configurações serão removidas, e o uBlock₀ reiniciará.\n\nReconfigurar o uBlock₀ para as configurações de fábrica?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Erro da rede: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subscrever", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "um minuto atrás", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minutos atrás", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "uma hora atrás", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} horas atrás", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "um dia atrás", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} dias atrás", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Mostrar Painel", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Mostrar coletor", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "desligado", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Página bloqueada", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "O uBlock Origin impediu a seguinte página de carregar:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Por causa do seguinte filtro:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "sem parâmetros", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Achado em:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Voltar", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Fechar esta janela", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Não me avisar de novo sobre este site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Desativar o bloqueio restrito para {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporariamente", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanentemente", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Prosseguir", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "A página bloqueada deseja redirecionar para outro site. Se você escolher continuar, você navegará diretamente para: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Motivo:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicioso", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Rastreador", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Má reputação", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exportar pro armazenamento na nuvem", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importar do armazenamento na nuvem", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importar do armazenamento na nuvem e unir com as configurações atuais", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Este nome de dispositivo:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Aviso! Mude estas configurações avançadas por sua própria conta e risco.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Submeter", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Aplicar mudanças", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Reverter", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Bloquear elemento no frame...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Inscrever-se na lista de filtros...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Permitir temporariamente grandes elementos de mídia", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Visualizar código-fonte…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Digite um atalho", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Alternar bloqueio de rolagem", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copiar pra área de transferência", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Selecionar tudo", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Alternar filtragem cosmética", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Habilitar JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relaxar modo de bloqueio", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Armazenamento usado: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KBs", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MBs", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GBs", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Clique pra carregar", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Erros: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Não foi possível filtrar apropriadamente na inicialização do navegador. Recarregue a página para garantir a filtragem apropriada.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Esta entrada deve ser a última", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/pt_PT/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/pt_PT/messages.json new file mode 100644 index 00000000..f384893d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/pt_PT/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Finalmente, um bloqueador eficiente. Leve para a CPU e a memória.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Painel de controlo", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Atenção! Tem alterações não guardadas", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Permanecer aqui", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorar", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Definições", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Listas de filtros", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Os meus filtros", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "As minhas regras", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Sites fidedignos", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Atalhos", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Registo", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Acerca", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Suporte", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Visualizador de recursos", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Definições avançadas", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Clique: desativar/ativar o uBlock₀ para este site.\n\nCtrl+clique: desativar o uBlock₀ apenas nesta página.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Clique para desativar o uBlock₀ para este site.\n\nCtrl+clique para desativar o uBlock₀ apenas nesta página.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Clique para ativar o uBlock₀ para este site.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "pedidos bloqueados", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "nesta página", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "desde a instalação", + "description": "English: since install" + }, + "popupOr": { + "message": "ou", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Bloqueado(s) nesta página", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Bloqueado(s) desde a instalação", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domínios ligados", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Abrir o painel de controlo", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Entrar no modo de remoção rápida de elemento", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Entrar no modo de seleção de elemento", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Abrir o registo", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Relatar um problema neste website", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Alternar o bloqueio de todos os popups para este site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Clique para bloquear todos os popups neste site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Clique para deixar de bloquear todos os popups neste site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Alternar o bloqueio de elementos multimédia grandes para este site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Clique para bloquear elementos multimédia grandes neste site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Clique para deixar de bloquear elementos multimédia grandes neste site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Alternar a filtragem cosmética para este site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Clique para desativar a filtragem cosmética neste site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Clique para ativar a filtragem cosmética neste site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Alternar o bloqueio de tipos de letra remotos para este site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Clique para bloquear os tipos de letra remotos neste site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Clique para deixar de bloquear os tipos de letra remotos neste site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Clique para desativar JavaScript neste site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Clique para deixar de desativar JavaScript neste site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Janelas pop-up", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Elementos multimédia grandes", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filtragem cosmética", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Tipos de letra remotos", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Mais", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Menos", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Regras globais: esta coluna é para as regras que se aplicam a todos os sites.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Regras locais: esta coluna é para as regras que se aplicam apenas a este site.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Clique para tornar as suas alterações permanentes.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Clique para reverter as suas alterações.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "tudo", + "description": "" + }, + "popupImageRulePrompt": { + "message": "imagens", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "terceiros", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/imagens de terceiros", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "scripts inline", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "scripts primários", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "scripts de terceiros", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "frames de terceiros", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domínios ligados", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} de {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versão", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Criar", + "description": "English: Create" + }, + "pickerPick": { + "message": "Escolher", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Sair", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Pré-visualizar", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filtros de rede", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filtros cosméticos", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Clique, Ctrl-clique", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Bloquear elemento…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Ocultar espaços ocupados por elementos bloqueados", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Mostrar o número de pedidos bloqueados no ícone", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Desativar dicas", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Fazer uso do menu de contexto onde apropriado", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Cores amigáveis para daltónicos", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Aparência", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Cor de destaque personalizada", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Ativar suporte para armazenamento na nuvem", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Sou um utilizador avançado", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Desativar pré-obtenção (para impedir qualquer ligação para pedidos de rede bloqueados)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Desativar auditoria de hiperligações", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Impedir o WebRTC de vazar endereços IP locais", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Comportamento predefinido", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Estes comportamentos predefinidos podem ser substituídos numa base por site", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Desativar filtragem cosmética", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Bloquear elementos multimédia maiores do que {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Bloquear tipos de letra remotos", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Desativar JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Bloquear relatórios CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Desvendar nomes canónicos", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avançadas", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funcionalidades adequadas apenas para utilizadores avançados", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "definições avançadas", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Último restauro:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Última cópia de segurança:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} filtros de rede + {{cosmeticFilterCount}} filtros cosméticos a partir de:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} utilizados de {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Atualizar automaticamente listas de filtros", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Atualizar agora", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Limpar todas as caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analisar e aplicar filtros cosméticos", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Os filtros cosméticos servem para ocultar elementos numa página web que sejam considerados incómodo visual e que não podem ser bloqueados pelo motor de filtragem baseado em pedidos de rede.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorar filtros cosméticos genéricos", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Os filtros cosméticos genéricos são destinados para aplicação em todos os sites. Se ativar esta opção irá eliminar o excesso de utilização da memória e CPU, como resultado da manipulação dos filtros cosméticos genéricos.\n\nRecomendamos a ativação desta opção em dispositivos mais fracos.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspender a atividade da rede até que todas as listas de filtros sejam carregadas", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Listas de servidores bloqueados", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Aplicar alterações", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Integrados", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Anúncios", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privacidade", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Proteção contra malware, segurança", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widgets sociais", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Avisos de cookies", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Inconveniências", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multifunções", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regiões e idiomas", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Personalizados", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importar…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Um URL por linha. Os URLs inválidos serão ignorados silenciosamente.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Desatualizada.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "ver conteúdo", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Última atualização: {{ago}}.\nClique para forçar uma atualização.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "A atualizar…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Um erro de rede impediu que o recurso fosse atualizado.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Não adicione filtros de fontes não fidedignas.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Ativar os meus filtros personalizados", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Permitir filtros personalizados que requeiram confiança", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importar e anexar…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exportar…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-custom-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Aplicar alterações", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Regras permanentes", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Regras temporárias", + "description": "header" + }, + "rulesRevert": { + "message": "Reverter", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Aplicar", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Editar", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Guardar", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Descartar", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importar a partir de ficheiro…", + "description": "" + }, + "rulesExport": { + "message": "Exportar para ficheiro…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Lista das suas regras de filtragem dinâmica.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Regra de sintaxe: origem destino tipo ação (documentação completa).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Ordenar:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Tipo de regra", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Origem", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destino", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "As diretivas de sites fidedignos determinam em que páginas web o uBlock Origin deve ser desativado. Uma entrada por linha.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importar e anexar…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exportar…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Aplicar alterações", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tipo", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domínio", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtro", + "description": "English: Filter" + }, + "logAll": { + "message": "Todos", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Sem separador", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Separador atual", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Recarregar o conteúdo do separador", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Alternar o inspetor DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Alternar o painel de popup", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: O registo", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Limpar registo", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pausar registo (descartar todos os dados a receber)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Retomar registo", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Alternar filtragem do registo", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrar conteúdo do registo", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opções de filtragem do registo", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Não", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "bloqueado", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "permitido", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modificado", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "primário", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "terceiro", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detalhes", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtro", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Lista de filtros", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regra", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Contexto", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Contexto raiz", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Tipo de relação", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tipo", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Regra do URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Contexto:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tipo:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Filtro estático", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} pedidos de rede de {{type}} {{br}}cujo endereço URL corresponde a {{url}} {{br}}e que origina {{origin}},{{br}}{{importance}} existe um filtro de exceção correspondente.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Bloquear", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Permitir", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "tipo \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "qualquer tipo", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "de \"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "de qualquer lugar", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "exceto quando", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "mesmo se", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Filtro estático {{filter}} encontrado em:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "O filtro estático não pôde ser encontrado em quaisquer das listas de filtros ativadas atualmente", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Entradas do registo que não preenchem todas as três condições abaixo serão automaticamente descartadas:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Preservar entradas dos últimos {{input}} minutos", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preservar no máximo {{input}} carregamentos de página por separador", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preservar no máximo {{input}} entradas por separador", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Utilizar {{input}} linhas por entrada no modo verticalmente expandido", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Ocultar colunas:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Hora", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtro/regra", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Contexto", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Tipo de relação", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Lista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabela", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Sem formatação", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Abrir", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Criar novo relatório no GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Encontrar relatórios semelhantes no GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentação", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Leia a documentação em uBlock/wiki para saber mais acerca de todas as funcionalidades do uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Perguntas e suporte", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "As respostas às perguntas e outros tipos de ajuda são fornecidas no subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problemas de filtros/website está com falhas", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Relate problemas de filtros com websites específicos para o controlador de problemas uBlockOrigin/uAssets. Requer uma conta GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Importante: evite a utilização de outros bloqueadores com propósitos semelhantes juntamente com o uBlock Origin, dado que isto pode causar problemas com filtros em websites específicos.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Dicas: certifique-se de que as suas listas de filtros estão atualizadas. O registo é a ferramenta principal para diagnosticar problemas relacionados com filtros.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Relatório de erros", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Relate problemas com o próprio uBlock Origin para o controlador de problemas uBlockOrigin/uBlock-issue. Requer uma conta GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informação sobre resolução de problemas", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Abaixo encontra-se informação técnica que pode ser útil quando voluntários estão a tentar ajudar-lhe a resolver um problema.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Relatar um problema de filtro", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Para evitar sobrecarregar os voluntários com relatórios duplicados, verifique se o problema ainda não foi relatado. Nota: clicar no botão fará com que a origem da página seja enviada para o GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "As listas de filtros são atualizadas diariamente. Certifique-se de que o seu problema ainda não foi abordado nas listas de filtros mais recentes.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verifique se o problema ainda existe após o recarregamento da página web problemática.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Endereço da página web:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "A página web…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Escolha uma entrada --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Mostra anúncios ou restos de anúncios", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Tem sobreposições ou outros incómodos", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Deteta o uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Tem problemas relacionados com a privacidade", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Falha quando o uBlock Origin está ativado", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Abre separadores ou janelas indesejáveis", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leva a badware e phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Rotular a página web como “NSFW” (“Não seguro para o trabalho”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Política de privacidade", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Registo de alterações", + "description": "" + }, + "aboutCode": { + "message": "Código fonte (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Contribuidores", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Código fonte", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Traduções", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Listas de filtros", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Dependências externas (compatíveis com GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "As listas de filtros do uBO estão livremente hospedadas nas seguintes CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Uma CDN escolhida aleatoriamente é utilizada quando uma lista de filtros precisar de ser atualizada.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Copiar para ficheiro…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restaurar a partir de ficheiro…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Restaurar predefinições…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Todas as suas definições serão substituídas utilizando os dados da cópia de segurança de {{time}}, e o uBlock₀ irá reiniciar.\n\nSubstituir todas as definições existentes utilizando os dados da cópia de segurança?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Os dados não puderam ser lidos ou são inválidos", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Todas as suas definições serão removidas e o uBlock₀ será reiniciado.\n\nRestaurar predefinições do uBlock₀?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Erro de rede: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subscrever", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "há um minuto", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "há {{value}} minutos", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "há uma hora", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "há {{value}} horas", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "há um dia", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "há {{value}} dias", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Mostrar painel de controlo", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Mostrar registo", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "desativado", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Página bloqueada", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "O uBlock Origin impediu que a seguinte página fosse carregada:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Devido ao seguinte filtro:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "sem parâmetros", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Encontrado em:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Retroceder", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Fechar esta janela", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Não me avisar novamente acerca deste site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Desativar bloqueio estrito para {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporariamente", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanentemente", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceder", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "A página bloqueada pretende redirecionar para outro site. Se optar por proceder, navegará diretamente para: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Motivo:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicioso", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Rastreador", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Má reputação", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exportar para a nuvem", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importar a partir da nuvem", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importar a partir da nuvem e juntar às definições atuais", + "description": "tooltip" + }, + "cloudNoData": { + "message": "... ...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Nome deste dispositivo:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Atenção! Altere estas definições avançadas por sua conta e risco.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Submeter", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Aplicar alterações", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Reverter", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Bloquear elemento no frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscrever à lista de filtros…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Permitir temporariamente elementos multimédia grandes", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Ver código fonte…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Digitar um atalho", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Alternar deslocamento bloqueado", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copiar para a área de transferência", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Selecionar tudo", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Alternar filtragem cosmética", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Alternar JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relaxar modo de bloqueio", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Armazenamento utilizado: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Clique para carregar", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Erros: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Não foi possível filtrar adequadamente no arranque do navegador. Recarregue a página para assegurar uma filtragem adequada.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Esta entrada deve ser a última", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/ro/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/ro/messages.json new file mode 100644 index 00000000..451716a8 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/ro/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "În sfârșit, un blocant eficient. Are un impact mic asupra procesorului și memoriei.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Panou de control", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Atenție! Ai modificări nesalvate", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Așteaptă", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignoră", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Opțiuni", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Liste de filtre", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Filtrele mele", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Regulile mele", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Situri de încredere", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Comenzi rapide", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Jurnal", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Despre", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Asistență", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Vizualizator de resurse", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Setări avansate", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Clic: dezactivează/activează uBlock₀ pentru acest sait.\n\nCtrl+clic: dezactivează uBlock₀ doar pe această pagină.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Clic ca să dezactivezi uBlock₀ pe acest site.\n\nCtrl+clic ca să dezactivezi uBlock₀ doar pe această pagină.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Clic pentru a activa uBlock₀ pe acest site.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "cereri blocate", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "pe această pagină", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} sau {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "de la instalare", + "description": "English: since install" + }, + "popupOr": { + "message": "sau", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blocate pe această pagină", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blocate de la instalare", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domenii conectate", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Deschide panoul de control", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Accesați modul de eliminare elemente", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Modul alege element", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Deschide jurnalul", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Raportează o eroare cu acest sit", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Comută blocarea tuturor popup-urilor pentru acest sait", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Clic pentru a bloca toate popup-urile pe acest site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Clic pentru a nu mai bloca toate popup-urile pe acest site", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Modifică modul de blocare a elementelor media de mari dimensiuni pentru acest sait", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Clic pentru a bloca elementele media de mari dimensiuni pe acest site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Clic pentru a nu mai bloca elementele media de mari dimensiuni pe acest site", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Comută filtrarea vizuală pentru acest sait", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Clic pentru a dezactiva filtrele vizuale pe acest site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Clic pentru a activa filtrele vizuale pe acest site", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Comută blocarea fonturilor externe pentru acest sait", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Clic pentru a bloca fonturile externe pe acest site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Clic pentru a nu mai bloca fonturile externe pe acest site", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Apasă pentru a dezactiva JavaScript pe acest site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Apasă pentru a nu mai dezactiva JavaScript pe acest site", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Ferestre suprapuse", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Elemente media mari", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filtre vizuale", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Fonturi externe", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Mai multe", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mai puțin", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Reguli globale: această coloană este pentru regulile care se aplică tuturor site-urilor.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Reguli locale: această coloană este pentru regulile care se aplică doar site-ului curent.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Apasă pentru a face modificările permanente.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Apasă pentru a renunța la modificări.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "tot", + "description": "" + }, + "popupImageRulePrompt": { + "message": "imagini", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "terțe", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/imagini terțe", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "scripturi înglobate", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "scripturi din saitul primar", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "scripturi din saituri terțe", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "cadre din saituri terțe", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domenii conectate", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} din {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versiune", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "cadru", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Creează", + "description": "English: Create" + }, + "pickerPick": { + "message": "Alege", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Ieșire", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Previzualizare", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filtre de rețea", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filtre vizuale", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Clic, Ctrl-clic", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blochează elementul…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Ascunde substituenții elementelor blocate", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Arată numărul cererilor blocate pe pictogramă", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Dezactivează indiciile", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Folosește meniul contextual unde este cazul", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Accesibil pentru daltonism", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Aspect", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Aspect", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Culoare de accentuare personalizată", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Activează suportul pentru stocare în cloud", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Sunt un utilizator avansat", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Dezactivează preluarea în avans (pentru a preveni orice conexiune ce s-ar încadra în cereri de rețea blocate)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Dezactivează auditarea hiperlinkurilor", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Previne dezvăluirea adreselor IP locale prin intermediul protocolului WebRTC", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Comportament implicit", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Aceste comportamente implicite pot fi suprascrise pentru fiecare sait în parte", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Dezactivează filtrele cosmetice", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blochează elementele media mai mari de {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blochează fonturile de la distanță", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Dezactivare JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blochează rapoartele CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Dezvăluie numele canonice", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avansate", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Proprietăți potrivite pentru utilizatorii avansați", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "setări avansate", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Ultima restaurare:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Ultima copie de siguranță:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} filtre rețea + {{cosmeticFilterCount}} filtre vizuale din:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} folosite din {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Actualizare automată a listelor de filtre.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Actualizează acum", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Golește tot din memoria tampon", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Citește și aplică filtrele vizuale.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Filtrele cosmetice servesc la ascunderea elementelor dintr-o pagină web care sunt considerate a fi deranjante din punct de vedere vizual și care nu pot fi blocate de motoarele de filtrare bazate pe solicitări de rețea.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignoră filtrele cosmetice generice", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

FIltrele cosmetice generice sunt acelea care se aplică tuturor site-urilor.

Deși sunt folosite eficient de uBlock₀, filtrele cosmetice generice pot contribui semnificativ la creșterea cantității de memorie și a utilizării procesorului pe anumite pagini, în special cele de mari dimensiuni și care sunt încărcate pentru mult timp.

Activarea acestei opțiuni va elimina încărcarea suplimentară a memoriei și a procesorului rezultată în urma folosirii filtrelor cosmetice generice, și, de asemenea, va micșora impactul uBlock₀ asupra sistemului.

Se recomandă activarea acestei opțiuni pe dispozitivele mai puțin performante.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspendă activitatea în rețea până când se încarcă toate listele cu filtre", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lista adreselor blocate", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Aplică modificările", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Încorporate", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reclame", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Intimitate", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Domenii malițioase, securitate", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Widget-uri sociale", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Notificări privind cookie-urile", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Neplăceri", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multifuncționale", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regiuni, limbi", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Personalizare", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importă…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "O adresă pe linie. Adresele nevalide vor fi ignorate fără avertizare.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "învechit", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "vezi conținut", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Ultima actualizare: {{ago}}.\nClic pentru a forța o actualizare.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Se actualizează…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "O eroare de rețea a împiedicat actualizarea resursei.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Nu adăuga filtre din surse nesigure.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Activați filtrele mele personalizate", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Permiteți filtre personalizate care necesită încredere", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importă și adaugă", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exportă", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "filtrele-mele-statice-ublock_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Aplică modificările", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Reguli permanente", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Reguli temporare", + "description": "header" + }, + "rulesRevert": { + "message": "Înlătură", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Aplică", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Modifică", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Salvează", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Elimină", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importă din fișier…", + "description": "" + }, + "rulesExport": { + "message": "Exportă în fișier…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "regulile-mele-dinamice-ublock_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Lista regulilor tale de filtrare dinamică.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Sintaxa pentru regulă: sursă destinație tip acțiune (documentație).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sortare:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Tipul regulei", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Sursa", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destinație", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Directivele privind siturile de încredere stabilesc pe ce pagini web trebuie dezactivat uBlock Origin. O intrare pe linie.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importă și adaugă…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exportă…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "situri-de-încredere-ublock_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Aplică modificările", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tip", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domeniu", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtru", + "description": "English: Filter" + }, + "logAll": { + "message": "Tot", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Fără tab-uri", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Fila curentă", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Reîncarcă conținutul tab-ului", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Comută inspector DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Comută panou pop-up", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Jurnal", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Şterge logger-ul", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Oprește logger-ul(ignoră tot traficul primit)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Pornește logger-ul", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Comută filtrarea jurnalierului", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrează conținutul jurnalierului", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opțiunile de filtrare ale jurnalierului", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Nu", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "activ", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blocat", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "permis", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modificat", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "primare", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "terțe", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detalii", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtru", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Lista filtrelor", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regulă", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Context", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Context de bază", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Apartenență", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tip", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Regulă URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Context:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tip:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Filtru static", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} cererile de rețea de {{type}} {{br}}când adresa URL corespunde cu {{url}} {{br}}și care își au originea {{origin}},{{br}}{{importance}} există un filtru corespondent de excepție.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blochează", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Permite", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "tip “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "orice tip", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "de la “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "de oriunde", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "exceptând când", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "chiar dacă", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Filtrul static {{filter}} găsit în:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Filtrul static {{filter}} nu se găsește în niciuna dintre listele de filtre activate", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Intrările în registrul de logare care nu îndeplinesc toate cele trei condiții de mai jos vor fi automat eliminate.", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Păstrează intrările din ultimele {{input}} minute", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Păstrează cel mult {{input}} încărcări de pagină pe filă", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Păstrează cel mult {{input}} intrări pe filă", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Folosește {{input}} linii pentru intrările în modul vertical expandat", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Ascunde coloanele:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Timp", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtru/regulă", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Apartenență", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Listă", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabel", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Simplu", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Marcaj", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Deschide", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Creează o nouă sesizare pe GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Găsește sesizări similare pe GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentație", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Citește documentația de la uBlock/wiki pentru a învăța totul despre caracteristicile uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Întrebări și ajutor", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Răspunsuri la întrebări și alte informații de ajutor sunt disponibile pe subreddit-ul /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Probleme cu filtrele/siturile defecte", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Raportează probleme cu filtrele pe anumite situri în uBlockOrigin/uAssets centralizatorul de probleme. Necesită un cont GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": ">Important: Evită să folosești alte extensii cu același scop ca uBlock Origin, deoarece pot exista probleme cu filtrele pe anumite situri.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Sfat: Asigurați-vă că filtrele sunt actualizate. Registrul cu înregistrări este unealta principală pentru diagnosticarea problemelor cu filtrele.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Raportare defecte", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Raportați probleme cu uBlock Origin în uBlockOrigin/uBlock-issuecentralizatorul de probleme. Necesită un cont GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informații pentru depanare", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Mai jos sunt informații care îi pot ajuta pe voluntarii care încearcă să vă ajute în rezolvarea problemelor.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Raportează o problemăcu filtrele", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Pentru a evita suprasolicitarea voluntarilor, vă rugăm să verificați dacă această problemă nu a fost deja raportată. Megjegyzés: a gombra kattintva az oldal forrása elküldésre kerül a GitHubnak.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Listele cu filtre sunt actualizate zilnic. Verificați că problema dumneavoastră nu a fost rezolvată în cele mai recente liste cu filtre.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verificați că problema există și după reîncărcarea paginii.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adresa paginii web:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Pagina web…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Alege o intrare --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Arată reclame sau resturi de reclame", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Are acoperiri sau alte neplăceri", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detectează uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Are probleme privind confidențialitatea", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Nu mai funcționează când uBlock Origin este activat", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Deschide file sau ferestre nedorite", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Duce la programe dăunătoare, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Etichetează pagina ca fiind „NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Politică de confidențialitate", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Jurnal de modificări", + "description": "" + }, + "aboutCode": { + "message": "Cod sursă (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Contribuitori", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Cod sursă", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Traduceri", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Liste de filtre", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Dependențe externe (compatibile GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "FIltrele proprii uBO sunt găzduite gratuit de următoarele rețele de distribuție de conținut:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Un CDN ales aleator va fi folosit când listele de filtre vor trebui actualizate", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Copie de rezervă…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "salvarea-mea-ublock_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restabilește din fișier…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Restabilește reglările inițiale…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Toate opțiunile vor fi suprascrise cu datele din {{time}} și uBlock₀ va fi repornit.\n\nDorești să suprascrii toate opțiunile folosind datele salvate?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Datele nu au putut fi citite sau sunt nevalide", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Toate configurările tale vor fi eliminate și uBlock₀ va reporni.\n\nRestaurează uBlock₀ la configurările din fabrică?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Eroare de rețea: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Abonează-te", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "acum un minut", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "acum {{value}} minute", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "acum o oră", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "acum {{value}} ore", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "în urmă cu o zi", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "în urmă cu {{value}} zile", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Deschide panoul de control", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Arată jurnalul", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "dezactivat", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Pagină blocată", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin a prevenit încărcarea acestei pagini:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Din cauza următorului filtru", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "fără parametri", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Găsit în:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Înapoi", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Închide această fereastră", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Nu mă avertiza din nou despre acest sit", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Dezactivează blocarea strictă pentru {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporar", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanent", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Continuă", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Pagina blocată dorește să redirecționeze către un alt site. Dacă alegeți să continuați, veți naviga direct către: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Motiv:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malițios", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Urmăritor", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Reputație slaba", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exportă către stocarea în cloud", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importă din stocarea în cloud", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importă din stocarea în cloud și combină cu setările curente", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Numele acestui dispozitiv:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Atenție: schimbă aceste setări avansate pe propriul risc.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Trimite", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Aplică modificările", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Înlătură", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "octeți", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blochează un element în cadru…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Înscrie-te la lista de filtre…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Permite temporar elementele media mari", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Vezi sursa…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Tastează o comandă rapidă", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Activează/Dezactivează Blocarea răsfoirii", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Copiază în clipboard", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Alege tot", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Comută filtrele cosmetice", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Comută JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relaxați modul de blocare", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Spațiu de stocare utilizat: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Apasă pentru a încărca", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Erori: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Nu s-a putut filtra corespunzător in timpul lansării browser-ului. Reîncărcați pagina pentru a asigura o filtrare corectă.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Aceasta intrare trebuie sa fie ultima", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/ru/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/ru/messages.json new file mode 100644 index 00000000..583753ab --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/ru/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Наконец-то, быстрый и эффективный блокировщик для браузеров.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Панель управления", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Внимание! У вас есть несохраненные изменения", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Остаться", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Игнорировать", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Настройки", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Списки фильтров", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Мои фильтры", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Мои правила", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Доверенные сайты", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Сочетания клавиш", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Логгер", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "О расширении", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Поддержка", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Активы", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Расширенные настройки", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Клик: отключить/включить uBlock₀ для этого сайта.\n\nCtrl+клик: отключить uBlock₀ только на этой странице.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Кликните, чтобы отключить uBlock₀ для этого сайта.\nCtrl+клик, чтобы отключить uBlock₀ только на этой странице.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Кликните, чтобы активировать uBlock₀ для этого сайта.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "запросов заблокировано", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "на этой странице", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "с момента установки", + "description": "English: since install" + }, + "popupOr": { + "message": "или", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Заблокировано на этой странице", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Заблокировано с момента установки", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Доменов подключено", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Открыть панель управления", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Режим мгновенного временного скрытия элемента", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Войти в режим выбора элементов", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Открыть логгер", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Сообщить о проблеме на данном сайте", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Вкл/Выкл блокировку всех всплывающих окон на этом сайте", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Нажмите, чтобы блокировать все всплывающие окна на этом сайте", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Нажмите, чтобы отключить блокировку всех всплывающих окон на этом сайте", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Вкл/Выкл блокировку больших медиа-элементов на этом сайте", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Нажмите для включения блокировки больших медиа-элементов на этом сайте", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Нажмите для отключения блокировки больших медиа-элементов на этом сайте", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Вкл/Выкл косметическую фильтрацию на этом сайте", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Нажмите, чтобы отключить косметическую фильтрацию на этом сайте", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Нажмите, чтобы включить косметическую фильтрацию на этом сайте", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Вкл/Выкл блокировку сторонних шрифтов на этом сайте", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Нажмите для блокировки сторонних шрифтов на этом сайте", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Нажмите для отключения блокировки сторонних шрифтов на этом сайте", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Нажмите, чтобы отключить JavaScript на этом сайте", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Кликните, чтобы перестать блокировать JavaScript на этом сайте", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Всплывающие окна", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Большие медиа-элементы", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Косметическая фильтрация", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Загружаемые шрифты", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Больше", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Меньше", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Глобальные правила: этот столбец предназначен для правил, применяемых ко всем сайтам.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Локальные правила: этот столбец предназначен для правил, применяемых только к текущему сайту.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Нажмите, чтобы сохранить изменения.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Нажмите, чтобы отменить изменения.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "все", + "description": "" + }, + "popupImageRulePrompt": { + "message": "изображения", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3rd-party ресурсы", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "3rd-party CSS/изображения", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline-скрипты", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1st-party скрипты", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3rd-party скрипты", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3rd-party фреймы", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "доменов подключено", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} из {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Версия", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "скрипт", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "фрейм", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Создать", + "description": "English: Create" + }, + "pickerPick": { + "message": "Выбрать", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Выйти", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Предпросмотр", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Сетевые фильтры", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Косметические фильтры", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Клик, Ctrl+клик", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Блокировать элемент...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Скрыть оставшееся от заблокированных элементов место", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Показывать количество заблокированных запросов на иконке", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Отключить всплывающие подсказки", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Использовать контекстное меню, где возможно", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Цветовая схема для дальтоников", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Настройки интерфейса", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Тема", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Выбрать акцент цветового оформления", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Включить поддержку облачного хранилища", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Я — опытный пользователь", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Отключить предзагрузку для предотвращения подключений для заблокированных запросов", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Отключить проверку гиперссылок", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Предотвратить утечку локального IP-адреса через WebRTC", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Поведение по умолчанию", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Эти настройки могут быть указаны для каждого сайта отдельно", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Отключить косметические фильтры", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Блокировать медиа-элементы больше {{input}} KБ", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Блокировать сторонние шрифты", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Отключить JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Блокировать CSP-отчёты", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Раскрывать CNAME записи", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Расширенные настройки", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Функции, предназначенные для технических пользователей", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "расширенные настройки", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Последнее восстановление:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Последняя резервная копия:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} сетевых фильтров + {{cosmeticFilterCount}} косметических фильтров из:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} используется из {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Автообновление списков фильтров", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Обновить сейчас", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Очистить все кэши", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Парсить и применять косметические фильтры", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Косметические фильтры применяются на веб-странице для скрытия элементов, которые создают визуальные помехи, и которые не могут быть заблокированы механизмом фильтрации сетевых запросов.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Игнорировать общие косметические фильтры", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Общие косметические фильтры — это те косметические фильтры, которые должны применяться на всех веб-сайтах. Включение этой опции снизит потребление памяти и избавит процессор от обработки общих косметических фильтров на веб-страницах.\n\nРекомендуется включить эту опцию на недостаточно мощных устройствах.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Приостановить сетевую активность, пока не запустятся все списки фильтров", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Список заблокированных хостов", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Применить изменения", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Встроенные", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Реклама", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Приватность", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Защита от вредоносных сайтов, безопасность", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Виджеты соцсетей", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Уведомления о файлах куки", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Раздражающие элементы", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Многоцелевые", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Регионы, языки", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Пользовательские", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Импортировать...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Один URL на строку. Неверные URL будут проигнорированы без предупреждения.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Устарел.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "показать содержимое", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Последнее обновление: {{ago}}.\nКликните для принудительного обновления.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Обновление...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "В результате ошибки сети обновление не произошло.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Не добавляйте фильтры из ненадёжных источников.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Включить мои пользовательские фильтры", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Разрешить пользовательские фильтры, требующие доверия", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Импортировать и добавить…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Экспортировать…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Применить изменения", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Постоянные правила", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Временные правила", + "description": "header" + }, + "rulesRevert": { + "message": "Вернуть", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Утвердить", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Изменить", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Сохранить", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Сбросить", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Импорт из файла...", + "description": "" + }, + "rulesExport": { + "message": "Экспортировать в файл…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Список ваших правил динамической фильтрации.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Синтаксис правил: источник назначение тип действие (полная документация).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Сортировка:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Тип правила", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Источник", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Цель", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Записи доверенных сайтов указывают на каких веб-страницах uBlock Origin должен быть отключен. Одна запись на строку.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Импортировать и добавить…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Экспортировать…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Применить изменения", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Тип", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Домен", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Фильтр", + "description": "English: Filter" + }, + "logAll": { + "message": "Все", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Закулисные запросы", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Текущая вкладка", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Перезагрузить содержимое вкладки", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Вкл/Выкл DOM-инспектор", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Вкл/Выкл всплывающую панель", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin вики: Логгер", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Очистить логгер", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Поставить логгер на паузу (отбрасывать все входящие данные)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Снять логгер с паузы", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Вкл/Выкл фильтрацию логгера", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "фильтрация записей логгера", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Настройки фильтрации логгера", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Not", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blocked", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "allowed", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "модифицировано", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1st-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3rd-party", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Подробно", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Фильтр", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Список фильтров", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Правило", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Контекст", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Контекст корня", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Сторона", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Тип", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL правило", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Контекст:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Тип:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Статич. фильтр", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} сетевые запросы {{type}}, {{br}}URL которых совпадает с {{url}} {{br}} и которые происходят из {{origin}},{{br}}{{importance}} имеется подходящий фильтр-исключение.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Блокировать", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Разрешить", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "типа “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "любой тип", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "из “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "откуда угодно", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "кроме случаев, когда", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "даже если", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Статический фильтр {{filter}} найден в:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Статический фильтр не найден ни в одном списке фильтров, включенных в данный момент", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Записи логгера, не удовлетворяющие всем трём нижеуказанным условиям, будут автоматически отброшены:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Хранить записи последних {{input}} минут", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Хранить не больше {{input}} загрузок страницы на вкладку", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Хранить не больше {{input}} записей на вкладку", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Использовать {{input}} строк для каждой записи при вертикальном расширении", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Скрыть столбцы:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Время", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Фильтр/правило", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Контекст", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Сторона", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Список", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Таблица", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Простой", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Открыть", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Создать новый отчёт в GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Найти похожие отчёты в GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Документация", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Прочитайте документацию на uBlock/wiki, чтобы узнать обо всех возможностях uBlock Origin. ", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Вопросы и поддержка", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Ответы на вопросы и другая помощь доступны в разделе /r/uBlockOrigin на reddit.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Проблемы фильтрации/сломанный сайт", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Сообщайте о проблемах фильтрации на конкретных сайтах в раздел трекера uBlockOrigin/uAssets. Требуется аккаунт GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Важно: Избегайте использования других блокировщиков схожего назначения совместно с uBlock Origin, так как это может привести к проблемам с фильтрацией на определенных сайтах.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Советы: убедитесь, что ваши списки фильтров обновлены. Логгер — основной инструмент диагностики проблем, связанных с фильтрами.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Отчет об ошибке", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Сообщайте о собственных ошибках дополнения uBlock Origin в раздел трекера uBlockOrigin/uBlock-issue. Требуется GitHub аккаунт.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Диагностика неисправностей", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Ниже представлена техническая информация, которая может быть полезна волонтерам, помогающим вам решить проблему.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Сообщить о проблемном фильтре", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Чтобы не обременять добровольцев повторяющимися отчётами, пожалуйста, убедитесь, что об этой проблеме ещё не сообщали. Примечание: щелчок по кнопке приведёт к отправке адреса посещенной страницы GitHub'у.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Списки фильтров обновляются ежедневно. Убедитесь, что ваша проблема не была решена в свежих списках фильтров.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Удостоверьтесь, что проблема воспроизводится даже после обновления проблемной страницы.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Адрес веб-страницы:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Веб-страница...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "--Выберите категорию--", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Показывается реклама или ее заполнители", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Всплывающие окна или другие помехи", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Обнаруживается uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Проблемы, связанные с приватностью", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Поломки, когда включен uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Открываются нежелательные вкладки или окна", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Вредоносное ПО, фишинг", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Пометить веб-страницу как “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Политика конфиденциальности", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Список изменений", + "description": "" + }, + "aboutCode": { + "message": "Исходный код (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Участники", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Исходный код", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Переводы", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Списки фильтров", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Внешние зависимости (GPLv3-совместимые):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Собственные списки фильтров uBO свободно размещены на следующих CDN:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "При обновлении списка фильтров используется выбранный случайным образом CDN", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Резервное копирование в файл…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Восстановить из файла...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Восстановить настройки по умолчанию...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Текущие настройки будут заменены данными из резервной копии от {{time}}, и uBlock₀ будет перезапущен.\n\nПерезаписать все существующие параметры данными из резервной копии?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Данные не могут быть прочитаны или ошибочны", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Все ваши настройки будут удалены, uBlock₀ будет перезапущен. \n\nВосстановить настройки по умолчанию?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Ошибка сети: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Подписаться", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "минуту назад", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} минут(-ы) назад", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "час назад", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} часа(-ов) назад", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "день назад", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} дня(-ей) назад", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Показать панель управления", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Показать логгер", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "выключен", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Страница заблокирована", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin предотвратил загрузку следующей страницы:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Из-за следующего фильтра", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "без параметров", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Найден в:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Вернуться", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Закрыть это окно", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Не предупреждать меня больше про этот сайт", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Отключить строгую блокировку для {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Временно", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Навсегда", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Продолжить", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Заблокированная страница собирается перенаправить вас на другой сайт. Если вы решите продолжить, вы перейдете непосредственно на: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Причина:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Вредоносная активность", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Трекер", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Сомнительное содержание", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Экспорт в облачное хранилище", + "description": "tooltip" + }, + "cloudPull": { + "message": "Импорт из облачного хранилища", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Импортировать из облачного хранилища и объединить с текущими настройками", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Имя этого устройства:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Внимание! Изменяйте эти настройки на свой страх и риск.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Принять", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Применить изменения", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Вернуть", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "байт", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Заблокировать элемент во фрейме...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Установить список фильтров...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Временно разрешить большие медиа-элементы", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Показать исходный код...", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Введите сочетание", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Вкл/Выкл общую прокрутку", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Скопировать в буфер", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Выбрать все", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Вкл/Выкл косметическую фильтрацию", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Вкл/Выкл JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Ослабленный режим блокировки", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Размер хранилища: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KБ", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "МБ", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "ГБ", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Нажмите, чтобы загрузить", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Ошибки: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Не удалось выполнить фильтрацию при запуске браузера.\nПерезагрузите страницу, чтобы обеспечить фильтрацию.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Эта запись должна быть последней", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/si/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/si/messages.json new file mode 100644 index 00000000..c4ea205e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/si/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "අවසානයේදී, මධ්‍ය සැකසුම් ඒකකය සහ මතකය අඩුවෙන් භාවිතා කරන කාර්යක්‍ෂම අවහිරකයක් ඇත.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "යූබ්ලොක්₀ - උපකරණ පුවරුව", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "අවවාදයයි! ඔබ නොසුරැකි වෙනස්කම් ඇත", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "මෙතැන ඉන්න", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "නොසලකන්න", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "සැකසුම්", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "පෙරහන් ලැයිස්තු", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "මාගේ පෙරහන්", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "මාගේ නීති", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "විශ්වාසදායී අඩවි", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "කෙටිමං", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "යූබ්ලොක්₀ — ලඝුර", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "පිළිබඳ", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "සහාය", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "යූබ්ලොක්₀ — වත්කම් දක්වනය", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "සංකීර්ණ සැකසුම්", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "ඔබන්න: මෙම අඩවියට යූබ්ලොක්₀ අබල/සබල කරන්න.\n\nCtrl+ඔබන්න: මෙම පිටුවට පමණක් යූබ්ලොක්₀ අබල කරන්න.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "මෙම අඩවියට යූබ්ලොක්₀ අබල/සබල කිරීමට ඔබන්න.\n\nමෙම පිටුවට පමණක් යූබ්ලොක්₀ අබල කිරීමට Ctrl+ඔබන්න.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "මෙම අඩවියට යූබ්ලොක්₀ සබල කිරීමට ඔබන්න.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "ඉල්ලීම් අවහිර කර ඇත", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "මෙම පිටුවෙහි", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "ස්ථාපනයේ සිට", + "description": "English: since install" + }, + "popupOr": { + "message": "හෝ", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "මෙම පිටුවේ අවහිර", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "ස්ථාපනයෙන් පසු අවහිර", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "සම්බන්ධිත වසම්", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "උපකරණ පුවරුව අරින්න", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "මූලද්‍රව්‍ය zapper ප්‍රකාරයට ඇතුළු වන්න", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "මූලද්‍රව්‍ය තෝරක ප්‍රකාරයට ඇතුළු වන්න", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "ලඝුර අරින්න", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "මෙම අඩවියේ ගැටලුවක් වාර්තා කරන්න", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "මෙම අඩවිය සඳහා සියලු උත්පතන අවහිර කිරීම ටොගල් කරන්න", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "මෙම අඩවියේ ඇති සියලුම උත්පතන අවහිර කිරීමට ක්ලික් කරන්න.", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "මෙම අඩවියේ ඇති සියලුම උත්පතන තවදුරටත් අවහිර නොකිරීමට ක්ලික් කරන්න.", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "මෙම අඩවිය සඳහා විශාල මාධ්‍ය අංග අවහිර කිරීම ටොගල් කරන්න.", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "මෙම අඩවියේ විශාල මාධ්‍ය අංග අවහිර කිරීමට ක්ලික් කරන්න.", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "මෙම අඩවියේ විශාල මාධ්‍ය අංග තවදුරටත් අවහිර නොකිරීමට ක්ලික් කරන්න.", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "මෙම අඩවිය සඳහා රූපලාවන්‍ය පෙරහන ටොගල් කරන්න", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "මෙම අඩවියේ රූපලාවන්‍ය පෙරහන් අක්‍රිය කිරීමට ක්ලික් කරන්න.", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "මෙම අඩවියේ රූපලාවන්‍ය පෙරහන් සක්‍රීය කිරීමට ක්ලික් කරන්න.", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "මෙම අඩවිය සඳහා දුරස්ථ අකුරු අවහිර කිරීම ටොගල් කරන්න", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "මෙම අඩවියේ දුරස්ථ අකුරු අවහිර කිරීමට ක්ලික් කරන්න.", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "මෙම අඩවියේ දුරස්ථ අකුරු තවදුරටත් අවහිර නොකිරීමට ක්ලික් කරන්න.", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "මෙම අඩවියේ ජාවාස්ක්‍රිප්ට් අබල කිරීමට ඔබන්න", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "මෙම අඩවියේ තවදුරටත් ජාවාස්ක්‍රිප්ට් අබල නොකිරීමට ඔබන්න", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "උත්පතන කවුළු", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "විශාල මාධ්‍ය අංග", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "රූපලාවන්‍ය පෙරහන", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "දුරස්ථ රුවකුරු", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "ජාවාස්ක්‍රිප්ට්", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "තව", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "අඩුවෙන්", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "ගෝලීය නීති: මෙම තීරුව සියලුම අඩවි වලට යොදන නීතී සඳහා ය.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "දේශීය නීති: මෙම තීරුව වත්මන් අඩවියට පමණක් අදාළ වන නීති සඳහා වේ.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "ඔබගේ වෙනස්කම් ස්ථිර කිරීමට ක්ලික් කරන්න.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "ඔබගේ වෙනස්කම් ප්‍රතිවර්තනය කිරීමට ක්ලික් කරන්න.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "සියල්ල", + "description": "" + }, + "popupImageRulePrompt": { + "message": "රූප", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "තෙවන පාර්ශ්ව", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "තෙවන පාර්ශ්ව CSS/රූප", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "එක්තල අත්පත්", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "පළමු පාර්ශ්ව අත්පත්", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "තෙවන පාර්ශ්ව අත්පත්", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "තෙවන පාර්ශ්ව රාමු", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "සම්බන්ධිත වසම්", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}}න් {{count}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "අනුවාදය", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "අත්පත", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "රාමුව", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "සාදන්න", + "description": "English: Create" + }, + "pickerPick": { + "message": "තෝරන්න", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "ඉවත් වන්න", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "පෙරදසුන", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "ජාල පෙරහන්", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "රූපලාවන්‍ය පෙරහන්", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "ඔබන්න, Ctrl-ඔබන්න", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "අංග අවහිර කරන්න", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "අවහිර කළ මූලද්‍රව්‍යවල ස්ථාන දරන්නන් සඟවන්න", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "නිරූපකයේ අවහිර කළ ඉල්ලීම් ගණන පෙන්වන්න", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "මෙවලම් ඉඟි අක්‍රීය කරන්න", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "සුදුසු අවස්ථා වල දී සන්දර්භ වට්ටෝරුව භාවිතා කරන්න", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "වර්ණ-අන්ධ හිතකාමී", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "පෙනුම", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "තේමාව", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "අභිරුචි උදාත්ත වර්ණය", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "මේඝ ආචයන සහාය සබල කරන්න", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "මම ප්‍රගත පරිශ්‍රීලකයෙකි", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "පූර්ව-ලබා ගැනීම අක්‍රීය කරන්න (අවහිර කළ ජාල ඉල්ලීම් සඳහා කිසිදු සම්බන්ධතාවයක් වැළැක්වීමට)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "අතිසබැඳි විගණනය අබල කරන්න", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "දේශීය IP ලිපින කාන්දු වීම WebRTC වලක්වන්න", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "පෙරනිමි හැසිරීම", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "මෙම පෙරනිමි හැසිරීම් එක් එක් අඩවියට අනුව අභිබවා යා හැක.", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "රූපලාවන්‍ය පෙරහන අක්‍රීය කරන්න", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "කි.බ. {{input}} කට වඩා විශාල මාධ්‍ය අංග අවහිර කරන්න", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "දුරස්ථ රුවකුරු අවහිර කරන්න", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "ජාවාස්ක්‍රිප්ට් අබල කරන්න", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "අ.ආ.ප්‍ර. (CSP) වාර්තා අවහිර කරන්න", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "කැනොනිකල් නම් ඉවත් කරන්න", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "සංකීර්ණ", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "තාක්‍ෂණික පරිශ්‍රීලකයින්ට පමණක් සුදුසු විශේෂාංග", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "සංකීර්ණ සැකසුම්", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "අවසාන ප්‍රත්‍යර්පණය:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "අවසාන උපස්ථය:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} ජාල පෙරහන් + {{cosmeticFilterCount}} රූපලාවන්‍ය පෙරහන්:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}} න් {{used}} ක් භාවිතා කර ඇත", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "පෙරහන් ලැයිස්තු ස්වයංක්‍රීයව යාවත්කාලීන කරන්න", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "යාවත්කාල කරන්න", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "සියලුම හැඹිලි ඉවත් කරන්න", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "රූපලාවන්‍ය පෙරහන් විග්‍රහ කර බලාත්මක කරන්න", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "රූපලාවන්‍ය පෙරහන් යනු වෙබ් පිටුවක දෘශ්‍ය කරදරයක් ලෙස සලකනු ලබන සහ ජාල ඉල්ලීම් මත පදනම් වූ පෙරහන් එන්ජින් මගින් අවහිර කළ නොහැකි අංග සැඟවීමට සේවය කරයි.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "සාමාන්‍ය රූපලාවන්‍ය පෙරහන් නොසලකා හරින්න.", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "සාමාන්‍ය රූපලාවන්‍ය පෙරහන් යනු සියලුම වෙබ් අඩවිවල යෙදීමට අදහස් කරන රූපලාවන්‍ය පෙරහන් වේ. මෙම විකල්පය සක්‍රීය කිරීමෙන් සාමාන්‍ය රූපලාවන්‍ය පෙරහන් හැසිරවීමේ ප්‍රතිඵලයක් ලෙස වෙබ් පිටුවලට එකතු වන මතකය සහ CPU උඩිස් බර ඉවත් කරනු ඇත.\n\nඅඩු බලවත් උපාංගවල මෙම විකල්පය සක්‍රීය කිරීම නිර්දේශ කෙරේ.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "සියලුම පෙරහන් ලැයිස්තු පූරණය වන තුරු ජාල ක්‍රියාකාරකම් අත්හිටුවන්න.", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "අවහිර කළ සත්කාරක", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "වෙනස්කම් යොදන්න", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "තිළෑලි", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "දැන්වීම්", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "පෞද්ගලිකත්‍වය", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "අනිෂ්ට මෘදුකාංග ආරක්ෂාව, ආරක්ෂාව", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "සමාජ විජට්", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "දත්තකඩ දැන්වීම්", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "කරදර", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "බහුකාර්ය", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "කලාප, භාෂා", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "අභිරුචි", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "ආයාත කරන්න...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "පේළියකට එක් URL එකක් බැගින්. අවලංගු URL නිහඬව නොසලකා හරිනු ලැබේ.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "කල් ඉකුත් වී ඇත.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "අන්තර්ගතය බලන්න", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "අවසන් යාවත්කාලීන කිරීම: {{ago}}.\nයාවත්කාලීන කිරීමට බල කිරීමට ක්ලික් කරන්න.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "යාවත්කාල වෙමින්...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "ජාල දෝෂයක් නිසා සම්පත යාවත්කාලීන වීම වැළැක්විණි.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "විශ්වාස නොකළ මූලාශ්‍රවලින් පෙරහන් එක් නොකරන්න.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "මගේ අභිරුචි පෙරහන් සක්‍රීය කරන්න", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "විශ්වාසය අවශ්‍ය අභිරුචි පෙරහන් වලට ඉඩ දෙන්න.", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "…ආයාත කර එකතු කරන්න", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "නිර්යාත කරන්න...", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "මගේ-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "වෙනස්කම් යොදන්න", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "ස්ථිර නීති", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "තාවකාලික නීති", + "description": "header" + }, + "rulesRevert": { + "message": "ප්‍රතිවර්තනය", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "කැප කරන්න", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "සංස්කරණය", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "සුරකින්න", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "ඉවතලන්න", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "ගොනුවකින් ආයාත කරන්න...", + "description": "" + }, + "rulesExport": { + "message": "ගොනුවකට නිර්යාත කරන්න", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "මාගේ-ublock-ගතික-නීති_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "ඔබගේ ගතික පෙරහන් නීති ලැයිස්තුව.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "රීති වාක්‍ය ඛණ්ඩය: මූලාශ්‍ර ගමනාන්ත වර්ගය ක්‍රියාව (සම්පූර්ණ ලියකියවිලි).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "වර්ගනය:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "නීතියේ වර්ගය", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "මූලාශ්‍රය", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "ගමනාන්තය", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "විශ්වාසදායක අඩවි නියෝග මඟින් uBlock Origin අක්‍රිය කළ යුත්තේ කුමන වෙබ් පිටු මතද යන්න නියම කරයි. පේළියකට එක් ඇතුළත් කිරීමක් පමණි.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "…ආයාත කර එකතු කරන්න", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "නිර්යාත…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "මාගේ-ublock-විශ්වාසදායී-අඩවි_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "වෙනස්කම් යොදන්න", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "වර්ගය", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "වසම", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "ඒ.ස.නි.", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "පෙරහන", + "description": "English: Filter" + }, + "logAll": { + "message": "සියල්ල", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "මේස", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "වත්මන් ටැබය", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "ටැබ් අන්තර්ගතය නැවත පූරණය කරන්න", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM පරීක්ෂක ටොගල් කරන්න", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "උත්පතන පැනලය ටොගල් කරන්න", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock සම්භවය විකි: ලොගර්", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "ලොගර් හිස් කරන්න", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "ලොගර් විරාම කරන්න (එන සියලුම දත්ත ඉවතලන්න)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "ලොගර් විරාම නොකරන්න", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "ලොගර් පෙරහන ටොගල් කරන්න", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "පෙරහන් ලොගර් අන්තර්ගතය", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "ලොගර් පෙරහන් විකල්ප", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "නැහැ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "අවහිරයි", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "ඉඩදුන්", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "සංශෝධිත", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "පළමු පාර්ශ්ව", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "තෙවන පාර්ශ්ව", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "විස්තර", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "පෙරහන", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "පෙරහන් ලැයිස්තුව", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "නීතිය", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "සන්දර්භය", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "මූල සන්දර්භය", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "සාද ගතිය", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "වර්ගය", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "ඒ.ස.නි.", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "ඒ.ස.නි. නීතිය", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "සන්දර්භය:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "වර්ගය:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "ස්ථිතික පෙරහන", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} ජාල ඉල්ලීම් {{type}} {{br}}වන URL ලිපිනය {{url}} {{br}}ට ගැලපෙන අතර {{origin}}ට ආරම්භ වේ,{{br}}{{importance}} ට ගැලපෙන ව්‍යතිරේක පෙරහනක් ඇත.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "අවහිර", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "ඉඩ දෙන්න", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "වර්ගය “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "ඕනෑම වර්ගයක", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "“{{origin}}” වෙතින්", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "ඕනෑම තැනක සිට", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "විට හැර", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "විට දී වුවත්", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "ස්ථිතික පෙරහන {{filter}} හමු වූයේ:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "දැනට සක්‍රිය කර ඇති කිසිදු පෙරහන් ලැයිස්තුවක ස්ථිතික පෙරහන සොයාගත නොහැකි විය.", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "පහත කොන්දේසි තුනම සපුරා නොමැති ලොගර් ඇතුළත් කිරීම් ස්වයංක්‍රීයව ඉවත දමනු ලැබේ:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "අවසාන මිනිත්තු {{input}} වලින් ඇතුළත් කිරීම් සුරකින්න", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "ටැබ් එකකට උපරිම වශයෙන් {{input}} පිටු පූරණ සංරක්ෂණය කරන්න", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "ටැබ් එකකට උපරිම වශයෙන් {{input}} ඇතුළත් කිරීම් සංරක්ෂණය කරන්න", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "සිරස් අතට පුළුල් කළ ප්‍රකාරයේදී ඇතුළත් කිරීමකට {{input}} රේඛා භාවිතා කරන්න.", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "තීරු සඟවන්න:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} වේලාව", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} පෙරහන/නීතිය", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} සන්දර්භය", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} සාද ස්වභාවය", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "ලැයිස්තුව", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "වගුව", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "සරල", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "මාර්ක්ඩවුන්", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "අරින්න", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "නව වාර්තාවක් සාදන්න", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "සමාන වාර්තා සොයන්න", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "ප්‍රලේඛනය", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "uBlock Origin හි සියලුම විශේෂාංග ගැන ඉගෙන ගැනීමට uBlock/wiki හි ඇති ලේඛන කියවන්න.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "ප්‍රශ්න සහ සහාය", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "ප්‍රශ්නවලට පිළිතුරු සහ අනෙකුත් ආකාරයේ උපකාර සහාය /r/uBlockOriginයන උප රෙඩිට් එකෙන් සපයනු ලැබේ.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "පෙරහන් ගැටළු/වෙබ් අඩවිය බිඳ වැටී ඇත", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "නිශ්චිත වෙබ් අඩවි සමඟ පෙරහන් ගැටළු uBlockOrigin/uAssets ගැටළු ට්රැකර්වෙත වාර්තා කරන්න. GitHub ගිණුමක් අවශ්‍යයි.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "වැදගත්: uBlock Origin සමඟ සමාන අරමුණු සහිත වෙනත් අවහිර කරන්නන් භාවිතා කිරීමෙන් වළකින්න, මන්ද මෙය නිශ්චිත වෙබ් අඩවි වල පෙරහන් ගැටළු ඇති කළ හැකිය.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "ඉඟි: ඔබගේ පෙරහන් ලැයිස්තු යාවත්කාලීනව ඇති බවට වග බලා ගන්න. පෙරහන් ආශ්‍රිත ගැටළු හඳුනා ගැනීම සඳහා ලොගර් මූලික මෙවලම වේ.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "දෝෂ වාර්තාව", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "uBlock Origin සමඟ ඇති ගැටළු uBlockOrigin/uBlock-issue ගැටළු ට්‍රැකර්වෙත වාර්තා කරන්න. GitHub ගිණුමක් අවශ්‍යයි.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "දෝශ නිරාකරණ තොරතුරු", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "ස්වේච්ඡා සේවකයන් ගැටලුවක් විසඳීමට ඔබට උදව් කිරීමට උත්සාහ කරන විට ප්‍රයෝජනවත් විය හැකි තාක්ෂණික තොරතුරු පහත දැක්වේ.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "පෙරහන් ගැටළුවක් වාර්තා කරන්න", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "අනුපිටපත් වාර්තා සමඟ ස්වේච්ඡා සේවකයින්ට බරක් වීම වළක්වා ගැනීම සඳහා, කරුණාකර ගැටළුව දැනටමත් වාර්තා කර නොමැති බව තහවුරු කරගන්න. සටහන: බොත්තම ක්ලික් කිරීමෙන් පිටුවේ මූලාරම්භය GitHub වෙත යවනු ලැබේ.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "පෙරහන් ලැයිස්තු දිනපතා යාවත්කාලීන වේ. ඔබගේ ගැටලුව මෑත කාලීන පෙරහන් ලැයිස්තු වල දැනටමත් විසඳා නොමැති බවට වග බලා ගන්න.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "ගැටළු සහගත වෙබ් පිටුව නැවත පූරණය කිරීමෙන් පසුවද ගැටලුව පවතින බව තහවුරු කරන්න.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "වියමන පිටුවේ ලිපිනය:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "වියමන පිටුව…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- නිවේශිතයක් තෝරන්න --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "දැන්වීම් හෝ දැන්වීම් ඉතිරි කොටස් පෙන්වයි", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "උඩැතිරි හෝ වෙනත් කරදර ඇති", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "යූබ්ලොක් ඔරිජින් හඳුනා ගනියි", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "පෞද්ගලිකත්‍වය ආශ්‍රිත ගැටළු තිබේ", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "uBlock Origin සක්‍රීය කර ඇති විට සිදුවන අක්‍රමිකතා", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "අනවශ්‍ය පටිති හෝ කවුළු අරියි", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "නරක මෘදුකාංග, තතුබෑම් වලට මග පාදයි", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "වෙබ් පිටුව “NSFW” ලෙස ලේබල් කරන්න (“වැඩ සඳහා ආරක්ෂිත නොවේ”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "රහස්‍යතා ප්‍රතිපත්තිය", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "වෙනස්කම් සටහන", + "description": "" + }, + "aboutCode": { + "message": "මූලාශ්‍ර කේත (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "දායකයින්", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "මූලාශ්‍ර කේත", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "පරිවර්තන", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "පෙරහන් ලැයිස්තු", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "බාහිර පරායත්ත (GPLv3-අනුකූල):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO හි පෙරහන් ලැයිස්තු පහත CDNsමත නිදහසේ සත්කාරකත්වය දරයි:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "පෙරහන් ලැයිස්තුවක් යාවත්කාලීන කිරීමට අවශ්‍ය වූ විට අහඹු ලෙස තෝරාගත් CDN එකක් භාවිතා වේ.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "ගොනුවකට උපස්ථ කරන්න", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "මාගේ-ublock-උපස්ථය_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "ගොනුවකින් ප්‍රත්‍යර්පණය කරන්න", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "සැකසුම් පෙරනිමියට සකසන්න", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "{{time}}මත උපස්ථ කළ දත්ත භාවිතයෙන් ඔබගේ සියලු සැකසුම් උඩින් ලියනු ලබන අතර, uBlock₀ නැවත ආරම්භ වේ.\n\nඋපස්ථ කළ දත්ත භාවිතයෙන් පවතින සියලුම සැකසුම් උඩින් ලියන්නද?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "දත්ත කියවිය නොහැකි විය නැතහොත් අවලංගුය.", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "ඔබගේ සියලු සැකසුම් ඉවත් කරනු ලබන අතර, uBlock₀ නැවත ආරම්භ වේ.\n\nuBlock₀ කර්මාන්තශාලා සැකසුම් වෙත නැවත සකසන්නද?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "ජාලයේ දෝෂය: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "දායක වන්න", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "විනාඩියකට පෙර", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "විනාඩි {{value}} කට පෙර", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "පැයකට පෙර", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "පැය {{value}} කට පෙර", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "දවසකට පෙර", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "දවස් {{value}} කට පෙර", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "උපකරණ පුවරුව පෙන්වන්න", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "ලඝුව පෙන්වන්න", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "අක්‍රියයි", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "පිටුව අවහිරයි", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin විසින් පහත පිටුව පූරණය වීම වළක්වා ඇත:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "පහත පෙරහන නිසා:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "පරාමිතීන් නොමැතිව", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "මෙහි හමු විය:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "ආපසු යන්න", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "මෙම කවුළුව වසන්න", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "මෙම අඩවිය ගැන මට නැවත අනතුරු අඟවන්න එපා.", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "{{hostname}}සඳහා දැඩි අවහිර කිරීම අක්‍රීය කරන්න", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "තාවකාලිකව", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "සදහටම", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "ඉදිරියට", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "අවහිර කළ පිටුව වෙනත් අඩවියකට හරවා යැවීමට අවශ්‍යයි. ඔබ ඉදිරියට යාමට තෝරා ගන්නේ නම්, ඔබ කෙලින්ම මෙහි සංචාලනය කරනු ඇත: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "මේඝ ආචයනයට නිර්යාත කරන්න", + "description": "tooltip" + }, + "cloudPull": { + "message": "මේඝ ආචයනයෙන් ආයාත කරන්න", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "මේඝ ආචයනයෙන් ආයාත කර වත්මන් සැකසුම් වලට ඒකාබද්ධ කරන්න", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "මෙම උපාංගයේ නම:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "අවවාදයයි! මෙම සංකීර්ණ සැකසුම් සංශෝධනයේ අවදානම ඔබ සතුයි.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "යොමන්න", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "වෙනස්කම් යොදන්න", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "ප්‍රතිවර්තනය", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "බයිට", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "රාමුවේ බ්ලොක් මූලද්‍රව්‍යය…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "පෙරහන් ලැයිස්තුවට දායක වන්න…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "තාවකාලිකව විශාල මාධ්‍ය අංගවලට ඉඩ දෙන්න.", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "මූලාශ්‍ර කේත බලන්න…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "කෙටිමඟක් ලියන්න", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "අගුළු දැමූ අනුචලනය ටොගල් කරන්න", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "පසුරු පුවරුවට පිටපතක්", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "සියල්ල තෝරන්න", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "රූපලාවන්‍ය පෙරහන ටොගල් කරන්න", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "ජාවාස්ක්‍රිප්ට් ටොගල් කරන්න", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "අවහිර කිරීමේ මාදිලිය ලිහිල් කරන්න", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "ආචයනය භාවිතය: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "කි.බ.", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "මෙ.බ.", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "ගි.බ.", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "පූරණයට ඔබන්න", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "දෝෂ: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "බ්‍රව්සරය දියත් කිරීමේදී නිසි ලෙස පෙරීමට නොහැකි විය. නිසි පෙරහන සහතික කිරීම සඳහා පිටුව නැවත පූරණය කරන්න.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/sk/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/sk/messages.json new file mode 100644 index 00000000..3a9c68f2 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/sk/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Konečne efektívny blokovač. Nezaťažuje CPU ani pamäť.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Ovládací panel", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Upozornenie! Máte neuložené zmeny", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Zostať", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorovať", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Nastavenia", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Zoznam filtrov", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Moje filtre", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Moje pravidlá", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Dôveryhodné stránky", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Klávesové skratky", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Zaznamenávač", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "O doplnku", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Podpora", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Zobrazenie zdrojov", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Pokročilé nastavenia", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Kliknutie: zakázať/povoliť uBlock pre túto stránku.\n\nCtrl+kliknutie: zakázať uBlock₀ len pre túto stránku.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Kliknutím zakážete uBlock₀ pre túto stránku.\n\nCtrl+kliknutie zakáže uBlock₀ len pre túto stránku.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Kliknutím povolíte uBlock₀ pre túto stránku.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "zablokované požiadavky", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "na tejto stránke", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} alebo {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "od inštalácie", + "description": "English: since install" + }, + "popupOr": { + "message": "alebo", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokované na tejto stránke", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blokované od inštalácie", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Pripojené domény", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Otvoriť ovládací panel", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Prejsť do režimu výberu prvku", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Prejsť do režimu výberu prvku", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Otvoriť Zaznamenávač", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Nahlásiť problém na tejto webovej stránke", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Žiadne vyskakovacie okná pre túto stránku", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Kliknutím zakážete všetky vyskakovacie okná na tejto stránke", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Kliknutím povolíte všetky vyskakovacie okná na tejto stránke", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Prepnúť blokovanie veľkých multimediálnych prvkov na tejto stránke", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Kliknutím zablokovať veľké multimediálne prvky na tejto stránke", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Kliknutím povolíte veľké multimediálne prvky na tejto stránke", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Prepnúť kozmetické filtrovanie pre túto stránku", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Kliknutím zakážete kozmetické filtrovanie na tejto stránke", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Kliknutím povolíte kozmetické filtrovanie na tejto stránke", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Prepnúť blokovanie vzdialených písiem na tejto stránke", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Kliknutím zakážete vzdialené písma pre túto stránku", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Kliknutím povolíte vzdialené písma pre túto stránku", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Kliknutím úplne zakážete JavaScript na tejto stránke", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Kliknutím už nebude úplne zakázaný JavaScript na tejto stránke", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Vyskakovacie okná", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Veľké mediálne prvky", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kozmetické filtrovanie", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Vzdialené písma", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Viac", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Menej", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globálne pravidlá: tento stĺpec slúži pre pravidlá, ktoré platia pre všetky weby.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokálne pravidlá: tento stĺpec slúži pre pravidlá, ktoré platia len pre aktuálny web.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Kliknutím použijete vaše zmeny.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Kliknutím vrátite vaše zmeny.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "všetko", + "description": "" + }, + "popupImageRulePrompt": { + "message": "obrázky", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "z tretej strany", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/obrázky tretích strán", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "vstavané skripty", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "skripty prvej triedy", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "skripty tretej triedy", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "rámy tretej triedy", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "pripojené domény", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} z {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Verzia", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skript", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "rámec", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Vytvoriť", + "description": "English: Create" + }, + "pickerPick": { + "message": "Vybrať", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Ukončiť", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Náhľad", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Sieťové filtre", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kozmetické filtre", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Kliknutie, Ctrl-kliknutie", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Zablokovať prvok…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Skryť zástupcov zablokovaných prvkov", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Zobraziť počet zablokovaných požiadaviek na ikone", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Zakázať tipy pre nástroje", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Používať kontextovú ponuku v prípade potreby", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Režim pre farboslepých", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Vzhľad", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Motív", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Vlastná farba motívu", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Povoliť podporu cloudového úložiska", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Som pokročilý používateľ", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Zakázať prednačítavanie (zakáže akékoľvek pripojenie pre zablokované sieťové požiadavky)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Zakázať auditovanie hypertextových odkazov", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Zabrániť úniku lokálnej IP adresy cez WebRTC", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Predvolené správanie", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Tieto predvolené správania môžu byť prepísané na jednotlivých stránkach", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Vypnúť kozmetické filtrovanie", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokovať multimediálne prvky väčšie ako {{input:number}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokovať vzdialené písma", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Zakázať JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Zablokovať CSP hlásenia", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Odhaliť kanonické mená", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Pokročilé", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funkcie vhodné iba pre pokročilých používateľov.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "pokročilé nastavenia", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Posledná obnova:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Posledná záloha:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} sieťových filtrov + {{cosmeticFilterCount}} kozmetických filtrov z:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} použitých z {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Automaticky aktualizovať zoznamy filtrov.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Aktualizovať teraz", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Vyčistiť celú vyrovnávaciu pamäť", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Spracovať a vynútiť kozmetické filtre", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Kozmetické filtre slúžia na skrytie prvkov na webovej stránke, ktoré sa považujú za vizuálne obťažujúce a ktoré nemôžu byť zablokované filtrovaním sieťových požiadavkov.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorovať generické kozmetické filtre", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generické kozmetické filtre sú tie kozmetické filtre, ktoré sú určené na použitie na všetkých webových stránkach. Zapnutím tejto možnosti sa zníži zaťaženie pamäte a procesora v dôsledku použitia generických kozmetických filtrov.\n\nOdporúča sa povoliť túto možnosť na menej výkonných zariadeniach.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Pozastaviť sieťovú aktivitu, kým sa nenačítajú všetky zoznamy filtrov", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Zoznamy zablokovaných hostiteľov", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Použiť zmeny", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Vstavané", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklamy", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Súkromie", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Ochrana pred škodlivým softvérom, bezpečnosť", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sociálne widgety", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Oznámenie o cookies", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Obťažujúce", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Viacúčelové", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regióny, jazyky", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Vlastné", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importovať...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Jedna URL adresa na riadok. Neplatné URL adresy budú potichu ignorované.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Zastarané.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "zobraziť obsah", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Posledná aktualizácia: {{ago}}.\nKliknutím vynútite aktualizáciu.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Aktualizácia...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Chyba siete zabránila aktualizácii zdroja.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Nepridávajte filtre z nedôveryhodných zdrojov.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Povoliť moje vlastné filtre", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Povoliť vlastné filtre vyžadujúce dôveru", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importovať a pripojiť", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exportovať", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-moje-statické-filtre_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Použiť zmeny", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Trvalé pravidlá", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Dočasné pravidlá", + "description": "header" + }, + "rulesRevert": { + "message": "Vrátiť", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Potvrdiť", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Upraviť", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Uložiť", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Zahodiť", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importovať zo súboru...", + "description": "" + }, + "rulesExport": { + "message": "Exportovať do súboru", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ublock-moje-dynamické-pravidlá_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Zoznam vašich dynamických filtrovacích pravidiel.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Syntax pravidla: zdroj cieľ typ akcia (úplná dokumentácia).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Zoradiť:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Typ pravidla", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Zdroj", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Cieľ", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Zoznam dôveryhodných stránok pre ktoré bude uBlock Origin zakázaný. Jedna položka na riadok.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importovať a pripojiť", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exportovať", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ublock-doveryhodne-stranky_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Použiť zmeny", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Typ", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Doména", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Všetky", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Za oponou", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Aktívna karta", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Obnoviť obsah karty", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Prepnúť DOM inšpektor", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Prepnúť na vyskakovací panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Zaznamenávač", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Vyčistiť zaznamenávač", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pozastaviť zaznamenávač (vymazať všetky prichádzajúce dáta)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Pokračovať v zaznamenávaní", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Prepnúť filtrovanie zaznamenávača", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrovať obsah zaznamenávača", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Možnosti filtrovania zaznamenávača", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Nie", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokované", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "povolené", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "zmenené", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Z prvej strany", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Z tretej strany", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Podrobnosti", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Zoznam filtrov", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Pravidlo", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Kontext", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Koreňový kontext", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partnerská strana", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Typ", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Dynamické filtrovanie URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Kontext:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Typ:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statické filtrovanie", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} sieťové požiadavky {{type}} {{br}}, ktorých URL adresa sa zhoduje s {{url}} {{br}}a pochádza {{origin}},{{br}}{{importance}} zodpovedajúci výnimkový filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Zablokovať", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Povoliť", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "typu “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "akéhokoľvek typu", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "z “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "z odkiaľkoľvek", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "pokiaľ neexistuje", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "aj keď existuje", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statický filter {{filter}} bol nájdený v:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statický filter sa nepodarilo nájsť v žiadnom momentálne povolenom zozname filtrov", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Záznamy v zaznamenávači, ktoré nespĺňajú všetky 3 podmienky uvedené nižšie budú automatické zamietnuté:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Ponechať záznamy za posledných {{input}} minút", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Ponechať načítaných aspoň {{input}} strán na kartu", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Ponechať načítaných aspoň {{input}} položiek na kartu", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Pre každú položku zobraziť {{input}} riadky vo vertikálnom rozšírenom režime", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Skryť stĺpce:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Čas", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/pravidlo", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Kontext", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Zdroj požiadavky", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Zoznam", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabuľka", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Neformátované", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Formátované", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Otvoriť", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Vytvoriť nové hlásenie", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Vyhľadať podobné hlásenia", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentácia", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Prečítajte si dokumentáciu na uBlock/wiki a dozviete sa o všetkých funkciách uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Otázky a podpora", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Odpovede na otázky a iné druhy podpory pomoci sa poskytujú na subreddite /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problémy s filtrom/webová stránka je nefunkčná", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Nahlásenie problémov s filtrom s konkrétnymi webovými stránkami na uBlockOrigin/uAssets issue tracker. Vyžaduje sa GitHub účet.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Dôležité: Vyhnite sa používaniu iných podobne zameraných blokátorov spolu s uBlock Origin, pretože to môže spôsobiť problémy s filtrovaním na konkrétnych webových stránkach.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tipy: Uistite sa, že je váš zoznam filtrov aktuálny. Záznamenávač je primárnym nástrojom na diagnostiku problémov súvisiacich s filtrami.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Nahlásiť chybu", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Nahlásenie problémov so samotným uBlock Origin nauBlockOrigin/uBlock-issue issue tracker. Vyžaduje sa GitHub účet.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informácie o riešení problémov", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Nasledujú technické informácie, ktoré môžu byť užitočné, keď sa vám dobrovoľníci pokúšajú pomôcť vyriešiť problém.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Nahlásiť problém s filtrom", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Aby ste dobrovoľníkov nezaťažovali duplicitnými hláseniami, overte si, či už problém nebol nahlásený.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Zoznamy filtrov sa aktualizujú denne. Uistite sa, že váš problém už nebol vyriešený v najnovších zoznamoch filtrov.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Overte, či problém pretrváva aj po opätovnom načítaní problematickej webovej stránky.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adresa webovej stránky:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Webová stránka…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Vyberte položku --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Zobrazuje reklamy alebo zvyšky reklám", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Je prekrytá alebo má iné nedostatky", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Deteguje uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Má problémy súvisiace so súkromím", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Má problém s funkčnosťou, keď je povolený uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Otvára nechcené karty alebo okná", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Smeruje k badvéru a phishingu", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Označiť webstránku ako “NSFW” (Nie je bezpečné pre prácu”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Zásady ochrany osobných údajov", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Zoznam zmien", + "description": "" + }, + "aboutCode": { + "message": "Zdrojový kód (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Prispievatelia", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Zdrojový kód", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Preklady", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Zoznam filtrov", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Externé závislosti (kompatibilné s GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Vlastné zoznamy filtrov uBO sú voľne dostupné na nasledujúcich CDN:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Pri aktualizácii zoznamu filtrov sa použije náhodne vybraná CDN.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Zálohovať do súboru", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-moja-záloha_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Obnoviť zo súboru...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Obnoviť na predvolené nastavenia...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Všetky vaše nastavenia budú prepísané dátami zálohovanými {{time}} a uBlock sa reštartuje.\n\nPrepísať všetky existujúce nastavenia pomocou zálohovaných dát?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Dáta sa nepodarilo načítať alebo sú neplatné", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Všetky vaše nastavenia budú odstránené a uBlock sa reštartne.\n\nObnoviť uBlock na predvolené nastavenia?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Chyba siete: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Pridať", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "pred minútou", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "pred {{value}} minútami", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "pred hodinou", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "pred {{value}} hodinami", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "pred dňom", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "pred {{value}} dňami", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Zobraziť ovládací panel", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Zobraziť Zaznamenávač", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "vypnutý", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Blokovaná stránka", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin zabránil načítaniu nasledujúcej stránky:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Kvôli nasledujúcemu filtru", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "bez parametrov", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Nájdený v:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Naspäť", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Zatvoriť toto okno", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Už ma na túto stránku neupozorňovať", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Zakázať prísne blokovanie pre {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Dočasne", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Natrvalo", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Pokračovať", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Zablokovaná stránka chce presmerovať na inú stránku. Ak sa rozhodnete pokračovať, prejdete priamo na: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Dôvod:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Škodlivé", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Sledovač", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Pochybné", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exportovať do cloudového úložiska", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importovať z cloudového úložiska", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importovať z cloudového úložiska a zlúčiť so súčasnými nastaveniami", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Názov tohto zariadenia:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Upozornenie! Zmenu pokročilých nastavení vykonávate na vlastné nebezpečenstvo.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Poslať", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Použiť zmeny", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Vrátiť", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bajtov", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Zablokovať prvok v ráme…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Prihlásiť sa k odberu zoznamu filtrov…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Dočasne povoliť veľké multimediálne prvky", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Zobraziť zdrojový kód", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Zadajte klávesovú skratku", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Prepnúť zámok posúvania", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopírovať do schránky", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Vybrať všetko", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Prepnúť kozmetické filtrovanie", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Prepnúť JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Zmierniť režim blokovania", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Využité miesto: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Kliknite pre načítanie", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Chyby: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Pri spustení prehliadača sa nepodarilo správne filtrovať.\nZnova načítajte stránku, aby ste zaistili správne filtrovanie.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/sl/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/sl/messages.json new file mode 100644 index 00000000..ce457cdf --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/sl/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Končno, učinkovita, procesorju in pomnilniku prijazna razširitev za blokiranje oglasov.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Nadzorna plošča", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Pozor! Spremembe niso shranjene", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Ostani tu", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Prezri", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Nastavitve", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filtri tretjih oseb", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Moji filtri", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Moja pravila", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Seznam dovoljenih", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Bližnjice", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Dnevnik omrežnih zahtev", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "O razširitvi", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Podpora", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — pregled sredstev", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Napredne nastavitve", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klik: onemogoči/omogoči uBlock₀ za to stran.\n\nCtrl+klik: onemogoči uBlock₀ samo na tej strani.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Kliknite, da onemogočite uBlock₀ za to stran.\n\nPritisnite Ctrl in kliknite, da onemogočite uBlock₀ samo na tej strani.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Kliknite, da omogočite uBlock₀ za to stran.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "blokirane zahteve", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "na tej strani", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ali {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "od namestitve", + "description": "English: since install" + }, + "popupOr": { + "message": "ali", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blokirano na tej strani", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blokirano od namestitve", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Povezane domene", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Klikni za odpiranje nadzorne plošče", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Vklopi način izbire elementov", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Vklopi način izbire elementov", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Pojdi na dnevnik omrežnih zahtev", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Prijavi napako na tej strani", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Vklop/Izklop blokiranja vseh pojavnih oken za to stran", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Kliknite, da omogičite blokiranje vseh pojavnih oken za to stran", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Kliknite, da onemogočite blokiranje vsah pojavnih oken na tej strani", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Vklop/izklop blokiranja večjih medijev za to stran", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Kliknite, da omogičite blokiranje večjih medijev za to stran", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Kliknite, da onemogočite blokiranje večjih medijev za to stran", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Vklop/Izklop kozmetičnih filtrov za to stran", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Kliknite, da onemogočite kozmetično filtriranje na tej strani", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Kliknite, da omogočite kozmetično filtriranje na tej strani", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Vklopi/izklopi blokiranje oddaljenih pisav za to stran", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Kliknite, da omogočite blokiranje oddaljenih pisav na tej strani", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Kliknite, da onemogočite blokiranje oddaljenih pisav na tej strani", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klikni, da onemogočiš JavaScript na tej strani", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klikni, da prenehaš onemogočati JavaScript na tej strani", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Pojavna okna", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Veliki predstavnostni elementi", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kozmetično filtriranje", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Oddaljene pisave", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Več", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Manj", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globalna pravila: ta stolpec je za pravila, ki se uveljavljajo za vse strani.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokalna pravila: ta stolpec je za pravila, ki se uveljavljajo samo za trenutno stran. Lokalna pravila preglasijo globalna pravila.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Kliknite za uveljavitev sprememb.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Kliknite za preklic sprememb.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "vse", + "description": "" + }, + "popupImageRulePrompt": { + "message": "slike", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "tretjih oseb", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "css/slike tretje osebe", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "vrinjene skripti", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "strani lastni skripti", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "skripti tretjih oseb", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "okvirji tretjih oseb", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "povezane domene", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} od {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Različica", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Ustvari", + "description": "English: Create" + }, + "pickerPick": { + "message": "Izberi", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Končaj", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Predogled", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Omrežni filtri", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kozmetični filtri", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klik, Ctrl-klik", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blokiraj element", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Skrij držala blokiranih elementov", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Prikaži število blokiranih zahtevkov na ikoni", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Onemogoči namige", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Izkoristite kontekstni meni, kjer je to primerno", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Način prijazen barvno slepim uporabnikom", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Izgled", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Barva akcenta po meri", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Omogoči podporo za shrambo v oblaku", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Sem napreden uporabnik (Potrebno branje)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Onemogoči prednalaganje strani (da se prepreči kakršno koli povezavo za blokirane zahteve omrežja)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Onemogoči revizijo hiperlinkov (Hyperlink-auditing)", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Prepreči izpostavitev lokalnega IP naslova preko WebRTC", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Privzeto ravnanje", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Te privzete nastavitve lahko spremenite za posamezne strani", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Onemogoči kosmetično filtriranje", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blokiraj medijske elemente večje kot {input:number} kB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blokiraj oddaljene pisave", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Onemogoči JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blokiraj CSP poročila", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Napredno", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funkcije primerne zgolj za napredne uporabnike", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "napredne nastavitve", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Zadnja obnovitev:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Zadnja varnostna kopija:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} omrežnih in {{cosmeticFilterCount}} kozmetičnih filtrov od:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "uporabljenih {{used}} od {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Samodejno posodabljanje seznama filtrov.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Posodobi zdaj", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Sprosti celoten predpomnilnik", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Razčleni in uveljavi kozmetične filtre.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

Ta opcija omogoči razčlenjevanje in uveljavljanje Adblock Plus kompatibilnih filtrov za “skrivanje elementov” Le-ti filtri so v bistvu kozmetični in služijo skrivanju elementov na spletnih straneh, ki jih lahko obravnavamo kot \"vizualna nadloga\", in taki, ki se jih preko filtrov zahtev omrežja ne da blokirati.

\n

Vklop te funkcije poveča spominski odtis uBlock₀.

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignoriraj generične kozmetične filtre", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

Generični vizualni filtri so vizualni filtri, ki naj bi bili uporabljeni na vseh spletnih straneh.

Kljub temu, da je njihova uporaba v uBlock₀ učinkovita, generični vizualni filtri lahko, na nekaterih spletnih straneh (še posebno na velikih in starih), pripomorejo k opazni dodatni porabi pomnilnika in uporabi CPE.

Omogočitev te funkcije bo zmanjšala porabo pomnilnika in uporabo CPE, ki nastane kot rezultat dodajanja generičnih vizualnih filtrov, in tudi zmanjšala porabo pomnilnika dodatka uBlock₀.

Priporočeno je, da omogočite to možnost na manj zmogljivih napravah.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Prekini aktivnosti omrežja, dokler niso naloženi vsi filtri", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Seznam blokiranih gostiteljev", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Uveljavi spremembe", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Lokalno", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Oglasi", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Zasebnost", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Zaščita pred zlonamerno programsko opremo, varnost", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "\t\nNadlegovanje", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Večnamenski", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regije, jeziki", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Po meri", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Uvozi ...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "En URL na vrstico. Vrstice s predpono ‘!’ in neveljavni URL-ji bodo prezrti.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "zastarelo", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "view content", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Zadnja posodobitev: {{ago}}", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Posodabljanje ...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Omrežna napaka je preprečila posodobitev virov.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Uvozi in dodaj", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Izvozi", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "moji-ublock-staticni-filtri_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Uporabi spremembe", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Stalna pravila", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Začasna pravila", + "description": "header" + }, + "rulesRevert": { + "message": "Povrni", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Stori", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Uredi", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Shrani", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Zavrži", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Uvozi iz datoteke...", + "description": "" + }, + "rulesExport": { + "message": "Izvozi v datoteko", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "moji-ublock-dinamicna-pravila_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Seznam vaših dinamičnih pravil filtriranja.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Sintaksa pravil: vir destinacija tip akcija (polna dokumentacija (v angleščini)).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Razvrsti", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Tip pravila", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Vir", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Cilju", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Vaš seznam gostiteljskih naslovov, za katere želite, da je uBlock₀ izklopljen. En vnos na vrstico. Neveljavna gostiteljska imena bodo brez opozoril ignorirana.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Uvozi in dodaj", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Izvozi", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "moj-ublock-seznam-dovoljenih_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Uveljavi spremembe", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Vrsta", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domena", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Vse", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Za zaveso", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Trenutni zavihek", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Ponovno naloži vsebino zavihka", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Preklopi DOM pregledovalnik", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Preklopi pojavno okno", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Dnevnik omrežnih zahtev", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Počisti dnevnik omrežnih zahtev", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Ustavi dnevnik omrežnih zahtev (zavrne vse prihajajoče zahteve)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Nadaljuj dnevnik omrežnih zahtev", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Preklopi filtriranje dnevnika", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtriraj vnose dnevnika", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Nastavitve filtriranja dnevnika", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Ni", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blokiran", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "dovoljeno", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "spremenjeno", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1. osebni", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3. osebni", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Podrobnosti", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Seznam filtrov", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Pravilo", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Vsebina", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Glavna vsebina", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Pripadnost", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Vrsta", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Dinamično URL filtriranje", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Vsebina:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Vrsta:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statično filtriranje", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} zahteve omrežja {{type}} {{br}}katerih URL naslov se ujema z {{url}} {{br}}in izvirajo iz {{origin}},{{br}}{{importance}} obstaja ustrezen filter izjeme.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blokiraj", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Dovoli", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "vrsta {{type}}", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "vsaka vrsta", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "iz “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "iz kjerkoli", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "razen če", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "tudi če", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statičen filter {{filter}} najden v:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statični filter {{filter}} ni bil najden v nobenem izmed trenutno izbranih seznamov", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Zapisi, ki ne ustrezajo vsem spodaj podanim pogojem, bodo avtomatsko zavrženi:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Ohrani vnose izpred zadnjih {{input}} minut", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Ohrani največ {{input}} nalaganj strani na zavihek", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Ohrani največ {{input}} vnosov na zavihek", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Uporabi {{input}} vrstic pri vsakem vnosu v navpično razširjenem načinu", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Skrij stolpce:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} čas", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} filter/pravilo", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} vsebina", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Pripadnost", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Seznam", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabela", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Navaden", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Odpri", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Ustvari novo poročilo", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Najdi podobna poročila", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentacija", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Preberi dokumentacijo na uBlock/wiki, da izveš vse o funkcijah uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Vprašanja in podpora", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Odgovori na vprašanja in druga pomoč so na voljo na forumu /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Težave s filtrom/stran ne deluje", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Prijavi težave s filtrom na posameznih straneh v uBlockOrigin/uAssets sledilnik težav.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Pomembno: Izogibajte se sočasni uporabi podobnih orodij za blokiranje, to lahko povzroči težave s filtrom na posameznih straneh.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Preverjajte, da so vaši seznami filtrov redno posodobljeni. Zapisovalnik je glavno orodje za diagnostiko težav s filtri.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Prijavi napako", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Prijavi težave z uBlock Origin na uBlockOrigin/uBlock-issuesledilnik težav. Potreben je GitHub račun.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Informacije za odpravljanje težav", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Prijavi napako filtra", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Zaradi preprečitve obremenjevanja prostovoljcev s podvojenimi poročili prosim preveri da težava še ni bila sporočena.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Naslov spletne strani:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Spletna stran …", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Izberi vnos --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Prikaže reklame ali ostanke reklam", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Ima probleme povezane z zasebnostjo", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Pravilnik o zasebnosti", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Dnevnik sprememb", + "description": "" + }, + "aboutCode": { + "message": "Izvorna koda (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Razvijalci", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Izvorna koda", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Prevodi", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Seznami filtrov", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Zunanje odvisnosti (GPLv3-kompatibilne):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's own filter lists are freely hosted on the following CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Ob posodobitvi seznama filtrov se uporabi naključno izbran CDN", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Naredi varnostno kopijo v datoteko", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "moja-ublock-varnostna-kopija_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Obnovi iz datoteke...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Ponastavi na privzete nastavitve...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Vse vaše nastavitve bodo prepisane s podatki, ki so bili varnostno shranjeni {{time}}. uBlock₀ se bo ponovno zagnal.\n\nPrepišem vse obstoječe nastavitve z varnostno shranjenimi podatki?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Podatki varnostne kopije niso uspeli biti uspešno prebrani oz. so neveljavni", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Vse vaše spremembe bodo izbrisane, uBlock₀ pa se bo ponovno zagnal.\n\nPonastavim uBlock₀ na tovarniške nastavitve?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Ne morem se povezati do {{url}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Naročite se", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "1 minuto nazaj", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minut nazaj", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "1 uro nazaj", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} ur nazaj", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "1 dan nazaj", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} dni nazaj", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Prikaži nadzorno ploščo", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Prikaži dnevnik", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "izklop", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Page blocked", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock₀ je preprečil nalaganje naslednje strani:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Zaradi sledečega filtra", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "brez parametrov", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Najden v:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Nazaj", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Zapri to okno", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Onemogoči striktno blokiranje za {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Začasno", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Trajno", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceed", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Izvozi v shrambe oblaka", + "description": "tooltip" + }, + "cloudPull": { + "message": "Uvozi iz shrambe oblaka", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Uvozi iz oblaka in spoji s trenutnimi nastavitvami", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Ime te naprave:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Opozorilo! Sprememba teh naprednih nastavitev na lastno odgovornost.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Predloži", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Uveljavi spremembe", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Povrni", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "biti", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blokiraj element v okvirju", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Naroči se na seznam filtrov..", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Začasno dovoli velike medijske elemente", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Vnesite bližnjico", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Preklopi zaklenjeno drsenje", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopiraj v odložišče", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Izberi vse", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Preklopi lepotno filtriranje", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Sprostite način blokiranja.", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Uporabljena shramba: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Kliknite za prikaz", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/so/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/so/messages.json new file mode 100644 index 00000000..b8930b03 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/so/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Ugu dambeyntii, xannibaado hufan. Ku fudud oo ku saabsan CPU iyo xusuusta.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock? - Dashboard", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Digniin! Waxaad leedahay isbedelo aan la keydin", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Halkan joog", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Iska daa", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Dejinta", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Liisaska sifee", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "filtarradayda", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Xeerarkayga", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Goobaha lagu kalsoon yahay", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Jid gaaban", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock? - Logger", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Ku saabsan", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Taageero", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock? - Daawaha hantida", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Dejinta horumarsan", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Guji: dami/damar uBlock? goobtan. ", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Click to disable uBlock₀ for this site.\n\nCtrl+click to disable uBlock₀ only on this page.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Ctrl+guji: dami uBlock? kaliya boggan.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "Guji si aad u joojiso uBlock? ee goobtan. ", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "on this page", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "Ctrl+guji si aad u joojiso uBlock? kaliya boggan.", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "Guji si aad awood ugu siiso uBlock? goobtan.", + "description": "English: since install" + }, + "popupOr": { + "message": "codsiyada la xannibay", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "boggan", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "{{count}} ({{boqolkiiba}}%)", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "tan iyo markii la rakibo", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "ama", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Xiray boggan", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Xirmay tan iyo markii la rakibay", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Domains ku xiran", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Report an issue on this website", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Fur dashboard-ka", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Geli qaabka zapper element", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Geli qaabka xulashada walxaha", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Fur qoraha", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Bedeli xannibaadda dhammaan soo-baxayaasha goobtan", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Guji si aad u xannibto dhammaan popup-yada goobtan", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Guji si aadan mar dambe u xannibin dhammaan soo-bandhigyada goobtan", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "U beddel xannibaadda walxaha waaweyn ee warbaahinta ee goobtan", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Guji si aad u xannibto qaybaha warbaahinta waaweyn ee boggan", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Guji si aanad mar dambe u xannibin qaybaha warbaahinta waaweyn ee boggan", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "U beddel shaandhaynta qurxinta goobtan", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Guji si aad u joojiso shaandhaynta isqurxinta ee goobtan", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Guji si aad awood ugu siiso shaandhaynta goobtan", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "U beddel xannibaadda xarfaha fog ee boggan", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Guji si aad u xannibto farta fog ee goobtan", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Guji si aadan mar dambe u xannibin farta fog ee goobtan", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Guji si aad JavaScript uga joojiso goobtan", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Guji si aad mar dambe u damin JavaScript ee goobtan", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "daaqadaha soo booda", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Qaybaha warbaahinta waaweyn", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Shaandhaynta qurxinta", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Farta fog", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Local rules: this column is for rules which apply to the current site only.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Wax badan", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "In ka yar", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "Xeerarka caalamiga ah: tiirkan waxaa loogu talagalay xeerar khuseeya dhammaan bogagga.", + "description": "" + }, + "popupImageRulePrompt": { + "message": "Xeerarka maxalliga ah: tiirkan waxaa loogu talagalay xeerar khuseeya goobta hadda jirta oo keliya. ", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Xeerarka maxalliga ah ayaa meesha ka saaraya xeerarka caalamiga ah.", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "Guji si aad isbeddelkaaga uga dhigto mid joogto ah.", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "Guji si aad u soo celiso isbedeladaada", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "dhammaan", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "sawiro", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "xisbiga 3aad", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "CSS/sawirrada xisbiga 3aad", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "xarfaha xariiqda", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Qoraallada xisbiga 1-aad", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "domains ku xiran", + "description": "English: Create" + }, + "pickerPick": { + "message": "{{tirinta}} ka baxsan {{ total}}", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Nooca", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "?: Xooga saar safafka leh meeraha xisbiga 3aad", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "?: Xooga saar safafka leh meeraha xisbiga 3aad", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Abuur", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Dooro", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Jooji", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Horudhac", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Shabakadda shabkada", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Shaandhooyinka qurxinta", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Guji, Ctrl-guji", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Cunsurka xannibi...", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Appearance", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Theme", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Qari meel-hayeyaasha walxaha xanniban", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Ku muuji tirada codsiyada la xannibay ee sumadda", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Isticmaal macnaha guud marka ay habboon tahay", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Midab-indho la'aan saaxiibtinimo", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Daar taageerada kaydinta daruuraha", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Waxaan ahay isticmaale horumarsan (akhris loo baahan yahay)", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "goobaha horumarsan", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Dami soo-keenista ka hor (si looga hortago xidhiidh kasta ee codsiyada shabakada la xidhay)", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Jooji xisaabinta hyperlink", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Ka ilaali WebRTC inay soo daadato cinwaannada IP-ga maxalliga ah", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Dabeecada aan caadiga ahayn", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Dabeecadahan aan caadiga ahayn waa laga gudbi karaa si ku saleysan goob kasta", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Dami shaandhaynta qurxinta", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Advanced", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "Dami tilmaanta aaladaha", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Jooji walxaha warbaahinta ee ka weyn {{input}} KB", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Jooji xarfaha fogfog", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "Dami JavaScript", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "Jooji warbixinnada CSP", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Ka fur magacyada canonical", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Soo celinta u dambaysay:", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Kaydka u dambeeya:", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "filtarrada shabkada {{netFilterCount}} ? {{cosmeticFilterCount}} filtarrada qurxinta ee:", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "{{la isticmaalay}} la isticmaalay {{ total}}", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Si otomaatig ah u cusbooneysii liisaska shaandhada", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Cusbooneysii hadda", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Kala saar oo dhaqan geli filtarrada qurxinta", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Shaandhooyinka isqurxintu waxay u adeegaan inay ku qariyaan walxaha ku jira bogga shabakadda kuwaas oo loo arko inay dhib ku yihiin aragga, oo aanay xannibi karin matoorada shaandhaynta ku salaysan codsiga shabakadda.", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Iska daa filtarrada guud ee qurxinta", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Shaandhooyinka isqurxinta guud waa filtarrada qurxinta kuwaas oo loogu talagalay in lagu dabaqo dhammaan shabakadaha internetka. Awood u yeelashada doorashadan waxay meesha ka saaraysaa xusuusta iyo dusha sare ee CPU ee lagu daray boggaga internetka taasoo ka dhalatay maaraynta filtarrada isqurxinta guud. ", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Ilaalinta Malware-ka, amniga", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Waxaa lagu talinayaa in lagu suurtageliyo doorashadan aaladaha awoodda yar.", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Liisaska martida la xannibay", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Codso isbeddelada", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Lagu dhex dhisay", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Xayeysiisyada", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Qarsoodi", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Goobaha Malware", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "Cadhada", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Ujeedo badan", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Gobollada, luqadaha", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Caadiyan", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Hal URL laynkiiba. URL-yada aan ansax ahayn waa la iska indho-tiraa aamusnaan.", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Waqtigii dhacay", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "fiiri nuxurka", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Cusbooneysii ugu dambeysay: {{ago}} ", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Guji si aad u qasbi cusbooneysiinta", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Cusbooneysiinta...", + "description": "header" + }, + "rulesRevert": { + "message": "Cilad shabakadeed ayaa ka hor istaagtay in kheyraadka la cusboonaysiiyo.", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Hal filter halkii sadar Shaandheeyaha wuxuu noqon karaa magaca martida loo yahay ee cad, ama shaandhada ku habboon Adblock Plus. Khadadka horgalayaasha leh ! waa la iska indhatiraa", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Soo deji oo ku dheji", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Dhoofinta", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Codso isbeddelada", + "description": "" + }, + "rulesExport": { + "message": "Xeerarka joogtada ah", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "Xeerarka ku meel gaadhka ah", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Soo noqo", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Ballanqaad", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Wax ka beddel", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Badbaadin", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Tuur", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Ka soo deji faylka...", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "U Dhoofinta faylka", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Liiska xeerarka shaandhaynta firfircoon.", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "Xeerka syntax: nooca goobta loo socdo (full documents ).", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Kala sooc:", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Nooca qaanuunka", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Xigasho", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "Meesha loo socdo", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Awaamiirta goobta lagu kalsoon yahay ayaa tilmaamaysa boggaga internetka ee uBlock Origin waa in la curyaamiyo. Hal gelitaan halkii sadar. Awaamiirta aan ansax ahayn si aamusnaan ah ayaa loo indhatiraa oo faallo looga bixin doonaa.", + "description": "English: Filter" + }, + "logAll": { + "message": "Soo deji oo ku dheji", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Dhoofinta", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Codso isbeddelada", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Nooca", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Domain", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "URL", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Shaandhayso", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Dhammaan", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Shaxda", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "tab hadda", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "Dib u soo rar nuxurka tab", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Bedeli kormeeraha DOM", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Beddel guddiga soo booda", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "Nadiifi logger", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "Jooji logger (ka tuur dhammaan xogta soo socota)", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "Jooji gooyaha", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Beddel shaandhaynta logger", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "shaandhayso waxa ku jira logger", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Xulashada shaandhaynta Logger", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Maya", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "dhacdo", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "xannibay", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "ogol yahay", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "wax laga beddelay", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "xisbiga 1aad", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "xisbiga 3aad", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "Faahfaahin", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Shaandhayso", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Liiska kala shaandheynta", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Xeer", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Dulucda", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "macnaha guud", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Xaflada", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Nooca", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "URL", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "Xeerka URL", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "Dulucda:", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "Nooca:", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "Shaandheeyaha taagan", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "{{action}} codsiyada shabakada {{type}} {{br}} URL kee u dhigma {{url}} {{br}}oo asal ahaan ka soo jeeda {{asalka}},{{br}}{{{muhiimada} } waxaa jira shaandheyn ka reeban oo ku habboon.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Block", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Allow", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "ku qor \"{{type}}\"", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "nooc kasta", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "ka \"{{asalka}}\"", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "meel kasta ka yimid", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "marka laga reebo", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "xataa haddii", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "Shaandheeyaha taagan {{filter}} ayaa laga helay:", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "Shaandhaynta taagan lagama helin mid ka mid ah liisaska shaandhaynta hadda karti u leh", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "Gelida Logger ee aan buuxin dhammaan saddexda shuruudood ee hoose si toos ah ayaa loo tuurayaa:", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "Kaydi gelida daqiiqadihii ugu dambeeyay {{Input}}", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Ilaali ugu badnaan {{input}} culayska bogga tabkiiba", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Ilaali ugu badnaan {{input}} gelinta tab kasta", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Isticmaal {{input}} khadadka gelistaba qaab si toosan loo fidiyay", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Qari tiirarka:", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "{{Input}} Waqtiga", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Create new report on GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Find similar reports on GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "{{input}} Shaandhayso/xukun", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "{{Input}} Dulucda", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "{{Input}} Xaflada", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Liiska", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Miis", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Cad", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Markdown", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Furan", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Dukumeenti", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Ka akhri dukumeentiga uBlock/wiki si aad wax uga ogaato dhammaan astaamaha uBlock Origin.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Su'aalo iyo taageero", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Jawaabaha su'aalaha iyo noocyada kale ee taageerada caawimada waxaa lagu bixiyaa subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Talooyin: Hubi in liisaska shaandhayntaadu ay cusub yihiin. Logger waa aaladda koowaad ee lagu baadho arrimaha shaandhada la xiriira.", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Warbixinta cayayaanka", + "description": "" + }, + "aboutCode": { + "message": "Ka warbixi arrimaha uBlock Origin laftiisa uBlockOrigin/uBlock-issue arin tracker. Wuxuu u baahan yahay akoon GitHub", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Macluumaadka Cilad-bixinta", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Hoos waxaa ah macluumaadka farsamada oo laga yaabo inay faa'iido leedahay marka tabaruceyaashu ay isku dayayaan inay kaa caawiyaan xallinta dhibaatada.", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Muhiim: Macluumaad gaar ah ama mid xasaasi ah ayaa si toos ah wax looga beddelay. Macluumaadka dib loo habeeyey ayaa laga yaabaa inay sii adkeeyaan xallinta mushkiladda.", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Dib u habeyn", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Aan waxba laga beddelin", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Qaanuunka Arrimaha Khaaska ah", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Changelog", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Koodhka isha (GPLv3)", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "Wax ku darsaday", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Source code", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Turjumaada", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Liisaska sifee", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Ku tiirsanaanta dibadda (GPLv3-ku habboon):", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Liisaska shaandhaynta uBO ayaa si xor ah loogu martigaliyay kuwa soo socda CDNs:", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "CDN si aan kala sooc lahayn loo soo doortay ayaa la isticmaalaa marka liiska shaandhada loo baahan yahay in la cusboonaysiiyo", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "Ka soo celi faylka...", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "Dib u deji dejinta caadiga ah...", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "Dhammaan dejimahaaga waa lagu beddeli doonaa iyadoo la adeegsanayo xogta la xoojiyay {{waqtiga}}, iyo uBlock? ayaa dib u bilaaban doona. ", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} hours ago", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "Dib u qor dhammaan dejimaha jira adiga oo isticmaalaya xogta la taageeray?", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "Xogta lama akhrin karo ama waa khalad", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Dhammaan dejimahaaga waa laga saari doonaa, oo uBlock? dib ayuu u bilaabi doonaa. ", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Show Logger", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "Dib u deji uBlock? u dejisay dejinta warshadda?", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Page blocked", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "Cilada shabakada: {{msg}}", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "uBlock?: Ku dar URL-kan soo socda liisaska shaandhaynta gaarka ah? ", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "without parameters", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Ciwaanka: \"{{ciwaanka}}\" ", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "URL: {{url}}", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Subscribe dheh", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "hal daqiiqo ka hor", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "{{value}} daqiiqo kahor", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "saacad ka hor", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceed", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "{{value}} saac kahor", + "description": "tooltip" + }, + "cloudPull": { + "message": "maalin ka hor", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "{{value}} maalmo kahor", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Muuji Logger", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "off", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "UBlock Origin ayaa ka diiday bogga soo socda in la soo raro:", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "shaandhada soo socota awgeed", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "aan xuduud lahayn", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "Laga helay:", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Ku noqo", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Xir daaqadan", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Dami xannibaadda adag ee {{hostname}}", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Si ku meel gaar ah", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Si joogto ah", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "U dhoofi kaydinta daruuraha", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Ka soo deji kaydinta daruuraha", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "... ", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "...", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "Qalabkan magaca:", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "Digniin! Beddel goobahan horumarsan khatartaada.", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "Gudbi", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Codso isbeddelada", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/sq/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/sq/messages.json new file mode 100644 index 00000000..1514304f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/sq/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Më në fund, një bllokues efikas që nuk e rëndon procesorin dhe memorien.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Paneli i kontrollit", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Kujdes! Nuk keni ruajtur ndryshimet", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Qëndroj", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Shpërfill", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Parametrat", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Listat e filtrave", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Filtrat e mi", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Rregullat e mia", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Faqet e besuara", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Shkurtoret", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Regjistri i kërkesave", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Info", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Ndihma teknike", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Treguesi i aseteve", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Parametrat e avancuar", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Ç/aktivizoni uBlock₀ te ky uebsajti.\n\nKlikimi+Ctrl e çaktivizon uBlock₀ vetëm te kjo faqja.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Çaktivizoni uBlock₀ te ky uebsajti.\n\nKlikimi+Ctrl e çaktivizon uBlock₀ vetëm te kjo faqja.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Aktivizoni uBlock₀ te ky uebsajti.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "kërkesa të bllokuara", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "te kjo faqe", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ose {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "që prej instalimit", + "description": "English: since install" + }, + "popupOr": { + "message": "ose", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Te kjo faqe janë bllokuar", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Nga fillimi janë bllokuar", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domenet që janë lidhur", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Hapni panelin e kontrollit", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Asgjësuesi i elementeve", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Përzgjedhësi i elementeve", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Regjistri i kërkesave", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Raportoni problemin me uebsajtin", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Zh/Bllokoni të gjitha dritaret modale te uebsajti", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Bllokoni të gjitha dritaret modale te uebsajti", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Zhbllokoni të gjitha dritaret modale te uebsajti", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Zh/Bllokoni elementet e mëdha multimediale te uebsajti", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Bllokoni elementet e mëdha multimediale te uebsajti", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Zbllokoni elementet e mëdha multimediale te uebsajti", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Ç/Aktivizoni filtrat kozmetikë te uebsajti", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Çaktivizoni filtrat kozmetikë te uebsajti", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Aktivizoni filtrat kozmetikë te uebsajti", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Zh/Bllokoni modelet e jashtme shkronjore te uebsajti", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Bllokoni modelet e jashtme shkronjore te uebsajti", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Zhbllokoni modelet e jashtme shkronjore te uebsajti", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Çaktivizoni JavaScript-in te uebsajti", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Aktivizoni JavaScript-in te uebsajti", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Dritaret modale", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Elementet e mëdha multimediale", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Filtrat kozmetikë", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Modelet e jashtme shkronjore", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Më shumë", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Më pak", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Rregullat globale: rregullat në këtë shtyllë aplikohen për të gjitha uebsajtet.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Rregullat lokale: rregullat në këtë shtyllë aplikohen vetëm për këtë uebsajtin.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Ruani përgjithnjë ndryshimet.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Ktheni ndryshimet.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "të gjitha", + "description": "" + }, + "popupImageRulePrompt": { + "message": "imazhet", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "palët e treta", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/imazhet nga palët e treta", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "skriptet e integruara", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "skriptet nga pala kryesore", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "skriptet nga palët e treta", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "kuadrot nga palët e treta", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domenet që janë lidhur", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} nga {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Versioni", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skript", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "kuadër", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Krijoj", + "description": "English: Create" + }, + "pickerPick": { + "message": "Përzgjedh", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Mbyll", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Parashikoj", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Filtrat e rrjetit", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Filtrat kozmetikë", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Kliko, Kliko me Ctrl", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Bllokoj elementin…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Fsheh treguesin e elementeve të bllokuara", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Shfaq në ikonë numrin e kërkesave të bllokuara", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Çaktivizoj përshkrimet e shkurtra", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Përdor menunë kontekstuale sipas rrethanave", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Përshtat ngjyrat për daltonikët", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Paraqitja", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Motivi", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Personalizoj ngjyrën e theksuar", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Aktivizoj renë informatike", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Kam njohuri të thelluara", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Çaktivizoj kërkesat paraprake (për të shmangur lidhjet me kërkesat e bllokuara)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Çaktivizoj analizën e lidhjeve hipertekstuale", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Nuk lejoj WebRTC-në që të zbulojë adresat IP lokale", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Vlerat standarde", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Këto vlera mund të ndryshohen sipas uebsajtit", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Çaktivizoj filtrat kozmetikë", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Bllokoj elementet multimediale më të mëdha se {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Bllokoj modelet e jashtme shkronjore", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Çaktivizoj JavaScript-in", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Bllokoj raportet e CSP-së", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Demaskoj emrat kanonikë", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Parametrat e avancuar", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funksione të përshtatshme vetëm për specialistët", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "parametrat e avancuar", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Rindërtimi i fundit:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Kopja e fundit:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} filtra rrjeti + {{cosmeticFilterCount}} filtra kozmetikë nga:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "përdor {{used}} nga {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Përditësoj automatikisht filtrat", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Përditësoj tani", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Heq të gjitha stoqet", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Analizoj dhe zbatoj filtrat kozmetikë", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Filtrat kozmetikë shërbejnë për të fshehur nga ana vizive elementet e padëshirueshme të faqes, të cilat nuk bllokohen me metodën standarde të filtrimit sipas kërkesës.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Nuk marr parasysh filtrat kozmetikë jospecifikë", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Filtrat kozmetikë jospecifikë janë filtra që aplikohen për të gjitha faqet e internetit. Me aktivizimin e këtij opsioni ulet ngarkesa e memories dhe procesorit.\n\nKy opsion rekomandohet për aparatet kompjuterike jo shumë të shpejta.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Pezulloj aktivitetin deri kur të jenë gati të gjitha listat", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lista e hosteve të bllokuara", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Ruaj ndryshimet", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Lokale", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklamat", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Privatësia", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Domenet e dëmshme, siguria", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Veglat sociale", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Njoftimi për cookies", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Elementet e bezdisshme", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Për qëllime të ndryshme", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Sipas rajonit, gjuhës", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Personale", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importoj…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Një URL për rresht. Nuk do të merren parasysh adresat e pasakta.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "E vjetër.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "shfaqni përmbajtjen", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Përditësimi i fundit: {{ago}}.\nKlikoni për ta përditësuar vetë.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Përditëson…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Një problem me rrjetin kompjuterik pengoi përditësimin e informacionit.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Mos shtoni filtra nga burime të pabesueshme.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Aktivizoj filtrat e mi të personalizuar", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Lejoj filtrat e personalizuar që duhen besuar", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importoj dhe shtoj…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Eksportoj…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Ruaj ndryshimet", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Rregullat e përhershme", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Rregullat e përkohshme", + "description": "header" + }, + "rulesRevert": { + "message": "Rikthej", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Aplikoj", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Modifikoj", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Regjistroj", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Anuloj", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importoj nga skedari…", + "description": "" + }, + "rulesExport": { + "message": "Eksportoj në skedar…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Lista e rregullave për filtrimin dinamik.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rregullat e sintaksës: burimi destinacioni lloji veprimi (dokumentimi i plotë).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Rendit:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Lloji i rregullës", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Burimi", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destinacioni", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Kjo listë paraqet faqet e besuara të internetit në të cilat uBlock Origin duhet çaktivizuar. Një element për rresht.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importoj dhe shtoj…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Eksportoj…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Ruaj ndryshimet", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Lloji", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domeni", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtri", + "description": "English: Filter" + }, + "logAll": { + "message": "Të gjitha", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Në prapaskenë", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Skeda aktuale", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Freskoni përmbajtjen e skedës", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Ç/Aktivizoni strukturën DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Ç/Aktivizoni panelin modal", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Regjistri i kërkesave", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Pastroni regjistrin", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Ndërprisni regjistrimin (e gjithë të dhënave të tjera)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Rifilloni regjistrimin", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Ç/Aktivizoni filtrat e regjistrit", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtroni zërat në regjistër", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Opsionet e filtrimit të regjistrit", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Jo", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "plot ngjarje", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "e bllokuar", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "e lejuar", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "e modifikuar", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "palët kryesore", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "palët e treta", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detajet", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtri", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Lista e filtrave", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Rregulla", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Konteksti", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Konteksti bazë", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Palët", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Lloji", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Filtrimi sipas URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Konteksti:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Lloji:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Filtrimi statik", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} kërkesat e {{type}} {{br}}që korrespondojnë me adresën {{url}} {{br}}dhe që e kanë origjinën {{origin}},{{br}}{{importance}} ekziston një filtër përjashtues i njëjtë.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Bllokoj", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Lejoj", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "llojit “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "çdo lloji", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "nga “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "ngado", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "përveçse kur", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "edhe kur", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Filtri statik {{filter}} gjendet në:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Nuk u gjet filtri statik në asnjërën prej listave aktive", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Zërat në regjistër do të fshihen automatikisht kur nuk plotësojnë këto tri kushte:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Ruaj zërat e {{input}} minutave të fundit", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Ruaj jo më shumë se {{input}} faqe të reja për skedë", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Ruaj jo më shumë se {{input}} zëra për skedë", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Në pamjen e zgjeruar përdor {{input}} rreshta për zë", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Shtyllat e fshehura:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Ora", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtri/rregulla", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Konteksti", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Palët", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Listë", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabelë", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "E paformatuar", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Hap", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Krijoj raport të ri në GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Gjej raporte të ngjashme në GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentacioni", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Lexoni uBlock/wiki që të mësoni më shumë për funksionet e uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Pyetjet dhe ndihma teknike", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Në forumin e dedikuar Reddit /r/uBlockOrigin mund të bëni pyetje dhe të kërkoni çdolloj ndihme tjetër.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Problemet me filtrat/faqet me defekte", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Problemet e disa faqeve me filtrat duhen raportuar në ditarin e problemeve uBlockOrigin/uAssets. Duhet një konto GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Kujdes: uBlock Origin nuk duhet përdorur njëkohësisht me aplikacione të ngjashme bllokuese, pasi mund të keni probleme me filtrat.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Këshilla: Sigurohuni që të përditësoni listat e filtrave. Regjistri është instrumenti kryesor për diagnostikimin e problemeve me filtrat.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Raportimi i problemeve", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Problemet e uBlock Origin duhen raportuar në ditarin e problemeve uBlockOrigin/uBlock-issue. Duhet një konto GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Diagnostikimi i problemeve", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Informacioni teknik i mëposhtëm u shërben personave të cilët përpiqen të zgjidhin problemin që keni.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Raportoni problemet me filtrat", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Verifikoni a është raportuar edhe më parë që të mos i lodhni vullnetarët e tjerë me të njëjtat probleme. Shënim: kur klikoni butonin, origjina e faqes do të dërgohet në GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Listat e filtrave përditësohen rregullisht. Sigurohuni që problemi qëndron edhe me listat e reja.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verifikoni a qëndron problemi nëse e freskoni sërish faqen në fjalë.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Adresa e faqes:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Faqja…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Zgjidhni --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shfaq reklama ose pjesë reklamash", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Ka mbivendosje ose parregullsi të tjera", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "E di që përdor uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Ka probleme me privatësinë", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Bllokohet kur aktivizoj uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Hap skeda ose dritare të panevojshme", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Çon në instalimin e programeve keqdashëse, mashtruese", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Etiketoj faqen si “NSFW” (“E papërshtatshme për punë”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Politika e privatësisë", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Ditari i ndryshimeve", + "description": "" + }, + "aboutCode": { + "message": "Materiali burimor (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Kontribuesit", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Materiali burimor", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Përkthimet", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Listat e filtrave", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Programet kushtëzuese (sipas GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Listat e filtrave të uBO mundësohen falas në CDN-të e mëposhtme:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Përditësimi i listave do të kryhet nëpërmjet një CDN-je rastësore.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Kopjoj në skedar…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Rindërtoj sipas skedarit…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Kthej parametrat fillestarë…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Të gjithë parametrat do të mbishkruhen me të dhënat e kopjuara më {{time}}, dhe uBlock₀ do të hapet sërish.\n\nDo mbishkruani parametrat aktualë?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Të dhënat nuk lexohen ose mund të jenë dëmtuar", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Të gjithë parametrat do të fshihen dhe uBlock₀ do të hapet sërish.\n\nDo ktheni parametrat origjinalë?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Problem me rrjetin kompjuterik: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Abonohem", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "një minutë më parë", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minuta më parë", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "një orë më parë", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} orë më parë", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "një ditë më parë", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} ditë më parë", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Paneli i kontrollit", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Regjistri i kërkesave", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "fikur", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Faqe e bllokuar", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin po pengon hapjen e faqes:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Për shkak të filtrit", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "pa parametra", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Gjendet në:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Kthehem", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Mbyll dritaren", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Mos më lajmëro për këtë faqen", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Zhbllokoj mënyrën strikte për {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Përkohësisht", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Gjithnjë", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Vazhdoj", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Faqja e bllokuar do t'ju drejtojë në një uebsajt tjetër. Në rast se vijoni do të shkoni te: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Arsyeja:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Dëmtuese", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Gjurmues", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Joserioze", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Eksportoni në renë informatike", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importoni nga reja informatike", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importoni nga reja informatike dhe bashkoni me parametrat aktualë", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Emri i aparatit:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Kujdes! Mbani ju përgjegjësi nëse i ndryshoni parametrat e avancuar.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Parashtroj", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Ruaj ndryshimet", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Rikthej", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bajt", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Bllokoj elementin në kuadër…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Abonohem në listën e filtrave…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Lejoj përkohësisht elementet e mëdha multimediale", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Shikoj kodin burimor…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Vendosni kombinimin", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Ç/Aktivizoni lëvizjen me rrëshqitje", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopjoj në memorie", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Përzgjedh të gjitha", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Ç/Aktivizoj filtrat kozmetikë", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Ç/Aktivizoj JavaScript-in", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Dobësoj mënyrën e bllokimit", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Hapësira e përdorur: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klikoni për ta hapur", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Probleme: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Kur hapet shfletuesi nuk bëhet filtrimi i duhur. Freskoni faqen për ta filtruar mirë.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/sr/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/sr/messages.json new file mode 100644 index 00000000..6de57c2c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/sr/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Коначно, ефикасан блокатор. Ниски процесорски и меморијски захтеви.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Контролна табла", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Упозорење! Имате промене које нису сачуване", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Остани", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Игнориши", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Подешавања", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Листе филтера", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Моји филтери", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Моја правила", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Поуздани сајтови", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Пречице", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Евиденција", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "О програму", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Подршка", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Прегледач ресурса", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Напредна подешавања", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Клик: онемогући/омогући µBlock₀ за овај сајт.\n\nCtrl+клик: онемогући/омогући µBlock₀ само за ову страницу.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Кликните да бисте онемогућили µBlock₀ за овај сајт.\n\nCtrl+клик да бисте онемогућили µBlock₀ само на овој страници.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Кликните да бисте омогућили µBlock₀ за овај сајт.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "блокирани захтеви", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "на овој страници", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} или {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "од инсталације", + "description": "English: since install" + }, + "popupOr": { + "message": "или", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Блокирано на овој страници", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Блокирано од инсталације", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Повезани домени", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Отвори контролну таблу", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Режим уклањања елемената", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Режим избора елемената", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Отвори евиденцију", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Пријавите проблем на овом веб сајту", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Укључи/искључи блокирање свих искачућих прозора за овај сајт", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Кликните за блокирање свих искачућих прозора на овом сајту", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Кликните да бисте зауставили блокирање свих искачућих прозора на овом сајту", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Укључи/искључи блокирање великих мултимедијалних елемената за овај сајт", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Кликните за блокирање великих мултимедијалних елемената на овом сајту", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Кликните да бисте зауставили блокирање великих мултимедијалних елемената на овом сајту", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Укључи/искључи естетско филтрирање за овај сајт", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Кликните да бисте онемогућили естетско филтрирање на овом сајту", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Кликните да бисте омогућили естетско филтрирање на овом сајту", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Укључи/искључи блокирање удаљених фонтова за овај сајт", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Кликните за блокирање удаљених фонтова на овом сајту", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Кликните да бисте зауставили блокирање удаљених фонтова на овом сајту", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Кликните да онемогућите JavaScript на овом сајту", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Кликните да JavaScript не буде више онемогућен на овом сајту", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Искачући прозори", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Велики мултимедијски елементи", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Естетско филтрирање", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Удаљени фонтови", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Више", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Мање", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Општа правила: ова колона је за правила која се примењују на свим сајтовима.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Локална правила: ова колона је за правила која се примењују само на тренутни сајт.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Кликните да бисте промене учинили трајним.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Кликните да бисте вратили промене.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "све", + "description": "" + }, + "popupImageRulePrompt": { + "message": "слике", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "треће стране", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/слике трећих страна", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "уметнуте скрипте", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Корисничке скрипте", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Скрипте трећих страна", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Оквири трећих страна", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "повезани домени", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} од {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Верзија", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "скрипта", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "оквир", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Креирај", + "description": "English: Create" + }, + "pickerPick": { + "message": "Изабери", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Изађи", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Преглед", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Мрежни филтери", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Естетски филтери", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Клик, Ctrl-клик", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Блокирај елемент...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Сакриј држаче блокираних елемената", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Прикажи број блокираних захтева на иконици", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Онемогућите описе алата", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Користи контекстни мени где је прикладно", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Мод за далтонисте", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Изглед", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Тема", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Прилагођена наглашена боја", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Укључи подршку за складиште у облаку", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Ја сам напредни корисник", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Онемогући оптимизацију учитавања (да би се спречила свака веза блокираних мрежних захтева)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Онемогући проверавање хиперлинкова", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Спречи WebRTC да пропушта локалну IP адресу", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Подразумевано понашање", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Ова подразумевана понашања могу бити поништена за појединачне веб сајтове", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Онемогући естетско филтрирање", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Блокирај мултимедијалне елементе веће од {{input}} kB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Блокирај удаљене фонтове", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Онемогући JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Блокирај CSP извештаје", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Откриј канонска имена", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Напредно", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Функције прикладне само за техничке кориснике", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "напредна подешавања", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Последње враћање:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Последња резервна копија:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "мрежних филтера: {{netFilterCount}} + естетских филтера: {{cosmeticFilterCount}} из:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} искоришћено од {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Аутоматски ажурирај листе филтера", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Ажурирај сада", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Очисти сав кеш", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Рашчлани и примени естетске филтере.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Естетски филтери служе за сакривање елемената на веб страници који се сматрају визуелном сметњом и који не могу бити блокирани од стране мрежних захтева базираних на филтрирању.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Игнориши опште естетске филтере.", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Општи естетски филтери су они естетски филтери који су намењени за примену на свим сајтовима. Омогућавањем ове опције, елиминисаће се повећана потрошња меморије и оптерећење процесора на страницама као резултат руковања општим естетским филтерима.\n\nПрепоручује се да се ова опција омогући на мање моћним уређајима.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Обустави мрежну активност док се не учитају све листе филтера", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Списак блокираних хостова", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Примени промене", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Уграђени", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Рекламе", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Приватност", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Заштита од злонамерног софтвера, безбедност", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Друштвени виџети", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Обавештења о колачићима", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Сметње", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Вишенаменски", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Регионални, језички", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Прилагођени", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Увези...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Једна адреса по реду. Неисправне адресе ће бити тихо игнорисане.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Застарело.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "приказ садржаја", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Последње ажурирање: {{ago}}.\nКликните да бисте ажурирали.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Ажурирање...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Грешка на мрежи је спречила ажурирање ресурса.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Не додавај филтере из непоузданих извора.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Омогући моје прилагођене филтере", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Дозволи прилагођене филтере који захтевају поверење", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Увези и додај…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Извези…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "моји-ublock-филтери_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Примени промене", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Стална правила", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Привремена правила", + "description": "header" + }, + "rulesRevert": { + "message": "Врати", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Потврди", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Уреди", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Сачувај", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Одбаци", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Увези из датотеке...", + "description": "" + }, + "rulesExport": { + "message": "Извези у датотеку...", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "моја-ublock-динамичка-правила_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Списак правила за динамичко филтрирање.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Правила синтаксе: извор одредиште тип акција(сва документација).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Сортирај:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Тип правила", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Извор", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Одредиште", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Смернице поузданих сајтова диктирају на којим веб страницама uBlock Origin треба да буде онемогућен. Један унос по реду.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Увези и додај", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Извези", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "моји-ublock-поуздани-сајтови_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Примени промене", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Тип", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Домен", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Филтер", + "description": "English: Filter" + }, + "logAll": { + "message": "Све", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Иза сцене", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Тренутна картица", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Поновно учитавање садржаја картице", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Укључи/искључи DOM инспектор", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Укључи/искључи искачући панел", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Евиденција", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Очисти евиденцију", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Паузирај евиденцвију (одбаци све долазне податке)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Настави евидентирање у дневнику", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Укључи/искључи филтрирање евиденције", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "филтрирај уносе евиденције", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Опције филтрирања евиденције", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Не", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "важно", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "блокирано", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "дозвољено", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "измењено", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "прве стране", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "треће стране", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Детаљи", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Филтер", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Листа филтера", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Правило", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Контекст", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Контекст корена", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Страна", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Тип", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Правило URL адресе", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Контекст:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Тип:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Статички филтер", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} мрежни захтев {{type}} {{br}} чија УРЛ адреса одговара {{url}} {{br}} и која долази од {{origin}},{{br}} {{importance}} постоји одговарајући филтер изузетак.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Блокирај", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Дозволи", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "тип “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "сваки тип", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "од “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "било одакле", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "осим кад", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "чак иако", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Статички филтер {{filter}} пронађен у:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Статички филтер није могуће пронаћи нити у једној тренутно омогућеној листи филтера", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Уноси у евиденцији који не испуњавају сва три услова испод биће аутоматски одбачени:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Задржи уносе из последњих {{input}} минута", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Задржи највише {{input}} учитавања страница по картици", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Задржи највише {{input}} уноса по картици", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Користи {{input}} линија по уносу у усправном проширеном режиму", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Сакриј колоне:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Време", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Филтер/правило", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Контекст", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Страна", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Листа", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Табела", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Обично", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Отвори", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Креирај нови извештај на GitHub-у", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Пронађи сличне извештаје на GitHub-у", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Документација", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "\nПрочитајте документацију на uBlock/wiki да бисте сазнали све о функцијама uBlock Origin-а.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Питања и подршка", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Одговори на питања и друге врсте подршке налазе се у подредиту /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Проблеми са филтером/веб сајт не фукционише", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Пријавите проблеме са филтерима на одређеним веб сајтовима на uBlockOrigin/uAssets issue tracker. Неопходан је GitHub налог.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Важно: Избегавајте коришћење других блокатора сличне намене заједно са uBlock Origin-ом, јер то може изазвати проблеме са филтерима на одређеним веб сајтовима.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Савет: Уверите се да су ваше листе филтера ажуриране. Управљач евиденцијом је примарни алат за дијагностиковање проблема у вези са филтером.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Пријава грешке", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Пријавите проблеме са самим uBlock Origin-ом на uBlockOrigin/uBlock-issue issue tracker. Неопходан је GitHub налог.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Информација о решавању проблема", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Испод су техничке информације које могу бити корисне када волонтери покушавају да вам помогну да решите проблем.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Пријављивање проблема са филтером", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Да бисте избегли оптерећење волонтера дуплим извештајима, проверите да ли је проблем већ пријављен. Напомена: кликом на дугме, порекло странице ће бити послато GitHub-у.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Листе филтера се ажурирају свакодневно. Уверите се да ваш проблем није већ решен у најновијим листама филтера.\n", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Проверите да ли проблем и даље постоји након поновног учитавања проблематичне веб странице.\n", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Адреса веб странице:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Веб страница...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Изаберите ставку --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Приказује рекламе или остатке реклама", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Има преклапања или друге сметње", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Открива uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Има проблеме у вези са приватношћу", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Фукционише неправилно када је uBlock Origin омогућен", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "\nОтвара нежељене картице или прозоре", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Води до лошег софтвера, „пецања\"", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Означите веб страницу као „NSFW” („Није безбедна за рад”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Политика приватности", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Списак измена", + "description": "" + }, + "aboutCode": { + "message": "Изворни код (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Сарадници", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Изворни код", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Преводи", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Листе филтера", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Спољне зависности (компатибилно са GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Сопствене листе филтера uBO-a се слободно хостују на следећим CDN-овима:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Насумично одабрани CDN се користи када листу филтера треба ажурирати.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Сачувај резервну копију у датотеку...", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Врати из датотеке...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Врати на подразумевана подешавања...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Сва ваша подешавања ће бити прегажена резервном копијом података сачуваним {{time}} и uBlock₀ ће се поново покренути.\n\nПрегазити сва постојећа подешавања резервном копијом података?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Подаци се не могу прочитати или су неисправни", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Сва ваша подешавања ће бити обрисана и µBlock ће се поново покренути.\n\nВрати µBlock на првобитна подешавања?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Грешка на мрежи: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Претплати се", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "пре један минут", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "пре {{value}} минута", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "пре један сат", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "пре {{value}} сата/и", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "пре један дан", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "пре {{value}} дана", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Прикажи контролну таблу", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Прикажи евиденцију", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "искључен", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Страница је блокирана", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin је спречио учитавање следеће странице:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "због следећег филтера", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "без параметара", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Пронађен у:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Иди назад", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Затвори овај прозор", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Не упозоравај ме поново на овај сајт", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Искључи строго блокирање за {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Привремено", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Трајно", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Настави", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Блокирана страница жели да преусмери на други сајт. Ако одлучите да наставите, ићи ћете директно на: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Разлог:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Злонамерно", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Праћење", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Неугледно", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Извези у складиште у облаку", + "description": "tooltip" + }, + "cloudPull": { + "message": "Увези из складишта у облаку", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Увези из складишта у облаку и споји са тренутним подешавањима", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Назив овог уређаја:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Упозорење! Мењате ова напредна подешавања на сопствени ризик.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Пошаљи", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Примени промене", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Врати", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "бајтови", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Блокирај елемент у оквиру...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Претплатите се на листу филтера...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Привремено дозволи велике мултимедијалне елементе", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Прикажи изворни код…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Укуцајте пречицу", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Закључај/откључај померање", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Копирај у оставу", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Изабери све", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Укључи/искључи естетско филтрирање", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Укључи/искључи JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Опуштени режим блокирања", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Искоришћеност складишта: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "kB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Кликните за учитавање", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Грешака: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Није могуће правилно филтрирати при покретању прегледача. Поново учитајте страницу да бисте осигурали правилно филтрирање.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/sv/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/sv/messages.json new file mode 100644 index 00000000..6112c72b --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/sv/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Äntligen en effektiv blockerare. Lätt för både processor och minne.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Kontrollpanel", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Varning! Du har inte sparat dina ändringar", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Stanna kvar", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ignorera", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Inställningar", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filterlistor", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Mina filter", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Mina regler", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Betrodda webbplatser", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Genvägar", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Loggaren", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Om", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Support", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Tillgångsvisare", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Avancerade inställningar", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Klick: inaktivera/aktivera uBlock₀ för denna webbplats.\n\nCtrl+klick: inaktivera uBlock₀ enbart på denna sida.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Klicka för att inaktivera uBlock₀ för denna webbplats.\n\nCtrl+klicka för att inaktivera uBlock₀ enbart på denna sida.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Klicka för att aktivera uBlock₀ på denna webbplats.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "blockerade förfrågningar", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "på denna sida", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "sedan installationen", + "description": "English: since install" + }, + "popupOr": { + "message": "eller", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Blockerat på denna sida", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blockerat sedan installation", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Anslutna domäner", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Öppna kontrollpanelen", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Gå in i elementzapperläge", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Gå till elementväljarläge", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Öppna loggaren", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Rapportera ett problem på denna webbplats", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Växla blockering av popup-fönster för den här webbplatsen", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Klicka för att blockera alla popup-fönster på denna webbplats", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Klicka för att inte längre blockera alla popup-fönster på denna webbplats", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Växla blockering av stora medieelement för denna webbplats", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Klicka för att blockera stora medieelement på denna webbplats", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Klicka för att inte längre blockera stora medieelement på denna webbplats", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Växla kosmetiska filter för denna webbplats", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Klicka för att inaktivera kosmetiska filter på denna webbplats", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Klicka för att aktivera kosmetisk filtrering på denna webbplats", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Växla blockeringen av fjärrtypsnitt på denna webbplats", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Klicka för att blockera fjärrtypsnitt på denna webbplats", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Klicka för att inte längre blockera fjärrtypsnitt på denna webbplats", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Klicka för att inaktivera JavaScript på denna webbplats", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Klicka för att aktivera JavaScript på denna webbplats", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Popup-fönster", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Stora medieelement", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kosmetisk filtrering", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Fjärrtypsnitt", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Mer", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Mindre", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Globala regler: den här kolumnen avser regler som gäller för alla webbplatser.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Lokala regler: den här kolumnen avser endast regler som gäller för den aktuella webbplatsen.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Klicka för att göra dina ändringar permanenta.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Klicka för att ångra dina ändringar.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "alla", + "description": "" + }, + "popupImageRulePrompt": { + "message": "bilder", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Tredjepart", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/bilder från tredjepart", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "inline skript", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Förstapartskript", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Tredjepartskript", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Tredjepartramar", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "anslutna domäner", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} av {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "skript", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "ram", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Skapa", + "description": "English: Create" + }, + "pickerPick": { + "message": "Välj", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Avsluta", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Förhandsgranska", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Nätverksfilter", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kosmetiska filter", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Klick, Ctrl-klick", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Blockera element…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Dölj platshållare för blockerade element", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Visa antalet blockerade förfrågningar på ikonen", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Inaktivera verktygstips", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Använd innehållsmenyn där det är lämpligt", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Färgblindsanpassat", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Utseende", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Anpassad accentfärg", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Aktivera stöd för molnlagring", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Jag är en avancerad användare", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Inaktivera förhämtning (för att förhindra anslutning av blockerade nätverksförfrågningar)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Inaktivera hyperlänksrevidering", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Förhindra WebRTC från att läcka lokala IP-adresser", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Standardbeteende", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Dessa standardbeteenden kan åsidosättas per webbplats", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Inaktivera kosmetisk filtrering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Blockera medieelement större än {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Blockera fjärrtypsnitt", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Inaktivera JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Blockera CSP-rapporter", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Ta fram kanoniska namn", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Avancerat", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Funktioner som endast är lämpliga för tekniska användare", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "avancerade inställningar", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Senast återställd:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Senaste säkerhetskopia:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} nätverksfilter + {{cosmeticFilterCount}} kosmetiska filter från:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} använda av {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Uppdatera filterlistor automatiskt", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Uppdatera nu", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Rensa alla cachar", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Tolka och tillämpa kosmetiska filter", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Kosmetiska filter tjänar till att dölja element på en webbsida som bedöms vara en visuell olägenhet och som inte kan blockeras av nätverksbegärningsbaserade filtermotorer.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignorera allmänna kosmetiska filter", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Allmänna kosmetiska filter är de kosmetiska filter som är avsedda att tillämpas på alla webbplatser. Att aktivera detta alternativ kommer att eliminera minnes- och processoranvändningen som läggs till på webbsidor som ett resultat av hantering av allmänna kosmetiska filter.\n\nDet rekommenderas att aktivera detta alternativ på mindre kraftfulla enheter.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Stäng av nätverksaktiviteten tills alla filterlistor har laddats", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Listor över blockerade värdar", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Verkställ ändringar", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Inbyggda", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Annonser", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Integritet", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Skydd mot skadlig programvara, säkerhet", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sociala widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie-meddelanden", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Störande", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Mångsidiga", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Regioner, språk", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Anpassade", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Importera…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "En webbadress per rad. Ogiltiga webbadresser ignoreras tyst.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Föråldrad.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "visa innehåll", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Senast uppdaterad: {{ago}}\nKlicka för att påtvinga en uppdatering.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Uppdaterar…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Ett nätverksproblem har förhindrat resursen från att uppdateras.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Lägg inte till filter från obetrodda källor.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Aktivera mina anpassade filter", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Att tillåta anpassade filter kräver tillit", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Importera och lägg till…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Exportera…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "mina-ublock-statiska-filter_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Verkställ ändringar", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Permanenta regler", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Temporära regler", + "description": "header" + }, + "rulesRevert": { + "message": "Ångra", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Skicka", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Redigera", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Spara", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Förkasta", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Importera från fil…", + "description": "" + }, + "rulesExport": { + "message": "Exportera till fil…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "mina-ublock-dynamiska-regler_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Lista över dina dynamiska filterregler.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Regelsyntax: källa mål typ åtgärd (full dokumentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sortera:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Regeltyp", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Källa", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Mål", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Direktiven för betrodda webbplatser anger vilka webbsidor som uBlock Origin ska inaktiveras på. En post per rad.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Importera och lägg till…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Exportera…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "mina-ublock-betrodda-webbplatser_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Verkställ ändringar", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Typ", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Domän", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "Webbadress", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filter", + "description": "English: Filter" + }, + "logAll": { + "message": "Alla", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tabless", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Aktuell flik", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Uppdatera flikinnehåll", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Växla DOM-inspektören", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Växla popup-panelen", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Loggaren", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Rensa loggaren", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pausa loggaren (kassera alla inkommande data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Fortsätt loggaren", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Växla loggarens filtrering", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filtrera loggarens innehåll", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Loggarens filtreringsalternativ", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Inte", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "händelserikt", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "blockerad", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "tillåten", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "ändrad", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Förstapart", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Tredjepart", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Detaljer", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filter", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filterlista", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Regel", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Innehåll", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Rotinnehåll", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partsrelation", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Typ", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "Webbadress", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Webbadressregel", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Innehåll:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Typ:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statiskt filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} nätverksförfrågningar av {{type}} {{br}}vilken webbadress matchar {{url}} {{br}}och som kommer från {{origin}},{{br}}{{importance}} det finns ett matchande undantagsfilter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Blockera", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Tillåt", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "typ \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "alla typer", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "från \"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "från var som helst", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "utom när", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "även om", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Det statiska filtret {{filter}} hittades i:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statiskt filter kunde inte hittas i någon av de aktuella aktiverade filterlistorna", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Loggarens poster som inte uppfyller alla tre villkoren nedan kommer automatiskt att kasseras:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Bevara poster från de {{input}} senaste minuterna", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Bevara högst {{input}} sidinläsningar per flik", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Bevara högst {{input}} poster per flik", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Använd {{input}} rader per inmatning i vertikalt expanderat läge", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Dölj kolumner:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Tid", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filter/regel", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Innehåll", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partsrelation", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Lista", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tabell", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Enkel", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Öppna", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Skapa ny rapport på GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Hitta liknande rapporter på GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Dokumentation", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Läs dokumentationen på uBlock/wiki för att lära dig allt om uBlock Origins funktioner.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Frågor och support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Svar på frågor och andra typer av hjälp finns på subredditen /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filterproblem/webbplatsen fungerar inte", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Rapportera filterproblem med specifika webbplatser till problemhanteringssystemet uBlockOrigin/uAssets. Kräver ett GitHub-konto.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Viktigt: Undvik att använda andra reklamblockerare tillsammans med uBlock Origin, eftersom detta kan orsaka filterproblem på specifika webbplatser.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Se till att dina filterlistor är uppdaterade. Loggaren är det primära verktyget för att diagnostisera filterrelaterade problem.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Felrapport", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Rapportera problem med själva uBlock Origin till problemhanteringssystemet uBlockOrigin/uBlock-issue. Kräver ett GitHub-konto.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Felsökningsinformation", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Nedan finns teknisk information som kan vara användbar när volontärer försöker hjälpa dig att lösa ett problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Rapportera ett filterproblem", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "För att undvika att belasta volontärer med dubbletter av rapporter, kontrollera att problemet inte redan har rapporterats. Observera: om du klickar på knappen kommer sidans ursprung att skickas till GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filterlistor uppdateras dagligen. Se till att ditt problem inte redan har åtgärdats i de senaste filterlistorna.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Kontrollera att problemet kvarstår efter att du har laddat om den krånglande webbsidan.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Hemsidans adress:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Webbsidan…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Välj en post --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Visar annonser eller rester av annonser", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Har överlägg eller andra olägenheter", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Upptäcker uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Har integritetsrelaterade problem", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Fungerar inte när uBlock Origin är aktiverad", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Öppnar oönskade flikar eller fönster", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leder till skadlig programvara, nätfiske", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Märk webbsidan som \"NSFW\" (“Inte lämplig på jobbet”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Integritetspolicy", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Ändringslogg", + "description": "" + }, + "aboutCode": { + "message": "Källkod (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Bidragsgivare", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Källkod", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Översättningar", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filterlistor", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Externa beroenden (GPLv3-kompatibla):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO:s egna filterlistor finns fritt tillgängligt på följande CDN:er:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Ett slumpmässigt valt CDN kommer att användas när en filterlista behöver uppdateras.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Säkerhetskopiera till fil…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "min-ublock-sakerhetskopia_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Återställ från fil…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Återställ till standardinställningarna…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Alla dina inställningar kommer att skrivas över med data som har säkerhetskopierats {{time}} och uBlock₀ kommer att starta om.\n\nVill du skriva över befintliga inställningar med säkerhetskopierad data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Data kunde inte läsas eller är ogiltiga", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Alla dina inställningar kommer att tas bort och uBlock₀ kommer att starta om.\n\nÅterställ uBlock₀ till fabriksinställningar?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Nätverksfel: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Prenumerera", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "en minut sedan", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} minuter sedan", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "en timme sedan", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} timmar sedan", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "en dag sedan", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} dagar sedan", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Visa kontrollpanelen", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Visa loggaren", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "av", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Sidan blockerad", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin har förhindrat följande sida från att läsas in:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "På grund av följande filter", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "utan parametrar", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Hittades i:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Gå tillbaka", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Stäng det här fönstret", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Varna mig inte igen om den här sidan", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Inaktivera strikt blockering av {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Temporärt", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Permanent", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Fortsätt", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Den blockerade sidan vill omdirigera dig till en annan webbplats. Om du väljer att fortsätta skickas du direkt till: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Anledning:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Illvillig", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Spårare", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Vanhedrande", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Exportera till molnlagring", + "description": "tooltip" + }, + "cloudPull": { + "message": "Importera från molnlagring", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Importera från molnlagring och sammanfoga med aktuella inställningar", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Enhetens namn:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Varning! Ändra dessa avancerade inställningar på egen risk.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Skicka", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Verkställ ändringar", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Ångra", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "byte", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Blockera element i ramar…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Prenumerera på filterlista…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Tillåt tillfälligt stora medieelement", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Visa källkoden…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Ange en genväg", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Växla rullningslås", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Kopiera till urklipp", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Markera allt", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Växla kosmetisk filtrering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Växla JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Lätta på blockeringsläge", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Använt utrymme: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Klicka för att ladda", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Fel: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Det gick inte att filtrera ordentligt vid webbläsarstart. Ladda om sidan för att säkerställa korrekt filtrering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/sw/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/sw/messages.json new file mode 100644 index 00000000..1b02fe4c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/sw/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Hatimaye, kizuizi kinachofaa. Nyepesi kwenye CPU na kumbukumbu.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Dashibodi", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Ilani! Una mabadiliko ambazo hazijahifadhika.", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Kaa hapa", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Puuza", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Mipangilio", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Chuja orodha", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Vichujio vyangu", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Kanuni zangu", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Orodha-ruhusu", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Njiamikato", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ - Batli", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Kuhusu", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Usaidizi", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ - Kitazama rasilimali", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Mipangilio pevu", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Bofya: lemaza/wezesha uBlock₀ kwenye tovuti hii.\n\nCtrl+bofya: lemaza uBlock₀ kwenye ukurasa huu pekee.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Bofya kulemaza uBlock₀ kwenye tovuti hii.\n\nCtrl+bofya kulemaza uBlock₀ kwenye ukurasa huu pekee.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Bofya kuwezesha uBlock₀ kwenye tovuti hii.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "Maombi yaliyozuiliwa", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "kwenye ukurasa huu", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "tangu usakinishaji", + "description": "English: since install" + }, + "popupOr": { + "message": "au", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Yaliyozuiliwa kwenye ukurasa huu", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Yaliyozuiliwa tangu usakinishaji", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Vikoa vilivyounganishwa", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Fungua dashibodi", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Ingia mtindo wa kufyatua vipengele", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Ingia mtindo wa kuchagua vipengele", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Fungua batli", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Ripoti shida na tovuti hii", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Togoa uzuiaji wa vibukizi kwenye tovuti hii", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Bofya kuzuia vibukizi vyote kwenye tovuti hii", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Bofya kusitisha kuzuia vibukizi vyote kwenye tovuti hii", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Togoa uzuiaji wa vipengele vya midia kubwa kwenye tovuti hii", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Bofya kuzuia vipengele vya midia kubwa kwenye tovuti hii", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Bofya kusitisha kuzuia vipengele vya midia kubwa kwenye tovuti hii", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Togoa uchujaji wa kurembesha kwenye tovuti hii", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Bofya kulemaza uchujaji wa kurembesha kwenye tovuti hii", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Bofya kuwezesha uchujaji wa kurembesha kwenye tovuti hii", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Togoa uzuiaji wa fonti za mbali kwenye tovuti hii", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Bofya kuzuia fonti za mbali kwenye tovuti hii", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Bofya kusitisha kuzuia fonti za mbali kwenye tovuti hii", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Bofya kulemaza JavaScript kwenye tovuti hii", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Bofya kusitisha kulemaza JavaScript kwenye tovuti hii", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Vidirisha ibukizi", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Vipengele vya midia kubwa", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Uchujaji wa kurembesha", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Fonti za mbali", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Zaidi", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Chache", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Kanuni za kila mahali: safuwima hii ni ya kanuni zinazotekelezeka kwenye tovuti zote.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Kanuni za ndani: safuwima hii ni ya kanuni zinazotekelezeka kwenye tovuti ya sasa pekee.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Bofya kufanya mabadiliko yako yadumu.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Bofya kurejelesha mabadiliko yako.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "zote", + "description": "" + }, + "popupImageRulePrompt": { + "message": "picha", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "Mhusika wa tatu", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS ya mhusika wa tatu/picha", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "hati za mstari wa ndani", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Hati za mhusika wa kwanza", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Hati za mhusika wa tatu", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Fremu za mhusika wa tatu", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "vikoa vilivyounganishwa", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} kati ya {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Toleo", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "hati", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "fremu", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Unda", + "description": "English: Create" + }, + "pickerPick": { + "message": "Teua", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Ondoka", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Hakiki", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Vichujio vya mtandao", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Vichujio vya kurembesha", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Bofya, Ctrl+bofya", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Zuia kipengele...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Ficha vishikilia nafasi za vipengele vilivyozuiliwa", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Onyesha idadi ya maombi yaliyozuiliwa kwenye ikoni", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Lemaza vidokezozana", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Tumia menyu muktadha panapofaa", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Rahisi na upofu wa rangi", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Mwonekano", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Mandhari", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Rangi ya lafudhi maalum", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Wezesha auni wa hifadhi ya wingu", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Mimi na mtumiaji mahiri", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Lemaza kuleta-mapema (kuepuka uunganishaji wowote wa maombi yaliyozuiliwa)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Lemaza ukaguzi wa viungo-wavuti", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Zuia WebRTC kuvuja anwani za IP za ndani", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Tabia chaguo-msingi", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Tabia hizi chaguo-msingi zinaweza kubatilishwa kwenye msingi wa kila tovuti", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Lemaza uchujaji wa kurembesha", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Zuia vipengee vya midia vilivyo kubwa kuliko KB {{input}}", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Zua fonti za mbali", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Lemaza JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Zuia ripoti za CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Fichua majina kawaida", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Mahiri", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Vipengele vinawafaa watumiaji maarufu tu.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "mipangilio pevu", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Rejesho ya mwisho:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Chelezo ya mwisho:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "Vichujio vya mtandao {{netFilterCount}} + vichujio vya kurembesha {{cosmeticFilterCount}} kutoka:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} zimetumika kati ya {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Sasisha kiotomatiki orodha ya vichujio", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Sasisha sasa", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Takasa kashe zote", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Changanua na lazimisha vichujio vya kurembesha", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Vichujio vya kurembesha vinasaidia kuficha vipengele kwenye ukurasa tovuti ambavyo vinaweka kuwa vizuizi vya mwonekano, na ambavyo haviwezi zuiliwa kupitia injini ya vichujio vinavyotegemea maombi ya mtandao.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Puuza vichujio vya kurembesha vya kijeneriki", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Vichujio jeneriki vya kurembesha ni vichujio vya kurembesha ambavyo vinafaa kutumika kwenye tovuti zote. Kuwezesha chaguo hii kutaondoa mzigo wa kumbukumbu na CPU unaoongezwa kwenye kurasa tovuti baada ya kuzingatia vichujio jeneriki vya kurembesha.\n\nUnapendekezwa kuwezesha chaguo hii kwenye vifaa vyenye uwezo zaidi.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Simamisha shughuli za mtandao hadi orodha zote zimepakiwa", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Tekeleza mabadiliko", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Vijengwa ndani", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Mtngzo", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Faragha", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Ulinzi wa programu hasidi, usalama", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Wijeti za kijamii", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Arifa za kuki", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Vikasirisho", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "\nVya anuwai", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Mikoa, lugha", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Inayokufaa", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Leta...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "URL moja kila laini. URL batili zitapuuzwa kimya kimya.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Zilizoisha muda.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "tazama yaliyomo", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Sasisho ya mwisho: {{ago}}.\nBofya kulazimisha sasisho.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Inasasisha...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Tatizo la mtandao imezuia rasilimali kusasishwa.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Usiongeze vichujio kutoka kwa vyanzo visivyoaminika.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Washa vichujio vyangu maalum", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Ruhusu vichujio maalum vinavyohitaji uaminifu", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Leta na ambatisha…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Hamisha", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "chujio-zangu-tuli-za-ublock_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Tekeleza mabadiliko", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Kanuni za kudumu", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Kanuni za muda", + "description": "header" + }, + "rulesRevert": { + "message": "Rudisha", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Kabidhi", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Hariri", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Hifadhi", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Tupa", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Leta kutoka faili...", + "description": "" + }, + "rulesExport": { + "message": "Hamisha kuenda faili…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "chujio-zangu-badilifu-za-ublock_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Orodha ya kanuni zako badilifu za uchujaji", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Kanuni za sintaksi: tendo la aina ya chanzo fikio (Kumbukumbu kamili).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Panga:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Aina ya kanuni", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Chanzo", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Fikio", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Orodha ya vikubaliwa inaamrisha ni kwenye kurasa zipi uBlock Origin italemazwa. Ingizo moja tu kila laini. Maelekezi batili yatapuuzwa kimyakimya na kufanywa kuwa maoni.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Leta na ambatisha…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Hamisha", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "orodhakubalizi-yangu-ya-ublock_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Tekeleza mabadiliko", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Aina", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Kikoa", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Kichujio", + "description": "English: Filter" + }, + "logAll": { + "message": "Zote", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Bila vichupo", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Kichupo cha sasa", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Pakia upya yaliyomo kwenye kichupo", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Togoa kikaguzi cha DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Togoa paneli ibukizi", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "wiki ya uBlock Origin: Batli", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Futa batli", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Sitisha batli (puuza data yote inayoingia)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Wacha kusitisha batli", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Togoa uchujaji batli", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "chuja yaliyomo kwenye batli", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Machaguo ya uchujaji batli", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Sio", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "imezuiliwa", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "imekubaliwa", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "imebadilishwa", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Mhusika wa kwanza", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Mhusika wa tatu", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Ufafanuzi", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Kichujio", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Orodha ya vichujio", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Kanuni", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Muktadha", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Muktadha shina", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Aina", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Kanuni ya URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Muktadha:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Aina:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Chujio tuli", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} maombi ya mtanda ya {{type}} {{br}} ambayo anwani ya URL inafanana na {{url}} {{br}} ambayo asili ni {{origin}},{{br}}{{importance}} kunayo chujio kighairi inayofanana.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Zuia", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Ruhusu", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "aina \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "aina yoyote", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "kutoka \"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "kutoka popote", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "isipokuwa wakati", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "hata kama", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Chujio tuli {{filter}} ilipatikana kwenye:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Chujio tuli haikupatikana popote kwenye orodha za machujio zilizowezeshwa", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Maingizo ya batli yasiyokamilisha masharti yote matatu hapo chini yatatupiliwa mbali kiotomatiki.", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Hifadhi maingizo za dakika {{input}} zilizopita", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Hifadhi hadi upakiaji-kurasa {{input}} kwenye kila kichupo", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Hifadhi hadi maingizo {{input}} kwenye kila kichupo", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Tumia laini {{input}} kila ingisho katika mtindo ya safuwima iliyopanuliwa.", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Ficha safuwima:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Wakati", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Kichujio/kanuni", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "Muktadha", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Orodha", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Meza", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Ghafi", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Fungua", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Unda ripoti mpya", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Pata ripoti sawia", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Kumbukumbu", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Soma mwongozo kwa uBlock kujua vipengele vyote vya uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Maswali na usaidizi", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Majibu ya maswali na usaidizi wote mwingine yanapatikana kwenye subreddit ya /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Shida na vichujio/tovuti imeharibika", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Ripoti shida za vichujio za tovuti maalum kwenyeuBlockOrigin/uAssetskifuatiliaji cha shida. Itahitaji akaunti ya GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Muhimu: Epuka kutumia vizuizi vingine pamoja na uBlock Origin, maana shida zinaweza kutokea kwenye tovuti kadhaa.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Vidokezo: Hakikisha orodha zako ni zimesasishwa. Kirekodi ndicho kifaa kuu cha kutatua shida za vichujio.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Ripoti hitilafu", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Ripoti shida na uBlock Origin yenyewe kwenyeuBlockOrigin/uBlock-issuekifuatiliaji cha shida.Itahitaji akaunti ya Github.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Maelezo ya utafutatuzi", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Ifuatayo ni taarifa ya kiteknolojia inayoweza kuwa ya manufaa wakati waliojitolea wakijaribu kukusaidia.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Ripoti shida ya kichujio", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Ili usiwasumbue wasaidizi waliojitolea kwa ripoti rudufu, tafadhali hakikisha kuwa shida haijaripotiwa bado.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Orodha za vichujio husasishwa kila siku. Hakikisha suala lako bado halijashughulikiwa katika orodha za hivi majuzi za vichujio.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Thibitisha kuwa suala bado lipo baada ya kupakia upya ukurasa wa wavuti wenye matatizo.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Anwani ya tovuti:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Tovuti husika…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Chagua ingizo --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Inaonyesha matangazo au mabakshishi yake", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Ina matandazo au sumbufu zingine", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Inagundua uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Ina shida za faragha", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Huenda vibaya uBlock Origin ikiwezeshwa", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Hufungua vichupo au vidirisha visivyotakikana", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Husababisha badware, hadaa", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Ipe tovuti lebo ya \"NSFW\" (\"Haifai Kazini\")", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Sera ya faragha", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Yaliyobadilika", + "description": "" + }, + "aboutCode": { + "message": "Msimbo wa chanzo (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Wachangiaji", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Msimbo chanzo", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Tafsiri", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Orodha za vichujio", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Msimbo wa chanzo (inatangamana na GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Orodha za vichujio za uBO hupangishwa kwenye CDN hizi.", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "CDN iliyochaguliwa kwa unasibu hutumika orodha ya kichujio inapohitaji kusasishwa", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Cheleza kwenye faili…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "chelezo-yangu-ya-ublock_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Rejesha kutoka faili...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Weka upya hadi mipangilio chaguo-msingi...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Mipangilio yako yote itaandikwa upya kutumia data iliyochelezwa mnamo {{time}}, na uBlock₀ itaanza upya.\n\nAndika upya mipangilio yote kutumia chelezo ya data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Data haisomeki au ni batili", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Mipangilio yako yote itaondolewa, na uBlock₀ itaanza upya.\n\nWeka upya uBlock₀ hadi mipangilio ya mwanzo?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Tatizo la mtandao: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Jisajili", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "dakika moja iliyopita", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "dakika {{value}} zilizopita", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "saa moja iliyopita", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "masaa {{value}} yaliyopita", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "jana", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "siku {{value}} zilizopita", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Onyesha dashibodi", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Onyesha batli", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "zimwa", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Ukurasa umezuiwa", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin imezuia ukurasa huu kupakia:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Kwa sababu ya kichujio kifuatacho", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "bila parameta", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Ilipatwa katika:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Rudi nyuma", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Funga dirisha hii", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Usinionye tena kuhusu tovuti hii", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Lemaza uzuiaji kali kwa {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Kwa muda", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Daima", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Endelea", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Ukurasa uliozuiwa unataka kuelekeza kwenye tovuti nyingine. Ukichagua kuendelea, utaelekeza moja kwa moja hadi: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Sababu:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Hatari", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Mfuatiliaji", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Asiyeheshimika", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Hamisha hadi hifadhi ya wingu", + "description": "tooltip" + }, + "cloudPull": { + "message": "Leta kutoka hifadhi ya wingu", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Leta kutoka hifadhi ya wingu na unganisha na mipangilio ya sasa", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Jina la kifaa hiki:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Ilani! Badilisha mipangilio hii mahiri kwa hiari yako.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Wasilisha", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Tekeleza mabadiliko", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Rudisha", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "baiti", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Zuia kipengee kwenye fremu...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Jisajili kwenye orodha hii…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Ruhusu kwa muda vipengele vya midia kubwa", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Tazama msimbo wa chanzo…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Charaza njiamkato", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Togoa kubingiriza kuliofungwa", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Nakili hadi ubao-nakili", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Chagua yote", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Geuza uchujaji wa vipodozi", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Geuza JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Pumzisha mtindo wa kuzuia", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Hifadhi iliyotumika: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Bofya kupakia", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Makosa: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Haikuweza kuchuja vizuri wakati wa kuzindua kivinjari.\nAnzisha upya ukurasa huu ili kuhakikisha uchujaji unaofaa.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/ta/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/ta/messages.json new file mode 100644 index 00000000..69ffd491 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/ta/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "இறுதியாக, ஒரு திறமையான விளம்பரத் தடுப்பான். கணினியின் மையச் செயற்பகுதியின் மேலும் நினைவகத்தின் மேலும் இலகுவானது.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ - நிர்வாக மையம்", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "எச்சரிக்கை: உங்களிடம் சேமிக்கப்படாத மாற்றங்கள் உள்ளன!", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "இங்கேயே இரு", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "பொருட்படுத்தாதே", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "அமைப்புகள்", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "வடிகட்டி பட்டியல்கள்", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "என் வடிகட்டிகள்", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "என் விதிமுறைகள்", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "அனுமதிப்பட்டியல்", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "குறுக்குவழிகள்", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — பிணையக் கோரிக்கைப் பதிகை", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "எம்மைப் பற்றி", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "ஆதரவு", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock -- உடைமை பார்வையாளர்", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "மேம்பட்ட அமைப்புகள்", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "இந்த தளத்தில் ‍‍‍uBlock₀ ஐ முடக்கவோ/இயக்கவோ: இங்கே சுட்டு.\nCtrl+click: என்ற குறுக்குவிசையின் மூலம் uBlock₀ ஐ இந்தப் பக்கத்தில் மட்டும் முடக்கு.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "இந்த வலைத்தளத்திற்கு uBlock முடக்க, கிளிக் செய்யவும்.\n\nuBlockகை இந்த வலைத்தளத்திற்கு முடக்க Ctrl+click செய்யவும்.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "இந்த வலைத்தளத்திற்கு uBlockகை செயல்படுத்த கிளிக் செய்க.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "தடுக்கப்பட்ட கோரிக்கைகள்", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "இந்த இணையப் பக்கத்தில்", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} அல்லது {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "நிறுவியது முதல்", + "description": "English: since install" + }, + "popupOr": { + "message": "அல்லது", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "இப்பக்கத்தில் தடுக்கப்பட்டது", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "நிறுவியதிலிருந்து தடுக்கப்பட்டது", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "களங்கள் இணைக்கப்பட்டுள்ளன", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "நிர்வாக மையத்தை திறக்க இங்கே சொடுக்கவும்", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "பகுதி தெரிவு முறைமைக்கு நுழை", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "உறுப்புத் தெரிவு முறைமைக்குச் செல்லவும்", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "பிணையக் கோரிக்கைப் பதிவிற்கு செல்", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "இத்தளத்திலொரு சிக்கலைப் புகாரளி", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "இத்தளத்தில் அனைத்து மேல்விரிகளையும் தடுப்பதை மாற்றவும்", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "இந்தத் தளத்தில் உள்ள அனைத்து பாப்அப்களையும் தடுக்க கிளிக் செய்க", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "இத்தளத்தில் உள்ள எல்லா பாப்அப்களையும் இனி தடுக்காமலிருக்க சொடுக்குக", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "இத்தளத்திற்கான பெரிய ஊடக கூறுகளைத் தடுப்பதை நிலைமாற்று", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "இத்தளத்தில் பெரிய ஊடக கூறுகளைத் தடுக்க சொடுக்குக", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "இத்தளத்தில் பெரிய ஊடக கூறுகளை இனி தடுக்காமலிருக்க சொடுக்குக", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "இத்தளத்திற்கான ஒப்பனை வடிகட்டியை மாற்றவும்", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "இத்தளத்தில் ஒப்பனை வடிகட்டலை முடக்க சொடுக்குக", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "இத்தளத்தில் ஒப்பனை வடிகட்டலை இயக்க சொடுக்குக", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "இத்தளத்திற்கான தொலைநிலை எழுத்துருக்கள் தடையை மாற்றவும்", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "இத்தளத்தில் தொலை எழுத்துருக்களைத் தடுக்க சொடுக்குக", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "இத்தளத்தில் தொலை எழுத்துருக்களை இனி தடுக்காமலிருக்க சொடுக்குக", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "இத்தளத்தில் ஜாவாஸ்கிரிப்டை முடக்க சொடுக்குக", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "இத்தளத்தில் ஜாவாஸ்கிரிப்டை இனி முடக்காமலிருக்க சொடுக்குக", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "பாப்-அப் சாளரங்கள்", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "பெரிய ஊடக கூறுகள்", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "ஒப்பனை வடிகட்டுதல்", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "தொலை எழுத்துருக்கள்", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "ஜாவாஸ்கிரிப்ட்", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "மேலும்", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "குறைந்து", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "உலகளாவிய விதிகள்: இந்நெடுவரிசை அனைத்து தளங்களுக்கும் பொருந்தும் விதிகளுக்கானது.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "அக விதிகள்: இந்நெடுவரிசை தற்போதைய தளத்திற்கு மட்டுமே பொருந்தும் விதிகளுக்கானது.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "இங்கே சுட்டி உங்கள் மாற்றங்களை நிரந்தரமாக்கவும்.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "இங்கே சுட்டி உங்கள் மாற்றங்களைப் பழைய நிலைக்குத் திருப்பவும்.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "அனைத்தும்", + "description": "" + }, + "popupImageRulePrompt": { + "message": "படங்கள்", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "மூன்றாம் தரப்பு", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "மூன்றாம் தரப்பு CSS/படங்கள்", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "உள்வரி உரைகள்", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1‍-ஆம் தரப்பு உரைகள்", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "மூன்றாம் தரப்பு உரைகள்", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "மூன்றாம் தரப்பு சட்டங்கள்", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "ஆள்களங்கள் இணைக்கப்பட்டுள்ளது", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "மொத்தம் {{total}} இல் {{count}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "பதிப்பு", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "நிரல்", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "சட்டம்", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "உருவாக்கு", + "description": "English: Create" + }, + "pickerPick": { + "message": "எடு", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "வெளியேறு", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "முன்னோட்டம்", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "இணைய வடிகட்டிகள்", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "ஒப்பனை வடிகட்டி", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "சொடுக்கு, Ctrl-சொடுக்கு", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "உறுப்பைத் தடு...", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "தடுக்கப்பட்ட உறுப்புகளின் பெட்டிகளை மறை", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "தடுக்கப்பட்ட கோரிக்கைகளின் எண்ணிக்கையைப் பாவையில் காட்டவும்", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "உதவிக்குறிப்புக்களை முடக்கு", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "தக்க இடங்களில் சூழல் பட்டியலைக் காட்டு", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "நிறம்-அறியாதோருக்கு ஏதுவாக", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "தோற்றம்", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "நிறவமைவு", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "தனிப்பயன் உரப்பு நிறம்", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "மேகக்கணி சேமிப்பக ஆதரவு இயக்கு", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "நான் ஒரு மேம்பட்ட பயனர் (வாசித்தல் தேவை)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "முன்கூட்டியே பெறுவதை முடக்கு (தடுக்கப்பட்ட பிணைய கோரிக்கைகளுக்கான எந்தவொரு தொடர்பையும் தடுக்க)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "உரலியிணைப்புத் தணிக்கையை முடக்கவும்", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "உங்கள் தனிப்பட்ட IP முகவரியை WebRTC வெளிக்காட்டாதபடி தடுக்க", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "இயல்பான நடத்தை", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "இந்த இயல்புநிலை நடத்தைகள் ஒரு தள அடிப்படையில் மீறப்படலாம்", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "ஒப்பனை வடிகட்டியை தடை செய்", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Elements {உள்ளீடு}} KB ஐ விட பெரிய ஊடக உறுப்புகளைத் தடு", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "தொலை எழுத்துருக்களை தடு", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "ஜாவாஸ்கிரிப்டை முடக்கு", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP அறிக்கைகளைத் தடு", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "நியமன பெயர்களை அவிழ்த்து விடுங்கள்", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "உயரமைவு", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "நுட்பமான பயனர்களுக்கு மட்டுமே ஏற்ற அம்சங்கள்.", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "மேம்பட்ட அமைப்புகள்", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "இறுதியாக மீட்பதற்கு:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "கடைசி மறுபிரதி:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} பிணைய வடிகட்டிகள் + {{cosmeticFilterCount}} ஒப்பனை வடிகட்டிகளிலிருந்து:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "மொத்தம் {{total}} இல் {{used}} பயன்படுத்தப்பட்டது", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "வடிகட்டி பட்டியல்களை தானாக புதுப்பி.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "இப்போது புதுப்பிக்கவும்", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "தற்காலிகச் சேமிப்புகள் அனைத்தையும் அகற்று", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "இலக்கணகூறை விவரி மற்றும் ஒப்பனை வடிகட்டிகளை செயல்படுத்து.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

இந்தத் தேர்வு Adblock Plus-க்கு ஏற்ற “உறுப்பு மறைக்கும்” வடிகட்டிகளைப் படிப்பதையும் பயன்படுத்துவத்தையும் செயல்படுத்தும். இந்த வடிகட்டிகள் அடிப்படையில் மேலோட்டமானவை. இணையப் பக்கத்தின் தோற்றத்தில் தொந்தரவாகக் கருதப்பட்டு, ஆனால் இணையக்கோரிக்கைகளை வடிகட்டும் எஞ்சினின் மூலம் தடுக்கப்பட முடியாத பக்க-உறுப்புகளை, பார்வையிலிருந்து மட்டும் மறைக்கும்

இந்தத் தேர்வு uBlock₀-இன் நினைவக உபயோகத்தை அதிகரிக்கும்.

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "பொதுவான ஒப்பனை வடிகட்டிகளை புறக்கணி", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "பொதுவான ஒப்பனை வடிப்பான்கள் அனைத்து ஒப்பனை வடிப்பான்களாகும், அவை எல்லா வலைத்தளங்களிலும் பொருந்தும். இந்த விருப்பத்தை இயக்குவது பொதுவான ஒப்பனை வடிப்பான்களைக் கையாளுவதன் விளைவாக வலைப்பக்கங்களில் சேர்க்கப்பட்ட நினைவகம் மற்றும் CPU மேல்நிலை ஆகியவற்றை நீக்கும்.குறைந்த சக்திவாய்ந்த சாதனங்களில் இந்த விருப்பத்தை இயக்க பரிந்துரைக்கப்படுகிறது.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "வடிகட்டிப் பட்டியல்கள் அனைத்தும் ஏற்றப்படும் வரை வலைப்பின்னல் செயல்பாட்டை நிறுத்து", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "தடைசெய்யப்பட்ட வழங்கிகளின் பட்டியல்", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "மாற்றங்களைச் செயல்படுத்து", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "உள்ளமைக்கப்பட்ட", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "விளம்பரங்கள்", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "தனியுரிமை", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "தீப்பொருள் ஆள்களங்கள்", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "சமூக விட்ஜெட்கள்", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "குக்கீ அறிவிப்புகள்", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "எரிச்சல்கள்", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "பல்நோக்கு வடிகட்டி", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "மாநில பகுதிகள், மொழிகள் வாரியான", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "தனிபயன்", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "இறக்குமதி ...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "ஒரு வரிக்கு ஒரு இணைய முகவரி. ‘!’ எனும் எழுத்தில் தொடங்கும் வரிகள் புறக்கணிக்கப்படும். தவறான முகவரிகளும் அமைதியாகப் புறக்கணிக்கப்படும்.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "காலாவதியாகிவிட்டது", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "உள்ளடக்கத்தைக் காண்க", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "கடைசி புதுப்பிப்பு: {{முன்பு}}.\nபுதுப்பிப்பை கட்டாயப்படுத்த கிளிக் செய்க.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "புதுப்பிக்கிறது...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "ஒரு பிணைய பிழை வளத்தைப் புதுப்பிப்பதைத் தடுத்தது.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "நம்பகமில்லாத மூலத்தில் இருக்கும் வடிகட்டிகளை சேர்க்காதே.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "என் தனிப்பட்ட வடிகட்டிகளை செயல்படுத்து", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "இறக்குமதி செய் மற்றும் இணை", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "ஏற்று", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "மாற்றங்களைச் செயல்படுத்து", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "நிரந்தரமான விதிகள்", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "தற்காலிக விதிகள்", + "description": "header" + }, + "rulesRevert": { + "message": "முன்நிலையாக்கு", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "உறுதியளி", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "தொகு", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "சேமி", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "நிராகரி", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "கோப்பிலிருந்து இறக்குமதி செய் ...", + "description": "" + }, + "rulesExport": { + "message": "கோப்பினுள் ஏற்று", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "உங்களுடைய மாறுநிலை வடிகட்டி விதிப் பட்டியல்கள்.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "விதி தொடரியல்: மூல இலக்கு வகை செயல் ( முழு ஆவணங்கள் ).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "வகைபடுத்து:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "விதி வகை", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "மூல", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "இலக்கு", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "எந்தெந்தப் பக்கங்களில் uBlock₀ முடக்கப்பட வேண்டுமென்பதை அனுமதிப்பட்ட கட்டளைகள் ஆணையிடுகின்றன. வரிக்கு ஒரு இடுகை மட்டுமே. தவறான கட்டளைகள் அமைதியாகப் புறக்கணிக்கப்படும்.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "இறக்குமதி செய்து சேர்", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "ஏற்று", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "மாற்றங்களைச் செயல்படுத்து", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "வகை", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "ஆள்களம்", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "உரலி", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "வடிகட்டு", + "description": "English: Filter" + }, + "logAll": { + "message": "அனைத்தும்", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "இ.தளங்களின் பின்னால் நடப்பவை", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "தற்போதைய தாவல்", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "தாவல் உள்ளடக்கத்தை மீண்டும் ஏற்றவும்", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM இன்ஸ்பெக்டரை நிலைமாற்று", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "பாப்அப் பலகையை நிலைமாற்று", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock தோற்றம் விக்கி: லாகர்", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "லாகரை அழி", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "லாகரை இடைநிறுத்து (உள்வரும் எல்லா தரவையும் நிராகரி)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "லாகர் இடைநிறுத்தம் தவிர்", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "லாகர் வடிகட்டலை நிலைமாற்று", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "பதிகை உருப்படிகளை வடிகட்டு", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "லாகர் வடிகட்டுதல் விருப்பங்கள்", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "இல்லை", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "தடுக்கப்பட்டது", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "அனுமதிக்கப்படுகிறது", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "மாற்றப்பட்டது", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "முதல் கட்சி", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "மூன்றாம் தரப்பு", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "விவரங்கள்", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "வடிகட்டி", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "வடிகட்டி பட்டியல்", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "விதி", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "சூழல்", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "வேர் சூழல்", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "கட்சித்தன்மை", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "வகை", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "இணைய முகவரி", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "உரலி விதி", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "சூழல்:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "வகை:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "நிலையான வடிகட்டுதல்", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{origin}} தொடங்கும், {{br}}{{url}}-குப் பொருந்தும் முகவரி கொண்ட{{br}}{{type}} பிணையக் கோரிக்கைகளை {{action}},{{br}}பொருந்தும் விதிவிலக்கு வடிகட்டி {{importance}}.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "முடக்கு", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "அனுமதி", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "\"{{type}}\" வகை", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "எந்த வகையும்", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "“{{origin}}”-இல் இருந்து", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "எங்கிருந்தும்", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "இல்லாவிட்டால் மட்டும்", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "இருந்தாலும் கூட‌", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "நிலையான வடிப்பான் {{வடிகட்டி}} இதில் காணப்படுகிறது:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "தற்போது இயக்கப்பட்ட வடிகட்டி பட்டியல்களில் நிலையான வடிப்பானைக் கண்டுபிடிக்க முடியவில்லை", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "கீழே உள்ள மூன்று நிபந்தனைகளையும் பூர்த்தி செய்யாத லாகர் உள்ளீடுகள் தானாக நிராகரிக்கப்படும்:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "கடைசி {{உள்ளீடு} from நிமிடங்களிலிருந்து உள்ளீடுகளைப் பாதுகாக்கவும்", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "ஒரு தாவலுக்கு அதிகபட்சம் {{உள்ளீடு}} பக்க சுமைகளைப் பாதுகாக்கவும்", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "ஒரு தாவலுக்கு அதிகபட்சம் {{உள்ளீடு}} உள்ளீடுகளை பாதுகாக்கவும்", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "செங்குத்தாக விரிவாக்கப்பட்ட பயன்முறையில் ஒரு நுழைவுக்கு {{input}} கோடுகளைப் பயன்படுத்தவும்", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "நெடுவரிசைகளை மறை:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} நேரம்", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} வடிகட்டி/சட்டம்", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} சூழல்", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} கட்சித்தன்மை", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "பட்டியல்", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "பொருளடக்கம்", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "வெற்று", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "மார்க் டவுன்", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "திற", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "புதிய புகாரை உருவாக்கு", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "ஒரேமாதிரியான புகார்களைக் கண்டறி", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "ஆவணமாக்கல்", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "uBlock Originன் அனைத்து அம்சங்களையும்ப் பற்றி அறிய uBlock/wiki இல் உள்ள ஆவணத்தைப் படிக்கவும்.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "கேள்விகள் மற்றும் ஆதரவு", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "பிழை அறிக்கை", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "பிழைதீர்க்கும் தகவல்", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "வடிகட்டி சிக்கலைப் புகாரளி", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "வலைப்பக்கத்தின் முகவரி:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "வலைப்பக்கம்...", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "தனியுரிமைசார் சிக்கல்களுள்ளன", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "uBlock Origin இயக்கப்பட்டிருந்தால் உடையும்", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "தேவையற்ற தாவல்கள் அ சாளரங்களைத் திறக்கிறது", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "தனியுரிமை கொள்கை", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "மாற்றப்பதிவு", + "description": "" + }, + "aboutCode": { + "message": "மூல நிரல் (பொது மக்கள் உரிமம் பதிப்பு 3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "பங்களிப்பாளர்கள்", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "மூல குறியீடு", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "மொழிபெயர்ப்புகள்", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "பட்டியல்களை வடிகட்டவும்", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "வெளிப்புற சார்புகள் (GPLv3- இணக்கமானது):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO வின் சொந்த வடிகட்டி பட்டியல்கள் பின்வருவனவற்றில் இலவசமாக வழங்கப்படுகின்றன CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "வடிகட்டி பட்டியலைப் புதுப்பிக்க வேண்டியிருக்கும் போது சீரற்ற முறையில் தேர்ந்தெடுக்கப்பட்ட CDN பயன்படுத்தப்படுகிறது", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "கோப்பிற்கு காப்பு பிரதி எடு", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "கோப்பிலிருந்து மீட்டெடு...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "இயல்புநிலை அமைப்புகளுக்கு அகரமாக்கு...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "உங்கள் எல்லா அமைப்புகளும் காப்புப் பதிவைப் {{time}} பயன்படுத்தி மேலெழுதப்படும், பிறகு uBlock மறுதொடக்கம்.\n\nகாப்புப்பட்ட தரவைப் பயன்படுத்தி உள்ள எல்லா அமைப்புகளையும் மேலெழுதவா?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "தரவை வாசிக்க முடியவில்லை அ செல்லாதது", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "உங்கள் எல்லா அமைப்புகளும் அகற்றப்படும், பிறகு uBlock மீண்டும் தொடங்கும்.\n\nuBlockகை தொழிற்சாலை அமைப்புகளை மீட்டமைக்கவ?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "பிணையத்தில் பிழை: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "சந்தாதராகு", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "ஒரு நிமிடம் முன்பு", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} நிமிடங்கள் முன்பு", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "ஒரு மணி நேரம் முன்பு", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} மணிநேரம் முன்பு", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "ஒரு நாள் முன்பு", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} நாள் முன்பு", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "நிர்வாக மையத்தைக் காட்டுக", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "பதிவேட்டைக் காண்பி", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "முடக்கத்தில்", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "பக்கம் தடுக்கப்பட்டது", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin பின்வரும் பக்கத்தை ஏற்றுவதில் இருந்து தடுத்தது:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "பின்வரும் வடிகட்டியினால்:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "உரலியில் அளவுருக்கள் இல்லாமல்", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "இதனுள் கண்டறியப்பட்டது:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "பின் செல்", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "இச்சாளரத்தை மூடு", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "{{hostname}}-இல் கண்டிப்பான தடையைச்‌ செயலிழக்கச் செய்", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "தற்காலிகமாக", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "நிரந்தரமாக", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "தொடரவும்", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "காரணம்:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "பின்தொடர்பான்", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "மதிப்பற்றது", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "மேகக்கணினி சேமிப்பகத்திற்கு ஏற்று", + "description": "tooltip" + }, + "cloudPull": { + "message": "மேகக்கணினி சேமிப்பகத்திலிருந்து இறக்கு", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "மேகக்கணினி சேமிப்பகத்திலிருந்து இறக்கியபின் நடப்பு அமைப்புகளுடன் இணை", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "இந்தச் சாதனத்தின் பெயர்:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "எச்சரிக்கை! இந்த மேம்பட்ட அமைப்புகளை உங்கள் சொந்த ஆபத்தில் மாற்றவும்.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "சமர்ப்பி", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "மாற்றங்களைச் செயல்படுத்து", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "முன்நிலையாக்கு", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "பைட்டுகள்", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "சட்டத்தில் தொகுதி உறுப்பு ...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "வடிகட்டி பட்டியலுக்கு குழுசேர்...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "தற்காலிகமாகப் பெரிய ஒலி‍-ஒளி-படத்தொகுப்புகளின் கூறுகளை அனுமதி", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "குறுக்குவழியைத் தட்டச்சு செய்க", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "ஸ்க்ரோலிங் பூட்டு மாற்று", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "நினைவிக்கு நகலெடு", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "எல்லாம் தேர்ந்தெடு", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "ஒப்பனை வடிகட்டுதலை மறுநிலைமாற்று", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "தடுப்பு பயன்முறையை தளர்த்தவும்", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "பயன்படுத்தப்பட்ட சேமிப்பகத்தின் அளவு: {{value}} பைட்டுகள்", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "ஏற்ற கிளிக் செய்க", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "தவறுகள்: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/te/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/te/messages.json new file mode 100644 index 00000000..ac49c038 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/te/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "మొత్తానికి RAM ఇంకా CPU పై తేలికయిన, ఒక సమర్థవంతమైన నిరోధిని.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — నియంత్రణా వేదిక", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "హెచ్చరిక! మీరు భద్రపరచని మార్పులు ఉన్నాయి", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "ఇక్కడే ఉండండి", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "వదిలేయి", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "ఐచ్చికాలు", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "3వ-పక్ష వడపోతలు", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "నా వడపోతలు", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "నా నియమాలు", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "నమ్మే సైట్లు", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "షార్ట్కట్లు", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — నెట్వర్కు అభ్యర్ధనల చిట్టా", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "మా గురించి", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "సహాయం", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — వనరుల పట్టిక", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "అధునాతన అమరికలు", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "ఈ సైట్లో uBlock₀ను చేతనపరచడానికి లేదా అచేతనపరచడానికి క్లిక్ చేయండి.\n\nకేవలం ఈ పేజిలో uBlock₀ను అచేతనపరచడానికి Ctrl కీ వొత్తి పట్టుకొని క్లిక్ చేయండి.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "ఈ సైట్లో uBlock₀ను అచేతనపరచడానికి క్లిక్ చేయండి.\n\nకేవలం ఈ పేజిలో uBlock₀ను అచేతనపరచడానికి Ctrl కీ వొత్తి పట్టుకొని క్లిక్ చేయండి.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "ఈ సైట్లో uBlock₀ను చేతనపరచడానికి క్లిక్ చేయండి.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "నిలువరించబడిన అభ్యర్ధనలు", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "ఈ వెబ్ పేజిలో", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} లేదా {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "సంస్థాపన నుండి", + "description": "English: since install" + }, + "popupOr": { + "message": "లేదా", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "ఈ పేజిలో నిరోధించినవి", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "స్థాపించినప్పటి నుండి నిరోధించినవి", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "అనుసందానమైన డొమైన్లు", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "నియంత్రణా పట్టికను తెరచుటకు క్లిక్ చేయండి", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "భాగాలను ఎంచుకొని తొలగించు ప్రక్ర్యియనారంభించు", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "భాగాలను ఎంచుకొని తొలగించు ప్రక్ర్యియనారంభించు", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "అభ్యర్ధనల చిట్టా తెరువుము", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "ఈ వెబ్‌సైట్‌లో సమస్యను నివేదించండి", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "ఈ వెబ్సైట్ లో అన్ని పాప్అప్స్ ని నిషేధించు/అనుమతించు", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "ఇకపై ఈ సైట్లో అన్ని పపప్లను నిరోధించుటకు క్లిక్ చేయండి", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "ఇకపై ఈ సైట్లో అన్ని పపప్లను అనుమతించుటకు క్లిక్ చేయండి", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "ఈ సైట్లో వున్న భారి దృశ్య/శ్రవణ అంశాల నిరోధనా స్థితిని మార్చు", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "ఈ సైట్లో పెద్ద పరిమాణం మీడియా అంశాలను నిరోధించుటకు క్లిక్ చేయండి", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "ఇకపై ఈ సైట్లో పెద్ద పరిమాణం మీడియా అంశాలను అనుమతించుటకు క్లిక్ చేయండి", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "ఈ వెబ్ సైట్ లో కాస్మెటిక్ వడపోతల వాడుక స్థితిని మార్చు", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "ఈ వెబ్ సైట్ లో కాస్మెటిక్ ఫిల్టరింగ్ ని అచేతనపరచుటకు క్లిక్ చేయండి", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "ఈ వెబ్ సైట్ లో కాస్మెటిక్ ఫిల్టరింగ్ ని చేతపరచుటకు క్లిక్ చేయండి", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "ఈ సైట్ లో ఖతుల వాడుకని సక్రియ లేదా నిర్వీర్యపరచు", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "ఈ సైట్లోని రిమోట్ ఫాంట్లను నిరోధించుటకు క్లిక్ చేయండి", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "ఇకపై ఈ సైట్లో రిమోట్ ఫాంట్లను అనుమతించుటకు క్లిక్ చేయండి", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "ఈ సైటులో జావాస్క్రిప్టును అచేతనం చేయయానికి నొక్కండి", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "ఈ సైట్‌లో జావాస్క్రిప్ట్‌ను ఇకపై నిలిపివేయడానికి క్లిక్ చేయండి", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "పాప్-అప్ విండోలు", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "పెద్ద మీడియా అంశాలు", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "నిశ్చలాత్మక వడపోత", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "రిమోట్ ఫాంట్‌లు", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "జావాస్క్రిప్ట్", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "మరిన్ని", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "తక్కువ", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "సామాన్య నియమాలు: ఈ నిలువరుసలో వున్న నియమాలు అన్ని సైట్లకు వర్తిస్తాయి.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "స్థానిక నియమాలు: ఈ నిలువరుసలో వున్న నియమాలు కేవలం ప్రస్తుత సైట్ కే వర్తిస్తాయి.\nసామాన్య నియమాలపై స్థానిక నియమాలు అతిక్రమిస్తాయి.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "మీ మార్పులను శాశ్వతపరచడానికి క్లిక్ చేయండి.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "మీ మార్పులను తిరిగి పూర్వావస్థకు చేర్చుటకు క్లిక్ చేయండి.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "అన్ని", + "description": "" + }, + "popupImageRulePrompt": { + "message": "చిత్రాలు", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "సైట్-ఏతరుల అంశాలు", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "సైట్-ఏతరుల సిఎస్ఎస్/చిత్రాలు", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "లోబడిన స్క్రిప్ట్లు", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "సైట్ యొక్క స్క్రిప్ట్స్", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "సైట్-ఏతరుల స్క్రిప్ట్లు", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "సైట్-ఏతరుల ఫ్రేమ్స్", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "అనుసంధానించబడిన డొమైన్లు", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}} లో {{count}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "సంస్కరణ", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "స్క్రిప్ట్", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "ఫ్రేమ్", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "సృష్టించు", + "description": "English: Create" + }, + "pickerPick": { + "message": "ఎంచుకోనుము", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "నిశ్క్రమించు", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "పరిశీలించు", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "నెట్వర్క్ అభ్యర్దన వడపోతలు", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "కాస్మెటిక్ వడపోతలు", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "క్లిక్, Ctrl+క్లిక్", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "దీన్ని నిరోధించు", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "నిరోధించబడిన అంశాలయోక్క స్థానసంగ్రాహకాలను దాచుము", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "చిహ్నంపై నిరొధించబడిన అభ్యర్దనల సంఖ్య చూపుము", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "టూల్టిప్స్ ను అచేతనపరచు", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "అనువైనచోట్లలో కుడి-క్లిక్ మెనూని ఉపయోగించుము", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "వర్ణ అంధులకనుకూలమైన", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "స్వరూపం", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "థీమ్", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "అనుకూల యాస రంగు", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "క్లౌడ్ లో పొందుపర్చడాన్న్ది అనుమతించు", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "మీరు నిపుణత కలిగిన వినియోగాదారులైతే (అవసరమైన సమాచారం)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "అంశాలను ముందుగానే తీసుకురావడాన్ని నిషేధించు (ఎవైనా అవాంఛనీయ అనుసంధానాలను నివారించడానికి)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "చిరునామాల తానిఖిని దాటవేయు", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "WebRTCని మీ స్థానిక IP చిరునామాలను బహిర్గతపరచనివ్వొద్దు", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "సామాన్య ప్రవర్తన", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "ఈ సామాన్య ప్రవర్తనను ఒక్కో సైట్లో ప్రత్యేకంగా మార్చుకోవోచ్చు", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "కాస్మెటిక్ వడపోతను నిర్వీర్యపరచు", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "పరిమాణంలో {{input:number}} కేబీల కన్నా పెద్దవైన అంశాలను నిరోధించు", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "బయటి ఖతులను నిరోధించు", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "జావాస్క్రిప్ట్‌ను ఆపివేయి", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP నివేదికలను నిరోధించు", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "కానానికల్ పేర్లను తెరవండి", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "ఆధునిక", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "సాంకేతిక వినియోగదారులకు మాత్రమే సరిపోయే ఫీచర్లు", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "అధునాతన అమరికలు", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "గత పునరుద్ధారణ:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "గత నకలు:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "ఈ క్రింది మూలాల నుండి వచ్చిన {{netFilterCount}} నెట్వర్క్ వడపోతలు + {{cosmeticFilterCount}} కాస్మెటిక్ వడపోతలు:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}} లో వాడుతున్నది {{used}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "వడపోత జాబితాలను స్వయంచాలకంగా నవీకరించుము.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "జాబితా నవీకరించుము", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "తాత్కాలిక నిలువలను త్యజించు", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "పదనిరుపనచేసి కాస్మెటిక్ వడపోతలను ఉపయోగించు.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "

ఈ ఎంపిక Adblock Plus-అనుకూల “అంశాల దాచిపెట్టే” ఫిల్టర్లు ని పదనిరుపనచేసి అమలుపరుస్తుంది. ఈ వఫిల్టర్లు చాలావరకు కాస్మెటిక్ అయివుంటాయి, అవి నెట్వర్క్ అభ్యర్ధన నిరోదన ద్వారా నిరోధించాబడలేని అవాంఛిథ అంశాలను దాచుటకు ఉపకరిస్తాయి.

ఈ ఎంపిక ను ఎంచుకున్నయేడల uBlock₀ యొక్క మెమరీ వాడుక పెరిగే ఆస్కారమున్నది

", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "కాస్మెటిక్ వడపోతలను విస్మరించు", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "

సాధారణ కాస్మెటిక్ ఫిల్టర్లు అన్ని సైట్లపై ఉపయోగించబడుతాయి.

వీటిని uBlock₀ సమర్థవంతంగా ఉపయోగించగలిగినా, కొన్ని భారీ లేదా దీర్ఘకాలికంగా వీక్షిస్తున్న పేజీలలో CPU ఇంకా RAM వాడుకను ఇవి పెంచగలవు.

ఈ ఎంపికను ఎంచుకోవడంవలన, సాధారణ కాస్మెటిక్ ఫిల్టర్లు కొరకు అదనపు CPU ఉపయోగాన్ని నివారిస్తుంది, పైగా uBlock₀ యొక్క RAM వాడుక తగ్గడానికి తోడ్పడుతుంది.

అల్పసామర్ధ్య పరికరాలలో దీన్ని ఎంచుకోవడం శ్రేయస్కరం.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "అన్ని ఫిల్టర్ జాబితాలు లోడ్ అయ్యే వరకు నెట్‌వర్క్ కార్యాచరణను నిలిపివేయండి", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "నిరోధించబడిన చిరునామాల జాబితా", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "మార్పులను అమలుపరచు", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "అంతర్నిర్మితం", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "ప్రకటనలు", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "గోప్యత", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "మాల్వేర్ డొమైన్లు", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "అసౌకర్యాల పట్టిక", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "బహూలార్ధక", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "ప్రాంతాలు, భాషలు", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "సొంత నిర్దేషణ", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "దిగుమతిచేయు...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "ఒక్కో పంక్తిలో ఒక URL. పంక్తిలో మొదట ‘!’ ఉన్నచో ఆ పంక్తి పరిగనించబడదు. చెల్లని URLలు మౌనంగా విస్మరించబడుతాయి.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "పాతబడింది", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "దీన్ని చూపించు", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "గత నవీకరణ: {{ago}}.\nనవీకరించుటకు క్లిక్ చెయ్యండి.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "నవీకరిస్తోంది...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "ఈ చిట్టా అనుసంధాన వైఫల్యం వలన నవికరించబడలేదు.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "అవిశ్వసనీయ మూలాల నుండి ఫిల్టర్‌లను జోడించవద్దు.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "దిగుమతిచేసి పోడిగించుము", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "ఎగుమతి చేయు", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "మార్పులను భద్రపరచు", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "శాశ్వత నియమాలు", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "తాత్కాలిక నియమాలు", + "description": "header" + }, + "rulesRevert": { + "message": "మార్పులను తిరస్కరించు", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "మార్పులను భద్రపరచు", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "చక్కదిడ్డుము", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "భద్రపరచు", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "పారవేయు", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "ఫైల్ నుండి దిగుమతి చేయుము...", + "description": "" + }, + "rulesExport": { + "message": "ఫైల్కు ఎగుమతి చేయుము", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "మీ క్రియాశీలక జల్లెడ నియమాల జాబితా.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "నియమనిర్మాన పద్ధతి: మూలం గమ్యం రకం చర్య (పూర్తి వివరాలు).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "క్రమబద్ధీకరించు", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "రూల్ రకం", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "మూలం", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "గమ్యం", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "uBlock Origin అచేతనబడించిన హోస్టూల జాబితా, ఇది మీరు కూర్చినది,. ఒక్కో పంక్తికి ఒక్కో నమోదు. చెల్లని నమోదులు మౌనంగా విస్మరించబడుతాయి.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "దిగుమతిచేసి పోడిగించుము", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "ఎగుమతి", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-whitelist_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "మార్పులను భద్రపరచు", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "రకం", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "డొమైన్", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "జల్లెడ", + "description": "English: Filter" + }, + "logAll": { + "message": "అన్ని", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "తెర వెనుక", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "ప్రస్తుత ట్యాబ్", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "టాబ్ కంటెంట్‌ను మళ్లీ లోడ్ చేయండి", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM ఇన్స్పెక్టర్ను టోగుల్ చేయండి", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "పాపప్ ప్యానెల్‌ను టోగుల్ చేయండి", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock మూలం వికీ: లాగర్", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "లాగర్ క్లియర్", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "లాగర్ను పాజ్ చేయండి (అన్ని ఇన్కమింగ్ డేటాను విస్మరించండి)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "లాగర్ను పాజ్ చేయండి", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "లాగర్ ఫిల్టరింగ్‌ను టోగుల్ చేయండి", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "చిట్టాలోని నమోదులను జల్లెడపరచు", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "లాగర్ ఫిల్టరింగ్ ఎంపికలు", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "కాదు", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "నిరోధించబడినవి", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "అనుమతించబడింది", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "సవరించబడింది", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "మొదటి పార్టీ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "మూడవ పార్టీ", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "వివరాలు", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "ఫిల్టర్", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "ఫిల్టర్ జాబితా", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "నియమం", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "సందర్భం", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "రూట్ సందర్భం", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "పార్టీనెస్", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "రకం", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "క్రియాశీలక URL ఫిల్టరింగ్", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "సందర్భం:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "రకం:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "నిశ్చలాత్మక ఫిల్టరింగ్", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{origin}} నుండి మొదలయ్యి, {{br}}{{url}} తో సరిపోలిన url గల {{br}}{{type}} నెట్వర్క్ అభ్యర్ధనలను {{action}}, {{br}}అదీ వడపోతల జాబితాలో {{importance}}.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "తిరస్కరించు", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "అనుమతించు", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "“{{type}}” రకమైన", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "ఏటువంటిదైనా", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "“{{origin}}” నుండి", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "ఎక్కడినుండైనా", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "మినహాయింపు వుంటే", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "మినహాయింపు వున్నా", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "నిశ్చలాత్మక ఫిల్టర్ అయిన {{filter}} క్రింది వాటిలో కలదు:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "నిశ్చలాత్మక ఫిల్టర్ అయిన {{filter}} ప్రస్తుతం ఉత్తేజపరిచిన ఫిల్టర్ జాబితాలలో కనుగొనబడలేదు", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "దిగువ మూడు షరతులను నెరవేర్చని లాగర్ ఎంట్రీలు స్వయంచాలకంగా విస్మరించబడతాయి:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "చివరి {{input}} నిమిషాల నుండి ఎంట్రీలను భద్రపరచండి", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "ప్రతి ట్యాబ్‌కు గరిష్టంగా {{input}} పేజీ లోడ్లను భద్రపరచండి", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "ప్రతి ట్యాబ్‌కు గరిష్టంగా {{input}} ఎంట్రీలను భద్రపరచండి", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "నిలువుగా విస్తరించిన మోడ్‌లో ప్రతి ఎంట్రీకి {{input}} పంక్తులను ఉపయోగించండి", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "నిలువు వరుసలను దాచు:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} సమయం", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} ఫిల్టర్ / నియమం", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} e సందర్భం", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}}పార్టీనెస్", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "జాబితా", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "పట్టిక", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "సాదా", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "మార్క్డౌన్", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "తెరవండి", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "కొత్త నివేదికను సృష్టించండి", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "సారూప్య నివేదికలను కనుగొనండి", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "డాక్యుమెంటేషన్", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "uBlock ఆరిజిన్ యొక్క అన్ని లక్షణాల గురించి తెలుసుకోవడానికి uBlock/wiki వద్ద డాక్యుమెంటేషన్ చదవండి.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "ప్రశ్నలు మరియు మద్దతు", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Bug report", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Troubleshooting Information", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "అనవసరమైన ట్యాబ్‌లు లేదా విండోలను తెరుస్తుంది", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "వెబ్ పేజీని “NSFW”గా లేబుల్ చేయండి (“పని కోసం సురక్షితం కాదు”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "గోప్యతా విధానం", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "మార్పుల సంచిక", + "description": "" + }, + "aboutCode": { + "message": "మూలం (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "ప్రాజెక్ట్కు సహాయ పడిన వారు", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "మూల కోడ్", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "అనువాదాలు", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "జాబితాలను ఫిల్టర్ చేయండి", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "బాహ్య ఆధారపడటం (GPLv3- అనుకూలమైనది):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO యొక్క సొంత ఫిల్టర్ జాబితాలు కింది వాటిలో ఉచితంగా హోస్ట్ చేయబడతాయి CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "ఫిల్టర్ జాబితాను అప్‌డేట్ చేయాల్సిన అవసరం వచ్చినప్పుడు యాదృచ్ఛికంగా ఎంచుకున్న CDN ఉపయోగించబడుతుంది", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "ఫైల్ లో భద్రపరచు", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "ఫైల్ నుండి పునరుద్దరించు...", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "సంస్థాపన అమరికలను పునరుద్దరించు...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "మీరు పేర్కొన్న ఐచ్చిక్కాలన్ని {{time}}నకు తీసుకున్న నకలు డేటాతో తిరగారాయబడుతాయి, ఆ పిమ్మట uBlock₀ పునఃప్రారంభమవుతుంది.\n\nమీ ఐచ్చికాలను తిరగరాయుట మీకు సమ్మతమేనా?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "డేటాను చదవడంలో లోపం సంభవించినది(డేటా పాడైవుంది లేదా అందుబాటులో లేదు)", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "ఐచ్చికాలలో మీరు చేసిన మార్పులన్నీ తొలగించనా పిమ్మట uBlock₀ పునఃప్రారంభిన్చాబాడును.\n\nమరి సంస్థాపన ఐచ్చికాలను పునరుద్ధరించాలా?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "అనుసంధాన వైఫల్యం: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "సభ్యత్వాన్ని పొందండి", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "ఒక నిమిషం క్రితం", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} నిమిషాల క్రితం", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "ఒక గంట క్రితం", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} గంటల క్రితం", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "ఒక రోజు క్రితం", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} రోజుల క్రితం", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "నియంత్రణా పట్టికను చూపు", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "నెట్వర్క్ అభ్యర్ధనల చిట్టాను చూపు", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "అచేతనం", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "పేజీ బ్లాక్ చేయబడింది", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "ఈ తరువాయి పేజిని uBlock Origin బ్రౌజరులోకి ఎక్కిన్చనివ్వలేదు:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "ఇది ఈ క్రింది వడపోతననుసారించి తీసుకోబడిన చర్య", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "పారామితులు లేని", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "ఈ వడపోత వున్న జాబితా పేరు:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "వెనక్కి వెళ్ళు", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "విండో మూయుము", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "{{hostname}} తో అనుసంధానాన్ని అనుమతించాలా?", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "తాత్కాలికంగా", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "శాశ్వతంగా", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceed", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "క్లౌడ్ లో పొందుపరచు", + "description": "tooltip" + }, + "cloudPull": { + "message": "క్లౌడ్ నుండి దిగుమతిపరచు", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "అంతర్జాలంలో భద్రపరచిన ఎంపికలను దిగుమతి చేసి ప్రస్తుత ఎంపికలకు జోడించు", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "ఈ పరికరం పేరు:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "హెచ్చరిక! ఈ అధునాతన అమరికలను జాగ్రత్తతో మార్చండి.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "పంపించు", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "మార్పులను అమలుపరచు", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "మార్పులను తిరస్కరించు", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "బైట్లు", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "ఫ్రేమ్‌లో మూలకాన్ని బ్లాక్ చేయండి ...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "ఫిల్టర్ జాబితాకు సభ్యత్వం పొందండి ...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "భారి దృశ్య/శ్రవణ అంశాలను తాత్కాలికంగా అనుమతించు", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "షార్ట్కట్ టైప్ చేయండి", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "లాక్ చేసిన స్క్రోలింగ్‌ను టోగుల్ చేయండి", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "క్లిప్‌బోర్డ్‌కు కాపీ చేయండి", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Select all", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "నిరోధించే మోడ్‌ను రిలాక్స్ చేయండి", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "ఉపయోగించిన నిల్వ: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "కేబీ", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "ఏంబీ", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "జీబీ", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "లోడ్ చేయడానికి క్లిక్ చేయండి", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "ఇది అంతిమంగా వుండాల్సిన నమోదు", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/th/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/th/messages.json new file mode 100644 index 00000000..aa461a76 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/th/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "มาแล้ว! โปรแกรมบล็อกโฆษณาได้อย่างมีประสิทธิภาพ โดยที่ไม่กินซีพียูหรือแรม", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — หน้าหลัก", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "คำเตือน! คุณมีการเปลี่ยนแปลงที่ยังไม่ได้บันทึก", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "พักที่นี่", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "ไม่สนใจ", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "การตั้งค่า", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "รายการตัวกรอง", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "ตัวกรองของฉัน", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "เงื่อนไขของฉัน", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "เว็บไซต์ที่เชื่อถือได้", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "ทางลัด", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — บันทึก", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "เกี่ยวกับ", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "สนับสนุน", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — โปรแกรมดูสิ่งที่ถือครอง", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "การตั้งค่าขั้นสูง", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "คลิก: ปิด/เปิดการทำงานของ uBlock₀ สำหรับเว็บไซต์นี้ \nCtrl+คลิก: ปิดการทำงานของ uBlock₀ เฉพาะหน้าเว็บนี้", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "คลิกเพื่อปิดใช้งาน uBlock₀ สำหรับเว็บไซต์นี้\n\nCtrl+คลิกเพื่อปิดใช้งาน uBlock₀ เฉพาะในหน้านี้", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "กดเพื่อเปิดใช้่งาน uBlock₀ สำหรับเว็บนี้", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "การร้องขอถูกปฏิเสธ", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "ในหน้านี้", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "ตั้งแต่ติดตั้ง", + "description": "English: since install" + }, + "popupOr": { + "message": "หรือ", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "ถูกบล็อกบนหน้านี้", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "ถูกบล็อกตั้งแต่ติดตั้ง", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "โดเมนที่เชื่อมต่อ", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "เปิด dashboard", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "เข้าสู่โหมดโจมตีองค์ประกอบ", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "เข้าสู่โหมดเลือก element", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "เปิดบันทึกการทำงาน", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "แจ้งปัญหาการใช้งานเว็บไซต์", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "เปลี่ยนสถานะการบล็อกป็อบอัพบนเว็บไชต์นี้", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "คลิกเพื่อบล็อกป๊อปอัปทั้งหมดในเว็บไซต์นี้", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "คลิกเพื่อยกเลิกการบล็อกป๊อปอัปทั้งหมดในเว็บไซต์นี้", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "เปลี่ยนสถานะการบล็อกองค์ประกอบ media ขนาดใหญ่บนเว็บไชต์นี้", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "คลิกเพื่อปิดกั้นองค์ประกอบชนิด Media ที่มีขนาดใหญ่ในเว็บไซต์นี้", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "คลิกเพื่อยกเลิกการปิดกั้นองค์ประกอบชนิด Media ที่มีขนาดใหญ่ในเว็บไซต์นี้", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "สลับการกรององค์ประกอบตกแต่งสำหรับเว็บไซต์นี้", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "คลิกเพื่อปิดการใช้ฟิลเตอร์บนเว็บไซต์นี้", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "คลิกเพื่อเปิดใช้งานการกรององค์ประกอบตกแต่งในเว็บไซต์นี้", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "สลับเป็นฟอนต์เครื่องที่บล็อกสำหรับเว็บนี้", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "คลิกเพื่อบล็อกฟอนต์จากเว็บไซต์นี้", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "คลิกเพื่อยกเลิกการบล็อกป๊อปอัปทั้งหมดในเว็บไซต์นี้", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "กดเพื่อปิดการใช้งาน JavaScript บนเว็บไซต์นี้", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "กดเพื่อยกเลิกการบล็อก JavaScript บนเว็บไซต์นี้", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "หน้าต่าง Pop-up", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "องค์ประกอบ media ขนาดใหญ่", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "ฟิลเตอร์", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "ฟอนต์ที่เว็บไชต์กำหนด", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "เพิ่มเติม", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "แสดงน้อยลง", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "กฏทั่วเว็บ: คอลัมน์นี้มีไว้สำหรับกฏที่ใช้กับทุกเว็บไซต์", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "กฏเว็บเดียว: คอลัมน์นี้มีไว้สําหรับกฏบนเว็บไซต์นี้เท่านั้น", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "คลิกเพื่อให้ทําให้การเปลี่ยนแปลงถาวร", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "ยกเลิกการเปลี่ยนแปลง", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "ทั้งหมด", + "description": "" + }, + "popupImageRulePrompt": { + "message": "รูปภาพ", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "บุคคลที่ 3", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/รูปภาพ บุคคลที่ 3", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "สคริปท์อินไลน์", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "สคริปภายใน", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "สคริปท์บุคคลที่3", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "กรอบบุคคลที่3", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "โดเมนที่เชื่อมต่อ", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} ใน {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "เวอร์ชัน", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "สคริปต์", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "กรอบ", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "สร้าง", + "description": "English: Create" + }, + "pickerPick": { + "message": "เลือก", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "ออก", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "ตัวอย่าง", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "ฟิลเตอร์เครื่อข่าย", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "ฟิลเตอร์", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "คลิก, Ctrl-คลิก", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "บล็อคองค์ประกอบ", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "ซ่อนตัวยึดตําแหน่งขององค์ประกอบที่ถูกบล็อก", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "แสดงจำนวนคำขอเครือข่ายที่ถูกปฏิเสธบนไอคอน", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "ปิดคำอธิบาย", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Make use of context menu where appropriate", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "เป็นมิตรกับคนตาบอดสี", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "รูปแบบการแสดงผล", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "รูปแบบการแสดงผล", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "เปิดการเก็บข้อมูลบน Cloud", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "ฉันเป็นผู้ใช้ขั้นสูง (โปรดอ่านเอกสารสำคัญ)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "ปิดใช้งานการดึงข้อมูลล่วงหน้า (เพื่อป้องกันการเชื่อมต่อสำหรับคำขอเครือข่ายที่ถูกบล็อก)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Disable hyperlink auditing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "ป้องกันไม่ให้ WebRTC รั่วไหลที่อยู่ IP ภายในเครื่อง", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Default behavior", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "These default behaviors can be overridden on a per-site basis", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Disable cosmetic filtering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "ปิดกั้นองค์ประกอบชนิด Media ที่มีขนาดใหญ่กว่า {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "ฟอนต์เครื่องที่บล็อก", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "ปิดการใช้งาน JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "บล็อกรายงาน CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "เปิดเผยชื่อตามหลักเกณฑ์", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "ขั้นสูง", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "เป็นฟีเจอร์ที่เหมาะสำหรับผู้ใช้ที่เชี่ยวชาญเท่านั้น", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "การตั้งค่าขั้นสูง", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "การคืนค่าครั้งล่าสุด:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "การสำรองข้อมูลครั้งล่าสุด", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} ตัวกรองเครือข่าย + {{cosmeticFilterCount}} ตกแต่งตัวกรองจาก:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} ใช้ไปแล้วจาก {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "อัปเดตรายการตัวกรองอัตโนมัติ", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "อัปเดตเดี๋ยวนี้", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "ล้างแคชทั้งหมด", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "แยกวิเคราะห์และบังคับใช้ฟิลเตอร์ตกแต่ง", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "ฟิลเตอร์ตกแต่งทำหน้าที่ซ่อนองค์ประกอบในหน้าเว็บซึ่งถือว่าเป็นภาพที่รบกวนสายตา และไม่สามารถบล็อกได้โดยกลไกการกรองตามคำขอของเครือข่าย", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignore generic cosmetic filters", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "ตัวกรองส่วนแสดงผลทั่วไปคือตัวกรองที่สร้างขึ้นเพื่อใช้กับทุกเว็บไซต์ การเปิดใช้งานตัวเลือกนี้จะช่วยลดการใช้หน่วยความจำและ CPU ที่เพิ่มขึ้นบนหน้าเว็บ ซึ่งเกิดจากการทำงานของตัวกรองเหล่านี้\n\nแนะนำให้เปิดใช้งานตัวเลือกนี้บนอุปกรณ์ที่มีประสิทธิภาพต่ำ", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "ระงับกิจกรรมเครือข่ายจนกว่าจะโหลดรายการตัวกรองทั้งหมด", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Built-in", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "โฆษณา", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "ความเป็นส่วนตัว", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "การป้องกันมัลแวร์, ความปลอดภัย", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "วิดเจ็ตโซเชียล", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "คำประกาศการใช้คุ้กกี้", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Annoyances", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multipurpose", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "ภูมิภาค, ภาษา", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "กำหนดเอง", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "นำเข้า...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "หนึ่ง URL ต่อบรรทัด URL ที่ไม่ถูกต้องจะถูกละเว้น", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "ล้าสมัย", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "view content", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "อัพเดตล่าสุด: {{ago}}", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "กำลังอัปเดต...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "ความผิดพลาดของเครือข่ายขวางกั้นการอัปเดต", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "ไม่อนุญาตให้เพิ่มตัวกรองจากแหล่งที่มาที่ไม่น่าเชื่อถือ", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "เปิดใช้งานการปรับแต่งตัวกรองของฉัน", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "อนุญาตการปรับแต่งตัวกรองที่ต้องมีความน่าเชื่อถือ", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "นำเข้าและเพิ่มต่อท้าย…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "ส่งออก", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "นำไปใช้", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "กฏถาวร", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "กฏชั่วคราว", + "description": "header" + }, + "rulesRevert": { + "message": "คืนกลับ", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "ยืนยัน", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "แก้ไข", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "บันทึก", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "ละทิ้ง", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "นำเข้าจากไฟล์", + "description": "" + }, + "rulesExport": { + "message": "ส่งออกไปยังไฟล์", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "รายการเงื่อนไขตัวกรองแบบไดนามิกของคุณ", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "ข้อกำหนดเงื่อนไข: การดำเนินการประเภทแหล่งปลายทาง (เอกสารฉบับเต็ม)", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "เรียง", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "ประเภทกฎ", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "แหล่งที่มา", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "ปลายทาง", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "ระบุไซต์ที่เชื่อถือได้เพื่อกำหนดว่าควรปิดการใช้งาน uBlock Origin ที่หน้าเว็บใด พิมพ์หนึ่งรายการต่อบรรทัด", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "นำเข้าและรวม", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "ส่งออก", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-whitelist_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "ใช้การเปลี่ยนแปลง", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "ประเภท", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "โดเมน", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "ตัวกรอง", + "description": "English: Filter" + }, + "logAll": { + "message": "ทั้งหมด", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "ตาราง", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "แท็บปัจจุบัน", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "โหลดเนื้อหาแท็บปัจจุบันใหม่", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "สลับตัวตรวจสอบ DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "สลับแผงป๊อปอัป", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: ตัวลงบันทึก", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "ล้างบันทึก", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "หยุดการบันทึก Log (ลบทิ้งทั้งหมด)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "ยกเลิกการหยุดบันทึกชั่วคราว", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "สลับตัวกรองบันทึก", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "ตัวกรองเนื้อหาบันทึก", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "ตัวเลือกตัวกรองบันทึก", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "ไม่", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "บล๊อกอยู่", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "อนุญาต", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "แก้ไขแล้ว", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "ฝ่ายที่ 1", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "บุคคลที่ 3", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "รายละเอียด", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "ตัวกรอง", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "รายการตัวกรอง", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "กฎ", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "บริบท", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "ปฐมบท", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "การรวมกลุ่ม", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "ประเภท", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "เงื่อนไข URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "บริบท:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "ประเภท", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "ตัวกรองแบบคงที่", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} การร้องขอเครือข่ายของ {{type}} {{br}}ซึ่ง URL ตรงกันกับ {{url}} {{br}}และมีต้นทางที่ {{origin}},{{br}}{{importance}} มีตัวกรองที่ยกเว้นตรงกัน", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "บล็อก", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "อนุญาต", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "ประเภท “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "ประเภทใดก็ได้", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "จาก “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "จากที่ใดก็ได้", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "ยกเว้นเมื่อ", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "ถึงแม้ว่า", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "ตัวกรองแบบคงที่ {{filter}} พบใน:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "ตัวกรองแบบคงที่ไม่พบในรายการตัวกรองที่เปิดอยู่", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "รายการบันทึกที่ไม่ครบถ้วนทั้ง 3 เงื่อนไขตามด้านล่างจะถูกละทิ้งโดยอัตโนมัติ", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "สงวนรายการ {{input}} นาที", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "สงวนจำนวนมากที่สุด {{input}} หน้าโหลดต่อแท็บ", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "สงวนจำนวนมากที่สุด {{input}} รายการต่อแท็บ", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "ใช้ {{input}} บรรทัดต่อรายการในโหมดการขยายแนวตั้ง", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "ซ่อนคอลัมน์", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} เวลา", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} ตัวกรอง/กฏ", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} บริบท", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} การจัดกลุ่ม", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "รายการ", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "ตาราง", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "ธรรมดา", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "ทำเครื่องหมายลง", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "เปิด", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "สร้างรายงานใหม่", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "ค้นหารายงานคล้ายกันบน GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "เอกสารอ้างอิง", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "อ่านเอกสารข้อมูลที่ uBlock/wiki เพื่อเรียนรู้ฟีเจอร์ทั้งหมดของ uBlock Origin", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "คำถามและการสนับสนุน", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "การตอบคำถามและการสนับสนุนอื่น ๆ ที่เตรียมไว้ให้บน subreddit /r/uBlockOrigin", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "คัดกรองปัญหา/เว็บไซต์ที่ไม่สมบูรณ์", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "รายงานปัญหาการกรองด้วยเว็บไซต์เฉพาะที่ uBlockOrigin/uAssets ตัวติดตามปัญหา. ต้องใช้บัญชี GitHub", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "สำคัญ: หลีกเลี่ยงการใช้ตัวบล๊อกอื่น ๆ ร่วมกันกับ uBlock Origin ซึ่งอาจทำให้เกิดปัญหาในการกรองของหน้าเว็บไซต์ที่ต้องการ", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "เคล็ดลับ: ให้แน่ใจว่ารายการตัวกรองของคุณได้รับการอัปเดตแล้ว ตัวบันทึก เป็นเครื่องมือหลักในการวินิจฉัยปัญหาที่เกี่ยวเนื่อง", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "รายงานข้อผิดพลาด", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "รายงานปัญหาด้วย uBlock Origin เอง uBlockOrigin/uBlock-issue ปัญหาตัวติดตาม. ต้องใช้บัญชี GitHub", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "ข้อมูลการแก้ไขปัญหา", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "ด้านล่างนี้เป็นข้อมูลทางเทคนิคซึ่งอาจเป็นประโยชน์ในกรณีที่อาสาสมัครพยายามให้การช่วยเหลือในการแก้ไขปัญหาให้คุณ", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "รายงานปัญหาตัวกรอง", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "เพื่อเป็นการลดภาระอาสาสมัครจากการรายงานซ้ำซ้อน โปรดตรวจสอบก่อนว่าปัญหาดังกล่าวได้รับการรายงานไปแล้วหรือยัง หมายเหตุ: คลิกที่ปุ่มจะเป็นการส่งต้นทางของหน้าเว็บไปยัง GitHub", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "มีการอัปเดตรายการตัวกรองประจำวัน ให้แน่ใจว่าปัญหาของคุณยังไม่ได้ระบุไว้ในรายการตัวกรองล่าสุด", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "ตรวจสอบว่าปัญหายังคงอยู่หลังจากมีการโหลดหน้าเว็บเพจที่มีปัญหาซ้ำแล้ว", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "ที่อยู่ของเว็บเพจ:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "เว็บเพจ…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- เลือกรายการ --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "แสดงโฆษณาหรือสิ่งที่ตกค้างอยู่", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "มีโอเวอร์เลย์หรือสิ่งอื่น ๆ ที่รบกวน", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "ตรวจหา uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "มีปัญหาที่เกี่ยวเนื่องกับความเป็นส่วนตัว", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "ความผิดปกติเมื่อเปิดใช้งาน uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "เปิดแท็บหรือหน้าต่างที่ไม่ต้องการ", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "นำไปสู่แบดแวร์ ฟิชชิ่ง", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "ติดป้ายเว็บเพจว่าเป็น “NSFW” (“ไม่ปลอดภัยกับงาน (Not Safe For Work)”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "นโยบายความเป็นส่วนตัว", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "บันทึกการเปลี่ยนแปลง", + "description": "" + }, + "aboutCode": { + "message": "ซอร์สโค้ด (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "ผู้ร่วมพัฒนา", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "ซอร์สโค้ด", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "การแปลภาษา", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "รายการตัวกรอง", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "External dependencies (GPLv3-compatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's ถือครองรายการตัวกรองที่เก็บไว้ที่ CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "CDN ที่สุ่มเลือกจะถูกใช้เมื่อจำเป็นต้องอัปเดตรายการตัวกรอง", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "แบ็กอัพไปยังไฟล์…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "คืนค่าจากไฟล์…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "ปรับเป็นการตั้งค่าเริ่มต้น", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "การตั้งค่าทั้งหมดของคุณจะถูกเขียนทับโดยใช้ข้อมูลที่แบ็กอัพไว้บน {{time}} และ uBlock₀ จะรีสตาร์ท\n\nเขียนทับการตั้งค่าทั้งหมดด้วยข้อมูลที่แบ็กอัพหรือไม่?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "ไม่สามารถอ่านข้อมูลได้หรือข้อมูลไม่ถูกต้อง", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "การตั้งค่าทั้งหมดของคุณจะถูกลบทิ้ง และ uBlock₀ จะรีสตาร์ท\n\nรีเซ็ต uBlock₀ เป็นค่าเริ่มต้นโรงงาน?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "เครือข่ายผิดพลาด: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "สมัครสมาชิก", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "เมื่อนาทีที่แล้ว", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} นาทีที่แล้ว", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "เมื่อชั่วโมงที่แล้ว", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} ชั่วโมงที่แล้ว", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "เมื่อวันก่อน", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} วันที่แล้ว", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "แสดงแดชบอร์ด", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "แสดงบันทึก", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "ปิด", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "เพจถูกบล็อค", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin ป้องกันไม่ให้โหลดหน้าต่อไปนี้:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "เนื่องจากตัวกรองดังต่อไปนี้", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "ไม่ระบุพารามิเตอร์", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "พบใน:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "ย้อนกลับ", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "ปิดหน้าต่างนี้", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "ไม่ต้องแจ้งเตือนอีกเกี่ยวกับเว็บไซต์นี้", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "ปิดใช้งานการปิดกั้นสำหรับ {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "ชั่วคราว", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "ถาวร", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "ดำเนินการ", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "เว็บเพจที่บล๊อกต้องการเด้งไปเว็บไซต์อื่น หากคุณต้องการดำเนินการต่อ คุณจะถูกนำทางโดยตรงไปที่: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "สาเหตุ", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "มัลแวร์", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "ตัวติดตาม", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "น่าสงสัย", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "ส่งออกไปที่เก็บบนคลาวด์", + "description": "tooltip" + }, + "cloudPull": { + "message": "นำเข้าจากที่เก็บบนคลาวด์", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "นำเข้าจากที่เก็บบนคลาวด์และผสานเข้ากับการตั้งค่าปัจจุบัน", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "ชื่ออุปกรณ์นี้:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "คำเตือน! ปรับเปลี่ยนการตั้งค่าขั้นสูงเหล่านี้ด้วยความระมัดระวัง", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "ยืนยัน", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "ใช้การเปลี่ยนแปลง", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "คืนค่ากลับ", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "ไบต์", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "บล๊อกองค์ประกอบในเฟรม…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "สมัครรับรายชื่อตัวกรอง...", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "อนุญาตองค์ประกอบชนิด Media ขนาดใหญ่ชั่วคราว", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "ดูต้นฉบับ", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "พิมพ์ทางลัด", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "สลับการล็อกการเลื่อน", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "คัดลอกไปยังคลิปบอร์ด", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "เลือกทั้งหมด", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "สลับตัวกรองการตกแต่ง", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "สลับ JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "ผ่อนปรนโหมดการบล๊อก", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "หน่วยความจำที่ใช้: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "กิโลไบต์", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "เมกะไบต์", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "คลิกเพื่อโหลด", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "ข้อผิดพลาด: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "ไม่สามารถกรองได้สมบูรณ์เมื่อตอนเริ่มเบราว์เซอร์ โหลดหน้าเว็บใหม่เพื่อให้การกรองสมบูรณ์", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/tr/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/tr/messages.json new file mode 100644 index 00000000..b74076ba --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/tr/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Sonunda, etkili bir engelleyici. İşlemciyi ve belleği yormaz.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Kontrol paneli", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Uyarı! Kaydedilmemiş değişiklikleriniz var", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Kal", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Yok say", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Ayarlar", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Filtre listeleri", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Filtrelerim", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Kurallarım", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Güvenilen siteler", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Kısayollar", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Günlükçü", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Hakkında", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Destek", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — Kaynak görüntüleyici", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Gelişmiş ayarlar", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Tıklama: uBlock₀'i bu site için devre dışı bırak/etkinleştir.\n\nCtrl+tıklama: uBlock₀'i yalnızca bu sayfada devre dışı bırak.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "uBlock₀'i bu sitede devre dışı bırakmak için tıklayın.\n\nuBlock₀'i yalnızca bu sayfada devre dışı bırakmak için Ctrl+tıklayın.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "uBlock₀'i bu sitede etkinleştirmek için tıklayın.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "engellenen istekler", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "bu sayfada", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} (%{{percent}})", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "kurulumdan beri", + "description": "English: since install" + }, + "popupOr": { + "message": "ya da", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Bu sayfada engellenen", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Kurulumdan beri engellenen", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Bağlanılan alan adları", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Kontrol panelini açar", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Öge silme moduna gir", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Öge seçme moduna gir", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Günlükçüyü açar", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Bu web sitesinde bir sorunu bildir", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Bu site için açılır pencere engellemeyi aç/kapat", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Bu sitede açılır pencerelerin tümünü engellemek için tıklayın", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Bu sitede açılır pencerelerin tümünü artık engellememek için tıklayın", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Bu site için büyük medya ögelerini engellemeyi aç/kapat", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Bu sitede büyük medya ögelerini engellemek için tıklayın", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Bu sitede büyük medya ögelerini artık engellememek için tıklayın", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Bu site için kozmetik filtrelemeyi aç/kapat", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Bu sitede, kozmetik filtrelemeyi devre dışı bırakmak için tıklayın", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Bu sitede, kozmetik filtrelemeyi etkinleştirmek için tıklayın", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Bu site için uzak yazı tiplerini engellemeyi aç/kapat", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Bu sitede uzak yazı tiplerini engellemek için tıklayın", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Bu sitede uzak yazı tiplerini artık engellememek için tıklayın", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "JavaScript'i bu sitede devre dışı bırakmak için tıklayın", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Artık bu sitede JavaScript'i devre dışı bırakmamak için tıklayın", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Açılır pencereler", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Büyük medya ögeleri", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Kozmetik filtreleme", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Uzak yazı tipleri", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Daha fazla", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Daha az", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Genel kurallar: bu sütun tüm sitelere uygulanan kurallar içindir.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Yerel kurallar: bu sütun yalnızca geçerli siteye uygulanan kurallar içindir.\nYerel kurallar genel kuralları geçersiz kılar.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Değişikliklerinizi kalıcı kılmak için tıklayın.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Değişikliklerinizi geri almak için tıklayın.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "tümü", + "description": "" + }, + "popupImageRulePrompt": { + "message": "resimler", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "3. taraf", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "3. taraf CSS/resimler", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "satır içi betikleri", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "1. taraf betikler", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "3. taraf betikler", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "3. taraf çerçeveler", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "bağlanılan adresler", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{total}} taneden {{count}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Sürüm", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "betik", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "çerçeve", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Oluştur", + "description": "English: Create" + }, + "pickerPick": { + "message": "Seç", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Çık", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Ön İzleme", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Ağ filtreleri", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Kozmetik filtreler", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Tıkla, Ctrl-tıkla", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Ögeyi engelle…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Engellenmiş ögelerin yertutucularını gizle", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Engellenen istek sayısını simge üstünde göster", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "İpuçlarını kapat", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Uygun olduğunda içerik menüsünü kullan", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Renk körü dostu", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Görünüm", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Tema", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Özel vurgu rengi", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Bulut depolama desteğini etkinleştir", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "İleri düzey kullanıcıyım", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Kaynak ön getirimini devre dışı bırak (engellenmiş ağ istekleri için her bağlantıyı engellemek için)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Köprü denetimini devre dışı bırak", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "WebRTC'nin yerel IP adreslerini sızdırmasını engelle", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Varsayılan davranış", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Bu varsayılan davranışlar site bazında geçersiz kılınabilir", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Kozmetik filtreleri devre dışı bırak", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "{{input}} KB'tan büyük medya ögelerini engelle", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Uzak yazı tiplerini engelle", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "JavaScript'i devre dışı bırak", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "CSP raporlarını engelle", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Kuralsal isimleri ortaya çıkar", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Gelişmiş", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Yalnız teknik kullanıcılara uygun ayarlar", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "gelişmiş ayarlar", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Son geri yükleme:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Son yedekleme:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} ağ filtresi + {{cosmeticFilterCount}} kozmetik filtre:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{total}} taneden {{used}} adedi kullanıldı", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Filtre listelerini kendiliğinden güncelle", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Şimdi güncelle", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Tüm önbellekleri temizle", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Kozmetik filtreleri incele ve uygula", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Kozmetik filtreler, bir web sayfasında görsel rahatsızlık yaratan ve ağ isteği-tabanlı filtreleme motorlarınca engellenemeyen ögelerin gizlenmesini sağlar.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Genel kozmetik filtreleri yok say", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Genel kozmetik filtreler tüm web sayfalarına uygulanacak kozmetik filtrelerdir. Bu seçeneğin etkinleştirilmesi, genel kozmetik filtrelerin işlenmesi nedeniyle web sayfalarına eklenen bellek ve işlemci yükünü ortadan kaldırır.\n\nDaha az güçlü aygıtlarda bu seçeneğin etkinleştirilmesi önerilir.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Ağ etkinliğini, tüm filtre listeleri yüklenene kadar askıya al", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Engellenmiş alan adlarının listesi", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Değişiklikleri uygula", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Yerleşik", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Reklamlar", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Gizlilik", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Kötü amaçlı yazılım koruması, güvenlik.", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Sosyal medya tuşları", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Çerez bildirimleri", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Can sıkıcı ögeler", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Çok-amaçlı", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Bölgeler, diller", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Özel", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "İçe aktar…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Her satırda bir URL. Geçersiz URL'ler sessizce yok sayılacaktır.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Güncel değil.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "içeriği görüntüle", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Son güncelleme: {{ago}}.\nGüncelleştirmeye zorlamak için tıklayın.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Güncelleniyor…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Bir ağ hatası kaynağın güncellenmesini engelledi.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Güvenilmeyen kaynaklardan filtre eklemeyin.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Özel filtrelerimi etkinleştir", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Güven gerektiren özel filtrelere izin ver", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "İçe aktar ve ekle…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Dışa aktar…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-statik-filtrelerim_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Değişiklikleri uygula", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Kalıcı kurallar", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Geçici kurallar", + "description": "header" + }, + "rulesRevert": { + "message": "Geri al", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "İşle", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Düzenle", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Kaydet", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "İptal et", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Dosyadan al…", + "description": "" + }, + "rulesExport": { + "message": "Dosyaya aktar…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "ublock-dinamik-kurallarım_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Dinamik filtreleme kurallarınızın listesi.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Kural sözdizimi: kaynak hedefi türü işlemi (bütün belgeler).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sıralama:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Kural türü", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Kaynak", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Hedef", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Güvenilen site yönergeleri, uBlock Origin'in devre dışı bırakılması gerektiği web sayfalarını belirler. Her satırda bir girdi.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "İçe aktar ve ekle…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Dışa aktar…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "ublock-güvenilen-sitelerim_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Değişiklikleri uygula", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Tür", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Alan adı", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Filtre", + "description": "English: Filter" + }, + "logAll": { + "message": "Tümü", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Sekmesiz", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Geçerli sekme", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Sekme içeriğini tekrar yükle", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "DOM araştırıcısını aç/kapat", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Açılır paneli aç/kapat", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin viki: Günlükçü", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Günlükçüyü temizle", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Günlükçüyü duraklat (tüm gelen veriyi yok say)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Günlükçüyü devam ettir", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Günlük filtrelemeyi aç/kapat", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "günlükçü içeriğini filtrele", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Günlükçü filtreleme seçenekleri", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Değil", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "olaylı", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "engelli", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "izinli", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "düzenlendi", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "1. taraf", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "3. taraf", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Ayrıntılar", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Filtre", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Filtre listesi", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Kural", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Bağlam", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Kök bağlam", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Taraf", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Tür", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL kuralı", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Bağlam:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Tür:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Statik filtre", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{url}} URL adresi ile eşleşen {{br}}ve kaynağı {{origin}} olan,{{br}}eşleşen bir istisna filtresi {{importance}} {{br}}{{type}} ağ isteklerini {{action}} {{br}}.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Engelle", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "İzin ver", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "“{{type}}” türündeki", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "her türdeki", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "“{{origin}}” adresi", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "her yerden", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "olmasa da", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "olsa da", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Statik filtrenin {{filter}} bulunduğu listeler:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Statik filtre, şu anda etkin olan filtre listelerinde bulunamadı", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Aşağıdaki üç koşulu sağlamayan günlükçü girdileri kendiliğinden yok sayılacaktır:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Son {{input}} dakikadaki girdileri sakla", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Her sekme için en çok {{input}} sayfa yüklemesi sakla", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Her sekme için en çok {{input}} girdi sakla", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Dikey genişletilmiş modda, her girdi için {{input}} satır kullan", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Sütunları gizle:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Tarih", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Filtre/kural", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Bağlam", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Taraf", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Liste", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Tablo", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Yalın", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Aç", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "GitHub'da yeni rapor oluştur", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "GitHub'da benzer raporları bul", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Belgeler", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "uBlock Origin'in özelliklerinin tamamı hakkında bilgi edinmek için uBlock/wiki adresindeki belgeri okuyun.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Sorular ve destek", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Sorulara cevaplar ve diğer türlü yardım desteği /r/uBlockOrigin subreddit'inde sunulmaktadır.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filtre sorunları/web sitesi bozuk", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Belirli web siteleriyle ilgili filtre sorunlarını uBlockOrigin/uAssets sorun izleyicisine bildirin. Github hesabı gerektirir.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Önemli: uBlock Origin'le birlikte, belirli web sitelerinde filtre sorunlarına neden olabileceği için, diğer benzer amaçlı engelleyicileri kullanmaktan kaçının.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "İpuçları: Filtre listenizin güncelliğinden emin olun. Günlükçü filtre bağlantılı sorunları tanılamada temel araçtır.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Hata raporu", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "uBlock Origin'in kendisiyle ilgili sorunları uBlockOrigin/uBlock-issue sorun izleyicisine bildirin. Github hesabı gerektirir.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Hata Giderme Bilgisi", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Aşağıdaki, gönüllüler size bir sorunu çözmede yardım etmeye çalışırken, faydalı olabilecek teknik bilgidir.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Bir filtre sorunu bildirin", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Gönüllüleri yinelenen bildirimlerle meşgul etmemek için lütfen sorunun daha önce bildirilip bildirilmediğini kontrol edin.\nNot: Butona tıklamak, sayfanın kaynağının GitHub'a gönderilmesine neden olacaktır.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filtre listeleri günlük olarak güncellenir. Sorununuzun en son filtre listelerinde zaten ele alınıp alınmadığından emin olun.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Sorunlu web sayfasını yeniden yükleyerek sorunun devam ettiğini doğrulayın.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Web sayfasının adresi:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Web sayfası…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Bir girdi seçin --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Reklam veya reklam artıkları gösteriyor", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Kaplamaları veya diğer sıkıntıları var", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "uBlock Origin’i algılıyor", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Gizlilikle ilgili sorunları var", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "uBlock Origin etkinken bozuluyor", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "İstenmeyen sekme veya pencereler açıyor", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Kötü niyetli yazılıma yönlendiriyor, oltalama", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Web sayfasını uygunsuz (“NSFW”) olarak etiketle (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Gizlilik ilkesi", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Değişiklik günlüğü", + "description": "" + }, + "aboutCode": { + "message": "Kaynak kodu (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Katkıda bulunanlar", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Kaynak kodu", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Çeviriler", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filtre listeleri", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Dış bağımlılıklar (GPLv3-uyumlu):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO'nun kendi filtre listeleri ücretsiz olarak şu CDN'lerde barındırılır:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Bir filtre listesinin güncellenmesi gerektiğinde rastgele seçilen bir CDN kullanılır", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Dosyaya yedekle…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-yedeğim_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Dosyadan geri yükle…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Varsayılan ayarlara sıfırla…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Tüm ayarlarınız {{time}} tarihinde yedeklenmiş veriler kullanarak değiştirilecek ve uBlock₀ yeniden başlayacak. \n\nYedeklenmiş verileriniz kullanılarak var olan tüm ayarlarınız değiştirilsin mi?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Veri okunamadı veya geçersiz", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Tüm ayarlarınızı silinecek, ve uBlock₀ yeniden başlayacak.\n\nuBlock₀ fabrika ayarlarına sıfırlansın mı?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Ağ hatası: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Abone ol", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "bir dakika önce", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} dakika önce", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "bir saat önce", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} saat önce", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "bir gün önce", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} gün önce", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Kontrol Panelini Göster", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Günlükçüyü Göster", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "kapalı", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Sayfa engellendi", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin aşağıdaki sayfanın yüklenmesini engelledi:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Bu filtre nedeniyle:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "değişkensiz", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Bulunduğu liste:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Geri git", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Bu pencereyi kapat", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Bu site için beni bir daha uyarma", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "{{hostname}} için katı engellemeyi devre dışı bırak", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Geçici olarak", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Kalıcı olarak", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Devam et", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Engellenen sayfa sizi başka bir siteye yönlendirmek istiyor. Devam etmek isterseniz doğrudan şuraya yönlendirileceksiniz: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Sebep:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Kötü niyetli", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "İzleyici", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Güvenilmez", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Bulut depolamaya aktar", + "description": "tooltip" + }, + "cloudPull": { + "message": "Bulut depolamadan içe aktar", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Bulut depolamadan içe aktar ve şu anki ayarlarla birleştir", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Bu aygıtın adı:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Uyarı! Bu gelişmiş ayarları değiştirmenin sorumluluğu size aittir.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Gönder", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Değişiklikleri uygula", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Geri al", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "byte", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Çerçevedeki ögeyi engelle…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Filtre listesine abone ol…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Geçici olarak büyük medya ögelerine izin ver", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Kaynağı görüntüle…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Bir kısayol girin", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Kilitli kaydırmayı aç/kapat", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Panoya kopyala", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Tümünü seç", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Kozmetik filtrelemeyi aç/kapat", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript'i Aç/Kapat", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Engelleme modunu gevşet", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Kullanılan depolama: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Yüklemek için tıkla", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Hata sayısı: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Tarayıcı açılışında düzgün filtreleme yapılamadı.\nDüzgün filtreleme için sayfayı yenileyin.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Bu girdi en sonda olmalıdır", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/uk/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/uk/messages.json new file mode 100644 index 00000000..79026de1 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/uk/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Ефективний блокувальник реклами таки з’явився. Не навантажує процесор та пам'ять.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "µBlock — Панель керування", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Увага! Є незбережені зміни", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Залишитись", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Ігнорувати", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Налаштування", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Списки фільтрів", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Власні фільтри", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Мої правила", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Білий список", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Комбінації клавіш", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Журнал мережевих запитів", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Про програму", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Підтримка", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ – Переглядач ресурсів", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Розширені налаштування", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Натиснення: вимикає/умикає uBlock₀ для поточного сайту.\n\nCtrl+натиснення: вимикає uBlock₀ тільки для цієї сторінки.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Натисніть для вимкнення uBlock₀ для поточного сайту.\n\nНатисніть з Ctrl для вимкнення uBlock₀ лише для цієї сторінки.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Натисніть, щоб увімкнути uBlock₀ для цього сайту.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "запитів заблоковано", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "на цій сторінці", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} або {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "від моменту встановлення", + "description": "English: since install" + }, + "popupOr": { + "message": "або", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Заблоковано на цій сторінці", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Заблоковано з моменту встановлення", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Підключені домени", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Перейти до панелі керування", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Перейти в режим блокування елементів", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Перейти у режим вибору елементів", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Перейти до журналу запитів", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Повідомити про помилку на цьому вебсайті", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Увімкнути блокування всіх виринаючих вікон цього сайту", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Натисніть, щоб заблокувати всі спливні вікна на цьому сайті", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Натисніть для скасування блокування всіх спливних вікон на цьому сайті", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Увімк/Вимк блокування великих медіа елементів на цьому сайті", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Натисніть для блокування великих медіаелементів на цьому сайті", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Натисніть для скасування блокування великих медіаелементів на цьому сайті", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Переключити косметичний фільтр для цього сайту", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Натисніть для вимкнення косметичних фільтрів на цьому сайті", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Натисніть для увімкнення косметичних фільтрів на цьому сайті", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Перемкнути блокування віддалених шрифтів для цього сайту", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Натисніть для блокування віддалених шрифтів на цьому сайті", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Натисніть для скасування блокування віддалених шрифтів на цьому сайті", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Натисніть, щоб повністю вимкнути JavaScript на цьому сайті", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Натисніть, щоб скасувати вимкнення JavaScript на цьому сайті", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Спливні вікна", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Великі медіаелементи", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Косметичне фільтрування", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Віддалені шрифти", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavasScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Більше", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Менше", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Глобальні правила: цей стовпчик для правил, що застосовуються для всіх сайтів.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Локальні правила: цей стовпчик для правил, що застосовуються лише цього сайту.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Натисніть, щоб зробити ваші зміни постійними.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Натисніть, щоб відкинути ваші зміни.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "всі", + "description": "" + }, + "popupImageRulePrompt": { + "message": "зображення", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "сторонні", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "Сторонні CSS/зображення", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "вбудовані сценарії", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "Основні скрипти", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "Сторонні скрипти", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "Сторонні фрейми", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "доменів під’єднано", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} з {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Версія", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "скрипт", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "рамка", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Створити", + "description": "English: Create" + }, + "pickerPick": { + "message": "Вибрати", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Вийти", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Попередній перегляд", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Мережні фільтри", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Косметичні фільтри", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Клік, Ctrl-клік", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Заблокувати елемент", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Ховати заповнювачі заблокованих елементів", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Показувати кількість заблокованих запитів на піктограмі", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Вимкнути підказки", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Використовувати контекстне меню там, де це можливо", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Підтримка дальтонізму", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Зовнішній вигляд", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Тема", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Індивідуальний колір акценту", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Увімкнути підтримку хмарного сховища", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Я досвідчений користувач", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Вимкнути передзавантаження (щоб унеможливити будь-які з’єднання для заблокованих мережевих запитів)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Вимкнути перевірку гіперпосилань", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Унеможливити витік локальної IP-адреси через WebRTC", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Типові налаштування", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Усталені налаштування можуть бути перевизначеними для кожного сайту окремо", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Вимкнути косметичні фільтри", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Блокувати медіа елементи розміром від {{input:number}} кБ", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Блокувати сторонні шрифти", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Вимкнути JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Блокувати CSP-звіти", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Показати CNAME назви", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Додатково", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Функції, що потрібні лише технічним користувачам", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "розширені налаштування", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Востаннє відновлено:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Остання резервна копія:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} мережевих фільтрів + {{cosmeticFilterCount}} косметичних фільтрів з:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "використовується {{used}} з {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Автоматично оновити списки фільтрів.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Оновити зараз", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Очистити всі кеші", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Розбір та застосування фільтрів приховування елементів Adblock+.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Косметичні фільтри служать для приховування елементів на вебсторінці, які вважаються візуально неприємними та не можуть бути заблоковані мережевими механізмами фільтрації на основі запитів.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ігнорувати загальні косметичні фільтри", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Загальні косметичні фільтри — це ті косметичні фільтри, які призначені для застосування на всіх вебсайтах. Увімкнення цієї опції усуне навантаження на пам'ять і процесор, що додається до вебсторінок у результаті обробки загальних косметичних фільтрів.\n\nРадимо вмикати цю опцію на менш потужних пристроях.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Призупинити мережеві операції доки всі списки фільтрів не завантажаться", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Перелік заблокованих хостів", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Застосувати зміни", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Вбудовані", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Реклама", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Конфіденційність", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Домени шкідливих програм", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Віджети соціальних мереж", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Повідомлення про файли cookie", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Надокучливості", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Універсальні", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Регіони, мови", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Користувацькі", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Імпорт...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Одне посилання на рядок. Невірні посилання будуть проігноровані без попередження.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Застарілий.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "переглянути вміст", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Останнє оновлення: {{ago}}\nКлацніть для примусового оновлення.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Оновлюється…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Оновлення не вдалося, у зв'язку з помилкою мережі.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Не додавати фільтри з невідомих джерел.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Увімкнути власні фільтри", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Дозволити власні фільтри, які потребують довіри", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Імпортувати та додати", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Експортувати", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "ublock-custom-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Застосувати зміни", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Постійні правила", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Тимчасові правила", + "description": "header" + }, + "rulesRevert": { + "message": "Скасувати зміни", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Затвердити", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Редагувати", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Зберегти", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Відкинути", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Імпорт з файлу…", + "description": "" + }, + "rulesExport": { + "message": "Експорт до файлу...", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Список правил динамічного фільтрування.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Синтаксис правил: джерело призначення тип дія (повна документація).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Сортування:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Тип правила", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Джерело", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Призначення", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Ваш список адрес сайтів, для яких µBlock буде неактивним. Додайте по одному запису на рядок. Невірні адреси будуть проігноровані без попереджень та закоментовані.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Імпортувати та додати", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Експортувати", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-whitelist_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Застосувати зміни", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Тип", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Домен", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "Адреса", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Фільтр", + "description": "English: Filter" + }, + "logAll": { + "message": "Все", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "За лаштунками", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Поточна вкладка", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Перезавантажити вміст вкладки", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Перемкнути інспектор DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Перемкнути панель, що спливає", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: журнал", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Очистити журнал", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Поставити журнал на паузу (ігнорувати всі вхідні дані)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Увімкнути журнал", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Перемкнути фільтрування журналу", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "фільтр журналу записів", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Опції фільтрування журналу", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Ні", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "насичений", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "заблокований", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "дозволений", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "модифікований", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "основний", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "сторонній", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Деталі", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Фільтр", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Список фільтрів", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Правило", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Контекст", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Кореневий контекст", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Членство", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Тип", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL-адреса", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL правило", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Контекст:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Тип:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Статичний фільтр", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} мережеві запити {{type}}, {{br}}посилання яких збігаються з {{url}} {{br}}та які {{origin}},{{br}}{{importance}} є відповідний фільтр-виняток.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Блокувати", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Дозволити", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "типу „{{type}}“", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "будь-якого типу", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "походять із „{{origin}}“", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "мають будь-яке походження", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "крім випадків, коли", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "навіть якщо", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Статичний фільтр {{filter}} знайден у:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Статичний фільтр не знайдений в жодному списку увімкнених у цей момент фільтрів", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Записи журналу, що не відповідають всім трьом нижченаведеним умовам, будуть автоматично відхилені:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Зберегти записи за останні {{input}} хв", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Зберегти щонайбільше {{input}} завантажень сторінки у вкладці", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Зберегти щонайбільше {{input}} елементів у вкладці", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Використовувати {{input}} рядків на елемент у вертикальному режимі", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Приховати стовпці:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} час", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} фільтр/правило", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} контекст", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} членство", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Список", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Таблиця", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Простий", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Відкрити", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Створити новий звіт", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Знайти подібні звіти", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Документація", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Прочитайте документацію на uBlock/вікі, щоб дізнатися про всі функції uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Запитання та підтримка", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Відповіді на запитання та інші види підтримки довідки надаються на /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Проблеми з фільтрами/сайт не працює", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Повідомити про проблеми фільтра на певних вебсайтах до відстежувача проблем uBlockOrigin/uAssets. Потрібен обліковий запис GitHub.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Важливо: Уникайте використання інших блокувальників аналогічного призначення разом із uBlock Origin, оскільки це може спричинити проблеми з фільтрами на певних вебсайтах.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Поради: Переконайтеся, що списки фільтрів оновлено. Журнал — основний засіб визначення проблем пов'язаних з фільтром.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Звіт про ваду", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Повідомити про проблеми самого uBlock Origin відстежувач проблем uBlockOrigin/uBlock-issue. Потрібен обліковий запис GitHub.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Інформація про усунення несправностей", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Внизу наведено технічні дані, які можуть бути корисними, коли волонтери намагатимуться допомогти вам розв'язати проблему.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Повідомити про ваду фільтра", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Щоб не обтяжувати волонтерів повторюваними звітами, переконайтеся, що про проблему ще не повідомлялося.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Списки фільтрів оновлюються щоденно. Переконайтесь, що ваша проблема все ще не виправлена в найсвіжішому списку фільтрів", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Переконайтесь, що проблема все ще присутня після перезавантаження проблемної сторінки", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Адреса вебсторінки:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Вебсторінка…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Указати проблему --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "З'являється реклама або залишки оголошень", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Накладання або інші прикрощі", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Виявляє uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Пов'язані з приватністю проблеми", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Щось не працює, якщо увімкнено uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Відкриває небажані вкладки або вікна", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Веде до шкідливого ПЗ, фішингу", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Позначити цю сторінку «NSFW» («Небезпечно для роботи»)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Політика конфіденційності", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Журнал змін", + "description": "" + }, + "aboutCode": { + "message": "Джерельний код (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Учасники", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Вихідний код", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Переклади", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Списки фільтрів", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Зовнішні залежності (сумісні з GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Списки власних фільтрів uBO вільно розміщуються на таких CDN:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "Випадково вибраний CDN застосовуватиметься, коли список фільтрів потрібно оновити", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Зберегти резервну копію у файл...", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Відновити з файлу…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Відновити початкові налаштування...", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Всі ваші налаштування будуть перезаписані з резервної копії від {{time}} та µBlock буде перезапущено.\n\nПерезаписати всі налаштування використовуючи резервну копію?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Дані помилкові або не можуть бути прочитані", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Ваші налаштування буде видалено та µBlock буде перезапущено.\n\nПовернути µBlock до початкових налаштувань?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Помилка мережі: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Підписатись", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "хвилину тому", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} хвилин(и) тому", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "годину тому", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} годин(и) тому", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "день тому", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} дні(в) тому", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Показати панель керування", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Показати журнал мережевих запитів", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "Відключений", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Сторінка заблокована", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock запобіг завантаженню наступної сторінки:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Через наступний фільтр", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "без параметрів", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Знайдено в:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Повернутись назад", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Зачинити це вікно", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Не нагадуйте мені про цей сайт", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Вимкнути повне блокування для {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Тимчасово", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Завжди", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Продовжити", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Заблокована сторінка хоче переадресувати на інший сайт. Якщо ви вирішите продовжити, ви перейдете безпосередньо на: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Причина:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Зловмисні", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Трекер", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Сумнівний вміст", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Експортувати до хмарного сховища", + "description": "tooltip" + }, + "cloudPull": { + "message": "Імпортувати із хмарного сховища", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Імпортувати з хмари та об'єднати з чинними налаштуваннями", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Назва цього пристрою:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Увага! Змінюйте ці розширені налаштування на власний ризик.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Надіслати", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Застосувати зміни", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Скасувати зміни", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "байтів", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Заблокувати елемент у фреймі", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Підписатися на список фільтрів…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Тимчасово дозволити великі медіа елементи", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Перегляд джерела…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Уведіть комбінацію", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Перемкнути замкнуту прокрутку", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Скопіювати до буферу обміну", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Вибрати все", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Увімкнути/вимкнути косметичні фільтри", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Перемкнути JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Послаблений режим блокування", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Використано: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "КБ", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "МБ", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "ГБ", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Натисніть, щоб завантажити", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Помилки: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Неможливо правильно фільтрувати під час запуску браузера.\nПерезапустіть сторінку для гарантії правильного фільтрування", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Цей запис має бути останнім", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/ur/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/ur/messages.json new file mode 100644 index 00000000..06bd9565 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/ur/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "آخر کار، ایک مؤثر اشتہار کو روکنے والا، یہ کم cpu اور میموری لیتا ہے.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — کنٹرول پینل", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "خبردار! آپ نے محفوظ نہیں کیا", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "یہیں رہیں", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "نظر انداز کریں", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "ترتیبات", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "فلٹر کی فہرستیں", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "میرے فلٹر", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "میرے اصول", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "اِن کی اجازت ہے", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "شارٹ کٹ", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — ریکارڈ", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "متعلق", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "سپورٹ", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — اثاثے", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "اعلیٰ ترتیبات", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "کلک: uBlock اس سائٹ کے لیے فعال/ غیرفعال کریں.\n\nکنٹرول + کلک: uBlock صرف اس صفحہ پر غیرفعال کریں.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "کلک کر کے uBlock اس سائٹ کے لیے غیرفعال کریں.\n\nکنٹرول + کلک: uBlock صرف اس صفحے کے لیے غیرفعال کریں.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "کلک کر کے uBlock اس سائٹ کے لیے فعال کریں.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "درخواستیں بلاک ہیں", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "اس صفحے پر", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} یا {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "تنصیب سے لے کر اب تک", + "description": "English: since install" + }, + "popupOr": { + "message": "یا", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "اس صفحے سےختم کر دیا گیا ہے", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Blocked since install", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Domains connected", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "کنٹرول پینل کھولیں", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "عناصر تباہ کرنے کا موڈ", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "عناصر چننے کا موڈ", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "ریکارڈ کار کھولیں", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Report an issue on this website", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "اس سائٹ پر آنے والے تمام پاپ اپ کو روکیں یا آنے دیں", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "کلِک کر کے اس سائٹ کے تمام پاپ اپ کو روک کریں", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "کلِک کر کے اس سائٹ کے تمام پاپ اپ کی اجازت دیں", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "اس سائٹ پر بڑے میڈیا والی اشیاء کو روک دیں", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "کلک کر کے اس سائٹ پر بڑے میڈیا والی اشیاء کو روک دیں", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "کلک کر کے اس سائٹ پر بڑے میڈیا والی اشیاء کی اجازت د‌یں", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "اس سائٹ کے لئے کاسمیٹک فلٹر کو فعال یا غیر فعال کریں", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "اس سائٹ کے لئے کاسمیٹک فلٹر کو غیر فعال کریں", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "اس سائٹ کے لئے کاسمیٹک فلٹر کو فعال کریں", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "اس سائٹ پر آنے والے تمام remote فانٹ کو روکیں یا آنے دیں", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "کلِک کر کے اس سائٹ کے تمام remote فانٹ کو روک کریں", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "کلِک کر کے اس سائٹ کے تمام remote فانٹ کی اجازت دیں", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "کلک کر کے اس سائٹ پہ جاواسِکرپٹ غیرفعال کریں", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "کلک کر کے اس سائٹ پر جاوا سکرپٹ چلنے دیں", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Pop-up windows", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Large media elements", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Cosmetic filtering", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Remote fonts", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "مزید", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "کم", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "گلوبل اصول: اس کالم میں وہ اصول ہیں جو تمام ویب سائٹوں پر لاگو ہوں گے.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "مقامی اصول: اس کالم میں وہ اصول ہیں جو صرف موجودہ سائٹ پر لاگو ہوں گے.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "اپنی تبدیلیوں کو مستقل کرنے کے لیے کلک کریں.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "اپنی تبدیلیوں کو کالعدم کرنے کے لیے کلک کریں.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "تمام", + "description": "" + }, + "popupImageRulePrompt": { + "message": "تصاویر", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "فریق ثالث", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "فریق ثالث کی Css/ تصاویر", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "ان لائن سکرپٹس", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "فریق اول کی سکرپٹس", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "فریق ثالث کی سکرپٹس", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "فریق ثالث کے فریم", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "domains connected", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} out of {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Version", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "script", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "frame", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "بنائیں", + "description": "English: Create" + }, + "pickerPick": { + "message": "چُنیں", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "بند کریں", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "دیکھیں", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "نیٹورک کے فلٹر", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "کاسمیٹک فلٹر", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "کلک، کنٹرول + کلک", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "عنصر کو روکیں", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "روکے ہوئے عناصر جس جگہ پے تھے اس جگہ کو غائب کر دیں", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "آئکن پر روکی ہوئی درخواستوں کی تعداد دکھائیں", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "مفید معلومات والے پیغامات مت دکھائیں", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Make use of context menu where appropriate", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Color-blind friendly", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Appearance", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Theme", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Custom accent color", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Enable cloud storage support", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "I am an advanced user", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Disable pre-fetching (to prevent any connection for blocked network requests)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Disable hyperlink auditing", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Prevent WebRTC from leaking local IP addresses", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Default behavior", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "These default behaviors can be overridden on a per-site basis", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Disable cosmetic filtering", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Block media elements larger than {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Block remote fonts", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "جاوا سکرپٹ بند کریں", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Block CSP reports", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Uncloak canonical names", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Advanced", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Features suitable only for technical users", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "اعلیٰ ترتیبات", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "آخری ریسٹور:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "آخری بیک اپ:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} network filters + {{cosmeticFilterCount}} cosmetic filters from:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} used out of {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Auto-update filter lists", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "ابھی اپڈیٹ کریں", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Purge all caches", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Parse and enforce cosmetic filters", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Cosmetic filters serve to hide elements in a web page which are deemed to be a visual nuisance, and which can't be blocked by the network request-based filtering engines.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Ignore generic cosmetic filters", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Generic cosmetic filters are those cosmetic filters which are meant to apply on all web sites. Enabling this option will eliminate the memory and CPU overhead added to web pages as a result of handling generic cosmetic filters.\n\nIt is recommended to enable this option on less powerful devices.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Suspend network activity until all filter lists are loaded", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Lists of blocked hosts", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Built-in", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "اشتہارات", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "رازداری", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Malware protection, security", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Social widgets", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie notices", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Annoyances", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Multipurpose", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "علاقے، زبانیں", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "مخصوص", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "درآمد...", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "One URL per line. Invalid URLs will be silently ignored.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Out of date.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "view content", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Last update: {{ago}}.\nClick to force an update.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "اپڈیٹ ہو رہا ہے", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "A network error prevented the resource from being updated.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Do not add filters from untrusted sources.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Enable my custom filters", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Allow custom filters requiring trust", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Import and append…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "برآمد کریں", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Apply changes", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "مستقل اصول", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "عارضی اصول", + "description": "header" + }, + "rulesRevert": { + "message": "Revert", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Commit", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "تدوین کریں", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "محفوظ کریں", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "مسترد کریں", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "فائل سے درآمد...", + "description": "" + }, + "rulesExport": { + "message": "فائل میں برآمد کریں", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "List of your dynamic filtering rules.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Rule syntax: source destination type action (full documentation).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sort:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Rule type", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Source", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Destination", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "The trusted site directives dictate on which web pages uBlock Origin should be disabled. One entry per line.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Import and append…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "برآمد کریں", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "تبدیلیاں لاگو کریں", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "نوعیت", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "ڈومین", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "پته", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "فلٹر", + "description": "English: Filter" + }, + "logAll": { + "message": "تمام", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Tabless", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "موجودہ ٹیب", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Reload the tab content", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Toggle the DOM inspector", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Toggle the popup panel", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: The logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Clear logger", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Pause logger (discard all incoming data)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Unpause logger", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Toggle logger filtering", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "filter logger content", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Logger filtering options", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "نہیں", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "روکے ہوئے", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "اجازت والے", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "modified", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "فریق اول", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "فریق ثالث", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "تفصیلات", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "فلٹر", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "فلٹر کی فہرست", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "اصول", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "سیاق", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Root context", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Partyness", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "نوعیت", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "پته", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL rule", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "سیاق:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "نوعیت:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Static filter", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} network requests of {{type}} {{br}}which URL address matches {{url}} {{br}}and which originates {{origin}},{{br}}{{importance}} there is a matching exception filter.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "روکیں", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "اجازت دیں", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "نوعیت \"{{type}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "کسی بھی نوعیت", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "\"{{origin}}\" سے", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "کہیں سے بھی", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "except when", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "even if", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Static filter {{filter}} found in:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Static filter could not be found in any of the currently enabled filter lists", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Logger entries which do not fulfill all three conditions below will be automatically discarded:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Preserve entries from the last {{input}} minutes", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Preserve at most {{input}} page loads per tab", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Preserve at most {{input}} entries per tab", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Use {{input}} lines per entry in vertically expanded mode", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "چھپائیں کالم:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} وقت", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} فلٹر / اصول", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Context", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Partyness", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "فہرست", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "ٹیبل", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Plain", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Open", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Create new report on GitHub", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Find similar reports on GitHub", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Documentation", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Read the documentation at uBlock/wiki to learn about all of uBlock Origin's features.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Questions and support", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Answers to questions and other kinds of help support is provided on the subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Filter issues/website is broken", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Report filter issues with specific websites to the uBlockOrigin/uAssets issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Important: Avoid using other similarly-purposed blockers along with uBlock Origin, as this may cause filter issues on specific websites.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Tips: Be sure your filter lists are up to date. The logger is the primary tool to diagnose filter-related issues.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Bug report", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Report issues with uBlock Origin itself to the uBlockOrigin/uBlock-issue issue tracker. Requires a GitHub account.", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Troubleshooting Information", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Below is technical information that might be useful when volunteers are trying to help you solve a problem.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Report a filter issue", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "To avoid burdening volunteers with duplicate reports, please verify that the issue has not already been reported. Note: clicking the button will cause the page's origin to be sent to GitHub.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Filter lists are updated daily. Be sure your issue has not already been addressed in the most recent filter lists.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Verify that the issue still exists after reloading the problematic web page.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Address of the web page:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "The web page…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Pick an entry --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Shows ads or ad leftovers", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Has overlays or other nuisances", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Detects uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Has privacy-related issues", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Malfunctions when uBlock Origin is enabled", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Opens unwanted tabs or windows", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Leads to badware, phishing", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Label the web page as “NSFW” (“Not Safe For Work”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Privacy policy", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Changelog", + "description": "" + }, + "aboutCode": { + "message": "Source code (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Contributors", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Source code", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Translations", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Filter lists", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "External dependencies (GPLv3-compatible):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO's own filter lists are freely hosted on the following CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "A randomly picked CDN is used when a filter list needs to be updated.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Back up to file…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Restore from file…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Reset to default settings…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "All your settings will be overwritten using data backed up on {{time}}, and uBlock₀ will restart.\n\nOverwrite all existing settings using backed up data?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "The data could not be read or is invalid", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "All your settings will be removed, and uBlock₀ will restart.\n\nReset uBlock₀ to factory settings?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "نیٹورک مسئلہ: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Subscribe", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "ایک منٹ پہلے", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} منٹ پہلے", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "ایک گھنٹہ پہلے", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} گھنٹے پہلے", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "ایک دن پہلے", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} دن پہلے", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "کنٹرول پینل دکھائیں", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Show Logger", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "بند", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Page blocked", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin has prevented the following page from loading:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "This happened because of the following filter:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "without parameters", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "The filter has been found in:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "واپس جائیں", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "اس ونڈو کو بند کریں", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Don't warn me again about this site", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Disable strict blocking for {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "عارضی طور پر", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "مستقل طور پر", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Proceed", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "The blocked page wants to redirect to another site. If you choose to proceed, you will navigate directly to: {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Reason:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Malicious", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Tracker", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Disreputable", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "کلاؤڈ سٹوریج میں برآمد کریں", + "description": "tooltip" + }, + "cloudPull": { + "message": "کلاؤڈ سٹوریج میں درآمد کریں", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "کلاؤڈ سٹوریج سے درآمد کر کے موجودہ ترتیبات کے ساتھ ضم کریں", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "اس آلے کا نام:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Warning! Change these advanced settings at your own risk.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "جمع کرائیں", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "تبدیلیاں لاگو کریں", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "کالعدم کریں", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "bytes", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Block element in frame…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Subscribe to filter list…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Temporarily allow large media elements", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "View source code…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Type a shortcut", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Toggle locked scrolling", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "کلپ بورڈ پر نقل کریں", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Select all", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Toggle cosmetic filtering", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Toggle JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Relax blocking mode", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Storage used: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Click to load", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Errors: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Could not filter properly at browser launch. Reload the page to ensure proper filtering.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "This entry must be the last one", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/vi/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/vi/messages.json new file mode 100644 index 00000000..9bad3efa --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/vi/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "Cuối cùng, đã có một công cụ chặn quảng cáo hiệu quả, tiêu tốn ít CPU và bộ nhớ.", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — Bảng điều khiển", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "Cảnh báo! Bạn có các thay đổi chưa được lưu", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "Ở lại", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "Bỏ qua", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "Cài đặt", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "Danh sách bộ lọc", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "Bộ lọc của tôi", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "Quy tắc của tôi", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "Trang tin cậy", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "Phím tắt", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — Nhật ký các yêu cầu", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "Giới thiệu", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "Hỗ trợ", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ - Trình xem nội dung", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "Cài đặt nâng cao", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "Nhấp chuột: vô hiệu/kích hoạt uBlock₀ cho trang này.\nCtrl + nhấp chuột: chỉ vô hiệu uBlock₀ trên trang này.", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "Nhấp chuột để vô hiệu uBlock₀ cho trang này. \n\nCtrl + nhấp chuột để tắt uBlock₀ chỉ trên trang này.", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "Nhấp để bật uBlock₀ trên trang này.", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "yêu cầu đã chặn", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "trên trang này", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} hoặc {{percent}}%", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "từ lúc cài đặt", + "description": "English: since install" + }, + "popupOr": { + "message": "hoặc", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "Đã chặn trên trang này", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "Đã bị chặn kể từ khi cài đặt", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "Tên miền đã kết nối", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "Mở bảng điều khiển", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "Chuyển sang chế độ chặn phần tử tạm thời", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "Chuyển sang chế độ chọn phần tử", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "Mở nhật ký", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "Báo cáo lỗi trên trang này", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "Bật/tắt chặn popup của trang này", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "Nhấp để chặn tất cả cửa sổ bật lên trên trang này", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "Nhấp để bỏ chặn tất cả cửa sổ bật lên trên trang này", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "Bật tắt chặn yếu tố đa phương tiện lớn trên trang này", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "Nhấp để chặn các thành phần đa phương tiện lớn trên trang này", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "Bấm để ngừng chặn các phần tử đa phương tiện kích thước lớn trên trang này", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "Bật/tắt bộ lọc phần tử trên trang này", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "Nhấn để tắt bộ lọc phần tử ẩn trên trang này", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "Nhấn để bật bộ lọc phần tử ẩn trên trang này", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "Bật tắt chặn font từ xa trên trang này", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "Nhấp để chặn phông từ xa trên trang này", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "Bấm để ngừng chặn phông từ xa trên trang này", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "Nhấp để vô hiệu hóa JavaScript trên trang này", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "Nhấp để ngừng vô hiệu hóa JavaScript trên trang này", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "Cửa sổ bật lên", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "Phần tử đa phương tiện kích thước lớn", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "Lọc phần tử hiển thị", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "Phông từ xa", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "Mở rộng", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "Ít hơn", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "Quy tắc chung: cột này dành cho quy tắc áp dụng cho mọi trang.", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "Quy tắc nội bộ: cột này dành cho quy tắc chỉ áp dụng cho trang hiện tại.", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "Bấm để thay đổi vĩnh viễn.", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "Bấm để hoàn tác thay đổi.", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "tất cả", + "description": "" + }, + "popupImageRulePrompt": { + "message": "hình ảnh", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "bên thứ ba", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "CSS/Hình ảnh từ bên thứ ba", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "script cùng dòng", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "script bên thứ nhất", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "script bên thứ ba", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "khung bên thứ ba", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "tên miền đã kết nối", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} trên tổng {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "Phiên bản", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "tập lệnh", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "khung", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "Tạo", + "description": "English: Create" + }, + "pickerPick": { + "message": "Chọn", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "Thoát", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "Xem trước", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "Các bộ lọc mạng", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "Bộ lọc phần tử ẩn", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "Nhấp chuột, Ctrl-nhấp chuột", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "Chặn phần tử…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "Ẩn các phần giữ chỗ của những phần tử bị chặn", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "Hiển thị số lượng yêu cầu bị chặn trên biểu tượng", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "Vô hiệu mách nước", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "Dùng menu ngữ cảnh nơi thích hợp", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "Thân thiện với người mù màu", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "Diện mạo", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "Giao diện", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "Tùy chọn màu nền", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "Kích hoạt hỗ trợ lưu trữ trực tuyến", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "Tôi là một người dùng có kinh nghiệm (Yêu cầu đọc qua)", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "Vô hiệu tải trước (để chặn bất kỳ kết nối với những yêu cầu mạng đã chặn)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "Vô hiệu giám sát siêu liên kết", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "Ngặn WebRTC làm lộ địa chỉ IP nội bộ", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "Hành vi mặc định", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "Những hành vi này có thể thay thế tiêu chuẩn từng trang", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "Vô hiệu lọc phần tử ẩn", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "Chặn phần tử đa phương tiện kich thước lớn hơn {{input}} KB", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "Chặn font từ xa", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "Vô hiệu hóa JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "Chặn các báo cáo CSP", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "Chặn tên miền theo dõi mạo danh từ bên thứ ba (CNAME Trackers)", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "Nâng cao", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "Các tính năng chỉ phù hợp với kỹ thuật viên", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "cài đặt nâng cao", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "Lần phục hồi trước:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "Lần sao lưu trước:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "{{netFilterCount}} bộ lọc mạng + {{cosmeticFilterCount}} bộ lọc phần tử ẩn từ:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "Đã dùng {{used}} trên {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "Các danh sách bộ lọc tự cập nhật.", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "Cập nhật ngay", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "Dọn tất cả bộ nhớ đệm", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "Phân tích và thi hành bộ lọc phần tử ẩn.", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "Bộ lọc phần tử dùng để ẩn các yếu tố trong một trang web mà gây khó chịu cho người dùng và những yếu tố không thể chặn bằng cách dùng bộ lọc mạng.", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "Bỏ qua bộ lọc phần tử ẩn chung", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "Bộ lọc phần tử chung là những bộ lọc phần tử được áp dụng cho cho mọi trang web. Kích hoạt tùy chọn này sẽ giảm bớt sức nặng lên cpu và bộ nhớ do không còn phải xử lí các bộ lọc phần tử chung.\n\nTùy chọn này được khuyến nghị kích hoạt trên thiết bị cấu hình thấp.", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "Ngắt kết nối mạng cho đến khi tất cả các bộ lọc đã được tải", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "Danh sách những máy chủ bị chặn", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "Áp dụng các thay đổi", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "Dựng sẵn", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "Quảng cáo", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "Riêng tư", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "Chặn mã độc, bảo mật", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "Tiện ích xã hội", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Các thông báo cookie", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "Phiền toái", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "Đa chức năng", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "Khu vực, ngôn ngữ", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "Tuỳ chỉnh", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "Nhập…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "Một URL mỗi dòng. URL không hợp lệ sẽ âm thầm bị bỏ qua.", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "Đã cũ.", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "xem nội dung", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "Cập nhật lần cuối: {{ago}}.\nBấm để buộc cập nhật.", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "Đang cập nhật…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "Lỗi mạng ngăn tài nguyên được cập nhật.", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "Không thêm các bộ lọc từ các nguồn không đáng tin cậy.", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "Bật bộ lọc tùy chỉnh của tôi", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "Cho phép các bộ lọc tùy chỉnh yêu cầu sự tin cậy", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "Nhập và thêm vào…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "Xuất…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "Áp dụng các thay đổi", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "Quy tắc vĩnh viễn", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "Quy tắc tạm thời", + "description": "header" + }, + "rulesRevert": { + "message": "Phục hồi", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "Xác nhận", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "Chỉnh sửa", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "Lưu", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "Huỷ", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "Nhập từ tập tin…", + "description": "" + }, + "rulesExport": { + "message": "Xuất ra tập tin…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "Danh sách quy tắc lọc chủ động.", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "Quy tắc cú pháp: nguồn đích loại hành động (tài liệu đầy đủ).", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "Sắp xếp:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "Loại quy tắc", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "Nguồn", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "Đích", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "Các đường dẫn trang web đáng tin cậy cố định mà uBlock Origin sẽ bị vô hiệu hóa trên trang đó. Một mục nhập cho mỗi dòng.", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "Nhập và thêm vào…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "Xuất…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "Áp dụng các thay đổi", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "Loại", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "Tên miền", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "Bộ lọc", + "description": "English: Filter" + }, + "logAll": { + "message": "Tất cả", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "Không thuộc thẻ", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "Thẻ hiện tại", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "Tải lại nội dung thẻ", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "Chuyển đổi trình kiểm tra DOM", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "Đóng/mở hộp thoại popup", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki: Các logger", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "Xoá nhật ký", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "Tạm dừng nhật ký (loại bỏ tất cả dữ liệu đang nhập vào)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "Tiếp tục tác vụ nhật ký", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "Đóng/mở lọc tác vụ nhật ký", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "lọc mục ghi nhận", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "Lựa chọn lọc tác vụ nhật ký", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "Không phải", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "eventful", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "bị chặn", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "được phép", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "đã sửa đổi", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "Bên thứ nhất", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "Bên thứ ba", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "Chi tiết", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "Bộ lọc", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "Danh sách bộ lọc", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "Quy tắc", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "Ngữ cảnh", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "Ngữ cảnh gốc", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "Phân loại nguồn", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "Kiểu", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "Quy tắc URL", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "Ngữ cảnh:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "Loại:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "Bộ lọc tĩnh", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "{{action}} yêu cầu mạng của {{type}} {{br}}có địa chỉ URL phù hợp {{url}} {{br}}và từ nguồn {{origin}},{{br}}{{importance}} có một bộ lọc loại trừ phù hợp.", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "Chặn", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "Cho phép", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "loại “{{type}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "mọi loại", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "từ “{{origin}}”", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "từ mọi nơi", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "loại trừ khi", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "loại trừ nếu", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "Đã phát hiện bộ lọc tĩnh {{filter}} trong:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "Không tìm thấy bộ lọc tĩnh trong bất kỳ danh sách bộ lọc hiện đang được bật", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "Các mục Logger mà không đáp ứng tất cả ba điều kiện dưới đây sẽ được tự động loại bỏ:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "Giữ lại các mục từ {{input}} phút trước", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "Giữ lại nhiều nhất {{input}} trang được tải trên mỗi thẻ", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "Giữ lại tối đa {{input}} mục trên mỗi thẻ", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "Sử dụng {{input}} dòng trên mỗi mục trong chế độ mở rộng theo chiều dọc", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "Ẩn cột:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} Thời gian", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} Bộ lọc/quy tắc", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} Ngữ cảnh", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} Phân loại nguồn", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "Danh sách", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "Bảng", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "Không có đánh dấu", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Đánh dấu", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "Mở", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "Tạo báo cáo mới trên Github", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "Tìm các báo cáo tương tự trên Github", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "Tài liệu hướng dẫn", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "Đọc tài liệu tại uBlock/wiki để tìm hiểu về các tính năng của uBlock Origin.", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "Hỗ trợ và giải đáp thắc mắc", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "Bạn có thể tìm thấy câu trả lời cho các thắc mắc của mình hoặc sự trợ giúp cho các vấn đề khác tại subreddit /r/uBlockOrigin.", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "Lỗi bộ lọc/ Trang web lỗi", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "Báo cáo lỗi bộ lọc với tên miền cụ thể cho uBlockOrigin/uAssets issue tracker. Cần tài khoản GitHub", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "Lưu ý quan trọng: Tránh sử dụng các bộ chặn có chức năng tương tự song song uBlock Origin vì có thể gây ra lỗi bộ lọc trên nhiều trang web.", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "Mẹo: Hãy đảm bảo các bộ lọc của bạn được cập nhật đầy đủ. Nhật ký là một công cụ hữu hiệu để chẩn đoán các lỗi bộ lọc.", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "Báo cáo lỗi", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "Báo cáo lỗi cho uBlock Origin cho uBlockOrigin/uBlock-issue issue tracker. Cần tài khoản GitHub", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "Thông tin chẩn đoán lỗi", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "Đây là các thông tin kỹ thuật có thể giúp ích khi khắc phục lỗi.", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "Báo cáo lỗi bộ lọc cụ thể", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "Để tránh tạo thêm gánh nặng cho các tình nguyện viên, hãy chắc chắn rằng chưa từng có vấn đề tương tự được báo cáo.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "Danh sách bộ lọc được cập nhật hàng ngày. Hãy đảm bảo vấn đề của bạn chưa được giải quyết trong danh sách bộ lọc gần đây nhất.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "Xác nhận rằng sự cố vẫn tồn tại kể cả sau khi đã tải lại trong web có vấn đề.", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "Địa chỉ trang web:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "Trang web…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- Chọn một lỗi --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "Vẫn hiện quảng cáo hoặc vùng chứa quảng cáo", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "Xuất hiện lớp phủ hoặc các phần tử phiền toái khác", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "Phát hiện uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "Có các cấn đề về quyền riêng tư", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "Trục trặc khi bật uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "Xuất hiện các tab và cửa sổ ngoài mong muốn", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "Dẫn đến phần mềm độc hại, lừa đảo", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "Đánh dấu \"NFSW\" - Not Safe For Work cho trang web.( Tìm hiểu về \"Not Safe For Work\")", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "Chính sách bảo mật", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "Nhật ký thay đổi", + "description": "" + }, + "aboutCode": { + "message": "Mã nguồn (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "Những người đóng góp", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "Mã nguồn", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "Bản dịch", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "Danh sách bộ lọc", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "Các phụ thuộc bên ngoài (tương thích GPLv3):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "Danh sách bộ lọc riêng của uBO được lưu trữ miễn phí trên các trang CDNs:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "CDN được chọn ngẫu nhiên khi cần cập nhật danh sách bộ lọc.", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "Sao lưu vào tệp…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "Khôi phục từ tệp tin…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "Đặt lại cài đặt mặc định…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "Các thiết lập của bạn sẽ bị ghi đè bởi dữ liệu đã lưu vào lúc {{time}}, và uBlock₀ sẽ khởi động lại. \n\nGhi đè các thiết lập hiện tại bằng dữ liệu đã lưu?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "Không thể đọc dữ liệu hoặc dữ liệu không hợp lệ", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "Các thiết lập sẽ bị xóa và uBlock₀ sẽ khởi động lại. \n\nThiết lập uBlock₀ về cấu hình ban đầu?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "Lỗi kết nối: {{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "Đăng ký", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "một phút trước", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} phút trước", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "một giờ trước", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} giờ trước", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "một ngày trước", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} ngày trước", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "Hiện bảng điều khiển", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "Hiện nhật ký", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "tắt", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "Trang bị chặn", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin đã chặn tải trang sau:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "Vì bộ lọc sau", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "không có thông số", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "Tìm thấy trong:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "Trở lại", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "Đóng cửa sổ này", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "Đừng cảnh báo tôi lần nữa về trang web này", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "Vô hiệu chặn nghiêm ngặt cho {{hostname}}", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "Tạm thời", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "Vĩnh viễn", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "Tiếp tục", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "Trang đã chặn muốn chuyển hướng sang trang khác. Nếu đồng ý, bạn sẽ được chuyển hướng sang {{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "Lý do:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "Độc hại", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "Có bộ theo dõi", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "Không đáng tin cậy", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "Xuất ra lưu trữ trực tuyến", + "description": "tooltip" + }, + "cloudPull": { + "message": "Nhập từ lưu trữ trực tuyến", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "Nhập từ bộ lưu trữ trực tuyến và ghép với các thiết lập hiện tại", + "description": "tooltip" + }, + "cloudNoData": { + "message": "...\n...", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "Tên thiết bị này:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "Cảnh báo! Bạn phải chịu trách nhiệm cho những nguy cơ khi thay đổi các cài đặt nâng cao này.", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "Gửi", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "Áp dụng các thay đổi", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "Phục hồi", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "byte", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "Chặn phần tử trong khung…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "Đăng ký danh sách bộ lọc…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "Tạm thời cho phép yếu tố đa phương tiện lớn", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "Xem mã nguồn…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "Nhập phím tắt", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "Đóng/mở khóa cuộn", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "Sao chép vào khay nhớ tạm", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "Chọn tất cả", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "Bật/tắt lọc phần tử", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "Cho phép/Vô hiệu hoá JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "Nới lỏng chế độ chặn", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "Bộ nhớ đã dùng: {{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "Nhấp để nạp", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "Lỗi: {{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "Không thể lọc đúng cách khi khởi chạy trình duyệt. Tải lại trang để đảm bảo lọc thích hợp.", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "Đây là mục cuối", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/zh_CN/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/zh_CN/messages.json new file mode 100644 index 00000000..dc6a366a --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/zh_CN/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "一款高效的网络请求过滤工具,占用极低的内存和 CPU。", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — 控制面板", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "警告!您有未保存的更改", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "留下", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "忽略", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "设置", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "规则列表", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "自定义静态规则", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "自定义动态规则", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "白名单", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "快捷键", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — 记录器", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "关于", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "支持", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — 资源查看器", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "高级设置", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "单击:对此网站禁用/启用 uBlock₀。\n\nCtrl + 单击:仅对此页面禁用 uBlock₀。", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "单击:对此网站禁用 uBlock₀ 。\n\nCtrl + 单击:仅在此页面上禁用 uBlock₀ 。", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "单击:对此网站启用 uBlock₀ 。", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "已拦截请求", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "在此页面", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "自安装后", + "description": "English: since install" + }, + "popupOr": { + "message": "或", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "在此页面已拦截", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "自安装后已拦截", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "已连接的域名", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "打开控制面板", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "进入临时移除元素模式", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "进入元素选择器模式", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "打开记录器", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "报告此网站上的问题", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "是否禁止此网站的所有弹出窗口", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "单击屏蔽此网站所有弹窗", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "单击取消屏蔽此网站所有弹窗", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "是否屏蔽此网站上较大的媒体元素", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "单击以屏蔽此网站上较大的媒体元素", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "单击取消屏蔽此网站大型媒体元素", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "是否对此网站应用元素过滤规则", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "单击禁用此网站上的元素过滤", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "单击启用针对此网站的元素过滤规则", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "是否屏蔽此网站的第三方字体", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "单击屏蔽此网站上的远程字体", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "单击取消屏蔽此网站上的远程字体", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "单击禁用此网站的所有脚本", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "单击以取消禁用此网站的所有脚本", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "弹出窗口", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "大型媒体元素", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "页面元素过滤", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "远程字体", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "更多", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "更少", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "全局规则:此列的规则作用于所有网站。", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "本地规则:此列的规则仅作用于当前网站。", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "点击以使更改永久生效。", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "点击以撤销更改。", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "全部", + "description": "" + }, + "popupImageRulePrompt": { + "message": "图片", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "第三方", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "第三方 CSS/图像", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "内联脚本", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "第一方脚本", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "第三方脚本", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "第三方框架", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "已连接域名", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} / {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "版本", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "脚本", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "框架", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "创建", + "description": "English: Create" + }, + "pickerPick": { + "message": "选择", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "放弃", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "预览", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "URL 过滤规则", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "元素过滤规则", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "单击,Ctrl + 单击", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "屏蔽元素…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "隐藏已屏蔽元素的占位符", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "在图标上显示拦截请求数", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "不显示悬停提示", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "添加“屏蔽元素”到右键菜单", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "适合色盲人士", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "外观", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "主题", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "自定义强调色", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "启用云端储存", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "我是高级用户", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "禁止预读取(拦截对已屏蔽网络请求的任何连接)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "禁用超链接审计(hyperlink auditing)", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "防止 WebRTC 泄露本地 IP 地址", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "默认行为", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "这些默认行为可被针对各网站的设置取代", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "禁用元素过滤规则", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "屏蔽大于 {{input}} KB 的媒体元素", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "屏蔽远程字体", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "禁用 JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "屏蔽 CSP 报告", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "将代理域名映射至真实域名", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "高级", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "仅适合专家级用户的功能。", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "高级设置", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "上次恢复:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "上次备份:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "当前使用了 {{netFilterCount}} 个 URL 过滤规则和 {{cosmeticFilterCount}} 个元素过滤规则:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} / {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "自动更新过滤规则", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "立即更新", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "清除所有缓存", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "解析并应用元素过滤规则", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "元素过滤规则用于隐藏网页中碍眼,且不能被基于网络请求的过滤引擎屏蔽的元素。", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "忽略通用元素过滤规则", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "通用元素过滤规则是应用到所有网站的元素过滤规则。启用此选项将消除网站因处理通用元素过滤规则而增加的内存和 CPU 占用。\n\n推荐在低性能设备上启用此选项。", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "过滤规则列表全部加载完成前暂停网络连接", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "被屏蔽站点列表", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "应用更改", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "内置", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "广告", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "隐私", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "恶意软件防护、安全", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "社交网络小部件", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie提醒", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "骚扰", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "多用途", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "区域、语言", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "自定义", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "导入…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "每行一个 URL。无效的 URL 将被忽略。", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "过久未更新。", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "查看内容", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "上次更新:{{ago}}。\n点击此处要求更新。", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "正在更新...", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "资源更新因网络错误受阻。", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "请勿添加未信任来源的过滤规则。", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "启用自定义过滤规则", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "允许需信任的自定义过滤规则", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "导入并添加…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "导出…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "应用更改", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "永久规则", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "临时规则", + "description": "header" + }, + "rulesRevert": { + "message": "恢复", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "提交", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "编辑", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "保存", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "取消", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "从文件导入…", + "description": "" + }, + "rulesExport": { + "message": "导出到文件...", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "您的动态过滤规则列表。", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "规则语法:来源主机名称 目标主机名称 连接请求类型 操作完整说明)。", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "排列:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "规则类型", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "来源", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "目标", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "白名单中的规则匹配的页面不会被 uBlock Origin 过滤或阻挡。每行一条规则。", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "导入并添加…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "导出…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "应用更改", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "类型", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "域名", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "URL", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "过滤规则", + "description": "English: Filter" + }, + "logAll": { + "message": "全部", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "后台网络请求", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "当前标签页", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "重新加载此标签页的内容", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "是否打开 DOM 探查器", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "是否打开弹出式面板", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki:记录器", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "清空记录", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "暂停记录(放弃所有传入数据)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "取消暂停记录", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "是否启用记录器筛选", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "筛选记录条目", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "记录器筛选设定", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "非", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "已应用规则", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "已拦截", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "已允许", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "已修改", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "第一方", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "第三方", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "详情", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "过滤规则", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "规则列表", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "规则", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "上下文", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "根上下文", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "第一方/第三方", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "类型", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "URL", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "URL 规则", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "上下文:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "类型:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "静态规则", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "当 URL 匹配 {{url}},{{br}}且来源于 {{origin}} 时,{{br}}{{action}} {{type}} 的网络请求,{{br}}{{importance}} 有一个匹配的例外规则。", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "拦截", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "允许", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "“{{type}}”类型", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "任何类型", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "来源于 \"{{origin}}\"", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "任何地方", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "除非", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "即使", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "静态规则 {{filter}} 被包含于:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "无法在当前启用的任何过滤规则列表中找到静态规则", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "不符合以下任一状况的记录将会被自动清除:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "最多保留 {{input}} 分钟以内的记录", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "每个分页最多保留 {{input}} 次内容加载产生的记录", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "每个分页最多保留 {{input}} 条记录", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "垂直扩展模式下每项使用 {{input}} 行", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "隐藏栏位:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} 时间", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} 过滤规则", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} 上下文", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} 第一方/第三方", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "列表", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "表格", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "纯文字", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "打开", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "创建新报告", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "查找类似报告", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "文档", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "请至 uBlock/wiki 参阅 uBlock Origin 的所有功能以及使用说明。", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "疑难解答", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "若想进行普通的咨询或是需要其他帮助,请至 Reddit 的 /r/uBlockOrigin 板块寻求解答。", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "过滤规则问题/网页被损坏", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "将有关特定网站的过滤规则问题反馈至 uBlockOrigin/uAssets 问题跟踪器需要 GitHub 账号。", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "重要:避免同时使用类似 uBlock Origin 的过滤软件,这可能导致在特定的网站上遇到过滤规则问题。", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "小提示:确保在使用最新的过滤规则列表。日志记录器是诊断过滤规则问题的首选工具。", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "错误报告", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "将 uBlock Origin 本身的问题反馈至 uBlockOrigin/uBlock-issue 问题跟踪器需要 GitHub 账号。", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "故障排查相关信息", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "以下生成的技术报告或有助于他人帮你解决问题。", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "报告过滤规则的问题", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "请确认该问题未有其他人上报过,避免重复提交报告给维护者带来额外负担。", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "过滤规则列表每天都会更新。请确认您的问题无法用最新的过滤规则列表解决。", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "请验证重新加载问题页面后问题依然存在。", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "网址:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "该网页…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- 选择其中一项 --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "显示广告或广告残留", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "存在遮盖或类似问题", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "检测出 uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "存在隐私相关问题", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "启用 uBlock Origin 后出现异常", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "打开不需要的标签页或窗口", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "指向恶意软件、钓鱼网站", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "将该网页标记为 “NSFW”(“工作场所不宜”)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "隐私政策", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "更新日志", + "description": "" + }, + "aboutCode": { + "message": "源代码 (GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "贡献者", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "源代码", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "翻译", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "过滤规则列表", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "外部依赖(兼容 GPLv3 协议):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO 本身提供的过滤规则列表免费托管于下列 CDN:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "需要更新过滤规则列表时会随机选用一个 CDN。", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "备份到文件…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "从文件还原…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "重置为默认设置", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "您的所有设置将被备份于 {{time}} 的数据覆盖,并且 uBlock₀ 将重新启动。\n确定要用备份的数据覆盖全部现有设置吗?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "无法读取数据,或数据无效", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "您的设置将被清除,uBlock₀ 将重新启动。\n\n确定将 uBlock₀ 重置到初始状态?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "网络错误:{{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "订阅", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "1 分钟前", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} 分钟前", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "1 小时前", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} 小时前", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "1 天前", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} 天前", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "显示控制面板", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "显示记录器", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "关", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "页面已被屏蔽", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin 阻止了下列页面加载:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "因为下列过滤规则:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "不带参数", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "被包含于:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "返回", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "关闭此窗口", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "不再针对此网站作出警告", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "不对 {{hostname}} 进行严格屏蔽", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "暂时", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "永久", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "继续加载", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "被屏蔽的网页想重定向到另一个网站。如果您选择继续,将直接导航到:{{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "原因:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "恶意网站", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "跟踪器", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "不受信任", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "导出到云端储存", + "description": "tooltip" + }, + "cloudPull": { + "message": "从云端储存导入", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "从云存储导入并与当前设置合并", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "此设备名称:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "警告!更改这些高级设置可能造成问题,请自担风险。", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "提交", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "应用更改", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "还原", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "字节", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "屏蔽框架中的内容…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "订阅规则列表…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "临时允许较大媒体元素", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "查看源代码…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "键入快捷键", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "是否启用同步滚动", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "复制到剪贴板", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "全选", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "是否应用元素过滤规则", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "JavaScript 开关", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "放宽拦截限制", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "已用存储:{{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "单击以加载", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "错误:{{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "无法在浏览器启动时正常过滤。请重新加载此页面以确保正常过滤。", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "此条目必须是最后一个", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/_locales/zh_TW/messages.json b/android/app/src/main/assets/extensions/ublock_origin/_locales/zh_TW/messages.json new file mode 100644 index 00000000..da46baa0 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/_locales/zh_TW/messages.json @@ -0,0 +1,1314 @@ +{ + "extName": { + "message": "uBlock Origin", + "description": "extension name." + }, + "extShortDesc": { + "message": "終於有一款高效能的封鎖工具。對 CPU 和記憶體的占用極低。", + "description": "this will be in the Chrome web store: must be 132 characters or less" + }, + "dashboardName": { + "message": "uBlock₀ — 控制台", + "description": "English: uBlock₀ — Dashboard" + }, + "dashboardUnsavedWarning": { + "message": "警告!變更尚未儲存。", + "description": "A warning in the dashboard when navigating away from unsaved changes" + }, + "dashboardUnsavedWarningStay": { + "message": "留在這裡", + "description": "Label for button to prevent navigating away from unsaved changes" + }, + "dashboardUnsavedWarningIgnore": { + "message": "忽略", + "description": "Label for button to ignore unsaved changes" + }, + "settingsPageName": { + "message": "設定", + "description": "appears as tab name in dashboard" + }, + "3pPageName": { + "message": "過濾規則清單", + "description": "appears as tab name in dashboard" + }, + "1pPageName": { + "message": "自訂靜態過濾規則", + "description": "appears as tab name in dashboard" + }, + "rulesPageName": { + "message": "自訂動態過濾規則", + "description": "appears as tab name in dashboard" + }, + "whitelistPageName": { + "message": "白名單", + "description": "appears as tab name in dashboard" + }, + "shortcutsPageName": { + "message": "快捷鍵", + "description": "appears as tab name in dashboard" + }, + "statsPageName": { + "message": "uBlock₀ — 記錄器", + "description": "Title for the logger window" + }, + "aboutPageName": { + "message": "關於", + "description": "appears as tab name in dashboard" + }, + "supportPageName": { + "message": "支援", + "description": "appears as tab name in dashboard" + }, + "assetViewerPageName": { + "message": "uBlock₀ — 資源檢視器", + "description": "Title for the asset viewer page" + }, + "advancedSettingsPageName": { + "message": "進階設定", + "description": "Title for the advanced settings page" + }, + "popupPowerSwitchInfo": { + "message": "點擊:在這個網站停用/啟用 uBlock₀。\n\nCtrl + 點擊:僅在這個頁面停用 uBlock₀。", + "description": "English: Click: disable/enable uBlock₀ for this site.\n\nCtrl+click: disable uBlock₀ only on this page." + }, + "popupPowerSwitchInfo1": { + "message": "點擊:在這個網站停用 uBlock₀ 。\n\nCtrl + 點擊:僅在這個頁面停用 uBlock₀ 。", + "description": "Message to be read by screen readers" + }, + "popupPowerSwitchInfo2": { + "message": "點擊以在這個網站啟用 uBlock₀。", + "description": "Message to be read by screen readers" + }, + "popupBlockedRequestPrompt": { + "message": "已阻擋的連線請求", + "description": "English: requests blocked" + }, + "popupBlockedOnThisPagePrompt": { + "message": "在此頁面", + "description": "English: on this page" + }, + "popupBlockedStats": { + "message": "{{count}} ({{percent}}%)", + "description": "Example: 15 (13%)" + }, + "popupBlockedSinceInstallPrompt": { + "message": "自安裝後", + "description": "English: since install" + }, + "popupOr": { + "message": "或", + "description": "English: or" + }, + "popupBlockedOnThisPage_v2": { + "message": "已在這個頁面攔截", + "description": "For the new mobile-friendly popup design" + }, + "popupBlockedSinceInstall_v2": { + "message": "安裝後已攔截", + "description": "For the new mobile-friendly popup design" + }, + "popupDomainsConnected_v2": { + "message": "已連接的網域", + "description": "For the new mobile-friendly popup design" + }, + "popupTipDashboard": { + "message": "開啟控制台", + "description": "English: Click to open the dashboard" + }, + "popupTipZapper": { + "message": "進入元素臨時移除模式", + "description": "Tooltip for the element-zapper icon in the popup panel" + }, + "popupTipPicker": { + "message": "進入元素選擇器模式", + "description": "English: Enter element picker mode" + }, + "popupTipLog": { + "message": "開啟記錄器", + "description": "Tooltip used for the logger icon in the panel" + }, + "popupTipReport": { + "message": "回報此網站的問題", + "description": "Tooltip used for the 'chat' icon in the panel" + }, + "popupTipNoPopups": { + "message": "切換是否阻擋此網站的所有彈出型視窗", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups1": { + "message": "點擊以封鎖此網站的所有彈出型視窗", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoPopups2": { + "message": "點擊以解除封鎖網站的所有彈出式視窗", + "description": "Tooltip for the no-popups per-site switch" + }, + "popupTipNoLargeMedia": { + "message": "切換是否封鎖此網站的大型媒體元素", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia1": { + "message": "點擊以封鎖此網站的大型媒體元素", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoLargeMedia2": { + "message": "點擊以解除封鎖此網站的大型媒體元素", + "description": "Tooltip for the no-large-media per-site switch" + }, + "popupTipNoCosmeticFiltering": { + "message": "切換是否在此網站過濾網頁元素", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering1": { + "message": "點擊以停用此網站的網頁元素過濾", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoCosmeticFiltering2": { + "message": "點擊以啟用網站的網頁元素過濾功能", + "description": "Tooltip for the no-cosmetic-filtering per-site switch" + }, + "popupTipNoRemoteFonts": { + "message": "切換是否封鎖此網站的遠端字體", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts1": { + "message": "點擊以封鎖此網站的遠端字型", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoRemoteFonts2": { + "message": "點擊以解除封鎖此網站的遠端字型", + "description": "Tooltip for the no-remote-fonts per-site switch" + }, + "popupTipNoScripting1": { + "message": "點擊以停用此網站的 JavaScript", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupTipNoScripting2": { + "message": "點擊以重新啟用網站的 JavaScript", + "description": "Tooltip for the no-scripting per-site switch" + }, + "popupNoPopups_v2": { + "message": "彈出式視窗", + "description": "Caption for the no-popups per-site switch" + }, + "popupNoLargeMedia_v2": { + "message": "大型媒體元素", + "description": "Caption for the no-large-media per-site switch" + }, + "popupNoCosmeticFiltering_v2": { + "message": "網頁元素過濾", + "description": "Caption for the no-cosmetic-filtering per-site switch" + }, + "popupNoRemoteFonts_v2": { + "message": "遠端字型", + "description": "Caption for the no-remote-fonts per-site switch" + }, + "popupNoScripting_v2": { + "message": "JavaScript", + "description": "Caption for the no-scripting per-site switch" + }, + "popupMoreButton_v2": { + "message": "更多", + "description": "Label to be used to show popup panel sections" + }, + "popupLessButton_v2": { + "message": "更少", + "description": "Label to be used to hide popup panel sections" + }, + "popupTipGlobalRules": { + "message": "全域規則:此欄位的規則會套用至所有網站。", + "description": "Tooltip when hovering the top-most cell of the global-rules column." + }, + "popupTipLocalRules": { + "message": "區域規則:此欄位的規則僅套用至當前網站。\n區域規則會覆蓋全域規則。", + "description": "Tooltip when hovering the top-most cell of the local-rules column." + }, + "popupTipSaveRules": { + "message": "點擊以永久儲存變更。", + "description": "Tooltip when hovering over the padlock in the dynamic filtering pane." + }, + "popupTipRevertRules": { + "message": "點擊以撤銷變更。", + "description": "Tooltip when hovering over the eraser in the dynamic filtering pane." + }, + "popupAnyRulePrompt": { + "message": "全部", + "description": "" + }, + "popupImageRulePrompt": { + "message": "圖片", + "description": "" + }, + "popup3pAnyRulePrompt": { + "message": "第三方", + "description": "" + }, + "popup3pPassiveRulePrompt": { + "message": "第三方 CSS / 圖片", + "description": "" + }, + "popupInlineScriptRulePrompt": { + "message": "內聯腳本", + "description": "" + }, + "popup1pScriptRulePrompt": { + "message": "第一方腳本", + "description": "" + }, + "popup3pScriptRulePrompt": { + "message": "第三方腳本", + "description": "" + }, + "popup3pFrameRulePrompt": { + "message": "第三方框架", + "description": "" + }, + "popupHitDomainCountPrompt": { + "message": "已連結的網域", + "description": "appears in popup" + }, + "popupHitDomainCount": { + "message": "{{count}} / {{total}}", + "description": "appears in popup" + }, + "popupVersion": { + "message": "版本", + "description": "Example of use: Version 1.26.4" + }, + "popup3pScriptFilter": { + "message": "程式碼", + "description": "Appears as an option to filter out firewall rows" + }, + "popup3pFrameFilter": { + "message": "框架元素", + "description": "Appears as an option to filter out firewall rows" + }, + "pickerCreate": { + "message": "建立", + "description": "English: Create" + }, + "pickerPick": { + "message": "選擇", + "description": "English: Pick" + }, + "pickerQuit": { + "message": "放棄", + "description": "English: Quit" + }, + "pickerPreview": { + "message": "預覽", + "description": "Element picker preview mode: will cause the elements matching the current filter to be removed from the page" + }, + "pickerNetFilters": { + "message": "網址過濾規則", + "description": "English: header for a type of filter in the element picker dialog" + }, + "pickerCosmeticFilters": { + "message": "元素隱藏過濾規則", + "description": "English: Cosmetic filters" + }, + "pickerCosmeticFiltersHint": { + "message": "點擊,按住 Ctrl 鍵點擊", + "description": "English: Click, Ctrl-click" + }, + "pickerContextMenuEntry": { + "message": "阻擋元素…", + "description": "An entry in the browser's contextual menu" + }, + "settingsCollapseBlockedPrompt": { + "message": "隱藏已阻擋元素的佔位元素", + "description": "English: Hide placeholders of blocked elements" + }, + "settingsIconBadgePrompt": { + "message": "在圖示上顯示被阻擋的連線請求的數量", + "description": "English: Show the number of blocked requests on the icon" + }, + "settingsTooltipsPrompt": { + "message": "停用提示框", + "description": "A checkbox in the Settings pane" + }, + "settingsContextMenuPrompt": { + "message": "將 uBlock Origin 加入右鍵選單", + "description": "English: Make use of context menu where appropriate" + }, + "settingsColorBlindPrompt": { + "message": "使用對色盲友善的色彩", + "description": "English: Color-blind friendly" + }, + "settingsAppearance": { + "message": "外觀", + "description": "Section for controlling user interface appearance" + }, + "settingsThemeLabel": { + "message": "佈景主題", + "description": "Label for checkbox to enable a custom dark theme" + }, + "settingsThemeAccent0Label": { + "message": "自訂強調顏色", + "description": "Label for checkbox to pick an accent color" + }, + "settingsCloudStorageEnabledPrompt": { + "message": "啟用雲端儲存空間的支援", + "description": "" + }, + "settingsAdvancedUserPrompt": { + "message": "我是進階使用者", + "description": "Checkbox to let user access advanced, technical features" + }, + "settingsPrefetchingDisabledPrompt": { + "message": "停用「預先取回連結」(避免連接至已阻擋的網路請求)", + "description": "English: " + }, + "settingsHyperlinkAuditingDisabledPrompt": { + "message": "停用超連結監測", + "description": "English: " + }, + "settingsWebRTCIPAddressHiddenPrompt": { + "message": "防止 WebRTC 洩漏本機 IP 位址", + "description": "English: " + }, + "settingPerSiteSwitchGroup": { + "message": "預設行為", + "description": "" + }, + "settingPerSiteSwitchGroupSynopsis": { + "message": "這些預設行為可再依各網站調整", + "description": "" + }, + "settingsNoCosmeticFilteringPrompt": { + "message": "停用元素隱藏過濾規則", + "description": "" + }, + "settingsNoLargeMediaPrompt": { + "message": "封鎖超過 {{input}} KB 的媒體元素", + "description": "" + }, + "settingsNoRemoteFontsPrompt": { + "message": "封鎖遠端字型", + "description": "" + }, + "settingsNoScriptingPrompt": { + "message": "停用 JavaScript", + "description": "The default state for the per-site no-scripting switch" + }, + "settingsNoCSPReportsPrompt": { + "message": "封鎖內容安全策略報告", + "description": "background information: https://github.com/gorhill/uBlock/issues/3150" + }, + "settingsUncloakCnamePrompt": { + "message": "揭露網域「正規名稱」", + "description": "background information: https://github.com/uBlockOrigin/uBlock-issues/issues/1513" + }, + "settingsAdvanced": { + "message": "進階", + "description": "Section for controlling advanced-user settings" + }, + "settingsAdvancedSynopsis": { + "message": "僅適合技術使用者的功能", + "description": "Description of section controlling advanced-user settings" + }, + "settingsAdvancedUserSettings": { + "message": "進階設定", + "description": "For the tooltip of a link which gives access to advanced settings" + }, + "settingsLastRestorePrompt": { + "message": "上次還原:", + "description": "English: Last restore:" + }, + "settingsLastBackupPrompt": { + "message": "上次備份:", + "description": "English: Last backup:" + }, + "3pListsOfBlockedHostsPrompt": { + "message": "目前已使用 {{netFilterCount}} 個網址過濾規則 + {{cosmeticFilterCount}} 個元素隱藏過濾規則:", + "description": "Appears at the top of the _3rd-party filters_ pane" + }, + "3pListsOfBlockedHostsPerListStats": { + "message": "{{used}} / {{total}}", + "description": "Appears aside each filter list in the _3rd-party filters_ pane" + }, + "3pAutoUpdatePrompt1": { + "message": "自動更新過濾規則", + "description": "A checkbox in the _3rd-party filters_ pane" + }, + "3pUpdateNow": { + "message": "立即更新", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pPurgeAll": { + "message": "清除所有快取", + "description": "A button in the in the _3rd-party filters_ pane" + }, + "3pParseAllABPHideFiltersPrompt1": { + "message": "解析並套用元素隱藏過濾規則", + "description": "English: Parse and enforce Adblock+ element hiding filters." + }, + "3pParseAllABPHideFiltersInfo": { + "message": "「網頁元素過濾規則」負責隱藏網頁中被認為礙眼,且不能被網路請求過濾引擎阻擋的元素。", + "description": "Describes the purpose of the 'Parse and enforce cosmetic filters' feature." + }, + "3pIgnoreGenericCosmeticFilters": { + "message": "忽略一般元素隱藏過濾規則", + "description": "This will cause uBO to ignore all generic cosmetic filters." + }, + "3pIgnoreGenericCosmeticFiltersInfo": { + "message": "「通用網頁元素過濾規則」是會套用在所有網站上的網頁元素過濾規則。啟用此選項會消除網頁處理此類規則時增加的額外記憶體與 CPU 使用量。\n\n建議在效能較弱的裝置上啟用此選項。", + "description": "Describes the purpose of the 'Ignore generic cosmetic filters' feature." + }, + "3pSuspendUntilListsAreLoaded": { + "message": "在所有過濾器清單載入完成前暫停網路活動", + "description": "A checkbox in the 'Filter lists' pane" + }, + "3pListsOfBlockedHostsHeader": { + "message": "被阻擋網域的列表", + "description": "English: Lists of blocked hosts" + }, + "3pApplyChanges": { + "message": "套用變更", + "description": "English: Apply changes" + }, + "3pGroupDefault": { + "message": "內建", + "description": "Filter lists section name" + }, + "3pGroupAds": { + "message": "廣告", + "description": "Filter lists section name" + }, + "3pGroupPrivacy": { + "message": "隱私", + "description": "Filter lists section name" + }, + "3pGroupMalware": { + "message": "惡意軟體防護與安全性", + "description": "Filter lists section name" + }, + "3pGroupSocial": { + "message": "社交媒體小工具", + "description": "Filter lists section name" + }, + "3pGroupCookies": { + "message": "Cookie 通知", + "description": "Filter lists section name" + }, + "3pGroupAnnoyances": { + "message": "嫌惡元素", + "description": "Filter lists section name" + }, + "3pGroupMultipurpose": { + "message": "多用途", + "description": "Filter lists section name" + }, + "3pGroupRegions": { + "message": "地區、語言", + "description": "Filter lists section name" + }, + "3pGroupCustom": { + "message": "自訂", + "description": "Filter lists section name" + }, + "3pImport": { + "message": "匯入…", + "description": "The label for the checkbox used to import external filter lists" + }, + "3pExternalListsHint": { + "message": "每行一個網址。無效網址將被忽略。", + "description": "Short information about how to use the textarea to import external filter lists by URL" + }, + "3pExternalListObsolete": { + "message": "過久未更新。", + "description": "used as a tooltip for the out-of-date icon beside a list" + }, + "3pViewContent": { + "message": "查看內容", + "description": "used as a tooltip for eye icon beside a list" + }, + "3pLastUpdate": { + "message": "上次更新時間:{{ago}}。\n按這裡以強制更新。", + "description": "used as a tooltip for the clock icon beside a list" + }, + "3pUpdating": { + "message": "更新中…", + "description": "used as a tooltip for the spinner icon beside a list" + }, + "3pNetworkError": { + "message": "因網路錯誤無法更新資源。", + "description": "used as a tooltip for error icon beside a list" + }, + "1pTrustWarning": { + "message": "切勿加入來歷不明的過濾規則。", + "description": "Warning against copy-pasting filters from random sources" + }, + "1pEnableMyFiltersLabel": { + "message": "啟用自訂過濾器", + "description": "Label for the checkbox use to enable/disable 'My filters' list" + }, + "1pTrustMyFiltersLabel": { + "message": "允許需要信任的自訂過濾規則", + "description": "Label for the checkbox use to trust the content of 'My filters' list" + }, + "1pImport": { + "message": "匯入並加入…", + "description": "Button in the 'My filters' pane" + }, + "1pExport": { + "message": "匯出…", + "description": "Button in the 'My filters' pane" + }, + "1pExportFilename": { + "message": "my-ublock-static-filters_{{datetime}}.txt", + "description": "English: my-ublock-static-filters_{{datetime}}.txt" + }, + "1pApplyChanges": { + "message": "套用變更", + "description": "English: Apply changes" + }, + "rulesPermanentHeader": { + "message": "永久規則", + "description": "header" + }, + "rulesTemporaryHeader": { + "message": "臨時規則", + "description": "header" + }, + "rulesRevert": { + "message": "還原", + "description": "This will remove all temporary rules" + }, + "rulesCommit": { + "message": "提交", + "description": "This will persist temporary rules" + }, + "rulesEdit": { + "message": "編輯", + "description": "Will enable manual-edit mode (textarea)" + }, + "rulesEditSave": { + "message": "儲存", + "description": "Will save manually-edited content and exit manual-edit mode" + }, + "rulesEditDiscard": { + "message": "捨棄", + "description": "Will discard manually-edited content and exit manual-edit mode" + }, + "rulesImport": { + "message": "從檔案匯入…", + "description": "" + }, + "rulesExport": { + "message": "匯出至檔案…", + "description": "Button in the 'My rules' pane" + }, + "rulesDefaultFileName": { + "message": "my-ublock-dynamic-rules_{{datetime}}.txt", + "description": "default file name to use" + }, + "rulesHint": { + "message": "您的動態過濾規則清單。", + "description": "English: List of your dynamic filtering rules." + }, + "rulesFormatHint": { + "message": "規則語法:來源主機名稱 目標主機名稱 連線請求類型 操作完整說明)。", + "description": "English: dynamic rule syntax and full documentation." + }, + "rulesSort": { + "message": "排序:", + "description": "English: label for sort option." + }, + "rulesSortByType": { + "message": "規則類型", + "description": "English: a sort option for list of rules." + }, + "rulesSortBySource": { + "message": "來源", + "description": "English: a sort option for list of rules." + }, + "rulesSortByDestination": { + "message": "目的地", + "description": "English: a sort option for list of rules." + }, + "whitelistPrompt": { + "message": "信任名單中的規則適用的頁面不會被 uBlock Origin 過濾或阻擋。每行一個規則。", + "description": "A concise description of the 'Trusted sites' pane." + }, + "whitelistImport": { + "message": "匯入並加入…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExport": { + "message": "匯出…", + "description": "Button in the 'Trusted sites' pane" + }, + "whitelistExportFilename": { + "message": "my-ublock-trusted-sites_{{datetime}}.txt", + "description": "The default filename to use for import/export purpose" + }, + "whitelistApply": { + "message": "套用變更", + "description": "English: Apply changes" + }, + "logRequestsHeaderType": { + "message": "類型", + "description": "English: Type" + }, + "logRequestsHeaderDomain": { + "message": "網域", + "description": "English: Domain" + }, + "logRequestsHeaderURL": { + "message": "網址", + "description": "English: URL" + }, + "logRequestsHeaderFilter": { + "message": "過濾規則", + "description": "English: Filter" + }, + "logAll": { + "message": "全部", + "description": "Appears in the logger's tab selector" + }, + "logBehindTheScene": { + "message": "背景網路連線請求", + "description": "Pretty name for behind-the-scene network requests" + }, + "loggerCurrentTab": { + "message": "目前分頁", + "description": "Appears in the logger's tab selector" + }, + "loggerReloadTip": { + "message": "重新載入分頁內容", + "description": "Tooltip for the reload button in the logger page" + }, + "loggerDomInspectorTip": { + "message": "切換是否啟用 DOM 檢視器", + "description": "Tooltip for the DOM inspector button in the logger page" + }, + "loggerPopupPanelTip": { + "message": "切換是否啟用彈出式面板", + "description": "Tooltip for the popup panel button in the logger page" + }, + "loggerInfoTip": { + "message": "uBlock Origin wiki:記錄器", + "description": "Tooltip for the top-right info label in the logger page" + }, + "loggerClearTip": { + "message": "清除記錄", + "description": "Tooltip for the eraser in the logger page; used to blank the content of the logger" + }, + "loggerPauseTip": { + "message": "暫停記錄(捨棄所有傳入資料)", + "description": "Tooltip for the pause button in the logger page" + }, + "loggerUnpauseTip": { + "message": "取消暫停記錄", + "description": "Tooltip for the play button in the logger page" + }, + "loggerRowFiltererButtonTip": { + "message": "切換是否啟用記錄篩選", + "description": "Tooltip for the row filterer button in the logger page" + }, + "logFilterPrompt": { + "message": "篩選記錄條目", + "description": "Placeholder string for logger output filtering input field" + }, + "loggerRowFiltererBuiltinTip": { + "message": "記錄器篩選設定", + "description": "Tooltip for the button to bring up logger output filtering options" + }, + "loggerRowFiltererBuiltinNot": { + "message": "非", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinEventful": { + "message": "已套用規則", + "description": "A keyword in the built-in row filtering expression: all items corresponding to uBO doing something (blocked, allowed, redirected, etc.)" + }, + "loggerRowFiltererBuiltinBlocked": { + "message": "已封鎖", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinAllowed": { + "message": "已允許", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltinModified": { + "message": "已修改", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin1p": { + "message": "第一方", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerRowFiltererBuiltin3p": { + "message": "第三方", + "description": "A keyword in the built-in row filtering expression" + }, + "loggerEntryDetailsHeader": { + "message": "詳細資料", + "description": "Small header to identify the 'Details' pane for a specific logger entry" + }, + "loggerEntryDetailsFilter": { + "message": "過濾規則", + "description": "Label to identify a filter field" + }, + "loggerEntryDetailsFilterList": { + "message": "過濾規則清單", + "description": "Label to identify a filter list field" + }, + "loggerEntryDetailsRule": { + "message": "規則", + "description": "Label to identify a rule field" + }, + "loggerEntryDetailsContext": { + "message": "來源", + "description": "Label to identify a context field (typically a hostname)" + }, + "loggerEntryDetailsRootContext": { + "message": "主內容", + "description": "Label to identify a root context field (typically a hostname)" + }, + "loggerEntryDetailsPartyness": { + "message": "第一方/第三方", + "description": "Label to identify a field providing partyness information" + }, + "loggerEntryDetailsType": { + "message": "類型", + "description": "Label to identify the type of an entry" + }, + "loggerEntryDetailsURL": { + "message": "網址", + "description": "Label to identify the URL of an entry" + }, + "loggerURLFilteringHeader": { + "message": "網址規則", + "description": "Small header to identify the dynamic URL filtering section" + }, + "loggerURLFilteringContextLabel": { + "message": "上下文:", + "description": "Label for the context selector" + }, + "loggerURLFilteringTypeLabel": { + "message": "類型:", + "description": "Label for the type selector" + }, + "loggerStaticFilteringHeader": { + "message": "靜態過濾", + "description": "Small header to identify the static filtering section" + }, + "loggerStaticFilteringSentence": { + "message": "當網址符合 {{url}},{{br}}並且來自 {{origin}} 時,{{br}}{{action}} {{type}} 的網路請求,{{br}}{{importance}} 已有符合的過濾例外規則。", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartBlock": { + "message": "封鎖", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAllow": { + "message": "允許", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartType": { + "message": "{{type}} 類型", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyType": { + "message": "任何類型", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartOrigin": { + "message": "來自「{{origin}}」", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartAnyOrigin": { + "message": "來自任何地方", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartNotImportant": { + "message": "除非", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringSentencePartImportant": { + "message": "就算", + "description": "Used in the static filtering wizard" + }, + "loggerStaticFilteringFinderSentence1": { + "message": "在下列清單中找到靜態過濾規則 {{filter}}:", + "description": "Below this sentence, the filter list(s) in which the filter was found" + }, + "loggerStaticFilteringFinderSentence2": { + "message": "無法在任何目前已啟用的過濾規則清單中找到靜態過濾規則", + "description": "Message to show when a filter cannot be found in any filter lists" + }, + "loggerSettingDiscardPrompt": { + "message": "未符合以下所有條件的記錄將會被自動捨棄:", + "description": "Logger setting: A sentence to describe the purpose of the settings below" + }, + "loggerSettingPerEntryMaxAge": { + "message": "最多保留 {{input}} 分鐘以內的記錄", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxLoads": { + "message": "每個分頁最多保留 {{input}} 次內容載入產生的記錄", + "description": "A logger setting" + }, + "loggerSettingPerTabMaxEntries": { + "message": "每個分頁最多保留 {{input}} 條記錄", + "description": "A logger setting" + }, + "loggerSettingPerEntryLineCount": { + "message": "在垂直延展模式中每條記錄顯示 {{input}} 行", + "description": "A logger setting" + }, + "loggerSettingHideColumnsPrompt": { + "message": "隱藏欄位:", + "description": "Logger settings: a sentence to describe the purpose of the checkboxes below" + }, + "loggerSettingHideColumnTime": { + "message": "{{input}} 時間", + "description": "A label for the time column" + }, + "loggerSettingHideColumnFilter": { + "message": "{{input}} 過濾規則", + "description": "A label for the filter or rule column" + }, + "loggerSettingHideColumnContext": { + "message": "{{input}} 上下文", + "description": "A label for the context column" + }, + "loggerSettingHideColumnPartyness": { + "message": "{{input}} 第一方/第三方", + "description": "A label for the partyness column" + }, + "loggerExportFormatList": { + "message": "清單", + "description": "Label for radio-button to pick export format" + }, + "loggerExportFormatTable": { + "message": "表格", + "description": "Label for radio-button to pick export format" + }, + "loggerExportEncodePlain": { + "message": "純文字", + "description": "Label for radio-button to pick export text format" + }, + "loggerExportEncodeMarkdown": { + "message": "Markdown", + "description": "Label for radio-button to pick export text format" + }, + "supportOpenButton": { + "message": "開啟", + "description": "Text for button which open an external web page in Support pane" + }, + "supportReportSpecificButton": { + "message": "建立新報告", + "description": "Text for button which open an external web page in Support pane" + }, + "supportFindSpecificButton": { + "message": "尋找類似報告", + "description": "A clickable link in the filter issue reporter section" + }, + "supportS1H": { + "message": "文件", + "description": "Header of 'Documentation' section in Support pane" + }, + "supportS1P1": { + "message": "欲了解 uBlock Origin 所有的功能,請詳閱 uBlock/wiki 中的文件。", + "description": "First paragraph of 'Documentation' section in Support pane" + }, + "supportS2H": { + "message": "問題與支援", + "description": "Header of 'Questions and support' section in Support pane" + }, + "supportS2P1": { + "message": "如有問題或需要其他類型的幫助,可以在 /r/uBlockOrigin subreddit 獲得協助與解答。", + "description": "First paragraph of 'Questions and support' section in Support pane" + }, + "supportS3H": { + "message": "過濾器問題 / 網站被破壞", + "description": "Header of 'Filter issues' section in Support pane" + }, + "supportS3P1": { + "message": "請到 uBlockOrigin/uAssets 議題追蹤系統回報特定網站的過濾器問題。需要 GitHub 帳號。", + "description": "First paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P2": { + "message": "特別注意:不要把其他同性質的阻擋工具跟 uBlock Origin 混用,否則可能會在特定網站造成過濾問題。", + "description": "Second paragraph of 'Filter issues' section in Support pane" + }, + "supportS3P3": { + "message": "小提示:請確定您的過濾器清單已經更新至最新版本。我們主要用「記錄器」來分析過濾器相關問題。", + "description": "Third paragraph of 'Filter issues' section in Support pane" + }, + "supportS4H": { + "message": "錯誤回報", + "description": "Header of 'Bug report' section in Support pane" + }, + "supportS4P1": { + "message": "請到 uBlockOrigin/uBlock-issue 議題追蹤系統回報 uBlock Origin 本身的問題。需要 GitHub 帳號。", + "description": "First paragraph of 'Bug report' section in Support pane" + }, + "supportS5H": { + "message": "疑難排解資訊", + "description": "Header of 'Troubleshooting Information' section in Support pane" + }, + "supportS5P1": { + "message": "以下是志願者嘗試幫您解決問題時,可能會用到的技術資訊:", + "description": "First paragraph of 'Troubleshooting Information' section in Support pane" + }, + "supportS6H": { + "message": "回報過濾規則的問題", + "description": "Header of 'Report a filter issue' section in Support pane" + }, + "supportS6P1S1": { + "message": "為避免增加志願者的負擔,請先確認此問題是否已被回報過。請注意:點選按鈕會將本頁的來源傳送到 GitHub。", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S1": { + "message": "過濾器清單每天更新,請確保問題尚未在最新版本中解決。", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6P2S2": { + "message": "重新載入有問題的網頁後,驗證問題是否仍然存在。", + "description": "A paragraph in the filter issue reporter section" + }, + "supportS6URL": { + "message": "網址:", + "description": "Label for the URL of the page" + }, + "supportS6Select1": { + "message": "這個網頁…", + "description": "Label for widget to select type of issue" + }, + "supportS6Select1Option0": { + "message": "-- 挑選一種情況 --", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option1": { + "message": "會顯示廣告或殘留空位", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option2": { + "message": "含有覆蓋物或其他滋擾物", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option3": { + "message": "偵測到 uBlock Origin", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option4": { + "message": "有隱私權相關問題", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option5": { + "message": "開啟 uBlock Origin 的時候運作不正常", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option6": { + "message": "會開啟不必要的分頁或視窗", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Select1Option7": { + "message": "導向惡意軟體、釣魚網站", + "description": "An entry in the widget used to select the type of issue" + }, + "supportS6Checkbox1": { + "message": "將網頁標記為「NSFW」(工作場所不宜)", + "description": "A checkbox to use for NSFW sites" + }, + "aboutPrivacyPolicy": { + "message": "隱私權條款", + "description": "Link to privacy policy on GitHub (English)" + }, + "aboutChangelog": { + "message": "變更日誌", + "description": "" + }, + "aboutCode": { + "message": "原始碼(GPLv3)", + "description": "English: Source code (GPLv3)" + }, + "aboutContributors": { + "message": "貢獻者", + "description": "English: Contributors" + }, + "aboutSourceCode": { + "message": "原始碼", + "description": "Link text to source code repo" + }, + "aboutTranslations": { + "message": "翻譯", + "description": "Link text to translations repo" + }, + "aboutFilterLists": { + "message": "過濾規則清單", + "description": "Link text to uBO's own filter lists repo" + }, + "aboutDependencies": { + "message": "外部相依套件(與 GPLv3 相容):", + "description": "Shown in the About pane" + }, + "aboutCDNs": { + "message": "uBO 自家的過濾規則清單由下列 CDN 免費代管:", + "description": "Shown in the About pane" + }, + "aboutCDNsInfo": { + "message": "當過濾清單需要更新時,將隨機選擇一組 CDN 連線下載。", + "description": "Shown in the About pane" + }, + "aboutBackupDataButton": { + "message": "備份至檔案…", + "description": "Text for button to create a backup of all settings" + }, + "aboutBackupFilename": { + "message": "my-ublock-backup_{{datetime}}.txt", + "description": "English: my-ublock-backup_{{datetime}}.txt" + }, + "aboutRestoreDataButton": { + "message": "從檔案還原…", + "description": "English: Restore from file..." + }, + "aboutResetDataButton": { + "message": "重設為預設設定…", + "description": "English: Reset to default settings..." + }, + "aboutRestoreDataConfirm": { + "message": "您所有的設定將會被 {{time}} 的備份資料覆蓋,並將重新啟動 uBlock₀。\n\n您確定要用備份資料蓋過目前的所有設定嗎?", + "description": "Message asking user to confirm restore" + }, + "aboutRestoreDataError": { + "message": "無法讀取資料,或資料無效", + "description": "Message to display when an error occurred during restore" + }, + "aboutResetDataConfirm": { + "message": "您所有的設定都將被移除,並將重新啟動 uBlock₀。\n\n您確定要將 uBlock₀ 回復為原廠設定?", + "description": "Message asking user to confirm reset" + }, + "errorCantConnectTo": { + "message": "網路錯誤:{{msg}}", + "description": "English: Network error: {{msg}}" + }, + "subscribeButton": { + "message": "訂閱", + "description": "For the button used to subscribe to a filter list" + }, + "elapsedOneMinuteAgo": { + "message": "1 分鐘前", + "description": "English: a minute ago" + }, + "elapsedManyMinutesAgo": { + "message": "{{value}} 分鐘前", + "description": "English: {{value}} minutes ago" + }, + "elapsedOneHourAgo": { + "message": "1 小時前", + "description": "English: an hour ago" + }, + "elapsedManyHoursAgo": { + "message": "{{value}} 小時前", + "description": "English: {{value}} hours ago" + }, + "elapsedOneDayAgo": { + "message": "1 天前", + "description": "English: a day ago" + }, + "elapsedManyDaysAgo": { + "message": "{{value}} 天前", + "description": "English: {{value}} days ago" + }, + "showDashboardButton": { + "message": "顯示控制台", + "description": "Firefox/Fennec-specific: Show Dashboard" + }, + "showNetworkLogButton": { + "message": "顯示記錄器", + "description": "Firefox/Fennec-specific: Show Logger" + }, + "fennecMenuItemBlockingOff": { + "message": "關閉", + "description": "Firefox-specific: appears as 'uBlock₀ (off)'" + }, + "docblockedTitle": { + "message": "已封鎖頁面", + "description": "Used as a title for the document-blocked page" + }, + "docblockedPrompt1": { + "message": "uBlock Origin 已防止下列頁面載入:", + "description": "Used in the strict-blocking page" + }, + "docblockedPrompt2": { + "message": "因為下列過濾規則:", + "description": "Used in the strict-blocking page" + }, + "docblockedNoParamsPrompt": { + "message": "不帶參數", + "description": "label to be used for the parameter-less URL: https://cloud.githubusercontent.com/assets/585534/9832014/bfb1b8f0-593b-11e5-8a27-fba472a5529a.png" + }, + "docblockedFoundIn": { + "message": "在下列清單找到:", + "description": "English: List of filter list names follows" + }, + "docblockedBack": { + "message": "返回", + "description": "English: Go back" + }, + "docblockedClose": { + "message": "關閉此視窗", + "description": "English: Close this window" + }, + "docblockedDontWarn": { + "message": "不再針對此網站作出警告", + "description": "Label for checkbox in document-blocked page" + }, + "docblockedProceed": { + "message": "停止針對 {{hostname}} 的嚴格封鎖", + "description": "English: Disable strict blocking for {{hostname}} ..." + }, + "docblockedDisableTemporary": { + "message": "暫時", + "description": "English: Temporarily" + }, + "docblockedDisablePermanent": { + "message": "永久", + "description": "English: Permanently" + }, + "docblockedDisable": { + "message": "繼續", + "description": "Button text to navigate to the blocked page" + }, + "docblockedRedirectPrompt": { + "message": "被阻擋的頁面想要重定向到另一個網站。如果您選擇繼續,將直接導航至:{{url}}", + "description": "Text warning about an incoming redirect" + }, + "docblockedReasonLabel": { + "message": "理由:", + "description": "The label which prepend the actual reason why a page was blocked" + }, + "docblockedReasonMalicious": { + "message": "惡意軟體", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonTracker": { + "message": "追蹤器", + "description": "An actual reason why a page was blocked" + }, + "docblockedReasonDisreputable": { + "message": "聲名狼藉", + "description": "An actual reason why a page was blocked" + }, + "cloudPush": { + "message": "匯出至雲端儲存空間", + "description": "tooltip" + }, + "cloudPull": { + "message": "從雲端儲存空間匯入", + "description": "tooltip" + }, + "cloudPullAndMerge": { + "message": "自雲端匯入,並與目前設定合併", + "description": "tooltip" + }, + "cloudNoData": { + "message": "…\n…", + "description": "" + }, + "cloudDeviceNamePrompt": { + "message": "該裝置的名稱:", + "description": "used as a prompt for the user to provide a custom device name" + }, + "advancedSettingsWarning": { + "message": "警告!修改進階設定時,請自負風險。", + "description": "A warning to users at the top of 'Advanced settings' page" + }, + "genericSubmit": { + "message": "送出", + "description": "for generic 'Submit' buttons" + }, + "genericApplyChanges": { + "message": "套用變更", + "description": "for generic 'Apply changes' buttons" + }, + "genericRevert": { + "message": "還原", + "description": "for generic 'Revert' buttons" + }, + "genericBytes": { + "message": "位元組", + "description": "" + }, + "contextMenuBlockElementInFrame": { + "message": "阻擋框架元素中的內容…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuSubscribeToList": { + "message": "訂閱過濾規則清單…", + "description": "An entry in the browser's contextual menu" + }, + "contextMenuTemporarilyAllowLargeMediaElements": { + "message": "暫時允許大型媒體元素", + "description": "A context menu entry, present when large media elements have been blocked on the current site" + }, + "contextMenuViewSource": { + "message": "檢視原始碼…", + "description": "A context menu entry, to view the source code of the target resource" + }, + "shortcutCapturePlaceholder": { + "message": "鍵入快速鍵", + "description": "Placeholder string for input field used to capture a keyboard shortcut" + }, + "genericMergeViewScrollLock": { + "message": "切換是否啟用同步捲動", + "description": "Tooltip for the button used to lock scrolling between the views in the 'My rules' pane" + }, + "genericCopyToClipboard": { + "message": "複製到剪貼簿", + "description": "Label for buttons used to copy something to the clipboard" + }, + "genericSelectAll": { + "message": "全選", + "description": "Label for buttons used to select all text in editor" + }, + "toggleCosmeticFiltering": { + "message": "切換是否啟用元素隱藏過濾規則", + "description": "Label for keyboard shortcut used to toggle cosmetic filtering" + }, + "toggleJavascript": { + "message": "切換 JavaScript", + "description": "Label for keyboard shortcut used to toggle no-scripting switch" + }, + "relaxBlockingMode": { + "message": "放寬封鎖模式", + "description": "Label for keyboard shortcut used to relax blocking mode" + }, + "storageUsed": { + "message": "儲存空間用量:{{value}} {{unit}}", + "description": " In Setting pane, renders as (example): Storage used: 13.2 MB" + }, + "KB": { + "message": "KB", + "description": "short for 'kilobytes'" + }, + "MB": { + "message": "MB", + "description": "short for 'megabytes'" + }, + "GB": { + "message": "GB", + "description": "short for 'gigabytes'" + }, + "clickToLoad": { + "message": "點擊以載入", + "description": "Message used in frame placeholders" + }, + "linterMainReport": { + "message": "錯誤:{{count}}", + "description": "Summary of number of errors as reported by the linter " + }, + "unprocessedRequestTooltip": { + "message": "無法在瀏覽器啟動的時候正確過濾頁面。請重新載入來確保過濾正確。", + "description": "A warning which will appear in the popup panel if needed" + }, + "dummy": { + "message": "此條目須為最後一個", + "description": "so we dont need to deal with comma for last entry" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/about.html b/android/app/src/main/assets/extensions/ublock_origin/about.html new file mode 100644 index 00000000..e747a930 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/about.html @@ -0,0 +1,64 @@ + + + + + + +uBlock — About + + + + + + + + +

+ + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/advanced-settings.html b/android/app/src/main/assets/extensions/ublock_origin/advanced-settings.html new file mode 100644 index 00000000..b55bdbad --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/advanced-settings.html @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + +
+

info-circle +

+   +

+ +
+ + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/asset-viewer.html b/android/app/src/main/assets/extensions/ublock_origin/asset-viewer.html new file mode 100644 index 00000000..5cfc73eb --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/asset-viewer.html @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + +
+ + + spinner + +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/assets/assets.json b/android/app/src/main/assets/extensions/ublock_origin/assets/assets.json new file mode 100644 index 00000000..8c183004 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/assets/assets.json @@ -0,0 +1,970 @@ +{ + "assets.json": { + "content": "internal", + "updateAfter": 13, + "contentURL": [ + "https://raw.githubusercontent.com/gorhill/uBlock/master/assets/assets.json", + "assets/assets.json" + ], + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/ublock/assets.json", + "https://ublockorigin.pages.dev/ublock/assets.json", + "https://cdn.jsdelivr.net/gh/gorhill/uBlock@master/assets/assets.json" + ] + }, + "public_suffix_list.dat": { + "content": "internal", + "updateAfter": 19, + "contentURL": [ + "https://publicsuffix.org/list/public_suffix_list.dat", + "assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat" + ] + }, + "ublock-badlists": { + "content": "internal", + "updateAfter": 29, + "contentURL": [ + "https://ublockorigin.github.io/uAssets/filters/badlists.txt", + "assets/ublock/badlists.txt" + ], + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/badlists.txt", + "https://ublockorigin.pages.dev/filters/badlists.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/badlists.txt" + ] + }, + "ublock-filters": { + "content": "filters", + "group": "default", + "parent": "uBlock filters", + "title": "uBlock filters – Ads", + "tags": "ads", + "contentURL": [ + "https://ublockorigin.github.io/uAssets/filters/filters.txt", + "assets/ublock/filters.min.txt", + "assets/ublock/filters.txt" + ], + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/filters.min.txt", + "https://ublockorigin.pages.dev/filters/filters.min.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/filters.min.txt" + ], + "patchURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/", + "https://ublockorigin.pages.dev/filters/" + ], + "supportURL": "https://github.com/uBlockOrigin/uAssets" + }, + "ublock-badware": { + "content": "filters", + "group": "default", + "parent": "uBlock filters", + "title": "uBlock filters – Badware risks", + "tags": "malware security", + "contentURL": [ + "https://ublockorigin.github.io/uAssets/filters/badware.txt", + "assets/ublock/badware.min.txt", + "assets/ublock/badware.txt" + ], + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/badware.min.txt", + "https://ublockorigin.pages.dev/filters/badware.min.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/badware.min.txt" + ], + "patchURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/", + "https://ublockorigin.pages.dev/filters/" + ], + "supportURL": "https://github.com/uBlockOrigin/uAssets", + "instructionURL": "https://github.com/gorhill/uBlock/wiki/Badware-risks" + }, + "ublock-privacy": { + "content": "filters", + "group": "default", + "parent": "uBlock filters", + "title": "uBlock filters – Privacy", + "tags": "privacy", + "contentURL": [ + "https://ublockorigin.github.io/uAssets/filters/privacy.txt", + "assets/ublock/privacy.min.txt", + "assets/ublock/privacy.txt" + ], + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/privacy.min.txt", + "https://ublockorigin.pages.dev/filters/privacy.min.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/privacy.min.txt" + ], + "patchURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/", + "https://ublockorigin.pages.dev/filters/" + ], + "supportURL": "https://github.com/uBlockOrigin/uAssets" + }, + "ublock-unbreak": { + "content": "filters", + "group": "default", + "parent": "uBlock filters", + "title": "uBlock filters – Unbreak", + "contentURL": [ + "https://ublockorigin.github.io/uAssets/filters/unbreak.txt", + "assets/ublock/unbreak.min.txt", + "assets/ublock/unbreak.txt" + ], + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/unbreak.min.txt", + "https://ublockorigin.pages.dev/filters/unbreak.min.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/unbreak.min.txt" + ], + "patchURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/", + "https://ublockorigin.pages.dev/filters/" + ], + "supportURL": "https://github.com/uBlockOrigin/uAssets" + }, + "ublock-quick-fixes": { + "content": "filters", + "group": "default", + "parent": "uBlock filters", + "title": "uBlock filters – Quick fixes", + "contentURL": [ + "https://ublockorigin.github.io/uAssets/filters/quick-fixes.txt", + "assets/ublock/quick-fixes.min.txt", + "assets/ublock/quick-fixes.txt" + ], + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/quick-fixes.min.txt", + "https://ublockorigin.pages.dev/filters/quick-fixes.min.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/quick-fixes.min.txt" + ], + "patchURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/", + "https://ublockorigin.pages.dev/filters/" + ], + "supportURL": "https://github.com/uBlockOrigin/uAssets" + }, + "ublock-experimental": { + "content": "filters", + "group": "default", + "off": true, + "title": "uBlock filters – Experimental", + "contentURL": "https://ublockorigin.github.io/uAssets/filters/experimental.txt", + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/experimental.min.txt", + "https://ublockorigin.pages.dev/filters/experimental.min.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/experimental.min.txt" + ], + "patchURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/", + "https://ublockorigin.pages.dev/filters/" + ], + "supportURL": "https://github.com/uBlockOrigin/uAssets" + }, + "adguard-generic": { + "content": "filters", + "group": "ads", + "off": true, + "title": "AdGuard – Ads", + "tags": "ads", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/2_without_easylist.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "adguard-mobile": { + "content": "filters", + "group": "ads", + "off": true, + "title": "AdGuard – Mobile Ads", + "tags": "ads mobile", + "ua": "mobile", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/11.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "easylist": { + "content": "filters", + "group": "ads", + "title": "EasyList", + "tags": "ads", + "preferred": true, + "contentURL": [ + "https://ublockorigin.github.io/uAssets/thirdparties/easylist.txt", + "assets/thirdparties/easylist/easylist.txt" + ], + "cdnURLs": [ + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist.txt", + "https://ublockorigin.pages.dev/thirdparties/easylist.txt" + ], + "patchURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/", + "https://ublockorigin.pages.dev/filters/" + ], + "supportURL": "https://easylist.to/" + }, + "adguard-spyware-url": { + "content": "filters", + "group": "privacy", + "off": true, + "title": "AdGuard/uBO – URL Tracking Protection", + "tags": "privacy", + "contentURL": "https://ublockorigin.github.io/uAssets/filters/privacy-removeparam.txt", + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/privacy-removeparam.txt", + "https://ublockorigin.pages.dev/filters/privacy-removeparam.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/privacy-removeparam.txt" + ], + "supportURL": "https://github.com/uBlockOrigin/uAssets" + }, + "block-lan": { + "content": "filters", + "group": "privacy", + "off": true, + "title": "Block Outsider Intrusion into LAN", + "tags": "privacy security", + "contentURL": "https://ublockorigin.github.io/uAssets/filters/lan-block.txt", + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/lan-block.txt", + "https://ublockorigin.pages.dev/filters/lan-block.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/lan-block.txt" + ], + "supportURL": "https://github.com/uBlockOrigin/uAssets" + }, + "easyprivacy": { + "content": "filters", + "group": "privacy", + "title": "EasyPrivacy", + "tags": "privacy", + "preferred": true, + "contentURL": [ + "https://ublockorigin.github.io/uAssets/thirdparties/easyprivacy.txt", + "assets/thirdparties/easylist/easyprivacy.txt" + ], + "cdnURLs": [ + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easyprivacy.txt", + "https://ublockorigin.pages.dev/thirdparties/easyprivacy.txt" + ], + "patchURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/", + "https://ublockorigin.pages.dev/filters/" + ], + "supportURL": "https://easylist.to/" + }, + "urlhaus-1": { + "content": "filters", + "group": "malware", + "title": "Online Malicious URL Blocklist", + "contentURL": [ + "https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-ag-online.txt", + "assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt" + ], + "cdnURLs": [ + "https://curbengh.github.io/malware-filter/urlhaus-filter-ag-online.txt", + "https://malware-filter.gitlab.io/urlhaus-filter/urlhaus-filter-ag-online.txt", + "https://malware-filter.pages.dev/urlhaus-filter-ag-online.txt" + ], + "supportURL": "https://gitlab.com/malware-filter/urlhaus-filter#malicious-url-blocklist" + }, + "curben-phishing": { + "content": "filters", + "group": "malware", + "off": true, + "title": "Phishing URL Blocklist", + "contentURL": "https://malware-filter.gitlab.io/phishing-filter/phishing-filter.txt", + "cdnURLs": [ + "https://curbengh.github.io/phishing-filter/phishing-filter.txt", + "https://malware-filter.gitlab.io/phishing-filter/phishing-filter.txt", + "https://phishing-filter.pages.dev/phishing-filter.txt" + ], + "supportURL": "https://gitlab.com/malware-filter/phishing-filter#phishing-url-blocklist" + }, + "adguard-cookies": { + "content": "filters", + "group": "annoyances", + "group2": "cookies", + "parent": "AdGuard/uBO – Cookie Notices", + "off": true, + "title": "AdGuard – Cookie Notices", + "tags": "annoyances cookies", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/18.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "ublock-cookies-adguard": { + "content": "filters", + "group": "annoyances", + "group2": "cookies", + "parent": "AdGuard/uBO – Cookie Notices", + "off": true, + "title": "uBlock filters – Cookie Notices", + "tags": "annoyances cookies", + "contentURL": "https://ublockorigin.github.io/uAssets/filters/annoyances-cookies.txt", + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/annoyances-cookies.txt", + "https://ublockorigin.pages.dev/filters/annoyances-cookies.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances-cookies.txt" + ], + "supportURL": "https://github.com/uBlockOrigin/uAssets" + }, + "fanboy-cookiemonster": { + "content": "filters", + "group": "annoyances", + "group2": "cookies", + "parent": "EasyList/uBO – Cookie Notices", + "off": true, + "title": "EasyList – Cookie Notices", + "tags": "annoyances cookies", + "preferred": true, + "contentURL": [ + "https://ublockorigin.github.io/uAssets/thirdparties/easylist-cookies.txt", + "https://secure.fanboy.co.nz/fanboy-cookiemonster_ubo.txt" + ], + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-cookies.txt", + "https://ublockorigin.pages.dev/thirdparties/easylist-cookies.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-cookies.txt", + "https://secure.fanboy.co.nz/fanboy-cookiemonster_ubo.txt" + ], + "supportURL": "https://github.com/easylist/easylist#fanboy-lists" + }, + "ublock-cookies-easylist": { + "content": "filters", + "group": "annoyances", + "group2": "cookies", + "parent": "EasyList/uBO – Cookie Notices", + "off": true, + "title": "uBlock filters – Cookie Notices", + "tags": "annoyances cookies", + "preferred": true, + "contentURL": "https://ublockorigin.github.io/uAssets/filters/annoyances-cookies.txt", + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/annoyances-cookies.txt", + "https://ublockorigin.pages.dev/filters/annoyances-cookies.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances-cookies.txt" + ], + "supportURL": "https://github.com/uBlockOrigin/uAssets" + }, + "adguard-social": { + "content": "filters", + "group": "annoyances", + "group2": "social", + "parent": null, + "off": true, + "title": "AdGuard – Social Widgets", + "tags": "annoyances social", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/4.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "fanboy-social": { + "content": "filters", + "group": "annoyances", + "group2": "social", + "parent": null, + "off": true, + "title": "EasyList – Social Widgets", + "tags": "annoyances social", + "preferred": true, + "contentURL": [ + "https://ublockorigin.github.io/uAssets/thirdparties/easylist-social.txt", + "https://secure.fanboy.co.nz/fanboy-social_ubo.txt" + ], + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-social.txt", + "https://ublockorigin.pages.dev/thirdparties/easylist-social.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-social.txt", + "https://secure.fanboy.co.nz/fanboy-social_ubo.txt" + ], + "supportURL": "https://easylist.to/" + }, + "fanboy-thirdparty_social": { + "content": "filters", + "group": "annoyances", + "group2": "social", + "off": true, + "title": "Fanboy – Anti-Facebook", + "tags": "privacy", + "contentURL": "https://secure.fanboy.co.nz/fanboy-antifacebook.txt", + "supportURL": "https://github.com/ryanbr/fanboy-adblock/issues" + }, + "adguard-popup-overlays": { + "content": "filters", + "group": "annoyances", + "parent": "AdGuard – Annoyances", + "off": true, + "title": "AdGuard – Popup Overlays", + "tags": "annoyances", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/19.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "adguard-mobile-app-banners": { + "content": "filters", + "group": "annoyances", + "parent": "AdGuard – Annoyances", + "off": true, + "title": "AdGuard – Mobile App Banners", + "tags": "annoyances mobile", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/20.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "adguard-other-annoyances": { + "content": "filters", + "group": "annoyances", + "parent": "AdGuard – Annoyances", + "off": true, + "title": "AdGuard – Other Annoyances", + "tags": "annoyances", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/21.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "adguard-widgets": { + "content": "filters", + "group": "annoyances", + "parent": "AdGuard – Annoyances", + "off": true, + "title": "AdGuard – Widgets", + "tags": "annoyances", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/22.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "easylist-annoyances": { + "content": "filters", + "group": "annoyances", + "parent": "EasyList – Annoyances", + "off": true, + "title": "EasyList – Other Annoyances", + "tags": "annoyances", + "preferred": true, + "contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-annoyances.txt", + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-annoyances.txt", + "https://ublockorigin.pages.dev/thirdparties/easylist-annoyances.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-annoyances.txt" + ], + "supportURL": "https://github.com/easylist/easylist#fanboy-lists" + }, + "easylist-chat": { + "content": "filters", + "group": "annoyances", + "parent": "EasyList – Annoyances", + "off": true, + "title": "EasyList – Chat Widgets", + "tags": "annoyances", + "preferred": true, + "contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-chat.txt", + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-chat.txt", + "https://ublockorigin.pages.dev/thirdparties/easylist-chat.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-chat.txt" + ], + "supportURL": "https://github.com/easylist/easylist#fanboy-lists" + }, + "fanboy-ai-suggestions": { + "content": "filters", + "group": "annoyances", + "parent": "EasyList – Annoyances", + "off": true, + "title": "EasyList – AI Widgets", + "tags": "annoyances", + "preferred": true, + "contentURL": "https://ublockorigin.github.io/uAssets/thirdparties/easylist-ai.txt", + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-ai.txt", + "https://ublockorigin.pages.dev/thirdparties/easylist-ai.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-ai.txt" + ], + "supportURL": "https://github.com/easylist/easylist#fanboy-lists" + }, + "easylist-newsletters": { + "content": "filters", + "group": "annoyances", + "parent": "EasyList – Annoyances", + "off": true, + "title": "EasyList – Newsletter Notices", + "tags": "annoyances", + "preferred": true, + "contentURL": [ + "https://ublockorigin.github.io/uAssets/thirdparties/easylist-newsletters.txt" + ], + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-newsletters.txt", + "https://ublockorigin.pages.dev/thirdparties/easylist-newsletters.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-newsletters.txt" + ], + "supportURL": "https://easylist.to/" + }, + "easylist-notifications": { + "content": "filters", + "group": "annoyances", + "parent": "EasyList – Annoyances", + "off": true, + "title": "EasyList – Notifications", + "tags": "annoyances", + "preferred": true, + "contentURL": [ + "https://ublockorigin.github.io/uAssets/thirdparties/easylist-notifications.txt" + ], + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/thirdparties/easylist-notifications.txt", + "https://ublockorigin.pages.dev/thirdparties/easylist-notifications.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/thirdparties/easylist-notifications.txt" + ], + "supportURL": "https://easylist.to/" + }, + "ublock-annoyances": { + "content": "filters", + "group": "annoyances", + "off": true, + "title": "uBlock filters – Annoyances", + "tags": "annoyances", + "contentURL": "https://ublockorigin.github.io/uAssets/filters/annoyances.txt", + "cdnURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/annoyances.min.txt", + "https://ublockorigin.pages.dev/filters/annoyances.min.txt", + "https://cdn.jsdelivr.net/gh/uBlockOrigin/uAssetsCDN@main/filters/annoyances.min.txt" + ], + "patchURLs": [ + "https://ublockorigin.github.io/uAssetsCDN/filters/", + "https://ublockorigin.pages.dev/filters/" + ], + "supportURL": "https://github.com/uBlockOrigin/uAssets" + }, + "dpollock-0": { + "content": "filters", + "group": "multipurpose", + "updateAfter": 13, + "off": true, + "title": "Dan Pollock’s hosts file", + "tags": "ads privacy security", + "contentURL": "https://someonewhocares.org/hosts/hosts", + "supportURL": "https://someonewhocares.org/hosts/" + }, + "plowe-0": { + "content": "filters", + "group": "multipurpose", + "updateAfter": 13, + "title": "Peter Lowe’s Ad and tracking server list", + "tags": "ads privacy security", + "preferred": true, + "contentURL": [ + "https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext", + "assets/thirdparties/pgl.yoyo.org/as/serverlist.txt", + "assets/thirdparties/pgl.yoyo.org/as/serverlist" + ], + "supportURL": "https://pgl.yoyo.org/adservers/" + }, + "ALB-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇦🇱al 🇽🇰xk: Adblock List for Albania", + "tags": "ads albania shqipja", + "lang": "sq", + "contentURL": "https://raw.githubusercontent.com/AnXh3L0/blocklist/master/albanian-easylist-addition/Albania.txt", + "supportURL": "https://github.com/AnXh3L0/blocklist" + }, + "ara-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇪🇬eg 🇸🇦sa 🇲🇦ma 🇩🇿dz: Liste AR", + "tags": "ads arabic اَلْعَرَبِيَّةُ‎", + "lang": "ar kab", + "contentURL": "https://easylist-downloads.adblockplus.org/Liste_AR.txt", + "supportURL": "https://forums.lanik.us/viewforum.php?f=98" + }, + "BGR-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇧🇬bg: Bulgarian Adblock list", + "tags": "ads bulgarian България macedonian Македонија", + "lang": "bg mk", + "contentURL": "https://stanev.org/abp/adblock_bg.txt", + "supportURL": "https://stanev.org/abp/" + }, + "CHN-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇨🇳cn 🇹🇼tw: AdGuard Chinese (中文)", + "tags": "ads chinese 中文", + "lang": "ug zh", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/224.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "CZE-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇨🇿cz 🇸🇰sk: EasyList Czech and Slovak", + "tags": "ads czech česká slovak slovenská", + "lang": "cs sk", + "contentURL": "https://raw.githubusercontent.com/tomasko126/easylistczechandslovak/master/filters.txt", + "supportURL": "https://github.com/tomasko126/easylistczechandslovak" + }, + "DEU-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇩🇪de 🇨🇭ch 🇦🇹at: EasyList Germany", + "tags": "ads german deutschland luxembourgish lëtzebuerg romansh", + "lang": "de dsb hsb lb rm", + "contentURL": [ + "https://easylist.to/easylistgermany/easylistgermany.txt", + "https://easylist-downloads.adblockplus.org/easylistgermany.txt" + ], + "supportURL": "https://forums.lanik.us/viewforum.php?f=90" + }, + "EST-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇪🇪ee: Eesti saitidele kohandatud filter", + "tags": "ads estonian", + "lang": "et", + "contentURL": "https://ubo-et.lepik.io/list.txt", + "supportURL": "https://github.com/sander85/uBO-et" + }, + "FIN-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇫🇮fi: Adblock List for Finland", + "tags": "ads finnish", + "lang": "fi", + "contentURL": "https://raw.githubusercontent.com/finnish-easylist-addition/finnish-easylist-addition/gh-pages/Finland_adb.txt", + "supportURL": "https://github.com/finnish-easylist-addition/finnish-easylist-addition" + }, + "FRA-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇫🇷fr 🇧🇪be 🇨🇦ca: AdGuard Français", + "tags": "ads french", + "lang": "ar br ff fr kab lb oc son", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/16.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "GRC-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇬🇷gr 🇨🇾cy: Greek AdBlock Filter", + "tags": "ads greek", + "lang": "el", + "contentURL": "https://www.void.gr/kargig/void-gr-filters.txt", + "supportURL": "https://github.com/kargig/greek-adblockplus-filter" + }, + "HRV-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇭🇷hr 🇷🇸rs: Dandelion Sprout's Serbo-Croatian filters", + "tags": "ads croatian serbian bosnian", + "lang": "bs hr sr", + "contentURL": [ + "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/SerboCroatianList.txt", + "https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/SerboCroatianList.txt" + ], + "supportURL": "https://github.com/DandelionSprout/adfilt#readme" + }, + "HUN-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇭🇺hu: hufilter", + "tags": "ads hungarian", + "lang": "hu", + "contentURL": "https://cdn.jsdelivr.net/gh/hufilter/hufilter@gh-pages/hufilter-ublock.txt", + "supportURL": "https://github.com/hufilter/hufilter" + }, + "IDN-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇮🇩id 🇲🇾my: ABPindo", + "tags": "ads indonesian malay", + "lang": "id ms", + "contentURL": "https://raw.githubusercontent.com/ABPindo/indonesianadblockrules/master/subscriptions/abpindo.txt", + "supportURL": "https://github.com/ABPindo/indonesianadblockrules" + }, + "IND-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇮🇳in 🇱🇰lk 🇳🇵np: IndianList", + "tags": "ads assamese bengali gujarati hindi kannada malayalam marathi nepali punjabi sinhala tamil telugu", + "lang": "as bn gu hi kn ml mr ne pa sat si ta te", + "contentURL": "https://easylist-downloads.adblockplus.org/indianlist.txt", + "supportURL": "https://github.com/mediumkreation/IndianList" + }, + "IRN-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇮🇷ir: PersianBlocker", + "tags": "ads af ir persian pashto tajik tj", + "lang": "fa ps tg", + "contentURL": [ + "https://raw.githubusercontent.com/MasterKia/PersianBlocker/main/PersianBlocker.txt", + "https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt" + ], + "cdnURLs": [ + "https://cdn.jsdelivr.net/gh/MasterKia/PersianBlocker@main/PersianBlocker.txt", + "https://cdn.statically.io/gh/MasterKia/PersianBlocker/main/PersianBlocker.txt" + ], + "supportURL": "https://github.com/MasterKia/PersianBlocker" + }, + "ISL-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇮🇸is: Icelandic ABP List", + "tags": "ads icelandic", + "lang": "is", + "contentURL": "https://raw.githubusercontent.com/brave/adblock-lists/master/custom/is.txt", + "supportURL": "https://github.com/brave/adblock-lists/issues" + }, + "ISR-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇮🇱il: EasyList Hebrew", + "tags": "ads hebrew", + "lang": "he", + "contentURL": "https://raw.githubusercontent.com/easylist/EasyListHebrew/master/EasyListHebrew.txt", + "supportURL": "https://github.com/easylist/EasyListHebrew" + }, + "ITA-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇮🇹it: EasyList Italy", + "tags": "ads italian", + "lang": "fur it lij sc", + "contentURL": "https://easylist-downloads.adblockplus.org/easylistitaly.txt", + "supportURL": "https://forums.lanik.us/viewforum.php?f=96" + }, + "JPN-1": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇯🇵jp: AdGuard Japanese", + "tags": "ads japanese 日本語", + "lang": "ja", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/7.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "KOR-1": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇰🇷kr: List-KR Classic", + "tags": "ads korean 한국어", + "lang": "ko", + "contentURL": "https://cdn.jsdelivr.net/npm/@list-kr/filterslists@latest/dist/filterslist-uBlockOrigin-classic.txt", + "supportURL": "https://github.com/List-KR/List-KR#readme" + }, + "LTU-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇱🇹lt: EasyList Lithuania", + "tags": "ads lithuanian", + "lang": "lt", + "contentURL": "https://raw.githubusercontent.com/EasyList-Lithuania/easylist_lithuania/master/easylistlithuania.txt", + "cdnURLs": [ + "https://cdn.jsdelivr.net/gh/EasyList-Lithuania/easylist_lithuania@master/easylistlithuania.txt", + "https://cdn.statically.io/gh/EasyList-Lithuania/easylist_lithuania/master/easylistlithuania.txt" + ], + "supportURL": "https://github.com/EasyList-Lithuania/easylist_lithuania" + }, + "LVA-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇱🇻lv: Latvian List", + "tags": "ads latvian", + "lang": "lv", + "contentURL": "https://raw.githubusercontent.com/Latvian-List/adblock-latvian/master/lists/latvian-list.txt", + "supportURL": "https://github.com/Latvian-List/adblock-latvian" + }, + "MKD-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇲🇰mk: Macedonian adBlock Filters", + "tags": "ads macedonian", + "lang": "mk", + "contentURL": "https://raw.githubusercontent.com/DeepSpaceHarbor/Macedonian-adBlock-Filters/master/Filters", + "supportURL": "https://github.com/DeepSpaceHarbor/Macedonian-adBlock-Filters" + }, + "NLD-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇳🇱nl 🇧🇪be: AdGuard Dutch", + "tags": "ads afrikaans be belgië frisian dutch flemish nederlands netherlands nl sr suriname za", + "lang": "af fy nl", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/8.txt", + "cdnURLs": null, + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "NOR-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇳🇴no 🇩🇰dk 🇮🇸is: Dandelion Sprouts nordiske filtre", + "tags": "ads norwegian danish icelandic", + "lang": "nb nn no da is", + "contentURL": [ + "https://raw.githubusercontent.com/DandelionSprout/adfilt/master/NorwegianList.txt", + "https://cdn.jsdelivr.net/gh/DandelionSprout/adfilt@master/NorwegianList.txt" + ], + "supportURL": "https://github.com/DandelionSprout/adfilt" + }, + "POL-0": { + "content": "filters", + "group": "regions", + "parent": "🇵🇱pl: Oficjalne Polskie Filtry", + "off": true, + "title": "🇵🇱pl: Oficjalne Polskie Filtry do uBlocka Origin", + "tags": "ads polish polski", + "lang": "szl pl _", + "contentURL": "https://raw.githubusercontent.com/MajkiIT/polish-ads-filter/master/polish-adblock-filters/adblock.txt", + "supportURL": "https://github.com/MajkiIT/polish-ads-filter" + }, + "POL-3": { + "content": "filters", + "group": "regions", + "parent": "🇵🇱pl: Oficjalne Polskie Filtry", + "off": true, + "title": "🇵🇱pl: CERT.PL's Warning List", + "tags": "malware polish polski", + "lang": "szl pl", + "contentURL": "https://hole.cert.pl/domains/v2/domains_ublock.txt", + "supportURL": "https://cert.pl/lista-ostrzezen/" + }, + "ROU-1": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇷🇴ro 🇲🇩md: Romanian Ad (ROad) Block List Light", + "tags": "ads romanian română moldavian moldovenească молдовеняскэ", + "lang": "ro", + "contentURL": [ + "https://raw.githubusercontent.com/tcptomato/ROad-Block/master/road-block-filters-light.txt" + ], + "supportURL": "https://github.com/tcptomato/ROad-Block" + }, + "RUS-0": { + "content": "filters", + "group": "regions", + "parent": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList", + "off": true, + "title": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList", + "tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek uk", + "lang": "be kk tt ru uz", + "contentURL": "https://raw.githubusercontent.com/easylist/ruadlist/master/RuAdList-uBO.txt", + "cdnURLs": [ + "https://cdn.jsdelivr.net/gh/dimisa-RUAdList/RUAdListCDN@main/lists/ruadlist.ubo.min.txt", + "https://raw.githubusercontent.com/dimisa-RUAdList/RUAdListCDN/main/lists/ruadlist.ubo.min.txt" + ], + "supportURL": "https://forums.lanik.us/viewforum.php?f=102", + "instructionURL": "https://forums.lanik.us/viewtopic.php?f=102&t=22512" + }, + "RUS-1": { + "content": "filters", + "group": "regions", + "parent": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList", + "off": true, + "title": "🇷🇺ru 🇺🇦ua 🇺🇿uz 🇰🇿kz: RU AdList: Counters", + "tags": "ads belarusian беларуская kazakh tatar russian русский ukrainian українська uzbek be kk tt ru uk uz", + "contentURL": "https://raw.githubusercontent.com/easylist/ruadlist/master/cntblock.txt", + "cdnURLs": [ + "https://cdn.jsdelivr.net/gh/easylist/ruadlist@master/cntblock.txt", + "https://raw.githubusercontent.com/easylist/ruadlist/master/cntblock.txt" + ], + "supportURL": "https://forums.lanik.us/viewforum.php?f=102", + "instructionURL": "https://forums.lanik.us/viewtopic.php?f=102&t=22512" + }, + "spa-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇪🇸es 🇦🇷ar 🇲🇽mx 🇨🇴co: EasyList Spanish", + "tags": "ads aragonese basque catalan spanish español galician guarani", + "lang": "an ast ca cak es eu gl gn trs quz", + "contentURL": "https://easylist-downloads.adblockplus.org/easylistspanish.txt", + "supportURL": "https://forums.lanik.us/viewforum.php?f=103" + }, + "spa-1": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇪🇸es 🇦🇷ar 🇧🇷br 🇵🇹pt: AdGuard Spanish/Portuguese", + "tags": "ads aragonese basque catalan spanish español galician guarani portuguese português", + "lang": "an ast ca cak es eu gl gn trs pt quz", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/9.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "SVN-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇸🇮si: Slovenian List", + "tags": "ads slovenian slovenski", + "lang": "sl", + "contentURL": "https://raw.githubusercontent.com/betterwebleon/slovenian-list/master/filters.txt", + "supportURL": "https://github.com/betterwebleon/slovenian-list" + }, + "SWE-1": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇸🇪se: Frellwit's Swedish Filter", + "tags": "ads swedish svenska", + "lang": "sv", + "contentURL": "https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/master/Frellwits-Swedish-Filter.txt", + "cdnURLs": [ + "https://raw.githubusercontent.com/lassekongo83/Frellwits-filter-lists/swefilter/swefilter.min.txt", + "https://cdn.jsdelivr.net/gh/lassekongo83/Frellwits-filter-lists@swefilter/swefilter.min.txt" + ], + "supportURL": "https://github.com/lassekongo83/Frellwits-filter-lists" + }, + "THA-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇹🇭th: EasyList Thailand", + "tags": "ads thai ไทย", + "lang": "th", + "contentURL": "https://raw.githubusercontent.com/easylist-thailand/easylist-thailand/master/subscription/easylist-thailand.txt", + "supportURL": "https://github.com/easylist-thailand/easylist-thailand" + }, + "TUR-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇹🇷tr: AdGuard Turkish", + "tags": "ads turkish türkçe", + "lang": "tr", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/13.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "UKR-0": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇺🇦ua: AdGuard Ukrainian", + "tags": "ads ukraine україна", + "lang": "uk", + "contentURL": "https://filters.adtidy.org/extension/ublock/filters/23.txt", + "supportURL": "https://github.com/AdguardTeam/AdguardFilters#adguard-filters" + }, + "VIE-1": { + "content": "filters", + "group": "regions", + "off": true, + "title": "🇻🇳vn: ABPVN List", + "tags": "ads vietnamese việt", + "lang": "vi", + "contentURL": "https://raw.githubusercontent.com/abpvn/abpvn/master/filter/abpvn_ublock.txt", + "supportURL": "https://abpvn.com/" + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/easylist/easylist.txt b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/easylist/easylist.txt new file mode 100644 index 00000000..8943205c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/easylist/easylist.txt @@ -0,0 +1,78526 @@ +[Adblock Plus 2.0] +! Title: EasyList +! Expires: 6 days (update frequency) +! Last modified: Wed, 08 Jul 2026 11:30:11 +0000 +! Diff-Path: %diffpath%#easylist +! Diff-Expires: 317 minutes +! *** easylist:template_header.txt *** +! +! Please report any unblocked adverts or problems +! in the forums (https://forums.lanik.us/) +! or via e-mail (easylist@protonmail.com). +! +! Homepage: https://easylist.to/ +! Licence: https://easylist.to/pages/licence.html +! GitHub issues: https://github.com/easylist/easylist/issues +! GitHub pull requests: https://github.com/easylist/easylist/pulls +! +!-----------------------General advert blocking filters-----------------------! +! *** easylist:easylist/easylist_general_block.txt *** +&rb=&uuid=$third-party +&subaffid=%$subdocument,third-party +-ad-manager/$~stylesheet +-ad-sidebar.$image +-ad.jpg.pagespeed.$image +-ads-manager/$domain=~wordpress.org +-ads/assets/$script,domain=~web-ads.org +-assets/ads.$~script +-banner-ads-$~script +-contrib-ads.$~stylesheet +-sponsor-ad.$image +-web-advert-$image +.adriver.$~object,domain=~adriver.co +.ads.controller.js$script +.advert.$domain=~advert.ae|~advert.ge|~advert.io|~advert.ly|~advert.media|~advert.org.pl +.ar/ads/$~xmlhttprequest +.ashx?AdID= +.aspx?adid= +.az/adv/$~xmlhttprequest +.biz/?ce=$third-party +.biz/?re=$third-party +.biz/?te=$third-party +.br/ads/$~xmlhttprequest +.ca/ads/$~xmlhttprequest +.cc/process.js?id=$third-party +.cfm?ad= +.cgi?ad= +.click/cuid/?$third-party +.click/rf/$third-party +.club/js/popunder.js$script +.cn/sc/*?n=$script,third-party +.com/*=bT1zdXY1JnI9 +.com/*markerclusterer_compiled.js$script,third-party +.com/1784b8bs/ +.com/4/js/$third-party +.com/ad/$~image,third-party,domain=~espn.com|~mediaplex.com|~warpwire.com|~wsj.com +.com/adv/$domain=~adv.asahi.com|~advantabankcorp.com|~alltransistors.com|~archiproducts.com|~tritondigital.com +.com/api/posts?token=$third-party +.com/b.js| +.com/bn.js$third-party +.com/exload.js +.com/in.js$third-party +.com/on.js$third-party +.com/sc/*?n=$script,third-party +.com/script/a.js$third-party +.com/script/asset.js$third-party +.com/script/cdn.js$third-party +.com/script/compatibility.js$third-party +.com/script/document.js$third-party +.com/script/file.js$third-party +.com/script/foundation.js$third-party +.com/script/frustration.js$third-party +.com/script/image.js$third-party +.com/script/mui.js$third-party +.com/script/script.js$third-party +.com/script/utils.js$third-party +.com/script/xbox.js$third-party +.com/smartpop/$third-party +.com/submit.min.js?abvar= +.com/watch.*.js?key= +.cz/adv/$image,domain=~caoh.cz +.cz/affil/$image +.cz/bannery/$image +.fuse-cloud.com/$~xmlhttprequest +.html?clicktag= +.in/js/footer_ad.js +.jp/ads/$third-party,domain=~hs-exp.jp +.lol/js/pub.min.js$third-party +.lol/sw.js$third-party +.net/ad2/$~xmlhttprequest +.org/ad/$domain=~ylilauta.org +.org/ads/$~xmlhttprequest +.org/script/compatibility.js$third-party +.php?ad= +.php?adsid= +.php?adv= +.php?clicktag= +.php?zone_id=$~xmlhttprequest +.php?zoneid=$script +.pk/ads/$~xmlhttprequest +.pw/ads/$~xmlhttprequest +.ru/ads/$~xmlhttprequest,domain=~limehd.tv|~litehd.tv|~pervyi-tv.online|~russia-tv.online|~shadowcore.ru|~tvzvezda.ru +.shop/gd/$third-party +.shop/tsk/$third-party +.today/process.js?id= +.top/cuid/?$third-party +.top/gd/*?md=$third-party +/88/tag.min.js +/?abt_opts=1& +/?fp=*&poru=$subdocument +/?view=ad +/_fd?subid1=$xmlhttprequest +/a-ads.$third-party +/a/?ad= +/a/display.php?$script +/aclib.js$script +/ad--unit.htm| +/ad-choices-$image +/ad-choices.png$image +/ad-scripts--$script +/ad-scroll.js$script +/ad-server.$~script +/ad.cgi?$~xmlhttprequest +/ad.css?$stylesheet +/ad.html?$~xmlhttprequest +/ad/ad_common.js$script +/ad/getban?$script +/ad/image/*$image +/ad/images/*$image,domain=~studiocalling.it +/ad/img/*$image,domain=~eki-net.com|~jiji.com +/ad300.jpg$image +/ad728.png$image +/ad?count= +/ad_728.jpg$image +/ad_728.js$script +/ad_banner/*$image,domain=~ccf.com.cn +/ad_bottom.jpg$image +/ad_bottom.js$script +/ad_counter.aspx$ping +/ad_header.js$script +/ad_images/*$image,domain=~5nd.com|~dietnavi.com +/ad_img/*$image +/ad_manager/*$image,script +/ad_pos= +/ad_position= +/ad_right.$subdocument +/ad_rotator/*$image,script,domain=~spokane.exchange +/ad_server.cgi$subdocument +/ad_side.$~xmlhttprequest +/ad_skyscraper.gif$image +/ad_top.jpg$image +/adanalytics.js$script +/adaptive_components.ashx?type=ads& +/adaptvadplayer.js$script +/adasync.js$script +/adasync.min.js$script +/adbanners/*$image +/adblock/frontend_loader.js +/adchoice.png$image +/adcount.js$script +/addyn|*;adtech; +/addyn|*|adtech; +/adengine.js$script +/adfox/loader.js$script +/adfx.loader.bind.js? +/adhandler/*$~subdocument +/adiframe|*|adtech; +/adimage.$image,script,stylesheet +/adimages.$script +/adjs.php$script +/adlayer.php$script +/adlog.php$image +/admanager.js$script +/admanager.min.js$script +/admanager/*$~object,~xmlhttprequest,domain=~admanager.line.biz|~blog.google|~sevio.com +/admgr.js$script +/admitad.js$script +/adocean.js$script +/adpartner.min.js$script +/adplayer.$script,domain=~adplayer.pro +/adrecover-new.js$script +/adrecover.js$script +/adright.$~xmlhttprequest,domain=~aaahaltontaxi.ca|~adright.com +/ads-250.$image +/ads-common.$image,script +/ads-front.min.js$script +/ads-frontend.min.js$script +/ads-native.js$script +/ads-templateslist.$script +/ads-vast-vpaid.js?$script +/ads.bundle.js$script +/ads.bundle.min.js$script +/ads.cfm?$subdocument +/ads.jplayer.$stylesheet +/ads.pl?$~xmlhttprequest +/ads/!rotator/* +/ads/300.$subdocument +/ads/acctid= +/ads/banners/*$image +/ads/cbr.js$script +/ads/custom_ads.js$script +/ads/footer.$~xmlhttprequest +/ads/gam_prebid-$script +/ads/get-ads-by-zones/?zones% +/ads/image/*$image +/ads/images/*$image,domain=~eoffcn.com +/ads/index.$~xmlhttprequest +/ads/index/*$~xmlhttprequest,domain=~kuchechina.com +/ads/leaderboard-$~xmlhttprequest +/ads/rectangle_$subdocument +/ads/serve?$script +/ads/show.$script +/ads/slideup.$script +/ads/spacer.$image +/Ads/sponsor.$stylesheet +/ads/square-$image,domain=~spoolimports.com +/ads/ta_wppas/*$third-party +/ads/targeted| +/ads/video/*$script +/ads1.$~xmlhttprequest,domain=~ads-i.org +/ads468.$image +/ads468x60.$image +/ads728.$image +/ads728x90.$image +/ads?client= +/ads?id= +/ads?object_$script +/ads?param= +/ads?zone= +/ads?zone_id= +/ads_banners/*$image +/ads_bg.$image +/ads_controller.js$script +/ads_iframe.$subdocument +/ads_image/*$image +/ads_images/*$image,domain=~wildlifeauctions.co.za +/adsAPI.js$script +/adsbanner-$image +/adsbanner/*$image +/adscontroller.js$script +/adscroll.js$script +/adsdelivery/*$subdocument +/adserve/*$script +/adserver.$~stylesheet,~xmlhttprequest,domain=~konograma.com +/adserver3.$image,script +/adsforwp-front.min.css$stylesheet +/adsimage/*$image,domain=~kamaz-service.kz|~theatreticketsdirect.co.uk +/adsimages/*$image,domain=~bdjobstoday.com +/adsimg/*$image +/adslide.js$script +/adsmanager.css$stylesheet +/adsmanager.nsf/*$image +/adsplugin/js/*$script +/adsscript.$script +/adsTracking.$script +/adsWrapper.js$script +/ads~adsize~ +/adtech; +/adtools.js$script +/adtrack.$domain=~adtrack.ca|~adtrack.yacast.fr +/adultdvdparadisecompopinsecound.js$script +/adunit/track-view| +/adutil.js$script +/adv-banner-$image +/adv-scroll-sidebar.js$script +/adv-scroll.$script +/adv_out.js$third-party +/adv_vert.js$script +/AdvAdsV3/*$script,stylesheet +/advanced-ads-layer/public/assets/js/layer.js +/advanced-ads-pro.js$script +/advanced-ads-pro.min.js$script +/advanced-ads-pro/assets/dist/front.js$script +/advanced-ads-pro/assets/js/postscribe.js$script +/advanced-ads-pro/modules/*$script +/advanced-ads-sticky-ads/assets/dist/sticky.js$script +/advanced-ads-tracking/assets/dist/delayed.js$script +/advanced-ads-tracking/assets/dist/tracking.js$script +/advanced-ads/public/assets/js/advanced.min.js$script +/advbanner.frontend.js$script +/advert.$~script,~xmlhttprequest,domain=~advert.ae|~advert.club|~advert.com.tr|~advert.ee|~advert.ge|~advert.io|~advert.media|~advert.org.pl|~motortrader.com.my +/advertising/ad-shield.js$script +/advertising/banners/*$image +/adverts.$~script,~xmlhttprequest,domain=~0xacab.org|~adverts.ie|~adverts.org.ua|~github.com|~gitlab.com +/adverts/*$~xmlhttprequest +/advrotator_banner_largo.htm$subdocument +/adz/js/adz.$script +/aff/banners/*$image +/aff/images/*$image +/aff_ad?$script +/aff_banner/*$image +/aff_banners/*$image +/affbanners/*$image +/affiliate/ad/*$image +/affiliate/ads/*$image +/affiliate/banner/*$image +/affiliate/banners/*$image +/affiliateads/*$image +/affiliates/banner$image +/afr.php?$~xmlhttprequest +/afx_prid/*$script +/ajax/banner/vpn|$xmlhttprequest +/ajax/banners?page=$~third-party,xmlhttprequest +/ajax/embed-4/banners|$xmlhttprequest +/ajs.php?$script +/ajs?zoneid= +/amazon-ad-link-$stylesheet +/amazon-associates-link-$~stylesheet +/amazonjs.css? +/amp-ad-$script +/amp-auto-ads-$script +/amp-connatix-$script +/amp-sticky-ad-$script +/amp-story-auto-ads-$script +/amp4ads-host-v0.js$script +/ane-popup-1/ane-popup.js$script +/ane-popup-banner.js$script +/api.ads.$script,domain=~ads.instacart.com|~www.ads.com +/api/ad.$script +/api/direct/*?s1=$script +/api/ipv4check?$xmlhttprequest +/api/users?token=$subdocument,third-party +/api/v2/items/*?ev= +/apopwin.js$script +/apstag.js$script +/apu.php?$script +/asset/ad/*$image +/assets/ads/*$~image,domain=~outlook.live.com +/asyncjs.php$script +/asyncspc.php$third-party +/awaps-ad-sdk-$script +/ban.php?$~xmlhttprequest +/ban728x90.$image +/banman/ad.aspx$image +/banner-ad.$~script,~xmlhttprequest +/banner-ads-rotator/*$script,stylesheet +/banner-ads/*$image,domain=~1agosto.com +/banner-affiliate-$image +/banner.asp?$third-party +/banner.cgi?$image +/banner.php$~xmlhttprequest,domain=~research.hchs.hc.edu.tw +/banner/affiliate/*$image,subdocument +/banner/html/zone?zid= +/banner_468.$image +/banner_ads/*$~xmlhttprequest,domain=~clickbd.com +/bannerads/*$~xmlhttprequest,domain=~coldwellbankerhomes.com +/banners.cgi?$~xmlhttprequest +/banners/468$image +/banners/728$image +/banners/ads-$~xmlhttprequest +/banners/ads.$~xmlhttprequest +/banners/adv/*$~xmlhttprequest +/banners/affil/*$image +/banners/affiliate/*$image +/bitmovinplayer-advertising-ima.js +/bobs/iframe.php?site= +/bottom-ads.jpg$image,domain=~saltwaterisland.com +/bottom-ads.png$image +/bottomad.png$image +/bottomads.js$script +/bsa-plugin-pro-scripteo/frontend/js/script.js$script +/bsa-pro-scripteo/frontend/js/script.js$script +/btag.min.js$third-party +/bundle/trafee/prelands/* +/buysellads.js$script +/calcalist_gpt_ads.js$script +/campaigns-ad/js/*$script +/cgi-bin/ad/*$~xmlhttprequest +/click?adv= +/code/https-v2.js?uid= +/code/native.js?h=$script +/code/pops.js?h=$script +/code/silent.js?h=$script +/common/ad.js$script +/concert_ads-$script +/content/ads/*$~xmlhttprequest +/css/ads-$stylesheet +/css/adsense.$stylesheet +/css/adv.$stylesheet +/curveball/ads/*$image +/custjs_new.js?4 +/customer/ads/ad.php?id= +/deliverad/fc.js$script +/delivery.php?zone= +/delivery/ag.php$script,subdocument +/delivery/apu.php$script,subdocument +/delivery/avw.php$script,subdocument +/delivery/fc.php$script,subdocument +/delivery/lg.php$image,script,subdocument +/dfp.min.js$third-party +/dfp_async.js$script +/dfpNew.min.js$script +/didna_config.js$script +/direct.hd?n= +/discourse-adplugin-$script +/dist/adscript.js$script +/dmcads_$script +/drsup-admanager-ajax.js$script +/ec5bcb7487ff.js$script +/exitpop.js$script +/exitpopup.js$script +/exitsplash.php$script +/exoads/*$script +/exoclick.$~script,~xmlhttprequest,domain=~exoclick.bamboohr.co.uk|~exoclick.kayako.com +/exonb/*$script +/exonob/*$script +/exowb/froload.js$script +/exowb/fromload.js$script +/exowb/fronload.js$script +/exowb/frontload.js$script +/exowb/frosload.js$script +/exowb/frotload.js$script +/exports/tour/*$third-party +/exports/tour_20/*$subdocument +/external/ad.$script +/external/ads/*$image +/fel456.js$script +/fgh1ijKl.js$script +/flashad.asp$subdocument +/flashad.js$script +/float_ad.js$script +/floatads.$script +/floating-ad-rotator-$script,stylesheet +/floatingad.js$script +/floatingads.js$script +/footer_ads.php$subdocument +/footerads.php$script +/fro_lo.js$script +/ftt2/js.php$script +/funcript*.php?pub= +/gdpr-ad-script.js$script +/geniee-adblock.js$script +/get/?go=1&data=$subdocument +/get?go=1&data=$subdocument +/globals_ps_afc.js$script +/google_adsense-$script +/gospel2Truth.js$third-party +/gpt.js$script +/gpt_ads-public.js$script +/GunosyAdsSDKv2.js$script +/house-ads/*$image +/hoverad.js$script +/hserver/channel= +/hserver/site= +/ht.js?site_$script +/image/ad/*$image +/image/ads/*$image,domain=~edatop.com +/image/affiliate/*$image +/imageads/*$image +/images/gen/etherscan-sm.gif +/images2/Ads/*$image +/img/ad/*$~xmlhttprequest,domain=~novelgame.jp|~weblio.jp +/img/aff/*$image +/img_ad/*$image,domain=~daily.co.jp|~ehonnavi.net +/in/?tour=$third-party +/in/show/?mid=$third-party +/in/show/?tag_ab=$third-party +/include/ad/*$script +/includes/ads/*$script +/index-ad-$stylesheet +/index-ad.js$script +/index_ad/*$image +/infinity.js.aspx?$script +/inhouse_ads/*$image +/inlineads.aspx$subdocument +/internAds.css$stylesheet +/istripper.gif$image +/jquery.adi.js +/jquery.adx.js? +/jquery.dfp.js? +/jquery.dfp.min.js? +/jquery.lazyload-ad-$script +/jquery.lazyload-ad.js +/jquery.meerkat. +/jquery.openxtag.js +/jquery.overlayad.js +/jquery.popunder.js +/js/advRotator.js$script +/js/dfp.js$script +/js/doubleclick.min.js?v= +/js/flyad.js +/js/frontend_loader.js +/js/popunder.js$third-party +/js/pushjs/1.0.0/subscriber.js +/jsAds-1.4.min.js +/jshexo.hj?lb= +/jspopunder.js$script +/jspopunder.min.js$script +/lazyad-loader.js$script +/lazyad-loader.min.js$script +/left_ads.js$script +/leftad.js$script +/leftad.png$image +/legion-advertising-atlasastro/*$script +/li.blogtrottr.com/imp?$image +/link?z=$subdocument +/lmaz-ads-bannesr/*$script +/mads.php$subdocument +/mai-publisher-ads.js$script +/maven/am.js$script +/media/ads/*$image,domain=~puzzler.com +/media_ads/*$image +/microad.js$script +/mnpw3.js$script +/mod_ijoomla_adagency_zone/*$~xmlhttprequest +/mod_pagepeel_banner/*$image,script +/module-ads-html-$script +/module/ads/*$~xmlhttprequest +/modules/ad/*$~xmlhttprequest +/modules/ads/*$~xmlhttprequest +/mol-adverts-delayed.js$script +/MPUAdHelper.js$script +/mw.min.js?z=$third-party +/mysimpleads/mysa_output.php$script +/native/ts-master.$subdocument +/nativeads-v2.js$script +/nativeads.js$script +/nativeads/script/*$script +/nativebanner/ane-native-banner.js$script +/nb/frot_lud.js$script +/neverblock/*$script +/new/floatadv.js$script +/ntv.json?key= +/nwm-pw2.min.js$script +/nxst-advertising/dist/htlbid-advertising.min.js +/oiopub-direct/js.php$script +/oncc-ad.js$script +/oncc-adbanner.js$script +/p?zoneId= +/page-peel$~xmlhttprequest +/pagead/1p-user-list/*$image +/pagead/conversion.js$script +/pageear.js$script +/pageear/*$script +/pagepeel.$~xmlhttprequest +/pagepeelpro.js?$script +/partnerads/js/*$script +/partneradwidget.$subdocument +/partnerbanner.$~xmlhttprequest,domain=~toltech.cn +/partners/ads/*$image +/peel.php?$script +/peelads/*$script +/pfe/current/*$third-party +/pgout.js +/phpads/*$script +/phpadsnew/*$image,script +/phpbb_ads/*$~xmlhttprequest +/pix/ads/*$image +/pixel/puclc?$third-party +/pixel/pure$third-party +/pixel/purs?$third-party +/pixel/purst?$third-party +/pixel/sbe?$third-party +/player/ads/*$~xmlhttprequest +/player/video.js/videojs-vast-vpaid/* +/plg_adbutlerads/*$script,stylesheet +/plugin/ad/*$script +/plugins/ad-invalid-click-protector/*$script +/plugins/adrotate-pro-latest/*$script +/plugins/adrotate-pro/*$script +/plugins/adrotate/*$script +/plugins/ads/*$~xmlhttprequest +/plugins/adsanity-$stylesheet +/plugins/advanced-ads/public/*$domain=~transinfo.pl|~wordpress.org +/plugins/ane-banners-entre-links/*$script,stylesheet +/plugins/ane-preroll$~xmlhttprequest +/plugins/cactus-ads/*$script,stylesheet +/plugins/cpx-advert/*$script +/plugins/dx-ads/*$script +/plugins/easyazon-$script,stylesheet +/plugins/meks-easy-ads-widget/*$stylesheet +/plugins/mts-wp-in-post-ads/*$script,stylesheet +/plugins/popunderpro/*$script +/plugins/thirstyaffiliates/*$script,stylesheet +/plugins/ultimate-popunder/*$~stylesheet +/pogoadkit.js +/pop_8/pop_8_$script +/popin-min.js$script +/popunder/in/click/* +/popunder1.js$script +/popunder1000.js$script +/popup-domination/*$script +/popup2.js$script +/popup3.js$script +/popup_ad.js$script +/popup_code.php$script +/popupads.js$script +/prbt/v1/ads/?_= +/prism_ad/*$script +/processing/impressions.asp?$image +/production/ad-$script +/production/ads/*$script +/promo.php?c=$third-party +/promo/ads/*$~xmlhttprequest +/promo/next/mural/* +/promotools.$subdocument +/public/ad/*$image +/public/ads/*$image +/publicidad/*$~xmlhttprequest +/publicidade.$~xmlhttprequest +/publicidade/*$~xmlhttprequest +/publicidades/*$~xmlhttprequest +/push/p.js?$third-party +/rad_singlepageapp.js$script +/rb/agent2.php?spot= +/RdmAdFeed.js$script +/rdrr/renderer.js$third-party +/RealMedia/ads/*$~xmlhttprequest +/redirect/?spot_id=$third-party +/reklam/*$~xmlhttprequest,domain=~cloudflare.com|~github.com|~reklam.com.tr +/reklama2.jpg$image +/reklama2.png$image,domain=~aerokuz.ru +/reklama3.jpg$image +/reklama3.png$image +/reklama4.jpg$image +/reklama4.png$image +/reklame/*$~xmlhttprequest +/ren.gif?$image +/resource?zones= +/resources/ads/*$~xmlhttprequest +/responsive/ad_$subdocument +/responsive_ads.js$script +/revopush_v2.js +/right_ads.$~xmlhttprequest +/rightad.js$script +/s.ashx?btag$script +/sbar.json?key= +/sc-tagmanager/*$script +/script/aclib.js$third-party +/script/antd.js$third-party +/script/app_settings.js$third-party +/script/atg.js$third-party +/script/atga.js$third-party +/script/g0D.js$third-party +/script/g0dL0vesads.js$third-party +/script/intrf.js$third-party +/script/ippg.js$third-party +/script/java.php?$third-party,xmlhttprequest +/script/jeSus.js$third-party +/script/liB1.js$third-party +/script/liB2.js$third-party +/script/naN.js$third-party +/script/native_render.js$third-party +/script/native_server.js$third-party +/script/npa2.min.js$third-party +/script/nwsu.js$third-party +/script/suv4r.js$third-party +/script/thankYou.js$third-party +/script/uBlock.js$third-party +/script/wait.php?*=$xmlhttprequest +/script/xxAG1.js$third-party +/scripts/FlyAd.js +/scripts/js3caf.js$script +/scripts/lchjs.php? +/scripts/tr2.min.js +/sdk/push_web/?zid=$third-party +/servead/request/*$script,subdocument +/serveads.php$script +/servlet/view/*$script +/set_adcode?$image +/show-ad.js$script +/show_ad.js$script +/showban.asp?$image +/showbanner.js$script +/side-ads-$~xmlhttprequest +/side-ads/*$~xmlhttprequest +/side_ads/*$~xmlhttprequest +/sidead.js$script +/sidead1.js$script +/sideads.js$script +/sidebar_ad.jpg$image +/sidebar_ad.png$image +/sidebar_ads/*$~xmlhttprequest +/site=*/size=*/viewid= +/site=*/viewid=*/size= +/size=*/random=*/viewid= +/skin/ad/*$image,script +/skin/adv/*$~xmlhttprequest +/skyscraperad.$image +/slide_in_ads_close.gif$image +/sliderad.js$script +/small_ad.$image,domain=~eh-ic.com +/sp/delivery/*$script +/spacedesc= +/spc.php?$script +/spcjs.php$script +/special/specialCtrl.js$script +/sponsor-ad$image +/sponsorad.jpg$image +/sponsorad.png$image,domain=~hmassoc.org +/sponsored_link.gif$image +/sponsors/ads/*$image +/squaread.jpg$image +/sr/*/SAFEFRAME.html?ule=$subdocument,third-party +/sticky_ads.js$script +/stickyad.js$script +/storage/js/videojs.sda.js$script +/style_ad.css$stylesheet +/suurl4.php?$third-party +/suurl5.php$third-party +/suv4.js$third-party +/suv5.js$third-party +/Sw_commonAD.js$script +/taboola-footer.js$script +/taboola-header.js$script +/taboola_8.9.1.js$script +/tag.min.js?z=$third-party +/targetingAd.js$script +/targetpushad.js$script +/tmbi-a9-header-$script +/tncms/ads/*$script +/tnt.ads.$script +/top-ad.$~xmlhttprequest +/top_ad.$~xmlhttprequest,domain=~sunco.co.jp +/top_ads.$~xmlhttprequest +/topad.html$subdocument +/triadshow.asp$script,subdocument +/ttj?id= +/umd/advertisingWebRenderer.min.js$script +/ut.js?cb= +/utx?cb=$third-party +/v/image.php?spot=$image +/v2/a/push/js/*$third-party +/v2/a/skm/*$third-party +/vast.php?idzone=$xmlhttprequest +/vast/?zid= +/velvet_stack_cmp.js$script +/vendor/doubleclick.min.js +/vendors~ads. +/video_ads.$script +/videoad.$~xmlhttprequest,domain=~videoad.in +/videoad/*$script +/videoads/*$~xmlhttprequest +/videojs.ads-$script,stylesheet +/videojs.ads.css$stylesheet +/view/ad/*$subdocument +/view_banner.php$image +/virtuagirlhd.$image +/watchnew?key=$subdocument,third-party +/waWQiOjE*=eyJ.js^$third-party +/web/ads/*$image +/web_ads/*$image +/webads/*$image,domain=~cccc.edu|~meatingplace.com +/widget-advert?$subdocument +/wordpress-ads-plug-in/*$script,stylesheet +/wp-auto-affiliate-links/*$script,stylesheet +/wp-bannerize-$script,stylesheet +/wp-bannerize.$script,stylesheet +/wp-bannerize/*$script,stylesheet +/wp-content/ads/*$~xmlhttprequest +/wp-content/cache/min/1/advert/popads/*$script +/wp-content/mbp-banner/*$image +/wp-content/plugins/amazon-auto-links/*$script,stylesheet +/wp-content/plugins/amazon-product-in-a-post-plugin/* +/wp-content/plugins/automatic-social-locker/* +/wp-content/plugins/banner-manager/*$script +/wp-content/plugins/bookingcom-banner-creator/* +/wp-content/plugins/bookingcom-text2links/* +/wp-content/plugins/fasterim-optin/*$~xmlhttprequest +/wp-content/plugins/m-wp-popup/*$script +/wp-content/plugins/platinumpopup/*$script,stylesheet +/wp-content/plugins/popad/*$script,stylesheet +/wp-content/plugins/script-manager/assets/js/script-manager.js? +/wp-content/plugins/the-moneytizer/*$script +/wp-content/plugins/useful-banner-manager/* +/wp-content/plugins/wp-ad-guru/*$script,stylesheet +/wp-content/plugins/wp-super-popup-pro/*$script +/wp-content/plugins/wp-super-popup/*$script +/wp-content/uploads/useful_banner_manager_banners/* +/wp-popup-scheduler/*$script,stylesheet +/wp_pro_ad_system/templates/*$script,stylesheet +/wpadgu-adblock.js$script +/wpadgu-frontend.js$script +/wpbanners_show.php$script +/wppas.min.css$stylesheet +/wppas.min.js$script +/wpxbz-theme.js$script +/www/delivery/*$script,subdocument +/xpopup/xpopup.js +/zone?pub=*&zone_id= +/~cdn/ads/* +://a.*/ad-provider.js$third-party +://a.ads. +://ad-api- +://ad1. +://adn.*/zone/$subdocument +://ads.$~image,~xmlhttprequest,domain=~ads.8designers.com|~ads.ac.uk|~ads.adstream.com.ro|~ads.allegro.pl|~ads.am|~ads.amazon|~ads.apple.com|~ads.atmosphere.copernicus.eu|~ads.axon.ai|~ads.band|~ads.bestprints.biz|~ads.bikepump.com|~ads.brave.com|~ads.buscaempresas.co|~ads.business.bell.ca|~ads.cafebazaar.ir|~ads.chewy.com|~ads.colombiaonline.com|~ads.comeon.com|~ads.cvut.cz|~ads.doordash.com|~ads.dosocial.ge|~ads.dosocial.me|~ads.elevateplatform.co.uk|~ads.ferrarichat.com|~ads.finance|~ads.flytant.com|~ads.fund|~ads.google.cn|~ads.google.com|~ads.gree.net|~ads.gurkerl.at|~ads.harvard.edu|~ads.instacart.com|~ads.jiosaavn.com|~ads.kaipoke.biz|~ads.kifli.hu|~ads.knuspr.de|~ads.listonic.com|~ads.luarmor.net|~ads.magalu.com|~ads.mercadolibre.com.ar|~ads.mercadolibre.com.cl|~ads.mercadolibre.com.co|~ads.mercadolibre.com.ec|~ads.mercadolibre.com.mx|~ads.mercadolibre.com.pe|~ads.mercadolibre.com.ve|~ads.mercadolivre.com.br|~ads.mgid.com|~ads.microsoft.com|~ads.midwayusa.com|~ads.misskey.io|~ads.mobilebet.com|~ads.mojagazetka.com|~ads.msstate.edu|~ads.mst.dk|~ads.mt|~ads.naver.com|~ads.nc|~ads.nipr.ac.jp|~ads.olx.pl|~ads.openai.com|~ads.palmettostatearmory.com|~ads.pandauth.com|~ads.pinterest.com|~ads.privacy.qq.com|~ads.realizeperformance.com|~ads.remix.es|~ads.rohlik.cz|~ads.rohlik.group|~ads.route.cc|~ads.safi-gmbh.ch|~ads.scotiabank.com|~ads.selfip.com|~ads.shopee.cn|~ads.shopee.co.th|~ads.shopee.com.br|~ads.shopee.com.mx|~ads.shopee.com.my|~ads.shopee.kr|~ads.shopee.ph|~ads.shopee.pl|~ads.shopee.sg|~ads.shopee.tw|~ads.shopee.vn|~ads.siriusxmmedia.com|~ads.smartnews.com|~ads.snapchat.com|~ads.socialtheater.com|~ads.sociogram.com|~ads.spotify.com|~ads.studyplus.co.jp|~ads.taboola.com|~ads.tiktok.com|~ads.tuver.ru|~ads.twitter.com|~ads.typepad.jp|~ads.umd.edu|~ads.us.tiktok.com|~ads.viksaffiliates.com|~ads.vk.com|~ads.vk.ru|~ads.watson.ch|~ads.wildberries.ru|~ads.woori.team|~ads.x.com|~ads.yandex|~reempresa.org +://ads2. +://adsbb. +://adserving. +://adsrv. +://adsserver.$~xmlhttprequest,domain=~adsserver.flytant.com +://adv.$third-party,domain=~adv.asahi.com|~adv.bet|~adv.blue|~adv.chunichi.co.jp|~adv.cincsys.com|~adv.cryptonetlabs.it|~adv.design|~adv.digimatix.ru|~adv.ec|~adv.ee|~adv.gg|~adv.hokkaido-np.co.jp|~adv.kompas.id|~adv.lack-girl.com|~adv.mcr.club|~adv.mcu.edu.tw|~adv.michaelgat.com|~adv.msk.ru|~adv.neosystem.co.uk|~adv.peronihorowicz.com.br|~adv.rest|~adv.ru|~adv.sciconnect.unsw.edu.au|~adv.tools|~adv.trinet.ru|~adv.ua|~adv.vg|~adv.yomiuri.co.jp|~advancedradiology.com|~advids.co|~farapp.com|~pracuj.pl|~r7.com|~typeform.com|~welaika.com +://aff-ads. +://affiliate.$third-party +://affiliates.$third-party +://affiliates2.$third-party +://banner.$third-party +://banners.$third-party +://creative.*/widgets/Player? +://news-*/process.js?id=$third-party +://news-*/v2-sw.js$third-party +://oascentral. +://promo.$~media,third-party,domain=~myshopify.com|~promo.com|~shopifycloud.com|~slidely.com +://pt.*?psid=$third-party +://s.*.com/venor.php$third-party +://sli.*/imp?s=$image +://uads.$third-party,xmlhttprequest +?adl=1*&id=$script,subdocument,~third-party +?adspot_$domain=~sponichi.co.jp +?advertiser_id=$domain=~ads.pinterest.com +?cs=*&abt=0&red=1&sm=$third-party +?id=3&adl=3$subdocument,~third-party +?key=*&uuid=$subdocument,third-party +?service=ad&$script +?usid=*&utid= +?whichAd=freestar& +?wppaszoneid=$subdocument +?wpstealthadsjs= +?z=*&rb=$third-party,xmlhttprequest +_ad_250.$image +_ad_300.$image +_advertise-$domain=~linkedin.com +_advertisment.$~xmlhttprequest +_images/ad.$image +_reklama_$domain=~youtube.com +||cacheserve.*/promodisplay/ +||cacheserve.*/promodisplay? +||online.*/promoredirect?key= +! univresalP popup/redirect +.com/smartpop/$document +! https://github.com/AdguardTeam/AdguardFilters/commit/934912b3e760e068a91cd6cb502096a55ab1ca16 +! Block parked domains. Sometimes it is not immediately obvious that it is dead +! https://ww7.linkviet.xyz/?usid=23&utid=10895304252 +/?usid=*&utid=$document +! strat-talk.com forum and others +/render-ad.php?ad_id= +/render-sidebar-ad.php?ad_id= +! l.wl.co scam on X +/_meetups/r.php?click_id=$document +! Ad-Shield +.com/script/d3d3L$script,third-party +/ad-shield/e/*$script,third-party +/anymanagerrecover.js +/bGFwb3N0ZS5uZXQ.js$third-party +/bXlmb3JlY2FzdC5jb20.js$third-party +/cGlja3MubXk.js$third-party +/dGhlZnJlZWJpZWd1eS5jb20.js$third-party +://0.www.*/player/*/a/$third-party,xmlhttprequest +://0.www.*/player/*/m/$script,third-party +://0.www.*/players/*/-1/$script,third-party,xmlhttprequest +://loader.*.com/loader.min.js|$script,~third-party +://loader.*.com/script/$script,third-party +://www.*.com/*/-1/327/$script,subdocument,third-party,xmlhttprequest +://www.*.com/*/-1/70/$script,subdocument,third-party,xmlhttprequest +://www.*.com/players/*/-1/$script,subdocument,third-party,xmlhttprequest +://www.*.com/players/*/a/$subdocument,third-party,domain=~edu|~gov +://www.*/player/*/a/$third-party,xmlhttprequest +://www.*/player/*/m/$script,third-party +wss://loader.*.com/ws^$third-party +wss://www.*.xyz/ws^$third-party +! https://github.com/easylist/easylist/issues/11123 +.com/ed/java.js$script +/ed/fol457.$script +! ad-ace (to avoid bait) +/plugins/ad-ace/assets/js/coupons.js$script +/plugins/ad-ace/assets/js/slot-slideup.js$script +/plugins/ad-ace/includes/shoppable-images/*$script +! readcomiconline.li +/Ads/bid300a.aspx$subdocument +/Ads/bid300b.aspx$subdocument +/Ads/bid300c.aspx$subdocument +/Ads/bid728.aspx$subdocument +! Amazon +/e/cm?$subdocument +/e/ir?$image,script +/in/track?data= +/senddata?site=banner +/senddata?site=inpage +! propu.sh variants +/ntfc.php?$script +! Clickadu servers +.com/src/ppu/$third-party +/aas/r45d/vki/*$third-party +/bultykh/ipp24/7/*$third-party +/ceef/gdt3g0/tbt/*$third-party +/fyckld0t/ckp/fd3w4/*$third-party +/i/npage/*$script,third-party +/lv/esnk/*$script,third-party +/pn07uscr/f/tr/zavbn/*$third-party +/q/tdl/95/dnt/*$third-party +/sc4fr/rwff/f9ef/*$third-party +/script/awesome.js$third-party +/ssp/req/*/?pb=$third-party +/t/9/heis/svewg/*$third-party +! streamhub.gg/qehyheswr3i8 / uploadhub.to/842q2djqdfub +/tabu/display.js$script +! (NSFW) exoads on donstick.com sites +/myvids/click/*$script,subdocument +/myvids/mltbn/*$script,subdocument +/myvids/mltbn2/*$script,subdocument +/myvids/rek/*$script,subdocument +! https://github.com/easylist/easylist/commit/6295313 +://rs-stripe.wsj.com/stripe/image? +! Dodgy sites +/?l=*&s=*&mprtr=$~third-party,xmlhttprequest +/push-skin/skin.min.js$script +/search/tsc.php?ses= +! https://github.com/easylist/easylist/issues/5054 +/full-page-script.js$script +! bc.vc (https://github.com/NanoMeow/QuickReports/issues/198) +/earn.php?z=$popup,subdocument +! https://github.com/uBlockOrigin/uAssets/issues/2364 +/pop2.js?r=$script +! Ad-insertion script (see on: celebrityweightloss.com, myfirstclasslife.com, cultofmac.com) +/beardeddragon/armadillo.js$script +/beardeddragon/axolotl.js$script +/beardeddragon/drake.js$script +/beardeddragon/gilamonster.js$script +/beardeddragon/iguana.js$script +/beardeddragon/tortoise.js$script +/beardeddragon/turtle.js$script +/beardeddragon/wyrm.js$script +/beardeddragon/wyvern.js$script +/detroitchicago/anaheim.js$script +/detroitchicago/augusta.js$script +/detroitchicago/birmingham.js$script +/detroitchicago/boise.js$script +/detroitchicago/cmbdv2.js$script +/detroitchicago/cmbv2.js$script +/detroitchicago/denver.js$script +/detroitchicago/ezconfig$xmlhttprequest +/detroitchicago/gateway.js$script +/detroitchicago/houston.js$script +/detroitchicago/kenai.js$script +/detroitchicago/memphis.js$script +/detroitchicago/minneapolis.js$script +/detroitchicago/portland.js$script +/detroitchicago/raleigh.js$script +/detroitchicago/reportads.js$script +/detroitchicago/rochester.js$script +/detroitchicago/sidebarwall.js$script +/detroitchicago/springfield.js$script +/detroitchicago/stickyfix.js$script +/detroitchicago/tampa.js$script +/detroitchicago/tulsa.js$script +/detroitchicago/tuscon.js$script +/detroitchicago/vista.js$script +/detroitchicago/vpp.gif?$image +/detroitchicago/wichita.js$script +/edmonton.webp$script +/ezcl.webp?$script +/ezf-min.$script +/ezo/*$script,~third-party,domain=~yandex.by|~yandex.com|~yandex.kz|~yandex.ru|~yandex.ua +/ezoic/*$script,~third-party +/jellyfish.webp$script +/parsonsmaize/abilene.js$script +/parsonsmaize/chanute.js$script +/parsonsmaize/mulvane.js$script +/parsonsmaize/olathe.js$script +/tardisrocinante/austin.js$script +/tardisrocinante/surgeonv2.js$script +/tardisrocinante/vitals.js$script +! prebid scripts +.prebid-bundle.js$script +.prebid.$domain=~prebid.org +/ad/postbid_handler1.$script +/ads/prebid8-$script +/dist/adsPrebid.js$script +/gpt-prebid.js$script +/pbjsandwichdirecta9-$script +/plugins/prebidjs/*$script +/porpoiseant/*$script +/prebid-js-$script +/prebid-load.js$script +/prebid-min-$script +/prebid-wrapper.js$script,third-party +/prebid.$script,domain=~prebid.org +/prebid/*$script +/prebid1.$script +/prebid2.$script +/prebid3.$script +/prebid4.$script +/prebid5.$script +/prebid6.$script +/prebid7.$script +/prebid8.$script +/prebid9.$script +/prebid_$script,third-party +/prebidlink/*$script +/tagman/*$domain=~abelssoft.de +_prebid.js$script +! trackwilltrk.com CNAME +://r.*/s1/$other,subdocument,third-party +://t.*/s1/$other,subdocument,third-party +&sadbl=1&abtg=$third-party +&sadbl=1&chu=$third-party +! linkbucks.com script +/webservices/jsparselinks.aspx?$script +! domain parking redirection +/chronos?dune=*&token=$~third-party,xmlhttprequest +/page/bouncy.php?$document +/r.php?u=https$document +/zclkredirect?$document +/zclkvisitor/*$document +/zcredirect?$document +! Peel script +/jquery.peelback.$script +! Anti-Adblock +/ad-blocking-advisor/*$script,stylesheet +/ad-blocking-alert/*$stylesheet +/ad-blocking-detector/assets/js/adblock-detector.min.js +/adblock-detect.$script +/adblock-notify-by-bweb/*$script,stylesheet +/adblock_detector2.$script +/adblock_logger.$script +/adBlockDetector/*$script +/ads-blocking-detector.$script +/anti-adblock/*$~stylesheet +/blockblock/blockblock.jquery.js$script +/jgcabd-detect-$script +/no-adblock/*$script,stylesheet + +! *** easylist:easylist/easylist_general_block_dimensions.txt *** +-120-600. +-120_600_ +-120x600- +-120x600. +-120x600_ +-160-600. +-160x600-$image,subdocument +-160x600. +-160x600_ +-300-250. +-300x250-$image +-300x250_ +-300x600. +-460x68. +-468-100. +-468-60- +-468-60. +-468-60_ +-468_60. +-468x60- +-468x60. +-468x60/ +-468x60_ +-468x70. +-468x80-$image +-468x80. +-468x80/ +-468x80_ +-468x90. +-480x60- +-480x60. +-480x60/ +-480x60_ +-486x60. +-500x100. +-600x70. +-600x90- +-720x90- +-720x90. +-728-90- +-728-90. +-728.90. +-728x90- +-728x90. +-728x90/ +-728x90_ +-729x91- +-780x90- +-980x60- +-988x60. +.120x600. +.160x600. +.160x600_ +.300x250. +.300x250_ +.468x60- +.468x60. +.468x60/ +.468x60_ +.468x80- +.468x80. +.468x80/ +.468x80_ +.480x60- +.480x60. +.480x60/ +.480x60_ +.728x90- +.728x90/ +.728x90_ +.900x100. +/120-600- +/120-600. +/120_600_ +/120x600- +/120x600. +/120x600_ +/125x600- +/125x600_ +/130x600- +/160-600- +/160-600. +/160_600_ +/160x400- +/160x400_ +/160x600- +/160x600. +/160x600/* +/160x600_ +/190_900. +/300-250- +/300-250. +/300-600_ +/300_250_ +/300x150_ +/300x250- +/300x250.$image +/300x250_ +/300x250b. +/300x350. +/300x600- +/300x600_ +/300xx250. +/320x250.$image +/335x205_ +/336x280- +/336x280. +/336x280_ +/428x60. +/460x60. +/460x80_ +/468-20. +/468-60- +/468-60. +/468-60_ +/468_60.$image +/468_60_ +/468_80. +/468_80/* +/468x060. +/468x060_ +/468x150- +/468x280. +/468x280_ +/468x60- +/468x60.$~script +/468x60/* +/468x60_ +/468x72. +/468x72_ +/468x80- +/468x80. +/468x80_ +/470x030_ +/480x030. +/480x030_ +/480x60- +/480x60. +/480x60/* +/480x60_ +/480x70_ +/486x60_ +/496_98_ +/600-160- +/600-60. +/600-90. +/600_120_ +/600_90_ +/600x75_ +/600x90.$image +/60x468. +/640x100/* +/640x80- +/660x120_ +/700_100_ +/700_200. +/700x100. +/728-90- +/728-90. +/728-90/* +/728-90_ +/728_200. +/728_200_ +/728_90. +/728_90/* +/728_90_ +/728x90- +/728x90.$image +/728x90/* +/728x90_ +/750-100. +/750_150. +/750x100. +/760x120. +/760x120_ +/760x90_ +/768x90- +/768x90. +/780x90. +/800x160/* +/80x468_ +/960_60_ +/980x90. +/w300/h250/* +/w728/h90/* +=300x250/ +=336x280, +=468x60/ +=468x80_ +=728x90/ +_120_600. +_120_600_ +_120x240. +_120x500. +_120x600- +_120x600. +_120x600_ +_125x600_ +_128x600. +_140x600. +_140x600_ +_150x700_ +_160-600. +_160_600. +_160_600_ +_160x300. +_160x300_ +_160x350. +_160x400. +_160x600- +_160x600. +_160x600/ +_160x600_ +_300-250- +_300x250- +_300x250. +_300x250_ +_300x600. +_300x600_ +_320x250_ +_323x120_ +_336x120. +_350_100. +_350_100_ +_350x100. +_400-80. +_400x60. +_400x68. +_420x80. +_420x80_ +_438x50. +_438x60. +_438x60_ +_460_60. +_460x60. +_468-60. +_468-60_ +_468_60-$~script +_468_60. +_468_60_ +_468_80. +_468_80_ +_468x060- +_468x060. +_468x060_ +_468x100. +_468x100_ +_468x118. +_468x120. +_468x60- +_468x60. +_468x60/ +_468x60_ +_468x60b. +_468x80- +_468x80. +_468x80/ +_468x80_ +_468x90. +_468x90_ +_480_60. +_480_80_ +_480x60- +_480x60. +_480x60/ +_480x60_ +_486x60. +_486x60_ +_700_100_ +_700_150_ +_700_200_ +_720_90. +_720x90. +_720x90_ +_728-90. +_728-90_ +_728_90. +_728_90_ +_728x60. +_728x90- +_728x90. +_728x90/ +_728x90_ +_750x100. +_760x100. +_768x90_ +_800x100. +_800x80_ + +! *** easylist:easylist/easylist_general_block_popup.txt *** +&adb=y&adb=y^$popup +&cbiframe=$popup +&fp_sid=pop$popup,third-party +&popunder=$popup +&popundersPerIP=$popup +&sseq=*&dseq=$popup,third-party +&zoneid=*&ad_$popup +&zoneid=*&direct=$popup +.co/ads/$popup +.com/ads?$popup +.fuse-cloud.com/$popup +.net/adx.php?$popup +.prtrackings.com$popup +/?ab=*&rl=1|$popup,third-party +/?placement=*&redirect$popup +/?redirect&placement=$popup +/?zoneid=*&timeout=$popup +/_xa/ads?$popup +/a/display.php?$popup +/ad.php?tag=$popup +/ad.php?zone$popup +/ad/ad?p=$popup +/ad/display.php$popup +/ad/window.php?$popup +/ad_pop.php?$popup +/adclick.$popup +/adClick/*$popup +/adClick?$popup +/AdHandler.aspx?$popup +/adpreview?$popup +/ads/click?$popup +/adServe/*$popup +/adserver.$popup +/AdServer/*$popup,third-party +/adstream_sx.ads/*$popup +/adx.php?source=$popup +/aff_ad?$popup +/afu.php?$popup +/api/users?token=$popup +/click?adv=$popup +/fb_hilltopads.php$popup +/gtm.js?$popup +/iprp.php?$popup +/jump/next.php?$popup +/links/popad$popup +/out?zoneId=$popup +/pop-imp/*$popup +/pop.go?ctrlid=$popup +/popunder.$popup +/popunder/in/click/*$popup +/popunder_$popup +/popupads.$popup +/prod/go.html?$popup +/prod/redirect.html?lu=$popup +/redirect/?spot_id=$popup +/redirect?tid=$popup +/show?bver=$popup +/smartpop/*$popup +/tr?id=*&tk=$popup +/zcredirect?$popup +/zcvisitor/*$popup +/zp-redirect?$popup +://adn.*/zone/$popup +://ads.$popup,domain=~ad.olx.pl|~ads.mercadolibre.com.ar|~ads.mercadolibre.com.cl|~ads.mercadolibre.com.co|~ads.mercadolibre.com.ec|~ads.mercadolibre.com.mx|~ads.mercadolibre.com.pe|~ads.mercadolibre.com.ve|~ads.mercadolivre.com.br|~ads.openai.com|~ads.pandauth.com|~ads.umd.edu|~axon.ai|~kakaku.com|~reddit.com|~smartnews.com +://adv.$popup,domain=~adv.kompas.id|~adv.lack-girl.com +?dovr=true$popup,third-party +! Commonly used popup scripts on movie/tv streaming sites +|javascript:*setTimeout$popup +|javascript:*window.location$popup +! Used with many websites to generate multiple popups +|data:text$popup,domain=~clker.com +|dddata:text$popup +!------------------------General element hiding rules-------------------------! +! *** easylist:easylist/easylist_general_hide.txt *** +###AC_ad +###AD_160 +###AD_300 +###AD_468x60 +###AD_ROW +###AD_Top +###AD_text +###ADbox +###Ad-3-Slider +###Ad-4-Slider +###Ad-Container +###Ad-Content +###Ad-Top +###AdBanner +###AdBar +###AdBigBox +###AdBillboard +###AdBottomLeader +###AdBottomRight +###AdBox2 +###AdColumn +###AdContainerTop +###AdContent +###AdDisclaimer +###AdHeader +###AdMiddle +###AdPopUp +###AdRectangleBanner +###AdSense1 +###AdSense2 +###AdSense3 +###AdServer +###AdSkyscraper +###AdSlot_megabanner +###AdSpaceLeaderboard +###AdTop +###AdTopLeader +###AdWidgetContainer +###AdWrapperSuperCA +###AdZone1 +###AdZone2 +###Ad_BelowContent +###Ad_Block +###Ad_TopLeaderboard +###Adbanner +###Adlabel +###AdsBannerTop +###AdsBillboard +###AdsBottomContainer +###AdsContent +###AdsDiv +###AdsFrame +###AdsPubperform +###AdsRight +###AdsSky +###AdsTopContainer +###AdsWrap +###Ads_BA_BS +###Ads_BA_BUT +###Ads_BA_BUT2 +###Ads_BA_BUT_box +###Ads_BA_CAD +###Ads_BA_CAD2 +###Ads_BA_FLB +###Ads_BA_SKY +###Ads_BA_VID +###Ads_TFM_BS +###Ads_google_bottom_wide +###Adsense300x250 +###AdsenseBottom +###AdsenseTop +###Adsterra +###Adv10 +###Adv11 +###Adv8 +###Adv9 +###AdvContainer +###AdvFooter +###AdvHeader +###Adv_Footer +###AdvertMid1 +###AdvertMid2 +###AdvertMpu +###AdvertPanel +###AdvertText +###AdvertiseFrame +###Advertisement1 +###Advertisement2 +###AdvertisementDiv +###AdvertisementLeaderboard +###Advertisements +###AdvertisingDiv_0 +###Advertorial +###Advertorials +###AnchorAd +###ArticleContentAd +###Banner728x90 +###BannerAd +###BannerAds +###BannerAdvert +###BannerAdvertisement +###BigBoxAd +###BigboxAdUnit +###BodyAd +###BodyTopAds +###Body_Ad8_divAdd +###BotAd +###BottomAdContainer +###BottomRightAdWrapper +###ButtonAd +###ContentAd +###Content_CA_AD_0_BC +###Content_CA_AD_1_BC +###DFP_top_leaderboard +###FooterAd +###FooterAdBlock +###FooterAdContainer +###FreeStarVideoAdContainer +###GoogleAd +###GoogleAd1 +###GoogleAd2 +###GoogleAd3 +###GoogleAdRight +###GoogleAdTop +###GoogleAdsense +###HP1-ad +###HP2-ad +###HeadAd +###HeaderAD +###HeaderAd +###HeaderAdBlock +###HeaderAdsBlock +###HeroAd +###HomeAd1 +###IFrameAd +###IFrameAd1 +###IK-ad-area +###IK-ad-block +###IM_AD +###LayoutBottomAdBox +###LayoutHomeAdBoxBottom +###LeftAd +###LeftAd1 +###MPUAdSpace +###MPUadvertising +###MainAd +###NR-Ads +###PromotionAdBox +###RightAd +###RightAdBlock +###RightAdSpace +###RightAdvertisement +###SidebarAd +###SidebarAdContainer +###SitenavAdslot +###SkyAd +###SkyscraperAD +###SponsoredAd +###SponsoredAds +###SponsoredLinks +###SponsorsAds +###StickyBannerAd +###Top-ad +###TopADs +###TopAd +###TopAd0 +###TopAdBox +###TopAdContainer +###TopAdPlacement +###TopAdPos +###TopAdTable +###TopAdvert +###TopBannerAd +###TopRightRadvertisement +###VPNAdvert +###WelcomeAd +###aad-header-1 +###aad-header-2 +###aad-header-3 +###ab_adblock +###above-comments-ad +###above-fold-ad +###above-footer-ads +###aboveAd +###aboveNodeAds +###above_button_ad +###aboveplayerad +###abovepostads +###acm-ad-tag-lawrence_dfp_mobile_arkadium +###ad--article--home-mobile-paramount-wrapper +###ad--article-bottom-wrapper +###ad--article-top +###ad--sidebar +###ad-0 +###ad-1 +###ad-125x125 +###ad-160 +###ad-160x600 +###ad-2 +###ad-2-160x600 +###ad-250 +###ad-250x300 +###ad-3 +###ad-3-300x250 +###ad-300 +###ad-300-250 +###ad-300-additional +###ad-300-detail +###ad-300-sidebar +###ad-300X250-2 +###ad-300a +###ad-300b +###ad-300x250 +###ad-300x250-0 +###ad-300x250-2 +###ad-300x250-b +###ad-300x250-sidebar +###ad-300x250-wrapper +###ad-300x250_mid +###ad-300x250_mobile +###ad-300x250_top +###ad-300x600_top +###ad-4 +###ad-5 +###ad-6 +###ad-7 +###ad-728 +###ad-728-90 +###ad-728x90 +###ad-8 +###ad-9 +###ad-Content_1 +###ad-Content_2 +###ad-Rectangle_1 +###ad-Rectangle_2 +###ad-Superbanner +###ad-a +###ad-ads +###ad-advertorial +###ad-affiliate +###ad-after +###ad-anchor +###ad-around-the-web +###ad-article +###ad-article-in +###ad-aside-1 +###ad-background +###ad-ban +###ad-banner-1 +###ad-banner-atf +###ad-banner-bottom +###ad-banner-btf +###ad-banner-desktop +###ad-banner-image +###ad-banner-placement +###ad-banner-top +###ad-banner-wrap +###ad-banner_atf-label +###ad-bar +###ad-base +###ad-bb-content +###ad-below-content +###ad-bg +###ad-big +###ad-bigbox +###ad-bigsize +###ad-billboard +###ad-billboard-atf +###ad-billboard-bottom +###ad-billboard01 +###ad-blade +###ad-block +###ad-block-125 +###ad-block-aa +###ad-block-bottom +###ad-block-container +###ad-border +###ad-bottom +###ad-bottom-banner +###ad-bottom-fixed +###ad-bottom-right-container +###ad-bottom-wrapper +###ad-box +###ad-box-1 +###ad-box-2 +###ad-box-bottom +###ad-box-halfpage +###ad-box-leaderboard +###ad-box-left +###ad-box-rectangle +###ad-box-rectangle-2 +###ad-box-right +###ad-box1 +###ad-box2 +###ad-boxes +###ad-break +###ad-bs +###ad-btm +###ad-buttons +###ad-campaign +###ad-carousel +###ad-case +###ad-center +###ad-chips +###ad-circfooter +###ad-code +###ad-col +###ad-container-banner +###ad-container-fullpage +###ad-container-inner +###ad-container-leaderboard +###ad-container-mpu +###ad-container-outer +###ad-container-overlay +###ad-container-top-placeholder +###ad-container1 +###ad-contentad +###ad-desktop-bottom +###ad-desktop-takeover-home +###ad-desktop-takeover-int +###ad-desktop-top +###ad-desktop-wrap +###ad-discover +###ad-display-ad +###ad-display-ad-placeholder +###ad-div-leaderboard +###ad-drawer +###ad-ear +###ad-extra-flat +###ad-featured-right +###ad-fixed-bottom +###ad-flex-top +###ad-flyout +###ad-footer-728x90 +###ad-framework-top +###ad-front-btf +###ad-front-footer +###ad-full-width +###ad-fullbanner-btf +###ad-fullbanner-outer +###ad-fullwidth +###ad-googleAdSense +###ad-gutter-left +###ad-gutter-right +###ad-halfpage +###ad-halfpage1 +###ad-halfpage2 +###ad-head +###ad-header-1 +###ad-header-2 +###ad-header-3 +###ad-header-left +###ad-header-mad +###ad-header-mobile +###ad-header-right +###ad-holder +###ad-horizontal +###ad-horizontal-header +###ad-horizontal-top +###ad-incontent +###ad-index +###ad-inline-block +###ad-label2 +###ad-large-banner-top +###ad-large-header +###ad-lb-secondary +###ad-lead +###ad-leadboard1 +###ad-leadboard2 +###ad-leader +###ad-leader-atf +###ad-leader-container +###ad-leader-wrapper +###ad-leaderboard +###ad-leaderboard-atf +###ad-leaderboard-bottom +###ad-leaderboard-container +###ad-leaderboard-footer +###ad-leaderboard-header +###ad-leaderboard-spot +###ad-leaderboard-top +###ad-leaderboard970x90home +###ad-leaderboard970x90int +###ad-leaderboard_bottom +###ad-leadertop +###ad-lrec +###ad-m-rec-content +###ad-main +###ad-main-bottom +###ad-main-top +###ad-manager +###ad-masthead +###ad-medium +###ad-medium-lower +###ad-medium-rectangle +###ad-medrec +###ad-medrec__first +###ad-mid +###ad-mid-rect +###ad-middle +###ad-midpage +###ad-minibar +###ad-module +###ad-mpu +###ad-mrec +###ad-mrec2 +###ad-new +###ad-north +###ad-one +###ad-other +###ad-output +###ad-overlay +###ad-page-1 +###ad-pan3l +###ad-panel +###ad-pencil +###ad-performance +###ad-performanceFullbanner1 +###ad-performanceRectangle1 +###ad-placeholder +###ad-placeholder-horizontal +###ad-placeholder-vertical +###ad-placement +###ad-plate +###ad-player +###ad-popup +###ad-popup-home +###ad-popup-int +###ad-post +###ad-promo +###ad-push +###ad-pushdown +###ad-r +###ad-rec-atf +###ad-rec-btf +###ad-rec-btf-top +###ad-rect +###ad-rectangle +###ad-rectangle1 +###ad-rectangle1-outer +###ad-rectangle2 +###ad-rectangle3 +###ad-results +###ad-right +###ad-right-bar-tall +###ad-right-container +###ad-right-sidebar +###ad-right-top +###ad-right2 +###ad-right3 +###ad-rotator +###ad-row +###ad-section +###ad-separator +###ad-shop +###ad-side +###ad-side-text +###ad-sidebar +###ad-sidebar-btf +###ad-sidebar-container +###ad-sidebar-mad +###ad-sidebar-mad-wrapper +###ad-sidebar1 +###ad-sidebar2 +###ad-site-header +###ad-skin +###ad-skm-below-content +###ad-sky +###ad-skyscraper +###ad-slideshow +###ad-slideshow2 +###ad-slot +###ad-slot-1 +###ad-slot-2 +###ad-slot-3 +###ad-slot-4 +###ad-slot-5 +###ad-slot-502 +###ad-slot-lb +###ad-slot-right +###ad-slot-top +###ad-slot1 +###ad-slot2 +###ad-slot4 +###ad-slug-wrapper +###ad-small-banner +###ad-space +###ad-space-big +###ad-splash +###ad-sponsors +###ad-spot +###ad-spot-bottom +###ad-spot-one +###ad-standard +###ad-standard-wrap +###ad-stickers +###ad-sticky-footer-container +###ad-story-right +###ad-story-top +###ad-stripe +###ad-target +###ad-teaser +###ad-text +###ad-three +###ad-top +###ad-top-250 +###ad-top-300x250 +###ad-top-728 +###ad-top-banner +###ad-top-leaderboard +###ad-top-left +###ad-top-lock +###ad-top-low +###ad-top-right +###ad-top-right-container +###ad-top-text-low +###ad-top-wrap +###ad-top-wrapper +###ad-tower +###ad-two +###ad-undefined +###ad-unit-right-bottom-160-600 +###ad-unit-right-middle-300-250 +###ad-unit-top-banner +###ad-vip-article +###ad-west +###ad-wide-leaderboard +###ad-wrap +###ad-wrap2 +###ad-wrapper +###ad-wrapper-728x90 +###ad-wrapper-footer-1 +###ad-wrapper-main-1 +###ad-wrapper-sidebar-1 +###ad-wrapper-top-1 +###ad1-placeholder +###ad125x125 +###ad160 +###ad160600 +###ad160x600 +###ad250 +###ad300 +###ad300-250 +###ad300_250 +###ad336 +###ad336x280 +###ad468 +###ad468x60 +###ad480x60 +###ad6 +###ad600 +###ad728 +###ad72890 +###ad728Box +###ad728Header +###ad728Mid +###ad728Top +###ad728Wrapper +###ad728X90 +###ad728foot +###ad728h +###ad728top +###ad728x90 +###ad728x90_1 +###ad90 +###ad900 +###ad970 +###ad970x90_exp +###adATF300x250 +###adATF728x90 +###adATFLeaderboard +###adAside +###adBTF300x250 +###adBadges +###adBanner1 +###adBanner336x280 +###adBannerBottom +###adBannerHeader +###adBannerSpacer +###adBannerTable +###adBannerTop +###adBar +###adBelt +###adBillboard +###adBlock01 +###adBlockBanner +###adBlockContainer +###adBlockContent +###adBlockOverlay +###adBlocks +###adBottom +###adBox +###adBrandDev +###adBrandingStation +###adBreak +###adCarousel +###adChannel +###adChoiceFooter +###adChoices +###adChoicesIcon +###adChoicesLogo +###adCol +###adColumn +###adColumn3 +###adComponentWrapper +###adContainer +###adContainer_1 +###adContainer_2 +###adContainer_3 +###adContent +###adContentHolder +###adContext +###adDiv +###adDiv0 +###adDiv1 +###adDiv300 +###adDiv4 +###adDiv728 +###adDivContainer +###adFiller +###adFlashDiv +###adFooter +###adFot +###adFrame +###adGallery +###adGoogleText +###adHeader +###adHeaderTop +###adHeaderWrapper +###adHeading +###adHeightstory +###adHolder +###adHolder1 +###adHolder2 +###adHolder3 +###adHolder4 +###adHolder5 +###adHolder6 +###adHome +###adHomeTop +###adIframe +###adInhouse +###adIsland +###adLB +###adLabel +###adLarge +###adLayer +###adLayerTop +###adLayout +###adLeader +###adLeaderTop +###adLeaderboard +###adLeaderboard-middle +###adLeft +###adLink +###adLink1 +###adLounge +###adLrec +###adMOBILETOP +###adMPU +###adMPUHolder +###adMain +###adMarketplace +###adMed +###adMedRect +###adMediumRectangle +###adMeld +###adMessage +###adMid2 +###adModal +###adMpu +###adMpuBottom +###adOuter +###adPartnerLinks +###adPlaceHolder1 +###adPlaceHolder2 +###adPlacement_1 +###adPlacement_2 +###adPlacement_3 +###adPlacement_4 +###adPlacement_7 +###adPlacement_8 +###adPlacement_9 +###adPlacer +###adPopover +###adPopup +###adPosition0 +###adPosition14 +###adPosition5 +###adPosition6 +###adPosition7 +###adPosition9 +###adPush +###adPushdown1 +###adReady +###adRight +###adRight1 +###adRight2 +###adRight3 +###adRight4 +###adRight5 +###adScraper +###adSection +###adSenseBox +###adSenseModule +###adSenseWrapper +###adSet +###adSide +###adSide1-container +###adSideButton +###adSidebar +###adSite +###adSkin +###adSkinBackdrop +###adSkinLeft +###adSkinRight +###adSky +###adSkyPosition +###adSkyscraper +###adSlider +###adSlot-dmpu +###adSlot-dontMissLarge +###adSlot-leader +###adSlot-leaderBottom +###adSlot1 +###adSlot2 +###adSlot3 +###adSlot4 +###adSlug +###adSpace +###adSpaceBottom +###adSpaceHeight +###adSpacer +###adSpecial +###adSqb +###adSquare +###adStrip +###adSuperbanner +###adTag +###adText +###adTextLink +###adTile +###adTop +###adTopContent +###adTopLREC +###adTopLarge +###adTopModule +###adTower +###adUnderArticle +###adUnit +###adWideSkyscraper +###adWrap +###adWrapper +###adWrapperSky +###ad_1 +###ad_160 +###ad_160_600 +###ad_160_600_2 +###ad_160x160 +###ad_160x600 +###ad_2 +###ad_250 +###ad_250x250 +###ad_3 +###ad_300 +###ad_300_250 +###ad_300_250_1 +###ad_300x250 +###ad_336 +###ad_4 +###ad_468_60 +###ad_468x60 +###ad_5 +###ad_728 +###ad_728_90 +###ad_728x90 +###ad_8 +###ad_9 +###ad_B1 +###ad_Banner +###ad_Bottom +###ad_LargeRec01 +###ad_Middle +###ad_Middle1 +###ad_Pushdown +###ad_R1 +###ad_Right +###ad_Top +###ad_Wrap +###ad__billboard +###ad_ad +###ad_adsense +###ad_after_header_1 +###ad_anchor +###ad_area +###ad_article1_1 +###ad_article1_2 +###ad_article2_1 +###ad_article2_2 +###ad_article3_1 +###ad_article3_2 +###ad_banner +###ad_banner_1 +###ad_banner_468x60 +###ad_banner_728x90 +###ad_banner_bot +###ad_banner_top +###ad_banners +###ad_bar +###ad_bar_rect +###ad_before_header +###ad_bg +###ad_bg_image +###ad_big +###ad_bigbox +###ad_bigbox_companion +###ad_bigrectangle +###ad_billboard +###ad_block +###ad_block_0 +###ad_block_1 +###ad_block_2 +###ad_block_mpu +###ad_bnr_atf_01 +###ad_bnr_atf_02 +###ad_bnr_atf_03 +###ad_bnr_btf_07 +###ad_bnr_btf_08 +###ad_body +###ad_bottom +###ad_box_top +###ad_branding +###ad_bsb +###ad_bsb_cont +###ad_btmslot +###ad_button +###ad_buttons +###ad_cell +###ad_center +###ad_choices +###ad_close +###ad_closebtn +###ad_comments +###ad_cont +###ad_cont_superbanner +###ad_container +###ad_container_0 +###ad_container_300x250 +###ad_container_side +###ad_container_sidebar +###ad_container_top +###ad_content +###ad_content_1 +###ad_content_2 +###ad_content_3 +###ad_content_fullsize +###ad_content_primary +###ad_content_right +###ad_content_top +###ad_content_wrap +###ad_contentslot_1 +###ad_contentslot_2 +###ad_creative_2 +###ad_creative_3 +###ad_creative_5 +###ad_dfp_rec1 +###ad_display_300_250 +###ad_display_728_90 +###ad_div +###ad_div_bottom +###ad_div_top +###ad_feedback +###ad_foot +###ad_footer +###ad_footer1 +###ad_footerAd +###ad_frame +###ad_frame1 +###ad_from_bottom +###ad_fullbanner +###ad_gallery +###ad_gallery_bot +###ad_global_300x250 +###ad_global_above_footer +###ad_global_header +###ad_global_header1 +###ad_global_header2 +###ad_h3 +###ad_halfpage +###ad_head +###ad_header +###ad_header_1 +###ad_header_container +###ad_holder +###ad_home +###ad_home_middle +###ad_horizontal +###ad_houseslot_a +###ad_houseslot_b +###ad_hp +###ad_img +###ad_interthread +###ad_island +###ad_island2 +###ad_label +###ad_large +###ad_large_rectangular +###ad_lateral +###ad_layer +###ad_ldb +###ad_lead1 +###ad_leader +###ad_leaderBoard +###ad_leaderboard +###ad_leaderboard_top +###ad_left +###ad_left_1 +###ad_left_2 +###ad_left_3 +###ad_left_skyscraper +###ad_left_top +###ad_leftslot +###ad_link +###ad_links +###ad_links_footer +###ad_lnk +###ad_lrec +###ad_lwr_square +###ad_main +###ad_main_leader +###ad_main_top +###ad_marginal +###ad_marker +###ad_mast +###ad_med_rect +###ad_medium +###ad_medium_rectangle +###ad_medium_rectangular +###ad_mediumrectangle +###ad_message +###ad_middle +###ad_middle_bottom +###ad_midstrip +###ad_mobile +###ad_module +###ad_mpu +###ad_mpu2 +###ad_mpu300x250 +###ad_mrec +###ad_mrec1 +###ad_mrec2 +###ad_mrec_intext +###ad_mrec_intext2 +###ad_new +###ad_news_article +###ad_newsletter +###ad_one +###ad_overlay +###ad_overlayer +###ad_panel +###ad_panorama_top +###ad_pencil +###ad_place +###ad_placeholder +###ad_player +###ad_plugs +###ad_popup_background +###ad_popup_wrapper +###ad_post +###ad_poster +###ad_primary +###ad_publicidad +###ad_rail +###ad_rec_01 +###ad_rect +###ad_rect1 +###ad_rect2 +###ad_rect3 +###ad_rect_body +###ad_rect_bottom +###ad_rect_btf_01 +###ad_rect_btf_02 +###ad_rect_btf_03 +###ad_rect_btf_04 +###ad_rect_btf_05 +###ad_rectangle +###ad_region1 +###ad_region2 +###ad_region3 +###ad_region5 +###ad_results +###ad_right +###ad_right_box +###ad_right_top +###ad_rightslot +###ad_rotator-2 +###ad_rotator-3 +###ad_row +###ad_row_home +###ad_rr_1 +###ad_sec +###ad_sec_div +###ad_secondary +###ad_short +###ad_sidebar +###ad_sidebar1 +###ad_sidebar2 +###ad_sidebar3 +###ad_sidebar_1 +###ad_sidebar_left_container +###ad_sidebar_news +###ad_sidebar_top +###ad_sidebody +###ad_site_header +###ad_sitebar +###ad_skin +###ad_slot +###ad_slot_bottom +###ad_slot_leaderboard +###ad_small +###ad_space_top +###ad_sponsored +###ad_spot_a +###ad_spot_b +###ad_spotlight +###ad_square +###ad_squares +###ad_ss +###ad_stck +###ad_sticky_wrap +###ad_strip +###ad_superbanner +###ad_table +###ad_takeover +###ad_tall +###ad_tbl +###ad_top +###ad_topBanner +###ad_topScroller +###ad_top_728x90 +###ad_top_banner +###ad_top_bar +###ad_top_holder +###ad_topbanner +###ad_topmob +###ad_topnav +###ad_topslot +###ad_two +###ad_txt +###ad_under_game +###ad_unit +###ad_unit1 +###ad_unit2 +###ad_vertical +###ad_video_abovePlayer +###ad_video_belowPlayer +###ad_video_large +###ad_video_root +###ad_wallpaper +###ad_wide +###ad_wide_box +###ad_wideboard +###ad_widget +###ad_widget_1 +###ad_window +###ad_wp +###ad_wp_base +###ad_wrap +###ad_wrapper +###ad_wrapper1 +###ad_wrapper2 +###ad_xrail_top +###ad_zone +###adaptvcompanion +###adb_bottom +###adbackground +###adbanner-container +###adbanner1 +###adbannerbox +###adbannerdiv +###adbannerleft +###adbannerright +###adbannerwidget +###adbar +###adbig +###adblade +###adblade_ad +###adblock-big +###adblock-leaderboard +###adblock-small +###adblock1 +###adblock2 +###adblock4 +###adblockbottom +###adbn +###adbnr +###adboard +###adbody +###adbottom +###adbottomleft +###adbottomright +###adbox +###adbox--hot_news_ad +###adbox--page_bottom_ad +###adbox--page_top_ad +###adbox-inarticle +###adbox-topbanner +###adbox1 +###adbox2 +###adbox_content +###adbox_right +###adbutton +###adbuttons +###adcell +###adcenter +###adcenter2 +###adcenter4 +###adchoices-icon +###adchoicesBtn +###adclear +###adclose +###adcolContent +###adcolumn +###adcontainer +###adcontainer1 +###adcontainer2 +###adcontainer3 +###adcontainer5 +###adcontainerRight +###adcontainer_ad_content_top +###adcontent1 +###adcontent2 +###adcontextlinks +###addbottomleft +###addemam-wrapper +###addvert +###adfactor-label +###adfloat +###adfooter +###adfooter_728x90 +###adframe:not(frameset) +###adframetop +###adfreeDeskSpace +###adhalfpage +###adhead +###adheader +###adhesion +###adhesionAdSlot +###adhesionUnit +###adhide +###adholder +###adholderContainerHeader +###adhome +###adhomepage +###adjacency +###adlabel +###adlabelFooter +###adlabelfooter +###adlabelheader +###adlanding +###adlayer +###adlayerContainer +###adlayerad +###adleaderboard +###adleft +###adlinks +###adlrec +###adm-inline-article-ad-1 +###adm-inline-article-ad-2 +###admain +###admasthead +###admid +###admobilefoot +###admobilefootinside +###admobilemiddle +###admobiletop +###admobiletopinside +###admod2 +###admpubottom +###admpubottom2 +###admpufoot +###admpumiddle +###admpumiddle2 +###admputop2 +###admsg +###adnet +###adnorth +###ados1 +###ados2 +###ados3 +###ados4 +###adplace +###adplacement +###adpos-top +###adpos2 +###adposition +###adposition1 +###adposition10 +###adposition1_container +###adposition2 +###adposition3 +###adposition4 +###adpositionbottom +###adrect +###adright +###adright2 +###adrightbottom +###adrightrail +###adriver_middle +###adriver_top +###adrotator +###adrow +###adrow1 +###adrow3 +###ads-1 +###ads-125 +###ads-200 +###ads-250 +###ads-300 +###ads-300-250 +###ads-336x280 +###ads-468 +###ads-5 +###ads-728x90 +###ads-728x90-I3 +###ads-728x90-I4 +###ads-area +###ads-article-left +###ads-banner +###ads-banner-top +###ads-bar +###ads-before-content +###ads-bg +###ads-bg-mobile +###ads-billboard +###ads-block +###ads-blog +###ads-bot +###ads-bottom +###ads-col +###ads-container +###ads-container-2 +###ads-container-anchor +###ads-container-single +###ads-container-top +###ads-content +###ads-content-double +###ads-footer +###ads-footer-inner +###ads-footer-wrap +###ads-google +###ads-header +###ads-header-728 +###ads-home-468 +###ads-horizontal +###ads-inread +###ads-inside-content +###ads-leader +###ads-leaderboard +###ads-leaderboard1 +###ads-left +###ads-left-top +###ads-lrec +###ads-main +###ads-middle +###ads-mpu +###ads-outer +###ads-pagetop +###ads-panel +###ads-pop +###ads-position-header-desktop +###ads-right +###ads-right-bottom +###ads-right-skyscraper +###ads-right-top +###ads-slot +###ads-space +###ads-superBanner +###ads-text +###ads-top +###ads-top-728 +###ads-top-wrap +###ads-under-rotator +###ads-vertical +###ads-vertical-wrapper +###ads-wrap +###ads-wrapper +###ads1 +###ads120 +###ads125 +###ads1_box +###ads2 +###ads2_block +###ads2_box +###ads2_container +###ads3 +###ads300 +###ads300-250 +###ads300x200 +###ads300x250 +###ads300x250_2 +###ads336x280 +###ads4 +###ads468x60 +###ads50 +###ads7 +###ads728 +###ads728bottom +###ads728top +###ads728x90 +###ads728x90_2 +###ads728x90top +###adsBar +###adsBottom +###adsContainer +###adsContent +###adsDisplay +###adsHeader +###adsHeading +###adsLREC +###adsLeft +###adsLinkFooter +###adsMobileFixed +###adsMpu +###adsPanel +###adsRight +###adsRightDiv +###adsSectionLeft +###adsSectionRight +###adsSquare +###adsTG +###adsTN +###adsTop +###adsTopLeft +###adsTopMobileFixed +###adsZone +###adsZone1 +###adsZone2 +###ads_0_container +###ads_160 +###ads_3 +###ads_300x250 +###ads_4 +###ads_728 +###ads_728x90 +###ads_728x90_top +###ads_banner +###ads_banner1 +###ads_banner_header +###ads_belownav +###ads_big +###ads_block +###ads_body_1 +###ads_body_2 +###ads_body_3 +###ads_body_4 +###ads_body_5 +###ads_body_6 +###ads_bottom +###ads_box +###ads_box1 +###ads_box2 +###ads_box_bottom +###ads_box_right +###ads_box_top +###ads_button +###ads_campaign +###ads_catDiv +###ads_center +###ads_center_banner +###ads_central +###ads_combo2 +###ads_container +###ads_content +###ads_desktop_r1 +###ads_desktop_r2 +###ads_expand +###ads_footer +###ads_fullsize +###ads_h +###ads_h1 +###ads_h2 +###ads_halfsize +###ads_header +###ads_horiz +###ads_horizontal +###ads_horz +###ads_in_modal +###ads_in_video +###ads_insert_container +###ads_layout_bottom +###ads_lb +###ads_lb_frame +###ads_leaderbottom +###ads_left +###ads_left_top +###ads_line +###ads_medrect +###ads_notice +###ads_overlay +###ads_page_top +###ads_place +###ads_placeholder +###ads_player +###ads_popup +###ads_right +###ads_right_sidebar +###ads_right_top +###ads_slide_div +###ads_space +###ads_space_header +###ads_superbanner1 +###ads_superbanner2 +###ads_superior +###ads_td +###ads_text +###ads_textlinks +###ads_title +###ads_top2 +###ads_top_banner +###ads_top_container +###ads_top_content +###ads_top_right +###ads_top_sec +###ads_topbanner +###ads_tower_top +###ads_vert +###ads_video +###ads_wide +###ads_wrapper +###adsbot +###adsbottom +###adsbox +###adsbox-left +###adsbox-right +###adscenter +###adscolumn +###adscontainer +###adscontent +###adsdiv +###adsection +###adsense-2 +###adsense-468x60 +###adsense-area +###adsense-bottom +###adsense-container-bottom +###adsense-header +###adsense-link +###adsense-links +###adsense-middle +###adsense-post +###adsense-right +###adsense-sidebar +###adsense-tag +###adsense-text +###adsense-top +###adsense-wrap +###adsense1 +###adsense2 +###adsense468 +###adsense6 +###adsense728 +###adsenseArea +###adsenseContainer +###adsenseHeader +###adsenseLeft +###adsenseWrap +###adsense_banner_top +###adsense_block +###adsense_bottom_ad +###adsense_box +###adsense_box2 +###adsense_center +###adsense_image +###adsense_inline +###adsense_leaderboard +###adsense_overlay +###adsense_r_side_sticky_container +###adsense_sidebar +###adsense_top +###adsenseheader +###adsensehorizontal +###adsensempu +###adsenseskyscraper +###adsensetext +###adsensetop +###adsensewide +###adserv +###adsframe_2 +###adside +###adsimage +###adsitem +###adskeeper +###adskinleft +###adskinlink +###adskinright +###adskintop +###adsky +###adskyscraper +###adskyscraper_flex +###adsleft1 +###adslider +###adslist +###adslot-below-updated +###adslot-download-abovefiles +###adslot-half-page +###adslot-homepage-middle +###adslot-infobox +###adslot-left-skyscraper +###adslot-side-mrec +###adslot-site-footer +###adslot-site-header +###adslot-sticky-headerbar +###adslot-top-rectangle +###adslot1 +###adslot2 +###adslot3 +###adslot300x250ATF +###adslot300x250BTF +###adslot4 +###adslot5 +###adslot6 +###adslot7 +###adslot_1 +###adslot_2 +###adslot_left +###adslot_rect +###adslot_top +###adsmgid +###adsmiddle +###adsonar +###adspace-1 +###adspace-2 +###adspace-300x250 +###adspace-728 +###adspace-728x90 +###adspace-bottom +###adspace-leaderboard-top +###adspace-one +###adspace-top +###adspace300x250 +###adspaceBox +###adspaceRow +###adspace_header +###adspace_leaderboard +###adspace_top +###adspacer +###adspan +###adsplace1 +###adsplace2 +###adsplace4 +###adsplash +###adspot +###adspot-bottom +###adspot-top +###adsquare +###adsquare2 +###adsright +###adsside +###adsspace +###adstext2 +###adstrip +###adtab +###adtext +###adtop +###adtxt +###adunit +###adunit-article-bottom +###adunit_video +###adunitl +###adv-01 +###adv-300 +###adv-Bottom +###adv-BoxP +###adv-Middle +###adv-Middle1 +###adv-Middle2 +###adv-Scrollable +###adv-Top +###adv-banner +###adv-banner-r +###adv-box +###adv-companion-iframe +###adv-container +###adv-gpt-box-container1 +###adv-gpt-masthead-skin-container1 +###adv-halfpage +###adv-header +###adv-leaderblock +###adv-leaderboard +###adv-left +###adv-masthead +###adv-middle +###adv-middle1 +###adv-midroll +###adv-native +###adv-preroll +###adv-right +###adv-right1 +###adv-scrollable +###adv-sticky-1 +###adv-sticky-2 +###adv-text +###adv-title +###adv-top +###adv-top-skin +###adv300x250 +###adv300x250container +###adv468x90 +###adv728 +###adv728x90 +###adv768x90 +###advBoxBottom +###advCarrousel +###advHome +###advHook-Middle1 +###advRectangle +###advRectangle1 +###advSkin +###advTop +###advWrapper +###adv_300 +###adv_728 +###adv_728x90 +###adv_BoxBottom +###adv_Inread +###adv_IntropageOvl +###adv_LdbMastheadPush +###adv_Reload +###adv_Skin +###adv_bootom +###adv_border +###adv_center +###adv_config +###adv_contents +###adv_footer +###adv_holder +###adv_leaderboard +###adv_mob +###adv_mpu1 +###adv_mpu2 +###adv_network +###adv_overlay +###adv_overlay_content +###adv_r +###adv_right +###adv_skin +###adv_sky +###adv_textlink +###adv_top +###adv_wallpaper +###adv_wallpaper2 +###advads_ad_widget-18 +###advads_ad_widget-19 +###advads_ad_widget-8 +###adver +###adver-top +###adverFrame +###advert-1 +###advert-120 +###advert-2 +###advert-ahead +###advert-article +###advert-article-1 +###advert-article-2 +###advert-article-3 +###advert-banner +###advert-banner-container +###advert-banner-wrap +###advert-banner2 +###advert-block +###advert-boomer +###advert-box +###advert-column +###advert-container-top +###advert-display +###advert-fireplace +###advert-footer +###advert-footer-hidden +###advert-header +###advert-island +###advert-leaderboard +###advert-left +###advert-mpu +###advert-posterad +###advert-rectangle +###advert-right +###advert-sky +###advert-skyscaper +###advert-skyscraper +###advert-slider-top +###advert-text +###advert-top +###advert-top-banner +###advert-wrapper +###advert1 +###advert2 +###advertBanner +###advertBox +###advertBoxRight +###advertBoxSquare +###advertColumn +###advertContainer +###advertDB +###advertOverlay +###advertRight +###advertSection +###advertTop +###advertTopLarge +###advertTopSmall +###advertTower +###advertWrapper +###advert_1 +###advert_banner +###advert_belowmenu +###advert_box +###advert_container +###advert_header +###advert_leaderboard +###advert_mid +###advert_mpu +###advert_right1 +###advert_sky +###advert_top +###advertblock +###advertborder +###adverticum_r_above +###adverticum_r_above_container +###adverticum_r_side_container +###advertise +###advertise-block +###advertise-here +###advertise-sidebar +###advertise1 +###advertise2 +###advertiseBanner +###advertiseLink +###advertise_top +###advertisediv +###advertisement-300x250 +###advertisement-bottom +###advertisement-content +###advertisement-large +###advertisement-placement +###advertisement-text +###advertisement1 +###advertisement2 +###advertisement3 +###advertisement728x90 +###advertisementArea +###advertisementBox +###advertisementHorizontal +###advertisementRight +###advertisementTop +###advertisement_banner +###advertisement_belowscreenshots +###advertisement_block +###advertisement_box +###advertisement_container +###advertisement_label +###advertisement_notice +###advertisement_title +###advertisements_bottom +###advertisements_sidebar +###advertisements_top +###advertisementsarticle +###advertiser-container +###advertiserLinks +###advertisetop +###advertising-160x600 +###advertising-300x250 +###advertising-728x90 +###advertising-banner +###advertising-caption +###advertising-container +###advertising-right +###advertising-skyscraper +###advertising-top +###advertisingHrefTop +###advertisingLeftLeft +###advertisingLink +###advertisingRightColumn +###advertisingRightRight +###advertisingTop +###advertisingTopWrapper +###advertising_300 +###advertising_320 +###advertising_728 +###advertising__banner__content +###advertising_column +###advertising_container +###advertising_contentad +###advertising_div +###advertising_header +###advertising_holder +###advertising_leaderboard +###advertising_top_container +###advertising_wrapper +###advertisment-horizontal +###advertisment-text +###advertisment1 +###advertisment_content +###advertisment_panel +###advertleft +###advertorial +###advertorial-box +###advertorial-wrap +###advertorial1 +###advertorial_links +###adverts +###adverts--footer +###adverts-top-container +###adverts-top-left +###adverts-top-middle +###adverts-top-right +###adverts_base +###adverts_post_content +###adverts_right +###advertscroll +###advertsingle +###advertspace +###advertssection +###adverttop +###advframe +###advr_mobile +###advsingle +###advt +###advt_bottom +###advtbar +###advtcell +###advtext +###advtop +###advtopright +###adwallpaper +###adwidget +###adwidget-5 +###adwidget-6 +###adwidget1 +###adwidget2 +###adwrapper +###adxBigAd +###adxBigAd2 +###adxLeaderboard +###adxMiddle +###adxMiddleRight +###adxToolSponsor +###adx_ad +###adxtop2 +###adzbanner +###adzone +###adzone-middle1 +###adzone-middle2 +###adzone-right +###adzone-top +###adzone_content +###adzone_wall +###adzonebanner +###adzoneheader +###afc-container +###affiliate_2 +###affiliate_ad +###after-dfp-ad-mid1 +###after-dfp-ad-mid2 +###after-dfp-ad-mid3 +###after-dfp-ad-mid4 +###after-dfp-ad-top +###after-header-ads +###after-top-menu-ads +###after_ad +###after_bottom_ad +###after_heading_ad +###after_title_ad +###aigirlfriendad +###amazon-ads +###amazon_ad +###analytics_ad +###anchor-ad +###anchorAd +###aniview-ads +###aom-ad-right_side_1 +###aom-ad-right_side_2 +###aom-ad-top +###apiBackgroundAd +###article-ad +###article-ad-container +###article-ad-content +###article-ads +###article-advert +###article-aside-top-ad +###article-billboard-ad-1 +###article-bottom-ad +###article-box-ad +###article-content-ad +###article-footer-ad +###article-footer-sponsors +###article-island-ad +###article-sidebar-ad +###articleAd +###articleAdReplacement +###articleBoard-ad +###articleBottom-ads +###articleLeftAdColumn +###articleSideAd +###articleTop-ads +###article_ad +###article_ad_1 +###article_ad_3 +###article_ad_bottom +###article_ad_container +###article_ad_top +###article_ad_w +###article_adholder +###article_ads +###article_advert +###article_banner_ad +###article_body_ad1 +###article_box_ad +###articlead300x250r +###articleadblock +###articlefootad +###articletop_ad +###aside-ad-container +###asideAd +###aside_ad +###asideads +###asinglead +###ax-billboard +###ax-billboard-bottom +###ax-billboard-sub +###ax-billboard-top +###backad +###background-ad-cover +###background-adv +###background_ad_left +###background_ad_right +###background_ads +###backgroundadvert +###banADbanner +###banner-300x250 +###banner-468x60 +###banner-728 +###banner-728x90 +###banner-ad +###banner-ad-container +###banner-ad-large +###banner-ads +###banner-advert +###banner-lg-ad +###banner-native-ad +###banner-skyscraper +###banner300x250 +###banner468 +###banner468x60 +###banner728 +###banner728x90 +###bannerAd +###bannerAdFrame +###bannerAdTop +###bannerAdWrap +###bannerAdWrapper +###bannerAds +###bannerAdsense +###bannerAdvert +###bannerGoogle +###banner_ad_bottom +###banner_ad_footer +###banner_ad_module +###banner_ad_placeholder +###banner_ad_top +###banner_ads +###banner_adsense +###banner_adv +###banner_advertisement +###banner_adverts +###banner_content_ad +###banner_sedo +###banner_slot +###banner_spacer +###banner_topad +###banner_videoad +###banner_wrapper_top +###bannerad-bottom +###bannerad-top +###bannerad2 +###banneradrow +###bannerads +###banneradspace +###banneradvert3 +###banneradvertise +###bannerplayer-wrap +###baseboard-ad +###baseboard-ad-wrapper +###bbContentAds +###bb_ad_container +###bb_top_ad +###bbadwrap +###before-footer-ad +###below-listings-ad +###below-menu-ad-header +###below-post-ad +###below-title-ad +###belowAd +###belowContactBoxAd +###belowNodeAds +###below_content_ad_container +###belowad +###belowheaderad +###bg-custom-ad +###bgad +###big-box-ad +###bigAd +###bigAd1 +###bigAd2 +###bigAdDiv +###bigBoxAd +###bigBoxAdCont +###big_ad +###big_ad_label +###big_ads +###bigad +###bigadbox +###bigads +###bigadspace +###bigadspot +###bigboard_ad +###bigsidead +###billboard-ad +###billboard-atf +###bingadcontainer2 +###blkAds1 +###blkAds2 +###blkAds3 +###blkAds4 +###blkAds5 +###block-ad-articles +###block-adsense-0 +###block-adsense-2 +###block-adsense-banner-article-bottom +###block-adsense-banner-channel-bottom +###block-adsenseleaderboard +###block-advertisement +###block-advertorial +###block-articlebelowtextad +###block-articlefrontpagead +###block-articletopadvert +###block-dfp-top +###block-frontpageabovepartnersad +###block-frontpagead +###block-frontpagesideadvert1 +###block-google-ads +###block-googleads3 +###block-googleads3-2 +###block-openads-0 +###block-openads-1 +###block-openads-13 +###block-openads-14 +###block-openads-2 +###block-openads-3 +###block-openads-4 +###block-openads-5 +###block-sponsors +###blockAd +###blockAds +###block_ad +###block_ad2 +###block_ad_container +###block_advert +###block_advert1 +###block_advert2 +###block_advertisement +###blog-ad +###blog-advert +###blogad +###blogad-wrapper +###blogads +###bm-HeaderAd +###bn_ad +###bnr-300x250 +###bnr-468x60 +###bnr-728x90 +###bnrAd +###body-ads +###bodyAd1 +###bodyAd2 +###bodyAd3 +###bodyAd4 +###body_ad +###body_centered_ad +###bottom-ad +###bottom-ad-1 +###bottom-ad-area +###bottom-ad-banner +###bottom-ad-container +###bottom-ad-leaderboard +###bottom-ad-slot +###bottom-ad-tray +###bottom-ad-wrapper +###bottom-add +###bottom-adhesion +###bottom-adhesion-container +###bottom-ads +###bottom-ads-bar +###bottom-ads-container +###bottom-adspot +###bottom-advertising +###bottom-boxad +###bottom-not-ads +###bottom-side-ad +###bottom-sponsor-add +###bottomAd +###bottomAd300 +###bottomAdBlcok +###bottomAdContainer +###bottomAdSection +###bottomAdSenseDiv +###bottomAdWrapper +###bottomAds +###bottomAdvBox +###bottomBannerAd +###bottomContentAd +###bottomDDAd +###bottomLeftAd +###bottomMPU +###bottomRightAd +###bottom_ad +###bottom_ad_728 +###bottom_ad_area +###bottom_ad_box +###bottom_ad_region +###bottom_ad_unit +###bottom_ad_wrapper +###bottom_adbox +###bottom_ads +###bottom_adwrapper +###bottom_banner_ad +###bottom_fixed_ad_overlay +###bottom_leader_ad +###bottom_player_adv +###bottom_sponsor_ads +###bottom_sponsored_links +###bottom_text_ad +###bottomad +###bottomad300 +###bottomad_table +###bottomadbanner +###bottomadbar +###bottomadholder +###bottomads +###bottomadsdiv +###bottomadsense +###bottomadvert +###bottomadwrapper +###bottomcontentads +###bottomleaderboardad +###bottommpuAdvert +###bottommpuSlot +###bottomsponad +###bottomsponsoredresults +###box-ad +###box-ad-section +###box-ad-sidebar +###box-content-ad +###box1ad +###box2ad +###boxAD +###boxAd +###boxAd300 +###boxAdContainer +###boxAdvert +###boxLREC +###box_ad +###box_ad_container +###box_ad_middle +###box_ads +###box_advertisement +###box_advertisment +###box_articlead +###box_text_ads +###boxad +###boxads +###bpAd +###br-ad-header +###breadcrumb_ad +###breakbarad +###bsa_add_holder_g +###bt-ad +###bt-ad-header +###btfAdNew +###btm_ad +###btm_ads +###btmad +###btnAdDP +###btnAds +###btnads +###btopads +###button-ads +###button_ad_container +###button_ads +###buy-sell-ads +###buySellAds +###buysellads +###carbon-ads-container-bg +###carbonadcontainer +###carbonads +###carbonads-container +###card-ads-top +###category-ad +###category-sponsor +###cellAd +###center-ad +###center-ad-group +###centerads +###ch-ad-outer-right +###ch-ads +###channel_ad +###channel_ads +###circ_ad +###circ_ad_holder +###circad_wrapper +###classifiedsads +###clickforad +###clientAds +###closeAdsDiv +###closeable-ad +###col-right-ad +###colAd +###columnAd +###commentAdWrapper +###commentTopAd +###comment_ad_zone +###comments-ad-container +###comments-ads +###compAdvertisement +###companion-ad +###companionAd +###companionAdDiv +###companion_Ad +###companionad +###connatix +###connatix-moveable +###connatix_placeholder_desktop +###container-ad +###container_ad +###content-ad +###content-ad-side +###content-ads +###content-adver +###content-contentad +###content-header-ad +###contentAd +###contentAdSense +###contentAdTwo +###contentAds +###contentBoxad +###content_Ad +###content_ad +###content_ad_1 +###content_ad_2 +###content_ad_block +###content_ad_container +###content_ad_placeholder +###content_ads +###content_ads_top +###content_adv +###content_bottom_ad +###content_bottom_ads +###content_mpu +###contentad +###contentads +###contextad +###contextual-ads +###contextual-ads-block +###contextualad +###cornerad +###coverads +###criteoAd +###cubeAd +###cube_ad +###cube_ads +###customAd +###customAds +###customad +###desktop-ad-top +###desktop-sidebar-ad +###desktop_middle_ad_fixed +###desktop_top_ad_fixed +###dfp-ad-bottom-wrapper +###dfp-ad-container +###dfp-ad-floating +###dfp-ad-leaderboard +###dfp-ad-leaderboard-wrapper +###dfp-ad-medium_rectangle +###dfp-ad-mediumrect-wrapper +###dfp-ad-mpu1 +###dfp-ad-mpu2 +###dfp-ad-right1 +###dfp-ad-right1-wrapper +###dfp-ad-right2 +###dfp-ad-right2-wrapper +###dfp-ad-right3 +###dfp-ad-right4-wrapper +###dfp-ad-slot2 +###dfp-ad-slot3 +###dfp-ad-slot3-wrapper +###dfp-ad-slot4-wrapper +###dfp-ad-slot5 +###dfp-ad-slot5-wrapper +###dfp-ad-slot6 +###dfp-ad-slot6-wrapper +###dfp-ad-slot7 +###dfp-ad-slot7-wrapper +###dfp-ad-top-wrapper +###dfp-article-mpu +###dfp-atf +###dfp-atf-desktop +###dfp-banner +###dfp-banner-popup +###dfp-billboard1 +###dfp-billboard2 +###dfp-btf +###dfp-btf-desktop +###dfp-footer-desktop +###dfp-header +###dfp-header-container +###dfp-ia01 +###dfp-ia02 +###dfp-interstitial +###dfp-leaderboard +###dfp-leaderboard-desktop +###dfp-masthead +###dfp-middle +###dfp-middle1 +###dfp-mtf +###dfp-mtf-desktop +###dfp-rectangle +###dfp-rectangle1 +###dfp-ros-res-header_container +###dfp-tlb +###dfp-top-banner +###dfpAd +###dfp_ad_mpu +###dfp_ads_4 +###dfp_ads_5 +###dfp_bigbox_2 +###dfp_bigbox_recipe_top +###dfp_container +###dfp_leaderboard +###dfpad-0 +###dfpslot_tow_2-0 +###dfpslot_tow_2-1 +###dfrads-widget-3 +###dfrads-widget-6 +###dfrads-widget-7 +###dianomiNewsBlock +###dict-adv +###direct-ad +###disable-ads-container +###display-ads +###displayAd +###displayAdSet +###display_ad +###displayad_carousel +###displayad_rectangle +###div-ad-1x1 +###div-ad-bottom +###div-ad-flex +###div-ad-inread +###div-ad-leaderboard +###div-ad-r +###div-ad-r1 +###div-ad-top +###div-ad-top_banner +###div-adcenter1 +###div-adcenter2 +###div-advert +###div-contentad_1 +###div-footer-ad +###div-gpt-LDB1 +###div-gpt-MPU1 +###div-gpt-MPU2 +###div-gpt-MPU3 +###div-gpt-Skin +###div-gpt-inline-main +###div-gpt-mini-leaderboard1 +###div-gpt-mrec +###div-insticator-ad-1 +###div-insticator-ad-2 +###div-insticator-ad-3 +###div-insticator-ad-4 +###div-insticator-ad-5 +###div-insticator-ad-6 +###div-insticator-ad-9 +###div-leader-ad +###div-social-ads +###divAd +###divAdDetail +###divAdHere +###divAdHorizontal +###divAdLeft +###divAdMain +###divAdRight +###divAdWrapper +###divAds +###divAdsTop +###divAdv300x250 +###divAdvertisement +###divDoubleAd +###divFoldersAd +###divFooterAd +###divFooterAds +###divSponAds +###divSponsoredLinks +###divStoryBigAd1 +###divThreadAdBox +###divTopAd +###divTopAds +###divWrapper_Ad +###div_ad_TopRight +###div_ad_float +###div_ad_holder +###div_ad_leaderboard +###div_advt_right +###div_belowAd +###div_bottomad +###div_bottomad_container +###div_googlead +###divadfloat +###dnn_adSky +###dnn_adTop +###dnn_ad_banner +###dnn_ad_island1 +###dnn_ad_skyscraper +###dnn_sponsoredLinks +###downloadAd +###download_ad +###download_ads +###dragads +###ds-mpu +###dsStoryAd +###dsk-banner-ad-a +###dsk-banner-ad-b +###dsk-banner-ad-c +###dsk-banner-ad-d +###dsk-box-ad-c +###dsk-box-ad-d +###dsk-box-ad-f +###dsk-box-ad-g +###dv-gpt-ad-bigbox-wrap +###dynamicAdDiv +###em_ad_superbanner +###embedAD +###embedADS +###event_ads +###events-adv-side1 +###events-adv-side2 +###events-adv-side3 +###events-adv-side4 +###events-adv-side5 +###events-adv-side6 +###exoAd +###externalAd +###ezmobfooter +###featureAd +###featureAdSpace +###featureAds +###feature_ad +###featuread +###featured-ads +###featuredAds +###first-ads +###first_ad +###firstad +###fixed-ad +###fixedAd +###fixedban +###floatAd +###floatads +###floating-ad-wrapper +###floating-ads +###floating-advert +###floatingAd +###floatingAdContainer +###floatingAds +###floating_ad +###floating_ad_container +###floating_ads_bottom_textcss_container +###floorAdWrapper +###foot-ad-wrap +###foot-ad2-wrap +###footAd +###footAdArea +###footAds +###footad +###footer-ad +###footer-ad-728 +###footer-ad-block +###footer-ad-box +###footer-ad-col +###footer-ad-google +###footer-ad-large +###footer-ad-slot +###footer-ad-unit +###footer-ad-wrapper +###footer-ads +###footer-adspace +###footer-adv +###footer-advert +###footer-advert-area +###footer-advertisement +###footer-adverts +###footer-adwrapper +###footer-affl +###footer-banner-ad +###footer-leaderboard-ad +###footer-sponsored +###footer-sponsors +###footerAd +###footerAdBottom +###footerAdBox +###footerAdDiv +###footerAdWrap +###footerAdd +###footerAds +###footerAdsPlacement +###footerAdvert +###footerAdvertisement +###footerAdverts +###footerGoogleAd +###footer_AdArea +###footer_ad +###footer_ad_block +###footer_ad_container +###footer_ad_frame +###footer_ad_holder +###footer_adcode +###footer_add +###footer_addvertise +###footer_ads +###footer_ads_holder +###footer_adspace +###footer_adv +###footer_advertising +###footer_leaderboard_ad +###footer_text_ad +###footerad +###footerad728 +###footerads +###footeradsbox +###footeradvert +###forum-top-ad-bar +###frameAd +###frmSponsAds +###front-ad-cont +###front-page-ad +###front-page-advert +###frontPageAd +###front_advert +###front_mpu +###ft-ad +###ft-ads +###full_banner_ad +###fwAdBox +###fwdevpDiv0 +###fwdevpDiv1 +###fwdevpDiv2 +###gAds +###gStickyAd +###g_ad +###g_adsense +###gad300x250 +###gad728x90 +###gads300x250 +###gadsOverlayUnit +###gads_middle +###gallery-ad +###gallery-ad-container +###gallery-advert +###gallery-below-line-advert +###gallery-sidebar-advert +###gallery_ad +###gallery_ads +###gallery_header_ad +###galleryad1 +###gam-ad-ban1 +###gam-ad-doubleMpu-1 +###gam-ad-mpu-1 +###gam-ad-mpu-2 +###gam-ad-mpu-3 +###gam-ad-mpu-4 +###gam-ad-mpuLeaderboard-leaderboard-1 +###gam-ad-mpuLeaderboard-leaderboard-2 +###gam-ad-mpuLeaderboard-leaderboard-3 +###gam-ad-topLeaderboard-1 +###game-ad +###gamead +###gameads +###gasense +###geoAd +###gg_ad +###ggl-ad +###glamads +###global-banner-ad +###globalLeftNavAd +###globalTopNavAd +###global_header_ad +###global_header_ad_area +###goad1 +###goads +###gooadtop +###google-ad +###google-ads +###google-ads-bottom +###google-ads-bottom-container +###google-ads-container +###google-ads-header +###google-adsense +###google-adwords +###google-afc +###google-dfp-bottom +###google-dfp-top +###google-post-ad +###google-post-adbottom +###google-top-ads +###googleAd +###googleAdArea +###googleAdBottom +###googleAdBox +###googleAdTop +###googleAds +###googleAdsense +###googleAdsenseAdverts +###googleSearchAds +###google_ad_1 +###google_ad_2 +###google_ad_3 +###google_ad_container +###google_ad_slot +###google_ads +###google_ads_1 +###google_ads_box +###google_ads_frame +###google_ads_frame1_anchor +###google_ads_frame2_anchor +###google_ads_frame3_anchor +###google_ads_frame4_anchor +###google_ads_frame5_anchor +###google_ads_frame6_anchor +###google_adsense +###google_adsense_ad +###googlead +###googlead2 +###googleadleft +###googleads +###googleads1 +###googleadsense +###googleadstop +###googlebanner +###googlesponsor +###googletextads +###gpt-ad-1 +###gpt-ad-banner +###gpt-ad-halfpage +###gpt-ad-outofpage-wp +###gpt-ad-rectangle1 +###gpt-ad-rectangle2 +###gpt-ad-side-bottom +###gpt-ad-skyscraper +###gpt-instory-ad +###gpt-leaderboard-ad +###gpt-mpu +###gpt-sticky +###grdAds +###gridAdSidebar +###grid_ad +###half-page-ad +###halfPageAd +###half_page_ad_300x600 +###halfpagead +###head-ad +###head-ad-text-wrap +###head-ad-timer +###head-ads +###head-advertisement +###headAd +###headAds +###headAdv +###head_ad +###head_ads +###head_advert +###headad +###headadvert +###header-ad +###header-ad-background +###header-ad-block +###header-ad-bottom +###header-ad-container +###header-ad-holder +###header-ad-label +###header-ad-left +###header-ad-placeholder +###header-ad-right +###header-ad-slot +###header-ad-wrap +###header-ad-wrapper +###header-ad2 +###header-ads +###header-ads-container +###header-ads-holder +###header-ads-wrapper +###header-adsense +###header-adserve +###header-adspace +###header-adv +###header-advert +###header-advert-panel +###header-advertisement +###header-advertising +###header-adverts +###header-advrt +###header-banner-728-90 +###header-banner-ad +###header-banner-ad-wrapper +###header-block-ads +###header-box-ads +###headerAd +###headerAdBackground +###headerAdContainer +###headerAdSpace +###headerAdUnit +###headerAdWrap +###headerAds +###headerAdsWrapper +###headerAdv +###headerAdvert +###headerTopAd +###header_ad +###header_ad_728 +###header_ad_728_90 +###header_ad_banner +###header_ad_block +###header_ad_container +###header_ad_leaderboard +###header_ad_units +###header_ad_widget +###header_ad_wrap +###header_adbox +###header_adcode +###header_ads +###header_ads2 +###header_adsense +###header_adv +###header_advert +###header_advertisement +###header_advertisement_top +###header_advertising +###header_adverts +###header_bottom_ad +###header_publicidad +###header_right_ad +###header_sponsors +###header_top_ad +###headerad +###headerad_large +###headeradbox +###headeradcontainer +###headerads +###headeradsbox +###headeradsense +###headeradspace +###headeradvertholder +###headeradwrap +###headergooglead +###headersponsors +###headingAd +###headline_ad +###hearst-autos-ad-wrapper +###home-ad +###home-ad-block +###home-ad-slot +###home-advert-module +###home-advertise +###home-banner-ad +###home-left-ad +###home-rectangle-ad +###home-side-ad +###home-top-ads +###homeAd +###homeAdLeft +###homeAds +###homeSideAd +###home_ad +###home_ads_vert +###home_advertising_block +###home_bottom_ad +###home_contentad +###home_mpu +###home_sidebar_ad +###home_top_right_ad +###homead +###homeheaderad +###homepage-ad +###homepage-adbar +###homepage-footer-ad +###homepage-header-ad +###homepage-sidebar-ad +###homepage-sidebar-ads +###homepage-sponsored +###homepageAd +###homepageAdsTop +###homepageFooterAd +###homepageGoogleAds +###homepage_ad +###homepage_ad_listing +###homepage_rectangle_ad +###homepage_right_ad +###homepage_right_ad_container +###homepage_top_ad +###homepage_top_ads +###homepageadvert +###hometopads +###horAd +###hor_ad +###horadslot +###horizad +###horizads728 +###horizontal-ad +###horizontal-adspace +###horizontal-banner-ad +###horizontalAd +###horizontalAdvertisement +###horizontal_ad +###horizontal_ad2 +###horizontal_ad_top +###horizontalad +###horizontalads +###hours_ad +###houseAd +###hovered_sponsored +###hp-header-ad +###hp-right-ad +###hp-store-ad +###hpAdVideo +###idDivAd +###id_SearchAds +###iframe-ad +###iframeAd_2 +###iframe_ad_2 +###imPopup +###im_popupDiv +###imgad1 +###imu_ad_module +###in-article-ad +###in-article-mpu +###in-content-ad +###inArticleAdv +###inarticlead +###incontent-ad-2 +###incontent-ad-3 +###incontentAd1 +###incontentAd2 +###incontentAd3 +###index-ad +###index-bottom-advert +###indexSquareAd +###index_ad +###indexad +###infoBottomAd +###infoboxadwrapper +###inhousead +###initializeAd +###inline-ad +###inline-ad-label +###inline-advert +###inline-story-ad +###inline-story-ad2 +###inlineAd +###inlineAdCont +###inlineAdtop +###inlineAdvertisement +###inlineBottomAd +###inline_ad +###inline_ad_section +###inlinead +###inlineads +###inner-ad +###inner-ad-container +###inner-advert-row +###inner-top-ads +###innerad +###innerpage-ad +###instant_ad +###insticator-container +###instoryad +###int-ad +###int_ad +###interads +###intermediate-ad +###internalAdvert +###internalads +###interstitial-shade +###interstitialAd +###interstitialAdContainer +###interstitialAdUnit +###interstitial_ad +###interstitial_ad_container +###interstitial_ads +###intext_ad +###introAds +###intro_ad_1 +###invid_ad +###ipadv +###iq-AdSkin +###iqadcontainer +###iqadoverlay +###iqadtile1 +###iqadtile11 +###iqadtile14 +###iqadtile15 +###iqadtile16 +###iqadtile2 +###iqadtile3 +###iqadtile4 +###iqadtile41 +###iqadtile6 +###iqadtile8 +###iqadtile9 +###iqadtile99 +###islandAd +###islandAdPan +###islandAdPane +###islandAdPane2 +###island_ad_top +###islandad +###jobs-ad +###js-ad-billboard +###js-ad-leaderboard +###js-image-ad-mpu +###js-page-ad-top +###js-wide-ad +###js_commerceInsetModule +###large-ads +###large-bottom-leaderboard-ad +###large-leaderboard-ad +###large-middle-leaderboard-ad +###large-rectange-ad +###large-rectange-ad-2 +###large-skyscraper-ad +###largeAd +###largeAds +###large_rec_ad1 +###largead +###layer_ad +###layer_ad_content +###layerad +###layeradsense +###layout-header-ad-wrapper +###layout_topad +###lb-ad +###lb-sponsor-left +###lb-sponsor-right +###lbAdBar +###lbAdBarBtm +###lblAds +###lead-ads +###lead_ad +###leadad_1 +###leadad_2 +###leader-ad +###leader-board-ad +###leaderAd +###leaderAdContainer +###leaderAdContainerOuter +###leaderBoardAd +###leader_ad +###leader_board_ad +###leaderad +###leaderad_section +###leaderadvert +###leaderboard-ad +###leaderboard-advert +###leaderboard-advertisement +###leaderboard-atf +###leaderboard-bottom-ad +###leaderboard.ad +###leaderboardAd +###leaderboardAdTop +###leaderboardAds +###leaderboardAdvert +###leaderboard_728x90 +###leaderboard_Ad +###leaderboard_ad +###leaderboard_ads +###leaderboard_bottom_ad +###leaderboard_top_ad +###leaderboardad +###leatherboardad +###left-ad +###left-ad-1 +###left-ad-2 +###left-ad-col +###left-ad-iframe +###left-ad-skin +###left-bottom-ad +###left-col-ads-1 +###left-content-ad +###leftAD +###leftAdAboveSideBar +###leftAdCol +###leftAdContainer +###leftAdMessage +###leftAdSpace +###leftAd_fmt +###leftAd_rdr +###leftAds +###leftAdsSmall +###leftAdvert +###leftBanner-ad +###leftColumnAdContainer +###leftGoogleAds +###leftTopAdWrapper +###left_ad +###left_ads +###left_adsense +###left_adspace +###left_adv +###left_advertisement +###left_bg_ad +###left_block_ads +###left_float_ad +###left_global_adspace +###left_side_ads +###left_sidebar_ads +###left_top_ad +###leftad +###leftadg +###leftads +###leftcolAd +###leftcolumnad +###leftforumad +###leftrail_dynamic_ad_wrapper +###lg-banner-ad +###ligatus +###ligatus_adv +###ligatusdiv +###lightboxAd +###linkAdSingle +###linkAds +###link_ads +###linkads +###listadholder +###liste_top_ads_wrapper +###listing-ad +###live-ad +###localAds +###localpp +###locked-footer-ad-wrapper +###logoAd +###logoAd2 +###logo_ad +###long-ad +###long-ad-space +###long-bottom-ad-wrapper +###longAdSpace +###longAdWrap +###long_advert_header +###long_advertisement +###lower-ad-banner +###lower-ads +###lower-advertising +###lower-home-ads +###lowerAdvertisement +###lowerAdvertisementImg +###lower_ad +###lowerads +###lowerthirdad +###lrec_ad +###lrecad +###m-banner-bannerAd +###main-ad +###main-advert +###mainAd +###mainAd1 +###mainAdUnit +###mainAdvert +###mainPageAds +###main_AD +###main_ad +###main_ads +###main_content_ad +###main_rec_ad +###main_top_ad +###mainui-ads +###mapAdsSwiper +###mapAdvert +###marketplaceAds +###marquee-ad +###marquee_ad +###mastAd +###mastAdvert +###mastad +###masterad +###masthead_ad +###masthead_ads_container +###masthead_topad +###med-rect-ad +###med-rectangle-ad +###medRecAd +###medReqAd +###media-ad +###medium-ad +###mediumAd1 +###mediumAdContainer +###mediumAdvertisement +###mediumRectangleAd +###medrec_bottom_ad +###medrec_middle_ad +###medrec_top_ad +###medrectad +###medrectangle_banner +###menuad +###menubarad +###mgid-container +###mgid_iframe +###mid-ad-slot-1 +###mid-ad-slot-3 +###mid-ad-slot-5 +###mid-ads +###mid-table-ad +###midAD +###midRightAds +###midRightTextAds +###mid_ad +###mid_ad_div +###mid_ad_title +###mid_left_ads +###mid_mpu +###mid_roll_ad_holder +###midadspace +###midadvert +###midbarad +###midbnrad +###midcolumn_ad +###middle-ad +###middleAd +###middle_ad +###middle_ads +###middle_mpu +###middlead +###middleads +###middleads2 +###midpost_ad +###midrect_ad +###midstrip_ad +###mini-ad +###mobile-ad-container +###mobile-adhesion +###mobile-ads-ad +###mobile-footer-ad-wrapper +###mobileAdContainer +###mod_ad +###mod_ad_top +###modal-ad +###module-ads-01 +###module-ads-02 +###module_ad +###module_box_ad +###monsterAd +###mpu-ad +###mpu-advert +###mpu-cont +###mpu-content +###mpu-sidebar +###mpu1_parent +###mpu2 +###mpu2_container +###mpu2_parent +###mpuAd +###mpuAdvert +###mpuContainer +###mpuDiv +###mpuInContent +###mpuSecondary +###mpuSlot +###mpuWrapper +###mpuWrapperAd +###mpuWrapperAd2 +###mpu_ad +###mpu_ad2 +###mpu_adv +###mpu_banner +###mpu_box +###mpu_container +###mpu_div +###mpu_holder +###mpu_text_ad +###mpu_top +###mpuad +###mpubox +###mpuholder +###mvp-foot-ad-wrap +###mvp-post-bot-ad +###my-ads +###narrow-ad +###narrow_ad_unit +###native-ads-placeholder +###native_ad2 +###native_ads +###nav-ad-container +###navAdBanner +###nav_ad +###nav_ad_728_mid +###navads-container +###navbar_ads +###navigation-ad +###navlinkad +###newAd +###ng-ad +###ng-ad-lbl +###ni-ad-row +###nk_ad_top +###notify_ad +###ntvads +###openx-text-ad +###openx-widget +###outstream_connatix_container +###overlay-ad-bg +###overlay_ad +###overlayad +###overlayadd +###p-Ad +###p-advert +###p-googlead +###p-googleadsense +###p2HeaderAd +###p2squaread +###page-ad-top +###page-advertising +###page-header-ad +###page-top-ad +###pageAdDiv +###pageAdds +###pageAds +###pageAdsDiv +###pageAdvert +###pageBannerAd +###pageLeftAd +###pageMiddleAdWrapper +###pageRightAd +###page__outside-advertsing +###page_ad +###page_ad_top +###page_top_ad +###pageads_top +###pagebottomAd +###pagination-advert +###panel-ad +###panelAd +###panel_ad1 +###panoAdBlock +###partner-ad +###partnerAd +###partnerMedRec +###partner_ads +###pause-ad +###pause-ads +###pauseAd +###pc-div-gpt-ad_728-3 +###pd-footer-ad +###pencil-ad +###pencil-ad-container +###perm_ad +###permads +###persistentAd +###personalization_ads +###pgAdWrapper +###ph_ad +###player-advert +###player-advertising +###player-below-advert +###player-midrollAd +###playerAd +###playerAdsRight +###player_ad +###player_ads +###player_middle_ad +###player_top_ad +###playerad +###pop.div_pop +###pop_ad +###popadwrap +###popback-ad +###popoverAd +###popupAd +###popupBottomAd +###popup_ad_wrapper +###popupadunit +###post-ad +###post-ads +###post-bottom-ads +###post-content-ad +###post-page-ad +###post-promo-ad +###postAd +###postNavigationAd +###post_ad +###post_addsense +###post_adsense +###post_adspace +###post_advert +###postads0 +###ppcAdverts +###ppvideoadvertisement +###pr_ad +###pr_advertising +###pre-adv +###pre-footer-ad +###preAds_ad_mrec_intext +###preAds_ad_mrec_intext2 +###preminumAD +###premiumAdTop +###premium_ad +###premiumad +###premiumads +###prerollAd +###preroll_ads +###primis-container +###primis_player +###print_ads +###printads +###privateads +###promo-ad +###promoAds +###promoFloatAd +###promo_ads +###pub468x60 +###pub728x90 +###publicidad +###publicidadeLREC +###pushAd +###pushDownAd +###pushdownAd +###pushdownAdWrapper +###pushdown_ad +###pusher-ad +###pvadscontainer +###quads-ad1_widget +###quads-ad2_widget +###quads-admin-ads-js +###r89-desktop-top-ad +###radio-ad-container +###rail-ad-wrap +###rail-bottom-ad +###railAd +###rail_ad +###rail_ad1 +###rail_ad2 +###rec_spot_ad_1 +###recommendAdBox +###rect-ad +###rectAd +###rect_ad +###rectad +###rectangle-ad +###rectangleAd +###rectangleAdTeaser1 +###rectangle_ad +###redirect-ad +###redirect-ad-modal +###reference-ad +###region-node-advert +###reklam_buton +###reklam_center +###reklama +###reklama_big +###reklama_left_body +###reklama_left_up +###reklama_right_up +###related-ads +###related_ad +###related_ads +###related_ads_box +###removeAdsSidebar +###removeadlink +###responsive-ad +###responsive-ad-sidebar-container +###responsive_ad +###responsivead +###resultSponLinks +###resultsAdsBottom +###resultsAdsSB +###resultsAdsTop +###rh-ad +###rh-ad-container +###rh_tower_ad +###rhc_ads +###rhs_ads +###rhs_adverts +###rhsads +###rhsadvert +###richad +###right-ad +###right-ad-block +###right-ad-col +###right-ad-iframe +###right-ad-skin +###right-ad1 +###right-ads +###right-ads-rail +###right-advert +###right-bar-ad +###right-box-ad +###right-content-ad +###right-featured-ad +###right-rail-ad-slot-content-top +###right1-ad +###rightAD +###rightAd +###rightAd1 +###rightAdBar +###rightAdBlock +###rightAdColumn +###rightAdHolder +###rightAdUnit +###rightAd_rdr +###rightAds +###rightAdsDiv +###rightBlockAd +###rightBottomAd +###rightColAd +###rightColumnAds +###rightRailAds +###rightSideAd +###rightSideAdvert +###right_Ads2 +###right_ad +###right_ad_1 +###right_ad_2 +###right_ad_box +###right_ad_container +###right_ad_top +###right_ad_wrapper +###right_ads +###right_ads_box +###right_adsense +###right_advert +###right_advertisement +###right_advertising +###right_adverts +###right_bg_ad +###right_block_ads +###right_bottom_ad +###right_column_ad +###right_column_ad_container +###right_column_ads +###right_column_adverts +###right_player_ad +###right_side_ad +###right_sidebar_ads +###right_top_ad +###right_top_gad +###rightad +###rightad1 +###rightadBorder +###rightadBorder1 +###rightadBorder2 +###rightadContainer +###rightadcell +###rightadg +###rightadhome +###rightads +###rightads300x250 +###rightadsarea +###rightbar-ad +###rightbar_ad +###rightcol_sponsorad +###rightgoogleads +###rightrail-ad +###rightside-ads +###rightside_ad +###rightskyad +###rm-adslot-bigsizebanner_1 +###rm-adslot-contentad_1 +###rotating_ad +###rotatingads +###row-ad +###rowAdv +###rtAdvertisement +###scroll-ad +###scroll_ad +###search-ad +###search-ads1 +###search-google-ads +###search-sponsor +###search-sponsored-links +###searchAd +###searchAds +###search_ad +###search_ads +###second_ad_div +###secondad +###section-ad +###section-ad-bottom +###section_ad +###section_advertisements +###self-ad +###show-ad +###show-sticky-ad +###showAd +###show_ads +###showads +###showcaseAd +###side-ad +###side-ad-container +###side-ads +###side-ads-box +###side-banner-ad +###side-boxad +###sideABlock +###sideAD +###sideAd +###sideAd1 +###sideAd2 +###sideAd3 +###sideAd4 +###sideAdArea +###sideAdLarge +###sideAdSmall +###sideAdSub +###sideAds +###sideBannerAd +###sideBar-ads +###sideBarAd +###sideSponsors +###side_ad +###side_ad_module +###side_ad_wrapper +###side_ads +###side_adverts +###side_longads +###side_skyscraper_ad +###side_sponsors +###sidead +###sidead1 +###sideads +###sideads_container +###sideadscol +###sideadvert +###sideadzone +###sidebar-ad +###sidebar-ad-1 +###sidebar-ad-2 +###sidebar-ad-block +###sidebar-ad-boxes +###sidebar-ad-middle +###sidebar-ad-wrap +###sidebar-ad1 +###sidebar-ad2 +###sidebar-ad3 +###sidebar-ads +###sidebar-ads-content +###sidebar-ads-narrow +###sidebar-ads-wide +###sidebar-ads-wrapper +###sidebar-adspace +###sidebar-adv +###sidebar-advertise-text +###sidebar-advertisement +###sidebar-left-ad +###sidebar-main-ad +###sidebar-sponsors +###sidebar-top-ad +###sidebar-top-ads +###sidebarAd +###sidebarAd1 +###sidebarAd2 +###sidebarAdSense +###sidebarAdSpace +###sidebarAdUnitWidget +###sidebarAds +###sidebarAdvTop +###sidebarAdvert +###sidebarSponsors +###sidebarTextAds +###sidebarTowerAds +###sidebar_ad +###sidebar_ad_1 +###sidebar_ad_2 +###sidebar_ad_3 +###sidebar_ad_big +###sidebar_ad_container +###sidebar_ad_top +###sidebar_ad_widget +###sidebar_ad_wrapper +###sidebar_adblock +###sidebar_ads +###sidebar_box_add +###sidebar_topad +###sidebarad +###sidebarad0 +###sidebaradpane +###sidebarads +###sidebaradsense +###sidebaradverts +###sidebard-ads-wrapper +###sidebargooglead +###sidebargoogleads +###sidebarrectad +###sideline-ad +###sidepad-ad +###single-ad +###single-ad-2 +###single-adblade +###single-mpu +###singleAd +###singleAdsContainer +###singlead +###singleads +###site-ad-container +###site-ads +###site-header__ads +###site-leaderboard-ads +###site-sponsor-ad +###site-sponsors +###siteAdHeader +###site_bottom_ad_div +###site_content_ad_div +###site_top_ad +###site_wrap_ad +###sitead +###skin-ad +###skin-ad-left-rail-container +###skin-ad-right-rail-container +###skinTopAd +###skin_adv +###skinad-left +###skinad-right +###sky-ad +###sky-ads +###sky-left +###sky-right +###skyAd +###skyAdContainer +###skyScraperAd +###skyScrapperAd +###skyWrapperAds +###sky_ad +###sky_advert +###skyads +###skyadwrap +###skybox-ad +###skyline_ad +###skyscrapeAd +###skyscraper-ad +###skyscraperAd +###skyscraperAdContainer +###skyscraperAdWrap +###skyscraperAds +###skyscraperWrapperAd +###skyscraper_ad +###skyscraper_advert +###skyscraperadblock +###skyscrapper-ad +###slideAd +###slide_ad +###slidead +###slideboxad +###slider-ad +###sliderAdHolder +###slider_ad +###sm-banner-ad +###smallAd +###small_ad +###small_ads +###smallad +###smallads +###smallerAd +###sp-adv-banner-top +###specialAd +###special_ads +###specialadfeatures +###specials_ads +###speed_ads +###speeds_ads +###sponBox +###spon_links +###sponlink +###sponlinks +###sponsAds +###sponsLinks +###spons_links +###sponseredlinks +###sponsor-box-widget +###sponsor-flyout +###sponsor-flyout-wrap +###sponsor-links +###sponsor-partners +###sponsor-sidebar-container +###sponsorAd +###sponsorAd1 +###sponsorAd2 +###sponsorAdDiv +###sponsorBar +###sponsorBorder +###sponsorContainer0 +###sponsorFooter +###sponsorLinkDiv +###sponsorLinks +###sponsorResults +###sponsorSpot +###sponsorTab +###sponsorText +###sponsorTextLink +###sponsor_300x250 +###sponsor_ad +###sponsor_ads +###sponsor_bar +###sponsor_bottom +###sponsor_box +###sponsor_deals +###sponsor_div +###sponsor_footer +###sponsor_header +###sponsor_link +###sponsor_no +###sponsor_posts +###sponsor_right +###sponsored-ads +###sponsored-footer +###sponsored-inline +###sponsored-links +###sponsored-links-alt +###sponsored-links-container +###sponsored-listings +###sponsored-message +###sponsored-products +###sponsored-recommendations +###sponsored-resources +###sponsored-search +###sponsored-text-links +###sponsored-widget +###sponsored1 +###sponsoredAd +###sponsoredAdvertisement +###sponsoredBottom +###sponsoredBox1 +###sponsoredBox2 +###sponsoredHoz +###sponsoredLinks +###sponsoredLinksBox +###sponsoredList +###sponsoredResults +###sponsoredResultsWide +###sponsoredTop +###sponsored_ads +###sponsored_container +###sponsored_content +###sponsored_head +###sponsored_label +###sponsored_link_bottom +###sponsored_links +###sponsored_native_ad +###sponsoredad +###sponsoredlinks +###sponsorfeature +###sponsorlink +###sponsors-article +###sponsors-block +###sponsors-home +###sponsorsBox +###sponsorsContainer +###sponsorship-box +###sporsored-results +###spotlight-ads +###spotlightAds +###spotlight_ad +###spotlightad +###sprint_ad +###sqAd +###sq_ads +###square-ad +###square-ad-box +###square-ad-space +###square-ads +###square-sponsors +###squareAd +###squareAdBottom +###squareAdSpace +###squareAdTop +###squareAdWrap +###squareAds +###squareGoogleAd +###square_ad +###squaread +###squareadevertise +###squareadvert +###squared_ad +###staticad +###stationad +###sticky-ad +###sticky-ad-bottom +###sticky-ad-container +###sticky-ad-header +###sticky-add-side-block +###sticky-ads +###sticky-ads-top +###sticky-custom-ads +###sticky-footer-ad +###sticky-footer-ads +###sticky-left-ad +###sticky-rail-ad +###stickyAd +###stickyAdBlock +###stickyBottomAd +###stickySidebarAd +###stickySkyAd +###sticky_sidebar_ads +###stickyad +###stickyads +###stickyleftad +###stickyrightad +###stopAdv +###stop_ad3 +###story-ad +###story-bottom-ad +###storyAd +###story_ad +###story_ads +###storyad2 +###stripadv +###subheaderAd +###takeover-ad +###takeover_ad +###takeoverad +###td-ad-placeholder +###tdAds +###td_adunit2 +###td_sponsorAd +###teaser1[style^="width:autopx;"] +###teaser2[style^="width:autopx;"] +###teaser3[style="width: 100%;text-align: center;display: scroll;position:fixed;bottom: 0;margin: 0 auto;z-index: 103;"] +###teaser3[style^="width:autopx;"] +###text-ad +###text-ads +###text-intext-ads +###text-link-ads +###textAd +###textAd1 +###textAds +###textAdsTop +###text_ad +###text_ads +###text_advert +###textad +###textad3 +###textlink-advertisement +###textsponsor +###tile-ad +###tileAds +###tmInfiniteAd +###toaster_ad +###top-ad +###top-ad-area +###top-ad-banner +###top-ad-container +###top-ad-content +###top-ad-desktop +###top-ad-div +###top-ad-google +###top-ad-iframe +###top-ad-rect +###top-ad-slot +###top-ad-slot-0 +###top-ad-slot-1 +###top-ad-unit +###top-ad-wrapper +###top-adblock +###top-adds +###top-ads +###top-ads-1 +###top-ads-contain +###top-ads-container +###top-adspot +###top-advert +###top-advertisement +###top-advertisements +###top-advertising-content +###top-banner-ad +###top-banner-ad-browser +###top-buy-sell-ads +###top-dfp +###top-head-ad +###top-leaderboard-ad +###top-left-ad +###top-middle-add +###top-not-ads +###top-right-ad +###top-right-ad-slot +###top-skin-ad +###top-skin-ad-bg +###top-sponsor-ad +###top-story-ad +###topAD +###topAd +###topAd728x90 +###topAdArea +###topAdBanner +###topAdBar +###topAdBox +###topAdContainer +###topAdDiv +###topAdDropdown +###topAdHolder +###topAdShow +###topAdSpace +###topAdSpace_div +###topAdWrapper +###topAdcontainer +###topAds +###topAds1 +###topAds2 +###topAdsContainer +###topAdsDiv +###topAdsG +###topAdv +###topAdvBox +###topAdvert +###topBanner-ad +###topBannerAd +###topBannerAdContainer +###topBannerAdv +###topImgAd +###topLeaderboardAd +###topMPU +###topMpuContainer +###topSponsorBanner +###topSponsoredLinks +###top_AD +###top_ad +###top_ad-360 +###top_ad_area +###top_ad_banner +###top_ad_block +###top_ad_box +###top_ad_container +###top_ad_td +###top_ad_unit +###top_ad_wrapper +###top_ad_zone +###top_add +###top_ads +###top_ads_box +###top_ads_container +###top_ads_region +###top_ads_wrap +###top_adsense_cont +###top_adspace +###top_adv +###top_advert +###top_advert_box +###top_advertise +###top_advertising +###top_banner_ads +###top_container_ad +###top_google_ads +###top_mpu +###top_mpu_ad +###top_rectangle_ad +###top_right_ad +###top_row_ad +###top_span_ad +###top_sponsor_ads +###top_sponsor_text +###topad +###topad-728x90 +###topad-block +###topad-wrap +###topad1 +###topad728 +###topad_holder +###topad_left +###topad_right +###topad_table +###topadbanner +###topadbanner2 +###topadbar +###topadblock +###topadcell +###topadcontainer +###topaddwide +###topadleft +###topadone +###topadplaceholder +###topadright +###topads-spacer +###topads-wrapper +###topadsblock +###topadsdiv +###topadsense +###topadspace +###topadvert +###topadwrap +###topadz +###topadzone +###topbanner_ad +###topbanner_sponsor +###topbannerad +###topbanneradtitle +###topbar-ad +###topbarAd +###topbarad +###topbarads +###topcustomad +###topheader_ads +###topleaderAd +###topleaderboardad +###topnavad +###toppannonse +###topright-ad +###toprightAdvert +###toprightad +###toprow-ad +###topsidebar-ad +###topsponad +###topsponsorads +###topsponsored +###toptextad +###towerAdContainer +###towerad +###tpl_advertising +###transparentad +###txtAdHeader +###upper-ads +###upperMpu +###upperRightAds +###upper_adbox +###upper_advertising +###upper_small_ad +###upperad +###velsof_wheel_container +###vert-ads +###vertAd2 +###vert_ad +###vert_ad_placeholder +###vertad1 +###vertical.ad +###verticalAds +###vertical_ad +###vertical_ads +###verticalads +###video-ad +###video-ad-companion-rectangle +###video-adv +###video-adv-wrapper +###video-advert +###video-embed-ads +###video-in-player-ad +###video-side-adv +###video-sponsor-links +###video-under-player-ad +###videoAd +###videoAdContainer +###videoAdvert +###videoCompanionAd +###videoOverAd +###videoOverAd300 +###videoPauseAd +###video_adv +###video_embed_ads +###video_hor_bot_ads +###video_overlay_ad +###videoad +###videoads +###viewAd1 +###visual-ad +###wTopAd +###wallAd +###wall_advert +###wd-sponsored +###weather-ad +###weather_sponsor +###weatherad +###welcome_ad +###wg_ads +###wgtAd +###whitepaper-ad +###wide-ad +###wideAdd +###wide_ad_unit +###wide_ad_unit2 +###wide_ad_unit3 +###wide_adv +###wide_right_ad +###widget-ads-3 +###widget-ads-4 +###widget-adv-12 +###widget-box-ad-1 +###widget-box-ad-2 +###widget_Adverts +###widget_ad +###widget_advertisement +###widget_thrive_ad_default-2 +###widget_thrive_ad_default-4 +###widgetwidget_adserve +###widgetwidget_adserve2 +###wl-pencil-ad +###wp-insert-ad-widget-1 +###wp-topAds +###wpgtr_stickyads_textcss_container +###wrapAd +###wrapAdRight +###wrapCommentAd +###wrapper-AD_G +###wrapper-AD_L +###wrapper-AD_L2 +###wrapper-AD_L3 +###wrapper-AD_R +###wrapper-ad +###wrapper-ad970 +###wrapper_ad_Top +###wrapper_topad +###wtopad +###yahoo_ads +###yahooads +###yandex_ad +###yandex_ad2 +###yatadsky +###yrail_ads +###yreSponsoredLinks +###ysm_ad_iframe +###zMSplacement1 +###zMSplacement2 +###zMSplacement3 +###zMSplacement4 +###zMSplacement5 +###zMSplacement6 +###zdcFloatingBtn +###zeus_top-banner +###zone-adsense +###zsAdvertisingBanner +##.-advertsSidebar +##.ADBAR +##.ADBox +##.ADFooter +##.ADInfo +##.ADLeader +##.ADMiddle1 +##.ADPod +##.ADServer +##.ADStyle +##.ADTop +##.ADVBig +##.ADVFLEX_250 +##.ADV_Mobile +##.AD_2 +##.AD_area +##.ADbox +##.ADmid +##.ADwidget +##.ATF_wrapper +##.Ad--Align +##.Ad--empty +##.Ad--header +##.Ad--loading +##.Ad--presenter +##.Ad--sidebar +##.Ad-Advert_Container +##.Ad-Header +##.Ad-Inner +##.Ad-adhesive +##.Ad-hor-height +##.Ad-label +##.Ad-leaderboard +##.Ad.Leaderboard +##.Ad300 +##.Ad3Tile +##.Ad728x90 +##.AdBar +##.AdBody:not(body) +##.AdBorder +##.AdBottomPage +##.AdBox160 +##.AdBox7 +##.AdBox728 +##.AdCenter +##.AdCommercial +##.AdCompactheader +##.AdContainer +##.AdContainer-Sidebar +##.AdHeader +##.AdHere +##.AdHolder +##.AdInline +##.AdInsLink +##.AdLeft1 +##.AdLeft2 +##.AdMedium +##.AdMessage +##.AdMod +##.AdModule +##.AdOneColumnContainer +##.AdOuterMostContainer +##.AdPanel +##.AdPlaceHolder +##.AdPlaceholder +##.AdPlacementContainer +##.AdProduct +##.AdRight1 +##.AdRight2 +##.AdSense +##.AdSenseLeft +##.AdSlot +##.AdSpace +##.AdSpeedWP +##.AdTagModule +##.AdTitle +##.AdTop +##.AdUnit +##.AdWidget_ImageWidget +##.Ad_C +##.Ad_D +##.Ad_Label +##.Ad_Right +##.Ad_container +##.Ads--center +##.Ads-768x90 +##.Ads-background +##.Ads-leaderboard +##.Ads-slot +##.Ads-sticky +##.AdsBottom +##.AdsBoxBottom +##.AdsBoxSection +##.AdsBoxTop +##.AdsLayout__top-container +##.AdsRectangleWrapper +##.AdsSlot +##.Ads__wrapper +##.Ads_header +##.Adsense +##.AdsenseBox +##.Adsterra +##.Adtext +##.Adv468 +##.Advert-label +##.Advert300x250 +##.AdvertContainer +##.AdvertWrapper +##.AdvertisementAfterHeader +##.AdvertisementAfterPost +##.AdvertisementAsidePost +##.AdvertisementText +##.AdvertisementTextTag +##.AdvertisementTop +##.Advertisment +##.AdvertorialTeaser +##.AdvtSample +##.AdzerkBanner +##.AffiliateAds +##.AppFooter__BannerAd +##.Arpian-ads +##.Article-advert +##.ArticleAd +##.ArticleAdSide +##.ArticleAdWrapper +##.ArticleInlineAd +##.ArticleInnerAD +##.Article__Ad +##.BOX_Ad +##.BOX_LeadAd +##.Banner300x250 +##.Banner468X60 +##.BigBoxAd +##.BigBoxAdLabel +##.Billboard-ad +##.Billboard-ad-holder +##.Billboard_2-ad-holder +##.Billboard_3-ad-holder +##.Billboard_4-ad-holder +##.Billboard_5-ad-holder +##.BlockAd +##.BottomAd-container +##.BottomAdContainer +##.BottomAdsPartial +##.BottomAffiliate +##.BoxAd +##.BoxAdWrap +##.BoxRail-ad +##.ButtonAd +##.CommentAd +##.ConnatixAd +##.ContentAd +##.ContentAds +##.ContentBottomAd +##.ContentTextAd +##.ContentTopAd +##.DFPad +##.DisplayAd +##.FirstAd +##.FooterAd +##.FooterAdContainer +##.FooterAds +##.Footer_1-ad-holder +##.GRVAd +##.GRVMpuWrapper +##.GRVMultiVideo +##.Gallery-Content-BottomAd +##.GeminiAdItem +##.GeminiNativeAd +##.GoogleAdv +##.GoogleDfpAd +##.GoogleDfpAd-Content +##.GoogleDfpAd-Float +##.GoogleDfpAd-container +##.GoogleDfpAd-wrap +##.GoogleDfpAd-wrapper +##.GoogleDfpAdModule +##.GoogleDoubleClick-SponsorText +##.GroupAdSense +##.HeaderAds +##.HeaderBannerAd +##.HeadingAdSpace +##.Hero-Ad +##.HomeAds +##.InArticleAd +##.IndexRightAd +##.InsertedAd +##.LastAd +##.LayoutBottomAds +##.LayoutHomeAds +##.LayoutHomeAdsAd +##.LayoutPromotionAdsNew +##.LazyLoadAd +##.LeaderAd +##.LeaderAdvertisement +##.LeaderBoardAd +##.LearderAd_Border +##.ListicleAdRow +##.MPUHolder +##.MPUad +##.MapLayout_BottomAd +##.MapLayout_BottomMobiAd +##.MarketGid_container +##.MbanAd +##.MiddleAd +##.MiddleAdContainer +##.MiddleAdvert +##.MiddleRightRadvertisement +##.NA_ad +##.NR-Ads +##.NativeAdContainerRegion +##.NavBarAd +##.Normal-add +##.OAS_wrap +##.OcelotAdModule +##.OcelotAdModule-ad +##.PPD_ADS_JS +##.Page-ad +##.PageTopAd +##.PcSideBarAd +##.PencilAd +##.PostAdvertisementBeforePost +##.PostSidebarAd +##.Post__ad +##.PrimisResponsiveStyle +##.PrintAd-Slider +##.PushdownAd +##.RectangleAd +##.Rectangle_1-ad-holder +##.Rectangle_2-ad-holder +##.Rectangle_3-ad-holder +##.RelatedAds +##.ResponsiveAd +##.RightAd +##.RightAd1 +##.RightAd2 +##.RightAdvertisement +##.RightGoogleAd +##.RightRailAd +##.RightRailAds +##.RightTowerAd +##.STR_AdBlock +##.SecondaryAd +##.SecondaryAdLink +##.Section-ad +##.SectionSponsor +##.SideAd +##.SideAdCol +##.SideAds +##.SideWidget__ad +##.Sidebar-ad +##.Sidebar-ad--300x600 +##.SidebarAd +##.SidebarAdvert +##.SidebarRightAdvertisement +##.SimpleAd +##.SkyAdContainer +##.SkyAdContent +##.SkyScraperAd +##.Sponsor-container +##.SponsorHeader +##.SponsorIsland +##.SponsorLink +##.SponsoredAdTitle +##.SponsoredArticleAd +##.SponsoredContent +##.SponsoredContentWidget +##.SponsoredLinks +##.SponsoredLinksModule +##.SponsoredLinksPadding +##.SponsoredLinksPanel +##.SponsoredResults +##.Sponsored_link +##.SquareAd +##.Sticky-AdContainer +##.StickyAdRail__Inner +##.SummaryPage-HeaderAd +##.Textads +##.TopAd +##.TopAdBox +##.TopAdContainer +##.TopAdL +##.TopAdR +##.TopAds +##.TopBannerAd +##.TopRightRadvertisement +##.Top_Ad +##.TrackedBannerPromo +##.TrackedSidebarPromo +##.TrafficAd +##.U210-adv-column +##.UnderAd +##.VerticalAd +##.Video-Ad +##.VideoAd +##.WPBannerizeWidget +##.WP_Widget_Ad_manager +##.WideAdTile +##.WideAdsLeft +##.WidgetAdvertiser +##.WidthAd +##.\[\&_\.gdprAdTransparencyCogWheelButton\]\:\!pjra-z-\[5\] +##._SummaryPageHeaderAdView +##._SummaryPageSidebarStickyAdView +##._ads +##._ads-full +##._ap_adrecover_ad +##._ap_apex_ad +##._articleAdvert +##._bannerAds +##._bottom_ad_wrapper +##._fullsquaread +##._has-ads +##._popIn_recommend_article_ad +##._popIn_recommend_article_ad_reserved +##._table_ad_div_wide +##.a-ad +##.a-adhesion +##.a-d-250 +##.a-d-90 +##.a-dserver +##.a-dserver_text +##.a-sponsor +##.ab-ad_placement-article +##.ablock300 +##.ablock468 +##.ablock728 +##.above-header-advert +##.aboveCommentAds +##.abovead +##.ac-banner-ad +##.ac-widget-placeholder +##.ac_adbox +##.acm-ad-tag-unit +##.ad--300 +##.ad--300x250 +##.ad--468 +##.ad--468-60 +##.ad--728x90 +##.ad--970-750-336-300 +##.ad--970-90 +##.ad--article +##.ad--article-top +##.ad--articlemodule +##.ad--b +##.ad--banner +##.ad--banner2 +##.ad--banniere_basse +##.ad--banniere_haute +##.ad--billboard +##.ad--bottom +##.ad--bottom-label +##.ad--bottommpu +##.ad--boundries +##.ad--button +##.ad--c +##.ad--center +##.ad--centered +##.ad--container +##.ad--content +##.ad--content-ad +##.ad--dart +##.ad--desktop +##.ad--displayed +##.ad--droite_basse +##.ad--droite_haute +##.ad--droite_middle +##.ad--e +##.ad--fallback +##.ad--footer +##.ad--fullsize +##.ad--google +##.ad--halfpage +##.ad--header +##.ad--homepage-top +##.ad--in-article +##.ad--in-content +##.ad--inArticleBanner +##.ad--inline +##.ad--inner +##.ad--large +##.ad--leaderboard +##.ad--loading +##.ad--medium-rectangle +##.ad--medium_rectangle +##.ad--medium_rectangle_outstream +##.ad--mediumrectangle +##.ad--mid +##.ad--mid-content +##.ad--mobile +##.ad--mpu +##.ad--native +##.ad--nativeFlex +##.ad--no-bg +##.ad--noscroll +##.ad--object +##.ad--outstream +##.ad--overlayer +##.ad--p1 +##.ad--p2 +##.ad--p3 +##.ad--p4 +##.ad--p6 +##.ad--p7 +##.ad--placeholder +##.ad--pubperform +##.ad--pushdown +##.ad--rail +##.ad--rectangle +##.ad--rectangle1 +##.ad--rectangle2 +##.ad--right +##.ad--rightRail +##.ad--scroll +##.ad--section +##.ad--sidebar +##.ad--sky +##.ad--skyscraper +##.ad--slider +##.ad--slot +##.ad--sponsor-content +##.ad--square-rectangle +##.ad--sticky +##.ad--stripe +##.ad--stroeer +##.ad--subcontainer +##.ad--top +##.ad--top-desktop +##.ad--top-leaderboard +##.ad--top-slot +##.ad--topmobile +##.ad--topmobile2 +##.ad--topmobile3 +##.ad--wallpaper +##.ad--widget +##.ad--wrapper +##.ad-1 +##.ad-120-60 +##.ad-120x60 +##.ad-120x600 +##.ad-120x90 +##.ad-125x125 +##.ad-13 +##.ad-137 +##.ad-14 +##.ad-160 +##.ad-160-160 +##.ad-160-600 +##.ad-160x600 +##.ad-2 +##.ad-200 +##.ad-200x200 +##.ad-250.gnad +##.ad-250x300 +##.ad-3 +##.ad-300 +##.ad-300-2 +##.ad-300-250-600 +##.ad-300-600 +##.ad-300-b +##.ad-300-block +##.ad-300-dummy +##.ad-300-flex +##.ad-300-x-250 +##.ad-300250 +##.ad-300X250 +##.ad-300X250-body +##.ad-300x +##.ad-300x100 +##.ad-300x200 +##.ad-300x250 +##.ad-300x600 +##.ad-336 +##.ad-336x280 +##.ad-336x280B +##.ad-350 +##.ad-4 +##.ad-468 +##.ad-468x120 +##.ad-468x60 +##.ad-5 +##.ad-544x250 +##.ad-55 +##.ad-560 +##.ad-6 +##.ad-600 +##.ad-600-h +##.ad-635x40 +##.ad-7 +##.ad-728 +##.ad-728-90 +##.ad-728-banner +##.ad-728-x-90 +##.ad-728x90 +##.ad-728x90-1 +##.ad-728x90-top +##.ad-728x90-top0 +##.ad-728x90-wrapper +##.ad-728x90_forum +##.ad-768 +##.ad-8 +##.ad-88-60 +##.ad-88x31 +##.ad-9 +##.ad-90 +##.ad-90x600 +##.ad-970 +##.ad-970-250 +##.ad-970-90 +##.ad-970250 +##.ad-970x250 +##.ad-970x90 +##.ad-Advert_Placeholder +##.ad-LREC +##.ad-LREC2 +##.ad-Leaderboard +##.ad-MPU +##.ad-MediumRectangle +##.ad-PENCIL +##.ad-S +##.ad-Square +##.ad-SuperBanner +##.ad-TOPPER +##.ad-W +##.ad-a +##.ad-ab +##.ad-abc +##.ad-above-header +##.ad-accordion +##.ad-active +##.ad-adSense +##.ad-adcode +##.ad-adhesion +##.ad-adlink-bottom +##.ad-adlink-side +##.ad-adsense +##.ad-adsense-block-250 +##.ad-advertisement-horizontal +##.ad-affiliate +##.ad-after-content +##.ad-after-header +##.ad-align-none +##.ad-aligncenter +##.ad-alignment +##.ad-alsorectangle +##.ad-anchor +##.ad-aps-wide +##.ad-area--pd +##.ad-area-small +##.ad-article-breaker +##.ad-article-inline +##.ad-article-teaser +##.ad-article-wrapper +##.ad-aside-pc-billboard +##.ad-atf +##.ad-atf-top +##.ad-background +##.ad-background-center +##.ad-background-container +##.ad-ban +##.ad-banner-2 +##.ad-banner-250x600 +##.ad-banner-300 +##.ad-banner-300x250 +##.ad-banner-5 +##.ad-banner-6 +##.ad-banner-728x90 +##.ad-banner-bottom-container +##.ad-banner-box +##.ad-banner-btf +##.ad-banner-container +##.ad-banner-content +##.ad-banner-full-wrapper +##.ad-banner-header +##.ad-banner-image +##.ad-banner-inlisting +##.ad-banner-leaderboard +##.ad-banner-placeholder +##.ad-banner-single +##.ad-banner-smaller +##.ad-banner-static +##.ad-banner-top +##.ad-banner-top-wrapper +##.ad-banner-wrapper +##.ad-banners +##.ad-bar +##.ad-bar-header +##.ad-bb +##.ad-before-header +##.ad-below +##.ad-below-images +##.ad-below-player +##.ad-belowarticle +##.ad-bg +##.ad-big +##.ad-big-box +##.ad-bigbanner +##.ad-bigbillboard +##.ad-bigbox +##.ad-bigbox-double-inread +##.ad-bigbox-fixed +##.ad-bigsize +##.ad-billboard +##.ad-bline +##.ad-block +##.ad-block--300 +##.ad-block--leader +##.ad-block-300 +##.ad-block-banner-container +##.ad-block-big +##.ad-block-bottom +##.ad-block-btf +##.ad-block-container +##.ad-block-header +##.ad-block-holder +##.ad-block-inside +##.ad-block-mod +##.ad-block-section +##.ad-block-square +##.ad-block-sticky-ad +##.ad-block-wide +##.ad-block-wk +##.ad-block-wrapper +##.ad-block-wrapper-dev +##.ad-blogads +##.ad-bnr +##.ad-body +##.ad-boombox +##.ad-border +##.ad-bordered +##.ad-borderless +##.ad-bot +##.ad-bottom +##.ad-bottom-container +##.ad-bottom-right-container +##.ad-bottom728x90 +##.ad-bottomLeft +##.ad-bottomleader +##.ad-bottomline +##.ad-box-2 +##.ad-box-300x250 +##.ad-box-auto +##.ad-box-caption +##.ad-box-container +##.ad-box-title +##.ad-box-up +##.ad-box-video +##.ad-box-wrapper +##.ad-box1 +##.ad-box2 +##.ad-box3 +##.ad-box:not(#ad-banner):not(:empty) +##.ad-box_h +##.ad-boxamp-wrapper +##.ad-boxbottom +##.ad-boxes +##.ad-boxsticky +##.ad-boxtop +##.ad-brdr-btm +##.ad-break +##.ad-break-item +##.ad-breaker +##.ad-breakout +##.ad-browse-rectangle +##.ad-bt +##.ad-btn +##.ad-btn-heading +##.ad-bug-300w +##.ad-burnside +##.ad-button +##.ad-buttons +##.ad-c-label +##.ad-cad +##.ad-calendar +##.ad-call-300x250 +##.ad-callout +##.ad-callout-wrapper +##.ad-caption +##.ad-card +##.ad-card-container +##.ad-carousel +##.ad-cat +##.ad-catfish +##.ad-cell +##.ad-cen +##.ad-cen2 +##.ad-cen3 +##.ad-center +##.ad-centered +##.ad-centering +##.ad-chartbeatwidget +##.ad-choices +##.ad-circ +##.ad-click +##.ad-close-button +##.ad-cls +##.ad-cls-fix +##.ad-cnt +##.ad-code +##.ad-codes +##.ad-col +##.ad-col-02 +##.ad-colour +##.ad-column +##.ad-comment +##.ad-companion +##.ad-complete +##.ad-component +##.ad-component-fullbanner2 +##.ad-component-wrapper +##.ad-contain +##.ad-contain-300x250 +##.ad-contain-top +##.ad-container--inline +##.ad-container--leaderboard +##.ad-container--masthead +##.ad-container--mrec +##.ad-container--stripe +##.ad-container--top +##.ad-container-160x600 +##.ad-container-300x250 +##.ad-container-728 +##.ad-container-728x90 +##.ad-container-adsense +##.ad-container-banner-top +##.ad-container-bot +##.ad-container-bottom +##.ad-container-box +##.ad-container-embedded +##.ad-container-header +##.ad-container-inner +##.ad-container-inthread +##.ad-container-leaderboard +##.ad-container-left +##.ad-container-m +##.ad-container-medium-rectangle +##.ad-container-middle +##.ad-container-multiple +##.ad-container-pave +##.ad-container-property +##.ad-container-responsive +##.ad-container-right +##.ad-container-side +##.ad-container-single +##.ad-container-tool +##.ad-container-top +##.ad-container-topad +##.ad-container-wrapper +##.ad-container1 +##.ad-container3x +##.ad-container__ad-slot +##.ad-container__leaderboard +##.ad-container__sticky-wrapper +##.ad-container_row +##.ad-content +##.ad-content-area +##.ad-content-rectangle +##.ad-content-slot +##.ad-content-wrapper +##.ad-context +##.ad-cover +##.ad-critical +##.ad-cta +##.ad-current +##.ad-curtain +##.ad-custom-size +##.ad-d +##.ad-decoration +##.ad-defer +##.ad-desktop +##.ad-desktop-in-content +##.ad-desktop-legacy +##.ad-desktop-native-1 +##.ad-desktop-native-2 +##.ad-desktop-only +##.ad-desktop-right +##.ad-detail +##.ad-dfp-column +##.ad-dfp-row +##.ad-disclaimer +##.ad-disclaimer-container +##.ad-disclaimer-text +##.ad-display +##.ad-displayed +##.ad-diver +##.ad-divider +##.ad-dog +##.ad-dog__cnx-container +##.ad-dog__ratio-16x9 +##.ad-dt +##.ad-dx_wrp +##.ad-e +##.ad-enabled +##.ad-engage +##.ad-entity-container +##.ad-entry-wrapper +##.ad-ex +##.ad-exchange +##.ad-expand +##.ad-external +##.ad-fadein +##.ad-fadeup +##.ad-feature-content +##.ad-feature-sponsor +##.ad-feature-text +##.ad-featured-video-caption +##.ad-feedback +##.ad-fi +##.ad-field +##.ad-filler +##.ad-filmstrip +##.ad-first +##.ad-fix +##.ad-fixed +##.ad-flag +##.ad-flex +##.ad-flex-center +##.ad-float +##.ad-floating +##.ad-floor +##.ad-footer +##.ad-footer-empty +##.ad-footer-leaderboard +##.ad-format-300x250 +##.ad-format-300x600 +##.ad-forum +##.ad-frame +##.ad-frame-container +##.ad-full +##.ad-full-width +##.ad-fullbanner +##.ad-fullbanner-btf-container +##.ad-fullbannernohieght +##.ad-fullwidth +##.ad-gap-sm +##.ad-giga +##.ad-google +##.ad-google-contextual +##.ad-gpt +##.ad-gpt-breaker +##.ad-gpt-container +##.ad-gpt-main +##.ad-gpt-vertical +##.ad-graphic-large +##.ad-gray +##.ad-grey +##.ad-grid +##.ad-grid-125 +##.ad-grid-container +##.ad-group +##.ad-halfpage +##.ad-halfpage-placeholder +##.ad-head +##.ad-header +##.ad-header-below +##.ad-header-container +##.ad-header-creative +##.ad-header-inner-wrap +##.ad-header-pencil +##.ad-header-placeholder +##.ad-header-sidebar +##.ad-header-small-square +##.ad-heading +##.ad-height-250 +##.ad-height-280 +##.ad-height-600 +##.ad-here +##.ad-hero +##.ad-hide-mobile +##.ad-hideable +##.ad-hint +##.ad-hldr-tmc +##.ad-ho +##.ad-hold +##.ad-holder +##.ad-holder-center +##.ad-holder-mob-300 +##.ad-home-bottom +##.ad-home-leaderboard-placeholder +##.ad-home-right +##.ad-homeleaderboard +##.ad-homepage +##.ad-homepage-1 +##.ad-homepage-2 +##.ad-homepage-one +##.ad-hor +##.ad-horizontal +##.ad-horizontal-large +##.ad-horizontal-top +##.ad-horizontal-top-wrapper +##.ad-hoverable +##.ad-hpto +##.ad-icon +##.ad-identifier +##.ad-iframe +##.ad-iframe-container +##.ad-in-content +##.ad-in-content-300 +##.ad-in-post +##.ad-in-read +##.ad-in-results +##.ad-inStory +##.ad-incontent +##.ad-incontent-wrap +##.ad-index-main +##.ad-indicator-horiz +##.ad-info-wrap +##.ad-inline +##.ad-inline-article +##.ad-inline-block +##.ad-inner +##.ad-inner-container +##.ad-inner-container-background +##.ad-innr +##.ad-insert +##.ad-inserter-widget +##.ad-inside +##.ad-integrated-display +##.ad-internal +##.ad-interruptor +##.ad-interstitial +##.ad-island +##.ad-item +##.ad-item-related +##.ad-label +##.ad-lable +##.ad-landscape +##.ad-large-1 +##.ad-large-game +##.ad-last +##.ad-lat +##.ad-lat2 +##.ad-layer +##.ad-lazy +##.ad-lb +##.ad-ldrbrd +##.ad-lead +##.ad-lead-bottom +##.ad-lead-magnet +##.ad-leader +##.ad-leader-board +##.ad-leader-bottom +##.ad-leader-plus-top +##.ad-leader-top +##.ad-leader-wrap +##.ad-leader-wrapper +##.ad-leaderboard +##.ad-leaderboard-base +##.ad-leaderboard-companion +##.ad-leaderboard-container +##.ad-leaderboard-flex +##.ad-leaderboard-footer +##.ad-leaderboard-header +##.ad-leaderboard-middle +##.ad-leaderboard-placeholder +##.ad-leaderboard-slot +##.ad-leaderboard-splitter +##.ad-leaderboard-top +##.ad-leaderboard-wrapper +##.ad-leaderbody +##.ad-leaderheader +##.ad-leadtop +##.ad-left-1 +##.ad-left-top +##.ad-leftrail +##.ad-lib-div +##.ad-line +##.ad-link +##.ad-link-block +##.ad-link-label +##.ad-link-left +##.ad-link-right +##.ad-links +##.ad-links-text +##.ad-list-desktop +##.ad-list-item +##.ad-loaded +##.ad-loader +##.ad-location +##.ad-location-container +##.ad-lock +##.ad-lock-content +##.ad-lowerboard +##.ad-lrec +##.ad-m-banner +##.ad-m-mrec +##.ad-m-rec +##.ad-mad +##.ad-main +##.ad-manager-ad +##.ad-manager-placeholder +##.ad-manager-wrapper +##.ad-margin +##.ad-marketplace +##.ad-marketswidget +##.ad-marquee +##.ad-masthead +##.ad-masthead-1 +##.ad-masthead-left +##.ad-mb +##.ad-med +##.ad-med-rec +##.ad-med-rect +##.ad-med-rect-tmp +##.ad-medium +##.ad-medium-container +##.ad-medium-content +##.ad-medium-rectangle +##.ad-medium-rectangle-base +##.ad-medium-two +##.ad-medium-widget +##.ad-medrect +##.ad-megaboard +##.ad-message +##.ad-messaging +##.ad-microsites +##.ad-midleader +##.ad-mobile +##.ad-mobile--sticky +##.ad-mobile-300x150 +##.ad-mobile-300x250 +##.ad-mobile-300x50 +##.ad-mobile-banner +##.ad-mobile-flex-inc +##.ad-mobile-flex-pos2 +##.ad-mobile-incontent-ad-plus +##.ad-mobile-mpu-plus-outstream-inc +##.ad-mobile-nav-ad-plus +##.ad-mod +##.ad-mod-section +##.ad-mod-section-728-90 +##.ad-module +##.ad-mount +##.ad-mpl +##.ad-mpu +##.ad-mpu-bottom +##.ad-mpu-container +##.ad-mpu-middle +##.ad-mpu-middle2 +##.ad-mpu-placeholder +##.ad-mpu-plus-top +##.ad-mpu-top +##.ad-mpu__aside +##.ad-mpufixed +##.ad-mr-article +##.ad-mrec +##.ad-mrect +##.ad-msg +##.ad-msn +##.ad-native +##.ad-native-top-sidebar +##.ad-nav-ad +##.ad-nav-ad-plus +##.ad-new +##.ad-new-box +##.ad-no-css +##.ad-no-mobile +##.ad-no-notice +##.ad-no-style +##.ad-noBorderAndMargin +##.ad-noline +##.ad-note +##.ad-notice +##.ad-notice-small +##.ad-observer +##.ad-oms +##.ad-on +##.ad-on-top +##.ad-one +##.ad-other +##.ad-outer +##.ad-outlet +##.ad-outline +##.ad-output-middle +##.ad-output-wrapper +##.ad-outside +##.ad-overlay +##.ad-packs +##.ad-padding +##.ad-page-leader +##.ad-page-medium +##.ad-page-setting +##.ad-pagehead +##.ad-panel +##.ad-panel-wrap +##.ad-panel__container +##.ad-panel__container--styled +##.ad-panel__googlead +##.ad-panorama +##.ad-parallax +##.ad-parent-billboard +##.ad-parent-class +##.ad-parent-halfpage +##.ad-pb +##.ad-peg +##.ad-pencil-margin +##.ad-permalink +##.ad-personalise +##.ad-place +##.ad-place-active +##.ad-place-holder +##.ad-placeholder--mpu +##.ad-placeholder-leaderboard +##.ad-placeholder-wrapper +##.ad-placeholder-wrapper-dynamic +##.ad-placeholder__inner +##.ad-placement-left +##.ad-placement-right +##.ad-places +##.ad-plea +##.ad-poc +##.ad-poc-admin +##.ad-point +##.ad-popup +##.ad-popup-content +##.ad-pos +##.ad-pos-0 +##.ad-pos-1 +##.ad-pos-2 +##.ad-pos-3 +##.ad-pos-4 +##.ad-pos-5 +##.ad-pos-6 +##.ad-pos-7 +##.ad-pos-8 +##.ad-pos-middle +##.ad-pos-top +##.ad-position +##.ad-position-1 +##.ad-position-2 +##.ad-poss +##.ad-post +##.ad-post-footer +##.ad-post-top +##.ad-postText +##.ad-poster +##.ad-posterad-inlisting +##.ad-preloader-container +##.ad-preparing +##.ad-prevent-jump +##.ad-primary +##.ad-primary-desktop +##.ad-primary-sidebar +##.ad-priority +##.ad-program-list +##.ad-program-top +##.ad-promo +##.ad-pub +##.ad-push +##.ad-pushdown +##.ad-r +##.ad-rac-box +##.ad-rail +##.ad-rail-wrapper +##.ad-ratio +##.ad-rb-hover +##.ad-reader-con-item +##.ad-rect +##.ad-rect-atf-01 +##.ad-rect-top-right +##.ad-rectangle +##.ad-rectangle-1 +##.ad-rectangle-banner +##.ad-rectangle-container +##.ad-rectangle-long +##.ad-rectangle-long-sky +##.ad-rectangle-text +##.ad-rectangle-wide +##.ad-rectangle-xs +##.ad-rectangle2 +##.ad-rectanglemed +##.ad-region +##.ad-region-delay-load +##.ad-related +##.ad-relatedbottom +##.ad-render-space +##.ad-responsive +##.ad-responsive-slot +##.ad-responsive-wide +##.ad-result +##.ad-rev-content +##.ad-rh +##.ad-right +##.ad-right-header +##.ad-right1 +##.ad-right2 +##.ad-right3 +##.ad-risingstar-container +##.ad-roadblock +##.ad-root +##.ad-rotation +##.ad-rotator +##.ad-row +##.ad-row-box +##.ad-row-horizontal +##.ad-row-horizontal-top +##.ad-row-viewport +##.ad-s +##.ad-s-rendered +##.ad-sample +##.ad-script-processed +##.ad-scroll +##.ad-scrollpane +##.ad-search-grid +##.ad-secondary-desktop +##.ad-section +##.ad-section-body +##.ad-section-one +##.ad-section-three +##.ad-section__skyscraper +##.ad-sense +##.ad-sense-ad +##.ad-sep +##.ad-separator +##.ad-shifted +##.ad-show-label +##.ad-showcase +##.ad-side +##.ad-side-one +##.ad-side-top +##.ad-side-wrapper +##.ad-sidebar +##.ad-sidebar-mrec +##.ad-sidebar-skyscraper +##.ad-siderail +##.ad-signup +##.ad-single-bottom +##.ad-sitewide +##.ad-size-300x600 +##.ad-size-728x90 +##.ad-size-landscape +##.ad-size-leaderboard +##.ad-size-medium-rectangle +##.ad-size-medium-rectangle-flex +##.ad-size-mpu +##.ad-skeleton +##.ad-skin-link +##.ad-sky +##.ad-sky-left +##.ad-sky-right +##.ad-sky-wrap +##.ad-skyscr +##.ad-skyscraper +##.ad-skyscraper1 +##.ad-skyscraper2 +##.ad-skyscraper3 +##.ad-slider +##.ad-slot +##.ad-slot--container +##.ad-slot--inline +##.ad-slot--mostpop +##.ad-slot--mpu-banner-ad +##.ad-slot--rendered +##.ad-slot--right +##.ad-slot--top +##.ad-slot--top-above-nav +##.ad-slot--top-banner-ad +##.ad-slot--wrapper +##.ad-slot-1 +##.ad-slot-2 +##.ad-slot-234-60 +##.ad-slot-300-250 +##.ad-slot-728-90 +##.ad-slot-a +##.ad-slot-article +##.ad-slot-banner +##.ad-slot-bigbox +##.ad-slot-billboard +##.ad-slot-box +##.ad-slot-container +##.ad-slot-container-1 +##.ad-slot-desktop +##.ad-slot-full-width +##.ad-slot-header +##.ad-slot-horizontal +##.ad-slot-inview +##.ad-slot-placeholder +##.ad-slot-rail +##.ad-slot-replies +##.ad-slot-replies-header +##.ad-slot-responsive +##.ad-slot-sidebar +##.ad-slot-sidebar-b +##.ad-slot-tall +##.ad-slot-top +##.ad-slot-top-728 +##.ad-slot-widget +##.ad-slot-wrapper +##.ad-slotRg +##.ad-slotRgc +##.ad-slot__ad--top +##.ad-slot__content +##.ad-slot__label +##.ad-slot__oas +##.ad-slots-wrapper +##.ad-slug +##.ad-small +##.ad-small-1 +##.ad-small-2 +##.ad-smallBP +##.ad-source +##.ad-sp +##.ad-space +##.ad-space-mpu-box +##.ad-space-topbanner +##.ad-spacing +##.ad-span +##.ad-speedbump +##.ad-splash +##.ad-sponsor +##.ad-sponsor-large-container +##.ad-sponsor-text +##.ad-sponsored-feed-top +##.ad-sponsored-links +##.ad-sponsored-post +##.ad-sponsors +##.ad-spot +##.ad-spotlight +##.ad-spteaser +##.ad-sq-super +##.ad-square +##.ad-square-placeholder +##.ad-square2-container +##.ad-square300 +##.ad-squares +##.ad-stack +##.ad-standard +##.ad-statement +##.ad-static +##.ad-sticky +##.ad-sticky-banner +##.ad-sticky-bottom +##.ad-sticky-container +##.ad-sticky-slot +##.ad-sticky-wrapper +##.ad-stickyhero +##.ad-stickyhero--standard +##.ad-stickyhero-enable-mobile +##.ad-story-inject +##.ad-story-top +##.ad-strategic +##.ad-strip +##.ad-style2 +##.ad-subnav-container +##.ad-subtitle +##.ad-summary +##.ad-superbanner +##.ad-superbanner-node +##.ad-t +##.ad-t-text +##.ad-table +##.ad-tabs +##.ad-tag +##.ad-tag-square +##.ad-tag__inner +##.ad-tag__wrapper +##.ad-takeover +##.ad-takeover-homepage +##.ad-tall +##.ad-tech-widget +##.ad-temp +##.ad-text-centered +##.ad-text-label +##.ad-text-link +##.ad-text-links +##.ad-textads +##.ad-textlink +##.ad-ticker +##.ad-tile +##.ad-title +##.ad-tl1 +##.ad-top +##.ad-top-300x250 +##.ad-top-728 +##.ad-top-728x90 +##.ad-top-banner +##.ad-top-billboard +##.ad-top-billboard-init +##.ad-top-box-right +##.ad-top-container +##.ad-top-desktop +##.ad-top-featured +##.ad-top-in +##.ad-top-lboard +##.ad-top-left +##.ad-top-mobile +##.ad-top-mpu +##.ad-top-padding +##.ad-top-rectangle +##.ad-top-right-container +##.ad-top-side +##.ad-top-slot +##.ad-top-spacing +##.ad-top-wrap-inner +##.ad-top-wrapper +##.ad-topbanner +##.ad-topper +##.ad-topright +##.ad-tower +##.ad-tower-container +##.ad-towers +##.ad-transition +##.ad-trck +##.ad-truvid +##.ad-two +##.ad-twos +##.ad-txt +##.ad-txt-red +##.ad-type +##.ad-type-branding +##.ad-type-cube +##.ad-type-flex-leaderboard +##.ad-unit +##.ad-unit--leaderboard +##.ad-unit-2 +##.ad-unit-300 +##.ad-unit-300-wrapper +##.ad-unit-container +##.ad-unit-horisontal +##.ad-unit-inline-center +##.ad-unit-label +##.ad-unit-mpu +##.ad-unit-panel +##.ad-unit-secondary +##.ad-unit-sponsored-bar +##.ad-unit-t +##.ad-unit-text +##.ad-unit-top +##.ad-unit-wrapper +##.ad-unit__inner +##.ad-units-single-header-wrapper +##.ad-update +##.ad-vert +##.ad-vertical +##.ad-vertical-container +##.ad-vertical-stack-ad +##.ad-view-zone +##.ad-w-300 +##.ad-w-728 +##.ad-w-970 +##.ad-warning +##.ad-warp +##.ad-watermark +##.ad-wgt +##.ad-wide +##.ad-wide-bottom +##.ad-wide-wrap +##.ad-widget +##.ad-widget-area +##.ad-widget-box +##.ad-widget-list +##.ad-widget-sizes +##.ad-widget-wrapper +##.ad-widgets +##.ad-width-300 +##.ad-width-728 +##.ad-wireframe +##.ad-wireframe-wrapper +##.ad-with-background +##.ad-with-header-wrapper +##.ad-with-notice +##.ad-wp +##.ad-wp-720 +##.ad-wppr +##.ad-wppr-container +##.ad-wrap-leaderboard +##.ad-wrap-transparent +##.ad-wrap:not(#google_ads_iframe_checktag) +##.ad-wrap_wallpaper +##.ad-wrapp +##.ad-wrapper +##.ad-wrapper--ad-unit-wrap +##.ad-wrapper--articletop +##.ad-wrapper--lg +##.ad-wrapper--sidebar +##.ad-wrapper-250 +##.ad-wrapper-bg +##.ad-wrapper-desktop +##.ad-wrapper-left +##.ad-wrapper-mobile +##.ad-wrapper-mobile-atf +##.ad-wrapper-outer +##.ad-wrapper-solid +##.ad-wrapper-sticky +##.ad-wrapper-top +##.ad-wrapper-with-text +##.ad-wrapper__ad-slug +##.ad-xs-title +##.ad-zone-ajax +##.ad-zone-container +##.ad.addon +##.ad.bottomrect +##.ad.box +##.ad.brandboard +##.ad.card +##.ad.center +##.ad.contentboard +##.ad.desktop-970x250 +##.ad.element +##.ad.floater-link +##.ad.gallery +##.ad.halfpage +##.ad.inner +##.ad.item +##.ad.leaderboard +##.ad.maxiboard +##.ad.maxisky +##.ad.middlerect +##.ad.module +##.ad.monsterboard +##.ad.netboard +##.ad.post-area +##.ad.promotion +##.ad.rectangle +##.ad.rectangle_2 +##.ad.rectangle_3 +##.ad.rectangle_home_1 +##.ad.section +##.ad.sidebar-module +##.ad.size-300x250 +##.ad.skybridgeleft +##.ad.small-mpu +##.ad.small-teaser +##.ad.super +##.ad.wideboard_tablet +##.ad02 +##.ad03 +##.ad04 +##.ad08sky +##.ad1-float +##.ad1-left +##.ad1-right +##.ad10 +##.ad100 +##.ad1000 +##.ad1001 +##.ad100x100 +##.ad120 +##.ad120_600 +##.ad120x120 +##.ad120x240GrayBorder +##.ad120x60 +##.ad120x600 +##.ad125 +##.ad125x125 +##.ad125x125a +##.ad125x125b +##.ad140 +##.ad160 +##.ad160600 +##.ad160_blk +##.ad160_l +##.ad160_r +##.ad160b +##.ad160x160 +##.ad160x600 +##.ad160x600GrayBorder +##.ad160x600_1 +##.ad160x600box +##.ad170x30 +##.ad18 +##.ad180 +##.ad180x80 +##.ad185x100 +##.ad19 +##.ad1Image +##.ad1_bottom +##.ad1_latest +##.ad1_top +##.ad1b +##.ad1left +##.ad1x1 +##.ad2-float +##.ad200 +##.ad200x60 +##.ad220x50 +##.ad230 +##.ad233x224 +##.ad234 +##.ad234x60 +##.ad236x62 +##.ad240 +##.ad250 +##.ad250wrap +##.ad250x250 +##.ad250x300 +##.ad260 +##.ad260x60 +##.ad284x134 +##.ad290 +##.ad2content_box +##.ad300 +##.ad300-hp-top +##.ad3001 +##.ad300250 +##.ad300Block +##.ad300Wrapper +##.ad300X250 +##.ad300_2 +##.ad300_250 +##.ad300_bg +##.ad300_ver2 +##.ad300b +##.ad300banner +##.ad300px +##.ad300shows +##.ad300top +##.ad300w +##.ad300x100 +##.ad300x120 +##.ad300x150 +##.ad300x250 +##.ad300x250-1 +##.ad300x250-2 +##.ad300x250-inline +##.ad300x250Module +##.ad300x250Right +##.ad300x250Top +##.ad300x250_box +##.ad300x250_container +##.ad300x250a +##.ad300x250b +##.ad300x250box +##.ad300x250box2 +##.ad300x250flex +##.ad300x250s +##.ad300x250x2 +##.ad300x40 +##.ad300x50-right +##.ad300x600 +##.ad300x600cat +##.ad300x600post +##.ad300x77 +##.ad300x90 +##.ad310 +##.ad315 +##.ad320x250 +##.ad320x50 +##.ad336 +##.ad336_b +##.ad336x250 +##.ad336x280 +##.ad336x362 +##.ad343x290 +##.ad350 +##.ad350r +##.ad360 +##.ad366 +##.ad3rdParty +##.ad400 +##.ad400right +##.ad400x40 +##.ad450 +##.ad468 +##.ad468_60 +##.ad468box +##.ad468innerboxadpic +##.ad468x60 +##.ad468x60Wrap +##.ad468x60_main +##.ad470x60 +##.ad530 +##.ad540x90 +##.ad590 +##.ad590x90 +##.ad5_container +##.ad600 +##.ad612x80 +##.ad620x70 +##.ad626X35 +##.ad640x480 +##.ad644 +##.ad650x140 +##.ad652 +##.ad70 +##.ad728 +##.ad72890 +##.ad728By90 +##.ad728_90 +##.ad728_blk +##.ad728_cont +##.ad728_wrap +##.ad728b +##.ad728cont +##.ad728h +##.ad728top +##.ad728x90 +##.ad728x90-1 +##.ad728x90-2 +##.ad728x90box +##.ad728x90btf +##.ad970 +##.ad970_250 +##.adActive +##.adAlert +##.adArea +##.adAreaLC +##.adAreaNative +##.adAreaTopTitle +##.adArticleBanner +##.adArticleBody +##.adArticleSideTop300x250 +##.adBan +##.adBanner300x250 +##.adBanner728x90 +##.adBillboard +##.adBkgd +##.adBlockBottom +##.adBlockSpacer +##.adBlockSpot +##.adBorder +##.adBorders +##.adBox +##.adBox-small +##.adBox1 +##.adBox2 +##.adBox5 +##.adBox6 +##.adBox728 +##.adBox728X90 +##.adBox728X90_header +##.adBoxBody +##.adBoxBorder +##.adBoxContainer +##.adBoxContent +##.adBoxFooter +##.adBoxHeader +##.adBoxSidebar +##.adBoxSingle +##.adBoxTitle +##.adBox_1 +##.adBox_3 +##.adBtm +##.adCall +##.adCaptionText +##.adCell +##.adCenter +##.adCenterAd +##.adCentertile +##.adChoice +##.adChoiceLogo +##.adChoicesLogo +##.adChrome +##.adClose +##.adColumn +##.adColumnLeft +##.adColumnRight +##.adComponent +##.adCont +##.adContTop +##.adContainer1 +##.adContainerSide +##.adContent +##.adContentAd +##.adContour +##.adCopy +##.adCreative +##.adCreator +##.adCube +##.adDefRect +##.adDetails_ad336 +##.adDiv +##.adDrawer +##.adDyn +##.adElement +##.adExpanded +##.adFooterLinks +##.adFrame +##.adFrameCnt +##.adFrameContainer +##.adFrames +##.adFuel-label +##.adFull +##.adFullbanner +##.adGlobalHeader +##.adGoogle +##.adGroup +##.adHalfPage +##.adHead +##.adHeader +##.adHeaderAdbanner +##.adHeaderText +##.adHeaderblack +##.adHeading +##.adHeadline +##.adHeadlineSummary +##.adHed +##.adHeight200 +##.adHeight270 +##.adHeight280 +##.adHeight313 +##.adHeight600 +##.adHolder +##.adHolder2 +##.adHolderStory +##.adHoldert +##.adHome300x250 +##.adHomeSideTop300x250 +##.adHorisontal +##.adHorisontalNoBorder +##.adHorizontalTextAlt +##.adHplaceholder +##.adHz +##.adIDiv +##.adIframe +##.adIframeCount +##.adImg +##.adImgIM +##.adInArticle +##.adInContent +##.adInfo +##.adInitRemove +##.adInner +##.adInnerLeftBottom +##.adInsider +##.adInteractive +##.adIsland +##.adItem +##.adLabel +##.adLabelLine +##.adLabels +##.adLargeRec +##.adLargeRect +##.adLat +##.adLayer +##.adLeader +##.adLeaderBoard_container +##.adLeaderForum +##.adLeaderboard +##.adLeaderboardAdContainer +##.adLeft +##.adLine +##.adLink +##.adLinkCnt +##.adListB +##.adLoader +##.adLocal +##.adLocation +##.adMPU +##.adMPUHome +##.adMRECHolder +##.adMarker +##.adMarkerBlock +##.adMastheadLeft +##.adMastheadRight +##.adMed +##.adMedRectBox +##.adMedRectBoxLeft +##.adMediaMiddle +##.adMediumRectangle +##.adMessage +##.adMiddle +##.adMinHeight280 +##.adMinHeight313 +##.adMiniTower +##.adMod +##.adModule +##.adModule--inner +##.adModule--outer +##.adModule-outer +##.adModule300 +##.adModuleAd +##.adMpu +##.adMpuHolder +##.adMrginBottom +##.adNarrow +##.adNoBorder +##.adNoOutline +##.adNone +##.adNote +##.adNotice +##.adNotice90 +##.adNoticeOut +##.adNotification +##.adObj +##.adOne +##.adOuterContainer +##.adOverlay +##.adPanel +##.adPanelContent +##.adPanorama +##.adPlaceholder +##.adPlacement +##.adPosition +##.adPremium +##.adRecommend +##.adRecommendRight +##.adRect +##.adRectangle +##.adRectangle-pos-large +##.adRectangle-pos-medium +##.adRectangle-pos-small +##.adRectangleBanner +##.adRectangleUnit +##.adRemove +##.adRenderer +##.adRendererInfinite +##.adResponsive +##.adResult +##.adResults +##.adRight +##.adRightSide +##.adRightSky +##.adRoller +##.adRotator +##.adRow +##.adRowTopWrapper +##.adSKY +##.adSection +##.adSenceImagePush +##.adSense +##.adSense-header +##.adSepDiv +##.adServer +##.adSeven +##.adSide +##.adSideBarMPU +##.adSideBarMPUTop +##.adSidebarButtons +##.adSizer +##.adSkin +##.adSky +##.adSkyscaper +##.adSkyscraper +##.adSlice +##.adSlide +##.adSlot +##.adSlot-container +##.adSlotAdition +##.adSlotCnt +##.adSlotContainer +##.adSlotHeaderContainer +##.adSlug +##.adSpBelow +##.adSpace +##.adSpace300x250 +##.adSpace950x90 +##.adSpacer +##.adSpec +##.adSplash +##.adSponsor +##.adSponsorText +##.adSponsorhipInfo +##.adSpot +##.adSpot-mrec +##.adSpot-textBox +##.adSpotBlock +##.adSpotFullWidth +##.adSpotIsland +##.adSquare +##.adStatementText +##.adStyle +##.adStyle1 +##.adSub +##.adSubColPod +##.adSummary +##.adSuperboard +##.adSupertower +##.adTD +##.adTXTnew +##.adTab +##.adTag +##.adTag-top +##.adTag-wrap +##.adTagThree +##.adTagTwo +##.adText +##.adTextDownload +##.adTextPmpt +##.adTextStreaming +##.adTextWrap +##.adTicker +##.adTile +##.adTileWrap +##.adTiler +##.adTip +##.adTitle +##.adTitleR +##.adTop +##.adTopBk +##.adTopFloat +##.adTopHome +##.adTopLB +##.adTopLeft +##.adTopRight +##.adTopWrapper +##.adTopboxright +##.adTwo +##.adTxt +##.adType2 +##.adUnderArticle +##.adUnit +##.adUnitHorz +##.adUnitVert +##.adVertical +##.adVideo +##.adVideo2 +##.adVl +##.adVplaceholder +##.adWarning +##.adWebBoard +##.adWideSkyscraper +##.adWideSkyscraperRight +##.adWidget +##.adWidgetBlock +##.adWithTab +##.adWizard-ad +##.adWord +##.adWords-bg +##.adWrap +##.adWrapLg +##.adWrapper +##.adWrapper1 +##.adZone +##.adZoneRight +##.ad_0 +##.ad_1 +##.ad_1000_125 +##.ad_120x60 +##.ad_120x600 +##.ad_120x90 +##.ad_125 +##.ad_130x90 +##.ad_150x150 +##.ad_160 +##.ad_160_600 +##.ad_160x600 +##.ad_188_inner +##.ad_1deg5up +##.ad_2 +##.ad_200 +##.ad_240 +##.ad_250250 +##.ad_250x200 +##.ad_250x250 +##.ad_290_290 +##.ad_3 +##.ad_300 +##.ad_300250 +##.ad_300_250 +##.ad_300_250_1 +##.ad_300_250_2 +##.ad_300_250_wrapper +##.ad_300_600 +##.ad_300by250 +##.ad_300x100 +##.ad_300x250 +##.ad_300x250_container +##.ad_300x600 +##.ad_320x250_async +##.ad_336 +##.ad_336x280 +##.ad_350x250 +##.ad_4 +##.ad_468 +##.ad_468x60 +##.ad_5 +##.ad_600 +##.ad_640 +##.ad_640x480 +##.ad_728 +##.ad_72890 +##.ad_728Home +##.ad_728_90 +##.ad_728_90_1 +##.ad_728_90b +##.ad_728_top +##.ad_728x90 +##.ad_728x90-1 +##.ad_728x90-2 +##.ad_728x90_container +##.ad_728x90b +##.ad_90 +##.ad_970x250 +##.ad_970x250_300x250 +##.ad_970x250_container +##.ad_Bumper +##.ad_Flex +##.ad_Left +##.ad_Right +##.ad__300x250 +##.ad__300x600 +##.ad__970x250 +##.ad__align +##.ad__centered +##.ad__container +##.ad__content +##.ad__full--width +##.ad__header +##.ad__holder +##.ad__image +##.ad__in_article +##.ad__inline +##.ad__item +##.ad__label +##.ad__leaderboard +##.ad__mobi +##.ad__mobile-footer +##.ad__mpu +##.ad__placeholder +##.ad__rectangle +##.ad__section-border +##.ad__sidebar +##.ad__space +##.ad__sticky +##.ad__template +##.ad__window +##.ad__wrapper +##.ad_adv +##.ad_after_section +##.ad_amazon +##.ad_area +##.ad_area_two +##.ad_back +##.ad_background +##.ad_background_1 +##.ad_background_true +##.ad_banner +##.ad_banner2 +##.ad_banner_2 +##.ad_banner_250x250 +##.ad_banner_468 +##.ad_banner_728 +##.ad_banner_728x90_inner +##.ad_banner_border +##.ad_banner_div +##.ad_bar +##.ad_below_content +##.ad_belowfirstpost_frame +##.ad_bg +##.ad_bgskin +##.ad_big_banner +##.ad_bigbox +##.ad_billboard +##.ad_blk +##.ad_block +##.ad_block_1 +##.ad_block_2 +##.ad_block_widget +##.ad_body +##.ad_border +##.ad_botbanner +##.ad_bottom +##.ad_bottom_728 +##.ad_bottom_leaderboard +##.ad_bottom_left +##.ad_bottom_mpu +##.ad_bottom_space +##.ad_box1 +##.ad_box2 +##.ad_box_2 +##.ad_box_6 +##.ad_box_9 +##.ad_box_ad +##.ad_box_div +##.ad_box_header +##.ad_box_spacer +##.ad_box_top +##.ad_break +##.ad_break2_container +##.ad_break_container +##.ad_btf +##.ad_btn +##.ad_btn-white +##.ad_btn1 +##.ad_btn2 +##.ad_by +##.ad_callout +##.ad_caption +##.ad_center +##.ad_center_bottom +##.ad_centered +##.ad_choice +##.ad_choices +##.ad_cl +##.ad_claim +##.ad_click +##.ad_cls_fix +##.ad_code +##.ad_col +##.ad_column +##.ad_column_box +##.ad_common +##.ad_con +##.ad_cont +##.ad_cont_footer +##.ad_contain +##.ad_container +##.ad_container_body +##.ad_container_bottom +##.ad_content +##.ad_content_below +##.ad_content_bottom +##.ad_content_wide +##.ad_content_wrapper +##.ad_contents +##.ad_crown +##.ad_custombanner +##.ad_d_big +##.ad_db +##.ad_default +##.ad_description +##.ad_desktop +##.ad_disclaimer +##.ad_div +##.ad_div_banner +##.ad_div_box +##.ad_div_box2 +##.ad_element +##.ad_embed +##.ad_feature +##.ad_float +##.ad_floating_box +##.ad_fluid +##.ad_footer +##.ad_footer_super_banner +##.ad_frame +##.ad_frame_around +##.ad_fullwidth +##.ad_gam +##.ad_global_header +##.ad_google +##.ad_gpt +##.ad_grein_botn +##.ad_grid +##.ad_group +##.ad_half_page +##.ad_halfpage +##.ad_hd +##.ad_head +##.ad_head_rectangle +##.ad_header +##.ad_header_top +##.ad_heading +##.ad_headline +##.ad_holder +##.ad_horizontal +##.ad_hover_href +##.ad_iframe2 +##.ad_img +##.ad_imgae_150 +##.ad_in_article +##.ad_in_text +##.ad_incontent +##.ad_index02 +##.ad_indicator +##.ad_inline +##.ad_inline_wrapper +##.ad_inner +##.ad_inset +##.ad_island +##.ad_item +##.ad_label +##.ad_large +##.ad_lb +##.ad_leader +##.ad_leader_bottom +##.ad_leader_plus_top +##.ad_leaderboard +##.ad_leaderboard_atf +##.ad_leaderboard_master +##.ad_leaderboard_top +##.ad_leaderboard_wrap +##.ad_left +##.ad_left_cell +##.ad_left_column +##.ad_lft +##.ad_line2 +##.ad_link +##.ad_links +##.ad_lnks +##.ad_loc +##.ad_long +##.ad_lrec +##.ad_lrgsky +##.ad_lt +##.ad_main +##.ad_maintopad +##.ad_margin +##.ad_marker +##.ad_masthead +##.ad_med +##.ad_medium_rectangle +##.ad_medrec +##.ad_medrect +##.ad_megabanner +##.ad_message +##.ad_mid_post_body +##.ad_middle +##.ad_middle_banner +##.ad_mobile +##.ad_mod +##.ad_module +##.ad_mp +##.ad_mpu +##.ad_mpu_top +##.ad_mr +##.ad_mrec +##.ad_native +##.ad_native_xrail +##.ad_news +##.ad_no_border +##.ad_note +##.ad_notice +##.ad_oms +##.ad_on_article +##.ad_one +##.ad_one_one +##.ad_one_third +##.ad_outer +##.ad_overlays +##.ad_p360 +##.ad_pagebody +##.ad_panel +##.ad_paragraphs_desktop_container +##.ad_partner +##.ad_partners +##.ad_pause +##.ad_pic +##.ad_place +##.ad_placeholder +##.ad_placeholder_d_b +##.ad_placeholder_d_s +##.ad_placeholder_d_sticky +##.ad_placement +##.ad_plus +##.ad_position +##.ad_post +##.ad_primary +##.ad_promo +##.ad_promo1 +##.ad_promo_spacer +##.ad_push +##.ad_r +##.ad_rec +##.ad_rect +##.ad_rectangle +##.ad_rectangle_300_250 +##.ad_rectangle_medium +##.ad_rectangular +##.ad_regular1 +##.ad_regular2 +##.ad_regular3 +##.ad_reminder +##.ad_response +##.ad_rhs +##.ad_right +##.ad_rightSky +##.ad_right_300_250 +##.ad_right_cell +##.ad_right_col +##.ad_rightside +##.ad_row +##.ad_scroll +##.ad_secondary +##.ad_segment +##.ad_sense_01 +##.ad_sense_footer_container +##.ad_share_box +##.ad_side +##.ad_side_box +##.ad_side_rectangle_banner +##.ad_sidebar +##.ad_sidebar_bigbox +##.ad_sidebar_inner +##.ad_sidebar_left +##.ad_sidebar_right +##.ad_size_160x600 +##.ad_skin +##.ad_sky +##.ad_sky2 +##.ad_sky2_2 +##.ad_skyscpr +##.ad_skyscraper +##.ad_skyscrapper +##.ad_slider_out +##.ad_slot +##.ad_slot_inread +##.ad_slot_right +##.ad_slug +##.ad_small +##.ad_space +##.ad_space_300_250 +##.ad_spacer +##.ad_sponsor +##.ad_sponsor_fp +##.ad_sponsoredsection +##.ad_spot +##.ad_spot_b +##.ad_spot_c +##.ad_spotlight +##.ad_square +##.ad_square_r +##.ad_square_r_top +##.ad_square_top +##.ad_start +##.ad_static +##.ad_station +##.ad_story_island +##.ad_stream +##.ad_stream_hd +##.ad_sub +##.ad_supersize +##.ad_table +##.ad_tag +##.ad_tag_middle +##.ad_text +##.ad_text_link +##.ad_text_links +##.ad_text_vertical +##.ad_text_w +##.ad_textlink1 +##.ad_textlink_box +##.ad_thumbnail_header +##.ad_title +##.ad_title_small +##.ad_tlb +##.ad_to_list +##.ad_top +##.ad_top1 +##.ad_top_1 +##.ad_top_2 +##.ad_top_3 +##.ad_top_banner +##.ad_top_leaderboard +##.ad_top_left +##.ad_top_mpu +##.ad_top_right +##.ad_topic_content +##.ad_topmain +##.ad_topright +##.ad_topshop +##.ad_tower +##.ad_trailer_header +##.ad_trick_header +##.ad_trick_left +##.ad_ttl +##.ad_two +##.ad_two_third +##.ad_txt2 +##.ad_type_1 +##.ad_type_adsense +##.ad_type_dfp +##.ad_under +##.ad_under_royal_slider +##.ad_unit +##.ad_unit_300 +##.ad_unit_300_x_250 +##.ad_unit_600 +##.ad_unit_rail +##.ad_unit_wrapper +##.ad_unit_wrapper_main +##.ad_url +##.ad_v2 +##.ad_v3 +##.ad_vertisement +##.ad_w +##.ad_w300h450 +##.ad_w300i +##.ad_w_us_a300 +##.ad_warn +##.ad_warning +##.ad_watch_now +##.ad_watermark +##.ad_wid300 +##.ad_wide +##.ad_wide_vertical +##.ad_widget +##.ad_widget_200_100 +##.ad_widget_200_200 +##.ad_widget_image +##.ad_widget_title +##.ad_word +##.ad_wrap +##.ad_wrapper +##.ad_wrapper_300 +##.ad_wrapper_970x90 +##.ad_wrapper_box +##.ad_wrapper_false +##.ad_wrapper_fixed +##.ad_wrapper_top +##.ad_wrp +##.ad_xrail +##.ad_xrail_top +##.ad_zone +##.adace-adi-popup-wrapper +##.adace-slideup-slot-wrap +##.adace-slot +##.adace-slot-wrapper +##.adace-sponsors-box +##.adace-vignette +##.adalert-overlayer +##.adalert-toplayer +##.adamazon +##.adarea +##.adarea-long +##.adarticle +##.adb-top +##.adback +##.adban +##.adband +##.adbanner-300-250 +##.adbanner-bottom +##.adbanner1 +##.adbannerbox +##.adbannerright +##.adbannertop +##.adbase +##.adbbox +##.adbckgrnd +##.adbetween +##.adbetweenarticles +##.adbkgnd +##.adblade +##.adblade-container +##.adbladeimg +##.adblk +##.adblock-bottom +##.adblock-header +##.adblock-header1 +##.adblock-main +##.adblock-popup +##.adblock-top +##.adblock-top-left +##.adblock-wide +##.adblock300250 +##.adblock728x90 +##.adblock__banner +##.adblock_noborder +##.adblock_primary +##.adblockdiv +##.adblocks-topright +##.adboard +##.adborder +##.adborderbottom +##.adbordertop +##.adbot +##.adbot_postbit +##.adbot_showthread +##.adbottom +##.adbottomright +##.adbox-300x250 +##.adbox-468x60 +##.adbox-border-desk +##.adbox-box +##.adbox-header +##.adbox-outer +##.adbox-rectangle +##.adbox-sidebar +##.adbox-slider +##.adbox-style +##.adbox-title +##.adbox-topbanner +##.adbox-wrapper +##.adbox1 +##.adbox160 +##.adbox2 +##.adbox300 +##.adbox300x250 +##.adbox336 +##.adbox600 +##.adbox728 +##.adboxRightSide +##.adboxTopBanner +##.adboxVert +##.adbox_300x600 +##.adbox_310x400 +##.adbox_366x280 +##.adbox_468X60 +##.adbox_border +##.adbox_bottom +##.adbox_br +##.adbox_cont +##.adbox_largerect +##.adbox_left +##.adbox_top +##.adboxbg +##.adboxbot +##.adboxclass +##.adboxcm +##.adboxcontent +##.adboxcontentsum +##.adboxes +##.adboxesrow +##.adboxid +##.adboxlarge +##.adboxlong +##.adboxo +##.adboxtop +##.adbreak +##.adbrite2 +##.adbtn +##.adbtns +##.adbttm_right_300 +##.adbttm_right_label +##.adbucks +##.adbug +##.adbutler-inline-ad +##.adbutler-top-banner +##.adbutler_top_banner +##.adbutton +##.adbutton-block +##.adbuttons +##.adcard +##.adcasing +##.adcenter +##.adchange +##.adchoices +##.adchoices-link +##.adclass +##.adcode-widget +##.adcode300x250 +##.adcode728x90 +##.adcode_container +##.adcodetop +##.adcol1 +##.adcol2 +##.adcolumn +##.adcolumn_wrapper +##.adcomment +##.adcon +##.adcont +##.adcontainer-Leaderboard +##.adcontainer-Rectangle +##.adcontainer2 +##.adcontainer_big +##.adcontainer_footer +##.adcopy +##.add-sidebar +##.add300 +##.add300top +##.add300x250 +##.addAdvertContainer +##.add_topbanner +##.addarea +##.addarearight +##.addbanner +##.addboxRight +##.addisclaimer +##.addiv +##.adds2 +##.adds300x250 +##.adds620x90 +##.addtitle +##.addvert +##.addwide +##.adengageadzone +##.adenquire +##.adex-ad-text +##.adfbox +##.adfeedback +##.adfeeds +##.adfix +##.adflag +##.adflexi +##.adfliction +##.adfoot +##.adfootbox +##.adfooter +##.adform__topbanner +##.adfoxly-overlay +##.adfoxly-place-delay +##.adfoxly-wrapper +##.adframe +##.adframe2 +##.adframe_banner +##.adframe_rectangle +##.adfree +##.adfront +##.adfront-head +##.adfrp +##.adfull +##.adgear +##.adgmleaderboard +##.adguru-content-html +##.adguru-modal-popup +##.adhalfhome +##.adhalfpage +##.adhalfpageright +##.adhead +##.adheader +##.adheightpromo +##.adheighttall +##.adherebox +##.adhesion-block +##.adhesion-header +##.adhesion:not(body) +##.adhesiveAdWrapper +##.adhesiveWrapper +##.adhesive_holder +##.adhi +##.adhide +##.adhint +##.adholder +##.adholder-300 +##.adholder2 +##.adholderban +##.adhoriz +##.adiframe +##.adindex +##.adindicator +##.adinfo +##.adinjwidget +##.adinner +##.adinpost +##.adinsert +##.adinsert160 +##.adinside +##.adintext +##.adintro +##.adisclaimer +##.adisland +##.adits +##.adjlink +##.adk-slot +##.adkicker +##.adkit +##.adlabel-horz +##.adlabel-vert +##.adlabel1 +##.adlabel2 +##.adlabel3 +##.adlabelleft +##.adlarge +##.adlarger +##.adlateral +##.adlayer +##.adleader +##.adleft1 +##.adleftph +##.adlgbox +##.adline +##.adlink +##.adlinkdiv +##.adlinks +##.adlinks-class +##.adlist +##.adlist1 +##.adlist2 +##.adloaded +##.adlsot +##.admain +##.adman +##.admarker +##.admaster +##.admediumred +##.admedrec +##.admeldBoxAd +##.admessage +##.admiddle +##.admiddlesidebar +##.admngr +##.admngrfr +##.admngrft +##.admods +##.admodule +##.admoduleB +##.admpu +##.admpu-small +##.admputop +##.admz +##.adnSpot +##.adname +##.adnet_area +##.adnotecenter +##.adnotice +##.adnotification +##.adnz-ad-placeholder +##.adocean +##.adocean728x90 +##.adocean_desktop_section +##.adops +##.adpacks +##.adpacks_content +##.adpadding +##.adpane +##.adparent +##.adpic +##.adplace +##.adplace_center +##.adplaceholder +##.adplaceholder-top +##.adplacement +##.adplate-background +##.adplugg-tag +##.adpod +##.adpopup +##.adpos-300-mobile +##.adpost +##.adposter_pos +##.adproxy +##.adrec +##.adrechts +##.adrect +##.adrectangle +##.adrectwrapper +##.adrevtising-buttom +##.adright +##.adright300 +##.adrightlg +##.adrightsm +##.adrighttop +##.adriverBanner +##.adroot +##.adrotate-sponsor +##.adrotate-widget +##.adrotate_ads_row +##.adrotate_top_banner +##.adrotate_widget +##.adrotate_widgets +##.adrotatediv +##.adrow +##.adrule +##.ads--bottom-spacing +##.ads--desktop +##.ads--full +##.ads--no-preload +##.ads--sidebar +##.ads--single +##.ads--square +##.ads--super +##.ads--top +##.ads-1 +##.ads-120x600 +##.ads-125 +##.ads-160x600 +##.ads-160x600-outer +##.ads-2 +##.ads-3 +##.ads-300 +##.ads-300-250 +##.ads-300-box +##.ads-300x250 +##.ads-300x250-sidebar +##.ads-300x300 +##.ads-300x600 +##.ads-320-50 +##.ads-320x250 +##.ads-336x280 +##.ads-468 +##.ads-728 +##.ads-728-90 +##.ads-728by90 +##.ads-728x90 +##.ads-980x90 +##.ads-above-comments +##.ads-ad +##.ads-advertorial +##.ads-article-right +##.ads-articlebottom +##.ads-aside +##.ads-banner +##.ads-banner-bottom +##.ads-banner-js +##.ads-banner-middle +##.ads-banner-spacing +##.ads-banner-top +##.ads-banner-top-right +##.ads-base +##.ads-beforecontent +##.ads-below-content +##.ads-below-home +##.ads-below-view-content +##.ads-between-comments +##.ads-bg +##.ads-bigbox +##.ads-bilboards +##.ads-bing-bottom +##.ads-bing-top +##.ads-block +##.ads-block-bottom-wrap +##.ads-block-link-text +##.ads-block-panel-tipo-1 +##.ads-block-rightside +##.ads-block-top +##.ads-block-top-right +##.ads-border +##.ads-bottom +##.ads-bottom-block +##.ads-bottom-center +##.ads-bottom-content +##.ads-bottom-left +##.ads-bottom-right +##.ads-box +##.ads-box-border +##.ads-box-cont +##.ads-bt +##.ads-btm +##.ads-by +##.ads-by-google +##.ads-callback +##.ads-card +##.ads-carousel +##.ads-center +##.ads-centered +##.ads-cnt +##.ads-code +##.ads-col +##.ads-cols +##.ads-cont +##.ads-container-250 +##.ads-content +##.ads-core-placer +##.ads-custom +##.ads-decorator +##.ads-desktop +##.ads-div +##.ads-el +##.ads-end-content +##.ads-favicon +##.ads-feed +##.ads-fieldset +##.ads-footer +##.ads-fr +##.ads-global-header +##.ads-global-top +##.ads-google +##.ads-google-bottom +##.ads-google-top +##.ads-grp +##.ads-half +##.ads-header +##.ads-header-desktop +##.ads-header-left +##.ads-header-right +##.ads-here +##.ads-hints +##.ads-holder +##.ads-home +##.ads-homepage-2 +##.ads-horizontal +##.ads-horizontal-banner +##.ads-image +##.ads-inarticle +##.ads-inline +##.ads-inner +##.ads-instance +##.ads-internal +##.ads-item +##.ads-label +##.ads-label-inverse +##.ads-large +##.ads-leaderboard +##.ads-leaderboard-border +##.ads-leaderboard-panel +##.ads-leaderbord +##.ads-left +##.ads-line +##.ads-list +##.ads-loaded +##.ads-long +##.ads-main +##.ads-margin +##.ads-marker +##.ads-medium-rect +##.ads-middle +##.ads-middle-top +##.ads-minheight +##.ads-mini +##.ads-mini-3rows +##.ads-mobile +##.ads-module +##.ads-module-alignment +##.ads-movie +##.ads-mpu +##.ads-narrow +##.ads-native-wrapper +##.ads-note +##.ads-one +##.ads-outer +##.ads-panel +##.ads-parent +##.ads-pholder +##.ads-placeholder +##.ads-placeholder-inside +##.ads-placeholder-wrapper +##.ads-placment +##.ads-post +##.ads-post-closing +##.ads-post-footer +##.ads-post-full +##.ads-posting +##.ads-profile +##.ads-rail +##.ads-rect +##.ads-rectangle +##.ads-relatedbottom +##.ads-rendering-fix +##.ads-right +##.ads-right-min +##.ads-rotate +##.ads-row +##.ads-scroller-box +##.ads-section +##.ads-side +##.ads-sidebar +##.ads-sidebar-boxad +##.ads-sidebar-widget +##.ads-sign +##.ads-single +##.ads-site +##.ads-size-small +##.ads-skin +##.ads-skin-mobile +##.ads-sky +##.ads-skyscraper +##.ads-skyscraper-container-left +##.ads-skyscraper-container-right +##.ads-skyscraper-left +##.ads-skyscraper-right +##.ads-small +##.ads-small-horizontal +##.ads-small-squares +##.ads-smartphone +##.ads-social-box +##.ads-sponsored-title +##.ads-sponsors +##.ads-square +##.ads-square-large +##.ads-square-small +##.ads-squares +##.ads-star +##.ads-stick-footer +##.ads-sticky +##.ads-story +##.ads-story-leaderboard-atf +##.ads-stripe +##.ads-styled +##.ads-superbanner +##.ads-system +##.ads-text +##.ads-title +##.ads-to-hide +##.ads-top +##.ads-top-728 +##.ads-top-center +##.ads-top-content +##.ads-top-fixed +##.ads-top-home +##.ads-top-left +##.ads-top-main +##.ads-top-right +##.ads-top-spacer +##.ads-topbar +##.ads-two +##.ads-txt +##.ads-ul +##.ads-verticle +##.ads-wall-container +##.ads-wide +##.ads-widget +##.ads-widget-content +##.ads-widget-content-wrap +##.ads-widget-link +##.ads-wrap +##.ads-wrapper +##.ads-wrapper-top +##.ads-x1 +##.ads-zone +##.ads.bottom +##.ads.box +##.ads.cell +##.ads.cta +##.ads.grid-layout +##.ads.square +##.ads.top +##.ads.widget +##.ads01 +##.ads1 +##.ads10 +##.ads11 +##.ads120 +##.ads120_600 +##.ads120_600-widget +##.ads120_80 +##.ads120x +##.ads123 +##.ads125 +##.ads125-widget +##.ads160 +##.ads160-600 +##.ads2 +##.ads250 +##.ads250-250 +##.ads2Block +##.ads3 +##.ads300 +##.ads300-200 +##.ads300-250 +##.ads300250 +##.ads300_250 +##.ads300_600-widget +##.ads300box +##.ads300x600 +##.ads336_280 +##.ads336x280 +##.ads4 +##.ads468 +##.ads468x60 +##.ads600 +##.ads720x90 +##.ads728 +##.ads728_90 +##.ads728b +##.ads728x90 +##.ads728x90-1 +##.ads970 +##.adsAdvert +##.adsArea +##.adsBanner +##.adsBannerLink +##.adsBlock +##.adsBlockContainerHorizontal +##.adsBot +##.adsBottom +##.adsBoxTop +##.adsCap +##.adsCell +##.adsColumn +##.adsConfig +##.adsCont +##.adsDef +##.adsDesktop +##.adsDetailsPage +##.adsDisclaimer +##.adsDiv +##.adsFirst +##.adsFixed +##.adsFull +##.adsHeader +##.adsHeading +##.adsHeight300x250 +##.adsHeight720x90 +##.adsHome-full +##.adsImages +##.adsInner +##.adsLabel +##.adsLibrary +##.adsLine +##.adsList +##.adsMPU +##.adsMag +##.adsMarker +##.adsMiddle +##.adsMvCarousel +##.adsNetwork +##.adsOuter +##.adsOverPrimary +##.adsPlaceHolder +##.adsPostquare +##.adsPushdown +##.adsRectangleMedium +##.adsRight +##.adsRow +##.adsSecond +##.adsSectionRL +##.adsSpacing +##.adsSticky +##.adsTag +##.adsText +##.adsTop +##.adsTopBanner +##.adsTopCont +##.adsTower2 +##.adsTowerWrap +##.adsTxt +##.adsWidget +##.adsWrap +##.ads_160 +##.ads_180 +##.ads_2 +##.ads_3 +##.ads_300 +##.ads_300_250 +##.ads_300x250 +##.ads_300x600 +##.ads_4 +##.ads_468 +##.ads_468x60 +##.ads_720x90 +##.ads_728 +##.ads_728x90 +##.ads_Header +##.ads__article__header +##.ads__aside +##.ads__container +##.ads__header +##.ads__horizontal +##.ads__hyperleaderboard--hyperleaderboard +##.ads__inline +##.ads__interstitial +##.ads__link +##.ads__listing +##.ads__mid +##.ads__middle +##.ads__midpage-fullwidth +##.ads__native +##.ads__right-rail-ad +##.ads__sidebar +##.ads__top +##.ads_ad_box +##.ads_after +##.ads_after_more +##.ads_amazon +##.ads_area +##.ads_article +##.ads_ba_cad +##.ads_banner +##.ads_bar +##.ads_before +##.ads_between_content +##.ads_bg +##.ads_big +##.ads_block +##.ads_border +##.ads_box +##.ads_box_headline +##.ads_box_type1 +##.ads_center +##.ads_code +##.ads_column +##.ads_container_top +##.ads_content +##.ads_css +##.ads_div +##.ads_div1 +##.ads_foot +##.ads_footer +##.ads_footerad +##.ads_full_1 +##.ads_google +##.ads_h +##.ads_h1 +##.ads_h2 +##.ads_header +##.ads_header_bottom +##.ads_holder +##.ads_home +##.ads_horizontal +##.ads_inview +##.ads_item +##.ads_label +##.ads_lb +##.ads_leader +##.ads_leaderboard +##.ads_left +##.ads_main +##.ads_main_hp +##.ads_media +##.ads_medium +##.ads_medium_rectangle +##.ads_medrect +##.ads_middle +##.ads_middle-container +##.ads_middle_container +##.ads_mobile_vert +##.ads_mpu +##.ads_outer +##.ads_outline +##.ads_place +##.ads_place_160 +##.ads_place_top +##.ads_placeholder +##.ads_player +##.ads_post +##.ads_prtext +##.ads_rectangle +##.ads_remove +##.ads_right +##.ads_rightbar_top +##.ads_side +##.ads_sideba +##.ads_sidebar +##.ads_single_center +##.ads_single_side +##.ads_single_top +##.ads_singlepost +##.ads_slice +##.ads_slot +##.ads_small +##.ads_small_rectangle +##.ads_space_long +##.ads_spacer +##.ads_square +##.ads_takeover +##.ads_text +##.ads_tit +##.ads_title +##.ads_top +##.ads_top_1 +##.ads_top_banner +##.ads_top_both +##.ads_top_middle +##.ads_top_nav +##.ads_topbanner +##.ads_topleft +##.ads_topright +##.ads_tr +##.ads_under_data +##.ads_unit +##.ads_up +##.ads_video +##.ads_wide +##.ads_widesky +##.ads_widget +##.ads_wrap +##.ads_wrap-para +##.ads_wrapper +##.adsafp +##.adsanity-alignnone +##.adsanity-group +##.adsanity-single +##.adsarea +##.adsartical +##.adsbanner1 +##.adsbanner2 +##.adsbantop +##.adsbar +##.adsbg300 +##.adsbillboard +##.adsblock +##.adsblockvert +##.adsbnr +##.adsbody +##.adsborder +##.adsboth +##.adsbottom +##.adsbottombox +##.adsbox--masthead +##.adsbox-square +##.adsbox970x90 +##.adsbox990x90 +##.adsboxBtn +##.adsbox_300x250 +##.adsboxitem +##.adsbx728x90 +##.adsbyadop +##.adsbyexoclick +##.adsbyexoclick-wrapper +##.adsbygalaksion +##.adsbygoogle-box +##.adsbygoogle-noablate +##.adsbygoogle-wrapper +##.adsbygoogle2 +##.adsbypublift +##.adsbypubmax +##.adsbytrafficjunky +##.adsbyvli +##.adsbyxa +##.adscaleTop +##.adscenter +##.adscentertext +##.adsclick +##.adscontainer +##.adscontent250 +##.adscontentcenter +##.adscontntad +##.adscreen +##.adsdelivery +##.adsdesktop +##.adsdiv +##.adsection_a2 +##.adsection_c2 +##.adsection_c3 +##.adsenbox +##.adsens +##.adsense-250 +##.adsense-300-600 +##.adsense-336 +##.adsense-336-280 +##.adsense-468 +##.adsense-728-90 +##.adsense-ad-results +##.adsense-ads +##.adsense-afterpost +##.adsense-area +##.adsense-article +##.adsense-block +##.adsense-box +##.adsense-center +##.adsense-code +##.adsense-container +##.adsense-content +##.adsense-div +##.adsense-float +##.adsense-googleAds +##.adsense-header +##.adsense-heading +##.adsense-iframe-container +##.adsense-inline +##.adsense-left +##.adsense-links +##.adsense-loading +##.adsense-module +##.adsense-overlay +##.adsense-post +##.adsense-resposivo-meio +##.adsense-right +##.adsense-slot +##.adsense-square +##.adsense-sticky-slide +##.adsense-title +##.adsense-top +##.adsense-unit +##.adsense-widget +##.adsense-wrapper +##.adsense1 +##.adsense160x600 +##.adsense250 +##.adsense3 +##.adsense300 +##.adsense300x250 +##.adsense728 +##.adsense728x90 +##.adsenseAds +##.adsenseBannerArea +##.adsenseBlock +##.adsenseContainer +##.adsenseList +##.adsenseRow +##.adsenseSky +##.adsenseWrapper +##.adsense_200 +##.adsense_336_280 +##.adsense_728x90_container +##.adsense_ad +##.adsense_block +##.adsense_bottom +##.adsense_container +##.adsense_content_300x250 +##.adsense_div_wrapper +##.adsense_inner +##.adsense_label +##.adsense_leader +##.adsense_media +##.adsense_menu +##.adsense_mpu +##.adsense_rectangle +##.adsense_results +##.adsense_right +##.adsense_sidebar +##.adsense_sidebar_top +##.adsense_single +##.adsense_top +##.adsense_top_ad +##.adsense_unit +##.adsense_wrapper +##.adsensebig +##.adsensefloat +##.adsenseformat +##.adsenseframe +##.adsenseleaderboard +##.adsensemobile +##.adsenvelope +##.adsep +##.adserve_728 +##.adserverBox +##.adserver_zone +##.adserverad +##.adserving +##.adset +##.adsfloat +##.adsfloatpanel +##.adsforums +##.adsghori +##.adsgrd +##.adsgvert +##.adsheight-250 +##.adshome +##.adshowbig +##.adshowcase +##.adshp +##.adside +##.adside-box-index +##.adside-box-single +##.adside_box +##.adsidebar +##.adsidebox +##.adsider +##.adsincs2 +##.adsinfo +##.adsingle +##.adsingle-r +##.adsingleph +##.adsitem +##.adsize728 +##.adsizer +##.adsizewrapper +##.adskeeperWrap +##.adsky +##.adsleaderboard +##.adsleaderboardbox +##.adsleff +##.adsleft +##.adsleftblock +##.adslibraryArticle +##.adslider +##.adslink +##.adslist +##.adslisting +##.adslisting2 +##.adslistingz +##.adsload +##.adsloading +##.adslogan +##.adslot +##.adslot--leaderboard +##.adslot-area +##.adslot-banner +##.adslot-billboard +##.adslot-feature +##.adslot-inline-wide +##.adslot-mpu +##.adslot-rectangle +##.adslot-widget +##.adslot970 +##.adslotMid +##.adslot_1 +##.adslot_1m +##.adslot_2 +##.adslot_2m +##.adslot_3 +##.adslot_300 +##.adslot_3d +##.adslot_3m +##.adslot_4 +##.adslot_728 +##.adslot__ad-container +##.adslot__ad-wrapper +##.adslot_blurred +##.adslot_bot_300x250 +##.adslot_collapse +##.adslot_popup +##.adslot_side1 +##.adslothead +##.adslotleft +##.adslotright +##.adslotright_1 +##.adslotright_2 +##.adslug +##.adsmaintop +##.adsmall +##.adsmaller +##.adsmalltext +##.adsmanag +##.adsmbody +##.adsmedrect +##.adsmedrectright +##.adsmessage +##.adsmobile +##.adsninja-ad-zone +##.adsninja-ad-zone-container-with-set-height +##.adsninja-rail-zone +##.adsnippet_widget +##.adsns +##.adsntl +##.adsoptimal-slot +##.adsother +##.adspace +##.adspace-300x600 +##.adspace-336x280 +##.adspace-728x90 +##.adspace-MR +##.adspace-lb +##.adspace-leaderboard +##.adspace-lr +##.adspace-mpu +##.adspace-mtb +##.adspace-top +##.adspace-widget +##.adspace1 +##.adspace180 +##.adspace2 +##.adspace728x90 +##.adspace_2 +##.adspace_bottom +##.adspace_right +##.adspace_rotate +##.adspace_skyscraper +##.adspace_top +##.adspacer +##.adspacer2 +##.adspan +##.adspanel +##.adspecial390 +##.adspeed +##.adsplash-160x600 +##.adsplat +##.adsponsor +##.adspop +##.adspost +##.adspot +##.adspot-desk +##.adspot-title +##.adspot1 +##.adspot200x90 +##.adspot468x60 +##.adspot728x90 +##.adspot_468x60 +##.adspot_728x90 +##.adsresponsive +##.adsright +##.adss +##.adssidebar2 +##.adsskyscraper +##.adsslotcustom2 +##.adsslotcustom4 +##.adssmall +##.adssquare +##.adssquare2 +##.adsterra +##.adstext +##.adstextpad +##.adstipt +##.adstitle +##.adstop +##.adstory +##.adstrip +##.adstyle +##.adsverting +##.adsvideo +##.adswallpapr +##.adswidget +##.adswiper +##.adswitch +##.adswordatas +##.adsystem_ad +##.adszone +##.adtable +##.adtag +##.adtc +##.adtech +##.adtech-ad-widget +##.adtech-banner +##.adtech-boxad +##.adtech-copy +##.adtech-video-2 +##.adtech-wrapper +##.adtechMobile +##.adtech_wrapper +##.adtester-container +##.adtext-bg +##.adtext_gray +##.adtext_horizontal +##.adtext_onwhite +##.adtext_vertical +##.adtext_white +##.adtextleft +##.adtextright +##.adthrive +##.adthrive-ad +##.adthrive-content +##.adthrive-header +##.adthrive-header-container +##.adthrive-placeholder-content +##.adthrive-placeholder-header +##.adthrive-placeholder-static-sidebar +##.adthrive-placeholder-video +##.adthrive-sidebar +##.adthrive-video-player +##.adthrive_custom_ad +##.adtile +##.adtips +##.adtips1 +##.adtitle +##.adtoggle +##.adtop +##.adtop-border +##.adtops +##.adtower +##.adtravel +##.adttl +##.adtxt +##.adtxtlinks +##.adult-adv +##.adun +##.adunit +##.adunit-300-250 +##.adunit-active +##.adunit-adbridg +##.adunit-container +##.adunit-container_sitebar_1 +##.adunit-googleadmanager +##.adunit-lazy +##.adunit-middle +##.adunit-parent +##.adunit-purch +##.adunit-side +##.adunit-title +##.adunit-top +##.adunit-wrap +##.adunit-wrapper +##.adunit125 +##.adunit160 +##.adunit300x250 +##.adunit468 +##.adunitContainer +##.adunit_300x250 +##.adunit_728x90 +##.adunit_content +##.adunit_footer +##.adunit_leaderboard +##.adunit_rectangle +##.adv--square +##.adv-120x600 +##.adv-160 +##.adv-160x600 +##.adv-200-200 +##.adv-250-250 +##.adv-300 +##.adv-300-1 +##.adv-300-250 +##.adv-300-600 +##.adv-300x250 +##.adv-336-280 +##.adv-4 +##.adv-468-60 +##.adv-468x60 +##.adv-700 +##.adv-728 +##.adv-728-90 +##.adv-970 +##.adv-970-250 +##.adv-970-250-2 +##.adv-ad +##.adv-aside +##.adv-background +##.adv-banner +##.adv-bar +##.adv-block +##.adv-block-container +##.adv-border +##.adv-bottom +##.adv-box +##.adv-box-holder +##.adv-box-wrapper +##.adv-carousel +##.adv-center +##.adv-click +##.adv-cont +##.adv-cont1 +##.adv-conteiner +##.adv-dvb +##.adv-format-1 +##.adv-full-width +##.adv-google +##.adv-gpt-desktop-wrapper +##.adv-gpt-wrapper-desktop +##.adv-halfpage +##.adv-header +##.adv-holder +##.adv-in-body +##.adv-inset +##.adv-intext +##.adv-intext-label +##.adv-key +##.adv-label +##.adv-leaderboard +##.adv-leaderboard-banner +##.adv-link +##.adv-link--left +##.adv-link--right +##.adv-mobile-wrapper +##.adv-mpu +##.adv-outer +##.adv-p +##.adv-right +##.adv-right-300 +##.adv-rotator +##.adv-script-container +##.adv-sidebar +##.adv-skin-spacer +##.adv-slot-container +##.adv-text +##.adv-top +##.adv-top-banner +##.adv-top-container +##.adv-top-page +##.adv-top-skin +##.adv-under-video +##.adv-unit +##.adv-videoad +##.adv1 +##.adv120 +##.adv200 +##.adv250 +##.adv300 +##.adv300-250 +##.adv300-250-2 +##.adv300-70 +##.adv300left +##.adv300x100 +##.adv300x250 +##.adv300x60 +##.adv300x70 +##.adv336 +##.adv350 +##.adv460x60 +##.adv468 +##.adv468x90 +##.adv728 +##.adv728x90 +##.advBottom +##.advBottomHome +##.advBox +##.advLeaderboard +##.advRightBig +##.advSquare +##.advText +##.advTop +##.adv_120 +##.adv_120_600 +##.adv_120x240 +##.adv_120x600 +##.adv_160_600 +##.adv_160x600 +##.adv_250 +##.adv_250_250 +##.adv_300 +##.adv_300_300 +##.adv_300_top +##.adv_300x250 +##.adv_336_280 +##.adv_468_60 +##.adv_728_90 +##.adv_728x90 +##.adv__box +##.adv__leaderboard +##.adv__wrapper +##.adv_aff +##.adv_banner +##.adv_banner_hor +##.adv_bg +##.adv_box +##.adv_box_narrow +##.adv_here +##.adv_img +##.adv_leaderboard +##.adv_left +##.adv_link +##.adv_main_middle +##.adv_main_middle_wrapper +##.adv_main_right_down +##.adv_main_right_down_wrapper +##.adv_medium_rectangle +##.adv_message +##.adv_msg +##.adv_panel +##.adv_right +##.adv_side1 +##.adv_side2 +##.adv_sidebar +##.adv_title +##.adv_top +##.adv_txt +##.adv_under_menu +##.advads-background +##.advads-close-button +##.advads-parallax-container +##.advads-sticky +##.advads-target +##.advads-widget +##.advads_ad_widget-11 +##.advads_ad_widget-18 +##.advads_ad_widget-2 +##.advads_ad_widget-21 +##.advads_ad_widget-3 +##.advads_ad_widget-4 +##.advads_ad_widget-5 +##.advads_ad_widget-8 +##.advads_ad_widget-9 +##.advads_widget +##.advance-ads +##.advart +##.advbig +##.adver +##.adver-block +##.adver-header +##.adver-left +##.adver-text +##.adverTag +##.adverTxt +##.adver_bot +##.adver_cont_below +##.adver_home +##.advert--background +##.advert--banner-wrap +##.advert--fallback +##.advert--header +##.advert--in-sidebar +##.advert--inline +##.advert--leaderboard +##.advert--loading +##.advert--outer +##.advert--placeholder +##.advert--right-rail +##.advert--square +##.advert--sticky +##.advert-100 +##.advert-120x90 +##.advert-160x600 +##.advert-300 +##.advert-300-side +##.advert-728 +##.advert-728-90 +##.advert-728x90 +##.advert-article-bottom +##.advert-autosize +##.advert-background +##.advert-banner +##.advert-banner-container +##.advert-banner-holder +##.advert-bannerad +##.advert-bar +##.advert-bg-250 +##.advert-block +##.advert-border +##.advert-bot-box +##.advert-bottom +##.advert-box +##.advert-bronze +##.advert-bronze-btm +##.advert-btm +##.advert-card +##.advert-center +##.advert-col +##.advert-col-center +##.advert-competitions +##.advert-container +##.advert-content +##.advert-content-item +##.advert-detail +##.advert-dfp +##.advert-featured +##.advert-footer +##.advert-gold +##.advert-group +##.advert-head +##.advert-header-728 +##.advert-horizontal +##.advert-image +##.advert-info +##.advert-inner +##.advert-label +##.advert-leaderboard +##.advert-leaderboard2 +##.advert-loader +##.advert-mini +##.advert-mpu +##.advert-mrec +##.advert-note +##.advert-overlay +##.advert-pane +##.advert-panel +##.advert-placeholder +##.advert-placeholder-wrapper +##.advert-preview-wrapper +##.advert-right +##.advert-row +##.advert-section +##.advert-sidebar +##.advert-silver +##.advert-sky +##.advert-skyright +##.advert-skyscraper +##.advert-slider +##.advert-spot-container +##.advert-sticky-wrapper +##.advert-stub +##.advert-text +##.advert-three +##.advert-title +##.advert-top +##.advert-top-footer +##.advert-txt +##.advert-unit +##.advert-wide +##.advert-wingbanner-left +##.advert-wingbanner-right +##.advert-wrap +##.advert-wrap1 +##.advert-wrap2 +##.advert-wrapper +##.advert-wrapper-exco +##.advert.box +##.advert.desktop +##.advert.mobile +##.advert.mpu +##.advert.skyscraper +##.advert1 +##.advert120 +##.advert1Banner +##.advert2 +##.advert300 +##.advert4 +##.advert5 +##.advert728_90 +##.advert728x90 +##.advert8 +##.advertBanner +##.advertBar +##.advertBlock +##.advertBottom +##.advertBox +##.advertCaption +##.advertColumn +##.advertCont +##.advertContainer +##.advertDownload +##.advertFullBanner +##.advertHeader +##.advertHeadline +##.advertLink +##.advertLink1 +##.advertMPU +##.advertMiddle +##.advertMpu +##.advertRight +##.advertSideBar +##.advertSign +##.advertSlider +##.advertSlot +##.advertSuperBanner +##.advertText +##.advertTitleSky +##.advertWrapper +##.advert_300x250 +##.advert_336 +##.advert_468x60 +##.advert__container +##.advert__fullbanner +##.advert__leaderboard +##.advert__mpu +##.advert__sidebar +##.advert__tagline +##.advert_area +##.advert_banner +##.advert_banners +##.advert_block +##.advert_box +##.advert_caption +##.advert_cont +##.advert_container +##.advert_div +##.advert_foot +##.advert_header +##.advert_home_300 +##.advert_img +##.advert_label +##.advert_leaderboard +##.advert_line +##.advert_list +##.advert_main +##.advert_main_bottom +##.advert_mpu +##.advert_nav +##.advert_note +##.advert_pos +##.advert_small +##.advert_span +##.advert_text +##.advert_title +##.advert_top +##.advert_txt +##.advert_wrapper +##.advertbar +##.advertbox +##.adverteaser +##.advertembed +##.adverthome +##.adverticum_container +##.adverticum_content +##.advertis +##.advertis-left +##.advertis-right +##.advertise-1 +##.advertise-2 +##.advertise-box +##.advertise-here +##.advertise-horz +##.advertise-info +##.advertise-leaderboard +##.advertise-link +##.advertise-list +##.advertise-pic +##.advertise-small +##.advertise-square +##.advertise-top +##.advertise-vert +##.advertiseContainer +##.advertiseHere +##.advertiseText +##.advertise_ads +##.advertise_box +##.advertise_brand +##.advertise_carousel +##.advertise_here +##.advertise_link +##.advertise_link_sidebar +##.advertise_links +##.advertise_sec +##.advertise_text +##.advertise_txt +##.advertise_verRight +##.advertisebtn +##.advertisedBy +##.advertisement-1 +##.advertisement-2 +##.advertisement-250 +##.advertisement-300 +##.advertisement-300x250 +##.advertisement-background +##.advertisement-banner +##.advertisement-block +##.advertisement-bottom +##.advertisement-box +##.advertisement-card +##.advertisement-cell +##.advertisement-container +##.advertisement-content +##.advertisement-copy +##.advertisement-footer +##.advertisement-google +##.advertisement-header +##.advertisement-holder +##.advertisement-image +##.advertisement-label +##.advertisement-layout +##.advertisement-leaderboard +##.advertisement-left +##.advertisement-link +##.advertisement-nav +##.advertisement-placeholder +##.advertisement-right +##.advertisement-sidebar +##.advertisement-space +##.advertisement-sponsor +##.advertisement-tag +##.advertisement-text +##.advertisement-title +##.advertisement-top +##.advertisement-txt +##.advertisement-wrapper +##.advertisement.leaderboard +##.advertisement.rectangle +##.advertisement.under-article +##.advertisement1 +##.advertisement300x250 +##.advertisement468 +##.advertisementBackground +##.advertisementBanner +##.advertisementBar +##.advertisementBlock +##.advertisementBox +##.advertisementBoxBan +##.advertisementContainer +##.advertisementFull +##.advertisementHeader +##.advertisementImg +##.advertisementLabel +##.advertisementPanel +##.advertisementRotate +##.advertisementSection +##.advertisementSmall +##.advertisementText +##.advertisementTop +##.advertisement_160x600 +##.advertisement_300x250 +##.advertisement_728x90 +##.advertisement__header +##.advertisement__label +##.advertisement__leaderboard +##.advertisement__wrapper +##.advertisement_box +##.advertisement_container +##.advertisement_footer +##.advertisement_header +##.advertisement_horizontal +##.advertisement_mobile +##.advertisement_part +##.advertisement_post +##.advertisement_text +##.advertisement_top +##.advertisement_wrapper +##.advertisements-link +##.advertisements-right +##.advertisements-sidebar +##.advertisements_heading +##.advertisementwrap +##.advertiser +##.advertiser-links +##.advertising--row +##.advertising--top +##.advertising-banner +##.advertising-block +##.advertising-container +##.advertising-container-top +##.advertising-content +##.advertising-disclaimer +##.advertising-fixed +##.advertising-header +##.advertising-iframe +##.advertising-inner +##.advertising-leaderboard +##.advertising-lrec +##.advertising-mediumrectangle +##.advertising-mention +##.advertising-middle +##.advertising-notice +##.advertising-right +##.advertising-right-d +##.advertising-section +##.advertising-side +##.advertising-side-hp +##.advertising-srec +##.advertising-top +##.advertising-top-banner +##.advertising-top-box +##.advertising-vert +##.advertising-wrapper +##.advertising1 +##.advertising160 +##.advertising2 +##.advertising300_home +##.advertising300x250 +##.advertising728 +##.advertising728_3 +##.advertisingBanner +##.advertisingBlock +##.advertisingLabel +##.advertisingLegend +##.advertisingLrec +##.advertisingMob +##.advertisingRight +##.advertisingSlide +##.advertisingTable +##.advertisingTop +##.advertising_300x250 +##.advertising_banner +##.advertising_block +##.advertising_bottom_box +##.advertising_box_bg +##.advertising_header_1 +##.advertising_images +##.advertising_square +##.advertising_top +##.advertising_widget +##.advertising_wrapper +##.advertisingarea +##.advertisingarea-homepage +##.advertisingimage +##.advertisment +##.advertisment-banner +##.advertisment-label +##.advertisment-left-panal +##.advertisment-module +##.advertisment-rth +##.advertisment-top +##.advertismentBox +##.advertismentContainer +##.advertismentContent +##.advertismentText +##.advertisment_bar +##.advertisment_caption +##.advertisment_full +##.advertisment_notice +##.advertisment_two +##.advertize +##.advertize_here +##.advertizing-banner +##.advertlabel +##.advertleft +##.advertlink +##.advertnotice +##.advertop +##.advertorial +##.advertorial-2 +##.advertorial-block +##.advertorial-image +##.advertorial-promo-box +##.advertorial-teaser +##.advertorial-wrapper +##.advertorial2 +##.advertorial_728x90 +##.advertorial_red +##.advertorialitem +##.advertorialtitle +##.advertorialview +##.advertorialwidget +##.advertouter +##.advertplay +##.adverts +##.adverts--banner +##.adverts-125 +##.adverts-inline +##.adverts2 +##.advertsLeaderboard +##.adverts_RHS +##.adverts_footer_advert +##.adverts_header_advert +##.adverts_side_advert +##.advertspace +##.adverttext +##.adverttop +##.advfrm +##.advg468 +##.advhere +##.adviewDFPBanner +##.advn_zone +##.advr +##.advr-wrapper +##.advr_top +##.advrectangle +##.advrst +##.advslideshow +##.advspot +##.advt +##.advt-banner-3 +##.advt-block +##.advt-right +##.advt-sec +##.advt300 +##.advt720 +##.advtBlock +##.advtMsg +##.advt_160x600 +##.advt_468by60px +##.advt_indieclick +##.advt_single +##.advt_widget +##.advtbox +##.advtcell +##.advtext +##.advtimg +##.advtitle +##.advtop +##.advtop-leaderbord +##.advttopleft +##.advv_box +##.adwblue +##.adwert +##.adwhitespace +##.adwide +##.adwideskyright +##.adwidget +##.adwithspace +##.adwobs +##.adwolf-holder +##.adword-box +##.adword-structure +##.adword-text +##.adword-title +##.adword1 +##.adwordListings +##.adwords +##.adwords-container +##.adwordsHeader +##.adworks +##.adwrap +##.adwrap-mrec +##.adwrap-widget +##.adwrap_MPU +##.adwrapper--desktop +##.adwrapper-lrec +##.adwrapper1 +##.adwrapper948 +##.adwrappercls +##.adwrappercls1 +##.adx-300x250-container +##.adx-300x600-container +##.adx-ads +##.adx-wrapper +##.adx-wrapper-middle +##.adx_center +##.adxli +##.adz-horiz +##.adz-horiz-ext +##.adz2 +##.adz728x90 +##.adzbanner +##.adzone +##.adzone-footer +##.adzone-preview +##.adzone-sidebar +##.adzone_skyscraper +##.af-block-ad-wrapper +##.af-label-ads +##.afc-box +##.aff-big-unit +##.aff-iframe +##.affcodes +##.afffix-custom-ad +##.affiliate-ad +##.affiliate-footer +##.affiliate-link +##.affiliate-sidebar +##.affiliate-strip +##.affiliateAdvertText +##.affiliate_ad +##.affiliate_header_ads +##.after-content-ad +##.after-intro-ad +##.after-post-ad +##.after-post-ads +##.after-story-ad-wrapper +##.after_ad +##.after_comments_ads +##.after_content_banner_advert +##.after_post_ad +##.afw_ad +##.aggads-ad +##.ahe-ad +##.aisle-ad +##.ajax_ad +##.ajaxads +##.ajdg_bnnrwidgets +##.ajdg_grpwidgets +##.alice-adslot +##.alice-root-header-ads__ad--top +##.align.Ad +##.alignads +##.alt_ad +##.alt_ad_block +##.altad +##.am-adContainer +##.am-adslot +##.am-bazaar-ad +##.amAdvert +##.am_ads +##.amazon-auto-links +##.amazon_ad +##.amazonads +##.ampFlyAdd +##.anchor-ad +##.anchor-ad-wrapper +##.anchorAd +##.anchored-ad-widget +##.annonstext +##.anyad +##.anzeige_banner +##.aoa_overlay +##.ap-ad-block +##.ape-ads-container +##.apexAd +##.apiAds +##.app-ad +##.app_ad_unit +##.app_advertising_skyscraper +##.app_nexus_banners_common +##.ar-header-m-ad +##.arc-ad-wrapper +##.arcAdsBox +##.arcAdsContainer +##.arcad-block-container +##.archive-ad +##.archive-ads +##.archive-radio-ad-container +##.areaAd +##.area_ad +##.area_ad03 +##.area_ad07 +##.area_ad09 +##.area_ad2 +##.art-text-ad +##.artAd +##.artAdInner +##.art_ads +##.artcl_ad_dsk +##.article--ad +##.article--content-ad +##.article-ad +##.article-ad-align-left +##.article-ad-blk +##.article-ad-bottom +##.article-ad-box +##.article-ad-cont +##.article-ad-container +##.article-ad-holder +##.article-ad-horizontal +##.article-ad-left +##.article-ad-legend +##.article-ad-main +##.article-ad-placeholder +##.article-ad-placement +##.article-ad-primary +##.article-ad-row +##.article-ad-row-inner +##.article-ad-section +##.article-ads +##.article-advert +##.article-advert--text +##.article-advert-container +##.article-advert-dfp +##.article-aside-ad +##.article-aside-top-ad +##.article-content-ad +##.article-content-adwrap +##.article-first-ad +##.article-footer-ad +##.article-footer-ad-container +##.article-footer__ad +##.article-footer__ads +##.article-header-ad +##.article-header__railAd +##.article-inline-ad +##.article-mid-ad +##.article-small-ads +##.article-sponsor +##.article-sponsorship-header +##.article-top-ad +##.articleADbox +##.articleAd +##.articleAdHeader +##.articleAdTopRight +##.articleAds +##.articleAdsL +##.articleAdvert +##.articleBottom-ads +##.articleEmbeddedAdBox +##.articleFooterAd +##.articleHeaderAd +##.articleTop-ads +##.articleTopAd +##.article__ad-holder +##.article__adblock +##.article__adhesion +##.article__adv +##.article_ad +##.article_ad_1 +##.article_ad_2 +##.article_ad_text +##.article_ad_top +##.article_adbox +##.article_ads_banner +##.article_bottom-ads +##.article_bottom_ad +##.article_google-ad +##.article_google_ads +##.article_inline_ad +##.article_inner_ad +##.article_mpu +##.article_tower_ad +##.articlead +##.articleads +##.articles-ad-block +##.artnet-ads-ad +##.aside-ad +##.aside-ad-space +##.aside-ad-wrapper +##.aside-ads +##.aside-ads-top +##.asideAd +##.aside_ad +##.aside_ad_large +##.async-ad-container +##.at-header-ad +##.at-sidebar-ad +##.atf-ad +##.atfAds +##.atf_adWrapper +##.atomsAdsCellModel +##.attachment-advert_home +##.attachment-dm-advert-bronze +##.attachment-dm-advert-gold +##.attachment-dm-advert-silver +##.attachment-sidebar-ad +##.attachment-squareAd +##.avadvslot +##.avap-ads-container +##.avert--leaderboard +##.avert--sidebar +##.avert-text +##.azk-adsense +##.b-ad +##.b-ad-main +##.b-adhesion +##.b-adv +##.b-advert +##.b-advertising__down-menu +##.b-aside-ads +##.b-header-ad +##.b-right-rail--ads +##.bAdvertisement +##.b_adLastChild +##.b_ads +##.b_ads_cont +##.b_ads_r +##.b_ads_top +##.background-ad +##.background-ads +##.background-adv +##.backgroundAd +##.bam-ad-slot +##.bank-rate-ad +##.banmanad +##.banner--ad +##.banner-125 +##.banner-300 +##.banner-300-100 +##.banner-300-250 +##.banner-300x250 +##.banner-300x600 +##.banner-320-100 +##.banner-468 +##.banner-468-60 +##.banner-468x60 +##.banner-728 +##.banner-728x90 +##.banner-ad-below +##.banner-ad-block +##.banner-ad-bottom-fixed +##.banner-ad-container +##.banner-ad-contianer +##.banner-ad-footer +##.banner-ad-image +##.banner-ad-inner +##.banner-ad-label +##.banner-ad-large +##.banner-ad-pos +##.banner-ad-row +##.banner-ad-skeleton-box +##.banner-ad-space +##.banner-ad-wrap +##.banner-ad-wrapper +##.banner-ad2 +##.banner-ads-right +##.banner-ads-sidebar +##.banner-adsense +##.banner-adv +##.banner-advert +##.banner-advert-wrapper +##.banner-advertisement +##.banner-advertising +##.banner-adverts +##.banner-asd__title +##.banner-buysellads +##.banner-img > .pbl +##.banner-sponsorship +##.banner-top-ads +##.banner120x600 +##.banner160 +##.banner160x600 +##.banner200x200 +##.banner300 +##.banner300x250 +##.banner336 +##.banner336x280 +##.banner350 +##.banner468 +##.banner728 +##.banner728-ad +##.banner728-container +##.banner728x90 +##.bannerADS +##.bannerADV +##.bannerAd +##.bannerAd-module +##.bannerAd3 +##.bannerAdContainer +##.bannerAdLeaderboard +##.bannerAdRectangle +##.bannerAdSearch +##.bannerAdSidebar +##.bannerAdTower +##.bannerAdWrap +##.bannerAds +##.bannerAdvert +##.bannerAside +##.bannerGoogle +##.bannerRightAd +##.banner_160x600 +##.banner_240x400 +##.banner_250x250 +##.banner_300_250 +##.banner_300x250 +##.banner_300x600 +##.banner_468_60 +##.banner_468x60 +##.banner_728_90 +##.banner_ad-728x90 +##.banner_ad_300x250 +##.banner_ad_728x90 +##.banner_ad_container +##.banner_ad_footer +##.banner_ad_full +##.banner_ad_leaderboard +##.banner_ad_link +##.banner_ad_wrapper +##.banner_ads1 +##.banner_reklam +##.banner_reklam2 +##.banner_slot +##.bannerad +##.bannerad3 +##.banneradd +##.bannerads +##.banneradv +##.bannerandads +##.bannergroup-ads +##.bannermpu +##.banners_ad +##.bannervcms +##.bar_ad +##.base-ad-mpu +##.base-ad-slot +##.base-ad-top +##.base_ad +##.baseboard-ad +##.bb-ad +##.bb-ad-mrec +##.bbccom-advert +##.bbccom_advert +##.bcom_ad +##.before-header-ad +##.before-injected-ad +##.below-ad-border +##.below-article-ad-sidebar +##.below-nav-ad +##.belowMastheadWrapper +##.belowNavAds +##.below_game_ad +##.below_nav_ad_wrap +##.below_player_ad +##.bg-ad-gray +##.bg-ads +##.bg-ads-space +##.bg-grey-ad +##.bgAdBlue +##.bg_ad +##.bg_ads +##.bgcolor_ad +##.bgr-ad-leaderboard +##.bh-ads +##.bh_ad_container +##.bidbarrel-ad +##.big-ad +##.big-ads +##.big-advertisement +##.big-box-ad +##.big-right-ad +##.bigAd +##.bigAdContainer +##.bigAds +##.bigAdvBanner +##.bigBoxAdArea +##.bigCubeAd +##.big_ad +##.big_ad2 +##.big_ads +##.bigad +##.bigad1 +##.bigad2 +##.bigadleft +##.bigadright +##.bigads +##.bigadtxt1 +##.bigbox-ad +##.bigbox.ad +##.bigbox_ad +##.bigboxad +##.bigcrunch-unit +##.bigsponsor +##.billboard-ad +##.billboard-ad-one +##.billboard-ad-space +##.billboard-ads +##.billboard.ad +##.billboardAd +##.billboard__advert +##.billboard_ad +##.billboard_ad_wrap +##.billboard_adwrap +##.bing-ads-wrapper +##.block--ad +##.block--ads +##.block--dfp +##.block--doubleclick +##.block--simpleads +##.block-ad +##.block-ad-entity +##.block-ad-header +##.block-ad-leaderboard +##.block-ad-wrapper +##.block-admanager +##.block-ads +##.block-ads-bottom +##.block-ads-home +##.block-ads-system +##.block-ads-top +##.block-ads-yahoo +##.block-ads1 +##.block-ads2 +##.block-ads3 +##.block-ads_top +##.block-adsense +##.block-adtech +##.block-adv +##.block-advert +##.block-advertisement +##.block-advertisement-banner-block +##.block-advertising +##.block-adzerk +##.block-bg-advertisement +##.block-boxes-ad +##.block-cdw-google-ads +##.block-dfp +##.block-dfp-ad +##.block-dfp-blocks +##.block-doubleclick_ads +##.block-fusion-ads +##.block-google-admanager +##.block-openads +##.block-openx +##.block-quartz-ads +##.block-reklama +##.block-simpleads +##.block-skyscraper-ad +##.block-sponsor +##.block-sponsored-links +##.block-the-dfp +##.block-wrap-ad +##.block-yt-ads +##.blockAd +##.blockAds +##.blockAdvertise +##.block__ads__ad +##.block_ad +##.block_ad1 +##.block_ad303x1000_left +##.block_ad303x1000_right +##.block_ad_middle +##.block_ad_top +##.block_ads +##.block_adslot +##.block_adv +##.block_advert +##.block_article_ad +##.blockad +##.blocked-ads +##.blog-ad +##.blog-ad-image +##.blog-ads +##.blog-advertisement +##.blogAd +##.blogAdvertisement +##.blog_ad +##.blogads +##.bmd_advert +##.bn_ads +##.bnr_ad +##.body-ad +##.body-ads +##.body-top-ads +##.bodyAd +##.body_ad +##.bodyads +##.bodyads2 +##.bordered-ad +##.botAd +##.bot_ad +##.bot_ads +##.bottom-ad +##.bottom-ad--bigbox +##.bottom-ad-banner +##.bottom-ad-box +##.bottom-ad-container +##.bottom-ad-desktop +##.bottom-ad-large +##.bottom-ad-placeholder +##.bottom-ad-wrapper +##.bottom-ad-zone +##.bottom-ad2 +##.bottom-ads +##.bottom-ads-container +##.bottom-ads-sticky +##.bottom-ads-wrapper +##.bottom-adv +##.bottom-adv-container +##.bottom-banner-ad +##.bottom-fixed-ad +##.bottom-left-ad +##.bottom-main-adsense +##.bottom-mobile-ad +##.bottom-mpu-ad +##.bottom-post-ad-space +##.bottom-post-ads +##.bottom-right-advert +##.bottom-side-advertisement +##.bottomAd +##.bottomAdBlock +##.bottomAdContainer +##.bottomAds +##.bottomAdvert +##.bottomAdvertisement +##.bottom_ad +##.bottom_ad_block +##.bottom_ad_placeholder +##.bottom_ad_responsive +##.bottom_ads +##.bottom_adsense +##.bottom_adspace +##.bottom_banner_ad +##.bottom_banner_advert_text +##.bottom_bar_ads +##.bottom_left_advert +##.bottom_right_ad +##.bottom_rightad +##.bottom_side_ad +##.bottom_sponsor +##.bottom_sticky_ad +##.bottomad +##.bottomads +##.bottomadvert +##.botton_advertisement +##.box-ad +##.box-ad-middle +##.box-ads +##.box-adsense +##.box-adsense-top +##.box-advert +##.box-advertisement +##.box-advertising +##.box-adverts +##.box-bannerads +##.box-bannerads-leaderboard-fallback +##.box-entry-ad +##.box-fixed-ads +##.box-footer-ad +##.boxAd +##.boxAdContainer +##.boxAds +##.boxAds2 +##.boxAdvertisement +##.boxSponsor +##.box_ad +##.box_ad_container +##.box_ad_content +##.box_ad_horizontal +##.box_ad_spacer +##.box_ad_wrap +##.box_ads +##.box_adv +##.box_adv_728 +##.box_advert +##.box_advertising +##.box_content_ad +##.box_content_ads +##.box_layout_ad +##.box_publicidad +##.box_sidebar-ads +##.boxad +##.boxad1 +##.boxad2 +##.boxadcont +##.boxads +##.boxadv +##.bps-ad-wrapper +##.bps-advertisement +##.bq_adleaderboard +##.bq_rightAd +##.br-ad +##.br-ad-wrapper +##.breadads +##.break-ads +##.breaker-ad +##.breakerAd +##.briefNewsAd +##.brn-ads-box +##.brn-ads-mobile-container +##.brn-ads-sticky-wrapper +##.broker-ad +##.browse-ad-container +##.browsi-ad +##.btm_ad +##.btn_ad +##.bump-ad +##.bunyad-ad +##.buttom_ad +##.buttom_ad_size +##.button-ad +##.button-ads +##.buttonAd +##.buttonAdSpot +##.buttonAds +##.button_ad +##.button_ads +##.button_advert +##.button_left_ad +##.button_right_ad +##.buttonad +##.buttonadbox +##.buttonads +##.buySellAdsContainer +##.buysellAds +##.buzzAd +##.c-Ad +##.c-Adhesion +##.c-ArticleAds +##.c-ad +##.c-ad--adStickyContainer +##.c-ad--bigbox +##.c-ad--header +##.c-ad-flex +##.c-ad-fluid +##.c-ad-placeholder +##.c-ad-size2 +##.c-ad-size3 +##.c-adDisplay +##.c-adDisplay_container +##.c-adOmnibar +##.c-adSense +##.c-adSkyBox +##.c-adbutler-ad +##.c-adbutler-ad__wrapper +##.c-adcontainer +##.c-ads +##.c-adunit +##.c-adunit--billboard +##.c-adunit--first +##.c-adunit__container +##.c-adv3__inner +##.c-advert +##.c-advert-app +##.c-advert-superbanner +##.c-advertisement +##.c-advertisement--billboard +##.c-advertisement--rectangle +##.c-advertising +##.c-advertising__banner-area +##.c-adverts +##.c-advscrollingzone +##.c-box--advert +##.c-gallery-vertical__advert +##.c-googleadslot +##.c-gpt-ad +##.c-header__ad +##.c-header__advert-container +##.c-pageArticleSingle_bottomAd +##.c-prebid +##.c-sidebar-ad-stream__ad +##.c-sitenav-adslot +##.c-sitenavPlaceholder__ad +##.c_nt_ad +##.cableads +##.cactus-ads +##.cactus-header-ads +##.caja_ad +##.california-ad +##.california-sidebar-ad +##.calloutAd +##.carbon-ad +##.carbon_ads +##.carbonad +##.carbonad-tag +##.carbonads-widget +##.card--ad +##.card--article-ad +##.card-ad +##.card-ads +##.card-article-ads +##.cardAd +##.catalog_ads +##.category-ad:not(html):not(body):not(.post) +##.category-ads:not(html):not(body):not(.post) +##.categoryMosaic-advertising +##.categoryMosaic-advertisingText +##.cazAd +##.cb-ad-banner +##.cb-ad-container +##.cbd_ad_manager +##.cbs-ad +##.cc-advert +##.center-ad +##.center-ad-long +##.center-tag-rightad +##.centerAD +##.centerAd +##.centerAds +##.center_ad +##.center_add +##.center_ads +##.center_inline_ad +##.centerad +##.centerads +##.centeradv +##.centered-ad +##.ch-ad-item +##.channel--ad +##.channel-ad +##.channel-adv +##.channel-icon--ad +##.channel-icon__ad-buffer +##.channel-sidebar-big-box-ad +##.channelBoxAds +##.channel_ad_2016 +##.chapter-bottom-ads +##.chapter-top-ads +##.chart_ads +##.chitika-ad +##.cl-ad-billboard +##.clAdPlacementAnchorWrapper +##.clever-core-ads +##.clickforceads +##.clickio-side-ad +##.client-ad +##.clsy-c-advsection +##.cmp-advertisement +##.cmp-mobile-advertisement +##.cms-ad +##.cn-advertising +##.cnbcHeaderAd +##.cnc-ads +##.cnx-player +##.cnx-player-wrapper +##.coinzilla-ad +##.coinzilla-ad--mobile +##.col-ad +##.col-ad-hidden +##.col-has-ad +##.col-line-ad +##.col2-ads +##.colAd +##.colBoxAdframe +##.colBoxDisplayAd +##.col_ad +##.colads +##.collapsed-ad +##.colombiaAd +##.column-ad +##.columnAd +##.columnAdvert +##.columnBoxAd +##.columnRightAdvert +##.combinationAd +##.comment-ad +##.comment-ad-wrap +##.comment-advertisement +##.comment_ad +##.comment_ad_box +##.commercialAd +##.companion-ad +##.companion-ads +##.companionAd +##.companion_ad +##.complex-ad +##.component-ar-horizontal-bar-ad +##.components-Ad-___Ad__ad +##.con_ads +##.connatix +##.connatix-container +##.connatix-hodler +##.connatix-holder +##.connatix-main-container +##.connatix-wrapper +##.connatix-wysiwyg-container +##.consoleAd +##.cont-ad +##.container--ad +##.container--ads +##.container--ads-leaderboard-atf +##.container--advert +##.container--bannerAd +##.container-ad-600 +##.container-ad-left +##.container-adds +##.container-adrotate +##.container-ads +##.container-adwords +##.container-banner-ads +##.container-bottom-ad +##.container-first-ads +##.container-lower-ad +##.container-rectangle-ad +##.container-top-adv +##.containerAdsense +##.containerSqAd +##.container__ad +##.container__box--ads +##.container_ad +##.container_publicidad +##.containerads +##.contains-ad +##.contains-advertisment +##.content--right-ads +##.content-ad-article +##.content-ad-box +##.content-ad-container +##.content-ad-left +##.content-ad-right +##.content-ad-side +##.content-ad-widget +##.content-ad-wrapper +##.content-ads +##.content-ads-bottom +##.content-advert +##.content-advertisment +##.content-bottom-ad +##.content-bottom-mpu +##.content-contentad +##.content-footer-ad +##.content-footer-ad-block +##.content-header-ad +##.content-kuss-ads +##.content-leaderboard-ad +##.content-leaderboard-ads +##.content-page-ad_wrap +##.content-result-ads +##.content-top-ad-item +##.content1-ad +##.content2-ad +##.contentAd +##.contentAd--sb1 +##.contentAdBox +##.contentAdContainer +##.contentAdFoot +##.contentAdIndex +##.contentAds +##.contentAdsCommon +##.contentAdsWrapper +##.contentAdvertisement +##.contentTopAd +##.contentTopAdSmall +##.contentTopAds +##.content__ad +##.content__ad__content +##.content_ad_728 +##.content_ad_head +##.content_ad_side +##.content_ads +##.content_adsense +##.content_adsq +##.content_advert +##.content_advertising +##.content_advt +##.content_bottom_adsense +##.content_gpt_top_ads +##.content_inner_ad +##.content_left_advert +##.contentad +##.contentad-end +##.contentad-home +##.contentad-superbanner-2 +##.contentad-top +##.contentad2 +##.contentadarticle +##.contentadleft +##.contentads1 +##.contentads2 +##.contentbox_ad +##.contentleftad +##.contest_ad +##.context-ads +##.contextualAds +##.contextual_ad_unit +##.cornerad +##.cpmstarHeadline +##.cpmstarText +##.crain-advertisement +##.criteo-ad +##.crm-adcontain +##.crumb-ad +##.cspAd +##.css--ad +##.ct-ads +##.ct-advert +##.ct-advertising-footer +##.ct-bottom-ads +##.ct_ad +##.cta-ad +##.cube-ad +##.cube_ad +##.cube_ads +##.custom-ad +##.custom-ad-area +##.custom-ad-container +##.custom-ads +##.custom-advert-banner +##.custom-sticky-ad-container +##.customAd +##.custom_ad +##.custom_ad_responsive +##.custom_ads +##.custom_ads_positions +##.custom_banner_ad +##.custom_footer_ad +##.customadvert +##.customized_ad_module +##.cwAdvert +##.cxAdvertisement +##.d3-c-adblock +##.d3-o-adv-block +##.da-custom-ad-box +##.dac__banner__wrapper +##.daily-adlabel +##.dart-ad +##.dart-ad-content +##.dart-ad-grid +##.dart-ad-title +##.dart-advertisement +##.dart-leaderboard +##.dart-leaderboard-top +##.dartAdImage +##.dart_ad +##.dart_tag +##.dartad +##.dartadbanner +##.dartadvert +##.dartiframe +##.dc-ad +##.dcmads +##.dd-ad +##.dd-ad-container +##.deckAd +##.deckads +##.demand-supply +##.desktop-ad +##.desktop-ad-banner +##.desktop-ad-container +##.desktop-ad-inpage +##.desktop-ad-slider +##.desktop-ads +##.desktop-adunit +##.desktop-advert +##.desktop-article-top-ad +##.desktop-aside-ad-hide +##.desktop-lazy-ads +##.desktop-sidebar-ad-wrapper +##.desktop-top-ad-wrapper +##.desktop.ad +##.desktopAd +##.desktop_ad +##.desktop_mpu +##.desktop_only_ad +##.desktopads +##.detail-ad +##.detail-ads +##.detail__ad--small +##.detail_ad +##.detail_article_ad +##.detail_top_advert +##.details-advert +##.dfm-featured-bottom-flex-container +##.dfp-ad +##.dfp-ad-bigbox2-wrap +##.dfp-ad-container +##.dfp-ad-container-box +##.dfp-ad-container-wide +##.dfp-ad-full +##.dfp-ad-hideempty +##.dfp-ad-lazy +##.dfp-ad-lead2-wrap +##.dfp-ad-lead3-wrap +##.dfp-ad-midbreaker-wrap +##.dfp-ad-midbreaker2-wrap +##.dfp-ad-placeholder +##.dfp-ad-rect +##.dfp-ad-region-1 +##.dfp-ad-region-2 +##.dfp-ad-tags +##.dfp-ad-top-wrapper +##.dfp-ad-unit +##.dfp-ad-widget +##.dfp-ads-ad-article-middle +##.dfp-ads-embedded +##.dfp-adspot +##.dfp-article-ad +##.dfp-banner +##.dfp-banner-slot +##.dfp-billboard-wrapper +##.dfp-block +##.dfp-bottom +##.dfp-button +##.dfp-close-ad +##.dfp-double-mpu +##.dfp-dynamic-tag +##.dfp-fixedbar +##.dfp-here-bottom +##.dfp-here-top +##.dfp-interstitial +##.dfp-leaderboard +##.dfp-leaderboard-container +##.dfp-mrec +##.dfp-panel +##.dfp-plugin-advert +##.dfp-position +##.dfp-slot +##.dfp-slot-wallpaper +##.dfp-space +##.dfp-super-leaderboard +##.dfp-tag-wrapper +##.dfp-top +##.dfp-top1 +##.dfp-top1-container +##.dfp-top_leaderboard +##.dfp-wrap +##.dfp-wrapper +##.dfpAd +##.dfpAdUnitContainer +##.dfpAds +##.dfpAdspot +##.dfpAdvert +##.dfp_ATF_wrapper +##.dfp_ad--outbrain +##.dfp_ad_block +##.dfp_ad_caption +##.dfp_ad_content_bottom +##.dfp_ad_content_top +##.dfp_ad_footer +##.dfp_ad_header +##.dfp_ad_pos +##.dfp_ad_unit +##.dfp_ads_block +##.dfp_frame +##.dfp_slot +##.dfp_strip +##.dfp_top-ad +##.dfp_txt +##.dfp_unit +##.dfp_unit--interscroller +##.dfp_unit-ad_container +##.dfpad +##.dfrads +##.dfx-ad +##.dfx-adBlock1Wrapper +##.dg-gpt-ad-container +##.dianomi-ad +##.dianomi-container +##.dianomi-embed +##.dianomiScriptContainer +##.dianomi_context +##.dikr-responsive-ads-slot +##.discourse-adplugin +##.discourse-google-dfp +##.display-ad +##.display-ad-block +##.display-adhorizontal +##.display-ads-block +##.display-advertisement +##.displayAd +##.displayAdCode +##.displayAdSlot +##.displayAdUnit +##.displayAds +##.display_ad +##.display_ads_right +##.div-gpt-ad-adhesion-leaderboard-wrap +##.div-insticator-ad +##.divAd +##.divAdright +##.divAds +##.divAdsBanner +##.divAdsLeft +##.divAdsRight +##.divReklama +##.divRepAd +##.divSponsoredBox +##.divSponsoredLinks +##.divTopADBanner +##.divTopADBannerWapper +##.divTopArticleAd +##.div_advertisement +##.divad1 +##.divad2 +##.divad3 +##.divads +##.divider-ad +##.divider-advert +##.divider-full-width-ad +##.divider_ad +##.dlSponsoredLinks +##.dm-adSlotBillboard +##.dm-adSlotNative1 +##.dm-adSlotNative2 +##.dm-adSlotNative3 +##.dm-adSlotRectangle1 +##.dm-adSlotRectangle2 +##.dm-adSlotSkyscraper +##.dm-adSlot__sticky +##.dm_ad-billboard +##.dm_ad-container +##.dm_ad-halfpage +##.dm_ad-leaderboard +##.dm_ad-link +##.dm_ad-skyscraper +##.dmpu-ad +##.dn-ad-wide +##.dotcom-ad +##.double-ad +##.double-ads +##.doubleClickAd +##.doubleclickAds +##.download-ad +##.downloadAds +##.download_ad +##.dsk-box-ad-d +##.dsq_ad +##.dt-sponsor +##.dtads-desktop +##.dtads-slot +##.dual-ads +##.dualAds +##.dyn-sidebar-ad +##.dynamic-ads +##.dynamicAdvertContainer +##.dynamicLeadAd +##.dynamic_adslot +##.dynamicad1 +##.dynamicad2 +##.e-ad +##.e-advertise +##.e3lan +##.e3lan-top +##.e3lan-widget-content +##.e3lan300-100 +##.e3lan300-250 +##.e3lan300_250-widget +##.eaa-ad +##.eads +##.easy-ads +##.easyAdsBox +##.easyAdsSinglePosition +##.ebayads +##.ebm-ad-target__outer +##.ecommerce-ad +##.ecosia-ads +##.eddy-adunit +##.editor_ad +##.eg-ad +##.eg-custom-ad +##.element--ad +##.element-ad +##.element-adplace +##.element_contentad1 +##.element_contentad2 +##.element_contentad3 +##.element_contentad4 +##.element_contentad5 +##.elementor-widget-wp-widget-advads_ad_widget +##.embAD +##.embed-ad +##.embedded-article-ad +##.embeddedAd +##.embeddedAds +##.embedded_ad_wrapper +##.empire-prefill-container-injected +##.empire-unit-prefill-container +##.empty-ad +##.endAHolder +##.endti-adlabel +##.entry-ad +##.entry-ads +##.entry-bottom-ad +##.entry-bottom-ads +##.entry-top-ad +##.entryAd +##.entry_ad +##.entryad +##.etn-ad-text +##.eu-advertisment1 +##.evo-ads-widget +##.evolve-ad +##.ex_pu_iframe +##.exo_wrapper +##.external-ad +##.external-add +##.ezAdsWidget +##.ezmob-footer +##.ezmob-footer-desktop +##.ezo_ad +##.ezoic-ad +##.ezoic-ad-adaptive +##.ezoic-adpicker-ad +##.ezoic-floating-bottom +##.f-ad +##.f-item-ad +##.f-item-ad-inhouse +##.fah-btn.nopop +##.fah-btn__container +##.fbs-ad--ntv-home-wrapper +##.fbs-ad--top-wrapper +##.fbs-ad--topx-wrapper +##.fc_clmb_ad +##.fce_ads +##.fco-ad +##.featureAd +##.feature_ad +##.featured-ad +##.featured-ads +##.featured-sponsors +##.featured-story-ad +##.featuredAdBox +##.featuredAds +##.featuredBoxAD +##.featured_ad +##.featuredadvertising +##.feed-ad +##.feed-ad-wrapper +##.fh_ad_microbuttons +##.field-59-companion-ad +##.fig-ad-content +##.first-article-ad-block +##.first-banner-ad +##.first-leaderbord-adv +##.first-leaderbord-adv-mobile +##.firstAd-container +##.first_ad +##.first_party_ad_wrapper +##.first_post_ad +##.firstad +##.firstpost_advert +##.firstpost_advert_container +##.fix_ad +##.fixadheight +##.fixadheightbottom +##.fixed-ad-aside +##.fixed-ad-bottom +##.fixed-ads +##.fixed-bottom-ad +##.fixed-sidebar-ad +##.fixedAds +##.fixedLeftAd +##.fixedRightAd +##.fixed_ad +##.fixed_adslot +##.fixed_advert_banner +##.fjs-ad-hide-empty +##.fla-ad +##.flashAd +##.flash_ad +##.flash_advert +##.flashad +##.flashadd +##.flex-ad +##.flex-posts-ads +##.flexAd +##.flexAds +##.flexContentAd +##.flexad +##.flexadvert +##.flexiad +##.flm-ad +##.floatad +##.floatads +##.floated-ad +##.floated_right_ad +##.floating-ads +##.floating-advert +##.floatingAds +##.fly-ad +##.fly-ads-chapter-page +##.fm-badge-ad +##.fnadvert +##.fns_td_wrap +##.fold-ads +##.follower-ad-bottom +##.following-ad +##.following-ad-container +##.foot-ad +##.foot-ads +##.foot-advertisement +##.foot_adsense +##.footad +##.footer-300-ad +##.footer-ad +##.footer-ad-full-wrapper +##.footer-ad-labeling +##.footer-ad-row +##.footer-ad-section +##.footer-ad-squares +##.footer-ad-unit +##.footer-ad-wrap +##.footer-adrow +##.footer-ads +##.footer-ads-slide +##.footer-ads-wrapper +##.footer-ads_unlocked +##.footer-adsbar +##.footer-adsense +##.footer-advert +##.footer-advert-large +##.footer-advertisement +##.footer-advertisements +##.footer-advertising +##.footer-advertising-area +##.footer-banner-ad +##.footer-banner-ads +##.footer-floating-ad +##.footer-im-ad +##.footer-leaderboard-ad +##.footer-post-ad-blk +##.footer-prebid +##.footer-text-ads +##.footerAd +##.footerAdModule +##.footerAdUnit +##.footerAdWrapper +##.footerAds +##.footerAdsWrap +##.footerAdslot +##.footerAdverts +##.footerBottomAdSec +##.footerFullAd +##.footerPageAds +##.footerTextAd +##.footer__ads--content +##.footer__advert +##.footer_ad +##.footer_ad336 +##.footer_ad_container +##.footer_ads +##.footer_adv +##.footer_advertisement +##.footer_block_ad +##.footer_bottom_ad +##.footer_bottomad +##.footer_line_ad +##.footer_text_ad +##.footer_text_adblog +##.footerad +##.footeradspace +##.footertextadbox +##.forbes-ad-container +##.forex_ad_links +##.fortune-ad-unit +##.forum-ad +##.forum-ad-2 +##.forum-teaser-ad +##.forum-topic--adsense +##.forumAd +##.forum_ad_beneath +##.four-ads +##.fp-ad-nativendo-one-third +##.fp-ad-rectangle +##.fp-ad300 +##.fp-ads +##.fp-right-ad +##.fp-right-ad-list +##.fp-right-ad-zone +##.fp_ad_text +##.fp_adv-box +##.frame_adv +##.framead +##.freestar-ad-container +##.freestar-ad-sidebar-container +##.freestar-ad-wide-container +##.freestar-incontent-ad +##.frn_adbox +##.front-ad +##.front_ad +##.frontads +##.frontendAd +##.frontone_ad +##.frontpage__article--ad +##.frontpage_ads +##.fsAdContainer +##.fs_ad +##.fs_ads +##.fsrads +##.ft-ad +##.full-ad +##.full-ad-wrapper +##.full-ads +##.full-adv +##.full-bleed-ad +##.full-bleed-ad-container +##.full-page-ad +##.full-top-ad-area +##.full-width-ad +##.full-width-ad-container +##.full-width-ads +##.fullAdBar +##.fullBleedAd +##.fullSizeAd +##.fullWidthAd +##.full_AD +##.full_ad_box +##.full_ad_row +##.full_width_ad +##.fulladblock +##.fullbanner_ad +##.fullbannerad +##.fullpage-ad +##.fullsize-ad-square +##.fullwidth-advertisement +##.fusion-ads +##.fuv_sidebar_ad_widget +##.fwAdTags +##.fw_ad +##.g-ad +##.g-ad-fix +##.g-ad-leaderboard +##.g-ad-slot +##.g-adver +##.g-advertisement-block +##.g1-ads +##.g1-advertisement +##.g2-adsense +##.g3-adsense +##.gAdMTable +##.gAdMainParent +##.gAdMobileTable +##.gAdOne +##.gAdOneMobile +##.gAdRows +##.gAdSky +##.gAdThreeDesktop +##.gAdThreeMobile +##.gAdTwo +##.gAds +##.gAds1 +##.gAdsBlock +##.gAdsContainer +##.gAdvertising +##.g_ad +##.g_adv +##.ga-ads +##.gaTeaserAds +##.gaTeaserAdsBox +##.gabfire_ad +##.gabfire_simplead_widget +##.gad-container +##.gad-right1 +##.gad-right2 +##.gad300x600 +##.gad336x280 +##.gadContainer +##.gad_container +##.gads_container +##.gadsense +##.gadsense-ad +##.gallery-ad +##.gallery-ad-container +##.gallery-ad-counter +##.gallery-ad-holder +##.gallery-ad-lazyload-placeholder +##.gallery-ad-overlay +##.gallery-adslot-top +##.gallery-injectedAd +##.gallery-sidebar-ad +##.gallery-slide-ad +##.galleryAds +##.galleryLeftAd +##.galleryRightAd +##.gallery_ad +##.gallery_ad_wrapper +##.gallery_ads_box +##.galleryad +##.galleryads +##.gam-ad +##.gam-ad-hz-bg +##.gam_ad_slot +##.game-ads +##.game-category-ads +##.gameAd +##.gameBottomAd +##.gamepage_boxad +##.games-ad-wrapper +##.gb-ad-top +##.gb_area_ads +##.general-ad +##.genericAds +##.ggl_ads_row +##.ggl_txt_ads +##.giant_pushbar_ads_l +##.glacier-ad +##.globalAd +##.gnm-ad-unit +##.gnm-ad-unit-container +##.gnm-ad-zones +##.gnm-adhesion-ad +##.gnm-banner-ad +##.gnm-bg-ad +##.go-ad +##.goAdMan +##.goads +##.googads +##.google-2ad-m +##.google-ad +##.google-ad-160-600 +##.google-ad-468-60 +##.google-ad-728-90 +##.google-ad-block +##.google-ad-container +##.google-ad-content +##.google-ad-header2 +##.google-ad-image +##.google-ad-manager +##.google-ad-placeholder +##.google-ad-sidebar +##.google-ad-space +##.google-ad-widget +##.google-ads +##.google-ads-billboard +##.google-ads-bottom +##.google-ads-container +##.google-ads-footer-01 +##.google-ads-footer-02 +##.google-ads-in_article +##.google-ads-leaderboard +##.google-ads-long +##.google-ads-responsive +##.google-ads-right +##.google-ads-sidebar +##.google-ads-widget +##.google-ads-wrapper +##.google-adsense +##.google-advert-sidebar +##.google-afc-wrapper +##.google-bottom-ads +##.google-dfp-ad-caption +##.google-dfp-ad-wrapper +##.google-right-ad +##.google-sponsored +##.google-sponsored-ads +##.google-sponsored-link +##.google-sponsored-links +##.google468 +##.googleAd +##.googleAdBox +##.googleAdContainer +##.googleAdSearch +##.googleAdSense +##.googleAdWrapper +##.googleAdd +##.googleAds +##.googleAdsContainer +##.googleAdsense +##.googleAdv +##.google_ad +##.google_ad_container +##.google_ad_label +##.google_ad_wide +##.google_add +##.google_admanager +##.google_ads +##.google_ads_content +##.google_ads_sidebar +##.google_adsense +##.google_adsense1 +##.google_adsense_footer +##.google_afc +##.google_afc_ad +##.googlead +##.googleadArea +##.googleadbottom +##.googleadcontainer +##.googleaddiv +##.googleads +##.googleads-container +##.googleads-height +##.googleadsense +##.googleadsrectangle +##.googleadv +##.googleadvertisement +##.googleadwrap +##.googleafc +##.gpAds +##.gpt-ad +##.gpt-ad-container +##.gpt-ad-sidebar-wrap +##.gpt-ad-wrapper +##.gpt-ads +##.gpt-billboard +##.gpt-breaker-container +##.gpt-container +##.gpt-leaderboard-banner +##.gpt-mpu-banner +##.gpt-sticky-sidebar +##.gpt.top-slot +##.gptSlot +##.gptSlot-outerContainer +##.gptSlot__sticky-footer +##.gptslot +##.gradientAd +##.graphic_ad +##.grev-ad +##.grey-ad +##.grey-ad-line +##.grey-ad-notice +##.greyAd +##.greyad +##.grid-ad +##.grid-ad-col__big +##.grid-advertisement +##.grid-block-ad +##.grid-item-ad +##.gridAd +##.gridAdRow +##.gridSideAd +##.grid_ad_container +##.gridad +##.gridlove-ad +##.gridstream_ad +##.ground-ads-shared +##.group-ad-leaderboard +##.group-google-ads +##.group-item-ad +##.group_ad +##.gsAd +##.gtm-ad-slot +##.guide__row--fixed-ad +##.guj-ad--placeholder +##.gujAd +##.gutterads +##.gw-ad +##.h-adholder +##.h-ads +##.h-adver +##.h-large-ad-box +##.h-top-ad +##.h11-ad-top +##.h_Ads +##.h_ad +##.half-ad +##.half-page-ad +##.half-page-ad-1 +##.half-page-ad-2 +##.halfPageAd +##.half_ad_box +##.halfpage_ad +##.halfpage_ad_1 +##.halfpage_ad_container +##.happy-inline-ad +##.has-ad +##.has-adslot +##.has-fixed-bottom-ad +##.hasAD +##.hdr-ad +##.hdr-ads +##.hdrAd +##.hdr_ad +##.head-ad +##.head-ads +##.head-banner468 +##.head-top-ads +##.headAd +##.head_ad +##.head_ad_wrapper +##.head_ads +##.head_adv +##.head_advert +##.headad +##.headadcontainer +##.header-ad +##.header-ad-area +##.header-ad-banner +##.header-ad-box +##.header-ad-container +##.header-ad-desktop +##.header-ad-frame +##.header-ad-holder +##.header-ad-region +##.header-ad-row +##.header-ad-space +##.header-ad-top +##.header-ad-widget +##.header-ad-wrap +##.header-ad-wrapper +##.header-ad-zone +##.header-adbanner +##.header-adbox +##.header-adcode +##.header-adplace +##.header-ads +##.header-ads-area +##.header-ads-container +##.header-ads-holder +##.header-ads-wrap +##.header-ads-wrapper +##.header-adsense +##.header-adslot-container +##.header-adspace +##.header-adv +##.header-advert +##.header-advert-wrapper +##.header-advertise +##.header-advertisement +##.header-advertising +##.header-article-ads +##.header-banner-ad +##.header-banner-ads +##.header-banner-advertising +##.header-bannerad +##.header-pencil-ad +##.header-sponsor +##.header-top-ad +##.header-top_ads +##.headerAd +##.headerAd1 +##.headerAdBanner +##.headerAdContainer +##.headerAdPosition +##.headerAdSpacing +##.headerAdWrapper +##.headerAds +##.headerAds250 +##.headerAdspace +##.headerAdvert +##.headerAdvertisement +##.headerTextAd +##.headerTopAd +##.headerTopAds +##.header__ad +##.header__ads +##.header__ads-wrapper +##.header__advertisement +##.header_ad +##.header_ad1 +##.header_ad_center +##.header_ad_div +##.header_ad_space +##.header_ads +##.header_ads-container +##.header_ads_box +##.header_adspace +##.header_advert +##.header_advertisement +##.header_advertisment +##.header_leaderboard_ad +##.header_top_ad +##.headerad +##.headeradarea +##.headeradblock +##.headeradright +##.headerads +##.heading-ad-space +##.headline-adblock +##.headline-ads +##.headline_advert +##.hederAd +##.herald-ad +##.hero-ad +##.hero-ad-slot +##.hero-advert +##.heroAd +##.hidden-ad +##.hide-ad +##.hide_ad +##.hidead +##.highlightsAd +##.hm-ad +##.holder-ad +##.holder-ads +##.home-ad +##.home-ad-bigbox +##.home-ad-container +##.home-ad-inline +##.home-ad-links +##.home-ad-region-1 +##.home-ad-section +##.home-ads +##.home-ads-container +##.home-ads1 +##.home-adv-box +##.home-advert +##.home-body-ads +##.home-page-ad +##.home-sidebar-ad +##.home-sponsored-links +##.home-sticky-ad +##.home-top-ad +##.homeAd +##.homeAd1 +##.homeAd2 +##.homeAdBox +##.homeAdSection +##.homeMainAd +##.homePageAdSquare +##.homePageAds +##.homeTopAdContainer +##.home_ad +##.home_ad_bottom +##.home_ad_large +##.home_ad_title +##.home_adblock +##.home_advert +##.home_advertisement +##.homepage-ad +##.homepage-ad-block +##.homepage-ad-module +##.homepage-advertisement +##.homepage-banner-ad +##.homepage-footer-ad +##.homepage-footer-ads +##.homepageAd +##.homepage__native-ad +##.homepage_ads +##.homepage_block_ad +##.hor-ad +##.hor_ad +##.horiAd +##.horiz_adspace +##.horizontal-ad +##.horizontal-ad-container +##.horizontal-ad-holder +##.horizontal-ad-wrapper +##.horizontal-ad2 +##.horizontal-ads +##.horizontal-advert-container +##.horizontal-full-ad +##.horizontal.ad +##.horizontalAd +##.horizontalAdText +##.horizontalAdvert +##.horizontal_Fullad +##.horizontal_ad +##.horizontal_adblock +##.horizontal_ads +##.hortad +##.hotel-ad +##.house-ad +##.house-ad-small +##.house-ad-unit +##.house-ads +##.houseAd +##.houseAd1 +##.housead +##.hover_ads +##.hoverad +##.hp-ad-container +##.hp-adsection +##.htl-ad +##.htl-ad-placeholder +##.htlad-GL_Adhesion +##.html-advertisement +##.hyperAd +##.iAdserver +##.iframe-ad +##.iframe-ads +##.iframeAd +##.iframeAds +##.image-advertisement +##.imageAd +##.imageAds +##.imagead +##.imageads +##.img-advert +##.img_ads +##.imgad +##.in-article-ad +##.in-article-ad-placeholder +##.in-article-ad-wrapper +##.in-article-adx +##.in-between-ad +##.in-content-ad +##.in-content-ad-wrapper +##.in-page-ad +##.in-slider-ad +##.in-story-ads +##.in-text-ad +##.in-text__advertising +##.in-thumb-ad +##.in-thumb-video-ad +##.inPageAd +##.in_ad +##.in_article_ad +##.in_article_ad_wrapper +##.in_content_ad_container +##.in_content_advert +##.inarticlead +##.inc-ad +##.incontent-ad1 +##.incontentAd +##.incontent_ads +##.index-adv +##.index_728_ad +##.index_ad +##.index_ad_a2 +##.index_ad_a4 +##.index_ad_a5 +##.index_ad_a6 +##.index_right_ad +##.infinity-ad +##.inhousead +##.injected-ad +##.injectedAd +##.inline-ad +##.inline-ad-card +##.inline-ad-container +##.inline-ad-desktop +##.inline-ad-placeholder +##.inline-ad-text +##.inline-ad-wrap +##.inline-ad-wrapper +##.inline-adblock +##.inline-advert +##.inline-banner-ad +##.inline-display-ad +##.inline-google-ad-slot +##.inline-mpu +##.inline-story-add +##.inlineAd +##.inlineAdContainer +##.inlineAdImage +##.inlineAdInner +##.inlineAdNotice +##.inlineAdText +##.inlineAdvert +##.inlineAdvertisement +##.inlinePageAds +##.inlineSideAd +##.inline_ad +##.inline_ad_container +##.inline_ad_title +##.inline_ads +##.inlinead +##.inlinead_lazyload +##.inlineadsense +##.inlineadtitle +##.inlist-ad +##.inlistAd +##.inner-ad +##.inner-ad-disclaimer +##.inner-ad-section +##.inner-adv +##.inner-advert +##.inner-post-ad +##.innerAdWrapper +##.innerAds +##.innerContentAd +##.innerWidecontentAd +##.inner_ad +##.inner_ad_advertise +##.inner_big_ad +##.innerad +##.inpostad +##.inr_top_ads +##.ins_adwrap +##.insert-post-ads +##.insert_ad +##.insert_ad_column +##.insert_advertisement +##.insertad +##.inside_ad +##.insideads +##.inslide-ad +##.insticator-ads +##.instream_ad +##.intAdRow +##.intad +##.interAd +##.internal-ad +##.internalAd +##.internal_ad +##.interstitial-ad +##.intext-ads +##.intra-article-ad +##.intro-ad +##.ion-ad +##.ione-widget-dart-ad +##.ipc-advert +##.ipc-advert-class +##.ipsAd +##.ipsAdvertisement +##.iqadlinebottom +##.iqadmarker +##.iqadtile_wrapper +##.is-ad +##.is-carbon-ad +##.is-desktop-ads +##.is-mpu +##.is-preload-ad +##.is-script-ad +##.is-sponsored +##.is-sticky-ad +##.isAd +##.isAdPage +##.isad_box +##.ise-ad +##.island-ad +##.islandAd +##.islandAdvert +##.island_ad +##.islandad +##.item--ad +##.item-ad +##.item-ad-leaderboard +##.item-advertising +##.item-container-ad +##.itemAdvertise +##.item_ads +##.itsanad +##.j-ad +##.jLinkSponsored +##.jannah_ad +##.jg-ad-5 +##.jg-ad-970 +##.jobbioapp +##.jobs-ad-box +##.jobs-ad-marker +##.jquery-adi +##.jquery-script-ads +##.js-ad +##.js-ad-banner-container +##.js-ad-buttons +##.js-ad-container +##.js-ad-dynamic +##.js-ad-frame +##.js-ad-home +##.js-ad-loader-bottom +##.js-ad-slot +##.js-ad-static +##.js-ad-unit +##.js-ad-unit-bottom +##.js-ad-wrapper +##.js-ad_iframe +##.js-adfliction-iframe +##.js-adfliction-standard +##.js-ads +##.js-ads-carousel +##.js-advert +##.js-advert-container +##.js-adzone +##.js-anchor-ad +##.js-billboard-advert +##.js-dfp-ad +##.js-dfp-ad-bottom +##.js-dfp-ad-top +##.js-gpt-ad +##.js-gptAd +##.js-header-ad +##.js-header-ad-wrapper +##.js-lazy-ad +##.js-mapped-ad +##.js-mpu +##.js-native-ad +##.js-no-sticky-ad +##.js-overlay_ad +##.js-react-simple-ad +##.js-results-ads +##.js-right-ad-block +##.js-sidebar-ads +##.js-skyscraper-ad +##.js-slide-right-ad +##.js-slide-top-ad +##.js-sticky-ad +##.js-stream-ad +##.js-toggle-ad +##.jsAdSlot +##.js_adContainer +##.js_ad_wrapper +##.jsx-adcontainer +##.jw-ad +##.jw-ad-block +##.jw-ad-label +##.jw-ad-media-container +##.jw-ad-visible +##.kakao_ad_area +##.keen_ad +##.kiwi-ad-wrapper-300x250 +##.kiwi-ad-wrapper-728x90 +##.kiwi-ad-wrapper-950x80 +##.kumpulads-post +##.kumpulads-side +##.kwizly-psb-ad +##.l-ad +##.l-ad-top +##.l-ads +##.l-adsense +##.l-article__ad +##.l-bottom-ads +##.l-grid--ad-card +##.l-header-advertising +##.l1-ads-wrapper +##.label-ad +##.labelads +##.large-advert +##.largeAd +##.largeRectangleAd +##.largeUnitAd +##.large_ad +##.lastads +##.latest-ad +##.layout-ad +##.layout_h-ad +##.lazy-ad +##.lazy-ad-unit +##.lazy-adv +##.lazyad +##.lazyadsense +##.lazyadslot +##.lazyload-ad +##.lazyload_ad +##.lazyload_ad_article +##.lb-ad +##.lb-adhesion-unit +##.lb-advert-container +##.lb-item-ad +##.ld-ad +##.ld-ad-inner +##.ldm_ad +##.lead-ad +##.lead-ads +##.leader-ad +##.leader-ad-728 +##.leaderAd +##.leaderAdTop +##.leaderAdvert +##.leaderBoardAdWrapper +##.leaderBoardAdvert +##.leader_ad +##.leaderad +##.leaderboard-ad +##.leaderboard-ad-component +##.leaderboard-ad-container +##.leaderboard-ad-fixed +##.leaderboard-ad-main +##.leaderboard-ad-module +##.leaderboard-ad-pane +##.leaderboard-ad-placeholder +##.leaderboard-ad-unit +##.leaderboard-ad-wrapper +##.leaderboard-adblock +##.leaderboard-ads +##.leaderboard-ads-text +##.leaderboard-advert +##.leaderboard-advertisement +##.leaderboard-main-ad +##.leaderboard-top-ad +##.leaderboard-top-ad-wrapper +##.leaderboard.advert +##.leaderboard1AdWrapper +##.leaderboardAd +##.leaderboardAdWrapper +##.leaderboard_ad_container +##.leaderboard_ad_unit +##.leaderboard_ads +##.leaderboard_adsense +##.leaderboard_adv +##.leaderboard_banner_ad +##.leaderboardad +##.leaderboardadmiddle +##.leaderboardadtop +##.leaderboardadwrap +##.lee-track-ilad +##.left-ad +##.left-ads +##.left-advert +##.left-rail-ad +##.left-sponser-ad +##.leftAd +##.leftAdColumn +##.leftAdContainer +##.leftAds +##.leftAdsEnabled +##.leftAdvert +##.leftCol_advert +##.leftColumnAd +##.left_300_ad +##.left_ad +##.left_ad_160 +##.left_ad_areas +##.left_ad_box +##.left_ad_container +##.left_add_block +##.left_adlink +##.left_ads +##.left_adsense +##.left_advertisement_block +##.left_col_ad +##.left_google_add +##.leftad +##.leftadd +##.leftadtag +##.leftbar_ad2 +##.leftbarads +##.leftbottomads +##.leftnavad +##.leftrighttopad +##.leftsidebar_ad +##.lefttopad1 +##.legacy-ads +##.lft_advt_container +##.lg-ads-160x90 +##.lg-ads-311x500 +##.lg-ads-635x100 +##.lg-ads-skin-container +##.ligatus +##.lightad +##.lijit-ad +##.linead +##.linkAD +##.linkAds +##.link_ad +##.linkads +##.list-ad +##.list-adbox +##.list-ads +##.list-feature-ad +##.list-footer-ad +##.listad +##.listicle-instream-ad-holder +##.listing-item-ad +##.listingAd +##.listings_ad +##.lite-page-ad +##.live-ad +##.lng-ad +##.local-ads +##.localad +##.location-ad +##.log_ads +##.logo-ad +##.logoAds +##.logoad +##.logoutAd +##.logoutAdContainer +##.long-ads +##.longAd +##.longAdBox +##.longAds +##.long_ad +##.longform-ad +##.loop-ad +##.lower-ad +##.lower-ads +##.lowerAd +##.lowerAds +##.lower_ad +##.lrec-container +##.lst_ads +##.m-ContentAd +##.m-ad +##.m-ad-brick +##.m-ad-region +##.m-ad-unit +##.m-ad__wrapper +##.m-advert +##.m-advertisement +##.m-advertisement--container +##.m-balloon-header--ad +##.m-block-ad +##.m-content-advert +##.m-content-advert-wrap +##.m-dfp-ad-text +##.m-header-ad +##.m-in-content-ad +##.m-in-content-ad-row +##.m-jac-ad +##.m-sponsored +##.m1-ads-placeholder +##.m1-header-ad +##.m_ad +##.m_ad1 +##.m_ad300 +##.m_banner_ads +##.macAd +##.macad +##.mad_adcontainer +##.magAd +##.magad +##.mai-ad-unit-container +##.mai-ad-video +##.main-ad +##.main-ad-container +##.main-ad-gallery +##.main-add-sec +##.main-ads +##.main-advert +##.main-advertising +##.main-column-ad +##.main-footer-ad +##.main-header-ad +##.main-header__ad-wrapper +##.main-right-ads +##.mainAd +##.mainAdContainer +##.mainAds +##.mainLeftAd +##.mainLinkAd +##.mainRightAd +##.main_ad +##.main_adbox +##.main_ads +##.main_adv +##.mantis-ad +##.mantisadd +##.manual-ad +##.map-ad +##.mar-block-ad +##.mar-leaderboard--bottom +##.margin-advertisement +##.margin0-ads +##.marginalContentAdvertAddition +##.marketing-ad +##.marketplace-ad +##.marketplaceAd +##.marquee-ad +##.masonry-tile-ad +##.masonry__ad +##.master_post_advert +##.masthead-ad +##.masthead-ads +##.mastheadAds +##.masthead__ad +##.match-ad +##.mc_floating_ad +##.mc_text_ads_box +##.md-advertisement +##.medRect +##.mediaAd +##.mediaAdContainer +##.medium-rectangle-ad +##.medium-top-ad +##.mediumRectAdWrapper +##.mediumRectagleAd +##.mediumRectangleAd +##.mediumRectangleAdvert +##.medium_ad +##.mediumad +##.medrec-ad +##.medrect-ad +##.medrect-ad2 +##.medrectAd +##.medrect_ad +##.mega-ad +##.member-ads +##.menu-ad +##.menuAd +##.message_ads +##.meta-ad +##.meta_ad +##.metabet-sponsored +##.meteored-ads +##.mf-adsense-leaderboard +##.mf-adsense-rightrail +##.mg_box_ads +##.mgid-wrapper +##.mgid_3x2 +##.mid-ad-wrapper +##.mid-ads +##.mid-advert +##.mid-article-banner-ad +##.mid-post-ad +##.mid-section-ad +##.midAd +##.midAdv-cont +##.midAdv-cont2 +##.midAdvert +##.mid_ad +##.mid_banner_ad +##.midad +##.midarticlead +##.middle-ad +##.middle-ads +##.middle-ads728 +##.middle-footer-ad +##.middleAd +##.middleAdLeft +##.middleAdMid +##.middleAdRight +##.middleAdWrapper +##.middleAds +##.middleBannerAd +##.middle_AD +##.middle_ad +##.middle_ad_responsive +##.middle_ads +##.middlead +##.middleadouter +##.midpost-ad +##.min-height-ad +##.min_navi_ad +##.mini-ad +##.mini-ads +##.mini_ads +##.miniad +##.miniads +##.misc-ad +##.misc-ad-label +##.miscAd +##.mj-floating-ad-wrapper +##.mks_ads_widget +##.mm-ad-sponsored +##.mm-ads-adhesive-ad +##.mm-ads-gpt-adunit +##.mm-ads-leaderboard-header +##.mm-ads-leaderboard-spacer +##.mmads +##.mntl-gpt-adunit +##.mntl-sc-block-adslot +##.moads-top-banner +##.moads-widget +##.mob-ad-break-text +##.mob-adspace +##.mob-hero-banner-ad-wrap +##.mob_ads +##.mobads +##.mobile-ad +##.mobile-ad-container +##.mobile-ad-negative-space +##.mobile-ad-placeholder +##.mobile-ad-slider +##.mobile-ads +##.mobile-fixed-ad +##.mobile-instream-ad-holder +##.mobile-instream-ad-holder-single +##.mobileAd +##.mobileAdWrap +##.mobileAds +##.mobileAppAd +##.mobile_ad_banner +##.mobile_ad_container +##.mobile_featuredad +##.mobile_leaderboard_ad +##.mobileadbig +##.mobileadunit +##.mobilesideadverts +##.mod-ad +##.mod-adblock +##.mod-ads +##.mod-google-ads +##.mod-horizontal-ad +##.mod-sponsored-links +##.mod-vertical-ad +##.mod_ad +##.mod_ad_container +##.mod_ad_text +##.mod_ad_top +##.mod_admodule +##.mod_ads +##.mod_advert +##.mod_index_ad +##.mod_js_ad +##.mod_openads +##.mod_r_ad +##.mod_r_ad1 +##.modal-ad +##.module--ad +##.module-ad +##.module-ad-small +##.module-ads +##.module-advert +##.module-advertisement +##.module-box-ads +##.module-image-ad +##.module-rectangleads +##.module-sponsored-ads +##.moduleAd +##.moduleAdSpot +##.moduleAdvert +##.moduleAdvertContent +##.moduleBannerAd +##.module__ad-wide +##.module_ad +##.module_box_ad +##.module_home_ads +##.module_single_ads +##.modulegad +##.moduletable-advert +##.moduletable_advertisement +##.moduletableadvert +##.moduletablesquaread +##.moduletabletowerad +##.mos-ad +##.movable-ad +##.movv-ad +##.mp-ad +##.mpsponsor +##.mpu-ad +##.mpu-ad-con +##.mpu-ad-river +##.mpu-ad-top +##.mpu-advert +##.mpu-c +##.mpu-footer +##.mpu-fp +##.mpu-holder +##.mpu-leaderboard +##.mpu-left +##.mpu-left-bk +##.mpu-mediatv +##.mpu-right +##.mpu-title +##.mpu-top-left +##.mpu-top-left-banner +##.mpu-top-right +##.mpu-unit +##.mpu-wrap +##.mpu-wrapper +##.mpuAd +##.mpuAdArea +##.mpuAdSlot +##.mpuAdvert +##.mpuArea +##.mpuBlock +##.mpuBox +##.mpuContainer +##.mpu_Ad +##.mpu_ad +##.mpu_advert +##.mpu_container +##.mpu_holder +##.mpu_placeholder +##.mpu_side +##.mpu_wrapper +##.mpuad +##.mpuads +##.mrec-ads +##.mrec-banners +##.mrecAds +##.mrec_advert +##.mrf-adv +##.mrf-adv__wrapper +##.msg-ad +##.msgad +##.mt-ad-container +##.mt_ad +##.mt_ads +##.mtop_adfit +##.mu-ad-container +##.mv_atf_ad_holder +##.mvp-ad-label +##.mvp-feat1-list-ad +##.mvp-flex-ad +##.mvp-post-ad-wrap +##.mvp-widget-ad +##.mvp-widget-feat2-side-ad +##.mvp_ad_widget +##.mw-ad +##.my-ads +##.myAds +##.myAdsGroup +##.my__container__ad +##.n1ad-center-300 +##.narrow_ad_unit +##.narrow_ads +##.national_ad +##.nationalad +##.native-ad +##.native-ad-article +##.native-ad-container +##.native-ad-item +##.native-ad-mode +##.native-ad-slot +##.native-adv +##.native-advts +##.native-leaderboard-ad +##.native-sidebar-ad +##.native.ad +##.nativeAd +##.native_ad +##.native_ad_inline +##.native_ad_wrap +##.native_ads +##.nativead +##.nav-ad +##.nav-ad-gpt-container +##.nav-ad-plus-leader +##.nav-adWrapper +##.nav_ad +##.navbar-ad-section +##.navbar-ads +##.navbar-header-ad +##.naviad +##.ndmadkit +##.netPost_ad1 +##.netPost_ad3 +##.netads +##.netshelter-ad +##.newHeaderAd +##.new_ad1 +##.new_ad_left +##.new_ad_normal +##.new_ad_wrapper_all +##.new_ads_unit +##.newad +##.newad1 +##.news-ad +##.news-ad-square-a +##.news-ad-square-box +##.news-ads-top +##.news-item--ad +##.news_ad_box +##.news_vibrant_ads_banner +##.newsad +##.newsblock-ads +##.newsfeed_adunit +##.nfy-ad +##.nfy-ad-teaser +##.nfy-ad-tile +##.nfy-ad-wrapper +##.nfy-cobo-ad +##.nfy-col-ad +##.ng-ad-banner +##.ng-ad-insert +##.nm-ad +##.nn_mobile_mpu_wrapper +##.node-ad +##.node_ad_wrapper +##.normalAds +##.normal_ads +##.normalad +##.northad +##.not-an-ad-header +##.note-advertisement +##.np-ad +##.np-ad-background +##.np-ad-border +##.np-ads-wrapper +##.np-adv-container +##.np-advert_apu +##.np-advert_apu-double +##.np-advert_info +##.np-header-ad +##.np-header-ads-area +##.np-right-ad +##.nrAds +##.nsAdRow +##.nts-ad +##.ntv-ad +##.nuffnangad +##.nuk-ad-placeholder +##.nv-ads-wrapper +##.nw-ad +##.nw-ad-label +##.nw-c-leaderboard-ad +##.nw-top-ad +##.nw_adv_square +##.nx-billboard-ad +##.nx-placeholder-ad +##.o-ad +##.o-ad-banner-top +##.o-ad-container +##.o-advert +##.o-listing__ad +##.o-site-header__advert +##.oad-ad +##.oas-ad +##.oas-container +##.oas-leaderboard-ads +##.oas_ad +##.oas_add +##.oas_advertisement +##.oasad +##.oasads +##.ob_ads_header +##.ob_container .item-container-obpd +##.ob_dual_right > .ob_ads_header ~ .odb_div +##.offads +##.oi-add-block +##.oi-header-ad +##.oio-banner-zone +##.oio-link-sidebar +##.oio-openslots +##.oio-zone-position +##.oko-adhesion +##.on_player_ads +##.oneColumnAd +##.onet-ad +##.online-ad-container +##.opd_adsticky +##.otd-ad-top +##.outer-ad-container +##.outer-ad-unit-wrapper +##.outerAdWrapper +##.outerAds +##.outer_ad_container +##.outside_ad +##.outsider-ad +##.ov-ad-slot +##.overflow-ad +##.overlay-ad +##.overlay-ad-container +##.overlay-ads +##.overlay-box-ad +##.overlay_ad +##.p-ad +##.p-ad-block +##.p-ad-dfp-banner +##.p-ad-dfp-middle-rec +##.p-ad-feature-pr +##.p-ad-outbreak +##.p-ad-rectangle +##.p-ad-thumbnail-txt +##.p-ads-billboard +##.p-ads-rec +##.p-post-ad:not(html):not(body) +##.p75_sidebar_ads +##.p_adv +##.p_topad +##.package_adBox +##.padAdvx +##.padvertlabel +##.page-ad +##.page-ads +##.page-advert +##.page-advertisement +##.page-bottom-fixed-ads +##.page-box-ad +##.page-break-ad +##.page-footer-ad +##.page-header-ad +##.page-header_ad +##.page-top-ads +##.pageAd +##.pageAdSkin +##.pageAdSkinUrl +##.pageAds +##.pageFooterAd +##.pageGoogleAd +##.pageGoogleAds +##.pageHeaderAd +##.pageHeaderAds +##.pageTopAd +##.page__top-ad-wrapper +##.page_ad +##.pagead +##.pagepusheradATF +##.pages__ad +##.pane-ad-pane +##.pane-ads +##.pane-sasia-ad +##.pane-site-ads +##.pane-sponsored-links +##.pane_ad_wide +##.panel-ad +##.panel-adsense +##.panel-advert +##.panel.ad +##.panel_ad +##.paneladvert +##.par-ad +##.par-adv-slot +##.parade-ad-container +##.parent-ad-desktop +##.partial-ad +##.partner-ad +##.partner-ad-module-wrapper +##.partner-ads-list +##.partnerAd +##.partner_ads +##.partnerad_container +##.partnersTextLinks +##.pauseAdPlacement +##.pb-slot-container +##.pc-ad +##.pcads_widget +##.pd-ads-mpu +##.pdpads +##.penci-ad-box +##.penci-ad-image +##.penci-ad_box +##.penci-adsense-below-slider +##.penci-google-adsense +##.penci-google-adsense-1 +##.penci-promo-link +##.penci_list_bannner_widget +##.pencil-ad +##.pencil-ad-container +##.pencil-ad-section +##.pencil_ad +##.perm_ad +##.pf_content_ad +##.pf_sky_ad +##.pf_top_ad +##.pg-ad-block +##.pg-adnotice +##.pg-adtarget +##.pgevoke-fp-bodyad2 +##.pgevoke-story-rightrail-ad1 +##.pgevoke-story-topads +##.pgevoke-topads +##.ph-ad +##.photo-ad +##.photo-ad-pad +##.photoAd +##.photoad +##.phpads_container +##.phpbb-ads-center +##.pix_adzone +##.placeholder-ad +##.placeholder-dfp +##.placeholderAd +##.plain-ad +##.plainAd +##.player-ad +##.player-ad-overlay +##.player-ads +##.player-ads2 +##.player-under-ad +##.playerAd +##.playerAdv +##.player_ad +##.player_ad2 +##.player_ad_box +##.playerad +##.playerdads +##.plugin-ad +##.plugin-ad-container +##.pm-ad +##.pm-ad-unit +##.pm-ad-zone +##.pm-ads-banner +##.pm-ads-inplayer +##.pm-banner-ad +##.pmc-adm-boomerang-pub-div +##.poki-ad-slot +##.polar-ad +##.polaris-ad--wrapper-desktop +##.polarisMarketing +##.polaris__ad +##.polaris__below-header-ad-wrapper +##.position-ads +##.post-ad +##.post-ad-title +##.post-ad-top +##.post-ad-type +##.post-ads +##.post-ads-top +##.post-adsense-bottom +##.post-advert +##.post-advert-row +##.post-advertisement +##.post-load-ad +##.post-news-ad +##.post-sidebar-ad +##.post-sponsored +##.postAd +##.postWideAd +##.post_ad +##.post_ads +##.post_advert +##.post_detail_right_advert +##.post_sponsored +##.postad +##.postads +##.postbit-ad +##.poster_ad +##.posts-ad +##.pp-ad-container +##.pp_ad_code_adtxt +##.ppb_ads +##.pr_adslot_0 +##.pr_adslot_1 +##.preheader_advert +##.premium-ad +##.premium-ads +##.premium-adv +##.premium-mpu-container +##.priad +##.priad-1 +##.primary-ad +##.primary-ad-widget +##.primary-advertisment +##.primis-player-container +##.primis-video +##.primis-wrapper +##.print-ad-wrapper +##.print-adslot +##.printAds +##.product-ad +##.product-ads +##.product-inlist-ad +##.profile-ad-container +##.profile-ads-container +##.profile__ad-wrapper +##.profile_ad_bottom +##.profile_ad_top +##.promo-mpu +##.promoAd +##.promoAds +##.promoAdvertising +##.promo_ad +##.promo_ads +##.promoad +##.promoboxAd +##.promotionAdContainer +##.promotionTextAd +##.proper-ad-insert +##.proper-ad-unit +##.ps-ad +##.pt-ad--container +##.pt-ad--scroll +##.pt_ad03 +##.pt_col_ad02 +##.pub_ads +##.publication-ad +##.publicidad_horizontal +##.publicidade +##.publisher_ad +##.pubtech-adv-slot +##.puff-ad +##.puff-advertorials +##.pull-ad +##.pull_top_ad +##.pullad +##.purchad +##.push--ad +##.push-ad +##.push-adv +##.pushDownAd +##.pushdown-ad +##.pushdownAd +##.pwa-ad +##.pz-ad-box +##.quads-ad-label +##.quads-bg-ad +##.quads-location +##.queue_ad +##.queued-ad +##.quigo +##.quigo-ad +##.quigoads +##.r-ad +##.r-pause-ad-container +##.r89-outstream-video +##.r_ad +##.r_ads +##.rail-ad +##.rail-ads-1 +##.rail-article-sponsored +##.rail__ad +##.rail_ad +##.railad +##.railadspace +##.rc-sponsored +##.rcom-freestar-ads-widget +##.rec_ad +##.recent-ad +##.recentAds +##.recent_ad_holder +##.recipeFeatureAd +##.rect-ad +##.rect-ad-1 +##.rectAd300 +##.rect_ad +##.rect_ad_module +##.rect_advert +##.rectad +##.rectadv +##.rectangle-ad +##.rectangle-ad-container +##.rectangle-embed-ad +##.rectangleAd +##.rectangleAdContainer +##.rectangle_ad +##.rectanglead +##.rectangleads +##.refreshAds +##.region-ad-bottom-leaderboard +##.region-ad-pan +##.region-ad-right +##.region-ad-top +##.region-ads +##.region-ads-content-top +##.region-banner-ad +##.region-dfp-ad-footer +##.region-dfp-ad-header +##.region-header-ad +##.region-header-ads +##.region-top-ad +##.region-top-ad-block +##.regular-ads +##.regularad +##.rekl-left +##.rekl-right +##.rekl-top +##.rekl_left +##.rekl_right +##.rekl_top +##.rekl_top_wrapper +##.reklam +##.reklam-block +##.reklam-kare +##.reklam-masthead +##.reklam2 +##.reklam728 +##.reklama +##.reklama-vert +##.reklama1 +##.reklame-wrapper +##.reklamka +##.related-ad +##.related-ads +##.relatedAds +##.related_ad +##.remnant_ad +##.remove-ads +##.remove-ads-link +##.res_ad +##.resads-adspot +##.responsive-ad +##.responsive-ad-header-container +##.responsive-ad-wrapper +##.responsive-ads +##.responsiveAdsense +##.responsive_ad_top +##.responsive_ads_468x60 +##.result-ad +##.result-sponsored +##.resultAd +##.result_ad +##.resultad +##.results-ads +##.revcontent-wrap +##.review-ad +##.reviews-display-ad +##.revive-ad +##.rh-ad +##.rhads +##.rhs-ad +##.rhs-ads-panel +##.rhs-advert-container +##.rhs-mrec-wrapper +##.rhs_ad +##.rhs_ad_title +##.rhs_ads +##.rhsad +##.rhsadvert +##.right-ad +##.right-ad-1 +##.right-ad-2 +##.right-ad-3 +##.right-ad-4 +##.right-ad-5 +##.right-ad-block +##.right-ad-container +##.right-ad-holder +##.right-ad-wrapper +##.right-ad2 +##.right-ad350px250px +##.right-ads +##.right-ads2 +##.right-adsense +##.right-adv +##.right-advert +##.right-advertisement +##.right-col-ad +##.right-column-ad +##.right-column-ads +##.right-rail-ad +##.right-rail-ad-container +##.right-rail-box-ad-container +##.right-side-ad +##.right-side-ads +##.right-sidebar-box-ad +##.right-sidebar-box-ads +##.right-sponser-ad +##.right-top-ad +##.right-video-dvertisement +##.rightAD +##.rightAd +##.rightAd1 +##.rightAd2 +##.rightAdBlock +##.rightAdBox +##.rightAdColumn +##.rightAdContainer +##.rightAds +##.rightAdsFix +##.rightAdvert +##.rightAdverts +##.rightBoxAd +##.rightBoxMidAds +##.rightColAd +##.rightColAdBox +##.rightColumnAd +##.rightColumnAdd +##.rightColumnAdsTop +##.rightColumnRectAd +##.rightHeaderAd +##.rightRailAd +##.rightRailMiddleAd +##.rightSecAds +##.rightSideBarAd +##.rightSideSponsor +##.rightTopAdWrapper +##.right_ad +##.right_ad_1 +##.right_ad_2 +##.right_ad_box +##.right_ad_box1 +##.right_ad_text +##.right_ad_top +##.right_ad_unit +##.right_ad_wrap +##.right_ads +##.right_ads_column +##.right_adsense_box_2 +##.right_adskin +##.right_adv +##.right_advert +##.right_advertise_cnt +##.right_advertisement +##.right_block_advert +##.right_box_ad +##.right_col_ad +##.right_column_ads +##.right_content_ad +##.right_image_ad +##.right_long_ad +##.right_outside_ads +##.right_side_ads +##.right_side_box_ad +##.right_sponsor_main +##.rightad +##.rightadHeightBottom +##.rightadblock +##.rightadd +##.rightads +##.rightadunit +##.rightadv +##.rightboxads +##.rightcolads +##.rightcoladvert +##.rightrail-ad-placed +##.rightsideAd +##.river-item-sponsored +##.rj-ads-wrapper +##.rm-adslot +##.rolloverad +##.roof-ad +##.root-ad-anchor +##.rotating-ad +##.rotating-ads +##.row-ad +##.row-ad-leaderboard +##.rowAd +##.rowAds +##.row_header_ads +##.rpd_ads +##.rr-ad +##.rr_ads +##.rs-ad +##.rs-advert +##.rs-advert__container +##.rs_ad_block +##.rs_ad_top +##.rt_ad +##.s-ad +##.s-ads +##.s_ads +##.sadvert +##.sagreklam +##.sal-adv-gpt +##.sam_ad +##.sb-ad +##.sb-ads +##.sbAd +##.sbAdUnitContainer +##.sbTopadWrapper +##.sb_ad +##.sb_ad_holder +##.sc-ad +##.scad +##.script-ad +##.scroll-ad-item-container +##.scroll-ads +##.scroll-track-ad +##.scrolling-ads +##.sda_adbox +##.sdc-advert__top-1 +##.se-ligatus +##.search-ad +##.search-advertisement +##.search-result-list-item--sidebar-ad +##.search-result-list-item--topad +##.search-results-ad +##.search-sponsor +##.search-sponsored +##.searchAd +##.searchAdTop +##.searchAds +##.searchad +##.searchads +##.secondary-ad-widget +##.secondary-advertisment +##.secondary_ad +##.section-ad +##.section-ad-unit +##.section-ad-wrapper +##.section-ad2 +##.section-ads +##.section-adtag +##.section-adv +##.section-advertisement +##.section-sponsor +##.section-widget-ad +##.section_ad +##.section_ad_left +##.section_ads +##.seoAdWrapper +##.servedAdlabel +##.serviceAd +##.sf_ad_box +##.sg-adblock +##.sgAd +##.sh-section-ad +##.shadvertisment +##.sheknows-infuse-ad +##.shift-ad +##.shortadvertisement +##.show-desk-ad +##.show-sticky-ad +##.showAd +##.showAdContainer +##.showads +##.showcaseAd +##.showcasead +##.shr-ads-container +##.sidbaread +##.side-ad +##.side-ad-300 +##.side-ad-blocks +##.side-ad-container +##.side-ad-inner +##.side-ad-top +##.side-ads +##.side-ads-block +##.side-ads-wide +##.side-adv-block +##.side-adv-text +##.side-advert +##.side-advertising +##.side-adverts +##.side-bar-ad +##.sideAd +##.sideAdLeft +##.sideAdWide +##.sideBarAd +##.sideBlockAd +##.sideBoxAd +##.side__ad +##.side__ad-box +##.side_ad +##.side_ad2 +##.side_ad_top +##.side_add_wrap +##.side_ads +##.side_adsense +##.side_adv +##.side_col_ad_wrap +##.sidead +##.sideadmid +##.sideads +##.sideads_l +##.sideadsbox +##.sideadtable +##.sideadvert +##.sideadverts +##.sidebar-ad-area +##.sidebar-ad-b +##.sidebar-ad-box +##.sidebar-ad-c +##.sidebar-ad-component +##.sidebar-ad-cont +##.sidebar-ad-container +##.sidebar-ad-div +##.sidebar-ad-label +##.sidebar-ad-rect +##.sidebar-ad-slot +##.sidebar-ad-top +##.sidebar-ad-wrapper +##.sidebar-adbox +##.sidebar-ads +##.sidebar-ads-block +##.sidebar-ads-wrap +##.sidebar-adsdiv +##.sidebar-adv-container +##.sidebar-advert +##.sidebar-advertisement +##.sidebar-advertisment +##.sidebar-adverts +##.sidebar-adverts-header +##.sidebar-banner-ad +##.sidebar-below-ad-unit +##.sidebar-big-ad +##.sidebar-big-box-ad +##.sidebar-bottom-ad +##.sidebar-box-ad +##.sidebar-box-ads +##.sidebar-content-ad +##.sidebar-header-ads +##.sidebar-skyscraper-ad +##.sidebar-sponsored +##.sidebar-sponsors +##.sidebar-square-ad +##.sidebar-sticky--ad +##.sidebar-text-ad +##.sidebar-top-ad +##.sidebar-tower-ad +##.sidebarAD +##.sidebarAd +##.sidebarAdvert +##.sidebar__ad +##.sidebar_ad +##.sidebar_ad_300 +##.sidebar_ad_300_250 +##.sidebar_ad_container +##.sidebar_ad_holder +##.sidebar_ad_leaderboard +##.sidebar_ad_module +##.sidebar_ads +##.sidebar_ads_left +##.sidebar_ads_right +##.sidebar_ads_title +##.sidebar_adsense +##.sidebar_advert +##.sidebar_advertising +##.sidebar_box_ad +##.sidebar_right_ad +##.sidebar_skyscraper_ad +##.sidebar_sponsors +##.sidebarad +##.sidebarad_bottom +##.sidebaradbox +##.sidebaradcontent +##.sidebarads +##.sidebaradsense +##.sidebarbox__advertising +##.sidebarboxad +##.sidebox-ad +##.sidebox_ad +##.sideright_ads +##.sideskyad +##.signad +##.simple-ad-placeholder +##.simple_ads_manager_widget +##.simple_adsense_widget +##.simplead-container +##.simpleads-item +##.single-ad +##.single-ad-anchor +##.single-ad-wrap +##.single-ads +##.single-ads-section +##.single-bottom-ads +##.single-mpu +##.single-post-ad +##.single-post-ads +##.single-post-bottom-ads +##.single-top-ad +##.singleAd +##.singleAdBox +##.singleAdsContainer +##.singlePostAd +##.single_ad +##.single_ad_300x250 +##.single_advert +##.single_bottom_ad +##.single_top_ad +##.singlead +##.singleads +##.singleadstopcstm2 +##.singlepageleftad +##.singlepostad +##.singlepostadsense +##.singpagead +##.sister-ads +##.site-ad-block +##.site-ads +##.site-bottom-ad-slot +##.site-head-ads +##.site-header-ad +##.site-header__ads +##.site-top-ad +##.siteWideAd +##.site_ad +##.site_ad--gray +##.site_ad--label +##.site_ads +##.site_sponsers +##.sitesponsor +##.skinAd +##.sky-ad +##.sky-ad1 +##.skyAd +##.skyAdd +##.skyAdvert +##.skyAdvert2 +##.sky_ad +##.sky_ad_top +##.skyad +##.skyscraper-ad +##.skyscraper-ad-1 +##.skyscraper-ad-container +##.skyscraper.ad +##.skyscraperAd +##.skyscraper_ad +##.skyscrapper-ads-container +##.slate-ad +##.slide-ad +##.slideAd +##.slide_ad +##.slidead +##.slider-ads +##.slider-item-ad +##.sliderad +##.slideshow-ad +##.slideshow-ad-container +##.slideshow-ad-wrapper +##.slideshow-ads +##.slideshowAd +##.slideshowadvert +##.sm-ad +##.sm-admgnr-unit +##.sm-ads +##.sm-advertisement +##.sm-widget-ad-holder +##.sm_ad +##.small-ad +##.small-ad-header +##.small-ad-long +##.small-ads +##.smallAd +##.smallAdContainer +##.smallAds +##.smallAdvertisments +##.small_ad +##.small_ad_bg +##.small_ads +##.smallad +##.smalladblock +##.smallads +##.smalladscontainer +##.smallsponsorad +##.smart-ad +##.smartAd +##.smartad +##.smn-new-gpt-ad +##.snippet-ad +##.speakol-widget +##.spinAdvert +##.splashy-ad-container +##.spon_link +##.sponadbox +##.sponlinkbox +##.spons-link +##.spons-wrap +##.sponsBox +##.sponsLinks +##.sponsWrap +##.sponsbox +##.sponser-link +##.sponserLink +##.sponslink +##.sponsor-ads +##.sponsor-area +##.sponsor-block +##.sponsor-bottom +##.sponsor-box +##.sponsor-btns +##.sponsor-inner +##.sponsor-left +##.sponsor-link +##.sponsor-links +##.sponsor-popup +##.sponsor-post +##.sponsor-right +##.sponsor-spot +##.sponsor-text +##.sponsor-text-container +##.sponsor-wrap +##.sponsorAd +##.sponsorArea +##.sponsorBlock +##.sponsorBottom +##.sponsorBox +##.sponsorFooter +##.sponsorFooter-container +##.sponsorLabel +##.sponsorLink +##.sponsorLinks +##.sponsorPanel +##.sponsorPost +##.sponsorPostWrap +##.sponsorStrip +##.sponsorText +##.sponsorTitle +##.sponsorTxt +##.sponsor_ad +##.sponsor_ad1 +##.sponsor_ad2 +##.sponsor_ad_area +##.sponsor_ad_section +##.sponsor_area +##.sponsor_bar +##.sponsor_block +##.sponsor_columns +##.sponsor_div +##.sponsor_footer +##.sponsor_image +##.sponsor_label +##.sponsor_line +##.sponsor_links +##.sponsor_placement +##.sponsor_popup +##.sponsor_post +##.sponsor_units +##.sponsorad +##.sponsoradlabel +##.sponsorads +##.sponsoradtitle +##.sponsored-ad +##.sponsored-ad-container +##.sponsored-ad-label +##.sponsored-add +##.sponsored-ads +##.sponsored-article-item +##.sponsored-article-widget +##.sponsored-block +##.sponsored-buttons +##.sponsored-card.recirc-feed +##.sponsored-container +##.sponsored-container-bottom +##.sponsored-default +##.sponsored-display-ad +##.sponsored-header +##.sponsored-link +##.sponsored-links +##.sponsored-post +##.sponsored-post-container +##.sponsored-result +##.sponsored-results +##.sponsored-right +##.sponsored-slot +##.sponsored-tag +##.sponsored-text +##.sponsored-top +##.sponsored-widget +##.sponsoredAd +##.sponsoredAds +##.sponsoredBanners +##.sponsoredBar +##.sponsoredBottom +##.sponsoredBox +##.sponsoredContent +##.sponsoredEntry +##.sponsoredFeature +##.sponsoredInfo +##.sponsoredInner +##.sponsoredItem +##.sponsoredLabel +##.sponsoredLeft +##.sponsoredLink +##.sponsoredLinks +##.sponsoredLinks2 +##.sponsoredLinksBox +##.sponsoredListing +##.sponsoredProduct +##.sponsoredResults +##.sponsoredSearch +##.sponsoredTop +##.sponsored_ad +##.sponsored_ads +##.sponsored_bar_text +##.sponsored_box +##.sponsored_by +##.sponsored_link +##.sponsored_links +##.sponsored_links2 +##.sponsored_links_box +##.sponsored_links_container +##.sponsored_links_section +##.sponsored_post +##.sponsored_result +##.sponsored_results +##.sponsored_sidepanel +##.sponsored_ss +##.sponsored_text +##.sponsored_title +##.sponsored_well +##.sponsoredby +##.sponsoredlink +##.sponsoredlinks +##.sponsoredresults +##.sponsorheader +##.sponsoringbanner +##.sponsorlink +##.sponsorlink2 +##.sponsormsg +##.sponsors-advertisment +##.sponsors-box +##.sponsors-footer +##.sponsors-module +##.sponsors-widget +##.sponsorsBanners +##.sponsors_links +##.sponsors_spacer +##.sponsorsbanner +##.sponsorsbig +##.sponsorship-box +##.sponsorship-container +##.sponsorship-leaderboard +##.sponsorship_ad +##.sponsorwrapper +##.sponstop +##.spot-ad +##.spotlight-ad +##.spotlightAd +##.spt-footer-ad +##.sq_ad +##.sqrd-ad-manager +##.square-ad +##.square-ad-1 +##.square-ad-container +##.square-ad-pane +##.square-ads +##.square-advt +##.square-adwrap +##.square-sidebar-ad +##.square-sponsorship +##.squareAd +##.squareAdWrap +##.squareAdd +##.squareAds +##.square_ad +##.squaread +##.squareads +##.squared_ad +##.sr-adsense +##.sr-advert +##.sraAdvert +##.srp-sidebar-ads +##.ssp-advert +##.standalonead +##.standard-ad-container +##.standard_ad_slot +##.static-ad +##.staticAd +##.static_mpu_wrap +##.staticad +##.sterra-ad +##.stick-ad-container +##.stickad +##.sticky-ad +##.sticky-ad-bottom +##.sticky-ad-container +##.sticky-ad-footer +##.sticky-ad-header +##.sticky-ad-wrapper +##.sticky-ads +##.sticky-ads-container +##.sticky-ads-content +##.sticky-adsense +##.sticky-advert-widget +##.sticky-bottom-ad +##.sticky-footer-ad +##.sticky-footer-ad-container +##.sticky-navbar-ad-container +##.sticky-rail-ad-container +##.sticky-side-ad +##.sticky-sidebar-ad +##.sticky-top-ad-wrap +##.stickyAd +##.stickyAdWrapper +##.stickyAdsGroup +##.stickyContainerMpu +##.stickyRailAd +##.sticky_ad_sidebar +##.sticky_ad_wrapper +##.sticky_ads +##.stickyad +##.stickyads +##.stickyadv +##.stm-ad-player +##.stock_ad +##.store-ads +##.story-ad +##.story-ad-container +##.story-ad-right +##.story-inline-advert +##.storyAd +##.storyAdvert +##.storyad +##.storyad300 +##.stoybday-ad +##.str-top-ad +##.strack_bnr +##.strack_cli +##.strawberry-ads +##.stream-ad +##.streamAd +##.strip-ad +##.stripad +##.sub-ad +##.subAdBannerArea +##.subAdBannerHeader +##.subNavAd +##.subad +##.subheader_adsense +##.submenu_ad +##.subnav-ad-layout +##.subnav-ad-wrapper +##.subscribeAd +##.subscriber-ad +##.subscribox-ad +##.sudoku-ad +##.sugarad +##.super-ad +##.superbanner-adcontent +##.tabAd +##.tabAds +##.tab_ad +##.tab_ad_area +##.table-ad +##.tableAd1 +##.tablet-ad +##.tadm_ad_unit +##.takeover-ad +##.tallAdvert +##.tallad +##.tappx-ad +##.tbboxad +##.tc-adbanner +##.tc_ad +##.tc_ad_unit +##.tcf-ad +##.td-a-ad +##.td-a-rec +##.td-ad +##.td-ad-m +##.td-ad-p +##.td-ad-tp +##.td-adspot-title +##.td-sponsor-title +##.tdAdHeader +##.td_ad +##.td_footer_ads +##.teaser-ad +##.teaser-advertisement +##.teaser-sponsor +##.teaserAd +##.teaserAdContainer +##.teaserAdHeadline +##.teaser_ad +##.templates_ad_placement +##.test-adsense +##.testAd-holder +##.text-ad-sitewide +##.text-ad-top +##.text-advertisement +##.text-panel-ad +##.text-sponsor +##.textAd3 +##.textAdBlock +##.textAdBox +##.textAds +##.textLinkAd +##.textSponsor +##.text_ad_title +##.text_ad_website +##.text_ads_2 +##.text_ads_wrapper +##.text_adv +##.textad +##.textadContainer +##.textadbox +##.textadlink +##.textadscontainer +##.textadsds +##.textadsfoot +##.textadtext +##.textlinkads +##.th-ad +##.theAdvert +##.theads +##.themonic-ad1 +##.themonic-ad2 +##.themonic-ad3 +##.themonic-ad6 +##.third-party-ad +##.thread-ad-align +##.thumb-ads +##.thumb_ad +##.thumbnailad +##.thumbs-adv +##.thumbs-adv-holder +##.tile--ad +##.tile-ad +##.tile-ad-container +##.tile-advert +##.tileAdContainer +##.tileAdWrap +##.tileAds +##.tile_AdBanner +##.tile_ad +##.tile_ad_container +##.title-ad +##.tl-ad-container +##.tmiads +##.tnt-ads +##.tnt-ads-container +##.tnt-dmp-reactive +##.toaster-ad +##.top-ad +##.top-ad-728 +##.top-ad-970x90 +##.top-ad-anchor +##.top-ad-area +##.top-ad-bloc +##.top-ad-block +##.top-ad-center +##.top-ad-container +##.top-ad-content +##.top-ad-desktop +##.top-ad-div +##.top-ad-horizontal +##.top-ad-inside +##.top-ad-module +##.top-ad-recirc +##.top-ad-right +##.top-ad-sidebar +##.top-ad-slot +##.top-ad-space +##.top-ad-sticky +##.top-ad-unit +##.top-ad-wrap +##.top-ad-wrapper +##.top-ad-zone +##.top-ad1 +##.top-adbox +##.top-ads +##.top-ads-amp +##.top-ads-block +##.top-ads-bottom-bar +##.top-ads-container +##.top-ads-mobile +##.top-ads-wrapper +##.top-adsense +##.top-adsense-banner +##.top-adspace +##.top-adv +##.top-adv-container +##.top-advert +##.top-advertisement +##.top-banner-468 +##.top-banner-ad +##.top-banner-ad-container +##.top-banner-ad-wrapper +##.top-banner-add +##.top-banner-ads +##.top-banner-advert +##.top-dfp-wrapper +##.top-fixed-ad +##.top-half-page-ad +##.top-header-ad +##.top-horiz-ad +##.top-horizontal-ad +##.top-item-ad +##.top-leaderboard-ad +##.top-left-ad +##.top-post-ad +##.top-post-ads +##.top-right-ad +##.top-side-advertisement +##.top-sidebar-ad +##.top-sidebar-adbox +##.top-site-ad +##.top-sponsored-header +##.top-story-ad +##.top-wide-ad-container +##.topAD +##.topAd +##.topAd728x90 +##.topAdBanner +##.topAdBar +##.topAdBlock +##.topAdCenter +##.topAdContainer +##.topAdLeft +##.topAdRight +##.topAdSpacer +##.topAdWrap +##.topAdWrapper +##.topAdd +##.topAds +##.topAdsArticle +##.topAdsWrappper +##.topAdvBox +##.topAdvert +##.topAdvertisement +##.topAdvertistemt +##.topAdverts +##.topAlertAds +##.topArtAd +##.topArticleAds +##.topBannerAd +##.topBarAd +##.topBoxAdvertisement +##.topLeaderboardAd +##.topRightAd +##.top_Ad +##.top__ad +##.top_ad +##.top_ad1 +##.top_ad_728 +##.top_ad_728_90 +##.top_ad_banner +##.top_ad_big +##.top_ad_disclaimer +##.top_ad_div +##.top_ad_holder +##.top_ad_inner +##.top_ad_label +##.top_ad_list +##.top_ad_long +##.top_ad_post +##.top_ad_responsive +##.top_ad_seperate +##.top_ad_short +##.top_ad_wrap +##.top_ad_wrapper +##.top_adbox1 +##.top_adbox2 +##.top_adh +##.top_ads +##.top_ads_container +##.top_adsense +##.top_adspace +##.top_adv +##.top_adv_content +##.top_advert +##.top_advertisement +##.top_bar_ad +##.top_big_ads +##.top_container_ad +##.top_corner_ad +##.top_head_ads +##.top_header_ad +##.top_header_ad_inner +##.top_right_ad +##.top_rightad +##.top_side_adv +##.top_sponsor +##.topad-area +##.topad-bar +##.topad-bg +##.topad1 +##.topad2 +##.topadbar +##.topadblock +##.topadbox +##.topadcont +##.topadrow +##.topads +##.topads-spacer +##.topadsbx +##.topadsection +##.topadspace +##.topadspot +##.topadtara +##.topadtxt +##.topadvert +##.topbannerAd +##.topbar-ad-parent +##.topbar-ad-unit +##.topboardads +##.topright_ad +##.topside_ad +##.topsidebarad +##.tout-ad +##.tout-ad-embed +##.tower-ad +##.tower-ad-abs +##.tower-ad-b +##.tower-ad-wrapper +##.tower-ads-container +##.towerAd +##.towerAdLeft +##.towerAds +##.tower_ad +##.tower_ad_desktop +##.tower_ad_disclaimer +##.towerad +##.tp-ad-label +##.tp_ads +##.tpd-banner-ad-container +##.tpd-banner-desktop +##.trc-content-sponsored +##.trend-card-advert +##.trend-card-advert__title +##.tsm-ad +##.tt_ads +##.tw-adv-slot +##.txt_ads +##.txtad_area +##.txtadbox +##.txtadvertise +##.type-ad +##.u-ads +##.u-lazy-ad-wrapper +##.udn-ads +##.ue-c-ad +##.ult_vp_videoPlayerAD +##.under-header-ad +##.under-player-ad +##.under-player-ads +##.under_ads +##.uniAdBox +##.unit-ad +##.upper-ad-box +##.upper-ad-space +##.upper_ad +##.upx-ad-placeholder +##.us_ad +##.vadvert +##.variable-ad +##.variableHeightAd +##.vast-blocker +##.vce-ad-below-header +##.vce-ad-container +##.vce-header-ads +##.vce_adsense_expand +##.vce_adsense_widget +##.vce_adsense_wrapper +##.vert-ad +##.vert-ads +##.vertad +##.vertical-ad +##.vertical-ads +##.vertical-adsense +##.verticalAd +##.verticalAdText +##.vertical_ad +##.vertical_ads +##.verticalad +##.vf-ad-comments +##.vf-conversation-starter__ad +##.vf-promo-gtag +##.vf-promo-wrapper +##.vf3-conversations-list__promo +##.vi-sticky-ad +##.video-ad-bottom +##.video-ad-container +##.video-ad-content +##.video-ads +##.video-ads-container +##.video-ads-grid +##.video-ads-wrapper +##.video-adv +##.video-advert +##.video-archive-ad +##.video-boxad +##.video-inline-ads +##.video-page__adv +##.video-right-ad +##.video-right-ads +##.video-side__adv_title +##.videoAd-wrapper +##.videoAd300 +##.videoBoxAd +##.videoPauseAd +##.videoSideAds +##.video_ad +##.video_ads +##.videoad +##.videoad-base +##.videoad2 +##.videos-ad +##.videos-ad-wrap +##.view-Advertisment +##.view-ad +##.view-ads +##.view-advertisement +##.view-advertisements +##.view-advertorials +##.view-adverts +##.view-article-inner-ads +##.view-homepage-center-ads +##.view-id-Advertisment +##.view-id-ads +##.view-id-advertisement +##.view-image-ads +##.view-site-ads +##.view_ad +##.views-field-field-ad +##.visibleAd +##.vjs-ad-iframe +##.vjs-ad-overlay +##.vjs-ima3-ad-container +##.vjs-marker-ad +##.vjs-overlay.size-300x250 +##.vl-ad-item +##.vl-advertisment +##.vl-header-ads +##.vlog-ad +##.vm-ad-horizontal +##.vmag_medium_ad +##.vodl-ad__bigsizebanner +##.vpnad +##.vs-advert-300x250 +##.vsw-ads +##.vswAdContainer +##.vuukle-ad-block +##.vuukle-ads +##.vw-header__ads +##.w-ad-box +##.w-adsninja-video-player +##.w-content--ad +##.wAdvert +##.w_AdExternal +##.w_ad +##.waf-ad +##.wahAd +##.wahAdRight +##.waldo-display-unit +##.waldo-placeholder +##.waldo-placeholder-bottom +##.wall-ads-control +##.wall-ads-left +##.wall-ads-right +##.wallAd +##.wall_ad +##.wcAd +##.wcfAdLocation +##.weatherad +##.web_ads +##.webpart-wrap-advert +##.well-ad +##.werbungAd +##.wfb-ad +##.wh-advert +##.wh_ad +##.wh_ad_inner +##.when-show-ads +##.wide-ad +##.wide-ad-container +##.wide-ad-new-layout +##.wide-ad-outer +##.wide-ads-container +##.wide-advert +##.wide-footer-ad +##.wide-header-ad +##.wide-skyscraper-ad +##.wideAd +##.wideAdTable +##.widePageAd +##.wide_ad +##.wide_adBox_footer +##.wide_ad_unit +##.wide_ad_unit_top +##.wide_ads +##.wide_google_ads +##.wide_grey_ad_box +##.wide_sponsors +##.widead +##.wideadbox +##.widget--ad +##.widget--local-ads +##.widget-300x250ad +##.widget-ad +##.widget-ad-codes +##.widget-ad-image +##.widget-ad-script +##.widget-ad-sky +##.widget-ad-zone +##.widget-ad300x250 +##.widget-adcode +##.widget-ads +##.widget-adsense +##.widget-adv +##.widget-advads-ad-widget +##.widget-advert-970 +##.widget-advertisement +##.widget-dfp +##.widget-sponsor +##.widget-sponsor--container +##.widget-text-ad +##.widgetAD +##.widgetAds +##.widgetSponsors +##.widget_300x250_advertisement +##.widget_ad +##.widget_ad-widget +##.widget_ad125 +##.widget_ad300 +##.widget_ad_300 +##.widget_ad_boxes_widget +##.widget_ad_layers_ad_widget +##.widget_ad_rotator +##.widget_ad_widget +##.widget_adace_ads_widget +##.widget_admanagerwidget +##.widget_adrotate_widgets +##.widget_ads +##.widget_ads_entries +##.widget_ads_widget +##.widget_adsblock +##.widget_adsensem +##.widget_adsensewidget +##.widget_adsingle +##.widget_adswidget1-quick-adsense +##.widget_adswidget2-quick-adsense +##.widget_adswidget3-quick-adsense +##.widget_adv_location +##.widget_advads_ad_widget +##.widget_advert +##.widget_advert_content +##.widget_advert_widget +##.widget_advertisement +##.widget_advertisements +##.widget_advertisment +##.widget_advwidget +##.widget_alaya_ad +##.widget_arvins_ad_randomizer +##.widget_awaken_pro_medium_rectangle_ad +##.widget_better-ads +##.widget_cpxadvert_widgets +##.widget_customad_widget +##.widget_customadvertising +##.widget_dfp +##.widget_doubleclick_widget +##.widget_epcl_ads_fluid +##.widget_evolve_ad_gpt_widget +##.widget_html_snippet_ad_widget +##.widget_ione-dart-ad +##.widget_island_ad +##.widget_long_ads_widget +##.widget_openxwpwidget +##.widget_plugrush_widget +##.widget_quads_ads_widget +##.widget_sej_sidebar_ad +##.widget_sidebaradwidget +##.widget_singlead +##.widget_sponsored_content +##.widget_supermag_ad +##.widget_supernews_ad +##.widget_text_adsense +##.widget_themoneytizer_widget +##.widget_thesun_dfp_ad_widget +##.widget_tt_ads_widget +##.widget_viral_advertisement +##.widget_wp-bannerize-widget +##.widget_wp_insert_ad_widget +##.widget_wpex_advertisement +##.widget_wpstealthads_widget +##.widgetads +##.wikia-ad +##.wio-xbanner +##.wordads-ad-wrapper +##.wp-ads-target +##.wp-block-ad-slot +##.wp-block-tpd-block-tpd-ads +##.wp125ad +##.wp125ad_2 +##.wp_bannerize +##.wp_bannerize_banner_box +##.wp_bannerize_container +##.wpadcenter-ad-container +##.wpadvert +##.wpd-advertisement +##.wpex-ads-widget +##.wppaszone +##.wpvqgr-a-d-s +##.wpx-bannerize +##.wpx_bannerize +##.wpx_bannerize_banner_box +##.wrap-ad +##.wrap-ads +##.wrap_boxad +##.wrapad +##.wrapper-ad +##.wrapper-header-ad-slot +##.wrapper_ad +##.wrapper_advertisement +##.wrapperad +##.ww_ads_banner_wrapper +##.xeiro-ads +##.xmlad +##.xpot-horizontal +##.yad-sponsored +##.yahooad +##.yahooads +##.ympb_target +##.zaf-adhesion-container +##.zeus-ad +##.zeusAdWrapper +##.zeusAd__container +##.zmgad-full-width +##.zmgad-right-rail +##.zone-advertisement +##.zoneAds +##.zox-post-ad-wrap +##.zox-post-bot-ad +##.zox-widget-side-ad +##.zox_ad_widget +##.zox_adv_widget +##AD-SLOT +##DFP-AD +##[class^="adDisplay-module"] +##[class^="amp-ad-"] +##[class^="div-gpt-ad"] +##[data-ad-cls] +##[data-ad-manager-id] +##[data-ad-module] +##[data-ad-name] +##[data-ad-width] +##[data-asg-ins] +##[data-block-type="ad"] +##[data-cl-spot-id] +##[data-css-class="dfp-inarticle"] +##[data-d-ad-id] +##[data-desktop-ad-id] +##[data-dynamic-ads] +##[data-ez-name] +##[data-freestar-ad][id] +##[data-id^="div-gpt-ad"] +##[data-identity="adhesive-ad"] +##[data-m-ad-id] +##[data-mobile-ad-id] +##[data-rc-widget] +##[data-revive-zoneid] +##[data-role="tile-ads-module"] +##[data-template-type="nativead"] +##[data-testid="adBanner-wrapper"] +##[data-testid="ad_testID"] +##[data-testid="prism-ad-wrapper"] +##[data-testid^="section-AdRowBillboard"] +##[data-type="ad-vertical"] +##[data-wpas-zoneid] +##[href$="/sexdating.php"] +##[href="//sexcams.plus/"] +##[href="https://chaturbate.jjgirls.com/"] > img +##[href="https://jdrucker.com/gold"] > img +##[href="https://snvhost.com/"] +##[href^="http://clicks.totemcash.com/"] +##[href^="http://mypillow.com/"] > img +##[href^="http://www.mypillow.com/"] > img +##[href^="https://a.acebet.com/api/click?"] +##[href^="https://aads.com/campaigns/"] +##[href^="https://ad.admitad.com/"] +##[href^="https://ad1.adfarm1.adition.com/"] +##[href^="https://affiliate.fastcomet.com/"] > img +##[href^="https://antiagingbed.com/discount/"] > img +##[href^="https://ap.octopuspop.com/click/"] > img +##[href^="https://awbbjmp.com/"] +##[href^="https://charmingdatings.life/"] +##[href^="https://clicks.affstrack.com/"] > img +##[href^="https://glersakr.com/"] +##[href^="https://go.xlrdr.com"] +##[href^="https://groorsoa.net/"] +##[href^="https://ilovemyfreedoms.com/landing-"] +##[href^="https://istlnkcl.com/"] +##[href^="https://join.girlsoutwest.com/"] +##[href^="https://join.playboyplus.com/track/"] +##[href^="https://join3.bannedsextapes.com"] +##[href^="https://mylead.global/stl/"] > img +##[href^="https://mypatriotsupply.com/"] > img +##[href^="https://mypillow.com/"] > img +##[href^="https://mystore.com/"] > img +##[href^="https://optimizedelite.com/"] > img +##[href^="https://rapidgator.net/article/premium/ref/"] +##[href^="https://rpwmct.com/"] +##[href^="https://shiftnetwork.infusionsoft.com/go/"] > img +##[href^="https://track.aftrk1.com/"] +##[href^="https://track.fiverr.com/visit/"] > img +##[href^="https://turtlebids.irauctions.com/"] img +##[href^="https://url.totaladblock.com/"] +##[href^="https://wct.link/click?"] +##[href^="https://wsup.ai/"] +##[href^="https://www.avantlink.com/click.php"] img +##[href^="https://www.brighteonstore.com/products/"] img +##[href^="https://www.cloudways.com/en/?id"] +##[href^="https://www.herbanomic.com/"] > img +##[href^="https://www.hostg.xyz/"] > img +##[href^="https://www.mypillow.com/"] > img +##[href^="https://www.profitablegatecpm.com/"] +##[href^="https://www.restoro.com/"] +##[href^="https://www.targetingpartner.com/"] +##[href^="https://zone.gotrackier.com/"] +##[href^="https://zstacklife.com/"] img +##[id^="ad-wrap-"] +##[id^="ad_sky"] +##[id^="ad_slider"] +##[id^="div-gpt-ad"] +##[id^="section-ad-banner"] +##[name^="google_ads_iframe"] +##a-ad +##a[href*=".adsrv.eacdn.com/"] +##a[href*=".engine.adglare.net/"] +##a[href*=".foxqck.com/"] +##a[href*=".g2afse.com/"] +##a[href*="//jjgirls.com/sex/Chaturbate"] +##a[href*="/jump/next.php?r="] +##a[href^=" https://www.friendlyduck.com/AF_"] +##a[href^="//go.eabids.com/"] +##a[href^="//hoodingluster.com/"] +##a[href^="//s.zlinkd.com/"] +##a[href^="//startgaming.net/tienda/" i] +##a[href^="http://adultfriendfinder.com/go/"] +##a[href^="http://bongacams.com/track?"] +##a[href^="http://cam4com.go2cloud.org/aff_c?"] +##a[href^="http://com-1.pro/"] +##a[href^="http://join.brokestraightboys.com/track/"] +##a[href^="http://partners.etoro.com/"] +##a[href^="http://revolvemockerycopper.com/"] +##a[href^="http://sarcasmadvisor.com/"] +##a[href^="http://sneakyadministration.com/"] +##a[href^="http://stickingrepute.com/"] +##a[href^="http://tc.tradetracker.net/"] > img +##a[href^="http://trk.globwo.online/"] +##a[href^="http://www.adultempire.com/unlimited/promo?"][href*="&partner_id="] +##a[href^="http://www.friendlyduck.com/AF_"] +##a[href^="http://www.h4trck.com/"] +##a[href^="http://www.iyalc.com/"] +##a[href^="https://123-stream.org/"] +##a[href^="https://1betandgonow.com/"] +##a[href^="https://1winpb.com/"] +##a[href^="https://6-partner.com/"] +##a[href^="https://Click.ggpickaff.com/"] +##a[href^="https://a-ads.com/"] +##a[href^="https://a.adtng.com/"] +##a[href^="https://a.bestcontentfood.top/"] +##a[href^="https://a.bestcontentoperation.top/"] +##a[href^="https://a.bestcontentweb.top/"] +##a[href^="https://a.candyai.love/"] +##a[href^="https://a.medfoodhome.com/"] +##a[href^="https://a.medfoodsafety.com/"] +##a[href^="https://a2.adform.net/"] +##a[href^="https://ab.advertiserurl.com/aff/"] +##a[href^="https://activate-game.com/"] +##a[href^="https://ad.doubleclick.net/"] +##a[href^="https://ad.zanox.com/ppc/"] > img +##a[href^="https://adclick.g.doubleclick.net/"] +##a[href^="https://ads.betfair.com/redirect.aspx?"] +##a[href^="https://ads.leovegas.com/"] +##a[href^="https://ads.planetwin365affiliate.com/"] +##a[href^="https://adultfriendfinder.com/go/"] +##a[href^="https://aj1070.online/"] +##a[href^="https://ak.psaltauw.net/"] +##a[href^="https://ausoafab.net/"] +##a[href^="https://aweptjmp.com/"] +##a[href^="https://awptjmp.com/"] +##a[href^="https://banners.livepartners.com/"] +##a[href^="https://bc.game/"] +##a[href^="https://believessway.com/"] +##a[href^="https://best-experience-cool.com/"] +##a[href^="https://black77854.com/"] +##a[href^="https://bngprm.com/"] +##a[href^="https://bngpt.com/"] +##a[href^="https://bodelen.com/"] +##a[href^="https://bongacams10.com/track?"] +##a[href^="https://bongacams2.com/track?"] +##a[href^="https://cam4com.go2cloud.org/"] +##a[href^="https://camfapr.com/landing/click/"] +##a[href^="https://chaturbate.com/in/?"] +##a[href^="https://claring-loccelkin.com/"] +##a[href^="https://click.Ggpickaff.com/"] +##a[href^="https://click.candyoffers.com/"] +##a[href^="https://click.dtiserv2.com/"] +##a[href^="https://click.hoolig.app/"] +##a[href^="https://click.linksynergy.com/fs-bin/"] > img +##a[href^="https://clickadilla.com/"] +##a[href^="https://clickins.slixa.com/"] +##a[href^="https://clicks.pipaffiliates.com/"] +##a[href^="https://clixtrac.com/"] +##a[href^="https://combodef.com/"] +##a[href^="https://ctjdwm.com/"] +##a[href^="https://ctosrd.com/"] +##a[href^="https://ctrdwm.com/"] +##a[href^="https://datewhisper.life/"] +##a[href^="https://dl-protect.net/"] +##a[href^="https://engine.phn.doublepimp.com/"] +##a[href^="https://explore-site.com/"] +##a[href^="https://fc.lc/ref/"] +##a[href^="https://financeads.net/tc.php?"] +##a[href^="https://gamingadlt.com/?offer="] +##a[href^="https://get-link.xyz/"] +##a[href^="https://getmatchedlocally.com/"] +##a[href^="https://gml-grp.com/"] +##a[href^="https://go.admjmp.com"] +##a[href^="https://go.bbrdbr.com"] +##a[href^="https://go.bushheel.com/"] +##a[href^="https://go.cmtaffiliates.com/"] +##a[href^="https://go.dmzjmp.com"] +##a[href^="https://go.etoro.com/"] > img +##a[href^="https://go.goaserv.com/"] +##a[href^="https://go.grinsbest.com/"] +##a[href^="https://go.hpyjmp.com"] +##a[href^="https://go.hpyrdr.com/"] +##a[href^="https://go.markets.com/visit/?bta="] +##a[href^="https://go.mnaspm.com/"] +##a[href^="https://go.rmhfrtnd.com"] +##a[href^="https://go.rmishe.com/"] +##a[href^="https://go.skinstrip.net"][href*="?campaignId="] +##a[href^="https://go.strpjmp.com/"] +##a[href^="https://go.tmrjmp.com"] +##a[href^="https://go.trackitalltheway.com/"] +##a[href^="https://go.xlirdr.com"] +##a[href^="https://go.xlivrdr.com"] +##a[href^="https://go.xlviiirdr.com"] +##a[href^="https://go.xlviirdr.com"] +##a[href^="https://go.xlvirdr.com"] +##a[href^="https://go.xtbaffiliates.com/"] +##a[href^="https://go.xxxiijmp.com"] +##a[href^="https://go.xxxijmp.com"] +##a[href^="https://go.xxxjmp.com"] +##a[href^="https://go.xxxvjmp.com/"] +##a[href^="https://golinks.work/"] +##a[href^="https://helmethomicidal.com/"] +##a[href^="https://hot-growngames.life/"] +##a[href^="https://identicaldrench.com/"] +##a[href^="https://in.rabbtrk.com/"] +##a[href^="https://iqbroker.com/"][href*="?aff="] +##a[href^="https://ismlks.com/"] +##a[href^="https://italarizege.xyz/"] +##a[href^="https://jaxofuna.com/"] +##a[href^="https://join.bannedsextapes.com/track/"] +##a[href^="https://join.dreamsexworld.com/"] +##a[href^="https://join.sexworld3d.com/track/"] +##a[href^="https://join.virtuallust3d.com/"] +##a[href^="https://join.virtualtaboo.com/track/"] +##a[href^="https://juicyads.in/"] +##a[href^="https://landing.brazzersnetwork.com/"] +##a[href^="https://lead1.pl/"] +##a[href^="https://lijavaxa.com/"] +##a[href^="https://lnkxt.bannerator.com/"] +##a[href^="https://loboclick.com/"] +##a[href^="https://losingoldfry.com/"] +##a[href^="https://mediaserver.entainpartners.com/renderBanner.do?"] +##a[href^="https://mmwebhandler.aff-online.com/"] +##a[href^="https://myclick-2.com/"] +##a[href^="https://natour.naughtyamerica.com/track/"] +##a[href^="https://ndt5.net/"] +##a[href^="https://offhandpump.com/"] +##a[href^="https://osfultrbriolenai.info/"] +##a[href^="https://pb-front.com/"] +##a[href^="https://pb-imc.com/"] +##a[href^="https://pb-track.com/"] +##a[href^="https://playnano.online/offerwalls/?ref="] +##a[href^="https://porntubemate.com/"] +##a[href^="https://postback1win.com/"] +##a[href^="https://prf.hn/click/"][href*="/adref:"] > img +##a[href^="https://prf.hn/click/"][href*="/camref:"] > img +##a[href^="https://prf.hn/click/"][href*="/creativeref:"] > img +##a[href^="https://pubads.g.doubleclick.net/"] +##a[href^="https://quotationfirearmrevision.com/"] +##a[href^="https://random-affiliate.atimaze.com/"] +##a[href^="https://rixofa.com/"] +##a[href^="https://s.cant3am.com/"] +##a[href^="https://s.eunow4u.com/"] +##a[href^="https://s.gentlefieldpattern.com/"] +##a[href^="https://s.happyleafmotion.com/"] +##a[href^="https://s.ma3ion.com/"] +##a[href^="https://s.zlink3.com/"] +##a[href^="https://s.zlink7.com/"] +##a[href^="https://s.zlinkd.com/"] +##a[href^="https://s.zlinkn.com/"] +##a[href^="https://s.zlinkr.com/"] +##a[href^="https://s.zlinkt.com/"] +##a[href^="https://serve.awmdelivery.com/"] +##a[href^="https://service.bv-aff-trx.com/"] +##a[href^="https://sexynearme.com/"] +##a[href^="https://slkmis.com/"] +##a[href^="https://snowdayonline.xyz/"] +##a[href^="https://stardomcoit.com/"] +##a[href^="https://static.fleshlight.com/images/banners/"] +##a[href^="https://stellarcashflow.net/trck/"] +##a[href^="https://streamate.com/landing/click/"] +##a[href^="https://svb-analytics.trackerrr.com/"] +##a[href^="https://syndicate.contentsserved.com/"] +##a[href^="https://syndication.dynsrvtbg.com/"] +##a[href^="https://syndication.exoclick.com/"] +##a[href^="https://t.acam.link/"] +##a[href^="https://t.adating.link/"] +##a[href^="https://t.ajrkm1.com/"] +##a[href^="https://t.ajrkm3.com/"] +##a[href^="https://t.ajump1.com/"] +##a[href^="https://t.aslnk.link/"] +##a[href^="https://tatrck.com/"] +##a[href^="https://tc.tradetracker.net/"] > img +##a[href^="https://tm-offers.gamingadult.com/"] +##a[href^="https://tour.mrskin.com/"] +##a[href^="https://track.1234sd123.com/"] +##a[href^="https://track.adform.net/"] +##a[href^="https://track.afcpatrk.com/"] +##a[href^="https://track.aftrk3.com/"] +##a[href^="https://track.aftrk5.com/"] +##a[href^="https://track.totalav.com/"] +##a[href^="https://track.wg-aff.com"] +##a[href^="https://tracker.loropartners.com/"] +##a[href^="https://tracking.avapartner.com/"] +##a[href^="https://traffdaq.com/"] +##a[href^="https://trk.nfl-online-streams.club/"] +##a[href^="https://trk.softonixs.xyz/"] +##a[href^="https://twinrdsrv.com/"] +##a[href^="https://twinrdsyte.com/"] +##a[href^="https://upsups.click/"] +##a[href^="https://voluum.prom-xcams.com/"] +##a[href^="https://wittered-mainging.com/"] +##a[href^="https://wmctjd.com/"] +##a[href^="https://wolf-327b.com/"] +##a[href^="https://www.adskeeper.com"] +##a[href^="https://www.adultempire.com/"][href*="?partner_id="] +##a[href^="https://www.adxsrve.com/"] +##a[href^="https://www.bang.com/?aff="] +##a[href^="https://www.bet365.com/"][href*="affiliate="] +##a[href^="https://www.brazzersnetwork.com/landing/"] +##a[href^="https://www.dating-finder.com/?ai_d="] +##a[href^="https://www.dating-finder.com/signup/?ai_d="] +##a[href^="https://www.dql2clk.com/"] +##a[href^="https://www.effectiveratecpm.com/"] +##a[href^="https://www.financeads.net/tc.php?"] +##a[href^="https://www.friendlyduck.com/AF_"] +##a[href^="https://www.geekbuying.com/dynamic-ads/"] +##a[href^="https://www.googleadservices.com/pagead/aclk?"] > img +##a[href^="https://www.highcpmrevenuenetwork.com/"] +##a[href^="https://www.highperformancecpmgate.com/"] +##a[href^="https://www.infowarsstore.com/"] > img +##a[href^="https://www.liquidfire.mobi/"] +##a[href^="https://www.mrskin.com/account/"] +##a[href^="https://www.mrskin.com/tour"] +##a[href^="https://www.nutaku.net/signup/landing/"] +##a[href^="https://www.onlineusershielder.com/"] +##a[href^="https://www.sheetmusicplus.com/"][href*="?aff_id="] +##a[href^="https://www.toprevenuegate.com/"] +##a[href^="https://www8.smartadserver.com/"] +##a[href^="https://zirdough.net/"] +##a[onclick^="window.location.replace('https://random-affiliate.atimaze.com/"] +##a[style="width:100%;height:100%;z-index:10000000000000000;position:absolute;top:0;left:0;"] +##ad-shield-ads +##ad-slot +##app-ad +##app-advertisement +##app-large-ad +##aside[aria-label="retailmedia.complimentarySponsored"] +##aside[id^="adrotate_widgets-"] +##atf-ad-slot +##bottomadblock +##display-ad-component +##display-ads +##div[aria-label="Ads"] +##div[class$="-adlabel"] +##div[class^="Adstyled__AdWrapper-"] +##div[data-ad-placeholder] +##div[data-ad-region] +##div[data-ad-targeting] +##div[data-ad-wrapper] +##div[data-adname] +##div[data-adunit-path] +##div[data-adunit] +##div[data-adzone] +##div[data-alias="300x250 Ad 1"] +##div[data-alias="300x250 Ad 2"] +##div[data-contentexchange-widget] +##div[data-dfp-id] +##div[data-id-advertdfpconf] +##div[id^="ad-div-"] +##div[id^="ad-position-"] +##div[id^="ad_position_"] +##div[id^="adngin-"] +##div[id^="adrotate_widgets-"] +##div[id^="adspot-"] +##div[id^="apn_native_ad_slot_"] +##div[id^="crt-"][style] +##div[id^="dfp-ad-"] +##div[id^="div-ads-"] +##div[id^="div-gpt-"] +##div[id^="ezoic-pub-ad-"] +##div[id^="google_dfp_"] +##div[id^="gpt_ad_"] +##div[id^="lazyad-"] +##div[id^="optidigital-adslot"] +##div[id^="rc-widget-"] +##div[id^="st"][style^="z-index: 999999999;"] +##div[id^="sticky_ad_"] +##div[id^="vuukle-ad-"] +##div[ow-ad-unit-wrapper] +##gpt-ad +##guj-ad +##hl-adsense +##img[src^="https://images.purevpnaffiliates.com"] +##img[src^="https://s-img.adskeeper.com/"] +##ps-connatix-module +##span[data-ez-ph-id] +##span[id^="ezoic-pub-ad-placeholder-"] +##topadblock +##zeus-ad +! various popups +###modal[doskip][prclck] +##in-page-message[doskip] +! katv.com/cbs12.com/abergavennychronicle.com/tenby-today.co.uk +##.DisplayAd_Native__XCll3 +##.MPUstyled__MPUWrapper-sc-100o0l7-0 +##.MPUstyled__MPUWrapper-sc-1cdmm4p-0 +##.PrimisMidArticleAdUnit_desktop__dq_iB +##.RightRailPanelAd_noPanelSmall__7yQ1M +##.RightRailTrendingAd_nativeAdWrapper__dxc78 +##.SideBarstyled__SideBarMpuWrapper-sc-g4r51i-2 +##.StoryPage_storyTopAdContainer__6udZ0 +##.TaboolaMoreToExplore_taboolaContainerWrapper__Ccf_j +##.TopBannerstyled__Wrapper-sc-x2ypns-0 +! ACM Media https://acm.media/brands/non-dailies/ +###billboard-container.bg-gray-100.py-3 +###main-side-container.bg-gray-100.space-y-2 +###mrec-297631-container +###mrec-leaderboard-298545-container +###newswell-leaderboard-container +###newswell-side-1-container +###newswell-side-2-container +###story-side-1-container.min-w-mrec +###story-side-2-container.min-w-mrec +###story3-container.py-2.bg-gray-100 +###story4-container.py-2.bg-gray-100 +###story5-container.py-2.bg-gray-100 +##div[id^="mrec-leaderboard-"] +! newspack.com (noozhawk.com) +##.bs-sneaker-container +##.newspack-broadstreet-ad +##.newspack_global_ad +##.newspack_global_ad_new +##.widget_newspack-ads-widget +##broadstreet-zone-container +! https://github.com/AdguardTeam/AdguardFilters/commit/934912b3e760e068a91cd6cb502096a55ab1ca16 +! Block parked domains. Sometimes it is not immediately obvious that it is dead +! https://rawasiansex.com/ +###fallbackTerms.fallback-term-holder +! baits +###ads_top:not(a) +##.Ad-Container:not(.adsbygoogle) +##.ad-area:not(.text-ad) +##.ad-placeholder:not(#filter_ads_by_classname):not(#detect_ad_empire):not(#detect):not(.adsbox) +##.ad_box:not(.text-ad) +##.ads_container:not(.text-ad) +##.sidebar-ad:not(.adsbygoogle) +! adkeeper +##iframe[scrolling="no"][sandbox*="allow-popups allow-modals"][style^="width: 100%; height: 100%; border: none;"] +! https://musicalartifacts.com/ https://ww25.spinningrats.online/ +! Parked domains +###pk-status-message +! sellwild-loader +###sellwild-loader +! fansided. mentalfloss.com,netflixlife.com,winteriscoming.net,ipreferreading.com +##.ad_1tdq7q5 +##.style_k8mr7b-o_O-style_uhlm2 +! 247slots.org/247checkers.com/247backgammon.org/247hearts.com etc +##.aspace-300x169 +##.aspace-300x250 +! actvid.com,f2movies.to,fmovies.ink,fmovies.ps,fmoviesto.cc,himovies.to,movies2watch.tv,moviesjoy.to,soap2day.rs +###hgiks-middle +###hgiks-top +! flashscore.co.uk,soccer24.com,flashscore.it,livescore.in +##.boxOverContent__banner +##.zone.zone--loaded +! https://publicwww.com/websites/%22happy-under-player%22/ +##.happy-under-player +! https://github.com/easylist/easylist/pull/16654 +##.mntl-leaderboard-header +##.mntl-leaderboard-spacer +! wbaltv.com/wapt.com/wdsu.com +##.listing-page-ad +! shopee.cl,shopee.cn,shopee.co.id,shopee.co.th.. https://github.com/easylist/easylist/pull/16659 +##.shopee-search-user-brief +! Ads for parked domains https://github.com/easylist/easylist/commit/f96a71b82c +##a[href*="&maxads="] +##a[href*=".cfm?domain="][href*="&fp="] +! CitrusAd +##.CitrusBannerWrapper--enollj +##[class^="tile-picker__CitrusBannerContainer-sc-"] +##citrus-ad-wrapper +! realclear +##.RC-AD +##.RC-AD-BOX-BOTTOM +##.RC-AD-BOX-MIDDLE +##.RC-AD-BOX-TOP +##.RC-AD-TOP-BANNER +! element specific +##ins.adsbygoogle[data-ad-client] +##ins.adsbygoogle[data-ad-slot] +! (NSFW) club-rileyreid.com,clubmiamalkova.com,lanarhoades.mypornstarblogs.com +###mgb-container > #mgb +! https://github.com/easylist/easylist/pull/11962 +###kt_player > a[target="_blank"] +###kt_player > div[style$="display: block;"][style*="inset: 0px;"] +! Slashdot "Deals" (covers web/ipfs/onion) +###slashboxes > .deals-rail +##.scroll-fixable.rail-right > .deals-rail +! dailypost.co.uk/dailystar.co.uk https://github.com/easylist/easylist/issues/9657 +##.click-track.partner +##.click-track.shop-window-affiliate +##.click-track.teaser +! local12.com/bakersfieldnow.com/katv.com +##.index-module_adBeforeContent__UYZT +##.interstory_first_mobile +##.interstory_second_mobile +! Gannett https://github.com/easylist/easylist/issues/13015 +###gnt_atomsnc +###gpt-dynamic_native_article_4 +###gpt-high_impact +###gpt-poster +##.gnt_em_vp__tavp +##.gnt_em_vp_c[data-g-s="vp_dk"] +##.gnt_flp +##.gnt_rr_xpst +##.gnt_rr_xst +##.gnt_tb.gnt_tbb +##.gnt_tbr.gnt_tb +##.gnt_x +##.gnt_x__lbl +##.gnt_xmst +! people.com/ seriouseats.com +##.mntl-block.article__broad-video +##.mntl-jwplayer-broad.article__broad-video--jw +##.mntl-jwplayer-broad.article__broad-video-jw +!! europe-agriculture.com/europa-landmaschinen.de/europa-agricola.es/etc. +##.row-list.banniere +##.row-list.native +! (invideo advertising) +###Player_Playoncontent +###Player_Playoncontent_footer +###aniview--player +###cmg-video-player-placeholder +###jwplayer-container-div +###jwplayer_contextual_player_div +###kargo-player +###mm-player-placeholder-large-screen +###mplayer-embed +###primis-holder +###primis_intext +###vidazoo-player +##.GRVPrimisVideo +##.GRVVideo +##.ac-lre-desktop +##.ac-lre-player-ph +##.ac-lre-wrapper +##.ad-container--hot-video +##.ae-player__itv +##.ami-video-wrapper +##.ampexcoVideoPlayer +##.aniview-inline-player +##.anyClipWrapper +##.aplvideo +##.article-connatix-wrap +##.article-detail-ad +##.avp-p-wrapper +##.ck-anyclips +##.ck-anyclips-article +##.exco-container +##.ez-sidebar-wall-ad +##.ez-video-wrap +##.htl-inarticle-container +##.js-widget-distroscale +##.js-widget-send-to-news +##.jwPlayer--floatingContainer +##.legion_primiswrapper +##.mm-embed--sendtonews +##.mm-widget--sendtonews +##.nts-video-wrapper +##.oovvuu-embed-player +##.playwire-article-leaderboard-ad +##.pmc-contextual-player +##.pop-out-eplayer-container +##.popup-box-ads +##.primis-ad +##.primis-ad-wrap +##.primis-custom +##.primis-player +##.primis-player__container +##.primis-video-player +##.primis_1 +##.s2nContainer +##.send-to-news +##.van_vid_carousel +##.video--container--aniview +##.vidible-wrapper +##.wps-player-wrap +##[class^="s2nPlayer"] +! hianime.to +##.pizza-x.pizza +##.pizza-y.pizza +! Ad widgets +##.BeOpWidget +! VPN Affiliate Banners +##a[href^="https://billing.purevpn.com/aff.php"] > img +##a[href^="https://fastestvpn.com/lifetime-special-deal?a_aid="] +##a[href^="https://get.surfshark.net/aff_c?"][href*="&aff_id="] > img +##a[href^="https://go.nordvpn.net/aff"] > img +##a[href^="https://torguard.net/aff.php"] > img +##a[href^="https://track.ultravpn.com/"] +##a[href^="https://www.get-express-vpn.com/offer/"] +##a[href^="https://www.goldenfrog.com/vyprvpn?offer_id="][href*="&aff_id="] +##a[href^="https://www.privateinternetaccess.com/"] > img +##a[href^="https://www.purevpn.com/"][href*="&utm_source=aff-"] +! areanews.com.au,armidaleexpress.com.au,avonadvocate.com.au,batemansbaypost.com.au +##.grid > .container > #aside-promotion +! revcontent +##.default_rc_theme +##.inf-onclickvideo-adbox +##.inf-onclickvideo-container +! internetradiouk.com / jamaicaradio.net / onlineradios.in etc +##.add-box-side +##.add-box-top +! https://github.com/easylist/easylist/issues/3902 +##.partner-loading-shown.partner-label +! Mgid +##div[id*="MarketGid"] +##div[id*="ScriptRoot"] +! ezoic +###ezmob_footer +! Adreclaim +##.rec-sponsored +##.rec_article_footer +##.rec_article_right +##.rec_container__right +##.rec_container_footer +##.rec_container_right +##.rec_title_footer +##[onclick*="content.ad/"] +! ampproject +##.amp-ad +##.amp-ad-container +##.amp-ad__wrapper +##.amp-ads +##.amp-ads-container +##.amp-adv-container +##.amp-adv-wrapper +##.amp-article-ad-element +##.amp-flying-carpet-text-border +##.amp-sticky-ad-custom +##.amp-sticky-ads +##.amp-unresolved +##.amp_ad_1 +##.amp_ad_header +##.amp_ad_wrapper +##.ampad +##.ct_ampad +##.spotim-amp-list-ad +##AMP-AD +##amp-ad +##amp-ad-custom +##amp-connatix-player +##amp-fx-flying-carpet +! Generic mobile element +###mobile-swipe-banner +! Sinclair Broadcast Group (ktul.com/komonews.com/kfdm.com/wjla.com/etc.) +###banner_pos1_ddb_0 +###banner_pos2_ddb_0 +###banner_pos3_ddb_0 +###banner_pos4_ddb_0 +###ddb_fluid_native_ddb_0 +###js-Sponsored-Container +###premium_ddb_0 +###rightrail_bottom_ddb_0 +###rightrail_pos1_ddb_0 +###rightrail_pos2_ddb_0 +###rightrail_pos3_ddb_0 +###rightrail_top_ddb_0 +###story_bottom_ddb_0 +###story_bottom_ddb_1 +###story_top_ddb_0 +##.DisplayAd_PremiumPlacement__gAXXB +##.index-module_adAfterContent__RcW1 +##.index-module_adBeforeContent__AMXn +##.index-module_rightrailBottom__IJEl +##.index-module_rightrailTop__mag4 +##.index-module_sd_background__Um4w +##.premium_PremiumPlacement__2dEp0 +##.style_medTopAdsWrapper__rd6bz +##.teaserList-module_nativeAdWrapper__uBhF +! In video div +###ultimedia_wrapper +##.babel_player_block +! In advert promo +##.brandpost_inarticle +! Sedo +##.container-content__container-relatedlinks +! PubExchange +###pubexchange_below_content +##.pubexchange_module +! Outbrain +###around-the-web +###g-outbrain +###js-outbrain-ads-module +###js-outbrain-module +###js-outbrain-relateds +###outbrain +###outbrain-id +###outbrain-section +###outbrain-wrapper +###outbrain1 +###outbrainAdWrapper +###outbrainWidget +###outbrain_widget_0 +##.ArticleFooter-outbrain +##.ArticleOutbrainLocal +##.OUTBRAIN +##.Outbrain +##.adv_outbrain +##.article_OutbrainContent +##.box-outbrain +##.c2_outbrain +##.component-outbrain +##.js-outbrain-container +##.mid-outbrain +##.mntl-outbrain +##.ob-p.ob-dynamic-rec-container +##.ob-smartfeed-wrapper +##.ob-widget-header +##.outBrainWrapper +##.outbrain +##.outbrain-ad-slot +##.outbrain-ad-units +##.outbrain-ads +##.outbrain-bg +##.outbrain-bloc +##.outbrain-content +##.outbrain-group +##.outbrain-module +##.outbrain-placeholder +##.outbrain-recommended +##.outbrain-reserved-space +##.outbrain-single-bottom +##.outbrain-widget +##.outbrain-wrap +##.outbrain-wrapper +##.outbrain-wrapper-container +##.outbrain-wrapper-outer +##.outbrainAdHeight +##.outbrainWidget +##.outbrain__main +##.outbrain_container +##.outbrain_skybox +##.outbrainad +##.outbrainbox +##.promoted-outbrain +##.responsive-ad-outbrain +##.sics-component__outbrain +##.sidebar-outbrain +##.single__outbrain +##.voc-ob-wrapper +##.widget_outbrain +##.widget_outbrain_widget +##a[data-oburl^="https://paid.outbrain.com/network/redir?"] +##a[data-redirect^="https://paid.outbrain.com/network/redir?"] +##a[href^="https://paid.outbrain.com/network/redir?"] +##a[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"] +##a[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"] + .ob_source +! Taboola +###block-boxes-taboola +###block-taboolablock +###component-taboola-below-article-feed +###component-taboola-below-article-feed-2 +###component-taboola-below-homepage-feed +###js-Taboola-Container-0 +###moduleTaboolaRightRail +###original_taboola +###possible_taboola +###taboola +###taboola-above-homepage-thumbnails +###taboola-ad +###taboola-adverts +###taboola-below +###taboola-below-article-1 +###taboola-below-article-thumbnails +###taboola-below-article-thumbnails-2 +###taboola-below-article-thumbnails-express +###taboola-below-article-thumbnails-mg +###taboola-below-article-thumbnails-new +###taboola-below-article-thumbnails-photo +###taboola-below-article-thumbnails-v2 +###taboola-below-disco-board +###taboola-below-forum-thumbnails +###taboola-below-homepage-thumbnails-2 +###taboola-below-homepage-thumbnails-3 +###taboola-below-main-column +###taboola-belowarticle +###taboola-bottom +###taboola-bottom-main-column +###taboola-div +###taboola-homepage-thumbnails +###taboola-homepage-thumbnails-desktop +###taboola-horizontal-toolbar +###taboola-in-feed-thumbnails +###taboola-mid-article-thumbnails +###taboola-mid-article-thumbnails-ii +###taboola-mid-main-column-thumbnails +###taboola-mobile-article-thumbnails +###taboola-native-right-rail-thumbnails +###taboola-placeholder +###taboola-right-rail +###taboola-right-rail-express +###taboola-right-rail-text-right +###taboola-right-rail-thumbnails +###taboola-right-rail-thumbnails-2nd +###taboola-text-2-columns-mix +###taboola-vid-container +###taboola-widget-wrapper +###taboolaContainerWrapper_0 +###taboola_bottom +###taboola_responsive_wrapper +###taboola_side +###taboola_wrapper +##.article-taboola +##.divider-taboola +##.grid__module-sizer_name_taboola +##.js-taboola +##.m-article-taboola +##.mc-column-Taboola +##.nya-slot[style] +##.slottaboola +##.taboola +##.taboola-above-article +##.taboola-above-article-thumbnails +##.taboola-ad +##.taboola-banner +##.taboola-block +##.taboola-bottom-adunit +##.taboola-container +##.taboola-frame +##.taboola-general +##.taboola-in-plug-wrap +##.taboola-inbetweener +##.taboola-item +##.taboola-like-block +##.taboola-module +##.taboola-placeholder +##.taboola-recommends +##.taboola-sidebar +##.taboola-sidebar-container +##.taboola-skip-wrapper +##.taboola-thumbnails-container +##.taboola-vertical +##.taboola-widget +##.taboola-wrapper +##.taboolaArticle +##.taboolaDiv +##.taboolaHeight +##.taboola__container +##.taboola_blk +##.taboola_body_ad +##.taboola_container +##.taboola_lhs +##.taboola_module +##.taboolaads +##.taboolaloader +##.trb_taboola +##.trc-first-recommendation +##.trc-spotlight-first-recommendation +##.trc_excludable +##.trc_rbox +##.trc_rbox_border_elm +##.trc_rbox_div +##.trc_related_container +##.trc_spotlight_item +##.van_taboola +##.widget_taboola +##[data-taboola-options] +##[data-testid="commercial-label-taboola"] +##[data-testid^="taboola-"] +##amp-embed[type="taboola"] +##div[id^="taboola-stream-"] +! Zergnet +##.ZERGNET +##.module-zerg +##.sidebar-zergnet +##.zerg-widget +##.zerg-widgets +##.zergnet +##.zergnet-holder +##.zergnet-row +##.zergnet-unit +##.zergnet-widget +##.zergnet-widget-container +##.zergnet-widget__header +##.zergnet-widget__subtitle +##.zergnet__container +##div[id^="zergnet-widget"] + +! *** easylist:easylist/easylist_allowlist_general_hide.txt *** +dez.ro#@##ad-carousel +so-net.ne.jp#@##ad-p3 +53.com#@##ad-rotator +techymedies.com#@##ad-top +afterdawn.com,download.fi,edukas.fi#@##ad-top-banner-placeholder +ufoevidence.org#@##ad-wrapper +ben54.jp#@##adModal +riderplanet-usa.com,sdf-event.sakura.ne.jp#@##ad_1 +sdf-event.sakura.ne.jp#@##ad_2 +sdf-event.sakura.ne.jp#@##ad_3 +sdf-event.sakura.ne.jp#@##ad_4 +mediafire.com#@##ad_banner +drc1bk94f7rq8.cloudfront.net,shiropro-re.net#@##ad_link +streetinsider.com#@##ad_space +adtunes.com#@##ad_thread_first_post_content +aga-clinic-experience.jp#@##ad_top +linuxtracker.org#@##adbar +kingcard.com.tw#@##adbox +gifmagic.com,lalovings.com#@##adcontainer +about.com#@##adcontainer1 +guloggratis.dk#@##adcontent +jardinsdubreil.fr#@##adhesion +ads.nipr.ac.jp#@##ads-header +miuithemers.com#@##ads-left +finvtech.com,herstage.com,sportynew.com,travel13.com#@##ads-wrapper +mafagames.com,telkomsel.com#@##adsContainer +globalsecurity.org#@##adtop +ewybory.eu#@##adv-text +basinnow.com,e-jpccs.jp,oxfordlearnersdictionaries.com#@##advertise +fcbarcelona.dk#@##article_ad +catb.org#@##banner-ad +hifi-forsale.co.uk#@##centerads +wsj.com#@##footer-ads +maxelevator.com,mcp79.com,olliemagic.com,stove-chijo.com#@##footer_ad +deepgoretube.site,lewdgames.to#@##fwdevpDiv0 +developers.google.com#@##google-ads +renso-ruigo.com#@##header-ad +plaza.rakuten.co.jp#@##headerAd +airplaydirect.com,zeirishi-web.com#@##header_ad +665.jp#@##leftad +tei-c.org#@##msad +cnn.com#@##outbrain_widget_0 +suntory.co.jp#@##page_ad +box10.com#@##prerollAd +spjai.com#@##related_ads +eva.vn#@##right_ads +665.jp,e-jpccs.jp#@##rightad +39.benesse.ne.jp,techeyesonline.com#@##side-ad +lexicanum.com#@##sidebar-ad +mars.video#@##stickyads +indianexpress.com,jansatta.com#@##taboola-below-article-1 +azclick.jp,tubefilter.com#@##topAd +analogplanet.com,hifichoice.com,hifinews.com,homecinemachoice.com,shutterbug.com,soundandvision.com,stereophile.com#@##topbannerad +gamingcools.com#@#.Adsense +flightview.com#@#.ad-160-600 +job.inshokuten.com,netmile.co.jp#@#.ad-area:not(.text-ad) +kincho.co.jp,niji-gazo.com,videosad.net#@#.ad-block +ikkaku.net#@#.ad-bottom +job.inshokuten.com,sexgr.net,webbtelescope.org,websaver.ca#@#.ad-box:not(#ad-banner):not(:empty) +dbook.docomo.ne.jp,dmagazine.docomo.ne.jp#@#.ad-button +livedoorblogstyle.jp#@#.ad-center +newegg.com#@#.ad-click +backcar.fr,encuentra24.com,flat-ads.com,job.inshokuten.com#@#.ad-content +dbook.docomo.ne.jp,dmagazine.docomo.ne.jp#@#.ad-cover +wallpapers.com#@#.ad-enabled +nolotiro.org#@#.ad-hero +ogiharadevelopment.net#@#.ad-hint +wallpapers.com#@#.ad-holder +transparencyreport.google.com#@#.ad-icon +flat-ads.com,lastpass.com#@#.ad-img +docomo.ne.jp,hicbc.com#@#.ad-label +guloggratis.dk#@#.ad-links +escortsaffair.com#@#.ad-list-item +so-net.ne.jp#@#.ad-notice +so-net.ne.jp#@#.ad-outside +letroso.com#@#.ad-padding +cdn.m-78.jp#@#.ad-panel +nicoad.nicovideo.jp#@#.ad-point +tapahtumat.iijokiseutu.fi,tapahtumat.kaleva.fi,tapahtumat.koillissanomat.fi,tapahtumat.lapinkansa.fi,tapahtumat.pyhajokiseutu.fi,tapahtumat.raahenseutu.fi,tapahtumat.rantalakeus.fi,tapahtumat.siikajokilaakso.fi#@#.ad-popup +hulu.com#@#.ad-root +cermakfreshmarket.com,gov.uk,honor.com#@#.ad-section +wiki.fextralife.com#@#.ad-sidebar +wegotads.co.za#@#.ad-source +gqjapan.jp#@#.ad-stickyhero +gqjapan.jp#@#.ad-stickyhero--standard +gqjapan.jp#@#.ad-stickyhero-enable-mobile +job.inshokuten.com#@#.ad-title +gov.uk,videosalon.jp#@#.ad-widget +dailysportscar.com,honor.com#@#.ad-wrap:not(#google_ads_iframe_checktag) +lifeinvader.com,marginalreport.net,spanishdict.com,studentski-servis.com#@#.ad-wrapper +xda-developers.com#@#.ad-zone-container +wordparts.ru#@#.ad336 +leffatykki.com#@#.ad728x90 +cw.com.tw#@#.adActive +thoughtcatalog.com#@#.adChoicesLogo +dailymail.co.uk,namesecure.com#@#.adHolder +ikkaku.net#@#.adImg +hdfcbank.com#@#.adLink +seznam.cz#@#.adMiddle +aggeliestanea.gr,infotel.ca#@#.adResult +macys.com,news24.jp#@#.adText +burgerking.co.jp#@#.adWrap +iwakuni-fudosan.jp#@#.ad__item +clien.net,mediafire.com#@#.ad_banner +interior-hirade.co.jp#@#.ad_bg +softoxin.com,sozai-good.com#@#.ad_block +panarmenian.net#@#.ad_body +jabank-tokushima.or.jp,joins.com,jtbc.co.kr#@#.ad_bottom +takken-k.co.jp,zanmai.co.jp#@#.ad_box:not(.text-ad) +ienohikari.net#@#.ad_btn +m.nettiauto.com,m.nettikaravaani.com,m.nettikone.com,m.nettimoto.com,m.nettivaraosa.com,m.nettivene.com,nettimokki.com#@#.ad_caption +classy-online.jp,thelocal.at,thelocal.ch,thelocal.de,thelocal.dk,thelocal.es,thelocal.fr,thelocal.it,thelocal.no,thelocal.se#@#.ad_container +walkingclub.org.uk#@#.ad_div +admanager.line.biz#@#.ad_frame +modelhorseblab.com#@#.ad_global_header +myhouseabroad.com,njuskalo.hr,starbuy.sk.data10.websupport.sk#@#.ad_item +final-fantasy.cc#@#.ad_left +muzines.co.uk#@#.ad_main +jabank-tokushima.or.jp#@#.ad_middle +huffingtonpost.co.uk#@#.ad_spot +kpanews.co.kr#@#.ad_top +5chmm.jp#@#.adarea +genshinimpactcalculator.com#@#.adban +weatherwx.com#@#.adbutton +boots.com#@#.adcard +mediance.com#@#.adcenter +biologists.com,corsaires-paris.com#@#.adhesion:not(body) +indiatimes.com#@#.adhide +insomnia.gr,kingsinteriors.co.uk,w3e.kanazawa-it.ac.jp#@#.adlink +nejm.org#@#.adplaceholder +ascii.jp#@#.adrect +epawaweather.com#@#.adrow +gemini.yahoo.com#@#.ads +in.fo,moovitapp.com#@#.ads-banner +amtrak.com#@#.ads-block +amtrak.com#@#.ads-border +amtrak.com#@#.ads-box-border +bdsmlr.com#@#.ads-container +happyend.life#@#.ads-core-placer +ads.nipr.ac.jp,burzahrane.hr#@#.ads-header +heatware.com#@#.ads-image +t3.com#@#.ads-inline +miuithemers.com#@#.ads-left +hatenacorp.jp,milf300.com#@#.ads-link +forbes.com#@#.ads-loaded +fireload.com#@#.ads-mobile +fuse-box.info#@#.ads-row +juicesky.com#@#.ads-title +weddingbee.com#@#.ads-top +mastersclub.jp#@#.ads.widget +getwallpapers.com,wallpaperaccess.com,wallpaperbat.com,wallpapercosmos.com,wallpaperset.com#@#.ads1 +jw.org,smart-flash.jp#@#.adsBlock +cars.mitula.ae#@#.adsList +oogiri-chaya.com#@#.adsText +bilinovel.com#@#.ads_ad_box +bilinovel.com,linovelib.com#@#.ads_box +trustnet.com#@#.ads_right +search.conduit.com#@#.ads_wrapper +alluc.org#@#.adsbottombox +ifate.com,ycp.synk-casualgames.com#@#.adsbygoogle-noablate +copart.com#@#.adscontainer +starbike.com#@#.adsense_wrapper +live365.com#@#.adshome +javbix.com#@#.adsleft +cutepdf-editor.com#@#.adtable +gigazine.net#@#.adtag +kmsv.jp#@#.adtitle +brandexperience-group.com#@#.adv-banner +dobro.systems#@#.adv-box +dobro.systems#@#.adv-list +dobro.systems#@#.advBox +yuik.net#@#.advads-widget +bigcommerce.com#@#.advert-container +labartt.com#@#.advert-detail +jamesedition.com#@#.advert2 +rupors.com#@#.advertSlider +browsershots.org#@#.advert_list +zalora.co.id,zalora.co.th,zalora.com.hk,zalora.com.my,zalora.com.ph,zalora.com.tw,zalora.sg#@#.advertisement-block +adquick.com,buyout.pro,news.com.au,zlinked.com#@#.advertiser +anobii.com,ewahlen.eu#@#.advertisment +grist.org,ing.dk,version2.dk#@#.advertorial +stjornartidindi.is#@#.adverttext +videosalon.jp#@#.adwidget +staircase.pl#@#.adwords +consumerist.com#@#.after-post-ad +dailymail.co.uk,thisismoney.co.uk#@#.article-advert +deluxemusic.tv#@#.article_ad +adeam.com#@#.atf-wrapper +dr.dk#@#.banner-ad-container +popporn.com#@#.block-ad +shop.asobistore.jp#@#.block-sponsor +rspro.xyz#@#.body-top-ads +shanjinji.com#@#.bottom_ad +ixbtlabs.com#@#.bottom_ad_block +9l.pl#@#.boxAds +canonsupports.com#@#.box_ads +stuff.tv#@#.c-ad +thedigestweb.com#@#.c-ad-banner +rspro.xyz#@#.c-ads +deployhappiness.com,dmitrysotnikov.wordpress.com,faravirusi.com,freedom-shift.net,lovepanky.com,markekaizen.jp,netafull.net,photopoint.com.ua,posh-samples.com#@#.category-ad:not(html):not(body) +business-hack.net,clip.m-boso.net,iine-tachikawa.net,meihong.work#@#.category-ads:not(html):not(body) +studio55.fi#@#.column-ad +fontspace.com,skyrimcommands.com#@#.container-ads +verizonwireless.com#@#.contentAds +disk.yandex.by,disk.yandex.com,disk.yandex.kz,disk.yandex.ru,disk.yandex.uz,freevoipdeal.com,voipstunt.com,yadi.sk#@#.content_ads +adexchanger.com,gottabemobile.com,mrmoneymustache.com,thinkcomputers.org#@#.custom-ad +roomclip.jp#@#.display-ad +anime-japan.jp#@#.display_ad +humix.com#@#.ez-video-wrap +thestudentroom.co.uk#@#.fixed_ad +songlyrics.com#@#.footer-ad +megumi-jyosanin.com#@#.footer_ad +634929.jp,d-hosyo.co.jp#@#.footer_ads +rawstory.com#@#.full-ad +guloggratis.dk#@#.gallery-ad +davidsilverspares.co.uk#@#.greyAd +deep-edge.net,forums.digitalspy.com,marketwatch.com#@#.has-ad +si.com#@#.has-fixed-bottom-ad +infosecurity-magazine.com#@#.header-ad-row +megumi-jyosanin.com,mobiili.fi#@#.header_ad +iedrc.org#@#.home-ad +thelincolnite.co.uk#@#.inline-ad +ranking.sanrio.co.jp#@#.is-ad +elektro.info.pl,mashingup.jp#@#.is-sponsored +gizmodo.jp#@#.l-ad +vukajlija.com#@#.large-advert +realgfporn.com#@#.large-right-ad +smart-flash.jp#@#.leftAds +atea.com,ateadirect.com,knowyourmobile.com,nlk.org.np#@#.logo-ad +doda.jp,tubefilter.com#@#.mainAd +austurfrett.is,boards.4chan.org,boards.4channel.org#@#.middlead +thespruce.com#@#.mntl-leaderboard-spacer +sankei.com#@#.module_ad +msn.com#@#.native-ad +seura.fi,www.msn.com#@#.nativead +platform.liquidus.net#@#.nav_ad +dogva.com#@#.node-ad +cancam.jp#@#.overlay-ad +kagoya.jp#@#.p-ad +rottentomatoes.com#@#.page_ad +komplett.dk,komplett.no,komplett.se,komplettbedrift.no,komplettforetag.se,newegg.com#@#.product-ad +newegg.com#@#.product-ads +ebaumsworld.com#@#.promoAd +galaopublicidade.com#@#.publicidade +eneuro.org,jneurosci.org#@#.region-ad-top +offmoto.com#@#.reklama +smart-flash.jp#@#.rightAds +msn.com#@#.serversidenativead +audioholics.com,classy-online.jp#@#.side-ad +ekitan.com,kissanadu.com#@#.sidebar-ad:not(.adsbygoogle) +independent.com#@#.sidebar-ads +cadlinecommunity.co.uk#@#.sidebar_advert +proininews.gr#@#.small-ads +eh-ic.com#@#.small_ad +hebdenbridge.co.uk#@#.smallads +maps.walkingclub.org.uk#@#.sponsor-box +geekwire.com#@#.sponsor_post +zdnet.com#@#.sponsoredItem +flightaware.com#@#.sticky-footer-ad +kingsofchaos.com#@#.textad +wfmz.com#@#.tnt-dmp-reactive +iwakuni-fudosan.jp,k24tv.co.ke#@#.top-ad +pramborsfm.com#@#.top-ads +bibliaon.com#@#.top-banner-ad +cp24.com#@#.topAd +jabank-tokushima.or.jp#@#.top_ad +outinthepaddock.com.au#@#.topads +codedevstuff.blogspot.com,hassiweb-programming.blogspot.com#@#.vertical-ads +shootingillustrated.com#@#.video-ad-container +ads.google.com,youtube.com#@#.video-ads +javynow.com#@#.videos-ad +elnuevoherald.com,sacbee.com#@#.wps-player-wrap +gumtree.com.au,s.tabelog.com#@#[data-ad-name] +mebelcheap.ru#@#[data-adblockkey] +globsads.com#@#[href^="http://globsads.com/"] +mypillow.com#@#[href^="http://mypillow.com/"] > img +mypillow.com#@#[href^="http://www.mypillow.com/"] > img +mypatriotsupply.com#@#[href^="https://mypatriotsupply.com/"] > img +mypillow.com#@#[href^="https://mypillow.com/"] > img +mystore.com#@#[href^="https://mystore.com/"] > img +noqreport.com#@#[href^="https://noqreport.com/"] > img +sinisterdesign.net#@#[href^="https://secure.bmtmicro.com/servlets/"] +herbanomic.com#@#[href^="https://www.herbanomic.com/"] > img +techradar.com#@#[href^="https://www.hostg.xyz/aff_c"] +mypatriotsupply.com#@#[href^="https://www.mypatriotsupply.com/"] > img +mypillow.com#@#[href^="https://www.mypillow.com/"] > img +restoro.com#@#[href^="https://www.restoro.com/"] +zstacklife.com#@#[href^="https://zstacklife.com/"] img +amazon.com,faceyourmanga.com,isc2.org,liverc.com,mit.edu,muscatdaily.com,olx.pl,saitama-np.co.jp,timesofoman.com,virginaustralia.com#@#[id^="div-gpt-ad"] +revimedia.com#@#a[href*=".revimedia.com/"] +dr.dk,smartadserver.de#@#a[href*=".smartadserver.com"] +slickdeals.net#@#a[href*="adzerk.net"] +sweetdeals.com#@#a[href*="https://www.sweetdeals.com/"] img +legacy.com#@#a[href^="http://pubads.g.doubleclick.net/"] +canstar.com.au,mail.yahoo.com,trulia.com#@#a[href^="https://ad.doubleclick.net/"] +cars.com#@#a[href^="https://adclick.g.doubleclick.net/"] +badoinkvr.com#@#a[href^="https://badoinkvr.com/"] +xbdeals.net#@#a[href^="https://click.linksynergy.com/"] +naughtyamerica.com#@#a[href^="https://natour.naughtyamerica.com/track/"] +bookworld.no#@#a[href^="https://ndt5.net/"] +privateinternetaccess.com#@#a[href^="https://www.privateinternetaccess.com/"] +privateinternetaccess.com#@#a[href^="https://www.privateinternetaccess.com/"] > img +marcpapeghin.com#@#a[href^="https://www.sheetmusicplus.com/"][href*="?aff_id="] +politico.com#@#a[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"][target="_blank"] +heaven-burns-red.com#@#article.ad +play.google.com#@#div[aria-label="Ads"] +news.artnet.com,powernationtv.com,worldsurfleague.com#@#div[data-ad-targeting] +cookinglight.com#@#div[data-native_ad] +googleads.g.doubleclick.net,safeframe.googlesyndication.com#@#div[id^="ad_position_"] +out.com#@#div[id^="dfp-ad-"] +saitama-np.co.jp#@#div[id^="div-gpt-"] +xdpedia.com#@#div[id^="ezoic-pub-ad-"] +forums.overclockers.ru#@#div[id^="yandex_ad"] +!! invideo ad +si.com#@##mplayer-embed +click2houston.com,clickondetroit.com,clickorlando.com,ksat.com,news4jax.com,wsls.com#@#.ac-widget-placeholder +carbuzz.com,screenrant.com,xda-developers.com#@#.ad-current +carbuzz.com,screenrant.com#@#.ad-zone-container +screenrant.com,xda-developers.com#@#.adsninja-ad-zone +adamtheautomator.com,laurelberninteriors.com,mediaite.com,packhacker.com,packinsider.com#@#.adthrive +mediaite.com,packhacker.com,packinsider.com#@#.adthrive-content +laurelberninteriors.com,mediaite.com,packhacker.com,packinsider.com#@#.adthrive-video-player +click2houston.com,clickondetroit.com,clickorlando.com,ksat.com,news4jax.com,wsls.com#@#.anyClipWrapper +accuweather.com,cheddar.tv,deadline.com,elnuevoherald.com,heraldsun.com,olhardigital.com.br,tvinsider.com#@#.cnx-player-wrapper +huffpost.com#@#.connatix-wrapper +gbnews.com#@#.primis-wrapper +carbuzz.com,screenrant.com#@#.w-adsninja-video-player +!! ins.adsbygoogle +advancedrenamer.com,androidrepublic.org,anonymousemail.me,apkmirror.com,cdromance.com,demos.krajee.com,epicbundle.com,korail.pe.kr,nextbigtrade.com,phcorner.net,pixiz.com,skmedix.pl,spoilertv.com,willyoupressthebutton.com#@#ins.adsbygoogle[data-ad-client] +advancedrenamer.com,androidrepublic.org,anonymousemail.me,apkmirror.com,cdromance.com,demos.krajee.com,epicbundle.com,korail.pe.kr,nextbigtrade.com,phcorner.net,pixiz.com,skmedix.pl,spoilertv.com,willyoupressthebutton.com#@#ins.adsbygoogle[data-ad-slot] +!! .adslot +apkmirror.com,tuxpi.com#@#.adslot +!! .adverts +bavaria86.com,ransquawk.com,tf2r.com,trh.sk#@#.adverts +! webike domains, fix broken page +japan-webike.be,japan-webike.ca,japan-webike.ch,japan-webike.dk,japan-webike.ie,japan-webike.it,japan-webike.kr,japan-webike.nl,japan-webike.se,webike-china.cn,webike.ae,webike.co.at,webike.co.hu,webike.co.il,webike.co.uk,webike.com.ar,webike.com.bd,webike.com.gr,webike.com.kh,webike.com.mm,webike.com.ru,webike.com.tr,webike.com.ua,webike.cz,webike.de,webike.es,webike.fi,webike.fr,webike.hk,webike.id,webike.in,webike.la,webike.mt,webike.mx,webike.my,webike.net,webike.net.br,webike.net.pl,webike.ng,webike.no,webike.nz,webike.ph,webike.pk,webike.pt,webike.sg,webike.tw#@#.ad_box:not(.text-ad) +japan-webike.be,japan-webike.ca,japan-webike.ch,japan-webike.dk,japan-webike.ie,japan-webike.it,japan-webike.kr,japan-webike.nl,japan-webike.se,webike-china.cn,webike.ae,webike.co.at,webike.co.hu,webike.co.il,webike.co.uk,webike.com.ar,webike.com.bd,webike.com.gr,webike.com.kh,webike.com.mm,webike.com.ru,webike.com.tr,webike.com.ua,webike.cz,webike.de,webike.es,webike.fi,webike.fr,webike.hk,webike.id,webike.in,webike.la,webike.mt,webike.mx,webike.my,webike.net,webike.net.br,webike.net.pl,webike.ng,webike.no,webike.nz,webike.ph,webike.pk,webike.pt,webike.sg,webike.tw#@#.ad_title +! Anti-Adblock +spoilertv.com#@##adsensewide +lagruyere.ch#@##adv-top +embed.wcostream.com#@#.ad-unit +browsershots.org#@#.advert_area +!---------------------------Third-party advertisers---------------------------! +! *** easylist:easylist/easylist_adservers.txt *** +||000491b06a.com^ +||0019x.com^ +||00427011ae.com^ +||00609c257b.com^ +||00a39e6dfd.com^ +||00a4722597.com^ +||00e2120672.com^ +||01168nl.com^ +||015ea24446.com^ +||01counter.com^ +||0213499675.com^ +||02228640b9.com^ +||0246cba9d4.com^ +||024e3caef2.com^ +||0256d2ea99.com^ +||029519cbdc.com^ +||02e4a0ea60.com^ +||02e8b93f0e.com^ +||033586410b.com^ +||0339586393.com^ +||03850de51d.com^ +||039858f297.com^ +||03h6fpes.xyz^ +||048f3c0516.com^ +||050393f4ec.com^ +||05086715f4.com^ +||0517fd5e92.com^ +||054ii.com^ +||058d79990c.com^ +||05b9daf35c.com^ +||05e4bd1819.com^ +||05f3b6b187.com^ +||0628ba07b4.com^ +||066b7e895c.com^ +||067f87da09.com^ +||06aa7d6d80.com^ +||06e6611fca.com^ +||06f864e06a.com^ +||070880.com^ +||07b5ec4fa6.com^ +||0832fddfc8.com^ +||08675bd78b.com^ +||087f389ba8.com^ +||0880559526.com^ +||08d59ed715.com^ +||08e4efb6b8.com^ +||091kdjn7.xyz^ +||09241190c8.com^ +||0924201a0b.com^ +||0937562748.com^ +||094kk.com^ +||0980b6e8fe.com^ +||098d7a8fec.com^ +||09e07385f6.com^ +||09qin0pc.xyz^ +||0a8de3ea12.com^ +||0af2a962b0102942d9a7df351b20be55.com^ +||0aior18v.xyz^ +||0b74655a28.com^ +||0b8c767b16.com^ +||0bd18cc899.com^ +||0c2bddd1f6.com^ +||0ca389b6d3.com^ +||0ca5b8dbfd.com^ +||0cf.io^ +||0d22ca5caa.com^ +||0d25b79bea.com^ +||0d4svwc7.xyz^ +||0d9063412c.com^ +||0d9539106a.com^ +||0e024d23f9.com^ +||0e176a58eb.com^ +||0e4a4c9e4e.com^ +||0emn.com^ +||0f857e584a.com^ +||0fa6d5f434.com^ +||0ff34e8ab8.com^ +||0fmm.com^ +||0gw7e6s3wrao9y3q.pro^ +||0i0i0i0.com^ +||0sntp7dnrr.com^ +||0sywjs4r1x.com^ +||0vtx1gfc.xyz^ +||0x01n2ptpuz3.com^ +||0zj2a0bg.xyz^ +||100execution.com^ +||101m3.com^ +||10242systems.com^ +||103092804.com^ +||104processors.net^ +||1090pjopm.de^ +||10dc04504e.com^ +||10desires.com^ +||10f55ab5ed.com^ +||10f8fc8a55.com^ +||10q6e9ne5.de^ +||10sn95to9.de^ +||11004potential.net^ +||1102transfer.net^ +||110outambitious.net^ +||11112door.net^ +||1111runtime.com^ +||1193d6426d.com^ +||119dbc9238.com^ +||11b5e84fb9.com^ +||11df2f7d8d.com^ +||11g1ip22h.de^ +||11policy.net^ +||11ssq.com^ +||12090cd892.com^ +||12112336.pix-cdn.org^ +||1214interface.com^ +||121basic.com^ +||121macro.com^ +||121synapse.net^ +||1233130091.com^ +||124d138eac.com^ +||124technologies.net^ +||125700.shop^ +||127e2202ec.com^ +||12b500858d.com^ +||12ezo5v60.com^ +||12ibwu84fqxcti.rest^ +||12xlwin4m.com^ +||130gelh8q.de^ +||132delta.net^ +||13372product.net^ +||1337visualize.net^ +||1338f95c76.com^ +||134f65414c.com^ +||13728c1810.com^ +||137kfj65k.de^ +||138d93d65a.com^ +||13fbbc0ff4.com^ +||13p76nnir.de^ +||144a54939d.com^ +||149b5a6b84.com^ +||14cpoff22.de^ +||14d6b84a5f.com^ +||14f768ef60.com^ +||14fefmsjd.de^ +||14i8trbbx4.com^ +||14k4.com^ +||150791bf69.com^ +||153c349024.com^ +||153ee57fd4.com^ +||158e65a1db.com^ +||15946bfe8d.com^ +||15oil.net^ +||16425bafe4.com^ +||1668420cbb.com^ +||167999d759.com^ +||16c1717207.com^ +||16ca8cd3e5.com^ +||16hydrtix.com^ +||16iis7i2p.de^ +||16outdelta.com^ +||16pr72tb5.de^ +||16rmn5qbknrrnv1izg8r1r5e.rest^ +||172769f118.com^ +||17324723.cfd^ +||17c2791ec2.com^ +||17ce57fe70.com^ +||17co2k5a.de^ +||17do048qm.de^ +||17enterprise.com^ +||17loio.net^ +||17t6rngx32f7gy.cfd^ +||181m2fscr.de^ +||18269nfh164q6ofq39re1.rest^ +||184c4i95p.de^ +||1857db6b77.com^ +||186494d0e1.com^ +||18651885bc.com^ +||18aa7dae85.com^ +||18cc51d1fb.com^ +||18de296468.com^ +||18e86316dc.com^ +||18tlm4jee.de^ +||18tocapture.com^ +||18zkj1qlruj79oyq63f6w.cfd^ +||19515bia.de^ +||197c4632ea.com^ +||198b531aae.com^ +||199g9kegveh84rllz.cfd^ +||19uugz4crqucw23qqvzwl53.cfd^ +||19vnyxxp611kxbhqm.cfd^ +||1a0b76c793.com^ +||1a8f9rq9c.de^ +||1aacb6bb9f.com^ +||1aqi93ml4.de^ +||1asb.com^ +||1ato.com^ +||1b3tmfcbq.de^ +||1b79f1c808.com^ +||1b87094b09.com^ +||1b9e934cbd.com^ +||1bb4f2018f.com^ +||1bc1au5l.xyz^ +||1be953d1cc.com^ +||1betandgonow.com^ +||1bm3n8sld.de^ +||1bots.top^ +||1bx3a4s2.xyz^ +||1c53c42275.com^ +||1c5f1htu9fzkbx8j.cfd^ +||1c6fd11ca2.com^ +||1ccbt.com^ +||1cctcm1gq.de^ +||1cd21cb1e4.com^ +||1cett832to6qven.cfd^ +||1ckbfk08k.de^ +||1cv9wms6.xyz^ +||1d0a4a935b.com^ +||1d22c41079.com^ +||1d473a90d9.com^ +||1db9fede5f.com^ +||1dtdsln1j.de^ +||1e03d2091a.com^ +||1e93lqg1eb8gj7r65i.cfd^ +||1ep.co^ +||1ep2l1253.de^ +||1f3912cb04.com^ +||1fa25f6cc1.com^ +||1fd27fc99f.com^ +||1fd92n6t8.de^ +||1fims.com^ +||1fwjpdwguvqs.com^ +||1g46ls536.de^ +||1gbjadpsq.de^ +||1gcoq6xyhbukne965t4zwiy753pv9cp51.cfd^ +||1ghkxir44t4qvf3.cfd^ +||1gqh7qw8hii19koi.cfd^ +||1gx255qh4mkxt3hqv1e.cfd^ +||1hkmr7jb0.de^ +||1i8c0f11.de^ +||1ibh8q6m1qfn62gk7c7.rest^ +||1igare0jn.de^ +||1igzn4xcl7fne6b.cfd^ +||1inplatforms.net^ +||1instances.com^ +||1itot7tm.de^ +||1j5syuz0.xyz^ +||1j771bhgi.de^ +||1jpbh5iht.de^ +||1k0ed0c7.xyz^ +||1kb6v95fb8vbum2zkw5ex1vfkhp25nvz3g3bu2v.cfd^ +||1kgbkitcpp2togy.cfd^ +||1knhg4mmq.de^ +||1lbk62l5c.de^ +||1lj11b2ii.de^ +||1m72cfole.de^ +||1mhr8byixlc864.cfd^ +||1mrmsp0ki.de^ +||1n549unzn1c8etzgjeoe.cfd^ +||1nfltpsbk.de^ +||1nimo.com^ +||1nipw1pr8q55yl57.cfd^ +||1nqrqa.de^ +||1ns1rosb.de^ +||1nv2n5iq9jxhevy.cfd^ +||1odi7j43c.de^ +||1on56nkjbu3gx432gz9.cfd^ +||1osb.com^ +||1p8ln1dtr.de^ +||1pqfa71mc.de^ +||1push.io^ +||1qgxtxd2n.com^ +||1r4g65b63.de^ +||1rx.io^ +||1rxntv.io^ +||1s1r7hr1k.de^ +||1sqfobn52.de^ +||1tds26q95.de^ +||1ts03.top^ +||1ts07.top^ +||1ts17.top^ +||1ts19.top^ +||1uy3yq8x8oq3wlbnw1vbw36.cfd^ +||1w1yhg23m2kzp4v.cfd^ +||1web.me^ +||1wlg1691l49wnu.rest^ +||1zce4c62iw8wfn.cfd^ +||1ztnk2kihgfjwbm.rest^ +||1zxn1j7iyc9w6bwmv7t.rest^ +||2-05.com^ +||20002permission.net^ +||2000outtechnologies.net^ +||2001functions.com^ +||2001plugins.net^ +||2002services.com^ +||201outexecutors.com^ +||2020claroix.com^ +||2020dravia.com^ +||2020mustang.com^ +||2021insync.com^ +||2022frezoid.com^ +||2022welcome.com^ +||2024jphatomenesys36.top^ +||2026fusion.net^ +||2026services.com^ +||202warehouses.net^ +||2048executors.com^ +||2048hydreo.net^ +||2048instances.com^ +||206ads.com^ +||20dollars2surf.com^ +||20l2ldrn2.de^ +||20rm.com^ +||20tracks.com^ +||215a043303.com^ +||2161a5a416.com^ +||218emo1t.de^ +||21a3ff363a.com^ +||21cup.net^ +||21f5f01ad3.com^ +||21hn4b64m.de^ +||21sexturycash.com^ +||21toindustries.net^ +||21wiz.com^ +||220withegress.com^ +||2212socket.com^ +||222764f169.com^ +||222brixlix.com^ +||2250c8daae.com^ +||22523e8ad1.com^ +||22712af0b1.com^ +||22b664d9ce.com^ +||22blqkmkg.de^ +||22hgc.com^ +||22i5m1khi17ki6.cfd^ +||22kolrqjyr15835g.cfd^ +||22lmsi1t5.de^ +||22media.world^ +||22outplatforms.com^ +||22qt1c4n.xyz^ +||22yy6.com^ +||233to23o1ojfpyhiq.cfd^ +||23axinix.com^ +||23cnbki86kcucginel3ztmnx.rest^ +||23hssicm9.de^ +||24-sportnews.com^ +||2449march2024.com^ +||244kecmb3.de^ +||245a48ff80.com^ +||2463april2024.com^ +||2465april2024.com^ +||2467april2024.com^ +||2469april2024.com^ +||246itv6t75xnbf.rest^ +||246ri5pww723uve13mx8r1qfqu8z78.cfd^ +||2471hicttoikx3eerhq7ufn198.cfd^ +||2475april2024.com^ +||2477april2024.com^ +||2479april2024.com^ +||247bin.net^ +||2481april2024.com^ +||2483may2024.com^ +||2485may2024.com^ +||2489may2024.com^ +||2491may2024.com^ +||2493may2024.com^ +||2495may2024.com^ +||2497may2024.com^ +||2499may2024.com^ +||24affiliates.com^ +||24df4bd648.com^ +||24epkcbizgfbyrljxe6kxqectr.cfd^ +||24f591696zn3xyv46wrj.cfd^ +||24newstech.com^ +||24replicas.net^ +||24s1b0et1.de^ +||24x7adservice.com^ +||2501may2024.com^ +||250f0ma86.de^ +||250systems.net^ +||250withinnovations.net^ +||2514june2024.com^ +||2516june2024.com^ +||2520june2024.com^ +||254a.com^ +||25710b5d95.com^ +||25obpfr.de^ +||25solutions.net^ +||2601e2d1ea.com^ +||262bdc3a5d.com^ +||2639iqjkl.de^ +||264b0a99f6.com^ +||266o97nhwfw3nt.rest^ +||26e8841da4.com^ +||26q4nn691.de^ +||26x31rj18tx2im43.rest^ +||27352a740a.com^ +||2759c90491.com^ +||27aa17ec94.com^ +||27bad22e4a.com^ +||27igqr8b.de^ +||27pgck2eqzc7it.cfd^ +||27qhxh4wmcrhcf.cfd^ +||2830022a41.com^ +||2837e2d3e4.com^ +||2838a86e6c.com^ +||2878644238.com^ +||28a0578796.com^ +||28cb84740b.com^ +||28f810077f.com^ +||28oojtf2zwlt4qqec7ifwx5i.cfd^ +||28zqnq9cwko3t79e.rest^ +||291hkcido.de^ +||2997fa5a20.com^ +||29apfjmg2.de^ +||29s55bf2.de^ +||29xwbi3n5tm6qptvw7j2.cfd^ +||2a2k3aom6.de^ +||2a4snhmtm.de^ +||2a7d908472.com^ +||2a9a3a8442.com^ +||2aa502e2fe.com^ +||2aefgbf.de^ +||2b178ee32a.com^ +||2b91f59493.com^ +||2b94vykm41cxve31k.cfd^ +||2ba0f6361c.com^ +||2bilxr9lu9pr1w3ctofg4xrgje9r.cfd^ +||2bm37r6cgeq5r32y3j.cfd^ +||2bps53igop02.com^ +||2c2iyxgwp64t4t9b8mhkm.cfd^ +||2c3883cf63.com^ +||2c4b614013.com^ +||2c4rrl8pe.de^ +||2ch-d.fun^ +||2cjlj3c15.de^ +||2cnjuh34jbman.com^ +||2cnjuh34jbstar.com^ +||2d6g0ag5l.de^ +||2d86bbe43f.com^ +||2dbfd83dac.com^ +||2dfdea8c5a.com^ +||2e68bd0a8b.com^ +||2ee9804d02.com^ +||2eq7joxwcg258l.cfd^ +||2f3747e327.com^ +||2f44166f35.com^ +||2fb8or7ai.de^ +||2ff08844f2.com^ +||2fgrrc9t0.de^ +||2fnptjci.de^ +||2fyzxp40.xyz^ +||2g2kaa598.de^ +||2gg6ebbhh.de^ +||2gnc.com^ +||2gux4l7q2lrmef1z.cfd^ +||2h4els889.com^ +||2h6skj2da.de^ +||2hm3yqe4xf2hbvugeve4ec57fo.cfd^ +||2hpb1i5th.de^ +||2i30i8h6i.de^ +||2i4ufi5fjk9t8k.cfd^ +||2i6y531km3xe79fvrny1xciuc.cfd^ +||2i87bpcbf.de^ +||2iiyrxk0.com^ +||2imon4qar.de^ +||2j9xi6ztt6vr4fo7477.cfd^ +||2jmis11eq.de^ +||2jod3cl3j.de^ +||2jwpfkl7kw5evxu.cfd^ +||2k6eh90gs.de^ +||2kb8co7v6kejm7.cfd^ +||2kn40j226.de^ +||2kx16mi9yjo1inympq5j4ku.cfd^ +||2linkpath.com^ +||2lqcd8s9.de^ +||2m3gdt0gc.de^ +||2m4r7ity5128z5kw.cfd^ +||2m55gqleg.de^ +||2m6q8xmk6zykqehuli.cfd^ +||2mf9kkbhab31.com^ +||2mg2ibr6b.de^ +||2mke5l187.de^ +||2mo3neop.de^ +||2mpx9wr2u7ikinehxtngk1.cfd^ +||2nhlu4qwkxuvhnfbowzn8iwzl67i.rest^ +||2nn7r6bh1.de^ +||2nqmub5hzuxm4prm.cfd^ +||2olyjbvcxc7ck38ken7bgg7jj.cfd^ +||2om93s33n.de^ +||2onq7kwbrfjbjv65.cfd^ +||2p1kreiqg.de^ +||2p6tqu3qeurmf4lezm.cfd^ +||2pc6q54ga.de^ +||2qh7mtw6yglvxnpc6pcm.cfd^ +||2qj7mq3w4uxe.com^ +||2qkh3nbvi7y9xhoy.cfd^ +||2rb5hh5t6.de^ +||2re6rpip2.de^ +||2rlgdkf7s.de^ +||2rmifan7n.de^ +||2s2enegt0.de^ +||2smarttracker.com^ +||2spdo6g9h.de^ +||2t4f7g9a.de^ +||2ta5l5rc0.de^ +||2tfg9bo2i.de^ +||2tk74zbwj5h394.cfd^ +||2tlc698ma.de^ +||2tq7pgs0f.de^ +||2track.info^ +||2ts55ek00.de^ +||2u1oucjq9cork3.cfd^ +||2u1z7qmjvy1covuwg2rxkj3.cfd^ +||2vnrjqgl6jlmf3.cfd^ +||2x9ezrw7vuhqco.cfd^ +||2xeibjlqyxu8m4zq7lob3qyknpl2.cfd^ +||2ykz4plj.xyz^ +||2yrlx4lem82wqehq.cfd^ +||2z1bu5for5z7qx.cfd^ +||2z1fxurtnx1i18bln.cfd^ +||2zxm2pb3q38m2k.cfd^ +||3000fromenterprises.net^ +||300daytravel.com^ +||300statistics.net^ +||301redirect.site^ +||302396f6ae.com^ +||302kslgdl.de^ +||30304federation.net^ +||303ag0nc7.de^ +||303bus.net^ +||303marketplace.com^ +||303reliable.net^ +||307i6i7do.de^ +||30986g8ab.de^ +||30c774812d.com^ +||30d5shnjq.de^ +||30dcf.com^ +||30hccor10.de^ +||30inwarehouses.com^ +||30koqnlks.de^ +||30m4hpei1.de^ +||30p70ar8m.de^ +||30pk41r1i.de^ +||30se9p8a0.de^ +||30statistics.net^ +||30tgh64jp.de^ +||3100056af7.com^ +||31022fabaa.com^ +||3115a9099e.com^ +||311factories.net^ +||311ingreenhouse.com^ +||3120jpllh.de^ +||314gqd3es.de^ +||316feq0nc.de^ +||317796hmh.de^ +||318pmmtrp.de^ +||3192a7tqk.de^ +||31ab988f3b.com^ +||31aceidfj.de^ +||31aqn13o6.de^ +||31b0f03f5b.com^ +||31bqljnla.de^ +||31cm5fq78.de^ +||31d6gphkr.de^ +||31daa5lnq.de^ +||31def61c3.de^ +||31fbcecdf2.com^ +||31o0jl63.de^ +||31outsystems.net^ +||320style.com^ +||320toservices.com^ +||3258994ce4.com^ +||3284wyicjlpg1gb5.cfd^ +||32xb78gnbn86jkvx.cfd^ +||332hike.com^ +||3333withfox.net^ +||333fromcustom.com^ +||33747538f3.com^ +||3399beca29.com^ +||33apk.com^ +||33elevation.net^ +||33ewu7kr.xyz^ +||33f6zczi4x83l3n3.cfd^ +||33fd1ab248.com^ +||33fromsource.net^ +||33services.net^ +||33ssl.com^ +||34-new-lambda.net^ +||3434849c2e.com^ +||34d04ccb2e.com^ +||34f14f395e.com^ +||34vyxxb3rnnxnwq2x.rest^ +||34w1xmik.xyz^ +||350fromsolar.com^ +||352396e005.com^ +||3582c977a8.com^ +||35jh3kue65rib8.cfd^ +||360degreesprojects.com^ +||360fromcrypto.net^ +||360hyperspace.com^ +||360protected.com^ +||360yield.com^ +||36613u6zuw13fb.cfd^ +||367p.com^ +||3696a16444.com^ +||36ubw2hl9z3y5lf62nh35nw1.cfd^ +||371pqx75ljkp8rn4g9ycyj97p2pr676u39xxi.cfd^ +||37b3eaaf9a.com^ +||37console.com^ +||381iiejz6hn4lf.cfd^ +||382be190f4.com^ +||38458bd578.com^ +||384b0a562f.com^ +||38716dc244.com^ +||38ds89f8.de^ +||38ingress.com^ +||38zho9oz9zpfrclr8pbkpl57vj9fy56.cfd^ +||39762581b7.com^ +||3999f86b91.com^ +||39e6p9p7.de^ +||3a3df91b05.com^ +||3ae7054c01.com^ +||3af72b9c4c.com^ +||3b2e3a2588.com^ +||3b4ejm44q7vwi5be.rest^ +||3b9it19c3yolijmetlj5vh9bqg.cfd^ +||3ba1e5d478.com^ +||3cd03be731.com^ +||3cm2wf4yqi3eh3hezwibjlr77c.rest^ +||3d358eca33.com^ +||3d7b481b4d.com^ +||3ee925749f.com^ +||3eumf3hoymrlw5ocmobw1g5gxch7m3uk46o3.cfd^ +||3f47f5f38f.com^ +||3f8b0b3559.com^ +||3fentwukcn8wnit62k.cfd^ +||3g25ko2.de^ +||3gbqdci2.de^ +||3h4f2h8rziloe3.cfd^ +||3h4jh45l96127e6.rest^ +||3igkj2jeix2q4l.rest^ +||3iynb949cfrurtvhvm6gf59.cfd^ +||3j8c56p9.de^ +||3jev49bjrmnzrff55yyntr1j7lqfgy.cfd^ +||3l26385fiv11kvyo.cfd^ +||3lift.com^ +||3lp5jbwp4ep5oh9x.cfd^ +||3mads.com^ +||3mpyzm6w5fi5yln76ng5kw.cfd^ +||3myad.com^ +||3n2hf8kzowuur654mb.cfd^ +||3nbf4.com^ +||3ng6p6m0.de^ +||3pkf5m0gd.com^ +||3qb2n7f295oyw18wukv6t.rest^ +||3qfe1gfa.de^ +||3r5xxmp421rnkqwhowj.cfd^ +||3rw0usds.xyz^ +||3tcrzmb1pvwo86m.cfd^ +||3u3ymbqj.xyz^ +||3uv4e4ozrekc56zx1jjwfbugpq1i275.cfd^ +||3uyo22q87l653qqj4wvi.cfd^ +||3ve8tk6lpz1k5fz4z.cfd^ +||3w27zp7ohnzouxyguckyy.rest^ +||3wr110.net^ +||3wwhmhwojqmz838fpi8ubijuncnhkk.cfd^ +||3zji9h143hr1w15yv.cfd^ +||3znoji162fuxp71whii.cfd^ +||4000outinstruments.net^ +||4000statistics.com^ +||4000toinstruments.net^ +||4004outstatistics.net^ +||400withcase.com^ +||403f258ef0.com^ +||4096fromcobalt.net^ +||40ceexln7929.com^ +||40eb87c767.com^ +||40fromfrontend.net^ +||40voxia.net^ +||4171ea7508.com^ +||41hckkm9.xyz^ +||41terraen.net^ +||420vyara.net^ +||42299b10ef.com^ +||42c978b2c6.com^ +||42jdbcb.de^ +||42ltelq45mm7pkyq5f9beb.cfd^ +||430tovision.net^ +||43429a7552.com^ +||434fc6fff7.com^ +||4373ab4d71.com^ +||43982bf480.com^ +||439f4b8c75.com^ +||43b0d022d5.com^ +||43df81ab37.com^ +||43ors1osh.com^ +||43t53c9e.de^ +||43vxbiffnu5y1k.cfd^ +||43xi7958mmhf8rf.cfd^ +||440emit.net^ +||44216f3fdf.com^ +||4444insettings.net^ +||444inexecutors.com^ +||44jaxura.net^ +||44k57nrqbqrlgq8mgqqhrux4c3m.cfd^ +||45052386ab.com^ +||45151e7d7c.com^ +||452tapgn.de^ +||4536e19398.com^ +||459b6951ca.com^ +||45b58980d0.com^ +||45tjghnuibkifpbc8.cfd^ +||45ubkhc4reuhu9j2ri2.cfd^ +||460clarero.net^ +||460functions.net^ +||463v4yvm73x2ru.rest^ +||4690y10pvpq8.com^ +||46fjf4eyc6f4f9v7.rest^ +||47c50e31a9.com^ +||47txg6pezhmbzeyb8k4gze.rest^ +||480executors.net^ +||481516ca1d.com^ +||482e528949.com^ +||484l.com^ +||48b4z7u23w7824.cfd^ +||48d368a6f7.com^ +||492plugins.com^ +||492tracker.net^ +||49a15e8b76.com^ +||49cwxbn4ujhzw94927bpxno749.cfd^ +||49toactivate.net^ +||4a4ac32960.com^ +||4a68b41d1f.com^ +||4ac38e317e.com^ +||4armn.com^ +||4b250936aa.com^ +||4b54db1488.com^ +||4ba48a7822.com^ +||4c32ecfead.com^ +||4c35d6c7f6.com^ +||4c484cefc8.com^ +||4c81b78eca.com^ +||4co7mbsb.de^ +||4cz7ypl3.xyz^ +||4dex.io^ +||4dsbanner.net^ +||4dtrk.com^ +||4e2b1e6942.com^ +||4e35c093c9.com^ +||4e5902f95e.com^ +||4epekgfpjyut6iviypfkhoth63.cfd^ +||4f2sm1y1ss.com^ +||4f31c6ef07.com^ +||4f9owkfrreiey78.cfd^ +||4fee6d013f.com^ +||4fw4gtgnyfpq7cye9k25k8c.cfd^ +||4g0b1inr.de^ +||4hjiic33j1ovqvz1.cfd^ +||4htpt287i7xmceyy7fffqligkptwk.cfd^ +||4i3u8ncfz7ygmew8.cfd^ +||4iw7gbmv757zm59k7wfhn5.cfd^ +||4k761wkepx1nux7zfnoppbf.cfd^ +||4lzp96zzyenhkrqbe.cfd^ +||4m699981v33emw4e9m1jkrnubtq87gzvjvm.rest^ +||4mxmfuf6q2gx5fthb9myujbnp.cfd^ +||4nkpg756vvh6tq.cfd^ +||4p74i5b6.de^ +||4pnoo6qi5f2x9zzmrouxhmeo.cfd^ +||4r67xomxbqlxbueg739n38f65uhmwcxfy2o.cfd^ +||4rabettraff.com^ +||4tdmwljd.xyz^ +||4tvygm27ym4g1w.cfd^ +||4uhyrmy9yebcj2.cfd^ +||4urrobfjygm9mnwyt.cfd^ +||4v3o2g9wi249p94k86kzwok6vqbn.rest^ +||4vfrjbghb85rv8q7wqwyumckgu478u3p1.cfd^ +||4vn6y527c4mmvi1t53z9n.cfd^ +||4vtnynyhmjlf5r5u7.cfd^ +||4wnetwork.com^ +||4ymelnq32g8yb5e7un8.cfd^ +||5000systems.net^ +||5001hybrid.net^ +||5008677d85.com^ +||500outenterprises.net^ +||503astraica.com^ +||50d46dda05.com^ +||50e7f2cef8.com^ +||50services.net^ +||5101c555fc.com^ +||510a62f1a2.com^ +||5112rjcpq1nh4n.rest^ +||51344d90e9.com^ +||514d937233.com^ +||514df5b14c.com^ +||5183078ff8.com^ +||51f7cf32cd.com^ +||51t64xheonig4f8.cfd^ +||520outresource.net^ +||526d43cc6c.com^ +||527tollv.xyz^ +||528b4dabec.com^ +||528fmqjpb14ixmq5o.cfd^ +||52992ea523.com^ +||52dispatch.com^ +||52tw7wv9p5hfvwzltrwlr.cfd^ +||5308675c79.com^ +||5355b252cf.com^ +||538b2f9b26.com^ +||5394aeb3d4.com^ +||539daa1a50.com^ +||53c2dtzsj7t1.top^ +||53ed6897af.com^ +||53f0bbe95a.com^ +||53tgo97125cu66.cfd^ +||540f8cca2b.com^ +||5475a282b8.com^ +||5555voltaara.com^ +||555aeroon.net^ +||555cee77d3.com^ +||555frombinary.com^ +||55eebe8585.com^ +||55yy56n7p2ug15lrwz.cfd^ +||5608c7633c.com^ +||5692y28yxgtwmj7qkc9tnnlmrg5iyu.cfd^ +||56ad42c3a8.com^ +||56bfc388bf12.com^ +||56ebl651j6t43r.cfd^ +||56rt2692.de^ +||56voxor.net^ +||570dad652f.com^ +||57352d918d.com^ +||5761b6af55.com^ +||57703b28d4.com^ +||57f6508c2d.com^ +||57fkwr1lhmvriek3hmwiww6.rest^ +||57hh2n2kv573j34hok.rest^ +||5812afc7cb.com^ +||588376732a.com^ +||590578zugbr8.com^ +||5978ef8c9a.com^ +||59clouou2n4jmm8xc.cfd^ +||59gfm38j21ohoq8ugl831hrltiibq.cfd^ +||59haloar.net^ +||59o17xpbhrzxj3.cfd^ +||5a8a1b39d4.com^ +||5ac36d146b.com^ +||5advertise.com^ +||5bb66f161d.com^ +||5bd3cec305.com^ +||5bf6m8tye77hw7nmzrgl.rest^ +||5bs4y5e7.xyz^ +||5btekl14.de^ +||5c536d71ba.com^ +||5c57xmiu7zmb9857ecqgmn9qqjmbq6o6.cfd^ +||5cb79f17b9.com^ +||5cce075996.com^ +||5d1c052a11.com^ +||5d32q.com^ +||5d5e0ea8b7.com^ +||5e1jng5u4lfi5i9qqi.rest^ +||5f242f7db1.com^ +||5f6dmzflgqso.com^ +||5fet4fni.de^ +||5golpi5pgvux1i22f.cfd^ +||5gvci.com^ +||5h3oyhv838.com^ +||5hz37vje774zkcwwqkok.cfd^ +||5icim50.de^ +||5ivy3ikkt.com^ +||5jvc6fp55m3txovvnrt67ic1.cfd^ +||5kj9ve1k8wv9qxp76y8i2yz.cfd^ +||5kov1f2o.xyz^ +||5krwtnpvgn2o3e.cfd^ +||5lbbq16enzo9xlqckkln.rest^ +||5leosgto.xyz^ +||5licfbo4p7k4hmcti5j.cfd^ +||5ln2vl94rl576p39t7xe.cfd^ +||5ln8prv627lx2zlk55gq97.rest^ +||5lz3n3y4ztroby.cfd^ +||5mn7cf73.xyz^ +||5nfc.net^ +||5nt1gx7o57.com^ +||5ntikb83gxc48t.cfd^ +||5o8aj5nt.de^ +||5olcvqmqp71qqy.rest^ +||5pi13h3q.de^ +||5platforms.net^ +||5qryjrx3.xyz^ +||5qvjw9kq4lb5tevv26g.cfd^ +||5tgu3ey88wuq121qxbw6.cfd^ +||5toft8or7on8tt.com^ +||5tukn694h3byqj.cfd^ +||5tw3p5lnmlxkxcwmw9zwfcl12c6ll2q.cfd^ +||5v31qtn1q5opjemq8o5b9q4.cfd^ +||5vbs96dea.com^ +||5vpbnbkiey24.com^ +||5w8v8395iej8n4jwefgm.cfd^ +||5z35ikghjnh7zry1vxn2l619b49ug9b7.cfd^ +||5zk5z2vzxh9e1fwh1h55275nxcx.cfd^ +||6-partner.com^ +||6000brixtix.com^ +||6000function.com^ +||6000nexeo.com^ +||600977f9ec.com^ +||600fiber.net^ +||600network.com^ +||600rexola.net^ +||600z.com^ +||603b61d91d.com^ +||6060instruments.net^ +||606f307b0e.com^ +||60ah.com^ +||61011fc558.com^ +||612fc22a02.com^ +||613f15a070.com^ +||61847b1398.com^ +||61buor.net^ +||61edd03ae1.com^ +||61v17rij.xyz^ +||620cyris.net^ +||6227bf19ed.com^ +||628f84ca27.com^ +||62a53367c9.com^ +||62ad.com^ +||62n3rbevp51plmonuw3h.cfd^ +||62py77ytnc6h2foxpf9u6uoky.rest^ +||632a08d66b.com^ +||6341e249b2.com^ +||635571329b.com^ +||637e3634c5.com^ +||63b51241b6.com^ +||63gd2s.lol^ +||63r2vxacp0pr.com^ +||63voy9ciyi14.com^ +||6402functions.net^ +||640vision.net^ +||64f5295d06.com^ +||650927ca6a.com^ +||650frame.net^ +||650inold.com^ +||65fcb6f3fe.com^ +||666f69c8bb.com^ +||666innovations.net^ +||66f4mej92etu96.cfd^ +||66f5dd9691.com^ +||66pxwy2r6q5v5qe.rest^ +||66withstat.com^ +||670brivis.net^ +||6764a4b67d.com^ +||67c15249d7.com^ +||67fad39954.com^ +||67toquartz.com^ +||680642cdf3.com^ +||680tosystems.com^ +||682immunity.net^ +||6840122afa.com^ +||6863edcf06.com^ +||68amt53h.de^ +||68aq8q352.com^ +||68efc320d7.com^ +||68s8.com^ +||69t84ihi9fli3rbjzx8.cfd^ +||69tovalid.com^ +||69v.club^ +||6a2596e48d.com^ +||6a70838881.com^ +||6a80d8df82.com^ +||6b7hrpu64xtun2ci.cfd^ +||6b8051dfcc.com^ +||6b902da043.com^ +||6bgaput9ullc.com^ +||6boj1v8nbf6c2feuw9giitbehme1qeemf52up.cfd^ +||6buueioe.xyz^ +||6by30.com^ +||6c6qyvpj11qv1qt5jq.cfd^ +||6cfc27c30d.com^ +||6d092bcd12.com^ +||6drq9rfn.xyz^ +||6e4hoe355t17yt2vm2uxlwbrxyrr.cfd^ +||6e76b83826.com^ +||6ec764402d.com^ +||6epv2lqboiwp3b5zrgcm39zj.cfd^ +||6f0247be0c.com^ +||6f218410f7.com^ +||6f9ijuvegiwnhx6o7l1bwev2n7jo.rest^ +||6g0sggey.xyz^ +||6glece4homah8dweracea.com^ +||6gzxobtc5rt3wc5f3knnzipy.cfd^ +||6hpebv4bicm5e78ewyiwvzyczz9q6ki.cfd^ +||6iy7uqz259ffxn1y.cfd^ +||6j296m8k.de^ +||6jim4b7h79r3cyhz1.cfd^ +||6ko3tqx71gt7z6ujf88rwtv9iu.rest^ +||6mbzgf698fmquukl1.rest^ +||6n61c39cvx4qq9n.rest^ +||6opo.com^ +||6ped2nd3yp.com^ +||6peiophcz6ccyfrw1tir9z.cfd^ +||6qif8ezfblui19ly77i3.cfd^ +||6qymnpzi.xyz^ +||6r16lfvzzpo36k2in59y34z847r65huvb.cfd^ +||6r1hwgpxbm8fhqnpy.cfd^ +||6r3ikxy1m5xptr3yv3yxk.cfd^ +||6ru92m5g.xyz^ +||6settings.net^ +||6tnqomxm6pjoxrihbzcnb.cfd^ +||6u8no5fq2f2r51.rest^ +||6ujk8x9soxhm.com^ +||6umn37i4z1fhe47ljkzb1wr.cfd^ +||6v41p4bsq.com^ +||6v5lljx5tj283h.rest^ +||6wrmchzzrcfff2zp.cfd^ +||6wtznnfc58nofw166.cfd^ +||6x5zcncbhiufy4jy7nnh.rest^ +||6x6iyrnym5uqpi.rest^ +||6xoj7le6hnyxtk8j6clhf.cfd^ +||6xuitim7p2pie86hw.cfd^ +||6yc42wvfw99n58u.rest^ +||6znvp3ntipfwknn4r.cfd^ +||6zr116wrcjmcy3g86.cfd^ +||6zy9yqe1ew.com^ +||7-7-7-partner.com^ +||7003128946.com^ +||700blend.com^ +||700d5deaa5.com^ +||700retention.net^ +||701withunlimited.com^ +||7070replicas.net^ +||70c3a9b44e.com^ +||70eb07b991.com^ +||7142f2be39.com^ +||71b2d37f74.com^ +||71df446534.com^ +||720dash.com^ +||720instances.com^ +||720synthesize.net^ +||722pod.net^ +||72a490562a.com^ +||72h1i16uzmbkvpn2e5.cfd^ +||72hdgb5o.de^ +||72o59nujkjqlq179wpo.cfd^ +||730fcb332f.com^ +||734map.net^ +||735pwa.com^ +||73660f6efb.com^ +||73771m3q.xyz^ +||73e3c9d09d.com^ +||73ea13c4fa.com^ +||73ed366d3137ec936bd60b1184467776.com^ +||73fbab0eb4.com^ +||73foxoid.com^ +||73i9ik6p997n8o6.cfd^ +||74cc9179e1.com^ +||74d963ww.xyz^ +||74i6p9yieo9b1y2g1nxu.rest^ +||74urw1etc39e9i.cfd^ +||74x4er4kpl8pxek327.cfd^ +||7550f3b810.com^ +||756048c1ae.com^ +||759d3cc22a.com^ +||75gcl4vqj2mwht189kxchmc.cfd^ +||762dd8340d.com^ +||7642cfa09a.com^ +||7652ff2c53.com^ +||766411a9ee.com^ +||7685b282b1.com^ +||76e3d5200b.com^ +||76nkjujnx7k52j9.cfd^ +||7777systems.net^ +||777ebfeef8.com^ +||77c63c73bc.com^ +||77faf458f4.com^ +||77management.net^ +||780warehouses.com^ +||782c161d89.com^ +||784d1dcf4a.com^ +||788eaddaac.com^ +||788facb124.com^ +||78bk5iji.de^ +||78f201e862.com^ +||790pyroola.com^ +||7926ccc537.com^ +||79d55a202e.com^ +||79k52baw2qa3.com^ +||79nexar.com^ +||79pa4bxa86.com^ +||7a3c825c8f.com^ +||7a8fb920fc.com^ +||7abb9702c4.com^ +||7abdc2aae1.com^ +||7amz.com^ +||7b13d552d3.com^ +||7b47a1c321.com^ +||7b624d2bdd.com^ +||7b6c81b4c2.com^ +||7ba3fa4259.com^ +||7bchhgh.de^ +||7bd10d8411.com^ +||7c11c184e6.com^ +||7c23586009.com^ +||7c52629d53.com^ +||7ca78m3csgbrid7ge.com^ +||7ce48c6052.com^ +||7cy8t1t8gifggqqe17bt3fhwzk4k8.cfd^ +||7d13c2cc1b.com^ +||7d6958cb00.com^ +||7d6e366acd.com^ +||7d7eab9082.com^ +||7de1da816b.com^ +||7e84b34fea.com^ +||7e8bf019d5.com^ +||7ec5e0d805.com^ +||7ee7484ba9.com^ +||7eit28evocng5gjuu.rest^ +||7f777a77a6.com^ +||7f89d90c6f.com^ +||7ff9dd031a.com^ +||7fhginl5cekq8ykr5hc9bn26xwb.cfd^ +||7fkm2r4pzi.com^ +||7focry12ylhr5k5rv.cfd^ +||7functions.com^ +||7fva8algp45k.com^ +||7gjfz33u1lw7nktfvwl8151e.cfd^ +||7gtxgmym3yh8y9m7xt.cfd^ +||7hh1v77kwx37zjfhh6kvlrm38.cfd^ +||7jn1iq4k45u4m5qzw4onwqzciv88j12vzm8j8mz.cfd^ +||7jo52b7qpyz4y76.rest^ +||7jrahgc.de^ +||7l4qwjf4ybxeh189.rest^ +||7lyonline.com^ +||7m9gj8cwz9zkum.cfd^ +||7me0ssd6.de^ +||7mungnlm1fzqt278ulecb9xq.cfd^ +||7ng6v3lu3c.execute-api.us-east-1.amazonaws.com^ +||7nt9p4d4.de^ +||7nzr7belmnvn2zj.cfd^ +||7pc9tqr7ulgx85f9hhnu9hf2mb33frc.rest^ +||7pobx6vqzbl8bcpgmevl395yyybblbzzk.cfd^ +||7q7lykug234e8uu5ft.cfd^ +||7sz0wdk7.xyz^ +||7ui7eny4lgwyfwk.cfd^ +||7w4f7nvo9j29zl6ptzqn2ft.cfd^ +||7wl4ewbiey6py5.cfd^ +||7wqnxuznr1zm15.cfd^ +||7xylvi8v9up5pbxbj.cfd^ +||7ycmoi6cn24n9knolu.rest^ +||7zvhi46y.xyz^ +||8000inpulse.com^ +||800482112b.com^ +||8080statistics.com^ +||8088insensor.net^ +||808ba9fe3d.com^ +||80ee887d8f.com^ +||8104863542.com^ +||811b27ab9f.com^ +||812f3647c3.com^ +||81aa1f6146.com^ +||820outpin.com^ +||820zenen.net^ +||821e113467.com^ +||82d36b5fc4.com^ +||82llnp8rqitlfxkyl4yil4o7383gp.cfd^ +||82query.com^ +||8330bccb63.com^ +||83933bb4b2.com^ +||83b016defa.com^ +||83c62d9964.com^ +||83cbda598a.com^ +||83ewfc7qjhto8nui.rest^ +||84067f6a2e.com^ +||840withnetworks.net^ +||842e61e68b.com^ +||847h7f51.de^ +||84d28a94b3.com^ +||84e867f7b4.com^ +||84eb50d125.com^ +||84gs08xe1.com^ +||8537b5712c.com^ +||85a30cce17.com^ +||85mrruhppm8w5264n.rest^ +||862ace.com^ +||864feb57ruary.com^ +||86a988b20f.com^ +||86c67c238d.com^ +||86fef27c8b.com^ +||86hhiuu88n3rpqmhlolf2bzu.cfd^ +||86hi9r4f.xyz^ +||86pjokx7vklxqp5iug2o.cfd^ +||86services.net^ +||86zeqcbmu82ouhn.rest^ +||870input.net^ +||87665c98df.com^ +||87a24216ce.com^ +||8800source.com^ +||882793fb7a.com^ +||8888queue.com^ +||888insettings.com^ +||888promos.com^ +||888pyxeo.net^ +||88a5ce7125.com^ +||88ddebd3d3.com^ +||88e0dcb063.com^ +||88eq7spm.de^ +||88zne7x4kpyfyg8bkz6il1wthry8h.cfd^ +||890fromzen.net^ +||89cb3ribpmg8up6nzfgw92h.cfd^ +||89cyz5w26gf4k3f2r23u8ofijcxvq8wy.cfd^ +||89sa.com^ +||89terraium.net^ +||89xj3fti5tmeh7ch7.rest^ +||8a41766c30.com^ +||8a4f3c8d93.com^ +||8a6cc3f77f.com^ +||8acd6b63f9.com^ +||8aef6f3c8b.com^ +||8afb98c0d8.com^ +||8b0e465f3e.com^ +||8b317a773b.com^ +||8b81ffcb90.com^ +||8ba30863a3.com^ +||8bcfwi4tqnrg81exx1kwk.cfd^ +||8bd6421c3f.com^ +||8bfc9cbcbe.com^ +||8c3fcf6b0d.com^ +||8c56c86ead.com^ +||8c66b76e9b.com^ +||8c814e6744.com^ +||8d46e91bf0.com^ +||8d4755add2.com^ +||8dafda749d.com^ +||8df0c9a696.com^ +||8dk5q9tp.xyz^ +||8e1fb7aeb7.com^ +||8e484af735.com^ +||8ea1272194.com^ +||8eabd9b030.com^ +||8ec3bf7cbd.com^ +||8ecc2aee4f.com^ +||8efwgoj8h9h151ftc.cfd^ +||8eynukgb9h2txj4nfp3jkm7vtg8mgxy.cfd^ +||8f0fc8c940.com^ +||8f17d89ec7.com^ +||8f4c607ea0.com^ +||8f74a52456.com^ +||8f7cd5dfad.com^ +||8f998710bd.com^ +||8fbfeb27e6.com^ +||8hwnenz8w55hiu3zxe.cfd^ +||8hy98hxknwimg15teo4g9zflniz4c.rest^ +||8ip4v8jmjvn1vvuicm5bgly24wu.cfd^ +||8j1f0af5.de^ +||8jfbt5va3r.com^ +||8kbulkq2mbhzu8.rest^ +||8kj1ldt1.de^ +||8kz2l28p3lqr8iwmpc8qp2332x.cfd^ +||8lrmj4k28nte2v5.rest^ +||8mn89m4miinf1ubjk.cfd^ +||8n67t.com^ +||8nximzje.xyz^ +||8po6fdwjsym3.com^ +||8s32e590un.com^ +||8s5s.com^ +||8sfdladng.xyz^ +||8tip5whk.xyz^ +||8ttxeoz8cfk3cxbvnqf7bth.cfd^ +||8tzh2hi3v38heojitp.cfd^ +||8uv7imc8bpumbhqfj4u1.rest^ +||8v21wql4bf1u51.cfd^ +||8v7btukyz1ix621e9u3u163h.cfd^ +||8vgyooonopk1oxmz9jvym.cfd^ +||8wtlp3rplgumqq.cfd^ +||8ww4mtxh9lioib.cfd^ +||8wz758q9w8grex6t84k.cfd^ +||8xcy73zn1kyek9k3n.cfd^ +||8yigbkjbi62e2bb.cfd^ +||8yqqgn5g.xyz^ +||8yzpw23yr3nxvtwymtt2wn.cfd^ +||9001car.com^ +||9001kolix.net^ +||900f44159b.com^ +||903e9c75f6.com^ +||905trk.com^ +||9075bcc610.com^ +||908df012d9bb72e6d26b41054588d758.com^ +||90c444ec8d.com^ +||90d92b6a4e.com^ +||9114cb3f68.com^ +||91842100df.com^ +||91cd3khn.de^ +||92540760ee.com^ +||92a98a2163.com^ +||92orb.com^ +||92yp.com^ +||930networks.net^ +||930outinstances.net^ +||93423fa56d.com^ +||934285023e.com^ +||93553ec9d6.com^ +||936781cc1a.com^ +||93a72bfca9.com^ +||93febf18c6.com^ +||93tp7r4396t4i2mwvzg4go7pm6izw998y.cfd^ +||940functions.net^ +||940haloix.net^ +||9453e87db8.com^ +||9490517299.com^ +||94bd38d16d.com^ +||94hexon.com^ +||9595hn6i7uijpqu2grkb6kxg84.cfd^ +||95instances.net^ +||95ppq87g.de^ +||95urbehxy2dh.top^ +||95ziegv587wohx9rzj.cfd^ +||960021c71c.com^ +||96d2c00b3e.com^ +||96e7bee058.com^ +||96ed2s9r.xyz^ +||96hexer.net^ +||970vantage.net^ +||973e5a5a22.com^ +||976caebe7b.com^ +||97ce98c219.com^ +||97inservices.net^ +||97nexoleo.net^ +||9832d75ae3.com^ +||984a6ddeb1.com^ +||98755c5056.com^ +||987f9e203d.com^ +||989d4c4ec9.com^ +||98cbb83e14.com^ +||98d4403b02.com^ +||98h1vujk5m8oog.cfd^ +||98withalt.net^ +||993d52a9bd.com^ +||995be54914.com^ +||99892220ca.com^ +||9996777888.com^ +||9998wy695oh2k7or2.cfd^ +||99d5318452.com^ +||99ddb6ad48.com^ +||99e65b5625.com^ +||99f7022009.com^ +||9a3a93a569.com^ +||9ab8ff816c.com^ +||9bce82ca1a.com^ +||9be5ft9obvn2ig.cfd^ +||9c786ff5cd.com^ +||9c867e2056.com^ +||9c8b7403e9.com^ +||9c8c9909e1.com^ +||9cbj41a5.de^ +||9cuo1fv233p5x889jolrw7ybzcomnvvn4c53h.cfd^ +||9d4a486df8.com^ +||9d5d98b241.com^ +||9d611c2d8a.com^ +||9da190a7d9.com^ +||9dmnv9z0gtoh.com^ +||9e031f589f.com^ +||9e11ec3a56.com^ +||9e1b47e1b9.com^ +||9e83087e91.com^ +||9eb0066c79.com^ +||9f88a926f4.com^ +||9f91b59591.com^ +||9fcd0e3ecc.com^ +||9fe32291ce.com^ +||9ff1a25009.com^ +||9flq9e2q5bgjn5u9m2.cfd^ +||9h6wuyen6kmm6rptqujjm2mkuij3bbpo6.cfd^ +||9instatement.com^ +||9l3s3fnhl.com^ +||9l5ss9l.de^ +||9liiim5jczcfih5mem9.cfd^ +||9lkywn3kb8bp3py.cfd^ +||9lwl6rsk.xyz^ +||9m5kp8e5r687jn1w3t3.cfd^ +||9mkcxvlgcnmfxxg.cfd^ +||9nizbbyf774vm14cp4e797zk.cfd^ +||9nmv95m7jl2wx31kk79p7648.cfd^ +||9pub.io^ +||9qngl95pczubw7flijw884trwv6fkz4qn.cfd^ +||9qpbpbieol83xe11y.cfd^ +||9s4l9nik.de^ +||9t5.me^ +||9tp9jd4p.de^ +||9tumza4dp4o9.com^ +||9tvbzyji4hn5h8.rest^ +||9ukton67nkmo5iepl.rest^ +||9w5tit2p821ykm83ginrhw73v4crph9yc.rest^ +||9warehouses.com^ +||9wdjf9va.xyz^ +||9xeqynu3gt7c.com^ +||9xob25oszs.com^ +||9zm9cz7w88lofwej3.cfd^ +||a-ads.com^ +||a-mo.net^ +||a-mx.com^ +||a-zzz.com^ +||a00s.net^ +||a065b8f217.com^ +||a09861247b.com^ +||a0f2l3m.com^ +||a11.click^ +||a11k.com^ +||a11ybar.com^ +||a14net.com^ +||a2255d1d36.com^ +||a26e7bb99f.com^ +||a273656d15.com^ +||a29f24b2a6.com^ +||a2tw6yoodsag.com^ +||a3yqjsrczwwp.com^ +||a42a39a7d7.com^ +||a431d890c6.com^ +||a46d7a5579.com^ +||a48300d8ed.com^ +||a4a2f41d76.com^ +||a4e04bceda.com^ +||a4e798c110.com^ +||a568e472d6.com^ +||a64x.com^ +||a65d5614b2.com^ +||a69cc901e9.com^ +||a6d8f8172f.com^ +||a6iemt79.xyz^ +||a883950043.com^ +||a8d007d2be.com^ +||a9562f872f.com^ +||a9a1a0fb14.com^ +||a9d4750f56.com^ +||aaa.vidox.net^ +||aaaaaco.com^ +||aaacompany.net^ +||aaaconnect.info^ +||aada35c15f.com^ +||aaedhstbycxih.space^ +||aafcwvjpryevi.online^ +||aafdcq.com^ +||aagm.link^ +||aagprboumamaz.space^ +||aahcnrijhuwhq.space^ +||aahpvdkakpska.online^ +||aainwekolbdzo.site^ +||aaislmjkjcxov.site^ +||aajumjptgqnah.website^ +||aakvewesiefbx.website^ +||aalsupgale.com^ +||aamleghorn.cyou^ +||aanyslvgdtooh.website^ +||aaowccyukgnkj.site^ +||aaponlzrawuzk.site^ +||aaqftypfngmdf.space^ +||aaqzvhtajrveg.online^ +||aarzgcsyztgrs.site^ +||aasssaa.com^ +||aaufexmuhr.com^ +||aaufpviohojni.website^ +||aaurpibxdpjju.site^ +||aavnnupfepbgp.space^ +||aawdlgngyyfhn.online^ +||aawdlvr.com^ +||aawekcinqvait.online^ +||aawfewvoclrhp.online^ +||aawrslsxlzhrn.site^ +||aawspeedy.com^ +||aaxads.com^ +||ab045d5856.com^ +||ab1n.net^ +||ab427mcx.xyz^ +||ab93t2kc.de^ +||ababdehcompte.qpon^ +||abackdamstubborn.com^ +||abackmentor.com^ +||abackswindleconcurrence.com^ +||abadit5rckb.com^ +||abadit5rckd.com^ +||abalonediiambigname.cyou^ +||abaolokyjmlvj.top^ +||abaolokyjmryv.top^ +||abaryoyidjcso.store^ +||abashfireworks.com^ +||abashmaters.qpon^ +||abassinbiomes.qpon^ +||abateadversity.com^ +||abatefrothhoneymoon.com^ +||abatesummonlocations.com^ +||abaxialboy.shop^ +||abbaswaulingamorino.qpon^ +||abberantdisheartenbandage.com^ +||abberantextending.com^ +||abberantpawnpalette.com^ +||abbiescampibounded.qpon^ +||abbotexperienceenchantment.com^ +||abbotpredicateemma.com^ +||abbreviateengland.com^ +||abbyoutfeat.cfd^ +||abcsqueezelaser.com^ +||abcuwqsosjymos.com^ +||abdadde321.com^ +||abdicatebirchcoolness.com^ +||abdicateeffectlucky.com^ +||abdlnk.com^ +||abdmhqftzxvbg.store^ +||abedhoneycastle.com^ +||abedwest.com^ +||abelestheca.com^ +||abelianhatty.qpon^ +||abergkxsuhitc.website^ +||abethow.com^ +||abgligarchan.com^ +||abh.jp^ +||abhmancnvqweb.site^ +||abideantiquarianinflict.com^ +||abidebrokestow.com^ +||abidedrepleat.cfd^ +||abidersawkly.cfd^ +||abigeatfabular.cfd^ +||abioseshashedshirked.qpon^ +||abixvrdblyakx.website^ +||abjectexcessatheism.com^ +||abjectionfreedpaying.com^ +||abjectjunctionlatest.com^ +||abjmkkoavoaor.top^ +||abjmkkoavooow.top^ +||abjpilgpouqhm.website^ +||abjqtrmbxeyct.com^ +||abjvzpgzbrbyn.space^ +||abkajbvlykeam.top^ +||abkajbvlykemj.top^ +||abkajbvlymjor.top^ +||abkxyinpiffsk.site^ +||abkzitollpce.com^ +||able-progress.pro^ +||ablehandbookrepugnant.com^ +||ablelaunchshorts.com^ +||ableshivy.cyou^ +||ablestgumi.cfd^ +||ablestyeller.qpon^ +||abletitle.pro^ +||ablushdampens.cfd^ +||ablybeastssarcastic.com^ +||ablyguaranteeusage.com^ +||abmkupxixavk.in^ +||abmqhxjpunrxy.online^ +||abnormalitylovingmammal.com^ +||aboardstepbugs.com^ +||abodedovaries.qpon^ +||abolt.xyz^ +||abomasawaister.shop^ +||abomineacerber.qpon^ +||abonnementtripleexplore.com^ +||aboriginalefficiencystepmother.com^ +||aboriginalimpedimentappreciate.com^ +||aboriginesnut.com^ +||aboriginesprimary.com^ +||abortsmumevoyeuse.cfd^ +||aboundinheritancecocktail.com^ +||aboundkarthli.cfd^ +||aboundplausibleeloquent.com^ +||aboutdungeon.com^ +||aboutpersonify.com^ +||abouttill.com^ +||aboveaverageheavenly.com^ +||abovegumpushuffle.qpon^ +||abovemyselfsadness.com^ +||aboveredirect.top^ +||abpicsrc.com^ +||abpjs23.com^ +||abpnow.xyz^ +||abqnmgbyxyias.site^ +||abrasiveslayerrequires.com^ +||abretskulls.shop^ +||abroadsuicidaleliminated.com^ +||abront.xyz^ +||abroodhaemoid.cfd^ +||abruptalertness.com^ +||abruptcooperationbummer.com^ +||abruptlydummy.com^ +||abruptlynopebrow.com^ +||abruptnesscarrier.com^ +||abruptusers.com^ +||absentbors.qpon^ +||absentlylaserlardy.com^ +||absentssalvo.qpon^ +||absentwhimdesired.com^ +||absitoddlegs.cyou^ +||absolutepropositionmayonnaise.com^ +||absolutionthornleader.com^ +||absolvedowntowninteger.com^ +||absorbabjureconnoisseur.com^ +||absorbedscholarsvolatile.com^ +||absorbinginject.com^ +||absorbsspooksdictum.cfd^ +||absorptionservant.com^ +||absorptlogia.qpon^ +||absrywzhcedfx.website^ +||abstortvarna.com^ +||abstractdemonicsilence.com^ +||abstractreunion.com^ +||absurdbatchconfess.com^ +||absurditylockdown.com^ +||absurdspeeingjimmer.qpon^ +||abtaurosa.club^ +||abtrcker.com^ +||abtrusecrooked.cyou^ +||abtsgfncqtxda.site^ +||abtthlftcjqoz.site^ +||abttwfawimtrq.site^ +||abulicavale.shop^ +||abundanceclientstrangely.com^ +||abusedbabysitters.com^ +||abushriva.qpon^ +||abusivejaped.com^ +||abuttedfast.com^ +||abvbclaoycooz.website^ +||abwdixodecuxf.site^ +||abwyjwpsbvqil.online^ +||abxxbixzzbbjq.website^ +||abysmeaseguary.qpon^ +||abyssfar.com^ +||abzkyjleooqja.top^ +||ac173c41a1.com^ +||ac674aa453.com^ +||acacdn.com^ +||acaciacoesite.cyou^ +||acaciafilterfrantically.com^ +||academic-newspaper.pro^ +||academywristadroit.com^ +||acaenafrazil.cyou^ +||acajoupptn.qpon^ +||acajouspekan.cfd^ +||acanthglynbarger.cyou^ +||acaribleep.com^ +||acaridtalose.qpon^ +||acarineleanderhealth.cyou^ +||acbogaffmdurj.site^ +||accedecommittedlogin.com^ +||acceleratesubdueaerial.com^ +||acceleratetomb.com^ +||accelerationannulmentdestination.com^ +||acceleron701.com^ +||acceptablefoot.com^ +||acceptablegrand.pro^ +||acceptablereality.com^ +||acceptableredheadcaviar.com^ +||acceptableremotehumorous.com^ +||acceptabletop.com^ +||acceptancecancelundoubtedly.com^ +||acceptancecrowdadvertising.com^ +||acceptancedishearten.com^ +||acceptancesuicidegel.com^ +||acceptguide.com^ +||access-mc.com^ +||access.vidox.net^ +||accessibledialoguethen.com^ +||accessoryprominentbike.com^ +||accessoutrageousimpetuous.com^ +||accidentallyplatinumresistance.com^ +||accidentallyrussian.com^ +||acclaimconsistentaffability.com^ +||acclaimincessantporridge.com^ +||acclalmeddate.net^ +||accmgr.com^ +||accoastquinic.cfd^ +||accoladeinvolvedscrambled.com^ +||accommodateirritatinglongitude.com^ +||accommodateyours.com^ +||accompanimentcouldsurprisingly.com^ +||accompanimentmusicianstorm.com^ +||accompanimentsuite.com^ +||accompanimentwoody.com^ +||accompanynovemberexclusion.com^ +||accomplicetextgenetically.com^ +||accomplishedpersuadedprinter.com^ +||accomplishedstrain.com^ +||accomplishmentailmentinsane.com^ +||accomplishmentfreeze.com^ +||accomplishmentpillowhatchet.com^ +||accordancebroadcasting.com^ +||accordanceheartilysouth.com^ +||accordancetimeneedless.com^ +||accorduntiltramp.com^ +||accostsnotekinorarium.qpon^ +||accountantflowerrespiration.com^ +||accountinglocksmithcontinental.com^ +||accountsgraphicsincriminate.com^ +||accumulatecarefullysuction.com^ +||accumulatehandgripsaxophone.com^ +||accumulaterehearsehealing.com^ +||accuracymangosixtyfold.com^ +||accuratephrase.com^ +||accuratewistful.com^ +||accuratewithprocessors.net^ +||accusalargema.shop^ +||accusationretrieval.com^ +||accusationroad.com^ +||accusedbeatnormandy.com^ +||accuserutility.com^ +||accustomedinaccessible.com^ +||accustomjumper.com^ +||acdcdn.com^ +||acdkpbpzpjekb.website^ +||acdn01.vidox.net^ +||acdojsqocgvoj.online^ +||ace-adserver.com^ +||acecrocodilelick.com^ +||aceporntube.com^ +||aceratecorkers.cfd^ +||acerbitycaughtprepay.com^ +||acerecipientevenings.com^ +||acertb.com^ +||acervaldiable.cyou^ +||acetizehawbucktaximen.qpon^ +||acetylsshikarsswampy.qpon^ +||acfcfdymeo.com^ +||acgugjkxtebno.site^ +||acgycvkvhcchy.space^ +||achcdn.com^ +||achenesmuchly.rest^ +||achewattmen.qpon^ +||acheworry.com^ +||achievablecpmrevenue.com^ +||achievementseeingladder.com^ +||achieveuntunes.cyou^ +||achieveweakness.com^ +||achooevert.cyou^ +||achterragtime.cfd^ +||acibgrucxulrh.space^ +||acictsjxqbsob.website^ +||acidcostunnatural.com^ +||acidickoshare.qpon^ +||acidityrappist.qpon^ +||acidnjdayblqz.com^ +||acidylseseliperries.qpon^ +||ackcdn.net^ +||ackdewsntmybn.online^ +||ackfqyzrdulxc.space^ +||acknowledgecalculated.com^ +||acknowledgedlatest.com^ +||acknowledgepronounablaze.com^ +||aclinalsurphul.cfd^ +||aclktrkr.com^ +||aclouddinkingchakra.cfd^ +||aclydeseloined.cyou^ +||aclysyuchi.cfd^ +||acme.vidox.net^ +||acmwyrhmvxycw.life^ +||acnedamos.qpon^ +||acnodalragee.cyou^ +||acnodeszebus.cyou^ +||acologytraneen.qpon^ +||acomoushidings.cfd^ +||acoparietid.qpon^ +||acorncranberrycrayfish.com^ +||acpvvwpxifegl.space^ +||acqqmjewqgqln.online^ +||acquaintancecolorfulheading.com^ +||acquaintedpostman.com^ +||acquestbaggily.cyou^ +||acquietcapelin.cyou^ +||acquirecardedsullen.com^ +||acquiredeceasedundress.com^ +||acquirededificerefrigerate.com^ +||acquirethem.com^ +||acquisitioncarefully.com^ +||acquisitionhonestlybough.com^ +||acquitsdubb.qpon^ +||acquitsurfspeeding.com^ +||acqxanjap.in^ +||acrasingraters.cfd^ +||acrdfrcfapzvn.site^ +||acreakkolas.cfd^ +||acrebackcharacter.com^ +||acredo.space^ +||acreinterstatethe.com^ +||acrinylleggier.cyou^ +||acritabenamee.cfd^ +||acrobatic-hello.pro^ +||acrobaticcouple.com^ +||acronymdanaro.cfd^ +||acrossexterminatorfoggy.com^ +||acrosssparedhash.com^ +||acsaofatjaiau.store^ +||acscdn.com^ +||actglimpse.com^ +||actiflex.org^ +||actingproductive.com^ +||actingturk.com^ +||actionfurmap.com^ +||activategrowconserve.com^ +||activatesparrow.com^ +||activatormanorplausible.com^ +||active-bat.com^ +||activejavgg124.fun^ +||activelymoonlight.com^ +||activemetering.com^ +||activescheekercineol.qpon^ +||activinbirch.cyou^ +||activitycrackleanalyze.com^ +||actoryglutael.qpon^ +||actpx.com^ +||actressdoleful.com^ +||actrkn.com^ +||actscattydecode.com^ +||actstrialssuper.com^ +||actthrilled.com^ +||actuallyforeheadconsent.com^ +||actuallyfrustration.com^ +||actuallyhierarchyjudgement.com^ +||actuateslod.cyou^ +||actzlkgfirjym.website^ +||acuchikittul.cfd^ +||acuhespetprps.online^ +||acuityplatform.com^ +||aculagdnfquvf.site^ +||aculeipicacho.qpon^ +||acumocceemuqj.space^ +||acuteleukemie.info^ +||acuteprone.com^ +||acuteyirnpropos.cfd^ +||acuxicwsmbca.com^ +||acvddzqjjsofe.online^ +||acxcfztcvheoa.space^ +||acxyovabsnstn.com^ +||acyesislepismaunboxed.cyou^ +||acyxssqjdvfaj.space^ +||aczqghbgetaef.store^ +||ad-api.gl-inet.com^ +||ad-back.net^ +||ad-balancer.net^ +||ad-block.shop^ +||ad-cheers.com^ +||ad-delivery.net^ +||ad-flow.com^ +||ad-m.asia^ +||ad-mapps.com^ +||ad-maven.com^ +||ad-recommend.com^ +||ad-score.com^ +||ad-server.co.za^ +||ad-serverparc.nl^ +||ad-srv.net^ +||ad-stir.com^ +||ad-vortex.com^ +||ad.cpcstar.com^ +||ad.gt^ +||ad.guru^ +||ad.linksynergy.com^ +||ad.mox.tv^ +||ad.tradertimerz.media^ +||ad2391c451.com^ +||ad2f8c6f8e.com^ +||ad2the.net^ +||ad4.com.cn^ +||ad999.biz^ +||adactioner.com^ +||adahumanhear.com^ +||adalh-zcq.com^ +||adamantslash.com^ +||adamantundergone.com^ +||adandhub.com^ +||adangle.online^ +||adappi.co^ +||adaptationprodigalevil.com^ +||adaptconveyperformed.com^ +||adaptedestimatedcaress.com^ +||adaptedmercifulinterruption.com^ +||adapterwith1024.net^ +||adapthopperpriest.com^ +||adaptive5000.net^ +||adaptunemployed.com^ +||adaround.net^ +||adarutoad.com^ +||adasgsts.cc^ +||adbakbhknpczi.site^ +||adbanlox.in^ +||adbestnet.com^ +||adbits.online^ +||adblck.com^ +||adblock-360.com^ +||adblock-guru.com^ +||adblock-zen.com^ +||adblockanalytics.com^ +||adblockerprofessional.com^ +||adbmi.com^ +||adbooth.com^ +||adbox.lv^ +||adbpage.com^ +||adbpdtuylbvlk.space^ +||adbrite.com^ +||adbro.me^ +||adbuddiz.com^ +||adbuff.com^ +||adbull.com^ +||adbutler-fermion.com^ +||adbutler.com^ +||adbwublzlyxvg.online^ +||adbyss.com^ +||adcannyxml.com^ +||adcash.com^ +||adcdnx.com^ +||adcharriot.com^ +||adclerks.com^ +||adclick.pk^ +||adclickad.com^ +||adclickbyte.com^ +||adclickmedia.com^ +||adclickppc.com^ +||adclicks.io^ +||adcloud.net^ +||adcolo.com^ +||adcontext.pl^ +||adcovery.com^ +||adcrax.com^ +||addictedfastestgasp.com^ +||addictedpledgeabridge.com^ +||addictrelive.com^ +||addin1.name^ +||addinginstancesroadmap.com^ +||addiply.com^ +||additionalcasualcabinet.com^ +||additionalheritagenose.com^ +||additionalmedia.com^ +||additionmillionaireimpending.com^ +||additionzipper.com^ +||addizhi.top^ +||addkt.com^ +||addoer.com^ +||addonsmash.com^ +||addotnet.com^ +||addroplet.com^ +||addthief.com^ +||adehhurslxxmh.space^ +||adelphic.net^ +||adenza.dev^ +||adepticily.com^ +||adevppl.com^ +||adex.media^ +||adexchangeclear.com^ +||adexchangecloud.com^ +||adexchangedirect.com^ +||adexchangegate.com^ +||adexchangeguru.com^ +||adexchangemachine.com^ +||adexchangeprediction.com^ +||adexchangerapid.com^ +||adexchangetracker.com^ +||adexcite.com^ +||adexmedias.com^ +||adfgetlink.net^ +||adfootprints.com^ +||adforcast.com^ +||adform.net^ +||adfpoint.com^ +||adfrontiers.com^ +||adfusion.com^ +||adfyre.co^ +||adgcufmqcuedr.online^ +||adgebra.co.in^ +||adglare.net^ +||adgoi.com^ +||adgorithms.com^ +||adhealers.com^ +||adherebarrowdomesticated.com^ +||adherepreserveshrimp.com^ +||adhqjrihyvr.com^ +||adhub.digital^ +||adhub.media^ +||adiquity.com^ +||aditms.me^ +||aditsafeweb.com^ +||adjacenthairshag.com^ +||adjoinartistic.com^ +||adjoininglearning.com^ +||adjs.media^ +||adjustmentthesilver.com^ +||adjux.com^ +||adkaora.space^ +||adkcdlpsssr.com^ +||adkernel.com^ +||adklimages.com^ +||adkmbc.com^ +||adlane.info^ +||adligature.com^ +||adlogists.com^ +||adlserq.com^ +||adltserv.com^ +||admaaodfwkcuj.store^ +||admachina.com^ +||admanmedia.com^ +||admasters.media^ +||admax.network^ +||admd.ink^ +||admdoqipetokp.space^ +||adme-net.com^ +||adme2.click^ +||admediaportal.com^ +||admediatex.net^ +||admedo.com^ +||admeking.com^ +||admeridianads.com^ +||admicro.vn^ +||admidainsight.com^ +||administersurlyunbelievable.com^ +||admirableinstance.com^ +||admirecallpalpate.com^ +||admireddepressedsarcastic.com^ +||admiredeterioratesinner.com^ +||admiredjumper.com^ +||admiregarrisonnetwork.com^ +||admiringnearestthread.com^ +||admissibleblinkbesiege.com^ +||admissibleconference.com^ +||admission.net^ +||admissiondemeanourusage.com^ +||admissionpersuade.com^ +||admitad-connect.com^ +||admitad.com^ +||admitincarnateentertainment.com^ +||admittanceskirtanthony.com^ +||admittedhi.com^ +||admixer.md^ +||admixer.net^ +||admjmp.com^ +||admob.com^ +||admobe.com^ +||admonishconcentrate.com^ +||admonishfistgipsy.com^ +||admonishmentfastest.com^ +||admonishmenttub.com^ +||admothreewallent.com^ +||admpire.com^ +||admszahcketzf.site^ +||admunvlvrcsaf.online^ +||adnami2.io^ +||adncdn.net^ +||adnetworkperformance.com^ +||adnetwrk.com^ +||adnext.fr^ +||adngin.com^ +||adnico.jp^ +||adnigma.com^ +||adnimo.com^ +||adnotebook.com^ +||adnxs-simple.com^ +||adnxs.com^ +||adnxs.net^ +||adnxs1.com^ +||adocean.pl^ +||adodishonourcrutch.com^ +||adokutrtb.com^ +||adolcgailvycg.site^ +||adomic.com^ +||adonweb.ru^ +||adop.co^ +||adoperatorx.com^ +||adopexchange.com^ +||adopstar.uk^ +||adoptedlaxstrenuous.com^ +||adoptum.net^ +||adorableold.com^ +||adorarama.com^ +||adoreplans.com^ +||adornmadeup.com^ +||adornmenthillsidepotato.com^ +||adornmentpuzzlement.com^ +||adornmenttaunt.com^ +||adotic.com^ +||adotmob.com^ +||adotone.com^ +||adotube.com^ +||adpacks.com^ +||adpass.co.uk^ +||adpatrof.com^ +||adpdkizzi.in^ +||adperium.com^ +||adpicmedia.net^ +||adpinion.com^ +||adpionier.de^ +||adplsr.com^ +||adplushub.com^ +||adpmbexo.com^ +||adpmbexoxvid.com^ +||adpmbglobal.com^ +||adpmbtf.com^ +||adpmbtj.com^ +||adpmbts.com^ +||adpod.in^ +||adpone.com^ +||adpresenter.de^ +||adquake.com^ +||adquery.io^ +||adqxchmsttoyz.online^ +||adreadytractions.com^ +||adrealclick.com^ +||adrecreate.com^ +||adrenalinemanipulativeact.com^ +||adrenovate.com^ +||adrent.net^ +||adrevenuerescue.com^ +||adrianpeachdesign.com^ +||adriftperfunctoryfrost.com^ +||adrifttenderly.com^ +||adriftventilatormeatloaf.com^ +||adright.co^ +||adrino.io^ +||adroitcertain.com^ +||adroitham.com^ +||adroitirresponsibleshoes.com^ +||adroitswarmcultural.com^ +||adrokt.com^ +||adrscibgiosrk.website^ +||adrta.com^ +||adrunnr.com^ +||ads-abc.com^ +||ads-blocker.app^ +||ads-blocker.pro^ +||ads-static.conde.digital^ +||ads-twitter.com^ +||ads.lemmatechnologies.com^ +||ads1-adnow.com^ +||ads1-adqva.com^ +||ads2550.bid^ +||ads2ads.net^ +||ads3-adnow.com^ +||ads4g.pl^ +||ads4trk.com^ +||ads5-adnow.com^ +||ads6-adnow.com^ +||ads7-adnow.com^ +||adsafeprotected.com^ +||adsafety.net^ +||adsame.com^ +||adsbar.online^ +||adsbetnet.com^ +||adsblockersentinel.info^ +||adsboosters.xyz^ +||adsbtrk.com^ +||adsbuddy.net^ +||adscale.de^ +||adscampaign.net^ +||adschill.com^ +||adscienceltd.com^ +||adsco.re^ +||adscreendirect.com^ +||adsdatastream.top^ +||adsdk.com^ +||adsdot.ph^ +||adsensecamp.com^ +||adsensecustomsearchads.com^ +||adserv.mobi^ +||adserve.ph^ +||adserverplus.com^ +||adserverpub.com^ +||adservicemedia.dk^ +||adservon.com^ +||adservrs.com^ +||adsessionserv.com^ +||adsfac.eu^ +||adsfac.net^ +||adsfac.us^ +||adsgateway.net^ +||adshack.com^ +||adshopping.com^ +||adsinstant.com^ +||adsjqaobchetb.space^ +||adskape.ru^ +||adskeeper.co.uk^ +||adskeeper.com^ +||adslidango.com^ +||adsloom.com^ +||adslop.link^ +||adslot.com^ +||adslots.com^ +||adsmarch.online^ +||adsmediabox.com^ +||adsnative.com^ +||adsoftware.top^ +||adsonar.com^ +||adsoptimal.com^ +||adspdbl.com^ +||adspeed.net^ +||adspi.xyz^ +||adspirit.de^ +||adsplay.in^ +||adspop.me^ +||adspredictiv.com^ +||adspygl.xyz^ +||adspyglass.com^ +||adsquash.info^ +||adsquasher.com^ +||adsquasher.pro^ +||adsratcarp.com^ +||adsrv.net^ +||adsrv.wtf^ +||adstean.com^ +||adsterraserver.com^ +||adstik.click^ +||adstook.com^ +||adstub.net^ +||adsupply.com^ +||adsupplyssl.com^ +||adsurve.com^ +||adsvolum.com^ +||adsvolume.com^ +||adsvzkuzfcfbz.one^ +||adswam.com^ +||adsxtits.com^ +||adsxtits.pro^ +||adsxyz.com^ +||adt328.com^ +||adt545.net^ +||adt567.net^ +||adt574.com^ +||adt598.com^ +||adtago.s3.amazonaws.com^ +||adtags.mobi^ +||adtaily.com^ +||adtaily.pl^ +||adtarget.biz^ +||adtelligent.com^ +||adtheyhaveset.org^ +||adtival.com^ +||adtlgc.com^ +||adtng.com^ +||adtoma.com^ +||adtonement.com^ +||adtoox.com^ +||adtotal.pl^ +||adtpix.com^ +||adtrace.org^ +||adtraction.com^ +||adtrcdn.io^ +||adtrhogpvnwkt.space^ +||adtrieval.com^ +||adtrue.com^ +||adtrue24.com^ +||adtumxjckljej.space^ +||adultadvertising.net^ +||adultcamchatfree.com^ +||adultcamfree.com^ +||adultcamliveweb.com^ +||adultgameexchange.com^ +||adultlinkexchange.com^ +||adultmoviegroup.com^ +||adultsense.net^ +||adultsense.org^ +||adultsjuniorfling.com^ +||advally.com^ +||advancedadblocker.pro^ +||advancingbertramincurable.com^ +||advancingtheirs.com^ +||advantageroughplay.com^ +||advard.com^ +||adventurehannahmechanic.com^ +||adventurerforewordpatio.com^ +||adventurouscomprehendhold.com^ +||adversaldisplay.com^ +||adversalservers.com^ +||adverserve.net^ +||advertica.com^ +||advertipros.com^ +||advertiserubyproximity.com^ +||advertiserurl.com^ +||advertiseserve.com^ +||advertising-cdn.com^ +||advertisingiq.com^ +||advertisingvalue.info^ +||advertix.space^ +||advertjunction.com^ +||advertlets.com^ +||advertpay.net^ +||advfeeds.com^ +||advice-ads.s3.amazonaws.com^ +||adviceglossaryeminence.com^ +||advisedwhenever.com^ +||advisesaltsarmless.com^ +||advisorthrowbible.com^ +||adviva.net^ +||advmaker.ru^ +||advocate420.fun^ +||advp1.com^ +||advp2.com^ +||advp3.com^ +||advpx.com^ +||advpy.com^ +||advpz.com^ +||advservert.com^ +||advtise.net^ +||adw9.com^ +||adwalte.info^ +||adway.org^ +||adwx6vcj.com^ +||adx1.com^ +||adx1js.s3.amazonaws.com^ +||adxadserv.com^ +||adxapi.online^ +||adxawkejwjdfh.site^ +||adxbid.info^ +||adxfire.in^ +||adxfire.net^ +||adxhand1.name^ +||adxion.com^ +||adxnexus.com^ +||adxpansion.com^ +||adxpartner.com^ +||adxplay.com^ +||adxpremium.services^ +||adxscope.com^ +||adxsource.com^ +||adxsrver.com^ +||adxxx.biz^ +||adxxxxxmost.co^ +||adzcivwjgktmz.site^ +||adziff.com^ +||adzilla1.name^ +||adzivijnyizgp.space^ +||adzmedia.com^ +||adzmob.com^ +||adzpier.com^ +||adzs.com^ +||ae4a30136a.com^ +||ae5e473975.com^ +||aeacusexpoundcolones.cyou^ +||aeaklaujzvoos.site^ +||aeblisgashqev.space^ +||aeckyijopoxsk.space^ +||aed08832da.com^ +||aeeg5idiuenbi7erger.com^ +||aeffe3nhrua5hua.com^ +||aegmbupscesey.space^ +||aegmdwmvhesof.website^ +||aegxekrepfbqw.com^ +||aehcglvkpn.com^ +||aeiptbtyknklq.online^ +||aeiwzejwyzqjy.rocks^ +||aekessoiuidln.website^ +||aelrjtmxchqlk.site^ +||aelyjabjzxcrg.online^ +||aembtielaekdf.online^ +||aenadjlofcqzj.space^ +||aeneanintuse.cyou^ +||aentmpvxbzpo.com^ +||aeoldjkiutpwj.site^ +||aepnxvhkmqvfk.online^ +||aeragecobwork.cyou^ +||aeragevelaricacider.cfd^ +||aericalstumperdisks.cyou^ +||aerksrxqolhmf.website^ +||aerolix61.com^ +||aespmnbpqhpvu.space^ +||aesrfmkkyhlei.online^ +||aesvnxentohkew.com^ +||aetvellt.net^ +||aeucjiicbgosj.site^ +||aeuifgsbjnzpp.online^ +||aevfoobzfsfjx.space^ +||aevumamaze.cfd^ +||aewqedfkkplhtdh.com^ +||aexouiunvonkl.site^ +||aeym37jp.xyz^ +||af305e6c77.com^ +||af30ee9e36.com^ +||afanglffjywuu.site^ +||afbavrlcwefya.space^ +||afbpolkaed.qpon^ +||afcntvlruzigd.online^ +||afcontent.net^ +||afcyhf.com^ +||afdads.com^ +||afdgam.cfd^ +||afdqijrzwjcls.website^ +||aff-online.com^ +||aff-track.net^ +||aff.biz^ +||aff1xstavka.com^ +||affableindigestionstruggling.com^ +||affablelabel.com^ +||affairchemistdissolved.com^ +||affasi.com^ +||affbalms.cfd^ +||affbot3.com^ +||affcpatrk.com^ +||affecteditaly.com^ +||affectionateeasilyillness.com^ +||affectionoverturn.com^ +||affectionparson.com^ +||affflow.com^ +||affforce.com^ +||affidavitheadfirstonward.com^ +||affili.st^ +||affiliate-robot.com^ +||affiliate-wg.com^ +||affiliateboutiquenetwork.com^ +||affiliateer.com^ +||affiliatefuel.com^ +||affiliatefuture.com^ +||affiliatelounge.com^ +||affiliatemembership.com^ +||affiliates.systems^ +||affiliatesensor.com^ +||affiliatestonybet.com^ +||affiliatewindow.com^ +||affilijack.de^ +||affiliride.com^ +||affiliserve.com^ +||affirmativebenediction.com^ +||affixmaximed.cyou^ +||affiz.net^ +||afflat3a1.com^ +||afflat3d2.com^ +||afflat3e1.com^ +||afflat3e3.com^ +||affluentarmyequator.com^ +||affordedseasick.com^ +||affordpeat.com^ +||affordregents.cfd^ +||affordspoonsgray.com^ +||affoutrck.com^ +||affpa.top^ +||affplanet.com^ +||affroller.com^ +||affstrack.com^ +||afftrack.com^ +||afftrackr.com^ +||affyingambeer.cfd^ +||affyrtb.com^ +||afgenqtscnbaw.space^ +||afghanalosa.cfd^ +||afgodscarpe.com^ +||afgr1.com^ +||afgr10.com^ +||afgr11.com^ +||afgr2.com^ +||afgr3.com^ +||afgr4.com^ +||afgr5.com^ +||afgr6.com^ +||afgr7.com^ +||afgr8.com^ +||afgr9.com^ +||afgtrwd1.com^ +||afi-thor.com^ +||afiioankzbbgw.online^ +||afiliapub.click^ +||afilliateapp.com^ +||afilliatetraff.com^ +||afknfnosaxyps.website^ +||afkwa.com^ +||aflauntmusers.cyou^ +||aflbjkkdckwcl.online^ +||afloatpantplayer.com^ +||afm01.com^ +||afmrmyacgrvqq.store^ +||afooexolgcutk.space^ +||afovivytex.com^ +||afr4g5.de^ +||afraid-resolution.com^ +||afrdtech.com^ +||afreetsat.com^ +||afrfusutkldst.website^ +||africawin.com^ +||aftbogardaerobus.qpon^ +||afterdownload.com^ +||afterdownloads.com^ +||aftermostagrounduneasily.com^ +||afternoonpregnantgetting.com^ +||aftrk1.com^ +||aftrk3.com^ +||afutfjyhihsdy.space^ +||afwfwhqmvjgmo.online^ +||afy.agency^ +||afzehmazj.com^ +||agaarvusbarpp.space^ +||agacelebir.com^ +||agaenteitor.com^ +||againandagain.biz^ +||againstmascaraordinal.com^ +||agalmaexhedra.qpon^ +||agamagcargoan.com^ +||agapaicrittur.shop^ +||agapeicflexoragreing.qpon^ +||agat-tech.com^ +||agatarainpro.com^ +||agathisdented.com^ +||agattlaidvkmm.website^ +||agavestreflefalse.qpon^ +||agavewrasses.cfd^ +||agbfgatnhzdeb.online^ +||agcdn.com^ +||agcmveaitacs.com^ +||agdbaltzyo.com^ +||agdqpqizyvmyx.online^ +||age810.net^ +||agedlysublid.qpon^ +||agedycsmjwbtt.website^ +||agegodfatherbritish.com^ +||ageingja.com^ +||ageingspossy.qpon^ +||agency2.ru^ +||agencybriefly.com^ +||agencyrearrangepasture.com^ +||agencytroops.com^ +||agendadejection.com^ +||agenteimmobiliare.info^ +||agfasjfhveoqf.online^ +||agghhivwi.com^ +||aggravatingoil.com^ +||aggravationbabysitterplumbing.com^ +||aggregatedcompetitivefrock.com^ +||aggregateknowledge.com^ +||aggregationabsorption.com^ +||aggregationdestructoppression.com^ +||aggregationmodest.com^ +||aggressivestruggle.com^ +||aghaspeeks.qpon^ +||aghorimeline.cyou^ +||agiaxpdoiuunbbm.com^ +||agileskincareunrented.com^ +||aginalborakparols.qpon^ +||agistertumidmapper.cyou^ +||agitatechampionship.com^ +||agitatedfoot.com^ +||agitatedparquetscam.com^ +||agjrfocatndh.com^ +||agkbhvkpuuzxf.site^ +||agl001.bid^ +||agl002.online^ +||agl003.com^ +||agl004.fun^ +||agl005.tech^ +||agl006.host^ +||agle21xe2anfddirite.com^ +||agletsmandil.shop^ +||agletssneb.com^ +||agleymyxemiacaging.qpon^ +||aglossahuisher.cfd^ +||aglowjested.cfd^ +||agmtrk.com^ +||agmvwgwhgpnyu.online^ +||agnelbehung.com^ +||agnizecabbage.cyou^ +||agnomentopslwomby.cyou^ +||agnruzedegphs.site^ +||agoniaopaquerhing.cfd^ +||agoniaslightyhexact.qpon^ +||agonizing-initiative.pro^ +||agore.xyz^ +||agort.xyz^ +||agoutisripped.cfd^ +||agowtayufyalh.online^ +||agqoshfujku.com^ +||agqrzufnxmmyu.site^ +||agrahtarre.cfd^ +||agrbyslxnivin.website^ +||agreatgodet.cfd^ +||agreeablebeggarlyvarieties.com^ +||agreeableoccasion.com^ +||agreedaboriginal.com^ +||agreedairdalton.com^ +||agriculturebasssettling.com^ +||agriculturedoubloonsdesk.com^ +||agricultureprowesscardinal.com^ +||agrisedcoiledtyloma.qpon^ +||agroofleister.shop^ +||agruifglorify.qpon^ +||agtcmuohbt.in^ +||agtdrohiboc.com^ +||agtlaylocktritish.cfd^ +||agudistlamusintl.cyou^ +||aguisereasonfatling.cyou^ +||agurasiluretwine.qpon^ +||agurgeed.net^ +||agvbugbix.com^ +||agwrybiopjmta.online^ +||agxdzclwjcymr.space^ +||agzdvulilbauk.website^ +||ahadsply.com^ +||ahajmjcfkfqsx.site^ +||aharaincoatpremiere.com^ +||ahaurgoo.net^ +||ahbdsply.com^ +||ahcdsply.com^ +||ahdcrajmzbtvj.com^ +||aheadpains.com^ +||ahejadicyivel.site^ +||ahewjrcrmrmyq.website^ +||ahfvirogw.in^ +||ahfxdqlnlwpyz.site^ +||ahgjbiqqwcmfo.website^ +||ahirdebile.shop^ +||ahiwvmjktstlw.site^ +||ahizzxdpeqmkt.space^ +||ahkjuekgpccmj.world^ +||ahllyqzgtyuln.space^ +||ahlothpsubmvk.website^ +||ahmyebqzknlpj.website^ +||ahobsewcjigev.space^ +||ahort.xyz^ +||ahowxrqijvvwm.space^ +||ahqbumkf.in^ +||ahrhhrsbdx.com^ +||ahrhxdoudmngm.space^ +||ahrrxaidcghsb.site^ +||ahscdn.com^ +||ahskummakjt.com^ +||ahsyxlyqjzkcz.website^ +||ahtcwbfctgvnk.site^ +||ahtplqvbxkule.online^ +||ahuieohwuk.com^ +||ahukfcpfknenp.website^ +||ahuvgjyj.com^ +||ahvqydcujtjgo.website^ +||ahvxmwukrdlkk.website^ +||ahwzqqlumpyba.website^ +||ahxpudoydaraw.site^ +||ahxqqfgmfumpo.website^ +||ahyjsrlslitla.online^ +||ahymmqagnewae.online^ +||ahzrdogdenuok.site^ +||aiahosyhl.com^ +||aiaskjqrimnol.website^ +||aibogwwviibku.online^ +||aidata.io^ +||aidsswaggertrimness.com^ +||aidthewallowtoh.org^ +||aidvcdsla.com^ +||aiecrhvddyaqb.website^ +||aieryduetto.com^ +||aifgjdcarlmow.space^ +||aifmpdaqommzn.store^ +||aifolr.com^ +||aifyjgwfrecbd.space^ +||aigetcliks.com^ +||aigretcrispclimata.cyou^ +||aiharsoreersu.net^ +||aihryemflflsa.website^ +||aiilyhytauvirl.com^ +||aiiyoosioydfm.website^ +||aikdaibvdijmd.online^ +||ailcloister.com^ +||ailpyvmztfusn.one^ +||ailzqgcrkatep.site^ +||aimatch.com^ +||aimging.com^ +||aimingincompetence.com^ +||aimoretankfulkarsha.qpon^ +||aimportfoliosquid.com^ +||aimukreegee.net^ +||ainenhdfsjbuf.online^ +||ainouzaudre.net^ +||ainrrojwogdkv.store^ +||aiojgikjbhzqe.website^ +||aiqidwcfrm.com^ +||airbaglinenysorghe.cyou^ +||aircheerfulhometown.com^ +||airconditionstrodefist.com^ +||aircraftairliner.com^ +||aircraftreign.com^ +||airingsstirrup.qpon^ +||airlessquotationtroubled.com^ +||airlessstereoadvised.com^ +||airlinerholesacquaintance.com^ +||airlingyperite.qpon^ +||airmassashmen.cyou^ +||airportburrahpieta.cfd^ +||airshedcoart.com^ +||airyihltczmmq.online^ +||aisfokgqw.online^ +||aislepard.shop^ +||aisletowelreasoning.com^ +||aiso.live^ +||aitesispatata.qpon^ +||aitselectic.shop^ +||aivzqagmhkndd.online^ +||aixcdn.com^ +||aixkmxfejbsvb.online^ +||aixyiapiclvui.space^ +||aiyrmwheuqzla.website^ +||aj1070.online^ +||aj1432.online^ +||aj1559.online^ +||aj1716.online^ +||aj1907.online^ +||aj1913.online^ +||aj1985.online^ +||aj2031.online^ +||aj2204.online^ +||aj2396.online^ +||aj2517.bid^ +||aj2532.bid^ +||aj2550.bid^ +||aj2551.bid^ +||aj2555.bid^ +||aj2635.bid^ +||ajar-sister.com^ +||ajarmargaritaalmond.com^ +||ajblcygde.com^ +||ajcpsepcghmeh.site^ +||ajddolrmsfsvg.space^ +||ajdfwamz.com^ +||ajdhawgchjuix.online^ +||ajewzcsnmnjex.site^ +||ajfnee.com^ +||ajggnilcptlgz.site^ +||ajgsadialtyzq.store^ +||ajhcicem.com^ +||ajidwxdtp.com^ +||ajjlasruwwrlt.store^ +||ajjwutdytigzg.rocks^ +||ajlsatad.in^ +||ajmivgvmaclye.online^ +||ajourerabbity.com^ +||ajptwiopvptab.website^ +||ajrkm1.com^ +||ajrkm3.com^ +||ajscdn.com^ +||ajskgbnmafymf.space^ +||ajuhjaeaztfor.site^ +||ajujqdualdsao.space^ +||ajump1.com^ +||ajveybhqfcksz.site^ +||ajxx98.online^ +||ajymcnmtnmqwq.website^ +||ak-is2.net^ +||ak-tracker.com^ +||akahpvdbdmwdu.website^ +||akarihuyfowgc.website^ +||akbezirpwgrhx.website^ +||akcmqgehvften.online^ +||akcorigiudwgm.site^ +||akdbr.com^ +||akdnhszqeqasz.store^ +||akdrclfipxvkj.store^ +||akelassuccub.qpon^ +||akelrwhhzbzom.space^ +||akenevelar.shop^ +||akftqsaedhfqt.space^ +||akhflmskoecmk.site^ +||akhghskywdfoz.website^ +||akhoondathecae.shop^ +||akiazoariteaikane.cfd^ +||akilifox.com^ +||akinlongish.qpon^ +||akiqckgsj.com^ +||akjfsoqhcjjpx.store^ +||akkoknlfoa.in^ +||aklvbooruyymz.website^ +||akmaumets.cfd^ +||akmwjtoqyzvtz.site^ +||akmxts.com^ +||akokkogoshiak.website^ +||akontaecrudyquantum.cyou^ +||akosaytrnwxag.website^ +||akovwzgtauqfh.online^ +||akoxwanaydqya.space^ +||akpptbwutmqxy.space^ +||akrotertarsalpacked.cfd^ +||aksfwtoeorsre.site^ +||aksssnpsgvjoa.online^ +||aksvougxccpvg.online^ +||aktmixzlwpyrs.online^ +||aktznsloafjmk.online^ +||akucord.com^ +||akuleestampmondial.qpon^ +||akupmhxbzdhau.space^ +||akutapro.com^ +||akuxzlfjncrxr.website^ +||akvosbllbxzkx.online^ +||akxppoopmal.in^ +||al-adtech.com^ +||al5sm.com^ +||alabafpyhfmdx.site^ +||alagaodealing.com^ +||alagaostowp.cyou^ +||alamwslfrqwdz.online^ +||alantintenants.cyou^ +||alanylsforking.shop^ +||alaresldg.cfd^ +||alarming-bike.com^ +||alarming-rule.com^ +||alas4kanmfa6a4mubte.com^ +||alasvow.com^ +||albanyfusilsoryxes.qpon^ +||albbwlhyjotcs.website^ +||albiningroup.qpon^ +||albonsa.com^ +||albuminbrochoceruses.qpon^ +||albynyampa.cfd^ +||alcatza.com^ +||alcespnyx.cyou^ +||alchemymatchesconnections.com^ +||alchimychurnscreeky.qpon^ +||alcoholcheckoccur.com^ +||alczpohhzjaag.online^ +||aldazinteaks.cyou^ +||aldernowerby.cfd^ +||aldidevoiderhisn.cyou^ +||aldosesmajeure.com^ +||aldyrtdxccuep.space^ +||alefprimelyleskea.qpon^ +||aleftmamsell.qpon^ +||aleilu.com^ +||alengthbuttled.shop^ +||aleshotfifty.qpon^ +||alespeonor.com^ +||aleutrepkiehamuli.qpon^ +||alexabyte.site^ +||alexatracker.com^ +||alexiasparamamidate.cfd^ +||alfalfaemployeeresource.com^ +||alfasense.com^ +||alfredtrimfaith.com^ +||algatesportcesspit.cfd^ +||algebarhooted.qpon^ +||algebrasudrastared.cfd^ +||algesisgutsier.cfd^ +||algesismesse.cyou^ +||algkrqjbvnoib.online^ +||algorithmtoenergy.net^ +||alhblrwz.com^ +||alhkanbodrbve.online^ +||alia-iso.com^ +||aliasfoot.com^ +||alibifailed.com^ +||alibirasppoliteness.com^ +||alibisboast.com^ +||alibisstately.com^ +||aliciabesmutsmoiley.cyou^ +||alienateditem.com^ +||alienateparadise.com^ +||aliformpuneca.cyou^ +||alightattendancemerger.com^ +||alightrecentliterature.com^ +||alignboxbushvituper.qpon^ +||alignerspawnsessede.cyou^ +||aligninnetworks.com^ +||alikepublicity.com^ +||aliloveyousaidthe.com^ +||aliningsows.shop^ +||alinpay.store^ +||alipromo.com^ +||alisomymar.shop^ +||alisonlupomanarked.qpon^ +||alitems.co^ +||alitems.com^ +||alitems.site^ +||alive-airport.com^ +||alivecordoba.cfd^ +||aliveprompt.com^ +||aliveswim.pro^ +||aliwjo.com^ +||aljamasensum.qpon^ +||aljjihonjs.in^ +||aljmhztthtchf.icu^ +||aljothcgodyrw.space^ +||alkjwptwpvwzd.site^ +||allabc.com^ +||allaysnab.shop^ +||allbqusgepzmf.store^ +||alldatenow.com^ +||allegemagnanimityensue.com^ +||allegianceenableselfish.com^ +||alleliteads.com^ +||allenentasia.cfd^ +||allenepopedomunshod.cfd^ +||allenmare.com^ +||allenprepareattic.com^ +||allergicloaded.com^ +||allergybellowneck.com^ +||alleygoat.com^ +||allfreecounter.com^ +||alliancefurs.com^ +||allicebooky.shop^ +||alliedrebelcreative.com^ +||alliezarnichzande.cyou^ +||allocatedense.com^ +||allocationcaller.com^ +||allodiapreburn.com^ +||allodyqueys.qpon^ +||alloopunger.cfd^ +||allowingirksome.com^ +||allowoozoid.cfd^ +||allowsalmond.com^ +||allowseshehasn.com^ +||alloydigital.com^ +||alloystart.com^ +||allpornovids.com^ +||allputuphesa.com^ +||allsports4free.live^ +||allsports4free.online^ +||allstat-pp.ru^ +||allxgwgogikhd.site^ +||allyes.com^ +||allytextlore.qpon^ +||almasatten.com^ +||almightypush.com^ +||almiqueleeful.qpon^ +||almostextrudingmanhood.com^ +||almstda.tv^ +||almudswombat.shop^ +||alngdwetstglj.site^ +||aloatchuraimti.net^ +||aloftriottomato.com^ +||alonedisallowrearview.com^ +||alont.xyz^ +||alony.site^ +||aloofmigrans.cfd^ +||alooseprotepulvil.cfd^ +||alota.xyz^ +||aloudverite.shop^ +||aloxitebeiges.cyou^ +||alphabird.com^ +||alphonso.tv^ +||alpine-vpn.com^ +||alpyvupjggczt.space^ +||alqzmnvaxvzcu.website^ +||alsdebaticalfelixsto.org^ +||alsoqevmvvrsi.online^ +||alstsaaf.com^ +||altaiteloupe.qpon^ +||altawczmu.in^ +||altcoin.care^ +||alterassumeaggravate.com^ +||alternatewavyrid.com^ +||alternativecpmgate.com^ +||althorncymbals.qpon^ +||althornpukekodrewite.qpon^ +||altinblucher.cfd^ +||altitude-arena.com^ +||altoistgussieverves.cyou^ +||altruistic-departure.com^ +||altruisticemergency.com^ +||altynamoan.com^ +||altynnfxkfaal.space^ +||alumenbasural.qpon^ +||aluminumoutageprovince.com^ +||alumniheadfirstshamrock.com^ +||alundumdoodabthinned.cyou^ +||alunitesocks.cyou^ +||aluvhyxwjnqyo.site^ +||alveolazygaena.qpon^ +||alwaysdomain01.online^ +||alwayspainfully.com^ +||alwxamfivx.com^ +||alxbgo.com^ +||alxdtwbkjlgn.com^ +||alxfwwwnibtah.site^ +||alyfdrzipjquz.online^ +||alysson.de^ +||alzuogujpnija.website^ +||am15.net^ +||amaabfvuyispa.space^ +||amablesulfur.cyou^ +||amagy.qpon^ +||amaistfens.shop^ +||amakosacomates.shop^ +||amala-wav.com^ +||amamdaugeoqll.website^ +||amaniondinenoblify.qpon^ +||amateurcouplewebcam.com^ +||amativefaying.qpon^ +||amatolsaerage.cyou^ +||amazesbobet.cfd^ +||amazingblackened.com^ +||amazingmeaning.com^ +||amazon-adsystem.com^ +||ambaab.com^ +||ambashitler.qpon^ +||ambiciubzprxl.website^ +||ambientplatform.vn^ +||ambitionbookingslick.com^ +||ambitiousdemand.com^ +||ambitsunneatagone.cfd^ +||ambosmosts.cfd^ +||ambroty.xyz^ +||ambsacedeposeslance.cyou^ +||amebassamshoo.cyou^ +||amelatrina.com^ +||amendedodeum.shop^ +||amendmentbutterfly.com^ +||amendmentinsistdevotion.com^ +||amendmentlakeinterim.com^ +||amenrecorder.com^ +||amentalmobil.cyou^ +||amesgraduatel.xyz^ +||ametriamosey.shop^ +||amewtoehwajro.site^ +||amfgozboqtpjf.online^ +||amfoxwgipquyx.online^ +||amgdgt.com^ +||amiabledelinquent.com^ +||amidoxypochard.com^ +||amildarrobomb.com^ +||amilesunshell.qpon^ +||amineclarinelotoses.qpon^ +||aminicironers.cyou^ +||aminizeligure.qpon^ +||aminopay.net^ +||amixiamediatesparage.cyou^ +||amkuayezfbcyp.online^ +||amlumineona.com^ +||amlzndgkbicak.store^ +||ammanparulis.qpon^ +||ammhmvurnghxn.space^ +||ammnugdazobz.in^ +||ammonicdowsing.com^ +||ammzmkpzmfijv.website^ +||amnew.net^ +||amntx1.net^ +||amon1.net^ +||amoralforsteppe.com^ +||amoralstern.com^ +||amorphasalable.cfd^ +||amorphouscomprise.com^ +||amorphstied.cyou^ +||amountdonutproxy.com^ +||amoursspignet.cfd^ +||amovingimsonicvlsi.cyou^ +||amphorabirken.qpon^ +||ampmhcbehnapwt.com^ +||ampxchange.com^ +||amqkuedsdsube.site^ +||amqsguelufxcb.online^ +||amrellenullify.cyou^ +||amsctdspsyeqf.website^ +||amsgjybwclvoq.space^ +||amt3.com^ +||amtrakcitee.com^ +||amtropiusr.com^ +||amuletrisquee.cfd^ +||amuletshaped.com^ +||amuletsourcemadden.com^ +||amulna.click^ +||amunfezanttor.com^ +||amusgjaczncmg.site^ +||amusingbase.com^ +||amusinghump.com^ +||amuyongsentsarachne.cyou^ +||amveojmbffpma.online^ +||amvisicerya.cyou^ +||amwgisnagixqe.store^ +||amxrtb.com^ +||amxxetzokeezx.space^ +||amylaseredears.cyou^ +||amyldiarian.cfd^ +||amylojobbers.cyou^ +||amylumsachree.qpon^ +||amyrootdotiersylphs.qpon^ +||amzelathold.cfd^ +||amzfepdudlyvb.site^ +||amzystkjjhfdz.online^ +||anabiakissed.qpon^ +||anacidcaperer.qpon^ +||analitits.com^ +||analitycs.net^ +||analogydid.com^ +||analyzeunsettled.com^ +||anamaembush.com^ +||anamuel-careslie.com^ +||ananagnatty.cfd^ +||anankesfigurer.com^ +||ananterblatta.cyou^ +||ananterrogan.shop^ +||ananymyokel.cfd^ +||anapirate.com^ +||anarchyfamuli.qpon^ +||anastasia-international.com^ +||anastasiasaffiliate.com^ +||anattospursier.com^ +||anaywyvernsstickle.cfd^ +||ancestorheadquarters.com^ +||anchbatic.co.in^ +||anchorbiology.com^ +||anchored-hold.com^ +||anchoredfee.com^ +||ancient-pipe.com^ +||ancientmurine.com^ +||ancientsnow.com^ +||ancillammmm.com^ +||ancomeunbelts.cyou^ +||ancorzowxhci.in^ +||ancykwplparfu.website^ +||ancznewozw.com^ +||andoketagetes.cyou^ +||andrewcube.qpon^ +||andriametroaesop.cyou^ +||androidduvetscribble.com^ +||androltoughen.cyou^ +||aneathyocked.shop^ +||aneguftwymwfg.store^ +||anemiachoky.com^ +||anewfeedliberty.com^ +||anewicelike.qpon^ +||anfzdatekjeck.space^ +||angacfmjlfosw.website^ +||angelabedsautopsy.com^ +||angelaencouraging.com^ +||angelesfoldingpatsy.com^ +||angelicunioval.com^ +||angioidimmixt.shop^ +||anglezinccompassionate.com^ +||angliaeunedge.cfd^ +||angrilyanimatorcuddle.com^ +||angrilyrecede.com^ +||angry-quit.com^ +||angrymarketingprecise.com^ +||anguishaddition.com^ +||angularpoppyrobbing.com^ +||angulustwale.cyou^ +||anientechetahs.cfd^ +||anihazels.com^ +||anilinooos.cyou^ +||animasoorie.com^ +||animatedlook.com^ +||animeamigos.org^ +||animeloundry.com^ +||animenippon.cc^ +||animevideo.org^ +||animits.com^ +||animositycandiedcalmly.com^ +||animositycapitalist.com^ +||animositytalenttonight.com^ +||aninter.net^ +||anionsstond.cyou^ +||anisicsnowl.cyou^ +||aniuqjldrjcoq.website^ +||anjanstarved.com^ +||anjgxqnbefvpe.site^ +||anjvkuqelyc.com^ +||ankerghetto.cfd^ +||ankhsfoughty.shop^ +||anklungjervia.cfd^ +||ankolisiloam.com^ +||ankwgvrgrjqdr.site^ +||anlagesreeder.cyou^ +||anlkjufvlkago.site^ +||anlqrktcwmasw.space^ +||anlytics.co^ +||anmdr.link^ +||anmq6by5.xyz^ +||annesuspense.com^ +||annhatrivhu.in^ +||annihilationexteriorlooking.com^ +||anniversarydeletelots.com^ +||annjulokvbum.com^ +||announceproposition.com^ +||announcingmyrtleusual.com^ +||annoyancedisparity.com^ +||annulmentequitycereals.com^ +||annulusagt.com^ +||anodachwrhdbv.space^ +||anoeticgoniac.cfd^ +||anoliankerbed.qpon^ +||anomaloustinge.com^ +||anomitefricace.cyou^ +||anonangbiotics.cfd^ +||anonymadrona.qpon^ +||anonymecytoid.cfd^ +||anonymousads.com^ +||anothercable.pro^ +||anothereldestprogeny.com^ +||anotoenprmmen.space^ +||anoxicselect.com^ +||anpljaqzqopuy.com^ +||anqbfvjhoatdf.site^ +||anrfvqiycrybr.store^ +||ansionscor.com^ +||ansnxnkxsagnp.website^ +||ansuksar.com^ +||answysztidlal.website^ +||antalorcha.cfd^ +||antananarbdivu.com^ +||antarcticoffended.com^ +||antaresixora.cfd^ +||anteaterdriftrecast.com^ +||anterinaugure.cyou^ +||anthe-znn.com^ +||anthemportalcommence.com^ +||antiadblock.info^ +||antiadblocksystems.com^ +||antiarkinnor.shop^ +||antibioticdaybreak.com^ +||antibot.me^ +||anticipatedhatch.com^ +||antiliavex.shop^ +||antiopekerite.cfd^ +||antique-average.com^ +||antiquepillar.com^ +||antiqueskinnyminute.com^ +||antirustexistingtaking.com^ +||antiwargorgonseburine.cyou^ +||antlerlode.com^ +||antlermaze.com^ +||antmyth.com^ +||antoiew.com^ +||antonythwartlead.com^ +||antresboing.qpon^ +||antsstudio.world^ +||anubinwofully.cyou^ +||anunqsghebpjy.store^ +||anvilturpentineelitist.com^ +||anwgmaonmzz.com^ +||anwjlyjthfucs.website^ +||anxegytdedafg.site^ +||anxiousequal.com^ +||anyadx.live^ +||anym8.com^ +||anymind360.com^ +||anyplacecoming.com^ +||anytimebananarecoil.com^ +||anytimespurt.com^ +||anzmipalsa.in^ +||aoajgwnhfzuww.website^ +||aoakpnxffvpnb.online^ +||aoalmfwinbsstec23.com^ +||aoauizoaausjv.website^ +||aocaxppjxvhfj.online^ +||aocdqwzslgqlo.site^ +||aodhnoaolqxkm.space^ +||aoelyynxoztwi.space^ +||aofbfezksdfyc.website^ +||aofbnymupafe.com^ +||aofrrliqxrumq.site^ +||aoglfrntimnre.space^ +||aognpuqfhoozq.space^ +||aohegrogmzgxy.space^ +||aoicixdnneinb.online^ +||aoiferegauge.cfd^ +||aokqftjypnrrg.website^ +||aokrbjfklqvsd.space^ +||aokxcojgnjjkv.online^ +||aoliterzgyhnv.website^ +||aolqejkjfgxpr.website^ +||aommvcuqktmls.site^ +||aopwtbxzenjva.online^ +||aoqnsmllqdiby.website^ +||aordeficitspigots.cfd^ +||aortallulavim.cyou^ +||aorukwmdgbyry.space^ +||aorvgrrzkjras.store^ +||aotewsxzxbnzj.space^ +||aoulfalcestaunted.cyou^ +||aouvvblbuvhuo.online^ +||aoxvlbejkrvvh.online^ +||aoyptpffgxcjy.website^ +||aoyzivvtxwzev.online^ +||apandryloveedumbs.cyou^ +||apapuacauthong.com^ +||apasslone.cyou^ +||apatheticformingalbeit.com^ +||apathicduenas.cyou^ +||apathyfarsakhcarven.cyou^ +||apbdefsgvncbw.site^ +||apcdoxiqxiote.space^ +||apcognesykiyw.website^ +||apczazvwydwnz.club^ +||apdcpfgctvewj.space^ +||apeqdbvtbocth.website^ +||apereaofter.cfd^ +||apeschaunacuinage.cyou^ +||apewirelessdiscard.com^ +||apexesjessantblotch.cyou^ +||apexneedful.com^ +||apfjzhkkbguoc.site^ +||apfqoakmqrpqv.site^ +||apfrgjwzsgjqd.site^ +||apglinks.net^ +||aphacicaporoseminored.cyou^ +||aphidididlety.cfd^ +||aphoticlaiktinamou.qpon^ +||aphsikpqhbdfqx.com^ +||aphyricatossabuhr.cfd^ +||api168168.com^ +||api540.net^ +||apicesalmudedrest.cfd^ +||apidata.info^ +||apiecelee.com^ +||apinoiddevious.cyou^ +||apiouthyperlinks.net^ +||apirasutexruk.website^ +||apitongcantref.cfd^ +||apkomwofwbbjt.space^ +||apkyeimuizlax.space^ +||aplasted.com^ +||aplpmvfnyoxji.space^ +||apnpr.com^ +||apologiesneedleworkrising.com^ +||apologiesoccursdepressed.com^ +||apologyale.com^ +||aporiaecabda.com^ +||aporiasfoiledkiutle.cfd^ +||aporodiko.com^ +||aporoseunpitystet.qpon^ +||aposiasunfishoutbend.cyou^ +||apozemzebrule.com^ +||app-momentum.com^ +||appairsibblamina.qpon^ +||apparatusvoyage.com^ +||apparelimposter.com^ +||appearedon.com^ +||appearstick.com^ +||appeasehermione.com^ +||appendad.com^ +||appendixballroom.com^ +||appendixwarmingauthors.com^ +||appetitecamisolereawake.com^ +||appetitslavin.qpon^ +||applausetint.com^ +||apple.analnoe24.com^ +||applesometimes.com^ +||appliancecolaprofessor.com^ +||applicationassistantpal.com^ +||applicationsighgolden.com^ +||applicationsstereocanoe.com^ +||applierlignes.com^ +||applottopnetchile.cyou^ +||applstr.com^ +||appoineditardwide.com^ +||appointeeivyspongy.com^ +||appollo-plus.com^ +||appraisevariability.com^ +||apprenticelandfallenough.com^ +||apprizefugatos.cyou^ +||approvalnor.com^ +||approximatedriver.com^ +||appslime.com^ +||appstorages.com^ +||appsyoga.com^ +||apptjmp.com^ +||apptquitesouse.com^ +||appwebview.com^ +||apqchxhjdcudb.online^ +||apqqwpshxpgaq.xyz^ +||apremgacvfcwv.online^ +||apritvun.com^ +||apromoweb.com^ +||apronmemorableidentify.com^ +||apshmpzjmglgj.site^ +||apt-shine.com^ +||aptestabend.qpon^ +||aptitudebruise.com^ +||aptitudesupposedlyaccountant.com^ +||aptlyerring.com^ +||aptonnerventualke.org^ +||aptoticvermil.cyou^ +||aptpassage.com^ +||aptqpcaw.xyz^ +||aptwcewxlhufh.website^ +||apvdr.com^ +||apvroftoomqjy.site^ +||apvwiaqjvw.com^ +||apxbikolh.in^ +||apxbzaptyz.in^ +||apxlbzpsvdife.site^ +||apxlv.com^ +||apxusjwkdeuop.site^ +||apycdtdlkjqka.site^ +||apychzfrkjvyr.website^ +||apyqmsclrrslv.site^ +||aq7ua5ma85rddeinve.com^ +||aqatudxyzqtij.site^ +||aqauikfd.com^ +||aqazqbqdueeob.website^ +||aqcolwxuzyjyg.space^ +||aqczcwemqgiga.website^ +||aqdbfqsbnwpkb.website^ +||aqefcinrbylid.website^ +||aqeognplbpirm.space^ +||aqfxtibru.in^ +||aqgcfebwdqgve.online^ +||aqghjpsqpanwu.online^ +||aqgjgynufhoqp.site^ +||aqgpqtsksxsta.website^ +||aqgpvllbdjhmk.website^ +||aqgsrrzajswir.site^ +||aqhz.xyz^ +||aqiongxlma.com^ +||aqkqlshhyfmbf.store^ +||aqkvvkwriwqzm.space^ +||aqle3.com^ +||aqlphayjxwevf.site^ +||aqoifpujbbptd.space^ +||aqpmljbvacbpi.space^ +||aqqaqhcoxgjaw.site^ +||aqqxtdtrhzmiq.site^ +||aqrxpkilbxndv.site^ +||aqsimcvsjaknx.store^ +||aqtetrwhcthre.website^ +||aquentlytujim.com^ +||aqzavstbxxorj.website^ +||arabcontroversycrisis.com^ +||arabisdrench.shop^ +||arableillnesspersonnel.com^ +||aralego.com^ +||aralomomolachan.com^ +||araneaegave.qpon^ +||araneidboruca.com^ +||arangoclawk.com^ +||arapahoclinbribes.cfd^ +||ararobafozy.cyou^ +||arbaalette.cfd^ +||arbutterfreer.com^ +||arbutustentier.cfd^ +||arbwkzntfkfmz.website^ +||arcatogamest.com^ +||archaicfondlefork.com^ +||archaicmsflip.com^ +||archeqabbala.cfd^ +||archersoctantsglaceed.cfd^ +||archesarising.cyou^ +||archietypistordered.com^ +||archipelagokennelleadership.com^ +||archipelagosaidpre.com^ +||architectmalicemossy.com^ +||architecturediscussdifferently.com^ +||archivefrom502.com^ +||archivescane.com^ +||archspyandi.cfd^ +||archwaypikapleura.cfd^ +||arcmocbztwfsu.space^ +||arcoseijo.com^ +||arctic-boat.pro^ +||arcticattention.com^ +||arctichold.pro^ +||arcticinspector.com^ +||arctoidarmeria.shop^ +||arctwjodckpyz.site^ +||arcuseskerner.cfd^ +||ardassboyausunglobe.cfd^ +||ardeablesser.qpon^ +||ardeliagaolers.cfd^ +||ardentlydrivablepagan.com^ +||ardont.xyz^ +||ardosffaffi.in^ +||arduretrowing.cyou^ +||areallystaiatownies.qpon^ +||areareweld.com^ +||areasnap.com^ +||areekpinta.cfd^ +||arespissy.cfd^ +||aresttuxes.cyou^ +||argalasaminscurship.qpon^ +||argalsagua.cyou^ +||argansnubbin.qpon^ +||arganspaonetc.qpon^ +||argasthuya.cyou^ +||arglesmtn.com^ +||arglingpistole.com^ +||argolidwealden.cfd^ +||argrowlitheor.com^ +||arguebakery.com^ +||arguerstaiaha.cfd^ +||argufyterence.qpon^ +||argumentnoblesmanages.com^ +||argumentobligedparchment.com^ +||argumentreefpeace.com^ +||argusesgneissy.qpon^ +||argyllbests.qpon^ +||arhatsfenman.com^ +||aribo.xyz^ +||arid-smell.pro^ +||aridgebean.cfd^ +||arieslongues.cfd^ +||arilledclimant.qpon^ +||arimaspdeek.com^ +||arimaspthram.qpon^ +||ariotgribble.com^ +||aristolsah.cfd^ +||arithpouted.com^ +||arjkyishfnbms.site^ +||arkdcz.com^ +||arkfacialdaybreak.com^ +||arkharmonious.com^ +||arkieeria.qpon^ +||arklwdbnkkhj.com^ +||arknightsendfield.site^ +||arkwglkwhnhce.store^ +||arlcumwyzkijq.site^ +||arllzfdoodulm.space^ +||arlyinthespringas.com^ +||armfhefszehro.site^ +||armingberith.shop^ +||arminius.io^ +||armlockamlikar.shop^ +||armlocknanes.cfd^ +||armpitgratitudecruelty.com^ +||armsgross.com^ +||armsizeabram.cyou^ +||armsnerveattestation.com^ +||army.delivery^ +||arnattoprana.com^ +||arnimalconeer.com^ +||arnitendido.cfd^ +||aroarbur.qpon^ +||aromaticdiscount.pro^ +||arosedown.com^ +||aroundcommoditysway.com^ +||arousalfishful.qpon^ +||arousedimitateplane.com^ +||arowpinenes.cyou^ +||aroxumtoe.com^ +||arozyzigxyfnt.online^ +||arpoyoiriphet.space^ +||arqjnojtrrwfd.space^ +||arrangedateslocally.com^ +||arrangementsfilter.com^ +||arraseseiffel.qpon^ +||arraydepressinginnocence.com^ +||arraysbistres.cfd^ +||arrfhqatlseth.online^ +||arrierotuik.shop^ +||arrivedeuropean.com^ +||arrivedletdown.qpon^ +||arrivedmuffin.com^ +||arrivespeck.com^ +||arrivingserpentoutbalance.com^ +||arrnaught.com^ +||arrogancedanderuntruth.com^ +||arrondihaycockdurity.cyou^ +||arrtakhihfze.in^ +||arsenylasearch.com^ +||arsfgwdikbeic.space^ +||arshinspraams.cyou^ +||arsinesaroynttarten.cyou^ +||arsonincreasingmedic.com^ +||arswabluchan.com^ +||artcapturemumble.com^ +||arterybasin.com^ +||arterymanward.qpon^ +||articlegarlandferment.com^ +||articlepawn.com^ +||artificialboughtme.com^ +||artilyleveche.qpon^ +||artlvpfgfrgru.site^ +||artlybeam.shop^ +||artsyharicot.com^ +||artwareintinct.cyou^ +||artwareshambu.com^ +||arubdaraqigxc.site^ +||arubiueqdfrzm.space^ +||aruranmbqiyus.store^ +||arvigorothan.com^ +||arwdcrdpiwinc.site^ +||arwhpetevielbj.com^ +||arwwalylihgph.online^ +||arylsynetic.cyou^ +||arzawaswarfpratt.qpon^ +||as5000.com^ +||asacdn.com^ +||asafesite.com^ +||asagazsfxlgvx.space^ +||asaumbakblnpj.space^ +||asaumpimlqysg.site^ +||asayfwihbwkii.space^ +||asbestscoliid.cfd^ +||asbfala.com^ +||asccdn.com^ +||asce.xyz^ +||asceireiymnfd.website^ +||ascellaredries.com^ +||ascentlitigateunsaved.com^ +||ascertainowlbookkeeper.com^ +||ascidiaoffbeat.cyou^ +||ascncuacdwh.in^ +||asdasdad.net^ +||asdccxpbkxzme.space^ +||asdnow.xyz^ +||asecv.xyz^ +||aseinprofitefukhatex.com^ +||asensoithecb.com^ +||asepourioter.com^ +||aserve1.net^ +||asewlfjqwlflkew.com^ +||asf4f.us^ +||asfagscirw.in^ +||asgadmp.cc^ +||asgadsts.cc^ +||asgarddeanbhunder.cyou^ +||asgclick.com^ +||asgmtwatson.qpon^ +||ashamed-diamond.com^ +||ashamed-temperature.com^ +||ashamedleague.pro^ +||ashamedresist.com^ +||ashameskirmishcontinuing.com^ +||ashcanwealden.cfd^ +||ashcdn.com^ +||ashhgo.com^ +||ashlessergotin.cyou^ +||ashnmlhfqcnph.online^ +||ashorenorris.com^ +||ashrivetgulped.com^ +||ashtrayexportmanage.com^ +||ashtraysuburb.com^ +||ashtraythreederange.com^ +||ashturfchap.com^ +||asiangfsex.com^ +||asianxhub.com^ +||asilusdeploys.cyou^ +||asilusspirket.cfd^ +||asinlovewiththem.org^ +||asjitqwjvodhr.site^ +||askancerificolor.qpon^ +||askdomainad.com^ +||askesiscyclene.cfd^ +||askewrefusaltrashy.com^ +||askkoskyjzjxf.website^ +||asklrrpryvarf.website^ +||askmebefore.biz^ +||askprivate.com^ +||asleepextraordinary.com^ +||aslnk.link^ +||aslopgaped.shop^ +||aslopgliffy.cyou^ +||asnjaopezmnao.online^ +||asnlwihpumczi.website^ +||aso1.net^ +||asohiejixgvry.site^ +||asokapygmoid.com^ +||asopn.com^ +||aspectreinforce.com^ +||asperencium.com^ +||aspignitean.com^ +||aspirationprogrammecontains.com^ +||aspiredemeaningmarvelous.com^ +||aspirincountryprofound.com^ +||aspirinleveloriginally.com^ +||asprnrwmfvxkv.website^ +||asqconn.com^ +||asqdfuhwian.com^ +||asrbyvjdlhqqt.store^ +||asrety.com^ +||asrop.xyz^ +||assassinationapprenticeedible.com^ +||assautlazars.shop^ +||asscfpprqsurr.online^ +||assealsulfion.com^ +||asselffixt.qpon^ +||assembleservers.com^ +||assemblyexchange.com^ +||assertedclosureseaman.com^ +||assertwinter.com^ +||assethjardonideist.cyou^ +||assetize.com^ +||assimilatecigarettes.com^ +||assisspoof.shop^ +||assistantinsignificantthings.com^ +||assisthaboub.com^ +||associationfoam.com^ +||assortamplitudeoctober.com^ +||assuagegeoside.qpon^ +||assumeflippers.com^ +||assumptiveslumber.com^ +||assuranceapprobationblackbird.com^ +||assured-sandwich.com^ +||assurgeamictusnoyau.cfd^ +||assyctifor.com^ +||assyriaupbuild.com^ +||astablehazanut.cyou^ +||astartlycea.qpon^ +||astasiabedels.cfd^ +||astasiabunyahdionym.qpon^ +||astasiataversouthowl.qpon^ +||astelicbanes.com^ +||astelyerthen.qpon^ +||asterbiscusys.com^ +||asterouhavenev.org^ +||asterrakionor.com^ +||astertplashes.cyou^ +||astfhcceyvyag.site^ +||asthmanotchcave.com^ +||asthmasburr.cyou^ +||astintpyrryl.cyou^ +||astjigglypuffchan.com^ +||astoapsu.com^ +||astonishlandmassnervy.com^ +||astonishmentfriedcount.com^ +||astonishmentfuneral.com^ +||astraor770.com^ +||astrokompas.com^ +||astrologybacklightsinless.com^ +||astrologyflyabletruth.com^ +||astronautlividlyreformer.com^ +||asuddensterope.qpon^ +||asunderfacilitydealt.com^ +||asvrjggmshgesem.com^ +||aswashfoutelatania.cyou^ +||asylerifest.qpon^ +||aszsfjntyvrbg.website^ +||atableofcup.com^ +||ataiyalmeconinbelle.cyou^ +||ataiyalstrays.com^ +||atala-apw.com^ +||atamanhoarishboredom.qpon^ +||atamarvtcznxj.website^ +||atampharosom.com^ +||atatottlesozolic.cyou^ +||atauntglopnen.qpon^ +||atavismbesoul.cyou^ +||atavismoozier.qpon^ +||ataykgrzwrplt.site^ +||atbhlvyasqeo.com^ +||atdeerlinga.com^ +||atdmt.com^ +||atebanummaryamatols.cyou^ +||atecomprisedispel.com^ +||aterianbrisket.shop^ +||atgsryac.in^ +||atgvmlnbtnlxl.website^ +||athaveresultedinncr.org^ +||athelittlewallo.com^ +||athenabancahaybote.cfd^ +||atheslkgczrrp.online^ +||athletewindfall.com^ +||athlg.com^ +||athogenmantua.qpon^ +||atholicncesispe.info^ +||athorthomedgrushie.cfd^ +||athyimemediat.org^ +||athyriasizysessile.qpon^ +||atikfierjwwew.online^ +||atimygud.cyou^ +||atiukstssfixi.space^ +||atkoxjrndvsct.online^ +||atlastwo.com^ +||atlatlstanks.qpon^ +||atlbhrkdrcmxg.online^ +||atmalinks.com^ +||atmenttogether.org^ +||atncfddwenjgt.website^ +||atochavespoid.cfd^ +||atokegriqua.qpon^ +||atomex.net^ +||atonato.de^ +||atonejagongdespoil.cyou^ +||atonementimmersedlacerate.com^ +||atonicophioidbiberon.cyou^ +||atonicskinemahollers.qpon^ +||atpsjprnuspug.site^ +||atqjthrqgcjkf.website^ +||atqxowwznoqkm.site^ +||atraff.com^ +||atredepuddle.cfd^ +||atrennepeixere.cyou^ +||atrepsycoachs.cyou^ +||atriblewhilere.shop^ +||atriumstables.cyou^ +||atrophychumpreentry.com^ +||atroposwithhie.qpon^ +||atsg.me^ +||atsnisdwrubdu.space^ +||atswfbonkmkrw.website^ +||attaccocalusarspaces.cfd^ +||attacheatableoverlabor.com^ +||attachedglorysticks.com^ +||attachedkneel.com^ +||attackastonishment.com^ +||attackedwary.com^ +||attacksdecisioncafeteria.com^ +||attacksveteran.com^ +||attagengrillslocarno.cyou^ +||attaingeoffrey.com^ +||attainnumerous.com^ +||attaleaeblisbreezy.qpon^ +||attalgrandly.cfd^ +||attarsclallam.qpon^ +||attaskanker.cyou^ +||attempttensionfrom.com^ +||attempttipsrye.com^ +||attendanceoffvow.com^ +||attendantentertainmentmotorway.com^ +||attendedlickhorizontally.com^ +||attendsdeewan.com^ +||attentionantecedentsuperb.com^ +||attentive-path.com^ +||attgrane.shop^ +||atticcourthousetechnique.com^ +||atticinsofar.shop^ +||attirecideryeah.com^ +||attpmhuguafrl.space^ +||attqbruefzfsc.space^ +||attractiondetectivesfranchise.com^ +||attractive-external.pro^ +||attractivecutier9t3.com^ +||attractivereception.com^ +||attrapincha.com^ +||attributedconcernedamendable.com^ +||attributedrelease.com^ +||attristerebus.cfd^ +||attrqqbnbjxkg.website^ +||attunedunsanefisk.qpon^ +||attuneslew.cyou^ +||atubryjsbface.website^ +||atuedidnotk.com^ +||atuletoheroa.cfd^ +||atuxrmazzebah.site^ +||atvvuchvbfkml.site^ +||atwindutra.qpon^ +||atwodxnrmpabe.space^ +||atwola.com^ +||atypyaxis.shop^ +||atytentioniaukmla.org^ +||atyvapfwastoa.space^ +||atzonebd.com^ +||auajhmhuyzfel.online^ +||aubhgnoealbnx.space^ +||aubindratzonate.cfd^ +||aubreyfluking.qpon^ +||aubsaysnbrvsp.space^ +||auburn9819.com^ +||auchoahy.net^ +||aucubaworkdayreviver.cfd^ +||audaciousedifice.com^ +||audhwnmaanyqg.website^ +||audiblyacademyadaptation.com^ +||audiblyjinx.com^ +||audiencefuel.com^ +||audiencegarret.com^ +||audientdirts.qpon^ +||audilesincord.cfd^ +||audionews.fm^ +||auditioneasterhelm.com^ +||auditioningborder.com^ +||auditmelloneonlepy.cfd^ +||auditorytuesdaypoll.com^ +||audmrk.com^ +||auforau.com^ +||aughhatchet.cyou^ +||augpgcsnbrsks.space^ +||august15download.com^ +||augustboyby.com^ +||auhwfcyikuqam.club^ +||auibdnglnixan.space^ +||auikeilhosl.com^ +||aukgiecbioahe.website^ +||aukharier.cyou^ +||aukjylvsljien.site^ +||aukygkusnaqxf.online^ +||aulahmuuniglx.space^ +||aulossyllab.qpon^ +||aumeryoilcakeswag.cyou^ +||aunehofyojgfq.space^ +||aunnnuvegyzfm.website^ +||aunsaick.com^ +||aunstollarinets.com^ +||aunterberainpyr.qpon^ +||auntiesurfeatable.com^ +||auovksdjuotdb.space^ +||aupsuwvfyqnpf.online^ +||aupvktqxpirtu.space^ +||auqot.com^ +||aureliatmeses.com^ +||aurifygret.cyou^ +||aurirdelicatgimped.qpon^ +||auroraemacaca.cyou^ +||auroraveil.bid^ +||aurousroseola.com^ +||aurumsaucestapirs.cyou^ +||ausmflow.com^ +||auspipe.com^ +||aussiesuitor.qpon^ +||austerefriendship.com^ +||autchoog.net^ +||auteboon.net^ +||autemsubtend.shop^ +||authentic-criticism.com^ +||authenticchemistry.pro^ +||authenticflirtatious.com^ +||author272.com^ +||author279.net^ +||authoritativegrandchildpause.com^ +||authoritieswoundjoint.com^ +||authorizedimmediate.com^ +||authorizedmorning.com^ +||authorizevanquishcovering.com^ +||autismspassers.cyou^ +||auto-deploy.pages.dev^ +||autographmarquisbuffet.com^ +||automatedtraffic.com^ +||automatic-profit.pro^ +||automobiledeem.com^ +||auxdciugyclyi.space^ +||auxesestailorspiligan.cyou^ +||auxgkjsoqgzko.space^ +||auxml.com^ +||auypgtmvwerhh.store^ +||auzrhbhbylxhy.site^ +||auztzwjhpjwwm.site^ +||avads.co.uk^ +||avads.live^ +||availableshove.com^ +||avalancheofnews.com^ +||avalanchetremorunfilled.com^ +||avazu.net^ +||avazutracking.net^ +||avbsqhunnykee.site^ +||avcguvqizap.com^ +||avdludlmpseoe.space^ +||avebeentriflin.com^ +||avelpwnzhdoyx.site^ +||avenuenineteenthendorsement.com^ +||avernepotalmanbria.cfd^ +||averralcaking.cfd^ +||avesmutuspschent.cyou^ +||avglvolxsgfkp.site^ +||avgony.xyz^ +||avhlvyyhjhvli.site^ +||avhmfatkalwy.in^ +||avhtaapxml.com^ +||avichistaverkhasa.cfd^ +||avidlyruntee.shop^ +||aviiivsxdmbgc.site^ +||avjlllfpqvloi.website^ +||avkauywgzdxlx.online^ +||avkszbsmzamaj.site^ +||avktoxbxkrm.com^ +||avlmy.com^ +||avmmsekplixsk.space^ +||avmviiih.com^ +||avnhqqqoljvgf.space^ +||avnwqayeafuve.website^ +||avouchuramil.com^ +||avourpimlicodoping.cyou^ +||avowcosmo.cfd^ +||avpjihtkjsnfe.space^ +||avqovczcoanp.com^ +||avrgeawynrniq.space^ +||avsrbqzidceec.site^ +||avsrzobzacm.in^ +||avthelkp.net^ +||avtvatnpfbhtk.website^ +||avuibxulygfyx.online^ +||avvobqwi.in^ +||avxskbxkmtawx.space^ +||avysloobiescecca.cyou^ +||avytybblrvweh.space^ +||avzaqmaoryehd.website^ +||avzmhurdchosj.space^ +||awaitingcoordinatelassitude.com^ +||awakecedesurplus.com^ +||awakeexterior.com^ +||awardchirpingenunciate.com^ +||awardedam.shop^ +||awarecatching.com^ +||awarenessprovisions.com^ +||awbbcre.com^ +||awbbjmp.com^ +||awberaurir.com^ +||awbrwrywkwqwj.top^ +||awcdwdfygrroo.store^ +||awcrpu.com^ +||awcudwyjwypzu.space^ +||awdeliverynet.com^ +||awdfkryyfgmqd.website^ +||awecr.com^ +||awecre.com^ +||awecrptjmp.com^ +||awejmp.com^ +||awembd.com^ +||awemdia.com^ +||awempt.com^ +||awemwh.com^ +||awentw.com^ +||aweproto.com^ +||aweprotostatic.com^ +||aweprt.com^ +||awepsi.com^ +||awepsljan.com^ +||awept.com^ +||aweresolve.com^ +||awesome-blocker.com^ +||awesomeessay.pro^ +||awesomeststuff.com^ +||awesomewash.pro^ +||awestatic.com^ +||awfulagency.pro^ +||awfullyninghakeem.qpon^ +||awfullystockyregions.com^ +||awgolwafqcwpe.space^ +||awhilediplomagloss.com^ +||awiikkjgstrym.online^ +||awinglyarianatupaiid.qpon^ +||awistats.com^ +||awitewmdutflhj.com^ +||awjojjrimaf.in^ +||awkbkkqkqmmva.top^ +||awkward-body.pro^ +||awkward-clue.com^ +||awkzelrfgaudx.space^ +||awlpiert.shop^ +||awltovhc.com^ +||awmbed.com^ +||awmdelivery.com^ +||awmplus.com^ +||awmradivlamtw.online^ +||awnedkibbercapcase.cyou^ +||awnexus.com^ +||awnypearch.com^ +||awokechirked.cfd^ +||awokensilicyl.cyou^ +||awolbitt.cyou^ +||awozdcvzjgbnh.online^ +||awpcrpu.com^ +||awprt.com^ +||awptjmp.com^ +||awptlpu.com^ +||awrgykbzmzmjz.online^ +||awrwwedcoeeyq.site^ +||awryau.com^ +||aws-itcloud.net^ +||awsurveys.com^ +||awudlmfxtetxh.com^ +||awumnf.com^ +||awvrnescbvwlo.website^ +||awxdlwbxqjnoi.online^ +||awzpvorsyltel.website^ +||axabpelvjfqav.site^ +||axdzmrruiattf.website^ +||axeldivision.com^ +||axflodwxzvggp.online^ +||axfwlkeyqdntp.site^ +||axgbr.com^ +||axilix.net^ +||axininboardincaged.cfd^ +||axis13.net^ +||axisdoctrine.com^ +||axisswat.cfd^ +||axiteszings.cfd^ +||axjndvucr.com^ +||axkgummig.in^ +||axkojdfhek.com^ +||axkrpvezkxmar.website^ +||axltkuanrhyuz.space^ +||axmaxhsa.com^ +||axmmilepqvdyj.world^ +||axojwdxauwpaa.online^ +||axolotlly.com^ +||axonanotto.qpon^ +||axonboaster.cfd^ +||axonix.com^ +||axorawebnet.com^ +||axoxktmvnhtav.site^ +||axpedsqboflar.space^ +||axshhgmltiycy.site^ +||axupfpniadauk.site^ +||axvjfzbwezssw.site^ +||axwpbsweuwclq.space^ +||axwyfulzdxrdi.space^ +||axxodcdufa.in^ +||axxqqibnjdunk.space^ +||ay.delivery^ +||ay267.com^ +||ayads.co^ +||ayarkkbmakkja.top^ +||aycrxa.com^ +||ayctbhlndyarx.space^ +||aycygyzfhvolf.space^ +||ayeararu.qpon^ +||ayfixvgbijkba.online^ +||ayghoddmrzret.space^ +||ayhleywwvdply.space^ +||ayhnnonnjqgkb.space^ +||ayhnnqidbjxep.online^ +||ayintothefre.org^ +||ayitkkxrctkia.online^ +||ayivynqlnxdvv.site^ +||ayjvwlrbjamyv.top^ +||ayjxqgxvefyuv.space^ +||aykntvkvdwtru.online^ +||aymoabxgahihu.world^ +||aymomaxssspsr.site^ +||aynaenowglesp.online^ +||aypgkxgnetnxd.site^ +||ayrequeasy.cyou^ +||ayujucfsngjvl.space^ +||ayuteefrhwkml.online^ +||ayuyublipped.com^ +||ayvpzajhrscsw.website^ +||ayyegtlbnqown.space^ +||azarolepikelet.cyou^ +||azazyjjovmvov.top^ +||azazyjjovmyow.top^ +||azbjisdbhjwdq.website^ +||azbjjbwvqozvj.top^ +||azbtyfvqjuiyc.store^ +||azcfnbfhxfytj.online^ +||azdsaiemqwjdr.site^ +||azdwxoztaualz.site^ +||azebzuomgb.com^ +||azenka.one^ +||azeriondigital.com^ +||azfpkrxjbsduf.space^ +||azgftoymwpszx.online^ +||azhobfzcwtxvj.website^ +||azimidetubbist.qpon^ +||azjmp.com^ +||azknucfjdcecq.online^ +||azkwwrejomwjb.top^ +||azkwwrejomzjm.top^ +||azlqhukr.in^ +||azmexngawjzhx.space^ +||aznapoz.info^ +||azofierleggincanela.cfd^ +||azofierlogliketourize.cyou^ +||azolemimmed.qpon^ +||azoniumtiangue.top^ +||azoogleads.com^ +||azothatollspace.qpon^ +||azotousdeports.shop^ +||azoximematapi.com^ +||azoximemurrah.cyou^ +||azqaaslam.com^ +||azqqlobqwomqr.top^ +||azskk.com^ +||azsqyupwulmgx.site^ +||aztciboopxfhe.site^ +||aztecaviewier.shop^ +||aztizumgcjnwa.site^ +||aztumqassickf.space^ +||azurestealth.com^ +||azwvcioqzjtu.in^ +||azyfgghezmgho.site^ +||azygotesonless.com^ +||azymousmascots.qpon^ +||azzncoswof.com^ +||azznwuc.com^ +||azzulqlecucki.space^ +||b-m.xyz^ +||b02byun5xc3s.com^ +||b082df0e81.com^ +||b0f0e80461.com^ +||b0f3731d0a.com^ +||b14ae1c233.com^ +||b18eed6eae.com^ +||b1ll3r11.xyz^ +||b1xuekes.xyz^ +||b240ea4ef8.com^ +||b2cd8956b2.com^ +||b2f5a87e42.com^ +||b34fdbe934.com^ +||b35fc2842a.com^ +||b35febe6f7.com^ +||b3953dfb4c.com^ +||b3af5148b5.com^ +||b3beca4e4a.com^ +||b3c8e0896a.com^ +||b3d20e1c1e.com^ +||b3juuqn64of6fx12x81ipcw.cfd^ +||b3mny.com^ +||b3stcond1tions.com^ +||b42rracj.com^ +||b46c27d3ea.com^ +||b49ef71449.com^ +||b4c73f11d0.com^ +||b58ncoa1c07f.com^ +||b5e17bdf06.com^ +||b5g4fogm33xg9yg.cfd^ +||b5ovilufcvcjp6m2fgvc.rest^ +||b60756935f.com^ +||b636cce57e.com^ +||b6587458ed.com^ +||b681514051.com^ +||b69b92742d.com^ +||b6c9c4cf28.com^ +||b6f2a46f29.com^ +||b6w3qq1bo9qo8t5ng2334.cfd^ +||b7360c81c8.com^ +||b7510.com^ +||b752ovzn4i5wir9ty1y59ge.cfd^ +||b7ec509038.com^ +||b8036a31fa.com^ +||b87pvoit88io55x6geih8xiiix.cfd^ +||b8d682e30f.com^ +||b8e2af647f.com^ +||b8mno1j316py7x6.rest^ +||b8pfulzbyj7h.com^ +||b90ff16eb6.com^ +||b91d64b331.com^ +||b9a5d8ff72.com^ +||b9k4b9o7hlv1ml.cfd^ +||ba0a48f77b.com^ +||ba61261c39.com^ +||ba6174e1cd.com^ +||ba69a24a2a.com^ +||baalathsodstechnol.qpon^ +||baalismgrumlyembrue.qpon^ +||baauefhlsruga.online^ +||bab3105053.com^ +||babbledqatigname.qpon^ +||babkamosaistchared.qpon^ +||babmc.com^ +||babtdzubsocvh.space^ +||babulssox.com^ +||babushungerelfland.cyou^ +||babwandle.qpon^ +||babyboomboomads.com^ +||babyhonoursspoken.com^ +||baccarat212.com^ +||bacchaenaggar.com^ +||bacchusmoisten.shop^ +||backachedimpleparalyses.com^ +||backachegrudgesiamese.com^ +||backeraxones.shop^ +||backfiremountslippery.com^ +||backgroundfromdynamics.com^ +||backspinreentryupright.com^ +||backstageemergencyblame.com^ +||backwashcrowdstylized.com^ +||bacteriaministry.com^ +||bacteriapokemoney.com^ +||bacurypredy.com^ +||badgegirdle.com^ +||badjocks.com^ +||badlandlispyippee.com^ +||badsllcvgillm.space^ +||baeizhplymdyc.site^ +||baelmemordafalcon.qpon^ +||baezlvydomldo.space^ +||baf3838b31.com^ +||baffiesriccia.cyou^ +||baffingtamises.cyou^ +||bafircvoj.com^ +||bafpfsxcio.com^ +||bafvhdnsctdd.com^ +||bafyiwdcpkbkk.online^ +||bagelnewtakelycine.qpon^ +||baggageconservationcaught.com^ +||baggedverdesedent.qpon^ +||baggerspaces.com^ +||baggerumney.cyou^ +||baggy-water.com^ +||baggydepreciate.com^ +||baggymaintenance.com^ +||baghelinetwise.shop^ +||bagiemoy.cyou^ +||bagleparnas.shop^ +||bagnfqmhhbkdt.online^ +||bagobokvarneraint.cyou^ +||bagpipemonogamypercent.com^ +||bagroomkhaiki.qpon^ +||bagsgarnish.com^ +||bagsimportancepropose.com^ +||baguettefactornervous.com^ +||baguioattalea.com^ +||bahoekokovidkids.cyou^ +||bahutshuller.cyou^ +||bailbezetta.cfd^ +||bailiffstrapwanted.com^ +||bailiffzealous.com^ +||baithoph.net^ +||bajreepiferoduets.qpon^ +||bajreesunrose.qpon^ +||bajrieyebrowsenusi.cfd^ +||bajyiflenzdxl.space^ +||bakaevzrmcqdo.global^ +||bakersequaled.com^ +||bakingbeheld.com^ +||bakingsensitivenesswise.com^ +||baklwjoyoatfv.site^ +||bakteso.ru^ +||balanceaquarid.qpon^ +||balancedsuppercreed.com^ +||balanicdelversnomarch.cyou^ +||balasesersatz.com^ +||balattebutanol.qpon^ +||balconelichens.cfd^ +||baldeninfarehappier.cfd^ +||baldieyengees.cfd^ +||baleareheaf.qpon^ +||balersechoers.qpon^ +||baletingo.com^ +||balianbassos.qpon^ +||baliaracanaindiary.cyou^ +||balkersestian.com^ +||balkliving.com^ +||balletscorpnsyria.qpon^ +||ballingnanpie.cfd^ +||ballistashlers.qpon^ +||ballobarling.qpon^ +||ballroomprudentauditorium.com^ +||ballsylushing.cfd^ +||ballyaxche.cfd^ +||balmobligedelder.com^ +||balmyrind.com^ +||balneasurest.qpon^ +||baloe.xyz^ +||balox.xyz^ +||balphyra.com^ +||balpianismivan.qpon^ +||balsacambuca.cyou^ +||balteraided.qpon^ +||balteusngapi.cfd^ +||balteusrail.qpon^ +||balunkalends.com^ +||balvalur.com^ +||balzadicyema.com^ +||bamaliphoodingromana.qpon^ +||bambarawheel.qpon^ +||banagosealers.qpon^ +||bananasadvocate.com^ +||bananascasketuntrue.com^ +||banatfizzlesgaffe.qpon^ +||bancaleafe.xyz^ +||bancusnonpeak.cyou^ +||bandargoma.cyou^ +||bandidoaluco.cfd^ +||bandoraclink.com^ +||bandswell.com^ +||banefulpunkas.com^ +||bangerwhip.cfd^ +||bangtyranclank.com^ +||banhq.com^ +||banigbunks.shop^ +||banisterslisp.com^ +||banjoesfescue.qpon^ +||bankerconcludeshare.com^ +||bankergracestool.com^ +||bankingbloatedcaptive.com^ +||bankingconcede.com^ +||bankinghelpfuldestructive.com^ +||bankmanus.cfd^ +||banksiamisting.cfd^ +||banner-iframe.com^ +||banneradsday.com^ +||banneroctober.store^ +||banners5html2.com^ +||bannisterflaskputdown.com^ +||bansloxiaconked.cyou^ +||banszzwdyecvj.space^ +||bantaculei.cfd^ +||bantamsonefold.com^ +||banyanlosang.qpon^ +||baohkgpwemaur.store^ +||baptizeillusion.com^ +||baqbargafwlvd.site^ +||baqczoryagbvi.online^ +||baqsjlfdaorou.space^ +||baqtxlxxvtnwx.online^ +||barbaracitreanamiga.cyou^ +||barbeauluhinga.qpon^ +||barbecueasleeprealistic.com^ +||barbellcomates.shop^ +||barbopposit.qpon^ +||barboscaught.com^ +||barboycreme.com^ +||barbraoutsold.cfd^ +||barbuannular.cyou^ +||barbulasnippet.qpon^ +||barbuleclionacowbird.qpon^ +||barbuttriplet.cfd^ +||bardatm.ru^ +||bardinghuggery.com^ +||bardishgonifs.cfd^ +||bardsvampire.cyou^ +||bare-type.pro^ +||baredue.pro^ +||barelydonkeysteed.com^ +||bargeeoxamid.cfd^ +||bargingjabber.com^ +||barinvent.net^ +||baritescarve.cfd^ +||barkanneumeseuro.cyou^ +||barkequilibrium.com^ +||barlo.xyz^ +||barnabaslinger.com^ +||barnaclecocoonjest.com^ +||barnaclerefutation.com^ +||barnagemere.com^ +||barneyselfin.cfd^ +||barometercorrodingunease.com^ +||barrackmuppetunhealthy.com^ +||barrasdockage.com^ +||barrelaffloofatrophy.qpon^ +||barrier2plugins.net^ +||barsshrug.com^ +||bartcons.com^ +||bartererfaxtingling.com^ +||bartonpriority.com^ +||barundilissomegreing.qpon^ +||baryesagrecamisia.cfd^ +||baryticbotels.cfd^ +||baseballletters.com^ +||baselinetoisolated.net^ +||basementyachtendorsement.com^ +||baseporno.com^ +||basereldinmatti.cyou^ +||bashconnecting.com^ +||basheighthnumerous.com^ +||bashfortitudeaffability.com^ +||bashkabikis.shop^ +||bashlikenviers.cyou^ +||bashnourish.com^ +||basic-article.com^ +||basic-novel.pro^ +||basicallyfortitude.com^ +||basicallyscratchinvestment.com^ +||basicallyspacecraft.com^ +||basinalbreach.qpon^ +||basingkafila.cfd^ +||basinthug.com^ +||basionanonol.cfd^ +||basisdukumacric.cyou^ +||basketballshameless.com^ +||basnatcoignes.qpon^ +||basoidclary.cfd^ +||bassemeraldlizzie.com^ +||bassiacoal.qpon^ +||bassingyeansringite.cfd^ +||bassistbaht.cfd^ +||bastardnonethelessuseless.com^ +||basterwarpspuffed.qpon^ +||bastitemomme.shop^ +||batcrack.icu^ +||batebalmy.com^ +||baterbalafohust.cyou^ +||batesurveyed.com^ +||batfowlbuna.cyou^ +||batfultrullo.cfd^ +||bathepoliteness.com^ +||batheunits.com^ +||bathtubabdomencoarse.com^ +||batilevwwijjj.online^ +||batoktor.in^ +||batplexure.qpon^ +||battlescalpelrut.com^ +||battpkt.cyou^ +||battutoallium.shop^ +||battutocritics.com^ +||batzenabies.cyou^ +||bauderyhistory.cfd^ +||bavbfmokxwqtn.space^ +||bavdxafbegkvr.space^ +||bavoadmjdqhus.website^ +||bawarojxbcrnv.space^ +||bawattbzy.com^ +||bawcockburstedmermis.qpon^ +||bawixi.xyz^ +||bawosdwu.com^ +||bawqpynu.com^ +||baxterbouchee.cfd^ +||bayalunlatch.qpon^ +||bayarddaymarefotui.cyou^ +||baycjars.com^ +||bayetareveriebehoney.cfd^ +||baygpuglqgzoi.store^ +||bayshorline.com^ +||baywednesday.com^ +||bazaarssephen.cfd^ +||bazamodov.ru^ +||bb2c68869a.com^ +||bb2r.com^ +||bb4ytxk9.xyz^ +||bb63136099.com^ +||bb75d99ef0.com^ +||bb88480f1d.com^ +||bbakftslmnpul.online^ +||bbatkopeyuogn.website^ +||bbcc3e012c.com^ +||bbcrgate.com^ +||bbctnfuymmf.com^ +||bbd834il.de^ +||bbehvkrkbzcyw.online^ +||bbexwxh978vugbij4zctewh5o9bnbj4ohmmpxk.cfd^ +||bbhszcabrptsq.space^ +||bbiklzuzmsylk.online^ +||bbikmvkmebxn.com^ +||bbinfpwtwdhpw.website^ +||bbipawjflxpct.site^ +||bbkdlawi.com^ +||bbmknnomcostx.site^ +||bbnjohxcxmpej.online^ +||bbofqpmhexpli.site^ +||bbpaakofsfydc.online^ +||bbppwgyzxftcx.online^ +||bbqlbbnokswsaud.com^ +||bbrdbr.com^ +||bbtuvgqhflajx.com^ +||bbtvpnqyvdzmq.website^ +||bbtzmolquyfhe.website^ +||bbxkqbbqwzojv.space^ +||bbyoktrreb.com^ +||bbyyqitxuplnz.site^ +||bbztmceiyhybz.space^ +||bc2268747f.com^ +||bc27giff5njtii3c.rest^ +||bc48fa9adc.com^ +||bcafchldfejnd.online^ +||bccqnruipevxy.website^ +||bcgwetajinklt.website^ +||bcgzqzjkyjmfd.store^ +||bclogin-check.com^ +||bcloudhost.com^ +||bcmimhkecgwfj.space^ +||bcnonwgwntvpv.website^ +||bcobdykvrlfhe.website^ +||bcombdmnoidze.online^ +||bcpbtqpumbarw.online^ +||bcpnsajrgrlop.online^ +||bcprm.com^ +||bcsfpwmjulcxw.site^ +||bcswwwzqophyk.site^ +||bcsyfuhahnlmh.online^ +||bct2gukt38ycb7ui.cfd^ +||bctuafpdwarbm.site^ +||bcwjqztpkeeop68n5me9q44m5vog3l.cfd^ +||bcwpdvigokzca.space^ +||bcxauquczqgci.site^ +||bcydxusraikpu.online^ +||bcyesnflajgfl.space^ +||bcyxudpzyrxxj.site^ +||bd51static.com^ +||bd8cfb84ab.com^ +||bd92cdf877.com^ +||bdarfhdpjuerd.com^ +||bdbc7dce8e.com^ +||bdbtqmzbhwtpy.site^ +||bdd549304d.com^ +||bddeampqxylbg.space^ +||bddhprzriicus.world^ +||bddujehaeaubs.space^ +||bdelkjdmtfkjy.website^ +||bderwdfdolgsw.online^ +||bdhymnytgaota.space^ +||bdikjljwzgycz.space^ +||bdkrltbdwxmxe.space^ +||bdnbziqcmbhnv.space^ +||bdpfuvidujomw.online^ +||bdpgjmobltabc.space^ +||bdrrtgdhzqbxk.online^ +||bdrxcokcksbbr.store^ +||bdsshofarmalls.cyou^ +||bdsynhotmkefy.online^ +||bduwesnxbmmjq.site^ +||bdwyvivktgwh.com^ +||be0ef76ec5.com^ +||be1d40e516.com^ +||be33c66794.com^ +||be880990f9.com^ +||beach-vacation.site^ +||beachesdixit.cfd^ +||beafuelerlazary.qpon^ +||beakfuljato.com^ +||beaksuccisa.qpon^ +||bealafulup.com^ +||beamedfragmentrunners.com^ +||beamedvedro.qpon^ +||beamyfogas.qpon^ +||beardcompter.qpon^ +||beardedugric.cyou^ +||bearinggulp.com^ +||bearpawportico.cfd^ +||bearscutte.com^ +||beastlyfluke.com^ +||beastssmuggleimpatiently.com^ +||beatforumsubstitute.com^ +||beauapparatus.com^ +||beauishjobe.cfd^ +||beauit.cyou^ +||beauty1.xyz^ +||beavertron.com^ +||bebangcaromel.com^ +||bebautvdrradc.world^ +||bebeuwaqgtukc.site^ +||bebont.xyz^ +||bebrushvaporupsolve.cfd^ +||becassebesan.com^ +||beckcoingrouf.cyou^ +||becketcoffee.com^ +||becksplagium.cfd^ +||becomeapartner.io^ +||becomeraoulia.cfd^ +||becomezingaro.cfd^ +||becorsolaom.com^ +||becreepcartway.cyou^ +||becrybotonnysyriac.cyou^ +||becutdubbed.shop^ +||bedaffyamen.cfd^ +||bedamnssoaks.cyou^ +||bedashawned.qpon^ +||bedashliegiersubset.cyou^ +||bedaslonejul.cc^ +||beddedsinuose.qpon^ +||beddingfetched.com^ +||bedenphonos.qpon^ +||bedevilribber.qpon^ +||bedintsatleecaptate.cfd^ +||bedlamsdilucid.cyou^ +||bedouseschema.cyou^ +||bedoyobeltmen.cyou^ +||bedridunfree.cyou^ +||bedropveneers.cyou^ +||bedsidemeasuring.com^ +||bedsidetray.com^ +||bedsitetchingwicht.cyou^ +||bedsitfag.qpon^ +||bedungingestaleaf.cyou^ +||bedviojcrllpi.space^ +||bee3qlbxqu2h988rr4t4bcj5o9.cfd^ +||beechcarting.cyou^ +||beegrenugoz.com^ +||beehivesmokeremotionally.com^ +||beeishidcue.cyou^ +||beelinehindu.com^ +||beencoriqvcep.site^ +||beenover.com^ +||beepergaily.com^ +||beepernuntius.cyou^ +||beeperteat.qpon^ +||beeragecenbabyish.qpon^ +||beeroutetrail.com^ +||beestark.com^ +||beetlefreelylong.com^ +||beetlestaircaselobster.com^ +||beetrootchaos.com^ +||beevakum.net^ +||beewortvaguely.cyou^ +||bef77.com^ +||befhphijjpvng.space^ +||befhzmscrrrjr.website^ +||befirstcdn.com^ +||beflearappergobbets.cyou^ +||beflourrealarmlover.qpon^ +||befoolamesace.qpon^ +||befoulsinwoven.shop^ +||befpdlopmicei.website^ +||befriendapproveflannel.com^ +||befudfwhyuxea.site^ +||befuinonmjfpe.online^ +||begantotaled.cfd^ +||begband.com^ +||begeainrkdubh.online^ +||begetsbaritesbonnnes.cyou^ +||beggarconceivablecareful.com^ +||beggingload.com^ +||beggingmusty.com^ +||beggingrivulet.com^ +||begildclowns.shop^ +||beginbonaire.cfd^ +||beginshello.com^ +||beginsrainbowcamomile.com^ +||beglarebrinjal.cyou^ +||beglewhormion.cfd^ +||beglidedizened.qpon^ +||begloomtinterspining.qpon^ +||begolbatan.com^ +||begonaoidausek.com^ +||begony.xyz^ +||begravesimula.cfd^ +||beguessoestrum.qpon^ +||beguilemaud.cfd^ +||begunksplints.com^ +||behalfplead.com^ +||behavecaplet.cfd^ +||behavepassword.com^ +||behelddialectextract.com^ +||behindcanary.com^ +||beholdsresinsimprevu.cfd^ +||behqtk5t76nhmnmnb1bmw8f91n6b8rj.cfd^ +||beigedevotedcockpit.com^ +||beigeltubuli.cfd^ +||bejagmgbyydxi.online^ +||bejeledsolanin.qpon^ +||bejwponulwdwx.online^ +||bekickmohels.com^ +||bekpflllvuefn.website^ +||belamicash.com^ +||belavoplay.com^ +||belderbustic.qpon^ +||beldooschae.com^ +||belfrybreathrich.com^ +||belgainrush.cyou^ +||beliefnormandygarbage.com^ +||believableordinarygentlemen.com^ +||believeliftinggag.com^ +||believemefly.com^ +||believessway.com^ +||belikewe.com^ +||belimehamated.cfd^ +||bell-gassdor.com^ +||bellamyamusement.com^ +||bellamyawardinfallible.com^ +||bellamylavatory.com^ +||belledemodins.shop^ +||belleekmarlpit.cfd^ +||bellmandrawbar.com^ +||bellowbackyard.com^ +||bellyermisdaubgos.cyou^ +||bellyhaikhunsown.cyou^ +||bellyinternsulphur.com^ +||belongeddilute.com^ +||belongingstransform.com^ +||belonidclasptjesuit.qpon^ +||belovedset.com^ +||belsireipocras.qpon^ +||beltcological.com^ +||beltenefloit.com^ +||beludicolor.com^ +||bemixdare.qpon^ +||bemoatenform.qpon^ +||bemobpath.com^ +||bemobtrcks.com^ +||bemobtrk.com^ +||bemocksmunched.com^ +||bemoilgaffkya.cyou^ +||bemoonthoft.qpon^ +||bemottoincord.com^ +||benchsuited.com^ +||bendayejectumskyphos.qpon^ +||bendaysroit.com^ +||beneficial-shape.com^ +||benesfumous.cfd^ +||benevolencecompromisefaint.com^ +||beniluuxen.com^ +||benimsmackee.shop^ +||bennetguarantee.com^ +||benoagger.cfd^ +||bensonshowd.com^ +||bentadaptation.com^ +||bentpersuasive.com^ +||bentsdiorism.com^ +||bentserversiodine.com^ +||bentthick.cyou^ +||benzeinnap.cfd^ +||benzineyasmak.cyou^ +||beodeaeacus.shop^ +||beowulfspars.qpon^ +||beparchfreightdeplant.qpon^ +||bepasterebud.qpon^ +||bepchrzncipst.space^ +||bepilelaities.com^ +||bepqoenzlqlhv.online^ +||bepqyvmaqlib.com^ +||bepridedebasermantid.qpon^ +||beraptabysmal.cyou^ +||beraptthrusts.qpon^ +||beratessnifterloafers.cyou^ +||beratsighed.cfd^ +||berendearnfulinfame.qpon^ +||berendogizzard.cyou^ +||bergletonticfuril.qpon^ +||beridefemceesorose.cyou^ +||beringterm.com^ +||berlipurplin.com^ +||berneoutask.cyou^ +||berriedlui.shop^ +||berriesstring.com^ +||berryhillfarmgwent.com^ +||bersillyraserins.cyou^ +||bertapert.com^ +||berthfrankly.com^ +||bertsysxmykqm.online^ +||berush.com^ +||besandrumbpieta.cfd^ +||besaucekuchean.cyou^ +||beseechprose.com^ +||besideslot.com^ +||besideunderstatement.com^ +||besiegecaughtgauntlet.com^ +||besmeargleor.com^ +||besomsmeshechjarry.qpon^ +||bespicedoni.cfd^ +||besquibache.cyou^ +||bessttie.com^ +||bessycarrysapodema.qpon^ +||besszeyyafqqe.site^ +||best-girls-around.com^ +||best-offer-for-you.com^ +||best-video-app.com^ +||best0ne.com^ +||bestabboglet.cyou^ +||bestadload.com^ +||bestadsforyou.com^ +||bestbiddingnovel.com^ +||bestchainconnection.com^ +||bestcleaner.online^ +||bestcontentfood.top^ +||bestcontentfund.top^ +||bestcontentindustry.top^ +||bestcontentoperation.top^ +||bestcontentproject.top^ +||bestcontentprovider.top^ +||bestcontentservice.top^ +||bestcontentsite.top^ +||bestcontenttrade.top^ +||bestcontentuse.top^ +||bestcontentweb.top^ +||bestconvertor.club^ +||bestcpmnetwork.com^ +||bestcquerlnxe.space^ +||bestdatte4you.com^ +||bestdisplaycontent.com^ +||bestdisplayformats.com^ +||bestecnyov.click^ +||bestfuckapps.com^ +||bestfunnyads.com^ +||bestgirlsjourneys.com^ +||besthabit.pro^ +||bestialanacompulsive.com^ +||bestofall.info^ +||bestonlinecasino.club^ +||bestormsmitelamedh.cyou^ +||bestowmeasurement.com^ +||bestrevenuenetwork.com^ +||bestrewdeplace.cfd^ +||bestuckthrax.cyou^ +||betads.xyz^ +||betahit.click^ +||betaoutinnovations.net^ +||beteelaboiling.cyou^ +||betellmacrli.cyou^ +||beterrakionan.com^ +||betesknublitster.qpon^ +||betgorebysson.club^ +||betimbur.com^ +||betmasquerainchan.com^ +||betmenaff.com^ +||betotodilea.com^ +||betowelpandits.cyou^ +||betr-for-tod.com^ +||betrailsysout.shop^ +||betrayalbadger.com^ +||bettentacruela.com^ +||better-u.vip^ +||betteradsystem.com^ +||betteraudience.pro^ +||betterdomino.com^ +||bettinebiggety.cfd^ +||bettingbarfy.shop^ +||bettingcurly.com^ +||bettinginvulnerablebarbed.com^ +||bettingpartners.com^ +||betweendigital.com^ +||betweenprimarily.com^ +||betwinner1.com^ +||bevelwrox.qpon^ +||beveyckzdzheo.site^ +||bevwcymvettup.space^ +||bewailindigestionunhappy.com^ +||bewailknotcorruption.com^ +||bewailwheelsdisloyal.com^ +||bewetunbold.com^ +||bewgfbytrstaz.space^ +||bewhidare.com^ +||bewigsbusketcrinkle.qpon^ +||bewigscoequal.cfd^ +||bewitchascared.cfd^ +||bewitched-display.pro^ +||bewormspumpman.cyou^ +||beworryregive.cfd^ +||bewreakaglossaberchta.cyou^ +||beyanmaan.com^ +||beydomenamels.shop^ +||beydomfaucet.shop^ +||beyondpayors.com^ +||beyondpongid.cyou^ +||beyourxfriend.com^ +||bezilsglint.cyou^ +||bezzopricerretent.qpon^ +||bf-ad.net^ +||bf002bbbbb.com^ +||bf1144fdfa.com^ +||bf1ec0c645.com^ +||bf46dd419c.com^ +||bf80c2fe1a.com^ +||bf88vyyuigm35zb5x.cfd^ +||bfakujblprwjf.site^ +||bfast.com^ +||bfaubcoezrihe.site^ +||bfblyaqvcnaat.space^ +||bfe6b914a1.com^ +||bfepzyczofwtf.space^ +||bfetpjdaebmzl.space^ +||bffigvvwoyybr.website^ +||bfhrwqaroikoo.site^ +||bfhspobdvajttb.com^ +||bfirpqcbyfd.com^ +||bfjflpryolthp.online^ +||bfjknfpvwjjpb.site^ +||bfmovugujnybt.online^ +||bfpartners.click^ +||bfphtdhktndwj.site^ +||bfqrixq8w7wkgje.cfd^ +||bfraircymryuh.xyz^ +||bfrjiwydcakxu.site^ +||bfrrndnsbmiov.site^ +||bftbphjlcefsk.site^ +||bfwnbnerccsor.space^ +||bfxytxdpnk.com^ +||bfyydwxdkefev.online^ +||bfyz-defender.pro^ +||bfziqxsuvogng.space^ +||bfzzymmxqgali.online^ +||bg-mezonet.info^ +||bg4nxu2u5t.com^ +||bgbaysohkaaee.site^ +||bgbeqdtopwumc.online^ +||bgbqfnhtu.com^ +||bgbtbtwrmcgoa.website^ +||bghxhsfhrfqhr.website^ +||bgore.xyz^ +||bgqamxuxabntp.space^ +||bgqantksojipe.online^ +||bgtjdtnnbjp.com^ +||bgulef837wmwxglvg2l5kyzbpz5ng2tg7tjwg.cfd^ +||bgvnctdwrlsrx.website^ +||bgvzasralyngg.space^ +||bgwafghjtwywv.online^ +||bgynhrgobyjbo.space^ +||bgyqfqsulvmcf.space^ +||bgyrhxxcxwcih.site^ +||bgzzilkfjzfji.store^ +||bh3.net^ +||bhaktisecularhalloes.cfd^ +||bhangirinded.cfd^ +||bhavkiyrxbifv.space^ +||bhbjtwhjqvksoh.com^ +||bhbkvnpbvbrbv.site^ +||bhcifkfrtccdt.online^ +||bheestydinos.cyou^ +||bheestyslimer.com^ +||bhfrnzxxcxhbn.store^ +||bhfrttttyyruo.store^ +||bhheuhvupxzpk.space^ +||bhievvhkokfxk.website^ +||bhikanaj.in^ +||bhindicatdom.shop^ +||bhistiehaverel.qpon^ +||bhivpvsbhskzv.site^ +||bhiwhpjkcamqe.com^ +||bhjmacgkyiiux.website^ +||bhketuklhhavv.website^ +||bhlilxdjkidij.site^ +||bhljttxgqnjhm.online^ +||bhlph.com^ +||bhlvinokfnwyx.site^ +||bhlxxdmdpdptk.space^ +||bhmhpqlckfhty.com^ +||bhobmdtjc.com^ +||bhotialine.shop^ +||bhotiaunequal.qpon^ +||bhrltiziiipad.website^ +||bhsohdcblqsnr.website^ +||bhszasnoamoro.space^ +||bhtjokol.com^ +||bhwavmjvosxwk.online^ +||bhwgdvpavsfzw.site^ +||bhwhunxzfbjmj.online^ +||bhwkyiddqyole.space^ +||bhypkkkalhgnj.space^ +||biancasunlit.com^ +||biaqghckapnum.online^ +||biasthought.qpon^ +||biaxalwoibe.com^ +||bibasicsmriti.cfd^ +||bibrhubxbyyfq.site^ +||bicavhmr.in^ +||biceake.qpon^ +||bichircofttrue.cfd^ +||bichyphysics.cfd^ +||bickerpergola.cfd^ +||biconiccorningsorrier.cfd^ +||bicyclebusgrave.work^ +||bid.glass^ +||bidberry.net^ +||bidbrain.app^ +||bidclickmedia.com^ +||bidderads.com^ +||bidderssupper.cfd^ +||bidensfilter.qpon^ +||bidfortraffic.com^ +||bidster.net^ +||bidswitch.net^ +||bidsxchange.com^ +||bidtheatre.com^ +||bidtimize.com^ +||biducsshidbeh.website^ +||bidvance.com^ +||bidverdrd.com^ +||biehuljjsllzf.website^ +||biemedia.com^ +||bientttarger.cfd^ +||bifctyclfcwli.online^ +||bifdfzioylxdu.online^ +||bifetfhzyqkgs.site^ +||biffiescycle.qpon^ +||biffingmatina.com^ +||bifocalacid.com^ +||bifqprmxqv.com^ +||bifronthellionhumphs.qpon^ +||big-brief.com^ +||bigbasketshop.com^ +||bigbolz.com^ +||bigboxads.com^ +||bigburypontinethins.cyou^ +||bigelowcleaning.com^ +||bigfootquality.shop^ +||biggbwckcc.com^ +||biggentsar.cyou^ +||biggerbreakerfind.com^ +||biggerluck.com^ +||biggingdevel.com^ +||biggjjvxbgvjb.online^ +||bighearted-nasty.pro^ +||bighearted-wedding.pro^ +||bigheartedbeard.com^ +||bigheartedregular.com^ +||bigincomplete.com^ +||bigrbmvjmorry.online^ +||bigrourg.net^ +||bigsdbmcpgvyq.website^ +||bihalvegoldi.com^ +||bihogbawtvemq.site^ +||bihunekus.com^ +||bijvjzkjydmzi.space^ +||bijztncfltrmb.site^ +||bikechokedattic.com^ +||bilalorasa.qpon^ +||bilgedenlmaholi.qpon^ +||biljhcemsseiq.website^ +||billareddest.cyou^ +||billboardwring.com^ +||billieshumean.cfd^ +||billilia.com^ +||billonhails.qpon^ +||billpussleybovoid.cfd^ +||billypub.com^ +||billywaulpistols.cyou^ +||bilsyndication.com^ +||bimahapiole.qpon^ +||bimbiljointed.shop^ +||bimboramtils.com^ +||bimouecctgacs.store^ +||bin-layer.ru^ +||bin-tds.site^ +||bincatracs.com^ +||bindirect.click^ +||bindsthea.cyou^ +||binexceptingward.com^ +||binitshartake.shop^ +||binomlink.com^ +||binomnet.com^ +||binomnet3.com^ +||binomylipwork.cyou^ +||bioces.com^ +||biodegradable-building.pro^ +||biodegradablegrand.com^ +||biodegradabletrouble.pro^ +||biodegradableyellow.pro^ +||biolcrewcut.cyou^ +||biolitelambspulser.cyou^ +||bioncrocketleos.cfd^ +||biopsypainless.com^ +||biosomerefed.cyou^ +||bipackgeraninmapped.cyou^ +||bipedpinnalfr.cyou^ +||biphic.com^ +||bipolarroomage.qpon^ +||biqqavjzrmmkr.store^ +||birchdulcian.qpon^ +||birdpriceall.com^ +||birdseyewings.co^ +||birkssynfuel.qpon^ +||birlinnzebraic.cyou^ +||birmadonzellittles.cyou^ +||birthjeans.icu^ +||bisa-aja.my.id^ +||bisetsoliped.com^ +||biskteeveeacutish.cfd^ +||bistanasa.qpon^ +||bit-ad.com^ +||bitbeat7.com^ +||biteanxiously.com^ +||bitesized-king.com^ +||bitfrom710.com^ +||bithow.com^ +||bitkwwjpgsdnh.space^ +||bitonalachuas.shop^ +||bitseroralize.cyou^ +||bittenevenreasoning.com^ +||bitter-inevitable.pro^ +||bitterstupid.com^ +||bitumedsimiansdigenic.cyou^ +||bitx.tv^ +||bitxnovrbzpby.online^ +||biucjsmmvnzbm.online^ +||biuealqjtqkyk.website^ +||bivvmhkimlqzq.store^ +||bixapamfwltkk.space^ +||bixqmhdbjn.com^ +||biyjqmadbjdyx.xyz^ +||biyrseggdidiy.site^ +||bizcwuhi.in^ +||bizibgjvenyhc.space^ +||bizographics.com^ +||bizonads-ssp.com^ +||bizosama.com^ +||bj1igpq93k1yfw145yk7j3.cfd^ +||bj2550.com^ +||bj2rrrjb.xyz^ +||bj6535jz.xyz^ +||bjadelkrmufem.space^ +||bjakku.com^ +||bjatrfmfcxdsne.com^ +||bjdgzffnutlqs.site^ +||bjdnqdbmktbhm.website^ +||bjdsmnjybmjdl.site^ +||bjgjunljwykym.space^ +||bjjky.cfd^ +||bjk3irj9inujonozb9k3qygw.cfd^ +||bjlg2lhfw1vpo4.cfd^ +||bjljknoklotqebh.com^ +||bjlsvzikxpjxq.space^ +||bjlwmgypnxmwr.space^ +||bjmyjrpjqqeep.com^ +||bjnstrujhqmna.space^ +||bjquhxvicujcc.online^ +||bjrnhbqgaabez.website^ +||bjtlukksnzrlb.space^ +||bjtvacwkzetxc.store^ +||bjuaivwbdktzz.online^ +||bjvhcjulwwnmk.space^ +||bjwnarindcbnv.website^ +||bjxusfnfstjae.online^ +||bjygagpjabhbt.website^ +||bjzabeeqjktyy.website^ +||bk5rc9g72nnmuv2jquen.rest^ +||bkbctgjvawkyy.online^ +||bkezgkhgnqcpb.online^ +||bkgljnppwxjat.icu^ +||bkgzynoggdslv.website^ +||bkhhmyjvmfgxg.online^ +||bkhwrqrnmdmzg.site^ +||bkibtbefjo.com^ +||bkijujawkswpp.online^ +||bkjblyuukoavf.site^ +||bkjcspqtrlafh.online^ +||bkjgqyasbalgk.website^ +||bkjhqkohal.com^ +||bkjkuukaobqcjjd.com^ +||bkjswgpfkdwia.site^ +||bklihaatruags.website^ +||bkmmafrixfake.website^ +||bknegcvfkxvsm.space^ +||bkpmmpsqgluwj.online^ +||bkqcbtjdhuhvd.site^ +||bkqodnnsomnon.website^ +||bkqykixrzrgwr.space^ +||bkrxfveyilyqu.site^ +||bkuntihdhjwpd.site^ +||bkuxigrmvndcr.site^ +||bkvxjygccpkwk.space^ +||bkwhgjgfhsnbu.com^ +||bkwuodwvehlzr.life^ +||bkzhiu3yv8gzbml.cfd^ +||bkzojuncitbqa.space^ +||bl230126pb.com^ +||blackandwhite-temporary.com^ +||blackandwhitememory.com^ +||blackboardholdingrpm.com^ +||blackedlegated.qpon^ +||blackedrisen.com^ +||blackedsubjected.com^ +||blackeycontemn.cfd^ +||blacklinknow.com^ +||blacklivesmatter1.org^ +||blacknesscalculatorboxing.com^ +||blackunevenabridge.com^ +||bladdersdisarmaware.com^ +||bladderssewing.com^ +||bladeamendable.com^ +||bladedescendant.com^ +||bladesparcelinvent.com^ +||bladespillowcase.com^ +||bladswetis.com^ +||blahlivedsnowdrop.com^ +||blamads.com^ +||blameff.cyou^ +||blamelessopposite.com^ +||blamingnuclearplasma.com^ +||blanderunherdagau.cyou^ +||blankbreakfast.pro^ +||blankitspoonedbirds.cfd^ +||blanksolderreed.com^ +||blanksvulvar.shop^ +||blanmanchu.cyou^ +||blarcamxooysi.store^ +||blarepointingbaptism.com^ +||blaring-chocolate.com^ +||blaringfear.pro^ +||blaringspray.pro^ +||blasphemelong.com^ +||blastcahs.com^ +||blastedopiane.qpon^ +||blastedscatt.cyou^ +||blastydollars.shop^ +||blatchhypogyn.qpon^ +||blatgeums.cfd^ +||blawedzendos.shop^ +||blaykwakari.qpon^ +||blaze-media.com^ +||blazedwaypostrecoat.qpon^ +||blazeteamlow.com^ +||blazingserver.net^ +||blcdog.com^ +||blcknvr.com^ +||bldgscrewedrestrip.cyou^ +||bldkgmtnesbfp.site^ +||bldklgxmbfemy.online^ +||bldxtxnmhlhli.online^ +||bleak-afternoon.com^ +||bleak-yard.com^ +||bleaterpolys.com^ +||bleaterurluch.shop^ +||bleatstringinch.com^ +||bleepgizmorecital.com^ +||blehcourt.com^ +||blekdkibtepdo.site^ +||blendedbird.com^ +||blendortenacle.cfd^ +||blentammino.cyou^ +||bleounshipsmachi.cfd^ +||blessedsophia.com^ +||blessesunwary.com^ +||blessingsome.com^ +||bletopreseynat.org^ +||blfrrfanpmwqt.website^ +||blfspcvslvnxp.space^ +||blg-1216lb.com^ +||bliautscarps.com^ +||blibrhhahvgtw.space^ +||blicatedlitytleme.org^ +||blickywharveswaregga.cyou^ +||blightiambijaseyed.qpon^ +||blightseffatum.cyou^ +||blind-poem.com^ +||blinkdunningequals.cyou^ +||blinkedlanentablelanentableunavailable.com^ +||blinkflows.com^ +||blinkjork.com^ +||blinkperloirfiddley.qpon^ +||blinksbobblepadding.com^ +||blinktowel.com^ +||blinsurwan.shop^ +||bliqjhstabiqd.space^ +||blismedia.com^ +||blissfuldes.com^ +||blistergriftsteak.cfd^ +||blisterpompey.com^ +||blistest.xyz^ +||blitterkoilabronx.cyou^ +||blitzesemulous.cfd^ +||blizzdata.site^ +||blmihlvicnopl.store^ +||blnfsdkskzqfh.site^ +||bloatedumiacks.cfd^ +||bloatingexpectantretinal.com^ +||blobberdepthdieri.cfd^ +||bloblohub.com^ +||blocagekohls.shop^ +||block-ad.com^ +||block321.com^ +||blockadsnot.com^ +||blockchain-ads.com^ +||blockchaintop.nl^ +||blocksfeathers.com^ +||blocksly.org^ +||blogherads.com^ +||blond-pollution.pro^ +||blondspeaker.com^ +||blondtongue.com^ +||bloodedwhig.cfd^ +||bloopsbordel.cfd^ +||blotchinvestigation.com^ +||blotecardthumb.com^ +||blowbycringed.cfd^ +||blowenstork.qpon^ +||blowflymincesstichos.qpon^ +||blowgunbumpoff.cyou^ +||blowingwind.xyz^ +||blowsemaze.shop^ +||blowsgollsaline.cfd^ +||blpigisjqbykc.site^ +||blrwsnwnvkqzh.online^ +||blrzaikduqaar.site^ +||blsenmxeiokcn.space^ +||bltjuogzcaolm.site^ +||bltwuvetubnqt.space^ +||blu5fdclr.com^ +||blubberlog.com^ +||blubberspoiled.com^ +||bludgedirido.cfd^ +||bludgeentraps.com^ +||blue99703.com^ +||blueflowerfield.com^ +||bluelinknow.com^ +||blueparrot.media^ +||blueridgeloop.com^ +||bluerlemna.cyou^ +||bluerstenar.qpon^ +||blueskyforest.com^ +||bluestrode.qpon^ +||bluetrafficstream.com^ +||bluffappend.com^ +||blumesaccoy.qpon^ +||blumesoaps.com^ +||blunkviewy.qpon^ +||bluntnebulous.com^ +||blurbreimbursetrombone.com^ +||blurtsbrerd.com^ +||blwadijbvbttx.space^ +||blypiwszmimgv.site^ +||blyqvidllwukv.website^ +||blyuwuwktvaog.site^ +||blzctuubmxcjo.site^ +||bm5unauv.xyz^ +||bmastxiarsrug.online^ +||bmbdfrchnenhy.store^ +||bmbozsjricjdj.store^ +||bmbxbcsahwtfj.space^ +||bmbxjvolqc.com^ +||bmccdtgzildra.site^ +||bmcdn1.com^ +||bmcdn2.com^ +||bmcdn3.com^ +||bmcdn4.com^ +||bmcdn5.com^ +||bmcdn6.com^ +||bmcmdyktcgtdy.site^ +||bmdeit3.site^ +||bmdeit4.site^ +||bmfnopvd.com^ +||bmgzspzuahkgq.online^ +||bmicmpktyo.com^ +||bmjmtewumbiqx.website^ +||bmkhxvvneovqi.space^ +||bmknmzsaiscwk.online^ +||bmkz57b79pxk.com^ +||bmmads.com^ +||bmmlztvqsngih.online^ +||bmnhbrjuekejj.site^ +||bmnuledgpd.com^ +||bmnwmfvjmltrl.space^ +||bmogruisjnfdn.site^ +||bmpnjagiwogcl.space^ +||bmpyeypnzuqmv.online^ +||bmqgwfz99quzoli.rest^ +||bmqzsaqomgymv.site^ +||bmqzxvqvglexy.site^ +||bmrfhnnhozbff.site^ +||bmtekvannmeho.website^ +||bmupametryuzx.space^ +||bmurfsjsvvfhy.space^ +||bmwaeghntpfdb.online^ +||bmxavtdjqvdqn.store^ +||bn5x.net^ +||bnbgdqjurxsoo.site^ +||bncloudfl.com^ +||bneqhkkdfmvtq.website^ +||bnfkwrkdpzaox.space^ +||bngdin.com^ +||bngdyn.com^ +||bngmadjd.de^ +||bngpop.com^ +||bngprl.com^ +||bngprm.com^ +||bngpst.com^ +||bngpt.com^ +||bngrol.com^ +||bngtrak.com^ +||bngwlt.com^ +||bnhlpsmhvodae.online^ +||bnhtml.com^ +||bnhutpljwndgg.space^ +||bnkofmbmxc.com^ +||bnmqtggqjoqic.buzz^ +||bnp3.com^ +||bnpubjzodmhew.site^ +||bnr.sys.lv^ +||bnrdom.com^ +||bnrs.it^ +||bnrsis.com^ +||bnrslks.com^ +||bnserving.com^ +||bnsirwpidbpao.online^ +||bntpbhktnkjrn.site^ +||bnwqxlwbfyeho.online^ +||bnynihjbciywe.online^ +||boannre.com^ +||boarderoomph.cyou^ +||boardingstocking.com^ +||boarishshreddy.qpon^ +||boarshrubforemost.com^ +||boarstoredeceive.cfd^ +||boaststockingsaucer.com^ +||boatcontinuing.com^ +||boatedcourts.qpon^ +||boatinginstopupleap.qpon^ +||boationspite.cfd^ +||bobabillydirect.org^ +||bobapsoabauns.com^ +||bobbleddonsy.qpon^ +||bobbledspillet.com^ +||bobboro.com^ +||bobbywobby.com^ +||bobgames-prolister.com^ +||bobocetanes.shop^ +||bobootitweet.cyou^ +||bobpinching.com^ +||bobsleddomesticglandular.com^ +||boccesfrizzy.cyou^ +||bocenrqhquopv.website^ +||bochersium.cyou^ +||bochnvmvvzeqc.space^ +||bodegasdweeblepapulae.cyou^ +||bodilysubtractoversight.com^ +||bodilywondering.com^ +||bodkinsmudde.com^ +||bodockvirent.cfd^ +||bodragglairsaesop.cyou^ +||bodtdwiswmmsc.space^ +||bodybossmotivate.com^ +||boersgrim.qpon^ +||boersstarryscanty.qpon^ +||boerumpeiakmf.space^ +||boffinsoft.com^ +||boffoadsfeeds.com^ +||bofrlsnvqxbbf.space^ +||boganhands.cyou^ +||boget.xyz^ +||bogeyedoutbye.com^ +||bogeyliberastabs.cyou^ +||boggartinsiteuntruly.qpon^ +||boglegaywing.qpon^ +||bogletsalmon.cyou^ +||bogmunchbeneath.com^ +||bogrodius.com^ +||bogtrotdowning.shop^ +||boguingbachetorfle.cyou^ +||boguingmowra.cfd^ +||bogustrouble.com^ +||bohawnhating.qpon^ +||bohcgusfdrmyt.site^ +||boilingroof.pro^ +||bojel.com^ +||bokarddockets.qpon^ +||bokepindo13.name^ +||bokoawreak.cfd^ +||bolckrijublup.space^ +||bold-display.pro^ +||bold-potential.com^ +||boldestedifierfijian.cfd^ +||bolidedecided.cyou^ +||bolkdoutous.qpon^ +||bollixpapula.com^ +||bollyocean.com^ +||boloptrex.com^ +||bolpjziaxakkg.store^ +||bolsmash.qpon^ +||bolsterate.net^ +||boltepse.com^ +||boltsafeway.cfd^ +||bombicbonita.shop^ +||bombingdwt.qpon^ +||bomborasling.qpon^ +||bomdog.com^ +||bonad.io^ +||bonafides.club^ +||bonangmastedotter.cfd^ +||bondfondif.com^ +||bonduccodline.com^ +||bonepa.com^ +||bonertraffic13.info^ +||bonesideal.com^ +||boneycootchturakoo.cyou^ +||bongacams11.com^ +||bongacams7.com^ +||bonierunsized.cfd^ +||bonifysenary.shop^ +||bonnettaking.com^ +||bonosbevvy.com^ +||bonsaiaccisefoaming.cyou^ +||bonserdalteen.cfd^ +||bonsoirforlorn.cfd^ +||bonusgew.com^ +||bonusmaniac.com^ +||bonuspis.com^ +||bonwtunwgboos.online^ +||bonyboeoctal.qpon^ +||bonyspecialist.pro^ +||bonzermixupclaxons.cyou^ +||bonzesthomism.qpon^ +||boobausauhipsa.net^ +||boobbounds.com^ +||boodhseatersspecks.cyou^ +||boodsprank.cfd^ +||booezozlvdg.com^ +||boofsignorypurlieu.qpon^ +||booingtruddo.cfd^ +||bookadil.com^ +||bookbannershop.com^ +||bookersowse.qpon^ +||bookfulquidamspense.cfd^ +||bookletlurky.qpon^ +||bookmakers.click^ +||bookmanstews.qpon^ +||bookmsg.com^ +||bookshelfcomplaint.com^ +||booleyopacous.cyou^ +||boolylipases.com^ +||boomads.com^ +||boomvibices.qpon^ +||boonkaleshot.cyou^ +||boopisalce.shop^ +||boopislucific.qpon^ +||booseed.com^ +||boost-next.co.jp^ +||boostcdn.net^ +||boostclic.com^ +||boostcpm.su^ +||booster-vax.com^ +||boostlo.xyz^ +||boostog.net^ +||booteryembrase.shop^ +||boothmythevergreen.com^ +||bootingunpickedusable.com^ +||bootstraplugin.com^ +||bootyregisteredcleared.com^ +||boozersbraille.cfd^ +||boozilyhaircap.cfd^ +||bopako.com^ +||bopmsxjwjuwjj.click^ +||bopyrusaucubas.qpon^ +||boracicicecapsgirshes.cyou^ +||boratedcloggy.qpon^ +||bordermotivation.com^ +||boreaddingobserve.com^ +||boreasnetsuke.com^ +||boreconcoursesentence.com^ +||borecressy.qpon^ +||boredhippie.com^ +||boredomcuff.com^ +||borersantlersmetonic.cfd^ +||borersunbuilt.shop^ +||boresorson.cfd^ +||borghcheskey.cyou^ +||boridesempexa.cyou^ +||boringegotistical.com^ +||boringherbalprewashed.com^ +||boringlength.com^ +||borishagamas.qpon^ +||borlnobuksicqh.com^ +||bornkaejpngkp.website^ +||boronsbeverse.qpon^ +||bororountieddampish.cfd^ +||borosproty.com^ +||borrowedtransition.com^ +||borrowhourglass.com^ +||borrowschama.qpon^ +||borvens.com^ +||borzjournal.ru^ +||borzoishyp.com^ +||bosmjrzfssqus.site^ +||bosonicbtisesimblot.qpon^ +||bosplyx.com^ +||bosselinorrummage.com^ +||bossilylopezia.shop^ +||bossy-future.com^ +||bossybeach.pro^ +||bossyhearing.com^ +||bostalflary.cyou^ +||bot-checker.com^ +||botagleeksimpresa.qpon^ +||botanyspiritualmaxim.com^ +||botanysummarytables.com^ +||botellahidable.cyou^ +||botellahummockkickoff.cyou^ +||bothairport.com^ +||bothererune.com^ +||botherlaying.com^ +||botkdllphxivv.space^ +||botpynlmmizsr.click^ +||botsxlhhjdvnp.online^ +||bottierrangleneavil.cfd^ +||bottleddictionary.com^ +||bottledfriendship.com^ +||bottlestrivingtarget.com^ +||botvwyytbwpdb.site^ +||bouffecubans.cfd^ +||bougarspassquilly.qpon^ +||bougeebayingmealy.qpon^ +||bougieshepcats.com^ +||bouhoagy.net^ +||boulevardrunningprofane.com^ +||bounceads.net^ +||bouncelightenafternoon.com^ +||bouncerepresentative.com^ +||bouncetumblemarried.com^ +||bouncingbuzz.com^ +||boundenlapon.cyou^ +||bountifulcomfortable.com^ +||bountyformseedlings.com^ +||bountyketchup.com^ +||bouquetcremorifreal.cyou^ +||bouquetdaft.com^ +||bournedisced.cyou^ +||bourrepardale.com^ +||boustahe.com^ +||boutellkaryon.cfd^ +||bovidbesee.cfd^ +||bovinetimingunsaddle.com^ +||bovmkbuiaddbb.website^ +||bowed-tackle.com^ +||bowermisrule.com^ +||bowersorgamy.com^ +||bowerywill.com^ +||bowldescended.com^ +||bowlingprosperhalfbrother.com^ +||bowpotchelae.qpon^ +||bowseddecodes.cyou^ +||bowsiefaces.shop^ +||boxbwxhkzwwpe.website^ +||boxcartidalvoicing.com^ +||boxingsuffocate.com^ +||boxlikepavers.com^ +||boxlikesedativespinach.com^ +||boxofwhisper.com^ +||boxtopremastomia.cyou^ +||boxycupbearerjot.com^ +||boxypluckunrelated.com^ +||boycottcelebrityheirloom.com^ +||boyerulans.com^ +||boyguwsiukyag.space^ +||boyunakylie.com^ +||bpahyyjwjwcd.com^ +||bpauszxiaozwb.site^ +||bpbnelpowldjl.space^ +||bpbnzbkaegpvk.site^ +||bpcieckgpwjqp.site^ +||bpdqwixnyxoxy.site^ +||bpdudejimdmdf.online^ +||bpeovknslhuqy.online^ +||bpgritsnivsgk.space^ +||bphgwntdzzyxs.space^ +||bphossvxxvetv.site^ +||bphtlhrntspkk.site^ +||bpifosgceukau.space^ +||bpigydbzlrszz.online^ +||bpkeydnjfxnlr.site^ +||bpkphtmwwqjub.website^ +||bpleaaekrdvnj.site^ +||bpltqydasflff.online^ +||bpmbhbpmmbndn.online^ +||bpmfagzlptbxp.site^ +||bpojutddbiktb.website^ +||bprsvoikehhdr.space^ +||bpstramcar.cfd^ +||bptibdkuxvrxg.space^ +||bpvoctpvauvyv.website^ +||bpxly1rnlywuc1.cfd^ +||bpzxevecpsxva.store^ +||bq2okgjfhn9v924z.cfd^ +||bqaijuqtjwpbf.website^ +||bqajoisaiwlxs.site^ +||bqenzxdijbdov.space^ +||bqglwzsuxvfsr.space^ +||bqgvndiluuekk.space^ +||bqgwxqoqjqvbz.online^ +||bqifheyrsbgqa.site^ +||bqjukucxjhtvm.website^ +||bqkerpcwptpya.space^ +||bqlmweiecxpxr.online^ +||bqmiphtwrmcya.space^ +||bqnycimizqnnd.website^ +||bqqwgpnffgvfbqu.rest^ +||bqrjotqnqh.com^ +||bqrlfqqeqzbvcpljvg4x9k.cfd^ +||bqszugpxadzlg.store^ +||bqtboylklunvj.space^ +||bqwjmvbjodclc.space^ +||bqxnpvzbrurde.online^ +||bqybaxcxwbgsm.website^ +||bracecherry.com^ +||bracemascara.com^ +||braceroinnerly.cfd^ +||brackedignotus.cyou^ +||bracketauthorizedportray.com^ +||braconrebone.cyou^ +||bragidylismtooken.cyou^ +||brahmsflidge.com^ +||braiderdiscede.shop^ +||brainient.com^ +||brainlyads.com^ +||brainsoptionsshirt.com^ +||brakepresign.cfd^ +||brakiefissive.com^ +||brakieholidayminuend.cfd^ +||bramefluent.qpon^ +||brand-display.com^ +||brand.net^ +||brandads.net^ +||brandaffinity.net^ +||brandclik.com^ +||brandlabs.ai^ +||brandlediscase.qpon^ +||brandnewapp.pro^ +||brandnewsnorted.com^ +||brandreachsys.com^ +||brandsmat.com^ +||brankiewringle.cyou^ +||brannedalbinosstaw.cyou^ +||brarowmannetbigwigs.cfd^ +||brashgrandchild.com^ +||brassedcreme.cfd^ +||brassedunicism.qpon^ +||brassstacker.com^ +||brationalfilarded.com^ +||brave-village.com^ +||braverybreezebinding.com^ +||braverycavalryoats.com^ +||braveryriftraining.com^ +||bravotrk.com^ +||brawexstill.shop^ +||brawledsqueege.cfd^ +||brayersxematitlike.qpon^ +||brazennibung.cfd^ +||brazensstaling.cfd^ +||brbmzvizpivki.site^ +||brcjvwooqneol.online^ +||brditqozcvagl.site^ +||brdjoupapcilx.online^ +||brdlbkrzjudrg.online^ +||brdwfcecefhts.site^ +||breakaxringatu.qpon^ +||breakfastsinew.com^ +||breakingcapricorn.com^ +||breakingunidentifiedperfection.com^ +||breardssercom.cfd^ +||breastfeedingdelightedtease.com^ +||breastsforcy.qpon^ +||breathinggeoff.com^ +||brebo.xyz^ +||brecciaizdubarnignay.cyou^ +||bred4tula.com^ +||bredsoy.com^ +||breechesbiddingratification.com^ +||bregmaaurally.cyou^ +||breimayanceworrel.cfd^ +||breixmdldvvfa.website^ +||brekkychukars.cyou^ +||bremberbiaural.cfd^ +||bremberkeidolga.qpon^ +||brenderbeheirakutch.cfd^ +||brenwendingcupania.cyou^ +||brerdcomping.cfd^ +||brevitychestprocess.com^ +||breviunkingpalolo.qpon^ +||brewerybussing.qpon^ +||brewingeasel.com^ +||brgnthxurfpzf.space^ +||briardsnoopjewdom.cyou^ +||briarshops.qpon^ +||briarygimellegroom.cfd^ +||bribealkes.cfd^ +||bricklylobbers.cfd^ +||bridelyspeel.cfd^ +||bridgeploesti.cfd^ +||bridgetrack.com^ +||bridiefaraway.cyou^ +||bridlearctic.com^ +||brief-dish.pro^ +||briefcasebuoyduster.com^ +||brieflynimbleignition.com^ +||brieftrouble.com^ +||briersabrupt.qpon^ +||brigadedelegatesandbox.com^ +||brightcloudridge.com^ +||brightcoremind.com^ +||brighteroption.com^ +||brightestmarriagegrape.com^ +||brightforesthill.com^ +||brightlygauntlet.com^ +||brightonclick.com^ +||brightruin.pro^ +||brightsbrayers.cfd^ +||brightshare.com^ +||brightskyridge.com^ +||brightwindridge.com^ +||brigsgasp.com^ +||brillianceremisswhistled.com^ +||brilliantconcealed.com^ +||brilliantfaronly.com^ +||brilliantoverhaulunshaken.com^ +||brilliantpiece.com^ +||brilllantsdates.net^ +||brimhugo.qpon^ +||brimsesugarer.cyou^ +||bringalzolaist.qpon^ +||brinkmarko.com^ +||brinnyyeta.qpon^ +||brioletredeyes.com^ +||brioletspikily.cfd^ +||brionyamanist.com^ +||briquettwasome.qpon^ +||briseisnodules.cyou^ +||brisk-cold.pro^ +||briskbluffer.cfd^ +||brisketleafboy.qpon^ +||brisknessdebtordismiss.com^ +||briskyfab.cyou^ +||brissdutchy.shop^ +||bristlechurch.com^ +||britageens.com^ +||britainbetrayalbands.com^ +||britainhands.com^ +||brithungown.com^ +||britishinquisitive.com^ +||brittledhowkonjak.qpon^ +||brittlesnag.com^ +||brittlesturdyunlovable.com^ +||brivola.net^ +||brixura1234.net^ +||brlyvtjfor.com^ +||brmljcaxcchtu.space^ +||brmrfxnpajqqx.site^ +||brnju6iwxxgozijo3t.rest^ +||broadensilkslush.com^ +||broadsheetspikesnick.com^ +||broadsidedaisysanta.com^ +||brocardnizey.cfd^ +||brochfanons.com^ +||brodownloads.site^ +||broidbaxtone.cfd^ +||broken-fun.com^ +||broken-independent.pro^ +||brokerbabe.com^ +||brokingcutheal.qpon^ +||bromingigaton.com^ +||bromisesplodge.cfd^ +||bromoilnapalms.com^ +||bromolgooraldhooly.cfd^ +||bronca.site^ +||broncleonard.shop^ +||bronzesong.pro^ +||broodbelongminiature.com^ +||broodoppressiveuptodate.com^ +||broodsfilmdomfeedlot.cfd^ +||brookrivet.com^ +||broonvergi.qpon^ +||brothdiscoversupposed.com^ +||brothdisguiseparrot.com^ +||brotherhoodroughly.com^ +||brotherinlawbarbedspend.com^ +||broughtkittock.qpon^ +||browbeatcaramelstole.com^ +||browdcelaeno.cfd^ +||brown-cry.com^ +||brownlypolypifirn.qpon^ +||brownrealization.com^ +||broworker14s.com^ +||broworker6s.com^ +||browse-boost.com^ +||browsecoherentunrefined.com^ +||browserr.top^ +||browsers.support^ +||browsfried.com^ +||browsiprod.com^ +||browsobsolete.com^ +||brphcvsebhffc.site^ +||brqxtydteljet.website^ +||brrymylzryxdd.site^ +||brsnnzgydzkpv.site^ +||brtirluihryud.website^ +||brtrmwotwbcfvsm.com^ +||brtsumthree.com^ +||brtwlhfmomcng.site^ +||bruceleadx1.com^ +||brucinabloke.cfd^ +||brugesgarner.com^ +||bruisedblock.pro^ +||bruisedpaperworkmetre.com^ +||bruisesacopic.shop^ +||bruitedaglaoswhelked.cyou^ +||bruitsmuchlyfumous.qpon^ +||bruitspifero.cyou^ +||brulemonty.cfd^ +||bruleschacun.qpon^ +||brulotspinkish.cyou^ +||brunetteeffaceduring.com^ +||brunettescarecrowyoga.com^ +||bruntstabulae.com^ +||brushertuftier.shop^ +||brushetvivace.shop^ +||brushtriplehorns.com^ +||brusklylawton.com^ +||bruteportrait.com^ +||brutishlylifevoicing.com^ +||brutrequit.cfd^ +||brxjgvho5kkjuu.cfd^ +||brxqlwrzcpcvx.website^ +||brygella.com^ +||brynzadolley.cyou^ +||bryoncorpse.cfd^ +||bryozoabespeed.shop^ +||brzbrjycauqcf.site^ +||brzjthsubtlwj.site^ +||brzvtueeyyqdo.space^ +||bsadcmesynzyb.store^ +||bsaziqhaldzoy.site^ +||bsbhmvllsgmnd.online^ +||bsbkrgcpjsugv.website^ +||bsbrcdna.com^ +||bservr.com^ +||bsfeuihxrczte.space^ +||bsfwoiljskare.site^ +||bsgbcdzmvggpc.site^ +||bsgbd77l.de^ +||bshrdr.com^ +||bshxjquduee.com^ +||bsigxzskaybsw.website^ +||bsjxodcvrvgbe.online^ +||bskakeiotyvge.online^ +||bskilkkuooeyy.site^ +||bsldkaxqzrcdn.website^ +||bsmvroohwwakx.site^ +||bsmyaurgljhae.online^ +||bsnwicychhpjy.website^ +||bsptcqnovtxdq.site^ +||bssgnowkrcjpm.online^ +||bstrvqdwuytk.com^ +||bsutdqdquzhhq.website^ +||bsuzrzbpyviyv.online^ +||bsvajclq.com^ +||bsvhinycewtko.space^ +||bswpedrupvagj.website^ +||bswpzhhfjjqxv.website^ +||bsxjqlasfcoaa.site^ +||bsxswvrbstntq.site^ +||bsxxamixxtbbp.store^ +||bt-fr-cl.com^ +||bt2pt.com^ +||bt83y12tlch5v9gzngifrozcjgo.cfd^ +||btagmedia.com^ +||btcplu2o67lkhq.rest^ +||btdfqejriamjr.website^ +||btdykfecwvyso.online^ +||bte29912.xyz^ +||btecvxxnfqaio.site^ +||btegxrphkoxxw.site^ +||btftejndwlagu.online^ +||bthtcgwaniavh.website^ +||bthythvdrdbud.space^ +||btjcjbqpmjzhk.website^ +||btkkzsdpmpmxi.online^ +||btkpfrvcrfbvx.site^ +||btlagkfxnypco.website^ +||btlrerperqchl.site^ +||btmpxsnzu.com^ +||btndobbxqqfgl.space^ +||btnspihedggvk.website^ +||btoetwervetat.space^ +||btofoayyqedfg.site^ +||btohhytqsijxj.website^ +||btowerexkphfu.site^ +||btpopoogrnqvj.site^ +||btprmnav.com^ +||btrijioqoidwi.site^ +||btrlvukwtlqyc.site^ +||bttphsqvrunfw.store^ +||bttrack.com^ +||bttzjdxxmazye.site^ +||btuebtacnueoy.website^ +||btuhaboubfiches.cyou^ +||btuhyubgcqlcy.space^ +||btvhdscr.com^ +||btvnamzxzbjce.online^ +||btwpgvvevgssm.site^ +||btwqllmeezmjn.online^ +||btxxxnav.com^ +||bty92u1epuwr71pk7ywf7fcljke5mpt6m8ih.cfd^ +||btyevdkgvcndp.website^ +||btykkivjzfjsr.online^ +||btyklhjjasgfm.club^ +||bu9945gvxw4qhv4.cfd^ +||buaontzlplobx.website^ +||bubblemayflowernephew.com^ +||bubbly-sound.com^ +||bucabjnocfjgu.website^ +||buccamestome.cfd^ +||buchloequests.shop^ +||bucklechemistdensity.com^ +||buckledbiznaga.cfd^ +||buckramtosheryserenes.qpon^ +||buckumoore.com^ +||buckweeklyrecording.com^ +||buddedchaosoreodon.cyou^ +||buddersavg.com^ +||buddhasoppy.cfd^ +||buddhiknutty.com^ +||buddlesnomial.cfd^ +||budgeencodeunions.com^ +||budgypeas.shop^ +||budlniydym.com^ +||budsminepatent.com^ +||budtawney.com^ +||budwhlooxgjpi.site^ +||budwutadb.com^ +||buenashomogenrattier.qpon^ +||buenolowsedgara.cyou^ +||bueo81.net^ +||buevafbtqeaaz.website^ +||buffetaccommodating.com^ +||buffooncountabletreble.com^ +||bufyiggmqdivt.site^ +||bugaruche.com^ +||buggessveneris.cfd^ +||bugleczmoidgxo.com^ +||buglersoogone.cyou^ +||bugpuk.ru^ +||bugs2022.com^ +||bugscrawled.com^ +||bugweedsnary.cfd^ +||buhhrcekgaspp.space^ +||buhjusvf.in^ +||buiimifrliflc.website^ +||buildnaq91.site^ +||buildsstate.com^ +||builtinintriguingchained.com^ +||bukusukses.com^ +||bulbousswoopskempts.qpon^ +||bulgerssunbelt.cyou^ +||bulgingextraordinary.com^ +||bulginglair.com^ +||bulgingreact.com^ +||buljlwaclnocq.site^ +||bulkishshirpit.qpon^ +||bulky-battle.com^ +||bulletinsituatedelectronics.com^ +||bulletkiel.shop^ +||bullionglidingscuttle.com^ +||bullionyield.com^ +||bulochka.xyz^ +||bulrev.com^ +||bultensettima.cyou^ +||bulterbeavers.cfd^ +||bumbojaquimaodiums.qpon^ +||bumfxnyfnepjh.online^ +||bummerbuckledindraft.cfd^ +||bumpssn.cyou^ +||bumpy-beyond.com^ +||bumpynation.pro^ +||bunchhigher.com^ +||buncosunhazy.shop^ +||bundledaglance.cyou^ +||bundlemoviepumice.com^ +||bundookbabiedhalogen.cfd^ +||bunfcjddgmnrd.online^ +||bunglersignoff.com^ +||bungosmantis.com^ +||bunintruder.com^ +||buniqlflpcppw.site^ +||bunix5555.com^ +||bunkersorbless.cfd^ +||bunkerstoy.shop^ +||bunkerylure.qpon^ +||bunkingfuscin.shop^ +||bunksniff.com^ +||bunningscapple.com^ +||bunnyassetsworn.com^ +||buntersfrorenbiggies.cyou^ +||bunth.net^ +||buntypuddee.qpon^ +||bunyancibaria.qpon^ +||bunyancolob.qpon^ +||buoyant-most.pro^ +||buoyantspecial.com^ +||bupatp.com^ +||buqkrzbrucz.com^ +||buram.xyz^ +||burbarkholpen.com^ +||burblycatted.com^ +||bureaubittercomic.com^ +||bureautrickle.com^ +||bureauxcope.casa^ +||burglargiggleportion.com^ +||burglarycirculationintense.com^ +||burgoolynched.cfd^ +||burgoosgurlet.cfd^ +||burialhotter.com^ +||buriatsaltily.shop^ +||buriedinadequateinset.com^ +||buritiabubble.shop^ +||burkhakalekah.com^ +||burkpalpal.qpon^ +||burlsleptenegowk.cfd^ +||burlytonight.pro^ +||burmesekraters.cyou^ +||burnsoutplod.qpon^ +||burntferries.cfd^ +||burntlynonself.cyou^ +||burrahanet.cyou^ +||burritoconedbrowned.cyou^ +||burrospupilarcrumply.cfd^ +||bursazincate.cyou^ +||burscommon.cyou^ +||bursesinlands.cyou^ +||burspiak.in^ +||burstedchowk.cfd^ +||burstingsteed.com^ +||burstythroddymellows.qpon^ +||burwfuhpwjlme.site^ +||busherdebates.com^ +||busherstabelbail.qpon^ +||bushetamidins.shop^ +||bushfulabiston.cfd^ +||bushsurprising.com^ +||busiedgruyere.qpon^ +||busiesparrot.cfd^ +||businessessities.com^ +||buskervessels.qpon^ +||busoverply.cyou^ +||bussockunhands.cfd^ +||bustianstaniel.cyou^ +||bustlefungus.com^ +||bustleplaguereed.com^ +||bustslicerstrongbox.com^ +||busy-man.com^ +||busyregret.pro^ +||butoraheadyg.com^ +||buttergem.com^ +||buttery-cause.com^ +||buttery-sick.com^ +||butteryamount.pro^ +||buttledarainsgleary.cfd^ +||buttondeeprootedbedside.com^ +||buttontileaiming.com^ +||bututtriglyijma.qpon^ +||butwehaveino.com^ +||butylicrinsing.qpon^ +||butylplexor.cfd^ +||butyrinbrest.qpon^ +||buvhlspktqqoi.online^ +||buwiibffvwhjs.online^ +||buyablerefalls.cfd^ +||buyeasy.by^ +||buyerparasitesurveying.com^ +||buyingthierry.cfd^ +||buyjwsoadheqo.online^ +||buzkalepjvgni.site^ +||buzvophsxtvn.com^ +||buzzdancing.com^ +||buzzersidewalkcathedral.com^ +||buzzesdimin.cfd^ +||buzzsawcodecs.cyou^ +||bv1uktljih4r5gu9hftm8ozv11lx.cfd^ +||bvckutpqnrftz.website^ +||bvczfysynljyd.store^ +||bveioagdmsmlfmp.com^ +||bvewsgtwrbnaw.space^ +||bvggicxfzizia.com^ +||bvhxiysrndwbg.site^ +||bvjcnybvjfdfq.space^ +||bvkicixmiytqz.website^ +||bvlconyoly.com^ +||bvlpjsmfnlxlw.space^ +||bvmcdn.com^ +||bvmcdn.net^ +||bvryckykikvhh.website^ +||bvtmvalgidefh.store^ +||bvtpk.com^ +||bvupjqkxxrgqr.space^ +||bvvrt28e3h2ucmk.cfd^ +||bvyhpxikzylmn.space^ +||bvyptevtmkdul.store^ +||bvysifyqchqio.com^ +||bwbebqhowuxfn.online^ +||bwcvzbjbrbolk.site^ +||bwdomnmflpiwb.site^ +||bwdsnvwtnvuhl.store^ +||bwdtjrynfpvgp.site^ +||bwgbqdhuyvkqu.site^ +||bwgq54iy2x1g1lf9mrm9xn1987zv.cfd^ +||bwkcomucfkfpgl.com^ +||bwkfevvdrwevl.website^ +||bwkjgxptx747o48.cfd^ +||bwknpebhbfyvv.online^ +||bwlbtup186j2pmnetqcmxgwcynnr9neecui7i.rest^ +||bwlfhhnlsvljs.online^ +||bwngwridgzuvl.website^ +||bwodskyelhpbn.space^ +||bwofuzfzhgqnp.website^ +||bwoxbgles.com^ +||bwporpxafcyms.online^ +||bwqfyjaynjpad.site^ +||bwqpdvvcxuzwi.website^ +||bwqteixclqazk.store^ +||bwrlnmpgstsel.website^ +||bwrpihqndmsio.site^ +||bwttasdajpduj.site^ +||bwulutvvdfvtv.online^ +||bwvgtmxrqmkwv.website^ +||bwwardgyspxvy.site^ +||bwwuveplotadr.site^ +||bwxpystpdnbla.online^ +||bwywyammvghos.space^ +||bxaclnvwqkrsy.space^ +||bxdeaeieixgkf.store^ +||bxdhqaqkuuqqg.online^ +||bxeaubadjolwnu.com^ +||bxekozqvwcqeg.space^ +||bxerfbkaoasof.space^ +||bxfvaugytecwq.online^ +||bxhnfmijbikzg.space^ +||bxk22gnym9zfz1mbhwoke6lbw.cfd^ +||bxkhoojkyzdbn.website^ +||bxlooftejvbac.website^ +||bxmhupvovdglv.website^ +||bxmyyupyexyci.space^ +||bxnmviazvodeo.space^ +||bxnqrscxckqbk.space^ +||bxolifojkkbue.space^ +||bxrlptloondxl.space^ +||bxshallal.cfd^ +||bxtubfjlscnxw.space^ +||bxtxxmqhrhtge.site^ +||bxtzeegktwvkx.website^ +||bxvvzylxihzoh.space^ +||bxwwtoeemvgrq.website^ +||bxwzcnwycuvbc.world^ +||bxxlfsdyftsxt.online^ +||bxyaqdyougmac.website^ +||bxynquktjxiqi.website^ +||by1ppyymvny4cljjr4j6.rest^ +||byaalrsqtwqge.site^ +||byaylwyziadkn.space^ +||bybyuxxgcqoze.space^ +||bycarver.com^ +||bycathyhoughsheu.org^ +||bycvdrvphznyr.site^ +||bydpbpjtbsfta.online^ +||bydurantr.com^ +||byeepodgiercunonia.qpon^ +||byehd3.life^ +||byeipdfctomc.com^ +||byflcjyrqcqvd.site^ +||byganedash.cyou^ +||bygoingskeezix.cfd^ +||bygoneudderpension.com^ +||byhbsbzlndndl.site^ +||byibbstnyywqj.store^ +||bykamfod.com^ +||bylmfilfswasy.website^ +||bylwwylkjmyai.site^ +||byntfingkclsq.space^ +||byoxhojwqdvhmy.com^ +||byoxxapgnfhdt.site^ +||byozugqpgfxxx.online^ +||bypassduehardly.com^ +||bypasspickupfaculty.com^ +||byphiaxmoyknd.website^ +||byqhxmtfehcgy.site^ +||byrlawaeratedtensile.qpon^ +||byrristrowed.cfd^ +||byryqaysgfpwz.website^ +||byswxkgrsbekt.website^ +||bywaycosine.cfd^ +||bzciwnqlqmxjn.online^ +||bzdehktarahzi.site^ +||bzdutznootnvg.website^ +||bzfrmvyspduxo.store^ +||bzgrj28e8k784j.cfd^ +||bzh7ntijbrn1ccki9fnum.rest^ +||bzl9ype75j18gl.cfd^ +||bzlnqhuqbwirt.store^ +||bzmhcaqwquzkj.website^ +||bznwonawdxmhd.site^ +||bzojjabyipdsf.website^ +||bzoomlubqo.com^ +||bzpogcssaxbmc.space^ +||bzpqekgjvaqkn.website^ +||bztzpzqpltlad.site^ +||bzux-protect.pro^ +||bzvxbpkdhrzxw.online^ +||bzwqkfuamelpb.online^ +||bzxeeoikdaiaw.website^ +||bzyfzusiqohk.com^ +||bzyhweaf.in^ +||bzzbncgvnlplx.site^ +||bzzeozksrbqxf.space^ +||c02a1b8438.com^ +||c03e5b557d.com^ +||c0c84de6d4.com^ +||c0me-get-s0me.net^ +||c17e7f4aa9.com^ +||c17jlyi26cbury8ghn4.cfd^ +||c18f3ffc23.com^ +||c1904584f2.com^ +||c1rt3zbjg77wz4jb.cfd^ +||c20700ec5a.com^ +||c23uz61b36qeet7g.rest^ +||c2b92903fa.com^ +||c2pg9zry9wuygz2kx42xji3.rest^ +||c381e2a877.com^ +||c3j7rk-rtbix.top^ +||c4f59ba59b.com^ +||c526b6ac88.com^ +||c55d4b9929.com^ +||c5acd666f8.com^ +||c607b31b1a.com^ +||c635e33b2e.com^ +||c6fuo6cx2rz5ywyh.cfd^ +||c74l4kr3f2fjv8j.rest^ +||c7f22da8bd.com^ +||c83ff46cc3.com^ +||c83tof2h2uw22ehonz.cfd^ +||c8t9czjeyur6ux.cfd^ +||c921a8d3e5.com^ +||c97tl1im6nf8ztm2e.cfd^ +||c99d76b8c9.com^ +||c9d76c57e7.com^ +||c9emgwai66zi.com^ +||ca06ef821c.com^ +||ca2865fb41.com^ +||ca6dbde75a.com^ +||ca8ef1ccff.com^ +||caafbngytx.com^ +||caahwq.com^ +||caamingpandore.qpon^ +||caawleoa.com^ +||cabbagereporterpayroll.com^ +||cabbagyflagger.qpon^ +||cabbletattoo.cfd^ +||cabbymissesjicara.qpon^ +||cabccumqxzevy.space^ +||cabhwq.com^ +||cabiaiquidam.qpon^ +||cabininestimable.com^ +||cabinpews.shop^ +||cabinzenith.com^ +||cabjvqtooqgcs.space^ +||cabmengrouter.cfd^ +||cabnnr.com^ +||cabotsanorth.cyou^ +||cabritopindari.cfd^ +||cabvrkooukotb.website^ +||cachedstrawy.cyou^ +||cachegorilla.com^ +||cachotditing.com^ +||cachuadirked.top^ +||cacklegrievingtank.com^ +||cacksencl.com^ +||cactoidsuff.com^ +||cactusheadroomscaling.com^ +||cadazypgstyas.space^ +||cadencebenefit.com^ +||cadsecs.com^ +||cadsimz.com^ +||cadskiz.com^ +||cadswkyoxlcfn.site^ +||cadwgsofoyxky.site^ +||caecauridine.shop^ +||caehtveorphwc.space^ +||cafenetwolfen.cyou^ +||cafeqnugevtpm.website^ +||cafewarriors.com^ +||caffeicpiping.shop^ +||cafhtritoma.qpon^ +||cafoycopy.cfd^ +||cagaieedrohdv.site^ +||cagealas.com^ +||cagothie.net^ +||cahierslarnax.cyou^ +||cahierswet.cyou^ +||cahootdisodic.com^ +||cainginburrocagmag.cfd^ +||caingincagers.qpon^ +||caitifafrete.qpon^ +||cajanreaping.qpon^ +||cajetagryllus.cyou^ +||cakeoverdoagenda.com^ +||cakescelebrationrecalled.com^ +||cakesinventory.com^ +||cakespoison.xyz^ +||caketteanopiaalltud.cyou^ +||cakeysmooths.cfd^ +||cakinglastjob.qpon^ +||cakmzschaasdf.space^ +||cakzbbrjeagxl.online^ +||calabarminimus.cfd^ +||calamityfortuneaudio.com^ +||calamitymyselfprong.com^ +||calamitynineteenthglide.com^ +||calaspluggerquaker.cyou^ +||calcifychiasma.cyou^ +||calcpol.com^ +||calculatingequal.pro^ +||calculationcovetous.com^ +||calculationperildomestic.com^ +||calculationtypicalscuffle.com^ +||caleanwhinstripes.cyou^ +||caligaoctrois.cyou^ +||calinutfizgigfacings.qpon^ +||calinutpyjama.cyou^ +||caliphaefauld.cfd^ +||calistafunctor.cyou^ +||caliteeschars.qpon^ +||calitemistyriels.qpon^ +||caljdjxsfofll.store^ +||calkagenumbly.qpon^ +||callaiscomb.qpon^ +||callalelel.info^ +||callasprawny.shop^ +||calletsforerun.cfd^ +||calligraphyanatomy.com^ +||calligraphyscoldsparrow.com^ +||callosebraggleseorita.cyou^ +||callowtooler.shop^ +||callyourinformer.com^ +||calmbytedishwater.com^ +||calmierarsinolinaloe.qpon^ +||calmlygelatinecandle.com^ +||calmyfife.com^ +||calpackcipherscubic.cyou^ +||calpactow.qpon^ +||calrlpvdqocgb.website^ +||calumnypaharia.qpon^ +||calvali.com^ +||calxespluvine.com^ +||calyondiffuse.com^ +||calyxesmailie.cyou^ +||camaligminchen.qpon^ +||camaligsnuckkreng.cyou^ +||camaypsid.qpon^ +||cambiamonacid.qpon^ +||camelusnightly.qpon^ +||cameracebids.cyou^ +||cameraeuntruth.shop^ +||camillatangoedchamped.cfd^ +||caminonattockdeturb.cfd^ +||camiocw.com^ +||camliveshow.xyz^ +||cammpaign.com^ +||camomilegentlemennotable.com^ +||camouflagemm.com^ +||campfirecroutondecorator.com^ +||campitchary.cfd^ +||camplacecash.com^ +||campmancrine.cyou^ +||camptwined.com^ +||cams.gratis^ +||camschat.net^ +||camshq.info^ +||camsitecash.com^ +||camzap.com^ +||can-get-some.in^ +||can-get-some.net^ +||canamoreggae.qpon^ +||canceltrustingunderuse.com^ +||candellume.shop^ +||candid-dress.com^ +||candid-twist.com^ +||candledenote.com^ +||candlefingergrandparents.com^ +||candlequestionableeffeminate.com^ +||candlingrecords.com^ +||candyai.love^ +||candyaversion.com^ +||canekilttantrum.com^ +||canellecrazy.com^ +||canesbabool.cyou^ +||canesfederalnewspapers.com^ +||canetonhappier.cfd^ +||canganzimbi.com^ +||canidshigh.qpon^ +||canionscowshut.shop^ +||cank.xyz^ +||cank9.site^ +||canolamonthlyswapping.com^ +||canseldomsulphur.com^ +||cansojdrsopsz.online^ +||cansoopaloid.com^ +||canstrm.com^ +||cantigasheep.qpon^ +||cantonsaunt.cfd^ +||canuckcanthus.qpon^ +||canuckstamnoipipping.cyou^ +||canvasturnupsinogen.qpon^ +||canyonconsultation.com^ +||canyruely.cyou^ +||caoled.com^ +||caopnycouzsoi.website^ +||capabletonight.com^ +||capaciousdrewreligion.com^ +||capefast.com^ +||capeplayer.com^ +||caperedlevi.com^ +||capersumiac.qpon^ +||capettepompey.qpon^ +||caphitetaroc.qpon^ +||capitalistsplitting.com^ +||capkinaculeus.cfd^ +||capkkfuiticpo.space^ +||capletsbenote.qpon^ +||capletsyird.cfd^ +||caplingfashesdzerin.cyou^ +||caplockcestas.cfd^ +||caplvexdhgvbz.website^ +||capndr.com^ +||cappiergeminal.cyou^ +||cappinghurleyheughs.cfd^ +||cappingvic.qpon^ +||capreolplainer.cyou^ +||capriceawelessaweless.com^ +||caprinefussereurous.cyou^ +||caprinejurane.cyou^ +||caprisalipedslhota.cyou^ +||caprizecaprizeflagfur.com^ +||captionconjecture.com^ +||captiveimpossibleimport.com^ +||captureinsolenceexamine.com^ +||captureukdmyatyten.org^ +||capulinhalva.qpon^ +||caqctaduwatz.in^ +||caqvwtvivqbae.website^ +||carabushulsiteslaving.cyou^ +||caracasweller.qpon^ +||carackdizdar.qpon^ +||carafonakasha.shop^ +||carafondonors.cfd^ +||caraganaarborescenspendula.com^ +||caranebulbils.cfd^ +||caranethymele.cfd^ +||carapaxprompt.cfd^ +||caratchtallesphenin.cyou^ +||caraunasivaitepricked.qpon^ +||caraunmete.com^ +||caravanexhale.com^ +||carawayhonest.com^ +||carbonfeverthink.com^ +||carcflma.de^ +||cardboardcrispyrover.com^ +||cardermats.com^ +||cardiganpalmreconcile.com^ +||cardinaltangible.com^ +||cardiumdevote.qpon^ +||cardoonnaias.qpon^ +||career-mesh.com^ +||careerunderstatement.com^ +||careewituhin.org^ +||carefree-complex.pro^ +||carefreefootball.pro^ +||carelessnurse.com^ +||caresseashoreunrest.com^ +||caressfinancialdodge.com^ +||cargoattachment.com^ +||cargosonars.cfd^ +||cariamacebid.qpon^ +||carianefphrauque.cyou^ +||caribalpicea.com^ +||caricatureboretangle.com^ +||caringpast.com^ +||cariouscannedroman.com^ +||caririfondon.qpon^ +||caririlawmen.com^ +||carivjjfpakgl.site^ +||carkingchonk.cyou^ +||carlinsresumes.com^ +||carminedillue.cfd^ +||carmotquidder.cfd^ +||carnagefezzy.com^ +||carnalgroopoffals.qpon^ +||caroluscressglave.qpon^ +||carpalsmotivo.cfd^ +||carpalstomapillars.qpon^ +||carpenterexplorerdemolition.com^ +||carpenterfootwearappellation.com^ +||carpenteroutwitindictment.com^ +||carpetallows.com^ +||carpsdyslogy.qpon^ +||carpuslarrups.com^ +||carreauyajeine.cfd^ +||carrickbutomus.cfd^ +||carriedamiral.com^ +||carriedwinlesspases.cyou^ +||carrowseptets.cyou^ +||carryglanced.com^ +||cartesoam.cfd^ +||cartingcalycli.cyou^ +||cartining-specute.com^ +||cartrigepromised.com^ +||cartrigestale.com^ +||cartyfuagetriseme.qpon^ +||carungo.com^ +||carvedseptembernest.com^ +||carvemariou.cyou^ +||carvenbowet.help^ +||carvenecomplin.qpon^ +||carvercranberry.com^ +||carvyre.com^ +||casalemedia.com^ +||casbahscodding.qpon^ +||caseatetamed.cfd^ +||caseours.com^ +||cash-ads.com^ +||cash-duck.com^ +||cash-program.com^ +||cash4members.com^ +||cashcinemaunbiased.com^ +||cashgzb.com^ +||cashibohs.digital^ +||cashiertriplereligion.com^ +||cashlayer.com^ +||cashmachines.biz^ +||cashmaneenthusiastic.com^ +||cashmereabove.com^ +||cashtrafic.com^ +||cashtrafic.info^ +||casinadoglike.cfd^ +||casinoding.cfd^ +||casinofoliose.shop^ +||casinohacksforyou.com^ +||casinousagevacant.com^ +||casketdropperregalia.com^ +||casketembody.com^ +||cassavaswathe.cyou^ +||cassenovene.shop^ +||casserolerehabilitationgradual.com^ +||cassiesaudisobelia.cyou^ +||castfilly.com^ +||castledregraftayah.cyou^ +||castrumprides.cfd^ +||casual-flirt-hub1.com^ +||casual-sweetsite.com^ +||casumoaffiliates.com^ +||casusinsulin.qpon^ +||casyttqicyhpk.online^ +||cataloguedelay.com^ +||catalosmiragyginney.cyou^ +||catalossprod.qpon^ +||catchbarracksclinic.com^ +||categorysoloist.com^ +||catfishfatals.cyou^ +||cathaytrash.com^ +||cathedralintheirbri.com^ +||catholicncesisp.com^ +||catiuribripent.com^ +||cativoinditch.qpon^ +||catlinsgermanstempe.qpon^ +||catnipstringle.cyou^ +||catodonacidoid.cfd^ +||cattailpectinselected.com^ +||caublarlpwmsn.site^ +||caudalenfonce.cyou^ +||caudexintrine.com^ +||cauditcommernal.com^ +||caufdorminsanglo.qpon^ +||caukinglodger.cfd^ +||caulkersyria.shop^ +||caumpavings.qpon^ +||cauralesolvedduroc.cfd^ +||causersoldan.cyou^ +||causingguard.com^ +||causlesscauslessshowerconventional.com^ +||cautelspritty.cyou^ +||cautiocorema.shop^ +||cautionpepraising.com^ +||cautiouslyanalysecrystal.com^ +||cautiouspitch.com^ +||cautommityring.com^ +||cavallahoggs.shop^ +||cavatesignory.cfd^ +||cavdiacameistsnapped.cfd^ +||cavederasionantired.cfd^ +||cavernous-mess.com^ +||cavewrap.care^ +||cavortbelling.cyou^ +||cavortsunmake.qpon^ +||cavuskirver.shop^ +||cavvfjxabrffj.website^ +||cawfwcxxaacdg.site^ +||cawnygelosefenagle.cfd^ +||cayucotomand.cyou^ +||cayugascorded.cyou^ +||caziqueregald.cfd^ +||cb3a316b81.com^ +||cb4a57f9c7.com^ +||cb4g9qkov2q9p33oghne.cfd^ +||cba-fed-igh.com^ +||cbayvxac.com^ +||cbbimyjigrdch.site^ +||cbce918a9d.com^ +||cbckftoaakcye.website^ +||cbdedibles.site^ +||cbhadfiwcdgsl.space^ +||cbihvjploytkp.store^ +||cbjflptthbjnb.space^ +||cbjtfkjfukuyb.store^ +||cbkyaepzyibsx.click^ +||cblmcgeipgxxc.online^ +||cblnixgitgbaf.site^ +||cbluygxyvtfhv.site^ +||cbogxhsvaqfxd.website^ +||cbpdlaaqrdyjd.com^ +||cbpttdpymofjx.online^ +||cbqkiuokpxtti.space^ +||cbro.win^ +||cbtxlvpoczxxr.space^ +||cbvnzczrbcjoq.online^ +||cbvyghlu.com^ +||cbxdyffyyezkx.space^ +||cbxxfascjrdjm.space^ +||cbzjerbxjdiph.online^ +||cbzxy.com^ +||cc-dt.com^ +||cc33b86bbf.com^ +||cc38229b6c.com^ +||ccaehcvrvcikt.online^ +||ccb836bd09.com^ +||ccbfyfuuyyetx.online^ +||ccbvr.com^ +||ccc9c93083.com^ +||cceotabubmypm.online^ +||ccflxer9b5tg2q9x.rest^ +||ccfvhquaynxcp.space^ +||ccgateway.net^ +||ccgbernpkbwid.com^ +||cchvgvgnqxrjr.space^ +||ccjfxvnyiqcfv.space^ +||ccjzuavqrh.com^ +||ccmiocw.com^ +||ccmrcrxtgllza.online^ +||ccn08sth.de^ +||ccncyngyyiwpz.space^ +||ccolsdtobzbho.website^ +||ccpdaindrmyyx.online^ +||ccrdcfkugujnl.space^ +||ccshymxkbepsl.online^ +||ccsrkyswshkjh.space^ +||cctpyneuuiuwn.site^ +||ccuoqedyqvttq.tech^ +||ccwqjgycmojrg.site^ +||cd2ef10dae.com^ +||cda5e3eeec.com^ +||cdafsilizdoqm.website^ +||cdahuceceqiqt.space^ +||cdc4dd5d44.com^ +||cdceed.de^ +||cdctwm.com^ +||cddeisjcimyni.space^ +||cddfupvjfsfii.site^ +||cddtsecure.com^ +||cde497d52a.com^ +||cdfkygvddsbre.online^ +||cdhzzirkkgoce.website^ +||cdhzzqqmnmpqf.website^ +||cdimgbpvoricw.online^ +||cdlfzyukmnvtu.site^ +||cdn-adtech.com^ +||cdn-adtrue.com^ +||cdn-fc.com^ +||cdn-fileserver.com^ +||cdn-server.cc^ +||cdn.house^ +||cdn.kelpo.cloud^ +||cdn.optmn.cloud^ +||cdn.yld.is^ +||cdn12359286.ahacdn.me^ +||cdn28786515.ahacdn.me^ +||cdn2cdn.me^ +||cdn2reference.com^ +||cdn44221613.ahacdn.me^ +||cdn4ads.com^ +||cdn4image.com^ +||cdn5.cartoonporn.to^ +||cdn7.network^ +||cdn7.rocks^ +||cdnads.com^ +||cdnapi.net^ +||cdnativ.com^ +||cdndot.fans^ +||cdnfimgs.com^ +||cdnflex.me^ +||cdnfreemalva.com^ +||cdngain.com^ +||cdnkimg.com^ +||cdnmon.com^ +||cdnondemand.org^ +||cdnpc.net^ +||cdnpf.com^ +||cdnquality.com^ +||cdnsugjfprtx.com^ +||cdntechone.com^ +||cdntestlp.info^ +||cdntrf.com^ +||cdnvideo3.com^ +||cdnware.com^ +||cdnware.io^ +||cdongahukchdi.space^ +||cdrhialzwntyu.store^ +||cdrvrs.com^ +||cdsbnrs.com^ +||cdtbox.rocks^ +||cdtnwcvokkicw.website^ +||cdtxbhqvcrv.com^ +||cdvhrthcua.com^ +||cdwmpt.com^ +||cdwmtt.com^ +||cdwqxjtpptrxm.online^ +||ce16f0cf56.com^ +||ce4f19e315.com^ +||ce6b6837ab.com^ +||ceaecinzktzcm.online^ +||ceakppokkbodo.store^ +||ceakvbhesrlgd.site^ +||ceasedaggravation.com^ +||ceasepancreas.com^ +||ceaslessivorygoats.com^ +||ceaslesswisely.com^ +||cebinecorncynical.cyou^ +||cebjrqvyienhy.site^ +||cebnovoscizrj.online^ +||cecalsukeyicker.qpon^ +||ceckwwtymviuk.space^ +||cecmwtarwabtp.website^ +||cedar-static.space^ +||cedarcrozzle.com^ +||cedarsdyewood.cfd^ +||cedarswinston.shop^ +||cedecancontemporary.com^ +||cedeimprovise.com^ +||cedensmedusalphulwa.cfd^ +||cedisetagre.cyou^ +||cedrenemopane.qpon^ +||cee332cc1f.com^ +||ceerrvzdgucqs.online^ +||cefazaaycjdqi.store^ +||ceget.xyz^ +||cehbmaknzpyic.store^ +||ceidjaq.life^ +||ceilingcrashpardon.com^ +||cejaswati.com^ +||cejidpicnzqlg.site^ +||cejjfojaxkpecd.com^ +||celeb-ads.com^ +||celebnewsuggestions.com^ +||celebsdongon.cfd^ +||celelernody.org^ +||celeritascdn.com^ +||celeryisolatedproject.com^ +||celit.xyz^ +||cellaradorn.com^ +||cellfancied.com^ +||cellspitch.com^ +||celoe.xyz^ +||celxkpdir.com^ +||cemaolocavmti.website^ +||cematuran.com^ +||cemeteryfrogs.info^ +||cemeteryloinrespirator.com^ +||cemiocw.com^ +||cemvzlagirols.website^ +||cenaclesuccoth.com^ +||cennter.com^ +||cenont.xyz^ +||censesbefogsennett.qpon^ +||censorsgedrite.cyou^ +||censualminable.qpon^ +||censuscompassembryo.com^ +||censusgrouch.cfd^ +||censusmarrydespair.com^ +||centeredphosphate.com^ +||centimetrebracketasperity.com^ +||centorodge.cyou^ +||centralindriver.net^ +||centralnervous.net^ +||centrevtiltersdabuh.cyou^ +||centricgaffkya.com^ +||centrobelfasthermae.cfd^ +||centumshough.com^ +||cenuakfsukncn.site^ +||cephei-b.com^ +||ceqspqzcifqhg.online^ +||cequalabfzofp.online^ +||ceqyuidnlnyib.site^ +||ceratinmaistloveful.cyou^ +||cerealrayful.cfd^ +||ceremonioustakeintoaccountcustomer.com^ +||ceremonyjogglecling.com^ +||ceremonysystemsfried.com^ +||ceresincostedpanini.qpon^ +||cerilloinverts.com^ +||ceriumhobits.qpon^ +||cerosratio.shop^ +||certainwolveshonestly.com^ +||ceruleropy.qpon^ +||ceruseraglans.cyou^ +||ceryldelaine.com^ +||ces2007.org^ +||cesosfultrbriol.com^ +||cessationhamster.com^ +||cessingbrant.cyou^ +||cessorataxy.cfd^ +||cestefondon.qpon^ +||cestetrpset.shop^ +||cestibegster.com^ +||cetylmidipredry.cyou^ +||cetyltanachcobcab.qpon^ +||ceuktgxqznmne.site^ +||ceuuogduqksxv.online^ +||cevxjorcuqsnr.website^ +||cewmyvfmjjbit.store^ +||cexofira.com^ +||cexucetum.com^ +||cexwqzqmrpjcw.site^ +||ceyreesdxgvkd.site^ +||cfarvjcutttkn.website^ +||cfbgxtwssfqah.online^ +||cfcezivxdpevd.online^ +||cfcwqpwvdtwux.online^ +||cfdfasdvrrfnj.online^ +||cffa3cb187.com^ +||cfgjchwhixigr.online^ +||cfgr1.com^ +||cfgr5.com^ +||cfgrcr1.com^ +||cfiprzoviucwc.website^ +||cfivfadtlr.com^ +||cfjqrzwncnpmb.site^ +||cfkwekketurmh.online^ +||cfmrwdprplamu.website^ +||cfngdxtjw.com^ +||cfngncvzumazd.space^ +||cfnokaixpcius.online^ +||cfpgsnkdmtugz.space^ +||cfpisltkhedst.online^ +||cfqrooirsgecg.space^ +||cfqzcuasbvwva.website^ +||cfszapashpahn.space^ +||cfusionsys.com^ +||cfxoaljlopydq.online^ +||cgbgdgcdmahpd.space^ +||cgbpxcvnophfy.space^ +||cgbubdilqdjit.online^ +||cgcvmv7i2ri5xpc41if.cfd^ +||cgg3ex4w172ygyx7f9yxto4qo1.cfd^ +||cggrinkqbazwe.site^ +||cgheqxwfnqmm.com^ +||cghfoulstwugv.website^ +||cgiaiptgdasfi.site^ +||cgiaysvjnljyk.online^ +||cgioikozcnuoh.website^ +||cgjobsvomesbu.space^ +||cgjrkjtkqvshb.site^ +||cgkgoowgputyo.site^ +||cgltweiaokwbt.store^ +||cgmbcebdawtqy.online^ +||cgmfhzvqykwxg.store^ +||cgmjawbhcqgu.com^ +||cgpjpvvcadzrp.store^ +||cgrmqvnefcjwj.website^ +||cgsaxsvjvswcu.space^ +||cgsgtmoxszyhu.online^ +||cgthnxnovsmml.xyz^ +||cgtkclfydnqhp.site^ +||cguunwxpkld.com^ +||cgw46pe4.xyz^ +||cgyquuphjlzsf.online^ +||chabadokor.com^ +||chaberunsatin.cyou^ +||chaconayautias.qpon^ +||chaerel.com^ +||chafesbranialdisa.cyou^ +||chafewettest.qpon^ +||chagnougroalry.net^ +||chaibsoacmo.com^ +||chainads.io^ +||chainconnectivity.com^ +||chaindoorman.com^ +||chaingo.co.in^ +||chaintopdom.nl^ +||chaipoodrort.com^ +||chairmansmile.com^ +||chaitpapered.cfd^ +||chaiwnaoytjig.site^ +||chalahsturkess.cyou^ +||chaliceguzzlerlandlord.com^ +||chalkedretrieval.com^ +||challaspajamas.qpon^ +||challengingdevaluationperiods.com^ +||chamberscrisiswalnut.com^ +||chamberssnorted.com^ +||chamitebodoni.cfd^ +||champbrusk.cyou^ +||championmegthousand.com^ +||championshipgirlie.com^ +||chancellorawaiting.com^ +||chancesarmlessimpulse.com^ +||chanduicimline.com^ +||changelessbleach.com^ +||changelesschoir.com^ +||changepowder.xyz^ +||changespegasidartware.cfd^ +||chankairportjuvite.cyou^ +||channel2pod.net^ +||chantornoctisprotext.cyou^ +||chaosesanimala.cyou^ +||chapahclower.cfd^ +||chapedheedily.qpon^ +||chapletkellies.cyou^ +||chappowahab.cfd^ +||chapturnjut.com^ +||characteristicattractcheeky.com^ +||characterlinguinisnarl.com^ +||chardhereat.cfd^ +||charednebs.qpon^ +||chargeit.baby^ +||chargeplatform.com^ +||charhometown.com^ +||charitablewithdrawal.com^ +||charitylingoreformer.com^ +||charlottemice.com^ +||charmingpoliteinjunction.com^ +||charquiuprive.cfd^ +||chartedsidia.cyou^ +||charvetseedful.shop^ +||charysicer.com^ +||chasedretzian.cfd^ +||chaseherbalpasty.com^ +||chasemodeler.com^ +||chasmedabature.shop^ +||chastebrussel.com^ +||chateaurecalled.com^ +||chateaurestrictedbriefly.com^ +||chatotapiocoupled.cyou^ +||chattahheists.cfd^ +||chattertexturecareful.com^ +||chatwaifuapp.com^ +||chauckee.net^ +||chauffermotter.com^ +||chautcho.com^ +||chazytypicon.qpon^ +||chdnenjtyssmn.online^ +||chdrircbditlp.online^ +||cheapendeaness.cyou^ +||cheapenleaving.com^ +||cheaperredressrationally.com^ +||cheapiefoisty.cfd^ +||cheaplyhumiliatedhunt.com^ +||cheaplyregainthrift.com^ +||cheapmachinerywail.com^ +||cheatingagricultural.com^ +||cheatsanabas.shop^ +||chebfqsmfwovu.online^ +||check-tl-ver-294-2.com^ +||check3.tiaa.org^ +||checkbookfort.com^ +||checkcavity.com^ +||checkcdn.net^ +||checkitoutxx.com^ +||checkm8.com^ +||checkoutfree.com^ +||checkupoceandip.com^ +||checkycynics.shop^ +||cheekchoppergaily.com^ +||cheeperrebring.cyou^ +||cheerfulcheckbookmason.com^ +||cheeroredraw.com^ +||cheersdeerpawn.com^ +||cheerysequelhoax.com^ +||cheesedgrappafusht.cyou^ +||cheesedschavsbreed.cfd^ +||cheeseextensivetolerate.com^ +||cheeseinferespionage.com^ +||cheesydrinks.com^ +||cheesyreinsplanets.com^ +||cheetieaha.com^ +||cheetietavs.cyou^ +||cheftoondiligord.site^ +||chegoeinbent.cfd^ +||chemicalssmuglyuntying.com^ +||chengaib.net^ +||chengplacidova.cfd^ +||chequesbalolo.cfd^ +||cheqzone.com^ +||cheriesminuetshostess.cyou^ +||cherriesprospectsfaith.com^ +||cherubsunrufe.qpon^ +||cheruppursuer.com^ +||chessermanic.com^ +||chesssorrydescend.com^ +||chestgoingpunch.com^ +||chethgentman.live^ +||chevalneavil.cyou^ +||chevinmusit.cyou^ +||chevronmislain.cyou^ +||chfpgcbe.com^ +||chftwkoiswquf.site^ +||chhencmmgwogk.space^ +||chiamfxz.com^ +||chiasmiraisers.com^ +||chibritgootee.cfd^ +||chickenadjacent.com^ +||chicks4date.com^ +||chidessapors.qpon^ +||chief-border.com^ +||chiefindividual.com^ +||chieflydecorationtreasure.com^ +||chieldcopyboy.cyou^ +||chifferexternecoys.cfd^ +||chiggermaims.shop^ +||chihuahuadoorstoppond.com^ +||chikpazrmdyuh.website^ +||childakenes.qpon^ +||childbirthsteepiris.com^ +||childishbombgodless.com^ +||childlessporcupinevaluables.com^ +||chileanpositor.qpon^ +||chilihandshakewing.com^ +||chilimonoxidesalary.com^ +||chilionfulvenelull.cyou^ +||chillibanking.cyou^ +||chillimagepublisher.com^ +||chillsweeperahem.qpon^ +||chillydiscovered.com^ +||chinapallasrobs.cfd^ +||chinaprecentalsindu.com^ +||chinarwergil.cfd^ +||chinchplayas.cyou^ +||chinchydauner.cyou^ +||chinesecongressawake.com^ +||chinesegloriam.qpon^ +||chiotreroute.cyou^ +||chioursorspolia.com^ +||chipleader.com^ +||chipnarrativefatherinlaw.com^ +||chipspasteprowl.com^ +||chiripapareses.shop^ +||chirpdescend.cyou^ +||chirredyip.cfd^ +||chitintzetze.com^ +||chitosewainman.cfd^ +||chitrasurer.qpon^ +||chittakscreich.com^ +||chivalrouscalmlymexican.com^ +||chivvyjarmoclaque.qpon^ +||chkalikcandiru.cyou^ +||chlziaue.xyz^ +||chmhhmmiphmdl.website^ +||chmnxkvhkdi.com^ +||chnkgnctdimfu.space^ +||chnonywbtn.com^ +||chnsrv.com^ +||chocolateluciusfight.com^ +||choconart.com^ +||chokrarundle.cfd^ +||chooseroverlaidspecies.com^ +||chopacapataz.cyou^ +||choppedremains.com^ +||choppedtrimboulevard.com^ +||choppydareall.cfd^ +||choragyomitted.cfd^ +||chorajesuist.cyou^ +||choralkesse.shop^ +||chordbelievingpossible.com^ +||chordedglowers.cfd^ +||chorgilaxly.cfd^ +||choribialoid.cfd^ +||choricpitting.qpon^ +||chorisobantinfurnace.qpon^ +||chorotichokies.cfd^ +||choseing.com^ +||chosesmahoes.cfd^ +||chosesunslept.cyou^ +||choussteam.cfd^ +||chpadblock.com^ +||chptbtxqkvbel.site^ +||chpz4928itr24n.cfd^ +||chqdyaoziqacr.website^ +||chrismsuling.cfd^ +||christrigos.qpon^ +||chronicairliner.com^ +||chrygilded.shop^ +||chrysidtrigamy.cyou^ +||chrysostrck.com^ +||chryvast.com^ +||chsdisbindcream.cfd^ +||chshcms.net^ +||chsrkred.com^ +||chtintr.com^ +||chtntr.com^ +||chtwyiucdvurb.online^ +||chtztjfzdcryy.site^ +||chubbyexemplaryhardiness.com^ +||chuckedoutrootremolds.cfd^ +||chuddergitter.shop^ +||chujstkfubpix.space^ +||chungalfionetowned.cfd^ +||chunhalides.qpon^ +||chunkdestructiveenforce.com^ +||chunkedearlike.cfd^ +||chunkyaward.cfd^ +||churchkhela.site^ +||churchyardlikinglockdown.com^ +||churnsrajasoddsman.qpon^ +||churriplisping.cyou^ +||chwshxiyhbjgc.space^ +||chxfqemkekb.com^ +||chyeqolaelmpo.site^ +||chyjobopse.pro^ +||chymifyhefterhandler.cfd^ +||chzhqwirsxmad.online^ +||chzowqzedjocl.space^ +||cibhmyowgsmpa.store^ +||cibolacybeletritest.qpon^ +||ciboriahulkier.cfd^ +||cicamica.xyz^ +||ciclagmbabdin.online^ +||cicqaxceuxwdu.online^ +||cicutacyclian.cyou^ +||ciderconcluded.com^ +||cidhafxjwxwjr.online^ +||cidont.xyz^ +||cidtunppinhi.in^ +||ciewpsfxnt.com^ +||cigaladoldrum.qpon^ +||ciikcnesctcup.space^ +||cijoyfhiacneg.online^ +||cikorloimlxct.website^ +||ciksolre.net^ +||ciliumspinate.com^ +||cilmdsifiezyk.space^ +||cimbznaflhzgk.site^ +||cimeliajose.qpon^ +||cimeterswail.cfd^ +||cindieendia.qpon^ +||cingo.sbs^ +||cinimryi.com^ +||cinnamonhandsomeoccurs.com^ +||ciolhysrijexi.store^ +||cipezicsdpmzi.space^ +||cipledeclinerybe.org^ +||cipqzgarguxht.online^ +||circarbulldogaurata.cfd^ +||circlejavgg124.fun^ +||circsgamori.cyou^ +||circularcarry.com^ +||circularconservation.com^ +||circulardraft.com^ +||circulartrash.pro^ +||circumferenceabdicateredhead.com^ +||circumscribeswear.com^ +||cirogpnymaqkf.space^ +||ciruelabedot.cfd^ +||cirxvsmcc.com^ +||ciscoesfirring.guru^ +||ciscrdwaxhbsh.site^ +||cisdvwwgkkjnb.website^ +||citadelexampleruckus.com^ +||citadelpathstatue.com^ +||citatorundeafheft.cfd^ +||citatumpity.com^ +||cithersdogman.cyou^ +||citizenagreementacting.com^ +||citizenhid.com^ +||citizenshadowrequires.com^ +||citralschancrecensing.qpon^ +||citrictituli.qpon^ +||citrousamex.cyou^ +||cityadspix.com^ +||citydsp.com^ +||citysite.net^ +||ciuoqhntqxrjv.site^ +||ciuvwepzmznwg.online^ +||civicmillion.com^ +||civiitbbaeuvi.online^ +||civilactually.com^ +||civitebacile.cfd^ +||civorydryopepardo.cfd^ +||ciwswcooilzwj.space^ +||cixcljugcznlu.site^ +||ciyxejfqrtvqq.site^ +||cj2550.com^ +||cjatrtlyqngiv.site^ +||cjdisuisubvkq.website^ +||cjenrzakbgvkk.site^ +||cjewz.com^ +||cjfmhwdbyjndv.site^ +||cjgeqnxnxejet.space^ +||cjgimadfnuztn.online^ +||cjienzuamndxo.online^ +||cjigqeziihjua.website^ +||cjikpufjlcxht.fun^ +||cjkvtdxsdfpqc.website^ +||cjlmffavyoprm.site^ +||cjlph.com^ +||cjncpwlbxitpf.website^ +||cjoaootrbhfcx.site^ +||cjohftnninpfu.online^ +||cjpccsnjqxbwf.site^ +||cjqnkzqlwetrd.website^ +||cjqxihvwcopgj.space^ +||cjriqheskyceo.online^ +||cjrlsw.info^ +||cjrtwtmauargd.website^ +||cjtxlfpkisctv.site^ +||cjutqvopetliy.space^ +||cjvdfw.com^ +||cjxomyilmv.com^ +||ck-ie.com^ +||ckaibkxlldgui.site^ +||ckbgvpjrjcwai.site^ +||ckcsfezbyxuuu.online^ +||ckfaconxrhyen.website^ +||ckgbulrcgantw.space^ +||ckhillulshshg.site^ +||ckhtqypqrwuqv.online^ +||ckiqxrqwnavqt.website^ +||ckjjxjpoxhebx.site^ +||ckkoabgjgzzcl.website^ +||ckmghmpfmdfvk.online^ +||ckndisjiwbc.com^ +||ckp329gz98txo71crunvpeo.cfd^ +||ckpchhhnhbsle.site^ +||ckpyqgorlfdko.site^ +||ckqohqwhpsgvf.website^ +||ckrf1.com^ +||ckrosvsppslck.site^ +||ckz9ql67uie5exuluwyvfzryh.cfd^ +||cl0udh0st1ng.com^ +||clabberscended.com^ +||cladupius.com^ +||claim-reward.vidox.net^ +||claimedpasquil.cyou^ +||claimexercise.com^ +||claimsthemselves.com^ +||clairessegathy.cfd^ +||clambakefreenessunclasp.com^ +||clammyendearedkeg.com^ +||clamourbiflex.cyou^ +||clankexpelledidentification.com^ +||clanksubjectprecede.com^ +||clanmute.com^ +||clannotillortale.com^ +||clapnethydrion.shop^ +||clapscolumba.shop^ +||claqueunfar.qpon^ +||clarifymeeterterne.cfd^ +||clarinmeanest.com^ +||claroura6000.net^ +||clarova2021.net^ +||claryne.xyz^ +||clashprobation.com^ +||classic-bonus.com^ +||classicsubdivide.com^ +||claudefeuter.shop^ +||claudiamesion.cfd^ +||claverssupari.cfd^ +||claviermudbank.cyou^ +||clavuviupsit.cyou^ +||clayeytogated.cyou^ +||clbaf.com^ +||clbjmp.com^ +||clcktrck.com^ +||cldirplarimo.com^ +||cldlr.com^ +||clean-browsing.com^ +||clean.gg^ +||cleanerbest.online^ +||cleanflawlessredir.com^ +||cleanmediaads.com^ +||cleansetabsmontjoy.cfd^ +||cleanupcalorystiff.com^ +||cleanupharm.com^ +||clear-request.com^ +||clearadnetwork.com^ +||clearancejoinjavelin.com^ +||clearcutinternational.pro^ +||clearergutfrore.cyou^ +||clearitem.pro^ +||clearonclick.com^ +||clearwatch.tv^ +||clearwaveinsystems.com^ +||clearwindridge.com^ +||cleatsbonks.com^ +||cleavebullydevaluation.com^ +||clecfcwjdgsoq.online^ +||clechehunky.qpon^ +||cleddecracked.qpon^ +||cleddeshoeing.qpon^ +||clefspolarisxylem.cyou^ +||cleftstay.qpon^ +||clemmedaztecs.cfd^ +||clenchedquarterbackluxuriant.com^ +||clenchedtea.com^ +||cleopatraadulatefrench.com^ +||clergystickingprecedent.com^ +||clerrrep.com^ +||clevernt.com^ +||cleverunjuicysolein.cyou^ +||cleverwebserver.com^ +||clhxzrqdatxqm.store^ +||clicadu.com^ +||click-cdn.com^ +||click-for-preview.com^ +||click.scour.com^ +||click4.pro^ +||clickadsource.com^ +||clickadu.net^ +||clickagy.com^ +||clickallow.net^ +||clickbooth.com^ +||clickboothlnk.com^ +||clickcash.com^ +||clickcdn.co^ +||clickco.net^ +||clickdescentchristmas.com^ +||clickexperts.net^ +||clickgate.biz^ +||clickintext.com^ +||clickiocdn.com^ +||clickmediahub.com^ +||clickmi.net^ +||clickmobad.net^ +||clicknano.com^ +||clicknerd.com^ +||clickopop1000.com^ +||clickoutnetwork.care^ +||clickpapa.com^ +||clickperks.info^ +||clickprotects.com^ +||clickpunch.icu^ +||clickpupbit.com^ +||clicks4tc.com^ +||clicksgear.com^ +||clicksor.net^ +||clickterra.net^ +||clickthruhost.com^ +||clickthruserver.com^ +||clicktimes.bid^ +||clicktoupdservice.online^ +||clicktraceclick.com^ +||clicktrixredirects.com^ +||clickupto.com^ +||clickwinks.com^ +||clickwork7secure.com^ +||clickxchange.com^ +||clientslaugh.com^ +||cliffgown.com^ +||climatedetaindes.com^ +||climateexhaustingconfidentiality.com^ +||climaththorter.com^ +||climbcompulsionwrestling.com^ +||climbspravous.cyou^ +||clingcratemoistness.com^ +||clingcupidfootprint.com^ +||clingertoxins.shop^ +||clinicadentalmariangeleslazcano.com^ +||clinkspurtfirmly.com^ +||clintypleaserjosie.qpon^ +||clionefalsen.qpon^ +||clipperroutesevere.com^ +||clipvibe-zone.com^ +||cliquemottoviscosity.com^ +||cliquesteria.net^ +||cliqueytharpinwing.cfd^ +||cliteappears.cyou^ +||clitmwviwbokk.space^ +||clivetadds.com^ +||clixcrafts.com^ +||clixsense.com^ +||clixwells.com^ +||cljfpthmkqkby.online^ +||cljsqdtcdpxfr.online^ +||clkepd.com^ +||clknrtrg.pro^ +||clkrev.com^ +||clksite.com^ +||clkuuwjydgkga.space^ +||clladss.com^ +||cllgv9lkbjgftn.rest^ +||cllvingprepyt.space^ +||clmbtech.com^ +||clmcbgttfttef.website^ +||clnnusgbmqhnr.space^ +||clo1p7jd.xyz^ +||clobberprocurertightwad.com^ +||clochemealed.cyou^ +||clockangrilypotter.com^ +||clockinaugurateounce.com^ +||clockwiseleaderfilament.com^ +||clockwisequillwilfrid.com^ +||clodderdupable.cyou^ +||cloddyisomerypeesash.qpon^ +||cloggermaytenfoeless.cfd^ +||clokeninesvindex.cyou^ +||clombparas.qpon^ +||clonkswhuffle.cyou^ +||clorly85.net^ +||cloron.net^ +||closablemardistiffness.com^ +||closedferallag.com^ +||closefracture.com^ +||closercopy.cfd^ +||closestbounceintentionally.com^ +||closetechnologysolder.com^ +||closingabode.com^ +||closingwatchmanconfidence.com^ +||clothapprovegerman.com^ +||clothcreepoak.com^ +||clothesgrimily.com^ +||cloud-suites.xyz^ +||cloudbitshift.com^ +||cloudcinemaheavily.com^ +||cloudflrcdn.com^ +||cloudfrale.com^ +||cloudimagesa.com^ +||cloudimagesb.com^ +||cloudlessdatapowerful.com^ +||cloudtrack-camp.com^ +||cloudtraff.com^ +||cloudvideosa.com^ +||cloudyjacket.com^ +||cloudyreach.pro^ +||cloudysoil.com^ +||clpnkuwcdmunv.space^ +||clprfkljfcmnm.site^ +||clprr.com^ +||clptdbrmcaxat.online^ +||clqmmy2lhc2qnfjvyxigxe95wb.cfd^ +||clrqbqtonradt.online^ +||clrstm.com^ +||cltdabpjiaqlw.space^ +||cltnopjcmaxkj.website^ +||clubacquiregivens.qpon^ +||clubbytentory.qpon^ +||cluckedzion.com^ +||cluelessbrain.pro^ +||clueostensiblebureaucracy.com^ +||cluffsakeret.cfd^ +||clugblieteuus.site^ +||cluinglwo.qpon^ +||clumperrucksey.life^ +||clumsybuttonbristle.com^ +||clungfellow.com^ +||clunkyentirelinked.com^ +||clurdfsagmfjh.space^ +||clusterdismissinvolved.com^ +||clutchlilts.com^ +||cluttercallousstopped.com^ +||clutteredbrush.pro^ +||clutteredclaim.com^ +||cluttervisiterstudium.qpon^ +||clvafteebrdfk.space^ +||clyblajtkoopx.site^ +||clyerseulytin.com^ +||clyersfrden.cfd^ +||clypeiescapes.com^ +||cm-trk5.com^ +||cm65.com^ +||cmadserver.de^ +||cmahrukfuqkiv.online^ +||cmaxihlabsfpj.website^ +||cmccmpzj.com^ +||cmccymjawtcpd.space^ +||cmdfmbugzwjkg.site^ +||cmdrogqpxvxtr.online^ +||cmdtubyfwosoa.online^ +||cmdtumult.cfd^ +||cmfads.com^ +||cmiupqlouwnnw.website^ +||cmjvxtwaitw.com^ +||cmkacxmsezqwd.space^ +||cmkhsigydgefs.site^ +||cmmwpkihpyefy.website^ +||cmnb7ew57uu38o.cfd^ +||cmorautniwdao.space^ +||cmpgns.net^ +||cmptphyupeflf.site^ +||cmrdr.com^ +||cmrmzexgezgkt.site^ +||cmtrkg.com^ +||cmvfkxeqwmy.com^ +||cmxfbwwuwdyjq.site^ +||cmyiojnzfirqc.website^ +||cn79266rjxwvnbgtf.cfd^ +||cn846.com^ +||cnabusictviht.site^ +||cnawrtrimk.com^ +||cnc187wrzrjftij44mewlh.cfd^ +||cndkpvokgivtq.website^ +||cnemicsynthol.qpon^ +||cnesnnavxumlh.online^ +||cnethvmomtnsh.site^ +||cnevlso.com^ +||cneygrvmtgkwg.online^ +||cnhuxrpiawywk.space^ +||cnjikkiehkpea.site^ +||cnkn9g6894j7fjbb6y89j6jz39p8wrz82897.cfd^ +||cnmwoxnyxyzhs.website^ +||cnnected.org^ +||cnodmooqslbzf.space^ +||cnqatpzabwfzc.website^ +||cnqsmekgjmgrp.site^ +||cnrsyxxkcjlor.online^ +||cnsxrfsrfpsvf.site^ +||cnsyczlxqxwbo.space^ +||cnt.my^ +||cntqatdtgsnsu.site^ +||cntrealize.com^ +||cnwetuaniiaal.site^ +||cnyojprieezzh.store^ +||cnyyqqdqtjyno.com^ +||cnzgraidqkkhw.site^ +||co5457chu.com^ +||coalbuffalo.com^ +||coalitionconcessionbecause.com^ +||coarctpoppetnousel.qpon^ +||coarseschool.com^ +||coastalbloom.xyz^ +||coastuniversalintroducing.com^ +||coatsanguine.com^ +||coaxalgaumy.cfd^ +||coazdbbxocvgi.site^ +||coazoveekjecr.space^ +||cobaltsanctionyodel.com^ +||cobaltsvinylsakamai.qpon^ +||cobbledkankrej.qpon^ +||cobnuthousal.cfd^ +||cobnutscopsole.com^ +||cobolapiprine.qpon^ +||cobolgammed.com^ +||cobradaunder.cfd^ +||cobwebhauntedallot.com^ +||cobwebsituationstyling.com^ +||coccidshubbubs.cyou^ +||coccipiankabeauti.cyou^ +||cochonkoomkie.qpon^ +||cockpitadministration.com^ +||cockpiteconomicspayroll.com^ +||cockpitnoncechiwere.qpon^ +||cocktailretire.com^ +||cockupsjapans.cyou^ +||cockygoodness.com^ +||cockysnailleather.com^ +||cocoarecuperate.com^ +||cocoatransgressdrew.com^ +||coconaunglove.cfd^ +||coconawaghlucile.qpon^ +||coconts.com^ +||cocoonelectronicsconfined.com^ +||cocxmkkptkprz.space^ +||codedexchange.com^ +||codefund.io^ +||codeinakentontubulus.qpon^ +||codeonclick.com^ +||coderformylife.info^ +||codersswarmer.cyou^ +||codettegravid.cyou^ +||codspirlietouzles.cyou^ +||codzcuagowz.com^ +||coeditenternat.qpon^ +||coeditsorpheum.cfd^ +||coedsgamete.cyou^ +||coehornsenile.cyou^ +||coeliabumpee.com^ +||coelinpinbush.shop^ +||coemptsruesome.shop^ +||coendouspare.com^ +||coenurithacksalpiste.qpon^ +||coercivepoorly.com^ +||coeshoblob.cyou^ +||coffanthrax.cyou^ +||coffeajacens.qpon^ +||coffeavirify.com^ +||coffinlapflight.com^ +||cofflednocturn.cfd^ +||coftfdtcjtnjt.website^ +||cogboatcanonry.qpon^ +||coggersjonquiltrotol.cfd^ +||coggingbrocard.com^ +||cogglyumbrose.com^ +||coghlekhu.cyou^ +||cognatesyringe.com^ +||cognizancesteepleelevate.com^ +||cogocs.com^ +||cogonclocher.cfd^ +||cograilpiaffe.qpon^ +||cogxnkfudgi.com^ +||cogythxeaufc.com^ +||cogzsatyhofvp.online^ +||coherentchuckled.com^ +||coherepracticesteward.com^ +||cohereproceedingsspark.com^ +||coheresattacus.cfd^ +||cohkdtcnyipwt.space^ +||cohobbeslash.qpon^ +||cohostsguilfat.com^ +||coilaetian.com^ +||coilapprobationbyword.com^ +||coilerslimningworks.cyou^ +||coillenormerscamisia.qpon^ +||coinad.media^ +||coinadster.com^ +||coinerstenailchekhov.qpon^ +||coinfervixenly.cfd^ +||cokeneyatakegenii.qpon^ +||cokersintil.qpon^ +||colanbalkily.com^ +||colbwxlsfenwn.website^ +||coldflownews.com^ +||coldnessswarthyclinic.com^ +||coleastrehabilitation.com^ +||colentkeruing.top^ +||colknunks.cyou^ +||collagecaroledbodies.qpon^ +||collationuppermodel.com^ +||collectbladders.com^ +||collection-day.com^ +||collectivequestioningcompartment.com^ +||collectortack.com^ +||collectout4000.net^ +||collectrum.com^ +||colleem.com^ +||collisionparanoiacrayon.com^ +||collowhypoxis.com^ +||colobinbeaners.cyou^ +||colobuspeaviessemidry.cfd^ +||colonexpenditure.com^ +||colonistnobilityheroic.com^ +||colonistsmothercommunity.com^ +||colonyeducate.cfd^ +||coloppecorbedlookum.cyou^ +||colorful-director.pro^ +||colorfullouderremnant.com^ +||colorinmehelyaisodef.qpon^ +||colossal-extension.com^ +||colossal-seat.com^ +||colossalanswer.com^ +||colossaltroubledknocked.com^ +||colossusssp.com^ +||colourfulplayerperspective.com^ +||colourrobot.com^ +||colportrottolo.qpon^ +||colterkeek.cfd^ +||coltlimb.com^ +||columnhauledhygienic.com^ +||columnspastrybonnet.com^ +||colvgwnqhzrs.com^ +||colzasblooey.cfd^ +||comalonger.com^ +||comarind.com^ +||comaruminburst.cfd^ +||comaticteuton.cyou^ +||combbicyclelistworth.com^ +||combgun.com^ +||combia-tellector.com^ +||combinedcanes.com^ +||combingcohabitrattans.cfd^ +||combotag.com^ +||combusteschel.shop^ +||come-get-s0me.com^ +||come-get-s0me.net^ +||comeeasiestshepherd.com^ +||comelysouthbuilds.com^ +||comerglucase.cyou^ +||comerhurlentertain.com^ +||comertmtcyglq.website^ +||comfitdossel.cfd^ +||comfortablehall.pro^ +||comfortablepossibilitycarlos.com^ +||comfortclick.co.uk^ +||comfortregionalmystery.com^ +||comfysoccermerchandise.com^ +||comihon.com^ +||comilar-efferiff.icu^ +||comitjegrubby.qpon^ +||comlquina.com^ +||commandslikeable.com^ +||commarkrepew.cyou^ +||commemoratewisdomcontemn.com^ +||commendhealthagitation.com^ +||commentaryblame.com^ +||commercialregretful.com^ +||commercialvalue.org^ +||commission-junction.com^ +||commissioncommerce.com^ +||commissionkings.ag^ +||commissionlounge.com^ +||commitmentelizabeth.com^ +||commodeoverfeedstifling.com^ +||commonsastian.cyou^ +||commonvivacious.com^ +||commonwealthgroovemadam.com^ +||commonwealthproficient.com^ +||commoteloopist.cyou^ +||communicatedroopcomer.com^ +||communicatedsuitcompartment.com^ +||communicatefriction.com^ +||communication3x.fun^ +||companiondirectly.com^ +||comparativehoneycomb.com^ +||comparativehumour.com^ +||comparedwooscore.com^ +||comparepoisonous.com^ +||compassionate-boot.com^ +||compassionatespreadinquire.com^ +||compassionpersonify.com^ +||compassionunsuccessful.com^ +||compelcode.com^ +||comperesceptre.com^ +||competeneigh.com^ +||competitionpropose.com^ +||compiledonatevanity.com^ +||complainguyseaweed.com^ +||complaintsinert.com^ +||complaintssplittingsuperlative.com^ +||complementnickel.com^ +||complete-drink.com^ +||completesuccession.com^ +||completionloyalty.com^ +||complex-switch.pro^ +||complexionbootydistinction.com^ +||complexnetwork.pro^ +||complicatedlock.com^ +||compoferula.cfd^ +||componymonontrove.cfd^ +||composed-virus.pro^ +||composegreyed.cfd^ +||compositeoverdo.com^ +||composurepossess.com^ +||comprehensionaccountsfragile.com^ +||comprehensive3x.fun^ +||comprehensiveimplementationstrode.com^ +||comprehensiveunconsciousblast.com^ +||compresssavvydetected.com^ +||compromisegraintickets.com^ +||comradegoodsfloor.com^ +||comtesquaedam.cyou^ +||comtyponym.qpon^ +||conanttopspin.com^ +||conative.network^ +||concealtraveller.com^ +||concedederaserskyline.com^ +||concedehorny.com^ +||conceitclevernessethic.com^ +||conceitneglectzeal.com^ +||conceitrefused.com^ +||conceivesaucerfalcon.com^ +||concentratetogethersubmarine.com^ +||concentrationmayberenice.com^ +||concentrationminefield.com^ +||conceptgebbie.shop^ +||concernedcollection.com^ +||concerthealthwhip.com^ +||conciergeeccentricstrained.com^ +||conciergeradialsupernova.com^ +||concisegrommet.cyou^ +||concludedgrowlabdicate.com^ +||concludelivingshowman.com^ +||concordglossaryvarying.com^ +||concordphymasbaronet.cyou^ +||concourseconquered.com^ +||concurfortunes.com^ +||concurscannoli.cyou^ +||condancing.com^ +||condemnfundraiserjune.com^ +||condescendingaveragerain.com^ +||condimentdisillusionnosebleed.com^ +||conditioneavesdroppingbarter.com^ +||condles-temark.com^ +||condogdesumedowel.cfd^ +||conductmassage.com^ +||conduit-banners.com^ +||conduit-services.com^ +||conermoocher.com^ +||conestreshow.com^ +||conferenceturkeybooking.com^ +||confessinvaluable.com^ +||confideabigeus.cyou^ +||confideclassifiedtimer.com^ +||confinecloakroomnew.com^ +||confinementroguerecital.com^ +||confitagree.shop^ +||conflabbegan.com^ +||conformityexpertgrounds.com^ +||confrontation2.fun^ +||confrontationdrunk.com^ +||confrridered.qpon^ +||confusedassociation.com^ +||confusedindustry.com^ +||confuserage.com^ +||confusingepisodevest.com^ +||confwaymen.qpon^ +||congerstunish.com^ +||congestprowessburger.com^ +||congreeseawan.cfd^ +||congresscaptainfatal.com^ +||congruedupoxidize.cyou^ +||congruousimplication.com^ +||congruousthey.com^ +||congruouswrite.com^ +||conicsfizzles.com^ +||conjectreddle.cyou^ +||conjeller-chikemon.com^ +||conjoinfunder.qpon^ +||conjunctionblackmailspill.com^ +||conjunctionrepresentativepowerless.com^ +||conkingkesar.shop^ +||conkspicus.cyou^ +||connect12.net^ +||connectad.io^ +||connectedflownow.com^ +||connectingadjusthospitality.com^ +||connectingcurioustraced.com^ +||connectingresort.com^ +||connectionhearddock.com^ +||connectoritineraryswimming.com^ +||connectreadoasis.com^ +||connecttoday.eu^ +||connextra.com^ +||conopidlanai.qpon^ +||conoret.com^ +||conreyacrania.qpon^ +||conscientiouscabbageadrift.com^ +||consciousness2.fun^ +||consciousnessquaint.com^ +||consensusarticles.com^ +||consequencerelic.com^ +||conservefelt.com^ +||considerableinsanityaside.com^ +||considerablerider.com^ +||considerateluxuriouspoor.com^ +||consideration3x.fun^ +||considerationpegpreposition.com^ +||consistedbullyingdemeanour.com^ +||consistencyjacksonwasteful.com^ +||consistentsoup.com^ +||consistspouchrowan.com^ +||consolevolcano.com^ +||consortcyclist.cfd^ +||constantlyauthoritativegradually.com^ +||constellation3x.fun^ +||constellationexclusion.com^ +||consternationeffaceearlier.com^ +||constructpreachystopper.com^ +||consukultingeca.com^ +||consulsdealate.cyou^ +||consultationopenedfroze.com^ +||consulting2quartz.com^ +||consumeairlinercalligraphy.com^ +||consumeririssalary.com^ +||consyeyemark.shop^ +||contagiousembodimentstoop.com^ +||containingstripesadmonish.com^ +||containjudiciouslucy.com^ +||contemnclench.com^ +||contemplatepuddingbrain.com^ +||contemplatepushed.com^ +||contemplatethwartcooperation.com^ +||contemplatewaryheadquarter.com^ +||contempthumanitycalamity.com^ +||contendnoticefaculty.com^ +||content-hoster.xyz^ +||content-item.pro^ +||content-rec.com^ +||content-row.com^ +||content-website-analytics.com^ +||contentabc.com^ +||contentblanksupersede.com^ +||contentcave.co.kr^ +||contentclick.co.uk^ +||contentmayinterest.com^ +||contentproxy10.cz^ +||contents-search-windows.com^ +||contextrewindfreed.com^ +||contextweb.com^ +||contingentsolemnlykettle.com^ +||continue-download.com^ +||continueallergic.com^ +||contoidhokumcompoer.cfd^ +||contosursal.qpon^ +||contractexcitedly.com^ +||contradiction2.fun^ +||contrastevaporate.com^ +||contributionabdicatemoral.com^ +||contributorcoming.com^ +||contributorshaveangry.com^ +||contriveddisparage.com^ +||controlaffliction.com^ +||controlslaverystuffing.com^ +||contuneleamer.shop^ +||conusesstare.cfd^ +||conveniencegymnasium.com^ +||convenienceshooting.com^ +||conveniencesloot.com^ +||convenientlypoverty.com^ +||conventionalcohere.com^ +||convers.link^ +||conversationstruggle.com^ +||convertedarchitecturepsychopath.com^ +||convertedelectaccusation.com^ +||convertexperiments.com^ +||convertfictiondeer.com^ +||convertmb.com^ +||conveyactualdictator.com^ +||conveyedorchidframes.com^ +||convictedpavementexisting.com^ +||convictionfoolishbathroom.com^ +||convictiontrialpromptly.com^ +||convictyferrejnd.cyou^ +||convincedfashionablehandwriting.com^ +||convrse.media^ +||convsweeps.com^ +||coobapilikai.cfd^ +||cooeyeddarbs.com^ +||cooffolkmot.cyou^ +||coohauwhob.net^ +||cooikoomseerun.com^ +||cookedtower.pro^ +||cookersillites.qpon^ +||cookeryshed.com^ +||cookieless-data.com^ +||cooladblocker.info^ +||coolantcocomat.cfd^ +||coolerpassagesshed.com^ +||coolestharpconsternation.com^ +||coolestinstead.com^ +||coolestreactionstems.com^ +||coolingvaluer.com^ +||coolishrocked.com^ +||coolriverpath.com^ +||cools-sweetclub.com^ +||coolserving.com^ +||coolsmurexidagouti.qpon^ +||coolstreamsearch.com^ +||coontieprimmed.cfd^ +||cooperatemarker.com^ +||cooperative-convert.com^ +||cooperative-reveal.com^ +||cooperativepop.com^ +||cooperbudge.com^ +||cooperydiptych.cyou^ +||coordinated-agent.pro^ +||coordinatediningroom.com^ +||coosdtzwworiu.space^ +||coosync.com^ +||coosynci.com^ +||coothtenableownable.cfd^ +||cootlogix.com^ +||copablecalkin.cyou^ +||copacet.com^ +||copalmwhoopee.cyou^ +||copiousgoutswimwear.com^ +||copisthulwort.qpon^ +||copitacoodle.cyou^ +||copitinamon.com^ +||coplotmentor.cfd^ +||copulaestating.cfd^ +||copycatpeonesmichabo.cfd^ +||copymanannal.qpon^ +||copyrightgenerateprotector.com^ +||copyrighttruce.com^ +||coqaahrmahfko.online^ +||coqivmhwkcywq.online^ +||cor8ni3shwerex.com^ +||coralcanarydepend.com^ +||corbinaborinekalium.qpon^ +||cordaxrelive.cyou^ +||cordbraghare.com^ +||cordclck.cc^ +||cordialbail.com^ +||cordiesfict.cyou^ +||cordinghology.info^ +||cordplumb.com^ +||cordulawakens.shop^ +||core.dimatter.ai^ +||coreadness.com^ +||coredsemeion.cyou^ +||coresfaecal.qpon^ +||corftreedzostera.qpon^ +||coriinbonelet.shop^ +||corkdeclarationfourteenth.com^ +||corksadly.com^ +||cormoidlowlybedell.cfd^ +||cornedmurrina.com^ +||corneey.com^ +||corneredsedatetedious.com^ +||corneredtomb.com^ +||cornersbutene.cfd^ +||cornflowercigar.com^ +||cornierspilth.cfd^ +||cornufallace.cfd^ +||corny-swing.pro^ +||corny-wear.com^ +||cornychicken.pro^ +||coronergaperauncel.cyou^ +||corpnredcap.cfd^ +||corporaldispleased.com^ +||corporalgelnobles.com^ +||corporateeveningsyawn.com^ +||corpsenoodleflakes.com^ +||corpspatrol.cfd^ +||corpulentperjury.com^ +||corramba.lol^ +||correalakmitecomenic.cyou^ +||correctdialperch.com^ +||correctdilutetrophy.com^ +||correlationcocktailinevitably.com^ +||correspondencebirthday.com^ +||correspondimpulsive.com^ +||correspondingsphereconceited.com^ +||corridoquelled.qpon^ +||corriealosa.qpon^ +||corrodedriveroverfed.com^ +||corrupt-comfort.com^ +||corrupt-peak.com^ +||corruptionburlylawsuit.com^ +||corsesmascots.qpon^ +||corsiepeones.cyou^ +||corteslish.cyou^ +||coryphstoma.com^ +||coryzaproximarowport.cyou^ +||coryzasdarat.cfd^ +||coseierblowstalipat.cfd^ +||cosetengarb.com^ +||coseymikra.cyou^ +||coseyskilij.cyou^ +||cosherspocosen.shop^ +||cosinchukor.qpon^ +||cosmeticsgenerosity.com^ +||cosmopolitanprawn.com^ +||cosponsorgarnetmorphing.com^ +||cosshencoital.com^ +||costumeorcanet.cyou^ +||cosystraight.com^ +||cothambaumetoroid.cyou^ +||coticealophasmuffs.qpon^ +||coticoffee.com^ +||cotrck.com^ +||cottaeinglesaforold.qpon^ +||cottasteepedchimar.qpon^ +||cottiervested.qpon^ +||cotxriwmudsth.website^ +||cotylarhatrackbowlder.cfd^ +||coucalhidated.com^ +||cougarsblaflum.shop^ +||couhagesignaryrotten.cfd^ +||couijnmkgjdim.site^ +||couleefancifycalpul.cfd^ +||councernedasesi.org^ +||counciladvertising.net^ +||councilvomitscarlet.com^ +||countabledawdlerunaudited.com^ +||countenancedrykeeper.com^ +||countenancetiring.com^ +||counterfeitlearnedpacify.com^ +||counterimageawoke.com^ +||countersuspiciousdiverse.com^ +||countlessdispleased.com^ +||countyauthority.com^ +||couperfoeman.qpon^ +||couphaithuph.net^ +||coupscontra.cyou^ +||coupstrangers.com^ +||courapskimpfoxtrot.cyou^ +||courilblaze.cyou^ +||coursejavgg124.fun^ +||coursestiffenjealous.com^ +||coursvagientfarl.cyou^ +||courthousebaloney.com^ +||courthousecadenceconsiderable.com^ +||courthousezoological.com^ +||courtroomestablishedtrauma.com^ +||courtsakra.cfd^ +||cousinselizareproach.com^ +||couthlydobber.qpon^ +||couxiastoved.cfd^ +||coverdistilltile.com^ +||coveringstrawberries.com^ +||covetbens.cyou^ +||coveteddutifulprescribe.com^ +||covettunica.com^ +||covisitmanolis.cyou^ +||covivado.club^ +||covnucexwiauj.site^ +||covsayslgwcsv.com^ +||cowardlyapex.com^ +||cowardlydefinite.com^ +||cowardlyvitaljoggle.com^ +||cowardphysiciancries.com^ +||cowardydunkardshacker.cyou^ +||cowbaneklepticvet.qpon^ +||cowbanekorec.cfd^ +||cowerretortnineteen.com^ +||cowtownimbrued.qpon^ +||coxbesoul.shop^ +||coxiesthubble.com^ +||coxpythiuspau.cyou^ +||coxscarcer.qpon^ +||coxsnlangrddj.online^ +||coydogmurph.com^ +||coylycaptate.com^ +||coyosethrogs.qpon^ +||coypusendorse.shop^ +||cozbxsxralcxd.website^ +||coziesmaltman.com^ +||cozigplpxpcih.site^ +||cpa3iqcp.de^ +||cpabeyond.com^ +||cpaconvtrk.net^ +||cpalabtracking.com^ +||cpaway.com^ +||cpays.com^ +||cpbhizaihjzaa.space^ +||cpbsdmiolplwp.website^ +||cpcmart.com^ +||cpdliftbamsxxo.com^ +||cpdqvdvmwlnyq.site^ +||cpgkivogfu.com^ +||cphatlpirvbfikd.com^ +||cpiutdrcihvim.space^ +||cpjgcxcpswkai.space^ +||cpjxmaecroqix.online^ +||cpkwmmawszpkj.store^ +||cplayer.pw^ +||cpm.biz^ +||cpm20.com^ +||cpmadvisors.com^ +||cpmclktrk.online^ +||cpmmedia.net^ +||cpmprofitablenetwork.com^ +||cpmrevenuegate.com^ +||cpmroi.com^ +||cpmspace.com^ +||cpmtree.com^ +||cpnsbxkibvbhw.space^ +||cpthbnildpvlt.online^ +||cpuim.com^ +||cpumuhmpocab.in^ +||cpuzspopetlsg.space^ +||cpvlyqkpyfsns.store^ +||cpx24.com^ +||cpxgjpqdliwdg.site^ +||cpxinteractive.com^ +||cpz76zh699u8eoj4m3.cfd^ +||cqaqwekgzvkek.tech^ +||cqcaoltqtarmz.space^ +||cqcpazetvhaso.website^ +||cqcsvgiryffsf.online^ +||cqeorasldxsbw.store^ +||cqisidohiplpc.space^ +||cqjgztejpzvkd.space^ +||cqkpoxtlakibf.space^ +||cqkzgchjtlllo.store^ +||cqomjiajwczzf.online^ +||cqorwjtsurysk.website^ +||cqqmjkrcwuetz.store^ +||cqrksadeerzsp.space^ +||cqrqudjmhslqh.website^ +||cqrvwq.com^ +||cqsiekqkitsty.online^ +||cqtmotizjuvwe.online^ +||cquozcdrrbcua.online^ +||cqvjtxxn6oz67yllkgjkgn2nt.cfd^ +||cqvxrmwcwyvad.site^ +||cqwtmfcibhaoo.com^ +||cqxfpeudfzhoe.website^ +||cqxstzfithstp.site^ +||cqyitlvpkvyzf.site^ +||cqzddfxybkwcw.online^ +||cr-brands.net^ +||cr.adsappier.com^ +||cr06.biz^ +||cr08.biz^ +||cr34qzn92qj644uumvc2u1.cfd^ +||crabberunpent.cyou^ +||crabcoprogramme.com^ +||crackingoptimistic.com^ +||crackrapt.com^ +||cracksingularstopper.com^ +||crackupdebel.cfd^ +||craftilypendantwhinny.com^ +||craftsmanscaffoldingwheelbarrow.com^ +||craftybroad.com^ +||craharice.com^ +||crajeon.com^ +||crakbanner.com^ +||crakedquartin.com^ +||cramfinalizesluice.com^ +||cramperruddy.com^ +||crampleadspace.com^ +||cranberryclearingexplode.com^ +||cranchablend.qpon^ +||cranederns.qpon^ +||cranegarnishextinct.com^ +||cranelyphasers.qpon^ +||craneyjiggle.cfd^ +||crankycarrick.qpon^ +||crannyadministervolunteer.com^ +||craptroopstammer.com^ +||crapunpredictablefiddle.com^ +||cratestable.com^ +||cratonlocoingtubmen.qpon^ +||craurxxwkhbup.space^ +||crawlcoxed.com^ +||crawlsingeshell.com^ +||crazefiles.com^ +||crazesmalto.com^ +||crazilyshulnserment.cyou^ +||crazinessheirloom.com^ +||crazy-baboon.com^ +||crazylatchdisturbance.com^ +||crazylovepartners.com^ +||crbbgate.com^ +||crdefault.link^ +||crdefault1.com^ +||creaghtain.com^ +||creamssicsite.com^ +||creamy-recover.com^ +||creamymouth.com^ +||creasecortege.cfd^ +||creasereturndisplayed.com^ +||creatablegluesurvival.com^ +||createthrax.cfd^ +||creationpartnershipputrescent.com^ +||creative-sb1.com^ +||creative-serving.com^ +||creative-stat1.com^ +||creative.nangilive.com^ +||creativecdn.com^ +||creativedisplayformat.com^ +||creativeformatsnetwork.com^ +||creativeideasandc.org^ +||creativesumo.com^ +||crechearmoryinvolved.com^ +||credereinkling.qpon^ +||credosboubas.cfd^ +||creeduserbane.com^ +||creekerpair.cyou^ +||creeperplotgrove.com^ +||creepgrandpa.com^ +||creepy-birthday.pro^ +||creepy-frame.com^ +||creesefuneralyauds.qpon^ +||crenateoxalylbobbish.qpon^ +||crengate.com^ +||crentexgate.com^ +||crepeyfrogged.com^ +||crepgate.com^ +||crepineginete.cfd^ +||creptdeservedprofanity.com^ +||crescentnoise.com^ +||crescentstocky.com^ +||cresfpho2ntesepapillo3.com^ +||cretgate.com^ +||cretizeuntackdespite.qpon^ +||creuvyopidbmd.space^ +||crevicedepressingpumpkin.com^ +||crewecheers.cyou^ +||crewfebruary.com^ +||crhhiczgguiif.site^ +||crhvgfrhzsxmu.site^ +||cricjowlier.cyou^ +||cricketquaint.com^ +||criesspiceclack.com^ +||crieycuber.com^ +||crihbeppscadw.site^ +||crimeagc.com^ +||crimsonrhyme.com^ +||crimsonserene.com^ +||cringezonearistocracy.com^ +||crinitewiggish.cyou^ +||crippletouret.com^ +||crisisinanehalted.com^ +||crisistuesdayartillery.com^ +||crisp-crew.pro^ +||crisp-emotion.pro^ +||crisp-freedom.com^ +||crisp-run.pro^ +||crisp-slice.com^ +||crispfinal.pro^ +||crisppossy.cyou^ +||crispterracedamage.com^ +||cristochris.com^ +||criticaltriggerweather.com^ +||crittereasilyhangover.com^ +||crjjqhvbktqc.com^ +||crjpgate.com^ +||crjpingate.com^ +||crmdump.com^ +||crmentjg.com^ +||crmpt.livejasmin.com^ +||crn77.com^ +||crncotdhpraic.site^ +||croakedrotonda.com^ +||croakglanceskier.com^ +||crocarddoty.shop^ +||crockadilla.com^ +||crockerydestructivespoken.com^ +||crockeryrepay.com^ +||crockssneak.com^ +||crocodail-dandy.com^ +||crogctnujttuy.site^ +||crojikspoppean.cfd^ +||crommeunplug.shop^ +||cronaura.com^ +||croni.site^ +||cronianlavage.cyou^ +||crookcalculated.com^ +||crookedchange.com^ +||croomaingly.com^ +||cropenjoymentstellar.com^ +||croplake.com^ +||croppahamli.qpon^ +||crosbybuccate.cfd^ +||crossoafstollery.qpon^ +||crosspreferrite.com^ +||crosswindoutnetworks.com^ +||crostyogee.cfd^ +||crotchwanle.cfd^ +||crouchedmonarch.com^ +||crowbariranianmanati.cyou^ +||crowded-you.pro^ +||crowdsubsequentadmire.com^ +||crowdsuitcaseuntwist.com^ +||crowdsynonym.com^ +||crowedrerisen.cfd^ +||crownzodiac.com^ +||croydoncowpats.qpon^ +||crprmbjapabkt.website^ +||crptentry.com^ +||crptgate.com^ +||crqjtfoolnelm.site^ +||crqnmxczwaoeq.website^ +||crqohlrqgmefu.online^ +||crqwhsxcvngdp.icu^ +||crrepo.com^ +||crsope.com^ +||crsspxl.com^ +||crtracklink.com^ +||crtznwsuivbvt.online^ +||crucialostensiblestops.com^ +||cruddedtheave.qpon^ +||crudenessfinishersacred.com^ +||crudsenties.cfd^ +||cruel-love.com^ +||cruiserx.net^ +||crumberoffal.qpon^ +||crumblefilchactive.com^ +||crumbtypewriterhome.com^ +||crummerqasidas.cyou^ +||crummydevioussucculent.com^ +||crumpetprankerstench.com^ +||crumpywoolded.cfd^ +||cruncherpatiencestoreroom.com^ +||crunchysheathstruck.com^ +||crusewail.cyou^ +||crushespileate.cyou^ +||crushingaspect.pro^ +||crusileletted.cfd^ +||crustdisagreeable.com^ +||crustedmailbag.qpon^ +||crutchstubbornultimatum.com^ +||cruxgpnyrvvur.website^ +||crwdcntrl.net^ +||crwlmdpzabosr.online^ +||crwthpong.com^ +||crxcr2.com^ +||crxsoukcwwpip.space^ +||cryingforanyth.com^ +||cryorganichash.com^ +||cryozix.com^ +||crypticrallye.com^ +||crypto-ads.net^ +||cryptoatom.care^ +||cryptobeneluxbanner.care^ +||cryptobuffet.care^ +||cryptojimmy.care^ +||cryptomaster.care^ +||cryptomcw.com^ +||cryptonewsdom.care^ +||cryptotyc.care^ +||crystalbloom.bid^ +||cryto.xyz^ +||cryuhgsypgijd.space^ +||cs15.biz^ +||csaibzsnbxpym.site^ +||csbhmxgelwqud.store^ +||csbstcyg.com^ +||cschyogh.com^ +||csdoranmotswo.site^ +||csectserector.shop^ +||csephkkcdkljz.club^ +||csfijhywqxquh.space^ +||csfuiuwdubtyr.online^ +||csgiwgquicwsc.space^ +||csjdhxlelvqpa.site^ +||csjdlngaavfilh.com^ +||csjggncfpbhnq.space^ +||csjokezuqdbdy.online^ +||cskcnipgkq.club^ +||cskvctbhfzfxn.online^ +||cslmpnddwujdf.space^ +||csnyoydcaayfs.site^ +||csoaedqbdzjme.site^ +||csqojhzrapobd.online^ +||csrtvckpwnfby.site^ +||cstavionictapism.cyou^ +||cstwpush.com^ +||csufnzbxyfrfd.space^ +||csuhgqcwubodd.online^ +||cswjpyurbaiap.online^ +||cswzdujrpvyra.site^ +||csxbezadpeazu.site^ +||csxqqewstnvup.com^ +||ct11.biz^ +||ctasnet.com^ +||ctbfleegqpvkx.online^ +||ctbucqcndifdt.online^ +||ctcdwm.com^ +||ctcodein.biz^ +||ctcoepsaqctrt.site^ +||ctdowlapwyuwq.site^ +||cteahqozkatk.com^ +||ctebiooadmfty.space^ +||ctengine.io^ +||ctexueogshbdo.online^ +||ctgkrtjuarrzp.online^ +||ctgpterrasekv.space^ +||ctjoiwkyh.com^ +||ctm-media.com^ +||ctmofpzrkmjxt.site^ +||ctmpjhldreytz.space^ +||ctnshophar.cfd^ +||ctnsnet.com^ +||ctnzjwecyluvg.online^ +||ctosrd.com^ +||ctozowsblyidt.website^ +||ctpgylmhxxtie.space^ +||ctprevrinugss.online^ +||ctqofdizkaput.website^ +||ctrdwm.com^ +||ctrem.site^ +||ctsdwm.com^ +||ctsunpcmtdozi.site^ +||cttnmjpplccxm.website^ +||ctubhxbaew.com^ +||ctvorgijspjnn.site^ +||ctwihnfnjypom.site^ +||ctwmcd.com^ +||ctwmed.com^ +||ctxclwykznvzt.online^ +||ctxkfeyjbgcnv.space^ +||ctyhodypm.com^ +||ctysfzudaoqlf.online^ +||ctyywrvwlffgc.online^ +||ctzsryncxsdkg.site^ +||ctzzirfslkvcv.website^ +||cubitalgigget.qpon^ +||cubyvsstoehos.online^ +||cuchiaarsleaquerne.cyou^ +||cuckoldbeeswaxballoon.cyou^ +||cuckooretire.com^ +||cuckootomb.com^ +||cucumbersinferphysically.com^ +||cucuyflytrap.cyou^ +||cuddlecoveragehiss.com^ +||cuddlethehyena.com^ +||cuddlywomanrl.com^ +||cudgelhotspur.qpon^ +||cudgelsdebug.shop^ +||cudqtypwkimkg.site^ +||cueafuqnoeewx.space^ +||cuegfjlcarbdq.online^ +||cueistrapport.cyou^ +||cuevastrck.com^ +||cueweliqubbvh.space^ +||cuffagible.shop^ +||cuinfocottisedikage.cyou^ +||cuishapparat.qpon^ +||cuishverty.shop^ +||cuisineenvoyadvertise.com^ +||cuizgelbtbdft.site^ +||cujgqmnqwsgjt.website^ +||cujkqrmdhoqap.website^ +||cujsmulireodu.space^ +||cujvazxcuock.in^ +||cukankingwithe.org^ +||cukpfmeuozyow.site^ +||cukvpiadkpewh.store^ +||culchesbyrled.qpon^ +||culinar9sync.com^ +||culinarydamagehere.com^ +||culizyxhdblqa.website^ +||cullemple-motline.com^ +||cullersredealt.shop^ +||culmedpasses.cam^ +||culmingremixes.cyou^ +||culnas.click^ +||culposenarrate.cfd^ +||culpycscbslnp.store^ +||cultivated-cell.com^ +||cultivated-guitar.com^ +||cultivatedclassy.com^ +||cultivateddecrepitcoolest.com^ +||cultivatedtale.com^ +||cultivatelimbharvest.com^ +||cultivationclassicalstarter.com^ +||cultivationfrustrationreply.com^ +||cultivationgabblehaunted.com^ +||cumbersomegarmentmortify.com^ +||cumbersomeplenty.com^ +||cumppphnizdyp.space^ +||cumunzmneiyte.online^ +||cundumposied.shop^ +||cundumshands.qpon^ +||cunealwolvish.com^ +||cuneiblabbed.cyou^ +||cuneusmicrify.cyou^ +||cunningrespectable.com^ +||cunningthong.com^ +||cunzaredoing.qpon^ +||cuoieadrraxle.space^ +||cuoit3y9lnmefljnopcu.cfd^ +||cuoqlvruhlqyv.space^ +||cuozzjtmcmcgd.online^ +||cupbearergrowllurch.com^ +||cupdknmilgfus.online^ +||cupdyxvpmiqfc.space^ +||cupidirresolute.com^ +||cupidrecession.com^ +||cupis-lady-dreampartner.com^ +||cuplikenominee.com^ +||cuplwjwkpxjrp.space^ +||cupoabie.net^ +||cupularstriae.shop^ +||cupulesgothics.cfd^ +||cuqtrlibylbiv.website^ +||curablymuncher.cyou^ +||curacescalper.cyou^ +||curacoababyish.cyou^ +||curatnestful.com^ +||curessuccub.cfd^ +||curiaradiazole.cfd^ +||curiarawolfkin.com^ +||curinbitters.cyou^ +||curiositycognition.com^ +||curiositycow.com^ +||curioushingefast.com^ +||curiouslyplanning.com^ +||curledpastpatty.com^ +||curlewpettish.cfd^ +||curlilylissomsprats.cfd^ +||curlingsaner.qpon^ +||curlsbatter.com^ +||curlsseizuregolan.com^ +||curneycruddy.qpon^ +||curneyminks.cyou^ +||curnocksentidervish.cfd^ +||curoax.com^ +||currentreared.com^ +||curriculture.com^ +||curriculumoutcry.com^ +||curryfielddistribution.com^ +||cursecrookadvantage.com^ +||cursengrowing.cfd^ +||cursorbah.qpon^ +||cursorpreach.com^ +||curtaingluttonybounty.com^ +||curtcrannyhustle.com^ +||curtesydozing.cyou^ +||curtisunl.qpon^ +||curtworlds.com^ +||curvatureinadvanced.com^ +||curvedheldideal.com^ +||curvemodernforester.com^ +||curversyndetweapon.qpon^ +||curvy-print.pro^ +||curyrentattri.com^ +||cushitewelshed.cyou^ +||cuspidcary.cfd^ +||cuspsmi.cyou^ +||customads.co^ +||customaryprevention.com^ +||customernormallyseventh.com^ +||customslongest.com^ +||cutbpmobdpitn.website^ +||cuteab.com^ +||cuterbond.com^ +||cutescale.online^ +||cutinseats.qpon^ +||cutiplpknfpbn.online^ +||cuttagetibiale.qpon^ +||cutterbewilderedvile.com^ +||cuttlefly.com^ +||cutweedgarn.qpon^ +||cuuasgouqbvse.site^ +||cuuunrzplrqwe.website^ +||cuybnvyuqlizr.space^ +||cuzkqk1z39e749vk18x.cfd^ +||cuzqaskcyjyut.site^ +||cv6r2zk11l5g2e.cfd^ +||cvapmrecpvrjy.website^ +||cvastico.com^ +||cvbdlmcuzahza.site^ +||cvdbvcrpzjrgv.website^ +||cvevpwhszksij.online^ +||cvfovyleufbbt.space^ +||cvhtvulatsofq.space^ +||cvhzobkzchndd.store^ +||cvivxd.com^ +||cvlfbpymwyulj.site^ +||cvmrmpaepcmpa.site^ +||cvngacuwqodke.site^ +||cvpdkmzxvnzng.online^ +||cvqfwzrnkvtun.website^ +||cvshucoqrnqjq.website^ +||cvuestnhwbnix.site^ +||cvwgltvuviniv.space^ +||cvwnpvbtezqvk.site^ +||cvwwojzl5c4jiz3nnncz.cfd^ +||cvxbbrcunmulw.site^ +||cvxjn3k2yiz6313j.cfd^ +||cvxsbbysnnyxq.space^ +||cvzbchlxyuzzd.site^ +||cvzrqzanffkxy.site^ +||cwawlwdjdtxem.space^ +||cwbtbhdhcirkr.website^ +||cwchjisabnnmx.space^ +||cwclrbjglcccp.website^ +||cwfxbleusptyc.space^ +||cwhjirncjhrmo.site^ +||cwicybzyryttv.space^ +||cwigitapkvac.com^ +||cwmgdpescuqtc.space^ +||cwonjakwxipnq.online^ +||cwoolsmcagis.in^ +||cwqctcmhswrth.online^ +||cwqhagwjoppbb.website^ +||cwqtqpxudxicq.space^ +||cwrlsjkvjdgff.site^ +||cwsbrxarjnaav.space^ +||cwtervpgcjuqa.website^ +||cwtjduacwhhtj.site^ +||cwuxquolwlfqp.site^ +||cwvahnqeauemq.online^ +||cwvipsciqhuqi.site^ +||cwvueoaakybnr.site^ +||cwyvnvawjstrr.online^ +||cwzcvaxwpkozq.site^ +||cxamupwxndqat.online^ +||cxbogbmqugqqy.store^ +||cxcjuhbxaysnj.site^ +||cxcsrgntzjolw.online^ +||cxfbpspnezfak.online^ +||cxfgtvitcaatu.space^ +||cxfrehekozo52mpcnqt.cfd^ +||cxgznmgoawvwj.site^ +||cxhjeu8kbm3r75.rest^ +||cxiegxvvbtmxo.space^ +||cxikfjqfiwxta.vip^ +||cxivcfnaivzmj.online^ +||cxjtsybhvpsfl.space^ +||cxnbgyadiqscl.click^ +||cxo5qxrq5qjrk4yf4hh1.cfd^ +||cxofostbnjehi.website^ +||cxpppgnjrsers.space^ +||cxqhvxekx.com^ +||cxqutseiqw.com^ +||cxrvilfjtbwxy.store^ +||cxussqzuffumy.site^ +||cxutqsjbwtkth.website^ +||cxvklaosnwgae.online^ +||cxvuaexnqejex.site^ +||cxyilbdocnfsi.space^ +||cxzygwseuwnii.website^ +||cyadbgetdk.com^ +||cyaijllypnzgl.online^ +||cyamoidhorme.shop^ +||cyan92010.com^ +||cyaneanvagrommorros.qpon^ +||cyanidalfargaatreus.cfd^ +||cyaninewangles.shop^ +||cyberfluxer.com^ +||cybkit.com^ +||cyclanebinal.cfd^ +||cycrtitiqxykp.space^ +||cycuratedhi.com^ +||cydontopply.shop^ +||cyeitxjzgsmef.online^ +||cyfiaeojxyrsu.space^ +||cyfyxkqvqfvfm.space^ +||cygnetseuonymy.qpon^ +||cygnus.com^ +||cygony.xyz^ +||cyhanjealyojs.space^ +||cyiatzkksmibj.site^ +||cyihpbij6yfqqh.cfd^ +||cyiihoobjuxlx.space^ +||cylinder502.net^ +||cylindrical-good.pro^ +||cylindrical-occasion.com^ +||cylindrical-suggestion.com^ +||cylindrical-wave.com^ +||cymaeghees.cyou^ +||cymastariff.cfd^ +||cymbelunfloor.shop^ +||cymfjunafovza.space^ +||cymlinshrovy.qpon^ +||cymoidbaretta.cyou^ +||cymulereimply.qpon^ +||cynem.xyz^ +||cynicalcabaret.cyou^ +||cyniccurranekilij.cfd^ +||cynzybmckvjxg.store^ +||cyrnrpliixwi.com^ +||cyrola.net^ +||cysclatowtdxq.website^ +||cysodwprdoejs.online^ +||cytasedelate.cfd^ +||cytdmhahgvmur.fun^ +||cytguxjucudjc.online^ +||cytulajerviawomby.cyou^ +||cyutuwsoxyjju.online^ +||cyvoxuwz778wnlj6cmm9k1un1m.cfd^ +||cyvzavjhmduqn.online^ +||cyxbmqbsncgll.site^ +||cyxexdscsaphd.space^ +||cyxyzrpolrjnh.online^ +||cyyzrgvrnbomn.online^ +||czabtzbcciqyn.space^ +||czb1wgqx79lef2c.rest^ +||czcmgagjthwgu.site^ +||czdclraxaacmq.online^ +||czeqgnnrivwmp.space^ +||czfjzpxdykhtz.space^ +||czfkfrlqbbqjb.website^ +||czfqzozhchalv.online^ +||czfueamnlhlqq.space^ +||czgacpadsspuj.space^ +||czggeketcjxvz.site^ +||czgxwtlqklaju.site^ +||czh5aa.xyz^ +||czhavjzsxkcwa.space^ +||czhmgezchubno.space^ +||czhplqbsgswcz.site^ +||czhtvbrrnqpwq.site^ +||cziganyravener.qpon^ +||czjjdgbytiqsk.space^ +||czmehjnb.xyz^ +||cznbqd.com^ +||cznjfnlosgkob.online^ +||cznratophrtou.website^ +||cznzorthcvkvi.online^ +||czofrrdmzszbd.site^ +||czqchyyuwbpbo.site^ +||czqvtn3elk64hq.rest^ +||czsttsmgndlni.website^ +||czsusasfoyqln.website^ +||czsuxtbbaaryw.space^ +||cztesoepklydo.online^ +||cztmmijwxiafu.click^ +||czuwprnlhxpdh.site^ +||czxnozkdqlcrk.online^ +||czynhitkvjkkw.space^ +||d-agency.net^ +||d018b822d2.com^ +||d0598b291a.com^ +||d08l9a634.com^ +||d0d9f1bb4b.com^ +||d0efb05e03.com^ +||d0f9347881.com^ +||d0main.ru^ +||d175757719.com^ +||d194f6c2fc.com^ +||d1b0ccfa6c.com^ +||d1mahjlm.xyz^ +||d24ak3f2b.top^ +||d285ff9533.com^ +||d2ship.com^ +||d334591460.com^ +||d4020f5f0f.com^ +||d487fdd2a5.com^ +||d4dc5a447c.com^ +||d4edfb1010.com^ +||d58bdec688.com^ +||d5c1b32380.com^ +||d62391e0b0.com^ +||d6468dab54.com^ +||d6b1c430ca.com^ +||d6f9e3ab62.com^ +||d6fc2de2ee.com^ +||d71194ad75.com^ +||d7607f24d9.com^ +||d816d458c4.com^ +||d894a1d400.com^ +||d8b03d6392.com^ +||d8c9bf3664.com^ +||d949b51857.com^ +||d97e3715f9.com^ +||d99b2e7693.com^ +||da-ads.com^ +||daa9425b1e.com^ +||daaae00aa4.com^ +||daailynews.com^ +||dabbedpipetskyhoot.cfd^ +||dabblednonet.shop^ +||dabmbren.com^ +||daboiaflobby.cyou^ +||daboovip.xyz^ +||dabxucgukjf.in^ +||daccroi.com^ +||dacoityyawnups.cyou^ +||dadqcuxqdnecx.space^ +||dadsats.com^ +||dadsimz.com^ +||dadsoks.com^ +||dae19a0c6f.com^ +||daejyre.com^ +||daffaite.com^ +||daffierponchostirr.qpon^ +||daffyforcat.qpon^ +||dafgdmabrnjnk.store^ +||daftarbeds.cyou^ +||daftarfilles.shop^ +||dagglespirates.qpon^ +||dagheshweaselsbelcher.cyou^ +||dagnar.com^ +||dagobacotland.cyou^ +||dahhegnmbrdgv.site^ +||dahmsoutblot.qpon^ +||dahomanbespatespited.cfd^ +||daicoaky.net^ +||daily-datehere.com^ +||dailyc24.com^ +||dailyexcessivestocks.com^ +||daimiostogeys.shop^ +||daimonwrithenuphill.cyou^ +||daimyostenchy.cfd^ +||dainchakharwarhonda.qpon^ +||daintynotice.com^ +||dairyakasa.cyou^ +||daisiedveritecabda.cfd^ +||daivendtzsbws.space^ +||dakafxgnqcpmm.website^ +||dakhinifraela.cfd^ +||dakhsnmphmcoc.website^ +||dakoitsgrouch.cyou^ +||dakoityramilie.cfd^ +||dakotasinseamaskers.cyou^ +||dalagarasterlowbred.cyou^ +||dalaivenefic.qpon^ +||dalarlhawfa.in^ +||daldadvjnzjqd.website^ +||dalecta.com^ +||daleelerah.info +||daleelerah.info^ +||dalestretching.com^ +||dalethnecking.qpon^ +||dallavel.com^ +||dalrmayksroqa.online^ +||damaged-transition.com^ +||damagedbehaved.com^ +||damagedbroad.pro^ +||damagedplough.com^ +||damagedsong.com^ +||damansgaleas.cyou^ +||damedamehoy.xyz^ +||damewaltzed.shop^ +||damiaavert.shop^ +||damiaevilest.shop^ +||damnercold.help^ +||damnscowheel.com^ +||damolicbesetperrie.qpon^ +||dampedvisored.com^ +||dampratio.pro^ +||damselsterpin.cfd^ +||damshornily.qpon^ +||damsmiaower.cyou^ +||danaglacrudely.cfd^ +||danaidehomes.com^ +||danceryteatswinged.cyou^ +||danderpotrero.cyou^ +||danderwidder.shop^ +||dandieagitato.cfd^ +||dandiewealful.com^ +||dandlealibied.cfd^ +||dandyleapt.com^ +||danesuffocate.com^ +||dangerinsignificantinvent.com^ +||dangerous-leader.pro^ +||dangledcaffiso.com^ +||danksvgpkxvmh.online^ +||danniesowins.qpon^ +||dantaradiohd.net^ +||dantbritingd.club^ +||danteobject.shop^ +||danzhallfes.com^ +||daobaalzioctx.online^ +||daoxwweomcsvt.site^ +||dapbkeomzbu.com^ +||daphnews.com^ +||dapper.net^ +||darbhatahakinkier.qpon^ +||darbspanagia.qpon^ +||daredjadedormitory.com^ +||darerlasket.qpon^ +||daringdemand.com^ +||daringepicism.cyou^ +||daringmillennium.com^ +||daringsubstance.com^ +||daringsupport.com^ +||dariolunus.com^ +||dariusgitana.com^ +||darkandlight.ru^ +||darkapartment.pro^ +||darkmfbipedjt.space^ +||darkpetalia.com^ +||darlix.top^ +||darnobedienceupscale.com^ +||dartrewalkist.cfd^ +||dasensiblem.org^ +||dasesiumwor.org^ +||dash58wl.com^ +||dashbida.com^ +||dashboardmortal.com^ +||dasperdolus.com^ +||dassentarank.cfd^ +||dasturgrote.qpon^ +||dasypodtelesm.cyou^ +||data-px.services^ +||data159.click^ +||data284.click^ +||data369.click^ +||data527.click^ +||data741.click^ +||data852.click^ +||data963.click^ +||databoilrecommendation.com^ +||dataslicenode.com^ +||datasprintlab.com^ +||datatechdrift.com^ +||datatechone.com^ +||datatechonert.com^ +||date-till-late.us^ +||date2024.com^ +||date4sex.pro^ +||datedhalvesnowman.com^ +||datelovelygirls.com^ +||datepleasure.com^ +||datersfinder.com^ +||daterushnow.com^ +||dates-fever-zone.com^ +||dateskeitai.com^ +||datesnsluts.com^ +||datetrackservice.com^ +||dateyou2024.com^ +||dateyourpllace.com^ +||dating-amour-club.com^ +||dating-honey-girls.com^ +||dating-honeygirles.com^ +||dating-masters-haven.com^ +||dating2cloud.org^ +||datingadvicefree.com^ +||datingero.com^ +||datinghoneygirls.com^ +||datingmeetnet.com^ +||datingprudethimble.com^ +||datingshere.com^ +||datingsspads.com^ +||datingtopgirls.com^ +||datingwithmee.net^ +||daubwhereupon.com^ +||daudedtangles.cfd^ +||daughtersvariedfalse.com^ +||davipkybnzfji.site^ +||davtwymjlx.com^ +||dawac.com^ +||dawehazeniobous.qpon^ +||dawnedvitiatebulwand.cyou^ +||dawnfilthscribble.com^ +||dawonfjvwjcaj.online^ +||daxtnnqlppovj.space^ +||dayboygubbincoexert.cyou^ +||dayboypillowyforrard.cyou^ +||dayghhobglfko.space^ +||dayglowmedille.com^ +||dayuxxtabgzpu.site^ +||dazedarticulate.com^ +||dazedengage.com^ +||dazhantai.com^ +||dazjfusnmshvn.site^ +||dazmmlkurukfj.space^ +||daznpfkkuujek.online^ +||dazxkfkneqjnq.online^ +||dazzlingdelay.com^ +||db045ae2e5.com^ +||db0a4b4eb7.com^ +||db41cbaf55.com^ +||dbaforialygmw.website^ +||dbancamd.com^ +||dbazcftxukqxs.online^ +||dbb6251066.com^ +||dbdhnavwbvhep.website^ +||dberthformttete.com^ +||dbgjsblkeulmq.online^ +||dbhyflmvdngif.site^ +||dbjyfiwbaxjwh.online^ +||dbmgikwoijnhu.online^ +||dbmkkfqpgcijj.space^ +||dbmlkpqrktyto.online^ +||dboccfzxlavyp.online^ +||dbpcikpbtmrxl.website^ +||dbpjegtrlbmzp.space^ +||dbpkchblarrdg.space^ +||dbr9gtaf8.com^ +||dbsmnmbotbbpn.space^ +||dbtcspxlnkqiw.space^ +||dbvcmwmqdgcpg.online^ +||dbzwgmwxnqiiy.website^ +||dc036be5b9.com^ +||dcakwfzcjfjjb.life^ +||dcapugcaiirxs.site^ +||dcavixmtxjxra.site^ +||dcazkddmpuwkw.website^ +||dcbvegzfz.com^ +||dccjdirlxtjqi.site^ +||dccprpiscatnk.site^ +||dcdifeecbfhxm.space^ +||dcerypvyrkeyk.space^ +||dcff90fa75.com^ +||dcfnihzg81pa.com^ +||dcgfjjawtjxte.website^ +||dcgpsjmcytukn.website^ +||dcjgqlosvpdaiq.com^ +||dcjvnjnkhanpk.space^ +||dcjxowgfytohp.space^ +||dcleuevkxvzmr.site^ +||dcmbaescepqsq.space^ +||dcmbzbtgqiyvd.website^ +||dcmdquudzpmkc.store^ +||dcpiylakiagvi.site^ +||dcpqlckkntmoc.site^ +||dcsakxvzsdiaz.space^ +||dcssptrack.com^ +||dcufwmmoasenl.website^ +||dcunkpgzsysvg.website^ +||dcvssaited.com^ +||dcwnhlzrvnlnj.website^ +||dczicllonbfre.site^ +||dd133.com^ +||dd1xbevqx.com^ +||dd268fdaa5.com^ +||dd9l0474.de^ +||ddb853e3a4.com^ +||ddd1cb4508.com^ +||dddomainccc.com^ +||ddexxmthhduej.space^ +||ddfbgbghyxrtq.site^ +||ddfocqtbglcxt.website^ +||ddhjnrssqnmxc.store^ +||ddhwkjvctuxpl.space^ +||ddissezttnheq.space^ +||ddkwzfhfqfuxb.site^ +||ddkyibdnflbxqn.com^ +||ddlpahnomzxfn.website^ +||ddmctsbqysfgi.website^ +||ddmsvcltbyjoc.store^ +||ddmwicctsqjhc.website^ +||ddoqtrdsglql.com^ +||ddqeytzglqzhv.space^ +||ddrsemxv.com^ +||ddxiejwiegzxa.website^ +||ddytwtumsiopf.space^ +||ddzk5l3bd.com^ +||ddzyijhyaujus.site^ +||de2bdad928.com^ +||dea21aeefc.com^ +||deabrrtkyiibk.site^ +||dead-put.com^ +||deadelegantannotation.com^ +||deadlinescreechvisit.com^ +||deadly-nail.pro^ +||deadlyfeasible.com^ +||deafeningphone.com^ +||deafentabs.qpon^ +||deafestbordure.cyou^ +||deafnitrogen.com^ +||deairedhehe.shop^ +||dealcurrent.com^ +||dealdivorceathwart.com^ +||dealerskaolins.qpon^ +||dealtoneoddly.com^ +||dear-soil.com^ +||dearerslarthfanes.cfd^ +||dearestaccess.pro^ +||dearestfunny.pro^ +||deavingstovensecesh.cfd^ +||debitedillegaljaburan.cyou^ +||debony.xyz^ +||debossstompedaceship.cfd^ +||debridleech.com^ +||debriefdollopsiccity.cyou^ +||debristopmeanwhile.com^ +||debtbenzins.qpon^ +||debtdispleaseboss.com^ +||debtokesfilippo.qpon^ +||debugger55.com^ +||debuggerfromstark.com^ +||debutknee.com^ +||debutpoignantsudden.com^ +||decafidflewed.cyou^ +||decafidsprug.com^ +||decanesuperb.shop^ +||deccsvyxcvhfe.website^ +||deceivedaisle.com^ +||decemnylgau.cyou^ +||decencycrock.com^ +||decencytopmost.com^ +||decent-negative.com^ +||deceptivegipsyburka.com^ +||decide.dev^ +||decideddiarrhoeafrustration.com^ +||decidedlytackunwelcome.com^ +||decidedlytighten.com^ +||decideharmpervert.com^ +||decidesqueak.com^ +||decimalair.com^ +||decimalcursor.com^ +||decimaldaysloaf.com^ +||decimalediblegoose.com^ +||decimalmasculineawe.com^ +||decisionlace.com^ +||decisionmark.com^ +||decisionnews.com^ +||decisive-gas.pro^ +||deckalibisbricks.com^ +||decknetwork.net^ +||declareddetect.com^ +||declareexhale.com^ +||declarepainfullyswat.com^ +||declk.com^ +||decoctionembedded.com^ +||decomposebosscumbersome.com^ +||decomposeconversionpattern.com^ +||decomposemanly.com^ +||decorateadverb.com^ +||decoratedmulesanta.com^ +||decorationmercifulmonth.com^ +||decoydeclaration.com^ +||decpo.xyz^ +||decreaselackadmit.com^ +||decrieragrest.cfd^ +||ded198a06d.com^ +||dedicatedmedia.com^ +||dedicateimaginesoil.com^ +||dedicationageunfortunately.com^ +||deductgreedyheadroom.com^ +||deductpursue.com^ +||deductsuggest.com^ +||deeavouter.com^ +||deebcards-themier.com^ +||deeddrugtask.com^ +||deedeedwinos.com^ +||deedsdeesisapay.cyou^ +||deefauph.com^ +||deehalig.net^ +||deemphotousage.com^ +||deenerfuddles.qpon^ +||deepcloudfield.com^ +||deeperregardingcontend.com^ +||deepmetrix.com^ +||deepnewsjuly.com^ +||deepretainer.com^ +||deepz.cyou^ +||deerflybeefier.cfd^ +||defactoloupedbathing.cyou^ +||defatwhalers.cfd^ +||defeature.xyz^ +||defectsslatishquasher.qpon^ +||defeisediked.cfd^ +||defenceflamboyant.com^ +||defencelaptop.com^ +||defendsepawn.cyou^ +||defensekanjis.cyou^ +||defensivearmpit.com^ +||defensivegrand.com^ +||defethingleprolix.qpon^ +||defiantenrage.com^ +||defiantexemplifytheme.com^ +||defiantstull.qpon^ +||defiescynoid.cyou^ +||definedbootnervous.com^ +||definiterise.pro^ +||definitial.com^ +||definitive-priority.com^ +||definitivedinner.com^ +||defissubget.qpon^ +||defleshflirts.com^ +||defmkxdiltzhi.space^ +||defnbvzwdlurt.online^ +||deforcesapful.com^ +||defroststringbenignity.com^ +||deftlysands.cfd^ +||defuzeedilityshotty.cyou^ +||defybrick.com^ +||defyhastencommunity.com^ +||degamesfianced.shop^ +||degeneratesevere.com^ +||degenerlowwood.cyou^ +||degeronium.com^ +||deghooda.net^ +||dehwarridge.cyou^ +||deicidetwos.com^ +||deilghtfuidate.net^ +||deisflair.shop^ +||deisticpanier.qpon^ +||deitysunfall.cyou^ +||deizyzaxeogkc.space^ +||dejectedineptvary.com^ +||dekkosteedthurgi.cyou^ +||dekkotapirus.cfd^ +||dektprgshveuj.website^ +||delawstooded.com^ +||delaybagelblur.com^ +||delayeddisputecommotion.com^ +||deleb.xyz^ +||delectable-earth.com^ +||delegatehistorianincline.com^ +||delesashimi.cfd^ +||delfamily.net^ +||deliciouslip.com^ +||delightful-gain.com^ +||delightpowerful.com^ +||delilahlocklet.com^ +||deliman.net^ +||delimesmure.cyou^ +||delirious-year.com^ +||deliriousglowing.com^ +||deliriumswarthybeginner.com^ +||deliv12.com^ +||deliverancesurveillance.com^ +||delivercolkept.com^ +||deliveredpickpocketflushed.com^ +||deliveringbarton.com^ +||delivery.momentummedia.com.au^ +||delivery51.com^ +||deliveryinterference.com^ +||deliverytraffico.com^ +||deliverywhiskerspsychopath.com^ +||dellsupdelve.cyou^ +||delnfumexxsvs.online^ +||delookiinasfier.cc^ +||delqphfqgnrty.online^ +||delta-static.shop^ +||deltoidretapetriazo.cfd^ +||deltraff.com^ +||delugemuntjak.qpon^ +||delugerefluxunpinned.com^ +||delusionalrevolt.com^ +||delutza.com^ +||delvepsoitisovert.qpon^ +||delvershybodusgeyan.qpon^ +||delvingsliving.qpon^ +||demand.supply^$script +||demandedrucksackprivate.com^ +||demanding-flight.com^ +||demanding-season.com^ +||demandingnail.pro^ +||demandingoverdriveunthread.com^ +||demandrefreshment.com^ +||demarkpoonce.cyou^ +||demelebianchi.shop^ +||dementedjudged.com^ +||demihagpareja.qpon^ +||demimancackles.cyou^ +||demimanexseclingers.cfd^ +||demiseberriesstranger.com^ +||demiseskill.com^ +||demitsmauling.qpon^ +||democraticexit.com^ +||democratmachinesucceed.com^ +||democratparasiteblessed.com^ +||demolishlagoonopt.com^ +||demolishwaffleslegend.com^ +||demolitionculpritrape.com^ +||demolitionnutsgrease.com^ +||demolitionzerostomach.com^ +||demonicclanstarch.com^ +||demonincreasevacancy.com^ +||demonsmaythe.qpon^ +||demotedovedismiss.com^ +||demotemoreover.com^ +||demowebcode.online^ +||demurspoky.qpon^ +||denariibrocked.com^ +||denayphlox.top^ +||denbeigemark.com^ +||dendrito.name^ +||denialtransportationfair.com^ +||denknowledc.org^ +||denotevocation.com^ +||denoughtanot.info^ +||denseceleryliver.com^ +||densetechier.qpon^ +||denteranim.cyou^ +||dentileazurite.com^ +||denunciationparted.com^ +||deokxdgzwdyzm.website^ +||deorsumkelper.qpon^ +||deostr.com^ +||departgross.com^ +||departharpglove.com^ +||departmentannounced.com^ +||departurealtar.com^ +||departuregovernessbeech.com^ +||departuresensitivitylengthen.com^ +||depecheacheatdicebox.cfd^ +||depelannular.shop^ +||dependablecount.com^ +||dependablelocation.pro^ +||dependablemountain.com^ +||dependablerecord.pro^ +||dependantcarefullyheavenly.com^ +||dependencyinreplicas.com^ +||dependent-boy.com^ +||dependentadequatemyth.com^ +||depfwtebex.com^ +||depiaqccpwccy.site^ +||deplaneseven.cfd^ +||depleteheadphoneshoe.com^ +||depleterefutation.com^ +||deployads.com^ +||depmestiza.com^ +||deponedyakin.cfd^ +||deportdalai.qpon^ +||depreciatorybollocksupkitchen.com^ +||deprivationperkcorrectly.com^ +||depriverippledecadence.com^ +||deprtolleryzacatec.qpon^ +||depthsdeficitunited.com^ +||deputesastay.com^ +||deputizeeverydayexorcist.com^ +||deputizepacifistwipe.com^ +||deputyconnate.com^ +||deputydelicacyopt.com^ +||depwwdntgavyc.website^ +||depxlphjihfzi.space^ +||deqrkaugcpplk.website^ +||deratergnosis.qpon^ +||deratfeuded.cyou^ +||derbysparids.cyou^ +||dereignborings.cyou^ +||dereignfungusy.shop^ +||derekvireo.shop^ +||derelictbookstorebilly.com^ +||dericrabboni.qpon^ +||deridenightingalepartial.com^ +||derideskid.com^ +||dernierdowment.shop^ +||derrihattery.cyou^ +||derwaistthatheha.org^ +||descalecaseinerandon.qpon^ +||descendedlibrarian.com^ +||descentsafestvanity.com^ +||descriptionwhirl.com^ +||descriptive-help.pro^ +||descz.ovh^ +||desekansr.com^ +||desenteir.com^ +||deserteddealsuperstitious.com^ +||desertedtransition.com^ +||desertercommitment.com^ +||desertpreparedsparkling.com^ +||desertsreceiverbasket.com^ +||deserveenjoymentcobbler.com^ +||desgolurkom.com^ +||designsprovidingstifle.com^ +||designstraw.info^ +||desiresmockers.cyou^ +||deskunfortunate.com^ +||desmomarumpleriffle.cfd^ +||desmoseencaseddiplont.cfd^ +||despeedmatzas.cfd^ +||despisekirkmen.cfd^ +||desposeatheistaccused.qpon^ +||despoteavesdropblazing.com^ +||dessacheysa.com^ +||dessly.ru^ +||destroyedspear.com^ +||destroyeragreed.com^ +||detachedauraencircle.com^ +||detachedbates.com^ +||detachmentcancelsuspicion.com^ +||detachteethsolitude.com^ +||detailedguitar.pro^ +||detdredskin.cyou^ +||detectbravecomfy.com^ +||detectedpeculiaritiesmartial.com^ +||detectorpre.com^ +||deteriorateensuedlaptop.com^ +||determined-tennis.pro^ +||determinedangle.com^ +||determinedrepentancetelephone.com^ +||deterrentreseptivereseptive.com^ +||detestablemanifest.com^ +||detgiuidxprjk.online^ +||dethemostgracef.com^ +||detikpcprolans.cyou^ +||detlomta.shop^ +||detour.click^ +||detoxifylagoonsnugness.com^ +||detruckloessalkimono.qpon^ +||deturbcordies.com^ +||deucefierier.shop^ +||deukmyunderth.org^ +||devaluequalmrelative.com^ +||devastatedleech.com^ +||devcre.site^ +||develelastica.org^ +||developdomicile.com^ +||devgottia.github.io^ +||devidetoked.cfd^ +||devilerchinles.cyou^ +||devilinquiry.com^ +||devisestuumsinaloa.qpon^ +||deviseusing.com^ +||devolutionsingclone.com^ +||devotedcoexistsuspected.com^ +||devoteddorothybeastly.com^ +||devoteegibberishsinister.com^ +||devoterhillo.qpon^ +||devoursproheim.shop^ +||devuba.xyz^ +||dewaxeskannen.cyou^ +||deweygobbler.qpon^ +||dewhkrcop.com^ +||dewingkludge.shop^ +||dewlapscsk.qpon^ +||dexbunged.cfd^ +||dexchangegenius.com^ +||dexchangeinc.com^ +||dexesangers.cfd^ +||dexpredict.com^ +||dexterrobbins.cf^ +||dextroquaff.com^ +||deycppnevpjax.online^ +||deymalaise.com^ +||df3c4e92b4.com^ +||dfaksbltiobcn.website^ +||dfb24776dd.com^ +||dfbvgrxdrsaiv.com^ +||dfcthngzpxiwc.site^ +||dfdgfruitie.xyz^ +||dfgepfqjwraxw.website^ +||dfhbfgoamcfmw.website^ +||dfienmjafhp.com^ +||dfizzpfojfgtj.website^ +||dfkkffjulbnec.space^ +||dfndwfcwp.com^ +||dfqbktlcmmcca.space^ +||dfrgxsiydjbfj.space^ +||dfuijqrojtvcb.site^ +||dfutznmffzefs.site^ +||dfuufcsikcian.website^ +||dfuvslppaxhzv.site^ +||dfvruigpfghpi.site^ +||dfwjcksuusdzf.site^ +||dfxemvvaxyxbt.online^ +||dfyawvajhov.in^ +||dfyzanpmamz.in^ +||dfzuxtkanxwxx.space^ +||dgafgadsgkjg.top^ +||dgcckgqobcgda.online^ +||dgdcpypunnrnm.site^ +||dgfsajonlckrp.store^ +||dggazqmcpmtwc.website^ +||dgmaubdjrranx.site^ +||dgmmntcknzljy.space^ +||dgnrkluiozosx.online^ +||dgsgecwesbkh.com^ +||dgtsowpvnhodi.site^ +||dgvhzcxksncni.website^ +||dgwnczabiojka.space^ +||dgythcrp.com^ +||dgyy59yc.xyz^ +||dgzykxavrvekj.site^ +||dhawincaged.cyou^ +||dhbfsbanlrmqm.website^ +||dhcanelzoyomw.space^ +||dhcqlbteygqeg.site^ +||dhdebdmvzljbk.site^ +||dheheagbmhdfk.space^ +||dhgnzynmufgpc.site^ +||dhngawrhpigck.space^ +||dhojmirptkwfy.website^ +||dhootiepawed.com^ +||dhotissamurai.cyou^ +||dhoulunfirmlurker.qpon^ +||dhoyfkwtyjqrt.website^ +||dhpfdaufroers.online^ +||dhpktdtnuarlx.online^ +||dhqhmbwnimaph.space^ +||dhqqtrblvxyex.online^ +||dhrdakvoruwao.space^ +||dhruqpiaftxwk.online^ +||dhtycstkokmb.com^ +||dhupptmedfhss.site^ +||dhurrapois.cfd^ +||dhvziqebhusgt.space^ +||dhwusndjyxipsw.com^ +||dhxbrqtpallzi.site^ +||dhxnhvawducul.site^ +||dhynxkwbsqrgp.website^ +||dhyrlpxupgjcj.site^ +||dhysllhtvdbfa.online^ +||di7stero.com^ +||diacocamammey.cyou^ +||diagnosiscontractortrophy.com^ +||diagnosisintriguingorganizer.com^ +||diagnosisscript.com^ +||diagramjawlineunhappy.com^ +||diagramwrangleupdate.com^ +||dialergruf.cyou^ +||dialling-abutory.com^ +||diamidelambish.qpon^ +||diamylthills.shop^ +||dianebauckie.qpon^ +||dianomioffers.co.uk^ +||diapirsmooths.cyou^ +||diarialawhirl.qpon^ +||diarrhoeaeaglesunday.com^ +||diasgajzekz.com^ +||diaspercrucianshoofly.cyou^ +||diastemgispin.cfd^ +||diasyrmunionic.com^ +||diatomsfrisson.cfd^ +||diazidehematid.com^ +||dibbingkation.cyou^ +||dibsemey.com^ +||diceresembleshudder.com^ +||dicergirnstilbum.qpon^ +||dicersburnets.cfd^ +||dichasbingos.cfd^ +||dicingfulcra.qpon^ +||diclotrans.com^ +||dicnkachuzca.com^ +||dictateirriplaceableirriplaceable.com^ +||dictationexportprofound.com^ +||dicwdpcczixie.website^ +||dicyemafot.shop^ +||didactlobfig.qpon^ +||didnatawdry.com^ +||diecasepachas.cyou^ +||dieddoom.com^ +||diedpractitionerplug.com^ +||diekvuncdbuho.online^ +||dienesportify.cfd^ +||dierem.click^ +||diericlowns.qpon^ +||diessinews.cyou^ +||dietaryyurilent.com^ +||dietictetherydeprive.cfd^ +||differlookingmanor.com^ +||differsfunk.com^ +||difficultmatecomrade.com^ +||difficultyanthonymode.com^ +||difficultypoiseapparel.com^ +||difficultywithhold.com^ +||diffusedpassionquaking.com^ +||diffusefulfil.com^ +||diffuseusermessage.com^ +||diffusionsubletunnamed.com^ +||difice-milton.com^ +||difucyvkjayoc.space^ +||digenyouteatssnawed.cfd^ +||digestivehistoriantwine.com^ +||diget.xyz^ +||digital2cloud.com^ +||digitaldateroom.online^ +||digitaldsp.com^ +||digitalmediapp.com^ +||digmeatrid.shop^ +||digneabrus.cyou^ +||digubpgjkdmsl.website^ +||digzjnuguwwxr.online^ +||diiwesvtjlvmq.com^ +||dijhqtrrbgn.com^ +||dijuvxuzjhkrb.website^ +||dikasomywnqww.website^ +||dikcmpgwemomx.space^ +||dikdiksbracker.shop^ +||dikdiksfelup.cfd^ +||dikeprotectorencyclopaedia.com^ +||dikont.xyz^ +||dilatedronishsau.qpon^ +||diligenceshaped.com^ +||diligentevening.com^ +||diligentresident.com^ +||diloe.xyz^ +||dilowhang.com^ +||diluteswafered.cfd^ +||diluvyignorer.com^ +||dimessing-parker.com^ +||dimkfzxyvzhej.website^ +||dimmedloesslocn.cfd^ +||dimmerlingowashable.com^ +||dimmockvanglo.com^ +||dimnessslatecosmetic.com^ +||dimpsychology.pro^ +||dimqtugkwxzrq.site^ +||dimryaikxp.com^ +||dinaricitylus.qpon^ +||dindonnaoibernese.qpon^ +||dineproteinhamlet.com^ +||dinernicknamestopwatch.com^ +||dineronevo.cyou^ +||dingbuckle.com^ +||dingebeek.com^ +||dinglesala.qpon^ +||dingmotoric.com^ +||dingpantomimehumidity.com^ +||diningfreshmansavage.com^ +||diningprefixmyself.com^ +||diningsovereign.com^ +||dinkeybawtie.cfd^ +||dinklyablates.com^ +||dinojiti.cyou^ +||dinomicrummies.com^ +||dinosaurprinciples.com^ +||dioboldualistpenile.qpon^ +||dioboljizzen.cyou^ +||diobolsuseable.cfd^ +||diocoelstentonsurer.qpon^ +||dioptralbw.shop^ +||diorismkeltswryest.cyou^ +||dioxidssokes.cfd^ +||dioxythort.cfd^ +||diploickalian.shop^ +||dipolartylarigawsie.cyou^ +||diporpamahone.shop^ +||dipperflightrecommend.com^ +||dippergeologyprescribe.com^ +||dippingearlier.com^ +||dipsiecandielpollux.cfd^ +||dipwsxfgtliob.online^ +||diqartxheos.com^ +||diqbgqeteua.com^ +||diqjitlusjki.com^ +||dirbvattydams.site^ +||direcompulsion.com^ +||direct-push.com^ +||direct-specific.com^ +||directaclick.com^ +||directdexchange.com^ +||directionotterrecharger.com^ +||directlycascade.com^ +||directlysmother.com^ +||directnavbt.com^ +||directorydessert.com^ +||directorym.com^ +||directrankcl.com^ +||directrev.com^ +||directtrck.com^ +||direeyesightstray.com^ +||dirkkenemaconable.cyou^ +||dirtharvestnickel.com^ +||dirtiedrudy.cyou^ +||dirtinessbeastpotatoes.com^ +||dirty.games^ +||dirtyimagination.com^ +||dirwvuplonywi.space^ +||disableadblock.com^ +||disabledextraordinarycarpenter.com^ +||disableretaliate.com^ +||disadvantageattached.com^ +||disappearancetickfilth.com^ +||disappearheedless.com^ +||disappearinghew.com^ +||disappearsurgery.com^ +||disapprovalavouchfriendly.com^ +||disarmgruntnatural.com^ +||disasterpreserved.com^ +||disastrous-protection.com^ +||disastrous-special.pro^ +||disbudswraths.com^ +||discabrito.qpon^ +||discernjournal.com^ +||dischargepermit.com^ +||discinglivelyfalser.qpon^ +||disciplecuriouslydigging.com^ +||disciplinaryconstitute.com^ +||disciplinarytreasurertyran.com^ +||disciplineebony.com^ +||discobar.space^ +||discomfortcreamforester.com^ +||disconnectran.com^ +||discontentcocoamatters.com^ +||discountplacidlysymphony.com^ +||discourageabjure.com^ +||discourageearlapfully.com^ +||discouragewearinesstourist.com^ +||discoursebandspublish.com^ +||discoursefulfilledauditory.com^ +||discourseoxidizingtransfer.com^ +||discoveredcowardlymadden.com^ +||discovermustystarter.com^ +||discovernative.com^ +||discreetisabella.com^ +||discreettouchsurvival.com^ +||discrepancydazzlespanner.com^ +||discretionarraignment.com^ +||discretioningratitudeadvisedly.com^ +||discussedinterdependent.com^ +||discussedthreaten.com^ +||discussfaithless.com^ +||discussingnobody.com^ +||discussionvapour.com^ +||disdaincharletanlas.cyou^ +||disdainevaluation.com^ +||disdainoromo.cfd^ +||disdainplayedbluster.com^ +||disedgechiggerjessed.cyou^ +||disefyqrmsbya.website^ +||disfigured-great.pro^ +||disfiguredcomment.com^ +||disfiguredcommon.com^ +||disfiguredrow.com^ +||disgownsealess.cyou^ +||disguised-confidence.pro^ +||disguisedtimingbreath.com^ +||disguisestoughprocured.com^ +||disgustinghighnesseventually.com^ +||disgustingmad.com^ +||dishedochreaewilled.cfd^ +||disheirmisaver.cyou^ +||dishesha.net^ +||dishevelledreasonably.com^ +||dishevelledwaitresssprout.com^ +||dishflcymuesx.site^ +||dishonestthee.com^ +||dishonourinventor.com^ +||dishtrekkerunderfoot.com^ +||disinheritguilewallow.com^ +||disipxnziqeql.website^ +||diskaa.com^ +||diskeryaffixer.com^ +||dislikingentwinestudio.com^ +||dislimndiss.shop^ +||dislovedankeeelfare.cfd^ +||disloyal-hang.pro^ +||disloyal-marriage.com^ +||disloyal-peak.pro^ +||disloyal-valuable.com^ +||disloyalmidnight.pro^ +||disloyalmoviesfavor.com^ +||dismantlepenantiterrorist.com^ +||dismawgassynascan.cyou^ +||dismisscomplicatedfoolproof.com^ +||dismissportraypioneer.com^ +||disobeyrecreate.com^ +||disorderchannel.com^ +||disparagewardenbetrayal.com^ +||disparityanalogy.com^ +||disparitydegenerateconstrict.com^ +||dispelsoneraryfainted.cyou^ +||dispensegrapessideline.com^ +||displaycontentnetwork.com^ +||displaycontentprofit.com^ +||displayfly.com^ +||displayformatcontent.com^ +||displayformatrevenue.com^ +||displaynetworkcontent.com^ +||displaynetworkprofit.com^ +||displayvertising.com^ +||displeasuredejection.com^ +||disploot.com^ +||dispondhatte.shop^ +||disposablekindlematching.com^ +||disposedliquor.com^ +||disprovefacilityjolt.com^ +||disqualifyderelictcompetition.com^ +||disreputableagrarianyourself.com^ +||disrespectsuffer.com^ +||disringcarf.cyou^ +||dissatisfactionfloodingdefiant.com^ +||dissatisfactionpublicity.com^ +||dissemblebrutallyitinerary.com^ +||dissentinoma.com^ +||dissertanitos.com^ +||dissipatecombinedcolon.com^ +||dissolvedbrevityclog.com^ +||dissourzendos.qpon^ +||distancedreamboatstoic.com^ +||distanceinfirmaryresource.com^ +||distancepatch.com^ +||distancesets.com^ +||distancevalidopposition.com^ +||distantscience.com^ +||distinguishmotor.com^ +||distnsaurelseguing.cyou^ +||distorted-hello.pro^ +||distorted-incident.com^ +||distractingcashthorny.com^ +||distractingscalpmoon.com^ +||distractiontradingamass.com^ +||distractionwallaceenliven.com^ +||districtm.ca^ +||districtm.io^ +||distrustpositively.com^ +||distrustuldistrustulproprietor.com^ +||disturbancecommemorate.com^ +||disturbsparkler.com^ +||dit-dit-dot.com^ +||ditdotsol.com^ +||ditherscutes.qpon^ +||ditplroryawzm.store^ +||ditwrite.com^ +||diumihbdajbtq.space^ +||dive77kt.com^ +||divedsurprisinglythermometer.com^ +||diverecollection.com^ +||diverhaul.com^ +||divestsopuses.qpon^ +||dividedintegrationtransparent.com^ +||dividedscientific.com^ +||divingamends.com^ +||divingsubmissionvocational.com^ +||divisiondrearilyunfiled.com^ +||divorcedrefreshing.com^ +||divusungored.qpon^ +||divwbbyjikkkv.website^ +||diwvsftmdqhyo.space^ +||dixxiowrgeame.online^ +||dizdarburlerspiques.cyou^ +||dizennaphthaurian.qpon^ +||dizensgutsy.cyou^ +||dizhenmeehipj.space^ +||dizziedtokays.cyou^ +||dizznplerllul.love^ +||dizzydiamond.pro^ +||dizzyexit.com^ +||dizzyshow.com^ +||dj-updates.com^ +||dj2550.com^ +||djbrsguqvbhmv.space^ +||djelabquercic.com^ +||djexvabvbybza.site^ +||djgdmnyuokahc.site^ +||djgotch.cfd^ +||djgqucjpunwhs.store^ +||djinnsteicherlionise.qpon^ +||djinsulnar.com^ +||djjzdejdqsfqm.store^ +||djlhiuwpvqwyf.online^ +||djmdvnfdbvzjr.website^ +||djmfvliilkkdl.site^ +||djmtgnkdkxshd.site^ +||djncmafidfcpm.online^ +||djnezvbvenyrm.website^ +||djnmhjfmdymrz.space^ +||djnqnduxmpixy.website^ +||djpgftebohnay.space^ +||djpgwdcspfixy.online^ +||djqeyfmaqkvoo.online^ +||djqfsxlkmteke.space^ +||djqjbpdnislur.space^ +||djrkpoublcswv.store^ +||djsalcbhew47.lol^ +||djtciijwpgrxx.online^ +||djuqmseuelmct.site^ +||djwcmdxfqfyoq.website^ +||djxh1.com^ +||djxyosopnferfdm.com^ +||dkattqczpqtsi.site^ +||dkcarxqotiviv.website^ +||dkepsueazpneu.space^ +||dkfkshfzzmxss.online^ +||dkflbsrscmjnl.space^ +||dkfuetdfvsdmb.website^ +||dkjtppgsfoiqd.site^ +||dklnskds.com^ +||dkoqxvcdkbayf.space^ +||dkpkloalaqtgxy.com^ +||dkrbus.com^ +||dkrcknnrtmiqv.site^ +||dkrfhwlep.com^ +||dkryxucmwgicc.space^ +||dktjigphteqdi.site^ +||dkyzxjlvlfjae.store^ +||dkzylnskplbrw.space^ +||dl-rms.com^ +||dlbamllhgjhdx.online^ +||dldvfyshpgftw.website^ +||dle-news.xyz^ +||dleyckurnwamnnt.com^ +||dlfhernheltxw.website^ +||dlfzswefybaff.website^ +||dlhjgdhonjcsq.website^ +||dlhwyaetguynl.space^ +||dlijvfwufomse.online^ +||dlink9.com^ +||dljqauoalfpxz.space^ +||dlljdeyjgojxf.website^ +||dlmtmxsrkfxjh.online^ +||dlmztrbyjydcn.space^ +||dlohjhkldludr.space^ +||dlotlvxrlhg.com^ +||dlqbioenjjwsv.store^ +||dlrectdates.com^ +||dlvakopvbuiwi.website^ +||dlwhtkiilipxk.site^ +||dlwmkldaebzds.website^ +||dlzuocvcjdqvq.space^ +||dlzxazsvocjfy.online^ +||dmarchebeclap.cfd^ +||dmbfiumbqqimg.space^ +||dmdxzdhu.com^ +||dmgfqmltttogq.space^ +||dmghgdmlepsek.online^ +||dmhisuzamhbsh.website^ +||dmhkmjjrasysf.website^ +||dmhmxfsaf.com^ +||dmhulgvmedlik.store^ +||dmhwextkychrz.website^ +||dmiiqrlkypdmw.online^ +||dmiredindeed.com^ +||dmkwwrvfilmze.space^ +||dmkynnbnphpyl.store^ +||dmlnznrxcwfeo.store^ +||dmmyamvrjsbws.site^ +||dmonastydrumgm.org^ +||dmozazelsojos.website^ +||dmqalkgfdpeca.space^ +||dmrtx.com^ +||dmsik.com^ +||dmsktmld.com^ +||dmtopkjucvncs.site^ +||dmufencbatfho.site^ +||dmupywgfuurjd.club^ +||dmuwytkriecke.com^ +||dmvbdfblevxvx.com^ +||dmwbspizchjlu.website^ +||dmxtdltgndcco.site^ +||dmytamepgcifk.store^ +||dmytmtarhxret.online^ +||dmzadtwonmlfn.online^ +||dmzjmp.com^ +||dnaiwexdkemhp.website^ +||dnavexch.com^ +||dnbkjfihvakfb.store^ +||dnfs24.com^ +||dngaghrisxpak.website^ +||dngctamjocnxv.online^ +||dngzvmztykhkw.online^ +||dnibrjbhidpyq.space^ +||dniiypanzutzi.site^ +||dnjdkumlkguwr.online^ +||dnjuijdqxhzka.site^ +||dnkpxpnpxgxoy.website^ +||dnlllvdztyinz.site^ +||dnllyhkrumiui.website^ +||dnmqfaxluvaou.world^ +||dnonznoautndl.online^ +||dnqftnryxfngg.website^ +||dnqmuubtrodvi.site^ +||dnrplhluklgsh.site^ +||dnruxsmbzfubm.website^ +||dnus40re.xyz^ +||dnvogsqirpcfq.space^ +||dnwmeaivtrhfp.site^ +||dnzfcxliyqzvx.website^ +||dnzsyouiexcar.space^ +||doaltariaer.com^ +||doankhqxgwbui.site^ +||dobbiehowfingsasin.cfd^ +||dobbomqaokbpw.site^ +||doblonfedia.cyou^ +||dobrhoovkxoru.website^ +||docentcliquybepen.cyou^ +||docilemolies.qpon^ +||dociousaggryoutrang.cyou^ +||docpicvggkfcp.site^ +||doctrinekettleworsening.com^ +||doctusflaxman.com^ +||documentaryangerabed.com^ +||dodderytactite.com^ +||doddinghailedalkali.cyou^ +||doddingsummulapyoid.qpon^ +||dodgefastertesting.com^ +||dodgyfactoidprecut.com^ +||dodkinsputferdwit.qpon^ +||doershutes.cfd^ +||dofrhyluyqtex.online^ +||dogabonclasps.cyou^ +||dogcbhkupqzor.website^ +||dogfootdomusvetoism.cfd^ +||doggerykaraism.cyou^ +||doggesssaftcoes.cyou^ +||doghalf.com^ +||dogmenaesir.cfd^ +||dogt.xyz^ +||dohaunting.com^ +||dohpmggs.com^ +||dohteraulas.cyou^ +||dohxgyjobgzfb.website^ +||dokondigit.quest^ +||dolapdarmbldn.site^ +||doledbasalts.qpon^ +||doledfurze.cfd^ +||dolekaraokeoversleep.com^ +||dolitecommo.cyou^ +||dollarcarbohydratesunrise.com^ +||dolleycamata.qpon^ +||dollinsc.shop^ +||dollishreman.com^ +||dollshuttlebirthday.com^ +||dollylarkjeweller.com^ +||dollyspreadingbeer.com^ +||dolmanshamelt.cfd^ +||dolmenendoral.cfd^ +||dolostauritealcedo.qpon^ +||dolphincdn.xyz^ +||dolpxahogqsqk.space^ +||dolwryqlvkkql.site^ +||domaincntrol.com^ +||domaincoarselimits.com^ +||domainparkingmanager.it^ +||domaintransver.cfd^ +||domdex.com^ +||domesticannihilate.com^ +||domesticatednavigationgrip.com^ +||domesticatedtowers.com^ +||domesticheontinu.org^ +||domesticrejoinedremark.com^ +||domesticsomebody.com^ +||domexxxcolnsn.life^ +||domicileperil.com^ +||domicilesweetheart.com^ +||domingbesnarecrex.qpon^ +||dominionclatterrounded.com^ +||dominioneastern.com^ +||domipush.com^ +||dompeterapp.com^ +||domslc.com^ +||donarrabblerdegener.cyou^ +||donaterefuel.com^ +||donecperficiam.net^ +||dongateratic.cyou^ +||doninjaskr.com^ +||donkeygentlesubdued.com^ +||donnockdrawrod.cfd^ +||donorstuffed.com^ +||donttbeevils.de^ +||donutpassenger.com^ +||donutsharpago.cfd^ +||doo888x.com^ +||doocotcorve.cyou^ +||doodahexedrae.cyou^ +||doodlerfred.qpon^ +||doodlesunshinecamp.com^ +||doodptrbqxpct.online^ +||dookitedenizemulvel.qpon^ +||dookitvorantterm.cyou^ +||dookputtock.cfd^ +||doomdefender.com^ +||doomna.com^ +||doorbawheats.qpon^ +||doormanarmilla.cyou^ +||doormanracket.com^ +||doormantdoormantderive.com^ +||doormenbearing.cfd^ +||doorstepdemocrattap.com^ +||doorwaydistinct.com^ +||doouhnscfspxu.space^ +||dooverdoom.qpon^ +||dopecontraction.com^ +||dopeoutspoken.com^ +||dopor.info^ +||dopryoouoeh.com^ +||doptik.ru^ +||doqjpepzkqwim.site^ +||doqpm.click^ +||dorlotbuttle.cyou^ +||dormspunned.qpon^ +||dorneckprefet.cfd^ +||dornicflor.cyou^ +||dorsaldazing.cfd^ +||dorsulachiplet.com^ +||dortermarchen.qpon^ +||dortmark.net^ +||dortysolacer.qpon^ +||doruckmangedreamed.cyou^ +||dosagepettytrust.com^ +||doseknaggedfloreat.cfd^ +||dosoequalutjd.online^ +||dossechites.shop^ +||dossingxina.com^ +||dostyajna.cfd^ +||dosvaultgame.com^ +||dotervitroussopheme.cyou^ +||dotiestcatteddetruss.cfd^ +||doting-rush.pro^ +||dotkinchut.shop^ +||dotshxfthymsg.site^ +||dotsrv.com^ +||dottiertonto.shop^ +||dottodatacenter.net^ +||dottypeguidance.com^ +||dotyruntchan.com^ +||douaoocmkytcg.site^ +||douartollergirt.cfd^ +||double-check.com^ +||double.net^ +||doubleadserve.com^ +||doublecabinet.com^ +||doublemax.net^ +||doublepimp.com^ +||doublepimpssl.com^ +||doubleview.online^ +||doublyracism.com^ +||doubtcigardug.com^ +||doubtclubhouse.com^ +||doubterhire.cyou^ +||doubtsuseless.com^ +||douchedjezebeldunks.qpon^ +||doucheraisiny.com^ +||doughgenuinelypreviously.com^ +||dourasinfeft.cfd^ +||dousingcods.cyou^ +||douteravenida.cyou^ +||douthurts.cfd^ +||dovecyton.com^ +||dowarmhugo.com^ +||dowdilythewierparures.qpon^ +||dowerycleared.com^ +||dowietampoonjuglans.cfd^ +||dowlasquasarsinface.cfd^ +||dowlygars.cfd^ +||downloadboutique.com^ +||downloaddecidedly.com^ +||downloadyt.com^ +||downnora.me^ +||downright-soup.com^ +||downrightfootball.com^ +||downrightrevolution.pro^ +||downrightshepherdmodeling.com^ +||downsflutingenghle.cfd^ +||downstairsnegotiatebarren.com^ +||downstairspoppy.com^ +||downwardsuperioraching.com^ +||downyattainprojects.com^ +||downybrushed.com^ +||dowragmanthatll.cyou^ +||dowryhandgripballot.com^ +||dowrysprinkle.com^ +||dowsettombs.cyou^ +||doxakuwbtiaum.online^ +||doyeelwcwlunu.space^ +||doytoyakbsdcvn.com^ +||dozemarchedconserve.com^ +||dozepokinganthem.com^ +||dozeskeekersybo.cyou^ +||dozubatan.com^ +||dpayzkkpynzdq.online^ +||dpehzyosanbhl.website^ +||dpgbcdhhd.com^ +||dphheyqbwgaau.online^ +||dpidqeyalnpgn.online^ +||dpiixydxabnkh.site^ +||dpkscisydbyzp.space^ +||dplmwsvsgwquwb.com^ +||dpmsrv.com^ +||dpnfbrdgvurtl.space^ +||dpnknkozlmyqf.space^ +||dpnpiapgdo.com^ +||dpokcoilmfmje.website^ +||dppxjnchvfoae.website^ +||dppzmgxpxwnnk.space^ +||dpropomuvzmal.online^ +||dprptfbtilpmp.site^ +||dpssevgyylnkh.site^ +||dptxqbwdwuqye.website^ +||dpuplet.com^ +||dpuppers.com^ +||dpuxtqqajzwam.store^ +||dpvowksnrdhxv.site^ +||dpvztnqfkmlbs.store^ +||dqciuftqqizon.website^ +||dqdsnemauijvc.online^ +||dqeozccymwpqw.online^ +||dqfzbnhbqeqox.space^ +||dqgjkrsabhnqd.space^ +||dqhepocpcwspj.space^ +||dqhooyeampqsg.space^ +||dqhvhpderqbsg.online^ +||dqjbykmaxfocb.website^ +||dqorvlyh.com^ +||dqqdbvsqatomy.space^ +||dqqlkywzqpvoz.store^ +||dqwnpdlgzpjni.space^ +||dqwpkufwbinyi.website^ +||dqwvwfkpgxil.com^ +||dqwxixvisqmwx.space^ +||dqydzfzvwvaxt.website^ +||dr-marian-tdrirmh.work^ +||drab-week.com^ +||drabimprovement.com^ +||drachmaameers.qpon^ +||dracintomtitsuncke.cfd^ +||draffyprotype.qpon^ +||dragonarmaturedisguise.com^ +||dragonflyproblemsubway.com^ +||dragoploat.qpon^ +||dragstergibletshaded.com^ +||drailendways.shop^ +||drainalmost.com^ +||drakerecitalpraised.com^ +||dramaticdeterpulverize.com^ +||drammercheng.com^ +||drankclosed.com^ +||drankinjectioncircumference.com^ +||draperyrevolvertiara.com^ +||dratetillage.com^ +||drato.xyz^ +||draughtibericcurved.cyou^ +||drawerexperienceletting.com^ +||drawersmoither.qpon^ +||drawersrespectively.com^ +||drawkcolkhithe.cyou^ +||drawlercreases.cfd^ +||drawnbinary.com^ +||drawncooler.com^ +||drawnlygordius.cyou^ +||drawx.xyz^ +||drbinary.cfd^ +||drbsliemurknv.website^ +||drbtcjprbqkhj.site^ +||drcfwuuwswbni.store^ +||drctcldff.com^ +||drdevelopmentcolor.com^ +||drdgpyhytqtnh.website^ +||dreadedrevisablevest.com^ +||dreadfullyemulateconservation.com^ +||dreadfullynormallyinsist.com^ +||dreadfulrulingextension.com^ +||dreamdatte.com^ +||dreamiinyou.com^ +||dreamlikefostergala.com^ +||dreammember-journey.com^ +||dreamteamaffiliates.com^ +||drearyenchantment.com^ +||dreepygeckoes.com^ +||dremdwbfeofrb.site^ +||dremlloves.com^ +||dremp.xyz^ +||drenchdeprivation.com^ +||drenix50kp.com^ +||drepaneruminal.cfd^ +||dressedoutrageousrun.com^ +||dressfatiguethrow.com^ +||dressingcomplete.com^ +||dreycusps.com^ +||dreyeli.info^ +||drfpywclmelnd.site^ +||drgjjncgdbftz.site^ +||drhuyzgvkmrob.website^ +||driascaromed.shop^ +||dribblefohns.cyou^ +||driedzenithslevin.cfd^ +||drieetjbtuoid.online^ +||drient.xyz^ +||driftsbabbleswandery.cfd^ +||drillcompensate.com^ +||drilledparegal.cyou^ +||drillingstarlightsupper.com^ +||drimquop.com^ +||drinksbrash.com^ +||drinrwafhyvmh.website^ +||dripe.site^ +||drisselponica.cfd^ +||drivendecree.com^ +||driverhugoverblown.com^ +||drivewaycoinsinsult.com^ +||drivewayilluminatedconstitute.com^ +||drizzlerules.com^ +||drjsialuvitqq.space^ +||drkness.net^ +||drnniuaxhvpgz.website^ +||drokpasepian.shop^ +||dromickvetch.cfd^ +||dromonslegscoters.qpon^ +||drongosamice.cyou^ +||droopingskilful.com^ +||droopy-management.com^ +||droopykind.com^ +||dropdeadgems.org^ +||dropletevaporateumpire.com^ +||dropmansuzette.cyou^ +||droppingbowmemorandum.com^ +||droppinglevelspacious.com^ +||droptescolar.shop^ +||drossesareca.com^ +||drossesgonidbenches.cfd^ +||drossswish.cfd^ +||droughtperceptive.com^ +||drownhewchevy.com^ +||drozhhgsejvhn.space^ +||drqkgbytuwdpi.site^ +||drsmediaexchange.com^ +||drsmexa.xyz^ +||drsnralrkqhjn.space^ +||drsrhybhxzytn.site^ +||drstmldoazjnj.website^ +||drswiqpxdulnv.site^ +||drtibnixidzrx.space^ +||drtndnevastxa.website^ +||drudgeryarson.com^ +||druej.com^ +||drueryeartagfungose.cfd^ +||drufgqygmwhen.site^ +||drugeugene.cfd^ +||druggedlibrary.com^ +||druggedrat.com^ +||druggetdirge.cyou^ +||drugstoredemuretake.com^ +||drumpriorityreseptivereseptive.com^ +||drumsitoldfashioned.com^ +||drunkarddignifyheather.com^ +||drunkardlukecoverage.com^ +||drurybrief.qpon^ +||drusescheneau.cfd^ +||drutsylaylzqx.site^ +||drwfkzlumcyob.space^ +||drxcnmlj.com^ +||dry-effort.pro^ +||dryasdyeweed.cyou^ +||drycoaloutbray.qpon^ +||dryfarmtineids.qpon^ +||dryopeforefit.qpon^ +||dryperception.com^ +||dryqsjk.com^ +||dryreactionpublicly.com^ +||dryrlsebjzcvb.site^ +||drzqijno6u91u832r91yqzou1jvd5pn2mt2s.com^ +||ds4de1.com^ +||ds4i8a.com^ +||ds6n6c.com^ +||ds7hds92.de^ +||ds8ect.com^ +||ds8fc0.com^ +||dsa8h7.com^ +||dsaaxf.com^ +||dsadghrthysdfadwr3sdffsdaghedsa2gf.xyz^ +||dsadyttmalqac.website^ +||dsahuo.com^ +||dsajrx.com^ +||dsamfe.com^ +||dsapdf.com^ +||dsatrd.com^ +||dsaxgy.com^ +||dsaywi.com^ +||dsb68d.com^ +||dsbcks.com^ +||dsbdyr.com^ +||dsbexk.com^ +||dsbixe.com^ +||dsbohcqqdvbyt.site^ +||dsbpwl.com^ +||dsbsmooohjuon.online^ +||dsbtfg.com^ +||dsccgm.com^ +||dscenn.com^ +||dscjbq.com^ +||dscjnr.com^ +||dsckgc.com^ +||dscmih.com^ +||dscmxt.com^ +||dscpxz.com^ +||dscsky.com^ +||dscsqe.com^ +||dsctja.com^ +||dscuug.com^ +||dscykd.com^ +||dsdaji.com^ +||dsdbdt.com^ +||dsdend.com^ +||dsderq.com^ +||dsdgtf.com^ +||dsdkgb.com^ +||dsdlbu.com^ +||dsdnhj.com^ +||dsdria.com^ +||dsdssq.com^ +||dsdvym.com^ +||dsdxgl.com^ +||dsdxyk.com^ +||dsdxyl.com^ +||dseauh.com^ +||dsectslimy.cyou^ +||dseel9.com^ +||dsefow.com^ +||dseiqr.com^ +||dsejzd.com^ +||dsekhf.com^ +||dsekhn.com^ +||dseopf.com^ +||dsetx3.com^ +||dseyzk.com^ +||dsfjcz.com^ +||dsfkry.com^ +||dsfondues.cyou^ +||dsfsfp.com^ +||dsftcd.com^ +||dsfvya.com^ +||dsgarg.com^ +||dsgdef.com^ +||dsgldf.com^ +||dsgvgw.com^ +||dsgwoa.com^ +||dsgwqe.com^ +||dshbju.com^ +||dshbxx.com^ +||dshdly.com^ +||dshdzj.com^ +||dshfbd.com^ +||dshhkl.com^ +||dshqtbvicbyvr.space^ +||dshsxy.com^ +||dshtlw.com^ +||dsicxo.com^ +||dsidas.com^ +||dsiill.com^ +||dsikyf.com^ +||dsimnq.com^ +||dsincy.com^ +||dsivor.com^ +||dsjbna.com^ +||dsjggm.com^ +||dsjofl.com^ +||dsjoiyflhvxpq.website^ +||dsjtel.com^ +||dsjvjv.com^ +||dsjzsw.com^ +||dskbcl.com^ +||dskcjy.com^ +||dskcwz.com^ +||dskgna.com^ +||dskkye.com^ +||dskkza.com^ +||dskmoo.com^ +||dskrym.com^ +||dslebb.com^ +||dslgfw.com^ +||dslqpa.com^ +||dslrph.com^ +||dslxrh.com^ +||dsmbdi.com^ +||dsmcnw.com^ +||dsmdvf.com^ +||dsmlme.com^ +||dsmnpw.com^ +||dsmtlxxmhsdea.site^ +||dsmuvt.com^ +||dsnbwt.com^ +||dsnbym.com^ +||dsndcg.com^ +||dsneim.com^ +||dsnfrt.com^ +||dsnhpm.com^ +||dsnhsz.com^ +||dsnirj.com^ +||dsnmip.com^ +||dsnsjj.com^ +||dsntah.com^ +||dsnyts.com^ +||dsofhw.com^ +||dsohrd.com^ +||dsojyi.com^ +||dsopwk.com^ +||dsoryt.com^ +||dsoxih.com^ +||dsp.wtf^ +||dsp5stero.com^ +||dspchided.com^ +||dspjrt.com^ +||dspktc.com^ +||dspqoy.com^ +||dspultra.com^ +||dspwdz.com^ +||dspyzx.com^ +||dspzqo.com^ +||dsqcfy.com^ +||dsqdbi.com^ +||dsqgyn.com^ +||dsqjkc.com^ +||dsqnnx.com^ +||dsqpog.com^ +||dsqvcm.com^ +||dsqwtw.com^ +||dsraozxhfuifo.site^ +||dsrbqn.com^ +||dsrdyw.com^ +||dsrilm.com^ +||dsrjiz.com^ +||dsruaa.com^ +||dsrznm.com^ +||dssbui.com^ +||dssqpn.com^ +||dssrbe.com^ +||dsswdz.com^ +||dssxdsaazqxcj.online^ +||dstaca.com^ +||dstfrx.com^ +||dstha9.com^ +||dstnwp.com^ +||dstqck.com^ +||dstsjj.com^ +||dstvpc.com^ +||dsughf.com^ +||dsuhyg.com^ +||dsuije.com^ +||dsultra.com^ +||dsumyd.com^ +||dsupiohdbsmuz.website^ +||dsupvs.com^ +||dsuylgujnxqes.site^ +||dsuyspjorroea.site^ +||dsuzbf.com^ +||dsvfbu.com^ +||dsvidbernlibi.site^ +||dsvxfq.com^ +||dsvyby.com^ +||dsvyrt.com^ +||dsvzpe.com^ +||dswagqnjedlcq.site^ +||dswckxxivdrjj.website^ +||dswegk.com^ +||dswepngsrbhza.space^ +||dswfhx.com^ +||dswgyl.com^ +||dswhem.com^ +||dswlpq.com^ +||dswmrn.com^ +||dswocr.com^ +||dswppe.com^ +||dswqea.com^ +||dswrqh.com^ +||dswyio.com^ +||dsxgma.com^ +||dsxgwwrkecsxd.online^ +||dsxoij.com^ +||dsxpzd.com^ +||dsxtea.com^ +||dsyaae.com^ +||dsyatr.com^ +||dsydvb.com^ +||dsygrxfwrlatx.online^ +||dsyhha.com^ +||dsyrogvoyrsrl.space^ +||dsyypg.com^ +||dsyyte.com^ +||dszcnw.com^ +||dszdcm.com^ +||dszlbx.com^ +||dszqfx.com^ +||dszqgc.com^ +||dszqsm.com^ +||dszqzq.com^ +||dt4ever.com^ +||dt51.net^ +||dtadnetwork.com^ +||dtaupyfwjdbqk.online^ +||dtbudders.cfd^ +||dtfxzgjgjiooq.website^ +||dtfyngnygjoai.website^ +||dtibgbtfoitnv.store^ +||dtiieawbozwfp.website^ +||dtjzcyjeywfaa.website^ +||dtmpub.com^ +||dtodayomegksc.site^ +||dtpngkqmjyuff.store^ +||dtprofit.com^ +||dtpvgzuxgdgmu.website^ +||dtrvbwdwzuvif.space^ +||dtsan.net^ +||dtscdn.com^ +||dtscout.com^ +||dtsedge.com^ +||dtsjajmvjdghy.website^ +||dtssrv.com^ +||dtsvztimqeyfl.world^ +||dtswghsbvpbzu.website^ +||dtuacfnsbdhdt.space^ +||dtvmlxoippfhm.site^ +||dtyscezlefppc.website^ +||dtzoenoduqopn.space^ +||dtzvavrnbzemd.space^ +||duantgrouped.shop^ +||dubfrntsjlpwfp.com^ +||dubietybialy.com^ +||dubiousneedleaccounts.com^ +||dubvacasept.com^ +||dubwife.com^ +||ducechqel.com^ +||duchesscakeresumed.com^ +||duchesspleasurelollipop.com^ +||duckieesotery.qpon^ +||duckiesnotcheraramids.cfd^ +||duckieswonner.qpon^ +||duckswillsmoochyou.com^ +||duckvoidrebuke.com^ +||ducosignory.cyou^ +||ductsstourybyrnies.cfd^ +||dudderyvetusty.cyou^ +||duddydismals.cyou^ +||dudgeonideo.com^ +||dudleymerer.qpon^ +||dudleyrevolutioninconsistent.com^ +||dudragonitean.com^ +||dudstasses.shop^ +||dueimmigratedebit.com^ +||duenschdgoplh.online^ +||duepose.com^ +||duettofur.shop^ +||dufixen.com^ +||duflij.com^ +||duflmlknmdlrf.website^ +||dufoiltabefybrine.cfd^ +||dufterywagons.qpon^ +||duftitedoiliesdrylot.cyou^ +||dugksbcmvvxdf.site^ +||dugrhmdlsdcop.website^ +||dugweerish.cfd^ +||duhklcwbqcfbt.com^ +||duhkxehelalch.store^ +||duhxgrfaziemg.site^ +||duidoaghteqgs.website^ +||duiunmaigiqiy.space^ +||dukerationpecial.com^ +||dukerytestao.cfd^ +||duledgewraplenidana.cyou^ +||duleonon.com^ +||dulillipupan.com^ +||dullmilacredolmans.cyou^ +||dulojet.com^ +||dulooyaaxmbrd.fun^ +||dulycuriouslysenses.com^ +||dulygeeksyrup.com^ +||dumbestrebar.cfd^ +||dumkrizshgtse.website^ +||dummyimpostorluke.com^ +||dumpierlarree.cyou^ +||dumsolachukka.cfd^ +||dumwarran.cfd^ +||dunderaffiliates.com^ +||duneenwinds.qpon^ +||dungasballam.shop^ +||dungsfilmer.qpon^ +||dungsvicarshop.cyou^ +||dunkashtraycolloquial.com^ +||dunkersslavian.cfd^ +||dunkspritzoctic.cyou^ +||dunstkinhin.cyou^ +||duntsariste.qpon^ +||duomneqqwc.com^ +||duovirisneeredgrout.qpon^ +||dupingnonsuit.cyou^ +||dupperknolly.shop^ +||dupqiccmjruhb.online^ +||dupwslkemelxq.space^ +||duqluquxvoijx.site^ +||durantesquiretcoaxer.cyou^ +||duranttandour.cyou^ +||duregqgfvravp.space^ +||durhbvlfkhnln.store^ +||duringcereal.com^ +||durnedmuseums.qpon^ +||dusfolzrshwgf.online^ +||duskilycontr.cyou^ +||duskishpaeony.cfd^ +||dust-0001.delorazahnow.workers.dev^ +||dustexhibition.com^ +||dustinga.com^ +||dustourrenewer.qpon^ +||dustourtollage.qpon^ +||dustyrender.com^ +||dusurmmklwjx.com^ +||dutchrelay.com^ +||dutifulmake.com^ +||dutihowhrxmpr.website^ +||dutorkkfputhl.online^ +||dutorterraom.com^ +||dutyfarmervista.com^ +||duuabhipmloqh.site^ +||duujwfceivrra.site^ +||duvetynnoisier.shop^ +||duvmqugzcjeco.website^ +||duvnihavrob.in^ +||duxmiahfh.com^ +||duxobyikbhknx.online^ +||duzgntgfdihcp.space^ +||dvdjtxgcokydc.online^ +||dvecqwppmsppx.website^ +||dvfritvgogdkr.space^ +||dvgpumwwbtyee.space^ +||dvivigwviyyoy.space^ +||dvjbwiswdussd.site^ +||dvjkexyijbjbg.site^ +||dvkxhbcrrrrut.online^ +||dvleaaamtruzl.site^ +||dvmblpxseuyuj.space^ +||dvnhgkrzyxlzd.site^ +||dvqldhfeowiyh.online^ +||dvtndeuthhggb.com^ +||dvuonsjkeeief.website^ +||dvuvyrddiwxpr.site^ +||dvvndprgsjdni.store^ +||dvwedvktkcsvw.vip^ +||dvwovxmqzrnsb.space^ +||dvxeqsgyabyvr.online^ +||dvxgccnsejtgm.space^ +||dvymkekwkkgdi.space^ +||dvypar.com^ +||dvzycytrxbxav.space^ +||dwalhkbrywnaw.site^ +||dwamhdnllmhwu.site^ +||dwarfscriptsfurnished.com^ +||dwarfybesaint.cfd^ +||dwashhxhmzhjs.space^ +||dwavamtujydry.store^ +||dwbhepiqyzihi.space^ +||dwdy7xir.xyz^ +||dweokbdaxsr.in^ +||dwetwdstom1020.com^ +||dwfdxnwjakfjm.space^ +||dwibdrtzozsuz.space^ +||dwightcherrykings.com^ +||dwightcontributor.com^ +||dwiiugjfzvsgj.site^ +||dwkfdahogaipo.website^ +||dwkgpxohcasvp.site^ +||dwnxvqyxjdhqu.site^ +||dwocjxvzwnkmv.online^ +||dwpuuaxhcqlvz.website^ +||dwvdofpcelstt.site^ +||dwvohsgysgfrr.online^ +||dwvzkqhbctlur.online^ +||dwwpaoatfgjvo.space^ +||dwztkzptvisct.site^ +||dxaobbhcuiech.online^ +||dxbsyduuarxre.website^ +||dxbzufvkoahib.space^ +||dxcqdvrjbdaie.website^ +||dxcvqzxyycraw.website^ +||dxelsudieastk.store^ +||dxenmweujarfm.store^ +||dxewphcplowwk.site^ +||dxiilazmsqprw.online^ +||dxkmeispvbfsx.website^ +||dxlyladmlitox.store^ +||dxmlxefb.com^ +||dxoiomfjfvvub.space^ +||dxouwbn7o.com^ +||dxoywtnwmxqze.online^ +||dxozhspzbfkwk.online^ +||dxpcfccbgxlmy.online^ +||dxppedjnfsiwn.online^ +||dxqbrjwlmyyph.online^ +||dxqqoctjgddts.space^ +||dxtv1.com^ +||dxuvxrdqeyzwj.online^ +||dxuxmguvqpcua.online^ +||dxwawocqoeofo.online^ +||dyberamlhynnd.website^ +||dyblpgaiomtdv.online^ +||dybutryvnbsxc.website^ +||dyebecktrotlet.cyou^ +||dyefejywztloj.store^ +||dyeingsbayamo.com^ +||dygudhixkfwew.online^ +||dyingsixth.com^ +||dykcrgourwilq.space^ +||dykerkoila.qpon^ +||dylop.xyz^ +||dymwfbufbwtwc.site^ +||dynamicfibroid.cyou^ +||dynamics20.com^ +||dynamics2048.net^ +||dynamics2efficient.com^ +||dynamics38.com^ +||dynamics421.com^ +||dynamics69.com^ +||dynamics71.com^ +||dynamics880.net^ +||dynamitedata.com^ +||dynescrinia.cfd^ +||dynove.xyz^ +||dynpaa.com^ +||dynspt.com^ +||dynsrvtyu.com^ +||dynssp.com^ +||dypeizqkapgoz.site^ +||dypnonedottel.cyou^ +||dypnonezngump.cyou^ +||dyptanaza.com^ +||dyqzjfpmlkwsv.website^ +||dyttgsmq.com^ +||dyvkswbqkgfhp.space^ +||dyvourdrossed.cfd^ +||dyxlpqsnrapf.com^ +||dyyptiqcfnedr.site^ +||dyzaxqldzrxbw.space^ +||dyzmo.com^ +||dz4ad.com^ +||dzgblqdbbjehb.website^ +||dzgenrsxwnebu.website^ +||dzgrlzgqawj.com^ +||dzhiafnhheylb.site^ +||dzhjmp.com^ +||dzjegcogtzqou.online^ +||dzjlyvcsggmls.online^ +||dzkobuufsvsmo.space^ +||dzlawmilngfcp.space^ +||dzluqragnoyth.space^ +||dzmrbjehnpkah.site^ +||dzpoejczjsmkk.store^ +||dzrifgpbvyiar.site^ +||dzripxtbkhvug.site^ +||dzthdolznengm.space^ +||dztvugxbghvdo.space^ +||dzubavstal.com^ +||dzupgajxolrkb.website^ +||dzwnrexxwsayy.online^ +||dzyzqfbonirbd.online^ +||e026b0501c.com^ +||e03abc72c5.com^ +||e048c7714c.com^ +||e04ab2ef0e.com^ +||e0800cb704.com^ +||e088b80df3.com^ +||e091049a84.com^ +||e0b2d6a445.com^ +||e0d7lwti.xyz^ +||e13k62quhy8wxk4f.cfd^ +||e1e8869b08.com^ +||e234r7u41jf9rve3xr2fu2lhnxz.cfd^ +||e2483707fc.com^ +||e2ertt.com^ +||e2fc72fa81.com^ +||e2j6r5onm4vbohv.cfd^ +||e311c9ae61.com^ +||e3ba2130e2.com^ +||e3n7jpuwo57nqv.cfd^ +||e427d04a02.com^ +||e443007367.com^ +||e4577d6fef.com^ +||e4d190f9dd.com^ +||e4qrgipu8un63nc4.cfd^ +||e50386fc45.com^ +||e548899712.com^ +||e56706706b.com^ +||e56f75c63c.com^ +||e5726f832b.com^ +||e5ce73abf6.com^ +||e5zklj5ynjjcpt8.rest^ +||e67f6fea84.com^ +||e67repidwnfu7gcha.com^ +||e695de9aef.com^ +||e6c5f295b4.com^ +||e6hirv16uppvwqu.rest^ +||e6ui8pc.com^ +||e765b97f5b.com^ +||e779dae19c.com^ +||e78c7a74e7.com^ +||e7cod.com^ +||e7e0addf05.com^ +||e8370630f3.com^ +||e86ee537fe.com^ +||e8976d7841.com^ +||e897lgevwo5h4iq.rest^ +||e89d45b16370ee7e43daeaf6ce8d9547.com^ +||e8ew6h7nkt2t21v.cfd^ +||e8gnor6w14b1q4g.rest^ +||e8gwhwefgi187h.rest^ +||e8ys.com^ +||e910e94be7.com^ +||e92c130c8b.com^ +||e958252147.com^ +||e9bexuukibhfl545mlkf6v.cfd^ +||eaaclwbrcoqdd.site^ +||eaagzbrscgtzw.space^ +||eaaratte.net^ +||eabids.com^ +||eabysqtgmueim.space^ +||eacdn.com^ +||each-task.com^ +||eadhakmcmzslj.online^ +||eadziukwqzeeb.space^ +||eaeiacjiwsufg.site^ +||eafxamdfbmr.com^ +||eagerlycuisinecast.com^ +||eagjohwicefoq.website^ +||eaglewarfareconclusions.com^ +||eagqqoapkodhy.online^ +||eagreengird.com^ +||eagresnilous.shop^ +||eajmeainaeeiq.site^ +||eakpspoytvnti.store^ +||ealeo.com^ +||ealjjdpbledwq.site^ +||ealmtiqryxpox.website^ +||ealvusnyonhwy.online^ +||eamrxyoyatwgm.website^ +||eanresultancet.com^ +||eaoyilbmqypkz.site^ +||earatikvavrsa.site^ +||earbossysavvy.com^ +||earclipflaffobfirm.cyou^ +||eardepth-prisists.com^ +||eardropcurls.com^ +||earlapssmalm.com^ +||earlesscantina.shop^ +||earlierties.com^ +||earlinessone.xyz^ +||early-finding.com^ +||earmuffpostnasalrisotto.com^ +||earmuffvintagevitality.com^ +||earnestnessadamantpal.com^ +||earnify.com^ +||earningskingdeliberately.com^ +||earnvids.com^ +||earpickdruggerredtops.cyou^ +||earringprecaution.com^ +||earringsatisfiedsplice.com^ +||earwigssquares.qpon^ +||easebestow.com^ +||easelegbike.com^ +||easelunawarefunds.com^ +||easiercampaignworkshop.com^ +||easilygreateststuff.com^ +||eastrk-dn.com^ +||eastrk-lg.com^ +||easy-contact-club.com^ +||easy-dating.org^ +||easyad.com^ +||easyconclusions.com^ +||easyconverts.com^ +||easyflirt-partners.biz^ +||easygoingasperitydisconnect.com^ +||easygoingtouchybribe.com^ +||easylummos.com^ +||easysemblyjusti.info^ +||eatenmockingoverwhelm.com^ +||eatingclientconfine.com^ +||eatstarged.qpon^ +||eatvvxxcaszwi.space^ +||eavailandpro.com^ +||eavakddcdofik.site^ +||eaverscroll.cfd^ +||eavesdropbogusye.com^ +||eavesdroppingfurniture.com^ +||eavopsbbnclsg.site^ +||eawkxpuyrbkvx.website^ +||eaxmvpgmvsazo.site^ +||eazqiicorbzpm.site^ +||eazxvjcmkwafq.website^ +||eazyleads.com^ +||eb1flhyrpbpiiq.cfd^ +||eb5e68dd19.com^ +||ebannertraffic.com^ +||ebatndolrzsxc.space^ +||ebbbarked.cyou^ +||ebbbhtkridivs.love^ +||ebcascgoers.qpon^ +||ebd.cda-hd.co^ +||ebdhugcimuisq.space^ +||ebdljicttjddk.store^ +||ebeca096c8caf9bd59163307d4237176.com^ +||ebemgieytjkxb.space^ +||ebemhbemah.com^ +||ebenayes.shop^ +||ebetoni.com^ +||ebeumbnuwduxx.space^ +||ebfclhdkkmeav.store^ +||ebh982icrrnxrjj3l.cfd^ +||ebjzywqbpkbbi.online^ +||eblastengine.com^ +||ebmjaufmqljbw.site^ +||ebonigekapokhuffier.cfd^ +||ebonizerebake.com^ +||eboxgiwwapmri.online^ +||eboxrcvjhxgcm.online^ +||ebrictycleric.cyou^ +||ebrvjdndvkvek.space^ +||ebsardfdabxhr.space^ +||ebtwanvamfwwi.space^ +||ebuzzing.com^ +||ebwqpnvtwddry.site^ +||ebxbpcueiftlc.online^ +||ebxlkdnphpqwf.store^ +||ebxueustknziw.site^ +||ebz.io^ +||ec0d919893.com^ +||ecaqbwghfrwkm.site^ +||ecbaticimplume.cyou^ +||ecdrmewmqkwcdt.com^ +||ecdzsviaqbxfk.site^ +||ecedimktjtwkc.space^ +||ecef83eaa0.com^ +||echitesbubblessita.cfd^ +||echnidakilting.cyou^ +||echoflaresoap.com^ +||echucatapmost.qpon^ +||ecidjfjtiyxmg.website^ +||ecjhgxpqqpuzu.website^ +||ecjrzisfqedcu.space^ +||ecjxgdkkewort.site^ +||eckaapep.com^ +||ecknbonfiftad.website^ +||eclinerybelfast.org^ +||eclkmpsa.com^ +||eclnqdlbtgokj.site^ +||eclunhuzuyoia.store^ +||eclvgswxvthwx.space^ +||eclzoaiippely.site^ +||ecmlevzhgcdwh.online^ +||ecnikbpb2gy8zo3u1.cfd^ +||ecntpxvcdvmsn.website^ +||econventa.com^ +||ecorchreliner.cfd^ +||ecpipouvmimkr.site^ +||ecreify.com^ +||ecrilwzjkwqul.space^ +||ecsktgouwmo.com^ +||ecstasycluttergnat.com^ +||ecstaticreveal.pro^ +||ectsofcukorpor.com^ +||ectstxtrrdqtl.website^ +||ecurierubia.cfd^ +||ecvvvkancbxjt.online^ +||ecxufxavldnpd.site^ +||ecxxpjohjadckcp.com^ +||ecyklqrkcz.com^ +||ecypazzlxorfg.online^ +||ecyyrthlmidze.space^ +||eczmkgrzdluhe.store^ +||ed097cf04b.com^ +||ed24cb4bc7.com^ +||ed49f13aad.com^ +||edaciousedaciousozgiggle.com^ +||edalloverwiththinl.info^ +||edaughablelead.org^ +||edbmtunvlkcxm.website^ +||edcc0994fe.com^ +||edckqbigcgcyl.online^ +||eddfrwjpdijtb.store^ +||edeclineryb.org^ +||edexpvvr.com^ +||edgevertise.com^ +||edggfqqsbycwo.store^ +||edginggrommet.cyou^ +||edible-sort.pro^ +||edioca.com^ +||edisonjellaba.qpon^ +||editingsolionbeebee.qpon^ +||edition25.com^ +||editorovertimeradiation.com^ +||editorviolentlick.com^ +||edjbpudsjptpi.website^ +||edlilu.com^ +||edlllddsgkelx.space^ +||edmxwktbhld.com^ +||ednewsbd.com^ +||edolsbjawiinj.website^ +||edonwiqgwlvmc.online^ +||edorzvyeqmzct.space^ +||edprivatedqualize.org^ +||edpwikvvdmetv.store^ +||edqkteagtiipg.online^ +||edqwztrptkdna.online^ +||edrhfnmsudqtm.site^ +||edshookherhead.org^ +||edsusyqghmlfy.site^ +||edtheparllase.com^ +||edttmar.com^ +||edttwm.com^ +||edua29146y.com^ +||edubhsffaoqcw.site^ +||educatedanswer.pro^ +||eduseio.com^ +||edutechlearners.com^ +||edvfwlacluo.com^ +||edwardsanba.qpon^ +||edwardspeedingchat.com^ +||edwidzqjyrumt.space^ +||edwmpt.com^ +||edxilaprgjxqt.site^ +||edxwcxnfpukze.site^ +||edzusegqavqik.store^ +||edzvubkgsokfg.online^ +||ee2b93a3a4.com^ +||ee2vi96t756fmicu2k1jml39gvg1.cfd^ +||ee387er578w9b2mi.rest^ +||ee3gnbzqhfzcnn6lpnzgrqyhy3bj.cfd^ +||eeaeghdfwnjnz.site^ +||eealrrwurmesx.space^ +||eeawcdhxtjmkb.site^ +||eeberoasfqxwg.global^ +||eebivsjgsjktp.store^ +||eechicha.com^ +||eeco.xyz^ +||eeedvsoatx.com^ +||eehjbmpykwsfj.site^ +||eehuzaih.com^ +||eeigvdirpfmob.online^ +||eeiinjqsioicn.site^ +||eekbhhrgusizj.website^ +||eeksbeforebutheh.org^ +||eelamendshire.com^ +||eelameultklv.com^ +||eelfpsgnicy.com^ +||eelpotcarices.cyou^ +||eelwgpubhnjxv.website^ +||eelxrrsnormoc.space^ +||eenyxwxaeelzx.online^ +||eeohlihmbvmyl.website^ +||eepjhvlyzlred.icu^ +||eeptoabs.com^ +||eeqjdgqbvpbjw.site^ +||eeqkygeabndmo.online^ +||eeqrfnqtnlcqi.space^ +||eeqzqfexskuzh.site^ +||eerfumerel.com^ +||eessoong.com^ +||eetspaae.net^ +||eevhqgeudnqeg.space^ +||eevifrenxkyui.website^ +||eexdpbhuaohsx.online^ +||eeybexiamabwa.site^ +||ef5787f742.com^ +||ef8p82vhgk6vhrjv53.cfd^ +||ef9i0f3oev47.com^ +||efadfubcqalcr.club^ +||efbdfbvpsmngh.site^ +||efcmdpfbepeba.site^ +||efecksoime.cfd^ +||eff8a530f3.com^ +||effectivecpmcontent.com^ +||effectivecpmgate.com^ +||effectivecpmnetwork.com^ +||effectivecpmrate.com^ +||effectivecreativeformat.com^ +||effectivecreativeformats.com^ +||effectivedisplaycontent.com^ +||effectivedisplayformat.com^ +||effectivedisplayformats.com^ +||effectivegatecpm.com^ +||effectivegatetocontent.com^ +||effectiveratecpm.com^ +||effectscouncilman.com^ +||effectuallyconceptcontinuous.com^ +||effendiswonksubfief.qpon^ +||efficientorbit.co^ +||effluveputting.com^ +||efforcedandie.shop^ +||efforlessefforlessunited.com^ +||effoyxdyexzhp.site^ +||efkycmuil.com^ +||efmjvchffbmar.online^ +||eforebuthehadsta.org^ +||eforeukandthi.org^ +||eforgotteddisgu.com^ +||efpdkrgrluqec.store^ +||efrheeqcwgxsb.online^ +||efrwdjavjkiqw.online^ +||efryqqbee.com^ +||efsuoodjpyxew.space^ +||efthjcbyvbhci.space^ +||efulcurtseysadmi.org^ +||efvrlmqxgiqai.website^ +||efwukoulnhdluki.org^ +||efyqbufbkbdsw.site^ +||efyufxhdgwbkg.online^ +||efz4wgv1zr223b9p.rest^ +||eg719pc8yiruec.cfd^ +||egallyalmuces.cyou^ +||egaxybiqeramc.space^ +||egbggijlkjwoo.space^ +||egctjciixiire.space^ +||egcuxefgvsjpw.online^ +||egczoevqyffdo.site^ +||egfqzlqcynxif.online^ +||egfrmduvcjtde.website^ +||eggedpinax.qpon^ +||eggjddjlsefmm.website^ +||eggkhujtglllk.space^ +||eggplantgapmatter.com^ +||eggsdart.com^ +||eghup6z33nqt238gez2qlnhm616zkj.cfd^ +||egighbqdtgyen.rocks^ +||egitqmdbccuih.space^ +||eglujzjlgxlhq.space^ +||egmjqaoequdsv.site^ +||egnuuwxqajmao.site^ +||egoismillogicaldegradation.com^ +||egoizeweskits.qpon^ +||egopiyqfyhuvf.site^ +||egori.xyz^ +||egotisticexcavateplywood.com^ +||egpdbp6e.de^ +||egpealygnhgue.online^ +||egqhbuyfdpswm.space^ +||egrgvabmhxgqh.site^ +||egvlsbzuolczs.site^ +||egvmdcbddgial.website^ +||egvmppvtammxw.site^ +||egxskengxrvlqjg.com^ +||egyptbullsavoury.com^ +||egyydcehpdilj.site^ +||eh3pix0b.xyz^ +||ehasnoconversat.org^ +||ehclkqpxnvfqd.website^ +||ehcqubscjotaa.space^ +||ehdmckprfptyg.store^ +||ehdmskoumgzcv.online^ +||ehegoajxjinwc.online^ +||ehfeuvyalaxlm.online^ +||ehftkujvqceyl.site^ +||ehgavshstemqi.space^ +||ehhrqlirsfgap.website^ +||ehiyxlnuujkps.store^ +||ehlfnpduxldcy.online^ +||ehmgtreajjlof.site^ +||ehmnmovcnwkyb.website^ +||ehqufypefcfkx.site^ +||ehrxafhecgdqq.online^ +||ehrydnmdoe.com^ +||ehskcxkqytwbxc.com^ +||ehszycpcxrskg.website^ +||ehtkfjhrozkeu.website^ +||ehuhefrrpqjgp.website^ +||ehvxrxndjgzbb.online^ +||ehwjabvdtzqge.website^ +||ehwtrxeivhora.site^ +||ehygkgvwxipes.website^ +||ehzxvqyrxydqv.space^ +||eiaffrjrykttz.online^ +||eiaojxolvjtfe.website^ +||eigbxvnpedwcv.site^ +||eiget.xyz^ +||eighaver.cfd^ +||eightcontented.com^ +||eighthpowerfully.com^ +||eigyehxzbvjzg.site^ +||eiiknsfpyarmi.site^ +||eijivbeakvnpi.store^ +||eijqgjhcmjsfm.website^ +||eiledstevermotorie.org^ +||eiljtxtpaajoh.website^ +||eilloupnjlzoj.site^ +||eimesthanzogt.space^ +||eiotqjelvrceb.online^ +||eipapwgvmipdi.online^ +||eipmjigkkvyq.com^ +||eirxggijnfnto.space^ +||eiteribesshaints.com^ +||eitmtqclpokfh.site^ +||eitxkgnygjdsu.website^ +||eiueayjvitdew.website^ +||eiul28e6jn8vu5r4u4btzy52vmtnj5z8.cfd^ +||eiurcesrxusez.website^ +||eivhjpwzswyjx.website^ +||eivtciyrmrgkx.online^ +||eixgdeonnumrp.site^ +||eiyyjstblubzo.website^ +||eizcfqypdourg.online^ +||eizgttovabu.com^ +||eizzih.com^ +||ejadhobthckao.site^ +||ejaxbjcsdmjwm.site^ +||ejcnfk4t21lof1.rest^ +||ejdkqclkzq.com^ +||ejepontspwiip.website^ +||ejexgcirsdwvx.online^ +||ejgmkvprpjqww.site^ +||ejihhtgvjeglq.online^ +||ejivwekugdhzz.space^ +||ejlqdcyrjsakh.site^ +||ejnhzgcgazhjl.site^ +||ejoanpaklnyrg.space^ +||ejovkuxcfzvru.website^ +||ejozbzeymccax.website^ +||ejpmsiofazspt.website^ +||ejqmzpbhebimq.website^ +||ejqrthbzjhrci.site^ +||ejrzeehyqboza.website^ +||ejssuuvktgseo.space^ +||ejswzcylcynfb.site^ +||ejsxzsisfbvfm.online^ +||ejuacikpcxjyk.online^ +||ejufwpkpikrgy.space^ +||ejwxlplhgzzhf.store^ +||ejxfetghjdmm.com^ +||ejxguyflv.com^ +||ejxhiitnxgwun.site^ +||ejzdijlxrxwlg.site^ +||ek43m7nbf4ikt1.rest^ +||ekaacdiilusiw.space^ +||ekalpuvefezyo.website^ +||ekamsply.com^ +||ekbggmuqsovel.site^ +||ekcdojssgniji.site^ +||ekcnyrabadtq.com^ +||ekcwpdoanxcsl.online^ +||ekczzoyecfkfm.store^ +||ekdwpsmeplpvq.space^ +||ekekpmucahnti.site^ +||ekenamemutuaryrough.qpon^ +||ekerududeyuqb.space^ +||ekfojabejkavk.site^ +||ekfovqfrgcrg.com^ +||ekfqaxxwnmqdb.website^ +||ekgjddiuwwyrv.online^ +||ekhay.com^ +||ekhsvsp.com^ +||ekiisawyaretz.online^ +||ekisticmessily.cyou^ +||ekjyguvzxzlrb.online^ +||ekjzzzuptx4ptqelzm.cfd^ +||ekkasimulerlacatan.qpon^ +||ekklgpfmaviji.online^ +||ekliewcnqmfsn.website^ +||eklsbcyfcfxvr.space^ +||ekmas.com^ +||ekocdokfmzwnz.site^ +||ekogulzaxpito.site^ +||ekqlj8o5wpcc1hi.cfd^ +||ekrpjrrovubka.club^ +||ektmyescfvnmb.website^ +||ektxsfkdnciut.space^ +||ekvhgfruqyadw.site^ +||ekvoffgfhdtoj.website^ +||ekwihhtasvcma.site^ +||ekxqqlkwmonfa.space^ +||ekxtrafcewyww.store^ +||ekxuwignogvdd.site^ +||ekyngoyzuutls.website^ +||ekyqmiffifosj.space^ +||ekzasriadpwqi.site^ +||ekzwoygfoevjf.online^ +||ekzyqldtqnnth.online^ +||el8e4ke81e5euv.cfd^ +||elaboratebasis.com^ +||eladove.com^ +||elajqjtwnoaef.space^ +||elandslumpy.cfd^ +||elapidfriesickolas.qpon^ +||elarekcrmtoed.online^ +||elastic-sync.xyz^ +||elasticad.net^ +||elasticthing.com^ +||elatedcamera.com^ +||elaterybarkeep.cfd^ +||elathasneaped.qpon^ +||elatorparulis.qpon^ +||elaydark.com^ +||elbep.xyz^ +||elbowyniecescrumpy.cfd^ +||elbwhatna.shop^ +||elcoastlinecall.com^ +||elderly-block.pro^ +||elderly-fail.pro^ +||elderly-spread.pro^ +||eldestcontribution.com^ +||eleavers.com^ +||eleazarskippy.qpon^ +||electcocktail.com^ +||electluscious.com^ +||electosake.com^ +||electosoling.qpon^ +||electranowel.com^ +||electricalbicyclelistnonfiction.com^ +||electricruin.pro^ +||electsauna.com^ +||electthirteenth.com^ +||elegancecharacter.com^ +||elegant-plate.pro^ +||elegantdescription.com^ +||elegantimpose.com^ +||elegiseaftaba.com^ +||elegistlockpinpoinded.cyou^ +||elelasticalsdebat.org^ +||elementarysinger.com^ +||elementsacorncolossal.com^ +||elementwithreplicas.com^ +||elemoltwigful.com^ +||elepaiodevolve.shop^ +||elerscxhgclau.site^ +||elevationhypnotize.com^ +||elevationoutshout.net^ +||elevatorvainpainful.com^ +||elficpheontourers.cyou^ +||elfliketapalos.cfd^ +||elicaowl.com^ +||elideopposit.qpon^ +||elihucraichy.com^ +||elijahpodiumsegbert.cfd^ +||eliminatedwalrusinitiative.com^ +||elisorrugine.cyou^ +||elitistfancy.cfd^ +||elixateazotise.shop^ +||elizabethpertinent.com^ +||elizabethpunishhead.com^ +||elizarucksack.com^ +||elizei.xyz^ +||eljclnqgctqng.online^ +||eljeunmkjiamm.space^ +||elkintwsgtmnabu.com^ +||elkony.xyz^ +||elkunbalanceunfounded.com^ +||ellasarcourtal.cyou^ +||ellickmoileydankly.cfd^ +||elliptical-schedule.com^ +||ellipticaltrack.com^ +||ellkrkeklccxj.space^ +||ellyobxvo.com^ +||elmakoktbnpt.com^ +||elmmmgfvzerqt.space^ +||elmnxeembokgd.space^ +||elmolkyqhjfwn.online^ +||elmyhorrent.cyou^ +||elocuteblinderovertip.cfd^ +||elodblksepta.cfd^ +||elodeasvisit.cyou^ +||elogiado.info^ +||eloinerrameses.cyou^ +||elonreptiloid.com^ +||eloquentgossipold.com^ +||elpsirftovofi.space^ +||elrbdrumbzgpx.online^ +||elsespeakingbetraying.com^ +||elsewhereregret.com^ +||elseziwbkierk.website^ +||eltonmillenniumbeech.com^ +||eltontry.com^ +||eludertimarri.qpon^ +||elutessheavednude.cyou^ +||elutokvgaclme.space^ +||elutorentrez.cfd^ +||elvansiksikameg.qpon^ +||elwfmbqrgrlse.website^ +||elwqyymubackl.com^ +||elxfxkrslholc.online^ +||elxyjydgedvka.site^ +||elzqoggbkyeoo.online^ +||emasculatedessertamuse.com^ +||emaycvaqbmzrr.space^ +||emban.site^ +||embankmentinscriptioneventful.com^ +||embargosensor.com^ +||embarkvision.top^ +||embarrassed-bridge.com^ +||embarrasseddebt.pro^ +||embarrassedsound.pro^ +||embarrassment2.fun^ +||embarrasspiled.com^ +||embassygroceryobvious.com^ +||embassysmokedexhibited.com^ +||embayswinna.cyou^ +||embeddedhelpful.com^ +||embeddedoxide.com^ +||embedx.name^ +||ember4replicas.com^ +||embezzlementclearedbake.com^ +||embitterlorrycar.com^ +||emblemexceptionscorer.com^ +||embodygoonrip.com^ +||emboleskeets.cfd^ +||emboxstobs.cfd^ +||embpsubecawmj.website^ +||embraceattaindatabase.com^ +||embroiderynaturalistsfighter.com^ +||embusqumultics.cfd^ +||embwmpt.com^ +||emdnriustcngd.website^ +||emduboiem.com^ +||emediate.dk^ +||ementrandings.org^ +||ementseconom.org^ +||ementxviewsin.com^ +||emergedcom.cyou^ +||emergeddoleful.com^ +||emergencyadditions.com^ +||emergencyidiomjokingly.com^ +||emergencystopped.com^ +||emergeskid.com^ +||emeriesdereign.cyou^ +||emeroidferity.cfd^ +||emfhxsmebkthh.website^ +||emhjekwvkwnvz.website^ +||emicalcoveningspon.org^ +||eminencehillsidenutrition.com^ +||eminent-drag.pro^ +||eminentbonusmeals.com^ +||eminentcleaveproduces.com^ +||eminentconsideringdestructive.com^ +||eminentdetail.com^ +||eminentpercentvandalism.com^ +||emiratereason.cyou^ +||emissionidiompolygon.com^ +||emitdekare.qpon^ +||emitprocured.com^ +||emkmvkigfexgt.online^ +||emlifok.info^ +||emliftkn22viw7.cfd^ +||emmettdossman.qpon^ +||emmyrambler.cyou^ +||emnurrtgmjcil.website^ +||emnwivlrmorwm.website^ +||emongainus.cfd^ +||emorywawled.qpon^ +||emotional-orange.com^ +||emotomalf.com^ +||emovementxview.com^ +||empaleberseem.cyou^ +||empaquatlbsgn.space^ +||empdat.com^ +||emperorinspiring.com^ +||empexacarree.qpon^ +||empiotwxidzgh.space^ +||empirecdn.io^ +||empireeyelid.com^ +||emploretrabu.cfd^ +||employerupsideliterally.com^ +||empond.com^ +||emporteangeles.cyou^ +||empoverpipy.shop^ +||empowerlocal.co^ +||emptettish.cyou^ +||emptinessabjure.com^ +||emptionengraff.cfd^ +||empty-advantage.pro^ +||emqfusvmjnlsk.space^ +||emqokltbiegez.space^ +||emrsnqejmnrxz.space^ +||emruipnbrackr.space^ +||emsservice.de^ +||emtalxrjdtgpg.website^ +||emtpqueawuupc.site^ +||emtuptxgpgsre.site^ +||emtzvglbjsxnd.space^ +||emufimenpcwsl.online^ +||emuloushonans.cfd^ +||emumsazpndymr.space^ +||emvqpcjlnbhpg.website^ +||emwazjwizclxp.site^ +||emwksqauungjg.website^ +||emxdgt.com^ +||emxipsmjhingj.website^ +||emydesmyocoelbigger.qpon^ +||emyssetwall.cfd^ +||emzxhwzaxdarg.vip^ +||enabledetective.com^ +||enablesasmetot.org^ +||enacttournamentcute.com^ +||enalpxkciyhyj.website^ +||enalsk.click^ +||enamelhurdleunpaid.com^ +||enathyimemedi.org^ +||enbpnlaiatvav.space^ +||enbxweghgupsj.space^ +||enbzcgwahnemk.site^ +||encasehighlight.com^ +||enccdiqprxj.com^ +||enchantbackfire.com^ +||enchantmentwhichever.com^ +||encheatzymosan.cfd^ +||enchxwyodf.com^ +||encinalbehoofshorten.cfd^ +||encinalwoohoonicky.cfd^ +||encirclesheriffemit.com^ +||enckirned.shop^ +||enclogavichi.cyou^ +||encodediagnosisrelish.com^ +||encodewallacecockroach.com^ +||encoopacetal.cfd^ +||encouragedflamboyant.com^ +||encouragedmemistress.com^ +||encouragementsqueal.com^ +||encouragingbrightest.com^ +||encouragingjawsordinarily.com^ +||encratykenelm.com^ +||encupfennish.cyou^ +||encyclopaediafoodpatent.com^ +||encyclopaediaforever.com^ +||encyclopediaskilled.com^ +||endangerunderneathcar.com^ +||endazecubbish.cyou^ +||endebedouse.shop^ +||endebtchalmer.qpon^ +||endersrouses.qpon^ +||endlessaspirant.com^ +||endlessenterprisebrawl.com^ +||endlesshandbaglinked.com^ +||endlessloveonline.online^ +||endmostdob.com^ +||endod.site^ +||endorico.com^ +||endorseprovisional.com^ +||endowmentoverhangutmost.com^ +||endpointoutbreakpoint.net^ +||endsdaggleschass.cfd^ +||endurancedaylight.com^ +||endurancesupervision.com^ +||enduresublime.cyou^ +||endurosweekday.com^ +||enelslthfenmh.site^ +||energetic-surgery.pro^ +||energyflexibilituk.org^ +||energypopulationpractical.com^ +||enfacesplaineddeglory.qpon^ +||enforcementmutenessyogurt.com^ +||enforcer780.net^ +||enfuxdajulidn.site^ +||engagedconfusionfeasible.com^ +||engagedpungentrepress.com^ +||engageesubtaskparl.qpon^ +||engagementidentifiers.com^ +||engagementlawfully.com^ +||engagementpolicelick.com^ +||engbjwqvwznxg.website^ +||enghlescotist.shop^ +||engif88e1noqt2epbqu6mbx5xmzk.cfd^ +||engildsbabydom.cfd^ +||enginecorruptiontrice.com^ +||enginedriverlatter.com^ +||engineerfoal.com^ +||engineexplicitfootrest.com^ +||engineladleworn.com^ +||englandfaithless.com^ +||engloomsitups.shop^ +||engloomtilyer.cyou^ +||engluesutter.cfd^ +||englutehelicaltychite.qpon^ +||englynburnfaailk.cyou^ +||engrievinebef.fun^ +||engrlamiidvoicer.qpon^ +||enhancedpennyfluctuate.com^ +||enhancementstheirstackle.com^ +||enigmanarrativedime.com^ +||enigmaswhereas.com^ +||eniont.xyz^ +||enityvopmweej.site^ +||enjoyablefax.com^ +||enjoyedcomputefatality.com^ +||enjoyermossers.cyou^ +||enjoyingcane.com^ +||enjoyingclienthousing.com^ +||enjoyingdishwashertoilet.com^ +||enlardungouty.cyou^ +||enlargementemergencyflank.com^ +||enlightencareerschronicle.com^ +||enlightenedmountain.com^ +||enlightenelevatorboycott.com^ +||enlistlingcodfudgy.cyou^ +||enlivenindex.com^ +||enlor.xyz^ +||enlvbrhejiami.online^ +||enmityclaspexperiments.com^ +||enmmcgtkxjhjy.space^ +||ennhtjzkuhjjw.online^ +||ennxeslzxsfyb.space^ +||enolatethurm.shop^ +||enolicchou.cyou^ +||enologychaosteen.qpon^ +||enormousgrievedsquall.com^ +||enosblurter.com^ +||enot.fyi^ +||enoughgushers.qpon^ +||enoughprosperabsorbed.com^ +||enouncemaggots.cyou^ +||enowinvict.cyou^ +||enpwguftxyrgv.online^ +||enquirysavagely.com^ +||enraged-contest.pro^ +||enragedcity.pro^ +||enragedeng.cfd^ +||enrageobesejan.com^ +||enrageperplexparable.com^ +||enragesumbonicusw.cyou^ +||enraptureminims.com^ +||enrfuklwccrp.com^ +||enroberbobscudwort.qpon^ +||enrtx.com^ +||ensainttosser.cfd^ +||ensignpancreasrun.com^ +||ensilesanolyte.cyou^ +||ensmwonhtzpdh.space^ +||ensosignal.com^ +||ensteepclem.cfd^ +||enstoolpart.com^ +||ensuresmn.cfd^ +||entailreprintfurnished.com^ +||entamedrabble.shop^ +||entaspectsofc.org^ +||enteraessoign.cfd^ +||enteringlacquergiant.com^ +||enterprises3001.com^ +||enterprises488.net^ +||enterprisestorepository.com^ +||enterpriseswith102.net^ +||enterpriseswithmetric.net^ +||entertainenslave.com^ +||entertainlavish.com^ +||entertainment3x.fun^ +||enthaitingshospic.org^ +||enthefeetofthea.org^ +||enthronediscovering.com^ +||enthusiasticfibreassembly.com^ +||enthusiasticinsanity.com^ +||enticeslabraspails.cfd^ +||entire-positive.com^ +||entiremain.com^ +||entjgcr.com^ +||entlyhavebed.org^ +||entoireboners.qpon^ +||entomicblowpitsidth.qpon^ +||entrainrpmvermil.cyou^ +||entrandingswon.com^ +||entrapsearwigs.shop^ +||entreatbeggar.com^ +||entreatyfungusgaily.com^ +||entrecard.s3.amazonaws.com^ +||entreesmoothstir.com^ +||entreguei.com^ +||entrepreneurnegativesupportive.com^ +||entropyjowsfunning.cfd^ +||entropysunbath.shop^ +||entrustfacileproficient.com^ +||enttecyclaneunjudge.cyou^ +||entterto.com^ +||entwithoughtsu.com^ +||enueduringhere.info^ +||enuredgaea.qpon^ +||enurnytankers.cfd^ +||enuwulwgsbicx.website^ +||envczfherlnzg.website^ +||envelopeallydespair.com^ +||envious-attention.com^ +||enviromengreen.cfd^ +||enviromentalspace.cyou^ +||environmental3x.fun^ +||environmentimpedimentthorny.com^ +||envlepcmsvhww.online^ +||envoymusicianpaid.com^ +||enwombssighing.com^ +||enwraptboteinruned.cyou^ +||enxjwxpa.com^ +||enyfyltscarvo.online^ +||enylhpdbexguq.website^ +||enzoneunultraperai.cyou^ +||enzonewarstle.com^ +||enztaeofhwwzb.site^ +||eoaextrglkylg.site^ +||eob9wz0y.xyz^ +||eobiontrepinquarto.qpon^ +||eobrbucbibbvt.website^ +||eobufdobeaxai.site^ +||eobuxpozkrmjm.online^ +||eobysuugjotmw.space^ +||eociugytvzhad.website^ +||eodnprwxgjixj.online^ +||eoejzyqfdmidn.space^ +||eoexrsrevolat.website^ +||eofqgwtzojvks.space^ +||eofwlnyaxwfqt.global^ +||eoglimegdapoh.site^ +||eohhehznagsqn.online^ +||eoievavdtucqs.online^ +||eojfxignjyzev.website^ +||eokbuxljvlfwm.space^ +||eoknzbxdujqff.website^ +||eondunpea.com^ +||eonwuljgmyjep.site^ +||eookanmfhqjkh.online^ +||eooprm7n3zhqc72y.cfd^ +||eoqsokfzdlzpp.website^ +||eoquzuxnjkjoh.online^ +||eoredi.com^ +||eorjhfkkbeiras.com^ +||eorkmgovqyswa.website^ +||eosinbesouth.com^ +||eosopqdrtglpx.online^ +||eostvofsqqsvi.site^ +||eousnkffnnbes.space^ +||eoxmqlvcylamr.online^ +||eoymwwdawroxg.website^ +||epacash.com^ +||epacrisbaloney.shop^ +||epajsxijrpzbh.online^ +||eparchyhalkefinagle.cfd^ +||epartoukfarepu.org^ +||epbssmpdthcsl.site^ +||epcugxkypwidroa.com^ +||epeiridmazilycotula.cfd^ +||epfpjvxydyxux.website^ +||ephagooky.qpon^ +||ephahpeakiernaither.cyou^ +||ephapsepli.shop^ +||ephesiansavvyinto.com^ +||ephoricpokily.cfd^ +||epicclicks.net^ +||epicenerepoint.shop^ +||epidemicfaithlesscoats.com^ +||epidemicoversleeppoet.com^ +||epidemybearpaw.com^ +||epidermispushupvariable.com^ +||epidermkerns.cfd^ +||epidzasjhnzoi.site^ +||epigontinny.shop^ +||epigynylirate.cyou^ +||epilaterepew.cyou^ +||epilfleshedbeelbow.qpon^ +||epiloggincorona.qpon^ +||epilogortyx.com^ +||epilovnncqduc.site^ +||epinaoibenjsecable.cfd^ +||epistlestipels.cyou^ +||epitelanewnessagunah.cfd^ +||epithemunreinhacking.qpon^ +||epito.xyz^ +||epitomeplungertowlike.qpon^ +||epizoaltapirs.cyou^ +||epjlfziryrpkg.site^ +||epldjrxblnvpa.store^ +||eplixxwmbkoqp.space^ +||eplkalblt.com^ +||eplrhascktu.com^ +||epnredirect.ru^ +||eponymysienite.cfd^ +||epoptesbake.shop^ +||eppsjynpsfvyy.store^ +||epqcgcxkfymlj.site^ +||epqqoygdlxiri.site^ +||eprgsfzkoakpj.site^ +||eprqryhpwjmox.site^ +||eprzdfplfxcki.website^ +||epthmgzgztzxt.online^ +||eptrpomofmqtx.website^ +||eptwm.com^ +||eputysolomon.com^ +||epwazedxpqxqz.space^ +||epwpsssmnituo.space^ +||epydpnbamknsf.online^ +||epyykiftqkufp.space^ +||eqads.com^ +||eqbkokxmxmyyg.space^ +||eqceidtikngos.space^ +||eqddkngvrgvkw.site^ +||eqflwqjdoucvm.space^ +||eqfqekkgkwpya.online^ +||eqgztqakyjron.online^ +||eqhpbxwjonvtq.site^ +||eqhvwwxtztvqi.website^ +||eqidtjiskmjoo.site^ +||eqilyppdackel.website^ +||eqizpgutcgers.online^ +||eqjrbxmpvetckjw.com^ +||eqkltgnbbygnv.website^ +||eqlzbrictopyi.space^ +||eqmlxrnvioogj.space^ +||eqnvddxleryews.com^ +||eqocincfsnhdx.online^ +||eqpaulxcpirir.site^ +||eqpmzcorwgnda.store^ +||eqpuvcjjipmjn.space^ +||eqrhjwucwwf.com^ +||eqrqlmjqwictz.website^ +||eqtwpbcssbyps.space^ +||equalfall.pro^ +||equarm.click^ +||equatorspitefulbilliards.com^ +||equilibriuminvite.com^ +||equinesavieinolith.cfd^ +||equirekeither.xyz^ +||equiremukentsi.org^ +||equitxhquqcqw.online^ +||equivocalmashingreseller.com^ +||eqviczq.com^ +||eqwcbhamlelcw.site^ +||eqwpyenbgseua.space^ +||eqxygxmutzlep.online^ +||era67hfo92w.com^ +||eradisciplinemomentary.com^ +||eralway.com^ +||eraschutedmisfire.qpon^ +||erasingrushberstel.qpon^ +||erateaster.cyou^ +||erbiscusysexbu.org^ +||erbqwgtbxifxz.online^ +||ercpurdyiaicp.space^ +||erdwas.com^ +||erebeefetid.com^ +||eredrubygsworlow.com^ +||ereedmadehimal.org^ +||erehollowcrave.com^ +||eremurichemis.cfd^ +||erestature.com^ +||erezzydxykqwk.space^ +||erganesavours.shop^ +||ergasiabenty.cyou^ +||ergasiamanius.cyou^ +||ergbohcywec.com^ +||ergent.xyz^ +||erggaxbuuevsw.site^ +||ergonomicparadeupstroke.com^ +||ergotinclaying.qpon^ +||ergsteopans.cfd^ +||erhkyebogpkfk.online^ +||erhlyvjhetcad.online^ +||ericasrcrachets.cyou^ +||ericiusblurtedcallat.cyou^ +||erikengager.shop^ +||eriuregkbzrbf.online^ +||erjmzyibsksrq.space^ +||erlfaabweilwi.website^ +||erlichepinkify.cyou^ +||erlnbioeizfsc.online^ +||ermrvglbpovnn.website^ +||ernebaroquebrodee.cfd^ +||ernementseconom.org^ +||erniphiq.com^ +||ero-advertising.com^ +||ero-cupid.com^ +||ero-match.site^ +||eroidere.com^ +||eromkfzhemkeo.space^ +||erovation.com^ +||erpupydeklzyp.space^ +||erpzllhibhdzv.site^ +||erqndwzejjkkc.online^ +||erranddealing.com^ +||errandfourteenthcatering.com^ +||erringgiggles.shop^ +||errors.house^ +||erseducationin.org^ +||ershniff.com^ +||ersislaqands.com^ +||erstartirreleas.com^ +||erstonordersity.org^ +||ertablisystation.org^ +||erthfeoveukrn.org^ +||erucaballers.qpon^ +||erucicnonparbhakti.qpon^ +||eruptedfusoidtwibil.cyou^ +||eruptpriority.com^ +||eruxjtbqruaep.site^ +||ervtdgkyqbsdd.website^ +||ervwyrdicmuvz.space^ +||erwknxujxxxbh.space^ +||erwtqfeyyhxgn.space^ +||erxnqfhkkjkzz.site^ +||erypnmwayaibe.space^ +||eryqgqkrcgpiv.online^ +||erysibeplote.shop^ +||erysilenitmanb.com^ +||erytheathrobnugae.cyou^ +||esamqfvcwtpib.site^ +||esawbynaavjmi.online^ +||escalatenetwork.com^ +||escarpssojasothic.cyou^ +||eschemicalco.org^ +||esclqnhxntiqt.site^ +||escorta-torino.study^ +||escortlist.pro^ +||escqyylhncg.com^ +||escrowunscaly.cyou^ +||escy55gxubl6.com^ +||esdiwevjvmcyw.website^ +||esemrvueskrke.site^ +||esesmyinteukre.org^ +||esfljmhdtpdvj.xyz^ +||esgwgsnrbevnb.website^ +||eshkol.io^ +||eshkol.one^ +||eshqskffhqaz.com^ +||esjoeuuzfgzsi.website^ +||eskimi.com^ +||eskimoseqence.qpon^ +||eskuarapatrol.shop^ +||eskuaratrowth.cyou^ +||esmzlhblkqsks.site^ +||esnqwiyhvuv.com^ +||espartoindicancrutch.cyou^ +||espayutnluzem.store^ +||espbrohujtbch.online^ +||espczhsztmuas.website^ +||especejetted.shop^ +||especiallybeforehand.com^ +||espionagenutshellclad.com^ +||espritsdotage.cyou^ +||esprqqcevyubd.store^ +||esrh-defender.pro^ +||esrhhahegznlj.website^ +||essedaauding.com^ +||essedacreatin.qpon^ +||essencereferencetummy.com^ +||essential-trash.com^ +||essentialmost.com^ +||establishedclevermatters.com^ +||establishscarcely.com^ +||estatsges.qpon^ +||estatueofthea.info^ +||esteemed-laugh.pro^ +||esteemfurytooth.com^ +||esthbgatdzgmn.store^ +||estimatedeferbulk.com^ +||estrepethralls.cfd^ +||estuousmoo.com^ +||esujpsusqcmnf.online^ +||esumsibhngetz.space^ +||esusaryproced.com^ +||esveabkwjvkcj.space^ +||esvsojlfyppbv.website^ +||esvunifeyiqhk.website^ +||eswfsinghtywb.website^ +||eswnaoudswvln.site^ +||eswpfkuwyovtm.space^ +||esxxcuyrkvnjj.site^ +||esydixdtagncd.online^ +||esyeqegjjxuwr.website^ +||esyopnuacdidw.site^ +||eszdvidrksqop.site^ +||esznfqrpeivdr.website^ +||etacismtire.qpon^ +||etatistreown.qpon^ +||etbbvbulyhyyo.space^ +||etbgc71fv2p3lor6cz.cfd^ +||etbtomrowbmji.website^ +||etcherrameousoutsulk.qpon^ +||etcmzkskguwyb.website^ +||etesianmarlinepicene.qpon^ +||etetxwdgqxufr.one^ +||etgetoexukprese.org^ +||etgfcciqtnjxw.website^ +||ethecityonata.com^ +||ethecityonatallcolu.org^ +||ethena.online^ +||ethenelotoses.com^ +||etheniccoarsen.com^ +||etherolincony.cfd^ +||ethicalfootball.pro^ +||ethicel.com^ +||ethicultimatum.com^ +||ethizeeuripusbaudery.cfd^ +||ethnicchristmassocks.com^ +||ethnogmoongpersue.cfd^ +||etiolinedwardstoons.qpon^ +||etivbuvltde.com^ +||etizxmcerpddd.com^ +||etjoeybjppksy.site^ +||etjrkgaqrkfad.space^ +||etjyvsglizfic.website^ +||etkybhmigxoyt.site^ +||etneanlaos.cfd^ +||etnxtlqhknmmb.space^ +||etpczpxzzjnsj.space^ +||etphoneme.com^ +||ettaletted.cfd^ +||etuiplucktuchit.qpon^ +||etuisveiner.cyou^ +||etukuqstzpkzz.space^ +||etvfomflpnciy.site^ +||etvurlcoygadl.site^ +||etwasternedarchit.cyou^ +||etwdpgjsvdqzk.site^ +||etwmijxejhqrr.site^ +||etxkzdcyewznp.website^ +||etxyhcxycpbql.space^ +||etyiteapleotz.space^ +||etykjagpflnlq.website^ +||etymictips.qpon^ +||etymonsibycter.com^ +||etzfcwsafuw.com^ +||eu8759jwcy6q6nw.rest^ +||eubobpzucyagl.online^ +||eubteyfzbwnqk.online^ +||euchresgabbart.cyou^ +||eucleidoban.cyou^ +||eucmlcosmfxyz.online^ +||eudemonsvante.shop^ +||eudevetig.cfd^ +||euezpnhisvvhl.online^ +||eufgvyywuqvquu.com^ +||eufnidveovlsj.online^ +||eugkpjjonhuts.space^ +||euhlsaozspotf.online^ +||euhuzwuzjpzsn.site^ +||euidbljssisql.website^ +||euj1nuwx4233c38cvk19ukle.cfd^ +||eukova.com^ +||eulaliapawns.qpon^ +||eulsfmojasxvd.online^ +||eulytinbeduke.cyou^ +||eumenidpetosfraser.cyou^ +||eumenidsapa.cfd^ +||eunicedells.cfd^ +||eunow4u.com^ +||euotwhsrizcnj.site^ +||euphoric-nature.com^ +||euphoricblow.com^ +||euphuescaamapaschal.cyou^ +||eupvygwytrdze.online^ +||eupzmvvsdgvmk.site^ +||euripisahidic.cyou^ +||europeanivanprestigious.com^ +||europeanplash.com^ +||euros4click.de^ +||eurytusmiterer.qpon^ +||eushjrobmizpj.website^ +||eusmdates.com^ +||eussiyvfjpqqc.site^ +||eussownwpyxdw.online^ +||eutecnimzptot.space^ +||eutgbfzcrepne.online^ +||eutociamonarda.cfd^ +||eutrwyskznqkn.online^ +||euwdsqkrxwhwu.online^ +||euxifwwuodhwx.website^ +||euznkzunuotfe.online^ +||ev7tw2puqz9luy.cfd^ +||evadereprimand.com^ +||evadesickness.com^ +||evaluationgrievedaudacity.com^ +||evangelsnag.cfd^ +||evanstubules.cyou^ +||evcustom-ad.xyz^ +||eveabberantprovide.com^ +||evendeprivation.com^ +||evendisciplineseedlings.com^ +||evenincompleteremarried.com^ +||evenoopyranyl.qpon^ +||eventabsorbedrichard.com^ +||eventsquiteclick.com^ +||eventuryremov.com^ +||eventweepinghoarse.com^ +||ever8trk.com^ +||everardcotland.cfd^ +||evercrucial.com^ +||evergreen-room.com^ +||evergreenagilezoo.com^ +||everlasting-inflation.com^ +||everlastingrisk.pro^ +||every-abuse.com^ +||every-broad.com^ +||everybodycreeduphill.com^ +||everydayhomeless.com^ +||everydowered.com^ +||everyview.info^ +||everywhererecorded.com^ +||evetideparodos.com^ +||evgberthedabater.cyou^ +||eviafiegoxsru.space^ +||evidencenulls.com^ +||evidentlystraighteneddecimal.com^ +||evilexchanged.com^ +||evilpdntjmjyq.space^ +||evilstrike.pro^ +||evisitedlr.shop^ +||evkjlmtnqwwcu.space^ +||evmdamxavzsgk.website^ +||evmyclkocfcnr.space^ +||evokeinexpedientfastened.com^ +||evopmncakdrrg.site^ +||evprikdjbw.com^ +||evuuiytrdkshg.website^ +||evxtwhslqddyy.website^ +||evxxkaaecmwgz.online^ +||evydkddccddiw.online^ +||evylputjibynd.website^ +||evynujgbglxzi.space^ +||evzhzppj5kel.com^ +||ewbvurkrbxspe.vip^ +||ewcrmziovfmfm.website^ +||ewcvrlnyqhnyw.online^ +||ewdbncrtwe.com^ +||ewdhzytwfkpq.com^ +||eweconciliate.com^ +||ewesmedia.com^ +||ewetrotreset.com^ +||ewfashuomphim.website^ +||ewfyuviawtnqv.website^ +||ewhbhpsapnlhz.site^ +||ewhonsmnejjpe.website^ +||ewhrmecyfrawl.space^ +||ewituhinlargeco.org^ +||ewlquufmakbne.website^ +||ewmtngxp.com^ +||ewosbbumveduj.space^ +||ewotranwrieqs.online^ +||ewounddebi.com^ +||ewplmwaplsicz.website^ +||ewrpuhqivvift.website^ +||ewruuqe5p8ca.com^ +||ewtenavy.cfd^ +||ewtivoqxdqmta.online^ +||ewutoxapaffqc.site^ +||ewwnmrvdkfasc.online^ +||ewwxz8jj24wyjng6wnzhinwu9xt.cfd^ +||ewygczamczrrf.space^ +||ewyjmkgvvtoxy.space^ +||ewyvuznndlmrk.online^ +||ex7wk49t7jxz4ei6mzztxbyf.cfd^ +||exacdn.com^ +||exactlyrutisland.com^ +||exalted-engineering.com^ +||exaltedsleep.com^ +||exaltesorgheoutvie.cfd^ +||exameneuscaro.shop^ +||examplehibernatescientific.com^ +||exasperatebubblyorthodox.com^ +||exbmlmrewmnd.com^ +||excafwcwlpevm.site^ +||excavatedefeatedshudder.com^ +||excavatenearbywand.com^ +||exceedinglyorangesclothe.com^ +||exceedinglyrefreshing.com^ +||exceedunited.com^ +||excellentpartialarm.com^ +||excellingvista.com^ +||excellojapanel.org^ +||exceptingpealstipulate.com^ +||excerngab.cfd^ +||exchmuzzlewhys.cfd^ +||excidekombu.com^ +||excitableknee.com^ +||excitableminor.com^ +||excitablepass.com^ +||excitead.com^ +||excitedassist.pro^ +||excitedgleamingrefrigerate.com^ +||excitedteam.com^ +||excitementeverybody.com^ +||exciting-meetcasual.com^ +||excitinginformscarrot.com^ +||exclkplat.com^ +||exclusive2010.net^ +||exclusivelearnt.com^ +||exclusivelyconsume.com^ +||excruciationaccident.com^ +||excuseduchess.com^ +||excuselift.com^ +||exdpsrmjidnh.com^ +||exdxgjgqdmfrw.online^ +||execbeggar.com^ +||executivehoroscope.com^ +||executors4app.com^ +||executorstonet.com^ +||executorswith620.net^ +||exemplahobbled.shop^ +||exemplarfederallithe.com^ +||exemplarpocketbookstore.com^ +||exemptgovernorinterdependent.com^ +||exemptray.com^ +||exenunegpxcyk.space^ +||exepahzmgwfiz.site^ +||exercecostean.cfd^ +||exercisepatronize.com^ +||exgrntvgdmflc.website^ +||exhumemealiemaux.cyou^ +||exicqhdkizyxx.website^ +||exilicdefuze.qpon^ +||exilingchiming.cfd^ +||exinariuminix.info^ +||existencemelting.com^ +||existencepawstest.com^ +||exists-mazard.icu^ +||exjsyuhjwjyzr.space^ +||exkgtbwoereyg.online^ +||exlexcrum.qpon^ +||exlrwgrhfqakc.site^ +||exlzgmwsnvdpf.space^ +||exmainclcknew.com^ +||exmwfltxyxwmr.website^ +||exo6lobcgyqr7nwh6w2vlg871q5.cfd^ +||exoclick.com^ +||exodosjaunty.cyou^ +||exodusjailhousetarantula.com^ +||exofrwe.com^ +||exogenydorperforbow.qpon^ +||exoletebeisa.shop^ +||exoletetumboa.shop^ +||exopodmulcts.cyou^ +||exosrv.com^ +||exostraaggros.cfd^ +||expandeddistressclient.com^ +||expandsbathingyork.cyou^ +||expandwhomjackal.com^ +||expectcnemisevoked.cyou^ +||expeditionbudgetlikely.com^ +||expeldurions.cfd^ +||expenddelusiondebris.com^ +||expendmeg.com^ +||expendtaping.com^ +||expendtheatres.com^ +||expensivelikeness.com^ +||experienced-usual.pro^ +||experiencedbat.com^ +||experiencedthought.pro^ +||experimentscalp.com^ +||expertinfluence.pro^ +||expertwhys.cfd^ +||expiredcyprian.shop^ +||expirevane.com^ +||explantglander.cfd^ +||explodclikmn.com^ +||explodeddeitycomparatively.com^ +||exploitsubdivide.com^ +||exporder-patuility.com^ +||exportseats.com^ +||exposepresentimentunfriendly.com^ +||exposeunspeakabledynamite.com^ +||exposuretigerphilip.com^ +||expressjustifierlent.com^ +||expsubmit.com^ +||exptlcires.qpon^ +||exptlgooney.com^ +||exptrncaaidhs.site^ +||expulsionelinorcorruption.com^ +||exqbxfzcrslqg.store^ +||exrcfdbcqiddp.space^ +||exrtbsrv.com^ +||exsectsroomscrater.cyou^ +||exsqboxjmdbgb.online^ +||ext-jscdn.com^ +||ext-offer.com^ +||extend.tv^ +||extendedcontaminaterigorous.com^ +||extendingreversionmotorcycle.com^ +||extendscudgel.qpon^ +||extensions-media.com^ +||extensionslightest.com^ +||extensiontowersapplause.com^ +||extensivetravelled.com^ +||extenuatemusketsector.com^ +||exteriorsingularsharply.com^ +||exterminatordesperate.com^ +||extinecockupsmatawan.cyou^ +||extinguishbethpasta.com^ +||extinguishsufferingsalty.com^ +||extortionbudnumerous.com^ +||extracloyingcyano.cfd^ +||extremereach.io^ +||extsoft.info^ +||extsuantdiallomon.com^ +||exucn.com^ +||exulsbmitdvzd.online^ +||exvcrrhwxtjuk.website^ +||exweuxkvvckho.website^ +||exxqwatyibrmj.site^ +||exxtended-access.com^ +||exzocglvthjxr.space^ +||exzumzcaqqdny.site^ +||ey3jun9c55oov13uwvhoozxmbu.cfd^ +||ey43.com^ +||eyaganyfyivhw.online^ +||eybrgoggcjkyl.website^ +||eycfdxhanqord.site^ +||eydyabfmfmnmb.site^ +||eyebrowbanisterspainkiller.com^ +||eyebrowcohabit.com^ +||eyebrowscrambledlater.com^ +||eyebrowsdated.com^ +||eyeimpersonal.com^ +||eyelessmamelon.com^ +||eyelessuniques.shop^ +||eyeletmaundsrimed.qpon^ +||eyelidgoggleundo.com^ +||eyelidslunger.cfd^ +||eyemncgeg4k9vuh1lpywkoq96.cfd^ +||eyeofporn.com^ +||eyeota.net^ +||eyereturn.com^ +||eyeshadowkeynote.com^ +||eyesurlyprecaution.com^ +||eyeviewads.com^ +||eyfq92zj54w12y.cfd^ +||eyhmhohuflljt.website^ +||eyiccxilrwhpm.site^ +||eyidtfpkxbbsl.website^ +||eyjlxrcpjuscy.website^ +||eylzypoaxzyjs.online^ +||eynol.xyz^ +||eyqsrrwmvhavp.website^ +||eyrewxoejzwer.website^ +||eytthwyiszpyd.site^ +||eyuufdyvvbosk.website^ +||eyvhbtkllduvg.online^ +||eyvpwdldzzrbk.space^ +||eywfrgacrxglz.online^ +||eywikbfstrckw.space^ +||eywkdpzpyggcq.site^ +||eyxafvqxebmxc.space^ +||eyyejsherkfws.online^ +||eyyhsmsvymolw.online^ +||ezcgojaamg.com^ +||ezexfzek.com^ +||ezgbwivfmqbgl.website^ +||ezjmloikdudsf.online^ +||ezliqxvrpuwds.site^ +||ezmob.com^ +||ezmynhelkwhph.online^ +||ezpweunhdhtri.site^ +||ezqwxikpalwrk.website^ +||ezsbhlpchu.com^ +||ezsjmzeb.com^ +||eztfcipknmgpk.online^ +||eztjpigieaokv.site^ +||eztomplopxvqp.site^ +||ezvijslewvvhu.store^ +||ezvtaxxurcgdi.website^ +||ezvtfyjvrdbzx.site^ +||ezvthdrknbfad.space^ +||ezwaesiygabzn.online^ +||ezxkarybihqoo.space^ +||f07neg4p.de^ +||f18ddd0d1a.com^ +||f19062be44.com^ +||f1ce24f962.com^ +||f1dzpr7j.xyz^ +||f247dab479.com^ +||f270fefbd3.com^ +||f2a31b0912.com^ +||f2y614fgbferjcobk.cfd^ +||f308e80f54.com^ +||f30fpad7.xyz^ +||f34aabcc0e.com^ +||f351966262.com^ +||f418509b38.com^ +||f435ee855c.com^ +||f4beqf84lp61k1qe9heq2.cfd^ +||f4c317673b.com^ +||f586988d17.com^ +||f58f91e5cb.com^ +||f5jmetugzxrkhk.cfd^ +||f65qplod.xyz^ +||f680e0bdca.com^ +||f761efe176.com^ +||f792df8437.com^ +||f7dcc97ce6.com^ +||f85fd721ad.com^ +||f872a92355.com^ +||f8c00ef6a5.com^ +||f8d24e6505.com^ +||f8q4irok4twpemcqccbibitmt1b7bxlm2z.cfd^ +||f8utp9hqco37j65p21km.cfd^ +||f921e4caa3.com^ +||f97feec1b5.com^ +||f9c42cfe0d.com^ +||f9exj474rg8l5lzfbg5y3i5wik3.cfd^ +||f9fcbj14n43571r45tg7.cfd^ +||f9pfh5emg2enn6tl6rp9om95p.cfd^ +||f9xz5yx9968np9825yw6t7w27xvb.cfd^ +||fa7e69f2d7.com^ +||fa85cadfb0.com^ +||faaghupwithrd.space^ +||fabkmopsppttt.website^ +||fable-assets.click^ +||fabricporridge.com^ +||fabularepine.cyou^ +||fabularsetoffdeers.cyou^ +||facesjct.cfd^ +||facesloopierautoman.cfd^ +||facesnotebook.com^ +||facettebogyismtraik.cyou^ +||facheicuropapon.com^ +||faciadambrod.cyou^ +||facialleaflet.com^ +||facilewhiteruinous.com^ +||faciliatemate.com^ +||facilityannounced.com^ +||facingostensible.com^ +||facingturtle.com^ +||facisespess.com^ +||fackhfindvaqz.space^ +||faconneorateguttus.cfd^ +||factories2048.com^ +||factories93.net^ +||factorieswithear.net^ +||factsheetgrievancekeg.com^ +||facultativethus.com^ +||facultycoffeehouseharp.com^ +||facxqniewyxym.site^ +||facxsfbnusxhn.online^ +||fadegranted.com^ +||fadesunshine.com^ +||fadexplosion.com^ +||fadppvjumphyh.online^ +||fadsipz.com^ +||fadskis.com^ +||fadslimz.com^ +||faecespheny.cfd^ +||faenasthereoflalo.cfd^ +||fafflecyprid.shop^ +||faffylocusca.shop^ +||fafwubji.com^ +||fafxuylrwwnxg.online^ +||fagaldplaided.cyou^ +||faggerlazar.cyou^ +||faggrim.com^ +||fagotybirodo.cfd^ +||fahrenheitpastesocket.com^ +||fahrenheitshippingquandary.com^ +||fahrenheittoneclaim.com^ +||failedapartment.com^ +||failedfrustratingthesis.com^ +||failedploy.com^ +||failingforce.pro^ +||failingrole.pro^ +||faintestlogic.com^ +||faintgas.com^ +||fairfaxbillion.com^ +||fairfaxpleasedmigrant.com^ +||fairlyleadingenquiry.com^ +||faithful-yard.pro^ +||faithfuldifficulty.com^ +||faithfulevening.com^ +||faithfullyreadiness.com^ +||faithlesscourtroom.com^ +||faiverty-station.com^ +||fajgsfxol.com^ +||fajkyofaxhdvo.website^ +||fajunukjdyjnp.online^ +||fake-square.com^ +||fakedaneuch.cyou^ +||fakirskosotema.cfd^ +||falconduties.shop^ +||falconsanywiseunmaze.cfd^ +||falcopeacing.com^ +||falhcegbmvooc.site^ +||falkag.net^ +||falkwo.com^ +||fallertorfel.cfd^ +||fallinmatches-paradises.com^ +||fallowdoll.cfd^ +||fallowrationyew.qpon^ +||fallsceriapanter.cfd^ +||falsestbumwood.shop^ +||falsifymagpieopenminded.com^ +||falsifyprobable.com^ +||faltertshirt.com^ +||falyterbzvxks.site^ +||fam-ad.com^ +||familiarduchessfrequent.com^ +||familiarpyromaniasloping.com^ +||familyborn.com^ +||fancyprescribeperplex.com^ +||fancyresponse.com^ +||fancytravelingrid.com^ +||fancywhim.com^ +||fandomsalauntapathic.cyou^ +||fanegasinflue.shop^ +||fangmoonlight.com^ +||fantabro.com^ +||fantasticclosing.com^ +||fantasticcommunity.com^ +||fantasytripart.cyou^ +||fanza.cc^ +||faobdrpumevmc.website^ +||faozkbjgxvdjh.online^ +||fapesmopeage.qpon^ +||faptdsway.ru^ +||faraway-economics.com^ +||faraway-pool.pro^ +||farawayamber.com^ +||farcersacetals.cfd^ +||fardasub.xyz^ +||fardelsacoelaswans.cyou^ +||farecnicus.qpon^ +||farewell457.fun^ +||farewellvastly.com^ +||farewesbeginnyw.com^ +||farfettinnily.cyou^ +||farflung-permission.com^ +||farflung-switch.com^ +||fargwyn.com^ +||farleulearierbasally.cfd^ +||farlmarc.cyou^ +||farmingrebused.cfd^ +||farnessowenian.cyou^ +||farosdidal.shop^ +||farragorelineversus.cfd^ +||farriercategoryidentifier.com^ +||farseermalloy.cfd^ +||fartmoda.com^ +||fascespro.com^ +||fascialcippusbulkin.qpon^ +||fascismmuchly.shop^ +||fascparbate.com^ +||faselsdoilies.cfd^ +||fashionedstrengthen.com^ +||fasoptima.shop^ +||fastapi.net^ +||fastblow.com^ +||fastcdn.info^ +||fastclick.net^ +||fastdntrk.com^ +||fasterinexperiencedsled.com^ +||fastidiousenvoy.com^ +||fastidiousforesterfirearm.com^ +||fastidiousilliteratehag.com^ +||fastidiouso.com^ +||fastincognitomode.com^ +||fastinglefties.qpon^ +||fastishequinia.com^ +||fastlgtrk.com^ +||fastnativead.com^ +||fastwavehilltop.com^ +||fatal-mouse.pro^ +||fatal-package.pro^ +||fatal-scratch.pro^ +||fatalityplatinumthing.com^ +||fatchilli.media^ +||fathmurskewed.cfd^ +||fathomderelict.com^ +||fathomexplodedreluctant.com^ +||fatigueboisterousrequisite.com^ +||fatiguemataspiration.com^ +||fatiguerecipes.com^ +||fatlikeepaulerigling.cyou^ +||fatlingovulist.qpon^ +||fattenspopulum.com^ +||fattydisgustinghusband.com^ +||faucetfiling.com^ +||faucetsuperficialalternative.com^ +||faughwample.qpon^ +||faultlying.com^ +||fauyntrhfdiwq.website^ +||favmaqyqgcirx.space^ +||favorite-mine.com^ +||favourableafter.com^ +||favourfeeble.shop^ +||fawgsjeeidnjp.space^ +||faxbfxhkdjoma.icu^ +||faxesresever.cfd^ +||fayprjmlhxpnl.website^ +||fazanppq.com^ +||fb-plus.com^ +||fbappi.co^ +||fbarhjryimocq.website^ +||fbbjzowgnryzw.site^ +||fbcdn.xyz^ +||fbcdn2.com^ +||fbdata-edt.com^ +||fbdjpebrvocxf.website^ +||fbehdqvxrjluq.website^ +||fbennkjazspnf.site^ +||fbetlixgee.eu^ +||fbfejxqozbxrc.site^ +||fbispdrlpngqv.space^ +||fbjnxftggjpwa.website^ +||fbkxhltufvarpj.com^ +||fblndqobxs.com^ +||fblokpnjiwfgkt.com^ +||fbnimeaujrbup.website^ +||fboirhttd.com^ +||fboxiumttqayd.space^ +||fbqdliygkvahw.online^ +||fbqhhioxipvfn.space^ +||fbrojczjqlcxh.online^ +||fbthiaiy.com^ +||fbulmykkqnp.com^ +||fbwtqsajsuuji.store^ +||fbyopnuezvbvp.website^ +||fbzejskmlkqln.site^ +||fbzqfomrzgudj.online^ +||fc2-ppv.xyz^ +||fc2plus.site^ +||fc89e6593f.com^ +||fcbelch.shop^ +||fcbnrvfhrouqx.website^ +||fccinteractive.com^ +||fcciyjcrcopsw.online^ +||fcdkunwirrc.com^ +||fcf18679b7.com^ +||fcfgnzaozklfp.space^ +||fcgfwjaxlwvamvw.com^ +||fcifaypfepfvy.space^ +||fcihsspotzgrd.site^ +||fckhwsfvgsebk.website^ +||fclgjprhbvbhjkp.com^ +||fcmsplqtivmls.space^ +||fcnbkyzloyfgx.site^ +||fcnhjomrydsct.website^ +||fcocekug.com^ +||fcopqjfgfdzvv.online^ +||fcqkfnxepdhrq.love^ +||fcqrzagadhlvn.online^ +||fcqxpfnznomxj.website^ +||fcqyovdhaayll.space^ +||fcqzufbjogbkj.store^ +||fcrfxxxydltzy.store^ +||fcryingforanythin.org^ +||fcswogrcyplcs.space^ +||fctpkherkgpk.com^ +||fctuxsuitasid.website^ +||fcvqvetrmo.com^ +||fcvxmhtpvpuld.space^ +||fcwdsidinixoz.website^ +||fcxbs.com^ +||fcxxffvjrztgz.space^ +||fcyetcher.shop^ +||fd2722b11f.com^ +||fd5237eac5.com^ +||fdbdzwnpffxcg.space^ +||fdbepwymahhfi.website^ +||fdbxvbmowcgxu.space^ +||fdc99e538f.com^ +||fdc9cefe70.com^ +||fdcfbvikm.com^ +||fddfucdqzoypi.site^ +||fdfuhymycyhuc.online^ +||fdhaptzvzyukn.space^ +||fdkczgxuiugvb.website^ +||fdnamecruck.cfd^ +||fdnaylrjswdud.space^ +||fdoepehritanm.site^ +||fdpmvwlxjszfv.space^ +||fdqzywhgrvgmo.store^ +||fdswbmxtmgqc.com^ +||fdtjqhedabctlla.com^ +||fdwuennujgxvf.online^ +||fdxouczcmbwti.store^ +||fdzppmrptuxpm.site^ +||fe7qygqi2p2h.com^ +||fe8171c761.com^ +||feadrope.net^ +||fearful-forever.pro^ +||fearinvulnerablediagnosis.com^ +||fearless-discipline.com^ +||fearlessface.pro^ +||fearroqkapomt.online^ +||fearverify.com^ +||feasibledecisiveasserted.com^ +||feasibleunpredictable.com^ +||feastgiddybleeding.com^ +||feastlywote.shop^ +||featishbethormigo.qpon^ +||featuregangster.com^ +||featurelockout.com^ +||febeb.xyz^ +||febflqfojuqdqm.com^ +||febresescuela.qpon^ +||febriletanzy.shop^ +||februarybogus.com^ +||februaryinjectionproudly.com^ +||februaryparent.com^ +||febto.xyz^ +||fecgibbose.qpon^ +||fecialvipery.cyou^ +||fecketrache.cyou^ +||feckfulmisaver.com^ +||fecksrexine.com^ +||fecmedine.cfd^ +||fecundlazaryhookah.cyou^ +||fedhjihhllyfy.online^ +||fedirresponsibilityface.com^ +||fednrubious.cfd^ +||fedoq.com^ +||fedreferawake.com^ +||fedvdikxaazlp.space^ +||fedykr.com^ +||feebeshod.cfd^ +||feebphaseunusance.qpon^ +||feechnyfafdgq.online^ +||feed-ads.com^ +||feed-xml.com^ +||feedbackadmiralfortnight.com^ +||feedbinjabsfewter.qpon^ +||feedingflax.com^ +||feedyourheadmag.com^ +||feeingshortia.cfd^ +||feelresolve.com^ +||feelsjet.com^ +||feelssunkcredential.com^ +||feerieense.cyou^ +||fefezjvaxkoqi.website^ +||fefrkjfxxazpp.store^ +||fefupklsamwme.online^ +||fegent.xyz^ +||fegg37mtpm6h55.rest^ +||fegori.xyz^ +||fegsteledus.shop^ +||fehlqppruztrc.site^ +||fehwrxesresiw.store^ +||fehywszbbvlpr.online^ +||feica911.com^ +||feignbindwanted.com^ +||feignoccasionedmound.com^ +||feijsojvphjqh.online^ +||feilbeclaw.com^ +||feiwxitqwnv.com^ +||fejwweqjtndwz.site^ +||fekspkhytsivw.website^ +||feline-fortune.pro^ +||felineenarch.shop^ +||fellatedrumly.cyou^ +||fellfortunatepassive.com^ +||fellingwissel.cyou^ +||felllilyforegoing.com^ +||fellowearnwave.com^ +||fellowshiplyricsceasless.com^ +||felor.xyz^ +||feltyrewoken.cfd^ +||felwnnkhshnqt.com^ +||femalehunt.pro^ +||femalepostin.shop^ +||femaleseikonesmassifs.cyou^ +||femalesfellowship.com^ +||feminineconsequence.com^ +||fempjfqhpylty.space^ +||fenacheaverage.com^ +||fencersoctoid.cfd^ +||fendersgaily.com^ +||fenitehugh.shop^ +||fenixm.com^ +||fennicihoopoes.shop^ +||fenoofaussut.net^ +||feodalfrotparbate.cfd^ +||feoveukrnmento.org^ +||fepqwzejwtlmx.online^ +||feqgpykeuppfi.space^ +||feqriiemuqxis.online^ +||feqwggxdibzmq.online^ +||ferbamsripupoleines.cfd^ +||feresroom.com^ +||ferinetyloma.cyou^ +||fermaltutele.cyou^ +||fermolo.info^ +||ferncrawmtimist.cyou^ +||fernedalogy.cyou^ +||ferntravelleddeduct.com^ +||ferocitycandour.com^ +||ferrashagonistsotweed.cfd^ +||ferricvalvula.cyou^ +||ferrypoemet.com^ +||fertilehybridsstep.com^ +||fertilisedconductiveplank.com^ +||fertilitywailceramic.com^ +||fervcbytncxaj.icu^ +||fervorsixtiesveteran.com^ +||ferziendfljud.site^ +||fesecrxmwowzq.site^ +||fespnfwrcdgpv.website^ +||fesselylimbate.cyou^ +||fessoovy.com^ +||festivalcasketfrench.com^ +||festivalpronoundeserve.com^ +||festtube.com^ +||fetchlately.com^ +||fetclarity.qpon^ +||fettersbatties.qpon^ +||fetusphytome.cfd^ +||feuageepitoke.com^ +||feudalbetrayalcast.com^ +||feudalrival.com^ +||feudistteuch.cyou^ +||feuillearcs.cyou^ +||feverfreeman.com^ +||feversfewmand.com^ +||fevfmquikbacu.online^ +||fevilsor5.net^ +||few-politics.com^ +||fewergkit.com^ +||fewinhaleewe.com^ +||fewmodel.pro^ +||fexolxgvbnhvu.store^ +||fexyop.com^ +||feybeahwffvzt.website^ +||fezdwpqjvmccw.space^ +||ff1232f5f3.com^ +||ff12e2369d.com^ +||ff2528e9d8.com^ +||ff31fdce72.com^ +||ffbdatxllaeco.website^ +||ffcnjt9y5bin1k.rest^ +||ffdlzdsluvwjn.online^ +||fff3cd7d36.com^ +||ffhuaiwestbtl.site^ +||ffjrpdfduteic.website^ +||ffjzmuwqcpdsq.online^ +||ffpmlheychmat.store^ +||ffqumyjlunpga.online^ +||ffrfkhcxeypbe.website^ +||ffskgnxhhnqaf.website^ +||ffsrxeamzwtsl.website^ +||fftvarabrusqk.website^ +||fftwljklhkigm.site^ +||ffuavtlceo.in^ +||ffuonqdlvkdpm.online^ +||ffvbchqj.com^ +||ffvdkfnqfcbhl.space^ +||ffwmijupxxcda.online^ +||ffzljtcftssxn.space^ +||fg1focl77h2obu.cfd^ +||fgdubihoojote.online^ +||fggjrptybynnt.space^ +||fggovwtouynec.site^ +||fggxupklylewk.online^ +||fghpitdrwjbbr.space^ +||fghwqfybjktvq.space^ +||fgilpsxltypf.com^ +||fgkxluxqgpzzm.xyz^ +||fglee.com^ +||fgllllfedeltb.website^ +||fgnvnqsoqehlp.space^ +||fgogvhrrwslfk.online^ +||fgoqfrzcwdmrh.online^ +||fgqymntnqmcby.website^ +||fgqyxgbqfxyot.website^ +||fgsuxvboquxjg.website^ +||fgtpvheoxosfk.site^ +||fgxllefnphgtu.site^ +||fgxsmuyzcrshu.space^ +||fgxuxjsfbhhnd.space^ +||fgyhvzvoxlyvs.space^ +||fgzczmbjzeqfi.space^ +||fgzjcspcnzrhf.store^ +||fh-wgt.com^ +||fh259by01r25.com^ +||fhchwuqg.com^ +||fhgdtphvguxll.website^ +||fhgh9sd.com^ +||fhgn1ccweypng1.rest^ +||fhgxsfytivllj.space^ +||fhhteiaunxbvp.online^ +||fhiwovtlph3jkg6vmjezwjovp.rest^ +||fhjhcrmwbgvkz.website^ +||fhjtxjyqnijba.space^ +||fhktaryvtgnaw.store^ +||fhlalggotbpx.com^ +||fhodizssguipg.store^ +||fhoegaomuumuz.online^ +||fhoodmdcbyqxt.online^ +||fhorrhvymc.com^ +||fhphtzpznhgen.website^ +||fhpsuesupqexi.store^ +||fhqoiuoceycun.space^ +||fhrhakpangapt.space^ +||fhsgntrgjtioc.online^ +||fhslwakwmubsi.space^ +||fhsy5atr.xyz^ +||fhtpntevoiojz.online^ +||fhu1vzay.xyz^ +||fhvfd.com^ +||fhvgpbmarnsjv.website^ +||fhxgezqysdmtg.online^ +||fhxyofvlnthdu.site^ +||fhytqgxyygeay.space^ +||fhyxomiufvuvx.online^ +||fhziaqcpjvoky.space^ +||fiafydmfzzsul.space^ +||fiantviandetecla.cyou^ +||fiatdodoesliz.qpon^ +||fiatgrabbed.com^ +||fibbooze.com^ +||fibclrdoopiuv.online^ +||fibendlesslydecoction.com^ +||fibredelivery.com^ +||fibrincdrstroud.cfd^ +||fichatgriseravine.cyou^ +||ficklerjain.cfd^ +||ficmxrutlrhig.store^ +||fictionbusinessmensoloist.com^ +||fidar.site^ +||fiddedzakkeu.qpon^ +||fiddlestructureparadise.com^ +||fiddleyhigdon.com^ +||fiddlydruxy.qpon^ +||fideismfunning.cfd^ +||fidelitygenerationsmistletoe.com^ +||fideusitate.cfd^ +||fidgedimine.qpon^ +||fidgesbabuma.cfd^ +||fidgethid.com^ +||fidijykiinczk.site^ +||fidoeustbwadqi.com^ +||fieldedtieback.cyou^ +||fieldtinypirate.com^ +||fiendchewing.com^ +||fiendlyoxhouse.cyou^ +||fierierghoster.cyou^ +||fiestlxsufwl.com^ +||fiexpectthat.org^ +||fifedpasewa.cfd^ +||fifubhqxlrokg.online^ +||figgedamnesia.cyou^ +||figgierfalashalav.cyou^ +||figglefodge.com^ +||fightingdesert.com^ +||fightingleatherconspicuous.com^ +||fightmallowfiasco.com^ +||figocjidpbloj.website^ +||figuredworrying.com^ +||figvdxrpxreta.space^ +||fihyvvytdoxcwb.com^ +||fiidixggxzijr.site^ +||fiidmzwfmvz.com^ +||fiizbmjzykchn.website^ +||fijianbursar.cfd^ +||fijxiibbkdr.com^ +||fikegamone.cfd^ +||fikrwawpiz.in^ +||fikshvoprcesm.website^ +||filamentthree.com^ +||filasofighit.com^ +||filetarget.com^ +||filetarget.net^ +||filicalceders.shop^ +||filingcarnivorousexclaim.com^ +||filipposicken.com^ +||filletfiguredconstrain.com^ +||filliesmemoire.cfd^ +||filllocate.com^ +||fillockflus.shop^ +||fillpoliteness.com^ +||fillybode.cyou^ +||fillydrachma.cfd^ +||filmderange.shop^ +||filmingazulineflamens.cyou^ +||filthyasale.cfd^ +||filthybudget.com^ +||filthygracefulspinach.com^ +||filthyrankscuffle.com^ +||filweixnycglr.space^ +||fimony.xyz^ +||fimserve.com^ +||fin.ovh^ +||financialfadinglobster.com^ +||financialgobetweendancer.com^ +||financiallyawelessaweless.com^ +||financialwagerepel.com^ +||finanvideos.com^ +||finchbouilli.com^ +||finchoiluntainted.com^ +||find-girls-now.com^ +||findandate.com^ +||findbetterresults.com^ +||findcompere.com^ +||finddatinglocally.com^ +||findershaggai.qpon^ +||findingexchange.com^ +||findmatchhub.com^ +||findromanticdates.com^ +||finds-girls-junction.com^ +||fine-specialist.pro^ +||fineaffluent.com^ +||fineeravistiderip.qpon^ +||finescanopid.cfd^ +||finescocoasfoliar.cyou^ +||finessebaitsupply.com^ +||finewedcaserns.com^ +||fingalwaggondilling.cyou^ +||fingercough.xyz^ +||fingerrealistic.com^ +||fingrampalaversandra.cfd^ +||finished-storage.com^ +||finisheddaysflamboyant.com^ +||finisheddisdainsmug.com^ +||finishedneat.com^ +||finishedwindscreen.com^ +||finishingrex.com^ +||finishtories.qpon^ +||finjanwollop.qpon^ +||finnermahmudi.qpon^ +||finniertalio.qpon^ +||finnycannonaudubon.cyou^ +||finreporter.net^ +||fiorewonyhade.online^ +||fiorinkebbuck.cyou^ +||fipnhbnfbwxhc.site^ +||fipnvuixbrwuv.space^ +||fippleslappic.shop^ +||fipqcyechylid.online^ +||fiqpkrqfrnpxn.space^ +||fireboyeschews.cyou^ +||fireplacedecency.com^ +||firewall26000.com^ +||fireworkadservices1.com^ +||fireworkswad.com^ +||firm-twist.com^ +||firmitysubgbiga.cfd^ +||firmwareout830.net^ +||firmwarrior.com^ +||first-rate.com^ +||firsthandlake.com^ +||firstlightera.com^ +||firstlyignorantbasis.com^ +||firstosama.com^ +||firtaips.com^ +||firvmamosigpu.website^ +||fiscalexplanation.com^ +||fisddlapfuife.website^ +||fishermanwithavenge.com^ +||fisheyeformols.cyou^ +||fishfulraylet.com^ +||fishilytrisomy.shop^ +||fishinghandcuff.com^ +||fishingslaplobby.com^ +||fishymonster.com^ +||fiskaqqjajwqv.website^ +||fissileeneuchsupples.cyou^ +||fistevasionjoint.com^ +||fistpoke.com^ +||fitnesseternalsignificant.com^ +||fitnessflashyhopeless.com^ +||fitsagitateacid.com^ +||fitsamongst.com^ +||fittitfucose.com^ +||fiumarascends.cyou^ +||fivalgsy.com^ +||fiwekmyzlnvjx.site^ +||fix49c51ngekigr8n.cfd^ +||fixatifslinger.com^ +||fixdmatijr.in^ +||fixedcage.com^ +||fixedlyfully.com^ +||fixedname.pro^ +||fixedopening.com^ +||fixeswavycultural.com^ +||fixingcreepingstarter.com^ +||fixiongoodbys.cfd^ +||fixionhyleg.cfd^ +||fixpass.net^ +||fiyvmhrvifbepi.com^ +||fizzyacerbitymellow.com^ +||fjeamibbbhxuf.site^ +||fjhqfcgfahfhw.site^ +||fjjdwjwtfnouy.website^ +||fjmuoavraiszj.space^ +||fjorgynglimpse.cyou^ +||fjpimtjjtdobs.website^ +||fjpqxokekvgak.website^ +||fjprxkjxvzagy.online^ +||fjqfdwtdahpte.space^ +||fjsmzymmzjyck.online^ +||fjtunrifig.com^ +||fjtvobmsspten.online^ +||fju2pj8y65w1cujl8n8qupp.cfd^ +||fjutxytvnrfxl.site^ +||fjwbmyepraejl.site^ +||fjwdlijdyntkc.store^ +||fjwdygativowy.space^ +||fjwhpouzlllfh.space^ +||fjxcgyfkyktoj.space^ +||fjxiqjmutcgqo.store^ +||fk5lv2qyqoclnk.rest^ +||fkbaqpqaptiid.site^ +||fkbbaseodqexz.site^ +||fkblbasqbmxvx.space^ +||fkbwtoopwg.com^ +||fkczwsqlpdokj.online^ +||fkdwmpbpsggha.online^ +||fkgpewlsrzwiu.website^ +||fkhqplyxmaafw.space^ +||fkhwblrosnlrc.space^ +||fkiuklhqe.com^ +||fkjcuovnhzaaz.love^ +||fkklcqmeqoerb.space^ +||fklfsnsaeijok.space^ +||fkozajhehnjjt.store^ +||fkqfsenwhfhge.online^ +||fkqupdyajllgx.website^ +||fkrwxzvxljbyh.website^ +||fksnk.com^ +||fkuotemqjqirnv.com^ +||fkvbhtjlwpyep.site^ +||fkwlwfjlavrcb.online^ +||fkwyacjudejyf.store^ +||fkydrcmyucibm.space^ +||fkyelofoqnndn.space^ +||fkysfnkphrljo.site^ +||fkzcrofqtjawk.space^ +||flaconshe.qpon^ +||flagads.net^ +||flaggynasi.com^ +||flaggyturse.cfd^ +||flagsportclamour.com^ +||flagstonefoundingmonotype.com^ +||flahjmplwrzgc.space^ +||flairadscpc.com^ +||flamboyantdescription.com^ +||flamboyanthopefully.com^ +||flamboyantideal.pro^ +||flamenshotdogsancylus.cyou^ +||flameordinaryhonours.com^ +||flamesgleamed.com^ +||flamingloweredchuckled.com^ +||flammedpairing.qpon^ +||flanfogger.shop^ +||flangediscern.cfd^ +||flangrowler.shop^ +||flanksbajoire.cyou^ +||flanshygeiancharlet.qpon^ +||flappetwisket.cyou^ +||flaprotatewedge.com^ +||flapsoonerpester.com^ +||flarby.com^ +||flareddebars.cfd^ +||flaredishwater.com^ +||flashb.id^ +||flashedmarliarmsize.qpon^ +||flashingicicleset.com^ +||flashnetic.com^ +||flashy-lawyer.com^ +||flasquemate.cyou^ +||flat-ads.com^ +||flatjeep.com^ +||flatletgoggafeedbin.cfd^ +||flattendollar.com^ +||flattenpliable.com^ +||flattermonumentsbarren.com^ +||flattervillage.qpon^ +||flauchtcajon.qpon^ +||flaunchmohairs.qpon^ +||flaviahackia.shop^ +||flawslightestvariability.com^ +||flaxentwice.qpon^ +||flayfarinas.qpon^ +||flayingjuffer.qpon^ +||flaytewed.cfd^ +||flbankqyiqdmu.site^ +||flbgjqtmvlbvq.site^ +||flcspboszvfym.space^ +||fldlnileuinni.online^ +||fleamx.com^ +||fleckystalk.qpon^ +||fledgereviver.cyou^ +||fledparticipantmodeling.com^ +||fleethappened.com^ +||fleetingtrustworthydreams.com^ +||flepquix.com^ +||fleraprt.com^ +||fletchmoirberwick.cyou^ +||flexlinks.com^ +||fleysingers.cfd^ +||flfazfrdjpntc.website^ +||flflntsnkstie.online^ +||flfmmxdfhdisj.online^ +||flfsoqkileuin.website^ +||flgdaoepeuiqs.store^ +||flgxixtl.com^ +||flhimqjbg.com^ +||flhqfdjmltoue.site^ +||flhtfxbakyelu.space^ +||flickerbridge.com^ +||flickerfailing.com^ +||flightglancing.com^ +||flighttraditional.com^ +||flimpcaphsouper.qpon^ +||flimsy-beat.com^ +||flimsyheadstone.com^ +||flimsyprivilegehaunted.com^ +||flingforyou.com^ +||flingrearray.qpon^ +||flingyhircine.qpon^ +||flintarchedsignature.com^ +||flintdepreciate.com^ +||flintedquickedfugara.qpon^ +||flipool.com^ +||flippantdamnderived.com^ +||flippantpoetry.com^ +||flippanttale.com^ +||flirtclick-matches.com^ +||flirtgirles-romances.com^ +||flirtjazz.com^ +||fliskypizztidyism.cyou^ +||flitingtincts.cyou^ +||flittedtartago.qpon^ +||flixdot.com^ +||flixtrial.com^ +||flkupptocslqt.site^ +||fllmnnjbyvylf.website^ +||flmpufjijzyua.store^ +||flncauuqak.com^ +||floatercarcangruffed.qpon^ +||floatingpresentedshopping.com^ +||flocfusxiquiz.store^ +||floeyhaycartcrinkle.qpon^ +||floodingonion.com^ +||flooeylimbate.cyou^ +||floordelirious.com^ +||flooredviscount.com^ +||floozybalkish.com^ +||floralrichardapprentice.com^ +||florlatticetunable.qpon^ +||florulaplumose.cfd^ +||flossiegorcrow.com^ +||flotforamenjilted.cyou^ +||flotsamreinter.qpon^ +||flourishexcellent.com^ +||flourishingscreencousin.com^ +||flourpeacefully.com^ +||floutsunfalse.shop^ +||flower-byte.com^ +||flowersirena.shop^ +||flowinghypuralcincha.cfd^ +||flownetexpress.com^ +||flowpanlive.com^ +||flowsearch.info^ +||flowwiththetide.xyz^ +||floxical.com^ +||flrdra.com^ +||flsbddxrhtufb.website^ +||flsjgpqtrtzhn.site^ +||flsrv.net^ +||flteenqcxtpsv.online^ +||fltncahdyfesx.online^ +||fluavildemist.com^ +||fluctuateallcape.com^ +||fluedkunzite.cyou^ +||fluedraguly.cyou^ +||fluentconstruefeet.com^ +||fluentdifferenceselfemployed.com^ +||fluentlyfeminineenfold.com^ +||fluese.com^ +||flueulster.cfd^ +||fluffy-host.com^ +||fluffy-management.com^ +||fluffyaltarrecords.com^ +||fluffyslide.pro^ +||fluffytracing.com^ +||flugscazf.com^ +||fluidbagfulwag.com^ +||fluidsdwyka.cfd^ +||fluiyhtncueau.store^ +||flukierzonitesbidri.cfd^ +||flumedkidnaps.cfd^ +||flungperformgirlfriend.com^ +||flurrrooklet.qpon^ +||flushpersist.com^ +||flusoprano.com^ +||fluspistil.qpon^ +||flusteredexam.com^ +||flusteredfall.pro^ +||fluteparental.com^ +||fluteranguleindian.cfd^ +||flutterstumpbullet.com^ +||fluvioshoer.cyou^ +||fluxads.com^ +||fluxedidolize.cyou^ +||fluxthirty.qpon^ +||fluxyt.xyz^ +||flyads1.com^ +||flybaneabducts.cyou^ +||flyingadvert.com^ +||flyingsquirellsmooch.com^ +||flylikeaguy.com^ +||flymob.com^ +||flysfycwdazfb.website^ +||flytechb.com^ +||flyteinfile.qpon^ +||flywithexecutors.net^ +||flyxutjhemkgg.space^ +||fmaiyleoxlfbm.online^ +||fmamrxcycaote.space^ +||fmazwqtzwcfym.website^ +||fmcjpaspndckq.space^ +||fmcnbmrafxjwq.website^ +||fmeeelobzlamc.space^ +||fmeokhgaca.in^ +||fmgxqcxzpfbel.click^ +||fmh7rrc8ec8nj4.rest^ +||fmipurdtuta.com^ +||fmiszetiqn.in^ +||fmkains.com^ +||fmkgrnjsfqpnz.website^ +||fmkuhozxqvwro.site^ +||fmlabsonline.com^ +||fmmxfomnbpisz.space^ +||fmnsrlcbqjncj.site^ +||fmomyhramzsdf.online^ +||fmpaeahyrevy.com^ +||fmpezkwxyqryq.website^ +||fmpkdawgv.com^ +||fmpub.net^ +||fmqppppgvltit.site^ +||fmsads.com^ +||fmvemhntgm.com^ +||fmvrilqsboddt.space^ +||fmxypzzxwlzqg.website^ +||fmzgdiqzamnrn.website^ +||fn9lyj68l2itlf7nq.cfd^ +||fndnundtdytuv.space^ +||fndvkouekeevn.online^ +||fnemycyfd.com^ +||fneseravined.qpon^ +||fnfbjhfwumxnmg.com^ +||fnfprkylegylz.online^ +||fngjuhuiommfv.online^ +||fngvepnjonsdl.online^ +||fnieftbduxjdr.online^ +||fnimszzhutvpo.website^ +||fnkejfbxhvkox.website^ +||fnlpncdfxwphb.site^ +||fnnnmmaqihint.site^ +||fnnoemdymhpso.store^ +||fnnrequdvzwpw.space^ +||fnobmuvwhvmna.store^ +||fnoxmhkwrkhxv.space^ +||fnpftjzykrbbg.store^ +||fnqhgazwgznjq.site^ +||fnrilqmawcvmu.site^ +||fnsfczcmghkyb.site^ +||fnvbvmrbvfbtjg.com^ +||fnvvtwclgdcqr.online^ +||fnvxpndhciszp.website^ +||fnwyvyiwqajte.online^ +||fnzidpnvumkrm.site^ +||foaltax.com^ +||foamergv.qpon^ +||foapsovi.net^ +||fockleuncomptbraves.cfd^ +||focusameneducation.com^ +||focusedquit.pro^ +||fodpqylf.com^ +||foehnsstomium.cfd^ +||foelikeexternsbriton.cfd^ +||foeowuevgzenq.online^ +||foerpo.com^ +||foeshipbindery.cfd^ +||foetail.com^ +||foetalvigilforaged.cyou^ +||fofauctddfpfo.website^ +||fofbposqrlqxh.com^ +||foflf.com^ +||fogbankquaters.cyou^ +||fogeweries.qpon^ +||foggierbabasdeeming.cfd^ +||foghug.site^ +||fogramcheersdecenyl.cyou^ +||fogvnoq.com^ +||fogydomhariana.cfd^ +||fohshxrgpzlkj.site^ +||foicuoxmzjthm.site^ +||foilbundle.com^ +||foilunflaweduproot.com^ +||foineqhrjvek.com^ +||foiningitauba.cfd^ +||foistsyogist.cyou^ +||foitersagwire.qpon^ +||fojatepjfrfdc.space^ +||fojfrrpwyvlhq.website^ +||fojreuulsyxpi.website^ +||folacinamylome.help^ +||folatechawk.cfd^ +||folbwkw.com^ +||foldclankcelery.com^ +||folddared.com^ +||folderappealinformant.com^ +||foldgun.xyz^ +||foldingcutleryhelium.com^ +||folilyfaitour.cfd^ +||foliomimer.qpon^ +||foliotlatabuddage.qpon^ +||folkscaravel.qpon^ +||folliedbornean.qpon^ +||follilyinvites.cfd^ +||followerattachment.com^ +||followingpartlyindicator.com^ +||followmurmuringsquealing.com^ +||followsmumpingulna.cfd^ +||followsscaringcarrier.com^ +||folnpqyqxwdhl.space^ +||folsksjofpuum.online^ +||fomirpggopead.site^ +||fond-problem.pro^ +||fondcycle.com^ +||fondstudy.com^ +||fondusdvornik.cfd^ +||foniuhuuwwnhm.tech^ +||fontdeterminer.com^ +||foodieblogroll.com^ +||foojeshoops.xyz^ +||foolhardy-wall.com^ +||foomaque.net^ +||footbathmockerpurse.com^ +||footerfont.com^ +||footfulsprier.qpon^ +||footholdmummifytwig.com^ +||footnote.com^ +||footprinthighamaze.com^ +||footprintstopic.com^ +||footsprinter.cyou^ +||footweargrewshaped.com^ +||fopduzolpqdue.space^ +||foplingtonto.qpon^ +||fopperylockful.qpon^ +||foppingnimsfatuism.cfd^ +||fopxicajsprkh.site^ +||forayedfratry.shop^ +||forbearphysics.com^ +||forbearsnob.com^ +||forbesresistread.com^ +||forbidcrenels.com^ +||forbstempobrawly.qpon^ +||forcefulbeginning.com^ +||forcefulpacehauled.com^ +||forcescoaling.qpon^ +||fordjuly.com^ +||fordletze.com^ +||fordlouse.com^ +||forearmthrobjanuary.com^ +||forecaststepsixteen.com^ +||foreignabnormality.com^ +||foreignlozenge.com^ +||forelaycampe.cyou^ +||forelaymontemhallo.qpon^ +||forensicstagger.com^ +||forepawsbarren.com^ +||foreseehawancestor.com^ +||foreseestivy.cyou^ +||foresightcoercive.com^ +||forestreveal.com^ +||forestsdilapidation.com^ +||foreststobaccodecember.com^ +||foretasteailnod.com^ +||forexclub.ru^ +||forflygonom.com^ +||forfrogadiertor.com^ +||forgavedisciplinetolerance.com^ +||forgedbrogueimmix.cyou^ +||forgetfulpromptlyappointment.com^ +||forgetfulspidersantiquity.com^ +||forgetnet.xyz^ +||forgiveeternal.com^ +||forgivefireextinguisher.com^ +||forgivenbeavervague.com^ +||forgivenessmafia.com^ +||forgivengirlie.com^ +||forgivenrepresent.com^ +||forgotgnatpalsy.com^ +||forhalelequearbraccia.cyou^ +||forkconnectinghead.com^ +||forkinane.com^ +||forkypectousdingly.cfd^ +||forleitspikes.cfd^ +||forlumineoner.com^ +||formalswingsubquery.com^ +||formanentsyshru.org^ +||formationcrucialwildest.com^ +||formatsquareabominable.com^ +||formayday.com^ +||formelamulae.com^ +||formerdrearybiopsy.com^ +||formerlyconsidering.com^ +||formerseparation.com^ +||formerskating.com^ +||formismagiustor.com^ +||formpeeksretort.com^ +||formssunglassesprologue.com^ +||formularespiterouge.com^ +||fornixmullets.cyou^ +||forraslipout.cfd^ +||forsakenburn.com^ +||forsakesonswept.com^ +||forscprts.com^ +||forseenpalsiespalmira.cyou^ +||forthbootyintricate.com^ +||forthbycity.com^ +||forthcomingmugged.com^ +||forthrightstudent.pro^ +||forthwithresistsew.com^ +||fortunate-responsibility.com^ +||fortunateambiguous.com^ +||fortunateharrietrefresh.com^ +||fortunatelychastise.com^ +||fortunatelysymptom.com^ +||fortunegrassrecreate.com^ +||fortunescoltslum.com^ +||fortuneswhichacceleration.com^ +||foruftuiov.com^ +||forunfezanttor.com^ +||forwalkprove.cfd^ +||forward81.net^ +||forwardasper.cfd^ +||forwardfishermanbidding.com^ +||forwarnbervie.cyou^ +||forwarnjigging.qpon^ +||forworkpical.cfd^ +||forworksyconus.com^ +||forzubatr.com^ +||fosfrgpcqy.com^ +||fossealible.cfd^ +||fossesfyttes.qpon^ +||fostergurk.cyou^ +||fotchpandar.cfd^ +||fotherlamely.cyou^ +||fotwupmfmlace.space^ +||fouettbrauna.com^ +||foundationhorny.com^ +||founderyet.com^ +||foundinggulfsaturate.com^ +||foundmorn.cyou^ +||founteyoho.cyou^ +||foursdibutyl.cyou^ +||fourteenglitteringbreath.com^ +||fourthcheesy.com^ +||fourthinvestigation.com^ +||fouxupoosccwp.space^ +||fovbxmvsgkhnl.icu^ +||fovealkiters.com^ +||fowky5txtxfixyr6bj1xot7xvkz.cfd^ +||fowlerydyewoodincite.cfd^ +||fowlpwlythika.space^ +||fowlsgum.com^ +||foxijcxwck.com^ +||foxilymonacan.qpon^ +||foxova.net^ +||foxpush.io^ +||foysenhoodoospiky.cfd^ +||foztcbbfdnnla.space^ +||fpadserver.com^ +||fpbpgoqubikzw.space^ +||fpcbltqovzjwg.website^ +||fpcjdmgsvsqud.website^ +||fpcrnsgskjtfm.website^ +||fpgedsewst.com^ +||fphycqwimelhk.online^ +||fphzedckwhuab.website^ +||fpjkarweguqyo.online^ +||fplaqxdydhluw.site^ +||fpmlkyxazjqzo.website^ +||fpmxmaapfxwud.space^ +||fpmzttsrspqwe.online^ +||fpnpmcdn.net^ +||fpozepoxngmmn.site^ +||fpplwtittfozz.website^ +||fpqguhajcermv.website^ +||fpqvfrdcnoxah.online^ +||fpwwjcyugtakd.online^ +||fpxpobaudkjzu.site^ +||fpyf8.com^ +||fpzzupe677ck1g.cfd^ +||fqayoymigvmbw.website^ +||fqdpqpwruidrz.store^ +||fqdqndubwixwk.website^ +||fqetpiuph7og41.cfd^ +||fqeyqzuncvkpx.website^ +||fqflsynvp.com^ +||fqfuegxuujfzs.website^ +||fqgcltsfrjuln.space^ +||fqhucslrtysrl.site^ +||fqhueanslwpyi.site^ +||fqibwvatzzcdj.space^ +||fqjxmzlhmfmuk.online^ +||fqkrlarigtylp.site^ +||fqljqjpufoclc.online^ +||fqnjjkzphtvnl.website^ +||fqnpsyjfuxmqx.website^ +||fqnyhgtgfenpf.site^ +||fqoncscqpnypa.online^ +||fqpwvcgctwjlo.online^ +||fqpyypqsklxar.site^ +||fqtmnnxabkkud.space^ +||fqtmywyncpzwl.space^ +||fqvwalkffipfi.site^ +||fqwm8ppl3ykixptyn1e8qhykiv1.cfd^ +||fqy8jp1r75mklvg8oln88u.cfd^ +||fqypnxsfbedtl.space^ +||fqzjprfzxplwo.website^ +||fqzwlexhffkpg.website^ +||fqzxecinpjuws.space^ +||fr0z3nc0zysm1le.xyz^ +||fr3q7i2p5pxv5o1xib4egio.cfd^ +||fr3q9j3iygigvbib856.cfd^ +||frabwarrerbruxism.cfd^ +||fractionfridgejudiciary.com^ +||fractionsadly.com^ +||fracturebroadcastsaw.com^ +||fraelaputback.com^ +||fragmentout70.com^ +||fragranceguardtrim.com^ +||fragrancenemesisprovolone.com^ +||fragrantanger.com^ +||fraidcodices.cfd^ +||fraikidyll.cyou^ +||frail-benefit.com^ +||fraiymmrjeiwf.site^ +||francegave.com^ +||franecki.net^ +||franeski.net^ +||franklycommission.com^ +||franklyprocesses.com^ +||frankvehicle.com^ +||frap.site^ +||fraudcapable.com^ +||fraudulentquarter.com^ +||frauenbertrum.qpon^ +||frautkgibbbwj.space^ +||frayed-coat.pro^ +||frayingfilmize.cyou^ +||fraynrills.cyou^ +||frazergraces.rest^ +||frblernpdqkdq.space^ +||frbsdeaewuhou.website^ +||frbzojrsotdov.space^ +||freakishforgiving.com^ +||freaksdopers.cfd^ +||freaksgreed.com^ +||freckenstekan.cyou^ +||freckledoutsiderundaunted.com^ +||frecklessfrecklesssuction.com^ +||freddienoisedpeaiism.cyou^ +||freddoguarabu.shop^ +||freddyzebruleheeding.qpon^ +||fredmoresco.com^ +||free-datings.com^ +||freebiesurveys.com^ +||freeconverter.io^ +||freecounter.ovh^ +||freecounterstat.ovh^ +||freedcatch.com^ +||freedomalburn.com^ +||freefromads.com^ +||freefromads.pro^ +||freelygreatestscammer.com^ +||freemanaccordingly.com^ +||freemenscriven.cyou^ +||freepopnews.skin^ +||freesiaaristas.cfd^ +||freestar.io^ +||freetrckr.com^ +||fregvoxmietix.website^ +||fremdlypearlspoofs.cyou^ +||frenchgainset.cyou^ +||frenzyhateful.qpon^ +||freqspait.cfd^ +||frequentday.com^ +||frequentjam.com^ +||frequentlyadulatory.com^ +||frequentlyvaried.com^ +||frequentrequirement.com^ +||fresh-watch.pro^ +||fresh8.co^ +||freshesunwarp.com^ +||freshforestroad.com^ +||freshideasflow.com^ +||freshlymaunge.cfd^ +||freshmanhow.com^ +||frezero.net^ +||frfhnsqzngbvy.website^ +||frgmpqsctzels.site^ +||frhaelmqfuudc.website^ +||frhcqkaqcqldu.space^ +||frhfurcnqpnng.website^ +||fridayrefractscorer.com^ +||friendbooties.cyou^ +||friendlyraise.com^ +||friendsfrozen.com^ +||friendshipclumsy.com^ +||frierscloofbundle.cyou^ +||friezesgaliumtanaist.qpon^ +||frightened-half.com^ +||frightenedcraft.com^ +||frighteningrelative.com^ +||frightfulvisitorimportant.com^ +||frijoleponabode.cyou^ +||frillhetaery.com^ +||frioencwksyur.website^ +||friont.xyz^ +||frippettegmina.com^ +||friscooutrant.cfd^ +||frisketposses.cfd^ +||friskydoweral.com^ +||friszkacmd.cfd^ +||frithyabomasa.cyou^ +||frittdungangunline.qpon^ +||frittsannupboxings.cfd^ +||frittshumic.qpon^ +||frixionhhd.cyou^ +||frixwnntfn.com^ +||frizerrackman.qpon^ +||frizzerflattie.shop^ +||frjbyduygjwbk.site^ +||frjcysbrsmklq.site^ +||frjnnudnmborf.store^ +||frjrwixwogqjt.site^ +||frkehycifykyq.site^ +||frkyhxyvwrnrl.website^ +||frmhktwjerprp.store^ +||frmirnvtgcgdu.online^ +||frmmqfwviupoa.today^ +||frnaqbeavtdvm.website^ +||frnmtunhqvpon.website^ +||froaqldtuqssk.website^ +||frockkabikisjianyun.cyou^ +||frockssilk.qpon^ +||frocompactcountless.com^ +||frodo.space^ +||frogcontrivance.com^ +||frogletbit.cfd^ +||frogletcoccoiddiners.cyou^ +||frogletutopism.com^ +||frohddwovyjno.online^ +||froisseputtied.qpon^ +||fromjoytohappiness.com^ +||front-interest.com^ +||frontcrash.pro^ +||frontinventory.com^ +||frontsmucidlagends.cyou^ +||frookshop-winsive.com^ +||frorechewet.cfd^ +||frorenkoines.shop^ +||frostdivinityrelevant.com^ +||frostscanty.com^ +||frosty-anybody.pro^ +||frothadditions.com^ +||frounceuayeb.qpon^ +||frowncarcoon.qpon^ +||frownercrappinuncaria.cfd^ +||frownlag.com^ +||frowstlucresmilvus.cfd^ +||frowzlybyegrabens.qpon^ +||froxuqviwh.com^ +||froxywphaelli.space^ +||frozenbiopsyskate.com^ +||frozenpayerpregnant.com^ +||frpefhquywmje.store^ +||frpgfmgamehnz.site^ +||frqhnxou2ixeco1byb8m6ko.cfd^ +||frrhcvblgskvz.site^ +||frrkdiszpiclc.online^ +||frs2c.com^ +||frtihyvwigowg.online^ +||frtya.com^ +||frtyd.com^ +||frtyl.com^ +||frugginplatine.qpon^ +||frugstrain.qpon^ +||fruitedmataiops.cfd^ +||fruitful-request.com^ +||fruitiesmatchina.org^ +||fruityarbors.cfd^ +||frwgxofndcasv.site^ +||frwifrmgtrrqi.website^ +||fryboldlymalice.com^ +||fryduxmudk.in^ +||frzsblxklkuoa.site^ +||frztpfjmnuexn.space^ +||fsaaianvapxeh.site^ +||fsalfrwdr.com^ +||fsavmklplmddsu.com^ +||fsbbtdtxzswq.com^ +||fsbyjvefmuibs.space^ +||fsdzafmzbdyan.store^ +||fsfibjccvgkki.site^ +||fsgkzonhuoafn.store^ +||fsgpxvemqbven.store^ +||fsgqwkngpxqqxy.com^ +||fslstdvdszczh.online^ +||fsmfceljvhwfg.space^ +||fsmozsiqsdapq.store^ +||fsnkdjtnifxze.site^ +||fsoqblxrfljyf.site^ +||fsqgocmhgaikr.site^ +||fsrqhkcwfsrlc.online^ +||fssrdeeivg.com^ +||fsswjrxjhwmzb.website^ +||fstgswnglttj.com^ +||fstmshtlaurzt.store^ +||fstsrv9.com^ +||fstsspfwthukh.site^ +||fsuwiwvhtcfzm.space^ +||fswatrlxubu.com^ +||fsxmidyo.com^ +||ftamwoagth.in^ +||ftblltrck.com^ +||ftckvcencoooi.online^ +||ftd.agency^ +||ftdlgshotulzx.space^ +||ftdtocbdkvlvj.space^ +||ftfatwmojqntc.online^ +||ftgsxcponsrcc.site^ +||ftheusysianeduk.org^ +||ftiswpgasqepa.site^ +||ftjaehqgcpfjj.online^ +||ftjcfx.com^ +||ftksrnkazgilp.space^ +||ftmowtwqigrqn.site^ +||ftnqjmzmboydf.online^ +||ftoihsukifuqw.website^ +||ftrbzcbufgrgt.website^ +||ftrem.site^ +||ftrrhvgrgfaqx.site^ +||ftslrfl.com^ +||ftsucithdgvle.online^ +||ftv-publicite.fr^ +||ftvrm39rox222hj1y.cfd^ +||ftwftsvmssggs.online^ +||ftwrmmayxkopu.space^ +||ftydheggsttua.site^ +||ftyspctyrjenw.space^ +||ftzblwbirevog.website^ +||fu-nu-ra.com^ +||fubsycharqui.cfd^ +||fuck-ads.vercel.app^ +||fuck-dating.com^ +||fuckthat.xyz^ +||fuclctdrjcvhs.online^ +||fucouselfship.shop^ +||fudyepnjxwmlm.online^ +||fudzceoandzhm.website^ +||fuecnkpqtnkjp.space^ +||fuelingjejuna.qpon^ +||fufflegloealawed.cyou^ +||fufmlgpnqzafv.site^ +||fufstxtytywhx.website^ +||fugacyslatted.cfd^ +||fuget.xyz^ +||fugitivedepart.com^ +||fuglingreactor.cyou^ +||fugqlraagsaoz.site^ +||fugsslosher.com^ +||fugurehires.qpon^ +||fuhcoupnmivfn.site^ +||fuhzuajqwcmyl.site^ +||fuixbmllpzabg.website^ +||fukhatexcepeded.com^ +||fulanijahvismchiule.qpon^ +||fulgentrosalyn.com^ +||full-copy.com^ +||fullagecomices.cfd^ +||fullchemistry.com^ +||fullerluxivefitz.cyou^ +||fulleryloups.cfd^ +||fullfoetus.com^ +||fullomsulkiesspin.qpon^ +||fulltraffic.net^ +||fulohsdudxyhc.site^ +||fulvenebocca.com^ +||fumarinmoving.cfd^ +||fumarylgypsyrypoucy.cfd^ +||fumblesouters.cfd^ +||fumblingvacation.pro^ +||fumerbracteatamise.cfd^ +||fumestealwilfrid.com^ +||fumosenair.cyou^ +||funcallback.com^ +||functions4disk.com^ +||functions8.com^ +||functionsinfix.net^ +||functionsout9.net^ +||functionssubqueries.com^ +||functionswith5555.net^ +||fundamentalobjected.com^ +||funderarcula.qpon^ +||fundescended.com^ +||fundraiserprestigedescent.com^ +||fundsruffianfollows.com^ +||fundtraveller.com^ +||fungidcolder.com^ +||fungifystotingpuya.qpon^ +||funginmangold.qpon^ +||fungus.online^ +||funkiakaraya.cfd^ +||funkiermowana.cyou^ +||funniestpins.com^ +||funnilylouted.qpon^ +||funny-dot.pro^ +||funny-quality.pro^ +||funnyslender.com^ +||funnystonen.cfd^ +||funsday.cfd^ +||funukghkefdfm.space^ +||funuqfgfkecvrrp.com^ +||fuogldld.com^ +||fuokxmhzdvolq.website^ +||fuozidrjmtitj.space^ +||fupbtabgzyprm.space^ +||fuphvfqqkzlgvy.com^ +||fupqitrviyhbf.space^ +||fuqemedzceklr.online^ +||fuqkdijxnoqswf.com^ +||furcaltonic.com^ +||furgppujqwmwh.online^ +||furiosoflippedotium.cfd^ +||furiousexpansion.com^ +||furisonvires.cfd^ +||furjoyfdoumka.site^ +||furledural.shop^ +||furoinalexas.com^ +||furoleevehood.cyou^ +||furowo.org^ +||furphyrisotto.cyou^ +||furrowhardship.com^ +||furtivelywhipped.com^ +||furudgeoform.cyou^ +||furudloof.com^ +||furybuiltfairy.com^ +||furyprosecutionkitchen.com^ +||fuseaubedegar.qpon^ +||fuseauslings.qpon^ +||fuseplatform.net^ +||fusetracking.com^ +||fusibletabstop.cfd^ +||fusilbeetewklar.cfd^ +||fusion4096.com^ +||fusion63.net^ +||fusionads.net^ +||fusionironydaunt.com^ +||fusoidactuate.com^ +||fussy-community.pro^ +||fustnapery.shop^ +||fusungjytsoqn.online^ +||futhorcrocksuivez.cyou^ +||future-hawk-content.co.uk^ +||futureads.io^ +||futureus.com^ +||fuwyswmhjrsbl.online^ +||fuybwvvhmdtrh.website^ +||fuzljyclpqlbv.online^ +||fv9y4lpixpghw3757oq7.cfd^ +||fvahbwnlcqvaf.site^ +||fvaslplblqgzc.online^ +||fvawdzlobdrrv.online^ +||fvcsurnjbowiq.com^ +||fvcwqkkqmuv.com^ +||fvcyskzlktxul.site^ +||fveamyioppgja.site^ +||fvehrcyeofbzc.space^ +||fvfabtecrmfua.website^ +||fvibcxczgkhmd.website^ +||fvjhdijvqirab.site^ +||fvkobfbmfdjhp.website^ +||fvlhshpmjnrck.website^ +||fvmfdzpwbm.com^ +||fvormhbpnzswo.space^ +||fvpcmlmpoyldc.space^ +||fvpsbdbaiobud.space^ +||fvrpgjewjakqo.site^ +||fvvyndmujhviq.store^ +||fvwdjfrekgogp.online^ +||fvxawkckcdbux.website^ +||fvxemeqkmkmox.site^ +||fvxttknut.com^ +||fvziwdycvudxd.tech^ +||fwbntw.com^ +||fwcavwstvmekw.online^ +||fwcvdfgoeayyo.site^ +||fwfzomszkhywg.online^ +||fwgxxywastlyi.com^ +||fwhiygzlhmklt.website^ +||fwllgitl.com^ +||fwlpazuvbhmkg.online^ +||fwmknvsllqs.com^ +||fwmknvveyfahw.site^ +||fwmrm.net^ +||fwnezrrjmbjjl.space^ +||fwpxuulzjjxno.space^ +||fwqasyuebarqa.space^ +||fwrtzdlspzybl.space^ +||fwsarcasm.cfd^ +||fwsigpacfqznc.site^ +||fwtlvkgbmqqme.space^ +||fwtrck.com^ +||fwunymlwmsebu.site^ +||fwuzwzbtzuvil.online^ +||fwzvgdqhtxsxc.store^ +||fx9nyzm2u9p9e11yyb7.cfd^ +||fxayenbztjzdg.website^ +||fxbojoywozehj.website^ +||fxbprfogjabel.online^ +||fxdepo.com^ +||fxekrx23mjptk12lp.cfd^ +||fxewupiyppjkg.website^ +||fxghyhcifmyel.store^ +||fxgrscstakhxi.space^ +||fxgzkkroeavcj.space^ +||fxhpnyoswgdir.site^ +||fxjllndtgqsaf.site^ +||fxmnba.com^ +||fxnrjqnlbfoap.site^ +||fxqikdwtgabho.website^ +||fxqixgyrslaqo.store^ +||fxrokhvydhadu.website^ +||fxsdyahhcwykb.website^ +||fxsupzozeialv.online^ +||fxthjlhiybnyf.space^ +||fxtqgkzezrgbx.website^ +||fxuenhhaucscs.online^ +||fxuzrinlbacql.site^ +||fxwlyddrjhupc.store^ +||fxxogvmdpnwgw.online^ +||fxyjzqckjnezs.website^ +||fxzbgdweisumj.online^ +||fyauuswqwavou.website^ +||fybzuyvspginc.website^ +||fycdnhwmaitdg.online^ +||fycoknyfpxcej.store^ +||fydlfiowvdaoq.site^ +||fyewrocgieeog.site^ +||fyhjevzrznhhq.website^ +||fyhnozamfqvvd.site^ +||fyhwvfojswwzi.site^ +||fyihqgawvpqii.site^ +||fyiqplqdkhdgl.site^ +||fyiygeowufqxk.site^ +||fylfotswindjamteise.qpon^ +||fymdsxntahich.site^ +||fympiumlrnotc.space^ +||fynox.xyz^ +||fynuparszvqsd.space^ +||fyovqgkrvoiyo.website^ +||fyqvlsvraskhk.online^ +||fyt7ehcmwjow5h4yvu.cfd^ +||fytbadthewihr.store^ +||fytcghbblhxff.online^ +||fytvrytpipenx.space^ +||fyxhvdyjwyilg.space^ +||fyzfvrnfmtzxm.online^ +||fyzoqppdyllsr.store^ +||fzaatqzkent.com^ +||fzanswueeajvf.online^ +||fzaybjewoyyrz.store^ +||fzc389q8nxip6fmplqw3p.cfd^ +||fzdimble.com^ +||fzdwntsrbrodu.space^ +||fzev75-rtbix.top^ +||fzfgvrdlppkdv.online^ +||fzfzmmijhsmpd.online^ +||fzhlcpylcgicc.online^ +||fzju14tzv7z12gq2cf7gve3ij1m58.cfd^ +||fzlpixsrxtixp.site^ +||fzltkaptycrlv.website^ +||fzomznhnpgxee.website^ +||fzsibfirjxbto.website^ +||fzvqmzsidkjgx.space^ +||fzvzgaezwsrzm.store^ +||fzysfcwetnwid.site^ +||fzzrhfftr52yhzl35g834f.rest^ +||g0-g3t-msg.net^ +||g0gr67p.de^ +||g178j339ev5qg3je.cfd^ +||g1okon6cq7lpn5n8whof25p.cfd^ +||g1tu9hgh5ze7243bqyuf5cnh9lpl5y.cfd^ +||g2288.com^ +||g2afse.com^ +||g2ti6ycntxoojztmnm34u375p6471v27zjput.cfd^ +||g33ktr4ck.com^ +||g33tr4c3r.com^ +||g3jhjhq87bguzbc46b3l8.cfd^ +||g56nw839oztfqy.cfd^ +||g6549pn731ik6h.cfd^ +||g8tor.com^ +||g9o63y6m.xyz^ +||g9qnk89pd5ic.com^ +||gaaekexcvdkur.site^ +||gaatchhaybote.cfd^ +||gabboun.cfd^ +||gabedhaura.cfd^ +||gableaf.qpon^ +||gabschits.qpon^ +||gadgetfortunatelysunny.com^ +||gadmagckfy.com^ +||gadsabs.com^ +||gadsatz.com^ +||gadslimz.com^ +||gadspms.com^ +||gadspmz.com^ +||gaelwvtomjmbm.store^ +||gafefhednctfh.site^ +||gaflphlwqqhch.site^ +||gaggedtetrode.com^ +||gahkoekeybyxv.online^ +||gaietyunhappy.com^ +||gaikufbdsfprf.space^ +||gailylibellousguinea.com^ +||gailytenline.qpon^ +||gainedspotsspun.com^ +||gainingpartyyoga.com^ +||gainsscarceshiny.com^ +||gaitcubicle.com^ +||gaitersburialsiban.cfd^ +||gajyhhatyhace.site^ +||gakaoxulxuheu.store^ +||galaksion.com^ +||galantbell.cfd^ +||galaxyearningsfly.com^ +||galaxypush.com^ +||galchahoopla.qpon^ +||galchatruces.cfd^ +||galeaedifformpapaio.qpon^ +||galeaeevovae.com^ +||galeasnair.cfd^ +||galegaquakers.qpon^ +||galeindelicatedrove.com^ +||galeodvern.qpon^ +||galettevexedinguen.cfd^ +||galgalfoiling.cyou^ +||galikbrekkygreeter.cyou^ +||galileiplinker.qpon^ +||galitaillevessels.cfd^ +||gallantfamineana.com^ +||galleonentopic.com^ +||gallerieshub.com^ +||gallupcommend.com^ +||gallusbisley.com^ +||galopelikeantelope.com^ +||galopscoynye.qpon^ +||galorecoing.cyou^ +||galotop1.com^ +||galrnswqwqlik.site^ +||galuthxosaarmil.cfd^ +||galyacoutgain.shop^ +||galyacssheenie.cfd^ +||galybgqqxjhil.space^ +||gamazi.com^ +||gambar123.com^ +||gambespinners.cyou^ +||gambiaeaffingairings.qpon^ +||gameads.io^ +||gamerhit.co^ +||gamersad.com^ +||gamersshield.com^ +||gamersterritory.com^ +||gamesims.ru^ +||gamesrevenue.com^ +||gamesyour.com^ +||gamgiapasang.cyou^ +||gamgiathuja.cyou^ +||gaming-adult.com^ +||gaming001.site^ +||gamingadlt.com^ +||gammaclown.com^ +||gammamkt.com^ +||gammaplatform.com^ +||gamolplub.in^ +||gamonalsmadevel.com^ +||gandmotivatin.info^ +||gandrad.org^ +||gangavacowitchinjects.qpon^ +||gangconditionssidewalk.com^ +||ganggeneticallypartially.com^ +||gangsarobhah.shop^ +||gangsterrecuperateintrepid.com^ +||gangwaynumberprivacy.com^ +||ganismpro.com^ +||gankana.com^ +||gannett.gcion.com^ +||ganqyogovslsc.com^ +||gansellappersskyfte.qpon^ +||ganserspeans.shop^ +||gantapeerly.cyou^ +||gantonarmets.qpon^ +||gantonjipper.qpon^ +||ganyieprussicchisels.cfd^ +||gaohnonowmxay.website^ +||gaolsstrow.shop^ +||gapcontroversialprodigal.com^ +||gapedyas.cfd^ +||gapstema.cyou^ +||gaqxkizfpyhpc.site^ +||garbagefit.com^ +||garbagepictish.cyou^ +||garbageshallotsnowiness.com^ +||garconleak.com^ +||garconmervnace.cyou^ +||gardeningcoercive.com^ +||gardeningremovalcontrary.com^ +||gareheimuvyyi.space^ +||garfishcoeff.shop^ +||gargantuan-wedding.com^ +||gargantuanindication.pro^ +||gargledenvy.qpon^ +||gargledpightel.qpon^ +||gargleearnest.com^ +||gargleunethicalthorough.com^ +||garglingably.com^ +||garlicbourlawupfolds.cfd^ +||garlicice.store^ +||garlopakites.shop^ +||garmentcivilizepitcher.com^ +||garmentclimbinghotel.com^ +||garnishdecoction.com^ +||garosesia.com^ +||garotas.info^ +||garppjpuuhbby.site^ +||garrupapithoinacrite.cfd^ +||garstonganefdwines.cfd^ +||gartersplouk.cyou^ +||gasehoauzxzzt.store^ +||gaseitycabbala.cyou^ +||gaseous-stroke.pro^ +||gashflexiveresnub.cfd^ +||gaskinsiglesia.qpon^ +||gasolineimproveabroad.com^ +||gaspcommercehermione.com^ +||gaspednugator.qpon^ +||gaspersliens.qpon^ +||gaspsoap.com^ +||gastfulabeles.com^ +||gate4learn.com^ +||gateageneifs.shop^ +||gatejoseph.com^ +||gateperfectly.com^ +||gatetodisplaycontent.com^ +||gatetotrustednetwork.com^ +||gatewayfailedbacks.com^ +||gatewaystoopdeplore.com^ +||gatherfromprocedures.com^ +||gathermadness.com^ +||gathersguidon.qpon^ +||gatlingmallow.qpon^ +||gatrgoqldtooe.site^ +||gaulshupsteal.com^ +||gaumingreemingaa.cfd^ +||gauntersedent.cfd^ +||gauotyfrryrtl.website^ +||gaupingeyewink.com^ +||gaupsaur.xyz^ +||gaurianwingtip.cyou^ +||gauricbehale.qpon^ +||gauvaiho.net^ +||gauzeexterminatesupervise.com^ +||gavcujuyzsehnn.com^ +||gaveastound.com^ +||gavedeliverknee.com^ +||gaviapterinswrig.cyou^ +||gavnuifk.xyz^ +||gawkilyandronprison.cfd^ +||gawkydrupose.cyou^ +||gawmuighur.cfd^ +||gawneytae.cfd^ +||gaxkyokrghyts.online^ +||gaxyssprvcejy.site^ +||gayadpros.com^ +||gayetypgnttrpoctroy.cfd^ +||gayhistone.cfd^ +||gayyouslaved.cyou^ +||gazati.com^ +||gazeeunmasks.cfd^ +||gazeflavour.com^ +||gazfleetly.cyou^ +||gazkohjzcdbty.online^ +||gazmoons.com^ +||gb1aff.com^ +||gbads.net^ +||gbblpbibctqex.site^ +||gbcfhktlqkxcn.online^ +||gbcjzjawwvhxdt.com^ +||gbdifgyealbpd.site^ +||gbede.com^ +||gbedxtcoyviwt.space^ +||gbgomscmeyenl.site^ +||gbgztjjepqrim.space^ +||gbhbfosvxplgs.space^ +||gbhyhxkdwqzjf.site^ +||gbizxljbrlhjf.space^ +||gblcdn.com^ +||gbmgmqjppwabsa.com^ +||gbmgukyvlwhgy.site^ +||gbnfaehebroyq.online^ +||gbqho9jml2kxrrugu.cfd^ +||gbquersgilgpf.space^ +||gbquw7w6pxuf3v.cfd^ +||gbrorlauokmsq.website^ +||gbrwplgcsjieu.online^ +||gbvaiwinhduzn.website^ +||gbwbzcjfsqbwn.online^ +||gbxvvcynqbzxb.site^ +||gcbjctupujjsn.website^ +||gcfubeywqiffq.website^ +||gcgrabxewyxwe.website^ +||gcgrpebxuiqdo.website^ +||gcigziwma.in^ +||gcj4q7j5u25hqb23xwruyku6cbmqt4.cfd^ +||gcmwodwqcaqjw.space^ +||gcotjvflmlxkw.space^ +||gcpafttmstljb.website^ +||gcpcvtdsdztbz.website^ +||gcqsidgeipqtr.online^ +||gcrvzjxhgaeed.website^ +||gcskfemusrkho.online^ +||gctolasgflhnc.site^ +||gcvxhwgvpwpyv.online^ +||gcxbzxgatjdmw.website^ +||gcxqfqykhnzai.online^ +||gcydzxkkrkpfb.space^ +||gczhqusagsfps.space^ +||gczpyfnuquhix.online^ +||gdaktkrxjfohf.online^ +||gdbkplzeggkrg.online^ +||gdcuazuubhgnd.website^ +||gdecordingholo.info^ +||gdeigri.com^ +||gdekrjjulrskl.online^ +||gdffcqfpxlynx.online^ +||gdfkbvbifnncj.online^ +||gdftfhlfnnbox.online^ +||gdg4yih5.xyz^ +||gdgfmtrpducob.online^ +||gdhpgsgtechuz.site^ +||gdjurefuxajcg.site^ +||gdjzrobyzulpx.site^ +||gdmconvtrck.com^ +||gdmgsecure.com^ +||gdonqrdtzhvfq.space^ +||gdqmnvweycjnl.website^ +||gdruivkdk.com^ +||gdsfkwghjspep.site^ +||gdtrbrsyziwmw.website^ +||gearcambridge.com^ +||geargrope.com^ +||gebebrfkdqsci.store^ +||gebir.xyz^ +||geckad.com^ +||geckedfalus.qpon^ +||geckxmcccnhbc.space^ +||gecl.xyz^ +||geetecrlxnygu.online^ +||gefqbzyzufohv.online^ +||gegori.xyz^ +||gegqyfewpclyb.site^ +||geirathorpe.qpon^ +||geishaskaryonpaggle.cfd^ +||gejjjgxopqqd.com^ +||gekeebsirs.com^ +||gekpjfmuzimlg.online^ +||gekpsivjequd.com^ +||geldanteructs.shop^ +||gelhp.com^ +||gellynocketescalan.qpon^ +||gelnhamforma.com^ +||gelor.xyz^ +||gelosievinterplaga.cyou^ +||gelosinscreigh.cfd^ +||gelvvcdvxbaan.space^ +||gemanwnnxezww.website^ +||gemaricgoetheuvre.cfd^ +||gemcandock.com^ +||gemeledteff.qpon^ +||geminalorion.cyou^ +||geminisailingzillion.com^ +||geministinage.shop^ +||gemlikefigeter.qpon^ +||gemmaunhazed.shop^ +||gemmerlibbers.cfd^ +||gemmuleaxing.cfd^ +||gemmuletaroccobice.cfd^ +||gemsesmockeryarrack.cyou^ +||gen-ref.com^ +||genbalar.com^ +||gendbkamiggxs.site^ +||gendernewsmanmistic.qpon^ +||genekifanobeli.cyou^ +||generalizationhazel.com^ +||generalizebusinessman.com^ +||generationdissolvedplease.com^ +||generationwindscreen.com^ +||genericdianawitty.com^ +||genericlink.com^ +||generosityensurebathing.com^ +||generosityreekweigh.com^ +||generous-snow.com^ +||generousworry.com^ +||genesismedia.com^ +||geneticallydetection.com^ +||geneticnormalthou.com^ +||genettafifties.qpon^ +||genfpm.com^ +||geniad.net^ +||genieedmp.com^ +||genieessp.com^ +||genioauchtsero.cyou^ +||genipspillion.com^ +||genitorbalernewsmen.qpon^ +||geniusdexchange.com^ +||geniusonclick.com^ +||gensengsmokier.com^ +||gensonal.com^ +||gentle-report.com^ +||gentlefieldpattern.com^ +||gentlemanknittingpredict.com^ +||gentlemensmeltworkshop.com^ +||gentleoutdoer.qpon^ +||gentlledreams.com^ +||gentlyimpoliteprize.com^ +||gentlysoloshort.com^ +||genuine-crash.com^ +||genuineice.com^ +||genuinelyfritter.com^ +||genuinelyunfit.com^ +||genusesslitted.com^ +||geoaddicted.net^ +||geodator.com^ +||geodetebein.qpon^ +||geogenyretired.qpon^ +||geogenyveered.com^ +||geographicalpaperworkmovie.com^ +||geologylineal.com^ +||geologypraised.com^ +||geometryafflictionshrub.com^ +||geometryperformance.com^ +||geonomabriseis.qpon^ +||georgianacaravanscoop.com^ +||georgianagarrisontired.com^ +||georgianagraphsting.com^ +||georgianamortalemployed.com^ +||georgiewattmen.cyou^ +||geotrkclknow.com^ +||gepeoochaffer.shop^ +||gepeooframedillogic.cyou^ +||geqxgljzocqbu.store^ +||geraldnations.com^ +||geraldwhelk.qpon^ +||geraratarte.shop^ +||geraticimides.com^ +||gereklufahdkb.online^ +||gerentsbeethantilog.qpon^ +||gerenttopknotretomb.qpon^ +||gerimpigfoot.com^ +||germaindemits.qpon^ +||germainplums.cyou^ +||germenbombs.cyou^ +||germinatethick.com^ +||germlesslukewarmmold.com^ +||gesqruyuqhdxz.website^ +||gestapozulu.qpon^ +||gesterrobotry.cyou^ +||gesteswayland.qpon^ +||get-gx.net^ +||get-me-wow. +||getdirectbonus.com^ +||getfluxfile.com^ +||getjad.io^ +||getlingprosser.cyou^ +||getmatchedlocally.com^ +||getmytralala.com^ +||getnotix.co^ +||getpopunder.com^ +||getscriptjs.com^ +||getsharedstore.com^ +||getsmartyapp.com^ +||getsthis.com^ +||gettraffnews.com^ +||getwptag.org^ +||getxml.org^ +||getxmlisi.com^ +||getyourapp.info^ +||getyoursoft.ru^ +||getzvpeewhnum.online^ +||gewxrcuetanau.site^ +||gexdrbaeokoxr.website^ +||geynkbwesiohs.online^ +||gezpatens.qpon^ +||gezutpsqziids.website^ +||gf7r23zxp1i2vkvfx33ezlbqet.cfd^ +||gfadvpljfwagd.online^ +||gfakhdlfphett.online^ +||gfarjbjemnjog.space^ +||gfbxsoxbywqvp.store^ +||gfditxjqxeo.com^ +||gff660fg.xyz^ +||gffggfxim.com^ +||gffoycbmmfptr.space^ +||gfglsjrfdxvte.website^ +||gfhgxmczmrcda.site^ +||gfhhghnduzqiq.site^ +||gfkfqilsulylx.website^ +||gfkgmbwjfoem.com^ +||gfnywjhoezyps.space^ +||gfoqmtwpoodsy.space^ +||gforthemoonheap.org^ +||gfpxw.com^ +||gfstrck.com^ +||gfsxnxkodn.com^ +||gftgbrixcmukd.site^ +||gftlexvemldjk.online^ +||gfuhjxhpkwger.space^ +||gfvildtxwbgzi.online^ +||gfxdn.pics^ +||gfxlkemrkltqz.online^ +||gfzyoomgfbnws.space^ +||gg8pq4kce9536c38vjtf.rest^ +||ggbzqyoxkbunx.online^ +||ggegdoydglton.site^ +||ggfpasvmhfxyb.website^ +||gggpppht.com^ +||gghlevdqepehs.website^ +||ggifvakvysycu.site^ +||ggijmlyqpfwl.com^ +||ggllekdgudxgx.store^ +||gglqprdnvqiay.com^ +||gglx.me^ +||ggmbjybfylctk.space^ +||ggmseqjtwwslm.space^ +||ggpbuvhzihxxh.website^ +||ggpkyvsokroop.online^ +||ggreatshow.com^ +||ggreatstuff.com^ +||ggrymktmbbauf.online^ +||ggsfq.com^ +||ggtydxcv.com^ +||ggvfcdgssrppa.store^ +||ggwktikqu.com^ +||ggwoarzpalvlg.site^ +||ggwwjflrkeabf.space^ +||ggxdyohdyaomf.space^ +||ggyjaebzggpkk.store^ +||gh8fiugo.xyz^ +||ghabovethecityon.com^ +||ghaistbrisadict.cyou^ +||gharrislapillo.cyou^ +||ghawbdktdopmt.online^ +||ghazelviands.qpon^ +||ghazidismarkmout.qpon^ +||ghazismuplaneoos.qpon^ +||ghbornoosers.cfd^ +||ghdvmofvjgnhr.store^ +||ghdwowvotygjw.website^ +||ghettoformed.com^ +||ghettosenskied.cfd^ +||ghgsdzfzzunmb.online^ +||ghgxnpcfntb.com^ +||ghhxnabvunfey.store^ +||ghkrndebbziup.online^ +||ghktwxuzvuufr.online^ +||ghnanlvtrzctr.online^ +||ghnoqyfqgsoof.space^ +||ghojgnahyzcyy.store^ +||ghoksjqoceaww.online^ +||ghoqnanthfges.site^ +||ghosterpycnial.qpon^ +||ghostnewz.com^ +||ghostsinstance.com^ +||ghsnhdmwjklks.website^ +||ghswqnoilsxuj.store^ +||ghtry.amateurswild.com^ +||ghuaigotrnbxi.online^ +||ghuet.xyz^ +||ghwgiqvsogkrt.space^ +||ghxjliswdiiax.space^ +||ghxvylxnexmbc.website^ +||ghyblpybhskgh.website^ +||ghyzimfjilvbt.online^ +||ghzxqtvqjybuj.online^ +||gialamebxneob.space^ +||giantaffiliates.com^ +||giaolrkihpcit.site^ +||giatbtvobyoka.online^ +||giaythethaonuhcm.com^ +||gibbolheterosdiking.qpon^ +||gibbosesamfoodzeron.cyou^ +||gibbyfitcheeshirts.cfd^ +||giberedaub.cyou^ +||giddyrabiddaylight.com^ +||giddyshopman.cyou^ +||giftedhazelsecond.com^ +||giftedimplacablefacile.com^ +||giganticmightyspook.com^ +||giganticnimblealways.com^ +||giggingelks.qpon^ +||gigglegrowlworrisome.com^ +||gigicinjinsyf.website^ +||gigsmanhowls.top^ +||gigsmennanitic.shop^ +||gihggbkedddgd.online^ +||gikwhxotzqqzc.site^ +||gilarditus.com^ +||gilleshulchwidder.cfd^ +||gillspaste.com^ +||gillsunkindstretched.com^ +||gilourtupaiidfieldie.qpon^ +||gimbalsstourlybrook.cyou^ +||gimfrxstiodmt.space^ +||gimokkwkfdbgj.space^ +||gimperhappen.cyou^ +||gimpsgenips.com^ +||ginchoirblessed.com^ +||ginetemormonspreknew.qpon^ +||gingalbarky.com^ +||gingalldarks.cyou^ +||gingrasspluntalgae.cfd^ +||ginkgochawed.qpon^ +||ginnierlondonsnooks.cfd^ +||ginningconant.com^ +||ginningsteri.com^ +||giocyrvdmxgqz.website^ +||giowsljxfbzfu.online^ +||gippedtutelo.cyou^ +||gipperstumpy.qpon^ +||gipsiesthyrsi.com^ +||gipsydeceivedepoch.com^ +||gipsyharryparasite.com^ +||gipsypalau.qpon^ +||giqqjsydoqthi.site^ +||gir1p8pqbbt12xkx25xk8ib5.cfd^ +||giraffemaintained.com^ +||girasolworrel.qpon^ +||girdbeltmenungyve.qpon^ +||girdsrunman.cfd^ +||girlieturtle.com^ +||girls-romancehaven.com^ +||girlyfausantbowsing.cfd^ +||girnalnemean.com^ +||gironsokeh.qpon^ +||girosjugermausole.cyou^ +||girqerovpriyp.online^ +||girslepilots.qpon^ +||gisfxpjkclqtp.online^ +||gistreticence.com^ +||giswygovfhdym.online^ +||git55share.autos^ +||gitalinnuance.com^ +||gitksanscattedvowess.qpon^ +||gitoku.com^ +||gitoxgmnnauiz.space^ +||giuwikxlkna.com^ +||givawknyjaexj.online^ +||givbctdfqxoec.site^ +||givdahnhesqrv.site^ +||givenchuser.qpon^ +||givenconserve.com^ +||givenscarfhump.com^ +||givingface.pro^ +||givingsol.com^ +||givviictvunqi.online^ +||giwmicgil.com^ +||gixiluros.com^ +||gixto.xyz^ +||gizgyjlxqmokh.online^ +||gizokraijaw.net^ +||gizzenlatiner.qpon^ +||gjanudhvhdqcd.online^ +||gjbczbgjon3v3mnql6l5t5f.cfd^ +||gjbyu2t3lcco5we.cfd^ +||gjchcjrocetpadf.com^ +||gjczwmseptnlo.space^ +||gjfbkgcrmzcwt.site^ +||gjfyeghpsuxmx.space^ +||gjgfkqrkmfaju.site^ +||gjgnizagkfupg.space^ +||gjigle.com^ +||gjiruqrsnzrsi.store^ +||gjiympgypuqkl.space^ +||gjkpctauyopzo.website^ +||gjlgiznfyricw.space^ +||gjlkzltqvdjeo.site^ +||gjmqzcxfbihuw.store^ +||gjnmizjrnubch.site^ +||gjoycucziewoy.site^ +||gjpixwi52fny5k.cfd^ +||gjqghspetwnkz.store^ +||gjqlxuffmatsp.online^ +||gjrtyrzmbkwbt.website^ +||gjubvembrxsot.space^ +||gjvyboaabepyl.online^ +||gjwgyyiudegzb.online^ +||gjwmhpchcmknr.website^ +||gjwos.org^ +||gjxoqgdozssvh.website^ +||gjxqkypxmgevy.website^ +||gjyprkxumokub.online^ +||gjywuldwyu.com^ +||gjzbbpqknqgbe.online^ +||gkazhtoelmsok.site^ +||gkdfqaetgjufu.site^ +||gkeaaauospljg.site^ +||gkgrvoqpciyvj.online^ +||gkhkmodocwnzu.site^ +||gkihrlitlfndl.space^ +||gkiqilinrzqfy.site^ +||gkiymzihcndek.website^ +||gkjiqxvktjmla.site^ +||gkjzkkbuewngs.online^ +||gklvjdmuolblq.website^ +||gkmjovbmwuldf.site^ +||gkrtmc.com^ +||gkszvanzrueuf.space^ +||gktcdiszwmphyf.com^ +||gkxixncsphfli.online^ +||gkxuifkljnmet.online^ +||gkyaggtewwucj.online^ +||gkzbtvtyvvktr.online^ +||gla63a4l.de^ +||gladlyconceitcucumbers.com^ +||gladlydotselfevident.com^ +||glaiketcurpin.cyou^ +||glaiwhee.net^ +||glamorousconditionsattempt.com^ +||glamoroustangiblematching.com^ +||glamorsjeepers.qpon^ +||glamorsmelamdhaura.cyou^ +||glancedsecretion.com^ +||glancesidahoanobarni.cfd^ +||glandalongtruce.com^ +||glanderbaboen.qpon^ +||glandlabel.com^ +||glandscountrush.com^ +||glareoutgoingthey.com^ +||glaringregister.com^ +||glassesoftruth.com^ +||glassmilheart.com^ +||glassvisual.pro^ +||glaubuph.com^ +||glaucomaspiltunmatched.com^ +||glazenugarono.qpon^ +||glazereeks.com^ +||glazingretentionupcoming.com^ +||glbtrk.com^ +||glcdzojthfbaw.site^ +||glddhbxmzctdb.online^ +||gldjpbtamwuhf.space^ +||gldlwtjeralke.online^ +||gldrdr.com^ +||gleagainedam.info^ +||gleampointscrystal.com^ +||glecjwgrihxui.site^ +||gledeguebucutamarao.cfd^ +||gleedbusters.qpon^ +||gleeful-metal.pro^ +||gleefulcousin.com^ +||gleefulsolvingsaxophone.com^ +||gleegoitral.cyou^ +||gleenplants.com^ +||gleetyflemishlepanto.qpon^ +||gleipevjyhdrm.space^ +||glempirteechacm.com^ +||glfzulyfwt.com^ +||glgyxkvmbamoy.website^ +||glibkzllpsiza.space^ +||glidersovens.cfd^ +||gligoubsed.com^ +||glikepulpar.cfd^ +||glimcorema.cyou^ +||glimmercheeringshield.com^ +||glimmersmugglingsullen.com^ +||glimpsegiven.com^ +||glimpsemankind.com^ +||glimtors.net^ +||glinkhitler.com^ +||glirinetreague.shop^ +||glistenbutt.com^ +||glisteninginstruction.pro^ +||glitnirtaphole.qpon^ +||glitteringsinkingdefense.com^ +||glizauvo.net^ +||gljewfvbbfzlf.website^ +||glkbqoypclywz.space^ +||glkjcdxmnjssm.online^ +||glkmvagwntgde.website^ +||glksnlpdnhthq.website^ +||gllogiubisccs.website^ +||gllyiehduouct.site^ +||gloaphoo.net^ +||gloatqueen.com^ +||globaladblocker.com^ +||globaladmedia.com^ +||globaladmedia.net^ +||globaladsales.com^ +||globaladv.net^ +||globalinteractive.com^ +||globaloffers.link^ +||globaltraffico.com^ +||globeofnews.com^ +||globerotate.com^ +||globity.xyz^ +||globwo.online^ +||globypropria.qpon^ +||glofiflfnmeiw.online^ +||glommedtudor.qpon^ +||glomspinacol.cyou^ +||gloomedindrawnfamines.cfd^ +||gloporn.com^ +||gloriaagrarianstatement.com^ +||gloriafreeway.com^ +||glorifynucleitripping.com^ +||glorious-card.pro^ +||gloriousoutfieldtrembling.com^ +||glorlataxaahed.cyou^ +||glorycomprehensionembroidery.com^ +||glossarywhistled.com^ +||glosserwhamble.com^ +||glossyburn.pro^ +||glossysilane.com^ +||glotticsweeten.qpon^ +||glottisza.shop^ +||glougloowhoumt.net^ +||gloumsee.net^ +||gloutanacard.com^ +||glovedmenaced.shop^ +||glovingaeolus.cyou^ +||glowdot.com^ +||glowersmktsklater.cfd^ +||glowingnews.com^ +||glowtoprocessors.com^ +||glqmnlrtncjni.website^ +||glqomjkpepqam.site^ +||glqsxlvrhuxba.love^ +||glrnrwjkt.com^ +||glsikeayvohta.site^ +||glssp.net^ +||glucidbabbitt.qpon^ +||glueypraissdrivage.qpon^ +||gluishcreach.cyou^ +||glum-homework.pro^ +||glum-mortgage.com^ +||glumesfracted.cyou^ +||glummersubdiebemud.cyou^ +||glumrevenue.com^ +||glusidforwake.qpon^ +||glutenmuttsensuous.com^ +||glutsillfareplutei.cfd^ +||gluvrkcvvldus.website^ +||glvhvesvnp.com^ +||glvmtlnxdxdhl.website^ +||glwisiqnbmvmd.site^ +||glxacqtlhomgu.online^ +||glxtest.site^ +||glycoseunite.shop^ +||glymanicale.com^ +||glyoxylpowered.cfd^ +||glyrcioxzpvvh.site^ +||gmads.net^ +||gmaigshirczdk.site^ +||gmdxvtbkdrvtl.site^ +||gmdztiffhihsf.online^ +||gmemkuflmihes.online^ +||gmfcfejaqmkma.online^ +||gmfkrivpnkhnb.website^ +||gmhpjreadalkb.site^ +||gmhzabvldunlu.space^ +||gmjzmwcxhonly.rocks^ +||gmkbgpjflkxvm.space^ +||gmkklmvohblvz.space^ +||gmkwefibocegb.online^ +||gml-grp.com^ +||gmlamcnuydabl.site^ +||gmmxpyzumnqaa.store^ +||gmorafjcnoifq.space^ +||gmpavcpqcdhxu.space^ +||gmplthehawpfd.website^ +||gmpustyzebuow.store^ +||gmsizwxqspypi.space^ +||gmvovcfhjgrvt.online^ +||gmxdyrieikifv.store^ +||gmxes.com^ +||gmxvmvptfm.com^ +||gmyktplukjreb.space^ +||gmzdaily.com^ +||gmzuespkejwyz.website^ +||gmzybyparfece.space^ +||gnammaparkee.shop^ +||gnapgvjdksfyl.space^ +||gnasniojreobn.website^ +||gnattereelfare.qpon^ +||gnawpush.com^ +||gnccmainnpkwy.site^ +||gnddthnvmzhdo.site^ +||gnetumsgrf.qpon^ +||gnfwcrhdmmlku.store^ +||gnkyjrriwbbde.site^ +||gnmmbnnbqcwtb.site^ +||gnmwgrnyprdhs.website^ +||gnmwsxajxlakj.vip^ +||gno-protect.pro^ +||gnohaspwczvmo.website^ +||gnoimcggbzuti.online^ +||gnomistwheezycanful.cfd^ +||gnorgi.click^ +||gnptpnwqvpiw.com^ +||gnqzrwjwyjtgy.site^ +||gnrenarsmfyys.website^ +||gnrgjbquvyvml.site^ +||gnrhougqgjthr.site^ +||gnswpcgvafw.com^ +||gntwuwuetfkzg.space^ +||gnutplhbojrfe.site^ +||gnuzwzdkplpqu.space^ +||gnvpzgnvkvnfn.website^ +||gnxfrlfjfbvel.website^ +||gnxzfqmoyvvjt.website^ +||go-g3t-push.net^ +||go-srv.com^ +||go-static.info^ +||go.errpgrt.com^ +||go.syndcloud.com^ +||go2.global^ +||go2affise.com^ +||go2app.org^ +||go2bdmbet.com^ +||go2crystalroll.com^ +||go2jump.org^ +||go2media.org^ +||go2offer-1.com^ +||go2oh.net^ +||go2rph.com^ +||go2speed.org^ +||go6shde9nj2itle.com^ +||go84mcgueyiw1w.cfd^ +||goads.pro^ +||goaffmy.com^ +||goagpwzflvpnx.online^ +||goaleeburrsprater.cyou^ +||goalersoyer.cyou^ +||goaserv.com^ +||goasrv.com^ +||goatsalmighty.com^ +||goatsearlapflock.com^ +||gobackdidy.cfd^ +||gobacktothefuture.biz^ +||gobiomixable.cyou^ +||gobmodfoe.com^ +||gobxihrdqncew.website^ +||gocmmwiotoiwp.online^ +||goddamsvocoid.cyou^ +||goddedkrater.com^ +||godkc.com^ +||godlesscourieradmirable.com^ +||godlessgirlsmoothly.com^ +||godlessobviousfossil.com^ +||godlymyology.cyou^ +||godoxevez.com^ +||godpvqnszo.com^ +||godroonrefrig.com^ +||godsakesucraselarked.cfd^ +||goeducklactase.com^ +||goegesdfnnewf.site^ +||goesduck.com^ +||gogoga.xyz^ +||gogpusley.qpon^ +||gohlmuwpqwxen.space^ +||gohotygirl.com^ +||goilyklykgejy.website^ +||goingtabific.com^ +||gojjutccrvayv.store^ +||goksmejewlqpk.space^ +||gold2762.com^ +||goldangvaccine.qpon^ +||golden-gateway.com^ +||goldenriverbend.com^ +||goldenriverway.com^ +||goldfishdrove.com^ +||goldfishouncereburial.com^ +||goldfishsmellhermione.com^ +||goldleerilyreveals.cyou^ +||goldyempall.cfd^ +||golejddnzqnxb.website^ +||golfedphycictussle.qpon^ +||golfingforbaretuant.cyou^ +||golnkz.com^ +||gomain.pro^ +||gomain2.pro^ +||gomatinequisheoi.com^ +||gomeisasie.qpon^ +||gomgptwhzpqxp.space^ +||gomnlt.com^ +||gonionbobbles.qpon^ +||gonnsiiixhmfp.website^ +||gonreommon.com^ +||gonujovux.com^ +||good-ads-online.com^ +||goodadvert.ru^ +||goodandsoundcontent.com^ +||goodbusinesspark.com^ +||goodbyeeyesight.com^ +||goodbyetenderoperation.com^ +||goodcaesarjonas.com^ +||goodcontentservice.top^ +||goodgamesmanship.com^ +||goodiesreaches.cfd^ +||goodimpressioncrboost.com^ +||goodingcere.shop^ +||goodingcoapt.qpon^ +||goodnaturedinside.com^ +||goodnesstamper.com^ +||goodnightpawnmossy.com^ +||goodsdunelocated.com^ +||goodsmoke.pro^ +||goodwillnourishmentcousins.com^ +||goodytwoironical.com^ +||googie-anaiytics.com^ +||googleapi.club^ +||googletagservices.com^ +||gooierworrit.com^ +||gooiestingots.cyou^ +||gooloeboonpia.com^ +||goonutteredconfessed.com^ +||goosebomb.com^ +||goosesemetinsfoxhole.cfd^ +||goosevisiting.com^ +||goosierappetit.com^ +||goourl.me^ +||goozlebilozonary.cyou^ +||gophykopta.com^ +||gopypteti.com^ +||goqon.com^ +||gor5ow6ic63nl9obw6.cfd^ +||gorafriss.shop^ +||goraps.com^ +||gorceorvetturmit.qpon^ +||gorckvuyefwjt.site^ +||gordiusoer.com^ +||gorgedipitself.com^ +||gorgedroomthyopiner.cyou^ +||gorgeousirreparable.com^ +||gorgeousscrupulous.com^ +||gorillatraffic.xyz^ +||gorsbphljucre.site^ +||gorxusrnnmooe.space^ +||gosbyfencjhqa.online^ +||goshbiopsy.com^ +||gositego.live^ +||gosjumpy.com^ +||goslingskyfte.cyou^ +||gossardagathin.cfd^ +||gossipwheelbarrowmajority.com^ +||gossipyperennial.com^ +||got-to-be.com^ +||got-to-be.net^ +||gotibetho.pro^ +||gotmerchantford.com^ +||gotoyahoo.com^ +||gotrackier.com^ +||gotrackier.io^ +||gottasebilla.cyou^ +||gouareeshovels.qpon^ +||gouikrywyxnmo.store^ +||goujonsglick.qpon^ +||gourdesveruledredrove.cfd^ +||gourdswomerasitups.qpon^ +||goustyanhele.cfd^ +||goutee.top^ +||goutspunctus.click^ +||gouttemittenecderon.cfd^ +||govfhrimbmzvt.store^ +||govrrobif.com^ +||govzzpzvfwctr.site^ +||gowningberi.cfd^ +||gowofhdmdtdhi.online^ +||goxuptilts.cyou^ +||goyoutlain.cfd^ +||gp1yr677objtr4ci8j.rest^ +||gpawrschgrqzb.space^ +||gpfhlajkvdhvv.space^ +||gpfihqkvbcifz.space^ +||gphljspaprvsl.online^ +||gphnmtjcyivjc.site^ +||gpiebbxurugod.online^ +||gpivqupxyvkit.website^ +||gpkbyhhxhpzod.space^ +||gpkrolnkolc.com^ +||gpmodmpdrwbrx.space^ +||gppzwoctbainp.online^ +||gpsecureads.com^ +||gptcusnrxxawp.site^ +||gpthey.qpon^ +||gptzluojzguhq.online^ +||gpuhnwgklkfpq.website^ +||gpvcziftlqnyl.online^ +||gpvnguetcenxt.online^ +||gpvoqfwzgyoxi.space^ +||gpxvhjxwncjte.website^ +||gpyuljehcsmeu.space^ +||gpzoplviptmsx.online^ +||gpzxduotqouau.store^ +||gqalqi656.com^ +||gqanwtkblmacr.online^ +||gqbccmfmrilkt.site^ +||gqbkxohbonzxt.online^ +||gqbpkzehdkjur.site^ +||gqbzbszzbqsdi.online^ +||gqgqdkfcylzqz.store^ +||gqhufphizxbjc.site^ +||gqihdorufksiq.online^ +||gqiikkuqzsxrt.store^ +||gqiqpebzsgcrc.website^ +||gqkrkcicjfzwi.website^ +||gqpamwkausytn.online^ +||gqpphcywxrnji.website^ +||gqprjkneyocuo.site^ +||gqrgftxezoupc.site^ +||gqsphadjlgtcb.website^ +||gqwufbykmkjd.com^ +||gqxgrffjsyviu.space^ +||grabberaramis.com^ +||grabensbocagepluma.qpon^ +||grabschirked.cyou^ +||graceful-operation.com^ +||gracious-parent.pro^ +||gracioushaircut.com^ +||graciousprofit.pro^ +||graciousunique.com^ +||gradualtelevision.com^ +||graduate472.fun^ +||graduateamazingly.com^ +||graduateangeles.com^ +||graduatedfreezing.com^ +||graduatedoutside.com^ +||graduationpaltryherbal.com^ +||graftaftergomoults.qpon^ +||graftedmagicsbryozoa.cyou^ +||graftsemunct.qpon^ +||gragersmourned.qpon^ +||graianracks.cyou^ +||grailerfisty.com^ +||grain2901.com^ +||graineryttrictunhoof.cfd^ +||graithexpire.com^ +||grallichalvas.com^ +||grameala.cyou^ +||grammarsetfact.com^ +||grammevermeil.cyou^ +||grammyopiate.com^ +||gramyscarted.shop^ +||gramyworsts.qpon^ +||granatemisword.shop^ +||grandchildenumerate.com^ +||grandchildlayoutdoorman.com^ +||grandchildsaint.com^ +||granddadfindsponderous.com^ +||granddaughterapexeuropean.com^ +||granddaughterfeminist.com^ +||grandeursubtlecol.com^ +||grandeurtamper.com^ +||grandiose-glove.pro^ +||grandlyupbreed.cyou^ +||grandofirking.cfd^ +||grandshinyinsert.com^ +||granessheenie.cyou^ +||graniterelief.com^ +||grantdk-1.online^ +||grantedidentifiers.com^ +||granthamperydoziest.qpon^ +||granular-reflection.com^ +||granularcloud.com^ +||granularwedding.com^ +||granumchemmysiphons.cyou^ +||graphicspikedisaster.com^ +||graphsmeth.qpon^ +||graplinspark.qpon^ +||grapsusfeather.qpon^ +||graqtcdjzqmib.store^ +||graspblinkdeveloper.com^ +||grasshoppergainfulexcavator.com^ +||grassrochester.com^ +||grateful-desk.com^ +||grateimperial.com^ +||gratesrhachi.cfd^ +||gratiabehew.qpon^ +||gratificationpotsstrode.com^ +||gratinggutdeprive.com^ +||gratisdescarga.xyz^ +||graveactive.cyou^ +||gravegrandmother.com^ +||gravelsemesterflourish.com^ +||gravelyjovialelemental.com^ +||gravenesswomanlesszestfully.com^ +||graveuniversalapologies.com^ +||gravitationtaxpayer.com^ +||gravyhuman.com^ +||grazerpgntt.shop^ +||grazingmarrywomanhood.com^ +||grblaenalkdnn.site^ +||grbsgqafqhkux.store^ +||grdjxdybqwjgr.online^ +||greaseguts.com^ +||great-coach.pro^ +||greatdexchange.com^ +||greaterjoke.com^ +||greatlifebargains2024.com^ +||greatsembarktercels.cyou^ +||grecerephaellotoses.qpon^ +||grecismliftman.cfd^ +||grecquerated.cfd^ +||greedy-reality.pro^ +||greedyfire.com^ +||green-red.com^ +||green4762.com^ +||greenads.org^ +||greenandhappiness.com^ +||greenfox.ink^ +||greengardenpath.com^ +||greenhouseinservices.com^ +||greenlinknow.com^ +||greennaturewalk.com^ +||greenneck.pro^ +||greenplasticdua.com^ +||greenukrispjacanas.qpon^ +||greeslumpier.cyou^ +||greetedenumeratehundreds.com^ +||greetingnoise.com^ +||greetingsdaydreamlitre.com^ +||grefutiwhe.com^ +||grepeiros.com^ +||grescotuit.cfd^ +||grettodayll.cfd^ +||grewiabromus.com^ +||greyaxgqpraqj.website^ +||greyslocanda.qpon^ +||greystripe.com^ +||grfpr.com^ +||grgalylnihcym.space^ +||gridamplitudebabysitting.com^ +||griddededuce.shop^ +||gridder.co^ +||gridderreswear.qpon^ +||gridmalope.qpon^ +||gridnovablock.com^ +||gridrelay27.co^ +||griecepeumus.cfd^ +||griegeleatman.cfd^ +||griekopantoumcowgate.cyou^ +||grievecamouflage.com^ +||grievedvicerecord.com^ +||grievespieteenstate.cyou^ +||grievouslydowntowngroundless.com^ +||griinqddauwbc.website^ +||grillcheekunfinished.com^ +||grilledrationally.com^ +||grillwry.com^ +||grim-pizza.pro^ +||grimacechauffeur.com^ +||grimjudgment.com^ +||grimlyamoralpearl.com^ +||grimlycask.com^ +||grimlywarden.com^ +||grimmernoddledpye.cyou^ +||grimmiaapodema.cfd^ +||grimy-bicycle.com^ +||grinbettyreserve.com^ +||grincircus.com^ +||grindedgreet.shop^ +||grindharassment.com^ +||grindsteeplesprung.com^ +||grinnerskimmia.cyou^ +||griony.xyz^ +||griphushogmace.qpon^ +||gripping-bread.com^ +||grippingdelay.com^ +||gripspigyard.com^ +||grisbetspoons.cyou^ +||grkchngbqikeg.site^ +||grkhxqiwpic.com^ +||grmtas.com^ +||grnezkzjgcwvs.space^ +||grnvvxcjpbokg.site^ +||grogsvolteskulls.cfd^ +||groinenamel.com^ +||groinfont.com^ +||groleegni.net^ +||grookilteepsou.net^ +||grootcho.com^ +||groovertestril.cyou^ +||groovyspudboy.cfd^ +||gropplecaracullay.qpon^ +||grortalt.xyz^ +||grotespace.com^ +||grotesquephilosophy.com^ +||grotzenzelotic.com^ +||grouchyrecover.com^ +||groundafreshjumped.com^ +||groundedmine.com^ +||groundlesscobwebmiller.com^ +||groundlesspowder.com^ +||groundssoapimagination.com^ +||groupcomebackheadphone.com^ +||groupian.io^ +||grousyfulcral.com^ +||groutoozy.com^ +||groutorantes.cyou^ +||groveldenningtormina.qpon^ +||groversbungy.qpon^ +||groweyelid.com^ +||growlingpension.com^ +||grownwrecking.com^ +||growthbuddy.app^ +||growthhomelessprediction.com^ +||grqdkqvxbburi.site^ +||grquadonaxobq.site^ +||grrebjfkmoddeh.com^ +||grsm.io^ +||grtexch.com^ +||grtijxakkewcj.site^ +||grtyj.com^ +||grubby-sink.pro^ +||grubgranted.com^ +||grubpaths.com^ +||grubsnakeconfessed.com^ +||grueledbrerd.shop^ +||grufffeelimitation.com^ +||gruffsubjectpatiently.com^ +||gruidaeedna.shop^ +||grumblestardomtactful.com^ +||grumblybentangtempyo.qpon^ +||grumesjoe.cfd^ +||grumetam.cyou^ +||grummerluthern.cfd^ +||grumphylocn.shop^ +||grumpkali.com^ +||grumpyhopesucceeding.com^ +||grundelorewood.cyou^ +||grundydidymis.cyou^ +||grunthjesper.cfd^ +||gruponn.com^ +||gruzzzmlwpozw.site^ +||grvayuaccatti.space^ +||grvcuwatiogxc.com^ +||grvycpghbiild.website^ +||grwdrkaqpxcna.website^ +||grwp3.com^ +||grwyrdjxutdgx.website^ +||grxaoaohvhegy.space^ +||gryrobvvwvzvv.site^ +||gsbnuvaygaavz.online^ +||gsbskecojgcwm.website^ +||gscftqryahymh.space^ +||gsclubfhopzec.site^ +||gscontxt.net^ +||gsedkytitvtsp.space^ +||gsfpdvjkpishb.website^ +||gsgmbalessijt.site^ +||gshcsoaowxcbz.space^ +||gsiixznhxxqwg.online^ +||gsitojxupxpnv.website^ +||gsjln04hd.com^ +||gsjzlgynhqgyr.website^ +||gsmgwdfyjalio.online^ +||gsmrfilvmjimy.site^ +||gsndkwoaeaijv.site^ +||gspayment.shop^ +||gspkethascafr.online^ +||gspubterc.site^ +||gsqvtzuglvtdgc.com^ +||gsrjuqyzfrqdy.space^ +||gsumjooasiufl.site^ +||gswondenthaiti.org^ +||gswpucfwjokxw.site^ +||gsxytzcnwtyht.online^ +||gsyndication.com^ +||gszipwrttnsxu.website^ +||gt5tiybvn.com^ +||gtbdhr.com^ +||gtbvzopahlyts.website^ +||gtcpicnics.com^ +||gtdwcttwvpxdn.online^ +||gtghsgrneexou.website^ +||gthehsjjdpsag.com^ +||gthunviyyxh.com^ +||gtiqupisxnouh.site^ +||gtlmblpvpirgj.site^ +||gtnjvdaffxjvj.site^ +||gtosmdjgn.xyz^ +||gtraiqgaqwlrk.website^ +||gtrem.site^ +||gtrlhbeizihyy.site^ +||gttaints.com^ +||gtthvpzlnmueh.store^ +||gttmehelya.cyou^ +||gtuetxpyzuaeg.website^ +||gtufmunzu.in^ +||gtuxvjpwgyzob.online^ +||gtuzanksz.com^ +||gtymujomz.in^ +||guaiacrinka.qpon^ +||guaicanhalids.cyou^ +||guanswholely.cfd^ +||guarapototes.com^ +||guardedoccupybatter.com^ +||guardsegment.com^ +||guareapyrites.cfd^ +||guarenclosegamp.cyou^ +||guarraumagotsyllabe.cfd^ +||guasasurging.cfd^ +||guberlasps.cyou^ +||guchihyfa.pro^ +||guconninglogoes.cfd^ +||guddlerpopular.cyou^ +||gudeyzcpsvial.online^ +||guecqeemconot.online^ +||guehsgqmawega.online^ +||guepardbosset.qpon^ +||guestconspiracy.com^ +||guesterfending.cyou^ +||guetarevotareserve.cyou^ +||gufferloliindan.cfd^ +||guggletbeebees.qpon^ +||gughkbhwynapy.website^ +||guhmzgbwilvst.space^ +||guhwatazr.in^ +||guiacflooeybeman.cyou^ +||guibaarcosekoae.qpon^ +||guidelingerbeige.com^ +||guidepaparazzisurface.com^ +||guidonpluteus.com^ +||guidonsfeeing.com^ +||guidonsham.qpon^ +||guidricracs.cfd^ +||guigectgkeres.qpon^ +||guilderduskish.cyou^ +||guiltygoal.com^ +||guiltyimpediment.com^ +||guiltymince.com^ +||guimpegaspswaes.qpon^ +||guitarinterim.com^ +||guitarmist.com^ +||gujarkyanisenetbush.cyou^ +||gujqjoqszgwkv.online^ +||gukahdbam.com^ +||gukzebkckkvxv.website^ +||gulesarable.qpon^ +||gulioamsivgik.site^ +||gulistyiddish.cfd^ +||gulleystarnie.qpon^ +||gullstheasum.cfd^ +||guloimmisincamp.qpon^ +||gulpedcountwhipped.com^ +||gulpermoloid.qpon^ +||gulsachjewing.qpon^ +||gulsyangtao.guru^ +||gumgxeesgjiat.website^ +||gummierhedera.life^ +||gummosepotifer.qpon^ +||gummoussubsetlegers.cfd^ +||gummy-ability.pro^ +||gummyability.com^ +||gummypours.cyou^ +||gumseparately.com^ +||gumshoetiddler.cyou^ +||gumyfui.com^ +||gunfireendorse.com^ +||gunft.com^ +||gungelayery.cfd^ +||gunkyjossmnla.store^ +||gunlortnzuzax.space^ +||gunnungalnus.cyou^ +||gunont.xyz^ +||gunselscyan.shop^ +||gunselsdern.shop^ +||gunzblazingpromo.com^ +||guohbhszadtzh.space^ +||guoiriawxkaew.website^ +||gupbokzqszbvn.store^ +||gurcsrupycbis.space^ +||gurdylangel.cfd^ +||gurgleupstandingexist.com^ +||gurglytabloid.cyou^ +||gurkabiuret.qpon^ +||gurussniddle.cyou^ +||gusaincetanes.cyou^ +||gusfioner.live^ +||gussame.com^ +||gussbkpr.website^ +||gustardgigger.qpon^ +||gustedtafflerinse.cyou^ +||gustusnidgety.qpon^ +||gusvoxyroosho.site^ +||gutlessparsec.qpon^ +||guttldzqtedhr.space^ +||guuzmczcfmhnt.com^ +||guvmmaolnk.com^ +||guwupmxscowhp.online^ +||guwxftdiaensk.website^ +||guyjrraidsrlk.store^ +||guyoetiepwijy.online^ +||guzzlealibied.cyou^ +||gvdjmcztiqwhw.website^ +||gvdxudyoswyfp.online^ +||gvebfzopfpezm.website^ +||gvfbasfpatxkw.site^ +||gvfxthlyvglnptg.com^ +||gvgotlyefgqek.site^ +||gvintwtnastmd.space^ +||gvjhwvhmvidfh.website^ +||gvlntdvflisny.space^ +||gvmogilshxbdg.store^ +||gvmsylgqszvjg.space^ +||gvofownkrkidy.space^ +||gvokwoqawlwym.space^ +||gvooqtrsbfueb.site^ +||gvqsojuzvabok.site^ +||gvqvrydru.com^ +||gvsbtyngvsmoe.online^ +||gvsevgkqvgixo.site^ +||gvt2.com^ +||gvtn15ptwzuqunki3ph7ouw3.cfd^ +||gvvjxpto.com^ +||gvwzokdttbsnj.online^ +||gvxcjyqnhwdwq.website^ +||gvxyyvdveimgk.space^ +||gvyrxseoqvugu.online^ +||gvyyuickvuwof.website^ +||gvz6e16t5lcpwtgwti7o.cfd^ +||gvztlapluvckr.online^ +||gwallet.com^ +||gwaqanrpzkknt.website^ +||gwiryqwgylcdq.online^ +||gwithearama.org^ +||gwjmfxgdooxdd.website^ +||gwnxfkfbqf.com^ +||gwotxytfckfor.store^ +||gwpifpeauhhwk.online^ +||gwrqslmseajux.site^ +||gwrsyyrghwnuo.space^ +||gwrtczzigweet.online^ +||gwvdcsktrvzjc.site^ +||gwvnfgphqirtq.site^ +||gwxinddklgw.com^ +||gwyltsmdekpgt.space^ +||gwynorxqqcqxg.site^ +||gx101.com^ +||gxbpiovpukbaq.website^ +||gxcizcxyzjnpb.website^ +||gxcmcnzgoxjcu.online^ +||gxetowrzlnqbf.online^ +||gxffgjfbgmdvf.site^ +||gxfftsdvmekwu.site^ +||gxfrctjcgfstn.website^ +||gxlyxvjvwmbff.store^ +||gxmlislplwpubd.com^ +||gxohwrfaijevy.site^ +||gxordgtvjr.com^ +||gxozdwttsqtqp.website^ +||gxtihgivnpgei.online^ +||gxvdzkmvwmgua.online^ +||gxvlkzwimkiyb.site^ +||gxwuzuvteofqw.website^ +||gxxdsbbklvze.com^ +||gxyduajakignv.website^ +||gxyrpjc41262c8666geqw59u3.cfd^ +||gxzdtidwuvmtu.website^ +||gybmppuezjtqe.space^ +||gycjygwxcm.com^ +||gycrrespjfqwk.store^ +||gyemolge.shop^ +||gyfgwpqnkitsd.website^ +||gyftxmucdqvup.xyz^ +||gygplfimptkaj.website^ +||gyhitscnehrid.online^ +||gyipdlomyttqb.online^ +||gyjerttqiqokh.online^ +||gylavpnvbaacd.online^ +||gylor.xyz^ +||gylxwpwabgp.com^ +||gymnastbobooti.shop^ +||gymnastdoneeuranite.cfd^ +||gynicgentry.qpon^ +||gynietrooe.com^ +||gyooocelofurv.store^ +||gyoqtcogunavk.site^ +||gyospsqu.com^ +||gypcancersexamen.cyou^ +||gypjdmigbouth.website^ +||gypscruxeszokor.cyou^ +||gypsousalamo.cyou^ +||gypsousimagism.cyou^ +||gypsyairplanereign.com^ +||gypsyproducing.com^ +||gypsytriggerscrazy.com^ +||gypuwurlmkxrmb.com^ +||gyrallydaiker.com^ +||gyrenesnumbs.cyou^ +||gyroix.com^ +||gys5.com^ +||gyspsffbmfefx.space^ +||gyvestaxis.cyou^ +||gyvxiyeixsjfl.website^ +||gywwzmejfzkrs.site^ +||gyxhwdysotvbj.store^ +||gyybyitnnqitf.online^ +||gyyylfxjupsfj.website^ +||gyyzlvkb5ew3fkxh.cfd^ +||gyzeogdyouxsr.website^ +||gzbbbzhidqwcf.online^ +||gzberdhytgbsy.website^ +||gzbivgztyxmdj.site^ +||gzclatfhwvpsk.space^ +||gzdsnsgboqrbs.online^ +||gzefeydgsckbj.online^ +||gzewqaxbkwijp.website^ +||gzgejhwjeoufd.store^ +||gzgmhbgnvqiri.space^ +||gzkfofbgedfor.website^ +||gzkignkqikrix.online^ +||gznyfblintdcj.website^ +||gzomjiuoedpnu.website^ +||gzooedejrrjog.website^ +||gzoozkenpgaua.online^ +||gzoznnypuhodq.site^ +||gzrlncudpybtf.site^ +||gzsmnojrwfmft.website^ +||gztdvuuihunso.website^ +||gzugqzgsfr.com^ +||gzvknriwrcwtt.website^ +||gzynllfiy.com^ +||gzzfcmflxfspx.store^ +||h0w-t0-watch.net^ +||h12-media.com^ +||h1jxxt3639j6gzj3lb2wot87gxji412jwy.rest^ +||h23l8rb5nme3k41ixmepeetqwkkgvjevcl.cfd^ +||h345iggp8og961j2.cfd^ +||h52ek3i.de^ +||h5lwvwj.top^ +||h66niuy6.xyz^ +||h67oipv26pbif9xmhl435u7i8.cfd^ +||h6irng4w1y99gbr9leu6vknf.cfd^ +||h74v6kerf.com^ +||h7le2r6t2c7o7i5hxyce587z.cfd^ +||h8btc1cy8v4um3.rest^ +||h8bubn478kptw9gmj8z3jeff9co.cfd^ +||haberdasherycorpse.com^ +||habetcrammer.qpon^ +||habilepopshop.cyou^ +||habirimodioli.com^ +||habitanchowses.cyou^ +||habitattexture.com^ +||habituecharrostudder.qpon^ +||habsqzkeeemjm.store^ +||haceklocular.cyou^ +||hackerycooey.shop^ +||hackmanechoiccrotons.cfd^ +||hadrealshoemaker.com^ +||hadronid.net^ +||hadsanz.com^ +||hadsecz.com^ +||hadsokz.com^ +||hadtwobrightsap.com^ +||haedsennite.cyou^ +||haekefgpnpghu.site^ +||haemalcurvet.qpon^ +||haemalsquatty.cfd^ +||haemichellionweakish.cfd^ +||haeminaprilis.shop^ +||haenardusnapped.cfd^ +||haeyehedgctru.website^ +||hafehsagkeyrr.space^ +||haffnetworkmm.com^ +||hafhtodnemqud.store^ +||hafqflsjvhnmc.space^ +||hafreopenspassel.cyou^ +||haftersunglory.cyou^ +||hagbornflioma.com^ +||hagdonsredue.cfd^ +||hagech.com^ +||haggardsingefang.com^ +||hagglewristed.shop^ +||haggybarredcantiga.cyou^ +||haginsensiblesupervise.com^ +||hagnutrient.com^ +||hagplpqxuqunw.store^ +||hagshipsturte.qpon^ +||hagweedrecit.cyou^ +||hagxcpwefvcey.site^ +||hahuxjnpasaob.site^ +||hai8g.com^ +||haiacvqlvmprqu.com^ +||hailbrunchsharpen.com^ +||hailiixvvazmt.site^ +||hailofficemeasure.com^ +||hailsprahus.shop^ +||hainantopkickcootie.cfd^ +||haircutambient.com^ +||haircutcrypticunlikely.com^ +||hairdressercurriculum.com^ +||hairdressergraduate.com^ +||hairerelessadallis.cfd^ +||hairoak.com^ +||haivamtuzeton.site^ +||hajfnkyzhvbqm.online^ +||hajjicliversskraigh.qpon^ +||hakbgofalvjbs.space^ +||hakimtussarsmezcal.qpon^ +||hakkaoekist.com^ +||hakvzygpdpnbx.online^ +||halalasbisks.qpon^ +||halberdosiery.com^ +||halceca.qpon^ +||halfbakedhaul.com^ +||halfdemocratic.com^ +||halfpriceozarks.com^ +||halfyearturf.com^ +||halloesjuncat.cyou^ +||halloeskevils.qpon^ +||halloosreacher.com^ +||hallowchimin.shop^ +||hallucinatecognizance.com^ +||hallwaysuspendbade.com^ +||halmnuthook.cfd^ +||halogennetwork.com^ +||halozix6.net^ +||halterchildsabanut.cyou^ +||halvaglegmackled.qpon^ +||halvemanslaughtergild.com^ +||halvepassionglow.com^ +||halvepollen.com^ +||hamipdnohiesz.site^ +||hamithrenos.cfd^ +||hamletoutnumberrascal.com^ +||hamletuponcontribute.com^ +||hammamfehmic.com^ +||hammerhintthesaurus.com^ +||hammeroathsecurity.com^ +||hammersmettlesnorth.qpon^ +||hammockbarley.qpon^ +||hammockclusterstumble.com^ +||hammocksmellie.cyou^ +||hammocksteedconjecture.com^ +||hamsterregisterlater.com^ +||hamsterwailseveral.com^ +||hanceddomptjewels.cyou^ +||handbooksnapped.com^ +||handcuffmulberryscattered.com^ +||handgripknuckle.com^ +||handhighlight.com^ +||handicappedpreface.com^ +||handjarjargle.cfd^ +||handleinexecutors.net^ +||handlerout5050.com^ +||handlesdenoted.qpon^ +||handlesmoves.qpon^ +||handnlacdtehg.website^ +||handsome-storm.com^ +||handtub.com^ +||handwritingautumn.com^ +||handwritingglass.com^ +||handy-tab.com^ +||handymandeveloper.com^ +||handymanthemepumpkin.com^ +||hangeealoysia.cfd^ +||hangersguids.qpon^ +||hangieareola.cfd^ +||hangingduro.com^ +||hangmenchichis.cyou^ +||hangoverknock.com^ +||hanifdocquet.qpon^ +||hankcoinspeppermint.com^ +||hankfixplace.com^ +||hankynecessarily.com^ +||hannabedews.cfd^ +||hanoimorrhuacentrex.qpon^ +||hanqdaysfeucn.site^ +||hanselsgipping.com^ +||hansgild.qpon^ +||hanssubside.com^ +||hanypkwwltkhj.online^ +||hapidextral.cyou^ +||haplessglochidloeing.qpon^ +||haplitecauson.cfd^ +||haploidtongueymeubles.cyou^ +||happedromany.cfd^ +||happenedquantity.com^ +||happensusan.com^ +||happilyfreakishobedience.com^ +||happinessunderneathmotion.com^ +||happy-davinci-53144f.netlify.com^ +||happy2dates.com^ +||happyblinded.qpon^ +||happyleafmotion.com^ +||happylength.com^ +||happytemporary.pro^ +||happytrailquest.com^ +||happyvibetoday.com^ +||hapqrakgdpnvg.online^ +||haqwfanzmxcrm.site^ +||harajukustyle.live^ +||harassingknack.com^ +||harassmentparttimenail.com^ +||harborjavgg124.fun^ +||harbourbreederdump.com^ +||hard-midnight.com^ +||hardcoretrayversion.com^ +||hardendeliveringpower.com^ +||hardensstenciljet.cfd^ +||hardertouch.shop^ +||hardexpendstrategy.com^ +||hardfinbanana.com^ +||hardlygouacheyuncan.cyou^ +||hardtofind-home.pro^ +||hardypistol.com^ +||hareldabarsacxenons.cyou^ +||haresmodus.com^ +||harfangtibicenshills.cfd^ +||hargzcacgltoe.site^ +||harimoutyelp.cyou^ +||harksashily.cfd^ +||harlottippier.com^ +||harmelwigdompellock.qpon^ +||harmful-hire.pro^ +||harmful-park.com^ +||harmfulevery.com^ +||harmlesstranquilizer.com^ +||harmo-woe.com^ +||harmoniouspolice.pro^ +||harpiessassingprince.cyou^ +||harpisttoilyogees.qpon^ +||harrenmedianetwork.com^ +||harridaphizog.com^ +||harsh-award.com^ +||harshlysupportedsleazy.com^ +||harshplant.com^ +||harshraise.com^ +||hartallcongo.qpon^ +||hartattenuate.com^ +||harthindthrough.com^ +||hartlyslask.qpon^ +||harttrouvre.cfd^ +||hassockeggbawdric.cyou^ +||hastediminutiondoes.com^ +||hastenassume.com^ +||hastenedassessmentbaking.com^ +||hasteninto.com^ +||hatagashira.com^ +||hatbandwouchlyrical.cfd^ +||hatchneat.com^ +||hatchord.com^ +||hateful-pride.pro^ +||hathirenic.cyou^ +||hathomeynapoleon.com^ +||hathpedant.cfd^ +||hatqnnwgdxvkq.online^ +||hatredspongetrustworthy.com^ +||hatroopunfunny.cfd^ +||hatsflypastcloves.qpon^ +||hatsmindsinfatuated.com^ +||hatsoromo.qpon^ +||hatsudrkfflia.website^ +||hatteryambry.qpon^ +||hatwhipbesiege.com^ +||hauboisphenols.com^ +||haulcurvedpink.com^ +||hauledneedy.com^ +||hauledquaverguardian.com^ +||haulierabiotic.cyou^ +||haulsquirt.com^ +||haumdnmzotykn.space^ +||haunchfossil.com^ +||hauntequatorsent.com^ +||hauntingreferencewire.com^ +||hauntymimmest.com^ +||hauufhgezl.com^ +||havagecarajoblazes.cfd^ +||havboban.com^ +||haveameet.com^ +||havenclick.com^ +||havenfromcomputing.com^ +||havenyl.xyz^ +||havetestifyharriet.com^ +||havingunderwear.com^ +||haviortrikirarils.cyou^ +||havstpqgejqbw.site^ +||hawbuckclypei.qpon^ +||hawingour.qpon^ +||hawkbitanax.shop^ +||hawkedbhang.shop^ +||hawkedsettles.qpon^ +||hawkierussel.cyou^ +||hawserlimose.com^ +||hawsuffer.com^ +||haxrkdicbviay.online^ +||haychalk.com^ +||hayfetidterminal.com^ +||haymishflicks.cfd^ +||hayseedamitie.qpon^ +||haywcfdx.com^ +||hayyzetxfqwrx.website^ +||hazellytopical.cyou^ +||hazelmarks.com^ +||hazelstrictlyheadless.com^ +||hazesimps.cyou^ +||hazicu.hothomefuck.com^ +||hazingninut.shop^ +||hazobwcw.in^ +||hazyexamples.com^ +||hazzanssudanic.com^ +||hb-247.com^ +||hb94dnbe.de^ +||hbbvlycolsokk.site^ +||hbciisgntlccc.site^ +||hbcnbdoayeycb.site^ +||hbcusdwpikskh.online^ +||hbezqddptvioc.website^ +||hbfdhkdeaatch.space^ +||hbgfotantkwpv.site^ +||hbhood.com^ +||hbjl23w8.xyz^ +||hbklepht.qpon^ +||hbloveinfo.com^ +||hblsqhwlsfuax.space^ +||hbmispage.cfd^ +||hbmjhfdxtwhwq.website^ +||hbmufipefxfts.website^ +||hbn2licnfvevrno.cfd^ +||hboehzaifxnsn.website^ +||hboylaaafqqwl.space^ +||hbphppfjuonez.site^ +||hbpwxguusxnzg.website^ +||hbqhtkclltke.com^ +||hbr2czm7pfy994i.rest^ +||hbrqvvaapvvju.online^ +||hbudqnvaytwdc.world^ +||hbutwehaveinour.com^ +||hbuwnkqnpsskn.space^ +||hbvgidhsgmjrz.website^ +||hbwztfpirtboe.site^ +||hbxpjlbmhffda.space^ +||hbygyhcgjvclv.online^ +||hbyopxzrrtetp.store^ +||hc8uf94knvyq3gm9km187wuct3wx6r5w2.cfd^ +||hcatwjkchbjpv.website^ +||hcbgtikhsisme.online^ +||hcbhojcwifydg.store^ +||hcegngzriixcl.site^ +||hcexudfi.in^ +||hcg63cbnoxocmc2uo1ljfvf31mxwob9tock.cfd^ +||hcgjbcslw.com^ +||hcgrrlaawtra.com^ +||hcgzmbfewulwh.website^ +||hchwkwwflqsrc.website^ +||hcioruffodhya.store^ +||hcjjizmrsilri.online^ +||hcjqgdkjoljarh.com^ +||hclcvthefqyac.space^ +||hclgbntmci.com^ +||hclmnarlsmleo.site^ +||hcntfxihubqde.website^ +||hcpnhgcxoaiaf.website^ +||hcrjyrvbwbgluii.com^ +||hcrnxbzntqrks.online^ +||hctgwbignhfoz.website^ +||hctkpfwgbobyz.site^ +||hcubjomholwda.online^ +||hcvqpttiicilq.site^ +||hcxjxdmopkbft.space^ +||hcyrwitdvlznv.store^ +||hcytmigfgeshu.store^ +||hd100546c.com^ +||hdacode.com^ +||hdat.xyz^ +||hdbcdn.com^ +||hdbcoat.com^ +||hdbcode.com^ +||hdbcome.com^ +||hdbkell.com^ +||hdbknoologygoularo.cfd^ +||hdbkome.com^ +||hdbtop.com^ +||hdbudbsujobyi.space^ +||hdcrspameggfu.site^ +||hddhwmvcvhkkd.site^ +||hddqipouhbcyj.online^ +||hddrfyoifiuad.website^ +||hdeapukntskyp.online^ +||hdfnsoytorpam.click^ +||hdggrhgzgptxg.site^ +||hdkokhzvalbxn.tech^ +||hdlyfrxtnjpbc.site^ +||hdmxutcrtereb.online^ +||hdnlmwsibimqn.website^ +||hdpaaaidikjlf.site^ +||hdppc.com^ +||hdrctfcvghgvq.site^ +||hdrjnmjbqlerc.site^ +||hduolaveybzmo.site^ +||hduwzmmomocze.store^ +||hdvcode.com^ +||hdyaeexvlldpygl.com^ +||he32v2ceuq6e9x6ewv7kel5.cfd^ +||he34rm8256g72prijmq.cfd^ +||he7ll.com^ +||headacheaim.com^ +||headline205.fun^ +||headlongrelic.com^ +||headphonedilution.com^ +||headquartersfallclassify.com^ +||heapunderstood.com^ +||heapviagram.cfd^ +||heardaccumulatebeans.com^ +||heardspadedime.com^ +||heartachegrabbedlaunching.com^ +||heartbreakslotserpent.com^ +||heartburnsurroundingcourtroom.com^ +||heartdatiing.com^ +||heartedimmensely.com^ +||heartedsaloons.qpon^ +||hearthquiteparson.com^ +||heartilyfootindebted.com^ +||heartilyidle.com^ +||heartilyscales.com^ +||heartlessanthemantiquity.com^ +||heartlyzelmeguilp.cyou^ +||hearty-king.pro^ +||hearty-text.pro^ +||heartymisspell.com^ +||heartyquit.com^ +||heatenstroll.shop^ +||heateradvisoraplenty.com^ +||heaterlumberexploit.com^ +||heathertravelledpast.com^ +||heatingapiece.com^ +||heattributedpineapple.com^ +||heaumepalmito.com^ +||heavenfull.com^ +||heavenly-holiday.com^ +||heavenlyindication.com^ +||heavenlylist.pro^ +||heavenomitzoom.com^ +||heavenspecificallygait.com^ +||heavepacepallor.com^ +||heaverdonnas.cfd^ +||heavy-management.com^ +||heavyadviseflowerbed.com^ +||hebrewssusianmetier.cyou^ +||hecdwyyphbblq.space^ +||hectorounce.cyou^ +||hectorspankasked.com^ +||heddlesmagrim.shop^ +||hedgeabruptunlucky.com^ +||hedgesniffle.com^ +||hedgingfingan.cfd^ +||hedwigflooredventure.com^ +||heedfulmacan.cfd^ +||heeloven.com^ +||heelremeet.qpon^ +||heezyocdqfdfk.site^ +||heezyslaves.cfd^ +||hegapntlcebdy.online^ +||hegqbcoplnfmx.site^ +||hehewow.com^ +||heikumcocker.com^ +||heimdaltaosseeably.cfd^ +||heinbfmpsdxnv.online^ +||heinouswinesoatcake.qpon^ +||heiressplane.com^ +||heirserverrecruiting.com^ +||heirstirringsculpture.com^ +||heisthuffier.cyou^ +||heixidor.com^ +||hekhyzlq.com^ +||hekowutus.com^ +||helcoappale.qpon^ +||heldsadness.com^ +||heleric.com^ +||helesandoral.com^ +||helib.xyz^ +||helicient.com^ +||heliconthrap.qpon^ +||heliumads.com^ +||helixingroszy.shop^ +||hellboxdelude.cfd^ +||hellednoosed.cfd^ +||hellmanloriesupdraw.qpon^ +||helltraffic.com^ +||helmssiestas.qpon^ +||helmsuction.com^ +||helodesmaoism.qpon^ +||helpertesthome.com^ +||helpfuldorsaleubangi.qpon^ +||helvellreest.com^ +||hem41xm47.com^ +||hemalanti.cyou^ +||hemineedunks.com^ +||hemipodbangsupsends.cyou^ +||hemlinetaglet.cfd^ +||hemopodfilao.qpon^ +||hemplardoon.qpon^ +||hemsepopee.shop^ +||hemvcieezucdp.website^ +||hemyn.site^ +||hemzwfinlnwoi.site^ +||henamgvrhezki.space^ +||hennaedredeyes.qpon^ +||henryschav.qpon^ +||hentaigold.net^ +||hentaionline.net^ +||henzxztnnwmhp.website^ +||hepcatprosily.cyou^ +||hepteneidolsephetic.cyou^ +||heptenemaileplugs.qpon^ +||heptix.net^ +||heqipjkwjhnnn.online^ +||heraudfigured.cyou^ +||herbalslinkboy.cfd^ +||herberhorizon.cfd^ +||herdessdefacto.cfd^ +||herdessyourt.cfd^ +||herdpiteousextensive.com^ +||herdutmostslush.com^ +||heremstethal.cfd^ +||heresanothernicemess.com^ +||hereswarms.cfd^ +||heretopgirls.net^ +||heretoprecut.cyou^ +||hermeleoxalato.shop^ +||hermichermicgenerationhers.com^ +||hermoqueereyelike.qpon^ +||hernegerm.cfd^ +||heroesshoondee.shop^ +||heroicfuneral.com^ +||heroicharpy.cyou^ +||heroictoday.com^ +||heroifyrotates.cfd^ +||heroinagnize.qpon^ +||heronattendedheartache.com^ +||heroptionssideway.com^ +||herparquet.com^ +||herpassages.com^ +||herryimmixed.com^ +||herslarinae.cfd^ +||herynore.com^ +||hesitationsection.com^ +||hespringashewasfly.org^ +||hesterswallet.qpon^ +||hestyoaesnqpq.site^ +||hetadinh.com^ +||hetahien.com^ +||hetapus.com^ +||hetarust.com^ +||hetaruvg.com^ +||hetbvptffmxgj.site^ +||hethsminter.com^ +||hetnu.com^ +||hetterbarytas.shop^ +||hettysoured.qpon^ +||hetuwnhqvjdss.store^ +||heuchscashaws.qpon^ +||heuquabdvgccd.online^ +||heusqlhlzmgtg.online^ +||hewanasagau.qpon^ +||hewedzebulun.shop^ +||hewgmewaonfqo.com^ +||hewholegunky.qpon^ +||hewnknqpcmncw.site^ +||hewornpllzsau.site^ +||hewotwzpqdugo.site^ +||hexacidxref.shop^ +||hexapodbreech.cyou^ +||hexescancans.cyou^ +||hexishagged.cfd^ +||hexishipshot.cfd^ +||heyhuwldmzxok.online^ +||heypreceding.com^ +||heyptsfbxntii.site^ +||heyserves.com^ +||heyuhzdhoxcms.online^ +||hf5rbejvpwds.com^ +||hfbhbzlflpuiz.site^ +||hfbjvqprni.com^ +||hfcqcubumdrpp.website^ +||hfdqmmjkagyps.site^ +||hfdrgnarmwzsy.space^ +||hfeoeekkncvic.store^ +||hffxc.com^ +||hffxfbuartqzw.online^ +||hfgvzpatnjoti.website^ +||hfhmqcggyjcne.online^ +||hflflbargcuje.website^ +||hflpchbqhobkg.website^ +||hflxmfjkugjeh.site^ +||hfneintmgusor.online^ +||hfnfoupaytndf.space^ +||hfnxsdjtwyopi.site^ +||hfomzuujinjel.online^ +||hfopteyhgqeas.online^ +||hfqsgcclxlvll.online^ +||hfqxrivbvubyz.store^ +||hftciwcfqrotx.online^ +||hftghhebcuxky.website^ +||hfulicte.com^ +||hfvn6kcfykruk79p337e69h8pnrw.cfd^ +||hfxvwhstgitib.site^ +||hfyavgagbiidq.site^ +||hg-bn.com^ +||hgagwcznmclhv.store^ +||hgbdjawazluzd.site^ +||hgbn.rocks^ +||hgbqowuzgonia.website^ +||hgbqsxuptruuf.website^ +||hgcnivwtrbcab.online^ +||hgcnjlxajzrja.site^ +||hgcustom-ad.xyz^ +||hgcuvolqqolld.site^ +||hgeepechncyte.space^ +||hgfosqroovvpw.website^ +||hghit.com^ +||hgisekhkuhrlo.online^ +||hgivfbpd.com^ +||hgjrgltxgcsvu.site^ +||hgmggiozinfbi.store^ +||hgmnrvwbllpit.space^ +||hgobdrjitmvi.com^ +||hgolecgocxwio.space^ +||hgoxvtdgfcdlg.website^ +||hgrepart.cyou^ +||hgtasizbgvjdn.website^ +||hgtpidptdpxmo.space^ +||hgvigqjolbnnt.store^ +||hgwkgddzhtbac.space^ +||hgzqyoxssozyp.space^ +||hh788.com^ +||hhbetevelthyg.site^ +||hhbypdoecp.com^ +||hhdfwrsoaohsf.space^ +||hhepwzpsjkkms.site^ +||hhhrrcaljmtcw.website^ +||hhit.xyz^ +||hhiurciioidum.space^ +||hhjcuoyaaekut.site^ +||hhjmzywlpqqkb.space^ +||hhjow.com^ +||hhjtfambhvzax.site^ +||hhklc.com^ +||hhkld.com^ +||hhmrsmghtbdln.site^ +||hhowyijfffxry.online^ +||hhplkjrwrcflr.space^ +||hhtteocvkxvph.online^ +||hhudialsvwews.site^ +||hhuobnajd.com^ +||hhveamgnjqayj.space^ +||hhvhpxvuu.com^ +||hhxqadbgokgtb.online^ +||hhztfzqnmduga.space^ +||hiajcgduerzom.space^ +||hiancortghcfo.store^ +||hiasor.com^ +||hibawsvdvfsul.site^ +||hibegyqmbinwo.site^ +||hibids10.com^ +||hiboowbrkegop.site^ +||hicnwrwfphkyz.website^ +||hicoriatricia.qpon^ +||hicrqskneechm.website^ +||hidcolouredclink.com^ +||hidden-fortune.pro^ +||hiddengolf.pro^ +||hiddenmilk.com^ +||hiddenseet.com^ +||hidecatastropheappend.com^ +||hideousnumber.com^ +||hidestats.online^ +||hidingallelic.cfd^ +||hidlinsboart.com^ +||hidpatrick.shop^ +||hidwnatidokyl.online^ +||hidyiieqhuahn.website^ +||hiederspanule.cfd^ +||hieldrenown.cyou^ +||highconvertingformats.com^ +||highcpmcreativeformat.com^ +||highcpmgate.com^ +||highcpmrevenuegate.com^ +||highcpmrevenuenetwork.com^ +||highercldfrev.com^ +||highercldfrevb.com^ +||highlightattentions.com^ +||highlyhighvacuum.com^ +||highmaidfhr.com^ +||highmanapts.com^ +||highmandampycrews.cyou^ +||highperformancecpm.com^ +||highperformancecpmgate.com^ +||highperformancecpmnetwork.com^ +||highperformancedformats.com^ +||highperformancedisplayformat.com^ +||highperformanceformat.com^ +||highperformancegate.com^ +||highprofitnetwork.com^ +||highratecpm.com^ +||highrevenuecpm.com^ +||highrevenuegate.com^ +||highrevenuenetwork.com^ +||highwaycpmrevenue.com^ +||highwayearningsexpand.com^ +||hignflrwzlwhw.online^ +||higpcebtahfsg.online^ +||hiinscgrshtbh.space^ +||hiiona.com^ +||hijackprolans.cfd^ +||hijbogiaodgil.space^ +||hikdojlbwqqpq.online^ +||hikermulley.cfd^ +||hikingsunspecialty.com^ +||hikvar.ru^ +||hilar.xyz^ +||hilariousdeposit.pro^ +||hilariouseconomics.com^ +||hilerant.site^ +||hillaryluvian.shop^ +||hillglamorous.com^ +||hillsudic.cfd^ +||hilltopads.com^ +||hillunornly.shop^ +||hiltszbirzcky.store^ +||himediads.com^ +||himekingrow.com^ +||himosteg.xyz^ +||hinauupshut.cyou^ +||hindrancegate.com^ +||hintbreakfastrather.com^ +||hintfacto.shop^ +||hinwwezapkyiu.website^ +||hinyvzedpcuiz.space^ +||hiobplukootgn.site^ +||hip-97166b.com^ +||hipals.com^ +||hipcskzwilnnw.website^ +||hipjjdrfpdmqt.com^ +||hippaqueans.qpon^ +||hippenbatton.cyou^ +||hippierrapiner.com^ +||hippingdsectspitapat.qpon^ +||hippobulse.com^ +||hiprofitnetworks.com^ +||hipzpktsyugcu.website^ +||hiringsunible.shop^ +||hirony.xyz^ +||hirselsousted.qpon^ +||hirseluric.cfd^ +||hispidtux.com^ +||hissharppremiere.com^ +||histi.co^ +||histogramoutindustries.com^ +||histoneleppyglue.cyou^ +||historianoutstandingoverwhelm.com^ +||historicalaudible.com^ +||historicaldefiniterare.com^ +||historicalinflate.com^ +||hiswingsandmaki.com^ +||hitbip.com^ +||hitchprivilege.com^ +||hitcpm.com^ +||hitlate.com^ +||hivanjck.in^ +||hivedskeough.qpon^ +||hivestenchtoffee.com^ +||hivuxuonibnte.space^ +||hiwgyedcl.xyz^ +||hiwjsmsmxcg.com^ +||hiwslahrzvibl.website^ +||hiwucomhecyod.site^ +||hixyhbsodvkip.site^ +||hiyeu553nuypvbz13ce5qc.cfd^ +||hiynedguboxqm.website^ +||hiyszuqbiglyh.space^ +||hjarbxlyvqrlq.website^ +||hjcabozdxphbq.space^ +||hjcgucgcypvex.store^ +||hjclprovgorvp.store^ +||hjdhlpthcezvm.space^ +||hjdrlkhcnkesl.site^ +||hjidtzxvgybjp.site^ +||hjjugtkcrizxg.website^ +||hjkk5ewh6ttw8gujm9p69ocpgptl37n47xyjgof.cfd^ +||hjlhzdhkwmhhq.site^ +||hjlqivzfrrsgg.website^ +||hjrzuojyxuewm.global^ +||hjtpbyachgtvu.online^ +||hjtzzpfcljcem.site^ +||hjuapkyglczhp.site^ +||hjwqvivxoymvw.site^ +||hjxajf.com^ +||hjyhqbgodfdzg.website^ +||hkaixrkwqwubw.website^ +||hkcdwvzfosepe.online^ +||hkcqpidtxaqkl.online^ +||hkepexmqrg.com^ +||hkeyounqiaowh.space^ +||hkfwgdlnmjwwb.online^ +||hkgauyxrmsrdv.space^ +||hkgrrrscwssqq.website^ +||hkgvjwodselbk.site^ +||hkhybjktdvdwt.space^ +||hkihkoxqjcmmu.online^ +||hkivggtfhotoryh.com^ +||hkjwazawuwxiy.online^ +||hkkfbxwzlbjgt.space^ +||hkkhsppnknkoy.space^ +||hkkxsnav.com^ +||hknztzqlkjzhc.space^ +||hkpjnieraypcn.site^ +||hkpwrpfqmkllb.online^ +||hkrshvakrvcvc.website^ +||hksjllpkpesxb.site^ +||hktslxpqf.com^ +||hkvbsazrdhhaq.online^ +||hkwcgdabvkap.com^ +||hkwrwuqlcpelq.site^ +||hkxehfiynztiu.website^ +||hkyjapok.in^ +||hkzhongzhuangzhan.cc^ +||hl216k51kuzqbtb1ixkjflkt15mh2lk.cfd^ +||hlbwqrublpoec.website^ +||hldijphcjszui.store^ +||hldziakitxudy.site^ +||hlgdxdfwnqqug.online^ +||hlgqbkgvfvelf.store^ +||hlhguzuidislw.site^ +||hlinit.com^ +||hlixavvcrnj.com^ +||hlkgyijzhlxno.com^ +||hlkwshtzpeuma.space^ +||hlnsdkaqstzlc.website^ +||hlobzlwykghmf.website^ +||hlomxkssdybcx.website^ +||hloontleulrrx.site^ +||hlovkowbucypm.site^ +||hlpjzdkddzyxb.space^ +||hlqhszlaieohl.online^ +||hlqyasinvckmo.online^ +||hlsebwqdwrvpv.website^ +||hlserve.com^ +||hltgrgqeodrti.site^ +||hltmncqxayyhu.website^ +||hlufsqadxupgr.website^ +||hlumreexivler.space^ +||hlwbxjxhwymre.website^ +||hlxyidqacaivu.site^ +||hlzz3qt35ko683.rest^ +||hmafbkrm.com^ +||hmbcfccmdpcmg.space^ +||hmdypadvcolcw.space^ +||hmicuqbzelzes.site^ +||hmifsgmfrkquz.online^ +||hmkadccgrusf.com^ +||hmlwoilofs.com^ +||hmopyfifzomcc.online^ +||hmpryf89.xyz^ +||hmqphmhktywbq.space^ +||hmsobsvsqbvle.site^ +||hmsuxcnrcyzmn.today^ +||hmthcqphqwppf.online^ +||hmtqdbdg.com^ +||hmufbqtreuybh.website^ +||hmvtwfudecij.com^ +||hmvuezvlrxygm.website^ +||hmxg5mhyx.com^ +||hmxoufchteecf.world^ +||hmxrqsqisg.com^ +||hmzxoegngasft.site^ +||hnaywxvckhrxu.online^ +||hnbanvxtkavun.site^ +||hnc53xcfyl38o83njrnrbe6cyvwr7.cfd^ +||hnchrbjicjcxq.space^ +||hnfuvjqpmzzey.website^ +||hnhmwvomvllai.website^ +||hnippiwktxacr.space^ +||hnizzwyxyqcfa.online^ +||hnkiigrfygpcw.space^ +||hnmonkedguxxl.website^ +||hnnqbxhvpbgvf.site^ +||hnnwonwjeiqpq.space^ +||hnrgmc.com^ +||hnsbsgnqcvqmn.site^ +||hntiprpnvgsfh.site^ +||hnvhpxetfugpx.online^ +||hnwbhkraakeyp.site^ +||hnwifmsebxemw.site^ +||hnwlazmnkzwxj.space^ +||hnwqolckynifk.website^ +||hnwtejxpmyqlk.website^ +||hnxdbmuemwsty.online^ +||hnxqtkkcaaifj.online^ +||hnzjwtcajadzi.space^ +||ho2b3cfb7x276rojfmoy6q.cfd^ +||hoanxhazxowrv.site^ +||hoardsketosehenry.qpon^ +||hoarsecelebrityversus.com^ +||hoasttave.shop^ +||hoasvvtyavmbn.store^ +||hoaxedisohume.qpon^ +||hoaxeeopus.cyou^ +||hoaxervrocht.cyou^ +||hobblehorrifiedfox.com^ +||hobblequintecountys.cyou^ +||hobcowriediazoma.qpon^ +||hobypcdcsidnc.online^ +||hocevqttpeekw.store^ +||hockdaywonegan.cfd^ +||hockeydoorrejoined.com^ +||hockeyhavoc.com^ +||hoctor-pharity.xyz^ +||hocusesfifer.qpon^ +||hoddenaccinge.cyou^ +||hoddernong.shop^ +||hoddyfrison.qpon^ +||hodfctkolgrjw.space^ +||hodnjqyavomuj.site^ +||hoeencpohchbi.online^ +||hoeinstitutionbye.com^ +||hofxbrhznoggg.space^ +||hogfishsurname.qpon^ +||hoggeebeatee.cfd^ +||hoggeekangla.qpon^ +||hoggetforfend.com^ +||hoggypushier.cfd^ +||hogpastebruise.com^ +||hogpenbractedquieten.cyou^ +||hogshippaint.cyou^ +||hogtiedhalawi.com^ +||hoheswardwiddy.cfd^ +||hohnsobered.cfd^ +||hohuwpdeefdgp.website^ +||hohxhoennu.com^ +||hoichcxxdgkit.site^ +||hoickpinyons.com^ +||hoicksfq.xyz^ +||hoinsealch.qpon^ +||hoitturcism.shop^ +||hojwzmimfnadl.space^ +||hokmlnzfftxvg.space^ +||hoksomuptak.net^ +||hoktrips.com^ +||holahupa.com^ +||holbhepofsqax.website^ +||holdingwager.com^ +||holdoutcycloid.cfd^ +||holdsteerpilgrim.com^ +||holenhw.com^ +||holidayscissors.space^ +||holidayslettucecircumvent.com^ +||holidaysverbcloseness.com^ +||holiesforgrow.cyou^ +||holismsordn.cyou^ +||holjmynbrubve.online^ +||hollinjowtersinsyne.cyou^ +||hollow-mess.com^ +||hollowdoodleevent.com^ +||hollowsuspicion.com^ +||hollymediaa.biz^ +||holuagency.top^ +||homeeshbecom.org^ +||homelybottle.com^ +||homesicktheseheld.com^ +||homespotaudience.com^ +||homierseenie.cyou^ +||homogendecaneectopia.cfd^ +||homzpacwnosnk.online^ +||honeeaafcmjyp.online^ +||honestbroadcasting.com^ +||honestchaptersconducted.com^ +||honestinfuriatemedia.com^ +||honestlyquick.com^ +||honestlyremarks.com^ +||honestsweet.pro^ +||honeycombastrayabound.com^ +||honeymoondecidedlymanual.com^ +||honeymoongaudyhereditary.com^ +||honeysstambasawali.cyou^ +||honeywhyvowel.com^ +||honkeryonkers.cyou^ +||honorablegiven.com^ +||honourcountry.com^ +||honoureddiscernible.com^ +||honourrib.com^ +||honoursdashed.com^ +||hoo1luha.com^ +||hoodentangle.com^ +||hoodingluster.com^ +||hoodmenbeseeducked.cfd^ +||hooenysbjhunb.online^ +||hooeycurrane.qpon^ +||hooeypease.qpon^ +||hoofycommis.qpon^ +||hookeypoetic.cyou^ +||hookeyslampruh.qpon^ +||hookiertritonetolus.qpon^ +||hookupunsized.qpon^ +||hooliganmedia.com^ +||hooliganrosebuddescendent.com^ +||hooligs.app^ +||hooliredir.com^ +||hoomigri.com^ +||hoood.info^ +||hoopersnonpoet.com^ +||hooprustcandied.com^ +||hoorayattract.com^ +||hoosgowdemodedimouts.cyou^ +||hooterdime.com^ +||hootpreceding.com^ +||hoovervailedmetrics.cyou^ +||hopcleftirradiate.com^ +||hopdream.com^ +||hopefulbiologicaloverreact.com^ +||hopefulrow.com^ +||hopghpfa.com^ +||hopgp.com^ +||hoppykyries.cyou^ +||hopsysdhmstab.online^ +||hoptopboy.com^ +||hoqodd.com^ +||horacereciprocalvaccination.com^ +||hordeumconveth.qpon^ +||horizonleathertommy.com^ +||horizontallypolluteembroider.com^ +||horizontallyresearchpolar.com^ +||horizonungyve.cyou^ +||horlajohan.qpon^ +||hormigovenueheo.cyou^ +||horncreature.com^ +||horndestructnosebleed.com^ +||hornistcopens.qpon^ +||hornlettuggery.qpon^ +||horntooth.com^ +||hornywomancrsu.com^ +||horonstogly.com^ +||horsemangoescalm.com^ +||horsemanlaxwriter.com^ +||horsermiddays.qpon^ +||horterminedurocele.cyou^ +||hortestoz.com^ +||hosierygating.cyou^ +||hosierypressed.com^ +||hosierysibling.com^ +||hospicaladapto.org^ +||hospitable-effort.pro^ +||hospitabledues.com^ +||hospitalforgery.com^ +||hostadsmarkets.com^ +||hostave.net^ +||hostave4.net^ +||hostcomplicatedspam.com^ +||hostelskalds.cfd^ +||hostileconductive.com^ +||hostingcloud.racing^ +||hostingfatties.cyou^ +||hot4k.org^ +||hotbbuvifu.cc^ +||hotbcivuya.today^ +||hotbdugixi.today^ +||hotbedsleafdom.com^ +||hotbgabori.com^ +||hotbkegora.today^ +||hotboysnearby.net^ +||hotbxocajo.today^ +||hotgvibe.com^ +||hotkabachok.com^ +||hotlinedisappointed.com^ +||hotlinevarietymorrow.com^ +||hotllove.net^ +||hotloss.com^ +||hotsoz.com^ +||hottercensorbeaker.com^ +||hotterydiseur.shop^ +||hottiecwm.shop^ +||hottmatchy.com^ +||hotueyhvfuqhh.space^ +||hotwords.com^ +||houbmjcujavil.store^ +||houcedqscszcu.space^ +||houndinflateclassmate.com^ +||hourcontributor.com^ +||hourglasshookupviolation.com^ +||hourglassinedible.com^ +||hourspaltrypointed.com^ +||housecarefullyidiotic.com^ +||housedbromids.qpon^ +||householdjeopardy.com^ +||housejomadkc.com^ +||housemaiddevolution.com^ +||housingjournalisminformal.com^ +||housingtrap.com^ +||housouokopeu.org^ +||hoveltran.xyz^ +||hoverlyashiestwiddled.cyou^ +||how-t0-wtch.com^ +||howcircus.com^ +||howdahbange.cfd^ +||howderyeuks.shop^ +||howeversoliped.qpon^ +||howeververbyfenrir.cfd^ +||howfingberycidchaine.cyou^ +||howhow.cl^ +||howkingpuja.qpon^ +||howlingkilned.com^ +||howsourmoolah.com^ +||howwtmrkhjzfb.website^ +||hoxslagged.qpon^ +||hoyaga.xyz^ +||hoycgislfliei.store^ +||hoyonx.com^ +||hozrlqkkuwskb.website^ +||hpadjptcyyafh.space^ +||hpapmsbhbdlit.site^ +||hpdipavuplwoe.website^ +||hpdjwvrkacvvv.online^ +||hpfchmjsfkhjt.site^ +||hpiarxap.in^ +||hpifriczvdvgu.online^ +||hpilzison-r.online^ +||hpiojmhtsxdvy.site^ +||hpixajguwomwn.online^ +||hpjdwjldynrfm.online^ +||hpk42r7a.de^ +||hpkgotrfjkccm.site^ +||hpksppeewaoyu.website^ +||hplorfdbzidtd.site^ +||hpmstr.com^ +||hpotw7j4vh622k94u3g1kh4.cfd^ +||hpowfhyhqgtvg.website^ +||hpozhxwptmzdc.site^ +||hpplosswaluxl.website^ +||hpqiktoilcksn.site^ +||hpremyfjvxlqf.site^ +||hprofits.com^ +||hpryvlxqtsgpx.site^ +||hpsatusskaszi.site^ +||hpsbpqwawzpwf.space^ +||hpthoght.qpon^ +||hptysnhexzndy.website^ +||hpvcrluqolote.website^ +||hpwjnaonrpzjs.site^ +||hpxlsfubgvzxt.space^ +||hpxzpzdpwnhxj.online^ +||hpyjmp.com^ +||hpyrdr.com^ +||hpywqrodbgmct.website^ +||hpzvitkflstxx.website^ +||hqazaazwdnxle.site^ +||hqbaanqvcscwl.space^ +||hqbdibst.com^ +||hqdhdyehelnks.online^ +||hqfatherembraid.qpon^ +||hqgkgvxhdlzba.store^ +||hqiozkugrprzc.site^ +||hqitrefgxtwvb.space^ +||hqivmamgiwbhv.site^ +||hqjhalomurd.com^ +||hqmwsnmnyxkyo.space^ +||hqmxgbzzoxsfp.website^ +||hqnmuuwcsudqd.store^ +||hqpass.com^ +||hqscene.com^ +||hqstcsetsckmf.website^ +||hqszwdormatma.com^ +||hqtwmtsflttlx.site^ +||hquerdxxxxdlp.site^ +||hqurnvlwjlqgk.space^ +||hqxvhbntctxha.space^ +||hraayzvvjlead.site^ +||hramiseocsztd.site^ +||hrawfoyklhfmg.website^ +||hrbaal0z.xyz^ +||hrdekhozxnoyf.online^ +||hrdnmymmeh.com^ +||hrfvjmmvlevt.com^ +||hrgfxhgu.com^ +||hrheke2bjuc818n7tkvbpczui9b.cfd^ +||hrient.xyz^ +||hrihqgbkuarzq.online^ +||hriybnmi.com^ +||hrklhybuhiwwu.com^ +||hrknqbbxmyvyo.site^ +||hrllzdgzyzoiy.website^ +||hrmruv1z7wyr8cpppfbjyc4n.cfd^ +||hrogrpee.de^ +||hrpbmvgbihfac.site^ +||hrqecm0d.xyz^ +||hrrsimgjcllyz.site^ +||hrslukdsqmzyi.online^ +||hrsubwzcikzrf.site^ +||hrtfumqovvmik.site^ +||hrtqvxkfdhvwz.website^ +||hrtye.com^ +||hrvmmjeueftjj.site^ +||hrwfrjwrekmqd.site^ +||hrwjkndrixrxi.website^ +||hrwlolycdpmnw.site^ +||hrwozjgbmxiad.website^ +||hryqskmfufykh.online^ +||hs5nhe45.xyz^ +||hsceynquafiri.site^ +||hsfcuorcijlne.website^ +||hsjjoaotgdfzw.online^ +||hsjpqusfppyjf.site^ +||hskdsrrhfeyqp.website^ +||hslfwaivfolvz.site^ +||hsmehkdosatlz.space^ +||hsmgnobyomsea.space^ +||hsnpvcdgenfwg.space^ +||hsnskx.care^ +||hsosldhfbjtss.website^ +||hspcbbhhmusop.online^ +||hsqtcuxfrglgq.site^ +||hsrasysmobara.space^ +||hsrkdkrxjtaeq.website^ +||hstagsmhbdvtk.site^ +||hstxodhtqfyko.site^ +||hsvpxtzcinvgi.online^ +||hsvqdflwzputv.website^ +||hswzdflhlmtpg.store^ +||hsynxmsytsxil.site^ +||htajztellrgmu.space^ +||htaufyjvn.com^ +||htcgcwfh.xyz^ +||htdixisbyvulc.store^ +||htdvt.com^ +||hteniplvbxeqt.space^ +||htgclhssrgikf.buzz^ +||htgdeynqbsdpf.site^ +||htidutntayqzo.website^ +||htintpa.tech^ +||htirmsdzegmjn.site^ +||htjvxemjtdaom.site^ +||htksitkyu.com^ +||htkyarsmdltca.site^ +||htkyyevpmjaja.website^ +||htl.bid^ +||htlbbzjjgmgye.space^ +||htlbid.com^ +||htliaproject.com^ +||html-static.shop^ +||htmonster.com^ +||htneakzcupxkt.space^ +||htnykujbhbmeu.site^ +||htqaumcmsqrtl.com^ +||htufkxrviozxm.space^ +||htukmobukvkdi.website^ +||htvwdruzmaqlb.site^ +||hubailinks.com^ +||hubbingslotedhogmace.cyou^ +||hubbytelephonedetermine.com^ +||hubeamily.com^ +||hubhc.com^ +||hubhubhub.name^ +||hublosk.com^ +||hubrisone.com^ +||hucklequiverslipa.cfd^ +||hue11.com^ +||hue2b.com^ +||hueadsxml.com^ +||huedpersonsovated.cyou^ +||hufhqultarufi.online^ +||hugecuspsdeform.qpon^ +||hugeedate.com^ +||hugfromoctopus.com^ +||hugit.xyz^ +||hugnaxmapeezq.website^ +||hugophysicallyairline.com^ +||hugyoilwaybulgier.cfd^ +||hugysoral.digital^ +||huhwryctykitp.space^ +||huicfordo.cyou^ +||huitaineton.cfd^ +||hukelpfulinotaherer.org^ +||hulchyparotidverde.qpon^ +||huldahimpends.com^ +||hullozaires.cfd^ +||huloistendable.cfd^ +||humanachaque.cfd^ +||humanitydisciplinaryhire.com^ +||humble-gap.com^ +||humbledrovet.cfd^ +||humblemotor.pro^ +||humblerenamour.com^ +||humblestress.com^ +||humdrumquartshore.cyou^ +||humeaviated.qpon^ +||humflingenmity.com^ +||humiliatedbreeches.com^ +||humiliatemoot.com^ +||humiliatingparking.com^ +||humiliatingregion.com^ +||humilityslammedslowing.com^ +||hummingexam.com^ +||hummuspandle.qpon^ +||humongousconnection.com^ +||humongoustemporary.com^ +||humongouswoman.pro^ +||humont.xyz^ +||humoristshamrockzap.com^ +||humorousorderedeconomics.com^ +||humpdecompose.com^ +||humphsoutgrewgriffs.cfd^ +||humpingunfoggy.cfd^ +||humro.site^ +||humsoolt.net^ +||humto.xyz^ +||humvodldnqany.site^ +||humxmqufynypq.online^ +||hunchbackconebelfry.com^ +||hunchcaw.com^ +||hunchmotherhooddefine.com^ +||hundreddismayclaw.com^ +||hundredthfellowshipprime.com^ +||hunfyshgivelotusin.cfd^ +||hungerblackenunequal.com^ +||hungry-fan.pro^ +||hungrybetrendmisere.cfd^ +||hunkhideliability.com^ +||hunkiesethionsdew.cfd^ +||hunksoon.com^ +||hunksphloem.cfd^ +||hunkvoluntaryanalogy.com^ +||hunter-hub.com^ +||hunterheroiccompassion.com^ +||hunterlead.com^ +||huowamtxlunei.online^ +||huoyqyonsufll.online^ +||hupxbntreuoieemcubt.cfd^ +||hupysrriepvxy.online^ +||huraxbaw.in^ +||hurfrumpertomin.qpon^ +||hurkarubypaths.com^ +||hurlerlutists.qpon^ +||hurleyssinksbehoney.qpon^ +||hurlmedia.design^ +||hurlpitbanzais.qpon^ +||hurriedlyslumremiss.com^ +||hurtful-job.com^ +||hurtful-message.com^ +||hurtfulberendslimly.cfd^ +||hurtsbehalf.com^ +||husbandnights.com^ +||husfly.com^ +||hushclosing.com^ +||hushionchucklebaldish.cyou^ +||hushpub.com^ +||huskerskrang.cfd^ +||huskinessimminentstylus.com^ +||huskypartydance.com^ +||huspelcopplekitlope.cyou^ +||huspilcolins.cyou^ +||hustingmasonry.shop^ +||hustledcantorsdismiss.cfd^ +||hustlereadcoffeehouse.com^ +||hutiaumbelgarring.qpon^ +||hutlikeynrebated.cyou^ +||hutmqkgdvayc.com^ +||hutojzbran.com^ +||hutteddyinfluenced.com^ +||hutungsurest.qpon^ +||huupdnpsprrqk.website^ +||huvehsszwdzkp.space^ +||huvelykburreerevise.cfd^ +||huwtkpcqaygow.online^ +||huyapxxwno.com^ +||huzytgmqsnecd.website^ +||huzzasnickel.cyou^ +||hvcjbpkakkeng.site^ +||hvdzdrovccwom.site^ +||hvefnbufkpxou.website^ +||hvevwsqsvpoml.website^ +||hvfilosbqpzdf.online^ +||hvfylxvbwvbyr.website^ +||hvgcguczoqvjr.site^ +||hvgxphrklbtix.site^ +||hvhpwafhvwrk.com^ +||hvi25o1wciyxq4el8hn59biuip9.cfd^ +||hvjqrwexqyhtm.online^ +||hvjwtgmouhibs.website^ +||hvkxpsvlmrvwn.store^ +||hvmuhelbnedhe.online^ +||hvooyieoei.com^ +||hvoukybkppvfo.space^ +||hvozxhftdupcl.site^ +||hvpieoqfwvxlx.site^ +||hvpojkilqqykq.website^ +||hvqwjvoisrnhx.website^ +||hvvaoxrjglkhd.online^ +||hvvbqayabpuoi.website^ +||hvwoeavjjemhq.site^ +||hwbyspodhwjsf.online^ +||hwddqhhsze.com^ +||hwdlloibdukny.space^ +||hweaugtougwvv.online^ +||hwithyouryrety.org^ +||hwjxtlnrjggki.online^ +||hwkxqzuhlqqin.online^ +||hwlbjqmqcmqfj.site^ +||hwmesbhun.com^ +||hwntbehufghtb.online^ +||hwocwionv.com^ +||hwouarlltsgmo.website^ +||hwpnocpctu.com^ +||hwsyicaxuuwyl.online^ +||hwtixttgqwqgt.space^ +||hwubmdahfxzku.website^ +||hwugaspawa.com^ +||hwvzysmzxzpmf.online^ +||hwzuwlghfqizh.space^ +||hx9t83vx.xyz^ +||hxaeqktmhvawj.space^ +||hxatcxdapmonn.com^ +||hxdecujrfmyyv.online^ +||hxdkexvfyynls.space^ +||hxhrtucknxfnf.site^ +||hxibnamapcqmw.space^ +||hxijqcarzkwps.online^ +||hxjhfqrolubqs.space^ +||hxjrxfwgbwlvk.online^ +||hxmcaugiqijkz.store^ +||hxnpxtganneyw.site^ +||hxoewq.com^ +||hxtvpdjsjgvvk.site^ +||hxuaodojgvxbt.website^ +||hxvyvqgbyeryd.com^ +||hxzdmcgrkmxsz.website^ +||hyaccgrjkbsoz.online^ +||hyacineupways.shop^ +||hyahyastoftyphons.qpon^ +||hyajjvfpxrqfn.website^ +||hyalyyeiegmak.online^ +||hybridaattilaunlobed.cyou^ +||hycantyoubelik.com^ +||hycpllawmosiu.online^ +||hydorrxacolif.website^ +||hydraecheskey.cfd^ +||hydrionboult.qpon^ +||hydronetuscany.qpon^ +||hyeqzfqgubqkj.space^ +||hyfiwldsulvvb.website^ +||hygckbylqhutq.website^ +||hygeiankinema.cyou^ +||hygeistintrunk.cfd^ +||hygienicpee.com^ +||hygromaroyet.cyou^ +||hyhpxngoybdiw.website^ +||hyhsaqyiusioz.space^ +||hyihyfouxfsjb.online^ +||hyjqnmrqkkryj.space^ +||hyjxuvsklboyu.online^ +||hykepineryramilie.cyou^ +||hyknonkzsmrqg.online^ +||hyldaxiyvidxg.online^ +||hyleggroenology.cfd^ +||hylrncjzgdtgi.site^ +||hymcmjjkerpdj.online^ +||hymenicasarumsara.cyou^ +||hynepoditetopsman.cfd^ +||hynvvtkmdvjdv.website^ +||hynycrgzzevgb.space^ +||hypemakers.net^ +||hyperanodizereer.com^ +||hyperbanner.net^ +||hyperlinksecure.com^ +||hypermousus.com^ +||hyperpromote.com^ +||hypervre.com^ +||hypnotizesqueegeetricolor.com^ +||hypptujyuaxyz.space^ +||hyraterook.com^ +||hyscaixutgyck.online^ +||hysonactinon.cyou^ +||hysracaaoffac.site^ +||hyssmmwdgmpfg.website^ +||hysteriafiring.com^ +||hysteriahung.com^ +||hystrixwagangawacs.cyou^ +||hytxg2.com^ +||hyunolgvmtuoo.site^ +||hyvirttguqnwt.online^ +||hyvmmxgohrnpc.site^ +||hyzhqaxwutcgb.online^ +||hz4lrpj1r4mw8p32.cfd^ +||hzejwxfpexoxw.website^ +||hzfmvejpkbi77iww5rwv3lzotw1okog.cfd^ +||hzgf8j12.xyz^ +||hzgh8czw3nfyyb58vzjvkp1ptk1pt.cfd^ +||hzhlgkoxzgkok.site^ +||hzlhxlivfnxur.site^ +||hzljc11gwimlfolr1.rest^ +||hzlswdkrcutie.website^ +||hznenxxzupeym.site^ +||hzpvkm5nzmtpqcc8u4tyxnwe9.cfd^ +||hzqqldqfjsyjn.site^ +||hzr0dm28m17c.com^ +||hzskcsmxnzmcz.website^ +||hztpibvstcrrz.site^ +||hztyxtbcouoas.site^ +||hzwulbxmhxrjuzgywt7zyopmvn4wzrnev.cfd^ +||hzzvfturvtdvt.store^ +||i1901zxd.xyz^ +||i2qoohyfr49mtm.cfd^ +||i4flmxi35rchf3759kv5mg2.cfd^ +||i4hnft4cqz5yn2rpx8cxcqgf2e15lc3.cfd^ +||i4ihvfb44134k24.cfd^ +||i4jxgewgl3rfgmgguhy899n8klpnn.cfd^ +||i5lty436q2mgw1q.cfd^ +||i5pm6w1o1xzo8nc.cfd^ +||i6cgvqmrr5kfyf.cfd^ +||i8xkjci7nd.com^ +||i993.com^ +||i9pyfcl6ouoljr.rest^ +||iaacknkvbidsc.site^ +||iadnsamqheemb.space^ +||iaeaadfleusbk.site^ +||iafixnjsgasps.store^ +||iagrus.com^ +||iahlyftiumutx.site^ +||iajekzqrmxhwv.space^ +||iakksriextiof.online^ +||ialeompoqcypg.site^ +||ialukizeiasni.org^ +||ialvzcnykqyvk.website^ +||ialyfitnisscn.site^ +||iambibeshame.qpon^ +||iambshitched.cyou^ +||ianoubcdoavip.website^ +||iaolegnbazkbd.space^ +||iaopbzjfhemrb.website^ +||iapegsvax.com^ +||iapetuslepero.cfd^ +||iapygiietcher.qpon^ +||iaqqtkhksqbbs.site^ +||iarekbazzdlqm.space^ +||iarofhjdkxwyp.store^ +||iasbetaffiliates.com^ +||iaueciftevwbn.website^ +||iaukmlastitytyeast.com^ +||iavjpgaexobcc.website^ +||iavlxljzdclmz.space^ +||iavzanqufopsk.site^ +||iaxitnxmakuso.store^ +||iazcpoptkwapp.store^ +||iazgwkovqadci.space^ +||ibbdgcvtwtpuj.site^ +||ibblkbommtctu.online^ +||ibbnmezzazmbt.site^ +||ibceebobwbhdu.space^ +||ibdhurhzedcpx.online^ +||ibeeckaidse.net^ +||iberismnuntius.com^ +||iberismregr.cfd^ +||ibexescuffin.cfd^ +||ibexeskahau.qpon^ +||ibexinfancyperopod.qpon^ +||ibflhrepbphbu.space^ +||ibftrigo.com^ +||ibgyfspqfazkw.website^ +||ibhbnlpvtdkny.space^ +||ibhhilhgxhiwi.website^ +||ibickuapdixkk.online^ +||ibidemkorari.com^ +||ibikini.cyou^ +||ibirzxqcljqxw.site^ +||ibkhearv.com^ +||ibktikewqhktw.site^ +||iblcsjmyygfmc.website^ +||iblhxcakckfxu.site^ +||ibmfunk.com^ +||ibmwqchwzvlmd.online^ +||ibnxviddjsqgq.store^ +||ibrapush.com^ +||ibryte.com^ +||ibseniccamery.qpon^ +||ibsenicopalish.cfd^ +||ibsxnvottfiou.space^ +||ibulvwytsbrmf.site^ +||ibvrruekneixz.site^ +||ibxhi6tj3ozpfochtpbqxxmpqly779i.cfd^ +||ibxpokefcsgf.com^ +||ibyhdkkcdkkii.site^ +||ibyossxwwjeij.website^ +||icarusgyps.qpon^ +||icasmtolanesairbag.cyou^ +||icatethebenefits.com^ +||iccihomoulkrg.online^ +||iccku.com^ +||iccvjzhpfolzj.space^ +||icdirect.com^ +||icebergvetoed.com^ +||icecaptifter.com^ +||icefishhumet.shop^ +||icelessbogles.com^ +||icetechus.com^ +||icfikkizz9n2rbtf.cfd^ +||icfisvenkolnd.online^ +||ichwteqdufxed.website^ +||iciakrqnrmwrl.online^ +||icilyassertiveindoors.com^ +||icingatochaeboe.cfd^ +||iciyqqrefeosuq.com^ +||icjhjoe.studio^ +||icjoiw71xp99oh42k7.cfd^ +||ickersanthine.com^ +||ickewusvpzeje.online^ +||iclickcdn.com^ +||iclmewjplvaru.space^ +||icmxqeeivfzgo.site^ +||icodascians.qpon^ +||icojbyvfdxbxx.website^ +||icowhojcnqnuz.space^ +||icqpgnbeifefi.website^ +||ictuizwgjgozv.website^ +||icubeswire.co^ +||iculpiumiyznp.space^ +||icunvveszpzxa.online^ +||icvdfreyonpur.space^ +||icwmsalkqywyp.fun^ +||icxtalveexksf.space^ +||icxyqoonmogdn.online^ +||icyassimilateparchment.com^ +||icyporno.com^ +||id5-sync.com^ +||idclbvpablytl.site^ +||iddeyrdpgq.com^ +||iddirhvqkjzyh.site^ +||iddojkfktvbss.space^ +||ideaedbecausefattier.cfd^ +||ideahealkeeper.com^ +||idealdiscussion.pro^ +||idealmedia.io^ +||idealytumbril.cfd^ +||identicaldrench.com^ +||identicalprofile.com^ +||identifycertainlybookie.com^ +||idescargarapk.com^ +||idfheghayflmz.store^ +||idgckoaliqcov.site^ +||idhoyoadekuzf.website^ +||idiasmorceins.cfd^ +||idiotic-fear.pro^ +||iditolgurjara.cfd^ +||idkaawqep.com^ +||idkcmqzzrnq.com^ +||idkoguetmpdxk.online^ +||idkymwzjfpefr.site^ +||idlbjpfuyvqll.site^ +||idlestupid.pro^ +||idmiddnqrgssm.site^ +||idnzhexoymrlc.space^ +||idoladelimed.cyou^ +||idoletmetayerdistale.qpon^ +||idolinflectiongentlemen.com^ +||idolizedestimate.pro^ +||idpgakrenkmki.store^ +||idpvgjtqaiygt.space^ +||idqmcmowhjmps.website^ +||idqodpsjvxftt.online^ +||idqxcpofspalj.space^ +||idreamed.com^ +||idsrscpzgpgzw.rocks^ +||idvlixheiccfd.space^ +||idwtsbewkufhr.space^ +||idylsrebank.com^ +||idyzvclzesbnu.website^ +||idzqgefpisizq.website^ +||ie8eamus.com^ +||ieagkfopvztwl.online^ +||iebggwrulqeja.site^ +||iecxpghbv.com^ +||ieecjjfzmbhgs.site^ +||ieenhijxbigyt.space^ +||ieeucpssxsepw.online^ +||ieglcoaqlzesp.store^ +||iegzaknrowaju.online^ +||iehbhejfnetvc.site^ +||ieiyqbcjpksbk.website^ +||iekfxxkrpjock.space^ +||ieladhfhoiclv.online^ +||ielbkrppj.com^ +||ieliryzgkzlam.website^ +||ieogwnrsgnfsz.online^ +||iepovvpyzudnn.online^ +||iequiguknwrsk.store^ +||iermahgynbwks.website^ +||ietwzcakupkfs.store^ +||ieucnfzhxeedn.website^ +||iewixvvsbfkwd.world^ +||iewjctcinxthi.space^ +||iewozubtql.com^ +||iexgekxdoqlcn.website^ +||ieyzrxtaxfqpc.website^ +||iezxmddndn.com^ +||ifadnfhgaozlo.store^ +||ifaqirpgjntoc.site^ +||ifargyle.shop^ +||ifcartbwtzzwb.online^ +||ifdbdp.com^ +||ifdlcsfuafvst.store^ +||ifdnzact.com^ +||iffiestpolacca.qpon^ +||ifigent.com^ +||iflfnermnmnhj.space^ +||ifmxhabbjpjrm.website^ +||ifnzvapjsaumr.site^ +||ifpiawqeievju.online^ +||ifqurqkzqnupr.site^ +||iftuzvnyudfus.online^ +||ifvrcwxxbmvoo.website^ +||ifwgkkvmwxzgp.store^ +||ifxnohjfiqt.com^ +||ifyi64u621z2koqbpnvi6.cfd^ +||ifyltudcapmti.online^ +||igaming-warp-service.io^ +||igcbjsdkueyxv.site^ +||igcvczotebzhr.space^ +||igdkxrljusxvt.space^ +||iggcszxljlchr.website^ +||iggfwsbqonyyw.online^ +||iginimhtppjum.website^ +||iglakgdhhmagf.online^ +||iglinptrmtzff.site^ +||igloohq.com^ +||ignateignatepredominanteatable.com^ +||ignateignatetame.com^ +||ignita.xyz^ +||ignitecimline.qpon^ +||ignobleinternational.com^ +||ignoblerectifymargaret.com^ +||ignorant-excitement.pro^ +||ignorantdamage.pro^ +||ignoranthello.com^ +||ignorespentbut.com^ +||ignoresphlorol.com^ +||ignorespurana.com^ +||ignoringacclaim.com^ +||ignoringincur.com^ +||ignotebravas.qpon^ +||igobmxltyvjfv.website^ +||igozxvjvaehwt.site^ +||igpnpnmbommga.website^ +||igsfxaiigsrog.site^ +||igszvdjpvxqdt.online^ +||igtjqemgdlibm.site^ +||iguanamaythe.cfd^ +||igunutotpusx.com^ +||igvkixoxvsvih.space^ +||igvnfhtdjqkqx.website^ +||igyswjdwkppmo.online^ +||ih1k65g961twpctyhnw2841qi296qt.cfd^ +||ihafgiengiayc.website^ +||ihbvkyub.com^ +||ihculppauwbhc.online^ +||ihihvuohkrpvi.online^ +||ihixmyzlqb.com^ +||ihlfikzmbeyob.space^ +||ihopymzvbzqop.site^ +||ihsbmqrwmehki.online^ +||ihsicrdmfeexu.space^ +||ihuzryhojljka.site^ +||ihxodfssusbhrt.com^ +||ihykcymyocpvw.site^ +||ihywcnzlauulc.space^ +||ihyyqfiijucca.space^ +||ii4d.com^ +||ii9g0qj9.de^ +||iiammstupdejg.online^ +||iiasyavgjqwat.site^ +||iicheewi.com^ +||iictjxeimtvxi.online^ +||iicvdlmypkugr.space^ +||iicwmzxgqsjfu.space^ +||iidpomfgxqpgx.online^ +||iiepmhurtkyoq.space^ +||iifvcfwiqi.com^ +||iigmlx.com^ +||iihcnqeuqcbjf.website^ +||iiigvrislhm.com^ +||iiiqdhbkppkxw.space^ +||iiiz9q4xqvzq1bx.rest^ +||iijwomwwwfhrz.online^ +||iijyrnrxflbvn.store^ +||iiobbnevhyzdq.website^ +||iionads.com^ +||iiqthsqatkaqc.com^ +||iirgaldxwrzgb.site^ +||iisatylcrskde.store^ +||iisclmekykjjr.store^ +||iisipjvxdughv.site^ +||iitazqaajeeui.site^ +||iiuzelzusndqi.website^ +||iiveklopzolo.com^ +||iiwkyrrdmmbvw.site^ +||iixyftmpnljnz.space^ +||iiyurrfshxirs.online^ +||iiyvlebuvfdie.online^ +||iizvfsqtjgqgz.online^ +||ijaicjeojzjpr.site^ +||ijarwjciakkmj.space^ +||ijcvxwzkdfswr.website^ +||ijdbmjqwzrcdw.website^ +||ijfilqxkgrchg.space^ +||ijgmlmucwps.com^ +||ijgqiqnlhwjch.fun^ +||ijjbtolmmnoas.space^ +||ijjnyauzmqxoq.website^ +||ijjsmjnngmrxc.online^ +||ijjunclnvgzva.online^ +||ijkhwlcesqacw.site^ +||ijmkxepceoabo.site^ +||ijmrqatwfuemc.website^ +||ijnthmutgkrvp.online^ +||ijptdajxzkxsa.space^ +||ijroqswtxz.com^ +||ijsthljka.com^ +||ijucmzrifdaba.online^ +||ijwedylvbjgdx.space^ +||ikahnruntx.com^ +||ikarydidoes.shop^ +||ikcfbfcsusubx.site^ +||ikcknfgvmjril.space^ +||ikdttmwzfbfdg.space^ +||ikenlodemhjrs.online^ +||ikfe4izuhbyqrw8gi8gcmiut1oi18vj.rest^ +||ikhgxaeobmbb.com^ +||ikikigxywqcrf.site^ +||ikkakvnicwguw.store^ +||ikonsripcordslice.qpon^ +||ikqtzvhuhddod.online^ +||ikquaycaaygib.space^ +||ikqyazeadzqvo.space^ +||ikubypxrzqjah.store^ +||ikzwvkuxrymqu.space^ +||ilaterdeallyig.info^ +||ilcstuywgiayu.com^ +||ildr3vij.xyz^ +||ileacringes.com^ +||ileamiscall.qpon^ +||ileesidesukbe.org^ +||ileuadlrdnpow.space^ +||ileumoctant.com^ +||ilexestituschry.qpon^ +||ilgpscfvwohwr.space^ +||ilhangrnyaubr.site^ +||ilhbimergjlfx.website^ +||ilhtossuwjwcg.online^ +||iliaufrtcostive.qpon^ +||iliqdfncivkkp.online^ +||iliummothedturnup.qpon^ +||iliykdbfcofbi.site^ +||iljcnkfiowzqw.site^ +||ilkjcufgzpjwd.online^ +||ilksgenecor.cyou^ +||illegimateillegimatesenseintelligence.com^ +||illicitdandily.cam^ +||illiciteatable.com^ +||illinformed-camp.pro^ +||illinformed-imagination.com^ +||illinformed-summer.com^ +||illipekincob.com^ +||illiticbogdermis.cyou^ +||illogicalinvitationexaltation.com^ +||illuminateastonishing.com^ +||illuminatedrecollection.com^ +||illuminatelocks.com^ +||illuminous.xyz^ +||illusionpool.com^ +||illusivecleavepsychopath.com^ +||illusorrayat.shop^ +||ilmat-deo.com^ +||ilmwkysdrigqa.online^ +||ilndjlsjkyjmc.website^ +||ilnoogrbnajuo.space^ +||ilolvlalbyqfm.space^ +||iloptrex.com^ +||ilotgust.cyou^ +||ilpgfdbc.xyz^ +||ilpmcvbmizqfo.site^ +||ilpuojxvpvjkr.space^ +||ilqtskaqbxdrj.website^ +||ilrkcyoqtybaf.website^ +||ilrzxqnfwlvdw.website^ +||ilseyyrqjcewm.site^ +||ilshiletterismype.org^ +||ilshoflnkdbmj.com^ +||ilvnmoqblnvrp.site^ +||ilvumysnmlrvr.space^ +||ilvzxlpvprsff.online^ +||ilxfndokexkxi.online^ +||ilxhembbenvbcyj.com^ +||ilyakhokani.cfd^ +||ilyaoipntdyol.space^ +||ilyf4amifh.com^ +||ilzualntjfjjd.online^ +||imageadvantage.net^ +||imagenest.site^ +||imagessofta.com^ +||imagiflex.com^ +||imaginablestickydepartments.com^ +||imaginarymankindname.com^ +||imaginationblush.com^ +||imaginative-hope.com^ +||imaginativebattle.com^ +||imaginativecity.pro^ +||imaginemothcurved.com^ +||imagingkneelankiness.com^ +||imagingprelawpuzzle.com^ +||imagisteyases.cfd^ +||imaretbirses.com^ +||imasdk.googleapis.com^ +||imbfsidnchope.site^ +||imbrierseaportqatar.qpon^ +||imbuemadeup.com^ +||imbueprescriptionhumiliation.com^ +||imbw2o1r7i7cx5.cfd^ +||imcdn.pro^ +||imdprmebrbbbq.space^ +||imens-poort.com^ +||imeto.site^ +||imfuuvpqartcd.space^ +||imgfeedbuzz.com^ +||imgfeedget.com^ +||imghst-de.com^ +||imgkdetaddxre.space^ +||imglnkd.com^ +||imglnke.com^ +||imgsniper.com^ +||imiclick.org^ +||imidicsecular.com^ +||iminecaratch.cyou^ +||imirki78.com^ +||imirkin6.com^ +||imitrck.net^ +||imjarvnpcxsmm.site^ +||imjbtmaesjvam.space^ +||imjprkvybgfdw.space^ +||imkirh.com^ +||immaculatehighlight.com^ +||immaterial-mother.com^ +||immediateequivalentstunning.com^ +||immediatelydoghead.com^ +||immense-owner.com^ +||immersedexample.com^ +||immigrantdistantassure.com^ +||immigrationacre.com^ +||imminentadvisedlylucius.com^ +||imminentcawplod.com^ +||immoderatebreathtaking.com^ +||immoderatescarsheer.com^ +||immoralhands.com^ +||immoralmisspell.com^ +||immortaldoer.com^ +||immortalheliumoverturn.com^ +||immortalityminorprotein.com^ +||immortalitysignalbelow.com^ +||immortalitytreaty.com^ +||immoxdzdke.com^ +||immunitydisaster.com^ +||imogentoxifer.cfd^ +||imolvsmwwfnvh.website^ +||imp2aff.com^ +||impactify.media^ +||impactradius-go.com^ +||impactradius.com^ +||impactserving.com^ +||impactslam.com^ +||impaintimamiccondos.cyou^ +||impairdates.cyou^ +||impalamahoniashawed.qpon^ +||impalmpannebotulin.cfd^ +||imparksoptingmacuta.cyou^ +||impartial-arrival.com^ +||impartialpath.com^ +||impartialreefham.com^ +||impartsmilk.com^ +||impassableoffend.com^ +||impassioned-vacation.com^ +||impeccablewriter.com^ +||impedimentorganized.com^ +||impeditenomoty.com^ +||impentscavel.cyou^ +||imperativefumebewitch.com^ +||imperfectmedicine.pro^ +||imperfectwind.pro^ +||imperialsubjective.com^ +||impersonalsix.com^ +||impetuousseatspeck.com^ +||impetusorgansseparation.com^ +||impheetuggery.cfd^ +||impioustaggers.qpon^ +||impishbeastspreserve.com^ +||implantlongesttrey.com^ +||implialelegiac.com^ +||impliedbabool.qpon^ +||impliednauseous.com^ +||implingtushery.cfd^ +||implix.com^ +||importantoperativestudied.com^ +||importantputrescent.com^ +||importconsyminutia.qpon^ +||imposerphonic.cyou^ +||imposi.com^ +||impossibleentry.com^ +||impractical-safe.com^ +||impracticalbaseball.com^ +||imprasafalter.cyou^ +||impregnabledeceivingcoast.com^ +||impregnscraich.qpon^ +||impressexaltsculptor.com^ +||impression-sync.xyz^ +||impressiondarn.com^ +||imprintprototype.com^ +||imprintwoon.shop^ +||improbablehospital.com^ +||improbablejar.com^ +||improbableshunplanes.com^ +||impropermoleculeshilling.com^ +||improperscrubbedvendor.com^ +||improvisevariables.com^ +||impseeineclots.com^ +||impugkpbilveh.website^ +||impulseunplied.qpon^ +||impuregossips.shop^ +||impureleg.com^ +||impurepath.com^ +||imputerpolecat.com^ +||imsjqyrgnjnnv.store^ +||imslyokecyhar.site^ +||imsonicgale.com^ +||imtshvsvjzeob.website^ +||imtvqvpcqbcti.space^ +||imuyzqvydxswd.online^ +||imvynglppspys.website^ +||imwppbluqkaql.space^ +||imwwdjmnfcans.space^ +||imyanmarads.com^ +||in-appadvertising.com^ +||in-page-push.com^ +||in-page-push.net^ +||inactionaccompanyingstress.com^ +||inadequatebuoythin.com^ +||inadequateconsolation.com^ +||inadmissibleeyewitness.com^ +||inadnetwork.xyz^ +||inanebinding.com^ +||inappi.co^ +||inappi.me^ +||inappropriate2.fun^ +||inarchyacking.cyou^ +||inato.xyz^ +||inaudiblefrequently.com^ +||inaugurrizzommyelon.cfd^ +||inbbredraxing.com^ +||inboldoreer.com^ +||inbondhestheraedile.cfd^ +||inborn-noise.pro^ +||inborndisplayed.com^ +||inbreedsleeps.com^ +||incarnatepicturesque.com^ +||incegceozdsrt.space^ +||incentivemountdisprove.com^ +||inchesray.com^ +||incidentallyhorace.com^ +||incidenttrumpremittance.com^ +||inclinationsupervisor.com^ +||inclinedallusionnearby.com^ +||incloak.com^ +||incloseinterest.com^ +||includedmotley.com^ +||includemodal.com^ +||incomerboxier.cfd^ +||incomermistookclubs.qpon^ +||incomparable-pair.com^ +||incompetencearmpry.com^ +||incompetencesorting.com^ +||incomplete-bottle.pro^ +||incompletesurnametransparent.com^ +||incomprehensibleselfconfidence.com^ +||inconceivableimperial.com^ +||inconelcatalos.com^ +||inconsequential-belt.pro^ +||inconsequential-working.com^ +||inconsequentialsir.com^ +||inconsistencygasdifficult.com^ +||inconsistentoverflowscan.com^ +||inconveniencedaughterinlawhousemaid.com^ +||incorenext.com^ +||incorporatehookersenses.com^ +||incorporateunderstand.com^ +||increasingbelieveabonnement.com^ +||increasinglyirritationecstatic.com^ +||incurableemptiness.com^ +||inczjhdwlezin.site^ +||indaminfumbler.cyou^ +||indeedpeculiaritybeams.com^ +||indefinitefunction.com^ +||indefinitelytonsil.com^ +||indefinitemantle.com^ +||indelicateexcept.com^ +||indentsrondels.com^ +||independentacceptable.com^ +||indexeseconomicsenrage.com^ +||indexww.com^ +||indicatedilate.com^ +||indicopigg.qpon^ +||indictmentbreatheeastern.com^ +||indicwilt.qpon^ +||indifferencemissile.com^ +||indigestiontreatmentgraduated.com^ +||indignationcharter.com^ +||indirectcertaintypersecute.com^ +||indirecthideoustractor.com^ +||indisputabletim.com^ +||inditerspiksgallein.cfd^ +||individualproductiontopless.com^ +||indolentoutcome.com^ +||indolentsurvey.pro^ +||indolinkopeks.cyou^ +||indolylguyerguiler.cyou^ +||indony.xyz^ +||indooritalian.com^ +||indoorrobotsunnecessary.com^ +||indoorsscoldbail.com^ +||inducestoiles.shop^ +||indulgeassortmentdone.com^ +||indulgencelate.com^ +||indulgencemolly.com^ +||indulgenceslangringer.com^ +||indulinpentailhews.cfd^ +||indulinrayful.com^ +||indultsoupon.qpon^ +||industries100.com^ +||industries78.net^ +||industriesfrominvisible.net^ +||industriesinbag.net^ +||industriestoredundancy.net^ +||industriestosupport.com^ +||indyadvertising.com^ +||inefficientinherent.com^ +||inestimablereddencloset.com^ +||inevitablyflop.com^ +||inexactmisstay.cfd^ +||inexhaustiblenormcall.com^ +||inexpedientlads.com^ +||inexperiencedunseensuggested.com^ +||infameeagled.com^ +||infantaslaw.cyou^ +||infantilecombination.com^ +||infantiletransition.com^ +||infaresmalakon.qpon^ +||infatuated-contest.com^ +||infectedrepentearl.com^ +||infectiontuition.com^ +||inferbrevityoption.com^ +||infercrawfordpreponderant.com^ +||inferior-stick.com^ +||infighthaugh.cyou^ +||infinity13.com^ +||infirmarybloody.com^ +||infixedderere.com^ +||inflationmileage.com^ +||inflcinches.cyou^ +||inflectionoverdorenovate.com^ +||infles.com^ +||influxneurism.cyou^ +||info7000.net^ +||infonewsz.care^ +||informalsection.com^ +||informedcleave.com^ +||informmyou.com^ +||informperacid.com^ +||informsgainalexis.com^ +||informsuppercocktail.com^ +||infovaletwhistling.com^ +||infovigilance.com^ +||infringementacquiredproposal.com^ +||ingajoytowork.org^ +||ingant.xyz^ +||ingcqvrmskipd.site^ +||ingeniousseasickfoolish.com^ +||ingratetalcose.com^ +||ingratitudealienatedues.com^ +||ingratitudeworeinstead.com^ +||ingrowberylsrosales.qpon^ +||ingrowsquallyajeine.qpon^ +||ingsandmakingsil.com^ +||ingszlmcsuwyu.site^ +||inhabitantparticipation.com^ +||inhabitedgangoppose.com^ +||inhaulblanch.qpon^ +||inhaulsdehachefogged.qpon^ +||inhaustbegloze.cyou^ +||inhellrelate.cfd^ +||inherefullom.com^ +||inherentdecide.com^ +||inheritedgeneralrailroad.com^ +||inheritedunstable.com^ +||inheritedvastpageant.com^ +||inhibitalertnesstouch.com^ +||inhousead.net^ +||inhshlfbgkqdw.site^ +||inhumyszolcov.space^ +||initdvgmzzrli.space^ +||initiallybrigadebookstore.com^ +||initrecaged.cfd^ +||injbwbtfrzbmy.website^ +||injuredripplegentleman.com^ +||injzufavkuark.space^ +||inkfeedmausoleum.com^ +||inkgdrdgypkar.website^ +||inkielectionovoids.cfd^ +||inklaotqejnmh.online^ +||inklessaughy.qpon^ +||inklinkor.com^ +||inkmaniodid.cyou^ +||inknitstyletcoaled.cfd^ +||inkont.xyz^ +||inkreconnaissancetasting.com^ +||inktad.com^ +||inkvm.com^ +||inkyreheat.qpon^ +||inlar.xyz^ +||inlayvalues.cfd^ +||inlwhyhdnpjxk.website^ +||inlyisort.shop^ +||inmasrbazpndi.site^ +||inmceo4i1flpxlv.cfd^ +||inmeatstantigrigri.cfd^ +||inncreasukedrev.info^ +||innity.net^ +||innocent154.fun^ +||innocentebony.com^ +||innovations4444.net^ +||innovations5050.net^ +||innumerablebenedictiondisgrace.com^ +||innumerablemakeupreligious.com^ +||innyweakela.co^ +||inobureleosirify.cyou^ +||inocvsvmeopau.space^ +||inopportuneattendants.com^ +||inopportunefable.com^ +||inopportunelargestrumble.com^ +||inosinosselet.qpon^ +||inouva.com^ +||inpa29d7r79.com^ +||inpage-push.com^ +||inpage-push.net^ +||inpagepush.com^ +||inpatientshed.com^ +||inpit.xyz^ +||inplbvbxtlpnu.online^ +||inpoundaymidyd.com^ +||inppcdn.com^ +||inptbzvuvgszg.space^ +||inputtwelfthrealistic.com^ +||inqmrfxxutoyp.online^ +||inquiredmystic.com^ +||inquirycucumbersemployed.com^ +||inquisitivewarehouseinsulting.com^ +||inrhyhorntor.com^ +||insanityzealovercome.com^ +||insatibivhwin.space^ +||inscapeclosure.cfd^ +||inscribemutenessforced.com^ +||inscribenaiveavoid.com^ +||inscriptionduchessbooks.com^ +||insectsenate.com^ +||insensesatient.qpon^ +||insensitiveshoweraudible.com^ +||insertillegimateillegimatepack.com^ +||insideofnews.com^ +||insidesostrich.qpon^ +||insidethegames.live^ +||insightadz.com^ +||insightexpress.com^ +||insightexpressai.com^ +||insightspendadvancement.com^ +||insighttawie.cfd^ +||insigit.com^ +||insignificant-constant.com^ +||insignificant-foot.com^ +||insistent-worker.com^ +||insitepromotion.com^ +||insnative.com^ +||insolubledoomedbenignity.com^ +||insomniacompulsive.com^ +||insouloxymel.com^ +||inspdiogtlwzr.space^ +||inspectionrefutation.com^ +||inspector690.net^ +||inspectorfrustrationthoroughly.com^ +||inspectormonstersflag.com^ +||inspectorstrongerpill.com^ +||inspirationfellowship.com^ +||inspiredalarmslower.com^ +||inspiredamy.com^ +||inspiredcataloguehometown.com^ +||inspoloji.com^ +||instaflrt.com^ +||install-check.com^ +||install1check.com^ +||installationmidterm.com^ +||installationtruckuseful.com^ +||installerastonishment.com^ +||installprudentmerriment.com^ +||installspal.com^ +||installupdate.online^ +||instampcoffled.cfd^ +||instancehospitalitysurmise.com^ +||instanceimprovedhew.com^ +||instancejuxtaposeteaspoon.com^ +||instances360.net^ +||instances60.com^ +||instancesfrom301.com^ +||instancesin45.net^ +||instant4ck.com^ +||instantconservativedetect.com^ +||instantdeceived.com^ +||instantdollarz.com^ +||instantlyounceclubhouse.com^ +||instantmemorize.com^ +||instaruptilt.com^ +||insteadmodification.com^ +||instilsemigree.qpon^ +||instinctiveicilywan.com^ +||instinctradiatorrook.com^ +||institutionnounreverend.com^ +||instrkashasgarble.cfd^ +||instructaffrontlightly.com^ +||instruments2333.com^ +||instruments29001.net^ +||instruments503.com^ +||instruments911.net^ +||instrumentsfrom950.net^ +||instrumentswith64.com^ +||instrumenttactics.com^ +||insubstantial-cabinet.com^ +||insufficienteventsenliven.com^ +||insularimportantly.com^ +||insultcall.com^ +||insuperfrontes.qpon^ +||insuranceobscure.com^ +||insurgedahspsalmy.cfd^ +||inswellbathes.com^ +||int8mp621xq4tymy.cfd^ +||intactbeatengraceless.com^ +||integralvoteceased.com^ +||integrityscenarioswerve.com^ +||intellectualcarlaintended.com^ +||intellectualhide.com^ +||intellectualtimetableindependence.com^ +||intellibanners.com^ +||intelligenceadx.com^ +||intelligenceretarget.com^ +||intelligent-black.com^ +||intelligent-comfortable.com^ +||intellipopup.com^ +||intendedeasiestlost.com^ +||intendsopush.com^ +||intendwaitresssalty.com^ +||intensesnedded.shop^ +||intent-square.pro^ +||intentanalysis.com^ +||intentemployee.com^ +||intentforever.pro^ +||intentionalfahrenheit.com^ +||intentionproof.com^ +||intentionsaspirin.com^ +||intentionscommitsubtle.com^ +||intentionscommunity.com^ +||intentlyuncover.com^ +||intentpound.com^ +||interbasepicturespostman.com^ +||interbasewhirlwindwalrus.com^ +||interceptfarrierreap.com^ +||interclics.com^ +||interestphysics.com^ +||interestspawnmulticultural.com^ +||interesttingg.com^ +||interfaceearnestness.com^ +||intergient.com^ +||interiorchalk.com^ +||interlinecustomroofingllc.com^ +||intermediaryquay.com^ +||intermediategillsevent.com^ +||internal-show.com^ +||internationalimaginary.com^ +||internattachment.com^ +||internewsweb.com^ +||internodeid.com^ +||interposedcommunication.com^ +||interposedflickhip.com^ +||interpretationairlinerdonation.com^ +||interrogateaccustomedgrimly.com^ +||interrogateallenboundless.com^ +||interruptlogic.com^ +||interruptwhining.com^ +||interstateflannelsideway.com^ +||intervalsgetaway.com^ +||interviewdigress.com^ +||intibwyoigjpf.site^ +||intimacyreduce.com^ +||intimacysupervisor.com^ +||intimastrust.qpon^ +||intimidatingsideway.com^ +||intombspyralis.qpon^ +||intonesrevellysailage.qpon^ +||intonevalkyrs.qpon^ +||intothespirits.com^ +||intoxicateregulation.com^ +||intoxicatescrape.com^ +||intrafic22.com^ +||intrailoutpomp.cyou^ +||intratebarger.cyou^ +||intricatewhilevertically.com^ +||intrudeimpolitetortoise.com^ +||intrunkdetartots.qpon^ +||intrustedzone.site^ +||intuitionlastly.com^ +||intuitsspavins.qpon^ +||inurneddoggish.com^ +||invadecontinentkeen.com^ +||invadedisheartentrail.com^ +||invaderelevant.com^ +||invadermonks.com^ +||invariableapathy.com^ +||invasiondiscipleburglary.com^ +||inventheroidcherubs.qpon^ +||investalepregnancy.com^ +||investigateisolateddepressed.com^ +||investigateproxyoily.com^ +||investigationsuperbprone.com^ +||invincibleacid.com^ +||invisibleoutfactories.com^ +||invitationownsnappy.com^ +||inviteebugshas.cfd^ +||inviteroot.com^ +||invitinghonor.com^ +||invitingjanuaryneurotic.com^ +||invividsacrist.qpon^ +||invl.me^ +||invl.us^ +||invle.co^ +||invoiceboldmansfield.com^ +||invokercc.cyou^ +||invokeslustly.cfd^ +||invol.co^ +||involvementelite.com^ +||involvingparentalducks.com^ +||inwardabruptly.com^ +||inwardsbeepedjocote.cfd^ +||inwardupsettingcudgel.com^ +||inweedapili.cyou^ +||inwmizqchqjlk.space^ +||inwrapswint.shop^ +||inxzfyeonudds.global^ +||inznbvtcgmfzn.store^ +||ioadserve.com^ +||ioassrlwlhqzk.website^ +||iobolsqkxbxlw.space^ +||iobswixghwftq.site^ +||iodesophia.qpon^ +||iodideeyebath.cam^ +||iodizedwaivod.cyou^ +||iofeguoyhemey.space^ +||iofifoybjqkow.online^ +||iogjhbnoypg.com^ +||iogpjkoewnxuh.site^ +||iohgttbethmaj.online^ +||iohqwaarinkpi.site^ +||iohsoavvddvmo.store^ +||iohzuartnbtpm.online^ +||ioijdsdqornbf.space^ +||ioirszjjxlmdu.space^ +||iojgirgpzkhym.website^ +||iojpwiynonzxj.online^ +||iojzzlodyluyl.online^ +||iokpsmgomfjoke.com^ +||iokyzmpkwtepa.space^ +||iolpdkzuvxvoe.online^ +||iomlsfqgvugaf.space^ +||ionicalbaline.qpon^ +||ionizedmicronsrouped.qpon^ +||ionlgwcpbxhjf.site^ +||iononetravoy.com^ +||ionsferes.shop^ +||ionuiphcmzfhy.online^ +||ioo2ypx31xfwnck285w5n8.cfd^ +||iopiopiop.net^ +||ioqdsyklgsuhc.website^ +||ioqishleauzrd.online^ +||ioqmlykmgplfz.space^ +||ioqzfmlumdesr.store^ +||iorhohyyibwop.online^ +||iornjqfdcrjjy.store^ +||ioruwh09.xyz^ +||iosjscxobtbkk.store^ +||ioskyathos.cfd^ +||iosnlunyysgekdm.com^ +||iotfovmvclciq.site^ +||iothkkqpgplrc.website^ +||ioubaxagxcdhg.space^ +||ioujibes.cyou^ +||ioynumodqydgd.site^ +||ioyygwxkrg.com^ +||ip186269007.ahcdn.com^ +||ipallhpscbdou.site^ +||ipavwrnhfdhbj.site^ +||ipcgssuxfrlmr.website^ +||ipcywg.com^ +||ipdqegogqbgwa.space^ +||ipebzusuwuxwl.site^ +||ipfovwmuaxcfw.site^ +||iphdncqthqwll.website^ +||ipimsnjzdlevp.online^ +||ipinbvrqduytg.com^ +||ipirusuipxda.com^ +||ipiujzmrpltid.site^ +||ipkdrprroqqzj.website^ +||iplabkliosubm.space^ +||iplrzphyynhbe.website^ +||ipncbqbnuwtol.site^ +||iporallfnlarv.website^ +||ipouucslkqmra.site^ +||ippleshiswashisc.org^ +||ipredictive.com^ +||iprom.net^ +||ipromcloud.com^ +||iprtulip.cyou^ +||ipsowrite.com^ +||ipvhrmk5toxhur659kte.cfd^ +||ipwfxgwjrlrfa.site^ +||ipwyyaiewuzfq.online^ +||ipyolmutfxlsv.website^ +||iqdlhrulwhnzt.space^ +||iqfhydrurclkp.space^ +||iqgblqeihwhvw.website^ +||iqgrerrkcwdxj.store^ +||iqhsxlqqgdcnk.space^ +||iqietsyotgcxz.site^ +||iqizfdgzqigjo.website^ +||iqjijcxxohzcc.space^ +||iqkaecaulzcqm.website^ +||iqktenowpyekw.online^ +||iqmfsawtxbyit.online^ +||iqoczawzdbpai.space^ +||iqofmyendnfju.site^ +||iqsmuqiuopvii.site^ +||iqtest365.online^ +||iqtvvevbydoat.online^ +||iqtwobocorvscc.com^ +||iqwkkpchugfbk.space^ +||iqxmdmynywhjn.online^ +||iqyhvzvpshtva.online^ +||iqylhtcmsefuxuh.com^ +||iqzjdpmkzglge.online^ +||iranianbayman.qpon^ +||iratestputage.cyou^ +||irbnydavspxxt.space^ +||iredirect.net^ +||irefmahnxfphq.space^ +||irenealtogether.com^ +||irenk.xyz^ +||ireofhisladyloveh.com^ +||irfgithdpoadi.site^ +||irgdnasjxgdsp.site^ +||irhngzxlaxjrs.space^ +||irhqvzwgldygv.space^ +||irhsymtcvduze.website^ +||irisinunquitensues.cfd^ +||irj2vs6p.xyz^ +||irjnfdvzzalpd.website^ +||irjvsxkxfqzkl.online^ +||irkdijxfcxgwg.site^ +||irkingpepseucone.qpon^ +||irksomegrateindustrious.com^ +||irksomereplica.com^ +||irltirjzdusup.website^ +||irmegmmxxbvll.site^ +||irmlutzpydekm.website^ +||irognpinedsgo.website^ +||irolzwiwjrlkm.site^ +||ironendeavour.com^ +||ironicalclearingsticking.com^ +||ironicschemes.com^ +||ironishponiard.cyou^ +||ironmenbrown.shop^ +||ironserialsepicism.qpon^ +||irpexory.cfd^ +||irpfhsfkfwgon.website^ +||irradiatestartle.com^ +||irrealslushessumbal.cyou^ +||irresponsibilitystealdestroyer.com^ +||irresponsiblevalve.com^ +||irries.com^ +||irrigatenotwithstandingcommit.com^ +||irriplaceableirriplaceablecompletioninheritance.com^ +||irritablecircumferencenook.com^ +||irritablecrowd.com^ +||irritablesunrise.com^ +||irritatededuce.com^ +||irritatepillssurly.com^ +||irritating-brief.pro^ +||irritating-side.com^ +||irrowewexyemh.website^ +||irscriptfertile.cfd^ +||irssptjnnupxz.space^ +||irtfmfzzbkjrx.website^ +||irtya.com^ +||irtyf.com^ +||iruekwacesjql.site^ +||irvincyma.cfd^ +||irvjwpajppvxi.site^ +||irxjqekijejhe.website^ +||iryiikxealejx.site^ +||irz4zfhtxwzw56.cfd^ +||irzdkfmbzbhcm.site^ +||irzebpsbojrbp.space^ +||isabellaentire.com^ +||isaminvagancy.cfd^ +||isarlnajbrwpw.online^ +||isatinspleurae.shop^ +||isatismortify.cyou^ +||isawthenews.com^ +||isbaurosis.cfd^ +||isbdgundjlqjy.site^ +||isboost.co.jp^ +||iscmlunmbdrdgfd.com^ +||iseawave.com^ +||iseleapers.qpon^ +||isepnumgqdthg.space^ +||isgost.com^ +||isgsrilzpqp.com^ +||ishbqnmriafnt.store^ +||ishedbritings.com^ +||ishmaelturtle.shop^ +||ishuaejlhqsfk.space^ +||isiaclieutnudies.cyou^ +||isiyxikfxjqwh.online^ +||isjohgyixswow.com^ +||iskenneth.com^ +||iskremtqgpjir.online^ +||islamiclyricallyvariable.com^ +||islayrhomb.cyou^ +||islesmarques.qpon^ +||isletspuckmirfak.qpon^ +||islkopcuomvsr.website^ +||ismwmovapolli.website^ +||isnqpfaafniky.website^ +||isodontespinal.shop^ +||isodrinclothyzags.cyou^ +||isodrinungross.cyou^ +||isoetesflirted.com^ +||isolatedcompliments.com^ +||isolatedovercomepasted.com^ +||isolation2warehouses.net^ +||isolomaslaveys.shop^ +||isomeryhexaxon.shop^ +||isonomyobscuracrocein.qpon^ +||isonomyreuel.cfd^ +||isoporrhizina.qpon^ +||isoualkcjushz.website^ +||isoucarmtosoz.online^ +||isovwtytofnzy.website^ +||isozvtdtzqefl.website^ +||ispnsjcdiubjf.online^ +||isqwswaeijeml.space^ +||issonruvxcgpp.website^ +||issuedkuvasz.com^ +||istlnkbn.com^ +||isypmogfhabmp.space^ +||iszbchgvidvhw.space^ +||iszrrgjxekmas.website^ +||isztpjhceyoir.site^ +||iszvalttjohra.online^ +||itabelog.blog^ +||itacistdirndl.cyou^ +||italapassir.cfd^ +||italianbeepimpediment.com^ +||italiangooseberry.com^ +||italicammiascula.cyou^ +||italyedgyregister.com^ +||italyrogueinhabit.com^ +||itaymcybuhsek.site^ +||itbipaxlaytax.space^ +||itbtdirbwlzmy.store^ +||itchingaxing.qpon^ +||itchinglikely.com^ +||itchingunethical.com^ +||itchyfunctionshear.com^ +||itchystraitsbuilder.com^ +||itcleffaom.com^ +||itcojnlsswzwt.site^ +||itehappymuttered.org^ +||itfzjvpvyclgu.space^ +||itgiblean.com^ +||itheatmoran.com^ +||itiicjkzfggic.site^ +||itinerarymonarchy.com^ +||itisfaryvysjp.space^ +||itjcytakszxtt.online^ +||itjjqntjvrscd.website^ +||itkldppgctfkx.site^ +||itktymvfvnjps.website^ +||itlgwhjbpojiv.store^ +||itmamoswineer.com^ +||itnnzkipjcxxt.space^ +||itnwcttnwedtk.site^ +||itponytaa.com^ +||itpsfqhnjlkwl.space^ +||itren.site^ +||itrigra.ru^ +||itrkgouhlbqlnk.com^ +||itrnfhysprzpl.space^ +||itrustzone.site^ +||itsaqxtw.com^ +||itseagleswig.com^ +||itsguiltymistaken.com^ +||itskiddien.club^ +||itskiddoan.club^ +||itsmillionlead.com^ +||itstuffnews.com^ +||itswabluon.com^ +||ittlewallowisfrie.org^ +||ittoxicroakon.club^ +||itujfdhvfwj.com^ +||itvalleynews.com^ +||itwboqvnouvcn.store^ +||itweepinbelltor.com^ +||itxbyjztilkas.site^ +||itxifonemi.com^ +||itxkepoxyqgfx.site^ +||itzachart.qpon^ +||iu3pprwz.xyz^ +||iuaflybgpquzv.space^ +||iuajqoxuympfeu.com^ +||iubehzyrwcdid.site^ +||iudcrnxwfgj.com^ +||iudoetilkfdxu.site^ +||iuenvtnayrmar.website^ +||iufbmwczokffc.click^ +||iufmhnbxvkzcy.store^ +||iuhnexrsvsjup.online^ +||iujpr5vp4ejyuiv9i2c.rest^ +||iukrelfkscaiy.space^ +||iulkpesaffexi.site^ +||iumewrfhlgnlu.site^ +||iunismkwstgdf.site^ +||iunmrmdyetjbe.website^ +||iuqkrdnldzsth.online^ +||iuqtmoblgqkgq.site^ +||iurezbksbjvte.com^ +||iurwpmrfbti86vr.cfd^ +||iutlrtovfnlbj.online^ +||iuuiirxnrolwc.store^ +||iuwzdf.com^ +||iuwzyhoamhcqb.site^ +||iuxvxvsmvjfwz.online^ +||iuyytxwoigubr.space^ +||iuzvusqotkhad.online^ +||ivbryivssdbqy.site^ +||ivbszagxehfbi.site^ +||ivcsmrt.com^ +||ivcymdknugpjt.site^ +||ivginofdrspo.com^ +||ivhblzwaawpug.online^ +||ivioukpnweuhr.space^ +||iviovqxlpvptw.space^ +||ivlnszjtorszh.website^ +||ivmtddhcnvpwt.website^ +||ivmw9ueiv443vx1yohepx1.cfd^ +||ivnhdxvifodti.online^ +||ivoristpetum.shop^ +||ivowlixzdrcsr.online^ +||ivstracker.net^ +||ivsuqzosbdrir.site^ +||ivuaqimnwpvdc.space^ +||ivuczbqiwdocn.online^ +||ivxbrwcdafjzr.site^ +||ivxwdikrmtzfc.online^ +||ivynjtsidwnqh.online^ +||ivyprolonginstalment.com^ +||ivywoodwonnedweakest.qpon^ +||ivywortcacajao.qpon^ +||iwantuonly.com^ +||iwbwthllmdfqw.space^ +||iwcrabmanwoibe.cfd^ +||iwdesqsrwxjwg.website^ +||iwdnwghcijrff.space^ +||iwdstbdbjevqp.online^ +||iwffbjlwvwloq.online^ +||iwffukdtesgpu.online^ +||iwfitgdwowfjp.space^ +||iwgtxtpyuxnoi.site^ +||iwifyvefyyeql.website^ +||iwjbodkdwgaxq.website^ +||iwkdgieptmede.site^ +||iwnjfdbnejbah.site^ +||iwpuegtgwmxon.space^ +||iwqbcvhukaao.com^ +||iwqgwgcbrwukf.site^ +||iwtivbukvlvdk.site^ +||iwunljidrmhdh.online^ +||iwv53vfgmpiizn2vpho.cfd^ +||iwvxwcsvpfbmc.store^ +||iwwebwhnmr.com^ +||iwwqjkclborxr.website^ +||iwxasakxqpcxi.website^ +||iwynvbppcemni.online^ +||iwyzycodonzlm.website^ +||iwzomgnuboeol.site^ +||ixabcdszeufqo.icu^ +||ixamawwpxjchg.website^ +||ixaxwiexuwcry.space^ +||ixbfaxlyvbqfd.space^ +||ixdhtszsircsl.site^ +||ixdxyerfgeljb.online^ +||ixehvtycykhik.store^ +||ixgyezjgpsnob.store^ +||ixhqrfzzijjjz.site^ +||ixiamacerionbuttals.cfd^ +||ixjqbrjolgrmf.store^ +||ixjqjoscayasz.website^ +||ixktuiwifwdkdvo.com^ +||ixlplfpqttclo.online^ +||ixltsrzszinaz.space^ +||ixmmlinyririp.space^ +||ixmt918llyj1vw4zzyb.cfd^ +||ixnp.com^ +||ixpaecojilsoj.space^ +||ixrkpkhdiwtej.website^ +||ixsdlekhrkocc.website^ +||ixsgksvcnjqvo.online^ +||ixtzexgnofhym.space^ +||ixubgeuvxzgle.online^ +||ixyfhlybedovh.online^ +||ixylwategbrdq.site^ +||iyapvwlqyqxafcn.com^ +||iyaxioaifbrvt.site^ +||iybgsvdqqrtxp.online^ +||iybordpmxdrno.online^ +||iybtgfvfrnhro.store^ +||iybwitllknbmq.site^ +||iycljnpwjyvyk.website^ +||iycqldnxdqgft.online^ +||iycxcmlzanbmk.website^ +||iyexlhpephrif.site^ +||iyfbodn.com^ +||iyfnz.com^ +||iyfnzgb.com^ +||iyipvkvaow.com^ +||iyiqffemorfuc.site^ +||iyisxchvajdxu.website^ +||iyjfideltmcwl.online^ +||iyjrnxbuxaici.store^ +||iyjuhyvsixkkx.online^ +||iyjvuhmgxtgvqoe.rest^ +||iylmylijdicmv.site^ +||iylwnmnnchzkq.website^ +||iymvmpyfsqnui.site^ +||iynzotcghpkur.space^ +||iypxxhjdiwggg.website^ +||iyqnahkspthlb.site^ +||iyqtpifqeoavq.site^ +||iyresfhhvgqex.site^ +||iyrrtosjcravm.online^ +||iytgsogniseyy.space^ +||iytlhykzxford.space^ +||iyxkoshoagpfc.website^ +||iyykavopdpkxx.site^ +||iyykxvzgtxuyq.space^ +||iyyzqjvjeehdi.store^ +||iz8mix82p4t6c97.rest^ +||izaybwqvajljf.space^ +||izccryctmxtwb.website^ +||izcftgjuemufo.site^ +||izcjyeehxaesm.online^ +||izdonegkaboga.website^ +||izechqbrmajqr.online^ +||izeeto.com^ +||izfogaydloceo.site^ +||izikthr.my^ +||izirjftafazzm.website^ +||izitrckr.com^ +||izjvndjendqdv.website^ +||izkivydhiqfjx.store^ +||izlmnnwquwryd.space^ +||izoga.xyz^ +||izrnvo.com^ +||izsbrnugzqrqq.online^ +||izsvfrkdnuetd.website^ +||izubaoknanmwa.online^ +||izucnttxblmpg.website^ +||izvclwnnwbytd.site^ +||izvryzfwgldrg.site^ +||izwhgqdebwqmq.site^ +||izwypazcocjxj.store^ +||izzdenxdxrbdc.space^ +||izzfjxmcczbpf.site^ +||j14pwhjbmelb7wlfh3i.cfd^ +||j2cpjr7qipjtjiip.rest^ +||j2zo6lvhqp4rfrli6.rest^ +||j3m2qphy2cipleohzxqt.cfd^ +||j3mh9gminfbp85b.cfd^ +||j4oe8qvginkx46zptf.rest^ +||j4qxryhfbz51nk.cfd^ +||j4wgztotkr76wrqfow79rwy.cfd^ +||j5ebf952lvfob1pf3b.cfd^ +||j6ixu4h5vtotkxx1y.cfd^ +||j6mn99mr0m2n.com^ +||j6xi94453pjc84qengv1w466yf5c7ovq7l5zl7.cfd^ +||j6yl1961rtnmuymq3n45y.cfd^ +||j8geljwqehp8mlhq48.cfd^ +||j8q3mqqt3c374u5jb.rest^ +||ja2n2u30a6rgyd.com^ +||jaahqjqnkzlpb.site^ +||jaapwinevat.cyou^ +||jaattafibqjst.website^ +||jaavnacsdw.com^ +||jabbedhambrounequal.cfd^ +||jabgbmoddpmjp.site^ +||jabobdfufaqt.in^ +||jaborinmeltage.qpon^ +||jabotsiever.qpon^ +||jacaleslegits.qpon^ +||jacalwoollen.cfd^ +||jackalbegging.com^ +||jackalclenchedbedside.com^ +||jackalhouseholdnostrils.com^ +||jackaltimer.com^ +||jackao.net^ +||jackassshaverypopedom.qpon^ +||jackcivilization.com^ +||jackersbrown.cfd^ +||jacketzerobelieved.com^ +||jackknifemonuments.com^ +||jackpotave.com^ +||jacksonbateaux.com^ +||jacobybirring.cyou^ +||jacwbxwxdf.com^ +||jadcenter.com^ +||jaded-voice.pro^ +||jadeinvitelawsuit.com^ +||jadjkuofzwad.com^ +||jads.cc^ +||jads.co^ +||jadwidal.com^ +||jaegervitallydele.cyou^ +||jafgtpuvxajoj.site^ +||jaforvsuneysw.website^ +||jafsuasulxeoh.online^ +||jagatpastils.cfd^ +||jagisjbavpwdj.space^ +||jaguarinstils.cfd^ +||jaguarsoutwent.qpon^ +||jahvehzingare.cyou^ +||jahwgcaskcxdl.space^ +||jailishleggin.cyou^ +||jaixajhu.com^ +||jajmanpursive.shop^ +||jakebizarreexclusively.com^ +||jakeconventconcerned.com^ +||jakedefy.com^ +||jalbwwqldi.com^ +||jalkarsontag.cyou^ +||jalrlgochsjoe.space^ +||jamanolepy.qpon^ +||jambesmatres.cyou^ +||jambonefenitefrothed.qpon^ +||jambosmodesty.com^ +||jamieamban.cfd^ +||jamony.xyz^ +||jampacked-depth.pro^ +||jampredestination.com^ +||jamsalon.com^ +||janglecondemn.com^ +||jangmglkchtgl.website^ +||jangonetwork.com^ +||janitorgracing.cyou^ +||janitorprecisiontrio.com^ +||januaryvintagegull.com^ +||janwryoven.com^ +||jaoxhybhiodpy.space^ +||japanbros.com^ +||japandigest.info^ +||japanesecircuitperfection.com^ +||japaneseexceedinglysanctuary.com^ +||japanhotties.jp^ +||japanstartup.info^ +||japbdpdmazimj.club^ +||japorwell.cfd^ +||jaqhbfzeufxgp.online^ +||jaqvwdzjuhebs.site^ +||jargonthugconfessed.com^ +||jargveurtocja.world^ +||jarinafumaricfastens.cyou^ +||jarrahmahajunhershey.cyou^ +||jarsneakymoisture.com^ +||jarvispopsu.com^ +||jarwressaraced.com^ +||jasiespremie.cfd^ +||jaskhuczzexoh.site^ +||jasperybarmie.qpon^ +||jatipeals.cyou^ +||jaunty-leadership.com^ +||jauntyit.com^ +||jaupspookaun.qpon^ +||javascriptcdnlive.com^ +||javgg.eu^ +||javmg.com^ +||jawanbedrown.qpon^ +||jawedputons.shop^ +||jawigcqrumbez.space^ +||jawqgjbvrceel.website^ +||jawyabhdlbtub.space^ +||jaxix801.com^ +||jaybanquo.cfd^ +||jayceesapandry.cyou^ +||jaydpfcoftijl.space^ +||jaypietombic.com^ +||jayqbgfkdypmw.website^ +||jaziesidly.shop^ +||jazuoujihigip.site^ +||jazzistagallop.com^ +||jazzyescrod.qpon^ +||jbalnemwgxsbp.space^ +||jbaqavqkrovyy.top^ +||jbazlkbvmyecd.website^ +||jbbralnoniaak.online^ +||jbbyyryolmlvq.top^ +||jbbyyryolqvvb.top^ +||jbcekxybbwsbz.website^ +||jbcotssmdjetb.site^ +||jbdbxwwuxhwfa.online^ +||jbh3l8lumblnh4byp3m.cfd^ +||jbielmzklgwax.online^ +||jbiokwloncerp.club^ +||jbkdjuxuymejr.site^ +||jbkueagfgwphk.online^ +||jblaptokniuuu.website^ +||jbldfugqruigf.website^ +||jbmmqpmrdjnsn.global^ +||jboibfgygqffg.site^ +||jboppyhawqzfo.online^ +||jboztgcwxnvoc.website^ +||jbqmjdbxsxlyj.site^ +||jbqtnmomoetzz.site^ +||jbrieonvryioo.space^ +||jbtqolskzxoky.online^ +||jbtul.com^ +||jbtzenvvhqaaf.website^ +||jbuegeejecfca.website^ +||jbvoejzmaqmjw.top^ +||jbvoejzmaqqjj.top^ +||jbwcujtcmchoh.website^ +||jbxaijiiblsal.site^ +||jbxgbdetzfgpn.space^ +||jbyajwmnljpsy.site^ +||jbzmwqmwqyejw.top^ +||jbzmwqmwqyzaz.top^ +||jc4ngkruqhicwn1k.cfd^ +||jcajuesjvxlqy.store^ +||jcavguudmzlif.site^ +||jcbnozxsotycs.website^ +||jcducnmrnmznb.online^ +||jcdwjcetiikar.website^ +||jcfocrpceqtwa.site^ +||jcgdhqusv.com^ +||jcgklkxkrltcy.store^ +||jchnourjtrbiw.space^ +||jchrpmuauhdyr.site^ +||jconceoormurg.online^ +||jcphi.com^ +||jcqdmvoibw.com^ +||jcqwudfidmevr.online^ +||jcrhpslysoaww.site^ +||jcsubfkhazsil.website^ +||jct83bclvg8c7h91f.cfd^ +||jcvtdoqmifyzt.site^ +||jcwylmuatiaqv.store^ +||jcxnwlwjigrjr.online^ +||jcyabxevvwbrn.icu^ +||jdauflfpdmoop.online^ +||jdaxvtlwprmlz.space^ +||jdbbrohkuubhdh.com^ +||jdecansbndbbg.website^ +||jdfanqhqkgfhfk.com^ +||jdfhwxboadwvg.online^ +||jdfrqcqxzkjlr.space^ +||jdfxtlykcmrly.online^ +||jdgjddsjoyqqm.online^ +||jdhbpehrcmndd.website^ +||jdhpldwvggu.com^ +||jdhqctrxiuleh.space^ +||jdhxvjrildzjt.site^ +||jdisbizkiwsbn.online^ +||jdiytgppssetc.space^ +||jdjiuhwooalvp.website^ +||jdjjrlmodfqxw.online^ +||jdkdzhvgqnecz.online^ +||jdknsghqwbrki.com^ +||jdlqivqfhiyjz.site^ +||jdookslktoafb.website^ +||jdoqocy.com^ +||jdraskbpyqgpi.site^ +||jdssykdlwygwj.site^ +||jdt8.net^ +||jdwqsewrbvnnt.website^ +||jdxkcews.com^ +||jdxnelgnhtfyq.space^ +||jdxxuvnrpdmit.space^ +||jdzpzbrxhzkqn.space^ +||je4y15ji.xyz^ +||jealousembroideryroute.com^ +||jealoussale.com^ +||jeansdespair.com^ +||jeaozvppnvtni.space^ +||jebattrypa.cfd^ +||jecisyqvowdzx.website^ +||jeddingdelator.cyou^ +||jedrgrklutyni.site^ +||jeemgurnntav.com^ +||jeepearlobe.com^ +||jeepviolinasoueef.qpon^ +||jeeqpzncxmyjy.store^ +||jeestauglahity.net^ +||jeetyetmedia.com^ +||jeflakrlrdysq.website^ +||jegrbkenarvan.website^ +||jeiwumcsw.com^ +||jeixbwlazmpzc.site^ +||jejlaueaxfsjt.website^ +||jejunanieves.qpon^ +||jeknoeqcgedl.com^ +||jemadebvhndzn.space^ +||jen8hf15cfe82cg12g21nnfiy.cfd^ +||jenaxin.cfd^ +||jeneirlidqrms.website^ +||jennahowel.qpon^ +||jennjstpdb.com^ +||jenoarbalsas.qpon^ +||jenoga.xyz^ +||jenonaw.com^ +||jeoawamqybkeb.top^ +||jeopardizeangrydetrimental.com^ +||jeopardpocking.qpon^ +||jeptzjijckiey.site^ +||jeqpqqqqwkmxk.store^ +||jerkilyrebop.qpon^ +||jerkystators.cyou^ +||jeront.xyz^ +||jeroud.com^ +||jerseydiploma.com^ +||jertburi.cfd^ +||jerviabrigued.shop^ +||jervinegenital.cyou^ +||jesjes.xyz^ +||jespekvtcgfuu.website^ +||jespwdvojaavj.online^ +||jessantwowedstoled.qpon^ +||jestbiases.com^ +||jestcompelledcalligraphy.com^ +||jesuistdefines.shop^ +||jesuitsborateddirham.cyou^ +||jet9ku34w9kvgrz.cfd^ +||jettedmitch.cfd^ +||jetterlucayanfellic.cyou^ +||jetwarekannen.shop^ +||jevybnmrhousp.site^ +||jewacgufesztu.space^ +||jeweledmoorn.cfd^ +||jewellerybroadlyisabella.com^ +||jewelrydislealcursor.cyou^ +||jewelsobstructionerosion.com^ +||jewfishtinger.cfd^ +||jexocsgi.com^ +||jexxcyworgopm.love^ +||jexzbvkfnmmyw.store^ +||jezer.site^ +||jf71qh5v14.com^ +||jfacflmbkvxez.online^ +||jfatdzowbj.com^ +||jfdokxkiarufi.website^ +||jfdtbmfzgkkxl.website^ +||jfebsbgifmdfu.space^ +||jfelljoqquoijo.com^ +||jfezwogpa.com^ +||jfjle4g5l.com^ +||jflfgirfvthuj.website^ +||jflmhtxvgslfe.space^ +||jfneysdhhisea.website^ +||jfqqvtevayyfm.online^ +||jfrfsgnhjjfxc.online^ +||jfrthphciuxjk.website^ +||jfrtopxglnetf.online^ +||jfuxevakslazy.site^ +||jfvcvxdljdqxw.website^ +||jfverzoeowotc.store^ +||jfvmp24m73uigxi4hvlw4684kjt.rest^ +||jfwaqjrsvshtl.online^ +||jfwcflhysjjiq.space^ +||jfwrongznqxwh.site^ +||jfyjowocrokkt.online^ +||jfzgxkkgnpilo.online^ +||jfzucsihbphzt.store^ +||jg43iqqd.xyz^ +||jgaxcxbbdbsuy.space^ +||jgbnltrrpotbl.online^ +||jgcakixnbnyng.website^ +||jge46hwmx9eymzp.cfd^ +||jge8xq1yhwefzq1fo4.cfd^ +||jghmklgkk.com^ +||jghxljvxhyyhy.online^ +||jgkgqvxmnrxjb.space^ +||jgkpsxlnqnknp.site^ +||jgleiqmtcdqgw.website^ +||jglezaldkyldn.online^ +||jglwyxywvsstl.website^ +||jgnzifxswczpu.site^ +||jgoodedtayhfm.site^ +||jgovdupigzozf.online^ +||jgqccztrsqbtb.website^ +||jgqpddekjd.com^ +||jgsceqkcobpvh.website^ +||jguroejplzivn.site^ +||jgwlomfinvizq.site^ +||jgwzimxkoykiy.space^ +||jgybofeaubrxy.space^ +||jh374occk4ucnu.rest^ +||jhbzbiomaieex.store^ +||jhcbturgsvujd.site^ +||jhdniecbnrkhq.online^ +||jhebhefcekqpi.site^ +||jheypehwgocjq.space^ +||jhfjslomqzfte.site^ +||jhfqbgimqqllry.com^ +||jhjgzxkdlztab.site^ +||jhkfd.com^ +||jhlxmodmknxce.online^ +||jhncmokruwmhd.website^ +||jhnwr.com^ +||jhopy6fxqlzcjyxnn.cfd^ +||jhoqgfgm.com^ +||jhowrita.qpon^ +||jhqieljrzibnr.store^ +||jhrwxnyphhelu.site^ +||jhuzffeiiargq.space^ +||jhxfplpawtdxv.space^ +||jiaqvigtlyvjgr.com^ +||jiawavgaksdbq.store^ +||jibcjrikkqjmc.online^ +||jibsneeannnlz.site^ +||jicaquedehache.cyou^ +||jiczbxbmtefhk.store^ +||jidftzbqrjaqr.site^ +||jiehsiazrrkql.site^ +||jifflebreasts.com^ +||jiggerskohlcasinet.qpon^ +||jigsawharmony.com^ +||jigsawthirsty.com^ +||jigwipfhowim.in^ +||jihaxrndufelb.online^ +||jiifwnxi.com^ +||jijamqodkojs.in^ +||jijeahjtjzpxr.space^ +||jijrafocr.com^ +||jilar.xyz^ +||jiletin.xyz^ +||jilioadvrvpwm.site^ +||jiltervolow.shop^ +||jimhloyoiczgn.space^ +||jimimpwmgzycc.site^ +||jimjampatted.com^ +||jimmysindon.cfd^ +||jimppocked.cfd^ +||jingletronasbosons.cfd^ +||jinniespottagy.com^ +||jinraoiahbrhg.online^ +||jiprgfzcpdjmp.online^ +||jiptcrzamhujz.space^ +||jirot.xyz^ +||jirqrmfxaeoyr.site^ +||jitanvlw.com^ +||jitgibmibpayc.online^ +||jitiroundly.cyou^ +||jitneydopatta.shop^ +||jitrosidewayindaba.qpon^ +||jitsjnlwupbdh.site^ +||jitterendeavour.com^ +||jitterspauperusher.com^ +||jitterystation.com^ +||jitterytwist.com^ +||jiuiejdroikop.site^ +||jiuwert.online^ +||jiwire.com^ +||jixdwtlveqhrl.online^ +||jizzarchives.com^ +||jjbkkqj1ewg8g3zr992wu1.rest^ +||jjcqaxhyusgfq.site^ +||jjeiraiaxnvbw.online^ +||jjfghqcqwgcjx.site^ +||jjgscmamptmer.site^ +||jjhqlyesuecsb.site^ +||jjjgqtzlslhzi.online^ +||jjjtbiggzzucf.online^ +||jjjusezeikjzn.site^ +||jjkcvjpoyplou.website^ +||jjkrwhppriwog.space^ +||jjlhwdgrrqjzo.space^ +||jjlidyuaztsfj.online^ +||jjpmodmgj.com^ +||jjpqqbxodpnwc.website^ +||jjsvnksizjvxu.site^ +||jjvxtsmllhrnt.site^ +||jjwlgscgtvuvo.space^ +||jjxcwurdtouaw.online^ +||jjxipmaerbtdj.online^ +||jjzuqyezehdnj.space^ +||jk-to-mn.com^ +||jk-to-pq.com^ +||jk4lmrf2.de^ +||jkanlrbtusoao.site^ +||jkaztwupdrdvz.store^ +||jkbewmebyqjyl.top^ +||jkbewmebyqkoq.top^ +||jkc0idkv.xyz^ +||jkdkahix.com^ +||jkeitifzyuxde.online^ +||jkfivewwaldgy.space^ +||jkha742.xyz^ +||jkheiyvgvjfwy.online^ +||jkivksjqquguc.store^ +||jkjxrbojfcljp.site^ +||jklfhxxmxjcqi.space^ +||jklpy.com^ +||jklxapwjjgyqb.space^ +||jkmawumzebcim.space^ +||jkmdfnarliyun.website^ +||jkmjjjlah.com^ +||jkotxmc5j1iwji5muk9xxwmjvjcc2.cfd^ +||jkqiweqrxsieb.website^ +||jksmaafnkdyni.store^ +||jktrnmllgenlb.online^ +||jktuulfyqhkxw.site^ +||jkvbegvzzmrsn.website^ +||jkwxanffxdpsm.online^ +||jkxihdymwxueh.space^ +||jkxlzrxhtqrdr.online^ +||jkxmipnxwbjtv.website^ +||jkykczdwuchq.com^ +||jkzakzazloavb.top^ +||jkzakzazlojvz.top^ +||jl47ekpoozziff7mk2og1852t2f7jg6.rest^ +||jl63v3fp1.com^ +||jlavmdvzxpgqs.online^ +||jlawrkjcpahca.space^ +||jlbowtwjqkxoa.space^ +||jlccmbmeeuuxq.space^ +||jlcdpxvbrjxgk.online^ +||jldoxjmw.com^ +||jlecgcsdbleti.online^ +||jlfdfodxejpxt.space^ +||jlguoe9nqg3eyqbqqvr4eoc.cfd^ +||jlhkumsptbwuz.site^ +||jlhmxduyftkae.site^ +||jlhoefzaqqbsz.online^ +||jlishsdaxkibb.space^ +||jlkyutjdibzyb.online^ +||jllxkqvoecigv.online^ +||jlmgzsrxtmuce.online^ +||jloymapbukmdc.space^ +||jlpbymrzollix.space^ +||jltczmewqabda.online^ +||jlvhwqtkmttgq.site^ +||jlvsspddgklhp.space^ +||jmadyknjxonua.website^ +||jmbkpqi78ylqrvg.cfd^ +||jmbmhunbzvhrk.site^ +||jmdeauqr.com^ +||jmdreenduebqz.site^ +||jmebwpbpvofcx.online^ +||jmfxxgrvlo.com^ +||jmhrmhgjkdgvd.store^ +||jmkladoihjrsa.space^ +||jmnktmmkiitir.site^ +||jmnlsiquhikir.site^ +||jmnxhygjdedjy.site^ +||jmoofprjgqtwr.space^ +||jmosl.com^ +||jmoswoswvolnn.website^ +||jmotvjjuqyfqx.space^ +||jmp-assets.com^ +||jmphuufnwmyahvv.com^ +||jmrpcwkkaptlr.store^ +||jmrttelvwstpg.space^ +||jmsaawvcbapask.com^ +||jmsiizwqpkirp.website^ +||jmt7mbwce.com^ +||jmtfwapdtjqgt.online^ +||jmtfxuwwylmrl.website^ +||jmuvidpfpza.com^ +||jmvoqsusinkfg.site^ +||jmwscbzgcqlaq.space^ +||jmxbozcorxrdb.space^ +||jmxqqlgsrkkrl.online^ +||jmxsjlihpudfk.site^ +||jmyokxpco.com^ +||jmzoufvwxiswf.site^ +||jnarigjkijgoh.space^ +||jnaxmcnlzsnox.com^ +||jnbhi.com^ +||jndcdxcoqjroj.store^ +||jnkscznwuxvlp.online^ +||jnlevhmebqcxc.website^ +||jnmqhpecyjrnf.online^ +||jnqbkpsymoads.site^ +||jnvgvhkfkrgvp.site^ +||jnvwjvpquelgr.website^ +||jnwcubaojvaqh.site^ +||jnwgcsnbsh.com^ +||jnwkuvbddbmzf.space^ +||jnwpcellgwqbz.space^ +||jnxm2.com^ +||jnzkk46yzcuqeo857ppjlt.cfd^ +||joanordeal.com^ +||jobblemanletgenetta.qpon^ +||jobmkewkzwbkq.top^ +||jochhumin.cyou^ +||jockeyaloofefluky.qpon^ +||jodcvjpnvcmua.website^ +||jodogcgopasds.site^ +||jofddomgfztan.website^ +||jofxpmbbyjxoo.website^ +||jofzlmsbvfpld.website^ +||joggingavenge.com^ +||jogryvgycqjph.store^ +||johqbazqtbbnz.site^ +||johrsdetyfkgi.space^ +||johuvhjrtqqwb.online^ +||joinpropeller.com^ +||joint-club.com^ +||jointerestpred.cyou^ +||jojackal.com^ +||jokefibers.cyou^ +||jokeinvestigationfairly.com^ +||jokercheerfullylet.com^ +||jokfrivqogtwq.site^ +||jokiestacuandemeans.cfd^ +||jokingaspirant.com^ +||jokingsummonyuri.com^ +||jokulhid.cyou^ +||jolecyclist.com^ +||jolhghbdjayis.website^ +||jolmen.click^ +||jolrfeqxyavvj.site^ +||joltscushawtaharah.cfd^ +||jolugubqlnjce.site^ +||jombfyktowaqp.space^ +||jomistress.com^ +||jomonhoaxee.cfd^ +||jomonovicide.qpon^ +||jomphoelubekg.site^ +||jonconky.qpon^ +||joograika.xyz^ +||joohugreene.net^ +||jooinzvayqbih.rocks^ +||jooiqfoclhybf.online^ +||joojarseyfjqi.site^ +||joojgpfnifpsd.space^ +||jookaureate.com^ +||jookdezincslid.cyou^ +||joolapuchera.qpon^ +||joomxer.fun^ +||jootizud.net^ +||joqowqymkrywy.top^ +||jorammeatman.com^ +||jordenepipany.shop^ +||joroofmenfores.cfd^ +||joropobaconkoran.qpon^ +||jorumroxane.qpon^ +||joryvztqojsig.space^ +||josephclassics.com^ +||joshuaam.qpon^ +||josipoppugn.qpon^ +||jossazimene.shop^ +||jotteroctaveprepink.cyou^ +||jottiercedserail.cyou^ +||joudauhee.com^ +||journalismfranticallypsychic.com^ +||journalpowerlesspoetic.com^ +||journalpreponderant.com^ +||journeydirectsubmarine.com^ +||journeyjp.live^ +||journeylula.com^ +||jousteevoofooge.net^ +||jouteetu.net^ +||jouwaikekaivep.net^ +||jovialcadence.com^ +||jowlishdiviner.com^ +||jowlyreicingostemia.qpon^ +||jowqcaxfctoob.online^ +||jowrcnynuylaw.site^ +||joxaviri.com^ +||joycreatorheader.com^ +||joyfullybarn.com^ +||joyous-north.pro^ +||joyousandarkoboskage.cyou^ +||joyridewhump.qpon^ +||joytechnicallynew.com^ +||joywnxixpjyrx.website^ +||jozchgyqfzqcf.online^ +||jozispfsxhbmg.space^ +||jozvfaesigdre.site^ +||jp99uxmoc59mcvne3v4yc18o6.cfd^ +||jpackipmxsufz.online^ +||jpadxrydoiorz.online^ +||jpbsggqehlopl.online^ +||jpcjzcrkrugie.online^ +||jpfjltsmlrimq.site^ +||jpgfychjclfxh.site^ +||jpgpnobrgquzb.site^ +||jpgtrk.com^ +||jpheacrrnllaq.space^ +||jphnagyscnekv.site^ +||jpisoprhajjyx.space^ +||jpktldryxvuzk.online^ +||jpmfoujpjjhlk.space^ +||jpnhxthuxiplo.site^ +||jpnnvhdityxha.online^ +||jpojrkwzofpxn.space^ +||jpoqotqyjhqqz.space^ +||jpqlqtnvbtvhx.space^ +||jpqnvgjnxyjdt.site^ +||jpqqpuglphfvt.space^ +||jprikyulkdrwt.site^ +||jprutbffhyhgi.space^ +||jptobfdvxtady.online^ +||jpvcwiqqc.com^ +||jpvijgojgkgyk.online^ +||jpwcijkiobukr.site^ +||jpwrashuzfstxc.com^ +||jpwwqujvnoskd.site^ +||jpwzbglshulfq.space^ +||jpzdaanhktgiu.online^ +||jpzyeqobploxo.website^ +||jq8efbj3wcfhqblq3.rest^ +||jqacpuetzhjta.space^ +||jqchmauxbwkru.online^ +||jqdphtvtvyvwd.online^ +||jqfgismnmje.com^ +||jqilyjagezcqk.site^ +||jqjauhkkylyj.com^ +||jqjpdxlywnqam.site^ +||jqkquamet.com^ +||jqlpnqzcnehhb.site^ +||jqluayokcswse.website^ +||jqmrfjqmhtdpd.space^ +||jqmwcfrmhzmqd.online^ +||jqnllsnmyvpgf.online^ +||jqoocgwzagphw.space^ +||jqotodaitejqb.site^ +||jqpaisehvpnvp.website^ +||jqpxbcapsthal.space^ +||jqsklowxurgbh.online^ +||jqttlnzaudopg.website^ +||jqueryoi.com^ +||jqwcxpphzgxym.online^ +||jqwlnzqmnmqmf.online^ +||jqwqxdboznygi.online^ +||jqxcrdytprcmk.online^ +||jqyjonjxonnzp.space^ +||jqyryzrbuqpfp.space^ +||jqzfuwquzzljc.online^ +||jqzurginxmgrq.space^ +||jr5lbhqwtqx7ct5tit4.cfd^ +||jr5wtgo7v273wfgg9.cfd^ +||jr8kk9957u75e92i.rest^ +||jraaraflargqt.website^ +||jravekvyeyyvq.top^ +||jrbbavbvqmbaz.top^ +||jreanjvuvpmy.in^ +||jrjexx.com^ +||jrkihvllezsla.space^ +||jrkveqlzvpcmd.space^ +||jrkylxrnktjbo.store^ +||jrmmekdihiivp.site^ +||jrnefbrogdppa.online^ +||jrnhaksmluenb.space^ +||jrnjcrgmiyzty.website^ +||jrpkizae.com^ +||jrqfukqx.com^ +||jrqneoqofxbvn.website^ +||jrqojtvzuqvhx.online^ +||jrqqxelauuqhm.site^ +||jrqzmiipckcvm.website^ +||jrrkcyqgrdxkf.space^ +||jrrygibhwcmwb.space^ +||jrsvsjcxtdqzw.website^ +||jruczsajvawgi.website^ +||jrufhfbyigmxk.site^ +||jrunkpbdiqiuu.site^ +||jrvhmxnfzczll.online^ +||jrvrkzrjrmoyy.top^ +||jrvrkzrjrmyyj.top^ +||jrwbwckkpjjud.website^ +||jrxgcthoussjz.store^ +||jrybwitdqjjuo.store^ +||jryqypkoskqmo.site^ +||jrzrqi0au.com^ +||jrzwrjgxhzotx.site^ +||js-check.com^ +||js.manga1000.top^ +||js2json.com^ +||js7k.com^ +||jsadapi.com^ +||jsagyefkkfaea.site^ +||jsawxlbwqxnsh.website^ +||jscdn.online^ +||jscount.com^ +||jsdelvr.com^ +||jsdlsmthldxfv.space^ +||jsegpordsrfbn.website^ +||jseqkehgtwiqc.com^ +||jsfccvhydjrdr.space^ +||jsfeedadsget.com^ +||jsfuz.com^ +||jsgvuduhprrzf.space^ +||jshvwhcznwigo.site^ +||jsieyfvosbgp.com^ +||jskmkerjjwxjpp.com^ +||jsmcrptjmp.com^ +||jsmcrpu.com^ +||jsmcrt.com^ +||jsmentry.com^ +||jsmjmp.com^ +||jsmpsi.com^ +||jsmpus.com^ +||jsmsmdjpkmpre.site^ +||jsnooznxsbjxk.website^ +||jsnryngvalfji.site^ +||jsoggeqfmzzqi.website^ +||jsotpyjprlcaz.website^ +||jsretra.com^ +||jssckcpqylmzc.site^ +||jssearch.net^ +||jsshidzmbryny.online^ +||jssuuqiylxoga.site^ +||jstacqabgeuzl.space^ +||jstkctjbhujhg.site^ +||jstzvtmgiybkd.xyz^ +||jswlnhcfmotapnm.com^ +||jszmbkfsaeupx.space^ +||jszpagyvknvhv.website^ +||jszwcvutrlpcr.site^ +||jtarfendijmmo.online^ +||jtdkmjuiogidh.site^ +||jtfsrnmxdcwtx.site^ +||jthkegumzcwkz.site^ +||jthvhvisxilvq.space^ +||jtijneiumjttd.space^ +||jtiluxuooejuy.site^ +||jtinbgeyzmcjd.online^ +||jtopudllmvejj.website^ +||jtozgzksqatjb.site^ +||jtpo9nh8lz7ouexviqhyolhecx27gqk.cfd^ +||jtrzbktxmcjpl.online^ +||jtsqetqkdcwbq.online^ +||jtuyocdzxtzla.store^ +||jtvqpxabvfnlm.website^ +||jtvrsikjhlnat.space^ +||jtzrhflqbnbal.website^ +||ju6cj4inxex93rcxbnx7f8vweulkwok.cfd^ +||ju882wouzr7tcxi8zeyprpj9tr9.rest^ +||juanpingers.com^ +||juanssafrole.cyou^ +||juar620.net^ +||juausnanolbbs.space^ +||jubilantsignal.com^ +||jubileebread.com^ +||jubnaadserve.com^ +||jubnvmtaztqpa.website^ +||jubsgzufzicne.site^ +||judajtfhmmvgt.space^ +||judazkoxbnhnc.store^ +||judebelii.com^ +||judgedfancyhowl.com^ +||judicialimpatientgenerator.com^ +||judicialphilosophical.com^ +||judicialreaphealth.com^ +||judiciousbarnacle.com^ +||judsosvhqpuio.online^ +||judweeda.qpon^ +||jufmgsnsjjcpk.site^ +||jufqzounkpmjf.site^ +||jugatedsperateneozoic.cyou^ +||jugerfowells.com^ +||juggermitre.cfd^ +||jugglingoverfedparalyze.com^ +||juglonepulsion.qpon^ +||jugloubhtiluv.website^ +||jugtpgahwcho.com^ +||jugularesell.com^ +||jugulumnorbert.cfd^ +||jugurslrrneem.space^ +||juiceadv.com^ +||juicyads.me^ +||juicycash.net^ +||juicycontext.com^ +||juicymortgage.com^ +||jujuflatwaypolt.cyou^ +||jukesbigramamoral.cfd^ +||juklfwgznmzky.site^ +||juleplilian.qpon^ +||julianoalvaroz12.com^ +||jullyambery.net^ +||julolecalve.website^ +||julrdr.com^ +||julusplounce.cyou^ +||julyclassesstature.com^ +||jumbledbouget.cfd^ +||jumblenewsletterdebark.com^ +||jumblespekingdanae.qpon^ +||jumbo-insurance.pro^ +||jumbo-order.com^ +||jumboaffiliates.com^ +||jumbostubdifferent.com^ +||jump-path1.com^ +||jumpcoronationprestigious.com^ +||jumpedformer.com^ +||jumpedwaistcoatstronghold.com^ +||jumperclasssearch.com^ +||jumptap.com^ +||jumpyfeature.com^ +||jumpylevel.com^ +||jumpyliterature.com^ +||jumpyshare.pro^ +||jumto.xyz^ +||jumvsaapqxaed.site^ +||junctordasypod.qpon^ +||jundzeaqsodl.in^ +||junior-satisfaction.com^ +||juniorfascet.shop^ +||juniorfirm.com^ +||juniorregister.com^ +||junkiebeepconfusion.com^ +||junkraggedtoothache.com^ +||junksrane.shop^ +||junkyadexchange.com^ +||juomudsjlmert.online^ +||jupfpdiuxepep.online^ +||jupit.xyz^ +||jupongimped.qpon^ +||juponrerope.com^ +||juqzuljruojt.com^ +||juratawoohoo.qpon^ +||jurelsmacacoscaller.qpon^ +||jursp.com^ +||juryolympicsspookily.com^ +||juryprefacereproach.com^ +||jurysupposedshooter.com^ +||juscoleracouldnt.qpon^ +||jussalromeine.qpon^ +||justey.com^ +||justifytartexterior.com^ +||justinepulvino.qpon^ +||justingstrewn.cyou^ +||justledrebuts.qpon^ +||justonemorenews.com^ +||justpremium.com^ +||justservingfiles.net^ +||justsufficiently.com^ +||juswsuqwbegra.site^ +||jut6i8iz3ozwejbztopqmbo2bih.rest^ +||juttiesvicing.cyou^ +||juttkxcxflkao.space^ +||juttonight.com^ +||juvenile-guest.pro^ +||juvenileblank.com^ +||juvenilecalendar.com^ +||juvenilesoftlysoda.com^ +||juveniletennis.com^ +||juvqepfiiojdv.online^ +||juwxqazrxupdg.space^ +||juxnalovgqit.in^ +||juxpdnekqdmka.space^ +||juymjvrjpbdpg.site^ +||juywkhbpmswmq.website^ +||jvfyzambiefys.space^ +||jvhhjiikwjrpx.site^ +||jvipcwxcq.com^ +||jvizkqur6egmgee4jb3r.cfd^ +||jvkapzajyuhnh.online^ +||jvkwg6rhrwvm5zoxkq1.cfd^ +||jvlrcbfxijxgk.store^ +||jvpmjxgfphoqp.online^ +||jvqijvdhihczy.online^ +||jvqlisbixnxaz.space^ +||jvrbmsrtvpzst.site^ +||jvsrqsqh.com^ +||jvwuejwrelcst.space^ +||jvxlfrzupukvh.online^ +||jvxzqiwzgxglg.website^ +||jvytfjxamlfkr.online^ +||jvzogvirjbaly.site^ +||jvzsgtjkewhfu.website^ +||jwalf.com^ +||jwalkin.com^ +||jwamnd.com^ +||jwbefdbnvuqdo.website^ +||jwbhywjlseajy.site^ +||jwcgmioafykme.site^ +||jwcpgnlnwbukt.xyz^ +||jwdyjlafpkxkf.space^ +||jweekuxflrgqj.site^ +||jwfaregtarvql.space^ +||jwhfxnravgzft.space^ +||jwjcpzdprksgg.online^ +||jwkfdcxedstsud.com^ +||jwmmddyynowkt.website^ +||jwoawrucjoerw.space^ +||jwqatrgdttvdj.website^ +||jwqntfwcet.com^ +||jwqqxyxuhmuaj.website^ +||jwqvnbzxwiibj.one^ +||jwraxixytrvwm.site^ +||jwrkcjglados.com^ +||jwshnydjqdmkx.site^ +||jwskgkxnwdivg.online^ +||jwsltekcmzhkj.store^ +||jwube4zf2ffv6o4j.cfd^ +||jwufajjpajnfq.website^ +||jwuikmwpwrvae.site^ +||jwuxryzdclpzp.site^ +||jwxlupfcsmlkb.online^ +||jwycckadkimti.online^ +||jwzeoshnruedd.website^ +||jxawcxgxuerba.online^ +||jxbpanpbplamf.top^ +||jxbwzfgggttme.site^ +||jxcuocswkavpi.site^ +||jxcuywnprilwi.space^ +||jxdgcaekgisb.com^ +||jxelkzydvftdn.space^ +||jxfmkz6pw3zft4p.cfd^ +||jxgncozqhyfo1v5zmnzc6u.cfd^ +||jxhytrgxvybqb.online^ +||jxiiwldewtdql.online^ +||jxiqoaszcfxve.website^ +||jxjxmhhrdcxud.website^ +||jxkfydhfaeyf.com^ +||jxlichhgbkxmo.website^ +||jxljlmikdnsfb.store^ +||jxmofulihtbzr.space^ +||jxnncepmitwxh.space^ +||jxohdspewpcl.com^ +||jxpieseudktcy.site^ +||jxrceejdygfap.site^ +||jxtzwthmfqppv.website^ +||jxvhcvhdeaadf.site^ +||jxwaghvsdx.com^ +||jxyoajgbdlkag.site^ +||jxyseijobkzzn.space^ +||jyapmffzkbkbp.site^ +||jybaekaqbmvwl.top^ +||jyczddycqnckw.store^ +||jyfyrcnskjjhy.space^ +||jygotubvpyguak.com^ +||jygyrxjwiccts.online^ +||jyjdzogsiedqj.site^ +||jyjiflntdujev.site^ +||jyjioxtadobac.website^ +||jyjlhlfystctf.website^ +||jyjqesmknql.com^ +||jykvxx6g9u9iiut74mr.cfd^ +||jymswcocmpteo.space^ +||jynmirqnknupr.space^ +||jynuvagjoxnin.space^ +||jyozavobzrekb.top^ +||jypcqvpgewajj.site^ +||jyphhfkvrutek.site^ +||jypndtjmdqcnj.online^ +||jyqckbryepksj.site^ +||jyqekzzlmymab.top^ +||jyqoncmjnooia.online^ +||jytftzydfogtu.online^ +||jytzfmkglw.com^ +||jyucjjfzgwcdp.store^ +||jyvkwqjremmly.top^ +||jyvkwqjremqkz.top^ +||jywqcjoelqiza.space^ +||jyxzaikrzaprd.site^ +||jyzhpgkhoovfy.website^ +||jyzkut.com^ +||jz8zyg3f.xyz^ +||jzayjohqhvuxa.online^ +||jzbhqlgvsxdwb.store^ +||jzcvpqoorkigm.site^ +||jzhkmgdeesljp.online^ +||jzhnqycanbvsn.space^ +||jziweafbssqyj.store^ +||jzlqdgvrsyqgz.online^ +||jzmgykztfsjwd.website^ +||jzqjxtdojgygq.space^ +||jzrmxnvcniwmj.online^ +||jztxtlsupbqcu.site^ +||jzuivotw.com^ +||jzvtfmnpdikdw.website^ +||jzwghlxfjnwks.website^ +||jzynmystixhy.in^ +||jzysorlfmgznf.website^ +||jzzcyytskiojk.life^ +||k25ml6t63i14kz.cfd^ +||k2kth1t4uxmb1muyc2.cfd^ +||k2o2ls46.xyz^ +||k2rh2bcgq83w2b31zxk92ph4jcnxzrrc.cfd^ +||k3bm5qrgx7h3krx.cfd^ +||k3jk6x9pbcprmi.cfd^ +||k3rb5bjv6fhjluw68hbzte.cfd^ +||k55p9ka2.de^ +||k5ob0kmh.xyz^ +||k5zoom.com^ +||k68tkg.com^ +||k6f9acdo.xyz^ +||k6u2zrqhjvvx4hp.cfd^ +||k8jc6jomk86fji.rest^ +||k8kum5rrpxmgcke58o265.cfd^ +||k8zy.com^ +||k996uf2xx214rl2y13wujo1o.cfd^ +||kaaattohmgwjt.com^ +||kaadqpoorrhsy.site^ +||kaascypher.com^ +||kabardcurite.cfd^ +||kabfoody.cyou^ +||kabqgaklabehk.website^ +||kacharinamecowhage.qpon^ +||kachaverite.shop^ +||kacjbclirfhsp.online^ +||kadfaedmpjdki.space^ +||kadime.cc^ +||kagkbhfnxye.com^ +||kagocvncavfqi.store^ +||kagonst.com^ +||kahblkqxbjscd.website^ +||kahenyptedkzt.website^ +||kaifcensor.qpon^ +||kaigaidoujin.com^ +||kailsfrot.com^ +||kainahnako.cyou^ +||kaira18.com^ +||kaiu-marketing.com^ +||kajawahroovingjobbers.cfd^ +||kajyqgfjhohks.website^ +||kakaposbalaksettima.qpon^ +||kakisspicule.cyou^ +||kakuyomu.life^ +||kalesrussiaschuln.cyou^ +||kalganscope.com^ +||kalmukhydra.cfd^ +||kalpisvirason.qpon^ +||kamberro.lol^ +||kaminari.space^ +||kaminari.systems^ +||kamoiimclmryu.space^ +||kanaimasilency.cfd^ +||kanasbasso.cfd^ +||kandmsxdeyksy.website^ +||kangaroointentions.com^ +||kanoodle.com^ +||kantarsitaiaxumite.qpon^ +||kantismcalid.qpon^ +||kaolinoleous.com^ +||kaougnoklpzjb.space^ +||kaozemnizhheg.website^ +||kapeikakahaulackeys.cfd^ +||kapukahaganah.cyou^ +||kaqbxsgdzuazk.website^ +||karafutem.com^ +||karaismagacant.com^ +||karatstankie.shop^ +||karelobolesgelate.cyou^ +||karezmoonish.qpon^ +||karlingglues.qpon^ +||karvalrebelstypists.cfd^ +||karvarlectentete.cyou^ +||kashaslogwoodrapiner.cyou^ +||kasifbaikqhyq.online^ +||kaskatipcatsrisks.cfd^ +||kasrsihavelear.org^ +||katecrochetvanity.com^ +||kateendurance.com^ +||kathrynnubbierbdft.cfd^ +||katldpsrjggef.space^ +||kaubapsy.com^ +||kaudawwhwjllo.site^ +||kaushooptawo.net^ +||kauxgpqpbuxtl.online^ +||kavanga.ru^ +||kavblcvs.com^ +||kavcapfpjbhpn.space^ +||kavtqkbsyrpzt.site^ +||kawgcabwyti.in^ +||kawikadodger.shop^ +||kawtsayrnwyar.store^ +||kaxwxpicikxbr.site^ +||kayoenderonsintoc.qpon^ +||kayosgluttonclean.cyou^ +||kbao7755.de^ +||kbarobrxyobqjd.com^ +||kbfizeskyyfkt.store^ +||kbfsrlnmhtgas.space^ +||kbgavydkfwogz.space^ +||kbhgnyiogmrcl.store^ +||kbhnhrkenrxcw.website^ +||kbhskcsiawspn.store^ +||kbimwfgxmmefa.site^ +||kbjuqbdplwpjm.online^ +||kbkkvtmfvkozb.online^ +||kblcxsoxssgds.online^ +||kbmetcacunqgq.store^ +||kbnmnl.com^ +||kbnrggzpesxxv.online^ +||kbogmhqtrpiwh.site^ +||kbopnpiyhomtd.space^ +||kbrdynuogwuxm.site^ +||kbugxeslbjc8.com^ +||kbujchxeouowl.space^ +||kbuwizdjhjnbj.website^ +||kbuzrhjsjksjc.store^ +||kbwecmmmmbldm.website^ +||kbwndlwdzdffp.space^ +||kbylvuaxsrtoi.site^ +||kbzevgvukgueg.store^ +||kcafupebrgybq.website^ +||kcapezhbusnwf.website^ +||kcbchoevit.com^ +||kcbelamyyeti.qpon^ +||kcdnbeczdhqea.space^ +||kcerlelentmatc.org^ +||kcfygvgrrkiig.com^ +||kcgjjpqihtwly.online^ +||kcgqumopgkwtv.online^ +||kchhccjmzipel.site^ +||kcjmivforjixu.online^ +||kcldlqybhdgdk.site^ +||kcoktkhntiubu.online^ +||kcqbrwygxixdh.site^ +||kcrojyldwmhig.site^ +||kcsnecwd.com^ +||kctmxmkmmvwbh.space^ +||kcxljicqwzjfd.space^ +||kcxumzypnrqwr.store^ +||kcyiegydxszco.online^ +||kczvmmdvxkarf.website^ +||kdagfkykpupze.site^ +||kdapucwnebjeu.site^ +||kdcnqedoikwsx.site^ +||kddhtypccjvyk.website^ +||kddlljplazsfp.website^ +||kdfjlppcvgbdj.space^ +||kdhwaqcwpqvwo.website^ +||kdisbgxtxiyru.online^ +||kdkpsqklemvnu.site^ +||kdluiznnaekvy.space^ +||kdmizytjznodo.online^ +||kdmupcsngkdoz.website^ +||kdmyatytentionia.com^ +||kdnbljfbgheqq.space^ +||kdrcjrqzizzev.website^ +||kdrwbvnzyvnwi.site^ +||kdrxsyazaisva.site^ +||kdscdswkfbtpw.space^ +||kdsvscnffrtau.online^ +||kdupucsqbu.com^ +||kduyukupdnikp.website^ +||kdwiwfiuxbmfk.space^ +||kdzzxxjgdhgqm.online^ +||keajs.com^ +||keatumist.qpon^ +||kebdnwepskuoe.website^ +||kecrdgqevcqna.website^ +||kedasensiblemot.com^ +||kedasensiblemother.org^ +||kedgxztugonrg.space^ +||keelageabilene.cyou^ +||keelsontattva.cyou^ +||keenapcvgemwk.online^ +||keenestdruggyhocking.qpon^ +||keentiedknives.com^ +||keeperchopaboaters.cfd^ +||keepfuhmeoxtj.space^ +||keepinfit.net^ +||keepnetfrankly.shop^ +||keeprecitertung.cyou^ +||keeptraumatic.com^ +||keesliptrotol.shop^ +||keetsea5o2na8lwia4ccbwsug1e.com^ +||kefiricoxalate.com^ +||keftisighty.cfd^ +||kegpjgnbjmnrh.space^ +||kehalim.com^ +||kehkbsknnedlv.site^ +||keistcarr.cyou^ +||kektds.com^ +||kelfnfabbwugq.online^ +||kellegkjuglar.cyou^ +||kellembrues.qpon^ +||kelpiesregna.com^ +||keltoinignyepyran.cfd^ +||kelvvhqaqbzty.site^ +||kemplepisco.cfd^ +||kemrrbjymzwaa.space^ +||kenafriposts.qpon^ +||kenafsendent.cyou^ +||kendosliny.com^ +||kendsympus.cyou^ +||kenduktur.com^ +||kennedyknuckly.cfd^ +||kennelspedlar.cfd^ +||kennethcreaturesimpunity.com^ +||kennethcries.com^ +||kennethlawfullyconveniences.com^ +||kentiaawake.cfd^ +||kentleocyte.com^ +||keoto.xyz^ +||kepqkimmiqcjp.space^ +||ker2clk.com^ +||kerbsboatmen.cfd^ +||kernelbudstwig.com^ +||kernespalatalthigger.cfd^ +||kerot.xyz^ +||kerriasoutliptreaty.cyou^ +||kerryfluence.com^ +||kertzmann.com^ +||keryxhoisted.cfd^ +||kesahhvpkvzzg.store^ +||kesevitamus.com^ +||kesseolluck.com^ +||ketar.xyz^ +||ketchupdesignfeminist.com^ +||ketenemerrily.qpon^ +||ketenhayz.qpon^ +||ketmiecuppinbummler.cfd^ +||ketoo.com^ +||ketoopsaique.net^ +||kettakihome.com^ +||kettledroopingcontinuation.com^ +||ketylclayen.qpon^ +||kexesflook.cfd^ +||kexojito.com^ +||kexoncqnunjhn.online^ +||kexycmxrvipfh.space^ +||kexylqmzedtiz.space^ +||keyallocationscientific.com^ +||keyedtryma.qpon^ +||keyholedingy.com^ +||keyletmutage.cfd^ +||keymovehostel.shop^ +||keywordblocks.com^ +||keywordsconnect.com^ +||kezlgfdvsawqv.website^ +||kezsfgrilmbwi.store^ +||kfbjqsqbvnmrj.site^ +||kfeiovrksdezl.online^ +||kfesqxzagfxgr.online^ +||kfjhd.com^ +||kfjwapsftuxtw.online^ +||kfkewuaghmbfm.website^ +||kfkgfumirrdtr.space^ +||kflosfpnwfzrc.store^ +||kfnxjtzh.com^ +||kfpuxzmsanfbb.website^ +||kfpxthgobigqk.site^ +||kfqbfenhkmizx.space^ +||kfsniysgbauxo.space^ +||kftgzmjqxjooc.store^ +||kfvhovjgchgde.website^ +||kfvtvbihzxkck.website^ +||kfwolwopegike.love^ +||kfx4vg9rbh4397k52t8o.cfd^ +||kg2jt8j3pf15gntz.rest^ +||kg3p4c3r6541nq.cfd^ +||kgbfawlsumiyn.space^ +||kgbgcuabndbjw.store^ +||kgcqegbyqnrnj.space^ +||kgczmxmntemzo.website^ +||kgdvs9ov3l2aasw4nuts.com^ +||kgfjrb711.com^ +||kggnwgbrbawfg.space^ +||kgguxnrwpqoif.site^ +||kghzmesashlfi.space^ +||kgimudenwjylc.website^ +||kgiqptmzhkidx.website^ +||kglxixzitjbri.space^ +||kgmikoqcisnib.site^ +||kgmipfngmsypp.online^ +||kgnejmrvvveri.website^ +||kgozkkmzuigpr.site^ +||kgpngtpxklcpk.site^ +||kgricuptghssu.website^ +||kgslcxtpctxru.online^ +||kgsxcozeuccrs.website^ +||kgtwbxiuepiyv.website^ +||kgvhlxcevwbsb.space^ +||kgwbngjoviypv.store^ +||kgyqggrfmljpd.online^ +||kgzfmbpkbydoj.online^ +||kh6rgpcn9eewum87z4ocp6kq.cfd^ +||kh8l8e54bmim67m.cfd^ +||khahoonvomitstyramin.cfd^ +||khahoonzonulesplan.cfd^ +||khajurzeolitevicary.cfd^ +||khalalnixes.cyou^ +||khamalbesaint.cyou^ +||khamilangoontower.cyou^ +||khamipam.cyou^ +||khanjeeyapness.website^ +||khanumchowkhasped.cfd^ +||khariaapis.cfd^ +||kharifungiant.cyou^ +||kharuuxusrjuv.store^ +||kharwatootles.qpon^ +||khbgpgyoneegd.website^ +||khcenayroisqp.store^ +||khdiamondcdn.space^ +||khedassphene.com^ +||khehpukitab.in^ +||khezmsrqwmnxm.space^ +||khgawzlfmtajq.online^ +||khheewubjsybg.space^ +||khiclickrkafw.online^ +||khidlcdjhlsfu.space^ +||khlhqwlnesbbm.space^ +||kho6tohc2iup6p9i4u8ju.rest^ +||khoagufhmp.com^ +||khocclzjcykbk.site^ +||khodjajettylysines.cyou^ +||khotdepths.qpon^ +||khovdiminated.org^ +||khqjazypcaqmk.space^ +||khqwwvhgjoiab.site^ +||khrkiqbylwyoo.online^ +||khrxilqpinlvr.store^ +||khsbnusuoainb.site^ +||khsumsaibsnfz.space^ +||khsuqjdnjnwzl.space^ +||khudkerch.shop^ +||khuldavection.cyou^ +||khumegassedebeak.qpon^ +||khuzibatekes.com^ +||khvliwvgpxzmk.site^ +||khwdsbzfebqcv.site^ +||khxfpsqmejukk.site^ +||khxullxzecmah.website^ +||khyfmsnsisblx.website^ +||khzypcnfnkjqw.website^ +||kiackeffuse.qpon^ +||kiackgold.cyou^ +||kibxgtjvdfuw.com^ +||kickhoistsuccess.com^ +||kickishsilt.cfd^ +||kiddoesamentaoorie.qpon^ +||kiddoesomnificdirecly.cyou^ +||kiddoesuprears.qpon^ +||kidnappingjeep.com^ +||kidnappingpickcupcake.com^ +||kidnapsoutroar.qpon^ +||kidnapstrongestfeathers.com^ +||kidneyconfirmed.com^ +||kidobedientteeth.com^ +||kidsevqhaudoi.store^ +||kidsinstancesfavor.com^ +||kif5y2lm9hvhthikr5t7ptpvrcq2y88.rest^ +||kifmzfvnusgoh.space^ +||kihbjhizmskug.online^ +||kihudevo.pro^ +||kihweywjuj.com^ +||kiijuuntjunmd.site^ +||kijbwvznaofju.website^ +||kikarsundown.com^ +||kikwchvu.com^ +||kiliareorangssqueam.cyou^ +||killbkkt.com^ +||killingkhet.cfd^ +||kilotows.cfd^ +||kiltyfarris.qpon^ +||kimberlite.io^ +||kimnelpinkeys.cyou^ +||kinbootchatons.qpon^ +||kind-credit.com^ +||kindergartenharness.com^ +||kindergartensurgeon.com^ +||kindjalfuses.com^ +||kindleunfocusedunpaired.com^ +||kindly-equivalent.com^ +||kindlyoutsellunderling.com^ +||kindnessmarshalping.com^ +||kineckekyu.com^ +||kinepeda.cyou^ +||kinesesduply.cyou^ +||king3rsc7ol9e3ge.com^ +||kingbole.com^ +||kingcoderschacker.qpon^ +||kingedreflushlay.qpon^ +||kingtrck1.com^ +||kinley.com^ +||kinlmqqbnzuwj.website^ +||kinoneeloign.com^ +||kintapajo.cyou^ +||kinuhdtatpihj.site^ +||kiomthavsruuk.online^ +||kippingfissura.shop^ +||kipvptyusewoq.space^ +||kirantifandoms.cfd^ +||kirbiescurfmuckman.cfd^ +||kireibox.xyz^ +||kirmewoisin.cyou^ +||kirmewribbingjaspoid.cyou^ +||kirujh.com^ +||kisaengboultel.cfd^ +||kishkadirndls.qpon^ +||kispmoobnkk.in^ +||kissbaketurpentine.com^ +||kissoffering.com^ +||kiswahscowing.cfd^ +||kitrigthy.com^ +||kitschcorbieseloined.cfd^ +||kittedflocced.qpon^ +||kittlybulgepep.cfd^ +||kittoolhogo.com^ +||kiumqkkamhgeq.online^ +||kivkmopakxkwo.online^ +||kiwoejaeqyyjx.online^ +||kiyala.uno^ +||kiyczqdfdrxnx.website^ +||kiyonosaki.info^ +||kizan.cloud^ +||kizczfmkazfki.site^ +||kizfamrezsrqp.website^ +||kizllsirbnysc.space^ +||kjamzqljbwpgk.space^ +||kjbulizcoofpf.site^ +||kjdhwverhmbem.space^ +||kjebbhtwbgulr.website^ +||kjfmvnuri.click^ +||kjgejeteyjbrz.site^ +||kjgmieedgzswz.website^ +||kjgmnojsekcps.website^ +||kjgnidnhlxugm.icu^ +||kjhlxuvkdqteb.website^ +||kjhyxdphquxwd.website^ +||kjjzj4c9kx8phini.cfd^ +||kjk9m7x4yngol85h4.cfd^ +||kjljrwoibgbso.site^ +||kjmrldarxadmw.online^ +||kjolirgon.com^ +||kjosddyimi.com^ +||kjpfxbojgminv.site^ +||kjrastwgntzqe.website^ +||kjtgldbspsd.com^ +||kjtipyiisrgig.site^ +||kjtmgfsxiaftq.com^ +||kjvyoirbfeivs.store^ +||kjxzkzulgoipl.fun^ +||kkbcayzdokbte.space^ +||kkdeldurlxjjcz.com^ +||kkhfsefqdurod.site^ +||kkjacvibctssz.website^ +||kkjlieuijcafr.website^ +||kkluibrulalda.website^ +||kkmacsqsbf.info^ +||kkopshcenbxot.site^ +||kkpeioqgeo.com^ +||kkprrvdwybmlz.online^ +||kkqlcvwqbajec.website^ +||kkqylkrhagolt.space^ +||kkrvwlmknqs.com^ +||kksbhdknogzya.website^ +||kksmcfbxivdnm.site^ +||kktbjcdqpalow.space^ +||kkytqmuyworov.online^ +||kkzsewwbrnuhg.website^ +||klaushydra.com^ +||kldvkyjdvwcvp.online^ +||kldynhhyayoya.space^ +||klephtsconge.cfd^ +||klephtsrepin.cyou^ +||klevvjrjyjrez.website^ +||klfxpnwgqasds.space^ +||klgxuwphntkxr.space^ +||klgyqkigeuxno.store^ +||klhczqubhsjgi.store^ +||klhhiezuiaykb.site^ +||klhqmuyop.com^ +||kliksaya.com^ +||kliqz.com^ +||klixfeed.com^ +||kljwtxkvtiinc.store^ +||kljzvwordnwak.website^ +||klkxaxsudedng.online^ +||kllastroad.com^ +||kllpelaa.net^ +||klmmnd.com^ +||klnapyezsrfg.com^ +||klneqjidyjolu.website^ +||klonedaset.org^ +||klongsyerth.qpon^ +||kloperd.com^ +||klpgmansuchcesu.com^ +||klrtisidtgrgn.website^ +||klsbjqzvalxso.online^ +||kluglfneqqbjp.website^ +||klukylgjqpovc.space^ +||klutzestiming.com^ +||klutzy-minimum.pro^ +||klvadvvrbusee.website^ +||klwewlfsqakwu.store^ +||klwwhrhlnsyoa.website^ +||klwwxepxnqnhr.website^ +||klxfmolddnlpl.website^ +||klxlhanifrrzx.site^ +||klzpzqajdqvci.website^ +||klzrlerwtxl2j42ojpo.cfd^ +||kmaagycbjbnwf.site^ +||kmcsqxlrwvxyh.space^ +||kmcvqfdtlauqx.space^ +||kmfcqeqhsqdld.online^ +||kmfyjjaexuqcp.com^ +||kmgnzaxuiowfu.online^ +||kmigkfqaxckyv.site^ +||kmjlzxkpuxtkj.website^ +||kmjveezxebpqs.website^ +||kmknspnsogpqk.space^ +||kmlastitytye.org^ +||kmlastitytyea.org^ +||kmmhincmgdrme.space^ +||kmoaxbgfquhch.site^ +||kmoaxzzupcu.com^ +||kmoesupgtczcr.online^ +||kmoxtvkjuxbgt.space^ +||kmppuccaxcxyz.website^ +||kmqqewmthmocc.online^ +||kmrvvsdgfainp.space^ +||kmrwwuycttidi.site^ +||kmuedwvaezote.online^ +||kmurwyixudezb.space^ +||kmvcqzltfnqvp.space^ +||kmwxuexcxpgopo.cfd^ +||kmwzyajvivjuz.space^ +||kmxhkhyjwjaho.site^ +||kmydwyrxofvhs.online^ +||kmywgrkwlnsga.website^ +||knackallyinaccurate.com^ +||knackspanksitting.com^ +||knaflgvldrdtb.online^ +||knajeupzdxcyp.space^ +||knakplhtmqxzo.space^ +||knampkoltuduq.space^ +||knapechaloth.cfd^ +||kncecafvdeu.info^ +||kncturaxqdqog.online^ +||knddnkopoqgpg.site^ +||kneesstrictforthcoming.com^ +||kneestolerableadulthood.com^ +||knevellaciestscunder.cfd^ +||knewthump.com^ +||knicc989nxyezkm9tn6c1obi.rest^ +||knifebackfiretraveller.com^ +||knifepierce.com^ +||knittedcourthouse.com^ +||knivedviqueen.com^ +||knivesmanist.cyou^ +||knjkyjtocepbv.website^ +||knknoqpaxluaa.online^ +||knmdcrgyufqzn.website^ +||knnbecpvtyudw.site^ +||knobpersevereanaemia.com^ +||knobstiffenblouse.com^ +||knockupsuburbs.cyou^ +||knosprooflet.cfd^ +||knotbachelor.com^ +||knotshallowspeeding.com^ +||knotterlaudian.cyou^ +||knowacaliforniafarmer.com^ +||knowd.com^ +||knowhowspunsurveyed.com^ +||knowingallot.com^ +||knowledgeable-tree.com^ +||known-television.com^ +||knownamount.com^ +||knownconflict.com^ +||knowpillardrug.com^ +||knoxiankethib.cfd^ +||knoynotgmvjpo.com^ +||knphmeiypdwcu.space^ +||knsoknmyvyhab.website^ +||knucklebelliedpawed.qpon^ +||knucklemonthsedifice.com^ +||knutecauma.cyou^ +||knutenegros.pro^ +||knwjmjujhadoo.site^ +||knxcyvvibuvde.website^ +||knxnrqidbmlen.site^ +||knyhnvzqbsqdc.website^ +||knzvoajcwwuvg.store^ +||koaeunhairy.shop^ +||koawfitxqieyj.site^ +||kobtimfpearff.space^ +||kodaguwhymouzah.cyou^ +||kodbafryxemdz.website^ +||kodvcvjyqtfsu.site^ +||koeebuetwevng.space^ +||koeulypcduie.com^ +||kogaibispore.cyou^ +||kohadfzjolyfy.website^ +||kohempbaburevoted.cyou^ +||kohjlmvc.com^ +||kohleoludo.cfd^ +||koiaripolymny.com^ +||koifpdfagsxjk.website^ +||koio36.com^ +||koitay.cyou^ +||kokilamysel.shop^ +||kokmwwsshmhup.online^ +||kokotrokot.com^ +||kokuminfounderredlegs.qpon^ +||kokzjh29wnttolm.cfd^ +||kolainlets.cfd^ +||koleyo.xyz^ +||kolfsqbqvahtx.com^ +||kolkkaflatcap.com^ +||kolklltarjdnt.website^ +||kologyrtyndwean.info^ +||konraddiscrimination.com^ +||konradsheriff.com^ +||konradterriblesect.com^ +||kontextua.com^ +||konvctjcuq7yqg2jikeq.cfd^ +||konyakspaldersimplum.cfd^ +||koocash.com^ +||kookycommittee.com^ +||koolahsqueege.com^ +||koolaucroylgayyou.cfd^ +||kopeckoutwove.com^ +||kopecoozing.cfd^ +||kopetaweedle.com^ +||kopeukasrsiha.com^ +||kopmsfmihhrlg.store^ +||koprinosoonerdecane.qpon^ +||koreansearholeobsequy.cfd^ +||korecieroteme.qpon^ +||koreomneity.com^ +||korexo.com^ +||korgiejoinyou.com^ +||koriavulses.cyou^ +||korrelate.net^ +||korsscuba.shop^ +||koryakyjpoprw.space^ +||korzectussors.cyou^ +||kosanahtapwhm.site^ +||kosher-expression.com^ +||kosher-safety.com^ +||kostprice.com^ +||koszyxwufcqro.site^ +||kotokot.com^ +||kotostream.online^ +||kotowsscabscoifing.qpon^ +||kotylosjambosa.cyou^ +||koumispegboxpliant.cfd^ +||koushauwhie.xyz^ +||kowi675rkety6bhqrbxg6jgrwv7y.cfd^ +||kownxhruhryeh.site^ +||koyoghoutgate.cyou^ +||koytnkgoywyhe.site^ +||koyyppqoesnvh.website^ +||kpbmqxucd.com^ +||kpdslyrkdctow.website^ +||kpdvrfsqyjumr.online^ +||kpebymehzstjw.website^ +||kpec4xer6f67ncn4.cfd^ +||kpeopidemhoge.com^ +||kpfbksehrvell.space^ +||kpfek54wk7phehfhyub7.cfd^ +||kphsqtglfxqim.space^ +||kpkhqxvshdozq.online^ +||kpkwahinmlude.com^ +||kpnacrabkhcbq.site^ +||kpncgrodbtxzi.online^ +||kpngcxgdpdfih.space^ +||kpnvsjbpwhtmj.online^ +||kposzngwqknai.space^ +||kpqlrfyy.xyz^ +||kpqoiewdruvvr.website^ +||kpqyxuicnazqf.website^ +||kprfqilcurbct.online^ +||kprwyomtkenby.space^ +||kpsxmpevuhdwf.space^ +||kpuscrsmljibk.space^ +||kpvlhacvplbci.site^ +||kpwvntvpoksyw.website^ +||kpyoccondaf.in^ +||kq6x5tgzzxtq1l1flgmr3ln.cfd^ +||kqapmyhtxvwws.online^ +||kqauptdrdiyyp.space^ +||kqawipdwetqqd.space^ +||kqbxjkzsyuygg.site^ +||kqejazglxkwta.space^ +||kqftc.com^ +||kqgohxbrqclyo.online^ +||kqhdczxmktpds.website^ +||kqhfuovkrmhkz.online^ +||kqhi97lf.de^ +||kqhzkvhcafxwn.website^ +||kqiyhirquvyrn.online^ +||kqjgwwuebmmcpfebkg4jb3hq9uwg.cfd^ +||kqmmlqbuwmksm.store^ +||kqntarwfonstf.online^ +||kqsebncdjeuuj.site^ +||kqtqgoyjmbtev.site^ +||kquoaxirlldss.site^ +||kqwvgzulratqt.space^ +||kqwvqvapfvajp.online^ +||kqzyfj.com^ +||kra18.com^ +||kraaloomiacs.com^ +||krankenwagenmotor.com^ +||krddufisqivnq.website^ +||krdktyzfarcbv.space^ +||krdtvkoyuhwjs.site^ +||krenkzfiuzryw.store^ +||krfaqjqbaeosf.online^ +||krfqlrxvmoyrj.online^ +||krg4f5bo.xyz^ +||krhmtdzuxxmsc.space^ +||krhuixsm.com^ +||kri45879oupj5plpcl.cfd^ +||krigiabutlers.qpon^ +||krigiapedants.cyou^ +||krisydark.com^ +||krjxhubmrumxk.online^ +||krjxhvyyzp.com^ +||krkstrk.com^ +||krmnk.com^ +||krmsqcfoluzxj.space^ +||krnflekesqqcw.website^ +||krofqawozfnma.website^ +||kroium.net^ +||kromeiciness.com^ +||kronenlived.shop^ +||kronero.net^ +||kronerplunger.qpon^ +||kronoid29.net^ +||krosausable.qpon^ +||krpzrjejyniif.online^ +||krtnyognzagow.online^ +||krubutedessan.com^ +||krudavmbgnwrc.website^ +||krumanunsmote.com^ +||krxwwojyad.com^ +||kryvidmqdmlnm.space^ +||krzkasckoqvad.site^ +||krzsueygruwdl.online^ +||ksawhxjeeunbn.com^ +||ksbrnidhtqssq.online^ +||ksbxthpfiyrrg.online^ +||ksdamndwucubm.online^ +||ksehinkitw.hair^ +||kselthloahgxh.space^ +||kseoxmeqxbhpi.space^ +||kseseemyresum.org^ +||ksezswovesyyb.online^ +||ksfndodbfbgof.space^ +||ksiolvcitumph.space^ +||ksknhvggsizbu.store^ +||kslfqcxumewry.store^ +||ksnhwtjoaoeim.space^ +||ksprjvv.com^ +||kspyqwogczssl.website^ +||ksswsyafjpdzo.online^ +||ksuwsvhxfigruwi.com^ +||ksvnwdhtvndeq.site^ +||ksxteldtlbtss.website^ +||kszrmrhuwgrsy.website^ +||kt2gl4cqj7mj2b9o2b4glj59.cfd^ +||kt81r6fbpevjr867571juq7p.cfd^ +||ktceuakfbblrx.store^ +||kteawsjm.com^ +||ktetxsziozrhq.site^ +||ktexiofxqjcugoi.com^ +||kthukxjctweql.site^ +||ktimmewz.com^ +||ktkjmp.com^ +||ktldjkvzcxpmv.online^ +||ktllgtab.com^ +||ktlwulkjhxmhb.space^ +||ktmvzffnawzug.space^ +||ktnwsfisfbvjl.space^ +||ktocmwvtlivyq.site^ +||ktrajsivwyqym.com^ +||ktrgtteucxzzu.website^ +||ktsaditrxdka.com^ +||ktsnqchncbimr.space^ +||ktszeodeyz.com^ +||ktvkieys.com^ +||ku2d3a7pa8mdi.com^ +||ku34bh9la09.com^ +||ku42hjr2e.com^ +||ku5txooz1otjpoxm58.rest^ +||kuaskqytzcrdq.site^ +||kuauoqvkuvppu.space^ +||kuazennmquins.site^ +||kubicserves.icu^ +||kubqfszekybaw.website^ +||kubxxkuuecqww.site^ +||kucelglfptill.site^ +||kucyhafaatzxg.space^ +||kudwmaucyncfk.website^ +||kueezrtb.com^ +||kueiretailsfenite.cyou^ +||kuffobduumzwl.space^ +||kugeshuffle.com^ +||kughkqwlqozru.online^ +||kuhcjgvmcsuun.space^ +||kuites.click^ +||kuiyizyzoadmf.online^ +||kukyzzgcbrwdl.online^ +||kulmetmincio.cfd^ +||kulqdzhpmvokp.online^ +||kulroakonsu.net^ +||kumpulblogger.com^ +||kumquatrepl.cyou^ +||kunklibido.cfd^ +||kunmiutsnirtle.cyou^ +||kunvertads.com^ +||kuocnypfyulcp.online^ +||kuolkoola.com^ +||kuppwuhxrlalt.site^ +||kupzziangni.in^ +||kureedsnbcuuj.space^ +||kurrhlwywpswg.site^ +||kursatarak.com^ +||kustiforwarn.qpon^ +||kuti8iar.xyz^ +||kuvirixa.com^ +||kuvkjnmxs.com^ +||kuxibbprpctsb.website^ +||kvaaa.com^ +||kvarcureeny.com^ +||kvassupgazed.qpon^ +||kvbrzbxhqizoq.site^ +||kvdfhdyttghce.website^ +||kvdnetmzqvwxw.store^ +||kvdqzsytlcxuf.space^ +||kvgodxzrnymce.space^ +||kvhfewmbwyads.online^ +||kviaiezbnggon.website^ +||kvinduism.qpon^ +||kvjkiymoormwj.site^ +||kvnbryoywfjcp.space^ +||kvoltomolbbxg.store^ +||kvpjjewuoappu.store^ +||kvqecputivmxv.online^ +||kvqiteyuyzxfc.website^ +||kvqtxphjipbki.website^ +||kvsadman.com^ +||kvutzaglassen.shop^ +||kvutzahcariole.qpon^ +||kvvpilxstphqz.space^ +||kvvrumekpjnwy.store^ +||kvwhpfz4yhbtb7f.cfd^ +||kvxzhhrvxjomq.website^ +||kvyeerabknmjk.store^ +||kvylquisaduxr.store^ +||kvysslhsbayel.online^ +||kvyuqphervyet.store^ +||kvzbonvsutara.website^ +||kvznoubscgeep.website^ +||kvzvieyakmhfn.site^ +||kw3y5otoeuniv7e9rsi.com^ +||kwaipjzkmtwct.site^ +||kwartjenipplesroo.cfd^ +||kwaznkumedleysearce.cfd^ +||kwbdjazbglump.space^ +||kwbnmsswawpho.site^ +||kwbrtpsruanue.site^ +||kwfdzfptmqlin.website^ +||kwfvcxbiqglkm.online^ +||kwgpzojcpvqyi.space^ +||kwhpllmraltfm.website^ +||kwintrabeseem.cyou^ +||kwjfejtnfuxlj.space^ +||kwjiszgbegwuu.site^ +||kwjlveezlcgac.online^ +||kwkhsacpwwnkv.online^ +||kwlmpwbrsennw.space^ +||kwmbgyoruvsaa.store^ +||kwnqtbvozeejh.store^ +||kwpgeebopaqpn.site^ +||kwphbfgfhehbm.online^ +||kwrbryjcespcp.online^ +||kwrddjmdsbopl.site^ +||kwserving.com^ +||kwvbruqjbjhol.space^ +||kwvnacswdmvzr.space^ +||kwxegvirgslwh.site^ +||kwxxuqnikarny.site^ +||kwyoqlhshixgt.website^ +||kxaazgvdumsle.site^ +||kxapewakwxtyy.site^ +||kxbqaaxjeqjqk.website^ +||kxencag.com^ +||kxexlhdbaosee.website^ +||kxfnuquwjicjt.site^ +||kxfvdkxarxejz.space^ +||kxg49cluu2t3g7.rest^ +||kxjxjuoyfawwf.website^ +||kxkevndharpyq.website^ +||kxkko6fik3hyk8ye.cfd^ +||kxkseuauiccdo.website^ +||kxlay45a.xyz^ +||kxlgkqlkjpseo.site^ +||kxlkrhoqwizby.website^ +||kxmebjwzwynks.space^ +||kxnofjtmiqyss.com^ +||kxnuaytyunkqo.online^ +||kxoarhydioiuf.site^ +||kxtszslwanvgl.site^ +||kxuingylmnoxo.space^ +||kxuzlgksuxkhm.site^ +||kxxyhjamtwozu.space^ +||kxyg6l1brzpnlefqmt5yi.cfd^ +||kyanitebawra.cyou^ +||kyatmilrind.qpon^ +||kycbpzxmgxdhg.space^ +||kyecnhpxp.com^ +||kyggpktctzozd.space^ +||kygwbcvevmaoz.store^ +||kyklopscaiman.cfd^ +||kykpybijmerta.space^ +||kymertbbdefgn.space^ +||kyogwmrsywtnk.site^ +||kyptefpuxucqc.website^ +||kyriedowager.com^ +||kyriesvortex.cyou^ +||kytrzcenkcvyo.space^ +||kyuulknnhnune.online^ +||kyvaeggfnvefc.space^ +||kywivixcdwbsm.online^ +||kywvfarsxnohn.com^ +||kyxonasaiwycf.site^ +||kzagvdulumvgl.site^ +||kzdlxsnbeeugv.space^ +||kzffucdjbxdfh.online^ +||kzfnsemcdxxsq.website^ +||kzgwhioswkztt.one^ +||kzhcgaopneknp.online^ +||kzjuyhehjaapd.site^ +||kzjwjclnpdrmy.online^ +||kzltdxgdppoif.online^ +||kzlxuywvjriqb.online^ +||kzmsqkprwtqnq.website^ +||kznuodtvjuirx.site^ +||kzoixqlmnwtjg.space^ +||kzouzvisztpxs.site^ +||kzqjctpvdjmwc.store^ +||kzqwgdgurmjnc.site^ +||kzslzfuvnrmxz.online^ +||kzt2afc1rp52.com^ +||kzuozcmwoap.in^ +||kzuqpscnidssd.website^ +||kzvbioywtajii.website^ +||kzvfolheruocg.space^ +||kzxwkvkvdyzus.online^ +||kzzxfwvwxbfuu.website^ +||l-iw.de^ +||l0cpto94.xyz^ +||l0nrjph1.xyz^ +||l1h6k1g8tfq4gu.rest^ +||l1le6x3v87bjn3b.cfd^ +||l1native.com^ +||l1ukynvvml1l2r.cfd^ +||l1vec4ms.com^ +||l2fmm7sp.xyz^ +||l2jnxmbrmge5xi.cfd^ +||l3j593g9cmwhmwnbi6c.cfd^ +||l3qmzgpglx2m89uotr.cfd^ +||l3uvrk68bj4bw1l1ttqpguw12bt9b.cfd^ +||l543tw3x9z6vb5m3mxohj.cfd^ +||l5ejbe9k5hkkl5mqjbe8uftubnv.cfd^ +||l5i8c6vi5yupfh4.cfd^ +||l6km1zvvo6cgqhgguixwxfc.cfd^ +||l7boz5r3ofqppip3plzmz.cfd^ +||l7vrv4crj8g5rc.cfd^ +||l7xk21bftn2imgt.rest^ +||l8wo5bjkxtzmbwlnro2k4zr6z5v.cfd^ +||laarmwcgehodw.website^ +||laastlqfntmun.online^ +||labaararecite.shop^ +||labadena.com^ +||labeldollars.com^ +||labioserelicti.cyou^ +||labourerardent.com^ +||labourprincessmeek.com^ +||labqjxrhyjufl.world^ +||lacemendaimons.com^ +||laceokay.com^ +||lacerateclimaxthrow.com^ +||lacerskwanza.shop^ +||lacertamylaseslob.cfd^ +||lacessateens.com^ +||laceyscylla.cfd^ +||lacisaboma.com^ +||lackeysmuscids.cfd^ +||lackingcompare.com^ +||lackinggirtsterefah.qpon^ +||lacnelmsvgghz.space^ +||lacocavlsi.cyou^ +||lacqswjjbkljb.site^ +||lacquercheeky.com^ +||lactosegucks.cfd^ +||lacvzlcsxbsrz.website^ +||lacytrinityhissed.com^ +||ladbrokesaffiliates.com.au^ +||ladiesmatchesfinder.com^ +||ladnet.co^ +||ladpalmgarnish.com^ +||ladqoxljrmqxw.space^ +||ladsabs.com^ +||ladsans.com^ +||ladsecz.com^ +||ladsips.com^ +||ladsipz.com^ +||ladskiz.com^ +||ladysabryna-xxiqlkt.work^ +||laertesyirdfusate.qpon^ +||lafundahyxevo.website^ +||laggarbedouse.cyou^ +||lahscedteo.in^ +||lahsxicxicuvp.store^ +||lahwsusoarmbk.site^ +||laidgreens.com^ +||laidsilenus.cfd^ +||laihtsfmbrmog.site^ +||laimroll.ru^ +||lairdinnerly.cfd^ +||lairpurposelyremainder.com^ +||laivue.com^ +||lajytnrioiaqy.website^ +||lajziqeakcuqp.online^ +||lakbheagdf.com^ +||lakenebulareentry.com^ +||lakns.com^ +||lakollsukj.com^ +||lalapush.com^ +||lallansboners.cyou^ +||lalooyleepohe.store^ +||lamaicgargler.cyou^ +||lambingdove.cfd^ +||lambmotorabash.com^ +||lamboybaioccoslave.qpon^ +||lamboyssprawls.cfd^ +||lame-home.pro^ +||lame-map.com^ +||lameconnotation.com^ +||lamentinsecureheadlight.com^ +||lamerhollowsailing.qpon^ +||lamettacleaned.qpon^ +||lammasbananas.com^ +||lampasliegesbogles.cyou^ +||lampionnonda.cfd^ +||lamplynx.com^ +||lamppostadaptationlassitude.com^ +||lampshadescreen.com^ +||lancbcdncmphy.online^ +||lancerrammage.cfd^ +||land.izuchai.dance^ +||land.pixelsee.app^ +||landerhq.com^ +||landingneglected.com^ +||landscaperedressave.com^ +||landscapestoleabbey.com^ +||landsideresendtrousers.com^ +||landslideprisonsimile.com^ +||landtheir.com^ +||landwaycru.com^ +||lanentablelanentablehood.com^ +||lanentablelanentablejessamyhenrietta.com^ +||langielbeicecresc.cfd^ +||languesninosbruises.qpon^ +||languishbrook.com^ +||languishcharmingwidely.com^ +||languishmonthly.com^ +||languishrubbish.com^ +||lankswingconcerning.com^ +||lanky-bar.com^ +||lanky-pin.pro^ +||lankyteaching.com^ +||lantodomirus.com^ +||laojwnvthnuec.online^ +||lapbqcaykdsn.com^ +||lappingniffer.cyou^ +||lappseyessannus.qpon^ +||lapqigwuzasp.com^ +||lapserspos.qpon^ +||laptopchoose.com^ +||laptopprivacyado.com^ +||larajtfzeb.in^ +||larasub.conxxx.pro^ +||larchesrotates.com^ +||lardylathercenter.com^ +||largeconfusion.com^ +||largeconsulting.org^ +||laridaetrionfo.top^ +||lariidattame.qpon^ +||larineunroven.cfd^ +||larinpayment.com^ +||larixcharmedscrump.cfd^ +||larkersmaku.com^ +||larkinflate.com^ +||larlikeelses.cyou^ +||larlymckense.com^ +||larnox.info^ +||larvapeasstretched.com^ +||larvatecuir.qpon^ +||larvateenhalo.shop^ +||larvexanthid.qpon^ +||lasagnablighialatrede.cyou^ +||lasciviouschristmasinfection.com^ +||lasereither.com^ +||lashpoppercuckold.qpon^ +||lashwithoutweather.com^ +||lasiresteplynn.cfd^ +||lassitudefulfilpledge.com^ +||lassosupdome.qpon^ +||lastingillipe.com^ +||lastingquiver.com^ +||lastlyseaweedgoose.com^ +||latchfateverybody.com^ +||late-anxiety.com^ +||latelyninetyfeelings.com^ +||latentblackenedcolonialism.com^ +||latherachelesscatastrophe.com^ +||latherprofanecognizance.com^ +||latheseventhobscenity.com^ +||latinwayy.com^ +||latomyrioparergy.cyou^ +||latrialangrite.qpon^ +||latrianupwaft.cfd^ +||latriasimpers.cyou^ +||latrinehelves.com^ +||latticeincriminate.com^ +||laudshightstoops.cyou^ +||laughsvales.cfd^ +||laugoust.com^ +||launchbit.com^ +||launchingspooky.com^ +||laundrydesert.com^ +||laundryhdlc.shop^ +||launoiibcxdom.site^ +||laurelcourtesyreservation.com^ +||lavageryal.cfd^ +||lavagessoggily.qpon^ +||lavatoryhitschoolmaster.com^ +||laveertouart.cyou^ +||lavemutsjecobourg.qpon^ +||lavishboot.com^ +||lawdrrnforvzy.space^ +||lawful-promise.com^ +||lawfuldryrot.cyou^ +||lawfullygreater.com^ +||lawfullylimetreecharges.com^ +||lawfulpatience.com^ +||lawgxwwkgxuho.space^ +||lawnedllamas.qpon^ +||lawyeritalyaching.com^ +||laxativestuckunclog.com^ +||laxativethem.com^ +||laxrwbbgg.com^ +||laycosmicstill.com^ +||layer-ad.org^ +||layerrepeatedlychancy.com^ +||layingframingcomrade.com^ +||layouthonouredbuyer.com^ +||laytroops.com^ +||laziedqaidpavy.cfd^ +||lazuliempall.com^ +||lazycollection.pro^ +||lazydeckle.cfd^ +||lbaegdiunhilf.site^ +||lbbjokeqbzqqj.top^ +||lbbjokeqbzwqk.top^ +||lbbkrsxzhoumc.space^ +||lbdphmpwmwdzw.online^ +||lbdqcysydbhcto.com^ +||lbeamhasrxcmk.com^ +||lbefscvpuihal.website^ +||lbhtkeffrcqxz.site^ +||lbiusrlvwnqgw.online^ +||lbkezllrokbev.top^ +||lbkvxrzvqveom.online^ +||lblscpmfxuzqq.space^ +||lbmznmoboxffo.online^ +||lbonrenku.com^ +||lborikfrxkooz.online^ +||lbpfcodtjjqkcgh.com^ +||lbpqflbrqfzkh.online^ +||lbptuxaq.com^ +||lbqoewlxbeydk.site^ +||lbszsbzuupnoe.online^ +||lbtnxitwwfdqd.site^ +||lbumpethohbsp.online^ +||lbwdyjxdrzmia.online^ +||lbwjhzikhdoci.space^ +||lbwonrxjqqf2m63fcmn.cfd^ +||lby2kd27c.com^ +||lbylqerzmzlzq.top^ +||lbyrrfanhrpka.website^ +||lbzyjmbvmkovm.top^ +||lcaxfhprvnwaq.online^ +||lccxhkeiydkd.com^ +||lcdqwmfwbkbby.site^ +||lcdvqdiiovsxj.site^ +||lceljmkqmnwon.space^ +||lceolcqxarhid.website^ +||lcfegzfnnayrz.website^ +||lcfurcblzoonf.online^ +||lcgvdkaclfzft.website^ +||lcgwkdjniixjb.store^ +||lchbsmzawrhbz.site^ +||lchiz91kczjmgoeqt.rest^ +||lchtraf.com^ +||lcitatocqjyjg.website^ +||lclxufvsebuhi.space^ +||lclzbtmahreqx.online^ +||lcovwhuamphgj.com^ +||lcpavtrwvavnq.website^ +||lcsirlytsncmg.space^ +||lcsydsxnlriae.space^ +||lcuaerlknisgy.space^ +||lcubwmhoowyqv.site^ +||lcuefbeudixwr.website^ +||lcuijfiybks.com^ +||lcumxhquenoqh.online^ +||lcuozmosstcu.com^ +||lcutqnmoofuzi.website^ +||lcvbotewajlkhp.com^ +||lcvrviyu.com^ +||lczcvvcxgmqdl.website^ +||lczoidhsuvuyu.site^ +||ldcumoqpdhule.store^ +||ldeemoyx.com^ +||ldhmeqlxdgksm.site^ +||ldinfoprocyon.cfd^ +||ldjkgoeognmgj.space^ +||ldjsypolwypxy.space^ +||ldlirjzubrset.website^ +||ldmlvobrl.com^ +||ldnkepcuqetum.online^ +||ldodcckzbfgop.site^ +||ldofvnruxhixg.site^ +||ldoxmvlsvzban.online^ +||ldpdhccjkfarr.online^ +||ldpwpfjyhwvnb.space^ +||ldqkyedvfepop.online^ +||ldqlbzuhjovtd.website^ +||ldqsoiynsqiix.website^ +||ldqtjavynpbq.com^ +||ldrtuisabstxa.store^ +||ldrws.com^ +||ldseyoekuonkl.website^ +||ldsglxilxmczr.site^ +||lduhtrp.net^ +||lduzoqqgmfnhv.space^ +||ldvkmzygcoido.site^ +||ldyztceolxrmy.space^ +||ldzvujwptvheu.site^ +||leaacnhutcosv.store^ +||leadadvert.info^ +||leadgainz.com^ +||leadimmensely.com^ +||leading-back.com^ +||leadmediapartners.com^ +||leadnote.me^ +||leadsecnow.com^ +||leadsimilar.com^ +||leadsleap.net^ +||leadzu.com^ +||leaferyclk.cyou^ +||leafletstoesimplicity.com^ +||leagueinfantry.com^ +||leaguewarskeleton.com^ +||leaklitre.com^ +||leakprudence.com^ +||leaktrailercondo.com^ +||leakvideos.online^ +||leakwivesshuffle.com^ +||lealandrewarn.cyou^ +||leancontextplacid.com^ +||leanintegrationdebauch.com^ +||leanperjury.com^ +||leapedspam.com^ +||leapedunarmed.com^ +||leapingkhaya.cfd^ +||leapretrieval.com^ +||leaptanymore.com^ +||leaptmagnetvertical.com^ +||leaptoffender.com^ +||learn93.com^ +||learnihinder.com^ +||learningbuildingroughly.com^ +||learningpenthousedelighted.com^ +||learntchain.com^ +||learoydfole.click^ +||leasessculped.cfd^ +||leasingpremove.cfd^ +||leavensenamdar.shop^ +||leavensmuridaesemis.cyou^ +||leavensorbic.shop^ +||leaveundo.com^ +||leavingaileen.com^ +||leavingextract.com^ +||leavingneedyengaged.com^ +||lebbfksrknrex.website^ +||lebenscrimeamarxist.cfd^ +||lebiutacsvaat.website^ +||lechercircus.qpon^ +||lecqetptejakq.website^ +||lectureolympics.com^ +||ledgyplane.shop^ +||ledidaerums.shop^ +||leekdousers.shop^ +||leelanehinnied.qpon^ +||leeriergrf.com^ +||leetaipt.net^ +||leeziccbpknmr.space^ +||leezoama.net^ +||leftcandle.com^ +||leftieseyeshot.qpon^ +||leftmany.pro^ +||lefttongue.com^ +||legalizeshort.com^ +||legallydune.com^ +||legendssagely.qpon^ +||leggyenglishdemonstration.com^ +||leggyintimidatebullying.com^ +||leggymomme.top^ +||leghornjumpedhalt.qpon^ +||legitimatedear.pro^ +||legitimatepowers.com^ +||legitsshride.qpon^ +||legletpodalicriped.cyou^ +||legsuicidal.com^ +||legumenlagends.qpon^ +||lehmergambits.click^ +||lehveblagxcwvye.com^ +||leilaproetus.qpon^ +||leisuboundshotes.qpon^ +||leisurehazearcher.com^ +||leisurelyexploit.com^ +||leivngopjcixg.site^ +||leluhrmmslpud.store^ +||lemaneaflipe.cyou^ +||lembsmhpronni.website^ +||lementwrencespri.info^ +||lemetri.info^ +||lemfctpvmdccp.store^ +||lemmaheralds.com^ +||lemonpier.com^ +||lemouwee.com^ +||lempogqzxbfss.website^ +||lemurcosmineunlid.cfd^ +||lenaeumdevatafrigage.cyou^ +||lenastavedoppose.qpon^ +||lencfwgezcohg.site^ +||lencgpckrwhdv.site^ +||lenchseances.qpon^ +||lengertueiron.qpon^ +||lengthprogrammingdiminish.com^ +||lenkmio.com^ +||lenmit.com^ +||lentattire.com^ +||lentortones.cyou^ +||lentoscrocuta.shop^ +||lentspeaking.com^ +||lenzuhohecujh.site^ +||leojmp.com^ +||leonbetvouum.com^ +||leonnwztxcdcj.site^ +||leonodikeu9sj10.com^ +||leopardfavorite.com^ +||leoyard.com^ +||lepalohare.cyou^ +||lepbukrf.com^ +||lepetitdiary.com^ +||leqfrrxllfeft.online^ +||leqrcirjuawwi.site^ +||lernodydenknow.info^ +||lesbiaaroast.qpon^ +||lesgaea.com^ +||lesjhcskvsgjw.site^ +||lessivezogan.cfd^ +||lessndamps.cyou^ +||letdownlyricallyquarry.com^ +||lethargyplatingsatin.com^ +||letitnews.com^ +||letitredir.com^ +||letmenowme.biz^ +||letmetralala.com^ +||letminimalvacancy.com^ +||lettermechanism.com^ +||letterrecoveryunplanted.com^ +||letterwolves.com^ +||lettileroute.com^ +||letunseenprivacy.com^ +||leucomarebasisbecater.cfd^ +||leuksestian.shop^ +||levcnsjalratsv.com^ +||leveedvacates.cfd^ +||levelborrowingo.com^ +||leveretsnitz.cyou^ +||leveselexsec.cfd^ +||levfyrqglxvkl.space^ +||levinsunplumb.cyou^ +||leviteloral.cyou^ +||levitydinerdowny.com^ +||levityimproviseoasis.com^ +||levitytape.com^ +||levxyipnritcw.website^ +||lewd.ws^ +||lewdballersyeomen.cfd^ +||lewdl.com^ +||lexicafluency.qpon^ +||lexicoggeegaw.website^ +||lexicvagile.cfd^ +||lexolbuvjhmau.online^ +||lexorawebnet.com^ +||lf21cgfgpg2cfz.cfd^ +||lf5il3b8nhvcwzjg8qv1.cfd^ +||lfafacbfqrsom.online^ +||lfarewesbeginn.com^ +||lfasterbiscusyse.org^ +||lfavcwgydohba.store^ +||lfcnxhdzwwyka.space^ +||lfcplotcfjqea.online^ +||lfdepfhvoeygp.site^ +||lfdnetguvtpeg.site^ +||lfelnkxiazxkx.store^ +||lfezjmxldv.com^ +||lfgknhbirotrt.space^ +||lfgoielaksccl.site^ +||lfjdqqmzpswof.website^ +||lfnwxpcbfpkcx.website^ +||lfokfyodzylck.site^ +||lfppindfyzgag.site^ +||lfstmedia.com^ +||lfwieehqopggy.website^ +||lfwotwipuezvd.online^ +||lfxgbzxkfqhiy.space^ +||lfxjcscvexjpm.site^ +||lfyatgjipbutg.website^ +||lfzibowrxoftr.online^ +||lgacwanfsxuwc.website^ +||lgaeiqigqojrc.website^ +||lgahmmjhrmpvv.online^ +||lgdstolfuinmi.world^ +||lgdsvuwxjbhwz.site^ +||lgglnedyuhmgk.site^ +||lghgaxoegjywd.website^ +||lghjjjwnxrpjq.space^ +||lgiwpeqvbksng.website^ +||lgjdmglqloopu.space^ +||lgkdxzaslmiai.site^ +||lgllejevhxigd.website^ +||lglxxxadsjocm.website^ +||lgojugcksyjer.website^ +||lgolhtvf.com^ +||lgqdkxtyx.com^ +||lgqzpmgtzvmij.website^ +||lgrxgaulgvgxy.website^ +||lgse.com^ +||lgsqxwfwwcqkc.website^ +||lgtdkpfnor.com^ +||lguhcerbqufqc.website^ +||lgunuddjobkyl.online^ +||lgupyhmwrglwg.space^ +||lguvihbqjegvi.website^ +||lgvowkkifkdzk.online^ +||lgwhjaymvfjcf.website^ +||lgxicvplbnejn.website^ +||lgzdfcmptvxvt.website^ +||lh031i88q.com^ +||lhacuwpfjscds.online^ +||lharfoeeeqsxr.site^ +||lhbejygzfhvsh.space^ +||lhhpbaiyufphu.site^ +||lhjfdxugjdzzy.space^ +||lhjkqdgxnrmjo.site^ +||lhjnegfxaoemq.website^ +||lhkpvpnnqcebn.fun^ +||lhmaq99q.xyz^ +||lhmkjtnhstesl.website^ +||lhmos.com^ +||lhotaamelu.qpon^ +||lhotvezgcfdrt.site^ +||lhpkpjdhpifie.website^ +||lhqmmqmbqtezs.space^ +||lhqzzfdpqemuq.space^ +||lhskilqejvbfh.site^ +||lhskppletqwja.online^ +||lhuvxiezozkjg.online^ +||lhuwawhcxtltx.space^ +||lhvavsdsnhxgz.website^ +||lhvduqlahiakt.site^ +||lhvptjkotfnkm.website^ +||lhwmkhspqb.com^ +||lhxmrcyaqsvze.site^ +||lhxqfxhqwoiiq.site^ +||lhxsrndtegeuo.online^ +||lhzntghorkktf.website^ +||lhzsoiridsumh.space^ +||lhzxdptexntmf.space^ +||li.blogtrottr.com^ +||li8xhej6xj2bqe1i5hofpj79u3x9.cfd^ +||liabilitypillar.com^ +||liableyardcripple.com^ +||liadm.com^ +||liaisetoddle.qpon^ +||liaisonmonumentbreeding.com^ +||liambaaidenn.cyou^ +||liambafaying.com^ +||liangsoloing.com^ +||lianzl.xyz^ +||liaoptse.net^ +||liawgtbqbeaeq.space^ +||libbarddibbles.cfd^ +||libellouschurchtommy.com^ +||liberaldoubtedadulatory.com^ +||libersforeact.cyou^ +||libertycdn.com^ +||libertycoinsdrew.com^ +||libertystmedia.com^ +||libgetkotal.com^ +||libkinprayed.cyou^ +||library4444.net^ +||librarysituation.com^ +||libridcocoas.qpon^ +||libtl.com^ +||licfmjuqoatiz.website^ +||lickingdab.shop^ +||licluumkehiwi.store^ +||licornekoda.qpon^ +||lidburger.com^ +||lidiawindup.qpon^ +||lidoscharco.qpon^ +||lidosscote.cfd^ +||lidsaich.net^ +||lidtcctobkneu.website^ +||liduvxoyivocr.space^ +||lidwftqjlltvm.com^ +||liedloopful.com^ +||lieezfgekiwgn.online^ +||lieforepawsado.com^ +||liegelygosport.com^ +||liejowler.com^ +||liepotikons.com^ +||liepottensify.com^ +||lieusreredosanack.cyou^ +||lieutenantvealelongated.com^ +||lievestcrasser.com^ +||lievestportemoireed.cyou^ +||lifeboatlegalalleviate.com^ +||lifemoodmichelle.com^ +||lifeporn.net^ +||lifesoonersoar.org^ +||lifetimeflaginterrogate.com^ +||lifeystatuaemmew.cyou^ +||liflneszneaak.site^ +||lifoutbultic.com^ +||liftdna.com^ +||liftedd.net^ +||liftopbdklkxg.space^ +||ligatus.com^ +||ligcspstbrvgf.online^ +||liggewaeful.com^ +||lightbrights1.xyz^ +||lightbrights2.xyz^ +||lightenslush.com^ +||lighterdeletes.cyou^ +||lighterdrowngrammar.com^ +||lightforestpath.com^ +||lightheartedbike.com^ +||lightheartedpriest.com^ +||lightimpregnable.com^ +||lightindividual.com^ +||lightingshovestature.com^ +||lightlyirresponsibility.com^ +||lightmeadowwalk.com^ +||lightningcast.net^ +||lightningly.co^ +||lightspite.com^ +||lightstretch.com^ +||ligydaloca.com^ +||ligzuxotla.in^ +||lihmnebydaizl.site^ +||lihshailmyjzb.space^ +||lijqfqpdavjhs.store^ +||likable-negotiation.pro^ +||likeableindispensableassault.com^ +||likeads.com^ +||likedgreetedrape.com^ +||likelihoodcheerleaderdefender.com^ +||likelihoodhangingbell.com^ +||likenewvids.online^ +||likensdosers.cfd^ +||liklojigctaog.space^ +||lilacdazedawe.com^ +||lilialfcycorach.qpon^ +||liliumleashed.qpon^ +||lilkdtrwspxvk.website^ +||lilwlxddctfpp.space^ +||lilxdostfpngv.space^ +||lilxvvndclgcs.space^ +||limacearaunchy.cfd^ +||limbecrightly.qpon^ +||limbycocking.cfd^ +||limbyoxymora.cyou^ +||limetreeloadherself.com^ +||limitationluck.com^ +||limitationplumage.com^ +||limited-final.pro^ +||limited-teacher.com^ +||limitesrifer.com^ +||limitscompelledmint.com^ +||limmuogonium.shop^ +||limniteunvalid.com^ +||limoidtrowane.cfd^ +||limp-signal.pro^ +||limping-reputation.pro^ +||limsytarascobatussi.qpon^ +||limuluscaliliderange.qpon^ +||limzizffmrkkc.online^ +||linageswhippa.cfd^ +||linaloecharms.com^ +||lindmayas.qpon^ +||lindychat.com^ +||linear-policy.com^ +||linenvirginityclient.com^ +||linenychyak.cfd^ +||lineodtpdajrz.store^ +||lingercatchpyramid.com^ +||lingualbathkol.qpon^ +||liningsvexil.cyou^ +||lininsaurist.cyou^ +||linkaffectionately.com^ +||linkbuddies.com^ +||linkedkneebrisk.com^ +||linkedprepenseprepense.com^ +||linkev.com^ +||linkexchange.com^ +||linkhaitao.com^ +||linkoffers.net^ +||linkonclick.com^ +||linkredirect.biz^ +||linkreferral.com^ +||linksecurecd.com^ +||linksprf.com^ +||linocutgashly.cfd^ +||linosalive.qpon^ +||linosfohn.shop^ +||linpatacas.shop^ +||linsangseptoiciulidan.qpon^ +||lintheirbrightscarletc.org^ +||lintierprollersensism.cfd^ +||lintspurrynostril.qpon^ +||lintyahimsas.com^ +||liondolularhenewre.com^ +||lioneljoannes.qpon^ +||lionuniate.shop^ +||liozpftktplaw.space^ +||lipemiaaliptae.com^ +||lipideludo.cyou^ +||liplesssaligot.com^ +||lipsgig.com^ +||lipstickeducate.com^ +||liqnkbkszalmy.site^ +||liquid-student.com^ +||liquidateneville.com^ +||liquiddopersmakale.cfd^ +||liquidfire.mobi^ +||liquorssquab.com^ +||liquoryinearth.cfd^ +||lirdawkin.com^ +||lireadzwxtrbh.space^ +||lirmndsuoolqv.online^ +||lisabermagic.study^ +||lisedhvqseoqa.online^ +||lisnkphenonfq.online^ +||lispaircraftcraziness.com^ +||lispersmalagma.cyou^ +||list-ads.com^ +||listedmurium.qpon^ +||listenbutic.cyou^ +||listenedarsonproceedings.com^ +||listenerhooter.com^ +||listenrecess.com^ +||listensmariou.cyou^ +||listlesspropose.com^ +||listmenace.com^ +||listsslier.cfd^ +||litaiaggracefelt.cyou^ +||litaidrawl.cfd^ +||litatuboyang.qpon^ +||litebeach.com^ +||literacyfigured.com^ +||literallycircumscribetome.com^ +||literallyflickercomplaints.com^ +||lithateknobmelosa.cfd^ +||lithateourang.shop^ +||lithiumsorghum.shop^ +||lithobathman.qpon^ +||litterarenadisembroildisembroil.com^ +||litterworerabbit.com^ +||littlecutelions.com^ +||littlevigorously.com^ +||lituitebientt.cyou^ +||litvp.com^ +||livableprelacy.com^ +||livablespat.cyou^ +||livablyinlets.cfd^ +||livedjeopardizeemotion.com^ +||livedskateraisin.com^ +||livelymatter.com^ +||livenedcoders.cyou^ +||liverstopped.com^ +||livesexbar.com^ +||livethzapupe.shop^ +||livezombymil.com^ +||livia-jcl.com^ +||livid-factor.com^ +||liwgmlfvpxbch.space^ +||liwmwijpufa.com^ +||lixiviamajotsardom.cyou^ +||liyzeqeyezorg.online^ +||lizardvibrateencumbrance.com^ +||lizebruisiaculture.com^ +||lj86q2ygmjneg8ve63.cfd^ +||ljbwzlmlzvmvj.top^ +||ljcazzzclwglt.site^ +||ljdzjtpnijpns.space^ +||ljeeonnslhcmb.store^ +||ljfrwpidsewus.store^ +||ljgrjkosayabm.site^ +||ljhegojhmluyx.website^ +||ljhwxaqcvdbae.site^ +||ljijbovhzytkj.online^ +||ljiotibrwigir.online^ +||ljjfalajlzlig.website^ +||ljjhdgyqjsyr.com^ +||ljklwagzynotx.website^ +||ljlibrvszplyi.online^ +||ljline.com^ +||ljmbfywawrrrg.online^ +||ljnqievhkrsia.online^ +||ljpdwxykkqyxk.online^ +||ljpnovfknjqyl.space^ +||ljsishfjryjxreo.com^ +||ljtcklsykotng.com^ +||ljtpxduxeqevde.com^ +||ljunhpifoekcmvrlbg.cfd^ +||ljwaerigtjrxe.store^ +||ljybybyerzoev.top^ +||ljybybyerzreq.top^ +||ljyhzllzoymxq.space^ +||lkaowvjzjfkyd.store^ +||lkauxiqpwlsfr.rocks^ +||lkcfyglveryvl.online^ +||lkcoffe.com^ +||lkcreahcxlbcq.site^ +||lkdvvxvtsq6o.com^ +||lkdykbudv.com^ +||lkehftpjptswp.site^ +||lkepqqsatfugc.store^ +||lkeqdkckbgnbf.online^ +||lkfctpuwjfgxe.space^ +||lkfiyeddqehyj.site^ +||lkg6g644.de^ +||lkgivcvr8ir252by63znjc2.cfd^ +||lkgkbmkorzwiz.space^ +||lkijvrrofszzz.online^ +||lkixslmthwwdf.online^ +||lkkgomhhgpbjz.website^ +||lkkjvgfulkfrh.site^ +||lklkxqconwqpt.online^ +||lkmsctjqdowvs.website^ +||lknyasbfvbrcn.space^ +||lkoyknsumbkau.online^ +||lkpmprksau.com^ +||lkqagavhhaqrp.space^ +||lkqd.net^ +||lkqivtsnfvriw.website^ +||lkrhxbrrztyfw.space^ +||lksbnrs.com^ +||lksda.com^ +||lktrmbptupqcm.site^ +||lkuvirmhuaxft.website^ +||lkuxyvrptazgk.online^ +||lkvngplmrmjlc.store^ +||lkwnfkysbo.com^ +||llatemxzxfvwl.site^ +||llboqelaevqjy.top^ +||llbtqlrqrfhjc.space^ +||lldmuevvzmefo.space^ +||lldurjwqquqbk.site^ +||lldxpwcrun.com^ +||lleana.com^ +||llfmhykgqdue.com^ +||llfpaondsunun.site^ +||llfvusbsdffxr.website^ +||llfyjvskyxnsv.site^ +||llgkzsbqwtdwz.online^ +||llglxmzxsmcgo.space^ +||llhobralwmgcc.website^ +||llhxhipo.com^ +||lljoetsjbpukj.online^ +||llllhshgscfda.site^ +||llnakdvnqoghu.site^ +||llngvswgppjo.com^ +||llozybojzojoq.top^ +||llpgphvdkxzky.site^ +||llplaxpgltqux.online^ +||llppkxnxmcnrd.online^ +||llproteas.shop^ +||llrcuclntbhft.space^ +||llrkhxpwnydpr.com^ +||llrmdpyqhduad.store^ +||lltdatotfsbea.online^ +||lltnfhzysxuin.website^ +||lltvyepqcqelw.space^ +||lluqlhdvvucid.site^ +||llvlzvroqokmj.top^ +||llvpn.com^ +||llwcgkvrpmrgs.online^ +||llwgmjndizraf.website^ +||llwgnafyieumn.store^ +||llwiazpvumalz.online^ +||llxemmopmuitk.space^ +||llxhgmptlnuxe.space^ +||llxqcrbjflbop.online^ +||llyighaboveth.com^ +||llykjmzkqvvqy.top^ +||lm1668.com^ +||lm62z6ixx7opro5uug1xpbg1br2lm7.cfd^ +||lmaarwdqraeak.online^ +||lmaeuohpmbhtt.website^ +||lmaowukrqnyiu.site^ +||lmapbcyewdaog.space^ +||lmavfuplmvhbq.space^ +||lmbtmfkhdqkki.website^ +||lmbxvsykkceox.online^ +||lmdysqcmtinre.online^ +||lmeivxuejjbol.space^ +||lmepjztwwonxv.life^ +||lmfbutkwjiiay.site^ +||lmfpdpmkxgcix.site^ +||lmftzfphbqbff.online^ +||lmgyjug31.com^ +||lmhvhlxacgtmb.site^ +||lmjvywakjupgv.site^ +||lmlasnwtqygbw.space^ +||lmngvqqskhppa.online^ +||lmrljuiymdtry.space^ +||lmrwupcucuprv.site^ +||lmtmocldctbnu.online^ +||lmvouuqrffurr.com^ +||lmvtfarnicgbb.space^ +||lmvugvxgkdxge.online^ +||lmvydrhqxxx.com^ +||lmvylvrpfyscz.online^ +||lmzuqfelmvtab.space^ +||lmzzrvmmcm9c6r34cv4j4uh.cfd^ +||lnabew.com^ +||lnaxgfnttnrye.online^ +||lnbjvhefrwuxh.website^ +||lnbkckhipmi.com^ +||lnddkooitabnj.online^ +||lnfksfxtuojmk.site^ +||lnfqqqnevxuvl.website^ +||lngbqjutikehs.online^ +||lnk8j7.com^ +||lnkrdr.com^ +||lnmaolzmttfxx.site^ +||lnmrwofhfkevl.website^ +||lnnkbiblmlejkor.com^ +||lnormaticala.com^ +||lnpgwvwlouwrd.online^ +||lnprnyyqsstlh.space^ +||lnqxpebsginlg.website^ +||lnrivqrvgbunz.site^ +||lnrtlupjsnobd.site^ +||lnsiurd.com^ +||lnwfcptfhvojt.site^ +||lnwinvvctx.com^ +||lnxiaotrtdsrx.site^ +||lnyupxlxqv.com^ +||lnzitobjnmskk.space^ +||lnzsinagpafgv.website^ +||load-res-static.lol^ +||load-static-res.xyz^ +||loadedbummer.com^ +||loader.netzwelt.de^ +||loadercdn.com^ +||loadingscripts.com^ +||loadtime.org^ +||loafersonagra.shop^ +||loafsfrailesunde.cyou^ +||loajawun.com^ +||loaninlinn.qpon^ +||loathesparkledisperse.com^ +||loathsomeboy.com^ +||lobby-x.eu^ +||loboamoke.cyou^ +||loboclick.com^ +||lobparde.qpon^ +||lobspqdzvfvrp.space^ +||lobsterbakerstealth.cfd^ +||lobulusoronoko.cyou^ +||localaffectrecipe.com^ +||localedgemedia.com^ +||localglobaldates.com^ +||localsnaughty.com^ +||locatedcontemn.com^ +||locatiocorms.com^ +||lockanuranresiled.qpon^ +||lockdownoncomingdistinctly.com^ +||locked-link.com^ +||lockedyetoffence.com^ +||lockersatelic.cam^ +||locketsauce.com^ +||locksadvancedrelease.com^ +||locksdrizzle.com^ +||lockupaccede.com^ +||lockvisitingdisprove.com^ +||locnbrochanvenerer.cfd^ +||locooler-ageneral.com^ +||locopar.com^ +||loculerookish.com^ +||locusflourishgarlic.com^ +||lodfzblnojzfd.site^ +||lodgeastronautadore.com^ +||lodgecachou.cyou^ +||lodgerestless.com^ +||lodhissmliqjs.website^ +||loen21.net^ +||loessalwheyey.qpon^ +||lofcdljzqswbs.online^ +||loftyknifeeducate.com^ +||lofzozyzxmzri.online^ +||loggatcribber.shop^ +||loggatcue.cyou^ +||loggiazamousecarve.cfd^ +||logicalfocus.cyou^ +||logicdate.com^ +||logicprecursor.com^ +||logicschort.com^ +||logingenerosity.com^ +||loginrubbishobey.com^ +||logriakeys.cfd^ +||logsaddiction.com^ +||logshandgripquarterback.com^ +||logsoutfittick.com^ +||loijtoottuleringv.info^ +||loinstaggerpamphlet.com^ +||loisrelayer.cfd^ +||lojsuarokgyxv.space^ +||lojusypsa.com^ +||lokcdn.com^ +||loketyowled.shop^ +||lokevomitsorbical.cyou^ +||lokglfvlixcei.online^ +||lokimaki.com^ +||lokmrizwbvrqq.website^ +||loktrk.com^ +||lolco.net^ +||loliumlaceier.cfd^ +||loliummaile.cfd^ +||lollopybirle.com^ +||lominglaes.com^ +||lomxthcwkdipp.com^ +||loneinner.com^ +||lonelyerror.com^ +||lonelyjunior.com^ +||lonelysicca.cyou^ +||lonelystress.com^ +||longeeglomgirding.qpon^ +||longerhighjack.com^ +||longestgeoffaversion.com^ +||longjawkedged.cfd^ +||longjawpolder.qpon^ +||longtermcity.pro^ +||longuescobby.qpon^ +||longvolume.com^ +||longwaymohawk.cfd^ +||lonkdreed.qpon^ +||lonkviper.shop^ +||lonyfoj.com^ +||loobilysubdebs.com^ +||loobyfleyed.com^ +||looedmisersexuvium.cyou^ +||loofsjunoniaclaps.cfd^ +||loohaiturigavik.net^ +||lookandfind.me^ +||lookeequired.cyou^ +||looktotheright.com^ +||loomsraffled.qpon^ +||loonieschitswhizzer.qpon^ +||loonykenyans.shop^ +||loopersamania.qpon^ +||loopme.me^ +||loosebelt.com^ +||loosedboolcardon.cyou^ +||loosestasok.shop^ +||loosometime.com^ +||lopcujih3eoi1coi7zvjqfm11hbv9.rest^ +||loperbrattle.com^ +||lopsideddebate.com^ +||loptrrfnfnsnb.space^ +||lopwhrvtmmhck.store^ +||loqhiecystguy.website^ +||loqnomgwbsiel.site^ +||lordhelpuswithssl.com^ +||lordtroublessounding.com^ +||lorftyrrshdxj.online^ +||lorgtbzlfxixd.online^ +||lorisdivas.cyou^ +||lornstupexbelgae.cyou^ +||lorryurban.com^ +||loseimposeherself.com^ +||loselrymastsbattels.cyou^ +||losemerelchuzwi.qpon^ +||loseprecede.com^ +||losesoakmanor.com^ +||losingmisunderstand.com^ +||losingoldfry.com^ +||losobo.xyz^ +||lostinfuture.com^ +||lotadversaryvolatile.com^ +||lotahtarkhangeb.cfd^ +||lotebanyoro.qpon^ +||lothzincous.shop^ +||lotreal.com^ +||lotsparasol.com^ +||lotteryaffiliates.com^ +||lottingdeters.com^ +||lottoairampocacked.cfd^ +||lotusesrisalarebore.qpon^ +||lotusintalukas.cyou^ +||lotychanner.life^ +||loubyvwvqyzdt.site^ +||louderappletcoma.com^ +||louderpregnantshabby.com^ +||louiescuffyagnails.cfd^ +||louisehunchbackpearl.com^ +||loulouly.net^ +||loungedcabrie.com^ +||lounjeysqslqm.site^ +||lourdoueisienne.website^ +||louthermate.cyou^ +||louxoxo.com^ +||lovable-scale.com^ +||lovableprofile.com^ +||lovableswing.pro^ +||love-romancejunction.com^ +||loveflirt-haven.com^ +||loveintension.com^ +||loverevenue.com^ +||loveyoudatee.com^ +||lovgykwxrsnqn.site^ +||loving-link.com^ +||lovingdrop.pro^ +||lovingforever.pro^ +||lovinghosethus.com^ +||lovrsdate.com^ +||lowbelllown.cfd^ +||lowboyrehair.qpon^ +||lowboystretch.cfd^ +||lowbredriksha.cfd^ +||lowdahtsktsks.shop^ +||loweststernhaunting.com^ +||lowlifewhateverspotless.com^ +||lowmothandhadb.org^ +||loworiginatepalette.com^ +||lowrihouston.pro^ +||lowtrainer.com^ +||loxantrums.cyou^ +||loxitdat.com^ +||loy356.site^ +||loyalaudience.pro^ +||loyalgreen.pro^ +||loyallyyobitrichia.cyou^ +||loyalpalpatelair.com^ +||loyalplant.pro^ +||loycsuoivghoy.space^ +||loydleste.com^ +||loytegdyewtij.site^ +||lozengehelped.com^ +||lozengeshould.com^ +||lozna.xyz^ +||lp-preview.net^ +||lp247p.com^ +||lp6v4zimwtoj367wgwvj.cfd^ +||lpajochcfb.com^ +||lparket.com^ +||lpcci9ue6qb5je4e.rest^ +||lpciuhqwcgdfp.space^ +||lpcqrynsjihwr.site^ +||lpcqyjyhfhets.space^ +||lpfvuqqyplupy.site^ +||lpgouuzcqcfjz.site^ +||lphxhknagzjcd.space^ +||lphzghnxjvujh.online^ +||lpikokswtx.com^ +||lpimevldefpxne.com^ +||lpkkjwdpizhh.com^ +||lpklqoaezptbr.space^ +||lplrdwhryrtpg.online^ +||lpmugcevks.com^ +||lpmyiqujrqohdkq.com^ +||lpniqpvcdejmx.online^ +||lpnotaeyoemsl.website^ +||lpnrteqncklwt.website^ +||lppgwovqwhwpc.store^ +||lprgcuewbzwdd.store^ +||lptrak.com^ +||lptrck.com^ +||lpuobkahdp.in^ +||lpvjlisdududq.site^ +||lpwtbsfgamivm.space^ +||lpzttnoezjdir.xyz^ +||lqbvjmkoozmry.top^ +||lqbykmppntvnp.online^ +||lqdimcpwev.com^ +||lqepkvudjwgwn.space^ +||lqivhsbmqcc.com^ +||lqjgofaobfami.site^ +||lqliraxqkwqzw.site^ +||lqljgkcjsuzer.store^ +||lqllisdlizrix.site^ +||lqlpchhficknp.site^ +||lqnzjmlhskmez.space^ +||lqrjuhhbzagoq.online^ +||lqskzxzoerxjm.website^ +||lqtktmhwzbyfb.online^ +||lqtxnaqqmbqxm.space^ +||lqudxquypbsvl.online^ +||lqvwbekhsnpfb.space^ +||lqxtyqukwiy.com^ +||lqzoyqvbjkzqm.top^ +||lqzwpvmxyxfap.space^ +||lr-in.com^ +||lrafahzbolzqk.space^ +||lrcaxaztripcv.online^ +||lrdacssiwbsne.site^ +||lrecfjekpxcgq.today^ +||lreojktedisfu.store^ +||lrfuyxrvcobgy.site^ +||lrhayaqsckgrw.site^ +||lrhffbdwkplxf.website^ +||lrieddklibrbq.space^ +||lrjejzefyzbac.space^ +||lrjgllzgqdnbi.website^ +||lrldmqtslbish.site^ +||lrlodahrafsxi.store^ +||lrlqiohtorwwl.website^ +||lrnszmhetq.com^ +||lrorwzpayomsy.space^ +||lrqqsseldxksb.online^ +||lrt38y3c8yhfwxutfx.cfd^ +||lrtfiyldgsawj.website^ +||lruqoojiabeik.online^ +||lrvpquoavttir.site^ +||lrwgmmuhrimpk.store^ +||lrwprzvusazvh.website^ +||lrxzfherqqllp.site^ +||lrziloubgdcfe.online^ +||lsbbtclkiwrdx.online^ +||lscsexsnjacwr.site^ +||lscudygcxiqnn.online^ +||lsdcqjesvxgbw.space^ +||lsdqisnrnobmx.site^ +||lsdqpgmlyalfh.website^ +||lsefpqchaizsv.site^ +||lsfpnoslskbcu.online^ +||lshegatjsedse.website^ +||lsiszlerwgure.store^ +||lsjne.com^ +||lslapckmkdjvx.site^ +||lslzloxntzczl.website^ +||lsoyvhsesurdq.store^ +||lsqiggjoiqgzj.online^ +||lsqvtdkujymzj.online^ +||lsqyahmytfwhn.store^ +||lssocybaoqyeu.online^ +||lstgddss.com^ +||lsvfzskgudyyr.site^ +||lswdjtngkdhbe.website^ +||lswteiiyfccwt.site^ +||lsxhxrpnhrqoj.space^ +||lsxymknlbwhfi.site^ +||ltackvyticqaq.online^ +||ltbhrzlkgbscn.website^ +||ltbzdstsmjiop.space^ +||ltcoswazghpde.site^ +||ltcpfjgmkplye.online^ +||ltcvggyknrnqi.online^ +||ltdhsyotzrxgz.website^ +||ltelantzxhyhr.online^ +||ltfykqjvaixny.space^ +||ltgllogtfmqjb.online^ +||lthglhksymoun.online^ +||ltjjzwimrqgae.website^ +||ltkvxwdlboeuv.space^ +||ltlldtoyvvbkz.store^ +||ltlonelyandbe.org^ +||ltnchfmuwmltz.space^ +||ltnntujherbxik.com^ +||ltqlqjxmyihzu.website^ +||ltqnhkvkgrcqenr.com^ +||ltrkecmxdrvfjh.com^ +||ltssbgqqrivtk.online^ +||lttceuqgmuxal.store^ +||ltugynnwf.com^ +||ltwajfzpsiijg.com^ +||ltwicopymopsey.cyou^ +||ltxgkgrtnealj.space^ +||ltxjxhrvpqpxp.site^ +||ltxrromggwyeq.site^ +||ltxuroxvga.com^ +||ltymvdqtbywss.site^ +||ltzgjfndaglxc.space^ +||luazaabatpsva.space^ +||lubbardzeedduer.qpon^ +||lubjakntiafcl.space^ +||lucentanxiouslyfleeting.com^ +||luciankybele.com^ +||luciannotably.qpon^ +||lucidityvinefrequently.com^ +||lucidmedia.com^ +||lucifercaprinelovely.cfd^ +||luciuscratediffers.com^ +||lucjpidhyb.in^ +||luckengerbils.cfd^ +||luckilygelatine.com^ +||luckilylagooneither.com^ +||luckyads.pro^ +||luckybasket.pro^ +||luckydefinition.pro^ +||luckyforbet.com^ +||lucrinearraign.com^ +||ludicrousavalancheherald.com^ +||ludpvyyfohlgi.space^ +||ludurxwgzzvdg.site^ +||lueticsbeaky.cfd^ +||lufmlapgrpooc.site^ +||luft9h68c4kyv7wjy.rest^ +||luggagesynchronize.com^ +||lugirsbhpifnl.store^ +||luglgf6r816982rr45f2.cfd^ +||luhbnpeabgeqf.online^ +||luhingamulches.qpon^ +||luhmdpvtncllt.website^ +||luhzoywwssycd.online^ +||luiginisalpian.qpon^ +||luizsycwgzmkg.website^ +||lukeabsinth.qpon^ +||lukrqrzkmiwst.online^ +||lukvmrrxwnxwa.online^ +||lulkckpzirebi.space^ +||lullercigale.qpon^ +||lullprivacyheater.com^ +||lumaktoys.com^ +||lumbarseleme.cyou^ +||luminedtusks.cyou^ +||luminosoocchio.com^ +||luminous-reference.com^ +||luminousrev.com^ +||lumktmjeeewwy.website^ +||lumpedodeumxylia.cyou^ +||lumpyactive.com^ +||lumpyage.pro^ +||lumujmndxyyzm.website^ +||lunatedalert.cyou^ +||lunaticcosyatrocious.com^ +||lunatictoxicambiguity.com^ +||lunchoffended.com^ +||lunetsepium.qpon^ +||lunlllxfmkvxr.site^ +||lunlyqvavjkfc.website^ +||luntsdodgesalumin.cyou^ +||lunygdgezgtnh.site^ +||luoqdtopebadx.store^ +||luoszoqdjxlsp.website^ +||lupinefoeless.cfd^ +||lupinusragweed.cfd^ +||lupomabarbary.qpon^ +||lupulinhauterayonny.cyou^ +||luqtazaqdcgyo.online^ +||lurchesoverrun.qpon^ +||lurgsmsapsago.qpon^ +||lurkedkurvey.cyou^ +||lurods.cyou^ +||lusciouscomparedacross.com^ +||lusfnxbxlkyip.site^ +||lushcrush.com^ +||lust-goddess-game.online^ +||lustilyshabbossystems.cyou^ +||lustp.com^ +||lustreperspiration.com^ +||lustrumearned.cfd^ +||lustslate.com^ +||luteicchainessmeary.cyou^ +||luuming.com^ +||luuspdbnxvyjs.site^ +||luwjcqbkeeeni.site^ +||luxadv.com^ +||luxatedgratae.cyou^ +||luxatenowness.com^ +||luxcdn.com^ +||luxins.net^ +||luxkokan.shop^ +||luxup.ru^ +||luxup2.ru^ +||luxupadva.com^ +||luxupcdna.com^ +||luxupcdnb.com^ +||luxupcdnc.com^ +||luxurious-excitement.com^ +||luxuriouselusivefunds.com^ +||luxuriousfrownbagful.com^ +||luxurycontractremorse.com^ +||luyten-98c.com^ +||luzphxylmxavl.space^ +||luzulacheer.cyou^ +||luzypntaczbig.website^ +||lvaokswa.com^ +||lvbbdxvfisdnw.website^ +||lvbeybbrwlamk.top^ +||lvbeybbrwvywq.top^ +||lvfgmuaroloxd.online^ +||lvhougsotjku.com^ +||lvizjwwjbnhuh.space^ +||lvjczzaojopzc.website^ +||lvjquuyugqirb.space^ +||lvksiviwpenew.website^ +||lvojijsguhs.com^ +||lvubwrnhxktlo.online^ +||lvvbqeaqvrmvy.top^ +||lvwytobyemady.online^ +||lvymjkuztbhyu.space^ +||lvyrokjbvvoor.top^ +||lvyvxkmvrjrul.online^ +||lwahyysblqbez.site^ +||lwdblrksolqvt.store^ +||lwdfqzckybcsl.online^ +||lwdmfhylcfj.com^ +||lweapwmihj.in^ +||lwecmzkeqjyag.online^ +||lweqatlchfkod.website^ +||lwgadm.com^ +||lwhckcgnnpevx.space^ +||lwhhscaioywoy.online^ +||lwitivbums.in^ +||lwjbvkjetnpui.site^ +||lwjvyd.com^ +||lwkkjmi23g76j2.cfd^ +||lwmeelpauwjap.com^ +||lwnbts.com^ +||lwonclbench.com^ +||lwopsesameszeroth.qpon^ +||lwqwlxzzujoof.space^ +||lwslbthnsbzmo.site^ +||lwsskdedoiwvp.website^ +||lwubuqgnxeugr.website^ +||lwuqoiaontbru.online^ +||lwvbqkyckqbnn.space^ +||lwwbpgjagsnoo.space^ +||lwwthwxurerat.online^ +||lwxoothcoq.com^ +||lwxuo.com^ +||lwywgysunkygy.site^ +||lwzzgwonlrvgr.site^ +||lx2rv.com^ +||lxanialqocwwk.website^ +||lxbwquyuoovrx.space^ +||lxfiflqhawqzr.space^ +||lxgnfvnuagkua.website^ +||lxhwfufvlksxl.site^ +||lxisvvxfdqozy.site^ +||lxjhcvabfkjuo.space^ +||lxndpxudyrqyy.online^ +||lxnxlhvunpqik.site^ +||lxockgcdbobzl.online^ +||lxrffyqkackjhg.com^ +||lxrjjgzynzdzj.online^ +||lxstat.com^ +||lxtacluhwhcfy.site^ +||lxvkhshqedhhh.site^ +||lxwmazdgleyxy.website^ +||lxylxwxvhffvm.vip^ +||ly242w6qvjitmkz.cfd^ +||ly9cwiz4vi4f6b.cfd^ +||lyaauumakulfq.site^ +||lyccjoyj.com^ +||lycidaecoiffed.qpon^ +||lycopinalvia.cyou^ +||lycopusunsteck.com^ +||lycuhejheahrr.store^ +||lycus-nom.com^ +||lycykqrnprxjc.site^ +||lydditeairth.cfd^ +||lydfpyoaexlvq.site^ +||lydialoopful.shop^ +||lydkuzntnhxim.website^ +||lyedpdomdgykd.site^ +||lyeempccaxuwq.site^ +||lyepmjjjcwghi.online^ +||lyevznvskwrji.space^ +||lyexrcudpidrv.store^ +||lyhsallccctlwah.com^ +||lyhuuplvlsuii.site^ +||lyingplungeshopping.com^ +||lylowerhughe.com^ +||lylufhuxqwi.com^ +||lymludjrjgpyv.website^ +||lyophilhoolalgins.cyou^ +||lyopieifcjaqb.site^ +||lypchoanqfwqz.site^ +||lypslljhdhveu.website^ +||lyqktmnzhoapj.online^ +||lyqlmfiyinygz.space^ +||lyraidsudes.qpon^ +||lyreridgier.shop^ +||lyricaldigressbewail.com^ +||lyricsginger.com^ +||lyricslocusvaried.com^ +||lyrismdhabbdicolic.cyou^ +||lyrismswainspsychs.cyou^ +||lyrurusasarite.cfd^ +||lysategriphus.cfd^ +||lysinebinukauunpiped.qpon^ +||lysinerbiums.qpon^ +||lyticaframeofm.com^ +||lyusuwiuwhwtl.online^ +||lyvkvqitzktkx.store^ +||lyvlbjzbozkxy.space^ +||lyvootnkgwxkq.online^ +||lywfwxeexwcwc.online^ +||lywuyxazjxmbt.site^ +||lyyyupftoqfoz.site^ +||lzbwprvfzvbdx.website^ +||lzdcrvcjqkgjm.site^ +||lzfljpsjzvokm.space^ +||lzhkkgtzlksfd.space^ +||lziccjzdqonsk.site^ +||lzjl.com^ +||lzkkjygncgoss.space^ +||lzmvhfpfxidbv.website^ +||lznomkovxtesn.site^ +||lznpaqtbynhke.site^ +||lzpiozkcngklw.site^ +||lzrbw9i3859xjj2.rest^ +||lzresfdeddzap.online^ +||lzudmwytadqrg.site^ +||lzulehztkwopr.website^ +||lzvwaiixrblpy.site^ +||lzvwybvvyrqyk.top^ +||lzxdx24yib.com^ +||lzybyzttqdrzq.online^ +||m-rtb.com^ +||m0rsq075u.com^ +||m2.ai^ +||m2fpkp2bq6k6ooorq5fy.cfd^ +||m2track.co^ +||m32.media^ +||m3prikb9r529tw.cfd^ +||m63ipgtvcqukz4wrwl.cfd^ +||m6cy8gqzqflnm7.cfd^ +||m73ztrit6pr6bn.cfd^ +||m86x5owlft7j19uc.cfd^ +||m87c8g59lphbouq3m4jyj.cfd^ +||m8ix4fqk.xyz^ +||m8r1unlwcwkjqmw5y8.cfd^ +||m8vmw6qqujk14t67rl.cfd^ +||m9n6nht2evwh6h.cfd^ +||m9pv66nmegg85mpe82jg949qf.rest^ +||ma3ion.com^ +||maabrgtemogqi.online^ +||mabolodistich.com^ +||macan-native.com^ +||macaronsudan.qpon^ +||macawboutell.cyou^ +||macawscaratch.cyou^ +||maccuseloign.cfd^ +||macerbarie.qpon^ +||macherabemaim.shop^ +||machinemerrimentresent.com^ +||machinerydistractattest.com^ +||machinerymainlandsport.com^ +||machinerypostcardcollect.com^ +||machineryvegetable.com^ +||machogodynamis.com^ +||machreewhiz.com^ +||macledyammers.cfd^ +||macro.adnami.io^ +||macro4settings.net^ +||maculasveto.cyou^ +||mad-consist.com^ +||madadsmedia.com^ +||madbeware.com^ +||madcheddar.net^ +||madcpms.com^ +||maddencrumble.com^ +||maddenwiped.com^ +||maddxybuztane.space^ +||madeupdrunk.pro^ +||madeupice.com^ +||madeupteamspupil.com^ +||madeupvigourpoll.com^ +||madmanbiological.com^ +||madnesscoupon.com^ +||madnessjadegraceful.com^ +||madratesforall.com^ +||madrogueindulge.com^ +||mads-fe.amazon.com^ +||madsabs.com^ +||madsans.com^ +||madsecs.com^ +||madserving.com^ +||madslimz.com^ +||madsone.com^ +||madspmz.com^ +||madurird.com^ +||maebtjn.com^ +||maejzevcvnvlj.site^ +||maestrogulpedgag.com^ +||mafeyyoyo.com^ +||mafflinsnorty.cfd^ +||mafllmgwrqucr.site^ +||mafroad.com^ +||magahipipey.shop^ +||maggielimper.com^ +||maghicultch.cyou^ +||maghoutwell.com^ +||maghribnubbins.cfd^ +||magicallyitalian.com^ +||magicallypenitentiary.com^ +||magicianboundary.com^ +||magicianmost.com^ +||magilpbeheld.cfd^ +||maginp.com^ +||magistrateknock.com^ +||magmatapiazine.cyou^ +||magnatejuicier.qpon^ +||magnificentdeedsenses.com^ +||magnificentmanlyyeast.com^ +||magnificentsentence.pro^ +||magnificentshine.pro^ +||magnificentworker.com^ +||magsrv.com^ +||maguruphreuza.store^ +||mahassvibccui.store^ +||mahfrwpkcnjcv.space^ +||mahjouwwbezzg.online^ +||mahoesmot.cfd^ +||mahoganyproductthat.com^ +||mahuahao.cyou^ +||maidcontrarypenknife.com^ +||maideneyeshadow.com^ +||maidr.pro^ +||mailbagbebrush.cfd^ +||mailboxboynutrition.com^ +||mailcoupletime.net^ +||mailedbardism.shop^ +||mainadcenter.com^ +||mainadv.com^ +||mainexclkdir.com^ +||mainos.pro^ +||mainroll.com^ +||maintainconnection.co.in^ +||maintaintournamentslick.com^ +||maipureesbay.qpon^ +||maisonpureconcept.fr^ +||maistrykelpsagistor.qpon^ +||maithigloab.net^ +||maiusfan.cfd^ +||maiwbisqgsdzn.website^ +||maizeunbored.cyou^ +||majasidyl.shop^ +||majestic-oven.com^ +||majestydisbeliefcalory.com^ +||majorbaizes.shop^ +||majorbarefooted.com^ +||majorcharacter.com^ +||majoriklink.com^ +||majormakeupsuffer.com^ +||makarireimply.qpon^ +||makeoverbought.com^ +||makeovertool.com^ +||makergot.com^ +||makesdebit.com^ +||makethebusiness.com^ +||makeuppillow.com^ +||making.party^ +||makingnude.com^ +||malariarevive.cyou^ +||malatiswirled.com^ +||malaysguaymiebogging.cyou^ +||malcare.me^ +||malchuschamber.shop^ +||male-basis.pro^ +||malewait.com^ +||maliciousdemonic.com^ +||malitialabour.cfd^ +||malleinpearceorioles.cyou^ +||malletthingluxury.com^ +||malleusacmic.cyou^ +||malmtufted.cyou^ +||maltgentry.qpon^ +||malthahooye.com^ +||maltsknoweth.shop^ +||malurussmoochs.qpon^ +||mamaethicinvent.com^ +||mammatidisegno.cyou^ +||mammocksambos.com^ +||mammoth-a.pro^ +||mammothshot.com^ +||mammothsweetheart.com^ +||mammuladeric.qpon^ +||mammycocos.cyou^ +||mamsellrod.qpon^ +||mamydirect.com^ +||managementgrandpa.com^ +||manageshalfmoonaccess.com^ +||managespassengerpresent.com^ +||manateeacyloin.com^ +||manconsider.com^ +||mandantkettlerroomth.cfd^ +||mandantthillyserbdom.cyou^ +||mandatorypainter.com^ +||mandrelkluckerbeisa.cyou^ +||mandscarus.cfd^ +||manehconule.cfd^ +||manganaexserttomb.qpon^ +||mangananesokia.qpon^ +||mangerolympicssnort.com^ +||maniefenrir.cyou^ +||manifestbeardlozenge.com^ +||manifestoctavianapostrophe.com^ +||manihothallahs.qpon^ +||manipulativeslaves.com^ +||manistsesbandammers.cyou^ +||manksdmejidwv.website^ +||mannasgeraticdilli.cfd^ +||mannersportalchart.com^ +||manorflounderheady.com^ +||manorowlapprehension.com^ +||manropeespece.cfd^ +||mansionappointmentmoon.com^ +||manstche.cfd^ +||mantasdilluebu.qpon^ +||mantelagalaxybarky.qpon^ +||mantoidvenom.cyou^ +||manualchaosmartial.com^ +||manualdiverge.com^ +||manualpayback.com^ +||manualpeasantconnoisseur.com^ +||manufacturemoustache.com^ +||manumeaseggy.qpon^ +||manureads.com^ +||manuredplumbumgunnies.cfd^ +||manurepatronageitalian.com^ +||manyielding.com^ +||maocsjbcjljog.online^ +||mapamnni.com^ +||mapcawing.com^ +||mapdevelopcleverness.com^ +||maper.info^ +||maprajna.cyou^ +||mapwisemulder.qpon^ +||mapxdidwwp.com^ +||maqtaerditpoz.site^ +||marapcana.online^ +||maraseffete.shop^ +||marathiglowed.cfd^ +||marathonseaside.com^ +||maraudsagamoid.cfd^ +||marayshahin.shop^ +||marazma.com^ +||marbil24.co.za^ +||marbleremeute.qpon^ +||marcherkikar.cyou^ +||marchpublicationpiggy.com^ +||marchshotgun.com^ +||mardiwitful.qpon^ +||marebeenewly.com^ +||maredpt.com^ +||mareferncrawl.com^ +||marfireundoing.cfd^ +||margaritawanderingelusive.com^ +||margentcolor.cyou^ +||margielancer.qpon^ +||marginenray.cyou^ +||margive.com^ +||margotmaugis.qpon^ +||marianneperiod.com^ +||marimedia.com^ +||marinadelifestyle.com^ +||marinadeworriesdurable.com^ +||marinedfulmen.com^ +||marineingredientinevitably.com^ +||marinerattest.com^ +||marinerpassionate.com^ +||maripasengbaler.cfd^ +||maristfregata.cfd^ +||maritalparliamentary.com^ +||maritaltrousersidle.com^ +||maritaluntidynegotiate.com^ +||markedoneofth.com^ +||markerleery.com^ +||marketgid.com^ +||marketjavgg124.fun^ +||markkakiwai.cyou^ +||markreptiloid.com^ +||marksdespitelinear.com^ +||markshospitalitymoist.com^ +||markswaitingrouge.com^ +||marmaladestrikingcolourless.com^ +||marorapicianmawsie.cfd^ +||marphezis.com^ +||marquesedgily.shop^ +||marramlaevo.qpon^ +||marrierzizany.cyou^ +||marriespsovieeserin.cyou^ +||marshalcurve.com^ +||marshcooperative.com^ +||marsheswhampee.qpon^ +||marsianables.shop^ +||marsoonnotaeal.qpon^ +||martelacquestcarnify.cfd^ +||martencrippled.com^ +||martenforthwith.com^ +||martialrecessioninformant.com^ +||martinicounite.com^ +||martinioakwood.cfd^ +||martiniunriper.shop^ +||martnetinhumed.cyou^ +||martpleadescended.com^ +||martted.com^ +||marysth.cyou^ +||masakeku.com^ +||masanaogangadogly.qpon^ +||masbpi.com^ +||mascaraowners.com^ +||mascarapersonality.com^ +||mascledfasten.cfd^ +||masculine-employment.com^ +||mashaljellied.cyou^ +||mashersjikungu.com^ +||mashmenjump.qpon^ +||maskermixedlyglucid.qpon^ +||maskinglobulescoenoby.qpon^ +||maskingsodaskelter.cfd^ +||maskinsazulejorouleau.cfd^ +||masklink.org^ +||masonerthoria.shop^ +||masonplantsirresponsibility.com^ +||masqueradejournalism.com^ +||masqueradepatheticburden.com^ +||masqueradethousand.com^ +||massbrag.care^ +||massivemanuscriptestimated.com^ +||massiveplace.pro^ +||masticnoshing.cfd^ +||mastinstungmoreal.com^ +||mastprefixhandkerchief.com^ +||matalanprating.cyou^ +||matanzaaldoses.cyou^ +||matarketogen.qpon^ +||matcaogeujmco.website^ +||matchclamourallot.com^ +||matcheshonoraryunderwater.com^ +||matchesproductionsinteract.com^ +||matchingrelationspint.com^ +||matchjunkie.com^ +||mateinoma.com^ +||mateleyunrowed.qpon^ +||matelycoker.qpon^ +||matergypsies.qpon^ +||materialfirearm.com^ +||materialisticgossip.com^ +||mateysnates.qpon^ +||mathads.com^ +||mathematicsefficiencyburnt.com^ +||mathematicswhineconvene.com^ +||mathsanalyse.com^ +||mathspositionuproar.com^ +||matildawu.online^ +||mationwind.com^ +||matiro.com^ +||matloomreconcile.com^ +||matreedfelahin.qpon^ +||matrixinage.com^ +||matrixoutsettings.com^ +||matronsnaa.cyou^ +||mattasauries.cfd^ +||mattersmark.com^ +||matterssharplyraw.com^ +||mattesunornpaused.cyou^ +||mattinkvetch.cyou^ +||mattressskilfulwalnut.com^ +||mattressthere.com^ +||maturityneedlework.com^ +||maturitynotebookmotion.com^ +||maturityrigourwits.com^ +||maulingunreel.cyou^ +||maundscookee.shop^ +||mautheroursels.cfd^ +||mavamuwwnkksn.store^ +||mavq.net^ +||mavrtracktor.com^ +||mawkybalontilsit.cyou^ +||mawlaybob.com^ +||maxbounty.com^ +||maxconvtrk.com^ +||maxhicihkgeva.website^ +||maxickedpantents.com^ +||maxigamma.com^ +||maxim.pub^ +||maximal2statistics.net^ +||maxonclick.com^ +||maxserving.com^ +||maxudijuz.com^ +||maxvaluead.com^ +||maya15.site^ +||maybejanuarycosmetics.com^ +||mayfowlguam.cfd^ +||mayhapmonisms.com^ +||mayhemabjure.com^ +||mayorcabbagedemolish.com^ +||mayportfolioshrine.com^ +||maytimecenacle.cyou^ +||mazefoam.com^ +||mazelclamor.cyou^ +||mazingmimed.qpon^ +||maznsshrpkind.space^ +||mazrwvacfmpdq.space^ +||mazumaampyxessesamol.qpon^ +||mb-npltfpro.com^ +||mb01.com^ +||mb102.com^ +||mb103.com^ +||mb104.com^ +||mb26cqo3bl8vo37.cfd^ +||mb57.com^ +||mbacufxdxoqso.site^ +||mbbgbxpvaymmw.store^ +||mbcgtqxjloqev.space^ +||mbcm2.com^ +||mbddip.com^ +||mbdippex.com^ +||mbdleafdom.cyou^ +||mbdmildishzontian.cfd^ +||mbidadm.com^ +||mbidinp.com^ +||mbidpsh.com^ +||mbidtg.com^ +||mbirainfarct.cyou^ +||mbjrkm2.com^ +||mbkjarrnxwrty.online^ +||mbkozdddphadk.site^ +||mbltzqounmuzh.space^ +||mblyjustingex.org^ +||mboshmpgkndsc.site^ +||mbovegchkeacl.online^ +||mbqroqihpdsat.online^ +||mbrbtdivelmlv.website^ +||mbreviewer.com^ +||mbreviews.info^ +||mbrykultcwett.com^ +||mbsmmujamqhlf.site^ +||mbthynqxqpotz.online^ +||mbuxtemzhbxnt.space^ +||mbvlmx.com^ +||mbvlmz.com^ +||mbvndisplay.site^ +||mbvsm.com^ +||mbvubhvcfcjju.space^ +||mc7clurd09pla4nrtat7ion.com^ +||mccxupbdxfhu.com^ +||mcegpoujeecux.online^ +||mcfstats.com^ +||mcgcandid.shop^ +||mcgengegvbodx.online^ +||mcgo2.com^ +||mciipgsntyqok.site^ +||mcizas.com^ +||mclmgjkp4him3t.rest^ +||mcmxgnbkvyypp.online^ +||mcnlpmzrhpvcq.online^ +||mcocayxlebnuv.space^ +||mcoscsxewhv.com^ +||mcppsh.com^ +||mcpuwpsh.com^ +||mcsvudycufzgo.site^ +||mcxuorwlaqtyd.site^ +||mcyaabdssxdlg.space^ +||mcyhmaqhrmsuy.website^ +||mcymghkpdhqmk.website^ +||mczbf.com^ +||mczrkekwjxhtz.site^ +||mdamyqrttrxmi.website^ +||mdbkdndghnjpi.space^ +||mdbzgpjywsgvh.online^ +||mdd18ho6.xyz^ +||mddbdmylgchjx.space^ +||mddsp.info^ +||mdeifbcnejbjr.online^ +||mdfbzgwhrfffg.site^ +||mdfhgzkechrdi.site^ +||mdflbyhw.com^ +||mdgncqucctria.website^ +||mdhjjdifpydnu.space^ +||mdhldqpicqfgg.online^ +||mdienajibvwdc.space^ +||mdjaqbmzrwrcx.space^ +||mdjhrgdnrgxrb.site^ +||mdockyrsaxayt.online^ +||mdocqwipifyhu.buzz^ +||mdoomngnidelo.store^ +||mdqohhbbksbuu.site^ +||mdroadmmbxrlj.space^ +||mduzsvziicegf.online^ +||mdvgrshtkuvfcbf.com^ +||mdvywvdkbpcdv.site^ +||mdwzdvbjkixim.site^ +||mdyhysyezdigw.online^ +||mdyjjnmwhhcpa.site^ +||meadow-assets.click^ +||mealdisparitydrip.com^ +||mealockcoucher.shop^ +||meamdntykavo.com^ +||meaningfromplatforms.com^ +||meaninglessoccasionalrevision.com^ +||meantimenourishclothes.com^ +||meantimesubside.com^ +||meanwhilecalculateconsistent.com^ +||measlyhucks.cyou^ +||measlytechnology.pro^ +||measurenotepersonal.com^ +||measuringrules.com^ +||meatabdicatedelicatessen.com^ +||meatsmatt.cfd^ +||meatytalk.pro^ +||meazleafro.shop^ +||mechanicalcardiac.com^ +||mechanicladenthereby.com^ +||mecujducokfzp.space^ +||medakasep.cyou^ +||medalbashfulsunstroke.com^ +||medalopenairtedious.com^ +||meddlingregret.com^ +||medfoodsafety.com^ +||medfoodspace.com^ +||medgoodfood.com^ +||media-412.com^ +||media-general.com^ +||media-sapiens.com^ +||media6degrees.com^ +||mediaf.media^ +||mediaforge.com^ +||mediahell.world^ +||mediapalmtree.com^ +||mediasama.com^ +||mediative.ca^ +||mediative.com^ +||mediaxchange.co^ +||medical-aid.net^ +||medicalcandid.com^ +||medicationspoons.com^ +||medichalfwaypoetry.com^ +||medidiialleneinside.qpon^ +||medievalkin.com^ +||mediiraunchy.shop^ +||medimnofisc.shop^ +||mediocrecliffschangeless.com^ +||mediocremoreoverbalcony.com^ +||mediuln.com^ +||mediumassignment.com^ +||mediumcitrene.cfd^ +||mediumtuilziecrumlet.cyou^ +||medleyads.com^ +||medyanetads.com^ +||meedfulsleets.shop^ +||meek-level.com^ +||meet-romance-girls.com^ +||meet-romanceconnects.com^ +||meet-womans-meets.com^ +||meetflirtmatch.com^ +||meetingactual.com^ +||meets-love-connection.com^ +||meetsgardeny.shop^ +||meetstorages.com^ +||meetwebclub.com^ +||mefkkezojxnzn.website^ +||megaad.nz^ +||megadeliveryn.com^ +||megaeramungrel.qpon^ +||megapodkevels.qpon^ +||megarafiddly.com^ +||megassehermeleforum.qpon^ +||megawebify.my^ +||megdexchange.com^ +||megpngcejxazj.website^ +||mehallatompon.qpon^ +||mei4grw5jgei7yhvkviw8e6bonzc.cfd^ +||meibjonjgxjqb.store^ +||meifrmswsyxdl.website^ +||meiklegomaricomport.qpon^ +||mejlwlzjcbkjn.space^ +||mekongvizzy.cyou^ +||melancholylucidity.com^ +||melbarussenejeofail.cyou^ +||meletinbyworks.cfd^ +||melgeminid.cfd^ +||mellodur.net^ +||mellow-habit.com^ +||melodic-mess.com^ +||melodramaticquery.com^ +||melongatesdexterity.com^ +||melonryrummily.qpon^ +||meltageclingsteuch.cfd^ +||meltonosse.qpon^ +||memberfoiblediplois.qpon^ +||membermobsmen.qpon^ +||membersjanapa.qpon^ +||memchvtdzofwn.site^ +||memfuqtsmlmyl.site^ +||memgmknqdaycy.space^ +||memia.xyz^ +||memoryidryl.com^ +||menacehabit.com^ +||menacesspencie.cfd^ +||menacing-frame.pro^ +||menacing-rain.com^ +||menacingresource.pro^ +||menatnonuses.cfd^ +||mendejobnamepanama.cyou^ +||mendersquats.cfd^ +||menfraswagmenkeglers.cfd^ +||menrdrxjpdvky.space^ +||mensakapurbleakly.cyou^ +||mensasavara.qpon^ +||mentaryrabanna.qpon^ +||mentaryrewet.qpon^ +||menthalegati.shop^ +||mentionbounceclimate.com^ +||mentioneartabphrygia.cyou^ +||mentionideablit.com^ +||mentorremark.com^ +||meonehjvoopxlj8pk.rest^ +||meoqrkio.com^ +||meowadvertising.com^ +||mepuyu.xyz^ +||mercenaryslaveryplays.com^ +||merchandisevat.com^ +||merchantequationresponse.com^ +||merchenta.com^ +||merchettribal.cfd^ +||mercuryilluminatedprunes.com^ +||merelyworld.com^ +||meressuppler.cyou^ +||mergedlava.com^ +||merig.xyz^ +||meritfawning.cfd^ +||meritvolleyballturban.com^ +||mermaidconclusionwaited.com^ +||mermenposableglasser.qpon^ +||meropicnoblykoreish.cyou^ +||merrilyfledged.cyou^ +||merrycontext.pro^ +||merterpazar.com^ +||meshesvoter.qpon^ +||meshierbrules.cyou^ +||mesmerizeexempt.com^ +||mesnagebobble.com^ +||mesqwrte.net^ +||messageaboderunner.com^ +||messy-brain.com^ +||messyadvance.com^ +||messyhanging.com^ +||mestizacools.cfd^ +||mestreqa.com^ +||metabatted.com^ +||metalbow.com^ +||metallcorrupt.com^ +||metallicselection.com^ +||metallicside.pro^ +||metanymwreckerpotgut.cyou^ +||metatrckpixel.com^ +||metavertising.com^ +||metd11gim.com^ +||metelyceriops.cyou^ +||metelygufferpreman.cyou^ +||meteortoffee.com^ +||meterfarcify.shop^ +||metershookdash.com^ +||methidekohua.shop^ +||methodimperativebackground.com^ +||methodinduced.com^ +||methoxyunpaled.com^ +||methsnacritepreview.qpon^ +||metolautomatvinery.cyou^ +||metredesculic.com^ +||metreoutlet.com^ +||metrica-yandex.com^ +||metrics.io^ +||metricswpsh.com^ +||mettend-hamous.xyz^ +||meultomhbkptq.store^ +||meumunweb.qpon^ +||meuxdcfzpyipb.space^ +||mevqcypxegxqk.site^ +||mewbhapcrrrou.website^ +||mewercysts.qpon^ +||mewgzllnsp.com^ +||mexitlardri.cyou^ +||mexzotwkeiqjx.space^ +||meyddubqxekbd.site^ +||meyfcxephqjbc.site^ +||mezir1nm.xyz^ +||mfadsrvr.com^ +||mfafexwjjgcxt.website^ +||mfasonyolhivb.space^ +||mfcewkrob.com^ +||mfdgzjlhrvtnw.space^ +||mffbfzqfrpoir.store^ +||mffvrbibyvnne.site^ +||mfgoxtdrxupes.website^ +||mfgvhabnnlwkd.online^ +||mfiomoaa.com^ +||mfjhkyeptwiop.site^ +||mfjoxsbmnxssq.online^ +||mfltgzltzqvni.online^ +||mfmalergyol.com^ +||mfngfbmubdawu.site^ +||mfnywvolurpen.site^ +||mfobenjxxmggr.store^ +||mfokuvfzcevjp.website^ +||mfomwtxsbaukl.space^ +||mformanentsysh.com^ +||mfrvwwyviutsk.website^ +||mfrwyailfrrxm.website^ +||mftnsjsenkwau.online^ +||mftqdrlibjsfyq.com^ +||mfuobqafq.in^ +||mfwbsveljxjsq.space^ +||mfyavsmiha.com^ +||mfynaxrri.in^ +||mfynwrbjbbybm.site^ +||mfzjiodzpsjdk.space^ +||mgbogrrrytrtb.online^ +||mgbprflbradaz.online^ +||mgbubfnjdpkye.space^ +||mgcash.com^ +||mgcbncbblbrlh.site^ +||mgcld.xyz^ +||mgdjmp.com^ +||mgfovsauwpkkp.website^ +||mghkpg.com^ +||mgid.com^ +||mgidrskyzsbjc.store^ +||mgieqnribzfxq.space^ +||mgivusiufzagm.space^ +||mgkjakbwzcrla.online^ +||mgladthereisso.com^ +||mgmaringpoli.org^ +||mgptijzevfuxj.space^ +||mgrafmxbsgjma.store^ +||mgsnicqdeydae.space^ +||mgsydnzsmxkni.space^ +||mgtckhufqjlad.store^ +||mgufjysojhgyg.space^ +||mgujumljajzgt.store^ +||mguxmveyfwdyo.space^ +||mgwawoyupykxh.online^ +||mgwpkymsppdxz.online^ +||mgwxgxnpmzcqa.website^ +||mgyccfrshz.com^ +||mh98hzxolozboqh.cfd^ +||mhcszfqsnh.com^ +||mhdrvicmuxzyl.site^ +||mhfjobnoamzsrx.com^ +||mhgulzhluhcvt.space^ +||mhhnoclofkymc.website^ +||mhiiafknctopm.site^ +||mhiiopll.net^ +||mhixmkuhwtbfp.space^ +||mhjasudirbgqs.website^ +||mhkcouhjekkls.space^ +||mhkikldmrpgjj.store^ +||mhktxzxqhlzik.online^ +||mhkufxshpxgps.website^ +||mhlezkarznvwe.site^ +||mhqxzzklfxqdt.website^ +||mhslimakagrzq.space^ +||mhtgouywqxrxa.online^ +||mhwnlmindermr.space^ +||mhyacjinulgvu.store^ +||mhyc3epk4h1xgq9v13w9wr1ei4uv6x34y.cfd^ +||mhydndfvgzvwu.site^ +||mhzflailpatwari.cfd^ +||mi82ltk3veb7.com^ +||miaoustousle.qpon^ +||miaowerdeairs.qpon^ +||miaulerbluffedfrowzy.cyou^ +||miayarus.com^ +||micfagmbbtwda.website^ +||michingfurcae.cyou^ +||microad.net^ +||microadinc.com^ +||middaycataract.com^ +||middaymishapnotice.com^ +||middayopened.com^ +||middengaudily.cfd^ +||middensunrra.com^ +||middlejargon.com^ +||middlewareoutdebugger.net^ +||middycoyest.cyou^ +||midgerelativelyhoax.com^ +||midgesdwelled.shop^ +||midgetbreakfast.com^ +||midgetreckon.com^ +||midmornaggrege.cfd^ +||midnighttraditionally.com^ +||midpopedge.com^ +||midstcabals.com^ +||midwaysunusualsmarmy.cfd^ +||midweekzambac.qpon^ +||mierslkkekrml.website^ +||miewocoaedlin.online^ +||miffedcrave.cyou^ +||mifvigmz.com^ +||mifxikofn.in^ +||mig3incvggbukg.cfd^ +||migaelqamaefp.online^ +||migcradnebxmy.website^ +||migetwvqlwkbq.com^ +||mightlyyaffed.cyou^ +||mignished-sility.com^ +||mignonsregaler.shop^ +||migranticon.com^ +||migrationannarequested.com^ +||migrationoctavian.com^ +||migrationwheat.com^ +||mihkieqzbounu.space^ +||mijqnkabhtbpj.website^ +||mijqwsfktcape.com^ +||mikeyfanging.shop^ +||mikka.app^ +||mikkvmklsfzwv.store^ +||mikqukcumhivv.online^ +||mikrpvbcefzal.online^ +||mikvehsphloxes.cfd^ +||milacreshlu.cyou^ +||milchigpassout.cyou^ +||mildcauliflower.com^ +||mildconsciousness.com^ +||mildfulsawwortsanhita.cyou^ +||mildgive.com^ +||mildredorientridge.com^ +||mildredpearly.cfd^ +||milesflooding.com^ +||milestonebreathdilate.com^ +||milestoneintegerathletics.com^ +||miliolaentria.cyou^ +||militantrelieve.com^ +||milkencarajas.cfd^ +||milky-silver.pro^ +||milkywaynewspaper.com^ +||milladvocacyunderstandable.com^ +||millennialmedia.com^ +||millerthe.com^ +||milletappliancejeopardize.com^ +||milletplentifulcommentary.com^ +||millionaireconscientious.com^ +||millionairepilgrim.com^ +||milljeanne.com^ +||millkenthawers.qpon^ +||millprinciplesbaby.com^ +||millsurfaces.com^ +||millsuspect.com^ +||milosdyvours.cfd^ +||miltlametta.com^ +||miltzuhmlwqrn.website^ +||miluwo.com^ +||milvussorel.qpon^ +||mimeioagotwvo.online^ +||mimesagnuses.cyou^ +||mimicbeeralb.com^ +||mimilcnf.pro^ +||mimpstannylcornea.qpon^ +||mincessorgo.cyou^ +||mincxhboupoee.space^ +||mindedenhance.com^ +||mindedonly.com^ +||mindershrimp.com^ +||mindmeters.biz^ +||mindoccupy.com^ +||mineraltip.com^ +||mineryazideintends.cfd^ +||mineryballerovigerm.qpon^ +||mingledpayoff.com^ +||miniatelatcher.cfd^ +||minikenfiercen.com^ +||minimastanekinguen.cfd^ +||minimumomnipotentintern.com^ +||minimumshortest.com^ +||miningdeveloping.com^ +||ministercheckingpeering.com^ +||ministrycosmeticrigour.com^ +||ministryensuetribute.com^ +||minkerychitins.cyou^ +||minkfrequent.com^ +||minklemonade.com^ +||minksboxing.cfd^ +||minksympathyindoors.com^ +||minniecrpe.qpon^ +||minningsutu.com^ +||minoizeapes.cfd^ +||minotaur107.com^ +||mintakapappyri.qpon^ +||mintaza.xyz^ +||minunetclose.com^ +||minutesillock.cfd^ +||minutessmiles.com^ +||minvendominous.cyou^ +||minyasburner.cyou^ +||miorokkyhdjna.store^ +||mioymlvrhmlsk.online^ +||miqanfobx.in^ +||miraclethisaddicted.com^ +||miragyflix.com^ +||miragysoft.qpon^ +||mirazu-denhaag.nl^ +||mircctme29hgbjny.cfd^ +||miredindeedeisas.info^ +||mirfakpersei.top^ +||mirifelon.com^ +||mirospaid.shop^ +||mirthconfidence.com^ +||mirthflexiblecolumn.com^ +||mirthzayins.shop^ +||misaglam.com^ +||misav.sbs^ +||misbillsarsens.cfd^ +||miscarriageapartment.com^ +||miscarriagedevelopmentfoil.com^ +||miscedeientices.cyou^ +||miscellaneousfloraprosecutor.com^ +||miscopycorellaaxmaker.qpon^ +||miscuedmisedit.cfd^ +||misdidbala.cfd^ +||miserableconcept.com^ +||miserly-apple.pro^ +||misertamilic.cyou^ +||miseshogglerstrit.cyou^ +||misguidedconclusion.com^ +||misguidedshelves.com^ +||mishandlepretty.com^ +||misjudgebuoyeye.com^ +||misjudgedistilentice.com^ +||misleadgifted.com^ +||misleargluedplafond.cyou^ +||mismazedewiest.cfd^ +||misnamefilters.cfd^ +||misnameruned.cfd^ +||missherself.com^ +||missiondues.com^ +||misslk.com^ +||missoper.com^ +||missoutenflamedallan.qpon^ +||misstopstaver.cfd^ +||mistakeapartgolan.com^ +||mistakewing.shop^ +||misterskeans.cyou^ +||mistresscoat.com^ +||mistydeposit.pro^ +||mistysteel.co^ +||misunderstandprodigalnovember.com^ +||misweenownself.com^ +||mitblcskeqhxr.site^ +||mitellaimponewoilie.cyou^ +||mitherhugsrantism.cyou^ +||mitopamosal.com^ +||mitresaxillae.com^ +||mittendrownministry.com^ +||mitvoppwqjiqo.space^ +||mitvothmoulage.shop^ +||miu8ekuryezmw8.cfd^ +||mivugyezcnuqs.website^ +||mixahrccmldjb.store^ +||mixedissue.pro^ +||mixhillvedism.com^ +||mixneedful.com^ +||mixpo.com^ +||mixtureanticipationsuede.com^ +||mixturelogier.shop^ +||mixtureprerogativesnail.com^ +||miyhpginqwjrx.website^ +||miyubhvqxopdx.store^ +||mizfdyhwsrqct.site^ +||mizzledkl.cyou^ +||mizzlywow.shop^ +||mizzyghetto.cfd^ +||mjaksfykaaqrt.space^ +||mjapvwzhaozgl.website^ +||mjaytlowjzixs.site^ +||mjcfpkgfkeoni.site^ +||mjdoepcbogrix.store^ +||mjdvqfoffagkp.online^ +||mjfazganzkdbw.space^ +||mjfudwsnaxfdp.com^ +||mjgxsmcfnddde.online^ +||mjhjofacejzxi.space^ +||mjhoifgdu.com^ +||mjiillaizjckm.website^ +||mjjcwatsciuns.online^ +||mjkbgvtdgbscs.site^ +||mjkvxpeychtfw.website^ +||mjlazcvfixyzn.space^ +||mjlgml5fqloibq.cfd^ +||mjljqbyepiucu.website^ +||mjlnomeopcwql.website^ +||mjriazemzybdg.online^ +||mjtpwtxclfnkt.site^ +||mjtrkygeqmghm.store^ +||mjtzbkdmpbayx.online^ +||mjvvklsjsdddh.space^ +||mjwcsqcajfwhi.online^ +||mjxrcnuntghni.space^ +||mjymhibmdwqlk.online^ +||mjyoryuw.com^ +||mkbgzaxkwyilk.online^ +||mkcmuoujzgsxv.online^ +||mkdxkxsrfpacm.online^ +||mkehaniyybtru.online^ +||mkekzahca.com^ +||mkfbgiwbkaslj.online^ +||mkfhaqmf.com^ +||mkgbfykqrmwti.site^ +||mkgdttyedxdjx.space^ +||mkheimtslhtge.online^ +||mkhoj.com^ +||mkingffpvupjd.space^ +||mkixweswi.in^ +||mkjjilqjetmdf.space^ +||mkjsqrpmxqdf.com^ +||mkjuynhpyzwiv.space^ +||mkkgfurrg.com^ +||mklygiferedme.site^ +||mkodhnvnhpmlw.online^ +||mkodvaliaehef.space^ +||mkounjuehhkhn.store^ +||mkpjchfevxpud.website^ +||mkronwjptnjrh.site^ +||mkrplsblistuf.website^ +||mkrygmdgxfkzy.online^ +||mks98.com^ +||mksjdsaxedndq.website^ +||mksybezxzkrty.online^ +||mkyafpcctqmyi.website^ +||mkybbjaracrvh.online^ +||mkyebumhdrhsg.store^ +||mkyxrljdjoawi.site^ +||ml314.com^ +||mladedda.net^ +||mlatrmae.net^ +||mlb8ys4v.xyz^ +||mlbqkzrsjsyny.space^ +||mlcvibxhsegss.online^ +||mlcwydddevumu.space^ +||mlczxpuognpxe.store^ +||mlfyllnkqsizp.website^ +||mlhqceja.com^ +||mlifyigbpoxxm.top^ +||mlkfloltdjhfh.site^ +||mlnadvertising.com^ +||mlnbsdowzejzz.website^ +||mlpsscpwmq.com^ +||mlpstxhfndbzv.site^ +||mlqcixbbgdwij.online^ +||mlrhqstznhemx.site^ +||mlrohhfgxhuil.site^ +||mlsys.xyz^ +||mltdiyzprltqk.website^ +||mltrapzhhfoir.space^ +||mlu2pcm3i6i5qo.cfd^ +||mlwmhwp72lkut2nv57wjov4i6jq.cfd^ +||mlxfriggaimmixes.cyou^ +||mlxniwjfsxefz.site^ +||mlxttftvd.com^ +||mlzcakscicnqn.website^ +||mm-cgnews.com^ +||mm-syringe.com^ +||mmadsgadget.com^ +||mmbwpzthsmbul.online^ +||mmchkbriryqrl.space^ +||mmctsvc.com^ +||mmdcokadaklfg.website^ +||mmeagerlystaff.com^ +||mmeftixydbxworh.com^ +||mmentorapp.com^ +||mmfykwayhgftt.space^ +||mmg4xmtflp1fce.rest^ +||mmgzxnkwgjpnx.space^ +||mmihucdry.in^ +||mmismm.com^ +||mmjpvdrhgjfyj.space^ +||mmkhhxfkjkcgt.online^ +||mmm5l.com^ +||mmmdn.net^ +||mmmubvcsmkjcz.online^ +||mmondi.com^ +||mmopzfxoouggx.site^ +||mmotraffic.com^ +||mmpecnkesjkuq.site^ +||mmphmzuckduyf.store^ +||mmsvnwwhayokq.space^ +||mmtgythuozksx.online^ +||mmvideocdn.com^ +||mn1nm.com^ +||mn230126pb.com^ +||mn88fy5z1k6nce4.cfd^ +||mnamofclltuuo.com^ +||mnanrpzdpbphb.site^ +||mnaspm.com^ +||mnbgbnrdqihyq.site^ +||mnbvjhg.com^ +||mncvjhg.com^ +||mndlvr.com^ +||mndsrv.com^ +||mndvjhg.com^ +||mndx1.com^ +||mnetads.com^ +||mnevjhg.com^ +||mng-ads.com^ +||mnhgdifwfxvzt.website^ +||mnhjk.com^ +||mnhjkl.com^ +||mnhmqrdgprcjpy.com^ +||mnlgcsbncodnw.online^ +||mnmdlcplekvvm.space^ +||mnmsvtqnvtbbf.online^ +||mnpuxygfpkvey.online^ +||mnpxmcrlmvdok.website^ +||mnqcpxjbfaaep.space^ +||mnqnrwevsegbpga.com^ +||mnqojzussbscy.website^ +||mnrdqnowjoajc.store^ +||mnshuwlcupdid.space^ +||mntliyrfkixsg.site^ +||mnttmnonaroop.online^ +||mntzr11.net^ +||mntzrlt.net^ +||mnwgdkdarquqt.site^ +||mnwxualktintr.website^ +||mnxaitgszttui.website^ +||mnxtwmdclreco.space^ +||mnykevwrezdpg.site^ +||mo3i5n46.de^ +||mo8qpxmq67x78wczzc65458g76v4jh.rest^ +||moaningfoe.com^ +||moartraffic.com^ +||moastef.qpon^ +||moatads.com^ +||moaxsgkqkivml.site^ +||mob1ledev1ces.com^ +||mobagent.com^ +||mobicow.com^ +||mobifobi.com^ +||mobileoffers-dld-download.com^ +||mobilessequinsonicolo.cfd^ +||mobiletracking.ru^ +||mobipromote.com^ +||mobiright.com^ +||mobiyield.com^ +||mobreach.com^ +||mobshark.net^ +||mobsmenfauns.cyou^ +||mobtyb.com^ +||mocean.mobi^ +||mochasrouping.cyou^ +||mochuditrothed.com^ +||mockdealzone.com^ +||mockerumist.cfd^ +||mockingphoticgritter.cyou^ +||mocluvrxsluqj.space^ +||mocqmhwjcouzb.space^ +||mocuvmnjp1p83l2g9lgvu1qcghg3ibrg.cfd^ +||modecleaning.com^ +||modelingdoableinsure.com^ +||modelshortestrate.com^ +||modem2dynamics.net^ +||modents-diance.com^ +||moderatedead.com^ +||modern-crew.com^ +||modern980.com^ +||modernehomage.qpon^ +||modernjingleshoes.com^ +||modest-significance.com^ +||modestriver.com^ +||modeswinfree.cyou^ +||modificationdesignate.com^ +||modificationdispatch.com^ +||modifiedfloatvest.com^ +||modoro360.com^ +||modredrenter.cyou^ +||modroamjaderdpj.com^ +||modularskeanes.cyou^ +||module6666.com^ +||modulecooper.com^ +||modulefetchblink.com^ +||modulepush.com^ +||moebledammed.cyou^ +||moegryuzufczg.space^ +||mof78ole44mm85fn.cfd^ +||moffhalberd.cyou^ +||moghulnash.com^ +||mogointeractive.com^ +||moharcronet.com^ +||mohardinomys.cyou^ +||mohdzwdqjdfvn.online^ +||mohicangutting.cyou^ +||moidoregrasser.qpon^ +||moiernonpaid.com^ +||moiestibidine.shop^ +||moimczcuqzkxc.website^ +||moirtutinfreity.qpon^ +||moistenmanoc.com^ +||moisturelibellous.com^ +||moistureretrievalnorm.com^ +||moistword.com^ +||mojinchuanqi.com^ +||mojoaffiliates.com^ +||mojykkiyazken.website^ +||mokiehodjzotc.space^ +||molavegowferbohea.cfd^ +||molciyjhyuhhh.online^ +||molebjeivsqwq.online^ +||moleconcern.com^ +||molecularrather.com^ +||moleculebeams.com^ +||moleculeordered.com^ +||moleya.click^ +||molgeminow.shop^ +||mollugosubsign.cyou^ +||molochhakimkerfed.cyou^ +||molokerganefsbeefs.cfd^ +||molpeviolineactu.qpon^ +||molpeweightstrode.cyou^ +||molteruvver.cfd^ +||molttenglobins.casa^ +||molybalarao.qpon^ +||molypsigry.pro^ +||momentarilyhist.com^ +||momentumperhapsvine.com^ +||momijoy.ru^ +||mommydignified.com^ +||mommyfollower.com^ +||momnawumdwxez.site^ +||momotrk.com^ +||momrollback.com^ +||momusesconrail.cyou^ +||monadplug.com^ +||monarchycurrencyinjury.com^ +||monarchygrumpy.com^ +||monardapretend.shop^ +||monasteryabolishment.com^ +||monastydru.org^ +||monaxendymal.qpon^ +||moncatfgtgdul.website^ +||mondayrecalled.com^ +||moneey.christmas^ +||moneralsramana.shop^ +||monetag.com^ +||monetarysportystamp.com^ +||monetizer101.com^ +||moneymakercdn.com^ +||mongrelonsetstray.com^ +||monhax.com^ +||moninas.store^ +||monitoringoutsettings.net^ +||monkeyarmiesdisturbing.com^ +||monkeybroker.net^ +||monkeygerman.com^ +||monkeyhundredsarmed.com^ +||monkeysloveyou.com^ +||monkishkecked.com^ +||monkismspanish.cyou^ +||monkismstomp.cyou^ +||monkmanagementtuesday.com^ +||monksbiduous.shop^ +||monnyfooling.cfd^ +||mononymemeline.cfd^ +||monopolicycre.org^ +||monorailnailtributary.com^ +||monoticmay.qpon^ +||monsoonlassi.com^ +||monsterofnews.com^ +||monstroustouchy.com^ +||monterapraham.qpon^ +||monthdisembroildisembroilhenrietta.com^ +||monthsexpressive.com^ +||monthspathsmug.com^ +||montkpl.top^ +||montkyodo.top^ +||montleymontleyagentfeud.com^ +||montleymontleyawhile.com^ +||montlusa.top^ +||montnotimex.top^ +||montpdp.top^ +||montytipper.cfd^ +||monu.delivery^ +||monumental-equipment.com^ +||monumentsmaterialeasel.com^ +||monxserver.com^ +||mooddivided.com^ +||moodeign.cyou^ +||moodytrustworthy.com^ +||moodyyobs.shop^ +||moogratkzvmwt.online^ +||mookie1.com^ +||moolveericed.com^ +||moonads.net^ +||moondoghistrio.shop^ +||moonicorn.network^ +||moonoafy.net^ +||moonpollution.com^ +||moonrocketaffiliates.com^ +||moonsifyonder.cyou^ +||moontuftboy.com^ +||moornseelily.shop^ +||moorupviremia.cyou^ +||mootermedia.com^ +||mootwombsteeple.com^ +||mopedisods.com^ +||mopnimbly.qpon^ +||mopnnetjyvlul.space^ +||mopseysamen.shop^ +||mopy.cloud^ +||moqivsgwxyoqc.space^ +||moralealanyl.cfd^ +||moralersubedit.cyou^ +||morallyfitful.com^ +||moraysremass.cfd^ +||moraythurt.shop^ +||morbifyruth.shop^ +||morbosesycones.cfd^ +||morchatayrascolds.cfd^ +||mordustuller.shop^ +||moregamers.com^ +||morestamping.com^ +||morgueevaluation.com^ +||morguetribute.com^ +||mormalslifter.cyou^ +||morningstraws.com^ +||moronelunular.cfd^ +||moroneswept.cyou^ +||morordermal.com^ +||morphosskiddyired.cfd^ +||morpiondiomate.cfd^ +||mortalsringman.qpon^ +||mortifiedassociation.pro^ +||mortifiedcourse.com^ +||mortifiedpace.com^ +||mortimeracquire.com^ +||mortimersmiles.com^ +||mortypush.com^ +||morulasbopsoxhide.cyou^ +||moscmzvpxnjjq.website^ +||moseshecticalodial.qpon^ +||mosqueworking.com^ +||mosrtaek.net^ +||mossdrawing.com^ +||mossedposting.cfd^ +||mossfulbungosboled.cfd^ +||mosspf.com^ +||mostauthor.com^ +||mostcolonizetoilet.com^ +||mostcompared.com^ +||mostlyfranchiseinflict.com^ +||mosulgreyer.cyou^ +||mosved.com^ +||motelmute.com^ +||motherconvene.com^ +||motherdandelionpert.com^ +||motherlyglad.com^ +||motherlynative.com^ +||motifmunsee.cyou^ +||motionless-initiative.pro^ +||motionlessarmsvanished.com^ +||motionlessscholarsmarried.com^ +||motionspots.com^ +||motivationunwisemanifest.com^ +||motiveimbeselhoti.cyou^ +||motiveinsulationflamboyant.com^ +||motivicepoptic.cfd^ +||motivicpernisvacant.cfd^ +||motleyimproviseink.com^ +||motleyplaster.com^ +||motor17.net^ +||motoredlaw.cyou^ +||motorfromservices.net^ +||motorshook.com^ +||motorsnag.com^ +||motorstroke.com^ +||motortape.com^ +||mottglop.cyou^ +||mouledevests.cyou^ +||moulinsquidbewend.cfd^ +||moultscynips.shop^ +||moulycambersenrobe.cyou^ +||moumaiphuch.net^ +||moundconclusive.com^ +||mountainsubmerge.com^ +||mountedblueberrytall.com^ +||mounterwhyfor.cfd^ +||mournenterprise.com^ +||mouseabed.com^ +||mouseyplunder.cyou^ +||moustachemailboxdesirable.com^ +||moustacheoverloadwar.com^ +||mov43zcm93zim84ul.cfd^ +||movad.de^ +||movad.net^ +||movcpm.com^ +||movementshereafter.com^ +||movependulous.com^ +||movesickly.com^ +||moveyouforward.co^ +||movfull.com^ +||movie-pass.club^ +||moviead55.ru^ +||movieexhibit.com^ +||moviesatm.com^ +||moviesprofit.com^ +||mowayazmagacp.space^ +||mowcoordinateegypt.com^ +||mowgloriousdeem.com^ +||mowlandaequorsheals.cfd^ +||moxhqysntmgkv.store^ +||mozgvya.com^ +||mozoo.com^ +||mp3pro.xyz^ +||mpangwemantel.cfd^ +||mpanythathaveresultet.info^ +||mpcduaxujgpkxt.com^ +||mpcsbtbipqzfa.space^ +||mpdkfhyvpvttt.site^ +||mpebncqjoepwq.space^ +||mpeowvqnbeoah.online^ +||mpferzoapbajb.online^ +||mpgeikkqoyyha.site^ +||mpglthexftdcz.space^ +||mphhnxzquuyij.store^ +||mphsumiyhfelp.website^ +||mpibnoghampmhdl.com^ +||mpipnopvjuuee.space^ +||mpjezkqsftand.online^ +||mpjhcyxaczwoh.space^ +||mpk01.com^ +||mpkcabinnyaab.site^ +||mpkfjptigpown.site^ +||mplayeranyd.info^ +||mpmlabizlyewq.website^ +||mpmqzkienrxkm.website^ +||mpmyghhdwswio.site^ +||mpniplgzpqmlx.website^ +||mpnjigsicbtas.site^ +||mpnkuwbbdqcvt.online^ +||mpnoyjbqtyfht.love^ +||mpnrs.com^ +||mpocadpbnevwa.site^ +||mppiorwmiggdo.space^ +||mpqemzwqwsfhg.online^ +||mprsxxhbdhewe.online^ +||mprxyititjxbb.online^ +||mpsfwrurozogw.space^ +||mpsuadv.ru^ +||mpsxqpeqnfjck.site^ +||mptentry.com^ +||mptgate.com^ +||mptkltomzlexc.site^ +||mpu6mn15u35xeeif.rest^ +||mpuzfcjt.com^ +||mpvituper.cfd^ +||mpvmbjbalqjyc.online^ +||mpvrmvmrlqbwi.site^ +||mpvyuhdclkwjl.space^ +||mpwoowqwsdzpz.space^ +||mpwyzuy38r81te.cfd^ +||mpylymygeearg.site^ +||mpyrwiatobzzu.space^ +||mpzqirfeaqene.website^ +||mq34ftqqfzh5ohv.cfd^ +||mq7fm7llitvu7wcyrltube.cfd^ +||mqblrvvnppqxw.online^ +||mqbqdixbfzwcl.site^ +||mqbwqsvxfwzos.site^ +||mqdownload.com^ +||mqedledjjjdad.website^ +||mqimqhvpnepnt.space^ +||mqjwvqsrbhooc.website^ +||mqjzikvmdjtrb.space^ +||mqlvvcolklmoe.site^ +||mqmbokcansmbd.website^ +||mqndvpogdsocdg.com^ +||mqnwlxinqnxeg.website^ +||mqogbojmfxtpq.space^ +||mqovjhfivhxxe.website^ +||mqpaoakswhlqh.site^ +||mqpelapasqusa.rocks^ +||mqszaiyafukar.online^ +||mquoemywissvp.tech^ +||mqutibglqfjmq.website^ +||mqwdgnbntkgen.space^ +||mqxbtsawpuulc.store^ +||mqzfvlchjfiki.com^ +||mr2cnjuh34jb.com^ +||mr9rxihn18wbh4pqkkjzb6go86.cfd^ +||mraza2dosa.com^ +||mrcuqjfaneqvv.space^ +||mrdmca.com^ +||mrdmjqbjgty.com^ +||mrdxkdkoqv.com^ +||mrdzuibek.com^ +||mrebfofligkfs.site^ +||mredir.com^ +||mrflhiuulmarq.website^ +||mrgrekeroad.com^ +||mrkaiufqsytov.space^ +||mrktmtrcs.net^ +||mrlangwkahuoh.space^ +||mrlscr.com^ +||mrmnd.com^ +||mrnrsyjynzity.space^ +||mrnwvcgjbpufg.online^ +||mrojeihalqsyl.online^ +||mrpfmhwlzwqph.space^ +||mrplmfulxetas.space^ +||mrpqqtuzjnkdc.site^ +||mrqcxjbhluvew.xyz^ +||mrqy68bk48znu3gb8zt2p9wvel1m.cfd^ +||mrrbfbgoqzbvh.online^ +||mrsivqqtsnlcx.site^ +||mrtdjelutrffv.space^ +||mrtnsvr.com^ +||mruywcpkdwvzl.space^ +||mrvoudqrmyuzh.online^ +||mrycibqutoz.com^ +||mrzncayrlbjop.website^ +||ms-era-wkuptsu.work^ +||msabksliye.com^ +||msaczvwcjetyq.online^ +||msads.net^ +||msairvfkyimyh.online^ +||msbnmxmbjgchc.space^ +||mscoldnesfspu.org^ +||msdoj.com^ +||msdsabmyd.com^ +||msdtqofattbqv.website^ +||msehuipsxmudk.store^ +||msgkxtqtodoji.rocks^ +||msgose.com^ +||msgpbwbfradny.website^ +||msgyciiekssnb.space^ +||mshago.com^ +||msjdlpjdyorlv.store^ +||msjyzcuvitsht.site^ +||mskdipevntnhj.online^ +||mslhvnakjrwgl.store^ +||mslimofdbkqsr.space^ +||msnenkmvzkacs.site^ +||msnfcixxunwrh.site^ +||mspbgqloewpmm.space^ +||msqwborynxnqd.online^ +||msrbojniwlloa.online^ +||msrvt.net^ +||mssuzyhqlqjwj.site^ +||mstdsmvnfdqth.space^ +||msvdmrahbkgwb.site^ +||msxmzbzmugbfm.store^ +||msxxcxrktbrdn.site^ +||msyubxbsvyelz.online^ +||mszbwywsbdgmm.space^ +||mszddprapuziw.vip^ +||mszvexqqyxrgc.site^ +||mt1vw5ie.xyz^ +||mt8kj35uxjq8o4zlgy.cfd^ +||mtaeeslwsfxjw.club^ +||mtburn.com^ +||mtdatingle.qpon^ +||mtddzanzcserh.space^ +||mtdmvmzxctwtk.site^ +||mtdutavlkpzzz.site^ +||mtfl8ug783z8jl.cfd^ +||mthcplolzrszh.online^ +||mtiermutic.shop^ +||mtjglumdezujo.website^ +||mtklngjjpzpwq.space^ +||mtnubxvkutteu.website^ +||mtnukovxnnwjc.website^ +||mtowxcwnvhrnr.store^ +||mtoxbwtcklqlx.website^ +||mtscxmuhtzkui.site^ +||mttfstnlcnrwv.online^ +||mttkrmejmzbpu.space^ +||mtuyddahzbvcr.online^ +||mtwataveihajz.space^ +||mtx3m2ukvpiv68.cfd^ +||mtxjnuslfrkgs.website^ +||mtxuhmtkyqpte.site^ +||mtypitea.net^ +||mtyxmamrsjxyr.space^ +||mu5bfngkp9lwjtnxyvirk5.cfd^ +||muapuxxyabwtfo.com^ +||muckingcrochsien.qpon^ +||mucoidbaniwa.cyou^ +||mucoidreflee.qpon^ +||mucosaclicks.cyou^ +||mucusesburgoutaeacus.cyou^ +||mucusescrudle.qpon^ +||muddy-distance.com^ +||muddy-match.com^ +||muddyclassic.com^ +||muddyjunior.pro^ +||mudflowstasesdiam.cyou^ +||mudhookgaylies.shop^ +||mudlessalee.shop^ +||mudobtnarda.com^ +||mudrockjillsfiles.qpon^ +||mudwmhaesljqz.site^ +||muefgogqkckcj.site^ +||muejigjejszbp.online^ +||muemv8rubl52jn.cfd^ +||muermomogo.cyou^ +||muesliyoudith.cyou^ +||muffinfeudalactually.com^ +||muffinsum.com^ +||mufflecosingshaktis.cfd^ +||muffledmy.com^ +||mufflelengthen.com^ +||mufpamrilrdfr.site^ +||mufrjyufslkcp.space^ +||muftilooms.qpon^ +||muggedregent.com^ +||mugilreshoes.cfd^ +||mugpothop.com^ +||mugvqlryqdtcq.online^ +||muhjwmynzkfns.site^ +||muigejwkogwuxb.com^ +||mujhetfonkjnt.website^ +||mujnvzqpnzxet.site^ +||mujwqivmsqpzf.site^ +||mukevdrs.com^ +||mukrirumpy.cyou^ +||mulchimbiber.com^ +||mulesto.com^ +||muleterritorywitchcraft.com^ +||mullockbaresma.cfd^ +||multaniaspredofiot.cyou^ +||multicslampic.shop^ +||multipledrawers.com^ +||multiplewhenceingredient.com^ +||multirackaffability.com^ +||multisetup.pro^ +||multitrk.com^ +||multitudefahrenheitcommiserate.com^ +||multiwall-ads.shop^ +||multstorage.com^ +||mulveldropvie.cfd^ +||mummieddruid.cyou^ +||mummifiedpatienceunknowing.com^ +||mummifycyclops.cfd^ +||mumsysatsumarazzly.cfd^ +||muncherrepipe.qpon^ +||mundlaquais.cfd^ +||mundleknickerhoyman.qpon^ +||mungoprowess.com^ +||munilf.com^ +||munkwdjtgnckp.online^ +||munnionassmanabrased.cyou^ +||muntingweens.qpon^ +||mupicuxmrmpvh.online^ +||muqjqnbequqbp.online^ +||murageoctylpewdom.cyou^ +||muraledyucks.com^ +||muraleyeballluncheon.com^ +||murallyhuashi.casa^ +||murderassuredness.com^ +||muredgaypoo.cyou^ +||murexidunivied.com^ +||murexiduploom.shop^ +||muridaeevans.qpon^ +||murinesghuz.cfd^ +||murinespercalespright.qpon^ +||murkybrashly.com^ +||murkymouse.online^ +||murkyside.pro^ +||murlkkvdognpy.website^ +||murrayownness.cfd^ +||murreychanty.shop^ +||murtherbuddersmeseled.cfd^ +||murvjwucldspc.space^ +||musangyacata.cyou^ +||muscidsbandstitres.cfd^ +||muscowwhammlegundeck.cfd^ +||musersrands.cfd^ +||muserynotaealburely.cyou^ +||museumbodyguardappear.com^ +||museumoff.com^ +||musfnoaykzyab.site^ +||musgdweqsamdg.online^ +||mushhurried.com^ +||mushlaregrass.com^ +||mushroomallocationfooting.com^ +||mushroomreclaimschnapps.com^ +||mushyyoung.com^ +||musicalsupposed.com^ +||musicarbitrary.com^ +||musicianfinnish.com^ +||musiciansinceredumpling.com^ +||musicnote.info^ +||muskegskilimneeders.cfd^ +||muskishedacity.shop^ +||musoparhnhgye.space^ +||musselmerchant.com^ +||mussingsucrasetreron.cfd^ +||mustangswim.cfd^ +||musterscoyedroomed.qpon^ +||mustilyelsesgarget.qpon^ +||musty-salt.pro^ +||mustyacreunicorn.com^ +||mustymix.com^ +||mutagebarytaabush.qpon^ +||mutatisflotsen.cyou^ +||mutatisticals.qpon^ +||mutatiswejackulmo.cfd^ +||mutedpoetry.com^ +||mutenessdollyheadlong.com^ +||mutenessquiz.com^ +||muteseasongoyish.cyou^ +||muthwhcjuwela.store^ +||mutinedgunster.com^ +||mutinousburyquestionable.com^ +||mutterschokervivary.qpon^ +||muuxrbdsheuhg.space^ +||muwsvxzarctpj.space^ +||muxieboupdbbg.space^ +||muxzipacympze.website^ +||muzarabeponym.website^ +||muzikguide.com^ +||muzzledberglet.shop^ +||muzzledescend.com^ +||mvasuhdpfivqh.online^ +||mvbcsloqebjfv.site^ +||mvdnfedblekcc.store^ +||mvfmsotjykacv.online^ +||mvftmypmzprjt.space^ +||mvghkxtwawgpe.website^ +||mvglxjpardncb.site^ +||mvgqxktkvxyjn.website^ +||mvhlcshfdhsql.website^ +||mvjigogkqlgxo.icu^ +||mvjnibdoiqd.com^ +||mvnhdtqphlkmy.website^ +||mvovblzjltyec.online^ +||mvptqo39pgz5369z49ve28k.cfd^ +||mvquamxy.com^ +||mvrptblhcuehu.website^ +||mvstmjowjtxij.site^ +||mvtureen.shop^ +||mvugvtzbonlik.website^ +||mvuzjyfunvkzw.store^ +||mvvlsvwtgoxlj.space^ +||mvvlwyftnouio.space^ +||mvxrsxfzhccyb.space^ +||mvxyznqkzzeiq.space^ +||mvyacmrxixxrh.space^ +||mvybmqfdkezml.site^ +||mvygzjxwwzcvd.online^ +||mwammijum.in^ +||mwaqupjdcvkxq.store^ +||mwbamtruiyvrt.site^ +||mwbhwpawseqch.website^ +||mwbzdzmuviwtf.website^ +||mweujqszechsw.site^ +||mwgzlyztorheu.website^ +||mwhjctrhknka.com^ +||mwhjmncborxmg.website^ +||mwiynfejuiwyv.space^ +||mwjfiwyvo.com^ +||mwjnirzamspps.space^ +||mwllnzblxxylc.space^ +||mwmyefeqpkpkvm.com^ +||mwowoshszibzo.space^ +||mwqxkshueflnl.site^ +||mwrgi.com^ +||mwseohimnnfcx.store^ +||mwtnddspzneka.site^ +||mwtwzzeyvnwdx.site^ +||mwuzj1o7m731lr.cfd^ +||mwvpjvvnovuqb.website^ +||mwxxgdhvhdrgt.space^ +||mwyxaylcphacl.site^ +||mwztyflmatxei.site^ +||mxbcibnxexjrj.space^ +||mxbrbviqikqaw.com^ +||mxdcdefgbyyeb.website^ +||mxfglajkqrwsv.online^ +||mxfuwvrxudpkr.website^ +||mxgjuoycnxfgn.website^ +||mxhplnujqwmoj.website^ +||mxhybnnilsini.site^ +||mxizjfeqmnmzc.site^ +||mxjitbllqcxli.store^ +||mxjvsovvqnwew.online^ +||mxjxinpidvsih.site^ +||mxk7gtm9zm2g5thp.cfd^ +||mxkjgvrog.com^ +||mxkpvqlrmfmww.com^ +||mxlun.com^ +||mxnlbdnvrkwht.website^ +||mxoiuuceaesfg.space^ +||mxpqlbstyperk.site^ +||mxptint.net^ +||mxq8k9il7pxkrjrqvzcl.rest^ +||mxqamdbyygzvg.online^ +||mxqvygpfsmtfk.space^ +||mxrgzkyrwigqb.online^ +||mxryddheuisve.store^ +||mxwiqgbnb.com^ +||mxxektnycqzwi.website^ +||mxxyyultzqkuf.website^ +||mxyaawbtgxomq.online^ +||mxzvgxtcjlrmg.online^ +||mxzxdugzqayax.site^ +||my-pu.sh^ +||my1elitclub.com^ +||my1mfqmej21ml69yre6bl.rest^ +||my96eg8fhwnjgchp1zl3qkb476l1.cfd^ +||myaceacringedpommery.qpon^ +||myadcash.com^ +||myafriend.com^ +||myariankakatoe.cfd^ +||myaudioads.com^ +||mybestcpm.com^ +||mybetterdatings.com^ +||mybgbqizwvmau.store^ +||mybmrtrg.com^ +||mycamlover.com^ +||mycasinoaccounts.com^ +||myccmgypsjhgr.com^ +||mycelesterno.com^ +||mycoseschemer.qpon^ +||mydate-online.com^ +||mydatingstheladys-club.com^ +||mydatingswomanonlines.com^ +||mydatinguniverse.com^ +||mydeorzwpxdgf.online^ +||mydudpwdtyimy.website^ +||mydzcajckvmzp.website^ +||myeasetrack.com^ +||myfastcdn.com^ +||myfwsluuedylh.online^ +||mygalehagweedaliquot.qpon^ +||mygjunfjozcxz.online^ +||myiasesswords.qpon^ +||myijgzvgluvai.site^ +||myiosiskutch.shop^ +||mykydlznkanfk.online^ +||mylot.com^ +||mymbfwwvaltwp.site^ +||mymcxxguwlzjc.website^ +||mymexpsaqjzfj.site^ +||mynealpttfyoq.space^ +||mynutraresearch.com^ +||myocdiachondre.qpon^ +||myogenunroomy.cfd^ +||myonemevendors.qpon^ +||myositentrous.com^ +||myotonyfire.shop^ +||myowvxxsjkwvp.space^ +||mypdcitiidimv.space^ +||myperfect2give.com^ +||mypopads.com^ +||myppiq28w1tep2ph7t.cfd^ +||myqcapxwxniof.online^ +||myqcvnavmpqes.site^ +||myroledance.com^ +||myrrhbehorn.com^ +||myrtalcaliver.qpon^ +||myrtalptinus.shop^ +||myrtthirstsolivile.cyou^ +||myselfmootingslodder.cfd^ +||mysianessayer.cfd^ +||mysmbkoapuust.website^ +||mysterious-emotion.com^ +||mysterysaunaawkward.com^ +||mysticomen.com^ +||mysweet-flirts-hubs.com^ +||mytdsnet.com^ +||myteamdev.com^ +||mythad.com^ +||mythings.com^ +||mythoiunfur.cyou^ +||mythskalkvissaronic.cfd^ +||mytsyoisjverr.space^ +||myvpistasrwah.one^ +||myvppmgositlb.website^ +||mywatchtones.com^ +||mywondertrip.com^ +||mywovcjadrtcb.online^ +||myyivaftgefsq.site^ +||myyuexte7989mwq.cfd^ +||myztaimlepqtz.site^ +||myztbkzqfbodm.online^ +||myzwceogchcvo.site^ +||mz8h4gohvc8iouk.cfd^ +||mzaecupkjfnxx.online^ +||mzafanowhdcpc.space^ +||mzcgpmpygdoer.site^ +||mzdhejfvuankc.global^ +||mzgcaatryecyd.website^ +||mzhdcgwoqgnpc.online^ +||mzidndvsmszfx.space^ +||mzitrqkzyn57tcr.cfd^ +||mzixjhdjyzytn.online^ +||mzjojzwbrqdqv.site^ +||mzkedbvhl.com^ +||mzmvcdhvehplz.site^ +||mznkhtumfgify.site^ +||mzol7lbm.com^ +||mzrawmzkdtbvd.online^ +||mzsantsemsgll.website^ +||mztecqbedrxpi.site^ +||mztqypcygmeii.online^ +||mzx6ufqm3rxj5ntviwgp165w8p8t7eh45zl.cfd^ +||mzzzpvllsjxpy.online^ +||n0299.com^ +||n0400.com^ +||n0gge40o.de^ +||n0v1cdn.com^ +||n2major.com^ +||n2nc9u5l.xyz^ +||n2x5bif6v4rul59ez.cfd^ +||n373jh2g9qrzfnp6qhwlg.cfd^ +||n49yqeym6ctolxoj3u32.cfd^ +||n4m5x60.com^ +||n4sredirect.com^ +||n61xupfken4ucmcu.rest^ +||n6wxm.com^ +||n7q3iwn2pz2bjk96hokb6rjwgfwq.cfd^ +||n7x9m2llqnpnlzn.rest^ +||n8elvfbwjkf53j7iq53fkfv3nlnqwr1r5w.cfd^ +||n91hg.com^ +||n9ccix88eq6qw1t63kq8xpv7j2ip.cfd^ +||n9s74npl.de^ +||n9zuy4k9r3v2ie23y9flrbe.cfd^ +||naacixmdxcfba.store^ +||nababroadbirch.com^ +||nabbr.com^ +||nabjewthoknxr.space^ +||nableroberto.com^ +||nabluscrack.cfd^ +||nabuasbobiype.site^ +||nachodusking.com^ +||nachophobiaunengaged.com^ +||nacredbops.qpon^ +||nadajotum.com^ +||nadese.xyz^ +||nads.io^ +||naedyudpxzmgs.online^ +||naenidktmcjne.store^ +||nagaikagalcha.cyou^ +||nagaikaslojd.com^ +||naggingdocumentationgrow.com^ +||nagglyrindy.cyou^ +||nagingfinns.shop^ +||nagmaalslapdab.com^ +||nagolympics.com^ +||nagrande.com^ +||nagualdoorway.com^ +||nahmqkwxddjwh.online^ +||nahuatlcodens.com^ +||nailadversary.com^ +||nairapp.com^ +||nairbolding.cyou^ +||naive-husband.pro^ +||naivepot.com^ +||naivewidespreadbody.com^ +||najkojkkxotes.site^ +||najmqkso.com^ +||nakdboeukjriq.space^ +||nakdtuqfqomgj.website^ +||nakedaccused.com^ +||nakooarsenal.com^ +||nakqsplmrmcig.website^ +||nakrovixeenac.site^ +||nameads.com^ +||namel.net^ +||namespaceto234.net^ +||namgkrjvqxfil.space^ +||namol.xyz^ +||nan0cns.com^ +||nan46ysangt28eec.com^ +||nandigibbose.cyou^ +||nanesbewail.com^ +||nanesnewshenfifish.cyou^ +||nangacouldntsowback.cfd^ +||nanhesitationhireling.com^ +||nanismotic.cfd^ +||nankinprigssavarin.cfd^ +||nannyirrationalacquainted.com^ +||nanybqajrguqo.com^ +||naocpuzajwlgt.space^ +||naoitmveojjwem.com^ +||naompjamdbsum.site^ +||naoofdiujjiec.space^ +||naos.ink^ +||naoscygnetsoverput.cfd^ +||nap5k.com^ +||napeinigobeamage.cyou^ +||nappekksiwlrl.store^ +||nappiesirrupt.cfd^ +||nappyonsetstiffness.com^ +||narenrosrow.com^ +||narkalignevil.com^ +||narkingammonal.qpon^ +||narksjiffy.cyou^ +||narlheuqrbgcf.space^ +||narrativederidebrainless.com^ +||narrowveneeringsavoury.com^ +||narrowyherne.cyou^ +||nasalfeudalanxious.com^ +||nascanascaredgoodbys.cfd^ +||nasikfvzxdpda.website^ +||naskhizeroingmeissa.qpon^ +||nasocpjp.in^ +||nasodresser.com^ +||nastikasitual.cfd^ +||nastylayer.com^ +||nasutearawa.com^ +||natalouktabout.org^ +||natalschagoma.qpon^ +||natdisplacehereafter.com^ +||nathnhfjtdlum.space^ +||naticaguly.cfd^ +||nationalitypovertyconverted.com^ +||nationsboxoffice.com^ +||nativclick.com^ +||native-adserver.com^ +||nativeadmatch.com^ +||nativeadsfeed.com^ +||nativegram.com^ +||nativesprivately.com^ +||nativessupervisor.com^ +||nativevegetablesentered.com^ +||natprb.ru^ +||natqzyaatmnga.store^ +||natregs.com^ +||natsdk.com^ +||naturaredare.qpon^ +||nature-land1.site^ +||nature-land2.site^ +||naucrarsoother.cyou^ +||naughty-black.com^ +||naughty-industry.pro^ +||naughtyillness.cfd^ +||naughtytaringpekin.qpon^ +||naupsithizeekee.com^ +||naurtypees.shop^ +||nauseousemerge.com^ +||nauseousrocketjosephine.com^ +||nauticalgelatine.com^ +||nauticalhair.com^ +||nauticaloffice.com^ +||nauticalpingelephant.com^ +||nauyyaqjihzjz.site^ +||navaidaosmic.top^ +||navajosaturn.qpon^ +||navallyazan.cyou^ +||navalrememberedcarve.com^ +||navigatingnautical.xyz^ +||navigodwardcalices.cyou^ +||navtlkdihvagi.online^ +||navwmaakbo.com^ +||navxhefspincz.space^ +||navyhalfclinical.com^ +||navyrecentuproot.com^ +||nawcrjvzlsbmb.space^ +||nawljtngvxrgc.space^ +||nawpush.com^ +||naxjnymlyqqqw.website^ +||nayarbillian.cyou^ +||naznfshwgtkyk.space^ +||nbadgnaqqqrxx.website^ +||nbbpkflruqfsn.space^ +||nbbpynkclbynx.online^ +||nbbtcqoejxhgd.online^ +||nbdtqugnoekbw.online^ +||nbdysfxadsfji.website^ +||nbekirowekzaq.space^ +||nbfhxoldzzydm.space^ +||nbgafkotmkpxu.website^ +||nbgderive.qpon^ +||nbgpbzkllsdwk.space^ +||nbhohrknitzvk.online^ +||nbjiwgsm.xyz^ +||nbjlvyeegheug.site^ +||nbkpigxextkjn.website^ +||nblgi3h2vp2i34fou39w4hpn9pk.cfd^ +||nbmramf.de^ +||nbmzifqviafbn.site^ +||nboclympics.com^ +||nbqeoezniykhm.space^ +||nbtfiehtgxhvv.site^ +||nbuipljbiahdp.website^ +||nbvcsyjsoojpd.online^ +||nbvlkenmkihrl.website^ +||nbvwuizhmmgtb.online^ +||nbwsvoludimjl.online^ +||nbxcijnlqfrbd.website^ +||nbyzrdjsondlh.space^ +||ncaewlef.com^ +||ncagwiubkrzij.space^ +||ncajeyujvbhza.site^ +||ncb8686wbj42wz6wqnm8z23ue.cfd^ +||ncdplvdquspma.online^ +||nch85ec3uyk3r53re.cfd^ +||nchkftnswbfll.space^ +||ncieuiouesnbm.website^ +||nckyebkwqugez.website^ +||ncmeojlrybcza.online^ +||ncnqvqyekbvno.site^ +||ncqbhbltopuqq.site^ +||ncqfppkwczjal.site^ +||ncqhgmxnpywal.website^ +||ncqtxzmuffxiwk.cfd^ +||ncszswtpaguzr.online^ +||nctmwluyknbwl.website^ +||ncxrewvozzcuk.online^ +||ncyg1gpgmjm7qljzetikooq4ny9h.cfd^ +||ncz3u7cj2.com^ +||ndapbrpjctwvl.website^ +||ndbgpajoibiqf.space^ +||ndbvjngxqpvljgk.com^ +||ndcertainlywhen.com^ +||ndcuvybsahujj.online^ +||ndechbcg.com^ +||ndedjujrgcg.com^ +||ndegj3peoh.com^ +||ndenceschemica.org^ +||ndenceschemicalco.org^ +||ndfaafrrjgjei.website^ +||ndfcwgqlcjmu.com^ +||ndfgoyhuugrar.space^ +||ndfhqtezbkavl.online^ +||ndflvizhicoiu.site^ +||ndha4sding6gf.com^ +||ndhadbeensoa.org^ +||ndhvcwnczxupa.online^ +||ndkdobohmlqxw.website^ +||ndourapfeafmy.space^ +||ndprocesosfultr.org^ +||ndqpopziznuuq.space^ +||ndroip.com^ +||ndtheyeiedm.info^ +||ndtkxygpdzcdq.website^ +||ndtlhvhfeokmc.website^ +||ndtpvswwkhsi.com^ +||ndtvbcxhvmtde.site^ +||ndwsqexojpuka.online^ +||ndyerqhzszt.com^ +||ndzorzxbsmyld.website^ +||ne13bqiggect4n8u6.cfd^ +||neads.delivery^ +||neareststokergrating.com^ +||nearestworkagitation.com^ +||nearlyfunnel.com^ +||nearlynightingalebust.com^ +||nearlyoffenderimpure.com^ +||nearonbosom.com^ +||neascusaegagrispats.qpon^ +||neastrigal.cfd^ +||neat-period.com^ +||neat-price.com^ +||neatenpoiser.cfd^ +||neatensmoods.cyou^ +||neatenswreaksxviii.cfd^ +||neatmadeiraairborne.com^ +||nebjzqajpngow.space^ +||nebulasballed.cfd^ +||necessary-jury.com^ +||necjqkadyfwgf.store^ +||neckcaterer.com^ +||neckingslowly.cfd^ +||necrosepiston.cfd^ +||necsvlizaxunm.online^ +||nectsideaments.com^ +||nedflirtingnursery.com^ +||neechube.net^ +||needeevo.xyz^ +||needfullabor.com^ +||needleenergy.cyou^ +||needlescnidiansa.qpon^ +||needslyinark.cyou^ +||needyscarcasserole.com^ +||needyvarietysaucer.com^ +||neekstore.com^ +||neeldspunnyfastly.qpon^ +||neeltskoqvanu.site^ +||nefr7xo8bv1pg2u7co.cfd^ +||nefurmjnsxefq.site^ +||negationomitor.com^ +||neglectoffset.com^ +||neglectsquad.com^ +||negligpigged.cfd^ +||negocemouseeluckly.qpon^ +||negundofrenal.qpon^ +||negusplicatelinks.cyou^ +||negxkj5ca.com^ +||neighboringyellow.com^ +||neighbourlyrepress.com^ +||neighrewarn.click^ +||neilhoticapwz.space^ +||nekuxb8nnk8gtxqxn6b2rbynuy.cfd^ +||neladyhe.com^ +||nelhon.com^ +||nellads.com^ +||nellbeakerconsistency.com^ +||nelp-defender.pro^ +||nelsonbunched.qpon^ +||nelvyvlfyjksw.space^ +||nemansnlssphf.website^ +||nemeaowmeffis.online^ +||nemospontoobliged.cyou^ +||nemppa.com^ +||nenobfwtzuiuj.space^ +||nenskwmwon.com^ +||nentsyshruggl.com^ +||neoftheownouncillo.info^ +||neonsacroama.qpon^ +||neousaunce.com^ +||neowlqgaveupf.online^ +||nepalvaned.cyou^ +||nephriasebasichutia.cyou^ +||nephriasewarwolffia.cyou^ +||nepmenatretic.qpon^ +||nerangee.com^ +||nerdolac.com^ +||nereitehitting.qpon^ +||nereserv.com^ +||nerfzxkysjhjh.online^ +||neriauvnosfnvm.com^ +||nersionitsumpute.com^ +||nerveastonishingmeddle.com^ +||nervesgeneralizepicture.com^ +||nervesmomentshore.com^ +||nervessnugissues.com^ +||nervestrained.com^ +||nervesweedefeat.com^ +||nervous-tell.com^ +||nervousamount.com^ +||nervousbelievable.com^ +||nervousinevitable.com^ +||nervousnormgaze.com^ +||nervuresupslouiqa.cfd^ +||nescdblfvyogbb.com^ +||nestfulspodeprotend.cfd^ +||nestledmph.com^ +||netamenage.cfd^ +||netcatx.com^ +||netebestridbusing.cfd^ +||neterbarit.com^ +||netguard.mobi^ +||netobscenityoverdo.com^ +||netstam.com^ +||nettledlall.shop^ +||nettysmeech.qpon^ +||networking444.net^ +||networks1000.net^ +||neurismregrate.cfd^ +||never2never.com^ +||neverforgettab.com^ +||neverthelessdepression.com^ +||nevillequery.com^ +||new-incoming.email^ +||new-programmatic.com^ +||newbiquge.org^ +||newbluetrue.xyz^ +||newcomerapart.com^ +||newcomerfacultative.com^ +||newdisplayformats.com^ +||newgatemoble.com^ +||newjulads.com^ +||newlinsfuegian.com^ +||newlypriceydealing.qpon^ +||newmayads.com^ +||newmytrp.com^ +||newnewton.pw^ +||newoctads.com^ +||newosama.com^ +||newosnotadprx.space^ +||newpartnerlover.com^ +||newrotatormarch23.bid^ +||news-bfujufa.cc^ +||news-bnubiko.cc^ +||news-headlines.co^ +||news-xcasume.com^ +||news-xjixere.cc^ +||news-xrofobi.com^ +||news-xvuwabi.live^ +||news-xzomigu.cc^ +||news.jennydanny.com^ +||newsaboutsugar.com^ +||newsassistance.com^ +||newsatads.com^ +||newscadence.com^ +||newsformuse.com^ +||newsforyourmood.com^ +||newsfrompluto.com^ +||newsignites.com^ +||newsinform.net^ +||newsjonnicktweel.cfd^ +||newslikemeds.com^ +||newsmaxfeednetwork.com^ +||newspaperpolite.com^ +||newspaperprohibited.com^ +||newspapervaluessignature.com^ +||newstemptation.com^ +||newsuggest.com^ +||newsunads.com^ +||newswhose.com^ +||newsyour.net^ +||newthuads.com^ +||newton.pw^ +||newtsqwcijlti.website^ +||nexahub.co.in^ +||nexium33bv.com^ +||nexium530.com^ +||nexjzgqalrtgq.online^ +||nexkrnphsfipi.buzz^ +||next-lust.cfd^ +||next-sail.pro^ +||nextclass.pro^ +||nextmeon.com^ +||nextmillmedia.com^ +||nextpsh.top^ +||nexusbloom.xyz^ +||nexuswithwarehouses.com^ +||neylfbiplikrk.space^ +||neywckhoogxze.site^ +||neztlwbosrksr.online^ +||nezygmobha.com^ +||nf57yq1mepnm8c.cfd^ +||nfcliqjyhwatk.website^ +||nfdxprxptlubs.buzz^ +||nfexcdiuvfyuu.online^ +||nffceerhottvc.site^ +||nfhvxhefuevwh.website^ +||nfitekfooeigt.website^ +||nfliiqxnaadkx.online^ +||nfmnrvmgujczf.website^ +||nfpxrhlnxtbpx.space^ +||nfrdibffgpxoy.website^ +||nfs8nsaf.xyz^ +||nftqcoenbehqu.online^ +||nfukguubxgsk.com^ +||nfvhwnpktqmc.com^ +||nfwosdlndtra.com^ +||nfzxcsyycurrk.site^ +||ngadverts.com^ +||ngahkaqwrcemx.store^ +||ngbixvopoqccq.website^ +||ngcjqomtyvdhl.site^ +||ngdwfgdpfgawh.site^ +||ngegas.files.im^ +||ngegyhsuaylyj.site^ +||ngepfoguoouph.space^ +||ngexcelelernodyd.org^ +||ngexcelelernodyde.org^ +||ngfncpvxigzvz.website^ +||nggcgjtnqm.com^ +||nggcxminsnzss.website^ +||nghnbogvkojlk.space^ +||ngjmbezvfwwmf.website^ +||ngksmiemlxfik.website^ +||nglmedia.com^ +||nglqmotpfinwq.website^ +||ngmamfwwpqzny.site^ +||ngmdyqmrfvdzp.space^ +||ngrgnikydmsoo.space^ +||ngseriegentsf.org^ +||ngtvtaxtgzzfd.website^ +||nguxdypjbfmtb.site^ +||ngvaonunvjyrz.site^ +||ngvptqydvxpfa.website^ +||ngwdljgbshhof.site^ +||ngwgkhtdykzzz.online^ +||ngxabwgiatjdt.com^ +||ngxrirfmawbd.com^ +||ngxvojbpnjtjv.space^ +||ngy1fklz2jm9jx1.rest^ +||nhatsadwafljs.site^ +||nhcgucgrsnupg.online^ +||nhcobebu.com^ +||nhdalwapuz.com^ +||nhelzh785g5o8j.cfd^ +||nheopaobzlrqc.site^ +||nhiaoadcolahl.website^ +||nhiwyubasvwub.site^ +||nhkstivqaqwvz.store^ +||nhlhgbocwdtdy.website^ +||nhnkhosypgwvh.site^ +||nhonnlvjebaid.site^ +||nhpeceqknhczi.space^ +||nhqkijpqeguuh.store^ +||nhragmqrdofgs.space^ +||nhrnxqiiygdjc.store^ +||nhsifpdnhehar.online^ +||nhsjhbnkrhwzy.space^ +||nhspperkjwbzr.online^ +||nhsvzsdvbsfzw.space^ +||nhtkdwffnlgvl.store^ +||nhtosawxpqjxu.site^ +||nhttqyswvqgpk.rocks^ +||nhwckdbupj.com^ +||nhwlkqoodhlar.online^ +||nhzczuzvmmcfh.website^ +||nhzokhbzxbdqx.website^ +||niagarafrowsstreets.cyou^ +||niagaraswails.com^ +||nianticsillierwhelps.cfd^ +||nianticstrakedgraver.cyou^ +||niaumxovmqpur.online^ +||nibsomeemendedconant.cyou^ +||nicatethebene.info^ +||nicecartrigezip.com^ +||niceishbarytes.qpon^ +||nicelypull.com^ +||niceremployer.com^ +||nicerisle.com^ +||nichedlinks.com^ +||nichools.com^ +||nichsfhxnjvbe.online^ +||nichtkendir.com^ +||nicifouzmvksd.website^ +||nickeldefiancepriest.com^ +||nickelsligansbernice.qpon^ +||nickelstapoun.com^ +||nickessence.com^ +||nickeyperatae.cfd^ +||nicklefooty.cfd^ +||nickuntin.shop^ +||nicobarturacin.cfd^ +||nicobarwhedder.cfd^ +||nicolasrhumbaenfile.cyou^ +||nicolastiffle.cyou^ +||nicolocamalig.cyou^ +||nicyosyoxyvvw.space^ +||nidakcdk.com^ +||nidfipgitrdhj.space^ +||nidvrrbzabhtp.site^ +||niecesprivilegelimelight.com^ +||niecesweep.com^ +||niellosrebatepanctia.cfd^ +||nifepatroon.shop^ +||nifty-feature.com^ +||nigelcrammer.cfd^ +||nighedacutestfoxie.cfd^ +||nighswearily.cyou^ +||nightbesties.com^ +||nighter.club^ +||nightmarenomad.com^ +||nightmarepainful.com^ +||nightsclotheshazardous.com^ +||nigyodel.shop^ +||niimrloquvkhj.site^ +||niizcmfjrykzm.space^ +||nijanghwya.com^ +||nijesgmpfpr.com^ +||nijlqrhkarnbq.online^ +||nijpglvmuzmkl.space^ +||nijxbipzegqqm.site^ +||nikkiexxxads.com^ +||nikolaipogge.shop^ +||niktmeeqgvogw.online^ +||nilgaisquipful.qpon^ +||nilgaushardockrameous.qpon^ +||nimble-bench.com^ +||nimblecontest.com^ +||nimbleugarono.cyou^ +||nimboseminiver.qpon^ +||nimhuemark.com^ +||nimrute.com^ +||nimxbomdpgwms.site^ +||ninegarretcurse.com^ +||nineteenthasparagus.com^ +||ninetweak.com^ +||ninetyfitful.com^ +||ninetyninesec.com^ +||ninilfwodxdyj.website^ +||ninontoising.com^ +||ninthprerogativerap.com^ +||ninuptaaajrdk.space^ +||niobeanechinid.shop^ +||niobicfrizers.cyou^ +||niobitecryable.qpon^ +||niolpwvcjjfvj.website^ +||nip6mgvw1otkz6.rest^ +||nipechala.com^ +||nipholder.com^ +||nipnvemvvjleg.online^ +||nippledecorated.com^ +||nipponmall.online^ +||nipponstay.lat^ +||nippyprice.com^ +||nipxqhbthzrdi.site^ +||niqlfeh6mfbof3.cfd^ +||niqqanoywhgse.site^ +||nirybekekiemu.website^ +||niscprts.com^ +||nishars.care^ +||nisibtosnmnrx.com^ +||nitafu.click^ +||nitencymaracarammy.cyou^ +||nitridechrysinfixate.cyou^ +||nitridslah.com^ +||nitrylpotted.cyou^ +||nitsborg.cfd^ +||nitsulquj.com^ +||nittaniduli.cfd^ +||nittycorecode.cfd^ +||niujgbwstyckncx.com^ +||niwinn.com^ +||niwooghu.com^ +||nixiesopiners.shop^ +||nixingminiateunpetal.qpon^ +||nixkfmaywtugk.site^ +||niyandastoneyhexsub.qpon^ +||niyimu.xyz^ +||nizarstream.xyz^ +||njatwiklklyae.site^ +||njcgtyxmkrkqv.space^ +||njcgxydbhmckv.site^ +||njenrdgpthqep.online^ +||njgkzmkkapqjv.online^ +||njgxjzvgsrzfb.website^ +||njhinxgrdyjur.space^ +||njimwtnepehuc.website^ +||njkaptewb.com^ +||njkixvgivjaeg.online^ +||njmpqalqerpmp.space^ +||njndkusublsuvld.com^ +||njpwzgxksptql.website^ +||njqwbjbgvupfm.website^ +||njrzqlulkauez.website^ +||njsarhluoqxqo.store^ +||njtbmyyhwjaxo.online^ +||njufaubstlpar.space^ +||njujzrcqgdtkz.online^ +||njunyihalsdvb.site^ +||njvgksjrtiuqx.space^ +||njxcbzvxmmdgk.website^ +||njxrpzdwiduhs.online^ +||njzjzbpxrhxiq.online^ +||nkaczwsqxlolq.website^ +||nkagopzlfdvne.online^ +||nkbfkirbnxdbo.site^ +||nkbjxrtpvtds.com^ +||nkbnfrofocw.com^ +||nkcdtumculrow.space^ +||nkdfuveaxnmnt.space^ +||nkgcaaejykoif.space^ +||nkgmodulsssiy.online^ +||nkhgheadrrrbt.space^ +||nkjeclbpgotxd.website^ +||nkjykuobtzsgg.store^ +||nkkluupoxdlzo.online^ +||nkmsite.com^ +||nknowledconsideu.org^ +||nkpauxyuzmgmk.online^ +||nkredir.com^ +||nksbygyqqtnsn.site^ +||nksjnxsl.com^ +||nksrruchodgda.online^ +||nksyiylcu.com^ +||nktmuyapmeohz.online^ +||nkueonpkfsaiy.space^ +||nkwampojlqbic.space^ +||nkxepfgfpidji.space^ +||nkxsjgldswaqdxu.com^ +||nkyavipvkfxgo.online^ +||nkyhhjrnguuhu.site^ +||nkyzsgitgjdam.space^ +||nkzraznjstbsv.space^ +||nlagcpxrwkxiv.space^ +||nlaietuhnpndp.site^ +||nlargeconsult.org^ +||nlarqgyehwhbl.site^ +||nlbjczvymnrcw.site^ +||nlcbwxqatftpr.website^ +||nlcqnasbppptk.space^ +||nldxbvtvdsfus.com^ +||nlezowlzrllro.site^ +||nlfavdlxreqis.space^ +||nlfutnfylfgez.store^ +||nlhdswomqdoux.site^ +||nlhotovgeuglc.site^ +||nlhsmlnnnhgpv.online^ +||nlhsxrjhzdrbb.site^ +||nlisfgyqwahze.online^ +||nlklabpbcecnk.site^ +||nlkli.com^ +||nllddbvlkwgbs.online^ +||nllvrimafveet.site^ +||nllzvzafpfodg.space^ +||nlmhhgvljqktf.website^ +||nlmpgrgxcbcoo.site^ +||nlsgostuanbpy.website^ +||nlsmhyylwozop.site^ +||nluyukqnyfjfk.space^ +||nlvaebagqdnaj.website^ +||nlvkkmososyji.website^ +||nlvxwyesryreu.space^ +||nlwlf7g3mpvn27z6i6o5v.cfd^ +||nlxpsparlszfu.space^ +||nlyhovtjoknoo.site^ +||nlykgmhozbcee.online^ +||nlyvcmyicrhkv.online^ +||nlyvgznggzzmo.store^ +||nlzbkdxmvziwi.space^ +||nlzkatvdsanyn.site^ +||nmccbwospunli.site^ +||nmcdn.us^ +||nmdsxbxarvpuh.online^ +||nmeqcyza.in^ +||nmezaklu.in^ +||nmgneqqnnbtac.site^ +||nmgwoawuwbnsj.space^ +||nmhcxlyyjginl.online^ +||nmhtwujmecgzi.store^ +||nmkli.com^ +||nmlgvcevpqhex.online^ +||nmlsdfybzuqta.space^ +||nmluwlxnolamc.website^ +||nmmnejvpmuohm.space^ +||nmmntsbarkobx.website^ +||nmnuvnrarnf.com^ +||nmohwgqtxslxm.site^ +||nmrcrghsaplxeoc.com^ +||nmroutvgijplm.space^ +||nmtjuybtnyuxi.website^ +||nmukovjaiytyt.space^ +||nmunljgekpsrj.site^ +||nmwjlaywnozwj.vip^ +||nmwoefdeyfdtb.space^ +||nmynalaphswdf.space^ +||nmyxnrajkwefn.website^ +||nn125.com^ +||nnacoevirghpr.store^ +||nnblhywxxvofw.space^ +||nnbqgzimjrwen.space^ +||nncdtquddmjjb.site^ +||nncgorhtrjrjn.store^ +||nnerventualkentin.org^ +||nngdtjuftbkzb.website^ +||nnhbqqzpsyoid.online^ +||nnhfyultzrtzn.space^ +||nnivlxelqebls.website^ +||nnjizwcurchyp.online^ +||nnkkwfcnwkzud.space^ +||nnlsolccybrzf.site^ +||nnmoyx5jlbr97on2l5n74hblb.cfd^ +||nnolplszvuatu.site^ +||nnoulqmhxrskm.store^ +||nnowa.com^ +||nnpnqqkixrzaw.website^ +||nnrxxiyinizda.site^ +||nnsaahrxibbxb.online^ +||nnupmdxkvxqip.online^ +||nnvstgnnimwha.space^ +||nnyejjtckhxkp.online^ +||nnztjoistgdfv.site^ +||no2veeamggaseber.com^ +||noaaduliugvul.online^ +||noachicbawty.qpon^ +||noanceweasons.cfd^ +||noavoahevugrib.com^ +||nobblerburkes.qpon^ +||nobleaccentshell.com^ +||noblemanbestowed.com^ +||noblemangetawayeclipse.com^ +||noblemanhandicraftpot.com^ +||noblestprabhu.qpon^ +||noblyalecs.cyou^ +||noblyscopedhomered.cyou^ +||nobodymiller.com^ +||nocccxnarymvl.store^ +||nockanusxesoc.store^ +||nockedcuffy.cfd^ +||noctuaebottinewavicle.cfd^ +||noctuafueller.cfd^ +||nocturnal-convert.pro^ +||nocturnal-minimum.com^ +||nocturngrayish.cyou^ +||nodallyaushar.cyou^ +||noddlesmuvule.qpon^ +||nodestrengthenrecorder.com^ +||nodiakcowponystared.cfd^ +||nodisuasive.qpon^ +||nodntchkyhhrg.website^ +||nodthunderthis.com^ +||nodusdehorn.shop^ +||noechobalds.cyou^ +||noelmilksop.qpon^ +||nofeu.com^ +||noftclykhdllg.space^ +||nofvbfkeaisfc.online^ +||noggedcloudssliders.qpon^ +||nogsdjlayhgfl.online^ +||nohowsankhya.com^ +||noirepatin.com^ +||noisesperusemotel.com^ +||noisesroot.com^ +||noisewhoever.com^ +||noisy-anger.com^ +||nokymhnsljner.space^ +||nolgueizkgcug.site^ +||nolosnephila.cfd^ +||nomacatella.qpon^ +||nomeshunner.qpon^ +||nomeuspagrus.com^ +||nomeusstend.qpon^ +||nomeusworkers.com^ +||nominateamends.com^ +||nominatedefendant.com^ +||nomornaling.com^ +||nomqpopwibcln.website^ +||nonagonunspent.cfd^ +||nonaircise.com^ +||nonbasepiquet.shop^ +||noncashroundy.cfd^ +||nonchalancefireextinguishersuperhero.com^ +||noncommittalprepare.com^ +||noncommittalsupposedlybroadcast.com^ +||nondescriptriddle.com^ +||nonerr.com^ +||nonethelessaugustcategory.com^ +||nonfatmolochs.com^ +||nonfictionspatterrind.com^ +||nonformacheer.cfd^ +||nongraypinkany.cfd^ +||nonjuryaflare.cfd^ +||nonjurycoveted.cfd^ +||nonnanttripple.cyou^ +||nonruntaxinggypper.cyou^ +||nonsenseaggravation.com^ +||nonsensepreparations.com^ +||nonsensetypicallyuncertain.com^ +||nonsinefootboy.qpon^ +||nonstopanyoneslammed.com^ +||nonuserunlisty.qpon^ +||nonvoidagaveemic.cyou^ +||nonwaragnathasetout.cyou^ +||nonyapinking.qpon^ +||nookcommunication.com^ +||nookentangledirectness.com^ +||noolt.com^ +||nooseamazingbatch.com^ +||noosebanghad.com^ +||nopalsabend.cfd^ +||nope.xn--mgbkt9eckr.net^ +||nope.xn--ygba1c.wtf^ +||noqxfuqrbngpi.space^ +||noretia.com^ +||noritobethelsgoas.qpon^ +||normalballet.com^ +||normallydemandedalter.com^ +||normalmotor.com^ +||normalphysics.com^ +||normalround.com^ +||normecologyomit.com^ +||normkela.com^ +||northcoolingdiving.com^ +||northwestreluctantvault.com^ +||nosemorgue.com^ +||nosenotch.com^ +||noserandem.shop^ +||noshedpouchy.cfd^ +||nosingslighty.cfd^ +||nosrkzbtgognp.online^ +||nossairt.net^ +||nossanxjqfmza.website^ +||nostrilquarryprecursor.com^ +||nostrilswallpaper.com^ +||notableapple.com^ +||notbeholdmoineau.qpon^ +||notcheshoyman.qpon^ +||notdewbeam.cyou^ +||notebookballet.com^ +||notebookdryersolution.com^ +||notebookpoet.com^ +||notelayingtowers.com^ +||nothalresided.cfd^ +||nothingelbowsigns.com^ +||nothingpetwring.com^ +||nothycantyo.com^ +||noticeclockdroop.com^ +||noticedkoanparnel.cfd^ +||notificationallow.com^ +||notifications.website^ +||notiflist.com^ +||notify6.com^ +||notifypicture.info^ +||notifysrv.com^ +||notiks.io^ +||notioncarpplash.com^ +||notionsinfamous.com^ +||notix-tag.com^ +||notix.io^ +||notmil.com^ +||notonthebedsheets.com^ +||notorietycheerypositively.com^ +||notorietyinflected.com^ +||notorietysoldduplicate.com^ +||notoriouscolumnistdead.com^ +||notslgefxb.com^ +||noughtmiles.com^ +||noughtspicule.qpon^ +||noughttrustthreshold.com^ +||nounrespectively.com^ +||nounsacredlimb.com^ +||nourishmentdivorcedflock.com^ +||nourishmenttrivialfiasco.com^ +||nova-assets.xyz^ +||novadune.com^ +||novel-cross.pro^ +||noveletwon.cyou^ +||novelpair.com^ +||novelty.media^ +||noveltycohune.com^ +||noveltyensue.com^ +||novemberadventures.name^ +||novemberassimilate.com^ +||novemberbore.com^ +||novemberinstallsplucky.com^ +||novenaedrowsedsacket.cyou^ +||novenassmilerferity.cfd^ +||novibet.partners^ +||novicechickenlouisa.com^ +||novicedragged.com^ +||novidash.com^ +||novitrk1.com^ +||novitrk7.com^ +||novitrk8.com^ +||nowbtnuyljyvw.website^ +||nowfantasypostman.com^ +||nowfavourable.com^ +||nowherepretentiousscissors.com^ +||nowherestates.com^ +||nowlooking.net^ +||nowosama.com^ +||nowspots.com^ +||nowsubmission.com^ +||nowtrk.com^ +||noxfnetljevmk.com^ +||noxiousinvestor.com^ +||noxiousrecklesssuspected.com^ +||noxiousrequirement.pro^ +||noxiouswear.pro^ +||noxthxomoccyr.site^ +||npbbhjcephgrx.space^ +||npbkgflaqguzo.store^ +||npcad.com^ +||npcsgckzwswgs.site^ +||npcta.xyz^ +||npdeizwvizoeh.space^ +||npdokqeighxsy.site^ +||npdwrpqhfmlhfk.com^ +||npdysftocspic.online^ +||npfnnmbcuotel.website^ +||npgfsgeleihph.online^ +||npjdvywxsbtbz.online^ +||npksgwynwupzp.space^ +||nplutstbfgyso.online^ +||npmfetklmwfzj.online^ +||npmtyfajkldkj.space^ +||npolkkpbzrrpl.site^ +||nppcvydbsljye.site^ +||npripnuiexazh.online^ +||npsczocxkpdkr.online^ +||nptducyolrful.online^ +||npugjzhcvhxiw.store^ +||npvos.com^ +||npvqolcucthor.website^ +||npwzzebiufwws.site^ +||npxlkaugtvywe.store^ +||npzahkooxkyps.website^ +||nq5gb7y2nzbcl8.cfd^ +||nqbiv17ul27xztly.rest^ +||nqbukatzrtcve.site^ +||nqddcruxvklfa.site^ +||nqdgrzcyyeiul.online^ +||nqdpqbfihaids.store^ +||nqdxwmnpjpoiw.site^ +||nqelooikvxcqw.space^ +||nqfckzg45ttu1uubkv2pfi57.cfd^ +||nqfwzphqxjbqo.store^ +||nqgokpyktbkbm.space^ +||nqifvntxhqpxx.store^ +||nqjcfe772g56vgxchw.cfd^ +||nqjnehyrguhlze.com^ +||nqmtzldnhcree.store^ +||nqn7la7.de^ +||nqoahhrkxtvsp.website^ +||nqoqrotklafsb.space^ +||nqozavopkqjci.website^ +||nqqqnyyceaypa.online^ +||nqrlkmicjyfzi.rocks^ +||nqrmfxfrclxyx.space^ +||nqrmulefubdjw.website^ +||nqsizzyicehpm.one^ +||nqslmtuswqdz.com^ +||nqtmdwxjkutyf.website^ +||nqujxpsgreztv.online^ +||nqvoagbcetlv.com^ +||nqvoviegqrelf.com^ +||nqvpvohgnfjie.online^ +||nqwamfuiardkj.space^ +||nqxnhjrcgkupm.website^ +||nqyvanxrvjfng.website^ +||nraluhknrvpwt.online^ +||nrdgrmczzcukk.website^ +||nrefybpeqrpkw.online^ +||nreg.world^ +||nrgdsbuviocit.store^ +||nrgiccnpufq.com^ +||nriceukwater.org^ +||nrjjnequyqhgm.site^ +||nrkfcdbuor.com^ +||nrlhvfqxwstsb.website^ +||nrnma.com^ +||nrqihuzvyunel.website^ +||nrrofvqgzprnb.space^ +||nrs6ffl9w.com^ +||nrtkdhscnykcv.online^ +||nrvqlwhrwgzfu.site^ +||nryfifdmpeotb.site^ +||nsazqlkoklvvu.website^ +||nscrskxrpsezh.site^ +||nsdsvc.com^ +||nsdzyfrgyhzpe.online^ +||nsepelunpkhet.website^ +||nsfwadds.com^ +||nsfwinkuhzeo.com^ +||nsgegxtidrrlr.site^ +||nshqbvdvvaxwx.store^ +||nsjemowzbm.com^ +||nskyfqigltino.space^ +||nsmakurrecuhk.website^ +||nsmartad.com^ +||nsmikhlpcsfvy.site^ +||nsmjyhjruktog.online^ +||nsmpydfe.net^ +||nsoplzmvyqufx.site^ +||nspmotion.com^ +||nspot.co^ +||nsqcshakoalks.website^ +||nsqgdxeuasgpt.store^ +||nssndendnoeyc.store^ +||nssqljqmjaugr.website^ +||nssvtq4w.xyz^ +||nstytzmbwuylf.site^ +||ntcfrzpzmeite.site^ +||ntdqahcmfalu.com^ +||ntepadkozezji.online^ +||ntfkfspmntojh.site^ +||ntiljustetyerec.org^ +||ntjhidsipuvcj.site^ +||ntjumvumqzufo.space^ +||ntkgkyalavlcs.space^ +||ntkmmopjrpqdx.store^ +||ntkuafnhxkayf.website^ +||ntlcsrqm.com^ +||ntmnfdrqktuhy.online^ +||ntnfiubxkrufo.store^ +||ntobfyzxjkatt.space^ +||ntofinaukncec.org^ +||ntoftheusysia.info^ +||ntoftheusysianedt.info^ +||ntoucbwriboqc.site^ +||ntplsyboguywj.store^ +||ntpmyukiwhglj.space^ +||ntrandingswond.org^ +||ntreqriypgoef.online^ +||ntrfr.leovegas.com^ +||ntrftrksec.com^ +||ntsreoealtutd.site^ +||nttmrucsktmgvy.com^ +||ntubkk5tin643xu1m.cfd^ +||ntuthjynl.com^ +||ntv.io^ +||ntvk1.ru^ +||ntvpforever.com^ +||ntvpinp.com^ +||ntvpwpush.com^ +||ntwkbc21.com^ +||ntwkbc42.com^ +||ntwrencesprin.org^ +||ntyivmvvzscaj.store^ +||ntykiftp.in^ +||ntzgwekoefmwq.site^ +||nuamhmoviliol.online^ +||nuaooeaurlzpv.space^ +||nuayrztxdbfem.site^ +||nubbierfecit.cyou^ +||nubumwpmqpslh.website^ +||nucleinhoopedazotes.cfd^ +||nucleo.online^ +||nuddphrasalkins.cyou^ +||nudeghogukwhx.store^ +||nudesgirlsx.com^ +||nudiegivens.qpon^ +||nudismsbilge.qpon^ +||nudnikssuets.cyou^ +||nueyowipxyuok.store^ +||nufajfnntuyot.site^ +||nufvvvgpfwwpn.website^ +||nug2lfj23b7vtv.rest^ +||nughaitsoudri.xyz^ +||nui.media^ +||nuisancesequence.com^ +||nuldbyrastega.site^ +||null-point.com^ +||nullarypanamicdarter.qpon^ +||nullevaporate.com^ +||nullingunsung.cyou^ +||nullsframe.com^ +||nullusplayletsassak.qpon^ +||numberium.com^ +||numbertrck.com^ +||numbirritablemajor.com^ +||numeralsquickerreprove.com^ +||numericbergh.qpon^ +||numnahphineas.com^ +||nunapdja.in^ +||nunceinlacesframea.cyou^ +||nuncioskoshaalpacas.cyou^ +||nunkypyrrol.cyou^ +||nunletchingma.shop^ +||nunryvespers.cfd^ +||nuntcnartgyaj.site^ +||nuolvunldkuuy.space^ +||nuqwe.com^ +||nuqxpulhjilij.space^ +||nurbljwhtkhhs.space^ +||nurcyushvtvmx.online^ +||nurobi.info^ +||nurseryillnesssensation.com^ +||nurseryinflectedshare.com^ +||nurserylucyparting.com^ +||nursleclench.cfd^ +||nuseek.com^ +||nusjemcedhfgr.site^ +||nusmkkrrxsjgj.site^ +||nusxvpootryrz.site^ +||nutatedtriol.com^ +||nutateshazanim.com^ +||nutchaungong.com^ +||nutentertainintermediate.com^ +||nutr4neikxgv3m4zfbvzql.cfd^ +||nutritionpenguinbiopsy.com^ +||nutritiousrush.com^ +||nutritioussilver.com^ +||nutsag.com^ +||nuttierputtoo.cyou^ +||nutty-break.com^ +||nuttylog.com^ +||nuvjeisrkigpv.site^ +||nuwk3ju7jipby5fgvxvk4tq867jhpx.rest^ +||nuwkpoivmddho.online^ +||nuwlgkoejgirn.online^ +||nuwnvjcqknklq.space^ +||nuxaunjucpepp.website^ +||nuxp9z1wl15ve2.rest^ +||nuxuwhawo.com^ +||nuzehescwgfmr.site^ +||nuzoqxlu.in^ +||nuzostgcylun.com^ +||nv3tosjqd.com^ +||nvagcpwuffuxj.space^ +||nvejmzqxuuujx.love^ +||nvfpshunedmgf.online^ +||nvftdcwewfhow.space^ +||nvgnealcimsdq.space^ +||nviifyqkqwtuu.site^ +||nvkpfyaubxuud.store^ +||nvmkozixnjkwg.website^ +||nvngmhkbwuugs.com^ +||nvobrvcxjhcbm.online^ +||nvpbwocxzbumr.space^ +||nvpylxkdptacm.today^ +||nvqglurpogfos.site^ +||nvqlygqniapyb.site^ +||nvqvibvtalsmj.online^ +||nvrblck.com^ +||nvsfnhjkwlrnd.site^ +||nvsucjifrawbf.online^ +||nvsvlphrynhoq.website^ +||nvwmvpmsaiuer.space^ +||nvxbjvswajhug.space^ +||nvxntvdttjbrg.site^ +||nvyhlkbvtoifv.site^ +||nw5jlip562xbwq.cfd^ +||nw9ew2qzjio2113tx.cfd^ +||nwarktriynwek.store^ +||nwayheohicfbo.online^ +||nwemnd.com^ +||nwfkhvqxjxpll.online^ +||nwfnsitaes.com^ +||nwjunrzhppxvd.space^ +||nwlogtgbemzts.site^ +||nwmlglasjxvgx.space^ +||nwmnd.com^ +||nwnncnbipamso.website^ +||nwnxyivttoaad.site^ +||nwolsobhphvur.website^ +||nwostjtwogw.com^ +||nwpwfyhnvqmxd.website^ +||nwpxsbxnifxyq.space^ +||nwpxuyrumutlj.store^ +||nwqtkjzvtiqvj.site^ +||nwryeirpkvato.one^ +||nwszpbqwkfhdm.site^ +||nwtdvlersdowe.space^ +||nwvkpbrceeutp.site^ +||nwvptbbdwhxb.com^ +||nwvulrmtxesqh.space^ +||nwwais.com^ +||nwwqahasdwdxp.site^ +||nwwrtbbit.com^ +||nwxrt9vpp3qjnxcu.cfd^ +||nwzbkivuzlkpz.website^ +||nwzbxcfmseiyv.space^ +||nwzutgomlrtdv.website^ +||nwzvnahvynvik.online^ +||nwzxjhuerbkxz.space^ +||nx6wlhi7y7imki.rest^ +||nxammcghvgoin.website^ +||nxanrbmkthjbh.online^ +||nxethnjxkujoa.site^ +||nxhkagcslidhv.website^ +||nxiybblfblloz.online^ +||nxkgtnjrw.com^ +||nxksydvpyedbz.online^ +||nxmpmugazsghw.website^ +||nxmsiuptjboqj.space^ +||nxt-psh.com^ +||nxtck.com^ +||nxtpsh.top^ +||nxvxof9z2gub99gtx.cfd^ +||nxxlfhtdcpzjz.site^ +||nxxoxununzefm.website^ +||nxxpgruglnfha.online^ +||nxxxpmyejmudz.space^ +||nya2.com^ +||nybjwktlrcwca.site^ +||nybkctzmldnye.space^ +||nycjuaeiuzhxe.site^ +||nycteaflota.com^ +||nyctsnsuuxbsf.website^ +||nydcwypbglbjb.online^ +||nyetexogens.shop^ +||nyfwoxdfhgufr.online^ +||nygcwpskctfwq.space^ +||nyjnursqfwsum.website^ +||nyjqw9hj8yvjbuzeir75y2.cfd^ +||nykaarlzmsmpo.site^ +||nylftbtumucee.website^ +||nylgisxwvgxdp.site^ +||nylonhighlyculture.com^ +||nylwyklyegeog.website^ +||nymllqnuvxbsz.online^ +||nymphosalkies.qpon^ +||nymphoshalvedhangars.cfd^ +||nymsdhtpngjip.space^ +||nyphgxjomnbne.online^ +||nyqisqlogwnnr.online^ +||nyquazhpvouya.website^ +||nyrsfkfpavaht.site^ +||nythingamglad.com^ +||nytrng.com^ +||nyvaewvbsqdic.space^ +||nyvzocirybwts.website^ +||nyxsatfpppyye.online^ +||nyywscncfpfzn.website^ +||nyzmvpwdxkxdk.online^ +||nz7h11c4hl9r9i3k845wzk2pzoo8p7.cfd^ +||nzavmqooblmpl.site^ +||nzaxusovlqyek.space^ +||nzbmsyjqojdmn.space^ +||nzdtbadbjtiva.store^ +||nzezezqjwortv.website^ +||nzfmrdvafzkpk.space^ +||nzigunflybfhu.store^ +||nzihbokpcqppj.website^ +||nzme-ads.co.nz^ +||nzoebvbnminei.website^ +||nzovkeazjpanl.website^ +||nzrfwzqdeqtci.site^ +||nzruddunlfqgs.site^ +||nztuuf3zvzy7vw.cfd^ +||nzvdxjtticjnj.space^ +||nzwomoxfjcosy.store^ +||nzyppdoppxpwb.website^ +||nzzrcycaemnfh.online^ +||o-oo.ooo^ +||o18.click^ +||o18.link^ +||o2c7dks4.de^ +||o333o.com^ +||o368sxdu.xyz^ +||o3sxhw5ad.com^ +||o4nofsh6.de^ +||o4uxrk33.com^ +||o5kbgigoq9gu4k8.cfd^ +||o5tir3zfugeo6ej.rest^ +||o626b32etkg6.com^ +||o6hq5vt4j62p36x.cfd^ +||o6ujlhhvm4pl5pqc7.cfd^ +||o6z2a2kq8fatj3ch0x5ow6v82ha2gja8x8c7w6pc5gx2ls0zia7bx1n28b5d.com^ +||o7lf1m1fl1ki6fel4e1.cfd^ +||o86owcil7c4ppiox.cfd^ +||o911o.com^ +||o99yebioe3z7koxlfmomzjqnxg.cfd^ +||o9immkxcy9ru72jhx1m.rest^ +||oaanjdfjzjfrq.store^ +||oacameawwxibl.website^ +||oadehibut.xyz^ +||oaehfjujxyflm.space^ +||oaevgrhpiytej.website^ +||oaevvwccwrysd.site^ +||oafykdjouaesy.site^ +||oaglcwdhjcopy.website^ +||oagooazlqgcpg.site^ +||oahvmrbvqsuey.online^ +||oainternetservices.com^ +||oakchokerfumes.com^ +||oaljdplnjxxec.fun^ +||oamoameevee.net^ +||oanfixbkeixoh.site^ +||oapcctzttigaw.website^ +||oaphoace.net^ +||oardilin.com^ +||oateutqihwrdyl.com^ +||oathannually.com^ +||oathletanet.qpon^ +||oatmealmontleymontleyremove.com^ +||oavemburgrsoz.site^ +||oavurognaurd.net^ +||oavyctdvbrlpz.space^ +||oawkaajvnfkcu.site^ +||oaxcyzqojnyxy.online^ +||oazkpymbsfmxo.site^ +||obafigsydginf.space^ +||obakkaqbwcnlh.global^ +||obbpynvgqolcf.space^ +||obcludeguignol.cfd^ +||obdsfxfwjrlko.space^ +||obdtafzelia.cfd^ +||obdtfaunch.qpon^ +||obduratefizzylament.com^ +||obepsnuyruuou.website^ +||obese-actor.pro^ +||obese-growth.pro^ +||obese-pin.com^ +||obesekeenpassim.cyou^ +||obetmwbxfdswe.store^ +||obeupjqqrjhvg.store^ +||obeus.com^ +||obevdmnrwgfai.online^ +||obeyedortostr.cc^ +||obeyeosaviouraxised.qpon^ +||obeyroman.com^ +||obeysatman.com^ +||obfirmslowfulscute.qpon^ +||obgnfbrfvosbi.online^ +||obixlzxvxgcmf.site^ +||objectionsbeaten.com^ +||objective-wright-961fed.netlify.com^ +||objxnsqjqcdsf.online^ +||obkkuumfesmhai.com^ +||obkr5xtu53n3oy.rest^ +||obkrwyfmsoajc.space^ +||oblaaezkiofaa.online^ +||obligationdemolishleap.com^ +||obligationdrummersculpture.com^ +||obligationpaltryroute.com^ +||obligedceasmic.cyou^ +||obligedmeditatedazed.com^ +||obligorraif.cyou^ +||obliquecensortend.com^ +||obliquescallionexcavator.com^ +||oblivionplaysaltered.com^ +||oblong-punch.com^ +||obmpabheweiku.space^ +||oboesunseremirrory.qpon^ +||obqj2.com^ +||obqj5.com^ +||obrdhgxncafcx.store^ +||obrqupzkarrdx.site^ +||obscenityforearm.com^ +||obscureanyway.com^ +||observationtable.com^ +||observativus.com^ +||observedinoffensivesupplied.com^ +||observer384.fun^ +||observercontains.com^ +||observeshaken.com^ +||obsesscaptured.com^ +||obsoletepaddlevehicular.com^ +||obsoletepersistalec.com^ +||obstaclemotionoccurs.com^ +||obstinacysexist.com^ +||obstinateannihilatedisrupt.com^ +||obstructionclasses.com^ +||obswjwcffcbcf.space^ +||obtaintrout.com^ +||obtrusivefreak.com^ +||obtrusiveorganizeresponse.com^ +||obumlnwrmmewj.site^ +||obuqhpqiqfgoe.love^ +||obviousestate.com^ +||obvioushome.com^ +||obvioussecretive.com^ +||obwaopxfnxfdw.space^ +||obwguczcik.com^ +||obwojmsha.in^ +||obzpubutiwfeq.online^ +||oc2tdxocb3ae0r.com^ +||oc876xxlzehio8.cfd^ +||ocafujphzaqww.space^ +||ocardoniel.com^ +||ocbahlohbku.com^ +||occasional-prize.pro^ +||occasionalmanner.com^ +||occasionforfeitarray.com^ +||occiputumbrinebenzoic.cfd^ +||occlgtilkdc.com^ +||occultsfee.cfd^ +||occupationattribute.com^ +||occupationbritain.com^ +||occupiedstuffgrub.com^ +||occurrencedoorstepprevention.com^ +||occwblnhaelhq.online^ +||ocdcwlawxinfg.website^ +||ocdmhzarbgnxo.website^ +||ocdompfa.in^ +||oceanarmouroutnumber.com^ +||oceanicdreamcove.com^ +||ocelyuugvinth.site^ +||ocezkkczukfcn.website^ +||ocfkwfanlarbt.website^ +||ocfzcwlruvdwg.website^ +||ocgqmmqztfwkn.site^ +||ochdbjgbkommn.website^ +||ochersculmen.shop^ +||ochredravin.qpon^ +||ochringnondark.cfd^ +||ochxpgojofbgk.space^ +||ocimummckay.shop^ +||ocinzfdyslxja.online^ +||ociurwibnklqw.online^ +||ocivocakufslc.site^ +||ockerflurn.qpon^ +||ockremarkedon.com^ +||ockvjestempfy.website^ +||ockvpyhmddtus.online^ +||ockzcenmegjnn.site^ +||oclzwyihilrvq.site^ +||ocmhood.com^ +||ocmtag.com^ +||oconner.link^ +||ocop-defender.pro^ +||ocoteagagmannoncom.qpon^ +||ocotechurr.cfd^ +||ocpnroag.com^ +||ocpolgam.com^ +||ocpviqnudkan.in^ +||ocpwlmqdpkdnn.site^ +||ocqmbcwysestl.website^ +||ocqsshujqukygch.com^ +||ocrlmgqgqlfqt.store^ +||ocsdkiwkrndeo.site^ +||octectlycopin.com^ +||octicbistro.shop^ +||octicrosehip.cfd^ +||octo25.me^ +||octoberads.space^ +||octofidcasque.cfd^ +||octonewjs.com^ +||octopodmittens.qpon^ +||octopuscosecs.com^ +||octopuscreedpincers.com^ +||octopusgounau.shop^ +||octopuspop.com^ +||octotraf.xyz^ +||ocwhzckzcim.com^ +||ocwutmrfbsrwy.store^ +||ocxlihabtozf.com^ +||oczltdjfcrvhvq.com^ +||odakhzdbrzbny.website^ +||odbsmbtdcjuzp.site^ +||odchkdybnsxre.space^ +||odclajjuwo.in^ +||oddball-creative.pro^ +||oddlybraceletunseen.com^ +||oddlysicklyaccurate.com^ +||oddlystudent.com^ +||oddsserve.com^ +||odeonssickingbaizing.cfd^ +||odeonstatinek.cyou^ +||odeuwdapukoxz.website^ +||odewjqygsvtnhhl.com^ +||odeybruslekoq.website^ +||odfuwbdguqkrj.site^ +||odgmxwepbbfwe.online^ +||odgsaxlabmvgi.online^ +||odhdnbucgpwly.website^ +||odicoscan.shop^ +||odkgyurmdcgkc.space^ +||odldzgdjzbksz.site^ +||odlospxkipf.com^ +||odlxepapmasej.website^ +||odmhljecbnazq.site^ +||odmtrprqjiooh.space^ +||odnaknopka.ru^ +||odngvujguenah.space^ +||odologyelicit.com^ +||odourcowspeculation.com^ +||odourtaste.com^ +||odqghulazoz.in^ +||odrbykkefvfxi.space^ +||odsenbhkgghbw.site^ +||oduauledfalmc.online^ +||odulfytvuuibr.space^ +||odvazhfsnswns.online^ +||odyjsxwapjvac.online^ +||odyvcahzbdmlx.website^ +||odzzperikpir.com^ +||oe1poh8t2c9utc5p.cfd^ +||oeafttumojrto.site^ +||oeamsmfhctyfk.site^ +||oecygvpkp.com^ +||oedazrjbdxygw.site^ +||oefdjrivunaqq.website^ +||oeg9k75z9njgwpj.cfd^ +||oegjeeuyatxcm.website^ +||oehbh5tmjz6lc44u943.cfd^ +||oeheupxifmgtq.website^ +||oeibagiwhfltb.site^ +||oeicqhzlvnlpc.online^ +||oeioqkdadlci.com^ +||oejpvjjsgibdz.online^ +||oeknzzjvrsjia.site^ +||oelctjbbdajev.site^ +||oeldtgynjxqbe.online^ +||oelhofejacqod.website^ +||oempafnyfiexpe.com^ +||oepahvkqvihnh.space^ +||oepkdmcujxace.space^ +||oerstedcalumba.qpon^ +||oerxzdstepphr.store^ +||oestpq.com^ +||oeszxeerssjsn.site^ +||oetvmdsvpckci.site^ +||oeu3it2m.xyz^ +||oeufihzttngjt.website^ +||oeuguavewbugd.site^ +||oeulxyw.com^ +||oeuvreknobsvagant.cyou^ +||oewvsysoeceah.store^ +||of-bo.com^ +||ofaskphdspgqe.online^ +||ofbcfjafesiuu.website^ +||ofbdaktxxxldn.space^ +||ofbsujpuwhu.com^ +||ofcamerupta.com^ +||ofcgcdcvk.com^ +||ofclaydolr.com^ +||ofdougmlfyd.com^ +||ofdoyluowkolk.website^ +||offenceperiod.com^ +||offendedhush.com^ +||offenderprolific.com^ +||offensivefamily.pro^ +||offensivefountainrabbit.com^ +||offerdanced.com^ +||offergate-ecommerce-cdn5.com^ +||offergate-games-download1.com^ +||offergate-software11.com^ +||offergate-software6.com^ +||offerimage.com^ +||offeringcanvassfuzzy.com^ +||offeringchewjean.com^ +||offerlink.co^ +||offershub.net^ +||offevasionrecruit.com^ +||offfurreton.com^ +||offhandyonkers.qpon^ +||officecornsoftware.com^ +||officeklafter.com^ +||officerpersonalimmersed.com^ +||official-permit.com^ +||offlookronquil.cfd^ +||offoonguser.com^ +||offsetgobetween.com^ +||offspringresolveddiminution.com^ +||offspringtenchocolate.com^ +||offspringthisscarcely.com^ +||ofgdihwfuo.in^ +||ofgxwyvlechxd.site^ +||ofhlbkpompfch.website^ +||ofhlnecbvucbl.space^ +||ofhypnoer.com^ +||ofhzqxpfhusrw.website^ +||ofiywatidyhuq.site^ +||ofj2hy6pnue65ftoc.cfd^ +||ofjujdmsylvmo.website^ +||ofjxfukjzgnqo.space^ +||ofkrabbyr.com^ +||ofltycalhhzvz.online^ +||ofluyplnfaqhi.site^ +||ofmdohtxiotxm.site^ +||ofmukindwould.org^ +||ofpodconnmtyd.space^ +||ofppahlkiz.com^ +||ofptzgmiiyeod.website^ +||ofqlvcujykanc.site^ +||ofssdevriar.com^ +||ofstzxglzjffs.space^ +||oftheownouncillo.com^ +||ofxbxiqadouwo.space^ +||ofzl3q285oifbt1ct757.cfd^ +||og-ali1.com^ +||og4cyempxfuvnw.cfd^ +||ogbxutcuujpev.site^ +||ogckadnsqwwng.store^ +||ogcntuibtozqj.space^ +||ogdauedbftzmt.online^ +||ogdbayqzyqlgj.website^ +||ogdbgitofqmxv.space^ +||ogfbb.net^ +||ogffa.net^ +||ogfga.net^ +||ogfhuleifmtvd.site^ +||ogfna.net^ +||ogfokbopmhpe.in^ +||oghamicupcropgerbera.cyou^ +||oghfcghsr.com^ +||oghfgyoqzguvq.space^ +||oghqvffmnt.com^ +||ogicatius.com^ +||ogigzpqottuyl.website^ +||ogitbkjirtzdi.site^ +||ogjwbfgwwfbir.site^ +||ogjybrolzwrhf.online^ +||ogkydwllwcyks.online^ +||ogle-0740lb.com^ +||ogopsmaoxxnfl.website^ +||ogorwaste.com^ +||ogpbiyasujelr.website^ +||ogpnpauyoknvc.online^ +||ogqbkcfyvycna.space^ +||ogqlccnoxzvum.space^ +||ogreresults.qpon^ +||ogrhbjyjvdbct.online^ +||ogscumkte.com^ +||ogsorfhdwamjv.com^ +||ogszigdu.in^ +||ogtiernrewakes.qpon^ +||ogtsesfvshtsk.website^ +||oguaumtdjyqoe.online^ +||ogwsktwhfwlky.space^ +||ogxjhjniomwkr.site^ +||ogypquywenfmq.site^ +||ogz4n3ke.xyz^ +||ogzopanhilgem.online^ +||ohaplvrbzkcee.site^ +||ohbeentoredan.cyou^ +||ohbognmxxssou.space^ +||ohbtludnmaaqd.online^ +||ohbxjiwpjzewd.online^ +||ohdbwbwxrlgsd.site^ +||ohdhevxnilnvd.space^ +||ohdorkhi.com^ +||oheplxkctxtdw.online^ +||oheyffpqepntj.store^ +||ohffs.com^ +||ohftxhvczfmec.space^ +||ohfuuzzotyffr.online^ +||ohganpxujow.in^ +||ohgbefqegvejj.store^ +||ohgriforkvan.com^ +||ohgwkaedrbujt.website^ +||ohhkcjqjwjgid.space^ +||ohioancalanid.qpon^ +||ohjijwhk.com^ +||ohjtvcmgfmpwm.website^ +||ohkdsplu.com^ +||ohkklauyqabemkj.com^ +||ohkvvvttjyqsz.space^ +||ohldsplu.com^ +||ohndsplu.com^ +||ohomihlorwmjh.space^ +||ohooblbmkxp.com^ +||ohrdsplu.com^ +||ohtctjiuow.com^ +||ohtskobaljaz.in^ +||ohvvvmxtyzvix.online^ +||ohwcfznerxhjk.website^ +||ohxdkzbwzpvid.website^ +||ohygmjehshbun.website^ +||ohyqrurmhguhy.store^ +||ohyswagriuexx.space^ +||oicfkmbppdusr.website^ +||oidgctozcfsrr.site^ +||oidiumbaryon.cyou^ +||oidssdwmbovry.website^ +||oiestalepistons.qpon^ +||oifeqfiurelhe.site^ +||oifthjnpbzycw.online^ +||oifyyeiuwnpzc.space^ +||oihjkobiyortd.space^ +||oihqicgerrfoo.site^ +||oiismyzivtine.website^ +||oijcphjwiabsg.online^ +||oilcasekareeta.qpon^ +||oilcontainsdisaster.com^ +||oilrjign.com^ +||oilsfungosemacros.cfd^ +||oilycoat.com^ +||oimsminyghpb.com^ +||oinkedbowls.com^ +||oinkedgantlet.cfd^ +||ointmentapathetic.com^ +||oiotndkgyhcoc.site^ +||oirdwcadrzrqj.online^ +||oiruhwtodmhcb.store^ +||oisvaccgktjcq.space^ +||oitburlrsssrp.site^ +||oitedrzhldluo.space^ +||oitoeamtyhafb.site^ +||oiuiybsfqfmyd.site^ +||oiwryudeyymdj.online^ +||oiycak.com^ +||oiyhpucamolav.website^ +||oiylclkpohspa.space^ +||oizqaraplcgnr.online^ +||ojdcebrmfzcnf.store^ +||ojfjxzvm8bbcgcrgu.cfd^ +||ojgmxlqwedsky.site^ +||ojgnshmpawhpq.space^ +||ojgsqeksvdnwm.space^ +||ojheaitunlker.online^ +||ojmkbdcctzwjr.website^ +||ojnzzwsshjjqn.website^ +||ojokavacpkcjv.space^ +||ojonvpuqbtqul.site^ +||ojprlvavhknyk.site^ +||ojpvwrudzpojr.site^ +||ojrq.net^ +||ojuvjqymmcyos.site^ +||ojvgrxtyje.com^ +||ojyneijlxlekv.site^ +||ojzpcvipynqhw.online^ +||okadgpkptxakv.website^ +||okanwoesgsogw.website^ +||okcfdzfqcdemc.website^ +||okdcrqtemifgo.online^ +||okdigital.me^ +||okeezyxflelvs.website^ +||okhzwjshcpqjz.site^ +||okiiajtpeyycg.website^ +||okimonoemp.cyou^ +||okiyfmhdmtvgs.website^ +||okjlteobj.com^ +||okjrmyqw.in^ +||oklaozkkitxoz.online^ +||oklbhyzogmzxq.rocks^ +||oknpnwofhtlps.site^ +||oknybtgqygnju.site^ +||oko.net^ +||okoloss.com^ +||okooiejsudbgk.space^ +||okopeukasrsiha.org^ +||okopuhtgqgelr.space^ +||okoulvuvtzurb.site^ +||okouzrbnldmmz.site^ +||okqefbozkgqvd.website^ +||okqj7zoui68ulfuj74mug3er.rest^ +||okqtkpqfjxxxu.online^ +||okrasbj6.de^ +||okrqmavp.com^ +||oktmwddlpisrn.site^ +||oktqqjqltnkiv.site^ +||oktranhfyfa.com^ +||oktwulwuvamp.in^ +||okueroskynt.com^ +||okwiyihjxhvto.space^ +||okyytrasubnjx.online^ +||olafhbezrjfit.website^ +||olambalolo.cyou^ +||olarodwood.com^ +||olayomad.com^ +||olbeeqbqgumdt.website^ +||olbmcpmktchpe.site^ +||olcrdqatcewmf.online^ +||olderdisciplinary.com^ +||oldergermain.cyou^ +||olderidentify.com^ +||olderouncedownstairs.com^ +||oldersinner.com^ +||oldroll.pro^ +||oldsterfogdogs.shop^ +||oldwifebilos.qpon^ +||olearyindexedpioned.cyou^ +||olebcnoveqtgn.site^ +||olechhxgjcngk.site^ +||oledylphenibp.site^ +||oleinsboyaupolers.cfd^ +||oleoussizes.qpon^ +||olgusnxobcokr.online^ +||olhuaebuicnfr.site^ +||olineman.pro^ +||oliosthrene.qpon^ +||olivedinflats.space^ +||oljyaffe.com^ +||olklafnfeguv.in^ +||ollksunixlltx.space^ +||olmiweb.com^ +||olneyapraises.cfd^ +||olntyyszaelkp.online^ +||olpaerodsman.cfd^ +||olpesrein.cfd^ +||olpmbjakqfqna.online^ +||olpyehftremln.website^ +||olqguyferpoki.space^ +||olqhrlcljzsuh.website^ +||olsmeroufuvzv.website^ +||oltfywhtcgbul.site^ +||oltondefoxtail.cyou^ +||olufklvlbtfbo.website^ +||oluokekejpxhe.website^ +||oluvvgrspzigy.online^ +||olwvpiiibchwy.com^ +||olyglxgjaihwj.space^ +||olympicsclassified.com^ +||olzqzehjhayam.site^ +||omaousherer.cyou^ +||omatri.info^ +||omazeiros.com^ +||omberfixure.qpon^ +||omcbyqbvojtia.space^ +||omcrobata.com^ +||omdlraptkxgw.com^ +||omegaadblock.net^ +||omegatrak.com^ +||omenparsnipwreckage.com^ +||omg10.com^ +||omg2.com^ +||omgcoool.com^ +||omgpm.com^ +||omgranbulltor.com^ +||omgt3.com^ +||omgt4.com^ +||omgt5.com^ +||omikxysshtvbs.space^ +||ominousirritatingpictorial.com^ +||ominousplant.com^ +||omission119.fun^ +||omissiongreatestoriginal.com^ +||omjtwaaxtdc.com^ +||omlahpewing.com^ +||omlwuowqqcklu.space^ +||ommcrywbemojn.space^ +||omni-ads.com^ +||omnificdevalue.cyou^ +||omnipasteur.cyou^ +||omnitagjs.com^ +||omniumoutroopbathers.cfd^ +||omoevcozeezhg.one^ +||omoonsih.net^ +||omoscmh.studio^ +||omoxxgrsttwsz.online^ +||omqdqupnwbqow.space^ +||omqusxdbgvwfv.website^ +||omrlipeocxijz.online^ +||omshedinjaor.com^ +||omswwmgtqwekb.space^ +||omwvapmytccsc.online^ +||omxpiremgszzv.space^ +||omzal.com^ +||omzbksdojksnt.online^ +||omzjtizavva.in^ +||omzkdhbltgcyi.website^ +||omzwmjdqihtxs.website^ +||onalskillsexkce.org^ +||onatallcolumn.com^ +||onbtqgokrasec.site^ +||onbzmxyhzfnff.space^ +||oncesets.com^ +||onciaendhand.qpon^ +||onclckbn.net^ +||onclckbnr.com^ +||onclckinp.com^ +||onclckinpg.com^ +||onclckip.com^ +||onclckmetrics.com^ +||onclckmn.com^ +||onclcktg.com^ +||onclckvd.com^ +||onclickads.net^ +||onclickalgo.com^ +||onclickclear.com^ +||onclickgenius.com^ +||onclickmax.com^ +||onclickmega.com^ +||onclickperformance.com^ +||onclickprediction.com^ +||onclickpredictiv.com^ +||onclickpulse.com^ +||onclicksuper.com^ +||onclklnd.com^ +||oneclck.net^ +||onedmp.com^ +||onedragon.win^ +||onefoldonefoldmotorcycle.com^ +||oneidaboshersqueezy.cfd^ +||oneidakie.cfd^ +||oneiricrosinscraved.cyou^ +||oneotheacon.cc^ +||onerousgardening.com^ +||onerousgathering.com^ +||onerousimpatiently.com^ +||onerouslittledomestic.com^ +||oneschgstfzlk.online^ +||onespot.com^ +||onetepehuarupiah.cfd^ +||onethestruis.com^ +||onetouch4.com^ +||onetouch8.info^ +||ongaromusket.com^ +||ongffzbvekahn.site^ +||ongmansuchc.com^ +||onhqeypqkfj.com^ +||oniamcurrentl.org^ +||onionetatretic.cfd^ +||oniqjeyyebgmv.online^ +||oniryidjetapo.online^ +||oniyyrgezoanj.website^ +||onjhecwdboxld.online^ +||onlidex.com^ +||online-adnetwork.com^ +||onlinepromousa.com^ +||onlineragged.com^ +||onlinetofactories.net^ +||onlinneoffers.com^ +||onllylovedating.net^ +||onlocdate.com^ +||onlyassigncoherence.com^ +||onlycigarette.com^ +||onlyloafmonotonous.com^ +||onlyobsessionfifty.com^ +||onlyry.net^ +||onmanectrictor.com^ +||onmfpogfe.in^ +||onmxrrvzhikqu.website^ +||onpetropica.com^ +||onpluslean.com^ +||onpnarloiuspl.online^ +||onrbmrwalqttw.website^ +||onrpgdtytflxcna.com^ +||onrvyrdwqpiwn.online^ +||onsenfinder.life^ +||onsetblouselampshade.com^ +||onsetcab.com^ +||onsetcategory.com^ +||onshowit.com^ +||onshucklea.com^ +||onsideunden.org^ +||onstunkyr.com^ +||onticreboils.cfd^ +||ontj.com^ +||ontnkqwlnimav.online^ +||ontrklnk.com^ +||onvaitflpgiog.online^ +||onwardflee.com^ +||onwardperishvaluables.com^ +||onwgnrgbcozvl.store^ +||onxfqnzyfbmio.online^ +||onxnzmhsvuimn.com^ +||onxosrmu.in^ +||onzscmvcclmqk.website^ +||ooauorttoseto.website^ +||oobeapxokjyke.online^ +||oobjgphwqy.com^ +||ooceqolgvobwy.online^ +||oodlinsuncock.cfd^ +||oodxgdzqljgfy.site^ +||ooewsccmjhgmd.online^ +||ooezauvjhotal.website^ +||ooflesshelved.qpon^ +||oogdrtkrenaoh.website^ +||oognbstsfzgxp.space^ +||oogncsdcflsnh.online^ +||oogneenu.net^ +||oogpmpugzvcin.site^ +||oogxypriplilr.website^ +||oohkbadeeaaem.site^ +||oohnqrfepvexr.website^ +||oojnpzimufgpr.online^ +||oojujkszfgqxq.space^ +||oojwuhhcdhvwb.space^ +||ooktgltucmhnf.site^ +||oolakdarwesh.cyou^ +||oologicrenatedisks.cfd^ +||oolongmatlow.com^ +||oolwiatgt.com^ +||oomaugnaps.net^ +||oomiakyetapa.com^ +||oooqitpwsryvd.space^ +||oooqyfcnv.com^ +||oooxizemrslcq.site^ +||ooozxxadrsnpo.space^ +||ooralisdecimagranes.cfd^ +||oordheel.cfd^ +||oorljoimmwspw.website^ +||ooryprosed.cyou^ +||oosbocswffckr.website^ +||ooseunitage.cyou^ +||oosjskulm.com^ +||ootahajbxdkuc.online^ +||ootsthreave.cfd^ +||oouutjpavsxfv.site^ +||oowqcmolqtwai.online^ +||oowvaygribfhj.space^ +||ooxehfqrodgqm.website^ +||ooydxblhaegrz.website^ +||ooyejpjenphbo.online^ +||ooyxwjhwgewpr.online^ +||op00.biz^ +||op01.biz^ +||op02.biz^ +||op3rgwq5meu56r9eu5u5eu9h1ofecnjp.rest^ +||op5izrzj91h2jbx.cfd^ +||opaledmistful.cyou^ +||opalizedogbolt.cyou^ +||opaloidrepayal.cfd^ +||opchqpnpdvbqn.website^ +||opclck.com^ +||opdnvnjiymzws.online^ +||opdrkeqdvzgoi.website^ +||opdvzscgsotag.site^ +||opeluundim.qpon^ +||openerclassify.com^ +||openercompetent.com^ +||openingclutter.com^ +||openingfridayconsulting.com^ +||openmindedaching.com^ +||openmindedpassengerserr.com^ +||openmindter.com^ +||openrtb-banner.com^ +||openskyventure.com^ +||openswarthylie.com^ +||opentecs.com^ +||openx.net^ +||openxenterprise.com^ +||openxmarket.asia^ +||operaserver.com^ +||operateturfculprit.com^ +||operativebreeder.com^ +||operatorhighsnake.com^ +||opfourpro.org^ +||ophcizitukjya.site^ +||ophismviewly.cfd^ +||ophonlexhjaai.space^ +||opi-nion.com^ +||opiaticudders.shop^ +||opinedslabs.cfd^ +||opinesclivers.cfd^ +||opinesfurrow.qpon^ +||opinesgallate.com^ +||opinionatedborrowed.com^ +||oplarzxfsrvsj.space^ +||oplmbxdyndadi.website^ +||oplnuqah.com^ +||opnobbohq.com^ +||opnxaldm.in^ +||opoejchmxlppr.space^ +||opopfwyzcsbpn.space^ +||opositeasyse.org^ +||opoxv.com^ +||oppidabusily.qpon^ +||opponentharriet.com^ +||opportunitysearch.net^ +||oppositeneglectcertainly.com^ +||oppressiveindifferent.com^ +||opskiwzwtvfic.store^ +||opsonicchaharcraizey.cyou^ +||optad360.io^ +||optad360.net^ +||opticlygremio.com^ +||optidownloader.com^ +||optimisticirresponsibility.com^ +||optimisticsort.pro^ +||optimizepro.online^ +||optimizesocial.com^ +||optionascertained.com^ +||optionsdisk.com^ +||optnx.com^ +||optraising.com^ +||optungjyfustb.space^ +||optvz.com^ +||optyruntchan.com^ +||opvanillishan.com^ +||opwcpsrmhs.com^ +||opwctzfqlvfwl.site^ +||opwgvbakasvqe.online^ +||opxgaiqbatgwjqg.com^ +||opxglqeagamku.space^ +||opyavarfwqcpf.store^ +||opzawpactdir.in^ +||oqigcunk5upcor85qn53gfni691y7z6fgiq.rest^ +||oqisfnvewbcaz.online^ +||oqjuxsuaavimo.online^ +||oqkhxgzljvqzr.store^ +||oqkynbmdyecilek.com^ +||oqmiadfkmlcwz.website^ +||oqqfmmikukdlu.space^ +||oqqodbqu.com^ +||oqrdryfmeo.in^ +||oqtxcfuumplee.website^ +||oquassaclaroesjaegars.cfd^ +||oqwyltgrpaeow.online^ +||or6gu73b276xy8.rest^ +||or95jfp7n8xlclvj.cfd^ +||oraculairicizereverie.cfd^ +||oralismyelloch.com^ +||orallycundy.cfd^ +||orange-convert.pro^ +||orangeads.fr^ +||orangeapproach.com^ +||orangeassistant.pro^ +||orangeprepenseprepensefalse.com^ +||oratemissayfiercly.cyou^ +||oratesmyxomas.cfd^ +||oratorbelievinginvention.com^ +||orbitcarrot.com^ +||orbmatchingenough.com^ +||orbsdiacle.com^ +||orbsrv.com^ +||orbura.net^ +||orceinshushing.shop^ +||orchardrivers.cfd^ +||orchatvoltaic.cyou^ +||orcvupxik.com^ +||orcwuhals.in^ +||ordboqtd.com^ +||ordenerastergasman.cyou^ +||orderlyuponprecipitation.com^ +||ordgoverytr.com^ +||ordinary-check.com^ +||ordinarygoonwritten.com^ +||ordinaryhopeflippant.com^ +||ordinaryneckegg.com^ +||ordureleptera.shop^ +||ordutuque.cfd^ +||oreideshexeris.qpon^ +||orest-vlv.com^ +||orfa1st5.de^ +||organicextentbounds.com^ +||organicowner.com^ +||organismdespite.com^ +||organismoysters.com^ +||organizationwoundedvast.com^ +||organizerinformpermanent.com^ +||organizerprocedure.com^ +||organsblond.com^ +||organytympan.shop^ +||orgassme.com^ +||orgieslostorage.qpon^ +||orgjqhznrwvr.com^ +||orguilmaslinresined.cfd^ +||oricrpswujpuw.website^ +||orientaldumbest.com^ +||orientalknitotherwise.com^ +||orientationcutlet.com^ +||orientscoigne.shop^ +||orientsweptautopsy.com^ +||origin1266.fun^ +||origin8888.com^ +||origintube.com^ +||origunix.com^ +||orijhtabquerd.com^ +||orilloniserine.cfd^ +||orinryesope.org^ +||oritooep.win^ +||orjfun.com^ +||orjlsopkbtieb.store^ +||orkoj4zgwhbzv2b.cfd^ +||orlglnaldates.net^ +||orlobozvlrryl.space^ +||orlowedonhisdhilt.info^ +||orlysalay.qpon^ +||ormercoaming.qpon^ +||ormhyvwciiqqg.space^ +||ormimvlawciog.space^ +||ornamentabsentlyluminous.com^ +||ornczozk.in^ +||ornerp.click^ +||ornnxfsfnkwbs.space^ +||orochontoprope.shop^ +||oroidesbiblicalala.cfd^ +||orologydukhn.cfd^ +||orphanrudimentary.com^ +||orqbvhkyufnxk.space^ +||orqlzuoqgad.com^ +||orqormvavr.in^ +||orqppkorkfotoa.com^ +||orquideassp.com^ +||orrxhawuffypn.site^ +||orseduecrapula.cfd^ +||orsnarking.cfd^ +||orsqgxiuhkitm.website^ +||orssqnspoizjj.online^ +||orthiteforams.cyou^ +||ortigaervils.cyou^ +||ortuhaxjansbr.store^ +||oruxmvyydrvkr.website^ +||orvgpjjyagvfn.site^ +||orvietnmqxcgm.online^ +||orymaza.qpon^ +||orzukuzorpxvp.online^ +||osamachoice.com^ +||osamacom.com^ +||osamadada.com^ +||osamafusion.com^ +||osamaglow.com^ +||osamahit.com^ +||osamaimpact.com^ +||osamaiscool.com^ +||osamamama.com^ +||osamamingle.com^ +||osamanamana.com^ +||osamapk.com^ +||osamara.com^ +||osaminesculped.com^ +||osarmapa.net^ +||oscseiyqeaafd.website^ +||osdkublrgnidm.website^ +||osdqzaas.in^ +||osdvmhchowlvm.website^ +||oseveralyearsfo.org^ +||osfntpxdbhdyp.site^ +||osfultrbriolenai.info^ +||oshacampelis.com^ +||osignaments.org^ +||osigquwnvunsj.top^ +||osiseouvxbgzj.online^ +||osjbeyssyyunp.site^ +||oskiwood.com^ +||osmosisfalerno.com^ +||osncrdtgymcux.online^ +||osnmsqbmyk.com^ +||osooufqwzakqo.online^ +||ospariessolkaws.com^ +||ospartners.xyz^ +||ospkmjsxvihyi.space^ +||ospriyvhotnau.online^ +||osseinskusumplaza.cyou^ +||osseticsetulae.cyou^ +||ossgogoaton.com^ +||osshydreigonan.com^ +||ossianpand.shop^ +||ossmightyenar.net^ +||osspalkiaom.com^ +||osspinsira.com^ +||ossuaryskit.qpon^ +||ostensiblechambers.com^ +||ostentatiousimplement.com^ +||ostgcawizznse.online^ +||ostiolerodden.qpon^ +||ostitischinik.cyou^ +||ostlon.com^ +||ostmeninsp.cfd^ +||ostwsdrdqyvvt.online^ +||ostyakmooning.cyou^ +||osumpdfciiptn.online^ +||oswjdbchjbtpq.website^ +||osynbfqucxqdv.site^ +||otakusphere.online^ +||otarzmlnhshdd.website^ +||otbuzvqq8fm5.com^ +||otdnnpfnqinil.space^ +||otdsjuxmgsinb.online^ +||oteblowdxltre.online^ +||otgyufesofpmu.online^ +||othellomajahowked.cyou^ +||otherleg.pro^ +||otherwisepassageinsulting.com^ +||otherwiserustyvenomous.com^ +||othqkyclkuxrr.space^ +||otices.com^ +||otieu.com^ +||otifuywlqywpf.online^ +||otitishanded.com^ +||otkgnoumbctec.store^ +||otknuxohqzwi.in^ +||otloychbcul.com^ +||otlprhzsyoblp.online^ +||otnolatrnup.com^ +||otoadom.com^ +||otoaowuyvdacd.online^ +||otoavmopb.com^ +||otolitheducive.cyou^ +||otolithscrear.cyou^ +||otologydiploic.qpon^ +||otomiandeleted.cyou^ +||otowlgplnxtmk.website^ +||otqbmlcodvbqg.website^ +||otsoasxgsyabr.online^ +||otswhtxkfprcy.online^ +||otunmakpjbtga.website^ +||otvojqdrozce.com^ +||otvqtoatjgt.in^ +||otwlfwmuubeue.space^ +||otxiytrhjrarw.website^ +||otzemeism.qpon^ +||ouangacunziejollop.cfd^ +||oubjioinzrpre.space^ +||oubsyeanqzytl.online^ +||oucdafmfbalfh.space^ +||ouchruse.com^ +||oucouksirt.com^ +||oucpambrmtexm.online^ +||oudjmuimzsshw.space^ +||oueltdoqctddl.online^ +||ouepihbzwdvrj.space^ +||ouflupanin.cfd^ +||oughtsantral.shop^ +||oughtsnine.cyou^ +||ougnflauhyluf.online^ +||ouhoxibwjvwuz.site^ +||ouiwfrtqcwjeu.online^ +||oulapoat.qpon^ +||ounbiwssqohds.online^ +||ounc4vqhukctmb4brcp6b3yftwqf.cfd^ +||oundhertobeconsist.org^ +||oungimuk.net^ +||oupgcgnevtqjm.site^ +||ouphouch.com^ +||oupvfjtyxfxky.site^ +||ouqnsrtmguuyd.site^ +||oursrestrict.com^ +||ourtecads.com^ +||ourzjibwnnpet.site^ +||ousteemercal.cyou^ +||oustoope.com^ +||outarcaninean.com^ +||outbantavola.shop^ +||outbidplacardshowman.com^ +||outbledemend.cyou^ +||outclaydola.com^ +||outcomefriendlysurname.com^ +||outcrycats.com^ +||outdoorblackie.qpon^ +||outdrewginnier.qpon^ +||outelectrodean.com^ +||outerenhance.com^ +||outgateprat.com^ +||outgazewiglet.qpon^ +||outglanceauditioning.com^ +||outgoingproblem.com^ +||outgunscarshop.cfd^ +||outhornaccusal.qpon^ +||outhulem.net^ +||outjutslagetta.qpon^ +||outlandishanalyst.pro^ +||outlawcontinuing.com^ +||outleapsuppl.cyou^ +||outletdoorstepconnected.com^ +||outlinedesignateinstalment.com^ +||outlinedistinguish.com^ +||outlineflourishingplumber.com^ +||outlledsymbolahush.qpon^ +||outlookabsorb.com^ +||outlordbursts.shop^ +||outlordencreel.cfd^ +||outoctillerytor.com^ +||outonebraxate.com^ +||outpacegeulah.cyou^ +||outplotthamus.com^ +||outprycheir.com^ +||outrageous-structure.pro^ +||outrageoussquad.com^ +||outribnogg.qpon^ +||outrightsham.com^ +||outrightstifflyvending.com^ +||outseammisseat.cfd^ +||outsetnormalwaited.com^ +||outseylor.com^ +||outshowhyalinecondemn.cfd^ +||outsintargum.cyou^ +||outskirtsgrey.com^ +||outskirtspourrev.com^ +||outsliggooa.com^ +||outstanding-window.com^ +||outstandingfrailabroad.com^ +||outstandingspread.com^ +||outstreamoctober.store^ +||outtechnicalspiteful.com^ +||outwarddesert.com^ +||outwardtimetable.com^ +||outwearcirri.qpon^ +||outwilelemuria.qpon^ +||outworedryrot.cfd^ +||outwzgpoxbplr.website^ +||outyardrearmssneezer.cfd^ +||ouujcoazitgjf.site^ +||ouuxjvhdgdsav.space^ +||ouviqwzxkkejz.website^ +||ouwszkswhujxz.online^ +||ouxtwtbpamlll.online^ +||ovalizeunclot.qpon^ +||ovaljaloppy.qpon^ +||ovaloidbizones.qpon^ +||ovambofoud.shop^ +||ovardu.com^ +||ovbwlomqinzsm.site^ +||ovekrdngtazex.space^ +||ovenaccording.com^ +||ovenbifaces.cam^ +||overallbannerrib.com^ +||overbidsettingunderfeed.com^ +||overboardbilingual.com^ +||overcrowdsillyturret.com^ +||overdates.com^ +||overduedistrust.com^ +||overdueknee.com^ +||overestimatejerseyrefrigerator.com^ +||overfedgiggly.cfd^ +||overfxdyqgwvr.space^ +||overgotcaries.com^ +||overjoyedstore.pro^ +||overjoyedtempfig.com^ +||overjoytapises.shop^ +||overlapflintsidenote.com^ +||overletscupfulouttask.qpon^ +||overload4plugins.com^ +||overloadenjoy.com^ +||overnightabroadcraftsman.com^ +||overnighttendon.com^ +||overprotectiverecreatebrush.com^ +||overseastellsotherwise.com^ +||overseaswhoop.com^ +||oversightpauserefreshment.com^ +||oversleepwilling.com^ +||oversolosisor.com^ +||oversotflossie.qpon^ +||oversumcoppice.cfd^ +||overtakecharley.com^ +||overthrowgrass.com^ +||overthrowslash.com^ +||overtimehauntedcrucial.com^ +||overture.com^ +||overturnelse.com^ +||overturnmarshaltowers.com^ +||overwebwhorl.com^ +||overwetpotline.qpon^ +||overwoncorojorimers.qpon^ +||oveyfuseau.qpon^ +||ovf3ykfh2gnx3myfmvc.cfd^ +||ovghljmcnxejx.online^ +||ovgkunasfx.in^ +||ovgpljyqpochn.store^ +||ovidtatu.qpon^ +||oviscurdoofencer.cyou^ +||ovjocjgro.in^ +||ovl3h4oo1vw7xxc.cfd^ +||ovngncmkasjyyy.com^ +||ovngwowapygbl.site^ +||ovnudogmtcypg.online^ +||ovoloencodecarity.qpon^ +||ovonicscalumetdiquat.cyou^ +||ovozxiftkxwtg.online^ +||ovpukbvfluhnw.site^ +||ovsaopbvoajdn.website^ +||ovtflklfxbrgo.today^ +||ovtzuuepngygl.icu^ +||ovulumsoutersberiber.cfd^ +||ovvghgmsdefhf.online^ +||ovvpwkalipjts.online^ +||ovwjauothlcix.site^ +||ovxbqejrplwam.space^ +||ow5a.net^ +||owajwdyuesrbl.space^ +||owcocjnvemjlo.com^ +||owdefgcqhxtyf.store^ +||owedicing.cyou^ +||owenismyeggmen.cfd^ +||owfijkhomxdfo.space^ +||owgyeltfxgjom.space^ +||owhauzbiydccz.online^ +||owhdishcnrrzq.space^ +||owhnkemicd.com^ +||owhtcuwab.in^ +||owixyzasgmdgl.website^ +||owknilagsjupz.space^ +||owlerydominos.cam^ +||owlismteest.qpon^ +||owlkswgtbygtu.site^ +||owlunimmvn.com^ +||owmhduabdhino.website^ +||owndangle.com^ +||owndata.network^ +||owonchghcurdw.website^ +||owrehipburkes.qpon^ +||owrj838bplzo8j536urt.cfd^ +||owrkwilxbw.com^ +||owslnuzidiugg.store^ +||owssalylvzcox.site^ +||owtpooquoezgt.space^ +||owvedlxhgvvxf.store^ +||owvkfujan.com^ +||owwbulasllttm.space^ +||owwirzikteowa.online^ +||owwqbgkedrqeh.space^ +||owxjmqrzgzyou.site^ +||owxpzlhikjoyj.store^ +||owxsolpqxqyiy.space^ +||owywlwjvvkcjc.site^ +||oxacidunfiend.shop^ +||oxado.com^ +||oxamidegimpy.cfd^ +||oxauxgbuzyyae.online^ +||oxbbzxqfnv.com^ +||oxbeclydonoxr.space^ +||oxbowfailureinvite.com^ +||oxbrakepasso.cyou^ +||oxducycsdzrlm.site^ +||oxepmgkryfttv.online^ +||oxfnvsoyzykjq.site^ +||oxgtyboomzvuv.online^ +||oxgzmfrmvpukn.space^ +||oxhornneback.qpon^ +||oxidecimbrimiscrop.cyou^ +||oxldlxctnzyda.website^ +||oxlffequrkka.com^ +||oxljikhurdr.in^ +||oxlmsxqhjtykk.online^ +||oxmhrrzmoqnco.online^ +||oxphonymutedly.qpon^ +||oxrdktkaktdod.online^ +||oxrqbdaslqcek.space^ +||oxshgkbicsayq.website^ +||oxskinbini.cyou^ +||oxtlululpbcpx.com^ +||oxtracking.com^ +||oxtsale1.com^ +||oxvmctwdsernj.site^ +||oxvroiurf.com^ +||oxwpsqfoyaxkc.website^ +||oxwsggbacrrdl.website^ +||oxwytjjqlkoqm.website^ +||oxybangiceless.cyou^ +||oxygenopposed.com^ +||oxygensalts.com^ +||oxysijnvkoujm.space^ +||oxystc.com^ +||oxznypldeitas.space^ +||oy31227omkvlegc3vyr.cfd^ +||oyazrojxnntsc.site^ +||oyecilgvdeazh.online^ +||oyeonwxjqtzcm.website^ +||oyfmthysfgebtmr.com^ +||oyfubcxsssvwo.online^ +||oygriuqguwqbi.website^ +||oyi9f1kbaj.com^ +||oyiojxumanrvr.online^ +||oyixaslghuqky.space^ +||oyjdfcmxrudoo.space^ +||oykfrenzqxywv.online^ +||oyl8v127pepp6l7ik37ieu.cfd^ +||oyllhwxhhwlir.site^ +||oymfopsxkdygv.online^ +||oynveturupdut.site^ +||oyo4d.com^ +||oyrsdqzzdfmjy.website^ +||oysterspottery.com^ +||oytnuqskillmx.online^ +||oytudnrubcwqp.online^ +||oyudmaizidpnx.space^ +||oyufrryvbidhn.site^ +||oyuluswjqnpzr.site^ +||oyupyeptsifnl.space^ +||oyvczwsohpzqw.online^ +||oywbkbaiznddy.site^ +||oyxfysqkddwyh.space^ +||oyydrqvuoahcz.online^ +||oyzcvrmyqmd.com^ +||oyzrtfwttwnjv.site^ +||oz7tkqg2bihwb9c8j3eggjplxix.cfd^ +||ozafzlbjhnmfx.website^ +||ozagsrueobtvw.site^ +||ozanalfas.com^ +||ozasiskoddhmk.online^ +||ozbnudakqvu.in^ +||ozbtkhflawdnt.online^ +||ozcfpsxmyqx.com^ +||ozckerranlakm.online^ +||ozfxwlyarvwzy.site^ +||ozihlzpeabppp.online^ +||ozikxjdxczhbg.online^ +||ozkqakffarri.com^ +||ozlhjzqupdyuu.site^ +||ozmafxvzuv.in^ +||ozmbrfwzfreie.space^ +||ozmmzgezcybxp.website^ +||ozonateplock.qpon^ +||ozonemedia.com^ +||ozonicarboret.qpon^ +||ozotypeyippee.qpon^ +||ozoukcyfdwplb.website^ +||ozpifymthfser.space^ +||ozpmpdcdgwzpw.site^ +||ozpnmwkzyvazx.store^ +||ozqxbtyrotvwk.online^ +||ozramquqvttqy.space^ +||ozrgkaphe.in^ +||ozsiwqbeanupu.space^ +||ozslvgepdluca.store^ +||ozsrtnubjgkjb.online^ +||ozthaerqcoabk.space^ +||ozuvdfqzkqxho.store^ +||ozvmsmvmbxlfg.site^ +||ozxhasoxc.in^ +||ozxvyaklufsce.space^ +||ozyxnwnpfdiup.website^ +||p0b2hqyz.xyz^ +||p12acx.com^ +||p182qlx5wmkp5k3x1cb8.cfd^ +||p2ed.site^ +||p2r25bl4vlylij.rest^ +||p2wdb.com^ +||p2yn.com^ +||p34t4pb1zg8eetn8n52z.rest^ +||p3617cq69htqix538by5f.cfd^ +||p3lj34e33yz6ug5z.rest^ +||p6n0g0ia.xyz^ +||p6tkffrokgptov6mp7yfl9y4gxzw6.cfd^ +||p7tycr5jcw42r2pflvo7.cfd^ +||p92729tmxjc835vj47m5ovr44eiw4ux5l.cfd^ +||p9wxctem41wmbn3n3kuh.cfd^ +||pa5ka.com^ +||paaeeets.net^ +||pabjriyhlvedc.vip^ +||paceaskhari.com^ +||pacedosages.cyou^ +||pacekami.com^ +||pacestrengthentribute.com^ +||pachegaimax.net^ +||pacifictuckercloak.com^ +||packagebellysmoothly.com^ +||packerrehoned.cfd^ +||packeryshellacchacmas.cfd^ +||packeteagle.com^ +||packlenseavesdrop.com^ +||packouabain.cfd^ +||packsofgood.com^ +||pacvrvuworosd.website^ +||paddlefidget.com^ +||paddleweekendnudge.com^ +||padgzdbyelrca.online^ +||padinventoryvile.com^ +||padlockmanners.com^ +||padsabs.com^ +||padsans.com^ +||padsatz.com^ +||padsims.com^ +||padsimz.com^ +||padskis.com^ +||padslims.com^ +||padspms.com^ +||paeastei.net^ +||paehakooyuygo.website^ +||paehceman.com^ +||paeoniccolin.cfd^ +||paetitrsmslrq.website^ +||pageantlethal.com^ +||pagejunky.com^ +||pagerrentablespotlight.com^ +||pagkitahn.com^ +||pagodacushvolapuk.qpon^ +||pagorwzigarf.in^ +||pahhyawyeqffq.com^ +||paht.tech^ +||pahtdz.tech^ +||pahtef.tech^ +||pahtfi.tech^ +||pahtgq.tech^ +||pahthf.tech^ +||pahtky.tech^ +||pahtnf.tech^ +||pahtoa.tech^ +||pahtqo.tech^ +||pahtwt.tech^ +||pahtzh.tech^ +||pahzvkxwkxtzm.website^ +||paid.outbrain.com^ +||paidcomparatively.com^ +||paiglesavages.cfd^ +||pailbootyinfuriate.com^ +||pailoualizari.qpon^ +||painchrappers.qpon^ +||painedhabehamel.cyou^ +||painenoyance.cyou^ +||painfulcaskspretend.com^ +||painkillerlickconceit.com^ +||painlessassumedbeing.com^ +||painlessspill.com^ +||painlessvatmoonlight.com^ +||painsdire.com^ +||painspleasebuilds.com^ +||painsucre.com^ +||paintingforgive.com^ +||paintydevelela.org^ +||pairchat.click^ +||pairsdismissedralph.com^ +||pairturnnumerous.com^ +||paizedspetchlioness.cyou^ +||pajafmgfdwqug.online^ +||pajamasaccommodationaltogether.com^ +||pajamasslowingregistered.com^ +||palaceerrandneighbour.com^ +||palacesmoneme.shop^ +||palaceunlituntouched.com^ +||palaitebacking.qpon^ +||palamounty.com^ +||palateserious.com^ +||palautrusted.cfd^ +||palecount.com^ +||palelitistsnick.com^ +||palelouisalife.com^ +||palermosonovox.cfd^ +||paletteeasily.com^ +||palibs.tech^ +||paliliaimbriumvansire.qpon^ +||palishcanapcrocky.cfd^ +||palishhunchy.cfd^ +||palissestrake.cfd^ +||palletbeef.cyou^ +||pallicortezproetus.qpon^ +||palloneseism.qpon^ +||pallorsmitefungus.com^ +||palpartiallybricks.com^ +||palpatecricketmajesty.com^ +||palpateshakedecoy.com^ +||palpedrecramp.qpon^ +||palsybecamedislike.com^ +||palsybrush.com^ +||paluinho.cloud^ +||palulusshojo.shop^ +||panamaelator.cfd^ +||panaservers.com^ +||panaxaloxitekarsha.qpon^ +||pancakesuspenseant.com^ +||pandappb.cyou^ +||pandarcliff.cfd^ +||panduragoalies.cyou^ +||paneltabuedemyds.qpon^ +||pangaeainfima.com^ +||panganeguttled.qpon^ +||pangiuseable.com^ +||pangsoundpayback.com^ +||panicalendings.shop^ +||paniersnocence.cfd^ +||panjsnlmneasi.store^ +||pannahazes.com^ +||pannierbaffs.cfd^ +||panorpacaw.cfd^ +||panpipekand.cyou^ +||pansywebsite.com^ +||pantafives.com^ +||pantherinvincible.com^ +||pantiesdrayed.cyou^ +||pantomimeinforms.com^ +||pantomimemailman.com^ +||pantoonguggled.cyou^ +||pantrycornyunload.com^ +||papatrol.xyz^ +||papawjellica.shop^ +||papawrefits.com^ +||papelonkokoona.com^ +||papereruption.com^ +||paperestop.qpon^ +||papermonthlyalright.com^ +||papersbanlieu.qpon^ +||papismwikeno.cyou^ +||papmeatidigbo.com^ +||pappeahemepechay.cyou^ +||papularsile.qpon^ +||paqxspfbapsai.site^ +||paraderascaldefinitely.com^ +||paradizeconstruction.com^ +||paraflebebaittruer.cfd^ +||paragedevaul.cfd^ +||paralyzeddisreputablespin.com^ +||paramedicwarlock.com^ +||parameteroutprocedures.com^ +||parameterscoal.com^ +||parametersfrequency.com^ +||paranoiaambiguity.com^ +||parashparyro.com^ +||parasitebootslion.com^ +||parasitecoalshooter.com^ +||parasitematurity.com^ +||parasiteoutdoorsmix.com^ +||parasolcrimefactory.com^ +||parbatekolkozyimblaze.qpon^ +||parcelconsists.com^ +||parched-mail.com^ +||parcookgoofah.qpon^ +||pardahsmidis.qpon^ +||pardalpyoidguilds.cfd^ +||pardlupe.qpon^ +||parecatheti.cfd^ +||pareilgipons.qpon^ +||parejatoused.cyou^ +||parentsjobquote.com^ +||pargedboarded.cyou^ +||pargescoigue.cyou^ +||pargetagape.cyou^ +||paripartners.ru^ +||parisjeroleinpg.com^ +||parisonmenkibsattie.cyou^ +||parissommite.qpon^ +||paritygauily.com^ +||parkaslauncespheges.cyou^ +||parkishfart.qpon^ +||parkurl.com^ +||parkydiurons.qpon^ +||parlishbewhig.cyou^ +||parlordenialrummage.com^ +||parlouroutlayfavor.com^ +||parloursixty.com^ +||paroecyupturns.qpon^ +||paronymhyssopsnowt.qpon^ +||paroticoralism.qpon^ +||parquetfooyung.cfd^ +||parsedancone.cyou^ +||parserskiotomy.com^ +||parsimoniousinvincible.net^ +||parsnippilling.com^ +||parsonauthorizationwisdom.com^ +||parsoninfatuatedcondole.com^ +||parsonoverdue.com^ +||partedcarverbottles.com^ +||partiallytangerine.com^ +||participantthoughtfulvoracious.com^ +||participatechronic.com^ +||participationfinessemachinery.com^ +||particularbearingmemorable.com^ +||particularlypoisonous.com^ +||partieslithestbucked.cfd^ +||partimcoranceknez.cyou^ +||partitabeluga.cyou^ +||partlypalpate.com^ +||partnerbcgame.com^ +||partnermatic.com^ +||partners-show.com^ +||partonstaipan.cyou^ +||partridgepuny.com^ +||partridgevowel.com^ +||partsoptimisticrebound.com^ +||partsroll.xyz^ +||partsroll1.xyz^ +||partsroll2.xyz^ +||partyinglongitudekept.com^ +||partyjerk.com^ +||partypartners.com^ +||partyroll.xyz^ +||parvulephrenol.qpon^ +||parynical.com^ +||parzoom.com^ +||pas-rahav.com^ +||pasbstbovc.com^ +||pasengclatch.qpon^ +||paservices.tech^ +||paseschalahs.qpon^ +||pashedrehone.qpon^ +||pasilloungodbases.qpon^ +||paslrdcizpgdw.online^ +||paslsa.com^ +||passengercomprehend.com^ +||passeura.com^ +||passfixx.com^ +||passingcounselrueful.com^ +||passion-industry-game.com^ +||passionatenormally.com^ +||passirdrowns.com^ +||passivealexis.com^ +||passivecollaboratefrontier.com^ +||passkeycarrick.shop^ +||passmanflagged.cfd^ +||passtechusa.com^ +||passwordslayoutvest.com^ +||passwordssaturatepebble.com^ +||pastaleafceiling.com^ +||pastasthames.qpon^ +||pastedict.com^ +||pastehazel.com^ +||pastel-hire.pro^ +||pasteldrowsyaboriginal.com^ +||pastelentirely.com^ +||pastelskill.com^ +||pastimelardoon.shop^ +||pastinaveinerstibet.cyou^ +||pastisdolium.cyou^ +||pastorsbiacid.qpon^ +||pasttable.com^ +||pasttrust.com^ +||pastunit.pro^ +||pastureoriental.com^ +||pasxfixs.com^ +||patacabowsery.cyou^ +||patacajabia.com^ +||patakaendymal.top^ +||patapatkerogen.cfd^ +||patartnitchbuccal.cfd^ +||patchedknute.cfd^ +||patchportlyparking.com^ +||patenredipttrebled.qpon^ +||paternitypassengersift.com^ +||patgsrv.com^ +||patheticbrick.com^ +||patheticinteract.com^ +||pathshoneycombprimitive.com^ +||pathtrck.website^ +||patientconfusedperfectly.com^ +||patienthercoldness.com^ +||patinaskosong.cyou^ +||patiseoversay.cyou^ +||patrickuncolt.cfd^ +||patroledefang.cyou^ +||patrolsodium.com^ +||patronagemaestroforestall.com^ +||pattervigourblend.com^ +||pattycolourful.com^ +||pattyponderstuffy.com^ +||patucatorilis.cfd^ +||patxtuurvbivm.space^ +||paucitytestulecognacs.cyou^ +||paughtytongan.cfd^ +||paulastroid.com^ +||paulgravitynumeral.com^ +||pauperepoxide.cyou^ +||paupsoborofoow.net^ +||pausaibeamlet.qpon^ +||pauxihypoxia.com^ +||paveravouterlacks.cyou^ +||paveskatikairline.qpon^ +||pawgleamed.com^ +||pawheatyous.com^ +||pawinextricable.com^ +||pawinggrazerssartain.cfd^ +||pawkerylapbmarnix.cfd^ +||pawntransgress.com^ +||pawsconservation.com^ +||pawsdefenseneigh.com^ +||pawsleapedfishy.com^ +||paxmedia.net^ +||paxsfiss.com^ +||paxxfiss.com^ +||paxzslunbisvh.online^ +||pay-click.ru^ +||payeddrub.com^ +||payenfind.cyou^ +||payersgreking.com^ +||payingtore.com^ +||paymentperiodiciceberg.com^ +||payoffssect.cyou^ +||payorscricoidgainers.cyou^ +||payoutinhale.cyou^ +||payrollmerchant.com^ +||paysagecommise.qpon^ +||payslipspurse.com^ +||paytheicjmncr.online^ +||pbcde.com^ +||pbdiasnrimgbo.online^ +||pbergjgkhbjqc.online^ +||pbfh96fltj24y5frhvxwbe4r53yzi.cfd^ +||pbfhahctctuoa.site^ +||pbfrbivihszxk.space^ +||pbgcxdfyfgjlt.online^ +||pbgkweapdycud.website^ +||pbhdhxsamysrd.com^ +||pbiauzycouesz.space^ +||pbikowiwtqlpd.website^ +||pbilcsebbutq.com^ +||pbizeusoaxyfl.online^ +||pbknxnruccskn.online^ +||pblcpush.com^ +||pblinq.com^ +||pbmdmucwvxmrb.space^ +||pbmipgoqdlgnv.site^ +||pbmixbfrgkarj.space^ +||pbmjjozyvyegz.store^ +||pbokotlibvpet.website^ +||pbolnoomselab.online^ +||pbpbcriabaaay.website^ +||pbplsudnxzgky.space^ +||pbqhjgkueppwm.online^ +||pbqxrrwoltzaj.website^ +||pbryspiwmdqqp.website^ +||pbshpxzkwgv.com^ +||pbsrhknvoaioy.online^ +||pbtbypkdqlxmn.love^ +||pbterra.com^ +||pbtgbodqcsntf.store^ +||pbugzelgt7vlxm.cfd^ +||pbwrt9qkobb5jlq.cfd^ +||pbxai.com^ +||pbxevgpiovprp.site^ +||pbxphallus.qpon^ +||pbyfqdlhzrrit.online^ +||pbymqomcjgyqk.online^ +||pbymzmwwopnlm.site^ +||pbzgcofnurhyz.website^ +||pc-ads.com^ +||pc180101.com^ +||pc20160301.com^ +||pc2121.com^ +||pc8ltve6yqbwbvq.cfd^ +||pcaniivclwsgw.website^ +||pcbcjkodcvxxgrn.com^ +||pcbixpbwdxqoa.site^ +||pcbvqognfewsw.online^ +||pcbxuayssmqkn.online^ +||pcccxvckbqdlb.site^ +||pccxfiekp.com^ +||pcdeyoepvaxdl.site^ +||pcdwm.com^ +||pcexhftbidjqk.site^ +||pcfeoayammroh.website^ +||pchtkxbomdohto.com^ +||pcidcacaroff.in^ +||pcitaaeimgifl.online^ +||pck1l6h8vfbf7tnymyqxfp4c4mo9l.cfd^ +||pckagkewuqfox.website^ +||pcktmkfjnkfqm.club^ +||pclehay.cfd^ +||pclk.name^ +||pcmclks.com^ +||pcmpcszarkerr.space^ +||pcnerliukctck.online^ +||pcnuhzoxhjhvd.website^ +||pcrwmppj.com^ +||pcsaitqabthnujh.com^ +||pcsauvntjwrxm.website^ +||pcssvfanpytpp.space^ +||pcsvxgprwizlz.online^ +||pctlwm.com^ +||pctsrv.com^ +||pctv.xyz^ +||pcxpmbmuialjb.space^ +||pcyqadvwrqsmc.online^ +||pdainpzfelpch.site^ +||pdebfoicutkdt.site^ +||pdfsearchhq.com^ +||pdgknglzhohbi.online^ +||pdhkjnndwzwys.site^ +||pdhsturqsejda.space^ +||pdhwgryymgvyr.website^ +||pdiiclqzeglig.site^ +||pditfcqewnobw.site^ +||pdjbkuevogfks.online^ +||pdkiqznelwvdj.site^ +||pdkxnkjozibbf.website^ +||pdmsfgexdsxvl.website^ +||pdn-1.com^ +||pdn-2.com^ +||pdpohrkfxrxrz.website^ +||pdptebicpdmry.online^ +||pdqzrlfcyihsc.store^ +||pdrearjakugya.store^ +||pdrsppnaboaep.online^ +||pdtyhplauzdtu.online^ +||pdvacde.com^ +||pdwrsrmjjrvvj.space^ +||pdzxeaxlqnvac.site^ +||peacebanana.com^ +||peacefulhillwalk.com^ +||peacefulmeadowwalk.com^ +||peacockresistpeppermint.com^ +||peacockvowel.com^ +||peacyx.com^ +||peadeplete.com^ +||peaiismrozzersdimetry.cyou^ +||peakclick.com^ +||peakilygluten.com^ +||peakxgcbgfrsn.site^ +||pealedarnut.cfd^ +||pealerartizepoliter.qpon^ +||peanthnakptaw.website^ +||pearlsteems.cyou^ +||pearpermitted.com^ +||peasacknowledged.com^ +||peasantcurbdeceased.com^ +||peasantratio.com^ +||peasbishopgive.com^ +||peasgutsprogramme.com^ +||peasseventy.com^ +||peaviesapios.cyou^ +||peavyegeria.cyou^ +||pebancolor.cfd^ +||pecantinglytripod.com^ +||peccantstuck.cfd^ +||pechspemphix.cyou^ +||pecialukizeias.info^ +||pecifyspacing.com^ +||peckedgiddify.qpon^ +||peckersparks.cfd^ +||pecklehydro.com^ +||pectationseleau.org^ +||pectosealvia.click^ +||pectousmaun.shop^ +||pecuniamagiccambeva.cfd^ +||pedaloflakierchicote.cyou^ +||pedchats.cfd^ +||pedigreeamiableferry.com^ +||pedjnohpdrthi.site^ +||pedlerahem.cyou^ +||pedxbegjosaew.space^ +||peekcragassisted.com^ +||peekedmaximin.shop^ +||peekingprotonprovent.cyou^ +||peeksloather.cfd^ +||peeksmiddle.com^ +||peelingsimaba.qpon^ +||peelwrinkle.com^ +||peensabdomen.qpon^ +||peepbesides.com^ +||peepfunnel.com^ +||peepholecockpit.com^ +||peer39.net^ +||peeragelevyne.com^ +||peerdomfoun.qpon^ +||peerlessqueensuccessfully.com^ +||peevesfellafraid.com^ +||peevukpzk.com^ +||pefftzbjtapkv.online^ +||pefpslbpjycno.space^ +||peganumjarful.cfd^ +||pegsbhungi.cfd^ +||pehvwzyx.com^ +||peisetoolers.com^ +||peivwesshsygd.space^ +||pejzeexukxo.com^ +||pekeshackle.com^ +||pekjhombxovne.online^ +||pekrhjaeiwkcm.space^ +||peleanredress.cyou^ +||pelissesemoulepunlet.qpon^ +||pelliancalmato.com^ +||pelonhoppledmists.cfd^ +||peltmalecheering.com^ +||pemmhrrqksncr.space^ +||pemsrv.com^ +||pemu3ti5fvi6914cp913yhg32yil7ubepz3.cfd^ +||penangrimose.qpon^ +||pencillacklesslackless.com^ +||pencilsprout.com^ +||pendantigneous.shop^ +||pendulejewely.com^ +||pengowinnocknaggin.qpon^ +||penguincaviarsuccession.com^ +||penguinhelpful.com^ +||penicilsoph.cfd^ +||penitentagilemenace.com^ +||pennetdhotispulpous.qpon^ +||pennetflamsessoin.cyou^ +||penniedtache.com^ +||pennilessboost.com^ +||pennilesscomingall.com^ +||pennillcompost.cyou^ +||pennyotcstock.com^ +||penochilinodiquats.cfd^ +||penrackparlors.cfd^ +||pensionermattersarrogant.com^ +||pensionflutter.com^ +||pensivedean.com^ +||pensterpotions.com^ +||pentalime.com^ +||pentosephycic.shop^ +||penurykits.com^ +||peopaoagx.com^ +||peoplerakitunpick.cyou^ +||peoriacommunityagainstviolence.org^ +||peponidisidae.cyou^ +||peppermintthorpeguess.com^ +||peppy2lon1g1stalk.com^ +||peqfgslwvqndy.space^ +||perackwutexkp.site^ +||perailamista.shop^ +||peraurod.qpon^ +||percentscalespoorly.com^ +||percheropatagease.cyou^ +||perchincomenotorious.com^ +||perchlief.cyou^ +||percoidmaza.qpon^ +||percussivedrip.com^ +||percussivetakelaunch.com^ +||pereliaastroid.com^ +||peresentacconette.com^ +||perfectgrandmother.com^ +||perfectionwatching.com^ +||perfectmarket.com^ +||performanceadexchange.com^ +||performanceangry.com^ +||performanceonclick.com^ +||performancetrustednetwork.com^ +||performhouseholduneasy.com^ +||performingguests.com^ +||performverifyonward.com^ +||perfumebonusspectacle.com^ +||perfumeconscious.com^ +||perfumed-development.com^ +||perfumedstretch.com^ +||perfumemicell.qpon^ +||perfusetemps.qpon^ +||perfxylenol.cyou^ +||pericukong.cyou^ +||perigshfnon.com^ +||perilastronaut.com^ +||perileffects.com^ +||perimeteravertendless.com^ +||perimeterravenousdelusional.com^ +||periodnecklacetrained.com^ +||periodsairplane.com^ +||periodyakshi.qpon^ +||perishauthorsharrow.com^ +||perky-method.com^ +||perkyawaitingmammoth.com^ +||perkyexcitedlyscenario.com^ +||permissiblesuspicious.com^ +||permissioncoma.com^ +||permittedcenterrevolve.com^ +||permittedrearstub.com^ +||peropustautogs.cyou^ +||peroutsell.qpon^ +||perpetratoralimony.com^ +||persecutealltoothpaste.com^ +||perseveranceincentiveempire.com^ +||persianvocabularypeasant.com^ +||persistarcticthese.com^ +||persistdeportraid.com^ +||persona3.tech^ +||personal-study.pro^ +||personalengage.com^ +||personalparcelmarker.com^ +||personifyproposition.com^ +||perspectivebriefing.com^ +||perstoppedsunken.com^ +||pertauthentic.com^ +||pertawee.net^ +||pertersacstyli.com^ +||pertestsatire.cfd^ +||pertinent-yard.pro^ +||pertinentberriesoutburst.com^ +||pertinentking.com^ +||perverseexpensiveconquest.com^ +||perversehardly.com^ +||pervertmine.com^ +||pervertstoga.cyou^ +||pesantepechys.cfd^ +||pesgyihbyblaf.website^ +||peshitomohr.qpon^ +||peskycrash.com^ +||peskyinvestment.com^ +||pessimisticextra.com^ +||pesterpolling.cyou^ +||pestilentberrysincere.com^ +||pestilenttidefilth.org^ +||pestilenttransaction.com^ +||petargumentswhirlpool.com^ +||petendereruk.com^ +||peterbetrayinggenerator.com^ +||peterlyricaldodge.com^ +||peterpangmerit.com^ +||petrbeechereleazar.cyou^ +||petrifyplacebo.cfd^ +||petrolgraphcredibility.com^ +||petrolssallies.cfd^ +||petsrulefondness.com^ +||pettilylud.qpon^ +||peugyiwmgvadr.space^ +||peukasrsihavele.org^ +||pevrksshtngcg.site^ +||pevxxyfyhsvlh.global^ +||pewfeafvlaiwe.online^ +||pewyforz.shop^ +||pexcsvjiecyoi.site^ +||pexmjwvdpjjdd.space^ +||pezksldjeasrv.website^ +||pezpjhmpwqksw.online^ +||pezrqwvweqvrp.site^ +||pezwjfoozrpiv.online^ +||pf34zdjoeycr.com^ +||pf66u634qfvhrj95.cfd^ +||pfautxkmfmrbu.space^ +||pfbiforocldba.site^ +||pfbtmkzejf.com^ +||pfckhpjabpmiv.site^ +||pfctoaznqazlg.store^ +||pfewuoymt9hzkei41v8bqpfwi6x.cfd^ +||pffgvpihauhav.website^ +||pffueglkyydya.online^ +||pfivvdqcuvmig.space^ +||pfivwhdsliscy.online^ +||pfl8ebkuoj88wz.cfd^ +||pfmiliexijdfl.website^ +||pfmmzmdba.com^ +||pfnxggbwxmrcl.online^ +||pfosuclihgjxi.space^ +||pfpmdbyighkrn.online^ +||pfrejcjrja.com^ +||pftrhtiiyduhz.website^ +||pftufoszjdneq.online^ +||pfuhoaygpop.com^ +||pfundeoutacts.cyou^ +||pfuxksjzeccih.top^ +||pfwufhoblovfz.website^ +||pfytpzssrhyah.website^ +||pfzxtzpzfrify.website^ +||pg7g59jk25kvtl7l8h.cfd^ +||pganwasqoeibh.website^ +||pgdudllfjgeyy.online^ +||pgeevebcbzzcm.site^ +||pgfnciyodtbsm.store^ +||pgfviujllriob.website^ +||pgisdxbicrxqi.online^ +||pgkmbmnndmwwo.online^ +||pgmcdn.com^ +||pgmediaserve.com^ +||pgmjoznfuvjvf.online^ +||pgnasmcdn.click^ +||pgo99.com^ +||pgovikzhcfwwu.space^ +||pgoycmzrmtklo.space^ +||pgpartner.com^ +||pgqhgpffdxwci.online^ +||pgshkzyqxqjjb.online^ +||pgsmnaegntnkt.online^ +||pgsoloddwczpn.online^ +||pgssl.com^ +||pgubarjtdghvg.site^ +||pgxzsmxxdeuua.space^ +||pgyikoxaonfpt.site^ +||pgzjhqnndpyyt.site^ +||phaedobirdies.cyou^ +||phantomdisappoint.com^ +||pharmacycoercive.com^ +||pharmcash.com^ +||pharmmondial.cyou^ +||pharosbostons.qpon^ +||pharosurunday.shop^ +||pharynxrovet.cfd^ +||phastoag.com^ +||phaticbutts.qpon^ +||phbnyvscipzzk.online^ +||phbtjvjsamolb.website^ +||phcbuolvbodxd.online^ +||phemiclanguet.qpon^ +||phgop1.com^ +||phhbwcfwxgbh.com^ +||phialedamende.com^ +||phicmune.net^ +||phidianowlet.com^ +||phidonatome.com^ +||phiesibices.qpon^ +||philltwinges.cyou^ +||philomewevet.cyou^ +||philosophicalsuppliesjab.com^ +||philosophicaltomorrow.com^ +||philosophicalwarndrugged.com^ +||philosophydill.com^ +||philosophyforgerydense.com^ +||philtrerewayle.cfd^ +||phjpiksdnhccr.site^ +||phkajhwgblmke.space^ +||phkavwzvgjjtw.online^ +||phkazhp.com^ +||phknwauhyunwi.online^ +||phkrdmuihhiee.website^ +||phlegmcycliae.cyou^ +||phmdwcoqokplm.store^ +||phmtcfsfjtcpm.space^ +||phnyweovtxupv.com^ +||phobiabrule.cfd^ +||phobiasila.qpon^ +||phobiesbeshine.cyou^ +||phobistdirlsmanis.cyou^ +||phobpyorgiokc.space^ +||phocallegatosrondels.cfd^ +||phomueguyyilv.store^ +||phoneboothliningmany.com^ +||phoneboothsabledomesticated.com^ +||phonecustomer.com^ +||phonehalfmoonwild.com^ +||phonemedutra.cyou^ +||phonydepth.com^ +||phonyhardware.com^ +||phoossax.net^ +||phorakittlespiller.qpon^ +||phosphatevotinglydia.com^ +||photicupcoasthallali.cyou^ +||phpbjalhigtqe.site^ +||phphtscriver.com^ +||phprdouhkyukn.space^ +||phpzsathmoeon.online^ +||phqcjlykoydpg.space^ +||phqorhdyyvjidpp.com^ +||phrasegoodnessinhuman.com^ +||phraseoreburial.com^ +||phrdzpqqbukjn.store^ +||phrenicziharspeal.cyou^ +||phrfushpadbco.website^ +||phrymapyritic.com^ +||phsism.com^ +||phts.io^ +||phudsumipakr.net^ +||phukienthoitranggiare.com^ +||phuolhogmxin.com^ +||phxbjgnhrqbuc.website^ +||phxkohxxcjcoz.store^ +||phyajhdifoqn.in^ +||phylonlegumin.qpon^ +||phynefopsu.com^ +||phypvucarjpoo.site^ +||physical-beyond.com^ +||physical-meaning.com^ +||physicallylee.com^ +||physicalrole.com^ +||physiciancowardly.com^ +||physicsimpatient.com^ +||physicspresume.com^ +||phytolcowfish.cfd^ +||phytonsfurner.com^ +||pi243rnxjmqx6be3.cfd^ +||pi8nrmi7tpcbjlg3rtehy.rest^ +||pi95lzihjbh91375yf.rest^ +||piabaccw.cfd^ +||piaculaagrote.com^ +||pianistdusted.com^ +||pianopleadedenlighten.com^ +||piasabagiveth.com^ +||piazzaaiery.qpon^ +||piberiiqzcegb.site^ +||pibikakrg.com^ +||pic2host.icu^ +||pichost24.club^ +||pichost24.site^ +||pichost24.website^ +||picinaevejoces.cyou^ +||pickaflick.co^ +||pickedbundle.com^ +||pickedsarcasm.com^ +||picketssuavely.qpon^ +||picklereunited.com^ +||picklesbureaucracyconvene.com^ +||pickmannavvystewish.cfd^ +||pickmeneluted.qpon^ +||pickpocketornamenthurried.com^ +||pickyreflows.cfd^ +||picmega.com^ +||pictela.net^ +||pictureshosierygauntlet.com^ +||picturespushfulrookie.com^ +||picturesqueundercover.com^ +||piddlertuneup.cfd^ +||pieazaihprmpz.site^ +||piedrahuskiesdeboned.cfd^ +||pieholla.shop^ +||piercing-flower.com^ +||pierconditioner.com^ +||pierinfactories.net^ +||pierisrapgae.com^ +||pierrotbids.cfd^ +||piesdewatatalukas.qpon^ +||piestprevot.com^ +||pietlbnwfvnge.space^ +||pietosoappend.cfd^ +||pievsejhampai.online^ +||pifferoengird.cyou^ +||pifowotorfwvl.online^ +||pigeoncontentmentcotton.com^ +||pigeonsresourcefulretired.com^ +||piggyquarterbackascension.com^ +||pightlerepugn.cyou^ +||pigmiespercher.qpon^ +||pigtre.com^ +||pihu.xxxpornhd.pro^ +||piingsubeth.qpon^ +||pijenfcpgsham.space^ +||pikeletrabbity.cfd^ +||pikingcomales.cyou^ +||pilawsectatic.qpon^ +||pilcornmunandi.cyou^ +||pilfersspoon.qpon^ +||pilffeovpzuw.in^ +||pilfreclasher.qpon^ +||pilfwgcwedsub.site^ +||pilinetortie.cyou^ +||pilinhomered.com^ +||pillarstamilic.cfd^ +||pilleusxenurus.cyou^ +||pillowcaselogic.com^ +||pillsmerula.cyou^ +||pillsofecho.com^ +||pilotignoranceitch.com^ +||pilotoccasionallygarlic.com^ +||pilotpoems.com^ +||pilotstracking.com^ +||pilqlkpbxgc.com^ +||pilrskqnworjg.online^ +||pimamonthon.cfd^ +||pimarichexagon.shop^ +||pimperypangwe.cfd^ +||pimplabatter.cfd^ +||pimqacihydhna.site^ +||pimqyurkdhekj.website^ +||pinacleengage.cfd^ +||pinatasevap.qpon^ +||pinatasyuckel.cyou^ +||pinbushwhee.qpon^ +||pinchingrapacitydragged.com^ +||pinchunnecessaryaggregate.com^ +||pindastilet.cyou^ +||pine-assets.space^ +||pineegypt.com^ +||pinemonumentssaxophone.com^ +||pink-high.pro^ +||pinkingjay.shop^ +||pinkishbidden.qpon^ +||pinkkeelsynchronize.com^ +||pinklabel.com^ +||pinkleo.pro^ +||pinmantentier.cfd^ +||pinnulepagedom.com^ +||pinonicblisses.qpon^ +||pinsonsroquer.cfd^ +||pintdialler.qpon^ +||pintfunnel.com^ +||pintidjibbers.cyou^ +||pintlouisa.com^ +||pintosapinae.shop^ +||pinttalewag.com^ +||pinwingbrainy.qpon^ +||pinyonsmohwadraffs.cyou^ +||pionaocmsbrfx.site^ +||pioneerbusy.com^ +||piovokqpethen.website^ +||pip-pip-pop.com^ +||pipeaota.com^ +||pipemanslypes.shop^ +||pipeofferear.com^ +||piperharmfuldeclaration.com^ +||pipetmosette.com^ +||pipetssledges.shop^ +||pippedectypal.cfd^ +||pippenxd.shop^ +||pipqgicbrxhwl.website^ +||pipsol.net^ +||pipspicousmatzas.cyou^ +||pipurndc.com^ +||pirateddolling.cfd^ +||piratequiets.cfd^ +||piratyaquarid.cfd^ +||pirnxbdjowuoi.online^ +||pirogueevicke.qpon^ +||pirrteguas.qpon^ +||pisayhotbedsaffing.cfd^ +||pisgahserve.com^ +||pisism.com^ +||piskaday.com^ +||pisksalvo.qpon^ +||pit3wzvqf2xfnw1uml23eknmq.cfd^ +||pitangatawkinchizzel.qpon^ +||pitchedfurs.com^ +||pitdjtfxcamyx.site^ +||piteousprinciple.com^ +||pithsoutfortfunori.cyou^ +||pitifulrelationship.com^ +||pitlikesubfuskfaecula.cfd^ +||pitmarkvrille.cfd^ +||pitnonoic.cyou^ +||pitofficialfollower.com^ +||pitredamu.lat^ +||pitsensation.com^ +||pittermillspecus.cfd^ +||pittitezazens.com^ +||pitworktieing.cfd^ +||pitylusguariconoil.cyou^ +||pitylusjuckiescolove.cyou^ +||pityneedsdads.com^ +||piuyt.com^ +||pivciahcdzvlm.website^ +||pivotrunner.com^ +||pixazza.com^ +||pixbduooqbddq.website^ +||pixelhere.com^ +||pixfuture.net^ +||pixgallery.xyz^ +||pixis510.net^ +||pixium42.net^ +||pixxur.com^ +||piyeaztpdsmaj.space^ +||pizinegxgdrgx.store^ +||pizp757rzt6f9k.cfd^ +||pizzaapparenthalted.com^ +||pizzlessclimb.top^ +||pjb9vnr3knxiewvuojr35fxlijeb31jmymj8x75.cfd^ +||pjbgowoswnxul.website^ +||pjbiopwnemoditc.com^ +||pjchntkwtjdnr.online^ +||pjdjlrmelqxzh.site^ +||pjdpsycbcmdns.website^ +||pjiixsjrzigen.site^ +||pjivecsgaqoip.website^ +||pjmqwqsw.com^ +||pjoqdgncunzlk.online^ +||pjqchcfwtw.com^ +||pjrtamlmqaaoe.space^ +||pjskajwflepfp.space^ +||pjsos.xyz^ +||pjvcbvjfrzniy.site^ +||pjzftkxmyzuat.space^ +||pk910324e.com^ +||pkahpynblcscu.space^ +||pkdvcmrjfscjr.space^ +||pkiagqasgbgqx.online^ +||pkiekxovflczf.site^ +||pkiigvaxvcsqe.online^ +||pkjevvtqkxuqe.space^ +||pkmqndveyxjud.site^ +||pkmyexkljzdfy.site^ +||pknlagnbfzxoy.online^ +||pkpxkicsrtulwm.com^ +||pkqkuaguyyxjr.online^ +||pkquohzukaqvsu.com^ +||pktvmxrnndloa.online^ +||pkvmnaqhxcgql.website^ +||pkwhsweefrsfb.space^ +||pkwwzakmvtcxk.online^ +||pkxhh7fn6wz92xhgf43.cfd^ +||pkxpiuwxhtdbe.space^ +||pkyrdvdcsuiua.site^ +||pl3grtnnhgrenjmti.rest^ +||placardrepentanceshoes.com^ +||placeprecept.cfd^ +||placesmires.qpon^ +||placetobeforever.com^ +||placiddeb.cfd^ +||placidityelite.com^ +||placiditylever.com^ +||plafondloxomma.qpon^ +||plagaestilb.cyou^ +||plagalwhauk.qpon^ +||plagatesconce.cyou^ +||plaidtheelin.qpon^ +||plain-plane.com^ +||plainfeelings.com^ +||plainpatient.pro^ +||plainpausai.cfd^ +||plainslabredtbebless.cfd^ +||plainsuburbtoilet.com^ +||planeadvancing.com^ +||planersflatedoary.qpon^ +||planet7links.com^ +||planetarium-planet.com^ +||planharnesssuperintendent.com^ +||plankedoxshoe.qpon^ +||plankjunkjoseph.com^ +||planktab.com^ +||plannedclinical.com^ +||plannedgreenhousewaltz.com^ +||planscul.com^ +||planseffectstrim.com^ +||plansforourcompan.org^ +||plantallicit.qpon^ +||plantalrasceta.com^ +||plantameck.qpon^ +||plantationexhaust.com^ +||plantationhick.com^ +||planttrains.space^ +||plasmboseroto.cyou^ +||plasmidjerky.com^ +||plasminog.cfd^ +||plasmsmoses.cyou^ +||plasticdamage.com^ +||plastleislike.com^ +||platanemair.qpon^ +||platchwwraojk.online^ +||platersitacist.cfd^ +||platesskull.com^ +||platforms1500.net^ +||platforms6.net^ +||platformsin303.net^ +||platformsnarcotic.com^ +||platformsrat.com^ +||platformstoquarantine.net^ +||platinumringshooker.com^ +||platinumsnatchable.com^ +||platitudesingemulate.com^ +||platooncombinedborrowed.com^ +||platooncylixsaperda.cfd^ +||plattinsume.shop^ +||platycannoli.qpon^ +||plawmkugopluh.online^ +||playafterdark.com^ +||playdiversionroyalty.com^ +||playedsophomore.com^ +||playerhq.co^ +||playerseo.club^ +||playeverlustinglife.space^ +||playhere.win^ +||playhubconnect.com^ +||playintegrityrailing.com^ +||playmmogames.com^ +||playockdarned.qpon^ +||playonlinegames.space^ +||playpenlanital.qpon^ +||playsnourishbag.com^ +||playstream.media^ +||playstretch.host^ +||playukinternet.com^ +||playvideoclub.com^ +||playvideodirect.com^ +||plbplphgxpj.com^ +||plbpzwoxisdwb.website^ +||plcxocydjdfhe.space^ +||pleasantinformation.com^ +||pleasemedic.com^ +||pleasurewardrobeversatile.com^ +||pleatfertilemiss.com^ +||plebesursa.shop^ +||plebsuspire.cfd^ +||pledgormagh.com^ +||pleionevictualgreyhen.qpon^ +||plenishtyloma.shop^ +||plenistdizzies.cyou^ +||plenistuva.qpon^ +||plenomedia.com^ +||plentyhelium.com^ +||pleuratempean.shop^ +||plexop.net^ +||plfavetxktgvw.space^ +||plgfbhohqpaiq.website^ +||plgtxprvrgume.site^ +||pliablepeised.shop^ +||pliantdummyexasperation.com^ +||pliantethanyowing.qpon^ +||pliedhyper.cfd^ +||plieslyndon.cfd^ +||pliing.com^ +||plinksargo.cfd^ +||plinksplanet.com^ +||plinthsarbaciastator.cfd^ +||plinthsreles.cfd^ +||pljayblicfbcw.website^ +||pljvwkyilkzjp.space^ +||pllah.com^ +||pllraqtbaonaa7uia9ddcveggfooia1xyz.com^ +||pllsadrp.net^ +||plltcfxddroo.com^ +||pllwhiuiwzvct.site^ +||plmwsl.com^ +||plnawpchhuryv.online^ +||plocap.com^ +||plodgegiantrynixies.cfd^ +||plodparticularly.com^ +||plorexdry.com^ +||plottyyowdenrubor.cfd^ +||ploughplbroch.com^ +||plouterflighty.cyou^ +||ploybite.com^ +||ploydiener.cfd^ +||ployimmediately.com^ +||ploytigon.cyou^ +||plqbxvnjxq92.com^ +||plrjs.org^ +||plrohetmanyfj.space^ +||plscllpvblcfq.site^ +||pltamaxr.com^ +||pltmsckbnlloy.website^ +||plucheavennel.com^ +||pluckweeping.com^ +||plufdsa.com^ +||plufdsb.com^ +||pluffdoodah.com^ +||plugerr.com^ +||plugfundsbadger.com^ +||plugins12.net^ +||plugins4enforcer.net^ +||pluginsinmemory.com^ +||plugkenneth.com^ +||plugs.co^ +||plugsunlousy.com^ +||plujdydfegzxm.online^ +||plumatepullockklans.cfd^ +||plumbertowards.com^ +||plumbicdarkle.qpon^ +||plumbicsenhorodorous.qpon^ +||plumouspilcrow.cyou^ +||plump-message.pro^ +||plumpnativeresound.com^ +||plumprush.com^ +||plumpwishesprofessor.com^ +||plunderusagesplash.com^ +||plungedantagonizemystic.com^ +||plungeflavour.com^ +||plungesprinterscanty.com^ +||pluralhurtfulnorris.com^ +||pluralrepeldecember.com^ +||plushpanic.com^ +||plutealteared.qpon^ +||pluxpdzouwubj.space^ +||plxpubyxarcjl.space^ +||plxserve.com^ +||plyfoni.ru^ +||plyikilugzsvo.website^ +||pmaorlewugcup.online^ +||pmc1201.com^ +||pmccdezkbkbpw.online^ +||pmdxwtmaxpfos.space^ +||pmedtitpghzvz.site^ +||pmfmtnykkgpsa.website^ +||pmfqvgxsywccw.space^ +||pmhltxilxakly.site^ +||pmisfoohysory.website^ +||pmjlllngnazvr.online^ +||pmlfclxqicihz.website^ +||pmmjoxhunb.com^ +||pmmxeavnflhkl.website^ +||pmnlcpdlljaie.website^ +||pmnrbjffuzraj.space^ +||pmnygulpigqfs.website^ +||pmpvkncwwmlpd.site^ +||pmpyxdoysqzxh.site^ +||pmqnknenfcrgq.space^ +||pmuegdgqaqyqz.website^ +||pmwbbhfazupps.space^ +||pmyhytxsxvfzb.space^ +||pmzer.com^ +||pnadhqhtgwgtm.space^ +||pnajcjelrjxnm.website^ +||pncloudfl.com^ +||pnd.gs^ +||pndrlgbudvcsy.website^ +||pndvhjgixorbq.online^ +||pneumahameil.com^ +||pnlgtgdkpyvdy.space^ +||pnmxahlvqeaaa.space^ +||pnn3u5nyuhew8ynwomi.rest^ +||pnnhbvmouf.com^ +||pnperf.com^ +||pnpjkenjvtnvw.site^ +||pnqptxkdxkhff.site^ +||pnrbvdqxrqlfp.club^ +||pnsmbazkcydwd.site^ +||pnsqsv.com^ +||pnuhondppw.com^ +||pnuufbbwdiody.site^ +||pnvgvddcxpczr.space^ +||pnvjktqmmwapn.online^ +||pnxfexrscthlb.store^ +||pnxytfbvhknns.space^ +||pnyqgqywse.com^ +||pnzflaiogdwwv.site^ +||pnzjebwvmqdxv.online^ +||poavoabe.net^ +||pocbuweep.com^ +||poceidvfuvuja.store^ +||pochayuncs.com^ +||pocketshighlyinquired.com^ +||pockknosp.com^ +||poddigegruis.com^ +||podefr2.net^ +||poder.cloud^ +||podosupsurge.com^ +||podsolnu9hi10.com^ +||poemsquack.com^ +||poesiespiffed.cfd^ +||poetdomwineier.cyou^ +||poetessdwarf.cfd^ +||poethornconvicted.com^ +||poeticpottrain.com^ +||poflix.com^ +||pofookhmbkwuf.site^ +||pofyybwevmids.online^ +||pogothere.xyz^ +||pogromsskimmiaversute.cfd^ +||pohgrfoogvfvl.store^ +||poidampish.com^ +||pointaceric.cyou^ +||pointcontinentrtb.com^ +||pointedleverelkuma.cfd^ +||pointingdowry.com^ +||pointless-plenty.com^ +||pointroll.com^ +||pointsanyway.com^ +||pointyalonelatent.com^ +||pointyglareproven.com^ +||poiqvjvfigtej.space^ +||poisedbuilding.pro^ +||poisedgranuleajaja.qpon^ +||poisism.com^ +||pojeyfymvpbww.space^ +||pojnejmzcmbyj.online^ +||pokeoutstenchystomped.cyou^ +||poktmnpzdfzgc.online^ +||polackreqd.qpon^ +||polanders.com^ +||polararchbishopcalculated.com^ +||polarcdn-terrax.com^ +||polarichip.com^ +||polarmobile.com^ +||polewigattenddegerm.qpon^ +||polewigeyehook.cfd^ +||poleynecahill.cfd^ +||policeair.com^ +||polioslullingglottic.cfd^ +||polished-hook.com^ +||polishleadennineteen.com^ +||polishshone.com^ +||politanimala.cyou^ +||politecabinet.com^ +||politemajor.com^ +||politenesscrycreating.com^ +||political-effort.com^ +||political-part.pro^ +||politicalfill.com^ +||politicallyhoistawesome.com^ +||politicalpiano.com^ +||politicalplanets.com^ +||politicalspare.pro^ +||politicianfriesrenewal.com^ +||politicquinize.cyou^ +||politicsdryer.com^ +||politicsgrowinghollow.com^ +||politytriumphal.com^ +||polityyearlinggullible.com^ +||pollenunmoved.com^ +||pollingramblefunctions.com^ +||pollpublicly.com^ +||pollutiondespite.com^ +||polluxnetwork.com^ +||poloptrex.com^ +||polosanitizertrusting.com^ +||poloumbril.com^ +||polsterquintet.com^ +||polyad.net^ +||polydarth.com^ +||polygonautism.cfd^ +||polyh-nce.com^ +||polymersesamin.qpon^ +||polymnymoriscocrible.qpon^ +||polypsburrer.cyou^ +||pomegranatestaff.com^ +||pompbeacon.com^ +||pomprecognition.com^ +||pomsternonslipferth.cfd^ +||pomxd.com^ +||pon-prairie.com^ +||pondagepoopgruffed.cfd^ +||pondfulsisting.qpon^ +||pondov.cfd^ +||pondsinlaceferfet.cfd^ +||ponebrandon.com^ +||ponerajambon.cyou^ +||poniesising.cfd^ +||pontiffmorwbract.qpon^ +||pontinescathe.cfd^ +||pooascarpgunner.cfd^ +||poodlefairly.com^ +||poohedunebbeddoffs.cyou^ +||pooksys.site^ +||poolcoolukprese.org^ +||pooldiam.cfd^ +||poolgmsd.com^ +||poolpeephole.com^ +||poolplentifulefficient.com^ +||poolpool.biz^ +||poonahimpers.com^ +||poorcommiserateexists.com^ +||poorlyadjustvisual.com^ +||poorlytanrubbing.com^ +||poorlytwitter.com^ +||poottartro.cyou^ +||pop.dojo.cc^ +||pop5sjhspear.com^ +||popads.media^ +||popads.net^ +||popblockergold.com^ +||popbounty.com^ +||popbutler.com^ +||popcash.net^ +||popcpm.com^ +||popdemission.com^ +||poperblocker.com^ +||popexhale.com^ +||pophandler.net^ +||popjanuary.shop^ +||popjoynorit.cfd^ +||poplardealtcarrying.com^ +||poplarstazzetulchan.cyou^ +||poplartenth.com^ +||poplarwindowsmasculine.com^ +||popletwalled.cfd^ +||popmansion.com^ +||popmonetizer.com^ +||popmonetizer.net^ +||popmyads.com^ +||poppedcushawparra.cfd^ +||poppetalleys.qpon^ +||poppetpostil.qpon^ +||popplenovcicfluible.cyou^ +||poppysol.com^ +||poprtb.com^ +||popsads.net^ +||popsdietary.com^ +||popslowergrocer.com^ +||popular-tea.com^ +||popularcldfa.co^ +||popularslant.com^ +||populateaccommodatingmart.com^ +||populationeverydaygale.com^ +||popunder.bid^ +||popunder.ru^ +||popunderoctober.store^ +||popunderstar.com^ +||popunderz.com^ +||popupblockermax.app^ +||popupgoldblocker.net^ +||popupsblocker.org^ +||popviking.com^ +||popxperts.com^ +||popxyz.com^ +||porchadvertise.com^ +||porcineawiggle.cyou^ +||porgerdaytale.cfd^ +||porikatha.com^ +||porionsstalkslibkin.qpon^ +||porketplums.qpon^ +||porkpielepidin.com^ +||porksleevemigraine.com^ +||porlyymwdsvhf.online^ +||pornoegg.com^ +||pornoheat.com^ +||pornvideos.casa^ +||porojo.net^ +||portalfluently.com^ +||portassignmentcompile.com^ +||portedcorporatedevotion.com^ +||portedlift.com^ +||portentjonasfewer.com^ +||portionsmeltdown.com^ +||portlyteaching.pro^ +||portnell.com^ +||portptfeyfcnx.space^ +||portraycynism.cfd^ +||portslocked.com^ +||portunitytostar.org^ +||portwayoppian.cyou^ +||poseunprofessionalspecific.com^ +||posewardenreligious.com^ +||poshmixture.pro^ +||poshorondino.cfd^ +||positactual.cyou^ +||positivelong.com^ +||positivelyassertappreciation.com^ +||positivelysketchyenlargement.com^ +||positivenetwork.pro^ +||positivepurpose.pro^ +||positivesomewhere.com^ +||poslaoagbehkn.site^ +||posopts.com^ +||possessedrehearsal.com^ +||possessvampire.com^ +||possibilityfoundationwallpaper.com^ +||possibilityteddefensive.com^ +||possiblefinish.pro^ +||postagepantsthereupon.com^ +||postalmapquell.com^ +||postaoz.xyz^ +||postback.info^ +||posterliking.com^ +||postinvent.com^ +||postmenlagune.shop^ +||postponeclement.com^ +||postrelease.com^ +||postthieve.com^ +||potable-hearing.pro^ +||potagermimir.shop^ +||potatoeswhatsoever.com^ +||potawe.com^ +||potboydoddardnocked.cfd^ +||potencyidrooping.com^ +||potgirlpaves.qpon^ +||pothookknoppy.qpon^ +||pothuntmemorda.cyou^ +||pothutepu.com^ +||potionsfurther.com^ +||potisje.xyz^ +||potlinechukka.shop^ +||potmqiirlfjdu.store^ +||potoopiperslindsay.cfd^ +||potphx.com^ +||potpxgxuszbiu.online^ +||potskolu.net^ +||potslascivious.com^ +||potterimportengineering.com^ +||potttackers.cfd^ +||pottydfault.cfd^ +||potwm.com^ +||pouceyferulas.cfd^ +||poufsdivan.cfd^ +||pouhwpuqcutlc.online^ +||pouncedrebated.qpon^ +||pouncelimitsiwearth.cyou^ +||pouncetusk.com^ +||poundquandaryabsently.com^ +||poureddecree.com^ +||pouredtoughen.cfd^ +||poussiepienaarskither.qpon^ +||pousygringosmulched.cyou^ +||poutingtrifoldfomes.qpon^ +||poutstow.com^ +||poutyerenoweburin.cfd^ +||poveuvhuxyltz.website^ +||povqmoulxknny.space^ +||povtswuewziqa.space^ +||powcatovation.qpon^ +||powdercure.qpon^ +||powdryround.com^ +||powerad.ai^ +||poweradblocker.com^ +||powerain.biz^ +||powerfulsensitive.pro^ +||powferads.com^ +||pownyempress.qpon^ +||powsnbzvggnpk.site^ +||poxorfdldbzdr.online^ +||pozkbycypzgty.site^ +||ppaamxfm.com^ +||ppbbhvizrkryo.website^ +||ppcmate.com^ +||ppcnt.pro^ +||ppctraffic.co^ +||ppduaejaozsch.website^ +||pperkvadtvtxk.online^ +||ppggkvponl.com^ +||pphieftkuwccw.site^ +||pphnereis.cyou^ +||ppkafjqvlvawu.space^ +||pplvsszskf.com^ +||pplwjjpkrxcqm.site^ +||ppmxp.com^ +||ppovbdxry.com^ +||pppbr.com^ +||pppveqnalxgdc.website^ +||ppqcqmfcqye.com^ +||ppqscealbqcii.online^ +||ppresulesglkd.online^ +||pprlvdxanzzjl.store^ +||ppsfojtitmnux.website^ +||ppskaiwnwtg.com^ +||ppslywixsqohh.space^ +||pptfhhrohykzk.online^ +||pptraggetykella.cfd^ +||pptshwgmvfhie.website^ +||pptulaljjijwq.space^ +||ppuvyqbkphsqj.site^ +||ppvnbnxoungqo.site^ +||ppwbhkekhjhch.store^ +||ppwkgmwwqfytb.website^ +||ppxcgfrospgfz.website^ +||ppxlrnkzklkxa.site^ +||ppxomldexqmxf.online^ +||ppyluxrhatij.com^ +||ppyvadtepkkxu.store^ +||pqbjuufejlasa.website^ +||pqdlodgilkcxz.website^ +||pqdwrezlbjezz.website^ +||pqeeyoysdelmv.site^ +||pqetjycqquoet.space^ +||pqexpfqppdfqe.site^ +||pqfdfzjajlqhk.website^ +||pqixbnllqzmfp.space^ +||pqlrfrtotmzpt.website^ +||pqluujnrudl.com^ +||pqmv5xir9y5zb6h.rest^ +||pqnnvegqkyadt.space^ +||pqooztnzwrtbk.store^ +||pqouvfsmfou.com^ +||pqoxdvmdndmfz.website^ +||pqpdexmf.com^ +||pqpockwufqgpf.website^ +||pqrpqzhcsyihr.website^ +||pqsjujuhicwrx.online^ +||pqthctoaotsik.online^ +||pqtrzqahglzco.website^ +||pqudnqrlwleqr.site^ +||pqwdiwikgevnn.site^ +||pqybiuubsheqv.online^ +||pqylbqinlsrxz.website^ +||pqzplntcvsxvm.store^ +||pqzyzircitnva.top^ +||practicablepancakevisual.com^ +||practical-associate.pro^ +||practical-interest.com^ +||practicalboil.com^ +||practicecash.com^ +||practicedrectification.com^ +||practiceparlour.com^ +||practiserussiangarments.com^ +||praelant.com^ +||praght.tech^ +||prakritfemes.qpon^ +||pramrowanslang.com^ +||pranceswharp.shop^ +||prankhistorian.com^ +||pranktetui.cfd^ +||pratscearin.shop^ +||prayedcanezouformic.qpon^ +||prayersoriginate.com^ +||prayratesantibiotic.com^ +||praystakeinstinct.com^ +||prayswash.cfd^ +||prbxckwtajncq.space^ +||prchnloyitvdf.website^ +||prcsybiihhrrv.site^ +||prdredir.com^ +||prebornsynemadarrell.cyou^ +||precariouscowardgreatly.com^ +||precautionnoughtsam.com^ +||precautionprommajority.com^ +||precious-election.com^ +||precious-primary.com^ +||preciousadequate.com^ +||preciousnormal.pro^ +||precipitationdisgracefulpeeks.com^ +||precipitationsphererobots.com^ +||precisionclick.com^ +||precmd.com^ +||precopyheteric.cfd^ +||precursortrimrequest.com^ +||precursorwhiskeyleak.com^ +||predamnmanweed.cyou^ +||predateindexer.qpon^ +||predatorvernonforefather.com^ +||predestinationicebergpredicament.com^ +||predialburgalldypnone.qpon^ +||predictioncustom.com^ +||predictiondexchange.com^ +||predictiondisplay.com^ +||predictionds.com^ +||predictivadnetwork.com^ +||predictivadvertising.com^ +||predictivdisplay.com^ +||predictremnantimportance.com^ +||predominantbrutallyscissors.com^ +||predominantleadingsprout.com^ +||predominanttamper.com^ +||predrytheeked.qpon^ +||preedreiced.cyou^ +||preenmislit.shop^ +||prefacebegbeginning.com^ +||prefecturecriesurged.com^ +||prefecturesuggestions.com^ +||preferablyending.com^ +||preferencemuscle.com^ +||preferencenail.com^ +||preferouter.com^ +||preferwinding.cyou^ +||preferyabbicalzone.cyou^ +||prefillcatchie.cfd^ +||prefixbesidesbetray.com^ +||prefleks.com^ +||preformbiunial.com^ +||pregmatookles.com^ +||pregnantskipper.com^ +||premiapommies.cfd^ +||premiumads.net^ +||premiumvertising.com^ +||prendreheft.cfd^ +||preoccupydestiny.com^ +||preoccupyray.com^ +||preonesetro.com^ +||preoticmanafarleu.cfd^ +||prepaidprimertoivel.cfd^ +||preparationsovertimesixteen.com^ +||preparecommands.com^ +||prepareprintingapologizing.com^ +||preparingnondescriptextinguish.com^ +||preplaneffie.com^ +||preponderantapologizingtestify.com^ +||preponderantcorrectlydecline.com^ +||prepucezwitter.shop^ +||prerogativeducksbroke.com^ +||prescriptionadulatorylimelight.com^ +||presentdust.com^ +||presenthoof.com^ +||preservationwristwilling.com^ +||preservehalt.com^ +||presidentialpurifypiteous.com^ +||presidentialtranslatingrealize.com^ +||presidepickles.com^ +||presleysemidry.cfd^ +||presscllad.com^ +||pressedassertpassing.com^ +||pressingefficiencyincompetence.com^ +||pressize.com^ +||pressreportzone.com^ +||pressyour.com^ +||prestigeestimatemobile.com^ +||prestigemoisturerefutation.com^ +||prestigious-other.pro^ +||prestigiousarmed.com^ +||prestigiousdauntdistressed.com^ +||prestigioustrained.com^ +||presumeimpending.com^ +||presumewallslick.com^ +||presvbvcqvttk.site^ +||pretenceprevail.com^ +||preterbultowtarkhan.cyou^ +||pretergante.com^ +||pretirenecroseass.cyou^ +||pretrackings.com^ +||pretty-fly4.com^ +||pretty-site.com^ +||pretty-sluts-nearby.com^ +||prevailharewandering.com^ +||prevalentalludedtore.com^ +||prevalentclogoversight.com^ +||prevalenthatchet.com^ +||preventtributebroad.com^ +||previewpoppybrown.com^ +||previewvenison.com^ +||previous-scale.com^ +||previous-spend.pro^ +||previouslyrightfulpry.com^ +||previouslyvaluableexploit.com^ +||prevoteglimmer.cyou^ +||prevueseugonicjilting.cyou^ +||prewarmritards.cfd^ +||preyerattame.cyou^ +||preyingteilenterer.cyou^ +||prfctmney.com^ +||prfkmbwvryamw.store^ +||prfscmwe.com^ +||prftrndivoqqt.online^ +||prfwhite.com^ +||prfzvilxkjjej.online^ +||prgetejtpuwrs.website^ +||prgvexaammwrj.online^ +||prgwoke4c462rkz.cfd^ +||prhykyumvljjx.space^ +||pricersbecoom.shop^ +||priceynight.com^ +||prickly-tradition.com^ +||pricystorm.shop^ +||pridehickintimidating.com^ +||pridianhummussober.cyou^ +||prierexect.cfd^ +||priestsuede.click^ +||primarilyresources.com^ +||primaryads.com^ +||primaryapologizediversity.com^ +||primaryattract.com^ +||primaryquantity.com^ +||prime-ever.com^ +||prime-president.com^ +||prime-vpnet.com^ +||prime420.net^ +||primechainnet.co.in^ +||primedirect.net^ +||primeincident.pro^ +||primeix.net^ +||primeleech.com^ +||primevideospot.com^ +||primia24.net^ +||primitivenor.com^ +||primix9090.net^ +||primor201.com^ +||primpataque.qpon^ +||primpslebenskylikes.cyou^ +||primrosebewareshot.com^ +||principlespite.com^ +||principleunitsweighty.com^ +||pringed.space^ +||pringlecymule.cfd^ +||prinkitonama.com^ +||printergrandchildrencanteen.com^ +||printerkidneyethel.com^ +||prionidinciterinsume.cyou^ +||prioritycucumbers.com^ +||prioritylotantagonize.com^ +||priortreasonpositive.com^ +||prisalarmseye.cyou^ +||prism-assets.online^ +||prism-cdn.online^ +||pristine-creative.com^ +||priustrigla.qpon^ +||privacycounter.com^ +||privacysearching.com^ +||privacyspell.com^ +||private-hide.com^ +||private-individual.pro^ +||privetsreerect.cyou^ +||privilegedturmoilanew.com^ +||privilegemoreovermarijuana.com^ +||privoar121.net^ +||prizeadultery.com^ +||prizeglass.pro^ +||prizeryartful.cyou^ +||prizingupfurl.com^ +||prksism.com^ +||prkudpsduulrx.online^ +||prlazithizuuu.space^ +||prlbllxlbfzqt.website^ +||prmvpazndpzis.online^ +||prndhjxdlupit.online^ +||pro-adblocker.com^ +||pro-advert.de^ +||pro-market.net^ +||pro119marketing.com^ +||proadeices.cfd^ +||proadscdn.com^ +||proavisroutsbulges.cyou^ +||probablebassinvoke.com^ +||probableregret.com^ +||probablyusualcontraction.com^ +||probationshacksaint.com^ +||probationsheer.com^ +||probationthimbledespite.com^ +||proberspegglenocuity.qpon^ +||probeuthymypecht.cfd^ +||probkraft.cfd^ +||problemsmaillibel.com^ +||problemsmajority.com^ +||probplanted.qpon^ +||probtn.com^ +||proceduredisrespect.com^ +||procedures278.net^ +||procedures321.com^ +||procedures4096.com^ +||proceduresfrom503.com^ +||proceduresinfox.net^ +||proceduresto650.com^ +||procedureswith6060.net^ +||proceedflow.com^ +||proceedingcredulous.com^ +||proceedverdite.shop^ +||proceedvulnerable.com^ +||processedlizardadjoining.com^ +||processesdisplease.com^ +||processesshaken.com^ +||processestheycod.com^ +||processingcontinuediligence.com^ +||processingnettleremiss.com^ +||processlayoutreality.com^ +||processors801.net^ +||processorsinlake.net^ +||processorsoutash.net^ +||proclaimsaneconviction.com^ +||proclamationnimble.com^ +||proclamationromp.com^ +||procneeclats.cfd^ +||procuratorcauldron.com^ +||procuredsheet.com^ +||procureshaft.com^ +||prod.untd.com^ +||prodigalirrigate.com^ +||prodigiouseducation.com^ +||prodigiousundercover.com^ +||prodlglousdates.com^ +||prodmp.ru^ +||producerbuyerlid.com^ +||producerheron.com^ +||producingcouncilman.com^ +||productivejudgmentgait.com^ +||producttofirefly.net^ +||proeroclips.pro^ +||profaneanxietyasa.com^ +||profergigeria.qpon^ +||profertcurdy.qpon^ +||professionalflatly.com^ +||professionallypolar.com^ +||professionalpalecloth.com^ +||professionaltrafficmonitor.com^ +||profileinsistnineteenth.com^ +||profitable-balance.com^ +||profitable-grocery.com^ +||profitablebutton.com^ +||profitablecpmgate.com^ +||profitablecpmrate.com^ +||profitablecpmratenetwork.com^ +||profitablecreativeformat.com^ +||profitabledestination.com^ +||profitabledisplaycontent.com^ +||profitabledisplayformat.com^ +||profitabledisplaynetwork.com^ +||profitableexactly.com^ +||profitablegate.com^ +||profitablegatecpm.com^ +||profitablegatetocontent.com^ +||profitablepersonsbushes.com^ +||profitabletrustednetwork.com^ +||profitsence.com^ +||profoundshaken.com^ +||profusestubber.cfd^ +||progenybanquet.com^ +||proggerhovered.qpon^ +||prognestipesimbibe.cyou^ +||programmesheadstoneconsult.com^ +||programparkproud.com^ +||programswere.com^ +||prohibitedarcher.com^ +||prohibitedhesitatetransgress.com^ +||projectagora.net^ +||projectagora.tech^ +||projectagoralibs.com^ +||projectagoratech.com^ +||projectcooperate.com^ +||projectionconfident.com^ +||projectsbayonet.com^ +||projectwonderful.com^ +||prolansnascan.cyou^ +||prologguisedputid.qpon^ +||prolylbridie.qpon^ +||promdamagecomplain.com^ +||promdidna.com^ +||promerycergerful.com^ +||prominentpray.com^ +||promiseoncomestey.qpon^ +||promisespreepanic.com^ +||promo-bc.com^ +||promobenef.com^ +||promoteconditionerkeyboard.com^ +||promptsgod.com^ +||pronesellattrition.com^ +||pronouncedjustificationgruel.com^ +||pronouncedsour.com^ +||pronunciationpreservation.com^ +||propaleamebansyrnium.cyou^ +||propeller-tracking.com^ +||propellerads.com^ +||propellerads.tech^ +||propellerclick.com^ +||propermolala.qpon^ +||propertyofnews.com^ +||propertyswordmuttering.com^ +||propgoservice.com^ +||prophetalongconstituent.com^ +||propomagrouseardass.cfd^ +||proponekindleddaphnid.cyou^ +||propositionmeltdown.com^ +||propositionpower.com^ +||propositionvowelladen.com^ +||proprietaryabbey.com^ +||proprietordauntaddition.com^ +||propu.sh^ +||prosapyboater.shop^ +||proscholarshub.com^ +||prosecutordistinction.com^ +||prosecutorremarkablegodforsaken.com^ +||proselyaltars.com^ +||proshypotheticallyfarther.com^ +||prospectfrigilityfrigility.com^ +||prospectprecarious.com^ +||prosperent.com^ +||prospermacaroni.com^ +||prospershave.com^ +||prosserwent.shop^ +||prostosite.club^ +||prostrikemagazine.com^ +||prosumsit.com^ +||protagcdn.com^ +||protally.net^ +||protawe.com^ +||proteanodiums.qpon^ +||protebireme.cfd^ +||protecteverywheredisgraceful.com^ +||protectflow.life^ +||protection-suggestion.com^ +||protectioncleave.com^ +||protectionreportnicely.com^ +||protectorcolor.com^ +||protectorfolded.com^ +||protectorincorporatehush.com^ +||protectwborcn.com^ +||proteincalculate.com^ +||proteinshippingwhether.com^ +||prothesistendon.com^ +||protoawe.com^ +||protocolsnappedimpure.com^ +||protonsjuicer.cyou^ +||protrafficinspector.com^ +||protrckit.com^ +||proudkilljoysylvic.cfd^ +||proudlyfunkywanderer.com^ +||proudlyhint.com^ +||proudpanayanhulster.cfd^ +||provenpixel.com^ +||provewaky.cyou^ +||providedpattern.com^ +||provideleapful.cyou^ +||providepinprickkidnapping.com^ +||providingapologizeguile.com^ +||providingextensionpreference.com^ +||providinggleam.com^ +||provincegreensfur.com^ +||provingrubin.qpon^ +||provisionskiss.com^ +||provocationinventorshaggy.com^ +||provocationreduction.com^ +||provokecloudless.com^ +||prowessmodeling.com^ +||prowlenthusiasticcongest.com^ +||prowlgrabbed.com^ +||prowschilkat.cyou^ +||proximic.com^ +||proximitywolvesselfless.com^ +||proxysmjameson.cfd^ +||prpaxcebblsag.website^ +||prpbcmdlcnack.online^ +||prplad.com^ +||prplads.com^ +||prpops.com^ +||prrbmzwmxbbhu.store^ +||prre.ru^ +||prspuntstenons.cfd^ +||prsutbxjqvriz.site^ +||prtawe.com^ +||prtiuigbihsop.online^ +||prtord.com^ +||prtrackings.com^ +||prudeplebby.shop^ +||prudityaeron.shop^ +||prudyascape.com^ +||prunusclarkia.cfd^ +||prurigohdbk.cyou^ +||prussicbabble.shop^ +||prutothoggerusuals.cyou^ +||prvc.io^ +||prvgjobwcr.com^ +||prvoevhums.com^ +||prwrrkaerzzon.space^ +||prwwliatijenv.site^ +||prxssfmbsqgyv.online^ +||prxuapqwdrdin.website^ +||prylersteeds.qpon^ +||pryqzoejbfxro.store^ +||prztkbkycbtgc.online^ +||psaltauw.net^ +||psaussasta.net^ +||psbksjnkacikm.space^ +||pschenttidier.com^ +||pscjpstkkqcmo.site^ +||pscsre.com^ +||psdlcuqojbuxn.space^ +||psedwm.com^ +||psegeevalrat.net^ +||psgbhfknfatgaq.com^ +||psgddusxwtmgj.online^ +||psgkhiojxrfbi.online^ +||pshfqddtvtngd.site^ +||pshppwnnubdkgm.com^ +||psiaeeliestchegre.qpon^ +||psibhuhohmdzq.store^ +||psibkjdxecrte.online^ +||psisreplant.cyou^ +||pskuagktarplq.space^ +||psma02.com^ +||psmhpuuotdeby.store^ +||psnsbliinngie.space^ +||psoviehyaena.cyou^ +||pspbnoygysycg.space^ +||psqfpgxqsyq.com^ +||psqnvvhohipcm.site^ +||psshqlfxthaza.online^ +||psslbjewrblbw.website^ +||pssyjxliwunax.website^ +||pstciayvpsmhj.site^ +||pstreetma.com^ +||psuhofevzdnyz.online^ +||psuqcrvrchbbv.space^ +||psuqmrizfafci.website^ +||psvylueenmhpc.website^ +||psvyszwcjlflr.site^ +||pswlsefuaueke.space^ +||psychiatricmagnet.com^ +||psychologylosttraveling.com^ +||psypssuezhejo.space^ +||psywarbobo.qpon^ +||pszggsvbtzzaa.space^ +||pt-xb.xyz^ +||pta.wcm.pl^ +||ptalribs.xyz^ +||ptapjmp.com^ +||ptauxofi.net^ +||ptawe.com^ +||ptbiksimhxegf.online^ +||ptblrrymzxwfl.online^ +||ptbrdg.com^ +||ptbtzpasfsjdc.space^ +||ptcdw.com^ +||ptcdwm.com^ +||ptckdrakgycat.store^ +||ptctmvbodxcsm.store^ +||ptcvcxjesgkqx.site^ +||ptdeokzscoubs.site^ +||ptekuwiny.pro^ +||ptelastaxo.com^ +||pteleaspiring.top^ +||pterinannullifubbery.cfd^ +||pterisiodated.cfd^ +||pteronenol.shop^ +||ptfoplgnjmygh.store^ +||ptfoqdcfenssu.website^ +||ptgbydghejqfz.online^ +||ptgtricaedamara.cfd^ +||pthkhcicpqspq.space^ +||pthrcuymfiu.com^ +||ptichoolsougn.net^ +||pticukcoyvvyu.store^ +||ptinusmufasal.com^ +||ptisansamity.cfd^ +||ptistyvymi.com^ +||ptkmuqscgtakv.site^ +||ptlucrangwlvs.website^ +||ptlufbanslsse.website^ +||ptlwm.com^ +||ptlwmstc.com^ +||ptlxskwprwfri.space^ +||ptmbqrzsbevkh.store^ +||ptmnd.com^ +||ptnjphvurekdw.space^ +||ptocpiorjqam.in^ +||ptomw.com^ +||ptosesfunky.cfd^ +||ptosesveg.com^ +||ptougeegnep.net^ +||ptp22.com^ +||ptpfpbzfegrmv.site^ +||ptppteiawpvae.space^ +||ptqdlabxislis.store^ +||pttlghemsjghh.online^ +||pttpuhjcczqgn.site^ +||pttqxqffpkusk.space^ +||pttscdesgpocm.space^ +||pttsfructed.qpon^ +||pttyteuarfsqa.site^ +||ptukalqfarwi.in^ +||ptuynrwotqzlf.website^ +||ptvrnvrefhzvx.space^ +||ptwmcd.com^ +||ptwmemd.com^ +||ptwmjmp.com^ +||ptxhfxkvetqjn.online^ +||ptyalinrhodoraate.cyou^ +||ptzpvltmyqdyn.online^ +||ptzryllzneptn.site^ +||puabvo.com^ +||puansickbay.cfd^ +||pub.network^ +||pubadx.one^ +||pubcoderace.com^ +||pubfuture-ad.com^ +||pubgalaxy.com^ +||pubguru.net^ +||pubimageboard.com^ +||pubinstancesglorious.com^ +||pubjzoxav.com^ +||publicatedlitytlemen.org^ +||publiccolumnsnotebook.com^ +||publishednundear.com^ +||publisherads.click^ +||publisherscantyusing.com^ +||publishoccur.com^ +||publpush.com^ +||pubmatic.com^ +||pubmine.com^ +||pubnation.com^ +||pubnotify.com^ +||pubonrace.com^ +||pubpowerplatform.io^ +||pubsunsethitherto.com^ +||pubtm.com^ +||pubtrky.com^ +||pubxeumpifbtj.online^ +||pucheracantoon.cfd^ +||pucheroclarify.cfd^ +||puckishverdin.qpon^ +||pudwqcpwgemml.website^ +||pueriledod.qpon^ +||puffsrubiest.cyou^ +||pufftnjoel.shop^ +||pufted.com^ +||pufznhczwfkzb.online^ +||pugbozkfpaoqh.online^ +||puggishlycea.cyou^ +||pugmarktagua.com^ +||puhtml.com^ +||puhyjyf.com^ +||puibjylihoygx.online^ +||puinnjsexnlbo.space^ +||puitaexb.com^ +||pukekoassent.com^ +||puksjalhf.com^ +||pulayagaed.cfd^ +||puldhukelpmet.com^ +||pullenaventreamulae.qpon^ +||pulleycorns.cfd^ +||pulpyads.com^ +||pulpybizarre.com^ +||pulqueemesa.com^ +||pulseadnetwork.com^ +||pulsemgr.com^ +||pulseonclick.com^ +||pulseskerbed.qpon^ +||pulvmarl.cfd^ +||pulyxlgvrlqco.space^ +||pumicewivern.cfd^ +||pummelstarish.cyou^ +||pummiceatypic.qpon^ +||pumpbead.com^ +||punamujabirusprisal.cfd^ +||punchpantherwhip.com^ +||punctuationbandycontradict.com^ +||pungent-care.com^ +||pungledtuno.qpon^ +||punglehoist.shop^ +||punicinbumelia.com^ +||punishgreater.com^ +||punishutrubi.com^ +||puniturullingchuhra.cfd^ +||punkabasal.shop^ +||punkahsattaint.cyou^ +||punkierdetruck.com^ +||punkiernitrile.cfd^ +||punkspyke.com^ +||punneryirrs.qpon^ +||punniccarestflings.qpon^ +||punnierzealots.shop^ +||punoocke.com^ +||punosy.com^ +||puntingglister.cyou^ +||puntoutbiggest.qpon^ +||puntsiccant.shop^ +||puntskabuli.qpon^ +||punysafety.com^ +||puocyxrrkqnwx.online^ +||puoucchwtnlyp.website^ +||pupatesqueeze.com^ +||pupilarouranos.com^ +||pupilchangesjustified.com^ +||pupiljake.com^ +||pupilmen.qpon^ +||pupnwbxrglepw.online^ +||pupoidrinka.cfd^ +||puppieduraei.qpon^ +||puppingpish.cfd^ +||puppyderisiverear.com^ +||pupqdnmrigbly.store^ +||pupspu.com^ +||pupunhachoicecoco.cyou^ +||puranaputlog.com^ +||purchaserconnectionleaden.com^ +||purchasermeltdown.com^ +||pureenergyflow.com^ +||purganismprop.com^ +||purge.fb-cdn.net^ +||purifydimeprove.com^ +||purinsspleenylemma.cfd^ +||purirhexis.qpon^ +||purlporteno.cyou^ +||purpleads.io^ +||purpleflag.net^ +||purplepatch.online^ +||purportriyals.qpon^ +||purposelyhandful.com^ +||purposeopinion.com^ +||purposesmy.com^ +||purposeswage.com^ +||purreeerugo.cfd^ +||purrerguze.cyou^ +||pursedtuwi.qpon^ +||pursuedcovering.com^ +||pursuingconjunction.com^ +||purtygoudy.com^ +||puseqbbpfngaf.site^ +||push-notifications.top^ +||push-sdk.com^ +||push-sdk.net^ +||push-sense.com^ +||push-subservice.com^ +||push.house^ +||push1000.com^ +||push1000.top^ +||push1001.com^ +||push1005.com^ +||pushadvert.bid^ +||pushaffiliate.net^ +||pushatomic.com^ +||pushatropa.qpon^ +||pushbizapi.com^ +||pushcampaign.club^ +||pushcentric.com^ +||pushclk.com^ +||pushdom.co^ +||pushdomains.biz^ +||pushell.info^ +||pushelp.pro^ +||pushflow.net^ +||pushflow.org^ +||pushhemretaliate.com^ +||pushimg.com^ +||pushinpage.com^ +||pushking.net^ +||pushlapush.com^ +||pushmaster-in.xyz^ +||pushmenews.com^ +||pushmine.com^ +||pushmobilenews.com^ +||pushnami.com^ +||pushnews.org^ +||pushno.com^ +||pushnotice.xyz^ +||pushpong.net^ +||pushprofit.net^ +||pushrase.com^ +||pushserve.xyz^ +||pushtorm.net^ +||pushub.net^ +||pushupimposts.qpon^ +||pushupperidia.cyou^ +||pushwelcome.com^ +||pushyimmaculateinestimable.com^ +||pushyresidential.com^ +||pusishegre.com^ +||pussl3.com^ +||pussl48.com^ +||pusslydohter.qpon^ +||putchenantlion.cfd^ +||putdowncytodepullus.cfd^ +||putherypreener.cyou^ +||putrr16.com^ +||putrr7.com^ +||putteesarbust.cyou^ +||puttensoullawzy.qpon^ +||puuush.me^ +||puvqnflkiuhwl.site^ +||puxapklakozg.in^ +||puyamalchus.cyou^ +||puysis.com^ +||puzwsrdbdevrh.site^ +||puzzlepursued.com^ +||puzzlerlamprel.qpon^ +||puzzlingcurrent.com^ +||pvaoccwvecpgao.com^ +||pvasidywstera.website^ +||pvbjoeu734uhzbk.cfd^ +||pvbokgunumycp.space^ +||pvcleohotmfpx.online^ +||pvcnhlmuvgrcc.space^ +||pvcubbshnlzys.space^ +||pvdafseagcfcz.site^ +||pvdbkr.com^ +||pvdnugjwyrkad.website^ +||pveldvvjrvgru.site^ +||pvgbwckgrfmic.site^ +||pvgcedbveetxz.website^ +||pvhlrsqduzzfv.website^ +||pvitijtdfihijb.com^ +||pvkwnghghldtx.space^ +||pvlllrrqnmjyz.online^ +||pvmcjknr8nr7v9y1p3zi57l.cfd^ +||pvmhugflwgkri.space^ +||pvmtrmugo.com^ +||pvnwfoxrfezes.space^ +||pvokaqjpntpin.store^ +||pvqjldytcvxix.online^ +||pvsbdkpkydhaj.website^ +||pvtnlmysbeigh.website^ +||pvuaypsrfcecd.site^ +||pvuznrtadztxu.space^ +||pvvkigebunabd.site^ +||pvzesryoifiit.online^ +||pw1zz56d.xyz^ +||pw5ztjnz8557v35.rest^ +||pwbxyinigxrju.website^ +||pwfwyafdfwwiq.site^ +||pwgwyfnthoqqf.site^ +||pwhrweqahetld.online^ +||pwiiojtkfpdf.com^ +||pwjfuxffzbdxo.website^ +||pwl58xbkr7ninig9cnm.rest^ +||pwmctl.com^ +||pwnyvbfsuetef.site^ +||pwoitwkrmybesf.com^ +||pwrgamerz.com^ +||pwrgrowthapi.com^ +||pwtcsinrsozat.space^ +||pwwopmrisjfnu.store^ +||pwxnufxcwbbev.space^ +||pwzxkpphqoeby.store^ +||px3792.com^ +||pxbjmbnllzvhl.site^ +||pxctpszddyyan.site^ +||pxejwtuyml.com^ +||pxekfmmylcrqo.space^ +||pxgruigwgorib.website^ +||pxgvyiizzmgqr.site^ +||pxgynnjtdxwsb.site^ +||pxhjcxcmfynxf.online^ +||pxjdlqjcdtrwr.online^ +||pxlanvvuiyrcm.space^ +||pxlcrykadtsby.site^ +||pxls4gm.space^ +||pxltrck.com^ +||pxnzwgdyvcaqd.online^ +||pxp9.com^ +||pxrjzziqqthqo.online^ +||pxtnuoekmucfd.space^ +||pxwqvvumecpsd.world^ +||pxyhaolanvgjl.site^ +||pyasnafgpytqf.site^ +||pybytwattsq.com^ +||pydtwiqutiusg.online^ +||pyebouezyhhxd.online^ +||pyecyiqatdboi.site^ +||pyestother.cyou^ +||pyghwgyjuuaht.space^ +||pygirfcitczab.store^ +||pyinspliant.cfd^ +||pyiukciljqkpc.space^ +||pyjamasweated.com^ +||pykhlpamhteq.com^ +||pykhnrrqmwyzw.online^ +||pykvbmltjxrgl.website^ +||pylqeypkcxzka.site^ +||pynhtpjgflnph.online^ +||pynnywwoczyub.website^ +||pyoidarenous.cfd^ +||pyooczrenjzds.website^ +||pypgvdvnysphc.space^ +||pyqezmcomuayf.website^ +||pyqquhawbtrpm.site^ +||pyralmite.com^ +||pyriteshumean.shop^ +||pyroium.net^ +||pyrrhicangekokamplect.qpon^ +||pysdvwrawkwjz.space^ +||pyswtbuakzcnm.website^ +||pythicquinols.cfd^ +||pytkdwpsaghfp.site^ +||pytswepoazpej.website^ +||pyudirsgzbzbq.site^ +||pyuzvhrkqfwdg.online^ +||pyvanqnmywiop.website^ +||pyveeczzppsye.space^ +||pyvenjyewteku.website^ +||pyvfwe972772o26uv.rest^ +||pyxheed.qpon^ +||pzbtbwepicwjn.site^ +||pzbxnlourkdrv.site^ +||pzckypp.beer^ +||pzcndidfhcoyu.site^ +||pzemxqyyaynor.site^ +||pzemzwvodejwz.website^ +||pzgignprvvgvn.space^ +||pzhrcssjaridu.website^ +||pzkaqvyqypgyd.site^ +||pzlsmpdqmlowi.site^ +||pzoapdfmzfrqz.website^ +||pzpkfoioljn.com^ +||pzpvweoxjm.com^ +||pzqrhgqndswqn.store^ +||pztpegrrlrurn.com^ +||pzwgjhdppzuiy.space^ +||pzwzitvbdhpiw.website^ +||pzxjjwbdvxxbi.store^ +||pzxwrqbdhkytt.space^ +||pzyoijuqnkyol.site^ +||pzyzpohudsgnl.space^ +||q2i8kd5n.de^ +||q3lykp8i5bk23ev1og47jx.cfd^ +||q42b27eefv15onxw1r5nq.rest^ +||q4c2nhc4zfhrvy1klkj.cfd^ +||q5d3.top^ +||q5n5kpn155jni6nympw621.cfd^ +||q5obpt5gg8xouhjuopu5t.rest^ +||q5u4e9tlejr3jwk7ppbjvlm1qev7bqzv9.cfd^ +||q6b3hvqry7rywtf.rest^ +||q7lenkjtrejknx9c8wwo4vo.cfd^ +||q7t47k27l7xhl41nk2upiq4y.cfd^ +||q8643rgjc53oro1l.rest^ +||q866i226chv3oxmeoy321fuo.rest^ +||q88z1s3.com^ +||q8ntfhfngm.com^ +||q99i1qi6.de^ +||q9z3wzm3r31jp1.cfd^ +||qabvhjrdyktha.space^ +||qacwnujgnoxmh.site^ +||qaeadnlcctjvh.online^ +||qaeddggqpmhrs.website^ +||qaedmtczrudfq.website^ +||qaerqhtvhmtbto.com^ +||qaflyqanumeji.online^ +||qahikxfgyjexiru.com^ +||qahmipatkmaj.com^ +||qahqrucpupc.in^ +||qaixhtzsjyipb.store^ +||qajkvcdzxcqvn.space^ +||qakqvajmhdpzd.store^ +||qaldatrxnjssm.site^ +||qalizyiehylan.space^ +||qamhngalamvbl.site^ +||qamurtajzovce.site^ +||qanatstrypsin.cyou^ +||qanwfsrmvcoco.online^ +||qaolczdbfnsec.online^ +||qapdututycwyj.store^ +||qargdofuazoiz.site^ +||qasdszuhgnhtl.space^ +||qatszonelet.cyou^ +||qayuwjcpfxusg.website^ +||qazvycpwppors.online^ +||qbaarratalzyo.online^ +||qbactnrbvyqfw.online^ +||qbdlijgzxscfa.site^ +||qbdtjnxxkygrl.site^ +||qbiapxkofrlix.online^ +||qbixxhbamudnt.space^ +||qbkofavetnrgr.site^ +||qbkzoovlstqom.website^ +||qblfoindoxcga.space^ +||qblllqzqezlvv.top^ +||qblllqzqezlyz.top^ +||qbltvdeqmrzxt.website^ +||qbmcjw6rginhbu.cfd^ +||qbmxmuaifmpol.website^ +||qbnvdctsmxqhr.website^ +||qbnyheznoeglk.space^ +||qbpkyvtnxslrk.website^ +||qbrfvxzvhmyvh.space^ +||qbrzvovrozkez.top^ +||qbtncwhruequc.site^ +||qbulqouctdzso.online^ +||qbuqxddcgzenn.site^ +||qbwebebwkeqar.top^ +||qbwebebwkeqob.top^ +||qbyyhvlzxpuvg.website^ +||qbzccslyeesmj.online^ +||qc1o6cbg96h97bz.cfd^ +||qcgdmncatgybd.site^ +||qcgzvywnvubee.online^ +||qchrargdlvstl.site^ +||qchrsplrabrnu.site^ +||qcjgyhgwtzlzv.space^ +||qcjyyaiabhmrn.store^ +||qckwwrbyjejwi.website^ +||qclkjsltbcrmwkx.com^ +||qcmlcwymvatsn.site^ +||qcmlhnbuauerm.com^ +||qcnpyyughyluz.online^ +||qcnragymlulzk.website^ +||qcobvdvhldboz.online^ +||qcqfkzglgynfr.site^ +||qcqntwlipjjjy.site^ +||qcqobpxpeeiwh.store^ +||qcsvxobneexyu.site^ +||qcurkzogaukec.space^ +||qcuwpicccoscr.online^ +||qcvtsmdkymigu.site^ +||qcxoupeiycbvi.online^ +||qcxpoulxosxnf.site^ +||qcyfngmkrhcmg.website^ +||qcypnklqhsdk.com^ +||qczalvoxe.com^ +||qdbqdirohipeb.space^ +||qdgyxhbasgytt.online^ +||qdiamjczxvbxx.online^ +||qdiqvjftqcdxk.online^ +||qdjgcchrgsrza.space^ +||qdkpyueaqswtv.online^ +||qdlrbnjioxxnl.website^ +||qdmil.com^ +||qdmizarqbbyqv.online^ +||qdmrecjajjbpq.space^ +||qdoiyyykwbovu.space^ +||qdougjzllrxyv.site^ +||qdpvnjhzcafbl.space^ +||qdpwywwuatvno.site^ +||qdrpecwgclftz.space^ +||qdslnslohsisa.space^ +||qdtednqvwsgbt.site^ +||qdtvdmtrlrelw.space^ +||qdurzzrmxptvr.online^ +||qdvdesuqdanwc.store^ +||qdvfzslnkahdn.space^ +||qdxpgtsqvwwlqbx.com^ +||qdygwqnzemupq.space^ +||qdzspuqzdjyiy.space^ +||qdzxakgqmclda.site^ +||qeaaogshjobfk.site^ +||qecapwnpthdzf.site^ +||qeefxyltwpruv.website^ +||qehcierotgrrk.site^ +||qeicbuekdqyna.website^ +||qeiqpltdr.com^ +||qejsyzyisvzzg.space^ +||qekbmjyvbbjkr.top^ +||qekdrdaajvcfx.space^ +||qeogeasqdfowh.site^ +||qepcdyswlsodj.space^ +||qepeerkeskxhn.site^ +||qeqyswhipqrgu.space^ +||qerelink.qpon^ +||qernnbahzjdjf.online^ +||qesrnpogpignd.store^ +||qeujnihdvzsnv.online^ +||qeuvhpxmqzson.space^ +||qeybbrtplgom.com^ +||qeyeaglxcfpvi.space^ +||qeywmkatxqekt.space^ +||qeyxf31oijnn9b.cfd^ +||qezodjntkbtah.site^ +||qfdilgjxpdevp.online^ +||qfdtnsipgniun.space^ +||qffrdxwhd.com^ +||qfgzjprfvrabq.site^ +||qfhvdwqycveuf.site^ +||qfiobhon.com^ +||qfjgcntbdvthn.online^ +||qfjvorkcexhef.space^ +||qflcnpyfqxedr.space^ +||qfmovdyoatupg.store^ +||qfnmqhacsscph.site^ +||qfolfaguuzvmm.site^ +||qfqbznmeuztgs.website^ +||qfqgzbbjjutfs.site^ +||qfwwhelkdjaeu.buzz^ +||qfwyrfyntluzp.online^ +||qfxheyyfxnply.site^ +||qfywv223iizxxzijm.cfd^ +||qgbhjzjoduaqe.site^ +||qgdgcbtfuxgra.store^ +||qgerr.com^ +||qgfdmuyzgrosw.online^ +||qgfxocvsjgq.com^ +||qgglcgwaypdwz.space^ +||qghckpqefjuln.site^ +||qghdzumsgojvw.online^ +||qgitfyktwfhba.website^ +||qgjmuglselogs.website^ +||qgjymegruhqtw.website^ +||qgkbnssobp.com^ +||qgkbveukreear.site^ +||qgkgjmckwvcuj.space^ +||qgkmvbxkskdeb.space^ +||qgkqbffrjxrqc.website^ +||qgkwnmyiwalgh.site^ +||qgmoslspensxh.buzz^ +||qgnjagnvbajux.online^ +||qgomtqfuwmckp.website^ +||qgpsrnpchevrc.site^ +||qgrlfkzulssrt.space^ +||qgthiomylmdvo.online^ +||qgtlndbjewjxa.website^ +||qguchatyzmdro.website^ +||qguusmmvndeor.website^ +||qguwsuivlnmxr.site^ +||qgvbpbsqdxnni.store^ +||qgvjykjmhtnxz.store^ +||qgvnjatloknbl.store^ +||qgwyazvkzafrh.website^ +||qgxbluhsgad.com^ +||qgxdgxsrfxyyy.online^ +||qgzaolbggkxis.site^ +||qhaqrwrsfjiev.site^ +||qhbetzsrzzslg.site^ +||qhchh.com^ +||qhdlakajcgcul.space^ +||qhfehybxzvtrl.space^ +||qhfydjxsuseid.space^ +||qhgbxmuytmnpb.website^ +||qhipfvjtfclea.space^ +||qhjneybjqcxjm.online^ +||qhkflvounmbrq.site^ +||qhnbqrpobwplq.online^ +||qhngmav.com^ +||qhnmmymndelfsf.com^ +||qhokrckmxeczb.online^ +||qhqfmdhuxeujk.space^ +||qhqthxofmcdxl.site^ +||qhrgkzpfvrtzm.online^ +||qhsfpazesyczc.site^ +||qhxrexamnxunp.site^ +||qhycbngsymyq.com^ +||qhyftzqknm.com^ +||qiahfhbhcd.com^ +||qiaiiaqbzortj.space^ +||qiaqnmgxf.com^ +||qibjptkwyhudx.site^ +||qidfamogebcku.space^ +||qieiepqyflfpk.space^ +||qifgthtnod.com^ +||qigkvucouqnjs.space^ +||qihegkxiytaah.online^ +||qihnajipjpmii.online^ +||qihpwojcazrje.website^ +||qiix78.net^ +||qimqebsonbvvy.space^ +||qimrfioscaw.in^ +||qingolor.com^ +||qipaspjivpupa.website^ +||qipwaqhpevt.in^ +||qiqpcopqyesgj.website^ +||qiqzvhmpvfbxf.tech^ +||qirbtkfgqdaug.website^ +||qitkpdaoujpxu.space^ +||qituduwios.com^ +||qiujntgyhbgog.website^ +||qiv78w3mjmehrzpnc8lt3.cfd^ +||qivaiw.com^ +||qivblppvkfdxy.online^ +||qivkynembpare.site^ +||qivzzjzsutlwk.site^ +||qiwxrzkzauasd.online^ +||qixledkawgizq.space^ +||qiyywlruwtfga.website^ +||qiyzxtvsswtxg.online^ +||qizjkwx9klim.com^ +||qjaioccuzbmud.site^ +||qjbtdidrobmmo.love^ +||qjgctdulqhoqy.space^ +||qjgnmndhtsvks.site^ +||qjjckhourpvey.site^ +||qjldqwcgxzrbd.website^ +||qjldydelwreqn.click^ +||qjlyfestjozoo.site^ +||qjnzeflazpfig.space^ +||qjqhoj8uqulceoyqk89.cfd^ +||qjskjiztddgxp.store^ +||qjuyaxbrnhxgm.online^ +||qjvyvtffjirwg.website^ +||qkacjgqdpvilp.website^ +||qkbjclwirtotj.vip^ +||qkcrfylskdedo.website^ +||qkeweajdxbmqy.space^ +||qkf3pkvqwcpiitj.cfd^ +||qkgoahutyimrf.site^ +||qkieitettuode.store^ +||qkknhauolovpr.site^ +||qklvxuapbdqtu.online^ +||qkmerhdtlqadp.site^ +||qkmihtfjcgnsw.store^ +||qknfphbmncxdc.online^ +||qkplapmvmbtbj.online^ +||qksrv.net^ +||qksz.net^ +||qkuafrscili.in^ +||qkuddzkexfiez.site^ +||qkvfnjfhdparr.store^ +||qkxwhdgnpczur.space^ +||qkxwtytuaybam.space^ +||qkzrybopigalg.site^ +||qkzuoyocjmsgu.site^ +||qlcmnszrrzdsp.website^ +||qlcwatcr.com^ +||qlfqkjluvz.com^ +||qlgggpbrssyxq.online^ +||qlheptjsvwnrr.space^ +||qliqxaxsajpls.space^ +||qliwncicprtay.site^ +||qljbncscqxlez.online^ +||qljytcmigkfxc.website^ +||qlkmasrw.com^ +||qloekmmsuwjlq.website^ +||qlpqyeiodksjq.online^ +||qlpwodpqwzqcc.website^ +||qlpynjbergqab.online^ +||qltmybhqlrdae.website^ +||qlucmyomqatcz.online^ +||qlusrztqgxqfw.website^ +||qlvobmtnqrocw.online^ +||qlymjkshghifu.space^ +||qlyvinhfifdwv.site^ +||qmaixqtbcbapj.site^ +||qmcwstebkdpqv.website^ +||qmdfianrkobxx.com^ +||qmdpgmksykmwy.online^ +||qmefcejujmezq.website^ +||qmemxsreczhet.space^ +||qmfpbonswktwy.website^ +||qmgnxbf7izum67u.cfd^ +||qmiorcgacbpzu.space^ +||qmjjfwxgmsovj.site^ +||qmlrmarmalebo.top^ +||qmmpcqivqe6g67ko.cfd^ +||qmpkrtpeynvmk.store^ +||qmrelvevwlwlw.top^ +||qmuifjax.com^ +||qmvwjbawxsese.site^ +||qmwonwowmytqf.store^ +||qmyoclrszpanh.website^ +||qmyzawzrqryjj.top^ +||qmzikvkk.business^ +||qn-5.com^ +||qnankopyneryv.space^ +||qnayqnqdcuatz.space^ +||qnbxtbihgeifi.online^ +||qndjbwryjeraj.website^ +||qneshqafreref.site^ +||qnfhrgxttmget.site^ +||qnigoujoppspc.site^ +||qninldlbtihpt.space^ +||qnjcoqqwvfgei.online^ +||qnokjaheaegr.com^ +||qnp16tstw.com^ +||qnpyggpouxysw.online^ +||qnquajjjjdekm.site^ +||qnravllmrkpdo.space^ +||qnscvrwvccjme.online^ +||qnsioinigkdgnal.com^ +||qnsr.com^ +||qntbrpbuyprtm.website^ +||qnuqorqohlcxy.online^ +||qnxrfwtnijcvj.space^ +||qnyxvpsblunca.site^ +||qnzkkbshdriki.site^ +||qo4pm5bgem3gtbb.cfd^ +||qoaaa.com^ +||qobfocmmyhbaw.space^ +||qoclick.com^ +||qoebdgzpnonpu.online^ +||qoewovfmkn4rw3u.rest^ +||qofzpsdexjmbw.site^ +||qogcteumntijn.site^ +||qohdzcdlxukep.online^ +||qohvppvwpyfgx.online^ +||qoibivmolnw.com^ +||qoiqfckhwinup.online^ +||qojeoccuereut.space^ +||qomqxzufyzmit.site^ +||qooohwwd.xyz^ +||qoqv.com^ +||qoqyvixrvteym.site^ +||qorzcljgqldwr.website^ +||qottubusyheqj.store^ +||qotuprmsjnjbn.site^ +||qovahmfeouqqu.com^ +||qovdtdoiazazm.site^ +||qovorcfuiogbc.online^ +||qoxewwbseudmz.website^ +||qoxsqwqyxyjit.site^ +||qoydtxdfmwlwn.store^ +||qozveo.com^ +||qozwuskwwzqua.space^ +||qp3oebx9tj2lifyfj3.cfd^ +||qpastswynfzcb.space^ +||qpbiyued.com^ +||qpecjovestjhj.space^ +||qpetanezqhixk.website^ +||qpfxfxdwnuxrd.space^ +||qpgbxpuoepxyb.online^ +||qpiandexqprrq.space^ +||qpizuvmta.com^ +||qpknssnnidbkwja.com^ +||qplywkhnlfyfy.online^ +||qpmelqzaasl.com^ +||qpnnnvtyysd.com^ +||qppq166n.de^ +||qptfdtjasvzmb.site^ +||qptghqpgmdqhl.online^ +||qptgssyjfxbs.com^ +||qpuajvzdhsmrk.space^ +||qpufhoviouoby.website^ +||qpweyjmudecjc.online^ +||qpwvok0l.xyz^ +||qqcvdfytarpbw.site^ +||qqeadugfccgya.space^ +||qqeamubuikcai.site^ +||qqegmflrzwhtz.site^ +||qqfzedopftitm.website^ +||qqhjdsbubacon.online^ +||qqhuwthhmxeuc.space^ +||qqifefphpoord.site^ +||qqifyplxschr.com^ +||qqjchhamewpmi.space^ +||qqjlbzqlqouna.space^ +||qqjtldyoobxpo.online^ +||qqkbagfoxsjkh.online^ +||qqkedfhbdpgos.space^ +||qqkfxyzjdfqfz.online^ +||qqkwyhcvxntow.website^ +||qqlrklxygxzfh.space^ +||qqmcsrexbarfk.site^ +||qqmqrvhwukgof.website^ +||qqn321tkkukveng7zggbgihzv.cfd^ +||qqovdipkzwtjb.site^ +||qqovvlzwelwfp.online^ +||qqpklxjesmajr.online^ +||qqpuygzonbens.website^ +||qqqajygpfmdea.space^ +||qqqbvlafzdqwr.space^ +||qqqfrcxyeecpp.space^ +||qqr8fbtcln552b1pvbkxtzc5r.cfd^ +||qqrkcmwxsoreq.space^ +||qqskjmyhfyosr.website^ +||qqsondgjeyzyx.website^ +||qqtnnatdtluye.site^ +||qquctpfbpghvt.com^ +||qquhzi4f3.com^ +||qquxahyfqinua.site^ +||qqvukxnvxmulgo.com^ +||qqwnsgvfmw.com^ +||qqznesheignkm.site^ +||qr-player-new.com^ +||qr08uw9e.xyz^ +||qrafhypxswp.com^ +||qramxcijceyve.online^ +||qraollantiaiv.online^ +||qrayduqzmtuhl.online^ +||qrbbbsnqrdyei.site^ +||qrcvbzqlsbshx.space^ +||qrdeojhkzcnux.online^ +||qrdtlsunudeoy.site^ +||qrejuwquqos.in^ +||qrevdusqviats.space^ +||qreypfmfhekda.space^ +||qrfdaxoxjwgyu.space^ +||qrigpyenjfbcv.site^ +||qriukoxcttzdo.online^ +||qrjiyastbajim.store^ +||qrkdszgrvlmhm.website^ +||qrmfmgsagyono.online^ +||qrnfyxknjbex.com^ +||qrpqnjbslsmey.site^ +||qrqofbbkajwci.site^ +||qrquxbefwurmu.space^ +||qrrergjizojhi.site^ +||qrrzkvqbcmqee.online^ +||qrsncgmcjerjx.site^ +||qrtxfpiviodkq.website^ +||qruaioyiygwvo.online^ +||qruatazgwctro.fun^ +||qruihxvuwbaiw.space^ +||qrvypmegddrdp.space^ +||qryckervqngsx.store^ +||qrzvsmxtpsmdw.site^ +||qsaqprpqshyna.website^ +||qsbfglhmfunlq.store^ +||qsblhhfngvrau.online^ +||qsblvjjutcbhh.buzz^ +||qsccogecrwmdp.website^ +||qscwdkdwlexph.site^ +||qservz.com^ +||qsgjcqiqhaiad.online^ +||qsicrqoimhnzn.online^ +||qskrbykjjatuk.store^ +||qsocxhfdopwj.com^ +||qsodssvqzzpoi.site^ +||qsrdqwujtvxcf.vip^ +||qstdgyhrnvyij.space^ +||qsvdftnuckecq.site^ +||qswqmdejpptbp.space^ +||qsxupcszqqmnr.online^ +||qsydjlvebcnhs.site^ +||qszftkiylgowv.site^ +||qszufewlulnyo.com^ +||qtblsrbqomkrf.website^ +||qtbqqrypghmme.store^ +||qtcpvgdluotko.website^ +||qtgoiasqfgbgb.space^ +||qtjkugeuhmqjf.site^ +||qtjlxajbfoinv.com^ +||qtk8elfke5kh4qc.cfd^ +||qtkoczchgnedf.website^ +||qtlyyxodifpuy.space^ +||qtmcctlezxmvt.online^ +||qtnhmmqmoyxzd.space^ +||qtnobmxbgavob.space^ +||qtnxojexix.com^ +||qtotkxbumapye.website^ +||qtpwhuodcsbtt.space^ +||qtpyyizgteovh.space^ +||qtqkpddcbddmy.space^ +||qtreijcxmssfi.site^ +||qtrkqylpsmkat.online^ +||qtroibxoalnmq.site^ +||qtrommulyiytv.website^ +||qtrqasyavyzcx.online^ +||qtslcoufpilnd.com^ +||qtutulebptizh.website^ +||qtyjvrosgqwsq.online^ +||quachilratingspsoroid.cfd^ +||quachilsidder.shop^ +||quackgraduation.com^ +||quackupsilon.com^ +||quagdcisczfvh.space^ +||quagglegangwaybursty.cyou^ +||quahogsatinet.cfd^ +||quaintbitter.com^ +||quaizoa.xyz^ +||quakedevastatedprinter.com^ +||quakingapathetic.com^ +||quakingthereafter.com^ +||qualiclicks.com^ +||qualificationgarland.com^ +||qualified-beach.pro^ +||qualifiedact.com^ +||qualifiedbillion.com^ +||qualitiessnoutdestitute.com^ +||quality-traffic.com^ +||qualitydestructionhouse.com^ +||qualitymortify.com^ +||quangokebobmurally.cyou^ +||quanta-wave.com^ +||quantica900.com^ +||quapawmooruk.qpon^ +||quarantine2procedure.com^ +||quarmediety.shop^ +||quarneedham.cfd^ +||quarreljaggedloathe.com^ +||quarrelsomewhatsobbing.com^ +||quarrybeforehandwillingly.com^ +||quarterbackchangeless.com^ +||quarterbackdisturbing.com^ +||quartodweltmools.cyou^ +||quasargurge.qpon^ +||quaser87.com^ +||quasheenunhood.com^ +||quasicurrant.com^ +||quasly.net^ +||quasor.net^ +||quasseskeepnet.qpon^ +||quavershelp.cfd^ +||quaybeware.com^ +||qubhjnodheizn.site^ +||qubisticss.com^ +||qudbmtsluirkx.site^ +||queachycorer.com^ +||queasydashed.top^ +||queasytonight.com^ +||quedfulmidrib.shop^ +||queencolloquial.com^ +||queenrangalways.com^ +||queingmuggur.com^ +||queleainsulaeoutdate.cyou^ +||quellambrein.com^ +||quememawp.shop^ +||quenchgranite.com^ +||querelablayne.cfd^ +||queridoploceushorsts.qpon^ +||querulous-type.com^ +||queryto63.net^ +||quesid.com^ +||questgin.com^ +||questionable-shoulder.pro^ +||questionablenet.com^ +||questionneuroticgrief.com^ +||questionschildish.com^ +||queue2switching.net^ +||queuefireball.com^ +||qufjwerhuok.in^ +||qufzoiycxutsn.website^ +||quge5.com^ +||quickads.net^ +||quickedbamban.cfd^ +||quickerapparently.com^ +||quickieboilingplayground.com^ +||quickloadbinpack.click^ +||quickpicnicuniverse.com^ +||quickwittedconclusion.com^ +||quidamprebend.cfd^ +||quiet-cdn.shop^ +||quietbrookhill.com^ +||quietleaffield.com^ +||quietleafgarden.com^ +||quietwindpath.com^ +||quilaassort.shop^ +||quillonalgums.com^ +||quillshut.com^ +||quillykeened.cyou^ +||quinasdepure.qpon^ +||quinelacodeine.qpon^ +||quiniachiel.cfd^ +||quinincider.qpon^ +||quinolskinboot.shop^ +||quioneroudle.com^ +||quiraemmenic.cfd^ +||quirkycamera.pro^ +||quirkytop.pro^ +||quiscdvothbdc.com^ +||quixoticleading.pro^ +||quixoticzest.com^ +||quixova.com^ +||quizmastersagaciousernie.com^ +||quizzicalrun.com^ +||quizzicaltackle.pro^ +||qujaotqzrctlf.website^ +||qujye8zbujrup1g7g.cfd^ +||quksyhnvkuhru.website^ +||qultgdlesbdaw.online^ +||qunskbadgzcdx.site^ +||quoddedelfdom.cfd^ +||quodvmljwdqec.site^ +||quohogssopping.com^ +||quohogssterinbeeish.cfd^ +||quoinvoiles.qpon^ +||quoiterindolyl.shop^ +||quokkacheeks.com^ +||quokkasgraf.com^ +||quonsettarish.qpon^ +||quorsukey.cyou^ +||quotationgambling.com^ +||quotedrigorous.com^ +||quotes.com^ +||quothbarges.cfd^ +||quottishiya.cfd^ +||quovwtlokqoebl.com^ +||qupnxsdvarzew.site^ +||qurushfikerypitanga.cyou^ +||qusoznqtkabsj.space^ +||quszrmzafudas.online^ +||qutxilqcuqp.in^ +||quuawwsijimlf.website^ +||quueeswrbyjqg.space^ +||quukmrgpcuyvm.online^ +||quwtzyadstt.com^ +||quxgijjahdogb.site^ +||quxzryrnmaqlz.online^ +||quyhwurkmryjqd.com^ +||quyiucbigjgng.site^ +||quyxwohgpxsue.online^ +||quzdwlwqnxrta.website^ +||qvafkzqojrhbl.online^ +||qvakujjzyrxqi.online^ +||qvbnjnsodshaj.site^ +||qvcnveqlnmrcg.click^ +||qvdcwnmcgwdrj.site^ +||qvdmgzzgpgrei.website^ +||qvducxfxslowu.store^ +||qvgmgjysbwpgb.website^ +||qvhpekykxvzdx.site^ +||qvhwedkmacmgp.space^ +||qvhwzubuzbcvj.site^ +||qvikgrtirgcjs.online^ +||qvkweketjnnfu.space^ +||qvlaccdtxdrsi.site^ +||qvrnatsauhini.website^ +||qvsimvenounsx.online^ +||qvtoipjwjwyib.site^ +||qvujlogasdcdg.site^ +||qvvjlxvocplujhc.com^ +||qvvurjgilhgbd.space^ +||qvwcrygyfqeih.site^ +||qvwhkitodmhln.space^ +||qvwvsajsiwmhb.site^ +||qvygvjqviczpp.online^ +||qvzynkitqiook.site^ +||qw9xp8f49f2pfby.cfd^ +||qwcohdprvst.com^ +||qwfmqkysepqin.online^ +||qwgruwrtcyxft.store^ +||qwikln.com^ +||qwiqbppovqbpq.com^ +||qwjynhitrpsgz.space^ +||qwlmacbmwmtum.online^ +||qwnizqblmkevc.space^ +||qwodmzryxhtss.website^ +||qwomxpwreemjh.space^ +||qwpusvbfqahfy.site^ +||qwrwawwlrlkyr.top^ +||qwskjvlutemqg.website^ +||qwtag.com^ +||qwtcmhgblnfeu.site^ +||qwtrynpy.com^ +||qwubjdcxzwwpw.site^ +||qwvqbeqorrobv.top^ +||qwwrqxlbplpws.website^ +||qwxolavxykodb.site^ +||qwzbcukveymrc.online^ +||qwzly.com^ +||qxadedhoewqwc.store^ +||qxanfanfhkpxp.space^ +||qxawczrzwjrfg.space^ +||qxbkmxojrqwkb.online^ +||qxbunoqpmxnhl.online^ +||qxbvqxqqo5rkhh.cfd^ +||qxc4ftk638jznzliyxb6offlh.cfd^ +||qxcqurvolreou.space^ +||qxdownload.com^ +||qxhjutyuykewi.store^ +||qxjgrlobfkjtv.site^ +||qxlivwpqqp.com^ +||qxpxrbettkskb.space^ +||qxqjccxfiihvf.online^ +||qxqsrwtzxbpae.store^ +||qxrbu.com^ +||qxrglrpebddlo.space^ +||qxsgambwwkoib.site^ +||qxucibukvklk.com^ +||qxummanifgrjp.site^ +||qxzfdeagblwys.space^ +||qyalpbwjsmvgz.online^ +||qybratedbxyac.online^ +||qyczmtalenlnc.store^ +||qygpcxfqqvfhr.online^ +||qykvkfccj.com^ +||qylkhwawxhomr.site^ +||qylofdsbhdluj.space^ +||qymswdusycdvz.space^ +||qypuezrjzraew.site^ +||qyromjlyvzwoj.top^ +||qysynzovbduzh.online^ +||qyttlkcxwcztv.space^ +||qyudtpjhxvkdb.website^ +||qyuimmypxzqxs.space^ +||qyvhjpwkyxlsp.website^ +||qywecxnmax.com^ +||qyxlypmuckbsw.online^ +||qz239yx7x4vvj1k96j2z3ulg.cfd^ +||qz496amxfh87mst.com^ +||qzaijhdclqlfg.site^ +||qzdfeuspwetft.space^ +||qzfcqddxkdliy.top^ +||qzizvxzcdvxnd.website^ +||qzjcjpugwmdda.site^ +||qzogulnggdfsi.online^ +||qzoxaijuvxzwv.online^ +||qzpifnofrtvrd.store^ +||qzpnlrckbpcwe.online^ +||qzruomjczpdzt.store^ +||qzrzrendsnebn.online^ +||qztqjcwpbbttr.store^ +||qztuqvcdfyphx.store^ +||qzvtzfebmeleg.website^ +||qzwwsvjamjigb.online^ +||qzxauhysleixe.website^ +||qzyiewbewqgaa.space^ +||qzyovqyqmweox.site^ +||qzzkydvzyxgxv.site^ +||qzzzzzzzzzqq.com^ +||r-q-e.com^ +||r023m83skv5v.com^ +||r1ko6v8x48q971mlvr53k6.cfd^ +||r2izxventc18b3.cfd^ +||r48vqczk3eyeb6nukc.cfd^ +||r582cmkwklbyb4v7.cfd^ +||r5zkgi2ufhmkn5ty2i.cfd^ +||r63engo6xw8jtkpze.cfd^ +||r66net.com^ +||r66net.net^ +||r6h2ww744xk62t7.cfd^ +||r7q58o51bl9lwkertbpurn78fjri.rest^ +||r8bz.com^ +||r932o.com^ +||r9x.in^ +||raadsomrmitvd.online^ +||raamskpgcpect.site^ +||rabatosrhombus.qpon^ +||rabbitcounter.com^ +||rabbitheedless.com^ +||rabbledrawingacquit.com^ +||rabidgeoff.com^ +||racedinvict.com^ +||racemeyowden.com^ +||racesmoulderstamp.com^ +||racespreachersupper.com^ +||raceusid.com^ +||racgpoclwvdub.space^ +||rachkoorka.shop^ +||racialboats.com^ +||racialregister.com^ +||racingorchestra.com^ +||racketcredit.com^ +||racketwoo.com^ +||rackmanrepique.com^ +||raconinial.qpon^ +||racunn.com^ +||radarconsultation.com^ +||radbafhuhq.in^ +||radiancelongitude.com^ +||radiancerelaysacred.com^ +||radiancethedevice.com^ +||radiantmedia.net^ +||radiantspacecraftbell.com^ +||radiantvalerelieve.com^ +||radiatortackyhag.com^ +||radiodarn.com^ +||radishrarity.com^ +||radiusfellowship.com^ +||radiusix.net^ +||radiusmarketing.com^ +||radshedmisrep.com^ +||raeavmvblsahe.site^ +||raecvksiazbwe.website^ +||raejvjtrqqchp.space^ +||raejwfqcdketq.website^ +||rafekunbi.com^ +||raffleprotectionbow.com^ +||rafflesgrabby.shop^ +||raffomfha.com^ +||rafikfangas.com^ +||rafterlackersmaunche.cfd^ +||raftschoreasfavi.cyou^ +||ragan-qdr.com^ +||ragapa.com^ +||rageagainstthesoap.com^ +||ragecodliver.com^ +||rageruvanite.com^ +||raggedstriking.com^ +||raggedtwinheadmaster.com^ +||raggedyreneg.cfd^ +||ragglelevite.cfd^ +||raglassofrum.cc^ +||ragmenarrect.cyou^ +||ragodafaykbsr.site^ +||ragtagstinguy.qpon^ +||ragulycoarb.qpon^ +||ragulyenlink.cfd^ +||ragusyepongreenge.cfd^ +||ragxtlbtbehwc.website^ +||rahdeckman.cyou^ +||rahrcumhbyxrm.space^ +||raibblzfnoctm.space^ +||raidfrightbritain.com^ +||raidingfeuar.cyou^ +||railroadignorant.com^ +||rainbowwhereaccording.com^ +||rainexceptionrabbit.com^ +||raineyeshadowguilty.com^ +||rainsyallachinela.cfd^ +||raioccnxmlgkv.com^ +||raisedfaraway.com^ +||raisedghostsscalpel.com^ +||raisedlicenseexpedient.com^ +||raisedtributeefficacious.com^ +||raisingpeppermint.com^ +||raisqahsubhte.space^ +||raiukhjsqjzxt.online^ +||rajeezwhksdfl.site^ +||rajgpmrlvpdde.space^ +||rajmisstepspartle.qpon^ +||rak8s.com^ +||rakelyashrafi.cfd^ +||rakerykulimitangelic.qpon^ +||rakiblinger.com^ +||rakishgabling.com^ +||rakishrooster.shop^ +||ralhkgibukxcw.online^ +||ralishswarmer.com^ +||rallierweaner.qpon^ +||ralliesmeld.cfd^ +||rallytrck.website^ +||ramblerenarm.cyou^ +||ramentwere.cfd^ +||rameshdipseypitying.cfd^ +||ramismtears.qpon^ +||ramistbeaborith.cfd^ +||ramjgqvuswua.com^ +||ramlvunszdcxt.website^ +||rammagepertly.qpon^ +||rammibielby.cyou^ +||rammishruinous.com^ +||ramonaungrain.cfd^ +||ramplorskyugle.shop^ +||ramppopulateresponse.com^ +||rampsmeow.cyou^ +||ramtagustinghaviour.cfd^ +||ranchmohawks.qpon^ +||ranchsatin.com^ +||rancidframingyet.com^ +||rancidmorsel.com^ +||ranciocapot.cyou^ +||randershooflet.cfd^ +||randiul.com^ +||randomadsrv.com^ +||randomdnslab.com^ +||randomignitiondentist.com^ +||randomreprintinvoice.com^ +||randyetitanic.com^ +||range2services.com^ +||rangehaltedmotley.com^ +||rangerpursuedasia.qpon^ +||rangeyfrapler.cfd^ +||ranidaelater.qpon^ +||ranklessubget.cyou^ +||rankpeers.com^ +||ransackbolases.qpon^ +||ransommaliciousveneering.com^ +||ransomnotify.com^ +||rantmurmursclumse.qpon^ +||ranulascris.qpon^ +||raoneoyubabas.space^ +||raosmeac.net^ +||rapacityoutnumbersunglasses.com^ +||raphidewakener.com^ +||rapid-marketing.pro^ +||rapidfoxengine.com^ +||rapidhits.net^ +||rapidinvoicebasket.com^ +||rapidobellhop.shop^ +||rapidtokit.net^ +||rapleapedappear.com^ +||raplochgorblin.qpon^ +||rapolok.com^ +||rappealaunt.cfd^ +||rapperautumn.cyou^ +||raptiqhvowpwv.store^ +||raptripeessentially.com^ +||raptureinsanity.com^ +||rapturevirtueblake.com^ +||rapturyinstar.qpon^ +||rare-remote.com^ +||rare-reveal.com^ +||rarelygeoidal.cyou^ +||rarelywithinlull.com^ +||rarerburundi.cyou^ +||rarerzlote.shop^ +||rarespeech.pro^ +||rarityboastful.com^ +||raritystandforester.com^ +||rarsahalfjis.com^ +||rarsorkhfawtq.space^ +||rash-thanks.pro^ +||rashcolonizeexpand.com^ +||rashestmatzohs.cyou^ +||rashlyblowfly.com^ +||raspconfirmationtroops.com^ +||rasperspalter.cyou^ +||raspfact.com^ +||rasprepress.com^ +||rasqeemrfzdoq.website^ +||rassledgenekiballs.qpon^ +||rastikdoggo.cfd^ +||rastleelastin.shop^ +||rastleemesa.com^ +||rasurescaribou.com^ +||ratajdmedasrd.online^ +||rate12.net^ +||rateantidotecandle.com^ +||ratebilaterdea.com^ +||ratedeaddisk.com^ +||raterestrict.com^ +||rathgawsie.qpon^ +||ratholereedyninety.qpon^ +||ratingmarveldisguise.com^ +||ratiogodlessirrigate.com^ +||rationalhungerthicket.com^ +||rationalizeinadequatecomedian.com^ +||rationalizeoverwhelmendeavour.com^ +||rationallyimpeccablefix.com^ +||ratitesbogging.com^ +||ratpmvosvwfra.space^ +||rattedaten.cyou^ +||rattednuncle.qpon^ +||rattishandrewlemanea.qpon^ +||rattledcareenssired.qpon^ +||rattlekindergartencultivate.com^ +||rattlesimply.com^ +||raukfsubdwcvy.site^ +||raupsica.net^ +||rauracipodlikearsis.qpon^ +||raurikivotetrilite.cfd^ +||rausougo.net^ +||rauvoaty.net^ +||ravedrizzle.com^ +||raveigryeggfj.website^ +||ravenerfeower.qpon^ +||ravenouspetition.com^ +||ravm.tv^ +||raw-co.com^ +||raw-solid.com^ +||rawasy.com^ +||raweast.pro^ +||rawforcecooperation.com^ +||rawintomb.cfd^ +||raxcaffle.com^ +||raxpeikufhiyp.site^ +||raxsqlbokhscx.website^ +||raxxkxvipsusz.site^ +||rayanbordel.com^ +||rayatcub.shop^ +||raylessalmightlemogra.qpon^ +||raylqxbp.com^ +||raymondtoaster.com^ +||rayonneluaus.qpon^ +||rayvirtual.com^ +||razeebisons.com^ +||razerserosasbronzes.cfd^ +||razorcaracalbimbos.cyou^ +||razorcommentdisprove.com^ +||razorstomial.cyou^ +||rbdvwhcizpzoz.space^ +||rbejwzfebcxaz.world^ +||rbemdvyhqskji.site^ +||rbenpxldjggnj.online^ +||rbergego.com^ +||rbfnporpsrazz.online^ +||rbfopobkvokbt.online^ +||rbfwyvfqvwgwo.website^ +||rbhraahxxsllp.online^ +||rbipvkasmggrm.site^ +||rbjixtnbjdcnd.online^ +||rbjnuporihrye.store^ +||rblezsuhrvhor.space^ +||rbnfyqwhkwffg.website^ +||rbp-gen1.site^ +||rbpksavddouil.store^ +||rbqcg6g.de^ +||rbqfprbbtwgej.online^ +||rbsfckgfwpgnr.site^ +||rbsifiqnyrhfd.space^ +||rbsiwzkxqrfkw.site^ +||rbtfit.com^ +||rbtget.com^ +||rbthosgtpzkae.website^ +||rbthre.work^ +||rbtkcodmcljfy.store^ +||rbtwo.bid^ +||rbupxzhgulhdv.site^ +||rbycczculjquv.site^ +||rbzcsaoclypxl.website^ +||rbzqarqzoveqy.top^ +||rbzwxevjjkjjc.site^ +||rcdn-web.com^ +||rcevwjumlnknn.website^ +||rcf3occ8.de^ +||rcgltzpeupmpi.space^ +||rcgzswaqloxag.store^ +||rcinksfpvdfgb.store^ +||rciokmwkjiwuw.store^ +||rciqxqgkkwlbf.space^ +||rcjqzugspmife.online^ +||rcjrvsxcsgdpx.site^ +||rcjzipeazsuly.website^ +||rckvklcpibmdz.online^ +||rcnhgfebinhck.space^ +||rcnxvdowqmfuo.store^ +||rcobagxqggres.website^ +||rcpwnyxqipgsn.space^ +||rcqeeybtrarwv.online^ +||rcqeuzctbselw.site^ +||rctwvizgssraz.store^ +||rcvarwsudnwxa.website^ +||rcvlink.com^ +||rcvlinks.com^ +||rcxbznsriheku.website^ +||rcxltnjszmheg.space^ +||rcxtaenbaktmr.site^ +||rcygxjvmjadds.site^ +||rcylnhskcjngh.online^ +||rdcdzuzowsxnq.website^ +||rddgtxaradmcd.space^ +||rddywd.com^ +||rdedkdhyuyghl.online^ +||rdexylsftabnr.store^ +||rdezqwydewmuu.store^ +||rdgrtoqfedpiz.site^ +||rdguimiewymei.online^ +||rdhazivrgjcfb.site^ +||rdhsefvixvaws.space^ +||rdhzeagmyxdim.site^ +||rdiloktcbwkhg.online^ +||rdizbuadhvcrs.site^ +||rdlkuvqesmlva.store^ +||rdncetfegztbp.space^ +||rdqmyfwlpcjvh.site^ +||rdqonejxzdwym.store^ +||rdraygxaymmms.online^ +||rdrctgoweb.com^ +||rdroot.com^ +||rdrtrk.com^ +||rdtk.io^ +||rdtracer.com^ +||rdtrck2.com^ +||rdwfbrzboplva.website^ +||rdwmct.com^ +||rdzjxlizigryv.online^ +||rdzretjctqkcn.site^ +||reacheffecti.work^ +||reachmode.com^ +||readiong.net^ +||readserv.com^ +||readycelebrationleaf.com^ +||readydolphinpoverty.com^ +||reahyouglas.org^ +||reajyu.net^ +||realisechewing.com^ +||realiserecognize.com^ +||realizationnewestfangs.com^ +||realizebutterflyfarfetched.com^ +||realizerequiredsocially.com^ +||realizesensitivenessflashlight.com^ +||reallyduskseventeen.com^ +||realmatch.com^ +||realmatchllove.com^ +||realnewslongdays.pro^ +||realorganrobe.com^ +||realsh.xyz^ +||realsrv.com^ +||realsrvcdn.com^ +||realtime-bid.com^ +||realvu.net^ +||reamusemooleys.com^ +||reapedawning.qpon^ +||reariimime.com^ +||rearrangecomecosy.com^ +||rearrangesubsequentlyloosen.com^ +||reasonable-bet.com^ +||reasonable-source.com^ +||reasonable-track.pro^ +||reasoningcarry.com^ +||reasoningcoefficient.com^ +||reasoningdreary.com^ +||reasoningfashionbrood.com^ +||reasoningiconcealment.com^ +||reatasesetitoefa.com^ +||reate.info^ +||reatwithdifyferuk.org^ +||reaujwzwzkdih.store^ +||reauojyojmlcc.site^ +||reavershollowarpath.cyou^ +||rebbesitemize.shop^ +||rebegincantdog.qpon^ +||rebellyelude.cyou^ +||rebirththocht.qpon^ +||reboantzarf.com^ +||rebootdazzler.qpon^ +||rebootsandboy.cyou^ +||rebootsormers.com^ +||rebosaarco.qpon^ +||reboundcontekaquiver.cfd^ +||rebozosmatches.cyou^ +||rebracepuru.shop^ +||rebrandkaolins.cfd^ +||rebukeirresistiblesubstitute.com^ +||rebukemusclesshark.com^ +||recanedlivable.qpon^ +||recaneschametz.shop^ +||recantkeynotecrane.com^ +||recarvetalkee.cfd^ +||recastwilsomeleaves.cyou^ +||reccyresided.shop^ +||recdirectgo.biz^ +||recededhonours.cfd^ +||recededjasminsentea.cyou^ +||recedefury.com^ +||receiptcadenceresurrection.com^ +||receiverbookwormlazy.com^ +||recentathwartknew.com^ +||recentdisruptprocessed.com^ +||recentlathe.com^ +||recentlylamentharmful.com^ +||recentopportunity.com^ +||receptioninflation.com^ +||receptivity.io^ +||recessionhillside.com^ +||rechaosgreige.shop^ +||recipeaddingavenue.com^ +||recipeshaped.qpon^ +||recipessleyingblas.cyou^ +||recipientpopulationregret.com^ +||reciprocalextending.com^ +||recitaldezincalonzo.qpon^ +||recitalfinancially.com^ +||reckless-country.com^ +||recklesshumiliated.com^ +||reclaimhot.com^ +||reclaimvanillademure.com^ +||reclassbirlers.qpon^ +||reclinecostumepessimistic.com^ +||reclinenumbermen.com^ +||reclineonseteducational.com^ +||reclinetunepollen.com^ +||reclod.com^ +||recludewarbly.cyou^ +||recodemumbo.com^ +||recoilregionsjonas.com^ +||recollectautomatically.com^ +||recommendationbredshrimp.com^ +||recommendationknee.com^ +||recommendedcasualtymysterious.com^ +||recompensemesmerize.com^ +||recompenseointmentdaydream.com^ +||reconsiderdoubtlesstravel.com^ +||reconsideroverweight.com^ +||reconsiderquestions.com^ +||reconstructambition.com^ +||reconstructnicestain.com^ +||record.guts.com^ +||record.rizk.com^ +||recordedheavinessexperience.com^ +||recordedthereby.com^ +||recordercrimeslender.com^ +||recordingbush.com^ +||recordsbuoyage.cyou^ +||recordtwo.com^ +||recoupsamakebe.com^ +||recoverbrawlverbal.com^ +||recoverlizziegainful.com^ +||recovernotionvideo.com^ +||recoverpresentationdriver.com^ +||recoveryongoing.com^ +||recrampwiped.com^ +||recreateoption.com^ +||recreationducked.com^ +||rectabother.qpon^ +||rectangledevelopernewspapers.com^ +||rectangular-she.pro^ +||rectificationhugearcade.com^ +||rectumreused.com^ +||recuperatespecify.com^ +||recurseagin.com^ +||recursebaftareperk.cyou^ +||recyclehorridleading.com^ +||recyclingclumsiness.com^ +||red-just-fit.click^ +||red-selection.com^ +||red-shopping.com^ +||redamgdzdedoe.site^ +||redbillcrumbdarting.cfd^ +||redbugturkisinwalls.qpon^ +||reddlemoonbowpurlieu.qpon^ +||redeemcontagiontransmitted.com^ +||redeemspaciousdevice.com^ +||redfishtottingtintie.cyou^ +||redipsopaquer.com^ +||redirect-path1.com^ +||redirect-verde.com^ +||redirecthitnspin.com^ +||redirectingat.com^ +||redistedi.com^ +||redressjaguarsubsided.com^ +||redressmigrantfailing.com^ +||redressparity.com^ +||redresspuddleprocedure.com^ +||redrotou.net^ +||redsdegas.qpon^ +||redsearoblates.com^ +||redshieldcar.com^ +||reduau.top^ +||reducedcombat.com^ +||reduceddiscresolute.com^ +||reducedoverturn.com^ +||reducedretrievalelemental.com^ +||reducingwailingspirit.com^ +||redugmonster.cfd^ +||redupllicitly.qpon^ +||redustsinters.com^ +||redwingmagazine.com^ +||redwudsabana.com^ +||reebr.com^ +||reedilyagersmonkish.cfd^ +||reedsbullyingpastel.com^ +||reedsinterfering.com^ +||reedthatm.biz^ +||reefunderage.com^ +||reekonefoldonefoldslang.com^ +||reekyjangledtextlet.qpon^ +||reelingcuracaobras.qpon^ +||reelingpanther.qpon^ +||reelnk.com^ +||reemitglucic.shop^ +||reenakun.com^ +||refbanners.com^ +||refbanners.website^ +||refectsdodgily.cyou^ +||refedclaws.cfd^ +||refer-path.com^ +||referenceslayerlens.com^ +||referenceswarmerbread.com^ +||refernumb.com^ +||referredrender.com^ +||referredwings.com^ +||refilmsbones.top^ +||refinepiledcumbersome.com^ +||refinespaesmatsue.cfd^ +||refinessilkmen.shop^ +||refkxilsrghro.store^ +||reflamebilosotogyps.qpon^ +||reflectingbunaloud.com^ +||reflectinglouiseera.com^ +||reflowsamchoor.cfd^ +||reflushcabook.qpon^ +||refluxvenous.cfd^ +||reflyvolutalinget.cyou^ +||refnippod.com^ +||reforestscantunlaced.com^ +||reforgecomport.cfd^ +||refoundpeletre.com^ +||refpa.top^ +||refpa4293501.top^ +||refpasrasw.world^ +||refrainanthony.com^ +||refrainsitimmovable.com^ +||refraintsarcoma.com^ +||refreiddisced.cfd^ +||refreshmould.com^ +||refrigwattle.cyou^ +||refusalcustody.com^ +||refusalspudvicinity.com^ +||refuserates.com^ +||refutationflowerbed.com^ +||regalergracercrenula.cyou^ +||regardingfourteenth.com^ +||regardingsnappy.com^ +||regardlived.com^ +||regaugemorn.cyou^ +||reghgnyodfqoi.store^ +||regiftkendal.shop^ +||regiftpercale.cyou^ +||regimentchat.com^ +||regionads.ru^ +||regionalavouchcreeping.com^ +||registryshrillformality.com^ +||registrytodaylocked.com^ +||regosolalumen.shop^ +||regretfinancially.com^ +||regretnotestool.com^ +||regrowsbisleypetits.cfd^ +||regularlyincompatiblevaliant.com^ +||regularperception.com^ +||regularseatradio.com^ +||regulationinexhaustiblealight.com^ +||regulationprivilegescan.top^ +||regulationstranger.com^ +||rehabilitationforegoingdefendant.com^ +||rehearsalagilebailed.com^ +||rehearsejuniorloaded.com^ +||rehtrike.com^ +||rehvbghwe.cc^ +||rehyqhtvaihtg.site^ +||reichelcormier.bid^ +||reifiedscarman.qpon^ +||reincurberoida.cfd^ +||reindaks.com^ +||reindoorway.com^ +||reinpreposition.com^ +||reisnerjibersserial.cyou^ +||reissueupshots.qpon^ +||rej-shkpi.wiki^ +||rejectionwell.com^ +||rejudgeorakzai.cfd^ +||rejve.com^ +||rekbudlhhzxps.website^ +||rekeyeddutied.cfd^ +||rekipion.com^ +||rel-s.com^ +||relaamlrijdxq.site^ +||relampmikvoth.qpon^ +||relappro.com^ +||relapsebandage.com^ +||relatepermanentlyminimum.com^ +||relationshipspotted.com^ +||relativeconductedabundant.com^ +||relativelylast.com^ +||relatumrorid.com^ +||relaxafford.com^ +||relaxtime24.biz^ +||relaybaseinreplicas.net^ +||relaylobuli.cfd^ +||relearnopahs.com^ +||releasedfinish.com^ +||releasewriggle.com^ +||relestar.com^ +||relevantdespise.com^ +||reliableceaseswat.com^ +||reliableguardianindifference.com^ +||reliablemore.com^ +||relicremote.com^ +||relicsmistersweirdo.qpon^ +||relictslullay.cfd^ +||reliefraindues.com^ +||relieved-solution.com^ +||relievedjoke.com^ +||reliftstanes.cyou^ +||religionhaltnon.com^ +||religionscammerbusinessmen.com^ +||religiontall.com^ +||relinkbatted.cfd^ +||relishdistractedegypt.com^ +||relishsinew.com^ +||relishstudybreather.com^ +||relishsubsequentlytank.com^ +||relishsupportive.com^ +||relistsinflux.qpon^ +||rellsagesamerence.com^ +||relomxuquuors.online^ +||reluctancefleck.com^ +||reluctancegenetic.com^ +||reluctantlyaluminiumput.com^ +||reluctantlyjackpot.com^ +||relyspeight.cyou^ +||remaininghopefully.com^ +||remainmother.com^ +||remainthieve.com^ +||remakerkvah.qpon^ +||remansowner.com^ +||remappaginae.cyou^ +||remarkable-teacher.com^ +||remarkableprompt.com^ +||remarkablyprop.com^ +||remarriedbore.com^ +||rematchpewees.cfd^ +||remedeforlain.qpon^ +||remedyweek.com^ +||remembergarbage.com^ +||remembergirl.com^ +||rememberineffectiveadvisedly.com^ +||remendspacestaxying.cfd^ +||remillsynangederange.cyou^ +||remindwage.com^ +||remintrex.com^ +||remintspieled.cyou^ +||remissapricothomey.com^ +||remissnecessaryunderneath.com^ +||remnanttrickyoccurrence.com^ +||remorseful-foot.com^ +||remorsefuldaughter.com^ +||remorsefulindividual.pro^ +||remorsefulsympathy.pro^ +||remorsefulwear.com^ +||remorseoblivionnations.com^ +||remorsetrumpet.com^ +||remote-record.pro^ +||remote4350.net^ +||remotebrightesttumor.com^ +||remotelyhundreds.com^ +||remoterbearhug.cyou^ +||removalchest.com^ +||removalnewest.com^ +||removedidentification.com^ +||removedrehabilitation.com^ +||renamereptiliantrance.com^ +||rencessedessations.com^ +||rencontreadultere.club^ +||rencontresparis2015.com^ +||rendfy.com^ +||renewedrepresent.com^ +||renewsymbolmosque.com^ +||renkycarene.com^ +||renovatepaperworkunion.com^ +||renowncooperatepat.com^ +||renownsteeringscholar.com^ +||rensipmsqnpdd.space^ +||rentalsloppyodds.com^ +||renteostend.com^ +||rentingimmoderatereflecting.com^ +||reopenshelly.cfd^ +||reopenwebfed.shop^ +||reople.co.kr^ +||reorganizeglaze.com^ +||reoxwrcawzaeo.website^ +||repantalsedighters.com^ +||repartclasps.qpon^ +||repelaffinityworlds.com^ +||repelbeachbeggarly.com^ +||repentant-lay.com^ +||repentcalligraphyjacket.com^ +||repetitiousfontmonopoly.com^ +||repipequiapojibbed.cyou^ +||repiquebangingunrein.qpon^ +||replacementgoodwilljunkie.com^ +||replatesmallen.cfd^ +||replayflutter.cfd^ +||replaysmit.cfd^ +||replicas4nitrogen.net^ +||replyhawinvest.com^ +||replytangerine.com^ +||reporo.net^ +||report1.biz^ +||reportallege.com^ +||repourssnowie.shop^ +||representationenterprise.com^ +||representationevaluationdescription.com^ +||representationhairchain.com^ +||reptilecategory.com^ +||reptiledoodle.com^ +||repulsiveformerlydevaluation.com^ +||requestinclude.com^ +||requiemarras.shop^ +||required-crack.pro^ +||requiredswanchastise.com^ +||requisiteconjure.com^ +||requisitezap.com^ +||rereddit.com^ +||reringhuari.cyou^ +||rerisesveen.qpon^ +||reroplittrewheck.pro^ +||rerowcupule.cfd^ +||reryn3ce.com^ +||resacaafflux.cyou^ +||resacaduende.com^ +||resaidbodily.cyou^ +||resalag.com^ +||resawnseized.cyou^ +||researchinvariablekazan.com^ +||resedueresedueminimum.com^ +||resentfulsecure.com^ +||resentlocallycamomile.com^ +||resentmentsadflew.com^ +||resentproduces.com^ +||resentreaccotia.com^ +||resetcong.shop^ +||resewsandrolglucke.qpon^ +||reshipparky.cfd^ +||residencechalked.com^ +||resideour.com^ +||resideplanned.com^ +||residuatankerslapels.cfd^ +||resignationmarks.com^ +||resignationsilk.com^ +||resigndissatisfactionplaywright.com^ +||resignedcucumber.com^ +||resignedgingeroldest.com^ +||resionsfrester.com^ +||resistcorrectly.com^ +||resistpajamas.com^ +||resistsupplieslank.com^ +||reslaynunlikestreams.qpon^ +||resmellhighth.qpon^ +||resmeltbrocketorlops.cfd^ +||resmilecouteau.qpon^ +||resnubdreich.com^ +||resolutionmeasures.com^ +||resolutionoversleepinmate.com^ +||resolvepliantcannot.com^ +||reson8.com^ +||resonance.pk^ +||resorbneossin.qpon^ +||resortsyulan.cyou^ +||respectfullyalternate.com^ +||respectfullypronounced.com^ +||respectfultill.com^ +||respectivegentlecontinual.com^ +||respiratorcontainssomeday.com^ +||responsad1.space^ +||responsedifferencegrate.com^ +||responseremainrust.com^ +||responservbzh.icu^ +||responserver.com^ +||responsible-debate.com^ +||responsibleharm.pro^ +||responsibleselection.pro^ +||responsive42022.com^ +||ressqretcwdkp.site^ +||restaffect.com^ +||restartsiceboshbok.cyou^ +||restealnuttily.cyou^ +||restedconnectionsympathetic.com^ +||resteddiabetepocket.com^ +||restepkeet.cyou^ +||restlesscompeldescend.com^ +||restorepushed.com^ +||restrainfannylimb.com^ +||resultlinks.com^ +||resumetwigincarnate.com^ +||resweeprelatedancer.cyou^ +||retagro.com^ +||retailstructuregrandparents.com^ +||retainedmonday.com^ +||retaingravely.com^ +||retainsirius.qpon^ +||retakenkrantz.cyou^ +||retaliateseized.com^ +||retaliatespiritual.com^ +||retapedamidase.com^ +||retarget2core.com^ +||retargetcore.com^ +||retargeter.com^ +||retedrabs.com^ +||retelllotionprem.cfd^ +||retemsymbioncomplex.cfd^ +||reth45dq.de^ +||rethinkexercisesupplement.com^ +||retialalmude.cyou^ +||retiaryelsin.qpon^ +||reticencedecay.com^ +||reticencestatesmanfigured.com^ +||reticencevaliddecoction.com^ +||retintaoiya.qpon^ +||retinttubba.cfd^ +||retiringspamformed.com^ +||retoldproddlepasties.cfd^ +||retono42.us^ +||retortmansion.com^ +||retortrealistic.com^ +||retosssanpoil.shop^ +||retourshower.cfd^ +||retoxo.com^ +||retpzsuxpahbf.website^ +||retreatregular.com^ +||retreedraketedder.cfd^ +||rettorndzerin.qpon^ +||rettornrhema.com^ +||rettypholos.com^ +||returfhamburg.cfd^ +||reublnpnc.com^ +||reukdmyat.org^ +||reumhtksdekiz.online^ +||reunionlignoussedovic.cyou^ +||reutterogres.qpon^ +||rev-stripe.com^ +||revampcdn.com^ +||revampsmeth.cfd^ +||revaypolecat.qpon^ +||revcontent.com^ +||revealedcarry.com^ +||revealingplacingpopped.com^ +||revelationneighbourly.com^ +||revelationnineteen.com^ +||revelationplaitmarshy.com^ +||revelationwilfridscience.com^ +||reveledgoodish.com^ +||revenue.com^ +||revenuebosom.com^ +||revenuecpmgate.com^ +||revenuecpmnetwork.com^ +||revenuehits.com^ +||revenuemantra.com^ +||revenuenetwork.com^ +||revenuenetworkcpm.com^ +||revenuestripe.com^ +||revenuevids.com^ +||revenuewasadirect.org^ +||reverencecolourful.com^ +||reverenceenrapture.com^ +||reverencepolite.com^ +||reverendfry.com^ +||reverents.xyz^ +||reversepatise.cyou^ +||reversespelling.com^ +||reversionprunesterrific.com^ +||revfusion.net^ +||revillusiveheavily.com^ +||revimedia.com^ +||revivedplenums.cyou^ +||revivorsr.cyou^ +||revmob.com^ +||revoirodinian.shop^ +||revolutionary2.fun^ +||revolutiontelegram.com^ +||revolving-host.com^ +||revolving-type.com^ +||revolvingemergency.com^ +||revopush.com^ +||revresponse.com^ +||revrtb.com^ +||revrtb.net^ +||revulsekamao.cyou^ +||revupads.com^ +||revwneghofvae.online^ +||rewakemutants.cyou^ +||rewarding-love.com^ +||rewardsaffiliates.com^ +||rewarnliflod.cyou^ +||rewinddisgusting.com^ +||rewinddubbones.com^ +||rewrapssmeary.com^ +||rewritewitch.com^ +||rexadvert.xyz^ +||rexargue.com^ +||rexdaaohsoxkr.space^ +||rexsrv.com^ +||rextix21.com^ +||rexveqjqotqus.site^ +||rexvxrnpkswce.space^ +||rezrboarmmqmv.top^ +||rfapkfkftokev.website^ +||rfatsbpqippxs.online^ +||rfdjyoggizypp.space^ +||rfgsajvbqvrjb.space^ +||rfihub.com^ +||rfihub.net^ +||rfilmuhipsfdh.online^ +||rfitjctmoafga.website^ +||rfjleunftkwbm.online^ +||rfkylrsdkgo.com^ +||rfkyx92tr9togeknexcvnc7l28cn1ey6w23.cfd^ +||rflfkqfkpurru.website^ +||rfmgepktjvlfi.website^ +||rfpbmkezjrtkf.site^ +||rfpjoviqbmecn.online^ +||rfpmudsnyeuhe.space^ +||rfpunvguhctkq.online^ +||rftpjvhzlsrij.space^ +||rftxmwcivenzn.space^ +||rfuglkuve.com^ +||rfwmfadnncajl.site^ +||rfzjyoayftjgb.website^ +||rfzoyddauaeay.space^ +||rgarcorsbqfss.online^ +||rgbbrdsrwxxoa.space^ +||rgemgnxejsmrt.online^ +||rgezwfnbpigkd.site^ +||rgfawwiupzdho.site^ +||rgfimmbdfkiuoa.com^ +||rggeolibxevzn.website^ +||rgjpcezrdyhuq.website^ +||rglxttztuugzi.space^ +||rgmhrvwugwlnd.website^ +||rgmuksfuciowy.online^ +||rgobrulzyjxyt.site^ +||rgqneyzmihvdg.space^ +||rgskrmtckgwwl.online^ +||rgsoxfrxdalom.website^ +||rgstispqfesdl.website^ +||rgtirdhtvixql.online^ +||rgubhknmmseuy.space^ +||rgubidzwowcpf.space^ +||rgvxfkrhnovqp.store^ +||rgwhbjbbfwitt.site^ +||rgwtxpgxgs.com^ +||rgxbzejaiwfhf.online^ +||rgxqdzkajysfj.website^ +||rgybahkdsqnsz.website^ +||rgzzeowdjgxcg.online^ +||rh57iux7o2jm93ooxc2plbkf8r7g2oc.cfd^ +||rhagiteteeing.cyou^ +||rhamnalemeryjoshi.qpon^ +||rhaphaedottelhumans.cfd^ +||rhbgsycloyttn.website^ +||rhclcbvwtdvfa.com^ +||rhcvbndidmyqt.site^ +||rheebokparlor.cfd^ +||rheneapfg.com^ +||rheniumtania.qpon^ +||rheofepltxbqt.space^ +||rhetoricsolder.com^ +||rheumleeches.cfd^ +||rhfmtibtyidra.com^ +||rhgxenlijkggd.website^ +||rhgycbyetzlqv.website^ +||rhhahzqblcxem.online^ +||rhhvkmwlxeyst.store^ +||rhinfyfqtvift.site^ +||rhinoaffiliates.com^ +||rhioslazjp.com^ +||rhizopiuniquezurich.cyou^ +||rhizotasegue.com^ +||rhizoteoutings.cfd^ +||rhjuemstwodrh.space^ +||rhkgkhqn.com^ +||rhllmitjfxcvg.website^ +||rhnoikbhtktjx.space^ +||rhnrzqbydtuxc.space^ +||rho3ihhlouug529z8eneu.rest^ +||rhobqhafjhhwl.store^ +||rhoditepoudretstipule.cyou^ +||rhofedtj.com^ +||rhombicsomeday.com^ +||rhousoasopersb.org^ +||rhploidy.com^ +||rhpytfij.com^ +||rhrppklpmx.com^ +||rhstsudlojlai.space^ +||rhubarbambassadorweep.com^ +||rhubbnpmaumhr.website^ +||rhudsplm.com^ +||rhumbhylomys.cfd^ +||rhvdsplm.com^ +||rhvdupzwgazwr.online^ +||rhvnpgtxlnlmg.online^ +||rhwajoghefysf.site^ +||rhwpabvmjrtefn.com^ +||rhxdsplm.com^ +||rhymeddauties.qpon^ +||rhymesbluings.cfd^ +||rhynhmifegimi.site^ +||rhythmclamour.com^ +||riaoz.xyz^ +||ribaldoinksdalapon.cyou^ +||ribaldurartic.cyou^ +||ribberstracks.cfd^ +||ribbingmarian.cyou^ +||ribbonauthentic.com^ +||ribgreenhousecompose.com^ +||ribkdvpyszfm.com^ +||ribosesshutes.cfd^ +||ribskinboo.qpon^ +||ribsmuffscornus.cfd^ +||ricalsbuildf.com^ +||ricassosherifi.cyou^ +||ricclvychqusy.website^ +||ricead.com^ +||ricewaterhou.org^ +||ricewaterhou.xyz^ +||ricewukbgater.org^ +||richeryawp.com^ +||richeseventsphysics.com^ +||richinfo.co^ +||richstallar.cyou^ +||richwebmedia.com^ +||rickedpalgatquintus.cfd^ +||rickeyshazan.cyou^ +||ricracsmimpeidemibob.cyou^ +||riddancemanufacturerextraction.com^ +||riddancepants.com^ +||riddeddoggiesnovelet.qpon^ +||riddenlernaea.com^ +||ridderlida.shop^ +||riddleddermsudoric.cyou^ +||riddledevited.cfd^ +||riddlershists.cyou^ +||riddmqqubqwnj.website^ +||rideradjective.com^ +||riderouts.cfd^ +||ridge-cdn.lol^ +||ridgepilotavalanche.com^ +||ridgewherevertical.com^ +||ridgeyelpastronomy.com^ +||ridijnjzkdgry.website^ +||ridingpertconquest.com^ +||ridpygsqfcdte.online^ +||ridxdbbayfmwj.site^ +||ridxvydxlhiej.online^ +||riehurqwgtdey.online^ +||rieixcwzvslxl.space^ +||rieverscucujus.com^ +||rieversshp.shop^ +||riffingamuyong.cfd^ +||riflersland.cyou^ +||riftharp.com^ +||rigapchevkews.site^ +||rigelcabda.com^ +||riggurgle.com^ +||rightedeaglescry.qpon^ +||rightfullydalton.com^ +||rightfullyincomparablefortnight.com^ +||rightpiece.pro^ +||rightshymnic.cyou^ +||rightyclasp.com^ +||rightymatch.com^ +||rigidstiffnesszoning.com^ +||rigill.com^ +||riginvestigator.com^ +||rigorkarate.com^ +||rihbxnftttvlp.website^ +||rihhfqeqwimni.website^ +||rihurxgrxghfh.online^ +||rikjfdrcveozy.space^ +||rilnkygbfbvru.site^ +||rilsozgcmtyio.online^ +||rimeethoxyl.com^ +||rimhysterical.com^ +||riminganousrattons.cyou^ +||rimousdozenedaxiom.cyou^ +||rimplereforce.qpon^ +||rimuspandex.cyou^ +||rinbospisdt.com^ +||ringdisgustpostman.com^ +||ringeddrama.com^ +||ringeyetapa.cyou^ +||ringtonepartner.com^ +||rinkergutless.shop^ +||rinqgwqhyxozh.website^ +||rinsercrikey.qpon^ +||rinserteiids.cyou^ +||riotistlowed.cyou^ +||ripagitateway.com^ +||ripe-heart.com^ +||ripengerm.com^ +||riperemote.com^ +||riperequest.com^ +||ripewhining.com^ +||ripewing.com^ +||riprapgrene.cyou^ +||riprlpruktwdz.space^ +||ripsackfrisian.com^ +||riraconianstar.com^ +||rirki.com^ +||rirrydpcnfxvj.website^ +||risemiddleagedmart.com^ +||risertaigleliangle.qpon^ +||risingestrange.com^ +||risingshadewhite.com^ +||riskexcel.com^ +||riskishbaryta.cyou^ +||risnjmyxfqaep.website^ +||risquesprawls.cyou^ +||ritfbtbqnmvxw.space^ +||ritkmczosfhgk.online^ +||ritlinggravelscombat.qpon^ +||rittersjatki.com^ +||ritweta.cfd^ +||riveledbouge.com^ +||riveretsuez.qpon^ +||riverhit.com^ +||rivne.space^ +||riw7qk75czt1xcohjijvq.cfd^ +||riwzzbhovpdzt.space^ +||riyelenrtznxl.space^ +||riylcrnuvdzyo.space^ +||rizfvsmmsxgqp.website^ +||rizkigkmoa.in^ +||rizuvnddwycjm.space^ +||rizyjzkvtsoib.space^ +||rjacftfazbyjq.online^ +||rjawuengkzqki.space^ +||rjbfslmffohss.site^ +||rjemafqzprwxc.space^ +||rjfhtwwdkebho.online^ +||rjfskgjstkfts.website^ +||rjg4ojoohzj847jjfx2crv.cfd^ +||rjgkejbanninv.online^ +||rjguonqztwmgs.store^ +||rjhegxfaykbngjs.com^ +||rjhfdigsyzfgt.website^ +||rjiabaqzpzndn.website^ +||rjjppvjeepwqk.space^ +||rjklvflzpfmsm.space^ +||rjlfacjephuqy.website^ +||rjliakirakufw.space^ +||rjmagdairzath.website^ +||rjmjflkndiqxw.site^ +||rjmvlgddalvci.online^ +||rjqwkmcvxsouz.space^ +||rjqxnscfpzsau.website^ +||rjrbmjvbdwvfi.space^ +||rjrflywubejow.website^ +||rjriaawxynuek.website^ +||rjsayvndhakyn.online^ +||rjsdiikketqvt.online^ +||rjtzqgeltwaep.store^ +||rjvgkmahuzded.site^ +||rjw4obbw.com^ +||rjxczvecqiipf.site^ +||rjxujpuoxmtlr.website^ +||rjyicrrqyixef.website^ +||rjyplxhvlvd.com^ +||rjz8h1gokeiebhzkqtte1b.rest^ +||rjzbvmbybvokw.top^ +||rjzccaeepyohb.website^ +||rjzkulworyqil.space^ +||rkcpfqtklenvfe.com^ +||rkcyxsarujacr.site^ +||rkezuvqtxgltl.online^ +||rkfcawmdbvpmx.space^ +||rkgwzfwjgk.com^ +||rkjtlnfhsocoz.store^ +||rkmdodaubyhyp.space^ +||rkngifybkarej.online^ +||rknlzlbihktrf.space^ +||rknscandisvqp.space^ +||rkomf.com^ +||rkp8kjfcw5vxlm8h7.cfd^ +||rkpysrmmnhhwi.online^ +||rkqfgycnzlatb.online^ +||rkqukvcjklmns.site^ +||rksywlbzwlvoz.online^ +||rkuaqpagcofuy.online^ +||rkv1.com^ +||rkvhqhkztzlxk.website^ +||rkwxjgbkkfzgrz.com^ +||rlcdn.com^ +||rlcehwohoi.com^ +||rldpantile.com^ +||rldpqijmxuv.com^ +||rldwideorgan.org^ +||rlgdzxczsngqu.website^ +||rlgjhoighzfpf.site^ +||rliclcdbwdmsg.site^ +||rlijekthflfes.website^ +||rliqfusopkcqy.space^ +||rljwrjeuhszis.site^ +||rlkgonihsmmsh.online^ +||rlmtpmsnojdaa.online^ +||rlnvbmsxrreot.store^ +||rlogcejfsgtar.site^ +||rlogscbdafnjf.site^ +||rloqytup54ovpyz8hpb.cfd^ +||rlovygavhheuf.com^ +||rlrsfxkewwgww.site^ +||rlsnntgffqnli.online^ +||rltovwwkqqxbd.space^ +||rludahcaewkfd.online^ +||rluhlgvsxabon.online^ +||rlusaglqgblxw.website^ +||rlwttnzdgmirv.site^ +||rlzxejmnaxkht.website^ +||rm358.com^ +||rm7f1y4gwwlp33.cfd^ +||rmajfshtdeoko.space^ +||rmazxvjbpymsz.website^ +||rmb-trf.net^ +||rmbalnswelwcp.online^ +||rmclskudgnbgj.space^ +||rmddhrvvnhemw.online^ +||rmddsanqhfkvm.online^ +||rmfnmkuwsgeje.website^ +||rmgdxpkjmrjdt.website^ +||rmggipaazeupw.site^ +||rmgyawyeqngtw.space^ +||rmhfrtnd.com^ +||rmilqbspkxtze.online^ +||rmishe.com^ +||rmividzwdzapr.com^ +||rmjxrcqjqvp.com^ +||rmldstprykjcd.store^ +||rmlejoahcpwkwga.com^ +||rmlnxwswbvoff.space^ +||rmnbdofmorzzg.online^ +||rmodpupilgk.com^ +||rmpywaamvfwfa.store^ +||rmqaquvofzwds.space^ +||rmqgscbitoadp.site^ +||rmqtqrtxhwilx.store^ +||rmrjqlpjdlxzd.online^ +||rmshqa.com^ +||rmtltkhgxeljc.site^ +||rmtpouusuokbh.space^ +||rmuancaxpzuj.com^ +||rmuhmdor.com^ +||rmybycfedxhns.store^ +||rmycsmtkwbn.com^ +||rmyhibtadohj.com^ +||rmzsglng.com^ +||rmzyteljkkeds.website^ +||rnb4bxd0.xyz^ +||rnccnwtekuerb.space^ +||rncokhdxtcdxa.website^ +||rndchandelureon.com^ +||rndhaunteran.com^ +||rndskittytor.com^ +||rnejbimorzprh.site^ +||rngzjeedstbru.online^ +||rnistrczswefs.online^ +||rnitqbxrylggu.online^ +||rnjemaathjjge.space^ +||rnjwtdorqjhgm.website^ +||rnmentoftheusys.org^ +||rnmessier.cfd^ +||rnmreusbdsmyc.space^ +||rnmvycnfkeinl.website^ +||rnobijyojinek.website^ +||rnoliuuhsrqjc.site^ +||rnomrpvutxjh729e9pg2bn9.cfd^ +||rnotraff.com^ +||rntcycudcyzdu.online^ +||rnuxzqjkiwiry.website^ +||rnvondsyjfcjq.online^ +||rnwswnvddrykq.website^ +||rnywgmiidmivb.online^ +||roadcontagion.com^ +||roadmapappendfiles.com^ +||roadwaspfang.com^ +||roagrofoogrobo.com^ +||roamedtiffie.com^ +||roasted-job.pro^ +||roasted-standard.pro^ +||roastrigidbitesize.com^ +||roastwearwritten.com^ +||robbdowtndoib.website^ +||robberrelative.com^ +||robberyfilcheurope.com^ +||robeheadlong.com^ +||robesadvertisement.com^ +||robinsaxenic.shop^ +||robledepside.cyou^ +||robotbagpipe.com^ +||robsnaid.qpon^ +||robspabah.com^ +||robustpsychology.com^ +||rocbocmewykty.online^ +||rochetscogware.qpon^ +||rocivctofjzka.space^ +||rockaccountantcrowded.com^ +||rockatruckusfugal.cfd^ +||rockersbaalize.com^ +||rocketme.top^ +||rockingfolders.com^ +||rockmostbet.com^ +||rocksbrast.cfd^ +||rockyappliance.com^ +||rockyspoons.com^ +||rocoads.com^ +||rodeforehead.com^ +||rodegedunk.cyou^ +||rodeinfamous.com^ +||rodesquad.com^ +||rodgerbyelawstharms.cfd^ +||rodgerorology.qpon^ +||rodletunlaugh.com^ +||rodolphavows.cyou^ +||rodrgyfrgbyim.online^ +||rodsmenmetrise.qpon^ +||roeduchess.com^ +||roefcldengayg.site^ +||roemoss.com^ +||roeveskyagclwh.com^ +||roezdewlvwpzr.space^ +||rofant.com^ +||rofcdcdciveur.site^ +||rofncczqeznbj.space^ +||roftyrxyaetij.space^ +||rogerodrias.cfd^ +||rohtx3k1qmrqzi4.rest^ +||roiapp.net^ +||roibvvvvfmhyl.space^ +||roiccwhoodrkb.space^ +||roikingdom.com^ +||roilskokoon.cyou^ +||roilygrasser.shop^ +||rojakplatearoche.cyou^ +||rokeemidgety.qpon^ +||rokeyhart.qpon^ +||rokiiuauifitv.online^ +||rokymedia.com^ +||rolandpeon.qpon^ +||roldbowdiyegy.online^ +||roleacquisitionrighty.com^ +||rolfcairned.qpon^ +||rollafkhgfene.space^ +||rollbackavenge.com^ +||rollerbizarreunanimously.com^ +||rollerefficiency.com^ +||rollingkirundi.cfd^ +||rollingsalt.com^ +||rollserver.xyz^ +||rolltrk9.com^ +||rolmjfexvtuxd.space^ +||romance-net.com^ +||romancedaters.com^ +||romancefever.com^ +||romanceswoman-romance.com^ +||romancetastic.com^ +||romanjillstrung.com^ +||romanticbun.com^ +||romantiidate.com^ +||romemedieval.com^ +||romerobowledbankera.cfd^ +||romil-jdd.com^ +||romperspardesi.com^ +||romsxqicvnbvx.store^ +||rongagesture.cfd^ +||ronnelscaproin.cfd^ +||ronniunnoted.com^ +||ronracepub.com^ +||ronrtklhbxy.com^ +||roobetaffiliates.com^ +||roodlesuval.qpon^ +||roofedaroast.cfd^ +||rooinekpampa.shop^ +||rookishbirde.com^ +||roolhopes.shop^ +||roomerspits.cfd^ +||roomierhisis.com^ +||roommateskinner.com^ +||roommatewon.com^ +||roomshikinginformal.com^ +||roostfraynesector.qpon^ +||rootcaptawed.com^ +||rootierveps.cfd^ +||rootletstall.qpon^ +||roots.baby^ +||rootzaffiliates.com^ +||roowt5l491yq6hb2v.cfd^ +||ropabcagapfvy.com^ +||ropakkmnqyglf.site^ +||ropemeneyas.shop^ +||ropesscrapeboutique.com^ +||roqeke.xyz^ +||rordunpewz.com^ +||roredi.com^ +||roripametier.qpon^ +||rorpwekrnwqzx.com^ +||rosacesquaresloggat.cyou^ +||rose2919.com^ +||rosebudboileverything.com^ +||rosebudedinburgh.com^ +||roserypopolis.cyou^ +||rosettepatrons.cfd^ +||rossperoxy.qpon^ +||rostrumbalsam.qpon^ +||rosy-award.pro^ +||rosynebaliamatrah.qpon^ +||rotate4all.com^ +||rotatealist.cyou^ +||rotateme.ru^ +||rotatingadult.com^ +||rotbnllkqenrw.store^ +||rotf.lol^ +||rotgutsricker.cyou^ +||rothermophony.com^ +||rotifersalutes.cyou^ +||rotiferwah.cyou^ +||rotondasoothegged.cyou^ +||rotshe.cfd^ +||rotsurroundings.com^ +||rottencycle.com^ +||roubouhyokuts.cyou^ +||roucoutaivers.com^ +||roudoduor.com^ +||rougedplaiterbathing.cyou^ +||rougefictionnoose.com^ +||roughlydispleasureslayer.com^ +||roughremove.com^ +||roughyyephede.cfd^ +||rouleausahukar.shop^ +||roundaboutgnatuniversal.com^ +||roundaboutpoisonousglobe.com^ +||roundedfluencyutilities.com^ +||roundellobolo.qpon^ +||roundflow.net^ +||roundlistener.com^ +||rouonixon.com^ +||roupybuckets.cfd^ +||rousedobjectsfunds.com^ +||rousedvalses.cfd^ +||rousingdoodlesupsup.qpon^ +||route7ind.com^ +||routeit.one^ +||routeme.one^ +||routierstatszosters.qpon^ +||routinefromamplify.com^ +||routingoutplugins.net^ +||rouwhapt.com^ +||roveearnesttablets.com^ +||roveraffluence.com^ +||rovesrevisitearlet.cyou^ +||rovingllanero.com^ +||rovno.xyz^ +||rovomghrtungt.online^ +||rowaskewoblong.com^ +||rowdyraise.pro^ +||rowvmqqqk.com^ +||rowwurqlhyyuu.online^ +||roxby.org^ +||roxfdmeqsfjjw.online^ +||roxot-panel.com^ +||roxyaffiliates.com^ +||roxzvswektnzy.website^ +||royalcactus.com^ +||royaltyfig.com^ +||royaltystimulatepen.com^ +||roysterdoddereluates.cfd^ +||rpazdjrpnyycu.online^ +||rpbielpssuigs.space^ +||rpeqmzqgutuxv.online^ +||rpgirls.com^ +||rpgmdabaehxco.online^ +||rphbklsatxguq.site^ +||rphrhvdfjkswe.online^ +||rpjxrvhkcntkw.site^ +||rplerdgsaednp.website^ +||rplinfhhmwoxh.online^ +||rplmdboximryh.website^ +||rpobkzwuqmqqq.store^ +||rprtglvyveqzh.online^ +||rpts.org^ +||rptzikhuyzsgy.website^ +||rpuazufhgjmdx.space^ +||rpueeoqgaixcb.website^ +||rpwmoogfutpdh.space^ +||rpxivezmgxguv.site^ +||rpxorephfxdvm.site^ +||rpyfymluiytke.website^ +||rpyztjadsbonh.store^ +||rpzlvdgceixjx.online^ +||rqapahxncfrik.website^ +||rqcmxjpdvzmoi.space^ +||rqe63jj7gqnqzgg1viirhw.rest^ +||rqerokcafoadv.space^ +||rqgiwrjyicatp.site^ +||rqhlbyce.com^ +||rqialsrmwwxbx.website^ +||rqitcbzevctjq.space^ +||rqjziglrehnil.website^ +||rqkrzjtqpbdmr.store^ +||rqkswuggaymyt.site^ +||rqmgessslopfy.online^ +||rqpyksomviwvbr.com^ +||rqqdhzmexzkgbp.com^ +||rqrrujuxzpety.site^ +||rqswkiedmjkhu.space^ +||rqtrk.eu^ +||rqtsvdclifjqy.site^ +||rquwlblmxxtbkp.com^ +||rqwdkzycggpqt.website^ +||rqwel.com^ +||rqyjlkojuohpv.online^ +||rqykyzjfwyjbu.online^ +||rqzcuqeexmjgh.site^ +||rrbrmijkhpork.online^ +||rrbzvmklrzwmk.top^ +||rrejalojkc.in^ +||rretmobueggyz.site^ +||rrftkpoyxvjur.space^ +||rridkfosngbvw.website^ +||rrkvgegrywbkf.site^ +||rrlnmohzscihu.space^ +||rrlpfsdammzii.site^ +||rrobbybmkwjww.top^ +||rrp19gip7kvou3.cfd^ +||rrpcjhtacwgki.space^ +||rrpsjnegulocc.site^ +||rrpuoifwzxgkh.site^ +||rrqlwdfketbzg.website^ +||rrqwarwrewrlj.top^ +||rrrucdrkmpqed.website^ +||rrypbcicshtso.online^ +||rrzqmbhigvmnt.space^ +||rs-stripe.com^ +||rsalcch.com^ +||rsaltsjt.com^ +||rsapanhtopcqf.website^ +||rsbnhruphyuxn.site^ +||rscyoaposqeay.space^ +||rsgumgvzqwnce.online^ +||rsityexcellojapanelm.org^ +||rskdtqfdolvzb.site^ +||rskxqlhdscxfr.website^ +||rsogufleygbzr.store^ +||rsonalrecomef.org^ +||rsorkpwtboedu.website^ +||rsptkogqvascs.site^ +||rsqaxkycjgnaf.website^ +||rsqiodtrmtavz.space^ +||rsqyopssenvny.online^ +||rsrqlxsqunwjo.online^ +||rssgjacxhihhr.space^ +||rssvpojmnzvge.online^ +||rstpgmfbcproe.store^ +||rstrix.com^ +||rstsndzthrijo.online^ +||rsxekbcl.com^ +||rsxkamyyjynij.online^ +||rsxtxfgrowhzm.online^ +||rsyauqmnzkznc.store^ +||rtalffozjnwkq.space^ +||rtb-media.me^ +||rtbbhub.com^ +||rtbbnr.com^ +||rtbbpowaq.com^ +||rtbbtech.com^ +||rtbbtr.com^ +||rtbix.com^ +||rtbix.xyz^ +||rtbpop.com^ +||rtbreachads.com^ +||rtbrenab.com^ +||rtbsuperhub.com^ +||rtbsystem.com^ +||rtbsystem.org^ +||rtbterra.com^ +||rtbtrail.com^ +||rtbzohtaqbqgw.site^ +||rtcdupmicrfkp.site^ +||rtdpfwzxfajfl.online^ +||rtgio.co^ +||rthgioiiitlww.space^ +||rthpetahceiol.space^ +||rtibriolhapk.com^ +||rtichevre.cfd^ +||rtjhbqzduzkmx.site^ +||rtjsbjniax.com^ +||rtk.io^ +||rtkemctcfddwz.website^ +||rtkndlpcwprqp.online^ +||rtlbetlcgd.com^ +||rtlfqocrotlhz.website^ +||rtmark.net^ +||rtnews.pro^ +||rtnnipdbaxlnv.website^ +||rtpegecgoafvn.website^ +||rtqglysfiafxgw.com^ +||rtrakeulmbahb.site^ +||rtrhit.com^ +||rtrqqfssgypjj.site^ +||rtryybrnpkiqa.online^ +||rtsesvdoiddxi.site^ +||rtslxo3a.xyz^ +||rtty.in^ +||rtudgresrsudg.online^ +||rtutccflgcwyr.website^ +||rtvhdwqstuwat.site^ +||rtwgujvfuw.com^ +||rtwgvkozpvicu.website^ +||rtxfeed.com^ +||rtxrtb.com^ +||rtxtkgzxnhxzb.store^ +||rtyufo.com^ +||rtyvaluationia.org^ +||rtyznd.com^ +||rtztthwgifaal.site^ +||ruamupr.com^ +||ruaxueolmkicy.site^ +||rubbery-industry.com^ +||rubbery-way.com^ +||rubberypassenger.com^ +||rubbinggeic.cyou^ +||rubbingsticksforthwith.com^ +||rubestdealfinder.com^ +||rubfjitvnyfty.space^ +||rubiconproject.com^ +||rubificfreeing.shop^ +||rubigosmorosis.qpon^ +||ruboutsoils.shop^ +||rubricacunonia.cyou^ +||rubrifyzingari.cyou^ +||rubsangust.cfd^ +||rubyblu.com^ +||rucecnegkrxul.site^ +||rucstpoymfnpp.site^ +||ruddersgamenecredit.cyou^ +||ruddishwakon.com^ +||ruddockcoupleyamp.cfd^ +||ruddsanukit.cyou^ +||ruddsiolite.com^ +||ruddy-pass.com^ +||rudechangingmetropolitan.com^ +||rudelypalmitochuckle.qpon^ +||rudeteach.pro^ +||rue9toq75yoktzhm.cfd^ +||ruecaeeedvyel.online^ +||ruehofmdhvu.com^ +||rufcdstpjdcrd.site^ +||rufdbymsjiwsg.website^ +||rufturszak.in^ +||rugalnylon.com^ +||rugbycaricaturescheme.com^ +||rugbymentalads.com^ +||rugcookingintersection.com^ +||ruggedbushlet.cfd^ +||rugiomyh2vmr.com^ +||rugosalambdakuan.cyou^ +||rugpowerfully.com^ +||ruhfpcfkysoxw.site^ +||ruinerobvolve.com^ +||ruinousmanipulation.com^ +||rujllgvjdedrf.site^ +||rujpqipniloqi.love^ +||rujyfbgzlkkzf.website^ +||rukkyydtqyzgp.online^ +||ruleobstinateabsorbed.com^ +||ruloc.com^ +||rumagedjill.cfd^ +||rumblebass.com^ +||rumblemeetinglank.com^ +||rumdumluggard.cfd^ +||ruminaribonic.qpon^ +||rumkinboilylased.cyou^ +||rummagebowlingacheless.com^ +||rummierencamp.qpon^ +||rummleio.qpon^ +||rummyaffiliates.com^ +||rumouruprising.com^ +||rumperapasote.qpon^ +||rumpsallelespattens.qpon^ +||rumsroots.com^ +||rumt-sg.com^ +||rumtgbtbgtixo.site^ +||run-syndicate.com^ +||runative-syndicate.com^ +||runative.com^ +||runawayinjectioncremate.com^ +||rundlequinoyl.cfd^ +||runetki.co^ +||rungbeacon.com^ +||runhaamzvkarj.website^ +||runiteengaged.cfd^ +||runnerabnegate.com^ +||runnerscibolpontil.cfd^ +||runningdestructioncleanliness.com^ +||runnybottom.com^ +||runoffmildly.qpon^ +||runoutsnaif.cfd^ +||runsadjustmerit.com^ +||runsbelovedrudimentary.com^ +||runshour.com^ +||runtnc.net^ +||runtrafficcliks.com^ +||runtslightly.cfd^ +||runwaff.com^ +||runyrgidqcoeo.store^ +||ruohpuqvaggas.website^ +||ruopfddopajte.online^ +||rupqypzqknhay.site^ +||rural-report.pro^ +||rurbancuppen.com^ +||rusenov.com^ +||rusinnexus.cyou^ +||rusinsawbill.com^ +||ruskindislockunifies.qpon^ +||ruskinhu.cyou^ +||russellminorpresumptuous.com^ +||russetsqueachy.cyou^ +||russianwoodencrown.com^ +||russudjollity.cfd^ +||rustscrupulousstates.com^ +||rusty-platform.com^ +||rustyact.pro^ +||rustydrawer.com^ +||rutblacknessplunged.com^ +||rutchfacials.cfd^ +||rutcomposureopt.com^ +||rutecwsieverf.online^ +||ruthclovepuberty.com^ +||ruthlesssomeoneabattoir.com^ +||ruthsize.com^ +||rutseasickmunch.com^ +||ruttedliparid.qpon^ +||ruucfywqzswee.website^ +||ruuzqjaoattkl.site^ +||ruwcnaoiqkznm.online^ +||rv5nv76bn75t31vjw1.cfd^ +||rvbmvjzymhmai.website^ +||rvddgeuqhxfvu.website^ +||rvemexwmttrcs.website^ +||rvericwazosuy.website^ +||rvetreyu.net^ +||rvgeptxytttwg.site^ +||rvguayebpxpiv.website^ +||rvhbufmwvafov.site^ +||rvhvn3oobc34vnzx.cfd^ +||rvlcabsakhoog.space^ +||rvmhvgrtdzjof.space^ +||rvodbrxbuzbkz.website^ +||rvolkknctgbvy.site^ +||rvrpushserv.com^ +||rvrvqzbxqtmtz.online^ +||rvsiidddallwz.online^ +||rvtfgcrq.com^ +||rvwtfavlgiesq.space^ +||rvyaqmmxxoinm.site^ +||rvyhsdxujqhqw.website^ +||rwbibzahcpiep.site^ +||rwcdswjfvts.com^ +||rwckymejgcrkd.store^ +||rwcmvielbgkma.site^ +||rwdzotgusgjjk.site^ +||rwfqrjucxebbo.online^ +||rwglmbgecjkom.space^ +||rwhnbyxqnjjju.site^ +||rwjbdrzrqgsrf.space^ +||rwlkmstaerhrt.site^ +||rwlqbrfsmtvyd.online^ +||rwmswevrmftrr.website^ +||rwofesciqvzgr.site^ +||rwohxheuqhmqy.site^ +||rwolbykeddxca.website^ +||rworljrkawlqq.top^ +||rwpvjrjxyhpzr.space^ +||rwpxoyhvpnysk.online^ +||rwqovmoezrvrv.top^ +||rwtodswg.com^ +||rwulzuaqsafn.com^ +||rwvfxkneipjnq.online^ +||rwwmbymaezkla.top^ +||rwxpkychnthdx.space^ +||rwyugwrselcrb.space^ +||rwzvqzvqkzowy.top^ +||rwzweheqfaqct.space^ +||rwzxsuwwuijen.space^ +||rxayc.com^ +||rxbhvysjczlme.website^ +||rxbmckvoxesqa.online^ +||rxdqldqeltnsz.space^ +||rxeosevsso.com^ +||rxeyyesahhlyh.website^ +||rxggkxdozyugf.space^ +||rxgwcjrjbzzsw.website^ +||rxhifyyzvrwzj.space^ +||rxjdbeabdctcn.website^ +||rxjvmsvfvstue.website^ +||rxk67z8ec43qo9bj346.rest^ +||rxkayupbjvt.com^ +||rxkrnofyhchvm.site^ +||rxnvg.com^ +||rxqqxtyrshpkq.store^ +||rxscledbyfgos.site^ +||rxthdr.com^ +||rxvm745j7enijf6tup7e.rest^ +||rxvyaqqvdnblc.space^ +||rxwjetugafkwt.online^ +||rxwudmurgnloh.com^ +||ryapalta.com^ +||ryddiuaiixndo.site^ +||rydresa.info^ +||rydtkrsegqpze.website^ +||rydtyitkzhgzw.space^ +||ryecypress.com^ +||ryeincrediblerepresentation.com^ +||ryepcqrlebdxd.website^ +||ryevvglciwjxz.site^ +||rygdzlvrladuc.store^ +||ryiklaawtjuus.online^ +||ryknsblynbifq.store^ +||ryminos.com^ +||ryufsbqvxtlhu.site^ +||ryujsqssracyc.space^ +||ryuxgxjnojxwi.space^ +||rywlnwjqyurzo.site^ +||ryxbowubroqka.online^ +||rz87p863q8upfqpn2pn247xgh28jg.cfd^ +||rzbbqovsrrugf.space^ +||rzdvkklscofjy.site^ +||rzedmincpjcam.website^ +||rzefgjtircyuv.space^ +||rzeso.com^ +||rzeuizwtvteer.online^ +||rzewgczctigqx.online^ +||rzh5u3vtfke4l7t.rest^ +||rzlszgljghrwq.site^ +||rzneekilff.com^ +||rzojvqmbqhigv.website^ +||rzpzdlmfkizyv.store^ +||rzsqfxjdrtdsc.online^ +||rzsyenebnyvgs.website^ +||rzuagqomzl.in^ +||rzuitwlxozftj.website^ +||rzxirmnqefyfm.website^ +||rzxnpocokpbcy.store^ +||rzycnidbqwnjl.website^ +||s-adzone.com^ +||s0-greate.net^ +||s16a.biz^ +||s17a.biz^ +||s18a.biz^ +||s19a.biz^ +||s1cta.com^ +||s1m4nohq.de^ +||s1t2uuenhsfs.com^ +||s20dh7e9dh.com^ +||s2517.com^ +||s2d6.com^ +||s2sterra.com^ +||s3g6.com^ +||s7227wuo.xyz^ +||s8ey.com^ +||sa.entireweb.com^ +||saatydsobhrtk.space^ +||saawsedge.com^ +||sabbathwumman.shop^ +||sabbatsescudo.cfd^ +||sabbatsslighty.cfd^ +||sabdljzmuakkt.space^ +||sabellaasepsis.cfd^ +||sabergood.com^ +||sabotagesophisticatedfragile.com^ +||sabtecsxmjmnj.website^ +||sacaeruse.com^ +||sacatebaskishmonuron.qpon^ +||sacbttgnxaklv.store^ +||saccagerevests.cfd^ +||saccliyoungdiduce.cyou^ +||saccoshumping.qpon^ +||sacdnssedge.com^ +||sackedphil.com^ +||sacketbusmen.shop^ +||sacopeecodeme.qpon^ +||sacralsfobbing.cyou^ +||sacramentexpensivestretching.com^ +||sacrificecare.com^ +||sacrifycuspulerhodope.qpon^ +||sacwumsf.com^ +||saczvfpaeadxv.space^ +||sadbasindinner.com^ +||sadvvowejqfet.site^ +||safe-connection21.com^ +||safebrowsdv.com^ +||safeglimmerlongitude.com^ +||safeguardemergency.com^ +||safelistextreme.com^ +||safeoffers.pro^ +||safeonlinetips.com^ +||safestcaterer.com^ +||safestcontentgate.com^ +||safestgatetocontent.com^ +||safestprioritybelief.com^ +||safestsniffingconfessed.com^ +||safesync.com^ +||safetune.pro^ +||safewarns.com^ +||safewarriorsinfected.com^ +||saflcoofffi.com^ +||safsdvc.com^ +||sagaciousexceptingrate.com^ +||sagcelebration.com^ +||sagcoreedge.com^ +||saggarsabrook.qpon^ +||saggrowledetc.com^ +||saghandkerchief.com^ +||sagierplugger.com^ +||sagiestspiegel.qpon^ +||sagoarenammites.cfd^ +||saharanrewin.com^ +||sailif.com^ +||sailordoorstep.com^ +||sailyallgoodfollily.cfd^ +||saintcapacityyolk.com^ +||saintjealous.com^ +||saipsoan.net^ +||saithpersicoathwart.qpon^ +||saiticincomes.cfd^ +||saixcbzjrieif.site^ +||sajldwpvqcikz.website^ +||sakkaramiswend.cyou^ +||sakosbqjogbna.site^ +||sakura-traffic.com^ +||sakyxoyes.com^ +||saladattic.com^ +||salamelethes.cyou^ +||salamus1.lol^ +||salarypenholder.com^ +||salbraddrepilly.com^ +||salekxvjerzxc.site^ +||salepbeblotanoraks.cfd^ +||salesfarleu.cyou^ +||salesmanrespectivedenunciation.com^ +||salestingoner.org^ +||salfernclaiver.qpon^ +||salicyldefames.com^ +||saligotwinders.qpon^ +||salinagarter.qpon^ +||salleamebean.com^ +||salmoncontroversy.com^ +||salmunc.qpon^ +||salpoidmattes.qpon^ +||salseprudely.com^ +||saltantcactusaitches.cyou^ +||saltcooee.cfd^ +||salterpothole.com^ +||saltestinwraps.cyou^ +||saltierenvies.cfd^ +||saltiesbiomass.cfd^ +||saltpancansephebe.qpon^ +||saltsleaseholder.com^ +||salutationlie.com^ +||salutationwantedaccustom.com^ +||salutesembusy.qpon^ +||salutetutortwiddling.com^ +||salvageapplet.com^ +||samage-bility.icu^ +||samajgurgeon.cyou^ +||samarasyisneezed.cfd^ +||sambuksabaism.cyou^ +||samdddgljiurj.online^ +||same-building.com^ +||same-curve.pro^ +||samenceltspumicer.qpon^ +||samenumber.pro^ +||samepresume.com^ +||samktxppegfqo.website^ +||samogonkors.cyou^ +||sampicooping.cfd^ +||samreshuu.online^ +||samshujoshimian.cyou^ +||samsungads.com^ +||samtraitpesky.com^ +||samucanbaramin.qpon^ +||sancontr.com^ +||sancordkaaba.cyou^ +||sanctifycool.com^ +||sanctifyracesleech.com^ +||sanctuslevengayment.qpon^ +||sandalsprotist.cyou^ +||sandelf.com^ +||sandhowl.com^ +||sandiesesculinkerns.qpon^ +||sandixchasmgul.cyou^ +||sandixvallum.cfd^ +||sandmakingsilver.info^ +||sandracismaboveaverage.com^ +||sandwichconscientiousroadside.com^ +||sandwichesbecomesorganism.com^ +||saneeloisehat.com^ +||sanelisten.com^ +||sanesslovens.cfd^ +||sanestruggle.com^ +||sangarsooty.shop^ +||sanghissed.com^ +||sanghsfind.shop^ +||sangmoonlightstake.com^ +||sangopportunity.com^ +||sanguinecocky.com^ +||sanguineslang.com^ +||sanitmobsmanheedily.cfd^ +||sanllvixm.com^ +||sannupsweetie.cyou^ +||sanokpfwhwgpd.online^ +||sanoslkut.in^ +||sanpzoyjzrjmu.website^ +||santalipompier.cyou^ +||santiiwampus.cyou^ +||santolssilenic.qpon^ +||santtacklingallas.org^ +||santuao.xyz^ +||sanynouncem.org^ +||sanywnnlhmual.space^ +||saoazftijjigm.online^ +||saooykasbxdts.space^ +||sapekcabobs.cfd^ +||sapmgtkvtoulm.space^ +||saptiledispatch.com^ +||sapuzvinnbuqc.online^ +||saqgahyvbajqt.website^ +||saqoctqho.com^ +||saqomainndofo.site^ +||saqvalqri.com^ +||saqztkldkrmlf.site^ +||sarangisotie.cfd^ +||sarcasmadvisor.com^ +||sarcasticenforcement.com^ +||sarcasticnotarycontrived.com^ +||sarcinenosingsendaze.qpon^ +||sarcomawafered.qpon^ +||sardarsbenami.cyou^ +||sardineabstract.com^ +||sardineoctoberconnecting.com^ +||sargoalway.cyou^ +||sarlykidlesse.shop^ +||sarodessoot.cyou^ +||sarpapules.qpon^ +||sarplermonkdomteachy.cyou^ +||sarrowgrivois.com^ +||sarwantamara.cfd^ +||sasaniairview.cfd^ +||sashaysrifest.qpon^ +||sashtrizone.com^ +||sasinsetuid.com^ +||sasmetotreatwit.org^ +||sasteanpainted.shop^ +||satanyengees.cyou^ +||satellitefetidtelegraph.com^ +||satiashame.qpon^ +||satinyrognons.com^ +||satisfactioncooking.com^ +||satisfactionsaltyunite.com^ +||satisfactorilyqueen.com^ +||satisfactorybroadformidable.com^ +||satisfied-dare.com^ +||satisfied-physics.pro^ +||satisfied-politics.com^ +||satisfiedbad.com^ +||satisfypliablehumiliated.com^ +||satisfyruns.com^ +||satoriformitysml.cyou^ +||sattiostiounper.com^ +||saturdaymarryspill.com^ +||satyrsdrossel.cyou^ +||saucersfiltre.shop^ +||saucewonderdaytime.com^ +||saulgethuluth.shop^ +||saunaproficientprelude.com^ +||saunatechnically.com^ +||saunsocqmgynh.website^ +||sausagefaithfemales.com^ +||sautejitterssissing.cyou^ +||sautoirterfez.qpon^ +||savageavowmidland.com^ +||savatehaffet.cfd^ +||saversludgesauter.cyou^ +||saveterracehangnail.com^ +||saveunstable.com^ +||savinfunnily.cyou^ +||savinist.com^ +||saviourcrimpycrimpyhem.com^ +||savorsaveragereaudit.cfd^ +||savourbiggergait.com^ +||savoursweeptuck.com^ +||savouryluxury.com^ +||savttuegxztst.site^ +||sawflyheels.cfd^ +||sawingsbuxom.cfd^ +||sawingsdemioxcrimp.cfd^ +||sawivnxxaegne.site^ +||sawlikelarries.shop^ +||sawp.cloud^ +||sawpitpuckishcording.cfd^ +||sawspignus.qpon^ +||saxaztolh.in^ +||saypuoavofdbi.site^ +||sazlmxxozyuog.site^ +||sb-stat1.com^ +||sbaogipghxpne.space^ +||sbaxwhtjxblva.store^ +||sbblcgpj.com^ +||sbcevpodyiqis.space^ +||sbcnhcby.com^ +||sbddnhvoxvilt.space^ +||sbfsdvc.com^ +||sbjfoagerucue.space^ +||sbjoddaagoxtda.com^ +||sbkgxdiiaxtgx.space^ +||sblfdxsencirl.website^ +||sblhp.com^ +||sbndcrqwcfkvg.store^ +||sboehtuuoyggh.space^ +||sbqjioehjqnzb.site^ +||sbsbetlinfevn.site^ +||sbtiulwkstzpt.space^ +||sbvgrghfeedfp.com^ +||sbxoukhwafjlx.site^ +||sbydvwdgsfoqj.site^ +||scabbedcoaches.com^ +||scabiesteepees.qpon^ +||scabrinoutsea.cyou^ +||scabsirving.qpon^ +||scakuvap.com^ +||scaldsheetdeterrent.com^ +||scaldverse.shop^ +||scaldypuzzler.shop^ +||scale960.net^ +||scalenemikra.cyou^ +||scalibur.io^ +||scallopafford.com^ +||scamblefeedman.com^ +||scamforgottenbyte.com^ +||scammerfail.com^ +||scammerrecorder.com^ +||scancemontes.com^ +||scantosystems.com^ +||scantyinherited.com^ +||scarabresearch.com^ +||scarcelittle.com^ +||scarcerpokomoo.com^ +||scared-piece.pro^ +||scaredpoundsresolve.com^ +||scareshortnovel.com^ +||scarfstartpickle.com^ +||scarierlydia.qpon^ +||scarvedunwitty.qpon^ +||scarvesrepaid.com^ +||scaselyhoptree.cfd^ +||scashwl.com^ +||scatchostomy.qpon^ +||scatulapublice.cyou^ +||scatylems.com^ +||scavelbuntine.life^ +||scawtepee.com^ +||scaxpnplwrzma.online^ +||sccotxcyhkpsm.site^ +||scdzsazeeqmta.online^ +||scenarycareme.com^ +||scenarycombo.shop^ +||scenaryrithe.cfd^ +||scenicreshear.shop^ +||scented-cash.pro^ +||scented-leather.com^ +||scentsgalliot.cfd^ +||scentsroupingpierre.cfd^ +||scepticalomnipresentmelody.com^ +||scfknosps.cfd^ +||scfmfurls.shop^ +||scfsdvc.com^ +||scgbhfrvukbalck.com^ +||scgfkxgnyjvbu.site^ +||schanzweaners.cyou^ +||schedulegoeshydrogen.com^ +||schedulerationally.com^ +||schelmcoelia.qpon^ +||schemastsuga.cyou^ +||schemecontinuingwinning.com^ +||schemejobo.com^ +||schermtictacs.cfd^ +||schjmp.com^ +||schmuckwetting.cfd^ +||schnapsaliquid.cyou^ +||scholaenikko.cyou^ +||scholarly-engineering.pro^ +||scholarlycup.com^ +||scholarlyinteraction.pro^ +||scholarshipexplosivepopular.com^ +||scholarsslate.com^ +||schouwloto.com^ +||sciencetipree.cfd^ +||scientific-doubt.com^ +||scientific-husband.com^ +||scientificmortondisinherit.com^ +||sciurussunday.cyou^ +||scjylqtrugste.space^ +||sckolyzbykufh.website^ +||scl6gc5l.site^ +||sclatelygeummaffias.cfd^ +||sclerbaboot.qpon^ +||sclmbsrsdvcnx.site^ +||scloluzwgfdvr.website^ +||sclvnnorxiotv.site^ +||scnd-tr.com^ +||scnkzannzapes.site^ +||scobbykanauji.cyou^ +||scoldeclipseillusion.com^ +||scoldselfemployedlong.com^ +||sconvtrk.com^ +||scoopedmalabarbhagat.cyou^ +||scootawarebarber.com^ +||scootwaxseat.com^ +||scopingcopperscirculi.cfd^ +||scorchads.com^ +||scorchobservedsow.com^ +||scorchsorchic.com^ +||scornfacultative.com^ +||scornfulleg.com^ +||scornwhile.com^ +||scotiawinze.com^ +||scotizefencer.shop^ +||scouchdroned.qpon^ +||scoundrelbreakdown.com^ +||scousesinapicidesia.cfd^ +||scovelmammoni.cyou^ +||scowledlampong.qpon^ +||scowpoppanasals.com^ +||scptp9.com^ +||scragsserener.cfd^ +||scraighpiano.cfd^ +||scrambledlone.com^ +||scrambledmodifiedhe.com^ +||scramblepeekdebit.com^ +||scrantonyajein.cfd^ +||scrapestabilitywithdrew.com^ +||scrapmonastery.com^ +||scrapstableappoint.com^ +||scrapyjillionauronal.cfd^ +||scratchedgenuinely.com^ +||scratchyhook.com^ +||scrawlydeifies.cfd^ +||scrawmbushful.cfd^ +||scrawmgolden.cfd^ +||scrddlfvolmta.site^ +||screechdeprivescatter.com^ +||screenhurtfuldelicatessen.com^ +||screwdriverblizzard.com^ +||screwerfriseur.cyou^ +||screwyhotly.cyou^ +||scribedsherris.shop^ +||scrievetriaryl.qpon^ +||scrikerepry.cfd^ +||scripasok.com^ +||scriptcdn.net^ +||scriptscalumnychirp.com^ +||scritniff.cyou^ +||scrivanfinlet.com^ +||scrivedyee.shop^ +||scrollye.com^ +||scroopthrowst.shop^ +||scrougespongesgutsy.cyou^ +||scrubriding.com^ +||scruffsdowablearrear.qpon^ +||scrumscelts.cfd^ +||scrungeramps.cfd^ +||scrupulousencodebrother.com^ +||scrupulousyet.com^ +||scruzeugroid.cyou^ +||sctcaser.cyou^ +||scubaseverely.com^ +||scuddlenudnik.com^ +||scufferdamme.qpon^ +||scufflemodemtexans.cyou^ +||scukeknekbomd.website^ +||sculksburian.cyou^ +||sculksparleytiredly.cfd^ +||scullssouring.cfd^ +||sculptorhomeworkpersecute.com^ +||scultcarrell.qpon^ +||scurra.space^ +||scurrypaleron.click^ +||scutesetherol.cfd^ +||scutesneatest.com^ +||scveilwglczse.online^ +||scvmljhzcdfyj.store^ +||scvzzypvcveio.online^ +||scwmllkshdfug.website^ +||sda.seesaa.jp^ +||sdadarotfnhoy.website^ +||sdcgnlnlnlayq.store^ +||sddan.com^ +||sddmtfxmpwcntr.com^ +||sdfsdvc.com^ +||sdftjepmiwcwq.space^ +||sdg.desihamster.pro^ +||sdggvtejxhojo.website^ +||sdhfbvd.com^ +||sdhgvevmmaxxy.website^ +||sdhhhqcqewyvb.site^ +||sdk4push.com^ +||sdkl.info^ +||sdltlxroqbizj.website^ +||sdpoonaaftldk.online^ +||sdpymnujiurkj.website^ +||sdqwierorvdkt.space^ +||sdtriamlhmonr.store^ +||sdtwvqywgbjgw.website^ +||sdtzadpayrgsc.space^ +||sdvwvbayyhvzp.website^ +||sdxkukveddwbi.site^ +||sdzqquyuzaema.space^ +||seabeearmary.cfd^ +||seafoodclickwaited.com^ +||sealedissuedtelly.com^ +||sealsteroid.com^ +||sealthatleak.com^ +||seamarklime.qpon^ +||seamaseyewashspete.cyou^ +||seamingwaspishpimento.qpon^ +||seanfoisons.top^ +||seaofads.com^ +||seapolo.com^ +||search-converter.com^ +||search4sports.com^ +||searchapp.space^ +||searchdatestoday.com^ +||searchmarquis.com^ +||searchmobilia.shop^ +||searchmulty.com^ +||searchresultsworld.com^ +||searchsecurer.com^ +||searersolute.cfd^ +||searforsear.online^ +||seasideunevenbowl.com^ +||seatedsaintinsist.com^ +||seatslaurelblemish.com^ +||seattlepistia.cyou^ +||seawarerealerqueenly.qpon^ +||sebaitbedmate.cyou^ +||sebkhasteers.qpon^ +||secancylogjam.qpon^ +||secantwedged.qpon^ +||seccosstronganimo.cyou^ +||secederhippen.cfd^ +||sechw.com^ +||secludeestuate.cfd^ +||secludefossilbummer.com^ +||secludeunhappybungalow.com^ +||secludeyourselvescaraway.com^ +||secondcallousnodding.com^ +||secondfervidinvestor.com^ +||secondiembolus.cfd^ +||secondlyspotlessedition.com^ +||secprf.com^ +||secretlybluish.com^ +||secretlyunjust.com^ +||secsbdetdijavro.com^ +||sectaryparlingpre.cyou^ +||secthatlead.com^ +||sectiondeduceequation.com^ +||sectordashboardjaguar.com^ +||secure.securitetotale.fr^ +||secureaddisplay.com^ +||securecloud-dt.com^ +||securecloud-smart.com^ +||secureclouddt-cd.com^ +||secureconv-dl.com^ +||securedt-sm.com^ +||securedvisit.com^ +||securegate.xyz^ +||securegfm.com^ +||securehostdns.com^ +||secureleadsforever.com^ +||secureleadsrn.com^ +||securetag.run^ +||security-suggestion.com^ +||security-u.com^ +||securitycheckonline.com^ +||securityinvaluableanne.com^ +||sedatedcamanay.shop^ +||sedatesturine.cfd^ +||sedatingnews.com^ +||sedativequickie.com^ +||sedgebkt.cyou^ +||sedodna.com^ +||seduceboozeblackmail.com^ +||seducemover.com^ +||seducepolice.com^ +||seducerperjury.cyou^ +||seducingbesiege.com^ +||seebait.com^ +||seedlingsaudacious.com^ +||seedmanchaccon.cfd^ +||seefiouewvgfl.space^ +||seeimmunityswim.com^ +||seeinglie.com^ +||seekdaters.com^ +||seekfinddate.com^ +||seekinggheberrucking.qpon^ +||seekmymatch.com^ +||seekoflol.com^ +||seekticketunfit.com^ +||seektrousers.com^ +||seemingliveliness.com^ +||seemingservantreap.com^ +||seemingunevenlag.com^ +||seentoorie.shop^ +||seepedaphodal.cfd^ +||seepingkol.cfd^ +||seepsyep.cfd^ +||seeptoag.net^ +||seepyacracy.qpon^ +||seepyduckpin.cyou^ +||seethelozenge.com^ +||seethepreservationeffects.com^ +||seethisinaction.com^ +||seetron.net^ +||sefsdvc.com^ +||sefwpmjrsvewq.website^ +||seggarscharred.cfd^ +||seggromcoombealophas.qpon^ +||seggymuseums.qpon^ +||segmentunderstandable.com^ +||segosporoma.cyou^ +||segreencolumn.com^ +||sehklykanvscl.site^ +||sehlicegxy.com^ +||seisedamsel.qpon^ +||seismhaed.shop^ +||seitekdhgusym.website^ +||seityshagged.cyou^ +||seizureblade.com^ +||seizurefarle.qpon^ +||sekindo.com^ +||sel-sel-fie.com^ +||selcslxancghg.website^ +||select2701.net^ +||selectiondeceivingthreatened.com^ +||selectr.net^ +||selectskrafts.com^ +||selecttopoff.com^ +||selenepoking.qpon^ +||selfassured-celebration.com^ +||selfcontrolextraordinary.com^ +||selfemployedstrugglebidding.com^ +||selfishlet.com^ +||selfportraitlimbsexecutive.com^ +||selfportraitproved.com^ +||selfpuc.com^ +||selfreceiver.com^ +||selfreliant-impact.com^ +||selfreliantsurgery.pro^ +||selftirve.cfd^ +||sellamu.qpon^ +||sellerbittydraught.com^ +||sellinglitcedar.com^ +||sellspirev.com^ +||sellvisited.com^ +||selwrite.com^ +||semaisebriseisrereel.cyou^ +||semeel.click^ +||semestersets.com^ +||semiansyllab.cfd^ +||semicjubiles.cyou^ +||semicolondriverelevated.com^ +||semihintrarbitre.qpon^ +||semihotgilliesbirsy.qpon^ +||semitessocko.shop^ +||semnaelyonese.cfd^ +||semplesapolune.com^ +||semqraso.net^ +||semsenatossadiamide.cfd^ +||semywtuvmzujq.space^ +||senahuchnom.qpon^ +||sendexcepting.com^ +||sengimirexes.shop^ +||senhorcoost.com^ +||seniorointmentseminar.com^ +||seniorstormfallen.com^ +||sennitepetshamital.cfd^ +||senopialatitefyces.cfd^ +||senqlwrxttbmy.website^ +||senrieadqahra.site^ +||sensationdentistcousin.com^ +||sensationthigh.com^ +||senselesssouvenir.com^ +||sensesluckilyobey.com^ +||sensesmathematical.com^ +||sensibleexterminatorprivate.com^ +||sensifyfugged.com^ +||sensitiveclick.com^ +||sensitivityfingertipdress.com^ +||sensorkhowar.cfd^ +||sensualsheilas.com^ +||sentencecarry.com^ +||sentencegenerate.com^ +||sentientfog.com^ +||sentimentalhind.com^ +||sentimentalrailing.com^ +||sentimentbuttertrapped.com^ +||sentimentssmuggleask.com^ +||senyuligtadad.store^ +||seo-overview.com^ +||seoyopersed.org^ +||sepafyhemcyyx.website^ +||separatechampionship.pro^ +||separatedsymptompeculiarities.com^ +||separatelysmackfibber.com^ +||separationsufferinguptown.com^ +||sepdwelling.cyou^ +||sepiapewters.cyou^ +||sepiarypooris.com^ +||sepioidpuker.shop^ +||sepsidmanjack.com^ +||septanepoints.com^ +||septbajri.com^ +||septemberbrightest.com^ +||seqencebumpedwifock.cfd^ +||seqmfwzsktmuj.site^ +||sequafucatesutile.qpon^ +||sequandings.shop^ +||sequaniprop.cyou^ +||sequenceclickmeasles.com^ +||ser678uikl.xyz^ +||seraphswynn.qpon^ +||serbianskyreparded.cyou^ +||sereanstanza.com^ +||seredbongo.cfd^ +||sereneclimant.cyou^ +||serenedust.pro^ +||serenitymareaffection.com^ +||serenosnyed.cyou^ +||serfishaeonial.cyou^ +||sergioeddish.cfd^ +||sericsweller.cyou^ +||serimpinymphid.cyou^ +||serinusnymphos.cfd^ +||serinuspotions.com^ +||serinuswelling.com^ +||seriousdates.net^ +||seriouspawailment.com^ +||sermfhdkrupwy.store^ +||sermonperoneimamie.cfd^ +||serootdaimons.qpon^ +||seropalame.cfd^ +||serpensguarabu.qpon^ +||serpentine-bat.pro^ +||serpentine-church.pro^ +||serranberime.com^ +||serriesdiscosnots.cfd^ +||sertinglamer.cyou^ +||sertulepedrail.cfd^ +||serumsugareffective.com^ +||serumworkmanultimatum.com^ +||serutredcoll.com^ +||serv01001.xyz^ +||serv1for.pro^ +||servboost.tech^ +||servedbyadbutler.com^ +||servedbysmart.com^ +||servehemsusan.com^ +||servenobid.com^ +||server4ads.com^ +||serverbid.com^ +||serverhumidity.com^ +||servesummerhumbug.com^ +||servetag.com^ +||servetean.site^ +||servetraff.com^ +||servg1.net^ +||servh.net^ +||servicefigured.com^ +||servicegetbook.net^ +||services49.net^ +||services510.net^ +||services8080.com^ +||services870.com^ +||servicesout450.net^ +||servicesoutsession.com^ +||servicestodigital.com^ +||serviceswithfederation.net^ +||servingcdn.net^ +||servingformatfaster.com^ +||servtraff97.com^ +||servw.bid^ +||sesetitoefanyorgag.org^ +||sessionerect.com^ +||sessionlagvegetation.com^ +||sessionnewspaperthirteenth.com^ +||sestihjdtwokp.space^ +||set-push.net^ +||setboltdal.cyou^ +||sethcjauqskoz.site^ +||sethnahanemouth.cfd^ +||setksohxkggca.online^ +||setoinc.com^ +||setokanna.online^ +||setonsagnamedfemes.qpon^ +||setteehabitananhimae.cyou^ +||settings2021.net^ +||settings4learn.net^ +||settingsinauthor.com^ +||settingsoutpier.net^ +||settleddisembarkinborn.com^ +||settlementlaying.com^ +||settlingbucket.com^ +||settlingdishwasher.com^ +||settlorduchies.cyou^ +||setupad.net^ +||setupmonarchyconnections.com^ +||setupproficientscrambled.com^ +||setyourtape.com^ +||seuhtkskudvkf.site^ +||seuszqckmixng.website^ +||seveelumus.com^ +||sevenedgesteve.com^ +||sevenmeters.biz^ +||seventeendepressed.com^ +||seventhdisdainunlucky.com^ +||severalsail.com^ +||severewall.pro^ +||sewboldlyavow.com^ +||sewdialogueconcealment.com^ +||sewerfieryendurance.com^ +||sewingbleaklantern.com^ +||sewingfreaky.com^ +||sewinsuets.qpon^ +||sex-and-flirt.com^ +||sex-chat.me^ +||sexclic.com^ +||sexcooldating.com^ +||sexfg.com^ +||sexmoney.com^ +||sextf.com^ +||sextubeweb.com^ +||sexualpitfall.com^ +||sexyasianwife.click^ +||seyscdqqnejex.site^ +||sezeqnfbsyzde.website^ +||sf-ads.io^ +||sfahuhmlwdjop.store^ +||sfblgasgohxzz.online^ +||sfbwdqxxkwnqq.space^ +||sfcjqhtaha.com^ +||sfcnprnmkvdlh.space^ +||sfdekzpycnfhl.website^ +||sfewgzxnxvroe.space^ +||sffsdvc.com^ +||sfgbobrkfliph.website^ +||sfgwgxpnwzr.com^ +||sfhislcmkaskw.online^ +||sfhosaynztxlb.space^ +||sfixretarum.com^ +||sfjswyvtktvwo.site^ +||sfjwwywgeyoak.website^ +||sfjynmfvwpaja.space^ +||sflcvbxgpgayq.website^ +||sfmfumiest.shop^ +||sfmrammi.cyou^ +||sfnfbubdzlfdm.online^ +||sfnxugoelbwas.space^ +||sftapi.com^ +||sftfanfxqjiso.website^ +||sftkrcgmouym.com^ +||sftyxvamhhblp.space^ +||sfwcsekjtykrg.website^ +||sfwupoxzuurva.space^ +||sfwwzmtlhrajx.website^ +||sfxdifdabwsux.site^ +||sfxsxbwmloubq.site^ +||sfzeqzazjmowe.space^ +||sfzhpuxozrvdf.site^ +||sfzlowball.qpon^ +||sgaijlnojrrok.site^ +||sgben.com^ +||sgcjwdshiacfv.space^ +||sgdanjzdfjtwr.site^ +||sgfinery.com^ +||sgfsdvc.com^ +||sgfsoelvwqgtd.com^ +||sgftdcfhszswh.site^ +||sggsfejquvhak.site^ +||sggumsnmiuuar.site^ +||sghbvhktcomrn.online^ +||sgllpsstmvgns.site^ +||sgnetwork.co^ +||sgpniarijjbzt.online^ +||sgsojdpfjsk2.xyz^ +||sgsujexywvwlb.online^ +||sgswwdtkm.com^ +||sgtbbgdkovkhz.site^ +||sguhtpjp.com^ +||sgwinrahjjnth.online^ +||sgxlziqbahhqb.store^ +||shabbatglomera.cyou^ +||shackapple.com^ +||shackfillingcommittee.com^ +||shadowybalance.com^ +||shadowymonitor.pro^ +||shadyrecording.pro^ +||shaggysinner.com^ +||shahidiprimly.qpon^ +||shaiwourtijogno.net^ +||shakamech.com^ +||shakepersianrehearse.com^ +||shakeupitonama.shop^ +||shakierintruso.cyou^ +||shakingtacklingunpeeled.com^ +||shakoeslockage.cyou^ +||shakubistatenahane.cfd^ +||shakydeploylofty.com^ +||shakysummonedtriumph.com^ +||shalesobiisms.cfd^ +||shallbuilds.com^ +||shallowconsumeconstrain.com^ +||shamalabjures.cfd^ +||shamefullecture.com^ +||shameless-respond.pro^ +||shamimtanguin.com^ +||shamingmasoned.cyou^ +||shammyantonym.qpon^ +||shamslustrum.qpon^ +||shamyouthattach.com^ +||shankswhosis.cfd^ +||shanlinseed.com^ +||shannynomancyologies.cfd^ +||shannyswam.cfd^ +||shanorin.com^ +||shapecamping.com^ +||shapedkilts.qpon^ +||shapkanoveletchuhra.qpon^ +||shapo.fun^ +||share-server.com^ +||sharepenknife.com^ +||shareresults.com^ +||sharesceral.uno^ +||sharethrough.com^ +||shariatpaulian.qpon^ +||shariatshagbag.cyou^ +||sharp-action.com^ +||sharp-field.pro^ +||sharplytopple.com^ +||sharpofferlinks.com^ +||sharryatomiesscatula.cyou^ +||shatdilatoraval.cfd^ +||shaugacakro.net^ +||shauladubhe.top^ +||shaumtol.com^ +||shavingwitchcraft.com^ +||shawmrebind.shop^ +||shbeltian.com^ +||shbihdhotyxzj.space^ +||shbnnjesjisqi.site^ +||shcaolauiimik.website^ +||shcnohorrazqn.store^ +||she-want-fuck.com^ +||shealapish.com^ +||sheareasygoingcommerce.com^ +||sheastorify.cyou^ +||shebisnf.com^ +||shebudriftaiter.net^ +||shedimlobbish.com^ +||shedmanpetful.com^ +||sheecmimty.net^ +||sheenedlogris.cfd^ +||sheetvibe.com^ +||sheitelhamatum.shop^ +||shellsrobes.com^ +||shemalesofhentai.com^ +||shendhydra.com^ +||shengfleming.com^ +||shenouth.com^ +||sheorsxaj.in^ +||sherifafendinglaunce.cfd^ +||sheriffshruglow.com^ +||sherootignites.qpon^ +||shetfiowkmzap.website^ +||shewntupik.shop^ +||shewsdaer.qpon^ +||shfsdvc.com^ +||shgakmobtupxs.website^ +||shgjampnhhdxpc.com^ +||shhfmfubw.com^ +||shhmnoej.com^ +||shiaitutored.qpon^ +||shiitedesmine.qpon^ +||shiksagrogged.qpon^ +||shilhahurden.cyou^ +||shimmeringconcert.com^ +||shindigoverdose.com^ +||shindleabura.qpon^ +||shinebliss.com^ +||shinglerid.com^ +||shiny-toe.com^ +||shinybirdwhispered.com^ +||shipmenfatso.qpon^ +||shipmentconnectionsherbal.com^ +||shipmentdoorwaydecade.com^ +||shipmenthow.com^ +||shipnephriccontour.qpon^ +||shippenwivern.com^ +||shipsmotorw.xyz^ +||shiptchegreastony.cfd^ +||shirtsdrawdoomage.qpon^ +||shitcustody.com^ +||shiveexoticsmucor.cfd^ +||shlfkekeuszwo.site^ +||shlilfelzoelt.space^ +||shnegttccwnom.site^ +||shoagloumtoamir.net^ +||shoalsirate.shop^ +||shockdefined.com^ +||shocked-failure.com^ +||shocked-home.com^ +||shocking-honey.com^ +||shockingstrategynovelty.com^ +||shoddy-opening.pro^ +||shoddy-rate.com^ +||shoddypallah.cfd^ +||shoddyrest.pro^ +||shoemakereasiest.com^ +||shoeskeleton.com^ +||shohjisfurrows.cfd^ +||shojiquinela.qpon^ +||sholke.com^ +||shoneten.com^ +||shoofabhalu.com^ +||shooksurgeondialogue.com^ +||shooterconjure.com^ +||shooterexaminationcognizance.com^ +||shooterurgedearlier.com^ +||shopboyenclave.qpon^ +||shopmonthtravel.com^ +||shoppinglifestyle.biz^ +||shopsmysteryeagerly.com^ +||shortagedissatisfaction.com^ +||shortbrotherinlaw.com^ +||shortcutacheless.com^ +||shortcutentranceacross.com^ +||shortenoverleg.com^ +||shortergroundyanew.cfd^ +||shorterrestriction.com^ +||shorterwanderer.com^ +||shorthammalsdryer.cyou^ +||shorthandbakerymeal.com^ +||shorthandlanding.com^ +||shortprinciple.pro^ +||shortterm-result.com^ +||shorttermlocation.com^ +||shoshyhewy.com^ +||shotgunchancecruel.com^ +||shoukigaigoors.net^ +||shoulderinedible.com^ +||shoversimitatewirr.cyou^ +||shoverstrumeau.qpon^ +||show-creative1.com^ +||show-sb.com^ +||showilyaletap.com^ +||showmebars.com^ +||shptpetrary.qpon^ +||shpyxmtsqnsay.space^ +||shqjickefiglh.website^ +||shrappictishfolies.qpon^ +||shrewddrainer.cyou^ +||shrewdnarrative.com^ +||shriekdestitute.com^ +||shriekwinepamphlet.com^ +||shriftlinguet.qpon^ +||shrillbighearted.com^ +||shrimpinvestigation.com^ +||shrineresorthighjack.com^ +||shrovefll.qpon^ +||shrubburlyjaunty.com^ +||shrubsconfused.com^ +||shrubspirate.com^ +||shrugaged.com^ +||shrugverificationauto.com^ +||shrugworlds.qpon^ +||shsrqndzhaqdo.site^ +||shstvvexwudrg.website^ +||shticksyahuna.com^ +||shuanshu.com.com^ +||shubadubadlskjfkf.com^ +||shucktaxite.qpon^ +||shudderviolence.com^ +||shuffleentrust.com^ +||shuhvohkdzjfm.site^ +||shukriya90.com^ +||shulsblow.cyou^ +||shunremarkbuddy.com^ +||shuntersolon.cfd^ +||shutdownprovince.com^ +||shutinggatsby.qpon^ +||shutloneliness.com^ +||shutokuhimfagged.cyou^ +||shuttlelikingcabinet.com^ +||shwiavtsdlrvy.space^ +||shwnoyrwgmyli.online^ +||shy-clothes.com^ +||shy4dynamics.com^ +||shydastidu.com^ +||shyspiritual.com^ +||sialshumours.qpon^ +||siavtcwmgehxp.online^ +||sibbedgordon.cfd^ +||sibbycolob.cfd^ +||sibilantrespectablerelative.com^ +||siblinggut.com^ +||siblpnvryviqz.website^ +||sibzstojwoqew.website^ +||sicilywring.com^ +||sickbedjibboom.com^ +||sickbroad.pro^ +||sicklerpestify.qpon^ +||sicknessbingo.com^ +||sickshareping.com^ +||siclikeinhumepick.cfd^ +||siddowpoliced.cyou^ +||sidenotethwartpains.com^ +||sidewalkamazingly.com^ +||sidewayreddenbehind.com^ +||sidewaysinjure.com^ +||sidhequickly.cfd^ +||sidleflint.cyou^ +||sidlerduplon.qpon^ +||sidlespolysheating.cfd^ +||sieclesreagins.com^ +||siegerabounds.cyou^ +||siegurdkaiwi.cfd^ +||sieniewicz.pl^ +||siennaalpine.shop^ +||sienokeeryirp.online^ +||sierrakonradreorganize.com^ +||sievepalmful.com^ +||sifcbavqjaxbn.website^ +||sighhigherapprove.com^ +||sightersquirm.cfd^ +||sigihuyc.com^ +||signaladsdirect.top^ +||signalinstatistics.net^ +||signamentswithd.com^ +||signaturewoundedgraduation.com^ +||signcalamity.com^ +||signedquick.com^ +||signedtostatistics.net^ +||significanceoutmatch.com^ +||significantrapid.com^ +||signingunwilling.com^ +||signingvehemenceraffle.com^ +||signorafusel.qpon^ +||signumvampingtiptoes.cyou^ +||sikuptdybwuwp.site^ +||silanesyampa.shop^ +||silaselsehold.com^ +||silebu.xyz^ +||sileemis.cfd^ +||silenceuraris.cyou^ +||silencyshikra.shop^ +||silent-mixture.com^ +||silentinevitable.com^ +||silentvalleyhill.com^ +||silenuspsis.cyou^ +||silesiadeuces.com^ +||silklanguish.com^ +||silkrolesilicin.cyou^ +||sillaltica.cyou^ +||sillierwills.shop^ +||sillinessclearly.com^ +||sillinessrobnotoriety.com^ +||sillinessshoplifting.com^ +||sillinesswoollen.com^ +||sillorangesladen.com^ +||siltspommelosolums.cyou^ +||silvasdereism.cfd^ +||silverangleshookup.com^ +||silverforestpath.com^ +||silverleafroad.com^ +||silvernindow.cyou^ +||silversbogiesmelting.qpon^ +||silverwhitebirds.co^ +||silylcanhoop.cfd^ +||simardj.qpon^ +||simdzjrftxwvf.site^ +||simhtgguozodp.online^ +||simialprawny.cfd^ +||similarlyabdomenwrestle.com^ +||similartoweldeep.com^ +||simmeringsuitableunwoven.com^ +||simoondinge.shop^ +||simperisthmia.cfd^ +||simplededicate.com^ +||simpleincitetreacherous.com^ +||simplejsmenu.com^ +||simplewebanalysis.com^ +||simplistic-fold.com^ +||simplistic-recover.com^ +||simplisticpride.com^ +||simpnappy.cyou^ +||simsivwfaaf.com^ +||simulatordairy.com^ +||sinaeanspawner.cyou^ +||sincenturypro.org^ +||sincerefictionscrape.com^ +||sinceregustinfinitely.com^ +||sincerelydiscreetcomedian.com^ +||sincerelyrimparticipation.com^ +||sinckuxlsucmq.online^ +||sinewedtidder.shop^ +||sinful-bad.pro^ +||singfodishleyblobby.qpon^ +||singingprior.com^ +||singledatetime.com^ +||singlegirlsfinder.com^ +||singlesgetmatched.com^ +||singoutbalancevisitation.com^ +||singulardisappointmentdisqualify.com^ +||sinhcursed.com^ +||sinisterbatchoddly.com^ +||sinisterreason.com^ +||sinkagepandit.com^ +||sinkintervalscozy.com^ +||sinlessdiduceboid.qpon^ +||sinmufar.com^ +||sinnerhealthypoured.com^ +||sinproductors.org^ +||sinwhezjcvvch.online^ +||siondanged.cfd^ +||siouxunhosejoyride.cyou^ +||sipesglug.com^ +||sippansy.com^ +||sippionobatch.cfd^ +||sipskluxer.qpon^ +||siqbmqwvbqgcf.website^ +||siqsxgyvwhvtw.site^ +||sirdarsragazze.cfd^ +||sireimplement.com^ +||sirenecoalite.cfd^ +||sireundermineoperative.com^ +||sirionelowsing.cyou^ +||siropbiersskyward.cyou^ +||sirpleswashes.cyou^ +||sishamjudithunaimed.cyou^ +||siskinherms.qpon^ +||siskinunwillbobfly.qpon^ +||sisskellum.shop^ +||sistprecite.qpon^ +||sitaoabuser.com^ +||sitarvarletsroseola.cyou^ +||sitathurls.cfd^ +||sitdpsxxqbfkh.site^ +||sitellabrabantmoqui.cfd^ +||siteoid.com^ +||sitewithg.com^ +||sithensnowhit.cyou^ +||sitiotetrix.cyou^ +||situateddivine.com^ +||situationsparkler.com^ +||situduiacvaek.site^ +||situratite.com^ +||situtippee.cfd^ +||sivafxpaq.in^ +||sivietrremwoa.site^ +||siwashfetcher.top^ +||siwpwrmapovuue.com^ +||sixburbles.cfd^ +||sixdespise.com^ +||sixft-apart.com^ +||sixmossin.com^ +||sixtedanton.shop^ +||sixthlybromate.com^ +||sixthlyrancel.cyou^ +||sixytpaxhbgoq.space^ +||sizablechosing.cfd^ +||sizierguyot.com^ +||sizmkhruprkxc.website^ +||sizryblhbofmd.space^ +||sizzlecurrack.qpon^ +||sizzling-camp.pro^ +||sjadkbbvcmdfd.website^ +||sjambokcursesramex.qpon^ +||sjbnwzwwmcubf.site^ +||sjbtqzptourxf.online^ +||sjeiqeuhroksi.site^ +||sjfyupmvpazsj.store^ +||sjgvokmmsgudn.space^ +||sjiuevumbyiir.website^ +||sjkigukddtknz.store^ +||sjnsiuqhjmugz.store^ +||sjobmfxcchbad.online^ +||sjowkktmatgny.site^ +||sjpagifahohnk.space^ +||sjqvpjbcffhbv.site^ +||sjtqduaggooyp.website^ +||sjucxifhymhdr.space^ +||sjxctpzzjoxdw.website^ +||sjxhfptdoqkvo.site^ +||skaffieionismdisruly.qpon^ +||skaldicclat.cfd^ +||skarhkcpnjaky.website^ +||skatetimprojects.com^ +||skatoldotchin.cyou^ +||skatolecloven.com^ +||skatomawreaker.cfd^ +||skcllgjwuhaeh.online^ +||skdkjhpqkqave.space^ +||skdtveilhzynd.store^ +||skedgefrostsauger.cfd^ +||skeechsarinda.com^ +||skeedaligns.shop^ +||skeegragazze.cyou^ +||skeercoth.shop^ +||skeetads.com^ +||skegjjrhp.com^ +||skeiftumors.qpon^ +||skeletalstreet.com^ +||skeletonbanal.com^ +||skeletonlibrarian.com^ +||skelpeppier.cyou^ +||skeojagroup.help^ +||skepsgirnal.qpon^ +||sketbhang.guru^ +||sketchinferiorunits.com^ +||skfvnifc.com^ +||skgburylwylrv.online^ +||skgiibpdmsaqn.space^ +||skgpczjykhobz.site^ +||skgxbarmbvkqf.site^ +||skhhuhhualfxf.space^ +||skhtgdwpqqbrp.online^ +||skiddedtripledabbott.cfd^ +||skidwaverorigin.com^ +||skierjollyobsolete.com^ +||skiingsmilder.cfd^ +||skikxyqqa.com^ +||skilfulsaturatematters.com^ +||skilletperonei.com^ +||skillmisdrew.qpon^ +||skillprogeny.com^ +||skilyake.net^ +||skinnedunsame.com^ +||skinnycrawlinglax.com^ +||skinnygrove.com^ +||skinstackpeculiarity.com^ +||skipdissatisfactionengland.com^ +||skipperturncap.qpon^ +||skipperx.net^ +||skirecruitdoorway.com^ +||skirredpicks.cyou^ +||skirrsbilkers.cfd^ +||skisigh.com^ +||skitmrrsjcfho.website^ +||skkjtopbgnflw.website^ +||skmwqnhqhlceg.site^ +||skniymvvknmxx.space^ +||sknujodgbpegrr.com^ +||skrblsszekwia.online^ +||skrhuf.com^ +||sktjertughlc.com^ +||skujrebczynhb.website^ +||skullhalfway.com^ +||skunkedgryde.com^ +||skunkipil.qpon^ +||skvpwecqrbovi.online^ +||skwaiebpxbbku.site^ +||skwhbxqhcqvxd.space^ +||skxnmrqwbcsez.space^ +||skyadsmart.com^ +||skybaggycollecting.com^ +||skycapsmissishribhus.qpon^ +||skyfulrundlet.qpon^ +||skyingwhuff.shop^ +||skylindo.com^ +||skymobi.agency^ +||skypipevatican.com^ +||skyreduskilyforts.cyou^ +||skyscrapertowel.com^ +||skytraf.xyz^ +||skyuglefuns.com^ +||skyugleshodden.qpon^ +||skzdntgxoseva.online^ +||slabshookwasted.com^ +||slackastonishing.com^ +||slackentheatres.com^ +||slacklovely.com^ +||slacklybarmie.cfd^ +||slacksrefect.qpon^ +||slaggerpiete.qpon^ +||slahpxqb6wto.com^ +||slaithamitalgodpapa.qpon^ +||slamactress.com^ +||slanderchristian.com^ +||slanderpeaceful.com^ +||slapbutler.com^ +||slaqandsan.xyz^ +||slartfirebed.cfd^ +||slashstar.net^ +||slatehystericaltaunt.com^ +||slaverylounge.qpon^ +||slavesthy.com^ +||slaveyscerote.cyou^ +||slaviankolobia.com^ +||slavishpartiedose.qpon^ +||slawhomager.com^ +||slayerstriglid.shop^ +||slayingbugeyes.com^ +||slbfsmqfxjbtv.space^ +||slblldrahilvt.space^ +||slbvjghvipanf.online^ +||slckdomlqflj.com^ +||slcuse.com^ +||sldojbcfjptsw.space^ +||sleavedyecch.cyou^ +||sledconveniencestuff.com^ +||sleddedverity.qpon^ +||sledfoolinfo.com^ +||sledxylan.com^ +||sleekwinterpowers.com^ +||sleepoverlimitprofound.com^ +||sleepyjury.com^ +||sleevefaucetstretched.com^ +||sleevegrope.com^ +||sleeveurbansweet.com^ +||sleightneem.shop^ +||slerbssivissp.site^ +||slervwlteedfj.website^ +||slfhtrkjbsnbh.space^ +||slfsmf.com^ +||slfxhhmapzrtu.space^ +||slgvvqttcjcgp.store^ +||slhemrnxzsmgg.online^ +||slhwzjtaxnvay.website^ +||slicedpickles.com^ +||slicesuction.com^ +||slickhoarfrost.com^ +||slickquiver.com^ +||slickspikeagency.com^ +||slideff.com^ +||sliderunripedsqueeze.cyou^ +||slidesimmure.com^ +||slidexperimentalimmoral.com^ +||slidingpodites.qpon^ +||slidorganic.com^ +||slidviols.qpon^ +||slightcareconditions.com^ +||slightdrink.pro^ +||slightlyparentingaugust.com^ +||slightresignationswiftly.com^ +||slimdein.icu^ +||slimespell.com^ +||slimmerrulableprakash.cyou^ +||slimplumbernotable.com^ +||slinglyricsimperturbable.com^ +||slingsocialliterary.com^ +||slinkhub.com^ +||slipcotton.com^ +||slippersexamination.com^ +||slipperymirror.pro^ +||slipwaypan.cyou^ +||slise.xyz^ +||sliubbvrf.com^ +||slivegphbana.qpon^ +||slivmux.com^ +||sllbaqteaonea8uia4ddcveggfogua1a.com^ +||sllqlohjenqyg.site^ +||slmhllvapomeff.com^ +||slmpjaeljsjkt.website^ +||slobendorsement.com^ +||slodgedefrost.qpon^ +||slodlurg.cyou^ +||sloeri.com^ +||slojzlqjvitwt.website^ +||slopeac.com^ +||slopepointlesstin.com^ +||sloppedcoted.shop^ +||sloshjackal.cyou^ +||sloto.live^ +||slotsmiling.com^ +||sloungescruff.cyou^ +||slow-attitude.com^ +||slow-bunch.com^ +||slowdn.net^ +||slowepiclearning.com^ +||slowerdelinquentaccuse.com^ +||slowesttiddleyslodger.cyou^ +||slowlyfocuseddose.com^ +||slpineexyksjm.website^ +||slqhoitusidsr.site^ +||slthavjtoxjoi.site^ +||sltkvfghleuui.online^ +||sltraffic.com^ +||sludgerambonmaleic.cfd^ +||sluerveals.cfd^ +||sluggedunbeget.top^ +||slugyukdobvwq.store^ +||sluicebigheartedpeevish.com^ +||sluicebubblecriminal.com^ +||sluicechaise.com^ +||sluicedevastating.com^ +||sluicehamate.com^ +||slumberralph.com^ +||slumgummoguls.qpon^ +||slumwhoeverelevated.com^ +||slushdivert.com^ +||slvijdtvksmjv.store^ +||slvumxhzmtope.website^ +||slybheguvihki.online^ +||slyestairmass.qpon^ +||slywtzllxzvwx.online^ +||slzpcjksfrkei.online^ +||smaato.net^ +||smac-ssp.com^ +||smacfxrtfwqgdi.com^ +||smackedtapnet.com^ +||smaclick.com^ +||smadex.com^ +||smajecdsacfwt.website^ +||small-discussion.com^ +||smallbruisedfollowing.com^ +||smallestpawsmention.com^ +||smallfunnybears.com^ +||smaltosoutput.qpon^ +||smart-wp.com^ +||smart1adserver.com^ +||smart2cnjuh34jb.com^ +||smartadserver.com^ +||smartcpatrack.com^ +||smarttds.org^ +||smarttopchain.nl^ +||smartybowlersonanist.cfd^ +||smartytech.io^ +||smashbarret.cyou^ +||smashedplumepea.com^ +||smashedversed.cyou^ +||smazesacronyx.com^ +||smbttxpafponx.store^ +||smcdxffhlkifc.site^ +||smcouxfjydhwz.site^ +||smcpvvmflcmlc.store^ +||smearconventional.com^ +||smeartoassessment.com^ +||smedwajlfhamd.com^ +||smelltoggeryunqueme.cfd^ +||smellyla.com^ +||smellyshale.cfd^ +||smenqskfmpfxnb.bid^ +||smglvclyfsfbt.website^ +||smifzyuottaxc.website^ +||smigro.info^ +||smiledimsonicglouts.cyou^ +||smilewanted.com^ +||smilingill.com^ +||smirchdevoir.qpon^ +||smirkednotchysniffer.cfd^ +||smiteanimatedbeaker.com^ +||smitfox.cyou^ +||smithburka.com^ +||smjulynews.com^ +||smkexqheivlst.website^ +||smkitluhhwvdo.space^ +||smkwbcbomcpfuu.com^ +||smlinkhub.com^ +||smljmp.com^ +||smlmszewhtcyd.site^ +||smlypotr.net^ +||smmnclhggakto.website^ +||smoggy-construction.com^ +||smoggy-twist.pro^ +||smoggyfeed.com^ +||smokedmeekdub.com^ +||smokerglum.com^ +||smokilyinermiakuichua.cfd^ +||smokilysapwort.shop^ +||smokishfooldom.cfd^ +||smootatonic.cyou^ +||smoothbestowednegligence.com^ +||smoothdeclarationoperative.com^ +||smoothlystep.com^ +||smoothyafrete.cfd^ +||smopplevoidee.cfd^ +||smorecomdr.com^ +||smoulderallowingcommonplace.com^ +||smoykkiasmybo.space^ +||smqdmbytxukd.com^ +||smqetvondaamt.online^ +||smrt-cdn.com^ +||smrt-content.com^ +||smrvqincllvlp.website^ +||smsafelink.com^ +||smsapiens.com^ +||smsnejgixbwgs.space^ +||smudgerscaler.cfd^ +||smugglerefreshing.com^ +||smurseawife.cyou^ +||smutchyalarbus.qpon^ +||smvmtnlvqymso.online^ +||smwadnuydogrh.space^ +||smwtnkacakzxv.site^ +||smxdkvmwolssg.space^ +||snabkahaubanjoes.cyou^ +||snabmettles.qpon^ +||snackgyron.cfd^ +||snackimmovabletrinity.com^ +||snackteepatron.com^ +||snaeyjnavvojo.online^ +||snaglighter.com^ +||snailammoniabees.com^ +||snailedeftest.qpon^ +||snailscrambledcontrivance.com^ +||snailthreatenedinvited.com^ +||snajebrxiyiih.website^ +||snammar-jumntal.com^ +||snaolnmbqwtri.com^ +||snappedevisee.cfd^ +||snappedsafetysuccessfully.com^ +||snappyallowwithdrew.com^ +||snappydirt.com^ +||snappypractice.com^ +||snaptrckr.fun^ +||snarescientific.com^ +||snarlingrequirement.com^ +||snarlsfuzzes.com^ +||snatchattest.com^ +||snatchseakescapee.qpon^ +||snavelpetre.cyou^ +||snbets.com^ +||snctfefuvcpvv.website^ +||sncvjrxcvfkkf.site^ +||sncyt.com^ +||sneakintriguecasting.com^ +||sneakunwanted.com^ +||sneakwillblepelf.qpon^ +||sneakyadministration.com^ +||sneddedwigdom.cyou^ +||sneezedeplorebackache.com^ +||sneezedisarraystrew.com^ +||sneezegridtasting.com^ +||sneezewrestling.com^ +||snellsmacrlislare.qpon^ +||snhgshztmhr.com^ +||snickbarrenashy.com^ +||snickedstimiesluridly.cfd^ +||snickforfeit.com^ +||sniddlebnf.cyou^ +||sniffingtransient.com^ +||sniffstepfatherimmature.com^ +||sniffvivacious.com^ +||snipconcher.cfd^ +||snipedsyud.qpon^ +||snipersex.com^ +||snippystowstool.com^ +||snipscars.qpon^ +||snitchmountain.com^ +||snitekenyan.cyou^ +||snivelinginsect.com^ +||snkgwapjqhnuy.site^ +||snlaavecjmpja.online^ +||snocatbathmic.cfd^ +||snoopundesirable.com^ +||snoopy-source.pro^ +||snoozlenumida.cfd^ +||snorkelzutugil.com^ +||snorkembolum.cfd^ +||snortedbingo.com^ +||snortsgerim.qpon^ +||snortyaslop.cfd^ +||snoutwastedeeply.com^ +||snowdiminutionsponge.com^ +||snowmanjo.com^ +||snqsqbnzrppvc.online^ +||snsfdmmzpixhn.site^ +||snsgdehocaeqh.website^ +||snsv.ru^ +||sntjim.com^ +||snuffarguments.com^ +||snufferepyllia.cfd^ +||snufflepoops.shop^ +||snuffycrownerdenied.qpon^ +||snugchico.qpon^ +||snugwednesday.com^ +||snurphorsify.com^ +||snvkkflgdoekk.site^ +||snvzgderiitwr.online^ +||snxqmwjwvyvbg.online^ +||snyyowxbmnyqv.website^ +||snzoszebakrrs.website^ +||snzrmcottn.com^ +||so-gr3at3.com^ +||so333o.com^ +||soamelxvleduv.space^ +||soapilydotyashes.qpon^ +||soargeiazhbti.site^ +||sobakenchmaphk.com^ +||sobberluracanfumage.cyou^ +||sobbingalchemy.cfd^ +||sobbingvarypainting.com^ +||soberanvil.com^ +||sobzqgxafnvlj.site^ +||socalledflirtingdesignate.com^ +||socalledpushedcollege.com^ +||socde.com^ +||socdm.com^ +||socehdiygqknp.site^ +||sochtfreyahoary.qpon^ +||sociableretainerrefreshments.com^ +||socialbars-web1.com^ +||socialcompletelydefrost.com^ +||socialelective.com^ +||socialsnormed.cyou^ +||societyculver.cyou^ +||sociistales.qpon^ +||sociomantic.com^ +||socketawayobject.com^ +||socketbuild.com^ +||sodallay.com^ +||sodapaltrysystems.com^ +||sodiumendlesslyhandsome.com^ +||soduniversal.com^ +||sodyapoopspin.qpon^ +||soekfkxnxjabv.online^ +||sofaneaswithe.qpon^ +||sofaneplutealgrouts.qpon^ +||sofarindaba.cfd^ +||sofcjikmwxuya.online^ +||sofftdate.com^ +||soft-com.biz^ +||soft-sun.com^ +||softballabnegatemailman.com^ +||softballpeckrobust.com^ +||softchest.com^ +||softcloudtrail.com^ +||softenedimmortalityprocedure.com^ +||softensdarkest.cfd^ +||softentears.com^ +||softestablishmentfill.com^ +||softestchumps.qpon^ +||softforestmeadow.com^ +||softiebalearechafed.cyou^ +||softonicads.com^ +||softpopads.com^ +||softsunpath.com^ +||soghvjtmfubqk.space^ +||sogropidy.com^ +||soholfit.com^ +||soignebravoed.cyou^ +||soilenthusiasmshindig.com^ +||sojabern.cfd^ +||sojasugih.cyou^ +||soksoznleowkf.website^ +||solar40.com^ +||solaranalytics.org^ +||solarcyclonesky.com^ +||solarlankest.shop^ +||solarvepsish.cyou^ +||solaryardillaspudboy.cyou^ +||soleescapeprojects.com^ +||solelyawhir.qpon^ +||solelyskirtniche.com^ +||soleratantawyquiina.cfd^ +||soleraulmaria.qpon^ +||solertsoggily.cyou^ +||solessaynetemallei.cfd^ +||solicitfuthark.cyou^ +||solicitorfillet.com^ +||solicitorvalvemade.com^ +||solid-mall.com^ +||solidlyrotches.guru^ +||solidmigraine.com^ +||solionenzymes.com^ +||solispartner.com^ +||solitaryburlapillogical.com^ +||solitudeelection.com^ +||solocpm.com^ +||solodar.ru^ +||solodiembays.qpon^ +||soloedbiblist.cyou^ +||soloedscape.com^ +||soloistchinese.com^ +||soloistrottenfountain.com^ +||solujav.my^ +||solusobdurearapaho.qpon^ +||solutejoss.cfd^ +||solutionbiologyisle.com^ +||solutions110.net^ +||solutions2forge.net^ +||solutionsin103.net^ +||solutusshrewdy.cyou^ +||solvemilitaryconsulate.com^ +||solvesdette.cfd^ +||somainpdeirit.online^ +||somasjert.cfd^ +||sombernewspaper.com^ +||sombes.com^ +||sombreyaws.cyou^ +||somebodydriver.com^ +||somebodyfabulousgrain.com^ +||somebodymanage.com^ +||someclosing.com^ +||someerror.pro^ +||somegreatt.com^ +||somehowluxuriousreader.com^ +||somentibrot.com^ +||somethingprecursorfairfax.com^ +||somethingrealisticzero.com^ +||sometimecheerlessauditorium.com^ +||sometimegoreproduce.com^ +||somewhatsunduke.com^ +||somewhatwideslimy.com^ +||somfeubckguwd.site^ +||somnusveld.cfd^ +||sompneaztecs.com^ +||son-in-lawmorbid.com^ +||sonableprotome.qpon^ +||sonantpoufedgaucher.cyou^ +||songertringa.com^ +||songhaigrommet.cfd^ +||songlenursy.cfd^ +||songsill.com^ +||songtopbrand.com^ +||soniouacnode.shop^ +||soniouchopped.cyou^ +||sonioutwicer.qpon^ +||sonlikepiosity.shop^ +||sonnerie.net^ +||sonnyrespected.com^ +||sonovoxexcite.shop^ +||sonsethel.com^ +||sonsstoop.com^ +||sookypapoula.com^ +||sooncoinsprecaution.com^ +||sooncongestloving.com^ +||soonpubplatform.online^ +||soontow.com^ +||sooreynminces.qpon^ +||soorkylarixin.com^ +||sootgrid.com^ +||sootheimportanceworthy.com^ +||sootoarathus.net^ +||sopalk.com^ +||sopcoedit.cyou^ +||sopdhkqywwzwn.site^ +||sophiaaccoladewest.com^ +||sophisticated-blow.com^ +||sophisticatedappearance.com^ +||sophomorelink.com^ +||sopitegriping.cfd^ +||sopitesuncored.cyou^ +||sopitesvanman.qpon^ +||sopwmgdtpscnd.space^ +||sopxcaozjplss.site^ +||soqitntsrxvio.website^ +||soqltkribrojx.space^ +||soqwtxjtvglkz.website^ +||sorancepwt.cyou^ +||sorbetbungler.com^ +||sorbicmolkaacted.qpon^ +||sorchindysury.cfd^ +||sordgables.cyou^ +||sordidsicknessfaded.com^ +||sore-medicine.com^ +||sore-middle.com^ +||sorermegabar.qpon^ +||sorghezel.cfd^ +||sorghoswidens.qpon^ +||soroseaguralinens.qpon^ +||sorrowdefinedasterisk.com^ +||sorrowskoorhmn.shop^ +||sorryfearknockout.com^ +||sorthurry.com^ +||sortswoopmarrying.com^ +||sortuneven.com^ +||sotervastyacture.cyou^ +||sottedusself.cfd^ +||soucvnbylfpxu.online^ +||soudandondine.shop^ +||soueegelontar.qpon^ +||soughvigias.cfd^ +||soukreariijut.cfd^ +||souledatli.cfd^ +||soulful-contact.com^ +||soulfulpipe.pro^ +||soulsdeliriousnoise.com^ +||soulunbornrib.com^ +||soumjosephs.cyou^ +||soundfrankcoke.com^ +||souocvjmfccpx.store^ +||soupystick.pro^ +||sourceactivelydared.com^ +||sourceauditoriumassure.com^ +||sourcerealisejeopardy.com^ +||sourelevationregion.com^ +||sourshaped.com^ +||sousemeeth.qpon^ +||souszhi.com^ +||soutanesstorcattily.qpon^ +||soutanethwaite.cyou^ +||soutawnily.cyou^ +||southbrief.com^ +||southedpesetasiciness.cfd^ +||southefface.com^ +||southflannelclassic.com^ +||southremoval.com^ +||souvenirsespecially.com^ +||souvenirsmascaraearphones.com^ +||souvenirsrecognize.com^ +||souvenirsstrew.com^ +||sovbqlhzoajtw.site^ +||sovereignlooarm.com^ +||sovietransom.com^ +||sovietsite.com^ +||sovuyibacinnb.space^ +||sowelsnock.cyou^ +||sowpixnymnoxw.space^ +||sowpoint.com^ +||soxfokwppwqpm.website^ +||soxhyxhugzwez.website^ +||soybeanelverpicky.cyou^ +||soycdn.lol^ +||soyconfer.com^ +||soydcwnptchwk.com^ +||soyjoyous.cyou^ +||sozlsiexijubh.website^ +||soznlghtktitc.website^ +||spaallied.com^ +||spacemancreativedom.net^ +||spacepoetic.com^ +||spacetraff.com^ +||spacingbestirs.com^ +||spadedesirablereproduce.com^ +||spadeharassrefusal.com^ +||spadelack.com^ +||spaderonium.com^ +||spadsync.com^ +||spaikfoxery.cyou^ +||spaniardinformationbookworm.com^ +||spaninghidel.cfd^ +||spannedmeguilp.cyou^ +||spannerbrewinghalfyear.com^ +||spannerfudgeworker.com^ +||spanulepongee.com^ +||spareairless.com^ +||sparersruiner.shop^ +||sparesofa.com^ +||sparklerblissupright.com^ +||sparklerrectifyinsert.com^ +||sparklingaccordinglynotability.com^ +||sparklingscytheinhabited.com^ +||sparkpcgames.com^ +||sparkrainstorm.host^ +||sparkstudios.com^ +||sparktostatistics.net^ +||sparrowaboveaveragedefence.com^ +||sparrowcanned.com^ +||spartaascon.shop^ +||spartasheafedonker.cfd^ +||spasmicplanet.shop^ +||spatacquaint.com^ +||spatepedlar.cyou^ +||spavftgwy.com^ +||spcwtcizsymxf.site^ +||spdate.com^ +||speakclash.com^ +||speakmalthe.com^ +||speanpinions.cyou^ +||speansnugget.cyou^ +||special-offers.online^ +||special-promotions.online^ +||specialberth.com^ +||specificallycries.com^ +||specificallyfollowsbraid.com^ +||specificallyglimmerdispose.com^ +||specificationauthenticrelentless.com^ +||specificmedia.com^ +||specifygoodnightprerogative.com^ +||speckencampment.com^ +||spectaclesclottedrobber.com^ +||spectacularimmunity.com^ +||spectacularpercentage.com^ +||spectkuchean.com^ +||spectrumirriplaceableirriplaceable.com^ +||speculationchatter.com^ +||speculationpains.com^ +||speeb.com^ +||speecefilmy.cfd^ +||speechcleopatraadmiral.com^ +||speederpelenggranth.cyou^ +||speedingdeadlyplays.com^ +||speedingstale.com^ +||speedycomediandecember.com^ +||speilsushabti.cyou^ +||speleangarlopa.cyou^ +||spellingdelicatessenremove.com^ +||spellingunforgivablesneak.com^ +||spendsdetachment.com^ +||spentgeographical.com^ +||speragephallin.cfd^ +||sperans-beactor.com^ +||speraspace.com^ +||speritybraggle.shop^ +||spermastample.shop^ +||spevybdnwkzzd.space^ +||spfuiiitfethh.site^ +||spherepsoai.com^ +||spherical-brilliant.com^ +||sphidaphyps.com^ +||spicasamuchco.com^ +||spice-sugar.net^ +||spiceforthjobless.com^ +||spiceoptimistic.com^ +||spicersdotters.cyou^ +||spicewaxworks.com^ +||spicketkend.com^ +||spicy-effect.com^ +||spicy-two.com^ +||spicycopy.com^ +||spicydrama.pro^ +||spicyram.com^ +||spielsbeni.com^ +||spiesdeigns.cfd^ +||spikersfootageongaro.cyou^ +||spikesandcurrant.com^ +||spin83qr.com^ +||spinachhypocrisy.com^ +||spinalestureantsy.cyou^ +||spinalreferencesgirdle.com^ +||spinbox.net^ +||spindlyrebegin.top^ +||spinedblowth.cfd^ +||spineporousposter.com^ +||spininitial.tech^ +||spinmasterpiecediscount.com^ +||spinsgasman.cyou^ +||spinsterbidding.com^ +||spirajacanasfrenzic.cfd^ +||spiraleoutbakelocrine.cyou^ +||spiratecongrid.com^ +||spiritdeserted.com^ +||spiritlag.com^ +||spiritscaution.com^ +||spiritualslower.com^ +||spirteddvaita.com^ +||spirtswedding.qpon^ +||spirtzekzufolo.cyou^ +||spissflunkey.qpon^ +||spitecymbalo.cyou^ +||spitefuldecision.com^ +||spitefulleapraspberry.com^ +||spitefulmotor.com^ +||spitepaperworkaway.com^ +||spitousskirr.shop^ +||spittedstagnumdecoll.cyou^ +||spklmis.com^ +||spkvmszihgzei.space^ +||splashfailed.com^ +||splashspyruvic.shop^ +||splayarawak.cyou^ +||spleennest.com^ +||splendid-negotiation.com^ +||splendidsugar.com^ +||splendldates.net^ +||splendlddates.com^ +||splendlddates.net^ +||spletlauding.cfd^ +||splitscavallycolza.qpon^ +||splitsrayed.qpon^ +||splittingpick.com^ +||spmqfymfgbfha.space^ +||spmqkfodtwzit.site^ +||spodespavesbulder.cfd^ +||spoedlyyhexxr.online^ +||spoilconsumerimmoral.com^ +||spoileddaring.com^ +||spoiledglumscarecrow.com^ +||spoiledtepees.com^ +||spoiljinxplate.com^ +||spokcqqaprhzj.site^ +||spokemagicalabsurd.com^ +||spokentomatoestraumatic.com^ +||spokesmanalientwentieth.com^ +||spokinglyceum.cfd^ +||spongecell.com^ +||spongerendercement.com^ +||spongerneedlingoes.qpon^ +||spongesofateacher.com^ +||sponsorinserttimeout.com^ +||sponsorpay.com^ +||sponsorshipprickly.com^ +||spooksmalldowny.com^ +||spookyascentfranchise.com^ +||spoolssacrary.cfd^ +||sportingamazingconsequence.com^ +||sportradarserving.com^ +||sportsariseencyclopaedia.com^ +||sportstoday.pro^ +||sportstreams.xyz^ +||sportsvot.com^ +||sportyvestral.cyou^ +||sporvacuumaslyness.qpon^ +||spotforlee.com^ +||spotless-reveal.com^ +||spotlessbreakfast.com^ +||spotlesspersianwhereas.com^ +||spotlesstotal.com^ +||spotlightconvenience.com^ +||spotlightprayers.com^ +||spotofspawn.com^ +||spotscenered.info^ +||spotsconcealedunlikely.com^ +||spotted-alternative.com^ +||spottlelogjams.qpon^ +||spottt.com^ +||spotxcdn.com^ +||spotxchange.com^ +||spoutable.com^ +||spouterlaeti.shop^ +||spoutslagoons.cfd^ +||sppebshiopdan.space^ +||sppopups.com^ +||sppxwntjpeujb.space^ +||sprangfunk.com^ +||spranglacklesslackless.com^ +||sprangromefoetus.com^ +||sprayearthy.com^ +||spraysnail.com^ +||spreadpreferencetelevision.com^ +||spriestcarotid.shop^ +||springrakija.cfd^ +||sprinlof.com^ +||sprkl.io^ +||sprogueasphyxy.cyou^ +||sproguetrompsaphacia.qpon^ +||sproose.com^ +||sproutamazedpursuing.com^ +||sprungextraordinaryhonorary.com^ +||sprunglurk.com^ +||sprungstorm.com^ +||spry-cat.com^ +||spry-trick.com^ +||spsfjtvdgbfmo.website^ +||spsiqdfdkjgqv.space^ +||spssowf.qpon^ +||spswjytxnvunp.online^ +||sptrck.com^ +||sptrkr.com^ +||spuaggokm.in^ +||spuddledyslogy.cyou^ +||spuddyamlikar.shop^ +||spudranges.cyou^ +||spuehandjar.qpon^ +||spumiercithara.qpon^ +||spunkurinoselesleya.cyou^ +||spurrerklamath.shop^ +||spurtshrubvending.com^ +||spurtvastsummer.com^ +||spvktyfetdwpg.space^ +||spxsvrvxwouyp.site^ +||spylees.com^ +||spypfexwa.in^ +||spyunfortunately.com^ +||spyzvcviywdva.space^ +||sqanziqmyedau.online^ +||sqapyecbhvkdw.store^ +||sqbcgfrjznaao.space^ +||sqbekhpudmmbi.website^ +||sqbjrevvtnqlz.space^ +||sqbzvlttwmodm.space^ +||sqcrlgnhawivg.website^ +||sqhqtvnvfzfne.store^ +||sqisdiyvaghxd.site^ +||sqiyzusatgykt.online^ +||sqlawhdaksulk.site^ +||sqlcbvoesbeut.online^ +||sqlhbcmfvtsrz.space^ +||sqpyclvkzpgnw.space^ +||sqsclhamjsukz.site^ +||sqtagpqwzyfhj.site^ +||sqtlbziegerqu.website^ +||sqtnbselqbaqw.site^ +||sqtueaeeidkhw.site^ +||sqtwsctpdijzw.fun^ +||squallyvenally.qpon^ +||squamaeamp.cyou^ +||squamlettic.cyou^ +||squaremagician.com^ +||squarerluigi.qpon^ +||squashprinterhissed.com^ +||squashreservebrim.com^ +||squattymaidly.com^ +||squealjoltily.com^ +||squeegetirret.cyou^ +||squeezeddemoteremainder.com^ +||squeezedunderstoodproven.com^ +||squeezestandardtoddle.com^ +||squidaugust.com^ +||squidcrippled.com^ +||squiggly-dance.pro^ +||squiggly-fill.pro^ +||squintsstretta.cyou^ +||squirestankie.com^ +||squirlbroddle.cfd^ +||squirmdori.qpon^ +||squirtdrsuccession.com^ +||squisscoiffed.cfd^ +||sqxbkrmtgei.com^ +||sqxbojbkjdved.online^ +||sqybrgc6.xyz^ +||sqzoyfdzlcaoy.site^ +||sraoyuvchtdja.site^ +||srcomvitakjqrk.com^ +||sregrohnmdwvu.site^ +||srfqdoboesecb.site^ +||srgepchdlbequ.space^ +||srgkeyuenriyi.website^ +||srgtwfqptfcxf.online^ +||srhwazpvlyxua.online^ +||sridharkindlesbeaux.qpon^ +||srirambiles.cfd^ +||sriramflex.cfd^ +||srmures.cfd^ +||srntymhthqi.com^ +||srowvggksbuvv.vip^ +||srpsnvtisuznr.site^ +||srrdmwjqwn.com^ +||srrncifitkfez.website^ +||srtrak.com^ +||srtrupwxwmqax.space^ +||srv224.com^ +||srvb1.com^ +||srvpcn.com^ +||srvtensz.com^ +||srvtrck.com^ +||srvupads.com^ +||srwhoxkyksvql.site^ +||srxxgiperzooy.space^ +||srydpfeufugyr.website^ +||sryfmerwefrwj.icu^ +||srytiqervsgbi.space^ +||srzwbetxwdkpt.online^ +||ss0uu1lpirig.com^ +||ssaecqvdnifuc.website^ +||sscfksiwpjxxu.website^ +||ssedcrimble.com^ +||sseffllpcrwm.com^ +||ssehmqolgssxqwt.com^ +||sservs.com^ +||ssgfvaiormcuz.online^ +||ssindserving.com^ +||ssjhioharwbqs.online^ +||ssjxkddegyvoo.site^ +||sskzlabs.com^ +||ssl-services.com^ +||ssl2anyone5.com^ +||sslph.com^ +||ssm.codes^ +||ssmtfxdslsvzz.space^ +||ssmxdtzbskhto.space^ +||ssogkvsgjskhe.site^ +||ssotlctvjiuei.site^ +||sspxhnhaigrdb.site^ +||sspzvqhsqywbq.site^ +||ssqcqaavrncxt.online^ +||ssqundfpfuwgy.store^ +||ssrdnoeohalot.online^ +||ssrvdqduiatwy.space^ +||ssteeraa.net^ +||sstqtjqzyrppq.space^ +||ssulawmen.qpon^ +||ssvajgzmqrtxa.online^ +||sswalesmentb.com^ +||stabilefated.cfd^ +||stable-skill.com^ +||stableaspect.com^ +||stabledkindler.com^ +||stabsrunner.com^ +||stabstudentvocational.com^ +||staccdisbark.cyou^ +||stachedstimaa.com^ +||stackadapt.com^ +||stackai.co.com^ +||stackattacka.com^ +||stackcoalitionmole.com^ +||stackedretinolgolfdom.cfd^ +||stackmultiple.com^ +||stackrealreliant.com^ +||stackwitotopolices.qpon^ +||stagepopkek.com^ +||stagesepandit.cyou^ +||stageseshoals.com^ +||staggereddam.com^ +||staggeredravehospitality.com^ +||staggermeaningless.com^ +||stagingjobshq.com^ +||stagypisgahtavola.qpon^ +||staindessadness.com^ +||staindumpexists.com^ +||stainedhost.pro^ +||stainedsister.pro^ +||staininhibitfaraway.com^ +||stairwellansweredsalute.com^ +||stairwellregularspontaneous.com^ +||stale-father.com^ +||stalesbriberschymes.cyou^ +||staletraffic.com^ +||stalkoscruto.qpon^ +||stallgalaxyheed.com^ +||stallionthan.com^ +||stallsobservance.com^ +||staminhereout.cyou^ +||stampbesidescontrived.com^ +||stampstallionpalpable.com^ +||standalone4instances.com^ +||standardaccount.pro^ +||standardmiddle.pro^ +||standicohornatavus.cyou^ +||standingargumentorder.com^ +||standingbreederpitiful.com^ +||standpointbluffybluffy.com^ +||staningmilitiahamble.cfd^ +||stankyrich.com^ +||stanleyballat.shop^ +||stannelbubo.qpon^ +||stapledsaur.top^ +||stapleleisure.com^ +||staplesylemsunicef.cfd^ +||star-advertising.com^ +||star-clicks.com^ +||star-romancejunctions.com^ +||star-theladyfinds.com^ +||starchy-choice.pro^ +||stardomcoit.com^ +||staredthem.com^ +||stargamesaffiliate.com^ +||starmeetonline.com^ +||starmobmedia.com^ +||starnelsueve.cfd^ +||starrresidsstreak.cyou^ +||starry-galaxy.com^ +||starrykaki.cyou^ +||starrylook.com^ +||starsallowyear.com^ +||starstrengthcultivated.com^ +||starswalker.site^ +||startappexchange.com^ +||startletrumpdim.com^ +||startpagea.com^ +||startsflow.com^ +||starvationcalibergrid.com^ +||starvedesolatesaturday.com^ +||starwfondlytannoid.qpon^ +||stat-rock.com^ +||statcamp.net^ +||statelinkcdn.com^ +||statelygrievously.com^ +||statementbrainless.com^ +||statesalmon.com^ +||statespiecehooter.com^ +||stateunableneither.com^ +||static-north.lol^ +||static-srv.com^ +||staticgalaksion.com^ +||stationinterfacehunter.com^ +||statisticresearch.com^ +||statistics311.net^ +||statisticsaccent.com^ +||statisticsnail.com^ +||statisticstohost.net^ +||statorkumyk.com^ +||stats.rip^ +||statsforads.com^ +||statsloange.qpon^ +||statuejesusburn.com^ +||staturebanner.com^ +||statuspigmies.cyou^ +||statustranslateaubergine.com^ +||staumerimpalm.qpon^ +||staunchharmonious.com^ +||staunchtownsegg.com^ +||staupsoaksy.net^ +||stayarchaicsuperstitious.com^ +||stayclockwise.com^ +||stayerbranle.com^ +||stayingapplicant.com^ +||stayrarelycontract.com^ +||staysafeonlinetoday.com^ +||stdirection.com^ +||steakeffort.com^ +||steakgrudgepaeon.cyou^ +||steakordeal.com^ +||stealthbros.qpon^ +||steamabundanceslope.com^ +||steeksniffy.cfd^ +||steel-savings.com^ +||steelreproach.com^ +||steeplederivedinattentive.com^ +||steeplereconciliation.com^ +||steeptheme.com^ +||steepto.com^ +||steerensout.net^ +||steeringsunshine.com^ +||stefanfiveflytes.cyou^ +||steidpalmirasaanen.cyou^ +||steidupglean.cfd^ +||stelarmanzana.cyou^ +||stelenerumpy.cfd^ +||stelesunselfkusum.cfd^ +||stella-nova.click^ +||stemboastfulrattle.com^ +||stemmabegift.cfd^ +||stenchrha.shop^ +||stenexeb.xyz^ +||stenozpanawoc.website^ +||stepmedieval.com^ +||stepminorityinept.com^ +||stepmothermultiplydust.com^ +||steppesequence.com^ +||stereospoutfireextinguisher.com^ +||stericsmobilessnicher.qpon^ +||sterilecontradiction.com^ +||sternlyloammi.cfd^ +||sternobireme.qpon^ +||steroidprop.com^ +||steroidslaughteradvertise.com^ +||steropestashes.cfd^ +||stevenfainter.cfd^ +||steviaorchids.cyou^ +||stewardconvenienceslisp.com^ +||stewartconflux.qpon^ +||stewartkassu.qpon^ +||stewportfoliomeaning.com^ +||stfeukufunden.org^ +||stgcdn.com^ +||stgowan.com^ +||sthenianootkaonefold.cfd^ +||sthhbqpjfdves.space^ +||stickingallot.com^ +||stickingholdingconcussion.com^ +||stickscoltdependent.com^ +||stickyadstv.com^ +||stifebarbed.qpon^ +||stiff-lake.pro^ +||stiffenshave.com^ +||stiffindividual.pro^ +||stiffswimming.com^ +||stifuzdpzgw.com^ +||stigmaicubital.cfd^ +||stilbdueller.cyou^ +||stillawokeathwart.com^ +||stiltydreckskangli.cfd^ +||stimefloccus.shop^ +||stimenot.cfd^ +||stimtavy.net^ +||stimulateartificial.com^ +||stingerfound.com^ +||stingevassals.cyou^ +||stingyfacile.com^ +||stingyhandy.com^ +||stinkconstituent.com^ +||stinklistedtobacco.com^ +||stinkramblemileage.com^ +||stinksboggish.cyou^ +||stinkyassignment.com^ +||stinkyloadeddoctor.com^ +||stinkymildred.com^ +||stinkypaneltotally.com^ +||stionicgeodist.com^ +||stirksabkary.cyou^ +||stirringcreambroker.com^ +||stlgleakervisibly.cyou^ +||stlgludlow.shop^ +||stmtesting.qpon^ +||stmvacoaof.qpon^ +||stnjgbqwpispt.store^ +||stoachdarts.com^ +||stoaibereanvishnu.qpon^ +||stoajotdjrzyr.site^ +||stoampaliy.net^ +||stobpennine.com^ +||stocahfrakenmagnet.cyou^ +||stockingchancymagically.com^ +||stockingsfiddlesophisticated.com^ +||stockpresentsauspice.com^ +||stofdance.cfd^ +||stoitercases.cyou^ +||stolecutting.com^ +||stoletellsgets.com^ +||stomachmallow.com^ +||stomionranket.cyou^ +||stonierteddy.com^ +||stonkstime.com^ +||stonkstouts.qpon^ +||stonysuingtartness.com^ +||stoogesmeebosvixen.cfd^ +||stoolsymphony.com^ +||stoomawy.net^ +||stoopeddigestaggregation.com^ +||stoopeddiscourse.com^ +||stoopsellers.com^ +||stootsou.net^ +||stopads-now.com^ +||stopinglinene.cyou^ +||stopingporks.qpon^ +||stoplouse.com^ +||stoppedcrag.com^ +||stoppedgipsyundoubtedly.com^ +||stopperbarristerforecast.com^ +||stopperscared.com^ +||storage-ad.com^ +||storageimagedisplay.com^ +||storagerecurrent.com^ +||storeyderived.com^ +||storkto.com^ +||stortla.com^ +||storybeyondroughly.com^ +||storyblake.com^ +||storyrelatively.com^ +||storystaffrings.com^ +||storyunicornupper.com^ +||stoterseizershotdogs.cyou^ +||stoutjangle.com^ +||stoutyear.com^ +||stovenbased.qpon^ +||stoveslodgers.cyou^ +||stowagegentil.com^ +||stowbilateral.com^ +||stowedormers.cyou^ +||stowhiwhothu.com^ +||stpd.cloud^ +||stpoutpersonally.com^ +||stquality.org^ +||strafespang.shop^ +||stragkiranti.cyou^ +||straight-master.com^ +||straightenedphiladelphiarequire.com^ +||straightenedsleepyanalysis.com^ +||straightenframe.com^ +||straightforwardaudition.com^ +||straightmenu.com^ +||straitassumer.com^ +||straitsintentionsbedroom.com^ +||straitspiral.com^ +||straitsveiler.com^ +||strandedenragefiscal.com^ +||strandedidiommembership.com^ +||strandedobviously.com^ +||strangelycontentslantern.com^ +||strangeremerged.com^ +||strangineersa.com^ +||strangleattendeddeed.com^ +||strangputchuk.shop^ +||stratatransl.cyou^ +||strataview.co.in^ +||strayclamer.cfd^ +||strdmm.cc^ +||stream-all.com^ +||streamaccidentally.com^ +||streamflash-app.com^ +||streamnova-hub.com^ +||streampsh.top^ +||streamsearchclub.com^ +||streamstv.pro^ +||streamyourvid.com^ +||streetmonumentemulate.com^ +||strekepetrols.com^ +||stremmaraftage.com^ +||strengthdetention.com^ +||strengthhaberdashery.com^ +||strengthyellow.com^ +||strentdusted.cfd^ +||strenuoussimilar.com^ +||strenuoustarget.com^ +||stressfulproposedangrily.com^ +||stretchedcreepy.com^ +||strettechoco.com^ +||strewnsighed.cfd^ +||strewviolently.com^ +||streyarrow.cfd^ +||streynesickoutmole.qpon^ +||strhreqxcfcmr.online^ +||strict-duty.pro^ +||strictly888.com^ +||stridemuzzleportal.com^ +||stridentuser.com^ +||strideovertakelargest.com^ +||striderosteoidsister.cyou^ +||stridpule.shop^ +||strifeschronol.cyou^ +||strigilemystrochid.cyou^ +||strikebreaker3x.fun^ +||strikecrinosefoetid.cyou^ +||striking-personal.pro^ +||strikingcondolences.com^ +||stringbuild.com^ +||stringroadway.com^ +||stringshypnotize.com^ +||stringspasmo.cfd^ +||stripedknotted.cyou^ +||stripedstudy.com^ +||stripskeletonsting.com^ +||striptammeter.qpon^ +||stripwedding.com^ +||striveoatmealtyronic.cfd^ +||strixiters.shop^ +||strobedturtlet.com^ +||strodedill.com^ +||strodeintended.com^ +||strokesneglectnerka.qpon^ +||strokyhaemoid.cyou^ +||strolldownstairstelegram.com^ +||strollthrillingmeltdown.com^ +||strongbarnacleenemy.com^ +||strongersidenotemalicious.com^ +||strongholdnearby.com^ +||stronglyspringdoubly.com^ +||strovetunnage.qpon^ +||strtgic.com^ +||structure420.net^ +||strueoptingkorana.cfd^ +||strugglefeatherappreciate.com^ +||strugglingelevenfallout.com^ +||strugglingpersist.com^ +||struthroiled.qpon^ +||strutinbring.cyou^ +||stscczovfaipx.website^ +||stsejehaurbpx.site^ +||stsylxihypypw.space^ +||stuartcassena.cyou^ +||stuckashespassion.com^ +||studads.com^ +||studiogillotphenols.cfd^ +||studious-make.com^ +||studiousenragereclaim.com^ +||studiousorange.com^ +||studiteboard.cfd^ +||studyunharmedupscale.com^ +||stuffedpebblegerman.com^ +||stuffedprofessional.com^ +||stuffserve.me^ +||stumbledkate.com^ +||stummedmanilio.cyou^ +||stummelbeelbow.com^ +||stumpsmug.com^ +||stunning-lift.com^ +||stunning-perception.pro^ +||stunningmontana.com^ +||stunsbarbola.website^ +||stuntypupoid.qpon^ +||stupid-police.com^ +||stupidconveniences.com^ +||sturdy2000.net^ +||sturdyarrival.com^ +||sturdyingeneration.com^ +||sturtenonmancrablet.qpon^ +||stussbagiegloea.cfd^ +||stuttercarrydoorbell.com^ +||stvbiopr.net^ +||stvkr.com^ +||stvufegajgpzy.online^ +||stvzuyoseftdw.site^ +||stwwdyowpkzof.website^ +||stxmumxjxbeud.store^ +||stygianpattern.cfd^ +||stylecyberrose.com^ +||stylish-airport.com^ +||stylish-knife.com^ +||styvjlsjnubwt.space^ +||stywardmartu.qpon^ +||suamhsrqfuqle.website^ +||suawddlsmamci.website^ +||sub.xxx-porn-tube.com^ +||sub2.avgle.com^ +||subaquastandel.shop^ +||subaridfahampanamic.cfd^ +||subcellmerodus.cfd^ +||subcomenitypert.com^ +||subdatejutties.com^ +||subdividecola.com^ +||subducearabs.shop^ +||subdued-breakfast.pro^ +||subechotewter.qpon^ +||suberinclicasha.qpon^ +||subgumagnate.cfd^ +||subgumexhibitns.cfd^ +||subgumgutwise.com^ +||subhallbrowsedweepier.qpon^ +||subiliapigtail.cyou^ +||subiqquokjziy.store^ +||subjectmelodramaticsoil.com^ +||subjectthree.com^ +||subjecttimberinspiration.com^ +||submergepremierehibernate.com^ +||submissiongracioushonour.com^ +||submissionthemecolonialism.com^ +||submissive-quarter.pro^ +||submissive-spirit.pro^ +||submissivejuice.com^ +||subnessdunites.cfd^ +||subornpohnachronal.qpon^ +||subploterwinatom.cyou^ +||subracedi.cyou^ +||subsamparo.shop^ +||subscriberridenarcotic.com^ +||subscriptionfolk.com^ +||subsequenthysterical.com^ +||subsidedjudgement.com^ +||subsidesmuglypails.qpon^ +||substantialbabjuxtapose.com^ +||substantialconcentration.com^ +||substantialequilibrium.com^ +||substantialmutinousfrecklessfreckless.com^ +||substantialprecarious.com^ +||substituteyonder.com^ +||subtlemath.pro^ +||subtlemillenniumgallop.com^ +||subtleretortspat.com^ +||subunitbaldlyworms.cyou^ +||suburbcriticizefragment.com^ +||suburbincriminatesubdue.com^ +||subwayeachaccompaniment.com^ +||subwayhumility.com^ +||succeedknockweapons.com^ +||successconfusequick.com^ +||successesservicetrips.com^ +||successfullyaileen.com^ +||successorbuypatronize.com^ +||succubeaptate.qpon^ +||succubesalvoed.qpon^ +||sucnaegzvbrhu.site^ +||suctiondecade.com^ +||suczjwsoelppw.site^ +||sudariacueman.cyou^ +||sudatejiberlauryl.cyou^ +||suddersalinanmeteors.qpon^ +||sudsesusuarycoman.qpon^ +||sudsmenstoory.cfd^ +||suejvtxdvjtqc.website^ +||suentpenning.cfd^ +||suertepapaloi.cfd^ +||suevicnettie.com^ +||suezbonuses.shop^ +||sufferkenches.cfd^ +||sufferpounceo.com^ +||sufferwalkersilliness.com^ +||suffocatedeliberatelyslid.com^ +||suffocatefried.com^ +||suffocateinnhandling.com^ +||suffuseoilcamp.qpon^ +||sugarerfesels.qpon^ +||sugarmacro.shop^ +||sugarruse.com^ +||suggestbingo.com^ +||suggesthometown.com^ +||suggestionemphasiscourage.com^ +||suggilzanza.com^ +||suhlclbwibpxnmr.com^ +||suhvoulwtaxfj.site^ +||suicidalruse.com^ +||suiformupdrink.cyou^ +||suitablecondemntin.com^ +||suitedeatercrutch.com^ +||suiteenvelopetyran.com^ +||sujgsrsppqoij.site^ +||sujmazbul.in^ +||sukeywacks.qpon^ +||sukjdmsazsmuw.space^ +||sukmdrkbkegsx.space^ +||sukudopped.cyou^ +||sukuesca.cyou^ +||sulkersxenium.cfd^ +||sulkgrinseafood.com^ +||sulkweapon.com^ +||sullensbondman.cfd^ +||sullybrigous.cfd^ +||sultrymomentarily.com^ +||sumitrotheoricviolate.cyou^ +||summeanwhile.com^ +||summerleftover.com^ +||summit2processors.com^ +||summonsrecarry.com^ +||summonsword.cfd^ +||summonteacherjunction.com^ +||summythdevious.com^ +||sumptuousmonks.com^ +||sumptuousunwindassigned.com^ +||sundaesenvelopolein.cfd^ +||sundaycomplicate.com^ +||sundayplough.com^ +||sundersmedaka.cfd^ +||sundewamated.cyou^ +||sunflowercross.com^ +||sunflowergiganticcheerfully.com^ +||sunglassescontrary.com^ +||sunglassesexpensive.com^ +||sunkendifferextreme.com^ +||sunkvmbwhdbbt.website^ +||sunlightelitistbut.com^ +||sunmediaads.com^ +||sunmeorju.com^ +||sunnshele.com^ +||sunny-membership.pro^ +||sunny-source.pro^ +||sunnyabstractpermanently.com^ +||sunnycloudstone.com^ +||sunnyindication.com^ +||sunortdndmmlv.site^ +||sunpreciousdearly.com^ +||sunsetsjolted.cfd^ +||sunshineadditions.com^ +||sunspotcrier.qpon^ +||sunstrokeeastcookie.com^ +||suntanswam.qpon^ +||sunuabuahgfsd.space^ +||sunwayzingierlenaean.qpon^ +||suoczfysevlzp.space^ +||suolbcutqqzpj.space^ +||suoqmcworgd.com^ +||super-currency.pro^ +||superbjudgment.com^ +||superfastcdn.com^ +||superfasti.co^ +||superficial-chain.com^ +||superficial-initial.pro^ +||superficial-sensitive.com^ +||superficial-work.com^ +||superfolder.net^ +||superggood.com^ +||superiordealer.pro^ +||superiorityroundinhale.com^ +||superioroptionaleveryone.com^ +||superiorrollback.com^ +||superlativedanemistress.com^ +||superlativemound.com^ +||supermaninquirypliable.com^ +||supermarketabstractthanksgiving.com^ +||superonclick.com^ +||superqualitylink.com^ +||superrgood.com^ +||supersedeforbes.com^ +||superstitionscarecrowunbelievable.com^ +||superstitionstrainconvincing.com^ +||superstriker.net^ +||supervisemessagedelude.com^ +||supervisioncontrary.com^ +||supervisionzoologicalconstrue.com^ +||supervisorgull.com^ +||superxxxfree.com^ +||supewfflaymnr.online^ +||suphelper.com^ +||supilxaimmfkp.site^ +||suplexderipia.qpon^ +||supplanttoffee.com^ +||suppledrumless.shop^ +||supplementary2.fun^ +||supplementforget.com^ +||suppliesabolish.com^ +||suppliescount.com^ +||suppliesfloored.com^ +||suppneaspunked.cfd^ +||supportedbailednotions.com^ +||supportiveinvoicevarnish.com^ +||supportpiousworkroom.com^ +||supportsentparticle.com^ +||supposecrummystorm.com^ +||supposedlymadeup.com^ +||supposeschool.com^ +||suppostskewly.qpon^ +||suppressedbottlesenjoyable.com^ +||suppresseduphousing.com^ +||suprnciknzidl.site^ +||suptraf.com^ +||suqgyxscpkbdw.space^ +||surahsbimas.com^ +||suralbolty.cyou^ +||surancetowns.com^ +||surbasestaling.cyou^ +||surbedchubbed.cyou^ +||surecheapermoisture.com^ +||surechieflyrepulse.com^ +||sureconciliateprojection.com^ +||surfaceobedient.com^ +||surfedosierbirdlet.cyou^ +||surfiemuckytururi.cyou^ +||surfmanbriskly.qpon^ +||surgicalaccuseoffended.com^ +||surgstraked.qpon^ +||surlymotley.com^ +||surmiseauspicebandy.com^ +||surmiseloudlydriving.com^ +||surmounttemperbooklet.com^ +||surnamesubqueryaloft.com^ +||surpasswest.com^ +||surplusaltarmadness.com^ +||surplusdesignerjust.com^ +||surprisingarsonistcooperate.com^ +||surprisinglycrescent.com^ +||surprisinglystaunchdemocratic.com^ +||surrogateicybeagle.com^ +||surstrom.com^ +||surveybindgeneration.com^ +||surveyinghoarfrost.com^ +||survivalgiddinessground.com^ +||survivetumult.com^ +||suryaweenie.qpon^ +||susciteupstood.cyou^ +||susianulidia.com^ +||susigkeit.com^ +||susinvuvi.com^ +||suspectedknives.com^ +||suspectinventory.com^ +||suspectlensemphasis.com^ +||suspectplainrevulsion.com^ +||suspendlocate.com^ +||suspendshipboy.cfd^ +||suspendsymptom.com^ +||suspensiondisk.com^ +||suspensionpersonwand.com^ +||suspicionsepisode.com^ +||suspicionshutnutshell.com^ +||suspicious-scheme.com^ +||suspiciousfootprintschaise.com^ +||suspirekhajur.cfd^ +||sutiletoroid.com^ +||sutlertaxied.cyou^ +||sutraf.com^ +||sutrasrebbe.qpon^ +||suttacen.qpon^ +||sutzotlenmcem.store^ +||suuwomhpbkddv.space^ +||suvloxmlkfier.online^ +||suvntjrxksruf.space^ +||suwandimasanaozlote.cfd^ +||suwytid.com^ +||suxbduziqbblv.store^ +||suxmmptepcpiq.space^ +||suzanne.pro^ +||suzzpmzdxwqkr.space^ +||svanleiss.cyou^ +||svbakoarswdvw.site^ +||svbnswmatdtsp.space^ +||svckenton.com^ +||svefjebugn.com^ +||svgvlmegeeysc.space^ +||svirbuepmsnkn.online^ +||sviyaxwppcijq.site^ +||svjpghwlxvmgv.online^ +||svlitnlsrnrfg.website^ +||svljbpyjjnmkj.site^ +||svmjnmmvxntru.site^ +||svn-defender.pro^ +||svntrk.com^ +||svqzcswdpeytq.space^ +||svrgcqgtpe.com^ +||svstfplolhlll.website^ +||svswyokrievoe.space^ +||svsykpaqyusra.site^ +||svtefnjwxtoto.site^ +||svtylepjeozqu.com^ +||svxdlllvtirib.site^ +||svyixcelxerdo.space^ +||svyksa.info^ +||svyxmeuyqwcrh.online^ +||svzshmeczqudx.site^ +||swak-adguard.pro^ +||swalessidi.com^ +||swallosetule.cfd^ +||swamanethum.qpon^ +||swamplots.com^ +||swampspaha.cyou^ +||swan-swan-goose.com^ +||swanempower.com^ +||swarddename.shop^ +||swarfamlikar.com^ +||swarmjointarmchair.com^ +||swarmpush.com^ +||swarryhuppah.shop^ +||swarthspocus.cyou^ +||swarthsuppingsericin.cyou^ +||swarthycupsconceal.com^ +||swatad.com^ +||swatbeneficial.com^ +||swatledgesling.com^ +||swaverlimps.cfd^ +||swbbtzshzxsve.space^ +||swbihztgbtqcs.space^ +||swdbcdsqexvxs.website^ +||swdqortugmmrj.online^ +||swdtvfsezcryi.website^ +||sweatdatee.com^ +||sweatdatess.com^ +||sweaterokay.com^ +||sweaterwarmly.com^ +||sweatycymous.qpon^ +||sweatyprom.com^ +||sweatysynchronize.com^ +||sweatywife.pro^ +||swededouble.com^ +||swedephotocopy.com^ +||sweeperdernful.cfd^ +||sweepfluent.com^ +||sweepia.com^ +||sweepocypete.cfd^ +||sweepsrashest.cfd^ +||sweerdozehemlock.cfd^ +||sweesedcor.qpon^ +||sweet-engineer.pro^ +||sweetermonday.cyou^ +||sweetgirlsroom.biz^ +||sweetmllf.net^ +||sweetmoonmonth.com^ +||sweetnessbrisk.com^ +||sweetnessnewest.com^ +||sweetnessspeaksintimidate.com^ +||swelpawaitedopaline.qpon^ +||swelpmonkery.shop^ +||swelteringcatch.com^ +||swervemunchfibber.com^ +||swesomepop.com^ +||swhqcerqyqejk.website^ +||swhyypcgsoufj.space^ +||swidgenoetian.cfd^ +||swidprxaafwha.store^ +||swift6060.com^ +||swiftladle.com^ +||swiftlymonumentcheating.com^ +||swiftlypairs.com^ +||swiftstreamhub.com^ +||swigclinid.qpon^ +||swime.online^ +||swimmerfire.com^ +||swimmertinkergrapefruit.com^ +||swimmingnarcotictravel.com^ +||swimmingusersabout.com^ +||swimsunleisure.com^ +||swindlebeseech.com^ +||swinelylaccinsticket.cfd^ +||swinelythilk.qpon^ +||swingdeceive.com^ +||swingelcalfish.com^ +||swinity.com^ +||swinktogate.cyou^ +||swissmilitarycoalition.com^ +||switchofers.com^ +||switchtwentiesduty.com^ +||swivesguzzle.cfd^ +||swivingvulvaechoky.qpon^ +||swiyfeifdk.com^ +||swizzlebuckone.cfd^ +||swkjtstjnvogh.site^ +||swkqrgwlj.com^ +||swlvbfovkhela.space^ +||swmlidloaetad.site^ +||swniihebhwxip.site^ +||swnr0b7c.xyz^ +||swobberrobbervaleryl.cyou^ +||swobbersendee.cfd^ +||swollenbasis.com^ +||swonswksodcbc.website^ +||swooppolygraph.com^ +||swopxenopus.qpon^ +||swoqxitffjvon.online^ +||swordsecretlychimera.com^ +||sworlowedonhisdh.org^ +||sworncrangsalma.qpon^ +||swornlaughruined.com^ +||swottedplaidie.com^ +||swrhddilmlyyt.site^ +||swtagnfimnhdt.website^ +||swurebingies.cfd^ +||swvcecehtgehf.space^ +||swwpush.com^ +||swwsoxhdxvtbg.space^ +||swwwjpqqydeyq.website^ +||swylysnrppthv.space^ +||sxdfhgniwzxzc.space^ +||sxdnqvxka.com^ +||sxdsvaicpjnzg.website^ +||sxetpzonjqvzu.site^ +||sxgqqsngkzozy.website^ +||sxijascmyuisl.site^ +||sxjaywwshzjby.online^ +||sxkumarbqmnuc.space^ +||sxlflt.com^ +||sxmszysaoozpq.website^ +||sxncdwwjlvwkz.online^ +||sxobqwbiiknjp.website^ +||sxprtoqjwbvuq.website^ +||sxsftevgkwlam.site^ +||sxsgyawsmtbxxt.com^ +||sxxiocnjyqhxe.website^ +||sxyrrjgrkwsvw.site^ +||sxyxwtonufdzy.com^ +||syagushzoysias.cfd^ +||sybilevolver.shop^ +||sybspipmmiozz.online^ +||sycheegilpeyoutspin.cfd^ +||sydcabegidwsg.store^ +||syddoumas.qpon^ +||sydswiples.cyou^ +||syehsmzxfaspp.space^ +||syeniteexodoi.com^ +||syfgdjrioyipy.space^ +||syfrvkuuzsjkc.one^ +||syhhlxnyzltmu.site^ +||syhnohomkjzth.website^ +||syigfmoeoaono.space^ +||syinga.com^ +||syjdybprospmg.site^ +||syjkcdmwgqwrm.top^ +||sylfaczvioejj.site^ +||sylphondrippedallonge.cyou^ +||sylvagereding.qpon^ +||sylxisys.com^ +||symboldense.com^ +||symbolultrasound.com^ +||symivbxtgw.com^ +||symmdpxeplqou.space^ +||symmorybewept.com^ +||symowrqrcbomw.online^ +||sympatheticleague.com^ +||sympatheticnerve.pro^ +||sympatheticrequirement.pro^ +||sympathydistinguish.com^ +||syncclickflow.com^ +||synccora.com^ +||synchednombles.cfd^ +||syndenizen.shop^ +||syndicatedsearch.goog^ +||syndromehart.com^ +||syndromekaleidoscope.com^ +||synencrisp.cyou^ +||synihgcbc.com^ +||synodusdifdacoenoby.qpon^ +||synoekyamazia.shop^ +||synoekypods.cfd^ +||synonymwelcomingegyptian.com^ +||synsads.com^ +||syntaxtounlimited.com^ +||synthesissocietysplitting.com^ +||synthesissourcegovernment.com^ +||synthesiswinterindeed.com^ +||synthesizefromprocedures.com^ +||synthesizeoutenterprises.net^ +||synuraephene.qpon^ +||syochgrqwze.com^ +||syoedxrarbvdq.space^ +||syorrvelwqrqx.site^ +||syoxjuntp.com^ +||syphonmention.cyou^ +||syrdgbyaktgsw.space^ +||syriacgrumose.com^ +||syringesornerssimars.cyou^ +||syrqwommweign.space^ +||syrupimmediate.com^ +||syrupplod.com^ +||syrupsatellite.com^ +||sysmeasuring.net^ +||sysoutvariola.com^ +||system-notify.app^ +||systemads.net^ +||systeme-business.online^ +||systemleadb.com^ +||systems201.net^ +||systemsfromhybrid.net^ +||systyleunplug.cyou^ +||syuaqkkanztrx.site^ +||syunuirjlfgekn.com^ +||sywijqrehycts.website^ +||sywxrvcisdjxe.store^ +||syyynjvgdbmtj.online^ +||szblepeqqktbp.online^ +||szboqosgaumos.space^ +||szbvhslrhfuni.site^ +||szdikxkbkfcwd.store^ +||szexma.com^ +||szgezbisdrqbf.website^ +||szhaczzptwovk.club^ +||szhkysjkkq.com^ +||szlcgeoxvoqzs.online^ +||sznzfsidzwfiz.space^ +||szpyqrgh.xyz^ +||szpzwvdcpedjl.site^ +||szqvbkwohszkr.space^ +||szqxvo.com^ +||szuyezltkzrku.space^ +||szwrfefyffnaf.space^ +||szwzkummtjbag.online^ +||t.uc.cn^ +||t2lgo.com^ +||t2r98hpp3qbhux5z.rest^ +||t3b7jq87m6ctgxfo.cfd^ +||t56w3jk3hu3gvj27ee1eo9oy.cfd^ +||t5jg99ytkujltgnp.cfd^ +||t6riol5563pyzlbqvnpiq1j3cbbn.cfd^ +||t7cp4fldl.com^ +||t7egfpj8ernw128k1522f.cfd^ +||t84c3srgclc9.com^ +||t85itha3nitde.com^ +||t95xfj43ol1162lcb3qzv75t6xkcgxew21.cfd^ +||t9q8bo5unem8to5.cfd^ +||ta3nfsordd.com^ +||taarazymousalberta.qpon^ +||tabcampoo.qpon^ +||taberedfeltedahet.cyou^ +||tabinetbeamingreopens.cfd^ +||tabloidincapable.com^ +||tabretwicht.com^ +||taccakylo.cyou^ +||tachiolcoosers.cyou^ +||tackdisillusion.com^ +||tackfreed.com^ +||tackletoumnah.cyou^ +||tacklingunsightlyventricle.com^ +||tacticalinsoluble.com^ +||tacticalswindle.com^ +||tacticwane.com^ +||tactivemuette.cfd^ +||tactoidbatched.cfd^ +||tactualanhima.cyou^ +||taegcqtf.com^ +||tafdiywfnavss.site^ +||taffiasmarxian.com^ +||taffiesinsack.cyou^ +||tagetoljole.shop^ +||tagetoloffic.shop^ +||taginova.xyz^ +||tagivi.com^ +||tagsoviet.com^ +||tahdshrijvixj.online^ +||tahgookrefalls.qpon^ +||tahlhdedysdhg.store^ +||tahrqfbavxmxf.site^ +||tahsilscarnac.qpon^ +||tahtvvqhjnzgi.site^ +||tahwox.com^ +||taiiljyndvpii.website^ +||taikmhgkfngjx.today^ +||taildisturbing.com^ +||tailfoolproof.com^ +||tailingsoorah.cfd^ +||tailstories.biz^ +||taintereciter.shop^ +||taiozrhfgkbsw.online^ +||tairgercitator.cyou^ +||taizibwgcfhwd.one^ +||takeallsoft.ru^ +||takecareproduct.com^ +||takefulmessily.shop^ +||takelnk.com^ +||takemanagerfluffy.com^ +||takeoverpact.com^ +||takeoverrings.com^ +||takeovershonesunflower.com^ +||takeyouforward.co^ +||talahibyeasty.cyou^ +||talajeguttier.qpon^ +||talckyslodder.top^ +||talcoidsakis.com^ +||talealfaki.cyou^ +||talesapricot.com^ +||talesteak.com^ +||talkativeend.com^ +||talkdodgeticket.com^ +||talkscreativity.com^ +||tallcoconutencounter.com^ +||talldoubted.com^ +||tallmentally.com^ +||tallthirsty.com^ +||talroebnwhbif.space^ +||taluhetviciousanorexy.cfd^ +||tamablejuntodewitt.qpon^ +||tamarixramanaswaypost.cyou^ +||taminemyricas.shop^ +||taminyunsmart.cfd^ +||tampionsley.com^ +||tamurepiercedcuracoa.cfd^ +||tamxlmwxtizil.website^ +||tanceteventu.com^ +||tandavawhorly.cfd^ +||taneemoting.qpon^ +||tangerineprestigiousbehaved.com^ +||tangible-guarantee.pro^ +||tangiblearroganceride.com^ +||tanguintempeh.shop^ +||tankfangspain.com^ +||tankingbaklawa.shop^ +||tankroyaldivide.com^ +||tannedeluder.cyou^ +||tannedposes.cfd^ +||tannideilocano.qpon^ +||tanninschist.qpon^ +||tansnautics.cfd^ +||tantivyarrack.qpon^ +||tantivymetus.cfd^ +||tantocitoles.shop^ +||tantoemarcid.cyou^ +||tanvvybruhuju.website^ +||tanyardfurcae.shop^ +||tanzyguarrau.cyou^ +||taoyinbiacid.com^ +||tapakarn.qpon^ +||tapchibitcoin.care^ +||tapdb.net^ +||tapecompensationinjustice.com^ +||taperlyiuds.com^ +||tapetismaiolikees.qpon^ +||taphriayachted.qpon^ +||tapingferocitymadeira.com^ +||tapioni.com^ +||tapjoyads.com^ +||taposaupbend.com^ +||taproomarrange.shop^ +||taproomcypsela.qpon^ +||tapulgospoda.com^ +||tarachellomatapan.cfd^ +||tarazedpirot.shop^ +||tarbleseri.cfd^ +||tarbushpteris.qpon^ +||tardecto.cyou^ +||tardierrouges.com^ +||tardleuruturiglet.cyou^ +||targeta41.net^ +||targetmatch.co^ +||targetmusty.com^ +||targetpilothermichermic.com^ +||tarhoodpreessans.cyou^ +||tarhszehtlxis.website^ +||taririjauntswalloch.cfd^ +||tarnlxpghvqmx.site^ +||tarochaledspiting.qpon^ +||tarokortetdehair.cyou^ +||taroksdesmose.qpon^ +||tarotaffirm.com^ +||tarpagainst.qpon^ +||tarreyieldwaned.qpon^ +||tarrishconstr.cfd^ +||tarrishquinbotein.cfd^ +||tarsingularsubmerge.com^ +||tart-excitement.pro^ +||tarterbawneenhydage.qpon^ +||tartlay.com^ +||tartlyreticle.cfd^ +||tarvedossed.cyou^ +||tarzanbajoccopooli.cyou^ +||tarzansaminate.cfd^ +||taskageenter.cyou^ +||tasktrivialaggregated.com^ +||tassalpatente.cfd^ +||tassardarthelchurns.cyou^ +||tassiesbedawee.cfd^ +||tassoopomp.qpon^ +||tastedaftknowledge.com^ +||tastejapan.life^ +||tastercloskey.com^ +||tasty-permission.com^ +||tatamisfooner.cyou^ +||tatersbilobed.com^ +||tatfuneyuwbqk.site^ +||tatiegeneat.cfd^ +||tatlertarpon.shop^ +||tattered-regular.com^ +||tattered-sale.com^ +||tatxbrshtjgfs.site^ +||taughtloudlydemise.com^ +||taujxhyhmgwbd.website^ +||tauladiapery.qpon^ +||taupoorlops.cyou^ +||taurincabbiesskiddoo.qpon^ +||tauryldecanol.shop^ +||taut-machine.pro^ +||taut-nature.com^ +||tautedsessa.qpon^ +||tautingtortes.com^ +||tautogwhileengruidae.cfd^ +||tauypraxyreu.com^ +||tavlomikyionr.website^ +||tavryuhcshdsr.website^ +||tawersmylodonvoulge.qpon^ +||tawingteutons.cyou^ +||taxaffections.com^ +||taxdifferenceinvestor.com^ +||taxieskelehsibbs.cyou^ +||taxiingablend.qpon^ +||taxissunroom.com^ +||taxitesgyal.top^ +||taxiticworsts.cyou^ +||taycdjrtzhccg.space^ +||taypwqoprmcap.space^ +||tazlo.cloud^ +||tb6ugk975vxc74xg3pxq6ett3qklnh.cfd^ +||tbavixmkrnspx.space^ +||tbcwxfln.com^ +||tbdhrjsywgjcq.tech^ +||tbezwqeyyioqa.site^ +||tbgwyrxwtmfrh.site^ +||tbhjdhxzkorni.website^ +||tbimsmdlxsiam.website^ +||tblsbzfxvamuk.website^ +||tbmoxtvskajqz.space^ +||tbpot.com^ +||tbqmmivolbygsly.com^ +||tburybrcvclih.online^ +||tbwqvufmxnyst.space^ +||tcaigdyrlxeox.online^ +||tcdjvujzfhyoc.online^ +||tcdwm.com^ +||tce4pi823ckpu6ooulw.cfd^ +||tcgikincfivus.online^ +||tcgjhulupwqpc.space^ +||tcihfguqejvsf.online^ +||tcjaslvajucmt.online^ +||tcmcpbjvotuaa.space^ +||tcolfwuhtwqln.space^ +||tcpcharms.com^ +||tcpedpdcfkcgo.rocks^ +||tcpglvrgiaezc.website^ +||tcppu.com^ +||tcrtidleivyai.space^ +||tctepwisejwvc.site^ +||tctrbtdxbscuw.site^ +||tcufahfu.com^ +||tcvlrtqsfqkbo.store^ +||tcwgmjsjgtsrm.space^ +||tcxjkoekoqvkj.website^ +||tcxoatcplzqai.website^ +||td5xffxsx4.com^ +||tdbcctiulenif.site^ +||tdckosagbzsoz.online^ +||tdgubsetqwufm.online^ +||tdhvk8we.xyz^ +||tdiziyfbhydbu.online^ +||tdkaapcziaoty.website^ +||tdkwsppseymhf.space^ +||tdmogwlkwcgiu.site^ +||tdmxtevtyghrgi.com^ +||tdnqgundzquge.website^ +||tdopeofamsccp.website^ +||tdqptcua.com^ +||tdrczdscckdwu.online^ +||tdrfecial.shop^ +||tdsafe.org^ +||tdslinetraffic.com^ +||tdzegpeatygun.tech^ +||te73zxl21o9qll88z2hr1yt1upij.cfd^ +||teacakehobbedniall.cfd^ +||teacartvibes.cyou^ +||teacherrecollect.com^ +||teachgallop.com^ +||teads.tv^ +||teadumiccdoct.website^ +||teahkjydqqbnobg.com^ +||teamspomposity.com^ +||teamswarehousedaffodil.com^ +||teapotloquat.com^ +||tearingrustsally.com^ +||tearingtastes.com^ +||tearpitboozier.cyou^ +||teasemilesnewlywed.com^ +||teaspoonwrenpursue.com^ +||tebahqhzjdcom.online^ +||techilymuskish.qpon^ +||techiteration.com^ +||techixir.com^ +||techneparlous.com^ +||technepriertechnic.cyou^ +||technicalfromfactories.com^ +||technicalitychin.com^ +||technicalityindependencesting.com^ +||technicarcuate.cfd^ +||techniciancocoon.com^ +||technologies2024.net^ +||technologies25.com^ +||technologies2radar.net^ +||technologies3000.net^ +||technologies4790.com^ +||technologies57.com^ +||technologiesto4004.com^ +||technologieswith8080.net^ +||technologieswithinvisible.com^ +||technoratimedia.com^ +||technoriseweb.co.in^ +||technoshadows.com^ +||techreviewtech.com^ +||tecjkeofsejyg.site^ +||teczoonbdxxug.site^ +||teddygroups.com^ +||tediousdisinterested.com^ +||tediousrelinquish.com^ +||tediouswasp.com^ +||tedmphcnzzere.website^ +||tedrejozqqqpm.site^ +||teediarrhoea.com^ +||teedtosherorbate.cyou^ +||teeforgotten.com^ +||teeming-comfortable.com^ +||teemnooseeliminate.com^ +||teemtechnique.com^ +||teenersqueueunbear.cyou^ +||teensexgfs.com^ +||teentitsass.com^ +||teethesmitsvah.com^ +||teethundercoverhowever.com^ +||teethunite.com^ +||teetingmaku.cfd^ +||teetscaffer.qpon^ +||teewunsvdpwcs.online^ +||teflonmalie.com^ +||tegmentlettrinclue.cfd^ +||teimyesrhvruc.space^ +||teindpumpage.cfd^ +||teindschutney.cfd^ +||teindsfritt.com^ +||tekkenosier.cfd^ +||teksishe.net^ +||tektosnuthook.shop^ +||tel-tel-fie.com^ +||telechargementdirect.net^ +||telecomout502.net^ +||teledusdoeg.com^ +||telegraphfamouscucumbers.com^ +||teleiaplumierostmark.cfd^ +||telemansnacks.qpon^ +||televisiongrownupcrowd.com^ +||telexedassoil.shop^ +||telferrukh.cyou^ +||telliesmawks.com^ +||telllwrite.com^ +||tellsorganfederal.com^ +||tellsvastpuff.com^ +||tellvisual.com^ +||tellynativescalumny.com^ +||teltdnnvbbmxq.online^ +||teltlowlier.com^ +||temksrtd.net^ +||tempehsmyxo.qpon^ +||temperaturebassaccidentally.com^ +||tempercurtexperimental.com^ +||temperweekly.com^ +||temporallumbertextmessage.com^ +||temporalsewingsphere.com^ +||temporaryallusion.com^ +||temtvlehkhrbmdi.com^ +||tenablegliosis.qpon^ +||tenadfpgwocuw.website^ +||tenantrip.com^ +||tend-new.com^ +||tenddesigner.com^ +||tendencyvalleysrod.com^ +||tenderlybatch.com^ +||teneralfleecy.qpon^ +||tenlets.com^ +||tennisnewlins.com^ +||tenonblenchcoraled.qpon^ +||tenorspeccary.qpon^ +||tensecross.pro^ +||tenserrelents.com^ +||tensesurround.pro^ +||tensingequateddories.qpon^ +||tensionbabble.com^ +||tensivemoonman.cfd^ +||tentaclesbirthday.com^ +||tentaclespencil.com^ +||tenterscarred.qpon^ +||tenuisoromo.cfd^ +||tenutiwisdoms.cfd^ +||teoaxzazksyuo.site^ +||teotnajhxmwts.site^ +||tepalscancanchugger.qpon^ +||tepid-permission.com^ +||tepidpolicy.com^ +||tepinursh.com^ +||tepsmyvnxfssq.space^ +||teqdutdxiwzwd.one^ +||teracreative.com^ +||teraticsquelch.cyou^ +||terbit2.com^ +||terciogouge.com^ +||terfumescom.com^ +||tergaaverin.cfd^ +||tergitemanacus.cyou^ +||termagetepehuaabb.qpon^ +||termcolonialhedwig.com^ +||terminalinmatesupreme.com^ +||terminalinreplicas.com^ +||termsvictim.com^ +||termunawake.qpon^ +||ternarlogoutphossy.qpon^ +||ternehydnum.cfd^ +||terneryeducand.shop^ +||terpensomdel.qpon^ +||terraar68.com^ +||terraceinterfering.com^ +||terrapush.com^ +||terrasdsdstd.com^ +||terretherbert.qpon^ +||terribleroll.pro^ +||terriblesource.com^ +||terriblycompile.com^ +||terrierpoleman.cfd^ +||terrificdark.com^ +||terrifymages.cfd^ +||terryreverbanglish.cfd^ +||tertonorchil.cyou^ +||terzodouse.cfd^ +||tesixsyfkmisv.website^ +||tesixwsypxacc.online^ +||tesmgbltszyxb.online^ +||testedcarp.pro^ +||testespulluslamin.cyou^ +||testrole.care^ +||testtackleclergy.com^ +||testtubeabilityinvited.com^ +||tetqudyeycomy.site^ +||tetrylargute.cfd^ +||tetvxsedkmlgh.site^ +||tevfosejxalzh.website^ +||tevgrruahhvgy.website^ +||tevitpcfav.com^ +||tevvbgbjiv.com^ +||tewbraatobuan.site^ +||tewingclours.shop^ +||textbookenvious.com^ +||textbookextremelycivic.com^ +||textbookfilamentguidance.com^ +||textileintersectionroam.com^ +||textilerugger.qpon^ +||textureblaze.co^ +||texzjbsfcynqr.site^ +||tezkerebeigel.cfd^ +||tf1xu32n.xyz^ +||tfafvayivvbsj.website^ +||tfb7jc.de^ +||tfbgabfweyewb.site^ +||tfbwbzmzisbif.online^ +||tfeableandwo.org^ +||tfflrmlygarjj.online^ +||tfjaycmztwmdp.site^ +||tfkszqkgogppv.site^ +||tfla.xyz^ +||tflurbzcqgpii.website^ +||tfmsiuwpqkxue.site^ +||tfnvuckb.pro^ +||tfofsigcesuru.space^ +||tfomxpkyvdzyi.space^ +||tfosrv.com^ +||tfqrifustrybg.store^ +||tfrkbyualptil.online^ +||tftfbezn.com^ +||tfwjtrkuueobz.online^ +||tfxipmcetrqiu.website^ +||tfxswxtxcickc.space^ +||tfylfiba.com^ +||tgcapgsjdizdv.website^ +||tgel2ebtx.ru^ +||tgexkaoawitwn.online^ +||tggeeygcdemyb.site^ +||tggpgfvgyhgps.website^ +||tgjonodnifuxu.online^ +||tgku676zvz6bqm5n8f81u9j5qri1f218nu.cfd^ +||tgmbxplmlsclp.space^ +||tgpfyjvaaijan.site^ +||tguyxzkrxgzqt.online^ +||thackedmacaca.cyou^ +||thackuprise.cyou^ +||thagrechulo.com^ +||thamengabsent.qpon^ +||thanedigramtickie.cfd^ +||thankcrueler.cyou^ +||thankdilapidation.com^ +||thankfuldirection.com^ +||thankfultale.pro^ +||thanksgivingcarpetspark.com^ +||thanksgivingdelights.com^ +||thanksgivingdelights.name^ +||thanosofcos5.com^ +||thatllguider.cyou^ +||thatmonkeybites3.com^ +||thaugnaixi.net^ +||thavxaiwvxtja.website^ +||thawbootsamplitude.com^ +||thawieratlases.cfd^ +||thawnappy.com^ +||thbfepqqqebde.online^ +||thcjsbzaqanjwx.com^ +||the-ozone-project.com^ +||theadgateway.com^ +||theadsparks.com^ +||theapentode.qpon^ +||thebestdates.net^ +||thebestgame2020.com^ +||thebetterdealz.com^ +||thecarconnections.com^ +||thecialoktaanidian.cyou^ +||thecoreadv.com^ +||theeptoah.com^ +||theetheks.com^ +||theeverydayplay.com^ +||thefenceanddeckguys.com^ +||theflirtfiesta.com^ +||theftpitchercapable.com^ +||theglossonline.com^ +||theinesoutflow.qpon^ +||theirbellstudio.co^ +||theirgult.cyou^ +||theirpeninsula.com^ +||theirscarpenter.com^ +||theirsneedful.com^ +||theme2statistics.com^ +||themselvespresentationfavourable.com^ +||thenpreservationticket.com^ +||theodisrobe.qpon^ +||theonecdn.com^ +||theonesstoodtheirground.com^ +||theoreticalchatter.com^ +||theoreticalmagnanimityextensive.com^ +||theoryoutservices.net^ +||theorysachet.qpon^ +||theowcamaieu.cyou^ +||theplayadvisor.com^ +||thereafterblazingclass.com^ +||thereforeprisoniso.com^ +||thereofskeel.qpon^ +||theresehoodingalcippe.qpon^ +||thermometeranalogyincomprehensible.com^ +||thermometerbailed.com^ +||thermometercourtroomfusion.com^ +||thermometerpushfulabnegate.com^ +||thermometerworm.com^ +||thermoslichensmarli.cfd^ +||therocketlanguages.com^ +||thesaurusdefrostwoodlands.com^ +||thesisadornpathetic.com^ +||thetrendytales.com^ +||theweblocker.net^ +||theyaoukombu.cyou^ +||theydmatelotmorule.cyou^ +||thgdprtfgudrt.site^ +||thgrekourrkag.site^ +||thhgsjcgqbvgg.site^ +||thicketsaidwhole.com^ +||thickmaggot.com^ +||thickteaching.com^ +||thieflamppost.com^ +||thighlemonadejell.com^ +||thighsympusammer.qpon^ +||thillssurlier.qpon^ +||thimblestrangearchitect.com^ +||thingsmadenavy.com^ +||thinjawbroadly.com^ +||thinkerriddled.qpon^ +||thinkslightershape.com^ +||thinksuggest.org^ +||thinnerbiting.com^ +||thinnerlanguish.com^ +||thinnerwithdrewforbear.com^ +||third-growth.pro^ +||third-tracking.com^ +||thirddropfellan.com^ +||thirdgas.com^ +||thirdinhabit.com^ +||thirstybiologytells.com^ +||thirstyquiet.com^ +||thirteenpun.com^ +||thiscdn.com^ +||thisiswaldo.com^ +||thisrocks.top^ +||thjxvlrjnbqbs.store^ +||thlkctdfqkewue.com^ +||thnsyemjiwdvwg.com^ +||tholor.com^ +||thomaspigeon.com^ +||thonalbxtwvkw.site^ +||thongmilletbrutally.com^ +||thongrooklikelihood.com^ +||thoomdecoys.cfd^ +||thoriasreagreesassy.cyou^ +||thorncontinuepalm.com^ +||thornenbotchy.qpon^ +||thoroughloweromission.com^ +||thoroughlyblisterpelt.com^ +||thoroughlyripepedigree.com^ +||thorperandomaccounts.com^ +||thoseeducation.com^ +||thoseplace.pro^ +||thoseposts.qpon^ +||thoughtfulend.pro^ +||thoughtfulperiodicescalator.com^ +||thoughtleadr.com^ +||thoughtnipple.com^ +||thracesguelf.cfd^ +||thrawedxarque.cfd^ +||threatdetect.org^ +||threatenletters.com^ +||threavedouceur.cyou^ +||threefortressfork.com^ +||threepdefleazillah.cfd^ +||threewoodslose.com^ +||threpeegohood.cfd^ +||thresholdaccommodate.com^ +||thresholdskill.com^ +||thriftextrait.shop^ +||thrivescreatic.cfd^ +||throatentrepreneur.com^ +||throbbingcometprobability.com^ +||throbbingdisplaystub.com^ +||throbbingvagueforms.com^ +||throbcrunchsurely.com^ +||throddyoxfly.qpon^ +||throngbuildingunborn.com^ +||thronosgeneura.com^ +||thropelashes.cyou^ +||throughalivemedication.com^ +||throughlnk.com^ +||throughoutcrowninstrument.com^ +||throughputout5555.com^ +||throwcommercial.com^ +||thrtamykpggls.space^ +||thrtle.com^ +||thrustinextricable.com^ +||thtrsihwdznav.site^ +||thubanoa.com^ +||thugincompatibleme.com^ +||thujabeng.qpon^ +||thujashardly.cyou^ +||thuliasbangos.cyou^ +||thuliasseck.qpon^ +||thulrnephews.qpon^ +||thumbsakund.cfd^ +||thump-night-stand.com^ +||thunderapostrophefunds.com^ +||thunderhead.com^ +||thunderous-army.com^ +||thunderousshirt.pro^ +||thurnflfant.com^ +||thushandkerchiefcentered.com^ +||thvojufzktuml.website^ +||thwduaktyeuvh.space^ +||thyhsuoyvcgoh.website^ +||thylouple.com^ +||thyminebrike.cyou^ +||thyroldluckful.cyou^ +||thyselfbridled.cfd^ +||thzowqlddhevp.space^ +||thzqzvwmpxrdm.website^ +||tialfxfcipqnq.site^ +||tiamatols.qpon^ +||tiangzwrvnify.website^ +||tiaoconf.qpon^ +||tibacta.com^ +||tibiadoek.cyou^ +||ticielongsuched.com^ +||ticismovernemen.org^ +||tickcabinrender.com^ +||tickersoficina.cfd^ +||ticketswinning.com^ +||tickledyitemanis.cyou^ +||tickleinclosetried.com^ +||tictacfrison.com^ +||tictacsbigging.cyou^ +||tidaltv.com^ +||tiddleyales.cfd^ +||tide-cdn.lol^ +||tide-cdn.online^ +||tidedaybreakdiverge.com^ +||tidilylattensnetters.qpon^ +||tidilypeho.shop^ +||tidingscoerced.cfd^ +||tidjufquvobvr.space^ +||tidleylungan.shop^ +||tidy-idea.com^ +||tidy-winter.pro^ +||tidyingconfuseworm.com^ +||tiectkogarecs.space^ +||tiedexceed.com^ +||tiedhamadjoin.com^ +||tieluzdhmokbw.website^ +||tiercedthae.com^ +||tiesprosos.qpon^ +||tifptxvtraamu.store^ +||tigepuffier.cyou^ +||tigerbrluck.com^ +||tightenhoodmensilvery.qpon^ +||tigkeebnv.com^ +||tiglicunwitty.cyou^ +||tiglonssaqib.cyou^ +||tignumhexogen.cyou^ +||tigroiddry.shop^ +||tihmjppaavrmz.site^ +||tihzzgtucmnqp.online^ +||tikeanswersaureous.cyou^ +||tikislifeyotarian.cfd^ +||tiklvzlclrxhf.store^ +||tiktakz.xyz^ +||tiktok-fly.com^ +||tikva-1.com^ +||tilearoma.com^ +||tilednonbusy.shop^ +||tilesremedy.qpon^ +||tiliadomajig.qpon^ +||tillershomme.cfd^ +||tilstupi.in^ +||tiltgardenheadlight.com^ +||tilttrk.com^ +||tiltwin.com^ +||tilxgwpyoigje.store^ +||timauayore.qpon^ +||timbalejargoontrickie.cfd^ +||timeforagreement.com^ +||timesmonarchcivil.com^ +||timetoagree.com^ +||timiasunslit.qpon^ +||timidlyindy.cyou^ +||timingdownvolatile.com^ +||timingrunaway.com^ +||timot-cvk.info^ +||timsef.com^ +||timspar.cfd^ +||tineaacetary.cfd^ +||tineasdachas.cyou^ +||tineidmelascuarto.cfd^ +||tineidsreseeds.com^ +||tinifygzkncqu.website^ +||tinkerwidth.com^ +||tinletmalheur.cfd^ +||tinningtriaryl.qpon^ +||tinselspecifically.com^ +||tinsus.com^ +||tinted-run.com^ +||tintersloggish.com^ +||tintskrag.qpon^ +||tiny-atmosphere.com^ +||tinyblobs.com^ +||tinypickycomic.com^ +||tinyplywood.com^ +||tinysentgrowled.com^ +||tiodjfkmykcyi.online^ +||tionsandindeedther.org^ +||tiotezbvkfggq.space^ +||tipburncaiman.cyou^ +||tipcatslemanry.qpon^ +||tipcompoundextreme.com^ +||tipispoxing.qpon^ +||tipplyingests.cfd^ +||tipsembankment.com^ +||tipsilymiaulsredawn.cfd^ +||tipslyrev.com^ +||tipspasswords.com^ +||tiptailmannie.com^ +||tiptoedimports.cfd^ +||tiptoeskilldetectives.com^ +||tipulidburling.com^ +||tiragecystis.cfd^ +||tircyqdomqupu.website^ +||tiredamazingly.com^ +||tiredelection.com^ +||tiresomesolemnly.com^ +||tirlingtachiol.com^ +||tisdfnjzczmbh.space^ +||tiswingoings.cfd^ +||titanads1.com^ +||titanads2.com^ +||titanads3.com^ +||titanads4.com^ +||titaniafickly.cyou^ +||titersprawned.shop^ +||tithedsphagia.cfd^ +||titiansfisted.cyou^ +||titlenesphalma.qpon^ +||titoddle.cyou^ +||titratewinner.cfd^ +||tiuyamhwqljgm.site^ +||tivqggcgnqlom.space^ +||tiwaffrm.in^ +||tiwoxxmrugfzh.online^ +||tiymvltgbllto.site^ +||tjajxvdaqaywp.online^ +||tjcgzjovllhtr.com^ +||tjepekenkccqi.online^ +||tjhoocqyksmsm.site^ +||tjimliqvsb.com^ +||tjkcibklcapsx.space^ +||tjkdypxpsmnap.online^ +||tjkkyvtyfjjeu.space^ +||tjkqgceypcapf.store^ +||tjktbalmpgghx.space^ +||tjlsvkucubbgl.space^ +||tjmchkmpqfszj.online^ +||tjmsqsemqyshc.website^ +||tjndwmaotgyix.online^ +||tjosjuihqnxke.online^ +||tjpkgnwvighek.click^ +||tjqwbnhnazllz.online^ +||tjtawartfkjpb.site^ +||tjtsctymepnds.space^ +||tjwrqljqcawjj.online^ +||tjwsg.com^ +||tjwveazohmjzd.online^ +||tjyhdedwnoqwh.site^ +||tk18lm5p9i7cnr7rci7zlm.cfd^ +||tkavurbmhzrlj.space^ +||tkbo.com^ +||tkddcpuc.com^ +||tkdjmibffvzst.online^ +||tkdlxkbgttsuj.space^ +||tkdswyljquygm.website^ +||tkfkiodsdgnea.online^ +||tkgkobgpcislx.store^ +||tkiafjcina.com^ +||tkivjgacflyuy.online^ +||tkiwpaapzl.com^ +||tkklnvsmgomrh.online^ +||tklgigbmkfupa.online^ +||tklsxniuurtqa.online^ +||tklwicfrixwer.website^ +||tkngeviglxsti.store^ +||tknjwonueowwc.online^ +||tknoxqvmznsot.space^ +||tknxqrbfxmaq.com^ +||tkpopp.com^ +||tkqjtaurqpltn.store^ +||tkrwiwimyxfehm.com^ +||tktzgajycssox.site^ +||tkwkrdsoaldaw.com^ +||tkyjmfwjnzyov.site^ +||tkytthdefsrmf.online^ +||tkzcgceruyjcz.online^ +||tl2go.com^ +||tl7x928g7l3ppnqnc7ngy8wue3qgkvnb.cfd^ +||tlacobrerd.cyou^ +||tlawfknxxcgay.space^ +||tlbiqmqbefcty.space^ +||tlcfhttbxdbhc.site^ +||tlcpkidysoqqf.space^ +||tlcpvkkboxamm.website^ +||tldiozcisbbbu.site^ +||tleveweavj.com^ +||tlfeivdeybass.store^ +||tlgpglndhwfvq.site^ +||tlgpjfcwkmsdt.com^ +||tlhbzimbrhqbg.online^ +||tlhrenkzzrwzc.online^ +||tliplyornbfuz.site^ +||tlkhivxrvlrcb.store^ +||tlllccmkxwcze.website^ +||tlmeaonjgwleq.online^ +||tlmsrqbupfivk.site^ +||tlnzytcoxxpuy.com^ +||tlpkhtssklgtq.store^ +||tlpooimiqxwrc.online^ +||tlpvbxfqcwviq.website^ +||tlqjonbqwuwmp.online^ +||tlrkcj17.de^ +||tltftozhercmx.website^ +||tltqqcmakfpap.com^ +||tltsbsp.com^ +||tlucfqhtavxyx.space^ +||tluhigpbrybww.space^ +||tluihoeadocjs.store^ +||tlwkfwnww.com^ +||tlymkoakdd.com^ +||tlzwfptcxztnx.space^ +||tm5kpprikka.com^ +||tmb5trk.com^ +||tmbiounhsqufo.online^ +||tmbzzscswoyir.space^ +||tmedapgqtmqhs.store^ +||tmesesrebills.cfd^ +||tmfngnuqxzpux.online^ +||tmftllgmyklie.online^ +||tmjlhukzzbhut.online^ +||tmjrmpkkgatjh.website^ +||tmkxqnovdozcc.space^ +||tmluyaszhetwu.online^ +||tmmjwelxryxod.site^ +||tmmunzeyobwst.online^ +||tmnkaqnaubucu.site^ +||tmokdsxzhowt.com^ +||tmopcaxczgrgb.store^ +||tmpevbnnasziy.site^ +||tmpqccktfymwv.online^ +||tmrjmp.com^ +||tmrkyvvycpy.com^ +||tmuminkmobw5tfmhqh9kex24ow39.cfd^ +||tmwheidhghdphay.com^ +||tmwzkukvxwdzl.website^ +||tmyy7u24p2tplyx3wicjg9x6e3wihqbf52.rest^ +||tmztsogzhbbwg.com^ +||tnb8yc2gi52epb5.cfd^ +||tncycnhulwray.website^ +||tndkwerwq.com^ +||tnegeszxnuwpo.space^ +||tnf4poyzfqey7o.cfd^ +||tnfjlukzibewa.space^ +||tnfnfuvbfllyn.website^ +||tnfqivurduflf.store^ +||tnghndakqrudy.website^ +||tnijhexxbrdag.online^ +||tnirtdbtlbawa.space^ +||tnksrlatsbm.com^ +||tnlmteguifelr.online^ +||tnlnblwozgdbi.site^ +||tnlszozefygrt.online^ +||tnmci.com^ +||tnmdthuefllhf.site^ +||tnnfecqadqzck.online^ +||tnnugxbvcszsn.site^ +||tnomtrfvxvlza.space^ +||tnqxqyxvnjmb.com^ +||tnrlowinajjgu.site^ +||tnsgzlbrotxir.store^ +||tnsmesfbmzqqw.online^ +||tnsqdkejtopir.site^ +||tntmvohksuaju.space^ +||tntnjpusemycs.website^ +||tntxtyapobjrk.space^ +||tnuiqidpolkmy.com^ +||tnujzhfuslgwm.space^ +||tnxgvdzwqpizt.site^ +||tnxkpmfknbiwr.space^ +||tnxwjnqyvosfj.website^ +||tnym278r513h9o4k66b3y8h9r.cfd^ +||tnywznxlinxja.website^ +||tnzlmhzidwjzq.fun^ +||tnzttwwahtkwb.website^ +||to4tleic45g3tm5w9x5.cfd^ +||toasterenring.qpon^ +||toastparasolcrush.com^ +||toastrowingthrilled.com^ +||tobaltoyon.com^ +||tobipovsem.com^ +||toboads.com^ +||tocswcbbwbnjn.space^ +||todaysordid.cfd^ +||toddhclbvxmxd.site^ +||toddlecausebeeper.com^ +||todopick.com^ +||toebolaofvpdg.com^ +||toenailfairnessvictorious.com^ +||toenailmushensues.cfd^ +||toequiet.website^ +||toesgrill.com^ +||toffeeemulation.com^ +||tofinaukncecafv.org^ +||togetherefwuko.org^ +||toggedmowie.shop^ +||tognrhqgiyaja.online^ +||togotosleepbutju.com^ +||togtlehrmen.cfd^ +||togtmicah.cfd^ +||togvnrchpuflt.site^ +||togxfwvfslruy.space^ +||tohoef.com^ +||toibjavyncxnc.site^ +||toilerstooart.cyou^ +||toiletlaceier.shop^ +||toiletpaper.life^ +||toilfulpooa.cyou^ +||toioptqrfyztj.website^ +||toitorgue.qpon^ +||tojdqzltksseg.online^ +||tokbkljsqzntz.online^ +||tokenads.com^ +||tokensguggled.com^ +||tokyomansion.online^ +||tokyotossycay.qpon^ +||tokyowatch.cc^ +||tolansgnash.cyou^ +||tolanslucible.qpon^ +||toldaspirationpointy.com^ +||toledoslongingrayas.qpon^ +||toledosmonarch.cyou^ +||tolerancewarily.com^ +||tolerantdire.com^ +||tolerateshyrenamed.com^ +||tollmensakiyeh.cfd^ +||toltanax.cyou^ +||tomandligula.com^ +||tomandrooped.cyou^ +||tomatoqqamber.click^ +||tombgenemajor.com^ +||tombshaying.cyou^ +||tombsspinner.com^ +||tomecards.com^ +||tomefine.com^ +||tomefuldunch.cfd^ +||tomejkwjlqyoz.site^ +||tomialwauken.cyou^ +||tominspialdolcino.cfd^ +||tomladvert.com^ +||tomlldahehun.org^ +||tommyholysnapped.com^ +||tommylearningskilled.com^ +||tomorrowlemonade.com^ +||tonalnaoswraths.cyou^ +||tonemeatwain.cfd^ +||tonemedia.com^ +||tongactless.cyou^ +||tongasvarical.cyou^ +||tonicgoverness.com^ +||tonicheaviness.com^ +||tonicsgullets.shop^ +||tonjonduppa.com^ +||tonngmhhvemqr.space^ +||tonsilresolvedbark.com^ +||tonsvewbbofzi.site^ +||tontrinevengre.com^ +||tonytumain.qpon^ +||too6jhvw.xyz^ +||tooledundon.com^ +||toolpreoccupy.com^ +||toolsorganized.com^ +||tooniboy.com^ +||toonsnylons.com^ +||toopsoug.net^ +||tooqtzeiaohn.com^ +||tootarmata.cfd^ +||tootersilysia.com^ +||toothbrushascertainhelped.com^ +||toothbrushsucceedsilent.com^ +||toothygorb.qpon^ +||tootlarker.com^ +||top-best.com^ +||topadsservices.com^ +||topassstern.cfd^ +||topbetfast.com^ +||topblockchainsolutions.nl^ +||topcpmcreativeformat.com^ +||topcreativeformat.com^ +||topdisplay.xyz^ +||topdisplaycontent.com^ +||topdisplayformat.com^ +||topdisplaynetwork.com^ +||topexmlorgmx.com^ +||tophaw.com^ +||tophousblued.cfd^ +||topiccorruption.com^ +||topicmagnitude.com^ +||topincome.cc^ +||topjqxmuwimws.site^ +||topjyrdikvtlh.site^ +||topmostshrink.com^ +||topmostsincereconsolation.com^ +||topnews-24.com^ +||topnewsgo.com^ +||topodat.info^ +||topprofitablecpm.com^ +||topprofitablegate.com^ +||toppxbbaqyknm.website^ +||topqualitylink.com^ +||toprailsuttees.qpon^ +||toprevenuecpmnetwork.com^ +||toprevenuegate.com^ +||topropeupright.cfd^ +||topsexmovs.com^ +||topsrcs.com^ +||toptoys.store^ +||toptrendyinc.com^ +||toptzgprpkvhp.website^ +||topvcnlwfglpv.site^ +||topvillafinishing.com^ +||toquetbircher.com^ +||toraschesty.cfd^ +||torchetreshowrievers.cfd^ +||torchfriendlypay.com^ +||torchongardeenshoplet.cfd^ +||torealiukzemydr.org^ +||torejneshwuup.site^ +||toriccele.cyou^ +||toriesmetopon.com^ +||toriiargyll.cfd^ +||torioluor.com^ +||tornactivity.pro^ +||torninteraction.pro^ +||tornmonitor.pro^ +||tornoteregga.cfd^ +||tornsteeringmimic.com^ +||tornvoiduneven.com^ +||torrent-protection.com^ +||tortesliviermoloker.qpon^ +||torulashootee.qpon^ +||torulasyaff.com^ +||tosfeed.com^ +||toshermarrons.cyou^ +||tossfaceboother.cyou^ +||tossingtankage.cyou^ +||tossingvivid.com^ +||tosswealthy.com^ +||totaladblock.com^ +||totalresponsibilityeconomics.com^ +||totemcash.com^ +||totemicmetisse.cyou^ +||totlnkbn.com^ +||totlnkcl.com^ +||totncgkfrvsje.site^ +||totterstyrax.cfd^ +||totterygobelin.qpon^ +||totymanglave.com^ +||touchdowndeveloping.com^ +||toucheskey.cyou^ +||touchstronglymuseum.com^ +||touoijshjbkef.online^ +||touristbaconwrath.com^ +||tournamentnoble.com^ +||tourneegriot.qpon^ +||tourneyrapport.qpon^ +||tourukaustoglee.net^ +||tovfgweccuhdw.space^ +||towardconnectionsbat.com^ +||toweleyewitnessrubbing.com^ +||towerhavenet.com^ +||towerjurevisdimers.qpon^ +||towersflimsy.com^ +||towghtruinershahs.cyou^ +||townyomnist.shop^ +||toxanendhhcjx.site^ +||toxauncouch.com^ +||toxemiaseabags.com^ +||toxiconbch.cyou^ +||toxtren.com^ +||toxtysjglzklk.site^ +||toy4factories.com^ +||toyerbuyable.qpon^ +||toylessdispute.cfd^ +||toyostiburon.cyou^ +||tp7zf7mllqfe2iw3l9xq.cfd^ +||tpaytpewgktro.online^ +||tpazitwbrpwwt.online^ +||tpcserve.com^ +||tpdads.com^ +||tpdetjpxyqyap.com^ +||tpdhwgmoelkzh.space^ +||tpdilgpbcgriq.space^ +||tpdpoituqwhqb.space^ +||tpdwm.com^ +||tpejldqbfzton.space^ +||tpficxckbemow.site^ +||tpfjpdizmvpaz.store^ +||tpfoyllqpudvs.space^ +||tpgurriasdusd.site^ +||tpiwuerxwtuyz.online^ +||tpjdszootpiir.online^ +||tpmedia-reactads.com^ +||tpmr.com^ +||tpn134.com^ +||tpnmhqylskzlg.online^ +||tpohimaz.in^ +||tpopfgvlqytlm.online^ +||tpoqbkqesgoig.one^ +||tpovpwtqjeazz.website^ +||tppwkciiypmeh.site^ +||tpubwzwrhdcst.store^ +||tpuelrwfdrnnv.com^ +||tpxhrwevqwdft.site^ +||tpxludqpybpkx.store^ +||tpxxgiegfobee.website^ +||tpywhfidimoxw.site^ +||tpzz2o7jvnej4lji.rest^ +||tqabqqej.com^ +||tqasswdedzudx.online^ +||tqbveqacewwac.online^ +||tqdxwboexwawx.site^ +||tqhhiwipffjuu.website^ +||tqisbudqqjnif.online^ +||tqjkoyonxobs.com^ +||tqjzhlpytkfvz.online^ +||tqkavjeysxgdg.site^ +||tqkyfmdqgwvxx.online^ +||tqlqpxzywbomi.online^ +||tqnogxuqgwlmj.space^ +||tqoktissnsrqqf.com^ +||tqphpshuyxiij.website^ +||tqpuvxhsrcoon.store^ +||tqqixldkdkcvi.site^ +||tqridfwbrbvucae.com^ +||tqrmlgjertjht.online^ +||tqswwgfjomczh.space^ +||tqtlyzaztpngj.site^ +||tqvhbqgvfuq.com^ +||tqytbkhwrtyk.com^ +||tr-boost.com^ +||tr-bouncer.com^ +||tr-monday.xyz^ +||tr-rollers.xyz^ +||tr-usual.xyz^ +||tr9n6lto.xyz^ +||trabucoungraspchob.cyou^ +||tracedkenos.cyou^ +||traceslocallynotable.com^ +||track-victoriadates.com^ +||track.afrsportsbetting.com^ +||track.bwclk.com^ +||track.totalav.com^ +||track4ref.com^ +||trackad.cz^ +||trackcherry.com^ +||trackcitg.com^ +||tracker-2.com^ +||tracker-tds.info^ +||trackerrr.com^ +||tracki.click^ +||tracking-aws-5.com^ +||trackingmembers.com^ +||trackingtraffo.com^ +||trackmundo.com^ +||tracks20.com^ +||tracksfaster.com^ +||tracksgloss.com^ +||trackspeeder.com^ +||trackstracker.com^ +||tracktds.com^ +||tracktepor.shop^ +||tracktilldeath.club^ +||trackvoluum.com^ +||trackwilltrk.com^ +||trackzd.com^ +||tracot.com^ +||tradbypass.com^ +||tradeadexchange.com^ +||traditionalboycottflung.com^ +||traditionblindness.com^ +||traffc.info^ +||traffdaq.com^ +||traffic.club^ +||trafficad-biz.com^ +||trafficbass.com^ +||trafficborder.com^ +||trafficdecisions.com^ +||trafficdok.com^ +||trafficfactory.biz^ +||traffichunt.com^ +||trafficircles.com^ +||trafficjunky.net^ +||trafficlide.com^ +||trafficmediaserver.com^ +||trafficmoose.com^ +||trafficshop.com^ +||traffly.net^ +||traffmgnt.name^ +||traffmovie.com^ +||trafforsrv.com^ +||traffprogo20.com^ +||trafget.com^ +||trafogon.com^ +||trafsupr.com^ +||trafyield.com^ +||tragedybuffaloappraisal.com^ +||tragency-clesburg.icu^ +||tragic-treat.com^ +||trailerchauffeurfascinating.com^ +||trailexcitingajar.com^ +||trained-price.pro^ +||trainedscale.com^ +||trainedwave.pro^ +||trainerunpleasantrite.com^ +||trainsfamiliarhelm.com^ +||trainspoetry.com^ +||trainswardy.cyou^ +||traitorpretextherein.com^ +||trakaff.net^ +||traktortds.com^ +||tramellfage.cyou^ +||trampcontaining.com^ +||trampdreamalluded.com^ +||trampsalmonsentiments.com^ +||trampstoquetstraka.qpon^ +||trandgid.com^ +||transactionproducer.com^ +||transactionscookclotted.com^ +||transdecoke.cfd^ +||transferfaciliate.com^ +||transferin320.com^ +||transformationepisode.com^ +||transitionsinging.com^ +||translatebonus.net^ +||translatingshrinkspelling.com^ +||transportationpenitencesierra.com^ +||transportationthou.com^ +||trapdoortissuepush.com^ +||trapescook.com^ +||trashdisguisedextension.com^ +||trashycontinuousbubbly.com^ +||trashyepochabsorbing.com^ +||trasre.com^ +||trasupr.com^ +||traumaprocuredinsect.com^ +||traumaticassignearnest.com^ +||traumaticpower.com^ +||travellingcrushslit.com^ +||travellingpresidentding.com^ +||travelscream.com^ +||travelsplayboy.com^ +||traveltop.org^ +||traversefaultlessashamed.com^ +||traverseseven.com^ +||travidia.com^ +||travsllhwkrks.space^ +||trawlscredo.qpon^ +||traxltbwvenps.website^ +||trc85.com^ +||trc97.com^ +||trccmpnlnk.com^ +||trck.house^ +||trck.wargaming.net^ +||trcktr.com^ +||trdezwtminfdy.space^ +||treaclyactian.cfd^ +||treasonexplanation.com^ +||treasonmason.com^ +||treasonmorallyinexpedient.com^ +||treasured-phase.pro^ +||treasurerchord.com^ +||treasureschalkeddearly.com^ +||treasurestimulate.com^ +||treasuryimprovementsheater.com^ +||treatjayworkman.com^ +||treatmentfurthermoresobbing.com^ +||treatmentoctopus.com^ +||treatseised.cyou^ +||treatsillicit.cyou^ +||treatyexceedingly.com^ +||trebleswimmingbritish.com^ +||trecut.com^ +||trefahyomin.qpon^ +||trellian.com^ +||tremblesyringeillusive.com^ +||tremendous-breast.pro^ +||tremendous-hook.pro^ +||tremendous-meeting.pro^ +||tremendousbulk.com^ +||tremendouscheek.com^ +||tremendousthesis.com^ +||tremolodeckles.cfd^ +||tremorhub.com^ +||trenchefficaciousworkman.com^ +||trenchprecut.cfd^ +||trentalphatphocine.cyou^ +||trentbereal.com^ +||trepidevase.cyou^ +||tressedagleycrapy.cyou^ +||tressedtwalt.cfd^ +||tresselwelsiumorejon.qpon^ +||tressonchirataincas.cyou^ +||trewagealts.cfd^ +||trewsscutta.qpon^ +||trexer501.com^ +||trftopp.biz^ +||tri.media^ +||triacamuchcohurries.cfd^ +||trialsfaster.com^ +||trialshoewager.com^ +||trianglesickdemocrat.com^ +||triangularmouse.com^ +||tribalfusion.com^ +||tribevild.cyou^ +||tribracbiaxal.com^ +||tributeglassmulberry.com^ +||tributeinducedfuzzy.com^ +||tributeparticle.com^ +||tribzonnar.cyou^ +||tricklewatchingtypist.com^ +||tricklyblather.shop^ +||trickretrorest.com^ +||trickyscrew.pro^ +||triczjnzuktsh.website^ +||trifling-profession.pro^ +||triflinghandicapped.com^ +||trigami.com^ +||trijetsnilrosters.qpon^ +||trillfesters.cyou^ +||trillisept.cyou^ +||trilobefdub.qpon^ +||trim-bicycle.com^ +||trimchafegrove.com^ +||trimreaddrunken.com^ +||trioletfused.com^ +||tripcarriagewaving.com^ +||tripl3a.com^ +||tripledeliveryinstance.com^ +||tripletmiasevery.qpon^ +||triplumpolymny.com^ +||tripoddrewitealoins.qpon^ +||trippleintinct.cfd^ +||tripritmrlhuf.space^ +||tripscheckblissful.com^ +||tripsisvellums.com^ +||tripsthorpelemonade.com^ +||trissinted.com^ +||tritboxers.qpon^ +||trithomed.qpon^ +||tritylofays.qpon^ +||triumphantthingsreading.com^ +||triumphcommodity.com^ +||triumphhello.com^ +||trivetincur.com^ +||trivialghana.qpon^ +||trivialturn.com^ +||trixsoclesdevout.cfd^ +||trizoicaequi.com^ +||trizonegauzy.com^ +||trjfexgjfohdx.space^ +||trjjolkmaxwyb.space^ +||trjyhdpxtiyia.store^ +||trk-aspernatur.com^ +||trk-consulatu.com^ +||trk-epicurei.com^ +||trk-vod.com^ +||trk-web.com^ +||trk4u.com^ +||trkedswsf.com^ +||trkerupper.com^ +||trkinggd.com^ +||trkings.com^ +||trkk4.com^ +||trklnks.com^ +||trkn1.com^ +||trknk.com^ +||trknovi.com^ +||trkr.technology^ +||trkrspace.com^ +||trksmorestreacking.com^ +||trktnc.com^ +||trkygdkgsjmxs.buzz^ +||trmgsqnuizqku.space^ +||trmiaovwuubzd.website^ +||trmit.com^ +||trmjkayhmxuza.site^ +||trmulezjoibbg.online^ +||trmzum.com^ +||trmzyjtlilwri.website^ +||trocksregroup.shop^ +||trogginupswell.cfd^ +||troilusshrieky.cfd^ +||trojanbawty.cyou^ +||trolledsedums.cfd^ +||trolleyincreasingly.com^ +||trolleyjackpotbummer.com^ +||trollsvide.com^ +||tronads.io^ +||tronasamylonschick.qpon^ +||troopinvariably.com^ +||troopsassistedstupidity.com^ +||tropateunnobly.cyou^ +||trophislabels.shop^ +||trophonstammel.cyou^ +||tropicalbegrudge.com^ +||tropineboused.cfd^ +||trotscheme.com^ +||troubleduseful.com^ +||troublesabominable.com^ +||troublesomemanifest.com^ +||troublesomepursuing.com^ +||troublewilsomebeworry.cfd^ +||troughyomen.shop^ +||trouterpailou.shop^ +||troutpeskynest.com^ +||trovesleepit.com^ +||trowanegarote.cyou^ +||trowthstiffiedallied.qpon^ +||trpool.org^ +||trpzqspzriovm.website^ +||trtxdgieawlao.space^ +||truanet.com^ +||truantsbihalvemullahs.cyou^ +||trucklowest.com^ +||trudgerexcused.com^ +||trudigo.com^ +||trueconsist.pro^ +||truellovedating.com^ +||trueloveonlinee.com^ +||truffeleveche.com^ +||truiedqxeixlt.site^ +||truigugrwqguh.store^ +||trulysuitedcharges.com^ +||trumpgorry.com^ +||trumpshydroxy.cfd^ +||trunkedhede.qpon^ +||truoptik.com^ +||trusa.xyz^ +||trustaffs.com^ +||trustberrie.com^ +||trustedcpmrevenue.com^ +||trusteddisguises.com^ +||trustedgatetocontent.com^ +||trustedoffers.pro^ +||trustedzone.info^ +||trustgrape.com^ +||trusting-offer.com^ +||trusting-produce.com^ +||trustinghurt.pro^ +||trustmaxonline.com^ +||trustphiladelphiacompelling.com^ +||trustworthy-beautiful.pro^ +||trustworthy-iron.pro^ +||trustworthyconstant.com^ +||trustworthytalk.pro^ +||trusty-research.com^ +||trustyable.com^ +||trustyecesic.cyou^ +||trustyfine.com^ +||trustyfruit.com^ +||trustzonevpn.info^ +||truthburlap.com^ +||trutheyesstab.com^ +||truthfulcan.pro^ +||truthfuldrawer.pro^ +||truthfullybrickbravely.com^ +||truthfultype.com^ +||truthfulverb.com^ +||trwdip.online^ +||trwebbvcvaupa.store^ +||trymsrhoncal.cyou^ +||trypahandbowtorpor.cyou^ +||trytestifysupply.com^ +||trzzolcmtmqkq.space^ +||ts-tracker.com^ +||tsantsajunctor.cfd^ +||tsapphires.buzz^ +||tsapphiresand.info^ +||tsb-protect.pro^ +||tscnwyvxzsfzv.online^ +||tscprts.com^ +||tsdmxbhvbznxq.online^ +||tseconomousw.org^ +||tsednagncaata.site^ +||tsepyk.com^ +||tsfxmladbkkdm.space^ +||tsgbxlgm.com^ +||tsghvqmfcxzfn.space^ +||tsgtucfd.com^ +||tsiwoulukdlike.org^ +||tslzggdkpwvyk.online^ +||tsml.fun^ +||tsmnxxfscanxi.website^ +||tsmvsqtykbeaq.space^ +||tsmxppqnkbili.space^ +||tsnkqqzsnlfsn.store^ +||tsnrjfqhgxwvp.online^ +||tsoztmiqxzzun.website^ +||tspops.com^ +||tsrhscoypwewv.site^ +||tssyakir.xyz^ +||tstgotkendna.qpon^ +||tstwomzhxzkhf.site^ +||tsuhjkrwtayqx.space^ +||tsuutrmpeop.com^ +||tswanafldxt.com^ +||tswzrqpkvltnx.website^ +||tsxccsxbdloxt.online^ +||tsxrqncxqgcpl.online^ +||tsyndicate.com^ +||tsztqlwravxkl.site^ +||ttbm.com^ +||ttcq7nzekzbnc33cq9gnn.cfd^ +||ttdaomggbigdg.space^ +||ttdgboavrvssg.website^ +||ttedwm.com^ +||ttfoetfeswjwn.space^ +||ttgmjfgldgv9ed10.com^ +||tthqh657vbfwtk.rest^ +||ttihclkpugctw.website^ +||ttikombrmmygx.store^ +||ttjg3zq3evr826.cfd^ +||ttjqlfquwslga.online^ +||ttkfjmovlwrvb.space^ +||ttkmtmvtrezer.online^ +||ttknlsfqmtqoe.online^ +||ttlhwufpaqwkw.site^ +||ttlouwaejtqlb.online^ +||ttmmbknqrdsrs.website^ +||ttnendqczfpcn.site^ +||ttnjzfmlupknf.site^ +||ttoc8ok.com^ +||ttoejmxwlecin.site^ +||ttoyfmexbpwhj.online^ +||ttpbpjxcpdcep.website^ +||ttqpvpnrtmg.com^ +||ttrk.io^ +||ttsfflsjrsnob.website^ +||tttcaoetcuosk.space^ +||tttpcdjavbfjl.online^ +||tttufjyvaczzo.online^ +||ttusrifbdjqay.online^ +||ttwmed.com^ +||ttwststmculgv.website^ +||ttxkxmieazqwq.site^ +||ttyn7py8l4ql3ny.cfd^ +||ttyqsbjkbuxyp.online^ +||ttzhmzji8bjm53bve3f2tnpwg2.cfd^ +||ttzmedia.com^ +||tuanpigfish.qpon^ +||tubalsycees.cyou^ +||tubarfume.cyou^ +||tubberlo.com^ +||tubbylay.com^ +||tubbynubbled.cyou^ +||tubbyweird.pro^ +||tubcovercousins.com^ +||tubecorp.com^ +||tubecup.net^ +||tubeelite.com^ +||tubemov.com^ +||tubeultra.com^ +||tubfishhechtia.cfd^ +||tubfurryhen.com^ +||tubroaffs.org^ +||tuckbrows.com^ +||tuckedcurtain.com^ +||tuckedtransmitterwizards.com^ +||tuckerclassesjackal.com^ +||tuckergrass.com^ +||tudbtiifm.com^ +||tudhcopneuxnm.online^ +||tudorfresco.cfd^ +||tueborpercurmargot.cfd^ +||tuesdayfetidlit.com^ +||tuesdayhappen.com^ +||tueyyhkbpwggv.space^ +||tufaaijqffzug.site^ +||tuffoonincaged.com^ +||tufpdudrafwdh.site^ +||tufterafshar.cfd^ +||tuhhdcjnnppuk.site^ +||tuhhfhswiabhz.space^ +||tuikrodlet.cyou^ +||tujlpraovjert.site^ +||tujrikfewybat.online^ +||tukrd.com^ +||tuktszcckzgei.site^ +||tulsmcvbuzvsk.website^ +||tumblebit.com^ +||tumbleddear.com^ +||tumbledemploymentcollapse.com^ +||tumblepoet.com^ +||tumblerpeacheswry.com^ +||tumbrilpareil.shop^ +||tumidalanironism.cyou^ +||tumionuneye.cfd^ +||tumorskyar.com^ +||tumri.net^ +||tumultdisciple.com^ +||tunabushestaking.com^ +||tunagrownupjeer.com^ +||tunapier.com^ +||tunaspiritual.com^ +||tuneengage.com^ +||tunefatigueclarify.com^ +||tuneupcant.com^ +||tungasinzer.cyou^ +||tuningspionic.cfd^ +||tunobwjyfcoad.online^ +||tunosxicehwpb.space^ +||tuoeblgszfyut.store^ +||tuowknbkbwfve.online^ +||tur-tur-key.com^ +||turbaninfectedexterior.com^ +||turbitprovesdujan.cfd^ +||turboadv.com^ +||turbocap.net^ +||turbolit.biz^ +||turbostats.xyz^ +||turboxinca.cfd^ +||turbulent-divide.com^ +||turbulentoriginally.com^ +||turdinedisform.cyou^ +||turfamusing.com^ +||turfcrowner.cfd^ +||turfitecansful.com^ +||turflivestockdetector.com^ +||turfquelltablets.com^ +||turgoidgare.shop^ +||turhinbhcysbg.website^ +||turibesmoke.cyou^ +||turkeernohow.com^ +||turkeychoice.com^ +||turkeyicaria.qpon^ +||turklefalser.cfd^ +||turkstench.com^ +||turmetordeal.cyou^ +||turmjpzcrovzn.online^ +||turmoildanced.com^ +||turmoilragcrutch.com^ +||turncapkevin.com^ +||turncdn.com^ +||turnerforbes.com^ +||turnhub.net^ +||turnipprivatenatives.com^ +||turnoffcaudex.com^ +||turnstilesocially.com^ +||turpifytettish.shop^ +||turrumhamli.cfd^ +||turtlestarterdirected.com^ +||turturapproxjoked.qpon^ +||tushesmirage.qpon^ +||tuskfaxtroops.com^ +||tuskishtoro.cyou^ +||tuskmargarinetabloid.com^ +||tuskysackageflashly.cfd^ +||tusno.com^ +||tussledconies.cyou^ +||tusslertorpify.qpon^ +||tussorekamba.cfd^ +||tutaniaintimae.cfd^ +||tuteloparsony.qpon^ +||tutenagemodins.qpon^ +||tutorsshrover.qpon^ +||tutvp.com^ +||tuu1t75ypovym8.cfd^ +||tuudibopjoxmy.site^ +||tuusjwrgtxigs.space^ +||tuwiascare.cfd^ +||tuwifumarin.cfd^ +||tuxedolawine.cfd^ +||tuyexdwuboyuw.top^ +||tuzatyramin.cyou^ +||tuzoufxhjnejx.online^ +||tvbtatpjrhsqj.site^ +||tvdvhytyenydf.space^ +||tvewiifmavniu.website^ +||tvexnrsvytbeq.space^ +||tvgdwdlnr.com^ +||tvgpueilyophl.space^ +||tviqzqsrdvofl.website^ +||tvkfxtoydfqtf.online^ +||tvlhgokjy.com^ +||tvloord.shop^ +||tvlsiednsircj.online^ +||tvmulesmelt.com^ +||tvphkckqchufn.space^ +||tvprocessing.com^ +||tvpyhjuiywlex.space^ +||tvqamnmdgqaes.space^ +||tvqqnhkixwqny.space^ +||tvqrsvhqmcten.website^ +||tvrqlfdtfxtsh.space^ +||tvsvowhcdfpar.space^ +||tvtfozlff1iqj5f41vwot4bwuqr6.cfd^ +||tvtrszwtyaeme.website^ +||tvvbtwcvbcygh.online^ +||tvvydeysyzwnl.site^ +||tvwkgywoyjvwo.online^ +||tvwqwxaqhov.com^ +||tvwxwboysflvt.website^ +||tvxzuiiddkbqy.online^ +||tvzyqtgcqhvtr.space^ +||twarsirbkkf.com^ +||twasmerelyhers.com^ +||twbschithgosa.space^ +||twbzhzsfluorp.website^ +||twdgdoukcxtby.xyz^ +||tweadsialing.com^ +||tweagtocsins.qpon^ +||tweakerhrdwre.qpon^ +||tweakersaturyyachter.cfd^ +||tweakjerk.com^ +||tweakpersuadelowest.com^ +||twebroba.in^ +||tweetedjota.cfd^ +||twelfthdistasteful.com^ +||twelvesmilordpsec.qpon^ +||twentiethsupplantdark.com^ +||twentydowrylocate.com^ +||twentytrek.com^ +||twerpuveitic.com^ +||twgtgpovwbqdy.website^ +||twieriofyxkqe.space^ +||twigcrucialpal.com^ +||twigwisp.com^ +||twilightinspiredglands.com^ +||twiltformyl.qpon^ +||twinabonnementoutburst.com^ +||twinelandlord.com^ +||twinersmaint.shop^ +||twinfill.com^ +||twinkle-fun.net^ +||twinklealec.com^ +||twinkledysenterysupporter.com^ +||twinpinenetwork.com^ +||twinrdack.com^ +||twinrdengine.com^ +||twinrdsyn.com^ +||twinrdsyte.com^ +||twinrtb.com^ +||twinsrv.com^ +||twiremus.com^ +||twirhaod.in^ +||twirlamassante.com^ +||twirlsap.com^ +||twiselaveria.com^ +||twistads.com^ +||twistconcept.com^ +||twittad.com^ +||twittenbemole.shop^ +||twitterchest.com^ +||twitveil.com^ +||twixjwosntuzj.website^ +||twosomecurtays.qpon^ +||twpasol.com^ +||twrmnd.com^ +||twsfwdhpqv.com^ +||twspfzmzxlcyp.website^ +||twvgoaewdmluf.online^ +||twwarolhgextk.online^ +||twwbgrbfuezvu.site^ +||twznryfmalwge.site^ +||twzqnidybpbsy.space^ +||tx2ht6nz5bgtgh.cfd^ +||txb2p77g6bgihkug7.rest^ +||txcrskknqjjni.space^ +||txcslpvgwxeao.website^ +||txdrzgmuwoqqh.site^ +||txfzmurcavgqx.space^ +||txgsddqwzuenf.online^ +||txgtadnmmwwte.space^ +||txgupjxzbxvsx.online^ +||txhamluorleng.site^ +||txhntypqe.com^ +||txhwoqrtjbfer.online^ +||txicptqg.com^ +||txjgnbljkekft.space^ +||txjjuoxttdlhl.store^ +||txljgipkkispw.space^ +||txmzgt912ujx47rkqu2g352h1.cfd^ +||txnrllycvuhpu.site^ +||txofzthbpruto.site^ +||txogxhncykusn.website^ +||txoswd4i.xyz^ +||txpror1hove28xp.cfd^ +||txqqrrjqhkupte.com^ +||txqtpmdjsuxbm.online^ +||txqvieufbv19hilhi.rest^ +||txsdwcllspdey.website^ +||txtbagworm.cyou^ +||txubwkepwuqkp.website^ +||txuqrrcpnnsye.online^ +||txwkjktfojloy.online^ +||txwonfqyncajg.site^ +||txzaazmdhtw.com^ +||txzbejxkynpvk.online^ +||txzylleycallj.site^ +||tyaxztldkgmmv.website^ +||tybffeppxwzmm.website^ +||tybuniaoceuhy.online^ +||tyburnpenalty.com^ +||tycbjtlpydnwm.website^ +||tychon.bid^ +||tydiejoyweed.shop^ +||tydrumgmari.org^ +||tyhxysuulzzmr.site^ +||tyighduant.qpon^ +||tyijgwwnaaxwc.space^ +||tyimgmegpirwo.online^ +||tyingtastevolleyball.com^ +||tyjitvdujivma.space^ +||tykenrivalvalines.cfd^ +||tykseckvnewdh.online^ +||tylerotitic.cfd^ +||tylgdscnpwitkz.com^ +||tyloticseseli.shop^ +||tylulewe.com^ +||tymi38ig9q6eo74vm.cfd^ +||tyn69cn72yx8qpo343.cfd^ +||tynbozhfivpzj.online^ +||tyningorpinc.com^ +||tynt.com^ +||tyotxwymbciuy.space^ +||tyouqyiehilym.online^ +||typeypuddle.cyou^ +||typhoidchokiersamiels.cyou^ +||typhonaffinaltron.cyou^ +||typhuseuphon.cyou^ +||typical-hub.com^ +||typicallycompoundgaunt.com^ +||typiccor.com^ +||typisttuckerspurt.com^ +||typobonaghtorphize.cyou^ +||typwcoroner.cfd^ +||tyrannipokier.cfd^ +||tyrotation.com^ +||tyserving.com^ +||tysigpzjxjegb.space^ +||tyuhwlerptkcl.website^ +||tyuvxopgalzlg.online^ +||tyywkxynwfkoj.site^ +||tyzlfqeonycol.online^ +||tzahvkqybkdrx.store^ +||tzarinabumtrap.cyou^ +||tzdgpmdrcoenq.space^ +||tzegilo.com^ +||tzepbopyvsdav.site^ +||tzgdlbeljybbr.site^ +||tzgeylerqwbot.website^ +||tzgjzzhj.com^ +||tzhg8m37q1m8xumkw4voe9lx.cfd^ +||tzifafpdvzcxl.website^ +||tzlaokwrwlmim.online^ +||tzmsouoqvysag.site^ +||tzmupfzuwoqtl.space^ +||tznvsmuylzbfl.website^ +||tzqdeqmlxhinp.site^ +||tzr7llm7w7z5z95b.rest^ +||tzremprgecyje.website^ +||tztbijfdycgdd.space^ +||tzvpn.site^ +||u1u738wyr5liojf.rest^ +||u2mrortu3mt1t1m59jhku4f9iu.cfd^ +||u2smartlinks.com^ +||u3o1uncq.xyz^ +||u4w4hp6grc2yy1k98.cfd^ +||u51o6pqk.xyz^ +||u62rk4o8k9wv9m5eo3oj.cfd^ +||u655vlo5.xyz^ +||u8jcqi64vy6yq54vmncxt9.cfd^ +||u8uuf485yg58huj97bl.cfd^ +||u9axpzf50.com^ +||uabkqdfvtguvj.online^ +||uabvpjljbbaqa.website^ +||uacopcyogxrqni.com^ +||uacugnyezgqvp.site^ +||uacvdinzsjqbv.site^ +||uads.cc^ +||uagzghuaqcmdo.online^ +||uahgfhnjufgre.space^ +||uahxjnvxojuse.online^ +||uaiugdbudbdfz.store^ +||uaivqzpqzehth.love^ +||uaiysnrylsuyx.website^ +||uaiyuaosnibki.website^ +||uajgfkbpypbsa.site^ +||uajzbrkidbvfb.online^ +||uakbviletrmyf.site^ +||uaktjvdbrstrg.online^ +||ualcwoyuwyvhz.site^ +||uamnikjpfscxw.website^ +||uanndryemvb.com^ +||uapcmhjywzbkh.online^ +||uapkagxacexij.online^ +||uapps.click^ +||uarlonjzgxvlb.site^ +||uasxooeorosyz.site^ +||uauswagtehnwg.online^ +||uavefhtrbkbhq.online^ +||uavnfdezxzote.site^ +||uaxcuqmfdjcks.space^ +||uaxezwpfaghym.store^ +||uaxkurmkomsyw.website^ +||uayljpxuyhjlh.store^ +||uazhaixvzaggm.space^ +||ubbfatevovpkd.site^ +||ubbfpm.com^ +||ubeijmwbtkhvo.site^ +||ubgneblgrosii.site^ +||ubgvqakukavmm.space^ +||ubhoryjlvjfux.website^ +||ubiepvmfdzkhx.online^ +||ubilinkbin.com^ +||ubjgaemorrgfx.online^ +||ubjzmnbnhtdjj.site^ +||ubkawximwnezm.online^ +||ubkybaizijoct.website^ +||ublasklnrnifs.site^ +||ublcyigsixgyu.website^ +||ubmyqcleulnqa.website^ +||ubndxnesjlrjqn.com^ +||ubosfmwdftnpt.space^ +||ubqnvqrjaxlso.space^ +||ubssxfunnecbf.website^ +||ubswpblqoluae.online^ +||ubtypconlbqil.site^ +||ubuqgtiumevh.com^ +||ubvjcdskxosze.site^ +||ubydqaebqwnit.space^ +||ubynjtknsjveh.website^ +||ubzmzxtdosgdh.online^ +||ubztowsnyurmy.space^ +||ucaavjcweklhn.space^ +||ucateopgdhrbq.online^ +||ucationininance.org^ +||ucawakeup.shop^ +||uccfioqedzfom.site^ +||ucdwezftjdksn.site^ +||ucewkivqiovlo.store^ +||ucfosyrxfuryc.store^ +||ucgpgzquuhwey.space^ +||uchwgynkggjca.online^ +||uciockqdyzlim.site^ +||uciqsmzobweil.site^ +||uckcduwzkabhp.online^ +||uclitpakrzbkn.online^ +||ucnwhhtaadaqp.site^ +||ucpfezjbcrmwh.space^ +||ucqvrreziifwz.website^ +||ucrt4nw5wnkitw9m5oq.cfd^ +||ucsnddigmtwoe.space^ +||ucufiewsorygs.com^ +||ucukokdokjydj.space^ +||ucuqtxhmdgvfr.website^ +||ucuumhsxenzwq.online^ +||ucvqpbfhvtreh.com^ +||ucwkvipzetzxc.space^ +||ucwypnemwclwd.online^ +||ucyierazwsrpa.store^ +||udasihaterpionic.qpon^ +||udbaa.com^ +||udclumpy.cfd^ +||uddougqbgbhmg.website^ +||udfaguykrfeur.site^ +||udggmzfrdhxcs.site^ +||udjolmaphsyfo.online^ +||udjvwsvv.com^ +||udknsbanxlrfh.site^ +||udmserve.net^ +||udpgdwnhvltik.website^ +||udplgiotjursc.website^ +||udppercfezmis.online^ +||udurcyzcjpotp.site^ +||uduwdbhmot.com^ +||udxosygwyfabo.space^ +||udzpel.com^ +||ue2rh7wpjhkh29.cfd^ +||ueaczqcyrvval.online^ +||uecrkcmmjcayt.online^ +||uedmrchvxlcyr.online^ +||uedrrztkxmplx.xyz^ +||ueelifzelnygx.website^ +||uefgoulcwiqal.space^ +||uefhucspqzoza.space^ +||uegonhnxbiyrc.website^ +||uektouluarthe.site^ +||uelclnfeaxlur.online^ +||ueleensadcyxh.site^ +||uemrtknwjbgzp.one^ +||ueobjmimltuci.website^ +||ueobtcrdeefau.space^ +||ueomdedzyvpdn.online^ +||ueoxrpmuqlspj.online^ +||ueqkrtmgiokeg.site^ +||uerbcssuraiyf.space^ +||ueuee.com^ +||ueugcuoemyzan.online^ +||ueujvfjkukeqf.website^ +||uevokddauuynh.space^ +||ueyruzhljmhac.website^ +||uezbiytinfnyn.site^ +||uezeoqumpbhxr.site^ +||ufaexpert.com^ +||ufbpqmryrrctn.site^ +||ufcxoaidboqxt.site^ +||ufdnysonfvwnj.space^ +||ufekeeoe.com^ +||uferstreekseche.qpon^ +||ufirmirylfavb.online^ +||uflbwgsviaueg.site^ +||ufmdtcyprejjm.site^ +||ufmnedeqofyctp.com^ +||ufoihmctlsaxy.space^ +||ufoqyffgwrl.com^ +||ufpcdn.com^ +||ufrbtrzrinhgx.top^ +||ufskfcie.cfd^ +||ufsyoynijlvgy.website^ +||ufuaaejrupvow.space^ +||ufuhdpxhmsiwqi.com^ +||ufupvxchjpore.site^ +||ufviopklcewdn.space^ +||ufvqholkzwehi.website^ +||ufvwviscjkake.space^ +||ufwsddjbezkny.website^ +||ufxikvgvpogym.website^ +||ufyitneqhuqty.online^ +||ufyxvgupbdcjv.website^ +||uggpqfwbzhbir.space^ +||uggrcyzcgkbfr.space^ +||uggwouhzwuhcb.website^ +||ugjarrxlhwrwo.space^ +||uglufuepfcind.space^ +||uglytraining.com^ +||ugmhqqlicdaqg.online^ +||ugmkqqvmfcylp.website^ +||ugmqisybzpplo.space^ +||ugnyuemxxrdsv.site^ +||ugqpgweplprjq.website^ +||ugrgujwxjxsuf.space^ +||ugroocuw.net^ +||ugsqgrktszazz.site^ +||ugszjrrqanqdc.site^ +||ugtbxnlaclzop.site^ +||ugtflnqn.com^ +||ugttholoi.cfd^ +||ugueolbcmmrlq.site^ +||ugusgaowkksnr.online^ +||ugvldssehyptdj.com^ +||ugxjixmdhprzr.site^ +||ugyokhycezstl.site^ +||ugyppaqollegn.online^ +||uh5p93ia.xyz^ +||uhaqlawtipokn.website^ +||uhdgtnzuttvhb.online^ +||uhdokoq5ocmk.com^ +||uhdwoycyionrz.space^ +||uhedsplo.com^ +||uhfdsplo.com^ +||uhhdkizbbjmmr.space^ +||uhhhhvyezikfh.space^ +||uhiecdaxioolb.online^ +||uhinmknjemdtw.site^ +||uhjcnbzhnnqqb.space^ +||uhjdpvgunrvsu.com^ +||uhkhywznzpzwr.website^ +||uhlomzqpdtduv.space^ +||uhmkvolpuruyb.website^ +||uhnrcmlqloxij.site^ +||uhnvoddrtwyeg.website^ +||uhodsplo.com^ +||uhopdhvsatlvf.store^ +||uhoyczjndgwrn.site^ +||uhpdsplo.com^ +||uhppnuqatxbaw.online^ +||uhqngrhkysdfl.website^ +||uhslbfnnqqqqh.space^ +||uhsmmaq4l2n5.com^ +||uhuvadkubxjkv.website^ +||uhvcfshrblbgx.online^ +||uhvsefglyttww.fun^ +||uhwzjbveib.com^ +||uhyuspdyothna.online^ +||ui02.com^ +||uicooheecarnel.cfd^ +||uidpklgzchjnf.website^ +||uidsync.net^ +||uifncgofildko.space^ +||uighnhsbatmdf.store^ +||uighurestopamiga.qpon^ +||uiibaovaebfaj.online^ +||uiikqirdiessi.love^ +||uikosfascqisl.space^ +||uildfordgovery.com^ +||uilts.com^ +||uimrynxkuybmb.website^ +||uimserv.net^ +||uingroundhe.com^ +||uinnertablis.com^ +||uiopkl.com^ +||uirjvrebipgfu.site^ +||uisiaculturerpar.org^ +||uisrrspyanjup.store^ +||uitmkikekkmko.store^ +||uiuhawavotxsv.space^ +||uivsstyggpxpd.website^ +||uivylgraexanl.site^ +||uiyxoowmkcppo.online^ +||uizhndydahcum.online^ +||uizjfyakmsawn.site^ +||uizrqsrizjwfe.store^ +||ujdsaljmviudi.space^ +||ujdtnsgiagbxx.click^ +||ujdvvfrqujgfl.space^ +||ujen6k652o7ph3ufrz7eux43rl.cfd^ +||ujfdbyebg.pro^ +||ujkemwsgdlsmy.space^ +||ujkjhxeltkshw.online^ +||ujlqgbvetzjmf.space^ +||ujmlxnnzybfvh.online^ +||ujokaomj.com^ +||ujpqiykehtfry.online^ +||ujq4bewbfwh4txwq98mxkov8.cfd^ +||ujscdn.com^ +||ujtvxvmkmncua.online^ +||ujyhplnwqsjea.online^ +||ukaadmlcfluko.site^ +||ukankingwithea.com^ +||ukegpnsbemegy.store^ +||ukentaspectsofc.org^ +||ukeovxygndoxt.site^ +||ukesmuskiejudaist.qpon^ +||ukftnxfewriwl.store^ +||ukgzpkyew9ie9o96.rest^ +||ukhuxahqxswax.store^ +||ukjrlefiioqmn.online^ +||ukjugjhigvcax.site^ +||ukjygwcfaawce.online^ +||uklzsvaglwcuz.website^ +||ukmlastityty.info^ +||ukmtendationfo.org^ +||ukojrtbssuvae.space^ +||ukp7vxzlfk36f1xvx.cfd^ +||ukscpmptwial.com^ +||ukuleletruong.cyou^ +||ukupwdygrdzfj.website^ +||ukuzkpmv.com^ +||ukvlnjcpnxsly.website^ +||ukwjzdxwgoogb.store^ +||ukwwcstydteaq.website^ +||ukxefaohvndbx.website^ +||ukxiwkxqujhqu.website^ +||ul671e417n2g4h.cfd^ +||ulaodqkxrgard.website^ +||ulbaskljxyvoox.com^ +||ulbruiqadlmaa.online^ +||uldhyajkjmcdw.online^ +||ulesxbo.com^ +||ulgmucrlctvsl.store^ +||ulhpxqtmsmnbo.site^ +||ulhwerbvmskri.space^ +||ulkfvwizkfbml.site^ +||ulljqegjdoqmt.store^ +||ullmqufjprrcd.space^ +||ulmatehalmmiae.cyou^ +||ulmoyc.com^ +||ulmqfhgfjrxbj.site^ +||uloxzynmptmdy.website^ +||ulpanimarcos.com^ +||ulpddqlmrpnuf.space^ +||ulpjdqgndygby.space^ +||ulpradvpeaiqs.store^ +||ulqhhlhpevvif.space^ +||ulqlijlriiclv.online^ +||ulsgwwmkafdqa.website^ +||ulsterscarices.com^ +||ultaxvuxpgryi.site^ +||ulteriorreporting.com^ +||ultimasducatoncalusa.cfd^ +||ultimumshairds.shop^ +||ultracdn.top^ +||ultraomelette.com^ +||ultrasloro.cyou^ +||ultrasoundpurchase.com^ +||ululantofftype.cfd^ +||ululubaggie.cfd^ +||ulvantamal.shop^ +||ulvqhajbndnty.website^ +||ulwexxyucrdsm.online^ +||ulwfzxqtmzsfm.space^ +||ulwvsbezpsgff.site^ +||ulxovdcdlie.com^ +||ulziylkdhxcap.store^ +||umagccwbbjlne.space^ +||umauirfyhaepr.online^ +||umbelapfecche.cfd^ +||umbelcannons.com^ +||umbellacongos.qpon^ +||umbkhpryixebl.space^ +||umbrielfeasor.qpon^ +||umdwwuasqcdar.online^ +||umebella.com^ +||umeqaqdcvviwd.space^ +||umexalim.com^ +||umgzvlbrqzyeq.online^ +||umhkzidngrmor.website^ +||umiqzlcvx.com^ +||umisrvofhmysc.site^ +||umkyuqatronfr.site^ +||umlwjozzjdveq.website^ +||umlyyoggkgxbk.site^ +||umnnjpcfdcegy.website^ +||umnxdbvgstipt.website^ +||umokmojaxtwrj.online^ +||umphinsorbvegete.qpon^ +||umpirerevved.com^ +||umqosmlnjdrwl.site^ +||umrgdvvdgxjto.store^ +||umsgpfloirafp.site^ +||umtudo.com^ +||umuraaajkrkxl.space^ +||umwzmbhdifptd.online^ +||umyyjgqyajxzu.online^ +||umzkjponcxpvn.online^ +||unablewhollyold.com^ +||unacteyl.cfd^ +||unagedsarcous.com^ +||unakinloggin.com^ +||unanimousinflammableboxing.com^ +||unanimouslytackytraumatize.com^ +||unarmedtriumphal.com^ +||unashamedinsoluble.com^ +||unathrowler.com^ +||unattr.com^ +||unattractiveamazingly.com^ +||unaustwagger.cyou^ +||unauthorizedterminal.com^ +||unavoidablestates.com^ +||unawaredasheen.com^ +||unawareirreparable.com^ +||unawarelimited.com^ +||unawnedscap.shop^ +||unbagboshbok.shop^ +||unbarsduckers.cfd^ +||unbearstumbles.cfd^ +||unbedozedhusker.qpon^ +||unbelievablyabsolutely.com^ +||unbelievablycaption.com^ +||unbidwielare.cfd^ +||unbluedprovene.shop^ +||unboyrange.com^ +||unbraceindish.qpon^ +||unbrenteffluve.qpon^ +||unbrokepinks.cyou^ +||unbrownunflat.com^ +||unbuildtweezesswobbed.cyou^ +||unburlycosaque.cfd^ +||unbusytophi.cyou^ +||unbuttonexcellentsubway.com^ +||uncadyaewiajd.online^ +||uncanedraisons.com^ +||uncannydaytime.com^ +||uncannygallonerosion.com^ +||uncannyhick.com^ +||uncannyidentifierfeed.com^ +||uncertainadministration.com^ +||uncertainbill.com^ +||uncertainvoting.com^ +||uncgeisllkmtn.website^ +||unciatoi.com^ +||uncinchambash.com^ +||unciteablutetercets.qpon^ +||unclesnewspaper.com^ +||uncoatsutten.qpon^ +||uncocleypercha.com^ +||uncoilaoniancareen.cfd^ +||uncomfortablevacation.com^ +||uncommon-rope.com^ +||uncommonperceived.com^ +||uncommonstrike.pro^ +||unconscious-long.com^ +||unconsciousfluent.com^ +||unconsciousliteracynameless.com^ +||uncotorture.com^ +||uncqrapguooya.space^ +||uncrudetheses.cfd^ +||uncterilitasory.com^ +||uncxggzlzlrww.website^ +||undalness.com^ +||undandinterp.org^ +||undarkfather.shop^ +||undaymidydle.com^ +||undaymidydles.org^ +||underclick.ru^ +||underdog.media^ +||underestimateomelettesimilar.com^ +||underfeastedkeyhole.cyou^ +||undergobuffalowharf.com^ +||undergomason.com^ +||undergonesidewaysdisappearance.com^ +||undergrounddressedposition.com^ +||undergroundportugueseheadache.com^ +||underlinestylevote.com^ +||underminesprout.com^ +||undernautical.com^ +||underneathfinancial.com^ +||underneathpimpletalk.com^ +||underpantscostsdirection.com^ +||underpantsjokeimmunity.com^ +||understanding3x.fun^ +||understandspoiledabnormality.com^ +||understandwaspish.com^ +||understatedpersonal.pro^ +||understatedplace.com^ +||underwaterexilemovements.com^ +||underwearcrackerprison.com^ +||underwearfilletslight.com^ +||undesirablemountain.com^ +||undesirableratificationprograms.com^ +||undinedwaly.cyou^ +||undoneknit.com^ +||undosupporterpyjamas.com^ +||undoubtedlyovercoat.com^ +||undrawnibo.cfd^ +||undrysao.shop^ +||undugnervily.cyou^ +||uneagerfurfoozcomales.cyou^ +||uneasinessresurrection.com^ +||uneasyupstandingsubsist.com^ +||unehipynevdxv.online^ +||unemployedam.com^ +||unemployedscarinterbase.com^ +||unequaledwinter.com^ +||unerectcolonic.qpon^ +||uneydwyvmsylq.store^ +||unfairgenelullaby.com^ +||unfairshout.com^ +||unfamedferineacremen.cfd^ +||unfamiiliardate.net^ +||unfamiillardates.net^ +||unfamiliardulygymnasium.com^ +||unfamllliardate.net^ +||unfamllliardates.com^ +||unfinished-apple.com^ +||unfoldedclimate.com^ +||unfoldstholed.cfd^ +||unfortunatechampionship.com^ +||unfortunatehospitality.com^ +||unfortunatelyemotion.com^ +||unfoxyeyedlemel.cfd^ +||unframesiberia.com^ +||unfrizzpacinko.com^ +||unfrozecotointamanac.qpon^ +||unfumedvamoses.com^ +||ungildfreithtornal.qpon^ +||ungildnumac.cyou^ +||ungillrelost.cyou^ +||ungluegotraja.cfd^ +||ungnijzsvdyut.site^ +||ungreatbasatembrace.cfd^ +||ungyptrvngfqp.site^ +||unhangdrowner.qpon^ +||unhappybill.com^ +||unhappygools.shop^ +||unhappyweakness.com^ +||unhastemetisse.qpon^ +||unhatedprotei.com^ +||unhaveuparnacarpel.cyou^ +||unhayedthew.cfd^ +||unhealthyirreparable.com^ +||unhealthystickevents.com^ +||unheldmordv.cyou^ +||unhewedranli.cyou^ +||unhighallanschemy.qpon^ +||unhoodtorrone.shop^ +||unhopetrisula.cyou^ +||unhumaniracund.qpon^ +||unicornpride123.com^ +||unidentifiedrelatecalled.com^ +||unidentifiedscammertravel.com^ +||unifini.de^ +||uniformwidgie.cfd^ +||unifymaligns.cfd^ +||unifywithstatistics.net^ +||unildldftytap.space^ +||uniondistinction.com^ +||uniovalizote.cyou^ +||uniparabkbndr.cyou^ +||unipartbellis.shop^ +||unique-memory.com^ +||uniqueproceedingincurable.com^ +||unirsweqilejf.website^ +||unitarycambism.com^ +||unitedcyclistdesired.com^ +||unitedjetinclusion.com^ +||unitiveunden.cfd^ +||universalsrc.com^ +||universe4innovations.com^ +||universitycleaninglunch.com^ +||universityofinternetscience.com^ +||universityroadsidecircumstantial.com^ +||universityshocksooner.com^ +||unjiqfer.com^ +||unjustsubmerge.com^ +||unkefcmhoyycz.online^ +||unkemptbirth.com^ +||unkfrqeoymzbw.online^ +||unkindpendulum.com^ +||unknewandricingrave.cyou^ +||unknotfixable.cyou^ +||unknowndeliquencydeliquencypenthouse.com^ +||unknownpermission.com^ +||unlashchaule.qpon^ +||unlawfuldamage.com^ +||unlawfulpattern.pro^ +||unlawfulstrategy.com^ +||unleashgrantpurple.com^ +||unleashtuneafter.com^ +||unlined-you.com^ +||unlivesspathic.cyou^ +||unloadonly.com^ +||unlockfilenow.com^ +||unlockswervehustle.com^ +||unlocky.org^ +||unlocky.xyz^ +||unlookgossipy.cyou^ +||unlsgohnfabkf.site^ +||unluckybathroom.pro^ +||unluckydoubt.com^ +||unluckyrecent.com^ +||unlumpybinfuljipper.cfd^ +||unlumpylynette.com^ +||unlustytriaxon.shop^ +||unlxxnsrhprgp.space^ +||unmanyatter.com^ +||unmectappic.com^ +||unmeekpledge.cyou^ +||unmefwsycamtq.space^ +||unmnehicnyoiz.site^ +||unnaturalcask.com^ +||unnaturalcontradictblossom.com^ +||unnaturalindulgencerenown.com^ +||unnaturaljune.com^ +||unnetmyrica.shop^ +||unnlffqwyjldo.space^ +||unnoseranli.qpon^ +||unntvrpwfzluf.store^ +||unoldiseautoing.qpon^ +||unpackelasticlens.com^ +||unpackstaleintended.com^ +||unpenscoroll.cfd^ +||unplangibbi.qpon^ +||unpowerfacies.shop^ +||unpracticalwhich.org^ +||unqhkzpybojsw.website^ +||unqsnzyrsdkuz.website^ +||unqxeekhpyfyq.online^ +||unrazedkittool.cyou^ +||unrealcorrupt.com^ +||unrealistic-due.com^ +||unrealistic-tell.com^ +||unreelswiss.cyou^ +||unregaldiceras.qpon^ +||unregisteredtraditional.com^ +||unrenthah.qpon^ +||unresolvedbuckwheat.com^ +||unresolvedtame.com^ +||unrestcontemporary.com^ +||unrestwidthconsonant.com^ +||unrevxgmkbm.com^ +||unridhoncho.com^ +||unripe-parking.com^ +||unripewar.com^ +||unrivedfankleoctonal.cyou^ +||unroundcakettequickly.cfd^ +||unroutgametal.qpon^ +||unrovedrefocus.cfd^ +||unrovengibbert.cyou^ +||unrrovefoetus.cfd^ +||unrulesatlijk.com^ +||unruly-customer.com^ +||unrulycornersunderage.com^ +||unrulymedia.com^ +||unrulypause.com^ +||unrulystored.com^ +||unrvfdnjigyms.space^ +||unrzmszjmldfr.website^ +||unsakedhakdaruns.cyou^ +||unseenprovisionsparts.com^ +||unseenreport.com^ +||unselfisheducation.com^ +||unsellsidarinds.cfd^ +||unsettledbrazenqueue.com^ +||unsettledradiator.com^ +||unshalesidebox.cfd^ +||unshaveparaphs.com^ +||unshutcaitiff.com^ +||unsizedjabber.com^ +||unskilfulunpredictable.com^ +||unskilledaccompanimentcircumstances.com^ +||unslaveslier.qpon^ +||unsolarinclavefazed.cyou^ +||unsolidhamaul.cfd^ +||unsoreferr.qpon^ +||unspikeyarelyrhizoid.cyou^ +||unsrzlaqfttxa.website^ +||unstableshakenspecimen.com^ +||unstablesurroundingpowerfully.com^ +||unstantleran.com^ +||unsteady-challenge.com^ +||unstingwoibe.cfd^ +||unstripsawmont.com^ +||unsuccessfulimmense.com^ +||unsung-comment.com^ +||unsungexpression.com^ +||unsweetsortie.cfd^ +||untackreviler.com^ +||untakenwarned.cfd^ +||untawedcodgers.cyou^ +||untidynondescript.com^ +||untidyrelayidentifiers.com^ +||untiedchalaurelia.qpon^ +||untiested.com^ +||untiingaplombs.cyou^ +||untileakin.qpon^ +||untimburra.com^ +||untimely-chemistry.com^ +||untimely-way.pro^ +||untopproplex.com^ +||untoxicnerve.cyou^ +||untriedcause.pro^ +||untrigalmuces.cyou^ +||untristseaside.com^ +||untrue-use.com^ +||untruecompatibletype.com^ +||untrueknuckle.com^ +||untunesparely.cyou^ +||untwirlerk.qpon^ +||untwistdawtet.com^ +||untypedtisanesfinnac.cfd^ +||unurbanjowser.cyou^ +||unusuallypilgrim.com^ +||unvagueotalgic.qpon^ +||unvalidnuddfamed.qpon^ +||unvjcdfyqtexd.store^ +||unwantedkeelaccent.com^ +||unwantedpointingwaspish.com^ +||unwarpdz.qpon^ +||unwatergamahe.cfd^ +||unwdvbixtcrdk.space^ +||unwealonionmara.qpon^ +||unwedygerne.qpon^ +||unwelcometown.com^ +||unwellcen.qpon^ +||unwieldytowel.pro^ +||unwilling-space.com^ +||unwilyvive.cyou^ +||unwindjokerago.com^ +||unwindrecordersquare.com^ +||unwindrevision.com^ +||unwipedchedarunslit.cfd^ +||unwisepoliticallybenignity.com^ +||unwitchlamiafrowl.cfd^ +||unwitting-milk.com^ +||unwivedenampernor.qpon^ +||unwritmirific.com^ +||unwritten-cash.com^ +||unwrittenfront.com^ +||unwrycert.qpon^ +||unwwovelionced.cyou^ +||uo1yblpu9gckyuj5og9hp3ff9xmo.cfd^ +||uoarghkmwxcvj.website^ +||uod2quk646.com^ +||uofddaueodbeq.space^ +||uogmaufnar.com^ +||uohsqzovikvyr.online^ +||uoiwmpxqtvycl.space^ +||uojcqkdr.com^ +||uokaxbyfrkmnb.website^ +||uokctomaimarn.site^ +||uokdmnnvpuzyo.site^ +||uolmtihdbvbjf.website^ +||uolqcjnttuvir.website^ +||uolqifcwfgbpl.site^ +||uolzpczobcxmn.online^ +||uooumilwtodnh.website^ +||uorfbphtqebtu.site^ +||uorksewkwesln.space^ +||uoutube.com^ +||uovveljjaoxfe.store^ +||uoxocwxakddyq.space^ +||uoygxljrejhdv.space^ +||uoyphicg955k24viilqwb61.cfd^ +||uozbwocqypahe.site^ +||up62xjt5ewkxr3t.cfd^ +||upandsawhwh.com^ +||uparceuson.com^ +||upbbklofphpay.online^ +||upbeat-original.com^ +||upbeatnature.com^ +||upbeatshellos.cyou^ +||upbelchrats.cfd^ +||upbeltviscin.shop^ +||upbindsswythe.com^ +||upblastmottoed.cfd^ +||upboostsortie.com^ +||upboresoutar.com^ +||upbuyreifslanista.cfd^ +||upcityarles.com^ +||upcomingperusehike.com^ +||upcuoicobbycl.site^ +||updaight.com^ +||updartmoderne.qpon^ +||updaterack.com^ +||updragpellage.cyou^ +||updservice.site^ +||upedinburgh.com^ +||upendedmoolvee.shop^ +||upfataniiujjb.icu^ +||upfieldshive.cfd^ +||upfithzjdhsii.site^ +||upflamefeyerstoorey.cfd^ +||upfleeacraze.com^ +||upfpaqonqddtd.website^ +||upframemacauco.cyou^ +||upgirdpuggry.shop^ +||upgullyinkersunwise.cfd^ +||uphelmzanonia.shop^ +||upholdbrilliancerecast.com^ +||upiahkbmloumq.site^ +||upiwsqxrhnwzl.online^ +||upiykoefg.com^ +||upjmnvnvb.com^ +||upkmxceubeyuz.space^ +||upknodzbfkxmm.space^ +||upkpezmxsosqa.today^ +||upleaptmuffins.cyou^ +||upliftsearch.com^ +||uploopmidair.com^ +||uplyxzkvncinj.space^ +||upmixcytonpaul.cfd^ +||upnoqulclouar.space^ +||upodaitie.net^ +||uppentpuzzled.cyou^ +||upperpotionspersonnel.com^ +||uppitydiester.cyou^ +||uppityislot.shop^ +||uppropsclub.shop^ +||upqdazjgizzfl.space^ +||upqkyiklbo.com^ +||uprightbent.com^ +||uprightbunnypane.com^ +||uprightwrixlenome.cyou^ +||uprimp.com^ +||upripsoleas.cyou^ +||uprivaladserver.net^ +||uproardevisederived.com^ +||upsamurottr.com^ +||upsealrupa.shop^ +||upset-rent.com^ +||upsetexpulsionfairy.com^ +||upskittyan.com^ +||upsloperoyalet.com^ +||upsmnctvkbmaxfh.com^ +||upstampmoxas.com^ +||upstandingstoriessuited.com^ +||upstirslowmosttrabant.cfd^ +||upsups.click^ +||upsyjobbed.cyou^ +||uptightprotestanthail.com^ +||uptimecdn.com^ +||uptimewithmulticast.com^ +||uptimezloties.qpon^ +||uptjtciycieat.online^ +||uptracefeis.com^ +||upttorecoojaaxone.cfd^ +||upturnsidoist.cyou^ +||uptyzxegbsprx.space^ +||upupagummite.shop^ +||upuplet.net^ +||upupvyoutk.com^ +||upush.co^ +||upwallreticle.cyou^ +||upwardpublisher.com^ +||upwardsdecreasecommitment.com^ +||upwarpyearful.cyou^ +||upwindfaecalvoyager.qpon^ +||upwwqfvpvbara.site^ +||upxtgbgyfecfs.space^ +||upyayfmrdocin.space^ +||upymgrtnacpco.site^ +||upytayqjunonm.online^ +||upyuxrgoeiwcn.site^ +||upzmuerwksotm.site^ +||upznliourhwyz.fun^ +||uqanrpcrts.com^ +||uqarbdiuhttwo.website^ +||uqbdkzcwhdiqa.online^ +||uqbqarpuytxzd.site^ +||uqc8ffgbh5q4ow5wiet4f2yio19x9f7okkzw.cfd^ +||uqdcqbgvudao.com^ +||uqezxdyfwcqgn.website^ +||uqijlljfxmfbi.website^ +||uqjtqvzdujsjh.online^ +||uqkshqnkbcruy.online^ +||uqladyjswq.com^ +||uqletjdcbcwwtf.com^ +||uqmgqhhhutssb.online^ +||uqoefwpqdrpss.website^ +||uqojzdtzbonpz.online^ +||uqoqqnokfburn.online^ +||uqoxtbwmhofzc.site^ +||uqqclbgexmriv.store^ +||uqqgmvetpuzrs.online^ +||uqqmj868.xyz^ +||uqqypanepjrlw.site^ +||uqrchidhtpvmc.space^ +||uqrtfsfrawfgn.website^ +||uqtslulxiarcu.website^ +||uqulgujsuopge.space^ +||uqvgtqnthkqgi.space^ +||uqwaeymuxdghe.website^ +||uqxjunryq.com^ +||uqxtyjclokxex.website^ +||uqzdgsdiuudfv.space^ +||ur446tx7t1lkneo9xerwe828bqjqmbv1.cfd^ +||ur9grh7xbm8lw6.rest^ +||urablqistynjk.online^ +||uralicchatot.com^ +||uraliwarpagealmner.cyou^ +||uramilovines.cyou^ +||uraresceyx.shop^ +||urazinekecklesflabel.qpon^ +||urban-signal.pro^ +||urchinsamentum.cfd^ +||urdatingassistant.com^ +||urealath.com^ +||uredineelodea.cyou^ +||uredomayey.cfd^ +||ureicoutate.cyou^ +||urelanderpurg.org^ +||urfgqmeiiiooj.website^ +||urfloyohnekbh.online^ +||urfuvtemiptkw.site^ +||urgedcollapse.com^ +||urgedmildly.com^ +||urgentlydecoctioncorpulent.com^ +||urgentlyrightypast.com^ +||urgerrebasis.com^ +||urgestammer.com^ +||urgxnorjluhwl.online^ +||urheenexserts.cfd^ +||urimcaisson.cfd^ +||urimnugocfr.com^ +||urinegracefulfloating.com^ +||urineimprobable.com^ +||urkrxjgvugpqg.website^ +||urldelivery.com^ +||urlgone.com^ +||urlhausa.com^ +||urljofjevbddc.website^ +||urnooiew.com^ +||urnwhereabouts.com^ +||urocystfoozler.cyou^ +||urogrambaskets.cyou^ +||uropodobolet.cfd^ +||urpaldueuqktf.website^ +||urqpvwovevlni.site^ +||urrzeegpcpfbs.rocks^ +||ursinesartainintl.qpon^ +||urssjrxrosknm.website^ +||urulwxikmmaer.space^ +||urwbsmyrspycn.online^ +||urwqfecgnncli.space^ +||urwvphdnwhdzl.site^ +||urzdxiiugisad.site^ +||usable-class.pro^ +||usable-march.pro^ +||usagecoincident.com^ +||usationguggles.qpon^ +||usauncebogtrot.cfd^ +||usavmhnwphcmm.online^ +||usbrowserspeed.com^ +||uscahcjmcjyuj.space^ +||used-association.com^ +||usedflora.com^ +||useepugmark.cfd^ +||useful-appearance.com^ +||usefulcontentsites.com^ +||usefullyvirginity.com^ +||usefulspeak.com^ +||uselessbackstage.com^ +||uselessfleetingexclude.com^ +||uselessmigraine.com^ +||usemlpacyzqxi.online^ +||userimmediate.com^ +||userstat.net^ +||usertag.online^ +||usewmeukdgmnh.website^ +||usgutmbdobzni.website^ +||ushasruttier.cyou^ +||ushercensor.com^ +||usherfrightenwaiter.com^ +||ushermassacrecranny.com^ +||ushxzrtwwxbho.space^ +||usifzaajrpmzb.site^ +||usihecbkdzxbw.site^ +||usingstrikingindoors.com^ +||usjbwvtqwv.com^ +||usjeardahfoqc.online^ +||uskokvolutin.com^ +||uslqdimcuxehp.store^ +||usmajesticrake.com^ +||usoasopersbefore.org^ +||usooxrztkgwye.online^ +||usoxhzmpfqehe.space^ +||ussmtrack.com^ +||ust-ad.com^ +||usthirstypsalm.com^ +||ustvxwik.com^ +||usuallybeholdapathetic.com^ +||usuallyformal.com^ +||usualsparehumanity.com^ +||usuarydoltish.shop^ +||usubtrxjxktis.online^ +||usurv.com^ +||usvrkrkqfnzbh.online^ +||uswgjyclbvtjj.space^ +||uswtritons.shop^ +||uswvvrisswcbd.site^ +||usybvizjdfyur.website^ +||usztvnmmlukau.website^ +||uszxsqvpukbwz.website^ +||ut5tg34rmbp7kqooh.cfd^ +||utagyernjwdnw.website^ +||utahansninonsconamed.cfd^ +||utajxinmmiuhp.site^ +||utarget.co.uk^ +||utchinit.shop^ +||utgejarcruuny.website^ +||utgpsiesiotbx.website^ +||uthorner.info^ +||utifuwilkltlf.space^ +||utilized-school.pro^ +||utilizepitchedsurpass.com^ +||utillib.xyz^ +||utiltpakgul.com^ +||utivhkpuskisv.site^ +||utjjeiyxnfmvr.website^ +||utkauegwjdguc.website^ +||utl-1.com^ +||utm-campaign.com^ +||utmostsecond.com^ +||utnbfoeokjxuz.website^ +||utoumine.net^ +||utppooxusnnzr.online^ +||utqsamjgxtrhv.website^ +||utrabixfwlgyq.site^ +||utrumkepping.cfd^ +||utsmuulnqmplk.site^ +||utsqdufhyhwyz.space^ +||utteredadisappo.com^ +||utterlyhourglassspent.com^ +||utterrender.com^ +||uttership.pro^ +||uttgahrpiemjz.space^ +||utubepwhml.com^ +||utvuveiklresu.website^ +||utwghbrzkywjb.website^ +||utwjzcomsuoqd.site^ +||utxcfwjjjpsjt.space^ +||utxtehvydvtus.website^ +||utysolomonaut.com^ +||utzzytfmbfekv.website^ +||uubvkadmkvnys.space^ +||uucfcpcdqtzpm.site^ +||uucmclhuqdszr.site^ +||uuejoxtufssdg.site^ +||uufbfybqphccv.online^ +||uufgarwmibysu.online^ +||uufjxnfitxtvt.website^ +||uuhnjutdqxnac.space^ +||uuidksinc.net^ +||uumbahniwkyki.space^ +||uunelfvhqvtbe.website^ +||uuomedmlqscpa.store^ +||uupzixjvcwuda.website^ +||uuqidkmyyyuqi.website^ +||uurtdukslpmby.com^ +||uurufnyiiriee.online^ +||uuuwxykgcvcgp.website^ +||uuwjrmvavkgrs.site^ +||uuwktaijthizo.space^ +||uuxgtmgrxflig.store^ +||uuxwydleeeqdg.online^ +||uvbiyrhzsqcoq.space^ +||uveitisabaffingine.cyou^ +||uvfckyovekkqh.space^ +||uvhmsovvhfdzo.site^ +||uvhrjgnstmxxz.space^ +||uvkqyxjdiswkt.site^ +||uvopoefe.com^ +||uvpcsohrnfxqk.site^ +||uvpwmzjuncdty.space^ +||uvrggpvzkobmx.store^ +||uvtbfriwugkhn.store^ +||uvtbimseazfye.site^ +||uvtwcxrwiibvy.online^ +||uvvhimqchjcvq.site^ +||uvzh-defender.pro^ +||uwahagoyvuccd.website^ +||uwauarphjaflw.website^ +||uwcbytsvmaojez.com^ +||uwdqokjwmnfxu.site^ +||uwfsrubjqlibq.store^ +||uwkxicztqhntk.space^ +||uwlgobzldxdun.space^ +||uwmsywuekjbcr.site^ +||uwnqfhnsmveti.icu^ +||uwnzmswxqezot.space^ +||uwoaptee.com^ +||uwppdmkzyykwk.site^ +||uwqxdgtenyjdd.online^ +||uwsmamsebynub.site^ +||uwsxaoencfiyo.site^ +||uwtybptzsqcvo.online^ +||uwvlmbkscdfqm.com^ +||uwvuepnaaefvm.space^ +||uwxtoegtarqfw.online^ +||ux3g1wivcklvno.cfd^ +||uxahhowennlqf.website^ +||uxazhgibyblus.store^ +||uxbygjzvingbv.online^ +||uxcjzhltqcgxy.space^ +||uxffgxaqqkiha.site^ +||uxgipzzehpttp.online^ +||uxibgyftvdzyr.site^ +||uxirxhplkjpke.website^ +||uxitlzusizsfk.space^ +||uxjbffdmqinye.site^ +||uxkpztjxinsne.site^ +||uxlccmhwbtldq.space^ +||uxljsbfuyqizt.store^ +||uxncqfiilwfkw.site^ +||uxpjzndoedoha.website^ +||uxqudtzzbkhfq.website^ +||uxtjjycjpxixv.site^ +||uxtzpzxryhbvh.online^ +||uxwguokhhjghp.space^ +||uxwhbqwdamroi.site^ +||uxwinyafloqfy.store^ +||uxwjgejaymj.com^ +||uxwucqtaws.com^ +||uxxtcgwx4i7lrq9.cfd^ +||uxyqugxmogylb.online^ +||uxyyom52qf23k1f9p5mepmv.cfd^ +||uxzkvkzxhxxjv.space^ +||uxzybqtqlauaa.space^ +||uy4el5xhwpy85z.rest^ +||uydsjtaeibues.online^ +||uyduwdmzcwkn.com^ +||uyfmvrimjyoye.site^ +||uyfpvjbheoyws.store^ +||uygpvztdwrjcu.website^ +||uyinpzcqltuqy.space^ +||uyjbcnhohtbxv.space^ +||uyjngwpuciwgq.space^ +||uynrxrspirsnw.space^ +||uynukzlkdixye.site^ +||uypbyopkhpoas.store^ +||uyprwkmrammol.space^ +||uyqwpnspgadkq.site^ +||uyriroadwtdwu.space^ +||uyrolbvqcbrot.site^ +||uyruipmifdodo.space^ +||uyrxaojxhlahg.space^ +||uyshhyqje.com^ +||uyvfljocpfef.com^ +||uywfpprhavyog.site^ +||uyxphejmf.com^ +||uyybspugtnmit.website^ +||uyzosjiuslcop.online^ +||uzapgolabdiyl.site^ +||uzasjoeoqwruj.site^ +||uzbekchatibaba.cfd^ +||uzdpzjmscmlgz.website^ +||uzgcdprqhjbak.space^ +||uzgppwcacrs.com^ +||uzhjcqoywhrvn.space^ +||uziesijakitin.store^ +||uzihdotfqfoof.site^ +||uzioxnjmnonzu.site^ +||uzjvhbzumhnkg.online^ +||uzkkmeqgofrmcf.cfd^ +||uzocxzrbkcrpk.online^ +||uzokb1ivryvorr28cuhhhx2nb2p.cfd^ +||uzpuaveerqjei.site^ +||uzpwejzqjtqdg.store^ +||uzqwypwkurfkb.website^ +||uzukakccaflam.space^ +||uzvvqnaqblxvx.online^ +||uzxksecxqrchr.online^ +||uzzxkatxegdzh.website^ +||v1pmqcgkfoghr374olwyho.cfd^ +||v2006.com^ +||v2cigs.com^ +||v3wo53bqxw48bvlc.cfd^ +||v77feu693lktt4491qtm1yw8.rest^ +||v8co5lge8og6xy.cfd^ +||v8uq327bic54hq.cfd^ +||v9gb1bfvyzig484tk.cfd^ +||vaatjcfcwvjsa.space^ +||vaatmetu.net^ +||vabtbjzuwbzki.online^ +||vacancyconsiderably.com^ +||vacaneedasap.com^ +||vacantazon.com^ +||vacantborder.com^ +||vacationmonday.com^ +||vacationsanitaryskip.com^ +||vaccineverifyweaker.com^ +||vaccinewatape.qpon^ +||vaconaamercesksar.qpon^ +||vacruwsug.com^ +||vacuistnovillokarroo.cyou^ +||vacuousgaybinetawsing.qpon^ +||vacuumachalta.qpon^ +||vacuumcoconut.com^ +||vacwrite.com^ +||vafbpeqennikp.website^ +||vagientlinder.cfd^ +||vagijujubeballard.qpon^ +||vagrejaba.com^ +||vague-key.com^ +||vaguefact.pro^ +||vaguelyspecialty.com^ +||vahqrjopgk.com^ +||vahwhnqhkkpts.site^ +||vaikijie.net^ +||vaimucuvikuwu.net^ +||vainanalyst.com^ +||vainfulkmole.com^ +||vak345.com^ +||vakbsnowixqns.com^ +||vakextnkluekz.site^ +||valeenjoy.com^ +||valemedia.net^ +||valencecoals.shop^ +||valestimulatesettle.com^ +||valestumble.com^ +||valeswavably.qpon^ +||valetturbulentwonderfully.com^ +||valianttossczar.com^ +||valiculpon.cyou^ +||validcombine.com^ +||validcounter.com^ +||valleyarmiessunflower.com^ +||valleyscounterfeit.com^ +||valseheddle.qpon^ +||valuablemarch.com^ +||valuablenumber.com^ +||valuad.cloud^ +||valueclick.cc^ +||valueclick.com^ +||valueclick.net^ +||valueclickmedia.com^ +||valuedfingerdrive.com^ +||valuerabjure.com^ +||valuerportray.com^ +||valuesuffering.com^ +||valuethemarkets.info^ +||valvesappalsrubato.cfd^ +||valvyre.com^ +||valxutydijoem.online^ +||vamosesagonic.com^ +||vandalismloungenylon.com^ +||vanderlisten.pro^ +||vanglobalau.cfd^ +||vangsosmosedemplane.cfd^ +||vanillagrapelowlife.com^ +||vanillanegotiationitem.com^ +||vanillasurfing.shop^ +||vanishedfragranceracial.com^ +||vannetlignone.qpon^ +||vanquishnorthern.com^ +||vanwardjincan.cfd^ +||vaokbuyvpiyzw.website^ +||vapedia.com^ +||vapourdifferenceszealot.com^ +||vaqjgbsmdrqzp.website^ +||vaqykqyvvazbz.top^ +||vardsusyseinpo.com^ +||varechchokier.shop^ +||variabilityaviationmutiny.com^ +||variabilitydonor.com^ +||variablehour.com^ +||variablesthirdtransparent.com^ +||variationbelovedsplit.com^ +||variationconfused.com^ +||varietyofdisplayformats.com^ +||varietyproduction.com^ +||varietytooartmolge.cyou^ +||varifybalas.cyou^ +||variouscreativeformats.com^ +||variousformatscontent.com^ +||varletamotus.cfd^ +||varmentgyroseioniser.qpon^ +||varnishoverprotective.com^ +||varshacundy.com^ +||vartoken.com^ +||varvelabrus.shop^ +||varvelunwagedwair.qpon^ +||varyingwolfsmile.com^ +||varypollintelligent.com^ +||varyresponsible.com^ +||vasebasin.info^ +||vasstycom.com^ +||vast-size.com^ +||vast.pet^ +||vast27.net^ +||vasteeds.net^ +||vastroll.ru^ +||vastserved.com^ +||vastsquais.cfd^ +||vasuyard.cyou^ +||vatanclick.ir^ +||vaudoisbutyne.cyou^ +||vaudoisphar.cfd^ +||vaugroar.com^ +||vaultwrite.com^ +||vaurtmqtharah.site^ +||vavasorscissil.cfd^ +||vavuwetus.com^ +||vavywfsfldhpb.space^ +||vawntieromykoramate.cyou^ +||vawonybnkgclb.site^ +||vawturpis.com^ +||vax-now.com^ +||vaxjhqfaahmgt.site^ +||vazgaxputffu.com^ +||vazypteke.pro^ +||vbbpuopouymio.online^ +||vbcojhroxkoaf.online^ +||vbdozzrdqluca.store^ +||vbjibjsftqxkq.site^ +||vbjuqguxmgrhk.site^ +||vbkvubotujxh.com^ +||vblaejlytzpwh.online^ +||vblwixpwrrrjh.site^ +||vbrkgmqhgbglx.website^ +||vbs-protect.pro^ +||vbtpkdvezdeoo.site^ +||vbtrax.com^ +||vbtrbulabutew.site^ +||vbtwegnwgvhpr.site^ +||vbvwcpowriyyo.space^ +||vbwglrdlxyqwt.online^ +||vbxflfolp.com^ +||vbxfzermlszwx.site^ +||vbyhuugfwnfic.online^ +||vbykiprxfpvpt.space^ +||vbzlokvdommwl.online^ +||vbzmntworwdqt.website^ +||vcabwutmtprqr.site^ +||vcaltfivskzon.online^ +||vcbarjjmuxbxi.website^ +||vccerpzorwrh.com^ +||vccskdlrblqqn.store^ +||vcdc.com^ +||vcenygfcoyias.site^ +||vcfqlfgziaoze.online^ +||vcglprbqstyed.space^ +||vcigmsgdhiojg.site^ +||vcjfxnwmzpdgu.store^ +||vcjgexvzjuomd.online^ +||vckgixqqnyosr.website^ +||vclaehsof.com^ +||vclsyumjrbiel.online^ +||vcluuabdlvgmx.online^ +||vcmedia.com^ +||vcommission.com^ +||vcpljt1i1hk1jrpg.cfd^ +||vcpxqngfyulqg.website^ +||vcqzjs.com^ +||vcvbogndkwheb.space^ +||vcvlcovrhzdqb.website^ +||vcvncewkfhtmp.website^ +||vcxetmvjdgggi.store^ +||vcxzp.com^ +||vdbaa.com^ +||vdbbiwvxvhzdt.online^ +||vdbedxruxhcdm.website^ +||vddf0.club^ +||vdeukmyunderthfe.org^ +||vdeztemladdeb.online^ +||vdgdlcthaugoa.site^ +||vdggilkiyeagl.online^ +||vdgtzmfxlfpmb.space^ +||vdgxabnuwfsrn.site^ +||vdhflgzfvuoae.online^ +||vdhvldghccavh.site^ +||vdkjlpxycgylsw.com^ +||vdkvjefuqvfoh.site^ +||vdlvry.com^ +||vdmipaykpenkw.website^ +||vdmrsubdqloit.site^ +||vdocifgpcjirs.online^ +||vdopia.com^ +||vdqdcjwecjcqy.store^ +||vdqkegutiwxez.website^ +||vdtmacbhiltpf.website^ +||vdukpbmavzcne.store^ +||vdulz.org^ +||vdxsvladcihnm.online^ +||vdzepdkifdmeg.site^ +||vebefsusofpzg.space^ +||vebejgenfzchn.space^ +||vebv8me7q.com^ +||vectoine.net^ +||vectorsbanquedole.cfd^ +||vedqxliyxcqkl.space^ +||veepsbolognaramose.cyou^ +||veesformols.shop^ +||vefmfptjnucij.online^ +||vegetableamusement.xyz^ +||vegetablebleachdeprive.com^ +||vegetablechickendisqualify.com^ +||vegetableimpressive.com^ +||vegetaloutrock.cyou^ +||vegetarianrotperpetrator.com^ +||vehemenceoccupied.com^ +||vehemencepoint.com^ +||vehiclecleaned.com^ +||vehmeinrorinaldo.cfd^ +||veiledengages.qpon^ +||veineryhyoidal.cfd^ +||veinsoloistsubstitute.com^ +||vekmygssmfyov.online^ +||velamendiobely.qpon^ +||velarsscorny.cfd^ +||velatestubb.com^ +||veldtsjureltaxemic.qpon^ +||velhleejddigq.online^ +||velkflirgbkvu.space^ +||vellumsrefutal.shop^ +||velocecdn.com^ +||velocitycdn.com^ +||veluredcorveenikko.cfd^ +||velvetdock.com^ +||velvetymaximum.pro^ +||vemkfqly.com^ +||ven5k12mb81cjklipi8nf.cfd^ +||vendeanpico.shop^ +||vendigamus.com^ +||venedning.cyou^ +||veneeringanguishwhipped.com^ +||veneeringhystericalreward.com^ +||veneralhiring.cfd^ +||venetesfluidly.shop^ +||venetrigni.com^ +||vengeancearrogancethee.com^ +||vengeancewaterproof.com^ +||vengeful-egg.com^ +||vengingtrental.com^ +||veningspond.org^ +||veniseireless.cfd^ +||venocfzxlropn.store^ +||venomythrap.cfd^ +||venosalfubdynam.cyou^ +||ventageslorp.com^ +||ventailyohounspicy.cfd^ +||ventanaunfrankcst.qpon^ +||ventmondain.com^ +||ventrequmus.com^ +||venturead.com^ +||venturesupwardcreated.com^ +||venturesymboldefend.com^ +||venturewigbeast.com^ +||venueexpanded.com^ +||venueitemmagic.com^ +||venuesbracer.qpon^ +||venulaeohed.qpon^ +||veodccuvtympn.space^ +||veopoluoxfvtc.online^ +||vepbwzodotfaz.online^ +||verbalpedestalchilly.com^ +||verbassistance.com^ +||verbouskeywaysyke.cfd^ +||verbsponsor.com^ +||verdimannidetrapa.qpon^ +||verdindungingsubsist.qpon^ +||veret-fqv.com^ +||vergitarted.qpon^ +||verifiablecomfort.com^ +||verificationgloryrenaissance.com^ +||verificationinternalhamburger.com^ +||verificationscrub.com^ +||verifygoog.cfd^ +||veritrol.com^ +||verlrhm1ch1mtmryo63u.rest^ +||verminloughskentia.cyou^ +||verminybatlerbanyoro.qpon^ +||vermixwaltzerhavance.cyou^ +||verngrog.cfd^ +||verninchange.com^ +||vernonspurtrash.com^ +||veronaaffect.cyou^ +||versatilecertificate.com^ +||verse-content.com^ +||verseexposurethanksgiving.com^ +||versionsextraordinary.com^ +||versionslaughter.com^ +||versionspactpeeks.com^ +||versionsphysicaldropper.com^ +||versionsprobabilitydeposit.com^ +||verticallysaturate.com^ +||vertigovitalitywieldable.com^ +||vervespeaked.cyou^ +||verwh.com^ +||verygoodminigames.com^ +||vesaniamissusriboso.qpon^ +||veskitnerved.com^ +||vesperprayful.qpon^ +||vespinafoveae.qpon^ +||vespymedia.com^ +||vesseldoubts.com^ +||vestintend.com^ +||vesturetwatskhirkah.cfd^ +||vesuvinaqueity.top^ +||vetchesthiever.com^ +||veteranassacu.cyou^ +||veterancommentary.com^ +||vetofellowshipfly.com^ +||vetoplain.com^ +||veuptyvapstbj.space^ +||vewikvuvrucdc.online^ +||vewpxodougmmt.site^ +||vexevutus.com^ +||vexio19.net^ +||vexolinu.com^ +||veymqlpxnqbih.website^ +||vezhuwcgnvmtu.online^ +||vf49j2yzhun24gg776.cfd^ +||vfaisecgl.com^ +||vfamnpvtqmhpw.site^ +||vfcpikqdaldqk.online^ +||vfdsfnvcaqyjd.space^ +||vffkhnbxpncce.site^ +||vffncubbivrcm.website^ +||vfghc.com^ +||vfghd.com^ +||vfgte.com^ +||vfgtg.com^ +||vfhtgrjsmcdzi.site^ +||vfhzpqmfxkm.com^ +||vfjjoywxbq.com^ +||vfjkrktoqhmoy.space^ +||vfjktzbecbede.space^ +||vfjoawcligjcs.online^ +||vfmabriuyjvuld.com^ +||vfnxqznmwbcee.store^ +||vfpdbwwrvkecy.store^ +||vfqejeazinwis.site^ +||vfqgtrrrtsugw.space^ +||vfsjkejgsjhhp.website^ +||vfsxmbvlbebew.online^ +||vftdlwsuesedd.com^ +||vfthr.com^ +||vfulirgkuogp.in^ +||vfuttiawfmix.in^ +||vfuvsnwofwbtn.space^ +||vfwpaocvysbpo.site^ +||vfxcdhckojsqd.store^ +||vfyfldhdthlin.space^ +||vfytswyxqfgzp.space^ +||vg4u8rvq65t6.com^ +||vgbllzycxjrub.online^ +||vgbvqutapetpb.website^ +||vgefehgpxogcw.online^ +||vgexzbbuusqxf.space^ +||vgfasfrttxhrc.site^ +||vggfftcbic.com^ +||vggvzeedluadp.com^ +||vgiutzmosczwl.online^ +||vgjzcwkkyzldp.store^ +||vgkaszpddsetc.online^ +||vgoawzppsjrff.store^ +||vgoociszjbahl.site^ +||vgpjkpqwiqgie.space^ +||vgrmgnzkbcpjj.site^ +||vgtdmpyau.com^ +||vgtevnzhlujfv.website^ +||vgukgvtglfjnp.space^ +||vgutxnvrwydey.website^ +||vguvlebxydqby.site^ +||vgvlomnrcekke.website^ +||vgxjxrbvldgfw.online^ +||vgxmagbsctvdf.online^ +||vgyppkfadflol.website^ +||vgzglvykuyclh.store^ +||vgzpyrrekytio.space^ +||vh4kpb2zkig2bfcgovjrlj2.rest^ +||vhanxmtpkluuf.online^ +||vhbbeareiglah.website^ +||vhbbubfytrjht.space^ +||vhbprmbdywfke.website^ +||vhcncdlxvxpwe.site^ +||vhdoxakztfwdp.website^ +||vhewpprxfnprc.space^ +||vhfwzzdxybakb.site^ +||vhguwxfcbjopc74k.cfd^ +||vhiamqzkvqyhe.space^ +||vhjjsemqjyvnq.space^ +||vhkitnpxk.com^ +||vhlinocmokqtv.online^ +||vhltqzhcuoobq.website^ +||vhnhtrsswypzj.site^ +||vhnmfrkruzdqg.space^ +||vhnuaatydmqeg.site^ +||vhojdkvcadavb.space^ +||vhova.com^ +||vhqdzoxpepcem.store^ +||vhzcewosjxcxe.website^ +||viaanswerwillow.com^ +||viabeldumchan.com^ +||viablebowssen.shop^ +||viablybai.cfd^ +||vialedappetit.cfd^ +||viamariller.com^ +||vianboaegiaed.website^ +||viandennav.cyou^ +||vianoivernom.com^ +||viasfanfoot.cfd^ +||viatechonline.com^ +||vibcwydjasdkx.space^ +||vibistsdragmanmokes.cfd^ +||vibnpoar.com^ +||vibrantscale.com^ +||vibtrvfiegdpi.site^ +||vic-m.co^ +||vicaireuniaxal.cfd^ +||vicarabalkingarbored.cyou^ +||vicaryhicatee.com^ +||viceoptionsrattle.com^ +||vicesgotrajabeice.cyou^ +||vicesus.com^ +||victimfatalsentiments.com^ +||victimmammatitanic.com^ +||victimstealwrote.com^ +||victoriousinspireinept.com^ +||victoriousmansion.com^ +||vicunasblatch.cfd^ +||vid.me^ +||vidcpm.com^ +||video-adblocker.com^ +||video-serve.com^ +||videoadstech.org^ +||videobaba.xyz^ +||videocampaign.co^ +||videocdnmetrika.com^ +||videocdnshop.com^ +||videoplaza.tv^ +||videosprofitnetwork.com^ +||videotapewagon.com^ +||vidrugnirtop.net^ +||vidscriptshark.com^ +||vidwestxyz.com^ +||viellewhittaw.cyou^ +||vieva.xyz^ +||viewablemedia.net^ +||viewclc.com^ +||viewflood.com^ +||viewpath.xyz^ +||viewworthwhile.com^ +||vigilancebreaking.com^ +||vigilant-entry.pro^ +||vigorous-average.com^ +||vigtwjvdkhvpr.space^ +||viharafermata.shop^ +||vihararayonny.qpon^ +||viiadaof.com^ +||viibslav.com^ +||viiczfvm.com^ +||viidihpwwzbbe.store^ +||viidsyej.com^ +||viifcktm.com^ +||viiftssg.com^ +||viifwjox.com^ +||viigoecc.com^ +||viiigle.com^ +||viijquek.com^ +||viijxyqp.com^ +||viikpgei.com^ +||viikqoye.com^ +||viikuhhs.com^ +||viiokavr.com^ +||viiqkzqv.com^ +||viiuwecw.com^ +||viiwgrhk.com^ +||viixdjse.com^ +||viiyfuzhypuns.site^ +||viiyutty.com^ +||viiyxefb.com^ +||vijlvlnwnkmfa.space^ +||vikablavflhe.com^ +||viktsqzdbvboe.site^ +||vikvvmfwclbev.site^ +||vikznozzhxnmx.site^ +||vilayetaurataoctodon.qpon^ +||vileeconomical.com^ +||vilelypulli.cyou^ +||vilerebuffcontact.com^ +||viliacomutiveyfacks.qpon^ +||vilihapiton.shop^ +||villagerhurricane.com^ +||villagersymphonypilgrim.com^ +||villainindiscreetnewsletter.com^ +||vilytaku.com^ +||vimentasissealet.cfd^ +||vimpokbpdvctc.site^ +||vimrcluqfmwih.site^ +||vinaliapilers.qpon^ +||vinassefarrageexla.cyou^ +||vindicosuite.com^ +||vindictivemopenthrone.com^ +||vinegardaring.com^ +||vinermusingsinjust.cyou^ +||vinettaahaaina.shop^ +||vinit.cloud^ +||vinousfirycondors.cfd^ +||vinstigo.com^ +||vintagephilipnostrils.com^ +||vintagerespectful.com^ +||vinwtqpxijcfp.website^ +||vinytalustzar.cfd^ +||violanfantomsflrie.cfd^ +||violateserenity.com^ +||violationsyllable.com^ +||violationtones.com^ +||violentantony.com^ +||violentenclose.com^ +||violentlinedexploit.com^ +||violentlybashfulpert.com^ +||violet-attitude.pro^ +||violetcommercial.com^ +||violetlimitdownstairs.com^ +||violineguldens.cyou^ +||violinspickets.cfd^ +||violoussummarcormels.qpon^ +||viosdojjklsuq.site^ +||viowrel.com^ +||vipads.live^ +||vipavkacrfujf.online^ +||vipdine.space^ +||viperishly.com^ +||vipersuccessfullygoblet.com^ +||viperydanite.cfd^ +||vipwqpsoxnmwt.site^ +||viraginjasyruths.cyou^ +||viragosclum.cfd^ +||viral782.com^ +||viralflashed.cfd^ +||viralmediatech.com^ +||viralnewsbd.xyz^ +||viralnewssystems.com^ +||virelairushiercurf.cfd^ +||virelon.com^ +||virentcamused.qpon^ +||virgingrapefruitweariness.com^ +||virginityinvasion.com^ +||virificrecordretunes.cfd^ +||virileissedoi.qpon^ +||virionretint.qpon^ +||vironcanulas.cyou^ +||virosisrase.shop^ +||virsfeqtfhlnp.site^ +||virtuallypractice.com^ +||virtuallyprotestantamplitude.com^ +||virtuedeadlock.com^ +||virtuesmodes.cfd^ +||virtuous-beer.com^ +||visagraters.cyou^ +||visariomedia.com^ +||viscidcowpatspaneler.cfd^ +||visiads.com^ +||visibilityconnectashy.com^ +||visibilityintentionaladmiral.com^ +||visiblegains.com^ +||visiblejoseph.com^ +||visiblemeasures.com^ +||visibleship.pro^ +||visionmemorable.com^ +||visiteddrunkardcontaining.com^ +||visitingmargaretantony.com^ +||visitingthirdnine.com^ +||visitmexitli.cyou^ +||visitseyoty.com^ +||visitstats.com^ +||visitweb.com^ +||visscurare.cfd^ +||vistaseventhunkind.com^ +||vistlikrecip.shop^ +||vistofervor.cfd^ +||vital-association.pro^ +||vitalicberain.qpon^ +||vitaminendedclearing.com^ +||vitiqbaajtbmd.site^ +||vitrablinds.qpon^ +||vitrialreamers.qpon^ +||vivacecored.cyou^ +||vivaceheed.cyou^ +||vivaciousinterposed.com^ +||vivianramealspl.cfd^ +||vividersemples.cfd^ +||vividwithmainstay.net^ +||vivodemisrentas.net^ +||vixentycckwtz.buzz^ +||vizardsuppent.cfd^ +||viznfzhbiiual.space^ +||vizoalygrenn.com^ +||vjehbytyxzsom.site^ +||vjfosatjhodhx.space^ +||vjhfsebbyxwru.website^ +||vjhixkkzjtlau.online^ +||vjlckfkbcuswo.site^ +||vjlocpypzmhzr.website^ +||vjmwnvteuhwhe.website^ +||vjpraiveafxow.space^ +||vjqefkvhrjyor.store^ +||vjrfsrpvnznto.site^ +||vjrjvojuxlkhc.website^ +||vjtbgysqkmngz.website^ +||vjtpmzsmcwfko.online^ +||vjtwujdcntxgp.website^ +||vjuenyeckagkz.site^ +||vjvkhhhhchstp.site^ +||vjwnqxbxvvcng.space^ +||vjyljycvfcfrj.online^ +||vjzlvloavqarr.space^ +||vkaszkwyibcwl.site^ +||vkatqrbcrdyta.site^ +||vkdqiijvnljek.online^ +||vkdrvsfxomtxw.space^ +||vkehcvahibhix.space^ +||vkfzlcidxisdw.store^ +||vkgtrack.com^ +||vkhjpjucdqfgg.site^ +||vkiibgvoxf.com^ +||vkiqovvfivibd.space^ +||vkjhbnngmefp.com^ +||vkjiwgmipziva.space^ +||vkkcpopwaoehpl.com^ +||vkofmhfpfjyak.online^ +||vkofmxopxieit.space^ +||vkoqaquif.com^ +||vkpfzrvrkwimum.com^ +||vkqowkbmcjzin.online^ +||vkutvfsmcqmhji.com^ +||vkxramtezhgix.online^ +||vkynuspzupokz.website^ +||vkzkmfqcediaf.site^ +||vl3c2qbmpforqyl.cfd^ +||vl3kzllozqmpiljg9kqegwj1jkfv.cfd^ +||vlabddfdsgein.space^ +||vlauqfbnfigdk.site^ +||vldlklwhhcdyf.site^ +||vldrztpyzwrwi.xyz^ +||vldukhscbnhsl.site^ +||vlflbbqnagpac.store^ +||vlfmcodhzuthr.website^ +||vlfpptelkjkssy.com^ +||vlitag.com^ +||vlivayendmfmk.space^ +||vlkvviufipfsw.website^ +||vlmllaeqhcvnb.store^ +||vlmwrffewzarp.site^ +||vlnbnmlwzndjm.space^ +||vlnk.me^ +||vlogerads.com^ +||vlopkjmlsefwc.site^ +||vloxhazxibons.website^ +||vlrivvlxtdtke.online^ +||vlry5l4j5gbn.com^ +||vlsofuzczfmqz.website^ +||vltlk.com^ +||vlvlkbqlllqeh.site^ +||vlvsmfjibrzie.space^ +||vlwjbqqovvugf.site^ +||vlwqyhgnslfad.space^ +||vlxctnusilgeh.site^ +||vlxhvoidlnrjf.space^ +||vlxrvlvnasoys.space^ +||vlzcnhjdgmenp.space^ +||vlzyxkjxfrpku.space^ +||vmapojovqesek.online^ +||vmawhaylmkxpv.vip^ +||vmcljlrddxcbn.website^ +||vmeacwefprekg.website^ +||vmecbdkpvugpj.website^ +||vmenlgdowysab.website^ +||vmhrqjvddhnwp.site^ +||vmicdkmpvgbqt.online^ +||vmifheobnanq.in^ +||vmiymbabxueli.space^ +||vmjanoicaljna.online^ +||vmjyqupzwl.com^ +||vmkcgpjvhfifb.space^ +||vmkcrlvtprhfa.online^ +||vmkebqorunsod.site^ +||vmkpzpmvhvekl.site^ +||vmkxwzvxlexlm.site^ +||vmmcdn.com^ +||vmnerjogspeax.site^ +||vmngxjiczmmzm.site^ +||vmntnkbmcdvyy.space^ +||vmpdmfacpctto.space^ +||vmring.cc^ +||vmstifxxthege.online^ +||vmuhahdlfties.website^ +||vmuid.com^ +||vmuljmppehlem.online^ +||vmvxxphjazbtu.space^ +||vmvzzmv.shop^ +||vmwoxqroobncg.online^ +||vmxamtjtu.com^ +||vmxckyomhbtcz.space^ +||vmxneqttwxhcv.site^ +||vnaeqsorsffzh.online^ +||vnakjojlazcpm.online^ +||vnbbfvgbeklnf.store^ +||vndayuqoyai.com^ +||vndhbthmtxgzo.space^ +||vndrosaaypjvu.website^ +||vnijzahxlejop.website^ +||vnjkuwtlddxom.website^ +||vnkzpvmaximaz.website^ +||vnnrttxnoybxm.website^ +||vnnvrstpewqyb.site^ +||vnsvifdfhuehe.com^ +||vntmrzvsztqfk.space^ +||vntsm.com^ +||vntsm.io^ +||vntx-protect.pro^ +||vnufplcscoctg.online^ +||vnvdljol.com^ +||vnvklhydurflj.online^ +||vnvlbydtlqvw.com^ +||vnxfggfffjcvp.online^ +||vnzuedcokblpx.site^ +||vnzwvnevgfemyz.com^ +||vobppsqcckd.com^ +||vocalchillydispleased.com^ +||vocalsharnpan.cfd^ +||vocationbunk.com^ +||vocatpangas.cfd^ +||vocoidhoglikewreck.cyou^ +||vocrojjwugeno.website^ +||vocularobtestseat.qpon^ +||vodobyve.pro^ +||vodpvbtjloody.space^ +||voeqzuuvnwpad.website^ +||voesdraggle.cfd^ +||voesghebeta.cyou^ +||voesinique.cyou^ +||voetfencedwedgies.cfd^ +||vofhsabpmtfmk.site^ +||vogsjiomclaah.website^ +||vogueoval.com^ +||voguesebkhabrucina.cyou^ +||voicedstart.com^ +||voiknrayaanxl.space^ +||voirpfhavircs.online^ +||vojxriaqujzlg.site^ +||vokegwzgjivii.online^ +||volatichyoides.qpon^ +||voldarinis.com^ +||voledrheaedingly.cyou^ +||volform.online^ +||volleysstrany.cyou^ +||voltaly.net^ +||volumedwidegap.qpon^ +||volumesundue.com^ +||volumntime.com^ +||voluntaryboy.com^ +||volunteerrelievegrateful.com^ +||volutaeyesscitron.cyou^ +||volutedcaspiantictacs.qpon^ +||volutinmumness.cfd^ +||voluumtrk.com^ +||voluumtrk3.com^ +||volyze.com^ +||vomitsaschernerka.cyou^ +||vonkol.com^ +||vooculok.com^ +||vooodkabelochkaa.com^ +||vopddrdsxkeff.space^ +||vopqymwdmyxiiv.com^ +||voqhfpygpzece.website^ +||voqkwseeeorkx.site^ +||voqvsespgjstz.online^ +||vordwtoyptrxf.website^ +||voredi.com^ +||vortexirked.cfd^ +||vosdgzthzejqr.website^ +||voselskqvlkxy.online^ +||vosfcwwsdurwp.site^ +||vosnbtvyzspne.website^ +||votarycogger.cfd^ +||voteallude.com^ +||votepercussivepoplar.com^ +||votesalida.cyou^ +||votnwwhqtuohp.store^ +||votrbuvhhengr.site^ +||votuiwegnv.com^ +||voujxarvlijpo.space^ +||voustymarkers.cyou^ +||vovlacjs.cfd^ +||vovlacjs.cyou^ +||vowelfemininecherish.com^ +||vowelshorae.cfd^ +||vowsavageskim.com^ +||vowthreehilarious.com^ +||voxar.xyz^ +||voxero7070.com^ +||voxura5.com^ +||voyagedearanatomy.com^ +||voyageedgyglass.com^ +||voyagerspays.qpon^ +||voyagessansei.com^ +||voyeurdisruly.com^ +||voyeursouters.shop^ +||vozpublic.com^ +||vpbhuddvufxvb.space^ +||vpbigdsnehwam.today^ +||vpbjuracackcm.online^ +||vpcjijijkzhjv.space^ +||vpdehpjxotemz.space^ +||vphfcftukjmnf.site^ +||vpico.com^ +||vpipi.com^ +||vpjuzhuiwopyw.space^ +||vpnonly.site^ +||vpqppkcoszupa.site^ +||vprecdcggkrtz.site^ +||vprtrfc.com^ +||vptbn.com^ +||vptxmdgwwqotz.store^ +||vpuonpcwtjgwe.online^ +||vpvtuudixdilp.online^ +||vpvyiarljvpbu.space^ +||vpwccdbsuzgtl.website^ +||vpzdnfciapiux.online^ +||vqdqbloehwafw.online^ +||vqelkqlaavjmm.top^ +||vqethcnsna.com^ +||vqfdpwwodstou.space^ +||vqfyoaemuefsk.store^ +||vqghlnhtosfng.space^ +||vqiwjqdulmzur.space^ +||vqk0h1xb.xyz^ +||vqkffynxyptrx.online^ +||vqkusfxadcdll.website^ +||vqkyzuhyyswzt.space^ +||vqlhjhqkfmyou.online^ +||vqlpduejkboak.site^ +||vqooisjexmusf.space^ +||vqoqlebqqakmq.top^ +||vqqcqfrnugfqm.site^ +||vqqjqbkzclwav.website^ +||vqrdiduoqypac.site^ +||vqrwdwrmxbelz.website^ +||vquhshiqyqudr.space^ +||vqxppnlrcbxlh.site^ +||vqzbmjexsbscb.store^ +||vqzoqqnjolnbl.site^ +||vrabeggfdjcsww.com^ +||vrauwhahnrjuh.space^ +||vrdrspufoszxi.website^ +||vrfdcwhyaodng.store^ +||vrgbaevvadiwn.site^ +||vrhbjtileufmv.website^ +||vriddhicroker.qpon^ +||vriutupdtrqlo.online^ +||vrizead.com^ +||vrldejvphpidi.online^ +||vrnzbidmiesbl.site^ +||vronog.com^ +||vrouwsgoringpitfall.qpon^ +||vrpnfrtnemmbb.space^ +||vrqhkwopnzvpv.website^ +||vrsastidzuham.online^ +||vrslcvpctrwju.space^ +||vrsnekzmxusav.space^ +||vrssptskkihvn.site^ +||vrstnadgljwiy.space^ +||vrtzads.com^ +||vrukwwkeszzfg.space^ +||vrwjvaxdqcu.com^ +||vrwzecqcyjfmy.site^ +||vrxdnowkpaelgn.com^ +||vs3.com^ +||vsavbpsnxdrgt.online^ +||vsbbcbxmceyeoc.com^ +||vscogqhkhwdaf.space^ +||vscvotonpbevv.site^ +||vsezkxtemiqkt.website^ +||vsfswhpnyjnbv.space^ +||vsimyppptdxdo.site^ +||vsjoderczncr.com^ +||vskewwuoda.com^ +||vskfhfqsvurqy.online^ +||vslnphbyuqbkz.site^ +||vslpnvutywvnb.space^ +||vsofglbfeiewy.site^ +||vsorcyifkcbwo.site^ +||vsqczzvkhzphx.site^ +||vsrttzvdtihei.site^ +||vsspdabuuewzo.space^ +||vsswietbgd.com^ +||vstixgqbvxdlq.site^ +||vstserv.com^ +||vstwm.com^ +||vswgebas.com^ +||vsykigidqigxu.online^ +||vsznyyhrbezhg.online^ +||vszwvgcrpqvks.website^ +||vtabnalp.net^ +||vtcuesjpqvies.website^ +||vtdwverkopbve.website^ +||vtemlrnsqozri.site^ +||vtfjzqzivtvrf.space^ +||vtgeboewommkr.website^ +||vtiucjfiahqdz.space^ +||vtjwsydfjswwl.online^ +||vtkjyhlmtub.com^ +||vtkkubfnqkqhx.site^ +||vtlpkoshbpquo.online^ +||vtmbnurtndcgo.store^ +||vtndhqsmzwrzc.space^ +||vtojhgymssztr.site^ +||vtoqtpohhrghk.online^ +||vtrrvqbcptsis.space^ +||vtsufsdkrzthc.space^ +||vttooqksrnhun.rocks^ +||vtuzzlfmnpxdq.website^ +||vtxnfezsswgbq.website^ +||vtxutkucrrxoj.website^ +||vtzmfhdyaemzg.online^ +||vuainqkmjdiqp.site^ +||vuavjqnpxa.com^ +||vucgxemby.com^ +||vucxfzsavoxdd.online^ +||vudagmgwebke.in^ +||vudequyangktk.site^ +||vudfewdchrhnj.online^ +||vuevgiavjbplr.space^ +||vufskqjnnhnjt.site^ +||vughisospin.cyou^ +||vugqkeanmhm.com^ +||vuhcoxkaeacrc.space^ +||vuhybyszidvak.website^ +||vuibdmwyquueg.online^ +||vuiebktuavkcc.online^ +||vuiizknwfmbbd.space^ +||vukifrwnczdwk.online^ +||vukqsoyedcbzg.website^ +||vukwagdfhjzbz.club^ +||vulgdjnnkvqyhh.com^ +||vulnerablecognomen.com^ +||vulnerableimmigrateaboveaverage.com^ +||vulvafoghorn.shop^ +||vumkwueikvlxr.online^ +||vupshojkojpe.in^ +||vustaq.com^ +||vutipseethu.net^ +||vutyilceqbbdd.online^ +||vuvcupvrfosyk.online^ +||vuvkcvjrwuorn.site^ +||vuw2lppijng939.cfd^ +||vuwgityuhrcvf.online^ +||vuwofoeszqiby.store^ +||vuwrjobyhwbjn.site^ +||vv8h9vyjgnst.com^ +||vvaervdbcntvs.online^ +||vvcszpzpuceps.space^ +||vvfndxeumlfbn.com^ +||vvjacrtsivivq.online^ +||vvkholowfoeku.website^ +||vvltexsrdpmas.website^ +||vvmtotjtg3cwm3kout9h.cfd^ +||vvnwnyxsuzbah.space^ +||vvolnzdglprvf.store^ +||vvrjezyxwxhqd.store^ +||vvtshyprijnwi.website^ +||vvtwasjebvswf.website^ +||vvuttotofvazt.site^ +||vvv97q8ie3qjyo9b1zpe6wmk.cfd^ +||vvvshlnaxlbyp.website^ +||vvwrajbckvfng.website^ +||vvxxqpvylixke.store^ +||vvymhfdi.com^ +||vw442hzkw5nzixwfumzyny57o.cfd^ +||vw4k8o3bcknl462ru16u38ux9732.cfd^ +||vw7y3vtbiqhtnll4w.cfd^ +||vwbbphonljgrr.website^ +||vwbjalrunlqrl.site^ +||vwcbazbnsbpng.site^ +||vwclbvgyqbkqh.com^ +||vwcmeebcmvgbq.website^ +||vwcwncsrsedyd.space^ +||vwfurlcwpujuz.site^ +||vwfwdxariknxp.website^ +||vwfxuhjgwwent.online^ +||vwgxgp7h8n4bvoe4xkj5up.cfd^ +||vwjsiywwgynud.online^ +||vwkrrwxbuvotg.space^ +||vwmdzetaikxvc.site^ +||vwnjjfehgryri.space^ +||vwoalbekrhqam.online^ +||vwoeqevyvbbtn.online^ +||vwohegzvjaosz.site^ +||vwpgzsrphaocc.website^ +||vwpttkoh.xyz^ +||vwrwbedwbynww.site^ +||vwsezpkqtgaez.site^ +||vwshvtlrdkdwl.site^ +||vwtcrfoovanir.online^ +||vwvrdsumagxkk.online^ +||vwxfxcamyhpqq.online^ +||vwxyozrzwikcy.site^ +||vwyluqungwrqlii.com^ +||vwzrmuzcjxpkh.space^ +||vxaasbedwoypm.site^ +||vxbstsvddlepb.online^ +||vxclqkpwqnczt.website^ +||vxetjbsjganly.site^ +||vxfwyzevnp9tf7jl.cfd^ +||vxfzjhrxjaoer.online^ +||vxglylapojafs.site^ +||vxgqnsrhfgsrh.online^ +||vxhizshyegmbb.online^ +||vxhwpdsfbarhv.online^ +||vxkmmic4lwziz9.cfd^ +||vxkqazollahft.store^ +||vxmgwfvl.net^ +||vxo-protect.co.in^ +||vxqpuuzamduiw.space^ +||vxsdibhjeyvwf.space^ +||vxslamouxg.com^ +||vxtkmlmumvied.site^ +||vxtozhkzlarln.site^ +||vxumftnoc.net^ +||vxuvgslsciqly.online^ +||vxvvdbqifajsy.site^ +||vxvzcjxkyanrs.website^ +||vxwmkbtkhtpru.today^ +||vxwoeowswtbwc.site^ +||vxxdhcxtcy.net^ +||vxxgxicadjtia.space^ +||vxxjhaug.com^ +||vxxpifqgqlvnh.store^ +||vxxybwpygvjpc.online^ +||vxzmrvmaugiuf.online^ +||vy9fwpl1.xyz^ +||vyabxutgyiidb.site^ +||vyalyccsbpuse.space^ +||vycfhdxoxrmxskl.com^ +||vydjztqkiuuwg.site^ +||vyecpfypnwu.net^ +||vyglctnroaigw.online^ +||vyhvqjlbjueyg.website^ +||vyignfjyiuznx.online^ +||vyilmellyqbfs.online^ +||vyiqsohuuoziu.store^ +||vyis.net^ +||vyjsbprcljavve.com^ +||vympzhnxgoweg.store^ +||vymybkyrzvwky.top^ +||vynvpkurjcsef.online^ +||vyoning.cfd^ +||vypddqizgpkpo.store^ +||vypmgvwjvgztv.space^ +||vyragdxymcqtw.online^ +||vyshuddphvxka.store^ +||vytix.net^ +||vytjbahlkcmwn.space^ +||vyuaolnqfgoas.store^ +||vyufgiaesxzib.site^ +||vyura.net^ +||vyxifgsrgihgr.online^ +||vyxijcujtjrzo.website^ +||vyxsgealwarnz.website^ +||vz.7vid.net^ +||vzafeclhxfuym.website^ +||vzakrwqsbbsro.site^ +||vzaznkojzoyyo.online^ +||vzebzbxfctexv.store^ +||vzehfskbmvovl.online^ +||vzelfwoauitxe.space^ +||vzhdsjjfnuquz.online^ +||vzigttqgqx.com^ +||vziqnyxzutqmf.space^ +||vziuzekjhmtht.space^ +||vziwnogpwvjra.website^ +||vzkoxvbkx7i1h6.cfd^ +||vzkozuzanvkqv.online^ +||vzldnxgdbhyle.website^ +||vzlizfsrjievg.space^ +||vzmilkdaptnug.online^ +||vztformhlflsz.website^ +||vzvzjlzzjfodn.space^ +||vzwskvcarieny.website^ +||vzwvakkmefryp.space^ +||vzwxvmcdcioid.space^ +||vzydopxwdqnqt.space^ +||vzzaelhtofrwm.site^ +||w0we.com^ +||w2t2ft6zl1zbivnu9emoizw.cfd^ +||w3fc1o28kpltrl.rest^ +||w4.com^ +||w454n74qw.com^ +||w4k65h3vz538fmrt3jz1453i546h.cfd^ +||w55c.net^ +||w6ecevvubhmntx.rest^ +||w6f5f8r9.fun^ +||w847urmeelre3j9i7htkfqw6rrn4rh8y.cfd^ +||w84h83p9qwnz92g4fnz.cfd^ +||wabdlzedugcrd.site^ +||wabewxwoytqpi.website^ +||wabifuzzily.qpon^ +||wabsyederly.com^ +||wacagosamechsapochae.qpon^ +||wackphebelyance.cyou^ +||wacsstance.cyou^ +||wactzluhhgzdz.com^ +||wadecarbohydrate.com^ +||wadxfdqzocbof.site^ +||waescyne.com^ +||waeshana.com^ +||waexhoxdqigad.space^ +||wafbints.shop^ +||wafdistbourlaw.qpon^ +||wafdughretinic.cyou^ +||wafflestee.com^ +||wafflyparaph.qpon^ +||wafmedia6.com^ +||waftagephoneys.cyou^ +||waftersvoc.cfd^ +||wagandavagi.cyou^ +||wagaunleaches.cfd^ +||wagejustifieddoze.com^ +||wagepicturesque.com^ +||wagerculpon.cfd^ +||wagereramebicblankit.qpon^ +||wagerjoint.com^ +||wagershare.com^ +||waggonerchildrensurly.com^ +||waggonerprepay.com^ +||waggonertributeshaky.com^ +||waglikeaahing.cfd^ +||wagoncoruco.cyou^ +||wagsad.com^ +||wagsransel.shop^ +||wagwylawqmhg.com^ +||wahoha.com^ +||wahooaetherscheatry.cyou^ +||wahtotten.com^ +||waigaumaphips.net^ +||waihaistuglo.net^ +||wailafterthought.com^ +||wailedshave.com^ +||wailinghassle.com^ +||wailingslow.com^ +||wailsmasonic.com^ +||waimooweepi.net^ +||wainmenbiopsicer.cyou^ +||wainsscraighquave.qpon^ +||wairchstatuacapuli.cfd^ +||wairingcheney.com^ +||waistburnsvisiting.com^ +||waistcoataskeddone.com^ +||waistcoatdiscontented.com^ +||waistcoatreferchemistry.com^ +||waistsbowsery.com^ +||waitedlastingbits.com^ +||waiterbarnacleclueless.com^ +||waiterdodgyhem.com^ +||waiterfortnight.com^ +||waitheja.net^ +||waithetomaigrie.net^ +||waivesfurnacedoon.cyou^ +||waivingcolugochort.cyou^ +||waivingsuccise.shop^ +||waiwodeplantae.cfd^ +||wakealibis.com^ +||wakemansnooper.qpon^ +||wakenbossing.cfd^ +||wakifinhales.qpon^ +||wakingsollya.cfd^ +||wakkengranetglim.qpon^ +||waldorfunurban.shop^ +||walkeralacrityfavorite.com^ +||wallaalkylicjaunt.cfd^ +||walldatewishful.com^ +||walletblossomendanger.com^ +||wallowwholikedtoc.org^ +||wallpapersfacts.com^ +||walnutneckvariability.com^ +||walnutsongkokgawsie.cfd^ +||walruspractitioner.com^ +||wamefoumellowyheumite.qpon^ +||wammusrisqu.qpon^ +||wamojgotlra.in^ +||wamuztizkgstq.website^ +||wanaprof.com^ +||wandatnighttimehe.org^ +||wanderprickpath.com^ +||wandgleaming.com^ +||wandlbbeuwauj.store^ +||wangaracampe.cyou^ +||wangfenxi.com^ +||wangheebehav.com^ +||wanlyavower.com^ +||wannaknowmysecret.com^ +||wannesstetrao.cfd^ +||wanrestskims.cfd^ +||want-s0me-push.net^ +||want-some-psh.com^ +||want-some-psh.net^ +||want-some-push.net^ +||wantconvenient.com^ +||wantedswedefortnight.com^ +||wantingmethodelegance.com^ +||wantspunishrile.com^ +||wapatohaiari.shop^ +||wapatoowakens.cyou^ +||wapbaze.com^ +||wappatopunnerzaurak.qpon^ +||wappatoskee.cyou^ +||wapperrattage.com^ +||wappoputter.shop^ +||waqiqbzkvozig.click^ +||waqool.com^ +||waqwcbnbbpliz.online^ +||warderloges.cfd^ +||waredity.com^ +||warehouses2120.net^ +||warehouses96.net^ +||warehouseswithgrand.net^ +||warfarecontemn.com^ +||warhealthy.com^ +||warilyclickframes.com^ +||warilyencases.cfd^ +||warineambatchgreeney.qpon^ +||warkbanefulscaly.cfd^ +||warlikebcfspheric.cyou^ +||warlikecouple.com^ +||warliketruck.com^ +||warlockstallioniso.com^ +||warlocktoenailfantastic.com^ +||warm-candidate.com^ +||warmerscarlet.com^ +||warmheartedengine.com^ +||warmingoperatingstool.com^ +||warmlyparliamentscroll.com^ +||warmmeadowroad.com^ +||warmupposaune.com^ +||warningwentthorn.com^ +||warnishtangoed.cyou^ +||warnsbus.cfd^ +||warpcapesecretly.com^ +||warpedaside.com^ +||warpteddychose.com^ +||warranthum.com^ +||warreeeclogic.cyou^ +||warshardnessmotivation.com^ +||warsledspines.com^ +||wartsimpower.cyou^ +||waruggeefiljt.space^ +||warumbistdusoarm.space^ +||wary-corner.com^ +||warymoment.pro^ +||warypool.com^ +||warypress.pro^ +||wasangomartens.com^ +||wasfilledwi.com^ +||wasgiwiththinleld.org^ +||wasgvfoivfaop.store^ +||washedadvance.com^ +||washeddignifybanjara.cfd^ +||washokufinder.lol^ +||washragpangslepiota.qpon^ +||wasp-182b.com^ +||waspilysagene.com^ +||waspishmexican.com^ +||waspstensely.cfd^ +||wasqimet.net^ +||wastabljellib.com^ +||wasteful-clothes.com^ +||wastrelplait.qpon^ +||watanabehono.info^ +||watapessquawks.cyou^ +||watchcpm.com^ +||watchetifuters.cloud^ +||watchful-development.pro^ +||watchfulbolt.com^ +||watchfulsorrow.com^ +||watchingthat.com^ +||watchingthat.net^ +||waterensignbelieving.com^ +||waterlogged-boy.com^ +||waterproofgranitegag.com^ +||waterproofwheelbarrow.com^ +||watery-possession.pro^ +||watery-result.com^ +||waterychocolate.pro^ +||wateryimmigratecompetition.com^ +||waterymenace.com^ +||watknbtkwkspy.website^ +||wattagemesail.shop^ +||watwait.com^ +||waudeesestew.com^ +||wauksbogach.qpon^ +||wauqomhjliawq.store^ +||waust.at^ +||wauteglisooreno.net^ +||wauthauhou.net^ +||wauymtjmufunv.site^ +||wavedgrill.com^ +||wavedindifferenceharm.com^ +||wavedprincipal.com^ +||waveetiquette.com^ +||wavermiddayboundary.com^ +||wavingauradignity.com^ +||wavingscrambledesert.com^ +||wavtcdqwbuhiw.space^ +||wawacastlestriamid.cfd^ +||wawledmetreza.cyou^ +||waxapushlite.com^ +||waxbushthoria.cfd^ +||waxerssquit.cfd^ +||waxfromcache.net^ +||waxworksoperate.com^ +||wayanatomyunavailable.com^ +||wayfarerniece.com^ +||wayfarerorthodox.com^ +||waygonenegrita.qpon^ +||waywodeantaeus.shop^ +||wazcltokdhjwk.online^ +||wazhogebdylsb.space^ +||wbaetwsafkqlw.store^ +||wbamedia.com^ +||wbaolixcouqle.website^ +||wbbooupkjgwox.site^ +||wbbpahhzzczsh.space^ +||wbdaxsscxpgzg.website^ +||wbdds.com^ +||wbgeaojtegeun.website^ +||wbhqdaqufhhua.space^ +||wbhrqfimuqtij.site^ +||wbhufotomfnrw.com^ +||wbidder.online^ +||wbidder2.com^ +||wbidder3.com^ +||wbidder311072023.com^ +||wbidder4.com^ +||wbidr.com^ +||wbihfryznmmkm.space^ +||wbilvnmool.com^ +||wbiskyenhrwvx.website^ +||wbjolcnlghzac.space^ +||wbkcxsdbchyrj.website^ +||wblkp4ae.xyz^ +||wblrrwegleepo.website^ +||wbmuakyzdpylq.website^ +||wboptim.online^ +||wboux.com^ +||wbpiaqaqnqlmc.space^ +||wbrgeoldclybx.online^ +||wbscyctyiiold.space^ +||wbvgjhejkunhb.site^ +||wbwuiryfbtboi.space^ +||wbww9ouxolw7ji3i.rest^ +||wbygrybvjjksf.site^ +||wbysnyeqjdwhl.site^ +||wc5cyztpew2t9po8.cfd^ +||wcbxugtfk.com^ +||wcdkccrsixbtr.site^ +||wcdmvjbbkdhzc.space^ +||wcedifmyfokol.online^ +||wcgfpkumrjejf.website^ +||wchypueyeounn.space^ +||wckzhiatenjza.store^ +||wcmcs.net^ +||wcouljzipqyua.site^ +||wcpgtxpzhpdgy.website^ +||wcreverdi.cfd^ +||wcrulddsnexjz.site^ +||wcsdacenoyjgy.store^ +||wcseubjgipspt.online^ +||wcsrsrahctbah.space^ +||wct.link^ +||wctgatauxfggq.space^ +||wctomfpolmxxr.online^ +||wcuggkuxfgutu.today^ +||wcumiqigmpkoc.site^ +||wcuujkywusvpv.online^ +||wcuxkyjwndqxj.top^ +||wcvevntrztrdi.site^ +||wcwpnipkfluae.space^ +||wcwxkbakmbtct.space^ +||wcwysdfmiznik.online^ +||wcxgvwihfoimx.site^ +||wcydaouuykhnp.space^ +||wcydtrbulrgob.online^ +||wcyvjdpduqxym.site^ +||wdbecodqxlyuu.site^ +||wdczlavbweeby.online^ +||wdemwdmwehswi.online^ +||wdgqhgmczfdrb.website^ +||wdhymnxhxpgsn.space^ +||wdibwgllvzies.love^ +||wdifpednlkxvz.site^ +||wdjpyrldiqgwe.online^ +||wdjtyigmvcgtx.space^ +||wdlflqnfoowj.com^ +||wdlltvftsokwy.space^ +||wdnqfnniorfbx.store^ +||wdozzmihxphvo.site^ +||wdppwawnhehxn.space^ +||wdqhdqtlxu.com^ +||wdrinqlklnvcb.space^ +||wdsakriogufgd.site^ +||wdspfkxiaenjf.website^ +||wdsssyjaqaakt.site^ +||wdsvzbwcdkyfx.online^ +||wdtryisrzshiw.space^ +||wdtypxrniewko.website^ +||wdwadkgqylntz.space^ +||wdwdjwodpqjzm.site^ +||wdwlpqsgdxpov.space^ +||wdxuugjqeavzv.space^ +||wdyupcjjiyflk.space^ +||wdyynhcllupdc.online^ +||wdzrlfbdfclgq.online^ +||we-offer.com^ +||weakerscripts.com^ +||wealthn.com^ +||wealthyvast.pro^ +||weanerssouls.com^ +||weaponschemicalenglish.com^ +||weaponsrefused.com^ +||wearbald.care^ +||wearbulbed.com^ +||wearinessattached.com^ +||wearinessgiddy.com^ +||wearisomejudge.com^ +||wearisometechnicalitydeport.com^ +||wearoptattenuate.com^ +||wearychallengeraise.com^ +||weatherplllatform.com^ +||weavekidnapfreaky.com^ +||weaveradrenaline.com^ +||weaversprinkle.com^ +||weaveworkingheaviness.com^ +||web-guardian.xyz^ +||web-security.cloud^ +||web0.eu^ +||webads.co.nz^ +||webadserver.net^ +||webair.com^ +||webashameattendant.com^ +||webassembly.stream^ +||webatam.com^ +||webbed-leadership.com^ +||webberharrid.cfd^ +||webbierusherermona.cyou^ +||webcampromo.com^ +||webcampromotions.com^ +||webclickengine.com^ +||webclickmanager.com^ +||webcontentassessor.com^ +||webeetutie.net^ +||webertrophal.cyou^ +||webfanclub.com^ +||webhookto45.net^ +||webmedrtb.com^ +||webpinp.com^ +||webpushcloud.info^ +||webseeds.com^ +||websfluxer.qpon^ +||websitepromoserver.com^ +||webstabilityhugo.com^ +||webstats1.com^ +||websterro.com^ +||webteaser.ru^ +||webtradehub.com^ +||webvdelpqtncq.website^ +||webztkbnubgup.space^ +||wecdvioxnjuqd.space^ +||wecyjtnykvebc.online^ +||wedauspicy.com^ +||weddingtrap.com^ +||wedgedinured.cyou^ +||wedgehastily.com^ +||wedgiesbeersnoils.cyou^ +||wedlockchoco.cyou^ +||wednesdaydust.com^ +||wednssuebwomq.online^ +||wedsetdonkey.cyou^ +||weeawesome.com^ +||weebuwbbwqrij.site^ +||weecoagook.net^ +||weedishyeomen.com^ +||weedowpeucyl.cfd^ +||weeecool.com^ +||weeewow.com^ +||weejauwho.net^ +||weekendorgans.com^ +||weekendpolitely.com^ +||weekheadlong.com^ +||weemencheflung.qpon^ +||weenierfrisian.cfd^ +||weeoffer.com^ +||weephostessscissors.com^ +||weepylack.com^ +||weetext.pro^ +||weezoptez.net^ +||wefezokroukr.net^ +||wegetpaid.net^ +||wegnpzpsgjpzx.space^ +||wegoomtiltootie.net^ +||wehcqqqrrnxmd.space^ +||weheeriboseduendes.cfd^ +||weiekbrbolvvk.online^ +||weigherdespair.qpon^ +||weightfeathersoffhand.com^ +||weightwindow.com^ +||weighty-strength.com^ +||weightydesire.com^ +||weike88.com^ +||weiledsteverm.org^ +||weirdergapes.shop^ +||weirdopt.com^ +||weirdsentence.com^ +||wejqzsufiutaa.site^ +||wekazjwmctawy.site^ +||wekeahzucvmgn.website^ +||wel-wel-fie.com^ +||welcomeneat.pro^ +||welcomingexpulsion.com^ +||welcomingwaterfall.com^ +||welfarewore.com^ +||welicoolant.cyou^ +||weligillysies.com^ +||welldocumented-president.pro^ +||welldocumentedwrap.com^ +||wellguffs.qpon^ +||wellhello.com^ +||welliesratany.com^ +||wellishinketsilesia.cyou^ +||welllitratio.com^ +||welllitsurround.pro^ +||wellliveblog.com^ +||welllwrite.com^ +||wellmadesurvey.pro^ +||wellworn-lead.com^ +||wellworn-phrase.com^ +||welseyer.qpon^ +||welshedwaywort.shop^ +||wemlesswearies.shop^ +||wemtagoowhoohiz.net^ +||wenazgwspojzi.online^ +||wendelstein-1b.com^ +||wendxktstjx.net^ +||wenldltyvxwda.site^ +||wenniergds.cfd^ +||wenog.com^ +||wenoolgo.icu^ +||wensjussel.shop^ +||wenykhldanuek.store^ +||weownthetraffic.com^ +||weptnastyturmoil.com^ +||weptseasickrhythm.com^ +||weqcofjqupexq.online^ +||weqeagfolnehx.space^ +||werstegrootricker.cyou^ +||wesicuros.com^ +||westcoa.com^ +||westerawnesschirmed.qpon^ +||wet-ambition.pro^ +||wet-judge.com^ +||wetdisown.qpon^ +||wetnesstommer.com^ +||wetnmjjbulnyru.com^ +||wetrackgames.com^ +||weuaubbolvxby.website^ +||wevsykjaretpf.online^ +||wevwzrwxrffjv.space^ +||wewearegogogo.com^ +||wewikdaksmlyw.online^ +||wewqmwpeesisj.online^ +||wextap.com^ +||wexwujojvhamp.space^ +||weygdpqepldez.space^ +||weytnksofbrsj.site^ +||wezfkkvkhjmha.space^ +||wfbcfadgivxqd.space^ +||wfcexmwunmimo.site^ +||wffbdim.com^ +||wfgcaeoechdds.online^ +||wfhhsfxvnluft.website^ +||wfhrjmzhzzlmw.space^ +||wfijlh6zfzhcc44bke3z3mlb4n9h2t.rest^ +||wfiphsftezywo.space^ +||wfiutburadoho.online^ +||wfivgvbqbbmtf.site^ +||wfjcsraqoiwxw.online^ +||wfkungbdlgkhf.space^ +||wflokihyunxdk.online^ +||wfmgreedrggdb.website^ +||wfnetwork.com^ +||wfnjnkazgfzax.store^ +||wfqthmjtebdbc.website^ +||wfqzesdbrvoje.space^ +||wfredir.net^ +||wfrglsvwclwqp.space^ +||wftbeecaebmmr.online^ +||wftcsnpjgdmna.store^ +||wftoukfy.net^ +||wfwnihvjcsddw.website^ +||wfziejxpcywxy.online^ +||wg-aff.com^ +||wgaesioplofoq.site^ +||wgchrrammzv.com^ +||wgcjpruezksws.online^ +||wgdmxncvikpcc.fun^ +||wgdotbbdbfktr.space^ +||wgerhfypjlycg.site^ +||wgexsktozbmrx.online^ +||wgfebyyaqspid.space^ +||wgfqayocqadzp.space^ +||wggmcqucgyggh.site^ +||wghaqpnupaxmj.space^ +||wghkllhhoraeb.space^ +||wghoubdaxpsik.site^ +||wghvvdmdqgdzz.space^ +||wgimhiakumdkf.site^ +||wgjkyvofksrla.site^ +||wgkwfkdvltuqy.online^ +||wgmenxpvnxnbs.space^ +||wgqvnhvxdfgoe.online^ +||wgsaralfncvvb.online^ +||wgvmzdmasfoyu.store^ +||wgzaprexwmzki.site^ +||wgzgarcunfpjq.space^ +||whackedburdon.com^ +||whackersophy.shop^ +||whackschoolboy.com^ +||whacmoltibsay.net^ +||whaibsaurdee.net^ +||whaleads.com^ +||whalerchowslamias.cfd^ +||whangammelter.cfd^ +||whankdeedeed.com^ +||whapdroit.shop^ +||wharvesrefall.com^ +||whatisuptodaynow.com^ +||whatsupp25.biz^ +||whaudrurdoals.net^ +||whaudsoowhusha.net^ +||whaujeeckudsa.net^ +||whaukaixoargouh.net^ +||whaunsoast.net^ +||whbjtvsrexgif.store^ +||whbxzzffhzolw.website^ +||whclksvlbotno.website^ +||wheceelt.net^ +||wheebsickips.net^ +||wheedleunflatpests.qpon^ +||wheegnehoad.net^ +||wheeksursaist.net^ +||wheel-of-fortune-prod.com^ +||wheelchairavoid.com^ +||wheelchairbewilderedwaver.com^ +||wheelchairfactorygoal.com^ +||wheeledfunctionstruthfully.com^ +||whelksfumettecuppa.qpon^ +||whelpedmedialslicuala.cfd^ +||whempeghoargoug.net^ +||whenceinsular.com^ +||whencewindy.com^ +||whensewing.com^ +||whensotapet.cyou^ +||whepsoulsi.net^ +||wheqqqro.net^ +||whereermisdoer.cfd^ +||whewhikrokartou.net^ +||wheybkethenic.qpon^ +||whglicfodltns.space^ +||whgugqkhydhg.net^ +||which-impact.pro^ +||whicheverspeaklights.com^ +||whichmeu.com^ +||whickerkarates.com^ +||whickermxdvying.qpon^ +||whidrungimpot.net^ +||whigpaoslqr.com^ +||whiledtalloelvmsize.cfd^ +||whilstmiaoued.com^ +||whilsttypewriter.com^ +||whiltaudsux.net^ +||whimperhomelessillumination.com^ +||whimrjrilyixu.site^ +||whimsicalcoat.com^ +||whinedeity.com^ +||whinemalnutrition.com^ +||whiningbulten.cfd^ +||whippedbetraygranddaughter.com^ +||whippedredsnowman.com^ +||whiprayoutkill.com^ +||whireclogomod.com^ +||whirlclick.com^ +||whirleyambo.qpon^ +||whirlwind-expression.com^ +||whirlwind-leather.pro^ +||whirlwindincrease.com^ +||whirlwindobject.pro^ +||whirlwindofnews.com^ +||whirnbhiidvta.space^ +||whishannuent.com^ +||whisheddeskmanmeson.cyou^ +||whiskerspeppersane.com^ +||whisknitrite.cyou^ +||whisperedgolf.com^ +||whisperofisaak.com^ +||whistledadjoining.com^ +||whistledam.com^ +||whistleeagerconvene.com^ +||whistlegown.com^ +||whistlemiddletrains.com^ +||whistlingcrimson.com^ +||whistlingincur.com^ +||whistlingwentwool.com^ +||whistsgreffe.qpon^ +||whitauckikrah.net^ +||white-advantage.pro^ +||whitedescription.pro^ +||whiteinflammablejaws.com^ +||whitenoisenews.com^ +||whitepark9.com^ +||whiteseyl.qpon^ +||whjre.com^ +||whlimyimgudxl.website^ +||whnlerwojyzhi.space^ +||whoadhoxtojg.com^ +||whobiglauni.net^ +||whocheeseskg.cyou^ +||whoeverpensivepaternity.com^ +||whogloagru.net^ +||whoisezh.com^ +||wholeaccount.cfd^ +||wholecentare.com^ +||wholedisagree.com^ +||wholeingredient.com^ +||wholeshopping.pro^ +||wholituaten.com^ +||whollyindependentlylooking.com^ +||whomnossxzkvi.online^ +||whomsostatchote.net^ +||whomsudsikaxu.com^ +||whoogheersowiks.net^ +||whoomsouns.net^ +||whoopunpredictable.com^ +||whoppercreaky.com^ +||whopping-click.com^ +||whoppngzrzsyz.online^ +||whopsprits.cyou^ +||whoredpledgeegres.cfd^ +||whoretuskar.shop^ +||whortsiddat.com^ +||whoshovotsaim.net^ +||whoucheehy.net^ +||whoucortepoo.net^ +||whoudroogloap.net^ +||whoumishatepa.net^ +||whouphesaussums.net^ +||whouseem.com^ +||whpgbplalfntt.site^ +||whqastntsfcpwya.com^ +||whqpeeiwrex.com^ +||whqtuypvdxzdk.website^ +||whriwifnxuvmg.website^ +||whstvdsqpzlaa.website^ +||whswprjesbewv.site^ +||whsyfigscmbif.space^ +||whtrsheljrpso.rocks^ +||whudwpbpfcjye.site^ +||whuffchagrin.cfd^ +||whufflepiaclekale.qpon^ +||whuzucot.net^ +||whvfosdhuinke.space^ +||whvyhcvlszizp.online^ +||whwdxzadairoq.website^ +||whwimoztjl.com^ +||whwpeioudyjuu.space^ +||whxoazhpcebxb.site^ +||whydahtoitish.cyou^ +||whywolveshowl.com^ +||whzcfgbrzaljw.site^ +||wi0z.com^ +||wicdn.cloud^ +||wickedhorace.com^ +||wickedsetup.com^ +||wickenfilets.cfd^ +||wickingunsolar.qpon^ +||widcxrmwusqhe.online^ +||widdecedbpoks.space^ +||widdrimvelary.cfd^ +||wide-mine.pro^ +||wideeyed-stay.com^ +||widenaccident.com^ +||widenedsoarssai.cfd^ +||wideprophetbeast.com^ +||widespreadcomponent.com^ +||widgetbucks.com^ +||widgetly.com^ +||widndpnuiyqty.space^ +||widow5blackfr.com^ +||widowedlankest.cyou^ +||widowreseduereseduedescription.com^ +||widowtea.com^ +||widtkuztxqrxe.website^ +||wiezhjlxc.com^ +||wigacetyls.qpon^ +||wigapvofjar.com^ +||wigetmedia.com^ +||wigglegloatshrill.com^ +||wiggly-spend.pro^ +||wigkswxmurpfn.website^ +||wignosy.com^ +||wigvceapsow.com^ +||wigwamkykedegusts.cfd^ +||wigwamscoexert.qpon^ +||wihbqmopoxatd.site^ +||wihwzfypz.com^ +||wiify84.net^ +||wijqnlrjczisx.space^ +||wijrejzkekuvy.site^ +||wikvlbmtzzfmp.website^ +||wildboy.pro^ +||wildcatfidgets.com^ +||wildedbarley.com^ +||wildernessperformpulp.com^ +||wildestbisabol.qpon^ +||wildestgraciousunpack.com^ +||wildhookups.com^ +||wildlyzonereseptivereseptive.com^ +||wildmatch.com^ +||wildxxxparties.com^ +||wilecrrlefaxq.space^ +||willierdeacon.cyou^ +||willingcease.com^ +||willinglybasketball.com^ +||willinglybytedelusion.com^ +||willowswaxersjimson.cfd^ +||willplug.com^ +||willsgley.qpon^ +||wilslide.com^ +||wiltaustaug.com^ +||wimbrelduftitedillisk.qpon^ +||wimbreleyrantdacitic.cfd^ +||wimpimpatience.com^ +||wimxvpcbsfhyz.store^ +||winbuyer.com^ +||windacerbity.com^ +||windfallicontelegraph.com^ +||windfallleavebrawl.com^ +||windilyholked.cfd^ +||windingnegotiation.com^ +||windowscurlytrials.com^ +||windowsvow.com^ +||windowylarvule.com^ +||windscreenthomas.com^ +||windsplay.com^ +||windupsfibulas.cfd^ +||windyplentiful.com^ +||windytotal.pro^ +||winemeaslesnab.com^ +||wingedphoto.com^ +||wingerswetchet.cfd^ +||wingohvuktotg.site^ +||wingsmob.com^ +||wingssecrecyfailed.com^ +||wingsshaggy.com^ +||winlyfeis.qpon^ +||winlysuecism.cfd^ +||winneradequateablebodied.com^ +||winneradsmedia.com^ +||winnersolutions.net^ +||winningjanuaryshrubs.com^ +||winningplunder.com^ +||winohamated.shop^ +||winonascards.com^ +||winpbn.com^ +||winr.online^ +||winslinks.com^ +||winsomegussetchirrs.cyou^ +||winstonplusses.cfd^ +||winterbedroomauction.com^ +||winterdistortkey.com^ +||winterpraised.com^ +||wintqcf.com^ +||wintrck.com^ +||wintrifleromantic.com^ +||winzessolicit.com^ +||wipedrehabilitation.com^ +||wipehumorousbeen.com^ +||wiptzgjtcvbdw.website^ +||wiqccpxjtvkjs.store^ +||wiredbarret.shop^ +||wirelessbin.com^ +||wiretournament.com^ +||wirgefemtie.net^ +||wirulcxbvifym.site^ +||wirytrip.com^ +||wirzurwhiah.in^ +||wisdomscilgoos.cfd^ +||wise-bridge.pro^ +||wisej1355.com^ +||wiselyheathenbucket.com^ +||wiserhulked.cfd^ +||wishasolves.shop^ +||wishesantennarightfully.com^ +||wishesestablishedbless.com^ +||wishfulresemble.com^ +||wishfulvineslight.com^ +||wishinghonourederratic.com^ +||wishjus.com^ +||wispingfarmy.qpon^ +||wispyflane.shop^ +||wisteinsight.com^ +||wister.biz^ +||wistfulsynchronizetoys.com^ +||witasix.com^ +||witchesmouldsoud.cyou^ +||witchetofter.com^ +||witchylimn.qpon^ +||withatukhyistk.org^ +||withbeggulpythurle.qpon^ +||withdrawalbellownovel.com^ +||withdrawtrade.com^ +||withsaypioxe.qpon^ +||withthewindndc.org^ +||witnessedscratchreluctance.com^ +||witnessjacket.com^ +||witnessportfoliolobes.com^ +||witneymopier.cfd^ +||witssnoopacceleration.com^ +||wittyinternet.com^ +||witwayabide.com^ +||witwormcylixsmudgy.qpon^ +||witzajmqjroic.website^ +||wiura.net^ +||wivesaccelerateyielded.com^ +||wivesvacancycraft.com^ +||wiyqdatgczefl.space^ +||wizardsslushrefused.com^ +||wizardunstablecommissioner.com^ +||wjarpcklisgbi.website^ +||wjbjpltssrt.com^ +||wjdgtcuulylbi.website^ +||wjebboljovkwr.top^ +||wjefqoj3i8t9zi.rest^ +||wjhanonquilpp.store^ +||wjibjvgebkolf.space^ +||wjiebpblheplc.site^ +||wjmepiytpjiki.website^ +||wjmghujaluysu.online^ +||wjopvkcozzxif.online^ +||wjqpyvulryxtg.site^ +||wjspbwpdikhfy.com^ +||wjtgwtedzibzu.online^ +||wjtplohagbwor.online^ +||wjugygvvdouyk.space^ +||wjvhbfbl83v4t1.cfd^ +||wjwdlfxtdydci.store^ +||wjxdmbftniafy.website^ +||wjxjomgbxflfc.store^ +||wk4gxpz1xbtt57bhwb3yete2tf3bz.cfd^ +||wkbkgxkjopxfc.space^ +||wkbyglkyywtez.space^ +||wkcipnrwggdht.store^ +||wkcqqgyhtjsvc.space^ +||wkdjprbtixvnx.website^ +||wkerjleoderlg.online^ +||wkfjbrmbkdiqa.online^ +||wkghcdvjmgspm.website^ +||wkgjvfzec8b61lqn63npjw7cqz.cfd^ +||wkhimxmzsixtd.website^ +||wkhyhmqdtpvwgyc.com^ +||wkjvzljmxdzni.top^ +||wklmyjveuvlyf.online^ +||wkmotajasmrof.website^ +||wknzhduxctbep.online^ +||wkoocdlvzcmzd.space^ +||wkpuhmkdupgee.website^ +||wkpvhgnzgxkyu.site^ +||wkqbmyjcuqfxm.site^ +||wkrflrxfdtx.com^ +||wkrqvffpntjzm.store^ +||wksabrssxlhll.com^ +||wksfhfswxamwjq.com^ +||wktcwjlzpeicg.website^ +||wktowncuthsvf.site^ +||wkwdmllrmscgp.space^ +||wkxvopwtaykla.website^ +||wkxypxkzntijg.site^ +||wkyckafny.com^ +||wkyiwsiryjrke.space^ +||wkzmxixgjobkf.site^ +||wl-cornholio.com^ +||wlachyhpbssxf.space^ +||wlafx4trk.com^ +||wldtwlhtclyxb.website^ +||wldyhwenmkmcv.website^ +||wleallwqybqov.top^ +||wlfmddrbvkocw.site^ +||wlfslsqfinhtp.website^ +||wlgivooohhsen.space^ +||wllhjebhtcrjz.space^ +||wllwdfvaudnhi.space^ +||wlmleoeykzsmm.space^ +||wlntzdjktaskn.website^ +||wloalafswtvlk.site^ +||wlupsmxczpcml.online^ +||wlvkzwqmyjwoz.top^ +||wlvrbtcscckvp.space^ +||wlwxefpldfxoi.website^ +||wlx5.com^ +||wlzhmngyhuebs.space^ +||wlzzwzeevbyak.top^ +||wmawimzinmm.in^ +||wmbbsat.com^ +||wmbmkuiglywub.site^ +||wmccd.com^ +||wmcdct.com^ +||wmcdpt.com^ +||wmced.com^ +||wmeaftaqcnu.in^ +||wmedps.com^ +||wmeqoborqbkjw.top^ +||wmgtr.com^ +||wmhq8tw8t5ju3y.rest^ +||wmkjc6nehfknwg35ibwn2y5oxof8p36kpngq.cfd^ +||wmkyrnbejgyku.website^ +||wmlatpmbcaebl.space^ +||wmndlomarcydl.site^ +||wmnfqywhoauuo.website^ +||wmnhyyanrkwae.website^ +||wmnxcxftfbpbr.space^ +||wmober.com^ +||wmoylynifuain.space^ +||wmpset.com^ +||wmptcd.com^ +||wmptctl.com^ +||wmpted.com^ +||wmptengate.com^ +||wmptpr.com^ +||wmpuem.com^ +||wmqlqtbzcbvri.site^ +||wmrhidwwfqbsc.online^ +||wmrnhjhjamiev.website^ +||wmtchliztxcvp.website^ +||wmtten.com^ +||wmxzrccwgpenl.website^ +||wmzhygbziauhh.space^ +||wn4wztsx.xyz^ +||wn6x136h.xyz^ +||wncvwcgedgtjs.site^ +||wndfziyuixzzr.site^ +||wnedandlookedv.org^ +||wneecilp.net^ +||wngegvxrgpsvm.site^ +||wngphwgajdaek.space^ +||wngtyiufnsuhp.online^ +||wnifhkhtpemse.space^ +||wnigzxrllhtpi.online^ +||wnizjdggtn.com^ +||wnjpbboykjezo.online^ +||wnlabbsupkwuu.space^ +||wnlnufsbeepus.site^ +||wnlptmgjgbdju.website^ +||wnmejreldlzcu.online^ +||wnmtwgjtoozaq.space^ +||wnnatyfziksqt.website^ +||wnoeyhmmzfmlt.online^ +||wnoilxxwv.com^ +||wnotrbrxpealj.online^ +||wnp.com^ +||wnt-some-psh.net^ +||wnt-some-push.com^ +||wnt-some-push.net^ +||wntkjkymoulmx.online^ +||wntxecprzkusk.site^ +||wnuohpalintlp.online^ +||wnuoqyophobbm.site^ +||wnvxsbctvedod.online^ +||wnxjqskewchiv.space^ +||wo0f-w0of.com^ +||wo0f-woof.com^ +||woacoaglastaim.net^ +||woafoame.net^ +||woakaithfence.cfd^ +||wobblesdisorbneper.cfd^ +||wobbly-birth.com^ +||wobblyfudged.com^ +||wobblypin.pro^ +||wobqizsvitxmk.website^ +||wobtuunyjybzw.online^ +||wocmaungiw.net^ +||wodenakasha.qpon^ +||wodpiotine.cyou^ +||woefifty.com^ +||woevinecrudemasted.cfd^ +||wofuksvmcldep.website^ +||wofuktbwhqskm.net^ +||wogglehydrae.com^ +||wogqaqyqakmfl.website^ +||wohlacmisease.qpon^ +||woihtwxtybnzw.store^ +||wojanpkkxcntg.website^ +||wokeshootdisreputable.com^ +||wokm8isd4zit.com^ +||wolf-327b.com^ +||wolfeighteen.com^ +||wolferspegging.cyou^ +||wollycanoing.com^ +||wolsretet.net^ +||wolve.pro^ +||womangathering.com^ +||wombalayah.com^ +||wombierfloc.com^ +||womenmoss.com^ +||woncherish.com^ +||wondenthaitings.org^ +||wonderadblock.com^ +||wonderconqueriris.com^ +||wonderful-sector.pro^ +||wonderfulborder.com^ +||wonderingaffront.com^ +||wonderingtipmortify.com^ +||wonmijrnd.com^ +||wontliangsraff.cyou^ +||woodcompartment.com^ +||woodcushionfounded.com^ +||woodcutinglu.qpon^ +||woodenside.pro^ +||woodierisled.qpon^ +||woodishbunged.cyou^ +||woodlandsuspended.com^ +||woodracial.com^ +||woodrisaweel.cyou^ +||woodsfalsie.com^ +||woodsyireos.cfd^ +||woodwaxserran.cfd^ +||woodymotherhood.com^ +||woodynotioncredibility.com^ +||wooedalgalia.shop^ +||wooersbyously.cyou^ +||woof-wo0f.net^ +||woofbeginner.com^ +||woofoobukugly.net^ +||woogoust.com^ +||wooguwhede.net^ +||wooinggashest.qpon^ +||wooldedapitong.qpon^ +||woolsawfuster.cfd^ +||wootmedia.net^ +||woozleutahite.shop^ +||woozy-save.pro^ +||wordamazinglylamb.com^ +||wordfence.me^ +||wordishknag.qpon^ +||wordsphonyblacken.com^ +||wordspsychology.com^ +||wordsreceivingdisappointment.com^ +||wordtradeflank.com^ +||wordycourage.com^ +||worgzcdfgkyff.space^ +||woriusly.com^ +||workback.net^ +||workdeadlinededicate.com^ +||workedvote.com^ +||workerwhiz.cyou^ +||workmancolon.com^ +||workmandudleyamplitude.com^ +||workmaninfantryrevolve.com^ +||workpancajeput.cfd^ +||workplaceanticipatedtribe.com^ +||workplacecakefaculty.com^ +||workplacerepress.com^ +||workresponseduration.com^ +||workroomnimble.com^ +||worldglobalssp.xyz^ +||worldnaturenet.xyz^ +||worldtraffic.trade^ +||worldwidebudget.com^ +||worldwidecoherenutty.com^ +||worldwidesteward.com^ +||wormdistressedunit.com^ +||wormersfaky.qpon^ +||wormishnimrod.com^ +||wormlaboratoryspeeding.com^ +||wornoutquica.qpon^ +||wornpichi.shop^ +||worried-advantage.com^ +||worried-difference.pro^ +||worried-sample.com^ +||worrisome-republic.com^ +||worrycuriositymafia.com^ +||worryinginadmissible.com^ +||worserharrid.cfd^ +||worst-recognition.pro^ +||worstbreath.pro^ +||worstoffice.com^ +||worstpacifyflames.com^ +||worsumaristaeligula.cyou^ +||worthlesscomment.pro^ +||worthwhile-death.com^ +||worthwhilegooseberrycrunch.com^ +||worthwhilerock.pro^ +||worthy-hide.pro^ +||worthyboxersympathy.com^ +||worthylighteravert.com^ +||worthysupervisesmug.com^ +||worthytip.com^ +||wortindely.com^ +||wosceqztjpwmr.online^ +||wotelura.qpon^ +||wotenvrlbybjm.website^ +||wotzzqhswsggm.website^ +||woudaufe.net^ +||wouflimbecbuddled.cyou^ +||woulddegree.com^ +||woulukdliketob.org^ +||woundmarkaching.com^ +||wournilboschdustmen.cyou^ +||wovufaobxkzie.online^ +||wowgwmezvkuav.site^ +||wowjqgmrmjgsp.website^ +||wowrapidly.com^ +||wowserymala.qpon^ +||woxbnkonxwvrk.site^ +||wpadmngr.com^ +||wpbioervnvxdv.online^ +||wpcklpeseoivx.online^ +||wpdbdkhobbwhf.space^ +||wpdieifpq.net^ +||wphefiaictrsr.space^ +||wphqb1lqv89gh6l.cfd^ +||wphwblykxoiia.online^ +||wpjplnykjopdp.online^ +||wpjugqasgblow.space^ +||wplgowfnbwuiz.site^ +||wploqscswmwfj.site^ +||wpmnsxomicvavi.com^ +||wpnbiqsqpccfo.website^ +||wpncdn.com^ +||wpncrmusaeuzl.space^ +||wpnetwork.eu^ +||wpnjs.com^ +||wpnrcpjzaweef.website^ +||wpnrtnmrewunrtok.xyz^ +||wpnsrv.com^ +||wpnxiswpuyrfn.icu^ +||wpshsdk.com^ +||wptcd.com^ +||wptpkofn.com^ +||wpu.sh^ +||wpush.org^ +||wpushorg.com^ +||wpushsdk.com^ +||wpvvlvzpneobl.website^ +||wpwnejtixioio.website^ +||wpyirxebjtvdh.site^ +||wqbeavbpztwsm.website^ +||wqbghtlchfeir.online^ +||wqbuwbiuowblc.store^ +||wqefjlpihnnqy.site^ +||wqfbpdnqrdycx.space^ +||wqfkxohimhtrj.online^ +||wqgkqkjxrhike.site^ +||wqhgmzdbdgasc.space^ +||wqhlaexymgkyu.site^ +||wqjisacylil.com^ +||wqjregsni.net^ +||wqkjeoqjzmmyo.online^ +||wqkptgmrlkkel.online^ +||wqmnhaxnmdvdu.space^ +||wqmnnnsigesgf.online^ +||wqmnvspyjhgqhqn.com^ +||wqonahwbvbucq.site^ +||wqoruynunigia.website^ +||wqpgjenwxsbyd.space^ +||wqpkffkrcnqyw.online^ +||wqqoxwngxsfedym.com^ +||wqsbkvlehqipsec.com^ +||wqtfijyhoppfk.website^ +||wqtpdbegijbuz.website^ +||wqtrndlf.com^ +||wqtvhnrmmgbdn.online^ +||wqvwqxstgqjyk.fun^ +||wqvzwdrbabind.website^ +||wqwoynnxgujac.online^ +||wqxvfzvqcqmcs.website^ +||wqyenrdmgkikd.site^ +||wqyw8umjobny1b1pelqu.cfd^ +||wqyygiuxkqxxa.space^ +||wrangleclaspinteract.com^ +||wrapstupendous.com^ +||wrathfulletter.com^ +||wrathprune.cfd^ +||wrathyblesmol.com^ +||wrazdlwgbgrvt.online^ +||wrbaboroypgmq.online^ +||wrcbaiyrpmsza.website^ +||wreckcentigradecleared.com^ +||wreckingfaucethealth.com^ +||wreeyopuoud.net^ +||wregimfhnvmru.site^ +||wrencorrupt.com^ +||wrestforsake.com^ +||wrestgrandfather.com^ +||wretchedadvantage.com^ +||wretchnavelpotent.com^ +||wretchonto.com^ +||wretchoutburst.com^ +||wretchskim.com^ +||wreulqbszdpjf.site^ +||wrfpxenkhuekc.site^ +||wrhgivbwofdba.space^ +||wrigglefinviewed.com^ +||wrimpleapsid.qpon^ +||wrimplecirsiumseptuor.qpon^ +||wringbible.com^ +||wristample.com^ +||wristedbirdleterring.cfd^ +||wristicalit.com^ +||wristseeingscald.com^ +||writeesilkily.qpon^ +||writehopedcrashed.com^ +||writerfuneral.com^ +||writeupfrap.cfd^ +||writhehawm.com^ +||writhembowel.shop^ +||writhenabreast.cyou^ +||wrjflweehsync.space^ +||wrjq4mv3pyk8my2of.cfd^ +||wrjqrggjydtgr.site^ +||wrnqakeoomvlg.store^ +||wronglynoblingbasoko.cyou^ +||wrongrereignprayers.qpon^ +||wrongsake.cfd^ +||wrothenitent.cyou^ +||wrouitslhznhn.online^ +||wrppoldzkxbqo.space^ +||wrpqqnurjtljv.space^ +||wrqywyffqfpnf.online^ +||wrrqigpzmekcd.space^ +||wrsmnqmpopund.net^ +||wrufer.com^ +||wrvxrwbqvnzdr.space^ +||wrxdsplmtfwzp.space^ +||wrxixuknpvjxm.website^ +||wrysrtitoqbgn.online^ +||wsaovlmqyzglj.space^ +||wsdazglmaboql.store^ +||wsfmgmmpfdekq.online^ +||wsgefymufhnxb.website^ +||wshzuflpctwdi.space^ +||wsieasjngwhuf.site^ +||wsjlbbqemr23.com^ +||wslubggeuxqtj.online^ +||wspzjdkayrwlt.space^ +||wsqdhjdmelsbl.website^ +||wsqsdxcelggje.website^ +||wsrmmeokaabac.online^ +||wsrtokocmpozr.site^ +||wsssaunhzztxj.store^ +||wstats.click^ +||wstep4.biz^ +||wstlfwsmibwkw.site^ +||wstnipfjthtmg.online^ +||wstohshlvmiqd.space^ +||wsurseonbhtvr.space^ +||wsvmoidbtppok.online^ +||wsxufppuayiui.online^ +||wt2x6p7j.xyz^ +||wtaorvnpa.com^ +||wtatrrum.net^ +||wtdshzjdlppil.online^ +||wtdttepdbcpnx.site^ +||wtg-ads.com^ +||wtgagdcpttgmd.store^ +||wthggqjzcbknn.space^ +||wthoeewyxgbyc.site^ +||wtjxgdwbdtbqy.online^ +||wtmufjwypjjdg.website^ +||wtmxfcptueyoz.store^ +||wtoujbtnafmds.online^ +||wtrie6pi2y6wqg1lbt9cofpw3.cfd^ +||wtsbmtpmcsxvd.website^ +||wtshkjtmmrvvi.online^ +||wtumqlwqhw.com^ +||wtuoshjhehu.in^ +||wtxqkplrdszqm.space^ +||wtxtnklhhshhl.site^ +||wtyhyzvsxlpeb.space^ +||wtyuhmshsh.com^ +||wtzqznypmadeo.store^ +||wuaafacwszsqh.store^ +||wucnmyrcici.com^ +||wudidaxheqblk.site^ +||wufagsjtola.in^ +||wufazpappk.com^ +||wufbvfxompodz.space^ +||wugjktzljgefy.website^ +||wugoji.xyz^ +||wuiighvymbl.com^ +||wujjt2qo76qj3kmz65gpmo.cfd^ +||wujmohdqhgxio.online^ +||wujrfwhsdtobv.space^ +||wukcvtbrlyrxd.store^ +||wukgtkgfuccmi.online^ +||wumufama.com^ +||wunworsets.shop^ +||wuporg.com^ +||wuqlgnyasteaf.site^ +||wurjudo.cfd^ +||wurldcergpkri.site^ +||wurleysskithertum.qpon^ +||wurqaz.com^ +||wushtillot.cfd^ +||wutfykwgbuq.xyz^ +||wutqgiuriurbk.space^ +||wuujae.com^ +||wuvrfvmvqabgc.store^ +||wuvudpywmvqoo.online^ +||wuvukvmntfarm.website^ +||wuwogyfkwifph.site^ +||wuxhettgdwgfe.online^ +||wuytb.com^ +||wuytk.com^ +||wuzbhjpvsf.com^ +||wuzzleamu.qpon^ +||wvdkbuoimnxyu.site^ +||wvhapsvllumwx.space^ +||wvhba6470p.com^ +||wvjzqrwhbvepc.space^ +||wvlserrzyvspo.online^ +||wvlwtsgbperzr.space^ +||wvmvpjlguwapy.online^ +||wvnggxfjhwdzd.online^ +||wvqljkowybfxe.space^ +||wvtsnyncckesw.site^ +||wvvmqsasndeup.space^ +||wvvoousaenpzv.space^ +||wvxhxwntusldrt.com^ +||wvyrjaskgtuxx.online^ +||ww2.imgadult.com^ +||ww2.imgtaxi.com^ +||ww2.imgwallet.com^ +||ww5ihqoqtphgih6qpgh14rjpek392xyki2.rest^ +||wwazalfqbheab.space^ +||wwbdxxdybpfpl.site^ +||wwcjhitmvwdqh.space^ +||wwdhgevpmxmvs.online^ +||wwfgafqh.com^ +||wwfictxcxfioz.website^ +||wwfmjmjqucuri.website^ +||wwgldtvwiryqb.website^ +||wwgrrqrnphfdg.online^ +||wwhsquzfatqzr.space^ +||wwija.com^ +||wwmvemdbbdsgm.site^ +||wwnowdnguuklz.site^ +||wwnsbcmmcaeqe.website^ +||wwpon365.ru^ +||wwqharkuwtwet.online^ +||wwqtpcmsikcab.net^ +||wwrikjyzfnqeu.space^ +||wwtfmeonvlazu.online^ +||wwwadcntr.com^ +||wwwdtpbjjlnlm.site^ +||wwwkiuxvdmglf.online^ +||wwwpromoter.com^ +||wwxeyxdyyitzl.space^ +||wwyoyuutoudbf.space^ +||wwznejoelup4ylcfm6bozw7h.rest^ +||wwzvxruceyuwh.online^ +||wxcpjtdrckkld.website^ +||wxcyfbbletwiu.site^ +||wxgqtpqmvldip.space^ +||wxhbmaksealdf.online^ +||wxhiojortldjyegtkx.bid^ +||wxmn-defender.pro^ +||wxmxrg3551onwl2wq.cfd^ +||wxnbixxvbbunl.space^ +||wxnbmpishocym.online^ +||wxngociwgiqin.online^ +||wxnxonqmtqbuo.online^ +||wxoxzygecthmu.online^ +||wxqhhskaltnbw.site^ +||wxqlynazgmk.com^ +||wxrgjdkxhegjn.online^ +||wxtldkydabpmz.online^ +||wxutv386vrm757.cfd^ +||wxwdpvolofgdt.site^ +||wxwjidcqfsakq.space^ +||wxxjvvnetyomm.website^ +||wxyzjutyofbjm.space^ +||wyaiuzyqwbuvt.site^ +||wyandotmisusesmacules.cyou^ +||wyanosgkvkobn.store^ +||wyapfiujccvsj.store^ +||wydeesunqvlsn.online^ +||wyebbkxinxgud.website^ +||wyemijjnbkrol.space^ +||wyeosamxhgqwt.world^ +||wygcjzjkryxfv.site^ +||wyglyvaso.com^ +||wyhifdpatl.com^ +||wyjjrbyohiwjp.website^ +||wyjnfnzlqtjf.com^ +||wyjvdqyexgomq.online^ +||wylhcncknyyzr.website^ +||wylin.ai^ +||wylmptdfafbkh.site^ +||wymdgrewpljln.online^ +||wymimtskbceow.space^ +||wymuxgvyjwmraqn.net^ +||wynesippiotreatee.qpon^ +||wynvalur.com^ +||wyojunmhapedc.site^ +||wyominghicky.com^ +||wyqikvlslnuuf.space^ +||wyrglylcvbpdy.net^ +||wyrkxpdolvfeh.online^ +||wysasys.com^ +||wytesdowned.shop^ +||wytnrgtxsgvwo.online^ +||wyujsbwlvzhqp.website^ +||wyvcioftcidpi.space^ +||wyverjudaist.cfd^ +||wyvgwkupgpdrd.website^ +||wyvlllooalwlj.top^ +||wyvtoicgngifo.website^ +||wywdtudphanbt.store^ +||wywgohkuukfin.online^ +||wywwyvtsjuywc.space^ +||wyxwcqfgzitjj.website^ +||wzcbflxsbtkaw.site^ +||wzccrzcdntskz.space^ +||wzcdffkknsvbz.space^ +||wzcmdnxvmwxbq.site^ +||wzelipmfuva.com^ +||wzeocharram.com^ +||wzhraonifqvig.space^ +||wzobwendrydoi.website^ +||wzplcddnvdodh.xyz^ +||wzqotpvpbyqhc.store^ +||wzqpvfcijrjlv.online^ +||wzuarqzexkjiy.website^ +||wzutebvjpxwwu.site^ +||wzwndbifflvvw.website^ +||wzxxconhwowni.space^ +||wzz46x8e.xyz^ +||wzzbenxkreqpy.space^ +||wzzxlpluualal.website^ +||x011bt.com^ +||x2tsa.com^ +||x337cc1f9rxk9ff.cfd^ +||x3nog4kmx8x38ui15gyz91211lyn99mc.cfd^ +||x3ntevtifiz4uf1465ktzufcu.cfd^ +||x3oz4y15u4it81zmiew94r1y2y7p231i8.cfd^ +||x4217wz44e8w2k.rest^ +||x4mw3x96nwxnwf1b.cfd^ +||x6y1.com^ +||x7cfnthkqnfc6x.cfd^ +||x7i0.com^ +||x7lp4qrkjuupqm.cfd^ +||x7mrg96h6og3ecqrp9z1r7.cfd^ +||x7r3mk6ldr.com^ +||x8qeucbtjwh8l3875.cfd^ +||x8zep2kb8qzq15b6.cfd^ +||xaaaluzygbrgc.space^ +||xaaitpzcofwdm.site^ +||xabpahjkwqdcq.online^ +||xacdghbkbelxi.website^ +||xad.com^ +||xadcentral.com^ +||xadsmart.com^ +||xaepktokzhspv.space^ +||xafrpagtesteb.online^ +||xafszmuibdlps.site^ +||xahkzacrrwfzu.online^ +||xajgsjguxriuc.space^ +||xajyvcqiqpzmk.site^ +||xakhgpksmptdm.website^ +||xamqorqnbvofz.site^ +||xamxcaiizwbhu.space^ +||xankzgpeqersd.site^ +||xanthicara.com^ +||xapads.com^ +||xapsaobhmzdgd.site^ +||xarukaawenabr.site^ +||xatsjwiuwtgkm.site^ +||xavions.shop^ +||xawafinmijdrp.online^ +||xawlop.com^ +||xawlumobxl.in^ +||xaxokpulmicmv.site^ +||xaxoro.com^ +||xaxrpxpifobzj.site^ +||xaybbkzhceysr.website^ +||xaytmgqquplhx.website^ +||xayywzcbeudmh.website^ +||xazafvbmicmi.com^ +||xazextepdkarx.store^ +||xbbuafyizlkov.space^ +||xbbxljge.com^ +||xbdvfcqdo.com^ +||xbeaspolzddtc.space^ +||xbfoaninfgolq.space^ +||xbhoylaadarbq.website^ +||xbiicstjgsqpr.website^ +||xbjzqknhajwyw.website^ +||xbkcaouzpdgpb.site^ +||xbmiicdidpymj.vip^ +||xbntrnsfgmhiw.space^ +||xbosvsupnbtzx.website^ +||xbovikgcahuob.website^ +||xbpiwtgsrqbfr.online^ +||xbrvpsrrklbya.site^ +||xbsnsisymkjxc.site^ +||xbtvdfnxyyryy.space^ +||xbuggishbecom.org^ +||xbwu263zww35pnt.cfd^ +||xbxyymigpvwbx.space^ +||xbzcorkefbfrl.site^ +||xcazgiktebquy.website^ +||xcbaaofcfwrhc.website^ +||xccxuhbcfjufv.website^ +||xcdizpnjkxwsc.website^ +||xceavbango.in^ +||xcebawedhllzp.website^ +||xcec.ru^ +||xcelsiusadserver.com^ +||xcgqfltvwjepr.space^ +||xchlleznintba.online^ +||xcipwuoft.com^ +||xcirtefata.in^ +||xckmiovstahqy.website^ +||xcnbprtqcwplz.space^ +||xcognklpyq.com^ +||xcohzwdmnkryw.online^ +||xcowuheclvwryh.com^ +||xcpmfvlfcdltd.online^ +||xcqfaclqifemm.site^ +||xcrrdxmdadebs.site^ +||xcrxijlvzxtbn.website^ +||xcvfqnxr.net^ +||xcwpapxg.com^ +||xcxmfcqehr.net^ +||xcxmpiysijwjr.website^ +||xd51vd1y.xyz^ +||xdbfroeqjhkqw.site^ +||xdbofzoobrmgu.site^ +||xddofaytuemne.site^ +||xdeckgqeq.com^ +||xdgfzufqqumlk.space^ +||xdhjbmysilynq.site^ +||xdiccukqbviiz.online^ +||xdifjhbyqxdbg.website^ +||xdirectx.com^ +||xdisplay.site^ +||xdiwbc.com^ +||xdktadxavtybm.website^ +||xdmanage.com^ +||xdmwyecqmbykn.website^ +||xdmycvwgynylh.store^ +||xdneygldlewtb.space^ +||xdntimoypskgq.online^ +||xdopmddpydxpl.site^ +||xdopqmkcwwyqv.site^ +||xdpsqlmonufvf.site^ +||xdrelbgbndfnl.site^ +||xdshayciuedur.website^ +||xdspoexdjeaab.site^ +||xdvpklyzu.com^ +||xdwfqbniox.com^ +||xdwfwyttks.com^ +||xeayxkzdnaqxq.site^ +||xebfomhenqxin.online^ +||xecdcjxhuefhg.space^ +||xeducmvlja.com^ +||xedvuqcniuwth.website^ +||xefhktqktlwar.space^ +||xegxxzcluwfqo.website^ +||xehprwuggzhjh.space^ +||xeiswdcgastrt.online^ +||xeitnipcoefge.store^ +||xejrwgzfwzxwx.website^ +||xelhwfsgqffov.website^ +||xelyyhidsqcdg.space^ +||xemmgygfgjytb.website^ +||xemswfbrdhrts.website^ +||xepaijcfgvzje.online^ +||xepluwsaisxgi.website^ +||xerahhhwhpcey.online^ +||xeroxhoubara.cfd^ +||xerunkus.com^ +||xescjwqnpmwki.site^ +||xeuesswygmuso.site^ +||xewujztulrqer.website^ +||xexkerkgrfyaf.site^ +||xfalmawladvew.site^ +||xfbdnfyafbmq.com^ +||xfbjiyqezmwew.space^ +||xfbsnbrmgtpur.website^ +||xfbvhjvstczah.site^ +||xfczzdcfjmpbe.online^ +||xfdujdeybhizt.site^ +||xfehectueumst.online^ +||xfgmggfebwjtv.online^ +||xfhknzocnbcux.buzz^ +||xfihllnrdxnvr.site^ +||xflnjtnmywule.website^ +||xfmybdtedhzel.website^ +||xfpjhwejhicwc.website^ +||xfqiwwdxryuvo.website^ +||xfrguohlskkmq.site^ +||xftfxqqykzina.site^ +||xftzmvvgnbnsx.space^ +||xfvclznzhmtte.site^ +||xfvrkhjmanrnr.online^ +||xfvslsqqtyeeb.store^ +||xfwblpomxc.com^ +||xfxagcqndbkrl.website^ +||xgahbeklumki.com^ +||xgaxtbrifshmc.website^ +||xgbetzbmmdqbv.space^ +||xgbmuxkupngbn.website^ +||xgbzhyoeitomd.website^ +||xgefwokzxvuzx.space^ +||xgexwjyjjxugctg.com^ +||xgfspsfqrngsyxg.com^ +||xgfz4ljyt5mwhwf.cfd^ +||xghklnjmyljlc.site^ +||xgiiioziwwayu.store^ +||xgjhpuyigenen.website^ +||xgolyqyfjuuwn.online^ +||xgozhrjmwwgxf.site^ +||xgqdiziizrqcn.website^ +||xgquu0bp.xyz^ +||xgraph.net^ +||xgsxkzscxapvj.online^ +||xgszciooysvcj.site^ +||xgubwpvoyqgtd.online^ +||xgupczseyx.com^ +||xgvgjcesdrssk.site^ +||xgwvtfjyklyyi.website^ +||xgyamkbizucnd.store^ +||xh1tsu69.xyz^ +||xhaahvpleugdp.site^ +||xheyqnwbsemjc.website^ +||xhfhavppnxent.online^ +||xhijvczo.com^ +||xhklrsxyhlcfr.site^ +||xhktyryhxspej.online^ +||xhmeoqeoeurjk.store^ +||xhmewlkjkvump.online^ +||xhmyevcqcasdf.site^ +||xhnouqnhyhohr.online^ +||xhowfogabl.com^ +||xhqdvrbaoybgw.site^ +||xhrhamnlzddyk.space^ +||xhskoszdinatr.space^ +||xhstfdnhkcgec.online^ +||xhsusbtxgzndj.website^ +||xhunajtipm.com^ +||xhwsvvhzozndh.website^ +||xhxmwcxglc.com^ +||xhxqxgxcbdpsx.website^ +||xhzlgrectlvsp.website^ +||xhzrzyxlvuzpq.online^ +||xhzwyppwkmudx.site^ +||xiailvhqrdoml.website^ +||xiapuhdhbdsmd.online^ +||xiaxslpsgdblw.site^ +||xicakemoter.cyou^ +||xicomfier.cyou^ +||xidxktydwzica.website^ +||xieduajahaonu.space^ +||xihoqsajpap.com^ +||xiictvbnhmqnp.website^ +||xiifunorin.qpon^ +||xiixzsaxlirtn.site^ +||xikxomyzutsto.site^ +||xilb1558k9yjy6xlo2i.cfd^ +||xilflksioan.net^ +||xilpcschzrgnp.site^ +||ximtfhywwwwbs.online^ +||ximybkpxwu.com^ +||xiotkhvvuacdi.space^ +||xioxcrzwixuet.space^ +||xiozrgajvpfry.site^ +||xipteq.com^ +||xiqhsgtnqcbzy.online^ +||xiqrciamgw.com^ +||xiqtuegppgjra.website^ +||xirmhojmjyldx.site^ +||xirugcrbfagsb.space^ +||xismhhxnxzfdj.online^ +||xisvaxzfyg.com^ +||xitsievucdlde.space^ +||xivledoyfnbjx.space^ +||xivsgjxkgnskk.online^ +||xivtiwrjgqrpo.website^ +||xiwussophvzio.site^ +||xixvvegwkskns.site^ +||xiypojikmfgup.website^ +||xj6n818rl2129fc18z4gw1jefq.cfd^ +||xj8z6umrlxw23k6k5ygtnp9.cfd^ +||xj9gth5i.xyz^ +||xjawvwhipohot.online^ +||xjdkccwyttuqj.website^ +||xjihzwnozmgyu.site^ +||xjixhyvesogtx.site^ +||xjixxfwwheoch.online^ +||xjjjeoythaboi.website^ +||xjloohywddakb.website^ +||xjmdtacpndbgkl.com^ +||xjmojakvb.net^ +||xjnmjwssymtwp.site^ +||xjnueiii85kguhnrzpz3.cfd^ +||xjpedakwe.com^ +||xjrwxfdphc.com^ +||xjrxraywuufse.com^ +||xjuoopnalaycv.site^ +||xjurarsoqdinb.website^ +||xjwkmuaaleotc.space^ +||xjwtaasbbrhyv.site^ +||xjxpyhhqcqcpi.site^ +||xjxtwlgfaopkp.online^ +||xkanzuqreeloy.store^ +||xkcsdxyexvzgj.site^ +||xkdqhcmfypbqcff.com^ +||xkhhdxozfdxgp.website^ +||xkihevzkxjtdq.website^ +||xkiinympgstgd.online^ +||xkkiyatdjqjkq.space^ +||xklejvczdbknm.space^ +||xkmhnekbfoibx.website^ +||xkmxxgroronzy.online^ +||xkopvesrnertg.site^ +||xkrihxceguhfe.site^ +||xkrjuicspjipi.store^ +||xkronawgqyuia.site^ +||xksinmebhlqgb.online^ +||xkspgkdejobec.site^ +||xkudtuarvq.in^ +||xkuleysuqgzbz.website^ +||xkulpvtjmrhkhb.com^ +||xkuxohmppjzjo.site^ +||xkwvzesueefsn.website^ +||xkybsvfhjuznn.space^ +||xlakqgtnzjcix.online^ +||xlbbptatopcat.online^ +||xlbcgcmoawjqt.online^ +||xlbgbzzphvkac.site^ +||xlebyndzkwxkn.space^ +||xlflvygubrgbk.store^ +||xlgoifvljhnyp.online^ +||xliefgyqwgv.com^ +||xliirdr.com^ +||xlirdr.com^ +||xlivrdr.com^ +||xljgbrlqylwwt.store^ +||xljhqekqygwuohq.com^ +||xlkbinzjgmnsy.site^ +||xllceyjtmljek.space^ +||xllkxiffgdidv.site^ +||xlmamdeykpist.online^ +||xlmevfxdcbeak.site^ +||xlmuhiaozekzh.site^ +||xlqtqzm.com^ +||xlraqugclbwly.space^ +||xlrdr.com^ +||xlrm-tech.com^ +||xlsfswiaqcrxc.xyz^ +||xltdqkwaamxgg.website^ +||xlucsjrgiunux.website^ +||xlujbmaahnwxj.space^ +||xlvhafsuujcmu.online^ +||xlviiirdr.com^ +||xlviirdr.com^ +||xlvirdr.com^ +||xlx1.com^ +||xlxba.com^ +||xlycebjrbkkrr.site^ +||xlywhtlvgmqef.website^ +||xlzbuxsriqejb.space^ +||xmastoyon.cfd^ +||xmay6dqh.xyz^ +||xmayktavadugm.site^ +||xmbivntukfnxm.site^ +||xmchnnolnayzt.store^ +||xmcoepzjqqmak.site^ +||xmekxlhqdcqbj.site^ +||xmgxmkybnijnu.website^ +||xml-api.online^ +||xml-redirect.online^ +||xmladserver.com^ +||xmlap.com^ +||xmlgrab.com^ +||xmlking.com^ +||xmllover.com^ +||xmlpostback.com^ +||xmlppcbuzz.com^ +||xmlrtb.com^ +||xmlwiz.com^ +||xmlwolf.com^ +||xmmxtkkndpbq.xyz^ +||xmngnaqprlrwu.online^ +||xmpoiotsmpkro.website^ +||xmrmngqivbgpx.site^ +||xms.lol^ +||xmtkdmcx.net^ +||xmtmelmhgtcdi.site^ +||xmvawickdvmhc.online^ +||xmwkvzvmoariv.site^ +||xmzppziqajevl.site^ +||xnbbkvycmltnw.space^ +||xncnmofrcxapr.space^ +||xndqzcszmqyin.website^ +||xnerivlyclrak.site^ +||xnesbsgxocwxi.website^ +||xneyeaoqjhayv.site^ +||xnfbhzbvsyepf.online^ +||xnfjictwvrnuz.site^ +||xniyaklqxkech.website^ +||xnjkjowmtijwa.online^ +||xnkldnhifcdmr.site^ +||xnmwcknxoorlnax.com^ +||xnqiswpbbsdkjij.com^ +||xnqoemsieebzu.website^ +||xnqzisqoxmbwb.space^ +||xnrptxnbixotn.online^ +||xnrzeuweyrwyx.online^ +||xnsdayearqlpo.space^ +||xntlhvmcfqdxf.website^ +||xnuewypvwoziz.store^ +||xnurnqmhkkmfe.online^ +||xnuxpyn71vmtbb4my8b5ifpx4.rest^ +||xnvjjkinsmqyu.site^ +||xnvohzvudizgf.space^ +||xnwncknejempg.website^ +||xnwoyfoqfwvck.site^ +||xnwtugzfknrtr.store^ +||xoalt.com^ +||xoanonhemljuchart.qpon^ +||xofwgjbogybvi.site^ +||xogpashkeftic.net^ +||xoinnwjmlrkcv.space^ +||xoioaiiryhdti.space^ +||xokxqfxasjuaw.space^ +||xolfzsxmgswqt.site^ +||xoniwltrsxgot.site^ +||xoofjgbtvkzjf.store^ +||xoojebxoyzves.online^ +||xooykomekousp.space^ +||xosnteewpgzmh.website^ +||xoszyclagweyv.online^ +||xotdsycbrrxkv.online^ +||xoubuywanqskg.website^ +||xovbjzdbfomoo.site^ +||xovlsjegbpwqs.site^ +||xownbkkhgzywg.website^ +||xoxdxaxzcczof.site^ +||xoxqofisgrgnp.online^ +||xoxyxaxtgkryj.club^ +||xoydvcfiseclm.space^ +||xoykjvuhsnlp.com^ +||xoymkdgsafcdh.site^ +||xp6wsv4c.xyz^ +||xpbhflptmrrfj.online^ +||xpbrqqmdttbyg.space^ +||xpbxykptzukon.online^ +||xpe3qcqz.xyz^ +||xpeivrvqckryo.store^ +||xperuhwo.com^ +||xpffdxzsaqfhs.website^ +||xpfpctnclgruq.online^ +||xphrpolxrhqqf.website^ +||xpicpefsaxhqs.website^ +||xpjelhadgvkhc.space^ +||xpjfvzoqznrpg.site^ +||xpjtjsfbnxorq.site^ +||xpkdjoxirfcm.com^ +||xplanrdtnryol.space^ +||xplfnxefkrhxp.space^ +||xpmgokvhhjoty.site^ +||xpmpshghkdxf.net^ +||xpnezjinizzcy.online^ +||xpnjuygchcxhb.space^ +||xpollo.com^ +||xppedsonpcwzu.website^ +||xppx1662.xyz^ +||xprekysp.com^ +||xpriwfyaccjvb.space^ +||xptcmnqlaxsox.website^ +||xptidujgjktk.com^ +||xptjbnlsaaeql.site^ +||xptzbpajealib.website^ +||xpuaujrqdqvsk.website^ +||xpvewpanmkzis.site^ +||xpvv0rkn.fun^ +||xpvvtuccygqgv.site^ +||xpwpkuexwpakf.store^ +||xpxantthjowrd.online^ +||xpxomaqrzzgoj.online^ +||xpxqagsqezhgk.website^ +||xpyabrwzoh.com^ +||xqb9h1q4r4g9xz196.cfd^ +||xqedtqzjdjheh.space^ +||xqfikpeuitfvn.online^ +||xqhcviqr.com^ +||xqkawrafpewuz.online^ +||xqkllzschtltc.site^ +||xqkqqtzljvwaj.space^ +||xqqmcnphocpku.website^ +||xqqsfeipxeefv.store^ +||xqsfsvngpzsns.store^ +||xqsqczzswxwlr.website^ +||xqsvsdvvypnij.website^ +||xqucrwabgputg.online^ +||xquzkomqjvslb.online^ +||xqvenulmbseas.space^ +||xqwaixyfvtvxy.space^ +||xqwkfbmazxgwe.online^ +||xqxgcdhfkccgg.site^ +||xqxplqzqywvcj.website^ +||xrbcmxuzmyfzj.website^ +||xrbdcvkbhfiw.com^ +||xrbtfev4hm5r7kk.cfd^ +||xrefwashery.cyou^ +||xrff-adguard.pro^ +||xrllratggofic.online^ +||xrlrtpdjmtqfy.space^ +||xrmahblhqxkbq.space^ +||xrmger3zmg3ljr37zglbnkm.cfd^ +||xrnrhowppgvxdhm.com^ +||xrotlrpauwlaa.online^ +||xrqcamarbnhxg.website^ +||xrqiweauoxfwn.site^ +||xrqzzumoujvwx.site^ +||xrtrdwuttxptw.site^ +||xrujupffivxxb.space^ +||xrvsxpthlyyrv.website^ +||xrwjrnrwfk.com^ +||xrxalsvtsruem.site^ +||xrznrtxbswpuk.space^ +||xsapykbbsdm.net^ +||xsbjtmzcpqlst.space^ +||xsbsfifapiemx.site^ +||xsdsemgyxukwx.space^ +||xsfcgwydeqhuz.online^ +||xshnaseqjbbyhch.com^ +||xsjgqnzlbijnn.space^ +||xskmpyxchvanm.site^ +||xsmaiqewozddc.space^ +||xsmeqhlcpsiyk.space^ +||xsmnkwolsmvjim.com^ +||xsmumpxjfjfrn.store^ +||xsnlosinwxzrv.website^ +||xsnmgbrywodvb.website^ +||xsnolrwghvrhe.online^ +||xspijiazzoffk.site^ +||xsqnbjvylfrbw.website^ +||xsqzditggsbkd.space^ +||xsrbatihgyayg.site^ +||xsrs.com^ +||xssqagquifueb.space^ +||xsteethes.qpon^ +||xsthwvgygulfk.space^ +||xstts.cc^ +||xsvirldugvltc.net^ +||xswsyaoglxtbxe.com^ +||xszcdn.com^ +||xszpuvwr7.com^ +||xszvzvvmmeebl.site^ +||xszzabiyogfip.online^ +||xtakfprqxykkt.store^ +||xtcpooexxvutu.xyz^ +||xtehklaqrbpgy.space^ +||xtewwhvhyrazi.site^ +||xtgqnwehivjrb.online^ +||xtgrhgnbvwehy.website^ +||xtgrsenjpmvwm.online^ +||xtipdxvciojuw.online^ +||xtirtlpvihklp.site^ +||xtitjpiaoedam.space^ +||xtjdjognknvqa.com^ +||xtmhzidqppsit.online^ +||xtnjojmkwxrnp.website^ +||xtoogcyzmwmvf.space^ +||xtotmkmljtznt.website^ +||xtpq19c1rk5ytntznqf57oqoh98eo.cfd^ +||xtpselfqfeeui.space^ +||xtqwodezfpfbv.space^ +||xtraserp.com^ +||xtrbagcbjrabn.online^ +||xtremeviewing.com^ +||xtroglobal.com^ +||xttaff.com^ +||xttc2m11vxetbklxet3w.cfd^ +||xtuirgdoviqif.online^ +||xtvzanfdrfjrz.site^ +||xtwxjsjkmuopm.net^ +||xtxhaiikhdgvi.space^ +||xtxjyxtvcwuam.site^ +||xtyokhrngzgza.online^ +||xuahfdwvlmul.com^ +||xuaildchpomncg.com^ +||xuajhybskerxo.space^ +||xubchynamm.in^ +||xubjwrbzpapoc.website^ +||xucylxthpajss.site^ +||xudpitdpaa.com^ +||xudpnwjiprcmy.site^ +||xuehjpsirhyol.space^ +||xuenpasqvdt.net^ +||xueuqxlxsliup.online^ +||xufalsttbhxucb.com^ +||xugsrpmdnvcwq.website^ +||xukbhzxauwjqj.website^ +||xukgn4o2ejuebl.cfd^ +||xulixnionnxrs.website^ +||xulnvruig.net^ +||xulryfwligvot.site^ +||xumxustwahfco.site^ +||xumzkveupjame.site^ +||xuoogxdpjjmpj.website^ +||xuosfunkrqexrp.com^ +||xupbkwvgwourh.online^ +||xupmzrflnoedu.website^ +||xupnmgwgmjddx.site^ +||xurkvrrdbevqc.website^ +||xurlctzwmnnxm.site^ +||xurucnjfjhsjg.site^ +||xusqqicassjoh.website^ +||xutwjkyhpmayq.space^ +||xuuy19fiyvw4nj.rest^ +||xuvxaknemnska.site^ +||xuxtzbczsxcrs.website^ +||xvayntirbqohr.space^ +||xvcefcdyvbyyx.website^ +||xvcwbxjzdecpi.store^ +||xvegvlkqovqqr.online^ +||xvfarnkhampqi.space^ +||xvfihpbojtftl.website^ +||xviggvimgldin.website^ +||xviperonec.com^ +||xvjshpsbondpn.site^ +||xvkseveojmvjk.space^ +||xvlnewayd.net^ +||xvlpksjchavbe.store^ +||xvmzbkpppasoe.online^ +||xvoqhsefm.net^ +||xvpqmcgf.com^ +||xvq66ekmebb83qy.rest^ +||xvqhalbaly.com^ +||xvqidgxfdsxbe.store^ +||xvrrjdgregofk.website^ +||xvsbnqnvokrql.store^ +||xvuaguwvreldr.space^ +||xvubvlxeyfmjn.store^ +||xvuslink.com^ +||xvvvuchrlkezb.site^ +||xvxboavgkjuex.website^ +||xvyaytgqrduup.website^ +||xw75qgzmq89ytl8x.cfd^ +||xweaczbjyftvd.site^ +||xwfafjiihnpmy.space^ +||xwgkbcbvjjvxr.website^ +||xwhztrazolmbm.space^ +||xwiashrkcpvns.love^ +||xwkuffnipcisj.site^ +||xwkvojadxcnyd.space^ +||xwkwiakgumoyz.site^ +||xwlketvkzf.com^ +||xwlptajihmbkz.space^ +||xwmcxqcxipcln.site^ +||xwqvytuiko.com^ +||xwqxwfzhjsxom.space^ +||xwreckontur.com^ +||xwskxrfsvcooqt.com^ +||xwtpdmsgkfbrz.online^ +||xwvtqtsrlgedu.space^ +||xwwnlmicmcmly.website^ +||xwxgjtxsrnkrh.space^ +||xwxludcukzfer.rocks^ +||xwxmasihzkjoj.online^ +||xwxtztqyihcrk.space^ +||xwyeqpvyujmsy.site^ +||xwzbpkku-i.site^ +||xxbrurcjryzny.website^ +||xxbtgbgzcelai.website^ +||xxdlfjdtazsju.website^ +||xxezsifdsivsa.site^ +||xxf4z39fc8vqg9828bu8u.cfd^ +||xxioelflyiggv.site^ +||xxipyvnzwzxmq.online^ +||xxknirslrntbs.space^ +||xxmcqrhazltss.space^ +||xxmwlprw.com^ +||xxnzjkioqzuyl.space^ +||xxpzw73rq2h4vpjfepxxcbz.cfd^ +||xxrvsepkg.com^ +||xxshdknfgltfr.site^ +||xxtxtuztgawjd.space^ +||xxu6kju3p5lpwx8y6o.cfd^ +||xxvfswapdzisf.website^ +||xxxbannerswap.com^ +||xxxex.com^ +||xxxiijmp.com^ +||xxxijmp.com^ +||xxxivjmp.com^ +||xxxjmp.com^ +||xxxoh.com^ +||xxxskrftgrexg.online^ +||xxxviiijmp.com^ +||xxxviijmp.com^ +||xxxvijmp.com^ +||xxxvjmp.com^ +||xxxwap.pro^ +||xxxwebtraffic.com^ +||xxxzbkhpjxzry.store^ +||xxzccpsbdybmx.website^ +||xycyblnwl.net^ +||xyefaumnllhxc.online^ +||xyehuxebfw.com^ +||xyexwfbjrrnak.space^ +||xyhjflxkhqchl.online^ +||xyicgmkbjemlh.website^ +||xylinidbobbin.qpon^ +||xylomasgrain.cyou^ +||xymckbtuvlmjy.space^ +||xympumihvhkkv.online^ +||xynthfjiefofs.site^ +||xyntqqrtdrjzk.online^ +||xyooekeuxxmmy.space^ +||xypmbdsisnrqe.site^ +||xyrizehryyxee.space^ +||xyroxqxhjcjzd.store^ +||xysxkzzygujpn.website^ +||xyuqvvrvdmelc.space^ +||xywxwovfxhtaf.space^ +||xyz0k4gfs.xyz^ +||xyzxpuyhnvaky.website^ +||xz0wefju.fun^ +||xzbyhyxkzfbpa.space^ +||xziicydjexrii.online^ +||xzjdkkbltgfqe.website^ +||xzkqduqxaavac.site^ +||xzlzfiseeuxfw.site^ +||xznyby2wrhg2ft53b.cfd^ +||xzphlvnrjgzsw.site^ +||xzqpz.com^ +||xzqttyicbzhgs.website^ +||xzshonsscrjzu.online^ +||xzuuvjtauxxsj.website^ +||xzyshwfdxwwmv.website^ +||xzzoiprvfobyw.space^ +||y1jxiqds7v.com^ +||y1zoxngxp.com^ +||y2ehvxgs.xyz^ +||y2mmqm12x629ok.cfd^ +||y3gt29zfgkxcr1cwelguvzigbf33.cfd^ +||y4j9cfzr2z7p9n.cfd^ +||y55fplrgtye5yxmg1mcl643wg7tkcnnm.cfd^ +||y5lbtcie4bgyuwiz5ij1x66.cfd^ +||y5mncokbo7799qu4ow8zcxo63j8iiebfi.cfd^ +||y7bo6nwk.xyz^ +||yabagaisiityc.site^ +||yabberflurn.cyou^ +||yachtcancerbinary.com^ +||yachtuppiles.qpon^ +||yacpmnmcaneog.site^ +||yacsvdpiqyrza.site^ +||yadmarmizuogr.website^ +||yadsunkzjtzlb.space^ +||yadyrtedybjftu.com^ +||yaebhbyweyxvt.store^ +||yagtyjaefiecu.online^ +||yahandillisbegunk.cyou^ +||yahdrctswmvax.space^ +||yajjppbbzrxfk.space^ +||yajwwgdogebga.space^ +||yakalasjomilkinged.qpon^ +||yakonangagor.qpon^ +||yakxiaugxzbvr.site^ +||yaldbesluitbuicks.qpon^ +||yalipxglgamod.site^ +||yalqxkqmcjsal.website^ +||yamanaisleepry.com^ +||yamscharnel.com^ +||yanadu.click^ +||yanbkkbxjguvf.website^ +||yandfartoomanyrel.com^ +||yaoeoownhrjxe.space^ +||yapabbreviate.com^ +||yapfairmark.com^ +||yapplanetsterritory.com^ +||yapthsxetvebmx.com^ +||yaq17.com^ +||yaqdcfkkxjqkc.space^ +||yaqdohxkohwpc.website^ +||yardnamesake.com^ +||yardr.net^ +||yardsterrar.cfd^ +||yaryuujqckdco.site^ +||yashi.com^ +||yasmakexdie.shop^ +||yasmaksoviductbrowned.cyou^ +||yasmakspinionsquinite.qpon^ +||yasyyxtxtlbxpnq.net^ +||yatiscapoid.cfd^ +||yatytentioniau.org^ +||yaukggyktvseg.space^ +||yaupaibcfqfvh.online^ +||yauponbotone.com^ +||yavli.com^ +||yaweycult.cfd^ +||yawmarqmnbndi.website^ +||yawncollaremotion.com^ +||yawnedlegifermuggily.cfd^ +||yawnexactplum.com^ +||yawnfreakishnotably.com^ +||yawning-idea.pro^ +||yawninginsect.pro^ +||yawningloss.com^ +||yawuyibzriuzn.space^ +||yaxbsamkhdycw.online^ +||yazspspjorqhx.site^ +||yb1bmq19ocvtjop3e2i2q.cfd^ +||yb23b.com^ +||yb9op4ftqh8xwqrob5qg8k.cfd^ +||ybasuhujdlpiw.site^ +||ybawirztscdhp.online^ +||ybbnetahurnitm.com^ +||ybcbvtnlddcsg.com^ +||ybeciemgtkgfk.website^ +||ybfqkggkcivnv.online^ +||ybgdnogbpucev.com^ +||ybibpwduubqhk.space^ +||ybieggryuprfs.online^ +||ybifthgupqclf.online^ +||ybjgdbcmispbe.store^ +||ybjolykakvwnh.site^ +||yblfxfpvrwuae.site^ +||yblvoxyjzuqrh.space^ +||ybmhowqhutghd.store^ +||ybncrxjcjqu.com^ +||ybowcyskuemsj.store^ +||ybozjqsojrktu.online^ +||ybqnn9566lfnkv.cfd^ +||ybs2ffs7v.com^ +||ybsqqegmkdonc.life^ +||ybtevzivkqolm.website^ +||ybtyvbzvxpvex.store^ +||ybvcxmqpgtdyd.store^ +||ybycgilqhqyib.website^ +||yc5f7not7c23yf.rest^ +||ycafuymxouvbq.store^ +||ycaihhkovkgwt.website^ +||ycckcvaqnbiqa.store^ +||yccpbhbgpm.com^ +||yccsuvitctcyc.site^ +||yccylqzzbmeqg.global^ +||ycdfmqjhwjjqf.online^ +||ycdhgqvracdci.space^ +||yceml.net^ +||ycencliqriclu.space^ +||ycgyoxouebbaq.store^ +||ycjhwnqmlchll.space^ +||yckkscwnnhsnj.space^ +||yckvux5wmt4w5vvof9pr.cfd^ +||yckzwrlrapwbk.site^ +||yckzz7itgxnhkfloxxm.cfd^ +||ycmksqoykzgyf.website^ +||ycnvuhcrdomqz.space^ +||ycoecgqypbqtv.space^ +||ycoxikgxkmddm.online^ +||ycqq-protect.pro^ +||ycqsozlszqmdr.website^ +||ycstajztzoyiu.online^ +||yctoppmxmw.com^ +||ycvhkfhflhirq.online^ +||ycvlvgcuaxtem.website^ +||ycwaqlnpzlvkw.store^ +||ycwkql7vhchkyzj8izk4ri.rest^ +||ycwkyxuspaxhm.space^ +||ycxxulehaukaw.website^ +||yczpwjtvggloo.online^ +||yd2oq9bo.xyz^ +||ydcjbomim.com^ +||ydduszefhnscz.website^ +||ydeyqndahrpry.online^ +||ydiggeurkhusl.store^ +||ydiiowyprhnyz.online^ +||ydjadyzuepuvf.site^ +||ydjplbbzkimzu.site^ +||ydkxuqwwpzivm.space^ +||ydnrwntqtikfg.online^ +||ydsagcvrejuim.online^ +||ydtfvwvmeojpx.site^ +||ydthvtwluaaml.net^ +||ydtokixknbrye.online^ +||ydujxnjqqtxcj.site^ +||yduxbkmeboovj.website^ +||ydvttbexouul.com^ +||ydvvzptycptlr.space^ +||ydzgtvxtyeqzr.site^ +||ydzqgmzktvwxu.site^ +||yeaomanlimbyscabby.cyou^ +||yearabietle.cfd^ +||yearendhastive.cyou^ +||yearntiredomfebrile.cyou^ +||yearocklauia.qpon^ +||yeasslops.cyou^ +||yeastexisting.com^ +||yeastsavager.cyou^ +||yeaweoratikxvcx.com^ +||yechhogweed.com^ +||yectwxcyecvqb.site^ +||yecytiqior.net^ +||yegsbwsspibbk.website^ +||yegvjrkcasiwf.space^ +||yehsqbrolnmrh.online^ +||yejvecidmfuqe.space^ +||yelloptical.com^ +||yellowblue.io^ +||yellowishgather.com^ +||yellowprotection.com^ +||yellsalcaldelimiter.cfd^ +||yeltcliff.qpon^ +||yemenicunrashacres.cyou^ +||yenawxeozlyob.site^ +||yepcevvrfhztv.space^ +||yepgfsxto.net^ +||yeravercabbalaxystus.qpon^ +||yernbiconic.com^ +||yernbzxcydxsv.site^ +||yes-messenger.com^ +||yesgwyn.com^ +||yesmessenger.com^ +||yespbkpharqoo.site^ +||yespetor.com^ +||yesterdaydefinitelycorrespondence.com^ +||yeszrgtanxjup.website^ +||yethumiliation.com^ +||yetiguynpwnep.online^ +||yetlotmiracle.com^ +||yetterslave.com^ +||yeujiaqyeafyj.site^ +||yeukcqecubdcb.space^ +||yeuszfvmmzsng.website^ +||yewsgooney.com^ +||yexhsrfcrukeg.online^ +||yeyswxtehnave.site^ +||yfaagzkhqcjxm.site^ +||yfbjejhtaqtfx.site^ +||yfbmwnnqyocgx.site^ +||yfdnza.com^ +||yfdnzf.com^ +||yfdnzfa.com^ +||yfdpco1.com^ +||yfebifxovgbpc.website^ +||yfenyeuthgedn.online^ +||yferrewarpjoyweed.cyou^ +||yfiucflgsgbry.site^ +||yfjkqpdwlimuh.space^ +||yfkbdckdvrjvm.space^ +||yflksvxeqncep.online^ +||yfnaaarlefkgp.space^ +||yfp8or7xmg8ir8.cfd^ +||yfqnujpniizil.website^ +||yfqrdeewqnwvy.net^ +||yfqtpyfxcfbyq.online^ +||yfsisdewaeush.site^ +||yfskbgbjqfxgf.online^ +||yfswcwcrmslwb.website^ +||yfveranuqguoc.love^ +||yfvwtbufnwrmm.online^ +||yfwfmvofiyemc.space^ +||yfwithinriceukwa.org^ +||yfwwfbxkteuwp.site^ +||yfxkedinghbze.space^ +||yfypfpfmcfvmi.top^ +||ygacesefzgcvt.site^ +||ygaeklqwfmtsl.website^ +||ygbmypthnarjt.online^ +||ygcbqnceieyqy.website^ +||ygdvundpxjbbn.online^ +||ygersioepxuxo.online^ +||ygimeqcpvbtci.rocks^ +||ygimtxlxvzozz.space^ +||ygkbhcnptdbgeru.com^ +||ygkswbscgvukj.space^ +||ygncvlnvzvsco.website^ +||ygolbhqmlvhkz.online^ +||ygoqsybudqczf.website^ +||ygqakovleohew.website^ +||ygqikkpytkhlt.space^ +||ygtonnwghswtx.space^ +||ygulyvzqxshmn.website^ +||ygxmyhimubyyl.website^ +||yhbatwdehlcrz.website^ +||yhbcii.com^ +||yhcyyokvksgne.website^ +||yhddxxitbqxci.online^ +||yhegvnmjdlvrn.space^ +||yhettexs.net^ +||yhiotiihvrrlg.space^ +||yhirnltair.net^ +||yhlpwerxrstov.online^ +||yhlsugkxfnjqq.online^ +||yhmqcuzbgzuix.space^ +||yhmugtdyhziys.space^ +||yhnledkewy.net^ +||yhnxwhgkqogsi.online^ +||yhqebnyrxckhp.online^ +||yhumgukqhfplw.site^ +||yhwsdbldbjogy.com^ +||yhyuxrfbsweho.site^ +||yhzofhfjcynkg.site^ +||yibivacaji.com^ +||yibxebytevyif.website^ +||yibxfyylqxswj.site^ +||yicyjxpdvltfe.store^ +||yidmcfdowkhec.space^ +||yiekicelpzjvd.online^ +||yieldads.com^ +||yieldbuild.com^ +||yieldfrompacket.net^ +||yieldlab.net^ +||yieldlove-ad-serving.net^ +||yieldmanager.net^ +||yieldoptimizer.com^ +||yieldscale.com^ +||yieldselect.com^ +||yieldsrearerstacana.qpon^ +||yieldtraffic.com^ +||yieldtrk.com^ +||yigrwlisuduca.website^ +||yiizjiqqknoyp.site^ +||yijorkvmvbpkq.online^ +||yiloaguwoauyd.site^ +||yim3eyv5.top^ +||yinteukrestinafu.com^ +||yiomeycjvtfhn.online^ +||yipesalgarde.shop^ +||yipnhryqyfelw.space^ +||yiqlnkvhjkyax.space^ +||yitl5mq8rqq23r12fpj4wo.cfd^ +||yiuonzcmzxodc.site^ +||yiuywkhqiyemsb.net^ +||yivlpyqxhlovp.website^ +||yivtsnnmutzkb.site^ +||yiwqcxwajqouq.website^ +||yiyfzwzlpxbym.site^ +||yizghfwqrbhgy.space^ +||yizjfsgpdtkpq.space^ +||yizp4vm81mt4if2.cfd^ +||yjcckvcaln.net^ +||yjdzqszsqttiy.store^ +||yjfhpbpnofkne.website^ +||yjflqogyltlsc.website^ +||yjgkufrdloaih.space^ +||yjhcwchynwgko.website^ +||yjiakbkecywgij.com^ +||yjiqwytzluwhs.site^ +||yjjfvcbzbrppe.store^ +||yjmnlblrazyhi.online^ +||yjonbxthuxllt.website^ +||yjotqzesimahl.online^ +||yjpehuogudsoy.site^ +||yjpqcnhnpaghu.site^ +||yjpwfudvhsnk.com^ +||yjrhhbqxj65yy1r.rest^ +||yjrohhkqfddlx.store^ +||yjsfcjneajgdv.com^ +||yjsnhansijjpy.online^ +||yjtojoboqokts.site^ +||yjvecnmwjvfoe.site^ +||yjvyixarcwhfy.site^ +||yjwajohilqxia.online^ +||yjwtyoiwwjamv.site^ +||yjxgtxygb.com^ +||yjyjyzprctiln.site^ +||yjzgncwwpcjve.online^ +||yjzuchutwulus.online^ +||ykaryzbamfvme.site^ +||ykcnjritoluxy.store^ +||ykdqqskuziadx.site^ +||ykejihmzdvsex.store^ +||ykhikqgrdmfll.website^ +||ykialgtdbpp.com^ +||ykinroxfqdpgv.com^ +||ykixhtyppkoko.space^ +||ykiyhzbgnqkys.online^ +||yknhfifccqozk.space^ +||ykozvjybzuctr.website^ +||ykq9vm6e4u43lnj.cfd^ +||ykrabkjoqurvl.online^ +||ykrsorluybndt.website^ +||yksalenlqmlto.website^ +||ykubfwztpzpvg.website^ +||ykveifvdzadrl.online^ +||ykvlhxlrdqzjw.website^ +||ykvxihvpffaoo.site^ +||ykvzcy8zx73vqm.rest^ +||ykwluibrttvrk.site^ +||ykyceauapfxbd.store^ +||ykyilollgkexy.website^ +||ykywmnqnokgck.site^ +||ykzzjyyshqniz.space^ +||yl2zmpr5xermgw4itm4q9qx8v.cfd^ +||ylbcwkazxnmjp.online^ +||ylblrqhpurxxo.website^ +||ylcajkhefghaf.online^ +||yldbt.com^ +||yldmgrimg.net^ +||yldxtcgvchrck.site^ +||ylgdgagginpkp.website^ +||yliawdutzwwsd.space^ +||yliftvlfiyfiq.online^ +||ylih6ftygq7.com^ +||ylinlhlzcumqe.online^ +||yljhcklmakgbn.website^ +||ylkizzaooacvi.website^ +||ylkujegjynqvn.online^ +||yllaris.com^ +||ylligknjyhnpr.space^ +||ylnrfnryvkjmh.website^ +||ylodbhduliqpc.online^ +||ylogepubxynzu.space^ +||yluezdmctyiuj.site^ +||yluxevvjtbbzj.website^ +||ylx-1.com^ +||ylx-2.com^ +||ylx-3.com^ +||ylx-4.com^ +||ylxbgrcilygic.space^ +||ylxbpzqfqqzuj.store^ +||ylxgpjbrtgbyv.site^ +||ylyaphbvbsvts.space^ +||ylyfdkibvejma.store^ +||ylyjyzoxrhybw.online^ +||ylzevsnrrwpmm.online^ +||ylzvrhrkritim.online^ +||ymandardaircl.com^ +||ymaxvdenuo.com^ +||ymazkrkieaujq.online^ +||ymbiwljv.com^ +||ymcflloytltvc.online^ +||ymdqjgiecsdds.website^ +||ymehnthakutyfor.com^ +||ymesagmvlgiuo.website^ +||ymghkfnajwmpk.space^ +||ymhiqcxygwtdh.site^ +||ymixhrbjlqyxt.space^ +||ymjwxocpguvgo.space^ +||ymlmofezmedic.space^ +||ymmobi.com^ +||ymmydacmjzcng.online^ +||ymmztxjktdirn.site^ +||ymnfrnlexfcjj.site^ +||ymokzqilqggeh.space^ +||ymovooiljamnc.space^ +||ymptpxvkvoojw.website^ +||ymqhrliivzqq24if4r.cfd^ +||ymrghezhbhfie.website^ +||ymtcthpn.com^ +||ymufgwkbhzygn.online^ +||ymugyzcfjvyrv.website^ +||ymumjbgixpvws.site^ +||ymvmsuqjukrrv.online^ +||ymvzpfzvtwohw.space^ +||ymyjubmoxmdgx.website^ +||ymzukfvbwuofd.site^ +||ynafusihflnzm.online^ +||ynbgjroxqcyrr.site^ +||ynbsakxipni.net^ +||yncddpjquwij.net^ +||yncsudpwwfklq.online^ +||ynemqgebtqzkc.site^ +||ynfanslkhrdtn.space^ +||yngb2tz53bjw4icxol7h4ht4.cfd^ +||yngdcakszybzo.website^ +||ynhafvxotzgyw.online^ +||ynjryqkgtlixu.space^ +||ynlodkuuacugx.site^ +||ynlucjumrddkg.website^ +||ynossspikirow.online^ +||ynppqrvsmwfpz.space^ +||ynrzdybvkzhme.website^ +||yntherplunge.com^ +||yntkpkwykfooj.site^ +||yntvrgqkwlwag.site^ +||ynty8pliy5lg75kx.cfd^ +||ynuvfmgqymxbmd.com^ +||ynvtepiimtshs.store^ +||ynwsxvtfm.com^ +||ynxarohfavycj.site^ +||ynzziedpiyeyy.space^ +||yoads.net^ +||yobbosuneasysleety.qpon^ +||yobrfvmtaqrxe.website^ +||yobxluanlfwvu.space^ +||yobyshbpomomy.space^ +||yoc-adserver.com^ +||yocbiylltzzaj.website^ +||yodhseve.cfd^ +||yodjmbkeiafuf.website^ +||yodleblickie.cfd^ +||yodlehullockheights.cfd^ +||yofbioavbc.com^ +||yogadineribbon.com^ +||yogapersuasive.com^ +||yogbucxeeigvs.space^ +||yoghburglesmuskier.cyou^ +||yogictullianmesodic.cfd^ +||yogismsemilor.qpon^ +||yogjylemldvjb.online^ +||yogsreddlydzk.site^ +||yoh224of8u14wxw1o4cevi7uf7tch3kn8qu.cfd^ +||yohle.com^ +||yohxkdhlsmvue.website^ +||yoimeuyjstcyw.space^ +||yojaalyurovox.space^ +||yojyfahrhuonw.online^ +||yokeeroud.com^ +||yokematchesdashboard.com^ +||yokvqzoeh.com^ +||yoldenarridge.qpon^ +||yolvyzasxyojr.space^ +||yomeno.xyz^ +||yominhymned.qpon^ +||yonazurilla.com^ +||yonderformerly.com^ +||yonelectrikeer.com^ +||yonhelioliskor.com^ +||yonicjumfru.com^ +||yoomanies.com^ +||yoresoryxesswang.qpon^ +||yorkvillemarketing.net^ +||yorubadisturb.cfd^ +||yorztipdkeksq.site^ +||yoshatia.com^ +||yosoofpjzhigr.space^ +||youdenphallus.qpon^ +||youexpectation.org^ +||yougetwhatyoupayfor.net^ +||yougottet.com^ +||youlamedia.com^ +||youlouk.com^ +||young-expert.pro^ +||youngfun.pro^ +||youngrecover.pro^ +||youngsoutloveamuguis.cyou^ +||youngstermansionphrase.com^ +||youngstreet.pro^ +||your-local-dream.com^ +||your-notice.com^ +||youraccordanceparquet.com^ +||youradexchange.com^ +||yourcdnjs.com^ +||yourchain.info^ +||yourjsdelivery.com^ +||yourluckydates.com^ +||yourprotection-suggestion.com^ +||yourquickads.com^ +||yoursecurity-suggestion.com^ +||yourstow.com^ +||yourvallentine.com^ +||yourwebbars.com^ +||youservit.com^ +||youstarsbuilding.com^ +||youthfulpoem.pro^ +||youthlyfowl.cyou^ +||youthybooting.cyou^ +||youwardplurals.cyou^ +||youzefabled.cyou^ +||yovck9n6tt7jb8tn3pt35te6.cfd^ +||yovedmwkxiufj.space^ +||yowclings.cyou^ +||yowiespopian.com^ +||yowingeasy.qpon^ +||yowlyfgtthpus.online^ +||yowmelhhkeovd.store^ +||yowrekvnrlcdz.site^ +||yoxgbiywfdlsd.online^ +||yoxggjogbagyt.online^ +||yoxiiflnc.com^ +||yoyadsdom.com^ +||yoyjdfpylpyfl.space^ +||yozturzruysxj.site^ +||yozxgwnjsbspo.website^ +||ypcjhbwvrwpoo.com^ +||ypddxuwxyifaa.site^ +||ypgfrdasphgre.online^ +||yphmaqcyhpfyz.store^ +||ypiohesltiqrj.space^ +||ypklxyjrnovcv.website^ +||ypmaztesjxhxn.site^ +||ypmrjyxltcrra.space^ +||ypocjgogabqjj.website^ +||ypocrasmelling.qpon^ +||ypoxnujwpkgyk.online^ +||ypphgndtjnpyf.online^ +||yppplierehd.com^ +||ypsozc.com^ +||ypwcttlciuuzu.online^ +||ypwlb6yfi3ikkgcmm.cfd^ +||ypxdakreabzhk.website^ +||yqantasacylcf.site^ +||yqaubeexty.com^ +||yqbkaudmv.com^ +||yqeaelhqycxcp.website^ +||yqeshhkcliqgh.website^ +||yqgbrupozdfrn.site^ +||yqgwaodkf.com^ +||yqgyfmjmtnace.online^ +||yqi71w58zyi9hwk3yb6k5.cfd^ +||yqixrqciqgpyg.website^ +||yqjsyabpzegzd.space^ +||yqkyaxdt.net^ +||yqmczwseuyjck.site^ +||yqmxfz.com^ +||yqmyzkialhdoi.vip^ +||yqnlbkzpiazzs.space^ +||yqnqnvpunztoe.space^ +||yqnvdpdkshsoc.site^ +||yqocbixitiqnc.space^ +||yqqgdgdphyqqn.online^ +||yqqtpkrelitip.space^ +||yqrpbzgfbkwom.store^ +||yqtgyjebqcoiv.space^ +||yqtqkfzugqtet.online^ +||yqtwaijdussajr.com^ +||yquoulvobxlxv.online^ +||yqvfdaeufolcqmr.com^ +||yqvnmluzxjqmp.site^ +||yqwguuahjvtjc.space^ +||yqwmvnvbhotkw.site^ +||yqxyktrd.xyz^ +||yqzpmsjhdccic.online^ +||yraexzjnxasnz.site^ +||yrdsdifwwlicc.site^ +||yrflgsqpywsmh.website^ +||yrfnjvrlyt.com^ +||yrixtfepqyfqx.site^ +||yrkpvtbpyrcxf.global^ +||yronesefurther.org^ +||yrqwdbahejizo.website^ +||yrsgvtfoigiii.online^ +||yrtabkuyqxece.website^ +||yrtwyzzmrcmzm.online^ +||yruqwfriqcots.website^ +||yrvamtdweysom.site^ +||yrviuivtxhqay.store^ +||yrzkvwrrpampg.online^ +||ys73fwrg.xyz^ +||yscompartonged.cfd^ +||yscuspceqmprq.site^ +||ysdtufmmswzwh.online^ +||ysesials.net^ +||ysgvhmiwrvsvt.website^ +||ysjrqgexbvdkz.space^ +||yskfsvgksetur.online^ +||yslaehntaiibf.online^ +||yslsymovnkkjl.site^ +||ysmcykeuodcw.com^ +||ysnomtqlnmfyr.website^ +||ysoarfptqslwc.website^ +||ystationalhed.com^ +||yswiafieiwaap.website^ +||yswpcoftefaes.site^ +||yswrwlzzbhqjs.site^ +||ysxbgquecngah.site^ +||ysxyrcojiqvwj.store^ +||ysyskedunnkuo.online^ +||yt7ztgi0.xyz^ +||ytccvtdtsfocf.online^ +||ytdhpuhlbqyor.website^ +||yte287lwbwp18priio.cfd^ +||yterxv.com^ +||ytgfwl2oh361p55rqlbbr.cfd^ +||ytibejpiwuucg.online^ +||ytihp.com^ +||ytinxswlejphn.space^ +||ytiwffwzbqxya.site^ +||ytjvnutks.pro^ +||ytjxhgjeudkrx.space^ +||ytluqctugedmm.site^ +||ytmwqfftkvood.store^ +||ytoeesaeuulcy.website^ +||ytoqesmpkvxkq.click^ +||ytqlqvguttjuf.store^ +||ytsa.net^ +||ytseotpnuzrdc.site^ +||ytsuptbpkgdq.net^ +||ytvpxycvnjtow.site^ +||ytwhnokypjqsp.online^ +||ytwshjvqlhlyf.space^ +||ytydijifrvcyj.club^ +||ytyeogriluczo.site^ +||ytymgickisewv.site^ +||ytzihf.com^ +||ytzisjouiwwsg.site^ +||yu0123456.com^ +||yuapindogtie.shop^ +||yuastejdigmex.site^ +||yubziosgvkweu.online^ +||yuckelobongo.com^ +||yucpihodztolh.space^ +||yucvgdirvufyw.space^ +||yudrrrrerqovu.site^ +||yueifltdoegld.space^ +||yugkagyfbrdkl.online^ +||yuhuads.com^ +||yuinrlqwhmubn.site^ +||yuintbradshed.com^ +||yukatareducerfeatish.cyou^ +||yuksensoberjousts.cyou^ +||yumatitulus.cyou^ +||yumenetworks.com^ +||yummy-month.com^ +||yummyadvertiseexploded.com^ +||yummymembership.com^ +||yunshipei.com^ +||yuokwstkobvst.space^ +||yupcaziotekll.online^ +||yupkenaklidnw.site^ +||yuppads.com^ +||yuppyads.com^ +||yuqjghmoacqsch.com^ +||yurekbkmhoadl.net^ +||yurzldtomaeic.site^ +||yusgoonbncwiu.site^ +||yut4is9b.xyz^ +||yutwyfchk.com^ +||yuvgqzqyryszd.website^ +||yuwbmzjqimdmn.space^ +||yuwseujcjavak.space^ +||yuwtlkeagkqi.com^ +||yuxmumeylmm.com^ +||yuyykdjtkdpat.store^ +||yuzlikcloset.qpon^ +||yvcchjdiqzpog.rocks^ +||yvercbjclvafn.site^ +||yvipfjvniaonh.space^ +||yvkjzpfqgbgxl.space^ +||yvlbuyorhdlt.com^ +||yvmads.com^ +||yvnqhbnvxx.com^ +||yvoirwayscsxt.online^ +||yvoria.com^ +||yvpswmiipjhni.life^ +||yvrszirkgpbns.site^ +||yvshjwqvannfc.space^ +||yvywmoezamcsk.space^ +||yvzgazds6d.com^ +||yvzpacgrjzrra.site^ +||yvzrzqpgzralh.online^ +||ywalclekbfxew.website^ +||ywbflroaxaeiu.website^ +||ywcorovtblhap.online^ +||ywcpuyoqiwpsq.website^ +||yweakelandord.com^ +||yweakelandorde.org^ +||ywfwgkclolrob.space^ +||ywhrqheqsdgry.website^ +||ywiicadcuvilo.online^ +||ywijwpoaqfunt.space^ +||ywjrbvjriuumc.site^ +||ywjvjschozjzq.online^ +||ywkjptehnjlwt.space^ +||ywnnfctifhikobx.com^ +||ywrenjevvou.com^ +||ywroovnsgyftl.site^ +||ywsxuzmhbfdip.site^ +||ywtennjipgrwd.website^ +||ywugyssrmkvat.website^ +||ywuzuazsjnzto.online^ +||ywzehjepmwcbe.website^ +||ywzyhljazdsrx.space^ +||yx-ads6.com^ +||yxanmbanrwlc.com^ +||yxbzyppfgrhze.site^ +||yxcxheuw.net^ +||yxeawgomuxnix.space^ +||yxft6ibbhc6oiyrg5f5y7p2o.cfd^ +||yxibcujksiubp.online^ +||yxjdwjbajkukl.online^ +||yxmbjzcnodpmj.website^ +||yxmtgttitplap.store^ +||yxnitldzfbuun.space^ +||yxnkrmzdmjwwt.site^ +||yxoygmeyhpxnf.site^ +||yxrztudaxbejo.website^ +||yxsrhegapxajhj.com^ +||yxtxknslyovlgp.com^ +||yxunqfhyuwrxt.online^ +||yxwwyxmpowqnm.space^ +||yxykanwovbzfr.site^ +||yxyrblnpmtahz.world^ +||yxzsrazzpbqek.website^ +||yy9s51b2u05z.com^ +||yycgyufotxqxy.space^ +||yyecdiehcvadf.site^ +||yyfhbgupnibgo.space^ +||yyfiuusddmtdz.online^ +||yyghnnvhvvbaw.site^ +||yyhjwjkzgfucr.website^ +||yyhmmwbgdpvlogu.com^ +||yyidbueudlkcw.love^ +||yyjvimo.com^ +||yymybiufjvunbmr.com^ +||yyottieqtt.com^ +||yypsmobejtdoh.space^ +||yyqrofyyvjfyo.space^ +||yyroyyipsitcf.site^ +||yytxgghgvtwfp.icu^ +||yyvxcmhpkmaxd.website^ +||yywflujrcwrcrio.net^ +||yyxpearkrincp.site^ +||yyxwdvaqngiqn.online^ +||yz6mh5m9j1fbkz3q8yg9p7j1xv.cfd^ +||yzccdzhpooakp.store^ +||yzdkhftbkynua.site^ +||yzgusvurnixsg.space^ +||yzicbg7i4ijn3pxqr12.cfd^ +||yzjcyznhjsizp.website^ +||yzjncchwnfdni.online^ +||yznvhiongucvp.site^ +||yzozkqzhsbeur.online^ +||yzptivayenbbc.space^ +||yzrslorccsysg.space^ +||yzsinffpguits.space^ +||yzswlkwqkkndh.space^ +||yzwkxjepxczno.site^ +||yzwtg89j.xyz^ +||yzwtz.com^ +||yzyjcjmsylgbv.site^ +||yzyjxqzvupndq.site^ +||yzyzkatyeco.com^ +||z2ny961rqc3qiig.cfd^ +||z32zl64equighu.cfd^ +||z3lkm5tpziqn541.cfd^ +||z4q4lg98hgwcg6g87nncp38g6ff891ee.cfd^ +||z5cgvvwvwryxyq5j29i4.cfd^ +||z5x2v3qi4ex5omyqexwwk93.cfd^ +||z6ob4e1cqx4iw27jqgb37ghkuy1.cfd^ +||z7k9ll5nhoez8rw8kx4ulvtcwmcbmtxbv414.cfd^ +||zaatpjzahehda.space^ +||zabanit.xyz^ +||zablgoqpquvty.site^ +||zaburrogocart.cfd^ +||zacleporis.com^ +||zacoortautsougi.net^ +||zacrdfmrrfvsa.space^ +||zacxppiaefnun.site^ +||zacygnygluawn.site^ +||zacyncoewayan.site^ +||zaevoqatiyylf.online^ +||zafsayaexptas.online^ +||zagkozkvrqojx.online^ +||zagvee.com^ +||zahvrkdkeulsy.site^ +||zaigdumtnuvip.site^ +||zaijoorainauza.net^ +||zaimads.com^ +||zainmidget.com^ +||zaiphithez.net^ +||zaipteekoug.net^ +||zairaikauhaur.net^ +||zaishjgajawnp.website^ +||zaiteegraity.net^ +||zaitounofeeta.net^ +||zaivooiufxook.online^ +||zaiwaithauhaupi.net^ +||zakjvvjpjzesp.store^ +||zaktucdkuvw.com^ +||zakvkuotv.in^ +||zalrurtauba.net^ +||zamioculcas2.org^ +||zamocwtuh.com^ +||zangocash.com^ +||zantefengite.cfd^ +||zanyestablishment.pro^ +||zanypotential.com^ +||zanzepicenebloated.cfd^ +||zaoymyowyehjk.online^ +||zapfgyqcktakq.site^ +||zapmlugpzaufk.website^ +||zapogentasofh.site^ +||zapotezincky.com^ +||zaqxmbjhdyvmx.website^ +||zaramooilskin.qpon^ +||zarfareoles.cfd^ +||zarfsdevotee.cyou^ +||zarnechobbil.cfd^ +||zarpop.com^ +||zatnoh.com^ +||zaunenurjcmin.site^ +||zauphozaucou.net^ +||zavnnfijuylnu.site^ +||zayxvvrljcayp.site^ +||zazlluqbstvzk.website^ +||zbdlbpbulroks.space^ +||zbecvmkqyuzsz.space^ +||zbevofrechbto.space^ +||zbgoxfihhvxqd.site^ +||zbkrmwrzftiav.site^ +||zbo1uekugxxhentqm.cfd^ +||zborqhpkcjsao.site^ +||zbqcovoprjruz.website^ +||zbqzsgtqyzmid.website^ +||zbriwdxuvdzqu.website^ +||zbuztpvgfghmu.space^ +||zbvbmifryccxd.website^ +||zbweattfkwerz.space^ +||zbzfzftwtifyv.online^ +||zcacbymusrtrr.space^ +||zcapieuheltue.store^ +||zcbetcczfvylq.site^ +||zcfuoqjyzgksa.online^ +||zcfvkqmcytdvy.space^ +||zchhsnlmtnogh.space^ +||zckfjcotzjdty.space^ +||zcmywlwnaequm.online^ +||zcode17.com^ +||zcoptry.com^ +||zcorolydmbaha.space^ +||zcpnzuwahtpxi.space^ +||zcpplcvjzmlqj.site^ +||zcswet.com^ +||zctbfsvisdlar.online^ +||zctyxvnokstqs.website^ +||zcumbriaxpjbl.site^ +||zcuwwsophlhpm.online^ +||zcvbjmhrrtwelo.com^ +||zcvedfvzumhak.online^ +||zcvsxqcyjtcse.online^ +||zcxbvkltuahhj.site^ +||zcxdhoyoncjbv.space^ +||zcxwmnfhcsbzm.website^ +||zcymvyglyjyxu.online^ +||zdaptrksg.com^ +||zdawvocofpfcr.vip^ +||zdbuagetodumy.website^ +||zddfupohzurso.website^ +||zddipepgvdwfp.online^ +||zdfwmkfxwrlht.online^ +||zditzhefjchxk.online^ +||zdiykdcxbwsvn.site^ +||zdkcbujzihbhd.website^ +||zdmxehlpvvtta.site^ +||zdqdtgoydrlzw.site^ +||zdqynwnojttwt.space^ +||zduskykoxzasu.site^ +||zduwgpvfgvhqm.space^ +||zdvtuadwafljw.global^ +||zdybhgdlpashv.website^ +||zdynppqtiqilb.website^ +||zdyppmsczfvyu.website^ +||zdzxbbfuthazp.space^ +||zeads.com^ +||zealedlament.cyou^ +||zealous-direction.pro^ +||zealousclothes.pro^ +||zealousfinance.pro^ +||zealousoutfit.com^ +||zealshaving.com^ +||zeatinsbirths.cfd^ +||zeatinspremoldhuffier.qpon^ +||zebecssughed.cfd^ +||zeblaitjiznqv.space^ +||zebpqonnhezmt.store^ +||zebruledix.cfd^ +||zecfdjbyxewow.online^ +||zecsriilqkdei.site^ +||zedessoulrwfb.website^ +||zedmunkpdtjkf.website^ +||zeebestmarketing.com^ +||zeechoog.net^ +||zeekaihu.net^ +||zeelooshashey.net^ +||zeepartners.com^ +||zeepoostey.net^ +||zeguklgrjilli.space^ +||zejyoelgljenc.site^ +||zekagaibrryns.space^ +||zekneylmdrfud.space^ +||zekperpfsozkw.online^ +||zelvlzqbhpnpo.online^ +||zemisolate.qpon^ +||zendabakas.cyou^ +||zendplace.pro^ +||zenis15.net^ +||zenithoradog.com^ +||zenithurbanflirtatious.com^ +||zenlkqmjfnnwd.website^ +||zenoviagroup.com^ +||zephyronearc.com^ +||zepmqjqyhpjjw.store^ +||zeptouvoceerga.net^ +||zerads.com^ +||zercancionoak.cyou^ +||zercenius.com^ +||zerdidrardoo.net^ +||zeroclampentice.com^ +||zerodrifts.com^ +||zeroessummaryganched.cfd^ +||zeroethsolein.qpon^ +||zeroglamour.com^ +||zesainuxaimoots.net^ +||zesrsywjvphmj.store^ +||zetadeo.com^ +||zetjmzwbpuhbh.site^ +||zeusadx.com^ +||zevairaurs.net^ +||zevmhfimydion.website^ +||zewesamessustee.net^ +||zewkj.com^ +||zewuwkawo.com^ +||zeydoo.com^ +||zeyezjvdaqvug.online^ +||zezxeuydapept.site^ +||zezyjywaaqzke.top^ +||zfamagnky.com^ +||zfaxahmcus.com^ +||zfcbuhkbpmbwy.space^ +||zfctrack.net^ +||zfdjcefpkrbyt.site^ +||zfdwjrxmtatjc.online^ +||zfectyowjgk.com^ +||zfenhpijjexpd.online^ +||zferral.com^ +||zfgvoltwlszda.site^ +||zfgvxstfdxdlj.website^ +||zfurfq.com^ +||zfvrtgmskvtsu.store^ +||zfvsegulxcsgm.online^ +||zfvvgetsulfjm.site^ +||zfxckpiaypnrm.online^ +||zfxclqvuwywnb.online^ +||zfxlcautcoger.store^ +||zfyabxzwy.com^ +||zfzaxpljtwejp.site^ +||zfziwjgxrorda.website^ +||zg46wi93n1v37n6z.cfd^ +||zgannmebawpes.online^ +||zgaxadxsycppa.website^ +||zgcsyhtcwozaw.site^ +||zgdtldkyevtdw.space^ +||zgegvpswvuaec.site^ +||zgfubuaenxdzl.site^ +||zgfyftltnhkgs.website^ +||zggphctvgvisx.site^ +||zghdautxlwvis.store^ +||zgijtonvzgadk.online^ +||zgkowgslzqhir.online^ +||zgkrxxudimfdj.space^ +||zgnuydyvcuqdt.online^ +||zgnymibptufjb.site^ +||zgoyrrcicacij.online^ +||zgqvlcljuuzyx.website^ +||zgryqtatsskdj.website^ +||zgsgfljdjjpyc.store^ +||zgsnanhxekuoh.space^ +||zgsofrbj.com^ +||zgtsgrklbslya.store^ +||zgtuchkwpggji.space^ +||zgufsietwrteo.website^ +||zgvaicjdorgqa.website^ +||zgvyjrzusfonn.site^ +||zgwgoxzayjmqc.store^ +||zgwoziiwdhuhi.online^ +||zgxcwfjpkpipv.online^ +||zgxvkaibszqpz.space^ +||zgxzeicunptms.store^ +||zgyrvygvthohy.site^ +||zgzkehraslqgf.online^ +||zhaner.xyz^ +||zhbvngnzljaqb.website^ +||zhcyrfxkupdvs.store^ +||zhffvzqowuoos.space^ +||zhgcahjbqiiuu.website^ +||zhhmkiottyxgn.space^ +||zhiqzwrcnh3vu1on2blo.cfd^ +||zhiyhsya.com^ +||zhmsgznkpenng.space^ +||zhntvykltwwcp.website^ +||zhomsqvldksoy.site^ +||zhownsplpphyu.online^ +||zhoyyibwywgev.one^ +||zhqhczzmtgaur.website^ +||zhqrceorwfmqd.site^ +||zhrqbrvoyfcuw.store^ +||zhssbkawltlyu.website^ +||zhtiqbietjwhb.fun^ +||zhuawghhnfipe.com^ +||zhybxqgrzvmby.website^ +||zhylvhqdlkacm.space^ +||zhzijmkcplrch.store^ +||zi8ivy4b0c7l.com^ +||ziametbaff.com^ +||ziatctwlmsjtk.site^ +||zibethsdruzefilar.cfd^ +||ziblo.cloud^ +||ziccxwyfkathr.website^ +||zicwghowpuhbj.website^ +||zidaunsoud.net^ +||ziddichqrttva.online^ +||zidwjopspizot.site^ +||ziedcwubwxfwr.website^ +||ziekvasufucub.website^ +||zifrppvunuhag.site^ +||zigequiped.cyou^ +||zigzag-hurt.com^ +||zigzagplan.pro^ +||ziidgugyfrbvf.website^ +||zijqohihvozks.space^ +||zikpwr.com^ +||zikqbfbgczdnl.online^ +||zilchdisrupt.cfd^ +||zilchwhite.qpon^ +||zilemtusighi.net^ +||zilliondisfigureboldly.com^ +||zilliondisturbance.com^ +||ziloezqpjglqu.website^ +||ziltgtqmrrhwi.space^ +||zimg.jp^ +||zimmilimpid.cyou^ +||zimmisrejoice.cyou^ +||zimmistimbale.cyou^ +||zimpolo.com^ +||zincoamrellewick.cyou^ +||zincyfowkdiapir.qpon^ +||zinekrtshkgkl.website^ +||zinovu.com^ +||zinzlixtaacfg.website^ +||zipawzfif.in^ +||zipcrypticbroadsheet.com^ +||zipdealtdomestic.com^ +||ziphiusprivacymosts.cfd^ +||zipperstorta.cfd^ +||ziraiinnageyees.cyou^ +||zirdough.net^ +||zireemilsoude.net^ +||zirkitecantelrussine.qpon^ +||zitalqgskdsmx.online^ +||zitdither.com^ +||zitzitteljackie.cfd^ +||ziuofftam.com^ +||ziupljvisonem.space^ +||ziv96gcob9c8qxjh.cfd^ +||zivn78n94fer88h5.cfd^ +||zivtux.com^ +||zivufupwnqrwb.online^ +||zivxgvrhzvfwd.online^ +||ziwpynasn.com^ +||zixtcgkovehow.store^ +||zixzjioewfora.site^ +||ziyckicwxikut.website^ +||zizaniaargala.cyou^ +||zj2jwmrkvu5ow8q.cfd^ +||zjbjpgmkjgxtb.website^ +||zjdac.com^ +||zjdpabwmeb.com^ +||zjeanifhgszfb.site^ +||zjeulzcbtbjnb.online^ +||zjfgaerzllyuv.site^ +||zjfowaspawuza.store^ +||zjfsjzzquhdcw.online^ +||zjkejbcqhoges.site^ +||zjlasclkahbtq.space^ +||zjmwizpyxsreb.space^ +||zjodrkdsclnwe.website^ +||zjosweqiruoaz.website^ +||zjpmswrjggpxe.site^ +||zjqbxcdwwtvtt.site^ +||zjspxohftdmow.site^ +||zjvdyclulykon.online^ +||zjvjeghnomike.website^ +||zjvrbcwdfdrky.store^ +||zjwjcjiozdear.online^ +||zjxdontsmepul.website^ +||zjxmrrgeqndlx.space^ +||zjzmqczmvdfbz.site^ +||zjzpezeicfnbn.site^ +||zk1ofmptcj6gbem6.cfd^ +||zk1w.com^ +||zk8y4frfvwtbkmjmbpnbb4cvrjr.cfd^ +||zkceiehwfifvl.site^ +||zkchvbcxzwpmx.online^ +||zkckuzdesdhoj.online^ +||zkcvb.com^ +||zkcxoywtprkuz.website^ +||zkczzltlhp6y.com^ +||zkdtpucowdlat.website^ +||zkfjdxlwwcilg.website^ +||zkggtossfobzd.space^ +||zkieqfgsiigts.store^ +||zklnseiv.com^ +||zklnwxfrhhxzg.space^ +||zkudhohty.in^ +||zkvsavwzcbfaj.online^ +||zkyboxukmxmwc.website^ +||zkzenlcagknfi.world^ +||zlacraft.com^ +||zladljbgfgdbk.space^ +||zlaosdshglcjt.space^ +||zlavxbjuyekwo.site^ +||zlbzfuzrszxfb.space^ +||zlciuiresrami.website^ +||zlckgwtrtfafx.space^ +||zlcnmddmfuiunc.com^ +||zldzndxprfyls.online^ +||zlerebiomenrq.online^ +||zlgfuyslcpekc.site^ +||zlink2.com^ +||zlink6.com^ +||zlinkc.com^ +||zlinkd.com^ +||zlinkm.com^ +||zlinkp.com^ +||zliwpmfjxmivj.space^ +||zljkawgfcvnmy.online^ +||zljlnrusxvwty.online^ +||zlkdhjiepxqnt.online^ +||zlkuarhdhcuej.site^ +||zlmzvqoishrcb.store^ +||zlnzioxqvzfxp.store^ +||zlotecuvage.shop^ +||zlqanhqrtjair.website^ +||zlrwxkrwslawu.online^ +||zlwfvuhznixcn.store^ +||zlwyiedcgsnco.store^ +||zlx.com.br^ +||zlxwsxcnkyeij.site^ +||zlxygrhsimexp.online^ +||zlzhwpoqancln.online^ +||zlzwhrhkavos.xyz^ +||zm232.com^ +||zmaehtvocezof.space^ +||zmahxlcxkasov.website^ +||zmamhuakbbu.com^ +||zmbulblwjgxfe.space^ +||zmdesf.cn^ +||zmdwrtzsnzpzq.site^ +||zmetgzbibxtpa.site^ +||zmiarjiioqzvm.site^ +||zmixdvlsfruqc.website^ +||zmjtjuacdfvmw.tech^ +||zmkidtyoyafzy.online^ +||zmkpximmigltq.website^ +||zmonei.com^ +||zmyodzglqdaox.site^ +||zmyvawmwezr.com^ +||znaxehfiworet.website^ +||znbgaspigycyc.space^ +||znbkeybfqmeub.space^ +||znfjejuvhkuuz.site^ +||znigpcayzsxyp.site^ +||znizlnbamkeod.site^ +||znjdkvlhfvuuc.one^ +||znjvedmtgybbk.store^ +||znjvqaexiaiag.space^ +||znlmhgpgcjxmr.site^ +||znntvpdicngpo.website^ +||znorrymikvycz.site^ +||znovjidqcxoza.website^ +||znqvozidirqnh.site^ +||znrakwmcjsvtm.online^ +||zntcsqipdchoi.space^ +||zntyosjbsivry.site^ +||znxifrpxsmuak.space^ +||znycxdjoyexaj.website^ +||znymzgnpmebhu.online^ +||znypnplxeanxw.online^ +||znzkcgjognscp.space^ +||zoachoar.net^ +||zoaisgughwyvm.space^ +||zoanoowhooky.net^ +||zoasmnxzyhzis.space^ +||zoawufoy.net^ +||zoaxnpworejgn.site^ +||zobopilgerdenies.cyou^ +||zocwfosbxwqru.website^ +||zodarpnpsrnds.website^ +||zodescdmuxxqq.site^ +||zodiacneglect.com^ +||zoeaegyral.com^ +||zoebcykgrrfar.space^ +||zofexiivopqiv.online^ +||zog.link^ +||zogaptujudlkq.site^ +||zogczipe5hp25gempz.rest^ +||zogfwunf.com^ +||zoglyqfoii.com^ +||zogmfiyljbdvf.space^ +||zogrepsili.com^ +||zohlikopegrdz.space^ +||zohoptortibsi.net^ +||zoifwejzptmea.store^ +||zoiixfvrxcxlp.online^ +||zoileanandean.com^ +||zoilisttapeningram.cfd^ +||zoine.net^ +||zoiyjzhhjty.com^ +||zojflpwwdvojn.website^ +||zokapwppblsly.website^ +||zokfgnvzcdimh.website^ +||zokormaut.qpon^ +||zomdufobhmfmm.space^ +||zomhfzodazcnz.space^ +||zonalcalculate.net^ +||zondarunny.qpon^ +||zonealta.com^ +||zonedummy.com^ +||zonedustertractor.com^ +||zonfbjtqyykqo.website^ +||zoniteluggies.shop^ +||zonjdpdkswtna.online^ +||zontqiwjmdzbv.space^ +||zonulassacaespaer.cfd^ +||zonupiza.com^ +||zoologicalmafia.com^ +||zoologicalmanufacture.com^ +||zoologyfibre.com^ +||zoomcflhjpiou.site^ +||zoowhausairoun.net^ +||zoowunagraglu.net^ +||zooyviwyuaocd.website^ +||zoqalwuvnsxut.site^ +||zorango.com^ +||zordoabsolsooph.net^ +||zorquaaeybckx.space^ +||zorseeckoaroa.net^ +||zosteralatency.com^ +||zothbyjsvfcfw.space^ +||zotnkataxyscx.online^ +||zotqhsyqbetkg.online^ +||zottjlemsnnrj.website^ +||zoudsiomphtqa.space^ +||zouloafi.net^ +||zouyfpkgawryi.online^ +||zovidree.com^ +||zoxyxrmbk.com^ +||zozaqeylctipa.space^ +||zozvjoawtvxpi.online^ +||zp0o8pii.xyz^ +||zpassmqoksnfw.website^ +||zpatfnmuzqfez.website^ +||zpcnmqvutynyr.site^ +||zpfmqfxgrtttb.icu^ +||zpgnipitynywq.space^ +||zpgtcgqdycckj.online^ +||zpguxkvsnjobx.website^ +||zpifugiaprqwn.store^ +||zplxavnqigfrp.site^ +||zpnfabznyzmuc.site^ +||zpqfqxoczrwfq.space^ +||zpuavdcswqnml.online^ +||zpv7v3olgl7el9b.rest^ +||zpveapgfsqcty.online^ +||zpvihbppfwgzo.website^ +||zpwllfsjphpig.online^ +||zpyxbftwhanbj.space^ +||zpzcahumfmsyi.website^ +||zq4pngk51onmbp89i1f9.cfd^ +||zqbxmcyztwdju.online^ +||zqcizuncfuob.com^ +||zqdetabyxxnwp.website^ +||zqdjhpuxvtwnh.site^ +||zqethqturvqgc.online^ +||zqfzcqtzrxgar.space^ +||zqgdsntpritjd.space^ +||zqikotkyvpxrk.website^ +||zqmblmvomvzab.top^ +||zqmpenssnrzmc.site^ +||zqrctmpxxagnb.website^ +||zqswaomjynrud.online^ +||zqtifedwdeyqu.online^ +||zqtxtnrlxyliz.site^ +||zqvee2re50mr.com^ +||zqvfnrprrodge.site^ +||zqvhsojbqezvi.space^ +||zqwe.ru^ +||zqxuemmabklqq.online^ +||zqyzgicrcwohx.space^ +||zqzcxoqppynlw.space^ +||zqzetdtrblqlc.website^ +||zqzkwhftsrcol.website^ +||zrhcawvkdttmo.website^ +||zrhonrqnvmt6mbn7.cfd^ +||zrhotsrntvcgp.store^ +||zribfawrbvrfl.website^ +||zrintihah.in^ +||zrjmgniyydzaz.space^ +||zrlqm.com^ +||zrmtrm.com^ +||zrnslcqbtovnv.site^ +||zrouimweexxno.online^ +||zrprgcqjqjtkz.space^ +||zrqdzenetzkmn.space^ +||zrqzesxyykuqq.website^ +||zrtnnwexyqlpx.online^ +||zrtrlgbdhvtwf.space^ +||zrvagoezmeztf.site^ +||zrvheziaakihj.website^ +||zrvjzhcexv.com^ +||zrvwyyqpkeehx.online^ +||zrygvvxyadvro.site^ +||zrzrujresjuqm.space^ +||zrzxqjkroukgh.space^ +||zsaehoccyukuf.website^ +||zsaiqrqhoqbdo.site^ +||zsbkuvtdjhvvj.space^ +||zseqylfnkprnt.website^ +||zsgkxypgptcpk.site^ +||zshjukefzjlcs.website^ +||zshukagtdzstb.online^ +||zsiezzoevasxb.space^ +||zsleznwqqjcjw.site^ +||zslmueggcjatn.website^ +||zsmsuwmifkrqv.online^ +||zsnrhqltxmsdp.site^ +||zsnrkdpoxlfzz.space^ +||zsojxqnwplhim.online^ +||zsozgqchlueqp.world^ +||zsqsrxnbnnsat.online^ +||zsszrgvbeisuv.space^ +||zstcyektvaoug.online^ +||zsuejpybfctjl.website^ +||zsxlvqcwdpmto.online^ +||ztbgtublbhlyc.website^ +||ztbuhwcovpgus.space^ +||ztctourupmhin.today^ +||ztdxxwodwyfaz.site^ +||zteeavqibjsgj.space^ +||ztekyvgdsgzdf.site^ +||ztepgvftyskyq.store^ +||ztg7hqds.xyz^ +||ztgktnbuvsmbl.online^ +||zticbxigsdhau.space^ +||ztkoujoouepkn.site^ +||ztkyevuemenmj.online^ +||ztmxyzxqpihml.site^ +||ztndolvgmozuc.website^ +||ztnmgxgxompdk.website^ +||ztohvl3x61r5nfc36qj5wb.cfd^ +||ztosxitodpymn.website^ +||ztqxksahputnq.website^ +||ztrack.online^ +||ztridklnlfwbo.website^ +||ztrlvzrdlelze.online^ +||ztsjdthngoeln.space^ +||zttsmufvcrvjw.space^ +||ztudfmvgxozex.space^ +||ztwynkeinevag.website^ +||ztzmrimaxpegw.site^ +||zubivu.com^ +||zubniivgigntj.website^ +||zubvdghmyhajk.website^ +||zubxulmxdrtxy.website^ +||zucany.click^ +||zuchhsparxodc.site^ +||zucks.net^ +||zuekohojehjsx.space^ +||zufasbhzijysh.site^ +||zufbfwccixrci.space^ +||zugedrpjyzgim.space^ +||zugo.com^ +||zuhityfzxjhan.website^ +||zuhtsdahrqhhc.website^ +||zuidpnenuegax.site^ +||zukore.com^ +||zukzevqvnxels.space^ +||zulindeskerretdepress.cfd^ +||zuljosrdnilpj.online^ +||zulphaqaq.in^ +||zumidxxxwcjob.site^ +||zumlgprkpoain.site^ +||zummnibfearqs.store^ +||zumrieth.com^ +||zumsivonaiss.net^ +||zun3e3eyw5h4fvj859.cfd^ +||zupcrxfechrmx.store^ +||zuqxuomhfipor.space^ +||zusgorphsbeny.site^ +||zuujydolvhkzi.site^ +||zuvjenxhmiuhj.space^ +||zuwnqfdzojfzk.site^ +||zuxzvxmibplsk.website^ +||zuyru6ovqt9fn46gf1xn4k.cfd^ +||zuzonmzap.com^ +||zvdkxhzpaslxe.online^ +||zvdvxrykeaetq.website^ +||zvekujanpxsfq.website^ +||zvetokr2hr8pcng09.com^ +||zvglmqsgwbfhe.website^ +||zvjbgsqpcnlku.site^ +||zvjinchjnsjje.site^ +||zvjsiihwctudv.online^ +||zvlsctfwctmhe.website^ +||zvmxpklpnnenv.site^ +||zvrokbqvqvvbw.top^ +||zvrrzpfobezka.space^ +||zvryfgjfzwbnd.online^ +||zvthanutunpww.site^ +||zvvajeommbajz.top^ +||zvwhrc.com^ +||zvypqoedujvod.website^ +||zvzmzrawlvryj.top^ +||zvzpzkqquxasw.store^ +||zw4b72rev9452znmtl4p9.cfd^ +||zwaabpjit.in^ +||zwaar.net^ +||zwcuougbmsdbl.online^ +||zwfbkyofoaqlj.site^ +||zwgsousozhihm.space^ +||zwicmxszmrhpt.space^ +||zwiweqftobuvd.space^ +||zwkfzyjtadeuz.space^ +||zwlujcfwmuysf.website^ +||zwmkmbnmsrrks.site^ +||zwmqcj2ilo4mfci8n.cfd^ +||zwnbtqsjcopel.space^ +||zwnoeqzsuz.com^ +||zwqzxh.com^ +||zwtpmjjbuvfyr.website^ +||zwtreqtyusacn.space^ +||zwubipwic.com^ +||zwvbmysbmdkoc.site^ +||zwxlsbjicxmid.online^ +||zwxwpnkdaswfn.site^ +||zxavziahazmyb.online^ +||zxb18e6i494jniug52.cfd^ +||zxbehrtmvceoi.site^ +||zxcabkkdooprj.website^ +||zxcdn.com^ +||zxcjijwocylga.online^ +||zxcwifosxcrlc.site^ +||zxe2e8v2jli8wym2e73nrqi1p.cfd^ +||zxfqtqmtlldld.world^ +||zxgdbhbsiqdib.site^ +||zxgjrlpmaqyek.website^ +||zxgkuhqwwtcvc.website^ +||zxinihfgkdpfb.space^ +||zxjnlsqprjjqo.space^ +||zxjshtdjvtfhb.site^ +||zxmkhbsmmuikc.online^ +||zxn2u72vyrejmmw9tnb7wh.cfd^ +||zxnymrendoxms.space^ +||zxnzstnimupkx.online^ +||zxpvebhtojfvgu.com^ +||zxqvocyhiggng.site^ +||zxrntgssqzdre.space^ +||zxttvkshqbded.space^ +||zxuknfffkemse.space^ +||zxvhxdpyordan.store^ +||zxvxukirgmomz.site^ +||zxzbjqoyojpza.site^ +||zy362mt2o4nzx91o.cfd^ +||zyavhhgzkdjfu.space^ +||zyblzreyykyjw.top^ +||zybrdr.com^ +||zydecoshastile.cfd^ +||zyf03k.xyz^ +||zyfsfoknnrenj.site^ +||zygoojpfbiqdi.online^ +||zygotesoutlerbranch.cfd^ +||zyguhojdymzqx.site^ +||zyhzzhxnlnfdk.site^ +||zyiis.net^ +||zyjcuzdaazwcj.website^ +||zyjlsoofkpxrm.space^ +||zyjylkltgeduq.online^ +||zykbfeckdcooo.online^ +||zymosisticky.cfd^ +||zymoticlithol.qpon^ +||zynazcswjjssp.website^ +||zynnrgeptfjhg.online^ +||zypdunyryonff.online^ +||zypenetwork.com^ +||zypsnobkgkthp.site^ +||zyqgwdrrrrrmm.online^ +||zyvbcstcltidm.online^ +||zyvlvbtnyixyx.online^ +||zyxbltkkgkmon.site^ +||zyzapldgfoosg.site^ +||zzbcje.com^ +||zzdvsgnxamcmq.website^ +||zzfikyawmqtmw.website^ +||zzhlssowvzfds.online^ +||zzivkui2th7li7iw7i8n9m93.rest^ +||zzlctetvwshhm.online^ +||zzmqptxatuosm.space^ +||zzoostbkvfpoy.online^ +||zzpgiredutflq.space^ +||zzsfgdah.com^ +||zzveirrwywhgc.store^ +||zzvuvnvgfamfy.online^ +||zzvvdnorisful.space^ +||zzxvxomlkpvcl.website^ +||zzxzemoirgkui.website^ +||zzyqkeniw.com^ +||zzyxhvqjjtgxj.online^ +||zzzjhkyprpsvl.store^ +||zzzmjfixezere.site^ +! Anti-drainer eth phishing +||cdnweb3.pages.dev^ +||certona.net^ +||jscdnweb.pages.dev^ +||nfts-opensea.web.app^ +||nodeclaim.com^ +||obosnovano.su^ +||olopruy.com^ +||phgotof2.com^ +! $document blocks +||0i0i0i0.com^$document +||1asb.com^$document +||30dcf.com^$document +||367p.com^$document +||3ckz.com^$document +||3vetz.com^$document +||5wzgtq8dpk.com^$document +||65spy7rgcu.com^$document +||6by30.com^$document +||8jfbt5va3r.com^$document +||905trk.com^$document +||a-ads.com^$document +||abadit5rckd.com^$document +||adblock-360.com^$document +||adblockermax.com^$document +||adblockerprofessional.com^$document +||adclickbyte.com^$document +||adfgetlink.net^$document +||adglare.net^$document +||adglidepro.com^$document +||aditms.me^$document +||adkmbc.com^$document +||adlogists.com^$document +||admachina.com^$document +||admeking.com^$document +||admobe.com^$document +||ads-blocker.app^$document +||ads4trk.com^$document +||adsco.re^$document +||adsgateway.net^$document +||adskeeper.co.uk^$document +||adspredictiv.com^$document +||adsquasher.com^$document +||adsquasher.pro^$document +||adtelligent.com^$document +||adtraction.com^$document +||advertisoo.com^$document +||adx1.com^$document +||affcpatrk.com^$document +||affflow.com^$document +||affiliatestonybet.com^$document +||affiliride.com^$document +||affpa.top^$document +||affroller.com^$document +||aftrk3.com^$document +||agat-tech.com^$document +||aifolr.com^$document +||aimging.com^$document +||ak-is2.net^$document +||albonsa.com^$document +||alexatracker.com^$document +||algesismesse.cyou^$document +||allsportsflix.$document +||alpine-vpn.com^$document +||amichi.info^$document +||amusing-injury.com^$document +||animeloundry.com^$document +||antiadblocksystems.com^$document +||appointeeivyspongy.com^$document +||appslime.com^$document +||argrowlitheor.com^$document +||asosub.org^$document +||astjigglypuffchan.com^$document +||atsg.me^$document +||atthhnv.com^$document +||atzonebd.com^$document +||auroraveil.bid^$document +||auto-ads6.site^$document +||avlmy.com^$document +||avogex.com^$document +||awecrptjmp.com^$document +||bayshorline.com^$document +||bbmoe.com^$document +||bboy1.com^$document +||bclogin-check.com^$document +||bemobtrcks.com^$document +||bemobtrk.com^$document +||bestchainconnection.com^$document +||bestcleaner.online^$document +||bestunfollow.com^$document +||bet365.com/*?affiliate=$document +||betmenaff.com^$document +||bettentacruela.com^$document +||betteradsystem.com^$document +||billilia.com^$document +||bincatracs.com^$document +||blcdog.com^$document +||blehcourt.com^$document +||block-ad.com^$document +||blockadsnot.com^$document +||bluodpa-a.online^$document +||blurbreimbursetrombone.com^$document +||bmmads.com^$document +||bngtrak.com^$document +||bobgames-prolister.com^$document +||bonusgew.com^$document +||boredhippie.com^$document +||boskodating.com^$document +||brainberries.co^$document +||brationalfilarded.com^$document +||bucksmein.com^$document +||bunth.net^$document +||byethost41.net^$document +||c3j7rk-rtbix.top^$document +||camads.workers.dev^$document +||camliveshow.xyz^$document +||candellume.shop^$document +||candyai.love^$document +||career-mesh.com^$document +||cashgzb.com^$document +||casinobonusdeals.io^$document +||cauditcommernal.com^$document +||cautommityring.com^$document +||cddtsecure.com^$document +||ceramicturtleremnant.com^$document +||checkcdn.net^$document +||chpadblock.com^$document +||ciencia.ao^$document +||clearwatch.tv^$document +||click-for-preview.com^$document +||clickblitzo.com^$document +||clickmintads.site^$document +||clickpunch.icu^$document +||clixwells.com^$document +||clladss.com^$document +||cloudvideosa.com^$document +||clunen.com^$document +||cm65.com^$document +||cntrealize.com^$document +||coastalbloom.xyz^$document +||colleem.com^$document +||conestreshow.com^$document +||coolserving.com^$document +||coosync.com^$document +||coticoffee.com^$document +||cpacrack.com^$document +||cradaygo.com^$document +||crn77.com^$document +||crockadilla.com^$document +||cryptomcw.com^$document +||ctosrd.com^$document +||cybkit.com^$document +||daleelerah.info^$document +||datatechdrift.com^$document +||date-till-late.us^$document +||date2024.com^$document +||date4sex.pro^$document +||datedeskads.com^$document +||dateyou2024.com^$document +||degreedistance.cfd^$document +||demowebcode.online^$document +||di7stero.com^$document +||diagramjawlineunhappy.com^$document +||dianomi.com^$document +||directdexchange.com^$document +||displayvertising.com^$document +||dlrectdates.com^$document +||domainparkingmanager.it^$document +||dpuppers.com^$document +||dreamteamaffiliates.com^$document +||drsmediaexchange.com^$document +||dsb68d.com^$document +||dsp5stero.com^$document +||earlinessone.xyz^$document +||easelegbike.com^$document +||easyconverts.com^$document +||eeco.xyz^$document +||efficientorbit.co^$document +||endlessloveonline.online^$document +||enrtx.com^$document +||escortlist.pro^$document +||excellingvista.com^$document +||exclkplat.com^$document +||extsoft.info^$document +||exxtended-access.com^$document +||fantabro.com^$document +||fascespro.com^$document +||fastdntrk.com^$document +||fhvfd.com^$document +||finanvideos.com^$document +||flyingadvert.com^$document +||foerpo.com^$document +||foflf.com^$document +||forgetnet.xyz^$document +||foruftuiov.com^$document +||freetrckr.com^$document +||frequentjam.com^$document +||fruityarbors.cfd^$document +||fstsrv9.com^$document +||fuck-ads.vercel.app^$document +||fzev75-rtbix.top^$document +||galaxypush.com^$document +||gamazi.com^$document +||gamdom.com/?utm_source=$document +||gamerhit.co^$document +||gamonalsmadevel.com^$document +||gb1aff.com^$document +||gensonal.com^$document +||get-gx.co/*sub2=$document +||get-gx.net^$document +||getdirectbonus.com^$document +||getsthis.com^$document +||gkrtmc.com^$document +||gmmads.com^$document +||go-srv.com^$document +||go.betobet.net^$document +||go2affise.com^$document +||go2bdmbet.com^$document +||go2offer-1.com^$document +||goads.pro^$document +||godkc.com^$document +||gomsop.com^$document +||gotrackier.com^$document +||grfpr.com^$document +||gtbdhr.com^$document +||gys5.com^$document +||hagech.com^$document +||harmo-woe.com^$document +||haveameet.com^$document +||helicient.com^$document +||heptix.net^$document +||hetapus.com^$document +||hfr67jhqrw8.com^$document +||hiasor.com^$document +||highcpmgate.com^$document +||hiiona.com^$document +||hnrgmc.com^$document +||hoktrips.com^$document +||hooligs.app^$document +||hooliredir.com^$document +||horonstogly.com^$document +||hoveltran.xyz^$document +||hubrisone.com^$document +||hugeedate.com^$document +||hurlmedia.design^$document +||icetechus.com^$document +||icubeswire.co^$document +||imkirh.com^$document +||indlyment-stuador.com^$document +||inspoloji.com^$document +||installupdate.online^$document +||intellipopup.com^$document +||internodeid.com^$document +||intothespirits.com^$document +||invle.co^$document +||invol.co^$document +||itstuffnews.com^$document +||iyfbodn.com^$document +||izeeto.com^$document +||izimuves.com^$document +||jegiopad.top^$document +||jeroud.com^$document +||jiuwert.online^$document +||jnbhi.com^$document +||js-check.com^$document +||junkyadexchange.com^$document +||jwalkin.com^$document +||k3on.com^$document +||kagonst.com^$document +||kaminari.systems^$document +||ker2clk.com^$document +||kstrk.com^$document +||ku42hjr2e.com^$document +||lamplynx.com^$document +||land.pixelsee.app^$document +||landerhq.com^$document +||leadgainz.com^$document +||leadimmensely.com^$document +||leakvideos.live^$document +||leoyard.com^$document +||lindychat.com^$document +||linksprf.com^$document +||loadtime.org^$document +||locooler-ageneral.com^$document +||locopar.com^$document +||lorymo.online^$document +||lstgddss.com^$document +||lwnbts.com^$document +||lylufhuxqwi.com^$document +||madeupice.com^$document +||madurird.com^$document +||mainadcenter.com^$document +||mainexclkdir.com^$document +||making.party^$document +||maredpt.com^$document +||marketingthing.click^$document +||masterreviews.org^$document +||maxconvtrk.com^$document +||maxickedpantents.com^$document +||mazefoam.com^$document +||mbcm2.com^$document +||mbjrkm2.com^$document +||mbreviewer.com^$document +||mbreviews.info^$document +||mbvlmz.com^$document +||mcfstats.com^$document +||mddsp.info^$document +||medfoodsafety.com^$document +||mediahell.world^$document +||meetflirtmatch.com^$document +||meetwebclub.com^$document +||metabatted.com^$document +||metatrckpixel.com^$document +||mettend-hamous.xyz^$document +||mgid.com^$document +||mirfakpersei.top^$document +||mistysteel.co^$document +||mnaspm.com^$document +||mndlvr.com^$document +||mobagent.com^$document +||mobile-ads.fetish-matters.net^$document +||mobile-ads.gaygalls.net^$document +||mobile-ads.wycc.porn^$document +||mobiletracking.ru^$document +||momotrk.com^$document +||moontrkr.com^$document +||mosved.com^$document +||myafriend.com^$document +||mylot.com^$document +||mynutraresearch.com^$document +||mytdsnet.com^$document +||n91hg.com^$document +||nan0cns.com^$document +||navigatingnautical.xyz^$document +||nersionitsumpute.com^$document +||net.geo.opera.com^*utm_source=OFT$document +||newmytrp.com^$document +||next-lust.cfd^$document +||nexusbloom.xyz^$document +||nightbesties.com^$document +||nithyshipsi.com^$document +||noavoahevugrib.com^$document +||noolt.com^$document +||northauthority.xyz^$document +||novibet.partners^$document +||nrs6ffl9w.com^$document +||ntrftrksec.com^$document +||numbertrck.com^$document +||nutchaungong.com^$document +||nwwrtbbit.com^$document +||nxt-psh.com^$document +||obtaintrout.com^$document +||offergate-ecommerce-cdn5.com^$document +||offergate-software11.com^$document +||offergate-software20.com^$document +||offergate-software6.com^$document +||ojrq.net^$document +||olopruy.com^$document +||omegaadblock.net^$document +||omg10.com^$document +||omgt3.com^$document +||omzal.com^$document +||onclickperformance.com^$document +||onlidex.com^$document +||openrtb-banner.com^$document +||opera.com^*admaven$document +||opera.com^*PWNgames$document +||optnx.com^$document +||optvz.com^$document +||otoadom.com^$document +||outoctillerytor.com^$document +||ovardu.com^$document +||oversolosisor.com^$document +||ovret.com^$document +||pacha-wui.com^$document +||paehceman.com^$document +||paid.outbrain.com^$document +||paulastroid.com^$document +||peaktrck.uno^$document +||pemsrv.com^$document +||phgotof2.com^$document +||pilotstracking.com^$document +||pisism.com^$document +||playafterdark.com^$document +||playmmogames.com^$document +||playonlinegames.space^$document +||playstretch.host^$document +||plinksplanet.com^$document +||plorexdry.com^$document +||podbex.com^$document +||pomxd.com^$document +||pooksys.site^$document +||popblockergold.com^$document +||popcash.net^$document +||poperblocker.com^$document +||popmyads.com^$document +||popupblockermax.app^$document +||popupsblocker.org^$document +||ppcmate.com^$document +||pretrackings.com^$document +||prfwhite.com^$document +||priestsuede.click^$document +||prmtracking.com^$document +||pro-adblocker.com^$document +||proceedflow.com^$document +||profitablecpmratenetwork.com^$document +||profitablegatecpm.com^$document +||propellerclick.com^$document +||proscholarshub.com^$document +||protected-redirect.click^$document +||protection-suggestion.com^$document +||provenpixel.com^$document +||pubadx.one^$document +||pubtrky.com^$document +||pupspu.com^$document +||push-sense.com^$document +||push1000.top^$document +||push1005.com^$document +||pushaffiliate.net^$document +||pushking.net^$document +||pushtorm.net^$document +||pushub.net^$document +||pwrgamerz.com^$document +||qnp16tstw.com^$document +||qualiclicks.com^$document +||quixoticzest.com^$document +||qwikln.com^$document +||r8bz.com^$document +||racunn.com^$document +||radiancerelaysacred.com^$document +||ragan-qdr.com^$document +||rbtfit.com^$document +||rcdn-web.com^$document +||realsh.xyz^$document +||realtime-bid.com^$document +||redirectingat.com^$document +||reebr.com^$document +||rel-s.com^$document +||resentreaccotia.com^$document +||rexsrv.com^$document +||rhinoaffiliates.com^$document +||riftharp.com^$document +||rm358.com^$document +||rmhfrtnd.com^$document +||rmzsglng.com^$document +||rndskittytor.com^$document +||rockingfolders.com^$document +||rockwound.site^$document +||rocoads.com^$document +||rolltrk9.com^$document +||romil-jdd.com^$document +||roobetaffiliates.com^$document +||roots.baby^$document +||roundflow.net^$document +||rovno.xyz^$document +||rtbbhub.com^$document +||rtbbpowaq.com^$document +||rtbbtech.com^$document +||rtbix.xyz^$document +||rtbreachads.com^$document +||s3g6.com^$document +||sabasadara.com^$document +||safeonlinetips.com^$document +||savinist.com^$document +||schedulerationally.com^$document +||security-suggestion.com^$document +||security-u.com^$document +||securitycheckonline.com^$document +||sentimentalflight.com^$document +||sexemulator.tube-sexs.com^$document +||sgben.com^$document +||shakingtacklingunpeeled.com^$document +||shauladubhe.top^$document +||sheitelhamatum.shop^$document +||shoppinglifestyle.biz^$document +||shotgunchancecruel.com^$document +||signamentswithd.com^$document +||singledatetime.com^$document +||sitepageflow.com^$document +||skylindo.com^$document +||slcuse.com^$document +||sloto.live^$document +||smrtmnk2.com^$document +||socialdate.me^$document +||souszhi.com^$document +||sp03k.sbs^$document +||sparkpcgames.com^$document +||spin83qr.com^$document +||sprinlof.com^$document +||spygenix.xyz^$document +||srowox.com^$document +||srvpcn.com^$document +||srvtrck.com^$document +||stake.com/*&clickId=$document +||stake.mba/?c=$document +||staysafeonlinetoday.com^$document +||steerensout.net^$document +||stopads-now.com^$document +||stortla.com^$document +||strtgic.com^$document +||stsbih.com.ba^$document +||superfasti.co^$document +||suptraf.com^$document +||sxlflt.com^$document +||synccora.com^$document +||targeta41.net^$document +||targetmatch.co^$document +||tatrck.com^$document +||tbao684tryo.com^$document +||tenlets.com^$document +||tgel2ebtx.ru^$document +||theirbellstudio.co^$document +||theonesstoodtheirground.com^$document +||tigerbrluck.com^$document +||tiktok-fly.com^$document +||tjwsg.com^$document +||toequiet.website^$document +||toiletpaper.life^$document +||tomlldahehun.org^$document +||toopsoug.net^$document +||top-best.com^$document +||topnewsgo.com^$document +||toptoys.store^$document +||totaladblock.com^$document +||tourukaustoglee.net^$document +||tr-bouncer.com^$document +||track.afrsportsbetting.com^$document +||track.bwclk.com^$document +||track.omguk.com/c?$document +||tracker-2.com^$document +||tracker-tds.info^$document +||tracking-aws-5.com^$document +||tracking-zy.com^$document +||trackingtraffo.com^$document +||trasupr.com^$document +||trckqq.com^$document +||trentbereal.com^$document +||trkfomedia.eu^$document +||trknovi.com^$document +||trkpostback.com^$document +||trksmorestreacking.com^$document +||trpool.org^$document +||try.opera.com^$document +||tsyndicate.com^$document +||tubecup.net^$document +||twigwisp.com^$document +||twinrdsyte.com^$document +||typical-hub.com^$document +||u7do.sbs^$document +||unlocky.org^$document +||unlocky.xyz^$document +||upodaitie.net^$document +||usedownloads.com^$document +||utm-campaign.com^$document +||validcombine.com^$document +||vasstycom.com^$document +||verdepromo.info^$document +||veret-fqv.com^$document +||vfgte.com^$document +||vibrantscale.com^$document +||viiadaof.com^$document +||viibslav.com^$document +||viiczfvm.com^$document +||viikuhhs.com^$document +||viiyutty.com^$document +||viiyxefb.com^$document +||vilytaku.com^$document +||vinstigo.com^$document +||viralnewsbd.xyz^$document +||viralvideoclip.info^$document +||virelon.com^$document +||vizoalygrenn.com^$document +||vmmcdn.com^$document +||voluumtrk.com^$document +||vstwerxerbc.top^$document +||vulnerableimmigrateaboveaverage.com^$document +||w0we.com^$document +||want-some-psh.com^$document +||wbidder.online^$document +||wbidder3.com^$document +||we-offer.com^$document +||webfanclub.com^$document +||webmedrtb.com^$document +||wetrackgames.com^$document +||wewearegogogo.com^$document +||wheceelt.net^$document +||wintrck.com^$document +||wonderadblock.com^$document +||wuujae.com^$document +||x2tsa.com^$document +||xadsmart.com^$document +||xlivrdr.com^$document +||xszpuvwr7.com^$document +||youradexchange.com^$document +||yourprotection-suggestion.com^$document +||yoursecurity-suggestion.com^$document +||zavirand.com^$document +||zk1w.com^$document +||zrlqm.com^$document +!! Third-party +||123date.me^$third-party +||152media.com^$third-party +||2leep.com^$third-party +||2mdn.net^$~media,third-party +||33across.com^$third-party +||360ads.com^$third-party +||360installer.com^$third-party +||4affiliate.net^$third-party +||4cinsights.com^$third-party +||4dsply.com^$third-party +||888media.net^$third-party +||a-static.com^$third-party +||a.raasnet.com^$third-party +||a2zapk.com^$script,subdocument,third-party,xmlhttprequest +||a433.com^$third-party +||a4g.com^$third-party +||aaddcount.com^$third-party +||aanetwork.vn^$third-party +||abnad.net^$third-party +||aboutads.quantcast.com^$third-party +||acebet.com^$third-party +||acronym.com^$third-party +||actiondesk.com^$third-party +||activedancer.com^$third-party +||ad-adapex.io^$third-party +||ad-arrow.com^$third-party +||ad-mixr.com^$third-party +||ad-nex.com^$third-party +||ad-tech.ru^$third-party +||ad.doubleclick.net^ +||ad.plus^$third-party +||ad.style^$third-party +||ad20.net^$third-party +||ad2adnetwork.biz^$third-party +||ad2bitcoin.com^$third-party +||ad4989.co.kr^$third-party +||ad4game.com^$third-party +||ad6media.fr^$third-party +||adacado.com^$third-party +||adacts.com^$third-party +||adadvisor.net^$third-party +||adagora.com^$third-party +||adalliance.io^$third-party +||adalso.com^$third-party +||adamatic.co^$third-party +||adaos-ads.net^$third-party +||adapex.io^$third-party +||adatrix.com^$third-party +||adbard.net^$third-party +||adbasket.net^$third-party +||adbeacon.com^$third-party +||adbetclickin.pink^$third-party +||adbetnetwork.com^$third-party +||adbit.biz^$third-party +||adcalm.com^$third-party +||adcell.com^$third-party +||adclickafrica.com^$third-party +||adcolony.com^$third-party +||adconscious.com^$third-party +||addoor.net^$third-party +||addroid.com^$third-party +||addynamo.net^$third-party +||adecn.com^$third-party +||adelement.com^$third-party +||ademails.com^$third-party +||adenc.co.kr^$third-party +||adengage.com^$third-party +||adentifi.com^$third-party +||adespresso.com^$third-party +||adf01.net^$third-party +||adfinity.pro^$third-party +||adfinix.com^$third-party +||adflyer.media^$third-party +||adforgames.com^$third-party +||adforge.io^$third-party +||adfrika.com^$third-party +||adgage.es^$third-party +||adgatemedia.com^$third-party +||adgear.com^$third-party +||adgebra.in^$third-party +||adgitize.com^$third-party +||adgrid.io^$third-party +||adgroups.com^$third-party +||adgrx.com^$third-party +||adhash.com^$third-party +||adhaven.com^$third-party +||adhese.be^$third-party +||adhese.com^$third-party +||adhese.net^$third-party +||adhigh.net^$third-party +||adhitzads.com^$third-party +||adhouse.pro^$third-party +||adhunt.net^$third-party +||adikteev.com^$third-party +||adimpact.com^$third-party +||adinc.co.kr^$third-party +||adinc.kr^$third-party +||adinch.com^$third-party +||adingo.jp^$third-party +||adinplay.com^$third-party +||adintend.com^$third-party +||adinterax.com^$third-party +||adinvigorate.com^$third-party +||adipolo.com^$third-party +||adipolosolutions.com^$third-party +||adireland.com^$third-party +||adireto.com^$third-party +||adisfy.com^$third-party +||adisn.com^$third-party +||adit-media.com^$third-party +||adition.com^$third-party +||aditize.com^$third-party +||aditude.io^$third-party +||adjal.com^$third-party +||adjector.com^$third-party +||adjug.com^$third-party +||adjuggler.com^$third-party +||adjuggler.net^$third-party +||adjungle.com^$third-party +||adjust.com^$script,third-party +||adk2x.com^$third-party +||adklip.com^$third-party +||adknowledge.com^$third-party +||adkonekt.com^$third-party +||adkora.com^$third-party +||adkova.com^$third-party +||adlatch.com^$third-party +||adlayer.net^$third-party +||adlegend.com^$third-party +||adlightning.com^$third-party +||adlink.net^$third-party +||adlive.io^$third-party +||adlook.me^$third-party +||adloop.co^$third-party +||adlooxtracking.com^$third-party +||adlpartner.com^$third-party +||adlux.com^$third-party +||adm.shinobi.jp^$third-party +||adman.gr^$third-party +||admana.net^$third-party +||admaru.com^$third-party +||admatic.com.tr^$third-party +||admatic.de^$third-party +||admaxim.com^$third-party +||admedia.com^$third-party +||admetricspro.com^$third-party +||admoai.com^$third-party +||admost.com^$third-party +||admulti.com^$third-party +||adnade.net^$third-party +||adnami.io^$third-party +||adnet.biz^$third-party +||adnet.com^$third-party +||adnet.de^$third-party +||adnet.lt^$third-party +||adnet.ru^$third-party +||adnext.pl^$third-party +||adnimation.com^$third-party +||adnitro.pro^$third-party +||adnium.com^$third-party +||adnmore.co.kr^$third-party +||adnow.com^$third-party +||adnuntius.com^$third-party +||adomik.com^$third-party +||adonnews.com^$third-party +||adoperator.com^$third-party +||adopsboost.com^$third-party +||adoptim.com^$third-party +||adorika.com^$third-party +||adosia.com^$third-party +||adoto.net^$third-party +||adparlor.com^$third-party +||adpay.com^$third-party +||adpays.net^$third-party +||adpeepshosted.com^$third-party +||adperfect.com^$third-party +||adplugg.com^$third-party +||adpnut.com^$third-party +||adport.io^$third-party +||adpredictive.com^$third-party +||adprime.com^$third-party +||adpushup.com^$third-party +||adquire.com^$third-party +||adqva.com^$third-party +||adreactor.com^$third-party +||adrecord.com^$third-party +||adrecover.com^$third-party +||adresellers.com^$third-party +||adrevolver.com^$third-party +||adrise.de^$third-party +||adro.co^$third-party +||adrocket.com^$third-party +||adroll.com^$third-party +||ads-bitcoin.com^$third-party +||ads-pixiv.net^$third-party +||ads.cc^$third-party +||ads4media.online^$third-party +||adsbookie.com^$third-party +||adscout.io^$third-party +||adsenix.com^$third-party +||adserve.com^$third-party +||adservingfactory.com^$third-party +||adsexse.com^$third-party +||adsfast.com^$third-party +||adsforallmedia.com^$third-party +||adshot.de^$third-party +||adsiduous.com^$third-party +||adsight.nl^$third-party +||adsinteractive.com^$third-party +||adslivecorp.com^$third-party +||adsmart.hk^$third-party +||adsninja.ca^$third-party +||adsniper.ru^$third-party +||adsolutely.com^$third-party +||adsparc.net^$third-party +||adspeed.com^$third-party +||adspruce.com^$third-party +||adsquirrel.ai^$third-party +||adsreference.com^$third-party +||adsring.com^$third-party +||adsrvmedia.com^$third-party +||adsrvr.org^$third-party +||adstargeting.com^$third-party +||adstargets.com^$third-party +||adsterra.com^$third-party +||adstock.pro^$third-party +||adstoo.com^$third-party +||adstudio.cloud^$third-party +||adstuna.com^$third-party +||adsummos.net^$third-party +||adsvert.com^$third-party +||adswizz.com^$third-party +||adtarget.com.tr^$third-party +||adtarget.market^$third-party +||adtdp.com^$third-party +||adtear.com^$third-party +||adtech.de^$third-party +||adtechium.com^$third-party +||adtechjp.com^$third-party +||adtechus.com^$third-party +||adtegrity.net^$third-party +||adteractive.com^$third-party +||adthrive.com^$third-party +||adtival.network^$third-party +||adtonos.com^$third-party +||adtrafficquality.google^$third-party +||adtrix.com^$third-party +||adultadworld.com^$third-party +||adultimate.net^$third-party +||adup-tech.com^$third-party +||adv-adserver.com^$third-party +||advanseads.com^$third-party +||advcash.com^$third-party +||adventori.com^$third-party +||adventurefeeds.com^$third-party +||adverge.ai^$third-party +||adversal.com^$third-party +||adverticum.net^$third-party +||advertise.com^$third-party +||advertisespace.com^$third-party +||advertising365.com^$third-party +||advertnative.com^$third-party +||advertone.ru^$third-party +||advertserve.com^$third-party +||advertsource.co.uk^$third-party +||advertur.ru^$third-party +||adviad.com^$third-party +||advmd.com^$third-party +||advmedialtd.com^$third-party +||advombat.ru^$third-party +||advon.net^$third-party +||advsnx.net^$third-party +||adwebster.com^$third-party +||adworldmedia.com^$third-party +||adworldmedia.net^$third-party +||adx.io^$third-party +||adx.ws^$third-party +||adxpose.com^$third-party +||adxpremium.com^$third-party +||adxpub.com^$third-party +||adyoulike.com^$third-party +||adysis.com^$third-party +||adz2you.xyz^$third-party +||adzbazar.com^$third-party +||adzen.ai^$third-party +||adzerk.net^$third-party +||adzouk.com^$third-party +||adzs.nl^$third-party +||affbuzzads.com^$third-party +||affec.tv^$third-party +||affifix.com^$third-party +||affiliate-b.com^$third-party +||affiliateedge.com^$third-party +||affiliategroove.com^$third-party +||affilimateapis.com^$third-party +||affilist.com^$third-party +||affinity.com^$third-party +||afishamedia.net^$third-party +||afp.ai^$third-party +||afrikad.com^$third-party +||afront.io^$third-party +||afy11.net^$third-party +||afyads.com^$third-party +||agentio.com^$third-party +||aim4media.com^$third-party +||ainsyndication.com^$third-party +||airfind.com^$third-party +||akavita.com^$third-party +||aklamator.com^$third-party +||alienhub.xyz^$third-party +||alimama.com^$third-party +||allmediadesk.com^$third-party +||alloha.tv^$third-party +||alpha-affiliates.com^$third-party +||alright.network^$third-party +||alturaadvertising.com^$third-party +||amateur.cash^$third-party +||amobee.com^$third-party +||amxrtb.com^$third-party +||andbeyond.media^$third-party +||aniview.com^$third-party +||anrdoezrs.net/image- +||anrdoezrs.net/placeholder- +||anyclip-media.com^$third-party +||anymedia.lv^$third-party +||anyxp.com^$third-party +||anzu.io^$third-party +||aorms.com^$third-party +||apex-ad.com^$third-party +||apmebf.com^$third-party +||applixir.com^$third-party +||appnext.com^$third-party +||apprupt.com^$third-party +||apxtarget.com^$third-party +||apycomm.com^$third-party +||apyoth.com^$third-party +||aqua-adserver.com^$third-party +||arcadebannerexchange.org^$third-party +||arcadechain.com^$third-party +||armanet.co^$third-party +||armanet.us^$third-party +||artsai.com^$third-party +||assoc-amazon.ca^$third-party +||assoc-amazon.co.uk^$third-party +||assoc-amazon.com^$third-party +||assoc-amazon.de^$third-party +||assoc-amazon.es^$third-party +||assoc-amazon.fr^$third-party +||assoc-amazon.it^$third-party +||asterpix.com^$third-party +||auctionnudge.com^$third-party +||audience2media.com^$third-party +||audiencerun.com^$third-party +||audiensi.com^$third-party +||audio.ad^$third-party +||autoads.asia^$third-party +||automatad.com^$third-party +||axiaffiliates.com^$third-party +||azadify.com^$third-party +||backbeatmedia.com^$third-party +||backlinks.com^$third-party +||bannerbank.ru^$third-party +||bannerboo.com^$third-party +||bannerbridge.net^$third-party +||bannerconnect.com^$third-party +||bannerconnect.net^$third-party +||bannerdealer.com^$third-party +||bannerflow.com^$third-party +||bannerignition.co.za^$third-party +||bannersmall.com^$third-party +||bannersnack.com^$third-party,domain=~bannersnack.dev +||bannersnack.net^$third-party,domain=~bannersnack.dev +||bannerweb.com^$third-party +||bannieres-a-gogo.com^$third-party +||baronsoffers.com^$third-party +||bbelements.com^$third-party +||bbuni.com^$third-party +||beaconadnetwork.com^$third-party +||bebi.com^$third-party +||beead.net^$third-party +||begun.ru^$third-party +||behave.com^$third-party +||belointeractive.com^$third-party +||benefit-ads.com^$third-party +||benfly.net^$third-party +||beop.io^$third-party +||beringmedia.com^$third-party +||bestcasinopartner.com^$third-party +||bestcontentcompany.top^$third-party +||bestcontentsoftware.top^$third-party +||besthitsnow.com^$third-party +||bestodds.com^$third-party +||bestofferdirect.com^$third-party +||bestonlinecoupons.com^$third-party +||bet3000partners.com^$third-party +||bet365affiliates.com^$third-party +||betoga.com^$third-party +||betpartners.it^$third-party +||betrad.com^$third-party +||bettercollective.rocks^$third-party +||bidfilter.com^$third-party +||bidgear.com^$third-party +||bidscape.it^$third-party +||bidvertiser.com^$third-party +||bidvol.com^$third-party +||bigcrunch.com^$third-party +||bigpipes.co^$third-party +||bigpulpit.com^$third-party +||bildirim.eu^$third-party +||bimbim.com^$third-party +||bin-layer.de^$third-party +||binlayer.com^$third-party +||binlayer.de^$third-party +||bitadx.one^$third-party +||bitcoadz.io^$third-party +||bitonclick.com^$third-party +||bitspush.io^$third-party +||bizx.info^$third-party +||bizzclick.com^$third-party +||bliink.io^$third-party +||blogads.com^$third-party +||blogclans.com^$third-party +||bluetoad.com^$third-party +||bmfads.com^$third-party +||bonzai.co^$third-party +||boo-box.com^$third-party +||boostads.net^$third-party +||brealtime.com^$third-party +||bricks-co.com^$third-party +||brightline.tv^$third-party +||broadstreetads.com^$third-party +||browsekeeper.com^$third-party +||btrll.com^$third-party +||btserve.com^$third-party +||bucketsofbanners.com^$third-party +||budurl.com^$third-party +||buleor.com^$third-party +||bumq.com^$third-party +||burjam.com^$third-party +||burstnet.com^$third-party +||businesscare.com^$third-party +||businessclick.com^$third-party +||buxflow.com^$third-party +||buyflood.com^$third-party +||buyorselltnhomes.com^$third-party +||buysellads.com^$third-party +||buysellads.net^$third-party +||buyt.in^$third-party +||buzzadexchange.com^$third-party +||buzzadnetwork.com^$third-party +||buzzcity.net^$third-party +||buzzonclick.com^$third-party +||buzzoola.com^$third-party +||buzzparadise.com^$third-party +||bwinpartypartners.com^$third-party +||byspot.com^$third-party +||cambaddies.com^$third-party +||camghosts.com^$third-party +||camonster.com^$third-party +||campaignlook.com^$third-party +||capacitygrid.com^$third-party +||carambo.la^$third-party +||carbonads.com^$third-party +||caroda.io^$third-party +||cdn.mcnn.pl^$third-party +||cdnreference.com^$third-party +||charltonmedia.com^$third-party +||chitika.com^$third-party +||cibleclick.com^$third-party +||cinarra.com^$third-party +||citrusad.com^$third-party +||city-ads.de^$third-party +||ck-cdn.com^$third-party +||clash-media.com^$third-party +||cleafs.com^$third-party +||clean-1-clean.club^$third-party +||cleverads.vn^$third-party +||clickable.com^$third-party +||clickad.pl^$third-party +||clickadilla.com^$third-party +||clickadu.com^$third-party +||clickbet88.com^$third-party +||clickcertain.com^$third-party +||clickdaly.com^$third-party +||clickfilter.co^$third-party +||clickfuse.com^$third-party +||clickinc.com^$third-party +||clickintext.net^$third-party +||clickmagick.com^$third-party +||clickmon.co.kr^$third-party +||clickoutcare.io^$third-party +||clickpoint.com^$third-party +||clicksor.com^$third-party +||clicktripz.com^$third-party +||clixco.in^$third-party +||clixtrac.com^$third-party +||clkmg.com^$third-party +||cluep.com^$third-party +||codegown.care^$third-party +||cogocast.net^$third-party +||coguan.com^$third-party +||coinads.online^$third-party +||coinmedia.co^$third-party +||cointraffic.io^$third-party +||coinzilla.io^$third-party +||comicad.net^$third-party +||commissionfactory.com.au^$third-party +||commissionmonster.com^$third-party +||comscore.com^$third-party +||connexity.net^$third-party +||consumable.com^$third-party +||contaxe.com^$third-party +||content-cooperation.com^$third-party +||contentiq.com^$third-party +||contextads.live^$third-party +||contextuads.com^$third-party +||cookpad-ads.com^$third-party +||coolerads.com^$third-party +||coull.com^$third-party +||cpaclickz.com^$third-party +||cpagrip.com^$third-party +||cpalead.com^$third-party +||cpfclassifieds.com^$third-party +||cpm.media^$third-party +||cpmleader.com^$third-party +||crakmedia.com^$third-party +||crazyrocket.io^$third-party +||creatopy.net^$third-party +||crispads.com^$third-party +||croea.com^$third-party +||crxcr1.com^$third-party +||cryptocoinsad.com^$third-party +||cryptoecom.care^$third-party +||cryptotrials.care^$third-party +||ctrhub.com^$third-party +||ctrmanager.com^$third-party +||ctxtfl.com^$third-party +||cuelinks.com^$third-party +||currentlyobsessed.me^$third-party +||cybmas.com^$third-party +||dable.io^$third-party +||danbo.org^$third-party +||datawrkz.com^$third-party +||dating-service.net^$third-party +||datinggold.com^$third-party +||dblks.net^$third-party +||dedicatednetworks.com^$third-party +||deepintent.com^$third-party +||desipearl.com^$third-party +||dev2pub.com^$third-party +||developermedia.com^$third-party +||dgmaxinteractive.com^$third-party +||dianomi.com^$third-party +||digipathmedia.com^$third-party +||digitaladvertisingalliance.org^$third-party +||digitalaudience.io^$third-party +||digitalpush.org^$third-party +||digitalthrottle.com^$third-party +||disneyadvertising.com^$third-party +||disqusads.com^$third-party +||dochase.com^$third-party +||domainadvertising.com^$third-party +||dotomi.com^$third-party +||doubleclick.com^ +||doubleverify.com^$third-party +||dpbolvw.net/image- +||dpbolvw.net/placeholder- +||dreamaquarium.com^$third-party +||dropkickmedia.com^$third-party +||dstillery.com^$third-party +||dt00.net^$third-party +||dt07.net^$third-party +||dynad.net^$third-party +||e-generator.com^$third-party +||e-planning.net^$third-party +||e-viral.com^$third-party +||eadsrv.com^$third-party +||easy-ads.com^$third-party +||easyadsapp.com^$third-party +||easyhits4u.com^$third-party +||easyinline.com^$third-party +||ebayclassifiedsgroup.com^$third-party +||ebayobjects.com.au^$third-party +||eboundservices.com^$third-party +||eclick.vn^$third-party +||ednplus.com^$third-party +||egadvertising.com^$third-party +||egamingonline.com^$third-party +||egamiplatform.tv^$third-party +||eksiup.com^$third-party +||ematicsolutions.com^$third-party +||eroterest.net^$third-party +||essayads.com^$third-party +||essaycoupons.com^$third-party +||et-code.ru^$third-party +||ethereumads.com^$third-party +||ethicalads.io^$third-party +||etology.com^$third-party +||evolvemediallc.com^$third-party +||evolvenation.com^$third-party +||exactdrive.com^$third-party +||exchange4media.com^$third-party +||exitbee.com^$third-party +||exitexplosion.com^$third-party +||exmarketplace.com^$third-party +||exponential.com^$third-party +||eyewonder.com^$third-party +||falcopartners.com^$third-party +||fapcat.com^$third-party +||faspox.com^$third-party +||fast-redirecting.com^$third-party +||fast2earn.com^$third-party +||feature.fm^$third-party +||fireflyengagement.com^$third-party +||fireworkadservices.com^$third-party +||firstimpression.io^$third-party +||fisari.com^$third-party +||fixionmedia.com^$third-party +||flashtalking.com^$third-party,domain=~toggo.de +||flaviar.com^$third-party +||flower-ads.com^$third-party +||fls.doubleclick.net^ +||flx2.pnl.agency^$third-party +||flyersquare.com^$third-party +||flymyads.com^$third-party +||foremedia.net^$third-party +||forexprostools.com^$third-party +||freedomadnetwork.com^$third-party +||freerotator.com^$third-party +||friendlyduck.com^$third-party +||fruitkings.com^$third-party +||g.doubleclick.net^ +||gainmoneyfast.com^$third-party +||gambling-affiliation.com^$third-party +||game-clicks.com^$third-party +||gayadnetwork.com^$third-party +||geozo.com^$third-party +||germaniavid.com^$third-party +||get-trust-vpn.info^$third-party +||girls.xyz^$third-party +||gitads.dev^$third-party +||goadserver.com^$third-party +||goclicknext.com^$third-party +||gourmetads.com^$third-party +||gplinks.in^$third-party +||grabo.bg^$third-party +||graciamediaweb.com^$third-party +||grafpedia.com^$third-party +||grapeshot.co.uk^$third-party +||greedseed.world^$third-party +||gripdownload.co^$third-party +||groovinads.com^$third-party +||grv.media^$third-party +||grvmedia.com^$third-party +||guitaralliance.com^$third-party +||gumgum.com^$third-party +||gururevenue.com^$third-party +||harvesttraffic.com^$third-party +||havetohave.com^$third-party +||hbwrapper.com^$third-party +||headbidder.net^$third-party +||headerbidding.ai^$third-party +||headerlift.com^$third-party +||healthtrader.com^$third-party +||horse-racing-affiliate-program.co.uk^$third-party +||hot-mob.com^$third-party +||hotelscombined.com.au^$third-party +||hprofits.com^$third-party +||httpool.com^$third-party +||hypelab.com^$third-party +||hyros.com^$third-party +||ibannerexchange.com^$third-party +||ibillboard.com^$third-party +||icorp.ro^$third-party +||idevaffiliate.com^$third-party +||idreammedia.com^$third-party +||imediaaudiences.com^$third-party +||imho.ru^$third-party +||imonomy.com^$third-party +||impact-ad.jp^$third-party +||impactify.io^$third-party +||impresionesweb.com^$third-party +||improvedigital.com^$third-party +||increaserev.com^$third-party +||indianbannerexchange.com^$third-party +||indianlinkexchange.com^$third-party +||indieclick.com^$third-party +||indofad.com^$third-party +||indoleads.com^$third-party +||industrybrains.com^$third-party +||infectiousmedia.com^$third-party +||infinite-ads.com^$third-party +||infinityads.com^$third-party +||influads.com^$third-party +||infolinks.com^$third-party +||infostation.digital^$third-party +||ingage.tech^$third-party +||innity.com^$third-party +||innovid.com^$third-party +||insideall.com^$third-party +||inskinad.com^$third-party +||inskinmedia.com^$~stylesheet,third-party +||instantbannercreator.com^$third-party +||insticator.com^$third-party +||instreamvideo.ru^$third-party +||insurads.com^$third-party +||integr8.digital^$third-party +||intenthq.com^$third-party +||intentiq.com^$third-party +||interactiveads.ai^$third-party +||interadv.net^$third-party +||interclick.com^$third-party +||intergi.com^$third-party +||interpolls.com^$third-party +||interworksmedia.co.kr^$third-party +||intextual.net^$third-party +||intgr.net^$third-party +||intimlife.net^$third-party +||intopicmedia.com^$third-party +||intravert.co^$third-party +||inuvo.com^$third-party +||inuxu.co.in^$third-party +||inviziads.com^$third-party +||involve.asia^$third-party +||ip-adress.com^$third-party +||ipromote.com^$third-party +||jango.com^$third-party +||jewishadgroup.com^$third-party +||jewishcontentnetwork.com^$third-party +||jivox.com^$third-party +||jobbio.com^$third-party +||journeymv.com^$third-party +||jubna.com^$third-party +||juicyads.com^$script,third-party +||kaprila.com^$third-party +||kargo.com^$third-party +||kiosked.com^$third-party +||klakus.com^$third-party +||komoona.com^$third-party +||kurzycz.care^$third-party +||laim.tv^$third-party +||lanistaconcepts.com^$third-party +||lcwfab1.com^$third-party +||lcwfab2.com^$third-party +||lcwfab3.com^$third-party +||lcwfabt1.com^$third-party +||lcwfabt2.com^$third-party +||lcwfabt3.com^$third-party +||lemonadds.com^$third-party +||lhkmedia.in^$third-party +||lijit.com^$third-party +||linkexchangers.net^$third-party +||linkgrand.com^$third-party +||links2revenue.com^$third-party +||linkslot.ru^$third-party +||linkstorm.net^$third-party +||linkwash.de^$third-party +||linkworth.com^$third-party +||liqwid.net^$third-party +||liveadexchanger.com^$third-party +||liveadoptimizer.com^$third-party +||liveburst.com^$third-party +||liverail.com^$~object,third-party +||livesmarter.com^$third-party +||liveuniversenetwork.com^$third-party +||lockerdome.com^$third-party +||looksmart.com^$third-party +||loopaautomate.com^$third-party +||love-banner.com^$third-party +||lustre.ai^$script,third-party +||magetic.com^$third-party +||magnetisemedia.com^$third-party +||mahimeta.com^$third-party +||mail-spinner.com^$third-party +||mangoads.net^$third-party +||mantisadnetwork.com^$third-party +||marfeel.com^$third-party +||markethealth.com^$third-party +||marketleverage.com^$third-party +||marsads.com^$third-party +||mcontigo.com^$third-party +||media.net^$object,script,third-party,xmlhttprequest +||mediacpm.pl^$third-party +||mediaffiliation.com^$third-party +||mediaforce.com^$third-party +||mediafuse.com^$third-party +||mediatarget.com^$third-party +||mediatradecraft.com^$third-party +||mediavine.com^$third-party +||meendocash.com^$third-party +||membrana.media^$third-party +||metaffiliation.com^$third-party,domain=~netaffiliation.com +||microad.jp^$third-party +||midas-network.com^$third-party +||millionsview.com^$third-party +||mindlytix.com^$third-party +||mixadvert.com^$third-party +||mixi.media^$third-party +||mobday.com^$third-party +||mobile-10.com^$third-party +||monetano.com^$third-party +||monetixads.com^$third-party +||monsy.com^$third-party +||mplat-ppcprotect.com^$third-party +||mrjaz.com^$third-party +||multiview.com^$third-party +||myaffiliates.com^$third-party +||naitive.pl^$third-party +||namastedharma.com^$third-party +||nanigans.com^$third-party +||nativeads.com^$third-party +||nativeone.pl^$third-party +||nativeroll.tv^$third-party +||nativery.com^$third-party +||nativespot.com^$third-party +||neobux.com^$third-party +||neodatagroup.com^$third-party +||neoffic.com^$third-party +||neon.today^$third-party +||netaffiliation.com^$~script,third-party +||netavenir.com^$third-party +||netinsight.co.kr^$third-party +||netizen.co^$third-party +||netliker.com^$third-party +||netpub.media^$third-party +||netseer.com^$third-party +||netshelter.net^$third-party +||netsolads.com^$third-party +||networkad.net^$third-party +||networkmanag.com^$third-party +||networld.hk^$third-party +||neudesicmediagroup.com^$third-party +||newdosug.eu^$third-party +||newormedia.com^$third-party +||newsadsppush.com^$third-party +||newsnet.in.ua^$third-party +||newstogram.com^$third-party +||newtueads.com^$third-party +||nexac.com^$third-party +||nexeps.com^$third-party +||nextclick.pl^$third-party +||nextmillennium.io^$third-party,domain=~nextmillennium.com +||nextoptim.com^$third-party +||nitmus.com^$third-party +||nitropay.com^$third-party +||nitroscripts.com^$third-party +||njih.net^$third-party +||notsy.io^$third-party +||nsstatic.com^$third-party +||nsstatic.net^$third-party +||nster.net^$third-party +||ntent.com^$third-party +||numbers.md^$third-party +||o.socoms.net^$third-party +||objects.tremormedia.com^$~object,third-party +||oboxads.com^$third-party +||ocelot.studio^$third-party +||oclus.com^$third-party +||offerforge.com^$third-party +||offerforge.net^$third-party +||offerserve.com^$third-party +||okanjo.com^$third-party +||omni-dex.io^$third-party +||onetag-sys.com^$third-party +||onlyalad.net^$third-party +||onscroll.com^$third-party +||oogala.com^$third-party +||oopt.fr^$third-party +||oos4l.com^$third-party +||openbook.net^$third-party +||opt-intelligence.com^$third-party +||optable.co^$third-party +||optiads.org^$third-party +||optidigital.com^$third-party +||optinmonster.com^$third-party +||orangeclickmedia.com^$third-party +||oriel.io^$third-party +||osiaffiliate.com^$third-party +||ospreymedialp.com^$third-party +||otm-r.com^$third-party +||ottadvisors.com^$third-party +||outcomes.net^$third-party +||ownlocal.com^$third-party +||p-advg.com^$third-party +||p-digital-server.com^$third-party +||pagesinxt.com^$third-party +||paidonresults.net^$third-party +||pakbanners.com^$third-party +||papayads.net^$third-party +||paperg.com^$third-party +||paradocs.ru^$third-party +||parkingcrew.net^$third-party +||parsec.media^$third-party +||partner-ads.com^$third-party +||partner.googleadservices.com^$third-party +||partner.video.syndication.msn.com^$~object,third-party +||partnerearning.com^$third-party +||partnermax.de^$third-party +||partnerstack.com^$third-party +||partycasino.com^$third-party +||partypoker.com^$third-party +||passendo.com^$third-party +||paydemic.com^$third-party +||paydotcom.com^$third-party +||payperpost.com^$third-party +||pebblemedia.be^$third-party +||peer39.com^$third-party +||penuma.com^$third-party +||pepperjamnetwork.com^$third-party +||perkcanada.com^$third-party +||persevered.com^$third-party +||pgammedia.com^$third-party +||pinklion.io^$third-party +||placeiq.com^$third-party +||playamopartners.com^$third-party +||playmatic.video^$third-party +||playtem.com^$third-party +||pliblcc.com^$third-party +||pointclicktrack.com^$third-party +||points2shop.com^$third-party +||polisnetwork.io^$third-party +||polyvalent.co.in^$third-party +||popupdomination.com^$third-party +||postaffiliatepro.com^$third-party +||powerlinks.com^$third-party +||ppcwebspy.com^$third-party +||prebid.org^$third-party +||prebidwrapper.com^$third-party +||prezna.com^$third-party +||prf.hn^$third-party +||primis-amp.tech^$third-party +||profitsfly.com^$third-party +||promo-reklama.ru^$third-party +||proper.io^$third-party +||pub-3d10bad2840341eaa1c7e39b09958b46.r2.dev^$third-party +||pub-referral-widget.current.us^$third-party +||pubcircle.ai^$third-party +||pubdirecte.com^$third-party +||pubfuture.com^$third-party +||pubgears.com^$third-party +||pubgenius.io^$third-party +||pubguru.com^$third-party +||publicidad.net^$third-party +||publicityclerks.com^$third-party +||publift.com^$third-party +||publir.com^$third-party +||publisher1st.com^$third-party +||pubscale.com^$third-party +||pubwise.io^$third-party +||puffnetwork.com^$third-party +||pushabl.com^$script,third-party +||pushy.ai^$third-party +||putlockertv.com^$third-party +||q1media.com^$third-party +||qashbits.com^$third-party +||quanta.la^$third-party +||quantumads.com^$third-party +||quantumdex.io^$third-party +||questus.com^$third-party +||qwertize.com^$third-party +||r2b2.cz^$third-party +||r2b2.io^$third-party +||rakutenadvertising.io^$third-party +||rapt.com^$third-party +||reachjunction.com^$third-party +||reactx.com^$third-party +||readpeak.com^$third-party +||realbig.media^$third-party +||realclick.co.kr^$third-party +||realhumandeals.com^$third-party +||redads.com^$third-party +||rediads.com^$third-party +||redintelligence.net^$third-party +||redventures.io^$script,subdocument,third-party,xmlhttprequest +||republer.com^$third-party +||revbid.net^$third-party +||revenueflex.com^$third-party +||revive-adserver.net^$third-party +||revmasters.com^$third-party +||rexpush.club^$third-party +||reyden-x.com^$third-party +||rhombusads.com^$third-party +||richads.com^$third-party +||richaudience.com^$third-party +||roirocket.com^$third-party +||rollercoin.com^$third-party +||rotaban.ru^$third-party +||rtbhouse.com^$third-party +||sabavision.com^$third-party +||salvador24.com^$third-party +||sape.ru^$third-party +||sba.about.co.kr^$third-party +||sbaffiliates.com^$third-party +||scanscout.com^$third-party +||scarlet-clicks.info^$third-party +||sceno.ru^$third-party +||scrap.me^$third-party +||scriptwrapper.com^$third-party +||sedoparking.com^$third-party +||seedtag.com^$third-party +||selectad.com^$third-party +||sellhealth.com^$third-party +||sendwebpush.com^$third-party +||sensible-ads.com^$third-party +||servecontent.net^$third-party +||servedby-buysellads.com^$third-party,domain=~buysellads.com +||servemeads.com^$third-party +||servrapp.com^$third-party +||sharemedia.rs^$third-party +||sharethrough.com^$third-party +||shoofle.tv^$third-party +||shoogloonetwork.com^$third-party +||shopalyst.com^$third-party +||showcasead.com^$third-party +||showyoursite.com^$third-party +||shrinkearn.com^$third-party +||shrtfly.com^$third-party +||simpio.com^$third-party +||simple-affiliate.com^$third-party +||simpletraffic.co^$third-party +||simplyhired.com^$third-party +||sinogamepeck.com^$third-party +||sitemaji.com^$third-party +||sitesense-oo.com^$third-party +||skinected.com^$third-party +||skymedia.co.uk^$third-party +||skyscrpr.com^$third-party +||skytraffix.net^$third-party +||slfpu.com^$third-party +||slickstream.com^$third-party +||slimspots.com^$third-party +||slopeaota.com^$third-party +||smac-ad.com^$third-party +||smalk.ai^$third-party +||smartasset.com^$third-party +||smartclip.net^$third-party,domain=~toggo.de +||smartico.one^$third-party +||smartredirect.de^$third-party +||smartyads.com^$third-party +||smashpops.com^$third-party +||snack-media.com^$third-party +||sndkorea.co.kr^$third-party +||sni.ps^$third-party +||snigelweb.com^$third-party +||socialspark.com^$third-party +||soicos.com^$third-party +||sonobi.com^$third-party +||sovrn.com^$third-party +||speakol.com^$third-party +||spokeoaffiliates.com^$third-party +||spotx.tv^$third-party +||springify.io^$third-party +||springserve.com^$~media,third-party +||sprintrade.com^$third-party +||starti.pl^$third-party +||static.doubleclick.net^ +||stratos.blue^$third-party +||streamdefence.com^$third-party +||strossle.com^$third-party +||super-traf.ru^$third-party +||supplyframe.com^$third-party +||surfe.pro^$third-party +||swoop.com^$third-party +||symplr.de^$third-party +||synkd.life^$third-party +||tacoda.net^$third-party +||tacticalrepublic.com^$third-party +||tagbucket.cc^$third-party +||tagdeliver.com^$third-party +||tagdelivery.com^$third-party +||tagjunction.com^$third-party +||tailsweep.com^$third-party +||takeads.com^$third-party +||tangozebra.com^$third-party +||tanx.com^$third-party +||tapinfluence.com^$third-party +||tapnative.com^$third-party +||tardangro.com^$third-party +||targetpoint.com^$third-party +||targetspot.com^$third-party +||teasernet.com^$third-party +||terratraf.com^$third-party +||testfilter.com^$third-party +||testnet.nl^$third-party +||text-link-ads.com^$third-party +||tgtmedia.com^$third-party +||themoneytizer.com^$third-party +||tinyadz.com^$third-party +||tkqlhce.com/image- +||tkqlhce.com/placeholder- +||tlvmedia.com^$third-party +||tmtrck.com^$third-party +||tollfreeforwarding.com^$third-party +||tonefuse.com^$third-party +||topadvert.ru^$third-party +||toptopleads.com^$third-party +||toroadvertising.com^$third-party +||trackuity.com^$third-party +||tradedoubler.com^$third-party +||tradeexpert.net^$third-party +||tradplusad.com^$third-party +||traffboost.net^$third-party +||traffer.net^$third-party +||traffic-media.co.uk^$third-party +||traffic2bitcoin.com^$third-party +||trafficadbar.com^$third-party +||trafficforce.com^$third-party +||traffichaus.com^$third-party +||trafficjunky.com^$third-party +||trafficsan.com^$third-party +||trafficswarm.com^$third-party +||trafmag.com^$third-party +||trendii.com^$third-party +||trigr.co^$third-party +||triplelift.com^$third-party +||trker.com^$third-party +||trustedstack.com^$third-party +||trustx.org^$third-party +||tubeadvertising.eu^$third-party +||twads.gg^$third-party +||tyroo.com^$third-party +||ubercpm.com^$third-party +||ultrapartners.com^$third-party +||undertone.com^$third-party +||unibots.in^$third-party +||unibotscdn.com^$third-party +||universalads.com^$third-party +||urlcash.net^$third-party +||usemax.de^$third-party +||usenetjunction.com^$third-party +||usepanda.com^$third-party +||utherverse.com^$third-party +||validclick.com^$third-party +||valuead.com^$third-party +||valuecommerce.com^$third-party +||vdo.ai^$third-party +||velti.com^$third-party +||vendexo.com^$third-party +||veoxa.com^$third-party +||vertismedia.co.uk^$third-party +||viads.com^$third-party +||viads.net^$third-party +||videoo.tv^$third-party +||videoroll.net^$third-party +||videostep.com^$third-party +||vidoomy.com^$third-party +||vidverto.io^$third-party +||viewtraff.com^$third-party +||viralnugget.com^$third-party +||vistarsagency.com^$third-party +||vlyby.com^$third-party +||vupulse.com^$third-party +||w00tmedia.net^$third-party +||web3ads.net^$third-party +||webads.nl^$third-party +||webgains.com^$third-party +||weborama.fr^$third-party +||webshark.pl^$third-party +||webtrafic.ru^$third-party +||webwap.org^$third-party +||weforads.com^$third-party +||whatstheword.co^$third-party +||whizzco.com^$third-party +||wlmarketing.com^$third-party +||wmmediacorp.com^$third-party +||wordego.com^$third-party +||worthathousandwords.com^$third-party +||wwads.cn^$third-party +||xmlmonetize.com^$third-party +||xmtrading.com^$third-party +||xtendmedia.com^$third-party +||yieldkit.com^$third-party +||yieldlove.com^$third-party +||yieldmo.com^$third-party +||yllix.com^$third-party +||yourfirstfunnelchallenge.com^$third-party +||zanox-affiliate.de/ppv/$third-party +||zanox.com/ppv/$third-party +||zap.buzz^$third-party +||zedo.com^$third-party +||zemanta.com^$third-party +||zeropark.com^$third-party +||ziffdavis.com^$third-party +||zwaar.org^$third-party +! ||succeedscene.com^$third-party +! Chinese google (https://github.com/easylist/easylist/issues/15643) +||2mdn-cn.net^ +||admob-cn.com^ +||doubleclick-cn.net^ +||googleads-cn.com^ +||googleadservices-cn.com^ +||googleadsserving.cn^ +||googlevads-cn.com^ +! PopCash CNAME adservers: don't report duplicates +||cdn.ftwpcn.com^ +||cdn.iople.com^ +||cdn.jandaqwe.com^ +||cdn.jkpes.com^ +||cdn.ktbch.cloud^ +||cdn.nuqwe.com^ +||cdn.rgrd.xyz^ +||cdn.viowrel.com^ +||cdn.xbcpcn.com^ +! ad-shield https://github.com/uBlockOrigin/uAssets/issues/26681 +||19706903.xyz^ +||38167473.xyz^ +||47235645.xyz^ +||4863232c.xyz^ +||58686728.xyz^ +||64786087.xyz^ +||78587924.xyz^ +||84302764.xyz^ +||admonishdecisiveyetnow.com^ +||agreementdaily.com^ +||amongstbirdbath.com^ +||amongstgahboo.com^ +||annualrallybran.com^ +||aroundveinfixed.com^ +||artisticsway.com^ +||bahpartridge.com^ +||battleickhope.com^ +||becausepishworth.com^ +||blahorderly.com^ +||boowithout.com^ +||brilliantfaronly.com^ +||candidpick.com^ +||changedadroitharassment.com^ +||cinemaonceoddlyfatal.com^ +||correctlynow.com^ +||crazychime.com^ +||daddyobesity.com^ +||dailysubsidy.com^ +||decryptionjunior.com^ +||deeplyangrily.com^ +||deeplypishtennisscale.com^ +||degeneratebasket.com^ +||disgorgephew.com^ +||distinctdearly.com^ +||downknottily.com^ +||dratbeyond.com^ +||dratblissfully.com^ +||ea6c0ac4.xyz^ +||eekknightsoon.com^ +||equallyneedily.com^ +||erionoxcintene.com^ +||evenpatroller.com^ +||evenyumbroadlywitharmoire.com^ +||fidgetduh.com^ +||foldyahoolestorderly.com^ +||followingbehold.com^ +||forkstrictly.com^ +||forrepresentzen.com^ +||fs-loader.com^ +||gahfinallytame.com^ +||gahroundwhat.com^ +||gahyuck.com^ +||geeunlessarcade.com^ +||goshoverfeed.com^ +||greedilyperky.com^ +||gutickyum.com^ +||gutphewlittleoddly.com^ +||heavilyhelp.com^ +||hmphmehfailing.com^ +||housebutsoon.com^ +||html-load.cc^ +||hurtfulonly.com^ +||huzzahwhatintently.com^ +||ickfinallyonly.com^ +||impanelsnarling.com^ +||insteadectoderm.com^ +||insteadphooey.com^ +||intosewyuckeven.com^ +||involvingrallyanthem.com^ +||joviallysafely.com^ +||kiddinglyeven.com^ +||lacklong.com^ +||madoverpricey.com^ +||meanwhilelest.com^ +||mechanicallydrug.com^ +||mehcleverly.com^ +||meritvainlydarn.com^ +||middlegadzooks.com^ +||midwifemoist.com^ +||milkyepic.com^ +||mostlyfor.com^ +||newsletterwoot.com^ +||noisilyinstantly.com^ +||nopecaptivity.com^ +||noranglehow.com^ +||nowmodulo.com^ +||nudgesplityowza.com^ +||offendalligatorcoaleven.com^ +||oldgladly.com^ +||oofamidst.com^ +||oofpalate.com^ +||ouchvibration.com^ +||paradefast.com^ +||peculiargentleman.com^ +||perfumedsecret.com^ +||perlikewiseamid.com^ +||pilotuntil.com^ +||pishenormously.com^ +||providedwell.com^ +||psstentice.com^ +||punctualbut.com^ +||puzzledrally.com^ +||quietlythough.com^ +||rampfat.com^ +||rawbeautifully.com^ +||righteouslyyumaugmentnext.com^ +||rogerouch.com^ +||sanssnow.com^ +||sanstidy.com^ +||satephooeynab.com^ +||scowlswitchmore.com^ +||secretvelvety.com^ +||shinnyhelpfast.com^ +||shockingstudy.com^ +||sincedialover.com^ +||sitsneezerefreshing.com^ +||slapswingthrough.com^ +||smugpsstplus.com^ +||sneakyangrilypromptlyupon.com^ +||socksince.com^ +||softlyacrossany.com^ +||squeakyscofffar.com^ +||staregrownup.com^ +||suproderistrai.com^ +||tamealongpast.com^ +||tarrybelow.com^ +||tillequal.com^ +||tousleoutbid.com^ +||ughjubilantly.com^ +||unlesssecret.com^ +||upbeatdualyahoo.com^ +||uprightfondly.com^ +||wallabyhusky.com^ +||whenmehany.com^ +||whichdespite.com^ +||whoeverfestival.com^ +||whoseabacus.com^ +||windowthink.com^ +||witharound.com^ +||withoutandwhich.com^ +||withouthuzzah.com^ +||wootscratch.com^ +||worthequally.com^ +||yakunitfall.com^ +||yetyippee.com^ +||yippeewhenever.com^ +||yowzabrr.com^ +||yumhusk.com^ +! ad-shield https://github.com/List-KR/List-KR/pull/892 +||07c225f3.online^$document,popup +||content-loader.com^$document,popup +||css-load.com^$document,popup +||ea6c0ac4.xyz^$document,popup +||html-load.cc^$document,popup +||html-load.com^$document,popup +||img-load.com^$document,popup +! Samsung/LG/Philips smart-TV ad domains +||ad.lgappstv.com^ +||ad.nettvservices.com^ +||ads.samsung.com^ +||lgsmartad.com^ +||samsungacr.com^ +! anime47.com / nettruyen.com +/(https?:\/\/)\w{30,}\.me\/\w{30,}\./$script,third-party +! IP addresses +/(https?:\/\/)104\.154\..{100,}/ +/(https?:\/\/)104\.197\..{100,}/ +/(https?:\/\/)104\.198\..{100,}/ +/(https?:\/\/)130\.211\..{100,}/ +/(https?:\/\/)142\.91\.159\..{100,}/ +/(https?:\/\/)213\.32\.115\..{100,}/ +/(https?:\/\/)216\.21\..{100,}/ +/(https?:\/\/)217\.182\.11\..{100,}/ +/(https?:\/\/)51\.195\.31\..{100,}/ +||141.98.82.232^ +||142.91.159. +||157.90.183.248^ +||158.247.208. +||162.252.214.4^ +||167.71.252.38^ +||167.99.31.227^ +||172.255.103.118^ +||172.255.6.135^ +||172.255.6.137^ +||172.255.6.139^ +||172.255.6.140^ +||172.255.6.150^ +||172.255.6.152^ +||172.255.6.199^ +||172.255.6.217^ +||172.255.6.228^ +||172.255.6.248^ +||172.255.6.252^ +||172.255.6.254^ +||172.255.6.2^ +||172.255.6.59^ +||185.149.120.173^ +||188.42.84.110^ +||188.42.84.137^ +||188.42.84.159^ +||188.42.84.160^ +||188.42.84.162^ +||188.42.84.21^ +||188.42.84.23^ +||194.26.232.61^ +||203.195.121.0^ +||203.195.121.103^ +||203.195.121.119^ +||203.195.121.11^ +||203.195.121.134^ +||203.195.121.184^ +||203.195.121.195^ +||203.195.121.1^ +||203.195.121.209^ +||203.195.121.217^ +||203.195.121.219^ +||203.195.121.224^ +||203.195.121.229^ +||203.195.121.24^ +||203.195.121.28^ +||203.195.121.29^ +||203.195.121.34^ +||203.195.121.36^ +||203.195.121.40^ +||203.195.121.46^ +||203.195.121.70^ +||203.195.121.72^ +||203.195.121.73^ +||203.195.121.74^ +||212.117.186.252^ +||23.109.121.125^ +||23.109.121.254^ +||23.109.150.208^ +||23.109.150.253^ +||23.109.170.19^ +||23.109.170.212^ +||23.109.170.228^ +||23.109.170.241^ +||23.109.170.255^ +||23.109.170.60^ +||23.109.248.125^ +||23.109.248.129^ +||23.109.248.130^ +||23.109.248.135^ +||23.109.248.139^ +||23.109.248.149^ +||23.109.248.14^ +||23.109.248.174^ +||23.109.248.183^ +||23.109.248.20^ +||23.109.248.229^ +||23.109.248.247^ +||23.109.248.29^ +||23.109.82. +||23.109.87. +||23.109.87.123^ +||23.195.91.195^ +||23.83.67.164^ +||34.102.137.201^ +||35.227.234.222^ +||35.232.188.118^ +||37.1.209.213^ +||37.1.213.100^ +||5.61.55.143^ +||51.77.227.100^ +||51.77.227.101^ +||51.77.227.102^ +||51.77.227.103^ +||51.77.227.96^ +||51.77.227.97^ +||51.77.227.98^ +||51.77.227.99^ +||51.89.187.136^ +||51.89.187.137^ +||51.89.187.138^ +||51.89.187.139^ +||51.89.187.140^ +||51.89.187.141^ +||51.89.187.142^ +||51.89.187.143^ +||88.42.84.136^ +! Altice / Optimum / CableVision injects ads +! https://github.com/ryanbr/fanboy-adblock/issues/816 +|167.206.10.148^ +||167.206.10.148^ + +! *** easylist:easylist/easylist_adservers_popup.txt *** +||07c225f3.online^$popup +||0i0i0i0.com^$popup +||11x11.com^$popup +||123vidz.com^$popup +||172.255.103.171^$popup +||1asb.com^$popup +||1betandgonow.com^$popup +||1jutu5nnx.com^$popup +||1ts17.top^$popup +||1x001.com^$popup +||1xlite-522762.top^$popup +||22bettracking.online^$popup +||22media.world^$popup +||23.109.82.222^$popup +||24-sportnews.com^$popup +||2477april2024.com^$popup +||24affiliates.com^$popup +||24click.top^$popup +||24x7report.com^$popup +||2annalea.com^$popup +||2qj7mq3w4uxe.com^$popup +||2smarttracker.com^$popup +||2track.info^$popup +||367p.com^$popup +||4dsply.com^$popup +||554koaylwga7.top^$popup +||567bets10.com^$popup +||5dimes.com^$popup +||5mno3.com^$popup +||5vbs96dea.com^$popup +||6-partner.com^$popup +||62ad.com^$popup +||735pwa.com^$popup +||79pa4bxa86.com^$popup +||7ca78m3csgbrid7ge.com^$popup +||888media.net^$popup +||888promos.com^$popup +||89sa.com^$popup +||8s5s.com^$popup +||900bets10.com^$popup +||905trk.com^$popup +||95urbehxy2dh.top^$popup +||9gg23.com^$popup +||9l3s3fnhl.com^$popup +||9t5.me^$popup +||a-ads.com^$popup +||a64x.com^$popup +||aagm.link^$popup +||abadit5rckb.com^$popup +||abadit5rckd.com^$popup +||ablogica.com^$popup +||aboveredirect.top^$popup +||abtrcker.com^$popup +||acacdn.com^$popup +||acam-2.com^$popup +||accecmtrk.com^$popup +||acceptableredheadcaviar.com^$popup +||accomplishedpersuadedprinter.com^$popup +||acdcdn.com^$popup +||acedirect.net^$popup +||achcdn.com^$popup +||aclktrkr.com^$popup +||actiondesk.com^$popup,third-party +||activate-game.com^$popup +||aculturerpa.info^$popup +||ad-block-offer.com^$popup +||ad-free.info^$popup +||ad-maven.com^$popup +||ad.soicos.com^$popup +||ad4game.com^$popup +||ad6media.fr^$popup,third-party +||adbetclickin.pink^$popup +||adblock-360.com^$popup +||adblock-guru.com^$popup +||adblock-one-protection.com^$popup +||adblock-zen.com^$popup +||adblocker-sentinel.net^$popup +||adblockersentinel.com^$popup +||adblockstream.com^$popup +||adblockstrtape.link^$popup +||adblockstrtech.link^$popup +||adboost.it^$popup +||adbooth.com^$popup +||adca.st^$popup +||adcash.com^$popup +||adcdnx.com^$popup +||adcell.com^$popup +||adclickbyte.com^$popup +||addotnet.com^$popup +||adentifi.com^$popup +||adexchangecloud.com^$popup +||adexchangegate.com^$popup +||adexchangeguru.com^$popup +||adexchangemachine.com^$popup +||adexchangeprediction.com^$popup +||adexchangetracker.com^$popup +||adexmedias.com^$popup +||adfgetlink.net^$popup +||adform.net^$popup +||adfpoint.com^$popup +||adglare.net^$popup +||adhealers.com^$popup +||adhoc2.net^$popup +||aditsafeweb.com^$popup +||adjuggler.net^$popup +||adk2x.com^$popup +||adkmbc.com^$popup +||adlogists.com^$popup +||adlserq.com^$popup +||adltserv.com^$popup +||admachina.com^$popup +||admediatex.net^$popup +||admedit.net^$popup +||admeerkat.com^$popup +||admeking.com^$popup +||admeridianads.com^$popup +||admitad.com^$popup +||admjmp.com^$popup +||admobe.com^$popup +||admothreewallent.com$popup +||adnanny.com^$popup,third-party +||adnetworkperformance.com^$popup +||adnium.com^$popup,third-party +||adnotebook.com^$popup +||adnxs-simple.com^$popup +||adonweb.ru^$popup +||adop.co^$popup +||adplxmd.com^$popup +||adpool.bet^$popup +||adport.io^$popup +||adreactor.com^$popup +||adrealclick.com^$popup +||adright.co^$popup +||adrunnr.com^$popup +||ads.sexier.com^$popup +||ads4trk.com^$popup +||adsb4trk.com^$popup +||adsblockersentinel.info^$popup +||adsbreak.com^$popup +||adsbtrk.com^$popup +||adsco.re^$popup +||adserverplus.com^$popup +||adserving.unibet.com^$popup +||adshostnet.com^$popup +||adskeeper.co.uk^$popup +||adskeeper.com^$popup +||adskpak.com^$popup +||adsmarket.com^$popup +||adsplex.com^$popup +||adspredictiv.com^$popup +||adspyglass.com^$popup +||adsquash.info^$popup +||adsquasher.com^$popup +||adsrv4k.com^$popup +||adstean.com^$popup +||adstik.click^$popup +||adsupply.com^$popup +||adsupplyads.com^$popup +||adsupplyads.net^$popup +||adsurve.com^$popup +||adtelligent.com^$popup +||adtng.com^$popup +||adtrace.org^$popup +||adtraction.com^$popup +||adult.xyz^$popup +||advancedadblocker.pro^$popup +||advertiserurl.com^$popup +||advertserve.com^$popup +||advmedialtd.com^$popup +||advotionhot.com^$popup +||adw9.com^$popup +||adx-t.com^$popup +||adx.io^$popup,third-party +||adxpansion.com^$popup +||adxpartner.com^$popup +||adzblockersentinel.net^$popup +||adzerk.net^$popup +||aeeg5idiuenbi7erger.com^$popup +||aeelookithdifyf.com^$popup +||aetvellt.net^$popup +||afcpatrk.com^$popup +||aff-handler.com^$popup +||aff-track.net^$popup +||affbuzzads.com^$popup +||affcpatrk.com^$popup +||affflow.com^$popup +||affidavitheadfirstonward.com^$popup +||affili.st^$popup +||affiliate-wg.com^$popup +||affiliateboutiquenetwork.com^$popup +||affiliatestonybet.com^$popup +||affiliride.com^$popup +||affilirise.com^$popup +||affinity.net^$popup +||afflat3a1.com^$popup +||afflat3d2.com^$popup +||afflat3e1.com^$popup +||affpa.top^$popup +||affstreck.com^$popup +||afilliatetraff.com^$popup +||afodreet.net^$popup +||afront.io^$popup +||aftrk1.com^$popup +||aftrk3.com^$popup +||agacelebir.com^$popup +||agalumineonr.com^$popup +||agl001.bid^$popup +||aglobally.com^$popup +||ahadsply.com^$popup +||ahbdsply.com^$popup +||ahscdn.com^$popup +||aifolr.com^$popup +||aigeno.com^$popup +||aimging.com^$popup +||aimukreegee.net^$popup +||aitsatho.com^$popup +||aj1070.online^$popup +||ajump1.com^$popup +||ajump2.com^$popup +||ajxx98.online^$popup +||ak-is2.net^$popup +||akhoondathecae.shop^$popup +||akmxts.com^$popup +||akumeha.onelink.me^$popup +||akutapro.com^$popup +||albonsa.com^$popup +||alexatracker.com^$popup +||algocashmaster.com^$popup +||alibabatraffic.com^$popup +||alightbornbell.com^$popup +||alitems.co^$popup +||alitems.site^$popup +||alleviatepracticableaddicted.com^$popup +||allhypefeed.com^$popup +||allowseshehasn.com^$popup +||allsportsflix.best^$popup +||allsporttv.com^$popup +||almstda.tv^$popup +||aloatchuraimti.net^$popup +||alpenridge.top^$popup +||alpheratzscheat.top^$popup +||alpine-vpn.com^$popup +||alpinedrct.com^$popup +||alternads.info^$popup +||alternativecpmgate.com^$popup +||alxbgo.com^$popup +||am15.net^$popup +||amatrck.com^$popup +||ambiliarcarwin.com^$popup +||amelatrina.com^$popup +||amesgraduatel.xyz^$popup +||anadistil.com^$popup +||anamuel-careslie.com^$popup +||angege.com^$popup +||aniltramps.top^$popup +||animeloundry.com^$popup +||animemeat.com^$popup +||ankdoier.com^$popup +||anmdr.link^$popup +||annihilativefaltermillion.com^$popup +||annual-gamers-choice.com^$popup +||annulmentequitycereals.com^$popup +||antcixn.com^$popup +||antiadblocksystems.com^$popup +||antjgr.com^$popup +||apapuacauthong.com^$popup +||apiecelee.com^$popup +||applstr.com^$popup +||appoineditardwide.com^$popup +||appointeeivyspongy.com^$popup +||apprefaculty.pro^$popup +||appslime.com^$popup +||apptjmp.com^$popup +||aquete.com^$popup +||arborerplanful.shop^$popup +||ardslediana.com^$popup +||argrowlitheor.com^$popup +||arkdcz.com^$popup +||arminius.io^$popup +||arrogancedanderuntruth.com^$popup +||articlepawn.com^$popup +||arwobaton.com^$popup +||asce.xyz^$popup +||asdasdad.net^$popup +||asensoithecb.com^$popup +||asgclickpp.com^$popup +||ashoupsu.com^$popup +||aslnk.link^$popup +||aso1.net^$popup +||asqconn.com^$popup +||astjigglypuffchan.com^$popup +||astrokompas.com^$popup +||astrologybacklightsinless.com^$popup +||atala-apw.com^$popup +||atas.io^$popup +||atentherel.org^$popup +||atinsolutions.com^$popup +||atsg.me^$popup +||attacheatableoverlabor.com^$popup +||attachedkneel.com^$popup +||attirecideryeah.com^$popup +||audrte.com^$popup +||auforau.com^$popup +||augailou.com^$popup +||august15download.com^$popup +||aungudie.com^$popup +||ausoafab.net^$popup +||austeemsa.com^$popup +||authognu.com^$popup +||avlmy.com^$popup +||avocams.com^$popup +||avthelkp.net^$popup +||awecrptjmp.com^$popup +||awejmp.com^$popup +||awempire.com^$popup +||awesome-blocker.com^$popup +||awptjmp.com^$popup +||awsclic.com^$popup +||backgroundrunway.com^$popup +||backspinreentryupright.com^$popup +||baipahanoop.net^$popup +||baitenthenaga.com^$popup +||bakjaqa.net^$popup +||ballyhoopla.club^$popup +||bannisterflaskputdown.com^$popup +||banquetunarmedgrater.com^$popup +||barometercorrodingunease.com^$popup +||batheunits.com^$popup +||bayshorline.com^$popup +||bbcrgate.com^$popup +||bbrdbr.com^$popup +||bbuni.com^$popup +||becomeapartner.io^$popup +||becoquin.com^$popup +||becorsolaom.com^$popup +||befirstcdn.com^$popup +||belavoplay.com^$popup +||believemefly.com^$popup +||belovedset.com^$popup +||bemachopor.com^$popup +||bemobpath.com^$popup +||bemobtrcks.com^$popup +||bemobtrk.com^$popup +||bend-me-over.com^$popup +||beniluuxen.com^$popup +||benoopto.com^$popup +||benumelan.com^$popup +||berapt-medii.com^$popup +||best-offer-for-you.com^$popup +||best-u.vip^$popup +||best-vpn-app.com^$popup +||best4fuck.com^$popup +||bestadsforyou.com^$popup +||bestchainconnection.com^$popup +||bestcleaner.online^$popup +||bestcontentaccess.top^$popup +||bestcontentfood.top^$popup +||bestconvertor.club^$popup +||bestmoviesflix.xyz^$popup +||bestonlinecasino.club^$popup +||bestplaceforall.com^$popup +||bestproducttesters.com^$popup +||bestrevenuenetwork.com^$popup +||betforakiea.com^$popup +||betoga.com^$popup +||betotodilea.com^$popup +||betpupitarr.com^$popup +||betshucklean.com^$popup +||bettentacruela.com^$popup +||better-u.vip^$popup +||betteradsystem.com^$popup +||betterdomino.com^$popup +||bettraff.com^$popup +||betvictor.com*&utm_campaign=$popup +||beyourxfriend.com^$popup +||bfpartners.click^$popup +||bidverdrd.com^$popup +||bidverdrs.com^$popup +||bidvertiser.com^$popup +||bigbasketshop.com^$popup +||bigelowcleaning.com^$popup +||billilia.com^$popup +||bimbim.com^$popup +||binaryoptionsgame.com^$popup +||bincatracs.com^$popup +||bindirect.click^$popup +||bingohall.ag^$popup +||binomlink.com^$popup +||binomnet.com^$popup +||binomnet3.com^$popup +||biphic.com^$popup +||bitadexchange.com^$popup +||bitdefender.top^$popup +||bitterstrawberry.com^$popup +||biturl.co^$popup +||bitzv.com^$popup +||blackandwhite-temporary.com^$popup +||blacklinknow.com^$popup +||blahlivedsnowdrop.com^$popup +||blancoshrimp.com^$popup +||blcdog.com^$popup +||bleandworldw.org^$popup +||blehcourt.com^$popup +||blinksbobblepadding.com^$popup +||block-ad.com^$popup +||blockadsnot.com^$popup +||blockchaintop.nl^$popup +||blogostock.com^$popup +||blubberspoiled.com^$popup +||blueistheneworanges.com^$popup +||bluelinknow.com^$popup +||blueparrot.media^$popup +||blurbreimbursetrombone.com^$popup +||blzz.xyz^$popup +||bmmads.com^$popup +||bmndx.com^$popup +||bmtmicro.com^$popup +||bngpt.com^$popup +||bngtrak.com^$popup +||bobabillydirect.org^$popup +||bobgames-prolister.com^$popup +||bodrumshuttle.net^$popup +||boloptrex.com^$popup +||bonafides.club^$popup +||bongacams.com^$popup,third-party +||bongacams10.com^$popup +||bongacams11.com^$popup +||bonuscaf.com^$popup +||bonzuna.com^$popup +||bookmakers.click^$popup +||booster-vax.com^$popup +||boskodating.com^$popup +||bot-checker.com^$popup +||bouhoagy.net^$popup +||bounceads.net^$popup +||boustahe.com^$popup +||braidsmbalolo.top^$popup +||brainberries.co^$popup +||brandreachsys.com^$popup +||brationalfilarded.com^$popup +||brieflizard.com^$popup +||brigadedelegatesandbox.com^$popup +||brightadnetwork.com^$popup +||bringmesports.com^$popup +||brisknessdebtordismiss.com^$popup +||britishinquisitive.com^$popup +||brllllantsdates.com^$popup +||broadensilkslush.com^$popup +||broadlyjukeboxunrevised.com^$popup +||browse-boost.com^$popup +||browsekeeper.com^$popup +||brutishlylifevoicing.com^$popup +||btccasinoexpert.com^$popup +||btpnav.com^$popup +||buffooncountabletreble.com^$popup +||buikolered.com^$popup +||bukusukses.com^$popup +||bullfeeding.com^$popup +||bulochka.xyz^$popup +||bunintruder.com^$popup +||bunth.net^$popup +||buqkrzbrucz.com^$popup +||busterry.com^$popup +||buy404s.com^$popup +||buyadvupfor24.com^$popup +||buyeasy.by^$popup +||buzzadnetwork.com^$popup +||buzzonclick.com^$popup +||bvmbnr.xyz^$popup +||bwredir.com^$popup +||byvngx98ssphwzkrrtsjhnbyz5zss81dxygxvlqd05.com^$popup +||byvue.com^$popup +||c0me-get-s0me.net^$popup +||c0nect.com^$popup +||c3j7rk-rtbix.top^$popup +||c43a3cd8f99413891.com^$popup +||cabbagereporterpayroll.com^$popup +||cactusheadroomscaling.com^$popup +||cagothie.net^$popup +||callyourinformer.com^$popup +||calvali.com^$popup +||camliveshow.xyz^$popup +||cams.com/go/$popup +||candellume.shop^$popup +||candyoffers.com^$popup +||cardboardcrispyrover.com^$popup +||careerjournalonline.com^$popup +||cashgzb.com^$popup +||casino.betsson.com^$popup +||casiyouaffiliates.com^$popup +||casumoaffiliates.com^$popup +||catchtheclick.com^$popup +||catsnbootsncats2020.com^$popup +||cautommityring.com^$popup +||cbdedibles.site^$popup +||cddtsecure.com^$popup +||cdn4ads.com^$popup +||cdnondemand.org^$popup +||cdnquality.com^$popup +||cdntechone.com^$popup +||cdrvrs.com^$popup +||celeritascdn.com^$popup +||ceremonioustakeintoaccountcustomer.com^$popup +||chaintopdom.nl^$popup +||chalkplayground.co^$popup +||chargeit.baby^$popup +||chaturbate.com*popunder$popup +||cheap-jewelry-online.com^$popup +||checkcdn.net^$popup +||chekrilsoumpoab.net^$popup +||cherrytv.media^$popup +||chestgoingpunch.com^$popup +||chetchoa.com^$popup +||chicks4date.com^$popup +||chiglees.com^$popup +||chl7rysobc3ol6xla.com^$popup +||choseing.com^$popup +||chpadblock.com^$popup +||chrantary-vocking.com^$popup +||chrysostrck.com^$popup +||chultoux.com^$popup +||cijoorsairgusa.com^$popup +||cjewz.com^$popup +||ckre.net^$popup +||clbanners16.com^$popup +||clbjmp.com^$popup +||clcktrck.com^$popup +||cld5r.com^$popup +||clean-1-clean.club^$popup +||clean-blocker.com^$popup +||clean-browsing.com^$popup +||clearwatch.tv^$popup +||clentrk.com^$popup +||click-cdn.com^$popup +||click-for-preview.com^$popup +||click.ggpickyaff.com^$popup +||click.quk.com^$popup +||clickadsource.com^$popup +||clickbank.net/*offer_id=$popup +||clickdaly.com^$popup +||clickfilter.co^$popup +||clickfuse.com^$popup +||clickmetertracking.com^$popup +||clickmobad.net^$popup +||clickppcbuzz.com^$popup +||clickprotects.com^$popup +||clickpunch.icu^$popup +||clickpupbit.com^$popup +||clicks4tc.com^$popup +||clicksgear.com^$popup +||clicksor.com^$popup +||clicksor.net^$popup +||clicktripz.com^$popup +||clicktrixredirects.com^$popup +||clickwork7secure.com^$popup +||clictrck.com^$popup +||clixcrafts.com^$popup +||clkfeed.com^$popup +||clkmon.com^$popup +||clkpback3.com^$popup +||clkrev.com^$popup +||clobberprocurertightwad.com^$popup +||clodsplit.com^$popup +||closercopy.cfd^$popup +||cloudpsh.top^$popup +||cloudtrack-camp.com^$popup +||cloudtraff.com^$popup +||cloudvideosa.com^$popup +||clunen.com^$popup +||clunkyentirelinked.com^$popup +||cm-trk2.com^$popup +||cm65.com^$popup +||cmpgns.net^$popup +||cms100.xyz^$popup +||cmtrkg.com^$popup +||cn846.com^$popup +||cngcpy.com^$popup +||co5457chu.com^$popup +||code4us.com^$popup +||codedexchange.com^$popup +||codeonclick.com^$popup +||coffee2play.com^$popup +||coldflownews.com^$popup +||colleem.com^$popup +||colonistnobilityheroic.com^$popup +||colossalanswer.com^$popup +||come-get-s0me.com^$popup +||come-get-s0me.net^$popup +||comfortablepossibilitycarlos.com^$popup +||concealmentmimic.com^$popup +||concedederaserskyline.com^$popup +||condles-temark.com^$popup +||conestreshow.com^$popup +||connexity.net^$popup +||conqueredallrightswell.com^$popup +||constructpreachystopper.com^$popup +||content-loader.com^$popup +||contentabc.com^$popup,third-party +||convertmb.com^$popup +||coolserving.com^$popup +||coosync.com^$popup +||coppercranberrylamp.com^$popup +||cor8ni3shwerex.com^$popup +||cordinghology.info^$popup +||correry.com^$popup +||coticoffee.com^$popup +||cotrck.com^$popup +||countabledawdlerunaudited.com^$popup +||countertrck.com^$popup +||cpacrack.com^$popup +||cpalabtracking.com^$popup +||cpm20.com^$popup +||cpmclktrk.online^$popup +||cpmterra.com^$popup +||cpvadvertise.com^$popup +||cpxdeliv.com^$popup +||cr-brands.net^$popup +||crbbgate.com^$popup +||crbck.link^$popup +||crdefault.link^$popup +||crdefault1.com^$popup +||creaseinprofitst.com^$popup +||creativecdn.com^$popup +||creepy-frame.com^$popup +||cretgate.com^$popup +||crevicedepressingpumpkin.com^$popup +||crisp-freedom.com^$popup +||cristochris.com^$popup +||crjpgate.com^$popup +||crjpingate.com^$popup +||crjugate.com^$popup +||crn77.com^$popup +||crt.livejasmin.com^$popup +||cruel-love.com^$popup +||crummydevioussucculent.com^$popup +||cruzswim.org^$popup +||cryingforanyth.com^$popup +||cryorganichash.com^$popup +||cryptopuffs.io^$popup +||cryptowheel.net^$popup +||crystal-blocker.com^$popup +||css-load.com^$popup +||ctcdwm.com^$popup +||ctosrd.com^$popup +||ctrdwm.com^$popup +||ctwmed.com^$popup +||cuddlethehyena.com^$popup +||cuevastrck.com^$popup +||cullemple-motline.com^$popup +||cuteab.com^$popup +||cvastico.com^$popup +||cwn0drtrk.com^$popup +||cyan92010.com^$popup +||cyber-guard.me^$popup +||cyberlink.pro^$popup +||cybkit.com^$popup +||czh5aa.xyz^$popup +||dadsats.com^$popup +||dagnar.com^$popup +||daichoho.com^$popup +||dailyc24.com^$popup +||daleelerah.info^$popup +||dark-reader.com^$popup +||data-px.services^$popup +||datatechdrift.com^$popup +||datatechone.com^$popup +||date-4-fuck.com^$popup +||date-till-late.us^$popup +||date2024.com^$popup +||date4sex.pro^$popup +||datedate.today^$popup +||dateguys.online^$popup +||datemefast.com^$popup +||dateyou2024.com^$popup +||datingstyle.top^$popup +||datingtoday.top^$popup +||datingtorrid.top^$popup +||dc-rotator.com^$popup +||dddomainccc.com^$popup +||debaucky.com^$popup +||dedating.online^$popup +||deebcards-themier.com^$popup +||defas.site^$popup +||deghooda.net^$popup +||deloplen.com^$popup +||deloton.com^$popup +||demowebcode.online^$popup +||dendrito.name^$popup +||denza.pro^$popup +||depreciatorybollocksupkitchen.com^$popup +||derevya2sh8ka09.com^$popup +||desertsutilizetopless.com^$popup +||devaluequalmrelative.com^$popup +||dexpredict.com^$popup +||di7stero.com^$popup +||diagramjawlineunhappy.com^$popup +||diffusedpassionquaking.com^$popup +||difice-milton.com^$popup +||digitaldsp.com^$popup +||directcpmfwr.com^$popup +||directdexchange.com^$popup +||directrev.com^$popup +||directtrck.com^$popup +||disdainsneeze.com^$popup +||dishleyinsite.shop^$popup +||displayvertising.com^$popup +||disprovefacilityjolt.com^$popup +||dithodackee.com^$popup +||dive77kt.com^$popup +||dlrectdates.com^$popup +||dmiredindeed.com^$popup +||dmzjmp.com^$popup +||doct-umb.org^$popup +||dolatiaschan.com^$popup +||dolohen.com^$popup +||dompeterapp.com^$popup +||donecperficiam.net^$popup +||donorstuffed.com^$popup +||doostozoa.net^$popup +||dopaleads.com^$popup +||dopansearor.com^$popup +||dope.autos^$popup +||doruffleton.com^$popup +||dotyruntchan.com^$popup +||doubleadserve.com^$popup +||doubleclick.net^$popup +||doublepimp.com^$popup +||douglasjamestraining.com^$popup +||down-paradise.com^$popup +||download-adblockgenius.com^$popup +||download-file.org^$popup +||download-performance.com^$popup +||downloadboutique.com^$popup +||downloads-windows-pc.com^$popup +||downlon.com^$popup +||dpuppers.com^$popup +||dradvice.in^$popup +||drctcldff.com^$popup +||dreamteamaffiliates.com^$popup +||drsmediaexchange.com^$popup +||dsb68d.com^$popup +||dsp.wtf^$popup +||dsp5stero.com^$popup +||dspultra.com^$popup +||dtssrv.com^$popup +||dubzenom.com^$popup +||dukingdraon.com^$popup +||dxtv1.com^$popup +||dynsrvtbg.com^$popup +||dynsrvwer.com^$popup +||dyptanaza.com^$popup +||dzhjmp.com^$popup +||eaaratte.net^$popup +||eabids.com^$popup +||eacdn.com^$popup +||ealeo.com^$popup +||earlinessone.xyz^$popup +||easelegbike.com^$popup +||eastrk-dn.com^$popup +||easyconverts.com^$popup +||easysearch.click^$popup +||eclinerybelfast.org^$popup +||eclkmpsa.com^$popup +||ectozoaquagga.top^$popup +||edalloverwiththinl.info^$popup +||edonhisdhi.com^$popup +||edttmar.com^$popup +||eeco.xyz^$popup +||eehuzaih.com^$popup +||eergortu.net^$popup +||eessoong.com^$popup +||eetspaae.net^$popup +||effectivecpmcontent.com^$popup +||effectiveratecpm.com^$popup +||efficientorbit.co^$popup +||egmyz.com^$popup +||egraglauvoathog.com^$popup +||eiteribesshaints.com^$popup +||elephant-ads.com^$popup +||eliwitensirg.net^$popup +||embarkvision.top^$popup +||emotomalf.com^$popup +||encouragedmemistress.com^$popup +||endlessloveonline.online^$popup +||endorico.com^$popup +||enloweb.com^$popup +||ennedranorway.top^$popup +||enrtx.com^$popup +||entainpartners.com^$popup,third-party +||entjgcr.com^$popup +||entterto.com^$popup +||eofst.com^$popup +||eonsmedia.com^$popup +||eontappetito.com^$popup +||epicgameads.com^$popup +||era67hfo92w.com^$popup +||eralway.com^$popup +||errumoso.xyz^$popup +||escortlist.pro^$popup +||eshkol.io^$popup +||eshkol.one^$popup +||eskimi.com^$popup +||ever8trk.com^$popup +||everyview.info^$popup +||ewesmedia.com^$popup +||ewhareey.com^$popup +||ewogloarge.com^$popup +||excellingvista.com^$popup +||exceptional-ingress.life^$popup +||exclkplat.com^$popup +||exclplatmain.com^$popup +||exclusivesearch.online^$popup +||exdynsrv.com^$popup +||exnesstrack.com^$popup +||exoclick.com^$popup +||exodusjailhousetarantula.com^$popup +||exosrv.com^$popup +||expdirclk.com^$popup +||explorads.com^$popup,third-party +||explore-site.com^$popup +||exporder-patuility.com^$popup +||exrtbsrv.com^$popup +||extensions-media.com^$popup +||externalfavlink.com^$popup +||extractionatticpillowcase.com^$popup +||extsoft.info^$popup +||exxtended-access.com^$popup +||ey43.com^$popup +||eyauknalyticafra.info^$popup +||ezadblocker.com^$popup +||ezcgojaamg.com^$popup +||ezdownloadpro.info^$popup +||ezmob.com^$popup +||faiverty-station.com^$popup +||familyborn.com^$popup +||fardasub.xyz^$popup +||fast-redirecting.com^$popup +||fastdntrk.com^$popup +||fastgolbalserver.com^$popup +||fastincognitomode.com^$popup +||fastlnd.com^$popup +||fbmedia-ckl.com^$popup +||fbpqvs.com^$popup +||februaryinjectionproudly.com^$popup +||feed-xml.com^$popup +||feedyourheadmag.com^$popup +||fefinegoldforeyes.com^$popup +||fenacheaverage.com^$popup +||fer2oxheou4nd.com^$popup +||feuageepitoke.com^$popup +||fhserve.com^$popup +||fiinnancesur.com^$popup +||filestube.com^$popup,third-party +||filthygracefulspinach.com^$popup +||finance-hot-news.com^$popup +||finanvideos.com^$popup +||findbetterresults.com^$popup +||finreporter.net^$popup +||firstclass-download.com^$popup +||fitcenterz.com^$popup +||fittingcentermondaysunday.com^$popup +||flairadscpc.com^$popup +||fleamx.com^$popup +||flingforyou.com^$popup +||flowerdicks.com^$popup +||flrdra.com^$popup +||flyingadvert.com^$popup +||fodsoack.com^$popup +||fontdeterminer.com^$popup +||for-j.com^$popup +||forarchenchan.com^$popup +||forflygonom.com^$popup +||forgetnet.xyz^$popup +||forooqso.tv^$popup +||fortyphlosiona.com^$popup +||forzubatr.com^$popup +||fourwhenstatistics.com^$popup +||fpctraffic3.com^$popup +||fpgedsewst.com^$popup +||fractionfridgejudiciary.com^$popup +||fralstamp-genglyric.icu^$popup +||freegamefinder.com^$popup +||freehookupaffair.com^$popup +||freetrckr.com^$popup +||frequentjam.com^$popup +||freshpops.net^$popup +||friendlyduck.com^$popup +||frs2c.com^$popup +||frtya.com^$popup +||frtyb.com^$popup +||frtye.com^$popup +||fstsrv.com^$popup +||fstsrv5.com^$popup +||fstsrv9.com^$popup +||funmatrix.net^$popup +||fuse-cloud.com^$popup +||fusetracking.com^$popup +||fwbntw.com^$popup +||fzev75-rtbix.top^$popup +||g2afse.com^$popup +||g33ktr4ck.com^$popup +||gabbartmiotics.top^$popup +||gadlt.nl^$popup +||gadssystems.com^$popup +||gagheroinintact.com^$popup +||galaxyearningsfly.com^$popup +||galaxypush.com^$popup +||galotop1.com^$popup +||gamdom.com/?utm_source=$popup +||gamerhit.co^$popup +||gamezon.top^$popup +||gaming-adult.com^$popup +||gamingadlt.com^$popup +||gammamkt.com^$popup +||gamonalsmadevel.com^$popup +||gandmotivatin.info^$popup +||gangwaynumberprivacy.com^$popup +||ganja.com^$popup,third-party +||gb1aff.com^$popup +||gbengene.com^$popup +||gdecordingholo.info^$popup +||gdeigri.com^$popup +||gdmconvtrck.com^$popup +||geejetag.com^$popup +||geniusdexchange.com^$popup +||gensonal.com^$popup +||geotrkclknow.com^$popup +||get-gx.net^$popup +||get-link.xyz^$popup +||get.stoplocker.com^$popup +||getdirectbonus.com^$popup +||getgx.net^$popup +||getmatchedlocally.com^$popup +||getmyads.com^$popup +||getsmartyapp.com^$popup +||getsthis.com^$popup +||getthisappnow.com^$popup +||gettopple.com^$popup +||gfdfhdh5t5453.com^$popup +||gfstrck.com^$popup +||ghostnewz.com^$popup +||gkrtmc.com^$popup +||glamorous-mail.com^$popup +||glassmilheart.com^$popup +||gleagainedam.info^$popup +||glersakr.com^$popup +||glimpsemankind.com^$popup +||gliraimsofu.net^$popup +||glizauvo.net^$popup +||globaladblocker.com^$popup +||globaladblocker.net^$popup +||globeofnews.com^$popup +||globwo.online^$popup +||gloogruk.com^$popup +||glowingnews.com^$popup +||glsfreeads.com^$popup +||glugherg.net^$popup +||gml-grp.com^$popup +||gmxvmvptfm.com^$popup +||go-srv.com^$popup +||go-to-website.com^$popup +||go.aff.betplays.com^$popup +||go.betobet.net^$popup +||go.playlg.com^$popup +||go.roobet.com^$popup +||go2affise.com^$popup +||go2bdmbet.com^$popup +||go2crystalroll.com^$popup +||go2linkfast.com^$popup +||go2offer-1.com^$popup +||go2oh.net^$popup +||go2rph.com^$popup +||goads.pro^$popup +||goaffmy.com^$popup +||goapoachowoovol.net^$popup +||goaserv.com^$popup +||goathaga.top^$popup +||godkc.com^$popup +||godpvqnszo.com^$popup +||gold2762.com^$popup +||goobakocaup.com^$popup +||goonsupper.com^$popup +||goosebomb.com^$popup +||gophykopta.com^$popup +||gositego.live^$popup +||got-to-be.com^$popup +||gotibetho.pro^$popup +||gotohouse1.club^$popup +||gotoplaymillion.com^$popup +||gotrackier.com^$popup +||grabclix.com^$popup +||graitsie.com^$popup +||grapseex.com^$popup +||grazingmarrywomanhood.com^$popup +||greatdexchange.com^$popup +||greatlifebargains2024.com^$popup +||greenlinknow.com^$popup +||greenplasticdua.com^$popup +||greewepi.net^$popup +||grefutiwhe.com^$popup +||greygrid.net^$popup +||grtya.com^$popup +||grtyj.com^$popup +||grunoaph.net^$popup +||grupif.com^$popup +||gtbdhr.com^$popup +||guesswhatnews.com^$popup +||gvcaffiliates.com^$popup +||h0w-t0-watch.net^$popup +||h74v6kerf.com^$popup +||hai8g.com^$popup +||hauchiwu.com^$popup +||haveameet.com^$popup +||hazoopso.net^$popup +||hbloveinfo.com^$popup +||heavenfull.com^$popup +||helicient.com^$popup +||helmethomicidal.com^$popup +||hentaifap.land^$popup +||heptix.net^$popup +||heratheacle.com^$popup +||heresanothernicemess.com^$popup +||hetadinh.com^$popup +||hetaint.com^$popup +||hetapus.com^$popup +||hetartwg.com^$popup +||hetarust.com^$popup +||hetaruvg.com^$popup +||heyserves.com^$popup +||hhbypdoecp.com^$popup +||hiasor.com^$popup +||hibids10.com^$popup +||hicpm10.com^$popup +||hiend.xyz^$popup +||highcpmgate.com^$popup +||highercldfrev.com^$popup +||highmaidfhr.com^$popup +||highperformancecpm.com^$popup +||highperformancecpmgate.com^$popup +||highperformancecpmnetwork.com^$popup +||highperformancedformats.com^$popup +||highperformancegate.com^$popup +||highratecpm.com^$popup +||highrevenuecpmnetwork.com^$popup +||highrevenuegate.com^$popup +||highrevenuenetwork.com^$popup +||highwaycpmrevenue.com^$popup +||hiiona.com^$popup +||hilltopads.com^$popup +||hilltopads.net^$popup +||hilove.life^$popup +||hiltonbett.com^$popup +||himunpractical.com^$popup +||hintonjour.com^$popup +||historyactorabsolutely.com^$popup +||hisurnhuh.com^$popup +||hitcpm.com^$popup +||hnrgmc.com^$popup +||hoa44trk.com^$popup +||hoadaphagoar.net^$popup +||hoctor-pharity.xyz^$popup +||hoglinsu.com^$popup +||hoktrips.com^$popup +||holahupa.com^$popup +||hollysocialspuse.com^$popup +||hooliganapps.com^$popup +||hooligapps.com^$popup +||hooligs.app^$popup +||hopghpfa.com^$popup +||hot-growngames.life^$popup +||hottest-girls-online.com^$popup +||hoveltran.xyz^$popup +||howboxmaa.site^$popup +||howsliferightnow.com^$popup +||hpyjmp.com^$popup +||hqtrk.com^$popup +||hrtye.com^$popup +||hrtyh.com^$popup +||html-load.com^$popup +||htmonster.com^$popup +||hue2b.com^$popup +||hue2n.com^$popup +||hue4c.com^$popup +||hueads.com^$popup +||hugeedate.com^$popup +||hugregregy.pro^$popup +||huluads.info^$popup +||hungryrise.com^$popup +||hurlmedia.design^$popup +||hxmanga.com^$popup +||hyenadata.com^$popup +||ibeeckaidse.net^$popup +||icodstatus.shop^$popup +||icubeswire.co^$popup +||idescargarapk.com^$popup +||ifdnzact.com^$popup +||ifigent.com^$popup +||ignals.com^$popup +||ikengoti.com^$popup +||ilaterdeallyig.info^$popup +||imaxcash.com^$popup +||imghst-de.com^$popup +||imkirh.com^$popup +||impactserving.com^$popup +||improvebin.xyz^$popup +||inabsolor.com^$popup +||infeebasr.com^$popup +||inflectionquake.com^$popup +||infopicked.com^$popup +||infra.systems^$popup +||inncreasukedrev.info^$popup +||innovid.com^$popup,third-party +||inouva.com^$popup +||inpagepush.com^$popup +||insideofnews.com^$popup +||insigit.com^$popup +||install-check.com^$popup +||installupdate.online^$popup +||instancesflushedslander.com^$popup +||instant-adblock.xyz^$popup +||instantpaydaynetwork.com^$popup +||intab.fun^$popup +||intellipopup.com^$popup +||interclics.com^$popup +||internewsweb.com^$popup +||internodeid.com^$popup +||interpersonalskillse.info^$popup +||intorterraon.com^$popup +||inumbreonr.com^$popup +||investigationsuperbprone.com^$popup +||invle.co^$popup +||invol.co^$popup +||iogjhbnoypg.com^$popup +||iopiopiop.net^$popup +||irrigatenotwithstandingcommit.com^$popup +||irtya.com^$popup +||isawthenews.com^$popup +||ismlks.com^$popup +||isolatedovercomepasted.com^$popup +||istipaumophy.com^$popup +||istlnkcl.com^$popup +||itespurrom.com^$popup +||itgiblean.com^$popup +||itponytaa.com^$popup +||itrustzone.site^$popup +||itskiddien.club^$popup +||itstuffnews.com^$popup +||ittontrinevengre.info^$popup +||ittorchicer.com^$popup +||iwanttodeliver.com^$popup +||iwantusingle.com^$popup +||iyfnz.com^$popup +||iyfnzgb.com^$popup +||izeeto.com^$popup +||ja2n2u30a6rgyd.com^$popup +||jaavnacsdw.com^$popup +||jads.co^$popup +||jambosmodesty.com^$popup +||jashautchord.com^$popup +||java8.xyz^$popup +||jegiopad.top^$popup +||jepsauveel.net^$popup +||jerboasjourney.com^$popup +||jeroud.com^$popup +||jfjle4g5l.com^$popup +||jiuwert.online^$popup +||joinpropeller.com^$popup +||joohugreene.net^$popup +||joudauhee.com^$popup +||jpgtrk.com^$popup +||jrpkizae.com^$popup +||js-check.com^$popup +||jsmentry.com^$popup +||jsmptjmp.com^$popup +||judebelii.com^$popup +||juiceadv.com^$popup +||juicyads.com^$popup +||jump-path1.com^$popup +||junbi-tracker.com^$popup +||junkyadexchange.com^$popup +||junmediadclikrmdi.com^$popup +||justonemorenews.com^$popup +||jwalf.com^$popup +||jwalkin.com^$popup +||kagonst.com^$popup +||kaigaidoujin.com^$popup +||kaminari.systems^$popup +||kanoodle.com^$popup +||karafutem.com^$popup +||karoon.xyz^$popup +||katecrochetvanity.com^$popup +||keenmagwife.live^$popup +||keewoach.net^$popup +||kektds.com^$popup +||ker2clk.com^$popup +||kettakihome.com^$popup +||kgfjrb711.com^$popup +||kgorilla.net^$popup +||kiksajex.com^$popup +||kindredplc.com^$popup +||king3rsc7ol9e3ge.com^$popup +||kingtrck1.com^$popup +||kirteexe.tv^$popup +||kirujh.com^$popup +||kitchiepreppie.com^$popup +||kllpelaa.net^$popup +||kolkwi4tzicraamabilis.com^$popup +||koogreep.com^$popup +||korexo.com^$popup +||krjxhvyyzp.com^$popup +||ku2d3a7pa8mdi.com^$popup +||ku42hjr2e.com^$popup +||kunvertads.com^$popup +||kzt2afc1rp52.com^$popup +||kzvcggahkgm.com^$popup +||lactasetooth.shop^$popup +||lamplynx.com^$popup +||land.pixelsee.app^$popup +||landerhq.com^$popup +||lanesusanne.com^$popup +||lassampy.com^$popup +||lavatorydownybasket.com^$popup +||lavender64369.com^$popup +||lby2kd27c.com^$popup +||leadsecnow.com^$popup +||leapretrieval.com^$popup +||lechosabode.shop^$popup +||leesaushoah.net^$popup +||lementwrencespri.info^$popup +||lenkmio.com^$popup +||leonbetvouum.com^$popup +||leoyard.com^$popup +||lepetitdiary.com^$popup +||letitnews.com^$popup +||letitredir.com^$popup +||letshareus.com^$popup +||liaoptse.net^$popup +||libertystmedia.com^$popup +||lickingimprovementpropulsion.com^$popup +||lidsaich.net^$popup +||lifeporn.net^$popup +||ligatus.com^$popup +||liglomsoltuwhax.net^$popup +||lindychat.com^$popup +||linkadvdirect.com^$popup +||linkonclick.com^$popup +||linkredirect.biz^$popup +||linksprf.com^$popup +||liquidfire.mobi^$popup +||liveadexchanger.com^$popup +||livepromotools.com^$popup +||livezombymil.com^$popup +||lizebruisiaculi.info^$popup +||ljline.com^$popup +||lkcoffe.com^$popup +||lkstrck2.com^$popup +||llpgpro.com^$popup +||lmp3.org^$popup +||lnk8j7.com^$popup +||lnkgt.com^$popup +||localelover.com^$popup +||locked-link.com^$popup +||locooler-ageneral.com^$popup +||locopar.com^$popup +||lody24.com^$popup +||logicdate.com^$popup +||logicschort.com^$popup +||lone-pack.com^$popup +||loodauni.com^$popup +||loohaiturigavik.net^$popup +||lookandfind.me^$popup +||looksmart.com^$popup +||loosebelt.com^$popup +||losingoldfry.com^$popup +||loverevenue.com^$popup +||lowrihouston.pro^$popup +||lowseedotr.com^$popup +||lp247p.com^$popup +||lplimjxiyx.com^$popup +||lpmediastorage.com^$popup +||lptrak.com^$popup +||luckyads.pro^$popup +||luckyforbet.com^$popup +||luvaihoo.com^$popup +||luxetalks.com^$popup +||luxq8.com^$popup +||lwnbts.com^$popup +||lwonclbench.com^$popup +||lycheenews.com^$popup +||lyconery-readset.com^$popup +||ma3ion.com^$popup +||macan-native.com^$popup +||madeupice.com^$popup +||madurird.com^$popup +||mafroad.com^$popup +||magicads.nl^$popup +||magsrv.com^$popup +||mainadcenter.com^$popup +||mainexclkdir.com^$popup +||making.party^$popup +||manbycus.com^$popup +||manconsider.com^$popup +||maper.info^$popup +||maredpt.com^$popup +||marketdeathly.com^$popup +||masklink.org^$popup +||massivebelieved.com^$popup +||matchjunkie.com^$popup +||matildawu.online^$popup +||maxickedpantents.com^$popup +||maxigamma.com^$popup +||maybejanuarycosmetics.com^$popup +||mb-npltfpro.com^$popup +||mb01.com^$popup +||mb102.com^$popup +||mb103.com^$popup +||mb104.com^$popup +||mb223.com^$popup +||mb38.com^$popup +||mb57.com^$popup +||mbjrkm2.com^$popup +||mbreviews.info^$popup +||mbsrv2.com^$popup +||mbsspads.com^$popup +||mbvlmz.com^$popup +||mbvsm.com^$popup +||mcfstats.com^$popup +||mcpuwpsh.com^$popup +||mcurrentlysea.info^$popup +||mddsp.info^$popup +||mdmexclusives.com^$popup +||me4track.com^$popup +||meantimesubside.com^$popup +||media-412.com^$popup +||mediahell.world^$popup +||mediasama.com^$popup +||mediaxchange.co^$popup +||meenetiy.com^$popup +||meetradar.com^$popup +||meetsexygirls.org^$popup +||meetstorages.com^$popup +||meetwebclub.com^$popup +||megacot.com^$popup +||megaffiliates.com^$popup +||megdexchange.com^$popup +||meherdewogoud.com^$popup +||menepe.com^$popup +||menews.org^$popup +||meofmukindwoul.info^$popup +||merterpazar.com^$popup +||mesqwrte.net^$popup +||messagereceiver.com^$popup +||messenger-notify.xyz^$popup +||metabatted.com^$popup +||metatrckpixel.com^$popup +||metrica-yandex.com^$popup +||mghkpg.com^$popup +||mgid.com^$popup +||mhiiopll.net^$popup +||millustry.top^$popup +||mimosaavior.top +||mimosaavior.top^$popup +||mirfakpersei.top^$popup +||miserly-phone.com^$popup +||misspkl.com^$popup +||mistysteel.co^$popup +||mk-ads.com^$popup +||mkaff.com^$popup +||mkjsqrpmxqdf.com^$popup +||mladedda.net^$popup +||mlatrmae.net^$popup +||mnaspm.com^$popup +||mndsrv.com^$popup +||moartraffic.com^$popup +||mob1ledev1ces.com^$popup +||mobagent.com^$popup +||mobileraffles.com^$popup +||mobiletracking.ru^$popup +||mobipromote.com^$popup +||mobreach.com^$popup +||mobsuitem.com^$popup +||modificationdispatch.com^$popup +||moksoxos.com^$popup +||moleconcern.com^$popup +||molypsigry.pro^$popup +||momotrk.com^$popup +||moncoerbb.com^$popup +||monetag.com^$popup +||monsterofnews.com^$popup +||moonrocketaffiliates.com^$popup +||mordoops.com^$popup +||mosrtaek.net^$popup +||mourny-clostheme.com^$popup +||moustachepoke.com^$popup +||movfull.com^$popup +||moviemediahub.com^$popup +||movingfwd.co^$popup +||mplayeranyd.info^$popup +||mqdownload.com^$popup +||mrdzuibek.com^$popup +||mtypitea.net^$popup +||muvflix.com^$popup +||mvmbs.com^$popup +||my-promo7.com^$popup +||myadcash.com^$popup +||myaffpartners.com^$popup +||myafriend.com^$popup +||mybestdc.com^$popup +||mydailynewz.com^$popup +||myeasetrack.com^$popup +||myemailtracking.com^$popup +||myjollyrudder.com^$popup +||mylot.com^$popup +||mynutraresearch.com^$popup +||myperfect2give.com^$popup +||myreqdcompany.com^$popup +||mysagagame.com^$popup +||mywondertrip.com^$popup +||n4sredirect.com^$popup +||n91hg.com^$popup +||nabauxou.net^$popup +||naiwoalooca.net^$popup +||nalraughaksie.net^$popup +||nan0cns.com^$popup +||nanoadexchange.com^$popup +||nasosettoourm.com^$popup +||nasssmedia.com^$popup +||nathanaeldan.pro^$popup +||natregs.com^$popup +||navigatingnautical.xyz^$popup +||naxadrug.com^$popup +||ndcomemunica.com^$popup +||nectsideaments.com^$popup +||neeceeglogu.net^$popup +||nemppa.com^$popup +||neptuntrack.com^$popup +||nereu-gdr.com^$popup +||nersionitsumpute.com^$popup +||nessainy.net^$popup +||net.geo.opera.com^*utm_source=OFT$popup +||netcpms.com^$popup +||netund.com^$popup +||network.nutaku.net^$popup +||never2never.com^$popup +||newbluetrue.xyz^$popup +||newjulads.com^$popup +||newmytrp.com^$popup +||newscadence.com^$popup +||newsforyourmood.com^$popup +||newsfrompluto.com^$popup +||newsignites.com^$popup +||newslikemeds.com^$popup +||newstemptation.com^$popup +||newsyour.net^$popup +||newtab-media.com^$popup +||next-lust.cfd^$popup +||nextoptim.com^$popup +||nextyourcontent.com^$popup +||ngfruitiesmatc.info^$popup +||nicatethebene.info^$popup +||nicerisle.com^$popup +||nightbesties.com^$popup +||nigroopheert.com^$popup +||nimrute.com^$popup +||ninetyninesec.com^$popup +||nn125.com^$popup +||noavoahevugrib.com^$popup +||nomadsbrand.com^$popup +||nomadsfit.com^$popup +||nonculifus.com^$popup +||noohapou.com^$popup +||noolt.com^$popup +||north-verification.com^$popup +||northdownload.com^$popup +||nossairt.net^$popup +||notifpushnext.net^$popup +||notmil.com^$popup +||nougacoush.com^$popup +||noughttrustthreshold.com^$popup +||novibet.partners^$popup +||novitrk7.com^$popup +||novitrk8.com^$popup +||nozoakamsaun.net^$popup +||npcad.com^$popup +||nreg.world^$popup +||nrs6ffl9w.com^$popup +||nsmpydfe.net^$popup +||nsultingcoe.net^$popup +||ntoftheusysia.info^$popup +||ntoftheusysianedt.info^$popup +||ntrftrk.com^$popup +||ntrftrksec.com^$popup +||ntvpforever.com^$popup +||nukeluck.net^$popup +||numbertrck.com^$popup +||nutaku.net/signup/$popup +||nutchaungong.com^$popup +||nv3tosjqd.com^$popup +||nwwrtbbit.com^$popup +||nxt-psh.com^$popup +||nya2.com^$popup +||nythingamglad.com^$popup +||nznoxxx.com^$popup +||o18.click^$popup +||o333o.com^$popup +||oabaubsutha.com^$popup +||oalsauwy.net^$popup +||oaphoace.net^$popup +||oassackegh.net^$popup +||obqj2.com^$popup +||ockremarkedon.com^$popup +||ocmhood.com^$popup +||odalrevaursartu.net^$popup +||offaces-butional.com^$popup +||offergate-ecommerce-cdn5.com^$popup +||offergate-games-download1.com^$popup +||offergate-software11.com^$popup +||offernow24.com^$popup +||offershub.net^$popup +||offerstrack.net^$popup +||offersuperhub.com^$popup +||officetablntry.org^$popup +||offshuppetchan.com^$popup +||ofredirect.com^$popup +||ofseedotom.com^$popup +||oghqvffmnt.com^$popup +||oglalavoodoo.world^$popup +||ogtrk.net^$popup +||ohrdsplu.com^$popup +||okueroskynt.com^$popup +||omciecoa37tw4.com^$popup +||omegaadblock.net^$popup +||omg10.com^$popup +||omgpm.com^$popup +||omgt3.com^$popup +||omgt4.com^$popup +||omgt5.com^$popup +||omklefkior.com^$popup +||omzal.com^$popup +||onad.eu^$popup +||onatallcolumn.com^$popup +||oncesets.com^$popup +||onclckpop.com^$popup +||onclickads.net^$popup +||onclickalgo.com^$popup +||onclickclear.com^$popup +||onclickgenius.com^$popup +||onclickmax.com^$popup +||onclickmega.com^$popup +||onclickperformance.com^$popup +||onclickprediction.com^$popup +||onclicksuper.com^$popup +||onclicktop.com^$popup +||one-name-studio.com^$popup +||onlinecashmethod.com^$popup +||onlinefinanceworld.com^$popup +||onlinepuonline.com^$popup +||onmantineer.com^$popup +||onstunkyr.com^$popup +||ontrklnk.com^$popup +||oodrampi.com^$popup +||oopatet.com^$popup +||openadserving.com^$popup +||openmindter.com^$popup +||opera.com^*admaven$popup +||opera.com^*PWNgames$popup +||ophoacit.com^$popup +||opoxv.com^$popup +||opparasecton.com^$popup +||opportunitysearch.net^$popup +||opptmzpops.com^$popup +||opskln.com^$popup +||optimizesrv.com^$popup +||optnx.com^$popup +||optvz.com^$popup +||optyruntchan.com^$popup +||opus-whisky.com^$popup +||oraubsoux.net^$popup +||organicowner.com^$popup +||orgassme.com^$popup +||orhassagvaqw.com^$popup +||orlowedonhisdhilt.info^$popup +||osarmapa.net^$popup +||osfultrbriolenai.info^$popup +||ossmightyenar.net^$popup +||ossshucklean.com^$popup +||ostlon.com^$popup +||otnolatrnup.com^$popup +||otoadom.com^$popup +||oulsools.com^$popup +||oundhertobeconsist.org^$popup +||oungimuk.net^$popup +||ourcommonnews.com^$popup +||outhulem.net^$popup +||outlookabsorb.com^$popup +||outoctillerytor.com^$popup +||outwingullom.com^$popup +||ovardu.com^$popup +||ovdimin.buzz^$popup +||overcrowdsillyturret.com^$popup +||overninetalesor.com^$popup +||oversolosisor.com^$popup +||ow5a.net^$popup +||owrkwilxbw.com^$popup +||oxbbzxqfnv.com^$popup +||oxtsale1.com^$popup +||oyi9f1kbaj.com^$popup +||ozcarcupboard.com^$popup +||p12acx.com^$popup +||pa5ka.com^$popup +||paaeeets.net^$popup +||paeastei.net^$popup +||paehceman.com^$popup +||pagerrentablespotlight.com^$popup +||paikapiglauthi.com^$popup +||palmmalice.com^$popup +||panelghostscontractor.com^$popup +||parisjeroleinpg.com^$popup +||partitiveretinstitution.com^$popup +||passeura.com^$popup +||passfixx.com^$popup +||pasxfixs.com^$popup +||paulastroid.com^$popup +||paxsfiss.com^$popup +||paxxfiss.com^$popup +||payvclick.com^$popup +||pclk.name^$popup +||pcmclks.com^$popup +||pctsrv.com^$popup +||pecialukizeias.info^$popup +||peethach.com^$popup +||peezette-intial.com^$popup +||pejzeexukxo.com^$popup +||pelis-123.org^$popup +||pemsrv.com^$popup +||peopleloves.me^$popup +||pereliaastroid.com^$popup +||perfecttoolmedia.com^$popup +||performancetrustednetwork.com^$popup +||perispro.com^$popup +||perryvolleyball.com^$popup +||pertersacstyli.com^$popup +||pertlouv.com^$popup +||petendereruk.com^$popup +||pexu.com^$popup +||pgmediaserve.com^$popup +||pheniter.com^$popup +||phoognol.com^$popup +||phumpauk.com^$popup +||pickaflick.co^$popup +||pierisrapgae.com^$popup +||pilotstracking.com^$popup +||pipaffiliates.com^$popup +||pipsol.net^$popup +||pisism.com^$popup +||pitchedfurs.com^$popup +||pixellitomedia.com^$popup +||pk910324e.com^$popup +||placetobeforever.com^$popup +||planetarium-planet.com^$popup +||play-lg.com^$popup +||playafterdark.com^$popup +||playamopartners.com^$popup +||playerswhisper.com^$popup +||playonlinegames.space^$popup +||playrainbet.com^$popup +||playstretch.host^$popup +||playvideoclub.com^$popup +||pleasetrack.com^$popup +||plexop.net^$popup +||plinksplanet.com^$popup +||pllsadrp.net^$popup +||plorexdry.com^$popup +||pnperf.com^$popup +||poawooptugroo.com^$popup +||podefr2.net^$popup +||pointclicktrack.com^$popup +||pointroll.com^$popup +||poisism.com^$popup +||polosanitizertrusting.com^$popup +||polyh-nce.com^$popup +||pomxd.com^$popup +||pon-prairie.com^$popup +||pooksys.site^$popup +||popads.net^$popup +||popblockergold.info^$popup +||popcash.net^$popup +||popcornvod.com^$popup +||poperblocker.com^$popup +||popmyads.com^$popup +||popped.biz^$popup +||popunder.bid^$popup +||popunderjs.com^$popup +||popupblockergold.com^$popup +||popupsblocker.org^$popup +||pornhb.me^$popup +||postaffiliatepro.com^$popup,third-party +||postback1win.com^$popup +||postlnk.com^$popup +||potawe.com^$popup +||potsaglu.net^$popup +||potskolu.net^$popup +||ppcmate.com^$popup +||ppcnt.co^$popup +||ppcnt.eu^$popup +||ppcnt.us^$popup +||ppcnwt.com^$popup +||ppwpn.com^$popup +||prdredir.com^$popup +||precisejoker.com^$popup +||predictiondexchange.com^$popup +||predictiondisplay.com^$popup +||predictionds.com^$popup +||predictivadnetwork.com^$popup +||predictivadvertising.com^$popup +||predictivdisplay.com^$popup +||premium-members.com^$popup +||press-here-to-continue.com^$popup +||pressyour.com^$popup +||pretrackings.com^$popup +||prfwhite.com^$popup +||prime-vpnet.com^$popup +||prizefrenzy.top^$popup +||prmtracking.com^$popup +||pro-adblocker.com^$popup +||proceedflow.com^$popup +||profitablecpmgate.com^$popup +||profitablecpmratenetwork.com^$popup +||profitableexactly.com^$popup +||profitablegate.com^$popup +||profitablegatecpm.com^$popup +||profitablegatetocontent.com^$popup +||profitabletrustednetwork.com^$popup +||promerycergerful.com^$popup +||promo-bc.com^$popup +||pronovosty.org^$popup +||propadsviews.com^$popup +||propbn.com^$popup +||propellerads.com^$popup +||propellerclick.com^$popup +||propellerpops.com^$popup +||propertyofnews.com^$popup +||protect-your-privacy.net^$popup +||protectflow.life^$popup +||protrckit.com^$popup +||provenpixel.com^$popup +||prpops.com^$popup +||prtord.com^$popup +||prtrackings.com^$popup +||prwave.info^$popup +||psaltauw.net^$popup +||psaugourtauy.com^$popup +||psaussasta.net^$popup +||psauwaun.com^$popup +||psegeevalrat.net^$popup +||psilaurgi.net^$popup +||psma02.com^$popup +||psoabojaksou.net^$popup +||psockapa.net^$popup +||pssy.xyz^$popup +||ptaupsom.com^$popup +||pteemsolrirgegi.com^$popup +||ptistyvymi.com^$popup +||ptoakrok.net^$popup +||ptongouh.net^$popup +||pttraffic.online^$popup +||ptugnins.net^$popup +||ptwmcd.com^$popup +||ptwmjmp.com^$popup +||ptyalinbrattie.com^$popup +||pubdirecte.com^$popup +||publisherads.click^$popup +||pubtrky.com^$popup +||puldhukelpmet.com^$popup +||pulseonclick.com^$popup +||punsong.com^$popup +||pupspu.com^$popup +||pureadexchange.com^$popup +||purpleads.io^$popup +||push-sense.com^$popup +||push1000.top^$popup +||pushclk.com^$popup +||pushking.net^$popup +||pushmobilenews.com^$popup +||pushtorm.net^$popup +||pushub.net^$popup +||pushwelcome.com^$popup +||pussl3.com^$popup +||pussl48.com^$popup +||putchumt.com^$popup +||pvclouds.com^$popup +||q8ntfhfngm.com^$popup +||qertewrt.com^$popup +||qnp16tstw.com^$popup +||qr-captcha.com^$popup +||qualiclicks.com^$popup +||qualitydating.top^$popup +||quickwittedfeedback.pro^$popup +||quilladot.org^$popup +||quixoticzest.com^$popup +||qwikln.com^$popup +||qxdownload.com^$popup +||qz496amxfh87mst.com^$popup +||r3f.technology^$popup +||rallantynethebra.com^$popup +||rankpeers.com^$popup +||raordukinarilyhuk.com^$popup +||raosmeac.net^$popup +||rapidhits.net^$popup +||rapolok.com^$popup +||raunooligais.net^$popup +||rbtfit.com^$popup +||rbxtrk.com^$popup +||rcdn-web.com^$popup +||rdsa2012.com^$popup +||rdsrv.com^$popup +||rdtk.io^$popup +||rdtracer.com^$popup +||readserv.com^$popup +||realcfadsblog.com^$popup +||realsh.xyz^$popup +||realsrv.com^$popup +||realtime-bid.com^$popup +||realxavounow.com^$popup +||reclod.com^$popup +||recompensecombinedlooks.com^$popup +||record.commissionkings.ag^$popup +||record.rizk.com^$popup +||recyclingbees.com^$popup +||red-direct-n.com^$popup +||redaffil.com^$popup +||redirect-ads.com^$popup +||redirect-path1.com^$popup +||redirecting.online^$popup +||redirectingat.com^$popup +||redirectvoluum.com^$popup +||redrotou.net^$popup +||reduau.top^$popup +||redwingmagazine.com^$popup +||reebr.com^$popup +||refpa.top^$popup +||refpa4293501.top^$popup +||refpaikgai.top^$popup +||refpamjeql.top^$popup +||refpasrasw.world^$popup +||refundsreisner.life^$popup +||rehvbghwe.cc^$popup +||rekipion.com^$popup +||rel-s.com^$popup +||relationshipcourseably.com^$popup +||reliablemore.com^$popup +||remembergirl.com^$popup +||reminews.com^$popup +||remv43-rtbix.top^$popup +||rencessedessations.com^$popup +||rentingimmoderatereflecting.com^$popup +||reopenshelly.cfd^$popup +||reroplittrewheck.pro^$popup +||resentreaccotia.com^$popup +||resterent.com^$popup +||restorationbowelsunflower.com^$popup +||retgspondingco.com^$popup +||retrosowenian.shop^$popup +||revenuenetwork.com^$popup +||revimedia.com^$popup +||revmasters.com^$popup,third-party +||rewardtk.com^$popup +||rewqpqa.net^$popup +||rexsrv.com^$popup +||rhinoaffiliates.com^$popup +||rhudsplm.com^$popup +||rhvdsplm.com^$popup +||rhxdsplm.com^$popup +||riftharp.com^$popup +||riverhit.com^$popup +||rm358.com^$popup +||rmaticalacm.info^$popup +||rmhfrtnd.com^$popup +||rmzsglng.com^$popup +||rndhaunteran.com^$popup +||rndskittytor.com^$popup +||roadcontagion.com^$popup +||roastoup.com^$popup +||rochestertrend.com^$popup +||rocketmedia24.com^$popup,third-party +||rocoads.com^$popup +||rolltrk4.com^$popup +||rolltrk9.com^$popup +||romil-jdd.com^$popup +||roobetaffiliates.com^$popup +||roots.baby^$popup +||rootzaffiliates.com^$popup +||rose2919.com^$popup +||roudoduor.com^$popup +||roundflow.net^$popup +||routes.name^$popup +||roverinvolv.bid^$popup +||rovno.xyz^$popup +||royalcactus.com^$popup +||rozamimo9za10.com^$popup +||rsaltsjt.com^$popup +||rsppartners.com^$popup +||rtbbhub.com^$popup +||rtbbpowaq.com^$popup +||rtbix.xyz^$popup +||rtbreachads.com^$popup +||rtbsuperhub.com^$popup +||rtmark.net^$popup +||rtoukfareputfe.info^$popup +||rtyznd.com^$popup +||rubylife.go2cloud.org^$popup +||rudderwebmy.com^$popup +||runtnc.net^$popup +||rvetreyu.net^$popup +||rvrpushserv.com^$popup +||s.id^$popup +||s0cool.net^$popup +||s20dh7e9dh.com^$popup +||s3g6.com^$popup +||safe-connection21.com^$popup +||samage-bility.icu^$popup +||sarcasmadvisor.com^$popup +||sasontnwc.net^$popup +||savinist.com^$popup +||scaredframe.com^$popup +||screenov.site^$popup +||sealthatleak.com^$popup +||searchmulty.com^$popup +||searchsecurer.com^$popup +||seatrackingdomain.com^$popup +||secthatlead.com^$popup +||securecloud-smart.com^$popup +||securecloud-sml.com^$popup +||secureclouddt-cd.com^$popup +||securedsmcd.com^$popup +||securedt-sm.com^$popup +||securegfm.com^$popup +||secureleadsrn.com^$popup +||sedodna.com^$popup +||seethisinaction.com^$popup +||semqraso.net^$popup +||senzapudore.it^$popup,third-party +||seo-overview.com^$popup +||ser678uikl.xyz^$popup +||sereanstanza.com^$popup +||servetean.site^$popup +||servsserverz.com^$popup +||setoinc.com^$popup +||sevenbuzz.com^$popup +||sex-and-flirt.com^$popup +||sexfamilysim.net^$popup +||shakingtacklingunpeeled.com^$popup +||sharpofferlinks.com^$popup +||shaugacakro.net^$popup +||shauladubhe.com^$popup +||shauladubhe.top^$popup +||she-want-fuck.com^$popup +||sheecmimty.net^$popup +||sheegiwo.com^$popup +||sherouscolvered.com^$popup +||shinebliss.com^$popup +||shoagloumtoamir.net^$popup +||shoopusahealth.com^$popup +||shopeasy.by^$popup +||shortpixel.ai^$popup +||shotgunchancecruel.com^$popup +||showcasead.com^$popup +||shuanshu.com.com^$popup +||shuffle.com/*&clickID=$popup +||shulugoo.net^$popup +||signamentswithd.com^$popup +||simple-isl.com^$popup +||singledatetime.com^$popup +||singlesexdates.com^$popup +||singlewomenmeet.com^$popup +||sixft-apart.com^$popup +||skated.co^$popup +||skylindo.com^$popup +||skymobi.agency^$popup +||skyscrapertowel.com^$popup +||slashstar.net^$popup +||slatecharm.co^$popup +||slcuse.com^$popup +||slideff.com^$popup +||slimspots.com^$popup +||sloto.live^$popup +||smallfunnybears.com^$popup +||smart-wp.com^$popup +||smartadtags.com^$popup +||smartcj.com^$popup +||smartcpatrack.com^$popup +||smartmnews.pro^$popup +||smarttds.org^$popup +||smarttopchain.nl^$popup +||smentbrads.info^$popup +||smlypotr.net^$popup +||smrt-content.com^$popup +||snammar-jumntal.com^$popup +||snapcheat16s.com^$popup +||sneakyadministration.com^$popup +||snowdayonline.xyz^$popup +||snugglethesheep.com^$popup +||sobakenchmaphk.com^$popup +||sodefender.pro^$popup +||sofinpushpile.com^$popup +||softonixs.xyz^$popup +||solaranalytics.org^$popup +||soldierreproduceadmiration.com^$popup +||solispartner.com^$popup +||soocaips.com^$popup +||sotchoum.com^$popup +||sousefulhead.com^$popup +||souszhi.com^$popup +||sowve.com^$popup +||spacecatholicpalmful.com^$popup +||spacetraff.com^$popup +||sparkstudios.com^$popup +||sparta-tracking.xyz^$popup +||spdate.com^$popup +||special-offers.online^$popup +||special-promotions.online^$popup +||special-trending-news.com^$popup +||speedsupermarketdonut.com^$popup +||sperans-beactor.com^$popup +||sperebnf.click^$popup +||spicygirlshere.life^$popup +||spin83qr.com^$popup +||spklmis.com^$popup +||sports-tab.com^$popup +||spotofspawn.com^$popup +||spotscenered.info^$popup +||spreadingsinew.com^$popup +||sprinlof.com^$popup +||sptrkr.com^$popup +||spunorientation.com^$popup +||spygenix.xyz^$popup +||sr7pv7n5x.com^$popup +||srtrak.com^$popup +||srv2trking.com^$popup +||srvpcn.com^$popup +||srvqck27.com^$popup +||srvqck3.com^$popup +||srvtrck.com^$popup +||ssteeraa.net^$popup +||staaqwe.com^$popup +||stardomcoit.com^$popup +||starmobmedia.com^$popup +||starry-galaxy.com^$popup +||starsallowyear.com^$popup +||statsmobi.com^$popup +||stawhoph.com^$popup +||steerensout.net^$popup +||stemboastfulrattle.com^$popup +||stenexeb.xyz^$popup +||sthoutte.com^$popup +||stikroltiltoowi.net^$popup +||stimaariraco.info^$popup +||stoorgel.com^$popup +||stop-adblocker.info^$popup +||stopads-now.com^$popup +||stopadzblock.net^$popup +||stopblockads.com^$popup +||storader.com^$popup +||stortla.com^$popup +||storyunicornupper.com^$popup +||stream-all.com^$popup +||streamereasy.click^$popup +||streamsearchclub.com^$popup +||streamyourvid.com^$popup +||strenuoustarget.com^$popup +||strettechoco.com^$popup +||strtgic.com^$popup +||stuffedbeforehand.com^$popup +||stvbiopr.net^$popup +||stvkr.com^$popup +||stvwell.online^$popup +||sudukrirga.net^$popup +||sunflowerbright106.io^$popup +||superadexchange.com^$popup +||superfastcdn.com^$popup +||superfasti.co^$popup +||supersedeforbes.com^$popup +||supremeadblocker.com^$popup +||suptraf.com^$popup +||surge.systems^$popup +||surrogateausteritywhence.com^$popup +||surveyspaid.com^$popup +||swinity.com^$popup +||sxlflt.com^$popup +||synccora.com^$popup +||syncedvision.com^$popup +||synonymdetected.com^$popup +||systeme-business.online^$popup +||systemleadb.com^$popup +||szqxvo.com^$popup +||t2lgo.com^$popup +||taghaugh.com^$popup +||taginova.xyz^$popup +||tagsd.com^$popup +||takecareproduct.com^$popup +||takelnk.com^$popup +||takeyouforward.co^$popup +||tapdb.net^$popup +||targeta41.net^$popup +||targetmatch.co^$popup +||targhe.info^$popup +||taroads.com^$popup +||tatrck.com^$popup +||tbeiu658gftk.com^$popup +||tcare.today^$popup +||teamsoutspoken.com^$popup +||techiteration.com^$popup +||techreviewtech.com^$popup +||tegleebs.com^$popup +||teksishe.net^$popup +||telyn610zoanthropy.com^$popup +||temksrtd.net^$popup +||temperrunnersdale.com^$popup +||tencableplug.com^$popup +||tenlets.com^$popup +||terbit2.com^$popup +||terpenwordman.top^$popup +||tfaln.com^$popup +||thairoob.com^$popup +||thanosofcos5.com^$popup +||thaudray.com^$popup +||the-binary-trader.biz^$popup +||thebestgame2020.com^$popup +||thecarconnections.com^$popup +||theepsie.com^$popup +||theerrortool.com^$popup +||theextensionexpert.com^$popup +||thefacux.com^$popup +||theirbellstudio.co^$popup +||theonesstoodtheirground.com^$popup +||thesafersearch.com^$popup +||thetoptrust.com^$popup +||thinkaction.com^$popup +||thofteert.com^$popup +||thomasalthoughhear.com^$popup +||thouptoorg.com^$popup +||tigerbrluck.com^$popup +||tikva-1.com^$popup +||tilttrk.com^$popup +||tiltwin.com^$popup +||timot-cvk.info^$popup +||tingswifing.click^$popup +||tinsus.com^$popup +||tisaneata.com^$popup +||tjoomo.com^$popup +||tjwsg.com^$popup +||tl2go.com^$popup +||tmb5trk.com^$popup +||tmtrck.com^$popup +||tnctrx.com^$popup +||tnkexchange.com^$popup +||toequiet.website^$popup +||toiletpaper.life^$popup +||tomatoqqamber.click^$popup +||tomladvert.com^$popup +||tomlldahehun.org^$popup +||tomoll.com^$popup +||tonefuse.com^$popup +||tonsilsuggestedtortoise.com^$popup +||toonujoops.net^$popup +||toopsoug.net^$popup +||topblockchainsolutions.nl^$popup +||topclickguru.com^$popup +||topdealad.com^$popup +||topfdeals.com^$popup +||topodat.info^$popup +||toprevenuegate.com^$popup +||toptrendyinc.com^$popup +||torrent-protection.com^$popup +||toscytheran.com^$popup +||totaladblock.com^$popup +||totaladperformance.com^$popup +||totlnkcl.com^$popup +||tourukaustoglee.net^$popup +||toxtren.com^$popup +||tozoruaon.com^$popup +||tpmr.com^$popup +||tr-boost.com^$popup +||tr-bouncer.com^$popup +||tr-monday.xyz^$popup +||tr-rollers.xyz^$popup +||tr-usual.com^$popup +||tracemonitorusa.life^$popup +||track-campaing.club^$popup +||track-victoriadates.com^$popup +||track.totalav.com^$popup +||track4ref.com^$popup +||trackcherry.com^$popup +||trackclicks00.com^$popup +||tracker-2.com^$popup +||tracker-tds.info^$popup +||trackerflw.com^$popup +||trackerrr.com^$popup +||tracking-aws-5.com^$popup +||trackingtraffo.com^$popup +||trackmundo.com^$popup +||tracks20.com^$popup +||tracksfaster.com^$popup +||trackstracker.com^$popup +||tracktds.com^$popup +||tracktilldeath.club^$popup +||trackwilltrk.com^$popup +||tracot.com^$popup +||tradeadexchange.com^$popup +||traffic-c.com^$popup +||trafficbass.com^$popup +||trafficborder.com^$popup +||trafficdecisions.com^$popup +||trafficdok.com^$popup +||trafficforce.com^$popup +||traffichaus.com^$popup +||trafficholder.com^$popup +||traffichunt.com^$popup +||trafficinvest.com^$popup +||trafficlide.com^$popup +||trafficmagnates.com^$popup +||trafficmoon.com^$popup +||trafficmoose.com^$popup +||trafforsrv.com^$popup +||traffrout.com^$popup +||trafyield.com^$popup +||trakaff.net^$popup +||traktortds.com^$popup +||trasupr.com^$popup +||trck.wargaming.net^$popup +||trcklks.com^$popup +||trckswrm.com^$popup +||trellian.com^$popup +||trentbereal.com^$popup +||trftopp.biz^$popup +||trigsfrisky.shop^$popup +||trilema.com^$popup +||trk-access.com^$popup +||trk-vod.com^$popup +||trk301.com^$popup +||trkbng.com^$popup +||trkings.com^$popup +||trkless.com^$popup +||trklnks.com^$popup +||trknk.com^$popup +||trknovi.com^$popup +||trksmorestreacking.com^$popup +||trmobc.com^$popup +||troopsassistedstupidity.com^$popup +||trpool.org^$popup +||trustedcpmrevenue.com^$popup +||trustedgatetocontent.com^$popup +||trustedpeach.com^$popup +||trustedzone.info^$popup +||trustyable.com^$popup +||trustzonevpn.info^$popup +||truthtraff.com^$popup +||trw12.com^$popup +||try.opera.com^$popup +||tsml.fun^$popup +||tsyndicate.com^$popup +||ttoc8ok.com^$popup +||tubeadvertising.eu^$popup +||tubecup.net^$popup +||tubroaffs.org^$popup +||tuffoonincaged.com^$popup +||tundrafolder.com^$popup +||turndynamicforbes.com^$popup +||turnhub.net^$popup +||turnstileunavailablesite.com^$popup +||tutvp.com^$popup +||tvas-b.pw^$popup +||twigwisp.com^$popup +||twinfill.com^$popup +||twinkle-fun.net^$popup +||twinrdengine.com^$popup +||twinrdsrv.com^$popup +||twinrdsyn.com^$popup +||twinrdsyte.com^$popup +||txzaazmdhtw.com^$popup +||tychon.bid^$popup +||typical-hub.com^$popup +||tyqwjh23d.com^$popup +||tyrotation.com^$popup +||tyserving.com^$popup +||tzaqkp.com^$popup +||tzvpn.site^$popup +||ubilinkbin.com^$popup +||uel-uel-fie.com^$popup +||ufpcdn.com^$popup +||ugroocuw.net^$popup +||uhpdsplo.com^$popup +||uilts.com^$popup +||uitopadxdy.com^$popup +||ukoffzeh.com^$popup +||ultimate-captcha.com^$popup +||ultracdn.top^$popup +||ultrapartners.com^$popup +||unblockedapi.com^$popup +||uncernedasesiumw.org^$popup +||unclesnewspaper.com^$popup +||unicornpride123.com^$popup +||unreshiramor.com^$popup +||untimburra.com^$popup +||unwoobater.com^$popup +||updateenow.com^$popup +||updatephone.club^$popup +||upgiveunsteps.shop^$popup +||upgliscorom.com^$popup +||uponomanytetor.com^$popup +||uptimecdn.com^$popup +||uptopopunder.com^$popup +||upuplet.net^$popup +||upuplets.com^$popup +||urtyert.com^$popup +||usheebainaut.com^$popup +||usingageghoaft.net^$popup +||utarget.ru^$popup +||uthorner.info^$popup +||utlservice.com^$popup +||utm-campaign.com^$popup +||utopicmobile.com^$popup +||v6rxv5coo5.com^$popup +||vaatmetu.net^$popup +||vague-key.com^$popup +||vaitotoo.net^$popup +||vasstycom.com^$popup +||vasteeds.net^$popup +||vax-now.com^$popup +||vbnmsilenitmanby.info^$popup +||vcdc.com^$popup +||vcommission.com^$popup +||vebv8me7q.com^$popup +||velocitycdn.com^$popup +||vengeful-egg.com^$popup +||venturead.com^$popup +||verooperofthewo.com^$popup +||vertoz.com^$popup +||vespymedia.com^$popup +||vfghc.com^$popup +||vfgtb.com^$popup +||vfgte.com^$popup +||vfgtg.com^$popup +||viapawniarda.com^$popup +||viatechonline.com^$popup +||viatepigan.com^$popup +||victoryslam.com^$popup +||videocampaign.co^$popup +||viewlnk.com^$popup +||vigorouslymicrophone.com^$popup +||viiadaof.com^$popup +||viiczfvm.com^$popup +||viidsyej.com^$popup +||viijxyqp.com^$popup +||viikuhhs.com^$popup +||viiyxefb.com^$popup +||vilytaku.com^$popup +||vinstigo.com^$popup +||viralnewsbd.xyz^$popup +||virelon.com^$popup +||visit-website.com^$popup +||visitstats.com^$popup +||vizoalygrenn.com^$popup +||vkcdnservice.com^$popup +||vkgtrack.com^$popup +||vodobyve.pro^$popup +||vokut.com^$popup +||volform.online^$popup +||volumntime.com^$popup +||voluumtrk.com^$popup +||voluumtrk3.com^$popup +||voruftuiov.com^$popup +||vpn-offers.org^$popup +||vpnoffers.cc^$popup +||vprtrfc.com^$popup +||vq4b0q.fun^$popup +||vs3.com^$popup +||vtabnalp.net^$popup +||w0we.com^$popup +||wahoha.com^$popup +||waisheph.com^$popup +||walter-larence.com^$popup +||wantatop.com^$popup +||wargaming-aff.com^$popup +||wasqimet.net^$popup +||watchadsfree.com^$popup +||watchcpm.com^$popup +||watchvideoplayer.com^$popup +||waufooke.com^$popup +||wbamedia.com^$popup +||wbidder.online^$popup +||wbidder2.com^$popup +||wbidder3.com^$popup +||wbilvnmool.com^$popup +||wboux.com^$popup +||wct.link^$popup +||we-offer.com^$popup +||weaveradrenaline.com^$popup +||web-adblocker.com^$popup +||web-guardian.xyz^$popup +||webatam.com^$popup +||webgains.com^$popup +||webmedrtb.com^$popup +||webpuppweb.com^$popup +||wecouldle.com^$popup +||weezoptez.net^$popup +||welcomeneat.pro^$popup +||welfarefit.com^$popup +||wellhello.com^$popup +||wendelstein-1b.com^$popup +||westcoa.com^$popup +||wetrackgames.com^$popup +||wewearegogogo.com^$popup +||wfredir.net^$popup +||wg-aff.com^$popup +||wgpartner.com^$popup +||whairtoa.com^$popup +||whatisuptodaynow.com^$popup +||wheceelt.net^$popup +||wheebsadree.com^$popup +||whensewing.com^$popup +||wherevertogo.com^$popup +||whirlwindofnews.com^$popup +||whitenoisenews.com^$popup +||whitepark9.com^$popup +||whoucheehy.net^$popup +||whouphesaussums.net^$popup +||whoursie.com^$popup +||whulsaux.com^$popup +||widow5blackfr.com^$popup +||wifescamara.click^$popup +||wigetmedia.com^$popup +||winnersofvouchers.com^$popup +||wintrck.com^$popup +||witalfieldt.com^$popup +||witnessjacket.com^$popup +||wizslots.com*&utm_campaign=$popup +||wlafx4trk.com^$popup +||wmptengate.com^$popup +||wmtten.com^$popup +||wnt-s0me-push.net^$popup +||woafoame.net^$popup +||woevr.com^$popup +||woffxxx.com^$popup +||wolsretet.net^$popup +||wonder.xhamster.com^$popup +||workback.net^$popup +||wovensur.com^$popup +||wowshortvideos.com^$popup +||wpnetwork.eu^$popup +||wriestunvote.com^$popup +||wuujae.com^$popup +||wwija.com^$popup +||wwwpromoter.com^$popup +||wxhiojortldjyegtkx.bid^$popup +||x2tsa.com^$popup +||x3os.com^$popup +||x7i0.com^$popup +||xadsmart.com^$popup +||xarvilo.com^$popup +||xaxoro.com^$popup +||xbidflare.com^$popup +||xliirdr.com^$popup +||xlirdr.com^$popup +||xlivrdr.com^$popup +||xlviiirdr.com^$popup +||xlviirdr.com^$popup +||xlx1.com^$popup +||xml-api.online^$popup +||xmlrtb.com^$popup +||xpvv0rkn.fun^$popup +||xszpuvwr7.com^$popup +||xtendmedia.com^$popup +||xxxvjmp.com^$popup +||y1jxiqds7v.com^$popup +||yavli.com^$popup +||ybb-network.com^$popup +||ybbserver.com^$popup +||yeesshh.com^$popup +||yellowbahama.com^$popup +||yhbcii.com^$popup +||yieldtraffic.com^$popup +||ylih6ftygq7.com^$popup +||yonbearticor.com^$popup +||yonsandileer.com^$popup +||your-sugar-girls.com^$popup +||youradexchange.com^$popup +||ysesials.net^$popup +||yukclick.me^$popup +||z5x.net^$popup +||zedo.com^$popup +||zeechoog.net^$popup +||zeepartners.com^$popup +||zenaps.com^$popup +||zendplace.pro^$popup +||zeroredirect1.com^$popup +||zetaframes.com^$popup +||zikroarg.com^$popup +||zirdough.net^$popup +||zlink1.com^$popup +||zlink2.com^$popup +||zlink6.com^$popup +||zlink8.com^$popup +||zlink9.com^$popup +||zlinkb.com^$popup +||zlinkm.com^$popup +||zog.link^$popup +||zonupiza.com^$popup +||zrlqm.com^$popup +||zryydi.com^$popup +||zunsoach.com^$popup +||zwqzxh.com^$popup +||zybrdr.com^$popup +! IP addresses +||130.211.$popup,third-party,domain=~in-addr.arpa +||142.91.$popup,third-party,domain=~in-addr.arpa +||142.91.159.$popup +||142.91.159.107^$popup +||142.91.159.127^$popup +||142.91.159.136^$popup +||142.91.159.139^$popup +||142.91.159.146^$popup +||142.91.159.147^$popup +||142.91.159.164^$popup +||142.91.159.169^$popup +||142.91.159.179^$popup +||142.91.159.220^$popup +||142.91.159.223^$popup +||142.91.159.244^$popup +||143.244.184.39^$popup +||146.59.223.83^$popup +||157.90.183.248^$popup +||158.247.208.$popup +||158.247.208.115^$popup +||167.71.252.38^$popup +||172.255.6.$popup,third-party,domain=~in-addr.arpa +||172.255.6.135^$popup +||172.255.6.137^$popup +||172.255.6.139^$popup +||172.255.6.150^$popup +||172.255.6.152^$popup +||172.255.6.199^$popup +||172.255.6.217^$popup +||172.255.6.228^$popup +||172.255.6.248^$popup +||172.255.6.254^$popup +||172.255.6.2^$popup +||172.255.6.59^$popup +||176.31.68.242^$popup +||185.147.34.126^$popup +||188.42.84.110^$popup +||188.42.84.159^$popup +||188.42.84.160^$popup +||188.42.84.162^$popup +||188.42.84.199^$popup +||188.42.84.21^$popup +||188.42.84.23^$popup +||203.195.121.$popup +||203.195.121.0^$popup +||203.195.121.103^$popup +||203.195.121.119^$popup +||203.195.121.134^$popup +||203.195.121.184^$popup +||203.195.121.195^$popup +||203.195.121.209^$popup +||203.195.121.217^$popup +||203.195.121.219^$popup +||203.195.121.224^$popup +||203.195.121.229^$popup +||203.195.121.24^$popup +||203.195.121.28^$popup +||203.195.121.29^$popup +||203.195.121.34^$popup +||203.195.121.36^$popup +||203.195.121.40^$popup +||203.195.121.70^$popup +||203.195.121.72^$popup +||203.195.121.73^$popup +||203.195.121.74^$popup +||212.117.186.252^$popup +||216.21.13.$popup,domain=~in-addr.arpa +||23.109.121.254^$popup +||23.109.150.101^$popup +||23.109.150.208^$popup +||23.109.170.198^$popup +||23.109.170.19^$popup +||23.109.170.228^$popup +||23.109.170.241^$popup +||23.109.170.255^$popup +||23.109.170.60^$popup +||23.109.248.$popup +||23.109.248.129^$popup +||23.109.248.130^$popup +||23.109.248.135^$popup +||23.109.248.139^$popup +||23.109.248.149^$popup +||23.109.248.14^$popup +||23.109.248.174^$popup +||23.109.248.183^$popup +||23.109.248.247^$popup +||23.109.248.29^$popup +||23.109.82.$popup +||23.109.82.104^$popup +||23.109.82.119^$popup +||23.109.82.173^$popup +||23.109.82.44^$popup +||23.109.82.74^$popup +||23.109.87.$popup +||23.109.87.101^$popup +||23.109.87.118^$popup +||23.109.87.123^$popup +||23.109.87.127^$popup +||23.109.87.139^$popup +||23.109.87.14^$popup +||23.109.87.15^$popup +||23.109.87.182^$popup +||23.109.87.192^$popup +||23.109.87.213^$popup +||23.109.87.217^$popup +||23.109.87.42^$popup +||23.109.87.47^$popup +||23.109.87.71^$popup +||23.109.87.74^$popup +||23.83.67.164^$popup +||34.102.137.201^$popup +||35.227.234.222^$popup +||35.232.188.118^$popup +||37.1.213.100^$popup +||5.45.79.15^$popup +||5.61.55.143^$popup +||51.178.195.171^$popup +||51.195.115.102^$popup +||51.89.115.13^$popup +||88.42.84.136^$popup +! IP Regex (commonly used, hax'd IP addresses) +/^https?:\/\/(35|104)\.(\d){1,3}\.(\d){1,3}\.(\d){1,3}\//$popup,third-party +! http://146.59.211.227/tsc/Zx0bagrCjuxP +/^https?:\/\/146\.59\.211\.(\d){1,3}.*/$popup,third-party + +! *** easylist:easylist_adult/adult_adservers.txt *** +||18naked.com^$third-party +||4link.it^$third-party +||777-partner.com^$third-party +||777-partner.net^$third-party +||777-partners.com^$third-party +||777-partners.net^$third-party +||777partner.com^$script,third-party +||777partner.net^$third-party +||777partners.com^$third-party +||acmexxx.com^$third-party +||adcell.de^$third-party +||adextrem.com^$third-party +||ads-adv.top^$third-party +||adsarcade.com^$third-party +||adsession.com^$third-party +||adshnk.com^$third-party +||adspector.io^$third-party +||adsturn.com^$third-party +||adult3dcomics.com^$third-party +||adultforce.com^$third-party +||adultsense.com^$third-party +||aemediatraffic.com^$third-party +||affiliaxe.com^$third-party +||affiligay.net^$third-party +||aipmedia.com^$third-party +||allosponsor.com^$third-party +||amateurhub.cam^$third-party +||asiafriendfinder.com^$third-party +||avfay.com^$third-party +||awempire.com^$third-party +||bcash4you.com^$third-party +||blackpics.net^$third-party +||blossoms.com^$third-party +||bookofsex.com^$third-party +||brothersincash.com^$third-party +||bumskontakte.ch^$third-party +||caltat.com^$third-party +||cam-lolita.net^$third-party +||cam4flat.com^$third-party +||camcrush.com^$third-party +||camdough.com^$third-party +||camduty.com^$third-party +||campartner.com^$third-party +||camsense.com^$third-party +||camsoda1.com^$third-party +||cashthat.com^$third-party +||cbmiocw.com^$third-party +||chatinator.com^$third-party +||cherrytv.media^$third-party +||clickaine.com^$third-party +||cross-system.com^$script,third-party +||cwchmb.com^ +||cybernetentertainment.com^$third-party +||datingamateurs.com^$third-party +||debitcrebit669.com^$third-party +||deecash.com^$third-party +||demanier.com^$third-party +||digitaldesire.com^$third-party +||digreality.com^$third-party +||directadvert.ru^$third-party +||direction-x.com^$third-party +||dphunters.com^$third-party +||dreamserve.dev^$third-party +||dtiserv2.com^$third-party +||easyflirt.com^$third-party +||eroadvertising.com^$third-party +||erotikdating.com^$third-party +||euro4ads.de^$third-party +||exchangecash.de^$third-party +||exclusivepussy.com^$third-party +||exoticads.com^$third-party +||faceporn.com^$third-party +||facetz.net^$third-party +||fapality.com^$third-party +||festaporno.com^$third-party +||filexan.com^$third-party +||flashadtools.com^$third-party +||fleshcash.com^$third-party +||fleshlightgirls.com^$third-party +||flirt4e.com^$third-party +||flirt4free.com^$third-party +||flirtingsms.com^$third-party +||fncash.com^$third-party +||fncnet1.com^$third-party +||freakads.com^$third-party +||freeadultcomix.com^$third-party +||freewebfonts.org^$third-party +||frestacero.com^$third-party +||frivol-ads.com^$third-party +||frtyh.com^$third-party +||frutrun.com^$third-party +||fuckbook.cm^$third-party +||fuckbookdating.com^$third-party +||fuckedbyme.com^$third-party +||fuckyoucash.com^$third-party +||fuelbuck.com^$third-party +||g--o.info^$third-party +||gayxperience.com^$third-party +||geofamily.ru^$third-party +||getiton.com^$third-party +||ggwcash.com^$third-party +||golderotica.com^$third-party +||hookupbucks.com^$third-party +||hornymatches.com^$third-party +||hornyspots.com^$third-party +||hostave2.net^$third-party +||hotsocials.com^$third-party +||hubtraffic.com^$third-party +||icebns.com^$third-party +||idolbucks.com^$third-party +||ifrwam.com^$third-party +||iheartbucks.com^$third-party +||ilovecheating.com^$third-party +||imglnka.com^$third-party +||imglnkb.com^$third-party +||imglnkc.com^$third-party +||imlive.com^$script,third-party,domain=~imnude.com +||impressionmonster.com^$third-party +||in3x.net^$third-party +||inheart.ru^$third-party +||internebula.net^$third-party +||intrapromotion.com^$third-party +||itmcash.com^$third-party +||itrxx.com^$third-party +||itslive.com^$third-party +||itspsmup.com^$third-party +||itsup.com^$third-party +||itw.me^$third-party +||iwanttodeliver.com^$third-party +||ixspublic.com^$third-party +||javbucks.com^$third-party +||javhd-trk.com^$third-party +||joyourself.com^$third-party +||kadam.ru^$third-party +||kaplay.com^$third-party +||kcolbda.com^$third-party +||kinkadservercdn.com^ +||kugo.cc^$third-party +||leche69.com^$third-party +||lickbylick.com^$third-party +||lifepromo.biz^$third-party +||livecam.com^$third-party +||livejasmin.tv^$third-party +||liveprivates.com^$third-party +||livepromotools.com^$third-party +||livexxx.me^$third-party +||lovecam.com.br^$third-party +||lovercash.com^$third-party +||lsawards.com^$third-party +||lucidcommerce.com^$third-party +||mallcom.com^$third-party +||marisappear.pro^$third-party +||markswebcams.com^$third-party +||masterwanker.com^$third-party +||matrimoniale3x.ro^$third-party +||matrix-cash.com^$third-party +||maxiadv.com^$third-party +||mc-nudes.com^$third-party +||mcprofits.com^$third-party +||media-click.ru^$third-party +||mediad2.jp^$third-party +||mediumpimpin.com^$third-party +||meineserver.com^$third-party +||meta4-group.com^$third-party +||methodcash.com^$third-party +||mileporn.com^$third-party +||mmaaxx.com^$third-party +||mobalives.com^$third-party +||mobilerevenu.com^$third-party +||mobtop.ru^$third-party +||modelsgonebad.com^$third-party +||morehitserver.com^$third-party +||mrporngeek.com^$third-party +||mrskincash.com^$third-party +||mtree.com^$third-party +||mxpopad.com^$third-party +||myadultimpressions.com^$third-party +||myprecisionads.com^$third-party +||mywebclick.net^$third-party +||naiadexports.com^$third-party +||nastydollars.com^$third-party +||newads.bangbros.com^$third-party +||newagerevenue.com^$third-party +||newnudecash.com^$third-party +||nexxxt.biz^$third-party +||ngbn.net^$third-party +||ningme.ru^$third-party +||nscash.com^$third-party +||nudedworld.com^$third-party +||oconner.biz^$third-party +||offaces-butional.com^$third-party +||omynews.net^$third-party +||onhercam.com^$third-party +||onlineporno.fun^$third-party +||otaserve.net^$third-party +||otherprofit.com^$third-party +||outster.com^$third-party +||oxcluster.com^$third-party +||ozelmedikal.com^$third-party +||partnercash.com^$third-party +||partnercash.de^$third-party +||pc20160522.com^$third-party +||pecash.com^$third-party +||pennynetwork.com^$third-party +||pepipo.com^$third-party +||pictureturn.com^$third-party +||pkeeper3.ru^$third-party +||plugrush.com^$third-party +||popander.com^$third-party +||popupclick.ru^$third-party +||porn300.com^$third-party +||porn99.net^$third-party +||pornattitude.com^$third-party +||pornconversions.com^$third-party +||porndroids.com^$third-party +||pornearn.com^$third-party +||pornglee.com^$third-party +||porngray.com^$third-party +||pornkings.com^$third-party +||pornleep.com^$third-party +||porntrack.com^$third-party +||porntry.com^$third-party +||pourmajeurs.com^$third-party +||ppc-direct.com^$third-party +||premiumhdv.com^$third-party +||privacyprotector.com^$third-party +||private4.com^$third-party +||privateseiten.net^$third-party +||privatewebseiten.com^$third-party +||program3.com^$third-party +||promo4partners.com^$third-party +||promocionesweb.com^$third-party +||promokrot.com^$third-party +||promotools.biz^$third-party +||promowebstar.com^$third-party +||propbn.com^$third-party +||protect-x.com^$third-party +||protizer.ru^$third-party +||prscripts.com^$third-party +||psma01.com^$third-party +||psma03.com^$third-party +||ptclassic.com^$third-party +||ptwebcams.com^$third-party +||pussy-pics.net^$third-party +||pussyeatingclub.com^$third-party +||quantumws.net^$third-party +||qwerty24.net^$third-party +||rack-media.com^$third-party +||ragazzeinvendita.com^$third-party +||rareru.ru^$third-party +||rdiul.com^$third-party +||realitycash.com^$third-party +||realitytraffic.com^$third-party +||red-bees.com^$third-party +||redlightcenter.com^$third-party +||redpineapplemedia.com^$third-party +||reliablebanners.com^$third-party +||rivcash.com^$third-party +||royal-cash.com^$third-party +||rubanners.com^$third-party +||runetki.com^$third-party +||russianlovematch.com^$third-party +||safelinktracker.com^$third-party +||sancdn.net^$third-party +||searchpeack.com^$third-party +||secretbehindporn.com^$third-party +||seekbang.com^$third-party +||sehiba.com^$third-party +||seitentipp.com^$third-party +||sexad.net^$third-party +||sexdatecash.com^$third-party +||sexiba.com^$third-party +||sexlist.com^$third-party +||sexplaycam.com^$third-party +||sexsearch.com^$third-party +||sextadate.net^$third-party +||sextracker.com^$third-party +||sexuhot.com^$third-party +||sexvertise.com^$third-party +||sexy-ch.com^$third-party +||showmeyouradsnow.com^$third-party +||siccash.com^$third-party +||sixsigmatraffic.com^$third-party +||smartbn.ru^$third-party +||smartclick.net^$third-party +||smopy.com^$third-party +||socialsexnetwork.net^$third-party +||solutionsadultes.com^$third-party +||souvlatraffic.com^$third-party +||spacash.com^$third-party +||spankmasters.com^$third-party +||spunkycash.com^$third-party +||startwebpromo.com^$third-party +||statserv.net^$third-party +||steamtraffic.com^$third-party +||streamateaccess.com^$third-party +||stripsaver.com^$third-party +||sultrytraffic.com^$third-party +||supuv3.com^$third-party +||sv2.biz^$third-party +||sweetmedia.org^$third-party +||sweetstudents.com^$third-party +||tantoporno.com^$third-party +||targetingnow.com^$third-party +||teasernet.ru^$third-party +||test1productions.com^$third-party +||the-adult-company.com^$third-party +||thesocialsexnetwork.com^$third-party +||tm-core.net^$third-party +||tmserver-1.com^$third-party +||tmserver-2.net^$third-party +||tophosting101.com^$third-party +||topsexcams.club^$third-party +||tossoffads.com^$third-party +||traffbiz.ru^$third-party +||traffic.ru^$third-party +||trafficholder.com^$third-party +||trafficmagnates.com^$third-party +||trafficman.io^$third-party +||trafficpimps.com^$third-party +||trafficstars.com^$third-party +||trafficundercontrol.com^$third-party +||trfpump.com^$third-party +||trickyseduction.com^$third-party +||trunblock.com^$third-party +||trw12.com^$third-party +||tubeadnetwork.com^$third-party +||tubeadv.com^$third-party +||tubecorporate.com^$third-party +||twistyscash.com^$third-party +||verticalaffiliation.com^$third-party +||vfgta.com^$third-party +||vghd.com^$third-party +||vid123.net^$third-party +||vidsrev.com^$third-party +||viensvoircesite.com^$third-party +||virtuagirlhd.com^$third-party +||vividcash.com^$third-party +||vlexokrako.com^$third-party +||vlogexpert.com^$third-party +||vod-cash.com^$third-party +||vogozae.ru^$third-party +||voyeurhit.com^$third-party +||vrstage.com^$third-party +||vsexshop.ru^$third-party +||w4vecl1cks.com^$third-party +||wamcash.com^$third-party +||wantatop.com^$third-party +||watchmygf.to^$third-party +||wct.click^$third-party +||wifelovers.com^$third-party +||worldsbestcams.com^$third-party +||xgogi.com^$third-party +||xhamstercams.com^$third-party +||xlovecam.com^$third-party +||xogogowebcams.com^$third-party +||xxxblackbook.com^$third-party +||xxxmatch.com^$third-party +||yourdatelink.com^$third-party +||yurivideo.com^$third-party + +! *** easylist:easylist_adult/adult_adservers_popup.txt *** +||1lzz.com^$popup +||1ts11.top^$popup +||access-the-website.com^$popup +||adextrem.com^$popup +||banners.cams.com^$popup +||c4tracking01.com^$popup +||chokertraffic.com^$popup +||cityofsin3d.com^$popup +||ckrf1.com^$popup +||cooch.tv^$popup,third-party +||crdefault2.com^$popup +||crentexgate.com^$popup +||crlcw.link^$popup +||crptentry.com^$popup +||crptgate.com^$popup +||date-for-more.com^$popup +||datingshall.life^$popup +||datoporn.com^$popup +||desklks.com^$popup +||dirty-messenger.com^$popup +||dirty-tinder.com^$popup +||ero-advertising.com^$popup +||eroge.com^$popup +||flagads.net^$popup +||fpctraffic2.com^$popup +||freecamsexposed.com^$popup +||freewebcams.com^$popup,third-party +||friendfinder.com^$popup +||frtyi.com^$popup +||funkydaters.com^$popup +||get-partner.life^$popup +||girls.xyz^$popup +||global-trk.com^$popup +||go.nsfwlivechat.com^$popup +||grtyv.com^$popup +||hkl4h1trk.com^$popup +||hornymatches.com^$popup,third-party +||hpyrdr.com^$popup +||hrtya.com^$popup +||indianfriendfinder.com^$popup +||jizzy.org^$popup +||jsmjmp.com^$popup +||mptentry.com^$popup +||needlive.com^$popup +||notimoti.com^$popup +||nyetm2mkch.com^$popup +||otieu.com^$popup +||passtechusa.com^$popup +||playgirl.com^$popup +||poweredbyliquidfire.mobi^$popup +||prodtraff.com^$popup +||quadrinhoseroticos.net^$popup +||rdvinfidele.club^$popup +||reporo.net^$popup +||restions-planted.com^$popup +||reviewdollars.com^$popup +||setravieso.com^$popup +||sexad.net^$popup +||sexemulator.com^$popup +||sexflirtbook.com^$popup +||sexintheuk.com^$popup +||sexmotors.com^$popup,third-party +||socialsex.biz^$popup +||socialsex.com^$popup +||targetingnow.com^$popup +||trackvoluum.com^$popup +||traffic.club^$popup +||trafficbroker.com^$popup +||trafficstars.com^$popup +||trkbc.com^$popup +||viensvoircesite.com^$popup +||vlexokrako.com^$popup +||xdtraffic.com^$popup +||xmatch.com^$popup +||xpeeps.com^$popup,third-party +||xxxjmp.com^$popup +||xxxmatch.com^$popup +||zononi.com^$popup +!-----------------------------Third-party adverts-----------------------------! +! *** easylist:easylist/easylist_thirdparty.txt *** +||000webhost.com/images/banners/ +||1080872514.rsc.cdn77.org^ +||1187531871.rsc.cdn77.org^ +||1208344341.rsc.cdn77.org^ +||123-stream.org^ +||1437953666.rsc.cdn77.org^ +||1529462937.rsc.cdn77.org^ +||1548164934.rsc.cdn77.org^ +||1675450967.rsc.cdn77.org^ +||1wincdn.b-cdn.net^ +||1winpb.com^ +||360playvid.com^$third-party +||360playvid.info^$third-party +||a-delivery.rmbl.ws^ +||a.bids.ws^ +||a.blendernation.com^ +||a.omappapi.com^ +||a.spolecznosci.net/pet? +||a.ucoz.net^ +||a1.consoletarget.com^ +||a2.consoletarget.com^ +||ad-serve.b-cdn.net^ +||ad.22betpartners.com^ +||ad.about.co.kr^ +||ad.bitmedia.io^ +||ad.edugram.com^ +||ad.mail.ru/static/admanhtml/ +||ad.mail.ru^$~image,domain=~mail.ru|~sportmail.ru +||ad.mediamixer.co.kr^ +||ad.missena.io^ +||ad.moe.video^ +||ad.netmedia.hu^ +||ad.tpmn.co.kr^ +||ad.video-mech.ru^ +||ad.wsod.com^ +||ad01.tmgrup.com.tr^ +||adblockeromega.com^ +||adcheck.about.co.kr^ +||addefenderplus.info^ +||adfoc.us^$script,third-party +||adinplay-venatus.workers.dev^ +||adncdnend.azureedge.net^ +||adquire.us.cdn-world.net^ +||ads-api.production.nebula-drupal.stuff.co.nz^ +||ads-partners.coupang.com^ +||ads-yallo-production.imgix.net^ +||ads.betfair.com^ +||ads.funmora.com^ +||ads.kelkoo.com^ +||ads.linkedin.com^ +||ads.saymedia.com^ +||ads.scored.co^ +||ads.servebom.com^ +||ads.sportradar.com^ +||ads.travelaudience.com^ +||ads.viralize.tv^ +||ads.yahoo.com^$~image +||ads2.hsoub.com^ +||adsales.snidigital.com^ +||adsbyt1.titus.one^ +||adsdk.bing.net^ +||adsdk.microsoft.com^ +||adserving.unibet.com^ +||adsinteractive-794b.kxcdn.com^ +||adtechvideo.s3.amazonaws.com^ +||advast.sibnet.ru^ +||adx-exchange.toast.com^ +||adx.fulcrum.com.fj^ +||adx.opera.com^ +||aff.bstatic.com^ +||affiliate-cdn.raptive.com^$third-party +||affiliate.heureka.cz^ +||affiliate.juno.co.uk^ +||affiliate.mediatemple.net^ +||affiliatepluginintegration.cj.com^ +||afl.fulla.bet^ +||afternic.com/v1/aftermarket/landers/ +||ah.pricegrabber.com^ +||akamaized.net/mr/popunder.js +||alarmsportsnetwork.com^$third-party +||allprivatekeys.com/static/banners/$third-party +||allsportsflix. +||amateur.tv/cacheableContent/GetWContentV3/device/pc/target/normal/contentKey/affbmr/ +||amazonaws.com/campaigns-ad/ +||amazonaws.com/mailcache.appinthestore.com/ +||an.yandex.ru^$domain=~e.mail.ru +||analytics.analytics-egain.com^ +||anigo.to^$third-party +||answers.sg/embed/ +||any.gs/visitScript/ +||aoneroom.com/wefeed-h5-bff/ad/$xmlhttprequest +||aoneroom.com/wefeed-h5api-bff/ad/ +||api-player.globalsun.io/api/publishers/player/content?category_id=*&adserver_id=$xmlhttprequest +||api.140proof.com^ +||api.bitp.it^ +||api.bo3.gg/api/v1/ad_baners +||api.mintfunnel.co^ +||app.koah.ai^ +||apps.fourthwall.app^$third-party +||arkadiumhosted.com/advertisement/ +||aspencore.com/syndication/v3/partnered-content/ +||assets.everlit.audio/assets/lib/ad_manager- +||assets.sheetmusicplus.com^$third-party +||audioad.zenomedia.com^ +||autodealer.co.za/inc/widget/ +||autotrader.ca/result/AutosAvailableListings.aspx? +||autotrader.co.za/partners/ +||award.sitekeuring.net^ +||awin1.com/cawshow.php$third-party +||awin1.com/cshow.php$third-party +||axm.am/am.ads.js +||azureedge.net/adtags/ +||b.marfeelcache.com/statics/marfeel/gardac-sync.js +||bankrate.com/jsfeeds/ +||banners.livepartners.com^ +||bc.coupons.com^ +||bc.vc/js/link-converter.js +||bctt.igaming-service.io^ +||beauties-of-ukraine.com/export.js +||beehiiv.com^*/ad_network/ +||bescore.com/libs/e.js +||bescore.com/load? +||bet365.com/favicon.ico$third-party +||betclever.com/wp-admin/admin-ajax.php?action=coupons_widget_iframe&id=$third-party +||bharatmatrimony.com/matrimoney/matrimoneybanners/ +||bhphoto.com/ezbanner/ +||bidder.criteo.com^ +||bidder.newspassid.com^ +||bidorbuy.co.za/jsp/tradesearch/TradeFeedPreview.jsp? +||bids.concert.io^ +||bigrock.in/affiliate/ +||billing.roofnrack.us^ +||bit.ly^$image,domain=tooxclusive.com +||bit.ly^$script,domain=dailyuploads.net|freeshot.live +||bitbond.com/affiliate-program/ +||bitent.com/lock_html5/adscontrol.js +||bl.wavecdn.de^ +||blacklistednews.com/contentrotator/ +||blogatus.com/images/banner/$third-party +||bluehost-cdn.com/media/partner/images/ +||bluehost.com/track/ +||bluehost.com/web-hosting/domaincheckapi/?affiliate= +||bluepromocode.com/images/widgets/ +||blufm.de/pr/$third-party +||bookingdragon.com^$subdocument,third-party +||bs-adserver.b-cdn.net^ +||btguard.com/images/ +||btr.domywife.com^ +||bunkr.si/lazyhungrilyheadlicks.js +||bunkrr.su/lazyhungrilyheadlicks.js +||c.bannerflow.net^ +||c.bigcomics.bid^ +||c.j8jp.com^ +||c.kkraw.com^ +||c2shb.pubgw.yahoo.com^ +||cache.myth.dev^ +||caffeine.tv/embed/$third-party +||campaigns.williamhill.com^ +||capital.com/widgets/$third-party +||careerwebsite.com/distrib_pages/jobs.cfm? +||carfax.com/img_myap/ +||cas.*.criteo.com^ +||cdn-academy.akamaized.net/letras/ads/ +||cdn.ad.page^ +||cdn.b2.ai^$third-party +||cdn.biff.travel^ +||cdn.csyndication.com^ +||cdn.makemula.ai/js/mula.js +||cdn.neighbourly.co.nz/widget/$subdocument +||cdn.statically.io/gh/ad-shield/ +||cdn.thrad.ai^ +||cdn.vaughnsoft.net/abvs/ +||cdn.viously.com/js/sdk/boot.js +||cdn.yeahwebimobi.fun/r6.png +||cdn22904910.ahacdn.me^ +||cdn4.life/media/ +||cdn54405831.ahacdn.me^ +||cdn83753766.ahacdn.me^ +||cdnaz.win/pop-ad.js +||cdnpub.info^$subdocument,third-party,domain=~iqbroker.co|~iqbroker.com|~iqoption.co.th|~iqoption.com|~tr-iqoption.com +||cex.io/img/b/ +||cex.io/informer/ +||cf-oss.gname.net^$third-party +||chandrabinduad.com^$third-party +||chicoryapp.com^$third-party +||cl-997764a8.gcdn.co^ +||clarity.abacast.com^ +||clash.gg/embed-ad/ +||click.alibaba.com^$subdocument,third-party +||click.aliexpress.com^$subdocument,third-party +||clickfunnels.com/assets/cfpop.js +||clicknplay.to/api/spots/ +||cloud.setupad.com^ +||cloudbet.com/ad/ +||cloudorchestranova.com/f59d610a61063c7ef3ccdc1fd40d2ae6.js +||cmas.sdcdns.com^ +||coinmama.com/assets/img/banners/ +||commercial.daznservices.com^ +||contentexchange.me/widget/$third-party +||couponcp-a.akamaihd.net^ +||cpkshop.com/campaign/$third-party +||cpm.amateurcommunity.de^ +||cpm.appocean.media^ +||cpmstar.com/cached/ +||cpmstar.com/view.aspx +||crazygolfdeals.com.au/widget$subdocument +||creatives.inmotionhosting.com^ +||criteo.net/banners/ +||criteo.net/design/ +||crunchyroll.com/awidget/ +||cse.google.com/cse_v2/ads$subdocument +||ctent.povvverz.one^ +||cts.tradepub.com^ +||customer.heartinternet.co.uk^$third-party +||cxad.cxense.com^ +||dashboard.iproyal.com/img/b/ +||datacluster.club^ +||datafeedfile.com/ez_banner/ +||datafeedfile.com/widget/readywidget/ +||dawanda.com/widget/ +||ddfdgfgfghjhjbnnmklojhgfdghgbcvbnnmmdfgfvvvvbpvlgbdknfidgh.pages.dev^ +||ddownload.com/images/promo/$third-party +||dealextreme.com/affiliate_upload/ +||desperateseller.co.uk/affiliates/ +||dev-adblocker.workers.dev^ +||digitaloceanspaces.com/advertise/$domain=unb.com.bd +||digitaloceanspaces.com/advertisements/$domain=thefinancialexpress.com.bd +||digitaloceanspaces.com/woohoo/ +||discomax.com/adtech/ +||disqus.com/ads-iframe/ +||disqus.com/listPromoted? +||dnscloud.github.io/js/waypoints.min.js +||dtrk.slimcdn.com^ +||dunhilltraveldeals.com^$third-party +||dx.com/affiliate/ +||dynbanners.netlify.app^ +||e-tailwebstores.com/accounts/default1/banners/ +||earn-bitcoins.net/banner_ +||easydmarc.com/tools/$third-party +||ebayadservices.com^ +||ebayrtm.com^ +||ecufiles.com/advertising/ +||edilportale.com/adv/ +||elliottwave.com/fw/regular_leaderboard.js +||embedsports.top/ad.html +||engine.eroge.com^ +||entainpartners.com/renderbanner.do? +||epnt.ebay.com^ +||etrader.kalahari.com^ +||etrader.kalahari.net^ +||extensoft.com/artisteer/banners/ +||ezojs.com/ezoic/sa.min.js +||facebook.com/audiencenetwork/$third-party +||familytreedna.com/img/affiliates/ +||fancybar.net/ac/fancybar.js?zoneid +||fapturbo.com/testoid/ +||fc.lc/CustomTheme/img/ref$third-party +||feedads.feedblitz.com^ +||ffmovies.lol/jss/dectector-2025.js +||fileboom.me/images/i/$third-party +||filterforge.com/images/banners/ +||financeads.net/tb.php$third-party +||findcouponspromos.com^$third-party +||flirt.com/landing/$third-party +||flocdn.com/*/ads-coordinator/ +||flowplayer.com/releases/ads/ +||free-btc.org/banner/$third-party +||freshbooks.com/images/banners/ +||futuresite.register.com/us? +||g.ezoic.net/ezosuigenerisc.js +||gadgets360.com/pricee/assets/affiliate/ +||gamer-network.net/plugins/dfp/ +||gamesports.net/monkey_ +||gamezop.com/creatives/$image,third-party +||gamezop.com^$subdocument,third-party +||gamingjobsonline.com/images/banner/ +||gannett-cdn.com/partner/vendor/gntx-pbjs.js +||geobanner.friendfinder.com^$third-party +||get.cryptobrowser.site^ +||get.davincisgold.com^ +||get.paradise8.com^ +||get.thisisvegas.com^ +||gg.caixin.com^ +||giftandgamecentral.com^ +||github.io/*/invoke.js$third-party +||glam.com/app/ +||glam.com/gad/ +||go.affiliatesleague.com^ +||go.bloxplay.com^ +||go.onelink.me^$image,script +||goldmoney.com/~/media/Images/Banners/ +||google.*/pagead/lvz? +||google.com/adsense/domains/caf.js +||google.com/adsense/search/ads.js +||google.com/adsense/search/async-ads.js +||google.com/afs/ads? +||google.com/pagead/1p-user-list/ +||google.com/pagead/conversion_async.js +||google.com/pagead/drt/ +||google.com/pagead/form-data/ +||google.com/pagead/landing? +||googleadapis.l.google.com^$third-party +||googleads.github.io^ +||googlesyndication.com/pagead/ +||googlesyndication.com/safeframe/ +||gopjn.com/b/ +||gopjn.com/i/ +||graph.org/file/$third-party +||groupon.com/javascripts/common/affiliate_widget/ +||grscty.com/images/banner/ +||gsniper.com/images/ +||hb.collectiveaudience.co^ +||hb.yahoo.net^ +||hbid.ams3.cdn.digitaloceanspaces.com^ +||heimalesssinpad.com/overroll/ +||hide-my-ip.com/promo/ +||histais.com/js/15_as.js +||hitleap.com/assets/banner +||hosted.muses.org/mrp.js$domain=flamecomics.xyz|mgeko.cc +||hostmonster.com/src/js/$third-party +||hostslick.com^$domain=fileditch.com +||hotlink.cc/promo/ +||hotwire-widget.dailywire.com^$third-party +||httpslink.com/EdgeOfTheFire +||htvapps.com/ad_fallback/ +||huffpost.com/embed/connatix/$subdocument +||humix.com/video.js +||hvdt8.chimeratool.com^ +||i.ibb.co/spx1R6pf/BANNER-1.png +||ibvpn.com/img/banners/ +||ifoneunlock.com/*_banner_ +||imgsrv4.com/sponsor/$image +||in.com/common/script_catch.js +||inbound-step.heavenmedia.com^$third-party +||incrementxplay.com/api/adserver/ +||indeed.fr/ads/ +||infibeam.com/affiliate/ +||inrdeals.com^$third-party +||instant-gaming.com/affgames/ +||ivisa.com/widgets/*utm_medium=affiliate$subdocument,third-party +||j.bids.ws^ +||jam.hearstapps.com/js/renderer.js +||jinx.com/content/banner/ +||jobs.sciencecareers.org^$subdocument,third-party +||jobtarget.com/distrib_pages/ +||join.megaphonetv.com^$third-party +||js.kkraw.com^ +||js.manga1001.win^ +||js.mangalove.top^ +||js.mangaraw.bid^ +||js.rev.iq^ +||js.surecart.com/v1/affiliates? +||jsdelivr.net/gh/InteractiveAdvertisingBureau/ +||jsdelivr.net/gh/qxomer/reklam@master/reklam.js +||jsdelivr.net/npm/as-essential +||jsdelivr.net/npm/prebid- +||jvzoo.com/assets/widget/ +||jwpcdn.com/player/*/googima.js +||jwpcdn.com/player/plugins/bidding/ +||jwpcdn.com/player/plugins/googima/ +||karma.mdpcdn.com^ +||keep2share.cc/images/i/$third-party +||kinguin.net/affiliatepluswidget/$third-party +||kontera.com/javascript/lib/KonaLibInline.js +||kpopsingers.com/*.php?t= +||lawdepot.com/affiliate/$third-party +||leadfamly.com/campaign/sdk/popup.min.js +||leads.media-tools.realestate.com.au/conversions.js +||legitonlinejobs.com/images/$third-party +||lesmeilleurs-jeux.net/images/ban/ +||lessemf.com/images/banner- +||libs.outbrain.com/video/$third-party +||link.link.ru^ +||link.oddsscanner.net^ +||linkconnector.com/tr.php +||linkconnector.com/traffic_record.php +||linkinbio.fun/iframes/ +||linkshrink.net^$script,third-party +||linkspy.cc/js/fullPageScript.min.js +||linkx.ix.tc^ +||lolithon.nl/affiliates/ +||lottoelite.com/banners/ +||ltkcdn.net/ltkrev.js +||magictag.digislots.in^ +||marketing.888.com^ +||marketools.plus500.com/feeds/ +||marketools.plus500.com/Widgets/ +||masque-ads.b-cdn.net^ +||masque.com/games/API/advert/ +||massariuscdn.com/pubs/ +||mbid.marfeelrev.com^ +||mcc.godaddy.com/park/ +||media.netrefer.com^ +||media.vivaclix.com^ +||mediaplex.com/ad/ +||memesng.com/ads +||michel8899.github.io/test/$media +||minutemedia-prebid.com^ +||mmin.io/embed/ +||mmosale.com/baner_images/ +||mmwebhandler.888.com^ +||mps.nbcuni.com/fetch/ext/ +||msadsscale.microsoft.com^ +||mweb-hb.presage.io^ +||my.artfiles.online^$third-party +||mydirtyhobby.com^$third-party,domain=~my-dirty-hobby.com|~mydirtyhobby.de +||myfinance.com^$subdocument,third-party +||mythdev.b-cdn.net^ +||namecheap.com/graphics/linkus/ +||nbastreamswatch.com/z-6229510.js +||netnaija.com/s/$script +||neural.myth.dev^ +||news.smi2.ru^$third-party +||newtabextension.com^ +||nitroflare.com/img/banners/ +||noagentfees.com^$subdocument,domain=independent.com.mt +||ogads-pa.googleapis.com^ +||oilofasia.com/images/banners/ +||omegadblocker.com^ +||omguk.com/i/ +||omguk.com/impression/ +||onlinepromogift.com^ +||onnetwork.tv/widget/ +||onrender.com/api/ads/ +||ooproxy.azurewebsites.net^$xmlhttprequest,domain=imasdk.googleapis.com +||opti-digital.com/js/presync.html +||optimizer.apiswidget.com^ +||orangebuddies.nl/image/banners/ +||ourdreamstaticpages.pages.dev^ +||out.betforce.io^ +||outbrainimg.com/transform/$media,third-party +||owebsearch.com^$third-party +||p.jwpcdn.com/player/plugins/vast/ +||pacontainer.s3.amazonaws.com^ +||pagead2.googlesyndication.com^ +||pages.etoro.com/widgets/$third-party +||parking.godaddy.com^$third-party +||partner-app.softwareselect.com^ +||partner.pcloud.com/media/banners/*300250.png +||partner.pcloud.com/media/banners/*72890.jpg +||partner.vecteezy.com^ +||partners.dogtime.com^ +||partners.etoro.com^$third-party +||partners.hostgator.com^ +||partners.rochen.com^ +||payza.com/images/banners/ +||pb.s3wfg.com^ +||pbstck.com/kleanads-prebid/ +||perfectmoney.com/img/banners/ +||pics.firstload.de^ +||pips.taboola.com^ +||piratecat.online/ads/ +||pjatr.com^$image,script +||pjtra.com^$image,script +||play-asia.com^$image,subdocument,third-party +||player.globalsun.io/player/videojs-contrib-ads$script,third-party +||playgama.com/ads/ +||plchldr.co^$third-party +||plista.com/async_lib.js? +||plista.com/tiny/$third-party +||plus.net/images/referrals/ +||pngmart.com/files/10/Download-Now-Button-PNG-Free-Download.png +||pntra.com^$image,script +||pntrac.com^$image,script +||pntrs.com^$image,script +||popmog.com^ +||pr.costaction.com^$third-party +||prebid.cwi.re^ +||press-start.com/affgames/ +||privatejetfinder.com/skins/partners/$third-party +||probid.ai^$third-party +||profamouslife.com/js/adcash.js +||promos.fling.com^ +||promote.pair.com/88x31.pl +||protected-redirect.click^ +||proto2ad.durasite.net^ +||proxy6.net/static/img/b/ +||proxysolutions.net/affiliates/ +||pub-81f2b77f5bc841c5ae64221394d67f53.r2.dev^ +||pub.dv.tech^ +||pub.neartonet.com^ +||pubfeed.linkby.com^ +||public.porn.fr^$third-party +||publish0x.com^$image,script,third-party +||purevpn.com/affiliates/ +||pushtoast-a.akamaihd.net^ +||qsearch-a.akamaihd.net^ +||racebets.com/media.php? +||random-affiliate.atimaze.com^ +||rapidgator.net/images/pics/510_468%D1%8560_1.gif +||rdr.wargaming.net^$subdocument,third-party +||readme.ru/informer/ +||realtimesearchresults.com/sr/ +||redirect-ads.com^$~subdocument,third-party +||redtram.com^$script,third-party +||refinery89.com/performance/ +||reiclub.com/templates/interviews/exit_popup/ +||remax-malta.com/widget_new/$third-party +||rentalcars.com/partners/ +||resellerratings.com/popup/include/popup.js +||retailmedia-static.criteo.com^ +||rotabanner.kulichki.net^ +||rotator.tradetracker.net^ +||rubylife.go2cloud.org^ +||s.collectiveaudience.co^ +||s.yimg.com/du/site/pqhdvmrpsxksshgt.js +||s1.wp.com^$subdocument,third-party +||saambaa.com^$third-party +||safarinow.com/affiliate-zone/ +||safelinku.com/js/web-script.js +||sailthru.com^*/horizon.js +||sascdn.com/config.js +||sascdn.com/diff/$image,script +||sascdn.com/tag/ +||saveit.us/img/$third-party +||sbitany.com^*/affiliate/$third-party +||screen13.com/publishers/ +||sdk.apester.com/*.adsbygoogle.min.js +||sdk.apester.com/*.Monetization.min.js +||sdk.k-words.io/script.js +||search-carousel-widget.snc-prod.aws.cinch.co.uk^ +||searchnowexpert.com/sr/ +||secure.money.com^$third-party +||service.smscoin.com/js/sendpic.js +||serving.lookverin.com^ +||servrg.com^$third-party +||shareasale.com/image/$third-party +||shink.in/js/script.js +||shopmyshelf.us^$third-party +||signup.asurion.com^$subdocument +||siteground.com/img/affiliate/ +||siteground.com/img/banners/ +||siteground.com/static/affiliate/$third-party +||sk.fapnow.xxx^ +||skimresources.com^$script,subdocument,third-party +||skygg.lat/ads/lib.js +||slysoft.com/img/banner/ +||smartads.statsperform.com^ +||smartdestinations.com/ai/ +||snacklink.co/js/web-script.js +||snacktools.net/bannersnack/$domain=~bannersnack.dev +||socialmonkee.com/images/ +||solarcdn.me^$third-party +||sorcerers.net/includes/butler/ +||spolecznosci.net/files/ +||squaremouth.com/affiliates/$third-party +||squirrels.getsquirrel.co^ +||srv.dynamicyield.com^ +||srv.tunefindforfans.com^ +||srv.yeahwebimobi.fun^ +||srx.com.sg/srx/media/ +||ssl-images-amazon.com/images/*/DAsf- +||ssl-images-amazon.com/images/*/MAsf- +||ssp.qc.coccoc.com^ +||static-cloudflare.workers.dev^ +||static-resources.workers.dev^ +||static.ifruplink.net/static_src/mc-banner/ +||static.prd.datawars.io/static/promo/ +||static.sunmedia.tv/integrations/ +||static.tradetracker.net^$third-party +||stay22.com/api/sponsors/ +||sterra.web.id/stera1/ +||sterra.web.id/stera2/ +||sterra.web.id/stera4/ +||storage.googleapis.com/admaxvaluemedia/ +||storage.googleapis.com/adtags/ +||storage.googleapis.com/ba_utils/stab.js +||storage.googleapis.com/global-attribution/global_attribution.js +||storage.googleapis.com/vs-scripts/primis/primisSlide.js +||streambtwp.b-cdn.net/aclib.js +||succeedscene.com/openads/ +||sunflowerbright109.io/sdk.js +||supabase.co/rest/v1/promos_available +||supply.upjers.com^ +||surdotly.com/js/Surly.min.js +||surveymonkey.com/jspop.aspx? +||swarthid.github.io/*/invoke.js$third-party +||sweeva.com/images/banner250.gif +||sync.gsyndication.com^ +||syndicate.payloadz.com^ +||t.babelmedia.global^$third-party +||t.co^$subdocument,domain=kshow123.tv +||t1.daumcdn.net/adfit/static/ad.min.js +||taboola.com/vpaid/ +||taboola.com^*/vignette-render.js +||tag.regieci.com^ +||tags.refinery89.com^ +||takefile.link/promo/$third-party +||targeting.vdo.ai^ +||tcadserver.rain-digital.ca^ +||tech426.com/pub/ +||textlinks.com/images/banners/ +||thefreesite.com/nov99bannov.gif +||thelotter-affiliates.com^$third-party +||themespixel.net/banners/ +||thscore.fun/mn/ +||ti.tradetracker.net^ +||tii.la/js/fps.js +||tillertag-a.akamaihd.net^ +||toplist.raidrush.ws^$third-party +||torrindex.net/images/ads/ +||torrindex.net/images/epv/ +||totalmedia2.ynet.co.il/new_gpt/ +||townnews.com/tucson.com/content/tncms/live/libraries/flex/components/ads_dfp/ +||tra.scds.pmdstatic.net/advertising-core/ +||track.10bet.com^ +||track.effiliation.com^$image,script +||tradehouse.media/js/prebid- +||traffer.biz/img/banners/ +||travel.mediaalpha.com/js/serve.js +||trendads.reactivebetting.com^ +||trip.com/partners/ad/ +||trstx.org/overroll/ +||truex.com/js/client.js +||truvidplayer.com/v*/v.php?*&adid= +||trvl-px.com/trvl-px/ +||turb.cc/fd1/img/promo/ +||typicalstudent.org^$third-party +||ubm-us.net/oas/nativead/js/nativead.js +||universal.wgplayer.com^ +||uploaded.net/img/public/$third-party +||utility.rogersmedia.com/wrapper.js +||vhanime.com/js/bnanime.js +||viadata.store^$third-party +||vidcrunch.com/api/adserver/ +||vidcrunch.com/integrations/$script,third-party +||video-ads.a2z.com^ +||videosvc.ezoic.com^ +||vidoomy.com/api/adserver/ +||vidsrc.pro/uwu-js/binged.in +||viously.com^$domain=9gag.com +||viralize.tv/t-bid-opportunity/ +||virool.com/widgets/ +||vpnrice.com/a/p.js +||vrixon.com/adsdk/ +||vultr.com/media/banner +||vuukle.com/ads/ +||vv.7vid.net^ +||washingtonpost.com/wp-stat/ad/zeus/wp-ad.min.js +||web-hosting.net.my/banner/ +||web.adblade.com^ +||webapps.leasing.com^ +||webseed.com/WP/ +||weby.aaas.org^ +||whatfinger.com^$third-party +||wheelify.cartzy.com^ +||widget.engageya.com/engageya_loader.js +||widget.golfscape.com^ +||widget.searchschoolsnetwork.com^ +||widget.sellwild.com^ +||widget.shopstyle.com^ +||widget.spoods.io^ +||widgets.business.com^ +||widgets.lendingtree.com^ +||widgets.monito.com^$third-party +||widgets.oddschecker.com^ +||widgets.outbrain.com^*/widget.js +||widgets.progrids.com^ +||widgets.tree.com^ +||winonexd.b-cdn.net^ +||wistia.com/assets/external/googleAds.js +||wixlabs-adsense-v3.uc.r.appspot.com^ +||wowtcgloot.com/share/?d=$third-party +||wp.com/assets.sheetmusicplus.com/banner/ +||wp.com/assets.sheetmusicplus.com/smp/ +||wp.com/bugsfighter.com/wp-content/uploads/2016/07/adguard-banner.png +||wp.com/static.shareasale.com/ +||wpb.wgplayer.com^ +||wpengine.com/wp-json/api/advanced_placement/api-in-article-ad/ +||wpzoom.com/images/aff/ +||ws.amazon.*/widgets/$third-party +||wsimg.com/parking-lander/ +||xapi.juicyads.com^ +||yahoo.com/bidRequest +||yastatic.net/pcode/adfox/header-bidding.js +||yield-op-idsync.live.streamtheworld.com^ +||yimg.com/dy/ads/native.js +||yimg.com/dy/ads/readmo.js +||youtube.com/embed/C-iDzdvIg1Y$domain=biznews.com +||z3x-team.com/wp-content/*-banner- +||zergnet.com/zerg.js +||ziffstatic.com/pg/ +||ziffstatic.com/zmg/pogoadk.js +||zkcdn.net/ados.js +||zv.7vid.net^ +! CNAME +! https://d3ward.github.io/toolz/src/adblock.html +||ad.intl.xiaomi.com^ +||ad.xiaomi.com^ +! amazonaws (ad-fix) +/^https?:\/\/s3\.*\.amazonaws\.com\/[a-f0-9]{45,}\/[a-f,0-9]{8,10}$/$script,third-party,xmlhttprequest,domain=~amazon.com +||s3.amazonaws.com^*/f10ac63cd7 +||s3.amazonaws.com^*/secure.js +! charlotteobserver.com (audio advert) +||tsbluebox.com^$third-party +! cloudfront hosted +||cloudfront.net/*.min.css$script,third-party +||cloudfront.net/?dfcdd= +||cloudfront.net/css/*.min.js$script,third-party +||cloudfront.net/images/*-min.js$script,third-party +||cloudfront.net/js/script_tag/new/sca_affiliate_ +||cloudfront.net/public/ct?cpguid=& +||cloudfront.net/public/external/v2/htmlxf. +||d10ce3z4vbhcdd.cloudfront.net^ +||d10lumateci472.cloudfront.net^ +||d10lv7w3g0jvk9.cloudfront.net^ +||d10nkw6w2k1o10.cloudfront.net^ +||d10wfab8zt419p.cloudfront.net^ +||d10zmv6hrj5cx1.cloudfront.net^ +||d114isgihvajcp.cloudfront.net^ +||d1180od816jent.cloudfront.net^ +||d1198dzygjftam.cloudfront.net^ +||d11enq2rymy0yl.cloudfront.net^ +||d11hjbdxxtogg5.cloudfront.net^ +||d11kp34sgosvfa.cloudfront.net^ +||d11p7gi4d9x2s0.cloudfront.net^ +||d11qytb9x1vnrm.cloudfront.net^ +||d11tybz5ul8vel.cloudfront.net^ +||d11zevc9a5598r.cloudfront.net^ +||d126kahie2ogx0.cloudfront.net^ +||d127s3e8wcl3q6.cloudfront.net^ +||d12bql71awc8k.cloudfront.net^ +||d12czbu0tltgqq.cloudfront.net^ +||d12dky1jzngacn.cloudfront.net^ +||d12e9f83wyj0ww.cloudfront.net^ +||d12t7h1bsbq1cs.cloudfront.net^ +||d12tu1kocp8e8u.cloudfront.net^ +||d12ylqdkzgcup5.cloudfront.net^ +||d12zgccgt6pwjz.cloudfront.net^ +||d133y3h5r255gq.cloudfront.net^ +||d13gni3sfor862.cloudfront.net^ +||d13j11nqjt0s84.cloudfront.net^ +||d13k7prax1yi04.cloudfront.net^ +||d13pxqgp3ixdbh.cloudfront.net^ +||d13r2gmqlqb3hr.cloudfront.net^ +||d13uyjvmsvkesh.cloudfront.net^ +||d13vul5n9pqibl.cloudfront.net^ +||d140sbu1b1m3h0.cloudfront.net^ +||d141wsrw9m4as6.cloudfront.net^ +||d142i1hxvwe38g.cloudfront.net^ +||d145ghnzqbsasr.cloudfront.net^ +||d147t1kg3swfdd.cloudfront.net^ +||d14821r0t3377v.cloudfront.net^ +||d149mkdvjofx4v.cloudfront.net^ +||d14l1tkufmtp1z.cloudfront.net^ +||d14osandwrs90r.cloudfront.net^ +||d14pwugcs00a42.cloudfront.net^ +||d14x46ho6sn9yf.cloudfront.net^ +||d14zhsq5aop7ap.cloudfront.net^ +||d153rqv8na4vs.cloudfront.net^ +||d154nw1c88j0q6.cloudfront.net^ +||d15bcy38hlba76.cloudfront.net^ +||d15gt9gwxw5wu0.cloudfront.net^ +||d15jg7068qz6nm.cloudfront.net^ +||d15kdpgjg3unno.cloudfront.net^ +||d15kuuu3jqrln7.cloudfront.net^ +||d15mt77nzagpnx.cloudfront.net^ +||d15skjf5hy9xr6.cloudfront.net^ +||d15yg5thi9b6xv.cloudfront.net^ +||d162nnmwf9bggr.cloudfront.net^ +||d16saj1xvba76n.cloudfront.net^ +||d16sobzswqonxq.cloudfront.net^ +||d175dtblugd1dn.cloudfront.net^ +||d17757b88bjr2y.cloudfront.net^ +||d17c5vf4t6okfg.cloudfront.net^ +||d17razj7klcrmv.cloudfront.net^ +||d183xvcith22ty.cloudfront.net^ +||d1856n6bep9gel.cloudfront.net^ +||d185vdnhi9xfbl.cloudfront.net^ +||d188elxamt3utn.cloudfront.net^ +||d188m5xxcpvuue.cloudfront.net^ +||d18b5y9gp0lr93.cloudfront.net^ +||d18e74vjvmvza1.cloudfront.net^ +||d18g6t7whf8ejf.cloudfront.net^ +||d18hqfm1ev805k.cloudfront.net^ +||d18kg2zy9x3t96.cloudfront.net^ +||d18mealirgdbbz.cloudfront.net^ +||d18myvrsrzjrd7.cloudfront.net^ +||d18ql5xgy7gz3p.cloudfront.net^ +||d18t35yyry2k49.cloudfront.net^ +||d192g7g8iuw79c.cloudfront.net^ +||d192r5l88wrng7.cloudfront.net^ +||d199kwgcer5a6q.cloudfront.net^ +||d19a04d0igndnt.cloudfront.net^ +||d19bpqj0yivlb3.cloudfront.net^ +||d19diizb3qce6y.cloudfront.net^ +||d19gkl2iaav80x.cloudfront.net^ +||d19y03yc9s7c1c.cloudfront.net^ +||d1a3jb5hjny5s4.cloudfront.net^ +||d1aa9f6zukqylf.cloudfront.net^ +||d1ac2du043ydir.cloudfront.net^ +||d1aezk8tun0dhm.cloudfront.net^ +||d1aiciyg0qwvvr.cloudfront.net^ +||d1ap9gbbf77h85.cloudfront.net^ +||d1appgm50chwbg.cloudfront.net^ +||d1aqvw7cn4ydzo.cloudfront.net^ +||d1aukpqf83rqhe.cloudfront.net^ +||d1ayv3a7nyno3a.cloudfront.net^ +||d1az618or4kzj8.cloudfront.net^ +||d1aznprfp4xena.cloudfront.net^ +||d1azpphj80lavy.cloudfront.net^ +||d1b240xv9h0q8y.cloudfront.net^ +||d1b499kr4qnas6.cloudfront.net^ +||d1b7aq9bn3uykv.cloudfront.net^ +||d1b9b1cxai2c03.cloudfront.net^ +||d1bad9ankyq5eg.cloudfront.net^ +||d1bci271z7i5pg.cloudfront.net^ +||d1betjlqogdr97.cloudfront.net^ +||d1bf1sb7ks8ojo.cloudfront.net^ +||d1bi6hxlc51jjw.cloudfront.net^ +||d1bioqbsunwnrb.cloudfront.net^ +||d1bkis4ydqgspg.cloudfront.net^ +||d1bxkgbbc428vi.cloudfront.net^ +||d1cg2aopojxanm.cloudfront.net^ +||d1clmik8la8v65.cloudfront.net^ +||d1crfzlys5jsn1.cloudfront.net^ +||d1crt12zco2cvf.cloudfront.net^ +||d1csp7vj6qqoa6.cloudfront.net^ +||d1d38a26hlyhe3.cloudfront.net^ +||d1d7hwtv2l91pm.cloudfront.net^ +||d1dcnte8mfzkpv.cloudfront.net^ +||d1dh1gvx7p0imm.cloudfront.net^ +||d1diqetif5itzx.cloudfront.net^ +||d1djrodi2reo2w.cloudfront.net^ +||d1dtl43j681tft.cloudfront.net^ +||d1e28xq8vu3baf.cloudfront.net^ +||d1e3vw6pz2ty1m.cloudfront.net^ +||d1e51ovcxdu97v.cloudfront.net^ +||d1e9rtdi67kart.cloudfront.net^ +||d1ebha2k07asm5.cloudfront.net^ +||d1eeht7p8f5lpk.cloudfront.net^ +||d1eknpz7w55flg.cloudfront.net^ +||d1err2upj040z.cloudfront.net^ +||d1esebcdm6wx7j.cloudfront.net^ +||d1ev4o49j4zqc3.cloudfront.net^ +||d1ev866ubw90c6.cloudfront.net^ +||d1eyw3m16hfg9c.cloudfront.net^ +||d1ezlc9vy4yc7g.cloudfront.net^ +||d1f05vr3sjsuy7.cloudfront.net^ +||d1f52ha44xvggk.cloudfront.net^ +||d1f5r3d462eit5.cloudfront.net^ +||d1f7vr2umogk27.cloudfront.net^ +||d1f9tkqiyb5a97.cloudfront.net^ +||d1f9x963ud6u7a.cloudfront.net^ +||d1fs2ef81chg3.cloudfront.net^ +||d1ftkft7iiluq6.cloudfront.net^ +||d1g2nud28z4vph.cloudfront.net^ +||d1g4493j0tcwvt.cloudfront.net^ +||d1g4xgvlcsj49g.cloudfront.net^ +||d1g8forfjnu2jh.cloudfront.net^ +||d1gof7ug63b1q4.cloudfront.net^ +||d1gpi088t70qaf.cloudfront.net^ +||d1h2plpxnhapt.cloudfront.net^ +||d1ha41wacubcnb.cloudfront.net^ +||d1hgdmbgioknig.cloudfront.net^ +||d1hh76tqcottqz.cloudfront.net^ +||d1hnmxbg6rp2o6.cloudfront.net^ +||d1hogxc58mhzo9.cloudfront.net^ +||d1i11ea1m0er9t.cloudfront.net^ +||d1i1d9hx0883rq.cloudfront.net^ +||d1i3h541wbnrfi.cloudfront.net^ +||d1i4rchxg0yau7.cloudfront.net^ +||d1i76h1c9mme1m.cloudfront.net^ +||d1ieffz9zqrn09.cloudfront.net^ +||d1igvjcl1gjs62.cloudfront.net^ +||d1ilwohzbe4ao6.cloudfront.net^ +||d1iy4wgzi9qdu7.cloudfront.net^ +||d1iz0b4hmb7usn.cloudfront.net^ +||d1j1m9awq6n3x3.cloudfront.net^ +||d1j2jv7bvcsxqg.cloudfront.net^ +||d1j47wsepxe9u2.cloudfront.net^ +||d1j6limf657foe.cloudfront.net^ +||d1j818d3wapogd.cloudfront.net^ +||d1j9qsxe04m2ki.cloudfront.net^ +||d1jcj9gy98l90g.cloudfront.net^ +||d1jd9usa22o1l7.cloudfront.net^ +||d1jnvfp2m6fzvq.cloudfront.net^ +||d1juimniehopp3.cloudfront.net^ +||d1jum8517nhtf1.cloudfront.net^ +||d1jwpd11ofhd5g.cloudfront.net^ +||d1k8mqc61fowi.cloudfront.net^ +||d1kfcch39h5g0x.cloudfront.net^ +||d1krgg9nh7vzxg.cloudfront.net^ +||d1ks8roequxbwa.cloudfront.net^ +||d1ktmtailsv07c.cloudfront.net^ +||d1kttpj1t6674w.cloudfront.net^ +||d1kwkwcfmhtljq.cloudfront.net^ +||d1kx6hl0p7bemr.cloudfront.net^ +||d1kzm6rtbvkdln.cloudfront.net^ +||d1l906mtvq85kd.cloudfront.net^ +||d1lihuem8ojqxz.cloudfront.net^ +||d1lky2ntb9ztpd.cloudfront.net^ +||d1lnjzqqshwcwg.cloudfront.net^ +||d1lo4oi08ke2ex.cloudfront.net^ +||d1lxhc4jvstzrp.cloudfront.net^ +||d1mahxde95gw5l.cloudfront.net^ +||d1mar6i7bkj1lr.cloudfront.net^ +||d1mbgf0ge24riu.cloudfront.net^ +||d1mbihpm2gncx7.cloudfront.net^ +||d1mcwmzol446xa.cloudfront.net^ +||d1mikxzr3lp4va.cloudfront.net^ +||d1mkq4fbm7j30i.cloudfront.net^ +||d1my7gmbyaxdyn.cloudfront.net^ +||d1myn4ixnn41tz.cloudfront.net^ +||d1n1ppeppre6d4.cloudfront.net^ +||d1n3aexzs37q4s.cloudfront.net^ +||d1n3tk65esqc4k.cloudfront.net^ +||d1n5jb3yqcxwp.cloudfront.net^ +||d1n6jx7iu0qib6.cloudfront.net^ +||d1ndpste0fy3id.cloudfront.net^ +||d1nkvehlw5hmj4.cloudfront.net^ +||d1nmxiiewlx627.cloudfront.net^ +||d1nnhbi4g0kj5.cloudfront.net^ +||d1now6cui1se29.cloudfront.net^ +||d1nr5af9lc58ok.cloudfront.net^ +||d1nssfq3xl2t6b.cloudfront.net^ +||d1nubxdgom3wqt.cloudfront.net^ +||d1nv2vx70p2ijo.cloudfront.net^ +||d1nx2jii03b4ju.cloudfront.net^ +||d1o1guzowlqlts.cloudfront.net^ +||d1of5w8unlzqtg.cloudfront.net^ +||d1okyw2ay5msiy.cloudfront.net^ +||d1ol7fsyj96wwo.cloudfront.net^ +||d1on4urq8lvsb1.cloudfront.net^ +||d1or04kku1mxl9.cloudfront.net^ +||d1owuvqs9tkert.cloudfront.net^ +||d1oykxszdrgjgl.cloudfront.net^ +||d1p0vowokmovqz.cloudfront.net^ +||d1p3zboe6tz3yy.cloudfront.net^ +||d1p7gp5w97u7t7.cloudfront.net^ +||d1pdf4c3hchi80.cloudfront.net^ +||d1pk6uu6wqrpce.cloudfront.net^ +||d1pn3cn3ri604k.cloudfront.net^ +||d1pvpz0cs1cjk8.cloudfront.net^ +||d1pwvobm9k031m.cloudfront.net^ +||d1pxzgs3x2bh98.cloudfront.net^ +||d1q0x5umuwwxy2.cloudfront.net^ +||d1q4x2p7t0gq14.cloudfront.net^ +||d1q9g9zqq1ieco.cloudfront.net^ +||d1qc76gneygidm.cloudfront.net^ +||d1qggq1at2gusn.cloudfront.net^ +||d1qk9ujrmkucbl.cloudfront.net^ +||d1qow5kxfhwlu8.cloudfront.net^ +||d1r3ddyrqrmcjv.cloudfront.net^ +||d1r90st78epsag.cloudfront.net^ +||d1r9f6frybgiqo.cloudfront.net^ +||d1rczqt4tdkw1g.cloudfront.net^ +||d1rgi5lmynkcm4.cloudfront.net^ +||d1rguclfwp7nc8.cloudfront.net^ +||d1rkd1d0jv6skn.cloudfront.net^ +||d1rkf0bq85yx06.cloudfront.net^ +||d1rnejrnt2c4br.cloudfront.net^ +||d1rnknz34k1ko0.cloudfront.net^ +||d1rp4yowwe587e.cloudfront.net^ +||d1rsh847opos9y.cloudfront.net^ +||d1s4mby8domwt9.cloudfront.net^ +||d1sboz88tkttfp.cloudfront.net^ +||d1sfclevshpbro.cloudfront.net^ +||d1sjz3r2x2vk2u.cloudfront.net^ +||d1sowp9ayjro6j.cloudfront.net^ +||d1spc7iz1ls2b1.cloudfront.net^ +||d1sqvt36mg3t1b.cloudfront.net^ +||d1sytkg9v37f5q.cloudfront.net^ +||d1t1fxgxazche8.cloudfront.net^ +||d1t38ngzzazukx.cloudfront.net^ +||d1t671k72j9pxc.cloudfront.net^ +||d1t8it0ywk3xu.cloudfront.net^ +||d1tafuajjg33f8.cloudfront.net^ +||d1tizxwina1bjc.cloudfront.net^ +||d1tjcziy9n8hnk.cloudfront.net^ +||d1tjxs5ylo6ah7.cloudfront.net^ +||d1tlfk2mmne2t6.cloudfront.net^ +||d1tt3ye7u0e0ql.cloudfront.net^ +||d1tttug1538qv1.cloudfront.net^ +||d1twn22x8kvw17.cloudfront.net^ +||d1u1byonn4po0b.cloudfront.net^ +||d1u5ibtsigyagv.cloudfront.net^ +||d1uae3ok0byyqw.cloudfront.net^ +||d1uc64ype5braa.cloudfront.net^ +||d1ue5xz1lnqk0d.cloudfront.net^ +||d1ugiptma3cglb.cloudfront.net^ +||d1ukp4rdr0i4nl.cloudfront.net^ +||d1upt0rqzff34l.cloudfront.net^ +||d1ux93ber9vlwt.cloudfront.net^ +||d1uzjiv6zzdlbc.cloudfront.net^ +||d1voskqidohxxs.cloudfront.net^ +||d1vqm5k0hezeau.cloudfront.net^ +||d1vy7td57198sq.cloudfront.net^ +||d1w24oanovvxvg.cloudfront.net^ +||d1w5452x8p71hs.cloudfront.net^ +||d1w9uux77ifu8k.cloudfront.net^ +||d1wbjksx0xxdn3.cloudfront.net^ +||d1wc0ojltqk24g.cloudfront.net^ +||d1wd81rzdci3ru.cloudfront.net^ +||d1wi563t0137vz.cloudfront.net^ +||d1wjz6mrey9f5v.cloudfront.net^ +||d1wv5x2u0qrvjw.cloudfront.net^ +||d1x45wsn95e4gp.cloudfront.net^ +||d1x7c4wlneyax0.cloudfront.net^ +||d1xdxiqs8w12la.cloudfront.net^ +||d1xivydscggob7.cloudfront.net^ +||d1xkyo9j4r7vnn.cloudfront.net^ +||d1xo0f2fdn5no0.cloudfront.net^ +||d1xw8yqtkk9ae5.cloudfront.net^ +||d1y3xnqdd6pdbo.cloudfront.net^ +||d1yaf4htak1xfg.cloudfront.net^ +||d1ybdlg8aoufn.cloudfront.net^ +||d1yeqwgi8897el.cloudfront.net^ +||d1ygczx880h5yu.cloudfront.net^ +||d1ytalcrl612d7.cloudfront.net^ +||d1yyhdmsmo3k5p.cloudfront.net^ +||d1z1vj4sd251u9.cloudfront.net^ +||d1z2jf7jlzjs58.cloudfront.net^ +||d1z58p17sqvg6o.cloudfront.net^ +||d1zhmd1pxxxajf.cloudfront.net^ +||d1zjpzpoh45wtm.cloudfront.net^ +||d1zjr9cc2zx7cg.cloudfront.net^ +||d1zrs4deyai5xm.cloudfront.net^ +||d1zvjxpgjx3irs.cloudfront.net^ +||d1zw85ny9dtn37.cloudfront.net^ +||d1zw8evbrw553l.cloudfront.net^ +||d1zy4z3rd7svgh.cloudfront.net^ +||d1zzcae3f37dfx.cloudfront.net^ +||d200108c6x0w2v.cloudfront.net^ +||d204slsrhoah2f.cloudfront.net^ +||d205jrj5h1616x.cloudfront.net^ +||d20903hof2l33q.cloudfront.net^ +||d20kfqepj430zj.cloudfront.net^ +||d20nuqz94uw3np.cloudfront.net^ +||d20tam5f2v19bf.cloudfront.net^ +||d213cc9tw38vai.cloudfront.net^ +||d219kvfj8xp5vh.cloudfront.net^ +||d21f25e9uvddd7.cloudfront.net^ +||d21m5j4ptsok5u.cloudfront.net^ +||d21rpkgy8pahcu.cloudfront.net^ +||d21rudljp9n1rr.cloudfront.net^ +||d21uxxljl9m8ns.cloudfront.net^ +||d223xrf0cqrzzz.cloudfront.net^ +||d227cncaprzd7y.cloudfront.net^ +||d227n6rw2vv5cw.cloudfront.net^ +||d22ffr6srkd9zx.cloudfront.net^ +||d22jxozsujz6m.cloudfront.net^ +||d22lbkjf2jpzr9.cloudfront.net^ +||d22lo5bcpq2fif.cloudfront.net^ +||d22rmxeq48r37j.cloudfront.net^ +||d22sfab2t5o9bq.cloudfront.net^ +||d22xmn10vbouk4.cloudfront.net^ +||d22z575k8abudv.cloudfront.net^ +||d232dy72shugnx.cloudfront.net^ +||d235m8fpdlskx9.cloudfront.net^ +||d236v5t33fsfwk.cloudfront.net^ +||d23a1izvegnhq4.cloudfront.net^ +||d23d7sc86jmil5.cloudfront.net^ +||d23guct4biwna6.cloudfront.net^ +||d23h3o5tkgytgm.cloudfront.net^ +||d23i0h7d50duv0.cloudfront.net^ +||d23pdhuxarn9w2.cloudfront.net^ +||d23rx8p5l6yry7.cloudfront.net^ +||d23spca806c5fu.cloudfront.net^ +||d23xhr62nxa8qo.cloudfront.net^ +||d24502rd02eo9t.cloudfront.net^ +||d2483bverkkvsp.cloudfront.net^ +||d24g87zbxr4yiz.cloudfront.net^ +||d24iusj27nm1rd.cloudfront.net^ +||d24lwiav9pbaw7.cloudfront.net^ +||d24qbn28utpewb.cloudfront.net^ +||d25dfknw9ghxs6.cloudfront.net^ +||d25xkbr68qqtcn.cloudfront.net^ +||d25yl3zz7cfmzs.cloudfront.net^ +||d261u4g5nqprix.cloudfront.net^ +||d264dxqvolp03e.cloudfront.net^ +||d26adrx9c3n0mq.cloudfront.net^ +||d26e5rmb2qzuo3.cloudfront.net^ +||d26p9ecwyy9zqv.cloudfront.net^ +||d26yfyk0ym2k1u.cloudfront.net^ +||d26ynmm8jhmv6r.cloudfront.net^ +||d27genukseznht.cloudfront.net^ +||d27gtglsu4f4y2.cloudfront.net^ +||d27pxpvfn42pgj.cloudfront.net^ +||d27qffx6rqb3qm.cloudfront.net^ +||d27tbpngbwa8i.cloudfront.net^ +||d27tzcmp091qxd.cloudfront.net^ +||d27x9po2cfinm5.cloudfront.net^ +||d28bcu8ltt2bxh.cloudfront.net^ +||d28exbmwuav7xa.cloudfront.net^ +||d28quk6sxoh2w5.cloudfront.net^ +||d28s7kbgrs6h2f.cloudfront.net^ +||d28tav62yh5xjt.cloudfront.net^ +||d28u86vqawvw52.cloudfront.net^ +||d28uhswspmvrhb.cloudfront.net^ +||d28xpw6kh69p7p.cloudfront.net^ +||d2906506rwyvg2.cloudfront.net^ +||d29bsjuqfmjd63.cloudfront.net^ +||d29dbajta0the9.cloudfront.net^ +||d29dzo8owxlzou.cloudfront.net^ +||d29gqhzevia104.cloudfront.net^ +||d29i6o40xcgdai.cloudfront.net^ +||d29lduyskr59p4.cloudfront.net^ +||d29mhxfd390ueb.cloudfront.net^ +||d29mxewlidfjg1.cloudfront.net^ +||d2a0tn74luqqde.cloudfront.net^ +||d2a0wk9ahruyzx.cloudfront.net^ +||d2a4qm4se0se0m.cloudfront.net^ +||d2a80scaiwzqau.cloudfront.net^ +||d2b12e9gh7m9il.cloudfront.net^ +||d2b4jmuffp1l21.cloudfront.net^ +||d2bbq3twedfo2f.cloudfront.net^ +||d2bkkt3kqfmyo0.cloudfront.net^ +||d2bvfdz3bljcfk.cloudfront.net^ +||d2bxqnokimz7h9.cloudfront.net^ +||d2bxxk33t58v29.cloudfront.net^ +||d2byenqwec055q.cloudfront.net^ +||d2byrpuyl3x3q4.cloudfront.net^ +||d2c2pscv8ayc0e.cloudfront.net^ +||d2c4ylitp1qu24.cloudfront.net^ +||d2c8v52ll5s99u.cloudfront.net^ +||d2camyomzxmxme.cloudfront.net^ +||d2cgumzzqhgmdu.cloudfront.net^ +||d2cmh8xu3ncrj2.cloudfront.net^ +||d2cq71i60vld65.cloudfront.net^ +||d2cqjjokdc31wb.cloudfront.net^ +||d2d6cf2do9znht.cloudfront.net^ +||d2d8qsxiai9qwj.cloudfront.net^ +||d2db10c4rkv9vb.cloudfront.net^ +||d2dkurdav21mkk.cloudfront.net^ +||d2dxy39sqorbhv.cloudfront.net^ +||d2dyjetg3tc2wn.cloudfront.net^ +||d2e30rravz97d4.cloudfront.net^ +||d2e5x3k1s6dpd4.cloudfront.net^ +||d2e7rsjh22yn3g.cloudfront.net^ +||d2edfzx4ay42og.cloudfront.net^ +||d2ei3pn5qbemvt.cloudfront.net^ +||d2eklqgy1klqeu.cloudfront.net^ +||d2ele6m9umnaue.cloudfront.net^ +||d2elslrg1qbcem.cloudfront.net^ +||d2enprlhqqv4jf.cloudfront.net^ +||d2eq4x4u2q3fwc.cloudfront.net^ +||d2er1uyk6qcknh.cloudfront.net^ +||d2ers4gi7coxau.cloudfront.net^ +||d2eyuq8th0eqll.cloudfront.net^ +||d2ezb29y2sin9e.cloudfront.net^ +||d2f0ixlrgtk7ff.cloudfront.net^ +||d2f0uviei09pxb.cloudfront.net^ +||d2f5h9m0jmnhjh.cloudfront.net^ +||d2fbkzyicji7c4.cloudfront.net^ +||d2fbvay81k4ji3.cloudfront.net^ +||d2fhrdu08h12cc.cloudfront.net^ +||d2fmtc7u4dp7b2.cloudfront.net^ +||d2focgxak1cn74.cloudfront.net^ +||d2foi16y3n0s3e.cloudfront.net^ +||d2fsfacjuqds81.cloudfront.net^ +||d2fxbo429dllho.cloudfront.net^ +||d2g6dhcga4weul.cloudfront.net^ +||d2g8ksx1za632p.cloudfront.net^ +||d2g9nmtuil60cb.cloudfront.net^ +||d2ga0x5nt7ml6e.cloudfront.net^ +||d2gc6r1h15ux9j.cloudfront.net^ +||d2ghscazvn398x.cloudfront.net^ +||d2glav2919q4cw.cloudfront.net^ +||d2h2t5pll64zl8.cloudfront.net^ +||d2h7xgu48ne6by.cloudfront.net^ +||d2h85i07ehs6ej.cloudfront.net^ +||d2hdyssxn6lpj2.cloudfront.net^ +||d2ho1n52p59mwv.cloudfront.net^ +||d2hvwfg7vv4mhf.cloudfront.net^ +||d2i4wzwe8j1np9.cloudfront.net^ +||d2i55s0cnk529c.cloudfront.net^ +||d2idmzrhlqydr.cloudfront.net^ +||d2it3a9l98tmsr.cloudfront.net^ +||d2izcn32j62dtp.cloudfront.net^ +||d2j042cj1421wi.cloudfront.net^ +||d2j45sh7zpklsw.cloudfront.net^ +||d2j71mqxljhlck.cloudfront.net^ +||d2jgbcah46jjed.cloudfront.net^ +||d2jgih9urxpa47.cloudfront.net^ +||d2jgp81mjwggyr.cloudfront.net^ +||d2jp0uspx797vc.cloudfront.net^ +||d2jp87c2eoduan.cloudfront.net^ +||d2jtzjb71xckmj.cloudfront.net^ +||d2juccxzu13rax.cloudfront.net^ +||d2jw88zdm5mi8i.cloudfront.net^ +||d2jycu2xjxmle1.cloudfront.net^ +||d2k487jakgs1mb.cloudfront.net^ +||d2k7b1tjy36ro0.cloudfront.net^ +||d2k7gvkt8o1fo8.cloudfront.net^ +||d2kadvyeq051an.cloudfront.net^ +||d2kd9y1bp4zc6.cloudfront.net^ +||d2kecuadujf2df.cloudfront.net^ +||d2kgzdmv0vdycp.cloudfront.net^ +||d2khpmub947xov.cloudfront.net^ +||d2kk0o3fr7ed01.cloudfront.net^ +||d2kldhyijnaccr.cloudfront.net^ +||d2klx87bgzngce.cloudfront.net^ +||d2km1jjvhgh7xw.cloudfront.net^ +||d2kpucccxrl97x.cloudfront.net^ +||d2ksh1ccat0a7e.cloudfront.net^ +||d2kv6n94eruxg9.cloudfront.net^ +||d2l3f1n039mza.cloudfront.net^ +||d2lahoz916es9g.cloudfront.net^ +||d2lg0swrp15nsj.cloudfront.net^ +||d2lkw9p1eo8fp2.cloudfront.net^ +||d2lmura4qilvko.cloudfront.net^ +||d2lmzq02n8ij7j.cloudfront.net^ +||d2lp70uu6oz7vk.cloudfront.net^ +||d2ltukojvgbso5.cloudfront.net^ +||d2lxammzjarx1n.cloudfront.net^ +||d2lzu2a5ishr7o.cloudfront.net^ +||d2m6mzhbzc72b5.cloudfront.net^ +||d2m785nxw66jui.cloudfront.net^ +||d2m94lbnm5w6s8.cloudfront.net^ +||d2mic0r0bo3i6z.cloudfront.net^ +||d2mqdhonc9glku.cloudfront.net^ +||d2muzdhs7lpmo0.cloudfront.net^ +||d2mw3lu2jj5laf.cloudfront.net^ +||d2n2qdkjbbe2l7.cloudfront.net^ +||d2n5v45616cm6u.cloudfront.net^ +||d2na2p72vtqyok.cloudfront.net^ +||d2ng6x3yyemlxz.cloudfront.net^ +||d2nin2iqst0txp.cloudfront.net^ +||d2nlytvx51ywh9.cloudfront.net^ +||d2nz8k4xyoudsx.cloudfront.net^ +||d2o03z2xnyxlz5.cloudfront.net^ +||d2o51l6pktevii.cloudfront.net^ +||d2ob4whwpjvvpa.cloudfront.net^ +||d2ob6t3bgjo11t.cloudfront.net^ +||d2ohmkyg5w2c18.cloudfront.net^ +||d2ojfulajn60p5.cloudfront.net^ +||d2oouw5449k1qr.cloudfront.net^ +||d2osk0po1oybwz.cloudfront.net^ +||d2ov8ip31qpxly.cloudfront.net^ +||d2ovgc4ipdt6us.cloudfront.net^ +||d2oxs0429n9gfd.cloudfront.net^ +||d2oy22m6xey08r.cloudfront.net^ +||d2p0a1tiodf9z9.cloudfront.net^ +||d2p3vqj5z5rdwv.cloudfront.net^ +||d2p6p61as37cfr.cloudfront.net^ +||d2pdbggfzjbhzh.cloudfront.net^ +||d2pnacriyf41qm.cloudfront.net^ +||d2psma0az3acui.cloudfront.net^ +||d2pspvbdjxwkpo.cloudfront.net^ +||d2pxbld8wrqyrk.cloudfront.net^ +||d2q52i8yx3j68p.cloudfront.net^ +||d2q7jbv4xtaizs.cloudfront.net^ +||d2q9y3krdwohfj.cloudfront.net^ +||d2qf34ln5axea0.cloudfront.net^ +||d2qfd8ejsuejas.cloudfront.net^ +||d2qhuw8qcxnldj.cloudfront.net^ +||d2qn0djb6oujlt.cloudfront.net^ +||d2qnx6y010m4rt.cloudfront.net^ +||d2qqc8ssywi4j6.cloudfront.net^ +||d2qz7ofajpstv5.cloudfront.net^ +||d2r2yqcp8sshc6.cloudfront.net^ +||d2r3rw91i5z1w9.cloudfront.net^ +||d2rd7z2m36o6ty.cloudfront.net^ +||d2rseg7z47iaz3.cloudfront.net^ +||d2rsvcm1r8uvmf.cloudfront.net^ +||d2rx475ezvxy0h.cloudfront.net^ +||d2s31asn9gp5vl.cloudfront.net^ +||d2s9nyc35a225l.cloudfront.net^ +||d2sbzwmcg5amr3.cloudfront.net^ +||d2sffavqvyl9dp.cloudfront.net^ +||d2sj2q93t0dtyb.cloudfront.net^ +||d2sn24mi2gn24v.cloudfront.net^ +||d2sp5g360gsxjh.cloudfront.net^ +||d2sucq8qh4zqzj.cloudfront.net^ +||d2t3s3gh1l6poi.cloudfront.net^ +||d2t47qpr8mdhkz.cloudfront.net^ +||d2t72ftdissnrr.cloudfront.net^ +||d2taktuuo4oqx.cloudfront.net^ +||d2tbszkvx1p56e.cloudfront.net^ +||d2tc1zttji8e3a.cloudfront.net^ +||d2tkdzior84vck.cloudfront.net^ +||d2tvgfsghnrkwb.cloudfront.net^ +||d2u2lv2h6u18yc.cloudfront.net^ +||d2u4fn5ca4m3v6.cloudfront.net^ +||d2uaktjl22qvg4.cloudfront.net^ +||d2uap9jskdzp2.cloudfront.net^ +||d2udkjdo48yngu.cloudfront.net^ +||d2uhnetoehh304.cloudfront.net^ +||d2uu46itxfd65q.cloudfront.net^ +||d2uy8iq3fi50kh.cloudfront.net^ +||d2uyi99y1mkn17.cloudfront.net^ +||d2v02itv0y9u9t.cloudfront.net^ +||d2v4wf9my00msd.cloudfront.net^ +||d2va1d0hpla18n.cloudfront.net^ +||d2vmavw0uawm2t.cloudfront.net^ +||d2vorijeeka2cf.cloudfront.net^ +||d2vptth0euqbxm.cloudfront.net^ +||d2vvyk8pqw001z.cloudfront.net^ +||d2vwl2vhlatm2f.cloudfront.net^ +||d2vwsmst56j4zq.cloudfront.net^ +||d2w92zbcg4cwxr.cloudfront.net^ +||d2w9cdu84xc4eq.cloudfront.net^ +||d2werg7o2mztut.cloudfront.net^ +||d2wexw25ezayh1.cloudfront.net^ +||d2wpx0eqgykz4q.cloudfront.net^ +||d2x0u7rtw4p89p.cloudfront.net^ +||d2x19ia47o8gwm.cloudfront.net^ +||d2xct5bvixoxmj.cloudfront.net^ +||d2xng9e6gymuzr.cloudfront.net^ +||d2y1lr6nqzfgkq.cloudfront.net^ +||d2y8ttytgze7qt.cloudfront.net^ +||d2yc6hxtq0phup.cloudfront.net^ +||d2yeczd6cyyd0z.cloudfront.net^ +||d2ykons4g8jre6.cloudfront.net^ +||d2ywv53s25fi6c.cloudfront.net^ +||d2z51a9spn09cw.cloudfront.net^ +||d2zbpgxs57sg1k.cloudfront.net^ +||d2zbrsgwxpxcye.cloudfront.net^ +||d2zcblk8m9mzq5.cloudfront.net^ +||d2zf5gu5e5mp87.cloudfront.net^ +||d2zh7okxrw0ix.cloudfront.net^ +||d2zi8ra5rb7m89.cloudfront.net^ +||d2zk8mk8hghu3d.cloudfront.net^ +||d2zrhnhjlfcuhf.cloudfront.net^ +||d2zzazjvlpgmgi.cloudfront.net^ +||d300jm499woj5o.cloudfront.net^ +||d301cxwfymy227.cloudfront.net^ +||d30sxnvlkawtwa.cloudfront.net^ +||d30tme16wdjle5.cloudfront.net^ +||d30ts2zph80iw7.cloudfront.net^ +||d30vnp3fqcdhq5.cloudfront.net^ +||d30yd3ryh0wmud.cloudfront.net^ +||d313lzv9559yp9.cloudfront.net^ +||d31h09ditj91uf.cloudfront.net^ +||d31m6w8i2nx65e.cloudfront.net^ +||d31mxuhvwrofft.cloudfront.net^ +||d31o2k8hutiibd.cloudfront.net^ +||d31ph8fftb4r3x.cloudfront.net^ +||d31rse9wo0bxcx.cloudfront.net^ +||d31s5xi4eq6l6p.cloudfront.net^ +||d31vxm9ubutrmw.cloudfront.net^ +||d31y1abh02y2oj.cloudfront.net^ +||d325d2mtoblkfq.cloudfront.net^ +||d3291gn845t5h9.cloudfront.net^ +||d32bug9eb0g0bh.cloudfront.net^ +||d32d89surjhks4.cloudfront.net^ +||d32h65j3m1jqfb.cloudfront.net^ +||d32hwlnfiv2gyn.cloudfront.net^ +||d32kwu6pkckni5.cloudfront.net^ +||d32t6p7tldxil2.cloudfront.net^ +||d333p98mzatwjz.cloudfront.net^ +||d33bakhpv0qxhf.cloudfront.net^ +||d33fc9uy0cnxl9.cloudfront.net^ +||d33gmheck9s2xl.cloudfront.net^ +||d33otidwg56k90.cloudfront.net^ +||d33u55zn5p3wfg.cloudfront.net^ +||d33vskbmxds8k1.cloudfront.net^ +||d347nuc6bd1dvs.cloudfront.net^ +||d34cixo0lr52lw.cloudfront.net^ +||d34gjfm75zhp78.cloudfront.net^ +||d34opff713c3gh.cloudfront.net^ +||d34qb8suadcc4g.cloudfront.net^ +||d34rdvn2ky3gnm.cloudfront.net^ +||d34s743ec78v2w.cloudfront.net^ +||d34zwq0l4x27a6.cloudfront.net^ +||d351vdyu7tl62o.cloudfront.net^ +||d3584kspbipfh3.cloudfront.net/cm/ +||d359rg6zejsvwi.cloudfront.net^ +||d359wjs9dpy12d.cloudfront.net^ +||d35fnytsc51gnr.cloudfront.net^ +||d35kbxc0t24sp8.cloudfront.net^ +||d35nmq1qnoxdb9.cloudfront.net^ +||d35ve945gykp9v.cloudfront.net^ +||d362plazjjo29c.cloudfront.net^ +||d36gnquzy6rtyp.cloudfront.net^ +||d36s9tmu0jh8rd.cloudfront.net^ +||d36un5ytqxjgkq.cloudfront.net^ +||d36zfztxfflmqo.cloudfront.net^ +||d370hf5nfmhbjy.cloudfront.net^ +||d379fkejtn2clk.cloudfront.net^ +||d37abonb6ucrhx.cloudfront.net^ +||d37ax1qs52h69r.cloudfront.net^ +||d37byya7cvg7qr.cloudfront.net^ +||d37pempw0ijqri.cloudfront.net^ +||d37sevptuztre3.cloudfront.net^ +||d37tb4r0t9g99j.cloudfront.net^ +||d38190um0l9h9v.cloudfront.net^ +||d38b9p5p6tfonb.cloudfront.net^ +||d38goz54x5g9rw.cloudfront.net^ +||d38itq6vdv6gr9.cloudfront.net^ +||d38psrni17bvxu.cloudfront.net^ +||d38rrxgee6j9l3.cloudfront.net^ +||d390icj1ta4x0p.cloudfront.net^ +||d396osuty6rfec.cloudfront.net^ +||d399jvos5it4fl.cloudfront.net^ +||d39b2npo77gjq2.cloudfront.net^ +||d39hdzmeufnl50.cloudfront.net^ +||d39xdhxlbi0rlm.cloudfront.net^ +||d39xkyrc56llbg.cloudfront.net^ +||d39xxywi4dmut5.cloudfront.net^ +||d3a49eam5ump99.cloudfront.net^ +||d3a781y1fb2dm6.cloudfront.net^ +||d3aajkp07o1e4y.cloudfront.net^ +||d3ahinqqx1dy5v.cloudfront.net^ +||d3akmxskpi6zai.cloudfront.net^ +||d3apzcqz3ghyay.cloudfront.net^ +||d3asksgk2foh5m.cloudfront.net^ +||d3b2hhehkqd158.cloudfront.net^ +||d3b4u8mwtkp9dd.cloudfront.net^ +||d3bbyfw7v2aifi.cloudfront.net^ +||d3beefy8kd1pr7.cloudfront.net^ +||d3bfricg2zhkdf.cloudfront.net^ +||d3boleenfhg2gk.cloudfront.net^ +||d3bviecoc049je.cloudfront.net^ +||d3c3uihon9kmp.cloudfront.net^ +||d3c8j8snkzfr1n.cloudfront.net^ +||d3cesrg5igdcgt.cloudfront.net^ +||d3cl0ipbob7kki.cloudfront.net^ +||d3cod80thn7qnd.cloudfront.net^ +||d3cpib6kv2rja7.cloudfront.net^ +||d3cwzq09n68ejj.cloudfront.net^ +||d3cynajatn2qbc.cloudfront.net^ +||d3d0wndor0l4xe.cloudfront.net^ +||d3d54j7si4woql.cloudfront.net^ +||d3d9gb3ic8fsgg.cloudfront.net^ +||d3d9pt4go32tk8.cloudfront.net^ +||d3dq1nh1l1pzqy.cloudfront.net^ +||d3ea0dyj1ehgcr.cloudfront.net^ +||d3ec0pbimicc4r.cloudfront.net^ +||d3efeah7vk80fy.cloudfront.net^ +||d3ej838ds58re9.cloudfront.net^ +||d3ejxyz09ctey7.cloudfront.net^ +||d3eksfxlf7bv9h.cloudfront.net^ +||d3ep3jwb1mgn3k.cloudfront.net^ +||d3ept9mddcbuhi.cloudfront.net^ +||d3eub2e21dc6h0.cloudfront.net^ +||d3evio1yid77jr.cloudfront.net^ +||d3eyi07eikbx0y.cloudfront.net^ +||d3f1m03rbb66gy.cloudfront.net^ +||d3f1wcxz2rdrik.cloudfront.net^ +||d3f4nuq5dskrej.cloudfront.net^ +||d3f57yjqilgssy.cloudfront.net^ +||d3ff60r8himt67.cloudfront.net^ +||d3flai6f7brtcx.cloudfront.net^ +||d3frqqoat98cng.cloudfront.net^ +||d3g4s1p0bmuj5f.cloudfront.net^ +||d3g5ovfngjw9bw.cloudfront.net^ +||d3gaegctu6cvoa.cloudfront.net^ +||d3gi4w10ruedfh.cloudfront.net^ +||d3glbzj5024wpt.cloudfront.net^ +||d3glxtkdbno0so.cloudfront.net^ +||d3h2eyuxrf2jr9.cloudfront.net^ +||d3hfiiy55cbi5t.cloudfront.net^ +||d3hib26r77jdus.cloudfront.net^ +||d3hitamb7drqut.cloudfront.net^ +||d3hj4iyx6t1waz.cloudfront.net^ +||d3hnq31zdoi8ks.cloudfront.net^ +||d3hs51abvkuanv.cloudfront.net^ +||d3hv9xfqzxy46o.cloudfront.net^ +||d3hyjqptbt9dpx.cloudfront.net^ +||d3hyoy1d16gfg0.cloudfront.net^ +||d3i28n8laz9lyd.cloudfront.net^ +||d3ikgzh4osba2b.cloudfront.net^ +||d3imksvhtbujlm.cloudfront.net^ +||d3ipmxzmjf8cw7.cloudfront.net^ +||d3ithbwcmjcxl7.cloudfront.net^ +||d3j3yrurxcqogk.cloudfront.net^ +||d3j7esvm4tntxq.cloudfront.net^ +||d3j9574la231rm.cloudfront.net^ +||d3jdulus8lb392.cloudfront.net^ +||d3jdzopz39efs7.cloudfront.net^ +||d3jzhqnvnvdy34.cloudfront.net^ +||d3k2wzdv9kuerp.cloudfront.net^ +||d3kblkhdtjv0tf.cloudfront.net^ +||d3kd7yqlh5wy6d.cloudfront.net^ +||d3klfyy4pvmpzb.cloudfront.net^ +||d3kpkrgd3aj4o7.cloudfront.net^ +||d3l320urli0p1u.cloudfront.net^ +||d3lcz8vpax4lo2.cloudfront.net^ +||d3lk5upv0ixky2.cloudfront.net^ +||d3lliyjbt3afgo.cloudfront.net^ +||d3ln1qrnwms3rd.cloudfront.net^ +||d3lppnezw695ey.cloudfront.net^ +||d3lvr7yuk4uaui.cloudfront.net^ +||d3lw2k94jnkvbs.cloudfront.net^ +||d3lwdybbvxc4v9.cloudfront.net^ +||d3m4hp4bp4w996.cloudfront.net^ +||d3m6crjuedf6o.cloudfront.net^ +||d3m8nzcefuqu7h.cloudfront.net^ +||d3m9ng807i447x.cloudfront.net^ +||d3mmnnn9s2dcmq.cloudfront.net/shim/embed.js +||d3mqyj199tigh.cloudfront.net^ +||d3mr7y154d2qg5.cloudfront.net^ +||d3mshiiq22wqhz.cloudfront.net^ +||d3mt4q5p9blrvc.cloudfront.net^ +||d3mzokty951c5w.cloudfront.net^ +||d3n3a4vl82t80h.cloudfront.net^ +||d3n4krap0yfivk.cloudfront.net^ +||d3n7ct9nohphbs.cloudfront.net^ +||d3n9c6iuvomkjk.cloudfront.net^ +||d3nel6rcmq5lzw.cloudfront.net^ +||d3ngt858zasqwf.cloudfront.net^ +||d3nj94pigtgs7y.cloudfront.net^ +||d3numuoibysgi8.cloudfront.net^ +||d3nvrqlo8rj1kw.cloudfront.net^ +||d3nz96k4xfpkvu.cloudfront.net^ +||d3o9njeb29ydop.cloudfront.net^ +||d3og8t183i1vbg.cloudfront.net^ +||d3ohee25hhsn8j.cloudfront.net^ +||d3op2vgjk53ps1.cloudfront.net^ +||d3oq85vya4e39p.cloudfront.net^ +||d3otiqb4j0158.cloudfront.net^ +||d3ou4areduq72f.cloudfront.net^ +||d3oy68whu51rnt.cloudfront.net^ +||d3p260grk3npik.cloudfront.net^ +||d3p8w7to4066sy.cloudfront.net^ +||d3p9nm1ictat1y.cloudfront.net^ +||d3pe8wzpurrzss.cloudfront.net^ +||d3phzb7fk3uhin.cloudfront.net^ +||d3pk1qkob3uzgp.cloudfront.net^ +||d3pvcolmug0tz6.cloudfront.net^ +||d3q33rbmdkxzj.cloudfront.net^ +||d3q762vmkbqrah.cloudfront.net^ +||d3qeaw5w9eu3lm.cloudfront.net^ +||d3qgd3yzs41yp.cloudfront.net^ +||d3qilfrpqzfrg4.cloudfront.net^ +||d3qinhqny4thfo.cloudfront.net^ +||d3qoo9sgtleqbe.cloudfront.net^ +||d3qqmto1pjgya6.cloudfront.net^ +||d3qttli028txpv.cloudfront.net^ +||d3qu0b872n4q3x.cloudfront.net^ +||d3qxd84135kurx.cloudfront.net^ +||d3qygewatvuv28.cloudfront.net^ +||d3rb9wasp2y8gw.cloudfront.net^ +||d3rjndf2qggsna.cloudfront.net^ +||d3rkkddryl936d.cloudfront.net^ +||d3rlh0lneatqqc.cloudfront.net^ +||d3rr3d0n31t48m.cloudfront.net^ +||d3rxqouo2bn71j.cloudfront.net^ +||d3s40ry602uhj1.cloudfront.net^ +||d3sdfpysdncs72.cloudfront.net^ +||d3sdg6egu48sqx.cloudfront.net^ +||d3skqyr7uryv9z.cloudfront.net^ +||d3sof4x9nlmbgy.cloudfront.net^ +||d3srxd2wvksmqd.cloudfront.net^ +||d3t16rotvvsanj.cloudfront.net^ +||d3t3bxixsojwre.cloudfront.net^ +||d3t3lxfqz2g5hs.cloudfront.net^ +||d3t3z4teexdk2r.cloudfront.net^ +||d3t5ngjixpjdho.cloudfront.net^ +||d3t87ooo0697p8.cloudfront.net^ +||d3t9wb555jg65y.cloudfront.net^ +||d3tfeohk35h2ye.cloudfront.net^ +||d3tfz9q9zlwk84.cloudfront.net^ +||d3tjml0i5ek35w.cloudfront.net^ +||d3tnmn8yxiwfkj.cloudfront.net^ +||d3tozt7si7bmf7.cloudfront.net^ +||d3u0wd7ppfhcxv.cloudfront.net^ +||d3u598arehftfk.cloudfront.net^ +||d3ubdcv1nz4dub.cloudfront.net^ +||d3ud741uvs727m.cloudfront.net^ +||d3ugwbjwrb0qbd.cloudfront.net^ +||d3uj0uhi43axgb.cloudfront.net^ +||d3uqm14ppr8tkw.cloudfront.net^ +||d3uvwdhukmp6v9.cloudfront.net^ +||d3v3bqdndm4erx.cloudfront.net^ +||d3vnm1492fpnm2.cloudfront.net^ +||d3vp85u5z4wlqf.cloudfront.net^ +||d3vpf6i51y286p.cloudfront.net^ +||d3vsc1wu2k3z85.cloudfront.net^ +||d3vvrup2jpfiep.cloudfront.net^ +||d3vw4uehoh23hx.cloudfront.net^ +||d3x0jb14w6nqz.cloudfront.net^ +||d3yl7tmbqe1mq.cloudfront.net^ +||d3zd5ejbi4l9w.cloudfront.net^ +||d415l8qlhk6u6.cloudfront.net^ +||d41j1hzuhqg2.cloudfront.net^ +||d4bt5tknhzghh.cloudfront.net^ +||d4bx2if8xmi89.cloudfront.net^ +||d4eqyxjqusvjj.cloudfront.net^ +||d4ngwggzm3w7j.cloudfront.net^ +||d5d3sg85gu7o6.cloudfront.net^ +||d5onopbfw009h.cloudfront.net^ +||d5wxfe8ietrpg.cloudfront.net^ +||d5xsfddfzb99g.cloudfront.net^ +||d63a3au5lqmtu.cloudfront.net^ +||d6cto2pyf2ks.cloudfront.net^ +||d6deij4k3ikap.cloudfront.net^ +||d6l5p6w9iib9r.cloudfront.net^ +||d6sav80kktzcx.cloudfront.net^ +||d6wzv57amlrv3.cloudfront.net^ +||d7016uqa4s0lw.cloudfront.net^ +||d7dza8s7j2am6.cloudfront.net^ +||d7gse3go4026a.cloudfront.net^ +||d7jpk19dne0nn.cloudfront.net^ +||d7oskmhnq7sot.cloudfront.net^ +||d7po8h5dek3wm.cloudfront.net^ +||d7tst6bnt99p2.cloudfront.net^ +||d85wutc1n854v.cloudfront.net^$domain=~wrapbootstrap.com +||d8a69dni6x2i5.cloudfront.net^ +||d8bsqfpnw46ux.cloudfront.net^ +||d8cxnvx3e75nn.cloudfront.net^ +||d8dcj5iif1uz.cloudfront.net^ +||d8dkar87wogoy.cloudfront.net^ +||d8hdm94ldw8yr.cloudfront.net^ +||d8sllv1cwflbw.cloudfront.net^ +||d8xy39jrbjbcq.cloudfront.net^ +||d91i6bsb0ef59.cloudfront.net^ +||d9b5gfwt6p05u.cloudfront.net^ +||d9c5dterekrjd.cloudfront.net^ +||d9cshxmf0qazr.cloudfront.net^ +||d9leupuz17y6i.cloudfront.net^ +||d9qjkk0othy76.cloudfront.net^ +||d9r4lqt28t1fm.cloudfront.net^ +||d9yk47of1efyy.cloudfront.net^ +||da26k71rxh0kb.cloudfront.net^ +||da327va27j0hh.cloudfront.net^ +||da3uf5ucdz00u.cloudfront.net^ +||da4talg8ap14y.cloudfront.net^ +||da5h676k6d22w.cloudfront.net^ +||da656buijq2gw.cloudfront.net^ +||da6zbf1armlme.cloudfront.net^ +||dagd0kz7sipfl.cloudfront.net^ +||dal9hkyfi0m0n.cloudfront.net^ +||day13vh1xl0gh.cloudfront.net^ +||dazu57wmpm14b.cloudfront.net^ +||db033pq6bj64g.cloudfront.net^ +||db4zl9wffwnmb.cloudfront.net^ +||dba9ytko5p72r.cloudfront.net^ +||dbcdqp72lzmvj.cloudfront.net^ +||dbfu2bd09j3ln.cloudfront.net^ +||dbfv8ylr8ykfg.cloudfront.net^ +||dbrpevozgux5y.cloudfront.net^ +||dbujksp6lhljo.cloudfront.net^ +||dbw7j2q14is6l.cloudfront.net^ +||dby7kx9z9yzse.cloudfront.net^ +||dbyxtcim1rhba.cloudfront.net^ +||dc08i221b0n8a.cloudfront.net^ +||dc5k8fg5ioc8s.cloudfront.net^ +||dcai7bdiz5toz.cloudfront.net^ +||dcbbwymp1bhlf.cloudfront.net^ +||dczhbhtz52fpi.cloudfront.net^ +||dd6ym5in4ovm3.cloudfront.net^ +||ddlh1467paih3.cloudfront.net^ +||ddmuiijrdvv0s.cloudfront.net^ +||ddrvjrfwnij7n.cloudfront.net^ +||ddvbjehruuj5y.cloudfront.net^ +||ddvfoj5yrl2oi.cloudfront.net^ +||ddxwjtou7avz0.cloudfront.net^ +||ddzswov1e84sp.cloudfront.net^ +||de2nsnw1i3egd.cloudfront.net^ +||dea9webxhb7gu.cloudfront.net^ +||defppmasu35cw.cloudfront.net^ +||deguxtdhf6d01.cloudfront.net^ +||deisd5o6v8rgq.cloudfront.net^ +||desgao1zt7irn.cloudfront.net^ +||dew9ckzjyt2gn.cloudfront.net^ +||df6pt2obl092n.cloudfront.net^ +||df80k0z3fi8zg.cloudfront.net^ +||dfh48z16zqvm6.cloudfront.net^ +||dfidhqoaunepq.cloudfront.net^ +||dfiqvf0syzl54.cloudfront.net^ +||dfmpe7igjx4jo.cloudfront.net^ +||dfqcp2awt0947.cloudfront.net^ +||dfwbfr2blhmr5.cloudfront.net^ +||dfwp6qatulz0p.cloudfront.net^ +||dg0hrtzcus4q4.cloudfront.net^ +||dg6gu9iqplusg.cloudfront.net^ +||dg7k1tpeaxzcq.cloudfront.net^ +||dg9sw33hxt5i7.cloudfront.net^ +||dgaf2ncy4dtan.cloudfront.net^ +||dgw7ae5vrovs7.cloudfront.net^ +||dgyrizngtcfck.cloudfront.net^ +||dh6dm31izb875.cloudfront.net^ +||dh8azcl753e1e.cloudfront.net^ +||dhcmni6m2kkyw.cloudfront.net^ +||dhrhzii89gpwo.cloudfront.net^ +||di028lywwye7s.cloudfront.net^ +||di2e2m1cmrtc9.cloudfront.net^ +||di2xlfgjbl0v7.cloudfront.net^ +||dihutyaiafuhr.cloudfront.net^ +||dil4q0t0blrf8.cloudfront.net^ +||dilvyi2h98h1q.cloudfront.net^ +||diqftdf1fp8u.cloudfront.net^ +||dita6jhhqwoiz.cloudfront.net^ +||divekcl7q9fxi.cloudfront.net^ +||diz4z73aymwyp.cloudfront.net^ +||djgnqo9p1icyr.cloudfront.net^ +||djm080u34wfc5.cloudfront.net^ +||djnaivalj34ub.cloudfront.net^ +||djr4k68f8n55o.cloudfront.net^ +||djucew6ul1t0k.cloudfront.net^ +||djv99sxoqpv11.cloudfront.net^ +||djvby0s5wa7p7.cloudfront.net^ +||djz9es32qen64.cloudfront.net^ +||dk4w74mt6naf3.cloudfront.net^ +||dk57sacpbi4by.cloudfront.net^ +||dkgp834o9n8xl.cloudfront.net^ +||dkm6b5q0h53z4.cloudfront.net^ +||dknnlu3s1bnz7.cloudfront.net^ +||dkre4lyk6a9bt.cloudfront.net^ +||dktr03lf4tq7h.cloudfront.net^ +||dkvtbjavjme96.cloudfront.net^ +||dkyp75kj7ldlr.cloudfront.net^ +||dl37p9e5e1vn0.cloudfront.net^ +||dl4d3y1ajyv3q.cloudfront.net^ +||dl5ft52dtazxd.cloudfront.net^ +||dlem1deojpcg7.cloudfront.net^ +||dlh8c15zw7vfn.cloudfront.net^ +||dlk457skl57zp.cloudfront.net^ +||dlmr7hpb2buud.cloudfront.net^ +||dlne6myudrxi1.cloudfront.net^ +||dlooqrhebkjoh.cloudfront.net^ +||dlrioxg1637dk.cloudfront.net^ +||dltqxz76sim1s.cloudfront.net^ +||dltvkwr7nbdlj.cloudfront.net^ +||dlvds9i67c60j.cloudfront.net^ +||dlxk2dj1h3e83.cloudfront.net^ +||dm0acvguygm9h.cloudfront.net^ +||dm0ly9ibqkdxn.cloudfront.net^ +||dm0t14ck8pg86.cloudfront.net^ +||dm50eugvywuiu.cloudfront.net^ +||dm62uysn32ppt.cloudfront.net^ +||dm7gsepi27zsx.cloudfront.net^ +||dm7ii62qkhy9z.cloudfront.net^ +||dmeq7blex6x1u.cloudfront.net^ +||dmg0877nfcvqj.cloudfront.net^ +||dmkdtkad2jyb9.cloudfront.net^ +||dmmzkfd82wayn.cloudfront.net^ +||dmz3nd5oywtsw.cloudfront.net^ +||dn3uy6cx65ujf.cloudfront.net^ +||dn6rwwtxa647p.cloudfront.net^ +||dn7u3i0t165w2.cloudfront.net^ +||dn9uzzhcwc0ya.cloudfront.net^ +||dne6rbzy5csnc.cloudfront.net^ +||dnf06i4y06g13.cloudfront.net^ +||dnhfi5nn2dt67.cloudfront.net^ +||dnks065sb0ww6.cloudfront.net^ +||dnre5xkn2r25r.cloudfront.net^ +||do0digwedphcm.cloudfront.net^ +||do1dns3y1w33m.cloudfront.net^ +||do6256x8ae75.cloudfront.net^ +||do69ll745l27z.cloudfront.net^ +||doc830ytc7pyp.cloudfront.net^ +||dodk8rb03jif9.cloudfront.net^ +||dof9zd9l290mz.cloudfront.net^ +||dog89nqcp3al4.cloudfront.net^ +||doinntz6jwzoh.cloudfront.net^ +||dojx47ab4dyxi.cloudfront.net^ +||dojy0dg181308.cloudfront.net^ +||doo9gpa5xdov2.cloudfront.net^ +||dp45nhyltt487.cloudfront.net^ +||dp94m8xzwqsjk.cloudfront.net^ +||dpd9yiocsyy6p.cloudfront.net^ +||dpirwgljl6cjp.cloudfront.net^ +||dpjf9a2rbjbvp.cloudfront.net^ +||dpjlvaveq1byu.cloudfront.net^ +||dpsq2uzakdgqz.cloudfront.net^ +||dpst35vkvd2u3.cloudfront.net^ +||dpuz3hexyabm1.cloudfront.net^ +||dq3yxnlzwhcys.cloudfront.net^ +||dqd5t8xfxmhi7.cloudfront.net^ +||dqv45r33u0ltv.cloudfront.net^ +||dr3k6qonw2kee.cloudfront.net^ +||dr6su5ow3i7eo.cloudfront.net^ +||dr8pk6ovub897.cloudfront.net^ +||drbccw04ifva6.cloudfront.net^ +||drda5yf9kgz5p.cloudfront.net^ +||drf8e429z5jzt.cloudfront.net^ +||drulilqe8wg66.cloudfront.net^ +||drvdb9rcebidk.cloudfront.net^ +||ds02gfqy6io6i.cloudfront.net^ +||ds88pc0kw6cvc.cloudfront.net^ +||dsb6jelx4yhln.cloudfront.net^ +||dscex7u1h4a9a.cloudfront.net^ +||dsghhbqey6ytg.cloudfront.net^ +||dsh7ky7308k4b.cloudfront.net^ +||dsnymrk0k4p3v.cloudfront.net^ +||dsuyzexj3sqn9.cloudfront.net^ +||dt3y1f1i1disy.cloudfront.net^ +||dtakdb1z5gq7e.cloudfront.net^ +||dtmm9h2satghl.cloudfront.net^ +||dtpbt6teapmm3.cloudfront.net^ +||dtq9oy2ckjhxu.cloudfront.net^ +||dtu2kitmpserg.cloudfront.net^ +||dtv5loup63fac.cloudfront.net^ +||dtv5ske218f44.cloudfront.net^ +||dtyry4ejybx0.cloudfront.net^ +||du002iv2rxh4h.cloudfront.net^ +||du01z5hhojprz.cloudfront.net^ +||du0pud0sdlmzf.cloudfront.net^ +||du2uh7rq0r0d3.cloudfront.net^ +||du99h8anpnevg.cloudfront.net^ +||due5a6x777z0x.cloudfront.net^ +||dufai4b1ap33z.cloudfront.net^ +||duh0b8nl8uhfn.cloudfront.net^ +||dupcczkfziyd3.cloudfront.net^ +||duqamtr9ifv5t.cloudfront.net^ +||duy1ol4n1csnp.cloudfront.net^ +||duz64ud8y8urc.cloudfront.net^ +||dv663fc06d35i.cloudfront.net^ +||dv7t7qyvgyrt5.cloudfront.net^ +||dv8v1cvc98vkm.cloudfront.net^ +||dvc8653ec6uyk.cloudfront.net^ +||dvh66m0o7et0z.cloudfront.net^ +||dvl8xapgpqgc1.cloudfront.net^ +||dvmdwmnyj3u4h.cloudfront.net^ +||dvwowtnmyluv4.cloudfront.net^ +||dw55pg05c2rl5.cloudfront.net^ +||dw7vmlojkx16k.cloudfront.net^ +||dw85st0ijc8if.cloudfront.net^ +||dw9uc6c6b8nwx.cloudfront.net^ +||dwd11wtouhmea.cloudfront.net^ +||dwebwj8qthne8.cloudfront.net^ +||dwene4pgj0r33.cloudfront.net^ +||dwfbs38k9z6bu.cloudfront.net^ +||dwnm2295blvjq.cloudfront.net^ +||dwr3zytn850g.cloudfront.net^ +||dxgo95ahe73e8.cloudfront.net^ +||dxh2ivs16758.cloudfront.net^ +||dxj6cq8hj162l.cloudfront.net^ +||dxk5g04fo96r4.cloudfront.net^ +||dxkkb5tytkivf.cloudfront.net^ +||dxprljqoay4rt.cloudfront.net^ +||dxz454z33ibrc.cloudfront.net^ +||dy5t1b0a29j1v.cloudfront.net^ +||dybxezbel1g44.cloudfront.net^ +||dyh1wzegu1j6z.cloudfront.net^ +||dyj8pbcnat4xv.cloudfront.net^ +||dykwdhfiuha6l.cloudfront.net^ +||dyodrs1kxvg6o.cloudfront.net^ +||dyrfxuvraq0fk.cloudfront.net^ +||dysuze6ljcmcr.cloudfront.net^ +||dyv1bugovvq1g.cloudfront.net^ +||dz6uw9vrm7nx6.cloudfront.net^ +||dzbkl37t8az8q.cloudfront.net^ +||dzdgfp673c1p0.cloudfront.net^ +||dzr4v2ld8fze2.cloudfront.net^ +||dzu5p9pd5q24b.cloudfront.net^ +||dzupi9b81okew.cloudfront.net^ +||dzv1ekshu2vbs.cloudfront.net^ +||dzxr711a4yw31.cloudfront.net^ +! Google Hosted scripts +||googleapis.com/qmftp/$script +! Anti-Adblock +||anti-adblock.herokuapp.com^ + +! *** easylist:easylist/easylist_thirdparty_popup.txt *** +||123-stream.org^$popup +||1winpb.com^$popup +||6angebot.ch^$popup,third-party +||a1087.b.akamai.net^$popup +||ad.22betpartners.com^$popup +||adblockeromega.com^$popup +||adcleanerpage.com^$popup +||addefenderplus.info^$popup +||adobe.com/td_redirect.html$popup +||ads.planetwin365affiliate.com^$popup,third-party +||affiliates.fantasticbet.com^$popup +||amazing-dating.com^$popup +||americascardroom.eu/ads/$popup,third-party +||avatrade.io/ads/$popup +||banners.livepartners.com^$popup +||best-global-apps.com^$popup +||bestanimegame.com^$popup +||bestsurferprotector.com^$popup,third-party +||bet365.com^*affiliate=$popup +||bettingpremier.com/direct/$popup +||betzone2000.com^$popup +||brazzers.com/click/$popup +||canyoublockit.com^$popup,third-party +||cdn.optmd.com^$popup +||chaturbate.com/affiliates/$popup +||chinesean.com/affiliate/$popup +||consali.com^$popup +||cute-cursor.com^$popup +||cyberprivacy.pro^$popup +||dafabet.odds.am^$popup +||daily-guard.net^$popup +||datacluster.club^$popup +||dianomi.com^$popup +||downloadoperagx.com/ef/$popup +||dreamytabs.com^$popup +||eatcells.com/land/$popup +||esports1x.com^$popup +||fastclick.net^$popup +||firstload.de^$popup +||fleshlight.com/?link=$popup +||flirt.com/aff.php?$popup +||freeadblockerbrowser.com^$popup +||freegamezone.net^$popup +||fwmrm.net^$popup +||get-express-vpn.online^$popup +||get-express-vpns.com^$popup +||getflowads.net^$popup +||ggbet-online.net^$popup +||ggbetapk.com^$popup,third-party +||ggbetpromo.com^$popup +||giftandgamecentral.com^$popup +||global-adblocker.com^$popup +||go.aff.estrelabetpartners.com^$popup +||go.camterest.com^$popup +||go.thunder.partners^$popup +||goodoffer24.com/go/$popup +||google.com/favicon.ico$popup +||greenadblocker.com^$popup +||insideoftech.com^$popup,third-party +||iqbroker.com/land/$popup +||iqbroker.com/lp/*?aff=$popup +||iqoption.com/land/$popup +||iyfsearch.com^$popup +||lbank.com/partner_seo/$popup +||link.365av.net^$popup +||linkbux.com/track?$popup +||lpquizzhubon.com^$popup +||mmentorapp.com^$popup +||ntrfr.leovegas.com^$popup +||nutaku.net/images/lp/$popup +||offer.alibaba.com/cps/*rc=$popup +||omegadblocker.com^$popup +||paid.outbrain.com^$popup +||popgoldblocker.info^$popup +||promo.pixelsee.app^$popup +||protected-redirect.click^$popup +||quantumadblocker.com^$popup +||random-affiliate.atimaze.com^$popup +||s.click.aliexpress.com/e/*?dp=$popup +||serve.prestigecasino.com^$popup +||serve.williamhillcasino.com^$popup +||skipvideoads.com^$popup +||smartblocker.org^$popup +||somebestgamesus.com^$popup +||spanpromo-link.com^$popup +||stake.com/*&clickId=$popup +||teenfinder.com/landing/$popup,third-party +||theeverydaygame.com/lg/$popup,third-party +||theyellownewtab.com^$popup +||topgurudeals.com^$popup +||track.kinetiksoft.com^$popup +||track.livesportnet.com^$popup +||ublockpop.com^$popup +||unibet.co.uk/*affiliate$popup +||verdecasino-offers.com^$popup +||vid-adblocker.com^$popup +||vulkan-bt.com^$popup +||vulkanbet.me^$popup +||werbestandard.de/out2/$popup +||whataboutnews.com^$popup +||yield.app^*utm_source=$popup + +! *** easylist:easylist_adult/adult_thirdparty.txt *** +||18onlygirls.tv/wp-content/banners/ +||365.freeonlinegayporn.com^ +||3xplanetimg2.com/promo/iIRT8d.gif +||3xtraffic.com/ads/ +||3xtraffic.com/common/000/cads/ +||444.thebussybandit.com^ +||4tube.com/iframe/$third-party +||69games.xxx/ajax/skr? +||879.thebussybandit.com^ +||a.aylix.xyz^ +||a.cylek.site^ +||a.gemen.site^ +||a.hymin.xyz^ +||a.jamni.xyz^ +||a.teencfnm.com^ +||a.xvidxxx.com^ +||a1tb.com/300x250$subdocument +||ad2.freeasianmovies.cam^ +||ad7.cuteasianvideos.store^ +||ad8.hottestasians.pics^ +||adspy.hdthot.com^ +||adult.xyz^$script,third-party +||adultfriendfinder.com/go/$third-party +||adultfriendfinder.com/piclist? +||adultfriendfinder.com^*/affiliate/$third-party +||aff-jp.dxlive.com^ +||affiliate.dtiserv.com^ +||affiliates.thrixxx.com^ +||am.justtube.net^ +||amarotic.com/Banner/$third-party +||amateur.tv/cacheableAjax/$subdocument +||amateur.tv/freecam/$third-party +||amateurporn.net^$third-party +||ams.lustytube.net^ +||anacams.com/cdn/top. +||api.bluerunningshadow.com^ +||api.dancedogwhisper.com^ +||api.fastmoonclimbed.com^ +||app.189tutors.com^ +||app.phimvu.app^ +||apps.dfgtfv.com^ +||apu.hentaibox.xyz^ +||as1.maturexxx.vip^ +||as3.hotasiangirl.xyz^ +||asg.aphex.me^ +||asg.bhabhiporn.pro^ +||asg.irontube.net^ +||asg.likexxxtube.com^ +||asg.moviesex.org^ +||asg.pornvids.fr^ +||asg.prettytube.net^ +||asg.sdtraff.com^ +||asg.xnxxxnxx.site^ +||asi.linksex.club^ +||asianbutterflies.com/potd/ +||asktiava.com/promotion/ +||asp.sexmy.site^ +||atlasfiles.com^*/sp3_ep.js$third-party +||av.sharktube.net^ +||avatraffic.com/b/ +||awestat.com^*/banner/ +||b.seksohub.com^ +||b.xlineker.com^ +||babes-mansion.s3.amazonaws.com^ +||bangdom.com^$third-party +||banner.themediaplanets.com^ +||banners.adultfriendfinder.com^ +||banners.alt.com^ +||banners.amigos.com^ +||banners.fastcupid.com^ +||banners.fuckbookhookups.com^ +||banners.nostringsattached.com^ +||banners.outpersonals.com^ +||banners.passion.com^ +||banners.payserve.com^ +||banners.videosecrets.com^ +||bannershotlink.perfectgonzo.com^ +||bans.bride.ru^ +||blacksonblondes.com/banners/ +||bongacams.com/promo.php +||bongacash.com/tools/promo.php +||br.fling.com^ +||brazzers.com/ads/ +||bullz-eye.com/blog_ads/ +||bullz-eye.com/images/ads/ +||bursa.conxxx.pro^ +||byxxxporn.com/300x250.html +||c.seksohub.com^ +||c3s.bionestraff.pro^ +||ca.fapnow.xxx^ +||ca.lesbianbliss.com^ +||cam-content.com/banner/$third-party +||camonster.io^$third-party +||cams.com/go/$third-party +||cams.enjoy.be^ +||camsaim.com/in/ +||camsoda.com/promos/ +||camspacelive.com/widgets/ +||cash.femjoy.com^ +||cdn.007moms.com^ +||cdn.sphinxtube.com^ +||cdn.throatbulge.com^ +||cdn.turboviplay.com/ads.js +||cdn3.hentaihand.com^ +||chaturbate.com/affiliates/ +||chaturbate.com/creative/ +||chaturbate.com/in/ +||cldup.com^$domain=androidadult.com +||cmix.org/teasers/ +||content.spmediacdn.com/site/banner.html +||crakrevenue.go2cloud.org^ +||creamgoodies.com/potd/ +||creative.141live.com^ +||creative.19sex.live^ +||creative.camonade.com^ +||creative.camsplanetlive.com^ +||creative.favy.cam^ +||creative.javhdporn.live^ +||creative.live.javdock.com^ +||creative.myasian.live/widgets/ +||creative.myavlive.com^ +||creative.mzansifun.co.za^ +||creative.nudelive.store^ +||creative.ohmycams.com^ +||creative.strip.chat^ +||creative.stripchat.com^ +||creative.stripchat.global^ +||creative.strpjmp.com^ +||creative.tklivechat.com^ +||creative.usasexcams.com^ +||crumpet.xxxpornhd.pro^ +||cuckoldland.com/CuckoldLand728-X-90-2.gif +||cum.org^$subdocument,third-party +||d.seksohub.com^ +||ddfcash.com^$third-party +||deliver.ptgncdn.com^ +||dq06u9lt5akr2.cloudfront.net^ +||dscgirls.live/*/vast$third-party +||e.seksohub.com^ +||ero-labs.com/adIframe/ +||eroan.xyz/wp-comment/?form=$subdocument +||erokuni.xyz/wp-comment/?form=$subdocument +||f.seksohub.com^ +||f5w.prettytube.net^ +||fansign.streamray.com^ +||faphouse.com/widget/ +||faphouse.com^$subdocument,third-party +||faptrex.com/fire/popup.js +||fbooksluts.com^$third-party +||feeds.videosz.com^ +||fleshlight.com/images/banners/ +||fpcplugs.com/do.cgi?widget= +||free.srcdn.xyz^ +||freesexcam365.com/in/ +||funniestpins.com/istripper-black-small.jpg$third-party +||ga.tubepork.com^ +||ga.xxxhd.icu^ +||games-direct.skynetworkcdn.com^$subdocument,third-party +||gammae.com/famedollars/$third-party +||geobanner.adultfriendfinder.com^ +||geobanner.alt.com^ +||geobanner.blacksexmatch.com^$third-party +||geobanner.fuckbookhookups.com^$third-party +||geobanner.hornywife.com^ +||geobanner.sexfinder.com^$third-party +||georealcdn.com/exo/ +||gettubetv.com^$third-party +||gfrevenge.com/vbanners/ +||girls-games.org/bnr/ +||go.bigbang.solutions^ +||go.clickwhore.com^ +||go.telorku.xyz/hls/iklan.js +||go2cdn.org/brand/$third-party +||gpt.milftube.mobi^ +||gpt.throatbulge.com^ +||gpt.tubetruck.com^ +||hardbritlads.com/banner/ +||hardcoreluv.com/hmt.gif +||hcjs.nv7s.com/dewijzyo/ +||hdpornphotos.com/images/728x180_ +||hdpornphotos.com/images/banner_ +||hentaibaka.one^$script,third-party +||hentaiboner.com/wp-content/uploads/2022/07/hentai-boner-gif.gif +||hentaikey.com/images/banners/ +||hentaiworldtv.b-cdn.net/wp-content/uploads/2023/11/ark1.avif +||highway.18manwa.com^ +||hime-books.xyz/wp-comment/?form=$subdocument +||hodun.ru/files/promo/ +||homoactive.tv/banner/ +||hostave3.net/hvw/banners/ +||hostedmovieupdates.aebn.net^$domain=datingpornstar.com +||hosting24.com/images/banners/$third-party +||hotadultvids.com^$third-party +||hotcaracum.com/banner/ +||hotkinkyjo.xxx/resseler/banners/ +||hotmovies.com/custom_videos.php? +||iframe.adultfriendfinder.com^$third-party +||ifriends.net^$subdocument,third-party +||ifuckedyourgf.com/api/spots/ +||ignore.hot-bbw-tube.com^ +||ihookup.com/configcreatives/ +||images.elenasmodels.com/Upload/$third-party +||imctransfer.com^*/promo/ +||imperiohentai.com/delivery/ +||io.fapnow.xxx^ +||istripper.com^$third-party,domain=~istripper.eu +||jav.sb/videojs/300x100.php +||javhd.com/sb/javhd-970x170.jpg +||kau.li/yad.js +||kenny-glenn.net^*/longbanner_$third-party +||ladyboygoo.com/lbg/banners/ +||lb-69.com/pics/ +||level.18huhu.com^ +||lifeselector.com/iframetool/$third-party +||linksfree.site/pop.php +||livejasmin.com^$third-party,domain=~awempire.com +||livesexasian.com^$subdocument,third-party +||long.hentaihy.com^ +||loveme.com^$third-party +||lovense.com/UploadFiles/Temp/$third-party +||m5r.hoes.tube^ +||makumva.all-usanomination.com^ +||media.eurolive.com^$third-party +||media.mykodial.com^$third-party +||mediacandy.ai^$third-party +||metartmoney.com^$third-party +||minus.akirashentai.com^ +||mjedge.net/js/customscript.js +||mrskin.com/affiliateframe/ +||mrvids.com/network/ +||my-dirty-hobby.com/?sub=$third-party +||my.007moms.com^ +||mycams.com/freechat.php? +||mykocam.com/js/feeds.js +||mysexjourney.com/revenue/ +||n.clips4sale.com^$third-party +||n2.clips4sale.com^$third-party +||naked.com/promos/ +||nakedly.ai^$third-party +||nakedswordcashcontent.com/videobanners/ +||naughtycdn.com/public/iframes/ +||netlify.app/tags/ninja_$subdocument +||new.plus-eromanga.com^ +||nnteens.com/ad$subdocument +||nubiles.net/webmasters/promo/ +||nude.hu/html/$third-party +||openadultdirectory.com/banner- +||otcash.com/images/ +||paperstreetcash.com/banners/$third-party +||partner.loveplanet.ru^ +||parts.akibablog.net^$subdocument +||partwithner.com/partners/ +||pcash.imlive.com^ +||pimpandhost.com/site/trending-banners +||pinkvisualgames.com/?revid= +||pirogad.tophosting101.com^ +||pixel-vault.com/image/$third-party +||pod.xpress.com^ +||pokazuwka.com/popu/ +||popteen.pro/300x250.php +||porndeals.com^$subdocument,third-party +||porngamespass.com/iframes/ +||pornintellect.com/banner/ +||prettyincash.com/premade/ +||prettytube.net^$third-party +||privatamateure.com/promotion/ +||private.com/banner/ +||promo.blackdatehookup.com^ +||promo.cams.com^ +||promos.camsoda.com^ +||promos.gpniches.com^ +||promos.meetlocals.com^ +||ptcdn.mbicash.nl^ +||pussycash.com/content/banners/ +||pussysaga.com/gb/ +||q.tubetruck.com^ +||qa.hdclips.fun^ +||r18.com/track/ +||rabbitporno.com/friends/ +||rabbitporno.com/iframes/ +||realitykings.com/vbanners/ +||redhotpie.com.au^$domain=couplesinternational.com +||rhinoslist.com/sideb/get_laid-300.gif +||rss.dtiserv.com^ +||ruscams.com/promo/ +||s.bussyhunter.com^ +||s.dspbw7.com^ +||saboom.com.pccdn.com^*/banner/ +||sakuralive.com/dynamicbanner/ +||scoreland.com/banner/ +||sexei.net^$subdocument,xmlhttprequest +||sexgangsters.com/sg-banners/ +||sexmature.fun/myvids/ +||sextubepromo.com/ubr/ +||sexvid.pro/ysla/ +||sexy.fling.com^$third-party +||sexycams.com/exports/$third-party +||share-image.com/borky/ +||sheeme.com/affiliates/$third-party +||shemalenova.com/smn/banners/ +||simonscans.com/banner/ +||skeeping.com/live/$subdocument,third-party +||skyprivate.com^*/external/$third-party +||smartmovies.net/promo_$third-party +||smpop.icfcdn.com^$third-party +||smyw.org/popunder.min.js +||smyw.org/smyw_anima_1.gif +||snrcash.com/profilerotator/$third-party +||spearmint4334.gb.net^ +||st.asiaxbit.com^ +||st.ipornia.com^$third-party +||streamen.com/exports/$third-party +||stripchat.com/api/external/ +||stripchat.com^*/widget/$third-party +||sub1.gebeall.info^ +||sub2.abcbest.info^ +||swurve.com/affiliates/ +||t.c-c.one/b/ +||t.c-c.one/z/ +||target.vivid.com^$third-party +||tbib.org/gaming/ +||teamskeetimages.com/st/banners/$third-party +||th.milftube.mobi^ +||th.tubetruck.com^ +||theporndude.com/graphics/tpd-$third-party +||tlavideo.com/affiliates/$third-party +||tm-banners.gamingadult.com^ +||tm-offers.gamingadult.com^ +||tongabonga.com/nudegirls +||tools.bongacams.com^$third-party +||track.cam4tracking.com^ +||track.xtrasize.nl^$third-party +||twincdn.com/channels/ +||twincdn.com/special/ +||twincdn.com/video/ +||undress.app/ad_banners/ +||unpin.hothomefuck.com^ +||unpkg.com/videojs-vast-vpaid@ +||up.nextfunup.com^ +||uploadgig.com/static_/$third-party +||upsellit.com/custom/$third-party +||uselessjunk.com^$domain=yoloselfie.com +||vfreecams.com^$third-party +||vidz.com/promo_banner/$third-party +||vigrax.pl/banner/ +||visit-x.net/promo/$third-party +||vodconcepts.com^*/banners/ +||vs4.com/req.php?z= +||vtbe.to/vtu_$script +||webcams.com/js/im_popup.php? +||webcams.com/misc/iframes_new/ +||wecvhi.ekftei2weudt.info^ +||widget.faphouse.com^$third-party +||widgets.comcontent.net^ +||widgets.guppy.live^$third-party +||wp-script.com/img/banners/ +||ww.sphinxtube.com^ +||www.kiki18.com^ +||www.xz8.ru^ +||xlgirls.com/banner/$third-party +||xnxx.army/click/ +||xtrasize.pl/banner/ +||xxx.sdtraff.com^ +||y.sphinxtube.com^ +||yaanom.tentenhunukwa.space^ + +! *** easylist:easylist_adult/adult_thirdparty_popup.txt *** +||ad.pornimg.xyz^$popup +||adultfriendfinder.com/banners/$popup,third-party +||benaughty.com^$popup +||bongacams8.com/track?$popup +||brazzerssurvey.com^$popup +||cam4.com/?$popup +||cam4.com^*&utm_source=$popup +||camonster.com/landing/$popup,third-party +||clicks.istripper.com/ref.php?$popup,third-party +||crmapt.livejasmin.com^$popup +||crmt.livejasmin.com^$popup +||crpdt.livejasmin.com^$popup +||crpop.livejasmin.com^$popup +||crprt.livejasmin.com^$popup +||fantasti.cc/ajax/gw.php?$popup +||fapcandy.com^$popup,third-party +||flirthits.com/landing/$popup +||go.clickwhore.com^$popup +||go.xhamsterlive.com^$popup +||hentaiheroes.com/landing/$popup,third-party +||icgirls.com^$popup +||imlive.com/wmaster.ashx?$popup,third-party +||info-milfme.com/landing/$popup +||ipornia.com/scj/cgi/out.php?scheme_id=$popup,third-party +||jasmin.com^$popup,third-party +||landing.candynetwork.ai^$popup +||landing1.brazzersnetwork.com^$popup +||letstryanal.com/track/$popup,third-party +||livecams.com^$popup +||livehotty.com/landing/$popup,third-party +||livejasmin.com^$popup,third-party +||loveaholics.com^$popup +||mrskin.com/?_$popup +||naughtydate.com^$popup +||porngames.adult^*=$popup,third-party +||prelanding3.cuntempire.com/?utm_$popup +||tgp1.brazzersnetwork.com^$popup +||tm-offers.gamingadult.com^$popup +||together2night.com^$popup +||zillastream.com/api/$popup +!----------------------Specific advert blocking filters-----------------------! +! *** easylist:easylist/easylist_specific_block.txt *** +$third-party,xmlhttprequest,domain=mega4upload.net +/pmc-adm-v2/build/setup-ads.js$domain=bgr.com|deadline.com|rollingstone.com +/resolver/api/resolve/v3/config/?expType=AppConfig&expInstance=default&apptype=weather&$domain=msn.com +||123movies.ai/sab_ +||24live.com/api/ads +||24live.com/api/banners +||2mdn.net/videoplayback/$rewrite=abp-resource:blank-mp4,domain=laurelberninteriors.com|safeframe.googlesyndication.com +||2merkato.com/images/banners/ +||4rfv.co.uk/advnew/ +||5dariyanews.com/images/adherecolads.jpg +||80.lv/api/promos? +||a.fsdn.com/con/js/sftheme/vendor/bizx-prebid.js$domain=sourceforge.net +||acs.woolworths.com.au^ +||ad.animehub.ac^ +||ad.doubleclick.net/ddm/clk/$domain=ad.doubleclick.net +||ad.imp.joins.com^ +||ad.khan.co.kr^ +||ad.kimcartoon.si^ +||ad.kissanime.co^ +||ad.kissanime.com.ru^ +||ad.kissanime.org.ru^ +||ad.kissanime.sx^ +||ad.kisscartoon.nz^ +||ad.kisscartoon.sh^ +||ad.kisstvshow.ru^ +||ad.l2b.co.za^ +||ad.norfolkbroads.com^ +||ad.ymcdn.org^ +||adblock-tester.com/banners/$~third-party +||ads-api.stuff.co.nz^ +||ads-api.videy.co^ +||ads.ipfighter.com^ +||ads.talksport.com^ +||ads.tvmnews.mt^ +||ads.twdcgrid.com^ +||ads2.videy.co^ +||ads3.videy.co^ +||adsmg.fanfox.net^ +||adtag.sphdigital.com^ +||adultswim.com/ad/ +||affiliates.flightconnections.com^ +||afloat.ie/images/banners/ +||ag.divcom.com^ +||amazon.com/aan/$subdocument +||amazonaws.com/cdn.mobverify.com +||amazonaws.com/dazeddigital.com/Ads-main.js$domain=dazeddigital.com +||amazonaws.com/jsstore/$domain=babylonbee.com +||amazonaws.com^$domain=animeflv.net|mangakakalot.gg|nelomanga.net|uploadhaven.com +||ams.naturalnews.com^ +||ams.naturalnewsblogs.com^ +||ams.newstarget.com^ +||animeland.tv/zenny/ +||api.bitchute.com/slot1/ +||api.bitchute.com/slot2/ +||api.bo3.gg/api/v1/ad_banners +||api.deepai.org/thrad-ad-proxy +||api.production.k8s.y3o.tv/nevarro/video-ads/$domain=yallo.tv +||app.mps.vsnt.net/fetch/ext/load-rottentomatoes-web.js$domain=rottentomatoes.com +||ar.fapnow.xxx^ +||arbiscan.io/images/gen/*_StylusBlitz_Arbiscan_Ad.png +||armyrecognition.com/images/stories/customer/ +||artdaily.cc/banners/ +||as-api.whitecoatinvestor.com^ +||asgg.ghostbin.me^ +||assets.hearstapps.com/moapt/moapt-hdm.latest.js +||assets.presearch.com/backgrounds/ +||assets.systemrequirementslabs.net/srl/wwwroot/js/stake-takeover.js +||assets.targetimg1.com/webui/scripts/ads-safeframe/$domain=target.com +||asuracomic.net/api/ads/ +||atoplay.com/js/rtads.js +||atptour.com^*/sponsors/ +||attr-shift.dotabuff.com^ +||audiotag.info/images/banner_ +||aurn.com/wp-content/banners/ +||aveherald.com/images/banners/ +||azlyrics.com/local/anew.js +||b-cdn.net^$domain=bunkr.cr|bunkr.si|simpcity.cr +||b.cdnst.net/javascript/amazon.js$script,domain=speedtest.net +||b.gupload.xyz^ +||b.w3techs.com^ +||backgrounds.wetransfer.net$image +||backgrounds.wetransfer.net/*.mp4$media +||bahamaslocal.com/img/banners/ +||ban.etherscan.com^ +||bbci.co.uk/plugins/dfpAdsHTML/ +||beap.gemini.yahoo.com^ +||beforeitsnews.com/img/banner_ +||benjamingroff.com/uploads/images/ads/ +||bernama.com/storage/banner/ +||bestblackhatforum.com/images/my_compas/ +||bestlittlesites.com/plugins/advertising/getad/ +||bettingads.365scores.com^ +||bettingoffer.xyz/ads.php +||bibleatlas.org/botmenu +||bibleh.com/b2.htm +||biblehub.com/botmenu +||biblemenus.com/adframe +||bigsquidrc.com/wp-content/themes/bsrc2/js/adzones.js +||bigwarp.*/js/bgwp.js +||bigwarp.io/js/big.js +||bing.com/AdsFetch +||bioinformatics.org/images/ack_banners/ +||birdforum.net/data/siropu/ +||bitchute.com/slot1/value?adDataKey +||bitcotasks.com/je.php +||bitcotasks.com/yo.php +||bizjournals.com/static/dist/js/gpt.min.js +||blbclassic.org/assets/images/*banners/ +||bookforum.com/api/ads/ +||booking.com/flexiproduct.html?product=banner$domain=happywayfarer.com +||bordeaux.futurecdn.net^ +||borneobulletin.com.bn/wp-content/banners/ +||boxing-social.com^*/takeover/ +||briefly.co.za/banners/ +||brighteon.tv/Assets/ARF/ +||brushexpert.com/getimage/banners +||bscscan.com/images/gen/*.gif +||bugsfighter.com/wp-content/uploads/2020/07/malwarebytes-banner.jpg +||bullchat.com/sponsor/ +||businesskorea.co.kr/bannerpop/ +||businesstimes.com.sg/_web2/betterads_head2.js +||c21media.net/wp-content/plugins/sam-images/ +||cafonline.com/image/upload/*/sponsors/ +||calguns.net/images/ad +||calmclinic.com/srv/ +||caranddriver.com/inventory/ +||cards.thriftytraveler.com/widget/ +||castoola.tv^*/ads/$domain=sabc-plus.com +||cd.thecontentserver.com^$domain=ratemyprofessors.com +||cdn.dmtgvn.com/wrapper/js/manager.js$domain=rt.com +||cdn.flightconnections.com/js/before_pubfig.js +||cdn.http.anno.channel4.com/m/1/$media,domain=uktvplay.co.uk +||cdn.manga9.co^ +||cdn.shopify.com^*/assets/spreadrwidget.js$domain=jolinne.com +||cdn77.org^$domain=pricebefore.com +||cdnads.geeksforgeeks.org^ +||cdnintech.com/web/frontend/www/assets/*/js/adsLoader.js +||cdnpk.net/freepik/images/creative?$domain=freepik.com +||cdnpk.net/sponsor/$domain=freepik.com +||cdnpk.net/v2/images/search?$domain=freepik.com +||cdnpure.com/static/js/ads- +||celebjihad.com/celeb-jihad/pu_ +||celebstoner.com/assets/components/bdlistings/uploads/ +||celebstoner.com/assets/images/img/sidebar/$image +||chasingcars.com.au/ads/ +||chessgames.com/opt.js +||cinemadeck.com/ifr/ +||clarksvilleonline.com/cols/ +||clashreport-storage.b-cdn.net/ads/$domain=clashreport.com +||cloudfront.net/ads/$domain=wdwmagic.com +||cloudfront.net/j/wsj-prod.js$domain=wsj.com +||cloudfront.net/transcode/storyTeller/$media,domain=amazon.ae|amazon.ca|amazon.cn|amazon.co.jp|amazon.co.uk|amazon.com|amazon.com.au|amazon.com.br|amazon.com.mx|amazon.com.tr|amazon.de|amazon.eg|amazon.es|amazon.fr|amazon.in|amazon.it|amazon.nl|amazon.pl|amazon.sa|amazon.se|amazon.sg +||cloudfront.net^$domain=buffsports.io|chessgames.com|megaup.net|rexdlbox.com|titantv.com +||cloudfront.net^*/sponsors/$domain=pbs.org +||cnbcfm.com/dist/components-PcmModule-Taboola- +||cnet.com/prebid-client.js +||coincarp.com/script/position_name.js +||coincheck.com/images/affiliates/ +||coincodex.com/*/position/ccx_pos-min$script +||coingolive.com/assets/img/partners/ +||coinmarketcap.com/static/img/cdp_ad_banner/ +||combo.staticflickr.com/ap/build/javascripts/prbd-$script,domain=flickr.com +||computeralliance.com.au/ws/PartsWS.asmx/GetAdvertisingLeft +||consoletarget.com/js/pp.js +||convert2mp3.club/dr/ +||coolors.co/ajax/get-ads +||corvetteblogger.com/images/banners/ +||covertarget.com^*_*.php +||creatives.livejasmin.com^ +||cricbuzz.com/api/adverts/ +||cricketireland.ie//images/sponsors/ +||cript.to/dlm.png +||cript.to/z- +||crn.com.au/scripts/js_$script +||cybernews.com/images/tools/*/banner/ +||cyberscoop.com/advertising/ +||daily-sun.com/assets/images/banner/ +||dailyhunt.in/adtag.min.js +||dailylook.com/modules/header/top_ads.jsp +||dailymail.co.uk^*/linkListItem-$domain=thisismoney.co.uk +||dailymirror.lk/youmaylike +||dailynews.lk/wp-content/uploads/2024/02/D-E +||data.angel.digital/images/b/$image +||dealhunt.com^$domain=androidauthority.com +||deltabravo.net/admax/ +||depressionforums.org/wp-content/uploads/2023/05/balban.jpg.webp +||designtaxi.com/js/dt-seo.js +||designtaxi.com/small-dt.php$subdocument +||detectiveconanworld.com/images/support-us-brave.png +||dev.to/bb/sidebar_left^ +||dev.to/billboards/sidebar_left^ +||dev.to^*/bb/post_body_bottom^ +||dev.to^*/bb/post_comments^ +||dev.to^*/bb/post_sidebar^ +||dev.to^*/billboards/post_body_bottom^ +||dev.to^*/billboards/post_comments^ +||dev.to^*/billboards/post_sidebar^ +||developer.mozilla.org/pong/ +||devopscon.io/session-qualification/$subdocument +||dh-widget.android-authority.com^ +||dh.android-authority.com^ +||dianomi.com/brochures.epl? +||dianomi.com/click.epl +||dictionary.com/adscripts/ +||digitalmediaworld.tv/images/banners/ +||diglloyd.com/js2/pub-wide2-ck.js +||dirproxy.com/helper-js +||discover.hubpages.com/runtime/webads.js +||djpunjab.*/ads/ +||dlhd.*/rs4k-adbanner.html +||dlhd.st/rs4k-adbanner.html +||dnslytics.com/images/ads/ +||domaintyper.com/Images/dotsitehead.png +||dominicantoday.com/wp-content/themes/dominicantoday/banners/ +||download.megaup.net/download +||draftkings.bbgi.com^$subdocument +||drive.com.au/ads/ +||dsp.aparat.com^ +||duplichecker.com/csds/ +||dyn.varsity.co.uk^ +||e.cdngeek.com^ +||earth.cointelegraph.com^ +||eas.etherscan.com^ +||easymp3mix.com/js/re-ads-zone.js +||easytechguides.com/b/ +||ebay.com/scl/js/ScandalLoader.js +||ebaystatic.com/rs/c/scandal/ +||ebaystatic.com^*/ScandalJS- +||eccie.net/provider_ads/ +||ed2k.2x4u.de/mfc/ +||edge.ads.twitch.tv^ +||eentent.streampiay.me^ +||eevblog.com/images/comm/$image +||elil.cc/pdev/ +||elil.cc/reqe.js +||embed.st/ad.html +||engine.fxempire.com^ +||engine.laweekly.com^ +||eteknix.com/wp-content/uploads/*skin +||etherscan.io/images/gen/cons_gt_ +||etools.ch/scripts/ad-engine.js +||etxt.biz/data/rotations/ +||etxt.biz/images/b/ +||eurochannel.com/images/banners/ +||europeangaming.eu/portal/wp-admin/admin-ajax.php?action=acc_get_banners +||everythingrf.com/wsFEGlobal.asmx/GetWallpaper +||exchangerates.org.uk/images/200x200_currency.gif +||excnn.com/templates/anime/sexybookmark/js/popup.js +||expatexchange.com/banner/ +||expats.cz/images/amedia/ +||f1tcdn.net/images/banners/$domain=f1technical.net +||facebook.com/network_ads_common +||faceitanalyser.com/static/stats/i/sponsors/ +||familylawweek.co.uk/bin_1/ +||fastapi.tiangolo.com/img/sponsors/$image +||fentent.stre4mplay.one^ +||file-upload.net/include/mitte-orig.php +||filecrypt.cc/pdb.html +||filehippo.com/best-recommended-apps^ +||filehippo.com/revamp.js +||filemoon-*/js/baf.js +||filemoon.*/js/baf.js +||filemoon.*/js/dola.js +||filemoon.*/js/skrrt.js +||files.im/images/bbnr/ +||filext.com/tools/fileviewerplus_b1/ +||filmibeat.com/images/betindia.jpg +||financemasterpro.com/prebid-mup/ +||finviz.com/gfx/banner_ +||fishki.net/code? +||flippback.com/tag/js/flipptag.js$domain=idsnews.com +||fontsquirrel.com/ajaxactions/get_ads^ +||fontsquirrel.com^*/advertisements/ +||footballtradedirectory.com/images/pictures/banner/ +||forabodiesonly.com/mopar/sidebarbanners/ +||fordforums.com.au/logos/ +||forum.miata.net/sp/ +||free-webhosts.com/images/a/ +||freepik.com/sponsor/$domain=freepik.com +||freeworldgroup.com/banner +||freighter-prod01.narvar.com^$image +||funeraltimes.com/databaseimages/adv_ +||funeraltimes.com/images/Banner-ad +||funnyjunk.com/site/js/extra/pre +||futbol24.com/kscms_asyncspc.php +||futbollatam.com/ads.js +||fwcdn3.com^$domain=dailyhive.com|eonline.com +||fwpub1.com^$domain=ndtv.com|ndtv.in +||gamblingnewsmagazine.com/wp-content/uploads/*/ocg-ad- +||gamecopyworld.com/*.php? +||gamecopyworld.com/aa/ +||gamecopyworld.com/ddd/ +||gamecopyworld.com/js/pp.js +||gamecopyworld.eu/ddd/ +||gamecopyworld.eu/js/pp.js +||gameflare.com/promo/ +||gamer.mmohuts.com^ +||games.masque.com/util/crossPromo/crossPromo.php?id= +||gameustalks.com/js/common_ad.js +||ganjingworld.com/pbjsDisplay.js +||ganjingworld.com/v1s/adsserver/ +||gayguide.travel/scripts/images.js +||generalblue.com/js/pages/shared/lazyads.min.js +||gentent.stre4mplay.one^ +||getconnected.southwestwifi.com/ads_video.xml +||globovision.com/js/ads-home.js +||gocdkeys.com/images/background +||gocharting.com/ads_google.html +||gogoanime.me/zenny/ +||googlesyndication.com^$domain=blogto.com|youtube.com +||googlevideo.com/videoplayback?$rewrite=abp-resource:blank-mp4,domain=laurelberninteriors.com|safeframe.googlesyndication.com +||govevents.com/display-file/ +||gpt.mail.yahoo.net/sandbox$subdocument,domain=mail.yahoo.com +||graphicdesignforums.co.uk/banners/ +||greatandhra.com/images/landing/ +||grow.gab.com/galahad/ +||gsmarena.com/top-skin.min.js +||guessthe.game/ads/ +||guessthe.house/ads/ +||guesstheangle.wtf/ads/ +||guesstheaudio.com/ads/ +||guessthebook.app/ads/ +||guessthegrid.xyz/ads/ +||guessthelogo.wtf/ads/ +||guessthemovie.name/ads/ +||guessthephrase.xyz/ads/ +||gyazo.com^$domain=turbobit.net +||hamodia.co.uk/images/worldfirst-currencyconversion.jpg +||healthcentral.com/common/ads/generateads.js +||helpnetsecurity.com/wp-admin/admin-ajax.php +||hentent.stre4mplay.one^ +||hetlmedia.com/1025.js +||hideip.me/src/img/rekl/ +||hltv.org/partnerimage/$image +||hltv.org/staticimg/*?ixlib= +||holyfamilyradio.org/banners/ +||homeschoolmath.net/a/ +||horizonsunlimited.com/alogos/ +||hortidaily.com/b/ +||hostsearch.com/creative/ +||hotstar.com^*/midroll? +||hotstar.com^*/preroll? +||howtogeek.com/emv2/ +||huddlesapp.co/wp-content/plugins/brave-popup-builder/ +||i-tech.com.au/media/wysiwyg/banner/ +||iamcdn.net/players/custom-banner.js +||ibb.co^$domain=ghostbin.me +||ice.hockey/images/sponsoren/ +||iceinspace.com.au/iisads/ +||iconfinder.com/static/js/istock.js +||idlebrain.com/images4/footer- +||idlebrain.com/images5/main- +||idlebrain.com/images5/sky- +||idrive.com/include/images/idrive-120240.png +||ientent.stre4mplay.one^ +||igg-games.*/maven/ +||igg-games.co/sw.js +||igg-games.com/sw.js +||igniteandship.com/js/adcashign.js +||ih1.fileforums.com^ +||illicium.web.money^$subdocument +||illicium.wmtransfer.com^$subdocument +||imagetwist.com/b9ng.js +||imdb.com/_json/getads/ +||imdbtv.amazon.dev/2021-01-01/ads?$domain=imdb.com +||img.medscapestatic.com/medscape-core/ads/$domain=medscape.com +||img.medscapestatic.com/pi/scripts/ads/build-ad-tag.js$domain=medscape.com +||imgadult.com/ea2/ +||imgdrive.net/a78bc9401d16.js +||imgdrive.net/anex/ +||imgdrive.net/ea/ +||imgtaxi.com/ea/ +||imgtaxi.com/ttb02673583fb.js +||imgur.com^$domain=ghostbin.me|up-load.io +||imgwallet.com/ea/ +||immovlan.be/*/widget/ +||immovlan.be/js/dist/pub/ +||immoweb.be/*/dpg/ +||imp-adedge.i-mobile.co.jp^ +||imp.accesstra.de^ +||imp.pixiv.net^ +||impressivetimes.com/wp-content/uploads/2024/07/primary-plus-advt.jpg +||independent.co.uk/internal-api/indy100 +||indexclix.com/js/cpmbanners.js +||indiadesire.com/bbd/ +||indiansinkuwait.com/Campaign/ +||indiatimes.com/ads_ +||indiatimes.com/it_adslots.js +||indiatimes.com/itads_ +||indiatimes.com/lgads_ +||indiatimes.com/manageads/ +||indiatimes.com/toiads_ +||infobetting.com/bookmaker/ +||instagram.com/api/v1/injected_story_units/ +||interestingengineering.com/js/recovery.js +||intersc.igaming-service.io^$domain=hltv.org +||investing.com/jp.php +||iono.fm/ads/ +||ip-secrets.com/img/nv +||islandecho.co.uk/uploads/*/vipupgradebackground.jpg$image +||isohunt.app/a/b.js +||italiangenealogy.com/images/banners/ +||itweb.co.za/static/misc/toolbox/ +||itweb.co.za^*/sponsors +||j8jp.com/fhfjfj.js +||jamanetwork.com/AMA/AdTag +||japfg-trending-content.uc.r.appspot.com^ +||jobsora.com/img/banner/ +||jordantimes.com/accu/ +||jpg.church/quicknoisilyheadbites.js +||js.cmoa.pro^ +||js.syosetu.top^ +||jsdelivr.net/gh/$domain=chrome-stats.com +||keen-eyed.dotabuff.com^ +||kendrickcoleman.com/images/banners/ +||kentent.stre4mplay.one^ +||kickassanimes.info/a_im/ +||kissanime.com.ru/api/pop*.php +||kissanimes.net/30$subdocument +||kissasians.org/banners/ +||kisscartoon.sh/api/pop.php +||kissmanga.org/rmad.php +||kitco.com/jscripts/popunders/ +||kitz.co.uk/files/jump2/ +||kmalgo.com/ads/ +||knowunity.com/ads/ +||kompass.com/getAdvertisements +||koreatimes.co.kr/ad/ +||kta.etherscan.com^ +||kuwaittimes.com/uploads/ads/ +||lagacetanewspaper.com/wp-content/uploads/banners/ +||lapresse.ca/webparts/ads/ +||lasentinel.net/static/img/promos/ +||latestlaws.com/frontend/ads/ +||leaked.cx/promo/ +||learn-cpp.org/static/img/banners/cfk/$image +||lespagesjaunesafrique.com/bandeaux/ +||letour.fr/img/dyn/partners/ +||lifehack.org/Tm73FWA1STxF.js +||linkedin.com/tscp-serving/ +||linkshare.pro/img/btc.gif +||linuxhaxor.net/wp-content/uploads/pum/pum-site-scripts.js$script +||linuxtracker.org/images/dw.png +||livescore.az/images/banners +||loader.crosswordsolver.com^ +||loader.the-crossword-solver.com^ +||loader.word-grabber.com^ +||lordchannel.com/adcash/ +||lowfuelmotorsport.com/assets/img/partners/$image +||lw.musictarget.com^ +||lycos.com/catman/ +||machineseeker.com/data/ofni/ +||macys.com/sitemonetization/v1/sponsored-products/ +||mafvertizing.crazygames.com^ +||mail-ads.google.com^ +||mail.aol.com/d/gemini_api/?adCount= +||majorgeeks.com/images/mg/ads/ +||mallorca.com/user/data/advertisements/ +||manga1001.top/gdh/dd.js +||manga18.me/usd2023/usd_frontend.js +||manga18fx.com/js/main-v001.js +||mangadex.org/promo/ +||mangadistrict.com/super-boat- +||mangahub.io/iframe/ +||mangaplus.shueisha.tv/page/upload/banner/ +||manhwascan.net/my2023/my2023 +||manytoon.com/script/$script +||marineterms.com/images/banners/ +||marketscreener.com/content_openx.php +||mas.martech.yahoo.com^$domain=mail.yahoo.com +||masternodes.online/baseimages/ +||maxgames.com/img/sponsor_ +||maxroll.gg/js/sponsor.js +||mbauniverse.com/sites/default/files/shree.png +||media-amazon.com/images/S/apesafeframe/ape/sf/$script +||media-amazon.com/images/S/sash/$domain=www.imdb.com +||media.babylonbee.com/ads/ +||media.max.com/*/dash.mpd^$domain=cnn.com +||media.max.com/*/main.mpd^$domain=cnn.com +||media.notthebee.com/ads/ +||media.tickertape.in/websdk/*/ad.js +||mediatrias.com/assets/js/vypopme.js +||mediaupdate.co.za/banner/ +||megaup.net/sw.js +||mictests.com/myshowroom/view.php$subdocument +||mobilesyrup.com/RgPSN0siEWzj.js +||moflix-stream.click/ad? +||mojeek.com/search?*fmt=jsad +||motortrend.com/ad-scripts/ +||moviegalleri.net/wp-content/uploads/2025/09/576799e93c.jpg +||moviekhhd.biz/ads/ +||moviekhhd.biz/images/DownloadAds +||mp3fiber.com/*ml.jpg +||mpgh.net/idsx2/ +||mr-jatt.im/ads/ +||mrskin.com^$script,third-party,domain=~mrskincdn.com +||musicstreetjournal.com/banner/ +||myabandonware.com/media/img/gog/ +||myanimelist.net/c/i/images/event/ +||mybrowseraddon.com/ads/core.js +||myeongbeauty.com/ads/ +||myflixer.is/ajax/banner^ +||myflixer.is/ajax/banners^ +||myvidster.com/ads/ +||myvidster.com/js/myv_ad_camp2.php +||n.gemini.yahoo.com^ +||nativetimes.com/images/banners/ +||naturalnews.com/wp-content/themes/naturalnews-child/$script +||navyrecognition.com/images/stories/customer/ +||nemosa.co.za/images/mad_ad.png +||nesmaps.com/images/ads/$image +||netgames.io/js/page-ads.js +||newagebd.net/assets/img/ads/ +||newkerala.com/banners/amazon +||news.itsfoss.com/assets/images/pikapods.jpg +||newsnow.co.uk/pharos.js +||nexvelar.b-cdn.net/videoplayback_.mp4 +||ngfiles.com/promos/ +||nordstromrack.com/sponsoredads/ +||northsidesun.com/init-2.min.js +||norwaypost.no/images/banners/ +||notebrains.com^$image,domain=businessworld.in +||nrl.com/siteassets/sponsorship/ +||nrl.com^*/sponsors/ +||nu2.nu/gfx/sponsor/ +||numista.com/*/banners/$image +||nyaa.land/static/p2.jpg +||nzherald.co.nz/pf/resources/dist/scripts/global-ad-script.js +||observerbd.com/ad/ +||odrama.net/images/clicktoplay.jpg +||offidocs.com/media/system/*afi$script,~third-party +||ohmygore.com/ef_pub +||oklink.com/api/explorer/v2/index/text-advertisement? +||oldgamesdownload.com/wp-content/plugins/placement-manager/ +||onlineshopping.co.za/expop/ +||opencart.com/application/view/image/banner/ +||openstack.org/api/public/v1/sponsored-projects? +||optics.org/banners/ +||outbrain.com^$domain=bgr.com|buzzfeed.com|dto.to|investing.com|mamasuncut.com|mangatoto.com|tvline.com +||outlookads.live.com^ +||outputter.io/uploads/$subdocument +||ownedcore.com/forums/ocpbanners/ +||pafvertizing.crazygames.com^ +||pandora.com/api/v1/ad/ +||pandora.com/web-client-assets/displayAdFrame. +||pastemagazine.com/common/js/ads- +||pastemytxt.com/download_ad.jpg +||path-2-happiness.com/*/select_adv +||patient.info/scripts/doda.js +||paypalobjects.com/web/res/*/js/ad.js +||pcexpress.ca/pcx-bff/api/v2/media/ads^ +||pcmag.com/js/alpine/$domain=speedtest.net +||pelisfree.site/js/script_ +||petrolplaza.net/AdServer/ +||pexels.com^*/sponsored-media/ +||ph-files.imgix.net/381feabc-7331-4b7e-a5be-1d606cf38c06.png$domain=producthunt.com +||ph-files.imgix.net/c160f39d-096a-4679-a8ef-eb68c537359c.png$domain=producthunt.com +||phonearena.com/js/ops/taina.js +||picrew.me/vol/ads/ +||pimpandhost.com/mikakoki/ +||pinkmonkey.com/includes/right-ad-columns.html +||piratebay.live/static/ads/ +||pixlr.com/dad/ +||pixlr.com/fad/ +||plainenglish.io/assets/sponsors/ +||planetlotus.org/images/partners/ +||play.showernicego.xyz/jquery.js +||players.radioonlinehd.net^$domain=flamecomics.xyz +||plutonium.cointelegraph.com^ +||plutotv.imgix.net/pauseads/$domain=pluto.tv +||pnn.ps/storage/images/partners/ +||poedb.tw/image/torchlight/ +||pons.com/assets/javascripts/modules-min/ad-utilities_ +||pons.com/assets/javascripts/modules-min/idm-ads_ +||ports.co.za/banners/ +||positivehealth.com/img/original/BannerAvatar/ +||positivehealth.com/img/original/TopicbannerAvatar/ +||prd.media.cnn.com/global/*/dash.mpd$domain=cnn.com +||prebid-server.newsbreak.com^ +||presearch.com/affiliates|$xmlhttprequest +||presearch.com/coupons|$xmlhttprequest +||presearch.com/tiles^ +||pressablecdn.com/wp-content/uploads/Site-Skin_update.gif$domain=bikebiz.com +||prewarcar.com/*-banners/ +||prod-sponsoredads.mkt.zappos.com^ +||product.rightmove.co.uk/featured-customer-v2.html +||products.gobankingrates.com^ +||publicdomaintorrents.info/grabs/hdsale.png +||publicdomaintorrents.info/rentme.gif +||publicdomaintorrents.info/srsbanner.gif +||pubsrv.devhints.io^ +||pururin.to/assets/js/pop.js +||putlocker.*/banner/static/ +||putlocker.*/sab_ +||puzzle-slant.com/images/ad/ +||pwinsider.com/advertisement/ +||qrz.com/ads/ +||quora.com/ads/ +||radioreference.com/i/p4/tp/smPortalBanner.gif +||raenonx.cc/scripts +||rafvertizing.crazygames.com^ +||randalls.com/abs/pub/xapi/search/sponsored-carousel? +||raw.githubusercontent.com/bookracy/static/main/ads/$domain=bookracy.ru +||rawdogsports.com/data/siropu/ +||rd.com/wp-content/plugins/pup-ad-stack/ +||realitytvworld.com/includes/loadsticky.html +||realpython.net/tag.js +||receive-sms-online.info/img/banner_ +||republicmonitor.com/images/lundy-placeholder.jpeg +||researchgate.net/delivery/manager.js +||rev.frankspeech.com^ +||revolver.news/wp-content/banners/ +||rgstatic.net/javascript/delivery-manager/delivery-impl.$domain=researchgate.net +||rspro.xyz/wp-content/uploads/*/redotpay.webp +||rswebsols.com/wp-content/uploads/rsws-banners/ +||s-opgg-kit.op.gg/gnb/config/*/lol.ads.json +||s.radioreference.com/sm/$image +||s.w-x.co/helios/twc/$script,domain=weather.com|wunderground.com +||s.yimg.com/zh/mrr/$image,domain=mail.yahoo.com +||s3.amazonaws.com/runguides2/site_takeovers/$image,domain=runguides.com +||saabsunited.com/wp-content/uploads/*banner +||samba.org/banners/$image +||sasinator.realestate.com.au^ +||sat-universe.com/wos2.png +||sat-universe.com/wos3.gif +||save-editor.com/b/in/ad/ +||sbfull.com/assets/jquery/jquery-3.2.min.js? +||sbfull.com/js/mainpc.js +||sciencefocus.com/pricecomparison/$subdocument +||scoot.co.uk/delivery.php +||scores24.live/o/offers? +||scrolller.com/scrolller/affiliates/ +||seafood.media/fis/shared/banner.asp? +||search.brave.com/api/ads/ +||search.brave.com/serp/v1/static/serp-js/paid/ +||search.brave.com/serp/v1/static/serp-js/shopping/ +||searchenginereports.net/theAdGMC/$image +||sedo.cachefly.net^$domain=~sedoparking.com +||segmentnext.com/LhfdY3JSwVQ8.js +||sermonaudio.com/images/sponsors/ +||serververify.com/advertisement/ +||serververify.com/providers/ad-load/ +||service-ad-image-ga-weighted.prd.pluto.tv^ +||sfgate.com/juiceExport/production/sfgate.com/loadAds.js +||sgtreport.com/wp-content/uploads/*Banner +||share4max.com/ads/$script +||sharecast.ws/cum.js +||sharecast.ws/fufu.js +||shieldload.neoseeker.com^ +||short-wave.info/html/adsense- +||siberiantimes.com/upload/banners/ +||sicilianelmondo.com/banner/ +||slickdeals.net/ad-stats/ +||smallseotools.com/webimages/a12/$image +||smn-news.com/images/banners/ +||snipercentral.com/images/banners/ +||soccerinhd.com/aclib.js +||socket.streamable.com^ +||softcab.com/google.php? +||sonichits.com/tf.php +||sorcerers.net/images/aff/ +||soundcloud.com/audio-ads? +||soundstageultra.com/images/banners/ +||southfloridagaynews.com/images/banners/ +||speedrun.com/bluepill.js +||sponsors.vuejs.org^ +||sportlemon24.com/img/301.jpg +||spotidownloader.com/ad-test.html +||spox.com/daznpic/ +||spys.one/fpe.png +||srilankamirror.com/images/banners/ +||srware.net/iron/assets/img/av/ +||ssl-images-amazon.com/images/S/apesafeframe/ape/sf/$script,subdocument +||st.motortrend.com/nitrous/ +||star-history.com/assets/sponsors/ +||stardb.gg/lootbar_v2.png +||startpage.com^*/afs/ +||static.ad.libimseti.cz^ +||static.fastpic.org^$subdocument +||steamanalyst.com/steeem/delivery/ +||stirr.com/api/ads/ +||storage.googleapis.com/cdn.newsfirst.lk/advertisements/$domain=newsfirst.lk +||straitstimes.com/_web2/betterads_head.js +||strcloud.club/mainstream +||streamingsites.com/images/adverticement/ +||streamoupload.*/api/spots/$script +||streams.tv/js/slidingbanner.js +||strtpe.link/ppmain.js +||stuff.co.nz/static/adnostic/ +||stuff.co.nz/static/stuff-adfliction/ +||sundayobserver.lk/sites/default/files/pictures/COVID19-Flash-1_0.gif +||supabase.co/rest/v1/prmos_$domain=eloshapes.com +||surfmusic.de/anz +||survivalblog.com/marketplace/ +||survivalservers.com^$subdocument,domain=adfoc.us +||sweetalert2.github.io/images/sponsors/ +||swncdn.com/ads/$domain=christianity.com +||sync.amperwave.net/api/get/magnite/auid=$xmlhttprequest +||szm.com/reklama +||taadd.com/files/js/site_skin.js +||taboola.com^$domain=independent.co.uk|outlook.live.com +||takefile.link/fld/ +||tampermonkey.net/s.js +||tashanmp3.com/api/pops/ +||techonthenet.com/javascript/pb.js +||techporn.ph/wp-content/uploads/Ad- +||techsparx.com/imgz/udemy/ +||teluguwebsite.com/CE.jpg +||teluguwebsite.com/dhal.jpg +||teluguwebsite.com/MaaTeluguTallikiMallePoodanda.jpg +||teluguwebsite.com/MeeruTelugaa.gif +||teluguwebsite.com/radio.jpg +||templates.cds.yahoo.com/remote/widget? +||tempr.email/public/responsive/gfx/awrapper/ +||tennis.com/assets/js/libraries/render-adv.js +||terabox.app/api/ad/ +||terabox.com/api/ad/ +||thanks.viewfr.com/webroot/ads/adsterra/ +||thehiveworks.com/*/fallback.js$domain=snafu-comics.com +||theindependentbd.com/assets/images/banner/ +||thephuketnews.com/photo/banner/ +||theplatform.kiwi/ads/ +||theseoultimes.com/ST/banner/ +||thespike.gg/images/bc-game/ +||thisgengaming.com/Scripts/widget2.aspx +||timesnownews.com/dfpamzn.js +||tineye.com/api/v1/affiliate +||tineye.com/api/v1/keyword_search/ +||torrent911.ws/z- +||torrenteditor.com/img/graphical-network-monitor.gif +||torrentfreak.com/wp-content/banners/ +||totalcsgo.com/site-takeover/$image +||tpc.googlesyndication.com^ +||tr.7vid.net^ +||traditionalmusic.co.uk/images/banners/ +||trahkino.cc/static/js/li.js +||travelandtourworld.com/vf1h/ +||triangletribune.com/cache/sql/fba/ +||truck1.eu/_BANNERS_/ +||trucknetuk.com/phpBB2old/sponsors/ +||truepeoplesearch.com/search/widgets?$xmlhttprequest +||trumparea.com/_adz/ +||truthsocial.com^*/ads^ +||tubeoffline.com/js/hot.min.js +||turbobit.net/fd1/js/brinpopup.js +||turbobit.net/pus/ +||turkmenportal.com/images/uploads/banners/ +||twitter.com/*/videoads/ +||twt-assets.washtimes.com^$script,domain=washingtontimes.com +||ubuntugeek.com/images/ubuntu1.png +||uefa.com/imgml/uefacom/sponsors/ +||ukcampsite.co.uk/banners/ +||underwriting.allclassical.org/player-banners/ +||unmoor.com/config.json +||uploadcloud.pro/altad/ +||userscript.zone/s.js +||usrfiles.com^$domain=melophobemusic.com|utterlyinteresting.com +||util-*.simply-hentai.com^ +||utilitydive.com/static/js/prestitial.js +||uxmatters.com/images/sponsors/ +||v3cars.com/load-ads.php +||vectips.com/wp-content/themes/vectips-theme/js/adzones.js +||voodc.com/avurc +||vtube.to/api/spots/ +||w3schools.com/lib/sparteo.css +||wafvertizing.crazygames.com^ +||wall.vgr.com^ +||wccftech.com/0LDbU6Cv0mZ.js +||webcamtests.com/MyShowroom/view.php? +||webstick.blog/images/images-ads/ +||weedmaps.com/seg/evs/$~third-party,xmlhttprequest +||welcomemagazinecy.com/media/advertisements/ +||wikihow.com/x/zscsucgm? +||wordcount.im/js/ad.js +||workers.dev^$domain=chessgames.com|player.vidzee.wtf +||worthplaying.com/ad_left.html +||wowroms.com/images/Banner336x280.gif +||wowroms.com/images/Banner970x250.gif +||wpengine.com/wp-json/api/advanced_placement/new-in-article/?type=placement^$domain=androidauthority.com +||wqah.com/images/banners/ +||wsj.com/asset/ace/ace.min.js +||www.google.*/adsense/search/ads.js +||x.castanet.net^ +||x.com/*/videoads/ +||xcity.org/wp-content/themes/NewsPulse/images/banner300.jpg +||xcitypass.com/wp-content/themes/NewsPulse/images/banner728.jpg +||xing.com/xas/ +||xinhuanet.com/s? +||yahoo.com/m/gemini_api/ +||yahoo.com/pdarla/ +||yahoo.com/sdarla/ +||yandex.com/ads/system/context.js +||yimg.com/aaq/benji/benji- +||yimg.com/rq/darla/$domain=yahoo.com +||ynet.co.il/gpt/ +||youswear.com/ads/ +||youtube.com/pagead/ +||youtube.com/youtubei/v1/player/ad_break +||zillastream.com/api/spots/ +||zmescience.com/o5aTe4Zbho8.js +||zmovies.cc/e3cf74305b.php +/^https?:\/\/.*\.(club|bid|biz|xyz|site|pro|info|online|icu|monster|buzz|website|biz|re|casa|top|one|space|network|live|systems|ml|world|life|co)\/.*/$~image,~media,~subdocument,third-party,domain=1cloudfile.com|adblockstreamtape.art|adblockstreamtape.site|bowfile.com|clipconverter.cc|desiupload.co|dood.la|dood.pm|dood.so|dood.to|dood.watch|dood.ws|dopebox.to|downloadpirate.com|drivebuzz.icu|embedstream.me|eplayvid.net|fmovies.ps|gospeljingle.com|kissanimes.net|movies2watch.tv|myflixer.today|myflixertv.to|powvideo.net|scloud.online|skidrowcodex.net|streamtape.com|theproxy.ws|vidembed.cc|vidembed.io|vidlii.com|vidoo.org|vipbox.lc +/^https?:\/\/[0-9a-z]{5,}\.com\/.*/$script,third-party,xmlhttprequest,domain=1cloudfile.com|745mingiestblissfully.com|adblockeronstape.me|adblockeronstreamtape.me|adblockeronstrtape.xyz|adblockplustape.xyz|adblockstreamtape.art|adblockstreamtape.fr|adblockstreamtape.site|adblocktape.online|adblocktape.store|adblocktape.wiki|advertisertape.com|anonymz.com|antiadtape.com|bowfile.com|clickndownload.click|clicknupload.space|cloudvideo.tv|daddylivehd.sx|dailyuploads.net|databasegdriveplayer.xyz|deltabit.co|dood.la|dood.li|dood.pm|dood.re|dood.sh|dood.so|dood.to|dood.watch|dood.wf|dood.ws|dood.yt|doods.pro|dooood.com|dramacool.sr|drivebuzz.icu|ds2play.com|embedplayer.site|embedsb.com|embedsito.com|embedstream.me|engvideo.net|enjoy4k.xyz|eplayvid.net|evoload.io|filemoon.sx|files.im|flexy.stream|fmovies.ps|gaybeeg.info|gdriveplayer.pro|gettapeads.com|givemenbastreams.com|gogoanimes.org|gomo.to|hexload.com|imgtraffic.com|kesini.in|kickasstorrents.to|linkhub.icu|lookmyimg.com|mangareader.to|membed.net|mirrorace.org|mixdrop.ag|mixdrop.click|mixdrop.club|mixdrp.co|movies2watch.tv|mp4upload.com|nelion.me|noblocktape.com|nsw2u.org|ovagames.com|pcgamestorrents.com|putlocker-website.com|reputationsheriffkennethsand.com|rintor.space|rojadirecta1.site|scloud.online|shavetape.cash|skidrowcodex.net|smallencode.me|stapadblockuser.art|stapadblockuser.click|stapadblockuser.info|stapadblockuser.xyz|stape.fun|stapewithadblock.beauty|stapewithadblock.monster|stapewithadblock.xyz|strcloud.in|streamadblocker.cc|streamadblocker.com|streamadblocker.store|streamadblocker.xyz|streamlare.com|streamnoads.com|streamta.pe|streamta.site|streamtape.cc|streamtape.com|streamtape.to|streamtape.xyz|streamtapeadblock.art|streamtapeadblockuser.art|streamtapeadblockuser.homes|streamtapeadblockuser.monster|streamtapeadblockuser.xyz|strikeout.ws|strtape.cloud|strtape.tech|strtapeadblock.club|strtapeadblocker.xyz|strtapewithadblock.art|strtapewithadblock.xyz|supervideo.cc|supervideo.tv|tapeadsenjoyer.com|tapeadvertisement.com|tapeantiads.com|tapeblocker.com|tapenoads.com|tapepops.com|tapewithadblock.com|tapewithadblock.org|thepiratebay0.org|thepiratebay10.xyz|theproxy.ws|thevideome.com|toxitabellaeatrebates306.com|un-block-voe.net|upbam.org|upload.do|upstream.to|userscloud.com|v-o-e-unblock.com|vido.lol|vidsrc.me|vidsrc.stream|vipleague.im|vipleague.pm|voe-unblock.net|voe.sx|vudeo.io|vudeo.net|yesmovies.mn|youtube4kdownloader.com +/^https?:\/\/[0-9a-z]{8,}\.xyz\/.*/$third-party,xmlhttprequest,domain=1link.club|apiyoutube.cc|bestmp3converter.com|dood.wf|lulustream.com|mp4upload.com|poscitech.com|sportcast.life|streamhub.to|streamvid.net|tokybook.com|uqload.io +/\/[0-9a-f]{32}\/invoke\.js/$script,third-party +! https://github.com/easylist/easylist/commit/7a86afd +/rest/carbon/api/scripts.js? +! prebid specific +||breitbart.com/t/assets/js/prebid +||bustle.com^*/prebid- +||jwplatform.com/libraries/tdeymorh.js +||purexbox.com/javascript/gn/prebid- +! firework +||fireworkapi1.com^$domain=boldsky.com +! In-page video advertising. +||anyclip.com^$third-party,domain=~click2houston.com|~clickondetroit.com|~clickorlando.com|~dictionary.com|~heute.at|~ksat.com|~news4jax.com|~therealdeal.com|~thesaurus.com|~video.timeout.com|~wsls.com +||api.fw.tv^ +||blockchain.info/explorer-gateway/advertisements +||brid.tv^$script,domain=67hailhail.com|deepdaledigest.com|forevergeek.com|geordiebootboys.com|hammers.news|hitc.com|molineux.news|nottinghamforest.news|rangersnews.uk|realitytitbit.com|spin.com|tbrfootball.com|thechelseachronicle.com|thefocus.news|thepinknews.com +||caffeine.tv/embed.js +||cd.elements.video^$domain=fangoria.com +||cdn.ex.co^$third-party +||cdn.thejournal.ie/media/hpto/$image +||connatix.com^$third-party,domain=~accuweather.com|~businessinsider.de|~bz-berlin.de|~cheddar.tv|~deadline.com|~elnuevoherald.com|~finanzen.net|~fitbook.de|~heraldsun.com|~hollywoodreporter.com|~huffpost.com|~lmaoden.tv|~loot.tv|~miamiherald.com|~myhomebook.de|~olhardigital.com.br|~petbook.de|~sacbee.com|~stylebook.de|~techbook.de|~travelbook.de|~welt.de +||content.viralize.tv/display/ +||delivery.vidible.tv/jsonp/ +||dywolfer.de^ +||embed.ex.co^$third-party +||embed.sendtonews.com^$third-party,domain=~shmoop.com +||floridasportsman.com/video_iframev9.aspx +||fqtag.com^$third-party +||fwcdn1.com/js/fwn.js +||fwcdn1.com/js/storyblock.js +||g.ibtimes.sg/sys/js/minified-video.js +||gannett-player.ex.co^$domain=play.usatoday.com +||geo.dailymotion.com^$script,domain=wol.gg +||go.trvdp.com^$domain=~canaltech.com.br|~ig.com.br|~monitordomercado.com.br|~noataque.com.br|~oantagonista.com.br|~olhardigital.com.br|~omelete.com.br +||imgix.video^$domain=inverse.com +||innovid.com/media/encoded/*.mp4$rewrite=abp-resource:blank-mp4,domain=ktla.com +||interestingengineering.com/partial/connatix_desktop.html +||jwpcdn.com^$script,domain=bgr.com|decider.com|dexerto.com +||jwplayer.com^$domain=americansongwriter.com|dexerto.com|evoke.ie|ginx.tv|imfdb.org|infoworld.com|kiplinger.com|lifewire.com|soulbounce.com|spokesman-recorder.com|tennis.com|thecooldown.com|tomshardware.com|variety.com|whathifi.com +||live.primis.tech^$third-party +||minutemediaservices.com^$third-party +||play.springboardplatform.com^ +||playbuzz.com/embed/$script,third-party +||playbuzz.com/player/$script,third-party +||player.avplayer.com^$third-party +||player.ex.co^$third-party +||player.sendtonews.com^$third-party +||players.brightcove.net^$script,domain=pedestrian.tv +||playoncenter.com^$third-party +||playwire.com/bolt/js/$script,third-party +||rumble.com^$domain=tiphero.com +||sonar.viously.com^$domain=~aufeminin.com|~futura-sciences.com|~gamekult.com|~gbnews.com|~jeanmarcmorandini.com|~lesnumeriques.com|~marmiton.org|~melty.fr|~nextplz.fr|~the-race.com +||sportrecs.com/redirect/embed/ +||ultimedia.com/js/common/smart.js$script,third-party +||usatoday.com/gcdn/ads/ +||video-streaming.ezoic.com^ +||vidora.com^$third-party +||viewdeos.com^$script,third-party +||wowroms.com/images/iptvsmarters.app.jpg +||www-idm.com/wp-content/uploads/2022/02/bitcoin.png +||zype.com^$third-party,domain=bossip.com|hiphopwired.com|madamenoire.com +! Test (Webkit Mobile/Desktop for Youtube) +@@||youtube.com/get_video_info?$xmlhttprequest,domain=music.youtube.com|tv.youtube.com +||m.youtube.com/get_midroll_$domain=youtube.com +! temp disabled, affecting some extensions/browsers +||www.youtube.com/get_midroll_$domain=youtube.com +||youtube.com/get_video_info?*adunit$~third-party +! jetzt.de +@@||jetzt.de^$generichide +! dood.pm +/^https?:\/\/www\.[0-9a-z]{8,}\.com\/[0-9a-z]{1,4}\.js$/$script,third-party,domain=dood.la|dood.pm|dood.sh|dood.so|dood.to|dood.watch|dood.ws +! gsmarena.com +/\.gsmarena\.com\/[0-9]+\.[a-z]+\?s?Search=/$xmlhttprequest,domain=gsmarena.com +! Internal use of EL +||raw.githubusercontent.com/easylist/easylist/master/docs/1x1.gif +||raw.githubusercontent.com/easylist/easylist/master/docs/2x2.png$third-party +! Filters for ABP testpages +testpages.eyeo.com*js/test-script-regex +testpages.eyeo.com*js/test-script.js +! ABP for Safari on iOS +||ads.google.com^$xmlhttprequest,domain=ynet.co.il + +! *** easylist:easylist/easylist_specific_block_popup.txt *** +$popup,third-party,domain=1337x.buzz|adblockeronstape.me|adblockeronstreamtape.me|adblockeronstrtape.xyz|adblockplustape.com|adblockplustape.xyz|adblockstreamtape.art|adblockstreamtape.fr|adblockstreamtape.site|adblocktape.online|adblocktape.store|adblocktape.wiki|advertisertape.com|animeworld.biz|antiadtape.com|atrocidades18.net|cloudemb.com|cloudvideo.tv|d000d.com|databasegdriveplayer.xyz|datanodes.to|dembed1.com|diampokusy.com|dirproxy.info|dood.la|dood.li|dood.pm|dood.re|dood.sh|dood.so|dood.to|dood.watch|dood.wf|dood.ws|dood.yt|doods.pro|dooood.com|ds2play.com|embedsito.com|fembed-hd.com|file-upload.com|filemoon.sx|geoip.redirect-ads.com|gettapeads.com|gogoanime.lol|gogoanime.nl|haes.tech|hubfiles.ws|hydrax.xyz|katfile.com|kissanime.lol|livetv498.me|loader.to|luluvdo.com|mega4upload.net|mixdroop.co|mixdrop.ag|mixdrop.bz|mixdrop.click|mixdrop.club|mixdrop.nu|mixdrop.ps|mixdrop.si|mixdrop.sx|mixdrop.to|mixdrp.co|mixdrp.to|noblocktape.com|okru.link|oneproxy.org|piracyproxy.biz|piraproxy.info|pixroute.com|playtube.ws|sbfast.com|sbplay2.xyz|sbthe.com|scloud.online|shavetape.cash|slmaxed.com|ssbstream.net|stapadblockuser.info|stapadblockuser.xyz|stape.fun|stape.me|stapewithadblock.beauty|stapewithadblock.monster|stapewithadblock.xyz|strcloud.in|streamadblocker.cc|streamadblocker.com|streamadblocker.store|streamadblocker.xyz|streamlare.com|streamnoads.com|streamta.pe|streamtape.cc|streamtape.com|streamtape.to|streamtape.xyz|streamtapeadblock.art|streamtapeadblockuser.art|streamtapeadblockuser.homes|streamtapeadblockuser.monster|streamtapeadblockuser.xyz|strtape.cloud|strtapeadblocker.xyz|strtapewithadblock.art|strtapewithadblock.xyz|strtpe.link|supervideo.tv|suzihaza.com|tapeadsenjoyer.com|tapeadvertisement.com|tapeantiads.com|tapeblocker.com|tapelovesads.org|tapenoads.com|tapepops.com|tapewithadblock.com|tapewithadblock.org|theproxy.ws|trafficdepot.xyz|tubeload.co|un-block-voe.net|uproxy.co|upstream.to|upvid.biz|userload.co|vanfem.com|vgfplay.com|vidcloud9.com|vidlox.me|viewsb.com|vivo.sx|voe-unblock.com|voe-unblock.net|voe.sx|voeunblock1.com|voeunblock2.com|voiranime.com|watchsb.com|wiztube.xyz|wootly.ch|y2mate.is|ytmp3.sh +/&*^$popup,domain=piracyproxy.app|piraproxy.info|unblocked.club|unblockedstreaming.net +/?ref=$popup,domain=hltv.org +/?tag=$popup,domain=fuckingfast.co +/hkz*^$popup,domain=piracyproxy.app|piraproxy.info|unblocked.club|unblockedstreaming.net +|blob:$popup,domain=hqq.tv|waaw.to|watchadsontape.com +||ad.ymcdn.org^$popup +||amazon-adsystem.com^$popup,domain=twitch.tv +||b.link^$popup,domain=hltv.org +||binance.com^$popup,domain=usagoals.sx +||bit.ly^$popup,domain=dexerto.com|eteknix.com|gdriveplayer.us|kitguru.com|ouo.io|ouo.press|sh.st +||bitskins.com^$popup,domain=hltv.org +||casinobet.com*&click_id=$popup +||centent.stemplay.cc^$popup +||csgfst.com^$popup,domain=hltv.org +||csgofastx.com/?clickid=$popup,domain=hltv.org +||facebook.com/ads/ig_redirect/$popup,domain=instagram.com +||fentent.stre4mplay.one^$popup +||flashtalking.com^$popup,domain=twitch.tv +||flaticon.com/edge/banner/$popup +||gentent.stre4mplay.one^$popup +||gg.bet^$popup,domain=cq-esports.com +||hltv.org^*=|$popup,domain=hltv.org +||hqq.tv/out.php?$popup +||hurawatch.ru/?$popup +||ientent.stre4mplay.one^$popup +||jackpotcitycasino.com/*&a=$popup +||jpg.church/*.php?cat$popup +||kentent.stre4mplay.one^$popup +||kissanimeonline.com/driectlink$popup +||link.advancedsystemrepairpro.com^$popup +||listentoyt.com/button/$popup +||listentoyt.com/vidbutton/$popup +||mercurybest.com^$popup,domain=hltv.org +||mp3-convert.org/p$popup +||notube.*/p/$popup +||pinoymovies.es/links/$popup +||rentalcars.com/?affiliateCode=$popup,domain=seatguru.com +||routeumber.com^$popup,domain=hltv.org +||rx.link^$popup,domain=uploadgig.com +||s.click.aliexpress.com^$popup,domain=dzapk.com|up-4ever.net +||sendspace.com/defaults/sendspace-pop.html$popup +||short.bitchute.com^$popup +||skycheats.com^$popup,domain=elitepvpers.com +||t.co^$popup,domain=hltv.org +||thesurferprotector.com^$popup,domain=piratebay.live +||topeuropix.site/svop4/$popup +||vpnfortorrents.*?$popup +||yout.pw/button/$popup +||yout.pw/vidbutton/$popup +||ytmp4converter.com/wp-content/uploads$popup +! Ad shield +$popup,domain=07c225f3.online|content-loader.com|css-load.com|html-load.cc|html-load.com|img-load.com +! about:blank popups +|about:$popup,domain=22pixx.xyz|adblockstrtape.link|bitporno.com|clipconverter.cc|dailyuploads.net|dood.la|dood.so|dood.to|dood.video|dood.watch|dood.ws|doodcdn.com|flashx.net|gospeljingle.com|hqq.tv|imagetwist.com|mixdrop.bz|mixdrop.sx|mp4upload.com|nextgencloudtools.com|playtube.ws|popads.net|powvideo.net|powvldeo.cc|putlocker.style|run-syndicate.com|soap2day.tf|strcloud.link|streamani.net|streamtape.cc|streamtape.com|streamtape.site|strtape.cloud|strtape.tech|strtapeadblock.club|strtapeadblock.me|strtpe.link|supervideo.cc|tapecontent.net|turboimagehost.com|upstream.to|uptostream.com|uptostream.eu|uptostream.fr|uptostream.link|userload.co|vev.red|vevo.io|vidcloud.co|vidoza.net|voe.sx|vortez.net|vshare.eu|watchserieshd.tv +! Domain popups +/^https?:\/\/.*\.(club|xyz|top|casa)\//$popup,domain=databasegdriveplayer.co|dood.la|dood.so|dood.to|dood.video|dood.watch|dood.ws|doodcdn.com|fmovies.world|masafun.com|strtpe.link|voe-unblock.com +! html/image popups +! /^https?:\/\/.*\.(jpg|jpeg|gif|png|svg|ico|js|txt|css|srt|vtt|webp)/$popup,domain=123series.ru|19turanosephantasia.com|1movieshd.cc|4anime.gg|4stream.gg|5movies.fm|720pstream.nu|745mingiestblissfully.com|adblockstrtape.link|animepahe.ru|animesultra.net|asianembed.io|bato.to|batotoo.com|batotwo.com|bigclatterhomesguideservice.com|bormanga.online|bunnycdn.ru|clicknupload.to|cloudvideo.tv|dailyuploads.net|databasegdriveplayer.co|divicast.com|dood.la|dood.pm|dood.sh|dood.so|dood.to|dood.video|dood.watch|dood.ws|dood.yt|doodcdn.com|dopebox.to|dramacool.pk|eplayvid.com|eplayvid.net|europixhd.net|exey.io|extreme-down.plus|files.im|filmestorrents.net|flashx.net|fmovies.app|fmovies.ps|fmovies.world|fraudclatterflyingcar.com|gayforfans.com|gdtot.nl|go-stream.site|gomovies.pics|gospeljingle.com|hexupload.net|hindilinks4u.cam|hindilinks4u.nl|housecardsummerbutton.com|kaiju-no8.com|kaisen-jujutsu.com|kimoitv.com|kissanimes.net|leveling-solo.org|lookmoviess.com|magusbridemanga.com|mixdrop.sx|mkvcage.site|mlbstream.me|mlsbd.shop|mlwbd.host|movierulz.cam|movies2watch.ru|movies2watch.tv|moviesrulz.net|mp4upload.com|myflixer.it|myflixer.pw|myflixer.today|myflixertv.to|nflstream.io|ngomik.net|nkiri.com|nswgame.com|olympicstreams.co|paidnaija.com|playemulator.online|primewire.today|prmovies.org|putlocker-website.com|putlocker.digital|racaty.io|racaty.net|record-ragnarok.com|redirect-ads.com|reputationsheriffkennethsand.com|sflix.to|shadowrangers.live|skidrow-games.com|skidrowcodex.net|sockshare.ac|sockshare1.com|solarmovies.movie|speedvideo.net|sportsbay.watch|steampiay.cc|stemplay.cc|streamani.net|streamsport.icu|streamta.pe|streamtape.cc|streamtape.com|streamtape.net|strikeout.cc|strikeout.nu|strtape.cloud|strtape.site|strtape.tech|strtapeadblock.me|strtpe.link|tapecontent.net|telerium.net|tinycat-voe-fashion.com|toxitabellaeatrebates306.com|turkish123.com|un-block-voe.net|upbam.org|uploadmaza.com|upmovies.net|upornia.com|uprot.net|upstream.to|upvid.co|v-o-e-unblock.com|vidbam.org|vidembed.cc|vidnext.net|vido.fun|vidsrc.me|vipbox.lc|vipleague.pm|viprow.nu|vipstand.pm|voe-un-block.com|voe-unblock.com|voe.sx|voeun-block.net|voeunbl0ck.com|voeunblck.com|voeunblk.com|voeunblock3.com|vumooo.vip|watchserieshd.tv|watchseriesstream.com|xmovies8.fun|xn--tream2watch-i9d.com|yesmovies.mn|youflix.site|youtube4kdownloader.com|ytanime.tv|yts-subs.com + +! *** easylist:easylist_adult/adult_specific_block.txt *** +/agent.php?spot=$domain=justthegays.com +/b4b8.js$domain=homeporn.cc|pornenot.com|pornocase.net +/frontend_loader.js$domain=eveknows.com|hardcoreluv.com|hentairider.com|iluvtoons.com|older-mature.net|pezporn.com|pornstarsluv.com|tongabonga.com|youramateurtube.com +/nozomi4.js$domain=nozomi.la +://*.justthegays.com/$script,~third-party +||1069jp.com/js/script_ +||123av.*/assets/ad/ +||18porn.sex/ptr18.js +||18pussy.porn/ab/ +||18teensex.tv/player/html.php$subdocument +||1av.to/assets/ad/ +||2watchmygf.com/spot/ +||3movs.com/2ff/ +||3movs.xxx/2ff/ +||3prn.com/even/ok.js +||429men.com/zdoink/ +||444.bussyhunter.com^ +||4tube.com/assets/abpe- +||4tube.com/assets/adf- +||4tube.com/assets/adn- +||4tube.com/assets/padb- +||4tube.com/nyordo.js +||4wank.com/bump/ +||4wank.net/bump/ +||777av.cc/og/ +||8boobs.com/flr.js +||8muses.com/banner/ +||a.crazyporn.xxx^ +||a.shemale99.com^ +||a.suptube.com^ +||aa.fapnado.xxx^ +||aab.taboohome.com^ +||ab.fapnado.xxx^ +||absoluporn.com/code/script/ +||ad.xxam.org^ +||ad69.com/analytics/ +||adf.uhn.cx^ +||adrotic.girlonthenet.com^ +||adult-sex-games.com/images/adult-games/ +||adult-sex-games.com/images/promo/ +||adultasianporn.com/puty3s/ +||adultfilmdatabase.com/graphics/porndude.png +||affiliates.goodvibes.com^ +||agedbitch.com/gds/ +||akiba-online.com/data/siropu/ +||alaska.xhamster.com^ +||alaska.xhamster.desi^ +||alaska.xhamster2.com^ +||alaska.xhamster3.com^ +||alrincon.com/nbk/ +||amateur.tv/misc/mYcLBNp7fx.js +||amateur8.com/ffd5/afb.js +||analdin.*/html.php?aid= +||analsexstars.com/og/ +||anybunny.tv/js/main.ex.js +||anyporn.com/aa/ +||anysex.com/*/js| +||anysex.com/*/script| +||anysex.com/static/js/script_new.js +||anysex.com^$subdocument,~third-party +||apbood.boodstream.com/v*/ad/ +||api.adultdeepfakes.cam/banners +||api.leakgallery.com/m/decide +||api.redgifs.com/v2/gifs/promoted +||ar.429men.com^ +||ar.4wank.com^ +||ar.lesbianbliss.com^ +||ar.thepornstar.com^ +||ar.transhero.com^ +||as.hobby.porn^ +||asg.faperoni.com^ +||asiandolls.co.uk/images/banners/ +||atube.xxx/static/js/abb.js +||aucdn.net/library/*.mp4$rewrite=abp-resource:blank-mp4,domain=txnhh.com|xnxx.com|xvideos.com|xvv1deos.com +||aucdn.net^$media,domain=clgt.one +||avn.com/server/ +||b1.tubexo.tv^$subdocument +||b8ms7gkwq7g.crocotube.com^ +||babepedia.com/iStripper/ +||babepedia.com/iStripper2023/ +||babepedia.com/iStripper2024/$script +||babesandstars.com/img/banners/ +||babeshows.co.uk^*banner +||babesinporn.com^*/istripper/ +||babesmachine.com/images/babesmachine.com/friendimages/ +||badjojo.com/d5 +||banners.cams.com^ +||between-legs.com/banners2/ +||between-legs.com^*/banners/ +||bigdick.tube/tpnxa/ +||bigtitsgallery.net/qbztdpxulhkoicd.php +||bigtitslust.com/lap70/s/s/suo.php +||bionestraff.pro/300x250.php +||bit.ly^$domain=boyfriend.tv|boyfriendtv.com +||blogger.googleusercontent.com/img/b/$domain=javdesu.tv +||bodsforthemods.com/srennab/ +||bootyheroes.com//static/assets/img/banners/ +||boyfriend.show/widgets/Spot +||boyfriendtv.com/ads/ +||boyfriendtv.com/bftv/b/ +||boyfriendtv.com/bftv/paysite/ +||boyfriendtv.com/bftv/www/js/*.min.js?url= +||boysfood.com/d5.html +||bravoteens.com/ta/ +||bravotube.net/cc/ +||bravotube.net/js/clickback.js +||brick.xhamster.com^ +||brick.xhamster.desi^ +||brick.xhamster2.com^ +||brick.xhamster3.com^ +||bunnylust.com/sponsors/ +||buondua.com/templatesygfo76jp36enw15_/ +||cambay.tv/contents/other/player/ +||camcaps.ac/33a9020b46.php +||camcaps.io/024569284e.php +||camcaps.to/400514f2db.php +||camhub.cc/static/js/bgscript.js +||cams.imagetwist.com/in/?track=$subdocument +||cams.imgtaxi.com^ +||camvideos.tv/tpd.png +||camvideos.tv^$subdocument +||cdn.miohentai.com/partners/$rewrite=abp-resource:blank-mp4,domain=miohentai.com +||cdn.sinparty.com/site/banner.html +||cdn3x.com/xxxdan/js/xxxdan.vast. +||celeb.gate.cc/assets/bilder/bann +||cfgr3.com/videos/*.mp4$rewrite=abp-resource:blank-mp4,domain=hitbdsm.com +||cheemsporn.com^*/banners/ +||cheerpantyhose.com/cds/ +||cherrynudes.com/t33638ba5008.js +||chikiporn.com/sqkqzwrecy/ +||clicknplay.to/q3gSxw5.js +||clips4sale.com^$domain=mrdeepfakes.com +||cloud.hentai-moon.com/contents/hdd337st/$media +||cluster.xhspot.com^ +||cover.ydgal.com/axfile/ +||creative.homejavlive.com^ +||creative.live.javmix.tv^ +||creative.live.missav.com^ +||creative.live.tktube.com^ +||creative.live7mm.tv^ +||creative.thefaplive.com^ +||creative.upskirtlive.com^ +||creative.yesporn.cam^ +||crossdresserhub.com/*.php$script +||cumlouder.com/nnubb.js +||cuntlick.net/banner/ +||cutegurlz.com/promos-royal-slider/aff/ +||dads-banging-teens.com/polished- +||daftporn.com/nb_ +||dailyporn.club/at/code.php +||dailyporn.club/nba/ +||darknessporn.com/prrls/ +||dcraddock.uk/frame/ +||dcraddock.uk/images/b/ +||deepxtube.com/zips/ +||definebabe.com/sponsor_ +||delivery.porn.com^ +||depvailon.com/sponsored.html +||dirtyvideo.fun/js/script_ +||dixyporn.com/include/ +||dl.4kporn.xxx^ +||dl.crazyporn.xxx^ +||dl.hoes.tube^ +||dl.love4porn.com^ +||dofap.com/banners/ +||doseofporn.com/img/jerk.gif +||doseofporn.com/t63fd79f7055.js +||dpfantasy.org/k2s.gif +||dporn.com/edraovnjqohv/ +||dporn.com/tpnxa/ +||dragonthumbs.com/adcode.js +||drivevideo.xyz/advert/ +||drtuber.com/footer_ +||dyn.empflix.com^ +||dyn.tnaflix.com^ +||ea-tube.com/i2/ +||easypic.com/js/easypicads.js +||easyporn.xxx/tmp/ +||empflix.com/mew.php +||enporn.org/system/theme/AnyPorn/js/popcode.min.js +||entensity.net/crap/ +||enter.javhd.com/track/ +||epicgfs.com/pocoloco_epic.js +||eporner.com/dot/ +||eporner.com/event.php +||eporner.com/xhr/vast/ +||eporner.com^$subdocument,~third-party +||erowall.com/126.js +||erowall.com/tf558550ef6e.js +||escortdirectory.com//images/ +||exgirl.net/wp-content/themes/retrotube/assets/img/banners/ +||extremescatporn.com/static/images/banners/ +||fakings.com/tools/get_banner.php +||familyporner.com/prerolls/ +||fapclub.sex/js/hr.js +||fapnado.com/api/ +||fapnado.com/bump +||fappenist.com/fojytyzzkm.php +||faptor.com/api/ +||faptor.com/bump/ +||fastfuckgames.com/aff.htm +||fennyboy.com/js/dabt.js +||fennyboy.com/negco- +||fetishshrine.com/js/customscript.js +||files.wordpress.com^$domain=hentaigasm.com +||flw.camcaps.ac^ +||footztube.com/b_ +||footztube.com/f_ +||for-iwara-tools.tyamahori.com/ninjaFillter/ +||freelivesex.tv/imgs/ad/ +||freeones.com/build/freeones/adWidget.$script +||freeones.com/static-assets/istripper/ +||freeporn8.com/frd5/ +||freepornxxx.mobi/popcode.min.js +||freepublicporn.com/prerolls/ +||freeteen.sex/ab/ +||freeuseporn.com/bnrmanage/ +||frprn.com/even/ok.js +||ftopx.com/*/topaddsk3.html +||ftopx.com/345.js +||ftopx.com/345.php +||ftopx.com/isttf558550ef6e.js +||ftopx.com/tf558550ef6e.js +||fuwn782kk.alphaporno.com^ +||galleries-pornstar.com/thumb_top/ +||gamcore.com/ajax/abc? +||gamcore.com/js/ipp.js +||gamcore.com/z0mb24.js +||gay.bingo/agent.php +||gay4porn.com/ai/ +||gayforfans.com^*.php|$script +||gaygo.tv/gtv/frms/ +||gayporntube.com/spots.php? +||gays-cruising.com/nb/ +||gaystream.pw/juicy.js +||gaystream.pw/pemsrv.js +||gaystream.pw/pushtop.js +||gelbooru.com/extras/ +||giftornado.com/d2.js +||giftornado.com/js/cam.js +||girlsofdesire.org/blr8 +||go.celebjihad.live^ +||go.pornav.net^ +||go.redgifs.com^ +||go.stripchat.beeg.com^ +||go.strpjmp.com^ +||haes.tech/js/script_ +||hanime.xxx/wp-content/cache/wpfc-minified/fggil735/fa9yi.js +||hd21.*/templates/base_master/js/jquery.shows2.min.js +||hdporn24.org/vcrtlrvw/ +||hdpornfree.xxx/rek/ +||hdpornmax.com/tmp/ +||hdtube.porn/fork/ +||hdtube.porn/rods/ +||hellporno.com/_a_xb/ +||hellporno.com^$subdocument,~third-party +||hentai2w.com/ark2023/ +||hentaianimezone.com/kbgl/ +||hentaiasmr.moe/b4b8.js +||hentaibooty.com/uploads/banners/ +||hentaicdn.com/cdn/v2.assets/js/exc +||hentaidude.xxx/wp-content/plugins/script-manager/ +||hentaifox.com/js/ajs.js +||hentaifox.com/js/slider.js +||hentaihere.com/arkNVB/ +||hentaini.com/img/ads/ +||hentairider.com/banners/ +||hentaiworld.tv/banners-script.js +||herexxxtube.com/tmp/ +||hitomi.la/ebJqXsy/ +||hitprn.com/c_ +||hitslut.b-cdn.net/*.gif +||hoes.tube/ai/ +||home-xxx-videos.com/snowy- +||homemade.xxx/player/html.php?aid= +||homeprivatevids.com/js/580eka426.js +||hornygamer.com/includes/gamefile/sw3d_hornygamer.gif +||hornygamer.com/play_horny_games/ +||hornyjourney.com/fr.js +||hot-sex-tube.com/sp.js +||hotgirlclub.com/assets/vendors/ +||hotmovs.com/fzzgbzhfm/ +||hotmovs.com/suhum/ +||hottystop.com/f9de7147b187.js +||hottystop.com/t33638ba5008.js +||hqbang.com/api/ +||hqporn.su/myvids/ +||hqpornstream.com/pub/ +||hypnohub.net/assets/hub.js +||i.imgur.com^$domain=hentaitube.icu +||iceporn.com/player_right_ntv_ +||imagepost.com/stuff/ +||imagetwist.com/img/1001505_banner.png +||imageweb.ws/whaledate.gif +||imageweb.ws^$domain=tongabonga.com +||imgbox.com/images/tpd.png +||imgderviches.work/exclusive/bayou_ +||imgdrive.net/xb02673583fb.js +||imgtaxi.com/frame.php +||imhentai.xxx/js/slider.js +||imhentai.xxx/js/slider_ +||inporn.com/8kl7mzfgy6 +||internationalsexguide.nl/banners/ +||internationalsexguide.nl/forum/clientscript/PopUnderISG.js +||interracial-girls.com/chaturbate/ +||interracial-girls.com/i/$image +||intporn.com/js/siropu/ +||intporn.com/lj.js +||inxxx.com/api/get-spot/ +||jav-bukkake.net/images/download-bukkake.jpg +||jav.sb/videojs/300.php +||javenglish.net/tcads.js +||javfor.tv/av/js/aapp.js +||javgg.me/wp-content/plugins/1shortlink/js/shorten.js +||javhub.net/av/js/aapp.js +||javhub.net/av/js/cpp.js +||javhub.net/ps/UJXTsc.js +||javideo.net/js/popup +||javlibrary.com/js/bnr_ +||javmost.com/src/jpm.js +||javpornclub.com/images/banners/takefile72890.gif +||javslon.com/clacunder.js +||javynow.com/images/caribian.jpg +||jennylist.xyz/t63fd79f7055.js +||jizzberry.com/65 +||js.eroticmv.com^ +||justfullporn.net/a554739c4f.php +||justthegays.com/agent.php +||justthegays.com/api/spots/ +||justthegays.com/api/users/ +||justusboys.com/advertising/ +||jzzo.com/_ad +||kawai-jav.com/en/load-ads? +||kawai-jav.com/public/upload/ads/ +||kbjfree.com/assets/scripts/popad.js +||kindgirls.com/banners2/ +||kompoz2.com/js/take.max.js +||kurakura21.space/js/baf.js +||l4s.love4porn.com^ +||leakgallery.com/leakifyhub/banner +||lesbian8.com/frd5/ +||lesbianstate.com/ai/ +||letsporn.com/sda/ +||lewdspot.com/img/aff_ +||lolhentai.net/tceb29242cf7.js +||lustfulmatures.com/sod/ +||lustypuppy.com/includes/popunder.js +||madmen2.alastonsuomi.com^ +||manga18fx.com/tkmo2023/ +||manhwa18.cc/main2023/ +||mansurfer.com/flash_promo/ +||manysex.com/ha10y0dcss +||manysex.tube/soc/roll.js +||marawaresearch.com/js/wosevu.js +||marine.xhamster.com^ +||marine.xhamster.desi^ +||marine.xhamster2.com^ +||marine.xhamster3.com^ +||mature-chicks.com/floral-truth-c224/ +||maturesimages.com/erd/ +||matureworld.ws/images/banners/ +||mediax.dscgirls.live/p/live/vast$xmlhttprequest,domain=indiansexstories2.net +||megatube.xxx/atrm/ +||milffox.com/ai/ +||milfnut.net/assets/jquery/$script +||milfz.club/qpvtishridusvt.php +||milkmanbook.com/dat/promo/ +||missav.to/bn/ +||missav.to/page/300.html +||momcool.com/ftu/ +||momvids.com/player/html.php?aid= +||monsnode.com/ad_star_ +||mopoga.com/img/aff_ +||mylistcrawler.com/wp-content/plugins/elfsight-popup-cc/ +||mylust.com/092- +||mylust.com/assets/script.js +||myreadingmanga.info/wp-admin/*.php$script,xmlhttprequest +||mysexgames.com/pix/ads/ +||mysexgames.com/pix/best-sex-games/ +||mysexgames.com/plop.js +||myvideos.club/api/ +||n.hnntube.com^ +||naughtyblog.org/wp-content/images/k2s/ +||net.sexstories69.com^ +||nsfwalbum.com/efds435m432.js +||nudepatch.net/dynbak.min.js +||nudepatch.net/edaea0fd3b2c.j +||nvdst.com/adx_ +||nylons-models.com/cross/ +||nylons-porno.com/poj/ +||nylonsbeauty.com/med/ +||nylonsporno.com/ed/ +||oi.429men.com^ +||oi.lesbianbliss.com^ +||oj.fapnado.xxx^ +||oldies.name/oldn/ +||onscreens.me/js/ca. +||oppai.stream/assets/rekl/ +||orgyxxxhub.com/js/965eka57.js +||orgyxxxhub.com/js/arjlk.js +||orgyxxxhub.com/js/wcwov.js +||otomi-games.com/wp-content/uploads/*-Ad-728- +||pacaka.conxxx.pro^ +||pantyhosecool.com/stig/ +||pantyhosepornstars.com/mze/ +||pantyhoseposing.com/ed/ +||pantyhoseshow.com/fd/ +||pantyhoseteases.com/mass/ +||phonerotica.com/resources/img/banners/ +||picshick.com/b9ng.js +||pimpandhost.com^$subdocument +||pisshamster.com/prerolls/ +||pleasuregirl.net/bload +||plibcdn.com/templates/base_master/js/jquery.shows2.min.js +||plx.porndig.com^ +||plx.tik.porn^ +||porn-star.com/buttons/ +||pornalin.com/skd +||porndoe.com/banner/ +||porndoe.com/wp-contents/channel? +||pornerbros.com/lolaso/ +||pornforrelax.com/kiadtgyzi/ +||porngals4.com/img/b/ +||porngames.tv/js/hs43jgM.js +||porngo.tube/tdkfiololwb/ +||pornhat.com/banner/ +||pornhub.*/_xa/ads +||pornicom.com/jsb/ +||pornid.*/mintor/ +||pornid.*/srt/ +||pornj.com/wimtvggp/ +||pornjam.com/assets/js/renderer. +||pornjv.com/doe/ +||pornktube.tv/js/kt.js +||pornmix.org/cs/ +||porno666.com/code/script/ +||pornogramxxx.com/out/ +||pornohans.net/*==/ +||pornohans.net/static/exo +||pornone.com/js/combined.js +||pornpapa.com/extension/ +||pornpics.com^$subdocument +||pornpics.de/api/banner/ +||pornpoppy.com/jss/external_pop.js +||pornrabbit.com^$subdocument +||pornsex.rocks/league.aspx +||pornstargold.com/9f3e5bbb8645.js +||pornstargold.com/af8b32fc37c0.js +||pornstargold.com/e7e5ed47e8b4.js +||pornstargold.com/tf2b6c6c9a44/ +||pornv.xxx/static/js/abb.js +||pornve.com/img/300x250g.gif +||pornxbox.com/cs/ +||pornxp.com/2.js +||pornxp.com/sp/ +||pornxp.net/spnbf.js +||pornyhd.com/hillpop.php +||port7.xhamster.com^ +||port7.xhamster.desi^ +||port7.xhamster2.com^ +||port7.xhamster3.com^ +||powe.asian-xxx-videos.com^ +||pregchan.com/.static/pages/dlsite.html +||projectjav.com/scripts/projectjav_newpu.js +||ps0z.com/300x250b +||punishworld.com/prerolls/ +||puporn.com/xahnqhalt/ +||purp.sukaporn.com^ +||pussycatxx.com/tab49fb22988.js +||pussyspace.com/fub +||qovua60gue.tubewolf.com^ +||rabbitsreviews.com/banners/ +||rambo.xhamster.com^ +||rat.xxx/sofa/ +||rat.xxx/wwp2/ +||realgfporn.com/js/bbbasdffdddf.php +||redgifs.com/assets/js/goCtrl +||redtube.com/_xa/ads +||redtube.com^$subdocument,~third-party +||redtube.fm/advertisment.htm +||redtube.fm/lcgldrbboxj.php +||reelsmunkey.com/_next/static/media/*-banner. +||rest.sexypornvideo.net^ +||rintor.space/t2632cd43215.js +||rockpoint.xhaccess.com^ +||rockpoint.xhamster.com^ +||rockpoint.xhamster.desi^ +||rockpoint.xhamster2.com^ +||rockpoint.xhamster3.com^ +||rockpoint.xhamster42.desi^ +||rst.pornyhd.com^ +||rtb-1.jizzberry.com^ +||rtb-1.mylust.com^ +||rtb-1.xcafe.com^ +||rtb-3.xgroovy.com^ +||ruedux.com/code/script/ +||rule34.xxx/images/r34_doll.png +||rule34.xxx/x/cookiefreead.js +||rule34.xyz/api/v2/infrastructure/dynamic-meta/user +||rule34hentai.net^$subdocument,~third-party +||rusdosug.com/Fotos/Banners/ +||s.everydayporn.co^ +||savefiles.com^$domain=hentaidays.com +||scatxxxporn.com/static/images/banners/ +||schoolasiagirls.net/ban/ +||scoreland.*/tranny.jpg +||sdhentai.com/marketing/ +||see.xxx/pccznwlnrs/ +||ser.everydayporn.co^ +||service.iwara.tv/z/z.php +||sex-techniques-and-positions.com/banners +||sex3.com/ee/s/s/im.php +||sex3.com/ee/s/s/js/ssu +||sex3.com/ee/s/s/su +||sexcelebrity.net/contents/restfiles/player/ +||sexpin.net/ads*.htm +||sextubebox.com/js/239eka836.js +||sextubebox.com/js/580eka426.js +||sextvx.com/*/ads/web/ +||sexvid.pro/knxx/ +||sexvid.pro/rrt/ +||sexvid.xxx/ghjk/ +||simpcity.network/smp/ +||simply-hentai.com/prod/ +||sleazyneasy.com/contents/images-banners/ +||sleazyneasy.com/jsb/ +||sli.crazyporn.xxx^ +||slit.lewd.rip^ +||slview.psne.jp^ +||smutgamer.com/ta2b8ed9c305.js +||smutty.com/n.js +||starwank.com/api/ +||static.javxxx.me^ +||stream-69.com/code/script/ +||striptube.net/images/ +||striptube.net/te9e85dc6853.js +||sunporno.com/api/cams/get-spot-js-full-content/ +||sunporno.com/api/spots/ +||sunporno.com/blb.php +||sunporno.com/sunstatic/frms/ +||support.streamjav.top^ +||taxidrivermovie.com^$~third-party,xmlhttprequest +||tbib.org/tbib. +||teenporno.xxx/ab/ +||thegay.porn/gdtatrco/ +||thehun.net/banners/ +||thenipslip.com/b6c0cc29df5a.js +||thisvid.com/enblk/ +||thumbzilla.com/_xa/ads +||tits-guru.com/js/istripper4.js +||titsintops.com/phpBB2/nb/ +||tktube.com/adlib/ +||tnaflix.com/azUhsbtsuzm? +||tnaflix.com/js/mew.js? +||topescort.com/static/bn/ +||tranny.one/bhb.php +||tranny.one/trannystatic/ads/ +||trannygem.com/ai +||ts.globtube.com^ +||tsmodelstube.com/fun/$image,~third-party +||tubator.com/lookout/ex_rendr3.js +||tube.hentaistream.com/wp-includes/js/pop4.js +||tube8.*/_xa/ads +||tubeon.*/templates/base_master/js/jquery.shows2.min.js +||tuberel.com/looppy/ +||tubev.sex/td24f164e52654fc593c6952240be1dc210935fe/ +||turboviplay.com/ads_gala.js +||txxx.com/api/input.php? +||upornia.com/yxpffpuqtjc/ +||urgayporn.com/bn/ +||uviu.com/_xd/ +||veo-hentai.com/wp-content/plugins/veohentai/popunder-unificado.js +||vi1.prettytube.net^ +||videosection.com/adv-agent.php +||vietpub.com/banner/ +||vikiporn.com/contents/images-banners/ +||vikiporn.com/js/customscript.js +||vipergirls.to/clientscript/popcode_ +||vipergirls.to/clientscript/poptrigger_ +||viptube.com/player_right_ntv_ +||vivatube.*/templates/base_master/js/jquery.shows2.min.js +||voyeurhit.com/ffpqvfaczp/ +||vuwjv7sjvg7.zedporn.com^ +||warashi-asian-pornstars.fr/wapdb-img/ep/ +||watch-my-gf.com/list/ +||watchmygf.mobi/best.js +||wcareviews.com/bh/ +||wcareviews.com/bv/ +||weescorts.com/html5banners/ +||wetpussygames.com/t78d42b806a3.js +||winporn.*/templates/base_master/js/jquery.shows2.min.js +||ww.hoes.tube^ +||wwwxxx.uno/pop-code.js +||wwwxxx.uno/taco-code.js +||x-hd.video/vcrtlrvw/ +||x.xxxbp.tv^ +||x.xxxbule.com^ +||x0r.urlgalleries.net^ +||x1hub.com/alexia_anders_jm.gif +||xanimu.com/prerolls/ +||xcity.org/tc2ca02c24c5.js +||xfree.com/api/banner/ +||xgirls.agency/pg/c/ +||xgroovy.com/65 +||xgroovy.com/bid? +||xgroovy.com/static/js/script.js +||xhaccess.com^*/vast? +||xhamster.com*/vast? +||xhamster.desi*/vast? +||xhamster2.com*/vast? +||xhamster3.com*/vast? +||xhamster42.desi*/vast? +||xhand.com/player/html.php?aid= +||xhcdn.com/site/*/ntvb.gif +||xis.vipergirls.to^ +||xjav.tube/ps/Hij2yp.js +||xmilf.com/0eckuwtxfr/ +||xnxx.tv/zoneload/ +||xnxxporn.video/nb39.12/ +||xozilla.com/player/html.php$subdocument +||xpaja.net/views/images/ads/ +||xpee.com/bnr/ +||xpics.me/everyone. +||xrares.com/xopind.js +||xvideos.com/zoneload/ +||xvideos.es/zoneload/ +||xvideos.name/istripper.jpg +||xxxbox.me/vcrtlrvw +||xxxdessert.com/34l329_fe.js +||xxxfetish24.com/helper/tos.js +||xxxshake.com/assets/f_load.js +||xxxshake.com/static/js/script.js +||xxxvogue.net/_ad +||xxxxsx.com/sw.js +||yeptube.*/templates/base_master/js/jquery.shows2.min.js +||yespornpleasexxx.com/wp-content/litespeed/js/ +||yotta.scrolller.com^ +||you-porn.com/_xa/ads +||youjizz.com/KWIKY*.mp4$rewrite=abp-resource:blank-mp4,domain=youjizz.com +||youporn.com/_xa/ads +||youporn.com^$script,subdocument,domain=youporn.com|youporngay.com +||yourlust.com*/serve +||yourlust.com/assets/script.js +||yourlust.com/js/scripts.js +||yporn.tv/grqoqoswxd.php +||zazzybabes.com/istr/t2eff4d92a2d.js +||zbporn.com/ttt/ +||zzup.com/ad.php +! third-party servers +/^https?:\/\/.*\.(club|news|live|online|store|tech|guru|cloud|bid|xyz|site|pro|info|online|icu|monster|buzz|fun|website|photos|re|casa|top|today|space|network|live|work|systems|ml|world|life)\/.*/$~media,domain=1vag.com|4tube.com|asianpornmovies.com|getsex.xxx|glam0ur.com|hclips.com|hdzog.com|homemadevids.org|hotmovs.com|justthegays.com|milfzr.com|porn555.com|pornforrelax.com|pornj.com|pornl.com|puporn.com|see.xxx|shemalez.com|sss.xxx|streanplay.cc|thegay.com|thegay.porn|tits-guru.com|tubepornclassic.com|tuberel.com|txxx.com|txxx.tube|upornia.com|vjav.com|voyeurhit.com|xozilla.com +! (/sw.js) +/^https?:\/\/.*\/.*sw[0-9._].*/$script,xmlhttprequest,domain=1vag.com|4tube.com|adult-channels.com|analdin.com|biguz.net|bogrodius.com|chikiporn.com|fantasti.cc|fuqer.com|fux.com|hclips.com|heavy-r.com|hog.tv|megapornx.com|milfzr.com|mypornhere.com|porn555.com|pornchimp.com|pornerbros.com|pornj.com|pornl.com|pornototale.com|porntube.com|sexu.com|sss.xxx|thisav.com|titkino.net|tubepornclassic.com|tuberel.com|tubev.sex|txxx.com|vidmo.org|vpornvideos.com|xozilla.com|youporn.lc|youpornhub.it|yourdailypornstars.com +/^https?:\/\/.*\/[a-z0-9A-Z_]{2,15}\.(php|jx|jsx|1ph|jsf|jz|jsm|j$)/$script,subdocument,domain=3movs.com|4kporn.xxx|4tube.com|alotporn.com|alphaporno.com|alrincon.com|amateur8.com|anyporn.com|badjojo.com|bdsmstreak.com|bestfreetube.xxx|bigtitslust.com|bravotube.net|cockmeter.com|crazyporn.xxx|daftporn.com|ebony8.com|erome.com|exoav.com|fantasti.cc|fapality.com|fapnado.com|fetishshrine.com|freeporn8.com|gfsvideos.com|gotporn.com|hdporn24.org|hdpornmax.com|hdtube.porn|hellporno.com|hentai2w.com|hottorrent.org|hqsextube.xxx|hqtube.xxx|iceporn.com|imgderviches.work|imx.to|its.porn|katestube.com|lesbian8.com|love4porn.com|lustypuppy.com|manga18fx.com|manhwa18.cc|maturetubehere.com|megatube.xxx|milffox.com|momxxxfun.com|openloadporn.co|orsm.net|pervclips.com|porn-plus.com|porndr.com|pornicom.com|pornid.xxx|pornotrack.net|pornrabbit.com|pornwatchers.com|pornwhite.com|pussy.org|redhdtube.xxx|rule34.art|rule34pornvids.com|runporn.com|sexvid.porn|sexvid.pro|sexvid.xxx|sexytorrents.info|shameless.com|sleazyneasy.com|sortporn.com|stepmom.one|stileproject.com|str8ongay.com|tnaflix.com|urgayporn.com|vikiporn.com|wankoz.com|xbabe.com|xcafe.com|xhqxmovies.com|xxx-torrent.net|xxxdessert.com|xxxextreme.org|xxxonxxx.com|yourlust.com|youx.xxx|zbporn.com|zbporn.tv +! thegay.com +@@||thegay.com/assets//jwplayer-*/jwplayer.core.controls.html5.js|$domain=thegay.com +@@||thegay.com/assets//jwplayer-*/jwplayer.core.controls.js|$domain=thegay.com +@@||thegay.com/assets//jwplayer-*/jwplayer.js|$domain=thegay.com +@@||thegay.com/assets//jwplayer-*/provider.hlsjs.js|$domain=thegay.com +@@||thegay.com/assets/jwplayer-*/jwplayer.core.controls.html5.js|$domain=thegay.com +@@||thegay.com/assets/jwplayer-*/jwplayer.core.controls.js|$domain=thegay.com +@@||thegay.com/assets/jwplayer-*/jwplayer.js|$domain=thegay.com +@@||thegay.com/assets/jwplayer-*/provider.hlsjs.js|$domain=thegay.com +@@||thegay.com/upd/*/assets/preview*.js|$domain=thegay.com +@@||thegay.com/upd/*/static/js/*.js|$domain=thegay.com +||thegay.com/static/tf/videos.gjmpa.json +||thegay.com^$script,domain=thegay.com +! websocket ads +$websocket,domain=pornhub.com|redtube.com|redtube.com.br|tube8.com|tube8.es|tube8.fr|xtube.com|youporn.com|youporngay.com +! csp +$csp=script-src 'self' data: 'unsafe-inline' 'unsafe-hashes' 'unsafe-eval',domain=thumbs.pro +||thegay.com^$csp=default-src 'self' *.ahcdn.com fonts.gstatic.com fonts.googleapis.com https://thegay.com https://tn.thegay.com 'unsafe-inline' 'unsafe-eval' data: blob: + +! *** easylist:easylist_adult/adult_specific_block_popup.txt *** +.com./$popup,domain=pornhub.com +|http*://*?$popup,third-party,domain=forums.socialmediagirls.com|pornhub.com|redtube.com|tube8.com|youporn.com|youporngay.com +||boyfriend.tv/out/bg-$popup +||boyfriendtv.com/out/bg-$popup +||chaturbate.com^$popup,domain=xxxbios.com +||clicknplay.to/api/$popup +||icepbns.com^$popup,domain=iceporn.com +||livejasmin.com/pu/$popup +||missav.com/pop?$popup +||nhentai.net/api/_/popunder?$popup +||porndude.link/porndudepass$popup,domain=theporndude.com +||pornogramxxx.com/out/$popup +||simpcity.su/magic/goodpapi.php?$popup +||t.ly^$popup,domain=veev.to +||temu.com^$popup,domain=pornproxy.art +||videowood.tv/pop?$popup +! about:blank popups +/about:blank.*/$popup,domain=bitporno.com|iceporn.com|katestube.com|videowood.tv +$popup,third-party,domain=hentai2read.com|porn-tube-club.com +!------------------------Specific element hiding rules------------------------! +! *** easylist:easylist/easylist_specific_hide.txt *** +advfn.com###APS_300_X_600 +advfn.com###APS_BILLBOARD +thetvdb.com###ATF +seafoodsource.com###Ad1-300x250 +seafoodsource.com###Ad2-300x250 +seafoodsource.com###Ad3-300x250 +boredbro.com###AdBox728 +moviekhhd.biz,webcarstory.com###Ads +search.avast.com###AsbAdContainer +ranker.com###BLOG_AD_SLOT_1 +citynews.ca###Bigbox_300x250 +calculatorsoup.com,thetvdb.com###Bottom +chicagoprowrestling.com###Chicagoprowrestling_com_Top +gayemagazine.com###Containera2sdv > div > div > div[id^="comp-"] +webmd.com###ContentPane40 +new-kissanime.me###CvBNILUxis +dailydot.com###DD_Desktop_HP_Content1 +dailydot.com###DD_Desktop_HP_Content2 +dailydot.com###DD_Desktop_HP_Content3 +tweaktown.com###DesktopTop +investing.com###Digioh_Billboard +newser.com###DivStoryAdContainer +satisfactory-calculator.com###DynamicInStream-Slot-1 +satisfactory-calculator.com###DynamicWidth-Slot-1 +satisfactory-calculator.com###DynamicWidth-Slot-2 +gumtree.com.au###FUSE_HP_SEARCH_DWEB +gumtree.com.au###FUSE_VIP_BOTTOM1_DWEB_24 +gumtree.com.au###FUSE_VIP_DESCRIPTION_DWEB_24 +gumtree.com.au###FUSE_VIP_SIDE1_DWEB_24 +gumtree.com.au###FUSE_VIP_SIDE2_DWEB_24 +stripes.com###FeatureAd +esports.gg,howlongagogo.com,neatorama.com###FreeStarVideoAdContainer +esports.gg###FreeStarVideoAdContainer_VCT +ranker.com###GRID_AD_SLOT_1 +titantv.com###GridPlayer +whatismyip.com###HP-adbannertop +appatic.com,gamescensor.com###HTML2 +fanlesstech.com###HTML2 > .widget-content +fanlesstech.com###HTML3 +fanlesstech.com###HTML4 > .widget-content +fanlesstech.com###HTML5 > .widget-content +gamescensor.com###HTML6 +fanlesstech.com###HTML6 > .widget-content +vintag.es###HTML7 +breitbart.com###HavDW +semiconductor-today.com###Header-Standard-Middle-Evatec +sitelike.org###HeaderAdsenseCLSFix +kob.com,kstp.com,whec.com###Header_1 +royalroad.com###HomePage_Top +stockinvest.us###IC_d_300x250_1 +stockinvest.us###IC_d_728x90_1 +newstarget.com###Index06 > .Widget +newstarget.com###Index07 > .Widget +supremacy1914.com###KzTtoWW +engadget.com###LB-MULTI_ATF +fortune.com###Leaderboard0 +stripes.com###MidPageAd +mainichi.jp###PC-english-rec1 +kohls.com###PDP_monetization_HL +kohls.com###PMP_monetization_HL +physicsandmathstutor.com###PMT_PDF_Top +physicsandmathstutor.com###PMT_Top +audioz.download###PromoHead +newstarget.com###PromoTopFeatured +officedepot.com###PromoteIqCarousel +sciencealert.com###Purch_D_R_0_1 +randomwordgenerator.com###RWG_Bottom_Banner_Desktop_970px +randomwordgenerator.com###RWG_Sidebar_Banner_Desktop_970px +randomwordgenerator.com###RWG_Under_Video_Player +edn.com###SideBarWrap +soapcalc.net###SidebarLeft +daringfireball.net###SidebarMartini +soapcalc.net###SidebarRight +imcdb.org###SiteLifeSupport +puzzle-aquarium.com,puzzle-minesweeper.com,puzzle-nonograms.com,puzzle-skyscrapers.com###Skyscraper +roblox.com###Skyscraper-Abp-Left +roblox.com###Skyscraper-Abp-Right +thecourier.com###TCFO_Middle2_300x250 +thecourier.com###TCFO_Middle_300x250 +today.az###TODAY_Slot_Top_1000x120 +today.az###TODAY_Slot_Vertical_01_240x400 +road.cc###Top-Billboard +the-scientist.com###Torpedo +utne.com###URTK_Bottom_728x90 +utne.com###URTK_Middle_300x250 +utne.com###URTK_Right_300x600 +scrabble-solver.com###Upper +breakingnews.ie###\30 _pweumum7 +helpnetsecurity.com###\37 7e27088_l1 +turbobit.net###__bgd_link +news-daily.com,outlookindia.com,stripes.com###_snup-rtdx-ldgr1 +egotastic.com###a46c6331 +egotasticsports.com###a83042c4 +krunker.io###aHolder +imagebam.com###aad-header-1 +imagebam.com###aad-header-2 +imagebam.com###aad-header-3 +kshow123.tv###ab-sider-bar +travelpulse.com###ab_container +uinterview.com###above-content +slideshare.net###above-recs-desktop-ad-sm +poynter.org###above-the-brands +smartertravel.com###above-the-fold-leaderboard +jezebel.com,pastemagazine.com###above_logo +peacemakeronline.com###above_top_banner +breitbart.com###accontainer +usatoday.com###acm-ad-tag-lawrence_dfp_desktop_arkadium +usatoday.com###acm-ad-tag-lawrence_dfp_desktop_arkadium_after_share +nextdoor.com###ad +ftw.usatoday.com,touchdownwire.usatoday.com###ad--home-well-wrapper +nationalrail.co.uk###ad-aboveHeader-a-wrapper +lasvegassun.com###ad-colB- +getmodsapk.com,paypal.com###ad-container +astrolis.com###ad-daily +retrostic.com,sickchirpse.com###ad-header +livescore.com###ad-holder-gad-news-article-item +nationalrail.co.uk###ad-homepage-advert-a-grey-b-wrapper +nationalrail.co.uk###ad-homepage-advert-d-grey-b-wrapper +healthbenefitstimes.com###ad-image-below +stackabuse.com###ad-lead-magnet +mayoclinic.org###ad-mobile-bottom-container +mayoclinic.org###ad-mobile-top-container +dvdsreleasedates.com###ad-movie +dappradar.com###ad-nft-top +traderie.com###ad-rails +thedailymash.co.uk,thetab.com###ad-sidebar-1 +thedailymash.co.uk,thetab.com###ad-sidebar-2 +thedailymash.co.uk,thetab.com###ad-sidebar-3 +thedailymash.co.uk,thetab.com###ad-sidebar-4 +tomestone.gg###ad-sidebar-skyscraper-container +stackabuse.com###ad-snigel-1 +stackabuse.com###ad-snigel-2 +stackabuse.com###ad-snigel-3 +stackabuse.com###ad-snigel-4 +wordplays.com###ad-sticky +thethaiger.com###ad-top-rotator +romsfun.com###ad-unit-1 +romsfun.com###ad-unit-2 +romsfun.com###ad-unit-3 +agegeek.com,free-codecs.com,investing.com,mtaeta.info,pimpandhost.com,proboards.com,realgearonline.com,repairalmostanything.com,timeanddate.com,wordhippo.com,wordreference.com###ad1 +agegeek.com,investing.com,pimpandhost.com###ad2 +exchangerates.org.uk,investing.com###ad3 +comicbookmovie.com###adATFLeaderboard +chortle.co.uk,coloring.ws,dltk-holidays.com,dltk-kids.com,kidzone.ws,pcsteps.com,primeraescuela.com###adBanner +mdpi.com###adBannerContent +moomoo.io###adCard +globimmo.net###adConH +perchance.org###adCtn +spanishdict.com###adMiddle2-container +sainsburysmagazine.co.uk###adSlot-featuredInBlue +sherdog.com###adViAi +travelm.de###ad__banner +myevreview.com###ad_aside_1 +cheatcodes.com###ad_atf_970 +musescore.com###ad_cs_12219747_300_250 +musescore.com###ad_cs_12219747_728_90 +all-nettools.com,filesharingtalk.com,kiwibiker.co.nz,printroot.com###ad_global_below_navbar +myevreview.com###ad_main_bottom +myevreview.com###ad_main_middle +free-icon-rainbow.com###ad_responsive +bluejaysnation.com,canucksarmy.com,dailyfaceoff.com,flamesnation.ca,oilersnation.com,theleafsnation.com###ad_sidebar_2 +hulkshare.com###ad_user_banner_2 +coinarbitragebot.com###adathm +webextension.org###adb +offidocs.com###adbottomoffidocs +canadianlisted.com###adcsacl +4qrcode.com###addContainer +odditycentral.com###add_160x600 +lifenews.com###adds +livemint.com###adfreeDeskSpace +oisd.nl###adgb +seowebstat.com###adhead-block +freepik.com###adobe-pagination-mkt-copy +onworks.net###adonworksbot +favouriteus.uk###adop_bfd +tutorialspoint.com###adp_top_ads +globimmo.net###adplus-anchor +192-168-1-1-ip.co,receivesms.co###adresp +dict.cc###adrig +audioreview.com,carlow-nationalist.ie,cellmapper.net,craigclassifiedads.com,duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion,g.doubleclick.net,ip-address.org,irannewsdaily.com,kildare-nationalist.ie,laois-nationalist.ie,photographyreview.com,quiz4fun.com,roscommonherald.ie,waterford-news.ie###ads +birdsandblooms.com,familyhandyman.com,rd.com,tasteofhome.com,thehealthy.com###ads-container-single +seechamonix.com###ads-inner +unn.ua###ads-sidebar +unn.ua###ads-sidebar2 +gocharting.com###ads-table +mouthshut.com###ads_customheader_dvRightGads +funkypotato.com###ads_header_games +funkypotato.com###ads_header_home_970px +mangaplus.shueisha.tv,shueisharaw.tv###ads_mobile +2fa.live###ads_row +lingojam.com###adsense-area-label +194.233.68.230###adsimgxatass +ip-address.org###adsleft +indiatimes.com###adslot_wrapper +nepalicalendar.rat32.com###adsnew +ballroomdancers.com,digitimes.com,pintprice.com###adspace +image.pi7.org###adswithloader +byjus.com###adtech-related-links-container +byjus.com###adtech-top-banner-container +dict.leo.org###adv-drectangle1 +dict.leo.org###adv-drectangle2 +dict.leo.org###adv-sitebar +leo.org###adv-wbanner +linuxblog.io###advads_ad_widget-3 +player.allclassical.org###advert +agma.io###advertDialog1 +radioonline.fm###advertise_center +steamcardexchange.net###advertisement +lifenews.com###advertisement-top +allthetests.com,bom.gov.au,lapoderosa.com###advertising +offidocs.com###adxx +thebugle.co.za###adz +emojiterra.com###adz-header +hindustantimes.com###affiliate-shop-now +purplepainforums.com,snow-forecast.com###affiliates +exportfromnigeria.info###affs +downinspector.com###after-header-wrapper +scmp.com###after-page-layout-container +prepostseo.com###after_button_ad_desktop +thefederal.com###after_first_top_news_ad +thefederal.com###after_header_ad_2 +thefederal.com###after_top_news_ad_1 +plagiarismchecker.co###afterbox +seafoodsource.com###ag9224238 +agar.io###agar-io_160x600 +agar.io###agar-io_160x600_2 +agar.io###agar-io_300x250 +agar.io###agar-io_970x90 +slashdot.org,sourceforge.net###ai-stud-coding-bar +sourceforge.net###ai-studio-coding-bar +1000logos.net###ai_widget-4 +klz9.com###aigirlfriendad +slashdot.org###aistdo-coding-bar +alchetron.com###alchetronFreeStarVideoAdContainer +straitstimes.com###am-widget +myandroid.org###amazon-icon +djchuang.com###amazon3 +usamega.com###anchorPanel +entrepreneur.com###anchorcontainer +slashdot.org###announcement +techloy.com###announcement-bar-root +ancient-origins.net###ao-article-outbrain +ancient-origins.net###ao-sidebar-outbrain +partnerkin.com###ap_bck +filmibeat.com###are-slot-rightrail +kyivindependent.com###article-banner-slot +mindbodygreen.com###article-between-content-ad +mybanktracker.com###article-content > .lazyloaded +thesun.co.uk###article-footer div[id*="-ads-"] +mindbodygreen.com###article-leaderboard-ad +timesofmalta.com###article-sponsored +forbes.com###article-stream-1 +brisbanetimes.com.au,smh.com.au,theage.com.au,watoday.com.au###articlePartnerStories +hackster.io###article_page_simple_ad_portal +thehindu.com###articledivrec +fool.com###articles-incontent2 +fool.com###articles-top +findmysoft.com###as_336 +flyordie.com###asf +stakingrewards.com###asset-calculator-banner +domaintoipconverter.com###associates-1 +tvtropes.org###asteri-sidebar +downforeveryoneorjustme.com###asurion +flysat.com###aswift_9_expand +assamtribune.com###async_body_tags +addictivetips.com###at_popup_modal +timesnownews.com###atf103388570 +cityandstateny.com###atlas-module +adverts.ie###av_detail_side +teamfortress.tv###aw +gulte.com###awt_landing +filext.com###b1c +filext.com###b2c +filext.com###b4c +ytmp3.mobi###ba +filext.com###ba1c +encycarpedia.com###baa +unknowncheats.me###bab +gayvegas.com###background +presearch.com###background-cover +soccerbase.com###ball_splash_holder +allmyfaves.com,allthetests.com,dailynews.lk,dealsonwheels.co.nz,eth-converter.com,farmtrader.co.nz,freealts.pw,goosegame.io,greatbritishchefs.com,moviesfoundonline.com,pajiba.com,sundayobserver.lk,techconnect.com###banner +euroweeklynews.com###banner-970 +interest.co.nz###banner-ad-wrapper +bbcamerica.com,ifc.com,sundancetv.com,wetv.com###banner-bottom +hypergames.top,thecarconnection.com###banner-container +battlefordsnow.com,cfjctoday.com,chatnewstoday.ca,ckpgtoday.ca,everythinggp.com,huskiefan.ca,larongenow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,sasknow.com,vernonmatters.ca###banner-header +israelnationalnews.com###banner-sticky +bbcamerica.com,ifc.com,sundancetv.com,wetv.com###banner-top +gamesfree.com###banner-top1 +4teachers.org###banner-wrapper +gamesfree.com###banner300 +originality.ai###bannerFrame +adgully.com###bannerImage +free-codecs.com###bannerTop +edn.com###bannerWrap +webtoolhub.com###banner_719_105 +today.az###banner_750x90 +asmag.com###banner_C +asmag.com###banner_C2 +10minutemail.com,nitrome.com###banner_ad +nitrome.com###banner_box +nitrome.com###banner_description +freshnewgames.com###banner_header +baltic-course.com###banner_master_top +autoplius.lt###banner_right +nitrome.com###banner_shadow +cdn.ampproject.org,linguee.com,thesuburban.com###banner_top +workawesome.com###banner_wrap +belgie.fm,deutschland.fm,espana.fm,italia.fm,nederland.fm###bannerbg +baltic-course.com###bannerbottom +komikcast.site###bannerhomefooter +baltic-course.com###bannerleft +baltic-course.com,webfail.com###bannertop +nzherald.co.nz###bayleys-carousel +vueuse.org###bb-banner +straitstimes.com###below-article-thumbnails-0 +uinterview.com###below-content +smartertravel.com###below-the-fold-leaderboard +al.com,cleveland.com,gulflive.com,lehighvalleylive.com,masslive.com,mlive.com,newyorkupstate.com,nj.com,oregonlive.com,pennlive.com,silive.com,syracuse.com###below-toprail +wrestletalk.com###belowVideoAd +post-gazette.com###benn-poll-iframe-container +safetydetectives.com###best_deals_widget +dcnewsnow.com,ktla.com###bestreviews-widget +slideshare.net###between-recs-ad-1-container +slideshare.net###between-recs-ad-2-container +usnews.com###bfad-slot +solution-hub.com###bfix2 +shellshock.io###big-house-ad +advrider.com###bigBox +dailyregister.com,dailyrepublicannews.com###billBoardATF +versus.com###bill_bottom +cricketnetwork.co.uk,f1network.net,pop.inquirer.net,rugbynetwork.net,the-scientist.com,thefootballnetwork.net###billboard +canberratimes.com.au,examiner.com.au,theland.com.au,whoscored.com###billboard-container +thegazette.com###billboard-wrap +independent.co.uk,the-independent.com###billboard-wrapper +inquirer.net###billboard_article +fitbook-magazine.com,myhomebook-magazine.com,petbook-magazine.com,techbook-magazine.com,travelbook-magazine.com###billboard_btf_rlWr +gumtree.com###bing-text-ad-1 +gumtree.com###bing-text-ad-2 +gumtree.com###bing-text-ad-3 +afro.com###block-10 +hawaiisbesttravel.com###block-103 +raspberrytips.com###block-11 +theneworleanstribune.com###block-15 +dodi-repacks.site###block-17 +appleworld.today###block-26 +raspians.com###block-29 +raspians.com###block-31 +flyingmag.com###block-32 +flyingmag.com###block-36 +upfivedown.com###block-4 +club386.com###block-43 +club386.com###block-47 +club386.com###block-49 +game-news24.com###block-50 +club386.com###block-51 +securityonline.info###block-59 +ericpetersautos.com,upfivedown.com###block-6 +systutorials.com###block-7 +gamespot.com###block-72 +moviegalleri.net,upfivedown.com###block-8 +awealthofcommonsense.com###block-9 +videogamer.com###block-aside-ad-unit +slideme.org###block-block-31 +ancient-origins.net###block-block-49 +insidehighered.com###block-dfptagarticle-sidebar-bottom +insidehighered.com###block-dfptagarticle-sidebar-top +spine-health.com###block-dfptagbottomanchorads1 +gpone.com###block-gpone-advhome +insidehighered.com###block-ihe-views-block-events-views-block-5 +mothership.sg###block-imu1 +mothership.sg###block-imu2 +kenyans.co.ke###block-keleaderboardmenu +romania-insider.com###block-nodepagebelowfromourpartners +romania-insider.com###block-nodepagebelowlatespress +romania-insider.com###block-nodepagebelowtrendingcontent +mothership.sg###block-outstream1 +mothership.sg###block-outstream2 +mothership.sg###block-outstream3 +encyclopedia.com###block-trustme-rightcolumntopad +enca.com###block-views-block-sponsored-block-1 +mbauniverse.com###block-views-home-page-banner-block +bmwblog.com###bmwbl-mobileArticleLeaderboardBeforeFirstParagraph +smbc-comics.com###boardleader +the-scientist.com###boombox-top +forum.wordreference.com###botSupp +coinarbitragebot.com###botfix +pymnts.com###bottom-ad +cheese.com,investorplace.com###bottom-banner +lasvegasweekly.com###bottom-bar-container +eweek.com,itbusinessedge.com,linuxtoday.com,serverwatch.com,techrepublic.com###bottom-footer-fixed-slot +audioreview.com###bottom-leaderboard +reverso.net###bottom-mega-rca-box +crn.com###bottom-ribbon +snafu-comics.com###bottom-space +nytimes.com###bottom-wrapper +streetinsider.com###bottom_ad_fixed +funkypotato.com###bottom_banner_wrapper +bleedingcool.com,heatmap.news,jamaicaobserver.com###bottom_leaderboard +bleedingcool.com###bottom_leaderboard2 +bleedingcool.com###bottom_medium_rectangle +numista.com###bottom_pub_container +numista.com###bottompub_container +atomic-robo.com###bottomspace +bluejaysnation.com,canucksarmy.com,dailyfaceoff.com,flamesnation.ca,oilersnation.com,theleafsnation.com###box_2_300x600 +planetminecraft.com###box_300btf +bluejaysnation.com,canucksarmy.com,dailyfaceoff.com,flamesnation.ca,oilersnation.com,theleafsnation.com###box_3_300x600 +planetminecraft.com###box_pmc_300btf +comicbookrealm.com###brad +bicycleretailer.com###brain-leader-slot +brobible.com###bro-leaderboard +justetf.com###brokerAd +dailydot.com###browsi-topunit +techpp.com###brxe-ninhwq +techpp.com###brxe-wtwlmm +downforeveryoneorjustme.com###bsa +icon-icons.com###bsa-placeholder-search +befonts.com###bsa-zone_1706688539968-4_123456 +bsc.news###bscn-banner +puzzle-aquarium.com,puzzle-minesweeper.com,puzzle-nonograms.com,puzzle-skyscrapers.com###btIn +w3newspapers.com###btmadd +battlefordsnow.com,cfjctoday.com,everythinggp.com,huskiefan.ca,larongenow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,sasknow.com,vernonmatters.ca###bumper-cars +northcountrypublicradio.org###business +music-news.com###buy-tickets +furaffinity.net###c-videoAd--outer +digminecraft.com###c1069c34 +channel4.com###c4ad-Top +comicsands.com###c7da91bc-8e44-492f-b7fd-c382c0e55bda +allrecipes.com###cal-app +bitdegree.org###campaign-modal +thecanary.co###canaryInTextAd1 +academictorrents.com###carbon +downforeveryoneorjustme.com###carbonDiv +csdb.dk###casdivhor +csdb.dk###casdivver +cbn.com###cbn_leaderboard_atf +cloudwards.net,guitaradvise.com###cbox +linuxinsider.com###cboxOverlay +woot.com###cdm-zone-02 +curseforge.com###cdm-zone-03 +coinedition.com###ce-custom-ads +coinedition.com###ce-custom-ads-footer-sticky +deeplol.gg###center_content_bottom_ad_box +godbolt.org###ces +tradingview.com###charting-ad +romsmania.games###click-widget-banner +xcalibrscans.com###close-teaser +oneindia.com###closePopupDiv +globalconstructionreview.com###cm-jobs-block-inner +crypto.news###cn-footer-sticky-placeholder +crypto.news###cn-header-placeholder +whocallsme.com###cnt_1 +whocallsme.com###cnt_2 +whocallsme.com###cnt_btm +linuxinsider.com###colorbox +smbc-comics.com###comicright > div[style] +mirror.co.uk,themirror.com###comments-standalone-mpu +blackbeltmag.com###comp-loxyxvrt +seatguru.com###comparePrices +cpuid.com###console_log +wargamer.com###constellation_promoted_iframe_0 +miniwebtool.com###contain300-1 +miniwebtool.com###contain300-2 +livesoccertv.com###container-hp-ic +livesoccertv.com###container-hp-rs1 +livesoccertv.com###container-hp-top +livesoccertv.com###container-md-ic +livesoccertv.com###container-md-rs1 +livesoccertv.com###container-md-top +scanboat.com###content > .margin-tb-25 +allnewspipeline.com###content > [href] +readfrom.net###content > article.shortstory +outputter.io###content > section.html +the-scientist.com###content-74192-boombox-top +fextralife.com###content-add-a +blastingnews.com###content-banner-dx1-p1 +classicreload.com###content-top +kbb.com###contentFor_kbbAdsSimplifiedNativeAd +lineageos18.com###contentLocker +indy100.com###content_1 +indy100.com###content_2 +indy100.com###content_3 +indy100.com###content_4 +indy100.com###content_5 +indy100.com###content_6 +indy100.com###content_7 +notebookcheck.net###contenta +theproxy.lol,unblock-it.com,uproxy2.biz###cookieConsentUR99472 +alt-codes.net###copyModal .modal-body +wsj.com###coupon-links +pcgamer.com###coupons +boots.com###criteoSpContainer +lordz.io###crossPromotion +croxyproxy.rocks###croxyExtraZapper +toolslib.net###cta-box +forbes.com###cta-builder +asmag.com###ctl00_en_footer1_bannerPopUP1_panel_claudebro +digit.in###cubewrapid +apkmody.mobi###custom-container +miloserdov.org,winaero.com,wpneon.com###custom_html-10 +miloserdov.org###custom_html-11 +colombiareports.com,miloserdov.org,mostlyblogging.com###custom_html-14 +mostlyblogging.com,sonyalpharumors.com###custom_html-15 +eetimes.eu,miloserdov.org###custom_html-16 +wallethacks.com###custom_html-18 +budgetbytes.com,ets2.lt,miloserdov.org###custom_html-2 +blissfuldomestication.com###custom_html-22 +sonyalpharumors.com###custom_html-25 +mostlyblogging.com,tvarticles.me###custom_html-3 +godisageek.com###custom_html-4 +mangaread.org###custom_html-48 +comicsheatingup.net###custom_html-5 +citymagazine.si,colombiareports.com,filmschoolrejects.com,hongkongfp.com,phoneia.com,weatherboy.com###custom_html-6 +medievalists.net###custom_html-7 +theteche.com###custom_html-8 +wsj.com###cx-deloitte-insight +cyclingflash.com###cyclingflash_web_down +cyclingflash.com###cyclingflash_web_mid_1 +cyclingflash.com###cyclingflash_web_top +dailycaller.com###dailycaller_incontent_1 +dailycaller.com###dailycaller_incontent_2 +dailycaller.com###dailycaller_incontent_3 +dailycaller.com###dailycaller_incontent_4 +laineygossip.com###date-banner +helpwithwindows.com###desc +eatwell101.com###desk1 +fastfoodnutrition.org###desk_leader_ad +deccanherald.com###desktop-ad +newatlas.com###desktop_article_1 +newatlas.com###desktop_article_2 +newatlas.com###desktop_footer +eldersweather.com.au###desktop_new_forecast_top_wxh +homestuck.com###desktop_skyscraper +pikalytics.com###dex-list-0 +advisorperspectives.com###dfp-ap-2016-interstitial +scoop.co.nz###dfp-shadow +flyordie.com###dgad +datagenetics.com###dgsidebar +webgames.io###di-ai-left +webgames.io###di-ai-right +webgames.io###di-ai-right-big +lust-goddess.com###dialog-partner +wsj.com###dianomi-module +diep.io###diep-io_300x250 +tmo.report###directad +realclearpolitics.com###distro_right_rail +tribunnews.com###div-Inside-MediumRectangle +ndtvgames.com###div-ad +printweek.in###div-button1-ad +designtaxi.com###div-center-wrapper +allafrica.com###div-clickio-ad-superleaderboard-a +herfamily.ie,sportsjoe.ie###div-gpt-top_page +abovethelaw.com###div-id-for-middle-300x250 +abovethelaw.com###div-id-for-top-300x250 +flashbak.com###div-insticator-ad-14 +pch.com###div-pch-gpt-placement-bottom +pch.com###div-pch-gpt-placement-multiple +pch.com###div-pch-gpt-placement-top +dailytrust.com###div-vi-1716478739 +newser.com###divImageAd +newser.com###divMobileHeaderAd +newser.com###divNavAdFixed +gasbuddy.com###divSky +newser.com###divStoryBigAd1 +newser.com###divWhizzcoRightRail +hometheaterreview.com###div_block-382-13 +hindustantimes.com###divshopnowRight +indiatvnews.com###ds_default_anchor +unite-db.com###ds_lb1 +unite-db.com###ds_lb2 +thedailystar.net###dsspHS +permanentstyle.com###dttop +duo.op.gg###duo-ad-box-head +jigzone.com###dz +sashares.co.za###elementor-popup-modal-89385 +asmag.com###en_footer1_bannerPopUP1_panel_claudebro +geekwire.com###engineering-centers-sidebar +thegatewaypundit.com###enhancedtextwidget-30 +evoke.ie###ev_desktop_mpu1 +extra.ie###ex_desktop_mpu1 +jigzone.com###fH +csstats.gg###faceit-banner +cspdailynews.com,restaurantbusinessonline.com###faded +enjoy4fun.com###fake-ads-dom +openloading.com###fakeplayer +theroar.com.au###fan-tech-anchor +asianjournal.com###fancybox-overlay +asianjournal.com###fancybox-wrap +farmersjournal.ie###farmersmarket-embed-code +thedrinknation.com###fcBanner +247checkers.com###feature-ad-holder +perezhilton.com###feature-spot +forbes.com###featured-partners +fandom.com###featured-video__player-container +djxmaza.in,miuiflash.com###featuredimage +bollywoodshaadis.com,mumsnet.com###feed-ad-1 +bollywoodshaadis.com,mumsnet.com###feed-ad-2 +bollywoodshaadis.com,mumsnet.com###feed-ad-3 +en.numista.com###fiche_buy_links +getyarn.io###filtered-bottom +finbold.com###finbold\.com_middle +investing.com###findABroker +gonintendo.com###first-leaderboard +healthshots.com###fitnessTools +healthshots.com###fitnessToolsAdBot +thisismoney.co.uk###fiveDealsWidget +thefa.com###fixedAdLeft +thefa.com###fixedAdRight +point2homes.com,propertyshark.com###fixedban +cnx-software.com###fixeddbar +topsporter.net###fl-ai-widget-placement +vscode.one###flamelab-convo-widget +apkmody.mobi###flirtwith-modal +editpad.org###floorad-wrapper +clintonherald.com,ottumwacourier.com,thetimestribune.com###floorboard_block +streams.tv###flowerInGarden +patient.nimblerx.com###flt-pv-1 > div +mangakakalot.gg###fly_chapter_01 +12tomatoes.com###footboard +mybib.com###footer > div +fanlesstech.com###footer-1 +metasrc.com###footer-content +bundesliga.com###footer-partnerlogo +memedroid.com###footer-sticky-ad-widget +warcraftpets.com###footer-top +ksstradio.com###footer-widgets +fixya.com###footerBanner +techrounder.com###footerFixBanner +atptour.com###footerPartners +phpbb.com###footer_banner_leaderboard +forums.anandtech.com,forums.pcgamer.com,forums.tomsguide.com,forums.tomshardware.com###footer_leaderboard +feedicons.com###footerboard +wanderlustcrew.com###fpub-popup +blenderartists.org,stonetoss.com###friends +peacemakeronline.com###front_mid_right > center +thefa.com###ft-adverts +tarladalal.com###ftr_adspace +imgbox.com###full-page-redirect +gomagic.org###fullscreen_ad +gomagic.org###fullscreen_ad_wrap +datareportal.com###fuse-sticky +clocktab.com###fv_left-side +pacificcitizen.org###fws_6848546968120 +pacificcitizen.org###fws_68485551c135f +fxleaders.com###fxl-popup-banner +fxstreet.com###fxs-sposorBroker-topBanner +colourlovers.com###ga-above-footer +colourlovers.com###ga-below-header +9bis.net###gad +gaiaonline.com###gaiaonline_leaderboard_atf +gameguardfaq.nprotect.com###gall_bg +cheatcodes.com###game_details_ad +birdsandblooms.com,familyhandyman.com,rd.com,tasteofhome.com,thehealthy.com###gch-prearticle-container +geekwire.com###geekwork +investing.com###generalOverlay +thecountersignal.com###geo-header-ad-1 +dotesports.com,progameguides.com###gg-masthead +localgovernmentlawyer.co.uk###gk-mainbody-top +freegames.org###gla +wordcounter.net###glya +mediamass.net###google +propertyshark.com###google-ads-directoryViewRight +healthbenefitstimes.com###google-adv-top +photojpl.com###google01 +mediamass.net###google3 +windows2universe.org###google_mockup +desmoinesregister.com###gpt-dynamic_native_article_4 +desmoinesregister.com###gpt-high_impact +malaysiakini.com###gpt-layout-top-container +desmoinesregister.com###gpt-poster +justdial.com###gptAds2 +justdial.com###gptAdsDiv +spellcheck.net###grmrl_one +nintendoworldreport.com###hAd +lapoderosa.com###hcAdd +castanet.net###hdad +inventorspot.com,mothering.com,wordfind.com###header +ndtv.com###header-ad-slot +fxempire.com###header-ads-block +khelnow.com###header-adwords-section +aeroexpo.online,agriexpo.online,directindustry.com,droidgamers.com,fonearena.com,frontlinesoffreedom.com,stakingrewards.com###header-banner +dominicantoday.com###header-banners +govevents.com###header-display +nagpurtoday.in###header-sidebar +looperman.com,sailingmagazine.net###header-top +newser.com###headerAdSection +lokmattimes.com###headerBanner +dailyherald.com###headerBarAd +realestate.com.au###headerLeaderBoardSlot +forums.anandtech.com,forums.androidcentral.com,forums.tomsguide.com,forums.tomshardware.com,forums.whathifi.com,redflagdeals.com###header_leaderboard +thefederal.com###header_mid_level_1 +digitalpoint.com###header_middle +coolors.co###header_nav + a +writerscafe.org###header_pay +conjugacao-de-verbos.com,conjugacion.es,die-konjugation.de,the-conjugation.com###header_pub +deckstats.net###header_right_big +metasrc.com###header_wrapper +hwhills.com,nikktech.com,revizoronline.com,smallscreenscoop.com###headerbanner +sat24.com###headercontent-onder +hometheaterreview.com###headerhorizontalad +nnn.ng###hfgad1 +nnn.ng###hfgad2 +thefileslocker.net###hiddenLinkImg +thegazette.com###high-impact +countrylife.co.uk,whowhatwear.com###highline-leaderboard +stackoverflow.com###hireme +techmeme.com###hiring +heatmap.news###hmn_sponsored_post +gunbroker.com###home-ad-a-wrapper +dailysocial.id###home-ads +transfermarkt.com###home-rectangle-spotlight +shobiddak.com###homeShobiddakAds +sslshopper.com###home_quick_search_buttons > div +hometheaterreview.com###homepagehorizontalad +nutritioninsight.com,packaginginsights.com###horizontalblk +skylinewebcams.com###hostedby +hostelgeeks.com###hostelModal +ukutabs.com###howtoreadbutton +whatismyip.com###hp-ad-banner-top +webmd.com###hp-ad-container +laredoute.be,laredoute.ch,laredoute.co.uk,laredoute.com,laredoute.de,laredoute.es,laredoute.fr,laredoute.gr,laredoute.it,laredoute.nl,laredoute.pt,laredoute.ru###hp-sponsored-banner +krdo.com###hp_promobox +drugdiscoverynews.com###hs-web-interactives-bottom-anchor +blog.hubspot.com###hs_cos_wrapper_blog_post_sticky_cta +nettiauto.com,nettikaravaani.com,nettikone.com,nettimokki.com,nettimoto.com,nettivene.com###huge_banner +autotrader.ca###hulkTileBottomRow +y2mate.nu###i +robbreport.com###icon-sprite +dailysabah.com###id_d_300x250 +rakuten.com###id_parent_rrPlacementTop +gaiaonline.com###iframeDisplay +igeeksblog.com###ig_header +bsc.news###igaming-carousel-container +unitconversion.org###ileft +4f.to,furbooru.org###imagespns +blackbeltmag.com###img_comp-loxyxvrt +mydorpie.com###imgbcont +crn.com###imu1forarticles +scoop.co.nz###in-cont +astrolis.com###in-house-ad-daily +supremacy1914.com###inGameAdsContainer +bluejaysnation.com,canucksarmy.com,dailyfaceoff.com,flamesnation.ca,oilersnation.com,theleafsnation.com###in_article_300x250_1 +metabattle.com###inca1 +metabattle.com###inca2 +manga18.me###index_natvmo +pitpass.com###indexad300x250l +pitpass.com###indexsmallads +freedownloadmanager.org###inf_bnr_0 +droidinformer.org,freedownloadmanager.org###inf_bnr_1 +droidinformer.org###inf_bnr_2 +droidinformer.org###inf_bnr_3 +aerospacemanufacturinganddesign.com###inline-1 +datamation.com,esecurityplanet.com,eweek.com,serverwatch.com,webopedia.com###inline-top +howstuffworks.com###inline-video-wrap +koimoi.com###inline_ad +krnb.com###inner-footer +workhouses.org.uk###inner-top-ad +thefinancialexpress.com.bd###innerAds +timesofmalta.com###inscroll-banner +imagebam.com###inter > [src] +booklife.com###interstitial +rightmove.co.uk###interstititalSlot-0 +rightmove.co.uk###interstititalSlot-1 +rightmove.co.uk###interstititalSlot-2 +whatismyip.com###ip-box-ad +lcpdfr.com###ipsLayout_mainArea > .uBlockBrokeOurSiteIpsAreaBackground +osbot.org###ipsLayout_mainArea > div > div +uk420.com###ipsLayout_sidebar > div[align="center"] +osbot.org###ips_footer > div > div +playtorrio.pages.dev###iptv-promotional-link +unitconversion.org###iright +allnewspipeline.com###isg_add +icon-icons.com###istockphoto-placeholder +fakeupdate.net###itemz +cnn.com###js-outbrain-rightrail-ads-module +9gag.com###jsid-ad-container-page_adhesion +dhakatribune.com###jw-popup +food52.com###jw_iframe +variety.com###jwplayer_xH3PjHXT_plsZnDJi_div +jigzone.com###jz +ceoexpress.com###kalamazooDiv +msguides.com###kknbnpcv +kohls.com###kmn-featured-carousel +kohls.com###kmnsponsoredbrand-sponsored_top-anchor +karryon.com.au###ko-ads-takeover +koreatimes.co.kr###koreatimes_Minarticle6thpg_b_300_250 +koreatimes.co.kr###koreatimes_MinterplayPB_b_300_250 +koreatimes.co.kr###koreatimes_inarticle6thpg_b_580_400 +koreatimes.co.kr###koreatimes_righttop4_b_300_250 +kvraudio.com###kvr300600 +inc42.com###large_leaderboard_desktop-0 +peacemakeronline.com###latest_news > center +flaticon.com###layer_coupon +elfaro.net###layout-ad-header +screengeek.net###layoutContainer +friv.com###lba +friv.com###lbaTop +irishnews.com###lbtop +piraproxy.info,unblockedstreaming.net###lbxUR99472 +ebab.com###lcg-banner +wrestletalk.com###ldb_cont +metoffice.gov.uk###lead-ad-spacer +dailydooh.com###leaddiv +sansabanews.com###leader +techrepublic.com###leader-bottom +purediablo.com###leader-desktop +techrepublic.com###leader-plus-top +ugstandard.com###leader-wrap +pistonheads.com###leaderBoard +whdh.com,wsvn.com###leader_1 +12tomatoes.com,allwomenstalk.com,bloomberg.com,datpiff.com,gransnet.com,hockeybuzz.com,koreaboo.com,logotv.com,news.sky.com,onthesnow.co.uk,onthesnow.com,penny-arcade.com,publishersweekly.com,skysports.com,thedrinknation.com,theserverside.com,vacations.info###leaderboard +open.spotify.com###leaderboard-ad-element +vocm.com###leaderboard-area +bbc.com###leaderboard-aside-content +the-scientist.com###leaderboard-below-magazine-widget +abbynews.com,biv.com,kelownacapnews.com,lakelandtoday.ca,orilliamatters.com,reddeeradvocate.com,revelstokereview.com,sootoday.com,surreynowleader.com,theprogress.com,time.com,timescolonist.com,vancouverisawesome.com,vicnews.com###leaderboard-container +farooqkperogi.com###leaderboard-content +variety.com###leaderboard-no-padding +alternet.org###leaderboard-placeholder +the-scientist.com###leaderboard-top +foodnetwork.com###leaderboard-wrap +washingtonpost.com###leaderboard-wrapper +babycenter.com,fixya.com###leaderboardContainer +sportsnet.ca###leaderboardMaster +macrotrends.net###leaderboardTag +games2jolly.com###leaderboard_area +games2jolly.com###leaderboard_area_home +planetminecraft.com###leaderboard_atf +canadianbusiness.com,macleans.ca,vidio.com,yardbarker.com###leaderboard_container +spoonuniversity.com###leaderboard_fixed +belgie.fm,deutschland.fm,espana.fm,italia.fm,nederland.fm###leaderboardbg +eel.surf7.net.my###left +mangaplus.shueisha.tv,shueisharaw.tv###left-banner +news9live.com###left_before_story +thefederal.com###left_level_2 +assamtribune.com###left_level_before_tags +nitrome.com###left_skyscraper_container +nitrome.com###left_skyscraper_shadow +kitco.com###left_square +liverpoolfc.com###lfc_ads_article_pos_one +liverpoolfc.com###lfc_ads_home_pos_one +jestful.net###list-imga > center +closerweekly.com,intouchweekly.com,lifeandstylemag.com###listProductWidgetData +slidesgo.com###list_ads1 +slidesgo.com###list_ads2 +slidesgo.com###list_ads3 +listennotes.com###ln_homepage_banner +listennotes.com###ln_side_banner +wormate.io###loa831pibur0w4gv +hilltimes.com###locked-sponsored-stories-inline +lordz.io###lordz-io_300x250 +lordz.io###lordz-io_300x250_2 +lordz.io###lordz-io_728x90 +rxresource.org###lowerdrugsAd +lowes.com###lws_hp_recommendations_belowimage_1 +genius.com###lyrics-root > div[data-exclude-from-selection][class^="sc-"] +aol.com###m-games-overlay-main-right-rail-ads +hackerbot.net###madiv +hackerbot.net###madiv2 +hackerbot.net###madiv3 +animehub.ac###main-content > center +proprivacy.com###main-popup +w3big.com,w3schools.com###mainLeaderboard +express.co.uk,the-express.com###mantis-recommender-placeholder +planefinder.net###map-ad-container +themeforest.net###market-banner +citynews.ca###master-leaderboard +vpforums.org###master1 +defenseworld.net,marketbeat.com###mb-bar +koreaherald.com###mbpAd022303 +bmj.com###mdgxWidgetiFrame +active.com###med_rec_bottom +active.com###med_rec_top +bitcoinworld.co.in###media_image-18 +quantpedia.com,wakingtimes.com,ymcinema.com###media_image-2 +airfactsjournal.com###media_image-3 +palestinechronicle.com###media_image-4 +mostlyblogging.com###media_image-5 +chess.com###medium-rectangle-atf-ad +moomoo.io###menuContainer > .menuCard +webpronews.com###mid-art-ad +racingsportscars.com###middle-ad-destin +forward.com###middle-of-page +peacemakeronline.com###middle_banner_section +allrecipes.com###mm-ads-leaderboard-spacer_1-0 +cyberdaily.au###mm-azk560023-zone +mmorpg.com###mmorpg_desktop_list_1 +mmorpg.com###mmorpg_desktop_list_3 +si.com###mmvid +appleinsider.com###mobile-article-anchor +pocketgamer.com###mobile-background +tvtropes.org###mobile_1 +tvtropes.org###mobile_2 +permanentstyle.com###mobmid +permanentstyle.com###mobtop +coinarbitragebot.com###modal1 +cellmapper.net###modal_av_details +mytuner-radio.com###move-ad +moviemistakes.com###moviemistakes_300x600_300x250_160x600_sidebar_2 +consobaby.co.uk,gumtree.com,pcgamingwiki.com,thefootballnetwork.net###mpu +news.sky.com,skysports.com,trueachievements.com,truesteamachievements.com,truetrophies.com###mpu-1 +trueachievements.com,truesteamachievements.com,truetrophies.com###mpu-2 +trueachievements.com,truesteamachievements.com,truetrophies.com###mpu-3 +bbc.com###mpu-side-aside-content +standard.co.uk###mpu_bottom_sb_2_parent +fitbook-magazine.com,myhomebook-magazine.com,petbook-magazine.com,techbook-magazine.com,travelbook-magazine.com###mrec +gmanetwork.com###mrec-container +spin.ph###mrec3 +nitrome.com###mu_2_container +nitrome.com###mu_3_container +atlantatribune.com,footballleagueworld.co.uk,ioncinema.com,marijuanamoment.net,srilankamirror.com,tribune.net.ph###mvp-leader-wrap +europeangaming.eu###mvp-leader-wrap > a[href^="https://www.softswiss.com/"] +twinfinite.net###mvp-main-content-wrap +hotklix.com###mvp-main-nav-top > .mvp-main-box +fileproinfo.com###myNav +mediaupdate.co.za###mycarousel +usmagazine.com###nativeAdMosaicBreakingNews +coveteur.com###native_1 +coveteur.com###native_2 +newatlas.com###native_article_mid_desktop +newatlas.com###native_article_mid_desktop_2 +newatlas.com###native_index_desktop +newatlas.com###native_index_desktop_1 +techrepublic.com###nav-ad +planetizen.com###navbar-top +timeslive.co.za###nedbank_insurance +needpix.com###needpix_com_top_banner +my.juno.com###newsCarousel +livelaw.in###news_on_exit +farminguk.com###newsadvert +canberratimes.com.au,theland.com.au###newswell-leaderboard-container +nextshark.com###nextshark_com_leaderboard_top +searchfiles.de###nextuse +seroundtable.com###ninja_box +pcgamebenchmark.com,pcgamesn.com,pockettactics.com,thedigitalfix.com,wargamer.com###nn_astro_wrapper +digitalfoundry.net###nn_half +techraptor.net,unite-db.com###nn_lb1 +techraptor.net,unite-db.com###nn_lb2 +techraptor.net###nn_lb3 +techraptor.net###nn_lb4 +digitalfoundry.net###nn_mast +digitalfoundry.net###nn_mid1 +nintendoeverything.com###nn_mobile_mpu4_temp +gamertweak.com,nintendoeverything.com,steamidfinder.com###nn_mpu1 +digitalfoundry.net,gamertweak.com,nintendoeverything.com###nn_mpu2 +digitalfoundry.net,nintendoeverything.com###nn_mpu3 +digitalfoundry.net,nintendoeverything.com###nn_mpu4 +techraptor.net,tftactics.gg###nn_player +steamidfinder.com###nn_player_wrapper +forums.somethingawful.com###notregistered +ekathimerini.com###nx-stick-help +allaboutcookies.org###offer-review-widget-container +proreader.io###offerModal +freeaddresscheck.com,freecallerlookup.com,freecarrierlookup.com,freeemailvalidator.com,freeiplookup.com,freephonevalidator.com###offers +streetdirectory.com###offers_splash_screen +gizbot.com###oi-custom-camp +outlooktraveller.com###olkoverdiv +nzherald.co.nz###oneroof_nzh_homepage +majorgeeks.com###op1-ad +kohls.com###open-drawer +op.gg###opgg-kit-house-image-banner +livestreamfails.com###oranum_livefeed_container_0 +fortune.com###outbrain-container +koaa.com###outstream_connatix_container +powvideo.net,streamplay.to,uxstyle.com###overlay +megacloud.tv###overlay-center +rabbitstream.net###overlay-container +tokyvideo.com###overlay-video +mp4upload.com###overlayads +explainxkcd.com###p-Ads +phpbb.com###page-footer > h3 +accuradio.com###pageSidebarWrapper +cyclenews.com###pamnew +aninews.in,devdiscourse.com,footballorgin.com,gadgets360.com,justthenews.com,oneindia.com,zeebiz.com###parentDiv0 +mg.co.za###partner-content +standard.co.uk###partner-ctas +hwbot.org###partner-tiles +cnn.com###partner-zone +fastseduction.com,independent.co.uk###partners +kingsleague.pro###partnersGrid +arrivealive.co.za###partners_container +binaries4all.com###payserver +forums.golfwrx.com###pb-slot-top +tandfonline.com###pbgrd-skyscraper +genshin-impact-map.appsample.com###pc-br-300x250-gim +genshin-impact-map.appsample.com###pc-br1-float-gim +demap.info###pcad +investopedia.com###performance-marketing_1-0 +webnovelworld.org###pfvidad +premierguitar.com###pg_leaderboard +tutorialspoint.com###pg_top_ads +radiocaroline.co.uk###photographsforeverDiv +accuradio.com###pl_leaderboard +giantfreakinrobot.com###playwire-homepage-takeover-leaderboard +issuu.com###playwire-video +files.im###plyrrr +daijiworld.com###pnlCricket +pikalytics.com###pokedex-top-ad +politico.com###pol-01-wrap +standard.co.uk###polar-sidebar-sponsored +standard.co.uk###polarArticleWrapper +weloma.art###poly +pons.com###pons-ad-footer +pons.com###pons-ad-leaderboard__container +epicload.com###popconlkr +safetydetectives.com###popup +sciencewatch.blog###popup-banner +bankinfosecurity.com###popup-interstitial-full-page +chaseyoursport.com###popup1 +ratehub.ca###portalLeaderboardAd +ultrabookreview.com###postadsside +ultrabookreview.com###postzzif +hockeypatrol.com###ppuubb_1_mobile +hockeypatrol.com###ppuubb_2 +hockeypatrol.com###ppuubb_3 +hockeypatrol.com###ppuubb_4 +fastpeoplesearch.com###pradLink +fastpeoplesearch.com###pradLink + p +time.com###pre-nav-container +the-scientist.com###preHeader +playok.com###pread +adlice.com###preview-div +talkbass.com###primary-products +deepai.org###primis-ads +slashfilm.com###primis-container +forums.redflagdeals.com###primisContainer +walgreens.com###prod-sponsored +programmerhumor.io###product-widget +bluejaysnation.com,canucksarmy.com,dailyfaceoff.com,flamesnation.ca,oilersnation.com,theleafsnation.com###promo-container +sslshopper.com###promo-outer +thestreamable.com###promo-signup-bottom-sheet +dailymail.co.uk###promo-unit +porkbun.com###protonPromote +proxyium.com###proxyscrape_ad +frequence-radio.com###pub_listing_top +hockeypatrol.com###pub_marc +elevationmap.net###publift_home_billboard +fxsforexsrbijaforum.com###pun-announcement +pc-builds.com###pushdown_placeholder +sacurrent.com###pw-ATF-rectangle +sacurrent.com###pw-BTF-rectangle +prydwen.gg###pw-footer-ad-1 +bobvila.com,futurism.com,outdoorlife.com,popsci.com,thedrive.com,twz.com###pw-iab-leaderboard +bobvila.com,futurism.com,outdoorlife.com,popsci.com,taskandpurpose.com,thedrive.com,twz.com###pw-top-right-sidebar-aib +sparknotes.com###pwDeskLbAtf +lambgoat.com###pwDeskLbAtf-container +d4builds.gg###pwParentContainer +thefastmode.com###quick_survey +sporcle.com###quiz-right-rail-unit-2 +techmeme.com###qwdbfwh +comicbookrealm.com###rad +coincarp.com###random_sponsored +rawstory.com###rawstory_front_2_container +reverso.net###rca +gransnet.com###rcol_lower_mpu +gransnet.com###rcol_mpu +businessgreen.com###rdm-below-header +slideserve.com###readl +shortwaveschedule.com###reclama_mijloc +time.is###recover +scoop.co.nz###rect +dict.cc###recthome +dict.cc###recthomebot +ip-tracker.org###rekl +tapatalk.com###relatedblogbar +plurk.com###resp_banner_ads +immoweb.be###result-list-header +apexcharts.com###revealDemandbaseAwarenesAnimationContainer +homedepot.com,nordstrom.com###revjet_container +10minutemail.net,eel.surf7.net.my###right +ndtv.com###right-ad-slot +msguides.com###right-bottom-camp +comicbookrealm.com###right-rail > .module +purewow.com###right-rail-ad +themarysue.com###right-rail-atf +gogetaroomie.com,snafu-comics.com###right-space +cined.com###right-widget-b-ads_widget-9 +cined.com###right-widget-b-alternative_links_widget-2 +cined.com###right-widget-c-ads_widget-7 +cined.com###right-widget-d-ads_widget-36 +cined.com###right-widget-top-ads_widget-23 +online-translator.com###rightAdvBlock +openspeedtest.com###rightArea +icon-icons.com###right_column +medicaldialogues.in###right_level_8 +numista.com###right_pub +thefederal.com###right_section_1 +collegedunia.com###right_side_barslot_1 +collegedunia.com###right_side_barslot_2 +collegedunia.com###right_side_barslot_3 +calcudoku.org###right_td +yardbarker.com###right_top_sticky +forums.tomshardware.com###rightcol_bottom +forums.anandtech.com,forums.androidcentral.com,forums.pcgamer.com,forums.tomsguide.com,forums.tomshardware.com,forums.whathifi.com###rightcol_top +numista.com###rightpub +road.cc###roadcc_Footer-Billboard +box-core.net,mma-core.com###rrec +anisearch.com###rrightX +ringsidenews.com###rsn-ap-sticky-bar +glennbeck.com###sPost_0_0_5_0_15_5_0_1_2_0 +glennbeck.com###sPost_Default_Layout_0_0_6_0_0_9_0_1_2_0 +spectrum.ieee.org###sSS_Default_Post_0_0_20_0_0_1_4_2 +advocate.com###sad_wrapper_0_0_1_0_0_0_1_0_1 +flatpanelshd.com###sb-site > .hidden-xs.container +centurylink.net###sc_home_header_banner +my.juno.com###scienceTile +coinarbitragebot.com###screener +walgreens.com###searchSponsoredProductContainer +adverts.ie###search_results_leaderboard +nagpurtoday.in###secondary aside.widget_custom_html +pao.gr###section--sponsors +hometheaterreview.com###section-20297-191992 +hometheaterreview.com###section-246-102074 +neoseeker.com###section-pagetop +searchenginejournal.com###sej-pop-wrapper_v3 +fark.com###sellwyld +analyticsinsight.net,shortorial.com###sgpb-popup-dialog-main-div-wrapper +wordhippo.com###sgwDesktopBottomDiv +v3rmillion.net###sharingPlace +fedex.com###shop-runner-banner-link +search.brave.com###shopping +shareinvestor.com###sic_superBannerAdTop +lifenews.com###sidebar +whatsondisneyplus.com###sidebar > .widget_text.amy-widget +tellymix.co.uk###sidebar > div[style] +globalwaterintel.com###sidebar-banner +spiceworks.com###sidebar-bottom-ad +ftvlive.com###sidebar-one-wrapper +carmag.co.za###sidebar-primary +ratehub.ca###sidebar-section-advertisement +saharareporters.com###sidebar-top +interest.co.nz,metasrc.com###sidebar-wrapper +koimoi.com###sidebar1 +scotsman.com###sidebarMPU1 +scotsman.com###sidebarMPU2 +ubergizmo.com###sidebar_card_spon +thebridalbox.com###sidebar_first_ad_container +trucknetuk.com###sidebarright +image.pi7.org###sidebarxad +disqus.com###siderail-sticky-ads-module +4runnerforum.com,acuraforums.com,blazerforum.com,buickforum.com,cadillacforum.com,camaroforums.com,cbrforum.com,chryslerforum.com,civicforums.com,corvetteforums.com,fordforum.com,germanautoforums.com,hondaaccordforum.com,hondacivicforum.com,hondaforum.com,hummerforums.com,isuzuforums.com,kawasakiforums.com,landroverforums.com,lexusforum.com,mazdaforum.com,mercuryforum.com,minicooperforums.com,mitsubishiforum.com,montecarloforum.com,mustangboards.com,nissanforum.com,oldsmobileforum.com,pontiactalk.com,saabforums.com,saturnforum.com,truckforums.com,volkswagenforum.com,volvoforums.com###sidetilewidth +gephardtdaily.com###simple-sticky-footer-container +995thewolf.com,newcountry963.com###simpleimage-3 +yourharlow.com###single_rhs_ad_col +inoreader.com###sinner_container +guessthe.game,guessthe.house,guesstheangle.wtf,guesstheaudio.com,guessthebook.app,guessthegrid.xyz,guessthelogo.wtf,guessthemovie.name,guessthephrase.xyz###sister-sites-ad +pocketgamer.com###site-background +webkinznewz.ganzworld.com###site-description +animeschedule.net###site-theme +animeschedule.net###site-theme-foot +dead-frog.com###site_top +2oceansvibe.com,pocketgamer.biz###skin +breakingdefense.com###skin-clickthrough +ebar.com###skin-left +ebar.com###skin-right +namemc.com###skin_wrapper +pinkvilla.com###skinnerAdClosebtn +dafont.com###sky +dailymail.co.uk,thisismoney.co.uk###sky-left-container +dailymail.co.uk###sky-right +dailymail.co.uk,thisismoney.co.uk###sky-right-container +skylinewebcams.com###skylinewebcams-ads2 +dailydooh.com###skysbar +holiday-weather.com,omniglot.com,w3schools.com,zerochan.net###skyscraper +nitrome.com###skyscraper_box +nitrome.com###skyscraper_shadow +scrabble-solver.com###skywideupper +surfline.com###sl-header-ad +slashdot.org###slashdot_deals +gunsamerica.com###slidebox +compleatgolfer.com,sacricketmag.com###slidein +accuradio.com###slot2Wrapper +orteil.dashnet.org###smallSupport +point2homes.com###smartAsset +apkmoddone.com###sn-Notif +sammobile.com###snack-ad-cont +sammobile.com###snack-vod +wrestletalk.com###snackOuter +wrestletalk.com###snackTopCont +celtsarehere.com###snack_dex3 +celtsarehere.com###snack_dex4 +forums.bluemoon-mcfc.co.uk###snack_dmpu +forums.bluemoon-mcfc.co.uk,gpfans.com###snack_ldb +forums.bluemoon-mcfc.co.uk,gpfans.com###snack_mpu +forums.bluemoon-mcfc.co.uk###snack_sky +ghacks.net###snhb-snhb_ghacks_bottom-0 +who-called.co.uk###snigel_ads-mobile +thedriven.io###solarchoice_banner_1 +wcny.org###soliloquy-12716 +toumpano.net###sp-feature +hilltimes.com###sp-mini-box +toumpano.net###sp-right +gamegpu.com###sp-top-banners +vuejs.org###special-sponsor +fastpeoplesearch.com###speedbumpWidgets +coingape.com###spinbtn +fastseduction.com###splash +streetdirectory.com###splash_screen_overlay +downloads.codefi.re###spo +downloads.codefi.re###spo2 +bitchute.com###spoSide +firmwarefile.com###spon +cssbattle.dev,slitaz.org###sponsor +bluefacts.app###sponsor-container +simonwillison.net###sponsored-banner +bestbuy.com###sponsored-carousel-na +nordstrom.com###sponsored-carousel-sponsored-carousel +newsfirst.lk###sponsored-content-1 +macys.com###sponsored-items-container +cnn.com###sponsored-outbrain-1 +golfgalaxy.com###sponsored-product +hiphopkit.com###sponsored-sidebar +philstar.com###sponsored_posts +techmeme.com###sponsorposts +fastseduction.com,fieggen.com,geekwire.com,landreport.com,semiengineering.com,vuejs.org,whenitdrops.com###sponsors +system-rescue.org###sponsors-left +colourlovers.com###sponsors-links +ourworldofenergy.com###sponsors_container +rent.ie###sresult_banner +geekwire.com###startup-resources-sidebar +fansided.com,si.com###static-top-ad-placeholder_1 +tvtropes.org###stick-cont +dvdsreleasedates.com###sticky +webcric.com###sticky-728x90-ad +guelphmercury.com###sticky-ad-1 +thestar.com###sticky-ad-2 +ktbs.com###sticky-anchor +levelgeeks.com###sticky-banner +datamation.com,esecurityplanet.com,eweek.com,serverwatch.com,webopedia.com###sticky-bottom +insidus.co.za###sticky-bottom-widget +stakingrewards.com###sticky-footer +gadgethacks.com,virtual.reality.news###sticky-footer--container +cpu-monkey.com###sticky-header-mobile +datamation.com###sticky-rail +gumtree.com.au###sticky-top-container +independent.co.uk,standard.co.uk,the-independent.com###stickyFooterRoot +afr.com###stickyLeaderboard +vintag.es###sticky_ads +bostonglobe.com###sticky_container.width_full +eurogamer.net,rockpapershotgun.com,vg247.com###sticky_leaderboard +lethbridgeherald.com###stickybox +medicinehatnews.com###stickyleaderboard +news18.com###stkad +timesnownews.com,zoomtventertainment.com###stky +sun-sentinel.com###stnWrapperDiv +westernjournal.com###stnvideo +rawstory.com###story-top-ad +healthshots.com###storyBlockOne +healthshots.com###storyBlockZero +suffolknewsherald.com###story_one_by_one_group +krunker.io###streamContainer +arenaev.com###subHeader +macrotrends.net###subLeaderboardTag +hifinews.com###sub_pop +ebaumsworld.com###subheader_atf_wrapper +electricbikereport.com###subscribe_to_our_newsletter +streams.tv###sunGarden +eenewseurope.com###superBanner +fitbook-magazine.com,myhomebook-magazine.com,petbook-magazine.com,techbook-magazine.com,travelbook-magazine.com###superbanner +dashnet.org###support +vk.com,vk.ru###system_msg +gumtree.com###tBanner +cbsnews.com###taboola-around-the-web-video-door +womansworld.com###taboola-article-1x1 +comicbookrealm.com###tad +mirror.co.uk###takeover +quizlet.com###targetDiv-setpage_billboard +romsgames.net###td-top-leaderboard +based-politics.com###tdi_107 +linuxtoday.com###tdi_46 +depressionforums.org###tdi_72 +cornish-times.co.uk###teads +demonicscans.org###teaser3 +the-star.co.ke###teasers +eetimes.com###techpaperSliderContainer +tecmint.com###tecmint_incontent +tecmint.com###tecmint_leaderboard_article_top +cnx-software.com###text-10 +worldtribune.com###text-101 +geeky-gadgets.com###text-105335641 +godisageek.com###text-11 +hpcwire.com###text-115 +cathnews.co.nz,cryptoreporter.info,net-load.com,vgleaks.com,wakingtimes.com###text-12 +radiosurvivor.com,thewashingtonstandard.com,vgleaks.com###text-13 +ericpetersautos.com###text-133 +vgleaks.com###text-14 +bioinformant.com,geeksforgeeks.org,theretirementmanifesto.com###text-15 +geeksforgeeks.org,vgleaks.com###text-16 +cleantechnica.com###text-165 +weekender.com.sg###text-17 +vgleaks.com###text-18 +populist.press###text-2 +freecourseweb.com###text-20 +9to5linux.com###text-21 +net-load.com###text-25 +cnx-software.com,cryptoreporter.info,net-load.com###text-26 +cnx-software.com,cryptoreporter.info###text-27 +flipline.com,westseattleblog.com###text-3 +needsomefun.net###text-36 +conversanttraveller.com###text-39 +postnewsgroup.com,thewashingtonstandard.com,tvarticles.me###text-4 +needsomefun.net###text-41 +bigblueball.com###text-416290631 +needsomefun.net###text-42 +kollelbudget.com###text-43 +foodsforbetterhealth.com###text-46 +eevblog.com###text-49 +computips.org,techlife.com,technipages.com,tennews.in###text-5 +snowbrains.com,theconservativetreehouse.com,times.co.zm,treesofblue.com###text-6 +yugatech.com###text-69 +treesofblue.com###text-7 +playco-opgame.com,sadeempc.com,thewashingtonstandard.com,westseattleblog.com###text-8 +thewashingtonstandard.com###text-9 +seganerds.com###text-html-widget-13 +seganerds.com###text-html-widget-16 +nanoreview.net###the-app > .mb +bestfriendsclub.ca###theme-bottom-section > .section-content +bestfriendsclub.ca###theme-top-section > .section-content +indy100.com###thirdparty01 +standard.co.uk###thirdparty_03_parent +siasat.com###tie-block_3274 +box-core.net,mma-core.com###tlbrd +technewsworld.com###tnavad +bramptonguardian.com###tncms-region-global-container-bottom +archaeologymag.com###tnp-leads-topbar +thenationalpulse.com###tnp_leaderboard1 +whatismyip.com###tool-what-is-my-ip-ad +accuweather.com,phonescoop.com###top +crn.com###top-ad-fragment-container +bookriot.com###top-alt-content +coingecko.com###top-announcement-header +cheese.com,fantasypros.com,foodlovers.co.nz,foodnetwork.ca,investorplace.com,kurocore.com,skift.com,thedailywtf.com,theportugalnews.com###top-banner +globalwaterintel.com###top-banner-image +independent.co.uk,the-independent.com###top-banner-wrapper +missingremote.com###top-bar +returnyoutubedislike.com###top-donors +savingcountrymusic.com###top-goog +breakingdefense.com###top-header +openspeedtest.com###top-lb +capetownmagazine.com###top-leader-wrapper +austinchronicle.com,carmag.co.za,fleetnews.co.uk,shawlocal.com,the-scientist.com,thegazette.com,vodacomsoccer.com###top-leaderboard +softexia.com###top-line +sourceforge.net###top-placeholder +gogetaroomie.com,snafu-comics.com###top-space +progameguides.com###top-sticky-sidebar-container +gamepur.com###top-sticky-sidebar-wrapper +sporcle.com###top-unit +nytimes.com###top-wrapper +legacy.com###topContent2 +krunker.io###topLeftAdHolder +krunker.io###topRightAdHolder +forum.wordreference.com###topSupp +walterfootball.com###top_S +yourharlow.com###top_ad_row +utne.com###top_advertisement +chicagotribune.com###top_article_fluid_wrapper +indy100.com,tarladalal.com###top_banner +caribpress.com###top_banner_container +cfoc.org###top_custom_banner +chicagotribune.com###top_fluid_wrapper +jamaicaobserver.com,pastemagazine.com###top_leaderboard +imdb.com###top_rhs +bookriot.com###top_takeover +w3newspapers.com###topads +minecraft-mp.com###topadspot +absolutelyrics.com,cdrlabs.com,eonline.com,exiledonline.com,findtheword.info,realitywanted.com,revizoronline.com,snapfiles.com###topbanner +radiome.ar,radiome.at,radiome.bo,radiome.ch,radiome.cl,radiome.com.do,radiome.com.ec,radiome.com.gr,radiome.com.ni,radiome.com.pa,radiome.com.py,radiome.com.sv,radiome.com.ua,radiome.com.uy,radiome.cz,radiome.de,radiome.fr,radiome.gt,radiome.hn,radiome.ht,radiome.lu,radiome.ml,radiome.org,radiome.pe,radiome.si,radiome.sk,radiome.sn,radyome.com###topbanner-container +armenpress.am###topbnnr +iconeye.com###topheaderadvert +tweaktown.com###toppbnf +worldtimebuddy.com###toprek +privacywall.org###topse +semiconductor-today.com###topsection +oxfordlearnersdictionaries.com###topslot_container +atomic-robo.com###topspace +the-scientist.com###torpedo +autodoc.co.uk###traffic_banner_wrapper_interstitial +bmj.com###trendmd-suggestions +devast.io###trevda +jigsawplanet.com###ts-toptimes + div[id*="-"] +pcworld.com,techhive.com###tso +trumparea.com###udmvid +openweathermap.org###ulla-banner +planetminecraft.com###ultra_wide +semiconductor-today.com###undermenu +upworthy.com###upworthyFreeStarVideoAdContainer +my.juno.com###usWorldTile +sammobile.com###venatus-hybrid-banner +nutritioninsight.com###verticlblks +mykhel.com,oneindia.com###verticleLinks +ghgossip.com###vi-sticky-ad +investing.com###video +forums.tomsguide.com###video_ad +gumtree.com.au###view-item-page__leaderboard-wrapper +playstationtrophies.org,xboxachievements.com###vnt-lb-a +counselheal.com,mobilenapps.com###vplayer_large +piraproxy.app###vpnBarUR99472 +browserleaks.com###vpn_text +w2g.tv###w2g-square-ad +igberetvnews.com,mediaweek.com.au,nextnewssource.com###wallpaper +realclearhistory.com###warning_empty_div +opensubtitles.org###watch_online +xxxporn.tube###watch_sidevide +xxxporn.tube###watch_undervideo +worldcrunch.com###wc_leaderboard +topfiveforex.com###wcfloatDiv +the-express.com###web-strip-banner +iptv.playtorrio.xyz###welcomePromo +webfail.com###wf-d-300x250-sb1 +walterfootball.com###wf_brow_box +sportscardforum.com###wgo_affiliates +whatismyipaddress.com###whatismyipaddress_320x50_Mobile_ATF +whatismyipaddress.com###whatismyipaddress_728x90_Desktop_ATF +itnews.com.au###whitepapers-container +tribunnews.com###wideskyscraper +shawlocal.com###widget-html-box-ownlocal +amazon.com###widget-rightUpsellSlot +livescience.com###widgetArea100 +watnopaarpunjabinews.com###widget_sp_image-2 +conversanttraveller.com###widget_sp_image-28 +watnopaarpunjabinews.com###widget_sp_image-3 +conversanttraveller.com###widget_sp_image-4 +ultrabookreview.com###widgetad2-top +etherealgames.com###widgets-wrap-after-content +etherealgames.com###widgets-wrap-before-content +wiki.gg###wikigg-sl-footer +wiki.gg###wikigg-sl-header +wiki.gg###wikigg-sl-rail +cyberchef.org###workspace-wrapper > [id][style*="height"] {height: 100% !important} +rediff.com###world_right1 +rediff.com###world_right2 +rediff.com###world_top +forward.com###wp_piano_top_wrapper +todayheadline.co,wavepublication.com###wpgtr_stickyads_textcss_container +xdaforums.com###xdaforums_leaderboard_atf +xdaforums.com###xdaforums_leaderboard_btf +xdaforums.com###xdaforums_right_1 +xdaforums.com###xdaforums_right_2 +elamigosgamez.com###xdbqsk +blasternation.com###xobda +yardbarker.com###yb_recirc +yardbarker.com###yb_recirc_container_mobile +transfermarkt.com###zLHXgnIj +croxyproxy.rocks###zapperSquare +cults3d.com###zone-home-selected +thenationalherald.com###zone298967839 +aviatorsmarket.com###zone324415992 +thenationalherald.com###zone361943461 +miamiherald.com,montrealgazette.com###zoneContainer +beyondgames.biz,ecoustics.com###zox-lead-bot +cleantechnica.com###zox-top-head-wrap +marketscreener.com###zppFooter +marketscreener.com###zppMiddle2 +marketscreener.com###zppRight2 +ultrabookreview.com###zzifhome +ultrabookreview.com###zzifhome2 +arydigital.tv###zzright +gulfnews.com##.-U-T1 +bigissue.com##.-ad +gamejolt.com##.-ad-widget +bigissue.com##.-ad-wrapper +porndoe.com##.-h-banner-svg-desktop +nhl.com##.-leaderboard +nhl.com##.-mrec +hellomagazine.com,hola.com##.-variation-bannerinferior +hellomagazine.com,hola.com##.-variation-megabanner +hellomagazine.com##.-variation-robainferior +hellomagazine.com##.-variation-robamid +hellomagazine.com##.-variation-robapaginas +yelp.com##.ABP +gamesadshopper.com,varsity.co.uk##.AD +advfn.com##.APS_TOP_BANNER_468_X_60_container +buzzfeed.com,darkreading.com,gamedeveloper.com,iotworldtoday.com,sevendaysvt.com,tasty.co,tucsonweekly.com##.Ad +mui.com##.Ad-root +deseret.com##.Ad-space +jagranjosh.com##.Ad720x90 +thingiverse.com##.AdBanner__adBanner--gSsno +surfline.com##.AdBlock_modal__QwIcG +jagranjosh.com##.AdCont +laist.com##.AdModule-container +ratemyprofessors.com##.AdNoBid__AdContainer-sc-7ofdbw-0 +tvnz.co.nz##.AdOnPause +issuu.com##.AdPlacement +alltrails.com##.AdPlacement_container__tMolj +manabadi.co.in##.AdSW +talkingpointsmemo.com##.AdSlot +hbr.org##.AdSlotZone_ad-container__eXYUj +legacy.com##.AdSlot__StandardAd-sc-2n7c64-0 +eliteprospects.com##.AdSlot_rectangle__HUBWN +petfinder.com##.AdUnitParagraph-module--adunitContainer--2b7a6 +therealdeal.com##.AdUnit_center__H9fGR +streetsblog.org##.AdUnit_wrapper__dDJUv +barrons.com##.AdWrapper-sc-9rx3gf-0 +earth.com##.AdZone_adZone__2w4TC +thescore.com##.Ad__container--MeQWT +interestingengineering.com##.Ad_adContainer__XNCwI +interestingengineering.com##.Ad_ad__hm0Ut +newspointapp.com##.Ad_wrapper +aleteia.org##.Ad_wrapper__B_hxA +greatandhra.com##.AdinHedare +geometrygames.io,jagranjosh.com##.Ads +upday.com##.AdsSolutionsSlot +sportsnet.ca##.Ads_card-wrapper__RKLH4 +alternativeto.net##.AdsenseAd-module-scss-module__6YBNDG__adLeaderboard +alternativeto.net##.AdsenseAd-module-scss-module__6YBNDG__adRectangle +iogames.onl##.Adv +yandex.com##.AdvOffers +kids-in-mind.com##.AdvallyContainer +airportinfo.live,audiokarma.org,audizine.com##.AdvallyTag +tennesseestar.com##.AdvancedText +iogames.onl##.Advc +tvnz.co.nz,world-nuclear-news.org##.Advert +aimagazine.com##.Advert_Advert__3TIcp +apnews.com,suffolknews.co.uk##.Advertisement +thesouthafrican.com##.Advertisement__AdsContainer-sc-4s7fst-0 +bbcearth.com##.Advertisement_container__K7Jcq +phoenixnewtimes.com##.AirBillboard +dallasobserver.com,houstonpress.com##.AirBillboardInlineContentresponsive +browardpalmbeach.com,dallasobserver.com,miaminewtimes.com,phoenixnewtimes.com,westword.com##.AirLeaderboardMediumRectanglesComboInlineContent +calendar.austinchronicle.com##.AirMedRectComboInlineResults1responsive +calendar.austinchronicle.com##.AirMedRectComboInlineResults2responsive +calendar.austinchronicle.com##.AirMedRectComboInlineResults3responsive +calendar.austinchronicle.com##.AirMedRectComboInlineResults4responsive +browardpalmbeach.com,dallasobserver.com,miaminewtimes.com,phoenixnewtimes.com,westword.com##.AirMediumRectangleComboInlineContent +technicalarp.com##.Arpian-ads +rankedboost.com##.Article-A-Align +aimagazine.com##.ArticleShare_ArticleShare__2O9DY +whatcar.com##.ArticleTemplate_masthead__oY950 +newsweek.com##.ArticleTwoColumnLayout_stickyAdContainer__fQzyz +smh.com.au##.BGXXr +photonics.com##.BOX_CarouselAd +imgur.com##.BannerAd-cont +dashfight.com##.BannerPlayware_block__up1Ra +coffeeordie.com##.BannerPromo-desktop +mp3andvideoconverter.com##.BannerReAds_horizontal-area__5JNuE +bloomberg.com##.BaseAd_baseAd-dXBqvbLRJy0- +cnbc.com##.BoxRail-styles-makeit-ad--lyuQB +latestdeals.co.uk##.BrD5q +chromeunboxed.com##.BuyButton +petfinder.com##.CardGrid-module--breakOut--a18cf +timesofindia.indiatimes.com##.CeUoi +thedailybeast.com##.CheatSheetList__placeholder +thedailybeast.com##.Cheat__top-ad +tutiempo.net##.ContBannerTop +dappradar.com##.Container--bottomBanners +songmeanings.com##.Container_ATFR_300 +songmeanings.com##.Container_ATF_970 +emarketer.com##.ContentRightAd +aerospacemanufacturinganddesign.com##.CoverPop-close-go +ulta.com##.CriteoProductRail +calcalistech.com##.Ctech_general_banner +ndtv.com##.CustomAdWidget-module-scss-module__xgZgtW__ads-wrp +lithub.com##.Custom_Ads +inverness-courier.co.uk,johnogroat-journal.co.uk##.DMPU +drudgereport.com##.DR-AD-SPACE +nationalworld.com##.Dailymotion__Inner-sc-gmjr3r-1 +realityblurb.com##.Desktop-Sticky +tweaktown.com##.DesktopRightBA +dormtherapy.com##.DesktopStickyBanner +yandex.com##.DirectFeature +games.mashable.com,games.usatoday.com,games.washingtonpost.com##.DisplayAd__container___lyvUfeBN +additivemanufacturing.media,compositesworld.com,ptonline.com##.DisplayBar +icodrops.com##.Feature-Line +thedailybeast.com##.Footer__coupons-wrapper +nameberry.com##.FullWidthAd_FullWidthAd__J1ZM1 +askapache.com##.GAD +modrinth.com##.GBBNWLJVGRHFLYVGSZKSSKNTHFYXHMBD +google.com##.GC3LC41DERB + div[style="position: relative; height: 170px;"] +google.com##.GGQPGYLCD5 +google.com##.GGQPGYLCMCB +gulfnews.com##.GGlm6 +google.com##.GISRH3UDHB +goodmenproject.com##.GMP_728_top +yiv.com##.GUIAdvertisement +harveynorman.com.au##.GelBrickHomePage_gam360-homepage-top-promo-banner-container__DKVgi +meduza.io##.GeneralMaterial-module-aside +inforum.com##.GoogleDfpAd-advertisement +coin360.com##.GuYYbg +seattletimes.com##.H0FqVZjh86HAsl61ps5e +news18.com##.Had262x218 +metservice.com##.Header +planningportal.co.uk##.HeaderAdArea__HeaderAdContainer-sc-1lqw6d0-0 +news.bloomberglaw.com##.HeaderAdSpot_height_1B2M2 +games.washingtonpost.com##.HomeCategory__ads___aFdrmx_3 +mope.io##.Home__home-ad-wrapper +semiconductor-today.com##.Horiba-banner +artsy.net##.IITnS +sporcle.com##.IMGgi +yandex.com##.ImagesViewer-SidebarAdv +genius.com##.InreadContainer-sc-b078f8b1-0 +timesofindia.indiatimes.com##.J7krm +doodle.com##.JupiterLayout__left-placement-container +doodle.com##.JupiterLayout__right-placement-container +inverness-courier.co.uk##.LLKGTX +laprensalatina.com##.LPL-after-content +eliteprospects.com##.LayoutAds_adWrapper__PM4K8 +kentonline.co.uk##.LeaderBack +apnews.com##.LeaderBoardAd-Mobile +fivebooks.com,varsity.co.uk##.Leaderboard-container +genius.com##.Leaderboard-sc-78e1105d-0 +theurbanlist.com##.LeaderboardAd +nameberry.com##.LeaderboardAtfAd +nationalgeographic.com##.LinkedImage +inverness-courier.co.uk,johnogroat-journal.co.uk##.MPU +medievalists.net##.Mnet_TopLeft_970x250 +wired.com##.MobileProductCardOuter-kMqsSf +autonocion.com##.Mobile_Bottom +autonocion.com##.Mobile_Top +ahaan.co.uk##.MuiSnackbar-anchorOriginBottomCenter +news18.com##.NAT_add +business-standard.com##.Nws_banner_Hp +chicago.suntimes.com,mangasect.com,manhuaplus.com##.OUTBRAIN +chronicle.com##.OneColumnContainer +newscientist.com##.Outbrain +upday.com##.OutbrainSlotWidget +kentonline.co.uk##.PSDRGC +laist.com##.Page-above +newatlas.com##.Page-above-content +newatlas.com##.Page-aside +govtech.com##.Page-billboard +news9.com,newson6.com##.Page-footer-Ad-overlay +news9.com,newson6.com##.Page-header-Ad-Slot +afar.com##.Page-header-hat +apnews.com##.Page-header-leaderboardAd +americanbanker.com##.PageAboveTopicBar +chronicle.com##.PageHeaderMegaHat +nameberry.com##.Pagination-ad +ask.com##.PartialKelkooResults +hbr.org##.PartnerCenter-module_container__w6Ige +hulu.com##.PauseAdCreative-wrap +noon.com##.PdpRecommendations-module-scss-module__e4nPqG__recosWrapper +cubbyathome.com,thekitchn.com##.PostDesktopStickyFooter +cubbyathome.com##.Post__ad +thekitchn.com##.Post__inPostVideoAdDesktop +hbr.org##.PrimaryAd_ad-container__YHDwJ +stocktwits.com##.Primis_container__OlMHR +tech.hindustantimes.com##.ProductAffilateWrapper +noon.com##.ProductDetailsDesktop-module-scss-module__AYN9Ya__topSlotWrapper +yandex.com##.ProductGallery +atlasobscura.com##.ProgrammaticMembershipCallout--taboola-member-article-container +citybeat.com,clevescene.com,cltampa.com##.PromoTopBar +sciencealert.com##.Purch_Y_C_0_1-container +tumblr.com##.Qrht9 +tvzoneuk.com##.R38Z80 +forum.ragezone.com##.RZBannerUnit +barrons.com##.RenderBlock__AdWrapper-sc-1vrmc5r-0 +whatcar.com##.ReviewHero_mastheadStyle__Bv8X0 +newser.com##.RightRailAds +games.usatoday.com##.RightRailDeprecated__displayAdRight___byqVgMD_ +games.mashable.com##.RightRail__displayAdRight___PjhV3mIW +clutchpoints.com##.RzKEf +gulfnews.com##.SDEAy +toonstream.co##.SH-Ads +gq.com##.SavingsUnitedCouponsWrapper-gPnqA-d +lbcgroup.tv##.ScriptDiv +staples.com##.SearchRootUX2__bannerAndSkuContainer +m.mouthshut.com##.SecondAds +genius.com##.SectionLeaderboard-sc-dbc68f4-0 +genius.com##.SectionLeaderboard__Center-sc-1f7f30cc-1 +simkl.com##.SimklTVDetailEpisodeLinksItemHref +ultimate-guitar.com##.SiteWideBanner +thedailybeast.com##.Sizer +web.telegram.org##.SponsoredMessage +goodreads.com##.SponsoredProductAdContainer +streetsblog.org##.Sponsorship_articleBannerWrapper__wV_1S +thetimes.com##.Sticky-AdContainer +6abc.com,abc11.com,abc13.com,abc30.com,abc7.com,abc7chicago.com,abc7news.com,abc7ny.com##.StickyAdWrapper +coincarp.com,coincheckup.com,coincodex.com##.StickyBottom +apartmenttherapy.com##.StickyFooter +slideshare.net##.StickyVerticalInterstitialAd_root__f7Qki +slant.co##.SummaryPage-LustreEmbed +westword.com##.SurveyLinkSlideModal +smh.com.au##.TPT1c +newser.com##.TaboolaP1P2 +imgur.com##.Top300x600 +cnbc.com##.TopBanner-container +dappradar.com##.Tracker__StyledSmartLink-sc-u8v3nu-0 +health.news##.UnderNavigationContainer +meduza.io##.UnderTheSun-module-banner +moodyradio.org##.Underwriting-content-block +vitepress.dev##.VPCarbonAds +tsx.is##.VPDocAside > .mb-8 +tsx.is##.VPDocAsideCarbonAds +thegearpage.net##.VSForumList +thegearpage.net##.VSHomepageView +thegearpage.net##.VSPostbit +poebuilds.net##.W_tBwY +britannicaenglish.com##.WordFromSponsor_content_enToar +timesofindia.indiatimes.com##.Wqeee +this.org##.Wrap-leaderboard +tumblr.com##.XJ7bf +tumblr.com##.Yc2Sp +desmoinesregister.com##.ZJBvMP__ZJBvMP +natlawreview.com##.\#div\.block-native_bf +complex.com##.\[\@media\(min-width\:520px\)\]\:px-\[20px\] +greatandhra.com##._201223_ +greatandhra.com##._201223_2 +carexpert.co.nz,carexpert.com.au##._26wjo85 +jeffdornik.com##._2kEVY +coderwall.com##._300x250 +dwell.com##._33Pu0EaGxY8sv1vuyBCypG +brisbanetimes.com.au,smh.com.au,theage.com.au,watoday.com.au##._34z61 +timesnownews.com##._3n1p +thequint.com##._4xQrn +outlook.live.com##._BAY1XlyQSIe6kyKPlYP +gadgets360.com##.__wdgt_rhs_kpc +gadgets360.com##._ad +semafor.com##._adDivider_1qocf_29 +semafor.com##._adHeaderMargin_psyvh_111 +semafor.com##._adMargin_psyvh_211 +timeout.com##._ad_1elek_1 +carscoops.com,younghollywood.com##._ap_apex_ad +vscode.one##._flamelab-ad +semafor.com##._homeMiddleAd_x95p9_29 +timeout.com##._inlineAdContainer_1nxd6_60 +citymagazine.si##._iprom_inStream +365scores.com##._main-content_ad__ifF3C +365scores.com##._main-content_prediction__Gwi2c +observer.co.uk##._minH-_md_90px +tampafp.com##._ning_outer +filerox.com##._ozxowqadvert +filext.com##.a +startpage.com,startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion##.a-bg-result +rumble.com##.a-break +abcya.com##.a-leader +baptistnews.com,chimpreports.com,collive.com,defence-industry.eu,douglasnow.com,eltecolote.org,ilanganews.co.za,islandecho.co.uk,kbla1580.com,locklab.com,mallorcasunshineradio.com,newsindiatimes.com,runwaygirlnetwork.com,southsideweekly.com,spaceref.com,theshoesnobblog.com##.a-single +abcya.com##.a-skyscraper +krebsonsecurity.com##.a-statement +tellymix.co.uk##.a-text +androidtrends.com,aviationa2z.com,buffalorising.com,cryptoreporter.info,sportsorca.com,streamsgeek.com,tecadmin.net,techcentral.co.za,techrushi.com,trendstorys.com,vedantbhoomi.com##.a-wrap +breitbart.com##.a-wrapper +softexia.com##.a1g2023w +informer.com##.a2 +avitrader.com,cnaw2news.com,iconeye.com,kdnuggets.com,manageditmag.co.uk,sportsspectrum.com,tampabayparenting.com##.a2t-link +wmtips.com##.a3f17 +crypto.news##.a49292cf69626 +thechinaproject.com##.a4d +westword.com##.a65vezphb1 +breitbart.com##.a8d +localtiger.com##.a9gy_lt +scoredle.com##.aHeader +fastweb.com##.a_cls_s +fastfoodnutrition.org##.a_leader +premierguitar.com##.a_promo +fastfoodnutrition.org##.a_rect +informer.com##.aa-728 +diep.io##.aa-unit +informer.com##.aa0 +absoluteanime.com##.aa_leaderboard +romsmania.games##.aawp +ncomputers.org,servertest.online##.ab +resourcepack.net##.ab-rpnet-archive-bottom +resourcepack.net##.ab-rpnet-archive-header +resourcepack.net##.ab-rpnet-archive-infeed +resourcepack.net##.ab-rpnet-single-bottom +resourcepack.net##.ab-rpnet-single-header +freedownloadmanager.org##.ab1 +freedownloadmanager.org##.ab320 +partnerkin.com##.ab_ghost +whitecoatinvestor.com##.abc +britannica.com,merriam-webster.com##.abl +imgbb.com##.abnr +itc.ua##.about-noa +rankedboost.com##.above-article-section +oilcity.news##.above-footer-widgets +hollywoodreporter.com##.above-header-ad +ilsole24ore.com##.abox +creativeuncut.com##.abox-s_i +creativeuncut.com##.abox-s_i2 +roblox.com##.abp +manualslib.com##.abp_adv_s-title +pocketgamer.com##.abs +albertsons.com##.abs-carousel-proxy > [aria-label="Promo or Ad Banner"] +tfn.scot##.absolute-leaderboard +tfn.scot##.absolute-mid-page-unit +breitbart.com##.acadnotice +leeapk.com##.acrp-ad-box-1 +leeapk.com##.acrp-ad-box-2 +gamesystemrequirements.com##.act_eng +sneakernews.com##.active-footer-ad +christianpost.com##.acw +11alive.com,12news.com,12newsnow.com,13newsnow.com,13wmaz.com,5newsonline.com,9news.com,abc10.com,abovethelaw.com,adelaidenow.com.au,adtmag.com,aero-news.net,airportia.com,aiscoop.com,al.com,americanprofile.com,ans.org,appleinsider.com,arazu.io,architecturaldigest.com,arstechnica.com,as.com,asianwiki.com,askmen.com,associationsnow.com,attheraces.com,autoevolution.com,autoguide.com,automation.com,autotrader.com.au,bab.la,barchart.com,bdnews24.com,beinsports.com,biometricupdate.com,boats.com,bobvila.com,booksourcemagazine.com,bostonglobe.com,bradleybraves.com,briskoda.net,btimesonline.com,businessdailyafrica.com,businessinsider.com,businesstech.co.za,businessworld.in,c21media.net,carcomplaints.com,cbc.ca,cbs19.tv,celebdigs.com,celebified.com,ch-aviation.com,chargedevs.com,chemistryworld.com,cknxnewstoday.ca,cleveland.com,cnn.com,colourlovers.com,computerhope.com,couriermail.com.au,cracked.com,createtv.com,crn.com,crossmap.com,crosswalk.com,cyberscoop.com,dailycaller.com,dailylobo.com,dailyparent.com,dailytarheel.com,dcist.com,dealnews.com,defenseone.com,defensescoop.com,discordbotlist.com,downdetector.co.nz,downdetector.co.uk,downdetector.co.za,downdetector.com,downdetector.in,downdetector.sg,dpreview.com,driving.ca,dynamicwallpaper.club,earlygame.com,edmontonjournal.com,edscoop.com,elpais.com,emoji.gg,eurosport.com,excellence-mag.com,familydoctor.org,fanpop.com,fedscoop.com,femalefirst.co.uk,filehippo.com,filerox.com,finance.yahoo.com,firstcoastnews.com,flightglobal.com,flowermanga.net,fox6now.com,foxbusiness.com,foxnews.com,funeraltimes.com,gamepressure.com,gamesadshopper.com,gayvegas.com,geelongadvertiser.com.au,gmanetwork.com,go.com,godtube.com,golfweather.com,greasyfork.org,gtplanet.net,heraldnet.com,heraldsun.com.au,hodinkee.com,homebeautiful.com.au,hoodline.com,huckmag.com,indiatvnews.com,infobyip.com,inhabitat.com,interfax.com.ua,joc.com,jscompress.com,kagstv.com,kanogoma.com,kare11.com,kcentv.com,kens5.com,kgw.com,khou.com,kiiitv.com,king5.com,kpopstarz.com,krem.com,ksdk.com,ktvb.com,kvue.com,lagom.nl,leaderpost.com,leaf.tv,lehighvalleylive.com,letsgodigital.org,lifezette.com,liga.net,lonestarlive.com,looktothestars.org,m.famousfix.com,mangarockteam.com,marieclaire.com.au,marketwatch.com,masslive.com,maxpreps.com,mcpmag.com,mlb.com,mlive.com,modernretail.co,monkeytype.com,motherjones.com,mprnews.org,mybroadband.co.za,myfox8.com,myfoxzone.com,mygaming.co.za,myrecipes.com,namibtimes.net,nejm.org,neowin.net,newbeauty.com,news.com.au,news.sky.com,newscentermaine.com,newsday.com,newstatesman.com,newsweek.com,newyorkupstate.com,nj.com,nowtolove.co.nz,nowtolove.com.au,nst.com.my,nymag.com,nytimes.com,nzherald.co.nz,oregonlive.com,patch.com,patheos.com,pcgamebenchmark.com,pcgamesn.com,pennlive.com,petfinder.com,pharmaceutical-journal.com,picmix.com,pitchfork.com,planelogger.com,playsnake.org,playtictactoe.org,pokertube.com,politico.com,politico.eu,powernationtv.com,pressgazette.co.uk,proremodeler.com,quackit.com,ranker.com,ratemds.com,ratemyprofessors.com,redmondmag.com,refinery29.com,revolver.news,roadsideamerica.com,salisburypost.com,scholarlykitchen.sspnet.org,scworld.com,seattletimes.com,segmentnext.com,silive.com,simpledesktops.com,slippedisc.com,sltrib.com,smartcompany.com.au,softpedia.com,soranews24.com,spryliving.com,statenews.com,statescoop.com,statscrop.com,straight.com,streetinsider.com,stv.tv,syracuse.com,the-decoder.com,thecut.com,thedigitalfix.com,thedp.com,theeastafrican.co.ke,thefader.com,thefirearmblog.com,thegrocer.co.uk,them.us,themercury.com.au,theringreport.com,thestarphoenix.com,thv11.com,time.com,timeshighereducation.com,tntsports.co.uk,today.com,toonado.com,townhall.com,tracker.gg,tribalfootball.com,triblive.com,tripadvisor.*,tweaktown.com,ultimatespecs.com,ultiworld.com,untappedcities.com,uptodown.com,usmagazine.com,usnews.com,vancouversun.com,vogue.in,vulture.com,wamu.org,washingtonexaminer.com,washingtontimes.com,watzatsong.com,wbir.com,wcnc.com,wdhafm.com,weatheronline.co.uk,webestools.com,webmd.com,weeklytimesnow.com.au,wfaa.com,wfmynews2.com,wgntv.com,wgrz.com,whas11.com,who.com.au,windsorstar.com,winnipegfreepress.com,wkyc.com,wltx.com,wnep.com,worthplaying.com,wqad.com,wral.com,wrif.com,wtsp.com,wusa9.com,wwltv.com,wyff4.com,wzzm13.com,x17online.com,xatakaon.com,yorkpress.co.uk##.ad +comicbookmovie.com##.ad > .blur-up +independent.ie##.ad--articlerectangle +gbnews.com##.ad--billboard +washingtonpost.com##.ad--enterprise +hifi-classic.net##.ad--google_adsense > .ad--google_adsense +hifi-classic.net##.ad--google_adsense_bottom +hollywoodlife.com##.ad--horizontal +mothership.sg##.ad--imu +mothership.sg##.ad--lb +mothership.sg##.ad--side +paryatanbazar.com##.ad--space +allbusiness.com##.ad--tag +ip-address.org##.ad-1-728 +ip-address.org##.ad-2-336 +ip-address.org##.ad-3-728 +ip-address.org##.ad-5-300 +thestreamable.com##.ad-728x90-min-height +geotastic.net##.ad-970x250 +advrider.com##.ad-align +ndtvgames.com##.ad-art_dsk +buzzfeed.com##.ad-awareness +kurocore.com##.ad-b1 +deccanherald.com##.ad-background +britannica.com,canadiantire.ca,courthousenews.com,diabetesjournals.org,infobel.com,kuioo.com,linkedin.com,pilot007.org,radiotimes.com,soundguys.com,topperlearning.com##.ad-banner +radiopaedia.org##.ad-banner-desktop-row +wikiwand.com##.ad-between-sections +home-designing.com,inc.com,trustpilot.com##.ad-block +issuu.com##.ad-block--wide +sciencenews.org##.ad-block__mq-wrapper +slashdot.org##.ad-blocked-newsletter +am5.com##.ad-box-pc-3 +am5.com##.ad-box-right-pc-1 +diffchecker.com##.ad-box_container__q9Jhx +mv-voice.com##.ad-break +cybernews.com##.ad-campaign__aside +tvtropes.org##.ad-caption-subscribe-wrapper +ntvstream.cx##.ad-close-btn +imsa.com##.ad-close-container +thisiscolossal.com##.ad-code-block +npr.org##.ad-config +freecodecamp.org##.ad-connector +valetmag.com##.ad-constrained-container +12news.com,9news.com,9to5google.com,9to5mac.com,aad.org,advfn.com,all3dp.com,allaboutcookies.org,allnovel.net,amny.com,athleticbusiness.com,audiokarma.org,beeradvocate.com,beliefnet.com,bizjournals.com,bolavip.com,bonappetit.com,breakingac.com,britishheritage.com,businessday.ng,businessinsider.com,capemaynjdaily.com,cbs8.com,cc.com,ccjdigital.com,centralbucksnews.com,dailytrust.com,delish.com,downbeach.com,dutchnews.nl,ecr.co.za,electrek.co,engineeringnews.co.za,equipmentworld.com,euromaidanpress.com,fastcompany.com,fishermap.org,footyheadlines.com,fox10phoenix.com,fox13news.com,fox26houston.com,fox29.com,fox2detroit.com,fox32chicago.com,fox35orlando.com,fox4news.com,fox5atlanta.com,fox5dc.com,fox5ny.com,fox7austin.com,fox9.com,foxbusiness.com,foxla.com,foxnews.com,funkidslive.com,gfinityesports.com,globalspec.com,gmanetwork.com,grammarbook.com,greatbritishchefs.com,greatitalianchefs.com,hbr.org,highdefdigest.com,historynet.com,horshamnow.com,howstuffworks.com,huffpost.com,ibtimes.sg,inc.com,insidehook.com,intouchweekly.com,irishcentral.com,karanpc.com,khou.com,koat.com,ktvu.com,lifeandstylemag.com,longislandpress.com,macstories.net,mail.com,memuplay.com,metro.us,metrophiladelphia.com,minecraftforum.net,miningweekly.com,mixed-news.com,mobilesyrup.com,modernhealthcare.com,namemc.com,nbcnews.com,newrepublic.com,northpennnow.com,nzherald.co.nz,ocnjdaily.com,oneesports.gg,opb.org,outkick.com,papermag.com,perkvalleynow.com,phillydaily.com,physiology.org,pixiv.net,podcastaddict.com,punchng.com,qns.com,realsport101.com,reason.com,refinery29.com,ringsidenews.com,roadandtrack.com,scroll.in,seaislenews.com,seattletimes.com,songkick.com,sportskeeda.com,storyboard18.com,the-decoder.com,thedailybeast.com,thelocal.at,thelocal.ch,thelocal.de,thelocal.dk,thelocal.es,thelocal.fr,thelocal.it,thelocal.no,thelocal.se,thenationonlineng.net,thenewstack.io,thepost.co.nz,thetimes.com,tmz.com,toofab.com,tuasaude.com,uploadvr.com,usmagazine.com,vanguardngr.com,wildtangent.com,willowgrovenow.com,wired.com,wogx.com,worldsoccertalk.com,wral.com,yahoo.com##.ad-container +huffpost.com##.ad-container--1 +apponic.com##.ad-container-atf +apponic.com##.ad-container-compact +24timezones.com##.ad-container-diff +newthinking.com##.ad-container-mpu +24timezones.com##.ad-container-top-index +kanogoma.com##.ad-ctr +wheelofnames.com##.ad-declaration +thedailysight.com##.ad-description +sciencealert.com##.ad-desktop\:block +cnn.com##.ad-feedback__modal +simracingsetup.com##.ad-fixed-bottom +404media.co##.ad-fixed__wrapper +pixiv.net##.ad-footer +pixiv.net##.ad-frame-container +valetmag.com##.ad-full_span-container +valetmag.com##.ad-full_span_homepage-container +valetmag.com##.ad-full_span_section-container +mobilesyrup.com##.ad-goes-here +wikiwand.com##.ad-header +tmz.com##.ad-header-wrapper +business-standard.com##.ad-height-desktop +roadtovr.com##.ad-height-sidebar +carsauce.com##.ad-holder +local10.com##.ad-htl-slot +dailyboulder.com##.ad-image-wrap +statnews.com##.ad-in-article +wago.io##.ad-in-search +symbl.cc##.ad-incontent-rectangle +andscape.com##.ad-incontent-wrapper +pcgamesn.com,pockettactics.com,wargamer.com##.ad-injector-potential-slot +etfstream.com##.ad-inline-leaderboard +kenyans.co.ke##.ad-kenyans +kenyans.co.ke##.ad-kenyans-wrapper +cbc.ca##.ad-landing +armorgames.com##.ad-large-leaderboard-90 +heise.de##.ad-ldb-container +armorgames.com##.ad-leaderboard +revolvermag.com##.ad-leaderboard-foot +revolvermag.com##.ad-leaderboard-head +apksum.com##.ad-left +radiopaedia.org##.ad-link-grey +citynews.ca##.ad-load +cbc.ca##.ad-load-more +mariopartylegacy.com##.ad-long +armorgames.com##.ad-lrgrec +olympics.com##.ad-margin-big +wikiwand.com##.ad-mid-section +movieinsider.com##.ad-middle +consequence.net##.ad-min-height-600 +pixiv.net##.ad-mobile-anchor +op.gg##.ad-mobile-unit +houstonchronicle.com##.ad-module--ad--16cf1 +pedestrian.tv##.ad-no-mobile +constructionenquirer.com##.ad-page-takeover +capitalbrief.com,perezhilton.com##.ad-parent +mirror.co.uk,themirror.com##.ad-placeholder +carscoops.com,gadgethacks.com,notus.org##.ad-placement +bbcgoodfood.com,olivemagazine.com,radiotimes.com##.ad-placement-inline--2 +refooty.com##.ad-placement-wrapper +order-order.com##.ad-popup-footer +ntvstream.cx##.ad-popup-overlay +fanfox.net##.ad-reader +wapt.com##.ad-rectangle +mydramalist.com##.ad-removal-info +vesselfinder.com##.ad-right-m +news.ssbcrack.com##.ad-script +wikiwand.com##.ad-side +nationalreview.com##.ad-skeleton +accesswdun.com##.ad-slider-block +imresizer.com##.ad-slot-1-fixed-ad +imresizer.com##.ad-slot-2-fixed-ad +imresizer.com##.ad-slot-3-fixed-ad +cnn.com##.ad-slot-dynamic +cnn.com##.ad-slot-header__wrapper +goal.com##.ad-slot-live-score +barandbench.com##.ad-slot-row-m__ad-Wrapper__cusCS +cnn.com##.ad-slot__ad-wrapper +freepressjournal.in##.ad-slots +usnews.com##.ad-spacer__AdSpacer-sc-nwg9sv-0 +fermanaghherald.com##.ad-spaces +ascopost.com,fermanaghherald.com##.ad-text +techinformed.com##.ad-text-styles +playbuzz.com##.ad-top-1-wrapper +companiesmarketcap.com##.ad-tr +kcra.com,kmbc.com,koat.com,koco.com,ksbw.com,mynbc5.com,wapt.com,wbaltv.com,wdsu.com,wgal.com,wlwt.com,wmtw.com,wmur.com,wtae.com,wvtm13.com,wxii12.com,wyff4.com##.ad-track +forbes.com,newrepublic.com,sdxcentral.com,windowscentral.com##.ad-unit +sofascore.com##.ad-unit-container +ndtvprofit.com##.ad-with-placeholder-m__place-holder-wrapper__--JIw +dailyboulder.com,news.ssbcrack.com,trueachievements.com##.ad-wrap +intechopen.com##.ad-wraper +gbnews.com,smithsonianmag.com,tasty.co##.ad-wrapper +uncrate.com##.ad-wrapper-970 +insurancebusinessmag.com##.ad-wrapper-billboard-v2 +gamingdeputy.com##.ad-wrapper-parent-video +robtex.com##.ad0c +allscrabblewords.com,famously-dead.com,famouslyarrested.com,gamesadshopper.com,iamgujarat.com,samayam.com,timesofindia.com,vijaykarnataka.com##.ad1 +ukclimbing.com##.ad12195 +ukclimbing.com##.ad12249 +urih.com##.ad193 +allscrabblewords.com,famously-dead.com,famouslyarrested.com##.ad2 +allscrabblewords.com##.ad3 +news18.com##.ad300x250 +autoevolution.com##.ad300x600 +india.com##.ad5 +cricketcountry.com##.ad90mob300 +ptonline.com##.adBlock--center-column +ptonline.com##.adBlock--right-column +medibang.com##.adBlock__pc +emojiphrasebook.com##.adBottom +bigislandnow.com##.adBreak +sitelike.org##.adCLS +kijiji.ca##.adChoices-804693302 +economist.com##.adComponent_advert__kPVUI +economictimes.indiatimes.com,forums.sufficientvelocity.com,isp.netscape.com,m.economictimes.com,someecards.com,trailspace.com,wabetainfo.com##.adContainer +etymonline.com##.adContainer--6CVz1 +graziadaily.co.uk##.adContainer--inline +cbc.ca##.adContainer-F11hw +hellomagazine.com##.adContainerClass_acvudum +clashofstats.com##.adContainer_Y58xc +anews.com.tr##.adControl +carsdirect.com##.adFooterWrapper +hindustantimes.com##.adHeight270 +hindustantimes.com##.adHeight313 +bramptonguardian.com,guelphmercury.com,insideottawavalley.com,niagarafallsreview.ca,niagarathisweek.com,stcatharinesstandard.ca,thepeterboroughexaminer.com,therecord.com,thespec.com,thestar.com,wellandtribune.ca##.adLabelWrapper +bramptonguardian.com,insideottawavalley.com,niagarafallsreview.ca,stcatharinesstandard.ca,thepeterboroughexaminer.com,therecord.com,thestar.com,wellandtribune.ca##.adLabelWrapperManual +washingtonpost.com##.adMainImg +cosmopolitan.in##.adMainWrp +essentiallysports.com##.adRealEstate_brand-ad-space__GhXw8 +sammobile.com##.adRoot-loop-ad +coloradotimesrecorder.com##.adSidebar +golfdigest.com##.adSlot +bramptonguardian.com##.adSlot___3IQ8M +megamillions.com##.adSpace_desktop +drive.com.au##.adSpacing-module-scss-module__5jWT7q__drive-ad-spacing +drive.com.au##.adSpacing_drive-ad-spacing__HdaBg +dailyo.in##.adWrapp +romper.com##.adWrapper +barrons.com##.adWrapperNativeFlow +barrons.com##.adWrapperTopLead +forecast7.com##.ad[align="center"] +m.thewire.in##.ad_20 +indy100.com##.ad_300x250 +digiday.com##.ad_960 +food.com##.ad__ad +disqus.com##.ad__adh-wrapper +nationalpost.com,vancouversun.com##.ad__inner +politico.eu##.ad__mobile +canoe.com,dailykos.com##.ad__placeholder +travelm.de##.ad__row +canoe.com##.ad__section-border +asianjournal.com##.ad_before_title +kyivpost.com##.ad_between_paragraphs +cheatcodes.com##.ad_btf_728 +tribuneindia.com##.ad_div_incls +ntvkenya.co.ke##.ad_flex +base64decode.org,base64encode.org,beautifyjson.org,minifyjson.org,prettifycss.com,prettifyjs.net,uglifycss.com,uglifyjs.net,urldecoder.org,urlencoder.org,urlencoder.org.prettifycss.com##.ad_header_box +webdunia.com##.ad_in_between_art +auto-data.net##.ad_incar +dailykos.com##.ad_leaderboard__container +base64decode.org,base64encode.org,beautifyjson.org,minifyjson.org,prettifycss.com,prettifyjs.net,uglifycss.com,uglifyjs.net,urldecoder.org,urlencoder.org,urlencoder.org.prettifycss.com##.ad_left_box +gamereactor.asia,gamereactor.cn,gamereactor.com.tr,gamereactor.cz,gamereactor.de,gamereactor.dk,gamereactor.es,gamereactor.eu,gamereactor.fi,gamereactor.fr,gamereactor.gr,gamereactor.it,gamereactor.jp,gamereactor.kr,gamereactor.me,gamereactor.nl,gamereactor.no,gamereactor.pl,gamereactor.pt,gamereactor.se,gamereactor.vn##.ad_mobilebigwrap +bigislandnow.com##.ad_mobileleaderboard +numista.com##.ad_picture +housing.com##.ad_pushup_paragraph +housing.com##.ad_pushup_subtitle +base64decode.org##.ad_right_bottom +base64decode.org,urldecoder.org##.ad_right_bottom_box +base64decode.org,base64encode.org,beautifyjson.org,minifyjson.org,prettifycss.com,prettifyjs.net,uglifycss.com,uglifyjs.net,urlencoder.org,urlencoder.org.prettifycss.com##.ad_right_box +dailykos.com##.ad_right_rail +base64decode.org##.ad_right_top +base64decode.org,urldecoder.org##.ad_right_top_box +upi.com##.ad_slot_inread +kitco.com##.ad_space_730 +outlookindia.com##.ad_unit_728x90 +gifgit.com##.ad_unit_below_editor-container +gifgit.com##.ad_unit_header-container +geoguessr.com##.ad_wrapper__3DZ7k +webextension.org##.adb +queerty.com##.adb-box-large +lgbtqnation.com##.adb-ln-inarticle +outsports.com##.adb-os-lb-top +queerty.com##.adb-top-lb +tellymix.co.uk##.adb_top +wordfind.com##.adbl +dataversity.net,ippmedia.com,sakshi.com,songlyrics.com,yallamotor.com##.adblock +bookriot.com##.adblock-content +darkreader.org##.adblock-pro +carcomplaints.com,dolldivine.com,entrepreneur.com,interglot.com,news18.com,pricespy.co.nz,sourcedigit.com,telegraphindia.com##.adbox +rediff.com##.adbxo1 +moviechat.org##.adc +ar15.com##.adcol +dailycaller.com,fanatix.com,gamertweak.com,gematsu.com,politicalcompass.org,videogamemods.com,videogameschronicle.com,worldhistory.org##.adcontainer +pitpass.com##.adcontainer300x250l +sumanasa.com##.adcontent +thegatewaypundit.com##.adcovery +thegatewaypundit.com##.adcovery-home-01 +thegatewaypundit.com##.adcovery-postbelow-01 +online-image-editor.com,thehindu.com,watcher.guru##.add +mid-day.com##.add-300x250 +mid-day.com##.add-970x250 +securityaffairs.com##.add-banner +irishpost.com,theweekendsun.co.nz##.add-block +cricketcountry.com##.add-box +morningstar.in##.add-container +indianexpress.com##.add-first +watcher.guru##.add-header +ians.in##.add-inner +ruralview.com.au##.add-item +zeenews.india.com##.add-placeholder +moneycontrol.com##.add-spot +media4growth.com##.add-text +brandingmag.com,khaleejtimes.com##.add-wrap +ndtv.com##.add-wrp +muslimobserver.com##.add2 +projectorcentral.com##.addDiv2 +projectorcentral.com##.addDiv3 +harpersbazaar.in##.add_box +bridestoday.in##.add_container +longevity.technology,news18.com##.add_section +harpersbazaar.in##.add_wrapper +citationmachine.net##.adds-wrapper +longevity.technology##.addvertisment +immoweb.be##.adfocus +nesabamedia.com##.adfullwrap +advocate.com##.adgrid +fastcompany.com##.adhesive-banner +bettycrocker.com##.adhesiveAdSpacing +aish.com##.adholder-sidebar +auto-data.net##.adin +ping0.cc##.aditems +animalfactguide.com,msn.com,portlandmonthlymag.com,romsgames.net,sportsmediawatch.com##.adlabel +tedium.co##.adlayout +gemoo.com##.adlet_mobile +politico.com##.adlib-sticky-footer +prokerala.com##.adm-unit +goldderby.com##.adma +duo.op.gg##.admanager--box +brickset.com##.admin.buy +adn.com##.adn-adwrap +web-dev-qa-db-fra.com##.adn-ar +wikiwand.com##.adn-footer +freepik.com##.adobe-coupon-container +freepik.com##.adobe-detail +freepik.com##.adobe-grid-design +flightglobal.com,thriftyfun.com##.adp +minecraft-servers.gg##.adp-native-responsive +lol.ps##.adpage +vice.com##.adph +cell.com##.adplaceholders +thebrakereport.com##.adplugg +1sale.com,7billionworld.com,9jaflaver.com,appdoze.net,bestcrazygames.com,canstar.com.au,canstarblue.co.nz,cheapies.nz,climatechangenews.com,cointribune.com,cosmeticsbusiness.com,cryptonomist.ch,currencyrate.today,daily-sun.com,eventcinemas.co.nz,ezgif.com,gagadget.com,gamesadshopper.com,geo.tv,govtrack.us,gramfeed.com,hentaikun.com,herzindagi.com,hockeyfeed.com,i24news.tv,icons8.com,idiva.com,indiatimes.com,inspirock.com,islamchannel.tv,m.economictimes.com,mangasect.com,mb.com.ph,medicalxpress.com,mehrnews.com,meta-calculator.com,mini-ielts.com,motogp.com,mugshots.com,nbc.na,news.nom.co,nsfwyoutube.com,onlinerekenmachine.com,onlymyhealth.com,ozbargain.com.au,piliapp.com,readcomicsonline.ru,recipes.net,robuxtousd.com,russia-insider.com,savevideo.me,search.illicit.pw,sgcarmart.com,sherdog.com,straitstimes.com,teamblind.com,tehrantimes.com,thatmaidguy.su,thedailyjagran.com,thenews.com.pk,thestar.com.my,unb.com.bd,viamichelin.com,viamichelin.ie,vijesti.me,y8.com,yummy.ph##.ads +moneycontrol.com##.ads-320-50 +geometrygames.io##.ads-970x250 +dallasinnovates.com##.ads-article-body +nationthailand.com##.ads-billboard +founderoo.co##.ads-block_component +dnaindia.com##.ads-box-300x250 +zeenews.india.com##.ads-box-300x250::before +dnaindia.com##.ads-box-970x90 +hubcloud.club##.ads-btns +thefinancialexpress.com.bd##.ads-carousel-container +mangabats.com,nelomanga.net##.ads-contain +mangakakalot.gg##.ads-contain-v2 +gosunoob.com,indianexpress.com,matrixcalc.org,medicalxpress.com,philstarlife.com,phys.org,roblox.com,speakerdeck.com,spotify.com,techxplore.com##.ads-container +pcquest.com##.ads-div-style +freemalaysiatoday.com##.ads-dynamic-desktop +thetruthaboutcars.com##.ads-fluid-wrap +spambox.xyz##.ads-four +sinchew.com.my##.ads-frame +bluewin.ch##.ads-group +gadgetonhand.com##.ads-heading +fintech.tv##.ads-img +india.com##.ads-in-content +freeconvert.com##.ads-in-page +nationthailand.com##.ads-inarticle-2 +readcomicsonline.ru##.ads-large +intechopen.com##.ads-link +kiz10.com##.ads-medium +freemalaysiatoday.com##.ads-medium-desktop +theasianparent.com##.ads-open-placeholder +zeenews.india.com##.ads-placeholder-internal +gtagarage.com##.ads-playwire-container-250h +bangkokpost.com##.ads-related +smailpro.com##.ads-sidebar-right +gameshub.com##.ads-slot +batimes.com.ar##.ads-space +lowfuelmotorsport.com##.ads-stats +freemalaysiatoday.com##.ads-tall-desktop +wallpapers.com##.ads-unit-fts +karryon.com.au##.ads-wrap +ndtv.com,ndtvgames.com##.ads-wrp +apkrabi.io##.ads12 +bestcrazygames.com##.ads160600 +m.mouthshut.com##.adsBoxRpt2 +solscan.io##.adsHeaderTextWrapper +auto.hindustantimes.com##.adsHeight300x600 +tech.hindustantimes.com##.adsHeight720x90 +auto.hindustantimes.com##.adsHeight970x250 +weather.com##.adsSectionOuterWrapper +glowing.com##.adsWrapper-0-0-136 +dailyo.in##.adsWrp +radaris.com##.ads_160_600 +games2jolly.com##.ads_310_610_sidebar_new +jpeg-optimizer.com##.ads_A1_warp +jpeg-optimizer.com##.ads_A2_warp +kbb.com##.ads__container +kbb.com##.ads__container-kbbLockedAd +indiatodaygaming.com##.ads__container_rhs +metro.co.uk##.ads__index__adWrapper--cz7QL +wionews.com##.ads_adsBlock__8hCp1 +vccircle.com##.ads_ads__qsWIu +collegedunia.com##.ads_body_ad_code_container +mediapost.com##.ads_inline_640 +allevents.in##.ads_place_right +psypost.org##.ads_shortcode +skyve.io##.ads_space +gameplay.tips##.ads_sticky +101soundboards.com##.ads_top_container_publift +adlice.com,informer.com,waqi.info,xmplaylist.com##.adsbygoogle +harvardmagazine.com##.adsbygoogle-block +thartribune.com##.adsbypubpower +gayvegas.com,geekhistory.com,looktothestars.org,nintandbox.net,plurk.com,thebarentsobserver.com,tolonews.com,torquenews.com,webtor.io##.adsense +radaris.com##.adsense-responsive-bottom +temporary-phone-number.com##.adsense-top-728 +101soundboards.com##.adsense_matched_content +awesomeopensource.com##.adsense_uas +eatwell101.com##.adsenseright +libble.eu##.adserver-container +harveynorman.co.nz##.adserving +bolnews.com##.adsheading +welcomemagazinecy.com##.adshow_container +nepallivetoday.com##.adsimage +indianexpress.com##.adsizes +search.b1.org##.adslabel +healthing.ca##.adslot +washingtonpost.com##.adslot-c +insidehighered.com##.adslot-top-container +ev-database.org##.adslot_detail1 +ev-database.org##.adslot_detail2 +cdrab.com,offerinfo.net##.adslr +coingape.com##.adsoverlay +advisorperspectives.com##.adspace-landscape +bolnews.com##.adspadding +downzen.com##.adt +makemytrip.com##.adtech-desktop +cosmopolitan.in,indiatodayne.in,miamitodaynews.com##.adtext +wdwmagic.com##.adthrive-homepage-header +wdwmagic.com##.adthrive-homepage-in_content_1 +quadraphonicquad.com##.adthrive-placeholder-header +quadraphonicquad.com##.adthrive-placeholder-static-sidebar +thefpsreview.com##.adthrive-sidebar-ad +thefpsreview.com##.adthrive-sidebar-ad-sticky +pinchofyum.com##.adthrive_header_ad +stockanalysis.com##.adu +wdwmagic.com##.adunit-header +cooking.nytimes.com##.adunit_ad-unit__IhpkS +ip-address.org##.aduns +ip-address.org##.aduns2 +ip-address.org##.aduns6 +4cc.com.au,baltic-course.com,domusweb.it,futbol24.com,gatewaynews.co.za,gsmarena.com,gulfnews.com,idealista.com,jetphotos.com,karger.com,maritimejobs.com,newagebd.net,prohaircut.com,railcolornews.com,titter.com,zbani.com##.adv +mrw.co.uk##.adv-banner-top +apkgk.com##.adv-block2 +blastingnews.com##.adv-box-content +healthleadersmedia.com##.adv-con +junauza.com##.adv-hd +gsmarena.com##.adv-mid +sneakernews.com##.adv-parent +chaseyoursport.com##.adv-slot +greencarreports.com,motorauthority.com##.adv-spacer +worldarchitecture.org##.adv1WA1440 +futbol24.com##.adv2 +worldarchitecture.org##.adv2WA1440 +yesasia.com##.advHr +hurriyetdailynews.com##.advMasthead +moneycontrol.com##.advSlotsGrayBox +imagetotext.info##.adv_text +bollywoodshaadis.com##.adv_text2 +operawire.com##.advads-post_ads +moneycontrol.com##.advbannerWrap +barkinganddagenhampost.co.uk,becclesandbungayjournal.co.uk,blogto.com,burymercury.co.uk,cambstimes.co.uk,cardealermagazine.co.uk,crimemagazine.com,dailyedge.ie,datalounge.com,derehamtimes.co.uk,dermnetnz.org,developingtelecoms.com,dissmercury.co.uk,eadt.co.uk,eastlondonadvertiser.co.uk,edp24.co.uk,elystandard.co.uk,etf.com,eveningnews24.co.uk,exmouthjournal.co.uk,fakenhamtimes.co.uk,football.co.uk,gearspace.com,gematsu.com,gobankingrates.com,greatyarmouthmercury.co.uk,hackneygazette.co.uk,hamhigh.co.uk,headforpoints.com,hertsad.co.uk,huntspost.co.uk,icaew.com,ilfordrecorder.co.uk,iol.co.za,ipswichstar.co.uk,islingtongazette.co.uk,lgr.co.uk,lowestoftjournal.co.uk,maltapark.com,midweekherald.co.uk,momjunction.com,newhamrecorder.co.uk,newstalkzb.co.nz,northnorfolknews.co.uk,northsomersettimes.co.uk,pinkun.com,podtail.com,proxcskiing.com,remindmagazine.com,romfordrecorder.co.uk,royston-crow.co.uk,saffronwaldenreporter.co.uk,sidmouthherald.co.uk,stowmarketmercury.co.uk,stylecraze.com,sudburymercury.co.uk,the42.ie,thebridalbox.com,thecomet.net,thedrum.com,thejournal.ie,thinkspain.com,tineye.com,trucksplanet.com,varsity.co.uk,videogameschronicle.com,wattonandswaffhamtimes.co.uk,wccftech.com,whtimes.co.uk,wisbechstandard.co.uk,wtatennis.com,wymondhamandattleboroughmercury.co.uk##.advert +ess-news.com##.advert-block__container +saucemagazine.com##.advert-elem +saucemagazine.com##.advert-elem-1 +gozofinder.com##.advert-iframe +dailyfriend.co.za##.advert-leaderboard-element +defenseone.com##.advert-placeholder +stylist.co.uk##.advert-slot +farminguk.com##.advert-word +who-called.co.uk##.advertLeftBig +empireonline.com,graziadaily.co.uk##.advertWrapper_billboard__npTvz +m.thewire.in##.advert_text1 +momjunction.com,stylecraze.com##.advertinside +freeaddresscheck.com,freecallerlookup.com,freecarrierlookup.com,freeemailvalidator.com,freeiplookup.com,freephonevalidator.com,kpopping.com,zimbabwesituation.com##.advertise +gpfans.com##.advertise-panel +cointelegraph.com##.advertise-with-us-link_O9rIX +salon.com##.advertise_text +aan.com,aarp.org,additudemag.com,agbi.com,animax-asia.com,audioxpress.com,axn-asia.com,bravotv.com,citiblog.co.uk,cnbctv18.com,cnn59.com,controleng.com,curiosmos.com,downzen.com,dw.com,escapeatx.com,foodsforbetterhealth.com,gemtvasia.com,hcn.org,hotdogwater.dog,huffingtonpost.co.uk,huffpost.com,investmentnews.com,ipaomtk.com,jewishworldreview.com,legion.org,lifezette.com,livestly.com,magtheweekly.com,moneyland.ch,offshore-energy.biz,onetvasia.com,oxygen.com,oydir.com,pch.com,philosophynow.org,prospectmagazine.co.uk,readamericanfootball.com,readarsenal.com,readastonvilla.com,readbasketball.com,readbetting.com,readbournemouth.com,readboxing.com,readbrighton.com,readbundesliga.com,readburnley.com,readcars.co,readceltic.com,readchampionship.com,readchelsea.com,readcricket.com,readcrystalpalace.com,readeverton.com,readeverything.co,readfashion.co,readfilm.co,readfood.co,readfootball.co,readgaming.co,readgolf.com,readhorseracing.com,readhuddersfield.com,readhull.com,readinternationalfootball.com,readlaliga.com,readleicester.com,readliverpoolfc.com,readmancity.com,readmanutd.com,readmiddlesbrough.com,readmma.com,readmotorsport.com,readmusic.co,readnewcastle.com,readnorwich.com,readnottinghamforest.com,readolympics.com,readpl.com,readrangers.com,readrugbyunion.com,readseriea.com,readshowbiz.co,readsouthampton.com,readsport.co,readstoke.com,readsunderland.com,readswansea.com,readtennis.co,readtottenham.com,readtv.co,readussoccer.com,readwatford.com,readwestbrom.com,readwestham.com,readwsl.com,reason.com,redvoicemedia.com,revolver.news,rogerebert.com,smithsonianmag.com,streamingmedia.com,the-scientist.com,thecatholicthing.org,thecrimson.com,therighthairstyles.com,topsmerch.com,weatherwatch.co.nz,whichcar.com.au,woot.com,worldofbitco.in##.advertisement +topsmerch.com##.advertisement--6 +topsmerch.com##.advertisement-2-box +devdiscourse.com##.advertisement-area +tctmd.com##.advertisement-aside +business-standard.com##.advertisement-bg +atlasobscura.com##.advertisement-disclaimer +tctmd.com##.advertisement-headerz +boardgamegeek.com##.advertisement-leaderboard-lg +trumparea.com##.advertisement-list +sneakernews.com##.advertisement-section +atlasobscura.com##.advertisement-shadow +mid-day.com,radiocity.in##.advertisement-text +hotdogwater.dog##.advertisementFixed +dermnetnz.org##.advertisement__wrap +structurae.net##.advertisements +radiocity.in##.advertisementtext +scmp.com##.advertisers +afternoondc.in,allmovie.com,allmusic.com,betakit.com,bolnews.com,gq.co.za,imageupscaler.com,mja.com.au,ocregister.com,online-convert.com,pornicom.com,premier.org.uk,premierchristianity.com,radio.com,sidereel.com,spine-health.com,yourdictionary.com##.advertising +img2go.com##.advertising-leaderboard +img2go.com##.advertising-wrapper +theloadout.com##.advertising_slot_video_player +gadgets360.com##.advertisment +satdl.com##.advertizement +hurriyetdailynews.com##.advertorial-square-type-1 +svd.se##.advertory-svd-panorama-wrapper__longread +technologynetworks.com##.adverts_footer_scrolling_advert +148apps.com##.advnote +swisscows.com##.advrts--text +bearingarms.com,hotair.com,pjmedia.com,redstate.com,townhall.com,twitchy.com##.advs +allevents.in##.advt-text +rediff.com##.advtcontainer +pravda.com.ua##.advtext +rediff.com##.advttext +news18.com##.adwpr +toocool2betrue.com,videogameschronicle.com##.adwrapper +mail.google.com##.aeF > .nH > .nH[role="main"] > .aKB +revolver.news##.af-slim-promo +promocodie.com##.afc-container +real-fix.com,strategicenergy.eu##.afc_popup +freeartgen.com##.aff-card +fandom.com##.aff-unit__wrapper +secureblitz.com##.affcoups +f1i.com##.affiche +hindustantimes.com##.affilaite-widget +linuxize.com##.affiliate +romsgames.net##.affiliate-container +usatoday.com##.affiliate-widget-wrapper +topsmerch.com##.affix-placeholder +jambase.com##.affixed-sidebar-adzzz +trovit.ae,trovit.be,trovit.ca,trovit.ch,trovit.cl,trovit.co.cr,trovit.co.id,trovit.co.in,trovit.co.ke,trovit.co.nz,trovit.co.uk,trovit.co.ve,trovit.co.za,trovit.com,trovit.com.br,trovit.com.co,trovit.com.ec,trovit.com.hk,trovit.com.kw,trovit.com.mx,trovit.com.pa,trovit.com.pe,trovit.com.pk,trovit.com.qa,trovit.com.sg,trovit.com.tr,trovit.com.tw,trovit.com.uy,trovit.com.vn,trovit.cz,trovit.dk,trovit.es,trovit.fr,trovit.hu,trovit.ie,trovit.it,trovit.jp,trovit.lu,trovit.ma,trovit.my,trovit.ng,trovit.nl,trovit.no,trovit.ph,trovit.pl,trovit.pt,trovit.ro,trovit.se,trovitargentina.com.ar##.afs-container-skeleton +promocodie.com##.afs-wrapper +domainnamewire.com##.after-header +insidemydream.com##.afxshop +airlinegeeks.com##.ag-ads-target +venea.net##.ag_banner +venea.net##.ag_line +nexusmods.com##.agroup +stripes.com##.ahm-rotd +techpp.com##.ai-attributes +thegatewaypundit.com##.ai-dynamic +radiomixer.net##.ai-placement +slaynews.com##.ai-rotate +uploadvr.com##.ai-sticky-widget +androidpolice.com,constructionreviewonline.com,cryptobriefing.com,dereeze.com,tyretradenews.co.uk##.ai-track +journeybytes.com,thebeaverton.com,thisisanfield.com,unfinishedman.com,vice.com,windowsreport.com##.ai-viewport-1 +anoopcnair.com,askpython.com,beckernews.com,bizpacreview.com,boxingnews24.com,browserhow.com,constructionreviewonline.com,crankers.com,hard-drive.net,journeybytes.com,maxblizz.com,net-load.com,roadaheadonline.co.za,windowslatest.com,yugatech.com##.ai_widget +apkpure.com,apkpure.net##.aipure-button +petitchef.com,station-drivers.com,tennistemple.com##.akcelo-wrapper +allkpop.com##.akp2_wrap +lingohut.com##.al-board +lyricsmode.com##.al-c-banner +wikihow.com##.al_method +altfi.com##.alert +accessnow.org##.alert-banner +apkmb.com##.alert-noty-download +rapidsave.com##.alert.col-md-offset-2 +peoplematters.in##.alertBar +majorgeeks.com##.alford > tbody > tr +shortlist.com##.align-xl-content-between +dailywire.com##.all-page-banner +livejournal.com##.allbanners +silverprice.org##.alt-content +cined.com##.alternative-links +thejc.com##.altura_header +thejc.com##.altura_midpage +antimusic.com##.am-center +music-news.com##.amazon +orschlurch.net##.amazon-wrapper +indiatimes.com##.amazonProductSidebar +tech.hindustantimes.com##.amazonWidget +closerweekly.com,intouchweekly.com,lifeandstylemag.com,usmagazine.com##.ami-video-placeholder +faroutmagazine.co.uk##.amp-next-page-separator +cyberciti.biz##.amp-wp-4ed0dd1 +thepostemail.com##.amp-wp-b194b9a +gocomics.com##.amu-ad-leaderboard-atf +toonamiaftermath.com##.amznBanner +archpaper.com##.an-ads +simpleflying.com##.an-injected +letras.com##.an-pub +adspecials.us,ajanlatok.hu,akcniletak.cz,catalogosofertas.cl,catalogosofertas.com.ar,catalogosofertas.com.br,catalogosofertas.com.co,catalogosofertas.com.ec,catalogosofertas.com.mx,catalogosofertas.com.pe,catalogueoffers.co.uk,catalogueoffers.com.au,flugblattangebote.at,flyerdeals.ca,folderz.nl,folhetospromocionais.com,folletosofertas.es,gazetki.pl,kundeavisogtilbud.no,ofertelecatalog.ro,offertevolantini.it,promocatalogues.fr,promotiez.be,promotions.ae,prospektangebote.de,reklambladerbjudanden.se,tilbudsaviseronline.dk##.anchor-wrapper +streetdirectory.com##.anchor_bottom +rok.guide##.ancr-sticky +rok.guide##.ancr-top-spacer +phonearena.com##.announcement-section +phonearena.com##.announcements +minecraftskins.com##.antiblock-wrapper +tokyoweekender.com##.anymind-ad-banner +asiaone.com##.ao-ads +motor1.com##.ap +chargedretail.co.uk,foodstuffsa.co.za,thinkcomputers.org##.apPluginContainer +insideevs.com,motor1.com##.apb +thetoyinsider.com##.apb-adblock +eurogamer.net##.apester_block +pd3.gg##.app-ad-placeholder +d4builds.gg##.app__ad__leaderboard +classicfm.com##.apple_music +icon-icons.com##.apu +icon-icons.com##.apu-mixed-packs +beaumontenterprise.com,chron.com,ctinsider.com,ctpost.com,expressnews.com,houstonchronicle.com,lmtonline.com,middletownpress.com,mrt.com,mysanantonio.com,newstimes.com,nhregister.com,registercitizen.com,seattlepi.com,sfgate.com,stamfordadvocate.com,thehour.com,timesunion.com,weekand.com##.ar16-9 +dailycaller.com,tuasaude.com##.ar82zL-ad-container +ajc.com,bostonglobe.com,daytondailynews.com,journal-news.com,springfieldnewssun.com##.arc_ad +adn.com,businessoffashion.com,irishtimes.com##.arcad-feature +bloomberglinea.com##.arcad-feature-custom +biz.chosun.com##.arcad-wrapper +1news.co.nz,actionnewsjax.com,boston25news.com,fox23.com,hits973.com,kiro7.com,wftv.com,whio.com,wpxi.com,wsbradio.com,wsbtv.com,wsoctv.com##.arcad_feature +theepochtimes.com##.arcanum-widget +whatculture.com##.area-x__large +arkadiumhosted.com##.arena-ad-col +thehindu.com##.artShrEnd +ggrecon.com##.artSideBgBox +ggrecon.com##.artSideBgBoxBig +ggrecon.com##.artSideWrapBoxSticky +bollywoodshaadis.com##.art_ad_2 +scmp.com##.article--sponsor +thelocal.at,thelocal.ch,thelocal.de,thelocal.es,thelocal.fr,thelocal.it,thelocal.no##.article--sponsored +thehindu.com##.article-ad +19thnews.org##.article-ad-default-top +vt.co##.article-ad-wrapper +straitstimes.com##.article-ads-wrapper +phys.org##.article-banner +worldsoccertalk.com##.article-banner-desktop +wishesh.com##.article-body-banner +manilatimes.net##.article-body-content > .fixed-gray-color +crn.com##.article-cards-ad +coindesk.com##.article-com-wrapper +kmbc.com,wlky.com##.article-content--body-wrapper-side-floater +lrt.lt##.article-content__inline-block +firstforwomen.com##.article-content__sponsored_tout_ad___1iSJm +eonline.com##.article-detail__right-rail--topad +eonline.com##.article-detail__segment-ad +christianpost.com##.article-divider +purewow.com##.article-in-content-ad +aerotime.aero##.article-leaderboard +squaremile.com##.article-leaderboard-wrapper +scoop.co.nz##.article-left-box +spectator.com.au##.article-promo +newmobility.com##.article-sidebar--sponsored +iai.tv##.article-sidebar-adimage +phillyvoice.com##.article-sponsor-sticky +thelocal.com,thelocal.dk,thelocal.se##.article-sponsored +people.com##.articleContainer__rail +audizine.com##.articleIMG +onlyinyourstate.com##.articleText-space-body-marginBottom-sm +therecord.media##.article__adunit +accessonline.com##.article__content__desktop_banner +seafoodsource.com##.article__in-article-ad +financemagnates.com##.article__mpu-banner +empireonline.com##.article_adContainer--filled__vtAYe +graziadaily.co.uk,livefortheoutdoors.com##.article_adContainer__qr_Hd +empireonline.com##.article_billboard__X_edx +ubergizmo.com##.article_card_promoted +indiatimes.com##.article_first_ad +wikiwand.com##.article_footerStickyAd__wvdui +news18.com##.article_mad +gamewatcher.com##.article_middle +wikiwand.com##.article_sectionAd__rMyBc +lasvegassun.com##.articletoolset +news.artnet.com##.artnet-ads-ad +pixnoy.com##.as-bar +theinertia.com##.asc-ad +rentry.co##.asd_1 +asianjournal.com##.asian-widget +designboom.com##.aside-adv-box +healthday.com##.aside-collection-ad-slot +pickmypostcode.com##.aside-right.aside +goal.com##.aside_ad-rail__cawG6 +decrypt.co##.aspect-video +postandcourier.com,theadvocate.com##.asset-breakout-ads +macleans.ca##.assmbly-ad-block +chatelaine.com##.assmbly-ad-text +chatelaine.com,fashionmagazine.com##.assmbly-ad-wrapper +releasestv.com##.ast-above-header-wrap +attitude.co.uk##.at-advert +808fubo808.com##.at-class +animalcrossingworld.com##.at-sidebar-1 +guidingtech.com##.at1 +guidingtech.com##.at2 +fedex.com##.atTile1 +san.com##.atf-top-banner +timesnownews.com,zoomtventertainment.com##.atfAdContainer +atptour.com##.atp_ad +atptour.com##.atp_partners +bestbuy.com##.atwb-display-ad +usamega.com##.aud +audiobacon.net##.audio-widget +mbl.is##.augl +thepopverse.com##.autoad +wvnews.com##.automatic-ad +iai.tv##.auw--container +theblueoceansgroup.com##.av-label +tutsplus.com##.avert +airfactsjournal.com##.avia_image +kissorg.net##.avm +avweb.com##.avweb-home-leader +whatsondisneyplus.com##.awac-wrapper +tempr.email##.awrapper +siasat.com##.awt_ad_code +gulte.com##.awt_side_sticky +qz.com,theinventory.com##.ay-ad-slot +factinate.com##.aySlotLocation +auctionzip.com##.az-header-ads-container +conservativefiringline.com##.az6l2zz4 +businessday.co.za,chalkbeat.org,irishnews.com,sowetan.co.za,timeslive.co.za##.b-ads-block +bnnbloomberg.ca,cp24.com,ctvnews.ca,tsn.ca##.b-ads-custom +dailyvoice.com##.b-banner +ownedcore.com##.b-below-so-content +informer.com##.b-content-btm > table[style="margin-left: -5px"] +hypestat.com##.b-error +beaumontenterprise.com,chron.com,ctinsider.com,ctpost.com,expressnews.com,houstonchronicle.com,lmtonline.com,middletownpress.com,mrt.com,mysanantonio.com,newstimes.com,nhregister.com,registercitizen.com,seattlepi.com,sfchronicle.com,sfgate.com,stamfordadvocate.com,thehour.com,timesunion.com##.b-gray300.bt +china.ahk.de##.b-header__banner +ownedcore.com##.b-postbit-w +kyivpost.com##.b-title +cyberdaily.au,investordaily.com.au##.b-topLeaderboard +bizcommunity.com##.b-topbanner +ssyoutube.com##.b-widget-left +maritimeprofessional.com##.b300x250 +coin360.com##.b5BiRm +crypto.news##.b6470de94dc +genius.com##.bCLuZv +iol.co.za##.bDEZXQ +genius.com##.bIZLkL +copilot.microsoft.com##.b_ad +vidcloud9.me##.backdrop +kitguru.net,mcvuk.com,technologyx.com,thessdreview.com##.background-cover +ign.com##.background-image.content-block +allkeyshop.com,cdkeyit.it,cdkeynl.nl,cdkeypt.pt,clavecd.es,goclecd.fr,keyforsteam.de##.background-link-left +allkeyshop.com,cdkeyit.it,cdkeynl.nl,cdkeypt.pt,clavecd.es,goclecd.fr,keyforsteam.de##.background-link-right +gayexpress.co.nz##.backstretch +beincrypto.com##.badge--sponsored +kathimerini.com.cy##.ban_300x250 +kathimerini.com.cy##.ban_hor_d +izismile.com##.ban_top +saabplanet.com##.baner +realestate-magazine.rs##.banerright +rhumbarlv.com##.banlink +1001games.com,3addedminutes.com,4rfv.co.uk,808fubo808.com,alistapart.com,anguscountyworld.co.uk,arcadebomb.com,armageddonexpo.com,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,bikechatforums.com,birminghamworld.uk,blackpoolgazette.co.uk,bristolworld.com,bsc.news,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,ca-flyers.com,caixinglobal.com,caribvision.tv,chad.co.uk,cinemadeck.com,coryarcangel.com,csstats.gg,daventryexpress.co.uk,deathbycaptcha.com,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,diffordsguide.com,dominicantoday.com,doncasterfreepress.co.uk,dump.li,elyricsworld.com,euobserver.com,eurochannel.com,falkirkherald.co.uk,farminglife.com,fifetoday.co.uk,filmmakermagazine.com,foojay.io,footballtradedirectory.com,forexpeacearmy.com,funpic.hu,gartic.io,garticphone.com,gizmodo.com,glasgowworld.com,gr8.cc,gsprating.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hiphopdx.com,hortidaily.com,hucknalldispatch.co.uk,hyipexplorer.com,ibtimes.co.in,ibtimes.co.uk,imgsli.com,insidefutbol.com,ipwatchdog.com,irishpost.com,israelnationalnews.com,japantimes.co.jp,jpost.com,kissasians.org,koreaherald.com,kotaku.com,lancasterguardian.co.uk,laserpointerforums.com,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,livescore.in,londonworld.com,lutontoday.co.uk,manchesterworld.uk,marinelink.com,meltontimes.co.uk,mercopress.com,meteoradar.co.uk,miltonkeynes.co.uk,mmorpg.com,mob.org,myflr.org,nationalworld.com,newcastleworld.com,newryreporter.com,news.am,news.net,news12.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,oncyprus.com,onlineconvertfree.com,overclock3d.net,peterboroughtoday.co.uk,pharmatimes.com,photofilters.com,portsmouth.co.uk,powerboat.world,pulsesports.co.ke,pulsesports.ng,pulsesports.ug,roblox.com,rotherhamadvertiser.co.uk,rvtrader.com,sat24.com,scientificamerican.com,scotsman.com,shieldsgazette.com,slidescorner.com,speedcafe.com,starradionortheast.co.uk,stornowaygazette.co.uk,subscene.com,sunderlandecho.com,surreyworld.co.uk,sussexexpress.co.uk,sweeting.org,swzz.xyz,tass.com,thefringepodcast.com,theoldreader.com,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,timeslive.co.za,totallysnookered.com,townhall.com,toyworldmag.co.uk,unblockstreaming.com,vibilagare.se,vloot.io,vnexpress.net,wakefieldexpress.co.uk,warwickshireworld.com,weatheronline.co.uk,weekly-ads.us,wigantoday.net,worksopguardian.co.uk,worldtimeserver.com,xbiz.com,ynetnews.com,yorkshireeveningpost.co.uk,yorkshirepost.co.uk,yuntrack.com##.banner +papermag.com##.banner--ad__placeholder +dayspedia.com##.banner--aside +onlineradiobox.com##.banner--header +oilprice.com##.banner--inPage +puzzlegarage.com##.banner--inside +dayspedia.com##.banner--main +onlineradiobox.com##.banner--vertical +euroweeklynews.com##.banner-970 +kingmods.net,tappedout.net,tvinsider.com##.banner-ad +img2go.com,online-convert.com##.banner-ad-size +headlineintime.com##.banner-add +freepik.com##.banner-adobe +dailysocial.id,tiktok.com##.banner-ads +buoyant.io##.banner-aside +schoolguide.co.za##.banner-bar +schoolguide.co.za##.banner-bar-bot +pretoria.co.za##.banner-bg +cpubenchmark.net,crash.net,defence-ua.com,harddrivebenchmark.net##.banner-block +dailycoffeenews.com##.banner-box +igi-global.com##.banner-carousel-item +theshovel.com.au##.banner-col +jns.org,nscreenmedia.com,op.gg,rawinu.com,whoscored.com##.banner-container +dbdiagram.io,soccerway.com##.banner-content +insidebitcoins.com##.banner-cta-wrapper +weatherin.org##.banner-desktop-full-width +originality.ai##.banner-element +mobdisc.com##.banner-gta +jpost.com##.banner-h-270 +jpost.com##.banner-h-880 +411mania.com##.banner-homebottom-all +security.org##.banner-img-container +wireshark.org##.banner-img-downloads +balkangreenenergynews.com##.banner-l +elamigosgamez.com##.banner-lateral +amoledo.com##.banner-link +weatherin.org##.banner-mobile +bsc.news,web3wire.news##.banner-one +timesofisrael.com##.banner-placeholder +tweakreviews.com##.banner-placement__article +balkangreenenergynews.com##.banner-premium +bikepacking.com##.banner-sidebar +livescores.biz##.banner-slot +livescores.biz##.banner-slot-filled +justjared.com##.banner-spacer-top {max-height: 50px !important;} +vedantu.com##.banner-text +israelnationalnews.com,metricool.com,pwinsider.com,spaceref.com,spaceweatherlive.com,usahealthcareguide.com##.banner-top +wpneon.com##.banner-week +news.net##.banner-wr +admonsters.com##.banner-wrap +aki-h.com,archiproducts.com,benzinga.com,dbdiagram.io,primewire.link,slashdot.org##.banner-wrapper +depositfiles.com##.banner1 +gsprating.com##.banner2 +brutal.io##.bannerBox +audioxpress.com##.bannerContainer +arras.io##.bannerHolder +alternativeto.net##.bannerLink +energyvanguard.com##.bannerListWidget +securenetsystems.net##.bannerPrerollArea +mumbrella.com.au##.bannerSide +ivote.co.za##.bannerSm +republicworld.com##.bannerWidth +thejc.com##.banner__ +thejc.com##.banner__article +financemagnates.com##.banner__outer-wrapper +tass.com##.banner__wrapper +asmag.com##.banner_ab +hannity.com,inspiredot.net##.banner_ad +snopes.com##.banner_ad_between_sections +asmag.com##.banner_box +news.am##.banner_click +dosgamesarchive.com##.banner_container +barnstormers.com##.banner_holder +vgtimes.com##.banner_in_news +camfuze.com##.banner_inner +livecharts.co.uk##.banner_long +barnstormers.com##.banner_mid +weatheronline.co.uk##.banner_oben +barnstormers.com##.banner_rh +hwcooling.net,nationaljeweler.com,radioyacht.com##.banner_wrapper +wdwmagic.com##.bannerad_300px +mamul.am##.bannerb +gamertweak.com##.bannerdiv +flatpanelshd.com##.bannerdiv_twopage +arcadebomb.com##.bannerext +2merkato.com,aps.dz,armyrecognition.com,cbn.co.za,dailynews.co.tz,digitalmediaworld.tv,eprop.co.za,etn.se,finchannel.com,forums.limesurvey.org,i-programmer.info,killerdirectory.com,rapidtvnews.com,soundstageultra.com,southfloridagaynews.com,thepatriot.co.bw,usedcarnews.com##.bannergroup +saigoneer.com##.bannergroup-main +convertingcolors.com##.bannerhead_desktop +asianmirror.lk,catholicregister.org,crown.co.za,etn.se,marengo-uniontimes.com,nikktech.com##.banneritem +mir.az##.bannerreklam +domainnamewire.com,i24news.tv,marinetechnologynews.com,maritimepropulsion.com,mumbrella.com.au,petapixel.com,radiopaedia.org,rapidtvnews.com,telesurtv.net,travelpulse.com##.banners +theportugalnews.com##.banners-250 +rt.com##.banners__border +unixmen.com##.banners_home +m.economictimes.com##.bannerwrapper +barrons.com##.barrons-body-ad-placement +psprices.com##.base-banners +teamfortress.tv##.bau +doge-faucet.com##.bbb +imagetostl.com##.bc +britannica.com##.bc-article-inline-dialogue +barchart.com##.bc-webinar-card +bleepingcomputer.com##.bc_guide +dissentmagazine.org##.bc_random_banner +digminecraft.com##.bccace1b +fakenamegenerator.com##.bcsw +boldsky.com##.bd-header-ad +userbenchmark.com##.be-lb-page-top-banner +chowhound.com,glam.com,mashed.com,moneydigest.com,outdoorguide.com,slashgear.com,svg.com,thelist.com,wrestlinginc.com##.before-ad +haitiantimes.com,renonr.com,wyofile.com##.below-header-widgets +bitcoinworld.co.in##.below-menu-banner +theinertia.com##.below-post-ad +cnbctv18.com##.below-summary-ad +lonestarlive.com##.below-toprail +gobankingrates.com##.bestbanks-slidein +stuff.co.nz##.between-ad-slot +scribd.com##.between_page_portal_root +nationalworld.com##.bfQGof +mindbodygreen.com##.bftiFX +theepochtimes.com##.bg-\[\#f8f8f8\] +hotnewhiphop.com##.bg-ad-bg-color +hotnewhiphop.com##.bg-ad-text +english.mathrubhumi.com##.bg-adBackground +batimes.com.ar##.bg-ads-space +bgr.com##.bg-black +whatismyisp.com##.bg-blue-50 +officialcharts.com##.bg-design-hoverGreige +lgbtqnation.com##.bg-gray-100 +amgreatness.com##.bg-gray-200.mx-auto +kongregate.com##.bg-gray-800.mx-4.p-1 +wccftech.com##.bg-horizontal +imagetotext.info##.bg-light.mt-2.text-center +charlieintel.com,dexerto.com##.bg-neutral-grey-4.items-center +mapquest.com##.bg-primary-12 +wccftech.com##.bg-square +wccftech.com##.bg-square-mobile +wccftech.com##.bg-square-mobile-without-bg +ewn.co.za##.bg-surface-03.text-content-secondary.space-y-\[0\.1875rem\].p-spacing-s.flex.flex-col.w-max.mx-auto +wccftech.com##.bg-vertical +time.com##.bg-warm-grey-ads +overclock3d.net##.bglink +bhamnow.com##.bhamn-adlabel +bhamnow.com##.bhamn-story +investmentweek.co.uk##.bhide-768 +blackhatworld.com##.bhw-advertise-link +blackhatworld.com##.bhw-banners +apkaward.com##.bidgear728 +ipolitics.ca,qpbriefing.com##.big-box +cbc.ca##.bigBoxContainer +newzit.com##.big_WcxYT +gamemodding.com##.big_banner +hellenicshippingnews.com##.bigbanner +advocate.com##.bigbox_top_ad-wrap +snokido.com##.bigsquare +9gag.com,aerotime.aero,autotrader.ca,blackpoolgazette.co.uk,bundesliga.com,dev.to,farminglife.com,hotstar.com,ipolitics.ca,lep.co.uk,northamptonchron.co.uk,qpbriefing.com,scotsman.com,shieldsgazette.com,talksport.com,the-sun.com,thescottishsun.co.uk,thestar.co.uk,thesun.co.uk,thesun.ie##.billboard +dailymail.com##.billboard-container +thethaiger.com##.billboard-container-fw +nypost.com,pagesix.com##.billboard-overlay +weatherpro.com##.billboard-wrapper +autoguide.com,motorcycle.com,thetruthaboutcars.com,upgradedhome.com##.billboardSize +techspot.com##.billboard_placeholder_min +netweather.tv##.billheight +theyeshivaworld.com##.bitbean-ad-container-1234 +cybernews.com##.bitdefender-campaign +azscore.com##.bkw +bundesliga.com##.bl-broadcaster +softonic.com##.black-friday-ads +ehftv.com##.blackPlayer +nowsci.com##.black_overlay +tvmaze.com##.blad +allkeyshop.com##.blc-left +allkeyshop.com##.blc-right +kottke.org##.bling-title +wearedore.com##.bloc-pub +rpgsite.net##.block +soundonsound.com##.block---managed +infoplease.com##.block--ip-radix-pwmedrect +analyticsinsight.net##.block-10 +club386.com##.block-25 +club386.com##.block-30 +club386.com##.block-39 +megagames.com##.block-4 +club386.com##.block-41 +crash.net,visordown.com##.block-ad-manager +autocar.co.uk##.block-autocar-ads-lazyloaded-mpu2 +autocar.co.uk##.block-autocar-ads-mpu-flexible1 +autocar.co.uk##.block-autocar-ads-mpu-flexible2 +autocar.co.uk##.block-autocar-ads-mpu1 +thescore1260.com##.block-content > a[href*="sweetdealscumulus.com"] +indysmix.com,wzpl.com##.block-content > a[href^="https://sweetjack.com/local"] +natlawreview.com##.block-content-ad_block +commonwealmagazine.org##.block-custom-ad +citymagazine.si,webbikeworld.com##.block-da +whosdatedwho.com##.block-global-adDFP_HomeFooter +mondoweiss.net##.block-head-c +imginn.com##.block-sulvo +kaotic.com##.block-toplist +theonion.com##.block-visibility-hide-medium-screen +9to5linux.com,maxblizz.com,twistedvoxel.com##.block-widget +worldtimebuddy.com##.block2 +macmusic.org##.block440Adv +betaseries.com##.blockPartner +soccerway.com##.block_ad +informer.com##.block_ad1 +myrealgames.com##.block_adv_mix_top2 +simkl.com##.blockplacecente +wowhead.com##.blocks +mail.com##.blocks-3 +blackview.hk##.blog-ad-banner +failory.com##.blog-column-ad +blog.hubspot.com##.blog-cta-with-form +oxygen.com,syfy.com##.blog-post-section__zergnet +blogto.com##.blogto-sticky-banner +waterworld.com##.blueconic-recommendations +utterlyinteresting.com##.bm-Gu +bmwblog.com##.bmwbl-after-content +azscore.com,bescore.com##.bn +firstpost.com##.bn-add +savefree.in,surattimes.com##.bn-content +nilechronicles.com##.bn-lg-sidebar +snow-forecast.com,weather-forecast.com##.bn-placeholder +flaticon.com##.bn-space-gads +roll20.net##.bna +bnonews.com##.bnone-widget +evertiq.com,mediamanager.co.za##.bnr +thecompleteuniversityguide.co.uk##.bnr_out +armenpress.am##.bnrcontainer +apkmody.mobi##.body-fixed-footer +saharareporters.com##.body-inject +boingboing.net##.boing-amp-triple13-amp-1 +boingboing.net##.boing-homepage-after-first-article-in-list +boingboing.net##.boing-leaderboard-below-menu +boingboing.net##.boing-primis-video-in-article-content +myanimelist.net##.bookstores-recommend-plugin +tomsguide.com##.bordeaux-anchored-container +tomsguide.com##.bordeaux-slot +everydayrussianlanguage.com##.border +bluelockread.com,dbsmanga.com,demonslayermanga.com,read7deadlysins.com,readblackclover.com,readbleachmanga.com,readchainsawman.com,readdrstone.com,readfairytail.com,readhaikyuu.com,readhxh.com,readichithewitch.com,readjojos.com,readjujutsukaisen.com,readkagurabachimanga.com,readkaguyasama.com,readkingdom.com,readmha.com,readnaruto.com,readneverland.com,readonepiece.com,readsakadays.com,readsnk.com,readsololeveling.org,readtokyorevengers.net,readvinlandsaga.com,tokyoghoulre.com##.border-b-0.border-border-primary.overflow-hidden +analyticsindiamag.com##.border-b.bg-muted\/50 +washingtonpost.com##.border-box.dn-hp-sm-to-mx +washingtonpost.com##.border-box.dn-hp-xs +thedailymash.co.uk##.border-brand +yaledailynews.com##.border-gray-200 +standardmedia.co.ke##.border-thick-branding +myanimelist.net##.border_top +appleinsider.com##.bottom +capwages.com,downforeveryoneorjustme.com,health.clevelandclinic.org,technomusicworld.com##.bottom-0.fixed +theblock.co##.bottom-5 +vpntierlists.com##.bottom-6 +indiatimes.com##.bottom-ad-height +agar.live##.bottom-banner +reverso.net##.bottom-horizontal +photographyreview.com##.bottom-leaderboard +dappradar.com##.bottom-networks +codeproject.com##.bottom-promo +huffpost.com##.bottom-right-sticky-container +crn.com##.bottom-section +gamingdeputy.com##.bottom-sticky-offset +coincodex.com##.bottom9 +cpstest.org##.bottomAdsection +hindustantimes.com##.bottomFixAd +openguessr.com##.bottomFooterAds +auto.hindustantimes.com##.bottomSticky +softicons.com##.bottom_125_block +softicons.com##.bottom_600_250_block +imgtaxi.com##.bottom_abs +collive.com##.bottom_leaderboard +allmonitors24.com,streamable.com##.bottombanner +arcadebomb.com##.bottombox +timesofindia.com##.bottomnative +biz.chosun.com##.box--margin-bottom-xl.box--pad-top-xl.box--pad-bottom-xl.box--bg-grey-10 +local10.com##.box--top-wide +fileditchfiles.me##.box-a9x +webcamcollections.com##.box-ad-wrapper +dictionary.com,thesaurus.com##.box-additional-carambola +filmbooster.com,ghacks.net##.box-banner +mybroadband.co.za##.box-sponsored +kiz10.com##.box-topads-x2 +fctables.com##.box-width > .hidden-xs +cubdomain.com##.box.mb-2.mh-300px.text-center +brushexpert.com##.boxAdvert +tribunnews.com##.box__reserved +flipline.com##.box_grey +flipline.com##.box_grey_bl +flipline.com##.box_grey_br +flipline.com##.box_grey_tl +flipline.com##.box_grey_tr +functions-online.com##.box_wide +kiz10.com##.boxadsmedium +rediff.com##.boxadvtcontainer +bolavip.com,worldsoccertalk.com##.boxbanner_container +kodinerds.net##.boxesSidebarRight +retailgazette.co.uk##.boxzilla-overlay +retailgazette.co.uk##.boxzilla-popup-advert +wbur.org##.bp--native +wbur.org##.bp--outer +wbur.org##.bp--rec +wbur.org##.bp-label +everythingrf.com##.bpFabWrapper +businessplus.ie##.bp_billboard_single +younghollywood.com##.bplace +windowscentral.com##.brdx-unit +eightieskids.com,inherentlyfunny.com##.break +breakingbelizenews.com##.break-target +breakingbelizenews.com##.break-widget +broadsheet.com.au##.breakout-section-inverse +brobible.com##.bro_caffeine_wrap +brobible.com##.bro_vidazoo_wrap +yaledailynews.com##.broadstreet-zone +sainsburys.co.uk##.browse-citrus-above-grid +vaughn.live##.browsePageAbvs300x600 +femalefirst.co.uk##.browsi_home +techpp.com##.brxe-shortcode +christianpost.com##.bs-article-cell +sslshopper.com##.bsaStickyLeaderboard +htmldog.com##.bsa_it_ad +arydigital.tv,barakbulletin.com##.bsac +doge-faucet.com##.bspot +businesstoday.in##.btPlyer +apkaward.com##.btcccc +indiatimes.com##.btf_ads +cricwaves.com##.btm728 +snaptik.app##.btn-download-hd[data-ad="true"] +files.im##.btn-success +sbenny.com##.btnDownload5 +vipleague.im##.btn[data-openuri*="/4/"][data-open="_blank"] +pollunit.com##.btn[href$="?feature=ads"] +youloveit.com##.btop +lifestyleasia.com##.btt-top-add-section +livemint.com##.budgetBox +business-standard.com##.budgetWrapper +bulinews.com##.bulinews-ad +businessmirror.com.ph##.busin-after-content +businessmirror.com.ph##.busin-before-content +business2community.com##.busin-coinzilla-after-content +business2community.com##.busin-news-placement-2nd-paragraph +filecrypt.cc##.butt1ns button[onclick*="loc.href='/Link/"] +w3docs.com##.buttom-ads +thisismoney.co.uk##.button-style > [href] +abbaspc.net##.buttonPress-116 +overclock.net##.buy-now +justwatch.com##.buybox-promotion-row +bobvila.com##.bv-unit-wrapper +wgnsradio.com##.bw-special-image +wgnsradio.com##.bw-special-image-wrapper +scalemates.com##.bwx.hrspb +forbes.com.au##.bz-viewability-container +insurancejournal.com##.bzn +dagens.com##.c-1 > .i-2 +euronews.com,globalnews.ca,stuff.tv##.c-ad +theglobeandmail.com##.c-ad--base +stuff.tv##.c-ad--mpu-bottom +stuff.tv##.c-ad--mpu-top +theglobeandmail.com##.c-ad-sticky +globalnews.ca##.c-adChoices +zdnet.com##.c-adDisplay_container_incontent-all-top +briefly.co.za,legit.ng,tuko.co.ke##.c-adv +legit.ng##.c-adv--video-placeholder +euroweeklynews.com##.c-advert__sticky +cnet.com##.c-asurionBottomBanner +cnet.com##.c-asurionInteractiveBanner +cnet.com##.c-asurionInteractiveBanner_wrapper +newstalkzb.co.nz##.c-background +elnacional.cat##.c-banner +truck1.eu##.c-banners +bo3.gg##.c-benner1-custom +bo3.gg##.c-benner1-partner-branding +bo3.gg##.c-benner1-partner-top-manager +euronews.com##.c-card-sponsor +euroweeklynews.com##.c-inblog_ad +thehustle.co##.c-layout--trends +download.cnet.com##.c-pageFrontDoor_adWrapper +download.cnet.com##.c-pageProductDetail-sidebarAd +download.cnet.com##.c-pageProductDetail_productAlternativeAd +cnet.com##.c-pageReviewContent_ad +smashingmagazine.com##.c-promo-box +mmafighting.com##.c-promo-breaker +smashingmagazine.com##.c-promotion-box +webtoon.xyz##.c-sidebar +football-tribe.com##.c-single_post_inline_ad_box +umassathletics.com##.c-sticky-leaderboard +globalnews.ca##.c-stickyRail +backpacker.com,cleaneatingmag.com,climbing.com,outsideonline.com,oxygenmag.com,skimag.com,trailrunnermag.com,triathlete.com,vegetariantimes.com,womensrunning.com,yogajournal.com##.c-thinbanner +mangarockteam.com##.c-top-second-sidebar +freecomiconline.me,mangahentai.me,manytoon.com,readfreecomics.com##.c-top-sidebar +tvguide.com##.c-tvListingsSchedule_adRow +tvguide.com##.c-tvListingsSchedule_video +softarchive.is##.c-un-link +stuff.tv##.c-video-ad__container +convertingcolors.com##.c30 +canada411.ca##.c411TopBanner +techonthenet.com##.c79ee2c9 +sussexexpress.co.uk##.cIffkq +filepuma.com##.cRight_footer +fmforums.com##.cWidgetContainer +money.com##.ca-pcu-inline +thecable.ng##.cableads_mid +encycarpedia.com##.cac +cafonline.com##.caf-o-sponsors-nav +merriam-webster.com##.cafemedia-ad-slot-top +clutchpoints.com##.cafemedia-clutchpoints-header +challonge.com##.cake-unit +apkcombo.com##.calc-container +calculat.io##.calc67-container +calcalistech.com##.calcalist_banner +skylinewebcams.com##.cam-vert +thedalesreport.com##.cap-container +dllme.com##.captchabox > div +edmunds.com##.car-news-marquee +coolors.co##.carbon-cad +icons8.com##.carbon-card-ad__loader +speakerdeck.com##.carbon-container +buzzfeed.com##.card--article-ad +u.today##.card--something-md +thecrimson.com##.card-container +nrl.com##.card-content__sponsor +thepointsguy.com##.cardWidget +realestatemagazine.ca##.caroufredsel_wrapper +devdiscourse.com##.carousel +eetimes.com##.carousel-ad-wrapper +faroutmagazine.co.uk,hitc.com##.carpet-border +numista.com##.catawiki_list +chemistwarehouse.com.au##.category-product-mrec +afro.com,ghacks.net,hyperallergic.com##.category-sponsored +renonr.com##.category-sponsored-content +audio-database.com##.category_ad_01 +audio-database.com##.category_ad_02 +audio-database.com##.category_ad_03 +kathimerini.com.cy##.catfish_ad +notebooks.com##.cb-block +thegoodchoice.ca,wandering-bird.com##.cb-box +guru99.com##.cb-box__wrapper-center_modal +carbuzz.com##.cb-video-ad-block +supercheats.com##.cboth_sm +cricbuzz.com##.cbz-leaderboard-banner +waptrick.one##.cent_list +digit.in##.center-add +seeklogo.com##.centerAdsWp +siberiantimes.com##.centerBannerRight +giveawayoftheday.com##.center_ab +mirrored.to##.centered > form[target^="_blank"] +whattomine.com##.centered-image-short +laprensalatina.com##.centered-leaderboard +spiceworks.com##.centerthe1 +ceo.ca##.ceoBanner +digminecraft.com##.cf47a252 +contactform7.com##.cf7com-bsa-zone +top.gg##.chakra-stack.css-15xujv4 +tlgrm.eu##.channel-card--promoted +thetimes.com##.channel-header-ad +crn.com##.chartbeat-wrapper +chaser.com.au##.chaser-banner-ad +cheknews.ca##.chek-advertisement-placeholder +sevenforums.com,tenforums.com##.chill +cdmediaworld.com,gametarget.net,lnkworld.com##.chk +cheezburger.com##.chz-ad-container +cheezburger.com##.chz-ad-wrap +hannaford.com##.citrus_ad_banner +apps.jeurissen.co##.cja-landing__content > .cja-sqrimage +hodinky-365.com##.cl-ban +gunsamerica.com##.cl_ga +kissanime.com.ru##.close_ad_button +computerweekly.com,techtarget.com,theserverside.com##.cls-hlb-wrapper-desktop +lcpdfr.com##.clsReductionBlockHeight +lcpdfr.com##.clsReductionLeaderboardHeight +mayoclinic.org##.cmp-advertisement__wrapper +classcentral.com##.cmpt-ad +boldsky.com,gizbot.com,nativeplanet.com##.cmscontent-article1 +boldsky.com,gizbot.com,nativeplanet.com##.cmscontent-article2 +boldsky.com,drivespark.com,filmibeat.com,gizbot.com,goodreturns.in,nativeplanet.com,oneindia.com##.cmscontent-left-article +boldsky.com,drivespark.com,filmibeat.com,gizbot.com,goodreturns.in,nativeplanet.com,oneindia.com##.cmscontent-right1 +careerindia.com##.cmscontent-top +cricketnmore.com##.cmtopad +thisismoney.co.uk##.cnr5 +letras.com##.cnt-space-top +map.riftkit.net##.coachify_wrapper +coconutgrovespotlight.com##.cocon-widget +100percentfedup.com,academicful.com,addapinch.com,aiarticlespinner.co,allaboutfpl.com,alltechnerd.com,americanmilitarynews.com,americansongwriter.com,androidsage.com,animatedtimes.com,anoopcnair.com,askpython.com,australiangeographic.com.au,autodaily.com.au,bakeitwithlove.com,bioinformant.com,bohemian.com,borncity.com,boxingnews24.com,browserhow.com,celtsarehere.com,chillinghistory.com,chromeunboxed.com,circuitbasics.com,cjr.org,coincodecap.com,conservativebrief.com,conservativefiringline.com,corrosionhour.com,cricfy.net,crimereads.com,cryptobriefing.com,cryptointelligence.co.uk,cryptopotato.com,cryptoreporter.info,cryptoslate.com,cryptotimes.io,dafontfree.io,dailynewshungary.com,digitalreg.net,dorohedoro.online,dramacool.com.my,ecoportal.net,ecoticias.com,emobilityplus.com,engineering-designer.com,epicdope.com,eurweb.com,fandomwire.com,firstcuriosity.com,firstsportz.com,flashbak.com,flickeringmyth.com,flowmountainbike.com,flyingmag.com,freemagazines.top,gadgetinsiders.com,gamebyte.com,gameinfinitus.com,gamertweak.com,gamingdeputy.com,gatewayhispanic.com,gatewaynews.co.za,geekdashboard.com,geekzag.com,glassalmanac.com,goodyfeed.com,greekreporter.com,hard-drive.net,harrowonline.org,haxmac.cc,healthinfo.healthengine.com.au,helihub.com,hollywoodinsider.com,hollywoodunlocked.com,hotcelebshome.com,ifoodreal.com,indianhealthyrecipes.com,inspiredtaste.net,iotwreport.com,jardineriaon.com,jessicagavin.com,jojolandsmanga.com,journeybytes.com,journeyjunket.com,libertyunlocked.com,linuxfordevices.com,lithub.com,londonlovesbusiness.com,mangaread.org,mb.com.ph,meaningfulspaces.com,medicotopics.com,medievalists.net,mpost.io,mycariboonow.com,mymodernmet.com,mymotherlode.com,nationalfile.com,nexdrive.lol,nexusgames.to,nintendoeverything.com,noahreport.com,notalwaysright.com,nxbrew.com,organicfacts.net,orlandoweekly.com,patriotfetch.com,pcoptimizedsettings.com,politizoom.com,premiumtimesng.com,protrumpnews.com,pureinfotech.com,redrightvideos.com,reneweconomy.com.au,reptilesmagazine.com,rightwingnews.com,roadaheadonline.co.za,rok.guide,romsworlds.com,saabplanet.com,sacurrent.com,sciencenotes.org,simscommunity.info,slaynews.com,small-screen.co.uk,snipercentral.com,snowbrains.com,statisticsbyjim.com,storypick.com,streamingbetter.com,suggest.com,superwatchman.com,talkandroid.com,talkers.com,tech-latest.com,techaeris.com,techpp.com,techrounder.com,techviral.net,the-gadgeteer.com,thebeaverton.com,theblueoceansgroup.com,thecinemaholic.com,thecricketlounge.com,thedailysight.com,thedriven.io,thegamehaus.com,thegatewaypundit.com,thegeekpage.com,thelibertydaily.com,thenipslip.com,theoilrig.ca,thepeoplesvoice.tv,theprint.in,thewincentral.com,thisquality.com,trendingpoliticsnews.com,troypoint.com,tvtonight.com.au,twistedvoxel.com,vice.com,walletinvestor.com,washingtonblade.com,waves4you.com,wbiw.com,welovetrump.com,wepc.com,whynow.co.uk,win.gg,windowslatest.com,wisden.com,wltreport.com,wnd.com,wrestlingheadlines.com,wrestlingnews.co,wtmj.com,zerohanger.com,ziperto.com##.code-block +storytohear.com,thefamilybreeze.com,thetravelbreeze.com,theworldreads.com,womensmethod.com##.code-block > center p +cookingwithdog.com##.code-block-1 +powerpyx.com##.code-block-14 +patriotnewsfeed.com##.code-block-4 +wltreport.com##.code-block-label +coinmarketcap.com##.coin-ad-banner +holyrood.com##.col--ad +mydramalist.com##.col-lg-4 > .clear +roseindia.net##.col-md-4 +disqus.com##.col-promoted +lapa.ninja##.col-sm-1 +tineye.com##.collection.match-row +iamgujarat.com,indiatimes.com,samayam.com,vijaykarnataka.com##.colombia +i24news.tv##.column-ads +atalayar.com##.column-content > .megabanner +rateyourmusic.com##.column_filler +2pass.co.uk##.column_right +arcadebomb.com##.colunit1 +weather.com##.combinedTopAdsSectionWrapper +bollywoodlife.com##.combinedslots +googlesightseeing.com##.comm-square +slickdeals.net##.commentsAd +businessinsider.com##.commerce-coupons-module +goal.com##.commercial +dailystar.co.uk##.commercial-box-style +themirror.com##.commercial-label-style +telegraph.co.uk##.commercial-unit +iplogger.org##.commercial-wide +miaminewtimes.com,westword.com##.comp-shell-stnplayer +hiphopdx.com##.compact +bitdegree.org##.comparison-suggestion +audacy.com##.component--google-ad-manager +goal.com##.component-ad +hunker.com##.component-article-section-jwplayer-wrapper +techwalla.com##.component-article-section-votd +coasttocoastam.com##.component-header-ad +techwalla.com##.component-header-sticky-ad +goal.com##.component-open-web-ad-with-lngtd-fallback +binnews.com,iheart.com,jessekellyshow.com,steveharveyfm.com##.component-pushdown +binnews.com,iheart.com,jessekellyshow.com,steveharveyfm.com##.component-recommendation +kqed.org##.components-AdLive-__AdLive__ad +kqed.org##.components-Ads-AdUnit-__AdUnit__adContent +theverge.com##.connatix-feature-desktop +dailymail.co.uk,thisismoney.co.uk##.connatix-wrapper +realsport101.com##.connatixPS +dpreview.com##.connatixWrapper +rateyourmusic.com##.connatix_video +washingtontimes.com##.connatixcontainer +pcgamesn.com##.constellation_promoted_iframe +beincrypto.com##.cont-wrapper +whatismyip.net##.container > .panel[id] +flaticon.com##.container > section[data-term].soul-a.soul-p-nsba +marketwatch.com##.container--sponsored +snazzymaps.com##.container-gas +font-generator.com##.container-home-int > .text-center +thejournal-news.net##.container.lightblue +jokersupdates.com##.container_contentrightspan +rawstory.com##.container_proper-ad-unit +worldscreen.com##.contains-sticky-video +pastebin.com##.content > [style^="padding-bottom:"] +amateurphotographer.com,sherwood.news##.content-ad +receive-sms.cc##.content-adsense +floridasportsman.com##.content-banner-section +crmbuyer.com,ectnews.com,technewsworld.com##.content-block-slinks +usmagazine.com##.content-card-footer +bloomberg.com##.content-cliff__ad +bloomberg.com##.content-cliff__ad-container +journeyjunket.com##.content-container-after-post +computerweekly.com##.content-continues +cookist.com##.content-leaderboard +pwinsider.com##.content-left +pwinsider.com##.content-right +flv2mp3.by##.content-right-bar +crmbuyer.com,ectnews.com,technewsworld.com##.content-tab-slinks +countryroadsmagazine.com##.content-teaser-ad +searchenginejournal.com##.content-unit +highsnobiety.com##.contentAdWrap +newmexicomagazine.org##.contentRender_name_plugins_dtn_gam_ad +ancient-origins.net##.content_add_block +wikiwand.com##.content_headerAd__USjzd +nationalmemo.com##.content_nm_placeholder +insta-stories-viewer.com##.context +usedcarnews.com##.continut +metar-taf.com##.controls-right +savvytime.com##.converter-ad +traderie.com##.cool-slot +live-tennis.eu##.copyright +imdb.com##.cornerstone_slot +physicsworld.com##.corporate-partners +corrosionhour.com##.corro-widget +aha-music.com##.countdown-ad-wrap +pcworld.com##.coupons +creativecow.net##.cowtracks-interstitial +creativecow.net##.cowtracks-sidebar-with-cache-busting +creativecow.net##.cowtracks-target +runtothefinish.com##.cp-popup-container +coinpaprika.com##.cp-table__row--ad-row +christiantoday.com##.cp-widget-container +christiantoday.com##.cpdeals-square +nextpit.com##.cpgSlot +cpomagazine.com##.cpoma-adlabel +cpomagazine.com##.cpoma-main-header +cpomagazine.com##.cpoma-target +chronline.com##.cq-creative +alibaba.com##.creative-dot-wrapper +theweather.net##.creatividad +mma-core.com##.crec +currys.co.uk##.cretio-sponsored-product +meijer.com##.criteo-banner +davidjones.com##.criteo-carousel-wrapper +currys.co.uk##.criteoproducts-container +irishtimes.com##.cs-teaser +staradvertiser.com##.csMon +cyprusshippingnews.com##.csn-target +c-span.org##.cspan-ad-still-prebid-wrapper +c-span.org##.cspan-ad-still-wrapper +healthline.com##.css-12efcmn +nytimes.com##.css-142l3g4 +pgatour.com##.css-18v0in8 +mui.com##.css-19m7kbw +gulfcoastnewsnow.com,ketv.com,wisn.com,wjcl.com##.css-1cm6ir6:has(.ad-container) +woot.com##.css-1e4mcj +crazygames.com##.css-1h6nq0a +startpage.com,startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion##.css-1j5r2ie +pgatour.com##.css-1t41kwh +gulfcoastnewsnow.com,kcra.com,ketv.com,kmbc.com,koat.com,koco.com,ksbw.com,mynbc5.com,wapt.com,wbaltv.com,wdsu.com,wisn.com,wjcl.com,wlwt.com,wmtw.com,wtae.com,wvtm13.com##.css-1tumxm:has(.ad-container) +infowars.com##.css-1upmbem +infowars.com##.css-1vj1npn +cruisecritic.com##.css-1xzyepp +gamingbible.com##.css-1z9hhh +delish.com##.css-3oqygl +nytimes.com##.css-bs95eu +nytimes.com##.css-oeful5 +greatist.com,healthline.com,medicalnewstoday.com,psychcentral.com##.css-pp6cpn +gumtree.com.au##.css-vdy5ot-Box +nytimes.com##.css-wmyc1 +op.gg##.css-zpq3c5 +thestreet.com##.csw-ae-wide +christianitytoday.com##.ct-ad-slot +dronexl.co##.ct-header-content-block +comparitech.com##.ct089 +unmineablesbest.com##.ct_ipd728x90 +comparitech.com##.ct_popup_modal +amateurphotographer.com,cryptoslate.com,techspot.com##.cta +dailydot.com##.cta-article-wrapper +w3docs.com##.cta-bookduck +simracingsetup.com##.cta-box +thelines.com##.cta-content +finbold.com##.cta-etoro +poweroutage.us##.cta-inline +thelines.com##.cta-row +thestateofbrand.com##.cta-trail_component +timesofindia.indiatimes.com##.ctn-workaround-div +deepai.org##.ctx-ad-container +deepai.org##.ctx-content-container +u.today##.ctyptopcompare__widget +genius.com##.cujBpY +cults3d.com##.cultszone +cults3d.com##.cultszone__placeholder +pcgamesn.com##.curated-spotlight +speedrun.com##.curse +pokebattler.com##.curse-ad +indiabusinessjournal.com##.cus-ad-img +dexscreener.com##.custom-1hol5du +dexscreener.com##.custom-1ii6w9 +dexscreener.com##.custom-1l0hqwu +dexscreener.com##.custom-97cj9d +slidehunter.com##.custom-ad-text +addictivetips.com,coinweek.com,flashbak.com,keqingmains.com,lmanime.com,news365.co.za,potatonewstoday.com,prohockeyrumors.com,simscommunity.info,tech-fairy.com##.custom-html-widget +patriotnewsfeed.com##.custom-html-widget [href] > [src] +thestudentroom.co.uk##.custom-jucdap +thehackernews.com##.custom-link +mytelly.co.uk,ontvtonight.com##.custom-min-height-242 +breakingnews.ie##.custom-mpu-container +ehitavada.com##.custom-popup +publichealthpolicyjournal.com##.custom-slider +dexscreener.com##.custom-torcf3 +total-croatia-news.com##.custombanner +the-sun.com,thescottishsun.co.uk,thesun.co.uk,thesun.ie##.customiser-v2-layout-1-billboard +the-sun.com,thescottishsun.co.uk,thesun.co.uk,thesun.ie##.customiser-v2-layout-three-native-ad-container +f150lightningforum.com##.customizedBox +coincarp.com##.customspon +citywire.com##.cw-top-advert +futurecurrencyforecast.com##.cwc-tor-widget +marketwatch.com##.cxense-loading +usmagazine.com##.cy-storyblock +bleepingcomputer.com##.cz-toa-wrapp +freesteam.io##.d-lg-block +calendar-canada.ca##.d-md-block +thestreamable.com##.d-md-flex +publish0x.com##.d-md-none.text-center +arbiscan.io##.d-none.text-center.pl-lg-4.pl-xll-5 +cutyt.com,onlineocr.net,publish0x.com##.d-xl-block +techonthenet.com##.d0230ed3 +artsy.net##.dDusYa +yourstory.com##.dJEWSq +fxempire.com##.dKBfBG +royalroad.com##.dKKumhSnWiFq75vPUVtmTanQ +standard.co.uk##.dXaqls +vogue.com.au##.dYmYok +timesofindia.indiatimes.com##.d_jsH.mPws3 +counter.dev,lindaikejisblog.com##.da +convars.com##.da14 +hackernoon.com##.dabytag +capitalfm.com,capitalxtra.com,classicfm.com,goldradio.com,heart.co.uk,smoothradio.com##.dac__mpu-card +smartprix.com##.dadow-box +lifewire.com##.daily-deal +dailycaller.com##.dailycaller_adhesion +4chan.org##.danbo-slot +foobar2000.org##.db_linkstyle[onclick] +wuxiaworld.site##.dcads +driverscloud.com##.dcpub +theguardian.com##.dcr-1aq0rzi +dailydriven.ro##.dd-dda +datedatego.com##.ddg +datedatego.com##.ddg0 +darkreader.org##.ddgr +gsmarena.com##.deal +womansworld.com##.deal-of-the-day__container___1LYO6 +sgcarmart##.dealer_banner +slashdot.org##.deals-wrapper +defiantamerica.com##.defia-widget +cnbctv18.com##.desk_header_banner +nettv4u.com##.desk_only +watchinamerica.com##.deskad +cardealermagazine.co.uk##.desktop +livesoccertv.com##.desktop-ad-container +medscape.com##.desktop-ad-position +cricketnmore.com##.desktop-ad-wrapper +ixbt.games##.desktop-c +vitalmtb.com##.desktop-header-ad +myinstants.com##.desktop-larger-banner-ad +datetimego.com##.desktop-only +rok.guide##.desktop-promo-banner +tiermaker.com##.desktop-sticky +healthing.ca##.desktop-sticky-ad +buzzfeed.com,buzzfeednews.com##.desktop-sticky-ad_desktopStickyAdWrapper__a_tyF +golflink.com##.desktop-top-fixed-ad +hanime.tv##.desktop.htvad +randomarchive.com##.desktop[style="text-align:center"] +yeggi.com##.desktop_content_ad +australiangolfdigest.com.au##.desktop_header +yeggi.com##.desktop_header_ad +news24online.com##.desktop_new_ads +inquirer.net##.desktop_smdc-FT-survey +cyclingstage.com,news18.com##.desktopad +news18.com##.desktopadh +coingape.com##.desktopds +news18.com##.desktopflex +ancient-origins.net##.desktops +picnob.com##.desney +audio-database.com##.detail_ad_01 +audio-database.com##.detail_ad_02 +audio-database.com##.detail_ad_03 +giphy.com##.device-desktop +floridapolitics.com##.dfad +avclub.com,infosecurity-magazine.com,jezebel.com,nationaljeweler.com,pastemagazine.com##.dfp +dailycal.org,gazette.com,thehindu.com##.dfp-ad +vox.com##.dfp-ad--connatix +ibtimes.com##.dfp-ad-lazy +gamesradar.com##.dfp-leaderboard-container +asiaone.com##.dfp-tag-wrapper +lemonde.fr##.dfp__container +dollargeneral.com##.dgsponsoredcarousel +gpone.com##.dh250-mh600 +decripto.org##.dialog-lightbox-widget +politicspa.com##.dialog-type-lightbox +financefeeds.com##.dialog-widget +oilprice.com##.dianomi_context +kiplinger.com##.dianomi_gallery_wrapper +kmplayer.com##.dim-layer +temporary-phone-number.com##.direct-chat-messages > div[style="margin:15px 0;"] +notes.io##.directMessageBanner +oneindia.com##.discounts-head +freecodecamp.org##.discourse-adplugin +audiokarma.org##.discussionListItem > center +apkcombo.com##.diseanmevrtt +airmail.news,govevents.com,protipster.com##.display +drugs.com##.display-ad +bestbuy.com##.display-ad-wrapper +quizzop.com##.display-ad_displayAdWrapper__nO4Kb +flightconnections.com##.display-box +flightconnections.com##.display-box-2 +flightconnections.com##.display-box-first-click +androidpolice.com##.display-card-main-content-wrapper +slickdeals.net##.displayAdContainer +legacy.com##.displayOverlay1 +designtaxi.com##.displayboard +theodysseyonline.com##.distroscale_p2 +theodysseyonline.com##.distroscale_side +prohockeyrumors.com##.div-gpt-ad-post +nottinghampost.com##.div-gpt-ad-vip-slot-wrapper +readcomiconline.li##.divCloseBut +jpost.com##.divConnatix +tigerdroppings.com##.divHLeaderFull +newser.com##.divNColAdRepeating +sailingmagazine.net##.divclickingdivwidget +collegedunia.com##.divide-sidebarSlot +ebaumsworld.com,greedyfinance.com##.divider +thelist.com##.divider-heading-container +karachicorner.com##.divimg +fruitnet.com##.dk-ad-250 +meteologix.com##.dkpw +meteologix.com,weather.us##.dkpw-billboard-margin +dongknows.com##.dkt-amz-deals +dongknows.com##.dkt-banner-ads +wallpaperbetter.com##.dld_ad +globalgovernancenews.com##.dlopiqu +crash.net##.dmpu +crash.net##.dmpu-container +nationalworld.com,scotsman.com##.dmpu-item +vice.com##.docked-slot-renderer +thehackernews.com##.dog_two +quora.com##.dom_annotate_ad_image_ad +quora.com##.dom_annotate_ad_promoted_answer +quora.com##.dom_annotate_ad_text_ad +domaingang.com##.domai-target +thenationonlineng.net##.dorvekp-post-bottom +radiox.co.uk,smoothradio.com##.download +zeroupload.com##.download-page a[rel="noopener"] > img +freedownloadmanager.org##.download_block +thepiratebay3.to##.download_buutoon +the-sun.com##.dpa-grid +thesun.co.uk##.dpa-slot +immoweb.be##.dpg +radiopaedia.org##.drive-banner +dropr.co##.dropr-ad-wrap +cryptonews.com##.dslot +kickasstorrents.to##.dssdffds +crash.net##.dt +digitaltrends.com,themanual.com##.dt-primis +digitaltrends.com##.dtads-location +digitaltrends.com##.dtcc-affiliate +bloomberg.com##.dvz-v0-ad +daniweb.com##.dw-inject-bsa +ubereats.com##.dw.ec +filehorse.com##.dx +dmarge.com##.dx-ad-wrapper +filehorse.com##.dx-hp-2 +filehorse.com##.dx-hp-4 +filehorse.com##.dx-pr-3 +filehorse.com##.dx-pr-4 +coinpaprika.com##.dynamic-ad +dailydot.com##.dynamic-block +ontvtonight.com##.dynamicStuffHere +dailyvoice.com##.e-freestar-video-container +dailyvoice.com##.e-nativo-container +op.gg##.e17e77tq6 +op.gg##.e17e77tq8 +barrons.com##.e1fy147d2 +nytimes.com##.e1xxpj0j1.css-4vtjtj +techonthenet.com##.e388ecbd +arabtimesonline.com,independent.co.ug,udaipurkiran.com##.e3lan +presskitaquat.com##.e3lan-top +tiresandparts.net##.e3lanat-layout-rotator +wsj.com##.e4jtj9920.css-ma9lnu +techonthenet.com##.e72e4713 +artsy.net##.ePrLqP +euractiv.com##.ea-gat-slot-wrapper +expats.cz##.eas +itwire.com,nativenewsonline.net##.eb-init +ablogtowatch.com##.ebay-placement +indiatimes.com##.ecom-widget +gfinityesports.com##.ecommerceUnit +newagebd.net##.editorialMid +editpad.org##.edsec +theepochtimes.com##.eet-ad +vecteezy.com##.eezy-sponsored-results +cryptorank.io##.egJLJA +clutchpoints.com##.ehgtMe.sc-ed3f1eaf-1 +filmibeat.com##.ele-ad +sashares.co.za##.elementor-48612 +cryptopolitan.com##.elementor-element-094410a +transportandenergy.com##.elementor-element-16336d8 +avitrader.com##.elementor-element-31aeedc +hilltimes.com##.elementor-element-5818a09 +whakatakitimes.nz##.elementor-element-97aca2d +transportandenergy.com##.elementor-popup-modal +optimyz.com,ringsidenews.com##.elementor-shortcode +canyoublockit.com##.elementor-widget-container > center > p +vedantbhoomi.com##.elementor-widget-smartmag-codes +radiotimes.com##.elementor-widget-wp-widget-section_full_width_advert +worldscreen.com##.embdad +phys.org##.embed-responsive-trendmd +thebrighterside.news##.empire-organic_article__header__desktop-prefill-container +memedroid.com##.empower-ad +autostraddle.com##.end-of-article-ads +robtex.com##.endl +endtimeheadlines.org##.endti-widget +floridianpress.com##.enhanced-text-widget +cathstan.org##.enticement-link +upfivedown.com##.entry > hr.wp-block-separator + .has-text-align-center +kupondo.com##.entry-content > .row +huffingtonpost.co.uk,huffpost.com##.entry__right-rail-width-placeholder +euronews.com##.enw-MPU +netflixjunkie.com##.es-ad-space-container +techspot.com##.es3s +marcadores247.com##.es_top_banner +esports.net##.esports-ad +alevelgeography.com,shtfplan.com,yournews.com##.et_pb_code_inner +strategicenergy.eu##.et_pb_text_inner > [href] > [src] +navajotimes.com##.etad +justetf.com##.etf-ad-row +meyka.com##.etoro-ad-scroll +evoke.ie##.evoke_billboard_single +pcgamebenchmark.com##.evolve-cta +extra.ie##.ex_billboard_single +appleinsider.com##.exclusive-wrap +mashable.com##.exco +executivegov.com##.execu-target +executivegov.com##.execu-widget +metric-conversions.org##.exists +gobankingrates.com##.exit-intent +proprivacy.com##.exit-popup.modal-background +streamingmedia.com##.expand +thejakartapost.com##.expandable-bottom-sticky +appuals.com##.expu-protipeop +thepostemail.com##.external +pixabay.com##.external-media +charlieintel.com,dexerto.com##.external\:bg-custom-ad-background +yourbittorrent.com##.extneed +navajotimes.com##.extra-hp-skyscraper +textcompare.org##.ez-sidebar-wall +vecteezy.com##.ez-sponsored-results +futuregaming.io##.ez-video-wrap +wsj.com##.ez6zued3.css-sw5cyu +wsj.com##.ez6zued6 +cgpress.org##.ezlazyloaded.header-wrapper +animecorner.me##.ezoic_sidebar_advertisement_1 +animecorner.me##.ezoic_sidebar_advertisement_2 +chorus.fm##.f-soc +formula1.com##.f1-dfp-banner-wrapper +techonthenet.com##.f16bdbce +audiophilereview.com##.f7e65-midcontent +audiophilereview.com##.f7e65-sidebar-ad-widget +globimmo.net##.fAdW +greenmatters.com##.fBAwDM +datenna.com##.fPHZZA +infoq.com##.f_spbox_top_1 +infoq.com##.f_spbox_top_2 +evite.com##.fabric-free-banner-ad__wrapper +tvtropes.org##.fad +slideshare.net##.fallback-ad-container +guessthe.game,guessthe.house,guesstheangle.wtf,guesstheaudio.com,guessthebook.app,guessthegrid.xyz,guessthelogo.wtf,guessthemovie.name,guessthephrase.xyz##.fallback-footer-ad-shell +guessthe.game,guessthe.house,guesstheangle.wtf,guesstheaudio.com,guessthebook.app,guessthegrid.xyz,guessthelogo.wtf,guessthemovie.name,guessthephrase.xyz##.fallback-side-ad +tokyvideo.com##.fan--related-videos.fan +steamgifts.com##.fanatical_container +fandom.com,gamespot.com,metacritic.com##.fandom-ad-wrapper +channelnewsasia.com##.fast-ads-wrapper +imgur.com##.fast-grid-ad +thepointsguy.com##.favorite-cards +futbin.com##.fb-ad-placement +triangletribune.com##.fba_links +newspointapp.com##.fbgooogle-wrapper +forbes.com##.fbs-ad--mobile-medianet-wrapper +forbes.com##.fbs-ad--ntv-deskchannel-wrapper +forbes.com##.fbs-ad--ntv-home-wrapper +whatismyipaddress.com##.fbx-player-wrapper +goal.com##.fco-sticky-wrapper__space-placeholder +filmdaily.co##.fd-article-sidebar-ad +filmdaily.co##.fd-article-top-banner +filmdaily.co##.fd-home-sidebar-inline-rect +foodbeast.com##.fdbst-ad-placement +citybeat.com,metrotimes.com##.fdn-gpt-inline-content +cltampa.com,orlandoweekly.com,sacurrent.com##.fdn-interstitial-slideshow-block +browardpalmbeach.com,dallasobserver.com,miaminewtimes.com,phoenixnewtimes.com,westword.com##.fdn-site-header-ad-block +citybeat.com,metrotimes.com##.fdn-teaser-row-gpt-ad +citybeat.com##.fdn-teaser-row-teaser +w3techs.com##.feat +gamesfree.com##.feat-coll +convertcase.net##.feature +weworkremotely.com##.feature--ad +costco.com##.feature-carousel-container[data-rm-format-beacon] +softarchive.is##.feature-usnt +mumbrella.com.au##.featureBanner +eagle1065.com##.featureRotator +insidehpc.com##.featured-728x90-ad +news24.com##.featured-category +cnn.com##.featured-product__card +apexcharts.com,ar12gaming.com##.featured-sponsor +eetimes.com##.featured-techpaper-box +thenationonlineng.net##.featured__advert__desktop_res +motor1.com##.featured__apb +chess-results.com##.fedAdv +tvfanatic.com##.feed_holder +forum.lowyat.net##.feedgrabbr_widget +whosdatedwho.com##.ff-adblock +gq.com.au##.ffNDsR +filecrypt.cc##.fiIItheadblockqueue4 +newser.com##.fiavur2 +crash.net##.field +webmd.com##.fifth-para-ad +filecrypt.cc##.filItheadbIockgueue3 +filecrypt.cc,filecrypt.co##.filItheadbIockqueue3 +telugupeople.com##.fineprint +bestlifeonline.com,zeenews.india.com##.first-ad +content.techgig.com##.first-arti-banner +proprofs.com##.firstadd +thestranger.com##.fish-butter +earth.com##.fit-picture +khaleejtimes.com##.fix-billboard-nf +khaleejtimes.com##.fix-mpu-nf +vice.com##.fixed-slot +liverpoolecho.co.uk##.fixed-slots +temp-mail.io##.fixed.bottom-0.\[\@media\(max-width\:1350px\)\]\:hidden +star-history.com##.fixed.right-0 +theblock.co##.fixedUnit +cgdirector.com##.fixed_ad_container_420 +2conv.com##.fixed_banner +fixya.com##.fixya_primis_container +whatismyipaddress.com##.fl-module-wipa-concerns +whatismyipaddress.com##.fl-photo +flightconnections.com##.flc-text-blocked-route +omniglot.com##.flex-container +libhunt.com##.flex.mt-5.boxed +ice.hockey##.flex_container_werbung +recipes.timesofindia.com##.flipkartbanner +jestful.net,klto9.com,shareae.com##.float-ck +fitbook-magazine.com,myhomebook-magazine.com,petbook-magazine.com,techbook-magazine.com,travelbook-magazine.com##.float-lg-end +idropnews.com##.floatfixAd +bdnews24.com##.floating-ad-bottom +chaseyoursport.com##.floating-adv +click2houston.com,clickondetroit.com,clickorlando.com,ksat.com,local10.com,news4jax.com,wsls.com##.floatingWrapper +thehindu.com##.flooting-ad +airlinegeeks.com,avweb.com,flyingmag.com,planeandpilotmag.com##.flyin-article-above-headline +flyingmag.com##.flyin-before-content +flyingmag.com##.flyin-target +golinuxcloud.com##.flying-carpet +momjunction.com,stylecraze.com##.flying-carpet-wrapper +emergencyemail.org,out.com##.footer +allthatsinteresting.com,scientificamerican.com##.footer-banner +wst.tv##.footer-logos +game8.co##.footer-overlay +dhakatribune.com##.footer-pop-up-ads-sec +supercars.com##.footer-promo +coinpedia.org##.footer-side-sticky +wtatennis.com##.footer-sponsors +tbsnews.net##.footer-sticky +searchcommander.com##.footer-widget +gelbooru.com##.footerAd2 +businessnow.mt,igamingcapital.mt,maltaceos.mt,whoswho.mt##.footer__second +pbs.org##.footer__sub +satbeams.com##.footer_banner +techopedia.com##.footer_inner_ads +realmadrid.com##.footer_rm_sponsors_container +tiresandparts.net##.footer_top_banner +vax-before-travel.com##.footerboard +ocado.com##.fops-item--advert +morrisons.com##.fops-item--externalPlaceholder +morrisons.com##.fops-item--featured +nintendolife.com,purexbox.com,pushsquare.com##.for-desktop +purexbox.com,pushsquare.com##.for-mobile.below-article +uploadvr.com##.force-load-ad +flatpanelshd.com##.forsideboks2 +windowsreport.com##.fortect-banner +letsrun.com##.forum-page-right-bar +permies.com##.forum-top-banner +ford-trucks.com##.forum_sponsor_info +newsroom.co.nz##.foundingpartners +freepresskashmir.news##.fpkdonate +thefpsreview.com##.fps-supporter +the-express.com##.fr-container +mathgames.com##.frame-container +ranobes.top##.free-support-top +justwatch.com##.free-trial__container +looperman.com##.freestar +esports.gg##.freestar-esports_between_articles +esports.gg##.freestar-esports_leaderboard_atf +upworthy.com##.freestar-in-content +moviemistakes.com##.freestarad +flagpedia.net##.frklm +sciencenews.org##.from-nature-index__wrapper___2E2Z9 +19thnews.org##.front-page-ad-takeover +cryptocompare.com##.front-page-info-wrapper +slickdeals.net##.frontpageGrid__bannerAd +alphr.com##.fs-pushdown-sticky +newser.com##.fs-sticky-footer +bossip.com##.fsb-desktop +bossip.com##.fsb-toggle +ghacks.net##.ftd-item +speedof.me##.ftl-zone +familytreenow.com##.ftn_detail_mid_one +familytreenow.com##.ftn_detail_mid_two +newser.com##.fu4elsh1yd +sneakernews.com##.full-width-ad-blk +livability.com##.full-width-off-white +theblock.co##.fullWidthDisplay +webdunia.com##.full_ads_block +greatandhra.com##.full_width_home.border-topbottom +zoonek.com##.fullwidth-ads +whatismybrowser.com##.fun-info-footer +whatismybrowser.com##.fun-inner +artscanvas.org##.funders +ferrarichat.com##.funzone +snowbrains.com##.fuse-slot-dynamic +psypost.org##.fuse-slot-mini-scroller +stylecraze.com##.fx-flying-carpet +fxstreet.com##.fxs_leaderboard +aframnews.com,afro.com,animationmagazine.net,aurn.com,aviacionline.com,blackvoicenews.com,borneobulletin.com.bn,brewmasterly.com,businessofapps.com,carstopia.net,channelnews.com.au,chargedevs.com,chicagodefender.com,chimpreports.com,cnx-software.com,coinweek.com,collive.com,coralspringstalk.com,dailynews.co.zw,dailysport.co.uk,dallasvoice.com,defence-industry.eu,dieworkwear.com,draxe.com,gadgetbuzz.net,gatewaynews.co.za,gayexpress.co.nz,gematsu.com,hamodia.com,illustrationmaster.com,islandecho.co.uk,jacksonvillefreepress.com,kbla1580.com,lynnwoodtimes.com,marionmugshots.com,marshallradio.net,mediaplaynews.com,moviemaker.com,newpittsburghcourier.com,nondoc.com,placenorthwest.co.uk,postnewsgroup.com,richmondshiretoday.co.uk,sammobile.com,savannahtribune.com,spaceref.com,swling.com,talkers.com,thegolfnewsnet.com,travelandtourworld.com,utdmercury.com,virtualrealitieshub.com,waamradio.com,webpokie.com,womensagenda.com.au##.g +coinweek.com##.g-389 +dailyjournalonline.com##.g-dyn +nytimes.com##.g-paid +domainnamewire.com,douglasnow.com,goodthingsguy.com##.g-single +yellowise.com##.g-widget-block +titantv.com##.gAd +brisbanetimes.com.au,smh.com.au,theage.com.au,watoday.com.au##.gF8wY +theweathernetwork.com##.gGthWi +idropnews.com##.ga-banner +bowenislandundercurrent.com,coastreporter.net,delta-optimist.com,richmond-news.com,squamishchief.com##.ga-ext +getgreenshot.org##.ga-ldrbrd +getgreenshot.org##.ga-skscrpr +elevenforum.com,html-code-generator.com##.gads +farmersjournal.ie##.gadvertisementheader +eonline.com##.gallery-rail-sticky-container +vicnews.com##.gam +drive.com.au##.gam-ad +thechainsaw.com##.gam-ad-container +drive.com.au##.gam-ad-wrapper +locksmithledger.com,waterworld.com##.gam-slot-builder +narrow.one##.game-ad-wrapper +geoguessr.com##.game-layout__in-game-ad +chess.com##.game-over-ad-component +pokernews.com##.gameCards +monstertruckgames.org##.gamecatbox +yourstory.com##.gap-\[10px\] +home-assistant-guide.com##.gb-container-429fcb03 +home-assistant-guide.com##.gb-container-5698cb9d +home-assistant-guide.com##.gb-container-bbc771af +amtraktrains.com##.gb-sponsored +homebrewtalk.com,kitchenknifeforums.com,quadraphonicquad.com##.gb-sponsored-wrapper +gocomics.com##.gc-deck--is-ad +1001games.com##.gc-halfpage +1001games.com##.gc-leaderboard +1001games.com##.gc-medium-rectangle +gocomics.com##.gc-top-advertising +letsdopuzzles.com##.gda-home-box +ftw.usatoday.com,kansascity.com,rotowire.com##.gdcg-oplist +clinicaltrialsarena.com,just-food.com,railway-technology.com,retail-insight-network.com,verdict.co.uk##.gdm-company-profile-unit +just-food.com,railway-technology.com,retail-insight-network.com,verdict.co.uk##.gdm-orange-banner +clinicaltrialsarena.com##.gdm-pi-recommended-reports +naval-technology.com##.gdm-recommended-reports +gearpatrol.com##.gearpatrol-ad +geekflare.com##.geekflare-core-resources +hltv.org##.gen-firstcol-box +thefederalist.com##.general-callout +investing.com##.generalOverlay +perfectdailygrind.com##.gengpdg +perfectdailygrind.com##.gengpdg-col +perfectdailygrind.com##.gengpdg-single +romaniajournal.ro##.geoc-container +geo-fs.com##.geofs-adbanner +thingstodovalencia.com##.get-your-guide +getcomics.org##.getco-content +getcomics.org##.getco-content_2 +flickr.com##.getty-search-view +flickr.com##.getty-widget-view +pixabay.com##.gettyImagesContainer--7sZnR +marketsfarm.com##.gfm-ad-network-ad +law.cornell.edu##.gfs +gg.deals##.gg-banner-full-link +808fubo808.com##.gg-cat-bnner +gg.deals##.gg-full-content-widget +808fubo808.com##.gg-popunder +ganjingworld.com##.ggAdZone_gg-banner-ad_zone__wK3kF +cometbird.com##.gg_250x250 +cornish-times.co.uk,farnhamherald.com,iomtoday.co.im##.ggzoWi +ghacks.net##.ghacks-ad +ghacks.net##.ghacks_ad_code +mql5.com##.giyamx4tr +getcomics.org##.gjqry +wjunction.com##.global-banner +researchgate.net##.global-leaderboard-ad-container +niagarafallsreview.ca,stcatharinesstandard.ca,therecord.com,thespec.com,thestar.com,wellandtribune.ca##.globalHeaderBillboard +goodmenproject.com##.gmp-instream-wrap +militaryleak.com##.gmr-floatbanner +clinicaltrialsarena.com##.gms-b2b-marketing +frzyc.github.io##.go-ad-wrapper +coinmarketcap.com##.goXFFk +dallasinnovates.com,fingerlakes1.com,namibian.com.na,thecoastnews.com,watchesbysjx.com##.gofollow +golf.com##.golf-ad +golinuxcloud.com##.golin-content +golinuxcloud.com##.golin-video-content +africanadvice.com,pspad.com,sudantribune.com##.google +apkmirror.com##.google-ad-leaderboard +secretchicago.com##.google-ad-manager-ads-header +safeway.com##.google-adManager +carwow.co.uk##.google-ad__disclaimer +yandex.com##.google-sticky-adv-banner__desktop-disable-ad-button-wrapper +dicoall.com##.googleAdMain +manabadi.co.in##.googleAdsdiv +mediamass.net##.googleresponsive +css3generator.com##.gotta-pay-the-bills +spiceworks.com##.gp-standard-header +titantv.com##.gpAdBox +perfectdailygrind.com##.gpdgeng +truckinginfo.com##.gpt-ad-slot-wrapper +di.fm##.gpt-slot +travelsupermarket.com##.gptAdUnit__Wrapper-sc-f3ta69-0 +kijiji.ca##.gqNGFh +beforeitsnews.com##.gquuuu5a +searchenginereports.net##.grammarly-overall +balls.ie##.gray-ad-title +greatandhra.com##.great_andhra_logo_panel_top_box_201223_ +greatandhra.com##.great_andhra_main_201223_ +mma-core.com##.grec +greekcitytimes.com##.greek-2after-post +greekcitytimes.com##.greek-2content +curioustic.com##.grey +rabble.ca##.grey-cta-block +topminecraftservers.org##.grey-section +sltrib.com##.grid-ad-container-2 +teleboy.ch##.grid-col-content-leaderboard +newsnow.co.uk##.grid-column__container +issuu.com##.grid-layout__ad-by-details +issuu.com##.grid-layout__ad-by-reader +issuu.com##.grid-layout__ad-in-shelf +groovypost.com##.groov-adlabel +leetcode.com##.group\/ads +issuu.com##.grtzHH +cnx-software.com##.gsonoff +gulftoday.ae##.gt-ad-center +gulf-times.com##.gt-horizontal-ad +gulf-times.com##.gt-square-desktop-ad +gulf-times.com##.gt-vertical-ad +nanoreview.net##.gtx_lol_o_desktop +giphy.com##.guIlWP +animenewsnetwork.com##.gutter +attheraces.com##.gutter-left +attheraces.com##.gutter-right +timesnownews.com##.gutterAdContainer +onlymyhealth.com##.gutterBanner +338canada.com##.h-40.bg-gray-300 +worldpopulationreview.com##.h-64 +tvcancelrenew.com##.h-72 +lolalytics.com,thenewdaily.com.au##.h-\[100px\] +nextchessmove.com##.h-\[112px\].flex.justify-center +posemaniacs.com##.h-\[250px\] +freemalaysiatoday.com##.h-\[260px\] +emojipedia.org##.h-\[282px\] +op.gg##.h-\[287px\] +emojipedia.org##.h-\[312px\] +canberratimes.com.au##.h-\[50px\] +lolalytics.com##.h-\[600px\] +supercarblondie.com##.h-\[660px\] +bizjournals.com##.h-\[900px\] +bluejaysnation.com,canucksarmy.com,coincheckup.com,dailyfaceoff.com,flamesnation.ca,lolalytics.com,oilersnation.com,theleafsnation.com,xe.com##.h-\[90px\] +mvnrepository.com##.h-ad +thenewdaily.com.au##.h-home-ad-height-stop +buzzly.art##.h-min.overflow-hidden +target.com##.h-position-fixed-bottom +lyricsmode.com##.h113 +hindustantimes.com##.h325 +opoyi.com##.hLYYlN +distractify.com##.hNIPOc +clutchpoints.com##.hYrQwu +gifcompressor.com,heic2jpg.com,imagecompressor.com,jpg2png.com,mylocation.org,png2jpg.com,webptojpeg.com,wordtojpeg.com##.ha +boatnews.com##.habillage +anime-planet.com##.halo +cyclonis.com##.has-banner +whistleout.com.au##.has-hover +fitbook-magazine.com,myhomebook-magazine.com,petbook-magazine.com,techbook-magazine.com,travelbook-magazine.com##.has-mark +defence-industry.eu##.has-small-font-size.has-text-align-center +apps.npr.org##.has-sponsorship +maxroll.gg##.hasAdhesion +itpro.com,tomsguide.com##.hawk-base +cinemablend.com##.hawk-deal-widget-container +windowscentral.com##.hawk-deal-widget-hero +tomsguide.com##.hawk-main-editorialised +techradar.com##.hawk-main-editorialized +tomsguide.com##.hawk-master-widget-hawk-main-wrapper +windowscentral.com##.hawk-master-widget-hawk-wrapper +techradar.com##.hawk-merchant-link-widget-container +androidcentral.com##.hawk-multi-model-review-container +techradar.com##.hawk-nest +tomsguide.com##.hawk-processed +linuxblog.io##.hayden-inpost_bottom +linuxblog.io##.hayden-inpost_end +linuxblog.io##.hayden-inpost_top +linuxblog.io##.hayden-widget +linuxblog.io##.hayden-widget_top_1 +girlswithmuscle.com##.hb-static-banner-div +girlswithmuscle.com##.hb-video-ad +trendhunter.com##.hcamp +webtoolhub.com##.hdShade > div +highdefdigest.com##.hdd-square-ad +biztechmagazine.com##.hdr-btm +ntv.cx##.hdr-strip +politicshome.com##.hdr-top +gardinerbryant.com##.he-partners +analyticsinsight.net##.head-banner +softexia.com##.head-discount +plos.org##.head-top +hindustantimes.com##.headBanner +realmadrid.com##.head_sponsors +lewrockwell.com##.header [data-ad-loc] +ahajournals.org##.header--advertisment__container +additudemag.com,organicfacts.net,vinepair.com##.header-ad +boldsky.com##.header-ad-block +realestate.com.au##.header-ad-container +meidasnews.com,olympics.com,scmp.com##.header-ad-slot +stuff.co.nz,thepost.co.nz,thepress.co.nz,waikatotimes.co.nz##.header-ads-block +worldpress.org##.header-b +adswikia.com,arcadepunks.com,freemalaysiatoday.com,landandfarm.com,pointblanknews.com,radiotoday.com.au,rsbnetwork.com,runt-of-the-web.com,rxresource.org,techworldgeek.com##.header-banner +gamingdeputy.com##.header-banner-desktop +revolt.tv##.header-banner-wrapper +mercurynews.com,nssmag.com##.header-banners +amazonadviser.com,apptrigger.com,fansided.com,hiddenremote.com,lastnighton.com,lawlessrepublic.com,mlsmultiplex.com,netflixlife.com,playingfor90.com,stormininnorman.com,winteriscoming.net##.header-billboard +lyricsmode.com##.header-block +historiccity.com##.header-block-1 +worldpress.org##.header-bnr +kveller.com##.header-bottom +cpbj.com##.header-bottom-adboard-area +counterpunch.org##.header-center +stuff.co.nz##.header-container +justjared.com##.header-container__main +thetoyinsider.com##.header-drop-zone +tampabayparenting.com##.header-html-inner +allmovie.com,realestate.com.au,theoldie.co.uk##.header-leaderboard +realestate.com.au##.header-leaderboard-portal +sdxcentral.com##.header-lemur +nationalheraldindia.com##.header-m__ad-top__36Hpg +outlooktraveller.com##.header-m__widget__C5AUP +thenewspaper.gr##.header-promo +times.co.zm##.header-pub +cnx-software.com,newtimes.co.rw,sammobile.com##.header-top +kollywoodtoday.net##.header-top-right +maketecheasier.com##.header-widget +hd-trailers.net##.header-win +torquenews.com##.header-wrapper +cointelegraph.com##.header-zone__flower +gelbooru.com##.headerAd +dailytrust.com##.header__advert +travelm.de##.header__banner +thehits.co.nz##.header__main +gifcompressor.com,heic2jpg.com,jpg2png.com,png2jpg.com,webptojpeg.com,wordtojpeg.com##.header__right +m.thewire.in##.header_adcode +manofmany.com##.header_banner_wrap +koreaherald.com##.header_bnn +techopedia.com##.header_inner_ads +steroid.com##.header_right +everythingrf.com##.headerblock +semiconductor-today.com##.headermiddle +darkreader.org##.heading +phonearena.com##.heading-deal +autoplius.lt##.headtop +247wallst.com,cubdomain.com##.hello-bar +lincolnshireworld.com,nationalworld.com##.helper__AdContainer-sc-12ggaoi-0 +farminglife.com,newcastleworld.com##.helper__DesktopAdContainer-sc-12ggaoi-1 +igorslab.de##.herald-sidebar +autotrader.com##.hero-ad-bar +provideocoalition.com##.hero-promotions +newsnow.co.uk##.hero-wrapper +azuremagazine.com##.hero__metadata-left-rail +hwcooling.net##.heureka-affiliate-category +filecrypt.cc,filecrypt.co##.hghspd +filecrypt.cc,filecrypt.co##.hghspd + * +daijiworld.com##.hidden-xs > [href] +miragenews.com##.hide-in-mob +moneycontrol.com,windowsreport.com##.hide-mobile +gadgethacks.com##.hide-on-empty +business-standard.com,johncodeos.com##.hide-on-mobile +simpasian.net##.hideme +coindesk.com##.high-impact-ad +duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##.highlight_sponsored +westword.com##.hil28zhf1wyd +48hills.org##.hills-adlabel +highwayradio.com##.hiway-widget +deccanherald.com##.hizmZ +hola.com##.hm-sticky-sidebar +admonsters.com##.hmpg_full-bleed +seattlepi.com##.hnpad-Flex1 +seattlepi.com##.hnpad-Inline +whatsmyip.com##.holidAds +rvtrader.com##.home-ad-featured-dealer +radiocaroline.co.uk,wishesh.com##.home-banner +ctbids.com##.home-bottom-ad-container +manutd.com##.home-content-panel__sponsor +pcgamingwiki.com##.home-gamesplanet-promo +ctbids.com##.home-header-ad +ctbids.com##.home-incontent-ad +ctbids.com##.home-incontent-ad-2 +freespoke.com##.home-page-message +merriam-webster.com##.home-redesign-ad +israelnationalnews.com##.home-subsections-banner +christianpost.com##.home-videoplayer +megamillions.com##.homeAdBanner300x250 +freepressjournal.in##.homeMobileMiddleAdContainer +newagebd.net##.homeSlideRightSecTwo +jagranjosh.com##.homeSlider +pbs.org##.home__logo-pond +socialcounts.org##.home_sticky-ad__Aa_yD +smallbusiness.co.uk##.homepage-banner-container +invezz.com##.homepage-beneath-hero +interest.co.nz##.homepage-billboard +gumtree.com.au##.homepage-gallery__mrec-placeholder +globalrph.com##.homepage-middle-ad +designspiration.com##.homepageBanner +homes.co.nz##.homepageTopLeader__container +coinpedia.org##.homepage_banner_ad +swimswam.com##.homepage_block_ads +coinpedia.org##.homepage_sidebanner_ad +hometheaterreview.com##.homet-sidebars +mensxp.com##.hometop-ads +radiocity.in##.horiozontaladd +stuff.co.nz,thepost.co.nz##.horizontal-ad-slot +mustsharenews.com##.horizontal-adspace +2conv.com,flv2mp3.by,flvto.biz,flvto.com.mx##.horizontal-area +getmyuni.com##.horizontalRectangle +nofilmschool.com##.horizontal_ad +ultimatespecs.com##.horizontal_add_728 +aarp.org##.hot-deals +makemytrip.com##.hotDeals +dailyrecord.co.uk##.hotjobs +comparitech.com##.how_test +kdnuggets.com##.hp-main-content-2 +daijiworld.com##.hpRightAdvt +darkreader.org##.hr +adweek.com##.htl-ad-wrapper +barstoolsports.com##.htl-ad__container +mtgrocks.com##.htl-inarticle-ad +nameberry.com##.htlad-InContent_Flex +nameberry.com##.htlad-Leaderboard_Flex +avclub.com##.htlad-above_logo +avclub.com##.htlad-middle_rectangle +avclub.com##.htlad-top_leaderboard +zedge.net##.htlad-zedge_browse +wtop.com##.hubb-at-rad-header +huddle.today##.huddle-big-box-placement +techspree.net##.hustle-popup +cryptoslate.com##.hypelab-container +myabandonware.com##.i528 +bleepingcomputer.com##.ia_ad +animenewsnetwork.com##.iab +atptour.com##.iab-wrapper +iai.tv##.iai-article--footer-image +atlpresscollective.com,luzmedia.co,therover.ca,thestraight.com.au##.iam-ad +infobetting.com##.ibBanner +ice.hockey##.ice_ner +ice.hockey##.ice_werbung +darkreader.org##.icons8 +timesofisrael.com##.idfwo-widget-wrapper +indianexpress.com##.ie-ads-block-frontend +indianexpress.com##.ie-adsbox +indianexpress.com##.ie-adtext +indianexpress.com##.ie-banner-wrapper +indianexpress.com##.ie-int-campign-ad +fifetoday.co.uk##.iehxDO +ynetnews.com##.iframe-script +techmeme.com##.ifsp +streetinsider.com##.im-ad +coingape.com##.image-ads +instacart.com##.image-banner-a-9l2sjs +instacart.com##.image-banner-a-ak0wn +flicksmore.com##.image_auto +miragenews.com##.img-450_250 +marketwatch.com##.imonaid_context +lifesitenews.com##.important-info +exchangerates.org.uk##.imt4 +carscoops.com##.in-asd-content +thecanary.co##.in-content-ad +thepostmillennial.com##.in-content-top +outlookindia.com##.in-house-banner1 +letsrun.com##.in-post-ad +businessinsider.com##.in-post-sticky +alphacoders.com##.in-thumb-ad-mobile-desktop +faithpot.com##.inarticle-ad +crash.net##.inarticle-wrapper +lokmattimes.com##.inarticleAd +thefastmode.com##.inarticle_lead +thefastmode.com##.inarticlemodulevideo +sescoops.com##.incontent-ad-container +knowyourmeme.com##.incontent-leaderboard-unit-wrapper +motherjones.com##.incontent-promo +lgbtqnation.com##.index-bottom-ad +katv.com##.index-module_adAfterContent__1cww +194.233.68.230##.indositusxxi-floatbanner +theinertia.com##.inertia-ad-300x250 +theinertia.com##.inertia-ad-300x270 +theinertia.com##.inertia-ad-300x600 +theinertia.com##.inertia-ad-label +theinertia.com##.inertia-ad-top +inews.co.uk##.inews__advert +inews.co.uk##.inews__leaderboard +motorcycle.com##.infeed-ads +sevenforums.com##.infeed1 +wepc.com##.infin-wepc-channels +heatmap.news,theweek.com##.infinite-container +mylocation.org##.info a[href^="https://go.expressvpn.com/c/"] +stocksnap.io##.info-col +bab.la##.info-panel +gameworldobserver.com##.information-block +gameworldobserver.com##.information-block-top +gameworldobserver.com##.information-blocks +careerindia.com,oneindia.com##.inhouse-content +asheville.com##.injected-ads +bestlifeonline.com,eatthis.com,wolfsgamingblog.com##.inline +manitobacooperator.ca##.inline--2 +9gag.com##.inline-ad-container +pexels.com##.inline-ads +forbes.com##.inline-article-ed-placeholder +cochranenow.com,discoverairdrie.com,discoverhumboldt.com,portageonline.com,swiftcurrentonline.com##.inline-billboard +dexerto.com##.inline-block +freebeacon.com##.inline-campaign-wrapper +stocksnap.io##.inline-carbon +usmagazine.com##.inline-firework-shopping +parkers.co.uk##.inline-leaderboard-ad-wrapper +sportsrec.com##.inline-parent-container +carsdirect.com##.inlineAdWrapper +livemint.com##.inlineAds +forbes.com##.inline__zephr +pcgamesn.com,pockettactics.com##.inlinerail +nzbindex.com##.inner +technologynetworks.com##.inner_content_olp_on_site_landing_page +inquirer.com##.inno-ad +inquirer.com##.inno-ad__ad +donegaldaily.com##.inpage_banner +heise.de##.inread-cls-reduc +allradio.net##.insWrap +digitalfoundry.net,nintendolife.com,purexbox.com,pushsquare.com,timeextension.com##.insert +nintendolife.com,purexbox.com,pushsquare.com,timeextension.com##.insert-label +lithub.com##.insert-post-ads +canarymedia.com##.inset-x-0 +digitalfoundry.net##.inset[style="min-height:250px;"] +tvarticles.me##.inside +deccanchronicle.com,thefederal.com##.inside-post-ad +udaipurkiran.com##.inside-right-sidebar .widget_text +allmusic.com##.insticator_ct +darkreader.org##.instinctools +flixboss.com##.instream-dynamic +lol.ps##.instream-video-ad +dermstore.com,lookfantastic.com##.integration-sponsored-ads-pdp-container +coincarp.com##.interact-mobileBox +monochrome-watches.com##.interscroll +mrctv.org,newsbusters.org##.intranet-mid-size +daijiworld.com##.ipRightAdvt +allnurses.com##.ipsAreaBackground +briskoda.net##.ipsData__item--advertisement +uk420.com##.ipsLayout_container > div[align="center"] +allnurses.com,dcfcfans.uk##.ipsSpacer_both +freeiptvplayer.net##.iptv_ads +houstoniamag.com##.is-cream +alibaba.com##.is-creative +athlonsports.com,bringmethenews.com,si.com##.is-exco-player +pcworld.com##.is-half-width.product-widget +estnn.com##.isDesktop +speedcheck.org##.isg-container +icon-icons.com##.istock-container +itdmusics.com##.itdmu-widget +albertsonsmarket.com,marketstreetunited.com,unitedsupermarkets.com##.item-citrus +digitalfoundry.net,nintendolife.com,purexbox.com,pushsquare.com##.item-insert +explorecams.com##.item-row +cryptocompare.com##.item-special +bowenislandundercurrent.com,coastreporter.net,delta-optimist.com,griceconnect.com,moosejawtoday.com,nsnews.com,piquenewsmagazine.com,princegeorgecitizen.com,prpeak.com,richmond-news.com,squamishchief.com##.item-sponsored +newegg.com##.item-sponsored-box +pocketgamer.com##.item-unit +presearch.com##.items-center.bg-transparent +businesstoday.in##.itgdAdsPlaceholder +slidehunter.com##.itm-ads +itweb.co.za##.itw-ad +india.com##.iwplhdbanner-wrap +kijiji.ca##.jOwRwk +ticketmaster.com##.jTNWic +ticketmaster.com##.jUIMbR +jambase.com##.jb-homev3-sense-sidebar-wrap +techstory.in##.jeg_blocklink +psypost.org##.jeg_midbar +sabcnews.com##.jeg_topbar +dot.la##.job-wrapper +marketingweek.com##.jobs-lists +johncodeos.com##.johnc-widget +marinelink.com,maritimejobs.com,maritimepropulsion.com,yachtingjournal.com##.jq-banner +livejournal.com##.js--ad-tip-container +demonslayermanga.com,readjujutsukaisen.com,readneverland.com##.js-a-container +ultimate-guitar.com##.js-ab-regular +punchline-gloucester.com##.js-analytics-event-click +buzzfeed.com##.js-bfa-impression +dev.to##.js-billboard +dev.to##.js-billboard-container +live94today.com##.js-demo-avd +musescore.com##.js-musescore-hb-728--wrapper +overtake.gg##.js-notice.notice +beermoneyforum.com##.js-notices +formula1.com##.js-promo-item +archdaily.com##.js-publift +stackoverflow.com##.js-sidebar-zone +theguardian.com##.js-top-banner +extratv.com##.js-track-link +chewy.com##.js-tracked-ad-product +khaleejtimes.com##.js_ad_st +iobroker.net##.jss125 +paycalculator.com.au##.jss336 +calorieking.com##.jss356 +iobroker.net,iobroker.pro##.jss43 +paycalculator.com.au##.jss546 +garticphone.com##.jsx-2397783008 +autolist.com##.jsx-2866408628 +garticphone.com##.jsx-3256658636 +conservativefiringline.com##.jtpp53 +doodle.com##.jupiter-placement-header-module_jupiter-placement-header__label__caUpc +theartnewspaper.com##.justify-center.flex.w-full +aiscore.com##.justify-center.w100 +fastcompany.com##.jw-floating-dismissible +anandtech.com##.jw-reset +mamieastuce.com##.k39oyi +qz.com##.k3mqd +news12.com##.kBEazG +ticketmaster##.kOwduY +easypet.com##.kadence-conversion-inner +plagiarismchecker.co##.kaka +hellogiggles.com##.karma_unit +flysat-live.com##.kayanyazi +koreaboo.com##.kba-container +standard.co.uk##.kcdphh +tekno.kompas.com##.kcm +kdnuggets.com##.kdnug-after-first-paragraph +kdnuggets.com##.kdnug-in-content-1 +kdnuggets.com##.kdnug-med-rectangle-ros +kdnuggets.com##.kdnug-med-rectangle-ros-sidebar-2 +goldprice.org##.kenbi +onlinelibrary.wiley.com##.kevel-ad-placeholder +physicsworld.com##.key-suppliers +gamertweak.com##.kfzyntmcd-caption +overkill.wtf##.kg-blockquote-alt +itsfoss.com,linuxhandbook.com##.kg-bookmark-card +duffelblog.com##.kg-cta-content +hltv.org##.kgN8P9bvyb2EqDJR +thelibertydaily.com,toptenz.net##.kgbwvoqfwag +koreaherald.com##.kh_ad +koreaherald.com##.khadv1 +khmertimeskh.com##.khmer-content_28 +ytfreedownloader.com##.kl-before-header +kiryuu.id##.kln +wantedinafrica.com##.kn-widget-banner +karryon.com.au##.ko-ads-wrapper +kvraudio.com##.kvrblockdynamic +read.amazon.*##.kw-ads-ftue-container +businessinsider.com##.l-ad +legit.ng,tuko.co.ke##.l-adv-branding__top +pdc.tv##.l-featured-bottom +iphonelife.com##.l-header +globalnews.ca##.l-headerAd +wwe.com##.l-hybrid-col-frame_rail-wrap +gagadget.com##.l-inner_wide.l-inner +aerotime.aero##.l-side-banner +timesofindia.indiatimes.com##.l0TBl +hockeypatrol.com##.l4 +keybr.com##.l6Z8JM3mch +ubergizmo.com##.label_advertising_text +letssingit.com##.lai_all_special +letssingit.com##.lai_desktop_header +letssingit.com##.lai_desktop_inline +purewow.com##.lander-interstital-ad +wzstats.gg##.landscape-ad-container +3dprint.com##.lap-block-items +ptonline.com##.large-horizontal-banner +weatherpro.com##.large-leaderboard +myinstants.com##.large-rectangle-ad +thelincolnianonline.com##.large-show +fantasygames.nascar.com##.larger-banner-wrapper +golfworkoutprogram.com##.lasso-container +complex.com##.latest-stories__ad +business-standard.com##.latstadvbg +laweekly.com##.law_center_ad +apkpac.com##.layout-beyond-ads +crn.com##.layout-right > .ad-wrapper +flava.co.nz,hauraki.co.nz,thehits.co.nz,zmonline.com##.layout__background +racingtv.com##.layout__promotion +mytempsms.com##.layui-col-md12 +truckinginfo.com##.lazy-ad-slot-wrapper +flotrack.org##.lazy-leaderboard-container +benzinga.com##.lazyload-wrapper[style="min-height:170px;width:100%"] +middleeastmonitor.com##.lb24-base-list-ad +iol.co.za##.lbMtEm +trueachievements.com,truesteamachievements.com,truetrophies.com##.lb_holder +leetcode.com##.lc-ads__241X +coincodex.com##.ldb-top6 +soaphub.com##.ldm_ad +lethbridgenewsnow.com##.lead-in +versus.com##.lead_top +sgcarmart.com##.leadbadv +bleachernation.com##.leadboard +thepcguild.com##.leader +autoplius.lt##.leader-board-wrapper +etonline.com##.leader-inc +mediaweek.com.au##.leader-wrap-out +blaauwberg.net##.leaderBoardContainer +coveteur.com##.leaderboar_promo +agcanada.com,allmusic.com,allrecipes.com,allthatsinteresting.com,autoaction.com.au,aviatorsmarket.com,bdonline.co.uk,boardgamegeek.com,bravewords.com,broadcastnow.co.uk,cantbeunseen.com,cattime.com,chairmanlol.com,chemistryworld.com,citynews.ca,comingsoon.net,coolmathgames.com,crn.com.au,diyfail.com,dogtime.com,drugtargetreview.com,edmunds.com,europeanpharmaceuticalreview.com,explainthisimage.com,foodandwine.com,foodista.com,funnyexam.com,funnytipjars.com,gamesindustry.biz,gcaptain.com,gmanetwork.com,hockeycanada.ca,itnews.asia,itnews.com.au,japanisweird.com,jta.org,legion.org,lifezette.com,liveoutdoors.com,macleans.ca,milesplit.com,monocle.com,morefailat11.com,moviemistakes.com,nbl.com.au,newsonjapan.com,nfcw.com,objectiface.com,passedoutphotos.com,playstationlifestyle.net,retail-week.com,rollcall.com,roulettereactions.com,searchenginesuggestions.com,shinyshiny.tv,shitbrix.com,sparesomelol.com,spoiledphotos.com,spokesman.com,stopdroplol.com,straitstimes.com,suffolknews.co.uk,supersport.com,tattoofailure.com,thedriven.io,thefashionspot.com,thestar.com.my,titantv.com,tutorialrepublic.com,uproxx.com,vax-before-travel.com,wapt.com,where.ca,wyff4.com,yoimaletyoufinish.com##.leaderboard +kijiji.ca##.leaderboard-1322657443 +edarabia.com##.leaderboard-728 +edarabia.com##.leaderboard-970 +roblox.com##.leaderboard-abp +gothamist.com##.leaderboard-ad-backdrop +cpbj.com##.leaderboard-ad-section +fortune.com##.leaderboard-ad-wrapper-parent +chess.com##.leaderboard-atf-ad-wrapper +howstuffworks.com##.leaderboard-banner +poe.ninja##.leaderboard-bottom +chess.com##.leaderboard-btf-ad-wrapper +mxdwn.com##.leaderboard-bucket +apnews.com,arabiaweather.com,atlasobscura.com,forum.audiogon.com,gamesindustry.biz,golfdigest.com,zerohedge.com##.leaderboard-container +huffingtonpost.co.uk,huffpost.com##.leaderboard-flex-placeholder +huffingtonpost.co.uk,huffpost.com##.leaderboard-flex-placeholder-desktop +bluesnews.com##.leaderboard-gutter +jobrapido.com##.leaderboard-header-wrapper +manitobacooperator.ca##.leaderboard-height +medpagetoday.com##.leaderboard-region +consequence.net##.leaderboard-sticky +poe.ninja##.leaderboard-top +cbssports.com,popsugar.com,thedodo.com,thrillist.com##.leaderboard-wrap +bloomberg.com,weatherpro.com,wordfinder.yourdictionary.com##.leaderboard-wrapper +6abc.com,abc11.com,abc13.com,abc30.com,abc7.com,abc7chicago.com,abc7news.com,abc7ny.com##.leaderboard2 +cargurus.co.uk##.leaderboardWrapper +t3.com##.leaderboard__container +younghollywood.com##.leaderboard_a +ebay.com,revolt.tv##.leaderboard_ad +lookbook.nu##.leaderboard_container +snbforums.com##.leaderboard_snbad +rottentomatoes.com##.leaderboard_wrapper +gpfans.com##.leaderboardbg +ubergizmo.com##.leaderboardcontainer +dailyegyptian.com,northernstar.info,theorion.com,theprospectordaily.com##.leaderboardwrap +stocktwits.com##.leading-none +dnsleak.com##.leak__submit +ecaytrade.com##.leatherboard +homehound.com.au##.left-banner +overthecap.com##.left-fa-ads +zerohedge.com##.left-rail +republicbroadcasting.org##.left-sidebar-padder > #text-8 +gogetaroomie.com##.left-space +republicworld.com##.leftVerticleAd +10minutemail.net##.leftXL +ultimatespecs.com##.left_column_sky_scrapper +livemint.com##.leftblockAd +thenationalherald.com##.leftside-add +thehansindia.com##.level-after-1-2 +thefederal.com##.level_1_ad_1 +websitedown.info##.lftleft +esports.op.gg##.lg\:bg-gray-800.lg\:rounded.lg\:p-2 +radio.net##.lg\:h-\[270px\] +coincheckup.com##.lg\:h-\[90px\] +axios.com##.lg\:min-h-\[200px\] +dexerto.com##.lg\:min-h-\[290px\] +gizmodo.com,kotaku.com##.lg\:min-h-\[300px\] +stomp.sg##.lg\:py-xl.pt-md +complex.com##.lg\:top-\[var\(--sticky-top\)\] +mumsnet.com##.lg\:w-billboard +dailyo.in##.lhsAdvertisement300 +latestly.com##.lhs_adv_970x90_div +gadgets360.com##.lhs_top_banner +nationthailand.com##.light-box-ads +royalroad.com##.light.margin-bottom-20 +iheartradio.ca##.lightbox-wrapper +lilo.org##.lilo-ad-result +getbukkit.org##.limit +linuxize.com##.linaff +architecturesideas.com##.linkpub_right_img +babynamegenie.com,worldtimeserver.com##.links +weatherpro.com##.list-city-ad +nationalmemo.com##.listicle--ad-tag +spiceworks.com##.listing-ads +mynbc5.com,wyff4.com##.listing-page-ad +gosearchresults.com##.listing-right +privateproperty.co.za##.listingResultPremiumCampaign +researchgate.net##.lite-page-ad--layout-header +researchgate.net##.lite-page__above +ottverse.com##.livevideostack-ad +leftlion.co.uk##.ll-ad +comicbook.com,popculture.com##.lngtd-dynamic-inarticle +comicbook.com##.lngtd-dynamic-leaderboard +comicbook.com##.lngtd-dynamic-leaderboard-index +comicbook.com##.lngtd-dynamic-rightrail +vice.com##.lngtd-dynamic-rr +dayspring.com##.loading-mask +barrons.com##.locationL +reverso.net##.locd-rca +torrentleech.org##.login-banner +siberiantimes.com##.logoBanner +shacknews.com##.lola-affirmation +rpgsite.net##.long-block-footer +topservers.com##.long_wrap +netwerk24.com##.love2meet +tigerdroppings.com##.lowLead +bikeroar.com##.lower-panel +core77.com##.lower_ad_wrap +lovepanky.com##.lp-inline-inhouse-ad +greatbritishlife.co.uk##.lp_track_vertical2 +foodandwine.com##.lrs__wrapper +androidmagazine.eu,samsungmagazine.eu##.lsads-banner +lowes.com##.lws_pdp_recommendations_southdeep +phpbb.com##.lynkorama +songlyrics.com##.lyrics-inner-ad-wrap +mobalytics.gg##.m-17psdf9 +mobalytics.gg##.m-1hsuptt +theverge.com##.m-ad__btf_leaderboard_variable +thestreet.com##.m-balloon-header +politifact.com##.m-billboard +mobalytics.gg##.m-bz6vl +fashionista.com##.m-fixedbottom-ad--container +aol.co.uk,aol.com##.m-gam__container +aol.com##.m-healthgrades +bitcoinmagazine.com,thestreet.com##.m-in-content-ad-row +techraptor.net##.m-lg-70 +meidasnews.com##.m-outbrain +tech.hindustantimes.com##.m-to-add +thestreet.com##.m-video-unit +thegatewaypundit.com##.m0z4dhxja2 +insideevs.com##.m1-apb +motor1.com##.m1_largeMPU +avforums.com##.m2n-ads-slot +poebuilds.net##.m6lHKI +net-load.com##.m7s-81.m7s +hindustantimes.com##.m_headBanner +morningagclips.com##.mac-ad-group +macdailynews.com##.macdailynews-after-article-ad-holder +antimusic.com##.mad +pride.com##.magazine__banner +imyfone.com##.magicmic-banner-2024 +curseforge.com##.maho-container +methodshop.com##.mai-aec +wccftech.com##.main-background-wrap +mathgames.com##.main-banner-adContainer +jpost.com##.main-banner-container +sporcle.com##.main-content-unit-wrapper +numuki.com##.main-header-responsive-wrapper +ggrecon.com##.mainVenatusBannerContainer +nordot.app##.main__ad +gzeromedia.com##.main__post-sponsored +azscore.com##.make-a-bet__wrap +livescores.biz##.make-a-bet_wrap +manageditmag.co.uk##.manag-widget +gfinityesports.com##.manifold-takeover +get.pixelexperience.org##.mantine-arewlw +whatsgabycooking.com##.manual-adthrive-sidebar +metoffice.gov.uk##.maps-header-advert +dailyecho.co.uk,dissmercury.co.uk,glasgowtimes.co.uk,heraldseries.co.uk,salisburyjournal.co.uk,somersetcountygazette.co.uk,thenational.scot##.mar-leaderboard--top +igi-global.com##.margin-bottom-15.inline-block-100 +linkvertise.com##.margin-bottom-class-20 +color-hex.com##.margin10 +theadvocate.com##.marketing-breakout +fandom.com##.marketplace +bestbuy.com##.marquee-ad-wrapper +nintendolife.com##.mastfoot +pushsquare.com,songlyrics.com##.masthead +eetimes.eu,korinthostv.gr,powerelectronicsnews.com##.masthead-banner +augustman.com##.masthead-container +csst.at##.max-h-48 +modrinth.com##.max-h-\[250px\] +cloudwards.net##.max-medium +buzzheavier.com##.max-w-\[60rem\] > p.mt-5.text-center.text-lg +spin.com##.max-w-\[970px\] +nicomanga.com##.max-w-lg.my-6.bg-green-600\/90 +mayoclinic.org##.mayoad > .policy +poe2db.tw##.mb-1 > [href^="/s/tl3"] +racgp.org.au##.mb-1.small +wccftech.com##.mb-11 +gamedev.net##.mb-3.align-items-center.justify-content-start +themoscowtimes.com##.mb-4.py-3 +techbone.net##.mb-5.bg-light +musicbusinessworldwide.com##.mb-advert +usmagazine.com##.mb1-wrapper +yardbarker.com##.mb_promo_responsive_right +firstpost.com##.mblad +news18.com##.mc-ad +ctinsider.com##.md\:block.y100 +op.gg##.md\:max-w-\[1080px\]:not(.h-\[205px\]) +82-0.com##.md\:max-w-\[480px\] +bmj.com##.md\:min-h-\[250px\] +medibang.com##.mdbnAdBlock +global.morningstar.com##.mdc-top-ad__container__mdc +online-translator.com##.mddlAdvBlock +livejournal.com##.mdspost-aside__item--banner +thestar.com.my##.med-rec +infoplease.com##.med-rect-ad-container +gamezone.com##.med-rect-ph +ghanaweb.com##.med_rec_lg_min +bleedingcool.com##.med_rect_wrapper +ipwatchdog.com##.meda--sidebar-ad +macys.com##.media-component-siteMonetization +tasfia-tarbia.org##.media-links +realestate.com.au##.media-viewer__sidebar +webmd.com##.medianet-ctr +stealthoptional.com##.mediavine_blockAds +gfinityesports.com##.mediavine_sidebar-atf_wrapper +allmusic.com##.medium-rectangle +chess.com##.medium-rectangle-ad-component +chess.com##.medium-rectangle-ad-slot +chess.com##.medium-rectangle-btf-ad-wrapper +weatherpro.com##.medium-rectangle-wrapper-2 +ebaumsworld.com##.mediumRect +ubergizmo.com##.mediumbox_container +allnurses.com##.medrec +compoundsemiconductor.net##.mega-bar +kompass.com##.megaBanner +theweather.com,theweather.net,yourweather.co.uk##.megabanner +mentalmars.com##.menta-target +2ip.me##.menu_banner +audiokarma.org##.message > center b +eawaz.com##.metaslider +theweather.com,theweather.net,yourweather.co.uk##.meteored-ads +metro.co.uk##.metro-discounts +metro.co.uk##.metro-ow-modules +moviefone.com##.mf-incontent +desmoinesregister.com##.mfFsRn__mfFsRn +moneycontrol.com##.mf_radarad +analyticsinsight.net##.mfp-bg +wethegeek.com##.mfp-content +analyticsinsight.net##.mfp-ready +majorgeeks.com##.mg-giveaway-banner +earth911.com##.mg-sidebar +timesofindia.indiatimes.com##.mgid_second_mrec_parent +cryptoreporter.info,palestinechronicle.com##.mh-header-widget-2 +torontosun.com##.mia-outstream +citizen.digital##.mid-article-ad +hltv.org##.mid-container +fdiintelligence.com##.mid-desktop +investing.com##.midHeader +newsday.com##.midPg +battlefordsnow.com,cfjctoday.com,chatnewstoday.ca,everythinggp.com,huskiefan.ca,larongenow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,sasknow.com,vernonmatters.ca##.midcontent +manofmany.com,scanwith.com##.middle-banner +tradetrucks.com.au##.middle-banner-list +ibtimes.co.uk##.middle-leaderboard +spectator.com.au##.middle-promo +coincodex.com##.middle9 +heatmap.news##.middle_leaderboard +fruitnet.com##.midpageAdvert +golfdigest.com##.midslot +extremetech.com##.min-h-24 +gizmodo.com##.min-h-\[1000px\] +op.gg,thenewdaily.com.au##.min-h-\[100px\] +charlieintel.com,dexerto.com##.min-h-\[114px\] +stomp.sg##.min-h-\[120px\] +stuff.co.nz##.min-h-\[133px\] +outsideonline.com##.min-h-\[150vh\] +ipaomtk.com##.min-h-\[160px\] +axios.com##.min-h-\[200px\] +blanktext.co##.min-h-\[230px\] +blanktext.co,cruisecritic.com,finbold.com,gizmodo.com,kotaku.com,op.gg,outsideonline.com,radio.net##.min-h-\[250px\] +radiome.*##.min-h-\[250px\].mx-auto.w-full.hidden.my-1.lg\:flex.center-children +uwufufu.com##.min-h-\[253px\] +dexerto.com##.min-h-\[278px\] +fansided.com,thenewdaily.com.au##.min-h-\[280px\] +republicworld.com##.min-h-\[290px\] +uwufufu.com##.min-h-\[300px\] +mumsnet.com##.min-h-\[360px\] +inc.com##.min-h-\[4000px\].second-scroll-container +dexerto.com,republicworld.com##.min-h-\[400px\] +fortune.com##.min-h-\[404px\] +op.gg,stomp.sg##.min-h-\[50px\] +dexerto.com##.min-h-\[56px\].z-30 +esports.op.gg##.min-h-\[600px\] +dexerto.com##.min-h-\[60px\] +op.gg##.min-h-\[66px\] +cruisecritic.com##.min-h-\[80px\].md\:min-h-\[90px\] +motortrend.com,officialcharts.com,republicworld.com,w3docs.com,yaledailynews.com##.min-h-\[90px\] +stripes.com##.min-h90 +letsrun.com##.min-w-300px +motortrend.com,mumsnet.com,stocktwits.com##.min-w-\[300px\] +theland.com.au##.min-w-mrec +hindustantimes.com##.minHeight325 +moviemeter.com##.minheight250 +phpbb.com##.mini-panel:not(.sections) +kitco.com##.mining-banner-container +ar15.com##.minis +247sports.com##.minutely-wrapper +revolutionsoccer.net##.mls-o-adv-container +allrecipes.com##.mm-ads-leaderboard-space +mmegi.bw##.mmegi-web-banner +news.ssbcrack.com##.mmt-flight +inhabitat.com##.mn-wrapper +beaumontenterprise.com,chron.com,ctinsider.com,ctpost.com,expressnews.com,houstonchronicle.com,lmtonline.com,middletownpress.com,mrt.com,mysanantonio.com,newstimes.com,nhregister.com,registercitizen.com,stamfordadvocate.com,thehour.com##.mnh90px +allrecipes.com##.mntl-jwplayer-broad +bhg.com,eatingwell.com,realsimple.com,southernliving.com##.mntl-notification-banner +thoughtco.com##.mntl-outbrain +procyclingstats.com##.mob-ad +businessplus.ie##.mobile-mpu-widget +datetimego.com##.mobile-only +refooty.com##.mobile-sponsor-banner +refooty.com##.mobile-sticky-ad +forbes.com##.mobile-sticky-ed-placeholder +wordreference.com##.mobileAd_holderContainer +pcmacstore.com##.mobileHide +serverstoplist.com##.mobile_ad +tipranks.com##.mobile_displaynone.flexccc +thedailybeast.com##.mobiledoc-sizer +wordreference.com##.mobiletopContainer +criminaljusticedegreehub.com##.mobius-container +localgovernmentlawyer.co.uk##.mod-banners +etxt.biz##.mod-cabinet__sidebar-adv +etxt.biz##.mod-cabinet__sidebar-info +hot-dinners.com##.mod-custom +notateslaapp.com##.mod-sponsors +snowmagazine.com##.mod_banners +lakeconews.com##.mod_ijoomlazone +civilsdaily.com##.modal +epicload.com##.modal-backdrop +cyberscore.live##.modal-form-wrapper +cleaner.com##.modal__intent-container +autoevolution.com##.modeladmid +duckduckgo.com##.module--carousel-products +duckduckgo.com##.module--carousel-toursactivities +finextra.com##.module--sponsor +webmd.com##.module-f-hs +usmagazine.com##.module-storyme +webmd.com##.module-top-picks +topographic-map.com##.moduleAmazon +fxsforexsrbijaforum.com##.module_ahlaejaba +dfir.training##.moduleid-307 +dfir.training##.moduleid-347 +dfir.training##.moduleid-358 +beckershospitalreview.com##.moduletable > .becker_doubleclick +dailymail.co.uk##.mol-fe-vouchercodes-redesign +dailymail.com##.mol-products-module +manofmany.com##.mom-ads__inner +tiresandparts.net##.mom-e3lan +monsoonjournal.com##.mom-e3lanat-wrap +manofmany.com##.mom-gpt__inner +manofmany.com##.mom-gpt__wrapper +pc-builds.com##.mon-holder +mondoweiss.net##.mondo-ads-widget +consumerreports.org##.monetate_selectorHTML_48e69fae +forbes.com##.monito-widget-wrapper +miruro.bz,miruro.ru,miruro.to,miruro.tv##.monkey +joindota.com##.monkey-container +flickr.com##.moola-search-div.main +hindustantimes.com##.moreFrom +immoweb.be##.mortgage-bank-banner +apptrigger.com,fansided.com,lastnighton.com,mlsmultiplex.com,netflixlife.com,playingfor90.com,winteriscoming.net##.mosaic-banner +countryroadsmagazine.com##.mp-ad-sprocket +radioyacht.com##.mpc-carousel__wrapper +98fm.com,airqualitynews.com,audioreview.com,barrheadnews.com,bobfm.co.uk,bordertelegraph.com,cultofandroid.com,dcsuk.info,directory247.co.uk,dumbartonreporter.co.uk,dunfermlinepress.com,durhamtimes.co.uk,eastlothiancourier.com,econsultancy.com,eurogamer.net,findanyfilm.com,forzaitalianfootball.com,gamesindustry.biz,her.ie,herfamily.ie,joe.co.uk,joe.ie,kentonline.co.uk,metoffice.gov.uk,newscientist.com,physicsworld.com,pressandjournal.co.uk,readamericanfootball.com,readarsenal.com,readastonvilla.com,readbasketball.com,readbetting.com,readbournemouth.com,readboxing.com,readbrighton.com,readbundesliga.com,readburnley.com,readcars.co,readceltic.com,readchampionship.com,readchelsea.com,readcricket.com,readcrystalpalace.com,readeverton.com,readeverything.co,readfashion.co,readfilm.co,readfood.co,readfootball.co,readgaming.co,readgolf.com,readhorseracing.com,readhuddersfield.com,readhull.com,readingchronicle.co.uk,readinternationalfootball.com,readlaliga.com,readleicester.com,readliverpoolfc.com,readmancity.com,readmanutd.com,readmiddlesbrough.com,readmma.com,readmotorsport.com,readmusic.co,readnewcastle.com,readnorwich.com,readnottinghamforest.com,readolympics.com,readpl.com,readrangers.com,readrugbyunion.com,readseriea.com,readshowbiz.co,readsouthampton.com,readsport.co,readstoke.com,readsunderland.com,readswansea.com,readtennis.co,readtottenham.com,readtv.co,readussoccer.com,readwatford.com,readwestbrom.com,readwestham.com,readwsl.com,realradioxs.co.uk,redhillandreigatelife.co.uk,rte.ie,smartertravel.com,southwestfarmer.co.uk,spin1038.com,spinsouthwest.com,sportsjoe.ie,sportsmole.co.uk,sundaypost.com,thisisfutbol.com,toffeeweb.com,uktv.co.uk,videocelts.com,warringtonguardian.co.uk,wiltshirebusinessonline.co.uk##.mpu +news.sky.com##.mpu-1 +edarabia.com##.mpu-300 +physicsworld.com##.mpu-300x250 +crash.net##.mpu-block +arabiaweather.com##.mpu-card +dailymail.co.uk##.mpu_puff_wrapper +4rfv.co.uk##.mpus +mapquest.com##.mq-bizLocs-container +mapquest.com##.mqBizLocsContainer +nysun.com##.mr-\[-50vw\] +geo.tv,jozifm.co.za,runt-of-the-web.com,thewest.com.au,topgear.com.ph##.mrec +auto.economictimes.indiatimes.com##.mrec-ads-slot +gmanetwork.com##.mrect +aviatorsmarket.com##.mrkting-wrapper +motorsport.com##.ms-ap +autosport.com##.ms-apb +motorsport.com##.ms-apb-dmpu +autosport.com,motorsport.com##.ms-hapb +autosport.com##.ms-side-items--with-banner +codeproject.com##.msg-300x250 +cryptoticker.io##.mso-cls-wrapper +vpntierlists.com##.mt-\[500px\] +textcompare.org##.mui-ot0xle +boardgameoracle.com##.mui-style-1kdz9ml +boardgameoracle.com##.mui-style-1vh0vdw +boardgameoracle.com##.mui-style-x73gw8 +forbes.com##.multi-featured-products +myinstants.com##.multiaspect-banner-ad +spy.com##.multiple-products +zerolives.com##.munder-fn5udnsn +cutecoloringpagesforkids.com##.mv-trellis-feed-unit +cannabishealthnews.co.uk##.mvp-side-widget img +marijuanamoment.net##.mvp-widget-ad +malwaretips.com##.mwt_ads +smallseotools.com##.mx-auto.d-block +mangapill.com##.mx-auto.m-3.z-0 +theawesomer.com##.mxyptext +decrypt.co##.my-10.xl\:flex.justify-center +standardmedia.co.ke##.my-2 +radio.at,radio.de,radio.dk,radio.es,radio.fr,radio.it,radio.net,radio.pl,radio.pt,radio.se##.my-\[5px\].mx-auto.w-full.hidden.md\:flex.md\:min-h-\[90px\].lg\:min-h-\[250px\].items-center.justify-center +greatist.com,psychcentral.com##.myFinance-widget +krakenfiles.com##.myadbox +tastesbetterfromscratch.com,troypoint.com##.mysticky-welcomebar-fixed +troypoint.com##.mysticky-welcomebar-fixed-wrap +koreaherald.com##.mythiell-mid-container +exportfromnigeria.info##.mytopads +mypunepulse.com##.n2-padding +hoteldesigns.net##.n2-ss-slider +news24online.com##.n24_ads_div_title +naturalblaze.com##.n553lfzn75 +mail.google.com##.nH.PS +cryptobriefing.com##.na-item.item +bitcoinworld.co.in##.nai-fab-container +nextdoor.com##.nas-container +imsa.com,jayski.com,nascar.com##.nascar-ad-container +zerohedge.com##.native +flightconnections.com##.native-ad-btn +old.reddit.com##.native-ad-container +allthatsinteresting.com##.native-box +phillyvoice.com##.native-sponsor +tekno.kompas.com##.native-wrap +ranker.com##.nativeAdSlot_nativeAdContainer__NzSO_ +seura.fi##.nativead:not(.list) +fortune.com##.nativo-wrapper +vice.com##.nav-bar__article-spacer +foobar2000.org##.navad +ford-trucks.com##.navbar_notice +notebookcheck.net##.nbc-right-float +vocm.com##.nccBigBox +aceshowbiz.com,cmr24.net##.ne-banner-layout1 +meilleurpronostic.fr##.ne4u07a96r5c3 +danpatrick.com##.needsclick +newegg.com##.negspa-brands +nejm.org##.nejm_jobs +horriblevideos.com##.netloop-ad-banner-300-250 +chaseyoursport.com##.new-adv +play.typeracer.com##.newNorthWidget +pcgamesn.com##.new_affiliate_embed +pcgamesn.com##.new_menu_item +firstpost.com##.newadd +farminguk.com##.news-advert-button-click +hurriyetdailynews.com##.news-detail-adv +sammobile.com##.news-for-you-wrapper +caspianpost.com##.news-inner__banner +medicalxpress.com##.news-related +blabbermouth.net##.news-single-ads +dailysocial.id##.news__detail-ads-subs +digit.in##.news_adhide_device +newskarnataka.com##.newsk-target +worldcrunch.com##.newspack-placeholder +washingtoninformer.com##.newspack_global_ad +firstpost.com##.newtopadd +moddb.com##.nextmediaboxtop +novelfire.net##.nf-ads +nhl.com##.nhl-c-editorial-list__mrec +nhl.com##.nhl-l-section-bg__adv +nhl.com##.nhl-o-adv +hulkshare.com##.nhsBotBan +afterdawn.com##.ni_box +bizasialive.com##.nipl-sticky-footer-banner +bizasialive.com##.nipl-top-sony-banr +bizasialive.com##.nipl_add_banners_inner +quipmag.com##.nlg-sidebar-inner > .widget_text +newsmax.com##.nmsponsorlink +newsmax.com##.nmsponsorlink + [class] +pcgamesn.com##.nn_mobile_mpu2_wrapper +pcgamesn.com##.nn_mobile_mpu_wrapper +trueachievements.com,truesteamachievements.com,truetrophies.com##.nn_player +publishedreporter.com##.no-bg-box-model +sloanreview.mit.edu##.no-mobile--ad +hindustantimes.com##.noAdLabel +ferrarichat.com##.node_sponsor +greyhound-data.com##.non-sticky-publift +unogs.com##.nordvpnAd +miniwebtool.com##.normalvideo +chipchick.com##.noskim.ntv-moap +2fa.live##.not_vn +4dayweek.io##.notadvert-tile-wrapper +cookingforengineers.com##.nothing +moodiedavittreport.com##.notice +cityam.com##.notice-header +overclock.net##.notice-plus +businessgreen.com##.notice-slot-full-below-header +torrends.to##.notice-top +gearspace.com##.notice__slt +all3dp.com##.notification +mondoweiss.net##.notrack +pcgamebenchmark.com##.nova_wrapper +nextpit.com##.np-top-deals +dirproxy.com,theproxy.lol,unblock-it.com,uproxy2.biz##.nrd-general-d-box +mgeko.cc##.nsad +designtaxi.com##.nt +nowtoronto.com##.nt-ad-wrapper +designtaxi.com##.nt-displayboard +newtimes.co.rw##.nt-horizontal-ad +newtimes.co.rw##.nt-vertical-ad +english.nv.ua##.nts-video-wrapper +forbes.com##.ntv-loading +ntv.cx##.ntvx-sheet +marineelectronics.com,marinetechnologynews.com##.nwm-banner +kueez.com,trendexposed.com##.nya-slot +decider.com##.nyp-video-player +golfdigest.com##.o-ArticleRecirc +france24.com##.o-ad-container__label +fdiintelligence.com##.o-ads +drivencarguide.co.nz##.o-adunit +lawandcrime.com,mediaite.com##.o-promo-unit +deccanherald.com##.oPxJA +webnovelworld.org##.oQryfqWK +sentres.com##.oax_ad_leaderboard +comiko.net##.ob-widget-items-container +tennis.com##.oc-c-article__adv +officedepot.com##.od-search-criteo-banner-ads__siderail +officedepot.com##.od-search-criteo-banner-ads__upper-leaderboard +officedepot.com##.od-search-piq-banner-ads__lower-leaderboard +autonocion.com##.od-sticky-wrap +gizmodo.com,kotaku.com##.od-wrapper +livescores.biz##.odds-market +worldsoccertalk.com##.odds-slider-widget +kijiji.ca##.ofGHb +gault-millau.nl,gaultmillau.be,gaultmillau.lu##.off-brand +guelphmercury.com##.offcanvas-inner > .tncms-region +softexia.com##.offer +oneindia.com##.oi-add-block +oneindia.com##.oi-recom-art-wrap +oneindia.com##.oi-spons-ad +boldsky.com,drivespark.com,gizbot.com,goodreturns.in,mykhel.com,nativeplanet.com,oneindia.com##.oi-wrapper1 +boldsky.com,drivespark.com,gizbot.com,goodreturns.in,mykhel.com,nativeplanet.com,oneindia.com##.oiad +gizbot.com##.oiadv +hamodia.com##.oiomainlisting +thehackernews.com##.okfix +forums.somethingawful.com##.oma_pal +etonline.com##.omni-skybox-plus-stick-placeholder +oneindia.com##.one-ad +albernivalleynews.com,bainbridgereview.com,bakercityherald.com,bgdailynews.com,bluemountaineagle.com,bothell-reporter.com,campbellrivermirror.com,castlegarnews.com,cloverdalereporter.com,cowichanvalleycitizen.com,dailyleader.com,eaglevalleynews.com,eastoregonian.com,federalwaymirror.com,goldstreamgazette.com,interior-news.com,irontontribune.com,kelownacapnews.com,kentreporter.com,lobservateur.com,magnoliastatelive.com,mapleridgenews.com,mi-reporter.com,nanaimobulletin.com,northernsentinel.com,panews.com,peacearchnews.com,pentictonwesternnews.com,portlandtribune.com,pqbnews.com,reddeeradvocate.com,rentonreporter.com,revelstokereview.com,rosslandnews.com,saanichnews.com,salisburypost.com,saobserver.net,seattleweekly.com,sequimgazette.com,sookenewsmirror.com,surreynowleader.com,tacomadailyindex.com,terracestandard.com,thedailyworld.com,thefreepress.ca,thenorthernview.com,theprogress.com,tryondailybulletin.com,valdostadailytimes.com,vancouverislandfreedaily.com,vashonbeachcomber.com,vernonmorningstar.com,wallowa.com,whidbeynewstimes.com,wltribune.com,www.kirklandreporter.com,yukon-news.com##.one_by_one_group +techspot.com##.onejob +decrypt.co##.opacity-75 +lowtoxlife.com##.openpay-footer +opensourceforu.com##.opens-rollup-desktop +huffpost.com##.openweb-container +campaignlive.com##.optanon-category-3 +ormanager.com##.orm-black-label-inner +flysat.com##.orta +indianexpress.com##.osv-ad-class +thedigitalfix.com##.ot-widget-banner +otakuusamagazine.com##.otaku_big_ad +mma-core.com##.outVidAd +egmnow.com##.outbrain-wrapper +businesstoday.in##.outer-add-section +salon.com##.outer_ad_container +pricespy.co.nz,pricespy.co.uk##.outsider-ads +aminoapps.com##.overflow-scroll-sidebar > div +shtfplan.com##.overlay-container +isidewith.com##.overlayBG +isidewith.com##.overlayContent +sports.ndtv.com##.overlay__side-nav +operawire.com##.ow-archive-ad +golfweather.com##.ox300x250 +breakingnews.ie##.p-2.bg-gray-100 +annodz.com##.p-banner-wrapper.first +beermoneyforum.com##.p-body-sidebar +whatitismyip.net##.p-hza6800 +annodz.com##.p-sidebar-wrapper +startpage.com,startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion##.pa-bg +startpage.com,startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion##.pa-bg + section +phonearena.com##.pa-sticky-container +islamicfinder.org##.pad-xs.box.columns.large-12 +topsmerch.com##.padding-50px +topsmerch.com##.padding-top-20px.br-t +realtytoday.com##.page-bottom +scmp.com##.page-container__left-native-ad-container +bitdegree.org##.page-coupon-landing +iheartradio.ca##.page-footer +carsales.com.au##.page-header +developer.mozilla.org##.page-layout__banner +realtytoday.com##.page-middle +boxing-social.com##.page-takeover +seeklogo.com##.pageAdsWp +military.com##.page__top +rateyourmusic.com##.page_creative_frame +thefastmode.com##.page_skin_left +thefastmode.com##.page_skin_right +thefastmode.com##.page_skin_top +mynorthwest.com##.pagebreak +canadianlisted.com##.pageclwideadv +gadgets360.com##.pagepusheradATF +calculatorsoup.com##.pages +livejournal.com##.pagewide-wrapper +itnews.com.au##.paid-content +nzherald.co.nz##.paid-promoted-content +thelibertydaily.com##.paid-subscriber +timesofindia.indiatimes.com##.paisa-wrapper +axn-asia.com,onetvasia.com##.pane-dart-dart-tag-300x250-rectangle +insidehighered.com##.pane-dfp +thebarentsobserver.com##.pane-title +comedycentral.com.au##.pane-vimn-coda-gpt-panes +wunderground.com##.pane-wu-fullscreenweather-ad-box-atf +khmertimeskh.com##.panel-grid-cell +panarmenian.net##.panner_2 +battlefordsnow.com,cfjctoday.com,chatnewstoday.ca,ckpgtoday.ca,everythinggp.com,everythinglifestyle.ca,farmnewsnow.com,fraservalleytoday.ca,huskiefan.ca,larongenow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,rocketfan.ca,sasknow.com,vernonmatters.ca##.parallax-breakout +pons.com##.parallax-container +squaremile.com##.parallax-wrapper +myfigurecollection.net##.partner +bottradionetwork.com##.partner-block +hbr.org##.partner-center +mail.com##.partner-container +globalwaterintel.com,mavin.io##.partner-content +cybernews.com##.partner-content-block +globalwaterintel.com##.partner-content-carousel +nrl.com##.partner-groups +cyberscore.live##.partner-rb +cyberscore.live##.partner-rb-full-page +dzone.com##.partner-resources-block +nationtalk.ca##.partner-slides +vecteezy.com##.partner-sponsored-results +cross.bet##.partnerLink +sparknotes.com##.partner__pw__header +artasiapacific.com##.partner_container +ordertracker.com##.partnerbanner +bundesliga.com##.partnerbar +freshnewgames.com##.partnercontent_box +investopedia.com##.partnerlinks +2oceansvibe.com,asianlemansseries.com,invictaracing.com,speedcafe.com,travelweekly.com##.partners +letsgodigital.org##.partners-bar +cbn.com##.partners-block +practicalecommerce.com##.partners-sidebar +advocate.com##.partners__container +arrivealive.co.za##.partnersheading +magma.com##.partnership-content-wrapper +liveuamap.com##.passby +passiveincomemd.com##.passi-pimdcon-ad-placement +pluto.tv##.pauseAdContainer +writerscafe.org##.pay +nhentai.com##.pb-0.w-100[style] +newkerala.com##.pb-2 .text-mute +dermatologytimes.com##.pb-24 +ahajournals.org,tandfonline.com##.pb-ad +wweek.com##.pb-f-phanzu-phanzu-ad-code +cattime.com,dogtime.com,liveoutdoors.com,playstationlifestyle.net,thefashionspot.com##.pb-in-article-content +agupubs.onlinelibrary.wiley.com,ahajournals.org##.pb-las +playbuzz.com##.pb-site-player +washingtonpost.com##.pb-sm.pt-sm.b +publicbooks.org##.pb_ads_widget +allthatsinteresting.com##.pbh_inline +caixinglobal.com##.pc-ad-left01 +serverstoplist.com##.pcOnly +lazada.co.id,lazada.co.th,lazada.com.my,lazada.com.ph,lazada.sg,lazada.vn##.pdp-block__product-ads +thefintechtimes.com##.penci-widget-sidebar +dailynews.lk##.penci_topblock +bestbuy.ca##.pencilAd_EE9DV +thegatewaypundit.com,westernjournal.com,wnd.com##.persistent-footer +apkmb.com##.personalizadas +proxfree.com##.pflrgAds +post-gazette.com##.pg-mobile-adhesionbanner +fontsquirrel.com##.pgAdWrapper +post-gazette.com##.pgevoke-flexbanner-innerwrapper +post-gazette.com##.pgevoke-superpromo-innerwrapper +online.pubhtml5.com##.ph5---banner---container +timesofindia.com##.phShimmer +trustedreviews.com##.phoenix-deals-block +drivespark.com,gizbot.com##.photos-add +drivespark.com##.photos-left-ad +cryptorank.io##.piRla +washingtontimes.com##.piano-end-article-reco +washingtontimes.com##.piano-in-article-reco +washingtontimes.com##.piano-right-rail-reco +washingtontimes.com##.piano-right-rail-reco-bottom +reelviews.net##.picHolder +pickleball.com##.pickleball-com_ATF_leaderboard +pickleball.com##.pickleball-com_incontent_728_reusable +pickleball.com##.pickleball-com_siderail_left_atf +pickleball.com##.pickleball-com_siderail_right_atf +pickleballclubs.com##.pickleballclubs-com_incontent_970_reusable +pickleballclubs.com##.pickleballclubs-com_leaderboard_atf +pickleballleagues.com##.pickleballleagues-com_incontent_728_reusable +pickleballleagues.com##.pickleballleagues-com_leaderboard_atf +pickleballteamleagues.com##.pickleballteamleagues-com_incontent_970_reusable +pickleballteamleagues.com##.pickleballteamleagues-com_leaderboard_atf +pickleballtournaments.com##.pickleballtournaments-com_incontent_728_reusable +pickleballtournaments.com##.pickleballtournaments-com_incontent_970_reusable +pickleballtournaments.com##.pickleballtournaments-com_leaderboard_atf +locklab.com##.picwrap +romania-insider.com##.pigeon-context-promotion +yopmail.com,yopmail.fr,yopmail.net##.pindexhautctn +bintv.net##.pinned-ad +mangakakalot.gg##.pinned-ad-popular +9animetv.to,hianime.to##.pizza +pricespy.co.nz,pricespy.co.uk##.pjra-w-\[970px\] +carsized.com##.pl_header_ad +redgifs.com##.placard-wrapper +atlasobscura.com##.place-body-ad +meteofor.com,nofilmschool.com,protothema.gr##.placeholder +advocate.com,bestlifeonline.com,good.is,out.com,pride.com##.placeholder-a-block +bucksco.today##.placeholder-block +theoldie.co.uk##.placeholder-wrapper +sundayworld.co.za##.placeholderPlug +pcgamebenchmark.com,soccerway.com,streetcheck.co.uk##.placement +pch.com##.placement-content +diglloyd.com,windinmyface.com##.placementInline +diglloyd.com,windinmyface.com##.placementTL +diglloyd.com,windinmyface.com##.placementTR +hagerty.com##.placements +plagiarismtoday.com##.plagi-widget +planeandpilotmag.com##.plane-article-above-headline +planeandpilotmag.com##.plane-home-leader-before-content +trakt.tv##.playwire +upi.com##.playwire-ad-unit +advfn.com##.plus500 +montrealgazette.com##.pmd-ad-content +thepinknews.com##.pn-ad-container +freewebarcade.com##.pnum +radiotoday.co.uk##.pnvqryahwk-container +thespec.com,wellandtribune.ca##.polarAds +bramptonguardian.com,guelphmercury.com,insideottawavalley.com,thestar.com##.polarBlock +autoexpress.co.uk##.polaris__below-header-ad-wrapper +autoexpress.co.uk##.polaris__more-reviews +autoexpress.co.uk,carbuyer.co.uk,evo.co.uk##.polaris__partnership-block +bigissue.com##.polaris__simple-grid--full +epmonthly.com##.polis-target +compoundsemiconductor.net##.popular__section-newsx +itc.ua##.popup-bottom +wethegeek.com##.popup-dialog +battlefordsnow.com,cfjctoday.com,everythinggp.com,huskiefan.ca,larongenow.com,lethbridgenewsnow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,sasknow.com,vernonmatters.ca##.pos-top +capitalbrief.com##.position1 +capitalbrief.com##.position2 +farmersjournal.ie##.position2C +wtop.com##.post--sponsored +abovethelaw.com,breakingdefense.com,medcitynews.com##.post-card--is-sponsored +kiplinger.com##.post-gallery-item-ad +dmarge.com##.post-infinite-ads +bitcoinworld.co.in,boardgamegeek.com##.post-inline-ad +hackread.com##.post-review-li +hellocare.com.au##.post-wrapper__portrait-ads +newagebd.net##.postPageRightInTop +newagebd.net##.postPageRightInTopIn +thetrek.co##.post__in-content-ad +fastcompany.com##.post__promotion +briefly.co.za##.post__sponsor-banner +idropnews.com##.post_sponsorship +ultrabookreview.com##.postzzif3 +redketchup.io##.potato_sticky +redketchup.io##.potato_viewer +apartmenttherapy.com##.pov_recirc__ad +power987.co.za##.power-leader-board-center +thecoinrise.com##.pp_ad_block +theportugalnews.com##.ppp-banner +theportugalnews.com##.ppp-inner-banner +hockeypatrol.com##.ppuubb_1 +oneesports.gg##.pr-sm-4 +hindustantimes.com##.pramotedWidget +protrumpnews.com##.pre-announcement +birdsandblooms.com,familyhandyman.com,rd.com,tasteofhome.com,thehealthy.com##.pre-article-ad +vinepair.com##.pre-footer-ad-container +breakingdefense.com##.pre-footer-menu +sassymamahk.com##.pre_header_widget +anfieldwatch.co.uk##.prem-gifts +banjohangout.org,fiddlehangout.com,flatpickerhangout.com,mandohangout.com,resohangout.com##.premiere-sponsors +pixabay.com##.present-g-item +bangpremier.com##.presentation-space +bangpremier.com##.presentation-space-m-panel +outsideonline.com##.prestitial-ad +manutd.com##.primary-header-sponsors +economictimes.indiatimes.com##.primeDW +tech.hindustantimes.com##.primeDay +advfn.com##.primis-container +astrology.com##.primis-video-module-horoscope +dicebreaker.com,rockpapershotgun.com##.primis_wrapper +bostonagentmagazine.com##.prm1_w +infoq.com##.prmsp +setlist.fm##.prmtnMbanner +setlist.fm##.prmtnTop +computerweekly.com##.pro-downloads-home +prosettings.net##.pro-placement +kompass.com##.prodListBanner +ecosia.org##.product-ads-carousel +junosearch.net##.product-connexity-slideshow +indiatimes.com##.product-cont +g2.com##.product-head__leads +bestbuy.com##.product-list-sponsored-wrapper-grid-view +cnn.com##.product-offer-card-container_related-products +letsgodigital.org##.product__wrapper +womansworld.com##.products-carousel-video__wrapper___2hfhX +nymag.com##.products-package +nymag.com##.products-package_single +kohls.com##.products_grid.sponsored-product +amtraktrains.com,homebrewtalk.com,kitchenknifeforums.com##.productslider +filehippo.com##.program-actions-header__promo +filehippo.com##.program-description__slot +programmerhumor.io##.programmer-essentials-widget +8days.sg,channelnewsasia.com##.programtic-ads +as.com,gokunming.com##.prom +delicious.com.au,taste.com.au##.prom-header +babynamegenie.com,comparitech.com,ecaytrade.com,nbcbayarea.com,overclock3d.net,planetsourcecode.com,varsity.com,w3techs.com,wgxa.tv##.promo +setapp.com,thesaturdaypaper.com.au##.promo-banner +winscp.net##.promo-block +centris.ca,forums.minecraftforge.net,leaked.cx,nextdoor.com,staradvertiser.com,uploadvr.com##.promo-container +texasmonthly.com##.promo-in-body +federalnewsnetwork.com,texasmonthly.com##.promo-inline +spin.com##.promo-lead +coveteur.com##.promo-placeholder +ecaytrade.com##.promo-processed +defenseone.com##.promo-rail-img-container +iptv.playtorrio.xyz##.promo-sidebar +texasmonthly.com##.promo-topper +lawandcrime.com##.promo-unit +comedy.co.uk##.promo-wrapper +texasmonthly.com##.promo__vertical +uxmatters.com##.promo_block +reviversoft.com##.promo_dr +macworld.com##.promo_wrap +core77.com##.promo_zone +fool.com##.promobox-container +thedailydigest.com##.promocion_celda +canstar.com.au,designspiration.com,investors.com,propertyguru.com.sg##.promoted +twitter.com,x.com##.promoted-account +andoveradvertiser.co.uk,asianimage.co.uk,autoexchange.co.uk,barryanddistrictnews.co.uk,basingstokegazette.co.uk,bicesteradvertiser.net,borehamwoodtimes.co.uk,bournemouthecho.co.uk,braintreeandwithamtimes.co.uk,brentwoodlive.co.uk,bridgwatermercury.co.uk,bridportnews.co.uk,bromsgroveadvertiser.co.uk,bucksfreepress.co.uk,burnhamandhighbridgeweeklynews.co.uk,burytimes.co.uk,chardandilminsternews.co.uk,chelmsfordweeklynews.co.uk,chesterlestreetadvertiser.co.uk,clactonandfrintongazette.co.uk,cotswoldjournal.co.uk,cravenherald.co.uk,dailyecho.co.uk,darlingtonandstocktontimes.co.uk,dorsetecho.co.uk,dudleynews.co.uk,ealingtimes.co.uk,echo-news.co.uk,enfieldindependent.co.uk,eppingforestguardian.co.uk,eveshamjournal.co.uk,falmouthpacket.co.uk,freepressseries.co.uk,gazette-news.co.uk,gazetteherald.co.uk,gazetteseries.co.uk,guardian-series.co.uk,halesowennews.co.uk,halsteadgazette.co.uk,hampshirechronicle.co.uk,harrowtimes.co.uk,harwichandmanningtreestandard.co.uk,heraldseries.co.uk,herefordtimes.com,hillingdontimes.co.uk,ilkleygazette.co.uk,keighleynews.co.uk,kidderminstershuttle.co.uk,knutsfordguardian.co.uk,lancashiretelegraph.co.uk,ledburyreporter.co.uk,leighjournal.co.uk,ludlowadvertiser.co.uk,maldonandburnhamstandard.co.uk,malverngazette.co.uk,messengernewspapers.co.uk,milfordmercury.co.uk,newsshopper.co.uk,northwichguardian.co.uk,oxfordmail.co.uk,penarthtimes.co.uk,redditchadvertiser.co.uk,redhillandreigatelife.co.uk,richmondandtwickenhamtimes.co.uk,runcornandwidnesworld.co.uk,salisburyjournal.co.uk,somersetcountygazette.co.uk,southwalesargus.co.uk,southwalesguardian.co.uk,southwestfarmer.co.uk,stalbansreview.co.uk,sthelensstar.co.uk,stourbridgenews.co.uk,surreycomet.co.uk,swindonadvertiser.co.uk,theargus.co.uk,theboltonnews.co.uk,thenational.scot,thenorthernecho.co.uk,thescottishfarmer.co.uk,thetelegraphandargus.co.uk,thetottenhamindependent.co.uk,thewestmorlandgazette.co.uk,thurrockgazette.co.uk,times-series.co.uk,wandsworthguardian.co.uk,warringtonguardian.co.uk,watfordobserver.co.uk,westerntelegraph.co.uk,wharfedaleobserver.co.uk,wiltsglosstandard.co.uk,wiltshiretimes.co.uk,wimbledonguardian.co.uk,wirralglobe.co.uk,witneygazette.co.uk,worcesternews.co.uk,yorkpress.co.uk,yourlocalguardian.co.uk##.promoted-block +justwatch.com##.promoted-buybox +azoai.com,azobuild.com,azocleantech.com,azolifesciences.com,azom.com,azomining.com,azonano.com,azooptics.com,azoquantum.com,azorobotics.com,azosensors.com##.promoted-item +imdb.com##.promoted-provider +reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##.promotedlink:not([style^="height: 1px;"]) +racingtv.com,twitter.com,wral.com,x.com##.promotion +eetimes.eu##.promotion-block-wrapper +wien.info##.promotion-footer +actionnetwork.com##.promotion-table +ipfighter.com##.promotion_promotion__08xl_ +bostonreview.net##.promotop +insauga.com##.proper-content-dynamic +highspeedinternet.com##.provider-ads +vecteezy.com##.prtnr-sponsored-results +cricket365.com,football365.com,golf365.com,loverugbyleague.com,planetf1.com,planetfootball.com,planetrugby.com,teamtalk.com,tennis365.com##.ps-block-a +indiabusinessjournal.com##.pt--20 +kathmandupost.com##.pt-0 +steamladder.com##.pt-large +getyarn.io##.pt3p > div +1980-games.com,coleka.com,gameslol.net,theportugalnews.com,tolonews.com##.pub +starsinsider.com##.pub-container +yabiladi.com##.pub2 +helis.com##.pub23_all +fsolver.com##.pubCLS2 +gameslol.net##.pubGside +navalnews.com##.pubLateral +gameslol.net,yabiladi.com##.pub_header +devhints.io##.pubbox +as.com,desdelinux.net,tutiempo.net,ubunlog.com##.publi +surinenglish.com##.publiTop +catholic.net##.publicidad +eitb.eus##.publicidad_cabecera +eitb.eus##.publicidad_robapaginas +justetf.com##.publift-ad-container +rvtrader.com##.publift-ad-footer +weatherzone.com.au##.publift-ad-wrapper +online-stopwatch.com##.publift-div +online-stopwatch.com##.publift-unfixed +text-compare.com##.publiftDiv +101soundboards.com##.publift_in_content_1 +101soundboards.com##.publift_in_content_2 +decisiondeskhq.com##.publirAds +dailymail.co.uk##.puff_pastel +speedtest.net##.pure-u-custom-ad-rectangle +speedtest.net##.pure-u-custom-wifi-recommendation +appleinsider.com##.push +2conv.com##.push-offer +pricecharting.com##.pw-leaderboard +giantfreakinrobot.com##.pw-leaderboard-atf-container +giantfreakinrobot.com##.pw-leaderboard-btf-container +giantfreakinrobot.com##.pw-med-rect-atf-container +giantfreakinrobot.com##.pw-med-rect-btf-container +breakingnews.ie,canberratimes.com.au,theland.com.au##.py-2.bg-gray-100 +fastcompany.com##.py-8 +onlyinyourstate.com##.py-8.md\:flex +pymnts.com##.pymnt_ads +euronews.com##.qa-dfpLeaderBoard +infoq.com##.qcon_banner +thegatewaypundit.com##.qh1aqgd +revolution935.com##.qt-sponsor +coingape.com,townflex.com##.quads-location +surfline.com##.quiver-google-dfp +dagens.com##.r-1 +allthatsinteresting.com##.r-11rk87y +dagens.com##.r-3 +dagens.com##.r-6 +letour.fr##.r-rentraps +tgstat.com##.r1-aors +joins.com,kmplayer.com##.r_banner +bollywoodshaadis.com##.r_t_ad +check-host.net##.ra-elative +linuxtopia.org##.raCloseButton +attheraces.com##.race-nav-plus-ad__ad +time.is##.rad +w3newspapers.com##.rads +theparisreview.org##.rail-ad +bookriot.com##.random-content-pro-wrapper +dappradar.com##.rankings-ad-row +rappler.com##.rappler-ad-container +benzinga.com##.raptive-ad-placement +groovypost.com##.raptive-content-1 +groovypost.com##.raptive-content-end +wdwmagic.com##.raptive-custom-sidebar1 +atlantablackstar.com,finurah.com,theshadowleague.com##.raptive-ddm-header +benzinga.com##.raptive-header-banner +leagueofgraphs.com##.raptive-log-sidebar +epicdope.com##.raptive-placeholder-below-post +epicdope.com##.raptive-placeholder-header +salon.com##.raptive-salon-content +salon.com##.raptive-salon-header +gobankingrates.com##.rate-table-header +dartsnews.com,tennisuptodate.com##.raw-html-component +mydorpie.com##.rbancont +forebet.com##.rbannerDiv +reverso.net##.rcacontent +bookriot.com##.rcp-wrapper +birminghammail.co.uk,bristolpost.co.uk,dailyrecord.co.uk,irishstar.com,liverpoolecho.co.uk,manchestereveningnews.co.uk,stokesentinel.co.uk,walesonline.co.uk##.react-loading-skeleton +just-dice.com##.realcontent +advfn.com##.recent-stocks-sibling +foodnetwork.com##.recipe-bigbox +tasteofhome.com##.recipe-ingredients-ad-wrapper +bettycrocker.com##.recipeAd +forbes.com##.recirc-right-rail +goodmorningamerica.com##.recirculation-module +pride.com##.recirculation__placeholder--latest +videocelebs.net##.recl +ixbt.games##.recommend-c +nzherald.co.nz##.recommended-articles > .recommended-articles__heading +streamtvinsider.com##.recommended-content +cined.com##.recommended-course-card +slashgear.com##.recommended-heading +womansworld.com##.recommended-posts +forestriverforums.com##.recommended-stories +theglobeandmail.com##.recommender-wrapper +last.fm##.recs-feed-item--ad +anisearch.com##.rect_sidebar +zerohedge.com##.rectangle-large +knowyourmeme.com##.rectangle-unit-wrapper +taskandpurpose.com,twz.com##.recurrent-inline-leaderboard +redferret.net##.redfads +latv.com##.reduced-ad-space +arras.io##.referral +al-monitor.com##.region--after-content +middleeasteye.net##.region-before-navigation +road.cc##.region-leaderboard +steveharveyfm.com##.region-recommendation-right +mrctv.org##.region-sidebar +weather.com##.regionStickyAds +futbol24.com##.rek +ilsole24ore.com##.rel--brandconn +cyclingnews.com##.related-articles-wrap +idropnews.com##.related-posts +timesofindia.indiatimes.com##.relatedVideoWrapper +esports.gg##.relative.esports-inarticle +cyberscore.live##.relative.flex.h-\[130px\].w-full.items-center.justify-center.overflow-hidden.rounded-\[4px\].bg-gradient-to-r.from-\[\#142428\].to-\[\#2D150E\].p-\[15px_260px\].nb\:p-\[15px_170px\].tb\:p-\[15px_80px\].mb\:h-auto.mb\:min-h-\[138px\].mb\:from-\[\#2D150E\].mb\:to-\[\#381A11\].mb\:p-\[15px_135px_15px_15px\] +cyberscore.live##.relative.grid.h-\[168px\].grid-cols-\[1fr_300px_1fr\].gap-\[5px\].overflow-hidden.rounded-\[4px\].border.border-solid.border-color3.nb\:h-\[150px\].nb\:grid-cols-\[1fr_270px_1fr\].tb\:h-\[136px\].tb\:grid-cols-\[1fr_220px_1fr\].mb\:flex.mb\:h-auto.mb\:flex-col.mb\:items-center.mb\:justify-center.mb\:gap-\[5px\].mb\:p-\[10px_15px_20px_15px\] +astrozop.com##.relative.z-5 +miragenews.com##.rem-i-s +4shared.com##.remove-rekl +boldsky.com,mykhel.com##.removeStyleAd +livemint.com##.renderDeskAi +khaleejtimes.com##.rendered_board_widget +runningmagazine.ca##.repeater-bottom-leaderboard +bbjtoday.com##.replacement +thepricer.org##.reserved-ad-slot +m.tribunnews.com##.reserved-topmedium +holiday-weather.com##.resp-leaderboard +box-core.net,mma-core.com##.resp_ban +arras.io##.respawn-banner +guru99.com##.responsive-guru99-mobile1 +championmastery.gg##.responsiveAd +thetimes.com##.responsive__InlineAdWrapper-sc-4v1r4q-14 +riderfans.com##.restore.widget-content +duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##.result--ad > .result__body +jetphotos.com##.result--adv +myminifactory.com##.result-adv +immoweb.be##.result-section--ads +word.tips##.result-top-ad +word.tips##.result-words-ad +word.tips##.result-words-ad-new +classifiedads.com##.resultmarg +inchcalculator.com##.results-ad-container-outer +infobel.com##.results-bottom-banner-container +infobel.com##.results-middle-banner-container +infobel.com##.results-top-banner-container +autotrader.com.au##.resultsGrid--halfpage-0 +curseforge.com##.rev-container +utahgunexchange.com##.rev_slider_wrapper +seattletimes.com##.revcontent__around-the-web +al.com,cleveland.com,lehighvalleylive.com,masslive.com,mlive.com,newyorkupstate.com,oregonlive.com,pennlive.com,silive.com,syracuse.com##.revenue-display +therailwayhub.co.uk##.revive +planetizen.com##.revive-sitewide-banner-2__wrapper +planetizen.com##.revive-sitewide-banner__wrapper +nordstrom.com##.revjet_container +crypto.news##.rexas-presale +hindustantimes.com##.rgtAdSection +websitedown.info##.rgtad +indianexpress.com##.rhs-banner-carousel +cnbctv18.com##.rhs-long-ad +firstpost.com##.rhs-tp-ad +dailyo.in##.rhsAdvertisement300 +moneycontrol.com##.rhs_banner_300x34_widget +cnbctv18.com##.rhstaboola +siteslike.com##.rif +terminal.hackernoon.com##.right +cnbctv18.com##.right-ad-amp +mathgames.com##.right-ad-override +news.net##.right-banner-wr > .right +countrylife.co.uk,cyclingweekly.com##.right-hand-adunit +africanews.com##.right-legend +essentialenglish.review##.right-panel +dl.acm.org##.right-rail-ads +jta.org##.right-rail-container +businessinsider.com##.right-rail-min-height-250 +medpagetoday.com##.right-rail-panel +supplychainbrain.com##.right-rail-sponsors +businessday.co.za##.right-rail__ad +jpost.com##.right-side-banner +businesstoday.in##.right-side-tabola +livemint.com##.rightAdNew +babycenter.com##.rightRailSegment +republicworld.com##.rightVerticleAd +boomlive.in##.right_ad_4 +gamemodding.com##.right_banner +softicons.com##.right_ga +thehansindia.com##.right_level_7 +theportalist.com##.right_rail_add +videohelp.com##.rightbanner +livemint.com##.rightblockAd +footballdb.com##.rightcol_ad +leaf.tv##.rightrail-display-ad +thenationalherald.com##.rightside-add +smartasset.com##.riklam-container +ip.sb##.rivencloud_ads +golfdigest.com##.river-ad-full +flagpedia.net##.rklm +rocket-league.com##.rlg-footer-ads-container +rocket-league.com##.rlg-trading-ad +rocket-league.com##.rlg-trading-spacer +costco.com##.rm-grid-product +rawstory.com##.rm-sticky-parent +chemistwarehouse.com.au##.rm__campaign-product__slider-item +windowsreport.com##.rmdcb +indiatimes.com##.rmfp +sephora.com##.rmn-banner +realitytea.com##.roadblock +surinenglish.com##.roba +cults3d.com##.robots-nocontent +boxrox.com##.rolling-mrt +law.justia.com##.rotating-leads +beforeitsnews.com##.rotating_text_link +superhumanradio.net##.rotating_zone +atalayar.com##.rotulo-publi +flightconnections.com##.route-display-box +politicshome.com##.row--ad +nme.com##.row-mobile-billboard +elnacional.cat##.row-top-banner +steamanalyst.com##.row.tpbcontainer +bikechatforums.com##.row2[style="padding: 5px;"] +onlineocr.net##.row[style*="text-align:right"] +rasmussenreports.com##.rr-ad-image +jdpower.com##.rrail__ad-wrap +wikihow.com##.rrdoublewrap +freewebarcade.com##.rsads +gamertweak.com##.rsgvqezdh-container +box-core.net,mma-core.com##.rsky +ringsidenews.com##.rsn-laai-ad +voxelmatters.com##.rss-ads-orizontal +rswebsols.com##.rsws_banner_sidebar +mykhel.com##.rt-top-ad +gulfnews.com##.rtH17 +nextofwindows.com##.rtsidebar-cm +roadtovr.com##.rtvr_under_feature_ad +nanoreview.net##.rtx_3_desktop +run247.com##.run24-300x250-in-post +run247.com##.run24-content +softonic.com##.rv-di-modal__label +softonic.com##.rv-di-step__body +softonic.com##.rv-di-step__container +softonic.com##.rv-di-step__section-container +freewebarcade.com##.rxads +freewebarcade.com##.rxse +aerotime.aero##.s-banner +bigskyconf.com##.s-sponsors +hope1032.com.au##.s-supported-by +japantoday.com##.s10r +nodejs.libhunt.com##.saashub-ad +steamladder.com##.salad +takeuforward.org##.sales-timer-banner +9gag.com##.salt-section +9gag.com##.salt-wrapper +sherbrookerecord.com##.sam-pro-container +softonic.com##.sam-slot +f95zone.to##.samAlignCenter +afflift.com,audi-sport.net,beermoneyforum.com,birdforum.net,clubsearay.com,forums.sailinganarchy.com,rawdogsports.com,skitalk.com,sportfishingbc.com,studentdoctor.net##.samBannerUnit +audi-sport.net,emtbforums.com,forums.bluemoon-mcfc.co.uk,overtake.gg,resetera.com,satelliteguys.us##.samCodeUnit +beermoneyforum.com##.samTextUnit +anime-sharing.com,forums.bluemoon-mcfc.co.uk##.samUnitWrapper +netweather.tv##.samsad-Leaderboard2 +teamfortress.tv##.sau +point2homes.com##.saved-search-banner-list +thebudgetsavvybride.com##.savvy-target +pcgamesn.com##.saw-wrap +tvtropes.org##.sb-fad-unit +animehub.ac##.sb-subs +sabcsport.com##.sbac_header_top_ad +mindbodygreen.com##.sc-10p0iao-0 +news.bitcoin.com##.sc-cpornS +scotsman.com##.sc-igwadP +samsclub.com##.sc-plp-cards-vast-ad +sankakucomplex.com##.scad +soyacincau.com##.scadslot-widget +bangordailynews.com##.scaip +newindianexpress.com##.scc +radiotimes.com##.schedule__row-list-item-advert +fantasyalarm.com##.scoreboard +hentaihaven.icu,hentaihaven.xxx,hentaistream.tv,nhentai.io##.script_manager_video_master +lethbridgenewsnow.com##.scroller +cyclinguptodate.com,tennisuptodate.com##.sda +userscript.zone##.searcad +chemistwarehouse.com.au##.search-product--featured +dryicons.com##.search-related__sponsored +tempest.com##.search-result-item--ad +alibaba.com##.searchx-offer-item[data-aplus-auto-offer*="ad_adgroup_toprank"] +minecraftservers.org##.second-banner +businesstoday.in##.secondAdPosition +finextra.com##.section--minitextad +finextra.com##.section--mpu +wbur.org##.section--takeover +morningstar.com.au##.section-adzone +morningstar.com.au##.section-container--ads__2 +morningstar.com.au##.section-container--ads__3 +bmj.com##.section-header +nzherald.co.nz##.section-iframe +lawinsider.com##.section-inline-partner-ad +tvarticles.me##.section-post-about +thesun.co.uk##.section-sponsorship-wrapper-article +thesun.co.uk##.section-sponsorship-wrapper-section +seattlepride.org##.section_sponsorship +brandsoftheworld.com##.seedling +searchenginejournal.com##.sej-hello-bar +searchenginejournal.com##.sej-ttt-link +thedrive.com##.sellwild-container +timesofisrael.com##.sellwild-label +hypestat.com##.sem_banner +jambase.com##.sense +find-searcher.com,findresultshere.com,netresultshq.com,netsearchinstant.com,quickresultshq.com,realtimesearchresults.com,resultslandersearch.com,search-nowglobal.com,searchnowexpert.com##.serp-common-top +find-searcher.com,findresultshere.com,netresultshq.com,netsearchinstant.com,quickresultshq.com,realtimesearchresults.com,resultslandersearch.com,search-nowglobal.com,searchnowexpert.com##.serp-head +find-searcher.com,findresultshere.com,netresultshq.com,netsearchinstant.com,quickresultshq.com,realtimesearchresults.com,resultslandersearch.com,search-nowglobal.com,searchnowexpert.com##.serp-side-right +searchencrypt.com##.serp__top-ads +minecraftforum.net##.server-forum-after-comment-ad +gadgethacks.com##.set-placement-height +save-editor.com##.set_wrapper +bravenewcoin.com##.sevio-ad-wrapper +minerstat.com##.sevioads +sportbusiness.com##.sf-taxonomy-body__advert-container +songfacts.com##.sf_leaderboard_2025 +pressdemocrat.com##.sfb2024-section__ad +troypoint.com##.sgpb-popup-dialog-main-div-wrapper +analyticsinsight.net,moviedokan.lol,shortorial.com,troypoint.com##.sgpb-popup-overlay +stockhouse.com##.sh-ad +soaphub.com##.sh-sh_belowpost +soaphub.com##.sh-sh_inpost_1 +soaphub.com##.sh-sh_inpost_2 +soaphub.com##.sh-sh_inpost_3 +soaphub.com##.sh-sh_inpost_4 +soaphub.com##.sh-sh_inpost_5 +soaphub.com##.sh-sh_inpost_6 +soaphub.com##.sh-sh_postlist_2_home +mentalfloss.com##.shadow-header.z-40 +themeforest.net##.shared-global_footer-cross_sell_component__root +bestbuy.com##.shop-dedicated-sponsored-carousel +bestbuy.com##.shop-pushdown-ad +stokesentinel.co.uk##.shop-window[data-impr-tracking="true"] +intouchweekly.com,lifeandstylemag.com,usmagazine.com##.shop-with-us__container +rebelnews.com##.shopify-buy-frame +instacart.com##.shoppable-list-a-las2t7 +hypebeast.com##.shopping-break-container +usmagazine.com##.shopping-button__simple +indiatoday.in##.shopping__widget +junosearch.net##.shopping_pole-bing +citychicdecor.com##.shopthepost-widget +mirror.co.uk##.shopwindow-adslot +mirror.co.uk,themirror.com##.shopwindow-advertorial +chess.com##.short-sidebar-ad-component +axios.com##.shortFormNativeAd +pidevex.com##.shortcut-ai-bnr +wired.com##.should-hold-space +tri247.com##.show-ad +fool.com##.show-ad-label +siliconrepublic.com##.show-for-medium-up +spacenews.com##.show-street-dialog +thepointsguy.com##.showBb +nagpurtoday.in##.shrcladv +mbauniverse.com##.shriresume-logo +seeklogo.com##.shutterBannerWp +tineye.com##.shutterstock-similar-images +cartoq.com##.side-a +chaseyoursport.com##.side-adv-block-blog-open +agar.live,news.am##.side-banner +setapp.com##.side-scrolling__banner +idropnews.com##.side-title-wrap +vpnmentor.com##.side-top-vendors-wrap +pr0gramm.com##.side-wide-skyscraper +seeklogo.com##.sideAdsWp +israelnationalnews.com##.sideInf +freeseotoolbox.net##.sideXd +thefastmode.com##.side_ads +uquiz.com##.side_bar +panarmenian.net##.side_panner +supermarketnews.co.nz,tutorialrepublic.com##.sidebar +maison-et-domotique.com##.sidebar .widget_media_image +coincodex.com##.sidebar-4skyscraper +jayisgames.com##.sidebar-ad-top +autoguide.com,motorcycle.com##.sidebar-ad-unit +movieinsider.com##.sidebar-ad300 +kanogoma.com##.sidebar-aside +dailycoffeenews.com##.sidebar-box +coingape.com##.sidebar-btn-container +ixbt.games##.sidebar-c +makeuseof.com,polygon.com##.sidebar-default +nfcw.com##.sidebar-display +thehustle.co##.sidebar-feed-trends +makeuseof.com,military.com##.sidebar-first +gameflare.com##.sidebar-game +lawandcrime.com,mediaite.com##.sidebar-hook +spearswms.com##.sidebar-mpu-1 +boatnews.com##.sidebar-p +middleeasteye.net##.sidebar-photo-extend +domainnamewire.com##.sidebar-primary +libhunt.com##.sidebar-promo-boxed +davidwalsh.name##.sidebar-sda-large +ldjam.com##.sidebar-sponsor +abovethelaw.com##.sidebar-sponsored +azoai.com,azobuild.com,azocleantech.com,azolifesciences.com,azom.com,azomining.com,azonano.com,azooptics.com,azoquantum.com,azorobotics.com,azosensors.com,insidehpc.com##.sidebar-sponsored-content +hypebeast.com##.sidebar-spotlights +proprivacy.com##.sidebar-top-vpn +mobilesyrup.com##.sidebarSponsoredAd +pbs.org##.sidebar__logo-pond +hepper.com##.sidebar__placement +abovethelaw.com,breakingdefense.com,medcitynews.com##.sidebar__top-sticky +snopes.com##.sidebar_ad +pcgamesn.com##.sidebar_affiliate_disclaimer +bxr.com##.sidebar_promo +alternet.org##.sidebar_sticky_container +macrumors.com##.sidebarblock +macrumors.com##.sidebarblock2 +linuxize.com##.sideblock +dbknews.com##.sidekick-wrap +kit.co##.sidekit-banner +linuxtopia.org##.sidelinks > .sidelinks +thespike.gg##.siderail_ad_right +classicalradio.com,jazzradio.com,radiotunes.com,rockradio.com,zenradio.com##.sidewall-ad-component +wncv.com##.simple-image +metalsucks.net##.single-300-insert +lgbtqnation.com##.single-bottom-ad +9to5mac.com##.single-custom-post-ad +geoawesome.com##.single-post__extra-info +abovethelaw.com##.single-post__sponsored-post--desktop +policyoptions.irpp.org##.single__ad +nypost.com##.single__outbrain +mixonline.com,radioworld.com##.site-ad +arcadeheroes.com##.site-advertisement +gg.deals##.site-banner-top-widget +deshdoaba.com##.site-branding +winaero.com##.site-content > div > p[style="margin: 22px"] +archaeology.org##.site-header__iykyk +jdpower.com##.site-top-ad +dailycoffeenews.com##.site-top-ad-desktop +macys.com##.siteMonetization +warcraftpets.com##.sitelogo > div +garagejournal.com##.size-full.attachment-full +newsnext.live##.size-large +garagejournal.com##.size-medium +canadianbusiness.com,torontolife.com##.sjm-dfp-wrapper +sportskeeda.com##.sk-promotional-banner +pinkvilla.com##.skinnerAd +entrepreneur.com##.sky +edarabia.com##.sky-600 +flightrising.com##.skybanner +govexec.com##.skybox-item-sponsored +cbssports.com##.skybox-top-wrapper +cheese.com,datpiff.com,gtainside.com##.skyscraper +plos.org##.skyscraper-container +lowfuelmotorsport.com,newsnow.co.uk##.skyscraper-left +lowfuelmotorsport.com##.skyscraper-right +singaporeexpats.com##.skyscrapers +everythingrf.com,futbol24.com##.skyscrapper +myfoodbook.com.au##.slick--optionset--mfb-banners +as.com##.slider-producto +punchline-gloucester.com##.slideshow +inbox.com##.slinks +airdriecityview.com,bowenislandundercurrent.com,coastreporter.net,cochraneeagle.ca,delta-optimist.com,moosejawtoday.com,nsnews.com,piquenewsmagazine.com,princegeorgecitizen.com,prpeak.com,richmond-news.com,rmoutlook.com,sasktoday.ca,squamishchief.com,stalbertgazette.com,thealbertan.com,townandcountrytoday.com,vancouverisawesome.com,westerninvestor.com,westernwheel.ca##.slot +iheartradio.ca##.slot-topNavigation +ft.com##.slot-wrapper +independent.ie##.slot1 +independent.ie##.slot4 +boxofficemojo.com,imdb.com##.slot_wrapper +drivereasy.com##.sls_pop +sltrib.com##.sltrib_medrec_sidebar_atf +skinnyms.com##.sm-above-header +dermatologytimes.com##.sm\:w-\[728px\] +bikeexif.com##.small +dutchnews.nl##.small-add-block +numuki.com##.small-banner-responsive-wrapper +startup.ch##.smallbanner +food.com##.smart-aside-inner +food.com##.smart-rail-inner +watchinamerica.com##.smartmag-widget-codes +pressdemocrat.com##.smiPlugin_rail_ad_widget +secretchicago.com##.smn-new-gpt-ad +pcgamesn.com,pockettactics.com,wargamer.com##.sn-placement +rugby365.com##.snack-container +foottheball.com,small-screen.co.uk##.snackStickyParent +pcgamesn.com,pockettactics.com,wargamer.com##.snigel_ad +dailyevergreen.com##.sno-hac-desktop-1 +khmertimeskh.com##.so-widget-sow-image +u.today##.something +u.today##.something--fixed +u.today##.something--wide +bloomingdales.com##.sortable-grid-monetization-items +macys.com##.sortable-grid-sponsored-items +greatandhra.com##.sortable-item_top_add123 +macys.com##.sortablegrid-product.featured-item +greatandhra.com##.source-image-left +greatandhra.com##.source-image-right +salary.com##.sovrn-content-research +salary.com##.sovrn-content-wide +salary.com##.sovrn-leaderboard +khmertimeskh.com##.sow-slider-image +freeonlineapps.net##.sp +coincarp.com##.sp-down +watchsports.to##.sp-promo-card +freebusinessapps.net##.sp-res +semiengineering.com##.sp_img_div +academickids.com##.spacer150px +ontvtonight.com##.spacerRow +quora.com##.spacing_log_question_page_ad +nationaltoday.com##.sphinx-popup--16 +informer.com##.spnsd +sundayworld.co.za##.spnsorhome +coincarp.com##.spo-btn +worldtimezone.com##.spon-menu +danmurphys.com.au##.sponserTiles +andrewlock.net,centos.org,domainincite.com,europages.co.uk,gamingcloud.com,ijr.com,kpbs.org,manutd.com,phillyvoice.com,phish.report,speedcafe.com,thegatewaypundit.com,topsurgery.net,ufile.io,westernjournal.com,wnd.com##.sponsor +onthisday.com##.sponsor--center +onthisday.com##.sponsor--footer +followstalker.com##.sponsor-ad +cssbattle.dev##.sponsor-container +dallasinnovates.com##.sponsor-footer +wralsportsfan.com##.sponsor-label +jquery.com##.sponsor-line +newsroom.co.nz##.sponsor-logos2 +fimfiction.net##.sponsor-reminder +compellingtruth.org##.sponsor-sidebar +cricketireland.ie##.sponsor-strip +arizonasports.com,ktar.com##.sponsorBy +blbclassic.org##.sponsorZone +turtlecute.org##.sponsor_banner_wrap +enginehub.org##.sponsorbox +smartasset.com##.sponsorcalc-wrapper +caixinglobal.com,chicagobusiness.com,clinicaltrialsarena.com,dailymaverick.co.za,dailytarheel.com,duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion,dunyanews.tv,fifplay.com,freebmd.org.uk,hbr.org,lawandcrime.com,libhunt.com,motherjones.com,naval-technology.com,reviewjournal.com,saashub.com,samedicalspecialists.co.za,sportsbusinessjournal.com,statnews.com,stocksnap.io,thedp.com,timeslive.co.za##.sponsored +newegg.com##.sponsored-brands +crypto.news##.sponsored-button-group +cheknews.ca##.sponsored-by +androidcentral.com,gamesradar.com,guitarworld.com,livescience.com,pcgamer.com,sltrib.com,space.com,techradar.com,tomsguide.com,tomshardware.com,windowscentral.com##.sponsored-card +countrylife.co.uk,cyclingweekly.com,livescience.com,livingetc.com,t3.com,womanandhome.com##.sponsored-card-centred +washingtontimes.com##.sponsored-heading +itweb.co.za##.sponsored-highlights +breakingdefense.com##.sponsored-inline +freesvg.org##.sponsored-main-detail +fitandwell.com,homesandgardens.com,idealhome.co.uk,marieclaire.com##.sponsored-post--placeholder +dermstore.com,lookfantastic.com##.sponsored-product-plp +rs-online.com##.sponsored-products +crn.com##.sponsored-resources +coincarp.com##.sponsored-td +search.brave.com##.sponsored-unit_wrapper +coingecko.com##.sponsored-v2 +tech.hindustantimes.com##.sponsoredBox +coinmarketcap.com##.sponsoredMark +lookfantastic.com##.sponsoredProductsList +circleid.com##.sponsoredTopicCard +mynorthwest.com##.sponsored_block +thenextweb.com##.sponsored_legal +hannaford.com##.sponsored_product +canadiantire.ca##.sponsoredproductcarousel +meijer.com##.sponsoredproducts +ar15.com,armageddonexpo.com,audiforums.com,f1gamesetup.com,ferrarichat.com,ford-trucks.com,hotrodhotline.com,jaguarforums.com,pypi.org,smashingmagazine.com,thebugle.co.za,wbal.com,webtorrent.io##.sponsors +vuejs.org##.sponsors-aside-text +foojay.io##.sponsors-block +salixos.org##.sponsors-container +libhunt.com##.sponsors-list-content +petri.com##.sponsorsInline +newswiretoday.com,przoom.com##.sponsortd +sportsspectrum.com##.sport-target +alexandriagazette.com,arlingtonconnection.com,burkeconnection.com,centre-view.com,coincost.net,connection-sports.com,fairfaxconnection.com,fairfaxstationconnection.com,greatfallsconnection.com,herndonconnection.com,mcleanconnection.com,mountvernongazette.com,phonearena.com,potomacalmanac.com,reston-connection.com,springfieldconnection.com,viennaconnection.com##.spot +phonearena.com##.spot-sticky-container +naturalblaze.com##.spot_between_posts +helpnetsecurity.com##.spotlight +bestbuy.com##.spotlight-ad +programmerhumor.io##.spotlight-widget +darwintube.com##.spots +freepik.com##.spr-adblock +freepik.com##.spr-plc +gemoo.com##.sprtadv +collive.com##.spu-bg +collive.com,strategicenergy.eu##.spu-box +motorauthority.com##.sq-block +ftvlive.com##.sqs-block-image-link +nutritioninsight.com,packaginginsights.com##.squarblk +autoaction.com.au,royalroad.com,snokido.com##.square +digitimes.com##.square-ad +mobygames.com##.square-ad-wrapper +2conv.com,flvto.biz,flvto.com.mx##.square-area +getmyuni.com##.squareDiv +cathstan.org##.squat +yodobashi.com##.srcResultPromotionItem +ebay.co.uk,ebay.com,ebay.com.au##.srp-1p__link +theblueoceansgroup.com##.ss-on-media-container +searchenginejournal.com##.sss2_sllo_o3 +aupetitparieur.com##.st85ip42z1v3x +talksport.com##.stack-recirc--ad-slot +talksport.com##.stack-recirc--item--ad-slot +cnn.com##.stack__ads +overclock3d.net##.stage-sidebar-3 +barrons.com##.standard__AdWrapper-sc-14sjre0-6 +gameworldobserver.com##.start-popup +geoguessr.com##.start__display-ad +cvs.com##.stencil-criteo-shelf +bostonglobe.com##.stick_1200--tablet +ar15.com##.stickers +kathmandupost.com##.sticky--bottom +healthing.ca##.sticky-ad-spacer-desktop +religionnews.com##.sticky-ad-white-space +bmwblog.com##.sticky-ad-widget-container +rugbyonslaught.com##.sticky-add +thenationonlineng.net##.sticky-advert +gr8.cc,psycatgames.com##.sticky-banner +yandex.com##.sticky-banner-container +gbnews.com##.sticky-banner-wrapper +note.nkmk.me##.sticky-block +pastpapers.co##.sticky-bottom +golfmagic.com,kbb.com,thisismoney.co.uk##.sticky-container +goterriers.com##.sticky-footer +walletinvestor.com##.sticky-footer-content +babylonbee.com##.sticky-footer-image +kmzu.com##.sticky-footer-promo-container +business2community.com,military.com##.sticky-header +tampafp.com##.sticky-inside-pad +leaf.tv,sciencing.com##.sticky-leaderboard-container +fastcompany.com##.sticky-outer-wrapper +niagarathisweek.com##.sticky-parent +foxweather.com##.sticky-pre-content +foxnews.com##.sticky-pre-header +foxnews.com##.sticky-pre-header-inner +theportugalnews.com##.sticky-pub +almanac.com##.sticky-right-sidebar +thechinaproject.com##.sticky-spacer +oilcity.news##.sticky-sponsors-large +jpost.com##.sticky-top-banner +litecoin-faucet.com##.sticky-top1 +economictimes.indiatimes.com##.stickyAd +theblock.co##.stickyFooter +everythingrf.com##.stickyRHSAds +cnet.com##.stickySkyboxSpacing +defkey.com##.stickyTop +sltrib.com##.stickyTopAd +fastfoodnutrition.org##.sticky_footer +pcgamesn.com##.sticky_rail600 +minecraftlist.org##.stickywrapper +gbnews.com##.stiky_sky.left::before +gbnews.com##.stiky_sky.right::before +historyextra.com##.stitcher-ad--dai-placeholder +seattletimes.com##.stn-player +dailyherald.com##.stnContainer +stationx.net##.stnx-cta-embed +dailycoffeenews.com##.story-ad-horizontal +dailykos.com##.story-banner-ad-placeholder +nzherald.co.nz##.story-card--sponsored--headline +nzherald.co.nz##.story-card--sponsored-text-below +wccftech.com##.story-products-wrapper +stadiumtalk.com##.story-section-inStory-inline +interest.co.nz##.story-tag-wrapper +healthshots.com##.storyBlockOne +livemint.com##.storyPage_storyblockAd__r4wwE +businesstoday.in##.stoybday-ad +twitch.tv##.stream-display-ad__wrapper +24fm.ps,datingscammer.info,ihrc24x7.com,news365.co.za,royale-games.com,thedefensepost.com,xboxera.com##.stream-item +siasat.com##.stream-item-below-post-content +twitter.com,x.com##.stream-item-group-start[label="promoted"] +coinpedia.org,siasat.com##.stream-item-inline-post +conservativebrief.com##.stream-item-mag +hardwaretimes.com##.stream-item-size +how2electronics.com##.stream-item-top +siasat.com##.stream-item-widget +news365.co.za##.stream-item-widget-content +coinpedia.org,elhayat-life.com##.stream-title +open3dlab.com##.stream[style="align-items:center; justify-content:center;"] +missav78.top##.streamer-container2 +stellar.ie##.stuck +darko.audio##.studio_widget +news.stv.tv##.stv-article-gam-slot +umogames.com##.style-module_gam_container__9KUaZ +dbltap.com##.style_7z5va1-o_O-style_48hmcm-o_O-style_1ts1q2h +inyourarea.co.uk##.style_advertisementMark_1Jki4 +inyourarea.co.uk##.style_cardWrapper_ycKf8 +amazonadviser.com,apptrigger.com,arrowheadaddict.com,bamsmackpow.com,fansided.com,gamesided.com,gojoebruin.com,hiddenremote.com,lastnighton.com,mlsmultiplex.com,netflixlife.com,playingfor90.com,stormininnorman.com,winteriscoming.net##.style_k8mr7b-o_O-style_1ts1q2h +nationalrail.co.uk##.styled__StyledAdvertContainer-sc-1gkr5jr-2 +nationalrail.co.uk##.styled__StyledFreeFormAdvertWrapper-sc-7prxab-3 +nationalrail.co.uk##.styled__StyledFreeFormAdvertWrapper-sc-7prxab-4 +nationalheraldindia.com##.styles-m__dfp__3T0-C +realestate.com.au##.styles__Medrec1Container-sc-tc1w4x-0 +realestate.com.au##.styles__Medrec2Container-sc-tc1w4x-1 +thetimes.com##.styles__PromotedContentContainer-sc-1ul3b7n-3 +cifraclub.com##.styles_advertising__nZwCO +egamersworld.com##.styles_bb__hb10X +autoblog.com,meidasnews.com##.styles_container__C9F6R +politico.com##.styles_container__zuzL0 +athlonsports.com,autoblog.com,bikemag.com,bringmethenews.com,dengarden.com,mensfitness.com,mensjournal.com,parade.com,paradehomeandgarden.com,paradepets.com,pethelpful.com,powder.com,surfer.com,thespun.com,thestreet.com,travelhost.com##.styles_headerAdSlot__f4Z0n +producthunt.com##.styles_item__hNPI1 +egamersworld.com##.styles_sidebar__m6yLy +troypoint.com##.su-box +cfoc.org##.su-button-style-glass +buzzfeed.com##.subbuzz-bfp--connatix_video +complex.com##.suitcase-ad +proprivacy.com##.summary-footer-cta +monocle.com##.super-leaderboard +atalayar.com,express.co.uk,the-express.com##.superbanner +f1gamesetup.com##.supp-footer-banner +f1gamesetup.com##.supp-header-banner +f1gamesetup.com##.supp-sense-desk-large +f1gamesetup.com##.supp-sense-sidebar-box-large +f1gamesetup.com##.supp-sidebar-box +japantimes.co.jp##.supplements-binder +ocado.com##.supplierBanner +fstoppers.com##.supportImg +indiedb.com,moddb.com##.supporter +techreen.com##.svc_next_content +survivopedia.com##.svp_campaign_main +timesofmalta.com##.sw-Top +saltwire.com##.sw-banner +securityweek.com##.sw-block-webinar +securityweek.com##.sw-bulletin +securityweek.com##.sw-home-ads +swimswam.com##.swimswam-acf +khmertimeskh.com##.swiper-container-horizontal +khmertimeskh.com##.swiper-wrapper +top100token.com##.swiper_div.right-pad +disruptionbanking.com##.swp_floating_horizontal_wrapper +presearch.com##.sx-top-bar-products +html-online.com##.szekcio4 +interestingengineering.com##.t-h-\[280px\] +fiercebiotech.com##.t1-ad-slot +sbenny.com##.t3-masthead +theanalyst.com##.ta-ad +mishaptube.com##.table +ucompares.com##.tablepress-id-46 +posemaniacs.com##.tabletL\:w-\[728px\] +ndtv.com##.taboola-slot +protocol.com##.tag-sponsored +spectrum.ieee.org##.tag-type-whitepaper +ghanaweb.com##.takeover +literaryreview.co.uk##.tall-advert +seattletimes.com##.tall-rect +tampafp.com##.tampa-widget +bookriot.com##.tbr-promo +tennis.com##.tc-video-player-iframe +ghpage.com##.td-a-ad +thediplomat.com##.td-ad-container--labeled +unlockboot.com##.td-ads-home +techgenyz.com##.td-adspot-title +bizasialive.com##.td-all-devices +brila.net,cgmagonline.com,cycling.today,gayexpress.co.nz,theyeshivaworld.com##.td-banner-wrap-full +boxthislap.org##.td-footer-wrapper +91mobiles.com,techyv.com##.td-header-header +healthyceleb.com##.td-header-header-full +androidcommunity.com,euro-sd.com,sfbg.com,techworm.net##.td-header-rec-wrap +5pillarsuk.com,babeltechreviews.com,cybersecuritynews.com,techviral.net,thestonedsociety.com,weekendspecial.co.za##.td-header-sp-recs +runnerstribe.com##.td-post-content a[href^="https://tarkine.com/"] +theaustraliatoday.com.au##.td-spot-id-content_bottom +theaustraliatoday.com.au##.td-spot-id-content_top +antiguanewsroom.com,gadgetstouse.com##.td-ss-main-sidebar +techgenyz.com##.td_block_single_image +capsulenz.com,ssbcrack.com,thecoinrise.com##.td_spot_img_all +thedailybeast.com##.tdb-ads-block +arynews.tv##.tdi_103 +techgenyz.com##.tdi_114 +pakobserver.net##.tdi_121 +pakobserver.net##.tdi_124 +carnewschina.com##.tdi_162 +greekreporter.com##.tdi_18 +techgenyz.com##.tdi_185 +based-politics.com##.tdi_30 +teslaoracle.com##.tdi_48 +coinedition.com##.tdi_59 +ghpage.com##.tdi_63 +depressionforums.org##.tdi_66 +europeantimes.news##.tdi_71 +carboncredits.com##.tdi_72 +coinedition.com##.tdi_95 +coinedition.com##.tdm-inline-image-wrap +lankanewsweb.net##.tdm_block_inline_image +standard.co.uk##.teads +who.is##.teaser-bar +liverpoolecho.co.uk,manchestereveningnews.co.uk##.teaser[data-tmdatatrack-source="SHOP_WINDOW"] +eurovisionworld.com##.teaser_flex_united24 +semiconductor-today.com##.teaserexternal.teaser +techopedia.com##.techo-adlabel +technology.org##.techorg-banner +sporcle.com##.temp-unit +macrumors.com##.tertiary +speedof.me##.test-ad-container +tasfia-tarbia.org##.text +ericpetersautos.com##.text-109 +stupiddope.com##.text-6 +hackread.com##.text-61 +img2go.com,vuejs.org##.text-ad +how2shout.com##.text-ads +y2down.cc##.text-center > a[href="https://loader.to/loader.apk"] +hlsloader.com##.text-center > span[style="opacity:0.7;font-size:x-small"] +skylinewebcams.com##.text-center.cam-light +charlieintel.com,dexerto.com##.text-center.italic +ascii-code.com##.text-center.mb-3 +upi.com##.text-center.mt-5 +thegradcafe.com##.text-center.py-3 +whatismyisp.com##.text-gray-100 +coincarp.com##.text-native-ad +geeksforgeeks.org##.textBasedMannualAds_2 +sciencedaily.com##.textrule +kyis.com,thesportsanimal.com,wky930am.com##.textwidget +tftcentral.co.uk##.tftce-adlabel +trendhunter.com##.tha__adph +thejakartapost.com##.the-brief +vaughn.live##.theMvnAbvsLowerThird +thecooldown.com##.theco-target +thedefensepost.com##.thede-before-content_2 +steelersdepot.com##.theiaStickySidebar +theonion.com##.theonion-frame-ad-large +theonion.com##.theonion-frame-ad-small +theroot.com##.therootads-epi-mobile_inpost-top +serverhunter.com##.this-html-will-keep-changing-these-ads-dont-hurt-you-advertisement +phillyvoice.com##.this-weekend-container +vgtimes.com##.thisad +gearspace.com##.thread__sidebar-ad-container +geeksforgeeks.org##.three90RightBarBanner +nzherald.co.nz##.ticker-banner +readanybook.com##.timimg-ad-iframe +readanybook.com##.timing-ads-timer +aardvark.co.nz##.tinyprint +blendernation.com##.title +cryptocompare.com##.title-hero +thejakartapost.com##.tjp-ads +thejakartapost.com##.tjp-placeholder-ads +themighty.com##.tm-ads +trademe.co.nz##.tm-cinema-modal__ads-container +trademe.co.nz##.tm-display-ad__wrapper +trademe.co.nz##.tm-display-sponsored-listing__cards-flex +ticketnews.com##.tnam-content-ad +thenewstack.io##.tns-sponsor-note +thenewstack.io##.tns-sponsors-rss +thenextweb.com##.tnw-ad +nybooks.com##.toast-cta +spy.com##.todays-top-deals-widget +last.fm##.tonefuze +euobserver.com,medicinehatnews.com##.top +charlieintel.com,dexerto.com##.top-0.justify-center +mashable.com##.top-0.sticky > div +charlieintel.com,dexerto.com##.top-10 +canberratimes.com.au##.top-20 +coincheckup.com##.top-32 +cartoq.com##.top-a +justinweather.com##.top-ad-banner-wrapper +cartoq.com##.top-ad-blank-div +forbes.com##.top-ad-container +firstpost.com##.top-addd +n4g.com,techspy.com##.top-ads-container-outer +india.com##.top-ads-expend +latv.com##.top-adverties +jamieoliver.com##.top-avocado +advfn.com##.top-ban-wrapper +addictivetips.com,argonauts.ca,automotive-fleet.com,businessfleet.com,cfl.ca,developer.mozilla.org,forbesindia.com,government-fleet.com,howsecureismypassword.net,icons8.com,ncaa.com,rigzone.com,schoolbusfleet.com,seekvectorlogo.net,snipercentral.com,wltreport.com##.top-banner +content.techgig.com##.top-banner-bx +smartasset.com##.top-banner-ctr +gptoday.net##.top-banner-leaderboard +numuki.com##.top-banner-responsive-wrapper +gamewatcher.com##.top-banners-wrapper +papermag.com##.top-billboard__below-title-ad +livescores.biz##.top-bk +freedesignresources.net##.top-cat-ads +procyclingstats.com##.top-cont +foodrenegade.com##.top-cta +forbes.com##.top-ed-placeholder +theguardian.com##.top-fronts-banner-ad-container +debka.com##.top-full-width-sidebar +reverso.net##.top-horizontal +india.com##.top-horizontal-banner +spectrum.ieee.org##.top-leader-container +thedailystar.net##.top-leaderboard +coinpedia.org##.top-menu-advertise +sportingnews.com##.top-mpu-container +webmd.com##.top-picks +speedtest.net##.top-placeholder +techdirt.com##.top-promo +financemagnates.com##.top-side-unit +horoscope.com##.top-slot +cryptoslate.com##.top-sticky +playbuzz.com##.top-stickyplayer-container +ganjingworld.com##.topAdsSection_wrapper__cgH4h +timesofindia.indiatimes.com##.topBand_adwrapper +ada.org,globes.co.il,techcentral.ie,texteditor.co,versus.com##.topBanner +carsdirect.com##.topBannerAdContainer +pcworld.com##.topDeals +tech.hindustantimes.com##.topGadgetsAppend +tutorviacomputer.com##.topMargin15 +click2houston.com,clickondetroit.com,clickorlando.com,ksat.com,local10.com,news4jax.com##.topWrapper +giveawayoftheday.com,informer.com##.top_ab +partnerkin.com##.top_ab_box +theepochtimes.com##.top_ad +theroot.com##.top_ad_standard_desktop +asmag.com,tiresandparts.net##.top_banner +joebucsfan.com##.top_banner_cont +archaeology.org##.top_black +searchenginejournal.com##.top_lead +fandom.com##.top_leaderboard-odyssey-wrapper +thefederal.com##.top_level_1_before_after_header +justjared.com,justjaredjr.com##.top_rail_shell +fark.com##.top_right_container +allnigerianrecipes.com,antimusic.com##.topad +thespoken.cc##.topban +eurointegration.com.ua##.topban_r +algemeiner.com,allmonitors24.com,streamable.com##.topbanner +drugs.com##.topbanner-wrap +videogamemods.com##.topbanners +advocate.com,audacy.com,good.is,out.com,papermag.com,pride.com##.topbarplaceholder +belfastlive.co.uk,birminghammail.co.uk,bristolpost.co.uk,cambridge-news.co.uk,cheshire-live.co.uk,chroniclelive.co.uk,cornwalllive.com,coventrytelegraph.net,dailypost.co.uk,derbytelegraph.co.uk,devonlive.com,dublinlive.ie,edinburghlive.co.uk,examinerlive.co.uk,getsurrey.co.uk,glasgowlive.co.uk,gloucestershirelive.co.uk,hertfordshiremercury.co.uk,kentlive.news,leeds-live.co.uk,leicestermercury.co.uk,lincolnshirelive.co.uk,liverpool.com,manchestereveningnews.co.uk,mylondon.news,nottinghampost.com,somersetlive.co.uk,stokesentinel.co.uk,walesonline.co.uk##.topbox-cls-placeholder +blabber.buzz##.topfeed +cambridge.org,ldoceonline.com##.topslot-container +collinsdictionary.com##.topslot_container +moviemistakes.com##.tower +brushexpert.com##.towerAdvert +towleroad.com##.towletarget +euronews.com##.tp-outbrain +utahgunexchange.com##.tp-revslider-mainul +steamanalyst.com##.tpbcontainerr +boundingintocomics.com,thegrio.com##.tpd-incontent-ad-container +totalprosports.com##.tps-top-leaderboard +techreen.com##.tr-block-header-ad +techreen.com##.tr-block-label +torbay.gov.uk##.track +yaledailynews.com##.tracking-wide +adsoftheworld.com##.tracking-widest +bincodes.com##.transferwise +sun-sentinel.com##.trb_sf_hl +coinmarketcap.com##.trending-sponsored +iflscience.com##.trendmd-container +naturalblaze.com##.trfkye8nxr +thumbsnap.com##.ts-blurb-wrap +thesimsresource.com##.tsr-ad +yidio.com##.tt +telegraphindia.com##.ttdadbox310 +roseindia.net##.tutorialsstaticdata +tvtropes.org##.tvtropes-ad-unit +drivencarguide.co.nz##.tw-bg-gray-200 +todayonline.com##.tw-flex-shrink-2 +karnalguide.com##.two_third > .push20 +geekwire.com##.type-sponsor_post.teaser +timesofisrael.com##.type-spotlight +savefrom.net##.tz-quality-link +theroar.com.au##.u-d-block +seattletimes.com##.u-df.revcontent__recommended-wrapper +gulfnews.com##.uUS3S +ubergizmo.com##.ubergizmo-dfp-ad +unlockboot.com##.ubhome-banner +darko.audio##.ubm_widget +unlockboot.com##.ubtopheadads +barrons.com,wsj.com##.uds-ad-container +news.sky.com##.ui-advert +golflink.com,yourdictionary.com##.ui-advertisement +m.rugbynetwork.net##.ui-footer-fixed +zpaste.net##.uk-animation-shake +telegraphindia.com##.uk-background-muted +doodrive.com##.uk-margin > [href] > img +softarchive.is##.un-link +uncanceled.news##.uncan-content_11 +rankiapro.com##.undefined.relative +looper.com##.under-art +pixhost.to##.under-image +hidefninja.com##.underads +jakartaglobe.id##.underlay-ad +maltatoday.com.mt##.underlay_container +maltatoday.com.mt##.underlay_spacer +allclassical.org##.underwriting-container +inquinte.ca##.unit-block +bobvila.com##.unit-header-container +sciencedaily.com##.unit1 +sciencedaily.com##.unit2 +gpucheck.com##.unitBox +pravda.com.ua##.unit_side_banner +thegamerstation.com##.universal-js-insert +flightconnections.com##.unpublished-flights +t.17track.net##.up-deals +t.17track.net##.up-deals-img +thegradcafe.com##.upcoming-events +pcgamingwiki.com##.upcoming-releases.home-card:first-child +filepuma.com##.update_software +letterboxd.com##.upgrade-kicker +upworthy.com##.upworthy_infinite_scroll_ad +upworthy.com##.upworthy_infinte_scroll_outer_wrap +uproxx.com##.upx-ad-unit +vitalmtb.com##.v-ad-slot +surinenglish.com##.v-adv +lasvegassun.com##.varWrapper +venturebeat.com##.vb-ad-slot +helis.com##.vbar23 +tech.co##.vc_col-sm-4 +battlefordsnow.com,cfjctoday.com,everythinggp.com,filmdaily.co,huskiefan.ca,larongenow.com,meadowlakenow.com,nanaimonewsnow.com,northeastnow.com,panow.com,rdnewsnow.com,sasknow.com,vernonmatters.ca##.vc_single_image-wrapper +itmunch.com##.vc_slide +ktm2day.com##.vc_wp_text +rvtrader.com##.vdp-top-banner +cars.com##.vehicle-card.inventory-ad +ggrecon.com##.venatus-block +mobafire.com##.venatus-responsive-ad +theloadout.com##.venatus_ad +fox10phoenix.com,fox13news.com,fox26houston.com,fox29.com,fox2detroit.com,fox32chicago.com,fox35orlando.com,fox4news.com,fox5atlanta.com,fox5dc.com,fox5ny.com,fox6now.com,fox7austin.com,fox9.com,foxbusiness.com,foxla.com,foxnews.com,ktvu.com,wogx.com##.vendor-unit +cryptonews.net##.vert-public +drugdiscoverynews.com##.vert-unit +mmegi.bw##.vertical-banner +radiocity.in##.vertical-small-add +hashrate.no,thelancet.com##.verticalAdContainer +packaginginsights.com##.verticlblk +forbes.com##.vestpocket +mirror.co.uk##.vf3-conversations-list__promo +videogameschronicle.com##.vgc-productsblock +vgtimes.com##.vgt_orig_bg +express.co.uk##.viafoura-standalone-mpu +vice.com##.vice-ad__container +vice.com##.vice_D_leaderboard_index +victoriabuzz.com##.victo-billboard-desktop +historyfacts.com##.vid-player +justthenews.com##.video--vdo-ai +wikiwand.com##.video-ad +songkick.com##.video-ad-wrapper +cyclinguptodate.com##.video-container +floridasportsman.com##.video-detail-player +emptycharacter.com##.video-js +forbes.com,nasdaq.com##.video-placeholder +flicksmore.com##.video_banner +guru99.com##.videocontentmobile +justthenews.com##.view--breaking-news-sponsored +teachit.co.uk##.view-advertising-display +koreabiomed.com##.view-aside +costco.com##.view-criteo-carousel +vigilantcitizen.com##.vigil-leaderboard-article +vigilantcitizen.com##.vigil-leaderboard-home +variety.com##.vip-banner +kijiji.ca##.vipAdsList-3883764342 +pokernews.com##.virgutis +coincheckup.com##.visible-xs > .ng-isolate-scope +visualcapitalist.com##.visua-target +roosterteeth.com##.vjs-marker +koreaboo.com##.vm-ads-dynamic +belloflostsouls.net,ginx.tv,paladins.guru,smite.guru,theloadout.com##.vm-placement +gosunoob.com##.vntsvideocontainer +darkreader.org##.vpnwelt +valueresearchonline.com##.vr-adv-container +upload-apk.com##.vr-adv-unit +trueachievements.com##.vr-auction +hentaihaven.xxx##.vrav_a_pc +versus.com##.vs-ads +thegearpage.net##.vsBB +thegearpage.net##.vsBBAdhesion +thegearpage.net##.vsLB +advrider.com##.vsLBBottom +advrider.com##.vsLBTop +thegearpage.net##.vsRRPremium +vaughn.live##.vs_v9_LTabvsLowerThirdWrapper +vaughn.live##.vs_v9_LTabvsLower_beta +vsbattles.com##.vsb_ad +vsbattles.com##.vsb_sticky +notateslaapp.com##.vtwjhpktrbfmw +wral.com##.vw3Klj +horoscopes.astro-seek.com##.vyska-sense +yaledailynews.com##.w-\[160px\] +lolalytics.com##.w-\[336px\] +androidpolice.com##.w-pencil-banner +givemesport.com##.w-promotion-offer +cricket.com.au##.w-sponsors +wsj.com##.w27771 +userscript.zone##.w300 +justetf.com##.wAd +audioxpress.com##.waitress +swimcompetitive.com##.waldo-display-unit +flightconnections.com##.waldo-footer +wetransfer.com##.wallpaper +goodfon.com##.wallpapers__banner240 +dailymail.co.uk,thisismoney.co.uk##.watermark +watson.ch##.watson-ad +wbal.com##.wbal-banner +technclub.com##.wbyqkx-container +wccftech.com##.wccf_video_tag +searchencrypt.com##.web-result.unloaded.sr +swisscows.com##.web-results > .a8r-web-page +northernvirginiamag.com##.website-header__ad--leaderboard +probuilds.net##.welcome-bnr +taskcoach.org##.well +pcguide.com##.wepc-takeover-sides +pcguide.com##.wepc-takeover-top +cpu-monkey.com,gpu-monkey.com##.werb +best-faucets.com,transfermarkt.co.uk,transfermarkt.com##.werbung +transfermarkt.co.uk##.werbung-skyscraper +transfermarkt.co.uk,transfermarkt.com##.werbung-skyscraper-container +westsiderag.com##.wests-widget +bollywoodshaadis.com##.wgt-continue-title +gadgethacks.com,reality.news,wonderhowto.com##.whtaph +pch.com##.wide_banner +japantoday.com##.widget--animated +headforpoints.com##.widget--aside.widget +japantoday.com##.widget--jobs +dcrainmaker.com,fijisun.com.fj##.widget-1 +fijisun.com.fj##.widget-3 +kyivpost.com##.widget-300-250 +vodacomsoccer.com##.widget-ad-block +bollywoodhungama.com##.widget-advert +boernestar.com##.widget-advert_placement +wikikeep.com##.widget-area +nightingaledvs.com##.widget-area--below-post +superdeluxeedition.com##.widget-bg-image__deal-alert +cinemaexpress.com##.widget-container-133 +taiyangnews.info##.widget-module__widgetWrapper__Rzg0s +screencrush.com##.widget-widget_third_party_content +ceoexpress.com##.widgetContentIfrWrapperAd +phonearena.com##.widgetOffers +whitecoatinvestor.com##.widget_abc +gearnews.com##.widget_adtag_rectangle +adexchanger.com##.widget_ai_ad_widget +gsmserver.com##.widget_banner-container_three-horizontal +discussingfilm.net,goonhammer.com,joemygod.com,ryxy.online,shtfplan.com,thestrongtraveller.com,topcartoons.tv,usmagazine.com,wiki-topia.com##.widget_block +wplift.com##.widget_bsa +4sysops.com,activistpost.com,aftvnews.com,arcadepunks.com,autotalk.co.nz,corrosionhour.com,corvetteblogger.com,dcrainmaker.com,discover.is,elhayat-life.com,gamingonphone.com,girgitnews.com,gizmochina.com,guides.wp-bullet.com,macsources.com,manhuatop.org,mediachomp.com,metalsucks.net,mmoculture.com,monstersandcritics.com,motoringfile.com,nasaspaceflight.com,newsbtc.com,openloading.com,patriotfetch.com,planetofreviews.com,precinctreporter.com,prepperwebsite.com,rugbylad.ie,sashares.co.za,scienceandliteracy.org,seganerds.com,sixteen-nine.net,snipercentral.com,spokesman-recorder.com,survivopedia.com,techdows.com,techiecorner.com,techjuice.pk,theblueoceansgroup.com,thecinemaholic.com,tooxclusive.com,torrentfreak.com,torrentmac.net,trackalerts.com,trendingpoliticsnews.com,wabetainfo.com,windowslatest.com##.widget_custom_html +insidehpc.com##.widget_download_manager_widget +domaingang.com##.widget_execphp +bitcoinist.com##.widget_featured_companies +bestlifeonline.com,bodynetwork.com,hellogiggles.com##.widget_gm_karmaadunit_widget +inlandvalleynews.com##.widget_goodlayers-1-1-banner-widget +faroutmagazine.co.uk##.widget_grv_mpu_widget +gizmodo.com,kotaku.com##.widget_keleops-ad +appleworld.today,arcadeheroes.com,athleticsillustrated.com,betakit.com,businessaccountingbasics.co.uk,circuitbasics.com,closerweekly.com,coincodecap.com,cozyberries.com,dbknews.com,deshdoaba.com,developer-tech.com,electricbikereport.com,foreverconscious.com,friendsjournal.org,glitched.online,globalgovernancenews.com,intouchweekly.com,jharkhandmirror.net,kashmirreader.com,kkfm.com,levittownnow.com,lifeandstylemag.com,manhuatop.org,marqueesportsnetwork.com,mensjournal.com,nikonrumors.com,ognsc.com,palipost.com,patriotfetch.com,pctechmag.com,postwrestling.com,potatonewstoday.com,prajwaldesai.com,pstribune.com,raspians.com,robinhoodnews.com,rok.guide,rsbnetwork.com,salesforcegeek.in,showbiz411.com,spokesman-recorder.com,sportsspectrum.com,stacyknows.com,supertotobet90.com,teksyndicate.com,thecatholictravelguide.com,thedefensepost.com,theoverclocker.com,theyucatantimes.com,tronweekly.com,ubuntu101.co.za,wakingtimes.com,washingtonmonthly.com,webscrypto.com,wgow.com,wgowam.com,wlevradio.com##.widget_media_image +palestinechronicle.com##.widget_media_image > a[href^="https://www.amazon.com/"] +cracked-games.org##.widget_metaslider_widget +washingtoncitypaper.com##.widget_newspack-ads-widget +nypost.com##.widget_nypost_dfp_ad_widget +bitcoinist.com,newsbtc.com##.widget_premium_partners +permanentstyle.com##.widget_ps-midpage-mobile-ad +twistedsifter.com##.widget_sifter_ad_bigbox_widget +985kissfm.net,bxr.com,catcountry951.com,power923.com,wncv.com,wskz.com##.widget_simpleimage +mypunepulse.com,optimyz.com##.widget_smartslider3 +permanentstyle.com##.widget_sow-advertisements +androidpctv.com,brigantinenow.com,downbeachbuzz.com,thecatholictravelguide.com##.widget_sp_image +gamertweak.com##.widget_srlzycxh +captainaltcoin.com,freedesignresources.net,utahgunexchange.com,webkinznewz.ganzworld.com,webpokie.com##.widget_text +dreadcentral.com,justjared.com##.widget_tpd_ad_widget +pacenewsonline.com##.widget_webads_displayads_widget +carpeludum.com##.widget_widget_catchevolution_adwidget +cryptoreporter.info##.widget_wpstealthads_widget +techpout.com##.widget_xyz_insert_php_widget +igi-global.com##.width-100 +ign.com##.wiki-bobble +wethegeek.com##.win +dailywire.com##.wisepops-block-image +whoseno.com##.wn-ad-wrap +reuters.com##.workspace-article-banner-module__image__F14iP +warontherocks.com##.wotr_top_lbjspot +gearnews.com##.wp-affiliate-wrapper +guitaradvise.com##.wp-block-affiliate-plugin-lasso +thechainsaw.com##.wp-block-create-block-pedestrian-gam-ad-block +gamepur.com##.wp-block-dotesports-affiliate-button +alltechnerd.com##.wp-block-foxiz-elements-affiliate-product +dotesports.com,gameskinny.com,primagames.com,themarysue.com,twinfinite.net##.wp-block-gamurs-ad +gearpatrol.com##.wp-block-gearpatrol-ad-slot +gearpatrol.com##.wp-block-gearpatrol-from-our-partners +club386.com##.wp-block-group +independent.com##.wp-block-group__inner-container +insidehighered.com##.wp-block-ihe-ad +cryptofeeds.news,defence-industry.eu,gamenguides.com,houstonherald.com,millennial-grind.com,survivopedia.com,teslaoracle.com##.wp-block-image +lowcarbtips.org##.wp-block-image.size-full +livability.com##.wp-block-jci-ad-area-two +hot97.com##.wp-block-mediaco-ione-ad +metro.co.uk##.wp-block-metro-widget-archive-metro-partners +bangordailynews.com,michigandaily.com##.wp-block-newspack-blocks-wp-block-newspack-ads-blocks-ad-unit +crikey.com.au##.wp-block-pm-ad-placeholder-block +popculture.com##.wp-block-savage-platform-primis-video +popculture.com,songfacts.com##.wp-block-savage-platform-raptive-ad +hyperallergic.com,steamdeckhq.com##.wp-block-spacer +thewrap.com##.wp-block-the-wrap-ad +upworthy.com##.wp-container-30 +rvguide.com##.wp-image-3611 +kiryuu.id##.wp-image-465340 +thecricketlounge.com##.wp-image-88221 +weisradio.com##.wp-image-931153 +conandaily.com,gamersocialclub.ca,hawaiireporter.com,michaelsavage.com##.wpa +wolfsgamingblog.com##.wpa-about +techyv.com##.wpb_raw_code +ukutabs.com##.wpb_raw_html +navyamedia.com##.wpb_single_image +nationalfile.com##.wpb_wrapper > p +coralspringstalk.com##.wpbdp-listings-widget-list +tejanonation.net##.wpcnt +dailynews24.in##.wplite-banner-ads +americanfreepress.net,sashares.co.za,strategicenergy.eu##.wppopups-whole +theregister.com##.wptl +fontawesome.com##.wrap-ad +warezload.net##.wrapper > center > center > [href] +memeburn.com,ventureburn.com##.wrapper--grey +hotnewhiphop.com##.wrapper-Desktop_Header +cspdailynews.com,restaurantbusinessonline.com##.wrapper-au-popup +paultan.org##.wrapper-footer +tftactics.gg##.wrapper-lb1 +cyberscore.live##.wrapper-partner-rb +thatprivacyguy.com##.ws-slotb +webtoolhub.com##.wth_zad_text +forums.ventoy.net##.wwads-cn +wwfoldschool.com##.wwfol-entity-placement +waterfordwhispersnews.com##.wwn-ad-unit +geekflare.com##.x-article-818cc9d4 +beaumontenterprise.com,chron.com,ctpost.com,expressnews.com,greenwichtime.com,houstonchronicle.com,lmtonline.com,manisteenews.com,michigansthumb.com,middletownpress.com,mrt.com,myjournalcourier.com,myplainview.com,mysanantonio.com,nhregister.com,ourmidland.com,registercitizen.com,sfchronicle.com,sfgate.com,stamfordadvocate.com,theintelligencer.com##.x100.bg-gray100 +beforeitsnews.com##.x1x2prx2lbnm +aupetitparieur.com##.x7zry3pb +mcpmag.com##.xContent +theseotools.net##.xd_top_box +livejournal.com##.xhtml_banner +dallasnews.com##.xl_right-rail +stopmandatoryvaccination.com##.xoxo +naturalblaze.com##.xtfaoba0u1 +seattlepi.com##.y100.package +mamieastuce.com##.y288crhb +coin360.com##.y49o7q +titantv.com##.yRDh6z2_d0DkfsT3 +247mirror.com,365economist.com,bridewired.com,dailybee.com,drgraduate.com,historictalk.com,mvpmode.com,parentmood.com,theecofeed.com,thefunpost.com,visualchase.com,wackojaco.com##.ya-slot +pravda.ru##.yaRtbBlock +yandex.com##.yandex-sticky-adv-banner__desktop-disable-ad-button-wrapper +yardbarker.com##.yb-card-ad +yardbarker.com##.yb-card-leaderboard +yardbarker.com##.yb-card-out +gamereactor.asia,gamereactor.cn,gamereactor.com.tr,gamereactor.cz,gamereactor.de,gamereactor.dk,gamereactor.es,gamereactor.eu,gamereactor.fi,gamereactor.fr,gamereactor.gr,gamereactor.it,gamereactor.jp,gamereactor.kr,gamereactor.me,gamereactor.nl,gamereactor.no,gamereactor.pl,gamereactor.pt,gamereactor.se,gamereactor.vn##.yks300 +desmoinesregister.com##.ymHyVK__ymHyVK +shockwave.com##.ympb_target_banner +saltwire.com##.youtube_article_ad +readneverland.com##.z-0 +buzzly.art##.z-10.w-max +character.ai##.z-40.max-w-\[970px\] +howstuffworks.com##.z-999 +culturemap.com,rightwingnews.com##.z-ad +fortune.com##.z-body-popover +giphy.com##.z-stickyAd +ign.com,mashable.com,pcmag.com##.zad +windows101tricks.com##.zanui-container +techspot.com##.zenerr +antimusic.com##.zerg +pcmag.com##.zmgad-full-width +bellinghamherald.com,bnd.com,bradenton.com,centredaily.com,charlotteobserver.com,cleaner.com,cults3d.com,elnuevoherald.com,fresnobee.com,heraldonline.com,heraldsun.com,idahostatesman.com,islandpacket.com,kansas.com,kansascity.com,kentucky.com,ledger-enquirer.com,macon.com,mcclatchydc.com,mercedsunstar.com,miamiherald.com,modbee.com,myrtlebeachonline.com,newsobserver.com,sacbee.com,sanluisobispo.com,star-telegram.com,sunherald.com,thenewstribune.com,theolympian.com,thestate.com,tri-cityherald.com##.zone +bellinghamherald.com,bnd.com,bradenton.com,centredaily.com,charlotteobserver.com,cleaner.com,cults3d.com,elnuevoherald.com,fresnobee.com,heraldonline.com,heraldsun.com,idahostatesman.com,islandpacket.com,kansas.com,kansascity.com,kentucky.com,ledger-enquirer.com,macon.com,mcclatchydc.com,mercedsunstar.com,miamiherald.com,modbee.com,montrealgazette.com,myrtlebeachonline.com,newsobserver.com,sacbee.com,sanluisobispo.com,star-telegram.com,sunherald.com,thenewstribune.com,theolympian.com,thestate.com,tri-cityherald.com,weekand.com##.zone-el +cleaner.com##.zone-sky +cnn.com##.zone__ads +securityweek.com##.zox-post-ad-wrap +marketscreener.com##.zppAds +newsinfo.inquirer.net##.ztoop +wunderground.com##AD-TRIPLE-BOX +tjrwrestling.net##[ad-slot] +frzyc.github.io##[alt*="Banner"] +cloutgist.com,codesnse.com##[alt="AD DESCRIPTION"] +takeuforward.org##[alt="Ad Panel"] +2fa.live##[alt="Advertisement"] +exchangerates.org.uk##[alt="banner"] +browardpalmbeach.com,dallasobserver.com,miaminewtimes.com,phoenixnewtimes.com,westword.com##[apn-ad-hook] +gab.com##[aria-label*="Sponsored:"] +stremio-addons.net##[aria-label*="sponsored"] +issuu.com##[aria-label="Advert"] +thepointsguy.com##[aria-label="Advertisement"] +foodlion.com##[aria-label="Sponsored Ad"] +wsj.com##[aria-label="Sponsored Offers"] +mojeek.com##[aria-label="Sponsored products"] +blackbeltmag.com##[aria-label="Wix Monetize with AdSense"] +giantfood.com,giantfoodstores.com,martinsfoods.com##[aria-label^="Sponsored"] +odishatv.in##[class$="-ad"] +impressivetimes.com##[class$="-ads"] +thehansindia.com##[class*="-ad-"]:not(#inside_post_content_ad_1_before) +collegedunia.com##[class*="-ad-slot"] +goal.com##[class*="-mpu__"] +80.lv##[class*="BrndngBigPrm_"] +80.lv##[class*="ImgPrmo"] +crazygames.*##[class*="MpuContainer_"] +petco.com##[class*="SponsoredText"] +fotmob.com##[class*="TopBannerWrapper"] +jagranjosh.com##[class*="_AdColl_"] +jagranjosh.com##[class*="_BodyAd_"] +top.gg##[class*="__AdContainer-"] +everydaykoala.com,playjunkie.com##[class*="__adspot-title-container"] +everydaykoala.com,playjunkie.com##[class*="__adv-block"] +gamezop.com##[class*="_ad_container"] +crazygames.*##[class*="_leaderboardContainer_"] +onlymyhealth.com##[class*="_omh_banner_"] +cointelegraph.com,doodle.com##[class*="ad-slot"] +whitecoatinvestor.com##[class*="blog-"][class*="-as"] +bmwblog.com##[class*="bmwbl-300x250"] +bmwblog.com##[class*="bmwbl-300x600"] +bitcoinist.com,captainaltcoin.com,coinpaprika.com,cryptonews.com,cryptonewsz.com,cryptopotato.com,gameshub.com,insidebitcoins.com,news.bitcoin.com,newsbtc.com,philnews.ph,watcher.guru##[class*="clickout-"] +manabadi.co.in##[class*="dsc-banner"] +startribune.com##[class*="htlad-"] +prydwen.gg##[class*="promo-"] +giphy.com##[class*="w-adCarousel"] +fullmatch.info##[class*="wp-image"] +douglas.at,douglas.be,douglas.ch,douglas.cz,douglas.de,douglas.es,douglas.hr,douglas.hu,douglas.it,douglas.lt,douglas.lv,douglas.nl,douglas.pl,douglas.pt,douglas.ro,douglas.si,douglas.sk,nocibe.fr##[class="cms-criteo"] +m.economictimes.com##[class="wdt-taboola"] +topgear.com##[class^="AdContainer"] +jagranjosh.com##[class^="Ad_"] +shoprite.com##[class^="CitrusBannerXContainer"] +bloomberg.com##[class^="FullWidthAd_"] +genius.com##[class^="InnerSectionAd__"] +genius.com##[class^="InreadContainer__"] +zerohedge.com##[class^="PromoButton"] +beincrypto.com##[class^="TopAdBanner-"] +printweek.in##[class^="ad-section-"] +uploader.link##[class^="ads"] +zeenews.india.com##[class^="ads-box"] +pixabay.com##[class^="adsSection"] +nasdaq.com##[class^="ads_"] +uniladtech.com##[class^="advert-placeholder_advertPlaceholder"] +nasdaq.com##[class^="btf_"] +weather.us##[class^="dkpw"] +dallasnews.com##[class^="dmnc_features-ads-"] +pixabay.com##[class^="gettySponsored"] +romhustler.org##[class^="leaderboard_ad"] +filmibeat.com##[class^="oiad"] +nofilmschool.com##[class^="rblad-nfs_content"] +bestbuy.ca##[class^="sponsoredProdBoxGridArea"] +cmswire.com##[class^="styles_ad-block"] +cmswire.com##[class^="styles_article__text-ad"] +cmswire.com##[class^="styles_article__top-ad-wrapper"] +hancinema.net##[class^="wmls_"] +enostech.com##[class^="wp-image-41"] +torlock.com##[class^="wrn"] +linkedin.com##[componentkey*="urn:li:sponsoredContentV2"] +newspointapp.com##[ctn-style] +flatpanelshd.com##[data-aa-adunit] +dribbble.com##[data-ad-data*="ad_link"] +nytimes.com##[data-ad-element="outer_ad_container"] +investing.com##[data-ad-label="Advertisement"] +usnews.com##[data-ad-props] +androidauthority.com,soundguys.com##[data-ad-type] +dexerto.com##[data-ad-unit-id] +kingmods.net##[data-ad-wrapper-slot] +motortrend.com##[data-ad="true"] +gamelevate.com##[data-adpath] +coingecko.com##[data-ads-target="banner"] +czechtheworld.com##[data-affiliate] +thesun.co.uk##[data-aspc="newBILL"] +european-alternatives.eu##[data-banner-key] +groupon.com##[data-bhc$="sponsored_carousel"] +costco.com##[data-bi-placement="Criteo_Home_Espot"] +costco.ca##[data-bi-placement="Criteo_Product_Display_Page_Espot"] +privacywall.org##[data-bingads-suffix] +chron.com,seattlepi.com,sfchronicle.com,timesunion.com##[data-block-type="ad"] +chewy.com##[data-carousel-id="plp_sponsored_brand"] +theblaze.com##[data-category="SPONSORED"] +autotrader.com##[data-cmp="alphaShowcase"] +gab.com##[data-comment="gab-ad-comment"] +sephora.com##[data-comp*="RMNCarousel"] +sephora.com##[data-comp*="RmnBanner"] +bbc.com##[data-component="ad-slot"] +bbc.com##[data-component="advertisement-block"] +bloomberg.com##[data-component="in-body-ad"] +lookfantastic.com##[data-component="sponsoredProductsCriteo"] +the-sun.com##[data-component="zergnet"] +arrowheadpride.com,badlefthook.com,barcablaugranes.com,bavarianfootballworks.com,bleedinggreennation.com,bloggingtheboys.com,bloodyelbow.com,brightsideofthesun.com,cagesideseats.com,celticsblog.com,eater.com,goldenstateofmind.com,libertyballers.com,managingmadrid.com,mmafighting.com,mmamania.com,sbnation.com##[data-concert="desktop_leaderboard_variable"] +eater.com##[data-concert="desktop_network_river"] +eater.com,sbnation.com##[data-concert="frontpage_hero_desktop"] +arrowheadpride.com,badlefthook.com,barcablaugranes.com,bavarianfootballworks.com,bleedinggreennation.com,bloggingtheboys.com,bloodyelbow.com,brightsideofthesun.com,cagesideseats.com,celticsblog.com,eater.com,goldenstateofmind.com,libertyballers.com,managingmadrid.com,mmafighting.com,mmamania.com,sbnation.com,vox.com##[data-concert="leaderboard_top_tablet_desktop"] +sbnation.com##[data-concert="medium_rectangle_variable"] +eater.com,sbnation.com##[data-concert="medium_rectangle_variable_home"] +vox.com##[data-concert="outbrain_post_tablet_and_desktop"] +eater.com,vox.com##[data-concert="tablet_leaderboard"] +coingecko.com##[data-controller="button-ads"] +olympics.com##[data-cy="adv-container"] +fortune.com##[data-cy="hp-in-stream-0"] +hedgefollow.com##[data-dee_type^="large_banner"] +digitalspy.com##[data-embed="embed-gallery"][data-node-id] +greatist.com,healthline.com,medicalnewstoday.com,psychcentral.com##[data-empty] +badgerandblade.com,ginx.tv##[data-ez-ph-id] +reddit.com##[data-faceplate-tracking-context*="\"promoted\":true"] +news.sky.com##[data-format="leaderboard"] +euromaidanpress.com##[data-fuse="header"] +cooljugator.com##[data-fuse] +cumbriacrack.com,euromaidanpress.com##[data-hbwrap] +tvzoneuk.com##[data-hook="HtmlComponent"] +blackbeltmag.com##[data-hook="bgLayers"] +hackster.io##[data-hypernova-key="ModularAd"] +forbes.com##[data-id="ad-container"] +health.clevelandclinic.org##[data-identity*="billboard-ad"] +health.clevelandclinic.org##[data-identity="leaderboard-ad"] +igraal.com##[data-ig-ga-cat="Ad"] +jeffdornik.com##[data-image-info] +phoneia.com##[data-index] +dailymail.co.uk##[data-is-sponsored="true"] +duckduckgo.com##[data-layout$="_ads"] +duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##[data-layout="ad"] +macys.com##[data-load-beacon*="criteo.com/rm"] +motor1.com##[data-m1-ad-label] +cnet.com,filehippo.*##[data-meta="placeholder-slot"] +newsweek.com##[data-mgid-container="true"] +qvc.com##[data-module-feature-name^="CRITEO"] +coindesk.com##[data-module-name="high-impact"] +independent.co.uk##[data-mpu1] +goal.com##[data-name="ad-leaderboard"] +eater.com,sbnation.com##[data-native-ad-id="container"] +wsj.com##[data-parsely-slot] > p[style="text-align:center"] +jeffdornik.com##[data-pin-url] +extremetech.com##[data-pogo="sidebar"] +mashable.com##[data-pogo="top"] +scmp.com##[data-qa="AppBar-renderLayout-AdSlotContainer"] +scmp.com##[data-qa="ArticleContentRightSection-AdSlot"] +scmp.com##[data-qa="OutstreamAdSlot-Container"] +washingtonpost.com##[data-qa="article-body-ad"] +washingtonpost.com##[data-qa="right-rail-ad"] +ginx.tv##[data-ref] +euroweeklynews.com##[data-revive-zoneid] +chemistwarehouse.com.au##[data-rm-beacon-state] +disqus.com##[data-role="ad-content"] +news.sky.com##[data-role="ad-label"] +mashable.com##[data-seamless-ad] +foodnetwork.com##[data-slot-type="ad_aside"] +foodnetwork.com##[data-slot-type="ad_aside_top"] +trakt.tv##[data-snigel-id] +amp.theguardian.com##[data-sort-time="1"] +timesofindia.indiatimes.com##[data-sp-click="stpPgtn(event)"] +claudelog.com##[data-sponsor-tip="true"] +linkedin.com##[data-sponsored-tracking-url] +theinertia.com##[data-spotim-module="tag-tester"] +vrbo.com##[data-stid="meso-ad"] +si.com##[data-target="ad"] +coingecko.com##[data-target="ads.banner"] +the-express.com##[data-tb-non-consent] +twitch.tv##[data-test-selector="sda-wrapper"] +woot.com##[data-test-ui="advertisement-cdm-zone-01"] +woot.com##[data-test-ui="advertisement-cdm-zone-02"] +woot.com##[data-test-ui="advertisement-cdm-zone-03"] +woot.com##[data-test-ui="advertisement-cdm-zone-06"] +drivencarguide.co.nz##[data-test-ui="outbrain-suggestions"] +woot.com##[data-test-ui^="advertisementLeaderboard"] +target.com##[data-test="featuredProducts"] +target.com##[data-test="recommended_products_placement_adaptpdp_sponsored_items"] +target.com##[data-test="sponsored-text"] +engadget.com##[data-test="top-ad"] +costco.com##[data-testid="AdSet-all-pdp_criteo_-_sponsored_products"] +costco.com##[data-testid="AdSet-all-sponsored_products_-_search_commerce"] +reuters.com##[data-testid="CnxPlayer"] +reuters.com##[data-testid="Leaderboard"] +topgear.com##[data-testid="MpuPremium1"] +topgear.com##[data-testid="MpuPremium1Single"] +topgear.com##[data-testid="MpuPremium2"] +topgear.com##[data-testid="MpuPremium2Single"] +reuters.com##[data-testid="ResponsiveAdSlot"] +nytimes.com##[data-testid="StandardAd"] +topgear.com##[data-testid="TopSlot"] +bleacherreport.com,coles.com.au##[data-testid="ad"] +nexusmods.com##[data-testid="ad-container-player"] +kijiji.ca##[data-testid="adsense-container"] +gozofinder.com##[data-testid="advert"] +gocomics.com##[data-testid="advertising-unit"] +mirror.co.uk##[data-testid="affiliate-contents-embed"] +coles.com.au##[data-testid="banner-container-desktop"] +samsclub.com##[data-testid="buy-box-ad"] +petco.com##[data-testid="citrus-widget"] +argos.co.uk##[data-testid="citrus_products-carousel"] +dailystar.co.uk##[data-testid="commercial-label-gpt"] +theweathernetwork.com##[data-testid="content-feed-ad-slot"] +greatist.com,healthline.com,medicalnewstoday.com,psychcentral.com##[data-testid="driver"] +washingtonpost.com##[data-testid="fixed-bottom-ad"] +theweathernetwork.com##[data-testid="header-ad-content"] +greatist.com,healthline.com,medicalnewstoday.com,psychcentral.com##[data-testid="header-leaderboard"] +forbes.com##[data-testid="locked-top-ad-container"] +imdb.com##[data-testid="media-sheet__attr-banner"] +you.com##[data-testid="microsoft-ads"] +tntsports.co.uk##[data-testid="molecule-marketing-block"] +argos.co.uk##[data-testid="monetisation-product-carousel"] +bedbathandbeyond.com##[data-testid="newArrivals"] +bedbathandbeyond.com##[data-testid="ospRecommendations"] +washingtonpost.com##[data-testid="outbrain"] +sportingnews.com##[data-testid="outbrain-block"] +washingtonpost.com##[data-testid="placeholder-box"] +theweathernetwork.com##[data-testid="pre-ad-text"] +abcnews.com##[data-testid="prism-sticky-ad"] +zillow.com##[data-testid="right-rail-ad"] +zillow.com##[data-testid="search-list-first-ad"] +zillow.com##[data-testid="search-list-second-ad"] +walmart.com##[data-testid="skyline-ad"] +freepik.com##[data-testid="sponsor-banner"] +manomano.co.uk,manomano.de,manomano.es,manomano.fr,manomano.it##[data-testid="spr-brd-banner"] +bonappetit.com##[data-testid="sticky-hero-ad"] +therealdeal.com##[data-testid="test-div-id-for-pushdown"] +duckduckgo.com##[data-testid=serp-popover-promo] +costco.com##[data-testid^="CriteoAdSet_undefined"] +dailystar.co.uk,mirror.co.uk,themirror.com##[data-tmdatatrack-type="commercial"] +game8.co##[data-track-nier-keyword="footer_overlay_ads"] +money.com##[data-trk-company="rocket-mortgage-review"] +goal.com##[data-type="AdComponent"] +3addedminutes.com,anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,blackpoolgazette.co.uk,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,doncasterfreepress.co.uk,falkirkherald.co.uk,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##[data-type="AdRowBillboard"] +goal.com##[data-type="AdSlot"] +search.brave.com,thesportsrush.com##[data-type="ad"] +autoblog.com##[data-widget-id="AR_1"] +forum.ragezone.com##[data-widget-key="widget_partners"] +petco.com##[data-widget-type="citrus-ad"] +petco.com##[data-widget-type="citrus-banner"] +petco.com##[data-widget-type^="rmn-"] +theautopian.com##[data-widget_type="html.default"] +namepros.com##[data-xf-init][data-tag] +cnn.com##[data-zone-label="Paid Partner Content"] +faroutmagazine.co.uk,hitc.com##[dock="#primis-dock-slot"] +browardpalmbeach.com,citybeat.com,leoweekly.com,metrotimes.com##[gpt-slot-config-id] +citybeat.com,leoweekly.com,metrotimes.com##[gpt-slot-div-id] +dailynews.lk,fxempire.com,german-way.com,qsaltlake.com,tfetimes.com##[height="250"] +ciiradio.com,hapskorea.com##[height="300"] +fxempire.com##[height="398"] +namepros.com,pointblanknews.com,sharktankblog.com##[height="60"] +cdmediaworld.com,cryptofeeds.news,fxempire.com,gametarget.net,lnkworld.com##[height="600"] +bankbazaar.com##[height="80"] +airplaydirect.com,bankbazaar.com,cultofcalcio.com,dailynews.lk,economicconfidential.com,eve-search.com,lyngsat.com,newzimbabwe.com,opednews.com,roadtester.com.au,runechat.com,tfetimes.com##[height="90"] +tokopedia.com##[href$="src=topads"] +yourbittorrent.com##[href*="%20"][href$=".html"] +readfrom.net##[href*="&aff"] +photopea.com##[href*=".ivank.net"] +nzbstars.com,upload.ee##[href*=".php"] +complaintsingapore.com##[href*="/adv.php"] +utahgunexchange.com##[href*="/click.track"] +boatnews.com##[href*="/l/"] > picture +thepiratebay.org##[href*="/redirect?tid="] +libtorrent.org,speedcheck.org,torrentfreak.com,tubeoffline.com,utorrent.com##[href*="://go.nordvpn.net/"] +auto.creavite.co##[href*="?aff="] +auto.creavite.co##[href*="?utm_medium=ads"] +gamecopyworld.com,gamecopyworld.eu##[href*="@"] +cnx-software.com##[href*="aliexpress.com/item/"] +steroid.com##[href*="anabolics.com"] +hackster.io##[href*="attendee.gotowebinar.com"] +cnx-software.com##[href*="banner"] +9jaflaver.com,alaskapublic.org,allkeyshop.com,analyticsinsight.net,ancient-origins.net,animeidhentai.com,arabtimesonline.com,biblestudytools.com,bitcoinworld.co.in,christianity.com,cnx-software.com,coingolive.com,csstats.gg,digitallydownloaded.net,digitbin.com,domaingang.com,downturk.net,flickeringmyth.com,fresherslive.com,gizmochina.com,glitched.online,glodls.to,guidedhacking.com,hackernoon.com,indishare.org,khmertimeskh.com,litecoin-faucet.com,mbauniverse.com,mediaite.com,mgnetu.com,myreadingmanga.info,newsfirst.lk,owaahh.com,parkablogs.com,premiumtimesng.com,railcolornews.com,resultuniraj.co.in,ripplesnigeria.com,rtvonline.com,ryuugames.com,sashares.co.za,sofascore.com,totemtattoo.com,trancentral.tv,unboxdiaries.com,vumafm.co.za,yugatech.com,zmescience.com##[href*="bit.ly/"] +lightnovelpub.org##[href*="heave.gg"] +beforeitsnews.com,in5d.com##[href*="hop.clickbank.net"] +bleepingcomputer.com##[href*="https://www.bleepingcomputer.com/mgo/"] +businessaccountingbasics.co.uk##[href*="partnerlinks.io/"] > img +cnx-software.com##[href*="url2.cnx-software.com/"] +cnx-software.com##[href*="url3.cnx-software.com/"] +linuxlookup.com##[href="/advertising"] +audiobookbay.is##[href="/ddeaatr"] +linuxcareers.com##[href="/jobs/alert/"] +mywaifulist.moe##[href="/nord"] +toumpano.net##[href="http://roz-tilefona.xbomb.net/"] +warfarehistorynetwork.com##[href="http://www.bktravel.com/"] +daijiworld.com##[href="http://www.expertclasses.org/"] +allnewspipeline.com##[href="http://www.sqmetals.com/"] +bitcoiner.tv##[href="https://bitcoiner.tv/buy-btc.php"] +pastee.dev##[href="https://buyvm.net"] +coincheckup.com##[href="https://coincodex.com/go/binance/"] +mvnrepository.com##[href="https://dnsgurus.com"] +ppv.cx##[href="https://duel.com/r/PPV"] +spys.one##[href="https://fineproxy.org/ru/"] +julieroys.com##[href="https://julieroys.com/restore"] +conservativeplaybook.com##[href="https://ourgoldguy.com/contact/"] +fijivillage.com##[href="https://psh.com.fj/cardiac/"] +bioinformant.com##[href="https://regenevive.com/bioinformant/%20"] +davidwalsh.name##[href="https://requestmetrics.com/"] +sythe.org##[href="https://runewager.com/r/SytheBottom"] +unknowncheats.me##[href="https://securecheats.com/"] +daijiworld.com##[href="https://sjec.ac.in/"] +slaynews.com##[href="https://slaynews.com/ads/"] +tlidb.com##[href="https://tap.io/MFOnPjs"] > img +complaintsingapore.com##[href="https://thechillipadi.com/"] +photorumors.com##[href="https://topazlabs.com/ref/70/"] +uncrate.com##[href="https://un.cr/advertise"] +walletinvestor.com##[href="https://walletinvestor.com/u/gnrATE"] +thetimes.com.au##[href="https://workspace.google.com/lp/solutions/ai/"] +duplichecker.com##[href="https://www.duplichecker.com/gcl"] +wikifeet.com##[href="https://www.feetfix.com"] +patio.so##[href="https://www.flexpowertools.com/"] +messitv.net##[href="https://www.gamzz.net"] +hackster.io##[href="https://www.hackster.io/events"] +linuxcommandlibrary.com##[href="https://www.hydralands.com"] +thetimes.com.au##[href="https://www.oracle.com/anz/database/"] +10minutemail.com##[href="https://www.remove-metadata.com"] +sythe.org##[href="https://www.runewager.com/r/SytheBottom"] +jagoroniya.com##[href="https://www.virtuanic.com/"] +cnx-software.com##[href="https://www.youyeetoo.com/"] +watch.spencerdevs.xyz##[href="https://zaccounts.io/"] +wplocker.com##[href^="//namecheap.pxf.io/"] +mediafire.com##[href^="//static.mediafire.com/dynamic/af_link.php"] +unogs.com##[href^="/ad/"] +broadcastify.com##[href^="/click/"] +vikingfile.com##[href^="/fast-download/"] +ar15.com##[href^="/forums/transfers.html"] +poe2db.tw,poedb.tw##[href^="/s/tl3"] > img +tossinggames.com,urbanartassociation.com##[href^="http://redirect.viglink.com"] +eevblog.com##[href^="http://s.click.aliexpress.com/"] +learn-cpp.org##[href^="http://www.spoj.com/"] +monocle.com##[href^="https://a1.adform.net/C/"] +scribd.vpdfs.com##[href^="https://accounts.binance.com"] +windows-noob.com##[href^="https://adaptiva.com/"] +open.spotify.com##[href^="https://adclick.g.doubleclick.net/"] +topfiveforex.com##[href^="https://affiliate.iqoption.com/"] +getcomics.org,weloma.art##[href^="https://aichattings.com"] +brighteon.com##[href^="https://ams.brighteon.com/"] +bluelockread.com,dbsmanga.com,demonslayermanga.com,downloadsource.net,mvnrepository.com,orschlurch.net,photorumors.com,read7deadlysins.com,readblackclover.com,readbleachmanga.com,readchainsawman.com,readdrstone.com,readfairytail.com,readhaikyuu.com,readhxh.com,readichithewitch.com,readjojos.com,readjujutsukaisen.com,readkagurabachimanga.com,readkaguyasama.com,readkingdom.com,readmha.com,readnaruto.com,readneverland.com,readonepiece.com,readsakadays.com,readsnk.com,readsololeveling.org,readtokyorevengers.net,readvinlandsaga.com,tokyoghoulre.com##[href^="https://amzn.to/"] +cloutgist.com,codesnse.com##[href^="https://app.adjust.com/"] +wiki.gg##[href^="https://app.wiki.gg/showcase/"] +tech-fairy.com##[href^="https://apps.apple.com/gb/app/"] +topfiveforex.com##[href^="https://betfury.io/"] +seganerds.com##[href^="https://betway.com/"] +artificialintelligence-news.com,mangakakalot.gg##[href^="https://bit.ly/"] +coingolive.com##[href^="https://bitpreco.com/"] +50gameslike.com##[href^="https://click.linksynergy.com/"] +learn-cpp.org##[href^="https://codingforkids.io"] +parametric-architecture.com##[href^="https://enscape3d.com/"] +yourstory.com##[href^="https://form.jotform.com/"] +limetorrents.ninjaproxy1.com##[href^="https://gamestoday.org/"] +ahaan.co.uk,emailnator.com,myip.is,scrolller.com,whereto.stream##[href^="https://go.nordvpn.net/"] +phandroid.com##[href^="https://howl.link/"] +imagetwist.com##[href^="https://imagetwist.com/pxt/"] +topfiveforex.com##[href^="https://iqoption.com/"] +theburningplatform.com##[href^="https://libertasbella.com/collections/"] +1337x.to,x1337x.eu,x1337x.ws##[href^="https://limeiptv.to"] +keqingmains.com##[href^="https://lootbar.gg/"] +akasha.cv##[href^="https://lootbar.gg/top-up/genshin-impact-top-up"] +topfiveforex.com##[href^="https://luckyfish.io/"] +crypto-news-flash.com##[href^="https://mollars.com/"] +etherscan.io##[href^="https://moonpay-affiliate-program.sjv.io/"] +mobdisc.com##[href^="https://mq.omenpenial.com/"] +thelibertydaily.com##[href^="https://mypatriotsupply.com/"] +keqingmains.com##[href^="https://noveltranslator.com"] +mobilesringtones.com##[href^="https://obqj2.com/"] +topfiveforex.com##[href^="https://olymptrade.com/"] +topfiveforex.com##[href^="https://omibet.io/"] +windows-noob.com##[href^="https://patchmypc.com/"] +unknowncheats.me##[href^="https://proxy-seller.com/"] +multi.xxx##[href^="https://prtord.com/"] +cryptonews.com##[href^="https://rapi.cryptonews.com/"] +rlsbb.cc##[href^="https://rlsbb.cc/link.php"] +rlsbb.ru##[href^="https://rlsbb.ru/link.php"] +all-free-download.com##[href^="https://shutterstock.7eer.net/c/"] img +terraria.wiki.gg##[href^="https://store.steampowered.com/app/"] +brighteon.com##[href^="https://support.brighteon.com/"] +beforeitsnews.com,highshortinterest.com##[href^="https://tinyurl.com/"] +tlidb.com##[href^="https://torchlight.xd."] > img +tripsonabbeyroad.com##[href^="https://tp.media/"] +cnx-software.com##[href^="https://ugoos.com/"] +minidl.org##[href^="https://uploadgig.com/premium/index/"] +cnx-software.com##[href^="https://url4.cnx-software.com/"] +allkeyshop.com##[href^="https://vaks.re/"] +wikifeet.com##[href^="https://vip.stakeclick.com/"] +bleepingcomputer.com##[href^="https://www.adaptivesecurity.com/"] +artificialintelligence-news.com##[href^="https://www.ai-expo.net/"] +cnx-software.com##[href^="https://www.aliexpress.com/"] +spectator.org,thespoken.cc##[href^="https://www.amazon.com/"] +cnx-software.com##[href^="https://www.armdesigner.com/"] +artificialintelligence-news.com##[href^="https://www.artificialintelligence-news.com/go/"] +bleepingcomputer.com##[href^="https://www.bleepingcomputer.com/go/"] +work.ink##[href^="https://www.buff.game/buff-download/"] +electrek.co##[href^="https://www.energysage.com/landing/"] +ratemycourses.io##[href^="https://www.essaypal.ai"] +everythingrf.com##[href^="https://www.everythingrf.com/external.aspx"] +seganerds.com##[href^="https://www.ewinracing.com/"] +gamecopyworld.com,gamecopyworld.eu##[href^="https://www.kinguin.net/"] +defenseworld.net##[href^="https://www.marketbeat.com/scripts/redirect.aspx"] +cnx-software.com##[href^="https://www.mekotronics.com/"] +how2electronics.com##[href^="https://www.nextpcb.com/"] +ownedcore.com##[href^="https://www.ownedcore.com/forums/cb.php"] +how2electronics.com##[href^="https://www.pcbway.com/"] +messitv.net##[href^="https://www.redbubble.com/"] +cnx-software.com##[href^="https://www.rikomagic.com/"] +bikeroar.com##[href^="https://www.roaradventures.com/"] +searchcommander.com##[href^="https://www.searchcommander.com/rec/"] +shroomery.org##[href^="https://www.shroomery.org/ads/"] +swimcompetitive.com##[href^="https://www.swimoutlet.com/"] +bleepingcomputer.com##[href^="https://www.threatlocker.com/"] +screenshot-media.com##[href^="https://www.tryamazonmusic.com/"] +protrumpnews.com##[href^="https://www.twc.health/"] +ultimate-guitar.com##[href^="https://www.ultimate-guitar.com/send?ug_from=redirect"] +wakingtimes.com##[href^="https://www.wendymyersdetox.com/"] +babylonbee.com##[href^="https://www.yrxtrk.com/aff_c"] +musicbusinessworldwide.com##[href^="https://wynstarks.lnk.to/"] +bleepingcomputer.com##[href^="https://ztw.com/"] +cars.com##[id$="-sponsored"] +lolalytics.com##[id$=":inline"] +news18.com##[id*="_Ad_Mid"] +bridgebase.com##[id*="_ad"] +slashdot.org,sourceforge.net##[id*="mongo-"] +homedepot.com##[id*="sponsored"] +80.lv##[id^="Image_bner_"] +ldoceonline.com##[id^="ad_contentslot"] +eloshapes.com##[id^="ads-"] +bestbuy.ca,bestbuy.com##[id^="atwb-ninja-carousel"] +beforeitsnews.com##[id^="banners_"] +pluggedingolf.com##[id^="black-studio-tinymce-"] +shipt.com##[id^="cms-ad_banner"] +dictionary.com##[id^="dco"] +hola.com##[id^="div-hola-slot-"] +designtaxi.com##[id^="dt-small-"] +skyblock.bz##[id^="flips-"] +getcomics.org##[id^="getco-"] +eatthis.com##[id^="gm_karmaadunit_widget"] +vice.com##[id^="htlad-"] +designtaxi.com##[id^="in-news-link-"] +komando.com##[id^="leaderboardAdDiv"] +indexclix.com##[id^="promo"] +prydwen.gg##[id^="pw-header-ad"] +dailydooh.com##[id^="rectdiv"] +gizchina.com##[id^="slot"] +ingenuityfantasy.com##[id^="snack-"] +si.com##[id^="static-ad-placeholder_"] +daily-choices.com##[id^="sticky_"] +alternet.org##[id^="story_page_incontent_"] +thesaurus.com##[id^="tco"] +topcpu.net##[id^="topcpu_net_in_page_repeat_responsive"][style="min-height: 300px;"] +everythingrf.com##[id^="wallpaper_"] +wuxiaworld.site##[id^="wuxia-"] +samfw.com##[name="chimera_b"] +grabcad.com##[ng-if="model.asense"] +buzzheavier.com##[onclick="downloadAd()"] +survivopedia.com##[onclick="recordClick("] +timesofindia.indiatimes.com##[onclick="stpPgtn(event)"] +qvc.com##[onclick^="cmCreateManualLinkClickTag"] +filecrypt.cc,filecrypt.co##[onclick^="var lj"] +haxmac.cc##[onclick^="window.open"] +transfermarkt.co.uk##[referrerpolicy] +appleinsider.com,dappradar.com,euroweeklynews.com,metro.co.uk,tld-list.com,twitch-tools.rootonline.de,wccftech.com##[rel*="sponsored"] +warecracks.com,websiteoutlook.com##[rel="nofollow"] +unknowncheats.me##[rel^="sponsored"] +justjared.com##[role="banner"] {top:0 !important} +myanimelist.net##[src*="/c/img/images/event/"] +audioz.download##[src*="/promo/"] +bleepingcomputer.com##[src*="https://www.bleepstatic.com/c/t/threatlocker/"] +transfermarkt.com##[src*="https://www.transfermarkt.com/image/"] +wallpaperaccess.com##[src="/continue.png"] +audiobookbay.is##[src="/images/d-t.gif"] +audiobookbay.is##[src="/images/dire.gif"] +webcamtests.com##[src^="/MyShowroom/view.php?medium="] +linuxtopia.org##[src^="/includes/index.php/?img="] +academictorrents.com##[src^="/pic/sponsors/"] +exportfromnigeria.info##[src^="http://storage.proboards.com/"] +exportfromnigeria.info##[src^="http://storage2.proboards.com/"] +exportfromnigeria.info##[src^="https://storage.proboards.com/"] +exportfromnigeria.info##[src^="https://storage2.proboards.com/"] +buzzly.art##[src^="https://submissions.buzzly.art/CANDY/"] +nesmaps.com##[src^="images/ads/"] +mangaplus.shueisha.tv##[style$="height: 260px; position: relative; width: 680px;"] +nyaa.land##[style$="max-width: 1365px;"] +manhwabtt.com,tennismajors.com##[style$="min-height: 250px;"] +neoseeker.com##[style$="min-height:355px;clear:both"] +minerstat.com##[style$="min-height:90px;display:flex;justify-content:center;"] +livejournal.com##[style$="width: 300px;"] +circleid.com##[style*="300px;"] +circleid.com##[style*="995px;"] +uindex.org##[style*="border: 2px solid #ff4081; background: #fff0f6; padding: 14px;"] +nintendolife.com,purexbox.com,pushsquare.com,timeextension.com,videogameschronicle.com##[style*="content-visibility: visible;"] +nintendolife.com,purexbox.com,pushsquare.com,timeextension.com,videogameschronicle.com##[style*="display: block !important; margin-bottom: 20px;"] +download.megaup.net##[style*="display: inline-flex; flex-wrap: wrap; justify-content: center; padding: 26px 0"] +kingmodapk.net,online-calculator.org##[style*="height:300px"] +nintendolife.com,purexbox.com,pushsquare.com,timeextension.com,videogameschronicle.com##[style*="margin-left: auto; margin-right: auto;"] +helpnetsecurity.com##[style*="max-height: 250"] +ford-trucks.com##[style*="min-height: 275px"] +untapped.gg##[style*="min-height: 90px; box-sizing: content-box;"] +nintendolife.com,purexbox.com,pushsquare.com,timeextension.com,videogameschronicle.com##[style*="min-height:250px;"] +coolors.co##[style*="position:absolute;top:20px;"] +bravoporn.com,gogoanime.co.in,harimanga.me,hurawatch.cc,instamod.co,leercapitulo.co,mangadna.com,miraculous.to,putlockers.li,sukidesuost.info,waploaded.com,yts-subs.com##[style*="width: 100% !important;"] +bravoporn.com,gogoanime.co.in,harimanga.me,hurawatch.cc,instamod.co,leercapitulo.co,mangadna.com,messitv.net,miraculous.to,putlockers.li,sukidesuost.info,waploaded.com,yts-subs.com##[style*="z-index:"] +shotcut.org##[style="background-color: #fff; padding: 6px; text-align: center"] +realitytvworld.com##[style="background-color: white; background: white"] +imgbox.com##[style="display: inline-block;width:300px;height:250px"] +coin360.com##[style="display:flex;justify-content:center;align-items:center;min-height:100px;position:relative"] +upi.com##[style="height: 102px; min-width: 982px; margin: 0 auto;"] +guides.wp-bullet.com##[style="height: 288px;"] +forum.lowyat.net##[style="height:120px;padding:10px 0;"] +imagecolorpicker.com##[style="height:250px"] +forum.lowyat.net##[style="height:250px;padding:5px 0 5px 0;"] +tenforums.com##[style="height:280px;"] +geekzone.co.nz##[style="height:90px"] +thespoken.cc##[style="margin-bottom: 25px;"] +builtbybit.com##[style="margin-top: 20px; display: flex; justify-content: center;"] +realitytvworld.com##[style="margin: 5px 0px 5px; display: inline-block; text-align: center; height: 250;"] +gpfans.com##[style="margin:10px auto 10px auto; text-align:center; width:100%; overflow:hidden; min-height: 250px;"] +timesnownews.com##[style="min-height: 181px;"] +namemc.com##[style="min-height: 238px"] +africam.com##[style="min-height: 250px;"] +waifu2x.net##[style="min-height: 270px; margin: 1em"] +mydramalist.com##[style="min-height: 600px;"] +phys.org##[style="min-height: 601px;"] +adweek.com##[style="min-height: 90px; box-sizing: content-box;"] +africam.com,open3dlab.com##[style="min-height: 90px;"] +utctime.net##[style="min-height:120px"] +calendar-uk.co.uk,theartnewspaper.com,utctime.net##[style="min-height:250px;"] +theroar.com.au##[style="min-height:260px;max-height:260px;overflow:hidden;"] +ntd.com##[style="min-height:266px"] +ntd.com##[style="min-height:296px"] +mydramalist.com##[style="min-height:327px;"] +cnbctv18.com##[style="min-height:4000px"] +mydramalist.com##[style="min-height:600px;"] +jigsawplanet.com##[style="min-height:90px"] +edgegamers.com##[style="padding-bottom:10px;height:90px;"] +pahe.ink##[style="padding-top: 0; padding-bottom: 90px;"] +dvdsreleasedates.com##[style="padding:15px 0 15px 0;width:728px;height:90px;text-align:center;"] +himovies.sx##[style="text-align: center; margin-bottom: 20px; margin-top: 20px;"] +analyticsinsight.net##[style="text-align: center;"] +kreationnext.com##[style="text-align:center"] +forum.nasaspaceflight.com##[style="text-align:center; margin-bottom:30px;"] +news.bitcoin.com##[style="width: 100%; height: auto; max-width: 300px;"] +news.bitcoin.com##[style="width: 100%; height: auto; max-width: 690px;"] +waifu2x.net##[style="width: 90%;height:120px"] +law360.com##[style="width:100%;display:flex;justify-content:center;background-color:rgb(247, 247, 247);flex-direction:column;"] +skylinewebcams.com##[style="width:100%;text-align:center"] +tennisworldusa.org##[style="width:300px;min-height:250px;"] +newagebd.net##[style^="float:left; width:320px;"] +hsreplay.net##[style^="min-height: 90px;"] +decrypt.co##[style^="min-width: 728px;"] +filmdaily.co,gelbooru.com,integral-calculator.com,twcenter.net##[style^="width: 728px;"] +mn4u.net##[style^="width:336px!important;"] +klto9.com##[style^="width:336px"] +news12.com##[template="leaderboard"] +myfitnesspal.com##[title*="Ad"] +balls.ie##[type="doubleclick"] +wordcount.im##[value="DIRECT DOWNLOAD"] +kiryuu.id##[width="1280"] +fansshare.com##[width="300"] +igg-games.co,igg-games.com,pcgamestorrents.com,pcgamestorrents.org##[width="300"][height^="25"] +cdmediaworld.com,flashx.cc,flashx.co,forum.gsmhosting.com,gametarget.net,jeepforum.com,lnkworld.com,themediaonline.co.za,transdict.com##[width="468"] +americanfreepress.net,namepros.com,readneverland.com##[width="600"] +drwealth.com##[width="640"] +artificialintelligence-news.com,autoaction.com.au,cryptoreporter.info,dafont.com,developer-tech.com,forexmt4indicators.com,gamblingnewsmagazine.com,godradio1.com,irishcatholic.com,runnerstribe.com,tntribune.com,tryorthokeys.com##[width="728"] +elitepvpers.com##[width="729"] +elitepvpers.com##[width="966"] +presearch.com##[x-data*="kwrdAdFirst"] +smailpro.com##[x-data="buysellads()"] +kingmods.net##[x-data="nativeAd"] +presearch.com##[x-show="showBanner"] +mobiforge.com##a > img[alt="Ad"] +eztv.tf,eztv.yt##a > img[alt="Anonymous Download"] +designtaxi.com##a.a-click[target="_blank"] +cript.to##a.btn[target="_blank"][href^="https://cript.to/"] +infowars.com##a.css-1yw960t +scloud.ws,stagatv.com##a.download-button +darkreader.org##a.logo-link[target="_blank"] +hulkshare.com##a.nhsIndexPromoteBlock +steam.design##a.profile_video[href^="https://duobot.com/"] +marinelink.com##a.sponsored +cults3d.com##a.tbox-thumb[href^="https://jlc3dp.com/"] +cults3d.com##a.tbox-thumb[href^="https://shrsl.com/"] +cults3d.com##a.tbox-thumb[href^="https://us.store.flsun3d.com/"] +cults3d.com##a.tbox-thumb[href^="https://www.kickstarter.com/"] +cults3d.com##a.tbox-thumb[href^="https://www.sunlu.com/"] +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##a[ajaxify*="&eid="] + a[href^="https://l.facebook.com/l.php?u="] +newstalkflorida.com##a[alt="Ad"] +moviekhhd.biz##a[alt="Sponsor Ads"] +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##a[aria-label="Advertiser link"] +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##a[aria-label="Advertiser"] +themainewire.com##a[aria-label^="The Maine Wire Banner Ad"] +alibaba.com##a[campaignid][target="_blank"] +bernama.com##a[class^="banner_photo_"] +probuilds.net##a[class^="dl-blitz-"] +zerohedge.com##a[class^="endorsement"] +trakt.tv##a[class^="hu-ck-s-t-er-"][target="_blank"] +mallorca.com##a[data-ad] +turkmenportal.com##a[data-content="promotion"] +androidauthority.com##a[data-sel="db-link-el"] +sashares.co.za##a[data-wpel-link="external"] +klarna.com##a[href*="&clickarea=sponsored&"] +pinterest.com##a[href*="&epik="] +imgpile.com,linuxjournal.com,threatpost.com##a[href*="&utm_campaign="] +hitbullseye.com##a[href*="&utm_medium="] +useragents.me##a[href*=".pxf.io"] +codelist.cc##a[href*=".pxf.io/"] > img +chicagoprowrestling.com##a[href*="//thecmf.com/"] > img +chicagoprowrestling.com##a[href*="//www.aliciashouse.org/"] > img +majorgeeks.com##a[href*="/affiliate.php?"] +pcgamestorrents.com##a[href*="/gameadult/"] +breakingbelizenews.com,cardealermagazine.co.uk,headfonics.com,igorslab.de,landline.media,mikesmoneytalks.ca,sundayworld.co.za,theroanokestar.com,visualcapitalist.com##a[href*="/linkout/"] +movie-censorship.com##a[href*="/out.php?"] +imagetwist.com##a[href*="/par/"] +pnn.ps##a[href*="/partners/"] +civilserviceindia.com##a[href*="/red.php?bu="] +amsterdamnews.com,sundayworld.co.za,universityaffairs.ca##a[href*="/sponsored-content/"] +biznews.com,businessdailyafrica.com,coastreporter.net,financialexpress.com,irishtimes.com,komonews.com,nsnews.com,prpeak.com,richmond-news.com,spokesman.com##a[href*="/sponsored/"] +distrowatch.com##a[href*="3cx.com"] +97rock.com,wedg.com##a[href*="716jobfair.com"] +cript.to##a[href*="8stream-ai.com"] +uploadrar.com##a[href*="?"][target="_blank"] +hexload.com##a[href*="?key="] +vortexscans.org##a[href*="https://toffee.ai/"] +filefleck.com,haxnode.net,sadeempc.com,usersdrive.com##a[href*="javascript:"] +twitter.com,x.com##a[href*="src=promoted_trend_click"] +twitter.com,x.com##a[href*="src=promoted_trend_click"] + div +coolors.co##a[href*="srv.Buysellads.com"] +unitconversion.org##a[href="../noads.html"] +winaero.com##a[href="/fix-prf-issues/"] +osradar.com##a[href="http://insiderapps.com/"] +cryptorank.io##a[href="https://aitechpad.io"][target="_blank"] +dailyuploads.net##a[href="https://aptoze.com/"] +tpb.party##a[href="https://mysurferprotector.com/"] +smalldev.tools##a[href="https://sendit.arcana.network"] +pc-games.eu.org##a[href="javascript:void(0)"] +4rfv.co.uk##a[href][onclick^="tAjax"] +techporn.ph##a[href][target*="blank"] +tractorbynet.com##a[href][target="_blank"] > img[class^="attachment-large"] +igg-games.co,igg-games.com,pcgamestorrents.com,pcgamestorrents.org##a[href^="/"][href*="?"] +codapedia.com##a[href^="/ad-click.cfm"] +bestoftelegram.com##a[href^="/ads/banner_ads?"] +graphic.com.gh##a[href^="/adverts/"] +audiobookbay.is##a[href^="/dl-14-days-trial"] +kickasstorrents.to##a[href^="/download/"] +pcgamestorrents.com##a[href^="/offernf"] +tehrantimes.com##a[href^="/redirect/ads/"] +xbox-hq.com##a[href^="banners.php?"] +shitbrix.com,tattoofailure.com##a[href^="http://goo.gl/"] +wjbc.com##a[href^="http://sweetdeals.com/bloomington/deals"] +amazingfoodmadeeasy.com##a[href^="http://www.amazon.com/gp/product"] +1280wnam.com##a[href^="http://www.milwaukeezoo.org/visit/animals/"] +rpg.net##a[href^="http://www.rpg.net/ads/"] +warm98.com##a[href^="http://www.salvationarmycincinnati.org"] +tundraheadquarters.com##a[href^="http://www.tkqlhce.com/"] +whatfinger.com##a[href^="https://1775coffee.com/"] +shareae.com##a[href^="https://aejuice.com/"] +coincarp.com##a[href^="https://bcgame.sk/"] +detectiveconanworld.com##a[href^="https://brave.com/"] +broadwayworld.com##a[href^="https://cloud.broadwayworld.com/rec/ticketclick.cfm"] +cript.to##a[href^="https://cript.to/goto/"] +cript.to##a[href^="https://cript.to/link/"][href*="?token="] +cryptorank.io##a[href^="https://cryptorank.io/earn/"][target="_blank"] +cryptorank.io##a[href^="https://cryptorank.io/insights/research/"][target="_blank"] +sythe.org##a[href^="https://discord.gg/dmwatch"] +pluggedingolf.com##a[href^="https://edisonwedges.com/"] +gamesleech.com##a[href^="https://foldgun.xyz/"] +americasvoice.news##a[href^="https://freekit.birchgold.com/"] +files.im##a[href^="https://galaxyroms.net/?scr="] +egamersworld.com##a[href^="https://geni.us/"] +warm98.com##a[href^="https://giving.cincinnatichildrens.org/donate"] +disasterscans.com##a[href^="https://go.onelink.me/"] +forkast.news##a[href^="https://h5.whalefin.com/landing2/"] +fileditch.com##a[href^="https://hostslick.com/"] +douploads.net##a[href^="https://href.li/?"] +http.dog##a[href^="https://http.app/"] +embed.listcorp.com##a[href^="https://j.moomoo.com/"] +disasterscans.com##a[href^="https://martialscanssoulland.onelink.me/"] +metager.org##a[href^="https://metager.org"][href*="/partner/r?"] +cryptorank.io##a[href^="https://nft.chaingpt.org/events/"][target="_blank"] +emalm.com##a[href^="https://offer.alibaba.com/"] +portalmybot.com##a[href^="https://otixer.com/?ref="] +101thefox.net##a[href^="https://parisicoffee.com/"] +blix.gg##a[href^="https://partnerbcgame.com/"] +conservativefiringline.com##a[href^="https://patriotdepot.com?aff="] +crackedresource.com##a[href^="https://popcornpump.xyz/"] +metager.org##a[href^="https://r.search.yahoo.com/"] +disasterscans.com##a[href^="https://recall-email.onelink.me/"] +modyolo.com##a[href^="https://referencemen.net/"] +narkive.com##a[href^="https://rfnm.io/?"] +cnx-software.com##a[href^="https://rock.sh/"] +emalm.com,linkdecode.com,up-4ever.net##a[href^="https://s.click.aliexpress.com/"] +http.dog##a[href^="https://searchbrothers.com/"] +997wpro.com##a[href^="https://seascapeinc.com/"] +cointelegraph.com##a[href^="https://servedbyadbutler.com/"] +listland.com##a[href^="https://shareasale.com/r.cfm?"] +nzbstars.com##a[href^="https://signup.usenetbucket.com/"] +blockchain.com##a[href^="https://snapmarkets.com/?utm_"] +wbnq.com,wbwn.com,wjbc.com##a[href^="https://stjude.org/radio/"] +glory985.com##a[href^="https://sweetbidsflo.irauctions.com/listing/0"] +faceitanalyser.com##a[href^="https://t.csgofast.cash/"] +veev.to##a[href^="https://t.ly/"] +piratebay.live##a[href^="https://thesurferprotector.com/"] +accesswdun.com##a[href^="https://tinyurl.com"] > img +scrolller.com##a[href^="https://trk.scrolller.com/"] +primewire.link##a[href^="https://url.rw/"] +vnkb.com##a[href^="https://vnkb.com/e/"] +1280wnam.com##a[href^="https://wistatefair.com/fair/tickets/"] +startpage.com,startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion##a[href^="https://ww44.affinity.net/"] +ancient-origins.net,anisearch.com,catholicculture.org,lewrockwell.com,ssbcrack.com##a[href^="https://www.amazon."][href*="tag="] +wjbc.com##a[href^="https://www.farmweeknow.com/rfd_radio/"] +magic1069.com##a[href^="https://www.fetchahouse.com/"] +coachhuey.com##a[href^="https://www.hudl.com"] +elamigos-games.net##a[href^="https://www.instant-gaming.com/"][href*="?igr="] +isitiptv.com##a[href^="https://www.isitiptv.com/recommends/"] > img +domaintyper.com,thecatholictravelguide.com##a[href^="https://www.kqzyfj.com/"] +wgrr.com##a[href^="https://www.mccabelumber.com/"] +wbnq.com,wbwn.com,wjbc.com##a[href^="https://www.menards.com/main/home.html"] +joxfm.com##a[href^="https://www.milb.com/"] +thelibertydaily.com##a[href^="https://www.mypillow.com"] +who.is##a[href^="https://www.name.com/redirect/"] +minecraft-schematics.com##a[href^="https://www.pingperfect.com/aff.php?"] +sythe.org##a[href^="https://www.runestake.com/r/"] +foxcincinnati.com##a[href^="https://www.safeauto.com"] +sportscardforum.com##a[href^="https://www.sportscardforum.com/rbs_banner.php?"] +thecatholictravelguide.com##a[href^="https://www.squaremouth.com/"] +adfoc.us##a[href^="https://www.survivalservers.com/"] +itsfoss.com,linuxhandbook.com##a[href^="https://www.warp.dev"] +yugatech.com##a[href^="https://yugatech.ph/"] +taiyangnews.info##a[href^="javascript:clickTrach('"] +kitguru.net##a[id^="href-ad-"] +home-barista.com,washingtontimes.com##a[onclick] +zeroupload.com##a[onclick][href^="javascript"] +dailytruthreport.com##a[onclick^="javascript:window.open('https://bit.ly/"] +amishamerica.com##a[rel="nofollow"] > img +gab.com##a[rel="noopener"][target="_blank"][href^="https://grow.gab.com/go/"] +downforeveryoneorjustme.com,useragents.me##a[rel="sponsored"] +nslookup.io,stackabuse.com,unsplash.com##a[rel^="sponsored"] +colombotimes.lk##a[target="_blank"] img:not([src*="app.jpg"]) +opensubtitles.org##a[target="_blank"][href^="https://www.amazon.com/gp/search"] +classicstoday.com##a[target="_blank"][rel="noopener"] > img +megaplay.cc,wiztube.xyz##a[title="Free money easy"] +kroger.com##a[title^="Advertisement:"] +rottentomatoes.com##ad-unit +cryptodaily.co.uk##advert +cooljugator.com##amp-auto-ads +extraetf.com##app-ad-block +reverso.net##app-ads-block +unmatched.gg##app-advertising +arkadiumhosted.com##ark-top-ad +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##article[data-ft*="\"ei\":\""] +linkedin.com##article[data-is-sponsored] +xing.com##article[data-qa="disco-updates-video-ad"] +xing.com##article[data-qa="disco-updates-website-ad"] +greatist.com##aside +4runnerforum.com,acuraforums.com,blazerforum.com,buickforum.com,cadillacforum.com,camaroforums.com,cbrforum.com,chryslerforum.com,civicforums.com,corvetteforums.com,fordforum.com,germanautoforums.com,hondaaccordforum.com,hondacivicforum.com,hondaforum.com,hummerforums.com,isuzuforums.com,kawasakiforums.com,landroverforums.com,lexusforum.com,mazdaforum.com,mercuryforum.com,minicooperforums.com,mitsubishiforum.com,montecarloforum.com,mustangboards.com,nissanforum.com,oldsmobileforum.com,pontiactalk.com,saabforums.com,saturnforum.com,truckforums.com,volkswagenforum.com,volvoforums.com##aside > center +gulfcoastnewsnow.com,ketv.com,wisn.com,wjcl.com##aside > div:has(> div > div > div.ad-container) +gulfcoastnewsnow.com,ketv.com,wisn.com,wjcl.com##aside > div:has(> div > div.ad-container) +everydayrussianlanguage.com##aside img[src^="/wp-content/themes/edr/img/"] +petmd.com##aside[aria-label="advertisement"] +bluejaysnation.com,canucksarmy.com,dailyfaceoff.com,flamesnation.ca,oilersnation.com,theleafsnation.com##bam-inline-promotion +bluejaysnation.com,canucksarmy.com,dailyfaceoff.com,flamesnation.ca,oilersnation.com,theleafsnation.com##bam-inline-promotion-block +bluejaysnation.com,canucksarmy.com,dailyfaceoff.com,flamesnation.ca,oilersnation.com,theleafsnation.com##bam-promotion-list +nbcsports.com##bsp-reverse-scroll-ad +dustinabbott.net##center > a > img +sailingmagazine.net##center > font +greekreporter.com##center > p > [href] +pricehistoryapp.com##center[class^="min-h-"] +builtbybit.com##center[style="margin-top: 20px"] +hltv.org##csmoney-skins-widget +cvs.com##cvs-shop-product-shelf-container[shelf-type*="criteoType"] +weatherbug.com##display-ad-widget +wings.io##div > [href="https://mechazilla.io"] +readonepiece.com##div > b +coffeeordie.com##div.HtmlModule > [href] +web.telegram.org##div.bubbles > div.scrollable > div.bubbles-inner > div.is-sponsored +gearspace.com##div.deal__unit +easypet.com##div.kt-inside-inner-col > div.wp-block-kadence-rowlayout +baking-forums.com,windows10forums.com##div.message--post.message +thehackernews.com##div.rocking +tld-list.com##div.row > .text-center > .ib +ccvaults.com##div.sidebar-slide-in.md\:block.hidden +home.cricketwireless.com##div.skeleton.block-item +forward.com##div.sticky-container:first-child +newegg.com##div.swiper-slide[data-sponsored-catalyst] +investing.com##div.text-\[\#5b616e\] +inverse.com##div.zz +presearch.com##div[\:class*="AdClass"] +boxing-social.com##div[ad-slot] +liverpoolway.co.uk##div[align="center"] > a[href] +informer.com##div[align="center"][style="margin:10px"] +yandex.com##div[aria-label="Ad"] +lifehacker.com##div[aria-label="Products List"] +imginn.com##div[class$="-money"] +tribuna.com##div[class$="_ads-container"] +azuremagazine.com##div[class$="azoa"] +wsj.com##div[class*="WSJTheme--adWrapper"] +pcgamer.com,techcrunch.com,tomsguide.com,tomshardware.com##div[class*="ad-unit"] +aajtakcampus.in##div[class*="ads_ads_container__"] +dallasnews.com##div[class*="features-ads"] +foodbible.com,gamingbible.com,ladbible.com,sportbible.com,unilad.com##div[class*="margin-Advert"] +thefiscaltimes.com##div[class*="pane-dfp-"] +pexels.com##div[class="RowItem_gridItem__OfhML RowItem_fullWidth__cIdtN RowItem_expand__TR5R6"] +emojipedia.org##div[class="flex flex-col items-center md:order-1"] +qz.com##div[class="hidden md:block"] +politico.com##div[class][rowindex]:has(> .ad) +timesofindia.com##div[class^="ATF_container_"] +arkadium.com##div[class^="Ad-adContainer"] +dailymotion.com##div[class^="AdBanner"] +breastcancer.org,emojipedia.org##div[class^="AdContainer"] +3addedminutes.com,anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,blackpoolgazette.co.uk,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,doncasterfreepress.co.uk,falkirkherald.co.uk,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##div[class^="AdLoadingText"] +pricespy.co.nz,pricespy.co.uk##div[class^="AdPlacement"] +lataco.com##div[class^="AdUnit_"] +usnews.com##div[class^="Ad__Container-"] +i24news.tv##div[class^="Advert_"] +sportinglife.com##div[class^="Article__FlashTalkingWrapper-"] +barrons.com##div[class^="BarronsTheme--adWrapper"] +someecards.com##div[class^="BaseAdSlot_adContainer_"] +theglobeandmail.com##div[class^="BaseAd_"] +cnbc.com##div[class^="BoxRail-Styles-"] +donedeal.ie##div[class^="DFP__StyledAdSlot-"] +genius.com##div[class^="DfpAd__Container-"] +dailymotion.com##div[class^="DisplayAd"] +games.dailymail.co.uk,nba.com##div[class^="DisplayAd_"] +games.dailymail.co.uk##div[class^="GameTemplate__displayAdTop_"] +tomato.gg##div[class^="GenericPage__VerticalAdslotContainer"] +benzinga.com##div[class^="GoogleAdBlock_"] +allradio.net##div[class^="GoogleAdsenseContainer_"] +livescore.com##div[class^="HeaderAdsHolder_"] +games.dailymail.co.uk##div[class^="HomeCategory__adWrapper_"] +games.dailymail.co.uk##div[class^="HomeTemplate__afterCategoryAd_"] +sportinglife.com##div[class^="Layout__TopAdvertWrapper-"] +nyctourism.com##div[class^="Layout_mobileStickyAdContainer"] +genius.com##div[class^="LeaderboardOrMarquee__"] +edhrec.com##div[class^="Leaderboard_"] +appsample.com##div[class^="MapLayout_Bottom"] +dailymotion.com##div[class^="NewWatchingDiscovery__adSection"] +dsearch.com##div[class^="PreAd_"] +games.dailymail.co.uk##div[class^="RightRail__displayAdRight_"] +genius.com##div[class^="SidebarAd_"] +3addedminutes.com,anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,blackpoolgazette.co.uk,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,doncasterfreepress.co.uk,falkirkherald.co.uk,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##div[class^="SidebarAds_"] +lataco.com##div[class^="Sponsorship_"] +chloeting.com##div[class^="StickyFooterAds__Wrapper"] +newyorker.com##div[class^="StickyHeroAdWrapper-"] +scotsman.com##div[class^="TopBanner"] +cnbc.com##div[class^="TopBanner-"] +dailymotion.com##div[class^="VideoInfo__videoInfoAdContainer"] +makeitmeme.com##div[class^="_adContainer_"] +semafor.com##div[class^="_adDivider_"] +cyprus-mail.com##div[class^="_amHorizontal_"] +timeout.com##div[class^="_inlineAdWrapper_"] +timeout.com##div[class^="_sponsoredContainer_"] +cyprus-mail.com##div[class^="_stickyCnt_"] +crictracker.com##div[class^="ad-block-"] +fodors.com,thehulltruth.com##div[class^="ad-placeholder"] +gamingdeputy.com##div[class^="ad-wrapper-"] +goodrx.com##div[class^="adContainer"] +pixabay.com##div[class^="adSponsoredMediaContainer-"] +statsroyale.com##div[class^="adUnit_"] +goodrx.com##div[class^="adWrapper-"] +90min.com,investing.com,newsday.com##div[class^="ad_"] +constative.com##div[class^="ad_placeholder_"] +ehitavada.com##div[class^="ad_space_"] +greatandhra.com##div[class^="add"] +ndtv.com##div[class^="add_"] +ntdeals.net,psdeals.net,xbdeals.net##div[class^="ads-"] +dnaindia.com##div[class^="ads-box"] +giphy.com##div[class^="ads_"] +foodbible.com,gamingbible.com,ladbible.com,sportbible.com,tyla.com,unilad.com##div[class^="advert-placeholder_"] +woolworths.com.au##div[class^="aem-video-ad-unit_component_video-container_"] +365scores.com##div[class^="all-scores-container_ad_placeholder_"] +247solitaire.com,247spades.com##div[class^="aspace-"] +stakingrewards.com##div[class^="assetFilters_desktop-banner_"] +releasestv.com##div[class^="astra-advanced-hook-"] +onlineradiobox.com##div[class^="banner-"] +technical.city##div[class^="banner_"] +365scores.com##div[class^="bookmakers-review-widget_"] +historycollection.com##div[class^="cis_add_block"] +filehorse.com##div[class^="dx-"][class$="-1"] +365scores.com##div[class^="external-ad_"] +forbes.com##div[class^="fbs-ad"] +goal.com##div[class^="game-day_ad-"] +365scores.com##div[class^="games-predictions-widget_container_"] +astro.com##div[class^="goad"] +groovypost.com##div[class^="groov-adsense-"] +imagetopdf.com,pdfkit.com,pdftoimage.com,topdf.com,webpconverter.com##div[class^="ha"] +technologyreview.com##div[class^="headerTemplate__leaderboardRow-"] +3addedminutes.com,anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,blackpoolgazette.co.uk,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,doncasterfreepress.co.uk,falkirkherald.co.uk,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##div[class^="helper__AdContainer"] +localjewishnews.com##div[class^="local-feed-banner-ads"] +bloomberg.com##div[class^="media-ui-BaseAd"] +bloomberg.com##div[class^="media-ui-FullWidthAd"] +goal.com##div[class^="open-web-ad_"] +nltimes.nl##div[class^="r89-"] +nationalmemo.com,spectrum.ieee.org,theodysseyonline.com##div[class^="rblad-"] +windowsreport.com##div[class^="refmedprd"] +windowsreport.com##div[class^="refmedprod"] +geekchamp.com##div[class^="rk-"] +kijiji.ca##div[class^="sponsored-"] +pixabay.com##div[class^="sponsoredSection-"] +target.com##div[class^="styles__PubAd"] +semafor.com##div[class^="styles_ad"] +unmineablesbest.com##div[class^="uk-visible@"] +gamingdeputy.com##div[class^="vb-"] +whatsondisneyplus.com##div[class^="whats-"] +podchaser.com##div[data-aa-adunit] +nine.com.au##div[data-ad-target^="header-ad"] +unsplash.com##div[data-ad="true"] +deeplol.gg##div[data-ad] +tennews.in##div[data-adid] +3addedminutes.com,anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,blackpoolgazette.co.uk,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,doncasterfreepress.co.uk,falkirkherald.co.uk,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##div[data-ads-params] +spiegel.de##div[data-advertisement$=":mobile"] +back2gaming.com##div[data-ai] +999thehawk.com##div[data-alias="Sweetjack"] +chatgpt.com##div[data-assistant-ads] +bestbuy.ca##div[data-automation^="criteo-sponsored-products-carousel-"] +reddit.com##div[data-before-content="advertisement"] +artforum.com##div[data-component="ad-unit-gallery"] +theverge.com##div[data-concert] +bedbathandbeyond.com##div[data-cta="plpSponsoredProductClick"] +gamingbible.com,unilad.com##div[data-cypress^="sticky-header"] +esmmagazine.com##div[data-dfp] +thestudentroom.co.uk##div[data-freestar-ad] +feedzop.com##div[data-gzp-display-ad-status] +my.clevelandclinic.org##div[data-identity*="board-ad"] +briskoda.net##div[data-ips-ad] +popculture.com##div[data-lx-claimed="zone-desktop-incontent"] +popculture.com##div[data-lx-claimed="zone-desktop-index-leaderboard"] +softonic.com##div[data-meta="placeholder-slot"] +lightnovelworld.co##div[data-mobid] +yandex.com##div[data-name="adWrapper"] +uefa.com##div[data-name="sponsors-slot"] +nogomania.com##div[data-ocm-ad] +thebay.com##div[data-piq-toggle="true"] +opentable.*##div[data-promoted="true"] +scmp.com##div[data-qa="AdSlot-Container"] +scmp.com##div[data-qa="AppBar-AdSlotContainer"] +scmp.com##div[data-qa="ArticleHeaderAdSlot-Placeholder"] +scmp.com##div[data-qa="AuthorPage-HeaderAdSlotContainer"] +scmp.com##div[data-qa="GenericArticle-MobileContentHeaderAdSlot"] +scmp.com##div[data-qa="GenericArticle-TopPicksAdSlot"] +scmp.com##div[data-qa="InlineAdSlot-Container"] +xing.com##div[data-qa="jobs-inline-ad"] +xing.com##div[data-qa="jobs-recommendation-ad"] +duckduckgo.com##div[data-react-module-id="products-0"] +basschat.co.uk,momondo.*##div[data-resultid$="-sponsored"] +briskoda.net,linustechtips.com##div[data-role="sidebarAd"] +fylio.com##div[data-slot] +costco.com##div[data-source="sponsored"] +aliexpress.com,aliexpress.us##div[data-spm="seoads"] +ecosia.org##div[data-test-id="mainline-result-ad"] +ecosia.org##div[data-test-id="mainline-result-productAds"] +debenhams.com##div[data-test-id^="sponsored-product-card"] +investing.com##div[data-test="ad-slot-visible"] +symbaloo.com##div[data-test="homepageBanner"] +producthunt.com##div[data-test^="ad-slot-"] +startribune.com##div[data-testid$="-ad"] +costco.com##div[data-testid="AdSet-all-sponsored_products_-_search_bottom"] +costco.com##div[data-testid="AdSet-all-sponsored_products_-_search_top"] +semafor.com##div[data-testid="ad-body"] +semafor.com##div[data-testid="ad-sticky-header"] +copilot.microsoft.com##div[data-testid="ads-card"] +alternativeto.net##div[data-testid="adsense-wrapper"] +hotstar.com##div[data-testid="bbtype-video"] +manomano.co.uk,manomano.de,manomano.es,manomano.fr,manomano.it##div[data-testid="boosted-product-recommendations"] +twitter.com,x.com##div[data-testid="cellInnerDiv"] > div > div[class] > div[class][data-testid="placementTracking"] +twitter.com,x.com##div[data-testid="cellInnerDiv"] a[aria-label="Follow the action"] +qwant.com##div[data-testid="heroTiles"] +qwant.com##div[data-testid="homeTrendsContainer"] a[href^="https://api.qwant.com/v3/r/?u="] +qwant.com##div[data-testid="pam.container"] +g2a.com##div[data-testid="placement"] +lowes.com##div[data-testid="playwright-gam-carousel-banner"] +qwant.com##div[data-testid="productAdsMicrosoft.container"] +samsclub.com##div[data-testid="sba-container"] +freepik.com##div[data-testid="unicorn-banner"] +birminghammail.co.uk,bristolpost.co.uk,dailyrecord.co.uk,hulldailymail.co.uk,irishstar.com,liverpoolecho.co.uk,manchestereveningnews.co.uk,stokesentinel.co.uk,walesonline.co.uk##div[data-testid^="commercial-"] +forbes.com##div[data-testid^="fbs-ad"] +hulldailymail.co.uk##div[data-tmdatatrack-type="commercial"] +audi-sport.net##div[data-widget-key="Snack_Side_Menu_1"] +audi-sport.net##div[data-widget-key="Snack_Side_Menu_2"] +audi-sport.net##div[data-widget-key="forum_home_sidebar_top_ads"] +audi-sport.net##div[data-widget-key="right_top_ad"] +audi-sport.net##div[data-widget-key="sellwild_sidebar_bottom"] +cults3d.com##div[data-zone-bsa] +miaminewtimes.com,westword.com##div[gpt-slot-config-id] +miaminewtimes.com,westword.com##div[gpt-slot-div-id-base] +serververify.com##div[hx-get="https://serververify.com/advertisement/load"] +noon.com##div[id*="-adProductsListBanner-"] +spin.com##div[id*="-promo-lead-"] +spin.com##div[id*="-promo-mrec-"] +chrome-stats.com##div[id*="billboard_responsive"] +thenewspaper.gr##div[id*="thene-"] +slashdot.org,sourceforge.net##div[id*="vibe"] +diskingdom.com##div[id="diski-"] +en.namu.wiki,ja.namu.wiki##div[id][class]:empty +thewire.in##div[id^="ATD_"] +geeksforgeeks.org##div[id^="GFG_AD_"] +kisshentai.net,onworks.net##div[id^="ad"] +newsner.com##div[id^="ad-"] +songlyrics.com##div[id^="ad-absolute-160"] +nationalrail.co.uk##div[id^="ad-advert-"] +belloflostsouls.net##div[id^="ad-container-"] +parade.com##div[id^="ad-in_content"] +timeout.com##div[id^="ad-promo-"] +timeout.com##div[id^="ad-side-"] +javacodegeeks.com##div[id^="adngin-"] +agoda.com##div[id^="ads-"] +advrider.com##div[id^="ads_"] +pixiv.net##div[id^="adsdk-"] +antiguanewsroom.com##div[id^="antig-"] +check-host.net##div[id^="antpeayvraea"] +slidesgo.com##div[id^="article_ads"] +business-standard.com##div[id^="between_article_content_"] +imggen.ai,iplogger.org,jsonlint.com,wallhere.com,webnots.com,wikitechy.com##div[id^="bsa-zone_"] +bsc.news##div[id^="bscn-ad-"] +business2community.com##div[id^="busin-"] +competenetwork.com##div[id^="compe-"] +elfaro.net##div[id^="content-ad-body"] +titantv.com##div[id^="ctl00_TTLB"] +timesofindia.com##div[id^="custom_ad_"] +cyprus-mail.com##div[id^="cypru-"] +football-tribe.com##div[id^="da-article-"] +rediff.com##div[id^="div_ad_"] +fossforce.com##div[id^="fossf-"] +memedroid.com##div[id^="freestar-ad-"] +gamepix.com##div[id^="gpx-banner"] +si.com##div[id^="inarticle_"] +maltadaily.mt##div[id^="malta-"] +mediabiasfactcheck.com##div[id^="media-"] +gamebyte.com,irishnews.com##div[id^="mpu"] +ai-online.com##div[id^="onlin-"] +demonicscans.org##div[id^="pf-"] +pretoriafm.co.za##div[id^="preto-"] +eloshapes.com##div[id^="prmos-"] +howtogeek.com##div[id^="purch_"] +radioinsight.com##div[id^="radio-"] +realtalk933.com##div[id^="realt-"] +geekchamp.com##div[id^="rk-"] +rsbnetwork.com##div[id^="rsbne-"] +ruralradio.com##div[id^="rural-"] +sbstatesman.com##div[id^="sbsta-"] +smallnetbuilder.com##div[id^="snb-"] +filehorse.com##div[id^="td-"] +birrapedia.com##div[id^="textoDivPublicidad_"] +searchenginereports.net##div[id^="theBdsy_"] +theroanoketribune.org##div[id^="thero-"] +yovizag.com##div[id^="v-yovizag-"] +weraveyou.com##div[id^="werav-"] +mommypoppins.com##div[id^="wrapper-div-gpt-ad-"] +wallpaperflare.com##div[itemtype$="WPAdBlock"] +forums.pcsx2.net##div[onclick^="MyAdvertisements."] +streamed.pk,streamed.st,streami.su##div[role="alert"] +medscape.com##div[ssr-ads] +castanet.net##div[style*="height:900px"] +worldstar.com##div[style*="max-height:250px"] +news18.com##div[style*="min-height"][style*="background"] +news18.com##div[style*="min-height: 250px"] +footballtransfers.com##div[style*="min-height: 250px;"] +news18.com##div[style*="min-height:250px"] +newsbreak.com##div[style*="position:relative;width:100%;height:0;padding-bottom:"] +news18.com,readcomiconline.li##div[style*="width: 300px"] +datacenterdynamics.com,fansshare.com,hairboutique.com,iconarchive.com,imagetwist.com,memecenter.com,neoseeker.com,news18.com,paultan.org,thejournal-news.net,unexplained-mysteries.com,windsorite.ca,xtra.com.my##div[style*="width:300px"] +castanet.net##div[style*="width:300px;"] +castanet.net##div[style*="width:640px;"] +clover.fm##div[style*="width:975px; height:90px;"] +thelatinonewsletter.org##div[style="align-items:center;display:flex;flex-direction:column;gap:20px;justify-content:center;margin:0 auto 0 auto;padding-bottom:20px;padding-left:27px;padding-right:27px;padding-top:20px;"] +majorgeeks.com##div[style="background-color: #F5F5E3; color: #333333; padding: 10px 10px; border: 2px solid #666633; border-radius: 5px; font-size: 16px; text-align: center; box-shadow: 0px 4px 6px rgba(0, 0, 0, 0.1); font-family: Arial, sans-serif; white-space: nowrap;"] +filesharingtalk.com##div[style="background-color: white; border-width: 2px; border-style: dashed; border-color: white;"] +askdifference.com##div[style="color: #aaa"] +startpage.com,startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion##div[style="display: block; padding: 12px; margin: 0px 0px 10px; border-radius: 4px; border: 1px solid rgb(59, 67, 91);"] +manhwabtt.cc##div[style="display: flex; justify-content: space-around; flex-flow: wrap; min-height: 250px;"] +time.is##div[style="display:flex;justify-content:center;width:100%;margin-top:20px;height:250px"] +aceshowbiz.com##div[style="display:inline-block;min-height:300px"] +pixiv.net##div[style="font-size: 0px;"] a[target="premium_noads"] +distractify.com,greenmatters.com,inquisitr.com,okmagazine.com,radaronline.com##div[style="font-size:x-small;text-align:center;padding-top:10px"] +beta.riftkit.net##div[style="height: 300px; width: 400px;"] +pixiv.net##div[style="height: 540px; opacity: 1;"] +paraphraser.io##div[style="height:128px;overflow: hidden !important;"] +wikibrief.org##div[style="height:302px;width:auto;text-align:center;"] +comics.org##div[style="height:90px"] +productreview.com.au##div[style="line-height:0"] +upjoke.com##div[style="margin-bottom:0.5rem; min-height:250px;"] +gsmarena.com##div[style="margin-left: -10px; margin-top: 30px; height: 145px;"] +time.is##div[style="margin-top:10px;float:right;background:#c35;padding:10px;"] +theroar.com.au##div[style="margin: 0px auto; text-align: center; height: 280px; max-height: 280px; overflow: hidden;"] +transdict.com##div[style="margin:24px 80px; padding:8px; height:120px;"] +vr-compare.com##div[style="min-height: 250px; background-color: rgba(0, 0, 0, 0.133); display: flex; justify-content: center; align-items: center;"] +autoblog.com##div[style="min-height: 250px;"] +alternativeto.net##div[style="min-height: 280px;"] +editpad.org##div[style="min-height: 300px;min-width: 300px"] +wikiwand.com##div[style="min-height: 325px; max-width: 600px;"] +gamereactor.asia,gamereactor.cn,gamereactor.com.tr,gamereactor.cz,gamereactor.de,gamereactor.dk,gamereactor.es,gamereactor.eu,gamereactor.fi,gamereactor.fr,gamereactor.gr,gamereactor.it,gamereactor.jp,gamereactor.kr,gamereactor.me,gamereactor.nl,gamereactor.no,gamereactor.pl,gamereactor.pt,gamereactor.se,gamereactor.vn##div[style="min-height: 600px; margin-bottom: 20px;"] +disneydining.com##div[style="min-height:125px;"] +chessgames.com##div[style="min-height:250px; text-align:center; margin:10px auto;"] +alternativeto.net##div[style="min-height:280px"] +askdifference.com,online-calculator.org##div[style="min-height:280px;"] +newser.com##div[style="min-height:398px;"] +etvbharat.com,flotrack.org##div[style="min-width: 300px; min-height: 250px;"] +etvbharat.com##div[style="min-width: 300px; min-height: 600px;"] +editpad.org##div[style="min-width: 300px;min-height: 300px"] +etvbharat.com##div[style="min-width: 728px; min-height: 90px;"] +technical.city##div[style="padding-bottom: 20px"] > div[style="min-height: 250px"] +bitcoin-otc.com##div[style="padding-left: 10px; padding-bottom: 10px; text-align: center; font-family: Helvetica;"] +anikuro.to##div[style="position: absolute; z-index: 99999"] +9gag.com##div[style="position: relative; z-index: 3; width: 640px; min-height: 202px; margin: 0px auto;"] +navajotimes.com##div[style="text-align: center; margin-top: -35px;"] +wikibrief.org##div[style="text-align:center;height:302px;width:auto;"] +m.koreatimes.co.kr##div[style="width: 300px; height:250px; overflow: hidden; margin: 0 auto;"] +ultimatespecs.com##div[style="width:100%;display:block;height:290px;overflow:hidden"] +elevenforum.com##div[style="width:300px;padding-bottom:10px;text-align:center;height:612px;margin-bottom:15px;"] +constative.com##div[style]:not([class]) +whatmobile.com.pk##div[style^="background-color:#EBEBEB;"] +fctables.com##div[style^="background:#e3e3e3;position:fixed"] +pastebin.com##div[style^="color: #999; font-size: 12px; text-align: center;"] +realpython.com##div[style^="display:block;position:relative;"] +newser.com##div[style^="display:inline-block;width:728px;"] +elitepvpers.com##div[style^="font-size:11px;"] +drudgereport.com##div[style^="height: 250px;"] +crazygames.com##div[style^="height: 90px;"] +apkdone.com,crazygames.com,english-hindi.net,livesoccertv.com,malaysiakini.com,sporticos.com##div[style^="height:250px"] +titantv.com##div[style^="height:265px;"] +marketbeat.com##div[style^="height:270px;width:100%;"] +altchar.com##div[style^="height:280px;"] +marketbeat.com##div[style^="height:300px;width:100%;"] +malaysiakini.com##div[style^="height:600px"] +whatmobile.com.pk##div[style^="height:610px"] +point2homes.com,propertyshark.com##div[style^="margin-bottom: 10px;"] +unionpedia.org##div[style^="margin-top: 15px; min-width: 300px"] +gizbot.com,goodreturns.in,inc.com##div[style^="min-height: 250px"] +point2homes.com,propertyshark.com##div[style^="min-height: 360px;"] +online-calculator.org##div[style^="min-height:90px"] +latestly.com##div[style^="min-width: 300px; min-height: 250px;"] +decrypt.co,metabattle.com##div[style^="min-width: 300px;"] +gtaforums.com##div[style^="text-align: center; margin: 0px 0px 10px;"] +appleinsider.com##div[style^="text-align:center;border-radius:0;"] +jwire.com.au##div[style^="width:468px;"] +imgbabes.com##div[style^="width:604px;"] +interglot.com,sodapdf.com,stopmalvertising.com##div[style^="width:728px;"] +ebay.com##div[title="ADVERTISEMENT"] +metropcs.mobi##div[title="Advertisement"] +presearch.com##div[x-show*="_ad_click"] +adblock-tester.com##embed[width="240"] +staige.tv##fanpage-club-sponsor +teslaoracle.com##figure.aligncenter +groupon.com##figure[data-clickurl^="https://api.groupon.com/sponsored/"] +imgburn.com##font[face="Arial"][size="1"] +realitytvworld.com##font[size="1"][color="gray"] +dailydot.com##footer +law.com,topcultured.com##h3 +kazwire.com##h3.tracking-widest +drive.com.au##hr +linkedin.com##iframe[componentkey$="_ad"] +nordstrom.com##iframe[data-revjet-options] +linkedin.com##iframe[height="250"][width="300"] +pixiv.net##iframe[height="300"][name="responsive"] +pixiv.net##iframe[height="520"][name="expandedFooter"] +lolvvv.com,yourbittorrent.com##iframe[src] +realgearonline.com##iframe[src^="http://www.adpeepshosted.com/"] +linkedin.com##iframe[title="Advertisement"] +linkedin.com##iframe[title="advertisement"] +pixiv.net##iframe[width="300"][height="250"] +premiumtimesng.com##img[alt$=" Ad"] +vortexscans.org##img[alt*="Advertisement"] +f1technical.net##img[alt="Amazon"] +cnx-software.com##img[alt="ArmSoM CM5 - Raspberry Pi CM4 alternative with Rockchip RK3576 SoC"] +cnx-software.com##img[alt="Cincoze industrial GPU computers"] +cnx-software.com##img[alt="I-PI SMARC Intel Amston Lake devkit"] +cnx-software.com##img[alt="Intel Amston Lake COM Express Type 6 Compact Size module"] +cnx-software.com##img[alt="Orange Pi Amazon Store"] +cnx-software.com##img[alt="ROCK 5 ITX RK3588 mini-ITX motherboard"] +cnx-software.com##img[alt="Radxa ROCK 5C (Lite) SBC with Rockchip RK3588 / RK3582 SoC"] +cnx-software.com##img[alt="Rockchip RK3568/RK3588 and Intel x86 SBCs"] +newagebd.net##img[alt="ads space"] +framed.wtf##img[alt="prime gaming banner"] +majorgeeks.com##img[alt="tip"] +majorgeeks.com##img[alt="tip"] + b +pasty.info##img[aria-label="Aliexpress partner network affiliate Link"] +pasty.info##img[aria-label="Ebay partner network affiliate Link"] +inkbotdesign.com##img[decoding="async"] +cloutgist.com,codesnse.com##img[fetchpriority] +nepallivetoday.com,wjr.com##img[height="100"] +thomhartmann.com##img[height="200"] +newyorkyimby.com##img[height="280"] +callofwar.com##img[referrerpolicy] +nsfwyoutube.com##img[src*="data"] +bcmagazine.net##img[style^="width:300px;"] +unb.com.bd##img[style^="width:700px; height:70px;"] +lyngsat-logo.com,lyngsat-maps.com,lyngsat-stream.com,lyngsat.com,webhostingtalk.com##img[width="160"] +fashionpulis.com,swagger.io,techiecorner.com##img[width="250"] +airplaydirect.com,bigeye.ug,completesports.com,cryptoreporter.info,cvltnation.com,espnrichmond.com,financialmirror.com,flsentinel.com,forexmt4indicators.com,freedomhacker.net,gamblingnewsmagazine.com,gameplayinside.com,goodcarbadcar.net,kenyabuzz.com,kiwiblog.co.nz,linuxhostsupport.com,mkvcage.com,movin100.com,mycolumbuspower.com,newzimbabwe.com,oann.com,onislandtimes.com,ouo.press,portlandphoenix.me,punchng.com,robhasawebsite.com,sacobserver.com,sdvoice.info,seguintoday.com,themediaonline.co.za,theolivepress.es,therep.co.za,tntribune.com,up-4ever.net,wantedinafrica.com,wantedinrome.com,wschronicle.com##img[width="300"] +boxthislap.org,unknowncheats.me##img[width="300px"] +independent.co.ug##img[width="320"] +gamblingnewsmagazine.com##img[width="365"] +grail.moe,trans.info##img[width="500"] +americasvoice.news,arcadepunks.com,sweetalert2.github.io##img[width="728"] +boxthislap.org##img[width="728px"] +trans.info##img[width="756"][height="310"] +justthenews.com##img[width="798"][height="450"] +umod.org##ins[data-revive-id] +unmineablesbest.com##ins[style^="display:inline-block;width:300px;height:250px;"] +everythingrf.com,natureworldnews.com##label +tellows-au.com,tellows-tr.com,tellows.*##li > .comment-body[style*="min-height: 250px;"] +cgpress.org##li > div[id^="cgpre-"] +bestbuy.com##li.embedded-sponsored-listing +cultbeauty.co.uk,dermstore.com##li.sponsoredProductsList +laredoute.*##li[class*="sponsored-"] +linkedin.com##li[data-is-sponsored="true"] +duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##li[data-layout="products"] +duckduckgo.com##li[data-layout="products_middle"] +opentable.*##li[data-promoted="true"] +xing.com##li[data-qa="notifications-ad"] +instacart.com##li[data-testid="compact-item-list-header"] +flaticon.com##li[id^="bn-icon-list"] +softonic.com##li[id^="res-top-downloads-spc-"] +linkvertise.com##lv-redirect-static-ad +escorenews.com##noindex +adblock-tester.com##object[width="240"] +forums.golfwrx.com##ol.cTopicList > li.ipsDataItem:not([data-rowid]) +experte.com##overlay-block +americanfreepress.net##p > [href] > img +ft.com##pg-slot.pg-slot[id] +coincarp.com##position-name +producthunt.com##section.group + div > section.group +engadget.com##section.md\:min-h-\[310px\] +mashable.com##section.mt-4 > div +torontosun.com##section[aria-describedby*="advertisment"] +weather.com##section[aria-label="Sponsored Content"] +bedbathandbeyond.com##section[class^="showcaseAds_container"] +bestbuy.ca##section[data-automation="dynamic-content-featured-sku-list-home_fsl_sponsored"] +bbc.com##section[data-e2e="advertisement"] +foodandwine.com##section[id*="mntl-four-post--sponsored"] +woolworths.com.au##shared-header-adaptive-menu-panel.category-list .featured +reddit.com##shreddit-ad-post +reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##shreddit-comments-page-ad +tempostorm.com##side-banners +smartprix.com##sm-dap +nativeplanet.com##span[class^="oiad-txt"] +thewire.in##span[style*="background: rgb(232, 233, 237); text-align: center;"] +fxempire.com##span[style="user-select:none"] +homedepot.ca##sponsored-banner +americanfreepress.net##strong > span > a +torlock.com##table.hidden-xs +realitytvworld.com##table[border="0"][align="left"] +thebbqforum.com##table[border="0"][width] +thebbqforum.com##table[border="1"][width] +roadtester.com.au##table[cellpadding="9"][border="0"] +wifinetnews.com##table[height="260"] +softpanorama.org##table[height="620"] +afrol.com##table[height="70"] +automobile-catalog.com,car.com,silentera.com##table[height="90"] +automobile-catalog.com,itnewsonline.com##table[width="300"] +worldtimezone.com##table[width="472"] +pcstats.com##table[width="866"] +vpforums.org##td[align="center"][style="padding: 0px;"] +schlockmercenary.com##td[colspan="3"] +geekzone.co.nz##td[colspan="3"].forumRow[style="border-right:solid 1px #fff;"] +titantv.com##td[id^="menutablelogocell"] +rextester.com##td[style="width:160px;padding-top:65px;"] +wordreference.com##td[style^="height:260px;"] +itnewsonline.com##td[width="120"] +greyhound-data.com##td[width="160"] +eurometeo.com##td[width="738"] +radiosurvivor.com##text-18 +telescopius.com##tlc-ad-banner +trademe.co.nz##tm-display-ad +titantv.com##tr.gridRow > td > [id] > div:first-child +livetv.sx##tr[height] ~ tr > td[colspan][height][bgcolor="#000000"] +justetf.com##tr[onclick^="gaW"] +morningagclips.com##ul.logo-nav +greyhound-data.com##ul.ppts +greatandhra.com##ul.sortable-list > div +washingtonpost.com##wp-ad-wrapper +!!! top-level domain wildcard +flashscore.*,livescore.*,soccer24.com###box-over-content-a +flashscore.*,flashscoreusa.com,livescore.*,soccer24.com###box-over-content-revive +yts.*###dontfoid +pv-magazine-australia.com,pv-magazine-usa.com,pv-magazine.*###home-top-rectangle-wrap-1 +pv-magazine-australia.com,pv-magazine-usa.com,pv-magazine.*###home-top-rectangle-wrap-2 +pv-magazine-australia.com,pv-magazine-usa.com,pv-magazine.*###home-top-rectangle-wrap-3 +laredoute.*###hp-sponsored-banner +nextpit.*###nex-footer +nextpit.*###nex-incontent-1 +nextpit.*###nex-incontent-2 +nextpit.*###nex-incontent-3 +nextpit.*###nex-top +checkfelix.com,kayak.*,momondo.*,swoodoo.*##.CGMG:has(.c_3eP-badge-content) +wayfair.*##.CompareSimilarItemsCarousel-item:has(a[href*="&sponsoredid="]) +wayfair.*##.MediaNativePlacement-wrapper-link +yandex.*##.ProductGallery +yandex.*##.Scroller:has(a[href^="https://yabs.yandex.ru/count/"]) +checkfelix.com,kayak.*,momondo.*,swoodoo.*##.Tl2M-contentInner:has(.c_3eP-badge-content) +momondo.*##.WTQR-ad-card +momondo.*##.YnaR:has([class$="ProviderAdBanner"]) +yandex.*##._view_advertisement +miruro.*##.a-ads +bier-universum.*##.abc-wrapper +leroymerlin.*##.arm-dss-content-sponsored +flashscore.*,flashscoreusa.com,livescore.*,soccer24.com##.banner +yandex.*##.business-card-title-view__advert +douglas.*##.cms-container:has([data-testid="CriteoAdFormatCategoryView"]) +douglas.*##.criteo-product-carousel +kaufland.*##.exp-vision__ext-wrapper--spad +yts.*##.home-content > div:has(.blue ~ a img[src*="/images/download"]) +streamsports99.*##.min-h-\[70px\] +yandex.*##.mini-suggest__item[data-suggest-counter*="/yandex.ru/clck/safeclick/"] +flashscore.*##.outrightWidget +lazada.*##.pdp-block__product-ads +kaufland.*##.product--spa +kaufland.*##.product--sponsored +douglas.*##.product-grid-column:has(.criteo-spotlight) +douglas.*##.product-grid-column:has([data-testid="sponsored-button"]) +leroymerlin.*##.product-thumbnail:has(.o-thumbnail__sponsored) +kaufland.*##.product:has(div.product__sponsored-ad-label) +tripadvisor.*##.rSJod +kaufland.*##.rd-recommender__tile:has(div.rd-product-tile__badge--ad) +kaufland.*##.rd-recommender__tile:has(span.advertiser-info__button-icon) +leroymerlin.*##.recommendation--sponso +yandex.*##.search-advert-badge +yandex.*##.search-business-snippet-view__direct +yandex.*##.search-list-view__advert-offer-banner +flashscore.*##.section__prematchOdds +vinted.*##.slot-container--leaderboard +kaufland.*##.spads-recommender +deliveroo.*##.splide__slide:has(p[data-testid="sponsored-label"]) +kaufland.*##.sponsored-brand-products-container +douglas.*##.swiper-slide:has(button[data-testid="sponsored-button"]) +kaufland.*##.teaser-orchestration__wrapper--online +momondo.*##.zZcm:has([class$="-ad-wrapper"]) +flashscore.*,livescore.*,soccer24.com##.zone +momondo.*##[class$="-result-item-container"]:has([aria-label="Ad disclaimer"]) +momondo.*##[class$="result-item-container"]:has([class$="provider-ad-badge"]) +momondo.*##[class*="mod-pres-default"]:has(div[class*="ad-badge"]) +walmart.*##[data-automation="flipkartDisplayAds"] +tripadvisor.*##[data-automation="nova-ad-InlineNova"] +wayfair.*##[data-enzyme-id="Display-Ad-Container"] +wayfair.*##[data-hb-id="Card"]:has([data-node-id^="ListingCardSponsored"]) +tripadvisor.*##[data-sponsored="sponsored"]:has(.txxUo) +walmart.*##[data-testid="carousel-ad"] +skyscanner.*##[data-testid="inline-ad-panel-desktop-layout"]:has([data-testid="adInfoBtn"]) +douglas.*##[data-testid="product-overview-content-slot"]:has(.criteo-teaser-gold__sponsored) +wayfair.*##a[data-enzyme-id="WssBannerContainer"] +walmart.*##a[href*=".criteo.com/"] +manomano.*##a[href^="/"][href*="?product_id="][title]:has(span > .svg_tamagoshi) +yandex.*##a[href^="https://yabs.yandex.ru/count/"] +yandex.*##a[href^="https://yandex.ru/an/count/"] +leroymerlin.*##aside[data-st-name="sponsored"] +deliveroo.*#?#div[class^="HomeFeedScrollTracker-"]:has(span[class^="HomeFeedUILines-"]:has-text(Sponsored)) +hookerhillstudios.com##div.items-center:has(> #articlead) +douglas.*##div.product-grid-column:has(button[data-testid="sponsored-button"]) +checkfelix.com,kayak.*,momondo.*,swoodoo.*##div[class$="-result-item-container"]:has(a[href*="/s/clickthrough.jsp?"]) +checkfelix.com,kayak.*,momondo.*,swoodoo.*##div[class$="-result-item-container"]:has(div[class$="-ad-badge"]) +skyscanner.*##div[class*="InlineAd_card-wrapper"] +walmart.*##div[class="mv3 ml3 mv4-xl mh0-xl"][data-testid="sp-item"] +tripadvisor.*##div[class="ui_container dSjaD _S"] +skyscanner.*##div[class^="FlightsInlineAdContainer_"] +deliveroo.*##div[class^="HomeFeedScrollTracker-"]:has(div[data-testid="sponsored-badge"] > p[data-testid="sponsored-tag"]) +deliveroo.*##div[class^="HomeFeedScrollTracker-"]:has(p[data-testid="sponsored-rating-distance"] > span[data-testid="label-prefix"]) +skyscanner.*##div[class^="InlineAd_container_"] +zoohit.*,zooplus.*##div[class^="SearchSuggestion-module_suggestionItem_"]:has(.z-sponsored-tag) +walmart.*##div[data-automation^="HookLogicCarouses"] +skyscanner.*##div[data-backpack-ds-component]:has(#inline-ad-button) +tripadvisor.*##div[data-curated-shelf-id]:has(a[rel="sponsored"]) +wayfair.*##div[data-enzyme-id="WssBannerContainer"] +pinterest.com##div[data-grid-item]:has([data-test-pin-id] [data-test-id^="one-tap-desktop"] > a[href^="http"][rel="nofollow"]):not(body > div) +wayfair.*##div[data-hb-id="Grid.Item"]:has(a[href*="&sponsoredid="]) +wayfair.*##div[data-name="DisplayAd"] +wayfair.*##div[data-node-id^="SponsoredListingCollectionItem"] +checkfelix.com,kayak.*,momondo.*,swoodoo.*##div[data-resultid$="-sponsored"] +downdetector.*##div[data-service-list-ad] +leroymerlin.*##div[data-st-name="sponsored"] +costco.*##div[data-testid="AdSet-all-sponsored_products"] +walmart.*##div[data-testid="sp-item"] +walmart.*##div[data-testid="sp-search-middle"] +manomano.*##div[data-testid="sprbrd-banner"] +walmart.*##div[data-testid="tile-take-over"]:has(#sponsored-label) +walmart.*##div[data-testid^="sba-container"] +lidl.*##div[data-type="sponsored"] +zoohit.*,zooplus.*##div[data-zta="product-card"]:has(.z-sponsored-tag) +walmart.*##div[id*="SponsoredProductCarousel"] +checkfelix.com,kayak.*,momondo.*,swoodoo.*##div[role="button"]:has(.c_3eP-badge-content) +momondo.*##div[role="button"][tabindex="0"]:has(div.c_3eP-badge-content) +checkfelix.com,kayak.*,momondo.*,swoodoo.*##div[role="link"]:has(.c_3eP-badge-content) +autoscout24.*##img[referrerpolicy="unsafe-url"] +sameday.costco.*##li:has([aria-label="Product"]):has([data-fp-eligible]):not(:has(h2)) +yandex.*##li[class*="_card"]:has(a[href^="https://yandex.com/search/_crpd/"]) +deliveroo.*##li[class^="Slide-"]:has(div[data-testid="sponsored-tag"] > p[data-testid="label"]) +deliveroo.*##li[class^="Slide-"]:has(div[data-testid="sponsored-tag"] > p[data-testid="sponsored-tag-label"]) +leroymerlin.*##li[data-product-list-id*="sponsored"] +walmart.*##section[data-dca-type="module"]:has(img[src^="https://i5.walmartimages.ca/dfw/8822aef6-854b/k2-_cb5cd2e8-b2ce-4ab7-b954-e86bea1e7648.v1.jpg"]) +! :has() +etherscan.io###ContentPlaceHolder1_maintable > .card > .row:has(a[href="/contactusadvertise"]) +windowscentral.com###article-body > .hawk-nest[data-widget-id]:has(a[class^="hawk-affiliate-link-"][class$="-button"]) +cars.com###branded-canvas-click-wrapper:has(> #native-ad-html) +mytempsms.com###container-ad > .col-sm-12[style]:has(> .adsbygoogle) +news.mydramalist.com###content > .app-body > div:has(.htlad-header_top) +familytreenow.com###ftn_detail_left_side_organic +gocomics.com###header-content-start:has([data-testid="advertising-unit"]) +radio.at,radio.de,radio.dk,radio.es,radio.fr,radio.it,radio.net,radio.pl,radio.pt,radio.se###headerTopBar ~ div > div:has(div#RAD_D_station_top) +gtaforums.com###ipsLayout_mainArea div:has(> #pwDeskLbAtf) +kohls.com###kmncarousel-add_buy_carousel-anchor:has(.KMNProductSlider__sponsored) +kohls.com###kmncarousel-page-anchor:has(.KMNProductSlider__sponsored) +klz9.com###list-imga center:has(> a[id^="adLink"]) +klz9.com###list-imga center:has(a[href^="https://olimposcans.com/"]) +ratehub.ca###main-content > div > section:has([class^="Ad__Container-sc-"]) +noon.com###modules-renderer:has([class*="sponsored"]) +noon.com###noon-modules:has([class*="AdBrandVideo"]) +noon.com###noon-modules:has(div[data-qa="widget_AdMultiProductSide"]) +wsj.com###other-buckets > div > div:has(> .uds-ad-container) +momondo.com###resultWrapper [role="group"]:has(> [class*="-adInner"]) +euobserver.com###root > div > div:has(#dfp-billboard) +aleteia.org###root > div[class]:has(> .adslot) +etsy.com###search-results li:has([id^="ad-listing-title-"]) +staples.com###searchResultsContainer [data-id^="tile"]:has(.standard-tile__sponsored_badge_holder) +scribd.com###sidebar > div:has(> div > [data-e2e^="dismissible-ad-header"]) +bbc.com###sticky-mpu:has(.dotcom-ad-inner) +gsmarena.com###subHeader:has(> #topAdv) +gamereactor.*###videoContainer:has(> [id^="videoContent-videoad-"]) +ping0.cc###websites-wrap:has([rel$="sponsored"]) +kroger.com##.AutoGrid-cell:has(.ProductCard-tags > div > span[data-qa="featured-product-tag"]) +kayak.com,momondo.*##.CGMG:has(.CGMG-logo-ad-wrapper) +nationalgeographic.com##.FrameBackgroundFull--grey:has(.ad-wrapper) +sbs.com.au##.MuiBox-root:has(> .desktop-ads) +luxa.org##.MuiContainer-root:has(> ins.adsbygoogle) +washingtonpost.com##.PJLV-ifmxCWD-css:has([data-qa="outbrain"]) +manomano.co.uk,manomano.de,manomano.es,manomano.fr,manomano.it##.Ssfiu-:has([data-testid="popoverTriggersponsoredLabel"]) +outlook.live.com##.VdboX[tabindex="0"]:has(img[src="https://res.cdn.office.net/assets/ads/adbarmetrochoice.svg"]) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##._6y8t:has(a[href="/ads/about/?entry_product=ad_preferences"]) +pixiv.net##.__top_side_menu_body > div[class^="sc-"] > div[class^="sc-"] > div[class^="sc-"]:has(> div[style$="width: 728px; line-height: 0; font-size: 0px;"]) +pixiv.net##.__top_side_menu_body > div[class^="sc-"]:has(> [style$="width: 728px; line-height: 0; font-size: 0px;"]) +pixiv.net##.__top_side_menu_body section[class^="sc-"] li[class^=sc-]:has(> div[id^="adsdk"]) +cargurus.com##._desktopBottomAdWrapper_1w6f5_29 +cargurus.com##._desktopLeaderboardAdWrapper_1w6f5_27 +cargurus.com##._srpInlineAd_9nssm_5 +cargurus.com##._tileFrame_1bakq_8:has(p[data-testid="sponsored-text"]) +haveibeenpwned.com##.actionsBar:has(.why1Password) +barandbench.com##.ad-wrapper-module__adContainer__iD4aI +mydramalist.com##.app-body > div:has(> div[class*="is-desktop-ads-"]) +mydramalist.com##.app-body > div[class]:has(> div[class] > .htlad-header_top) +biznews.com##.arr--story-card:has([data-test-id="sponsored-tag-cards"]) +nation.africa##.article-collection-teaser:has(.sponsored-label) +thesun.co.uk##.article-sidebar .widget-sticky:has([class*="ad_widget"]) +time.com##.article-small-sidebar > .sticky-container:has(div[id^="ad-"]) +bleepingcomputer.com##.articleBody > div:has(a[href^="https://www.wiz.io/"]) +hackernoon.com##.articles-wrapper > div:not([class]):has(a[href^="https://ad.doubleclick.net/"]) +blitz.gg##.aside-content-column:has(.display-ad) +bestbuy.com##.atwa-ninja-carousel:has(div[data-testid="sponsored-sbb"]) +bjs.com##.banner-cta-wrap:has([src="//retailmedia-static.criteo.com/"]) +bjs.com##.banner-cta-wrap:has(img[src*="criteo.com"]) +outsports.com##.bg-gray-100:has(.adb-os-lb-incontent) +atlanticsuperstore.ca,fortinos.ca,maxi.ca,newfoundlandgrocerystores.ca,nofrills.ca,provigo.ca,realcanadiansuperstore.ca,valumart.ca,yourindependentgrocer.ca,zehrs.ca##.block-wrapper:has(.element-header__sponsoredLabel) +loblaws.ca##.block-wrapper:has([data-track-product-component="carousel||rmp_sponsored"]) +haveibeenpwned.com##.bodyGradient > :has(.why1Password) +nexusmods.com##.border-b:has(> div[data-testid^="ad-container"]) +politico.com##.border-gray-vulcan-92:has(> #banner-wrap) +thenewdaily.com.au##.border-grey-300:has(> [data-ad-id]) +chatgpt.com##.border-token-border-default.mt-2.border-t:has(button[aria-label="Ad options"]) +chosun.com##.box--bg-grey-20:has(.dfpAd) +radioreference.com##.box.gradient:has(a[href*="&Click="]) +gpro.net##.boxy:has(#blockblockA) +homedepot.com##.browse-search__pod:has([id^="plp_pod_sponsored"]) +justwatch.com##.buybox_international_offers_row__header__icons:has([rel="nofollow sponsored noopener"]) +bws.com.au##.card-list-item:has(.productTile.is-Sponsored) +truecar.com##.card:has([href*="marketplace&sponsored"]) +bloomingdales.com##.carousel-container:has(.header-sponsored-label) +doordash.com##.carousel-virtual-wrapper:has([href*="collection_type=sponsored_brand"]) +doordash.com##.ccdtLs:has([data-testid="sponsored:Sponsored"]) +motortrend.com##.cls-helper-250-90-250 +theautopian.com##.code-block:has(.htlad-InContent) +templateshub.net##.col-lg-4.col-md-6:has(> div.singel-course) +appleinsider.com##.col-sm-12 > :has([id^="div-gpt-ad-"]) +autotrader.com##.col-xs-12.col-sm-4:has([data-cmp="inventorySpotlightListing"]) +costco.com##.col-xs-12:has([data-bi-placement^="Criteo_Product_Display"]) +i24news.tv##.column.col-6.col-sm-12:has(.sponsored) +mytempsms.com##.content > .container[style]:has(> .adsbygoogle) +infinitestart.com##.cs-sidebar__inner > .widget:has(> ins.adsbygoogle) +dbdiagram.io##.cursor-pointer:has([href*="&utm_medium=ads"]) +producthunt.com##.cursor-pointer:has(img[alt="Promoted"]) +gsmarena.com##.d-flex:has(pgs-ad) +dollargeneral.com##.dg-product-card:has(.dg-product-card__sponsored[style="display: block;"]) +argos.co.uk##.ds-c-grid-item:has(div[class*="ProductCardstyles__SponsoredBadge-"]) +theverge.com##.duet--layout--rail > div:has(> div > [data-concert]) +openalternative.co##.duration-100.rounded-lg:has(a[href="/advertise"]) +tripsonabbeyroad.com##.e-con-inner:has(tp-cascoon) +wsj.com##.e1ewmsuz20:has(> .uds-ad-container) +wsj.com##.e1vnmyci0:has(> .adWrapper) +protrumpnews.com##.enhanced-text-widget:has(span.pre-announcement) +upfivedown.com##.entry > hr.wp-block-separator:has(+ .has-text-align-center) +morrisons.com##.featured-items:has(.js-productCarouselFops) +top.gg##.flex-col.items-center.justify-center:has(#desktop-aside-video-ad) +staples.com##.flexible-banner-configurator__flexibleBannerWrapper:has(a[aria-label*="Sponsored by"]) +fontspace.com##.font-container:has(> [width="728"]) +morrisons.com##.fops-item:has([title="Advertisement"]) +pigglywigglystores.com##.fp-item:has(.fp-tag-ad) +slickdeals.net##.frontpageGrid__feedItem:has(.dealCardBadge--promoted) +alibaba.com##.gallery-card:has(.searchx-card-e-ad) +detectiveconanworld.com##.generated-sidebar[style="background: #ffffff;"] +bestbuy.com##.generic-morpher:has(.spns-label) +sainsburys.co.uk##.gridItem:has(.citrusAdproduct) +pstream.org##.group > .border-buttons-purple:has(> button[aria-label="Dismiss ad"]) +pixiv.net##.gtm-toppage-thumbnail-illustration-recommend-works-zone > ul > li:has(> div > [id^="adsdk-"]) +manomano.co.uk,manomano.de,manomano.es,manomano.fr,manomano.it##.hrHZYT:has([data-testid="popoverTriggersponsoredLabel"]) +dollargeneral.com##.image__desktop-container:has([data-track-image*="|P&G|Gain|"]) +1tamilmv.tax##.ipsWidget:has([href*="RajbetImage"]) +qwant.com##.is-sidebar:has(a[data-testid="advertiserAdsLink"]) +alphacoders.com##.item:has(.in-thumb-ad-mobile-desktop) +herzindagi.com##.items-center:has(.ads) +yovizag.com##.jeg_column:has(> .jeg_wrapper > .jeg_ad) +motortrend.com##.justify-center:has(.nativo-news) +chewy.com##.kib-carousel-item:has(.kib-product-sponsor) +bjs.com##.lazyload-wrapper:has(> #promoteIqContent) +motortrend.com##.lg\:min-h-\[90px\] +alibaba.com##.list-card:has([data-role="ad-area"]) +trip.com##.list-item:has(span.ad-info) +pixiv.net##.list-none:has(> div > [id^="adsdk"]) +hotukdeals.com##.listLayout-box:has(> .bRad--a) +pcgamer.com##.listingResult:has(> .sponsored-post) +euronews.com##.m-object:has(.m-object__spons-quote) +justetf.com##.m-sep-l:has(#partnerNewsBox) +triblive.com##.mantine-Center-root:has(.ads-holder) +acmemarkets.com,andronicos.com,carrsqc.com,haggen.com,jewelosco.com,kingsfoodmarkets.com,pavilions.com,shaws.com,starmarket.com,tomthumb.com,vons.com##.master-product-carousel:has([data-carousel-api*="search/sponsored-carousel"]) +acmemarkets.com,albertsons.com,andronicos.com,carrsqc.com,haggen.com,jewelosco.com,kingsfoodmarkets.com,pavilions.com,randalls.com,safeway.com,shaws.com,starmarket.com,tomthumb.com,vons.com##.master-product-carousel:has([data-carousel-driven="sponsored-products"]) +songbpm.com##.mb-6:has(> section > div[id^="ad--searches"]) +motortrend.com##.min-h-\[100px\] +outsports.com##.min-h-\[100px\]:has(.adb-os-inarticle-block) +outsports.com##.min-h-\[100px\]:has(.adb-os-lb-incontent) +motortrend.com##.min-h-\[120px\] +opensubtitles.org##.msg > div > fieldset:has(> [style="text-align:center;"]) +manomano.*##.mt-s.block:has([data-testid="sprbrd-logo-link"]) +tvguide.co.uk##.mx-auto:has(> [id^="ad-content"]) +boots.com##.oct-listers-hits__item:has(.oct-teaser__listerCriteoAds) +officedepot.com##.od-col:has(.od-product-card-region-colors-sponsored) +justwatch.com##.offer-container:has(.offer__footnote) +justwatch.com##.offer-container:has(.promotion-row_container) +pollunit.com##.owl-carousel:has(.carousel-ad) +nicomanga.com##.owl-stage > .owl-item:has([title="ADS Support"]) +property24.com##.p24_tileContainer:has([src^="/Content/images/Optimized/Icons/icon_tag_tile.svg?"]) +gamepadla.com##.pMain:has(div[class^="asd_"]) +gamepadla.com##.pMain:has(div[title="Partner placement"]) +thefederal.com##.pb-3 > .col-xl-3.col-lg-6.col-md-6:has(> [id^="ad_slot"]) +andronicos.com,haggen.com,randalls.com##.pc-grid-prdItem:has(span[data-qa="prd-itm-spnsrd"]) +sainsburys.co.uk##.pd-merchandising-product:has(.product-header--citrus[data-testid="product-header"]) +macys.com##.plp-page-row:has(.monetization-brand-label) +hannaford.com##.plp_thumb_wrap:has([data-citrusadimpressionid]) +niagarathisweek.com##.polarBlock:has(.polarAds) +404media.co##.post__content > p:has(a[href^="https://srv.buysellads.com/"]) +myntra.com##.product-base:has(.product-waterMark) +douglas.*##.product-grid-column:has(.product-tile__sponsored) +woolworths.com.au##.product-grid-v2--tile:has(.sponsored-text) +meijer.com##.product-grid__product:has(.product-tile__sponsored) +chaussures.fr,eapavi.lv,ecipele.hr,ecipo.hu,eobuv.cz,eobuv.sk,eobuwie.com.pl,epantofi.ro,epapoutsia.gr,escarpe.it,eschuhe.at,eschuhe.ch,eschuhe.de,eskor.se,evzuttya.com.ua,obuvki.bg,zapatos.es##.product-item:has(.sponsored-label) +maxi.ca##.product-tile-group__list__item:has([data-track-products-array*="sponsored"]) +pbs.org##.production-and-funding:has(.sponsor-info-link) +sainsburys.co.uk##.pt__swiper--grid-item:has(.product-header--citrus[data-testid="product-header"]) +groupon.com##.px-0:has([data-bhw="DealCarousel-SponsoredDeals"]) +quora.com##.q-sticky[style*="box-sizing: border-box; position: sticky;"]:has(.qu-flexDirection--column[style*="min-height:"] > .dom_annotate_google_ad) +ksl.com##.queue:has(.sponsored) +businessinsider.com##.rail-container:has(> .ad-label) +olx.com.pk##.react-swipeable-view-container:has([href*="http://onelink.to"]) +openalternative.co##.relative.rounded-lg:has(a[href="/advertise"]) +builtbybit.com##.resourceSidebar-belowContent > div > .block:has(.block-container a[href="https://tebex.io/"]) +metager.org##.result:has(a[href^="https://metager.org"][href*="/partner/r?"]) +metager.org##.result:has(a[href^="https://r.search.yahoo.com/"]) +qwant.com##.result__ext > div:has([data-testid="adResult"]) +appleinsider.com##.river-article:has(.sponsor-notice) +petco.com##.rmn-container:has([class*="SponsoredText"]) +samsclub.com##.sc-carousel-slide:has(.sc-sponsored-simple) +samsclub.com##.sc-plp-cards-card:has(.sc-specials-label) +samsclub.com##.sc-sba-modules:has(.sc-specials-label) +sfchronicle.com##.scrl-block > .scrl-block-inner:has(.ad-module--ad--16cf1) +yandex.com##.search-list-view__advert-offer-banner +playpilot.com##.search-preview .side:has(> .provider) +tempest.com##.search-result-item:has(.search-result-item__title--ad) +yandex.com##.search-snippet-view:has(span.search-advert-badge__advert) +shipt.com##.searchPageStaticBanner:has([href*="/shop/featured-promotions"]) +dribbble.com##.service-result:has([data-promoted-badge]) +troyhunt.com##.sidebar-featured:has(a[href^="https://pluralsight.pxf.io/"]) +bitcointalk.org##.signature:has(a[href]:not([href*="bitcointalk.org"])) +bestbuy.com##.slContainer:has(> .sponsored) +bing.com##.slide:has(.rtb_ad_caritem_mvtr) +complex.com##.sm\:min-h-\[100px\]:has(#catalyst_ad_top) +fastcompany.com##.sticky:has(.ad-container) +carwow.co.uk##.stock-cars-v2__card-wrapper:has(> [data-controller="spdeal"]) +scamwarners.com##.subheader:has(> ins.adsbygoogle) +thesun.co.uk##.sun-grid-container:has([class*="ad_widget"]) +ulta.com##.swiper-slide:has(.pal-c-ProductCardFooter__sponsored) +myrgv.com##.td_block_wrap:has(a[href*="/ask-the-expert/"]) +independent.co.uk,standard.co.uk,the-independent.com##.teads:has(.third-party-ad) +trademe.co.nz##.tm-display-s-listing__cards-flex:has(tm-sponsored-listings-tag) +trademe.co.nz##.tm-stripe__SL-card-container:has([class^="tm-sponsored-"]) +deccanchronicle.com##.to-be-async-loaded-ad:has(> [style*="center"]) +forums.redflagdeals.com##.topiclist > .topic:has(span.sponsored) +twitter.com,x.com##.tweet:has(.promo) +wowcher.co.uk##.two-by-two-deal:has(a[href*="src=sponsored_search_"]) +news.sky.com##.ui-box:has(.ui-advert) +forums.socialmediagirls.com##.uix_nodeList > div[class="block"]:has([href^="/link-forums/"]) +darkreader.org##.up:has(.ddg-logo-link) +darkreader.org##.up:has(.h-logo-link) +anfieldindex.com##.vc_widget_sidebar .textwidget:has(#newsnowlogo) +eplindex.com##.vc_widget_sidebar aside:has(#newsnowlogo) +eplindex.com##.vc_widget_sidebar aside:has(> .textwidget img[decoding="async"]) +duckduckgo.com##.vertical-section-divider:has(span.badge--ad-wrap) +noon.com##.visibilitySensorWrapper:has(.adBannerModule) +regexlearn.com##.w-full.mb-3:has(a[href="/learn/regex-for-seo"]) +thedailyjagran.com##.w-full:has(> .container > .webAds) +neonheightsservers.com##.well:has(ins.adsbygoogle) +evreporter.com##.widget_media_image:not(:has(a[href^="https://evreporter.com/"])) +cnx-software.com##.widget_text.widget:has([href*="?utm"]) +navyamedia.com##.widget_text:has(> .textwidget .adsbygoogle) +linuxhaxor.net##.widget_text:has(a[href^="https://www.linuxhaxor.net/go"]) +trip.com##.with-decorator-wrap-v8:has(span.ad_tag) +celebmafia.com##.wp-caption > [class]:has([width="300"]) +navyamedia.com##.wpb_text_column:has(> .wpb_wrapper > p >ins.adsbygoogle) +bestbuy.ca##.x-productListItem:has([data-automation="sponsoredProductLabel"]) +beaumontenterprise.com,chron.com,ctinsider.com,ctpost.com,expressnews.com,greenwichtime.com,houstonchronicle.com,lmtonline.com,manisteenews.com,michigansthumb.com,middletownpress.com,mrt.com,myjournalcourier.com,myplainview.com,mysanantonio.com,newstimes.com,nhregister.com,ourmidland.com,registercitizen.com,sfchronicle.com,sfgate.com,stamfordadvocate.com,thehour.com,theintelligencer.com##.y100:has([data-block-type="ad"]) +cars.com##[aria-label="Listings"] li:has(card-gallery[card-link*="?attribution_type"]) +priceline.com##[class*="ListingCardWrapper"]:has([class*="PromoText"]) +freshdirect.com##[class*="ProductsGrid_grid_item"]:has([data-testid="marketing tag"]) +petco.com##[class*="atapult-styled"]:has([data-ad-source]) +livejournal.com##[class*="categories"] + div[class]:has(> [class*="-commercial"]) +petco.com##[class*="rmn-banner"]:has([class*="SponsoredText"]) +cargurus.com##[class*="tileFrame"]:has([data-testid="sponsored-text"]) +popularmechanics.com##[class] > :has(> #article-marketplace-horizontal) +popularmechanics.com##[class] > :has(> #gpt-ad-vertical-bottom) +independent.co.uk,standard.co.uk,the-independent.com##[class] > :has(> [data-mpu]) +androidauthority.com##[class] > [class] > [class]:has(div[data-ad-type="leaderboard_atf"]) +brisbanetimes.com.au,smh.com.au,theage.com.au,watoday.com.au##[class] > [class]:has(> [data-testid="ad"]) +timesofindia.indiatimes.com##[class]:has(> .wdt-taboola) +vox.com##[class]:has(> [data-concert]) +standard.co.uk##[class]:has(> [data-fluid-zoneid]) +independent.co.uk,standard.co.uk,the-independent.com##[class]:has(> [data-mpu]) +nytimes.com##[class]:has(> [id="ad-top"]) +thrillist.com##[class^="Container__GridRow-sc-"]:has(> .concert-ad) +petco.com##[class^="citrus-carousel-"]:has([class^="carousel__Sponsored"]) +traderscasa.com##[class^="overlay-"]:has(> .af-both-cont) +svgrepo.com##[class^="style_native"]:has([href*="buysellads.com"]) +tesco.com##[class^="styled__StyledLIProductItem"]:has([class^="styled__StyledOffers"]) +userstyles.org##[class^="styles-grid_gridItems_"] > .hideInMobile:has(> [class^="GoogleAd_"]) +argos.co.uk##[class^="styles__LazyHydrateCard"]:has([class*="ProductCardstyles__FlyoutBadge"]) +argos.co.uk##[class^="styles__LazyHydrateCard-sc"]:has([class*="SponsoredBadge"]) +outlook.live.com##[data-app-section="MessageList"] div[style^="position: absolute; left: 0px; top: 0px"]:has(.ms-Shimmer-container) +bjs.com##[data-cnstrc-recommendations="true"]:has(.sponsored-products) +maisonsdumonde.com##[data-el="product-card-grid"] article:has([data-el="product-card__sponsored"]) +pixiv.net##[data-gtm-recommend-zone="index"] li:has(> div > iframe[name$="rectangle"]) +avxhm.se##[data-localize]:has(a[href^="https://canv.ai/"]) +softonic.com##[data-meta="placeholder-slot"]:has([data-label="Advertisement"]) +target.com##[data-module-type="GlobalRecommendedProducts"]:has(> [data-test*="sponsored_items"]) +etsy.com##[data-page-type="listing_page_similar_listings_grid"]:has([id^="ad-listing-title-"]) +etsy.com##[data-page-type="listing_page_similar_listings_row"]:has([id^="ad-listing-title-"]) +etsy.com##[data-page-type="market"]:has([id^="ad-listing-title-"]) +etsy.com##[data-page-type="similar-listing-page"]:has([id^="ad-listing-title-"]) +noon.com##[data-qa="plp-product-box"]:has([class^="SponsoredTag"]) +chatgpt.com##[data-testid="bazaar-v2-elevated-box"]:has([data-ad-card-root="true"]) +pexels.com##[data-testid="column"] [data-testid="item"]:has([class*="AIGCAdShared"]) +pexels.com##[data-testid="column"] [data-testid="item"]:has([data-heading*="Sponsored"]) +pexels.com##[data-testid="column"] [data-testid="item"]:has([data-text="Sponsored Photos"]) +pexels.com##[data-testid="column"] [data-testid="item"]:has([data-title*="Sponsored"]) +pexels.com##[data-testid="column"] [data-testid="item"]:has(a[rel*="sponsored"]) +farfetch.com##[data-testid="featured"]:has([data-ffref*="sponsoredBy"]) +samsclub.com##[data-testid="item-stack"] > .mb0:has(a[href^="https://www.samsclub.com/midas/sams-crs/track?"]) +petco.com##[data-testid="product-buy-box"]:has([class*="SponsoredText"]) +bestbuy.com##[data-testid="sponsored-listing"] +bestbuy.com##[data-testid="story-wrapper-row"] div:has(> [data-story-name="sponsored_grid"]) +linuxcommandlibrary.com##[href^="/"]:has([src*=".webp"]) +alibaba.com##[id^="sse-fluent-wending"]:has(.creative-ad-tag) +kayak.com##[role="button"]:has([class*="ad-marking"]) +staples.com##[role="complementary"] #observer-id-temp:has(> #SKU_FeaturedProductCarousel) +kayak.com##[role="tab"]:has([class*="sponsored"]) +unknowncheats.me##[style*="justify-content"]:has([rel^="sponsored"]) + [style] +manomano.*##a[class]:has(> .UWP_c8) +aliexpress.com,aliexpress.us##a[class^="manhattan--container--"][class*="main--card--"]:has(span[style="background-color:rgba(0,0,0,0.20);position:absolute;top:8px;color:#fff;padding:2px 5px;background:rgba(0,0,0,0.20);border-radius:4px;right:8px"]) +aliexpress.com,aliexpress.us##a[class^="manhattan--container--"][class*="main--card--"]:has(span[style="background: rgba(0, 0, 0, 0.2); position: absolute; top: 8px; color: rgb(255, 255, 255); padding: 2px 5px; border-radius: 4px; right: 8px;"]) +manomano.*##a[href]:has(> .c4iHiiE) +mangadex.org##a[href^="https://www.runoperagx.com/"] +yandex.com##a[href^="https://yandex.ru/an/count/"] +advocate.com,out.com,pride.com#?#.component.module-headline:has-text(FROM OUR SPONSORS) +healthline.com##article > [class] > [class^="css"]:has([data-ad="true"]) +top.gg##article.items-start:has(a[rel="sponsored"]) +top.gg##article.w-full.flex.flex-col:has(a[rel="sponsored"]) +9gag.com##article:has(.promoted) +mg.co.za##article:has(.sponsored-single) +tympanus.net##article:has(header:has(.ct-sponsored)) +foxnews.com##article[class|="article story"]:has(.sponsored-by) +bedbathandbeyond.com##article[data-e2e="productTile"]:has(a[rel*="sponsored"]) +thetimes.com##article[id="article-main"] > div:has(#ad-header) +costco.com##article[id][class]:has(img[alt*="Sponsored"]) +psychcentral.com##aside:has([data-empty]) +kohls.com##astro-island[component-export="KmnMarqueeBannerWrapper"]:has(img[alt="Sponsored Banner"]) +creepypasta.com##center:has(+ #ad-container-1) +hashrate.no##center:has(.sevioads) +character.ai#?#.space-y-4 > .w-full:has-text(Advertisement) +cjleo.com#?#.alt-widget-title:has-text(advertisement) +majorgeeks.com##div > [style]:has([style]:has([href*="&utm"])) +manomano.co.uk,manomano.de,manomano.es,manomano.fr,manomano.it##div > div:has([data-testid="banner-spr-label"]) +inverse.com##div > p + div:has(amp-ad) +outlook.live.com##div.customScrollBar > div > div[id][class]:has(img[src$="/images/ads-olk-icon.png"]) +downornot.net##div.grid > div.flex.flex-col:has([href*="aff_c?"]) +golfgalaxy.com##div.hmf-position-relative:has(.sponsored) +flightradar24.com##div.items-center.justify-center:has(> div#pb-slot-fr24-airplane:empty) +tvguide.co.uk##div.mx-auto:has(> .flex.justify-center:empty) +costco.ca##div.product:has(.criteo-sponsored) +thebay.com##div.product:has(div.citrus-sponsored) +startpage.com,startpagel6srwcjlue4zgq3zevrujfaow726kjytqbbjyrswwmjzcqd.onion##div.result[style="margin-bottom: 10px;"]:has(path[d^="m6.07067"]) +meijer.com##div.slick-slide:has(.product-tile__sponsored) +healthyrex.com##div.textwidget:has(a[rel="nofollow sponsored"]) +bestbuy.ca##div.x-productListItem:has([class^="sponsoredProduct"]) +timesnownews.com,zoomtventertainment.com##div:has(> .bggrayAd) +newsfirst.lk##div:has(> [class*="hide_ad"]) +fandomwire.com##div:has(> [data-openweb-ad]) +doordash.com##div:has(> a[data-anchor-id="SponsoredStoreCard"]) +outlook.live.com##div:has(> div > div.fbAdLink) +tripadvisor.*##div:has(> div > div[class="ui_column ovNFo is-3"]) +tripadvisor.*##div:has(> div[class="ui_columns is-multiline "]) +heb.com##div:has(> div[id^="hrm-banner-shotgun"]) +news12.com##div[alignitems="normal"]:has(> div[sizes*="object"]) +webtools.fineaty.com##div[class*=" hidden-"]:has(.adsbygoogle) +livejournal.com##div[class*="-close"]:has(a[href*="tired=ads"]) +qz.com##div[class*=":block"]:has(> .ay-ad-slot) +qz.com##div[class*="my-"]:has(> .ay-ad-slot) +aliexpress.com,aliexpress.us##div[class*="search-item-card-wrapper-"]:has(span[class^="multi--ad-"]) +qwant.com##div[class="_2NDle"]:has(div[data-testid="advertiserAdsDisplayUrl"]) +samsclub.com##div[class="mb0 ph0-xl pt0-xl bb b--near-white w-20 pb3-m ph1"]:has(a[href^="https://www.samsclub.com/midas/sams-crs/track?"]) +walmart.*##div[class="mb1 ph1 pa0-xl bb b--near-white w-25"]:has(div[data-ad-component-type="wpa-tile"]) +producthunt.com##div[class="my-2 flex cursor-pointer flex-row items-center gap-4 rounded-lg bg-gray-50 p-3"]:has(a[href="/sponsor"]) +producthunt.com##div[class="my-2 flex cursor-pointer flex-row items-center gap-4 rounded-lg bg-gray-50 p-3"]:has(img[src="/i/33b26ee8f2668842e38841253cfde42aa203585e395ff731f21aebffbb38c8e5"]) +producthunt.com##div[class="my-2 flex cursor-pointer flex-row items-center gap-4 rounded-lg bg-gray-50 p-3"]:has(img[src^="/i/"]) +producthunt.com##div[class="my-4 flex flex-1 cursor-pointer items-center justify-center overflow-hidden rounded-md border-2 border-gray-200"]:has(img[srcset^="https://ph-files.imgix.net/"]) +producthunt.com##div[class="my-4 flex flex-1 cursor-pointer items-center justify-center overflow-hidden rounded-md border-2 border-gray-200"]:has(video[poster^="https://ph-files.imgix.net/"]) +openalternative.co##div[class="relative flex max-md:order-3"]:has(a[href="/advertise"]) +openalternative.co##div[class="relative flex"]:has(a[href="/advertise"]) +radio.at,radio.de,radio.dk,radio.es,radio.fr,radio.it,radio.net,radio.pl,radio.pt,radio.se##div[class] > div[class]:has(> div[class] > div[id^="RAD_D_"]) +manomano.*##div[class]:has(> .c4iHiiE) +androidauthority.com##div[class]:has(> .pw-incontent) +scribd.com##div[class]:has(> [data-e2e="dismissible-ad-header-scribd_adhesion"]) +dearbornmarket.com,fairwaymarket.com,gourmetgarage.com,priceritemarketplace.com,shoprite.com,thefreshgrocer.com##div[class^="ColListing"]:has(div[data-testid^="Sponsored"]) +pexels.com##div[class^="FullWidth_container_"]:has(a[rel="sponsored noopener"]) +wish.com##div[class^="ProductGrid__FeedTileWidthWrapper-"]:has(div[class^="DesignSpec__TextSpecWrapper-"][color="#6B828F"]:not([data-testid])) +wish.com##div[class^="ProductTray__ProductStripItem-"]:has(div[class^="DesignSpec__TextSpecWrapper-"][color="#6B828F"][data-testid] + div[class^="DesignSpec__TextSpecWrapper-"][color="#6B828F"]) +pixabay.com##div[class^="cell--"]:has(button[aria-label="About this advertiser"]) +virginradio.co.uk##div[class^="css-"]:has(> .ad-outline) +wikiwand.com##div[class^="footer_wrapper"]:has(> div[class^="wrapper_wrapper"] > div[class^="wrapper_cta"]) +flickr.com##div[class^="main view"]:has(a[href$="&ref=sponsored"]) +pixabay.com##div[class^="mrxz"]:has(button[aria-label="About this advertiser"]) +birminghammail.co.uk,bristolpost.co.uk,dailyrecord.co.uk,irishstar.com,liverpoolecho.co.uk,manchestereveningnews.co.uk,stokesentinel.co.uk,walesonline.co.uk##div[class^="sc-"]:has(> span[aria-live="polite"] > .react-loading-skeleton) +staples.com##div[class^="sku-configurator__banner"]:has([aria-label="Sponsored Products"]) +wikiwand.com##div[class^="wrapper_wrapper"]:has(> div[class^="wrapper_cta"]) +wikiwand.com##div[class^="wrapper_wrapper"]:has(> div[id^="ezoic-pub-ad"]) +outlook.live.com##div[data-app-section="MessageList"] div[class][id*="-"]:has(> div:not([class]) > div[class] > div[class] > div[class] > div[class] > div[class] > div[class] > div[class] + .ms-Button--hasMenu.ms-Button--icon) +flipkart.com##div[data-id][style]:has([width][height][fill]) +bjs.com##div[data-index]:has(.sponsored-badge) +etherscan.io##div[data-nosnippet]:has(> ins[id]) +rakuten.com##div[data-productid]:has(a[href*="&fbbaid="]) +rakuten.com##div[data-productid]:has(div.productList_sponsoredAds_RUS) +noon.com##div[data-qa="plp-product-box"]:has(div[class^="STag-module-"]) +wolt.com##div[data-test-id="MainDiscoveryContent"] li > div.cb-elevated:has(button[data-test-id="AdvertisingLabel"]) +wolt.com##div[data-test-id="SearchResultVenueSection"] li > div.cb-elevated:has(button[data-test-id="AdvertisingLabel"]) +mail.aol.com##div[data-test-id="virtual-list"] > ul[role="list"][aria-label] > li[style]:has(a[href^="https://api.taboola.com/"][href*="/yahoo-aol-mail/"]) +producthunt.com##div[data-test] > section:has(a[href^="/r/ad/"]) +producthunt.com##div[data-test] > section:has(img[src="/i/299a62819c7092e196f7fc2c331cc11ef4f93a0f32c3b3069c4fd974cda0cb4c"]) +producthunt.com##div[data-test]:not([data-test^="homepage-section-"]) > section[data-test^="post-item-"] +priceline.com##div[data-testid="HTL_NEW_LISTING_CARD_RESP"]:has(a[aria-label*=" Promoted"]) +twitter.com,x.com##div[data-testid="UserCell"]:has(path[d$="10H8.996V8h7v7z"]) +twitter.com,x.com##div[data-testid="eventHero"]:has(path[d$="10H8.996V8h7v7z"]) +twitter.com,x.com##div[data-testid="placementTracking"]:has(div[data-testid$="-impression-pixel"]) +lowes.com##div[data-testid="product-carousel"]:has(.sponsored-tag) +booking.com##div[data-testid="property-card"]:has(div[data-testid="new-ad-design-badge"]) +twitter.com,x.com##div[data-testid="trend"]:has(path[d$="10H8.996V8h7v7z"]) +kohls.com##div[data-testid^="wallet-wrapper-"]:has(div[class="mt-3 text-xs"]) +puzzle-aquarium.com,puzzle-battleships.com,puzzle-binairo.com,puzzle-bridges.com,puzzle-chess.com,puzzle-dominosa.com,puzzle-futoshiki.com,puzzle-galaxies.com,puzzle-heyawake.com,puzzle-hitori.com,puzzle-jigsaw-sudoku.com,puzzle-kakurasu.com,puzzle-kakuro.com,puzzle-killer-sudoku.com,puzzle-light-up.com,puzzle-lits.com,puzzle-loop.com,puzzle-masyu.com,puzzle-minesweeper.com,puzzle-nonograms.com,puzzle-norinori.com,puzzle-nurikabe.com,puzzle-pipes.com,puzzle-shakashaka.com,puzzle-shikaku.com,puzzle-shingoki.com,puzzle-skyscrapers.com,puzzle-slant.com,puzzle-star-battle.com,puzzle-stitches.com,puzzle-sudoku.com,puzzle-tapa.com,puzzle-tents.com,puzzle-thermometers.com,puzzle-words.com##div[id]:has(> #bannerSide) +puzzle-aquarium.com,puzzle-battleships.com,puzzle-binairo.com,puzzle-bridges.com,puzzle-chess.com,puzzle-dominosa.com,puzzle-futoshiki.com,puzzle-galaxies.com,puzzle-heyawake.com,puzzle-hitori.com,puzzle-jigsaw-sudoku.com,puzzle-kakurasu.com,puzzle-kakuro.com,puzzle-killer-sudoku.com,puzzle-light-up.com,puzzle-lits.com,puzzle-loop.com,puzzle-masyu.com,puzzle-minesweeper.com,puzzle-nonograms.com,puzzle-norinori.com,puzzle-nurikabe.com,puzzle-pipes.com,puzzle-shakashaka.com,puzzle-shikaku.com,puzzle-shingoki.com,puzzle-skyscrapers.com,puzzle-slant.com,puzzle-star-battle.com,puzzle-stitches.com,puzzle-sudoku.com,puzzle-tapa.com,puzzle-tents.com,puzzle-thermometers.com,puzzle-words.com##div[id]:has(> #bannerTop) +jigsawplanet.com##div[id]:has(> [style="height: 100%; display: flex; flex-direction: row; overflow: hidden; gap: 0.2em; margin: 0px auto; justify-content: center;"]) +priceline.com##div[id^="listing-"]:has(span[class*="Promoted"]) +advocate.com,out.com,pride.com##div[id^="sPost_Layout_Default_"]:has(> .ad_leaderboard_wrap) +justetf.com##div[id^="shadow-teaser-"]:has(div[class="disclaimer mb-1"]) +truthsocial.com##div[item="[object Object]"]:has(path[d="M17 7l-10 10"]) +truthsocial.com##div[item="[object Object]"]:has(path[d="M9.83333 1.83398H16.5M16.5 1.83398V8.50065M16.5 1.83398L9.83333 8.50065L6.5 5.16732L1.5 10.1673"]) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[style="max-width: 390px; min-width: 190px;"]:has(a[href^="/ads/"]) +flipkart.com##div[style="max-width:1200px;width:100%"]:has(source[srcset^="https://rukminim1.flixcart.com/fk-p-flap/1570/520/image/eb2033142a4a8eab.png"]) +thisday.app##div[style="min-height: 340px;"]:has(div.ad) +robtex.com##div[style]:has(> ins.adsbygoogle[data-ad-slot]) +dribbble.com##drb-infinite-scroll .service-result:has(drb-tooltip[data-featured-badge]) +dribbble.com##drb-infinite-scroll div[data-username]:has(drb-tooltip[data-featured-badge]) +fdiintelligence.com#?#.undefined:has-text(Advertisement) +90min.com##figure:has(> div > #mm-player-placeholder-large-screen) +unsplash.com##figure[itemprop="image"]:has(div[class*="sponsorLabelContainer-"]) +findagrave.com#?#.rounded-pill:has-text(Remove Ads) +gamepadla.com#?#.pMain:has(div:-abp-properties(Partner)) +gamepadla.com#?#.sliderBlock:has-text(ADS) +5dariyanews.com##h2:has(a[href*="sponsored-ads"]) +inc.com#?#.pr-\[25px\].py-\[27px\]:has-text(Apply Now) +interestingengineering.com#?#.overline-small:has-text(advertisement) +streeteasy.com##li [class^="ListingCard-module"]:has([class*="sponsoredTag"]) +ulta.com##li.ProductListingResults__productCard:has(.pal-c-ProductCardFooter__sponsored) +bloomingdales.com##li.featured-item:has(.bottom-overlay-label) +walmart.*##li.items-center:has(div[data-ad-component-type="wpa-tile"]) +engadget.com##li.min-h-\[88px\]:has(> [data-test="streamad"]) +walgreens.com##li.owned-brands:has(figure.sponsored) +macys.com##li.productThumbnailItem:has(.sponsored-items-label) +kohls.com##li.products_grid:has(p.piq-sponsored) +streeteasy.com##li.searchCardList--listItem:has(.jsSponsoredListingCard) +cars.com##li:has(> fuse-card[data-listing-id] .spr) +aboutyou.de##li:has([data-testid="spons"]) +classcentral.com##li:has(iframe[src^="/catalog-iframe?"]) +autotrader.co.uk##li:has(section[data-testid="trader-seller-listing"] > span[data-testid="FEATURED_LISTING"]) +autotrader.co.uk##li:has(section[data-testid="trader-seller-listing"] > span[data-testid="PROMOTED_LISTING"]) +bbc.com##li[class*="-ListItem"]:has(div.dotcom-ad) +yandex.com##li[class*="_card"]:has(a[href^="https://yabs.yandex.ru/count/"]) +yandex.com##li[class*="_card"]:has(a[href^="https://yandex.com/search/_crpd/"]) +yahoo.com##li[class="first"]:has([data-ylk*="affiliate_link"]) +autotrader.co.uk##li[class]:has(span[data-testid="FEATURED_LISTING"]) +autotrader.co.uk##li[class]:has(span[data-testid="PROMOTED_LISTING"]) +streeteasy.com##li[class^="ListingCardsList_listCardWrapper_"]:has(a[href$="?infeed=1"]) +cars.com##li[data-phx-id]:has([phx-value-source="sponsored_trending_search_card"]) +canadiantire.ca##li[data-testid="product-grids"]:has(.nl-product-card__sponsored) +aboutyou.de##li[data-testid^="productTileTracker-"]:has([data-testid="sponsored"]) +aboutyou.de##li[data-testid^="productTileTracker-"]:has(button[data-testid="spo"]) +livpost.co.uk#?#.kg-cta-link-accent:has-text(SPONSORED) +classcentral.com##p + div:has(.responsive-post:has([href^="https://www.semrush.com"])) +duckduckgo.com##section > div[class]:has(button[data-testid="ad-badge-ad-tooltip-products"]) +windowsreport.com##section.hide-mbl:has(a[href^="https://out.reflectormedia.com/"]) +hwbusters.com##section.widget:has(> div[data-hwbus-trackbid]) +thehansindia.com##section:has(> .to-be-async-loaded-ad) +thehansindia.com##section:has(> [class*="level_ad"]) +tripadvisor.*##section[data-automation$="_AdPlaceholder"]:has(.txxUo) +homedepot.com##section[id^="browse-search-pods-"] > div.browse-search__pod:has(div.product-sponsored) +star-history.com#?#.items-start.sidebar-sticky:has-text(Featured Products) +startuphub.ai#?#.duration-700.bg-card:has-text(Partner) +startuphub.ai#?#.group.block:has-text(Partner) +mirrored.to##tbody > tr:has(> td[data-label="Host"] > img[src="https://www.mirrored.to/templates/mirrored/images/hosts/FilesDL.png"]) +titantv.com##tr:has(> td[align="center"][valign="middle"][colspan="2"][class="gC"]) +opensubtitles.org##tr[style]:has([src*="php"]) +oneindia.com##ul > li:has(> div[class^="adg_"]) +etsy.com##ul[data-results-grid-container] li:has([id^="ad-listing-title-"]) +wolt.com##ul[data-test-id="VenueVerticalListGrid"] > li > div.cb-elevated:has(button[data-test-id="AdvertisingLabel"]) +woolworths.com.au#?#div[class^="recipe-card_component_recipe-card-container-"]:has-text(Sponsored) +! taboola +nme.com###taboola-below-article +oneindia.com###taboola-mid-article-thumbnails +the-independent.com###taboola-mid-article-thumbnails-ii +independent.co.uk,the-independent.com###taboola-mid-article-thumbnails-iii +indianexpress.com###taboola-right-article-personalisation +lifeandstylemag.com###taboola-right-rail-thumbnails +ndtv.com##.TpGnAd_ad-cn +hindustantimes.com##.ht_taboola +financialexpress.com##.ie-network-taboola +hindustantimes.com##.middleTaboola +indianexpress.com##.o-taboola-story +businesstoday.in##.right_side_tabola +sportskeeda.com##.sk-ads-taboola-container +6abc.com,abcnews.com,economictimes.indiatimes.com,goodmorningamerica.com##.taboola +india.com##.taboola-bottom +firstpost.com##.taboola-div +indianexpress.com##.taboola-parent +israelnationalnews.com##.taboola-top +news18.com##.taboolaWrap +ndtv.com##div:has(> [id^="adslot"]) +weather.com##div[id*="Taboola-sidebar"] +weather.com##div[id^="Taboola-main-"] +drivespark.com,express.co.uk,goodreturns.in##div[id^="taboola-"] +mail.aol.com##li:has(a[data-test-id="pencil-ad-messageList"]) +linkvertise.com##lv-taboola-ctr-ad-dummy +filmibeat.com,gizbot.com,oneindia.com##ul > li:has(> div[id^="taboola-mid-home-stream"]) +! Abusive Adcompanies +aads.com,ad-maven.com,adcash.com,admitad.com,adskeeper.com,adspyglass.com,adsupply.com,chpadblock.com,exoclick.com,hilltopads.com,juicyads.com,monetag.com,popads.net,propellerads.com,purpleads.io,trafficshop.com,yavli.com##HTML +! Eurosport/TNTSports +##.ad-fallback +##.ad.reform-top +##.reform-top-container +! Amazon +amazon.*###faceoutContainer:has(> [class$="sponsored-label"]) +amazon.*###nav-swmslot +amazon.*###sc-rec-bottom +amazon.*###sc-rec-right +amazon.*###similarities_feature_div:has(span.sponsored_label_tap_space) +amazon.*###sponsoredProducts2_feature_div +amazon.*###sponsoredProducts_feature_div +amazon.*###typ-recommendations-stripe-1 +amazon.*###typ-recommendations-stripe-2 +amazon.*##.AdsCard_container__K6vmo +amazon.*##.a-cardui[class*="_new-detail-faceout-box_"]:has(.dynamicSponsoredLabelClass) +amazon.*##.amzn-safe-frame-container +amazon.*##.dp-widget-card-deck:has([data-ad-placement-metadata]) +amazon.*##.s-result-item:has(.puis-sponsored-label-text) +amazon.*##.s-result-item:has([data-ad-feedback-label-id]) +amazon.*##.s-result-item:has([data-ad-feedback]) +amazon.*##.s-result-list > .a-section:has(.sbv-ad-content-container) +amazon.*##.sbv-video-single-product +amazon.*##[cel_widget_id*="-creative-desktop_loom-desktop-"] +amazon.*##div.s-inner-result-item > div.sg-col-inner:has(a.puis-sponsored-label-text) +amazon.*##div[cel_widget_id*="Deals3Ads"] +amazon.*##div[cel_widget_id*="_ad-placements-"] +amazon.*##div[cel_widget_id*="desktop-dp-"] +amazon.*##div[cel_widget_id="sp-orderdetails-desktop-carousel_desktop-yo-orderdetails_0"] +amazon.*##div[cel_widget_id="sp-orderdetails-mobile-list_mobile-yo-orderdetails_0"] +amazon.*##div[cel_widget_id="sp-pop-mobile-carousel_mobile-yo-postdelivery_0"] +amazon.*##div[cel_widget_id="sp-rhf-desktop-carousel_desktop-rhf_0"] +amazon.*##div[cel_widget_id="sp-shiptrack-desktop-carousel_desktop-yo-shiptrack_0"] +amazon.*##div[cel_widget_id="sp-shiptrack-mobile-list_mobile-yo-shiptrack_0"] +amazon.*##div[cel_widget_id="sp-typ-mobile-carousel_mobile-typ-carousels_2"] +amazon.*##div[cel_widget_id="sp_phone_detail_thematic"] +amazon.*##div[cel_widget_id="typ-ads"] +amazon.*##div[cel_widget_id^="LEFT-SAFE_FRAME-"] +amazon.*##div[cel_widget_id^="MAIN-FEATURED_ASINS_LIST-"] +amazon.*##div[cel_widget_id^="adplacements:"] +amazon.*##div[cel_widget_id^="multi-brand-"] +amazon.*##div[cel_widget_id^="sp-desktop-carousel_handsfree-browse"] +amazon.*##div[class*="SponsoredProducts"] +amazon.*##div[class*="_dpNoOverflow_"][data-idt] +amazon.*##div[data-a-carousel-options*="\\\"isSponsoredProduct\\\":\\\"true\\\""] +amazon.*##div[data-cel-widget="sp-rhf-desktop-carousel_desktop-rhf_1"] +amazon.*##div[data-cel-widget="sp-shiptrack-desktop-carousel_desktop-yo-shiptrack_0"] +amazon.*##div[data-cel-widget^="multi-brand-video-mobile_DPSims_"] +amazon.*##div[data-cel-widget^="multi-card-creative-desktop_loom-desktop-top-slot_"] +amazon.*##div[data-csa-c-painter="sp-cart-mobile-carousel-cards"] +amazon.*##div[data-csa-c-slot-id^="loom-mobile-brand-footer-slot_hsa-id-"] +amazon.*##div[data-csa-c-slot-id^="loom-mobile-top-slot_hsa-id-"] +amazon.*##div[id^="sims-simsContainer_feature_div_"]:has(.sp_info_link) +amazon.*##div[id^="sp_detail"] +amazon.*##span[cel_widget_id^="MAIN-FEATURED_ASINS_LIST-"] +amazon.*##span[cel_widget_id^="MAIN-loom-desktop-brand-footer-slot_hsa-id-CARDS-"] +amazon.*##span[cel_widget_id^="MAIN-loom-desktop-top-slot_hsa-id-CARDS-"] +!amazon.*##div[data-ad-id] +modivo.at,modivo.bg,modivo.cz,modivo.de,modivo.ee,modivo.fr,modivo.gr,modivo.hr,modivo.hu,modivo.it,modivo.lt,modivo.lv,modivo.pl,modivo.ro,modivo.si,modivo.sk,modivo.ua##.display-container +modivo.at,modivo.bg,modivo.cz,modivo.de,modivo.ee,modivo.fr,modivo.gr,modivo.hr,modivo.hu,modivo.it,modivo.lt,modivo.lv,modivo.pl,modivo.ro,modivo.si,modivo.sk,modivo.ua##.promoted-slider-wrapper +chaussures.fr,eapavi.lv,ecipele.hr,ecipo.hu,eobuv.cz,eobuv.sk,eobuwie.com.pl,epantofi.ro,epapoutsia.gr,escarpe.it,eschuhe.at,eschuhe.ch,eschuhe.de,eskor.se,evzuttya.com.ua,obuvki.bg,zapatos.es##.sponsored-slider-wrapper +! Expedia +cheaptickets.com,expedia.*,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com###floating-lodging-card:has(a.uitk-card-link[href*="&trackingData="]) +cheaptickets.com,expedia.*,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com##.uitk-card:has(.uitk-badge-sponsored) +cheaptickets.com,expedia.*,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com##[data-stid="meso-similar-properties-carousel"] +cheaptickets.com,expedia.*,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com##div.not_clustered[id^="map-container-"] +cheaptickets.com,expedia.*,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com##div[class="uitk-spacing uitk-spacing-margin-blockstart-three"]:has(a[href*="&trackingData"]) +cheaptickets.com,ebookers.com,expedia.*,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com##div[class="uitk-spacing uitk-spacing-margin-blockstart-three"]:has(a[href^="https://adclick.g.doubleclick.net/pcs/click?"]) +cheaptickets.com,ebookers.com,expedia.*,hotels.com,orbitz.com,travelocity.ca,travelocity.com,wotif.com##div[class="uitk-spacing uitk-spacing-margin-blockstart-three"]:has(a[href^="https://pagead2.googlesyndication.com/"]) +! adsninja fix +androidpolice.com,babygaga.com,backyardboss.net,carbuzz.com,cbr.com,collider.com,dualshockers.com,footballfancast.com,footballleagueworld.co.uk,gamerant.com,givemesport.com,hardcoregamer.com,hotcars.com,howtogeek.com,makeuseof.com,moms.com,movieweb.com,pocket-lint.com,pocketnow.com,screenrant.com,simpleflying.com,thegamer.com,therichest.com,thesportster.com,thethings.com,thetravel.com,topspeed.com,xda-developers.com##.ad-zone-container-sidebar-default +androidpolice.com,babygaga.com,backyardboss.net,carbuzz.com,cbr.com,collider.com,dualshockers.com,footballfancast.com,footballleagueworld.co.uk,gamerant.com,givemesport.com,hardcoregamer.com,hotcars.com,howtogeek.com,makeuseof.com,moms.com,movieweb.com,pocket-lint.com,pocketnow.com,screenrant.com,simpleflying.com,thegamer.com,therichest.com,thesportster.com,thethings.com,thetravel.com,topspeed.com,xda-developers.com##.ad-zone-sidebar-default +androidpolice.com,babygaga.com,backyardboss.net,carbuzz.com,cbr.com,collider.com,dualshockers.com,footballfancast.com,footballleagueworld.co.uk,gamerant.com,givemesport.com,hardcoregamer.com,hotcars.com,howtogeek.com,makeuseof.com,moms.com,movieweb.com,pocket-lint.com,pocketnow.com,screenrant.com,simpleflying.com,thegamer.com,therichest.com,thesportster.com,thethings.com,thetravel.com,topspeed.com,xda-developers.com##.ad-zone-sidebar-first +androidpolice.com,babygaga.com,backyardboss.net,carbuzz.com,cbr.com,collider.com,dualshockers.com,footballfancast.com,footballleagueworld.co.uk,gamerant.com,givemesport.com,hardcoregamer.com,hotcars.com,howtogeek.com,makeuseof.com,moms.com,movieweb.com,pocket-lint.com,pocketnow.com,screenrant.com,simpleflying.com,thegamer.com,therichest.com,thesportster.com,thethings.com,thetravel.com,topspeed.com,xda-developers.com##.ad-zone-size-container-content-above-latest +androidpolice.com,babygaga.com,backyardboss.net,carbuzz.com,cbr.com,collider.com,dualshockers.com,footballfancast.com,footballleagueworld.co.uk,gamerant.com,givemesport.com,hardcoregamer.com,hotcars.com,howtogeek.com,makeuseof.com,moms.com,movieweb.com,pocket-lint.com,pocketnow.com,screenrant.com,simpleflying.com,thegamer.com,therichest.com,thesportster.com,thethings.com,thetravel.com,topspeed.com,xda-developers.com##[class*="ad-zone-container-content-character-count-repeatable"] +androidpolice.com,babygaga.com,backyardboss.net,carbuzz.com,cbr.com,collider.com,dualshockers.com,footballfancast.com,footballleagueworld.co.uk,gamerant.com,givemesport.com,hardcoregamer.com,hotcars.com,howtogeek.com,makeuseof.com,moms.com,movieweb.com,pocket-lint.com,pocketnow.com,screenrant.com,simpleflying.com,thegamer.com,therichest.com,thesportster.com,thethings.com,thetravel.com,topspeed.com,xda-developers.com##[id^="adsninja-ad-zone-adsninja-ad-unit-footer"] +! Skyscanner +skyscanner.*,tianxun.com##[class^="FlightsResults"] > div:has([class^="Sponsored"]) +skyscanner.*,tianxun.com##div > a:has(div[class^="DefaultBanner_sponsorshipRow"]) +skyscanner.*,tianxun.com##div:has(> a[data-testid="inline-brand-banner"]) +skyscanner.*,tianxun.com##div[class*="InlineBrandBanner" i]:has(button[class*="SponsoredInfoButton" i]) +skyscanner.*,tianxun.com##div[class*="ItineraryInlinePlusWrapper" i]:has(button[class*="SponsoredInfoButton" i]) +skyscanner.*,tianxun.com##div[class^="ItineraryInlinePlusWrapper_"]:has(button[class^="SponsoredInfoButton_"]) +skyscanner.*,tianxun.com##div[id*="-first-result" i]:has(button[class*="SponsoredInfoButton" i]) +skyscanner.*,tianxun.com##section[data-testid="inline-ad-panel-desktop-layout"] +! ad insertition https://chromewebstore.google.com/detail/idgpnmonknjnojddfkpgkljpfnnfcklj +www.google.*###google-s-ad +! invideo advertising +esports.gg###FreeStarVideoAdContainer_BesOfEsportsgg +grit.com###GMTK_Bottom_728x90 +grit.com###GMTK_Middle_300x250 +grit.com###GMTK_Top_728x90 +rogerebert.com###PostInlineVideoContainer +rogerebert.com###ReviewInlineVideoContainer +gunsandammo.com###VideoPlayerDivIframe +usnews.com###ac-lre-player-ph +ew.com###article__primary-video-jw_1-0 +barchart.com###bc-cnx-player +gpone.com###block-gpone-advvideo +stocktwits.com###bottom-nav-content +crash.net###cmg-vsly +euronews.com###connatix-container +wral.com###exco +factinate.com###factinateVidazoo +ispreview.co.uk###footer-slot-3 +ginx.tv###ginx-floatingvod-containerspacer +ibtimes.com,latintimes.com###ibt-video +zerohedge.com###in-content-video +gunsandammo.com###inline-player +pubs.rsc.org###journal-info > .text--centered +express.co.uk###mantis-recommender-top-placeholder +twistedsifter.com###mm-player +ispreview.co.uk###mobile-takeover-slot-8 +newrepublic.com###nxs-video-iframe +express.co.uk,the-express.com###ovp-primis +blackamericaweb.com,bossip.com,cassiuslife.com,charlieintel.com,dexerto.com,hiphopwired.com,madamenoire.com,newsone.com,tvone.tv###player-wrapper +essentiallysports.com###player_stn-player__Dybik +primetimer.com###primis-ad-container +techlicious.com###primis-incontent-desktop +dexerto.com###primis-player +flightradar24.com###primisAdContainer +freethesaurus.com###qk1 +freethesaurus.com###qk2 +freethesaurus.com###qk5 +realclearpolitics.com###realclear_jwplayer_container +fortune.com,lifehacker.com,mashable.com,pcmag.com###related-video +whoer.net###render-big-banners +ispreview.co.uk###sidebar-slot-5 +americansongwriter.com,suggest.com,wideopencountry.com###sv-video-container +uproxx.com###upx-mm-player-wrap +americansongwriter.com,wideopencountry.com###video-header +sportskeeda.com###video-player-container-- +onlyinyourstate.com###video1-1 +autoevolution.com###vidiv +newseveryday.com###vplayer_large +economictimes.indiatimes.com###vplayer_vdoai +newsweek.com##.FeaturedMedia_articleFeaturedMedia__LEpVY +faroutmagazine.co.uk##.GRVPrimisVideo +forbes.com##.MWrh7 +cubbyathome.com##.Post__inPostVideoAdDesktop +apartmenttherapy.com##.Post__inPostVideoAdMobile +nautil.us##.PrimisVideoAdBlock_wrapper__vYQNI +ratemyprofessors.com##.VideoPlayer__StyledPlayer-sc-2xyxn3-0 +tvline.com##._video_ti56x_1 +musictimes.com,sciencetimes.com,techtimes.com##.ad_wrapper_video +indy100.com##.addressed_cls +androidheadlines.com,dailyveganmeal.com,discussingfilm.net,gcaptain.com,mp1st.com,thedebrief.org,unofficialnetworks.com##.adthrive +androidsage.com##.akcelo-wrapper +muscleandfitness.com##.ami-video-placeholder +usmagazine.com##.ami-video-wrapper +asiaone.com##.ao-article-video-wrapper +arstechnica.com##.ars-interlude-container +telegraph.co.uk##.article-betting-unit-container +niagarafallsreview.ca,stcatharinesstandard.ca,therecord.com,thespec.com,thestar.com,wellandtribune.ca##.article-pe-video-wrapper +financemagnates.com##.article-sidebar__video-banner +ibtimes.com,latintimes.com,sciencetimes.com##.article-videoplayer +people.com##.article__broad-video +thegrio.com##.aspect-ratio-box +gizmodo.com,lgbtqnation.com,space.com##.aspect-video +digitaltrends.com##.b-connatix +bmwblog.com##.bmwbl-video-in-content +ontvtonight.com##.body-container > div:has(script[src^="https://live.primis.tech/"]) +dictionary.com,thesaurus.com##.box-additional +tennisworldusa.org##.box_adv_primis +pedestrian.tv##.brightcove-video-container +pep.ph##.c-ad__item +metacritic.com##.c-adsGallerySlot +stuff.tv##.c-squirrel-embed +cartoonbrew.com##.cb-ad +iphoneincanada.ca##.cls-video-container-9GFn3u0f +rd.com,tasteofhome.com##.cnx-inline-player-wrapper +dailymail.co.uk##.commercial-player +techwalla.com##.component-article-section-jwplayer-wrapper +familystylefood.com##.email-highlight +taskandpurpose.com##.empire-unit-prefill-container +europeanpharmaceuticalreview.com##.europ-fixed-footer +athlonsports.com,autoblog.com,bringmethenews.com,dengarden.com,mensfitness.com,mensjournal.com,parade.com,paradehomeandgarden.com,paradepets.com,pethelpful.com,surfer.com,thespun.com,thestreet.com,travelhost.com##.exco-player-wrapper +portsmouth.co.uk##.exco-video-player +wral.com##.exco-wrapper +goal.com##.fco-fc-video-player +accuweather.com##.feature-tag +pagesix.com##.featured-image__wrapper > .nyp-video-player +fandom.com##.featured-video-player-container +ibtimes.sg##.featured_video +pedestrian.tv##.find-dream-job +foodbible.com,gamingbible.com,ladbible.com,sportbible.com,tyla.com,unilad.com,uniladtech.com##.floating-video-player_container__u4D9_ +flashbak.com##.fluid-width-video-wrapper +dailymail.co.uk##.footballco-container +clickorlando.com##.full-width:has([id*="exco-player-"]) +tweaktown.com##.fusevidad +redboing.com##.fw-ad +foxsports.com##.fwAdContainer +thestar.co.uk##.gOoqzH +electricianforum.co.uk##.gb-sponsored +arboristsite.com##.gb-sponsored-wrapper +clickondetroit.com##.hRmgEt +gamesradar.com##.in-article +komonews.com##.index-module_featuredVideosWhiteWrapper__kfND +bossip.com##.ione-ve__player-wrapper +bringmethenews.com,mensjournal.com,thestreet.com##.is-fallback-player +gmanetwork.com##.ivs-placeholder +communitychickens.com,keepingbackyardbees.com##.jumbo-ad +evoke.ie,extra.ie##.jw-player-video-widget +unilad.com##.jw-player_container__wuaGn +advocate.com,anandtech.com,out.com,sciencefocus.com##.jwplayer +gamesradar.com,kiplinger.com,livescience.com,tomshardware.com,whathifi.com##.jwplayer__widthsetter +space.com##.jwplayer__wrapper +southernliving.com##.karma-sticky-rail +gearjunkie.com##.ldm_ad +thestreet.com##.m-detail--feature-spacer +thespun.com##.m-video-player +bringmethenews.com##.m-video-unit +namemc.com##.mb-3:has(#nn_player1) +ispreview.co.uk##.midarticle-slot-10 +pickleballleagues.com##.min-\[500px\]\:col-span-2.justify-center.flex.w-full:has(.pickleballleagues-com_incontent_300x250_reusable) +insideevs.com##.minutely_video_wrap +lifewire.com##.mntl-jwplayer-broad +historydefined.net##.mv-ad-box +bestrecipes.com.au,delicious.com.au,taste.com.au##.news-video +insideevs.com,motor1.com##.outstream_partner +edmunds.com##.overflow-hidden.w-100:has(.exco-player) +ibtimes.co.uk,ibtimes.com,musictimes.com##.page-top-mobile-video +picrew.me##.play-Imagemaker_Footer +sciencetimes.com##.player +bamsmackpow.com,fansided.com,mentalfloss.com##.player-wrapper +bossip.com##.player-wrapper-inner +swimswam.com##.polls-461 +whoer.net##.popup-counter-deal__wrapper +baseball-reference.com,basketball-reference.com,fbref.com,hockey-reference.com,pro-football-reference.com,sports-reference.com##.primis +appleinsider.com##.primis-ad-wrap +themarysue.com##.primis-player-container +eurogamer.net##.primis_wrapper +iheart.com##.provider-stn +businessinsider.com##.rail.has-video-ad +pedestrian.tv##.recent-jobs-widget +kidspot.com.au##.secondary-video +ootrandomizer.com##.slot-top-video +stocktwits.com##.sticky-inner-wrapper +pedestrian.tv##.sticky-item-group +texasmonthly.com##.sticky-video-player__wrapper +playbuzz.com##.stickyplayer-container +usmagazine.com##.storifyme-inline-widget +si.com##.style_hfl21i-o_O-style_uhlm2 +tweaktown.com##.tldrad +gazette.com##.tnt-section-sponsored +thegrio.com##.tpd-featured-video +economictimes.indiatimes.com##.vdo_ai_can_ani +bestlifeonline.com,eatthis.com,hellogiggles.com##.vi-video-wrapper +gamesradar.com,guitarworld.com,pcgamer.com,techradar.com,tomsguide.com,tomshardware.com,whathifi.com,windowscentral.com##.vid-present +mobafire.com##.vid-wrap +soapcentral.com,sportskeeda.com##.vidazoo-player-container +justthenews.com,polygon.com##.video +petapixel.com##.video-aspect-wrapper +bowhunter.com,firearmsnews.com,flyfisherman.com,gameandfishmag.com,gunsandammo.com,handgunsmag.com,in-fisherman.com,northamericanwhitetail.com,petersenshunting.com,rifleshootermag.com,shootingtimes.com,wildfowlmag.com##.video-detail-player +gbnews.com##.video-inbody +fodors.com##.video-inline +gearjunkie.com##.video-jwplayer +hiphopdx.com,pride.com##.video-player +bolavip.com##.video-player-placeholder +benzinga.com##.video-player-wrapper +thepinknews.com##.video-player__container +tasty.co##.video-wrap +miamiherald.com##.videoInstance +dpreview.com##.videoWrapper +gbnews.com,marketscreener.com##.vsly-player +destructoid.com,wegotthiscovered.com##.wp-block-gamurs-ad +f1oversteer.com##.wp-block-grvmedia-grv-video +thewrap.com##.wp-block-post-featured-image--video +comicbook.com,vice.com##.wp-block-savage-platform-primis-video +thecooldown.com##.wp-block-tcd-multipurpose-gutenberg-block +bigthink.com##.wrapper-connatixElements +bigthink.com##.wrapper-connatixPlayspace +global.espreso.tv##.ym-video--wrapper +play.usatoday.com##.zdFVI1__zdFVI1 +mashable.com##.ziff-video-container +canucksarmy.com##[data-injection="stn-video"] +totalprosports.com##[data-stn-player="n2psbctm"] +wired.com##[data-testid="cne-interlude-container"] +worldsoccertalk.com##[id*="primis_"] +offidocs.com##[id^="ja-container-prev"] +hollywoodreporter.com##[id^="jwplayer"] +livemint.com##[id^="video-ad-"] +utrips.com##[style="max-width: 970px; min-height: 250px; margin: 20px auto;"] +uinterview.com,upolitics.com,usports.org##[style="padding-top:20px; text-align:center;"] +ukrinform.de,ukrinform.es,ukrinform.fr,ukrinform.jp,ukrinform.net,ukrinform.pl,ukrinform.ua##[style^="min-height: 280px;"] +wlevradio.com##a[href^="https://omny.fm/shows/just-start-the-conversation"] +military.com##article.embedded-entity +twitch.tv##button[aria-label="Learn more about this ad"] +firstforwomen.com##div[class^="article-content__www_ex_co_video_player_"] +gamingbible.com##div[class^="floating-video-player_container"]:has(> #primisPlayer) +balls.ie##div[style="min-height: 170px;"] +! dark pattern adverts +meidasnews.com##.exco-player-wrapper +burnerapp.com##.exit__overlay +booking.com##.js_sr_persuation_msg +booking.com##.sr-motivate-messages +! Google https://forums.lanik.us/viewtopic.php?f=62&t=45153 +##.section-subheader > .section-hotel-prices-header +! yahoo +yahoo.com###Horizon-ad +yahoo.com###Lead-0-Ad-Proxy +yahoo.com###adsStream +yahoo.com###commerce-module-container +mail.yahoo.com###commerce_card_group_container:has([data-test-id*="affiliate"]) +yahoo.com###defaultLREC +finance.yahoo.com###mrt-node-Lead-0-Ad +sports.yahoo.com###mrt-node-Lead-1-Ad +sports.yahoo.com###mrt-node-Lead-7-Ad +sports.yahoo.com###mrt-node-Secondary-0-Ad +sports.yahoo.com###mrt-node-SecondaryRight-1-Ad +sports.yahoo.com###mrt-node-SecondaryRight-3-Ad +yahoo.com###sda-Horizon +yahoo.com###sda-Horizon-viewer +yahoo.com###sda-LDRB +yahoo.com###sda-LDRB-iframe +yahoo.com###sda-LDRB2 +yahoo.com###sda-LREC +yahoo.com###sda-LREC-iframe +yahoo.com###sda-LREC2 +yahoo.com###sda-LREC2-iframe +yahoo.com###sda-LREC3 +yahoo.com###sda-LREC3-iframe +yahoo.com###sda-LREC4 +yahoo.com###sda-MAST +yahoo.com###sda-MON +yahoo.com###sda-WFPAD +yahoo.com###sda-WFPAD-1 +yahoo.com###sda-WFPAD-iframe +news.yahoo.com###sda-mid-right-2-iframe +news.yahoo.com###sda-mid-right-iframe +yahoo.com###sda-top-center-iframe +news.yahoo.com###sda-top-right-iframe +yahoo.com###sda-wrapper-COMMENTSLDRB +yahoo.com###sda-wrapper-WFPAD2-2 +mail.yahoo.com###slot_LREC +yahoo.com###viewer-LDRB +yahoo.com###viewer-LREC2 +yahoo.com###viewer-LREC2-1 +yahoo.com###viewer-LREC2-iframe +yahoo.com##.Feedback +www.yahoo.com##.ad-container +finance.yahoo.com##.ad-lrec3 +yahoo.com##.ads +yahoo.com##.bg-marshmallow:has(.ad-container) +sports.yahoo.com##.btm-sda +yahoo.com##.caas-da +yahoo.com##.col-fullbleed.md\:invisible.md\:overflow-hidden +yahoo.com##.da-container +yahoo.com##.darla +yahoo.com##.darla-container +yahoo.com##.darla-lrec-ad +yahoo.com##.darla_ad +yahoo.com##.ds_promo_ymobile +yahoo.com##.dynamic-inline-ad +yahoo.com##.gam-placeholder +yahoo.com##.gemini-ad +yahoo.com##.gemini-ad-feedback +www.yahoo.com##.h-\[90px\].z-2 +finance.yahoo.com##.iframe-resizer-container:has(> iframe[data-testid="offers-cds-iframe"]) +yahoo.com##.item-beacon +yahoo.com##.mx-\[-50vw\] +yahoo.com##.ntk-ad-item +sports.yahoo.com##.sda-ins +finance.yahoo.com##.sdaContainer +yahoo.com##.searchCenterBottomAds +yahoo.com##.searchCenterBottomAdsPLA +yahoo.com##.searchCenterTopAds +search.yahoo.com##.searchRightBottomAds +search.yahoo.com##.searchRightTopAds +yahoo.com##.searchSuperTopAds +yahoo.com##.sticky.bottom-0:has(.ad-container) +yahoo.com##.sys_shopleguide +yahoo.com##.top-\[92px\] +yahoo.com##.viewer-sda-container +yahoo.com##[data-content="Advertisement"] +mail.yahoo.com##[data-test-id="gam-iframe"] +mail.yahoo.com##[data-test-id="leaderboard-ad-mobile"] +mail.yahoo.com##[data-test-id^="pencil-ad"] +mail.yahoo.com##[data-test-id^="taboola-ad-"] +yahoo.com##[data-wf-beacons] +finance.yahoo.com##[id^="defaultLREC"] +www.yahoo.com##[id^="mid-center-ad"] +www.yahoo.com##[style="top: calc(-90px + 100vh);"] +yahoo.com##a[data-test-id="large-image-ad"] +yahoo.com##a[href^="https://api.taboola.com/"] +mail.yahoo.com##article[aria-labelledby*="-pencil-ad-"] +www.yahoo.com##body#news-content-app li:has(.inset-0) +www.yahoo.com##body.font-yahoobeta > div.items-center:has(style) +yahoo.com##div[class*="ads-"] +yahoo.com##div[class*="gemini-ad"] +yahoo.com##div[data-beacon] > div[class*="streamBoxShadow"] +yahoo.com##div[id*="ComboAd"] +yahoo.com##div[id^="COMMENTSLDRB"] +yahoo.com##div[id^="LeadAd-"] +yahoo.com##div[id^="darla-ad"] +yahoo.com##div[id^="defaultWFPAD"] +yahoo.com##div[id^="gemini-item-"] +yahoo.com##div[style*="/ads/"] +yahoo.com##div[style="height: 250px; width: 970px;"] +yahoo.com##div[style="height: 90px; width: 728px;"] +yahoo.com##div[style="height:250px;width:970px"] +yahoo.com##div[style="height:90px;width:728px"] +news.yahoo.com##li.lg\:min-h-\[9\.141rem\] +yahoo.com##li.min-h-\[8\.125rem\] +mail.yahoo.com##li:has(a[href^="https://api.taboola.com/"]) +yahoo.com##li[data-test-locator="stream-related-ad-item"] +! youtube +! youtube.com###mealbar-promo-renderer +youtube.com###contents > ytd-rich-item-renderer:has(> ytd-ad-slot-renderer) +youtube.com###description-inner > ytd-merch-shelf-renderer > #main.ytd-merch-shelf-renderer +youtube.com###shopping-timely-shelf +youtube.com###shorts-inner-container > .ytd-shorts:has(> .ytd-reel-video-renderer > ytd-ad-slot-renderer) +youtube.com###sticker-layer +youtube.com##.ytReelMetapanelViewModelHost > .ytReelMetapanelViewModelMetapanelItem > .ytShortsSuggestedActionViewModelStaticHost +youtube.com##.ytd-section-list-renderer > .ytd-item-section-renderer > ytd-search-pyv-renderer.ytd-item-section-renderer +youtube.com##.ytd-two-column-browse-results-renderer > ytd-rich-grid-renderer > #masthead-ad.ytd-rich-grid-renderer +youtube.com##.ytd-watch-flexy > .ytd-watch-next-secondary-results-renderer > ytd-ad-slot-renderer.ytd-watch-next-secondary-results-renderer +youtube.com##.ytd-watch-flexy > ytd-merch-shelf-renderer > #main.ytd-merch-shelf-renderer +! www.youtube.com##.ytp-featured-product +youtube.com##.ytp-suggested-action > .ytp-suggested-action-badge +m.youtube.com##lazy-list > ad-slot-renderer +youtube.com##ytd-rich-item-renderer:has(> #content > ytd-ad-slot-renderer) +m.youtube.com##ytm-companion-slot[data-content-type] > ytm-companion-ad-renderer +m.youtube.com##ytm-rich-item-renderer > ad-slot-renderer +youtube.com##.grid.ytd-browse > #primary > .style-scope > .ytd-rich-grid-renderer > .ytd-rich-grid-renderer > .ytd-ad-slot-renderer +youtube.com##.ytd-rich-item-renderer.style-scope > .ytd-rich-item-renderer > .ytd-ad-slot-renderer.style-scope +youtube.com##ytd-item-section-renderer > .ytd-item-section-renderer > ytd-ad-slot-renderer.style-scope +! https://github.com/uBlockOrigin/uAssets/issues/31268 +katv.com,kfdm.com,komonews.com,ktul.com,wjla.com##.style_medTopAdsWrapper__rd6bz +! Site Specific filters (used with $generichide) +thefreedictionary.com###Content_CA_AD_0_BC +thefreedictionary.com###Content_CA_AD_1_BC +instapundit.com###adspace_top > .widget-ad__content +sonichits.com###bottom_ad +sonichits.com###divStickyRight +spanishdict.com###removeAdsSidebar +sonichits.com###right-ad +ldoceonline.com###rightslot2-container +sonichits.com###top-ad-outer +sonichits.com###top-top-ad +plagiarismchecker.co###topbox +spanishdict.com##.ad--1zZdAdPU +tweaktown.com##.adcon +geekzone.co.nz##.adsbygoogle +apkmirror.com##.ains +tweaktown.com##.center-tag-rightad +rawstory.com##.connatix-hodler +patents.justia.com##.jcard[style="min-height:280px; margin-bottom: 10px;"] +duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##.js-results-ads +duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##.js-sidebar-ads > .nrn-react-div +boatsonline.com.au,yachthub.com##.js-sticky +history.com##.m-balloon-header--ad +history.com##.m-in-content-ad +history.com##.m-in-content-ad-row +spiegel.de##.ob-dynamic-rec-container.ob-p +duckduckgo.com,duckduckgogg42xjoc72x3sjasowoarfbgcmvfimaftt6twagswzczad.onion##.results--ads +mail.google.com##a[href^="http://li.blogtrottr.com/click?"] +geekzone.co.nz##div.cornered.box > center +yandex.com##div[id^="yandex_ad"] +! Google +www.google.*###tads[aria-label] +www.google.*###tadsb[aria-label] +www.google.*##.OcdnDb +www.google.*##.OcdnDb + .PbZDve +www.google.*##.OcdnDb + .PbZDve + .m6QErb +www.google.*##.OcdnDb + .fp2VUc +www.google.*##.commercial-unit-desktop-rhs:not(.mnr-c) +www.google.*##.commercial-unit-mobile-top > div[data-pla="1"] +www.google.*##.cu-container +www.google.*##.ltJjte +www.google.*##.uEierd +www.google.*##.vbIt3d +www.google.*##a[href^="/aclk?sa="][href*="&adurl=&placesheetAdFix=1"] +www.google.*##a[href^="/aclk?sa="][href*="&adurl=&placesheetAdFix=1"] + button +www.google.*##a[href^="https://www.googleadservices.com/pagead/aclk?"] +www.google.*##body#yDmH0d [data-is-promoted="true"] +www.google.*##c-wiz[jsrenderer="YTTf6c"] > .bhapoc.oJeWuf[jsname="bN97Pc"][data-ved] +www.google.*##div.FWfoJ > div[jsname="Nf35pd"] > div[class="R09YGb ilovz"] +www.google.*##div.sh-sr__shop-result-group[data-hveid]:has(g-scrolling-carousel) +www.google.*##div[class="Nv2PK THOPZb CpccDe "]:has(.OcdnDb) +www.google.*##div[class="YNk70c CuvrIe"] +www.google.*##div[data-ads-title="1"] +www.google.*##div[data-attrid="kc:/local:promotions"] +www.google.*##div[data-crl="true"][data-id^="CarouselPLA-"] +www.google.*##div[data-is-ad="1"] +www.google.*##div[data-is-promoted-hotel-ad="true"] +www.google.*##div[data-section-type="ads"] +www.google.*##div[data-tweed-card]:has(a[href^="https://www.google.com/aclk?"]) +www.google.*##div[jscontroller="DbCX3b"]:has(a[href^="/aclk?"]) +www.google.*##div[jsdata*="CarouselPLA-"][data-id^="CarouselPLA-"] +www.google.*##div[jsdata*="SinglePLA-"][data-id^="SinglePLA-"] +www.google.*##html[itemtype="http://schema.org/SearchResultsPage"] #cnt div[class$="sh-sr__bau"] +www.google.*##html[itemtype="http://schema.org/SearchResultsPage"] #cnt div[class$="sh-sr__tau"][style] +! Filters for ABP testpages +testpages.adblockplus.org###abptest +testpages.eyeo.com###test-aa +testpages.eyeo.com###test-element-id +testpages.eyeo.com##.test-element-class +! MSN +msn.com###displayAdCard +msn.com###partners +msn.com###promotions +msn.com##.DisplayAdsWC +msn.com##.ad-banner-wrapper +msn.com##.ad-container +msn.com##.articlePage_bannerAd_wrapper-DS-EntryPoint1-1 +msn.com##.articlePage_eoabNativeAd_new-DS-EntryPoint1-1 +msn.com##.banner-placeholder-container +msn.com##.bannerAdContainer-DS-EntryPoint1-1 +msn.com##.consumption-page-banner-wrapper +msn.com##.display-ad-container +msn.com##.display-ads-container +msn.com##.drrTopAdWrapper +msn.com##.eocb-ads +msn.com##.galleryPage_eoabContent_new-DS-EntryPoint1-1 +msn.com##.galleryPage_eoabNativeAd_new-DS-EntryPoint1-1 +msn.com##.gem-display-ad-wrapper +msn.com##.intra-article-ad-full +msn.com##.intra-article-ad-half +msn.com##.me-stripe-tile-content:has(a[href*="?"] .me-stripe-title-subtitle) +msn.com##.modernRightRail_stickyTopBannerAd-DS-EntryPoint1-1 +msn.com##.modernRightRail_topAd_container_2col_newRR-DS-EntryPoint1-1 +msn.com##.outeradcontainer +msn.com##.qohvco-DS-EntryPoint1-1 +msn.com##.river-background +msn.com##.sportsPageHorizontalTopLevelContainer-DS-EntryPoint1-1:has(> div[id*="banner"] > display-ads) +msn.com##.views-right-rail-top-display +msn.com##.views-right-rail-top-display-ad +msn.com##.windowsBannerAdContainer-DS-EntryPoint1-1 +msn.com##[class^="articlePage_eoabContent"] +msn.com##[data-m*="Infopane_CMSBasicCardstore_article"] +msn.com##[id^="nativead"] +msn.com##a[aria-label="AliExpress"] +msn.com##a[aria-label="Amazon Assistant"] +msn.com##a[aria-label="Amazon"] +msn.com##a[aria-label="Bol.com"] +msn.com##a[aria-label="Booking.com"] +msn.com##a[aria-label="Ricardo"] +msn.com##a[aria-label="Today's Deals"] +msn.com##a[aria-label="eBay"] +msn.com##a[href*=".booking.com/"] +msn.com##a[href*="/aff_m?offer_id="] +msn.com##a[href*="?sub_aff_id="] +msn.com##a[href="https://aka.ms/QVC"] +msn.com##a[href^="https://amzn.to/"] +msn.com##a[href^="https://clk.tradedoubler.com/click?"] +msn.com##a[href^="https://clkde.tradedoubler.com/click?"] +msn.com##a[href^="https://disneyplus.bn5x.net/"] +msn.com##a[href^="https://prf.hn/click/camref:"] +msn.com##a[href^="https://ww55.affinity.net/"] +msn.com##above-river-block +msn.com##cs-native-ad-card +msn.com##cs-native-ad-card-24 +msn.com##cs-native-ad-card-no-hover +msn.com##div.body:has(> img[id^="nativead"]) +msn.com##div.footer:has(> a.ad-slug) +msn.com##div[class^="articlePage_topBannerAdContainer_"] +msn.com##div[class^="card-DS-card"][data-t*="RiverPlaceholder"] +msn.com##div[class^="galleryPage_bannerAd"] +msn.com##div[id^="mrr-topad-"] +msn.com##div[id^="nativeAd"] +msn.com##div[id^="watch-feed-native-ad-"] +msn.com##li[data-m*="NativeAdItem"] > a > * +msn.com##li[data-provider="gemini"] +msn.com##li[data-provider="outbrain"] +msn.com##msft-article-card[class=""] +msn.com##msft-content-card[data-t*="NativeAd"] +msn.com##msft-content-card[href^="https://api.taboola.com/"] +msn.com##msft-content-card[id^="contentcard_nativead-"] +msn.com##msn-info-pane-panel[id^="tab_panel_nativead-"] +msn.com##partner-upsell-card +! Bing +bing.com###bepfo.popup[style^="visibility: visible"] +bing.com##.ad_sc +bing.com##.b_ad +bing.com##.b_adBottom +bing.com##.b_adLastChild +bing.com##.b_adPATitleBlock +bing.com##.b_algo:has(> .b_title > h2 > .b_ads1line) +bing.com##.b_spa_adblock +bing.com##.br-poleoffcarousel +bing.com##.dgControl_list > li:has(.ad-label) +bing.com##.mapsTextAds +bing.com##.mma_il +bing.com##.nad_ctn +bing.com##.pa_sb +bing.com##.productAd +bing.com##.ra_car_block +bing.com##.text-ads-container +bing.com##[id$="adsMvCarousel"] +bing.com##a[href*="/aclick?ld="] +bing.com##cs-native-ad-card +bing.com##cs-responsive-card[ad][data-t*="nativead"] +bing.com##cs-responsive-card[ad][id^="nativead-"] +bing.com##div[aria-label$="ProductAds"] +bing.com##div[class="ins_exp tds"] +bing.com##div[class="ins_exp vsp"] +! bing.com##li.b_ans[data-partnertag][role="presentation"] +bing.com##li[data-idx]:has(#mm-ebad) +! kayak +checkfelix.com,kayak.*,swoodoo.com###resultWrapper > div > div > [role="button"][tabindex="0"] > .yuAt-pres-rounded +checkfelix.com,kayak.*,swoodoo.com##.Dp1L +checkfelix.com,kayak.*,swoodoo.com##.EvBR +checkfelix.com,kayak.*,swoodoo.com##.IZSg-mod-banner +checkfelix.com,kayak.*,swoodoo.com##.J8jg:has(.J8jg-provider-ad-badge) +checkfelix.com,kayak.*,swoodoo.com##.YnaR +checkfelix.com,kayak.*,swoodoo.com##.ev1_-results-list > div > div > div > div.G-5c[role="tab"][tabindex="0"] > .yuAt-pres-rounded +checkfelix.com,kayak.*,swoodoo.com##.ev1_-results-list > div > div > div > div[data-resultid$="-sponsored"] +checkfelix.com,kayak.*,swoodoo.com##.nqHv-pres-three:has(div.nqHv-logo-ad-wrapper) +checkfelix.com,kayak.*,swoodoo.com##.resultsList > div > div > div > div.G-5c[role="tab"][tabindex="0"] > .yuAt-pres-rounded +checkfelix.com,kayak.*,swoodoo.com##.resultsList > div > div > div > div[data-resultid$="-sponsored"] +checkfelix.com,kayak.*,swoodoo.com##.zZcm-pres-three +checkfelix.com,kayak.*,swoodoo.com##div.PzK0-pres-default +checkfelix.com,kayak.*,swoodoo.com##div.YTRJ[role="button"][tabindex="0"] > .yuAt-pres-rounded +checkfelix.com,kayak.*,swoodoo.com##div[class$="-adWrapper"] +checkfelix.com,kayak.*,swoodoo.com##div[class*="-ad-card"] +checkfelix.com,kayak.*,swoodoo.com##div[class*="-adInner"] +checkfelix.com,kayak.*,swoodoo.com##div[data-resultid]:has(a.IZSg-adlink) +checkfelix.com,kayak.*,swoodoo.com##div[id^="inline-"] + +! *** easylist:easylist/easylist_specific_hide_abp.txt *** +dev.to##.crayons-card:has(.sponsorship-dropdown) +2fa.live#?#p:has-text(Advertising) +404media.co#?#.post__content > p:has-text(This segment is a paid ad) +acmemarkets.com,albertsons.com,andronicos.com,carrsqc.com,haggen.com,jewelosco.com,kingsfoodmarkets.com,pavilions.com,randalls.com,safeway.com,shaws.com,starmarket.com,tomthumb.com,vons.com#?#.product-card-col:has-text(Sponsored) +agoda.com#?#.PropertyCardItem:has(div:has-text(Promoted)) +alibaba.com#?#.J-offer-wrapper:has-text(Top sponsor listing) +amusingplanet.com#?#.blockTitle:has-text(Advertisement) +androidauthority.com#?#div[class="e_Qi"]:has-text(Trending Tech Deals) +androidauthority.com#?#div[class="e_Rc e_d"]:has-text(Affiliate links on Android Authority may earn us a commission) +androidauthority.com#?#div[class="e_ei"]:has-text(Trending Tech Deals) +androidauthority.com#?#div[class="e_ic e_d"]:has-text(Affiliate links on Android Authority may earn us a commission) +anfieldindex.com#?#aside[data-animation-event]:has-text(PARTNERS) +animalfunfacts.net#?#center:has-text(ADVERT) +app.daily.dev#?#article:has-text(Promoted) +appleinsider.com#?#div.main-art:has-text(Sponsored Content) +argos.co.uk#?#.ds-c-grid-item:has-text(Sponsored) +argos.co.uk#?#[data-test^="component-slider-slide-"]:has-text(SPONSORED) +atlanticsuperstore.ca,fortinos.ca,loblaws.ca,maxi.ca,newfoundlandgrocerystores.ca,nofrills.ca,provigo.ca,realcanadiansuperstore.ca,valumart.ca,yourindependentgrocer.ca,zehrs.ca#?#.indiana-scroll-container > ul > li:has(.chakra-badge:has-text(/Sponsorisé|Sponsored/)) +atlanticsuperstore.ca,fortinos.ca,loblaws.ca,maxi.ca,newfoundlandgrocerystores.ca,nofrills.ca,provigo.ca,realcanadiansuperstore.ca,valumart.ca,yourindependentgrocer.ca,zehrs.ca#?#.product-tile-group__list__item:has-text(Sponsored) +atlanticsuperstore.ca,fortinos.ca,maxi.ca,newfoundlandgrocerystores.ca,nofrills.ca,provigo.ca,realcanadiansuperstore.ca,valumart.ca,yourindependentgrocer.ca,zehrs.ca#?#[data-testid="card"]:has-text(sponsored) +autoevolution.com#?#.mgtop_20.nxart:has-text(#ad) +autotrader.co.uk#?#[data-testid="desktop-search"] li:has(span:has-text(Ad)) +autotrader.com#?#.inventory-listing:has-text(Sponsored) +autotrader.com#?#[data-cmp="PremiumSpotlightContainer"]:has-text(Sponsored) +autotrader.com#?#[data-cmp="delayedImpressionWaypoint"]:has-text(SPONSORED) +backpack.tf,backpacktf.com#?#.panel:has-text(createAd) +bayequest.com#?#.elementor-section:has-text(Advertisement) +beaumontenterprise.com,chron.com,ctinsider.com,ctpost.com,expressnews.com,greenwichtime.com,houstonchronicle.com,lmtonline.com,manisteenews.com,michigansthumb.com,middletownpress.com,mrt.com,myjournalcourier.com,myplainview.com,mysanantonio.com,newstimes.com,nhregister.com,ourmidland.com,registercitizen.com,sfchronicle.com,sfgate.com,stamfordadvocate.com,thehour.com,theintelligencer.com#?#.mb32.b-gray300:has-text(Advertisement) +beaumontenterprise.com,chron.com,ctinsider.com,ctpost.com,expressnews.com,greenwichtime.com,houstonchronicle.com,lmtonline.com,manisteenews.com,michigansthumb.com,middletownpress.com,mrt.com,myjournalcourier.com,myplainview.com,mysanantonio.com,newstimes.com,nhregister.com,ourmidland.com,registercitizen.com,sfchronicle.com,stamfordadvocate.com,thehour.com,theintelligencer.com#?#.b-gray300:has-text(Advertisement) +beincrypto.com#?#.before-author-block-bio:has-text(Sponsored) +belloflostsouls.net#?#span.text-secondary:has-text(Advertisement) +bestbuy.com#?#.plp-ninja-carousel:has-text(Sponsored) +bestbuy.com#?#div[data-testid="Row_testID"]:has(span:has-text(Sponsored)) +bitchute.com#?#.row.justify-center:has-text(Advertisement) +bitcoinsensus.com#?#.e-con-inner:has-text(Our Favourite Trading Platforms) +bjs.com#?#[data-cnstrc-recommendations]:has-text(Sponsored Products) +bleepingcomputer.com#?#.post_wrap:has-text(AdBot) +bleepingcomputer.com#?#ul#bc-home-news-main-wrap > li:has-text(Sponsored) +blockchair.com#?#.fs-sm.flow:has-text(Sponsored) +boatnews.com#?#div.p:has-text(Advertising) +bolnews.com#?#[style*="center"]:has-text(Ad) +booking.com#?#div[data-testid="property-card"]:has(span:has-text(Promoted)) +boots.com#?#.oct-listers-hits__item:has-text(Sponsored) +businessday.co.za,sowetan.co.za,timeslive.co.za#?#.content-list-block:has-text(News & insights from our commercial partners) +capwages.com#?#.gap-1.items-center.flex-col.flex:has-text(Remove Ads) +aliexpress.com#?##card-list > .search-item-card-wrapper-gallery:has(a.search-card-item[href*="&aem_p4p_detail="] div[class*="cards--image--"] > div[class*="multi--ax--"]:has-text(/^(?:AD|An[uú]ncio|광고|広告)$/)):has(+ .search-item-card-wrapper-gallery a.search-card-item:not([href*="&aem_p4p_detail="])) +china.ahk.de#?#.b-main__section:has(h2.homepage-headline:has-text(Advertisement)) +cleantechnica.com#?#.zox-side-widget:has-text(/^Advertis/) +coincarp.com#?#.border-bottom:has-text(Sponsored) +coindesk.com#?#.bg-white.flex.gap-6.w-full.shrink.justify-between.md\:justify-normal.lg\:flex-row-reverse:has(.font-metadata.mr-1.uppercase:has-text(Sponsored by)) +cointelegraph.com#?#li.group-\[\.inline\]\:mb-8:has-text(Ad) +coles.com.au#?#.coles-targeting-UnitContainer:has(ul.product__top_messaging) +comfig.app#?#.card:has-text(Partnered) +coolors.co#?#a:has(div:last-child:has-text(Hide)) +corvetteblogger.com#?#aside.td_block_template_1.widget.widget_text:has(> h4.block-title > span:has-text(Visit Our Sponsors)) +costco.com#?#[data-testid="shoppable-list-container"]:has-text(Spons) +cruisecritic.co.uk,cruisecritic.com#?#div[role="group"]:has-text(Sponsored) +cruisecritic.com#?#.block:has(a[data-tracking]:has-text(Sponsored)) +cvs.com#?#div[class*="flex-col"]:has(>h2:has-text(Sponsored)) +deccanherald.com#?#div#container-text:has-text(ADVERTISEMENT) +deccanherald.com#?#span.container-text:has-text(ADVERTISEMENT) +decrypt.co#?#span:has-text(AD) +defkey.com#?#.visible-lg:has-text(Advertisement) +dev.to#?#div[data-display-unit]:has(span:has-text(Promoted)) +dexscreener.com#?#.chakra-link:has-text(Advertise) +dictionary.com,thesaurus.com#?#[class] > p:has-text(Advertisement) +digg.com#?#article.relative:has(div:has-text(SPONSORED)) +deccanherald.com##div:has(> div > .ad-background) +qz.com##div[class^="sc-"]:has(> div[class="ad-unit"]) +qz.com##div[class^="sc-"]:has(> div[is="bulbs-dfp"]) +deccanherald.com##div[style^="min-height"]:has(> div > div[id*="-ad-separator"]) +docs.openwebui.com#?#.markdown > .w-full:has-text(Sponsored) +docs.openwebui.com#?#.pb-4 > .mb-2:has-text(Sponsored) +dotesports.com#?#.wp-block-gamurs-article-tile:has-text(Sponsored) +downforeveryoneorjustme.com#?#.relative.bg-white:has-text(PolyBuzz) +downornot.net#?#.border-blue-500\/20:has-text(Special offer) +dropstab.com#?#.bg-slate-100:has-text(Ad) +dropstab.com#?#.bottom-0.gap-2:has-text(/Stake Now|Invest Now/) +engadget.com#?#.justify-center:has-text(Advertisement) +english.mathrubhumi.com#?#.psd\:px-0.px-\[10px\]:has-text(To advertise here) +etherscan.io#?#section.container-xxl > .py-4:has-text(Sponsored) +euronews.com#?#.m-object:has(.m-object__quote:has-text(/In partnership with|En partenariat avec|Mit Unterstützung von|In collaborazione con|En colaboración con|Em parceria com|Совместно с|ile birlikte|Σε συνεργασία με|Együttműködésben a|با همکاری|بالمشاركة مع/)) +euronews.com#?#.the-media-object--has-sponsored:has-text(/In partnership with|In collaborazione con|En partenariat avec|Mit Unterstützung von|En colaboración con|Em parceria com|We współpracy z|Совместно с|ile birlikte|Σε συνεργασία με|Együttműködésben a|با همکاری|با همکاری/) +eztv.tf,eztv.yt#?#tbody:has-text(WARNING! Use a) +filehippo.com#?#article.card-article:has(span.card-article__author:has-text(Sponsored Content)) +fiverr.com#?#.gig-card-layout:has-text(Ad by) +flipkart.com#?#.fWi7J_:has-text(Brands In Spotlight) +flipkart.com#?#.grid-formation:has(div:has-text(AD)) +foobar2000.org#?#caption:has-text(advertisement) +foodlion.com#?#.product-grid-cell:has-text(Sponsored) +freshdirect.com#?#.swiper-slide:has-text(Sponsored) +fxempire.com#?#span[display="inline-block"]:has-text(Advertisement) +gamepadla.com#?#.pMain:has-text(Partner) +gamersnexus.net#?#.moduleContent:has-text(Advertisement) +ganjapreneur.com#?#.has-background:has-text(Featured whitepaper) +giantfood.com,giantfoodstores.com,martinsfoods.com#?#.pdl-generic-content_full:has-text(Sponsored) +giantfood.com,giantfoodstores.com,martinsfoods.com#?#[data-product-id]:has-text(Sponsored) +globalchinaev.com#?#p.content-center:has-text(ADVERTISEMENT) +hannaford.com#?#.header-2:has-text(Sponsored Suggestions) +haveibeenpwned.com#?#.card-glow:has-text(Sponsored) +health.harvard.edu#?#.border-t:has-text(You might also be interested in) +heb.com#?#div:has(> div > div[class^="Carousel_wrapper"]:has-text(Promoted)) +heb.com#?#div:has(> div > div[class^="ModuleSet_moduleSetContainer"]:has-text(Promoted)) +heb.com#?#div[class^="sc-"]:has(> div[data-qe-id="productCard"]:has-text(Promoted)) +historic-uk.com#?#.article-sidebar:has-text(Advertisement) +infographicjournal.com#?#.et_pb_module:has-text(Partners) +infographicjournal.com#?#.et_pb_module:has-text(Partners) + .et_pb_module +infographicjournal.com#?#.et_pb_widget:has-text(Partners) +instagram.com#?#div[style="max-height: inherit; max-width: inherit; display: none !important;"]:has(span:has-text(Paid partnership with )) +instagram.com#?#div[style="max-height: inherit; max-width: inherit; display: none !important;"]:has(span:has-text(Paid partnership)) +instagram.com#?#div[style="max-height: inherit; max-width: inherit;"]:has(span:has-text(Paid partnership with )) +kids-in-mind.com#?#.et_pb_code_inner:has-text(advertisement) +kijiji.ca#?#[data-testid^="listing-card-list-item-"]:has-text(TOP AD) +kogan.com#?#._2EeeR:has-text(Sponsored) +kogan.com#?#.rs-infinite-scroll > div:has-text(Sponsored) +kogan.com#?#.slider-slide:has-text(Sponsored) +kohls.com#?#[component-export="KmnMarqueeBannerWrapper"]:has-text(Sponsored) +kohls.com#?#[id^="kmn-leaderboard-"]:has-text(Sponsored) +kslnewsradio.com,ksltv.com,ktar.com#?#.wrapper:has-text(Sponsored Articles) +leadership.ng#?#.jeg_postblock:has-text(SPONSORED) +linkedin.com#?#.msg-overlay-list-bubble__conversations-list:has-text(/Anzeige|Sponsored|Promoted|Dipromosikan|Propagováno|Promoveret|Gesponsert|Promocionado|促銷內容|Post sponsorisé|프로모션|Post sponsorizzato|广告|プロモーション|Treść promowana|Patrocinado|Promovat|Продвигается|Marknadsfört|Nai-promote|ได้รับการโปรโมท|Öne çıkarılan içerik|Gepromoot|الترويج/) +linkedin.com#?#[componentkey*="MAIN_FEED_RECENT"] > [data-display-contents]:has-text(/Anzeige|Sponsored|Promoted|Dipromosikan|Propagováno|Promoveret|Gesponsert|Promocionado|促銷內容|Post sponsorisé|프로모션|Post sponsorizzato|广告|プロモーション|Treść promowana|Patrocinado|Promovat|Продвигается|Marknadsfört|Nai-promote|ได้รับการโปรโมท|Öne çıkarılan içerik|Gepromoot|الترويج/) +linkedin.com#?#[componentkey*="MAIN_FEED_RELEVANCE"] > [data-display-contents]:has-text(/Anzeige|Sponsored|Promoted|Dipromosikan|Propagováno|Promoveret|Gesponsert|Promocionado|促銷內容|Post sponsorisé|프로모션|Post sponsorizzato|广告|プロモーション|Treść promowana|Patrocinado|Promovat|Продвигается|Marknadsfört|Nai-promote|ได้รับการโปรโมท|Öne çıkarılan içerik|Gepromoot|الترويج/) +linkedin.com#?#div.feed-shared-update-v2:has(span.update-components-actor__description:has-text(/Anzeige|Sponsored|Promoted|Dipromosikan|Propagováno|Promoveret|Gesponsert|Promocionado|促銷內容|Post sponsorisé|프로모션|Post sponsorizzato|广告|プロモーション|Treść promowana|Patrocinado|Promovat|Продвигается|Marknadsfört|Nai-promote|ได้รับการโปรโมท|Öne çıkarılan içerik|Gepromoot|الترويج/)) +linkedin.com#?#div.feed-shared-update-v2:has(span.update-components-actor__sub-description--tla:has-text(/Anzeige|Sponsored|Promoted|Dipromosikan|Propagováno|Promoveret|Gesponsert|Promocionado|促銷內容|Post sponsorisé|프로모션|Post sponsorizzato|广告|プロモーション|Treść promowana|Patrocinado|Promovat|Продвигается|Marknadsfört|Nai-promote|ได้รับการโปรโมท|Öne çıkarılan içerik|Gepromoot|الترويج/)) +linkedin.com#?#div.feed-shared-update-v2:has(span.update-components-actor__sub-description:has-text(/Anzeige|Sponsored|Promoted|Dipromosikan|Propagováno|Promoveret|Gesponsert|Promocionado|促銷內容|Post sponsorisé|프로모션|Post sponsorizzato|广告|プロモーション|Treść promowana|Patrocinado|Promovat|Продвигается|Marknadsfört|Nai-promote|ได้รับการโปรโมท|Öne çıkarılan içerik|Gepromoot|الترويج/)) +linkedin.com#?#div[data-testid="mainFeed"] > div[data-display-contents="true"]:has(p:has-text(/Anzeige|Sponsored|Promoted|Dipromosikan|Propagováno|Promoveret|Gesponsert|Promocionado|促銷內容|Post sponsorisé|프로모션|Post sponsorizzato|广告|プロモーション|Treść promowana|Patrocinado|Promovat|Продвигается|Marknadsfört|Nai-promote|ได้รับการโปรโมท|Öne çıkarılan içerik|Gepromoot|الترويج/)) +loblaws.ca#?#[data-testid="product-grid"]>div:has-text(Sponsored) +loblaws.ca,provigo.ca,valumart.ca,yourindependentgrocer.ca,zehrs.ca#?#.chakra-container:has-text(Featured Items) +lovenovels.net#?#center:has-text(Advertisement) +lyngsat.com#?#font > [href] > font:has-text(Advertisements) +magazine.raspberrypi.com#?#.bg-rpi-grey-100:has-text(Advertisement) +mapchart.net#?#.row:has-text(Advertisement) +mapquest.co.uk#?#.z-10.justify-center:has-text(Advertisement) +mobalytics.gg#?#aside > [class]:has-text(Advertisement) +motortrend.com#?#.lg\:p-8.p-6:has-text(ADVERTISEMENT) +moviebite.cc#?#.transition-all.overflow-hidden.w-full:has-text(Advertisement) +neowin.net#?#.ipsColumns_collapsePhone.classes:has-text(Our Sponsors) +nerdwallet.com#?#._3JhNDX:has-text(Advertisement) +netflixjunkie.com#?#[style="text-align:center"]:has-text(ADVERTISEMENT) +newegg.com#?#.product-banner:has-text(Sponsored) +news.yahoo.com#?#div.md\:block:has-text(Advertisement) +nextdoor.com#?#[data-v3-view-type="V3Wrapper"]:has(> [data-testid="feed-item-visibility-tracker"]:has-text(Sponsored)) +nextdoor.com#?#div[data-testid="feed-item-card"]:has(span[class^="reset_"]:has-text(А⁠d)) +noelleeming.co.nz#?#div.product-tile:has(span:has-text(Sponsored)) +noon.com#?#.swiper-slide:has-text(Sponsored) +noon.com#?#span[class*="productContaine"]:has(div:has-text(Sponsored)) +nordstrom.com#?#article:has(.Yw5es:has-text(Sponsored)) +nordstrom.com#?#ul[style^="padding: 0px; position: relative;"] > li[class]:has-text(Sponsored) +nzherald.co.nz#?#section.section-chain--triple-image:has-text(Property news from OneRoof) +nzherald.co.nz#?#section:has-text(Partner content) +perplexity.ai#?#.py-sm.group:has-text(Sponsored) +pexels.com#?#[data-testid="column"] [data-testid="item"]:has-text(Sponsored) +producthunt.com#?#.cursor-pointer:has-text(Promoted) +producthunt.com#?#.text-12:has-text(Promoted) +producthunt.com#?#div[class="flex cursor-pointer items-start gap-4 rounded-lg bg-gray-50 p-4"]:has-text(Promoted) +property24.com#?#.p24_tileContainer:has-text(Sponsored) +provigo.ca#?#.css-1nhzth8:has-text(/sponsorisé|sponsored/) +psprices.com#?#.creative:has-text(remove advertising) +pushsquare.com#?#span:has-text(or Subscribe) +winaero.com#?##qcihrbv5 > p:has-text(Tip) +qvc.com#?#.qModule:has-text(Sponsored) +rclone.org#?#.card:has(.card-header:has-text(Sponsor)) +regex101.com#?#div > header + div > div + div:has-text(Sponsors) +rome2rio.com#?#[data-testid="hotel-list-item"]:has-text(Ad) +rome2rio.com#?#div[aria-labelledby="schedules-header"] > div > div:has-text(Ad) +sainsburys.co.uk#?#.pt-grid-item:has([data-testid="citrus-label"]:has-text(Sponsored)) +sainsburys.co.uk#?#section header[data-test="c006-container-wrapper"]:has-text(Sponsored) +sainsburys.co.uk#?#section[class="ln-o-section ln-u-hard-bottom ln-u-margin-top*2"]:has-text(Sponsored) + section[class="ln-o-section ln-u-hard-bottom ln-u-margin-top*2"] +salon.com#?#.title:has-text(Advertisement) +samsclub.com#?#li[data-slide]:has-text(Sponsored) +scamwarners.com#?#center:has-text(Advertisement) +sciencenews.org#?#p:has-text(Sponsor Message) +search.yahoo.com#?#div.mb-28:has(span:has-text(Ads)) +seattleweekly.com#?#.marketplace-row:has-text(Sponsored) +semafor.com#?#.suppress-rss:has(:has-text(Supported by)) +sephora.com#?#div[class^="css-"]:has(>a:has(span:has-text(Sponsored))) +sfyimby.com#?#.textwidget:has-text(ADVERTISEMENT) +shipt.com#?#div.swiper-slide:has-text(Sponsored) +shipt.com#?#li[class]:has-text(Sponsored) +shopee.sg#?#.shopee-header-section:has(> .shopee-header-section__content:has-text(Ad)) +shopee.sg#?#div[class="N_YeYe"]:has(> .shopee_ic:has-text(Ad)) +shopee.sg#?#div[class="oMSmr0"]:has(> .shopee_ic:has-text(Ad)) +slashdot.org#?#.fhitem-story.fhitem:has-text(Sponsored Content) +slashdot.org#?#.grid_24:has-text(Featured Content) +songbpm.com#?#div.mb-6:has-text(Advertisement) +sourceforge.net#?#aside.m-sidebar-widget > .as-header:has-text(Featured) +spigotmc.org#?#[style="text-align: center"]:has-text(sponsored) +sprouts.com#?#li.product-wrapper:has(span:has-text(Sponsored)) +staples.com#?#.side-by-side-carousel__carousel_container:has-text(Sponsored Products) +staples.com#?#.sku-configurator__skuOffsetCarouselNew:has(span:has-text(Sponsored products:)) +stocktwits.com#?#.is-visible:has-text(Remove ads) +stocktwits.com#?#.leading-\[16px\]:has-text(Advertisement) +gsmarena.com#?##subHeader3:has-text(daily deals) +target.com#?#.ProductRecsLink-sc-4mw94v-0:has(p:has-text(sponsored)) +target.com#?#.styles_ndsCarouselItem__dnUkr:has(p.h-text-sm:has-text(Sponsored)) +target.com#?#[class*="styledCarouselItem"]:has-text(Sponsored) +target.com#?#[data-test="ProductCardVariantRecommendation"]:has-text(Sponsored) +target.com#?#[data-test="productCardVariantRecommendation"]:has-text(Sponsored) +target.com#?#div[class^="styles_productCardVariantMiniWrapper_"]:has(div.h-text-sm:has-text(Sponsored)) +target.com#?#div[data-test="@web/ProductCard/ProductCardVariantAisle"]:has-text(Sponsored) +target.com#?#div[data-test="@web/site-top-of-funnel/ProductCardWrapper"]:has-text(sponsored) +target.com#?#div[data-test="addToCartSuccessModalRecommendationsTile"]:has(p.h-text-xs:has-text(Sponsored)) +techonthenet.com#?#div[class] > p:has-text(Advertisements) +telugupeople.com#?#table:has(> tbody > tr > td > a:has-text(Advertisements)) +temu.com#?#.EKDT7a3v:has-text(AD) +temu.com#?#.goods-container:has-text(AD) +temu.com#?#.splide__slide:has-text(AD) +theblock.co#?#.py-4.my-6:has-text(Advertisement) +thedailywtf.com#?#.article-body > div:has-text([Advertisement]) +thingiverse.com#?#.item-card-container:has-text(/^Ad$/) +timesofindia.indiatimes.com#?#div[data-type="in_view"]:has(> div > span:has-text(Tired of too many ads?)) +tlgrm.eu#?#.cfeed-card:has-text(Promoted post) +tossinggames.com#?#tbody:has-text(Please visit our below advertisers) +tripadvisor.com#?#.cAWGu:has(a:has-text(Similar Sponsored Properties)) +tripadvisor.com#?#.tkvEM:has-text(Sponsored) +tripadvisor.com#?#[aria-label="Map marker"]:has-text(Sponsored) +tripadvisor.com#?#[data-test="SL_list_item"]:has-text(Sponsored) +tumlook.com#?#article:has-text(Sponsored) +twitter.com,x.com#?#h2[role="heading"]:has-text(/Promoted|Gesponsert|Promocionado|Sponsorisé|Sponsorizzato|Promowane|Promovido|Реклама|Uitgelicht|Sponsorlu|Promotert|Promoveret|Sponsrad|Mainostettu|Sponzorováno|Promovat|Ajánlott|Προωθημένο|Dipromosikan|Được quảng bá|推廣|推广|推薦|推荐|プロモーション|프로모션|ประชาสมพนธ|परचरत|বজঞপত|تشہیر شدہ|مروج|تبلیغی|מקודם/) +ulta.com#?#li.ProductListingResults__productCard:has(.ProductCard__badge:has-text(Sponsored)) +vpforums.org#?#.ipsSideBlock.clearfix:has-text(Affiliates) +weather.com#?#.bg-gray-100:has-text(Advertisement) +wings.io#?#.form-group center:has-text(Advertisement) +wltreport.com#?#.code-block:has-text(ADVERTISEMENT) +wolt.com#?#button:has(> div > div > div > span:has-text(Sponsored)) +wolt.com#?#div:has(> div > div > div > div > div > p:has-text(Sponsored)) +woot.com#?#[dir="auto"]:has-text(ADVERTISEMENT) +www.yahoo.com#?#.uppercase.text-xs:has-text(Advertisement) +yahoo.com#?#.leading-3:has-text(Advertisement) +yahoo.com#?#.md\:block.dark\:bg-ramones:has-text(Advertisement) +yahoo.com#?#div.md\:block.pb-5:has-text(Advertisement) +yourstory.com#?#[width]:has-text(ADVERTISEMENT) +! bing +bing.com#?#.ta_c:has-text(Sponsored) +bing.com#?#li.b_algo:has(.rms_img[src*="id=ODLS.A2450BEC-5595-40BA-9F13-D9EC6AB74B9F"]):has(.tptt:has-text(/^([Aa]mazon(\.[acdefinps][aeglnorst]m?\.?[abjmtu]?[kprux]?)?|Best Buy|Booking\.com|eBay|eDreams|Lenovo US|Trip\.com|Tripadvisor|Walmart)$/)) +! top-level domain wildcard +kaufland.*#?#.recommender-wrapper:has-text(Gesponsert) +manomano.*#?#.Ssfiu-:has-text(/Patrocinado|Gesponsert|Sponsorisé|Sponsorizzato/) +manomano.*#?#[data-testid="productCardListing"]:has-text(/Patrocinado|Gesponsert|Sponsorisé|Sponsorizzato/) +modivo.*#?#.banner:has-text(/Sponsorizzato|Sponsorowane|Sponsorizat|Sponzorováno|Szponzorált|Спонсорирани|Sponsored|Gesponsert/) +modivo.*#?#.product:has-text(/Sponsorizzato|Sponsorowane|Sponsorizat|Sponzorováno|Szponzorált|Спонсорирани|Sponsored|Gesponsert/) +tripadvisor.*#?#.AaFRW:has-text(Sponsored) +tripadvisor.*#?#[data-automation="crossSellShelf"] div:has(> span:has-text(Sponsored)) +tripadvisor.*#?#[data-automation="relatedStories"] div > div:has(a:has-text(SPONSORED)) +tripadvisor.*#?#div[class="JYrkj w"]:has(span:has-text(In partnership with)) +tripadvisor.*#?#div[class="JYrkj w"]:has(span:has-text(Sponsored by)) +walmart.*#?#div > div[io-id]:has-text(Sponsored) +walmart.*#?#div[role="group"]:has(div:has-text(/Sponsored|Commandité/)) +yelp.*#?#main[class^="searchResultsContainer"] li h2:has-text(Sponsored) +yts.*#?#.bbj:has-text(Warning) +yts.*#?#.col-lg-12:has-text(/Please enable|indirirken/) +! ABP CSS injection filters +6abc.com,abc11.com,abc13.com,abc30.com,abc7.com,abc7chicago.com,abc7news.com,abc7ny.com,abcotvs.net##.nav.sticky {top:0px;} +abcnews.com,abcnews.go.com##.navigation--has-subnav {top:0;} +benzinga.com##.cUDaEv {margin-top:162px !important;} +benzinga.com##.gZyLpV .mobile-header {margin-top:0 !important;} +benzinga.com##.iOxiqE .mobile-header {margin-top:0 !important;} +birminghammail.co.uk,bristolpost.co.uk,dailyrecord.co.uk,hulldailymail.co.uk,liverpoolecho.co.uk,manchestereveningnews.co.uk,stokesentinel.co.uk##.sticky ~ header {top:0;} +dailystar.co.uk##[data-testid="commercial-above-header-box-1"] {remove:true;} +datanodes.to##.bg-white\/50.border.p-8 {visibility:hidden !important;} +distrowatch.com##.TablesTitle > div:not([style="padding"]) {width:100%;} +euronews.com###o-site-hr__leaderboard-wallpaper.u-show-for-xlarge {remove:true;} +hindustantimes.com##body {padding-top:0;} +iflscience.com###Billboard {height:0px;} +ilmeteo.it###banner-mnz-topleft {height:80px;} +metoffice.gov.uk##.header {top:0;} +metoffice.gov.uk##.map {top:52px;} +mindbodygreen.com##aside {background:transparent;} +mirror.co.uk##.sticky ~ header {top:0px;} +praxistipps.chip.de,praxistipps.focus.de,netmoms.de###G32 {grid-template-rows:unset;} +read.amazon.*###readerChromeOverlayBottom.readerChromeOverlayBottom-banner-desktop {bottom:0 !important;} +sneakernews.com##.site-header {top:0;} +taste.com.au##.main-header {top:0;} +tribuna.com##body {overflow:auto;} +twitch.tv##.video-player--stream-display-ad_lower-third {height:100% !important;} +velo.outsideonline.com##main {margin-top:10px;} +w3schools.com###tryitLeaderboard ~ #container {top:48px;} +w3schools.com##.trytopnav {top:0;} +wunderground.com##.content-wrap #inner-wrap {height:100vh;} +yourdictionary.com##.header {top:0;} + +! *** easylist:easylist_adult/adult_specific_hide.txt *** +amateur8.com###A8-Under-Video +virtuagirlgirls.com###DynamicBackgroundWrapper +porndr.com###PD-Under-player +deviants.com###_iframe_content +swfchan.com###aaaa +justthegays.tv###ad-banner +xnxx.com###ad-footer +njav.com###ad300250 +eporner.com###addesktop +javgg.net###adlink +eporner.com###admobileoutstream +ggjav.com###ads-in-video +tnaflix.com###ads-under-video_ +h-flash.com###ads_2 +wetpussygames.com###adult-games > div[style*="250px;"] +badassbitch.pics###adv +flyingjizz.com###adv_inplayer +xpaja.net###advertisement +milffox.com###advertising +pervclips.com###after-adv +cockdude.com###after-boxes-ver2 +str8ongay.com###alfa_promo_parent +sunporno.com###atop +literotica.com###b-top +thehentai.net###balaoAdDireito +massfans.cc,massrips.cc###banner +massfans.cc,massrips.cc###banner2 +massfans.cc,massrips.cc###banner4 +filtercams.com###bannerFC +cuntest.net###banners +fakings.com,nigged.com###banners_footer +pornfullfree.com,pornstargold.com###basePopping +lewdspot.com,mopoga.com###belowGameAdContainerPause +cockdude.com###beside-video-ver2 +sexyandfunny.com###best-friends +pussyspace.com###bhcr +bgwp.cc###blk1 +18adultgames.com###block-105 +18adultgames.com###block-121 +euroxxx.net###block-15 +18adultgames.com###block-20 +hentaiprn.com###block-27 +mitaku.net###block-28 +18adultgames.com###block-73 +18adultgames.com###block-75 +deepfucks.com###block-88 +deepfucks.com###block-92 +hentaiblue.net###blue-video-slider +xxxdan.com,xxxdan3.com###bottom-line +hentaiasmr.moe###bottom-tab +cockdude.com###box-txtovka-con +eporner.com###btasd +mobxvideos.com,pornogramxxx.com###bubble +gamesofdesire.com###chat +pornstar-scenes.com###chatCamAjaxV0 +heavy-r.com###closeable_widget +sexu.site###closeplay +anysex.com###content > .main > .content_right +imagebam.com###cs-link +hentaiasmr.moe###custom_html-14 +hentaiprn.com###custom_html-19 +asiaxbit.com,celebritymovieblog.com,interracial-girls.com###custom_html-2 +muchohentai.com###custom_html-24 +zhentube.com###custom_html-38 +dpfantasy.org,hotcelebshome.com###custom_html-4 +xxx-game.org###custom_html-5 +hentai7.top###custom_html-6 +javgg.co###custom_html-7 +pictoa.com###d-zone-1 +hentaiasmr.moe###delayed-ad +eporner.com###deskadmiddle +hentai-img.com###display_image_detail > span +thehun.net###dyk_right +escortbook.com###ebsponAxDS +jzzo.com,xxxvogue.net###embed-overlay +youjizz.com###englishPr +porntrex.com###exclusive-link +girlshot.net###extra-bottom +china-tube.site###extraWrapOverAd +namethatporn.com###fab_blacko +dailyporn.club###fixedban +stockingfetishvideo.com###flirtyBubble +212.32.226.234###floatcenter +freeuseporn.com###floating-iframe-container +anysex.com###fluid_theatre > .center +pussy.org###footZones +youjizz.com###footer +sunporno.com###footer_a +mopoga.com###fpGMcontainer +girlsofdesire.org###gal_669 +pics-x.com###gallery-header-schmmad +yourlust.com###headC +nangaspace.com###header +aan.xxx###header-banner +youtubelike.com###header-top +hentai0day.com###headeram +oppai.stream###home-url[placement] +javhd.today###ics +porngameshub.com###im-container +hentaiasmr.moe###inPlayerGGzone +mopoga.com###inTextAdContainerPause +aniporn.com###in_v +hotmovs.com###in_va +youngamateursporn.com###inplayer_block +hentaiprn.com###l_340 +pornlib.com###lcams2 +escortbook.com###links +redtube.com###live_models_row_wrap +maturetubehere.com###lotal +4tube.com###main-jessy-grid +anysex.com,jizzberry.com###main_video_fluid_html_on_pause +peekvids.com###mediaPlayerBanner +pornvalleymedia.net###media_image-81 +pornvalleymedia.net###media_image-82 +pornvalleymedia.net###media_image-83 +pornvalleymedia.net###media_image-84 +pornvalleymedia.net###media_image-86 +pornvalleymedia.net###media_image-87 +pornvalleymedia.net###media_image-88 +pornvalleymedia.net###media_image-90 +18adultgames.com###menu-mm [rel="nofollow external"] +vpornvideos.com###mn-container +gifsfor.com###mob_banner +fetishshrine.com###mobile-under-player +whentai.com###modalegames +eporner.com###movieplayer-box-adv +cockdude.com###native-boxes-2-ver2 +sleazyneasy.com###next-tv1 +sleazyneasy.com###next-tv2 +amateur8.com,maturetubehere.com###nopp +xrares.com###nuevoa +scrolller.com###object_container +youjizz.com###onPausePrOverlay +hentaimama.io,underhentai.net,watchhentai.net###overlay +porn300.com,porndroids.com###overlay-video +22pixx.xyz,imagevenue.com###overlayBg +hentaiff.com###overplay +video.laxd.com###owDmcIsUc +oppai.stream###pa-1 +oppai.stream###pa-2 +jzzo.com,xxxvogue.net###parrot +nudevista.at,nudevista.com###paysite +redtube.com,redtube.com.br,redtube.net###pb_block +pornhub.com,youporn.com###pb_template +ggjav.com,ggjav.tv###pc_instant +pornx.to###player-api-over +hentai2w.com,iporntoo.com,tsmodelstube.com,xhentai.tv###playerOverlay +ebony8.com,lesbian8.com,maturetubehere.com###player_add +bigwarp.cc###player_banner_overlay +redtube.com###popsByTrafficJunky +javtrailers.com###popunderLinkkkk +pornstargold.com###popup +jav321.com###popup-container +sextvx.com###porntube_hor_bottom_ads +javgg.*###post-999999 +missav.to###poster +katestube.com###pre-block +sleazyneasy.com###pre-spots +mopoga.com###preGamescontainer +missav.to,tojav.net###preroll +alotav.com,javbraze.com,javdoe.fun,javdoe.sh,javfindx.com,javhat.tv,javhd.*,javhdz.today,javseen.tv,javseenz.tv,javtape.site,xjav.online###previewBox +xvideos.name###publicidad-video +celebjihad.com###pud +deserttechairconditioning.com###r-ad-banner +h-flash.com###randomzone1 +cockdude.com###related-boxes-footer-ver2 +freebdsmxxx.org###right +lewdspot.com###rightSidebarAdContainerPause +youjizz.com###rightVideoPrs +badjojo.com###rightcol +onlyporn.tube,porntop.com###s-suggesters +homemade.xxx###scrollhere +sexyandfunny.com###sexy-links +spankbang.com###shorts-frame +javtiful.com###showerm +3movs.com###side_col_video_view +pornhub.com###singleFeedSection > .emptyBlockSpace +adult-sex-games.com###skyscraper +porngames.games###slide-ads +adultgamescollector.com,adultgamesworld.com,porngames.tv###slideApple +hentaifox.com###slider +pics-x.com###slider-container +javfor.tv###smac12403o0 +xbooru.com,xxxymovies.com###smb +hdtube.porn###sp-player +hd-easyporn.com###special_column +megatube.xxx###sponsor-widget +porn4fans.com###spot_player_start +hd21.com,winporn.com###spot_video_livecams +hd21.com,winporn.com###spot_video_underplayer_livecams +xnxxporn.video###spotholder +maxjizztube.com###spotxt +trannyvideosxxx.com###text-2 +yaoimangaonline.com###text-28 +hentaimama.io,javhard.net###text-3 +hentaimama.io###text-5 +fetish-games.com###text-6 +theboobsblog.com###text-74 +hentai-sharing.net###text-9 +theboobsblog.com###text-94 +f95zone.to###topNotice +desihoes.com###topRightBanner +sexmummy.com###topbar +hentaihere.com###topbar_promo_casino +ohentai.org###topdetailad +motherless.xxx###topsites +pussycatxx.com,zhentube.com###tracking-url +fullxxxtube.com###ubr +hd-easyporn.com###udwysI3c7p +usasexguide.nl###uiISGAdFooter +aniporn.com###und_ban +pervclips.com###under-video +wetpussygames.com###under728 +fakings.com###undervideo +giftornado.com###unique-banner +kisscos.net###v-overlay +homemoviestube.com###v_right +xvideos.com###video-right +xvideos.com###video-sponsor-links +drtuber.com###video_list_banner +dofap.com###video_overlay_banner +hentaiplay.net###video_overlays +redtube.com###video_right_col > .clearfix +gosexpod.com###xtw +porndroids.com##.CDjtesb7pU__video-units +bellesa.co##.Display__RatioOuter-hkc90m-0 +beeg.com##.GreyFox +redgifs.com##.InfoBar +topinsearch.com##.TelkiTeasersBlock +hentaivideo.tube##.UVPAnnotationJavascriptNormal +xtube.com##.ZBTBTTr93ez9.ktZk9knDKFfB +porndoe.com##.\-f-banners +xhamster.com##._029ef-containerBottomSpot +xhamster.com##._80e65-containerBottomSpot +xhamster.com##._80e65-containerPauseSpot +tubepornclassic.com##.___it0h1l3u2se2lo +pichunter.com##.__autofooterwidth +txxx.com##._ccw-wrapper +ukadultzone.com##.a--d-slot +sunporno.com##.a-block +pornsos.com##.a-box +7mmtv.sx,7tv045.com,7tv047.com##.a-d-block +porngem.com,uiporn.com##.a-d-v +bravoteens.com##.a352 +namethatporn.com##.a_br_b +upornia.com##.aa_label +namethatporn.com##.aaaabr +pimpandhost.com##.aaablock_yes +pimpandhost.com##.ablock_yes +pornx.to##.above-single-player +cambb.xxx,chaturbate.com,dlgal.com,playboy.com,rampant.tv,sex.com,signbucks.com,tallermaintenancar.com,thehentaiworld.com,thehun.net,tiktits.com,xcafe.com##.ad +coomer.st,kemono.cr,official.coomer.com.co,pics-x.com,urlgalleries.net,xfreehd.com##.ad-container +xnxx.com##.ad-footer +javur.com##.ad-h250 +trueamateurporn.org##.ad-row-x +gay.bingo##.ad-w +xtube.com##.adContainer +boyfriend.tv,boyfriendtv.com##.adblock +acg-hentai.com##.adbox +sex3.com##.add-box +playvids.com##.add_href_jsclick +todaygirls.co.uk##.addspace +4kporn.xxx,babesandstars.com,crazyporn.xxx,cumlouder.com,gosexy.mobi,hoes.tube,hog.tv,javcl.com,javseen.tv,love4porn.com,mobilepornmovies.com,mypornstarbook.net,pichunter.com##.ads +pornx.to##.ads-above-single-player +video.laxd.com##.ads-container +kawai-jav.com##.ads-here-right +cumlouder.com##.ads__block +porn87.com##.ads_desktop +tube8.com,tube8.es,tube8.fr##.adsbytrafficjunky +pornpics.com,pornpics.de##.adss-rel +androidadult.com##.adswait +crazyporn.xxx##.adswarning +anyporn.com,hentaitube.icu,pervertslut.com,theyarehuge.com,tiktits.com,webanddesigners.com##.adv +uiporn.com##.adv-in-video +sex3.com##.adv-leftside +roleplayers.co##.adv-wrap +gay.bingo##.adv-wrapper +freebdsmxxx.org##.adv315 +alohatube.com##.advbox +alohatube.com##.advboxemb +ftopx.com,gayboystube.com,gayporntube.com,hungangels.com,porngameshub.com##.advert +cumlouder.com,flyingjizz.com,gotporn.com,japan-whores.com,porntube.com##.advertisement +katestube.com,sleazyneasy.com,vikiporn.com,wankoz.com##.advertising +javcab.com##.advt-spot +porngals4.com##.afb0 +porngals4.com##.afb1 +porngals4.com##.afb2 +hentai2w.com##.aff-col +hentai2w.com##.aff-content-col +porngals4.com##.affl +cockdude.com##.after-boxes-ver2 +katestube.com,sleazyneasy.com,vikiporn.com##.after_adv +hentaidude.xxx##.ai_widget +hentai2read.com##.alert-danger +dvdgayonline.com##.aligncenter +lewdzone.com##.alnk +punishworld.com##.alrt-ver2 +freeadultcomix.com##.anuncios +hotmovs.com##.app-banners +fuqer.com##.area +sextb.net##.asg-overlay +hobby.porn##.asg-vast-overlay +pornid.name,pornid.xxx##.aside-box +str8ongay.com##.aside-itempage-col +sexvid.pro##.aside_thumbs +hd21.com##.aside_video +babepump.com,fapnfuck.com,fuqster.com,povxl.com,sexpester.com,w1mp.com,w4nkr.com,xmateur.com##.asside-link +xhamster.com##.auto-generated-banner-container +avn.com##.avn-article-tower +firstincest.com,hentaienglish.com,hentaiporno.xxx##.ays-pb-modals +mrskin.com##.az +fapeza.com##.azz_div +gaymaletube.name,gogaytube.tv,hdpornvideo.tv,madgaysex.com,xgaytube.tv##.b-advertisement +gayporno.fm##.b-content__aside-head +onlydudes.tv##.b-footer-place +boy18tube.com,gayfuckporn.tv,gaymaletube.name,gayporno.fm,gogaytube.tv,goldgay.tv,hdpornvideo.tv,ice-gay.com,icegay.tv,icegaytube.tv,icetranny.com,justustrannies.com,machogaytube.com,machotube.tv,onlydudes.tv,ourshemales.com,shemaleporntube.tv,trannytube.tv,xgaytube.tv##.b-main-nav__link[data-banner-id] +gayfuckporn.tv,goldgay.tv,justustrannies.com##.b-random-column +icetranny.com,machogaytube.com,machotube.tv,shemaleporntube.tv##.b-randoms-col +trannytube.tv##.b-secondary-column__banners +icegay.tv##.b-secondary-column__randoms +onlydudes.tv##.b-side-col +japan-whores.com##.b-sidebar +rat.xxx##.b-spot +me-gay.com,redporn.porn##.b-uvb-spot +buondua.com##.b1a05af5ade94f4004a7f9ca27d9eeffb +buondua.com##.b2b4677020d78f744449757a8d9e94f28 +pornburst.xxx##.b44nn3rss +buondua.com##.b489c672a2974fbd73005051bdd17551f +dofap.com##.b_videobot +justpicsplease.com##.ba +dominationworld.com,femdomzzz.com##.ban-tezf +pornburst.xxx##.bann3rss +18teensex.tv,3movs.xxx,adultdeepfakes.com,babesmachine.com,chaturbate.com,fboomporn.com,freepornpicss.com,gramateurs.com,happysex.ch,hdtube.porn,its.porn,kawaiihentai.com,milffox.com,oldies.name,paradisehill.cc,playporngames.com,playsexgames.xxx,playvids.com,porngames.com,private.com,submittedgf.com,teenextrem.com,video.laxd.com,vikiporn.com,vjav.com,watchhentaivideo.com,waybig.com,xbabe.com,xcum.com,xnudepics.com,youcanfaptothis.com,yourdailygirls.com,youx.xxx##.banner +highporn.net##.banner-a +javfor.tv##.banner-c +jav.guru##.banner-container +thefree3dporn.com##.banner-fixed +cumlouder.com##.banner-frame +grannymommy.com##.banner-on-player +freeones.com##.banner-placeholder +javynow.com##.banner-player +babesandstars.com##.banner-right +instasexyblog.com##.banner-spot +javfor.tv##.banner-top-b +jav.guru##.banner-widget +ok.xxx,pornhat.com##.banner-wrap-desk +empflix.com,tnaflix.com##.bannerBlock +watchhentaivideo.com##.bannerBottom +pornshare.biz##.banner_1 +pornshare.biz##.banner_2 +pornshare.biz##.banner_3 +4pig.com##.banner_page_right +yourlust.com##.banner_right_bottoms +camstreams.tv,eurogirlsescort.com,hdtube.porn,sexu.com##.banners +xxxvogue.net##.banners-container +koloporno.com,pornodoido.com,serviporno.com,voglioporno.com##.banners-footer +paradisehill.cc##.banners3 +paradisehill.cc##.banners4 +ratemymelons.com##.bannus +fapello.com##.barbie_desktop +fapello.com##.barbie_mobile +fap18.net,fuck55.net,tube.bz##.bb_desktop +mofosex.net##.bb_show_5 +hotcelebshome.com##.bcpsttl_name_listing +ok.xxx,pornhat.com##.before-player +hdtube.porn##.below-player-wrapper > noindex > a[target="_blank"] +porndoe.com##.below-video +cockdude.com##.beside-video-ver2 +wapbold.com,wapbold.net##.bhor-box +hqporner.com##.black_friday +babestare.com##.block +alphaporno.com,tubewolf.com##.block-banner +urgayporn.com##.block-banvert +xxbrits.com##.block-offer +animeporngif.com##.block-vda +3prn.com##.block-video-aside +simpcity.cr##.blockitsowereplaceit +escortnews.eu,topescort.com##.blogBanners +blogvporn.com##.blue-btns +xtube.com##.bm6LRcdKEZAE +ok.porn,pornhat.com##.bn +ok.xxx##.bn-title +xbabe.com##.bnnrs-aside +alphaporno.com,crocotube.com,hellporno.com,tubewolf.com,xbabe.com,xcum.com##.bnnrs-player +pornogratisdiario.com,xcafe.com##.bnr +porngames.games##.bnr-side +porngames.games##.bnr-top +ok.porn,ok.xxx,pornhat.com##.bns-bl +sexsbarrel.com##.bns-place-ob +xnxxvideoporn.com##.bot_bns +pornoreino.com##.bottom-bang +alphaporno.com,katestube.com,sleazyneasy.com,vikiporn.com##.bottom-banners +dailyporn.club##.bottom-blocks +sleazyneasy.com##.bottom-container +fetishshrine.com,sleazyneasy.com##.bottom-content +katestube.com##.bottom-items +pornwhite.com,teenpornvideo.xxx##.bottom-spots +youtubelike.com##.bottom-thumbs +youtubelike.com##.bottom-top +xhamster.com##.bottom-widget-section +rexxx.com##.bottom_banners +porn-plus.com##.bottom_player_a +dixyporn.com##.bottom_spot +sexvid.xxx##.bottom_spots +javlibrary.com##.bottombanner2 +hd-easyporn.com##.box +zbporn.com##.box-f +bravotube.net##.box-left +sexvid.xxx##.box_site +barscaffolding.co.uk,dcraddock.uk,pornstory.net##.boxzilla-container +barscaffolding.co.uk,dcraddock.uk,pornstory.net##.boxzilla-overlay +hentaianimedownloads.com##.bp_detail +bravotube.net##.brazzers +xozilla.com##.brazzers-link +kompoz2.com,pornvideos4k.com##.brs-block +teensforfree.net##.bst1 +blackpornstars.net##.btn-affiliate +aniporn.com##.btn-close +realgfporn.com##.btn-info +xcum.com##.btn-ponsor +weescorts.com##.bulletinwp-bulletins +cinemapee.com##.button +video.laxd.com##.c-ad-103 +ourshemales.com##.c-banner +pornpics.com##.c-model +24porn.com,bigfuck.tv,redporn.porn##.c-random +gays-cruising.com##.c_526x240 +gays-cruising.com##.c_728x265 +gays-cruising.com##.c_728x90 +gays-cruising.com##.c_900x250 +tiktits.com##.callback-bt +pornpics.vip,xxxporn.pics##.cam +xnxxvideos.rest##.camitems +winporn.com##.cams +theyarehuge.com##.cams-button +sleazyneasy.com##.cams-videos +tnapics.com##.cams_small +peekvids.com##.card-deck-promotion +clipsexsub3x.net##.catfish-bottom +sxyprn.com##.cbd +stepmom.one##.cblidovr +stepmom.one##.cblrghts +porntry.com##.center-spot +fakings.com##.centrado +thefappeningblog.com##.cl-exl +bigtitsgallery.net##.classifiedAd +teenanal.co##.clickable-overlay +xhamster.com##.clipstore-bottom +sunporno.com##.close-invid +fap-nation.com,fyptt.to,gamegill.com,isekaitube.com,japaneseasmr.com##.code-block +tube8.com,tube8.es,tube8.fr##.col-3-lg.col-4-md.col-4 +playvids.com##.col-lg-6.col-xl-4 +taxidrivermovie.com##.col-pfootban +whoreshub.com##.col-second +hentaiworld.tv##.comments-banners +pornwhite.com,sleazyneasy.com##.container-aside +completeporndatabase.com##.container-blog +fetishshrine.com##.container-side +nacktepromis.com##.conteiner > .rightside +senzuri.tube##.content > div > .hv-block-transparent +sheshaft.com,sleazyneasy.com,wankoz.com##.content-aside +watchmygf.me##.content-footer +xxxdessert.com##.content-gallery_banner +sexyandfunny.com##.content-source +iwara.tv##.contentBlock__content +sexu.site##.content__top +xcafe.com##.content_source +forced-tube.net,hqasianporn.org##.coverup +shemale777.com##.covid19 +4tube.com##.cpp +bootyheroes.com##.cross-promo-bnr +3movs.com,fapality.com##.cs +mylust.com##.cs-bnr +rat.xxx,zbporn.tv##.cs-holder +zbporn.com##.cs-link-holder +hdtube.porn,rat.xxx##.cs-under-player +pornid.name,pornid.xxx##.cs-under-player-link +watchmygf.me##.cs_text_link +crocotube.com##.ct-video-ntvs +worldsex.com##.currently-blokje-block-inner +alloldpics.com,sexygirlspics.com##.custom-spot +blackpornstars.net##.d-flex.justify-content-center.h-250 +porngameshub.com##.daemonclicks +worldsex.com##.dazone +faptor.com##.dblock +anysex.com##.desc.type2 +hdtube.porn##.description__channel > .description__subscribe > a[target="_blank"] +rule34.xxx##.desktop +theyarehuge.com##.desktop-spot +inxxx.com,theyarehuge.com##.desktopspot +cartoonpornvideos.com##.detail-side-banner +hentaicity.com##.detail-side-bnr +xxxporn.pics##.download +sexvid.porn,sexvid.pro,sexvid.xxx##.download_link +drtuber.com,nuvid.com##.drt-sponsor-block +drtuber.com,iceporn.com,nuvid.com,proporn.com,viptube.com,winporn.com##.drt-spot-box +pornsex.rocks##.dump +tube8.com,tube8.es,tube8.fr##.e8-column +pornx.to##.elementor-element-e8dcf4f +porngifs2u.com##.elementor-widget-posts + .elementor-widget-heading +vxxx.com##.emrihiilcrehehmmll +tsumino.com##.erogames_container +pornstargold.com##.et_bloom_popup +upornia.com,upornia.tube##.eveeecsvsecwvscceee +fapachi.com##.exc-pp +eromanga-show.com,hentai-one.com,hentaipaw.com##.external +lewdzone.com##.f8rpo +escortnews.eu,topescort.com##.fBanners +bdsmx.tube,desi-porn.tube,hclips.com,hdzog.com,hdzog.tube,hotmovs.com,inporn.com,upornia.com,upornia.tube,vjav.com,vjav.tube,vxxx.com##.fah-btn +porngem.com##.featured-b +freeuseporn.com##.featured-links-bar +sss.xxx##.fel-item +javfor.tv##.fel-playclose +boyfriend.tv,boyfriendtv.com,camwhores.*,txxx.com##.fh-line +hotmovs.com,thegay.com##.fiioed +homemoviestube.com##.film-item:not(#showpop) +sexyandfunny.com##.firstblock +ah-me.com,gaygo.tv,tranny.one##.flirt-block +asiangay.tv,asiangaysex.net,gaysex.tv,gayxx.net,japangaysex.com,jav.com.co##.float-ck +hentaiworld.tv,sulasok.uno##.floating-banner +xgroovy.com##.fluid-b +yourlust.com##.fluid_html_on_pause +some.porn##.fluid_html_on_pause_container +xgroovy.com##.fluid_next_video_left +xgroovy.com##.fluid_next_video_right +stileproject.com##.fluid_nonLinear_bottom +natomanga.com##.fly-ads-chapter-page +cbhours.com##.foo2er-section +porn.com##.foot-zn +pornburst.xxx##.foot33r-iframe +hclips.com,thegay.com,tporn.xxx,tubepornclassic.com##.footer-banners +hentaiworld.tv##.footer-banners-iframe +xcafe.com##.footer-block +youporn.com##.footer-element-container +pornburst.xxx##.footer-iframe +4tube.com##.footer-la-jesi +4kporn.xxx,alotporn.com,amateurporn.co,camstreams.tv,crazyporn.xxx,danude.com,fpo.xxx,hentai0day.com,hoes.tube,scatxxxporn.com,xasiat.com##.footer-margin +cbhours.com##.footer-section +pornhd.com##.footer-zone +homo.xxx##.footer.spot +gelbooru.com##.footerAd +hdtube.porn##.footer__banners +badjojo.com##.footera +mansurfer.com##.footerbanner +videocelebs.net##.fp-brand +xpics.me##.frequently +onlyporn.tube##.ft +jizzbunker.com,jizzbunker2.com##.ftrzx1 +teenpornvideo.fun##.full-ave +kompoz2.com,pornvideos4k.com,roleplayers.co##.full-bns-block +iceporn.com##.furtherance +xpics.me##.future +hdtube.porn##.g-col-banners +teenextrem.com##.g-link +youx.xxx##.gallery-link +xxxonxxx.com,youtubelike.com##.gallery-thumbs +porngamesverse.com##.game-aaa +tubator.com##.ggg_container +tallermaintenancar.com##.girl +pornflix.cc,pornstarwarshentai.com,xnxx.army##.global-army +leakgallery.com##.golove-header +bravoteens.com,bravotube.net##.good_list_wrap +homejav.com,kbjfree.com,onscreens.me,xmorex.com,xsz-av.com##.h-\[250px\] +amateur-vids.eu,bestjavporn.com,deepfucks.com,mature.community,milf.community,milf.plus##.happy-footer +ofansleaks.com##.happy-footer-mobile +hdporn92.com,javflix.net,ofansleaks.com##.happy-header +criollasx.com,milfnut.com,nudeof.com,sexseeimage.com,yporn.tv##.happy-inside-player +sexseeimage.com,thisav.me,thisav.video##.happy-player-beside +sexseeimage.com,thisav.me,thisav.video##.happy-player-under +ofansleaks.com##.happy-related-videos-mobile +sexseeimage.com,thisav.me,thisav.video##.happy-section +deepfake-porn.com,deepfucks.com,faply.cc,hdpornflix.com,hentaisexclub.com,sexkbj.com,vpornhd.com,x-picture.com##.happy-sidebar +amateur-vids.eu,camgirl-video.com,mature.community,milf.community,milf.plus##.happy-under-player +hentaiasmr.moe##.happy-under-player-mobile +redtube.com##.hd +zbporn.com##.head-spot +anysex.com##.headA +xgroovy.com##.headP +myhentaigallery.com##.header-image +megatube.xxx##.header-panel-1 +cutegurlz.com##.header-widget +hotmovs.com,hotmovs.tube##.header__controls--link +videosection.com##.header__nav-item--adv-link +mansurfer.com##.headerbanner +androidadult.com##.headerlinks +hentaisexclub.com##.henta-300x250 +yaoimangaonline.com##.herald-sidebar-right > .widget_block +txxx.com##.herrmhlmolu +hentaiforce.net##.hf-btn-special +txxx.com##.hgggchjcxja +freeuseporn.com##.hhzt +porn300.com,porndroids.com##.hidden-under-920 +worldsex.com##.hide-on-mobile +hqporner.com##.hide_ad_marker +javgg.co,javgg.net##.home_iframead > a[target="_blank"] > img +underhentai.net##.hp-float-skb +eporner.com##.hptab +pantiespics.net##.hth +videosection.com##.iframe-adv +gayforfans.com##.iframe-container +recordbate.com##.image-box +gotporn.com##.image-group-vertical +thisav.me##.img-ads +top16.net##.img_wrap +trannygem.com##.in_player_video +vivud.com##.in_stream_banner +sexu.site##.info +amateur8.com##.inp__wrapper +vivud.com##.inplayer_banners +anyporn.com,bravoporn.com,bravoteens.com,bravotube.net##.inplb +anyporn.com,bravotube.net##.inplb3x2 +cockdude.com##.inside-list-boxes-ver2 +videosection.com##.invideo-native-adv +peekvids.com,playvids.com,pornflip.com##.invideoBlock +amateur8.com##.is-av +internationalsexguide.nl,usasexguide.nl##.isg_background_border_banner +internationalsexguide.nl,usasexguide.nl##.isg_banner +e-hentai.org##.itd[colspan="4"] +xgroovy.com##.item-bnr +fetishshrine.com##.item-holder +myhentaicomics.com##.item.image-block +amateurporn.me,eachporn.com##.item[style] +drtuber.com##.item_spots +nurumayu.net,twidouga.net##.item_w360 +pornwhite.com,sleazyneasy.com##.items-holder +vxxx.com##.itrrciecmeh +escortdirectory.com##.ixs-govazd-item +socialmediagirls.com##.jamCodeUnitsevenjunetwofour +socialmediagirls.com##.jamLinkUnitsevenjunetwofour +alastonsuomi.com##.jb +babesandstars.com,pornhubpremium.com##.join +javvr.net##.jplayerbutton +japan-whores.com##.js-advConsole +spankbang.com##.js-inline-ad +sexlikereal.com##.js-m-goto +pornpapa.com##.js-mob-popup +eurogirlsescort.com##.js-stt-click > picture +freeones.com##.js-track-event +24porn.com,boy18tube.com,gayfuckporn.tv,gaymaletube.name,gayporno.fm,gogaytube.tv,goldgay.tv,hdpornvideo.tv,ice-gay.com,icegay.tv,icegaytube.tv,icetranny.com,justustrannies.com,machogaytube.com,machotube.tv,madgaysex.com,onlydudes.tv,ourshemales.com,shemaleporntube.tv,trannytube.tv,ts-tube.net,xgaytube.tv##.js-uvb-spot +porndig.com##.js_footer_partner_container_wrapper +pornhub.com,pornhub.org##.js_promoItem +hnntube.com##.jumbotron +vjav.*##.jw-buble.nopop +senzuri.*,shemalez.*,vjav.*##.jw-hardlink-inner +hotmovs.com,hotmovs.tube##.jw-reset > .nopop +senzuri.tube##.jw-reset.jw-atitle +xxxymovies.com##.kt_imgrc +4tube.com##.la-jessy-frame +eroprn.com##.landscape +lewdzone.com##.lcadsp +hqpornstream.com##.lds-hourglass +thehun.net##.leaderboard +abjav.com,aniporn.com##.left > section +xxxpicss.com,xxxpicz.com##.left-banners +babepedia.com##.left_side > .sidebar_block > a +missav.*,missav123.com,missav888.com##.lg\:block +missav.*,missav123.com,missav888.com##.lg\:hidden +videosdemadurasx.com##.link +xxxvogue.net##.link-adv +escortnews.eu,topescort.com##.link-buttons-container +85po.com,babepump.com,fapnfuck.com,fuqster.com,povxl.com,sexpester.com,w1mp.com,w4nkr.com,xmateur.com##.link-offer +boyfriend.tv,boyfriendtv.com##.live-cam-popunder +spankbang.com##.live-rotate +alloldpics.com,sexygirlspics.com##.live-spot +spankbang.com##.livecam-rotate +proporn.com,vivatube.com##.livecams +loverslab.com##.ll_adblock +vxxx.com##.lmetceehehmmll +gays-cruising.com##.m-row.h_100 +gays-cruising.com##.m-row.h_250 +gays-cruising.com##.m-row.h_335 +bigfuck.tv##.main-nav__link[data-banner-id] +hdsex.org##.main-navigation__link--webcams +hentaipaw.com##.max-w-\[720px\] +peekvids.com##.mediaPlayerSponsored +efukt.com##.media_below_container +lesbianbliss.com,mywebcamsluts.com,transhero.com##.media_spot +porn00.tv##.member1link +porn00.tv##.member2link +visitmama.com##.menu-item > a:not([href^="https://www.visitmama.com/"]) +camcam.cc##.menu-item-5880 +thehentai.net##.menu_tags +empflix.com,tnaflix.com##.mewBlock +avn.com##.mfc +online-xxxmovies.com##.middle-spots +allpornstream.com##.min-h-\[237px\] +lic.me##.miniplayer +tryindianporn.com##.mle +rat.xxx##.mob-nat-spot +gaymovievids.com,verygayboys.com##.mobile-random +javgg.co,javgg.net##.module > div[style="text-align: center;"] +txxx.com##.mpululuoopp +tikpornk.com##.mr-1 +xnxxvideos.rest##.mult +javfor.tv,javhub.net##.my-2.container +4kporn.xxx,crazyporn.xxx##.myadswarning +yourlust.com##.native-aside +pornhd.com##.native-banner-wrapper +cockdude.com##.native-boxes-2-ver2 +cockdude.com##.native-boxes-ver2 +pornwhite.com,sheshaft.com,sleazyneasy.com##.native-holder +ggjav.com##.native_ads +anysex.com##.native_middle +fapality.com##.nativeaside +jable.tv##.nav-item > a[target="_blank"] +fapeza.com##.navbar-item-sky +new.lewd.ninja##.navbar-start a[target="_blank"] +androidadult.com##.navitem.color-3 +analegg.com##.network +miohentai.com##.new-ntv +escortnews.eu,topescort.com##.newbottom-fbanners +xmissy.nl##.noclick-small-bnr +hdzog.com,hdzog.tube##.nopop +pornhd.com##.ntv-code-container +negozioxporn.com##.ntv1 +fapality.com##.ntw-a +xv-ru.com,xvideos.*##.nutaku-gamesAdd commentMore actions +rule34.xxx##.nutaku-mobile +boundhub.com##.o3pt +bdsmx.tube##.oImef0 +f95zone.to##.offCanvasMenu-linkHolder > .offCanvasMenu-link[target="_blank"] +xerotica.com##.ofx-ads-slot +porngames.tv##.one-top-link +pornxbox.com##.opt +sexseeimage.com##.order-1 +hentaistream.com##.othercontent +trueamateurporn.org##.out-wrap +eboblack.com,teenxy.com##.out_lnk +myhentaicomics.com##.outstrea +beemtube.com##.overspot +mangakakalot.gg##.owl-item:has(a[href^="https://bit.ly/"]) +javtiful.com##.p-0[style="margin-top: 0.45rem !important"] +zbporn.com##.p-ig +f95zone.to##.p-nav-list .p-navEl-link[target="_blank"] +hot.co.uk,hot.com##.p-search__action-results.badge-absolute.text-div-wrap.top +empflix.com##.pInterstitialx +hobby.porn##.pad +dessi.co##.pages__BannerWrapper-sc-1yt8jfz-0 +tube8.com,tube8.es,tube8.fr##.paidTab +xxxdan3.com##.partner-site +hclips.com,hotmovs.tube##.partners-wrap +xfantazy.com##.partwidg1 +fapnado.xxx##.pause-ad-pullup +empflix.com##.pause-overlay +porn87.com##.pc_instant +ebony8.com,maturetubehere.com##.pignr +bigtitslust.com,sortporn.com##.pignr.item +boundhub.com##.pla4ce +camvideos.tv,jizzoncam.com##.place +4wank.com##.plads +3movs.com##.player + .aside +alotporn.com##.player + center +xhamster.com##.player-add-overlay +katestube.com##.player-aside +vivud.com##.player-aside-banners +sexu.site##.player-block__line +ok.xxx,pornhat.com,xxxonxxx.com##.player-bn +sexvid.xxx##.player-cs +videosection.com##.player-detail__banners +7mmtv.sx##.player-overlay +sexu.site##.player-related +tallermaintenancar.com##.player-right +gay.bingo##.player-section__ad-b +3movs.com##.player-side +sexvid.porn,sexvid.pro,sexvid.xxx##.player-sponsor +hdtube.porn##.player-top-line +xvideos.com,xvideos.es##.player-video.xv-cams-block +porn18videos.com##.playerRight +gay.bingo##.player__inline +sexu.com##.player__side +pervclips.com##.player_adv +xnxxvideoporn.com##.player_bn +txxx.com##.polumlluluoopp +porntrex.com##.pop-fade +fapnado.com,young-sexy.com##.popup +pornicom.com##.pre-ad +porntube.com##.pre-footer +sleazyneasy.com##.pre-spots +xnxxvideos.rest##.prefixat-player-promo-col +recordbate.com##.preload +japan-whores.com##.premium-thumb +cam4.com##.presentation +simpcity.cr##.prm-wrapper +xnostars.com##.promo +xhamster.com##.promo-message +viptube.com##.promotion +nakedtube.com,pornmaki.com##.promotionbox +telegram-porn.com##.proxy-adv__container +porngameshub.com##.prwrp +tnaflix.com##.pspBanner +javneon.tv##.pt-45 > .pb-3.pb-e-lg-40.text-center +watchmygf.me##.publicity +freemovies.tv##.publis-bottom +pornpics.com##.r2-frame +tokyonightstyle.com##.random-banner +ice-gay.com##.random-block +boy18tube.com,gaymovievids.com,me-gay.com,ts-tube.net,verygayboys.com##.random-td +tnaflix.com##.rbsd +pornhub.com,pornhub.org##.realsex +vxxx.com##.recltiecrrllt +xnxxvideos.rest##.refr +svscomics.com##.regi +nuvid.com##.rel_right +cockdude.com##.related-boxes-footer-ver2 +bestjavporn.com,javdock.com,javhdporn.net##.related-native-banner +cumlouder.com##.related-sites +sexhd.pics##.relativebottom +pervclips.com,vikiporn.com##.remove-spots +cam4.com##.removeAds +cumlouder.com##.resumecard +porndroids.com##.resumecard__banner +abjav.com,aniporn.com,bdsmx.tube,hotmovs.com,javdoe.fun,javdoe.sh,javtape.site,onlyporn.tube,pornstarwarshentai.com,porntop.com,xnxx.army##.right +infospiral.com##.right-content +pornoreino.com##.right-side +definebabe.com##.right-sidebar +jable.tv##.right-sidebar > .mb-e-30 +empflix.com##.rightBarBannersx +porn.com,pussy.org##.rmedia +jav321.com##.row > .col-md-12 > h2 +jav321.com##.row > .col-md-12 > ul +erofus.com##.row-content > .col-lg-2[style^="height"] +lewdspot.com##.row.auto-clear.text-center +jizzbunker.com,jizzbunker2.com,xxxdan.com,xxxdan3.com##.rzx1 +forums.socialmediagirls.com,titsintops.com##.samCodeUnit +porngals4.com##.sb250 +pornflix.cc##.sbar +7mmtv.sx,7tv045.com,7tv047.com##.set_height_250 +sextb.date##.sextb_300 +gay-streaming.com,gayvideo.me##.sgpb-popup-dialog-main-div-wrapper +gay-streaming.com,gayvideo.me##.sgpb-popup-overlay +paradisehill.cc##.shapka +thehentai.net##.showAd +sankakucomplex.com##.side300xmlc +pornhub.com##.sideAds +video.laxd.com##.side_banner +familyporn.tv,mywebcamsluts.com,transhero.com##.side_spot +queermenow.net##.sidebar > #text-2 +criollasx.com##.sidebar-ads +flyingjizz.com##.sidebar-banner +javedit.com##.sidebar_widget +waybig.com##.sidebar_zing +taxidrivermovie.com##.sidebarban1 +myslavegirl.org##.signature +milffox.com##.signup +gayck.com##.simple-adv-spot +supjav.com##.simpleToast +hersexdebut.com##.single-bnr +babestare.com##.single-zone +rokuhentai.com##.site-top-ad-slot +sexvid.xxx##.site_holder +porn-monkey.com##.size-300x250 +porngames.tv,simply-hentai.com##.skyscraper +erotichdworld.com##.slideContent +pornhub.com,pornhub.org##.sniperModeEngaged +thelittleslush.com##.snppopup +boycall.com##.source_info +amateurfapper.com,iceporn.tv,pornmonde.com##.sources +hd-easyporn.com##.spc_height_80 +gotporn.com##.spnsrd +hotgirlclub.com##.spnsrd-block-aside-250 +18porn.sex,amateur8.com,anyporn.com,area51.porn,bigtitslust.com,eachporn.com,fapster.xxx,fpo.xxx,freeporn8.com,hentai-moon.com,hentai0day.com,its.porn,izlesimdiporno.com,mmshub.online,pervertslut.com,porngem.com,pornmeka.com,porntop.com,sexvid.xxx,sortporn.com,tktube.com,uiporn.com,xhamster.com##.sponsor +teenpornvideo.fun##.sponsor-link-desk +teenpornvideo.fun,youteenporn.net##.sponsor-link-mob +pornpics.com,pornpics.de##.sponsor-type-4 +4kporn.xxx,crazyporn.xxx,hoes.tube,love4porn.com##.sponsorbig +fux.com,pornerbros.com,porntube.com,tubedupe.com##.sponsored +slixa.com##.sponsored-filtered +hoes.tube##.sponsorsmall +3movs.com,3movs.xxx,babepump.com,bravotube.net,camvideos.tv,cluset.com,deviants.com,dixyporn.com,fapnfuck.com,fuqster.com,hello.porn,homo.xxx,javcab.com,katestube.com,pornicom.com,sexpester.com,sleazyneasy.com,thefree3dporn.com,videocelebs.net,vikiporn.com,vjav.com,w1mp.com,w4nkr.com##.spot +pornicom.com##.spot-after +hqpornstream.com##.spot-block +bleachmyeyes.com,kojka.com##.spot-box +3movs.com##.spot-header +katestube.com##.spot-holder +tsmodelstube.com##.spot-regular +fuqer.com##.spot-thumbs > .right +porn4fans.com##.spot-wrap +homo.xxx##.spot.column +drtuber.com##.spot_button_m +3movs.com,japan-whores.com##.spot_large +pornmeka.com##.spot_wrapper +drtuber.com,thisvid.com,vivatube.com,xxbrits.com##.spots +pornid.name,pornid.xxx##.spots-bottom +rat.xxx##.spots-title +sexvid.xxx##.spots_field +sexvid.xxx##.spots_thumbs +pornstarchive.com##.squarebanner +pornpics.com,pornpics.de##.stamp-bn-1 +lewdninja.com##.stargate +criollasx.com##.sticky +cumlouder.com##.sticky-banner +xxx18.uno##.sticky-elem +xxxbule.com##.style75 +teenmushi.org##.su-box +definebabe.com##.subheader +pornsex.rocks##.subsequent +tporn.xxx##.sug-bnrs +hclips.com##.suggestions +pornmd.com##.suggestions-box +txxx.com##.sugggestion +telegram-porn.com##.summary-adv-telNews-link +simply-hentai.com##.superbanner +tnapics.com##.sy_top_wide +boundhub.com##.t2op +boundhub.com##.tab7le +18porn.sex,18teensex.tv,429men.com,4kporn.xxx,4wank.com,alotporn.com,amateur8.com,amateurporn.co,amateurporn.me,bigtitslust.com,camwhores.tv,danude.com,daporn.com,epicgfs.com,fapnow.xxx,fpo.xxx,freeporn8.com,fuqer.com,gayck.com,hentai-moon.com,hentai0day.com,heroero.com,hoes.tube,intporn.com,japaneseporn.xxx,javwind.com,jizzberry.com,mmshub.online,multi.xxx,onlyhentaistuff.com,porndr.com,sexjav.tv,sextubespot.com,sortporn.com,tabootube.xxx,trueamateurporn.org,vilevideos.com,watchmygf.xxx,watchporn.to,xcavy.com,xgroovy.com,xmateur.com,xxxshake.com##.table +sxyprn.com##.tbd +amateurvoyeurforum.com##.tborder[width="99%"][cellpadding="6"] +camwhores.tv##.tdn +pronpic.org##.teaser +onlytik.com##.temporary-real-extra-block +avn.com##.text-center.mb-10 +javfor.tv##.text-md-center +cockdude.com##.textovka +wichspornos.com##.tf-sp +tranny.one##.th-ba +hentaiblue.net##.theiaStickySidebar +porn87.com##.three_ads +chikiporn.com,pornq.com##.thumb--adv +xnxx.com,xvideos.com##.thumb-ad +pornpictureshq.com##.thumb__iframe +yeswegays.com##.thumb_spots +tallermaintenancar.com##.thumbs +drtuber.com##.title-sponsored +4wank.com,daporn.com,epicgfs.com,fpo.xxx,hentai-moon.com,scatxxxporn.com,xmateur.com##.top +sexvid.xxx##.top-cube +porn4fans.com##.top-links-wrap +vikiporn.com##.top-list > .content-aside +japan-whores.com##.top-r-all +lewdspot.com##.top-sidebar +porngem.com,uiporn.com##.top-sponsor +rat.xxx,zbporn.tv##.top-spot +escortnews.eu,topescort.com##.topBanners +ok.xxx,perfectgirls.xxx##.top_spot +camwhores.tv##.topad +m.mylust.com##.topb-100 +m.mylust.com##.topb-250 +itsatechworld.com##.topd +babesmachine.com##.topline +babesmachine.com##.tradepic +babesandstars.com##.traders +gayporno.fm##.traffic +proporn.com##.trailerspots +adultgamesworld.com##.tt +eroprn.com##.tubecor +sexjav.tv##.twocolumns > aside +sexhd.pics##.tx +boysfood.com##.txt-a-onpage +bdsmx.tube,desi-porn.tube,hclips.com,hdzog.com,hdzog.tube,hotmovs.com,inporn.com,vxxx.com##.under-channel +wierdjapan.com##.under-player-banner +hdtube.porn##.under-player-link +criollasx.com##.under-video-block +sexvid.xxx##.under_player_link +upornia.com,upornia.tube##.underplayer > section +hdzog.com,hdzog.tube,senzuri.tube##.underplayer-review +thegay.com##.underplayer__info > div:not([class]) +videojav.com##.underplayer_banner +vjav.com,vjav.tube##.undp +redtube.com,tube8.com,you-porn.com,youporn.com##.upgradeButtonContainer +tryindianporn.com##.uvk +hmanga.world##.v-alert--variant-outlined +hentaiprn.com##.v-overlay +javtiful.com##.v3sb-box +see.xxx##.vda-item +indianpornvideos.com##.vdo-unit +xnxxporn.video##.vertbars +porngames.games##.vertical-trending-ads +xvideos.com##.video-ad +pornone.com##.video-add +criollasx.com##.video-archive-ad +eroprn.com##.video-aside +sexseeimage.com##.video-block-happy +x-hd.video##.video-brs +video.javdock.com##.video-container +pornhoarder.tv##.video-detail-bspace +boyfriend.tv,boyfriendtv.com##.video-extra-wrapper +megatube.xxx##.video-filter-1 +theyarehuge.com##.video-holder > .box +porn00.org##.video-holder > .headline +bdsmx.tube##.video-info > section +videosection.com##.video-item--a +videosection.com##.video-item--adv +pornzog.com##.video-ntv +ooxxx.com##.video-ntv-wrapper +recordbate.com##.video-overlay +hotmovs.tube##.video-page > .block_label > div +thegay.com##.video-page__content > .left + div +thegay.com,upornia.com,upornia.tube##.video-page__content > .right +upornia.com,upornia.tube##.video-page__related + h5 +senzuri.tube##.video-page__watchfull-special +pornhd.com##.video-player-overlay +peachurbate.com##.video-right-banner +upornia.tube##.video-right-top +porntry.com,videojav.com##.video-side__spots +thegay.com##.video-slider-container +kisscos.net##.video-sponsor +senzuri.tube##.video-tube-friends +xhamster.com##.video-view-ads +china-tube.site##.videoAd +thegay.com##.videoplayer-container .nopop +javynow.com##.videos-ad__ad +porntop.com##.videos-slider--promo +porndoe.com##.videos-tsq +zbporn.tv##.view-aside +zbporn.com,zbporn.tv##.view-aside-block +yourlust.com##.visit_cs +eporner.com##.vjs-inplayer-container +upornia.tube##.voiscscttnn +japan-whores.com##.vp-info +porndoe.com##.vpb-holder +porndoe.com##.vpr-section +gays-cruising.com##.w-100.h_250 +yiffer.xyz##.w-\[160px\].overflow-hidden[style="min-height:226px"] +kbjfree.com,onscreens.me##.w-\[728px\] +reddxxx.com##.w-screen.backdrop-blur-md +3prn.com##.w-spots +123av.com##.w300 +pornone.com##.warp +thefappeningblog.com##.wbar +upornia.com,upornia.tube##.wcccswvsyvk +trannygem.com##.we_are_sorry +porntube.com##.webcam-shelve +spankingtube.com##.well3 +myreadingmanga.info##.widget-area[class^="after_"] +bustyporn.com##.widget-friends +interviews.adultdvdtalk.com##.widget_adt_performer_buy_links_widget +hentaiprn.com,whipp3d.com##.widget_block +freeadultcomix.com,hotcelebshome.com,jav.guru,javcrave.com,pussycatxx.com##.widget_custom_html +gifsauce.com##.widget_live +ryuugames.com##.widget_media_image a:not([href^="https://www.ryuugames.com/"]) +hentaiblue.com,pornifyme.com##.widget_text +completeporndatabase.com##.widget_xyz_insert_html_widget +xhamster.com##.wio-p +xhamster.com##.wio-pcam-thumb +xhamster.com##.wio-psp-b +xhamster.com,xhamster2.com##.wio-xbanner +xhamster2.com##.wio-xspa +xhamster.com##.wixx-ebanner +xhamster.com##.wixx-ecam-thumb +xhamster.com##.wixx-ecams-widget +playporn.xxx,videosdemadurasx.com##.wrap-spot +pornrabbit.com##.wrap-spots +xjav.tube##.wrapper > article +abjav.com,aniporn.com,bdsmx.tube,upornia.tube##.wrapper > section +porn300.com##.wrapper__related-sites +upornia.com,upornia.tube##.wssvkvkyyee +xhamster.com##.xplayer-b +megaxh.com##.xplayer-banner-bottom +xhamster.com##.xplayer-hover-menu +theyarehuge.com##.yellow +xhamster.com##.yfd-fdcam-thumb +xhamster.com##.yfd-fdcams-widget +xhamster.com##.yfd-fdclipstore-bottom +xhamster.com##.yfd-fdsp-b +xhamster.com##.yld-mdcam-thumb +xhamster.com##.yld-mdsp-b +xhamster.com##.yld-pcxplayer-hover-menu +xhamster.com##.ytd-jcam-thumb +xhamster.com##.ytd-jcams-widget +xhamster.com##.ytd-jsp-a +xhamster.com##.yxd-jcam-thumb +xhamster.com##.yxd-jcams-widget +xhamster.com##.yxd-jdbanner +xhamster.com##.yxd-jdcam-thumb +xhamster.com##.yxd-jdcams-widget +xhamster.com##.yxd-jdplayer +xhamster.com##.yxd-jdsp-b +xhamster.com##.yxd-jdsp-l-tab +xhamster.com##.yxd-jsp-a +justthegays.tv##.zd-slot +faponic.com##.zkido_div +pussy.org##.zone +pornhd.com##.zone-area +hentai2read.com##.zonePlaceholder +fapnado.com,fapnado.xxx##.zpot-horizontal +faptor.com##.zpot-horizontal-img +fapnado.com,fapnado.xxx##.zpot-vertical +jizzbunker2.com,xxxdan.com,xxxdan3.com##.zx1p +tnaflix.com##.zzMeBploz +cheemsporno.com##[class^="Banner_"] +cheemsporno.com##[class^="PostCard_post-card__adContainer_"] +rabbitsreviews.com##[class^="_hero-banner-promo_"] +rabbitsreviews.com##[class^="_notificationConsent_"] +porn300.com##[class^="abcnn_"] +beeg.porn##[class^="bb_show_"] +hentaianimezone.com##[class^="dle_b_ban"] +hotleaks.tv,javrank.com##[class^="koukoku"] +whoreshub.com##[class^="pop-"] +cumlouder.com##[class^="sm"] +myreadingmanga.info##[class^="top_p"] +xhamster.com,xhamster.one,xhamster2.com##[class^="xplayer-banner"] +fapnado.com##[class^="xpot"] +porn.com##[data-adch] +hentairead.com##[data-jads-slot] +xhspot.com##[data-role="sponsor-banner"] +tube8.com##[data-spot-id] +tube8.com##[data-spot] +sxyprn.com##[href*="/re/"] +pornhub.com,redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com##[href*="base64"] +pornhub.com,redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com##[href*="data:"] +nhentai.website##[href="//daftsex.eu"] +doseofporn.com,jennylist.xyz##[href="/goto/desire"] +porn00.tv##[href="http://porn00.org/solcasinoio-bonus/"] +nhentai.website##[href="https://animemafia.to"] +asianpornjav.com##[href="https://asianpornwebsites.com/"] +viojav.com##[href="https://idmax.one/77playads"] +hardcoreluv.com,imageweb.ws,pezporn.com,wildpictures.net##[href="https://nudegirlsoncam.com/"] +perverttube.com##[href="https://usasexcams.com/"] +brazz-girls.com##[href^="/Site/Brazzers/"] +sexyico.com##[href^="/go4/"] +footztube.com##[href^="/tp/out"] +sexyico.com##[href^="/xo1/"] +boobieblog.com##[href^="http://join.playboyplus.com/track/"] +otomi-games.com,ryuugames.com##[href^="https://aichattings.com/"] +androidadult.com,homemoviestube.com##[href^="https://aoflix.com/Home"] +hentai2read.com##[href^="https://camonster.com"] +akiba-online.com##[href^="https://filejoker.net/invite"] +sweethentai.com##[href^="https://gadlt.nl/"] +lewdgames.to,otomi-games.com,ryuugames.com##[href^="https://golove.ai/"] +usasexguide.nl##[href^="https://instable-easher.com/"] +jav.gallery##[href^="https://jjgirls.com/sex/"] +adultcomixxx.com##[href^="https://join.hentaisex3d.com/"] +ryuugames.com,yaoimangaonline.com##[href^="https://l.erodatalabs.com/s/"] > img +javgg.net##[href^="https://onlyfans.com/action/trial/"] +javhub.net##[href^="https://r.trwl1.com/"] +sankakucomplex.com##[href^="https://s.zlink3.com/d.php"] +porn00.tv##[href^="https://solcasino.io/r/"] +javhub.net##[href^="https://t.javhd-trk.com/"] +freebdsmxxx.org##[href^="https://t.me/joinchat/"] +otomi-games.com##[href^="https://t.trcktr.com/"] +bestthots.com,leakedzone.com##[href^="https://v6.realxxx.com/"] +porngames.club##[href^="https://www.familyporngames.games/"] +porngames.club##[href^="https://www.porngames.club/friends/out.php"] +hentaiforce.net##[id$="-agsy"] +alotporn.com,amateurporn.me##[id^="list_videos_"] > [class="item"] +official.coomer.com.co##[id^="monetization-ad"] +gamesofdesire.com##[id^="skin_"] +youjizz.com##[img][src*="blob:"] +tophentai.biz##[src*="hentaileads/"] +hentaigasm.com##[src^="https://add2home.files.wordpress.com/"] +tubedupe.com##[src^="https://tubedupe.com/player/html.php?aid="] +hentai-gamer.com##[src^="https://www.hentai-gamer.com/pics/"] +pornhub.com##[srcset*="bloB:"] +gelbooru.com##[style$="height: 250px; "] +myhentaicomics.com##[style$="height: 250px; display: inline-block;"] +zerochan.net##[style$="min-height: 300px !important; "] +pornhub.com,redtube.com,tube8.com,tube8.es,tube8.fr,youjizz.com,youporn.com##[style*="base64"] +pornhub.com,redtube.com,tube8.com,tube8.es,tube8.fr,youjizz.com,youporn.com##[style*="blob:"]:not(video) +muchohentai.com##[style="display: inline-block !important;"] +xozilla.com##[style="height: 220px !important; overflow: hidden;"] +hentairider.com##[style="height: 250px;padding:5px;"] +eporner.com##[style="margin: 20px auto; height: 275px; width: 900px;"] +rule34.xxx##[style="min-height: 135px; box-sizing: border-box;"] +vjav.com##[style="width: 728px; height: 90px;"] +muchohentai.com##[style="width:100%;height:250px;"] +gelbooru.com,xozilla.com##[style^="height: 250px !important;"] +missav.*,missav123.com,missav888.com,njavtv.com##[style^="width: 300px; height: 250px;"] +123av.com,123av.ws,1av.to##[style^="width:300px;"] +missav.*,missav123.com,missav888.com##[x-show$="video_details'"] > div > .list-disc +freeuseporn.com##a:has(svg[class*="lucide-chevron-right"]):not([href^="/"]) +redtube.com,tube8.com,youporn.com##a[class*="gtm-event-header-paidtabs"] +pornone.com##a[class^="listing"] +pornhub.com##a[data-event="header_paid_tabs"] +f95zone.to##a[data-nav-id="AIPorn"] +f95zone.to##a[data-nav-id="AISexChat"] +boyfriend.tv,boyfriendtv.com##a[href*="&creativeId="] +porn.com##a[href*="&ref="] +asspoint.com,babepedia.com,babesandstars.com,dbnaked.com,freeones.com,gfycatporn.com,mansurfer.com,newpornstarblogs.com,ok.porn,porn-star.com,porn.com,porndoe.com,pornhubpremium.com,pornstarchive.com,rogreviews.com,sexyandfunny.com,shemaletubevideos.com,spankbang.com,str8upgayporn.com,the-new-lagoon.com,tube8.com,wcareviews.com,xxxonxxx.com,youporn.com##a[href*=".com/track/"] +badjojo.com,boysfood.com,definebabe.com,efukt.com,girlsofdesire.org,shemaletubevideos.com,therealpornwikileaks.com##a[href*=".php"] +boyfriend.tv,boyfriendtv.com,hentaigasm.com,masahub.net,missav.ai,missav.ws,missav123.com,missav888.com,phun.org,porn-w.org##a[href*="//bit.ly/"] +taxidrivermovie.com##a[href*="/category/"] +nude.hu##a[href*="/click/"] +hdzog.com,xcafe.com##a[href*="/cs/"] +lewdspot.com,mopoga.com##a[href*="/gm/"] +agedbeauty.net,imgdrive.net,pornpics.com,pornpics.de,vipergirls.to##a[href*="/go/"] +pornlib.com##a[href*="/linkout/"] +mansurfer.com##a[href*="/out/"] +4tube.com,fux.com,pornerbros.com,porntube.com##a[href*="/redirect-channel/"] +analdin.com,cockdude.com,coomer.st,gelbooru.com,kemono.cr,official.coomer.com.co##a[href*="/tsyndicate.com/"] +youpornzz.com##a[href*="/videoads.php?"] +pornhub.com,pornhubpremium.com,spankbang.com,sxyprn.com,tube8.com,tube8vip.com,xozilla.com,xxxymovies.com##a[href*="?ats="] +adultdvdempire.com##a[href*="?partner_id="][href*="&utm_"] +taxidrivermovie.com##a[href*="mrskin.com/"] +adultfilmdatabase.com,analegg.com,animeidhentai.com,babeforums.org,camvideos.tv,camwhores.tv,coomer.st,erothots.co,f95zone.to,familypornhd.com,fritchy.com,gifsauce.com,hentai2read.com,hotpornfile.org,hpjav.com,imagebam.com,imgbox.com,imgtaxi.com,kemono.cr,muchohentai.com,myporn.club,official.coomer.com.co,pandamovies.pw,planetsuzy.org,porntrex.com,pussyspace.com,sendvid.com,sextvx.com,simpcity.cr,socialmediagirls.com,thefappeningblog.com,vintage-erotica-forum.com,vipergirls.to,xfantazy.com##a[href*="theporndude.com"] +tsmodelstube.com##a[href="https://tsmodelstube.com/a/tangels"] +bravotube.net##a[href^="/cs/"] +sexhd.pics##a[href^="/direct/"] +drtuber.com##a[href^="/partner/"] +teenmushi.org##a[href^="http://keep2share.cc/code/"] +babesandstars.com##a[href^="http://rabbits.webcam/"] +adultgifworld.com,babeshows.co.uk,boobieblog.com,fapnado.com,iseekgirls.com,the-new-lagoon.com##a[href^="http://refer.ccbill.com/cgi-bin/clicks.cgi?"] +f95zone.to,pornhub.com,pornhubpremium.com,redtube.com##a[href^="https://ads.trafficjunky.net/"] +imgsen.com##a[href^="https://besthotgayporn.com/"] +socialmediagirls.com##a[href^="https://bongacams.com/"] +socialmediagirls.com##a[href^="https://bunnyagent.com/"] +imx.to##a[href^="https://camonster.com/"] +socialmediagirls.com##a[href^="https://camplayer.com/"] +f95zone.to,imagetwist.com##a[href^="https://candy.ai/"] +hog.tv##a[href^="https://clickaine.com"] +spankbang.com##a[href^="https://deliver.ptgncdn.com/"] +valuexh.life,xhaccess.com,xhamster.com,xhamster.desi,xhamster2.com,xhamster3.com,xhamster42.desi,xhbig.com,xhbranch5.com,xhchannel.com,xhdate.world,xhofficial.com,xhspot.com,xhtotal.com,xhwide2.com##a[href^="https://flirtify.com/"] +socialmediagirls.com##a[href^="https://fuqqt.com/"] +hitbdsm.com##a[href^="https://go.rabbitsreviews.com/"] +sexhd.pics##a[href^="https://go.stripchat.com/"] +socialmediagirls.com##a[href^="https://golove.ai/anonAuth?"] +imgsen.com##a[href^="https://hardcoreincest.net/"] +adultgamesworld.com##a[href^="https://joystick.tv/t/?t="] +yaoimangaonline.com##a[href^="https://l.hyenadata.com/"] +gayforfans.com##a[href^="https://landing.mennetwork.com/"] +trannygem.com##a[href^="https://landing.transangelsnetwork.com/"] +datingpornstar.com##a[href^="https://mylinks.fan/"] +babepedia.com##a[href^="https://porndoe.com/"] +xv-ru.com,xvideos.*##a[href^="https://s.zlink7.com/"] +fans-here.com##a[href^="https://satoshidisk.com/"] +forums.socialmediagirls.com##a[href^="https://secure.chewynet.com/"] +smutr.com##a[href^="https://smutr.com/?action=trace"] +pornlizer.com##a[href^="https://tezfiles.com/store/"] +allaboutcd.com##a[href^="https://thebreastformstore.com/"] +muchohentai.com##a[href^="https://trynectar.ai/"] +socialmediagirls.com##a[href^="https://v6.realxxx.com/"] +forums.socialmediagirls.com##a[href^="https://viralporn.com/"][href*="?utm_"] +f95zone.to##a[href^="https://www.deepswap.ai"] +myreadingmanga.info##a[href^="https://www.dlsite.com/"] +namethatpornad.com,vxxx.com##a[href^="https://www.g2fame.com/"] +myreadingmanga.info,yaoimangaonline.com##a[href^="https://www.gaming-adult.com/"] +gotporn.com##a[href^="https://www.gotporn.com/click.php?id="] +spankbang.com##a[href^="https://www.iyalc.com/"] +imagebam.com,vipergirls.to##a[href^="https://www.mrporngeek.com/"] +pimpandhost.com##a[href^="https://www.myfreecams.com/"][href*="&track="] +socialmediagirls.com##a[href^="https://www.puatraining.com/"] +socialmediagirls.com##a[href^="https://www.rabbitsreviews.com/"] +couplesinternational.com##a[href^="https://www.redhotpie.com"] +pornhub.com##a[href^="https://www.uviu.com"] +barelist.com,spankingtube.com##a[onclick] +rule34.xxx,slixa.com##a[rel="sponsored"] +porngames.games##a[style="color: #9d9d9d;"][target="_blank"] +h-flash.com##a[style^="width: 320px; height: 250px"] +1escorts.net##a[target="_blank"] > img[width="250"] +povaddict.com##a[title^="FREE "] +leakgallery.com##app-footer-ads +leakgallery.com##app-header-ads +leakgallery.com##app-media-ads +aniporn.com,bdsmx.tube##article > section +girlonthenet.com##aside[data-adrotic] +japan-whores.com##aside[style="padding: 5px 13px 5px 5px;"] +mysexgames.com##body > div[style*="z-index:"] +xxbrits.com##button[class^="click-fun"] +boobieblog.com,imgadult.com,lolhentai.net,picdollar.com,porngames.com,thenipslip.com,wetpussygames.com,xvideos.name##canvas +redtube.com##div > iframe +publicflashing.me##div.hentry +xxxdl.net##div.in_thumb.thumb +sexwebvideo.net##div.trailer-sponsor +underhentai.net##div[class*="afi-"] +galleryxh.site,megaxh.com,openxh.com,stripchat.com,valuexh.life,xhaccess.com,xhamster.com,xhamster.desi,xhamster.one,xhamster1.desi,xhamster13.*,xhamster14.com,xhamster16.*,xhamster17.*,xhamster18.*,xhamster19.com,xhamster2.com,xhamster20.desi,xhamster3.*,xhamster37.com,xhamster40.com,xhamster42.desi,xhamster9.com,xhbig.com,xhbranch5.com,xhchannel.com,xhdate.world,xhmoon5.com,xhofficial.com,xhopen.com,xhspot.com,xhtotal.com,xhvid.com,xhwebsite2.com,xhwide1.com,xhwide2.com##div[class*="cams-wgt"] +redtube.com##div[class*="display: block; height:"] +twiman.net##div[class*="my-"][class*="px\]"] +camsoda.com##div[class^="AdsRight-"] +ovacovid.com##div[class^="Banner-"] +cam4.com,cam4.eu##div[class^="SponsoredAds_"] +hentaicovid.com##div[class^="banner-"] +xporno.tv##div[class^="block_ads_"] +new.lewd.ninja##div[class^="box ~!@$%^&*()_+-=,./';:?><[]"] +hentaimama.io##div[class^="in-between-ad"] +pornwhite.com,sleazyneasy.com##div[data-banner] +theyarehuge.com##div[data-nosnippet] +xhamster.com##div[data-testid="right-banner-section"] +hentai2read.com##div[data-type="leaderboard-top"] +rule34.us##div[id^="__clb-spot_"] +hentaistream.com##div[id^="adx_ad-"] +darknessporn.com,familyporner.com,freepublicporn.com,pisshamster.com,punishworld.com,xanimu.com##div[id^="after-boxes"] +darknessporn.com,familyporner.com,freepublicporn.com,pisshamster.com,punishworld.com,xanimu.com##div[id^="beside-video"] +pornsitetest.com##div[id^="eroti-"] +darknessporn.com,familyporner.com,freepublicporn.com,pisshamster.com,punishworld.com,xanimu.com##div[id^="native-boxes"] +darknessporn.com,familyporner.com,freepublicporn.com,pisshamster.com,punishworld.com,xanimu.com##div[id^="related-boxes-footer"] +pornstarbyface.com##div[id^="sponcored-content-"] +lewdgamer.com##div[id^="spot-"] +hentaiff.com##div[id^="teaser"] +thefetishistas.com##div[id^="thefe-"] +eromanga-show.com,hentai-one.com,hentaipaw.com##div[id^="ts_ad_"] +pornhub.com##div[onclick*="bp1.com"] +hentaistream.com##div[style$="width:100%;height:768px;overflow:hidden;visibility:hidden;"] +xozilla.xxx##div[style="height: 250px !important; overflow: hidden;"] +porncore.net##div[style="margin:10px auto;height:200px;width:800px;"] +bigwarp.*##div[style="position: fixed; inset: 0px; background: rgba(0, 0, 0, 0.42); z-index: 2147483647; display: flex; align-items: center; justify-content: center; pointer-events: auto;"] +abxxx.com,aniporn.com,missav.ai,missav.ws,missav123.com,missav888.com##div[style="width: 300px; height: 250px;"] +sexbot.com##div[style="width:300px;height:20px;text-align:center;padding-top:30px;"] +gay0day.com##div[style^="height:250px;"] +sextb.date##div[style^="width: 305px; height: 255px;"] +ooxxx.com##div[style^="width: 728px; height: 90px;"] +thehentai.net##div[style^="width:300px; height:250px;"] +javtorrent.me##div[style^="width:728px; height: 90px;"] +javgg.net##iframe.lazyloaded.na +xcafe.com##iframe[src] +manga18fx.com,manhwa18.cc##iframe[style] +3movs.com,ggjav.com,tnaflix.com##iframe[width="300"] +pornhub.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com##img[src*="blob:" i]:not(video) +4tube.com##img[src][style][width] +pornhub.com##img[srcset] +mature.community,milf.community,milf.plus,pornhub.com##img[width="300"] +sexmummy.com##img[width="468"] +boyfriend.tv,boyfriendtv.com##li[class="media-item no-popup"] +mrjav.net##li[id^="video-interlacing"] +pictoa.com##nav li[style="position: relative;"] +boundhub.com##noindex +pornhd.com##phd-floating-ad +porngifs2u.com##section[class*="elementor-hidden-"] +redtube.com##svg +mysexgames.com##table[height="630"] +mysexgames.com##table[style^="background-color:#eeeeee; width:1020px;"] +xxxcomics.org##video +tube8.es,tube8.fr##video[autoplay] +porndoe.com,redtube.com##video[autoplay][src*="blob:" i] +porndoe.com,redtube.com##video[autoplay][src*="data:" i] +! top-level domain wildcard +cam4.*##div[class^="SponsoredAds_"] +!! :has() +redgifs.com##.SideBar-Item:has(> [class^="_liveAdButton"]) +porn-w.org##.align-items-center.list-row:has(.col:empty) +multporn.net##.block-block:has(> .content > ins[data-zoneid]) +picsporn.net##.box:has(> .dip-exms) +javtiful.com##.col.pb-3:has(.badge.bg-danger) +fetishshrine.com##.container > .heading:has(+ .bottom-content) +porngames.com##.contentbox:has(a[href="javascript:void(0);"]) +porngames.com##.contentbox:has(iframe[src^="//"]) +kimochi.info##.gridlove-posts > .layout-simple:has(.gridlove-archive-ad) +av01.*##.group:has(> .relative.overflow-hidden.rounded-lg.bg-gray-900.cursor-pointer) +jable.tv##.gutter-20 > .col-sm-4:has(> .video-img-box a[target="_blank"]) +hdporncomics.com##.hover\:shadow-xl:has(> .adsbyexoclick) +loverslab.com##.ipsDataList_large.ipsDataList > .ipsClearfix:has(span.redirect_ad) +tokyomotion.com##.is-gapless > .has-text-centered:has(> div > .adv) +rule34video.com##.item.thumb:has(> [title="Advertisement"]) +4kporn.xxx,crazyporn.xxx,hoes.tube,love4porn.com##.item:has(> [class*="ads"]) +stockingfetishvideo.com##.item:has(> [href*="/?action=trace&"]) +reddxxx.com##.items-center.justify-center.rounded-lg.backdrop-blur-md:has(iframe[src^="https://ctads.rtbsuperhub.com/"]) +vjav.com,vjav.tube##.left + div:has(> div[class] > [id^="ntv"]) +vagina.nl##.list-item:has([data-idzone]) +adultgamesworld.com##.masonry-layout__panel:has(a[href^="https://access-the-website.com/"]) +darknessporn.com,familyporner.com,freepublicporn.com,pisshamster.com,punishworld.com,xanimu.com##.no-gutters > .col-6:has(> #special-block) +f95zone.to##.node:has(> .node-body > .node-main > .node-title > a[href^="/link-forums/"][href*="-slut."]) +justfullporn.net##.order-1:has(> .video-block-happy) +adultgamesworld.com##.rel:has(a[href^="https://access-the-website.com/"]) +kbjfree.com##.relative.w-full:has(> .video-card[target="_blank"]) +pornhub.com##.sectionWrapper:has(> #bottomVideos > .wrapVideoBlock) +hentaicomics.pro##.single-portfolio:has(.xxx-banner) +xasiat.com##.top:has(> [data-zoneid]) +scrolller.com##.vertical-view__column > .vertical-view__item:has(> div[style$="overflow: hidden;"]) +povxl.com##.video-holder > div:has([id^="ts_ad_native_"]) +javxxx.me##.video-img:has(> #next-to-video-1) +porndoe.com##.video-item:has(a.video-item-link[ng-native-click]) +rule34.us##:has(> [target="_blank"][rel="nofollow"]) +jav4tv.com##aside:has(.ads_300_250) +pornohans.net##aside:has(.adsbyexoclick) +youporn.com##aside:has(a.ad-remove) +rule34.us##center:has(> div[style*="overflow"] > [data-cl-spot]) +completeporndatabase.com##div:has(> .text-ads) +freeuseporn.com##div:has(> iframe) +pornhub.com##div[class="video-wrapper"] > .clear.hd:has(.adsbytrafficjunky) +reddxxx.com##div[role="gridcell"]:has(img[src="https://cdn3.reddxxx.com/f_cm5eeic910000mrywxfe0wa1c_p5ov94asrzmby3n7ppmomnay.jpeg"]) +rule34.us##div[style*='height: 490px']:has(center > div[style*="overflow"] > [data-cl-spot]) +rule34.paheal.net##section[id$="main"] > .blockbody:has(> div[align="center"] > ins) +!! Advanced element hiding rules +4wank.com#?#.video-holder > center > :has-text(/^Advertisement$/) +redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com##:-abp-properties(*data:image*) +redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com##:-abp-properties(base64) +redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com##:-abp-properties(data:) +pornhub.com,youporn.com##:-abp-properties(float: right; margin-top: 30px; width: 50%;) +pornhub.com##:-abp-properties(height: 300px; width: 315px;) +redtube.com,tube8.com,tube8.es,tube8.fr,xvideos.com,youjizz.com,youporn.com##:-abp-properties(image/) +crocotube.com#?#.ct-related-videos-title:has-text(Advertisement) +crocotube.com#?#.ct-related-videos-title:has-text(You may also like) +freeuseporn.com#?#section > div > div:has(h2:has-text(Friends)) +freeuseporn.com#?#section:has-text(Sponsor) +hdpornpics.net#?#.money:has(.century:has-text(ADS)) +hotmovs.com#?#.block_label--last:has-text(Advertisement) +okxxx1.com#?#.bn-title:has-text(Advertising) +porn-w.org#?#.row:has-text(Promotion Bot) +pornhub.com#?#.noBottom:has-text(Remove Ads) +reddxxx.com#?#.items-center:has-text(/^ad$/) +reddxxx.com#?#[role="gridcell"]:has-text(/^AD$/) +! ABP CSS injection filters +hentaihere.com##body {padding-top:0;} +hitomi.la##.content > div[class]:not([class*="-"]) {min-height:40px !important;} +hitomi.la##.top-content > div[class]:not([class*="-"]) {min-height:40px !important;} +myhentaicomics.com##.featured-manga, .header-spot, .pagination-image {min-height:0 !important;} +otomi-games.com##.clean-grid-grid-post:has(> [id^="otomi-"] + .clean-grid-grid-post-details-full) {remove:true;} +! 69games.xxx/gamcore/porcore.com +classic.gamcore.com###center > .flashes > .wide:has(> a[href][rel]) +69games.xxx###footer +gamcore.com###preloader_2 +69games.xxx###right +69games.xxx,gamcore.com###tvnotice +gamcore.com##.add_game.d-none +gamcore.com##.item:has(> [href^="/games/fuckyou/"]) +gamcore.com##.row > .d-md-block +69games.xxx##[class^="leaderboard"] +gamcore.com##[href*="/ads/"] +69games.xxx##[id*="tvadbody"] +classic.gamcore.com##[id]:has(> .warningbox) +69games.xxx##[id^="center"] .I:has(> [class=""][href]) +69games.xxx,porcore.com##body > [id][style^="position: fixed; top: 0px;"] +gamcore.com##li.d-md-block > a[rel] +!-----------------------Allowlists to fix broken sites------------------------! +! *** easylist:easylist/easylist_allowlist.txt *** +@@||2mdn.net/instream/html5/ima3.js$script,domain=earthtv.com|zdnet.com +@@||4cdn.org/adv/$image,xmlhttprequest,domain=4channel.org +@@||4channel.org/adv/$image,xmlhttprequest,domain=4channel.org +@@||a.vdo.ai/core/v-m-timesofindia-v3/vdo.ai.js$domain=timesofindia.indiatimes.com +@@||abcnews.com/assets/js/prebid.min.js$~third-party +@@||abcnews.com/assets/player/$script,~third-party +@@||accuweather.com/bundles/prebid.$script +@@||ad.linksynergy.com^$image,domain=extrarebates.com +@@||adap.tv/redir/javascript/vpaid.js +@@||addicted.es^*/ad728-$image,~third-party +@@||adjust.com/adjust-latest.min.js$domain=anchor.fm +@@||adm.fwmrm.net^*/TremorAdRenderer.$object,domain=go.com +@@||adm.fwmrm.net^*/videoadrenderer.$object,domain=cnbc.com|go.com|nbc.com|nbcnews.com +@@||adnxs.com/ast/ast.js$domain=zone.msn.com +@@||ads-static.conde.digital^$domain=wired.com +@@||ads.adthrive.com/api/$domain=adamtheautomator.com|packhacker.com|packinsider.com +@@||ads.adthrive.com/builds/core/*/js/adthrive.min.js$domain=adamtheautomator.com|laurelberninteriors.com|packhacker.com|packinsider.com +@@||ads.adthrive.com/builds/core/*/prebid.min.js$domain=laurelberninteriors.com +@@||ads.adthrive.com/builds/core/*/vendor/prebid/*/prebid.min.js$domain=laurelberninteriors.com +@@||ads.adthrive.com/sites/$script,domain=adamtheautomator.com|packhacker.com|packinsider.com +@@||ads.adthrive.com/sites/*/ads.min.js$domain=laurelberninteriors.com +@@||ads.burdadigital.cz/sites/default/files/public/burda_ads/prod/dist/$domain=g.cz|lifee.cz|marianne.cz|nkz.cz|svetzeny.cz +@@||ads.freewheel.tv/|$media,domain=cnbc.com|fxnetworks.com|my.xfinity.com|nbc.com|nbcsports.com +@@||ads.kbmax.com^$domain=adspipe.com +@@||ads.pubmatic.com/adserver/js/$script,domain=wionews.com|zeebiz.com +@@||ads.pubmatic.com/AdServer/js/pwtSync/$script,subdocument,domain=dnaindia.com|independent.co.uk +@@||ads.roblox.com/v1/sponsored-pages$xmlhttprequest,domain=roblox.com +@@||ads.rogersmedia.com^$subdocument,domain=cbc.ca +@@||ads.rubiconproject.com/prebid/$script,domain=drudgereport.com|everydayhealth.com +@@||adsafeprotected.com/iasPET.$script,domain=independent.co.uk|reuters.com|wjs.com +@@||adsafeprotected.com/vans-adapter-google-ima.js$script,domain=gamingbible.co.uk|ladbible.com|reuters.com|wjs.com +@@||adsales.snidigital.com/*/ads-config.min.js$script +@@||adserver.skiresort-service.com/www/delivery/spcjs.php?$script,domain=skiresort.de|skiresort.fr|skiresort.info|skiresort.it|skiresort.nl +@@||adswizz.com/adswizz/js/SynchroClient*.js$script,third-party,domain=jjazz.net|lamusica.com +@@||adswizz.com/sca_newenco/$domain=triplem.com.au +@@||airplaydirect.com/openx/www/images/$image +@@||almayadeen.net/Content/VideoJS/js/videoPlayer/VideoAds.js$script,~third-party +@@||amazon-adsystem.com/aax2/apstag.js$domain=accuweather.com|barstoolsports.com|blastingnews.com|familyhandyman.com|foxbusiness.com|gamingbible.co.uk|history.com|independent.co.uk|inquirer.com|keloland.com|radio.com|rd.com|si.com|sportbible.com|tasteofhome.com|the-independent.com|thehealthy.com|time.com|wboy.com|wellgames.com|wkrn.com|wlns.com|wvnstv.com +@@||amazon-adsystem.com/widgets/q?$image,third-party +@@||amazonaws.com/prod.iqdcontroller.iqdigital/cdn_iqdspiegel/live/iqadcontroller.js.gz$domain=spiegel.de +@@||aniview.com/api/$script,xmlhttprequest,domain=gamingbible.co.uk|ladbible.com|stirr.com +@@||aone-soft.com/style/images/ad2.jpg +@@||api.adinplay.com/libs/aiptag/$script,domain=bigescapegames.com|brofist.io|cuberealm.io|findcat.io|geotastic.net|lordz.io +@@||api.adinplay.com/libs/aiptag/pub/$domain=geotastic.net +@@||api.adinplay.com/v4/live/aip/ad-manager.js$script,domain=cuberealm.io +@@||api.adnetmedia.lt/api/$~third-party +@@||apis.kostprice.com/fapi/$script,domain=gadgets.ndtv.com +@@||apmebf.com/ad/$domain=betfair.com +@@||app.hubspot.com/api/ads/$~third-party +@@||app.veggly.net/plugins/cordova-plugin-admobpro/www/AdMob.js$script,~third-party +@@||apv-launcher.minute.ly/api/$script +@@||archive.org/BookReader/$image,~third-party,xmlhttprequest +@@||archive.org/services/$image,~third-party,xmlhttprequest +@@||assets.ctfassets.net^$media,domain=ads.spotify.com +@@||assets.strossle.com^*/strossle-widget-sdk.js$script,domain=kaaoszine.fi +@@||at.adtech.redventures.io/lib/api/$xmlhttprequest,domain=gamespot.com|giantbomb.com|metacritic.com +@@||at.adtech.redventures.io/lib/dist/$script,domain=gamespot.com|giantbomb.com|metacritic.com +@@||atlas.playpilot.com/api/v1/ads/browse/$xmlhttprequest,domain=playpilot.com +@@||autotrader.co.uk^*/advert$~third-party +@@||avclub.com^*/adManager.$script,~third-party +@@||bankofamerica.com^*?adx=$~third-party,xmlhttprequest +@@||banmancounselling.com/wp-content/themes/banman/ +@@||bannersnack.com/banners/$document,subdocument,domain=adventcards.co.uk|charitychristmascards.org|christmascardpacks.co.uk|kingsmead.com|kingsmeadcards.co.uk|nativitycards.co.uk|printedchristmascards.co.uk +@@||basinnow.com/admin/upload/settings/advertise-img.jpg +@@||basinnow.com/upload/settings/advertise-img.jpg +@@||bauersecure.com/dist/js/prebid/$domain=carmagazine.co.uk +@@||bbc.co.uk^*/adverts.js +@@||bbc.gscontxt.net^$script,domain=bbc.com +@@||betterads.org/hubfs/$image,~third-party +@@||bigfishaudio.com/banners/$image,~third-party +@@||bikeportland.org/wp-content/plugins/advanced-ads/public/assets/js/advanced.min.js$script,~third-party +@@||bitcoinbazis.hu/advertise-with-us/$~third-party +@@||blueconic.net/capitolbroadcasting.js$script,domain=wral.com +@@||boatwizard.com/ads_prebid.min.js$script,domain=boats.com +@@||bordeaux.futurecdn.net/bordeaux.js$script,domain=gamesradar.com|tomsguide.com +@@||borneobulletin.com.bn/wp-content/banners/bblogo.jpg$~third-party +@@||brave.com/static-assets/$image,~third-party +@@||britannica.com/mendel-resources/3-52/js/libs/prebid4.$script,~third-party +@@||capitolbroadcasting.blueconic.net^$image,script,xmlhttprequest,domain=wral.com +@@||carandclassic.co.uk/images/free_advert/$image,~third-party +@@||cbsi.com/dist/optanon.js$script,domain=cbsnews.com|zdnet.com +@@||cc.zorores.com/ad/*.vtt$domain=rapid-cloud.co +@@||cdn.advertserve.com^$domain=hutchgo.com|hutchgo.com.cn|hutchgo.com.hk|hutchgo.com.sg|hutchgo.com.tw +@@||cdn.ex.co^$domain=mm-watch.com|theautopian.com +@@||cdn.wgchrrammzv.com/prod/ajc/loader.min.js$domain=journal-news.com +@@||chycor.co.uk/cms/advert_search_thumb.php$image,domain=chycor.co.uk +@@||client.aps.amazon-adsystem.com/publisher.js$script,domain=thestreet.com +@@||client.aps.amazon-adsystem.com^$script,domain=newsweek.com +@@||clients.plex.tv/api/v2/ads/$~third-party +@@||cloudfront.net/js/common/invoke.js +@@||commons.wikimedia.org/w/api.php?$~third-party,xmlhttprequest +@@||config.aps.amazon-adsystem.com^$script,domain=newsweek.com +@@||connatix.com*/connatix.player.$script,domain=ebaumsworld.com|funker530.com|tvinsider.com|washingtonexaminer.com +@@||content.pouet.net/avatars/adx.gif$image,~third-party +@@||crackle.com/vendor/AdManager.js$script,~third-party +@@||cvs.com/webcontent/images/weeklyad/adcontent/$~third-party +@@||d.socdm.com/adsv/*/tver_splive$xmlhttprequest,domain=imasdk.googleapis.com +@@||dcdirtylaundry.com/cdn-cgi/challenge-platform/$~third-party +@@||delivery-cdn-cf.adswizz.com/adswizz/js/SynchroClient*.js$script,domain=tunein.com +@@||discretemath.org/ads/ +@@||discretemath.org^$image,stylesheet +@@||disqus.com/embed/comments/$subdocument +@@||docs.woopt.com/wgact/$image,~third-party,xmlhttprequest +@@||dodo.ac/np/images/$image,domain=nookipedia.com +@@||doubleclick.net/ddm/$image,domain=aetv.com|fyi.tv|history.com|mylifetime.com +@@||doubleclick.net/|$xmlhttprequest,domain=tvnz.co.nz +@@||edmodo.com/ads$~third-party,xmlhttprequest +@@||einthusan.tv/prebid.js$script,~third-party +@@||embed.ex.co^$xmlhttprequest,domain=espncricinfo.com +@@||entitlements.jwplayer.com^$xmlhttprequest,domain=iheart.com +@@||experienceleague.adobe.com^$~third-party +@@||explainxkcd.com/wiki/images/$image,~third-party +@@||ezodn.com/tardisrocinante/lazy_load.js$script,domain=origami-resource-center.com +@@||ezoic.net/detroitchicago/cmb.js$script,domain=gerweck.net +@@||f-droid.org/assets/Ads_$~third-party +@@||facebook.com/ads/profile/$~third-party,xmlhttprequest +@@||faculty.uml.edu/klevasseur/ads/ +@@||faculty.uml.edu^$image,stylesheet +@@||fdyn.pubwise.io^$script,domain=urbanglasgow.co.uk +@@||files.slack.com^$image,~third-party +@@||flying-lines.com/banners/$image,~third-party +@@||forum.miuiturkiye.net/konu/reklam.$~third-party,xmlhttprequest +@@||forums.opera.com/api/topic/$~third-party,xmlhttprequest +@@||franklymedia.com/*/300x150_WBNQ_TEXT.png$image,domain=wbnq.com +@@||fuseplatform.net^*/fuse.js$script,domain=broadsheet.com.au|friendcafe.jp +@@||g.doubleclick.net/gampad/ads$xmlhttprequest,domain=bloomberg.com|chromatographyonline.com|formularywatch.com|journaldequebec.com|managedhealthcareexecutive.com|medicaleconomics.com|physicianspractice.com|samsclub.com +@@||g.doubleclick.net/gampad/ads*%20Web%20Player$domain=imasdk.googleapis.com +@@||g.doubleclick.net/gampad/ads?*%2Ftver.$xmlhttprequest,domain=imasdk.googleapis.com +@@||g.doubleclick.net/gampad/ads?*&iu=%2F18190176%2C22509719621%2FAdThrive_Video_Collapse_Autoplay_$xmlhttprequest,domain=imasdk.googleapis.com +@@||g.doubleclick.net/gampad/ads?*&iu=%2F18190176%2C22509719621%2FAdThrive_Video_In-Post_ClicktoPlay_$domain=imasdk.googleapis.com +@@||g.doubleclick.net/gampad/ads?*&prev_scp=kw%3Diqdspiegel%2Cdigtransform%2Ciqadtile4%2$xmlhttprequest,domain=spiegel.de +@@||g.doubleclick.net/gampad/ads?*.crunchyroll.com$xmlhttprequest,domain=imasdk.googleapis.com +@@||g.doubleclick.net/gampad/ads?*RakutenShowtime$xmlhttprequest,domain=imasdk.googleapis.com +@@||g.doubleclick.net/gampad/ads?env=$xmlhttprequest,domain=wunderground.com +@@||g.doubleclick.net/gampad/live/ads?*tver.$xmlhttprequest,domain=imasdk.googleapis.com +@@||g.doubleclick.net/pagead/ads$subdocument,domain=sudokugame.org +@@||g.doubleclick.net/pagead/ads?*&description_url=https%3A%2F%2Fgames.wkb.jp$xmlhttprequest,domain=imasdk.googleapis.com +@@||g2crowd.com/uploads/product/image/$image,domain=g2.com +@@||gbf.wiki/images/$image,~third-party +@@||gitlab.com/api/v4/projects/$~third-party +@@||givingassistant.org/Advertisers/$~third-party +@@||global-uploads.webflow.com/*_dimensions-$image,domain=dimensions.com +@@||gn-web-assets.api.bbc.com/bbcdotcom/assets/$script,domain=bbc.co.uk +@@||go.ezodn.com/tardisrocinante/lazy_load.js?$script,domain=raiderramble.com +@@||go.ezodn.com^$script,domain=open.video +@@||go.xlirdr.com/api/models/vast$xmlhttprequest +@@||gocomics.com/assets/ad-dependencies-$script,~third-party +@@||google.com/images/integrations/$image,~third-party +@@||googleadservices.com/pagead/conversion_async.js$script,domain=zubizu.com +@@||googleoptimize.com/optimize.js$script,domain=wallapop.com +@@||gpt-worldwide.com/js/gpt.js$~third-party +@@||grapeshot.co.uk/main/channels.cgi$script,domain=telegraph.co.uk +@@||gstatic.com/_/mss/boq-ads-privacy-consumer-frontend$domain=googleads.g.doubleclick.net +@@||gstatic.com/ads/external/images/$image,domain=support.google.com +@@||gumtree.co.za/my/ads.html$~third-party +@@||hotstar.com/vs/getad.php$domain=hotstar.com +@@||hp.com/in/*/ads/$script,stylesheet,~third-party +@@||htlbid.com^*/htlbid.js$domain=hodinkee.com +@@||hutchgo.advertserve.com^$domain=hutchgo.com|hutchgo.com.cn|hutchgo.com.hk|hutchgo.com.sg|hutchgo.com.tw +@@||hw-ads.datpiff.com/news/$image,domain=datpiff.com +@@||image.shutterstock.com^$image,domain=icons8.com +@@||improvedigital.com/pbw/headerlift.min.js$domain=games.co.uk|kizi.com|zigiz.com +@@||infotel.ca/images/ads/$image,~third-party +@@||infoworld.com/www/js/ads/gpt_includes.js$~third-party +@@||instagram.com/api/v1/ads/$~third-party,xmlhttprequest +@@||ipinfo.io/static/images/use-cases/adtech.jpg$image,~third-party +@@||island.lk/userfiles/image/danweem/island.gif +@@||itv.com/itv/hserver/*/site=itv/$xmlhttprequest +@@||itv.com/itv/tserver/$~third-party +@@||jokerly.com/Okidak/adSelectorDirect.htm?id=$document,subdocument +@@||jokerly.com/Okidak/vastChecker.htm$document,subdocument +@@||js.adsrvr.org/up_loader.1.1.0.js$domain=sterkinekor.com +@@||jsdelivr.net^*/videojs.ads.css$domain=irctc.co.in +@@||jwpcdn.com/player/plugins/googima/$script,domain=iheart.com|video.vice.com +@@||kotaku.com/x-kinja-static/assets/new-client/adManager.$~third-party +@@||lastpass.com/ads.php$subdocument,domain=chrome-extension-scheme +@@||lastpass.com/images/ads/$image,~third-party +@@||letocard.fr/wp-content/uploads/$image,~third-party +@@||linkbucks.com/tmpl/$image,stylesheet +@@||live.primis.tech^$domain=eurogamer.net|gbnews.com|independent.co.uk|klaq.com|loudwire.com|screencrush.com|the-independent.com|vg247.com|xxlmag.com +@@||live.primis.tech^$xmlhttprequest,domain=xxlmag.com +@@||live.streamtheworld.com/partnerIds$domain=iheart.com|player.amperwave.net +@@||lokopromo.com^*/adsimages/$~third-party +@@||looker.com/api/internal/$~third-party +@@||luminalearning.com/affiliate-content/$image,~third-party +@@||makeuseof.com/public/build/images/bg-advert-with-us.$~third-party +@@||manageengine.com/images/logo/$image,~third-party +@@||manageengine.com/products/ad-manager/$~third-party +@@||martinfowler.com/articles/asyncJS.css$stylesheet,~third-party +@@||media.kijiji.ca/api/$image,~third-party +@@||mediaalpha.com/js/serve.js$domain=goseek.com +@@||micro.rubiconproject.com/prebid/dynamic/$script,xmlhttprequest,domain=gamingbible.co.uk|la7.it|ladbible.com|sportbible.com|viki.com +@@||moatads.com^$script,domain=imsa.com|nascar.com +@@||motortrader.com.my/advert/$image,~third-party +@@||mtouch.facebook.com/ads/api/preview/$domain=business.facebook.com +@@||nascar.com/wp-content/themes/ndms-2023/assets/js/inc/ads/prebid8.$~third-party +@@||newscgp.com/prod/prebid/nyp/pb.js$domain=nypost.com +@@||newsweek.com/prebid.js$script,domain=newsweek.com +@@||nextcloud.com/remote.php/$~third-party,xmlhttprequest +@@||nflcdn.com/static/site/$script,domain=nfl.com +@@||npr.org/sponsorship/targeting/$~third-party,xmlhttprequest +@@||ntv.io/serve/load.js$domain=mcclatchydc.com +@@||open.video^$script,~third-party +@@||optimatic.com/iframe.html$subdocument,domain=pch.com +@@||optimatic.com/redux/optiplayer-$domain=pch.com +@@||optimatic.com/shell.js$domain=pch.com +@@||optout.networkadvertising.org^$document +@@||p.d.1emn.com^$script,domain=hotair.com +@@||pagead2.googlesyndication.com/gampad/ads?*laurelberninteriors.com*&iu=%2F18190176%2C22509719621%2FAdThrive_Video_Collapse_Autoplay_$domain=imasdk.googleapis.com +@@||pagead2.googlesyndication.com/gampad/ads?*laurelberninteriors.com*&iu=%2F18190176%2C22509719621%2FAdThrive_Video_In-Post_ClicktoPlay_$domain=imasdk.googleapis.com +@@||pandora.com/images/public/devicead/$image +@@||patreonusercontent.com/*.gif?token-$image,domain=patreon.com +@@||payload.cargocollective.com^$image,~third-party +@@||pbs.twimg.com/ad_img/$image,xmlhttprequest +@@||pepperjamnetwork.com/banners/$image,domain=extrarebates.com +@@||photofunia.com/effects/$image,~third-party +@@||pjtra.com/b/$image,domain=extrarebates.com +@@||player.aniview.com/script/$script,domain=odysee.com|pogo.com +@@||player.avplayer.com^$script,domain=explosm.net|gamingbible.co.uk|justthenews.com|ladbible.com|tiz-cycling-live.io +@@||player.ex.co/player/$script,domain=mm-watch.com|theautopian.com|usatoday.com|ydr.com +@@||player.odycdn.com/api/$xmlhttprequest,domain=odysee.com +@@||playwire.com/bolt/js/zeus/embed.js$script,third-party +@@||pngimg.com/distr/$image,~third-party +@@||pntrac.com/b/$image,domain=extrarebates.com +@@||pntrs.com/b/$image,domain=extrarebates.com +@@||poastcdn.org/ad/$image,domain=poa.st +@@||portal.autotrader.co.uk/advert/$~third-party +@@||powersports.honda.com/js/*/Popup2.js$~third-party +@@||prebid.adnxs.com^$xmlhttprequest,domain=go.cnn.com +@@||preromanbritain.com/maxymiser/$~third-party +@@||promo.com/embed/$subdocument,third-party +@@||promo.zendesk.com^$xmlhttprequest,domain=promo.com +@@||pub.doubleverify.com/dvtag/$script,domain=bbc.com|time.com +@@||pub.pixels.ai/wrap-independent-no-prebid-lib.js$script,domain=independent.co.uk +@@||radiotimes.com/static/advertising/$script,~third-party +@@||raw.githubusercontent.com^$domain=viewscreen.githubusercontent.com +@@||redventures.io/lib/dist/prod/bidbarrel-$script,domain=cnet.com|zdnet.com +@@||renewcanceltv.com/porpoiseant/banger.js$script,~third-party +@@||rubiconproject.com/prebid/dynamic/$script,domain=ask.com|journaldequebec.com +@@||runescape.wiki^$image,~third-party +@@||s.confluency.site/*.com/4/js/$script +@@||s.ntv.io/serve/load.js$domain=titantv.com +@@||salfordonline.com/wp-content/plugins/wp_pro_ad_system/$script +@@||schwab.com/scripts/appdynamic/adrum-ext.$script,~third-party +@@||scrippsdigital.com/cms/videojs/$stylesheet,domain=scrippsdigital.com +@@||sdltutorials.com/Data/Ads/AppStateBanner.jpg$~third-party +@@||securenetsystems.net/v5/scripts/ +@@||shaka-player-demo.appspot.com/lib/ads/ad_manager.js$script,~third-party +@@||showcase.codethislab.com/banners/$image,~third-party +@@||shreemaruticourier.com/banners/$~third-party +@@||signin.verizon.com^*/affiliate/$subdocument,xmlhttprequest +@@||solutions.cdn.optable.co/ezoic/sdk.js$domain=open.video +@@||somewheresouth.net/banner/banner.php$image +@@||sportsnet.ca/wp-content/plugins/bwp-minify/$domain=sportsnet.ca +@@||standard.co.uk/js/third-party/prebid8.$~third-party +@@||startrek.website/pictrs/image/$xmlhttprequest +@@||stat-rock.com/player/$domain=4shared.com|adplayer.pro +@@||static.doubleclick.net/instream/ad_status.js$script,domain=ignboards.com +@@||static.vrv.co^$media,domain=crunchyroll.com +@@||summitracing.com/global/images/bannerads/ +@@||sundaysportclassifieds.com/ads/$image,~third-party +@@||survey.g.doubleclick.net^$script,domain=sporcle.com +@@||synchrobox.adswizz.com/register2.php$script,domain=player.amperwave.net|tunein.com +@@||tcbk.com/application/files/4316/7521/1922/Q1-23-CD-Promo-Banner-Ad.png^$~third-party +@@||thdstatic.com/experiences/local-ad/$domain=homedepot.com +@@||thedailybeast.com/pf/resources/js/ads/arcads.js$~third-party +@@||thepiratebay.org/cdn-cgi/challenge-platform/$~third-party +@@||thetvdb.com/banners/$image,domain=tvtime.com +@@||thisiswaldo.com/static/js/$script,domain=bestiefy.com +@@||townhall.com/resources/dist/js/prebid-pjmedia.js$script,domain=pjmedia.com +@@||tpc.googlesyndication.com/pagead/js/*/elements/html/interstitial_ad_frame_$script,domain=safeframe.googlesyndication.com +@@||tractorshed.com/photoads/upload/$~third-party +@@||tradingview.com/adx/$subdocument,domain=adx.ae +@@||trustprofile.com/banners/$image +@@||ukbride.co.uk/css/*/adverts.css +@@||unpkg.com^$script,domain=vidsrc.stream +@@||upload.wikimedia.org/wikipedia/$image,media +@@||v.fwmrm.net/?$xmlhttprequest +@@||v.fwmrm.net/ad/g/*Nelonen$script +@@||v.fwmrm.net/ad/g/1$domain=uktv.co.uk|vevo.com +@@||v.fwmrm.net/ad/g/1?*mtv_desktop$xmlhttprequest +@@||v.fwmrm.net/ad/g/1?csid=vcbs_cbsnews_desktop_$xmlhttprequest +@@||v.fwmrm.net/ad/p/1?$domain=cc.com|channel5.com|cmt.com|eonline.com|foodnetwork.com|nbcnews.com|ncaa.com|player.theplatform.com|simpsonsworld.com|today.com +@@||v.fwmrm.net/crossdomain.xml$xmlhttprequest +@@||videosvc.ezoic.com/play?videoID=$domain=open.video +@@||vms-players.minutemediaservices.com^$script,domain=si.com +@@||vms-videos.minutemediaservices.com^$xmlhttprequest,domain=si.com +@@||warpwire.com/AD/ +@@||warpwire.net/AD/ +@@||web-ads.pulse.weatherbug.net/api/ads/targeting/$domain=weatherbug.com +@@||webbtelescope.org/files/live/sites/webb/$image,~third-party +@@||widgets.jobbio.com^*/display.min.js$domain=interestingengineering.com +@@||worldgravity.com^$script,domain=hotstar.com +@@||wrestlinginc.com/wp-content/themes/unified/js/prebid.js$~third-party +@@||www.google.*/search?$xmlhttprequest,domain=google.ae|google.at|google.be|google.bg|google.by|google.ca|google.ch|google.cl|google.co.id|google.co.il|google.co.in|google.co.jp|google.co.ke|google.co.kr|google.co.nz|google.co.th|google.co.uk|google.co.ve|google.co.za|google.com|google.com.ar|google.com.au|google.com.br|google.com.co|google.com.ec|google.com.eg|google.com.hk|google.com.mx|google.com.my|google.com.pe|google.com.ph|google.com.pk|google.com.py|google.com.sa|google.com.sg|google.com.tr|google.com.tw|google.com.ua|google.com.uy|google.com.vn|google.cz|google.de|google.dk|google.dz|google.ee|google.es|google.fi|google.fr|google.gr|google.hr|google.hu|google.ie|google.it|google.lt|google.lv|google.nl|google.no|google.pl|google.pt|google.ro|google.rs|google.ru|google.se|google.sk +@@||www.google.com/ads/preferences/$image,script,subdocument +@@||yaytrade.com^*/chunks/pages/advert/$~third-party +@@||yieldlove.com/v2/yieldlove.js$script,domain=whatismyip.com +@@||yimg.com/rq/darla/*/g-r-min.js$domain=yahoo.com +@@||zeebiz.com/ads/$image,~third-party +@@||zohopublic.com^*/ADManager_$subdocument,xmlhttprequest,domain=manageengine.com|zohopublic.com +! Webcompat fixes (Avoid any potential filters being applied to non-ad domains) +@@||challenges.cloudflare.com/turnstile/$script +@@||google.com/recaptcha/$csp,subdocument +@@||google.com/recaptcha/api.js +@@||google.com/recaptcha/api2/ +@@||google.com/recaptcha/enterprise.js +@@||google.com/recaptcha/enterprise/ +@@||gstatic.com/recaptcha/ +@@||hcaptcha.com/captcha/$script,subdocument +@@||hcaptcha.com^*/api.js +@@||recaptcha.net/recaptcha/$script +@@||search.brave.com/search$xmlhttprequest +@@||ui.ads.microsoft.com^$~third-party +! Webcompat Generichide fixes (Avoid any potential filters being applied to non-ad domains) +@@://10.0.0.$generichide +@@://10.1.1.$generichide +@@://127.0.0.1$generichide +@@://192.168.$generichide +@@://localhost/$generichide +@@://localhost:$generichide +@@||accounts.google.com^$generichide +@@||ads.microsoft.com^$generichide +@@||adsmanager.facebook.com^$generichide +@@||amazon.ae^$generichide +@@||amazon.ca^$generichide +@@||amazon.cn^$generichide +@@||amazon.co.jp^$generichide +@@||amazon.co.uk^$generichide +@@||amazon.com.au^$generichide +@@||amazon.com.br^$generichide +@@||amazon.com.mx^$generichide +@@||amazon.com.tr^$generichide +@@||amazon.com^$generichide +@@||amazon.de^$generichide +@@||amazon.eg^$generichide +@@||amazon.es^$generichide +@@||amazon.fr^$generichide +@@||amazon.in^$generichide +@@||amazon.it^$generichide +@@||amazon.nl^$generichide +@@||amazon.pl^$generichide +@@||amazon.sa^$generichide +@@||amazon.se^$generichide +@@||amazon.sg^$generichide +@@||apple.com^$generichide +@@||atlassian.net^$generichide +@@||bing.com^$generichide +@@||bitbucket.org^$generichide +@@||boot.dev^$generichide +@@||browserbench.org^$generichide +@@||builder.io^$generichide +@@||calendar.google.com^$generichide +@@||canva.com^$generichide +@@||carbuzz.com^$generichide +@@||cbs.com^$generichide +@@||cdpn.io^$generichide +@@||challenges.cloudflare.com^$generichide +@@||chatgpt.com^$generichide +@@||claude.ai^$generichide +@@||cloud.google.com^$generichide +@@||codepen.io^$generichide +@@||codesandbox.io^$generichide +@@||console.cloud.google.com^$generichide +@@||contacts.google.com^$generichide +@@||curiositystream.com^$generichide +@@||deezer.com^$generichide +@@||discord.com^$generichide +@@||discoveryplus.com^$generichide +@@||disneyplus.com^$generichide +@@||docs.google.com^$generichide +@@||drive.google.com^$generichide +@@||dropbox.com^$generichide +@@||facebook.com^$generichide +@@||fastmail.com^$generichide +@@||figma.com^$generichide +@@||freecodecamp.org^$generichide +@@||gemini.google.com^$generichide +@@||github.com^$generichide +@@||github.io^$generichide +@@||gitlab.com^$generichide +@@||gmail.com^$generichide +@@||icloud.com^$generichide +@@||instagram.com^$generichide +@@||instapundit.com^$generichide +@@||instawp.xyz^$generichide +@@||jsfiddle.net^$generichide +@@||mail.google.com^$generichide +@@||material.angular.io^$generichide +@@||material.io^$generichide +@@||matlab.mathworks.com^$generichide +@@||max.com^$generichide +@@||meet.google.com^$generichide +@@||morphic.sh^$generichide +@@||mui.com^$generichide +@@||music.amazon.$generichide +@@||music.youtube.com^$generichide +@@||myaccount.google.com^$generichide +@@||nebula.tv^$generichide +@@||netflix.com^$generichide +@@||notebooklm.google.com^$generichide +@@||notion.so^$generichide +@@||oisd.nl^$generichide +@@||onedrive.live.com^$generichide +@@||open.spotify.com^$generichide +@@||pandora.com^$generichide +@@||paramountplus.com^$generichide +@@||peacocktv.com^$generichide +@@||photos.google.com^$generichide +@@||pinterest.com^$generichide +@@||playcode.io^$generichide +@@||proton.me^$generichide +@@||proxmox.local^$generichide +@@||publicwww.com^$generichide +@@||qobuz.com^$generichide +@@||reddit.com^$generichide +@@||riverside.fm^$generichide +@@||slack.com^$generichide +@@||sourcegraph.com^$generichide +@@||stackblitz.com^$generichide +@@||startpage.com^$generichide +@@||tailscale.com^$generichide +@@||teams.live.com^$generichide +@@||teams.microsoft.com^$generichide +@@||testufo.com^$generichide +@@||tidal.com^$generichide +@@||tiktok.com^$generichide +@@||tubitv.com^$generichide +@@||tv.youtube.com^$generichide +@@||twitch.tv^$generichide +@@||web.basemark.com^$generichide +@@||web.telegram.org^$generichide +@@||webex.com^$generichide +@@||whatsapp.com^$generichide +@@||wikibooks.org^$generichide +@@||wikidata.org^$generichide +@@||wikinews.org^$generichide +@@||wikipedia.org^$generichide +@@||wikiquote.org^$generichide +@@||wikiversity.org^$generichide +@@||wiktionary.org^$generichide +@@||www.youtube.com^$generichide +@@||x.com^$generichide +! wordpress.org https://wordpress.org/plugins/woocommerce-google-adwords-conversion-tracking-tag/ +@@||ps.w.org^$image,domain=wordpress.org +@@||s.w.org/wp-content/$stylesheet,domain=wordpress.org +@@||wordpress.org/plugins/$domain=wordpress.org +@@||wordpress.org/stats/plugin/$domain=wordpress.org +! Fingerprint checks +@@||fingerprintjs.com^$generichide +@@||schemeflood.com^$generichide +! Admiral baits +@@||succeedscene.com^$script +! uBO-CNAME (Specific allowlists) +@@||akinator.mobi.cdn.ezoic.net^$domain=akinator.mobi +@@||banner.customer.kyruus.com^$domain=doctors.bannerhealth.com +@@||hwcdn.net^$script,domain=mp4upload.com +! ezfunnels.com (https://forums.lanik.us/viewtopic.php?f=64&t=44355) +@@||ezsoftwarestorage.com^$image,media,domain=ezfunnels.com +! Memo2 +@@||ads.memo2.nl/banners/$subdocument +! allow vk.com to confirm age. +! https://forums.lanik.us/viewtopic.php?p=131491#p131491 +@@||oauth.vk.com/authorize? +! Downdetector Consent +@@||googletagservices.com/tag/js/gpt.js$domain=allestoringen.be|allestoringen.nl|downdetector.ae|downdetector.ca|downdetector.cl|downdetector.co.nz|downdetector.co.uk|downdetector.co.za|downdetector.com|downdetector.com.ar|downdetector.com.au|downdetector.com.br|downdetector.com.co|downdetector.cz|downdetector.dk|downdetector.ec|downdetector.es|downdetector.fi|downdetector.fr|downdetector.gr|downdetector.hk|downdetector.hr|downdetector.hu|downdetector.id|downdetector.ie|downdetector.in|downdetector.it|downdetector.jp|downdetector.mx|downdetector.my|downdetector.no|downdetector.pe|downdetector.ph|downdetector.pk|downdetector.pl|downdetector.pt|downdetector.ro|downdetector.ru|downdetector.se|downdetector.sg|downdetector.sk|downdetector.tw|downdetector.web.tr|xn--allestrungen-9ib.at|xn--allestrungen-9ib.ch|xn--allestrungen-9ib.de +! Generichide +@@||adblockplus.org^$generichide +@@||aetv.com^$generichide +@@||apkmirror.com^$generichide +@@||brighteon.com^$generichide +@@||cwtv.com^$generichide +@@||destinationamerica.com^$generichide +@@||geekzone.co.nz^$generichide +@@||history.com^$generichide +@@||megaup.net^$generichide +@@||nfl.com^$generichide +@@||sciencechannel.com^$generichide +@@||smallseotools.com^$generichide +@@||sonichits.com^$generichide +@@||soranews24.com^$generichide +@@||taboolanews.com/feed/summary?publisherId=Taboola_samsung-carnival-us&key=Taboola&viewID=$generichide +@@||taboolanews.com/summary-page/*_samsung-carnival-$generichide +@@||thefreedictionary.com^$generichide +@@||tlc.com^$generichide +@@||yibada.com^$generichide +! Search engine generichide (allowing searching of ad items) +@@||bing.com/search?$generichide +@@||duckduckgo.com/?q=$generichide +@@||www.google.*/search?$generichide +@@||yandex.com/search/?$generichide +! Anti-Adblock (Applicable to Adult, file hosting, streaming/torrent sites) +@@/wp-content/plugins/blockalyzer-adblock-counter/*$image,script,~third-party,domain=~gaytube.com|~pornhub.com|~pornhubthbh7ap3u.onion|~redtube.com|~redtube.com.br|~tube8.com|~tube8.es|~tube8.fr|~xtube.com|~youjizz.com|~youporn.com|~youporngay.com +@@||adtng.com/get/$subdocument,domain=hanime.tv +@@||artnet.com^$generichide +@@||az.hp.transer.com/content/dam/isetan_mitsukoshi/advertise/$~third-party +@@||az.hpcn.transer-cn.com/content/dam/isetan_mitsukoshi/advertise/$~third-party +@@||cdnqq.net/ad/api/popunder.js$script +@@||centro.co.il^$generichide +@@||coinmarketcap.com/static/addetect/$script,~third-party +@@||dlh.net^$script,subdocument,domain=dlh.net +@@||dragontea.ink^$generichide +@@||exponential.com^*/tags.js$domain=yellowbridge.com +@@||games.pch.com^$generichide +@@||maxstream.video^$generichide +@@||receiveasms.com^$generichide +@@||sc2casts.com^$generichide +@@||spanishdict.com^$generichide +@@||stream4free.live^$generichide +@@||up-load.io^$generichide +@@||userload.co/adpopup.js$script +@@||waaw.to/adv/ads/popunder.js$script +@@||yandexcdn.com/ad/api/popunder.js$script +@@||yellowbridge.com^$generichide +@@||yimg.com/dy/ads/native.js$script,domain=animedao.to +! Gladly.io New Tab extension (https://tab.gladly.io/) +! Don't install Gladly extension if you don't like ads. +@@||tab.gladly.io/newtab/|$document,subdocument +!! adsninja fix +@@$generichide,domain=androidpolice.com|babygaga.com|backyardboss.net|carbuzz.com|cbr.com|collider.com|dualshockers.com|footballfancast.com|footballleagueworld.co.uk|gamerant.com|givemesport.com|hardcoregamer.com|hotcars.com|howtogeek.com|makeuseof.com|moms.com|movieweb.com|pocket-lint.com|pocketnow.com|screenrant.com|simpleflying.com|thegamer.com|therichest.com|thesportster.com|thethings.com|thetravel.com|topspeed.com|xda-developers.com +@@||adsninja.ca/ads_$script,domain=androidpolice.com|babygaga.com|backyardboss.net|carbuzz.com|cbr.com|collider.com|dualshockers.com|footballfancast.com|footballleagueworld.co.uk|gamerant.com|givemesport.com|hardcoregamer.com|hotcars.com|howtogeek.com|makeuseof.com|moms.com|movieweb.com|pocket-lint.com|pocketnow.com|screenrant.com|simpleflying.com|thegamer.com|therichest.com|thesportster.com|thethings.com|thetravel.com|topspeed.com|xda-developers.com +@@||adsninja.ca/adsninja_client.js$script,domain=androidpolice.com|babygaga.com|backyardboss.net|carbuzz.com|cbr.com|collider.com|dualshockers.com|footballfancast.com|footballleagueworld.co.uk|gamerant.com|givemesport.com|hardcoregamer.com|hotcars.com|howtogeek.com|makeuseof.com|moms.com|movieweb.com|pocket-lint.com|pocketnow.com|screenrant.com|simpleflying.com|thegamer.com|therichest.com|thesportster.com|thethings.com|thetravel.com|topspeed.com|xda-developers.com +@@||adsninja.ca^$stylesheet,xmlhttprequest,domain=androidpolice.com|babygaga.com|backyardboss.net|carbuzz.com|cbr.com|collider.com|dualshockers.com|footballfancast.com|footballleagueworld.co.uk|gamerant.com|givemesport.com|hardcoregamer.com|hotcars.com|howtogeek.com|makeuseof.com|moms.com|movieweb.com|pocket-lint.com|pocketnow.com|screenrant.com|simpleflying.com|thegamer.com|therichest.com|thesportster.com|thethings.com|thetravel.com|topspeed.com|xda-developers.com +!! imasdk.googleapis.com/js/sdkloader/ima3.js +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$domain=247sports.com|airtelxstream.in|antena3.ro|api.screen9.com|asianctv.upns.pro|asianembed.cam|autokult.pl|bbc.com|blastingnews.com|bloomberg.co.jp|bloomberg.com|bsfuji.tv|cbc.ca|cbsnews.com|cbssports.com|chicagotribune.com|clickorlando.com|cnet.com|crunchyroll.com|delish.com|digi24.ro|distro.tv|doubtnut.com|einthusan.tv|etonline.com|farfeshplus.com|fastcompany.com|filmweb.pl|france24.com|game.pointmall.rakuten.net|gamebox.gesoten.com|gamepix.com|gameplayneo.com|games.usatoday.com|gbnews.com|geo.dailymotion.com|givemesport.com|goodmorningamerica.com|goodstream.uno|gospodari.com|haberler.com|howstuffworks.com|humix.com|ignboards.com|iheart.com|insideedition.com|irctc.co.in|jilliandescribecompany.com|klix.ba|ktla.com|kxan.com|laurelberninteriors.com|lemino.docomo.ne.jp|locipo.jp|maharashtratimes.com|maxpreps.com|metacritic.com|minigame.aeriagames.jp|missoulian.com|myspace.com|nettavisen.no|newsweek.com|njbeachcams.com|open.video|paralympic.org|paramountplus.com|player.abacast.net|player.amperwave.net|player.earthtv.com|player.performgroup.com|plex.tv|pointmall.rakuten.co.jp|realmadrid.com|rfi.fr|root.cz|rte.ie|rumble.com|s.yimg.jp|scrippsdigital.com|sonyliv.com|southpark.lat|southparkstudios.com|spiele.heise.de|sportsbull.jp|sportsport.ba|stirr.com|success-games.net|synk-casualgames.com|tbs.co.jp|tdn.com|thecw.com|truvid.com|tubitv.com|tunein.com|tv-asahi.co.jp|tv.abcnyheter.no|tv.finansavisen.no|tv.rakuten.co.jp|tver.jp|tvp.pl|univtec.com|utsports.com|video.tv-tokyo.co.jp|vlive.tv|watch.nba.com|wbal.com|weather.com|webdunia.com|wellgames.com|worldsurfleague.com|wowbiz.ro|wsj.com|wtk.pl|zdnet.com|zeebiz.com +!! https://adssettings.google.com/anonymous?hl=en +@@||googleads.g.doubleclick.net/ads/controlcookies/getcookies$domain=adssettings.google.com +@@||googleads.g.doubleclick.net/ads/preferences/$domain=googleads.g.doubleclick.net +!! imasdk.googleapis.com/js/sdkloader/ima3_dai.js +@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$domain=247sports.com|4029tv.com|bet.com|bloomberg.co.jp|bloomberg.com|cbc.ca|cbssports.com|cc.com|clickorlando.com|digi24.ro|gbnews.com|history.com|kcci.com|kcra.com|ketv.com|kmbc.com|koat.com|koco.com|ksbw.com|mynbc5.com|paramountplus.com|s.yimg.jp|sbs.com.au|sonyliv.com|tv.rakuten.co.jp|vk.sportsbull.jp|wapt.com|watchcharge.com|wbaltv.com|wcvb.com|wdsu.com|wesh.com|wgal.com|wisn.com|wjcl.com|wlky.com|wlwt.com|wmtw.com|wmur.com|worldsurfleague.com|wpbf.com|wtae.com|wvtm13.com|wxii12.com|wyff4.com +!! pubads.g.doubleclick.net/ondemand/hls/ +@@||pubads.g.doubleclick.net/ondemand/hls/$domain=history.com +!! ||imasdk.googleapis.com/js/core/bridge +@@||imasdk.googleapis.com/js/core/bridge*.html$subdocument,domain=~airtelxstream.in|~danet.vn|~einthusan.tv|~spotify.com +!! ||imasdk.googleapis.com/pal/sdkloader/pal.js +@@||imasdk.googleapis.com/pal/sdkloader/pal.js$domain=pluto.tv|stirr.com|tunein.com +!! imasdk.googleapis.com/js/sdkloader/ima3_debug.js +@@||imasdk.googleapis.com/js/sdkloader/ima3_debug.js$domain=brightcove.net|cbsnews.com|embed.sportsline.com|insideedition.com|pch.com|utsports.com +!! https://github.com/uBlockOrigin/uAssets/issues/18541 +!! cbssports.com|newson.us|worldsurfleague.com +@@||pubads.g.doubleclick.net/ssai/ +!! +@@||pagead2.googlesyndication.com/tag/js/gpt.js$script,domain=wunderground.com +!! g.doubleclick.net/tag/js/gpt.js +@@||g.doubleclick.net/tag/js/gpt.js$script,xmlhttprequest,domain=accuweather.com|adamtheautomator.com|bestiefy.com|blastingnews.com|blog.nicovideo.jp|bloomberg.com|chromatographyonline.com|cornwalllive.com|devclass.com|digitaltrends.com|edy.rakuten.co.jp|epaper.timesgroup.com|euronews.com|filmweb.pl|formularywatch.com|games.coolgames.com|gearpatrol.com|hoyme.jp|journaldequebec.com|kino.de|laurelberninteriors.com|managedhealthcareexecutive.com|medicaleconomics.com|metropcs.mobi|newsweek.com|nycgo.com|olx.pl|physicianspractice.com|repretel.com|samsclub.com|spiegel.de|standard.co.uk|telsu.fi|thestreet.com|theta.tv|weather.com|wralsportsfan.com +!! googletagservices.com/tag/js/gpt.js +@@||googletagservices.com/tag/js/gpt.js$domain=chegg.com|chelseafc.com|epaper.timesgroup.com|farfeshplus.com|k2radio.com|koel.com|kowb1290.com|nationalreview.com|nationalworld.com|nbcsports.com|scotsman.com|tv-asahi.co.jp|uefa.com|vimeo.com|vlive.tv|voici.fr|windalert.com +!! g.doubleclick.net/gpt/pubads_impl_ +@@||g.doubleclick.net/gpt/pubads_impl_$domain=accuweather.com|blastingnews.com|bloomberg.com|chelseafc.com|chromatographyonline.com|cornwalllive.com|digitaltrends.com|downdetector.com|edy.rakuten.co.jp|epaper.timesgroup.com|formularywatch.com|game.anymanager.io|games.coolgames.com|managedhealthcareexecutive.com|medicaleconomics.com|nationalreview.com|nationalworld.com|nbcsports.com|nycgo.com|physicianspractice.com|scotsman.com|telsu.fi|voici.fr|weather.com +!! g.doubleclick.net/pagead/managed/js/gpt/ +@@||g.doubleclick.net/pagead/managed/js/gpt/$script,domain=adamtheautomator.com|allestoringen.be|allestoringen.nl|aussieoutages.com|canadianoutages.com|downdetector.ae|downdetector.ca|downdetector.co.nz|downdetector.co.uk|downdetector.co.za|downdetector.com|downdetector.com.ar|downdetector.com.br|downdetector.dk|downdetector.es|downdetector.fi|downdetector.fr|downdetector.hk|downdetector.ie|downdetector.in|downdetector.it|downdetector.jp|downdetector.mx|downdetector.no|downdetector.pl|downdetector.pt|downdetector.ru|downdetector.se|downdetector.sg|downdetector.tw|downdetector.web.tr|euronews.com|filmweb.pl|hoyme.jp|ictnews.org|journaldequebec.com|kino.de|samsclub.com|spiegel.de|thestar.co.uk|thestreet.com|xn--allestrungen-9ib.at|xn--allestrungen-9ib.ch|xn--allestrungen-9ib.de|yorkshirepost.co.uk +!! g.doubleclick.net/pagead/managed/js/gpt/*/pubads_impl.js +@@||g.doubleclick.net/pagead/managed/js/gpt/*/pubads_impl.js$domain=blog.nicovideo.jp|laurelberninteriors.com|metropcs.mobi +!! googleads.g.doubleclick.net/pagead/html/*/zrt_lookup_ +@@||googleads.g.doubleclick.net/pagead/html/*/zrt_lookup_$subdocument,domain=ycp.synk-casualgames.com +!! pagead2.googlesyndication.com/pagead/js/adsbygoogle.js +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$domain=allb.game-db.tw|battlecats-db.com|cpu-world.com|game.anymanager.io|games.wkb.jp|html5.gamedistribution.com|knowfacts.info|lacoste.com|megagames.com|megaleech.us|newson.us|radioviainternet.nl|real-sports.jp|slideplayer.com|sudokugame.org|tampermonkey.net|thefreedictionary.com|ycp.synk-casualgames.com +!! pagead2.googlesyndication.com/pagead/managed/js/*/show_ads_impl +@@||pagead2.googlesyndication.com/pagead/managed/js/*/show_ads_impl$script,domain=battlecats-db.com|game.anymanager.io|games.wkb.jp|sudokugame.org|ycp.synk-casualgames.com +!! pagead2.googlesyndication.com/pagead/managed/js/adsense/*/slotcar_library_ +@@||pagead2.googlesyndication.com/pagead/managed/js/adsense/*/slotcar_library_$script,domain=game.anymanager.io|sudokugame.org|ycp.synk-casualgames.com +!! +@@||pagead2.googlesyndication.com/pagead/managed/js/gpt/*/pubads_impl.js?$script,domain=wunderground.com +!! g.doubleclick.net/pagead/ppub_config +@@||g.doubleclick.net/pagead/ppub_config$domain=bloomberg.com|independent.co.uk|repretel.com|telsu.fi|weather.com +!! ads-twitter.com/uwt.js +@@||ads-twitter.com/uwt.js$domain=aussiebum.com|factory.pixiv.net +! Non-English +@@/banner/ad/*$image,domain=achaloto.com +@@||about.smartnews.com/ja/wp-content/assets/img/advertisers/ad_$~third-party +@@||ad-api-v01.uliza.jp^$script,xmlhttprequest,domain=golfnetwork.co.jp|tv-asahi.co.jp +@@||ad.atown.jp/adserver/$domain=ad.atown.jp +@@||ad.smartmediarep.com/NetInsight/video/smr$domain=programs.sbs.co.kr +@@||adfurikun.jp/adfurikun/images/$~third-party +@@||ads-i.org/images/ads3.jpg$~third-party +@@||ads-twitter.com/oct.js$domain=ncsoft.jp +@@||adsdk.microsoft.com/ast/ast.js$script,domain=prisjakt.no +@@||adtraction.com^$image,domain=ebjudande.se +@@||aeradot.ismcdn.jp/resources/aeradigital/css/smartphone/ad.css?$domain=dot.asahi.com +@@||aiasahi.jp/ads/$image,domain=japan.zdnet.com +@@||amebame.com/pub/ads/$image,domain=abema.tv|ameba.jp|ameblo.jp +@@||api.friends.ponta.jp/api/$~third-party +@@||arukikata.com/images_ad/$image,~third-party +@@||asahi.com/ads/$image,~third-party +@@||ascii.jp/img/ad/$image,~third-party +@@||assoc-amazon.com/widgets/cm?$subdocument,domain=atcoder.jp +@@||astatic.ccmbg.com^*/prebid$script,domain=linternaute.com +@@||banki.ru/bitrix/*/advertising.block/$stylesheet +@@||bihoku-minpou.co.jp/img/ad_top.jpg$~third-party +@@||bloominc.jp/adtool/$~third-party +@@||book.com.tw/image/getImage?$domain=books.com.tw +@@||c.ad6media.fr/l.js$domain=scan-manga.com +@@||candidate.hr-manager.net/Advertisement/PreviewAdvertisement.aspx$subdocument,~third-party +@@||catchapp.net/ad/img/$~third-party +@@||cdn.jsdelivr.net/npm/*/videojs-contrib-ads.min.js$domain=24ur.com +@@||cinema.pia.co.jp/img/ad/$image,~third-party +@@||clj.valuecommerce.com/*/vcushion.min.js +@@||cloudflare.com^*/videojs-contrib-ads.js$domain=wtk.pl|zeam.com +@@||copilog2.jp/*/webroot/ad_img/$domain=ikkaku.net +@@||core.windows.net^*/annonser/$image,domain=kmauto.no +@@||discordapp.com/banners/$image +@@||doda.jp/brand/ad/img/icon_play.png +@@||doda.jp/cmn_web/img/brand/ad/ad_text_ +@@||doda.jp/cmn_web/img/brand/ad/ad_top_3.mp4 +@@||econcal.forexprostools.com^$domain=bloomberg.com +@@||forexprostools.com^$subdocument,domain=fx-rashinban.com +@@||freeride.se/img/admarket/$~third-party +@@||friends.ponta.jp/app/assets/images/$~third-party +@@||g.doubleclick.net/gampad/ads?$domain=blog.nicovideo.jp|edy.rakuten.co.jp|tv-tokyo.co.jp|voici.fr +@@||g.doubleclick.net/gampad/live/ads?*%2Flemino_instr%$domain=imasdk.googleapis.com +@@||gakushuin.ac.jp/ad/common/$~third-party +@@||gammaplus.takeshobo.co.jp/img/ad/$~third-party +@@||ganma.jp/view/magazine/viewer/pages/advertisement/googleAdSense.html|$~third-party,xmlhttprequest +@@||getjad.io/library/$script,domain=allocine.fr +@@||go.ezodn.com/beardeddragon/basilisk.js$domain=humix.com +@@||googleadservices.com/pagead/conversion.js$domain=ncsoft.jp +@@||gunosy.co.jp/img/ad/$image,~third-party +@@||h1g.jp/img/ad/ad_heigu.html$~third-party +@@||hinagiku-u.ed.jp/wp54/wp-content/themes/hinagiku/images/$image,~third-party +@@||ias.global.rakuten.com/adv/$script,domain=rakuten.co.jp +@@||iejima.org/ad-banner/$image,~third-party +@@||ienohikari.net/ad/common/$~third-party +@@||ienohikari.net/ad/img/$~third-party +@@||iko-yo.net/system/ad_images/$~third-party +@@||img.rakudaclub.com/adv/$~third-party +@@||infotop.jp/html/ad/$image,~third-party +@@||intelyvale.com.mx/ads/images/$domain=valesdegasolina.mx +@@||jmedj.co.jp/files/$image,~third-party +@@||jobs.bg/front_job_search.php$~third-party +@@||kabumap.com/servlets/kabumap/html/common/img/ad/$~third-party +@@||kanalfrederikshavn.dk^*/jquery.openx.js? +@@||kincho.co.jp/cm/img/bnr_ad_$image,~third-party +@@||ladsp.com/script-sf/$script,domain=str.toyokeizai.net +@@||live.lequipe.fr/thirdparty/prebid.js$~third-party +@@||lostpod.space/static/streaming-playlists/$domain=videos.john-livingston.fr +@@||mail.bg/mail/index/getads/$xmlhttprequest +@@||microapp.bytedance.com/docs/page-data/$~third-party +@@||minigame.aeriagames.jp/*/ae-tpgs-$~third-party +@@||minigame.aeriagames.jp/css/videoad.css +@@||minyu-net.com/parts/ad/banner/$image,~third-party +@@||mistore.jp/content/dam/isetan_mitsukoshi/advertise/$~third-party +@@||mjhobbymassan.se/r/annonser/$image,~third-party +@@||musictrack.jp/a/ad/banner_member.jpg +@@||mysmth.net/nForum/*/ADAgent_$~third-party +@@||netmile.co.jp/ad/images/$image +@@||nintendo.co.jp/ring/*/adv$~third-party +@@||nizista.com/api/v1/adbanner$~third-party +@@||oishi-kenko.com/kenko/assets/v2/ads/$~third-party +@@||point.rakuten.co.jp/img/crossuse/top_ad/$~third-party +@@||politiken.dk/static/$script +@@||popin.cc/popin_discovery/recommend?$~third-party +@@||przegladpiaseczynski.pl/wp-content/plugins/wppas/$~third-party +@@||r10s.jp/share/themes/ds/js/show_ads_randomly.js$domain=travel.rakuten.co.jp +@@||rakudaclub.com/img.php?url=https://img.rakudaclub.com/adv/$~third-party +@@||rakuten-bank.co.jp/rb/ams/img/ad/$~third-party +@@||s.yimg.jp/images/listing/tool/yads/yads-timeline-ex.js$domain=yahoo.co.jp +@@||s0.2mdn.net/ads/studio/Enabler.js$domain=yuukinohana.co.jp +@@||safeframe.googlesyndication.com/safeframe/$domain=blog.nicovideo.jp +@@||sanyonews.jp/files/image/ad/okachoku.jpg$~third-party +@@||search.spotxchange.com/vmap/*&content_page_url=www.bsfuji.tv$xmlhttprequest,domain=imasdk.googleapis.com +@@||shikoku-np.co.jp/img/ad/$~third-party +@@||site-banner.hange.jp/adshow?$domain=animallabo.hange.jp +@@||smartadserver.com/genericpost$domain=filmweb.pl +@@||so-net.ne.jp/access/hikari/minico/ad/images/$~third-party +@@||stats.g.doubleclick.net/dc.js$script,domain=chintaistyle.jp|gyutoro.com +@@||suntory.co.jp/beer/kinmugi/css2020/ad.css? +@@||suntory.co.jp/beer/kinmugi/img/ad/$image,~third-party +@@||tdn.da-services.ch/libs/prebid8.$script,domain=20min.ch +@@||tenki.jp/storage/static-images/top-ad/ +@@||totalvene.fi/media/yendifvideoshare/adverts/$~third-party +@@||tpc.googlesyndication.com/archive/$image,subdocument,xmlhttprequest,domain=adstransparency.google.com +@@||tpc.googlesyndication.com/archive/sadbundle/$image,domain=tpc.googlesyndication.com +@@||tpc.googlesyndication.com/pagead/js/$domain=googleads.g.doubleclick.net +@@||tra.scds.pmdstatic.net/advertising-core/$domain=voici.fr +@@||trj.valuecommerce.com/vcushion.js +@@||uze-ads.com/ads/$~third-party +@@||valuecommerce.com^$image,domain=pointtown.com +@@||videosvc.ezoic.com/play?videoID=$domain=humix.com +@@||widget.playoncenter.com/webservice/geo$xmlhttprequest,domain=hipertextual.com +@@||yads.c.yimg.jp/js/yads-async.js$domain=kobe-np.co.jp|yahoo.co.jp +@@||youchien.net/ad/*/ad/img/$~third-party +@@||youchien.net/css/ad_side.css$~third-party +@@||yuru-mbti.com/static/css/adsense.css$~third-party +! Allowlists to fix broken pages of advertisers +! Google +@@||ads.google.com^$domain=ads.google.com|analytics.google.com +@@||cloud.google.com^$~third-party +@@||developers.google.com^$domain=developers.google.com +@@||support.google.com^$domain=support.google.com +@@||tpc.googlesyndication.com^$domain=ads.google.com +! Yahoo +@@||gemini.yahoo.com/advertiser/$domain=gemini.yahoo.com +@@||yimg.com/av/gemini-ui/*/advertiser/$domain=gemini.yahoo.com +! Twitter +@@||ads-api.twitter.com^$domain=ads.twitter.com|analytics.twitter.com +@@||ads.twitter.com^$domain=ads.twitter.com|analytics.twitter.com + +! *** easylist:easylist/easylist_allowlist_dimensions.txt *** +@@||2chmatome2.jp/images/sp/320x250.png$~third-party +@@||47news.jp/static/special/*/300x250_640x480.webp$~third-party +@@||anitasrecipes.com/Content/Images/Recipes/$image,~third-party +@@||arnhemland-safaris.com/images/made/$image,~third-party +@@||banner-hiroba.com/wp-content/uploads/$image,~third-party +@@||cloud.mail.ru^$image,~third-party +@@||crystalmark.info/wp-content/uploads/*-300x250.$image,~third-party +@@||crystalmark.info/wp-content/uploads/sites/$image,~third-party +@@||esko.cloud^*_300x600_$~third-party +@@||government-and-constitution.org/images/presidential-seal-300-250.gif$image,~third-party +@@||hiveworkscomics.com/frontboxes/300x250_$image,~third-party +@@||img.tile.expert/*/*_300x600_$image,~third-party +@@||keibana.com/wp-content/uploads/*/300x250_$~third-party +@@||leerolymp.com/_nuxt/300-250.$script,~third-party +@@||leffatykki.com/media/banners/tykkibanneri-728x90.png$image,~third-party +@@||nc-myus.com/images/pub/www/uploads/merchant-logos/$image,~third-party +@@||nihasi.ru/upload/resize_cache/*/300_250_$image,~third-party +@@||przegladpiaseczynski.pl/wp-content/uploads/*-300x250-$image,~third-party +@@||radiosun.fi/wp-content/uploads/*300x250$image,~third-party +@@||redditinc.com/assets/images/site/*_300x250.$image,~third-party +@@||taipit-mebel.ru/upload/resize_cache/$image,~third-party +@@||wavepc.pl/wp-content/*-500x100.png$image,~third-party +@@||yimg.jp/images/news-web/all/images/jsonld_image_300x250.png$domain=news.yahoo.co.jp + +! *** easylist:easylist/easylist_allowlist_popup.txt *** +@@^utm_source=aff^$popup,domain=gamble.co.uk|gokkeninonlinecasino.nl|top5casinosites.co.uk +@@|data:text^$popup,domain=box.com|clker.com|labcorp.com +@@||accounts.google.com^$popup +@@||ad.doubleclick.net/clk*&destinationURL=$popup +@@||ad.doubleclick.net/ddm/$popup,domain=billiger.de|creditcard.com.au|debitcards.com.au|finder.com|finder.com.au|findershopping.com.au|guide-epargne.be|legacy.com|mail.yahoo.com|nytimes.com|spaargids.be|whatphone.com.au +@@||ad.doubleclick.net/ddm/clk/*http$popup +@@||ad.doubleclick.net/ddm/trackclk/*http$popup +@@||ads.atmosphere.copernicus.eu^$popup +@@||ads.doordash.com^$popup +@@||ads.elevateplatform.co.uk^$popup +@@||ads.emarketer.com/redirect.spark?$popup,domain=emarketer.com +@@||ads.finance^$popup +@@||ads.google.com^$popup +@@||ads.listonic.com^$popup +@@||ads.microsoft.com^$popup +@@||ads.midwayusa.com^$popup +@@||ads.openai.com^$popup +@@||ads.pinterest.com^$popup +@@||ads.shopee.*/$popup +@@||ads.snapchat.com^$popup +@@||ads.spotify.com^$popup +@@||ads.taboola.com^$popup +@@||ads.temu.com^$popup +@@||ads.tiktok.com^$popup +@@||ads.twitter.com^$popup +@@||ads.vk.com^$popup +@@||ads.vk.ru^$popup +@@||ads.x.com^$popup +@@||adv.asahi.com^$popup +@@||adv.gg^$popup +@@||adv.welaika.com^$popup +@@||biz.yelp.com/ads?$popup +@@||dashboard.mgid.com^$popup +@@||doubleclick.net/clk;$popup,domain=3g.co.uk|4g.co.uk|hotukdeals.com|jobamatic.com|play.google.com|santander.co.uk|techrepublic.com +@@||g.doubleclick.net/aclk?$popup,domain=bodas.com.mx|bodas.net|casamentos.com.br|casamentos.pt|casamiento.com.uy|casamientos.com.ar|mariages.net|matrimonio.com|matrimonio.com.co|matrimonio.com.pe|matrimonios.cl|pianobuyer.com|weddingspot.co.uk|zillow.com +@@||hutchgo.advertserve.com^$popup,domain=hutchgo.com|hutchgo.com.cn|hutchgo.com.hk|hutchgo.com.sg|hutchgo.com.tw +@@||lulustream.com^$popup,domain=luluvdo.com +@@||streamtape.com^$popup,domain=streamtape.to +@@||vk.com/ads?$popup,domain=vk.com +@@||www.google.*/search?q=*&oq=*&aqs=chrome.*&sourceid=chrome&$popup,third-party +@@||www.ticketmaster.$popup,domain=adclick.g.doubleclick.net + +! *** easylist:easylist_adult/adult_allowlist.txt *** +@@/api/models?$domain=tik.porn +@@/api/v2/models-online?$domain=tik.porn +@@||abt.s3.yandex.net/expjs/latest/exp.js$script,domain=some.porn +@@||astonishlandmassnervy.com/sc4fr/rwff/f9ef/$domain=lewdgames.to +@@||chaturbate.com/in/$subdocument,domain=cam-sex.net +@@||exosrv.com/video-slider.js$domain=xfreehd.com +@@||gaynetwork.co.uk/Images/ads/bg/$image,~third-party +@@||gelbooru.com/extras/howtosearch/ +@@||inporn.com/*/embed.js$script,~third-party +@@||spankbang.com^*/prebid-ads.js$domain=spankbang.com +! xhamster +@@||megaxh.com^$script,~third-party +@@||xhaccess.com^$script,~third-party +@@||xhamster.com^$script,~third-party +@@||xhamster.desi^$script,~third-party +@@||xhamster1.desi^$script,~third-party +@@||xhamster2.com^$script,~third-party +@@||xhamster3.com^$script,~third-party +@@||xhbig.com^$script,~third-party +@@||xhbranch5.com^$script,~third-party +@@||xhchannel.com^$script,~third-party +@@||xhmoon5.com^$script,~third-party +@@||xhofficial.com^$script,~third-party +@@||xhspot.com^$script,~third-party +@@||xhtotal.com^$script,~third-party +@@||xhvid.com^$script,~third-party +@@||xhwide2.com^$script,~third-party +@@||xhwide5.com^$script,~third-party +! Anti-Adblock +@@://xhamster.$script,~third-party +@@||milfzr.com^$generichide + +! *** easylist:easylist_adult/adult_allowlist_popup.txt *** diff --git a/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/easylist/easyprivacy.txt b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/easylist/easyprivacy.txt new file mode 100644 index 00000000..a6c0d216 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/easylist/easyprivacy.txt @@ -0,0 +1,55914 @@ +[Adblock Plus 1.1] +! Title: EasyPrivacy +! Expires: 6 days (update frequency) +! Last modified: Wed, 08 Jul 2026 11:30:11 +0000 +! Diff-Path: %diffpath%#easyprivacy +! Diff-Expires: 317 minutes +! *** easylist:template_header.txt *** +! +! Please report any unblocked adverts or problems +! in the forums (https://forums.lanik.us/) +! or via e-mail (easylist@protonmail.com). +! +! Homepage: https://easylist.to/ +! Licence: https://easylist.to/pages/licence.html +! GitHub issues: https://github.com/easylist/easylist/issues +! GitHub pull requests: https://github.com/easylist/easylist/pulls +! +!-----------------General tracking systems-----------------! +! *** easylist:easyprivacy/easyprivacy_general.txt *** +&&sub19=undefined&sub20=undefined +&action=js_stats +&ev=PageView& +&event_name=view_item_list& +&EventType=DataDealImpression& +&EventType=Impression& +&hitType=pageview& +&http_referer=$script,xmlhttprequest,domain=~biletomat.pl|~facebook.com|~jobscore.com +&refer=http$script +&sst.gcsub= +&t=pageview& +&ui-instrumentation-components-beacon.InstrumentationBeacon.sendData=1 +-adobe-analytics/ +-adobeDatalayer_bridge.js +-click-tracker. +-didomi.js +-geoIP.js +-inview-tracker. +-scroll-tracker.js +-track-inview. +-tracking-pixel. +-universal-analytics/ +.beacon.min.js +.com/_.gif? +.com/clk? +.com/count? +.com/counter? +.com/dc.gif? +.com/g.gif? +.com/hit$ping +.com/log/? +.com/stats.aspx? +.com/track?v= +.content_tracking.js +.de/l.gif? +.eloqua.js +.EventTracking. +.file-downloads.outbound-links.js +.gatracking.js +.gif?Log= +.hash.outbound-links.js +.jp/pv? +.jp/static/js/track.js +.net/l.gif? +.no/app/aas/a +.outbound-links.file-downloads.js +.outbound-links.tagged-events.js +.pageview-props.js +.pageview-props.tagged-events.js +.php?action=browse& +.php?action_name= +.php?logid=$image +.php?logRefer= +.php?logType= +.php?notrack= +.php?p=stats& +.php?ping= +.php?stats= +.php?tracking= +.revenue.tagged-events.js +.sharecounter.$third-party +.skimlinks.js +.stats?action= +.svc/?tracking_id= +.tagged-events.outbound-links.js +.tagged-events.revenue.js +.v4.analytics. +/.webscale/rum? +/.well-known/shopify/monorail +/0.gif? +/0c.gif? +/0pixel.php? +/1.gif? +/1pixel.php +/1px.gif? +/1px.php? +/1x1.gif? +/1x1.png? +/2.gif? +/24h-analytics. +/2x2.gif?$image +/3.gif? +/500b-bench.jpg? +/?dm=*&blogid=$script +/?essb_counter_ +/?livehit= +/?log=experiment& +/?log=performance- +/?record&key= +/?sentry_key= +/?sentry_version= +/?swift-performance-tracking +/_/api/v2/analytics/? +/_/lite/performance/* +/__core/metrics.js +/__imp_apg__/* +/__rmn.gif? +/__ssobj/core.js +/__ssobj/rum? +/__ssobj/sync?$image +/__sttm.gif? +/__ub.gif? +/__utm.gif +/__utm.js +/__wsm.gif +/_assets/oply/public/* +/_blazor/*$ping +/_events/api/setEvent$xmlhttprequest +/_ga?send& +/_ga?sponsor_pixel= +/_gz/counter.php? +/_hcms/perf +/_i?referral_url= +/_i?type=event& +/_lib/ga.js +/_mzblank.gif? +/_nostra/batch +/_nostra/identity/* +/_owa.gif? +/_servix/webid.aspx?$script +/_sess/script.js +/_stat/log/* +/_stat/log_ +/_tracking/* +/_vercel/insights/script.js +/_vercel/speed-insights/script.js +/_visitcount? +/a.gif? +/a/elevar/static/* +/a/performance_timing/* +/a8c-analytics.js +/aap/stats +/abc.gif? +/access.php?referrer= +/accessanalyzer/tracker? +/AccessCounter/index.cgi? +/accesstracking/* +/acclog.cgi? +/acctag.js +/acecounter/* +/acecounter_ +/acounter.php? +/action/analytics +/activity.gif? +/AD/PageHits. +/adb1.gif? +/add_page_view? +/addEvent?action= +/addLinker.js +/addLinkerEvents-ga.js +/addLinkerEvents-std.js +/addLinkerEvents.js +/addlog/? +/addpageview/* +/adds/counter.js +/adf-tm-base-min.js +/adlogger.php +/adlogger_tracker.php +/adm_tracking.js +/admtracker.lib.min.js +/adobe-analytics-$domain=~business.adobe.com +/adobe-analytics.js +/adobe-analytics2.js +/adobe-prd/* +/adobe.visitor- +/adobe/app-measurement. +/adobe/AppMeasurement- +/adobe/logging/* +/adobe/target/* +/adobe/VideoHeartbeat. +/adobe/visitor- +/adobe/VisitorAPI- +/adobeanalytics.js +/adobeAnalytics/* +/adobeanalyticsandtargetoverwrites.min. +/adsct? +/adstat.js +/adstats.php +/adstrack.js +/adtracking.asmx +/adtrk/tr.gif +/advanced-ads-tracking/assets/* +/advstats.js +/aff_convpixel.js +/aff_i?offer_id= +/aff_land?referrer +/affiliate-tracker.js +/affiliate:link_visit? +/affiliatetracking.js +/aftrack.asp +/aggbug.aspx? +/ahoy/events +/ahoy/visits +/AIT_Analytics.js +/ajax-hits-counter/increment-hits/index.php +/ajax-link-tracker.js +/ajax-track-page-view/* +/ajax/analytics/* +/ajax/log? +/ajax/stat/* +/ajax/whereami$ping +/ajax_video_counter.php? +/ajaxlog? +/akam/*/pixel_ +/akam/10/* +/akam/11/* +/akam/13/* +/alog.min.js +/amazon_linker.min.js +/amp-access/cta/* +/amp-access/cta? +/amp-access/ping? +/amp-access/set/* +/amp-access/set? +/amp-analytics- +/amp-analytics/* +/amp-call-tracking- +/amp-skimlinks- +/amp-story-auto-analytics- +/amp-tealium? +/amp.gif? +/amp/?rid= +/amp/analytics +/amp/log.json +/amp/pingback? +/amp_pingback/* +/analyse.js +/analysis-logger/* +/analysis?en=page_view& +/analysisTag.js +/analytic/pageview +/analytics-amplitude- +/analytics-async-loader.js +/analytics-client-identification/* +/analytics-collector +/analytics-data-collector.js +/analytics-data-collector.min.js +/analytics-dotcom/* +/analytics-efukt. +/analytics-event-adapter.bundle.min.js +/analytics-event-adapter.js +/analytics-event.js +/analytics-events- +/analytics-facade. +/analytics-gjc-min.js +/analytics-helper.js +/analytics-hit? +/analytics-ingestion/* +/analytics-ingress- +/analytics-js/* +/analytics-library.js +/analytics-minimal-v4.js +/analytics-minimal.js +/analytics-module-api/v1/analytics? +/analytics-ping.js +/analytics-prod.js +/analytics-reporter/* +/analytics-sdk. +/analytics-secure.js +/analytics-tracker/* +/analytics-tracking.js +/analytics-worker.iife.js +/analytics.*/event? +/analytics.*/ping/? +/analytics.*/track +/analytics.analytics/analytics.min.js +/analytics.bundled.js +/analytics.config.js +/analytics.gif? +/analytics.js/v1/* +/analytics.plausible.js +/analytics.prod.$domain=~fifteen.eu +/analytics.sitecatalyst.js +/analytics.v1.js +/analytics/?event= +/analytics/abtest/* +/analytics/adtags? +/analytics/amp/* +/analytics/analytics.js +/analytics/analytics.min.js +/analytics/beacons/* +/analytics/call-tracking.js +/analytics/capture/* +/analytics/click? +/analytics/collect? +/analytics/comscore.js +/analytics/dist/analytics.min.js +/analytics/embed/* +/analytics/event$domain=~app.diagrams.net +/analytics/ga.js +/analytics/google.js +/analytics/layer +/analytics/loggly.js +/analytics/metric/* +/analytics/pagestats +/analytics/pageview +/analytics/rakuten.js +/analytics/searches? +/analytics/track_event/* +/analytics/tracker.js +/analytics/trackers? +/analytics/visit.jsp +/analytics/visit.php +/analytics/visit? +/analytics4.php$ping +/analytics?http_referer +/analytics?token= +/analytics?ver=*&referrer= +/analytics_cookie.js +/analytics_events.js +/analytics_js/client.js +/analytics_prod.js +/analytics_tag.js +/analytics_tracker.js +/analytics_v2.js +/analytics_wbc.min.js +/analytics_www.js +/AnalyticsDataLayer.min. +/AnalyticsEvent.js +/analyticsFooter.js +/analyticsjs.js +/analyticsscript.ashx +/analyticstrack.js +/analyticstracking.js +/analyticstrain.min.js +/analytify-events-tracking.js +/anametrix/cas.js +/anclytic-ajax.html +/anclytic.htm +/angular-tag.js +/anonymous_user_guid.gif? +/apc/trans.gif? +/api-analytics. +/api-insights/log? +/api/0/stats +/api/adplogger/* +/api/ads-bff-client/* +/api/adtracking$xmlhttprequest +/api/async.php?t=user&m=pagehits& +/api/bfb_write_log +/api/click/*?c= +/api/cmp_tracker| +/api/collect|$ping,xmlhttprequest +/api/datafast/* +/api/drpStats +/api/event-rfkj/* +/api/front/v2/observability$ping +/api/internal/pixel? +/api/log-visit +/api/metrics/collect +/api/metrics/event +/api/pageactivity +/api/pageview/*$ping +/api/pageview? +/api/pagevisits +/api/pixel? +/api/reqAnalytic/* +/api/sentry/tunnel$xmlhttprequest +/api/stat? +/api/track?guid +/api/trk? +/api/v1/EndpointTracker +/api/v1/firehose/batch +/api/v1/firehose?_ +/api/v1/impressions| +/api/v1/metrics +/api/v1/reportData/* +/api/v1/stat? +/api/v1/streamtelemetry +/api/v2/collector +/api/v3/getPageVisits +/api/v3/trackSegmentEvent +/api/video/stats/*$xmlhttprequest +/api/web/v1/tracker$ping +/api_adlog.php? +/api_ip_info.php +/apilog? +/apmrum.min.js +/app-measurement? +/app.php/ads/* +/appdynamics/adrum- +/appGoogleTagManager- +/appinsightor.min.js +/AppMeasurement.js +/AppMeasurement.min.js +/AppMeasurement2.js +/AppMeasurement_Module_ActivityMap.min.js +/AppMeasurementCustom.min.js +/apps/ba-rev/app_metrics +/aptrk.js +/ard.png? +/aria-web-telemetry- +/art/stats/* +/article/count? +/Article/ViewCount/* +/article_counter.php? +/article_hit.php? +/articleOmnitureTracking.js +/ASPixel.js +/assets-cdonAnalytics.js +/assets/beacons.js +/assets/performance_timing- +/assets/smarttag-$script +/astrack.js +/astracker.js +/astracker/ast.php +/at-composer.js +/at.gif? +/atapixel.js +/atatus.js +/atrk.gif? +/atrk.js +/attpro/a? +/audience-extraction.js +/audience.gif? +/audience.min.js +/audienceScience.js +/autotrack.carbon.js +/autotrack.custom.js +/autotrack.custom.min.js +/autotrack.js +/autotrack.min.js +/AutoTracker.js +/awin?awc=$image +/awp.log +/awpx_click.js +/awpys.log +/awstats.js +/awstats_misc_tracker +/azion-pulse.js +/aztracker.js +/azzas-tracker-web@ +/b.banners.impress. +/b.gif? +/b.rnc? +/b/s/beacon +/b/ss/*&aqe= +/b/ss/*&events= +/b/ss/*&ndh= +/b/ss/*/JS- +/b/ss?AQB= +/b/stats? +/ba_tracking.js +/baiduStatistics.js +/banalytics.js +/base/es5/bundle.js +/base/es6/bundle.js +/batch.gif? +/batch/action/_: +/baynote.js +/bb-analytics-inline.min.js +/bc/clk? +/bcn.gif? +/bcsensor.js +/bdg.gif? +/beacon.cgi? +/beacon.gif? +/beacon.js +/beacon.min.js +/beacon/affiliates +/beacon/collector/* +/beacon/error? +/beacon/event/* +/beacon/event? +/beacon/init? +/beacon/media? +/beacon/metrics +/beacon/page? +/beacon/perf +/beacon/receive +/beacon/stats +/beacon/timing? +/beacon/track/* +/beacon/user-data +/beacon/v1/batch? +/beacon?cust= +/beacons?data= +/behavior/web/pv? +/benchmarketingsmarttag/get? +/better-analytics/js/loader.php +/bf.gif?ac= +/bi/dev/*$ping +/bi/doop/*$ping +/bineos.min.js +/bing-bat.js +/bingimpression? +/bitrix/spread.php? +/bizo.js +/bk-coretag.js +/BKVTrack.js +/blaize/datalayer +/blank.gif?*% +/blank.gif?*& +/blogcounter.js +/bloomreach.js +/bluekai.js +/bluekai.min.js +/bom/analytics/* +/boomerang-latest.js +/boomerang-latest.min.js +/boomerang.js +/boomerang/beacon +/boomr.js +/boost-pfs-analytics-custom.js +/boost-sd-analytic.js +/boost_stats.php +/bootstrap/metrics.js +/botd.gif? +/bower_components/fp/fp.js +/bpsma.js +/branchMetrics.js +/brandAnalytics.js +/brightedge.js +/brightspot/analytics/* +/brightTag-min.js +/bsf-bing-scripts/custom-pixels/* +/bsp-analytics.min. +/bstat.js +/btrack.php? +/bugcounter.php? +/bundle-analytics.js +/bundle.tracking.js +/bundle/analytics. +/bunsen/events/* +/busting/facebook-tracking/* +/busting/google-tracking/* +/bv-analytics.js +/bydataAnalytics.js +/c.gif? +/c.wrating.com/* +/c2_count.js +/c?siteID=$image,script +/c_track.php? +/cache/analytics.js +/cache_warmer/track/* +/cached-scripts/analytics.js +/caixinlog.js +/call.tracker.js +/callbacks/stats? +/capture_client.js +/CaptureStat.asmx +/cdn-cgi/beacon/* +/cdn-cgi/ping?$image +/cdn-cgi/rum? +/cdn-cgi/rum| +/cdn-cgi/zaraz/* +/cdn_cookie_service.html +/cedexis.js +/cedexis.radar.js +/census/RecordHit +/certifica-js14.js +/certifica.js +/cfformprotect/js/cffp.js +/cgi-bin/cnt/* +/cgi-bin/count.cgi? +/cgi-bin/count.pl? +/cgi-bin/count/* +/cgi-bin/count1.cgi? +/cgi-bin/CP/* +/cgi-bin/ctasp-server.cgi? +/cgi-bin/ctn? +/cgi-bin/hits/* +/cgi-bin/ivw-ssl/* +/cgi-bin/ivw/* +/cgi-bin/lcpnp/* +/cgi-bin/online/uos.cgi? +/cgi-bin/refsd? +/cgi-bin/te/in.cgi? +/cgi-bin/user_online/uos.cgi? +/cgi-bin/useronline/* +/cgi-sys/count.cgi?df= +/cgi/bin/trk.js +/cgi/count? +/cgi/stats.pl? +/cgi/trk.js +/chartbeat.js +/chartbeat.min.js +/chcounter/counter.php +/check.php?referrer= +/chicken.gif?*= +/cklink.gif? +/cklog.js +/clear.gif? +/click-tracking.js +/click.php?lp=data_upd& +/click/impression? +/click?track= +/click_metrics-jquery.js +/click_stats.js +/click_track.js +/click_tracking.js +/clickcount.asp +/clickcount.js +/clickcount.php +/clickctrl.js +/clickdimensions-2.js +/clickheat.js +/clicklog.js +/clicklog4pc.js +/clickm.js +/clickpathmedia.js +/clickscript.js +/clickstats.php +/clickstream.aspx? +/clickstream.js +/clickstream/visit? +/clicktag.js +/ClickTail.js +/clicktale.js +/ClickTrack.js +/clicktrack.min.js +/clicktrack? +/clicktracker.js +/clicktracker.php +/clicktracking.js +/clicky.js +/client-metrics/?target +/client_pathlog.asp? +/clientele/reports/* +/clientlib-analytics-core. +/clientstat? +/cls/check.php?$image +/cls_report? +/cmanalytics.min.js +/cms.gif? +/cms/stats/* +/cmslog.dll? +/cn-track? +/cnstats.js +/cnstats/cntg.php +/cnt-combined.php? +/cnt.aspx? +/cnt.cgi? +/cnt.js +/cnt/cnt.php? +/cnt/start.php? +/cnt_js.php? +/cnvtr.js +/cocoon-master/lib/analytics/access. +/code/e.js|$~third-party +/codesters-analytics. +/CofinaHits.js +/cogi-etracker.js +/cohesion-latest.min.js +/coinhive.min.js +/coinimp-cache/* +/collect.gif? +/collect.php?tid= +/collect/?dp= +/collect/kasupport +/collect/kf? +/collect/pageview? +/collect/pv? +/collect/stats? +/collect/view? +/collect/view_count? +/collect?appName +/collect?callback= +/collect?d= +/collect?data= +/collect?eid= +/collect?event= +/collect?iid= +/collect?k= +/collect?r= +/collect?tid= +/collect?type= +/collect?v= +/collect_data.php? +/collect_stat.js +/collector/hit? +/collector/pageview +/collector/v1/event +/collector?report= +/collectsysteminfo? +/com.snowplowanalytics.snowplow/*$domain=~7plus.com.au +/com_joomlawatch/img.php +/commerce-events-listener.js +/common/analytics.js +/common/ga.js +/common/tracker.js +/complianz/v1/track$xmlhttprequest +/comscore-min.js +/comscore? +/comscore_beacon/* +/comscore_pageview +/confiant.js +/configuration-stat.js +/contentiq.js +/conversion_async.js +/convertro.js +/convivaAppTracker.js +/cookie.gif? +/cookie_ga.js +/cookieAnalytics.js +/cookieId.htm +/cookies/render? +/coopcommerce-pixel.js +/coradiant.js +/core-tracking.js +/coretracking.php? +/count.cfm? +/count.do?$domain=~its.busan.go.kr +/count.exe? +/count.fcg? +/count.fcgi? +/count.fgi? +/count.gif? +/count.php? +/count.png? +/count/count.cgi? +/count/logcount.html? +/count?pid= +/count_js.php +/counter-js.php +/Counter.ashx? +/counter.asp? +/counter.aspx? +/counter.cgi? +/counter.js.php +/counter.php?width= +/counter.pl? +/counter/acnt.php? +/counter/collect? +/counter/stat.php +/counter/views/* +/counter1.gif? +/counter2.gif? +/counter5.min.js +/counter?action= +/counter?id= +/counter_1.php +/counter_2.php? +/counter_3.php +/counter_access.php +/countertab.js +/countinj.cgi? +/countly.js +/countly.min.js +/countpixel.asp +/countstat.php? +/countus.php +/create-lead.js +/CreateAnalytics.js +/CreateCookieSSO_ +/criteo.$domain=~criteo.blotout.io|~criteo.github.io|~criteo.investorroom.com +/criteoRTA.js +/crypta.js +/csi?v=*&action= +/csi?v=2&s= +/csi?v=3&s= +/csp_204? +/csp_log? +/cst-tag-monitor-2nd-gen? +/cta-loaded.js +/ctr_tracking.php? +/custom-analytics.js +/CustomTrackingScript.js +/cv/conversion.js +/cv_pixel.js +/cwTRACK.js +/cx-tracking.js +/cx_tracking.js +/cxense-candy.js +/cxense-entitlement.js +/cxense/cx.js +/cxf-tracking@ +/d.gif? +/data/stat.php?*&referer_host= +/data_collect.js +/datacollectionapi-client/index.js +/dataunlocker-prod.js +/dataunlocker.js +/datawrapper.gif? +/dcjs/prod/* +/dcs.gif? +/dcs_tag.js +/dead-clicks-autocapture.js +/default/pAnalytics +/detectIncognito.min.js +/detm-container-ftr.js +/detm-container-hdr.js +/DG/DEFAULT/rest/* +/dg_measurement_protocol.js +/dh-analytics-prod/* +/diffuser.js +/digital-data-enrichment.min.js +/discourse-fingerprint_ +/disp_cnt.php +/dispatch.fcgi? +/divolte.js +/dl-web-pixel.js +/dla_tracker.js +/dlpageping? +/dm.gif? +/dmp/pixel.js +/dmu2panalytics/ajax_call.php? +/dnx-event-collector/* +/dnxcheck/fing.js +/doctracking.js +/dolWebAnalytics.js +/dom-event-tracker.min.js +/domcount.nsf/WebCounter? +/dot.asp? +/dot.gif? +/dow_analytics.js +/dpistat/updater.php +/drwebstat.js +/dspixel.js +/dtm_cm.js +/dtr/count.php +/dtrack.js +/duel-analytics.js +/dwanalytics- +/dwanalytics.js +/dynamic.ziftsolutions.com/* +/DynamicAnalytics.js +/dynamicyield/* +/dynaTraceMonitor? +/e.gif? +/e_stat?g_id= +/eatms.js +/ecanalytics.js +/ecap.min.js +/ecblank.gif? +/ecg-js-ga-tracking/index. +/eclytics/* +/ecom/status.jsp? +/edAnalyticsWrapper.js +/edapi/event? +/edata.js +/edmonds.js +/efxanalytics.js +/egcs/v2/collect +/elastic-apm-rum.umd.min.js +/eloqua.js +/elqcfg.js +/elqcfg.min.js +/elqfcs.js +/elqidg.js +/elqimg.js +/elqscr.js +/elt.gif? +/eluminate? +/email/track/*$image +/email/tracking? +/email_opened_tracking_pixel? +/EmailOpenTrackLog.aspx?$image +/EmbedAsyncLogger.js +/emos2.js +/emstrack.js +/emtj_tracker.js +/emtj_tracker.min.js +/endpoint/stats.php? +/Engagement/TrackEventAsync +/ent_counter? +/entry_stats? +/err/js/?url= +/err0r/rum/* +/error/js/log? +/estat.js +/estatistica.js +/eta/events? +/eta/guid? +/eumcollector/beacons/* +/ev.gif?_rand= +/eva-analytics.min.js +/event-log? +/event-tracking.js +/event-tracking/*$domain=~github.com +/event.cgi? +/event.gif? +/event.php?campaign= +/event/pageview? +/event/track? +/event/tracking +/event/trigger? +/event/visit? +/event?event_id= +/event?eventType= +/event?s=$ping +/event_log/* +/event_logger +/event_logging/* +/eventLog.ajax +/EventLoggerV3.min.js +/eventLogServlet? +/eventproxy/track +/events-collector. +/events-tracker/* +/events.gif? +/events/analytics/* +/events/capture? +/events/counter? +/events/events-utils.js +/Events/Impression? +/events/page-viewed +/events/pixelEvent +/events/track/* +/events/tracking +/events/view-form-open +/events/view? +/events?rpId= +/eventsBeacon? +/eventtracker.js +/eventtracking- +/eventtracking. +/eventtracking/* +/evercookie.js +/evercookie/swfobject-2.2.min.js +/evercookie_get.js +/evergage.js +/evergage.min.js +/evt.gif? +/exactag.js +/exittracker.js +/expcount/additional.php +/exponea.min.js +/extendedanalytics.js +/external-tracking.min.js +/ezais/analytics? +/ezoicanalytics.js +/ezytrack.js +/f.gif? +/facebook-pixel-worker.js +/facebook-pixel.js +/facebook/pixel.js +/facebook_fbevents.js +/facebook_pixel_3_1_2.js +/FacebookEvent/PageView$xmlhttprequest +/facebookpixel.js +/facebookproductad/views/js/pixel. +/faciliti-tag.min.js +/fairfax_tracking.js +/fb-pixel-dsgvo/* +/fb-pixel-tracking.js +/fb-tracking.js +/fb_pixel_page_view +/fbanalytics.js +/fbcounter/counter.cgi +/fbevents.js +/fbevents.min.js +/fbpix-events- +/fbpixel.js +/fcp/v1/i +/fdmg-tag-manager/tags.js +/fe_logger? +/feature/metrics$xmlhttprequest +/federated-analytics.all.min.js +/figanalytics-short-ttl.js +/fingerprint-3.4.1.js +/fingerprint.js^$domain=~github.com +/fingerprint.min.js +/fingerprint/iife.min.js +/fingerprint2.js +/fingerprint2.min.js +/fingerprint3.js +/fingerprint3.min.js +/Fingerprintjs2/fpt2.js +/firebase-performance-compat.js +/firebase-performance-standalone-compat.js +/firebase-performance-standalone.js +/firestats/js/fs.js.php +/firm_tracking.js +/fkounter/counter.js +/fkounter5/counter.js +/flipptag.js +/flowplayer.drive-analytics.min.js +/flushimpressions? +/flv_tracking. +/flying-analytics/* +/footer-eventdata.js +/footer-tracking.js +/footerpixel.gif? +/foresee-trigger.js +/fp-3.3.6.min.js +/fp/check.js +/fp/clear.png +/fp/clear1.png +/fp/clear2.png +/fp/clear3.png +/fp/es.js +/fp/HP?session_id +/fp/ls_fp. +/fp/tags.js +/fp/top_fp. +/fp2.compressed.js +/fp2.min.js$domain=~spweb.auction.co.kr|~spweb.gmarket.co.kr +/fp3.min.js +/fp_204? +/fpc/cookie_js.php +/fpcookie? +/fpcount.exe +/fprnt.min.js +/fps/check.php +/fptrk.min.js +/fpv2.js +/freecgi/count.cgi? +/friendbuy.min.js +/frontend-gtag.js +/frontend-gtag.min.js +/frontend-metrics^ +/frontend-sentry- +/fsrscripts/triggerParams.js +/funnel-builder/assets/live/js/tracks.min.js +/fusion/lucid/data/* +/g_track.php? +/ga-audiences? +/ga-events.js +/ga-links.js +/ga-lite.js +/ga-lite.min.js +/ga-local.js +/ga-multidomain.js +/ga-script.js +/ga-scroll-events.js +/ga-se-async.js +/ga-targets.js +/ga-track-code.js +/ga-track-external.js +/ga-track.js +/ga-track.min.js +/ga-tracker.js +/ga-tracking- +/ga-tracking.js +/ga-tracking.min.js +/ga.gif? +/ga.js?grid +/ga.jsp?$image +/ga.php?$image +/ga/yap.js +/ga1.js +/ga2.js +/ga_anonym.js +/ga_cookie_track +/ga_event_tracking.js +/ga_events.js +/ga_footer.js +/ga_header.js +/ga_helper.js +/ga_keyword2.js +/ga_loader.js +/ga_local.js +/ga_no_cookie.php +/ga_setup.js +/ga_social.js +/ga_tracker.js +/ga_tracking.js +/ga_tracklinks.js +/gaaddons- +/gaaddons.js +/gaaddons_univ.js +/gaAnalytics.js +/gaclicktracking-universal.js +/gaclicktracking.js +/gaCustom.js +/gaEvents.js +/gaEventTracking.js +/gaFunction? +/gainit.js +/gajs/analytics.js +/ganalytics.js +/gapro.js +/gascript.js +/gasocialtracking.js +/gaStatistics.js +/gatag.js +/gatag_v2.js +/gaTags.js +/gatc.js +/gatrack.js +/gatrack.min.js +/gaTracker.js +/gatracking.js +/gb-tracker-client-3.min.js +/gc?refurl= +/gcount.pl? +/gd_tracker_events.js +/gdm-user-insights.js +/gemius.3.15.js +/gemius.js +/gen204/* +/gen204? +/geo.php? +/geoAnalysis.js +/geocc.js +/geocompteur.php +/geoip/detect? +/geoip_cc +/geoLocationData/v1/* +/geov2.js +/get/live/web/_/*$script,~third-party +/get_geoip? +/get_site_data?requestUUID= +/getbglog.js +/getclicky.js +/getintent.js +/getlog.gif +/getstats.js.php +/ghost-stats.min.js +/gigyaGAIntegration.js +/gingeranalytics.min.js +/GlanceCobrowseLoader_ +/GlancePresenceVisitor_ +/global-analytics.js +/global/analytics/* +/global/ga.js +/global/tracker.js +/global_analytics.js +/global_analytics/s_code.js +/global_tracking.js +/goAnalytics.js +/google-listings-and-ads/js/build/gtag-events.js +/google-nielsen-analytics.js +/google/analytics.js +/google_analitycs.js +/google_analytics3_v2.js +/google_analytics4.js +/google_analytics_gtag.js$script +/google_tag.data_layer.js +/google_tag.script.js +/google_tag/* +/google_tracker.js +/googleana.js +/googleAnal.js +/GoogleAnalystics.js +/GoogleAnalyticActionLib.js +/googleanalytics.js +/googleAnalytics1.js +/googleAnalytics4.js +/GoogleAnalytics?utmac= +/googleAnalyticsDataLayer.v1.0.min.js +/GoogleAnalyticsEvents.js +/GoogleAnalyticsModule.min.js +/GoogleAnalyticsPlus/distilled.FirstTouch.js +/googleAnalyticsTracking.js +/googleEventTracking.js +/googletag.js +/googletagmanageranalytics.js +/googletrack.js +/googleTracker.js +/googleTracking.js +/gosquared.js$script +/graphql/track-pageview$xmlhttprequest +/grumi-ip.js +/gs-analytics-init.js +/gs-analytics.js +/gs.gif? +/gtag.js +/gtag.min.js +/GTag/general_tracker.js +/gtag/js? +/gtagv4.js +/gtgcore/?id= +/gtm-data-layer-$script +/gtm-listeners.js +/gtm-suite.js +/gtm.js +/gtm.min.js +/gtm/gtm- +/gtmDataLayer.js +/gtmTracking.js +/gv-analytics/riveted.js +/h.gif? +/hc/activity +/header-pixels.min.js +/HeatmapSessionRecording/configs.php +/HeatmapSessionRecording/tracker.min.js +/hg?hc=&hb=*&vjs= +/hgct?hc=&hb=*&vjs= +/hints.netflame.cc/* +/histats.js +/hit-counter. +/Hit.ashx? +/hit.asp? +/Hit.aspx? +/hit.c? +/hit.php?$domain=~etoland.co.kr +/hit.t? +/hit.xiti? +/hit/?r= +/hit/tracker +/hit2.php +/hit?aff_id=$xmlhttprequest +/hit?time= +/hit_count? +/hit_counter +/hit_img.cfm? +/hitbox.js +/hitCount.js +/hitCount.php +/hitcount/* +/hitcount? +/HitCounter. +/HitCounter/* +/hitlog.php? +/Hits/collect/* +/hits/logger? +/hitslink.js +/hittrack.cgi? +/HitTracker/* +/HitTracking. +/hitv4.php +/hlog.asp +/hmapxy.js +/hnpprivacy-min.js +/hockeystack.min.js +/home-insight/ad_placements$xmlhttprequest +/home-insight/initial_analytics$xmlhttprequest +/homeCounter.php +/honeybadger.js +/honeybadger.min.js +/host-analyticsjs-local/cache/local-ga.js +/hs_track.js +/hsc/trk/* +/htdocs/js/admiral/init.js +/hubspot-ga-tracking.js +/i.gif? +/i.php?i= +/i.png?id= +/i2a.js +/i2yesCounter.js +/i?e=pv&url= +/i?siteid= +/i?stm= +/ia-sentry.min.js +/ib_pvcounter.php +/ibeat.min.js +/icf-analytics.js +/id?d_visid_ +/if/services/tdg?hs= +/IIQUniversalID.min.js +/image.ng/* +/images/tingyun.js$script +/iMAWebCookie.js +/img.gif?_rand= +/img?eid= +/imgcount.cgi? +/imgcount.php? +/imgevent? +/imp.gif? +/imp.php? +/imp2.js? +/imp?imgid= +/imp_check.php +/imp_cnt.gif? +/imp_img.php? +/impr.gif? +/impresion/zona/* +/impress.php? +/impression.ashx +/impression.gif? +/impression.js? +/impression.php? +/impression.pl? +/impression.track? +/impression/inline? +/impression/track? +/impressions?$~xmlhttprequest +/ImpressionsEvent.js +/in.getclicky.com/* +/in.gif?url= +/in.php?referer= +/inboundAnalytics.min.js +/include/js/ga-set.js +/increment_page_counter.jsp +/index.php/analytics/cookieAnalytics|$xmlhttprequest +/index.track? +/indextools.js +/init?*&fallbackUserId= +/inline-pixel.js +/inpl.measure.jssc +/insales_counter.js? +/InsightTrk/guuidSkeleton.do? +/InsightTrk/tracker.do? +/insitemetrics/uRMJ/ujutilv2sll.js +/instantpage.js +/instart.js +/intake/v2/rum.js +/interaction/beacon +/intercept/intercept.js +/IOL.Analytics.Tracking.min.js +/IPbeacon.min.js +/ipdvdc.min.js +/ips-invite.iperceptions.com/* +/iris-t.js +/iterable/track/views/* +/itgdtracksdk.js +/itmdp_code.js +/ivw/SP/*$image,script +/j.gif? +/jgs_portal_log_bildschirm.php? +/joomla-visites.php +/jpuid?jsonp= +/jquery-gatracker.js +/jquery.analytics.js +/jquery.audiencetarget.js +/jquery.browser-fingerprint- +/jquery.gatracker.js +/jquery.google-analytics.js +/jquery.iframetracker- +/jquery.trackstar.js +/js-responsive/minimal-analytics-$script +/js-sdk-event.min.js +/js/_analytics.js +/js/analitics.js +/js/count.js. +/js/counter.js? +/js/dart.js +/js/ga_event_ +/js/generateStats-min.js +/js/hbx.js +/js/logger? +/js/quantcast- +/js/script.pageview-props. +/js_ibeat_ext.cms +/js_log_error.js +/js_logger.php +/js_tracker.js +/js_tracker.min.js +/js_tracking? +/jscounter.js +/jscounter.php +/jscripts/analytics.js +/jserrLog? +/jslogger.php?ref= +/json/stats? +/json/tracking/* +/json?mbox= +/json?referer= +/jsonp_geoip? +/jsstat.cgi? +/jstats.php +/jump/?jl= +/jump/clk1.php +/kaiseki/script.php +/kaiseki/track.php? +/kaizentrack/resources/scripts/script.js +/kameleoon-iframe.html +/kameleoon.js +/kameleoon.min.js +/kameleoon/script.js +/keen-tracker.min.js +/keen-tracking- +/keen-tracking.js +/keen-tracking.min.js +/keen.min.js +/KenticoActivityLogger/Logger.js +/keypress.js$script,domain=~github.io +/keywee.js +/kimonix_analytics.js +/kissmetrics.js +/klaviyo_analytics.js +/koko-analytics-collect.php +/koko-analytics-pro/assets/dist/js/script.js +/koko-analytics/assets/dist/js/*script.js +/kontera.js +/krux-sass-helper.js +/krux.js +/kukulufinger2.js +/LandingPageHitLog.aspx? +/LandingPageInteractionLog.aspx? +/lasso-ga.js +/ldc.js?pid= +/lead-tracking.min.js +/leadgen/ga.js +/leadtag.js +/leage.google.tracker.js +/lhnhelpouttab-current.min.js +/li.lms-analytics/insight.min.js +/lib/analytics.js +/library/svy/broker.js +/libs/sentry/*/sentry.js +/libs/tracker.js +/liferay-analytics-api.js +/liferay-analytics-processor.js +/lightspeed_tracker.js +/link_track.js +/linkinformer.js +/linkpulse.js +/linktrack.js +/linktracker.js +/linktracking.js +/livecounter.php?wid= +/livestats.js +/livezilla/server.php?request=track& +/ljcounter/?d= +/load_analytics.php +/loader-wp/static/loader.min.js? +/loader/counter.js +/loaders/analyticsScript.ts? +/localga.js +/locotrack.js +/log-adblock.php? +/log-moltron-interaction? +/log-nt/* +/log-reporter.js +/log-view.js +/log.aspx? +/log.cfm? +/log.gif? +/log.jsp? +/log.php?*http +/log.php?id +/log.php?referrer= +/log/?pixel= +/log/analytics +/log/browser/event +/log/client/messages +/log/collect/* +/log/counter? +/log/debug? +/log/error? +/log/event? +/log/exposed? +/log/impression/* +/log/init? +/log/jserr.php +/log/log-event- +/log/log.php? +/log/logs? +/log/metrics? +/log/page-view +/log/pageview +/log/report/* +/log/sentry/* +/log/server? +/log/track/* +/log/views/* +/log/web? +/log2.php? +/log204? +/Log?act=$image +/log?action= +/log?count= +/log?data= +/log?documentUrl= +/Log?entry= +/log?event= +/log?format= +/log?id= +/log?kc= +/log?method= +/log?ref= +/log?sLog= +/log?tag= +/log?track_ +/log?uuid= +/log_agent.php +/log_amp_item_set? +/log_beacon.js +/log_e.php?id= +/log_h.jsp +/log_js_error$ping +/log_stats.php? +/log_view.php +/LogAction? +/logactions.gif? +/logaholictracker.php +/logAjaxErr_h.jsp +/LogAmpHit? +/loganalyticsevent? +/logclick.js +/logcollect.js +/logcount.php? +/logcounter.aspx +/logdata/et/ua +/logEvent? +/logExecutionStats? +/logger.ashx? +/logger.dll/* +/logger/?referer= +/logging/log.do +/logging/logjs +/logging/pageView +/logging/pixel? +/logging/React-UHP? +/logging/v1/log| +/LoggingAgent? +/loggingService.js +/loggly.tracker- +/loggly.tracker. +/LogImpression? +/logImpressions? +/logjs.php +/LogPage.aspx? +/LogPageRequest? +/logPerf? +/logpv.aspx? +/LogRecorder.php +/logreferrer.php? +/logs/report_js_error +/logs?ddsource= +/logstat.js +/logstats.php +/logview.js +/logview?referrer= +/logview_new.js +/logviewedpage? +/ls.gif? +/lst/universal-script?ph= +/lti-analytics-$script +/lunametrics- +/m.gif? +/madAnalytics.js +/magento-storefront-event-collector@ +/magento/page-visit? +/magento2.js +/magpie.js +/marfeelanalytics.js +/marketing-analytics.js +/martypixel? +/master-amg-plugin/assets/js/page-view-ga.js +/mati.gif?v= +/matomo-tracking.js +/matomo.js$domain=~github.com +/matomo.php +/matomo/*$script,domain=~github.com|~hub.docker.com|~matomo.org|~wordpress.org +/matomo_video_tracking.js +/mc4wp-premium/ecommerce3/assets/js/tracker.js +/mcookie.aspx +/mcount.cgi? +/measure/pixel/* +/measure/visit/* +/medialaanUniversalTracker.js +/mediametrie.js +/mediateGA.js +/megacounter.php +/mendelstats.js +/metatraffic/track.asp? +/metric/?mid= +/metric/?wid= +/metrica/sp.js +/metricool.js +/metrics-backend/* +/metrics/bambuser.min.js +/metrics/event? +/metrics/ga.js +/metrics/init? +/metrics/onload +/metrics/ping? +/metrics/rum +/metrics/statsd/* +/metrics/survey/* +/metrics/track/* +/metrics/umd.min.js$script +/metrics/v1/frontend/* +/metrics/vanity/? +/metrika.js?= +/metrika/tag.js +/mi/insite/* +/microsoft.cognitiveservices.speech.sdk.bundle.js +/min/gtm/* +/minescripts.js +/mint/?js +/mint/?record +/mintstats/?js +/mistat-data/onetrack/onetrack.js +/mixpanel-init.js +/mixpanel.$domain=~mixpanel.com +/mlb-ml-analytics.min.js +/mlopen_track.html +/mmclient.js +/mmcore.js +/mms.*/pv? +/mms/get_loaders? +/mn-collector.php +/mnppixellibrary.min.js +/mnt/imp? +/moat/yield.js +/moksa.js +/monetate.js +/mongoose.fp.js +/monitor/v1/log +/monitor?rtype= +/monitor_analytic.js +/monitor_browser/collect/* +/monitoring?o=$xmlhttprequest +/monitus.js +/monsido.js +/mormont.js +/mpel/mpel.js +/mpixel.js +/mpulse.js +/mpulse.min.js +/ms-widgets/tracking-cookies/* +/ms.analytics-web-3.min.js +/msq.tracker.min.js +/mtc.js +/mtifonttracker.js +/mtiFontTrackingCode.js +/mtracking.gif? +/mtvi_reporting.js +/mwTag.js +/mystats2.px? +/myTracking.js +/naLogImpressions^ +/natero_analytics.min.js +/nativendo.js +/navbar-analytics.js +/naytev.min.js +/nb-collector| +/ncj-pixel.js +/neilson.js +/nelio-ab-testing/assets/dist/js/visitor-type.js +/neoworx_tracker.php +/netmining.js +/netresults.js +/network-analytics.js +/neustar.beacon.js +/new-client/trackers. +/new-relic.js +/new-relic.min.js +/newlog.php? +/newrelic-browser.js +/newrelic-browser.min.js +/newrelic.js +/newrelic.min.js +/nielsen.htm +/nielsen.js +/NitroCookies.js +/njs.gif? +/nlogger.js +/nLoggerJB_ +/nm/itracking? +/NNAnalyticsWPSites.js +/no-impression.gif? +/np?log= +/npm/perfops-rom +/nr-spa-1216.min.js +/ntpagetag.gif +/ntpagetag.js +/ntrack.asp? +/null.gif? +/o.gif? +/o_code.js +/o_tealium.js +/oa-tracking? +/oas_analytics.js +/obPixelFrame/* +/observations/capture? +/obtp.js +/ocount.php +/ocounter.php +/odoscope.js +/om.gif? +/omni-tracking.min.js +/omnitrack-lately.js +/omniture/uuid.js +/omniture? +/omniture_tracking.js +/omniunih.js +/one-plugin-analytics-comscore/* +/onedot.php? +/onestat.js +/onetag/* +/onl/track.php? +/onlinecount.php +/oo/*/l.js +/oo/*/lsync. +/oo/cl*.js?rd= +/oo/cl-$~third-party +/oo/cl.js|$~third-party +/op/analytics.js?domain= +/op/op1.js?v=$script +/opdc.js +/ope-adalliance.js +/open/log/* +/openpixel.gif? +/openpixel.js +/opentag- +/opentag/* +/opinionlab.js +/optiextension.dll?$script +/optimizelyjs/* +/optimizerApi?event= +/orichipixel.min.js +/ot_e404.gif? +/OtAutoBlock.js +/ouibounce.min.js +/outbrain.js +/outbrainAd. +/outLoging.js +/outLoging2.js +/oval_web_analytics_latest.js +/owa.Analytics.m.js +/owa.tracker-combined-min.js +/owa.tracker.js +/oxAnalytics.js +/p.gif? +/p/tm.js? +/page-addviews? +/page-analytics.js +/page-events/trackclick/* +/page-view.gif? +/page/load? +/page/page_view +/page/unload? +/page_analytics.js +/page_counter.js +/page_perf_log? +/PageCount.php? +/pageCounter.adp? +/pagedot.gif? +/PageHit.ashx +/pagelogger/connector.php? +/pagestat? +/pagestats.ashx +/PageStats.asp +/PageStats.js +/pagetag.gif? +/pageTag? +/PageTrack.js +/pagetrack.php? +/PageTracker.js +/PageTracker? +/pageTracking.js +/pageview.ashx +/pageview.js +/pageview; +/pageview?client= +/pageview?key= +/pageview?pageId= +/pageview?pageviewId +/pageview?session= +/pageview?t= +/pageview?user_guid= +/pageviews.gif? +/pageviews.php?type= +/pageviews?token= +/parsely.js +/particles/analytics.js +/partner-analytics/* +/partner/transparent_pixel-$image +/partnermetrics.js +/pay/collect|$xmlhttprequest +/pbasitetracker.min.js +/pcount.asp +/pdp.gif? +/peach-collector.min.js +/pepperjam.js +/perf-beacon- +/perf-vitals. +/perf-vitals_ +/perfmatters/js/analytics.js +/perfmetrics.js +/performance-metrics.js +/performance.fcgi? +/performance/metrics +/performanceMetrics? +/perimeterx/px. +/permutiveIdGenerator.js +/ph-tracking-1.2.js +/phenomtrack.min.js +/PhoenixGoogleAnalytics.min.js +/php-stats.js +/php-stats.php? +/php-stats.phpjs.php? +/php-stats.recjs.php? +/phpmyvisites.js +/piano-analytics-$script +/piano-analytics.js +/piano-analytics/pa.js +/piNctTracking.js +/ping.gif? +/ping/?url= +/ping/pageload? +/ping/show? +/ping?h= +/ping?referrer= +/ping?rid= +/ping?spacedesc +/ping?utm_ +/ping_g.jsp? +/ping_hotclick.js +/pingAudience? +/pingback| +/pingd? +/pinger.cgi? +/pingServerAction? +/pinterest-pixels.js +/piwik-$domain=~github.com|~matomo.org|~piwik.org|~piwik.pro|~piwikpro.de +/piwik.$image,script,domain=~matomo.org|~piwik.org|~piwik.pro|~piwikpro.de +/piwik/*$domain=~github.com|~matomo.org|~piwik.org|~piwik.pro +/piwik1. +/piwik2. +/piwikapi.js +/piwikTracker.js +/pix-ddc-fp.min.js +/pix.fcg? +/pix.gif? +/pixall.min.js +/pixel-caffeine/build/frontend.js +/pixel-manager.js? +/pixel-tracker.js +/pixel-tracking. +/pixel.*/track/* +/pixel.cgi? +/pixel.fingerprint. +/pixel.gif? +/pixel.modern.js +/pixel.track +/pixel/email/*$image +/pixel/nvrwe? +/pixel/sbs? +/pixel/view? +/pixel/visit? +/pixel2.gif? +/pixel?tag= +/pixel_identifier.js +/pixel_iframe.php +/pixel_tracking.js +/pixel_tracking? +/pixel_V2.js +/pixelcounter.$domain=~pixelcounter.co.uk|~pixelcounter.com|~pixelcounter.dev|~pixelcounter.org|~pixelcounters.co.uk|~pixelcounters.uk +/pixeljs/* +/pixelNew.js +/PixelPageView? +/pixelpropagate.js +/pixels.jsp? +/pixels/track? +/pixeltag.js +/pixeltrack.php +/pixeltrack.pl +/pixeltracker.bundle.js +/pixeltracker.js +/PixelTracking.js +/pixeltracking/sdk-worker.js +/pixelyoursite/dist/scripts/public.js +/pixy.gif? +/planetstat.php +/plausible.file-downloads.js +/plausible.js$domain=~plausible.io +/plausible.manual.js +/plausible.outbound-links.js$domain=~plausible.io +/plausible.tagged-events.js +/player-test-impression? +/player/stats.php? +/plg_convertformstools_gatracker/js/script.js +/plog?id +/plow.lite.js +/plugins/affiliate-wp/assets/js/tracking.min.js +/plugins/catman/* +/plugins/civic-science/js/pixel.js +/plugins/duracelltomi-google-tag-manager/* +/plugins/exactmetrics- +/plugins/nimiq/*$script +/plugins/nsmg-tracking/* +/plugins/pageviews-counter/* +/plugins/pup-comscore/* +/plugins/stat-dfp/* +/plugins/status.gif? +/plugins/tagging/* +/plugins/userinfo.gif? +/plugins/vdz-google-analytics/* +/plugins/visitors-traffic- +/plugins/wordfence/visitor.php? +/plugins/wp-vgwort/* +/pmc-cxense.js +/pmfastclick.min.js +/pointeur.gif? +/pomegranate.js +/pongAudienceLS? +/popu.js$script +/post-views-counter-pro/js/crawler-detect.js +/post-views-counter-pro/js/frontend.js +/postcounter.php? +/posthog-recorder.js +/postlog? +/postview.gif? +/pp/micro.tag.min.js +/pphlogger.js +/pphlogger.php +/ppms.js +/pr.php? +/prebid.pro.js +/preparecookies?callback=$domain=~mirapodo.de|~mytoys.de|~yomonda.de +/prepixel? +/presslabs.js$script,~third-party +/prime-email-metrics/*$image +/printpixel.js +/printtracker.js +/prnx_track.js +/probance_tracker-min.js +/probance_tracker.js +/prod/ncg/ncg.js +/prod/ping? +/production/analytics.min.js +/promo/impression? +/propagate_cookie.php +/providers/atLabel/load| +/pt.gif? +/pt?type=pv& +/ptrack.js +/pub/as?_ri_=$image +/pub/imp? +/pubble.stats.min.js +/pubcid.min.js +/public/analytics.js +/public/statsd +/public/visit/record +/public/visitor.json? +/public/visitor/create? +/publisher:getClientId?key= +/publishertag.js +/publitas-stats.js +/pubstats.$domain=~pub.dev|~pubstats.dev +/pubtag.js +/pulsario.js +/push-analytics.js +/pushlog.min.js +/pushlog.php +/pv.gif? +/pv/?aid= +/pv2.gif? +/pv?place= +/pv?token= +/pv_count.php +/pv_web.gif +/pvcount.js +/pvcount.php +/pvcounter.cgi +/pvcounter.js +/PvCountUp.action +/pvevents.gif? +/pvlog.js +/pvmax.js +/pvnoju.js +/px.gif? +/px.js?ch=$script +/px/*/blank.gif? +/px/client/main.min.js +/px?t= +/px_trans.gif +/pxf.gif? +/pxid?k= +/pxl.cgi? +/pxl.gif? +/pxl.png? +/pxlctl.gif +/pxrc.php +/pxre.php +/pxtrack.js +/qapcore.js +/qlitics.js +/qlog/add?userId= +/qtracker-v3-min.js +/quant.js +/quantcast.js +/Quantcast/cmp_v2.js +/QuotaService.RecordEvent? +/r.gif? +/r.rnc? +/r/collect? +/radar/trace? +/RadioAnalytics.js +/rainbow/master-js +/RcAnalyticsEvents.js +/rcAnalyticsLib.js +/rd-js-integration.min.js +/rdtracker/rdtracker.min.js +/readReceipt/notify/?img=$image +/readthedocs-analytics.js +/realtimeapi/impression? +/realytics-1.2.min.js +/realytics.js +/recommendtrack? +/record-impressions? +/record-stats? +/record.do? +/RecordAnalytic? +/RecordClick.js +/RecordHit? +/referadd? +/referer/visitor/* +/referral-tracking.js +/referral-tracking.min.js +/referral_tracking.js +/referrer.js +/referrer.php?*http +/referrer_invisible.js +/referrer_tracking.js +/reftracker.js +/renderTimingPixel. +/replay?ddsource= +/report_ga_events/* +/report_visit.php +/reportData/nm.gif? +/reporting/metrics +/ResonateAnalytics.min.js +/rest/analytics/* +/resxclsa.js +/resxclsx.js +/retarget_pixel.php +/retargeting-pixels.php +/revinit.js +/rgea.min.js +/risk_fp_log? +/riveted.min.js +/rivraddon.js +/rkrt_tracker-viajs.php +/rm-gtm-google-analytics-for-wordpress/js/gtm-player.js +/rm.gif? +/rmkt/collect/* +/rmntracking.js +/rnb/events +/rntracking.js +/roi_tracker.js +/roi_tracker.min.js +/roiengine.js +/roitrack.cgi +/roitrack.js +/roitrack.php +/roitracker2.js +/rollbar.js +/rollbar.min.js +/rook.tracking.min.js +/rot_in.php +/roverclk/* +/roverimp/* +/roversync/? +/rpc.gif?ac= +/rpc/log/* +/rpc/log? +/rpc/preccount? +/rpFingerprint? +/rr/t?step= +/rrweb-record-pack.js +/rrweb-record.min.js +/rt_tag.js +/rt_tag.ofs.js +/rt_track.js +/rt_track_event.js +/rtac/gif? +/rtd.js +/rtkbeacon.gif? +/rtoaster.js +/rtracker.min.js +/rtracker/ofs.rtt.js +/rudder-analytics.js +/rudder-analytics.min.js +/rum-collector/* +/rum-telemetry/* +/rum-track? +/rum.gif? +/rum.min.js +/rum/events +/rum?ddsource= +/run/perf +/ruxitagentjs_ +/rwtag.gif? +/rwtag.js +/s-pcjs.php +/s.gif? +/s.png?event= +/s/js/ta-2.3.js? +/s/vestigo/measure +/s_code_global_context.js +/s_trans.gif? +/sa.gif? +/safelinkconverter.js +/salog.js +/SAPOWebAnalytics/* +/satismeter.js +/scmetrics.*/b/ss/* +/screencount?vcid= +/scribd_events? +/script.outbound-links.js +/script.outbound-links.pageview-props.revenue.js +/script.tagged-events.js +/script/pixel.js +/scriptAnalytics.js +/scripts.kissmetrics.com/* +/scripts/click.js.php +/scripts/clickjs.php +/scripts/hbx.js +/scripts/sdk/everflow.js +/scripts/statistics/* +/scripts/track_visit.php? +/scripts/xiti/* +/scroll-analytics- +/scroll-track.js +/scroll-tracker.js +/SdaAnalytics.js +/sdc.js| +/sdc1.js +/sdc2.js +/sdctag1.js +/sdctag2.js +/sdcTrackingCode.js +/sdk/impressions +/search-cookie.aspx?$image +/secomapp.scripttag.js +/securetracker.js +/seed.gif? +/segment/api/* +/segment/js/* +/segmentify.js +/segmentio.js +/sendLogs?cid +/sendy/t/*$image +/sensor.modern.ncl.min.js +/sensor/statistic? +/sensorsdata- +/sensorsdata.$domain=~sensorsdata.cn +/sentry-browser.min.js +/sentry-browser.tracing.es5.min.js +/sentry-logger.js +/sentry-tracing.min.js +/sentry/bundle.min.js +/seo.taCo.min.js +/seo/pageStat/* +/seon/agent.js +/seostats.php +/seotracking-v3.js +/server.php?request=track&output= +/server/detect.php? +/service/track? +/services/pixel.html? +/services/t/l?referrer= +/servlet/Cookie? +/session-tracker/tracking- +/session/preparecookies?$domain=~mirapodo.de|~mytoys.de|~yomonda.de +/session/referer +/session/update-beacon +/sessioncam.js +/sessioncam.min.$script +/sessioncam.recorder.js +/SessionHit.aspx? +/set-cookie.gif? +/set_cookie.php? +/set_optimizely_cookie.js +/set_tracking.js +/sf-recommendations-events-listener.js +/sfCounter/* +/sfdc/networktracking.js +/sftouch?branchId= +/sgtracker.js +/shared/sentry/* +/sherlock.gif? +/shinystat.cgi +/shopify-boomerang- +/shopify-datalayer-minified.js +/shopify-event.gif? +/shopify/track.js +/shopify_stats.js +/shopifycloud/shopify/assets/shop_events_listener-$script +/showcounter.js +/showcounter.php +/showhits.php? +/shreddit/perfMetrics +/silveregg/js/cookie_lib.js +/simple_reach.js +/simtracker.min.js +/site24x7rum-min.js +/site_statistics.js +/site_stats.js +/site_stats/* +/site_tracking.js +/sitecatalist.js +/sitecatalyst.js +/sitecatalyst/tracking. +/sitecrm.js +/sitecrm2.js +/SiteSearchAnalytics.js +/sitestat.js +/sitestats.gif? +/sitetrek.js +/skype-analytics.js +/sLT_bEhAvIoR_aNaLySiS/*$xmlhttprequest +/sluurpy_track.js +/smart-pixel.min.js +/smartpixel-1.js +/smartpixel.$domain=~smartpixel.com|~smartpixel.tv +/smartTag.bundle.js +/smarttag/smarttag- +/smetrics.*/b/ss/* +/smetrics.*/id? +/smg_tracking/js/onthe.io.js +/Smile_ElasticsuiteTracker/js/tracking.min.js +/smmch-mine.js +/smmch-own.js +/snowman.gif?p= +/snowplow-collector-prod.$xmlhttprequest +/snowplow-tracker.tatest.js +/snowplow.js +/snowplow/*$script +/snowplow_$script +/social_tracking.js +/socialTracking.js +/socialtracking.min.js +/softclick.js +/solarcode.js +/somni.js +/somtag/loader/* +/somtag/logs/* +/sophus.js +/sophus3/logging.js +/sophus3_logging.js +/sp-2.0.0.min.js +/sp_analytics.js +/sp_tracker.js +/spacer.gif? +/splunk-logging-v2.js +/spresso.sdk.tracking.web.js +/spymonitor.js +/sr.gif? +/sranalytics.js +/srp.gif? +/ssl-intgr-net/* +/SSOCore/update? +/sst8.js +/sstat_plugin.js +/standalone-analytics- +/stat-adobe-analytics.js +/stat-dfp.js +/stat.gif? +/stat.htm?$domain=~192.168.0.1|~192.168.1.1 +/stat.js? +/stat/count +/stat/event/* +/stat/event? +/stat/fe? +/stat/rt/js? +/stat/stat.php?type= +/stat2.aspx? +/stat2.js +/stat?event= +/stat?sid= +/stat?SiteID= +/stat?track= +/stat_js.asp? +/stat_page.php +/stat_vue.php? +/stataffs/track.php? +/statblog/pws.php? +/StatCms/ViewCount? +/statcollector. +/statcollector/* +/statcount. +/statcounter-$~image +/statcounter.asp +/statcounter.js +/statcountex/count.asp? +/statistic/pixel? +/statistiche/stat.php$xmlhttprequest +/statistics.js?$third-party +/statistics/pixel/* +/statistics/visit?id= +/StatProviderV2.min.js +/StatRecorder.asp? +/stats-collect +/stats-js.cgi? +/stats-listener.js +/stats-tracking.js +/stats.*/event$domain=~stats.prisamedia.cl +/stats.*/hits/* +/stats.*/tracker. +/stats.asp?id +/stats.cgi$image +/stats.gif? +/stats.php?*http +/stats.wp.com/* +/stats/?ref= +/stats/?rt= +/stats/api/collect +/stats/api/event +/stats/article? +/stats/bezoek_count.php +/stats/c/*$image +/stats/collect/* +/stats/collect? +/stats/collector.js +/stats/event.js? +/stats/events$xmlhttprequest,domain=~wbsc.org +/stats/footer.js +/stats/ga.js +/stats/header.js +/stats/impression +/stats/log.pl +/stats/Logger? +/stats/lookup? +/stats/mark? +/stats/page-view +/stats/page_view_ +/stats/pageview +/stats/ping? +/stats/pv.php? +/stats/record.php? +/stats/record/* +/stats/record_visit/* +/stats/search-log +/stats/transp.bmp +/stats/v2/visit? +/stats/visitors +/stats/web_vitals/*$ping +/stats/welcome.php? +/stats?aid= +/stats?blog_ +/stats?callback= +/stats?ev= +/stats?event= +/stats?object +/stats?referer= +/stats?style$~xmlhttprequest +/stats_img.png? +/stats_js.asp +/stats_tracker.js +/statsadvance.js +/statscollector.min.gz.js +/StatsCollector/* +/statscounter/* +/statscript.js +/statsd_proxy +/statsig-proxy/* +/StatSNA.js +/StatsPage.php +/StatsPixel? +/StatsService.RecordStats? +/statstracker. +/statstracker/* +/statstracker? +/statsupdater.aspx +/statsVisitesAnnonces? +/stattag.js +/stattracker- +/status/impression? +/storeAdvImpression.jsp +/storefront.google-analytics-4.min.js +/stp.gif? +/stracking.js +/sTrackStats.js +/strak.php?t= +/stream/log.html? +/streamsense.min.js +/strpixel.png? +/stt/track.js +/stwc-counter/code.js +/stwc/code.js +/submission/pageview +/supercookie.asp +/supercookie.js +/svs.gif? +/sw.js?origin= +/sw/analytics.js +/swa_t.gif? +/swatag.js +/swell-ct-ad-data +/swell-ct-pv^ +/swlapi/stats| +/symplr-analytics- +/sync.gif?partner_ +/sync?visitor_id= +/synd.aspx +/szm_mclient.js +/t.gif? +/t/event.js? +/t/event? +/t?referer= +/t?tcid= +/taboola.js +/taboola/loader.js +/taboolaHead.js +/taevents-c.js +/tag/tag.jsp? +/tag?name=PageView$xmlhttprequest +/tag?tags= +/taganalyticscnil.js +/tagAnalyticscnil.php +/tagCNIL.js +/tagcommander/prd/* +/tagging?env= +/tagmanager/event? +/tagmanager/pptm.js +/tags.js?org_id= +/tailtarget.js +/talpa-analytics-pro/* +/tatari-shopify/tracker-snippet-latest.min.js +/tc_analytics.js +/tc_analytics.min.js +/tccl.min.js +/tck/gif/* +/teal-comscore- +/teal-gcianalytics- +/TeaLeaf.js +/tealeaf.min.js +/TeaLeafCfg.js +/TealeafSDK.js +/TealeafSDKConfig.js +/tealeaftarget? +/tealium-external/utag.js +/tealium-utag-set.js +/tealiumAnalytics.js +/tealiumTagsData.js +/tenant.min.js +/thermostat.js +/thixel.js +/tiara/tracker/* +/ticimax/analytics.js +/tide_stat.js +/tilda-stat-1.0.min.js +/timingcg.min.js +/tjp_beacon.js +/tjx-tracking-data.js +/tking/ajax_track_stats? +/tncms/tracking.js +/token?referer= +/tongji.js +/toplytics.js +/TouchClarity.js +/touchclarity/logging.js +/tr.gif? +/tr/lp/intg.js +/tr/pageview/* +/trace-Update.php? +/trace/link/*$image +/trace/mail/*$image +/trace/record? +/trace?sessionid= +/traces.php? +/tracifyv2.js +/track-event.js +/track-focus.min.js +/track-imp? +/track-internal-links.js +/track-mixpanel/* +/track-pixel. +/track-the-click-public.js +/track-visit? +/track.ashx?*=http +/track.gif?data= +/track.png? +/track.srv. +/track.v2.js +/track/?*&event= +/track/?data= +/track/?verbose= +/track/aggregate? +/track/batch? +/Track/Capture.aspx? +/track/client-event/* +/track/client-events +/track/cm? +/track/component/* +/track/event/* +/track/go.php?*&referer_url= +/track/hit.gif +/track/identity? +/track/imp? +/track/impression/* +/track/impression? +/track/pageview? +/track/pageviews/* +/track/pixel.php +/track/pixel/* +/track/site/* +/track/statistic/* +/track/svbaff01/* +/track/visitors/? +/track/visits/? +/track?*&event= +/track?_event= +/track?cb= +/track?data= +/track?event= +/track?event_id= +/track?eventKey= +/track?events= +/track?name= +/track?page_view +/track?pid= +/track?referer= +/track?referrer= +/track_click? +/track_event. +/track_framework_metrics? +/track_general_stat.php +/track_js/? +/track_page_view? +/track_pageview? +/track_pixel? +/track_proxy? +/track_stat? +/track_video.php?id= +/track_visit.js +/track_visit? +/track_visitor? +/trackBatchEvents? +/trackbee.min.js +/TrackClick. +/trackClickEvent.js +/trackconversion? +/tracker.ga. +/tracker.gif? +/tracker/?key= +/tracker/base_wp/* +/tracker/event? +/tracker/imp? +/tracker_async.js +/trackerPageAnalytics.js +/trackEvent.js +/trackga.js +/trackga.min.js +/tracking-analytics-events.js +/tracking-cookie.js +/tracking-events.js +/tracking-links.js +/tracking.asmx/AddTrack? +/tracking.jsp?sid= +/tracking/airdog +/tracking/common.html +/tracking/cookies? +/tracking/digitaldata.js +/tracking/events/* +/tracking/events? +/tracking/freewheel/* +/tracking/impression +/tracking/ipify +/tracking/jitney/* +/tracking/log.php? +/tracking/log? +/tracking/networktrackingservlet +/tracking/open? +/tracking/referrer? +/tracking/thirdpartytag.js +/tracking/trackpageview +/tracking/uct?v= +/tracking/universalJSRequest.php +/tracking/user_sync_widget? +/tracking/views/* +/tracking202/static/landing.php +/tracking?referrer +/Tracking?t= +/tracking?vs= +/tracking_id_ +/tracking_pixel +/tracking_unitary/* +/trackingApi?type= +/trackingClient.bundle.js +/trackingCode- +/trackingCode.js +/trackingcookies. +/trackingDTM.js +/trackingEventsBlocks/* +/trackingFooter.js +/trackingGA.js +/TrackingHandler.js +/trackingheader.js +/trackingImpression/* +/trackingp.gif +/trackingpixel.php +/TrackingPixel/* +/trackingTools. +/trackingVtm.js +/trackIt.js +/trackit.php? +/trackit.pl? +/trackjs.$domain=~trackjs.com +/tracklib.min.js +/trackmerchant.js +/trackmvisit? +/trackopen.cgi? +/trackPage.js? +/trackpagecover? +/trackpageview.js +/trackpageview.php +/trackPageView/* +/TrackPageview? +/trackpixel? +/trackpush.min.js +/trackpxl? +/TrackShopAnalytics.aspx? +/trackstats? +/trackTimings.gif? +/trackui.min.js +/TrackView/*$xmlhttprequest +/TrackViews/* +/trackVisit/* +/trackvisit? +/TrackVisitors/* +/TrackWebPage? +/trade/in.php?*&ref= +/traffic-source-cookie.min.js +/traffic/status.gif? +/traffic_record.php? +/TrafficCookie.js +/traffictrade/* +/trafic.js +/trans_pixel.asp +/transparent1x1.gif +/transparent1x1.png +/transparent_pixel.gif +/transparent_pixel.png +/transpix.gif +/travel-pixel-js/* +/trbo.js +/trck/eclick/* +/trck/etms/* +/trckUtil.min.js +/trendmd.min.js +/trigger-visit-event +/triggertag.js +/trk.*/impression/* +/trk.*/open?$image +/trk.gif? +/trk.php? +/trk/api/* +/trk2.*/open?$image +/trk?t=$image +/trkga.js +/trovit-analytics.js +/truehits.php? +/tw-track.js +/twiga.js +/tynt.js +/u.gif? +/ucount.php? +/udp-analytics.js +/uds/stats? +/uecomscore_cmp_event_mundo.js +/uem-ep.js +/uisprime/track +/umami.js +/umg-analytics.min.js +/umg-analytics/umgaal.min.js +/umt.gif? +/unbxdAnalytics.js +/uniclick.js?attribution= +/UniqueUserVisit? +/updatestats.js +/urchin.gif? +/urchin.html? +/urchin.js +/user-context?referrer= +/user-data-minified.$script +/userdata_n? +/userfingerprinttoken/*$xmlhttprequest +/userfly.js +/users/track? +/UserTraceCookie? +/usertrack.aspx? +/usertracking.js +/utag.loader.js +/utag.sync.js +/utag_data.js +/utiqloader.js +/utm-tags.min.js +/utm-tracker.min.js +/utm-tracking.js +/utm.gif? +/utm_cookie.js +/utm_cookie.min.js +/utrack.js? +/utrack? +/utracker.js +/uutils.fcg? +/v.gif? +/v1/adn/visit| +/v1/log/web-vitals$xmlhttprequest +/v1/pixel.js +/v1/pixel? +/v1/stats/track +/v1/tracker.js +/v1/viewport_events +/v2/pv-data? +/v4/analytics/*$~xmlhttprequest +/v4/metrics +/v60.js +/valnet-header. +/valnetinccom-adapter.js +/vanillaanalytics/js/vendors/js.cookie.js +/vastlog.txt? +/vecapture.js +/vendor/analytics.js +/vendor/analytics/* +/vendor/cedexis/* +/vestigo/v1/measure +/vglnk.js +/video-ga.js +/video.counters. +/video/tracking.js +/video_count.php? +/videoanalytic/* +/videojs-analytics.js +/videojs.ga.js +/videojs.ga.min.js +/videojs.ga.videocloud.js +/videotracking.js +/vidtrack.js +/view-tracking/*$image +/view.gif? +/view_stats.js.php +/viewcount/record-page-view? +/ViewCounter/* +/viewerimpressions? +/views_tracking/* +/viewtracking.aspx? +/viewTracking.min.js +/visistat.js +/visit-tag? +/visit-tracker.js +/visit.gif? +/visit/log.js? +/visit/record.gif? +/visit/record? +/visit_log.js +/visitcounter.do +/visitcounter.js +/visitinfo.js +/VisitLog.asmx +/visitor-params.js +/Visitor.aspx? +/visitor.gif?ts= +/visitor.js?key= +/visitor.min.js +/visitor_id.jsp +/visitor_info.js +/visitor_info? +/VisitorAPI.js +/visitorCookie.js +/visitorcountry.svc/* +/VisitorIdentification.js +/visitors/collect_data|$xmlhttprequest +/visitors/screencount? +/visitortrack? +/visitortracker.pl? +/visits/pixel? +/visits?aff_ +/VisitSite.js +/VisitTracking? +/visscore.tag.min.js +/vissense.js +/visualrevenue.js +/vjslog? +/vli-platform/adb-analytics@ +/vs-track.js +/vs.gif? +/vsl/imp? +/vstat.php +/vtrack.aspx +/vtrack.php? +/vtrack?vid= +/vwFiles/analytics/* +/w.gif? +/wa.gif? +/wa_tracker.js +/watchdog/hits/collect$xmlhttprequest +/wcount.php? +/web-analytics.js +/web-api/log/* +/web-data-ingress? +/web-pixel-*/worker.modern.js +/web-pixel-shopify-app-pixel@ +/web-pixel-shopify-custom-pixel@ +/web-pixels@*/web-pixel-*/sandbox/modern/* +/web-vitals-analytics.js +/web-vitals.iife.js +/web/push? +/web_analytics/* +/web_answertip.js +/Web_JS_Stats.js +/web_traffic_capture.js +/WebAnalytics.$domain=~webanalytics.italia.it +/webAnalytics/* +/webcounter/* +/webdig.js +/webdig_test.js +/weblog.js? +/weblog.php? +/webmnr.min.js +/webmonitor/collect/badjs.json +/webmr.js +/webruntime/log/metrics$ping +/webstat.js +/WebStat2.asmx +/webstatistics.php? +/webstats.js +/webstats.php +/webstats/track.php? +/webstats_counter/* +/webtag.js +/webtrack.js +/webtracker.dll +/webtracking/*$~document,~subdocument,domain=~wwwapps.ups.com +/webtraffic.js +/webtraxs.js +/webtrekk_mediaTracking.min.js +/webtrends.js +/webtrends.min.js +/webxmr.js +/wf-beacon- +/whisper?event= +/white_pixel.gif? +/wildfire/i/CIMP.gif? +/wix-code-telemetry-collector/* +/wix-engage-visitors- +/wlexpert_tracker.js +/wmxtracker.js +/woocommerce-google-adwords-conversion-tracking-tag/* +/woopra.js +/wp-analytify-forms/assets/js/tracking.js +/wp-analytify/assets/js/scrolldepth.js +/wp-coin-hive-util.js +/wp-coin-hive.js +/wp-content/plugins/confection/bridge.php +/wp-content/plugins/pageviews/pageviews.min.js +/wp-content/plugins/woocommerce-google-analytics-integration/* +/wp-content/plugins/wp-click-track/js/ajax.js +/wp-content/plugins/wp-clickmap/clickmap.js +/wp-content/tracker.js +/wp-js/analytics.js +/wp-json/burst/v1/track/* +/wp-json/iawp/* +/wp-monero-miner-class.js +/wp-monero-miner-util.min.js +/wp-monero-miner.js +/wp-monero-miner.min.js +/wp-rocket/assets/js/lcp-beacon. +/wp-sentry-browser.min.js +/wp-slimstat.js +/wp-slimstat.min.js +/wp-statistics-tracker.min.js +/wp-statistics/assets/js/tracker.js +/wp-statistics/v2/hit +/wp-stats-manager/js/wsm_new.js +/wp-useronline/useronline.js +/wp_stat.php? +/wpengine-analytics/js/main.js +/wpr-beacon.js +/wpr-beacon.min.js +/wps-visitor-counter/styles/js/custom.js +/wpstatistics/v1/hit? +/wrapper/metrics/v1/custom-metrics? +/WRb.js^ +/wreport.js +/writelog.js +/ws-tracking.js +/wstat.pl +/wstats.php? +/wt_capi.js +/wtbase.js +/wtd.gif? +/wtid.js +/wtinit.js +/wtrack?event= +/wup?cid= +/wwwcount.cgi? +/wxhawkeye.js +/wysistat.js +/x.gif? +/x_track.php? +/xgemius.js +/xinhua_webdig.js +/xiti.js +/xml/pv.xml? +/xn_track.min.js +/xstat.aspx? +/xtclick.js +/xtclicks.js +/xtcore.js +/xtroi.js +/yad_sortab_cetlog.js +/yandex-metrica-watch/* +/yandex-metrika.js +/yastat.js +/ye-gatracker.js +/yell-analytics-app.js +/yell-analytics-min.js +/yell-analytics.js +/yna_stat.js +/yofi-telemetry-prod.min.js +/youtubeVideoAnalytic.js +/ystat.js +/yt-track-streamer +/z.gif? +/zaius-min.js +/zaius.js +/zanox.js +/zaraz/s.js +/zdcc.min.js +/zhugeio.js +/ztracker.js +/~shared/do/api/plausible/?id=$xmlhttprequest +/~shared/do/~/click/?$image +://a869.$~image +://analytics-beacon. +://analytics-cdn. +://analytics.*/collect +://analytics.*/event +://analytics.*/hardal +://analytics.*/hits/ +://analytics.*/impression +://analytics.*/page_entry +://analytics.*/pageview/ +://backstory.ebay. +://beacon.*/track +://blue.*/script.js +://client.rum. +://cmpworker. +://collect.*/pageview +://collector.*/event +://data.*/v1/interact? +://datacollector.*/event +://dwh-prod.*/de.npg/ +://elqtrk. +://fallback.*/collector +://fathom.$domain=~fathom.care|~fathom.co.za|~fathom.fm|~fathom.info|~fathom.io|~fathom.lib.uchicago.edu|~fathom.org|~fathom.video|~fathom.world|~fathomdelivers.com|~fathomseo.com|~usesfathom.com +://gtrack.*/dye +://insights-collector. +://internal-matomo. +://l.*/counter.php?id=$script,~third-party +://l.*/script.php?i=$script,~third-party +://lightning.*/launch/ +://matomo.$domain=~matomo.dhjensen.dk|~matomo.org +://metrics-collector. +://mint.*/?js +://piwik.$domain=~matomo.org|~piwik.pro +://plausible.*/api/event| +://plausible.*/js/script. +://posthog.$script,domain=~posthog.com +://rum.collector. +://segment-api. +://segment-cdn. +://signal.*/hardal +://signals.*/hardal +://sp.*/sp/h|$xmlhttprequest +://ssgtm. +://stat.*/pageview/$xmlhttprequest +://t.targito. +://track.*/collect +://track.*/dye +://track.*/visitor/ +://tracker.*/pageview +://tracker.*/track/event +://tracking.*/beacon/ +://tracking.*/event +?[AQB]&ndh=1&t= +?action=event& +?action=impression& +?action=koko_analytics_collect +?action=log_promo_impression +?action=saveViewStat& +?action=statsjs& +?action=track_visitor& +?action=tracking_script +?event=impressions& +?event=log& +?event=pageview& +?event=performance& +?event=performancelogger: +?groupType=engagement&eventType=CLICK& +?local_ga_js= +?log=player-*&stats_tkn= +?log=player_*&stats_tkn= +?log=stats- +?log=united-impression& +?log=xhl-widgets-events& +?log_performance_metrics +?logType=impression& +?logType=trackEvent& +?pageviews=$third-party +?sam-item/track-impressions +?statify_referrer= +?type=page&event= +?type=pageview& +?v=2&tid=G-$~third-party +?wmcAction=wmcTrack& +_beacon? +_c.gif?c= +_chartbeat.js +_event_tracking? +_imp?Log= +_logHuman= +_nedstat.js +_rpc/log? +_social_tracking.js +_stat.php?referer= +_stat_counter.php? +_trackWebtrekkEvents. +_view_pixel&$image +_webanalytics. +_WebVitalsReporter_ +! outfitters.com.pk/cdn/wpm/b7cecd0b6w90c54c6cpe92089d5m57a67346m.js +! www.32degrees.com/cdn/wpm/b7cecd0b6w90c54c6cpe92089d5m57a67346m.js +! stylo.pk/cdn/wpm/b7cecd0b6w90c54c6cpe92089d5m57a67346m.js +! flyingtiger.com/cdn/wpm/b7cecd0b6w90c54c6cpe92089d5m57a67346m.js +! shop.mattel.com/cdn/wpm/b7cecd0b6w90c54c6cpe92089d5m57a67346m.js +/cdn/wpm/b3918e4e0wbf3ac3cepc5707306mb02b36c6m.js +! https://github.com/AdguardTeam/AdguardFilters/commit/934912b3e760e068a91cd6cb502096a55ab1ca16 +! Tracking on parked domains +/_static/deliver.js?nonce=$script,~third-party +/javascripts/browserfp.min.js?templateId= +/munin/a/ls?t=$xmlhttprequest +/munin/a/tr/browserjs?domain= +/sk-park.php?pid= +/sxp/i/*$script,third-party,domain=~linkvertise.com +/tc_imp.gif? +! https://www.mcclatchy.com/our-impact/markets +/ng.gif? +! Facebook pixels +! /ajax/bnzai?_ +/ajax/bz?_ +! https://imgsen.com/mdaywmhb6u6d/photo-1551582045-6ec9c11d8697.jpg.html +.com/vtrack +! parked domains +/ls.php?t= +/track.php?domain= +/track.php?toggle= +! Amazon +/ajax/counter?ctr= +/batch/1/OE/* +/insights/reportEvent/* +/loi/imp? +/remote-weblab-triggers/* +/uedata? +/unagi.amazon. +/usage/Clickstream? +/usage/ReportEvent? +! hellofresh / greenchef / everyplate / grok +/otlp/traces +! Pinterest +/_/_/logClientError/* +/_/trace/trace/* +! real time web analytics +/rrweb-script.js +/rrweb.js +/rrweb.min.js +! DNS checks +/DNSCheck.js$domain=~github.com +/DNSChecker.js$domain=~github.com +! hawkeye +/hawk.js +/hawkeye.js +/hawklinks.js +! cloudflare tracking +/cdn-cgi/apps/body/*$script,~third-party +/cdn-cgi/apps/head/*$script,~third-party +! Notifcation scripts +/blink-sw.js +/PushexSDK.js +/pushly-sdk.min.js +! Admiral +/admiral.js +/js/admiral- +! eventbrite tracking +/search/log_requests/* +! Consent/GDPR tracking +/cmp/messaging.js +/cmp3.js +/slot_cmp.js +/sourcepoint.js +! Eulerian +&pagegroup=*&url=$script +/ajax/eulerian/* +/eulerian.js +! google tracking +/client_204?$image,other,ping,script +/csi_204?$image,other,ping,script +/gen_204?$image,other,ping,script +/generate_204?$image +! Server-side GTM +&cx=c>m= +&ep.analytics_storage= +&event_name=page_view& +&ga_blocked=$image +&l=dataLayer&cx=c +&sst.sw_exp= +.js?id=GTM- +/*JmVu.js?sp= +/.netlify/scripts/rum +/.rum/@adobe/helix- +/ns.html?id=GTM- +/send_ga4_params? +/tag/proxy?id=G- +://gtm.*.js?st= +://load.*.js?st=$~third-party +://sgtm.*.js? +://tagging.*.js?aw= +://tagging.*/settings.js +! Taggrs.io +.js?tg=$~third-party +! Stape +=aWQ9R1RNL*apiKey=$script,~third-party +=aWQ9R1RNL*page=$script,~third-party +! Google +||adservice.google. +||google.*/url?$ping +||google.com/gen_204? +||googleapis.com^*/gen_204? +||gstatic.com/gen_204? +! Adblock tracking +/ab_track.js +/adb.policy.js +/adblockLogger/* +/sk-logabpstatus.php +/wp-admin/admin-ajax.php?action=adblockvisitor$~third-party +/ws_client?zone=gen$websocket +/wutime-adblocktracker/* + +! *** easylist:easyprivacy/easyprivacy_general_emailtrackers.txt *** +%2Fevent.gif%3F +%2Fo.gif& +%2Fopen.aspx%3F +%2Frw%2Fbeacon_ +-track-email-open? +.acemlna.com/lt.php?$image +.acemlna.com/Prod/link-tracker?$image +.acemlnb.com/Prod/link-tracker?$image +.alcmpn.com/ +.animatebookstore.com/c/$image +.aozorabank.co.jp/r/*/open/$image +.app.returnpath.net/ +.aveda.com/t/$image +.awstrack.me/$image +.backblaze.com/e2t/$image +.backcountry.com/o/$image +.bahn.de/op/$image +.benchurl.com/c/o?$image +.bhphotovideo.com/mo/ +.birdsend.net/o/$image +.bluekai.com/*?e_id_ +.bmetrack.com/c/$image +.bosch-homecomfort.com/op/$image +.cmail19.com/t/$image +.cmail19.com/ti/$image +.cmail20.com/t/$image +.crsend.com/stats/$image +.ct.sendgrid.net/$image +.cuenote.jp/c/*.gif +.delivery-status.com/open? +.demdex.net/event? +.doctolib.de/tr/op/$image +.doubleclick.net/$image +.duolingo.com/open/ +.efeedbacktrk.com/$third-party +.elaine-asp.de/action/view/$image +.email.*/tr/op/$image +.emlfiles4.com/cmpimg/t/$image +.emltrk.com/ +.epicgames.com/O/ +.eurowings.com/cl.aspx?$image +.eventim.de/op/$image +.everestengagement.com/$image +.eviq.org.au/CMSModules/$image +.exponea.com/*/open$image +.facebook.com/tr/$image +.facebook.com/tr?$image +.fiverr.com/js_event_tracking/v1/track_email_open/$image +.flipboard.com/usage? +.getblueshift.com/q/ +.getsendmail.com/p/$image +.gif?mpe=*&mpn= +.gif?stat=open +.goodwell18.com/track/ +.google-analytics.com/ +.gruene.de/lists/ut.php$image +.hilton.com/subscription/watermark.gif? +.hootsuite.com/trk? +.imgur.com/lumbar.gif +.info.kansaimiraibank.co.jp/c/*.gif +.informz.net/z/$image +.innologica.com/t/ +.intercom-mail.com/q/ +.intercom-mail.com/via/$image +.inxmail-commerce.com/tracking/$image +.inxserver.com/transparent.gif +.keap-link003.com/$image +.keap-link004.com/$image +.keap-link005.com/$image +.keap-link006.com/$image +.keap-link007.com/$image +.keap-link008.com/$image +.keap-link009.com/$image +.keap-link010.com/$image +.keap-link011.com/$image +.keap-link012.com/$image +.keap-link013.com/$image +.keap-link014.com/$image +.keap-link015.com/$image +.keap-link016.com/$image +.kijiji.ca/r/ +.klclick.com/$image +.klclick1.com/$image +.lassuranceretraite.fr/mk/op/$image +.list-manage.com/track/ +.mail.odysee.com/o/$image +.mailbutler.io/tracking/ +.mailgun.patreon.com/o/$image +.mailing.*/oo/$image +.maillist-manage.com/click/$image +.maillist-manage.com/clicks/$image +.members.babbel.com/mo/ +.mgmailer.binance.com/o/$image +.microsoft.com/m/v2/d?$image +.mightyape.co.nz/mo? +.mjt.lu/oo/$image +.mkt2684.com/eos/ +.mkt51.net/eos/ +.mozilla.org/eos/$image +.na1.hs-sales-engage.com/$image +.na1.hubspotlinks.com/$image +.ne16.com/do/ +.netcologne.de/-open2/$image +.nordvpn.com/q/$image +.oculus.com/collect/ +.online.costco.com/t?$image +.personaclick.com/track/$image +.pledgebox.com/t/$image +.pstmrk.it/open^ +.publish0x.com/t/ +.qualtrics.com/subscription/watermark.gif? +.quora.com/qemail/mark_read? +.recolution.de/tools/emails/open/$image +.redsift.com/e/o/$image +.revolut.com/q/$image +.s-pt.jp/mail/info/*/img/_.gif +.secureserver.net/bbimage.aspx? +.sendcloud.net/track/$image +.sendemail.gate.io/o/$image +.sendibm1.com/*.gif? +.sendibm1.com/mk/ +.sendibt2.com/tr/op/$image +.sendibt3.com/tr/op/$image +.simplicitycrm.com/rd/ +.smartrmail.co/o/$image +.smtp.net/o/$image +.southwest.com/r/$image +.sp1-brevo.net/mk/op/$image +.sparkpostmail.com/q/$image +.sparkpostmail1.com/q/$image +.sparkpostmail2.com/q/$image +.spmailtechnol.com/q/$image +.spmailtechnolo.com/q/$image +.spreadshirt.net/mo/$image +.starbucks.com/a/ +.substack.com/o/$image +.substackcdn.com/open?$image +.telekom-dienste.de/common/1x1_transparent.png +.theatlantic.com/email.gif? +.titus.de/oo/$image +.tourlane.com/servlet/servlet.ImageServer?$image +.tradewhy.cn//openemail/$image +.travelperk.com/e/o/$image +.travis-ci.com/r/$image +.tripadvisor.com/MptUrl?$image +.tripadvisor.com/q/$image +.umusic-online.com^*/o.gif +.useinsider.com/pixel?$image +.vzbv.de/-open2/$image +.warehousefashion.com/warehouse/e/$image +.webex.com/q/ +.wix.com/_api/ping/ +.zalando.com/images/probe.png +.zippingcare.com/beacon/$image +/1x1_usermatch.gif? +/?s=from_notification_service&u=$image +/_t/open/*$image +/ap.lijit.com/* +/api.transferwise.com/v1/notification-flow/messages/*/open.gif +/atlas-trk.prd.msg.ss-inf.net/*$image +/b.k3r.jp/?a=$image +/beacon.krxd.net/* +/beacon?data=$image +/beaconimages.netflix.net/*$image +/c.vialoops.com/*$image +/CI0/0$image +/ck.m.honto.jp/c/*$image +/cl.animate.co.jp/c/*$image +/cl.mos.jp/q/*$image +/click.*/q/*$image +/click.comicomi-studio.com/mail/u/*$image +/click.em.nike.com/*$image +/click.email.$image +/click.instahyre.com/*$image +/click.php?c= +/clicks.*/q/*$image +/clicks.email.$image +/cmail2.com/t/* +/coherentpath.link/o/*$image +/collector.tripactions.com/*$image +/condor.slgnt.eu/optiext/optiextension.dll?$image +/cp.gap.com/o/*$image +/e.customeriomail.com/e/o/*$image +/email-link.adtidy.org/open/*$image +/email-pixel? +/email.t.*/o/*$image +/email/open/?pd=$image +/email/open? +/email_open_log_ +/emailopen?q=$image +/emailtrack.offers-exchange.com/*$image +/emimp/*$image +/engage.indeed.com/*$image +/eo?_t=$image +/etrack01.com/*$image +/eventing.coursera.org/img/* +/exmo.email/open.html +/gate.amnesty-international.*/open.php? +/github.com/notifications/beacon=$image +/global-cdm.net:443/sap/public/cuan/*/pixel.gif +/go.news.fly.io/e/o/*$image +/gp/r.html?$image +/gridinbound.blob.core. +/ho.php?t=$image +/i?aid=*&se_ac=open&$image +/image.info.jr-odekake.net/lib/*$image +/impression?mkevt= +/inbox.*/imp?$image +/is-tracking-pixel- +/klicks.nebenan.de/q/*$image +/line.my.salesforce.com/servlet/servlet.ImageServer?oid=*&esid=$image +/link-tracker?*&l=open& +/link.coindesk.com/img/* +/link.divenewsletter.com/img/*$image +/link.e-mail.*/mo/*$image +/link.email.usmagazine.com/img/*$image +/link.morningbrew.com/img/*.gif +/link.news.*/mo/*$image +/link.oneplus.com/mo$image +/link.pbtech.co.nz/mo/*$image +/link.theatlantic.com/img/* +/link.thrillist.com/img/*$image +/links1.strava.com/*$image +/lzdmailer.letter.open? +/m-email/t.png? +/mail-stat.airdroid.com/*$image +/mail-tracking/*$image +/mail.sparksport.co.nz/forms/read/* +/mail.sparksport.co.nz/mail/read/* +/mail.thermomix.com/i/*$image +/mailfoogae.appspot.com/t^$image +/mailings/opened/*$image +/MailIsRead?$image +/maillist.*/t/*$image +/maling.roidusat.com/t/*$image +/marketing.wrightentgroup.com/t/*$image +/media.sailthru.com/5ik/1k4/9/*.gif +/newsletter/log/*$image +/newsletter/read?s=$image +/newslink.reuters.com/img/*$image +/newtrackingscript. +/notifications.google.com/g/img/*$image +/notifications.googleapis.com/email/t/* +/notifications/beacon/* +/o/o.gif +/open.aspx? +/open.html?$image +/open/?ot=$image +/open?token=$image +/opens.jscrambler.com/*$image +/p/rp/*?mi_u=*=&sap_id=$image +/p1x1.gif +/page.bsigroup.com/* +/parceldns.com/t/*$image +/pixel-prod. +/pixel.mathtag.com/* +/pixel?cid= +/post.pinterest.com/q/*$image +/pqt.email/o/*$image +/prod-puc-all/*/open^$image +/px/track? +/redir.inxmail-commerce.com/r/*$image +/rover.ebay.com/roveropen/* +/rw/beacon_ +/sendmail.backerupdate.com/t/* +/shopify/assets/themes_support/notifications/spacer- +/shoutout.wix.com/*$image +/sli.*/imp?$image +/sptracking. +/ss/o/*.gif +/t.contactlab.it/v/* +/t.ifly.southwest.com/*$image +/t.notificationmail.microsoft.com/r/?id=$image +/t.paypal.com/*$image +/t.yesware.com/t/*$image +/T/OFC4/*$image +/tlinks.nordaccount.com/q/*$image +/tp.mkt.vorwerk.com/r/*$image +/track.email.$image +/track.interestingfacts.com/?xol= +/track.octanemail.in/sapi/*$image +/track.sp.actionkit.com/* +/track/open.php? +/track/open/*$image +/track/open? +/tracking.fanbridge.com/* +/tracking.srv2.de/op/*$image +/tracking/email.php +/trcksp. +/use1-track.atlassian.com/* +/wf/open?upn=$image +/wizrocketmail.net/r?$image +/znsrc.com/c/*$image +/znsrc.com/o/*$image +://2ip.*/member_photo/$third-party +://c.groovehq.com/*.gif +://cl.melonbooks.co.jp/c/$image +://e.*/open?$image +://email.*/o/$image +://emailtracking.$image +://i.*@groovehq.com.gif$image +://links.*/s/eo/$image +://links.paypal.*/eos/$image +://mail01.monex.co.jp/bin/checker? +://mailmag.hhcross.hankyu-hanshin.jp/c/*.gif +://openedlog. +://parcel-api.delivery-status.*/open/$image +://sg1.wizrocketmail.net/r?e=$image +://t.*/open^$image +://t.order.*/r/?id=$image +://willap.jp/t?r=$image +^endpoint=track^$image +_ad_impression. +_adobe_analytics.js +_track_pixel.gif? +img.promio-connect.com$image +omni.soundestlink.com$image +!-----------------Third-party tracking domains-----------------! +! *** easylist:easyprivacy/easyprivacy_trackingservers_general.txt *** +||00px.net^ +||18wosx.ru^ +||1bliq.io^ +||26sgmin39.de^ +||2cnt.net^ +||2l6ddsmnm.de^ +||2smt6mfgo.de^ +||34.215.155.61^ +||3gl.net^ +||44.228.85.26^ +||46rtpw.ru^ +||5gtb.com^ +||6dp0i7.ru^ +||a47b.com^ +||a8723.com^ +||acsbapp.com^ +||adcontroll.com^ +||aditude.cloud^ +||admaxium.com^ +||admediasales.com^ +||admetrics.events^ +||adnext.co^ +||adrsbl.io^ +||adrtx.net^ +||adscore.com^ +||adsmeasurement.com^ +||adspsp.com^ +||adstk.io^ +||adultium.com^ +||advertease.store^ +||afrdtech.com^ +||aftership-pixel.com^ +||aggle.net^ +||agkn.com^ +||agma-analytics.de^ +||allvideometrika.com^ +||altopd.com^ +||analys.live^ +||analysis.fi^ +||analyt.ir^ +||apeagle.io^ +||apenterprise.io^ +||apharponloun.com^ +||apitiny.net^ +||apxl.io^ +||as3.io^ +||aseads.com^ +||astarsbuilding.com^ +||atmtd.com^ +||audiencetrk.com^ +||australiarevival.com^ +||avads.net^ +||awmonitor.com^ +||b3mxnuvcer.com^ +||bfmio.com^ +||bgalytics.com^ +||bidgx.com^ +||bidswitch.net^ +||bkrtx.com^ +||bloomreach.co^ +||bluekai.com^ +||blueoyster.click^ +||bonne-terre-data-layer.com^ +||bonuscake.ru^ +||bounceexchange.com^ +||bouncex.net^ +||bqstreamer.com^ +||bringmethehats.com^ +||briskeagle.io^ +||briskpelican.io^ +||broadstreet.ai^ +||brwsrfrm.com^ +||btldr.net^ +||btloader.com^ +||bx-cloud.com^ +||bxtag.com^ +||bydst.com^ +||c-stat.eu^ +||cadsuta.net^ +||cafirebreather.com^ +||cbdatatracker.com^ +||cdjbf8trk.com^ +||cdn.sy-d.io^ +||cdnhst.xyz^ +||cdnlogs.org^ +||cdnwidget.com^ +||ciqtracking.com^ +||cityrobotflower.com^ +||ck123.io^ +||ckies.net^ +||cland.fyi^ +||clarity.ms^ +||clcktrax.com^ +||clearbitscripts.com^ +||click360.io^ +||cliquelead.com^ +||cloudwp.io^ +||clrt.ai^ +||cnna.io^ +||cntxtfl.com^ +||confiant-integrations.net^ +||convead.io^ +||convertlink.com^ +||coolretargeting.com^ +||counter247.live^ +||cpx.to^ +||cr-relay.com^ +||crossengage.io^ +||crwdcntrl.net^ +||cvlb.dev^ +||cxense.com^ +||cybba.solutions^ +||czx5eyk0exbhwp43ya.biz^ +||da29e6b8-f018-490f-b25f-39a887fc95e7.xyz^ +||dadalytics.it^ +||datas3ntinel.com^ +||dclsrv.com^ +||ddlnk.net^ +||demdex.net^ +||deviceinf.com^ +||digi-ping.com^ +||directavenue.tech^ +||dispatchunique.com^ +||dkotrack.com^ +||dlxpix.net^ +||dm-event.net^ +||dmepyodjotcuks.com^ +||dmndfrcstng.com^ +||dmpxs.com^ +||domself.de^ +||doublestat.info^ +||dspx.tv^ +||dttrk.com^ +||dwin1.com^ +||dwin2.com^ +||e-ads.com^ +||e1e.io^ +||eagle-insight.com^ +||ecn-ldr.de^ +||ed-sys.net^ +||ediemidnightzombies.com^ +||efreecode.com^ +||egoi.site^ +||emrld.cc^ +||entail-insights.com^ +||enterombacerick.com^ +||enthusiastgaming.net^ +||epsilondelta.co^ +||eqy.link^ +||etop.ro^ +||eu-1-id5-sync.com^ +||everesttech.net^ +||ew3.io^ +||experianmatch.info^ +||ezstat.ru^ +||f27tltnd.de^ +||fairdatacenter.de^ +||fastemu.co^ +||fastfinch.co^ +||fastgull.io^ +||fasttiger.io^ +||featuregates.org^ +||ffbbbdc6d3c353211fe2ba39c9f744cd.com^ +||ffe390afd658c19dcbf707e0597b846d.de^ +||fn-pz.com^ +||fourtimessmelly.com^ +||fpapi.io^ +||fpaudience.com^ +||fpcdn.io^ +||fptls.com^ +||fptls2.com^ +||fptls3.com^ +||fptls4.com^ +||fran.pro^ +||ftlaunchpad.ai^ +||funnelserv.systems^ +||fzlnk.com^ +||g10102301085.co^ +||g10300385420.co^ +||g10498469755.co^ +||g11686975765.co^ +||g1188506010.co^ +||g11885060100.co^ +||g12083144435.co^ +||g12281228770.co^ +||g1386590346.co^ +||g1584674682.co^ +||g1584674683.co^ +||g1584674684.co^ +||g1782759015.co^ +||g1782759016.co^ +||g1980843350.co^ +||g2575096355.co^ +||g594253006.co^ +||g792337340.co^ +||g792337342.co^ +||g792337343.co^ +||g8715710740.co^ +||g8913795075.co^ +||g9111879410.co^ +||g9508048080.co^ +||g9706132415.co^ +||g990421675.co^ +||g9904216750.co^ +||g990421676.co^ +||gbqofs.com^ +||gcprivacy.com^ +||geoedge.be^ +||geotargetly-api-*.com^ +||getdeviceinf.com^ +||getjan.io^ +||glamipixel.com^ +||glimr.io^ +||glookup.info^ +||go-mpulse.net^ +||godiciardstia.com^ +||googleoptimize.com^ +||googletagmanager.com^ +||gotoda.co^ +||greencolumnhealth.com^ +||growth-channel.net^ +||gsitrix.com^ +||gw-dv.vip^ +||hbiq.net^ +||hdmtools.com^ +||healthroundprince.com^ +||heap-api.com^ +||herbgreencolumn.com^ +||herbstarsbuilding.com^ +||hightouch-events.com^ +||hirsung.de^ +||histais.com^ +||hs-analytics.net^ +||hsadspixel.net^ +||hsleadflows.net^ +||htplayground.com^ +||hzstats.com^ +||i218435.net^ +||ibclick.stream^ +||icg-in.com^ +||icg-in.info^ +||iconmediapixel.com^ +||iconnode.com^ +||id-ward.com^ +||identitypxl.app^ +||idx.lat^ +||ilius.net^ +||impactcdn.com^ +||impactradius-event.com^ +||imponestvional.com^ +||imrworldwide.com^ +||imzahrwl.xyz^ +||ineed2s.ro^ +||infisecure.com^ +||innerskinresearch.com^ +||instantfox.co^ +||intellimizeio.com^ +||irs01.com^ +||itsstats.wp1.site^ +||jcpclick.com^ +||jubbie.de^ +||kit22.com^ +||klarinsights.net^ +||krxd.net^ +||kspotson.de^ +||ladsp.com^ +||ldgnrtn.com^ +||ldnlyap.com^ +||leadhit.io^ +||leadsy.ai^ +||lemonpi.io^ +||liveyield.com^ +||lltrck.com^ +||lmepbq.com^ +||log.dance^ +||logicanalytics.io^ +||logstracker.com^ +||logtail.com^ +||loopcybersec.com^ +||lordofthesuperfrogs.com^ +||lrkt-in.com^ +||lsdm.co^ +||lyfnh.io^ +||maggieeatstheangel.com^ +||mapixl.com^ +||markadver.com^ +||match2one.net^ +||matheranalytics.com^ +||mathilde-ads.com^ +||matomo3.org^ +||maxclientstatapi.com^ +||maxepv.com^ +||mb-tracking.com^ +||mbmgivexdvpajr.com^ +||mcangelus.com^ +||mdhv.io^ +||mdstats.info^ +||measureadv.com^ +||media-analytic.com^ +||mediamathrdrt.com^ +||michiganrobotflower.com^ +||minstats.xyz^ +||mirabelanalytics.com^ +||mitour.de^ +||mitself.net^ +||ml-sys.xyz^ +||mm-api.agency^ +||mnbvpo8trk.com^ +||mobildev.in^ +||monicaatron.com^ +||motu-teamblue.services^ +||mpstech.space^ +||mrpdata.net^ +||msfunction.online^ +||mt48.net^ +||mxradon.com^ +||myangular.life^ +||mysingleromance.com^ +||narrativ.com^ +||native-track.com^ +||niblewren.co^ +||nigelmidnightrappers.com^ +||nimblebird.co^ +||nimbleswan.io^ +||nkdyzf.com^ +||nmgassets.com^ +||nmgplatform.com^ +||nmo-ep.nl^ +||notifpush.com^ +||ns1p.net^ +||nxakpj4ac8gkd53.info^ +||o1ych4jb.com^ +||ofgreencolumn.com^ +||omtrdc.net^ +||op-mobile.opera.com^ +||openfpcdn.io^ +||oppuz.com^ +||opti-digital.com^ +||opticksprotection.com^ +||optistats.ovh^ +||organiccdn.io^ +||orhdev.com^ +||ostrichesica.com^ +||p7cloud.net^ +||pageid.info^ +||partnerlinks.io^ +||peiq.services^ +||permutive.app^ +||pippio.com^ +||pix.pub^ +||pixel-tracker.com^ +||pixmg.com^ +||pixrealm.com^ +||pjstat.com^ +||powerrobotflower.com^ +||prfct.co^ +||procroanalytics.com^ +||progmxs.com^ +||protechts.net^ +||purcartz.com^ +||purple-hit.com^ +||pxlnow.in^ +||pxlstat.com^ +||pzapi-ij.com^ +||pzapi-kg.com^ +||pzimff.com^ +||q0losid.com^ +||qntm.pro^ +||qovani.com^ +||queen-one.net^ +||quickkoala.io^ +||quickpcfixer.click^ +||r42tag.com^ +||rapidpanda.io^ +||rapidzebra.io^ +||re-ads.com^ +||realtimely.io^ +||reportic.app^ +||rezync.com^ +||rfpx1.com^ +||rkdms.com^ +||robotflowermobile.com^ +||rt-pixel.com^ +||rtactivate.com^ +||rtgvwr.com^ +||rtmscl.com^ +||rum-ingress-coralogix.com^ +||rumt-sg.com^ +||rumt-zh.com^ +||s-onetag.com^ +||sbgsodufuosmmvsdf.info^ +||sc-static.net^ +||screen13.com^$image +||script.ac^ +||seadform.net^ +||seaskypro.com^ +||selphiu.com^ +||seoab.io^ +||sf-insights.io^ +||sgmntfy.com^ +||sgstats.com^ +||shdid.me^ +||shgcdn3.com^ +||shop-cart.app^ +||site24x7rum.eu^ +||sitecounter.site^ +||sitedataprocessing.com^ +||siteperformancetest.net^ +||sjpf.io^ +||skcrtxr.com^ +||smartiwheel.com^ +||smartmetrics.co.uk^ +||smartytouch.co^ +||snptrk.com^ +||soapfighters.com^ +||solutionshindsight.net^ +||speedyfox.io^ +||speedyrhino.co^ +||spinnaker-js.com^ +||spotlersearchanalytics.com^ +||sprtnd.com^ +||srmdata-eur.com^ +||srvgl.com^ +||ssevt.com^ +||stack-sonar.com^ +||stalkoda.com^ +||stat.ovh^ +||statisticsplatform.com^ +||stats.rip^ +||sturton-lation.com^ +||summerhamster.com^ +||superpointlesshamsters.com^ +||sy57d8wi.com^ +||syncingbridge.com^ +||t13.io^ +||takingbackjuly.com^ +||targetemsecure.blob.core.windows.net^ +||tatpek.com^ +||tblcontent.com^ +||techpump.com^ +||tepatonol.com^ +||testingmetriksbre.ru^ +||thefontzone.com^ +||thepixelpioneer.com^ +||tjk-njk.com^ +||tkrconnector.com^ +||tncid.app^ +||trackclicks.info^ +||trackier.com^ +||tracking24.net^ +||transmapp.com^ +||triplestat.online^ +||trk-brevinate.com^ +||trk-maiorum.com^ +||trkapi.impact.com^ +||trkbc.com^ +||trkn.us^ +||trovo-tag.com^ +||tru.am^ +||truffle.bid^ +||trx-hub.com^$image +||tryzens-analytics.com^ +||turboeagle.co^ +||turbolion.io^ +||tvpixel.com^ +||tw.cx^ +||ugdturner.com^ +||uidapi.com^ +||uimarketpro.com^ +||umami.dev^ +||uqd.io^ +||usrpubtrk.com^ +||ustat.info^ +||venture-365-inspired.com^ +||venusrevival.com^ +||veozn3f.com^ +||veradata.network^ +||vfghe.com^ +||vhit.io^ +||videoplayerhub.com^ +||visit-server.inmobi-choice.io^ +||visitor-speed.com^ +||vkanalytics.net^ +||vmzqqmlpwwmazjnio.com^ +||vpdcp.com^ +||vstats.me^ +||wct-2.com^ +||whale3.io^ +||widgetbe.com^ +||wknd.ai^ +||wlct-one.de^ +||wlct-two.de^ +||wlt-alice.de^ +||wlt-jupiter.de^ +||wmgroup.us^ +||woodpeckerlog.com^ +||xanalytics.vip^ +||yardianalytics.com^ +||yndhi.com^ +||yottlyscript.com^ +||youborafds01.com^ +||youboranqs01.com^ +||zdbb.net^ +||zenaps.com^ +||zippyfrog.co^ +||zjptg.com^ +||zodalt.com^ +||zononi.com^ +||zqtk.net^ +||ztsrv.com^ +! https://github.com/AdguardTeam/AdguardFilters/commit/934912b3e760e068a91cd6cb502096a55ab1ca16 +||rsra-ph.cdn-fileserver.com^ +||rsra.cdn-fileserver.com^ +||rsras-ph.cdn-fileserver.com^ +||rsras.cdn-fileserver.com^ +||sra-px.cdn-fileserver.com^ +||youseasky.com^ + +! *** easylist:easyprivacy/easyprivacy_trackingservers_thirdparty.txt *** +||0emm.com^$third-party +||103bees.com^$third-party +||105app.com^$third-party +||10xlaunch.ai^$third-party +||11nux.com^$third-party +||123count.com^$third-party +||123stat.com^$third-party +||15gifts.com^$third-party +||1freecounter.com^$third-party +||1pel.com^$third-party +||200summit.com^$third-party +||204st.us^$third-party +||206solutions.com^$third-party +||247-inc.com^$third-party +||247ilabs.com^$third-party +||24counter.com^$third-party +||24log.com^$third-party +||2o7.net^$third-party +||2trk.info^$third-party +||360i.com^$third-party +||360tag.com^$third-party +||360tag.net^$third-party +||3dlivestats.com^$third-party +||3dstats.com^$third-party +||40nuggets.com^$third-party +||4mythtracker.xyz^$third-party +||4oney.com^$third-party +||55labs.com^$third-party +||6sc.co^$third-party +||720-trail.co.uk^$third-party +||77tracking.com^$third-party +||7bpeople.com^$third-party +||7eer.net^$third-party +||8020solutions.net^$third-party +||99counters.com^$third-party +||99stats.com^$third-party +||9nl.eu^$third-party +||a-cast.jp^$third-party +||a-counters.com^$third-party +||a-pagerank.net^$third-party +||a013.com^$third-party +||a4b-tracking.com^$third-party +||a8.net^$third-party +||a8ww.net^$third-party +||aaddzz.com^$third-party +||aamsitecertifier.com^$third-party +||aaxdetect.com^$third-party +||abcstats.com^$third-party +||ablecdp.com^$third-party +||ablsrv.com^$third-party +||ablyft.com^$third-party +||abmr.net^$third-party +||absolstats.co.za^$third-party +||abtshield.com^$third-party +||acc-hd.de^$third-party +||accdab.net^$third-party +||access-analyze.org^$third-party +||accessintel.com^$third-party +||acecounter.com^$third-party +||acetrk.com^$third-party +||acexedge.com^$third-party +||acint.net^$third-party +||acq.io^$third-party +||acsbap.com^$third-party +||acstat.com^$third-party +||active-trk7.com^$third-party +||activeconversion.com^$third-party +||activemeter.com^$third-party +||activeprospects.com^$third-party +||actnx.com^$third-party +||acxiom-online.com^$third-party +||acxiomapac.com^$third-party +||ad-srv-track.com^$third-party +||adabra.com^$third-party +||adalyser.com^$third-party +||adara.com^$third-party +||adblade.com^$third-party +||adblockrelief.com^$third-party +||addfreestats.com^$third-party +||addwish.com^$third-party +||adelixir.com^$third-party +||adfenix.com^$third-party +||adfox.ru^$third-party +||adgreed.com^$third-party +||adheart.de^$third-party +||adhslx.com^$third-party +||adinsight.co.kr^$third-party +||adinsight.com^$third-party +||adinte.jp^$third-party +||adku.co^$third-party +||adku.com^$third-party +||admantx.com^$third-party +||admaster.com.cn^$third-party +||admetric.io^$third-party +||adobedtm.com^$third-party,domain=~adobe.com|~costco.com +||adoberesources.net^$third-party,domain=~adobe.com +||adobetag.com^$third-party +||adobetarget.com^$third-party +||adoftheyear.com^$third-party +||adoric-om.com^$third-party +||adpaths.com^$third-party +||adpies.com^$third-party +||adregain.com^$third-party +||adregain.ru^$third-party +||adrizer.com^$third-party +||adrta.com^$third-party +||adsave.co^$third-party +||adsensedetective.com^$third-party +||adsmatcher.com^$third-party +||adssistem.com^$third-party +||adtarget.me^$third-party +||adtector.com^$third-party +||adtelligence.de^$third-party +||adultblogtoplist.com^$third-party +||adunity.com^$third-party +||advalo.com^$third-party +||advanced-web-analytics.com^$third-party +||advangelists.com^$third-party +||advconversion.com^$third-party +||advertising.com^$third-party +||advoncommerce.com^$third-party +||adways.com^$third-party +||adwerx.com^$third-party +||adwstats.com^$third-party +||adxadtracker.com^$third-party +||adxcel-ec2.com^$third-party +||adyapper.com^$third-party +||aff-handler.com^$third-party +||affex.org^$third-party +||affilae.com^$third-party +||affiliateedge.eu^$third-party +||affiliatly.com^$third-party +||affilimate.com^$third-party +||affilimate.io^$third-party +||affilired.com^$third-party +||affinesystems.com^$third-party +||affinitymatrix.com^$third-party +||affistats.com^$third-party +||affonso.io^$third-party +||afftrack.pro^$third-party +||afsanalytics.com^$third-party +||afterclick.co^$third-party +||agentanalytics.com^$third-party +||agentinteractive.com^$third-party +||agilecrm.com^$third-party +||agilesrv.com^$third-party +||agilone.com^$third-party +||agrvt.com^$third-party +||ahrefs.com^$third-party +||aimediagroup.com^$third-party +||air2s.com^$third-party +||airbrake.io^$third-party +||airlogak.com^$third-party +||airpr.com^$third-party +||airserve.net^$third-party +||aivalabs.com^$third-party +||akanoo.com^$third-party +||akstat.com^$third-party +||akstat.io^$third-party +||albacross.com^$third-party +||alcmpn.com^$third-party +||alenty.com^$third-party +||alltracked.com^$third-party +||alocdn.com^$third-party +||alpixtrack.com^$third-party +||altabold1.com^$third-party +||altastat.com^$third-party +||alvenda.com^$third-party +||alzexa.com^$third-party +||amadesa.com^$third-party +||amavalet.com^$third-party +||amazingcounters.com^$third-party +||ambercrow.com^$third-party +||amikay.com^$third-party +||amnet.tw^$third-party +||amp.analytics-debugger.com^$third-party +||amplitude.com^$third-party +||amung.us^$third-party +||analitycs.net^$third-party +||analoganalytics.com^$third-party +||analytically.net^$third-party +||analytics-helper.com^$third-party +||analytics.vg^$third-party +||analyticson.com^$third-party +||analyticsweb.net^$third-party +||analyticswizard.com^$third-party +||analyzee.io^$third-party +||analyzz.com^$third-party +||anametrix.com^$third-party +||anametrix.net^$third-party +||angelfishstats.com^$third-party +||angorch-cdr7.com^$third-party +||anonm.io^$third-party +||anonymised.io^$third-party +||anrdoezrs.net^$third-party +||answerbook.com^$third-party +||answerscloud.com^$third-party +||anti-cheat.info^$third-party +||antiblock.info^$third-party +||anura.io^$third-party +||anytrack.io^$third-party +||apexstats.com^$third-party +||apextag.com^$third-party +||apextwo.com^$third-party +||api64.com^$third-party +||apicit.net^$third-party +||apollofind.com^$third-party +||apolloprogram.io^$third-party +||appboycdn.com^$third-party +||appcast.io^$third-party +||appdynamics.com^$third-party +||appn.center^$third-party +||aprtn.com^$third-party +||aprtx.com^$third-party +||apsis1.com^$third-party +||apsislead.com^$third-party +||aptrinsic.com^$third-party +||aqtracker.com^$third-party +||aralego.net^$third-party +||arc.io^$third-party +||arcadeweb.com^$third-party +||ardalio.com^$third-party +||arena-quantum.co.uk^$third-party +||arkayne.com^$third-party +||arlime.com^$third-party +||arpxs.com^$third-party +||arrivalist.com^$third-party +||arrowpushengine.com^$third-party +||arsdev.net^$third-party +||artefact.is^$third-party +||artfut.com^$third-party +||ascend.ai^$third-party +||assoctrac.com^$third-party +||asteriresearch.com^$third-party +||astro-way.com^$third-party +||at-o.net^$third-party +||atatus.com^$third-party +||athenainstitute.biz^$third-party +||atp.io^$third-party +||atsptp.com^$third-party +||attracta.com^$third-party +||attributionapp.com^$third-party +||audience.systems^$third-party +||audienceiq.com^$third-party +||audienceplay.com^$third-party +||audiencerate.com^$third-party +||audiens.com^$third-party +||audrte.com^$third-party +||aufp.io^$third-party +||authorinsights.com^$third-party +||auto-ping.com^$third-party +||autoaffiliatenetwork.com^$third-party +||autoaudience.com^$third-party +||autoid.com^$third-party +||autoline-top.com^$third-party +||automizely-analytics.com^$third-party +||avantlink.com^$third-party +||avapartner.com^$third-party +||avazudsp.net^$third-party +||avenseo.com^$third-party +||avmws.com^$third-party +||awasete.com^$third-party +||awesomelytics.com^$third-party +||awfonts.com^$script,third-party +||awin1.com^$third-party +||awstats.cloud^$third-party +||awstrack.me^$third-party +||axf8.net^$third-party +||azera-s014.com^$third-party +||azointel.com^$third-party +||b0e8.com^$third-party +||b1img.com^$third-party +||b1js.com^$third-party +||b2c.com^$third-party +||babator.com^$third-party +||baikalize.com^$third-party +||bam-x.com^$third-party +||baptisttop1000.com^$third-party +||baremetrics.com^$third-party +||barilliance.net^$third-party +||basicstat.com^$third-party +||basilic.io^$third-party +||baynote.net^$third-party +||baztrack.com^$third-party +||bbthat.com^$script,third-party +||bdash-cloud.com^$third-party +||beacon.kmi-us.com^$third-party +||beaconstreetservices.com^$third-party +||beampulse.com^$third-party +||beanstalkdata.com^$third-party +||beanstock.com^$third-party +||beemray.com^$third-party +||beemrdwn.com^$third-party +||behavioralengine.com^$third-party +||belstat.be^$third-party +||belstat.com^$third-party +||belstat.de^$third-party +||belstat.fr^$third-party +||belstat.nl^$third-party +||benchtag2.co^$third-party +||bentonow.com^$third-party +||berg-6-82.com^$third-party +||best-top.de^$third-party +||bestcontactform.com^$~image,third-party +||betarget.com^$third-party +||betsmart.media^$third-party +||bettermeter.com^$third-party +||beusable.net^$third-party +||bfoleyinteractive.com^$third-party +||bgpng.me^$third-party +||bidphysics.com^$third-party +||bidr.io^$third-party +||bidsimulator.com^$third-party +||bigbrain.me^$third-party +||bigcattracks.com^$third-party +||bigmir.net^$third-party +||bignutty.xyz^$third-party +||bigreal.org^$third-party +||bigtracker.com^$third-party +||billygrace.com^$third-party +||bionicclick.com^$third-party +||bizible.com^$third-party +||bizo.com^$third-party +||bizspring.net^$third-party +||bjcathay.com^$third-party +||blaick.com^$third-party +||blisspointmedia.com^$third-party +||blockdetector.org^$third-party +||blockmetrics.com^$third-party +||blog-stat.com^$third-party +||blogmeetsbrand.com^$third-party +||blogpatrol.com^$third-party +||blogrankers.com^$third-party +||blogreaderproject.com^$third-party +||bluecava.com^$third-party +||blueconic.net^$third-party +||blueknow.com^$third-party +||blvdstatus.com^$third-party +||bm23.com^$third-party +||bmlmedia.com^$third-party +||bmmetrix.com^$third-party +||bnqt.com^$third-party +||bntech.io^$third-party +||boomerang.com.au^$third-party +||botman.ninja^$third-party +||botsvisit.com^$third-party +||bouncepilot.com^$third-party +||bouncex.com^$third-party +||bp01.net^$third-party +||bpmonline.com^$third-party +||brandlock.io^$third-party +||brat-online.ro^$third-party +||brcdn.com^$third-party +||bridged.media^$third-party +||bridgevine.com^$third-party +||brightfunnel.com^$third-party +||brilig.com^$third-party +||brilliantcollector.com^$third-party +||britepool.com^$third-party +||bronto.com^$third-party +||browser-intake-datadoghq.eu^$third-party +||browser-statistik.de^$third-party +||browser-update.org^$third-party +||bstn-14-ma.com^$third-party +||btbuckets.com^$third-party +||btncdn.com^$third-party +||bttn.io^$third-party +||btttag.com^$third-party +||bubblestat.com^$third-party +||bugherd.com^$third-party +||bugsnag.com^$third-party +||bullwhip.cloud^$third-party +||bunchbox.co^$third-party +||burpee.xyz^$third-party +||burstbeacon.com^$third-party +||burt.io^$third-party +||buzzdeck.com^$third-party +||bytemgdd.com^$third-party +||c-o-u-n-t.com^$third-party +||c.hit.ua^$third-party +||c1exchange.com^$third-party +||c212.net^$third-party +||c3metrics.com^$third-party +||c3tag.com^$third-party +||c4tracking01.com^$third-party +||cactusglobal.io^$third-party +||cactusmedia.com^$third-party +||cadreon.com^$third-party +||call-tracking.co.uk^$third-party +||callisto.fm^$third-party +||callmeasurement.com^$third-party +||callrail.com^$third-party +||callreports.com^$third-party +||calltouch.ru^$third-party +||calltrackingmetrics.com^$third-party +||calltracks.com^$third-party +||campaigncog.com^$third-party +||campaignmonitor.com^$third-party +||canddi.com^$third-party +||canlytics.com^$third-party +||canopylabs.com^$third-party +||captify.co.uk^$third-party +||captivate.ai^$third-party +||capturehighered.net^$third-party +||capturemedia.network^$third-party +||capturly.com^$third-party +||caramel.press^$third-party +||cartstack.com^$third-party +||cashburners.com^$third-party +||cashcount.com^$third-party +||cbtrk.net^$third-party +||cccpmo.com^$third-party +||ccgateway.net^$third-party +||ccscserver.com^$third-party +||cdn-net.com^$third-party +||cdnlibjs.com^$third-party +||cdnmaster.com^$third-party +||cdnopw.com^$third-party +||cedexis.com^$third-party +||celebros-analytics.com^$third-party +||celebrus.com^$third-party +||center.io^$third-party +||cetrk.com^$third-party +||cfmediaview.com^$third-party +||cftrack.com^$third-party +||chartaca.com^$third-party +||chartbeat.com^$third-party +||chartbeat.net^$third-party +||checkreferrer.io^$third-party +||checkstat.nl^$third-party +||chibi.sh^$third-party +||christiantop1000.com^$third-party +||chtbl.com^$script,third-party,xmlhttprequest +||cintnetworks.com^$third-party +||cityadstrack.com^$third-party +||cityspark.com^$third-party +||claritytag.com^$third-party +||clarium.io^$third-party +||clarivoy.com^$third-party +||claydar.com^$third-party +||clearbit.com^$third-party +||clearbitjs.com^$third-party +||clevi.com^$third-party +||click-url.com^$third-party +||clickable.net^$third-party +||clickaider.com^$third-party +||clickalyzer.com^$third-party +||clickbrainiacs.com^$third-party +||clickcease.com^$third-party +||clickclick.net^$third-party +||clickdensity.com^$third-party +||clickening.com^$third-party +||clickferret.com^$third-party +||clickguard.com^$third-party +||clickguardian.co.uk^$third-party +||clickmanage.com^$third-party +||clickmeter.com^$third-party +||clickonometrics.pl^$third-party +||clickpathmedia.com^$third-party +||clickprotector.com^$third-party +||clickreport.com^$third-party +||clicksagent.com^$third-party +||clicksen.se^$third-party +||clicksentry.nl^$third-party +||clickshift.com^$third-party +||clicktale.net^$third-party +||clicktracks.com^$third-party +||clickx.io^$third-party +||clickzs.com^$third-party +||clickzzs.nl^$third-party +||clientgear.com^$third-party +||clipcentric.com^$third-party +||clixgalore.com^$third-party +||clixpy.com^$third-party +||cloud-exploration.com^$third-party +||cloud-iq.com^$third-party +||cloudiq.com^$third-party +||cloudtracer101.com^$third-party +||cmcore.com^$third-party +||cmmeglobal.com^$third-party +||cmptch.com^$third-party +||cnt1.net^$third-party +||cnwebperformance.biz^$third-party +||cnxweb.com^$third-party +||cnzz.com^$third-party +||cobaltgroup.com^$third-party +||codata.ru^$third-party +||cogmatch.net^$third-party +||cognativex.com^$third-party +||cognitivematch.com^$third-party +||cognitivlabs.com^$third-party +||cohesionapps.com^$third-party +||coll2onf.com^$third-party +||collarity.com^$third-party +||collecting.click^$third-party +||collserve.com^$third-party +||colossusssp.com^$third-party +||commander1.com^$third-party +||commoninja.com/api/v1/event/report/ +||company-target.com^$third-party +||compteur.cc^$third-party +||compteur.fr^$third-party +||conductrics.com^$third-party +||conductrics.net^$third-party +||conduze.com^$third-party +||confidence.dev^$third-party +||config.parsely.com^$third-party +||confirmational.com^$third-party +||connectif.cloud^$third-party +||contactmonkey.com^$third-party +||content-square.net^$third-party +||contentinsights.com^$third-party +||contentspread.net^$third-party +||contentsquare.net^$third-party +||continue.com^$third-party +||convergetrack.com^$third-party +||conversionfly.com^$third-party +||conversionlogic.net^$third-party +||conversionly.com^$third-party +||conversionruler.com^$third-party +||convertagain.net^$third-party +||convertcart.com^$third-party +||convertexperiments.com^$third-party +||convertglobal.com^$third-party +||convertro.com^$third-party +||cookieless.tech^$third-party +||cooladata.com^$third-party +||copperegg.com^$third-party +||coralogix.com^$third-party +||core-cen-54.com^$third-party +||coremetrics.com^$third-party +||coremotives.com^$third-party +||cost1action.com^$third-party +||count.ly^$third-party +||countby.com^$third-party +||counter.dev^$third-party +||counter.gd^$third-party +||counterapi.dev^$third-party +||counterbot.com^$third-party +||countercentral.com^$third-party +||countergeo.com^$third-party +||counterland.com^$third-party +||counters4u.com^$third-party +||countersforlife.com^$third-party +||countertracker.com^$third-party +||counting4free.com^$third-party +||countomat.com^$third-party +||countz.com^$third-party +||cpcmanager.com^$third-party +||cpmstar.com^$third-party +||cpx-research.com^$third-party +||cqcounter.com^$third-party +||craftkeys.com^$third-party +||craktraffic.com^$third-party +||crashlytics.com^$third-party +||crazyclickstats.com^$third-party +||crazyegg.com^$third-party +||criteo.com^$third-party +||criteo.net^$third-party +||crmmetrixwris.com^$third-party +||crosspixel.net^$third-party +||crosswalkmail.com^$third-party +||crowdscience.com^$third-party +||crtx.info^$third-party +||csdata1.com^$third-party +||cuberoot.co^$third-party +||curalate.com^$third-party +||customer.io^$third-party +||customerconversio.com^$third-party +||customerlabs.co^$third-party +||cux.io^$third-party +||cvtr.io^$third-party +||cya2.net^$third-party +||cyberanalytics.nl^$third-party +||d-1.co^$third-party +||d41.co^$third-party +||dacounter.com^$third-party +||dapxl.com^$third-party +||dashboard.io^$third-party +||data-dynamic.net^$third-party +||data.u.software^$third-party +||databrain.com^$third-party +||databreakers.com^$third-party +||datacaciques.com^$third-party +||datacoral.com^$third-party +||datacoral.io^$third-party +||datacygnal.io^$third-party +||datadoghq-browser-agent.com^$third-party +||datadoghq.eu^$third-party +||datadsk.com^$third-party +||datafa.st^$third-party +||datafeedfile.com^$third-party +||datafront.co^$third-party +||datam.com^$third-party +||datamilk.app^$third-party +||datamind.ru^$third-party +||dataperforma.com^$third-party +||datapulse.app^$third-party +||dataroid.com^$third-party +||datastat.me^$third-party +||datasteam.io^$third-party +||dataunlocker.com^$third-party +||dataxpand.com^$third-party +||datazoom.io^$third-party +||datvantage.com^$third-party +||db-ip.com^$third-party +||dc-storm.com^$third-party +||dcmn.com^$third-party +||ddm.io^$third-party +||deadlinefunnel.com^$third-party +||decdna.net^$third-party +||decibelinsight.net^$third-party +||decideinteractive.com^$third-party +||deep-content.io^$third-party +||deep.bi^$third-party +||deepattention.com^$third-party +||deepchannel.com^$third-party +||dejavu.mlapps.com^$third-party +||demandbase.com^$third-party +||demandscience.com^$third-party +||departapp.com^$third-party +||deqwas.net^$third-party +||devatics.com^$third-party +||devatics.io^$third-party +||device9.com^$third-party +||di-capt.com^$third-party +||dialogtech.com^$third-party +||did-it.com^$third-party +||didit.com^$third-party +||didna.io^$third-party +||diffusion-tracker.com^$third-party +||digianalytics.fr^$third-party +||digitaloptout.com^$third-party +||digitaltarget.ru^$third-party +||digitru.st^$third-party +||dignow.org^$third-party +||dimestore.com^$third-party +||dimml.io^$third-party +||discover-path.com^$third-party +||discovertrail.net^$third-party +||displaymarketplace.com^$third-party +||distiltag.com^$third-party +||dmanalytics1.com^$third-party +||dmclick.cn^$third-party +||dmpcounter.com^$third-party +||dmpprof.com^$third-party +||dmtracker.com^$third-party +||dmxleo.com^$third-party +||dnsdelegation.io^$third-party +||doceree.com^$third-party +||doclix.com^$third-party +||dojomojo.com^$third-party +||dojomojo.ninja^$third-party +||domdog.io^$third-party +||dominocounter.net^$third-party +||domodomain.com^$third-party +||donreach.com^$third-party +||dotaki.com^$third-party +||dpbolvw.net^$third-party +||dps-reach.com^$third-party +||dreamdata.cloud^$third-party +||driv-analytics.com^$third-party +||dsail-tech.com^$third-party +||dsmmadvantage.com^$third-party +||dsmstats.com^$third-party +||dsparking.com^$third-party +||dsply.com^$third-party +||dtc-v6t.com^$third-party +||dti-ranker.com^$third-party +||dtxngr.com^$third-party +||durationmedia.net^$third-party +||dvnfo.com^$third-party +||dynatrace-managed.com^$third-party +||dynatrace.com^$third-party,domain=~dynatracelabs.com +||dyntrk.com^$third-party +||e-contenta.com^$third-party +||e-goi.com^$third-party,domain=~e-goi.com.br|~e-goi.pt +||e-pagerank.net^$third-party +||e-referrer.com^$third-party +||e-webtrack.net^$third-party +||eacla.com^$third-party +||easy-hit-counter.com^$third-party +||easy-hit-counters.com^$third-party +||easycounter.com^$third-party +||easyhitcounters.com^$third-party +||easyresearch.se^$third-party +||eazydata.io^$third-party +||ebtrk1.com^$third-party +||ec-track.com^$third-party +||ecommstats.com^$third-party +||ecustomeropinions.com^$third-party +||edgeadx.net^$third-party +||edigitalsurvey.com^$third-party +||eggplant.cloud^$third-party +||ekmpinpoint.co.uk^$third-party +||ekmpinpoint.com^$third-party +||ela-3-tnk.com^$third-party +||elastx.net^$third-party +||elitics.com^$third-party +||eloqua.com^$~stylesheet,third-party +||eluxer.net^$third-party +||email-match.com^$third-party +||embeddedanalytics.com^$third-party +||emediatrack.com^$third-party +||emjcd.com^$third-party +||emltrk.com^$third-party +||enecto.com^$third-party +||engageclick.com^$third-party +||engagemaster.com^$third-party +||engagetosell.com^$third-party +||engagio.com^$third-party +||engine212.com^$third-party +||engine64.com^$third-party +||enhencer.com^$third-party +||enquisite.com^$third-party +||ensighten.com^$third-party +||entravision.com^$third-party +||eolcdn.com^$third-party +||ep4p.com^$third-party +||eperfectdata.com^$third-party +||epilot.com^$third-party +||epitrack.com^$third-party +||eproof.com^$third-party +||eps-analyzer.de^$third-party +||ereportz.com^$third-party +||escalated.io^$third-party +||esearchvision.com^$third-party +||esm1.net^$third-party +||esomniture.com^$third-party +||esputnik.com^$third-party +||estara.com^$third-party +||estat.com^$third-party +||estrack.net^$third-party +||etahub.com^$third-party +||ethn.io^$third-party +||ethnio.com^$third-party +||ethyca.com^$third-party +||etp-prod.com^$third-party +||etracker.com^$third-party +||etrigue.com^$third-party +||etyper.com^$third-party +||eu-survey.com^$third-party +||eulerian.net^$third-party +||euleriancdn.net^$third-party +||eum-appdynamics.com^$third-party +||europagerank.com^$third-party +||europuls.eu^$third-party +||europuls.net^$third-party +||eval.privateapi.click^$third-party +||everestjs.net^$third-party +||evergage.com^$third-party +||evisitanalyst.com^$third-party +||evorra.net^$third-party +||evyy.net^$third-party +||ewebanalytics.com^$third-party +||exactag.com^$third-party +||excited.me^$third-party +||exclusiveclicks.com^$third-party +||exelator.com^$third-party +||exitmonitor.com^$third-party +||exorigos.com^$third-party +||experianmarketingservices.digital^$third-party +||explore-123.com^$third-party +||exposebox.com^$third-party +||extole.com^$third-party +||extrawatch.com^$third-party +||extreme-dm.com^$third-party +||extreme-ip-lookup.com^$third-party +||eyein.com^$third-party +||ezec.co.uk^$third-party +||ezytrack.com^$third-party +||f92j5.com^$third-party +||fabricww.com^$third-party +||faktor.io^$third-party +||fandommetrics.com^$third-party +||fanplayr.com^$third-party +||fast-thinking.co.uk^$third-party +||fastanalytic.com^$third-party +||fastly-analytics.com^$third-party +||fastly-insights.com^$third-party +||fathomseo.com^$third-party +||fcs.ovh^$third-party +||feathr.co^$third-party +||feedcat.net^$third-party +||feedjit.com^$third-party +||feedperfect.com^$third-party +||figpii.com^$third-party +||fiksu.com^$third-party +||filitrac.com^$third-party +||finalid.com^$third-party +||finalyticsdata.com^$third-party +||find-ip-address.org^$third-party +||fireworkanalytics.com^$third-party +||firstpromoter.com^$third-party +||fitanalytics.com^$third-party +||flagcounter.com^$third-party +||flaghit.com^$third-party +||flash-counter.com^$third-party +||flashb.id^$third-party +||flcounter.com^$third-party +||flexlinkspro.com^$third-party +||flixfacts.co.uk^$third-party +||flixsyndication.net^$third-party +||flockrocket.io^$third-party +||flocktory.com^$third-party +||fluencymedia.com^$third-party +||fluidsurveys.com^$third-party +||flurry.com^$third-party +||flx1.com^$third-party +||flxpxl.com^$third-party +||flyingpt.com^$third-party +||fml-x.com^$third-party +||fndrsp.net^$third-party +||followercounter.com^$third-party +||footprintdns.com^$third-party +||footprintlive.com^$third-party +||force24.co.uk^$third-party +||forensics1000.com^$third-party +||foreseeresults.com^$third-party +||forkcdn.com^$third-party +||formalyzer.com^$third-party +||formisimo.com^$third-party +||forter.com^$third-party +||fouanalytics.com^$third-party +||foundry42.com^$third-party +||fout.jp^$third-party +||fpctraffic2.com^$third-party +||fpjs.io^$third-party +||fprnt.com^$third-party +||fqsecure.com^$third-party +||fraud0.com^$third-party +||fraudjs.io^$third-party +||free-counter.co.uk^$third-party +||free-counter.com^$third-party +||free-counters.co.uk^$third-party +||free-hit-counters.net^$third-party +||free-website-statistics.com^$third-party +||freebloghitcounter.com^$third-party +||freecountercode.com^$third-party +||freecounterstat.com^$third-party +||freegeoip.app^$third-party +||freegeoip.net^$third-party +||freehitscounter.org^$third-party +||freelogs.com^$third-party +||freesitemapgenerator.com^$third-party +||freestats.com^$third-party +||freetrafficsystem.com^$third-party +||freeusersonline.com^$third-party +||freevisitorcounters.com^$third-party +||freeweblogger.com^$third-party +||freshcounter.com^$third-party +||freshmarketer.com^$third-party +||freshplum.com^$third-party +||freshrelevance.com^$third-party +||friendbuy.com^$third-party +||frodx.com^$third-party +||froomle.com^$third-party +||fruitflan.com^$third-party +||fsd2.digital^$third-party +||fstats.xyz^$third-party +||fstrk.net^$third-party +||ftbpro.com^$third-party +||ftz.io^$third-party +||fueldeck.com^$third-party +||fuelx.com^$third-party +||fugetech.com^$third-party +||fullcircleinsights.com^$third-party +||fullstory.com^$third-party +||funneld.com^$third-party +||funnelytics.io^$third-party +||funstage.com^$third-party +||fusestats.com^$third-party +||fuziontech.net^$third-party +||fwpixel.com^$third-party +||fyreball.com^$third-party +||ga-analytics.com^$third-party +||gaconnector.com^$third-party +||gameanalytics.com^$third-party +||gammachug.com^$third-party +||gatorleads.co.uk^$third-party +||gaug.es^$third-party +||gbotvisit.com^$third-party +||gc.zgo.at^$third-party +||geistm.com^$third-party +||gemius.pl^$third-party +||genieesspv.jp^$third-party +||geniuslinkcdn.com^$third-party +||geo-targetly.com^$third-party +||geobytes.com^$third-party +||geoip-db.com^$third-party +||geoiplookup.io^$third-party +||geolid.com^$third-party +||geoplugin.net^$third-party +||georiot.com^$third-party +||geotargetly-1a441.appspot.com^$third-party +||geotargetly.co^$third-party +||getaawp.com^$third-party +||getambassador.com^$third-party +||getbackstory.com^$third-party +||getblue.io^$third-party +||getblueshift.com^$third-party +||getclicky.com^$third-party +||getconversion.net^$third-party +||getdrip.com^$third-party +||getfreebl.com^$third-party +||getinsights.io^$third-party +||getlasso.co^$third-party +||getrockerbox.com^$third-party +||getsentry.com^$third-party,domain=~sentry.dev|~sentry.io +||getsmartcontent.com^$third-party +||getsmartlook.com^$third-party +||getstat.net^$third-party +||getstatistics.se^$third-party +||getstats.org^$third-party +||getviously.com^$third-party +||getwarmly.com^$third-party +||gez.io^$third-party +||giddyuptrk.com^$third-party +||gigcount.com^$third-party +||gim.co.il^$third-party +||glancecdn.net^$third-party,domain=~glance.net +||glassboxcdn.com^$third-party +||glassboxdigital.io^$third-party +||glbtracker.com^$third-party +||globalsiteanalytics.com^$third-party +||globalwebindex.net^$third-party +||globase.com^$third-party +||globel.co.uk^$third-party +||globetrackr.com^$third-party +||glove.fit^$third-party +||gnpge.com^$third-party +||goadservices.com^$third-party +||goatcounter.com^$third-party +||godhat.com^$third-party +||goingup.com^$third-party +||gojsmanager.com^$third-party +||goldstats.com^$third-party +||goneviral.com^$third-party +||goodcounter.org^$third-party +||goodmeasure.io^$third-party +||google-analytics.com^$script,third-party,xmlhttprequest +||googleadservices.com^$third-party +||googlerank.info^$third-party +||gooo.al^$third-party +||gopjn.com^$third-party +||gostats.com^$third-party +||gostats.org^$third-party +||gosupersonic.ai^$third-party +||govisibl.io^$third-party +||govmetric.com^$third-party +||granify.com^$third-party +||grapheffect.com^$third-party +||gravity4.com^$third-party +||grmtech.net^$third-party +||group-ib.ru^$third-party +||growthrx.in^$third-party +||gsecondscreen.com^$third-party +||gsght.com^$third-party +||gsimedia.net^$third-party +||gsspat.jp^$third-party +||gssprt.jp^$third-party +||gtcslt-di2.com^$third-party +||gtopstats.com^$third-party +||guanoo.net^$third-party +||gvisit.com^$third-party +||gwmtracking.com^$third-party +||hadronid.net^$third-party +||halldata.com^$third-party +||haloscan.com^$third-party +||havasedge.com^$third-party +||haveamint.com^$third-party +||heapanalytics.com^$third-party +||heatmap.com^$third-party +||heatmap.it^$third-party +||hellosherpa.com^$third-party +||hentaicounter.com^$third-party +||hexagon-analytics.com^$third-party +||heylink.com^$third-party +||heystaks.com^$third-party +||hiconversion.com^$third-party +||hif.to^$third-party +||higherengine.com^$third-party +||highlight.io^$third-party +||highlight.run^$third-party +||highmetrics.com^$third-party +||hira-meki.jp^$third-party +||histats.com^$third-party +||hit-360.com^$third-party +||hit-counter.info^$third-party +||hit-parade.com^$third-party +||hit2map.com^$third-party +||hitbox.com^$third-party +||hitcounterstats.com^$third-party +||hitmatic.com^$third-party +||hits2u.com^$third-party +||hitslink.com^$third-party +||hitslog.com^$third-party +||hitsniffer.com^$third-party +||hitsprocessor.com^$third-party +||hitstatus.com^$third-party +||hitsteps.com^$third-party +||hittail.com^$third-party +||hittracker.com^$third-party +||hitwake.com^$third-party +||hitwebcounter.com^$third-party +||hlstatus.com^$third-party +||hmstats.com^$third-party +||hockeystack.com^$third-party +||holdonstranger.com^$third-party +||horzrb.com^$third-party +||hospitality-optimizer.com^$third-party +||host-tracker.com^$third-party +||hostip.info^$third-party +||hotjar.com^$third-party +||hotjar.io^$third-party +||hotlog.ru^$third-party +||hscta.net^$third-party +||hubdigitalads.com^$third-party +||hubvisor.io^$third-party +||hum.works^$third-party +||humanclick.com^$third-party +||humanpresence.app^$third-party +||hunt-leads.com^$third-party +||hurra.com^$third-party +||hwpub.com^$third-party +||hxtrack.com^$third-party +||hybrid.ai^$third-party +||hyfntrak.com^$third-party +||hyperactivate.com^$third-party +||hypercounter.com^$third-party +||hyperdx.io^$third-party +||hypestat.com^$third-party +||iaudienc.com^$third-party +||ib-ibi.com^$third-party +||ibeat-analytics.com^$third-party +||ibpxl.com^$third-party +||ibpxl.net^$third-party +||ic-live.com^$third-party +||iclive.com^$third-party +||icreate-campaign.com^$third-party +||icstats.nl^$third-party +||iculture.report^$third-party +||id-visitors.com^$third-party +||identitymind.com^$third-party +||ideoclick.com^$third-party +||idio.co^$third-party +||idtargeting.com^$third-party +||iesnare.com^$third-party +||ifactz.com^$third-party +||ifvox.com^$third-party +||igaming.biz^$third-party +||iljmp.com^$third-party +||illumenix.com^$third-party +||ilogbox.com^$third-party +||imhd.io^$third-party +||immanalytics.com^$third-party +||impression.link^$third-party +||imrtrack.com^$third-party +||imtwjwoasak.com^$third-party +||inboxtag.com^$third-party +||incentivesnetwork.net^$third-party +||increasingcustomers-tag.com^$third-party +||index.ru^$third-party +||indexstats.com^$third-party +||indextools.com^$third-party +||indicative.com^$third-party +||indicia.com^$third-party +||individuad.net^$third-party +||ineedhits.com^$third-party +||inetstats.org^$third-party +||inferclick.com^$third-party +||infinigraph.com^$third-party +||infinity-tracking.com^$third-party +||infinity-tracking.net^$third-party +||inflectionpointmedia.com^$third-party +||infopro-insight.com^$third-party +||infoprodata.com^$third-party +||informz.net^$third-party +||ingest-lr.com^$third-party +||inimbus.com.au^$third-party +||innertrends.com^$third-party +||innovateads.com^$third-party +||inphonic.com^$third-party +||inpwrd.com^$third-party +||inside-graph.com^$third-party +||insightera.com^$third-party +||insightgrit.com^$third-party +||insitemetrics.com^$third-party +||inspectlet.com^$third-party +||instadia.net^$third-party +||instana.io^$third-party +||instant.page^$third-party +||instapage.com^$third-party,domain=~pagedemo.co +||instapagemetrics.com^$third-party +||instore.biz^$third-party +||intake-lr.com^$third-party +||intelli-direct.com^$third-party +||intelligencefocus.com^$third-party +||intellimize.co^$third-party +||interact-analytics.com^$third-party +||interceptum.com^$third-party +||intermundomedia.com^$third-party +||interstateanalytics.com^$third-party +||intervigil.com^$third-party +||investingchannel.com^$third-party +||invitemedia.com^$third-party +||invitereferrals.com^$third-party +||invoc.us^$third-party +||invoca.net^$third-party +||invoca.solutions^$third-party +||io1g.net^$third-party +||iocnt.net^$third-party +||iotechnologies.com^$third-party +||iovation.com^$third-party +||ip-label.net^$third-party +||ip-tracker.org^$third-party +||ip2c.org^$third-party +||ip2location.com^$third-party +||ip2map.com^$third-party +||ip2phrase.com^$third-party +||ipaddresslabs.com^$third-party +||ipcatch.com^$third-party +||iper2.com^$third-party +||iperceptions.com^$third-party +||ipfind.com^$third-party +||ipfingerprint.com^$third-party +||ipgp.net^$third-party +||ipinfo.info^$third-party +||ipinfodb.com^$third-party +||ipinyou.com.cn^$third-party +||iplist.cc^$third-party +||iplocationtools.com^$third-party +||iplogger.org^$third-party,domain=~iplogger.com +||ipmeta.io^$third-party +||ipnoid.com^$third-party +||ipro.com^$third-party +||iproanalytics.com^$third-party +||iprotrk.com^$third-party +||iptrack.io^$third-party +||ipv6monitoring.eu^$third-party +||iqdata.ai^$third-party +||iqfp1.com^$third-party +||iqm.com^$third-party +||ironbeast.io^$third-party +||ist-track.com^$third-party +||istrack.com^$third-party +||ithinkthereforeiam.net^$third-party +||itrac.it^$third-party +||itracker360.com^$third-party +||itrackerpro.com^$third-party +||itracmediav4.com^$third-party +||ivcbrasil.org.br^$third-party +||ivwbox.de^$third-party +||iwebtrack.com^$third-party +||ixiaa.com^$third-party +||izatcloud.net^$third-party +||izea.com^$third-party +||izearanks.com^$third-party +||izooto.com^$third-party +||jirafe.com^$third-party +||jixie.io^$third-party +||journera.com^$third-party +||journity.com^$third-party +||js-delivr.com^$third-party +||js.clickrank.ai^$third-party +||jstracker.com^$third-party +||jumplead.com^$third-party +||justuno.com^$third-party +||jwmstats.com^$third-party +||k-analytix.com^$third-party +||kameleoon.com^$third-party +||kameleoon.eu^$third-party +||kaminari.click^$third-party +||kampyle.com^$third-party +||kantartns.lt^$third-party +||kaxsdc.com^$third-party +||keen.io^$third-party,domain=~keen.github.io|~keen.io +||keyade.com^$third-party +||keymetric.net^$third-party +||keytiles.com^$third-party +||keywee.co^$third-party +||keywordmax.com^$third-party +||keywordstrategy.org^$third-party +||kickfire.com^$third-party +||kieden.com^$third-party +||kilometrix.de^$third-party +||kissmetrics.com^$third-party +||kissmetrics.io^$third-party +||kitbit.net^$third-party +||kiwihk.net^$third-party +||klert.com^$third-party +||klldabck.com^$third-party +||km-sea.net^$third-party +||kmtx.io^$third-party +||knorex.com^$third-party +||knotch-cdn.com^$third-party +||knowledgevine.net^$third-party +||koddi.com^$third-party +||koji-analytics.com^$third-party +||kokos.click^$third-party +||komtrack.com^$third-party +||kopsil.com^$third-party +||ksyrium0014.com^$third-party +||l2.io^$third-party +||landingpg.com^$third-party +||lasagneandands.com^$third-party +||lasso.link^$third-party +||lead-123.com^$third-party +||leadberry.com^$third-party +||leadbi.com^$third-party +||leadboxer.com^$third-party +||leadchampion.com^$third-party +||leaddyno.com^$third-party +||leadelephant.com^$third-party +||leadfeeder.com^$third-party +||leadforce1.com^$third-party +||leadforensics.com^$third-party +||leadid.com^$third-party +||leadin.com^$third-party +||leadinfo.eu^$third-party +||leadinfo.net^$third-party +||leadintel.io^$third-party +||leadintelligence.co.uk^$third-party +||leadlab.click^$third-party +||leadlife.com^$third-party +||leadmanagerfx.com^$third-party +||leadpipe.com^$third-party +||leadsius.com^$third-party +||leadsleap.com^$third-party +||leadsmonitor.io^$third-party +||leadspace.com^$third-party +||leadsrx.com^$third-party +||leafmedia.io^$third-party +||leanplum.com^$third-party +||legolas-media.com^$third-party +||lemnisk.co^$third-party +||letterboxtrail.com^$third-party +||levexis.com^$third-party +||lexity.com^$third-party +||lfeeder.com^$third-party +||lfov.net^$third-party +||lgrckt-in.com^$third-party +||linezing.com^$third-party +||linkconnector.com^$third-party +||linkifier.com^$third-party +||linkpulse.com^$third-party +||linksnappy.com^$third-party +||linksynergy.com^$third-party +||linkxchanger.com^$third-party +||listenlayer.com^$third-party +||litix.io^$third-party +||livesegmentservice.com^$third-party +||livesession.io^$third-party +||livestat.com^$third-party +||livetrafficfeed.com^$third-party +||llanalytics.com^$third-party +||lloogg.com^$third-party +||lngtd.com^$third-party +||loc.kr^$third-party +||localytics.com^$third-party +||lockview.cn^$third-party +||locotrack.net^$third-party +||logaholic.com^$third-party +||logbor.com^$third-party +||logcounter.com^$third-party +||logdy.com^$third-party +||logentries.com^$third-party +||loggly.com^$third-party +||logicsfort.com^$third-party +||loginfra.com^$third-party +||logmatic.io^$third-party +||lognormal.net^$third-party +||logr-ingest.com^$third-party +||logrocket.com^$third-party +||logrocket.io^$third-party +||logz.io^$third-party +||lookery.com^$third-party +||loomi-prod.xyz^$third-party +||loopa.net.au^$third-party +||loopfuse.net^$third-party +||lopley.com^$third-party +||lordoftheentertainingostriches.com^$third-party +||losstrack.com^$third-party +||lp4.io^$third-party +||lporirxe.com^$third-party +||lr-in-prod.com^$third-party +||lr-in.com^$third-party +||lr-ingest.com^$third-party +||lr-ingest.io^$third-party +||lr-intake.com^$third-party +||lsfinteractive.com^$third-party +||lucidel.com^$third-party +||luckyorange.com^$third-party +||luckyorange.net^$third-party +||lumatag.co.uk^$third-party +||luminate.com^$third-party +||lxtrack.com^$third-party +||lyngro.com^$third-party +||lypn.com^$third-party +||lypn.net^$third-party +||lytics.io^$third-party +||lytiks.com^$third-party +||m-pathy.com^$third-party +||m-t.io^$third-party +||m0mentum.net^$third-party +||m365log.com^$third-party +||m6r.eu^$third-party +||mabipa.com^$third-party +||madkudu.com^$third-party +||magicpixel.io^$third-party +||magiq.com^$third-party +||magnetmail1.net^$third-party +||magnify360.com^$third-party +||mailstat.us^$third-party +||maploco.com^$third-party +||mapmyuser.com^$third-party +||marinsm.com^$third-party +||marketingcloudfx.com^$third-party +||marketizator.com^$third-party +||marketperf.com^$third-party +||marketshot.com^$third-party +||marketshot.fr^$third-party +||maropost.com^$third-party +||marvelmetrix.com^$third-party +||masterstats.com^$third-party +||masterworks.digital^$third-party +||mathtag.com^$third-party +||matomo.cloud^$third-party +||matterlytics.com^$third-party +||maxtracker.net^$third-party +||maxymiser.com^$third-party +||maxymiser.net^$third-party +||mb4a.com^$third-party +||mbotvisit.com^$third-party +||mbsy.co^$third-party +||mbww.com^$third-party +||mdstats.fr^$third-party +||measure.ly^$third-party +||measured.com^$third-party +||measuremap.com^$third-party +||measurementapi.com^$third-party +||media.net^$third-party +||media01.eu^$third-party +||mediaarmor.com^$third-party +||mediaconvertly.com^$third-party +||mediaforgews.com^$third-party +||mediagauge.com^$third-party +||mediaglacier.com^$third-party +||mediago.io^$third-party +||mediametrics.ru^$third-party +||mediaplex.com^$third-party +||mediarithmics.com^$third-party +||mediaweaver.jp^$third-party +||mediego.com^$third-party +||mega-stats.com^$third-party +||megpxs.com^$third-party +||mellow.tel^$third-party +||memecounter.com^$third-party +||memo.co^$third-party +||mercadoclics.com^$third-party +||mercent.com^$third-party +||merchant-center-analytics.goog^$third-party +||metarouter.io^$third-party +||meteorsolutions.com^$third-party +||metricode.com^$third-party +||metrics0.com^$third-party +||metricsdirect.com^$third-party +||metricswave.com^$third-party +||mezzobit.com^$third-party +||mgaru.dev^$third-party +||mgln.ai^$~media,third-party +||miadates.com^$third-party +||mialbj6.com^$third-party +||micpn.com^$script,third-party +||microanalytics.io^$third-party +||midas-i.com^$third-party +||mieru-ca.com^$third-party +||minewhat.com^$third-party +||minkatu.com^$third-party +||mirabelsmarketingmanager.com^$third-party +||mixi.mn^$third-party +||mixpanel.com^$third-party +||mkt3261.com^$third-party +||mkt51.net^$third-party +||mkt6333.com^$third-party +||mkt941.com^$third-party +||mktoresp.com^$third-party +||ml-attr.com^$third-party +||mlclick.com^$third-party +||mlno6.com^$third-party +||mlytics.com^$third-party +||mm7.net^$third-party +||mmccint.com^$third-party +||mno.link^$third-party +||mobalyzer.net^$third-party +||mobee.xyz^$third-party +||mochibot.com^$third-party +||mockingfish.com^$third-party +||momently.com^$third-party +||mon-pagerank.com^$third-party +||monetate.net^$third-party +||mongoosemetrics.com^$third-party +||monitis.com^$third-party +||monitus.net^$third-party +||monsido.com^$third-party +||monstat.com^$third-party +||mooseway.com^$third-party +||mopinion.com^$third-party +||motrixi.com^$third-party +||mouse3k.com^$third-party +||mouseflow.com^$third-party +||mousestats.com^$third-party +||mousetrace.com^$third-party +||movable-ink-397.com^$third-party +||movable-ink-6710.com^$third-party +||mparticle.com^$third-party +||mpianalytics.com^$third-party +||mpio.io^$third-party +||mplxtms.com^$third-party +||mpstat.us^$third-party +||msecure108.com^$third-party +||msgapp.com^$third-party +||msgfocus.com^$third-party +||msgtag.com^$third-party +||mstrlytcs.com^$third-party +||mtracking.com^$third-party +||murdoog.com^$third-party +||musthird.com^$third-party +||mutinycdn.com^$third-party +||mutinyhq.io^$third-party +||mvilivestats.com^$third-party +||mvtracker.com^$third-party +||mxcdn.net^$third-party +||mxpnl.com^$third-party +||myaffiliateprogram.com^$third-party +||mybloglog.com^$third-party +||myfastcounter.com^$third-party +||myfidevs.io^$third-party +||mynewcounter.com^$third-party +||mynsystems.com^$third-party +||myntelligence.com^$third-party +||myomnistar.com^$third-party +||mypagerank.net^$third-party +||myroitracking.com^$third-party +||myseostats.com^$third-party +||mysitetraffic.net^$third-party +||mysocialpixel.com^$third-party +||mytictac.com^$third-party +||mytrack.pro^$third-party +||myusersonline.com^$third-party +||myvisitorcounter.com^$third-party +||mywebstats.com.au^$third-party +||mywebstats.org^$third-party +||n-analytics.io^$third-party +||n74s9.com^$third-party +||naayna.com^$third-party +||naj.sk^$third-party +||nakedanalytics.net^$third-party +||natero.com^$third-party +||native.ai^$third-party +||natpal.com^$third-party +||naturaltracking.com^$third-party +||navdmp.com^$third-party +||navigator.io^$third-party +||navilytics.com^$third-party +||naytev.com^$third-party +||ncaudienceexchange.com^$third-party +||ndg.io^$third-party +||neatstats.com^$third-party +||nedstatbasic.net^$third-party +||nejmqianyan.cn^$third-party +||nelioabtesting.com^$third-party +||nero.live^$third-party +||net-filter.com^$third-party +||netaffiliation.com^$script,third-party +||netapplications.com^$third-party +||netbiscuits.net^$third-party +||netclickstats.com^$third-party +||netcore.co.in^$third-party +||netcoresmartech.com^$third-party +||netflame.cc^$third-party +||netgraviton.net^$third-party +||netmining.com^$third-party +||netmng.com^$third-party +||netratings.com^$third-party +||netrefer.com^$third-party +||newrelic.com^$third-party +||newrrb.bid^$third-party +||nextstat.com^$third-party +||nexx360-static.io^$third-party +||nexx360.io^$third-party +||ngmco.net^$third-party +||nicequest.com^$third-party +||niftymaps.com^$third-party +||nik.io^$third-party +||ninjacat.io^$third-party +||nmrodam.com^$third-party +||nnmtools.com^$third-party +||noibu.com^$third-party +||noowho.com^$third-party +||nordicresearch.com^$third-party +||northbeam.io^$third-party +||northstartravelmedia.com^$third-party +||notifyvisitors.com^$third-party +||nowinteract.com^$third-party +||npario-inc.net^$third-party +||nprove.com^$third-party +||nr-data.net^$third-party +||nr7.us^$third-party +||nresystems.com^$third-party +||nrich.ai^$third-party +||nstracking.com^$third-party +||nuggad.net^$third-party +||nullitics.com^$third-party +||nuloox.com^$third-party +||numerino.cz^$third-party +||nyltx.com^$third-party +||nytlog.com^$third-party +||o-s.io^$third-party +||observerapp.com^$third-party +||octavius.rocks^$third-party +||octomarket.com^$third-party +||odoscope.com^$third-party +||offermatica.com^$third-party +||offerstrategy.com^$third-party +||ogt.jp^$third-party +||ohayoo.io^$third-party +||ohmystats.com^$third-party +||okt.to^$third-party +||oktopost.com^$third-party +||ometria.com^$third-party +||omguk.com^$third-party +||omkt.co^$third-party +||omniconvert.com^$third-party +||onaudience.com^$third-party +||ondu.ru^$third-party +||onedollarstats.com^$third-party +||onefeed.co.uk^$third-party +||onelink.me^$image,script,third-party +||onestat.com^$third-party +||oniad.com^$third-party +||online-metrix.net^$third-party +||onlinepbx.ru^$third-party +||onthe.io^$third-party +||opbandit.com^$third-party +||openclick.com^$third-party +||openhit.com^$third-party +||openlog.in^$third-party +||openstat.net^$third-party +||opentracker.net^$third-party +||openvenue.com^$third-party +||openweb.bid^$third-party +||oproi.com^$third-party +||opstag.com^$third-party +||optify.net^$third-party +||optimix.asia^$third-party +||optimost.com^$third-party +||optimove.net^$third-party +||optorb.com^$third-party +||optoutadvertising.com^$third-party +||oracleinfinity.io^$third-party +||oranges88.com^$third-party +||orcapia.com^$third-party +||oribi.io^$third-party +||ositracker.com^$third-party +||otoshiana.com^$third-party +||ournet-analytics.com^$third-party +||oursprivacy.com^$third-party +||outbid.io^$third-party +||outbrainimg.com^$third-party +||overstat.com^$third-party +||overtracking.com^$third-party +||owltrack.com^$third-party +||ownpage.fr^$third-party +||ox-bio.com^$third-party +||oxidy.com^$third-party +||p-td.com^$third-party +||p.raasnet.com^$third-party +||p0.raasnet.com^$third-party +||pa-oa.com^$third-party +||pabidding.io^$third-party +||pagefair.com^$third-party +||pages05.net^$third-party +||pagesense.io^$third-party +||pageview.click^$third-party +||parametre.online^$third-party +||parklogic.com^$third-party +||parrable.com^$third-party +||particularaudience.com^$third-party +||pass-1234.com^$third-party +||pbbl.co^$third-party +||pbgrd.com^$third-party +||pbstck.com^$third-party +||pcspeedup.com^$third-party +||pdbu.net^$third-party +||pdmntn.com^$third-party +||pdst.fm^$script,third-party +||peasy.so^$third-party +||peerius.com^$third-party +||percentmobile.com^$third-party +||perf-serving.com^$third-party +||perfalytics.com^$third-party +||perfectaudience.com^$third-party +||perfiliate.com^$third-party +||perfops.io^$third-party +||performancerevenues.com^$third-party +||perion.com^$third-party +||perljs.com^$third-party +||permutive.com^$third-party +||personyze.com^$third-party +||petametrics.com^$third-party,domain=~meidasnews.com|~telegraph.co.uk|~thestreet.com +||pghub.io^$third-party +||pgs.io^$third-party,domain=~publicgood.com +||phonalytics.com^$third-party +||phone-analytics.com^$third-party +||photorank.me^$third-party +||pi-stats.com^$third-party +||ping-fast.com^$third-party +||pingdom.net^$third-party +||pingil.com^$third-party +||pingmeter.com^$third-party +||pingomatic.com^$third-party +||pingometer.com^$third-party +||pinpoll.com^$third-party +||piratepx.com^$third-party +||pirsch.io^$third-party +||piwik.pro^$third-party,domain=~clearcode.cc|~clearcode.pl|~piwikpro.de +||pixel.ad^$third-party +||pixel.watch^$third-party +||pixeleze.com^$third-party +||pixelinteractivemedia.com^$third-party +||pixelpop.co^$third-party +||pixelrevenue.com^$third-party +||pixeltracker.co^$third-party +||pixeltracker.im^$third-party +||pixfuture.com^$third-party +||pjatr.com^$third-party +||pjtra.com^$third-party +||placemypixel.com^$third-party +||platformpanda.com^$third-party +||plausible-analytics.xyz^$third-party +||plausible.avris.it^$third-party +||plausible.io^$third-party +||plavxml.com^$third-party +||playdigo.com^$third-party +||plecki.com^$third-party +||pleisty.com^$third-party +||plerdy.com^$third-party +||plexop.com^$third-party +||plugin.ws^$third-party +||pm0.net^$third-party +||pm14.com^$third-party +||pnstat.com^$third-party +||pntra.com^$third-party +||pntrac.com^$third-party +||pntrs.com^$third-party +||podcorn.com^$third-party +||podscribe.com^$third-party +||poeticmetric.com^$third-party +||pointillist.com^$third-party +||pointmediatracker.com^$third-party +||polaranalytics.com^$third-party +||polarcdn-pentos.com^$third-party +||pop6serve.com^$third-party +||popsample.com^$third-party +||popt.in^$third-party,domain=~poptin.com +||populr.me^$third-party +||popupmaker.com^$third-party +||porngraph.com^$third-party +||portfold.com^$third-party +||posst.co^$third-party +||pranmcpkx.com^$third-party +||prchecker.info^$third-party +||prebidmanager.com^$third-party +||precisioncounter.com^$third-party +||preciso.net^$third-party +||predicta.net^$third-party +||predictiveresponse.net^$third-party +||preflect.com^$third-party +||premiumimpression.com^$third-party +||presage.io^$third-party +||privymktg.com^$third-party +||prnx.net^$third-party +||proclivitysystems.com^$third-party +||profitmetrics.io^$third-party +||programmatictrader.com^$third-party +||projectsunblock.com^$third-party +||promotionengine.com^$third-party +||proofpoint.com^$third-party +||proofpositivemedia.com^$third-party +||propermessage.io^$third-party +||provenpixel.com^$third-party +||provify.io^$third-party +||prprocess.com^$third-party +||prtracker.com^$third-party +||pstats.com^$third-party +||pt-trx.com^$third-party +||ptengine.cn^$third-party +||ptengine.com^$third-party +||ptengine.jp^$third-party +||ptmind.com^$third-party +||pto-slb-09.com^$third-party +||ptrk-wn.com^$third-party +||ptztvpremium.com^$third-party +||pubdream.com^$third-party +||pubexchange.com^$third-party +||publicgood.com^$third-party +||publicidees.com^$third-party +||publishflow.com^$third-party +||publytics.net^$third-party +||pubperf.com^$third-party +||pubplus.com^$third-party +||pubstack.io^$third-party +||pulleymarketing.com^$third-party +||pulseinsights.com^$third-party +||pulselog.com^$third-party +||pulsemaps.com^$third-party +||purevideo.com^$third-party +||pushauction.com^$third-party +||pushspring.com^$third-party +||pvd.to^$third-party +||pxaction.com^$third-party +||pxf.io^$image,script,third-party +||pxi.pub^$third-party +||pymx5.com^$third-party +||pzz.events^$third-party +||q-counter.com^$third-party +||q-stats.nl^$third-party +||qbaka.net^$third-party +||qbop.com^$third-party +||qflm.net^$third-party +||qlitics.com^$third-party +||qoijertneio.com^$third-party +||qortex.ai^$third-party +||qsstats.com^$third-party +||quadran.eu^$third-party +||qualaroo.com^$third-party +||quantcount.com^$third-party +||quantserve.com^$script,third-party +||quantummetric.com^$third-party +||quartic.pl^$third-party +||qubitproducts.com^$third-party +||questionpro.com^$third-party,domain=~questionpro.com.au|~questionpro.eu +||questradeaffiliates.com^$third-party +||quillion.com^$third-party +||quintelligence.com^$third-party +||quitsnap-blue.com^$third-party +||qzlog.com^$third-party +||r7ls.net^$third-party +||radarstats.com^$third-party +||radiateb2b.com^$third-party +||rampanel.com^$third-party +||rampmetrics.com^$third-party +||rankingpartner.com^$third-party +||rankinteractive.com^$third-party +||rapidcounter.com^$third-party +||rapidstats.net^$third-party +||rapidtrk.net^$third-party +||rating.in^$third-party +||ravelin.click^$third-party +||rdcdn.com^$third-party +||reachforce.com^$third-party +||reachlocalservices.com^$third-party +||reactful.com^$third-party +||readertracking.com^$third-party +||readnotify.com^$third-party +||realcounter.eu^$third-party +||realcounters.com^$third-party +||reallyfreegeoip.org^$third-party +||realtimewebstats.com^$third-party +||realtimewebstats.net^$third-party +||realtracker.com^$third-party +||realytics.io^$third-party +||realzeit.io^$third-party +||recapture.io^$third-party +||recognified.net^$third-party +||recosenselabs.com^$third-party +||recoset.com^$third-party +||recruitics.com^$third-party +||redcounter.net^$third-party +||redfastlabs.com^$third-party +||redistats.com^$third-party +||redstatcounter.com^$third-party +||reedbusiness.net^$third-party +||reelup.io^$third-party +||referer.org^$third-party +||referforex.com^$third-party +||referralrock.com^$third-party +||refersion.com^$third-party +||refix.ai^$third-party +||reinvigorate.net^$third-party +||relead.com^$third-party +||relevant-digital.com^$third-party +||reliablecounter.com^$third-party +||relmaxtop.com^$third-party +||remailtarget.com^$third-party +||remarketstats.com^$third-party +||remind.me^$third-party +||renderbetter.net^$third-party +||repixel.co^$third-party +||replaybird.com^$third-party +||report-uri.com^$third-party +||report-uri.io^$third-party +||requestmetrics.com^$third-party +||res-x.com^$third-party +||research-tool.com^$third-party +||researchintel.com^$third-party +||researchnow.co.uk^$third-party,domain=~dynata.com +||researchnow.com^$third-party +||resetdigital.co^$third-party +||responsetap.com^$third-party +||resulticks.com^$third-party +||retargetapp.com^$third-party +||retargetly.com^$third-party +||retargettracker.com^$third-party +||retentionscience.com^$third-party +||rettica.com^$third-party +||returnpath.net^$third-party +||revenuepilot.com^$third-party +||revenueroll.com^$third-party +||revenuescience.com^$third-party +||revenuewire.net^$third-party +||revhunter.tech^$third-party +||revlifter.io^$third-party +||revoffers.com^$third-party +||revolvermaps.com^$third-party +||rewardtv.com^$third-party +||reztrack.com^$third-party +||rfr-69.com^$third-party +||rhinoseo.com^$third-party +||riastats.com^$third-party +||richard-group.com^$third-party +||richmetrics.com^$third-party +||rightmoveanalytics.co.uk^$third-party +||riskid.security^$third-party +||rivrai.com^$third-party +||rktch.com^$third-party +||rktu.com^$third-party +||rlets.com^$third-party +||rmtag.com^$third-party +||rnengage.com^$third-party +||rng-snp-003.com^$third-party +||rnlabs.com^$third-party +||rockincontent.net^$third-party +||roeye.com^$third-party +||roeyecdn.com^$third-party +||roi-pro.com^$third-party +||roi-rocket.net^$third-party +||roirevolution.com^$third-party +||roiservice.com^$third-party +||roispy.com^$third-party +||rollbar.com^$third-party +||roosterfirework.com^$third-party +||rs0.co.uk^$third-party +||rs6.net^$image,script,third-party +||rtb123.com^$third-party +||rtbiq.com^$third-party +||rtox.net^$third-party +||rtrk.co.nz^$third-party +||rtrk.com^$third-party +||rttrk.com^$third-party +||ru4.com^$third-party +||rubiconredirect.com^$third-party +||rudderlabs.com^$third-party +||rumanalytics.com^$third-party +||rumpelstiltskinhead.com^$third-party +||runconverge.com^$third-party +||rybbit.com^$third-party +||rztrkr.com^$third-party +||s3s-main.net^$third-party +||safe-click.net^$third-party +||safeanalytics.net^$third-party +||safevisit.online^$third-party +||sageanalyst.net^$third-party +||salecycle.com^$third-party +||salesviewer.com^$third-party +||salesviewer.org^$third-party +||san-spr-01.net^$third-party +||sapha.com^$third-party +||sas15k01.com^$third-party +||say.ac^$third-party +||sayutracking.co.uk^$third-party +||sbbanalytics.com^$third-party +||scaledb.com^$third-party +||scannary.com^$third-party +||scarf.sh^$third-party +||sciencerevenue.com^$third-party +||scorecardresearch.com^$third-party +||scoutanalytics.net^$third-party +||scrippscontroller.com^$third-party +||scripts21.com^$third-party +||scriptshead.com^$third-party +||sdk.birdeatsbug.com^$third-party +||sea-nov-1.com^$third-party +||sealmetrics.com^$third-party +||searchenginegenie.com^$third-party +||searchfeed.com^$third-party +||searchignite.com^$third-party +||searchplow.com^$third-party +||secureanalytic.com^$third-party +||securepaths.com^$third-party +||securitytrfx.com^$third-party +||sedotracker.com^$third-party +||seehits.com^$third-party +||seeip.org^$third-party +||seevolution.com^$third-party +||segment.com^$third-party +||segment.io^$third-party +||segmenthub.com^$third-party +||segmentify.com^$third-party +||segmetrics.io^$third-party +||selaris.com^$third-party +||selectmedia.asia^$third-party +||sellpoint.net^$third-party +||sellpoints.com^$third-party +||sellsy.com^$third-party,domain=~sellsy.fr +||semanticverses.com^$third-party +||semasio.net^$third-party +||sematext.com^$third-party +||sendtraffic.com^$third-party +||sensorsdata.cn^$third-party +||sentinelbi.com^$third-party +||sentinelpro.com^$third-party +||sentry-cdn.com^$third-party,domain=~sentry.dev|~sentry.io +||sentry-cdn.top^$third-party +||sentry.io^$third-party +||seomonitor.ro^$third-party +||seomoz.org^$third-party +||seon.io^$third-party +||seondnsresolve.com^$third-party +||seoparts.net^$third-party +||serious-partners.com^$third-party +||serv-ac.com^$third-party +||servebom.com^$third-party +||serveipqs.com^$third-party +||servestats.com^$third-party +||servustats.com^$third-party +||sessioncam.com^$third-party +||sessionstack.com^$third-party +||sexcounter.com^$third-party +||sexystat.com^$third-party +||sf14g.com^$third-party +||shareasale-analytics.com^$third-party +||shareasale.com^$third-party +||sharpspring.com^$third-party +||shinystat.com^$third-party +||shippinginsights.com^$third-party +||shoelace.com^$third-party +||shoplytics.com^$third-party +||shoptimally.com^$third-party +||showheroes.com^$third-party +||sift.com^$third-party +||siftscience.com^$third-party +||signalfx.com^$third-party +||signifyd.com^$third-party +||signup-way.com^$third-party +||silverpop.com^$third-party +||silverpush.co^$third-party +||simonsignal.com^$third-party +||simpleanalytics.com^$third-party,domain=~simpleanalyticscdn.com +||simpleanalytics.io^$third-party +||simpleanalyticsbadge.com^$third-party +||simpleanalyticscdn.com^$third-party +||simpleanalyticsexternal.com^$third-party +||simplehitcounter.com^$third-party +||simplereach.com^$third-party +||simpli.fi^$third-party +||simplycast.us^$third-party +||simplymeasured.com^$third-party +||singlefeed.com^$third-party +||singular.net^$third-party +||sirdata.eu^$third-party +||site24x7rum.com^$third-party +||siteapps.com^$third-party +||sitebro.com^$third-party +||sitebro.net^$third-party +||sitecompass.com^$third-party +||siteimprove.com^$third-party +||siteimproveanalytics.com^$third-party +||siteimproveanalytics.io^$third-party +||sitelabweb.com^$third-party +||sitelytics.tech^$third-party +||sitemeter.com^$third-party +||siteplug.com^$third-party +||sitereport.org^$third-party +||sitescout.com^$third-party +||siteswithcontent.com^$third-party +||sitetag.us^$third-party +||sitetagger.co.uk^$third-party +||sitetracker.com^$third-party +||skyglue.com^$third-party +||sl-ct5.com^$third-party +||slingpic.com^$third-party +||smallseotools.com^$third-party +||smart-digital-solutions.com^$third-party +||smart-dmp.com^$third-party +||smart-ip.net^$third-party +||smart-pixl.com^$third-party +||smartclip-services.com^$third-party +||smartctr.com^$third-party +||smarterhq.io^$third-party +||smarterremarketer.net^$third-party +||smartico.ai^$third-party +||smartlook.com^$third-party +||smartocto.com^$third-party +||smartology.co^$third-party +||smartracker.net^$third-party +||smartzonessva.com^$third-party +||smct.co^$third-party +||smileyhost.net^$third-party +||smrk.io^$third-party +||smtrk.net^$third-party +||snapdeal.biz^$third-party +||sni-dat.com^$third-party +||sniperlog.ru^$third-party +||sniphub.com^$third-party +||snitcher.com^$third-party +||snoobi.com^$third-party +||snowsignal.com^$third-party +||snplow.net^$third-party +||social-sb.com^$third-party +||socialprofitmachine.com^$third-party +||socialtrack.co^$third-party +||sociaplus.com^$third-party +||socketviking.net^$third-party +||socsi.in^$third-party +||sodoit.com^$third-party +||soflopxl.com^$third-party +||softonic-analytics.net^$third-party +||sojern.com^$third-party +||soko.ai^$third-party +||sokrati.com^$third-party +||sol-data.com^$third-party +||solosegment.com^$third-party +||sometrics.com^$third-party +||sophi.io^$third-party +||sophus3.com^$third-party +||soska.us^$third-party +||spamanalyst.com^$third-party +||spectate.com^$third-party +||speed-trap.com^$third-party +||speedcurve.com^$third-party +||speedhq.net^$third-party +||speetals.com^$third-party +||splash-screen.net^$third-party +||splitbee.io^$third-party +||splittag.com^$third-party +||splyt.com^$third-party +||sponsored.com^$third-party +||sprig.com^$third-party +||spring.de^$third-party +||springmetrics.com^$third-party +||sptag.com^$third-party +||sptag1.com^$third-party +||spylog.com^$third-party +||spylog.ru^$third-party +||spywords.com^$third-party +||squeezely.tech^$third-party +||squidanalytics.com^$third-party +||srmdata-us.com^$third-party +||srmdata.com^$third-party +||srpx.net^$third-party +||stape.io^$third-party +||stapecdn.com^$third-party +||star-cntr-5.com^$third-party +||stat-track.com^$third-party +||stat.re^$third-party +||stat.social^$third-party +||stat24.com^$third-party +||statcounter.com^$third-party +||statcounterfree.com^$third-party +||stated.io^$third-party +||stathat.com^$third-party +||stathound.com^$third-party +||staticiv.com^$third-party +||statinside.com^$third-party +||statisfy.net^$third-party +||statistiche-web.com^$third-party +||statlytic.net^$third-party +||statowl.com^$third-party +||statpipe.ru^$third-party +||stats2.com^$third-party +||stats21.com^$third-party +||stats4all.com^$third-party +||stats4u.net^$third-party +||stats4you.com^$third-party +||statsbox.nl^$third-party +||statsig.com^$third-party +||statsigapi.net^$third-party +||statsinsight.com^$third-party +||statsit.com^$third-party +||statsmachine.com^$third-party +||statsrely.com^$third-party +||statssheet.com^$third-party +||statswebtown.com^$third-party +||stattooz.com^$third-party +||stattrax.com^$third-party +||statun.com^$third-party +||statuncore.com^$third-party +||steelhousemedia.com^$third-party +||stellaservice.com^$third-party +||sterlingwoods.com^$third-party +||stippleit.com^$third-party +||stormcontainertag.com^$third-party +||stormiq.com^$third-party +||storygize.net^$third-party +||streamsend.com^$third-party +||streem.com.au^$third-party +||streetmetrics.io^$third-party +||stripedcollar.net^$third-party +||stroeerdigitalmedia.de^$third-party +||strossle.it^$third-party +||strs.jp^$third-party +||studiostack.com^$third-party +||sub2tech.com^$third-party +||submitnet.net^$third-party +||successfultogether.co.uk^$third-party +||sugodeku.com^$third-party +||sumatra.ai^$third-party +||sumo.com^$third-party +||sumologic.com^$third-party,domain=~sumologic.net +||sumome.com^$third-party +||sundaysky.com^$third-party +||superboosty.com^$third-party +||supercounters.com^$third-party +||superfiliate.com^$third-party +||superspeedapp.com^$third-party +||superstats.com^$third-party +||surfcounters.com^$third-party +||surveyscout.com^$third-party +||surveywriter.com^$third-party +||survicate.com^$third-party +||sweetgum.io^$third-party +||swetrix.com^$third-party +||swetrix.org^$third-party +||swiss-counter.com^$third-party +||synergy-e.com^$third-party +||synerise.com^$third-party +||synthasite.net^$third-party +||sysomos.com^$third-party +||t-analytics.com^$third-party +||tadpull.com^$third-party +||tag4arm.com^$third-party +||tagcommander.com^$third-party +||tagdatax.com^$third-party +||taggrs.io^$third-party +||tagmngrs.com^$third-party +||tagsrvcs.com^$third-party +||tagstaticx.com^$third-party +||tagtray.com/api^$third-party +||tamgrt.com^$third-party +||tapad.app^$third-party +||tapad.com^$third-party +||tapfiliate.com^$third-party +||taplytics.com^$third-party +||taps.io^$third-party +||tapstream.com^$third-party +||target2sell.mirakl.net^$third-party +||targetfuel.com^$third-party +||taskanalytics.com^$third-party +||tcactivity.net^$third-party +||tcimg.com^$third-party +||tctm.co^$third-party +||td573.com^$third-party +||tdstats.com^$third-party +||tealiumiq.com^$third-party +||techlab-cdn.com^$third-party +||telize.com^$third-party +||teljari.is^$third-party +||tellapart.com^$third-party +||tend.io^$third-party +||tentaculos.net^$third-party +||terabytemedia.com^$third-party +||tercept.com^$third-party +||testin.cn^$third-party +||tetoolbox.com^$third-party +||tgdaudience.com^$third-party +||tglyr.co^$third-party +||tgtag.io^$third-party +||thank-you.io^$third-party +||theadex.com^$third-party +||theagency.com^$third-party +||theardent.group^$third-party +||thebestlinks.com^$third-party +||thecounter.com^$third-party +||thermstats.com^$third-party +||thesearchagency.net^$third-party +||thinktot.com^$third-party +||thoughtmetric.io^$third-party +||tinb.net^$third-party +||tinycounter.com^$third-party +||tiser.com.au^$third-party +||tkqlhce.com^$third-party +||tl813.com^$third-party +||tmvtp.com^$third-party +||tnctrx.com^$third-party +||tns-counter.ru^$third-party +||tns-cs.net^$third-party +||top100bloggers.com^$third-party +||top100webshops.com^$third-party +||top10sportsites.com^$third-party +||topacad.com^$third-party +||topblogarea.com^$third-party +||topblogging.com^$third-party +||topdepo.com^$third-party +||toplist.cz^$third-party +||toplist.eu^$third-party +||topmalaysia.com^$third-party +||topofblogs.com^$third-party +||topstat.cn^$third-party +||torbit.com^$third-party +||touchclarity.com^$third-party +||tp88trk.com^$third-party +||trace-2000.com^$third-party +||trace.events^$third-party +||tracead.com^$third-party +||traceless.me^$third-party +||tracemyip.org^$third-party +||traceworks.com^$third-party +||tracify.ai^$third-party +||track-re01.com^$third-party +||track-web.net^$third-party +||trackadshub.com^$third-party +||trackalyzer.com^$third-party +||trackbee.ai^$third-party +||trackcb.com^$third-party +||trackcmp.net^$third-party +||trackconsole.com^$third-party +||trackeame.com^$third-party +||trackedlink.net^$third-party +||trackedweb.net^$third-party +||tracker-shr.ortb.net^ +||trackertest.org^$third-party +||tracking202.com^$third-party +||trackingca.com^$third-party +||trackinglabs.com^$third-party +||trackingpro.pro^$third-party +||trackkas.com^$third-party +||trackmethod.com^$third-party +||trackmytarget.com^$third-party +||trackonomics.net^$third-party +||trackset.com^$third-party +||trackword.biz^$third-party +||trackyourstats.com^$third-party +||tradelab.fr^$third-party +||tradescape.biz^$third-party +||trafex.net^$third-party +||trafficby.net^$third-party +||trafficengine.net^$third-party +||trafficfacts.com^$third-party +||trafficfuel.com^$third-party +||trafficguard.ai^$third-party +||trafficjoint.com^$third-party +||trafficregenerator.com^$third-party +||trafficroots.com^$third-party +||trafic.ro^$third-party +||trail-web.com^$third-party +||trailheadapp.com^$third-party +||trakken.de^$third-party +||transactionale.com^$third-party +||traq.li^$third-party +||travelrobotflower.com^$third-party +||traversedlp.com^$third-party +||trbas.com^$third-party +||trendcounter.com^$third-party +||trendemon.com^$third-party +||trialfire.com^$third-party +||tribl.io^$third-party +||triggeredmessaging.com^$third-party +||triggertag.gorillanation.com^$third-party +||triggit.com^$third-party +||trilogyed.com^$third-party +||triptease.io^$third-party +||triptease.net^$third-party +||trkjmp.com^$third-party +||trmads.eu^$third-party +||trstplse.com^$third-party +||trtl.ws^$third-party +||truconversion.com^$third-party +||truehits.in.th^$third-party +||truehits1.gits.net.th^$third-party +||truffle.one^$third-party +||truoptik.com^$third-party +||trysera.com^$third-party +||tscounter.com^$third-party +||tsk4.com^$third-party +||tsk5.com^$third-party +||tubemogul.com^$third-party +||tuinfra.com^$third-party +||tunnl.com^$third-party +||turn.com^$third-party +||tvsquared.com^$third-party +||twcount.com^$third-party +||tyxo.com^$third-party +||u-on.eu^$third-party +||u5e.com^$third-party +||uadx.com^$third-party +||ub-analytics.com^$third-party +||ubertags.com^$third-party +||ubertracking.info^$third-party +||uciservice.com^$third-party +||udkcrj.com^$third-party +||umami.is^$third-party +||umbel.com^$third-party +||unalytics.top^$third-party +||unidays.world^$third-party,domain=~myunidays.com +||uniqodo.com^$third-party +||united-infos.net^$third-party +||unusual.ai^$third-party +||upapi.net^$third-party +||uplift-platform.com^$third-party +||upscore.com^$third-party +||upsellit.com^$third-party +||upstats.ru^$third-party +||uptain.de^$third-party +||uptracs.com^$third-party +||uptrendsdata.com^$third-party +||uralweb.ru^$third-party +||urlbrief.com^$third-party +||urldefense.com^$third-party +||usabilitytools.com^$third-party +||usabilla.com^$third-party +||useinsider.com^$third-party +||useitbetter.com^$third-party +||useproof.com^$third-party +||user-api.com^$third-party +||user-clicks.com^$third-party +||user-red.com^$third-party +||usercycle.com^$third-party +||userlook.com^$third-party +||usermaven.com^$third-party +||userneeds.dk^$third-party +||userreplay.net^$third-party +||userreport.com^$third-party +||users-api.com^$third-party +||usertracks.live^$third-party +||userzoom.com^$third-party +||usesfathom.com^$third-party +||usuarios-online.com^$third-party +||v12group.com^$third-party +||v3cdn.net^$third-party +||va-endpoint.com^$third-party +||valuedopinions.co.uk^$third-party +||vbanalytics.com^$third-party +||vdna-assets.com^$third-party +||veduy.com^$third-party +||veille-referencement.com^$third-party +||veinteractive.com^$third-party +||velaro.com^$third-party +||vendri.io^$third-party +||ventivmedia.com^$third-party +||vercel-analytics.com^$third-party +||vercel-insights.com^$third-party +||verisoul.ai^$third-party +||vertical-leap.co.uk^$third-party +||vertical-leap.net^$third-party +||verticalscope.com^$third-party +||verticalsearchworks.com^$third-party +||vertster.com^$third-party +||video.oms.eu^$third-party +||videoamp.com^$third-party +||videos.oms.eu^$third-party +||videostat.com^$third-party +||vilynx.com^$third-party +||vinlens.com^$third-party +||vinub.com^$third-party +||viralninjas.com^$third-party +||virgul.com^$third-party +||virool.com^$third-party +||virtualnet.co.uk^$third-party +||visibility-stats.com^$third-party +||visibli.com^$third-party +||visionarycompany52.com^$third-party +||visioncriticalpanels.com^$third-party +||visionsage.com^$third-party +||visistat.com^$third-party +||visithunter.io^$third-party +||visitor-analytics.io^$third-party +||visitor-analytics.net^$third-party +||visitor-track.com^$third-party +||visitorglobe.com^$third-party +||visitorjs.com^$third-party +||visitorpath.com^$third-party +||visitorprofiler.com^$third-party +||visitorqueue.com^$third-party +||visitortracking.com^$third-party +||visitortracklog.com^$third-party +||visitorville.com^$third-party +||visitstreamer.com^$third-party +||visualdna.com^$third-party +||visualrevenue.com^$third-party +||visx.net^$third-party +||vivocha.com^$third-party +||vizisense.net^$third-party +||vizury.com^$third-party +||vmm-satellite1.com^$third-party +||vmmpxl.com^$third-party +||voicefive.com^$third-party +||volantix.com^$third-party +||volument.com^$third-party +||votistics.com^$third-party +||vprza.com^$third-party +||vtracker.net^$third-party +||w3counter.com^$third-party +||walmeric.com^$third-party +||wandzcdn.com^$third-party +||waplog.net^$third-party +||waudit.cz^$third-party +||wbdx.fr^$third-party +||wbtrk.net^$third-party +||wc4.net^$image,third-party +||wdsvc.net^$third-party +||we-stats.com^$third-party +||web-counter.net^$third-party +||web-stat.com^$third-party +||web-stat.fr^$third-party +||web-stat.net^$third-party +||webanalytic.info^$third-party +||webclicktracker.com^$third-party +||webcounter.co.za^$third-party +||webcounter.ws^$third-party +||webengage.co^$third-party +||webengage.com^$third-party +||webeyez.com^$third-party +||webflowmetrics.com^$third-party +||webforensics.co.uk^$third-party +||webglstats.com^$third-party +||webiqonline.com^$third-party +||webleads-tracker.com^$third-party +||webmasterplan.com^$third-party +||weborama.com^$third-party +||weborama.design^$third-party +||webpageviews.click^$third-party +||website-hit-counters.com^$third-party +||websiteceo.com^$third-party +||websiteperform.com^$third-party +||websitewelcome.com^$third-party +||webspectator.com^$third-party +||webstat.com^$third-party +||webstat.fr^$third-party +||webstat.net^$third-party +||webstat.se^$third-party +||webstats.com^$third-party +||webstats4u.com^$third-party +||webtrackingservices.com^$third-party +||webtraffic.se^$third-party +||webtrafficagents.com^$third-party +||webtrafficsource.com^$third-party +||webtraffiq.com^$third-party +||webtraxs.com^$third-party +||webtrekk-asia.net^$third-party +||webtrends-optimize.com^$third-party +||webtrends.com^$third-party +||webtrendslive.com^$third-party +||webtuna.com^$third-party +||wecantrack.com^$third-party +||wewomedia.com^$third-party +||wgsas.com^$third-party +||whale.camera^$third-party +||wheredoyoucomefrom.ovh^$third-party +||whitepixel.com^$third-party +||whoaremyfriends.com^$third-party +||whoaremyfriends.net^$third-party +||whoisonline.net^$third-party +||whoisvisiting.com^$third-party +||whomyip.com^$third-party +||whosclickingwho.com^$third-party +||wickedreports.com^$third-party +||wideangle.co^$third-party +||widerplanet.com^$third-party +||wikia-beacon.com^$third-party +||wiredminds.de^$third-party +||wirewuss.com^$third-party +||wisetrack.net^$third-party +||withcabin.com^$third-party +||withcubed.com^$third-party +||wizaly.com^$third-party +||wmcdp.io^$third-party +||womtp.com^$third-party +||woopra-ns.com^$third-party +||woopra.com^$third-party +||wootric.com^$third-party +||worldflagcounter.com^$third-party +||worldlogger.com^$third-party +||wowanalytics.co.uk^$third-party +||wpdstat.com^$third-party +||wpfc.ml^$third-party +||wrating.com^$third-party +||wt-eu02.net^$third-party +||wt-safetag.com^$third-party +||wts.one^$third-party +||wts2.one^$third-party +||wtstats.com^$third-party +||wundercounter.com^$third-party +||wunderloop.net^$third-party +||www-google-analytics.l.google.com^$third-party +||www-path.com^$third-party +||wywy.com^$third-party +||wzrk.co^$third-party +||wzrkt.com^$third-party +||x-stat.de^$third-party +||xdisctracking.pw^$third-party +||xg4ken.com^$third-party +||xiti.com^$third-party +||xlisting.jp^$third-party +||xp.audience.io/sdk.js$third-party +||xstats.net^$third-party +||xstats.st^$third-party +||xtremline.com^$third-party +||xxxcounter.com^$third-party +||xyztraffic.com^$third-party +||y-track.com^$third-party +||yamanoha.com^$third-party +||yaudience.com^$third-party +||ybotvisit.com^$third-party +||yellowbrix.com^$third-party +||yext-pixel.com^$third-party +||yextevents.com^$third-party +||ygsm.com^$third-party +||yieldbot.com^$third-party +||yieldify.com^$third-party +||yieldlift.com^$third-party +||yieldsoftware.com^$third-party +||yjtag.jp^$third-party +||yldr.io^$third-party +||ymetrica1.com^$third-party +||your-analytics.org^$third-party +||youramigo.com^$third-party +||yourbow.com^$third-party +||youvisit.com^$third-party +||yu987.com^$third-party +||ywxi.net^$third-party,domain=~trustedsite.com +||z444o.com^$third-party +||zanox-affiliate.de^$third-party +||zanox.com^$third-party +||zarget.com^$third-party +||zdtag.com^$third-party +||zedwhyex.com^$third-party +||zeerat.com^$third-party +||zeotap.com^$third-party +||zesep.com^$third-party +||zeustechnology.com^$third-party +||zoomanalytics.co^$third-party +||zoomengage.com^$third-party +||zoomino.com^$third-party +||zoosnet.net^$third-party +||zoossoft.net^$third-party +||zprk.io^$third-party +||zuzab.com^$third-party +||zx-adnet.com^$third-party + +! *** easylist:easyprivacy/easyprivacy_trackingservers_mining.txt *** +.1.1.1.l80.js^$third-party +.n.2.1.js^$third-party +.n.2.1.l50.js^$third-party +.n.2.1.l60.js^$third-party +/cdn-cgi/pe/bag2?r[]=*eth-pocket.de +||109.123.233.251^ +||185.193.38.148^ +||35.194.26.233^ +||35.239.57.233^ +||45.32.105.134^ +||77.162.125.199^ +||a-calc.de^$third-party +||adless.io^ +||adminer.com^ +||altpool.pro^$third-party +||analytics.blue^ +||andlache.com^ +||authedwebmine.cz^$third-party,domain=~webmine.cz +||averoconnector.com^$third-party +||bablace.com^ +||becanium.com^ +||bewaslac.com^ +||biberukalap.com^ +||bitclub.network^ +||bitclubnetwork.com^ +||bitcoin-cashcard.com^ +||bmcm.pw^ +||bmnr.pw^ +||bmst.pw^ +||bmwebm.org^ +||brominer.com^$third-party +||browsermine.com^$third-party +||candid.zone^ +||cashbeet.com^ +||clgserv.pro^ +||cloud-miner.eu^ +||cloudflareinsights.com^$third-party +||cnhv.co^$third-party +||coin-have.com^$third-party +||coinerra.com^$third-party +||coinimp.com$third-party +||coinimp.net$third-party +||coinminerz.com^$third-party +||coinnebula.com^$third-party +||coinpot.co^$third-party +||coinwebmining.com^$third-party +||coinzillatag.com^$third-party +||cookiescript.info^$third-party +||crypto-coins.com^$third-party +||crypto-coins.info^$third-party +||crypto-loot.com^$third-party +||crypto-pool.fr^$third-party +||crypto-webminer.com^$third-party +||cryptobara.com^$third-party +||cryptonoter.com^$third-party +||devphp.org.ua^$third-party +||directprimal.com^$third-party +||dontbeevils.de^$third-party +||duckdns.org^$third-party,websocket +||easyhash.de^$third-party +||easyhash.io^$third-party +||eth-pocket.com^$third-party +||ethereum-cashcard.com^$third-party +||ethereum-pocket.com^$third-party +||eucsoft.com^$third-party +||f1tbit.com^ +||filmoljupci.com^ +||flare-analytics.com^$third-party +||formulawire.com^$third-party +||freecontent.date +||freecontent.stream +||g1thub.com^ +||gay-hotvideo.net^ +||gulf.moneroocean.stream^ +||gus.host^$third-party +||hashcoin.co^$third-party +||hashing.win^$third-party +||hashnest.com^$third-party +||hashvault.pro^$third-party +||hashzone.io^$third-party +||hemnes.win^$third-party +||hostcontent.live^$third-party +||hostingcloud.party +||igrid.org^ +||investhash.com^$third-party +||jscdndel.com^$third-party +||jscoinminer.com^ +||jsecoin.com^$third-party +||kinoprofi.org^$third-party +||laferia.cr^$third-party +||laserveradedomaina.com^$third-party +||lightminer.co^$third-party +||lmiutil.com^$third-party +||machieved.com^$third-party +||mepirtedic.com^$third-party +||mi-de-ner-nis3.info^ +||mine.nahnoji.cz^ +||minerad.com^ +||minero-proxy-*.sh^$third-party +||minero.cc^$third-party +||minexmr.com^$third-party +||mininghub.club^$third-party +||mmpool.org^$third-party +||mollnia.com^$third-party +||monerise.com^$third-party +||monerominer.rocks^$third-party +||moneroocean.stream^$third-party +||mutinyhq.com^$third-party +||nabaza.com^$third-party +||nametraff.com^$third-party +||nerohut.com^$third-party +||nfwebminer.com^$third-party +||notmining.org^$third-party +||omine.org^$third-party +||openguid.org^$third-party +||p2poolmining.com^$third-party +||pampopholf.com^ +||papoto.com^$third-party +||party-vqgdyvoycc.now.sh^$third-party +||pertholin.com^$third-party +||pr0gram.org^$third-party +||reauthenticator.com^ +||rocks.io^$third-party +||s7ven.com^$third-party +||serie-vostfr.com^$third-party +||serv1swork.com^ +||silimbompom.com^$third-party +||smartoffer.site^$third-party +||sourcecode.pro^$third-party +||spacepools.org^$third-party +||srcip.com^$third-party +||statdynamic.com^ +||static-sb.com^$third-party +||stonecalcom.com^$third-party +||str1kee.com^ +||supportxmr.com^$third-party +||swiftmining.win^$third-party +||tercabilis.info^ +||thewhizproducts.com^$third-party +||thewise.com^$third-party +||tmmp.io^$third-party +||traffic.tc-clicks.com^$third-party +||trustiseverything.de^$third-party +||trustisimportant.fun^ +||tulip18.com^$third-party +||turnsocial.com^$third-party +||usa.cc^$third-party +||vkcdnservice.com^$third-party +||wasm.stream +||webmine.cz^$third-party +||webminepool.com^$third-party +||webminerpool.com^$third-party +||webmining.co^$third-party +||webxmr.com^$third-party +||wtm.monitoringservice.co^$third-party +||wtmtrack.com^$third-party +||xmrpool.net^$third-party +||zlx.com.br^$third-party + +! *** easylist:easyprivacy/easyprivacy_trackingservers_admiral.txt *** +||2znp09oa.com^ +||3rdspacetech.com^ +||4jnzhl0d0.com^ +||82o9v830.com^ +||abilityscale.com^ +||abilitytoucan.com^ +||abjectattempt.com^ +||aboardamusement.com^ +||aboardlevel.com^ +||abovechat.com^ +||abruptroad.com^ +||absentairport.com^ +||absolutering.com^ +||absorbingband.com^ +||absorbingprison.com^ +||abstractedamount.com^ +||abstractedauthority.com^ +||absurdapple.com^ +||abundantcoin.com^ +||accountgram.com^ +||accountsdoor.com^ +||accurateanimal.com^ +||accuratecoal.com^ +||acebunny.com^ +||acidicstraw.com^ +||acidpigs.com^ +||acridtwist.com^ +||actuallysheep.com^ +||actuallysnake.com^ +||acustomizedgift.com^$~xmlhttprequest +||adamantsnail.com^ +||addictedattention.com^ +||addressfriend.com^ +||admiral.pub^ +||admiralproxied.com^ +||adorableanger.com^ +||adorableattention.com^ +||adventurousamount.com^ +||aerialapps.com^ +||affectionknit.com^ +||afraidlanguage.com^ +||agencysignals.com^ +||agileformer.com^ +||agonyshark.com^ +||agreeablearch.com^ +||agreeabletouch.com^ +||aheadday.com^ +||aheadgrow.com^ +||airplanecoffee.com^ +||ak0gsh40.com^ +||aliasanvil.com^ +||alikeaddition.com^ +||aliveachiever.com^ +||allnewhost.com^ +||alloutdubstep.com^ +||alloytitans.com^ +||allsunflowers.com^ +||allthelogs.com^ +||alltypo.com^ +||alluringbucket.com^ +||almondbuns.com^ +||alohamiles.com^ +||aloofmetal.com^ +||aloofvest.com^ +||alpineactor.com^ +||ambientdusk.com^ +||ambiguousafternoon.com^ +||ambiguousanger.com^ +||ambiguousdinosaurs.com^ +||ambiguousincome.com^ +||ambrosialsummit.com^ +||amethystzenith.com^ +||amidsttruly.com^ +||amuckafternoon.com^ +||amusedbucket.com^ +||analyzecorona.com^ +||ancientact.com^ +||animalcoder.com^ +||annoyedairport.com^ +||annoyingacoustics.com^ +||annoyingclover.com^ +||anontimes.com^ +||anxiousapples.com^ +||applocus.com^ +||applyless.com^ +||aquaticowl.com^ +||archswimming.com^ +||arclet.net^ +||aromamirror.com^ +||arrivegrowth.com^ +||arubahello.com^ +||aspiringapples.com^ +||aspiringattempt.com^ +||aspiringtoy.com^ +||astonishingfood.com^ +||astralhustle.com^ +||attendchase.com^ +||attractionbanana.com^ +||attractivecap.com^ +||audioarctic.com^ +||automaticside.com^ +||automaticturkey.com^ +||availablerest.com^ +||avalonalbum.com^ +||averageactivity.com^ +||awarealley.com^ +||awzbijw.com^ +||axiomaticanger.com^ +||azuremystique.com^ +||azurestealth.com^ +||backtension.com^ +||backupcat.com^ +||baconbags.com^ +||badgeboat.com^ +||badgerabbit.com^ +||badgevolcano.com^ +||bagbeam.com^ +||bagsurprise.com^ +||bahamashello.com^ +||baitbaseball.com^ +||balancenotes.com^ +||balloonbelieve.com^ +||ballsbanana.com^ +||bananabarrel.com^ +||bandborder.com^ +||barbarousbase.com^ +||barbershirts.com^ +||barkfactor.com^ +||barqueue.com^ +||baseboosters.com^ +||basilfish.com^ +||basketballbelieve.com^ +||baskettexture.com^ +||bastingart.com^ +||battleburst.com^ +||battlekite.com^ +||bawdybalance.com^ +||beamvolcano.com^ +||beancontrol.com^ +||bedsberry.com^ +||beewhispering.com^ +||beginnerpancake.com^ +||bentengine.com^ +||berserkhydrant.com^ +||bestboundary.com^ +||bestshoesboot.com^ +||betazebra.com^ +||bewilderedbattle.com^ +||bewilderedblade.com^ +||bhcumsc.com^ +||bidpapers.com^ +||bigfishapparel.com^ +||biggerbling.com^ +||bigworldfashion.com^ +||bikeexerciser.com^ +||bikepaws.com^ +||bikesboard.com^ +||bikinginspire.com^ +||bilingualgeek.com^ +||billowybead.com^ +||billowybelief.com^ +||billtable.com^ +||binarycrest.com^ +||binarykite.com^ +||binspiredtees.com^ +||biologylog.com^ +||birthdaybelief.com^ +||biztoolsbrief.com^ +||blackbelted.com^ +||bleachbubble.com^ +||bleachscarecrow.com^ +||bleedlight.com^ +||blesspizzas.com^ +||blisscalendar.com^ +||blissfulcrescendo.com^ +||blissfullagoon.com^ +||blitzcampaigns.com^ +||blockdial.com^ +||bloomsend.com^ +||blueeyedblow.com^ +||bluelionlabs.net^ +||bluenest.net^ +||bluevinebooks.com^ +||blushingbeast.com^ +||blushingbread.com^ +||boardbumpers.com^ +||boatcodeapp.com^ +||boatpaper.com^ +||boatsbuilding.com^ +||boatssolar.com^ +||boatsvest.com^ +||boiledegglabs.com^ +||boilingbeetle.com^ +||boilingcredit.com^ +||boilingmadsoup.com^ +||boldbars.com^ +||bonuscomplex.com^ +||bookbeef.com^ +||boomboomcloud.com^ +||boostbehavior.com^ +||boredcrown.com^ +||boringberry.com^ +||boringpirate.com^ +||bouncyproperty.com^ +||boundarybusiness.com^ +||boundlessargument.com^ +||boundlessbrake.com^ +||boundlessveil.com^ +||brainybasin.com^ +||branchborder.com^ +||brandsfive.com^ +||brandybison.com^ +||bravebone.com^ +||breadbalance.com^ +||breakableinsurance.com^ +||breakfastboat.com^ +||breezybright.com^ +||breezygrove.com^ +||brewthing.com^ +||brianwould.com^ +||brighttoe.com^ +||briskedge.net^ +||briskstorm.com^ +||broadborder.com^ +||broadcastbed.com^ +||broaddoor.com^ +||brotherslocket.com^ +||brownboxgroup.com^ +||browserguides.net^ +||bruisebaseball.com^ +||brunchforher.com^ +||bubblyaction.com^ +||bucketlistbob.com^ +||buddycanvas.com^ +||bugpizza.com^ +||buildingknife.com^ +||bulbbait.com^ +||bumpermash.com^ +||bungeesleeves.com^ +||burgersalt.com^ +||burnbubble.com^ +||bushesbag.com^ +||businessupdater.com^ +||bustlingbook.com^ +||butterbulb.com^ +||butterburst.com^ +||buttonladybug.com^ +||buzzaoutlet.com^ +||buzzfry.com^ +||cafefrench.com^ +||cafejunior.net^ +||cafescampfires.com^ +||cakeagenda.com^ +||cakesdrum.com^ +||calculatingcircle.com^ +||calculatorstatement.com^ +||callousbrake.com^ +||calmcactus.com^ +||calmstudent.com^ +||calvarycards.com^ +||calypsocapsule.com^ +||camelsfestival.com^ +||camelspark.com^ +||cannonborough.com^ +||cannonchange.com^ +||canvasandsocks.com^ +||canyonpizza.net^ +||capriciouscorn.com^ +||captainstick.com^ +||captivatingcanyon.com^ +||captivatingillusion.com^ +||captivatingpanorama.com^ +||captivatingperformance.com^ +||carbongarden.net^ +||cardmethod.com^ +||carefuldolls.com^ +||caringcast.com^ +||carloforward.com^ +||carpoolqueen.com^ +||carsarace.com^ +||cartelsalsa.com^ +||cartlug.com^ +||carvecakes.com^ +||casualphysics.com^ +||catalogcake.com^ +||catlanguage.net^ +||catschickens.com^ +||cattlecommittee.com^ +||cauldronfest.com^ +||causecherry.com^ +||cautiouscherries.com^ +||cautiouscrate.com^ +||cautiouscredit.com^ +||cavecurtain.com^ +||cdnral.com^ +||celestialeuphony.com^ +||celestialquasar.com^ +||celestialspectra.com^ +||chademocharge.com^ +||chaindisc.com^ +||chaireggnog.com^ +||chairscrack.com^ +||chairsdonkey.com^ +||chalkdream.com^ +||chalkoil.com^ +||changeablecats.com^ +||channelcamp.com^ +||chaosmonitor.com^ +||chargecracker.com^ +||charmingplate.com^ +||chemistrycore.com^ +||cherriescare.com^ +||chessbranch.com^ +||chesscolor.com^ +||chesscrowd.com^ +||chessquery.com^ +||childlikecrowd.com^ +||childlikeexample.com^ +||childlikeform.com^ +||chillingtofu.com^ +||chingovernment.com^ +||chipcardice.com^ +||chipperisle.com^ +||chivalrouscord.com^ +||chubbycreature.com^ +||chunkycactus.com^ +||cicdserver.com^ +||ciderfeast.com^ +||cinemabonus.com^ +||circlelevel.com^ +||citydeal.net^ +||clammychicken.com^ +||clarifyverse.com^ +||classicnotebook.com^ +||cleanhaircut.com^ +||clearclips.com^ +||climbingright.com^ +||cloisteredcurve.com^ +||cloudchickens.com^ +||cloudhustles.com^ +||cloudjumbo.com^ +||cloverkeys.com^ +||clumsycar.com^ +||coalkitchen.com^ +||coatfood.com^ +||cobaltoverture.com^ +||coffeefire.net^ +||coffeesidehustle.com^ +||coldbalance.com^ +||coldcallpro.com^ +||coloradoserves.com^ +||colorfulpet.com^ +||coloroptimizer.com^ +||colorsonchain.com^ +||colossalclouds.com^ +||colossalcoat.com^ +||colossalcry.com^ +||combativedetail.com^ +||combbit.com^ +||combcattle.com^ +||combcompetition.com^ +||cometquote.com^ +||comfortablecheese.com^ +||commonalmanac.com^ +||comparereaction.com^ +||compilework.com^ +||condemnedcomb.com^ +||conditionchange.com^ +||conditioncrush.com^ +||confesschairs.com^ +||confidencetalks.com^ +||configchain.com^ +||configcontrol.com^ +||confirmglobal.com^ +||confusedcart.com^ +||consciouschairs.com^ +||consciouscheese.com^ +||consumerknowhow.com^ +||consumerzero.com^ +||controlhall.com^ +||convertbatch.com^ +||cooingcoal.com^ +||cookiestorybook.com^ +||coolestcatcare.com^ +||coolguesthouse.com^ +||coolkidsdistrict.com^ +||coordinatedcoat.com^ +||copperstills.net^ +||copycarpenter.com^ +||copyfranchise.com^ +||copyrightaccesscontrols.com^ +||copytweaks.com^ +||copyvibes.com^ +||coralcranes.com^ +||coralreverie.com^ +||corgibeachday.com^ +||correctedcode.com^ +||cosmicsculptor.com^ +||cosmosjackson.com^ +||cosplaygalaxy.com^ +||costumeoffers.com^ +||costwinner.com^ +||couponrail.com^ +||courageousbaby.com^ +||coverlayer.com^ +||cowbelltime.com^ +||cozydusk.com^ +||cozyhillside.com^ +||cozytryst.com^ +||crabbychin.com^ +||crackedsafe.com^ +||craftessays.com^ +||crafthenry.com^ +||crashchance.com^ +||crashpandas.com^ +||cratecamera.com^ +||craterbox.com^ +||createdip.com^ +||creatorcherry.com^ +||creatorpassenger.com^ +||creatorsnote.com^ +||creaturecabbage.com^ +||crimsonmeadow.com^ +||critictruck.com^ +||crochetdivas.com^ +||crookedcreature.com^ +||crowdedmass.com^ +||cruisetourist.com^ +||crunchcontrol.com^ +||crypticgenius.com^ +||crystalboulevard.com^ +||cubchannel.com^ +||cubeglobal.net^ +||cubepins.com^ +||cuddlycake.com^ +||cuddlylab.com^ +||cuddlylunchroom.com^ +||culturedcamera.com^ +||culturedfeather.com^ +||cumbersomecarpenter.com^ +||curatedtea.com^ +||curbminers.com^ +||curbneon.com^ +||curiouschalk.com^ +||curiousmetal.com^ +||curioussuccess.com^ +||curlycannon.com^ +||currentcollar.com^ +||curtaincows.com^ +||curvedhoney.com^ +||curveshore.com^ +||curvycry.com^ +||cushiondrum.com^ +||cutecalculator.com^ +||cutechin.com^ +||cyclinghere.com^ +||cyclopsdial.com^ +||dailydivision.com^ +||dailydomino.com^ +||damagedadvice.com^ +||damageddistance.com^ +||damdoor.com^ +||dampdock.com^ +||dandydune.com^ +||dandyglow.com^ +||dapperdiscussion.com^ +||dashingdrop.com^ +||datapickles.com^ +||datastoried.com^ +||daybreaklights.com^ +||daymodern.com^ +||dazzlescript.com^ +||dazzlingbook.com^ +||dealchocolate.com^ +||debonairdust.com^ +||debonairtree.com^ +||decidedrum.com^ +||decisionhut.com^ +||decisivebase.com^ +||decisivedrawer.com^ +||decklibrary.com^ +||deeptack.com^ +||deerbeginner.com^ +||defeatedbadge.com^ +||defensevest.com^ +||degreechariot.com^ +||delicatecascade.com^ +||deliciousducks.com^ +||deltafault.com^ +||deluxecrate.com^ +||demorewards.com^ +||dependenttrip.com^ +||deployinput.com^ +||derbypops.com^ +||desertgates.com^ +||designdew.com^ +||designsgrid.com^ +||desirebucket.com^ +||desiredirt.com^ +||detailedgovernment.com^ +||detailedkitten.com^ +||detectdinner.com^ +||detectdiscovery.com^ +||detourgame.com^ +||devilishdinner.com^ +||dewdroplagoon.com^ +||dicecandies.com^ +||difficultfog.com^ +||digestiondrawer.com^ +||digitalblend.net^ +||digithalo.com^ +||dinnerquartz.com^ +||direfuldesk.com^ +||disagreeabledrop.com^ +||discopond.com^ +||discreetfield.com^ +||discreetquarter.com^ +||distilltable.com^ +||distributionpocket.com^ +||distributiontomatoes.com^ +||disturbedquiet.com^ +||dockdigestion.com^ +||documentstock.com^ +||dodgebugs.com^ +||dogbedscentral.com^ +||dogcollarfavourbluff.com^ +||dollardelta.com^ +||dollarthrill.com^ +||domaincolumn.com^ +||doomhedge.com^ +||dotshellmain.com^ +||doubledefend.com^ +||doubtdrawer.com^ +||dq95d35.com^ +||dragonbats.com^ +||drainpaste.com^ +||dramaticdirection.com^ +||dreamsdome.com^ +||driftingchef.com^ +||driftpizza.com^ +||droidwiz.com^ +||drollwharf.com^ +||drydrum.com^ +||dustydime.com^ +||dustyhammer.com^ +||dyecloud.com^ +||eagerflame.com^ +||eagerknight.com^ +||earnbaht.com^ +||earthlybuzz.com^ +||earthups.com^ +||earthyfarm.com^ +||easysyncnews.com^ +||eatablesquare.com^ +||echoacloud.com^ +||echoinghaven.com^ +||economysoil.com^ +||educationcar.com^ +||effervescentcoral.com^ +||effervescentvista.com^ +||effulgentnook.com^ +||effulgenttempest.com^ +||eightgreens.com^ +||eighthlayer.net^ +||elasticchange.com^ +||elderlytown.com^ +||elegantboulevard.com^ +||elusivebreeze.com^ +||elusivecascade.com^ +||embellishedmeadow.com^ +||emberwhisper.com^ +||embossedpaper.com^ +||eminentbubble.com^ +||eminentend.com^ +||emptyboats.com^ +||emptyescort.com^ +||enchantedskyline.com^ +||enchantingdiscovery.com^ +||enchantingtundra.com^ +||enchantingvalley.com^ +||encouragingthread.com^ +||endlesstrust.com^ +||endurablebulb.com^ +||energeticexample.com^ +||energeticladybug.com^ +||energyfools.com^ +||engineertrick.com^ +||enigmaprint.com^ +||enigmaticcanyon.com^ +||enigmaticvoyage.com^ +||enormousearth.com^ +||enormousfoot.com^ +||enterdrama.com^ +||entertainskin.com^ +||enthusiastictemper.com^ +||enviousshape.com^ +||enviousthread.com^ +||epicoldschool.com^ +||epicswimming.com^ +||equablekettle.com^ +||esoterictools.com^ +||essaygiants.com^ +||essayspin.com^ +||etherealbamboo.com^ +||ethereallagoon.com^ +||etherealripple.com^ +||evanescentedge.com^ +||evasivejar.com^ +||evencoating.com^ +||eventexistence.com^ +||eventsmall.com^ +||exampleshake.com^ +||excitingdates.com^ +||excitingtub.com^ +||executeknowledge.com^ +||exhibitsneeze.com^ +||exitblocked.com^ +||expansioneggnog.com^ +||exportdialog.com^ +||extractobservation.com^ +||extralocker.com^ +||extramonies.com^ +||exuberantedge.com^ +||fabcharting.com^ +||fabledsoul.com^ +||fabulousbooking.com^ +||facilitatebreakfast.com^ +||fadedsnow.com^ +||fairfeeling.com^ +||fairiesbranch.com^ +||fairygaze.com^ +||faithrowold.com^ +||fakedisguise.com^ +||fakeschool.com^ +||fallaciousfifth.com^ +||fallingshoals.com^ +||falseframe.com^ +||falsesight.com^ +||familiarrod.com^ +||fancyactivity.com^ +||fancycolorlist.net^ +||fancydune.com^ +||fangfeeling.com^ +||farethief.com^ +||farmergoldfish.com^ +||farshake.com^ +||farsnails.com^ +||fastenfather.com^ +||fasterfineart.com^ +||fasterjson.com^ +||fastwebtrends.com^ +||fatcoil.com^ +||faucetfoot.com^ +||faultycanvas.com^ +||fearfulfish.com^ +||fearfulmint.com^ +||fearlessfaucet.com^ +||fearlessfeast.com^ +||fearlesstramp.com^ +||featherstage.com^ +||feeblestamp.com^ +||feedandpurr.com^ +||feedten.com^ +||feelwarmth.com^ +||feignedfaucet.com^ +||femalecook.com^ +||fencesync.com^ +||fewjuice.com^ +||fewkittens.com^ +||fieldconfig.com^ +||figsprotein.com^ +||figurehunter.net^ +||fillthemap.com^ +||filtercutter.com^ +||finalizeforce.com^ +||financefear.com^ +||findyourdelight.com^ +||firecatfilms.com^ +||fireworkcamp.com^ +||firstendpoint.com^ +||firstscreenshot.com^ +||fishersfinds.com^ +||fitmessage.com^ +||fitnessmapper.com^ +||fivesidedsquare.com^ +||fixedfold.com^ +||flakyfeast.com^ +||flameuncle.com^ +||flashtexting.com^ +||flimsycircle.com^ +||flimsythought.com^ +||flippedfunnel.com^ +||floodedpixel.com^ +||floodprincipal.com^ +||flourishingcollaboration.com^ +||flourishingendeavor.com^ +||flourishinginnovation.com^ +||flourishingpartnership.com^ +||flowersonthebay.com^ +||flowersornament.com^ +||flowerstreatment.com^ +||flowerycreature.com^ +||floweryfact.com^ +||floweryflavor.com^ +||floweryoperation.com^ +||flushingbeast.com^ +||flutteringfireman.com^ +||flystranger.com^ +||foambench.com^ +||focusfitwear.com^ +||folderplan.com^ +||followborder.com^ +||foodczar.com^ +||foodfunfestivals.com^ +||forecasttiger.com^ +||foretellfifth.com^ +||forevergears.com^ +||forgetfulflowers.com^ +||forgetfulsnail.com^ +||fortunatemark.com^ +||forwardslashetc.com^ +||fossilzero.com^ +||fourlevelsgame.com^ +||fourpawsahead.com^ +||foxlagoon.com^ +||frailfruit.com^ +||framebanana.com^ +||franksfloral.com^ +||franticroof.com^ +||fraysystems.com^ +||freedomgrail.com^ +||freezingbuilding.com^ +||frequentflesh.com^ +||freshlyhuman.com^ +||friedone.com^ +||friendlycrayon.com^ +||friendlyfold.com^ +||frogator.com^ +||fronttoad.com^ +||frozekitchen.com^ +||frugalfiestas.com^ +||fuelfever.net^ +||fuelinspector.com^ +||fullrestore.net^ +||fumblingform.com^ +||functionalcrown.com^ +||functionalfeather.com^ +||funoverbored.com^ +||funoverflow.com^ +||funtoyplanet.com^ +||furryfork.com^ +||fusedcontent.com^ +||futuristicfifth.com^ +||futuristicframe.com^ +||fuzzyaudio.com^ +||fuzzybasketball.com^ +||fuzzyerror.com^ +||gammamaximum.com^ +||gardenovens.com^ +||gaudyairplane.com^ +||gearbubbles.com^ +||geekactive.com^ +||geekbackyard.com^ +||gemorganic.com^ +||generalprose.com^ +||getbendyyoga.com^ +||getwagtail.com^ +||ghostgenie.com^ +||gianthypes.com^ +||giantsvessel.com^ +||giddycoat.com^ +||giftclothings.com^ +||gigkarma.com^ +||giraffepiano.com^ +||gitcrumbs.com^ +||givevacation.com^ +||gladysway.com^ +||glamhawk.com^ +||gleamingcow.com^ +||gleaminghaven.com^ +||gleamingtrade.com^ +||glisteningguide.com^ +||glisteningsign.com^ +||glitteringbrook.com^ +||gloomyseason.com^ +||gloriousbeef.com^ +||glowingmeadow.com^ +||gluedpixel.com^ +||godseedband.com^ +||goldfishgrowth.com^ +||goldstudies.com^ +||golfcartlaws.com^ +||golfersrow.com^ +||gondolagnome.com^ +||gorgeousedge.com^ +||gorillapage.com^ +||gossamerwing.com^ +||gotlunched.com^ +||gracefulmilk.com^ +||grainmass.com^ +||grandfatherguitar.com^ +||grandkingdom.com^ +||granlite.com^ +||gravitygive.com^ +||gravitykick.com^ +||grayoranges.com^ +||grayreceipt.com^ +||grayscaleart.com^ +||graywords.net^ +||greasysquare.com^ +||gridbelow.com^ +||gripcorn.com^ +||grocerycrew.com^ +||grocerydog.com^ +||groovespacing.com^ +||groovyornament.com^ +||grouchybrothers.com^ +||grouchypush.com^ +||grumpydime.com^ +||grumpydrawer.com^ +||guardeddirection.com^ +||guardedschool.com^ +||guessdetail.com^ +||guidecent.com^ +||guildalpha.com^ +||guiltlessbasketball.com^ +||gulliblegrip.com^ +||gustocooking.com^ +||gustygrandmother.com^ +||haikusoap.com^ +||halcyoncanyon.com^ +||halocolor.com^ +||haltingbadge.com^ +||haltingdivision.com^ +||hammerhearing.com^ +||hamsterspot.com^ +||handleteeth.com^ +||handsomehose.com^ +||handsomeindustry.com^ +||handsomelyhealth.com^ +||handsomelythumb.com^ +||handsomeyam.com^ +||handyfield.com^ +||handyfireman.com^ +||handyincrease.com^ +||haplesshydrant.com^ +||haplessland.com^ +||harborcaption.com^ +||harborcontrol.com^ +||harborcub.com^ +||harmonywing.com^ +||hayweb.net^ +||hazmatworkshop.com^ +||headydegree.com^ +||healflowers.com^ +||heartbreakingmind.com^ +||hearthow.com^ +||heavydetail.com^ +||heavyplayground.com^ +||hellounbox.com^ +||helpcollar.com^ +||helpflame.com^ +||helpingbits.com^ +||heycomputers.com^ +||hfc195b.com^ +||highfalutinbox.com^ +||highfalutinhoney.com^ +||highnoongear.com^ +||hilariouszinc.com^ +||hippojump.com^ +||historicalbeam.com^ +||historytrade.com^ +||hocgeese.com^ +||hollowafterthought.com^ +||homebizplaza.com^ +||homelycrown.com^ +||homelyheater.com^ +||homeslick.com^ +||honestharbor.com^ +||honeybulb.com^ +||honorablehydrant.com^ +||honorableland.com^ +||hookconference.com^ +||hoorayplay.com^ +||hospitablehall.com^ +||hospitablehat.com^ +||howdoesthislook.com^ +||humdrumhobbies.com^ +||humdrumtouch.com^ +||humourspot.com^ +||hurtgrape.com^ +||hustlercoach.com^ +||hybridburst.com^ +||hydraconcept.com^ +||hypercarart.com^ +||hyperlegend.com^ +||hypnoticwound.com^ +||hystericalcloth.com^ +||hystericalfinger.com^ +||icywinter.com^ +||idlecollect.com^ +||illinvention.com^ +||illustriousoatmeal.com^ +||imagebuffer.com^ +||imagecutie.com^ +||immensehoney.com^ +||imminentshake.com^ +||importantmeat.com^ +||importedinsect.com^ +||impossibleexpansion.com^ +||impulsejewel.com^ +||incomehippo.com^ +||incompetentjoke.com^ +||inconclusiveaction.com^ +||infamousstream.com^ +||infinityhedge.com^ +||informalbook.com^ +||innocentlamp.com^ +||inputicicle.com^ +||inquisitiveinvention.com^ +||insectmacros.com^ +||insidepsych.net^ +||inspirebees.com^ +||insulatech.com^ +||intelligentscissors.com^ +||intentlens.com^ +||internalcondition.com^ +||internalsink.com^ +||intricateberry.com^ +||introjava.com^ +||inventorycache.com^$~xmlhttprequest +||inventtango.com^ +||invoicetick.com^ +||iotapool.com^ +||irelandroad.com^ +||iridescentdusk.com^ +||islandssouth.com^ +||islandwebhelp.com^ +||itemslice.com^ +||itsmatchtime.com^ +||ivykiosk.com^ +||j93557g.com^ +||jailbulb.com^ +||jamexport.com^ +||jellyfinstream.com^ +||jetskiscovers.com^ +||jewelryforest.com^ +||jewelrysprings.com^ +||jigsawlucky.com^ +||joblessdrum.com^ +||jobmist.com^ +||joshpaintings.com^ +||joyfulharbor.com^ +||joyouspool.com^ +||joyoussurprise.com^ +||jubilantaura.com^ +||jubilantcanyon.com^ +||jubilantglimmer.com^ +||jubilanthush.com^ +||jubilantlagoon.com^ +||jubilantpinnacle.com^ +||jubilanttempest.com^ +||jubilantvista.com^ +||jubilantwhisper.com^ +||juicebard.com^ +||juiceblocks.com^ +||juicingoasis.com^ +||jumbochalk.com^ +||justconfig.com^ +||justicejudo.com^ +||justlagoon.com^ +||justpickaname.com^ +||justwebcards.com^ +||justwowjars.com^ +||keenquill.com^ +||kernellife.com^ +||kidpowers.com^ +||kindlereunion.com^ +||kingsealed.com^ +||kitetuning.com^ +||kittentacos.com^ +||kittycatking.com^ +||knewpenny.com^ +||knifetreasury.com^ +||knitstamp.com^ +||knottyswing.com^ +||laboredlocket.com^ +||lackadaisicalkite.com^ +||lakeofficepros.com^ +||lakesecure.com^ +||lameletters.com^ +||lamplow.com^ +||landkarts.com^ +||landlordspy.com^ +||landwestern.com^ +||largebrass.com^ +||lastanonymous.com^ +||lasttaco.com^ +||laughcloth.com^ +||launchjack.com^ +||lazychord.com^ +||lazyexplore.com^ +||leafpilot.com^ +||leaplunchroom.com^ +||leftliquid.com^ +||lemonpackage.com^ +||lemonsandjoy.com^ +||lessonsnetwork.com^ +||libraryfacts.com^ +||libraryvalue.com^ +||liftedknowledge.com^ +||lightenafterthought.com^ +||lighttalon.com^ +||likethedog.com^ +||lilydreamer.com^ +||limecodesign.com^ +||limepeal.com^ +||linksoutside.com^ +||linkstable.com^ +||littlesun.net^ +||livelumber.com^ +||livelylaugh.com^ +||livingsleet.com^ +||lizardslaugh.com^ +||llamavoice.com^ +||loaddisplay.com^ +||loadedhearts.com^ +||loadsurprise.com^ +||locateskill.com^ +||locolava.com^ +||logicalminds.net^ +||lonelyflavor.com^ +||longingtrees.com^ +||longloops.com^ +||loosecase.com^ +||looseloaf.com^ +||lorenzourban.com^ +||losslace.com^ +||loudlunch.com^ +||lovelydrum.com^ +||loveseashore.com^ +||lowercases.com^ +||lowerthewatts.net^ +||lowkeypalmtree.com^ +||luckyshelf.com^ +||ludicrousarch.com^ +||lumberamount.com^ +||luminousboulevard.com^ +||luminouscatalyst.com^ +||luminoussculptor.com^ +||lumpygnome.com^ +||lumpylumber.com^ +||lumpywood.com^ +||lunarcave.com^ +||lunchroomlock.com^ +||lustroushaven.com^ +||luxformula.com^ +||lyricshook.com^ +||maddeningpowder.com^ +||madebyintent.com^ +||madlysuccessful.com^ +||madnessbuzz.com^ +||madoverrice.com^ +||magicaljoin.com^ +||magicalpiano.com^ +||magicminibox.com^ +||majesticwaterscape.com^ +||majesticwilderness.com^ +||makesimpact.com^ +||maliciousmusic.com^ +||managedpush.com^ +||manamoment.com^ +||manydiamonds.com^ +||manyfishes.com^ +||mapbasin.com^ +||mapcommand.com^ +||marblediscussion.com^ +||marinechurch.com^ +||markedcrayon.com^ +||markedmeasure.com^ +||marketspiders.com^ +||marriedbelief.com^ +||marriedmailbox.com^ +||marriedvalue.com^ +||marrowleaves.com^ +||marsnextdoor.com^ +||massivemark.com^ +||masterenter.com^ +||materialisticmoon.com^ +||materialmilk.com^ +||materialparcel.com^ +||maxcruisers.com^ +||maybetony.com^ +||meadowlullaby.com^ +||measlymiddle.com^ +||meatydime.com^ +||meddleplant.com^ +||mediatescarf.com^ +||mellowhush.com^ +||melodiouschorus.com^ +||melodiouscomposition.com^ +||melodiousharmony.com^ +||melodioussymphony.com^ +||melodyglobe.com^ +||meltmilk.com^ +||membernook.com^ +||memeorigin.com^ +||memolight.com^ +||memopilot.com^ +||memorizematch.com^ +||memorizeneck.com^ +||mentorsticks.com^ +||mercuryace.com^ +||meremark.com^ +||merequartz.com^ +||merryvault.com^ +||mesaviewlodge.com^ +||messagelists.com^ +||messagenovice.com^ +||messmonster.com^ +||messyoranges.com^ +||metajaws.com^ +||metawelcome.com^ +||midnightmead.com^ +||mightyspiders.com^ +||millswell.com^ +||mimosamajor.com^ +||mindfulgem.com^ +||mineinvoice.com^ +||minibilling.com^ +||minorcattle.com^ +||minuteburst.com^ +||miscreantmoon.com^ +||missionrewards.com^ +||mistervillas.com^ +||mistyhorizon.com^ +||mittencattle.com^ +||mixplays.com^ +||modularmental.com^ +||momentfilter.com^ +||monacobeatles.com^ +||monkeyapes.com^ +||monkeystyping.com^ +||monsterjokes.com^ +||monstermemes.com^ +||monthlyhat.com^ +||mooncrustpizza.com^ +||moorshoes.com^ +||morefolks.com^ +||morefriendly.com^ +||motionarray.net^ +||motionflowers.com^ +||motionlessbelief.com^ +||motionlessmeeting.com^ +||mountedbattery.com^ +||movableobject.com^ +||movemeal.com^ +||mowgoats.com^ +||muddledaftermath.com^ +||muddledmemory.com^ +||mundanenail.com^ +||mushroomgods.com^ +||mushywaste.com^ +||musicflashcard.com^ +||muteknife.com^ +||mutemailbox.com^ +||mysketchpad.com^ +||mysticalagoon.com^ +||naivestatement.com^ +||nappyattack.com^ +||nappyneck.com^ +||naturebeans.com^ +||nauticalfox.com^ +||neatbadger.com^ +||neatrule.com^ +||neatshade.com^ +||nebulacrescent.com^ +||nebulajubilee.com^ +||nebulousgarden.com^ +||nebulousquasar.com^ +||needleaf.com^ +||needyneedle.com^ +||neighborlywatch.com^ +||nervoussummer.com^ +||nestbuyers.com^ +||networklast.com^ +||newarkdriving.com^ +||newsbotnet.com^ +||nexttopchef.com^ +||nicefollows.com^ +||nicehuh.com^ +||niftygraphs.com^ +||niftyhospital.com^ +||niftyjelly.com^ +||nightwound.com^ +||nimbleplot.com^ +||noblecables.com^ +||noblefellow.com^ +||nodenotify.com^ +||nodethisweek.com^ +||noiselessplough.com^ +||nonchalantnerve.com^ +||nondescriptcrowd.com^ +||nondescriptnote.com^ +||nondescriptstocking.com^ +||nostalgicknot.com^ +||nostalgicneed.com^ +||notcardboard.com^ +||notifyglass.com^ +||notrealcat.com^ +||noundictionary.com^ +||novaseekers.com^ +||nowaymail.com^ +||nudgeduck.com^ +||nullnorth.com^ +||nullradar.com^ +||numerousnest.com^ +||oafishchance.com^ +||oafishobservation.com^ +||objecthero.com^ +||oblivionfleet.com^ +||obscenesidewalk.com^ +||obscurespace.com^ +||obsidiangems.com^ +||oceancloudhosts.com^$~xmlhttprequest +||offerniche.com^ +||offgridcrops.com^ +||offshoreassets.com^ +||offshorecyclone.com^ +||offshoregeology.com^ +||offshoregoods.com^ +||okaysurethat.com^ +||oldfashionedoffer.com^ +||oldportcoffee.com^ +||omegaroutes.com^ +||omgthink.com^ +||onecrow.net^ +||onedropocean.com^ +||onespecify.com^ +||onlinestarten.net^ +||onlywoofs.com^ +||opalquill.com^ +||operationchicken.com^ +||operationnail.com^ +||optimallimit.com^ +||optionsnomad.com^ +||opulentsylvan.com^ +||orangebirdie.com^ +||orchidgenius.com^ +||orgbackups.com^ +||orientedargument.com^ +||originblocks.com^ +||orionember.com^ +||ourblogthing.com^ +||outdoorsoil.com^ +||outdoorthingy.com^ +||outerwords.com^ +||outsidevibe.com^ +||overconfidentfood.com^ +||overkick.com^ +||overratedchalk.com^ +||owlbees.com^ +||owlreporter.com^ +||owlsr.us^ +||owlstwo.com^ +||owltin.com^ +||oxygenfuse.com^ +||pailcrime.com^ +||pailpatch.com^ +||painstakingpickle.com^ +||paintmogul.com^ +||paintpear.com^ +||paleleaf.com^ +||pamelarandom.com^ +||panickypancake.com^ +||panoramicplane.com^ +||papamug.com^ +||parallelbulb.com^ +||parchedsofa.com^ +||parentpicture.com^ +||parsimoniouspolice.com^ +||partnerhut.com^ +||partplanes.com^ +||passivepolo.com^ +||pastoralroad.com^ +||pawsnug.com^ +||peacefullimit.com^ +||peakcreator.com^ +||pearpouch.com^ +||pedropanther.com^ +||peeringhost.net^ +||pegsbuttons.com^ +||perfectfetch.com^ +||petitechili.com^ +||phonecup.com^ +||phoneresult.com^ +||photohints.com^ +||physicstees.com^ +||pickmicro.com^ +||pigeonkit.com^ +||pigeonsetc.com^ +||pigmentpaper.com^ +||pinchsquirrel.com^ +||pincourse.com^ +||pingsurvey.com^ +||piquantgrove.com^ +||piquantmeadow.com^ +||piquantpigs.com^ +||piquantprice.com^ +||piquantvortex.com^ +||pixeledhub.com^ +||pixeltrouble.com^ +||pixelvariety.com^ +||pizzasnut.com^ +||placeframe.com^ +||placidactivity.com^ +||placidperson.com^ +||planebasin.com^ +||plantcourse.com^ +||playfulriver.com^ +||pleasantpump.com^ +||plotparent.com^ +||plotrabbit.com^ +||pluckypocket.com^ +||pluckyzone.com^ +||pocketfaucet.com^ +||podname.com^ +||poemprompt.com^ +||poeticpackage.com^ +||pointdigestion.com^ +||pointlesspocket.com^ +||pointlessprofit.com^ +||poisedfuel.com^ +||poisedpig.com^ +||polishedcrescent.com^ +||polishedfolly.com^ +||politeplanes.com^ +||politicalporter.com^ +||poolcushions.com^ +||popliquids.com^ +||popmixradio.com^ +||popplantation.com^ +||possibleboats.com^ +||possiblepencil.com^ +||potatoinvention.com^ +||powerfulblends.com^ +||powerfulcopper.com^ +||powertoolwiki.com^ +||preciousplanes.com^ +||precisear.com^ +||predictplate.com^ +||prefixpatriot.com^ +||prepareplanes.com^ +||prepaymint.net^ +||presetrabbits.com^ +||presscoder.com^ +||prettybicycle.com^ +||prettydemo.com^ +||prettyeasycafe.com^ +||prettylearning.com^ +||previousplayground.com^ +||priceypies.com^ +||pricklydebt.com^ +||pricklypollution.com^ +||prideproms.com^ +||pristinegale.com^ +||probablepartner.com^ +||processplantation.com^ +||producecopy.com^ +||producepickle.com^ +||productivepear.com^ +||productsurfer.com^ +||profanstee.com^ +||profitrumour.com^ +||profusesupport.com^ +||promiseair.com^ +||propertypotato.com^ +||propsynergy.com^ +||protectpool.com^ +||protestcopy.com^ +||psychedelicarithmetic.com^ +||pubfs.com^ +||pubimgs.com^ +||publicsofa.com^ +||puffyloss.com^ +||puffypaste.com^ +||puffypull.com^ +||puffypurpose.com^ +||pulsaredit.com^ +||pulsatingmeadow.com^ +||pumpedpancake.com^ +||pumpedpurpose.com^ +||punyplant.com^ +||puppetcorp.com^ +||puppiesart.com^ +||puppytooth.com^ +||purebloom.net^ +||purposepipe.com^ +||q20jqurls0y7gk8.info^ +||quantumlagoon.com^ +||quantumshine.com^ +||queenjam.com^ +||queenskart.com^ +||questionate.com^ +||quicklyedit.com^ +||quicksandear.com^ +||quicktrick.net^ +||quietknowledge.com^ +||quillkick.com^ +||quiltruler.com^ +||quirkybliss.com^ +||quirkybodega.com^ +||quirkysugar.com^ +||quixoticnebula.com^ +||quizzicalpartner.com^ +||quizzicalzephyr.com^ +||rabbitbreath.com^ +||rabbitrifle.com^ +||rackforstorage.com^ +||radexports.com^ +||radiantcanopy.com^ +||radiateprose.com^ +||radiosfax.com^ +||raidmedics.com^ +||railwaygiraffe.com^ +||railwayreason.com^ +||raintwig.com^ +||rainyhand.com^ +||rainyrule.com^ +||rambunctiousflock.com^ +||randisphotos.com^ +||rangecake.com^ +||rangeplayground.com^ +||rangergustav.com^ +||raresummer.com^ +||razzweb.com^ +||reachhumans.com^ +||reactjspdf.com^ +||readingguilt.com^ +||readymoon.com^ +||readysetcard.com^ +||readysnails.com^ +||realizedoor.com^ +||realizerecess.com^ +||rebelclover.com^ +||rebelhen.com^ +||rebelswing.com^ +||rebootrewire.com^ +||receiptcent.com^ +||receptivereaction.com^ +||recessrain.com^ +||recipepin.com^ +||reconditeprison.com^ +||reconditerake.com^ +||reconditerespect.com^ +||recyclehits.com^ +||redbasketball.com^ +||redbricksoap.com^ +||reflectpaint.com^ +||refundradar.com^ +||regexmail.com^ +||regularplants.com^ +||regulatesleet.com^ +||rehabilitatereason.com^ +||relationrest.com^ +||releasepath.com^ +||rememberdiscussion.com^ +||remixslot.com^ +||rentinfinity.com^ +||rentpenny.com^ +||repeatsweater.com^ +||replaceroute.com^ +||rescueothers.com^ +||rescuerhino.com^ +||resonantbrush.com^ +||resonantrock.com^ +||respectrain.com^ +||restfultools.com^ +||restrainstorm.com^ +||restructureinvention.com^ +||retrievemint.com^ +||revivalvoice.com^ +||rhetoricalactivity.com^ +||rhetoricalloss.com^ +||rhetoricalveil.com^ +||rhymezebra.com^ +||rhythmrule.com^ +||richstring.com^ +||rideblackbird.com^ +||righteouscrayon.com^ +||rightfulfall.com^ +||rigidrobin.com^ +||rigidveil.com^ +||rigorlab.com^ +||ringplant.com^ +||ringsrecord.com^ +||ritzyrepresentative.com^ +||ritzyveil.com^ +||roaddynamics.com^ +||roamhousing.com^ +||robotgarages.com^ +||robotsrefinery.com^ +||rockagainst.com^ +||rockstarwriter.com^ +||rollconnection.com^ +||roseincome.com^ +||rottenray.com^ +||rovememoirs.com^ +||royalespring.com^ +||royalsbagels.com^ +||royalsweeper.com^ +||ruralrobin.com^ +||rusticfrench.com^ +||rusticprice.com^ +||ruthlessdegree.com^ +||sableshelf.com^ +||sablesmile.com^ +||sablesong.com^ +||sadloaf.com^ +||sadspacekitty.com^ +||safetybrush.com^ +||saffronrefuge.com^ +||saladfuel.com^ +||salmonfin.com^ +||salsacartel.com^ +||saltsacademy.com^ +||samesticks.com^ +||samestretch.com^ +||samplesamba.com^ +||samuraibots.com^ +||sandboxbid.com^ +||sandstrophies.com^ +||sandypocket.com^ +||sapnest.com^ +||satisfycork.com^ +||savoryink.com^ +||savoryorange.com^ +||savorystructure.com^ +||sayinnovation.com^ +||scarceshock.com^ +||scarcesign.com^ +||scarcestructure.com^ +||scarcesurprise.com^ +||scaredcomfort.com^ +||scaredsidewalk.com^ +||scaredslip.com^ +||scaredsnake.com^ +||scaredsnakes.com^ +||scaredsong.com^ +||scaredstomach.com^ +||scarefowl.com^ +||scarfsmash.com^ +||scatteredheat.com^ +||scatteredstream.com^ +||scenicapparel.com^ +||scenicchicago.com^ +||scenicdrops.com^ +||scentedkindly.com^ +||scholarloop.com^ +||sciencedart.com^ +||scientificshirt.com^ +||scintillatingscissors.com^ +||scintillatingsilver.com^ +||scissorsstatement.com^ +||scoreaisle.com^ +||scrapcranes.com^ +||scrapesleep.com^ +||scratchsofa.com^ +||screechingfurniture.com^ +||screechingstocking.com^ +||screechingstove.com^ +||scribblestring.com^ +||scrollservice.com^ +||scrubswim.com^ +||sealtravels.com^ +||seamlesssalon.com^ +||seatsmoke.com^ +||secondhandfall.com^ +||secretivesheep.com^ +||secretspiders.com^ +||secretturtle.com^ +||securityannex.net^ +||seedscissors.com^ +||seekremote.com^ +||seenvault.com^ +||seespice.com^ +||selectivesummer.com^ +||selfishsea.com^ +||selfishsnake.com^ +||sendingspire.com^ +||seniordynamic.com^ +||sentinelp.com^ +||sentrymagic.com^ +||separatesort.com^ +||seraphichorizon.com^ +||seraphicjubilee.com^ +||serendipityecho.com^ +||serenecascade.com^ +||serenepebble.com^ +||serenesurf.com^ +||serenezenith.com^ +||serenezephyr.com^ +||settleshoes.com^ +||sevendeer.com^ +||sevenhalves.com^ +||shadeship.com^ +||shadowmade.com^ +||shaggytank.com^ +||shakegoldfish.com^ +||shakysurprise.com^ +||shallowart.com^ +||shallowblade.com^ +||shamerain.com^ +||shapecomb.com^ +||sharedswap.com^ +||shatterloop.com^ +||sheargovernor.com^ +||shesubscriptions.com^ +||shinypond.com^ +||shirtseasons.com^ +||shirtsidewalk.com^ +||shiveringspot.com^ +||shiverscissors.com^ +||shockinggrass.com^ +||shockingship.com^ +||showsteel.com^ +||shredform.com^ +||shredquiz.com^ +||shrewsburyshow.com^ +||shrillspoon.com^ +||shydinosaurs.com^ +||shylibrary.com^ +||sicksmash.com^ +||siderain.com^ +||sidetrades.com^ +||sierrakermit.com^ +||signalszone.com^ +||signaturepod.com^ +||silentcredit.com^ +||silentjackal.com^ +||siliconslow.com^ +||sillyscrew.com^ +||simplenaming.com^ +||simplesafari.com^ +||simplesidewalk.com^ +||simulateswing.com^ +||sincerebuffalo.com^ +||sincerepelican.com^ +||sinceresubstance.com^ +||singroot.com^ +||sinkportal.com^ +||sitemapwizard.com^ +||sixauthority.com^ +||sixpants.com^ +||sixquickrun.com^ +||sixscissors.com^ +||sizzlingsmoke.com^ +||sketchpals.com^ +||skilledview.com^ +||skillfuldrop.com^ +||skillfullyfrugal.com^ +||skisofa.com^ +||skullmagnets.com^ +||skullteeth.com^ +||skylightdata.com^ +||slackpod.com^ +||slaysweater.com^ +||slickcontent.com^ +||slimesupplies.net^ +||slinksuggestion.com^ +||slopesoap.com^ +||smallershops.com^ +||smashquartz.com^ +||smashshoe.com^ +||smashsurprise.com^ +||smilingcattle.com^ +||smilingmaster.com^ +||smilingswim.com^ +||smoggysnakes.com^ +||smoggysongs.com^ +||smoggystation.com^ +||snacktoken.com^ +||snakemineral.com^ +||snakeslang.com^ +||snappyreport.com^ +||snapsgate.com^ +||snazzypoodle.com^ +||sneakwind.com^ +||sneakystew.com^ +||sneezecovers.com^ +||snoresmile.com^ +||snowmentor.com^ +||sockpacks.com^ +||soggysponge.com^ +||soilcontent.com^ +||soilphotos.com^ +||solarislabyrinth.com^ +||soleblinds.com^ +||solidsub.com^ +||solosduetstrios.com^ +||solvebots.com^ +||somberscarecrow.com^ +||sombersea.com^ +||sombersquirrel.com^ +||sombersticks.com^ +||sombersurprise.com^ +||songsterritory.com^ +||soothingglade.com^ +||sophisticatedstove.com^ +||sorebear.com^ +||soresidewalk.com^ +||soretrain.com^ +||soulclicking.com^ +||soundmachine.net^ +||soundstocking.com^ +||sourcecodeapp.com^ +||sourcecodeinfo.com^ +||sourceoak.com^ +||sowlettuce.com^ +||spaceaffinity.com^ +||spareapp.com^ +||sparkgoal.com^ +||sparklingshelf.com^ +||specialscissors.com^ +||spectacularstamp.com^ +||spellingthoughts.com^ +||spellknight.com^ +||spellmist.com^ +||spicesonwheels.com^ +||spicevikings.com^ +||spiffymachine.com^ +||spirebaboon.com^ +||spitefulriver.com^ +||splicebook.com^ +||spookyexchange.com^ +||spookyskate.com^ +||spookysleet.com^ +||spookystitch.com^ +||spoonballoon.com^ +||spoonsilk.com^ +||sportsnearby.com^ +||sportyforum.com^ +||spotlessstamp.com^ +||spottednoise.com^ +||springolive.com^ +||springsister.com^ +||springsnails.com^ +||sproutingbag.com^ +||sprysummit.com^ +||spuriousair.com^ +||spurioussquirrel.com^ +||spuriousstranger.com^ +||spysubstance.com^ +||squadtee.net^ +||squalidscrew.com^ +||squarecamel.com^ +||squeakzinc.com^ +||squealingturn.com^ +||squidlogic.com^ +||squishybears.com^ +||squishykiosk.com^ +||stadiumzoo.net^ +||stakedances.com^ +||stakeschips.com^ +||stakingbasket.com^ +||stakingshock.com^ +||stakingsmile.com^ +||staleshow.com^ +||stalesummer.com^ +||starfurniture.net^ +||starkscale.com^ +||starrynets.com^ +||starsmarter.com^ +||startercost.com^ +||statshunt.com^ +||statuesqueship.com^ +||statusinside.com^ +||stayaction.com^ +||steadfastseat.com^ +||steadfastsound.com^ +||steadfastsystem.com^ +||stealsteel.com^ +||steelmaiden.com^ +||steepsister.com^ +||steepsquirrel.com^ +||stellarduel.com^ +||stepcattle.com^ +||stepwisevideo.com^ +||stereoproxy.com^ +||stereotypedsugar.com^ +||stiffgame.com^ +||stiffstem.com^ +||stillpeace.com^ +||stimulatingsneeze.com^ +||stingsquirrel.com^ +||stingycrush.com^ +||stingyshoe.com^ +||stingyspoon.com^ +||stockerator.com^ +||stockingsleet.com^ +||stockingsneeze.com^ +||stocktheme.com^ +||stomachscience.com^ +||stonechin.com^ +||stonepole.com^ +||stopstomach.com^ +||stormyflower.com^ +||straightnest.com^ +||straindrinks.com^ +||strandedgame.com^ +||strangeclocks.com^ +||strawburn.com^ +||streetsort.com^ +||stretchsister.com^ +||stretchsneeze.com^ +||stretchsquirrel.com^ +||stripedbat.com^ +||strivesidewalk.com^ +||strivesquirrel.com^ +||strokesystem.com^ +||strongercity.com^ +||studioalkaline.com^ +||studycooking.com^ +||stupendoussleet.com^ +||stupendoussnow.com^ +||stupidscene.com^ +||sturdysnail.com^ +||styleaffinity.com^ +||stylelockers.com^ +||stylishbuds.com^ +||subjectivepoint.com^ +||sublimequartz.com^ +||subseaagent.com^ +||subseacare.com^ +||subseasecurity.com^ +||subsequentstew.com^ +||substantialgrade.com^ +||successbuffet.com^ +||suggestionbridge.com^ +||sulkycook.com^ +||summerobject.com^ +||sunsetcampfires.com^ +||sunsetstatic.com^ +||sunshinegates.com^ +||sunshinepint.com^ +||superchichair.com^ +||superficialeyes.com^ +||superficialspring.com^ +||superficialsquare.com^ +||supplyreward.com^ +||supportwaves.com^ +||surfacesmedia.com^ +||sustaindenim.com^ +||swankysquare.com^ +||sweetslope.com^ +||swellstocking.com^ +||swiftintro.com^ +||swimfreely.com^ +||swingslip.com^ +||swipechief.com^ +||swirlstop.com^ +||swordgoose.com^ +||syllablesight.com^ +||synonymoussticks.com^ +||synthesizescarecrow.com^ +||systemssummit.com^ +||tabcarts.com^ +||tackytrains.com^ +||tacojournal.com^ +||talltouch.com^ +||tangibleteam.com^ +||tangletrace.com^ +||tangyamount.com^ +||tangycover.com^ +||tarttendency.com^ +||taskdelight.com^ +||tasksimplify.com^ +||tasselapp.com^ +||tastelesstrees.com^ +||tastesnake.com^ +||tawdryson.com^ +||taxisubsea.com^ +||tealjewel.com^ +||teamstatus.net^ +||tearfulglass.com^ +||techconverter.com^ +||tediousbear.com^ +||tedioustooth.com^ +||teejubilee.com^ +||teenytinycellar.com^ +||teenytinyshirt.com^ +||teenytinytongue.com^ +||teeshining.com^ +||telephoneapparatus.com^ +||tempertrick.com^ +||temptteam.com^ +||tendertest.com^ +||tenhourweek.com^ +||terriblethumb.com^ +||testadmiral.com^ +||testedtouch.com^ +||texturetrick.com^ +||thebigvan.com^ +||thebrainybulb.com^ +||thecounter.net^ +||thecrazychili.com^ +||thefishstops.com^ +||thejavalane.com^ +||themangotea.com^ +||themepicker.com^ +||thepowerstones.com^ +||therapeuticcars.com^ +||thesolartime.com^ +||thesoulbrand.com^ +||thewavebeats.com^ +||thingsafterthought.com^ +||thingstaste.com^ +||thinkitten.com^ +||thinkitwice.com^ +||thirdrespect.com^ +||thomastorch.com^ +||thoughtlessknot.com^ +||threechurch.com^ +||threetruck.com^ +||thrillasoft.com^ +||thrivingmarketplace.com^ +||ticketaunt.com^ +||ticketjolly.com^ +||ticketssponge.com^ +||ticklesign.com^ +||tidymitten.com^ +||tidysprite.com^ +||tightpowder.com^ +||tiltonbots.com^ +||timecrossed.com^ +||timelessyes.com^ +||tinybluewhale.com^ +||tinyswans.com^ +||tinytendency.com^ +||tireinside.com^ +||tiresomethunder.com^ +||titangods.com^ +||toasttutor.com^ +||tofusquirrel.com^ +||tomatobarrel.com^ +||toolcapital.com^ +||toolforthought.com^ +||toomanyalts.com^ +||topcrazypress.com^ +||topicalcartel.com^ +||topthrowbacks.com^ +||tortoisepage.com^ +||toysbasics.com^ +||toytakeover.com^ +||tracecontent.com^ +||traderbyte.com^ +||tradetooth.com^ +||tranquilcan.com^ +||tranquilplume.com^ +||tranquilveil.com^ +||tranquilveranda.com^ +||trappush.com^ +||travelerpic.com^ +||treadbun.com^ +||treatoceans.com^ +||tremendousplastic.com^ +||tremendoustime.com^ +||trickfile.com^ +||tritebadge.com^ +||tritethunder.com^ +||tritetongue.com^ +||triumphbull.com^ +||tropicalpal.com^ +||troubleshade.com^ +||truckstomatoes.com^ +||truculentrate.com^ +||truebackpack.com^ +||truejasmine.com^ +||trueselfkeys.com^ +||tumbleicicle.com^ +||tuneupcoffee.com^ +||tuplebar.com^ +||turtleface.net^ +||twelvedawn.com^ +||twistloss.com^ +||typepredict.com^ +||typewebsite.com^ +||typicalairplane.com^ +||typicalteeth.com^ +||ubiquitoussea.com^ +||ultraoranges.com^ +||ultravalid.com^ +||unablehope.com^ +||unaccountablepie.com^ +||unarmedindustry.com^ +||unbecominghall.com^ +||unbecominglamp.com^ +||uncoveredexpert.com^ +||understoodocean.com^ +||unequalbrake.com^ +||unequaltrail.com^ +||unicontainers.com^ +||uninterestedquarter.com^ +||unitedscans.com^ +||unknowncrate.com^ +||unknownidea.com^ +||untidyrice.com^ +||unusualtitle.com^ +||unwieldyhealth.com^ +||unwieldyimpulse.com^ +||unwieldyplastic.com^ +||upgradeyoga.com^ +||uppitytime.com^ +||urbanlaurel.com^ +||usabilitybook.com^ +||uselesslumber.com^ +||userballot.com^ +||utopiaband.net^ +||vacationsgolf.com^ +||validmemo.com^ +||valuebuttons.com^ +||vanfireworks.com^ +||vanishmemory.com^ +||vastmillions.com^ +||velvetquasar.com^ +||vengefulgrass.com^ +||venomousvessel.com^ +||venusgloria.com^ +||verdantanswer.com^ +||verdantlabyrinth.com^ +||verdantloom.com^ +||verdantsculpture.com^ +||verseballs.com^ +||versuswall.com^ +||vibrantcelebration.com^ +||vibrantgale.com^ +||vibranthaven.com^ +||vibrantpact.com^ +||vibrantsundown.com^ +||vibrantvale.com^ +||victoriousrequest.com^ +||victoryideas.com^ +||vilenexus.com^ +||viralfoodie.net^ +||virtualvincent.com^ +||vividcanopy.com^ +||vividfrost.com^ +||vividmeadow.com^ +||vividplume.com^ +||vocalsure.com^ +||voicepins.com^ +||voidgoo.com^ +||volatileprofit.com^ +||volatilevessel.com^ +||voraciousgrip.com^ +||waitingnumber.com^ +||wantingwindow.com^ +||warmafterthought.com^ +||warnwing.com^ +||washbanana.com^ +||waterywave.com^ +||waveinverter.com^ +||wavesimple.com^ +||wavesmachine.com^ +||waxsirens.com^ +||wayjoyfarm.com^ +||waylowrates.net^ +||weatherbytes.net^ +||weatherpush.net^ +||websitesdude.com^ +||wellgroomedapparel.com^ +||wellgroomedhydrant.com^ +||whimsicalcanyon.com^ +||whimsicalgrove.com^ +||whimsicalvantage.com^ +||whimsicalzenith.com^ +||whimsygadget.com^ +||whirlwealth.com^ +||whiskyqueue.com^ +||whisperingcascade.com^ +||whisperingcrib.com^ +||whisperingsummit.com^ +||whispermeeting.com^ +||wholepagecache.com^ +||whoogled.com^ +||whymaze.com^ +||widgethouse.com^ +||wikiquotations.com^ +||wikiwhatwhere.com^ +||wildcommittee.com^ +||wildpetalfarm.com^ +||wildwoodavenue.com^ +||windbeetle.com^ +||windwardhollow.com^ +||wirecomic.com^ +||wiredforcoffee.com^ +||wirenewsletter.com^ +||wisedotcom.com^ +||wispycity.com^ +||wistfulwaste.com^ +||withsharks.com^ +||withsounds.com^ +||wittypopcorn.com^ +||wizardbuck.com^ +||wizardstrategy.com^ +||wondermakings.com^ +||woofweather.com^ +||woolstapler.com^ +||wordchip.com^ +||workhorsefunds.com^ +||workoperation.com^ +||workplacelight.com^ +||workwithdrones.com^ +||worldlever.com^ +||worldrealize.com^ +||worriednumber.com^ +||worriedwine.com^ +||wowfunnow.com^ +||wretchedfloor.com^ +||writerhubs.com^ +||writewealth.com^ +||writingcalls.com^ +||wrongpotato.com^ +||wrongwound.com^ +||wtaccesscontrol.com^ +||yachtloft.com^ +||yieldingwoman.com^ +||youcandrawanything.com^ +||yourlifedream.com^ +||zephyrcatalyst.com^ +||zephyrlabyrinth.com^ +||zeppelinradio.com^ +||zestycrime.com^ +||zestyhorizon.com^ +||zestyrover.com^ +||zestywire.com^ +||zigzagcabin.com^ +||zipperxray.com^ +||zipthelake.com^ +||zlp6s.pw^ +||zonewedgeshaft.com^ +! Specific +||autoblog.com/.api/admiral +||bikemag.com/.api/admiral +||bringmethenews.com/.api/admiral +||mensjournal.com/.api/admiral +||paradehomeandgarden.com/.api/admiral +||skateboarding.com/.api/admiral +||surfer.com/.api/admiral + +! *** easylist:easyprivacy/easyprivacy_trackingservers_notifications.txt *** +||actirinius.com^$third-party +||aimtell.com^$third-party +||alertme.news^$third-party +||amazonaws.com/cdn.aimtell.com/ +||aswpsdkeu.com^$third-party +||aswpsdkus.com^ +||bildirt.com^$third-party +||bosspush.com^$third-party +||browserpusher.com^$third-party +||cdn-sitegainer.com^$third-party +||cleverpush.com^$third-party +||copush.com^$third-party +||cracataum.com^$third-party +||danorenius.com^$third-party +||dengage.com^$third-party +||edrone.me^$third-party +||feedify.net^$third-party +||feraciumus.com^$third-party +||fernomius.com^$third-party +||fkondate.com^$third-party +||foxpush.com^$third-party +||foxpush.net^$third-party +||getback.ch^$third-party +||getnotix.co^$third-party +||getpush.net^$third-party +||getpushmonkey.com^$third-party +||gravitec.net^$third-party +||heroesdom.com^$third-party +||hrbpark.bid^$third-party +||jeeng.com^$third-party +||kattepush.com^$third-party +||letreach.com^$third-party +||lifterpopup.com^$third-party +||master-push.com^$third-party +||master-push.net^$third-party +||misrepush.com^$third-party +||moengage.com^$third-party +||mypush.online^$third-party +||najva.com^$third-party +||nativesubscribe.pro^$third-party +||netmera-web.com^$third-party +||notifadz.com^$third-party +||notify.solutions^$third-party +||notiks.io^$third-party +||notiksio.com^$third-party +||notix.io^$third-party +||on-push.com^$third-party +||onepush.app^$third-party +||outfunnel.com^$third-party +||pn.vg^$third-party +||provesrc.com^$third-party +||psh.one^$third-party +||push-ad.com^$third-party +||push-free.com^$third-party +||push.delivery^$third-party +||push7.jp^$third-party +||pushalert.co^$third-party +||pushbird.com^$third-party +||pushbullet.com^$third-party +||pushengage.com^$third-party +||pushible.com^$third-party +||pushify.com^$third-party +||pushmaster-cdn.xyz^ +||pushowl.com^$third-party +||pushprofit.ru^$third-party +||pushpushgo.com^$third-party +||pushwize.com^$third-party +||pushwoosh.com^$third-party +||reprocautious.com^$third-party +||sbi-push.com^$third-party +||sendpulse.com^$third-party +||shroughtened.com^$third-party +||snd.tc^$third-party +||subscribers.com^$third-party +||truenat.bid^$third-party +||truepush.com^$third-party +||unative.com^$third-party +||urbanairship.com^ +||viapush.com^$third-party +||webpu.sh^$third-party +||webpushr.com^$third-party +||webpushs.com^$third-party +||whiteclick.biz^$third-party +||wonderpush.com^$third-party +||wwclickserv.club^$third-party +||xtremepush.com^$third-party + +! *** easylist:easyprivacy/easyprivacy_trackingservers.txt *** +||google-analytics-cn.com^ +||googleoptimize-cn.com^ +||googletagmanager-cn.com^ +! IP tracking +||0.0.0.1^ +! Bright Data https://github.com/AdguardTeam/AdGuardSDNSFilter/issues/1580 +||brdtest.com^ +||brdtnet.com^ +||brightdata.com^$third-party +||brightdata.de^$third-party +||luminati.io^ +||perr.l-agent.me^ +||perr.l-err.biz^ +! Block ping +$ping,third-party +! https://www.opensubtitles.org/ +$third-party,xmlhttprequest,domain=opensubtitles.org +! Oracle +||addthis.com^$third-party +||addthiscdn.com^$domain=~addthis.com +||addthisedge.com^$third-party +! revprotect +||pphwrevr.com^$third-party +||protectcrev.com^$third-party +||protectsubrev.com^$third-party +||revcatch.com^$third-party +||revprotect.com^$third-party +! Marketo email tracking domains https://github.com/easylist/easylist/issues/6475 +||mkto-*.com^$third-party +! Fingerprinting +||breaktime.com.tw^$third-party +||brightedge.com^$third-party +||citrusad.net^$third-party +||clickguardian.app^$third-party +||clickyab.com^$third-party +||fpjscdn.net^ +||guoshipartners.com^$third-party +||klangoo.com^$third-party +||p30rank.ir^$third-party +||ppcprotect.com^$third-party +||push4site.com^$third-party +||ravelin.net^$third-party +||simility.com^$third-party +!-----------------International third-party tracking domains-----------------! +! *** easylist:easyprivacy/easyprivacy_trackingservers_international.txt *** +||123-counter.de^$third-party +||24log.de^$third-party +||3ng6p6m0.de^$third-party +||4stats.de^$third-party +||active-tracking.de^$third-party +||adc-serv.net^$third-party +||adclear.net^$third-party +||adcrowd.com^$third-party +||admeira.ch^$third-party +||adquality.ch^$third-party +||adtraxx.de^$third-party +||adtriba.com^$third-party +||amunx.de^$third-party +||analytics.rechtslupe.org^ +||andyhoppe.com^$third-party +||anormal-tracker.de^$third-party +||api-v4.trbo.com*plvid=$third-party,xmlhttprequest +||area51.to^$third-party +||atsfi.de^$third-party +||audiencemanager.de^$third-party +||audienzz.ch^$third-party +||avencio.de^$third-party +||backlink-test.de^$third-party +||backlinkdino.de^$third-party +||bekannt-im-web.de^$third-party +||belboon.de^$third-party +||beliebtestewebseite.de^$third-party +||besucherzaehler-counter.de^$third-party +||besucherzaehler-homepage.de^$third-party +||besucherzaehler-zugriffszaehler.de^$third-party +||besucherzaehler.org^$third-party +||betarget.de^$third-party +||bf-tools.net^$third-party +||blacktri.com^$third-party +||blog-o-rama.de^$third-party +||blog-webkatalog.de^$third-party +||blogcounter.com^$third-party +||blogcounter.de^$third-party +||bloggeramt.de^$third-party +||bloggerei.de^$third-party +||blogtraffic.de^$third-party +||bluecounter.de^$third-party +||bonitrust.de^$third-party +||bonuscounter.de^$third-party +||businessclick.ch^$third-party +||checkeffect.at^$third-party +||clickmap.ch^$third-party +||content-garden.com^$third-party +||contiamo.com^$third-party +||count24.de^$third-party +||countar.de^$third-party +||counter-go.de^$third-party +||counter-gratis.com^$third-party +||counter-kostenlos.net^$third-party +||counter-treff.de^$third-party +||counter-zaehler.de^$third-party +||counter.de^$third-party +||counter27.ch^$third-party +||countercity.net^$third-party +||counterlevel.de^$third-party +||counteronline.de^$third-party +||counterseite.de^$third-party +||counterserver.de^$third-party +||counterstation.de^$third-party +||counterstatistik.de^$third-party +||counthis.com^$third-party +||counti.de^$third-party +||countino.de^$third-party +||countit.ch^$third-party +||countnow.de^$third-party +||counto.de^$third-party +||countok.de^$third-party +||countyou.de^$third-party +||cptrack.de^$third-party +||dcmn.io^$third-party +||df-srv.de^$third-party +||digidip.net^$third-party +||digistats.de^$third-party +||directcounter.de^$third-party +||divolution.com^$third-party +||dl8.me^$third-party +||dreamcounter.de^$third-party +||durchsichtig.xyz^ +||eanalyzer.de^$third-party +||easytracking.de^$third-party +||econda-monitor.de^$third-party +||edococounter.de^$third-party +||edtp.de^$third-party +||emetriq.de^$third-party +||etracker.de^$third-party +||etrust.eu^$third-party +||euro-pr.eu^$third-party +||eurocounter.com^$third-party +||exapxl.de^$third-party +||faibl.org^$third-party +||fairanalytics.de^$third-party +||fast-counter.net^$third-party +||fastcounter.de^$third-party +||fixcounter.com^$third-party +||free-counters.net^$third-party +||fun-hits.com^$third-party +||generaltracking.de^$third-party +||gezaehlt.de^$third-party +||gft2.de^$third-party +||giga-abs.de^$third-party +||gostats.de^$third-party +||gratis-besucherzaehler.de^$third-party +||gratis-counter-gratis.de^$third-party +||greatviews.de^$third-party +||grfz.de^$third-party +||haymarketstat.de^$third-party +||healte.de^$third-party +||hitmaster.de^$third-party +||hot-count.com^$third-party +||hstrck.com^$third-party +||htm1.ch^$third-party +||hung.ch^$third-party +||iivt.com^$third-party +||imcht.net^$third-party +||imcounter.com^$third-party +||ingenioustech.biz^$third-party +||intelliad.de^$third-party +||interaktiv-net.de^$third-party +||interhits.de^$third-party +||ioam.de^$third-party +||ipcount.net^$third-party +||iyi.net^$third-party +||kctag.net^$third-party +||keytrack.de^$third-party +||kostenlose-counter.com^$third-party +||kupona.de^$third-party +||lddt.de^$third-party +||leserservice-tracking.de^$third-party +||link-empfehlen24.de^$third-party +||lokalleads-cci.com^$third-party +||losecounter.de^$third-party +||lumitos.com^$third-party +||mairdumont.com^$third-party +||marketing-page.de^$third-party +||matelso.de^$third-party +||mateti.net^$third-party +||md-nx.com^$third-party +||meetrics.net^$third-party +||mengis-linden.org^$third-party +||metalyzer.com^$third-party +||microcounter.de^$third-party +||mindtake.com^$third-party +||motorpresse-statistik.de^$third-party +||mr-rank.de^$third-party +||multicounter.de^$third-party +||my-ranking.de^$third-party +||netcounter.de^$third-party +||netdebit-counter.de^$third-party +||netpoint-media.de^$third-party +||netupdater.info^$third-party +||netzaehler.de^$third-party +||netzstat.ch^$third-party +||observare.de^$third-party +||odoscope.cloud^$third-party +||oewabox.at^$third-party +||offer-go.com^$third-party +||oghub.io^$third-party +||optimierung-der-website.de^$third-party +||ourstats.de^$third-party +||page-hit.de^$third-party +||pagerank-linkverzeichnis.de^$third-party +||pagerank-online.eu^$third-party +||pc-agency24.de^$third-party +||plexworks.de^$third-party +||powercount.com^$third-party +||ppro.de^$third-party +||pr-linktausch.de^$third-party +||pr-sunshine.de^$third-party +||prnetwork.de^$third-party +||productsup.com^$third-party +||prudsys-rde.de^$third-party +||ptadsrv.de^$third-party +||rank4all.eu^$third-party +||rankchamp.de^$third-party +||ranking-charts.de^$third-party +||ranking-counter.de^$third-party +||ranking-hits.de^$third-party +||ranking-links.de^$third-party +||redretarget.com^$third-party +||refinedads.com^$third-party +||reshin.de^$third-party +||retailads.net^$third-party +||rightstats.com^$third-party +||royalcount.de^$third-party +||scriptil.com^$third-party +||scw.systems^$third-party +||sedotracker.de^$third-party +||seitwert.de^$third-party +||selfcampaign.com^$third-party +||sensic.net^$third-party +||sitealyse.de^$third-party +||sitebro.de^$third-party +||slogantrend.de^$third-party +||smarketer.de^$third-party +||space-link.de^$third-party +||spacehits.net^$third-party +||speedcount.de^$third-party +||speedcounter.net^$third-party +||speedtracker.de^$third-party +||spelar.org^$third-party +||spider-mich.com^$third-party +||sponsorcounter.de^$third-party +||spring-tns.net^$third-party +||static-fra.de^*/targeting.js +||static-fra.de^*/tracking.js +||statistik-gallup.net^$third-party +||stats.de^$third-party +||stats4free.de^$third-party +||stetic.com^$third-party +||sunios.de^$third-party +||t4ft.de^$third-party +||tda.io^$third-party +||technical-service.net^$third-party +||tedo-stats.de^$third-party +||tisoomi-services.com^$third-party +||toplist100.org^$third-party +||topstat.com^$third-party +||tracdelight.com^$third-party +||tracdelight.io^$third-party +||trackboxx.info^$third-party +||trafficmaxx.de^$third-party +||trendcounter.de^$third-party +||trkme.net^$third-party +||txt.eu^$third-party +||undom.net^$third-party +||uniconsent.com^$third-party +||untho.de^$third-party +||up-rank.com^$third-party +||urstats.de^$third-party +||usage.seibert-media.io^$third-party +||usemaxserver.de^$third-party +||viewar.org^$third-party +||vinsight.de^$third-party +||visitor-stats.de^$third-party +||vtracy.de^$third-party +||wcfbc.net^$third-party +||webhits.de^$third-party +||weblist.de^$third-party +||webprospector.de^$third-party +||webtrekk-us.net^$third-party +||webtrekk.de^$third-party +||webtrekk.net^$third-party +||webttracking.de^$third-party +||wecount4u.com^$third-party +||welt-der-links.de^$third-party +||wipe.de^$~script,third-party +||wp-worthy.de^$third-party +||xcounter.ch^$third-party +||xhit.com^$third-party +||xplosion.de^$third-party +||yoochoose.net^$third-party +! French +||123compteur.com^$third-party +||7x4.fr^$third-party +||7x5.fr^$third-party +||abcompteur.com^$third-party +||admo.tv^$third-party +||adsixmedia.fr^$third-party +||adthletic.com^$third-party +||affilizr.com^$third-party +||air360tracker.net^$third-party +||alkemics.com^$third-party +||allo-media.net^$third-party +||analytics-cdiscount.com^$third-party +||antvoice.com^$third-party +||atraxio.com^$third-party +||audiencesquare.com^$third-party +||carts.guru^$third-party +||casualstat.com^$third-party +||compteur-fr.com^$third-party +||compteur-gratuit.org^$third-party +||compteur-visite.com^$third-party +||compteur.org^$third-party +||count.fr^$third-party +||countus.fr^$third-party +||cshield.io^$third-party +||d-bi.fr^$third-party +||datado.me^$third-party +||datadome.co^$third-party +||do09.net^$third-party +||early-birds.io^$third-party +||edt02.net^$third-party +||emailretargeting.com^$third-party +||et-gv.fr^$third-party +||ezakus.net^$third-party +||facil-iti.com^$third-party +||ferank.fr^$third-party +||first-id.fr^$third-party +||fogl1onf.com^$third-party +||galaxiemedia.fr^$third-party +||geocompteur.com^$third-party +||geovisite.ovh^$third-party +||hunkal.com^$third-party +||ivitrack.com^$third-party +||kdata.fr^$third-party +||leadium.com^$third-party +||libstat.com^$third-party +||livestats.fr^$third-party +||mastertag.effiliation.com^$third-party +||mb-srv.com^$third-party +||megavisites.com^$third-party +||mgtmod01.com^$third-party +||mmtro.com^$third-party +||netquattro.com/stats/ +||netvigie.com^$third-party +||non.li^$third-party +||pa-cd.com^$third-party +||phywi.org^$third-party +||pingclock.net^$third-party +||semiocast.com^$third-party +||shopimind.com^$third-party +||sk1n.fr^$third-party +||sk8t.fr^$third-party +||sparteo.com^$third-party +||stats.fr^$third-party +||sync.tv^$third-party +||tget.me^$third-party +||tinyclues.com^$third-party +||titag.com^$third-party +||toc.io^$third-party +||tracking.wlscripts.net^ +||uzerly.net^$third-party +||webcompteur.com^$third-party +||winitout.com^$third-party +||wysistat.com^$third-party +||x-traceur.com^$third-party +! Armenian +||circle.am^$third-party +! Azerbaijani +||mobtop.az^$third-party +! Belarusian +||call-tracking.by^$third-party +! Bulgarian +||trafit.com^$third-party +||tyxo.bg^$third-party +! Chinese +||365dmp.com^$third-party +||50bang.org^$third-party +||acs86.com^$third-party +||ad7.com^$third-party +||adop.cc^$third-party +||adskom.com^$third-party +||adxvip.com^$third-party +||affclkr.com^$third-party +||appier.net^$third-party +||baifendian.com^$third-party +||blog104.com^$third-party +||blogtw.net^$third-party +||cctvgb.com.cn^$third-party +||cdnmaster.cn^$third-party +||clicki.cn^$third-party +||cnzz.net^$third-party +||cr-nielsen.com^$third-party +||ctags.cn^$third-party +||datayi.cn^$third-party +||eland-tech.com^$third-party +||emarbox.com^$third-party +||fraudmetrix.cn^$third-party +||ggxt.net^$third-party +||giocdn.com^$third-party +||gm99.com^$third-party +||gostats.cn^$third-party +||gridsum.com^$third-party +||gridsumdissector.com^$third-party +||growingio.com^$third-party +||gtags.net^$third-party +||he2d.com^$third-party +||hotrank.com.tw^$third-party +||hubpd.com^$third-party +||ipinyou.com^$third-party +||jiankongbao.com^$third-party +||jpush.cn^$third-party +||lndata.com^$third-party +||mediav.com^$third-party +||miaozhen.com^$third-party +||mmstat.com^$third-party +||oadz.com^$third-party +||p0y.cn^$third-party +||phpstat.com^$third-party +||pixanalytics.com^$third-party +||pp8.com^$third-party +||pvmax.net^$third-party +||qchannel03.cn^$third-party +||qhupdate.com^$third-party +||reachmax.cn^$third-party +||sagetrc.com^$third-party +||scupio.com^$third-party +||sdqoi2d.com^$third-party +||sjv.io^$third-party +||ta.sbird.xyz^$third-party +||tagmanager.cn^$third-party +||tenmax.io^$third-party +||threatbook.cn^$third-party +||tomonline-inc.com^$third-party +||top-bloggers.com^$third-party +||topsem.com^$third-party +||tovery.net^$third-party +||turtlemobile.com.tw^$third-party +||twcouponcenter.com^$third-party +||vamaker.com^$third-party +||vdoing.com^$third-party +||vm5apis.com^$third-party +||webdissector.com^$third-party +||xtgreat.com^$third-party +||yigao.com^$third-party +||youle55.com^$third-party +||zampda.net^$third-party +||ztcadx.com^$third-party +! Croatian +||dotmetrics.net^$third-party +||xclaimwords.net^$third-party +! Czech +||adactive.cz^$third-party +||affilbox.cz^$third-party +||affiliateport.eu^$third-party +||analights.com^$third-party +||boldem.cz^$third-party +||ehub.cz^$third-party +||itop.cz^$third-party +||leady.com^$third-party +||lookit.cz^$third-party +||monkeytracker.cz^$third-party +||navrcholu.cz^$third-party +||netagent.cz^$third-party +||performax.cz^$third-party +||pocitadlo.cz^$third-party +||programmatic.cz^$third-party +||retargeted.co^$third-party +||semnicneposilejte.cz^$third-party +||smartselling.cz^$third-party +! Danish +||agillic.eu^$third-party +||andersenit.dk^$third-party +||chart.dk^$third-party +||digitaladvisor.dk^$third-party +||euroads.dk^$third-party +||gixmo.dk^$third-party +||hitcount.dk^$third-party +||infocollect.dk^$third-party +||livecounter.dk^$third-party +||livewebstats.dk^$third-party +||ncom.dk^$third-party +||netminers.dk^$third-party +||netstats.dk^$third-party +||parameter.dk^$third-party +||peakcounter.dk^$third-party +||telemetric.dk^$third-party +||tns-gallup.dk^$third-party +||zipstat.dk^$third-party +! Dutch +||active24stats.nl^$third-party +||istats.nl^$third-party +||leadsandmore.go2cloud.org^ +||mtrack.nl^$third-party +||mystats.nl^$third-party +||onlinesucces.nl^$third-party +||stealth.nl^$third-party +||svtrd.com^$third-party +||synovite-scripts.com^$third-party +||traffic4u.nl^$third-party +! Estonian +||counter.ok.ee^$third-party +! Finnish +||kavijaseuranta.fi^$third-party +||leiki.com^$third-party +||m-brain.fi^$third-party +||netmonitor.fi^$third-party +||tracking*.euroads.fi^$third-party +||vihtori-analytics.fi^$third-party +! Georgian +||tbcconnect.ge^$third-party +! Greek +||appocalypsis.com^$third-party +||linkwi.se^$third-party +! Hebrew +||enter-system.com^$third-party +||erate.co.il^$third-party +||fortvision.com^$third-party +||lead.im^$third-party +||memcyco.com^$third-party +! Hungarian +||gpr.hu^$third-party +||hirmatrix.hu^$third-party +||mystat.hu^$third-party +||p24.hu^$third-party +! Icelandic +||modernus.is^$third-party +! Indonesian +||analytic.rocks^$third-party +||meiro.io^$third-party +||props.id^$third-party +! Italian +||0stats.com^$third-party +||24log.it^$third-party +||accessi.it^$third-party +||buzzoole.com^$third-party +||contatoreaccessi.com^$third-party +||cpmktg.com^$third-party +||ctusolution.com^$third-party +||digital-metric.com^$third-party +||distribeo.com^$third-party +||freecounter.it^$third-party +||freestat.ws^$third-party +||freestats.net^$third-party +||freestats.tv^$third-party +||freestats.ws^$third-party +||geocontatore.com^$third-party +||gm-it.consulting^$third-party +||hiperstat.com^$third-party +||hitcountersonline.com^$third-party +||imetrix.it^$third-party +||ipfrom.com^$third-party +||italianadirectory.com^$third-party +||keyxel.com^$third-party +||laserstat.com^$third-party +||mwstats.net^$third-party +||mystat.it^$third-party +||ninestats.com^$third-party +||ntlab.org^$third-party +||pagerankfree.com^$third-party +||shinystat.it^$third-party +||sibautomation.com^$third-party +||spearad.video^$third-party +||specialstat.com^$third-party +||sphostserver.com^$third-party +||statistiche-free.com^$third-party +||statistiche.it^$third-party +||statistichegratis.net^$third-party +||statsforever.com^$third-party +||superstat.info^$third-party +||tetigi.com^$third-party +||thestat.net^$third-party +||trackset.it^$third-party +||trick17.it^$third-party +||vivistats.com^$third-party +||webads.eu^$third-party +||webmeter.ws^$third-party +||webmobile.ws^$third-party +||websanalytic.com^$third-party +||whoseesyou.com^$third-party +||yodalytics.com^$third-party +! Japanese +||accaii.com^$third-party +||accesstrade.net^$third-party +||actiontracking.jp^$third-party +||ad-fam.com^$third-party +||ad-track.jp^$third-party +||ad2iction.com^$third-party +||adapf.com^$third-party +||adgainersolutions.com^$third-party +||adgocoo.com^$third-party +||admatrix.jp^$third-party +||adpon.jp^$third-party +||adrange.net^$third-party +||af-z.jp^$third-party +||afi-b.com^$third-party +||aid-ad.jp^$third-party +||amoad.com^$third-party +||analyticsip.net^$third-party +||ar-x.site^$third-party +||aspservice.jp^$third-party +||bigmining.com^$third-party +||blogranking.net^$third-party +||bownow.jp^$third-party +||canem-auris.com^$third-party +||caprofitx.com^$third-party +||catsys.jp^$third-party +||cetlog.jp^$third-party +||cheqzone.com^$third-party +||cosmi.io^$third-party +||d-markets.net^$third-party +||d2-apps.net^$third-party +||d2c.ne.jp^$third-party +||dbfocus.jp^$third-party +||dc-tag.jp^$third-party +||deteql.net^$third-party +||dmtag.jp^$third-party +||docodoco.jp^$third-party +||docomo-analytics.com^$third-party +||e-click.jp^$third-party +||e-kaiseki.com^$third-party +||ebis.ne.jp^$third-party +||ec-concier.com^$third-party +||ec-optimizer.com^$third-party +||eco-tag.jp^$third-party +||eltex.co.jp^$third-party +||enhance.co.jp^$third-party +||f-counter.jp^$third-party +||f-counter.net^$third-party +||f-tra.com^$third-party +||fpad.jp^$third-party +||fspark-ap.com^$third-party +||fw-ad.jp^$third-party +||geniee.jp^$third-party +||genieessp.jp^$third-party +||gmodmp.jp^$third-party +||gmossp-sp.jp^$third-party +||gsspcln.jp^$third-party +||gyro-n.com^$third-party +||h-cast.jp^$third-party +||hebiichigo.com^$third-party +||hitgraph.jp^$third-party +||i-mobile.co.jp^$third-party +||i2ad.jp^$third-party +||i2i.jp^$third-party +||iid-network.jp^$third-party +||im-apps.net^$third-party +||interactive-circle.jp^$third-party +||iogous.com^$third-party +||kaizenplatform.net^$third-party +||letro.jp^$third-party +||logly.co.jp^$third-party +||ma-tag.com^$third-party +||macromill.com^$third-party +||medipartner.jp^$third-party +||mobadme.jp^$third-party +||mobylog.jp^$third-party +||moshimo.com^$third-party +||omiki.com^$third-party +||owldata.com^$third-party +||pagoda56.com^$third-party +||performancefirst.jp^$third-party +||polymorphicads.jp^$third-party +||pop.unitedgate.co.jp^$third-party +||quant.jp^$third-party +||r-ad.ne.jp^$script,third-party +||rays-counter.com^$third-party +||rentracks.jp^$third-party +||research-artisan.com^$third-party +||rtoaster.jp^$third-party +||segs.jp^$third-party +||sibulla.com^$third-party +||smart-counter.net^$third-party +||smartnews-ads.com^$third-party +||speee-ad.jp^$third-party +||sygrip.info^$third-party +||tag.contentanalytics.jp^$third-party +||talpa-analytics.com^$third-party +||taxel.jp^$third-party +||team-rec.jp^$third-party +||tgknt.com^$third-party +||thesmilingpencils.com^$third-party +||track.robee.tech^$third-party +||trackfeed.com^$third-party +||uncn.jp^$third-party +||valis-cpx.jp^$third-party +||viaklera.com^$third-party +||wonder-ma.com^$third-party +||woomy.me^$third-party +||zerostats.com^$third-party +||ziyu.net^$third-party +! Korean +||acrosspf.com^$third-party +||adpick.co.kr^$third-party +||adtive.com^$third-party +||aicontents.net^$third-party +||contentsfeed.com^$third-party +||dawin.tv^$third-party +||logger.co.kr^$third-party +||oevery.com^$third-party +||rainbownine.net^$third-party +||smlog.co.kr^$third-party +||tenping.kr^$third-party +! Latvian +||cms.lv^$third-party +||mcloudglobal.com^$third-party +||on-line.lv^$third-party +||ppdb.pl^$third-party +||puls.lv^$third-party +||reitingi.lv^$third-party +||statistika.lv^$third-party +||top.lv^$third-party +||webstatistika.lv^$third-party +||wos.lv^$third-party +! Lithuanian +||dcdn.lt/g.js +||easy.lv^$third-party +||maxtraffic.com^$third-party +||mxapis.com^$third-party +||stats.lt^$third-party +||visits.lt^$third-party +||www.hey.lt^$third-party +! Norwegian +||de17a.com^$third-party +||webstat.no^$third-party +||xtractor.no^$third-party +! Persian +||amarfa.ir^$third-party +||persianstat.com^$third-party +||persianstat.ir^$third-party +||tinystat.ir^$third-party +||yektanet.com^$third-party +! Polish +||adschoom.com^$third-party +||adstat.4u.pl^$third-party +||caanalytics.com^$third-party +||clickmatic.pl^$third-party +||conversion.pl^$third-party +||conversionlabs.net.pl^$third-party +||dmdi.pl^$third-party +||goprediction.com^$third-party +||gostats.pl^$third-party +||hub.com.pl^$third-party +||inistrack.net^$third-party +||legenhit.com^$third-party +||naanalle.pl^ +||ngacm.com^$third-party +||ngastatic.com^$third-party +||nsaudience.pl^$third-party +||refericon.pl^$third-party +||rejestr.org^$third-party +||sare25.com^$third-party +||stat.4u.pl^$third-party +||stat.pl^$third-party +||trafficscanner.pl^$third-party +||way2traffic.com^$third-party +! Portuguese +||ad5track.com^$third-party +||afilio.com.br^$third-party +||bob-recs.com^$third-party +||btg360.com.br^$third-party +||clearsale.com.br^$third-party +||dataroyal.com.br^$third-party +||dataunion.com.br^$third-party +||denakop.com^$third-party +||deviceprotect.eu^$third-party +||engageya.com^$third-party +||enviou.com.br^$third-party +||fulllab.com.br^$third-party +||goadopt.io^$third-party +||hariken.co^$third-party +||lomadee.com^$third-party +||mailinbox.com.br^$third-party +||marktest.pt^$third-party +||percycle.com^$third-party +||retargeter.com.br^$third-party +||sambaads.com^$third-party +||shoptarget.com.br^$third-party +||solucx.com.br^$third-party +||taghike.com^$third-party +||tailtarget.com^$third-party +||trugaze.io^$third-party +||voxus.com.br^$third-party +||widgets.solutions^$third-party +! Romanian +||2222.ro^$third-party +||2parale.ro^$third-party +||2performant.com^$third-party +||aghtag.tech^$third-party +||agorahtag.tech^$third-party +||attr-2p.com^$third-party +||best-top.ro^$third-party +||gtop.ro^$third-party +||hit100.ro^$third-party +||pahtag.tech^$third-party +||profitshare.ro^$third-party +||retargeting.biz^$third-party +||statistics.ro^$third-party +||top-ro.ro^$third-party +||zontera.com^$third-party +! Russian +||1dmp.io^$third-party +||24log.ru^$third-party +||24smi.info^$third-party +||24smi.net^$third-party +||2xclick.ru^$third-party +||a-counter.kiev.ua^$third-party +||admile.ru^$third-party +||adsmediator.com^$third-party +||adx.com.ru^$third-party +||apkonline.ru^$third-party +||apptracer.ru^$third-party +||audsp.com^$third-party +||avsplow.com^$third-party +||ban.su^$third-party +||bid.run^$third-party +||bidderrtb.com^$third-party +||botdetector.ru^$third-party +||botscanner.com^$third-party +||bumlam.com^$third-party +||checkru.net^$third-party +||click.ru^$third-party +||clubcollector.com^$third-party +||cnstats.ru^$third-party +||comagic.ru^$third-party +||cpaevent.ru^$third-party +||culturaltracking.ru^$third-party +||detmir-stats.ru^$third-party +||dircont3.com^$third-party +||directcrm.ru^$third-party +||e-kuzbass.ru^$third-party +||exe.bid^$third-party +||faststart.ru^$third-party +||gdeslon.ru^$third-party +||get4click.ru^$third-party +||giraff.io^$third-party +||gnezdo.ru^$third-party +||gostats.ru^$third-party +||hitmir.ru^$third-party +||hsdn.org^$third-party +||idntfy.ru^$third-party +||imrk.net^$third-party +||infostroy.nnov.ru^$third-party +||infox.sg^$third-party +||inrd.ru^$third-party +||instreamatic.com^$third-party +||interakt.ru^$third-party +||intergid.ru^$third-party +||iryazan.ru^$third-party +||kmindex.ru^$third-party +||leadhit.ru^$third-party +||leadslabpixels.net^$third-party +||lentainform.com^$third-party +||logua.com^$third-party +||logxp.ru^$third-party +||logz.ru^$third-party +||lookmy.info^$third-party +||lugansk-info.ru^$third-party +||madnet.ru^$third-party +||mediaplan.ru^$third-party +||mediatoday.ru^$third-party +||metrika-informer.com^$third-party +||mobtop.com^$third-party +||mokuz.ru^$third-party +||musiccounter.ru^$third-party +||mystat-in.net^$third-party +||mytopf.com^$third-party +||netlog.ru^$third-party +||octotracking.com^$third-party +||otclick-adv.ru^$third-party +||pladform.ru^$third-party +||pmbox.biz^$third-party +||proext.com^$third-party +||quick-counter.net^$third-party +||relap.io^$third-party +||retag.xyz^$third-party +||rnet.plus^$third-party +||roistat.com^$third-party +||ru.net^$third-party +||rutarget.ru^$third-party +||sarov.ws^$third-party +||sas.com^$third-party +||sbermarketing.ru^$third-party +||semantiqo.com^$third-party +||sensor.org.ua^$third-party +||seo-master.net^$third-party +||site-submit.com.ua^$third-party +||stat.media^$third-party +||stat24.ru^$third-party +||targetads.io^$third-party +||targetix.net^$third-party +||tbex.ru^$third-party +||tds.io^$third-party +||teletarget.ru^$third-party +||theactivetag.com^$third-party +||tnative.ru^$third-party +||tophitbit.com^$third-party +||toptracker.ru^$third-party +||uarating.com^$third-party +||upravel.com^$third-party +||uptolike.com^$third-party,domain=~uptolike.ru +||utraff.com^$third-party +||uzrating.com^$third-party +||variti.net^$third-party +||vidigital.ru^$third-party +||vira.ru^$third-party +||volgograd-info.ru^$third-party +||vologda-info.ru^$third-party +||warlog.ru^$third-party +||web-visor.com^$third-party +||webest.info^$third-party +||webtalking.ru^$third-party +||webturn.ru^$third-party +||webvisor.com^$third-party +||webvisor.ru^$third-party +||wwgate.ru^$third-party +||yandexmetric.com^$third-party +||zero.kz^$third-party +! Serbian +! Slovak +||algopine.com^$third-party +||idot.cz^$third-party +||pocitadlo.sk^$third-party +||toplist.sk^$third-party +! Spanish +||24log.es^$third-party +||agency360.io^$third-party +||botize.com^$third-party +||ccrtvi.com^$third-party +||certifica.com^$third-party +||comitiumanalytics.com^$third-party +||contadordevisitas.es^$third-party +||contadorgratis.com^$third-party +||contadorgratis.es^$third-party +||contadorvisitasgratis.com^$third-party +||contadorweb.com^$third-party +||delidatax.net^$third-party +||easysol.net^$third-party +||eresmas.net^$third-party +||estadisticasgratis.com^$third-party +||flags.es^$third-party +||intrastats.com^$third-party +||mabaya.com^$third-party +||micodigo.com^$third-party +||propelbon.com^$third-party +||protecmedia.com^$third-party +||socy.es^$third-party +! Swedish +||adsettings.com^$third-party +||adten.eu^$third-party +||adtr.io^$third-party +||bonnieradnetwork.se^$third-party +||brandmetrics.com^$third-party +||citypaketet.se^$third-party +||dep-x.com^$third-party +||lwadm.com^$third-party +||myvisitors.se^$third-party +||prospecteye.com^$third-party +||publish-int.se^$third-party +||research-int.se^$third-party +||sifomedia.se^$third-party +||suntcontent.se^$third-party +||tidningsnatet.se^$third-party +||tns-sifo.se^$third-party +||webserviceaward.com^$third-party +||yieldbird.com^$third-party +! Thai +||d-stats.com^$third-party +||tracker.stats.in.th^$third-party +||truehits.net^$third-party +||truehits3.gits.net.th^$third-party +! Turkish +||brainsland.com^$third-party +||cunda.ai^$third-party +||elmasistatistik.com.tr^$third-party +||onlinewebstat.com^$third-party +||pixad.com.tr^$third-party +||realist.gen.tr^$third-party +||sayac.net.tr^$third-party +||sayyac.com^$third-party +||sayyac.net^$third-party +||sitetistik.com^$third-party +||sortext.com^$third-party +||tagon.co^$third-party +||visilabs.net^$third-party +||webservis.gen.tr^$third-party +||webtemsilcisi.com^$third-party +||zirve100.com^$third-party +! Ukranian +||holder.com.ua^$third-party +||mediatraffic.com.ua^$third-party +||mycounter.com.ua^$third-party +||mycounter.ua^$third-party +||zmctrack.net^$third-party +||znctrack.net^$third-party +! Vietnamese +||adtimaserver.vn^$third-party +||amcdn.vn^$third-party +||ants.vn^$third-party +||contineljs.com^$third-party +||gostats.vn^$third-party +!-----------------Third-party tracking services-----------------! +! *** easylist:easyprivacy/easyprivacy_thirdparty.txt *** +-client-tracking.goodgamestudios.com/ +-wrapper-analytics-prod.cloudfunctions.net/ +||1.1.1.1/cdn-cgi/trace +||1.1.1.1/dns-query$xmlhttprequest,domain=allmodern.com|birchlane.com|catbirdnyc.com|gametime.co|jossandmain.com|ladym.com|libertylondon.com|mediamarkt.de|nobullproject.com|paynow.pmnts.io|perigold.com|theathletesfoot.co.nz|theathletesfoot.com.au|wayfair.* +||100widgets.com^$third-party +||105app.com/report/? +||1558334541.rsc.cdn77.org^ +||1worldsync.com/log? +||216.18.176.4/logger/ +||360buyimg.com/jdf/1.0.0/unit/log/ +||3j0pw4ed7uac-a.akamaihd.net^ +||3p-geo.yahoo.com^ +||3p-udc.yahoo.com^ +||4e4356b68404a5138d2d-33393516977f9ca8dc54af2141da2a28.ssl.cf1.rackcdn.com/sa7d76sa/ +||4taps.me/analytics/ +||51network.com^$third-party +||682a5845.b-cdn.net^ +||99widgets.com/counters/ +||9w2zed1szg.execute-api.us-east-1.amazonaws.com^ +||a.cineflix.st^ +||a.emea01.idio.episerver.net^ +||a.getflowbox.com^ +||a.hcaptcha.com^ +||a.klaviyo.com/forms/api/v3/geo-ip +||a.mobify.com^ +||a.streamed.pk/api/event +||a.vturb.net^ +||a.wishabi.com/track.gif? +||a2z.com/sping? +||aan.amazon.com^$third-party +||ab.dns-finder.com^ +||accesswire.com/img.ashx +||accounts.google.com/gsi/log +||acds-events.adobe.io^ +||activengage.com/overwatch/ +||activity-flow.vtex.com^ +||activity.wisepops.com^ +||acuris.com/wat/v2/data-event +||ad-shield.io^$third-party +||ad.aloodo.com^ +||ad.mail.ru/*.gif?rnd=$third-party +||adbr.io/log? +||addtoany.com/menu/transparent.gif +||ade.googlesyndication.com^ +||adfox.yandex.ru^ +||adimo.co/api/tracking/ +||adlog.com.com^ +||adnz.co/api/ws-events-sink/ +||adnz.co/dmp/publisher.js +||adnz.co/header.js +||adobedc.net/collector/ +||adora-cdn.com/adora-start.js +||ads-tracking.beop.io^ +||ads-tracking.collectiveaudience.co^ +||ads-trk.vidible.tv^ +||adsmoloco.com^$third-party +||adsolutions.com^$third-party +||adv-analytics-collector.videograph.ai^ +||adyen.com/checkoutanalytics/ +||adyen.com/checkoutshopper/images/analytics.png? +||adyen.com/checkoutshopper/v2/analytics/log? +||affiliate-api.raptive.com^ +||affiliates.minglematch.com^ +||affirm.com/api/chrono/*/collect +||affirm.com/api/v2/cookie_sent +||affirm.com/api/v2/session/touch_track +||afterpay.com^*/v1/event +||aim-tag.hcn.health^ +||akamaihd.net/p1lakjen.gif +||akamaized.net/cookie_check/ +||akatracking.esearchvision.com^ +||aktion.esprit-club.com^$image +||alby.net/tracking-service/ +||alex.leonard.ie/misc-images/transparent.png +||alexa.com/minisiteinfo/$third-party +||alexa.com/traffic/ +||alexandria.marfeelcdn.com^ +||algolia.io/1/events? +||algolia.io/1/isalive +||alib.nine.com.au^ +||alibaba.com/ts? +||alipay.com/service/clear.png? +||aliyun.com/actionlog/ +||allanalpass.com/track/ +||alpharank.io/api/pixel/ +||amazon.com/cs/uedata +||amazonaws.com/analytics. +||amazonaws.com/analytics/ +||amazonaws.com/appmonitors/ +||amazonaws.com/avsmetrics/ +||amazonaws.com/b2bjsstore/ +||amazonaws.com/beacon^ +||amazonaws.com/cdn.barilliance.com/ +||amazonaws.com/frame-image-br/bg.png? +||amazonaws.com/iglu.acme.com.dev.clixtream/tracker.js +||amazonaws.com/j.kissinsights.com/ +||amazonaws.com/js/reach.js +||amazonaws.com/jsstore/*/ge.js +||amazonaws.com/ki.js/ +||amazonaws.com/lp/js/tag.js? +||amazonaws.com/new.cetrk.com/ +||amazonaws.com/prod/entities +||amazonaws.com/prod/main?ref=$image,third-party +||amazonaws.com/prod/nobot +||amazonaws.com/prod/report-only +||amazonaws.com/production/*&event_bundle_sequence_id= +||amazonaws.com/production_beacon +||amazonaws.com/searchdiscovery-satellite-production/ +||amazonaws.com/snowplow-zitcha.js +||amazonaws.com/storejs/a/JKRHRQG/ge.js +||amazonaws.com/v1/apps/*/events +||amazonaws.com/webengage-files/ +||amazonaws.com^*/prod_analytics +||amazonpay.com/customerInsight? +||amp-error-reporting.appspot.com^ +||amp.vg/track/ +||amplifypixel.outbrain.com^ +||ampproject.org/preconnect.gif +||ams-pageview-public.s3.amazonaws.com^ +||analyse.bcovery.com^ +||analytic-client.adult-chess.com^ +||analytic-client.blitzmightyparty.com^ +||analytic-client.chickgoddess.com^ +||analytic-client.panowars.com^ +||analytic.divee.ai^ +||analytic.rollout.io^ +||analytic.xingcloud.com^$third-party +||analyticcdn.globalmailer.com^ +||analyticcdn.wlmediahub.com^ +||analytics-1.cavai.com^ +||analytics-api-s.cloudinary.com^ +||analytics-api.gemcommerce.com^ +||analytics-api.klickly.com^ +||analytics-cf.bigcrunch.com^ +||analytics-cms.whitebeard.me^ +||analytics-consent-manager-v2-prod.azureedge.net^ +||analytics-fe.digital-cloud-prem.medallia.com^ +||analytics-fe.digital-cloud-prem.medallia.eu^ +||analytics-fe.digital-cloud.medallia.ca^ +||analytics-fe.digital-cloud.medallia.com^ +||analytics-ipv6.tiktokw.us^ +||analytics-prd.aws.wehaa.net^ +||analytics-prod-alb-292764149.us-west-2.elb.amazonaws.com^ +||analytics-production.hapyak.com^ +||analytics-scripts.cablelabs.com^ +||analytics-sg.tiktok.com^ +||analytics-static.ugc.bazaarvoice.com^ +||analytics-tracker.thescore.com^ +||analytics.30m.com^ +||analytics.adobe.io^ +||analytics.agoda.com^ +||analytics.aimtell.com^ +||analytics.algolia.com^ +||analytics.amakings.com^ +||analytics.api.justeattakeaway.com^ +||analytics.apnewsregistry.com^ +||analytics.atlas5.co^ +||analytics.audioeye.com^ +||analytics.avanser.com.au^ +||analytics.aweber.com^ +||analytics.bestreviews.com^ +||analytics.bitrix.info^ +||analytics.bomiv.com^ +||analytics.carambo.la^ +||analytics.carbaselive.com^ +||analytics.chegg.com^ +||analytics.cincopa.com^ +||analytics.clic2buy.com^ +||analytics.cloud.coveo.com^ +||analytics.cmn.com^ +||analytics.codigo.se^ +||analytics.contentexchange.me^ +||analytics.convertlanguage.com^ +||analytics.data.visenze.com^ +||analytics.dev.htmedia.in^ +||analytics.developer.riotgames.com^ +||analytics.digitalpfizer.com^ +||analytics.disney.go.com^ +||analytics.disneyinternational.com^ +||analytics.distributednews.com^ +||analytics.divulg.org^ +||analytics.dv.socure.io^ +||analytics.dvidshub.net^ +||analytics.edgekey.net^ +||analytics.eggoffer.com^ +||analytics.erepublic.com^ +||analytics.everythingstream.com^ +||analytics.fabricators.ltd^$third-party +||analytics.facebook.com^$third-party +||analytics.fatmedia.io^ +||analytics.favcy.com^ +||analytics.firespring.com^ +||analytics.foresee.com^ +||analytics.formstack.com^ +||analytics.genial.ly^ +||analytics.getsnworks.com^ +||analytics.gokwik.co^ +||analytics.google.com^$third-party +||analytics.gooogol.com^ +||analytics.groupe-seb.com^ +||analytics.growthphysics.com^ +||analytics.gtflixtv.com^ +||analytics.gvim.mobi^ +||analytics.iraiser.eu^ +||analytics.jazel.net^ +||analytics.jst.ai^ +||analytics.kaltura.com^ +||analytics.kapost.com^ +||analytics.klickly.com^ +||analytics.kongregate.io^ +||analytics.lemoolah.com^ +||analytics.livestream.com^ +||analytics.loadweb.com^ +||analytics.logsss.com^ +||analytics.lunaweb.cloud^ +||analytics.m7g.twitch.tv^ +||analytics.maikel.pro^ +||analytics.maileon.com^ +||analytics.mailmunch.co^ +||analytics.matchbin.com^ +||analytics.metriko.app^ +||analytics.midwesternmac.com^ +||analytics.mlstatic.com^ +||analytics.myfidevs.io^ +||analytics.myfinance.com^ +||analytics.netronline.dev^ +||analytics.newscred.com^ +||analytics.onlyonlinemarketing.com^ +||analytics.optilead.co.uk^ +||analytics.orenshmu.com^ +||analytics.ostr.io^ +||analytics.paddle.com^ +||analytics.pagefly.io^ +||analytics.pangle-ads.com^ +||analytics.piksel.com^ +||analytics.pingaja.com^ +||analytics.pinterest.com^$third-party +||analytics.pixels.ai^ +||analytics.plasmic.app^ +||analytics.pointdrive.linkedin.com^ +||analytics.pop2watch.com^ +||analytics.prezly.com^ +||analytics.propensity.com^ +||analytics.pyksid.com^ +||analytics.qualityunit.com^ +||analytics.radiatemedia.com^ +||analytics.recruitics.com^ +||analytics.reyrey.net^ +||analytics.rogersmedia.com^ +||analytics.salesanalytics.io^ +||analytics.sayprimer.com^ +||analytics.scorpion.co^ +||analytics.shareaholic.com^ +||analytics.shorte.st^ +||analytics.shorthand.com^ +||analytics.sitewit.com^ +||analytics.skyscanner.net^ +||analytics.sleeknote.com^ +||analytics.snidigital.com^ +||analytics.steast.io^ +||analytics.strangeloopnetworks.com^ +||analytics.superstructure.ai^ +||analytics.supplyframe.com^ +||analytics.test.cheggnet.com^ +||analytics.themarketiq.com^ +||analytics.threedeepmarketing.com^ +||analytics.tiktok.com^ +||analytics.topseotoolkit.com^ +||analytics.tout.com^ +||analytics.unibuddy.co^ +||analytics.unilogcorp.com^ +||analytics.vanillaforums.com^ +||analytics.vdo.ai^ +||analytics.vendemore.com^ +||analytics.vitalsignstracker.com^ +||analytics.vixcloud.co^ +||analytics.wask.co^ +||analytics.webgains.io^ +||analytics.webpushr.com^ +||analytics.websolute.it^ +||analytics.webynize.com^ +||analytics.wildtangent.com^ +||analytics.witglobal.net^ +||analytics.yahoo.com^ +||analytics.yext-static.com^ +||analytics.ynap.biz^ +||analytics.yola.net^ +||analytics.yolacdn.net^ +||analytics.yollamedia.com^ +||analytics.yyggames.com^ +||analytics.ziftsolutions.com^ +||analytics1.vdo.ai^ +||analyticsehnwe.servicebus.windows.net^ +||analyticsplusdev.clientify.net^ +||analyticssec.overwolf.com^ +||analyze-82dfgsi2.m-w.com^ +||ancestrycdn.com/tao/at/ +||anyclip.com/getuids? +||anyclip.com/v1/events +||anyclip.com/v1/lre-events? +||ao-freegeoip.herokuapp.com^ +||aol.com/ping? +||aolcdn.com/js/mg2.js +||aolcdn.com/omniunih_int.js +||ape-tagit.timeinc.net^ +||apester.com/event^ +||api-analytics-prd.pelcro.com^ +||api-iam.intercom.io/messenger/web/metrics +||api-location-prd.pelcro.com^$domain=newsweek.com +||api-pf.nw18.com/cdp-api/api/data +||api-staging.sitelytics.tech/pixel/core/api/send-event +||api-v3.findify.io/v3/feedback +||api.autopilothq.com^ +||api.axept.io/v1/analytics/evts +||api.begenuin.com/goservices/data/ +||api.bit.ly/*/clicks?$third-party +||api.blink.net/a/ +||api.bluecore.app/api/track/ +||api.collarity.com/cws/*http +||api.config-security.com/first +||api.country.is^$third-party +||api.croct.io^ +||api.gist.ai/v1/analytics/track +||api.gleap.io/sessions/ping +||api.ipgeolocation.io/getip +||api.iris.tv/update +||api.june.so^ +||api.mambasms.com/monitorEvent/ +||api.pcid.ca/v1/client/logs +||api.pearcommerce.com/v1/client_request_log? +||api.pearcommerce.com/v1/page_load? +||api.picox.bendingspoons.com/v1/events +||api.reo.dev^$third-party +||api.sardine.ai/assets/loader.min.js$third-party +||api.sovendus.com/js/landing.js +||api.tally.so/forms/*/events +||api.visitorapi.com^$third-party +||api.wipmania.com^ +||apibaza.com/pixel/ +||aplus.alibaba.com^ +||apm-engine.meteor.com^$third-party,xmlhttprequest +||app.abralytics.com/assets/tracker/index.js +||app.adjust.com^$third-party +||app.carnow.com/dealers/track_visitor +||app.clickfunnels.com/assets/pushcrew.js +||app.clickfunnels.com/assets/userevents/application.js +||app.clickfunnels.com/cf.js +||app.link/_r?$script,third-party +||app.octaneai.com/get_analytics_engine/ +||app.opmnstr.com/v2/geolocate/ +||app.optibase.io^ +||app.partnerboost.com^ +||app.pendo.io/data/$image +||app.posthog.com/e/?compression= +||app.posthog.com/e/?ip= +||app.posthog.com/static/array.js +||app.posthog.com/static/recorder-v2.js +||app.qualified.com/*/sentry/ +||app.qualified.com/*/visitor_events +||app.revenuehero.io/logs/ingest +||app.termly.io/api/*/statistics +||app.trytada.com/addImpression +||app.varify.io/varify.js +||app.yesware.com/t/$third-party +||appinthestore.com/click/ +||apple.com/hvr/mw/v1/spile +||apple.com/mw/v1/reportAnalytics +||apple.www.letv.com^ +||applets.ebxcdn.com^ +||applicationinsights.azure.com^$third-party,domain=~azure.net +||appliedsemantics.com/images/x.gif +||applovin.com/shopify/*/pixel +||appmifile.com/webfile/globalweb/stat/ +||apps-pbd.ctraffic.io^ +||apps.omegatheme.com/facebook-pixel/ +||apps.rokt-api.com/webevents/ +||appsolutions.com/hitme?$third-party +||appspot.com/analytics/ +||appspot.com/api/track/ +||appspot.com/display? +||appspot.com/event? +||appspot.com/events.js +||appspot.com/stats? +||appspot.com/take? +||appspot.com/track-analytics-event +||appvtexio.weni.ai/pixel.js +||aramuz.net/frontapi/*/analyticsEvent? +||arc.pub/clavis/training/events +||arclk.net/trax? +||arcpublishing.com/beacon +||argos.citruserve.com^ +||ariane.abtasty.com^ +||arkoselabs.com/metrics/ +||asayer.io/tracker.js +||aservice.cloud/trc/mastertag +||assets.9gtb.com^ +||assets.apollo.io/micro/website-tracker/ +||assets.hearstapps.com/commerce/release/affiliate-bundle. +||assets.minutemediacdn.com/mm-cwv-tracker/ +||assets.moneymade.io/js/fp.min.js +||assets.trendii.com/pixel/main.js +||assets.yumpu.com/release/*/tracking.js +||assistant.watson.appdomain.cloud/analytics/ +||asterpix.com/tagcloudview/ +||async-px-eu.dynamicyield.com^ +||async-px.dynamicyield.com^ +||at.cbsi.com/lib/api/client-info +||at.cbsi.com^*/event? +||atcdn.co.uk/frostbite/ +||atgsvcs.com/js/atgsvcs.js +||ati-host.net/event? +||atom-data.io/session/latest/track.html?$third-party +||attn.tv/tag/ +||attn.tv^*/dtag.js +||attributiontrackingga.googlecode.com^ +||auctiva.com/Default.aspx?query +||audience.newscgp.com^ +||audienceinsights.net^$third-party +||audioeye.com/ae.js +||audioeye.com/frame/cookieStorage.html +||audit.303br.net^ +||audit.median.hu^ +||auriro.net/views.cfm? +||aurora-d3.herokuapp.com^ +||auryc.com/v1/event +||autoline-top.com/counter.php? +||automate-prod.s3.amazonaws.com^$~script +||aux-log.bidmatic.io^ +||avln.me/t.js +||avo.app^*/track +||awaps.yandex.net^ +||awe.sm/conversions/ +||aweber.com/form/displays.htm?$image +||awsapprunner.com/api/frontend/client/metrics +||awswaf.com^*/report +||awswaf.com^*/telemetry +||ax.babe.today^ +||axislogger.appspot.com^ +||az.nzn.io^ +||az693360.vo.msecnd.net^ +||azureedge.net/javascripts/Tracking. +||azureedge.net/sdrive/zero-tracking.js +||azureedge.net/track +||azureedge.net^*/fnix.js +||azurewebsites.net/api/views? +||azurewebsites.net/Pixel? +||azurewebsites.net/TrackView/ +||azurewebsites.net^*/telemetry.js +||b.bedop.com^ +||b5media.com/bbpixel.php +||b7tp47v2nb3x-a.akamaihd.net^ +||b8cdn.com/assets/v1/analytics- +||backend.alia-cloudflare.com/launcher/events/ +||backend.alia-cloudflare.com/user/events +||backend.leadconnectorhq.com/attribution_service/user_session_v3/update_session/ +||backend.leadconnectorhq.com/forms/form-survey-event +||backend.verbolia.com/content/js/velw.min.js +||baidu.com/pixel? +||baidu.com/push.js +||bamgrid.com/dust$domain=~disneyplus.com +||bamgrid.com/telemetry +||banner.appsflyersdk.com^ +||baqend.com/v1/rum/ +||barium.cheezdev.com^ +||basis.net/assets/up.js +||bat.bing.com^ +||bat.bing.net^ +||bazaarvoice.com/sid.gif +||bb.itwc.ca/js/cube.js +||bc.geocities. +||bc.marfeelcache.com^ +||bc0a.com/api/ +||bc0a.com/autopilot/ +||bc0a.com/be_ixf_js_sdk.js +||bc0a.com/marvel.js +||bdg.com/event? +||beacon.adelphic.com^ +||beacon.affil.walmart.com^ +||beacon.aimtell.com^ +||beacon.cdnma.com^ +||beacon.errorception.com^ +||beacon.flow.io^ +||beacon.klm.com^ +||beacon.peakhour.io^ +||beacon.riskified.com^ +||beacon.s.llnwi.net^ +||beacon.searchspring.io^ +||beacon.securestudies.com^ +||beacon.sftoaa.com^ +||beacon.sojern.com^ +||beacon.statful.com^ +||beacon.webpresence.work^ +||beacons.mediamelon.com^ +||beam.mjhlifesciences.com^ +||beamanalytics.b-cdn.net^ +||bee.tc.easebar.com^ +||bendingspoonsapps.com/v4/web-events +||bento.agoda.com^ +||bet365.de/Members/*&affiliate=$subdocument,third-party +||betano.de^*?btag=$subdocument,third-party +||bhphotovideo.com/imp/ +||bi-events-collector.spot.im^ +||bi-metrics.aramuz.net^ +||bi.heyloyalty.com^ +||bi.medscape.com^ +||bi.pst.tech^ +||bin.cartwire.co/js/analytics.js +||birdsend.co/assets/static/js/pixel/ +||birdsend.email/pixel +||birdsend.net/pixel +||bit.ly/stats? +||bitrix.info/ba.js +||bizseasky.com/dc/ +||bizseasky.com/mon +||bizseasky.com/tracker/ +||blackcrow.ai/v1/events/ +||blend.com/event/ +||blink.net/e/ +||blip.bizrate.com^$script +||blogblog.com/tracker/ +||bmrg.reflected.net^ +||bobparsons.com/image.aspx? +||boei.help/pageview/ +||bolt.com/v1/log? +||bonfire.spklw.com^ +||booking.com/pxpixel.html +||boomtrain.com/identify/resolve? +||botdetection.hbrsd.com^ +||bpath.com/count.dll? +||bpi.zip.co/trx/ +||branch.io^$third-party +||brandcdn.com/pixel/ +||bravenet.com/counter/ +||braze.eu/api/v3/data/ +||breadpayments.com/log +||breadpayments.com/stats +||browser-intake-datadoghq.com^ +||browser.covatic.io^ +||browser.events.data.microsoft.com/OneCollector/ +||browser.pipe.aria.microsoft.com^ +||bs.yandex.ru^ +||bucklemail.com/a/$image +||buffet.identityservices.io^ +||bundle.9gtb.com^ +||bundle.dyn-rev.app^ +||bundle.ppas.monster^ +||burstcloud.co/jwe? +||bytedance.com/pixel/ +||byteoversea.com/captcha/report +||byteoversea.com/monitor_browser/ +||bzpics.com/jslib/st.js? +||bzr.openai.com^ +||bzrcdn.openai.com^ +||c-date.com/pixel/ +||c.albss.com^ +||c.amazinglybrilliant.com.au^ +||c.bazo.io^ +||c.imedia.cz^ +||c.live.com^ +||c.mgid.com^ +||c.wen.ru^ +||c.ypcdn.com^*&ptid +||c.ypcdn.com^*?ptid +||c3metrics.medifast1.com^ +||c6.paypal.com^$image +||cache2.delvenetworks.com^ +||cafemedia.com/topics/clickstream-event +||calendly.com/telemetry.js +||californiatimes.com/privacy/$image +||calltrack.co^ +||calltrk.com/companies/ +||calvera-telemetry.polaris.me^ +||camel.headfarming.com^ +||campaign.fbot.me^ +||canada.com/js/analytics/ +||capi.connatix.com^ +||capture-api.ap3prod.com^ +||capture.condenastdigital.com^ +||capture.trackjs.com^$third-party +||carambo.la/analytics/ +||carambo.la/logging/ +||cardinalcommerce.com/prod/log +||caspionlog.appspot.com^ +||castify-trk.playitviral.com^ +||cbsaavideo.com/measurements/ +||cbsivideo.com/measurements/ +||cbso.uk.net^ +||cc.swiftype.com^ +||cca-lite.coinbase.com/amp +||cca-lite.coinbase.com/metrics +||ccexperimentsstatic.oracleoutsourcing.com^ +||cdn-a.raptor.digital^ +||cdn-channels-pixel.ex.co^ +||cdn-ds.com/analytics/ +||cdn-eu.usefathom.com^ +||cdn-js.xyz/code? +||cdn-staging.delivr.ai/pixels/ +||cdn.9gtb.com^ +||cdn.app.cfigroup.com/webmon/$script +||cdn.clkmc.com/cmc.js +||cdn.cuty.io/fps.js +||cdn.debugbear.com^$third-party +||cdn.lr-hv-in.com/logger.min.js +||cdn.one.store/xdomain_cookie.html +||cdn.polarbyte.com^ +||cdn.ravm.tv^ +||cdn.skypack.dev/uuid +||cdn.sourcesync.io/open-pixel/source-pixel.js +||cdn.sphlabs.com/suid/ +||cdn.stamped.io/cdn/images/pixel.png +||cdn.statically.io/gh/opcdn/analytics/main/script.js +||cdn.super.com/remote-event-registry.json +||cdn.tds.bid/bid.js +||cdn.tolt.io/tolt.js +||cdn.usefathom.com^ +||cdn.zg-api.com/a/z/js/v1/analytics.js +||cdnjs.work/metrics.js +||cdnma.com/apps/capture.js +||cdnplanet.com/static/rum/rum.js +||cdns.brsrvr.com^ +||cdp.sph.com.sg/activation/activation.js +||ceros.com/a?data +||cert.tryggehandel.net/ping +||cf-pixelfront-analytics.widencdn.net^ +||cf.api.instant.one^ +||cf.overblog.com^ +||cfapi.upstackdata.io^ +||cfmediaview.com/API/MV_Visit.ashx +||cgicounter.oneandone.co.uk^ +||cgicounter.puretec.de^ +||chanalytics.merchantadvantage.com^ +||channelexco.com/events +||channelexco.com/ppx/ +||chaport.com/api/public/v1/stats/ +||chargebee.com/api/internal/track_info_error +||chat.vica.gov.sg/api/v1/unleash/proxy/client/metrics +||check.ddos-guard.net^$third-party +||checkout.com/logger/ +||checkout.com/logging +||cimage.adobe.com^ +||circonus.com/hit? +||citygridmedia.com/tracker/ +||citysearch.com/tracker/ +||cityzen.io/Pixel/ +||civicscience.com/jot? +||ck.connatix.com^ +||cleantalk.org/pixel/ +||clearbuy.com/api/cookie +||clearspring.com/at/ +||clearspring.com/t/ +||clerk.io/static/clerk.js +||clevertap-prod.com^$third-party +||click.appinthestore.com^ +||click.rypr.ru^ +||click360v2-ingest.azurewebsites.net^ +||click4assistance.co.uk/HeartBeat +||clickdimensions.com/ts.js +||clickiocdn.com/clickiotag_log/ +||clickiocdn.com/consent/log/ +||clickiocdn.com/utr/ +||clicks.dealer.com^ +||clicks.tyuwq.com^ +||clickthru.lefbc.com^$third-party +||clicktime.symantec.com^$script,third-party +||clicktracker.iscan.nl^ +||client-analytics.braintreegateway.com^ +||client-logger.beta.salemove.com^ +||client-logger.salemove.com^ +||client.perimeterx.net^ +||clinch.co/a_js/client_pixels/ +||clipsyndicate.com/cs_api/cliplog? +||clixtell.com/track.js +||cloudapp.net/l/ +||clouderrorreporting.googleapis.com^ +||cloudfilt.com/analyz.js +||cloudflare-analiytics.pages.dev/analytics.js +||cloudflare-quic.com/cdn-cgi/trace +||cloudflare.com/cdn-cgi/trace$third-party,domain=~isbgpsafeyet.com|~wyndhamdestinations.com +||cloudfront-labs.amazonaws.com^ +||cloudfront.net*/keywee.min.js +||cloudfront.net*/sp.js| +||cloudfront.net*/tracker.js +||cloudfront.net*/trk.js +||cloudfront.net/?a= +||cloudfront.net/abw.js +||cloudfront.net/analytics.js +||cloudfront.net/analytics_$script +||cloudfront.net/analyticsengine/ +||cloudfront.net/autotracker +||cloudfront.net/beaver.js +||cloudfront.net/bti/ +||cloudfront.net/clipkit_assets/beacon- +||cloudfront.net/code/keen-2.1.0-min.js +||cloudfront.net/dough/*/recipe.js +||cloudfront.net/esf.js +||cloudfront.net/i?e= +||cloudfront.net/i?v= +||cloudfront.net/js/ca.js +||cloudfront.net/js/reach.js +||cloudfront.net/khp.js +||cloudfront.net/log.js? +||cloudfront.net/lp.js +||cloudfront.net/performable/ +||cloudfront.net/powr.js +||cloudfront.net/pt1x1.gif +||cloudfront.net/rc.js? +||cloudfront.net/rum/bacon.min.js +||cloudfront.net/scripts/cookies.js +||cloudfront.net/sentinel.js +||cloudfront.net/sitegainer_ +||cloudfront.net/sso.js +||cloudfront.net/t.gif +||cloudfront.net/t?event= +||cloudfront.net/tag-manager/ +||cloudfront.net/track.html +||cloudfront.net/track? +||cloudfront.net/trackb.html +||cloudfront.net/uba.js +||cloudfront.net/websites/sb.js +||cloudfront.net/zephyr.js +||cloudfront.net^*.bmp? +||cloudfunctions.net/commonBonnierDataLayer +||cloudfunctions.net/export-customizer-data-metrics +||cloudfunctions.net/function-record-stream-metric? +||cloudfunctions.net/ingest? +||cloudfunctions.net/sendwebpush-analytics +||cloudfunctions.net/vanalytics +||cloudmetrics.xenforo.com^ +||cltgtstor001.blob.core.windows.net^ +||clustrmaps.com/counter/$third-party +||cmail19.com/t/$image,third-party +||cmmeglobal.com/evt? +||cmmeglobal.com^*/page-view? +||cnetcontent.com/log? +||cnevids.com/metrics/ +||cnnx.io^*/tracker.js +||cnnx.io^*/tracking.js +||cnnx.link/roi/ +||cnpapers.com/scripts/library/ +||cnstrc.com/behavior? +||cnt.3dmy.net^ +||cnzz.com/stat. +||cod.bitrec.com^ +||coefficy.com/ip/ +||coherentpath.com/tracker/ +||collect-ap2.attraqt.io^ +||collect-eu.attraqt.io^ +||collect.alphastream.io^ +||collect.analyse.lnearn.com^ +||collect.bannercrowd.net^ +||collect.cloudsponge.com^ +||collect.igodigital.com^ +||collect.iteam-dress.com^ +||collect.rebelmouse.io^ +||collect.rewardstyle.com^ +||collect.usefathom.com^ +||collect.verify.lnearn.com^ +||collectfront.nector.io^ +||collection.e-satisfaction.com^ +||collector-*.luigisbox.com^ +||collector-1.ex.co^ +||collector-api.99designs.com^ +||collector-api.frspecifics.com^ +||collector.api.video^ +||collector.appconsent.io^ +||collector.automote.co.nz^ +||collector.clareity.net^ +||collector.contentexchange.me^$third-party +||collector.ex.co^ +||collector.getyourguide.com^ +||collector.mazeberry.com^ +||collector.net-logger.com^ +||collector.pmc.com^ +||collector.sspinc.io^ +||collector5.zipy.ai^ +||comeon.com/tracking.php +||comic-rocket.com/metrics.js +||commerce.adobe.io/recs/$script +||commerce.bing.com^ +||commercial-analytics-collector.news.co.uk^ +||comms.thewhiskyexchange.com^$image +||communicatorcorp.com^*/conversiontracking.js +||compendiumblog.com/sp.js +||competitoor.com/analytics/ +||conan.screencast-o-matic.com^ +||conceptualhq.com/api/v1/track? +||concert.io/lookup/ +||conde.io/beacon +||condenastdigital.com/content?$third-party +||conduit.redfast.com^ +||confiant-integrations.global.ssl.fastly.net^ +||config-security.com/event +||confirmit.com/wix/inline.aspx? +||connatix.com/rtb/ +||connatix.com/tr/ +||connect.bolt.com/v1/log +||connect.facebook.net/signals/$third-party +||connect.facebook.net^*/fbds.js$third-party +||connect.facebook.net^*/pcm.js$third-party +||connect.idocdn.com^ +||connext-cdn.azureedge.net^ +||consensu.org/?log= +||consensu.org/geoip +||consent.trustarc.com/analytics? +||consentmanager.net/delivery/info/$third-party +||console.uxlens.com^ +||constellation.networknmedia.com/cdn-cgi/trace +||contactatonce.com/GetAgentStatusImage.aspx? +||contactatonce.com/VisitorContext.aspx? +||container.pepperjam.com^$third-party +||content.cpcache.com^*/js/ga.js +||content.kaspersky-labs.com/public/analytics-scripts/analytical_functions.js +||contentdriver.com/api/impression +||contently.com/xdomain/ +||control.cityofcairns.com^$third-party +||conversions.genieventures.co.uk^ +||convertflow.co^*/visitors/ +||convertkit.com^*/visit +||cookie-guard-erdee.ey.r.appspot.com^ +||cookiechimp.com/api/v1/visitors +||cookies.livepartners.com^ +||cookiex.ngd.yahoo.com^ +||copyrightcontent.org/e/ +||core-apps.b-cdn.net^ +||corvidae.ai/pixel.min.js +||count-server.sharethis.com^ +||count.asnetworks.de^ +||count.carrierzone.com^ +||count.me.uk^ +||count.paycounter.com^ +||count.xxxssk.com^ +||counter-growthbook.minute-ly.com^ +||counter.bloke.com^ +||counter.cam-content.com^ +||counter.hyipexplorer.com^ +||counter.jdi5.com^ +||counter.live4members.com^ +||counter.maases.com^ +||counter.packa2.cz^ +||counter.powr.io^ +||counter.powweb.com^ +||counter.rambler.ru^ +||counter.scribblelive.com^ +||counter.snackly.co^ +||counter.tldw.me^ +||counter.top.ge^ +||counter.yadro.ru^ +||counters.freewebs.com^ +||coveo.com/coveo.analytics.js/ +||covery.ai/fp/$third-party +||covet.pics/beacons +||cp.filext.com^ +||cp.official-coupons.com^ +||cp.official-deals.co.uk^ +||cqloud.com/measurements/ +||crall.io/beacon/ +||creator.zmags.com^ +||credible.com/api/logs-fe +||crm-vwg.com/tracker/ +||crowdskout.com/analytics.js +||crowdskout.com/skout.js +||crowdskout.com^*/page-view +||crowdtwist.com/trck/$script +||crta.and.co.uk^ +||crta.dailymail.co.uk^ +||cs.media.net^ +||cs.zg-api.com^ +||csi.gstatic.com^ +||csp-collector.appspot.com^ +||csp-reporting.cloudflare.com^ +||csp.secureserver.net^ +||csr.onet.pl^ +||ct-errs.cartrawler.com^ +||ct.capterra.com^ +||ct.corpusapp.com^ +||ct.itbusinessedge.com^$third-party +||ct.needlive.com^ +||ct.pinterest.com^ +||ct.thegear-box.com^$third-party +||cts.businesswire.com^$third-party +||cts.vresp.com^$third-party +||curated.fieldtest.cc^ +||custom.search.yahoo.co.jp/images/window/*.gif +||customerlobby.com/ctrack- +||customers.edgetag.io^ +||customers.xray-superpixel.com^ +||customfingerprints.bablosoft.com^ +||cws.conviva.com^ +||d.lilstts.com^ +||d.rcmd.jp^$image +||d.shareaholic.com^ +||d2gt2ux04o03l1.cloudfront.net^ +||dadi.technology^$third-party +||dash.getsitecontrol.com^ +||dashboard.nowdialogue.com/api/events/ +||data.armexdef.uk/api/visit/ +||data.armexfort.uk^ +||data.circulate.com^ +||data.debugbear.com^$third-party +||data.digitalks.az^ +||data.eetech.com^ +||data.emb-api.com^ +||data.embeddables.com^ +||data.gosquared.com^ +||data.jaytuckwell.com^ +||data.minute.ly^ +||data.nexxt.com^ +||data.pendo.io/data/errorlog? +||data.pendo.io/data/guide.gif/ +||data.queryly.com^ +||data.replo.app^ +||data.wiris.cloud/telemetry/ +||data.woosmap.com^ +||data2.gosquared.com^ +||datadog-service.mvfglobal.com^ +||datadome00.id.me/tags.js +||datasign.co/js/opn.js +||datasphere-sbsvc.sharethis.com^ +||daxab.com/logger/ +||dcinfos-cache.abtasty.com^ +||dd.garena.com^ +||dditscdn.com/*fingerprints +||dditscdn.com/?a= +||dditscdn.com/log/ +||dealer.com^*/tracker/ +||dealer.com^*/tracking/ +||dealerfire.com/analytics/ +||debales.ai/api/analytic/ +||debales.ai/ingest/ +||delivra.com/tracking/$third-party +||dell.com/TAG/tag.aspx?$third-party +||delvenetworks.com/player/plugins/analytics/ +||demandmedia.com/wm.js +||demandmedia.s3.amazonaws.com^$third-party +||dep.hmgroup.com^ +||deprecated-custom-domains.b-cdn.net^$third-party +||desipearl.com/tracker/ +||dev.visualwebsiteoptimizer.com/*/track- +||dev.visualwebsiteoptimizer.com/ping_tpc.php +||dfanalytics.dealerfire.com^ +||dgcollector.evidon.com^ +||diagnose.igstatic.com^ +||dig.ultimedia.com^ +||digimedia.com/pageviews.php? +||digitaloceanspaces.com/pixel.min.js +||digitaloceanspaces.com/pixel/ +||direct-collect.dy-api.com^ +||direct-collect.dy-api.eu^ +||direct-events-collector.spot.im^ +||directnews.co.uk/feedtrack/ +||discovery.evvnt.com/prd/evvnt_discovery_plugin-latest.min.js +||disqus.com/api/ping +||disqus.com/event.js?$script +||disqus.com/stats.html +||disquscdn.com/next/embed/alfalfalfa. +||distillery.wistia.com^ +||dl.episerver.net^ +||dmcdn.net/behavior/ +||dnnapi.com/analytics/ +||doh.cq0.co^ +||doofinder.com/api/v2/stats/ +||doppiocdn.com/healthcheck +||doppiocdn.org/healthcheck +||doppler-beacon.cbsivideo.com^ +||doppler-client-events.cbsivideo.com^ +||doppler-config.cbsivideo.com^ +||doppler-reporting.cbsivideo.com^ +||dotaudiences.com^$third-party +||doubleclick.uk.net^ +||drift.com/impressions/ +||drift.com/targeting/evaluate_with_log +||drift.com/track +||dugout.co/das2.js +||dw.com.com^$script +||dx.mountain.com^ +||dynamic.ziftsolutions.com^ +||dynamicyield.com/batch? +||dynamicyield.com/clog +||dynamicyield.com/dpx? +||dynamicyield.com/imp? +||dynamicyield.com/rcomEvent? +||dynamicyield.com/uia? +||dynamicyield.com/var? +||e.channelexco.com^ +||e.ebidtech.com/cv/ +||e.revenue.cat^ +||e.usesneakpeek.com^ +||e.zg-api.com^ +||e045f561.b-cdn.net^ +||ea-mct-live.com/revsdk.kes.KinesisEvent/ +||ea.youmaker.com^ +||early-birds.fr/tracker/ +||ebayadservices.com/marketingtracking/ +||ec.walkme.com^ +||ecomm.events^ +||ecommerce-events.adscale.com^ +||ecommstats.s3.amazonaws.com^ +||edge-hls.doppiocdn.com/ping +||edge-hls.doppiocdn.live/ping +||edge-hls.doppiocdn.net/ping +||edge.adobedc.net/ee/v1/collect? +||edge.bredg.com^$third-party +||edrone.me/trace? +||edw.edmunds.com/edw/edw1x1.gif +||eel.transistor.fm^ +||egmontpublishing.dk/tracking/ +||elpais.com/t.gif +||emarketeer.com/tracker/ +||enc-90128738.b-cdn.net^ +||endorsal.io/check/ +||engageplatform.com/api/trace/d/record? +||ensighten.com/error/e.php? +||envato.market/i/ +||epimg.net/js/gdt/ +||episerver.net/ia.js +||epl.paypal-communication.com^$script +||epromote.co.za/track/ +||epsilon.6sense.com^ +||eq.userneeds.com^ +||era.easyvoyage.com^ +||error-analytics-production.shopifysvc.com^ +||error-analytics-sessions-production.shopifysvc.com^ +||error-tracker.pages.dev^ +||errors.snackly.co^ +||essential-apps-analytics.herokuapp.com^ +||et.educationdynamics.com^ +||eth.llamarpc.com^ +||etl.springbot.com^ +||etoro.com/tradesmonitor/ +||eu-mobile.events.data.microsoft.com^ +||ev.mmin.io/ping +||ev.moneymade.io^ +||ev.stellarlabs.ai^ +||event-api.rdstation.com.br^ +||event-listener.air.tv^ +||event-logger.tagboard.com^ +||event-service.letslinc.com^ +||event-store.sitebehaviour.com^ +||event-stream.spot.im^ +||event-tracker.inditex.com^ +||event.api.drift.com^ +||event.api.instant.one^ +||event.collector.scopely.io^ +||event.instiengage.com^ +||event.syftdata.com^ +||event.syndigo.cloud^ +||event.webcollage.net^ +||eventapi.libring.com^ +||eventcollector.mcf-prod.a.intuit.com^ +||eventful.com/apps/generic/$image,third-party +||eventgateway.soundcloud.com^ +||eventlog.chatlead.com^ +||eventlog.inspsearchapi.com^ +||events-endpoint.pointandplace.com^ +||events-ingestion-helpcenter.services.gorgias.help^ +||events-ocu.zipify.com^ +||events-proxy.mintlify.com +||events.air.tv^ +||events.api.secureserver.net^ +||events.attentivemobile.com^ +||events.audiate.me^ +||events.brightline.tv^ +||events.btw.so^ +||events.codainfra.com^ +||events.demoup.com^ +||events.devcycle.com^ +||events.elev.io^ +||events.flagship.io^ +||events.getmodemagic.com^ +||events.getsitectrl.com^ +||events.jotform.com^ +||events.launchdarkly.com^$third-party +||events.mapbox.com^ +||events.matterport.com^ +||events.medio.com^ +||events.missena.io^ +||events.ocdn.eu^ +||events.paramount.tech^ +||events.pickrr.com^ +||events.realgravity.com^ +||events.release.narrativ.com^$subdocument,xmlhttprequest +||events.shareably.net^ +||events.shoplift.ai^ +||events.splash-screen.net^ +||events.split.io^$domain=~collegeboard.org +||events.storifyme.com^ +||events.tryamped.com^ +||events.tubecup.org^ +||events.ubembed.com^ +||events.whisk.com^ +||events.yourcx.io^ +||eventsproxy.gargantuan.futureplc.com^ +||eveonline.com/redir.asp$third-party +||evergage.com/beacon/ +||everyaction.com/v1/Track/ +||evidon.com/pub/ +||eviesays.com/js/analytics/ +||evri.com/analytics/ +||evt.24.com^ +||evt.collarity.com^$image +||evt.houzz.com^ +||ewe.loudcrowd.com^ +||ex.co/content/monetization/legacy-pixels/ +||exacttarget.com^$~subdocument,third-party +||excite.ie/?click_in= +||execute-api.*.amazonaws.com/forms-impressions +||exitintel.com/log/$third-party +||expedia.com/static/default/default/scripts/siteAnalytics.js +||expedia.com/vaclog/ +||experience.contextly.com^ +||experiments.parsely.com^ +||extole.io/core.js +||extole.io^*/core.js +||ezoic.net/ezqlog? +||f-log-at.grammarly.io^ +||f-log-test.grammarly.io^ +||f.email.bjs.com^*/1x2.gif +||facebook.com*/impression.php +||facebook.com/adnw_request? +||facebook.com/ai.php? +||facebook.com/brandlift.php +||facebook.com/common/cavalry_endpoint.php? +||facebook.com/method/links.getstats? +||facebook.com/platform/cavalry_endpoint.php? +||facebook.com/platform/plugin/page/logging/ +||facebook.com/platform/scribe_endpoint.php/ +||facebook.com/tr/ +||facebook.com/tr? +||facebook.com/w/$third-party +||facebook.com/xti.php? +||factors.ai/sdk/event/ +||fairfax.com.au/js/track/ +||fallback.attntags.com^ +||fallback.emtag.net^ +||faphouse.com/api/collector/ +||fast.fonts.net/jsapi/core/mt.js +||fast.wistia.net/assets/external/googleAds.js +||fastcdn.co/js/sptw. +||fbot.me/error +||fbot.me/events/ +||fbsbx.com/paid_ads_pixel/ +||fcmatch.google.com^ +||fcmatch.youtube.com^ +||feed.informer.com/fdstats +||feedblitz.com/imp?$third-party +||feedblitz.com^*.gif?$third-party +||feedify.net/thirdparty/json/track/ +||fem.gprod.postmedia.digital/*/IIQUniversalID.js +||fgip.rosehosting.com^ +||filament-stats.herokuapp.com^ +||files.envoke.com^*_nvk_tracking.js +||filesonic.com/referral/$third-party +||fingerprinter-production.herokuapp.com^ +||firebaselogging-pa.googleapis.com^ +||firecrux.com/track/$xmlhttprequest +||fitanalytics.com/metrics/ +||fkrkkmxsqeb5bj9r.s3.amazonaws.com^ +||flashstats.libsyn.com^ +||flex.msn.com/mstag/ +||flipp.com/beacons +||flix360.com/beat? +||flixcar.com/*/tracking/ +||flixcar.com/gvid +||flixcdn.com^*/track.js +||flixgvid.flix360.io^ +||flixster.com^*/analytics. +||flocdn.com^*/dpl/ +||flocktory.com^*/tracks/ +||fls-na.amazon.com^ +||flux-cdn.com/plugin/common/analytics/ +||flux.com/geo.html? +||fmnetwork.nl/tracking/ +||fog.pixual.co^ +||followistic.com/widget/stat/ +||footballmedia.com/tracking/ +||forethought.ai/workflow/tracking-event +||form.typeform.com/forms/*/insights/ +||forms.aweber.com^*/displays.htm?id= +||formstack.com/forms/analytics.php +||formstack.com/forms/js/*/analytics_ +||fotomoto.com/analytics/ +||foureyes.io/fe-init.js +||fourmtagservices.appspot.com^ +||fp-cdn.azureedge.net^ +||fp-flame.vercel.app^ +||fp-it-acc.portal101.cn/deviceprofile/ +||fraud.blockifyapp.com/s/api/block/update-time +||freecurrencyrates.com/statgif. +||freedom.com^*/analytic/ +||freedom.com^*/analytics/ +||freehostedscripts.net^*.php?site=*&s=*&h=$third-party +||fresh.inlinkz.com^$third-party +||frog.editorx.com^ +||frontend-logger.flippback.com/api/logging +||fs-client-logger.herokuapp.com^ +||fst-ec.perimeterx.net^ +||ftimg.net/js/log.js? +||ftm.fluencyinc.co^ +||fubuki-umami.space/api/script.js +||fudge.ai/metrics? +||future-fie-assets.co.uk^ +||future-price.co.uk^ +||futurecdn.net/bordeaux.js$xmlhttprequest +||futurecdn.net^*/abp.js +||futurehybrid.tech^$third-party +||futureplc.com/push_metrics/ +||fvalid.appsflyersdk.com^ +||fw.tv/embed/impressions +||g.msn.com^ +||g2insights-cdn.azureedge.net^ +||ga-beacon.appspot.com^ +||ga.chickgoddess.com/gs_api/stats/ +||ga.webdigi.co.uk^ +||gaijin.net/tag? +||galileotelemetry.tencent.com^ +||gamedistribution.com/event? +||gamedock.io/gamemonkey-web-tracker/ +||gamegecko.com/gametrack? +||gannettdigital.com/capture_logger/ +||ganon.yahoo.com^ +||gatehousemedia.com/wickedlocal/ip.js +||gateway.bridged.media/Engagement/View +||gateway.bridged.media/Logging/ +||gateway.dev/log +||gateway.foresee.com^ +||gateway.src-play.com/Analytics/ +||gcion.com/gcion.ashx? +||gcp.fasthorse.workers.dev^ +||gecko.space/count.js +||geckofoot.com/gfcounterimg.aspx? +||geckofoot.com/gfvisitormap.aspx? +||gem.com/api/o/$image,third-party +||generflow.com/client-logs/ +||genesis.malwarebytes.com^ +||geni.us/snippet.js +||geni.us/snippet.min.js +||geniusplus.ai/v1/lre-events? +||geo.bdg.com^ +||geo.ertya.com^ +||geo.gorillanation.com^ +||geo.mezr.com^ +||geo.ngtv.io^ +||geo.query.yahoo.com^$~xmlhttprequest,domain=~mail.yahoo.com +||geo.thehindu.com^ +||geobar.ziffdavisinternational.com^ +||geoip.apps.avada.io^ +||geoip.instiengage.com^ +||geoip.nekudo.com^ +||geolocation.outreach.com^ +||geoproapp.com/api/record +||geoservice.curse.com^ +||geotags.refinery89.com^ +||getelevar.com/configs/ +||getelevar.com/shops/*/events.js +||getglue.com^*/count? +||getkudos.me/a?$image +||getmetrical.com/storagesync +||getnodejs.com/add-event/ +||getpos.de/ext/ +||getrockerbox.com/pixel? +||gg-unleash-prod.azurewebsites.net/proxy/client/metrics +||gi-client-tracking.goodgamestudios.com^ +||gigya.com^*/cimp.gif? +||giosg.com^*/public/trace/ +||gitbook.com/v1/integrations/googleanalytics/ +||glam.com/cece/agof/ +||glam.com/ctagsimgcmd.act? +||glam.com/jsadimp.gif? +||glam.com^*/log.act? +||gleam.io/seen? +||gleam.io^$script,third-party +||global.localizecdn.com/api/lib/*.gif? +||global.ssl.fastly.net/native/ +||globale-analytics-sdk.global-e.com^ +||globalservices.conde.digital/p77xzrbz9z.js +||gml-grp.com^*&affid=$subdocument,third-party +||go.activengage.com^ +||go.com/capmon/GetDE/? +||go.techtarget.com^$image,xmlhttprequest +||go.toutapp.com^$third-party +||goadv.com^*/track.js +||goaffpro.com/track +||godaddy.com/js/gdwebbeacon.js +||gollum.monotote.com^ +||gomoxie.solutions^*/events +||google.com/analytics/$third-party +||google.com/ccm/ +||google.com/gmp/ +||google.com/gsi/log? +||googleapis.com/aam.js +||googleapis.com/gadasource/gada.js +||googleapis.com/ivc.js +||googlecode.com^*/tracker.js +||googleusercontent.com/tracker/ +||gotdns.com/track/blank.aspx? +||gotmojo.com/track/ +||gotolstoy.com/events/ +||gowatchit.com/analytics.js +||gowatchit.com^*/tracking/ +||grabnetworks.com/beacons/ +||grabnetworks.com/ping? +||grafana.net/collect/ +||graphcomment.com/api/thread/*/stats +||green-griffin-860.appspot.com^ +||groupbycloud.com/gb-tracker-client-5.min.js +||gsp1.baidu.com^ +||gstatic.com/gadf/ga_dyn.js +||gstatic.com/retail/v2_event.js +||gstatic.com/wcm/impl- +||gstatic.com/wcm/loader.js +||gtmfsstatic.getgoogletagmanager.com^ +||gtrk.s3.amazonaws.com^ +||gu-pix.appspot.com^$third-party +||gubagoo.com/modules/tracking/ +||gubagoo.io/c/$image +||gw.conversionsapigateway.com^ +||h-bid.com^$third-party +||h2porn.com/new-hit/? +||hadrianpaywall.com/views +||happen.spkt.io^ +||harvest.graindata.com^ +||hasbro.com/includes/js/metrics/ +||haymarket.com/injector/deliver/ +||hb.vhsrv.com^ +||hcmanager.swifteq.com/hc_events/ +||hdnux.com/HNP/stats/page_view? +||hearstmags.com^*/hdm-lib_hearstuser_proxy.html$third-party +||hearstnp.com/log? +||heartbeat-pearl.vercel.app^ +||heg-cp.com/upm/$third-party +||heimdall.hearstapps.com^ +||helix.bitformations.ca^ +||hello.myfonts.net/count/ +||hello.staticstuff.net^ +||hellobar.com/ping? +||helloextend.com/tracking +||helloretail.com/serve/collect/ +||helloretail.com/serve/trackingUser +||helpshift.com/events/ +||heraldandtimeslabs.com/sugar.js +||heroku.com/?callback=getip$third-party +||heyday.io/idx/ +||heyflow.co/pixel/ +||hi.hellobar.com^ +||hicloud.com/download/web/dtm.js +||highway.cablecar.sph.com.sg^ +||highwebmedia.com/CACHE/js/output.92c98302d256.js +||hit.mybestpro.com^ +||hit.salesfire.co.uk^ +||hits.dealer.com^ +||hits.getelevar.com^ +||hits.gokwik.co^ +||hits.informer.com^ +||hktracker.hankookilbo.com^ +||hm.baidu.com^$third-party +||hocalwire.com/tracking- +||homedepot-static.com/data-collection/ +||homestore.com/srv/ +||honeycomb.io/1/events/ +||hop.clickbank.net^$script +||hornymatches.com^*/visit.php? +||hqq.tv/js/counters.js +||hrzn-nxt.com/pxl? +||hsforms.com/embed/v3/counters.gif +||hub.reacti.co/index.js +||hubspot.com/analytics/ +||hubspot.com/cs/loader-v2.js +||hubspot.com/img/trackers/ +||hubspot.com/tracking/ +||hubspot.com/usage-logging/ +||hushforms.com/visitorid? +||hydro-ma-proxy.akamaized.net^ +||hypercomments.com/widget/*/analytics.html +||i.compendium.com^ +||i.posthog.com/*/?ip= +||i.s-microsoft.com/wedcs/ms.js +||i.viafoura.co^ +||iabusprivacy.pmc.com^ +||iadvize.com/collector/ +||ibmcloud.com/collector/ +||icbdr.com/images/pixel.gif +||icontact.com/icp/core/signup/tracking.gif? +||icu.newsroom.bi/ingest.php +||id.a-mx.com^ +||id.google.*/verify/ +||id.nbcuni.com^ +||id.verticalhealth.net/script.js?partnerid= +||iddu1vvb7sk8-a.akamaihd.net^ +||identification.hotmart.com^ +||iheart.com/events +||ihi.flowplayer.com^ +||imageshack.us^*/thpix.gif +||imgfarm.com/images/nocache/tr/*.gif?$image +||imgfarm.com/images/trk/myexcitetr.gif? +||imgfarm.com^*/mw.gif?$third-party +||imp.constantcontact.com^$third-party +||imp.pvnsolutions.com^ +||impdesk.com/smartpix/ +||impel.io/releases/analytics/ +||impress.vcita.com^ +||impression.appsflyer.com^ +||impressionmedia.cz/statistics/ +||in.treasuredata.com^ +||inbound-analytics.pixlee.co^ +||incapdns.net/monitor.js +||incomaker.com//tracking/ +||ind.sh/view.php?$third-party +||indigitall.com/v1/browser? +||indoleads.com/api/pixel-content/ +||inetstatic.com/tracking/ +||infinityid.condenastdigital.com^ +||influ2.com/tracker? +||infogr.am/logger.php? +||informer.yandex.ru^ +||infosniper.net/locate-ip-on-map.php +||infusionsoft.com^*/getTrackingCode? +||ingest.make.rvapps.io^ +||ingesteer.services-prod.nsvcs.net^ +||ingress.rebelboost.com/_ingest-rbst-stats? +||ingress.trendii.com^ +||inmobi.com/?log +||inmoment.com.au/intercept/$third-party +||inmoment.com/intercept/$third-party +||inmoment.com/websurvey/$third-party +||innogamescdn.com/media/js/metrics- +||inphonic.com/tracking/ +||inq.com^*/onEvent?_ +||ins.connatix.com^ +||insiderdata360online.com/service/platform.js +||insight.mintel.com^$third-party +||insight.rapid7.com^$third-party +||insights.algolia.io^ +||insights.sitesearch360.com^ +||insitez.blob.core.windows.net^ +||instagram.com/logging/ +||instagram.com/logging_client_events +||instagram.com/paid_ads/ +||installiq.com/Pixels/ +||instant.one/a/tk +||intake-analytics.wikimedia.org^ +||intelligems.io/track +||intelligencefocus.com^*/sensor.js +||intelligencefocus.com^*/websensor.aspx? +||intensedebate.com/remotevisit.php? +||intensedebate.com/widgets/blogstats/ +||intercomcdn.com/intercom*.js$domain=unblocked.la +||internetfuel.com/tracking/ +||intuitwebsites.com/tracking/ +||invite.leanlab.co^ +||invitejs.trustpilot.com^ +||io.narrative.io/?$third-party +||ip-check-perf.radar.cloudflare.com^$third-party +||ip.lovely-app.com^ +||ip.momentummedia.com.au^ +||ippen.space/idat +||ipstatp.com/growth/fe_sdk/reportsdk/$third-party +||ipstatp.com/static_magic/pgc/tech/collect/$third-party +||iq.sixaxisllc.com^ +||iqzone.com^$third-party +||iraiser.eu/analytics.js +||isacglobal.com/sa.js +||isitelab.io/ite_sitecomV1ANA.min.js +||iterable.com/analytics.js +||itmwpb.com/wp-content/plugins/advertise/modules/stats/assets/track.js +||iturl.in/analytics? +||iubenda.com/write? +||iyisayfa.net/inc.php? +||jailbaitchan.com/tp/ +||jangomail.com^*?UID$third-party +||jas.indeednps.com^ +||javascriptcounter.appspot.com^ +||jennifersoft.com^$third-party +||jill.fc.yahoo.com^ +||jly24aw29n5m-a.akamaihd.net^ +||jobvite.com/analytics.js +||jotform.io/getReferrer/$third-party +||js.cdn.applicationinsights.io/scripts/b/ai.3.gbl.min.js +||js.dashfi.net/dashfinet-analytics.js +||js.go2sdk.com/v2/tune.js +||js.verisoul.ai^ +||jscache.com/static/page_moniker/ +||jsdelivr.net/gh/sensitiveio/sbtracker@master/ +||jsdelivr.net/npm/@snowplow/ +||jsdelivr.net/npm/navigator.sendbeacon +||jsdelivr.net^*/fp.min.js +||jsrdn.com/creatives/ +||jsrdn.com/s/1.js +||jst.ai/vck.js +||jtracking-gate.lulusoft.com^ +||juicer.io/api/page_views +||k.keyade.com^ +||k.streamrail.com^ +||k5a.io/?i= +||kalstats.kaltura.com^ +||kameleoon.io/visit/ +||kbb.com/partner/$third-party +||kelkoogroup.net/st? +||kimonix.com/analytics/ +||kit.com/posts/visit +||kit.com/ui/reporting_event +||kiwi.mdldb.net^ +||kiwisizing.com/api/log +||kk-resources.com/ks.js +||klarnaservices.com/v1/osm-client-script/ +||klarnaservices.com^$image,third-party +||klaviyo.com/onsite/js/sentry. +||klaviyo.com/onsite/track-analytics? +||klickly.com^$third-party +||kmib.co.kr/ref/ +||kochava.com/track/$third-party +||kumo.network-n.com/configs/sites/ +||kununu.com^*/tracking/ +||kustomerapp.com/c/v1/tracking/ +||kwizly.com/api/log/ +||kxcdn.com/actor/$third-party +||kxcdn.com/assets/js/script.js +||kxcdn.com/prj/ +||kxcdn.com/track.js +||l-host.net/etn/omnilog? +||l.euronews.com/sdk.js +||l.fairblocker.com^$third-party +||l.ffx.io^ +||l.ooyala.com^ +||l.player.ooyala.com^ +||l.sharethis.com^ +||l.typesquare.com^ +||lambda-url.eu-west-1.on.aws^$ping +||lambda-url.us-east-1.on.aws/chug/event +||launch-analytics-plugin.launchpotato.com^ +||laurel.macrovision.com^ +||laurel.rovicorp.com^ +||lciapi.ninthdecimal.com^ +||lcs.naver.com^ +||ldoverseas.com/public-gateway/*/activity +||leadliaison.com/tracking_engine/ +||leadpages.net/leadboxes/current/embed.js +||leadpages.net^*/tracking.js +||leads.whatboxdigital.com^ +||leadtracking.plumvoice.com^ +||leadvision.dotmailer.co.uk^$third-party +||lederer.nl/incl/stats.js.php? +||legacy.com/globalscripts/tracking/ +||legacy.com^*/unicaclicktracking.js? +||legolas.monotote.com^ +||lemrock.com/v1/publishers/tracking/ +||letv.com/cloud_pl/ +||letv.com/env/ +||levelaccess.net/analytics/ +||lh.bigcrunch.com^ +||lhinsights.com/collect? +||libcdnjs.com/api/event +||libs.platform.californiatimes.com/meteringjs/ +||licdn.com/*.gif?rnd= +||licensing.bitmovin.com/impression +||lift.acquia.com^ +||lightboxcdn.com/static/identity.html +||limbik.com/static/tracking-script.js +||lingows.appspot.com/page_data/? +||link.bhvr.com^ +||link.cosmopolitan.com^$image +||link.indiegogo.com/img/ +||link.informer.com^ +||link.messaging.usnews.com^$image +||link.myjewishpage.com^$image +||link.realself.com^$image +||linkbucks.com/visitScript/ +||linkdeli.com/widget.js +||linkedin.com/countserv/count/$third-party +||links.voyeurweb.com^ +||linkwithin.com/pixel.png +||list-manage.com/track/ +||list.fightforthefuture.org/mpss/o/*/o.gif +||listen.audiohook.com/*/pixel.png +||listrak.com/api/Activity/click +||listrak.com/api/Activity/impression +||listrakbi.com/activity/ +||listrakbi.com/api/ActivityEvents/ +||listrakbi.com/ModalImpression.ashx? +||lit.connatix.com^ +||literally-analytics.appspot.com^ +||live-partner.com/tags? +||live-tv.top/js/k.min.js +||live.exchangesolutions.com^ +||live.mrf.io/statics/marfeel/gardac-sync.js +||live2support.com^*/js_lstrk. +||livechatinc.com^*/control.cgi? +||livecounter.theyosh.nl^ +||livefyre.com/libs/tracker/ +||livefyre.com/tracking/ +||livefyre.com^*/tracker.js +||livefyre.com^*/tracking/ +||livehelpnow.net/lhn/handler/$image +||livelyvideo.tv/lb/logger +||liverail.com/?metric= +||liverail.com/track/? +||livesearch-metrics.magento-ds.com^ +||livestats.kaltura.com^ +||livestory.io/*/collect +||llama.fi/script.js +||lma.npaw.com^ +||lnk.to/~/tr/visit +||loader-cdn.azureedge.net^ +||loader.mantis-intelligence.com^ +||location3.com/analytics/ +||log-*.previewnetworks.com^ +||log-pq.shopfully.cloud^ +||log.aimtell.com^ +||log.aliyuncs.com^ +||log.cookieyes.com^ +||log.dpa.com^ +||log.go.com^ +||log.mediacategory.com^ +||log.nordot.jp^ +||log.olark.com^ +||log.outbrain.com^ +||log.pinterest.com^ +||log.reformal.ru^ +||log.seekda.com^ +||logger.snackly.co^ +||logging.je-apps.com^ +||logging.pw.adn.cloud^ +||loggingapi.spingo.com^ +||loglady.skypicker.com^ +||logs-api.shoprunner.com^ +||logs.animaapp.com^ +||logs.betterstack.com^ +||logs.datadoghq.com^$third-party +||logs.dynamicauth.com^ +||logs.mezmo.com^ +||logs.spilgames.com^ +||longtailvideo.com^*/yourlytics- +||loomia.com^*/setcookie.html +||lsimg.net^*/vs.js +||ltwebstatic.com/she_dist/libs/devices/fpv2. +||ltwebstatic.com^*/libs/sensors/ +||lucid.mjhassoc.com^ +||luminate.com/track/ +||lycos.com/hb.js +||m.castle.io/v1/monitor +||m.clear.link/cpr/external/track +||m.stripe.com^$third-party,domain=~stripe.network +||ma.logsss.com^ +||magento-recs-sdk.adobe.net^ +||magic.prism.gg^ +||magnify.net/decor/track/ +||mail-app.com/pvtracker/ +||mail.ru/dstat? +||mail.ru/grstat? +||mail.ru/k? +||maillist-manage.eu/wa/actionlogger? +||mandrillapp.com/track/ +||maptrackpro.com/track/ +||marker.io/widget/ping +||marketcat.co/pixel/ +||marketingautomation.services/client/ss.js +||marketingautomation.services/koi +||marketo.com/gw1/ +||marketo.com/rtp-api/ +||markonlive.github.io/analytics/ +||marsflag.com/mf2file/site/ext/tr.js +||martech.condenastdigital.com^ +||mas.nth.ch^ +||mashery.com/analytics/ +||materiel.net/r/$image +||mato.clanto.cloud^ +||matomo.clanto.cloud^ +||maven.io/api/userEvent/ +||mavencoalition.io/collect +||maxmind.com/app/$third-party +||maxmind.com/geoip/$third-party +||maxmind.com/js/country.js +||maxmind.com/js/device.js$third-party +||maxmind.com^*/geoip.js +||maxmind.com^*/geoip2.js +||mbsvr.net/js/tracker/ +||mc.webvisor.com^ +||mc.webvisor.org^ +||mc.yandex.com^ +||mc.yandex.ru^ +||mc.yango.com^ +||mccdn.me/assets/js/widget.js +||mcdp-*.outbrain.com^ +||mcjs.prd.a.intuit.com/assets/pixel-reporting-sdk/ +||mcssl.com^*/track.ashx? +||mdxprod.io/analytics.js +||measure.refinery89.com^ +||media-imdb.com/twilight/? +||media-lab.ai/ana-sentry.js +||media-lab.ai/events +||media-platform.com/common/js/lib/cxense/ +||media.flixcar.com/log/ +||mediabong.com/t/ +||mediabong.net/t/ +||mediadelivery.net/.metrics/ +||mediadelivery.net/rum.js +||mediaite.com^*/track/ +||mediametrics.mpsa.com^ +||mediaplex.com^*?mpt= +||meebo.com/cim/sandbox.php? +||merklesearch.com/merkle_track.js +||messagebird.com/assets/fp.min.js +||messagebird.com/metrics.js +||metabroadcast.com^*/log? +||metaffiliation.com^*^mclic= +||meteored.com/cmp/web/events/analytic/ +||metering.pagesuite.com^$third-party +||metrics-api.librato.com^ +||metrics-logger.spot.im^ +||metrics.api.drift.com^ +||metrics.beyondwords.io^ +||metrics.brightcove.com^ +||metrics.ctvdigital.net^ +||metrics.doppiocdn.com^ +||metrics.doppiostreams.com^ +||metrics.futureplc.engineering^ +||metrics.gs-chat.com^ +||metrics.kmsmep.com^ +||metrics.mdstrm.com^ +||metrics.nsureapi.com^ +||metrics.onshape.com^ +||metrics.pico.tools^ +||metrics.rapidedge.io^ +||metrics.scribblelive.com^ +||metrics.userguiding.com^ +||metrix.emagister.com^ +||mfilterit.net^$third-party +||mgmlcdn.com/stats/ +||minutemediacdn.com/campaign-manager-client/ +||mixpanel.com/track? +||mj-snowplow-static-js.s3.amazonaws.com^ +||mkcms.com/stats.js +||ml.com/enterprisetagging/ +||mlweb.dmlab.hu^ +||mm-sdk-analytics.api.cx.metamask.io^ +||mmcdn.com/events/ +||mmi.bemobile.ua^ +||mochiads.com/clk/ +||moco.yukata.dev/get/$image,third-party +||moderate.cleantalk.org/ct-bot-detector-wrapper.js +||modules.ooyala.com^*/analytics- +||mon.domdog.io^ +||monitor-api.blackcrow.ai^ +||monitor-frontend-collector.a.bybit-aws.com^ +||monitor.agenedia.com^ +||monitor.fraudblocker.com^ +||monitoring.iraiser.eu^ +||monorail-edge.shopifysvc.com^ +||mormont.gamer-network.net^ +||movementventures.com/_uid.gif +||mowplayer.com/media/statistics/ +||mozilla.org/page/*/open.gif$third-party +||mql5.com/st? +||mql5.com/tr? +||mrkhub.com/sks/js/sks_track.js +||ms-trackingapi.phenompeople.com^ +||msadsscale.azureedge.net^ +||msecnd.net/jscripts/HA-$script +||msecnd.net/next/$script +||msecnd.net/script/raptor- +||msecnd.net/scripts/a/ai. +||msecnd.net/scripts/b/ai. +||msecnd.net/scripts/jsll- +||mshcdn.com/assets/metrics- +||mssdk.tiktokw.us/web/report? +||mtvnservices.com/aria/projectX/ +||mtvnservices.com/aria/uuid.html +||mtvnservices.com/measurements/ +||mtvnservices.com/metrics/ +||multiup.us/cdn-cgi/trace +||munchkin.marketo.net^ +||murdoog.com^*/Pixel/$image +||museter.com/track.php? +||musvc2.net/e/c? +||mv.treehousei.com^ +||mxmfb.com/rsps/img/ +||myblueday.com^*/count.asp? +||myfinance.com/widget/ +||myfreecams.com/mfc2/lib/o-mfccore.js +||mymarketing.co.il/Include/tracker.js +||myopenpass.com/v1/api/telemetry/event +||myprivacy.dpgmedia.net/audits +||myscoop-tracking.googlecode.com^$third-party +||mysdcc.sdccd.edu^*/.log/ +||mysociety.org/track/ +||mzbcdn.net/mngr/mtm.js +||nastydollars.com/trk/ +||native-ads-events-api.c4s-rd.services^ +||native-ads-events-api2.c4s-rd.services^ +||navattic.com/api/events/ +||naver.net/wcslog.js +||navlink.com/__utmala.js +||nbcudigitaladops.com/hosted/housepix.gif +||nbcudigitaladops.com/hosted/util/geo_data.js +||ncdn22.xyz/cdn-cgi/trace +||needle.com/pageload? +||needle.com/pageupdate? +||neocounter.neoworx-blog-tools.net^ +||neon-lab.com/neonbctracker.js +||net-tracker.notolytix.com^$third-party +||netbiscuits.net^*/analytics/ +||netclick.io/pixel/ +||netdna-ssl.com/tracker/ +||netlify-rum.netlify.app^ +||netne.net/stats/ +||netscape.com/c.cgi? +||neulion.vo.llnwd.net^*/track.js +||news.banggood.com/mo/$image,third-party +||newsanalytics.com.au^$third-party +||newscgp.com/cs/sync/ +||newshinyd.com/tracking/click.gif +||newsletters.nationalgeographic.com^$image,third-party +||newton.pm/events/track_bulk +||nexstardigital.net/segment.js +||nfcube.com/assets/img/pixel.gif +||ngpvan.com/v1/Track/ +||nice264.com/data?$third-party +||nile.works/api/save-perf? +||nile.works/TargetingWebAPP/ +||ninja.onap.io^ +||nitrous-analytics.s3.amazonaws.com^ +||noa.yahoo.com^ +||noflake-aggregator-http.narvar.com^ +||nojscontainer.pepperjam.com^$third-party +||nol.yahoo.com^ +||nosto.com/analytics/ +||notyf.com/pixel/ +||nova.dice.net^ +||nr.static.mmcdn.com^ +||ns-cdn.com^*/ns_vmtag.js +||ns.rvmkitt.com^ +||nude.hu/html/track.js +||nvidia.partners/telemetry/ +||nwr.static.mmcdn.com^ +||o.aolcdn.com/js/mg1.js +||o.momently.info^ +||o9tt6h08li.execute-api.eu-west-1.amazonaws.com^ +||obs.branderblender.com^ +||obs.du89buildings.com^ +||obs.esnlocco.com^ +||obs.jollyoutdoorjogger.com^ +||obs.system1onesource.com^ +||observe-nexus.pointandplace.com^ +||observer.ip-label.net^ +||obseu.netgreencolumn.com^ +||ocmail1.in/rtw/$image +||oct8ne.com/Visitor/ +||octaneai.com/api/v1/beacon +||octaneai.com^*/utrk +||octopart-analytics.com^$third-party +||oda.markitondemand.com^ +||odysee.com/api/v1/metric/ +||odysee.com/log/ +||ohnorobot.com/verify.pl? +||olytics.omeda.com^ +||omnie.ai/api/ddMetric +||ondigitalocean.app/insight-analytics.js +||one.store/v1/analytics/ +||onecount.net/onecount/oc_track/ +||onelinksmartscript.appsflyer.com^ +||onelinksmartscript.appsflyersdk.com^ +||onescreen.net/os/static/pixels/ +||onesignal.com/api/v*/apps/ +||onesignal.com/api/v1/sync/ +||onesignal.com/sdks/OneSignalSDKStyles +||onesignal.com/sdks/OneSignalSDKWorker +||onesignal.com/webPushAnalytics +||onespot-tracking.herokuapp.com^ +||onet.pl/eclk/ +||onet.pl^*/tags? +||onetrust.com^$ping +||onrender.com/health +||onsitestats.bluecore.com^ +||onsugar.com/static/ck.php? +||ontraport.com/track.php +||ontraport.com/tracking.js +||oo-syringe.com/prod/moat.js +||ooyala.com/3rdparty/comscore_ +||ooyala.com/authorized?analytics +||ooyala.com/sas/analytics? +||ooyala.com/verify? +||ooyala.com^*/report?log +||opecloud.com/ope-pdmp.js +||openpanel.dev/op.js +||openpanel.dev/op1.js +||openxcdn.net^$third-party +||opinary.com/v1/events +||oply.hearstapps.com^ +||optimeeze.appspot.com^ +||optimizer.poxo.com/ca2/analytics.js +||optmn.cloud/hb/ +||ora.tv/j/ora_evttracking.js +||orb.ee/collect +||ordergroove.com/log/offer? +||organicfruitapps.com/analytics/ +||orion.bendingspoons.com^ +||orts.wixawin.com^$third-party +||osano.com/js/?action_name= +||otg.mblycdn.com/bundles/cmp.js +||outbrain.com/nanoWidget/externals/cookie/ +||outbrain.com/widgetOBUserSync/ +||outbrain.com^$third-party +||outbrain.com^*/widgetStatistics.js +||p.cquotient.com^ +||p.jmlp.app^ +||p.metrilo.com^ +||p.placed.com^ +||p.skimresources.com^ +||p.tryretool.com^ +||p.typekit.net^ +||p.yotpo.com^ +||p0.com/1x1 +||pac.talksport.com/track +||paddle.com^*/analytics.js +||page-events-ustats.udemy.com^ +||pagecloud.com/event +||pagefly.io/pagefly/core/analytics.js +||pages-stats.rbl.ms^ +||pagesense-collect.zoho.com^ +||pagesocket.glam.com^ +||pageturnpro.com/tracker.aspx? +||pair.com/itero/tracker_ftc/ +||panorama.wixapps.net^ +||pap.qualityunit.com^$third-party +||parallax.askmediagroup.com^ +||paramount.tech/lookup/ +||parkwhiz.com/events/ +||parsely.com/keys/$script,third-party +||partner.awscconsumerinfo.autotrader.com/accdab/beacon/ +||partners.etoro.com^$script +||patreon.com/api/tracking +||payments-amazon.com^*/analytics.js +||paypal.com/credit-presentment/glog? +||paypal.com/ptrk/ +||paypal.com/webapps/mch/cmd/? +||paypal.com/xoplatform/logger/api/logger +||paypal.com^*/pixel.gif$third-party +||paypalobjects.com^*/pixel.gif +||pbd.yahoo.com/data/analytics +||pbjs-stream.bydata.com^ +||pc161021.com/scripts/noui/eventlogger.js +||pc161021.com/scripts/noui/StatProvider.js +||pcrl.co/js/jstracker.min.js +||pega.com/logserver +||pegasus.unifygroup.com^ +||pendo.io/data/ptm.gif/ +||penton.com/analytics/ +||perf-events.cloud.unity3d.com^ +||perf.hsforms.com^ +||perfops.net/rom3/ +||performgroup.com/metrics/ +||perimeterx.net/api/v1/collector/ +||perr.h-cdn.com^ +||perso.aws.arc.pub^ +||petametrics.com/*/activity +||petametrics.com/*/modal +||pets.channeladvisor.com^ +||photobox.com/event +||photobox.com/logs +||phrasetech.com/api/collect +||pi.ispot.tv^ +||pi.pardot.com/analytics? +||piano.io/api/v3/customform/log/impression +||piano.io/tracker/ +||pico.tools/metrics/ +||pikapod.net/script.js +||ping-admin.ru^$third-party +||ping.dozuki.com^ +||ping.fastsimon.com^ +||pings.conviva.com^ +||pings.vidpulse.com^ +||pipe-collect.ebu.io^ +||pipedream.wistia.com^ +||pix.hyj.mobi^ +||pix.revjet.com^ +||pix.speedbit.com^$third-party +||pix.spot.im^ +||pixel-a.basis.net^ +||pixel.ampry.com^ +||pixel.anyclip.com^ +||pixel.archipro.co.nz^ +||pixel.blivenyc.com^ +||pixel.byspotify.com^ +||pixel.condenastdigital.com^ +||pixel.dashfi.dev^ +||pixel.driveniq.com^ +||pixel.embed.su^ +||pixel.fohr.co^ +||pixel.lilystyle.ai^ +||pixel.locker2.com^ +||pixel.marqo-ep.ai^ +||pixel.mintigo.com^ +||pixel.mtrcs.samba.tv^ +||pixel.newscred.com^ +||pixel.propublica.org^ +||pixel.pub.lilyai.net^ +||pixel.redgifs.com^ +||pixel.roymorgan.com^ +||pixel.s3xified.com^ +||pixel.safe-installation.com^ +||pixel.sprinklr.com^ +||pixel.veritone-ce.com^ +||pixel.videohub.tv^ +||pixel.visitiq.io^ +||pixel.wetracked.io^ +||pixel.wp.com^ +||pixel.yabidos.com^ +||pixel.yola.com^ +||pixels.afcdn.com^ +||pixels.zalify.com^ +||pixlee.com/assets/fp.js +||pixlee.com/assets/keen- +||pixlee.com/assets/pixlee_events.js +||pl.connatix.com^ +||pla.fwdcdn.com^ +||platform.iteratehq.com^ +||platform.twitter.com/impressions.js +||plausible.flamekiller.org^ +||plausible.io/js/p.js +||plausible.io/js/plausible. +||plausible.server.hakai.app^ +||plausibleio.workers.dev^$third-party +||play.adtonos.com^ +||play.ht/views/ +||player-metrics.instaread.co^ +||player.mangomolo.com/stats/ +||player.ooyala.com/errors/report? +||player.target-video.com/player/build/plugins/googleanalytics/ +||playhop.com/clck/ +||playtomic.com/Tracker/ +||plista.com/activity +||pm.boostintegrated.com^ +||pmi.flowplayer.com^ +||pn.ybp.yahoo.com/ab/secure/true/imp/ +||polarbyte.com/scripts/latest/reach/pb-reach.iife.min.js +||polarbyte.com/scripts/latest/survey/pb-survey.iife.min.js +||ponos.zeronaught.com^ +||poool.fr/api/v3/access/event +||popup-static.unisender.com^ +||porpoise.azettl.net^ +||postageapp.com/receipt/$third-party +||posthog.com/*/?retry_count +||poweredbyeden.com/widget/tracker/ +||ppx.com/tracking/ +||pr-bh.ybp.yahoo.com^ +||pr.blogflux.com^ +||prd-collector-anon.ex.co^ +||prd-collector-platform.ex.co^ +||pressjack.com/analyticsProvider/getAnalytics/ +||presspage.com/statistics/ +||prf.vagnt.com^ +||pricespider.com/impression/ +||primedia.co.za/analytics/ +||primer.typekit.net^$xmlhttprequest +||prism.app-us1.com^$script,third-party +||prismaconnect.fr/prd/ping +||privacy-analytics-proxy.cookiebot.com^ +||privacy-center.org^*/events +||privacy.outdoorsg.com^ +||processor.asccommunications.com^ +||prod.benchmarkemail.com/tracker.bundle.js +||prod.ew.srp.navigacloud.com^ +||prod.fennec.atp.fox^ +||prod.tahoe-analytics.publishers.advertising.a2z.com^ +||propps.com/v1/referrer/ +||propsid.b-cdn.net^ +||providesupport.com/cmd/$image +||proxy.dzeio.com^ +||proxy.trysavvy.com^ +||ps.ex.co/cookie_sync +||pswec.com/px/$third-party +||pt.crossmediaservices.com^ +||pt.dwcdn.net^ +||pt.ispot.tv^ +||ptsc.shoplocal.com^ +||pub.pixels.ai/metrics-lib.js +||pub.sheknows.com^ +||pubimgs.net/main.gif? +||public.9gtb.com^ +||public.cobrowse.oraclecloud.com/rely/storage/ +||public.fbot.me/track/ +||public.profitwell.com^ +||publicbroadcasting.net/analytics/ +||publisher-services.amazon.dev/v1/recordVendorsLoaded +||pulse.ecmapps.com^ +||pulse.shopflo.com^ +||purevideo.com^*/pvshim.gif? +||purpledotprice.com/api/v1/track +||pushly.com/pushly-event-tracker +||pushpro.io/api/logging/ +||pussy.org^*.cgi?pid= +||pussy.org^*/track.php +||px-cdn.net/b/ +||px-cdn.net^*/collector +||px-cloud.net/b/c/beacon +||px-cloud.net/b/s +||px.marchex.io^ +||px.mountain.com^ +||px.owneriq.net^ +||pxchk.net/b/s +||pylon.micstatic.com^ +||qcloud.com/report.go? +||qiota.com/assets/qiotasession.gif? +||qq.com/collect? +||qq.com/dataimport/ +||qq.com/heatmap/ +||qq.com/ping.js? +||qq.com/stats? +||quadpay.com/analytics/ +||qualifioapp.com/egw/events +||qualtrics.com/jfe/$script,third-party +||qualtrics.com/sie/$script,third-party +||qualtrics.com/WRSiteInterceptEngine/$third-party +||qualtrics.com^*/metrics +||quantcast.com/?log +||quantcast.mgr.consensu.org/?log +||qubitanalytics.appspot.com^ +||query1.petametrics.com^ +||quisma.com/tracking/ +||quora.com/_/ad/ +||quora.com/qevents.js +||qzzr.com/_uid.gif +||r.mail.ru^$script +||r.sdiapi.net^ +||r.skimresources.com^ +||r.stripe.com^$ping,script,xmlhttprequest +||r.wdfl.co/rw.js +||r.winf.site^ +||rackcdn.com/gate.js +||rackcdn.com/stf.js +||radiotime.com/Report.ashx? +||radiotime.com/reports/ +||rakanto.com/cx_collector/ +||ramp.purch.com^ +||rampjs-cdn.system1.com^ +||rapidspike.com/performance/ +||rapidspike.com/static/js/timingpcg.min.js +||raven.adeptmind.ai^ +||raygun.io/events? +||raygun.io/ping? +||rayn.io/contextual_targeting +||rbl.ms/res/users/tracking/ +||reach-id.orbit.tm-awx.com^ +||readcube.com/assets/track_ +||realm.hearst3pcc.com^ +||rebelmouse.com/pharos/ +||recart.com/tracking/ +||receive.wmcdp.io^ +||recipefy.net/analytics.js +||reco.target2sell.com^ +||recs-api.conde.digital^ +||recs.richrelevance.com/rrserver/api/engage/trackExperienceEvent? +||recs.shareaholic.com^ +||recurly.com/js/v1/events +||redditsave.com/api/event +||redditstatic.com/ads/pixel.js +||redfast.com/ping/ +||redirect.prod.experiment.routing.cloudfront.aws.a2z.com/x.png$domain=amazon.com +||redirectify.app/script_tags/tracking.js +||reevoo.com/track_url/ +||refer.wordpress.com^ +||referrer.disqus.com^ +||reflow.tv/pixels/ +||register.boostymark.com/a/reg +||rejoiner.com/tracker/ +||relaymedia.com/ping?$third-party +||removeads.workers.dev^ +||replayapp.io/collect/ +||replit.app/tap/ +||replyat.com/gadgetpagecounter.asp? +||report.23video.com^ +||reporting-api.gannettinnovation.com^ +||reporting.cdndex.io^ +||reporting.singlefeed.com^ +||reports-api.sqreen.io^ +||reports.hibu.com^ +||reports.sdiapi.com^ +||res.rbl.ms^ +||rest.wildstar-online.com^ +||retail-client-events-service.internal.salsify.com/events +||retargeting.newsmanapp.com^ +||reverbnation.com/widgets/trk/ +||revico.jp/js/put_revico_cookie/put_revico_cookie.js +||reviews.io/stats/ +||rfksrv.com/rfkj/$image +||rg-3tn.pages.dev^ +||richrelevance.com/rrserver/tracking? +||rltd.io/tags/ +||roadster.com/roadster_dealer_analytics +||rodale.com/ga/ +||roomvo.com/services/event/ +||route.com/collect +||routeapp.io/route-analytics/ +||rp.mustreadnew.com^ +||rs.sinajs.cn^ +||rt.flix360.com^ +||rtb.prod.carbonatixaudio.com^ +||rtc.hibuwebsites.com/feature/metrics +||rtc.multiscreensite.com^ +||rtxpx-a.akamaihd.net^ +||rudder-server-prd.arena.im/v1/track +||rudder-tracking.rudderstack.com^ +||rudderstack.com/v1/track +||rum-collector.leaderint.workers.dev^ +||rum.azion.com^ +||rum.azioncdn.net^ +||rum.corewebvitals.io^ +||rum.cronitor.io^ +||rum.hlx.page^ +||rum.ingress.layer0.co^ +||rum.layer0.co^ +||rum.optimizely.com^ +||rum.perfops.net^ +||rum.uptime.com^ +||rumstat.cdnvideo.ru^ +||run.app/api/pixel-event +||run.app/data.log +||run.app/event-tracking-trigger +||run.app/events-receiver/get-web-event +||run.app/metrics/ +||run.app/track.js +||rw.marchex.io^ +||rybbit.sg-app.com^ +||s-microsoft.com/mscc/$~stylesheet +||s.autopilotapp.com^ +||s.axon.ai^ +||s.beop.io^ +||s.logsss.com^ +||s.pinimg.com/ct/core.js +||s.srvsynd.com^ +||s.vibe.co^ +||s3.amazonaws.com/www.audiencenetwork.ai/ +||sa.recoding.tech^ +||sa.scorpion.co^ +||saasexch.com/bapi/fe/usd/report/ +||safe-iplay.com/logger +||sail-horizon.com/horizon/$third-party +||sailthru.com/Sailthru_spacer_1x1.gif +||sajari.com/js/sj.js$third-party +||salescs.com/liveagent/scripts/track.js +||salesforce.com/beacon/ +||salesforce.com/sfga.js +||salesloft.com/sl.js +||salesmartly.com/client/log/ +||salesmartly.com/client/station/log? +||sascdn.com/mh_audience/ +||sawpf.com/1.0.js$third-party +||saymedia.com/latest/tetrapak.js +||scatec.io/collect +||schemaapp.com/pagecount +||schibsted.com/autoTracker +||science.ctf.gg^ +||sciencex.com/api/location/ +||scout.salesloft.com/r?tid= +||scout.us2.salesloft.com^$image +||scribd.com/api/v1/events +||scribol.com/traffix/widget_tracker/ +||script-api.kinja.com/script? +||script.claspo.io/forms/v1/event +||scripts.postie.com/otcteung/lp.1.js +||scripts.psyma.com^ +||scripts.stay22.com/letmeallez.js +||scripts.swifteq.com/hc_events.js +||sd-tagging.azurefd.net^ +||sdiapi.com/reporter/ +||sdk-service.nsureapi.com/events +||sdk.51.la^$third-party +||sdk.appsflyer.com^ +||sdk.mrf.io/statics/marfeel-sdk.js +||sdrive.skoda-auto.com^ +||sdtagging.azureedge.net^ +||searchcompletion.com/BannerHandler.ashx +||searchrys.com/dot.php +||searchunify.com/analytics/suanlytics.png +||secure-stats.pingdom.com^ +||secure.ifbyphone.com^$third-party +||secure.merchantadvantage.com^ +||secureprovide1.com/*=tracking$image +||secureserver.net/t/ +||security.giokko.ru/cookie.php +||seg.sharethis.com^ +||segmentapis.com/v1/t +||segments.adap.tv^$third-party +||sempra.pro/stat/ +||sendtonews.com/stn_trk.gif? +||sermoncloud.com/logger/ +||service.trustpid.com^ +||session.timecommerce.net^ +||sessions.embeddables.com^ +||sexhd.pics/x/x.js +||sezzle.com/v1/event/log +||sfstatic.net/build/js/basicMetricsTracking. +||sftrack.searchforce.net^ +||sgali-mcs.byteoversea.com^ +||sgm-w.jd.com^ +||shallspark.com/athena/tracking/ +||share-online.biz/affiliate/$third-party +||shareaholic.com/analytics_ +||shareaholic.com/partners.js +||shared.65twenty.com^ +||shareholder.com/track/ +||shareit.com/affiliate.html$third-party +||sharethis.com/increment_clicks? +||sharethis.com/pageviews? +||shop.app/pay/hop?analytics_trace_id= +||shopflo.com/api/v1/spark +||shopify-gtm-suite.getelevar.com/getelevar/*/dl-web-pixel-lax-custom.js +||shopify-webhooks.sailthru.com^ +||shopify.com/shopifycloud/consent-tracking-api/ +||shopify.com/shopifycloud/web-pixels-manager/ +||shopifysvc.com/v1/logs +||shoplift.ai/api/events/ +||shoplocal.com/it.ashx? +||shopnetic.com^$third-party +||shopper.shop.pe/pixel.png +||shorthand.com/analytics/ +||showstopped.com/owa/log.php +||showstopped.com/owa/modules/base/dist/owa.tracker.js +||shrtfly.vip/js/tag.js +||sinajs.cn/open/analytics/ +||sitebooster.com/sb/wix/p?$third-party +||sitefinity.com/collect/ +||sitescdn.net/ytag/ytag.min.js +||skeepers.io/data/collect +||skypack.dev/@amplitude/ +||skysa.com/tracker/ +||slackb.com^ +||slgnt.us/track +||sli-spark.com/b.png$third-party +||slidedeck.com^$image,third-party +||smart-data-systems.com^ +||smartertravel.com/ext/pixel/ +||smarthint.co/Scripts/i/SmartHintTrack.Full.min.js +||smarthint.co/track/ +||smarturl.it/~/tr/visit +||smrt.as^ +||snapkit.com/v1/sdk/metrics/ +||snaps.vidiemi.com^$third-party +||snowplow.swm.digital^ +||snowplowjs.darwin.cx^ +||soccer.ru/counter/ +||socialannex.com/c-sale-track/$script +||sockr.birdie.so/event +||solutions.invocacdn.com^ +||sonic-prod.cbssports.cloud/analytics/ +||souisa.com/analytics/ +||soundestlink.com/rest/forms/v2/track/ +||sourceforge.net/tracker/$~xmlhttprequest +||sp-wukong-tracker.b-cdn.net^ +||sp.pcid.ca^ +||sp.tinymce.com^ +||spa-tracker.spapi.io^ +||sparklit.com/counter/ +||spea.eko.com^ +||speedtest.dailymotion.com/latencies.js +||speedtrap.shopdirect.com^ +||spindl.link/events +||spiral.world/events/ +||splunkcloud.com/services/collector/ +||spot.im/v1.0.0/conversation/realtime/read +||spotpass.com/api/log +||spread.ly^*/statistics.php +||spresso.com/pim/public/events +||squarecdn.com/square-marketplace-js/chunk-analytics-vendors.js +||squarecdn.com/square-marketplace-js/chunk-analytics.js +||squarespace.com/universal/scripts-compressed/performance-$script,third-party +||src.freshmarketer.in^ +||srvmath.com^*/analytics.js +||ssa.stepstone.com^ +||ssc.shopstyle.com/collective.min.js +||ssl-images-amazon.com/images/I/31YXrY93hfL.js$domain=imdb.com +||ssr.streamrail.net^ +||st.cdnco.us^ +||st.linkfire.com^ +||staging-pt.ispot.tv^ +||starman.fathomdns.com^ +||stas.outbrain.com^ +||stat.absolutist.com^ +||stat.glaze.ai^ +||stat.khanate.pro^ +||stat.mixi.media^ +||stat.moevideo.net^ +||stat.mydaddy.cc^ +||stat.segitek.hu^ +||stat.testme.cloud^ +||stat.u.sb^ +||stat.web-regie.com^ +||statdb.pressflex.com^ +||static-tracking.klaviyo.com^ +||static.fengkongcloud.com^ +||static.klaviyo.com/onsite/js/event_adapter. +||static.myshlf.us/Affiliates/sms_aff_clicktrack-deciem.js +||static.parsely.com^$third-party +||static.shopmy.us/Affiliates/sms_aff_clicktrack.js +||staticmoly.me/metric.php +||statistics.tattermedia.com^ +||statistics.wibiya.com^ +||statm.the-adult-company.com^ +||stats-bq.stylight.net^ +||stats-dev.brid.tv^ +||stats-messages.gifs.com^ +||stats-newyork1.bloxcms.com^ +||stats.big-boards.com^ +||stats.bitgravity.com^ +||stats.bluebillywig.com^ +||stats.bradmax.com^ +||stats.bryancollins.com^ +||stats.bunkr.ru^ +||stats.callnowbutton.com^ +||stats.cmcigroup.com^ +||stats.curds.io^ +||stats.datahjaelp.net^ +||stats.edicy.com^ +||stats.esecured.net^ +||stats.externulls.com^$domain=beeg.com +||stats.flixhq.live^ +||stats.fluorescent.co^ +||stats.fomo.com^ +||stats.gifs.com^ +||stats.heyoya.com^ +||stats.indianpornempire.com^ +||stats.inergizedigitalmedia.com^ +||stats.itweb.co.za^ +||stats.jkdesa.com^ +||stats.kaltura.com^ +||stats.ksearchnet.com^ +||stats.live-video.net^$domain=kick.com +||stats.lmofficial.to^ +||stats.locallabs.com^ +||stats.lotlinx.com^ +||stats.mituyu.com^ +||stats.mpthemes.net^ +||stats.nebula.fi^ +||stats.netbopdev.co.uk^ +||stats.netdriven.com^ +||stats.nkkk.de^ +||stats.olark.com^ +||stats.ozwebsites.biz^ +||stats.phoenix-widget.com^ +||stats.pixeldrain.com^ +||stats.polldaddy.com^ +||stats.prebytes.com^ +||stats.pusher.com^ +||stats.pushloop.io^ +||stats.sa-as.com^ +||stats.sawlive.tv^ +||stats.screenresolution.org^ +||stats.sender.net/ping +||stats.senty.com.au^ +||stats.shopify.com^ +||stats.slashed.cloud^ +||stats.smartclip.net^ +||stats.spreadsimple.com^ +||stats.tiktoker.win^ +||stats.topofblogs.com^ +||stats.traffective.cloud^ +||stats.uscreen.io^ +||stats.varrando.com^ +||stats.velarium.cc^ +||stats.viddler.com^ +||stats.vodlix.com^ +||stats.webs.com^ +||stats.webstarts.com^$third-party +||stats.wp.com^ +||stats.wpmucdn.com^ +||stats.zotabox.com^ +||stats2.indianpornempire.com^ +||statsadv.dadapro.com^$third-party +||statsapi.screen9.com^ +||statscollector-1.agora.io^ +||statscollector.sd-rtn.com^ +||statsig.anthropic.com^ +||statsjs.klevu.com^ +||statt-collect.herokuapp.com^ +||stg-data-collector.playbuzz.com^ +||stg.truvidplayer.com/*/v.php?st= +||stileproject.com/vhtk/ +||storage.eko.com/efu/ekoanalytics/ +||storage.googleapis.com/afs-prod/tags +||storage.googleapis.com/builder-preview/iframe/pixel.js +||storage.googleapis.com/nchq-dj-nid/prod/sp_v1.js +||storage.googleapis.com/snowplow-cto-office-tracker-bucket/ +||storage.googleapis.com/tm-frend-graffiti/ +||storage.googleapis.com/vs-scripts/intentiq/vsintentiq.js +||storage.syncmedia.io/libs/sm_capture_ +||stormgate.production.raptive.com^ +||stream-log.dditscdn.com^ +||streamads.com/view? +||streamate.icfcdn.com/dist/getPerformanceMetrics.$script +||streamoptim.com/log.js +||streamoptim.com/log/report? +||streams.cablecar.sph.com.sg^ +||streamtheworld.com/imp? +||stripe.com/?event= +||sts.eccmp.com^ +||ststandard.com/adsf +||ststandard.com/ping +||stylitics.com/api/engagements +||su.pr/hosted_js$third-party +||sulia.com/papi/sulia_partner.js/$third-party +||sunlightmetrics.b-cdn.net^ +||sunset.com/tia/ +||surfshark.events^ +||surfside.io/event/ +||survey.interquest.com^ +||surveymonkey.com/resp/api/metrics +||surveywall-api.survata.com^$third-party +||svc.dynamics.com/f/m/$third-party +||svc.dynamics.com/t/v/$third-party +||svc.dynamics.com/t/w$third-party +||svibeacon.onezapp.com^ +||swarm.video/j79z9kzty.js +||swarm.video/track/ +||swi.neobox.ebu.io/v3/collect? +||swiftypecdn.com/cc.js$third-party +||swiftypecdn.com/te.js$third-party +||sync.adap.tv^ +||synergizeonline.net/trackpoint/ +||system-beta.b-cdn.net^ +||syteapi.com/et? +||t.360playvid.info^ +||t.91syun.com^ +||t.a3cloud.net^ +||t.adx.opera.com^ +||t.arcade.show^ +||t.auditedmedia.org.au^ +||t.beop.io^ +||t.bimvid.com^ +||t.buyist.app^ +||t.c4tw.net^ +||t.castle.io^ +||t.cfjump.com^ +||t.channeladvisor.com^ +||t.clic2buy.com^ +||t.cometlytrack.com^ +||t.commandbar.com^ +||t.dgm-au.com^$third-party +||t.enuygun.com^ +||t.fastcmp.com^ +||t.fullres.net^ +||t.ghostboard.io^ +||t.greenbids.ai^ +||t.id.net/log +||t.irtyc.com^ +||t.jobsyn.org^ +||t.ltiquery.com^ +||t.mail.sony-europe.com/r/? +||t.menepe.com^ +||t.metrilo.com^ +||t.mmganalytics.com^ +||t.mydialoginsight.com^ +||t.nc0.co^ +||t.paypal.com/ts? +||t.pointandplace.com^ +||t.powerreviews.com^$third-party +||t.raptorsmartadvisor.com^ +||t.rentcafe.com^ +||t.screeb.app^ +||t.sharethis.com^ +||t.signalayer.com^ +||t.skimresources.com^ +||t.smile.eu^ +||t.spbx.app^ +||t.splicky.com^ +||t.spot.im^ +||t.themarketer.com^ +||t.vibe.co^ +||t2.profityi.com/api/visit/ +||t2.t2b.click^ +||ta.trs.cn^ +||taboola.com^$third-party +||taboolasyndication.com^$third-party +||tag-manager.playbuzz.com^ +||tag.aticdn.net^ +||tag.atom.gamedistribution.com^ +||tag.aumago.com^ +||tag.brandcdn.com^ +||tag.digops.sincro.io^ +||tag.elevaate.io^ +||tag.flagship.io^ +||tag.gendiscover.com^ +||tag.getamigo.io^ +||tag.imagino.com^ +||tag.lexer.io^ +||tag.mtrcs.samba.tv^ +||tag.myplay.com^ +||tag.pearldiver.io^ +||tag.rightmessage.com^ +||tag.rmp.rakuten.com^ +||tag.statshop.fr^ +||tag.unifyintent.com^ +||tagger.opecloud.com^ +||tagging.shiftdigitalapps.io^ +||taggstar.com^*/taggstar.min.js +||tags.catapultx.com^ +||tags.dxmdp.com^ +||tags.fullcontact.com^ +||tags.master-perf-tools.com^ +||tags.pw.adn.cloud^ +||tagservice.maximus.mobkoi.com^ +||tagtracking.vibescm.com^ +||tally.so/api/forms/*/events +||target.mixi.media^ +||tarteaucitron.io/log/ +||tatadigital.com/analytics-engine/ +||td.doubleclick.net^ +||technolutions.net/ping? +||technorati.com/technoratimedia-pixel.js +||techtarget.com^*/GetCookiesWithCallback? +||techweb.com/beacon/ +||telemetrics.klaviyo.com^ +||telemetry.bydata.com^ +||telemetry.goodlifefitness.com^ +||telemetry.phenixrts.com^ +||telemetry.reembed.com^ +||telemetry.smartframe.io^ +||telemetry.soundcloud.com^ +||telemetry.svc.transifex.net^ +||telemetry.tableausoftware.com^ +||telemetry.transcend.io^ +||telemetry.vtex.com^ +||temu.com/api/adx/ +||terabox.com/api/analytics? +||terabox.fun/api/analytics +||terabox.fun/api/getsyscfg?*web_share_ads_adsterra_config +||terrific.live/shopify-analytics-sdk.min.js +||test.takedwn.ws^ +||th.bing.com/th/*&riu=$image,third-party +||the-group.net/aether/ +||themesltd.com/online-users-counter/$third-party +||theoplayer.com/t? +||threadloom.com/ga/ +||threedy.ai/api/event/ +||thron.com/shared/plugins/tracking/ +||tickaroo.com/api/collect/ +||tiktokv.com/web/report? +||tildacdn.com/pixel.png +||timejs.game.163.com^ +||timejs.game.easebar.com/bad_report? +||timejs.game.easebar.com/report? +||tinybird.co/v0/events? +||tinypass.com/checkout/offer/trackShow +||tinypass.com^*/track? +||tinyurl.com/pixel.gif/ +||tk.pathmonk.com^ +||tkx.mp.lura.live/rest/v2/server_time +||tl.tradetracker.net^ +||tm-awx.com/pageview +||tm.tradetracker.net^ +||tm.vendemore.com^ +||tmp.argusplatform.com/js/wid.tracker.js +||tms.fmm.io^ +||tmssl.akamaized.net/js/news-viewport-tracking.js +||tmtarget.com/tracking/ +||to.getnitropack.com^ +||toast.com/log +||toast.com/sendid? +||top-fwz1.mail.ru^ +||topix.net/t6track/ +||totallylayouts.com/tumblr/visitor-counter/counter.js +||touchcommerce.com/tagserver/logging/ +||tourradar.com/def/partner?$third-party +||tout.com/tracker.js +||tpx.tesseradigital.com^ +||tr-experiments.parsely.com^ +||tr-op.datatrics.com^ +||tr.attribuly.com^ +||tr.cloud-media.fr^ +||tr.datatrics.com^ +||tr.marsflag.com^ +||tr.outbrain.com^ +||tr.snapchat.com^ +||tr.standardadmin.org^ +||tr.thecontentserver.com^ +||tr.vitals.co^ +||tr.webantenna.info^ +||tr6.snapchat.com^ +||tra.scds.pmdstatic.net/sourcepoint/ +||traccoon.intellectsoft.net^ +||trace.swaven.com^ +||track-dark-bz.b-cdn.net^ +||track.360playvid.info^ +||track.91app.io^ +||track.addevent.com^ +||track.aimroas.com^ +||track.atgstores.com^$third-party +||track.bannedcelebs.com^ +||track.bomiv.com^ +||track.btdmp.com^ +||track.coherentpath.com^ +||track.contently.com^ +||track.cordial.io^ +||track.digitalriver.com^ +||track.emerse.com^ +||track.fusionmedia.io^ +||track.getgobot.com^ +||track.hubspot.com^ +||track.hydro.online^ +||track.juno.com^ +||track.kinetiksoft.com^ +||track.mailerlite.com^ +||track.mituo.cn^ +||track.mp4.center^ +||track.mycliplister.com^ +||track.nopaperforms.com^ +||track.pricespider.com^ +||track.qoof.com^ +||track.searchignite.com^ +||track.searchiq.co^ +||track.shop2market.com^ +||track.sitetag.us^ +||track.social.com^ +||track.strife.com^ +||track.td3x.com^ +||track.uc.cn^ +||track.untd.com^ +||track.uppromote.com^ +||track.us.org^ +||track.venatusmedia.com^ +||track.vscash.com^ +||track.yfret.com^ +||track.yieldsoftware.com^ +||track.zappos.com^ +||track1.avplayer.com^ +||trackdesk.com/tracking.js +||tracker-dot-optimeeze.appspot.com^ +||tracker-server.high-cdn.com^ +||tracker-v4.gamedock.io^ +||tracker.3dissue.com^ +||tracker.affirm.com^ +||tracker.au.zitcha.app^ +||tracker.beezup.com^ +||tracker.cdnbye.com^ +||tracker.downdetector.com^ +||tracker.financialcontent.com^ +||tracker.gamedock.io^ +||tracker.gamemonkey.org^ +||tracker.gleanview.com^ +||tracker.hdtvcloud.com^ +||tracker.icerocket.com^ +||tracker.idocdn.com^ +||tracker.jkstremum.xyz^ +||tracker.keywordintent.com^ +||tracker.marinsoftware.com^ +||tracker.metricool.com^ +||tracker.mrpfd.com^ +||tracker.myth.dev^ +||tracker.myyschool.xyz^ +||tracker.netklix.com^$script +||tracker.nitropay.com^ +||tracker.nocodelytics.com^ +||tracker.personizely.net^ +||tracker.prod.ams3.k8s.hyperia.sk^ +||tracker.services.vaix.ai^ +||tracker.smartframe.io^ +||tracker.softcube.com^ +||tracker.ssl0d.com^ +||tracker.timesgroup.com^ +||tracker.tubecj.com^ +||tracker.twenga. +||tracker.unbxdapi.com^ +||tracker.wigzopush.com^ +||tracker.wpserveur.net^ +||tracker.xgen.dev^ +||trackerapi.truste.com^ +||trackhorizon.nnmtools.com^ +||trackicollect.ibase.fr^$third-party +||tracking-api-4lasu2nlcq-ew.a.run.app^ +||tracking-api.hotmart.com^ +||tracking-api.mangopulse.net^ +||tracking-na.hawksearch.com^ +||tracking.adalyser.com^ +||tracking.ads.global-fashion-group.com^ +||tracking.aegpresents.com^ +||tracking.americaneagle.com^ +||tracking.audio.thisisdax.com^ +||tracking.b-cdn.net^ +||tracking.bababam.com^ +||tracking.brandmentions.com^ +||tracking.buygoods.com^ +||tracking.cerdmann.com^ +||tracking.chilipiper.com^ +||tracking.dealeranalytics.com^ +||tracking.diginetica.net^ +||tracking.drsfostersmith.com^$third-party +||tracking.drum.io^ +||tracking.dsmmadvantage.com^ +||tracking.edvisors.com^$third-party +||tracking.fanbridge.com^ +||tracking.feedperfect.com^ +||tracking.g2crowd.com^ +||tracking.godatafeed.com^ +||tracking.graphly.io^ +||tracking.groupe-ldlc.com^ +||tracking.happierleads.com^ +||tracking.hivecloud.net^ +||tracking.hyros.com^ +||tracking.intentsify.io^ +||tracking.interweave.com^$third-party +||tracking.jotform.com^ +||tracking.keywee.co^ +||tracking.leadlander.com^ +||tracking.lengow.com^ +||tracking.listhub.net^ +||tracking.livingsocial.com^ +||tracking.magnetmail.net^ +||tracking.markethero.io^ +||tracking.musixmatch.com^ +||tracking.offerista.com^ +||tracking.olx-st.com^ +||tracking.pacharge.com^ +||tracking.plattformad.com^$third-party +||tracking.plinga.de^ +||tracking.practicefusion.com^$third-party +||tracking.prepr.io^ +||tracking.quisma.com^ +||tracking.rapidape.com^ +||tracking.scenepass.com^ +||tracking.searchmarketing.com^ +||tracking.sembox.it^$third-party +||tracking.server.bytecon.com^ +||tracking.sexcash.com^ +||tracking.sezzle.com^ +||tracking.sharplink.us^ +||tracking.skyword.com^$third-party +||tracking.sokrati.com^ +||tracking.synthasite.net^ +||tracking.target2sell.com^ +||tracking.thehut.net^ +||tracking.upfluence.co^ +||tracking.waterfrontmedia.com^ +||tracking.wisepops.com^ +||tracking1.brandmentions.com^ +||tracking2.channeladvisor.com^ +||trackingapi.trendemon.com/api/events/pageview? +||trackjs.com/agent/$script,third-party +||trackjs.com/releases/current/tracker.js +||trackjs.com/usage.gif? +||trackla.stackla.com^ +||tracksmart.se^$third-party +||traction.technologyadvice.com^$third-party +||tradablebits.com/pixels/ +||traffic.acwebconnecting.com^ +||traffic.prod.cobaltgroup.com^ +||traffic.shareaholic.com^ +||trafficfuelpixel.s3-us-west-2.amazonaws.com^ +||trafficmanager.net/uet/tracking_script? +||trakksocial.googlecode.com^$third-party +||trap.skype.com^ +||traq.li/tracker/ +||travix.com/log +||traxex.gannettdigital.com^ +||trck.digiteka.com^ +||tree-nation.com/js/track.js +||trends.newsmaxwidget.com^ +||trib.al^$image,third-party +||trickyrock.com/redirect.aspx?pid=*&bid=$subdocument,third-party +||triggers.wfxtriggers.com^ +||trinitymedia.ai/api/collect? +||triplewhale-pixel.web.app^ +||tritondigital.com/ondemand/impression? +||trk.clinch.co^ +||trk.playitviral.com^ +||trk.storyly.io^ +||trk.techtarget.com^ +||trk2-wtb.swaven.com^ +||trueanthem.com^$third-party +||trustarc.com/cap? +||trustarc.com/log? +||trustcommander.net/iab-tcfapi/ +||trustedform.com/trustedform.js +||trustmary.io/agg-event +||trustpilot.com/stats/ +||trx-cdn.zip.co^ +||trx.zip.co^ +||try.abtasty.com^ +||trygravity.ai/ack? +||ts.tradetracker.net^ +||turnto.com/event +||tvpage.com/tvpa.min.js +||tvpage.com^*/__tvpa.gif? +||twitter.com/jot.html +||twitter.com/oct.js +||twitter.com/scribe/ +||typeform.com/*/insights/events^ +||uaas.yandex.ru^ +||uadblocker.com/pixel1.php?$third-party +||ubm.docu.info^ +||uc.cn/collect? +||uc.shiprocket.in/v1/track/ +||ucounter.ucoz.net^ +||ucoz.net/stat/ +||uct.service.usercentrics.eu^ +||ufe.helixo.co/scripts/sdk.min.js +||uhit.eu/id/$third-party +||uid.mediacorp.sg^ +||uilogging.tcdevops.com^ +||uim.tifbs.net^ +||umami.*/script.js|$script +||unibet.de/stan/campaign.do?*&affiliateId=$subdocument,third-party +||unifyintent.com/analytics/ +||units.knotch.it^ +||unpkg.com/web-vitals? +||upsell-app.logbase.io/metrics +||uptime.com/static/rum/$third-party +||uptime.fastrr.com^ +||uptime2.fastrr.com^ +||upvert.io/api/v3/pixel/ +||uriports.com/reports/$third-party +||urldefense.com^$image,third-party +||us-central1-markuphero.cloudfunctions.net^ +||usaoptimizedby.increasingly.co^ +||user.userguiding.com^ +||usercentrics.eu/session/$image +||userexperience.thehut.net^ +||usersegment.wpdigital.net^ +||usersonline.org/ping.php? +||userstatics.com/get/script.js +||userway.org/api/abn/events +||userway.org/api/seo-widget/ +||userway.org/api/v1/stats +||usizy.com/external/pageview +||usr.interactiveone.com^ +||utics.nodejibi.in^ +||utils.global-e.com/set? +||utt.pm/utm/ +||v.shopify.com^ +||va.tawk.to/log +||validate.onecount.net^$image +||vanilladev.com/analytics. +||vast.com/vimpressions.js$third-party +||vault.gostatera.com^ +||vcita.com/tr_ +||vdo.ai/core/logger.php? +||vdo.ai/core/scantrad-net/ +||vdrn.redplum.com^ +||vector.co/pixel.js +||vee24.com/c/PageBehaviour? +||veeseo.com/tracking/ +||ventunotech.com/beacon/ +||vercel-vitals.axiom.co^ +||viafoura.co/eventfeed?site_uuid= +||vid.media.cm/m.js +||vidazoo.com/aggregate? +||vidazoo.com/event/ +||video-ad-stats.googlesyndication.com^ +||video-analytics-api.cloudinary.com^ +||video-cdn.net/event? +||video-intel.pixels.ai^ +||video.google.com/api/stats/ +||videoevents.outbrain.com^ +||videoly.co^*/event/ +||videopress.com/plugins/stats/ +||vidible.tv/trk/ +||vidstream.pro/log/ +||vidstream.pro/ping/ +||viglink.com/api/ping$third-party +||vimeocdn.com/add/player-stats? +||vimeocdn.com/ga/ +||viralize.tv/track/ +||virgingames.com/tracker/ +||virginmedia.com^*/analytics/ +||virtueworldwide.com/ga-test/ +||virtuoussoftware.com/tracker/ +||visa.com/logging/logEvent$third-party +||vissle.me/track/ +||visual.ly/track.php? +||visualstudio.com/_da.gif? +||visualwebsiteoptimizer.com*/ee.gif +||visualwebsiteoptimizer.com/analysis/ +||visualwebsiteoptimizer.com/cdn/analysis/ +||visualwebsiteoptimizer.com/dyn +||visualwebsiteoptimizer.com/events/t? +||visualwebsiteoptimizer.com/gv.gif? +||visualwebsiteoptimizer.com/server-side/track-user? +||vitals.flyingpress.com^ +||vivociti.com/images/$third-party +||vizury.com/analyze/ +||vk.com/rtrg? +||vk.com/videostats.php +||vm.target-video.com^ +||vmixcore.com/vmixcore/playlog? +||vmweb.net/identity.min.js +||vo.msecnd.net/api/beYableJSv2.js +||vooxe.com/analytics.js +||vortex.data.microsoft.com^ +||voxmedia.com/beacon-min.js +||vplayeranalytics.vidgyor.com^ +||vs4.com/impr.php? +||vst.sibnet.ru^ +||vstat.borderlessbd.com^ +||vtrk.dv.tech^ +||vuukle.com/bq-publish? +||vuukle.com/getGeo +||vvhp.net/read/view.gif +||vwdealerdigital.com/cdn/sd.js +||w3track.com/newtrk/$third-party +||w4o7aea80ss3-a.akamaihd.net^ +||wa.appsflyersdk.com^ +||wallkit.net^*/user/event +||wantlive.com/pixel/ +||warnermedia.com/api/v1/events? +||watchtower.graindata.com^ +||wco.crownpeak.com^ +||wds.weqs.me^ +||weather.ca/counter.gif? +||web-beacon.starii-rover.com^ +||web-rabbit.meitustat.com/report? +||web-tracker.smsbump.com^ +||web-vitals-script.leaderint.workers.dev^ +||web.aips-sol.com/v1/events? +||web.valiuz.com^*/tag.js +||web1.51.la^ +||webcare.byside.com/agent/usert_agent.php +||webedia.fr/js/gs.js +||webevents.kayzen.io^ +||webeyo.com/ipinfo +||webgames.io/imp/ +||webmasters.ksalsocial.online/pixel/ +||websdk.appsflyer.com^ +||websdk.appsflyersdk.com^ +||webservices.websitepros.com^ +||webstats.thaindian.com^ +||websuccess-data.com/tracker.js +||webtrack.chd01.com^ +||webtrack.savoysystems.co.uk^$third-party +||webtracker.apicasystem.com^ +||webvoo.com/wt/Track.aspx +||webvoo.com^*/logtodb. +||webworx24.co.uk/123trace.php +||webzel.com/counter/ +||weglot.com/pageviews? +||wetpaint.com^*/track? +||wf-box.net/sandboxed_ad_vendor_iframe.html +||wf.typesquare.com^ +||wgs.wgs-static.com^ +||whooshkaa.com/identify +||whooshkaa.com/listen/track +||whoson.com/poll.gif +||whoson.com/w.js +||whosread.com/counter/ +||widgeo.net/compteur.php? +||widgeo.net/geocompteur/ +||widgeo.net/hitparade.php +||widgeo.net/tracking.php? +||widget-pixels.outbrain.com^ +||widget.civey.com^$ping +||widget.educationdynamics.com^ +||widgetbox.com/syndication/track/ +||widgethost.com/pax/counter.js? +||widgets.outbrain.com/widgetMonitor/ +||widgets.sprinklecontent.com/v2/sprinkle.js +||widgetserver.com/metrics/ +||widgetserver.com/t/ +||widgetserver.com^*/image.gif? +||win.staticstuff.net^ +||witbee.com^*/collect +||wl-pixel.index.digital^ +||wn.com/count.js +||wogaa.sg/scripts/wogaa.js +||wondershare.es/jslibs/track.js +||wordmonetize.com^$third-party +||wordpress.com/geo/ +||work.selecdoo.com^ +||workers.dev/api/event +||workers.dev/js/script.js +||worldssl.net/reporting.js +||worldztool.com^*/dotraceuser.php +||wp-engage.org/api/v5/post/activity/log/ +||wp.com/i/mu.gif$image +||wp.com/wp-content/js/bilmur.min.js +||ws.audioeye.com^ +||ws.sharethis.com^$script +||wsmcdn.audioeye.com^ +||wspisp.net/logger.php +||wstats.ageverif.com^ +||wstats.slashed.cloud^ +||wt.viagogo.net^ +||wtb-tag.swaven.com^ +||wtbevents.pricespider.com^ +||wtr-digital-analytics.ew.r.appspot.com^ +||x.babe.today^ +||x.disq.us^ +||x.weather.com^ +||xp2023-pix.s3.amazonaws.com^ +||yahoo.co.jp/js/s_retargeting.js +||yahoo.com/sync/casale/ +||yandex.*/data?referrer= +||yandex.ru/an/rtbcount/ +||yandex.ru/click/ +||yandex.ru/cycounter? +||yarpp.org/pixels/ +||yellow.ai/api/plugin/analytics? +||yellow.ai/integrations/analytics/ +||yepnews.eu/event.html +||yext.com/plpixel? +||yimg.com/aaq/vzm/$script,domain=news.yahoo.com +||yimg.com/cx/vzm/cs.js +||yimg.com/ss/vops.js +||yimg.com/wi/ytc.js +||yoast-schema-graph.com^$third-party +||yotpo.com/widget-assets/yotpo-pixel/ +||yotrack.cdn.ybn.io^ +||yottaa.com/rapid.min.js +||yottaa.net/log-jh +||zapcdn.space/zapret.js +||zendesk.com/frontendevents/$xmlhttprequest +||zengenti.com/tags/ +||zeropartyforms.com^*/digibox.gif? +||zi-scripts.com/zi-tag.js +||ziffdavisb2b.com^*/tracker.js +||zineone.com^*/event +||zip.co/analytics +||zoominfo.com/pixel/ +||zooplus.io/static/js/tracking-min.js +||zynga.com/track/ +! https://d3ward.github.io/toolz/adblock.html +||adsdk.yandex.ru^ +||analytics-api.samsunghealthcn.com^ +||analytics.mobile.yandex.net^ +||analytics.samsungknox.com^ +||app.chat.xiaomi.net^$third-party +||appmetrica.yandex.com^$third-party +||click.oneplus.cn^ +||cloudfront.net/test.png +||data.hicloud.com^$third-party +||extmaps-api.yandex.net^ +||logbak.hicloud.com^ +||logservice.hicloud.com^ +||logservice1.hicloud.com^ +||metrics-dra.dt.hicloud.com^ +||metrics.icloud.com^ +||metrics.mzstatic.com^ +||open.oneplus.net^$third-party +||supportmetrics.apple.com^ +||tracking.miui.com^ +||trk.pinterest.com^$third-party +||yandexadexchange.net^ +! https://coveryourtracks.eff.org/ Cover your tracks test +||do-not-tracker.org^ +||eviltracker.net^ +||trackersimulator.org^ +! cloudfront +||d10lpsik1i8c69.cloudfront.net^ +||d11bdev7tcn7wh.cloudfront.net^ +||d169bbxks24g2u.cloudfront.net^ +||d16fk4ms6rqz1v.cloudfront.net^ +||d16hi2v1mh7lg7.cloudfront.net^ +||d1733r3id7jrw5.cloudfront.net^ +||d18p8z0ptb8qab.cloudfront.net^ +||d191y0yd6d0jy4.cloudfront.net^ +||d196fri2z18sm.cloudfront.net^ +||d1cr9zxt7u0sgu.cloudfront.net^ +||d1f0tbk1v3e25u.cloudfront.net^ +||d1f1eryiqyjs0r.cloudfront.net^*/track. +||d1get58iwmjrxx.cloudfront.net^ +||d1gp8joe0evc8s.cloudfront.net^ +||d1hyarjnwqrenh.cloudfront.net^ +||d1k8sb4xbepqao.cloudfront.net^ +||d1l6p2sc9645hc.cloudfront.net^ +||d1m6l9dfulcyw7.cloudfront.net^ +||d1n00d49gkbray.cloudfront.net^ +||d1qnmu4nrib73p.cloudfront.net^ +||d1r27qvpjiaqj3.cloudfront.net^ +||d1r2sy6oc0ariq.cloudfront.net^ +||d1r55yzuc1b1bw.cloudfront.net^ +||d1rgnfh960lz2b.cloudfront.net^ +||d1ros97qkrwjf5.cloudfront.net^ +||d1snv67wdds0p2.cloudfront.net/tracker/ +||d1t9uctetvi0tu.cloudfront.net^ +||d1tbj6eaenapdy.cloudfront.net^ +||d1tqsoh7s4xjz9.cloudfront.net^ +||d1vg5xiq7qffdj.cloudfront.net^ +||d1xfq2052q7thw.cloudfront.net^ +||d1yz9u4jf6oqub.cloudfront.net^ +||d1z3r0i09bwium.cloudfront.net^ +||d1z9vm58yath60.cloudfront.net^ +||d20kffh39acpue.cloudfront.net^ +||d20vwa69zln1wj.cloudfront.net^ +||d21o24qxwf7uku.cloudfront.net^ +||d21y75miwcfqoq.cloudfront.net^ +||d22v2nmahyeg2a.cloudfront.net^ +||d23p9gffjvre9v.cloudfront.net^ +||d241ujsiy3yht0.cloudfront.net +||d24cze5sab2jwg.cloudfront.net^ +||d24luoisenoi7j.cloudfront.net^ +||d24rtvkqjwgutp.cloudfront.net^ +||d2cpw6kwpff7n5.cloudfront.net^ +||d2ezz24t9nm0vu.cloudfront.net^ +||d2fj3s7h83rb61.cloudfront.net +||d2fuc4clr7gvcn.cloudfront.net/track.js +||d2gbtcuv3w9qyv.cloudfront.net^ +||d2i34c80a0ftze.cloudfront.net^ +||d2ibu2ug0mt5qp.cloudfront.net^ +||d2j1fszo1axgmp.cloudfront.net^ +||d2j74sjmqqyf26.cloudfront.net^ +||d2kdl5wcwrtj90.cloudfront.net^ +||d2lxqodqbpy7c2.cloudfront.net^ +||d2lyx5ly60ksu3.cloudfront.net^ +||d2nq0f8d9ofdwv.cloudfront.net/track.js +||d2o5idwacg3gyw.cloudfront.net^ +||d2o67tzzxkqap2.cloudfront.net^ +||d2o9p5vky89u4e.cloudfront.net^ +||d2oh4tlt9mrke9.cloudfront.net^ +||d2pozfvrp52dk4.cloudfront.net^ +||d2pt12ct4kmq21.cloudfront.net^ +||d2r1yp2w7bby2u.cloudfront.net^ +||d2rnkf2kqy5m6h.cloudfront.net^ +||d2t77mnxyo7adj.cloudfront.net^ +||d2tgfbvjf3q6hn.cloudfront.net^ +||d2wa5sea6guof0.cloudfront.net^ +||d2wu036mkcz52n.cloudfront.net^ +||d2wy8f7a9ursnm.cloudfront.net^ +||d2z0bn1jv8xwtk.cloudfront.net^ +||d2zd0wa1vpt7j9.cloudfront.net^ +||d31bfnnwekbny6.cloudfront.net/customers/ +||d31y97ze264gaa.cloudfront.net^ +||d34ko97cxuv4p7.cloudfront.net^ +||d34r8q7sht0t9k.cloudfront.net^ +||d35u1vg1q28b3w.cloudfront.net^ +||d39ion77s0ucuz.cloudfront.net^ +||d39yds8oe4n4jq.cloudfront.net^ +||d3banl4fzuxsjl.cloudfront.net^ +||d3bo67muzbfgtl.cloudfront.net^ +||d3cgm8py10hi0z.cloudfront.net^ +||d3cxv97fi8q177.cloudfront.net^ +||d3gi6isrskhoq.cloudfront.net^ +||d3hb14vkzrxvla.cloudfront.net/health-check +||d3iouejux1os58.cloudfront.net^ +||d3ip4t8fp90x81.cloudfront.net^ +||d3j1weegxvu8ns.cloudfront.net^ +||d3kyk5bao1crtw.cloudfront.net^ +||d3l3lkinz3f56t.cloudfront.net^ +||d3lqotgbn3npr.cloudfront.net^ +||d3m6sept6cnil5.cloudfront.net^ +||d3mapax0c3izpi.cloudfront.net/lib/ajax/events.js +||d3mskfhorhi2fb.cloudfront.net^ +||d3n6i6eorggdxk.cloudfront.net^ +||d3nn82uaxijpm6.cloudfront.net/8f96b1247cf4359f8fec.js +||d3or5d0jdz94or.cloudfront.net^ +||d3plfjw9uod7ab.cloudfront.net^ +||d3qxef4rp70elm.cloudfront.net/m.js +||d3r7h55ola878c.cloudfront.net^ +||d3s7ggfq1s6jlj.cloudfront.net^ +||d3sbxpiag177w8.cloudfront.net^ +||d3tglifpd8whs6.cloudfront.net^ +||d3uvwl4wtkgzo1.cloudfront.net^ +||d3vebqdofhigrn.cloudfront.net^ +||d4ax0r5detcsu.cloudfront.net^ +||d5yoctgpv4cpx.cloudfront.net^ +||d6rak4b14t5gp.cloudfront.net^ +||d761erxl2qywg.cloudfront.net^ +||d81mfvml8p5ml.cloudfront.net^ +||d94qwxh6czci4.cloudfront.net^ +||danv01ao0kdr2.cloudfront.net^ +||db7q4jg5rkhk8.cloudfront.net^ +||dc8na2hxrj29i.cloudfront.net^ +||dc8xl0ndzn2cb.cloudfront.net^ +||dcv4p460uqa46.cloudfront.net^ +||dd6zx4ibq538k.cloudfront.net^ +||de5zarwna0j2q.cloudfront.net^ +||dggaenaawxe8z.cloudfront.net^ +||dh0c1bz67fuho.cloudfront.net^ +||di2xwvxz1jrvu.cloudfront.net^ +||dkupaw9ae63a8.cloudfront.net^ +||dl1d2m8ri9v3j.cloudfront.net^ +||dljnjom9md7c.cloudfront.net/02/zara.js +||dlthst9q2beh8.cloudfront.net^ +||dmw2pzbenclyd.cloudfront.net^ +||dmxhgf4zuwdvu.cloudfront.net^ +||dn34cbtcv9mef.cloudfront.net^ +||dniyppubkuut7.cloudfront.net^ +||dnn506yrbagrg.cloudfront.net^ +||dnxlgencstz4.cloudfront.net^ +||dqif5bl25s0bf.cloudfront.net^ +||dr6vcclmzwk74.cloudfront.net^ +||dsbahmgppc0j4.cloudfront.net^ +||dtxtngytz5im1.cloudfront.net^ +||dtym7iokkjlif.cloudfront.net/dough/ +||du4rq1xqh3i1k.cloudfront.net^ +||duu8lzqdm8tsz.cloudfront.net^ +||dy2xcjk8s1dbz.cloudfront.net^ +||dzgwautxzdtn9.cloudfront.net^ +! Goatcounter CNAMES https://github.com/AdguardTeam/cname-trackers/issues/99 +||anal.sataniskwijt.be^ +||analytics.code.dccouncil.gov^ +||count.vidsrc.pro^ +||goat.hepicgamerz.com^ +||goat.nhimmeo.cf^ +||goat.skeetstats.xyz^ +||goat.tailspace.net^ +||st.mapleranks.com^ +||stats.boringproxy.io^ +||stats.how.wtf^ +! optimizely.com +||optimizely.com/client_storage/ +||optimizely.com/log +||optimizely.com/public/ +! firebase +||firebase.googleapis.com^$domain=terabox.fun +||firebaseinstallations.googleapis.com^$domain=terabox.fun +! https://gist.github.com/tinogomes/c425aa2a56d289f16a1f4fcb8a65ea65 +! Domains linking to 127.0.0.1 +!||cefgo.com^ +!||domaincontrol.com^ +!||fbi.com^ +!||lacolhost.com^ +!||lndo.site^$third-party +!||local.computer^ +!||local.qinlili.bid^ +!||local.sisteminha.com^ +!||localho.st^ +!!||localhost.direct^ +!||localtest.me^ +!||lvh.me^ +!||netfinity.hostedrmm.com^ +!||nip.io^$third-party +!||ssh.town^ +!||supercalifragilisticexpialidocious.co.uk^ +!||xip.io^ +!||yoogle.com^ +! Ad-Shield +! https://github.com/uBlockOrigin/uAssets/issues/9717 +/^https:\/\/cdn\.jsdelivr\.net\/npm\/[-a-z_]{4,22}@latest\/dist\/script\.min\.js$/$script,third-party +! wix +||frog.wix.com/da-client? +||frog.wix.com/fed? +||frog.wix.com/hls2? +||frog.wix.com/p? +||frog.wix.com/pre? +||frog.wix.com^$image,ping,xmlhttprequest +! Fingerprinting +||ascpqnj-oam.global.ssl.fastly.net^ +||cloudfront.net/js/grin-sdk.js +||dingxiang-inc.com/ctu-group/constid-js/index.js +||fpcn.bpsgameserver.com^ +||fyrsbckgi-c.global.ssl.fastly.net^ +||ipqualityscore.com/api/$third-party +||mhxk.com^*/main/entry.common.$script +||mjca-yijws.global.ssl.fastly.net^ +||nofraud.com/js/device.js +||nofraud.com^*/customer_code.js +||poll-maker.com^*/scpolls.js +||rc.vtex.com.br^ +||realperson.de/system/third-party/rpfp/rpfp.min.js +||ref.dealerinspire.com^ +||resu.io/scripts/resclient.min.js +||socital.com^*/socital.js +||talkingdata.com^*/sdk_release.js +||targeting.voxus.tv^ +||trwl1.com/ascripts/gcrt.js +||vtex.com.br/rc/rc.js +! akamai +||akamai.com/crs/lgsitewise.js +||akamai.net/*.babylon.com/trans_box/ +||akamai.net/chartbeat. +||akamai.net^*/a.visualrevenue.com/ +||akamai.net^*/sitetracking/ +||akamaihd.net/*.gif?e= +||akamaihd.net/bping.php? +||akamaihd.net/javascripts/browserfp. +||akamaihd.net/log? +||akamaihd.net/push.gif? +||akamaihd.net^*.gif?d= +||akamaized.net/?u= +||akamaized.net/js3/tracker.js +||aksb-a.akamaihd.net^ +||ds-aksb-a.akamaihd.net^ +||e77lmzbqou0n-a.akamaihd.net^ +||ninja.akamaized.net^ +||pnekru6pxrum-a.akamaihd.net^ +||pxlgnpgecom-a.akamaihd.net^ +! fastly +||7q1z79gxsi.global.ssl.fastly.net^ +||clarium.global.ssl.fastly.net^ +||dfapvmql-q.global.ssl.fastly.net^ +||fastly.net/i? +||fastly.net/sp.js +||vwonwkaqvq-a.global.ssl.fastly.net^ +! CPU abuse +! https://publicwww.com/websites/%22cloudfront.net%2Fscript.js%22/ +||d14pdm1b7fi5kh.cloudfront.net/script.js +||d2badvwg0mti9p.cloudfront.net/script.js +||dfm7wh2x5l4za.cloudfront.net/script.js +! Seals, Websecurity, Protection etc. Unnecessary third-party scripts +||antillephone.com^$third-party +||beyondsecurity.com^$third-party +||geotrust.com^$third-party +||gmo-cybersecurity.com/siteseal/$third-party +||guarantee-cdn.com^$third-party +||howsmyssl.com^$third-party +||js.trendmd.com^$script,subdocument,third-party +||legitscript.com/seals/$script +||medals.bizrate.com^$third-party +||nsg.symantec.com^$third-party +||popup.laybuy.com^$subdocument,third-party +||privacy-policy.truste.com^$third-party +||scanalert.com/meter/ +||scanverify.com^$third-party +||seal.digicert.com^$third-party +||seal.globalsign.com^$third-party +||seal.godaddy.com^$third-party +||seal.networksolutions.com^$third-party +||seal.qualys.com^$third-party +||sealserver.trustwave.com^$third-party +||secure.trust-guard.com^$third-party +||securitymetrics.com^$third-party +||shield.sitelock.com^$third-party +||siteintercept.allegiancetech.com^ +||smart-widget-assets.ekomiapps.de^$third-party +||trust-provider.com^*/trustlogo.js$third-party +||trusted-web-seal.cybertrust.ne.jp^ +||trustev.com/trustev.min.js$third-party +||verify.authorize.net^$third-party +||verify.safesigned.com^$third-party +||websecurity.norton.com^$third-party +||webutation.net/js/load_badge.js +||widgets.trustedshops.com^$third-party +! https://www.oligo.security/blog/0-0-0-0-day-exploiting-localhost-apis-from-the-browser +||0.0.0.0^$third-party,domain=~0.0.0.0|~127.0.0.1|~[::1]|~[::]|~local|~localhost +||[::]^$third-party,domain=~0.0.0.0|~127.0.0.1|~[::1]|~[::]|~local|~localhost +! Suspect trackers (from privacy badger) +||jsrdn.com/s/cs.js +! Rewrite to internal resources filters for Adblock Plus +||d1z2jf7jlzjs58.cloudfront.net^$rewrite=abp-resource:blank-js,domain=voici.fr +!-----------------International third-party tracking services-----------------! +! *** easylist:easyprivacy/easyprivacy_thirdparty_international.txt *** +/rdir.baur.de/g.html?uid=$image +||78.46.19.203^$third-party,domain=~sprueche-zitate.net.ip +||ablida.net^$third-party +||adc-srv.net/retargeting.php +||adm24.de/hp_counter/$third-party +||advantage.digitalsunray.com^ +||aftonbladet.se/trafikfonden/ +||agitos.de/content/track? +||analytics.agenedia.com^ +||analytics.audionow.de^ +||analytics.cnd-motionmedia.de^$third-party +||analytics.gameforge.de^ +||analytics.idfnet.net^ +||analytics.loop-cloud.de^$third-party +||analytics.media-proweb.de^ +||analytics.praetor.im^$third-party +||andyhoppe.com/count/ +||api.fanmatics.com/event +||api.nexx.cloud/*/session/ +||api.tv.de/*/tracking/ +||app.elitedomains.de/js/service/statistics.service.js +||artemis-cdn.ocdn.eu^ +||ats.otto.de^ +||audimark.de/tracking/ +||b.nativendo.de^ +||ba-content.de/cds/log/ +||bcs-computersysteme.com/cgi-local/hiddencounter/ +||beagle.prod.tda.link^ +||blacktri-a.akamaihd.net^ +||cdn.c-i.as^$script,third-party +||cesar-it.de/collect/ +||cgicounter.onlinehome.de^ +||click-performance.assets.rndtech.de^ +||clipkit.de/metrics? +||cloudfront.net/customers/24868.min.js +||com.econa.com^ +||counter.1i.kz^ +||counter.blogoscoop.net^ +||counter.webmart.de^ +||ctr-iwb.nmg.de^ +||ctr-opc.nmg.de^ +||ctr.nmg.de^$third-party +||d.adlpo.com^ +||d.nativendo.de^ +||d.omsnative.de^ +||data.econa.com^ +||data.kameleoon.io^ +||datacomm.ch^*/count.cgi? +||datahub-srgssr.ch/tracking/ +||djuf7jb483wz1.cloudfront.net/p/l.jpg +||eick.it/statistics/ +||epoq.de/inbound-servletapi/event? +||et.twyn.com^ +||events.onet.pl^ +||export.newscube.de^$~subdocument +||fc.webmasterpro.de^$third-party +||fd.bawag.at^ +||filmaster.tv^*/flm.tracker.min.js +||freshclip.tv/tracking/ +||frontlineshop.com/ev/co/frontline?*&uid= +||gameforge.de/init.gif? +||geo.mtvnn.com^ +||geo.xcel.io^ +||giga.de/vw/$image,third-party +||global-media.de^*/track/ai.img +||goldsilbershop.de/go.cgi? +||gproxy-beta.mableai.workers.dev/wtag/js +||grafana-agent.cuboxx.io^ +||hbx.df-srv.de^ +||hittracker.org/count.php +||hittracker.org/counter.php +||hotelstatic.com/collect +||hotelstatic.com/perf +||house27.ch/counter/ +||hyteck.de/count.js +||hyvyd.com/count$image,domain=mobile.de +||info.elba.at^$third-party +||insene.de/tag/$third-party +||iqcontentplatform.de/tracking/ +||liberty.schip.io/liberty-metrics/ +||live.cxo.name^ +||liveviewer.ez.no^ +||log.worldsoft-cms.info^ +||lr-port.de/tracker/ +||m.mobile.de/svc/track/ +||mapandroute.de/log.xhr? +||marktjagd.de/proxy/trackings/ +||mastertag.kpcustomer.de^ +||mastertag.q-sis.de^ +||mehrwertdienstekompetenz.de/cp/$third-party +||met.vgwort.de^ +||mindwerk.net/zaehlpixel.php? +||mlm.de/counter/ +||mlm.de/pagerank-ranking/ +||newelements.de/tracker/ +||nexx.cloud/play/beacon. +||nexxtv-events.servicebus.windows.net^ +||nlytcs.idfnet.net^ +||ntmb.de/count.html? +||oe-static.de^*/wws.js +||omsnative.de/tracking/ +||onlex.de/_counter.php +||onlinepresse.info/counter.php? +||onlyfree.de^*/counterservice/ +||orbidder.otto.de^ +||ottogroup.media/ogm.nitro. +||owen.prolitteris.ch^ +||pixel.poptok.com^ +||plausible.ams.to^ +||plista.com/getuid? +||plista.com/iframeShowItem.php +||px.staticfiles.at^ +||qa-events-schema.viacom.tech^ +||quiz.stroeermediabrands.de/pub/$image +||ravde.re-in.de/z? +||retrack.q-divisioncdn.de^ +||retresco.de^*/stats/$third-party +||rum.mauve.eu^ +||scdn.literatur-couch.de^ +||script.idgentertainment.de/gt.js +||serverkompetenz.net/cpx.php? +||services.nexx.cloud/samaritan/ +||sheego.de/ar/$third-party +||shopper.shop.pe/input.js +||sim-technik.de/dvs.gif? +||sim-technik.de^*&uniqueTrackId= +||simetra.tracking.ringieraxelspringer.tech^ +||skoom.de/gratis-counter/ +||somquery.sqrt-5041.de/tv/tracking-event +||sp.data.funkedigital.de^ +||spark.cloud.funkedigital.de/agnes.js +||spox.com/pub/js/track.js +||ss4w.de/counter.php? +||stat.clichehosting.de^ +||statistics.klicktel.de^ +||statistik.motorpresse.de^$third-party +||statistik.simaja.de^ +||stats.blogoscoop.net^ +||stats.clickforknowledge.com^ +||stats.digital-natives.de^ +||stats.frankfurterneuepresse.de^ +||stats.united-domains.de^ +||stats.urban-media.com^ +||stats2.algo.at^$third-party +||stilanzeigen.net/track/ +||stroeerdp.de^*_gtm.js +||strongvpn.com/aff/ +||suedtirol.live/slc.js +||t.cpurls.net^ +||t.elitedomains.de^ +||t.etraveli.com^ +||t.nativendo.de^ +||t.quisma.com^ +||tagm.tchibo.de^ +||tms.danzz.ch^ +||top50-solar.de/solarcount/ +||topblogs.de/tracker.php? +||tr.metaflow.de^ +||track2.cliplister.com^ +||track2.dulingo.com^ +||track2.mycliplister.com^ +||tracker.euroweb.net^ +||tracker.winload.de^ +||tracking-live.kr3m.com^ +||tracking.base.de^ +||tracking.emsmobile.de^ +||tracking.gameforge.de^ +||tracking.hannoversche.de^ +||tracking.rtl.de^ +||tracking.s24.com^ +||tracking.srv2.de^ +||tracking.webtradecenter.com^ +||traffic.askrella.de^ +||trck.bdi-services.de^ +||trck.spoteffects.net^ +||trecker.aklamio.com^ +||tw.reppublika.com^ +||umi.cloudful.de^ +||uni-duesseldorf.de/cgi-bin/nph-count? +||united-infos.net/event? +||veeseo.com^*/url.gif? +||veeseo.com^*/view/$image +||vertical-n.de/scripts/*/immer_oben.js +||verticalnetwork.de/scripts/*/immer_oben.js +||vtrtl.de^ +||webcounter.goweb.de^ +||wieistmeineip.de/ip-address/$third-party +||wo-cloud.com^$ping +||x.bloggurat.net^ +||xnewsletter.de/count/counter.php? +||zs.dhl.de^ +! Arabic +||shofonline.org/javashofnet/ti.js +||wsimg.com/signals/$script,third-party +||wsimg.com/traffic-assets/$script,third-party +! French +||01net.com/track/ +||abs.proxistore.com^ +||affiliation.planethoster.info^$third-party +||analytics.ekonsilio.io^ +||analytics.freespee.com^ +||analytics.valiuz.com^ +||at.360.audion.fm^ +||blogoutils.com/online-$third-party +||bnpparibas.fr/JavascriptInsert.js +||btstats.devtribu.fr^ +||c.woopic.com/tools/pdb.min.js +||caast.tv/v1/record.gif? +||calcul-pagerank.fr/client/$third-party +||canalplus-bo.net/web/*/tracker/? +||capping.sirius.press^ +||cdn-files.prsmedia.fr^*/xiti/ +||ced-ns.sascdn.com/diff/js/smart.js +||cloudfront.net^$script,domain=gentside.com +||collect-v6.51.la^ +||compteur.websiteout.net^ +||da-kolkoz.com/da-top/track/ +||devtribu.fr/t.php? +||dsj4qf77pyncykf2dki6isfcuy0orwhc.lambda-url.eu-west-1.on.aws^ +||e-pagerank.fr/bouton.gif?$third-party +||e.viously.com^ +||early-birds.fr/events/ +||easydmp.net/collect_ +||easydmp.net/etag. +||easydmp.net/get_delivery_data. +||email-reflex.com^$third-party +||events.newsroom.bi^ +||events.sk.ht^ +||free.fr/services/compteur_page.php? +||high-cdn.com/log.php? +||houston.advgo.net^ +||humanoid.fr/register-impression? +||i-services.net^*/compteur.php? +||img-static.com/CERISE.gif? +||ip7prksb2muxvmmh25t6rxl2te0tfulc.lambda-url.eu-west-1.on.aws^ +||jvc.gg^*/traffic.js +||kaminoretail.io/tracking/ +||leguide.com/js/lgtrk-*.js +||linguee.fr/white_pixel.gif +||m6web.fr/statsd/ +||marktplaats.net/identity/mid.js +||neteventsmedia.be/hit.cfm? +||netreviews.eu/index.php?action=act_access&$third-party +||nws.naltis.com^ +||offer.slgnt.eu^ +||optinproject.com/rt/visit/ +||osd.oxygem.it^ +||p.a2d.io/plx.js +||pagesjaunes.fr/stat/ +||piximedia.com^$third-party +||qiota.com/api/event +||rs.smc.tf^ +||scriptsgratuits.com/sg/stats/ +||service-webmaster.fr/cpt-visites/$third-party +||socialrank.fr/client/$third-party +||static-od.com/setup/$third-party +||stats-dc1.frz.io^ +||stats-factory.digitregroup.io^ +||stats.ipmgroup.be^ +||stats.macg.io^ +||stats.tipser.com^ +||t.360.audion.fm^ +||t.ofsys.com^ +||tag.agrvt.com^ +||tag.goldenbees.fr^ +||tag.leadplace.fr^ +||tim.nextinpact.com^ +||track.byzon.swelen.net^$third-party +||track.kyoads.com^ +||track.laredoute.fr^$image +||track.myli.io^ +||tracker-dot-dfty-optimeeze-leroymerlinfr.appspot.com^ +||tracking.ecookie.fr^ +||tracking.kdata.fr^ +||tracking.lqm.io^ +||tracking.netvigie.com^ +||tracking.voxeus.com^ +||trjs.mediafin.be/loader/trmfn-loader.js +||trk.a-dsp.com^ +||trk.adbutter.net^ +||tsphone.biz/pixelvoleur.jpg? +||veoxa.com/get_trackingcode. +||vidazoo.com/report/? +||viously.com^*/mt? +||visitping.rossel.be^ +||webreseau.com/impression.asp? +||webtutoriaux.com/services/compteur-visiteurs/index.php?$third-party +||wifeo.com/compteurs/$third-party +||woopic.com/Magic/o_vr.js +||wrapper.lemde.fr^$third-party +||ws3.smartp.com^ +||zebestof.com^$third-party +! Belarusian +||minsk-in.net/counter.php? +! Croatian +||aff*.kolektiva.net^ +||freshatl.azurewebsites.net^ +! Chinese +-logging.nextmedia.com^ +||120.132.57.41/pjk/pag/ys.php +||163.com/sn.gif? +||3.cn/cesu/r? +||360.cn/mapping_service? +||4gtv.tv/js/ga_ +||66hao.cc^ +||adv-sv-stat.focus.cn^ +||aixifan.com/acsdk/log.min.js? +||aizhantj.com*/tjpv/?cc= +||alicdn.com/tkapi/click.js +||alimama.cn/inf.js +||alipay.com/common/um/lsa.swf +||analytics.meituan.net^ +||atanx.alicdn.com^ +||atom-log.3.cn^ +||baidu.com/cpro/ui/c.js +||baidu.com/cpro/ui/f.js +||baidu.com/h.js? +||baidu.com/hm.gif? +||baidu.com/js/m.js +||baidu.com/js/o.js +||baidu.com/x.js? +||beacon.sina.com.cn^ +||beaconcdn.qq.com^ +||bokecc.com/flash/playlog? +||bokecc.com/flash/timerecorder? +||busuanzi.ibruce.info^$third-party +||bzclk.baidu.com^ +||c.holmesmind.com^ +||cartx.cloud^ +||cbsi.com.cn/js/dw.js +||cdnmaster.com/sitemaster/sm360.js +||chuzushijian.cn/c.php +||click.bokecc.com^ +||click.taobao.com^$script +||cms.grandcloud.cn^$third-party +||cnzz.com/c.php? +||collector2c.zhihuishu.com^ +||counter.pixplug.in^$third-party +||cpro.baidustatic.com^$script,domain=sohu.com +||cri.cn/js/a1.js +||csdn.net^*/counter.js +||d17m68fovwmgxj.cloudfront.net^ +||da.netease.com^ +||datacollector-dra.dt.hicloud.com^ +||dcbpm.suning.cn^ +||dsp-track-global.zmaticoo.com^ +||dt.xfyun.cn^ +||dup.baidustatic.com^ +||eclick.baidu.com^ +||etwun.com:8080/counter.php? +||event.tagtoo.co^ +||experiments.sparanoid.net^ +||fourier.taobao.com^ +||g.yccdn.com^ +||gdt.qq.com^ +||gias.jd.com/js/td.js +||hacx60.com^ +||haostat.qihoo.com^ +||hudong.com/flux.js +||hyrankhit.meldingcloud.com^ +||ia.51.la^ +||ifengimg.com/sta_collection.*.js +||imp.ad-plus.cn^ +||imp.go.sohu.com^ +||imp.optaim.com^ +||iqiyi.com/pixel? +||itc.cn/pv/ +||ixigua.com/at/log/ +||js.letvcdn.com/js/*/stats/ +||js.static.m1905.cn/pingd.js +||log-api.cli.im^ +||log.hiiir.com^ +||log.qvb.qcloud.com^ +||log.tagtic.cn^ +||mcs.zijieapi.com^ +||mon.zijieapi.com^ +||msg.71.am^ +||netease.com/track/ +||netease.com/web/performance? +||nos.netease.com/udc-web/*.log.js +||oocommapi2.aswatson.com/kf/*/tracking/ +||p.aty.sohu.com^ +||p.tencentmind.com^ +||pos.baidu.com^ +||pr.nss.netease.com^ +||pstatp.com^*/raven.js +||pstatp.com^*/ttstatistics. +||pv.hd.sohu.com^ +||pv.kuaizhan.com^ +||pv.sohu.com^ +||px.effirst.com^ +||qbox.me/vds.js +||qidian.qq.com/report/ +||qq.com/speed +||r.sax.sina.com.cn^ +||report.meituan.com^ +||s.cdin.me/i.php +||sitemaji.com/nownews.php? +||sobeycloud.com/Services/Stat. +||sohu.com/pvpb.gif? +||sohu.com/stat/ +||ssac.suning.com^ +||stargame.com/g.js +||stat.ws.126.net^ +||stats.hanmaker.com^ +||sugs.m.sm.cn^ +||t.hypers.com.cn^ +||t.rainide.com^ +||tagtoo.co/js/unitrack.js +||taobao.com/tracker. +||tce.alicdn.com^ +||tieszhu.com/e.html +||tns.simba.taobao.com^ +||tongjiniao.com^$third-party +||tr.n2.hk^ +||track.storm.mg^ +||track.tomwx.net^ +||track.unidata.ai^ +||tracker-00.qvb.qcloud.com^ +||tracking.cat898.com^ +||tracklog.58.com^ +||trail.71baomu.com^ +||ts-analysis.shoalter.com^ +||videostats.kakao.com^ +||w3t.cn^*/fx.js +||web-trace.ksapisrv.com^ +||webstat.qiumibao.com^ +||webtrack.pospal.cn^ +||wlog.kuaishou.com^ +||yigouw.com/c.js +! Croatian +||tracking.vid4u.org^ +! Czech +||1gr.cz/log/ +||a.centrum.cz^ +||bisko.mall.tv^ +||c.seznam.cz^ +||counter.cnw.cz^ +||h.imedia.cz^ +||h.seznam.cz/hit +||h.seznam.cz/js/dot-small.js$domain=~stream.cz +||hit.skrz.cz^ +||i.imedia.cz^ +||log.cpex.cz^ +||log.idnes.cz^ +||m.1gr.cz^ +||mer.stdout.cz^ +||pixel.biano.cz^ +||pixel.cpex.cz^ +||r2b2.cz/events.php? +||ssp.seznam.cz^ +||stat.cncenter.cz^ +||stat.kununu.cz^$third-party +||t.leady.com^ +||t.leady.cz^ +||track.leady.cz^ +||tracker-remp.active.radio^ +! Danish +||bbl.k.dk/tracking/ +||blogtoppen.dk^*/bt_tracker.js +||counter.nope.dk^$third-party +||log.ecgh.dk^ +||newbie.dk/topref.php? +||newbie.dk^*/counter.php? +||sslproxy.dk^*/analytics.js +||statistics.jfmedier.dk^ +||trckr.nordiskemedier.dk^ +||wee.dk/modules/$third-party +! Dutch +||adcalls.nl^$third-party +||adult-trade.nl/lo/track.php +||amazonaws.com/prod/v1/track$domain=ixxi.com +||analytics.belgacom.be^ +||analytics.hatech.dev^ +||analytics.newsifier.nl^ +||apm.tnet.nl^ +||bbvms.com/zone/js/zonestats.js +||bol.com/click/ +||botndm.nl^*/init.min.js +||cloudfunctions.net/webtraffic$domain=eurocampings.nl +||contentreveal.net/event/events.js +||ct.beslist.nl^ +||dmtgo.upc.biz^ +||falco.studio/api/track +||go.planetnine.com^ +||hottraffic.nl^$third-party +||marktplaats.net/cnt/ +||mediahuis.be/cxense/ +||mhtr.be/public/tr/tracker.min.js +||navigator-analytics.tweakwise.com^ +||npo.nl/divolte/tt/web-event?$domain=zapp.nl +||pijper.io/visits/ +||pxr.nl/v1/stats/ +||rmgdapfnccsharpprd.azurewebsites.net^ +||sp.dpgmedia.net^ +||stat.24liveplus.com^ +||statistics.rbi-nl.com^ +||tags.hilabel.nl^ +||tr.mediafin.be^ +||travix.com/metrics +||trjs2.mediafin.be^ +||trkr.shoppingminds.net^ +||ubt-sgp.travix.com^ +||ugent.be/js/log.js +! Estonian +! Finnish +||almamedia.fi^*/scroll-monitor.min.js +||ddl.alma.iltalehti.fi^ +||dnt-userreport.com^ +||er.sanoma-sndp.fi/stats/ +||er.sanoma-sndp.fi/v2/stats/ +||nelonenmedia.fi/logger/ +||tags.op-palvelut.fi^ +||vine.eu/track/ +! Georgian +||analytics.palitra.ge^ +||links.boom.ge^ +! Greek +||event-tracker-library.mediaownerscloud.com^ +||glami.gr/js/compiled/pt.js +||kwikmotion.com^*/videojs-kwikstat.min.js +||metrics.find.gr^ +||stats-real-clients.zentech.gr^ +! Hebrew +||callindex.co.il/campaign/send_analytics.js +||selectika.com/selectika-pixel.min.js +||tag.weezmo.com^ +||walla.co.il/stats/ +! Hungarian +||gpr.hu/pr.pr? +||heartbeat.pmd.444.hu^ +||pixel.barion.com^ +||rum.marquardmedia.hu^ +||videostat-new.index.hu^ +||videostat.index.hu^ +! Icelandic +! Indian +||api.tblcontent.com*/log/ +||indiatimes.com/pixel? +||tvid.in/log/ +! Indonesian +||beacon.coofis.com^ +||gopay.sh/collect +||mediagroupnetwork.com/js/ua.js +||mediaquark.com/tracker.js +||oval.id/tracker/ +||parsley.detik.com^ +||tracker.oval.id^ +||un.kumparan.com^ +! Italian +||alice.it/cnt/ +||analytics.competitoor.com^ +||analytics.eikondigital.it^ +||analytics.gtechgroup.it^ +||analytics00.meride.tv^ +||analytics2-3-meride-tv.akamaized.net^ +||analytics2-meride-tv.akamaized.net^ +||api.rivpoint.com/*/event/ +||aruba.it/servlet/counterserver? +||audit.shaa.it^ +||bemail.it^*/analytics.js +||blasterzone.it/analytics/ +||cdn.brevo.com/js/sdk-loader.js +||click.kataweb.it^ +||cnt.iol.it^ +||collector-ovp.streamcloud.it^ +||digiland.it/count.cgi? +||diritalia.com^*/seosensor.js +||dmp.citynews.ovh^ +||dmpcdn.el-mundo.net^ +||dmpmetrics.rcsmetrics.it^ +||eage.it/count2.php? +||eventsink.api.redbee.live^ +||evnt.iol.it^ +||fa5.dn4.it^ +||fb_servpub-a.akamaihd.net^ +||galada.it/omnitag/ +||gazzettaobjects.it^*/tracking/ +||glomera.com/stats +||gmdigital.it/vtrack-staging.js +||heatmaps.lcisoft.it^ +||heymatic.com^$third-party +||httdev.it/e/c? +||iltrovatore.it/vp.htm +||iol.it^*/clickserver.js +||iolam.it/service/trk +||iolam.it/trk +||italiaonline.it/script/ga. +||italiaonline.it/script/iol-body.js +||limone.iltrovatore.it^ +||livestats.matrix.it^ +||load.nootiz.com^ +||log.edidomus.it^ +||logger.kataweb.it^ +||mibatech.com/track/ +||mrwebmaster.it/work/stats.php? +||nanopress.it/lab.js +||nanostats.nanopress.it^ +||net-parade.it/tracker/ +||plausible.citynews.ovh^ +||plug.it/tracks/ +||plug.it^*/iol_evnt. +||plug.it^*/iol_evnt_ +||plug.it^*/track_ +||plug.it^*/tracking_ +||rbdata.boostymark.com^ +||rcsobjects.it/rcs_tracking-service/v1/distro/HTML/trservice.shtml +||rd.alice.it^ +||redbee.serverside.ai^$image +||sembox.it/js/sembox-tracking.js +||stat.acca.it^ +||stat.valica.it^ +||stats.itsol.it^ +||stats.rcsobjects.it^ +||stats2.*.fdnames.com^ +||tag.triboomedia.it^ +||tourmake.it^*/stat/ +||tourmake.it^*/stats? +||tps.trovaprezzi.it^ +||tr.brand-fresh.it^ +||tr.bt.matrixspa.it^ +||track.cedsdigital.it^ +||track.eadv.it^ +||track.veedio.it^ +||track.youniversalmedia.com^ +||tracker.bestshopping.com^ +||tracker.iltrovatore.it^ +||tracker.thinkermail.com^ +||tracking.trovaprezzi.it^ +||tracks.arubamediamarketing.it^ +||triboomedia.it^*/Bootstrap.js +||usage.centsdonations.com^ +||videomatictv.com/imps/ +||vppst.iltrovatore.it^ +||webbificio.com/add.asp? +||webbificio.com/wm.asp? +||websolutions.it/statistiche/ +||wmtools.it/wmtcounter.php? +||wopweb.net/services/counters/ +! Japanese +||199.116.177.156^$domain=~fc2.jp.ip +||a.flux.jp/analytics.collect.v1.CollectService/Collect +||a.o2u.jp^ +||ac.prism-world.jp.net^ +||acclog001.shop-pro.jp^ +||acclog002.shop-pro.jp^ +||actagtracker.jp/tag +||ad.daum.net^ +||admin.blog.fc2.com/dctanalyzer.php +||affiliate.rakuten.co.jp^$script,third-party +||amazonaws.com/default/tracking?url= +||analytics-beacon.p.uliza.jp^ +||analytics-collect.karakuri.ai^ +||analytics.contents.by-fw.jp^ +||analytics.liveact.cri-mw.jp^ +||analytics.livesense.marketing^ +||analytics.partcommunity.com^ +||analytics.spearly.com^ +||api.all-internet.jp^$third-party +||api.popin.cc/conversion2.js +||api.quantumgraph.com/web/cm/ +||app.tag-plus.com/ja/api/v1/unison_planet/heat_map +||appront.net/click.js +||asia-northeast1-co-comix.cloudfunctions.net/trackView +||asumi.shinobi.jp^ +||b.clipkit.co^ +||b.sli-spark.com^ +||b0.yahoo.co.jp^ +||bance.jp/bnctag.js +||bidder.mediams.mb.softbank.jp^ +||blogroll.livedoor.net/img/blank.gif? +||blozoo.info/js/ranktool/ +||blozoo.info/js/reversetool/ +||bridge-ashiato.appspot.com/beacon/ +||bs.nakanohito.jp^ +||buzzurl.jp/api/counter/ +||bvr.ast.snva.jp^ +||bvr.snva.jp^ +||c-rings.net^$script,third-party +||cdn.jp1media.com/js/v1/dmp.min.js +||client-log.karte.io^ +||clipkit.co/clipkit_assets/beacon- +||cloudfunctions.net/trackEvent +||cnobi.jp^*/js/imp. +||cnt.mail.netbk.co.jp^$image +||codemarketing.cloud/rest/ +||collector.t-idr.com^ +||cookie.sync.usonar.jp^ +||counter1.fc2.com^$third-party +||counter2.blog.livedoor.com^$image +||crossees.com^ +||cs.nakanohito.jp^ +||cv-tracker.stanby.com^ +||delivery.satr.jp/event/ +||docomo.ne.jp/scripts/retargeting/retargeting.js +||estore.jp/beacon/ +||ev.tpocdm.com^ +||flux-cdn.com/client/ukiuki/flux_wikiwiki_AS_TM_AT.min.js +||future-shop.jp/rview.gif? +||gacraft.jp/publish/token.html +||hatmiso.net^$third-party +||insight-x.tech/trackerlog-publisher-service/tracker-logs +||ip2c.landscape.co.jp^ +||ipcheck.blogsys.jp^ +||jal.co.jp/common_rn/img/rtam.gif +||jal.co.jp/common_rn/js/rtam.js +||js.dsp.bance.jp/bncdmp.js +||karte.io/libs/tracker. +||karte.io/mirror-record/ +||karte.io/rewrite-log/ +||kccsrecommend.site/torimochi_log/ +||kitchen.juicer.cc^ +||l-tike.com/akam/$script +||lcs.comico.jp^$image +||line-scdn.net^*/line_tag/ +||line.me/tag.gif$image +||livedoor.com/counter/ +||log.codemarketing.cloud^ +||log.f-tra.com^ +||log.gs3.goo.ne.jp^ +||log.popin.cc^ +||log000.goo.ne.jp^ +||logger.torimochi-ad.net^ +||logs.chatboost-cv.algoage.co.jp^ +||macromill.com/imp/ +||mail-count.matsui.co.jp^ +||mofa.go.jp^*/count.cgi? +||monipla.com/launch.js +||moshimo.com^*/impression? +||navismithapis-cdn.com/js/tracking.js +||nlab.itmedia.co.jp/scripts/cx.js +||ocn-tag.sienca.jp/api/v1/event/pv +||omt.shinobi.jp^ +||otoshiana.com/ufo/ +||panda.kasika.io^ +||pia.jp/akam/$script +||pia.jp/images/pt.gif$image +||ping.paidy.com^ +||popin.cc/iframe/piuid.html +||popin.cc/js/pixel.js +||popin.cc/PopinService/Logs/ +||popin.cc/retarget/ +||popin.cc/test/popin_img_m.js +||popin.cc/test/popin_send_cookie_set_fail.js +||pushd.netky.tech^ +||quant.jp/track/ +||rakuten-static.com/com/rat/ +||rasin.tech/heatmap- +||rasin.tech/scroll-logs/ +||rcm.shinobi.jp^ +||rd.rakuten.co.jp^$script +||re-volver.net/visitor/ +||receptions.smart-bdash.com/receptions/action/click +||reports-tsi.tangerine.io^ +||reproio.com^$third-party +||resultspage.com/js/sli-spark.js +||rlog.popin.cc^ +||rtg-adroute.focas.jp^ +||s.dc-tag.jp^ +||s.yimg.jp/images/listing/tool/cv/ytag.js +||sales-crowd.jp/js/sc-web-access-analysis.js +||sankei-digital.co.jp/log? +||sankei.co.jp/js/privacy/sando.js +||sc.g-cdn.net/tracker-i/main.js +||sc.g-cdn.net/tracker/gsms.js +||script.mixi.net/static/js/build/mixi-analysis-.production.js +||seesaa.jp/ot_square.pl? +||shinobi.jp/track? +||shinobi.jp/zen? +||site24x7rum.jp/beacon/ +||sitest.jp/tracking/ +||skygate.co.jp/baselog/ +||smaero.jp/js/access.js +||smart-bdash.com/receptions/action/impression +||smart-bdash.com/tracking-script/ +||snva.jp/api/bcon/basic? +||snva.jp/javascripts/reco/ +||sp-trk.com^$third-party +||special.janbari.com/a/js/a.js +||speee-ad.akamaized.net^ +||spnx.jp/spnx-logger.js +||stats.streamhub.io^ +||stlog.d.dmkt-sp.jp^ +||stlog.dmarket.docomo.ne.jp^ +||storage.googleapis.com/rasin/*/hm.js +||sts.marketingsuite.jp^ +||sweet-candy.jp/c.php?$third-party +||sync.shinobi.jp^ +||sysmon.kakaku.com^ +||t.adclr.jp^ +||t.adlpo.com^ +||t.blog.livedoor.jp^ +||t.felmat.net^$third-party +||t.seesaa.net^ +||tag.cribnotes.jp^ +||tag.eisa.mercari.com^ +||tag.flvcdn.net/lytag.js +||targeting.focas.jp^ +||tetori-colorme.com/share/js/tracking.js +||tm.msgs.jp^ +||tr.c-tag.net^ +||tr.dec-connect.decsuite.com^ +||tr.slvrbullet.com^ +||tr.ssp.bance.jp^ +||trace.bluemonkey.jp^ +||track.list-finder.jp^ +||track.span-smt.jp^ +||track.thebase.in^ +||tracker-rec.smart-bdash.com^ +||tracker.520call.me^ +||tracker.durasite.net^ +||tracker.shanon-services.com^ +||tracker.smartseminar.jp^ +||trk.fensi.plus^ +||tver-metrics.streaks.jp^ +||uh.nakanohito.jp^ +||ukw.jp/taglog/ +||userdive.com^$third-party +||x.t-idr.com/api/v1/identify +||x9.shinobi.jp^ +||yahoo.co.jp/js/retargeting.js +! Korean +||acelogger.heraldcorp.com^ +||ad.aceplanet.co.kr^ +||adlc-exchange.toast.com^ +||applog.ssgdfs.com^ +||assets.datarize.ai^ +||cafe24.com/cfa.js +||cafe24.com/weblog.js +||cm-exchange.toast.com^ +||dadispapi.gmarket.co.kr^ +||dco.coupang.com^ +||dtr-onsite-feed.datarize.ai^ +||event.hackle.io^ +||log.adplex.co.kr^ +||log.cizion.com^ +||log.mofa.go.kr^ +||log.pipeline.datarize.io^ +||log.targetpush.co.kr^ +||logger.bzu.kr^ +||logs-partners.coupang.com^ +||megadata.co.kr^ +||montelena.auction.co.kr^ +||mtag.mman.kr^ +||naver.com/mcollector/ +||ngc1.nsm-corp.com^ +||performanceplay.co.kr^ +||realtime-profiling.datarize.ai^ +||recobell.io/rest/logs? +||saluton.cizion.com^ +||sas.nsm-corp.com^ +||skplanet.com/pixel? +||skplanet.com/pixelb? +||t1.daumcdn.net/*/static/kp.js +||teralog.techhub.co.kr^ +||tracker.adbinead.com^ +||tracker.digitalcamp.co.kr^ +||tracking.adweb.co.kr^$third-party +||utsgw.auction.co.kr^ +! Latvian +||counter.hackers.lv^ +||pmo.ee/stats/ +||salidzini.lv^*/logo_button.gif?$third-party +! Lithuanian +! Norwegian +||cis.schibsted.com^ +||collect.adplogger.no^ +||ish.tumedia.no^ +||log.medietall.no^ +! Persian +||1abzar.ir/abzar/tools/stat/ +||webgozar.com/c.aspx*&t=counter +||webgozar.ir/c.aspx*&t=counter +! Polish +||analytics.ceneo.pl^ +||analytics.greensender.pl^$third-party +||ar1.aza.io^ +||ave-caesar-mas.modivo.io^ +||cafenews.pl/mpl/static/static.js? +||cmp.dreamlab.pl^ +||cpu-api.infor.pl^ +||dsg.interia.pl^ +||hit.interia.pl^ +||hypemarketing.pl/cdn/fhmm-tracker.js +||liczniki.org/hit.php +||liquid.agora.pl^ +||pixel.homebook.pl^ +||pixel6.wp.pl^ +||ppstatic.pl^*/track.js +||px.wp.pl^ +||scontent.services.tvn.pl^ +||snrbox.com/tck/ +||stats.asp24.pl^ +||stats.media.onet.pl^ +||stats.ulixes.pl^ +||statystyki.panelek.com^ +||tp.convertiser.com^ +||tracking.novem.pl^ +||trc.gpcdn.pl^ +||youlead.pl/st?browserid +! Portuguese +||7gra.us/path-tracker-js/ +||ad-tracker-api.luizalabs.com^ +||ads-collector.luizalabs.com^ +||analytics-coletor-site.ojc.com.br^ +||analytics-stamp.confi.com.vc^ +||analytics.spun.com.br^ +||analytics.tufos.com.br^ +||arena.im/v2/collect +||b2w.io/event/ +||biggylabs.com.br/track-api/v2/track/site? +||cdn.pmweb.com.br/df/tag.js +||collect.chaordicsystems.com^ +||events.chaordicsystems.com^ +||eventsourcing.ms.harmo.me^ +||feature-flag-edge.live.clickbus.net^ +||gke.econodata.com.br^ +||hitserver.ibope.com.br^ +||housecrm.com.br/track/ +||jsuol.com/rm/clicklogger_ +||leadster.com.br/api/chatbot/events +||linximpulse.net/impulse/ +||lurker.olx.com.br^ +||melhorplano.net/scripts/tracker/ +||nctrk.abmail.com.br^ +||ndmais.com.br/tracking-parceiros-ndmais/ +||netdeal.com.br/open/event/ +||neurotrack.neurolake.io^ +||pageviews.tray.com.br^ +||pixel.leadlovers.app^ +||sat.soluall.net^ +||scripts.dadata.com.br^ +||segmentor.snowfox-ai.com^ +||statig.com.br/pub/setCookie.js? +||statistic.audima.co^ +||stats.gridmidia.com.br^ +||sycamore.com.br/pixel/ +||tags.cmp.tail.digital^ +||tags.premiumads.com.br^ +||terra.com.br/metrics/ +||tiktok.tray.com.br^ +||track.noddus.com^ +||track.zapimoveis.com.br^ +||tracker.tolvnow.com^ +||trrsf.com.br/metrics/ +||visit-prod-us.occa.ocs.oraclecloud.com^ +||web-ivcbrasil-tag.s3.us-west-2.amazonaws.com^ +||webstats.sapo.pt^ +||xl.pt/api/stats.ashx? +! Romanian +||7w.ro/js/trk.js +||enginey.altex.ro/events/ +||onnetwork.tv/cnt/ +||pixel.biano.ro^ +||profiling.avandor.com^ +||top.skyzone.ro^ +||views.cancan.ro^ +||vlogs.deja.media^ +! Russian +|http://a.pr-cy.ru^$third-party +|https://a.pr-cy.ru^$third-party +||1l-hit.mail.ru^ +||ad.mail.ru^$image,~third-party +||agates.ru/counters/ +||all-top.ru/cgi-bin/topcount.cgi? +||anycent.com/analytics/ +||api.vp.rambler.ru/events/ +||api2.ma.ru/analytics.js +||awaps.yandex.ru^ +||banstat.nadavi.net^ +||bigday.ru/counter.php? +||bitcdp.ru/tracker/ +||bitrix.info/bx_stat +||browser-updater.yandex.net^ +||c.bigmir.net^ +||cdn-rum.ngenix.net^ +||clickstream.sberbank.ru^ +||client-analytics.mts.ru^ +||cnstats.cdev.eu^ +||cnt.logoslovo.ru^ +||cnt.nov.ru^ +||cnt.rambler.ru^ +||cnt.rate.ru^ +||count.yandeg.ru^ +||counter.insales.ru^ +||counter.megaindex.ru^ +||counter.photopulse.ru^ +||counter.pr-cy.ru^ +||counter.reddigital.ru^ +||counter.smotrim.ru^ +||crm-analytics.imweb.ru^ +||csp.yandex.net^ +||d.wi-fi.ru^ +||dbex-tracker-v2.driveback.ru^ +||dp.ru/counter.gif? +||dspgate.ru/pixel? +||error.videonow.ru^ +||events.auth.gid.ru^ +||events.plus.yandex.net^ +||g4p.redtram.com^ +||ga-tracker-dot-detmir-bonus.appspot.com^ +||gainings.biz/counter.php? +||gde.ru/isapi/tracker.dll? +||hubrus.com^$third-party +||ifolder.ru/stat/? +||imgsmail.ru/gstat? +||ip.up66.ru^ +||izhevskinfo.ru/count/ +||k50.ru/tracker/ +||karelia.info/counter/ +||kaspersky-labs.com/cld_track? +||kraken.rambler.ru^ +||kvartirant.ru/counter.php? +||leadplan.ru/api/pageview/ +||leadplan.ru/api/session/ +||leadplan.ru/api/visitor/ +||likemore-go.imgsmail.ru^$image +||linestudio.ru/counter/ +||logs.adplay.ru^ +||logs.viavideo.digital^ +||mail.ru/cm.gif? +||mango-office.ru/calltracking/ +||mango-office.ru/track/ +||mediaplus.fm/cntr.php? +||metka.ru/counter/ +||metrics.aviasales.ru^ +||mymetal.ru/counter/ +||myrealty.su/counter/ +||niknok.ru/count.asp? +||open.ua/stat/ +||penza-online.ru^*/userstats.pl? +||pinnacle.com/ru/?btag= +||piper.amocrm.ru^ +||pixel-storage.konnektu.ru^ +||prime.rambler.ru^$~script +||programmatica.com^$third-party +||promworld.ru^*/counter.php? +||properm.ru/top/counter_new.php? +||r.mail.ru^$image +||rambler.ru/counter.js +||redtram.com/px/ +||retailrocket.ru/content/javascript/tracking.js +||ria.ru/flv/livestat.aspx? +||s.agava.ru^ +||s.holm.ru/stat/ +||scnt.rambler.ru^ +||scounter.rambler.ru^ +||sepyra.com^$third-party +||sishik.ru/counter.php? +||sov.stream^$third-party +||sp.aviasales.com^ +||sp.aviasales.ru^ +||st.hbrd.io^ +||stainlesssteel.ru/counter.php? +||stat.eagleplatform.com^ +||stat.fly.codes^ +||stat.rum.cdnvideo.ru^ +||stat.sputnik.ru^ +||stat.tvigle.ru^ +||statistics.fppressa.ru^ +||stats-*.p2pnow.ru^ +||stats.tazeros.com^ +||stats2.videonow.ru^ +||subscribe.ru/1.gif/$image +||t1.trex.media^ +||tags.soloway.ru^ +||target.mirtesen.ru^ +||target.smi2.net^ +||target.smi2.ru^ +||tbe.tom.ru^ +||telemetry.jivosite.com^ +||test.legitcode.ws^ +||tms-st.cdn.ngenix.net^ +||tms.dmp.wi-fi.ru^ +||top.elec.ru^ +||tracker.comagic.ru^ +||tracking.gpm-rtv.ru^ +||tracking.retailrocket.net^ +||traktor.ru^*/counter.php? +||uc.xddi.ru^ +||ulogin.ru/js/stats.js +||umnico.com/tracker/ +||upstats.yadro.ru^ +||uptolike.com/widgets/*/imp? +||visitor-microservice.ext.p-a.im^ +||visor.sberbank.ru^ +||webtrack.biz^$third-party +||wl-analytics.tsp.li^ +||xn--e1aaipcdgnfsn.su^*/counter.php +||yandeg.ru/count/ +||yandex.net/expjs/latest/exp.js +||yandex.ru/metrika/ +||zahodi-ka.ru/ic/index_cnt.fcgi? +||zahodi-ka.ru^*/schet.cgi? +! Serbian +||contentexchange.me/static/tracker.js +||hits.tf.rs^ +||moa.mediaoutcast.com^ +||w4m.rs/tracker.js +! Slovak +||engerio.sk/api/v1/listener/ +||stat.ringier.sk^ +||tipsport.sk/c/1x1.php? +! Slovene +||cpx.smind.si^ +! Spanish +||1to1.bbva.com^ +||ab.blogs.es^ +||advgo.net/hits/ +||advgo.net/mushroom/ +||analitica.webrpp.com^ +||analytics.lasegunda.ecn.cl^ +||analytics.mercadolibre.com^ +||analytics.neoogilvy.uy^ +||bitmovin.com/analytics/web/2/bitmovinanalytics.min.js$domain=mxplus.tv +||bpt.webedia-group.com^ +||citiservi.es/adstrack? +||collector-videoplayer.5centscdn.net^ +||collector.dgnet.ltd.uk^ +||contador.biobiochile.cl^ +||contadores.miarroba.com^ +||contadores.miarroba.es^ +||count.sibbo.net^ +||creatives.sunmedia.tv^ +||ctx.citiservi.es^ +||datanoticias.prisasd.com^ +||digitalproserver.com/mango-web-metrics/ +||edisound.com/api/p/medias/stats +||enetres.net/StatisticsV1/ +||epimg.net/js/vr/vrs. +||g-stats.openhost.es^ +||groupbycloud.com/wisdom/v2/pixel +||llmometrics.b-cdn.net^ +||madrid.report.botm.transparentedge.io^ +||marker.konograma.com^ +||mat.socy.es^ +||mdstrm.com/js/lib/streammetrics.js +||met.seriesapi.co^ +||mtm.qdqmedia.com +||pub.servidoresge.com^ +||recogerconsentimiento.com/consent/ +||rt.cdnmedia.tv^ +||s3wfg.com/js/vortexloader.js +||segment.lalr.co^ +||smarte.rs/log +||sp.vtex.com^ +||stats.administrarweb.es^ +||stats.miarroba.info^ +||stats.qdq.com^ +||stats.sec.telefonica.com^ +||tag.shopping-feed.com^ +||track.sunmedia.tv^ +||track.tappx.com^ +||tracker.thinkindot.com^ +||tracking.smartmeapp.com^ +||tracking.univtec.com^ +||trsbf.com/static/fbs.min.js +||unpkg.com/@topsort/analytics.js +||webpixel.smartmeapp.com^ +! Swedish +||aftonbladet.se/blogportal/view/statistics?$third-party +||collector.schibsted.io^ +||eniro.com/pixel/ +||evt-api.ntm.eu^ +||impression-tracker-service-5eimuebuhq-lz.a.run.app^ +||pji.nu/libs/pjpixel/ +||vizzit.se^$third-party +! Tajik +||pixel.smartmedia.tj^ +! Thai +||roibest-report-sdk.qiliangjia.com^ +||sal.isanook.com^ +||stat.matichon.co.th^ +||webpushstat.api.engagelab.cc^ +! Turkish +||0.myikas.com^ +||analitik.bik.gov.tr^ +||analytics.cdnstr.com^$third-party +||analytics.faprika.net^ +||analytics.kkb.com.tr^ +||analytics.qushad.com^ +||analytics.ticimax.cloud^ +||analytics.turk.pro^$third-party +||app.kulgacdn.com/js/script.js +||apps.ihlasdigitalassets.com/stats +||c.keltis.com^ +||core.dehapi.com/ip.php +||daioncdn.net/events? +||eticaret.pro/pixel/ +||hulyagedikci.com/vhit.php? +||iyzipay.com/buyer-protection/assets/js/analytics.js +||izinal.com/log +||kolayik.com/gjyo/ +||log.collectaction.com^ +||sayac.kapital.com.tr^ +||statistics.daktilo.com^ +||stats.vidyome.com^ +||track.livasoft.com.tr^ +||tracker.adcluster.com.tr^ +||traffic.wdc.center^ +||wa.wawlabs.com^ +||web.tv/analytics/ +! Ukranian +||informers.sinoptik.ua^ +||top.zp.ua/counter/ +||tracker.multisearch.io^ +||tracker.prom.ua^ +||webvitals.luxnet.ua^ +! Vietnamese +||accesstrade.vn/js/trackingtag/ +||analytics.yomedia.vn^ +||f-emc.ngsp.gov.vn^ +||fpt.shop/fa_tracking.js +||init.voz.party/info_hex.js +||px.dmp.zaloapp.com^ +||st-a.cdp.asia^ +||tracking.aita.gov.vn^ +||tracking3.vnncdn.net^ +||za.zalo.me^ +||za.zdn.vn^ +||zalo.me/v3/w/_zaf.gif +!-----------------Individual tracking systems-----------------! +! *** easylist:easyprivacy/easyprivacy_specific.txt *** +||1024tera.com/api/analytics? +||123rf.com/apicore-index/traffic_log +||1rer.hummel.net^ +||1win.com^$ping +||40svintageporn.com/hit +||4hds.com/js/camstats.js +||4kporn.xxx/static/analytics/ +||4shared.com/js/d1VisitsCounter.4min.js +||6pm.com/err.cgi? +||6pm.com/onload.cgi? +||6pm.com/track.cgi? +||9gag.com/event/ +||9gag.com/track/ +||a-da.invideo.io^ +||a-reporting.nytimes.com^ +||a.apkeditor.io^ +||a.boredpanda.bio^ +||a.electerious.com^ +||a.sputniknews.com/js/sputnik.js +||a.streamed.pk/js/script.js +||a.tellonym.me^ +||a10.nationalreview.com^ +||aa.avvo.com^ +||aa.com/aileron/api/log +||aawsat.com/pageview/ +||aax-eu-dub.amazon.com^$script +||aax-us-iad.amazon.com^$script +||ab-machine.forbes.com^ +||ab.fanatical.com^ +||about.me/track? +||abysscdn.com/cdn-cgi/trace +||academia.edu/record_hit? +||acast.com/api/stats +||accor.com/g/collect? +||accuterm.com/data/stat.js +||acronymfinder.com/~/tr.ashx +||actionviewphotography.com/api/stats? +||activate.latimes.com/pc/caltimes/?pulse2001= +||active.com/ig.track.js +||activity.fiverr.com^ +||adalytics.io/api/view +||adameve.com/emetrics/ +||adblockeronstape.me/stat/ +||adblockeronstreamtape.me/stat/ +||adblockeronstreamtape.xyz/stat/ +||adblockeronstrtape.xyz/stat/ +||adblockplustape.xyz/stat/ +||adblockstreamtape.art/stat/ +||adblockstreamtape.fr/stat/ +||adblockstreamtape.site/stat/ +||adblocktape.online/stat/ +||adblocktape.store/stat/ +||adblocktape.wiki/stat/ +||adc-js.nine.com.au^ +||adguard-dns.io/-/event/ +||adguard-dns.io/-/logs/ +||adguard-dns.io/-/metrics/ +||adguard.com/-/event/ +||adguardcheckout.com/-/event/ +||adguardcheckout.com/-/logs/ +||adguardcheckout.com/-/metrics/ +||adl.bankofthewest.com^ +||admin.microsoft.com/api/instrument/logclient +||adobe.io/system/log +||adobe.io/web/v1/metrics +||adtech-events.bookmyshow.com^ +||adv.drtuber.com^ +||advancedmp3players.co.uk/themes/basic/js/analytics.js +||advertisertape.com/stat/ +||advertising.amazon.dev/v1/ad-events/ +||adweek.com/wp-content/plugins/adw-parsley/ +||aegis.trovo.live^ +||aerlingus.com/ahktqsewxjhguuxe.js +||affiliate.kinguin.net^ +||agbi.com/kqmp6? +||agoda.net/v2/track +||aim.cloudflare.com/__log +||airgreenland.com/tracking/ +||airtable.com/internal/ +||airtel.in/analytics/pixel? +||aitotop.com^*/collect.js? +||aiv-delivery.net/Events/ +||aiv-delivery.net/v1/ReportEvent +||ajax.pngtree.com/api/statistics/ +||akamaihd.net/paay6hyr.gif? +||al.levels.fyi/api/event +||alb.reddit.com^ +||alicdn.com/AWSC/et/ +||aliexpress.com/ts? +||alipay.com/web/bi.do?ref= +||aljazeera.com/thirdparty/nr.js +||allaboutberlin.com/whoisthere.js +||allbbwcams.com/api/metrics +||allevents.in/actracker/ +||alljapanesepass.com/ascripts/gcu.js +||alljapanesepass.com/rstat +||allkeyshop.com/analytics/script.js +||als-svc.nytimes.com^ +||altruja.de/js/micro/integration-ga.js +||alwayslucky.com/platform/webvitals +||amazon.com/1/aiv-web-player/1/OE^ +||amazon.com/1/events/$domain=~aws.amazon.com +||amazon.com/e/xsp/imp? +||amazon.com/empty.gif?$image +||amazonaws.com/telemetry.bydata/ +||amboss.com/analytics/ +||americanexpress.com/beacon +||amethyst.6pm.com^ +||amethyst.zappos.com^ +||amiunique.org/analytics.js +||amnesty.org/collect/ +||amplitude.chess.com^ +||ampltd.medal.tv^ +||ampltd.top.gg^ +||ampltd2.medal.tv^ +||anal.baseserv.com^ +||anal.doubledouble.top^ +||analytics-api.dvdfab. +||analytics-batch.blitz.gg^ +||analytics-dataplane.invideo.io^ +||analytics-proxy.springboard.com^ +||analytics-server.arras.cx^ +||analytics-tracking.meetup.com^ +||analytics-wcms.joins.net^ +||analytics-zone-1.api.leadfamly.com^ +||analytics.3c5.com^ +||analytics.academy.com^ +||analytics.ahrefs.dev^ +||analytics.archive.org^ +||analytics.atom.com^ +||analytics.bitchute.com^ +||analytics.brave.com^ +||analytics.chase.com^ +||analytics.consumerrights.wiki^ +||analytics.cookiefirst.dev^ +||analytics.crazygames.com^ +||analytics.designspiration.com^ +||analytics.egdata.app^ +||analytics.eip.telegraph.co.uk^ +||analytics.eternagame.org^ +||analytics.faceitanalytics.com^ +||analytics.footballdb.com^ +||analytics.freemake.com^ +||analytics.gamesdrive.net^ +||analytics.getshogun.com^ +||analytics.global.sky.com^ +||analytics.hashnode.com^ +||analytics.inquisitr.com^ +||analytics.kaggle.io^ +||analytics.komiku.org^ +||analytics.kurocore.com^ +||analytics.makeitmeme.com^ +||analytics.maxroll.gg^ +||analytics.ml.homedepot.ca^ +||analytics.morphe.software^ +||analytics.mouthshut.com^ +||analytics.netralex.com^ +||analytics.nike.com^ +||analytics.ovh.com^ +||analytics.oyorooms.com^ +||analytics.passes.com^ +||analytics.pgncs.notion.so^ +||analytics.plex.tv^ +||analytics.productreview.com.au^ +||analytics.python.org^ +||analytics.qogita.com^ +||analytics.realestate.com.au^ +||analytics.shutterstock.com^ +||analytics.silktide.com^ +||analytics.slashdotmedia.com^ +||analytics.synchrony.com^ +||analytics.ticketmaster. +||analytics.tomato.gg^ +||analytics.tradedoubler.com^ +||analytics.vedantu.com^ +||analytics.vgtimes.com^ +||analytics.vinovo.si^ +||analytics.viture.dev^ +||analytics.vortexscans.com^ +||analytics.wavebox.io^ +||analytics.yugen.to^ +||analyticsapi.qogita.com^ +||ancestry.com/core.js +||androidfilehost.com/libs/otf/stats.otf.php? +||anon-stats.eff.org^ +||antiadtape.com/stat/ +||apartments.com/clientvisit/al.gif? +||apester.com/cookie/bundle.js +||api-hotmart-tracking-manager.hotmart.com^ +||api-js.mixpanel.com^ +||api-router.kaspersky-labs.com/logger2/metrics/ +||api-visitor-analytics.intercom.com^ +||api.audio.com/analytics/event +||api.channel.io/*/events +||api.doodle.com/data-layer/track +||api.ffm.to/sl/e/$image +||api.headliner.link/api/v1/b/receive +||api.invideo.io/v3/send_analytics_event +||api.meetup.com/pico/v4/web-events +||api.narrativ.com/favicon.ico +||api.samsungfind.com/log-collector +||api.streamelements.com/science/ +||api.takealot.com^$ping +||api.thefantazy.com/web-vitals +||api.tsc.ca/Tracking/v1/events/ +||api.vk.com/method/statEvents. +||api.x.com/live_pipeline/events? +||apigw.scmp.com/metrics/monitoring +||apigw.scmp.com/pwa-v2-unleash-proxy/proxy/client/metrics +||aplus.qwen.ai/aplus.monitor.log_arrival_rate +||apm.qwant.com^ +||app-bnkr.b-cdn.net/js/lv.js +||app.box.com/app-api/split-proxy/api/metrics +||app.box.com/gen204 +||app.gnosispay.com/relay-gp-ph/ +||app.nicealts.com/user/referral/visit +||appanalysis.banggood.com^ +||apple-mapkit.com/mw/v1/reportAnalytics +||aptoide-mmp.aptoide.com^ +||arena.ai/rpc/e/ +||arena.ai/rpc/i/v0/e/ +||argtesa.com/cdn-cgi/trace +||armedangels.com/javascript/script.js +||arttrk.com/pixel/ +||as.coinbase.com/metrics +||asanalytics.booking.com^ +||asb.co.nz/analytics/ +||asset.d5techs.com/script/track.min.js +||asset.d5techs.com/script/utm.min.js +||assets.engoo-static.com/tracking.js +||assets.prod.abebookscdn.com/cdn/com/scripts/abepixel-$domain=abebooks.com +||assets.s-bol.com/AppMeasurement- +||ats.alot.com^ +||att.com/scripts/adobe/prod/marketing.min.js +||audacy.com/data-events/ +||aulart.com/wp-admin/admin-ajax.php?data_send=pageView +||aurum.tirto.id^ +||auth.services.adobe.com/signin/v1/audit +||autotrader.com/*/pep?pixallId +||autotrader.com/pixall/ +||aviasales.*-analytics. +||aviasales.*/analytics_pv. +||aviasales.*/sentry-replay. +||avitop.com/aviation/hitlist.asp +||b2c-unleash-proxy.fresha.com^ +||b629.electronicdesign.com^ +||ba-bamail.com/handlers/stats.ashx +||backcountry.com/api/log +||backend.academy.cs.cmu.edu/api/v0/event/ +||baidu.com/static/h.gif +||baidu.com^*/mwb2.gif? +||baidu.com^*/wb.gif? +||banggood.com/collectBanner? +||banggood.com/collectException +||bangkokpost.com/hits/ +||barrons.com/cookies/pixel.gif +||barry-callebaut.com/pd.js +||bat.maydream.com^ +||bats.video.yahoo.com^ +||bc.nejm.org/script.js +||bcbits.com/bundle/bundle/1/analytics-$domain=bandcamp.com +||bcbits.com/bundle/bundle/1/impl-$domain=bandcamp.com +||beacon.dropbox.com^ +||beacon.samsclub.com^ +||beacon.shazam.com^ +||beacon.shutterfly.com^ +||beacon.walmart.com^ +||beacon.wikia-services.com^ +||beacons.ai/api/next_api/rta_v1/ +||beacons.digital.disneyadvertising.com^ +||bearblog.dev/hit/ +||beforeitsnews.com/core/ajax/counter/count.php^ +||behance.net/log +||behance.net/v2/logs +||beoecomapim.bang-olufsen.com^ +||bestpornsites.tv/i/js/extra/metrics.js +||bfp.capitalone.com^ +||bgro41vnmb.execute-api.us-east-2.amazonaws.com/production$domain=masterworks.com +||bhphotovideo.com/aperture/shared/js/dataLayer.js +||bi.banggood.com^ +||bicp-analytics.postscript.io^ +||bigw.com.au/api/event/ +||bigw.com.au/events/ +||bing.com/fd/ls/GLinkPing.aspx? +||bing.com/geolocation/write? +||bing.com/mouselog +||bing.com/notifications/render? +||bing.com/rewardsapp/reportActivity? +||binocule21c.merriam-webster.com^ +||bio.to/~/tr/ +||biomedcentral.com/track/ +||biosolutions.tv/audience-proxy/ +||bis.org/metrics/web.gif? +||bitchute.com/data/script.js +||bitwarden.com/plsbl/ +||blitz-analytics-batch-server.blitz.gg^ +||blockworks.co/_vercel/insights/ +||blue.nbc4i.com^ +||bmoharris.com/www/assets/analytics/loader.js +||boldin.com/rails/arrival +||bonprix.*/ajax/landmarks/ +||bonprix.*/ajax/marketing-parameters/ +||bookcabin.com/api/log-browser +||booking.com/c360/v1/track +||booking.com/collector/ +||booking.com/logo? +||booking.com/navigation_times +||booking.com/sendlayoutevents +||boomerang.dell.com^ +||bostonscally.com/api/collect +||box.com/data/ptm.gif/ +||box.com/index.php?rm=box_gen204_batch_record +||brightside.me/metric-collector +||browse-privately.net/event/ +||browsealoud.com/plus/scripts/$script +||browserling.com/api/stats-browsing +||bugsnag.shopbop.amazon.dev^ +||builder.io/api/v1/track +||buondua.com/hit/ +||butterfly-api.masterworks.com/v1/ +||butterly.com/node_modules/detect.js/detect.min.js +||buzzfeed.com/destination-sync.html +||bwapi.bikerumor.com^ +||bwbx.io/s3/javelin/public/hub/js/abba/$script,domain=bloomberg.co.jp|bloomberg.com +||byteoversea.com/monitor_web/ +||c.arstechnica.com^ +||c.fingerprint.com^ +||c.gq.com^ +||c.newyorker.com^ +||c.paypal.com^$image,script +||c.thredup.com^ +||c.vanityfair.com^ +||c.vogue.com^ +||c.wired.com^ +||c.wort-suche.com^ +||c.xbox.com^ +||c.ypcdn.com^$domain=yellowpages.com +||cactus.joybuy.com^ +||camgirls.casa/p.php +||cammodels.com/api/metrics +||campsaver.com/nelmio-js-logger/ +||cams.aebn.com/api/metrics +||camxpress.com/api/metrics +||canstockphoto.com/server.php?rqst=track +||canva.com/_ajax/ae/createBatch +||capital.com^$ping +||capitalone.com/collector/ +||cargurus.com/cars/cganalyticspageview.action +||cargurus.com/tr/ +||carsandbids.com/a/p +||cbc.ca/g/stats/ +||cc.cc/visit_log_ajax/visit_log_save_ajax.php? +||cdapi.collegedunia.com^ +||cdn.eaec.fpfis.tech.ec.europa.eu^ +||cdn.gov.cfigroup.com/webmon/s/source/webmon/$domain=weather.gov +||cdn.jsdelivr.net/gh/bmhtech07/adTorch/js/collect.min.js$script,domain=propanefitness.com +||cdn.jsdelivr.net/npm/@adshield/ +||cdn.reverso.net/rumjs/ +||cdp.howtotrade.com^ +||cdp.vercel.com/rs/ +||centerblog.net/stats.js +||cfparequest.pcpartpicker.com/api/event +||cgtn.com/api/collect/ +||ch3ngl0rd.com/hit/ +||change.org/api-proxy/-/bandit/pull +||change.org/api-proxy/-/et +||change.org/api-proxy/-/event_tracker +||channel.io/front/v*/channels/*/events +||chat.groq.com/global_stats +||chatfuel.com/cf-analytics/ +||chatroll.com/t.gif +||chewy.com/api/event/ +||chickadvisor.com/js/detect.min.js +||chloro.trip.com^ +||chronicle.medal.tv^ +||cidrap.umn.edu/core/modules/statistics +||cisco.com/c/dam/cdc/j/at.js +||civitai.com/api/page-view +||civitai.com/api/trpc/track.addView +||cl.canva.com^ +||cl.t3n.de^ +||clanker-events.squarespace.com^ +||clapper.life/update_deeplink_stats/ +||clapperapp.com/clpixgif? +||clarice.streema.com^ +||classdojo.com/logs/ +||classistatic.com^*/js/lib/prebid-7.5.0.min.js$script,domain=kijiji.ca +||claude.ai/sentry^ +||click.aliexpress.com^$image +||click.nudevista.com^ +||clickindia.com/cimem/ad-post-ajax.php?FormName=browsingHistory +||clickins.slixa.com^ +||client-errors.rebble.io/log-client-error +||client-log.box.com^ +||client-logs-a.wbx2.com^ +||client-metrics.chess.com^ +||clk-m.joybuy.com^ +||cloudconvert.com/build/assets/plausible-CoqwX5KR.js +||cloudflare.com/_cf/analytics.js +||cloudfront.net/tracker-latest.min.js +||cloudfront.net/vis_opt.js +||cloudfront.net/vis_opt_no_jquery.js +||cloudzilla.ai/ingest/ +||clp-mms.cloudpro.co.uk^ +||cm-mms.coachmag.co.uk^ +||cm.nordvpn.com^ +||cmp.vg.no^*/metrics/ +||cms-stats-view.vitrinabox.com^ +||cnt.hd21.com^ +||cnt.iceporn.com^ +||cnt.viptube.com^ +||cnt.vivatube.com^ +||cnt.xhamster.com^ +||codecademy.com/analytics/ +||codefa.st/js/script.js +||coincarp.com/cdn-cgi/trace +||coincarp.com/script/events.js +||coincheckup.com/report_events/ +||coincodex.com/cdn-cgi/trace +||cointelegraph.com/pixel? +||collect.air1.com^ +||collect.alipay.com^ +||collect.asics.com^ +||collect.banggood.com^ +||collect.deel.com^ +||collect.hollisterco.com^ +||collect.klove.com^ +||collect.reagroupdata.com.au^ +||collect.stepstone.co.uk^ +||collect.thunder-io.com^ +||collection.mola.tv^ +||collector-direct.xhamster.com^ +||collector-px0py5pczn.octopart.com^ +||collector.cint.com^ +||collector.feedzop.com^ +||collector.fiverr.com^ +||collector.github.com^ +||collector.githubapp.com^ +||collector.megaxh.com^ +||collector.pi.spectrum.net^ +||collector.quillbot.com^ +||collector.quizzop.com^ +||collector.spankbang.party^ +||collector.taoxh.life^ +||collector.theconversation.com^ +||collector.umogames.com^ +||collector.xhaccess.com^ +||collector.xhamster.com^ +||collector.xhamster.desi^ +||collector.xhamster2.com^ +||collector.xhamster3.com^ +||collector.xhamsterporno.mx^ +||collider.com/strpixel.png +||colvk.viki.io^ +||comms.bps.org.uk^ +||compare-static.flightconnections.com/tag.js +||confiant.msn.com^ +||configurator.ecom-mobile-samsung.com/api/logger +||connatix.com/scripts/$~third-party +||connatix.com/us/google/ +||connect.airfrance.com/ach/api/event^ +||connecteam.com/bi/api/ReportHit/ +||consent.api.osano.com/record +||consent.ghostery.com/v1.js +||consent.trustarc.com/bannermsg? +||consent.trustarc.com/noticemsg? +||console-telemetry.oci.oraclecloud.com^ +||console.deno.com/_fresh/js/*/Posthog.js +||consumer.org.nz/session/ping/ +||containers.appdomain.cloud/api/send-log$domain=ibm.com +||contentpass.net/error-tunnel +||contentpass.net/stats +||convert.guru/pageview^ +||cookpad.com/*/activity_logs +||copilot-telemetry.githubusercontent.com^ +||core-features.cambridge.org/proxy/client/metrics +||coros.com/traceapi +||count.all.biz^ +||count.darkreader.app^ +||count.rin.ru^ +||counter.darkreader.app^ +||coursehero.com/v1/data-tracking +||coursera.org/eventing +||cpb.esprit.*/91405.js +||cpt.itv.com^ +||creately.com/static/js/creately-analytics- +||creator-spring.com/ngjj/ +||crta.metro.co.uk^ +||crumbs.robinhood.com^ +||crunchyroll.com/tracker? +||cryo.socialblade.com^ +||csp.godaddy.com^ +||cstats.sankakucomplex.com^ +||cultofmac.com/djrxqhzkbsgf.js +||cursor.com/analytics/ +||cvs.com/tnadstlinj.js +||cwt.citywire.info^ +||cxgpt1.goindigo.in/forward/v2/track +||d.analyticsmania.com^ +||d.skk.moe^ +||d401.dollartree.com^ +||d712.theinformation.com^ +||dabu.askmediagroup.com^ +||dailymail.co.uk/geo/ +||dailymail.co.uk/rta2/ +||dailymotion.com/logger/ +||dap.digitalgov.gov/Universal-Federated-Analytics-Min.js +||dap.hindustantimes.com^ +||darkreader.org/elements/statistics.js +||data.allstate.com^ +||data.api.canalplus.com/event +||data.barry-callebaut.com^ +||data.cheatography.com/banana.js +||data.debugbear.com^ +||data.guide.photobucket.com^ +||data.jerkmate.com^ +||data.torry.io^ +||data.ublock-browser.com^ +||data.vevor.com^ +||data.younow.com^ +||datadoghq.com/api/v2/rum +||datadoghq.com/assets/dd-browser-logs-rum.js +||datadome.maisonsdumonde.com^ +||datafa.st/js/script.js +||datayze.com/callback/record_visit? +||datum.jsdelivr.com^ +||dc.banggood.com^ +||dcf.espn.com/privacy/ +||dd.auspost.com.au^ +||dd.g2.com^ +||dd.nytimes.com^ +||dd.qwant.com^ +||dd.viator.com^ +||ddome-tag.blablacar.com^ +||dealdash.com/tracker-json +||dealnews.com/lw/ul.php +||deepl.com/web/statistics +||deezer.com/ajax/gw-light.php?method=triton.pixelTracking& +||deliveroo.com^*/events +||deliveryrank.com/drapp070eb2deb1932e2101e6.js +||delta.com/datacollect +||deno.com/i/ +||deovr.com/api_logs/ +||desmos.com/analytics/js/ +||dev.to/fallback_activity_recorder +||developer.mozilla.org/submit/ +||developers.miro.com/pageview +||df.infra.shopee. +||df.infra.sz.shopee. +||dhl.com/g8Dj6P8TAg/ +||dhresource.com/dhs/fob/js/common/track/$domain=dhgate.com +||diabrowser.com/api/event +||diabrowser.com/js/arcnet-script.js +||digital.flytedesk.com/js/head.js +||discover-metrics.cloud.seek.com.au^ +||discover.hubpages.com/.bootscripts/analytics.min.js +||discover.hubpages.com/.bootscripts/hubPagesViewDurationTracker.min.js +||dls-account.di.atlas.samsung.com^ +||dmtgvn.com/wrapper/js/common-engine.js$domain=rt.com +||docs.github.com/events +||dollartree.com/ccstoreui/*/analytics/ +||domainit.com/scripts/track.js +||domaintools.com/buffer.pgif? +||dominos.co.uk/qRgAwS/ +||dotesports.com/sp.js +||dp.shoprunner.com^ +||dribbble.com/client_app/events +||dribbble.com/client_app/screenshot_boost_ad_events +||dribbble.com/client_app/search_results +||dribbble.com/shots/log_views +||drop.com/impressionsBeacon +||drop.com/statBeacon +||dropbox.com/2/client_metrics +||dropbox.com/2/pap_event_logging +||dropbox.com/2/udcl/log_timing +||dropbox.com/alternate_ +||dropbox.com/jse +||dropbox.com/log/ +||dropbox.com/log_js_sw_data +||dropbox.com/pithos/ux_analytics +||dropbox.com/prompt/log_impression? +||dropbox.com/unity_connection_log +||drudgereport.com/204.png +||drugs.com/api/log/ +||drugs.com/api/logger/ +||drugs.com/img/pixel.gif +||dtag.breadfinancial.com^ +||dtksoft.com/ajax/log^ +||dubz.co/analytics/ +||dubz.live/analytics/ +||duckduckgo.com/t/ +||dumpster.cam4.com^ +||duolingo.com/2017-06-30/tracking-status +||dynatrace.att.com^ +||e.quizlet.com^ +||e.used.ca/event +||e2ma.net/track/ +||ea.epochbase.com^ +||ebay.com/delstats/ +||ebay.com^*/customer_image_service? +||ebay.com^*/madrona_loadscripts.js +||ebaystatic.com/cr/v/c01/c54e60e1-996e-4a53-a314-f44a6b151b40.min.js +||ebaystatic.com/cr/v/c01/nh24082119176031f8a0afcb42d.js +||ebaystatic.com/cr/v/c01/ubt241024192c097b9ddc0a81e0a.js +||ebaystatic.com^*tracking/configuration.js +||ec.thredup.com^ +||eddl.cdi.services.sap.com^ +||edge.staging.fullstory.com^ +||edisound.com/api/p/stats +||eec.crunchyroll.com^ +||eharmony.ca/fd/ +||eharmony.co.uk/bd/ +||ei.monday.com^ +||eighten-bloc-party.thebrowser.company/script.js +||ejlytics.editorji.com^ +||el.quizlet.com^ +||eldorado.gg/white-house/white_house_script_data_ +||elements.video/tr/ +||elevenlabs.io/hog/e/ +||elitesingles.com/cs/tp.png? +||embed.reddit.com/svc/shreddit +||embedme.top/embed/extra +||engagefront.meteomedia.com^ +||engagefront.theweathernetwork.com^ +||engagement.feedly.com^ +||engine.traceparts.com^ +||engineering.com/scripts/$script,domain=eng-tips.com +||eproof.drudgereport.com^ +||equirodi.*/addstat.php +||ericdraken.com/a/$script +||error-collector.ted.com^ +||error.fc2.com/blog/$image +||error.fc2.com/blog3/$script +||errorreports.couponcabin.com^ +||errors.darkreader.app^ +||espy.boehs.org^ +||essentiallysports.com/api/track/ +||essentiallysports.com/api/v1/counts +||essentiallysports.com/growth/engagement/ +||et.nytimes.com^ +||et.tidal.com^ +||eta.animenewsnetwork.com^ +||etfstream.com/api/analytics/ +||etfstream.com/api/proxy/get-search-sponsor +||etracker.noon.com^ +||etsy.com/bcn/beacon +||etsy.com/clientlog +||etui.fs.ml.com^ +||etx.indiatimes.com^ +||euclid.kuula.co^ +||eurogamer-uk.eurogamer.net^ +||event-api.reverb.com^ +||event-collector.moviesanywhere.com^ +||event-log-api-data-platform-data-lake-prod.gryphline.com^ +||event-router.olympics.com^ +||event.platform.autotrader.com.au^ +||event.platform.tunein.com^ +||eventhub.au01.miro.com/api/stream +||eventhub.eu01.miro.com/api/stream +||eventhub.us01.miro.com/api/stream +||eventlog.jackpot.de^ +||events-prod.autolist.com^ +||events-tracker.deliveroo.net^ +||events.api.godaddy.com^ +||events.baselime.io^ +||events.bsky.app^ +||events.character.ai^ +||events.clips4sale.com^ +||events.framer.com^ +||events.mercadolibre.com^ +||events.practo.com^ +||events.prd.api.max.com^ +||events.privy.com^ +||events.reddit.com^ +||events.redditmedia.com^ +||events.s4long.com^ +||events.santander.co.uk^ +||events.squarespace.com^ +||events.turbosquid.com^ +||events2.www.edenfantasys.com^ +||everywatch.com/ingest/ +||evs.icy-lake.kickstarter.com^ +||evs.sgmt.loom.com^$script +||excess.duolingo.com/batch +||exp.notion.so^ +||expedia.*/cl/ +||experiences.wyng.com/api/*/event-api/events +||experte.com/t/events +||exporntoons.net/api/stats? +||expressvpn.com/__px.gif? +||exr-mms.expertreviews.co.uk^ +||extendoffice.com/analytics.js +||extremetech.com/js/ga.js +||ezoicanalytics.com/analytics.js +||f.cdngeek.com^$domain=edugeek.net +||f.pie.org^ +||f362.nola.com^ +||facebook.com/a/bz? +||facebook.com/ajax/*/log.php +||facebook.com/ajax/*logging. +||facebook.com/ajax/mtouch_perf_page_load_timings/ +||facebook.com/ajax/qm/ +||facebook.com/ajax/weblite_load_logging/ +||facebook.com/sem_mpixel/ +||facebook.com/sw/log/init/ +||fairprice.com.sg/VZl2n4/ +||fanatics.com/api/track +||fancentro.com/lapi/statisticWriter/ +||fancentro.com/trck- +||fansedge.com/api/track +||fansshare.com/t.gif +||faphouse.com/collector/ +||farfetch.net/v1/marketing/trackings +||faro-collector-prod-*.grafana.net^ +||fastly.com/metrics/gtm/ +||fastmail.com/api/event/ +||fathom.app.silverbeak.com^ +||fathom.tdvm.net^ +||fbo-statistics-collector-tc.is.flippingbook.com^ +||fc2.com/counter_img.php? +||fd.ivoclar.com^ +||fdt.kraken.com^ +||featureflags.grubhub.com/v1/events +||feedbackws.icloud.com/reportStats +||feedly.com/mxpnl/ +||femetrics.grammarly.io^ +||feross.org/views +||fgn-plausible.serverable.com^ +||figma.com/api/figment-proxy/ +||figma.com/api/web_logger/ +||filext.com/pageview^ +||findmatches.com/bts.js +||findmatches.com/tri?tid= +||fingerprint.com/events/ +||fingerprintjs.com/visitors/ +||firebaselogging.googleapis.com^ +||fishki.net/counter/ +||fitymi.app/js/script.js +||fiverr.com/api/v1/activities +||flagr.worldstarhiphop.com/api/v1/evaluation +||flaticon.com/_ga? +||fleshlight.com/api/collect +||flipboard.com/api/v2/reporting +||flipboard.com/usage? +||flipkart.com/api/3/data/collector/ +||flirt4free.com/pixel/ +||flow.1passwordservices.com/api/v1/event +||flya.me/eventtrack +||fomo.azurewebsites.net/activity/batchTrack +||foodcouture.net/public_html/ra/script.php +||forgood.co.za/api/tracking/ +||formula1.com/api/track +||fortune.com/comscore-json/ +||foursquare.com/v2/private/logactions +||foxsports.com.au/akam/ +||fp.bizjournals.com^ +||fp.measure.office.com^ +||fpa-cdn.adweek.com^ +||fpa-cdn.arstechnica.com^ +||fpc.fingerprint.com^ +||fpt.microsoft.com^ +||freedownloadmanager.org/ajax/th_hit.php +||freedownloadmanager.org/ajax/th_view.php +||freepik.*/download.gif? +||freepik.com/_ga? +||freeplayervideo.com/cdn-cgi/trace +||freeprivacypolicy.com/track/ +||fresnel-events.vimeocdn.com^ +||fsho.st/tracker.js +||ft.com/ingest? +||fuel-design.com/js/script.js +||fullscreen.nz/v1/tracking/$domain=threenow.co.nz +||fusevideo.io/api/event +||futureparty.com/nectar_analytics +||futureparty.com/page_view +||g-scale.org/scripts/EventLog.js +||g.ign.com^ +||g.mashable.com^ +||g.newtimes.com^ +||g.pcmag.com^ +||ga.nsimg.net^ +||gadgets360.com/analytics.js +||gaiaonline.com/internal/mkt_t.php? +||gak.webtoons.com^ +||galaxus.ch/api/public/sbm/v1/fp +||gamedistribution.com/collect? +||gamejolt.com/tick/ +||gamemonetize.com/account/event.php? +||gamemonetize.com/account/eventvideo.php? +||gamezop.com/c/events/ +||gamezop.com/c/impressions/ +||gamivo.com/tcllc? +||gardpro.com/api/collect +||gc.newsweek.com/front/js/counter.js +||gct.americanexpress.com^ +||gdpr.netralex.com^ +||gemoo-resource.com/js/analytics.js +||generalblue.com/js/pages/shared/analytics.min.js +||generic-function-log-data-7il2midpaa-nn.a.run.app^$domain=telus.com +||geo.brobible.com^ +||geo.nbcsports.com^ +||geo.yahoo.com^ +||geoip.boredpanda.com^ +||geoip.hmageo.com^ +||geoip.ifunny.co^ +||geolocation.forbes.com^ +||getadblock.com/js/log.js +||gettapeads.com/stat/ +||gettyimages.*/pulse$ping +||gg.asuracomic.net/api/views/collect +||gg.vevor.com^ +||ghacks.net/statics/px.gif +||gianteagle.com/webevents/ +||giftornado.com/counter.php +||girlsofdesire.org/images/girlsofdesire.org/analytics.js +||gitfut.com/*/view +||github.com/_private/browser/stats +||github.dev/diagnostic? +||givefreely.com/ingest/ +||glassdoor.*/geb/events/ +||glassmoni.researchgate.net^ +||global.canon/00cmn/js/*/analytics- +||global.ssl.fastly.net^$domain=allmodern.com|argos.co.uk|basspro.com|birchlane.com|courier-journal.com|courierpress.com|desertsun.com|detroitnews.com|eddiebauer.com|freep.com|glassesusa.com|greenbaypressgazette.com|harborfreight.com|indystar.com|jsonline.com|kurtgeiger.com|legacy.com|lenovo.com|lohud.com|lowes.com|naplesnews.com|news-journalonline.com|northjersey.com|perigold.com|quickship.com|quikshiptoner.com|radiotimes.com|sainsburys.co.uk|sanuk.com|sheboyganpress.com|tallahassee.com|theadvertiser.com|thisweek.com|ugg.com|usatoday.com|wayfair.co.uk|wayfair.com|wwe.com +||globes.co.il/shared/s.ashx? +||glowing.com/unilog +||gmetrics.getbeamer.com^ +||gnar.grammarly.com^ +||gnavi.co.jp/analysis/ +||go.fap18.net/ftt2/js.php +||go.nutraingredients.com/pd.js +||go.pardot.com^ +||go.thegrocer.co.uk^ +||go.theregister.com^$image +||gobankingrates.com/fp/ +||gofundme.com/track +||gog-statics.com/js/frontpagelogintracking-$script,domain=gog.com +||gog-statics.com/js/loginTracking-$script,domain=gog.com +||goodcar.com/js/parts/fp.js +||goodfon.com/stat/ +||goodreads.com/logging +||goodreads.com/metrics_logging_batched +||goodreads.com/report_metric +||goodreads.com/track/ +||google.com/ads/measurement/ +||google.com/async/ddllog +||google.com/dssw.js +||google.com/images/phd/px.gif +||google.com/log^$domain=~accounts.google.com +||google.com/measurement/ +||google.com/pagead/1p-conversion/ +||grabify.link/api/js +||graylog.prod.cams.run^ +||grgnsht.nzxt.com^ +||grok.com/_data/v1/a/ +||grok.com/_data/v1/events +||grok.com/_data/v1/experiment/exposure +||grok.com/api/log_metric +||grokipedia.com/api/analytics +||grokipedia.com/api/ev +||grokipedia.com/api/stats +||groove.so/unlocker.js +||groupon.com/analytic/ +||groupondata.com/tracky +||gsght.com/twizards.js +||gso.amocrm.com/humans/ +||gtm.lercio.it^ +||gtm.wise.com^ +||gtm.xtb.com^ +||gtreus.aliexpress.com^ +||gumtree.com.au/tracking/ +||gurgle.pcmag.com^ +||gurgle.spiceworks.com^ +||h031.familydollar.com^ +||h5log.joybuy.com^ +||hacksplaining.com/track +||hankookilbo.com/service/kt/trk.js$script,domain=koreatimes.co.kr +||harryrosen.com/analytics/ +||health-metrics-api.setapp.com^ +||healthline.com/api/metrics +||heap.drop.com^ +||hellopeter.com/api/consumer-tracking/ +||helpmonks.com/cftag/ +||hepsiburada.com/api/$ping +||hilton.com/zJbufaUX/ +||hindustantimes.com/res/images/one-pixel.png +||hlogger.heraldcorp.com^ +||hltv.org/scripts/hltv-tracking.js +||hn-ping*.hashnode.com^ +||homedepot.ca/mr/thd-ca-prod.js +||homedepot.ca/webmetrics/collect +||hoo.be/api/hoobe/analytics +||hopper.com/api/v0/tracking/event +||hostinger.com/api-proxy/api/sentry/ +||hotels.com/api/bucketing/v1/evaluateExperimentsAndLog +||hotels.com/cl/data/omgpixel.json? +||hotpads.com/node/api/comscore +||hotstar.com/v1/identify +||hotstar.com/v1/track +||houzz.com/hsc/aetrk/ +||houzz.com/j/ajax/client-error-light? +||houzz.com/js/log? +||hqq.ac/cdn-cgi/trace +||hqq.to/cdn-cgi/trace +||hqq.tv/cdn-cgi/trace +||html5games.com/event/ +||htrace.wetvinfo.com^ +||huggingface.co/js/script.js +||hulkshare.com/ajax/tracker.php +||hulu.com/metricsconfig +||hypebeast.com/firebase-messaging-sw.js +||i.pokernews.com^ +||iam-rum-intake.datadoghq.com^ +||ibm.com/analytics/build/bluemix-analytics.min.js +||ibtimes.com/front/js/counter.js +||icgp.ie/overview/js/tracker.php +||idiva.com/analytics_ +||idmsa.apple.com/appleauth/jslog +||ifunny.co/api/$ping +||iguazu.doordash.com^ +||ih.newegg.com^ +||iheart.com/api/v3/playback/reporting +||ihg.com/logging/ +||imagefap.com/images/yes.gif? +||imagetwistcams.com/pixel/ +||imdb.com/api/_ajax/metrics/ +||imf.org/Assets/IMF/js/SocialScript.js +||img.konami.com/games/s/common/js/analytics.js +||img.medscapestatic.com/pi/scripts/omniture/bi_medscape.js$domain=medscape.com +||imgur.com/albumview.gif? +||imgur.com/imageview.gif? +||immoweb.be/*/track/ +||impressions.svc.abillion.com^ +||improve.tempest.com^ +||in.brilliant.org^ +||indeed.com/cmp/_rpc/dwell-log? +||indeed.com/cmp/_rpc/flog +||indeed.com/cmp/_rpc/logentry +||indeed.com/m/rpc/frontendlogging +||indeed.com/rpc/$~xmlhttprequest +||indeed.com/rpc/pageload/perf +||independent.co.uk/iframe/native-cookiesync-frames.html +||indiatimes.com/personalisation/logdata/ +||indiatimes.com/savelogs? +||indiegogo.com/speclayer/stdfp.js +||indmetric.rediff.com^ +||inews.co.uk/rta2/ +||infinityscans.net/api/collect +||info.com/pingback +||info.girlswhoinvest.org^*/acton/bn/tracker/ +||info.onwd.com^ +||infoq.com/metrics/ +||informer.com/ajax/article_log.php +||ingest.coincodex.com^ +||ingest.make.rvohealth.com^ +||ingress.linktr.ee^ +||inq.com/tagserver/logging/logline +||insideevs.com/analytics.js +||insights-mxp-cdn.coursecareers.com^ +||instagram.com/ajax/bz +||instagram.com/ajax/qm/? +||instructables.com/counter +||intent.cmo.com.au^ +||intent.goodgearguide.com.au^ +||intent.macworld.co.uk^ +||intent.pcworld.idg.com.au^ +||intent.techadvisor.com^ +||internal-analytics.odoo.com^ +||internetslang.com/jass/ +||intg.snapchat.com^ +||intuit.com/static/scripts/cookie-sync/cookiesync-pixel.js +||intuitvisitorid.api.intuit.com^ +||investigationdiscovery.com/cms/collections/ +||investigationdiscovery.com/events/ +||invisionapp.com/analytics-api/ +||iono.fm/tracking? +||ip.cliphunter.com^ +||iphonelife.com/_app/immutable/chunks/TrackingParamsFormInputs. +||irs.gov/h4z97Hz8jMrNO/ +||isc-tracking.eventim.com^ +||isharemetric.rediff.com^ +||ivx.lacompagnie.com^ +||j927.statnews.com^ +||jansatta.com/api/capture/ua +||jav4tv.com/player/analytics +||javedit.com/e/public/ViewClick/ +||javhd.com/ascripts/gcu.js +||javhd.com/rstat +||javplayer.me/*/views^ +||javynow.com/ajax/access.php +||jerkmatelive.com/api/metrics +||jetbluevacations.com/apis/v2-analytics/ +||jfapiprod.optimonk.com^ +||jiji.co.ke/tag_event +||jockey.com/event/ +||jockey.com/scripts/omt-base.js +||joggo.run/api/events +||johnlewis.com/browser-performance/ +||js.monitor.azure.com/scripts/c/ms.analytics-web-4.min.js$domain=microsoft.com +||js.monitor.azure.com/scripts/c/ms.shared.analytics.$domain=microsoft.com +||julius.ai/monitoring +||jumbo.zomato.com^ +||juno.com/start/javascript.do?message= +||justanswer.com/jatag/ +||justdial.com/jd-trkr +||jzq915.playmobil.com^ +||k.p-n.io/event-stream +||k.qwant.com^ +||kaggle.com/api/i/diagnostics.MetricsService +||kansascity.com/nyb-zsooli/ +||kape.dataplane.rudderstack.com^ +||kayak.*/vestigo/measure +||kbb.com/pixall/ +||kck.st/web/track +||keirin.netkeiba.com/ndtracker/ +||kgoma.com/v1/stat/ +||khanacademy.org/api/internal/_analytics/ +||kinesis.us-east-1.analytics.edmentum.com^ +||kio.ac/analytics/ +||klm.us/CWZUvc/ +||kloth.net/images/pixel.gif +||knewz.com/api/event +||knowunity.com/events^ +||knowunity.com/pixels/ +||kobo.com/TrackClicks +||kohls.com/mtFndb/ +||kohls.com/test_rum_nv? +||komoot.*/api/t/event +||kompass.com/logAdvertisements +||kour.io/api/track +||kqefj.clearstem.com^ +||kroger.com/clickstream/ +||kudoslabs.gg/track/ +||l.usaa.com/e/v1/ +||lastminute.com/ose/processEvent +||lastminute.com/ose/tracking/ +||lastminute.com/s/hdp/hotel-details/api/logs +||lastminute.com/s/hdp/hotel-details/api/metrics +||lastpass.com/lpapi/content/pixels +||lastpass.com/m.php/proxy_tracker +||lego.com/api/dl-event-ingest +||lendingtree.com/analytics/ +||lendingtree.com/pixel/ +||lenovo.com/gemets/ +||lensdirect.com/page-tracking/ +||letsdoeit.com/tracking/ +||lexology.com/pd.js +||lftce.clearstem.com/load +||lgforbes.akamaized.net/rtblog.php? +||libhunt.com/api/ahoy/event +||librato-collector.genius.com^ +||lightstep.medium.systems^*/reports +||link.kogan.com^ +||link2.strawberrynet.com^$image +||linkedin.com/apfc/collect$xmlhttprequest +||linkedin.com/collect/ +||linkedin.com/li/track$xmlhttprequest +||linkedin.com/litms/utag/ +||linkedin.com/platform-telemetry/ +||linkedin.com/sensorCollect/ +||links.strava.com^$image +||linktr.ee/events +||linris.xyz/cdn-cgi/trace +||liquipedia.net/mm.js +||liquipedia.net/stats/ +||lists.ccmbg.com^ +||littlebigsnake.com/event? +||livejournal.com/ljcounter/ +||livejournal.com/log? +||liveperson.net/hc/*/?visitor= +||lizard.donald.cat^ +||lms.roblox.com^ +||lnkd.in/li/track +||load.tm.all3dp.com/rqlevydw.js +||log-gateway.zoom.us^ +||log.arkansasonline.com^ +||log.china.cn^ +||log.genyt.net^ +||log.hypebeast.com^ +||log.klook.com^ +||log.quora.com^ +||log.snapdeal.com^ +||log.strawpoll.com^ +||log.webnovel.com^ +||logger.nerdwallet.com^ +||logger007.cam4.com^ +||logging.api.intuit.com^ +||loglady.kiwi.com^ +||logofa.st/js/script.js +||logs.hotstar.com^ +||logs.naukri.com^ +||logs.netflix.com^ +||logx-experimentation.iherb.com^ +||logx.optimizely.com^ +||lolwot.com/B5xaqzSGvMTM.js +||lookawoman.com/t/ +||lookfantastic.ie/track +||loom.com/metrics/graphql +||love.vidora.su^ +||lowes.com/gauge/ +||lowes.com/pharos/api/webTelemetry? +||lucida.su/api/event +||lyft.com/api/track +||lyngsat.com/system/loadclick.js +||m.facebook.com/ajax/weblite_resources_timing_logging/ +||m365.cloud.microsoft/events +||ma.redhat.com^ +||macys.com/tag_path/ +||mail.proton.me/api/data/v1/stats +||mail.yahoo.com/f/track/ +||mangadex.org/api/event +||mangadex.org/p.js +||mangakoma.net/ajax/manga/view +||manomano.*/api/v1/sp-tracking/ +||manscaped.com/rud-dataplane/ +||manua.ls/g/collect? +||manua.ls/gtag +||mapcarta.com/logs +||mapquest.com/logger +||market.samm.com/0/sendeventv2 +||marketing.alibaba.com^ +||marketing.dropbox.com^ +||marketing.taskus.com^ +||marty.zappos.com^ +||massivecams.com/api/metrics +||mat6tube.com/api/stats? +||maximise.nyc3.cdn.digitaloceanspaces.com/mxmse.min.js$domain=essentiallysports.com +||mcc-tags.cisco.com^ +||mcdonalds.com/tags/js/*/mparticle.js +||mcdonalds.com/webevents/ +||mcs-ie.tiktokw.eu^ +||mcs-va-useast2a.tiktokv.com^ +||mcs-va.tiktokv.com^ +||mcs.tiktokv.us^ +||mcs.tiktokw.us^ +||mcs.us.tiktokv.com^ +||mdn.allizom.net/pong/ +||mdt.crateandbarrel.com^ +||me-qr.com/metrics/ +||me-qr.com/statistic/collect/ +||medal.tv^$ping +||media.io/trk +||medium.com/_/batch +||meduza.io/stat/ +||megaplay.cc/cdn-cgi/trace +||megatron.igraal.com^ +||mensjournal.com/.bootscripts/analytics.min.js +||mentimeter.com/performance-metrics +||mercdn.net/assets/scripts/raphaelp +||mercedes-benz.com/datadog- +||merriam-webster.com/lapi/v1/mwol-search/stats/lookup +||messari.io/js/wutangtrack.js +||messenger.com/ajax/bnzai? +||metacrawler.com/pingback +||metis.truecaller.com^ +||metrics-a.wbx2.com^ +||metrics.audius.co^ +||metrics.bangbros.com^ +||metrics.camsoda.com^ +||metrics.documentfoundation.org^ +||metrics.freemake.com^ +||metrics.hackerrank.com^ +||metrics.hyperliquid.xyz^ +||metrics.imdb.com^ +||metrics.morethings.digital^ +||metrics.mtcgame.com^ +||metrics.onewegg.com^ +||metrics.roblox.com^ +||metrics.spkt.io^ +||metrics.syf.com^ +||metrics.ted.com^ +||metrics.th.gl^ +||metricsishare.rediff.com^ +||metro.co.uk/base/rta/ +||metro.co.uk/cvx/client/sync/fpc? +||metro.co.uk/wp-content/client-mu-plugins/dist/metro-analytics/ +||metrobyt-mobile.com/self-service-metro/v1/logging +||metroweekly.com/tools/blog_add_visitor/ +||meucdn.vip/cdn-cgi/trace +||mewe.com/ubk4jrxn.js +||mi.academy.com/p/js/1.js +||mi.dickssportinggoods.com/p/js/1.js +||mi.grubhub.com^ +||miao.baidu.com/abdr?$image +||microsoft.com/echo/etc.clientlibs/microsoft/clientlibs/exp-analytics/ +||midas.chase.com^ +||military1st.com/datalayer/index/events? +||mixpanel-proxy.coingecko.com^ +||mixpanel-proxy.ted.com^ +||mixproxy.epoch.cloud^$domain=theepochtimes.com +||mktcs.cloudapps.cisco.com^ +||mo8it.com/count.js +||modanisa.com/al/j/analytics.js +||mollusk.apis.ign.com/metrics/ +||mon.us.tiktokv.com^ +||monetarygoldgroup.com/_ub/ +||moneycontrol.com/news/services/get_comscore_pageview/ +||monitor.channel4.com^ +||monitor.lifemiles.com/collect +||morningstar.com/api/v1/analytics +||motorsport.com/stat/ +||mov.t-mobile.com/p/js/1.js +||movetv.com/sa-events +||mp.imgur.com^ +||mp.sintra.ai^ +||mp.theepochtimes.com^ +||mparticle.weather.com/identity/ +||mps.nbcuni.com/request/page/json/params/*&adunits=$xmlhttprequest +||mr.homedepot.ca^ +||msg-intl.qy.net^$image +||msn.com/collect/ +||msn.com/OneCollector/ +||mstm.motorsport.com^ +||mtg.macpaw.com^ +||mtm.bondagevalley.cc^ +||mtrics.cdc.gov^ +||musescore.com/components/data? +||musescore.com/components/log/$ping +||musescore.com/score/stats/ +||mx.eneba.com^ +||myanimelist.net/static/logging.html +||myfreecams.com/php/tracking.php? +||mylocal.co.uk/api/trpc/analytics. +||myspace.com/beacon/ +||na.groupondata.com^ +||naiz.eus/visits +||namethatporn.com/assets/imgs/1x1.gif +||narkive.com/ajax/TelemV2? +||nasi.etherscan.com^ +||nature.com/platform/track/ +||naukrigulf.com/ni/nibms/bms_display.php +||navan.com/api/analytics +||nbarizona.com/metrics/ +||nbc.com/webevents/ +||ncregister.com/_swp_analytics? +||neatorama.com/story/view/ +||neeva.com/logql/log +||neighbourly.co.nz/event-tracking +||nekoweb.org/.nekoweb-api/count-view +||neowin.net/ws/$websocket +||net.haier.com^ +||netflix.com/ichnaea/log +||netflix.com/msl/playapi/cadmium/logblob/ +||netu.ac/cdn-cgi/trace +||netuplayer.top/cdn-cgi/trace +||netusia.xyz/cdn-cgi/trace +||newegg.com/amber3/tracking +||newegg.com/gfplib.js +||news.google.com/_/v +||newscom.com/js/v2/ga.js +||newser.com/utility.aspx? +||newsmax.com/js/analytics.js +||newzit.com/setABframe.html +||nexon.com/api/nxlog/ +||nexon.com/nxlog-collect/ +||nextdoor.*/ajax/ping_ndas/ +||nextdoor.com/events/ +||nflshop.com/api/track +||ngds.sap.com^ +||nid.barrons.com/prod/sp/nid_sp.js +||nid.mansionglobal.com^ +||nid.thesun.co.uk^ +||nid.thetimes.com^ +||nike.com/assets/measure/data-capture/ +||nimbusweb.me/gtlytics.js +||nixie.starlightnet.work^ +||no9pldds1lmn3.soundcloud.com^ +||noblocktape.com/stat/ +||noodle.backmarket.io^ +||noodlemagazine.com/api/stats? +||nordace.com/track.js +||nordstrom.com/api/cake/ +||nordstrom.com/api/cupcake/ +||norton.com/service/norton/head? +||notion.so/api/v*/teV1 +||notion.so/api/v3/etClient +||novanthealth.org/v1/tagular/beam +||novelcool.com/files/js/yh_tj.js +||npa.thetimes.com/stats +||nr-data.noelleeming.co.nz^ +||nr-js.imaios.com^ +||nr.noelleeming.co.nz^ +||nslookup.io/pl.js +||ntvid.online/cdn-cgi/trace +||nvrmd.novaramedia.com^ +||nyt.com/ads/tpc-check.html$domain=nytimes.com +||nytimes.com/v1/purr-cache +||nzherald.co.nz/pf/resources/scripts/tracking/data-ref.js +||nzmuscle.co.nz/rdgp/ +||nzpages.co.nz/modules/common/track.js +||observe.metarouter.io^ +||ocular.hotukdeals.com^ +||odysee.com/reports/ +||ohm-dot-hackster-io.appspot.com^ +||oklink.com/jsstat/ +||okx.com/jsstat/sb? +||onboarding-ui.frontiersin.org/api/onboarding-ui/v1/session/logged +||oneroof.co.nz/*/record-log/ +||online-umwandeln.de/analytics.js +||online.marketing/a.js +||ontraport.com/opt_assets/static/js/logging.js +||op.dragonfru.it^ +||opendesktop.org/l/fp +||ophan.theguardian.com^ +||oppo.com/api/country +||optimizely.com/js/geo.js +||optimizely.techtarget.com^ +||oracle.com/visitorinfo/ +||oracleimg.com/us/assets/metrics/ora_docs.js +||otel-mobile.doordash.com^ +||outbound.io/v2/identify +||outbound.io/v2/track +||overstock.com/analytics/ +||overstock.com/dlp? +||ovyerus.com/js/script.js +||p.codio.com^ +||p.controld.com^ +||p.ctpost.com/article? +||p.hentaiforce.net^ +||p.imgur.gg^ +||p.mdb.tools^ +||p.midbound.click^ +||p.midbound.net^ +||p.minds.com^ +||p.ost2.fyi/courses/*/save_user_state +||p.ost2.fyi/event^ +||p.sfx.ms/is/invis.gif +||p.spotidownloader.com^ +||pac.thescottishsun.co.uk^ +||pac.thesun.co.uk^ +||pac.thetimes.com^ +||papi.stylar.ai^ +||pappagallu.onefootball.com^ +||pardot.com/pd.js +||partsgeek.com/sspgt/ +||patient.info/a31h/ +||pay4fans.com/api/analytics +||paypal.com/credit-presentment/log +||paypal.com/platform/tealeaftarget +||pb.ytmp3tube.com/js/script.js$domain=yt1s.com.co +||pbc.barrons.com^ +||pc-optimum.ada.support/api/business_events/track$domain=pcoptimum.ca +||pcgamesn.com/cdn-cgi/trace +||pcmag.com/js/ga.js +||pcmag.com/js/z0WVjCBSEeGLoxIxOQVEwQ.min.js +||pcp.coupert.com^ +||pdfcrowd.com/static/3rd/js/fpr.js +||pdffiller.com/api_v3/experiment/ +||pdffiller.com/api_v3/uploader/stats +||pdffiller.com/click-stream/ +||pdffiller.com/funnel.php? +||pdffiller.com/mpages/track/ +||pdfforge.org/api/kd-gdpr-cc +||pelisfree.site/cdn-cgi/trace +||pendo.scopus.com/data/ptm.gif +||pepin.padlet.com^ +||perf.mouser.com^ +||performance-logger.minted.com^ +||perplexity.ai/rest/event/analytics +||perr.hola.org^ +||pf.newegg.com^ +||pftk.temu.com^ +||phonearena.com/_track.php +||pi.ai/proxy/api/event +||pics-view.com/ad-track +||pie.org/g/collect? +||pie.org/v1/experiments/view +||pikbest.com/?m=Stats& +||ping.anizm.net^ +||ping.hashnode.com^ +||ping.hungama.com^ +||pingback.giphy.com^ +||pingback.issuu.com^ +||pingo.staticmoly.me^ +||pinkvilla.com/comscore_response.php +||pixel.archive. +||pixel.archivecaslytosk.onion^ +||pixel.archiveiya74codqgiixo33q62qlrqtkgmcitqx5u2oeqnmn5bpcbiyd.onion^ +||pixel.clutter.com^ +||pixel.convertize.io^ +||pixel.facebook.com^ +||pixel.ionos.com^ +||pixel.nine.com.au^ +||pixel.patch.com^ +||pixel.tuko.co.ke^ +||pixelzirkus.gameforge.com^ +||pixiedust.buzzfeed.com^ +||pks-analytics.raenonx.cc^ +||pl.elements.video^ +||pl.letsblock.it^ +||plausible.bots.gg^ +||plausible.corsme.com^ +||plausible.dragonfru.it^ +||plausible.omgapi.org^ +||plausible.safing.io^ +||plausible.tubemagic.com^ +||player-cdn.com/cdn-cgi/trace +||player-telemetry.vimeo.com^ +||player.instaread.co/js/inarticle-metrics.js +||player.javboys.cam/cdn-cgi/trace +||player.videasy.to/scripts/ab.js +||playvideohd.com/cdn-cgi/trace +||plenty.vidio.com^ +||plushd.bio/cdn-cgi/trace +||pluto.smallpdf.com^ +||pm.dailykos.com^ +||pm.geniusmonkey.com^ +||pmnbh.dedcool.com^ +||pog.com^$ping +||poki.com/observer/ +||politico.com/resource/assets/js.min/video-tracking. +||poptropica.com/brain/track.php? +||pornbox.com/event/ +||pornbox.com/stats/ +||porzo.com/js/analytics +||poshmark.com/trck/ +||posthog.com/*/?ip=$xmlhttprequest +||posthog.com/*/logs?$xmlhttprequest +||posthog.com/api/homepage-hits +||posthog.com/api/signup-count +||prairiedog.hashnode.com^ +||pravda.com.ua/counter/ +||prescouter.com/pd.js +||priceline.com/pws/v1/ace/impression/ +||priceline.com/svcs/mkt/tag/ +||princetonreview.com/logging/ +||prisma.io/gastats.js +||priv.gc.ca/m/m.js +||privacy-api.9gag.com^ +||privacy.reverso.net^ +||privacyfriendly.netlify.app^ +||privacypolicies.com/track/ +||private.wccftech.com^ +||prod-events.nykaa.com^ +||progressive.com/Log/ +||projectmultatuli.org/analytics/ +||promos.investing.com/*/digibox.gif? +||prop.astonvillanews.co.uk^ +||proporn.com/ajax/log/ +||proxima.midjourney.com^ +||pt.blubrry.com^ +||public.tableau.com/inst?v= +||public.tableau.com/public/apis/audit-event +||publicwww.com/mtm/mtm.js +||pulpulyy.club/cdn-cgi/trace +||pulsar.ebay.com^ +||pulse.delta.com^ +||pumpkin.abine.com^ +||pushsquare.com/blank.gif +||px.srvcs.tumblr.com^ +||pxl.indeed.com^ +||qc.arstechnica.com^ +||qc.gq.com^ +||qc.newyorker.com^ +||qc.vanityfair.com^ +||qc.vogue.com^ +||qc.wired.com^ +||qm.redbull.com^ +||qub.ca/api/log +||qub.ca/collector-service/event +||quibids.com/marketing/pixels/ +||quickmeme.com/tracker/ +||quotev.com/ajax/ping +||qwant.com/action/ +||qwant.com/impression/ +||qwant.com/maps/events +||qwant.com/v2/api/ux/surveys? +||qwerpdf.com/trk23/ +||r.3hentai.net^ +||r.apkpure.net^ +||r.bbci.co.uk^ +||r.cdnpure.com/webReport +||ra.co/proxy/client/metrics +||ra.co/track/ +||rabbit.donald.cat^ +||raenonx.cc/api/tag +||raenonx.cc/g/usage/ +||rainbet.com/api/ping +||raindrop.io/pb/api/event +||rakuten.com/rmsgjs/soj2.js +||ralf.curvo.eu^ +||ranker.com/api/px +||ranker.com/api/tr? +||ranker.com/api/tracking/comscore +||rankhit.china.com^ +||ras.yahoo.com^ +||raw.vidyard.com^ +||rbc.ua/enghits/ +||react-admin-telemetry.marmelab.com^ +||read.amazon.*/uploadMetrics/ +||realitytvworld.com/images/pixel.gif +||rec.banggood.com^ +||recommend.9gag.com/interact/event/ +||reddit.com/static/pixel.png$image +||reddit.com/timings/ +||redditmedia.com/gtm/jail? +||redditstatic.com/accountmanager/sentry. +||redditstatic.com/shreddit/sentry- +||redfin.com/rift? +||redgifs.com/v2/metrics/ +||reelgood.com/v3.0/checkip +||rei.com/customer-analytics-attributes/ +||reichelt.com/setsid.php? +||relay.fiverr.com^ +||remarkable.com/api/proxy/marker +||reports.tunein.com^ +||researchgate.net/beacon/ +||researchgate.net/track/ +||reservationday.com/metrics/ +||reverbnation.com/api/user/app_events +||revolut.com/api/t/errors +||rfk.biglots.com^ +||rfk.dsw.com/api/init/1/init.js +||rgshows.me/js/logger.js +||rgshows.me/js/statistics.js +||ring.staticmoly.me^ +||risextube.com/t/ +||rivcash.com/*/event/page_visit +||rivcash.com/ajax/log_js_error.php +||roas-service.store-services-prod.remarkable.com^ +||roblox.com/_/_/1px.gif +||roblox.com/report +||roblox.com/www/e.png? +||rome.api.flipkart.com/api/1/fdp +||royalcams.com/tools/track.php? +||rps-p2.rockpapershotgun.com^ +||rps-uk.rockpapershotgun.com^ +||rs.mail.ru^ +||rss-loader.com/track/ +||rstat.rockmostbet.com^ +||rt.newswire.ca^ +||rt.prnewswire.com^ +||rt.whitebridge.ai^ +||rta.dailymail.co.uk^ +||rta2.inews.co.uk^ +||rta2.metro.co.uk^ +||rta2.newzit.com^ +||rtds.progressive.com^ +||rum.api.intuit.com^ +||rum.battle.net^ +||rum.cdnpure.com^ +||rum.condenastdigital.com^ +||rumble.com/l/ +||run.app/events$domain=imgur.com|worldstar.com|worldstarhiphop.com +||rv.modanisa.com^$script +||rvo-cohesion.healthline.com^ +||s.gofile.io^ +||s.infogram.com^ +||s.joinhoney.com/evs +||s.smallpdf.com/static/track-js- +||s.sofoot.com/script.js +||s.wayfair.com^ +||s.yimg.com/rx/ev/*/pframe.html$domain=aol.com +||s.yimg.com/ss/analytics-$script,domain=yahoo.com +||sa.uswitch.com^ +||saa.insideedition.com^ +||samsung.com/us/web/internal/logger +||sapi.tremendous.com^ +||scholar.google.com^$ping +||sciencechannel.com/events/ +||scloud.online/stat/ +||scoot.co.uk/ajax/log_ +||scribd.com/log/ +||search.anonymous.ads.brave.com^ +||search.aol.com/beacon/ +||search.brave.com/api/feedback$~third-party +||search.brave.com/serp/v1/static/serp-js/telemetry/ +||search.ch/audit/ +||searchenginejournal.com/xcs0MhRsfxHG.js +||searchiq.co/api/tr? +||secretbenefits.com/js/script.js +||secure.checkout.visa.com/logging/ +||secure.cricket365.com/tag/ +||secure.football365.com/tag/ +||secure.golf365.com/tag/ +||secure.loverugbyleague.com/tag/ +||secure.planetf1.com/tag/ +||secure.planetfootball.com/tag/ +||secure.planetrugby.com/tag/ +||secure.teamtalk.com/tag/ +||secure.tennis365.com/tag/ +||seekingalpha.com/mone_event +||segapi.whop.com^ +||seismic.com/playerservice/api/v1/log? +||service.techzine.eu^ +||services.haaretz.com/ds/impression +||services.haaretz.com/ms-gstat-campaign/ +||servo-report.dvdfab. +||sexu.com/api/events +||sexu.com/api/ttrack +||sexybabepics.net/re/?ping +||sf-syn.com/conversion_outbound_tracker$subdocument,domain=sourceforge.net +||share.9cdn.net/share/short_cache/js/tracking/$domain=nine.com.au +||sharechat.com/event-tracking-service/ +||sharesies.com/v1/identify +||sharesies.com/v1/track +||shavetape.cash/stat/ +||shazam.com/services/metrics/ +||shemale.com/api/metrics +||sherlock-events-sampler.ebay.com^ +||shipfa.st/js/script.js +||shobiddak.com/logging/ +||shopee.*/__t__$xmlhttprequest +||shopifysvc.com/v1/metrics +||shopmetric.rediff.com^ +||shutterstock.com/blog/wp-content/mu-plugins/wp-parsely- +||shutterstock.com/blog/wp-content/themes/sstk/assets/js/analytics.min.js +||shutterstock.com/blog/wp-content/themes/sstk/assets/js/parsely-tracking.min.js +||siberiantimes.com/counter/ +||sid.nordstrom.com^ +||sided.co/analytics/ +||siemens.com/c2_analytics.js +||silvergames.com/div/g.php? +||simplelogin.io/p/api/event +||siriusxmstore.com/api/collect +||sjc.cloud.optable.co^ +||skyscanner.*/slipstream/view +||slack-edge.com/bv1-10/slack_beacon. +||slack.com/beacon/ +||slack.com/clog/track/ +||slant.co/js/track.min.js +||slashdot.org/country.js +||slashdot.org/images/js.gif +||slc.cbssports.com/events +||slickdeals.net/ajax/stats/ +||slipstream.skyscanner.net^ +||smartlink-api.amuse.io/api/analytics/ +||smassets.net/assets/anonweb/anonweb-click- +||smetrics.couponcabin.com^ +||smetrics.inova.org^ +||smetrics.ralphlauren.com^ +||smetrics.vanguard.com^ +||smutty.com/ajax/trcking/ +||snapchat.com/web/metrics +||snohetta.com/js/plascript.js +||sofire.terabox.app^ +||solarwinds.com/ra-$script +||solidcams.com/api/metrics +||solvusoft.com^*/scripts/visitor.js +||sonic.fdp.api.flipkart.com/4/data/collector/ +||sortlist.cloud/log +||soundcloud.com^$ping +||source.chromium.org/v1/logging +||sourcesync.io/analytics +||southwest.com/api/logging/v1/logging/ +||southwest.com/di/swadc/beacon/ +||sp.cargurus.co.uk^ +||sp.ecosia.org^ +||sp.justwatch.com^ +||sp.pcoptimum.ca^ +||sp.pluto.tv^ +||sp.welcometothejungle.com^ +||spaning.creavite.co^ +||spanishdict.com/page-view-metadata +||spectrum.gettyimages.com^ +||speed.cloudflare.com/__log +||sportsmansguide.com/scripts/vendor/at_ +||spotifycdn.com/cdn/js/retargeting-pixels. +||spt.ahram.org.eg^ +||squarespace.com/api/1/performance/ +||squirrel.malaynahocker.com^ +||srchoffer.com/tracking/ +||srtb.msn.com^ +||srv.plesk.com^ +||ss.esade.edu^ +||ss.hellotushy.com^ +||ss.photospecialist.co.uk^ +||ssl-images-amazon.com/images/I/21auWwkMYgL.js$domain=imdb.com +||sst.brodo.com^ +||sst.bwt.com^ +||sst.carwow. +||sst.fdiintelligence.com^ +||sst.shopware.com^ +||st.sawlive.tv^ +||stackoverflow.com/_/client-timings +||stackshare.io/analytics. +||stan.xing.com^ +||stapadblockuser.art/stat/ +||stapadblockuser.click/stat/ +||stapadblockuser.info/stat/ +||stapadblockuser.xyz/stat/ +||stape.brascast.com^ +||stape.fun/stat/ +||stapewithadblock.beauty/stat/ +||stapewithadblock.monster/stat/ +||stapewithadblock.xyz/stat/ +||starfiles.co/analytics.php +||startpage.com/sp/$ping +||startpage.com/sp/atq/ep2/sodar/sodar2.js +||startpage.com/sp/dplpxs? +||startpage.com/sp/jst +||starzplay.com/resources/js/analytics.js +||stat.pubhtml5.com^ +||stat.tildacdn.com^ +||stat.turb.pw^ +||stat.vulkanvegas.com^ +||statista.com/data/ptm.gif +||statistics.darkreader.app^ +||statistics.streamdav.com^ +||stats.aerotime.aero^ +||stats.allenai.org^ +||stats.calcalist.co.il^ +||stats.chromatone.center^ +||stats.codeur.com^ +||stats.darkreader.app^ +||stats.davidickedelivery.com^ +||stats.gateio.ch^ +||stats.habr.com^ +||stats.hexa.watch^ +||stats.ibtimes.co.in^ +||stats.ibtimes.sg^ +||stats.justpaste.it^ +||stats.mempool.space^ +||stats.newsweek.com^ +||stats.qwant.com^ +||stats.sandberg.world^ +||stats.searchftps.net^ +||stats.suenicholls.com^ +||stats.synedat.io^ +||stats.trimbles.ie^ +||stats.vidbinge.com^ +||stats.videasy.net^ +||stats.vk-portal.net^ +||stats.wordpress.com^ +||stats.wwitv.com^ +||stats2.helpmonks.com^ +||stats2.mytuner.mobi^ +||statsegg.cdngeek.com^ +||stayforlong.com/api/kafka/tracking +||stayz.com.au/cl/data/omgpixel.json +||stirr.com/api/stats +||stockanalysis.com/cfa/ +||storage.googleapis.com/cdn2.guard.io/webflow/tracking-grd.js +||storage.googleapis.com/t3n-de/assets/t3n/2018/scripts/msodrq.js +||storage.lulu-row1.com^ +||stratascratch.com/monitoring? +||strcdn.org/cdn-cgi/trace +||strcloud.in/stat/ +||stream.corporatefinanceinstitute.com^ +||streamadblocker.cc/stat/ +||streamadblocker.com/stat/ +||streamadblocker.store/stat/ +||streamadblocker.xyz/stat/ +||streamate.com/api/metrics +||streamed.su/api/preload +||streamelements.com/z/i.js +||streamelements.com/z/s.js +||streamelements.com/z/t +||streamlabs.com/web/data/ping +||streamnoads.com/stat/ +||streamstats.prd.dlive.tv^ +||streamta.pe/stat/ +||streamta.site/stat/ +||streamtape.cc/stat/ +||streamtape.com/stat/ +||streamtape.net/stat/ +||streamtape.to/stat/ +||streamtape.xyz/stat/ +||streamtapeadblock.art/stat/ +||streamtapeadblockuser.art/stat/ +||streamtapeadblockuser.homes/stat/ +||streamtapeadblockuser.monster/stat/ +||streamtapeadblockuser.xyz/stat/ +||stripchat.com/pixel/ +||stripe.com/tracking/ +||strtape.cloud/stat/ +||strtapeadblock.club/stat/ +||strtapeadblocker.xyz/stat/ +||strtapewithadblock.art/stat/ +||strtapewithadblock.xyz/stat/ +||strtpe.link/stat/ +||stubhub.com/a/icph +||stytch.com/sdk/v1/events +||suaurl.com/adblock/js/smarttag.js +||substrate.office.com/search/api/v1/events +||sudokupad.app/api/event +||sumsub.com/api/tunnel/ +||sumsub.com/resources/fevents +||sumsub.com/stry/ +||support.github.com/_event +||support.github.com/_stats +||support.github.com/session/event +||support.github.com/session/user +||support.google.com/apis/logjourney +||swarm.video/stats/ +||szrpr.raen.com^ +||t-mobile.com/self-service-commerce/v1/logging +||t.9gag.com^ +||t.airasia.com^ +||t.allmodern.com^ +||t.almayadeen.net^ +||t.appsflyer.com^ +||t.av.st^ +||t.birchlane.com^ +||t.dailymail.co.uk^ +||t.deepnote.com^ +||t.factorform.com^ +||t.freelancer.com^ +||t.gazetteer.co^ +||t.goodchop.com^ +||t.indeed.com^ +||t.ionos.com^ +||t.jasper.ai^ +||t.jossandmain.com^ +||t.kck.st^ +||t.lataco.com/collect +||t.nypost.com^ +||t.optiwizehealth.com^ +||t.pagesix.com^ +||t.paypal.com^$image +||t.perigold.com^ +||t.pie.org^ +||t.poki.io^ +||t.prageru.com^ +||t.producthunt.com^ +||t.regionsjob.com^ +||t.wayfair.ca^ +||t.wayfair.co.uk^ +||t.wayfair.com^ +||t.y8.com^ +||t2.hulu.com^ +||t3.chat/api/event +||t3.chat/js/xt/script.js +||t810.ctpost.com^ +||tagdelivery.mayoclinic.org^ +||tagger.ope.scmp.com^ +||tagging.steelseries.com^ +||tags-event.woolworths.co.nz^ +||tags.air1.com^ +||tags.aljazeera.com^ +||tags.barrons.com^ +||tags.johnlewis.com^ +||tags.klove.com^ +||tags.news.com.au^$script +||tags.stepstone.com^ +||tahoe.com/imp +||taiwanplus.com/api/video/startVideo +||talkingpointsmemo.com/whoami +||tao.barstoolsports.com^ +||tapeadsenjoyer.com/stat/ +||tapeadvertisement.com/stat/ +||tapeantiads.com/stat/ +||tapeblocker.com/stat/ +||tapelovesads.org/stat/ +||tapenoads.com/stat/ +||tapepops.com/stat/ +||tapewithadblock.com/stat/ +||tapewithadblock.org/stat/ +||target-us.samsung.com^ +||target.com/api/beacon/ +||target.com/consumers/v1/ingest/web/eventstream? +||target.com/consumers/v1/ttms/events? +||target.com/rum_analytics/ +||target.com/telemetry_data/ +||target.nationwide.com^ +||target.nejm.org^ +||targeting.washpost.nile.works^ +||tc.geniusmonkey.com^ +||tccd.douglas. +||td.airdroid.com^ +||tealium-proxy.libertex.org^ +||telegraph.prd.api.max.com^ +||telem.sre.gopuff.com^ +||telemetry.adobe.io^ +||telemetry.algolia.com^ +||telemetry.api.playstation.com^ +||telemetry.canva.com^ +||telemetry.firez.one^ +||telemetry.proton.me^ +||telemetry.stytch.com^ +||telemetry.tradingview.com^ +||tellerreport.com/react/pixel +||terabox.app/api/analytics? +||terabox.app/issue/terabox/ts_ad/ +||terabox.com/abdr? +||terabox.com/nodeapi/reporterror? +||terminaltrove.com/_t/ +||termsfeed.com/track/ +||tgt.maep.ibm.com^ +||theblock.co/api/analytics +||thebookseller.com/AfoSiteAnalysis/ +||theconversation.com/javascripts/lib/content_tracker_hook.js +||thedailybeast.com/static/js/thirdparty. +||thefreedictionary.com/_/tr.ashx? +||thehackernews.com/ga/c +||thehackernews.com/ga4/c +||thehealthsite.com/apstag.js +||theladders.com/api/user-tracking/ +||thepoorswiss.com/tps/cfwa-collect +||thesun.co.uk/assets/client/analyticsListeners~ +||thesun.co.uk/assets/client/newrelicExperimentTracking~ +||thesun.ie/track? +||thetimes.co.uk/track? +||thetruth.com/pd.js +||thetruthaboutcars.com/api/slots +||thewindowsclub.com/wp-content/themes/genesis/lib/js/skip-links.min.js +||think.ing.com/ajax/ajax_cookie_consent$~third-party,xmlhttprequest +||thisiswhyimbroke.com/api/user/gift-guide-thumbnail-homepage/tracking +||thisiswhyimbroke.com/api/user/tracking +||thriftbooks.com/scripts/sp.js +||thronecdn.com/analytics/ +||thtk.temu.com^ +||tiendeo.*/_statsapi/ +||tif.ionos.com^ +||tiktok.com/captcha/report +||tiktok.com/ttwid/check/ +||tiktok.com/v1/list +||tiktok.com/web/report? +||tiktok.com/whale/ +||tiktokv.com/monitor_browser/ +||tiktokv.us/monitor_browser/ +||tilanalytics.timesinternet.in^ +||time.is/img/nod.png +||tiplink.io/fp-agent.js +||titanprod.narvar.com^ +||tms.abconsent.com^ +||tms.delta.com/privacy/$image +||tms.eharmony.ca^ +||tms.hft.everyplate.com^ +||tms.hft.factor75.com^ +||tms.hft.goodchop.com^ +||tms.hft.greenchef.com^ +||tms.hft.hellofresh.com^ +||tnaflix.com/stats.php +||toms.com/*/FacebookCAPI-Event +||toms.com/*/PinterestCAPI-Event +||tongji-res.meizu.com^ +||top.gg/api/auctions/i +||top.wn.com^ +||torbobit.net/js/analytics/ +||totalcsgo.com/ctrack/ +||totaljobs.com/analytics/ +||totaljobs.com/chatbot/webhook/analytics +||totaljobs.com/chatbot/webhook/logger +||touch.myntra.com^ +||toyota.com/analytics/ +||tpcs.payu.in/pixelwithcookie.gif$domain=hindustantimes.com +||tpead.net/stat/ +||tr.api.fanbyte.com^ +||tr.clickstay.com^ +||tr.www.cloudflare.com^ +||tracemyip.org/vlg/ +||traceparts.com/logs +||track-visit.monday.com^ +||track.americansongwriter.com^ +||track.bestpornsites.tv^ +||track.dictionary.com^ +||track.eurogirlsescort.com^ +||track.iegcom.com^ +||track.kueez.com^ +||track.mrgugu.com^ +||track.netzero.net^ +||track.sodapdf.com^ +||track.thesaurus.com^ +||track.ttsave.app^ +||track.ultimate-guitar.com^ +||tracker-remp.premiumtimesng.com^ +||tracker.affiliate.iqbroker.com^ +||tracker.bang.com^ +||tracker.hollandandbarrett.com^ +||tracker.nbcuas.com^ +||tracker.ranker.com^ +||tracker.shopclues.com^ +||tracking.bloomberg.com^ +||tracking.carsales.com.au^ +||tracking.christianpost.com^ +||tracking.digitalocean.com^ +||tracking.engineering.cloud.seek.com.au^ +||tracking.game8.co^ +||tracking.hsn.com^ +||tracking.peopleareeverything.com^ +||tracking.pixelz.com^ +||tracking.rocketleague.com^ +||tracking.shopstyle.co.uk^ +||tracking.shopstyle.com^ +||tracking.unrealengine.com^ +||tracking.wallapop.com^ +||trackr.vivenu.com^ +||tradingview-widget.com/static/bundles/embed/snowplow-embed-widget-tracker.$script +||tradingview.com/ping +||trafficid.brandwell.ai^ +||traveloka.com/api/v1/tvlk/events +||trck.coomeet.com^ +||trckng.dainese.com^ +||trcksplt.miro.com^ +||treatment.grammarly.com^ +||tredir.go.com^ +||trends.privacywall.org^ +||trip.com/bee/collect +||trip.com/bf.gif? +||tripadvisor.*/BALinkImpressionTracking/ +||tripadvisor.*/CookiePingback? +||tripadvisor.*/GARecord^ +||tripadvisor.*/MetricsAjax +||tripadvisor.*/wm/record +||tripcdn.com/bee/collect$domain=trip.com +||trivago.com/tracking/ +||trk.decido.io^ +||trk.tirto.id^ +||trulia.com/track/trackingPixel.gif? +||trumba.com/et.aspx? +||trustradius.com/api/v1/pageview +||trustradius.com/api/v2/collectMetrics +||trusty-shovel-1234.paul-f22.workers.dev^$domain=sfist.com +||truthsocial.com/instance/innovid.js +||trx3.famousfix.com^ +||try.elevenlabs.io/pr/js +||ts.delfi.lt^ +||tsa-f.webex.com^ +||tsa.webex.com^ +||tsmate.com/api/metrics +||tubepornstars.com/js/analytics +||tubi.io/datascience/logging? +||tubitv.com/oz/performance/ +||tumblr.com/pop/js/modern/sentry- +||tumblr.com/services/bblog +||tunein.com/api/v1/log/ +||turbobit.net/js/analytics/fdUserFingerprintToken.js +||tweaktown.com/cms/mp3_track.php +||twitter.com/1.1/attribution +||twitter.com/1.1/jot +||twitter.com/9/measurement/ +||twitter.com/i/api/1.1/jot +||twitter.com/i/csp_report? +||twitter.com/i/jot +||twitter.com^*/log.json +||two.cm.com^ +||tyler-brown.com/api/stats? +||typepad.com/t/stats? +||u.strike.bz^ +||u1sdata.webullfintech.com^ +||ua.financialexpress.com/api/capture +||ua.indianexpress.com^ +||ub.galaxus. +||uber.com/_events +||uber.com/_track +||uber.com/careers/apply/_log +||ubereats.com/_errors +||ubereats.com/_events +||ubereats.com/_track +||ubt.tracking.shopee. +||ubuyanalytics.ubuy.com^ +||ucoz.com/stat/ +||ucweb.com/collect/ +||ud.galaxus.ch^ +||udc.yahoo.com/v2/public/yql? +||udemy.com/api-2.0/ecl +||ugprod.geeksforgeeks.org/post/api/usertracking/ +||ukdevilz.com/api/stats? +||ulogin.ru/stats.html +||ultimate-guitar.com/components/ab/event? +||ultimedia.com/deliver/statistiques/ +||um.contentstudio.io^ +||umami.flixer.su^ +||umami.spencerdevs.xyz^ +||umami.vidfast.pro^ +||umami.wakarimasen.moe^ +||unity3d.com/v1/events +||unl1zvy2zuyn.franchiseplus.nl^ +||unsplash.com/nmetrics +||untappd.com/profile/impression? +||up4stream.com/js/anti.js +||upi.com/story/stat/ +||uprinting.com/muffins/UPTracker- +||ups.com/img/icp.gif +||ups2up.fun/js/anti.js +||upstract.com/tokei/ +||upwork.com/shasta/suit +||upwork.com/upi/jslogger +||urs.metacritic.com^ +||use.hetzner.com^ +||useblackbox.io/telemetry +||user-back.ggcorp.me/statistics +||user-metrics.onthemarket.com^ +||users.videasy.to/api/track +||usmetric.rediff.com^ +||usnews.com/static/esi/usn-geo.json +||uviu.com/activity/ +||v.adblockultimate.net^ +||v.ctrl.blog^ +||vagrantup.com/api/auth/_log +||vanityfair.com/user-context?referrer +||vbox7.com/aj/player-stats? +||vf.startpage.com^ +||videezy.com/assets/tracking/show_page_tracking- +||video.mobile.yahoo.com/log|$xmlhttprequest +||vidsrc.icu/js/script-custom.js +||vidyard.com/api/metrics +||views.arabnews.com^ +||views.asurascans.com^ +||vimeo.com/ablincoln/ +||vimeo.com/add/ +||vimeocdn.com/js_opt/logging_combined.min.js +||visualstudio.com/v2/track +||vitals.groww.in/collect +||vivaldi.*/rep/rep.js +||vixenlive.com/api/metrics +||vizcloud.co/ping/ +||vk.com/al_video.php?act=ads_stat +||vk.com/al_video.php?act=inc_view_counter +||vk.com/al_video.php?act=live_heartbeat +||vk.com/al_video.php?act=track_player_events +||vk.com/al_video.php?act=watch_stat +||vk.com/js/lib/px.js +||vortex.hulu.com^ +||voyeur-house.tv/js/track.js +||vpsbenchmarks.com/plausible.vpsb.js +||vrbo.com/edap/elo/v1/event/beacon +||vrbo.com/serp/api/metrics +||vsco.co/api/cantor/track +||w2g-mtrx.w2g.tv^ +||w2g-ping.b-cdn.net^ +||w3-reporting.reddit.com^ +||w6.chabad.org^ +||w9g7dlhw3kaank.www.eldorado.gg^ +||wa.childrensplace.com^ +||wa.gmx.co.uk^ +||wa.gymboree.com^ +||wa.pjplace.com^ +||wa.slideshare.net^ +||wa.sugarandjade.com^ +||waaw.ac/cdn-cgi/trace +||waaw.to/cdn-cgi/trace +||waaw1.tv/cdn-cgi/trace +||waitrose.com/gDaVC7/ +||wal.wolfram.com^ +||wallethacks.com/js/t/| +||wallethacks.com/js/w +||walmart.ca/api/bsp/logger +||walmart.ca/api/home-page/logger +||walmart.ca/api/landing-page/beacon-logger +||walmartimages.com/dfw/4ff9c6c9-d9a0/$domain=walmart.com +||wapn1.flosports.tv^ +||wart.val.town^ +||watchadsontape.com/stat/ +||wattpad.com/js/tracker/app. +||wc.yahoodns.net^$image +||wccftech.com/cnt7vfDVvWa3.js +||wealthfront.com/cm/metrics +||wealthfront.com/event +||wealthfront.com/track_next?p= +||wealthfront.com/userevents/ +||web-perf.booking.com^ +||web.analytics.metrobyt-mobile.com^ +||web.snapchat.com/web-analytics-v2/web/events +||web.whatsapp.com/wam +||webapi.3cx.com^ +||webbff.eu.4game.com/api/exporter/events +||webd-assets.cdn4dd.com/s.js$domain=doordash.com +||weblog.flyasiana.com^ +||webmd.com/static/v/c? +||website-api.omni.fairprice.com.sg/api/tracking/ +||weedmaps.com/pixel? +||wellsfargo.com/as/jsLog +||wellsfargo.com/dti_apg/ +||wellsfargo.com/jenny/ +||wellsfargo.com/tracking/ +||weworkremotely.com/listing_ads/8/impression? +||wfinterface.com/tracking/$domain=wellsfargo.com +||wh.ipaddress.com^ +||whattomine.com/stats +||wheregoes.com/api/event +||whistleout.com.au/track +||wikihow.com/x/collect? +||wikimonde.com/matom.js +||wikipedia.org/beacon/ +||wikipedia.org/ins-502b/v2/events +||windy.com/sedlina/ga/ +||wipo.int/wipo-analytics/ +||wish.com/api/analytics/ +||wiztube.xyz/cdn-cgi/trace +||wnyc.org/analytics/ +||wolfram.com/common/javascript/analytics.js +||wolfram.com/common/javascript/wal/latest/walLoad.js +||wondershare.com/trk +||worldremit.com/web-cms/api/metric +||wsj.com/cookies/pixel.gif +||wstats.e-wok.tv^ +||www-backend.strinova.com/api/common/uid +||www.ebay.*/gh/dfpsvc? +||x.com/1.1/attribution +||x.com/1.1/graphql/app_context.json +||x.com/1.1/graphql/error_log.json +||x.com/1.1/graphql/user_flow.json +||x.com/1.1/graphql/viewer_context.json +||x.com/1.1/jot +||x.com/9/measurement/ +||x.com/i/api/1.1/graphql/app_context.json +||x.com/i/api/1.1/graphql/error_log.json +||x.com/i/api/1.1/graphql/user_flow.json +||x.com/i/api/1.1/graphql/viewer_context.json +||x.com/i/api/1.1/jot +||x.com/i/csp_report +||x.com/i/jot +||x.com^*/log.json +||x.designboom.com^ +||xero.com/api/events/ +||xfinity.com/event/ +||xhamster.com/api/$ping +||xhamsterlive.com/pixel/ +||xhcdn.com/js/*.track.min.js +||xing.com/logjam/ +||xmetrics.camsoda.com^ +||xnxx.com/picserror/ +||xnxx.tv/picserror/ +||xp.apple.com/config/*/report/ +||xp.apple.com/report/ +||xvideos.com/picserror/ +||xxf.mobi/hit +||y.aram.zone/pageview +||ya.ru/clck/ +||yahoo.com/_td_api/beacon/ +||yahoo.com/beacon/ +||yahoo.com/beacon? +||yahoo.com/pageview? +||yahoo.net/pixel.gif +||yandex.*/clck/$~ping +||yandex.*/count/ +||yandex.com/clck/ +||yandex.eu/clck/ +||yandex.ru/clck/ +||yandexcdn.com/cdn-cgi/trace +||yelp.*/sit_rep +||yelp.com/ad_acknowledgment +||yelp.com/ad_syndication_user_tracking +||yelp.com/spice? +||yes88kks.infinityscans.net^ +||yimg.com/aaq/vzm/cs_*.js +||yimg.com/aaq/wf/wf-darla- +||yimg.com/rx/ev/lib/comscore- +||yodayo.com/scripts/pixel.js +||you.com/api/recordEvent +||youjizzlive.com/api/metrics +||youmaker.com/g/test +||yourupload.com/jwe? +||youtube-nocookie.com/api/stats/atr?ns= +||youtube-nocookie.com/api/stats/qoe? +||youtube-nocookie.com/ptracking? +||youtube-nocookie.com/robots.txt? +||youtube-nocookie.com/youtubei/v1/log_event? +||youtube.com/api/stats/ads? +||zed.dev/docs/theme/analytics.js +||zoom.us/*/app-telemetry. +||zoom.us/*/fingerprintjs- +||zoom.us/user/anonymous/telemetry +!||youtube.com/api/stats/atr?ns=*&ver=2&cmt=1.*&fs=0&*&euri&lact= +||youtube.com/api/stats/qoe?*page&ns=yt&fexp=v1%*&event=streamingstats& +||youtube.com/get_video? +||youtube.com/pcs/activeview? +||youtube.com/ptracking?html5=1&video_id=*&cpn=*&ei=*&ptk=youtube_*&pltype=content +||youtube.com/set_awesome? +! ||youtube.com/youtubei/v1/log_event? +||youtube.googleapis.com/youtubei/v1/log_event? +||youtubekids.com/api/stats/ads? +||youtubekids.com/api/stats/qoe? +||youtubekids.com/ptracking? +||youtubekids.com/youtubei/v1/log_event? +||ypmate.com/api/metrics +||yupp.ai/api/log-event +||z.cdp-dev.cnn.com^ +||z737.thestar.com^ +||za.qeeq.com^ +||zalando-lounge.*/api/tracking/ +||zalando-prive.*/api/tracking/ +||zappos.com/err.cgi? +||zappos.com/karakoram/js/main. +||zed.dev/api/send_page_event +||zenimpact.io/dist/zen_init.min.js +||zerohedge.com/statistics-ajax? +||zillowstatic.com/contact-pixel/$image,domain=zillow.com +||zion-telemetry-nonprod.api.cnn.io^ +||zion-telemetry.api.cnn.io^ +||zoosk.com/cs/tp.png? +||zumper.com/events +! Email trackers(for long urls, 9000+ chars not being filtered) +||googleusercontent.com/*/wf/open?upn=$image +! OpenTable +://track.opentable. +! https://github.com/uBlockOrigin/uAssets/issues/33186 +://tralut.*/collect/value? +://tralut.*/js/script-dynamic.js +://tralut.*/js/tracking.js +! Vinted +://www.vinted.*/relay/events +! akamaihd.net +||akamaihd.net^$image,domain=globalnews.ca|nycgo.com|stcatharinesstandard.ca +! Non-legit domains +://edge-client/$domain=barrons.com +! Plausible selfhosted +||jeremiahlee.com/fanboynz.js +! confection.io +||hubspot.com/collected-forms/$xmlhttprequest,domain=confection.io +||s3.amazonaws.com/downloads.mailchimp.com/$script,domain=confection.io +||substation.confection.io^ +! Adobe +||lightning.ncaa.com/launch/$script +! onesignal.com +||onesignal.com^$domain=androidauthority.com|iphoneincanada.ca|rockpapershotgun.com|senpa.io|shineads.org +! Bing +||bing.com/fd/ls/l?IG= +||bing.com/fd/ls/lsp.aspx +||bing.com^*/glinkping.aspx$ping,xmlhttprequest +||bing.com^*/GLinkPingPost.aspx$ping,xmlhttprequest +! Site specific elements (due to EP) +###cxense-recs-in-article +##.embed-responsive-trendmd +! Aliexpress +||aliyuncs.com/r.png +||gj.mmstat.com^ +||oneid.mmstat.com^ +! https://github.com/easylist/easylist/commit/7a86afd +/rest/high/api/cogitoergosum +! (naiadsystems.com/icfcdn.com) +/api/events|$ping,~third-party +/api/statsd|$~third-party,xmlhttprequest +/api/v1/activity|$~third-party,xmlhttprequest +/api/v2/jsonlogger +||naiadsystems.com/api/v1/xment/ +! Port scanning Fingerprinting Trackers (Privacy and CPU abuse) +! https://nullsweep.com/why-is-this-website-port-scanning-me/ +/^https?:\/\/fdts\.ebay-kleinanzeigen\.de\/[a-z0-9]{13,18}\.js\?/$script,domain=kleinanzeigen.de +/^https?:\/\/pov\.spectrum\.net\/[a-zA-Z0-9]{14,}\.js/$script,domain=spectrum.net +/^https?:\/\/tjmaxx\.tjx\.com\/libraries\/[a-z0-9]{20,}/$script,xmlhttprequest,domain=tjx.com +/^https?:\/\/tmx\.(td|tdbank)\.com\/[a-z0-9]{14,18}\.js.*/$script,domain=mbna.ca|td.com|tdbank.com +/^https?:\/\/www\.ebay-kleinanzeigen\.de\/[a-z0-9]{8}\-[0-9a-f]{4}\-/$script,domain=kleinanzeigen.de +/^https?:\/\/www\.kroger\.com\/content\/{20,}/$script,xmlhttprequest,domain=kroger.com +||127.0.0.1^$third-party,domain=53.com|ameriprise.com|beachbody.com|chick-fil-a.com|citi.com|ebay.at|ebay.be|ebay.ca|ebay.ch|ebay.cn|ebay.co.uk|ebay.com|ebay.com.au|ebay.com.hk|ebay.com.my|ebay.com.sg|ebay.de|ebay.es|ebay.fr|ebay.ie|ebay.it|ebay.nl|ebay.ph|ebay.pl|equifax.ca|equifax.com|globo.com|gumtree.com|kleinanzeigen.de|lendup.com|mbna.ca|rusneb.ru|sciencedirect.com|sky.com|spectrum.net|td.com|tiaa.org|vedacheck.com|wepay.com|whatleaks.com +||cfa.fidelity.com^ +||check3.tiaa.org^ +||citi.com^*/fp.js +||citibank.com.ph/JSO/js/fp.js +||citibank.com.ph/tmx/js/ +||citibank.com.sg/jso/js/fp.js +||citibank.com.sg/tmx/ +||clear.wallapop.com^ +||content.canadiantire.ca^ +||content.discover.com^ +||content.tab.com.au^ +||content22.bmo.com^ +||content22.citi.eu^$script +||content22.citibank.com.au^ +||content22.citibank.com.sg^$script +||content22.citibankonline.com^ +||content22.online.citi.com^ +||customer.homedepot.com^$script +||drfdisvc.walmart.com^ +||ebay.com/nkfytkqtoxtljvzbxhr.js$script,domain=ebay.com +||ebaystatic.com/rs/v/10341xh50yz21mhhydueu4m5wad.js +||ebaystatic.com/rs/v/dxtuvtkk2q3hpkc1xveeo13iaek.js +||ebaystatic.com/rs/v/klminxoj1uyzvo0p0qu4nhpg0qo.js +||ebaystatic.com/rs/v/s0hteylevy4bpkd12dvkd4yi5ms.js +||event.evtm.53.com^ +||idhtm.bb.com.br^ +||idstatus.sky.com^ +||img2021.navyfederal.org^ +||imgs.signifyd.com^ +||log-185a61e7.bendigobank.com.au^ +||log-2ffe60ee.westpac.com.au^ +||mfasa.chase.com/auth/js/jpmc_bb_check.js +||olacontent.schwab.com^$script +||qfp.intuit.com^ +||rba-screen.healthsafe-id.com^ +||rsx.afterpay.com^ +||src.ebay-us.com/*=usllpic$script,domain=ebay.com +||svc2.sc.com^ +||tm-eps.neutrino.nu^ +||tmetrix.my.chick-fil-a.com^ +||tmx.bestbuy.com^ +||tmx.td.com^ +||u46.pnc.com^ +||w-profiling.cibc.com^$script +||w-profiling.simplii.com^ +||wup-185a61e7.bendigobank.com.au^ +||wup-2ffe60ee.westpac.com.au^ +! Fingerprint +||bankofamerica.com/cookie-id.js +||bup.bankofamerica.com^ +||cdn1.skrill.com^ +||d276.ourmidland.com^ +||d810.mysanantonio.com^ +||dii.bankaust.com.au^ +||eventbus.intuit.com^ +||f775.thehour.com^ +||glassbox-hlx-igw.bankofamerica.com^ +||h353.ncadvertiser.com^ +||h559.stamfordadvocate.com^ +||halifax-online.co.uk/scripts/16c9d93d/ +||j198.registercitizen.com^ +||l936.expressnews.com^ +||o398.trumbulltimes.com^ +||pf.intuit.com^ +||q777.sfchronicle.com^ +||rail.bankofamerica.com^$script,~third-party,xmlhttprequest +||t570.wiltonbulletin.com^ +||tilt.bankofamerica.com^ +||u652.myplainview.com^ +||u927.sfgate.com^ +||w740.newstimes.com^ +||y738.nhregister.com^ +||y820.darientimes.com^ +||y900.greenwichtime.com^ +||z211.yourconroenews.com^ +||z492.ctinsider.com^ +||z680.beaumontenterprise.com^ +||zion.qbo.intuit.com^ +! Consent/GDPR tracking +! https://github.com/easylist/easylist/blob/08ad3ed93e8ddbc32b8860340f25e8ddf4074741/easyprivacy/easyprivacy_specific.txt#L2813 +://a02342. +||cb-mms.carbuyer.co.uk^ +||cmp.courrierinternational.com^ +||cmp.finn.no^ +||cmp.huffingtonpost.fr^ +||cmp.lavie.fr^ +||cmp.lemonde.fr^ +||cmp.lepoint.fr^ +||cmp.netzwelt.de^ +||cmp.nouvelobs.com^ +||cmp.tek.no^ +||cmp.telerama.fr^ +||d.sourcepoint.capitalfm.com^ +||fuse.forbes.com^ +||sourcepoint-mms.aetv.com^ +||sourcepoint-mms.history.com^ +||sourcepoint-mms.mylifetime.com^ +||trustarc.mgr.consensu.org/get? +||vg247-uk.vg247.com^ +! McClatchy sites (bellinghamherald.com,bnd.com,bradenton.com,centredaily.com etc) +! https://github.com/easylist/easylist/blob/4ec8049213fd2ede4682f1760764ae79cda7cc55/easyprivacy/easyprivacy_specific.txt#L1067 +/misites/* +/yozons-lib/* +! CSP Mining +$csp=child-src 'none'; frame-src 'self' *; worker-src 'none',domain=fileone.tv|theappguruz.com +$csp=child-src 'none'; frame-src *; worker-src 'none',domain=thepiratebay.org|vidoza.net +! Other resource abuse +||gyrovague.com^$domain=archive.fo|archive.is|archive.li|archive.md|archive.ph|archive.today|archive.vn|btdig.com + +! *** easylist:easyprivacy/easyprivacy_specific_perimeterx.txt *** +||alaskaair.com/AlXMT4Ma/init.js +||anthropologie.com/XgWM9nuH/init.js +||apartmenttherapy.com/jAYekY18/init.js +||arcteryx.com/943r4Fb8/init.js +||asda.com/px/PX1UGLZTko/init.js +||ashleyfurniture.com/ouqLB4fq/init.js +||auctionzip.com/eKtvxkQ2/init.js +||b.px-cdn.net/api/v1/PXrf8vapwA/ +||bathandbodyworks.com/lsXlyYa5/init.js +||beaumontenterprise.com/413gkwMT/init.js +||belk.com/0iiey9LM/init.js +||bhphotovideo.com/3D8mkYG1/init.js +||bloomberg.com/8FCGYgk4/init.js +||bm.paypal.com/spd3TxHV/init.js +||booking.com/87sduif98q3rijax +||booktopia.com.au/Ns7aBMIv/init.js +||brownsshoes.com/IZ/2tcS0qiG/init.js +||build.com/2Ztkihy4/init.js +||calm.com/api/12Xk43jk/init.js +||calvinklein.us/n8ANl15k/init.js +||carbon38.com/A44kxi5a/init.js +||careermatch.com/oGckki0e/init.js +||carolsdaughter.com/IZ/uaPO0cuk/init.js +||carters.com/0F3091f3/init.js +||chron.com/413gkwMT/init.js +||cookpad.com/FqtAw5et/init.js +||couchsurfing.com/bEcn7fQX/init.js +||crunchbase.com/rw7M6iAV/init.js +||ctinsider.com/413gkwMT/init.js +||ctpost.com/413gkwMT/init.js +||cubbyathome.com/jAYekY18/init.js +||discount.hk-hotel.com/QUkd4lO9/init.js +||dormtherapy.com/jAYekY18/init.js +||drupal.org/VnPBBfwe/init.js +||expressnews.com/413gkwMT/init.js +||fiverr.com/px/client/PXK3bezZfO/main.min.js +||flixcart.com/px/gNtTli3A/init.js +||flooranddecor.com/v1HqbVho/init.js +||foodora.fi/lJuB4eTB/init.js +||foodora.se/lJuB4eTB/init.js +||foodpanda.bg/lJuB4eTB/init.js +||foodpanda.co.th/lJuB4eTB/init.js +||foodpanda.com.bd/lJuB4eTB/init.js +||foodpanda.com.kh/lJuB4eTB/init.js +||foodpanda.com.mm/lJuB4eTB/init.js +||foodpanda.com.tw/lJuB4eTB/init.js +||foodpanda.hk/lJuB4eTB/init.js +||foodpanda.la/lJuB4eTB/init.js +||foodpanda.my/lJuB4eTB/init.js +||foodpanda.ph/lJuB4eTB/init.js +||foodpanda.pk/lJuB4eTB/init.js +||foodpanda.ro/lJuB4eTB/init.js +||foodpanda.sg/lJuB4eTB/init.js +||freepeople.com/tN88Q85M/init.js +||hotpads.com/xOR1K5b6/init.js +||houstonchronicle.com/413gkwMT/init.js +||iherb.com/VtidNbtC/init.js +||internships.com/oGckki0e/init.js +||jimmyjohns.com/Abo2Yc8X/init.js +||joann.com/qXTWmr91/init.js +||kerastase-usa.com/IZ/PXXiuO7QTJ/init.js +||kget.com/CvbtpUrj/init.js +||kickstarter.com/Uy3R669N/init.js +||kiehls.com/IZ/PXG8ATFja1/init.js +||kiva.org/r3pNVz1F/init.js +||ktla.com/CvbtpUrj/init.js +||lancome-usa.com/IZ/PXq99AlOxk/init.js +||lmtonline.com/413gkwMT/init.js +||madlan.co.il/o4wPDYYd/init.js +||middletownpress.com/413gkwMT/init.js +||mrt.com/413gkwMT/init.js +||mysanantonio.com/413gkwMT/init.js +||ncadvertiser.com/413gkwMT/init.js +||newsnationnow.com/yZuPxxW0/init.js +||newstimes.com/413gkwMT/init.js +||nhregister.com/413gkwMT/init.js +||nyxcosmetics.com/IZ/PXLZNv2dn4/init.js +||octopart.com/kdRQnL15/init.js +||oshkosh.com/0F3091f3/init.js +||priceline.com/9aTjSd0n/init.js +||ralphlauren.com^*/init.js +||realtor.com/rdc_user_check/init.js +||registercitizen.com/413gkwMT/init.js +||sams.com.mx/px/PX87wpO5aK/init.js +||samsclub.com/px/PXsLC3j22K/init.js +||seattlepi.com/413gkwMT/init.js +||seekingalpha.com/xgCxM9By/init.js +||sensor.grubhub.com/O97ybH4J/init.js +||sfchronicle.com/413gkwMT/init.js +||sfgate.com/413gkwMT/init.js +||shiekh.com/iJ55yhVs/init.js +||shoebacca.com/YaRJwC0q/init.js +||simon.com/46SCNLxs/init.js +||skechers.com/dL6GOSf9/init.js +||skiphop.com/0F3091f3/init.js +||skyscanner.*/rf8vapwA/init.js +||snipesusa.com/6XNN2xkk/init.js +||spirit.com/kp4CLSb5/init.js +||ssense.com/58Asv359/init.js +||stamfordadvocate.com/413gkwMT/init.js +||stockx.com/16uD0kOF/init.js +||streeteasy.com/cZdhF737/init.js +||studeersnel.nl/27m703Hm/init.js +||studocu.com/27m703Hm/init.js +||sweetwater.com/p2TBVNJZ/init.js +||thehill.com/6zcfGH4h/init.js +||thehour.com/413gkwMT/init.js +||thekitchn.com/jAYekY18/init.js +||therealreal.com/ev56mY37/init.js +||timesunion.com/413gkwMT/init.js +||tumi.com/4i06uv8M/init.js +||walmart.ca/px/PXnp9B16Cq/init.js +||walmart.com/px/PXu6b0qd2S/init.js +||walmartcanada.ca/px/PXcfrcFEfA/init.js +||walmartcareerswithamission.com/px/PXcfrcFEfA/init.js +||walmartethics.com/px/PXcfrcFEfA/init.js +||walmartpetrx.com/1Ct9c6G3/init.js +||walmartrealty.com/px/PXcfrcFEfA/init.js +||weekand.com/413gkwMT/init.js +||wfla.com/CvbtpUrj/init.js +||wgno.com/CvbtpUrj/init.js +||wine-searcher.com/K6S8okp3/init.js +||worldmarket.com/px/XMpXrQpA/init.js +||worthpoint.com/lIUjcOwl/init.js +||www.digikey.*/lO2Z493J/init.js +||www.mouser.*/4UAZUiaI/init.js +||yeti.com/T1p5rBaN/init.js +||zazzle.ca/botdefender/init.js +||zazzle.ca/svc/px +||zazzle.co.nz/botdefender/init.js +||zazzle.co.nz/svc/px +||zazzle.co.uk/botdefender/init.js +||zazzle.co.uk/svc/px +||zazzle.com.au/botdefender/init.js +||zazzle.com.au/svc/px +||zazzle.com/botdefender/init.js +||zazzle.com/svc/px +||zazzle.de/botdefender/init.js +||zazzle.de/svc/px +||zazzle.es/botdefender/init.js +||zazzle.es/svc/px +||zazzle.fr/botdefender/init.js +||zazzle.fr/svc/px +! ||zillow.com/HYx10rg3/init.js +||zoominfo.com/osx7m0dx/init.js +!-----------------Extension specific systems-----------------! +! *** easylist:easyprivacy/easyprivacy_specific_uBO.txt *** +!#if (ext_ublock || adguard) +! https://github.com/AdguardTeam/AdguardFilters/issues/180750 +||pcoptimizedsettings.com/wp-content/plugins/koko-analytics/$important,redirect=noop.js,script +||pcoptimizedsettings.com/wp-content/uploads/breeze/google/gtag.js$important,redirect=noop.js,script +! https://github.com/AdguardTeam/AdguardFilters/issues/218663 +||d21y75miwcfqoq.cloudfront.net/436f3341$image,redirect=nooptext +! GPC +accuweather.com,acmemarkets.com,aiskillsnavigator.microsoft.com,boston.com,capezio.com,chime.com,costco.com,crunchyroll.com,deezer.com,delta.com,dnb.co.uk,dnb.com,dollargeneral.com,engadget.com,espn.com,eventbrite.com,filson.com,flyfrontier.com,formula1.com,geizhals.de,gladiatorgarageworks.com,harborfreight.com,hopwtr.com,jdsports.com,kkrt.com,lenscrafters.com,livewithkellyandmark.com,madewell.com,mail.yahoo.com,mazdausa.com,milesplit.live,monsterenergy.com,newyorker.com,norton.com,pandora.com,payment.nba.com,porsche.com,qobuz.com,rivals.com,soundcloud.com,spotify.com,subway.com,techcrunch.com,ticketmaster.*,tidal.com,tirerack.com,twitter.com,uber.com,ubereats.com,usaa.com,vimeo.com,visible.com,weather.com,wunderground.com,www.yahoo.com,x.com##+js(set, Navigator.prototype.globalPrivacyControl, false) +accuweather.com,acmemarkets.com,aiskillsnavigator.microsoft.com,boston.com,capezio.com,chime.com,costco.com,crunchyroll.com,deezer.com,delta.com,dnb.co.uk,dnb.com,dollargeneral.com,engadget.com,espn.com,eventbrite.com,filson.com,flyfrontier.com,formula1.com,geizhals.de,gladiatorgarageworks.com,harborfreight.com,hopwtr.com,jdsports.com,kkrt.com,lenscrafters.com,livewithkellyandmark.com,madewell.com,mail.yahoo.com,mazdausa.com,milesplit.live,monsterenergy.com,newyorker.com,norton.com,pandora.com,payment.nba.com,porsche.com,qobuz.com,rivals.com,soundcloud.com,spotify.com,subway.com,techcrunch.com,ticketmaster.*,tidal.com,tirerack.com,twitter.com,uber.com,ubereats.com,usaa.com,vimeo.com,visible.com,weather.com,wunderground.com,www.yahoo.com,x.com##+js(set, navigator.globalPrivacyControl, false) +! Clear GPC storage item +madewell.com##+js(cookie-remover, dns_cookie) +visible.com##+js(set-local-storage-item, browser-ids, $remove$) +! Showing "Enable Cookies Please enable cookies in your browser to access USAA." +usaa.com##+js(set-cookie, GPC, 1, , reload, 1) +! server-side GTM +bolighub.dk##+js(acs, document.getElementsByTagName, gtm.js) +! chartbeat.js redirect +||static.chartbeat.com/js/chartbeat.js$redirect=chartbeat.js,script +||static.chartbeat.com/js/chartbeat_mab.js$redirect=chartbeat.js,script +! Admiral +247sports.com,al.com,arstechnica.com,bringmethenews.com,cattime.com,cbr.com,cheatsheet.com,cleveland.com,collider.com,comingsoon.net,crooksandliars.com,cwtv.com,dogtime.com,esportstales.com,forums.hfboards.com,freep.com,fresnobee.com,gamerant.com,gbatemp.net,golfdigest.com,grabify.link,hancinema.net,hemmings.com,howtogeek.com,ijr.com,informazionefiscale.it,inquirer.net,insider-gaming.com,knowyourmeme.com,magesypro.pro,makeuseof.com,masslive.com,mlive.com,money.it,motorbiscuit.com,movieweb.com,nationalreview.com,nbcnews.com,neopets.com,nofilmschool.com,nypost.com,omg.blog,order-order.com,oregonlive.com,pcwelt.de,pennlive.com,playstationlifestyle.net,pwinsider.com,savvytime.com,screenrant.com,siliconera.com,silive.com,simpleflying.com,sporcle.com,stealthoptional.com,techlicious.com,technicpack.net,thedraftnetwork.com,thefashionspot.com,thegamer.com,thelayoff.com,thenerdstash.com,theprovince.com,titantv.com,topspeed.com,twinfinite.net,videogamer.com,webmail.wiki,wnd.com,worldpopulationreview.com,wral.com,wrestlezone.com,wrestlinginc.com,xda-developers.com##+js(acs, document.createElement, admiral) +apnews.com,artforum.com,artnews.com,billboard.com,calgaryherald.com,calgarysun.com,crooksandliars.com,deadline.com,dpreview.com,driving.ca,financialpost.com,goldderby.com,golfdigest.com,hollywoodreporter.com,indiewire.com,lfpress.com,nationalpost.com,nbcsports.com,oregonlive.com,ottawasun.com,robbreport.com,rollingstone.com,sherdog.com,sidereel.com,superherohype.com,techcrunch.com,torontosun.com,vancouversun.com,variety.com,vibe.com,windsorstar.com,wwd.com##+js(acs, document.getElementsByTagName, .pubads) +ranker.com##+js(aost, HTMLElement.prototype.insertBefore, /[A-Z] .+chunks\/\d{4}\./) +reuters.com##+js(aost, admiral, .js?) +al.com,attackofthefanboy.com,destructoid.com,edmontonsun.com,gamepur.com,gamerjournalist.com,gameskinny.com,lehighvalleylivecom,lgbtqnation.com,macwelt.de,mlive.com,news8000.com,nj.com,pcwelt.de,primagames.com,siliconera.com,syracuse.com,themarysue.com,touchtapplay.com,wegotthiscovered.com##+js(aost, decodeURI, /(?=^(?!.*\.js))/) +mensjournal.com##+js(json-edit, ..props.children.*[?.key=="admiral-script"]) +247sports.com,cbsnews.com,cbssports.com,indiewire.com,masslive.com,nypost.com,pagesix.com,pennlive.com,syracuse.com##+js(rmnt, script, '"data-adm-url"') +abc17news.com,al.com,artforum.com,artnews.com,awkward.com,awkwardmom.com,bailiwickexpress.com,barnsleychronicle.com,becomingpeculiar.com,bethcakes.com,blogher.com,bluegraygal.com,briefeguru.de,carmagazine.co.uk,cattime.com,cbr.com,chaptercheats.com,cleveland.com,collider.com,comingsoon.net,commercialobserver.com,competentedigitale.ro,crafty.house,dailyvoice.com,decider.com,didyouknowfacts.com,dogtime.com,dualshockers.com,dustyoldthing.com,faithhub.net,femestella.com,footwearnews.com,freeconvert.com,frogsandsnailsandpuppydogtail.com,fsm-media.com,funtasticlife.com,fwmadebycarli.com,gamerant.com,gfinityesports.com,givemesport.com,gulflive.com,helloflo.com,homeglowdesign.com,honeygirlsworld.com,hotcars.com,howtogeek.com,insider-gaming.com,insurancejournal.com,jasminemaria.com,kion546.com,lehighvalleylive.com,lettyskitchen.com,lifeinleggings.com,liveandletsfly.com,lizzieinlace.com,localnews8.com,lonestarlive.com,madeeveryday.com,maidenhead-advertiser.co.uk,makeuseof.com,mardomreport.net,masslive.com,melangery.com,milestomemories.com,mlive.com,modernmom.com,momtastic.com,mostlymorgan.com,motherwellmag.com,movieweb.com,muddybootsanddiamonds.com,musicfeeds.com.au,nationalreview.com,nj.com,nordot.app,nothingbutnewcastle.com,nsjonline.com,oakvillenews.org,observer.com,oregonlive.com,pagesix.com,pennlive.com,pinkonthecheek.com,predic.ro,puckermom.com,qtoptens.com,realgm.com,robbreport.com,royalmailchat.co.uk,samchui.com,sandrarose.com,screenrant.com,sheknows.com,sherdog.com,sidereel.com,silive.com,simpleflying.com,sloughexpress.co.uk,spacenews.com,sportsgamblingpodcast.com,spotofteadesigns.com,ssnewstelegram.com,stacysrandomthoughts.com,superherohype.com,syracuse.com,tablelifeblog.com,thebeautysection.com,thecelticblog.com,thecurvyfashionista.com,thefashionspot.com,thegamer.com,thenerdyme.com,thenonconsumeradvocate.com,thethings.com,timesnews.net,topspeed.com,toyotaklub.org.pl,travelingformiles.com,tvline.com##+js(rmnt, script, '"v4ac1eiZr0"') +baeldung.com,cheatsheet.com,pwinsider.com##+js(rmnt, script, admiral) +gbatemp.net,usatoday.com##+js(set, admiral, noopFunc) +usatoday.com##+js(set, gnt.x.adm, '') +||operationsports.com/wp-json/navy/v1/tag?pid= +! noopjson +||acustomizedgift.com^$redirect=noopjs,script +||askdriver.com^$redirect=noopjs,script +||fishingtoolsbox.com^$redirect=noopjs,script +||fontserif.com^$redirect=noopjs,script +||glasscoyote.com^$redirect=noopjs,script +||goddesslamps.com^$redirect=noopjs,script +||inventorycache.com^$redirect=noopjs,script +||kindhush.com^$redirect=noopjs,script +||oceancloudhosts.com^$redirect=noopjson,xmlhttprequest +||ubiquitoussea.com^$redirect=noopjs,script +||unloadyourself.com^$redirect=noopjs,script +! anikore.jp +anikore.jp##html[class^="loading"]:style(visibility: visible !important;) +! https://github.com/uBlockOrigin/uAssets/issues/31343 +||void.nicopr.fr/rec$method=POST +! fedex.com +fedex.com##+js(set-local-storage-item, fdx_enable_new_detail_page, true) +! mweb.jp +mwed.jp##+js(acs, document.createElement, keen-tracking) +! nicovideo.jp +nicovideo.jp##+js(no-fetch-if, stella) +nicovideo.jp##+js(no-xhr-if, stella) +! redstoneonline.jp +||googletagmanager.com/gtag/js$important,redirect=googletagmanager_gtm.js,script,xmlhttprequest,domain=redstoneonline.jp +! abema.tv +!#if cap_html_filtering +abema.tv##^script:has-text(NREUM) +!#else +abema.tv##+js(rmnt, script, NREUM) +!#endif +! phileweb.com +phileweb.com##+js(set-attr, span[class] img.lazyload[width], src, [data-src]) +||clarity.ms/tag/$important,script,domain=phileweb.com +! e-begin.jp +e-begin.jp##.inviewSection:not(.is-show):style(transform: translateY(0) !important; opacity: 1 !important;) +! mustar.meitetsu.co.jp +mustar.meitetsu.co.jp##body[style="opacity: 0;"]:style(opacity: 1 !important;) +||googletagmanager.com/gtm.js$important,domain=mustar.meitetsu.co.jp +! coomer.party,kemono.party +coomer.st,kemono.cr,official.coomer.com.co##+js(set-local-storage-item, plausible_ignore, true) +! EOF +!#endif +! https://github.com/AdguardTeam/AdguardFilters/issues/205925 +ncbi.nlm.nih.gov##+js(set, ncbi.sg, {}) +ncbi.nlm.nih.gov##+js(set, ncbi.sg.ping, noopFunc) +||ncbi.nlm.nih.gov/core/pinger/pinger.js +! https://github.com/AdguardTeam/AdguardFilters/issues/209795 +bitdefender.com##body[style="opacity: 0;"]:style(opacity: 1 !important;) +||sstats.bitdefender.com^$important,redirect=noop.txt,xmlhttprequest +! https://github.com/AdguardTeam/AdguardFilters/issues/117006 +||r10s.jp/com/img/home/t.gif?$image,important,redirect=1x1.gif,domain=24.rakuten.co.jp +! https://github.com/easylist/easylist/commit/885ef7a64a7c872b99cf9e8f81de9ca28d877be8 +! https://github.com/uBlockOrigin/uBOL-home/issues/476#issuecomment-3306448980 +!#if !env_safari +||googletagmanager.com/gtm.js$important,domain=nexon.com +||nakanohito.jp^*/bi.js$important,domain=nexon.com +!#endif +! https://github.com/AdguardTeam/AdguardFilters/issues/217897 +@@||google-analytics.com/analytics.js$redirect-rule,script,domain=mond.how +! https://github.com/AdguardTeam/AdguardFilters/issues/210109 +||curos.ca/res/*/resources/scripts/lib/fingerprint.js$important,redirect=fingerprint2.js,script +! https://github.com/uBlockOrigin/uAssets/issues/31330 +||metrics.streaks.jp^$redirect=noop.txt,xmlhttprequest +!-----------------Individual cname tracking systems-----------------! +! *** easylist:easyprivacy/easyprivacy_specific_cname_dataunlocker.txt *** +||11b6n4ty2x3.taxliencode.com^ +||13js1lbtbj3.sparkloop.app^ +||16i6nuuc2ej.koelewijn.nl^ +||1a715b8q5m3j.www.logology.co^ +||1amehwchx31.bloxdhop.io^ +||1baq2nvd6n7.www.keevowallet.com^ +||1bpmtrvkqkj.pettoonies.com^ +||1bw7etm93lf.www.woodbrass.com^ +||1eusy6.boxoffice.adventuretix.com^ +||1hb4jkt1u2d.probemas.com^ +||1j2n061x3td.www.digi.no^ +||1k5vz1ejbcx.staging.probemas.com^ +||1kpv4njzilv.community.intersystems.com^ +||1vyt1eguj27.ommasign.com^ +||21fhq0t574p.talentkit.io^ +||21udflra4wd.app-dev.cainthus.com^ +||25ix8gm8ien.sandbox.panprices.com^ +||2829i2p88jx.www.csaladinet.hu^ +||2922qj5tf2n.swyftx.com.au^ +||2aa6f9qgrh9.acc.evservice.nl^ +||2e718yf5jypb.test.digitalsurge.io^ +||2rid9fii9chx.www.atlaslane.com^ +||2yqcaqbfnv.nextgen.shareablee.com^ +||3l0zszdzjhpw.www.comicleaks.com^ +||3wn3w3skxpym.round.t3.gg^ +||48z7wyjdsywu.www.revistaferramental.com.br^ +||4jaehnfqizyx.controlconceptsusa.com^ +||5jgwflo4y935b8udrp.www.pmn-nerez.cz^ +||5mc92su06suu.www.abhijith.page^ +||6nwp0r33a71m.app.dev.cardahealth.com^ +||6ynyejkv0j1s.app.tapmyback.com^ +||704g8xh7qfzx.www.intercity.technology^ +||771fnypadw0j.pt.themoneytizer.com^ +||78rkcgj4i8c6.www.cefirates.com^ +||7hdl8dlfjm4g.www.cybernetman.com^ +||8ehhtsv9bo7i.monkeylearn.com^ +||8ue4rp6yxyis.www.tapmyback.com^ +||8vwxqg.tapin.gg^ +||9b5gjkrnw71r.it.themoneytizer.com^ +||9kkjfywjz50v.www.eventus.io^ +||9l3cr6dvk2kb.adaptive.marketing^ +||9uim1pc4ej4n.ru.themoneytizer.com^ +||9ywl0cwf7e37m5yi.tapin.gg^ +||ac9kpxbans1l.staging.unstoppabledomains.com^ +||am3s622gcd6m.tt.live^ +||av6fm8zw2cvz.furucombo.app^ +||b1tow9h4erpw.anur.polymerdev.com^ +||b20p6lt350nt.app.polymersearch.com^ +||b536mpmxoqxa.www.themoneytizer.com^ +||b5j6itccyluq.nofluffjobs.com^ +||c319tpiw462o.segops.madisonspecs.com^ +||cqsecshf4rd9.www.tracktheta.com^ +||cqz6fn6aox.aporia.com^ +||cy98g9wuwn0n.angularjs.poc.glenigan.com^ +||dlziqh9bo7.boring.fm^ +||dsoxjxin5jji.controlconceptsusa.com^ +||e5obq1v261.www.lurkit.com^ +||f02b61sgc617.es.themoneytizer.com^ +||fkupm8697t19.eyevolution.de^ +||fq9vy0muyqi3.www.madrigalmaps.com^ +||fyznhp8inq9x.jaywilsonwebsolutions.com^ +||gl5g98t0vfjb.panprices.com^ +||gvmomuqjv1.swyftx.com^ +||hht8m6w8mnug.quine.sh^ +||ia84berzxy7v.de.themoneytizer.com^ +||ilkk97e98lvg.www.sidsplumbing.ie^ +||ivrnfvlcgubm.www.cefirates.com^ +||iwl2d7pa4yx1.www.logology.co^ +||ixa9ill0f7bg.grundbuch.zentraler-antragsservice.com^ +||jc917x3.adaptive.marketing^ +||jiktq0fr9hv6.meleton.ru^ +||kn81kivjwwc7.www.logology.co^ +||li3k4d70ig52.resourceya.com^ +||lj5s1u8ct5vz.app.chatpay.dev^ +||lofo3l15c674.platform.replai.io^ +||lv6od3a4sz12.www.logology.co^ +||m3uef4b38brmbntdzx.franchiseplus.nl^ +||m4zoxtrcea1k.controlconceptsusa.com^ +||m6c4t9vmqarj.www.cefirates.com^ +||mh9qqwotr890.koelewijn.nl^ +||mteme7li1d6r.vertexmarketingagency.com^ +||my8yyx7wcyyt.dev.monumentmetals-pwa.stgin.com^ +||n367tqpdxce0.quine.sh^ +||n4kb43cl2bsw.creatordrop.com^ +||nqyuel589fq5.esgrounding.com^ +||ns3w1qrlbk4s.tip.etip-staging.etip.io^ +||o3gxzoewxl1x.cp.zomro.com^ +||omyvimmw9wsk.t.mahapowerex.eu^ +||os270ojwwxtg.gameflow.tv^ +||otx23nu6rzon.prep.toppers.com^ +||p7h1silo3f.app.cainthus.com^ +||q4l5gz6lqog6.www.eventus.io^ +||qnlbs2m0uoto.www.videoath.com^ +||qqeuq1cmoooq.accuretawealth.com^ +||qri2r94eeajr.innovationcast.com^ +||qt5jl7r111h7.allesvoormijnvakantie.nl^ +||rgb9uinh2dej9ri.jacobzhang.de^ +||ros3d4dbs3px.salud-masculina.info^ +||s2whyufxmzam.chatpay.com.br^ +||soahu1wnmt6l.www.replai.io^ +||sr59t7wbx5.claricelin.com^ +||swaljol72dgv.controlconceptsusa.com^ +||sxwxswg8z1xe.www.arnowebtv.com^ +||t7baxp1xmw00.boxoffice.adventuretix.com^ +||ti3av8k3ikwm.resume.gerardbosch.xyz^ +||tnincvf1d1jl.de.themoneytizer.com^ +||tutbc1.www.tapmyback.com^ +||tzgurwizule3.app.cardahealth.com^ +||u0crsrah75fy.camberlion.com^ +||uhd5nn09mgml.fort-shop.kiev.ua^ +||umylynsr9b.quira.sh^ +||ut19suycy9vt.nowyformat.nofluffjobs.com^ +||vyz3nn85ed0e.controlconceptsusa.com^ +||vzal21mooz.hyperwrite.ai^ +||w38ju82bano4.cv.gerardbosch.xyz^ +||wayyaj8t094u.www.kodalia.com^ +||wiar9wff0ma9.ping.t3.gg^ +||xlvvy4msxr.coolinastore.com^ +||y4e04gql5o1b.www.nookgaming.com^ +||yrjpgjv35y9x.salud-masculina.info^ +||ysrrzgku6tar.us.themoneytizer.com^ +||z3617cz9ep.fitness.tappbrothers.com^ +||zkmhhr1fr79z.dictionary.basabali.org^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_a8net.txt *** +||1909a8.satofull.jp^ +||a8-22.hana-yume.net^ +||a8-affiliate.kase3535.com^ +||a8-cv.lean-body.jp^ +||a8-hoiku.mama-9jin.com^ +||a8-itp.qoo10.jp^ +||a8-kouten.kouten.work^ +||a8-mamacareer.mama-9jin.com^ +||a8-wpxblog.secure.wpx.ne.jp^ +||a8-wpxshin.secure.wpx.ne.jp^ +||a8-xshop.secure.xserver.ne.jp^ +||a8.01cloud.jp^ +||a8.123.rheos.jp^ +||a8.2ndstreet.jp^ +||a8.abemashopping.jp^ +||a8.ablenet.jp^ +||a8.aga-hakata.com^ +||a8.ahcswiss.com^ +||a8.air-snet.com^ +||a8.aliceandolivia.jp^ +||a8.ama-mail.jp^ +||a8.amairo-sky.com^ +||a8.andethic.com^ +||a8.anipos.com^ +||a8.arrrt-shop.com^ +||a8.asdf.co.jp^ +||a8.au-hikarinet.com^ +||a8.avalon-works.com^ +||a8.b-cafe.net^ +||a8.bambi-craft.com^ +||a8.bandel.jp^ +||a8.banninkun.com^ +||a8.beerowle.com^ +||a8.benro.jp^ +||a8.big-hikari.com^ +||a8.biglobe.openplat.jp^ +||a8.biz.ne.jp^ +||a8.biziphone.com^ +||a8.bobby-jp.com^ +||a8.boco.co.jp^ +||a8.bon-quish.jp^ +||a8.bousui-pro.com^ +||a8.brandcosme.com^ +||a8.brandkaimasu.com^ +||a8.bridal-hills.com^ +||a8.buddyup.shop^ +||a8.buvlabo.com^ +||a8.calmia-clinic.com^ +||a8.careecen-shukatsu-agent.com^ +||a8.career.rexit.co.jp^ +||a8.careerpark.jp^ +||a8.casie.jp^ +||a8.cbd-cosme.jp^ +||a8.cbd-oil.jp^ +||a8.cbiz.io^ +||a8.centarc.com^ +||a8.chat-lady.jp^ +||a8.chiyo-moni.com^ +||a8.choomia.com^ +||a8.chuo-estate.net^ +||a8.clarah.jp^ +||a8.classicalelf.shop^ +||a8.clubgets.com^ +||a8.cocomeister.jp^ +||a8.coloria.jp^ +||a8.copyki-pr.com^ +||a8.cotta.jp^ +||a8.creativevillage.ne.jp^ +||a8.croaster-select.com^ +||a8.cucua.fun^ +||a8.cyclemarket.jp^ +||a8.cypris-online.jp^ +||a8.daredemomobile.com^ +||a8.de-limmo.jp^ +||a8.degicashop.com^ +||a8.denki-koji.work^ +||a8.denki-tatsujin.com^ +||a8.denwa-hikari.com^ +||a8.denwa-kaisen.jp^ +||a8.denwa-kanyuken.com^ +||a8.diakaimasu.jp^ +||a8.direia-to.net^ +||a8.doctorstretch.com^ +||a8.dolcibolle.com^ +||a8.drinco.jp^ +||a8.dstation.jp^ +||a8.dymtech.jp^ +||a8.earth-shiho.com^ +||a8.earthwater-cayenne.com^ +||a8.efax.co.jp^ +||a8.elife.clinic^ +||a8.emeao.jp^ +||a8.emestore.me^ +||a8.engineer-shukatu.jp^ +||a8.eonet.jp^ +||a8.eonet.ne.jp^ +||a8.epauler.co.jp^ +||a8.epo.info^ +||a8.erasutamo.onlinestaff.jp^ +||a8.everest.ac^ +||a8.evertrust-inc.com^ +||a8.exam-katekyo.com^ +||a8.exetime.jp^ +||a8.exwimax.jp^ +||a8.final-seo.jp^ +||a8.fishing-v.jp^ +||a8.fit-theme.com^ +||a8.foods.petokoto.com^ +||a8.form.run^ +||a8.fots.jp^ +||a8.fpo.bz^ +||a8.fracora.com^ +||a8.freeconsultant.btcagent.jp^ +||a8.freeengineer.btcagent.jp^ +||a8.ftcbeauty.com^ +||a8.fujiorganics.com^ +||a8.fxism.jp^ +||a8.gaizyu-taiji.com^ +||a8.geo-online.co.jp^ +||a8.global-mobility-service.com^ +||a8.gme.co.jp^ +||a8.golfland.co.jp^ +||a8.goodappeal.site^ +||a8.gtm.co.jp^ +||a8.guardian-mp.aerial-p.com^ +||a8.h-daiya.co.jp^ +||a8.hagent.jp^ +||a8.hakata-hisamatsu.net^ +||a8.hana-mail.jp^ +||a8.happy-card.jp^ +||a8.haptic.co.jp^ +||a8.healthyolive.com^ +||a8.heart-denpo.com^ +||a8.hemptouch.co.jp^ +||a8.hikari-flets.jp^ +||a8.hikari-n.jp^ +||a8.hikari-softbank.jp^ +||a8.hikarix.net^ +||a8.hitohana.tokyo^ +||a8.hitoma-tuhan.com^ +||a8.hoken-connect.com^ +||a8.hokengarden.com^ +||a8.hokkaido-nb.jp^ +||a8.i-netservice.net^ +||a8.i-staff.jp^ +||a8.idiy.biz^ +||a8.ihinnoseiriyasan.com^ +||a8.iisakafuji.online^ +||a8.ikkatsu.jp^ +||a8.industrial-branch.com^ +||a8.infinitussub.com^ +||a8.ippin-do.com^ +||a8.jiiawater.com^ +||a8.joygirl.jp^ +||a8.joylab.jp^ +||a8.joyvack.com^ +||a8.jp.peacebird.com^ +||a8.kajitaku.com^ +||a8.kami2323.com^ +||a8.kanbei.jp^ +||a8.kateikyoushi.kuraveil.jp^ +||a8.kddi-hikari.com^ +||a8.kekkon.kuraveil.jp^ +||a8.kimonomachi.co.jp^ +||a8.kinkaimasu.jp^ +||a8.kinkennet.jp^ +||a8.kinnikushokudo-ec.jp^ +||a8.kireisalone.style^ +||a8.kireiyu.com^ +||a8.kissmusic.net^ +||a8.kizuna-link.jp^ +||a8.kland.shop^ +||a8.knew.jp^ +||a8.kojyo-worker.com^ +||a8.kotei-denwa.com^ +||a8.kougu-kaitoriyasan.com^ +||a8.kujo-service.com^ +||a8.l-co-shop.jp^ +||a8.labiotte.jp^ +||a8.lacitashop.com^ +||a8.lalala-clean.com^ +||a8.lantelno.jp^ +||a8.lat-international.com^ +||a8.lavie-official.jp^ +||a8.learning.agaroot.jp^ +||a8.lens-labo.com^ +||a8.lens-ocean.com^ +||a8.liver-rhythm.jp^ +||a8.looom.jp^ +||a8.looop-denki.com^ +||a8.lwa-coating.com^ +||a8.lyprimo.jp^ +||a8.machino-housecleaning.com^ +||a8.maf.mentor-capital.jp^ +||a8.makeshop.jp^ +||a8.mamacosme.co.jp^ +||a8.mamaworks.jp^ +||a8.manara.jp^ +||a8.medireanetshopoi.com^ +||a8.migxl.com^ +||a8.minion-wifi.com^ +||a8.mira-feel.com^ +||a8.miror.jp^ +||a8.mishii-list.com^ +||a8.misshajp.com^ +||a8.mm-digitalsales.academy^ +||a8.mochu.jp^ +||a8.mogurun.com^ +||a8.moku.info^ +||a8.mosh.jp^ +||a8.musbell.co.jp^ +||a8.n-pri.jp^ +||a8.nachurabo.com^ +||a8.nanafu.tokyo^ +||a8.narikiri.me^ +||a8.nengahonpo.com^ +||a8.nengajyo.co.jp^ +||a8.neur.jp^ +||a8.next-hikari.jp^ +||a8.nezumi-guard.com^ +||a8.nezumi-kanzentaiji.com^ +||a8.nosh.jp^ +||a8.novicetokyo.com^ +||a8.o-tayori.com^ +||a8.obihiro-butaichi.jp^ +||a8.ocnk.net^ +||a8.okamotogroup.com^ +||a8.olightstore.jp^ +||a8.onamae.com^ +||a8.onecoinenglish.com^ +||a8.ones-ones.jp^ +||a8.otoku-line.jp^ +||a8.otonayaki.com^ +||a8.outline-gym.com^ +||a8.papapa.baby^ +||a8.parcys.com^ +||a8.pcnext.shop^ +||a8.pcwrap.com^ +||a8.petfood.mtflat.co.jp^ +||a8.pla-cole.wedding^ +||a8.pocket-m.jp^ +||a8.polyglots.net^ +||a8.princess-jp.com^ +||a8.print-netsquare.com^ +||a8.projectee.online^ +||a8.rank-quest.jp^ +||a8.recmount-plus.com^ +||a8.remobiz.jp^ +||a8.renkindo.com^ +||a8.ricafrosh.com^ +||a8.ringbell.co.jp^ +||a8.rinshosiken.com^ +||a8.route-roller.info^ +||a8.runway-harmonia.co.jp^ +||a8.ryugaku.kuraveil.jp^ +||a8.sakemuseum.com^ +||a8.sakuramobile.jp^ +||a8.sakuratravel.jp^ +||a8.sara-uv.com^ +||a8.schecon.com^ +||a8.seifu-ac.jp^ +||a8.seminarshelf.com^ +||a8.sennendo.jp^ +||a8.sharefull.com^ +||a8.shikaketegami.com^ +||a8.shikigaku.jp^ +||a8.shinnihonjisyo.co.jp^ +||a8.shitsukekun.com^ +||a8.shizq.store^ +||a8.shokubun.net^ +||a8.shop.basefood.co.jp^ +||a8.shop.km-link.jp^ +||a8.shop.nicosuma.com^ +||a8.shop.tsukijiwadatsumi.com^ +||a8.shopserve.jp^ +||a8.shukatsu-note.com^ +||a8.sibody.tw^ +||a8.skr-labo.jp^ +||a8.smart-onepage.com^ +||a8.smp.shanon.co.jp^ +||a8.snapmaker.jp^ +||a8.soelu.com^ +||a8.softbank-hikari.jp^ +||a8.sommelier.gift^ +||a8.sp-hoken.net^ +||a8.speever.jp^ +||a8.ssl.aispr.jp^ +||a8.st.oddspark.com^ +||a8.store.aceservice.jp^ +||a8.store.goo.ne.jp^ +||a8.strapya.com^ +||a8.sui-so.com^ +||a8.suma-sapo.net^ +||a8.sumai-planet.com^ +||a8.sumilena.co.jp^ +||a8.tabechoku.com^ +||a8.tailorenglish.jp^ +||a8.tapp-co.jp^ +||a8.taylormadegolf.jp^ +||a8.tcha-tcha-japan.com^ +||a8.tea-lab.co.jp^ +||a8.tecgate.jp^ +||a8.tech-base.net^ +||a8.techis.jp^ +||a8.tecpartners.jp^ +||a8.teddyworks.co.jp^ +||a8.the-session.jp^ +||a8.themoonmilk.jp^ +||a8.thermostand.jp^ +||a8.thg.co.jp^ +||a8.tideisturning.com^ +||a8.tokihana.net^ +||a8.tokyo-hills-clinic.com^ +||a8.tone.ne.jp^ +||a8.toraiz.jp^ +||a8.tour-sys.com^ +||a8.tour.jtrip.co.jp^ +||a8.track.entry.dokoyorimo.com^ +||a8.triple-m.jp^ +||a8.tscubic.com^ +||a8.uchi-iwai.net^ +||a8.uchideno-kozuchi.com^ +||a8.uluwatutiger.com^ +||a8.unicoffee.tech^ +||a8.uridoki.net^ +||a8.uzuz-college.jp^ +||a8.vector-park.jp^ +||a8.vinew.jp^ +||a8.virus-gekitai.com^ +||a8.volstar.jp^ +||a8.vtuber.sexy^ +||a8.watero.pet^ +||a8.web-hikari.net^ +||a8.webdeki.com^ +||a8.webist-cri.com^ +||a8.wemotion.co.jp^ +||a8.wifi-fami.com^ +||a8.wifi-tokyo-rentalshop.com^ +||a8.wifi.erasutamo.onlinestaff.jp^ +||a8.willcloud.jp^ +||a8.williesenglish.jp^ +||a8.wizrecruitment.012grp.co.jp^ +||a8.woodlife.jp^ +||a8.worldikids.com^ +||a8.ws.job.career-tasu.jp^ +||a8.www.keurig.jp^ +||a8.www.melonbooks.co.jp^ +||a8.www.nicosuma.com^ +||a8.www.retrospect.co.jp^ +||a8.www.seesaa.co.jp^ +||a8.www.smart-factor.co.jp^ +||a8.xn--google-873exa8m6161dbbyb.net^ +||a8.xn--y8jd4aybzqd.jp^ +||a8.yakumatch.com^ +||a8.yanoman.com^ +||a8.yayoi-kk.co.jp^ +||a8.yellmall.jp^ +||a8.yumejin.jp^ +||a8.yuzen-official.com^ +||a8.zen-camps.com^ +||a8.zeroku.jp^ +||a8.zipan.jp^ +||a8.zzz-land.com^ +||a802.xn--38jf6c4pa86a1dv833cexrb.com^ +||a803.xn--38jf6c4pa86a1dv833cexrb.com^ +||a8affiliate.liftup-turban.net^ +||a8aspconv.itx-home-router.com^ +||a8aspconv.nn-com.co.jp^ +||a8aspconv.ns-air.net^ +||a8aspconv.ns-softbank-hikari.com^ +||a8aspconv.xn--auso-net-h53gmnzi.com^ +||a8aspconv.xn--bgm-os4bt98xxicx4fqs5c8e8agvq.com^ +||a8aspconv.xn--biglobe-kc9k.com^ +||a8aspconv.xn--ipv6-yn4cxgwe959zqrkp58g.com^ +||a8aspconv.xn--ocn-ws1e.jp^ +||a8atcomsme.mellife.jp^ +||a8clic.alcosystem.co.jp^ +||a8click.daini2.co.jp^ +||a8click.you-up.com^ +||a8click.young-mobile.net^ +||a8clk.011330.jp^ +||a8clk.1osechi.com^ +||a8clk.292957.jp^ +||a8clk.9factor.com^ +||a8clk.account.matsui.co.jp^ +||a8clk.adeliv.treasure-f.com^ +||a8clk.adventkk.co.jp^ +||a8clk.afi1.emanon-sharesalon.com^ +||a8clk.aipo.com^ +||a8clk.alljewelry.jp^ +||a8clk.ambientlounge.co.jp^ +||a8clk.amelia.ne.jp^ +||a8clk.ancar.jp^ +||a8clk.ands-tech.com^ +||a8clk.angeliebe.co.jp^ +||a8clk.aoki-style.com^ +||a8clk.ap.livede55.com^ +||a8clk.app.offerbox.jp^ +||a8clk.apply-shop.menu.inc^ +||a8clk.asahi-net.or.jp^ +||a8clk.ashitarunrun.com^ +||a8clk.asp.jcity.co.jp^ +||a8clk.assecli.com^ +||a8clk.ato-barai.com^ +||a8clk.audiobook.jp^ +||a8clk.autoc-one.jp^ +||a8clk.bang.co.jp^ +||a8clk.beauteq.jp^ +||a8clk.bikeman.jp^ +||a8clk.biken-mall.com^ +||a8clk.biomarche.jp^ +||a8clk.birai-cm.com^ +||a8clk.biz-communication.jp^ +||a8clk.bizworkers.jp^ +||a8clk.booking.jetfi.jp^ +||a8clk.bresmile.jp^ +||a8clk.bungeisha.co.jp^ +||a8clk.buy-master.com^ +||a8clk.buyking.club^ +||a8clk.camerakaitori.jp^ +||a8clk.campaigns.speed-kaitori.jp^ +||a8clk.car-mo.jp^ +||a8clk.carbattery110.com^ +||a8clk.career.prismy.jp^ +||a8clk.carenessapp.lifekarte.com^ +||a8clk.cart.amahada.com^ +||a8clk.cart.co-heart.com^ +||a8clk.cart.dr-vegefru.com^ +||a8clk.cart.ordersupli.com^ +||a8clk.cart.raku-uru.jp^ +||a8clk.cd.ecostorecom.jp^ +||a8clk.cev.macchialabel.com^ +||a8clk.chance.com^ +||a8clk.chapup.jp^ +||a8clk.chat-wifi.site^ +||a8clk.checkout.leafee.me^ +||a8clk.chibakan-yachiyo.net^ +||a8clk.chuko-truck.com^ +||a8clk.cleaneo.jp^ +||a8clk.cocorotherapy.com^ +||a8clk.colone.cc^ +||a8clk.coreda.jp^ +||a8clk.cp.favorina.com^ +||a8clk.cp.formalklein.com^ +||a8clk.crefus.com^ +||a8clk.crowdworks.jp^ +||a8clk.cs.machi-ene.jp^ +||a8clk.cv.dreamsv.jp^ +||a8clk.cv.geechs-job.com^ +||a8clk.cv.hanaravi.jp^ +||a8clk.cv.kenkouichiba.com^ +||a8clk.cv.kihada.jp^ +||a8clk.cv.mensfashion.cc^ +||a8clk.cv.onedenki.jp^ +||a8clk.cv.only-story.jp^ +||a8clk.cv.shop.resalon.co.jp^ +||a8clk.cv.syukatsu-kaigi.jp^ +||a8clk.cv.t-fic.co.jp^ +||a8clk.cv.warau.jp^ +||a8clk.cv.yanuk.jp^ +||a8clk.d.toyo-case.co.jp^ +||a8clk.dfashion.docomo.ne.jp^ +||a8clk.digicafe.jp^ +||a8clk.doda.jp^ +||a8clk.dospara.co.jp^ +||a8clk.dr-10.com^ +||a8clk.dr-40.com^ +||a8clk.dr-8.com^ +||a8clk.driver-island.com^ +||a8clk.e-ninniku.jp^ +||a8clk.ec.halmek.co.jp^ +||a8clk.ec.oreno.co.jp^ +||a8clk.ectool.jp^ +||a8clk.englead.jp^ +||a8clk.es.akyrise.jp^ +||a8clk.ex-wifi.jp^ +||a8clk.excellence-aoyama.com^ +||a8clk.famm.us^ +||a8clk.fastsim.jp^ +||a8clk.fc-mado.com^ +||a8clk.fido-co.com^ +||a8clk.firadis.net^ +||a8clk.for-customer.com^ +||a8clk.form.coached.jp^ +||a8clk.formal.cariru.jp^ +||a8clk.formasp.jp^ +||a8clk.francfranc.com^ +||a8clk.fromcocoro.com^ +||a8clk.fujisan.co.jp^ +||a8clk.fuku-chan.jp^ +||a8clk.funds.jp^ +||a8clk.geo-arekore.jp^ +||a8clk.global-crown.com^ +||a8clk.globalbase.jp^ +||a8clk.golf-kace.com^ +||a8clk.grandg.com^ +||a8clk.grirose.jp^ +||a8clk.gurutas.jp^ +||a8clk.guruyaku.jp^ +||a8clk.hags-ec.com^ +||a8clk.hikakaku.com^ +||a8clk.hikarinobe.com^ +||a8clk.hoiku.fine.me^ +||a8clk.hoken-minaoshi-lab.jp^ +||a8clk.hokennews.jp^ +||a8clk.hom.adebtt.info^ +||a8clk.hotman-onlineshop.com^ +||a8clk.hozon.sp-site.jp^ +||a8clk.hurugicom.jp^ +||a8clk.ias.il24.net^ +||a8clk.inakakon.jp^ +||a8clk.info2.sunbridge.com^ +||a8clk.jaf.or.jp^ +||a8clk.janiking.jp^ +||a8clk.jlp-shop.jp^ +||a8clk.jobspring.jp^ +||a8clk.joggo.me^ +||a8clk.joppy.jp^ +||a8clk.just-buy.jp^ +||a8clk.justfitoffice.com^ +||a8clk.justy-consul.com^ +||a8clk.ka-shimo.com^ +||a8clk.kaitori-beerecords.jp^ +||a8clk.kaitori-janiyard.jp^ +||a8clk.kaitori-retrog.jp^ +||a8clk.kaitori-toretoku.jp^ +||a8clk.kaitori-yamatokukimono.jp^ +||a8clk.kaitori.kind.co.jp^ +||a8clk.kaitoriyasan.group^ +||a8clk.kake-barai.com^ +||a8clk.kanagawa-zero.com^ +||a8clk.kenkoukazoku.co.jp^ +||a8clk.kihada.jp^ +||a8clk.komochikon.jp^ +||a8clk.kyoto-health.co.jp^ +||a8clk.kyoyu-mochibun.com^ +||a8clk.label-seal-print.com^ +||a8clk.lasana.co.jp^ +||a8clk.laundry-out.jp^ +||a8clk.lens-1.jp^ +||a8clk.libinc.jp^ +||a8clk.life.bang.co.jp^ +||a8clk.lolipop.jp^ +||a8clk.loungemembers.com^ +||a8clk.low-ya.com^ +||a8clk.lp.yuyu-kenko.co.jp^ +||a8clk.ma-platform.com^ +||a8clk.macchialabel.com^ +||a8clk.macpaw.com^ +||a8clk.manabiz.jp^ +||a8clk.manage.conoha.jp^ +||a8clk.mapple-tour.com^ +||a8clk.marche.onward.co.jp^ +||a8clk.mat.duskin-hozumi.co.jp^ +||a8clk.meister-coating.com^ +||a8clk.mens-mr.jp^ +||a8clk.mens-rinx.jp^ +||a8clk.merry.duskin-hozumi.co.jp^ +||a8clk.miidas.jp^ +||a8clk.minnadeooyasan.com^ +||a8clk.mirrorball-recurit.emanon-sharesalon.com^ +||a8clk.mobile-norikae.com^ +||a8clk.mop.duskin-hozumi.co.jp^ +||a8clk.moriichi-net.co.jp^ +||a8clk.mouse-jp.co.jp^ +||a8clk.moving.a-tm.co.jp^ +||a8clk.mutukistyle.com^ +||a8clk.muumuu-domain.com^ +||a8clk.mynavi-creator.jp^ +||a8clk.mynavi-job20s.jp^ +||a8clk.mypage.awesome-wash.com^ +||a8clk.nandemo-kimono.com^ +||a8clk.nenga-kazoku.com^ +||a8clk.nenga.fumiiro.jp^ +||a8clk.netowl.jp^ +||a8clk.nikkoudou-kottou.com^ +||a8clk.nissen.co.jp^ +||a8clk.nobirun.jp^ +||a8clk.nta.co.jp^ +||a8clk.nyandaful.jp^ +||a8clk.okamoto-homelife.com^ +||a8clk.okawa-god.jp^ +||a8clk.okuta.com^ +||a8clk.olulu-online.jp^ +||a8clk.onemile.jp^ +||a8clk.only-story.jp^ +||a8clk.order-box.net^ +||a8clk.order.banana-wifi.com^ +||a8clk.order.lpio.jp^ +||a8clk.orders.bon-book.jp^ +||a8clk.osoujihonpo.com^ +||a8clk.owners-age.com^ +||a8clk.p-bandai.jp^ +||a8clk.pages.supporterz.jp^ +||a8clk.patpat.com^ +||a8clk.petelect.jp^ +||a8clk.petitjob.jp^ +||a8clk.photorevo.info^ +||a8clk.plusone.space^ +||a8clk.point-island.com^ +||a8clk.point-land.net^ +||a8clk.point-museum.com^ +||a8clk.point-stadium.com^ +||a8clk.psd.jp^ +||a8clk.purekon.jp^ +||a8clk.qracian365.com^ +||a8clk.radianne.jp^ +||a8clk.rarejob.com^ +||a8clk.rdlp.jp^ +||a8clk.recycle-net.jp^ +||a8clk.rei-book.com^ +||a8clk.rental.geo-online.co.jp^ +||a8clk.reserve.retty.me^ +||a8clk.resortbaito-dive.com^ +||a8clk.rf28.com^ +||a8clk.risou.com^ +||a8clk.satei-meijin.com^ +||a8clk.secure.freee.co.jp^ +||a8clk.secure.jetboy.jp^ +||a8clk.segatoys.com^ +||a8clk.service.ridera-inc.com^ +||a8clk.shadoten.com^ +||a8clk.shareboss.net^ +||a8clk.shikaku-square.com^ +||a8clk.shinnihon-seminar.com^ +||a8clk.shoes.regal.co.jp^ +||a8clk.shokutakubin.com^ +||a8clk.shop.echigofuton.jp^ +||a8clk.shop.kitamura.jp^ +||a8clk.shop.saraya.com^ +||a8clk.shop.shareme.jp^ +||a8clk.shop.sunsorit.co.jp^ +||a8clk.shop.tanita.co.jp^ +||a8clk.sikatoru.com^ +||a8clk.siro.duskin-hozumi.co.jp^ +||a8clk.sirtuinbooster.net^ +||a8clk.sixcore.ne.jp^ +||a8clk.skima.jp^ +||a8clk.skynet-c.jp^ +||a8clk.skyoffice.info^ +||a8clk.sma-ene.jp^ +||a8clk.smart-keiri.com^ +||a8clk.smile-zemi.jp^ +||a8clk.sohbi-company.com^ +||a8clk.solideajapan.com^ +||a8clk.speedcoaching.co.jp^ +||a8clk.staff.mynavi.jp^ +||a8clk.star-mall.net^ +||a8clk.starwifi.jp^ +||a8clk.store.kadokawa.co.jp^ +||a8clk.store.mago-ch.com^ +||a8clk.stylestore.jp^ +||a8clk.suguchoku.jp^ +||a8clk.sumafuri.jp^ +||a8clk.support-hoiku.com^ +||a8clk.supreme-noi.jp^ +||a8clk.sure-i.co.jp^ +||a8clk.t-fic.co.jp^ +||a8clk.taisho-beauty.jp^ +||a8clk.takken-job.com^ +||a8clk.takuhai.daichi-m.co.jp^ +||a8clk.tamiyashop.jp^ +||a8clk.tanp.jp^ +||a8clk.tastytable-food.com^ +||a8clk.teacon.jp^ +||a8clk.titivate.jp^ +||a8clk.toretoku.jp^ +||a8clk.tsuchiya-kaban.jp^ +||a8clk.tsunorice.com^ +||a8clk.uchinotoypoo.jp^ +||a8clk.unihertz.com^ +||a8clk.unionspo.com^ +||a8clk.ur-s.me^ +||a8clk.uzu.team^ +||a8clk.videocash.tv^ +||a8clk.voice-inc.co.jp^ +||a8clk.waq-online.com^ +||a8clk.web-camp.io^ +||a8clk.wedding.294p.com^ +||a8clk.weleda.jp^ +||a8clk.wi-ho.net^ +||a8clk.works.sagooo.com^ +||a8clk.world-family.co.jp^ +||a8clk.wpx.ne.jp^ +||a8clk.www.access-jp.jp^ +||a8clk.www.autoway.jp^ +||a8clk.www.big-m-one.com^ +||a8clk.www.cledepeau-beaute.com^ +||a8clk.www.clip-studio.com^ +||a8clk.www.daiohs.com^ +||a8clk.www.doicoffee.com^ +||a8clk.www.duskin-chiyoda.com^ +||a8clk.www.duskin-hozumi.co.jp^ +||a8clk.www.duskin-hozumi.jp^ +||a8clk.www.e87.com^ +||a8clk.www.fitnessshop.jp^ +||a8clk.www.flierinc.com^ +||a8clk.www.gaihekitosou-partners.jp^ +||a8clk.www.green-dog.com^ +||a8clk.www.italki.com^ +||a8clk.www.jaf.or.jp^ +||a8clk.www.just-size.net^ +||a8clk.www.ka-nabell.com^ +||a8clk.www.khaki.jp^ +||a8clk.www.netage.ne.jp^ +||a8clk.www.nortonstore.jp^ +||a8clk.www.oms.energy-itsol.com^ +||a8clk.www.rebo-success.co.jp^ +||a8clk.www.solar-partners.jp^ +||a8clk.www.solarmonitorlp.energy-itsol.com^ +||a8clk.www.uz.team^ +||a8clk.www.workport.co.jp^ +||a8clk.www.xebiocard.co.jp^ +||a8clk.www.zwei.com^ +||a8clk.xn--t8jx01hmvbgye566gd1f.com^ +||a8clk.xserver.ne.jp^ +||a8clk.y-station.net^ +||a8clk.ykd.co.jp^ +||a8clk.yourmystar.jp^ +||a8clk.yu-en.com^ +||a8clk.yubisashi.com^ +||a8clk.yumeyakata.com^ +||a8clk.ziaco.eco-life.tokyo^ +||a8clk.zigen-shop.com^ +||a8clk1.zkai.co.jp^ +||a8clkapply.mycredit.nexuscard.co.jp^ +||a8clkcv.lognavi.com^ +||a8clkcv.tcb-beauty.net^ +||a8cllk.arahataen.com^ +||a8cname.cloudwifi-nc.com^ +||a8cname.nj-e.jp^ +||a8cnv.rmsbeauty.jp^ +||a8cv.012grp.co.jp^ +||a8cv.03plus.net^ +||a8cv.1-class.jp^ +||a8cv.1sbc.com^ +||a8cv.464981.com^ +||a8cv.489pro.com^ +||a8cv.550909.com^ +||a8cv.a-resort.jp^ +||a8cv.a-ru-ku.co.jp^ +||a8cv.a-satei.com^ +||a8cv.accelfacter.co.jp^ +||a8cv.access-jp.jp^ +||a8cv.aff.life-110.com^ +||a8cv.aiambeauty.jp^ +||a8cv.akapon.kanritools.com^ +||a8cv.akihabara-x.jp^ +||a8cv.akippa.com^ +||a8cv.al-on.com^ +||a8cv.all-plan.co.jp^ +||a8cv.all24.jp^ +||a8cv.alvo.co.jp^ +||a8cv.amiami.jp^ +||a8cv.anapnet.com^ +||a8cv.androsophybaby.com^ +||a8cv.ans-ec.shop^ +||a8cv.aplod.jp^ +||a8cv.aquasilver.co.jp^ +||a8cv.araiba.net^ +||a8cv.atami-box.com^ +||a8cv.atgp.jp^ +||a8cv.auhikari-bykddi.com^ +||a8cv.b-concept.tokyo^ +||a8cv.b-noix.jp^ +||a8cv.babybjorn.jp^ +||a8cv.bag-repair.pro^ +||a8cv.baku-art.jp^ +||a8cv.balanslab.jp^ +||a8cv.bb-internet-qsyu.net^ +||a8cv.bbt757.com^ +||a8cv.be-slim-spbikyou.com^ +||a8cv.beaming.jp^ +||a8cv.bellcosme.com^ +||a8cv.bellevie-inc.co.jp^ +||a8cv.bettysbeauty.jp^ +||a8cv.beyondvape.jp^ +||a8cv.biken-mall.jp^ +||a8cv.biz-maps.com^ +||a8cv.bizcircle.jp^ +||a8cv.bizcomfort.jp^ +||a8cv.bloomonline.jp^ +||a8cv.bonaventura.shop^ +||a8cv.borderfree-official.com^ +||a8cv.brandeuse.jp^ +||a8cv.brandnet.info^ +||a8cv.bresmile.jp^ +||a8cv.bright-app.com^ +||a8cv.broadbandservice.jp^ +||a8cv.bugsfarm.jp^ +||a8cv.bulk.co.jp^ +||a8cv.busbookmark.jp^ +||a8cv.c-hikari.biz^ +||a8cv.ca-rent.jp^ +||a8cv.cacom.jp^ +||a8cv.calotore.com^ +||a8cv.career.medpeer.jp^ +||a8cv.careerpark-agent.jp^ +||a8cv.carryonmall.com^ +||a8cv.cart.bi-su.jp^ +||a8cv.cart3.toku-talk.com^ +||a8cv.cast-er.com^ +||a8cv.celav.net^ +||a8cv.celbest.urr.jp^ +||a8cv.cellbic.net^ +||a8cv.chefbox.jp^ +||a8cv.chillaxy.jp^ +||a8cv.chuoms.com^ +||a8cv.cinemage.shop^ +||a8cv.clickjob.jp^ +||a8cv.cloud-wi-fi.jp^ +||a8cv.cloudthome.com^ +||a8cv.coco-gourmet.com^ +||a8cv.codexcode.jp^ +||a8cv.codmon.com^ +||a8cv.contents-sales.net^ +||a8cv.control.cloudphotobook.com^ +||a8cv.coopnet.or.jp^ +||a8cv.cosmeonline.com^ +||a8cv.cosmo-water.net^ +||a8cv.cosmosfoods.jp^ +||a8cv.covermark.co.jp^ +||a8cv.cozuchi.com^ +||a8cv.cpi.ad.jp^ +||a8cv.cprime-japan.com^ +||a8cv.crecari.com^ +||a8cv.crefus.jp^ +||a8cv.crowdcredit.jp^ +||a8cv.crowdlinks.jp^ +||a8cv.cv2308001.tanomelu.com^ +||a8cv.daini-agent.jp^ +||a8cv.daisenham.com^ +||a8cv.danipita.com^ +||a8cv.danjiki-net.jp^ +||a8cv.dazzyclinic.jp^ +||a8cv.deiba.jp^ +||a8cv.delis.co.jp^ +||a8cv.designlearn.co.jp^ +||a8cv.direct-teleshop.jp^ +||a8cv.direct.shark.co.jp^ +||a8cv.diyfactory.jp^ +||a8cv.doctor-agent.com^ +||a8cv.doctoryotsu.com^ +||a8cv.dokoyorimo.com^ +||a8cv.dokugaku-dx.com^ +||a8cv.downjacket.pro^ +||a8cv.dream-licence.jp^ +||a8cv.dreambeer.jp^ +||a8cv.dreamchance.net^ +||a8cv.drsoie.com^ +||a8cv.dsc-nightstore.com^ +||a8cv.dshu.jp^ +||a8cv.duo.jp^ +||a8cv.e-3shop.com^ +||a8cv.e-3x.jp^ +||a8cv.e-d-v-j.co.jp^ +||a8cv.e-earphone.jp^ +||a8cv.e-stretch-diet.com^ +||a8cv.eakindo.com^ +||a8cv.ec.oliveunion.com^ +||a8cv.eco-ring.com^ +||a8cv.ecodepa.jp^ +||a8cv.eeo.today^ +||a8cv.egmkt.co.jp^ +||a8cv.eikajapan.com^ +||a8cv.emma-sleep-japan.com^ +||a8cv.encounter2017.jp^ +||a8cv.english-bootcamp.com^ +||a8cv.english-cc.com^ +||a8cv.english-village.net^ +||a8cv.entre-salon.com^ +||a8cv.entry.renet.jp^ +||a8cv.est-online.com^ +||a8cv.euria.store^ +||a8cv.exrg-premium.shop^ +||a8cv.eys-musicschool.com^ +||a8cv.f.012grp.co.jp^ +||a8cv.factoringzero.jp^ +||a8cv.fafa-shop.com^ +||a8cv.favorric.com^ +||a8cv.fc-japan.biz^ +||a8cv.fc-osoujikakumei.jp^ +||a8cv.first-spoon.com^ +||a8cv.fitness-terrace.com^ +||a8cv.focusneo.net^ +||a8cv.folio-sec.com^ +||a8cv.folli.jp^ +||a8cv.follome.motaras.co.jp^ +||a8cv.foresight.jp^ +||a8cv.forza-gran.com^ +||a8cv.fots.jp^ +||a8cv.fp-life.design^ +||a8cv.frecious.jp^ +||a8cv.free-max.com^ +||a8cv.freeks-japan.com^ +||a8cv.freelance-start.com^ +||a8cv.fujiplus.jp^ +||a8cv.fukuoka-factoring.net^ +||a8cv.fundrop.jp^ +||a8cv.futurefinder.net^ +||a8cv.fxtrade.co.jp^ +||a8cv.gaiasign.co.jp^ +||a8cv.gaikokujin-support.com^ +||a8cv.gaikouexterior-partners.jp^ +||a8cv.gakuen.omobic.com^ +||a8cv.gb-chat.com^ +||a8cv.gbset.jp^ +||a8cv.genesis-nipt.com^ +||a8cv.gigabaito.com^ +||a8cv.gimuiko.com^ +||a8cv.global-dive.jp^ +||a8cv.global-link-seminar.com^ +||a8cv.glocalnet.jp^ +||a8cv.glow-clinic.com^ +||a8cv.goodlucknail.com^ +||a8cv.goods-station.jp^ +||a8cv.goqoo.me^ +||a8cv.grace-grace.info^ +||a8cv.grassbeaute.jp^ +||a8cv.greed-island.ne.jp^ +||a8cv.haka.craht.jp^ +||a8cv.hal-tanteisya.com^ +||a8cv.hanamaro.jp^ +||a8cv.handmade-ch.jp^ +||a8cv.happy-bears.com^ +||a8cv.harasawa.co.jp^ +||a8cv.hardwarewallet-japan.com^ +||a8cv.hariocorp.co.jp^ +||a8cv.hello-people.jp^ +||a8cv.heybit.io^ +||a8cv.hi-tailor.jp^ +||a8cv.hikari-mega.com^ +||a8cv.hoken-laundry.com^ +||a8cv.holo-bell.com^ +||a8cv.homepage296.com^ +||a8cv.honeys-onlineshop.com^ +||a8cv.hoppin-garage.com^ +||a8cv.hor.jp^ +||a8cv.hotyoga-loive.com^ +||a8cv.houjin-keitai.com^ +||a8cv.housingbazar.jp^ +||a8cv.humming-water.com^ +||a8cv.hyperknife.info^ +||a8cv.i-office1.net^ +||a8cv.ias.il24.net^ +||a8cv.icoi.style^ +||a8cv.ieagent.jp^ +||a8cv.iekoma.com^ +||a8cv.iikyujin.net^ +||a8cv.ikapula.com^ +||a8cv.info.atgp.jp^ +||a8cv.inkan-takumi.com^ +||a8cv.interlink.or.jp^ +||a8cv.investment.mogecheck.jp^ +||a8cv.ioo-sofa.net^ +||a8cv.irodas.com^ +||a8cv.ishibashi.co.jp^ +||a8cv.ishibestcareer.com^ +||a8cv.ishizawa-lab.co.jp^ +||a8cv.isslim.jp^ +||a8cv.isuzu-rinji.com^ +||a8cv.itscoco.shop^ +||a8cv.iwamizu.com^ +||a8cv.iy-net.jp^ +||a8cv.japaden.jp^ +||a8cv.jbl-link.com^ +||a8cv.jcom.co.jp^ +||a8cv.jeansmate.co.jp^ +||a8cv.jemmy.co.jp^ +||a8cv.join-tech.jp^ +||a8cv.jokyonext.jp^ +||a8cv.joy-karaokerental.com^ +||a8cv.jp-shop.kiwabi.com^ +||a8cv.jp.metrocityworld.com^ +||a8cv.jp.redodopower.com^ +||a8cv.k-ikiiki.jp^ +||a8cv.kabu-online.jp^ +||a8cv.kagoya.jp^ +||a8cv.kaimonocart.com^ +||a8cv.kaimonoform.com^ +||a8cv.kaiteki.gr.jp^ +||a8cv.kaitori-okoku.jp^ +||a8cv.kaitorisatei.info^ +||a8cv.kajier.jp^ +||a8cv.kamurogi.net^ +||a8cv.karitoke.jp^ +||a8cv.kidsmoneyschool.net^ +||a8cv.kikubari-bento.com^ +||a8cv.king-makura.com^ +||a8cv.kk-orange.jp^ +||a8cv.kkmatsusho.jp^ +||a8cv.kn-waterserver.com^ +||a8cv.kobe38.com^ +||a8cv.kosodatemoney.com^ +||a8cv.kuih.jp^ +||a8cv.kurashi-bears.com^ +||a8cv.kusmitea.jp^ +||a8cv.kuzefuku-arcade.jp^ +||a8cv.kxn.co.jp^ +||a8cv.kyotokimono-rental.com^ +||a8cv.l-meal.com^ +||a8cv.laclulu.com^ +||a8cv.lalavie.jp^ +||a8cv.lancers.jp^ +||a8cv.laviepre.co.jp^ +||a8cv.lc-jewel.jp^ +||a8cv.lear-caree.com^ +||a8cv.leasonable.com^ +||a8cv.lens-1.jp^ +||a8cv.leoandlea.com^ +||a8cv.lianest.co.jp^ +||a8cv.lp.nalevi.mynavi.jp^ +||a8cv.lp.x-house.co.jp^ +||a8cv.lyprinol.jp^ +||a8cv.machi-ene.jp^ +||a8cv.machicon.jp^ +||a8cv.macloud.jp^ +||a8cv.madoguchi.com^ +||a8cv.maenomery.jp^ +||a8cv.magniflexk.com^ +||a8cv.mamarket.co.jp^ +||a8cv.mansiontech.com^ +||a8cv.marumochiya.net^ +||a8cv.mashumaro-bra.com^ +||a8cv.mbb-inc.com^ +||a8cv.mcc-lazer-hr.com^ +||a8cv.meetsmore.com^ +||a8cv.memberpay.jp^ +||a8cv.members.race.sanspo.com^ +||a8cv.menina-joue.jp^ +||a8cv.mentors-lwc.com^ +||a8cv.mi-vision.co.jp^ +||a8cv.minana-jp.com^ +||a8cv.minnano-eikaiwa.com^ +||a8cv.mitaina.tokyo^ +||a8cv.mobabiji.jp^ +||a8cv.modern-deco.jp^ +||a8cv.modescape.com^ +||a8cv.mogecheck.jp^ +||a8cv.mokumokumarket.com^ +||a8cv.momiji-tantei.com^ +||a8cv.mova-creator-school.com^ +||a8cv.ms-toushiguide.jp^ +||a8cv.mura.ne.jp^ +||a8cv.my-arrow.co.jp^ +||a8cv.nagatani-shop.com^ +||a8cv.naire-seisakusho.jp^ +||a8cv.naradenryoku.co.jp^ +||a8cv.natulahonpo.com^ +||a8cv.naturaltech.jp^ +||a8cv.naturebreath-store.com^ +||a8cv.naturecan-fitness.jp^ +||a8cv.nd-clinic.net^ +||a8cv.netvisionacademy.com^ +||a8cv.next1-one.jp^ +||a8cv.nichirei.co.jp^ +||a8cv.nifty.com^ +||a8cv.nigaoe.graphics.vc^ +||a8cv.nijiun.com^ +||a8cv.nikugatodoke.com^ +||a8cv.nippon-olive.co.jp^ +||a8cv.nipt-clinic.jp^ +||a8cv.nittei-group-alliance.com^ +||a8cv.o-juku.com^ +||a8cv.o-ken.com^ +||a8cv.oceanprincess.jp^ +||a8cv.ococorozashi.com^ +||a8cv.off-site.jp^ +||a8cv.ogaland.com^ +||a8cv.oisix.com^ +||a8cv.omakase-cyber-mimamori.net^ +||a8cv.omni7.jp^ +||a8cv.omobic.com^ +||a8cv.one-netbook.jp^ +||a8cv.online-mega.com^ +||a8cv.online.aivil.jp^ +||a8cv.online.bell-road.com^ +||a8cv.online.d-school.co^ +||a8cv.online.thekiss.co.jp^ +||a8cv.onlinestore.xmobile.ne.jp^ +||a8cv.onlinezemi.com^ +||a8cv.open-cage.com^ +||a8cv.orbis.co.jp^ +||a8cv.orochoku.shop^ +||a8cv.otakudathough.com^ +||a8cv.otoriyose.site^ +||a8cv.p-antiaging.com^ +||a8cv.paidy.com^ +||a8cv.palms-gym.com^ +||a8cv.perrot.co^ +||a8cv.pf.classicmusic.tokyo^ +||a8cv.phonim.com^ +||a8cv.photojoy.jp^ +||a8cv.physiqueframe.com^ +||a8cv.picksitter.com^ +||a8cv.pigeon-fw.com^ +||a8cv.pilates-k.jp^ +||a8cv.pocket-sommelier.com^ +||a8cv.postcoffee.co^ +||a8cv.pre-sana.com^ +||a8cv.premium.aidemy.net^ +||a8cv.presence.jp^ +||a8cv.print-gakufu.com^ +||a8cv.pro.omobic.com^ +||a8cv.quattrocart.com^ +||a8cv.quick-management.jp^ +||a8cv.r-maid.com^ +||a8cv.radi-cool.shop^ +||a8cv.rakumizu.jp^ +||a8cv.rawfood-lohas.com^ +||a8cv.rehome-navi.com^ +||a8cv.renoveru.jp^ +||a8cv.repairman.jp^ +||a8cv.repitte.jp^ +||a8cv.reservation.matching-photo.com^ +||a8cv.reserve.victoria.tokyo.jp^ +||a8cv.risu-japan.com^ +||a8cv.rita-style.co.jp^ +||a8cv.rmkrmk.com^ +||a8cv.rohto.co.jp^ +||a8cv.runteq.jp^ +||a8cv.ryomon.jp^ +||a8cv.s-darts.com^ +||a8cv.sabusuta.jp^ +||a8cv.safetycart.jp^ +||a8cv.saitoma.com^ +||a8cv.sakura-forest.com^ +||a8cv.sanix.jp^ +||a8cv.sankyo-fs.jp^ +||a8cv.saraschool.net^ +||a8cv.scheeme.com^ +||a8cv.se-navi.jp^ +||a8cv.second-hand.jp^ +||a8cv.secure.sakura.ad.jp^ +||a8cv.seikatsu-kojo.jp^ +||a8cv.select-type.com^ +||a8cv.selkalabo.com^ +||a8cv.sell.miraias.co.jp^ +||a8cv.setagayarecords.co^ +||a8cv.shadoten.com^ +||a8cv.sharing-tech.co.jp^ +||a8cv.sharing-tech.jp^ +||a8cv.shibarinashi-wifi.jp^ +||a8cv.shibuya-scramble-figure.com^ +||a8cv.shimomoto-cl.co.jp^ +||a8cv.shokubun.ec-design.co.jp^ +||a8cv.shokunosoyokaze.com^ +||a8cv.shop.matsuo1956.jp^ +||a8cv.shop.mintme.jp^ +||a8cv.shop.pixela.jp^ +||a8cv.shop.solve-grp.com^ +||a8cv.sibody.co.jp^ +||a8cv.signalift.com^ +||a8cv.sirusi.jp^ +||a8cv.sl-creations.store^ +||a8cv.slp.partners-re.co.jp^ +||a8cv.smart-shikaku.com^ +||a8cv.smoola.jp^ +||a8cv.snkrdunk.com^ +||a8cv.softbankhikari-collabo.net^ +||a8cv.somresta.jp^ +||a8cv.soundfun.co.jp^ +||a8cv.soyafarm.com^ +||a8cv.spalab-chintai.uk-corp.co.jp^ +||a8cv.spot-pj.com^ +||a8cv.staff-manzoku.co.jp^ +||a8cv.staffagent.co.jp^ +||a8cv.starpeg-music.com^ +||a8cv.store.alpen-group.jp^ +||a8cv.store.ion-e-air.jp^ +||a8cv.store.saneibd.com^ +||a8cv.store.tavenal.com^ +||a8cv.store.tiger-corporation.com^ +||a8cv.store.wiredbeans.jp^ +||a8cv.store.yslabo.net^ +||a8cv.story365.co.jp^ +||a8cv.str.classicmusic.tokyo^ +||a8cv.studycompass.io^ +||a8cv.studycompass.net^ +||a8cv.studygear.evidus.com^ +||a8cv.success-idea.com^ +||a8cv.sumai-surfin.com^ +||a8cv.sunmillion-ikiiki.jp^ +||a8cv.suzaku.or.jp^ +||a8cv.suzette-shop.jp^ +||a8cv.t-bang.jp^ +||a8cv.t-gaia.co.jp^ +||a8cv.taclinic.jp^ +||a8cv.taisyokudaiko.jp^ +||a8cv.tamago-repeat.com^ +||a8cv.taxi-qjin.com^ +||a8cv.techkidsschool.jp^ +||a8cv.tenishokunext.jp^ +||a8cv.tenkuryo.jp^ +||a8cv.tenshinocart.com^ +||a8cv.tmix.jp^ +||a8cv.tokei-syuri.jp^ +||a8cv.toko-navi.com^ +||a8cv.tokutoku-battery.com^ +||a8cv.tokyo-dive.com^ +||a8cv.tokyo-indoorgolf.com^ +||a8cv.tokyogas.bocco.me^ +||a8cv.tomodachi-my.com^ +||a8cv.tomorrow-bright.jp^ +||a8cv.tonyuclub.com^ +||a8cv.toushi-up.com^ +||a8cv.toybox-mnr.com^ +||a8cv.toysub.net^ +||a8cv.treasure-f.com^ +||a8cv.ulp-kyoto.jp^ +||a8cv.unias.jp^ +||a8cv.unico-fan.co.jp^ +||a8cv.untenmenkyo-yi.com^ +||a8cv.urocca.jp^ +||a8cv.usedfun.jp^ +||a8cv.veggie-toreru.jp^ +||a8cv.vieon.co.jp^ +||a8cv.w2solution.co.jp^ +||a8cv.wakan.shop^ +||a8cv.wake.fun^ +||a8cv.waterenergy.co.jp^ +||a8cv.waterserver.co.jp^ +||a8cv.web-planners.net^ +||a8cv.wedding.mynavi.jp^ +||a8cv.wellcrew.net^ +||a8cv.whynot.jp^ +||a8cv.will-agaclinic.com^ +||a8cv.will-gocon.net^ +||a8cv.willfu.jp^ +||a8cv.winkle.online^ +||a8cv.womanmoney.net^ +||a8cv.wordman.jp^ +||a8cv.worker.sukimaworks.app^ +||a8cv.workman.jp^ +||a8cv.worx.jp^ +||a8cv.www.bedstyle.jp^ +||a8cv.www.bigability.co.jp^ +||a8cv.www.bitlock.jp^ +||a8cv.www.chara-ani.com^ +||a8cv.www.club-sincerite.co.jp^ +||a8cv.www.covearth.co.jp^ +||a8cv.www.iropuri.com^ +||a8cv.www.mogecheck.jp^ +||a8cv.www.monologue.watch^ +||a8cv.www.pascaljp.com^ +||a8cv.www.sofastyle.jp^ +||a8cv.www2.sundai.ac.jp^ +||a8cv.xn--1lqs71d2law9k8zbv08f.tokyo^ +||a8cv.xn--eckl3qmbc6976d2udy3ah35b.com^ +||a8cv.xn--hckxam3skb2412b1hxe.com^ +||a8cv.xn--hdks151yx96c.com^ +||a8cv.y-osohshiki.com^ +||a8cv.ya-man.com^ +||a8cv.yakuzaishi.yakumatch.com^ +||a8cv.yakuzaishibestcareer.com^ +||a8cv.yamasa-suppon.com^ +||a8cv.yamato-gp.net^ +||a8cv.yamatokouso.com^ +||a8cv.ygm-clinic.or.jp^ +||a8cv.yobybo-japan.com^ +||a8cv.yohodo.net^ +||a8cv.yokoyamakaban.com^ +||a8cv.yoriso.com^ +||a8cv.you-shoku.net^ +||a8cv.yui.gift^ +||a8cv.yuyu-tei.jp^ +||a8cv.zacc.jp^ +||a8cv.zeroen-denki.com^ +||a8cv.zerorenovation.com^ +||a8cv.zoner.com^ +||a8cv2.vapelog.jp^ +||a8cventry.uqwimax.jp^ +||a8cvhoiku.kidsmate.jp^ +||a8cvtrack.sincere-garden.jp^ +||a8cvtrack.tokai.jp^ +||a8dev.hikarinet-s.com^ +||a8dns.webcircle.co.jp^ +||a8hokuro.ike-sunshine.co.jp^ +||a8itp.bitoka-japan.com^ +||a8itp.skinx-japan.com^ +||a8kotsujiko.ike-sunshine.co.jp^ +||a8live-vote.eventos.work^ +||a8lp-tebiki.e-sogi.com^ +||a8lpclk.club-marriage.jp^ +||a8n.radishbo-ya.co.jp^ +||a8net.augustberg.jp^ +||a8net.beyond-gym.com^ +||a8net.gset.co.jp^ +||a8net.hassyadai.com^ +||a8net.kitamura-print.com^ +||a8net.pg-learning.net^ +||a8net.sourcenext.com^ +||a8netcv.crebiq.com^ +||a8nikibi.ike-sunshine.co.jp^ +||a8onlineshop.trendmicro.co.jp^ +||a8redirect.cart.ec-sites.jp^ +||a8shop.nihon-trim.co.jp^ +||a8sup.chapup.jp^ +||a8tag.emprorm.com^ +||a8tag.suplinx.com^ +||a8tatoo.ike-sunshine.co.jp^ +||a8track.aidmybank.com^ +||a8track.bizdigi.jp^ +||a8track.speakbuddy-personalcoaching.com^ +||a8track.www.pontely.com^ +||a8trck.aisatsujo.com^ +||a8trck.aisatsujo.jp^ +||a8trck.helloactivity.com^ +||a8trck.j-sen.jp^ +||a8trck.sibody.co.jp^ +||a8trck.tolot.com^ +||a8trck.worldone.to^ +||a8trck.ws.formzu.net^ +||a8trk.www.std-lab.jp^ +||a8wakiga.ike-sunshine.co.jp^ +||a8wristcut.ike-sunshine.co.jp^ +||a8x.piece-kaitori.jp^ +||ac.livelty.com^ +||acv.auhikari-norikae.com^ +||acv.aun-air-wifi.com^ +||acv.aun-company.com^ +||acv.aun-n-hikari.com^ +||acv.aun-softbank-hikari.com^ +||acv.biglobe-hikari.net^ +||acv.cmf-hikari.net^ +||acv.crea-lp.com^ +||acv.fletsntt.com^ +||acv.hikariocn.com^ +||acv.hikarisoftbank.com^ +||acv.internet-moushikomi.net^ +||acv.kyushu-internet.com^ +||acv.mc-doctor.net^ +||acv.mc-nurse.net^ +||acv.mc-pharma.net^ +||acv.me-hikari.net^ +||acv.next-air-wifi.com^ +||acv.next-internet.info^ +||acv.nft-hikari.net^ +||acv.pikarahikari.net^ +||acv.softbank-hikaricollabo.com^ +||acv.xn--dckf5a1e821s9i7b.com^ +||acv.xn--lck7b0fy49k9y1b.com^ +||ad-a8.www.zeiri4.com^ +||ad.belleeau.jp^ +||ad.e-dpe.jp^ +||ad.houkei-shinjuku.com^ +||ad.ichiban-boshi.com^ +||ad.ichiru.net^ +||ad.jibunde-esute.com^ +||ad.kirara-support.jp^ +||ad.magokoro-care-shoku.com^ +||ad.rejichoice.jp^ +||ad.shinjuku-mens-chuoh.com^ +||ada8-2.ampleur.jp^ +||ada8.ampleur.jp^ +||ads.dandelionchocolate.jp^ +||af.gmobile.biz^ +||af.shozankan-shop.com^ +||afcv.champ-shop.com^ +||afep.pivn.shop^ +||affa8.hikkoshi-master.com^ +||afficv.lettuce.co.jp^ +||affiliate.couleur-labo.com^ +||affiliate.dietician-family.jp^ +||affiliate.htb-energy.co.jp^ +||affiliate.k-uno.co.jp^ +||affiliate.kgcshop.jp^ +||affiliate.ouchi.coop^ +||affiliate.petitwedding.com^ +||affiliate.taihoshop.jp^ +||affiliate.tripact.jp^ +||afi.biyou.web-marketing.ai^ +||afi.iino.life^ +||afi.school.web-marketing.ai^ +||afi.sougou.web-marketing.ai^ +||afi.ssl.gmobb.jp^ +||ahachi.dietnavi.com^ +||ahachi.dreamdenki.jp^ +||ai.kaishabaikyaku.com^ +||analytics.villagehouse.jp^ +||approach.wise1-golf.com^ +||asp.glasspp119.jp^ +||asp.hachipp119.com^ +||asp.taishokunext.com^ +||aspa8.ozmall.co.jp^ +||car-a8.tabirai.net^ +||click.techtree.jp^ +||clk.entry.surala.jp^ +||clk.glam-print.com^ +||clk.ingage.jp^ +||clk.liberty-e.com^ +||clk.wagon-hire.com^ +||clkcv.biglobehikari-kaisen.com^ +||clkcv.livede55.com^ +||contact.kdg-yobi.com^ +||cosme.caseepo.jp^ +||cp.cp.twendee.jp^ +||cv-match.sharebase.jp^ +||cv.2jikaikun.com^ +||cv.a-cial.com^ +||cv.a-hikkoshi.com^ +||cv.ag.cybersecurity-jp.com^ +||cv.agent-sana.com^ +||cv.atelier-shark.com^ +||cv.b2b.subscription-store.com^ +||cv.bc-force.com^ +||cv.belta-shop.jp^ +||cv.betrading.jp^ +||cv.bikoshaen.com^ +||cv.bloomeelife.com^ +||cv.cante-gym.com^ +||cv.cart.naturath.jp^ +||cv.colleize.com^ +||cv.cp-c21.com^ +||cv.denkichoice.jp^ +||cv.drive-hikari.net^ +||cv.e-tukline.jp^ +||cv.fire-bird.jp^ +||cv.gas-choice.net^ +||cv.h-docomo.com^ +||cv.hanna-saku.jp^ +||cv.hikari.organic^ +||cv.hikkoshizamurai.jp^ +||cv.hoikushi-bosyu.com^ +||cv.homepage-seisaku.jp^ +||cv.ignis.coach^ +||cv.it-kyujin.jp^ +||cv.japan-curtain.jp^ +||cv.jidoumail.com^ +||cv.joggo.jp^ +||cv.just-size.net^ +||cv.kuvings.jp^ +||cv.liability.jp^ +||cv.masteraxis.com^ +||cv.meo.tryhatch.co.jp^ +||cv.michiuru.jp^ +||cv.moena-eatstyle.net^ +||cv.my-lancul.com^ +||cv.nell.life^ +||cv.oiz-care.jp^ +||cv.online.ysroad.co.jp^ +||cv.optimo-slb.com^ +||cv.quocard.jp^ +||cv.rakuten-hikari.net^ +||cv.re-shop.jp^ +||cv.ryoutuki-kyujin.com^ +||cv.shiryoku1.com^ +||cv.stella-s.com^ +||cv.subscription-store.com^ +||cv.sumaho-hoken.jp^ +||cv.taskar.online^ +||cv.tenjin.cc^ +||cv.theatreacademy.info^ +||cv.tokyowork.jp^ +||cv.ui-chiho.clinic^ +||cv.virtualoffice-resonance.jp^ +||cv.web-sana.com^ +||cv.willbefit.jp^ +||cv.wp-avenue.com^ +||cv.www.jobcareer.jp^ +||cv.www.risetokyo.jp^ +||cv.www.rokuzan.net^ +||cv.xn--bcktcvdzde3c.biz^ +||cv.xn--zbs202g.com^ +||cv.zephylrin-x.net^ +||cv1.start-eo.jp^ +||cv1.stefany.co.jp^ +||dwuzxuvwlq.winticket.jp^ +||electricity2.tokyu-ps.jp^ +||ems-a8net-tracking.easy-myshop.jp^ +||herpes2.pa-ruit.jp^ +||investment.lianest.co.jp^ +||itp.yaku-job.com^ +||ja-jp-a8.etudehouse.com^ +||kaden.netoff.co.jp^ +||kikoe.aisei.co.jp^ +||kobetu.grand1corp.com^ +||listing-a8-itp.hello-storage.com^ +||lp.kumamoto4510.com^ +||mvc.shopjapan.co.jp^ +||nccaf.ncc-mens.com^ +||ntt-fletscv.ntt-flets.com^ +||onenet.gakujutsu.com^ +||p004.raffi-hair.com^ +||p005.raffi-hair.com^ +||pages2.rizap.jp^ +||pr.yokohama-chokin.com^ +||rsv.dankore.jp^ +||rsv.pairorder.jp^ +||salto.freeto.jp^ +||sekaopi.nocre.jp^ +||sfcv.chinavi-shop.jp^ +||shop.anu-cosme.com^ +||shopping.cellpure.co.jp^ +||smn.dankore.jp^ +||sokutei.car2828.jp^ +||st-a8.tscubic.com^ +||storea8tracking.alc.co.jp^ +||sub.booksdream-mypage.com^ +||sub.ecd.bookoffonline.co.jp^ +||sub.turningpoint.work^ +||summary.bookoffonline.co.jp^ +||sync-a8.cocolocala.jp^ +||tag.minimaid.co.jp^ +||test.shigoto-web.com^ +||test.zeus-wifi.jp^ +||testa8wifi.dokoyorimo.com^ +||thanks.hubspaces.jp^ +||thanks.olivesitter.com^ +||thanks.tsubaki-musicschool.com^ +||track-v4.ipadpresence.com^ +||track.craudia.com^ +||track.kiafudousan.com^ +||track.xmarketech.com^ +||tracking.196189.com^ +||tracking.lead-plus.jp^ +||traka8.crypto-mall.org^ +||trck-a8.j-depo.com^ +||trck.aeon.co.jp^ +||trck.atnenga.com^ +||trck.flexnet.co.jp^ +||trck.frutafrutashop.com^ +||trck.kenkiya.com^ +||trck.naco-do.com^ +||trck.nuwlnuwl.com^ +||trck.propo.co.jp^ +||trck.repesta.com^ +||trck.rework-s.com^ +||trck.stefany.co.jp^ +||trck02.magaseek.com^ +||trcka8.orobianco-jp.com^ +||trcka8net.bestlens.jp^ +||trcka8net.glens.jp^ +||trcka8net.irobot-jp.com^ +||trcka8net.lenszero.com^ +||trcka8net.qieto.net^ +||web.collaboration-access.com^ +||web.hikari-ocn.com^ +||web.hikari-softbank.com^ +||web.life-cw.com^ +||webtest.lpio.jp^ +||yoiku-sub.yoiku.support^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_plausible.txt *** +||a-api.skz.dev^ +||a.aawp.de^ +||a.iiro.dev^ +||a.linkz.ai^ +||also.greatsecuritydebate.net^ +||an.xavierrosee.com^ +||analytics.adam.page^ +||analytics.andrewsmith.com.au^ +||analytics.arunraghavan.net^ +||analytics.basistheory.com^ +||analytics.betterplaces.nl^ +||analytics.byecorps.com^ +||analytics.certifriedit.com^ +||analytics.chattarize.de^ +||analytics.churchthemes.com^ +||analytics.codeforscience.org^ +||analytics.codeskulptor.org^ +||analytics.editorialedomani.it^ +||analytics.eikko.ai^ +||analytics.ericafischerphotography.com^ +||analytics.gamedatacrunch.com^ +||analytics.geekyminds.net^ +||analytics.hambleden-capital.com^ +||analytics.hiome.com^ +||analytics.kerns.co^ +||analytics.lifestyledemocracy.com^ +||analytics.littlekingdesigns.com^ +||analytics.lunge.de^ +||analytics.mambaui.com^ +||analytics.mc500.info^ +||analytics.multithread.studio^ +||analytics.mycater.fr^ +||analytics.naturequant.com^ +||analytics.qualityquestions.co^ +||analytics.ramiyer.io^ +||analytics.ramiyer.me^ +||analytics.recamov.com^ +||analytics.sideprojectsoftware.com^ +||analytics.sixfigureswine.com^ +||analytics.teamcovenant.com^ +||analytics.top10-charts.com^ +||analytics.trust.page^ +||analytics.uxmetrics.com^ +||analytics.valheimgamer.com^ +||analytics.vanilla-project.guide^ +||analytics.wayland.app^ +||analytics.whostheboss.co.uk^ +||analytics.whotargets.me^ +||analytics.winter.ink^ +||analytics.xiloc.net^ +||analytics.zevvle.com^ +||antitracking.owncast.online^ +||api.digitalpiloten.org^ +||api.elliehuxtable.com^ +||api.fuck.education^ +||api.ryanyao.design^ +||apis.4bn.xyz^ +||app-stats.supernotes.app^ +||artistchristinacarmel.ericksonbuilt.com^ +||assets.garron.blog^ +||assets.garron.me^ +||assets.mikeroulston.com^ +||assets.modeathletics.com^ +||assets.modehypertext.com^ +||aux.lansator.ro^ +||badwolf.open-election-compass.com^ +||besucher.nona.de^ +||bob.gitclear.com^ +||btstats.benakt.com^ +||cats.d20.rs^ +||cdn.arcstudiopro.com^ +||channelwatcher.panda.tech^ +||cheese.guac.live^ +||churro.noteapps.info^ +||count.gothaer-digital.de^ +||counter.cropvid.com^ +||counter.proxycrawl.com^ +||counter.subtitlebee.com^ +||counter.websitevoice.com^ +||cp.phiilu.com^ +||datum.appfleet.com^ +||ds.webprojectslab.com^ +||eliteclng.ericksonbuilt.com^ +||events.mikescerealshack.co^ +||explore.bytelab.uk^ +||external.techopian.com^ +||extramilefloorcare.ericksonbuilt.com^ +||f8phvntohv.tpetry.me^ +||galop.leferacheval-saintcloud.com^ +||hej.henriksommerfeld.se^ +||hi.koalendar.com^ +||hi.streetworkoutlist.com^ +||hola.xebel.co^ +||hstats.askmiso.com^ +||hurricane.tinybird.co^ +||info.bestbudgetapps.com^ +||informatics.filamentcolors.xyz^ +||insights.affilimate.com^ +||jinx.skullctf.com^ +||joy.ochronus.online^ +||kaladyaudiology.ericksonbuilt.com^ +||kingsandqueens.splowser.com^ +||l.lilyzhou.com^ +||l2k30jsa.theochu.com^ +||lkj23jlkajsa.realestate.help^ +||log.rhythmtowers.com^ +||loggychops.paulsmith.site^ +||logs.theccaa.com^ +||lytics.findairpods.com^ +||marsupial.roleup.com^ +||meter.bref.sh^ +||metric.methoddev.com^ +||metrics.creit.tech^ +||metrics.earrieta.dev^ +||metrics.recunia.de^ +||momotaro.craigmod.com^ +||momotaro.walkkumano.com^ +||munnin.hicsuntdra.co^ +||noushe.zevvle.com^ +||numbers.monthlyphotos.com^ +||nums.upscale.app^ +||p.classroombookings.com^ +||p.ejs.dev^ +||p.fairspot.host^ +||p.ianmjones.com^ +||p.iforge.app^ +||p.logbox.io^ +||p.marqueplace.com^ +||p.meilentrio.de^ +||p.ryanhalliday.com^ +||p.versacommerce.de^ +||p.victoria.dev^ +||p.viennaandbailey.co.nz^ +||p.wren.co^ +||p.www.viertaxa.com^ +||pa-stats.encore.dev^ +||pa.opqr.co^ +||pa.travelwhiz.app^ +||peards.zevvle.com^ +||pine.clk.click^ +||pine.nervecentral.com^ +||ping.naturadapt.com^ +||ping.resoluteoil.com^ +||pl.1feed.app^ +||pl.astro-akatemia.fi^ +||pl.astro.fi^ +||pl.carbon-tab.ethan.link^ +||pl.codetheweb.blog^ +||pl.ethan.link^ +||pl.fashmoms.com^ +||pl.getfamealy.com^ +||pl.hackathon-makers.com^ +||pl.hitthefrontpage.com^ +||pl.kanbanmail.app^ +||pl.kis-nagy.art^ +||pl.maya-astro.fi^ +||pl.mynorthstarapp.com^ +||pl.terraintinker.com^ +||pl.venusafe.com^ +||pl.volunteeringhb.org.nz^ +||pl.weinshops.online^ +||pla.wigglepixel.nl^ +||plan.devbyexample.com^ +||plans.fundtherebuild.com^ +||plas.imfeld.dev^ +||plau.artemsyzonenko.com^ +||plau.caisy.io^ +||plau.devitjobs.nl^ +||plau.devitjobs.uk^ +||plau.devitjobs.us^ +||plau.devjob.ro^ +||plau.germantechjobs.de^ +||plau.swissdevjobs.ch^ +||plauplauplau.app.budg.co^ +||plauplauplau.budg.co^ +||plaus.outpost.pub^ +||plaus.pentserv.com^ +||plausdj2ajskljzx0ikwkiasible.ethics.info^ +||plausibel.ablis.net^ +||plausible-stats.tangodelta.media^ +||plausible.adreform.com^ +||plausible.alexandar.me^ +||plausible.alpaga.io^ +||plausible.app.kdojang.com^ +||plausible.app.tlschedule.com^ +||plausible.bablab.com^ +||plausible.bacanalia.net^ +||plausible.baychi.org^ +||plausible.beanti.me^ +||plausible.benscarblog.com^ +||plausible.bostad.shop^ +||plausible.buildfirst.tech^ +||plausible.campwire.com^ +||plausible.canpoi.com^ +||plausible.conveyal.com^ +||plausible.corbettbarr.com^ +||plausible.countingindia.com^ +||plausible.dailytics.com^ +||plausible.deploymentfromscratch.com^ +||plausible.dev.logicboard.com^ +||plausible.dingran.me^ +||plausible.doctave.com^ +||plausible.ejs.dev^ +||plausible.eurostocks.nl^ +||plausible.exploreandcreate.com^ +||plausible.external.sine.foundation^ +||plausible.f1laps.com^ +||plausible.factly.in^ +||plausible.flowcv.io^ +||plausible.getlean.digital^ +||plausible.giveatip.io^ +||plausible.goldanger.de^ +||plausible.golfbreaks.com^ +||plausible.gryka.net^ +||plausible.gymglish.com^ +||plausible.haltakov.net^ +||plausible.help.exploreandcreate.com^ +||plausible.holderbaum-academy.de^ +||plausible.hopecanebay.com^ +||plausible.ionicelements.dev^ +||plausible.jeroenvandenboorn.nl^ +||plausible.joinself.com^ +||plausible.k6sbw.net^ +||plausible.kabaret.no^ +||plausible.kdojang.com^ +||plausible.kundenportal.io^ +||plausible.lesbianromantic.com^ +||plausible.logicboard.com^ +||plausible.mattpruitt.com^ +||plausible.mcj.co^ +||plausible.myvirtualsuper.com^ +||plausible.nickmazuk.com^ +||plausible.nmyvsn.net^ +||plausible.nuqu.org^ +||plausible.promlens.com^ +||plausible.prufit.co^ +||plausible.pumpkint.com^ +||plausible.quantumcomputingexplained.com^ +||plausible.quo.wtf^ +||plausible.rachel.systems^ +||plausible.reabra.com.br^ +||plausible.redchamp.net^ +||plausible.regex.help^ +||plausible.retune.de^ +||plausible.sbw.org^ +||plausible.shadygrovepca.org^ +||plausible.simplelogin.io^ +||plausible.srijn.net^ +||plausible.starlegacyfoundation.org^ +||plausible.strzibny.name^ +||plausible.sysloun.cz^ +||plausible.tac.dappstar.io^ +||plausible.tasteslikeme.ca^ +||plausible.tlschedule.com^ +||plausible.treelightsoftware.com^ +||plausible.urbanekuensteruhr.de^ +||plausible.veszelovszki.com^ +||plausible.visitu.com^ +||plausible.viteshot.com^ +||plausible.west.io^ +||plausible.x.baychi.org^ +||plausible.yalepaprika.com^ +||plausible.zest.dev^ +||plausible.zorin.com^ +||pls.ambue.com^ +||pls.fcrpg.net^ +||pls.skycastle.dev^ +||plsbl-staging.edison.se^ +||plsbl.edison.se^ +||prism.drivingkyoto.com^ +||prism.feurer-network.ch^ +||prism.netherlandlines.com^ +||prism.pablonouvelle.com^ +||prism.raumgleiter.com^ +||prism.singapouring.com^ +||prism.tramclockmunich.com^ +||pstat.akathists.com^ +||pstat.goodremotejobs.com^ +||pstats.cloudpal.app^ +||reddwarf.till-sanders.de^ +||reporting.autographapp.me^ +||retention.ankidecks.com^ +||s.allbootdisks.com^ +||s.cameratico.com^ +||s.crackedthecode.co^ +||s.cuoresportivo.no^ +||s.cybercompass.io^ +||s.ergotherapieblog.de^ +||s.fission.codes^ +||s.fraservotes.com^ +||s.freelanceratecalculator.com^ +||s.glimesh.tv^ +||s.innoq.com^ +||s.inspectelement.co^ +||s.leolabs.org^ +||s.mannes.tech^ +||s.maxrozen.com^ +||s.nerdfulmind.com^ +||s.repguard.uk^ +||s.saucisson-rebellion.fr^ +||s.sporks.space^ +||s.stgeorgeafc.com.au^ +||s.testingreactjs.com^ +||s.useeffectbyexample.com^ +||s.vucko.co^ +||sa.flux.community^ +||sats.mailbrew.com^ +||see.wasteorshare.com^ +||server.japanbyrivercruise.com^ +||server.olliehorn.com^ +||site-stats.supernotes.app^ +||sp.ballsdigroup.com^ +||sp.gameomatic.fr^ +||sp.jrklein.com^ +||sp.soniccares.com^ +||sp.spaceomatic.fr^ +||sp.wvoil.com^ +||st.anastasija.lt^ +||st.picshuffle.com^ +||st.preciousamber.com^ +||st.tulastudio.se^ +||starman.floorcleanse.co.uk^ +||stat.bill.harding.blog^ +||stat.landingpro.pl^ +||stat.recklesslove.co.za^ +||stat.umsu.de^ +||static.osalta.eu^ +||statistic.jac-systeme.de^ +||statistics.heatbeat.de^ +||statistik.apartments-tirolerhaus.at^ +||statman.sesong.info^ +||stats.69grad.de^ +||stats.acadevor.com^ +||stats.achtsame-yonimassage.de^ +||stats.activityvault.io^ +||stats.adlperformance.es^ +||stats.aixbrain.de^ +||stats.albert-kropp-gmbh.de^ +||stats.alibhai.co^ +||stats.alleaktien.de^ +||stats.alocreativa.com^ +||stats.am.ai^ +||stats.amaeya.media^ +||stats.amiibo.life^ +||stats.andrewlevinson.me^ +||stats.appcessible.org^ +||stats.arquido.com^ +||stats.artisansfiables.fr^ +||stats.artistchristinacarmel.com^ +||stats.asmodee.net^ +||stats.astrr.ru^ +||stats.asymptotic.io^ +||stats.auto-dombrowski.de^ +||stats.autofarm.network^ +||stats.bananatimer.com^ +||stats.bcdtravel.com^ +||stats.beanr.coffee^ +||stats.beatricew.com^ +||stats.beausimensen.com^ +||stats.belic.si^ +||stats.benui.ca^ +||stats.bernardobordadagua.com^ +||stats.bertwagner.com^ +||stats.bestservers.co^ +||stats.bholmes.dev^ +||stats.bikeschool.co.za^ +||stats.bimbase.nl^ +||stats.bitpost.app^ +||stats.blackbird-automotive.com^ +||stats.blackblog.cz^ +||stats.blockleviton.com^ +||stats.blog.catholicluv.com^ +||stats.blog.codingmilitia.com^ +||stats.blog.merckx.fr^ +||stats.blog.sean-wright.com^ +||stats.blog.sublimesecurity.com^ +||stats.bloke.blog^ +||stats.bmxdevils.be^ +||stats.book-rec.com^ +||stats.booncon.com^ +||stats.boscabeatha.ie^ +||stats.bostonedtech.org^ +||stats.breathly.app^ +||stats.brennholzauktion.com^ +||stats.briskoda.net^ +||stats.broddin.be^ +||stats.brumtechtapas.co.uk^ +||stats.buddiy.net^ +||stats.bungeefit.co.uk^ +||stats.burocratin.com^ +||stats.byma.com.br^ +||stats.byterocket.dev^ +||stats.cable.tech^ +||stats.callum.fyi^ +||stats.carrot2.org^ +||stats.carrotsearch.com^ +||stats.caseydunham.com^ +||stats.cassidyjames.com^ +||stats.catholicluv.com^ +||stats.centralswindonnorth-pc.gov.uk^ +||stats.cfcasts.com^ +||stats.chadly.net^ +||stats.changelog.com^ +||stats.chomp.haus^ +||stats.chronoslabs.net^ +||stats.cinqsecondes.fr^ +||stats.citizenos.com^ +||stats.clavisaurea.xyz^ +||stats.cleverdiabetic.com^ +||stats.cloud-backup-for-podio.com^ +||stats.coachinghive.com^ +||stats.code-it-studio.de^ +||stats.codinginfinity.me^ +||stats.codis.io^ +||stats.coditia.com^ +||stats.cohere.so^ +||stats.coldbox.org^ +||stats.connect.pm^ +||stats.convaise.com^ +||stats.corona-navi.de^ +||stats.covid.vitordino.com^ +||stats.craftybase.com^ +||stats.creativinn.com^ +||stats.crema.fi^ +||stats.cremashop.eu^ +||stats.cremashop.se^ +||stats.crewebo.de^ +||stats.crypdit.com^ +||stats.cryptmail.io^ +||stats.curbnumberpro.com^ +||stats.curtiscummings.me^ +||stats.dailyposter.com^ +||stats.danestevens.dev^ +||stats.danielwolf.photography^ +||stats.danner-landschaftsbau.at^ +||stats.dashbit.co^ +||stats.davidlms.com^ +||stats.davydepauw.be^ +||stats.dawn.md^ +||stats.declanbyrd.co.uk^ +||stats.deja-lu.de^ +||stats.depends-on-the-definition.com^ +||stats.develop.wwdcscholars.com^ +||stats.devenet.eu^ +||stats.devenet.info^ +||stats.devetkomentara.net^ +||stats.devrain.io^ +||stats.devskills.co^ +||stats.dexie.me^ +||stats.dflydev.com^ +||stats.diarmuidsexton.com^ +||stats.digiexpert.store^ +||stats.dillen.dev^ +||stats.divyanshu013.dev^ +||stats.dmail.co.nz^ +||stats.dmarcdigests.com^ +||stats.doana-r.com^ +||stats.doors.live^ +||stats.dotnetos.org^ +||stats.dotplan.io^ +||stats.doublejones.com^ +||stats.dreher-dreher.eu^ +||stats.drsaavedra.mx^ +||stats.dt-esthetique.ch^ +||stats.duetcode.io^ +||stats.earlygame.com^ +||stats.editorhawes.com^ +||stats.eedistudio.ie^ +||stats.eightyfourrooms.com^ +||stats.einsvieracht.de^ +||stats.ekomenyong.com^ +||stats.elementary.io^ +||stats.eliteclng.com^ +||stats.elixir-lang.org^ +||stats.elysenewland.com^ +||stats.emailrep.io^ +||stats.emk.at^ +||stats.emmah.net^ +||stats.emmas.site^ +||stats.engel-apotheke.de^ +||stats.engeldirekt.de^ +||stats.equium.io^ +||stats.erikinthekitchen.com^ +||stats.erlef.org^ +||stats.evenchilada.com^ +||stats.executebig.org^ +||stats.extramilefloorcare.com^ +||stats.eyehelp.co^ +||stats.fabiofranchino.com^ +||stats.faluninfo.at^ +||stats.faluninfo.ba^ +||stats.faluninfo.mk^ +||stats.faluninfo.rs^ +||stats.faluninfo.si^ +||stats.fastbackward.app^ +||stats.felipesere.com^ +||stats.femtobill.com^ +||stats.ferienwohnung-dombrowski.com^ +||stats.finalrabiesgeneration.org^ +||stats.findvax.us^ +||stats.flightsphere.com^ +||stats.florianfritz.net^ +||stats.flowphantom.com^ +||stats.frantic.im^ +||stats.frenlo.com^ +||stats.fs4c.org^ +||stats.fundimmo.com^ +||stats.fungus.computer^ +||stats.galeb.org^ +||stats.galleriacortona.com^ +||stats.geobox.app^ +||stats.gesund-vital-lebensfreude.com^ +||stats.getdoks.org^ +||stats.gethyas.com^ +||stats.getpickaxe.com^ +||stats.ghinda.com^ +||stats.glassmountains.co.uk^ +||stats.glyphs.fyi^ +||stats.gnalt.de^ +||stats.goldsguide.com^ +||stats.gounified.com^ +||stats.graphql-api.com^ +||stats.gras-system.org^ +||stats.gravitaswins.com^ +||stats.greatlakesdesign.co^ +||stats.groupconsent.eu^ +||stats.gslc.utah.edu^ +||stats.gtnetworks.com^ +||stats.guersanguillaume.com^ +||stats.guidingwallet.app^ +||stats.gynsprechstunde.de^ +||stats.hackershare.dev^ +||stats.halcyon.hr^ +||stats.hammertime.me^ +||stats.hauke.me^ +||stats.headhunted.com.au^ +||stats.henkverlinde.com^ +||stats.homepage-2021.askmiso-dev.com^ +||stats.homestow.com^ +||stats.hpz-scharnhausen.de^ +||stats.htmlcsstoimage.com^ +||stats.htp.org^ +||stats.hugoreeves.com^ +||stats.huysmanbouw.be^ +||stats.iamzero.dev^ +||stats.ibuildings.net^ +||stats.igassmann.me^ +||stats.igor4stir.com^ +||stats.in-tuition.net^ +||stats.incoming.co^ +||stats.increasinglyfunctional.com^ +||stats.indyhall.org^ +||stats.infoboard.de^ +||stats.innoq.com^ +||stats.instabudget.app^ +||stats.interactjs.io^ +||stats.interruptor.pt^ +||stats.intheloop.dev^ +||stats.intothebox.org^ +||stats.invoice.orballo.dev^ +||stats.ipadhire.co.nz^ +||stats.isabelsommerfeld.com^ +||stats.iscc-system.org^ +||stats.isthispoisonivy.website^ +||stats.ivs.rocks^ +||stats.jackwhiting.co.uk^ +||stats.jamesevers.co.uk^ +||stats.jamesilesantiques.com^ +||stats.jamhouse.app^ +||stats.jansix.at^ +||stats.jasonludden.dev^ +||stats.jdheyburn.co.uk^ +||stats.jerickson.net^ +||stats.jhsheridan.com^ +||stats.jjude.com^ +||stats.joaopedro.dev^ +||stats.jsbible.com^ +||stats.jtrees.io^ +||stats.jun-etan.com^ +||stats.justinwilliams.ca^ +||stats.kaladyaudiology.com^ +||stats.katharinascheitz.com^ +||stats.keirwhitaker.com^ +||stats.kendix.org^ +||stats.kensho.com^ +||stats.kettlebellbundle.com^ +||stats.kfcsint-lenaartsjeugd.be^ +||stats.klj-consult.com^ +||stats.knowkit.cloud^ +||stats.kod.ru^ +||stats.koehrer.de^ +||stats.koerner-logopaedie.de^ +||stats.kongressen.com^ +||stats.krauss.io^ +||stats.kryptoslogic.com^ +||stats.ks-labs.de^ +||stats.kyushoku2050.org^ +||stats.labibli.com^ +||stats.laptopsin.space^ +||stats.lastfm.matthiasloibl.com^ +||stats.latehours.net^ +||stats.lauracpa.ca^ +||stats.laxallstars.com^ +||stats.leaguestats.gg^ +||stats.leahcollection.com^ +||stats.learnlinux.tv^ +||stats.leavetrackapp.com^ +||stats.lefthoek.com^ +||stats.legendofnom.com^ +||stats.leoloso.com^ +||stats.lica.at^ +||stats.lik.fr^ +||stats.limitlessnetworks.eu^ +||stats.lippeshirts.de^ +||stats.literacysomerset.org^ +||stats.literaturkreis.online^ +||stats.lmdsp.com^ +||stats.localmetravel.com^ +||stats.lord.io^ +||stats.lstfnd.de^ +||stats.ltdhunt.com^ +||stats.luieremmer.net^ +||stats.lussoveloce.com^ +||stats.lyricall.cz^ +||stats.macosicons.com^ +||stats.madethis.gallery^ +||stats.maferland.com^ +||stats.magarantie5ans.fr^ +||stats.makerr.market^ +||stats.makingknown.xyz^ +||stats.maklerupdate.de^ +||stats.malte-bartels.de^ +||stats.martinbetz.eu^ +||stats.martyntaylor.com^ +||stats.mashword.com^ +||stats.mastermeup.com^ +||stats.masterybits.com^ +||stats.matthiasloibl.com^ +||stats.maximaconsulting.xyz^ +||stats.meetnfly.com^ +||stats.mein-futterlexikon.org^ +||stats.memberdrive.org^ +||stats.meno.science^ +||stats.mesenvies.fr^ +||stats.michaeloliver.dev^ +||stats.micv.works^ +||stats.missionrabies.com^ +||stats.moco-comics.com^ +||stats.mostlycoding.com.au^ +||stats.motion-effect.com^ +||stats.motorcyclepartsireland.ie^ +||stats.mrtnvh.com^ +||stats.multiplelenses.com^ +||stats.multiply.cloud^ +||stats.musicuniverse.education^ +||stats.myherocard.com^ +||stats.napaconnect.ca^ +||stats.navedislam.com^ +||stats.nddmed.com^ +||stats.nerdbusiness.com^ +||stats.newslit.co^ +||stats.nexagon.dk^ +||stats.nodewood.com^ +||stats.nonprofit.foundation^ +||stats.nothingbutnylon.com^ +||stats.nullsecure.com^ +||stats.nytecomics.com^ +||stats.obiit.co^ +||stats.obokat.se^ +||stats.odysseeseine.org^ +||stats.officefoosball.com^ +||stats.oldtinroof.com^ +||stats.oliveoil.pro^ +||stats.onepagelove.com^ +||stats.orbitalhealth.co^ +||stats.ordinarypuzzles.com^ +||stats.ortussolutions.com^ +||stats.osiemsiedem.com^ +||stats.otsohavanto.net^ +||stats.outpostdemo.com^ +||stats.ownpath.xyz^ +||stats.owre.se^ +||stats.p42.ai^ +||stats.parqet.com^ +||stats.parrot.dev^ +||stats.passwordyeti.com^ +||stats.pasteapp.io^ +||stats.pastorwagner.com^ +||stats.patout.dev^ +||stats.patriot.win^ +||stats.paulronge.se^ +||stats.paysagistes.pro^ +||stats.pebkac.io^ +||stats.pendleratlas.de^ +||stats.perpetual.pizza^ +||stats.petanode.com^ +||stats.petr.codes^ +||stats.phili.pe^ +||stats.philjava.com^ +||stats.photographer.com.au^ +||stats.pinoymusicstation.com^ +||stats.piplette.co^ +||stats.pitstone.co.uk^ +||stats.plainsending.com^ +||stats.planxti.com^ +||stats.poesieundgenuss.com^ +||stats.pointflottant.com^ +||stats.polekatfitness.com^ +||stats.poochplaces.dog^ +||stats.portalmonitor.io^ +||stats.postcollectors.com^ +||stats.poweringpastcoal.org^ +||stats.preeventualist.org^ +||stats.pri.org^ +||stats.pricewell.io^ +||stats.principedepaz.gt^ +||stats.print.work^ +||stats.processserver101.com^ +||stats.procumeni.cz^ +||stats.prodtype.com^ +||stats.profilehunt.net^ +||stats.profitablesignpricing.com^ +||stats.projectcongress.com^ +||stats.psychotherapieravensburg.de^ +||stats.pubfind.io^ +||stats.qovery.com^ +||stats.quicksilvercre.com^ +||stats.radicaldata.org^ +||stats.radicalweb.design^ +||stats.rasulkireev.com^ +||stats.reactician.com^ +||stats.readng.co^ +||stats.redlabelsports.com^ +||stats.redpandabooks.com^ +||stats.referralhero.com^ +||stats.rehaag-immobilien.de^ +||stats.reisemobil.pro^ +||stats.remotebear.io^ +||stats.reprage.com^ +||stats.respkt.de^ +||stats.reto.tv^ +||stats.revitfamily.app^ +||stats.rideinpeace.ie^ +||stats.rightourhistoryhawaii.com^ +||stats.robotika.ax^ +||stats.rocketvalidator.com^ +||stats.roderickduenas.com^ +||stats.ruhrfestspiele.de^ +||stats.rymawby.com^ +||stats.s-zt.at^ +||stats.sakurasky.com^ +||stats.sapnininkas.com^ +||stats.sascha-theobald.de^ +||stats.savoirplus-risquermoins.net^ +||stats.sax.net^ +||stats.scailable.net^ +||stats.scalesql.com^ +||stats.scottbartell.com^ +||stats.screenagers.com^ +||stats.screenwavemedia.com^ +||stats.seanbailey.dev^ +||stats.sebastiandombrowski.de^ +||stats.sebastiangale.ca^ +||stats.selectam.io^ +||stats.sendngnt.com^ +||stats.servicedesignjobs.com^ +||stats.seva.rocks^ +||stats.sexplore.app^ +||stats.shareup.app^ +||stats.shepherd.com^ +||stats.shh.io^ +||stats.shiftx.com^ +||stats.simplinetworks.com^ +||stats.sirdata.com^ +||stats.sixseven.at^ +||stats.ski.com^ +||stats.slicedthread.com^ +||stats.socialeurope.eu^ +||stats.soundbite.so^ +||stats.southswindon-pc.gov.uk^ +||stats.sparkloop.app^ +||stats.spreadtheworld.net^ +||stats.sprune.com^ +||stats.sqlteam.com^ +||stats.stack11.io^ +||stats.stackingthebricks.com^ +||stats.stacks.org^ +||stats.staging.hex.pm^ +||stats.steuer-soldaten.de^ +||stats.strawberry.rocks^ +||stats.studypages.com^ +||stats.sublimesecurity.com^ +||stats.suniboy.com^ +||stats.suominaikidoacademy.com^ +||stats.sushibyte.io^ +||stats.svemir.co^ +||stats.symbiofest.cz^ +||stats.tarasyarema.com^ +||stats.tax-venture.de^ +||stats.teamdetails.com^ +||stats.tedserbinski.com^ +||stats.teenranch.com^ +||stats.tekin.co.uk^ +||stats.terre-compagne.fr^ +||stats.textprotocol.org^ +||stats.theiere-tasse.com^ +||stats.thelandofar.be^ +||stats.thenewradiance.com^ +||stats.thingsthatkeepmeupatnight.dev^ +||stats.thomasbandt.com^ +||stats.thomasvitale.com^ +||stats.tijdschrift.zenleven.nl^ +||stats.time2unfold.com^ +||stats.timkhoury.com^ +||stats.timmo.immo^ +||stats.tinkerer.tools^ +||stats.tl8.io^ +||stats.tms-development.com^ +||stats.tms-development.de^ +||stats.tms-institut.de^ +||stats.tnc.sc^ +||stats.toiletmap.org.uk^ +||stats.training.fit^ +||stats.travelfodder.com^ +||stats.trenntoi.de^ +||stats.tresor.one^ +||stats.trigo.at^ +||stats.trussed.dev^ +||stats.tubecalculator.co.uk^ +||stats.twhl.xyz^ +||stats.ubiwiz.com^ +||stats.unka.space^ +||stats.unusualtourist.com^ +||stats.urbanfinn.com^ +||stats.urlaubsverwaltung.cloud^ +||stats.useeffect.dev^ +||stats.uxtools.co^ +||stats.v4.agirpourlenvironnement.org^ +||stats.vanityprojects.com^ +||stats.vdsnow.ru^ +||stats.vican.me^ +||stats.visions.ch^ +||stats.voltimum.com^ +||stats.wachstum.at^ +||stats.walkiees.co.uk^ +||stats.websnap.app^ +||stats.wecodeni.com^ +||stats.wellbeyond.com^ +||stats.westswindon-pc.gov.uk^ +||stats.whenpigsflybbq.com^ +||stats.whereisit5pmrightnow.com^ +||stats.wordvested.org^ +||stats.world.hey.com^ +||stats.wvs.org.uk^ +||stats.wvsindia.org^ +||stats.wwdcscholars.com^ +||stats.www.agirpourlenvironnement.org^ +||stats.wymanmobilenotary.com^ +||stats.xactcode.com^ +||stats.xn--antnio-dxa.pt^ +||stats.zimri.net^ +||statystyki.ekspertyzy-szkolenia.pl^ +||sts.authramp.com^ +||sts.eliasjarzombek.com^ +||sts.papyrs.com^ +||sts.tour-europe.org^ +||stts.sgab-srfp.ch^ +||stts.swisshranalytics.ch^ +||t.lastcast.fm^ +||tics.cortex.gg^ +||tics.seeker.gg^ +||tics.techdirt.com^ +||tipstats.onepagelove.com^ +||tock.weg.plus^ +||track.slickinbox.com^ +||traffic.hostedstatus.page^ +||traffic.taktikal.is^ +||triton.companyegg.com^ +||varys.asongofzandc.xyz^ +||views.emikajewelry.com^ +||views.ericcapella.com^ +||views.sikerlogistics.com^ +||views.sikerproducts.com^ +||views.wioks.com^ +||visitorcenter.ioafw.com^ +||visitorcenter.srwild.com^ +||visitors.gigianddavid.com^ +||vitals.cgddrd.me^ +||we-love-privacy.humane.club^ +||webstats.bijenpatel.com^ +||yolo.philipbjorge.com^ +||zahlen.olereissmann.de^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_tracedock.txt *** +||2tty.overstappen.nl^ +||api.bunzlaucastle.com^ +||app1.maatwerkonline.nl^ +||bc.semwerkt.nl^ +||box.bossdata.be^ +||cms.hardloopaanbiedingen.nl^ +||ee.impactextend.dk^ +||erp.qwic.nl^ +||host11.traffic-builders.com^ +||o2.ikontwerpflyers.nl^ +||s1.carnext.com^ +||s4.parkeren-amsterdam.com^ +||s4.parkeren-haarlem.nl^ +||s4.parkeren-utrecht.nl^ +||tdep.bunzlonline.nl^ +||tdep.growwwdigital.com^ +||tdep.sdim.nl^ +||tdep.suncamp.be^ +||tdep.suncamp.de^ +||tdep.suncamp.nl^ +||tdep.suncamp.pl^ +||tdep.teamnijhuis.com^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_at-internet.txt *** +||71efe2183b8663ad5bf9d7a9320aeb48.leboncoin.fr^ +||a.20minutes.fr^ +||a.hellowork.com^ +||a.pourquoidocteur.fr^ +||a1.api.bbc.co.uk^ +||a1.api.bbc.com^ +||abncx.amv.fr^ +||ama.planet-wissen.de^ +||ama.quarks.de^ +||ama.wdr.de^ +||ama.wdrmaus.de^ +||ana.tv5unis.ca^ +||arrietty.nrj.fr^ +||at-cddc.actu-juridique.fr^ +||at.badische-zeitung.de^ +||atconnect.npo.nl^ +||ati-a1.946d001b783803c1.xhst.bbci.co.uk^ +||ati.sazka.cz^ +||aud.banque-france.fr^ +||avocado.laprovence.com^ +||avp.labanquepostale.fr^ +||blava.viessmann.sk^ +||brickworks.viessmann.sg^ +||buf.lemonde.fr^ +||c0012.brsimg.com^ +||checkpointcharlie.heizung.de^ +||chihiro.nostalgie.fr^ +||col.casa.it^ +||col.idealista.com^ +||col.idealista.it^ +||col.idealista.pt^ +||col.rentalia.com^ +||collect.meilleurtaux.com^ +||conimicutlighthouse.viessmann-us.com^ +||content.kleinezeitung.at^ +||crocetta.viessmann.it^ +||culture.intermedes.com^ +||d.deloitte.fr^ +||d.m-net.de^ +||d.santemagazine.fr^ +||d.uni-medias.com^ +||da.freo.nl^ +||da.maif.fr^ +||da.rabobank.nl^ +||dfr.deloitte.com^ +||dimensions.mappy.com^ +||donjigrad.viessmann.rs^ +||drau.viessmann.si^ +||epwa.europarl.europa.eu^ +||fabryczna.viessmann.pl^ +||faucons.viessmann.fr^ +||hal.courrierinternational.com^ +||hd.pe.fr^ +||hmg.handelsblatt.com^ +||hmg.wiwo.de^ +||hrbitov.viessmann.cz^ +||image.ard.de^ +||image.mdr.de^ +||images.kika.de^ +||insights.biallo.de^ +||insights.sport1.de^ +||johannes.voith.com^ +||kallerupstone.viessmann.dk^ +||kiki.rireetchansons.fr^ +||kistacity.viessmann.se^ +||lem.nouvelobs.com^ +||mediniku.viessmann.lt^ +||mefo1.zdf.de^ +||mkt.usz.ch^ +||montpalatin.handicap.fr^ +||pear.ca-eko-globetrotter.fr^ +||ponyo.cheriefm.fr^ +||protys.protys.fr^ +||res.elle.fr^ +||res.femina.fr^ +||res.franc-tireur.fr^ +||res.marianne.net^ +||res.programme-television.org^ +||res.public.fr^ +||ressources.annoncesbateau.com^ +||ressources.argusassurance.com^ +||ressources.caradisiac.com^ +||ressources.centraleauto.com^ +||ressources.lacentrale.fr^ +||ressources.lagazette.com^ +||ressources.lemoniteur.com^ +||ressources.lsa.fr^ +||ressources.mavoiturecash.fr^ +||ressources.promoneuve.fr^ +||ressources.usine-digitale.com^ +||ressources.usine-nouvelle.com^ +||rsc.lepoint.fr^ +||salzwerk.viessmann.de^ +||selvi.viessmann.com.tr^ +||severn.viessmann.co.uk^ +||sheeta.nrj-play.fr^ +||st1.lg.avendrealouer.fr^ +||steinbackhaus.viessmann.com^ +||steinernehaus.viessmann.at^ +||steinsala.viessmann.lu^ +||strawberry.basf.com^ +||tm.urssaf.fr^ +||torropinto.viessmann.es^ +||tse.telerama.fr^ +||uusimaa.viessmann.fi^ +||waati.quechoisir.org^ +||wareneingang.edeka.de^ +||wasserkraftwerkkessel.viessmann.ch^ +||waterlooberlin.viessmann.ca^ +||woodstock.viessmann.com.au^ +||wvvw.france24.com^ +||wvvw.francemediasmonde.com^ +||wvvw.infomigrants.net^ +||wvvw.mc-doualiya.com^ +||wvvw.rfi.fr^ +||y1.arte.tv^ +||zagrabiti.viessmann.hr^ +||zaventemdijleland.viessmann.be^ +||zelten.fritz-berger.de^ +||zug.sbb.ch^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_adobe.txt *** +||0tfsd2rwwu3xjstb.edge41.testandtarget.omniture.com^ +||1ps6e7sort397gy9.edge46.testandtarget.omniture.com^ +||20.edge46.testandtarget.omniture.com^ +||a.1800gotjunk.com^ +||a.acxiom.com^ +||a.addskills.se^ +||a.alzcombocare.com^ +||a.amw.com^ +||a.bigtennetwork.com^ +||a.dev-ajo.caixabank.com^ +||a.ehc.com^ +||a.ekero.se^ +||a.fchp.org^ +||a.fox.com^ +||a.foxsports.com^ +||a.foxsportsarizona.com^ +||a.foxsportscarolinas.com^ +||a.foxsportsdetroit.com^ +||a.foxsportsflorida.com^ +||a.foxsportshouston.com^ +||a.foxsportskansascity.com^ +||a.foxsportslocal.com^ +||a.foxsportsmidwest.com^ +||a.foxsportsnorth.com^ +||a.foxsportsohio.com^ +||a.foxsportssandiego.com^ +||a.foxsportssouth.com^ +||a.foxsportssouthwest.com^ +||a.foxsportstennessee.com^ +||a.foxsportswest.com^ +||a.foxsportswisconsin.com^ +||a.fxnetworks.com^ +||a.hjart-lungfonden.se^ +||a.ipoque.com^ +||a.koodomobile.com^ +||a.lls.org^ +||a.loi.nl^ +||a.medtronic.com^ +||a.mercuriurval.com^ +||a.micorp.com^ +||a.munters.cn^ +||a.munters.co.uk^ +||a.munters.com.au^ +||a.munters.com.mx^ +||a.munters.com^ +||a.munters.es^ +||a.munters.fi^ +||a.munters.it^ +||a.munters.jp^ +||a.munters.nl^ +||a.munters.se^ +||a.munters.us^ +||a.pork.org^ +||a.publicmobile.ca^ +||a.redbrickhealth.com^ +||a.replaytheseries.com^ +||a.rohde-schwarz.com.cn^ +||a.rohde-schwarz.com^ +||a.sami.se^ +||a.simonandschuster.com^ +||a.sj.se^ +||a.smetrics.sovereign.com^ +||a.sodra.com^ +||a.spv.se^ +||a.svenskfast.se^ +||a.tactics.com^ +||a.telus.com^ +||a.transportgruppen.se^ +||a.trivita.com^ +||a.wheelabratorgroup.com^ +||aa-aem.hamamatsu.com^ +||aa-metrics.aircard.jp^ +||aa-metrics.airpayment.jp^ +||aa-metrics.airregi.jp^ +||aa-metrics.airreserve.net^ +||aa-metrics.airrsv.net^ +||aa-metrics.airwait.jp^ +||aa-metrics.arg.x.recruit.co.jp^ +||aa-metrics.beauty.hotpepper.jp^ +||aa-metrics.bookingtable.jp^ +||aa-metrics.golf-jalan.net^ +||aa-metrics.handy.airregi.jp^ +||aa-metrics.handy.arg.x.recruit.co.jp^ +||aa-metrics.hokench.com^ +||aa-metrics.hotpepper-gourmet.com^ +||aa-metrics.hotpepper.jp^ +||aa-metrics.jalan.net^ +||aa-metrics.minterior.jp^ +||aa-metrics.ponparemall.com^ +||aa-metrics.r-cash.jp^ +||aa-metrics.recruit-card.jp^ +||aa-metrics.restaurant-board.com^ +||aa-metrics.s-lms.net^ +||aa-metrics.salonboard.com^ +||aa-metrics.tabroom.jp^ +||aa-metrics.trip-ai.jp^ +||aa.analog.com^ +||aa.athome.com^ +||aa.bathandbodyworks.com^ +||aa.cbs.com^ +||aa.cbsi.com^ +||aa.cbsnews.com^ +||aa.cbssports.com^ +||aa.cnet.com^ +||aa.comicbook.com^ +||aa.db-finanzberatung.de^ +||aa.deutsche-bank.de^ +||aa.dyson.at^ +||aa.dyson.be^ +||aa.dyson.ch^ +||aa.dyson.co.uk^ +||aa.dyson.com^ +||aa.dyson.de^ +||aa.dyson.dk^ +||aa.dyson.es^ +||aa.dyson.fr^ +||aa.dyson.ie^ +||aa.dyson.it^ +||aa.dyson.nl^ +||aa.dyson.pt^ +||aa.dyson.se^ +||aa.dysoncanada.ca^ +||aa.fyrst.de^ +||aa.gamespot.com^ +||aa.giantbomb.com^ +||aa.irvinecompanyapartments.com^ +||aa.irvinecompanyoffice.com^ +||aa.kyoceradocumentsolutions.com^ +||aa.last.fm^ +||aa.maxblue.de^ +||aa.mclaren.com^ +||aa.metacritic.com^ +||aa.neom.com^ +||aa.norisbank.de^ +||aa.pacificdentalservices.com^ +||aa.paramountplus.com^ +||aa.popculture.com^ +||aa.poptv.com^ +||aa.postbank.de^ +||aa.reebok.com^ +||aa.reebok.nl^ +||aa.sparebank1.no^ +||aa.tallink.com^ +||aa.tescomobile.com^ +||aa.thedoctorstv.com^ +||aa.tv.com^ +||aa.tvguide.com^ +||aa.wowma.jp^ +||aa.zdnet.com^ +||aaat.2ndstreet.jp^ +||aadata.april-international.com^ +||aainfo.anz.co.nz^ +||aametrics.aktia.fi^ +||aamt.nbcnews.com^ +||aamt.newsapp.telemundo.com^ +||aamt.today.com^ +||aanalytics.adelaide.edu.au^ +||aans.athome.com^ +||aas.bellemaison.jp^ +||aas.ismet.kz^ +||aas.mclaren.com^ +||aas.neom.com^ +||aas.visitsaudi.com^ +||abmeldung.information.o2.de^ +||abmeldung.information.whatsappsim.de^ +||abt.bauhaus.es^ +||abt.bauhaus.info^ +||abt.nike.com^ +||abt.nl.bauhaus^ +||academics.academicsuperstore.com^ +||acc.info.lumxpert.signify.com^ +||acc.marketing.adobedxcusteng.com^ +||access.hikaritv.net^ +||acemetrics.aaa.com^ +||activity.newlook.com^ +||adb-analytics.live-now.com^ +||adb-secured.kijk.nl^ +||adb.kijk.nl^ +||adb.superrtl.de^ +||adb.toggoeltern.de^ +||adbedgeexp.aircanada.com^ +||adbmetrics.abc.es^ +||adbmetrics.blogasturias.com^ +||adbmetrics.canarias7.es^ +||adbmetrics.caravantur.eus^ +||adbmetrics.degustacastillayleon.es^ +||adbmetrics.diariosur.es^ +||adbmetrics.diariovasco.com^ +||adbmetrics.elcomercio.es^ +||adbmetrics.eldiariomontanes.es^ +||adbmetrics.elnortedecastilla.es^ +||adbmetrics.hoy.es^ +||adbmetrics.hyundai.com^ +||adbmetrics.ideal.es^ +||adbmetrics.koreanair.com^ +||adbmetrics.larioja.com^ +||adbmetrics.lasprovincias.es^ +||adbmetrics.laverdad.es^ +||adbmetrics.lomejordelvinoderioja.com^ +||adbmetrics.masterelcorreo.com^ +||adbmetrics.miperiodicodigital.com^ +||adbmetrics.vehiculosdeocasion.eus^ +||adbmetrics.vocento.com^ +||adbmetrics.welife.es^ +||adbmetrics.womennow.es^ +||adbmetrics.xn--futuroenespaol-1nb.es^ +||adbsmetrics.ep.hmc.co.kr^ +||adbsmetrics.everland.com^ +||adbsmetrics.genesis.com^ +||adbsmetrics.hanwha.com^ +||adbsmetrics.hyundai.com^ +||adbsmetrics.kia.com^ +||adbsmetrics.koreanair.com^ +||adbsmetrics.kt.com^ +||adbsmetrics.lgcaremall.com^ +||adbsmetrics.lotterentacar.net^ +||adbsmetrics.thewhoo.com^ +||adobe-analytics-dc.belastingdienst.nl^ +||adobe-analytics.vionicshoes.com^ +||adobe-dev-landingpageprefix.descubre.interbank.pe^ +||adobe-ep.cms.gov^ +||adobe-ep.cuidadodesalud.gov^ +||adobe-ep.healthcare.gov^ +||adobe-ep.insurekidsnow.gov^ +||adobe-ep.medicaid.gov^ +||adobe-ep.medicare.gov^ +||adobe-nonsecure.cjone.com^ +||adobe-secure.cjone.com^ +||adobe.aeonbank.co.jp^ +||adobe.autoscout24.at^ +||adobe.autoscout24.be^ +||adobe.autoscout24.bg^ +||adobe.autoscout24.com.tr^ +||adobe.autoscout24.com.ua^ +||adobe.autoscout24.com^ +||adobe.autoscout24.cz^ +||adobe.autoscout24.de^ +||adobe.autoscout24.es^ +||adobe.autoscout24.eu^ +||adobe.autoscout24.fr^ +||adobe.autoscout24.hr^ +||adobe.autoscout24.it^ +||adobe.autoscout24.lu^ +||adobe.autoscout24.nl^ +||adobe.autoscout24.pl^ +||adobe.autoscout24.ro^ +||adobe.autoscout24.ru^ +||adobe.autoscout24.se^ +||adobe.bupaglobal.com^ +||adobe.dynamic.ca^ +||adobe.falabella.com.ar^ +||adobe.falabella.com.co^ +||adobe.falabella.com.pe^ +||adobe.falabella.com^ +||adobe.filmstruck.com^ +||adobe.pmi.org^ +||adobe.sodimac.cl^ +||adobe.sukoonglobalhealth.com^ +||adobe.toridoll.com^ +||adobe.truckscout24.com^ +||adobe.wacoal.jp^ +||adobeanalytic.aerotek.com^ +||adobeanalytic.allegisglobalsolutions.com^ +||adobeanalytic.astoncarter.com^ +||adobeanalytic.teksystems.com^ +||adobeanalytics-http.hds.com^ +||adobeanalytics-https.hds.com^ +||adobeanalytics-secure.girlscouts.org^ +||adobeanalytics.actalentservices.com^ +||adobeanalytics.aerotek.com^ +||adobeanalytics.allegis-partners.com^ +||adobeanalytics.allegisglobalsolutions.com^ +||adobeanalytics.allegisgroup.com^ +||adobeanalytics.astoncarter.com^ +||adobeanalytics.bws.com.au^ +||adobeanalytics.danmurphys.com.au^ +||adobeanalytics.easi.com^ +||adobeanalytics.geico.com^ +||adobeanalytics.gettinghired.com^ +||adobeanalytics.medline.com^ +||adobeanalytics.mlaglobal.com^ +||adobeanalytics.populusgroup.com^ +||adobeanalytics.serveone.co.kr^ +||adobeanalytics.teksystems.com^ +||adobeanalytics.vice.com^ +||adobeedge.morganstanley.com^ +||adobeedge.my.gov.au^ +||adobemarketing.bodendirect.at^ +||adobemetrics.yellohvillage.co.uk^ +||adobemetrics.yellohvillage.com^ +||adobemetrics.yellohvillage.de^ +||adobemetrics.yellohvillage.es^ +||adobemetrics.yellohvillage.fr^ +||adobemetrics.yellohvillage.it^ +||adobemetrics.yellohvillage.nl^ +||adobes.marugame-seimen.com^ +||adobes.pmi.org^ +||adobetarget.yellohvillage.fr^ +||adtarget.barcainnovationhub.com^ +||adtarget.fcbarcelona.cat^ +||adtarget.fcbarcelona.co.it^ +||adtarget.fcbarcelona.com^ +||adtarget.fcbarcelona.es^ +||adtarget.fcbarcelona.fr^ +||adtarget.fcbarcelona.jp^ +||adtarget.fcbarcelona.net^ +||adtd.douglas.at^ +||adtd.douglas.be^ +||adtd.douglas.ch^ +||adtd.douglas.cz^ +||adtd.douglas.de^ +||adtd.douglas.hr^ +||adtd.douglas.hu^ +||adtd.douglas.it^ +||adtd.douglas.nl^ +||adtd.douglas.pl^ +||adtd.douglas.pt^ +||adtd.douglas.ro^ +||adtd.douglas.si^ +||adtd.douglas.sk^ +||adtd.niche-beauty.com^ +||adtd.parfumdreams.at^ +||adtd.parfumdreams.be^ +||adtd.parfumdreams.ch^ +||adtd.parfumdreams.co.uk^ +||adtd.parfumdreams.cz^ +||adtd.parfumdreams.de^ +||adtd.parfumdreams.dk^ +||adtd.parfumdreams.es^ +||adtd.parfumdreams.fi^ +||adtd.parfumdreams.fr^ +||adtd.parfumdreams.ie^ +||adtd.parfumdreams.it^ +||adtd.parfumdreams.nl^ +||adtd.parfumdreams.pl^ +||adtd.parfumdreams.pt^ +||adtd.parfumdreams.se^ +||aec-target.base.be^ +||aec-target.telenet.be^ +||aecid.santanderbank.com^ +||aep-target.credit-suisse.com^ +||aepxlg.adobe.com^ +||ainu.intel.cn^ +||ainu.intel.co.jp^ +||ainu.intel.co.kr^ +||ainu.intel.co.uk^ +||ainu.intel.com.au^ +||ainu.intel.com.br^ +||ainu.intel.com.tw^ +||ainu.intel.com^ +||ainu.intel.de^ +||ainu.intel.es^ +||ainu.intel.fr^ +||ainu.intel.in^ +||ainu.intel.it^ +||ainu.intel.la^ +||ainu.intel.pl^ +||ajo-lp-salesvelocity.adobedemo.com^ +||ajo-zensar.adobesandbox.com^ +||ajo1gdc.ajo1gdc.adobevlab.com^ +||al-smetrics.vizio.com^ +||ametrics.finn.no^ +||ametrics.lumen.com^ +||ametrics.mheducation.com^ +||ametrics.web.dnbbank.no^ +||an.avast.com^ +||an.avast.ru^ +||an.constantcontact.com^ +||an.milb.com^ +||an.mlb.com^ +||an.sny.tv^ +||an.theblaze.com^ +||an.yesnetwork.com^ +||analytic.alabama.aaa.com^ +||analytic.americanfunds.com^ +||analytic.buoyweather.com^ +||analytic.calif.aaa.com^ +||analytic.capitalgroup.com^ +||analytic.cibc.com^ +||analytic.fishtrack.com^ +||analytic.hawaii.aaa.com^ +||analytic.hotelclub.com^ +||analytic.newmexico.aaa.com^ +||analytic.northernnewengland.aaa.com^ +||analytic.simplyhealth.co.uk^ +||analytic.texas.aaa.com^ +||analytic.tidewater.aaa.com^ +||analytic.underarmour.com^ +||analytics-lgs.corebridgefinancial.com^ +||analytics-nssl.bradyid.com^ +||analytics-secure.dollargeneral.com^ +||analytics-ssl.allconnect.com^ +||analytics-ssl.bradyid.com^ +||analytics-ssl.seton.co.uk^ +||analytics.1800contacts.com^ +||analytics.adultswim.co.uk^ +||analytics.airindia.com^ +||analytics.airtron.com^ +||analytics.alrajhibank.com.sa^ +||analytics.americanfunds.com^ +||analytics.amig.com^ +||analytics.argeton.com^ +||analytics.asml.com^ +||analytics.autozone.com^ +||analytics.avis.de^ +||analytics.awhr.com^ +||analytics.bgr.com^ +||analytics.bigfishgames.com^ +||analytics.bleacherreport.com^ +||analytics.boing.es^ +||analytics.boomerangtv.co.uk^ +||analytics.box.com^ +||analytics.boxlunch.com^ +||analytics.brickaward.com^ +||analytics.canaltnt.es^ +||analytics.capitalgroup.com^ +||analytics.cartoonnetwork.co.uk^ +||analytics.cartoonnetwork.com.au^ +||analytics.cartoonnetwork.jp^ +||analytics.cartoonnetworkasia.com^ +||analytics.cartoonnetworkindia.com^ +||analytics.cartoonnetworkmena.com^ +||analytics.cdf.cl^ +||analytics.ceu.com^ +||analytics.changiairport.com^ +||analytics.chilevision.cl^ +||analytics.chvnoticias.cl^ +||analytics.cibc.com^ +||analytics.cibcrewards.com^ +||analytics.cirroenergy.com^ +||analytics.cnfanart.com^ +||analytics.cnnchile.com^ +||analytics.combatefreestyle.com^ +||analytics.conad.it^ +||analytics.concorsicartoonito.it^ +||analytics.corusent.com^ +||analytics.cyrillus.be^ +||analytics.cyrillus.ch^ +||analytics.cyrillus.com^ +||analytics.cyrillus.de^ +||analytics.cyrillus.fr^ +||analytics.data.lloydsbankinggroup.com^ +||analytics.directenergy.ca^ +||analytics.directenergy.com^ +||analytics.discountpowertx.com^ +||analytics.disneyplus.com^ +||analytics.egernsund.com^ +||analytics.egernsund.de^ +||analytics.esporteinterativo.com.br^ +||analytics.evo.co.uk^ +||analytics.firstbankcardcenter.com^ +||analytics.firstbankcardplcc.com^ +||analytics.firstnational.com^ +||analytics.fishtrack.com^ +||analytics.floridatravellife.com^ +||analytics.fnbfremont.com^ +||analytics.fnni.com^ +||analytics.futuro360.com^ +||analytics.geastore.com^ +||analytics.geoutletstore.com^ +||analytics.gestore.com^ +||analytics.gewaterheater.com^ +||analytics.greenmountain.com^ +||analytics.greenmountainenergy.com^ +||analytics.hardrock.com^ +||analytics.haworth.com^ +||analytics.hazeldenbettyford.org^ +||analytics.hiexpress.com^ +||analytics.hlntv.com^ +||analytics.holidayinn.com^ +||analytics.hollywoodlife.com^ +||analytics.homebank.ro^ +||analytics.homes.com^ +||analytics.hottopic.com^ +||analytics.id.amazongames.com^ +||analytics.ihg.com^ +||analytics.ishopchangi.com^ +||analytics.jjkellerconsulting.com^ +||analytics.jjkellerdatasense.com^ +||analytics.jjkellersafety.com^ +||analytics.johnson.ca^ +||analytics.joincambridge.com^ +||analytics.kellerencompass.com^ +||analytics.kellerpermits.com^ +||analytics.kellyservices.com^ +||analytics.lendio.com^ +||analytics.lexisnexisrisk.com^ +||analytics.makro.be^ +||analytics.makro.pt^ +||analytics.martinandosa.com^ +||analytics.massivwerthaus.at^ +||analytics.metro-cc.ru^ +||analytics.metro.be^ +||analytics.metro.co.in^ +||analytics.metro.de^ +||analytics.metro.fr^ +||analytics.metro.pk^ +||analytics.metro.ua^ +||analytics.midas-antilles.fr^ +||analytics.midas.be^ +||analytics.midas.ci^ +||analytics.midas.es^ +||analytics.midas.fr^ +||analytics.midas.it^ +||analytics.midas.pt^ +||analytics.midas.re^ +||analytics.midas.sn^ +||analytics.midas.tc^ +||analytics.mondotv.jp^ +||analytics.myapstore.com^ +||analytics.mystream.com^ +||analytics.national-lottery.co.uk^ +||analytics.navyfederal.org^ +||analytics.ncaa.com^ +||analytics.nordea.com^ +||analytics.nordea.dk^ +||analytics.nordea.fi^ +||analytics.nordea.no^ +||analytics.nordea.se^ +||analytics.nrg.com^ +||analytics.nrgprotects.com^ +||analytics.onlinehomeretail.co.uk^ +||analytics.pgatour.com^ +||analytics.phn.com^ +||analytics.picknrg.com^ +||analytics.pipelife-bewaesserung.at^ +||analytics.pipelife.at^ +||analytics.pipelife.bg^ +||analytics.pipelife.com.tr^ +||analytics.pipelife.com^ +||analytics.pipelife.cz^ +||analytics.pipelife.de^ +||analytics.pipelife.ee^ +||analytics.pipelife.hr^ +||analytics.pipelife.hu^ +||analytics.pipelife.ie^ +||analytics.pipelife.lt^ +||analytics.pipelife.lv^ +||analytics.pipelife.nl^ +||analytics.pipelife.no^ +||analytics.pipelife.pl^ +||analytics.pipelife.ro^ +||analytics.pipelife.rs^ +||analytics.pipelife.se^ +||analytics.pipelife.si^ +||analytics.plumbworld.co.uk^ +||analytics.pnc.com^ +||analytics.qualcomm.com^ +||analytics.ratioform.ch^ +||analytics.reliant.com^ +||analytics.runpath.com^ +||analytics.seagate.com^ +||analytics.shopncaasports.com^ +||analytics.simplii.com^ +||analytics.simplyhealth.co.uk^ +||analytics.sixt.be^ +||analytics.sixt.cn^ +||analytics.sixt.com^ +||analytics.sixt.de^ +||analytics.sixt.es^ +||analytics.sixt.fr^ +||analytics.sixt.jobs^ +||analytics.sixt.jp^ +||analytics.sixt.nl^ +||analytics.sixtcarsales.de^ +||analytics.sixtmiddleeast.com^ +||analytics.skinit.com^ +||analytics.smart.mercedes-benz.com^ +||analytics.soluforce.com^ +||analytics.sona-mira.co.jp^ +||analytics.southpointcasino.com^ +||analytics.spark.co.nz^ +||analytics.superstation.com^ +||analytics.surfline.com^ +||analytics.sydney.edu.au^ +||analytics.tabichan.jp^ +||analytics.tbs.com^ +||analytics.tcm.com^ +||analytics.techem.com^ +||analytics.techem.de^ +||analytics.thehartford.com^ +||analytics.theinstitutes.org^ +||analytics.tnt-tv.com^ +||analytics.tnt-tv.de^ +||analytics.tnt-tv.pl^ +||analytics.tnt-tv.ro^ +||analytics.tnt.africa^ +||analytics.tntdram.com^ +||analytics.tntdrama.com^ +||analytics.tntdramma.com^ +||analytics.tntsports.cl^ +||analytics.tntsports.com.ar^ +||analytics.tntsports.com.br^ +||analytics.tntsports.com^ +||analytics.tondach.pl^ +||analytics.toyotaforklift.com^ +||analytics.truckingauthority.com^ +||analytics.trutv.com^ +||analytics.turnertv.com^ +||analytics.ubs.com^ +||analytics.uhhospitals.org^ +||analytics.underarmour.com^ +||analytics.unive.nl^ +||analytics.verizon.com^ +||analytics.verizonwireless.com^ +||analytics.virginaustralia.com^ +||analytics.virginmobileusa.com^ +||analytics.visible.com^ +||analytics.warnertv.fr^ +||analytics.weldonowen.com^ +||analytics.wellington.com^ +||analytics.wienerberger-building-solutions.com^ +||analytics.wienerberger.al^ +||analytics.wienerberger.at^ +||analytics.wienerberger.ba^ +||analytics.wienerberger.be^ +||analytics.wienerberger.bg^ +||analytics.wienerberger.co.uk^ +||analytics.wienerberger.com^ +||analytics.wienerberger.cz^ +||analytics.wienerberger.de^ +||analytics.wienerberger.ee^ +||analytics.wienerberger.fi^ +||analytics.wienerberger.fr^ +||analytics.wienerberger.hr^ +||analytics.wienerberger.hu^ +||analytics.wienerberger.in^ +||analytics.wienerberger.it^ +||analytics.wienerberger.lt^ +||analytics.wienerberger.mk^ +||analytics.wienerberger.nl^ +||analytics.wienerberger.no^ +||analytics.wienerberger.pl^ +||analytics.wienerberger.ro^ +||analytics.wienerberger.rs^ +||analytics.wienerberger.se^ +||analytics.wienerberger.si^ +||analytics.wienerberger.sk^ +||analytics.xoomenergy.com^ +||analytics.zagg.com^ +||analytics1.dillards.com^ +||analyticsbusiness.ing.ro^ +||analyticsnarc.ro.ing.net^ +||analyticsnossl.forcepoint.com^ +||analyticsresults.bildungsforum.datev.de^ +||analyticsresults.datev-karriereblog.de^ +||analyticsresults.datev-magazin.de^ +||analyticsresults.datev-mymarketing.de^ +||analyticsresults.datev.com^ +||analyticsresults.datev.de^ +||analyticsresults.dev.datev.de^ +||analyticsresults.trialog-magazin.de^ +||analyticsssl.forcepoint.com^ +||anl.footlocker.com^ +||anmet.originenergy.com.au^ +||ans.avast.com^ +||ans.avast.ru^ +||ans.milb.com^ +||ans.mlb.com^ +||ans.worldbaseballclassic.com^ +||ans.yesnetwork.com^ +||as.autobild.de^ +||as.axelspringer.com^ +||as.bild.de^ +||as.businessinsider.de^ +||as.bz-berlin.de^ +||as.computerbild.de^ +||as.fitbook.de^ +||as.metal-hammer.de^ +||as.musikexpress.de^ +||as.myhomebook.de^ +||as.petbook.de^ +||as.rollingstone.de^ +||as.stylebook.de^ +||as.techbook.de^ +||as.travelbook.de^ +||as.welt.de^ +||as.wieistmeineip.de^ +||asc.e-conolight.com^ +||asc.solidworks.com^ +||asd.bauhaus.at^ +||asd.bauhaus.es^ +||asd.bauhaus.hr^ +||asd.bauhaus.info^ +||asd.bauhaus.lu^ +||asd.nl.bauhaus^ +||assets2.aainsurance.co.nz^ +||assets2.aami.com.au^ +||assets2.apia.com.au^ +||assets2.bingle.com.au^ +||assets2.cilinsurance.com.au^ +||assets2.gio.com.au^ +||assets2.shannons.com.au^ +||assets2.suncorp.com.au^ +||assets2.suncorpbank.com.au^ +||assets2.terrischeer.com.au^ +||assets2.vanz.vero.co.nz^ +||assets2.vero.co.nz^ +||assinatura.marketingbmg.bancobmg.com.br^ +||at-cdn.swisscom.ch^ +||at-ecomm.levi.com^ +||at.db-finanzberatung.de^ +||at.deutsche-bank.de^ +||at.maxblue.de^ +||at.mclaren.com^ +||at.neom.com^ +||at.norisbank.de^ +||at.postbank.de^ +||at.swisscom.ch^ +||at.vodafone.de^ +||atarget.adelaide.edu.au^ +||atarget.csu.edu.au^ +||atarget.firstrepublic.com^ +||atarget.harley-davidson.com^ +||atgt.grafana.com^ +||atsmetrics.adobe.com^ +||audience.standardchartered.com.tw^ +||awap.equifax.com^ +||axp.8newsnow.com^ +||axp.abc27.com^ +||axp.abc4.com^ +||axp.bigcountryhomepage.com^ +||axp.binghamtonhomepage.com^ +||axp.borderreport.com^ +||axp.brproud.com^ +||axp.cbs17.com^ +||axp.cbs42.com^ +||axp.cbs4indy.com^ +||axp.cenlanow.com^ +||axp.centralillinoisproud.com^ +||axp.cnyhomepage.com^ +||axp.conchovalleyhomepage.com^ +||axp.counton2.com^ +||axp.cw33.com^ +||axp.cw39.com^ +||axp.cw7az.com^ +||axp.dcnewsnow.com^ +||axp.everythinglubbock.com^ +||axp.fourstateshomepage.com^ +||axp.fox16.com^ +||axp.fox21news.com^ +||axp.fox2now.com^ +||axp.fox40.com^ +||axp.fox44news.com^ +||axp.fox4kc.com^ +||axp.fox56news.com^ +||axp.fox59.com^ +||axp.fox5sandiego.com^ +||axp.fox8.com^ +||axp.informnny.com^ +||axp.kark.com^ +||axp.kdvr.com^ +||axp.keloland.com^ +||axp.ketk.com^ +||axp.kfor.com^ +||axp.kget.com^ +||axp.khon2.com^ +||axp.klfy.com^ +||axp.koin.com^ +||axp.kron4.com^ +||axp.krqe.com^ +||axp.ksn.com^ +||axp.ksnt.com^ +||axp.ktalnews.com^ +||axp.ktla.com^ +||axp.ktsm.com^ +||axp.kxan.com^ +||axp.kxnet.com^ +||axp.localsyr.com^ +||axp.myarklamiss.com^ +||axp.mychamplainvalley.com^ +||axp.myfox8.com^ +||axp.myhighplains.com^ +||axp.mypanhandle.com^ +||axp.mystateline.com^ +||axp.mysterywire.com^ +||axp.mytwintiers.com^ +||axp.mywabashvalley.com^ +||axp.nbc4i.com^ +||axp.news10.com^ +||axp.newsnationnow.com^ +||axp.nwahomepage.com^ +||axp.ourquadcities.com^ +||axp.ozarksfirst.com^ +||axp.pahomepage.com^ +||axp.phl17.com^ +||axp.pix11.com^ +||axp.qcnews.com^ +||axp.rochesterfirst.com^ +||axp.siouxlandproud.com^ +||axp.snntv.com^ +||axp.texomashomepage.com^ +||axp.thehill.com^ +||axp.tristatehomepage.com^ +||axp.upmatters.com^ +||axp.valleycentral.com^ +||axp.wane.com^ +||axp.wate.com^ +||axp.wavy.com^ +||axp.wboy.com^ +||axp.wbtw.com^ +||axp.wcia.com^ +||axp.wdhn.com^ +||axp.wdtn.com^ +||axp.wearegreenbay.com^ +||axp.westernslopenow.com^ +||axp.wfla.com^ +||axp.wfxrtv.com^ +||axp.wgno.com^ +||axp.wgnradio.com^ +||axp.wgntv.com^ +||axp.whnt.com^ +||axp.who13.com^ +||axp.wiproud.com^ +||axp.wivb.com^ +||axp.wjbf.com^ +||axp.wjhl.com^ +||axp.wjtv.com^ +||axp.wkbn.com^ +||axp.wkrg.com^ +||axp.wkrn.com^ +||axp.wlns.com^ +||axp.wnct.com^ +||axp.woodtv.com^ +||axp.wowktv.com^ +||axp.wpri.com^ +||axp.wrbl.com^ +||axp.wreg.com^ +||axp.wric.com^ +||axp.wsav.com^ +||axp.wspa.com^ +||axp.wtaj.com^ +||axp.wtnh.com^ +||axp.wtrf.com^ +||axp.wvnstv.com^ +||axp.wwlp.com^ +||axp.wytv.com^ +||axp.yourbasin.com^ +||axp.yourbigsky.com^ +||axp.yourcentralvalley.com^ +||axp.yourerie.com^ +||b.aecf.org^ +||b.allsecur.nl^ +||b.escardio.org^ +||b.fox.com^ +||b.foxsports.com^ +||b.freshpair.com^ +||b.fxnetworks.com^ +||b.koodomobile.com^ +||b.law.com^ +||b.m.mynewplace.com^ +||b.medtronic.com^ +||b.mibank.com^ +||b.miretirement.com^ +||b.mitrust.com^ +||b.miwebflex.com^ +||b.mynewplace.com^ +||b.parade.com^ +||b.publicmobile.ca^ +||b.redbrickhealth.com^ +||b.rohde-schwarz.com^ +||b.rwjf.org^ +||b.simonandschuster.com^ +||b.simyo.de^ +||b.snow.com^ +||b.socialdemokraterna.se^ +||b.telus.com^ +||b2binsider.adobe.com^ +||bank.svb.com^ +||bcomniture.focus.de^ +||beer2s.millerbrewing.com^ +||bismetrics.experian.com^ +||biz1.kddi.com^ +||blau-subdomain.b.information.blau.de^ +||bluelp.2ask.blue.com.hk^ +||brands.lookfantastic.com^ +||bsna.galeria-kaufhof.de^ +||bsna.inno.be^ +||c.mibank.com^ +||c.musicradio.com^ +||c.snow.com^ +||candy.sees.com^ +||catalogs.printplace.com^ +||caterpillarsigns.coversandall.ca^ +||caterpillarsigns.coversandall.co.uk^ +||caterpillarsigns.coversandall.com.au^ +||caterpillarsigns.coversandall.com^ +||caterpillarsigns.coversandall.eu^ +||ccpd.jet2.com^ +||ccpd.jet2holidays.com^ +||cctrkom.creditcards.com^ +||cdp.cifinancial.com^ +||cesario.bt.no^ +||cgwebmetrics.capgroup.com^ +||charms.pugster.com^ +||christian.lifeway.com^ +||christians.lifeway.com^ +||ci.intuit.ca^ +||ci.intuit.co.uk^ +||ci.intuit.com^ +||ci.quickbooks.com^ +||clerks.doccheck.com^ +||clnmetrics.cisco.com^ +||cmon.congress.gov^ +||cname-aa.022022.net^ +||cname-aa.engineersguide.jp^ +||cname-aa.hatarakunavi.net^ +||cname-aa.staffservice-engineering.jp^ +||cname-aa.staffservice-medical.jp^ +||cname-aa.staffservice.co.jp^ +||code.randomhouse.com^ +||collect.allianz-technology.ch^ +||collect.allianz.ch^ +||collect.cap.ch^ +||collect.elvia.ch^ +||collect.helsana-preprod.ch^ +||collect.helsana.ch^ +||collect.vans.com.cn^ +||collect2.allianz.ch^ +||collection.saga.co.uk^ +||collector.betway.be^ +||collector.betway.com^ +||collector.hippodromeonline.com^ +||connectstats.mckesson.com^ +||consent.clientemais.paodeacucar.com^ +||consent.online.paodeacucar.com^ +||contoso-my.sharepoint.com^ +||cookies-adobe.kbc.be^ +||cp.deltadentalwa.com^ +||cs.analytics.lego.com^ +||csmetrics.wilton.com^ +||csvt002.harrisbank.com^ +||csvt005.heretakethewheel.com^ +||csvt009.bmoharris.com^ +||csvti.intuit.ca^ +||csvtq.intuit.co.uk^ +||csvtr.bmo.com^ +||csvtr02.bmocorpmc.com^ +||csvtr05.mosaikbusiness.com^ +||csvtr07.bmoinvestorline.com^ +||csvtr09.bmonesbittburns.com^ +||csvtr10.bmocm.com^ +||csvtr13.bmodelawaretrust.com^ +||csvtt.bmolife.com^ +||csvtu.bmolending.com^ +||cups.republicoftea.com^ +||data-ssl.pnet.co.za^ +||data-ssl.stepstone.at^ +||data-ssl.stepstone.be^ +||data-ssl.stepstone.de^ +||data-ssl.stepstone.fr^ +||data-ssl.stepstone.nl^ +||data-ssl.stepstone.pl^ +||data.2ask.blue.com.hk^ +||data.a.news.aida.de^ +||data.abc.es^ +||data.accenturemkt.adobesandbox.com^ +||data.accentureplcmkt.adobesandbox.com^ +||data.accionista.caixabank.com^ +||data.account.assurancewireless.com^ +||data.account.metrobyt-mobile.com^ +||data.accounts.t-mobile.com^ +||data.accountsamericas.coca-cola.com^ +||data.accountsapac.coca-cola.com^ +||data.accountsemea.coca-cola.com^ +||data.accountslatam.coca-cola.com^ +||data.admin-updates.airmiles.ca^ +||data.aem-sites-internal.adobe.com^ +||data.ajo-demosystem4.adobedemosystem.com^ +||data.ajo2emea.adobevlab.com^ +||data.ajodev.cbussuper.com.au^ +||data.ajopharmabeta.riteaid.com^ +||data.ajostg.cfs.com.au^ +||data.ajostg.colonialfirststate.com.au^ +||data.ajotest.cbussuper.com.au^ +||data.alert.servicenow.com^ +||data.americas.coca-cola.com^ +||data.apac.coca-cola.com^ +||data.articles.ringcentral.com^ +||data.asp.coca-cola.com^ +||data.au-email.princess.com^ +||data.au-guest.princess.com^ +||data.autocasion.com^ +||data.automaticas.realmadrid.com^ +||data.avid.com^ +||data.b.information.blau.de^ +||data.b2bmail.adobe.com^ +||data.bioplanet.be^ +||data.bless.blesscollectionhotels.com^ +||data.boletin.super99.com^ +||data.business.nordea.dk^ +||data.business.nordea.fi^ +||data.business.nordea.no^ +||data.business.nordea.se^ +||data.campagneinformative.inail.it^ +||data.campaign.cfs.com.au^ +||data.campaigns.cbussuper.com.au^ +||data.campaigns.cineplex.com^ +||data.campaigns.colonialfirststate.com.au^ +||data.campaigns.mediasuper.com.au^ +||data.campaigns.therecroom.com^ +||data.canon.club-news.com.hk^ +||data.cart.metrobyt-mobile.com^ +||data.carts.t-mobile.com^ +||data.chelseafc.com^ +||data.client-comms.nedbank.co.za^ +||data.cliente.clubeextra.com.br^ +||data.clientemais.paodeacucar.com^ +||data.clientes.caixabankpc.com^ +||data.clientes.palladiumhotelgroup.com^ +||data.club.costacoffee.in^ +||data.club.costacoffee.pl^ +||data.collectandgo.be^ +||data.collishop.be^ +||data.colruyt.be^ +||data.colruytgroup.com^ +||data.comms.coca-cola.com^ +||data.comms.hestapartners.com.au^ +||data.comms.pokerstars.com^ +||data.comms.pokerstars.fr^ +||data.communicatie.nn.nl^ +||data.communication.guard.me^ +||data.communications.cbussuper.com.au^ +||data.communications.manulife.ca^ +||data.comunicaciones.bancoentrerios.net^ +||data.comunicaciones.bancosanjuan.net^ +||data.comunicaciones.bancosantacruz.net^ +||data.comunicaciones.bancosantafe.net^ +||data.comunicaciones.ficohsa.hn^ +||data.comunicaciones.jetstereo.com^ +||data.comunicaciones.motomundohn.com^ +||data.comunicaciones.solvenza.hn^ +||data.comunicaciones.ultramotorhn.com^ +||data.comunitat.3cat.cat^ +||data.connect.riolasvegas.com^ +||data.connect.riteaid.com^ +||data.connectingthreads.com^ +||data.craftsamericana.com^ +||data.crm-edm.thsrc.com.tw^ +||data.crm.lizearle.com^ +||data.crm.soapandglory.com^ +||data.cs.officedepot.com^ +||data.csdev.officedepot.com^ +||data.customer-success-apac.adobe.com^ +||data.customer.amp.com.au^ +||data.customermail.bioplanet.be^ +||data.customermail.collectandgo.be^ +||data.customermail.colruyt.be^ +||data.customermail.mijnextra.be^ +||data.customermail.mijnxtra.be^ +||data.customermail.sparcolruytgroup.be^ +||data.customermail.syst.colruytgroup.com^ +||data.customermail.test.colruytgroup.com^ +||data.cx.hrhibiza.com^ +||data.cx.palladiumhotelgroup.com^ +||data.cx.theushuaiaexperience.com^ +||data.cxbevents.caixabank.com^ +||data.dats24.be^ +||data.deinfeedback.alditalk-kundenbetreuung.de^ +||data.descubre.interbank.pe^ +||data.dev-ajo.caixabank.com^ +||data.dev-notifications.future.smart.com^ +||data.devbmg.bancobmg.com.br^ +||data.devmail.northeast.aaa.com^ +||data.digital.costco.ca^ +||data.digital.costco.com^ +||data.discover.ringcentral.com^ +||data.dm.casio.com^ +||data.dm.casio.info^ +||data.dow.com^ +||data.dreambaby.be^ +||data.dreamland.be^ +||data.e.adobe.com^ +||data.e.lotteryoffice.com.au^ +||data.e.ringcentral.com^ +||data.e.visionmondiale.ca^ +||data.e.worldvision.ca^ +||data.ear.nespresso.com^ +||data.eat.nespresso.com^ +||data.eau.nespresso.com^ +||data.ebe.nespresso.com^ +||data.ebr.nespresso.com^ +||data.eca.nespresso.com^ +||data.ech.nespresso.com^ +||data.ecl.nespresso.com^ +||data.eco.nespresso.com^ +||data.ecz.nespresso.com^ +||data.ede.nespresso.com^ +||data.edge-cert.emailtechops.net^ +||data.edk.nespresso.com^ +||data.edm.chowtaifook.com^ +||data.education.aware.com.au^ +||data.ees.nespresso.com^ +||data.efr.nespresso.com^ +||data.egr.nespresso.com^ +||data.ehk.nespresso.com^ +||data.ehu.nespresso.com^ +||data.eit.nespresso.com^ +||data.ejp.nespresso.com^ +||data.ekr.nespresso.com^ +||data.elu.nespresso.com^ +||data.em.assurancewireless.com^ +||data.em.macys.com^ +||data.em.officedepot.com^ +||data.em.ringcentral.com^ +||data.em.t-mobile.com^ +||data.em.viking.com^ +||data.em.vikingcruises.com^ +||data.em2.cloudflare.com^ +||data.email-discovery.cjm.adobe.com^ +||data.email-disney.cjm.adobe.com^ +||data.email-kpn.cjm.adobe.com^ +||data.email-lightroom.cjm.adobe.com^ +||data.email-merkle.cjm.adobe.com^ +||data.email-mobiledx.cjm.adobe.com^ +||data.email-signify.cjm.adobe.com^ +||data.email-tsb.cjm.adobe.com^ +||data.email.aida.de^ +||data.email.belgiantrain.be^ +||data.email.gamma.be^ +||data.email.gamma.nl^ +||data.email.gobrightline.com^ +||data.email.hostplus.com.au^ +||data.email.islandsbanki.is^ +||data.email.jet2.com^ +||data.email.jet2holidays.com^ +||data.email.karwei.nl^ +||data.email.key.com^ +||data.email.metrobyt-mobile.com^ +||data.email.podcast.adobe.com^ +||data.email.princess.com^ +||data.email.q8.it^ +||data.email.realmadrid.com^ +||data.email.telmore.dk^ +||data.email.verizon.com^ +||data.email.virginatlantic.com^ +||data.email.yourmessage.aviva.co.uk^ +||data.email.yousee.dk^ +||data.emaillpb.adobe.com^ +||data.emails.aucklandairport.co.nz^ +||data.emails.caixabank.com^ +||data.emails.makro.es^ +||data.emails.makro.nl^ +||data.emails.metro.it^ +||data.emails.metro.ro^ +||data.emails.ringcentral.com^ +||data.emails.vidacaixa.es^ +||data.emailservice.vattenfall.nl^ +||data.emdev.officedepot.com^ +||data.emea.coca-cola.com^ +||data.eml.wegmans.com^ +||data.employercomms.aware.com.au^ +||data.emx.nespresso.com^ +||data.emy.nespresso.com^ +||data.enl.nespresso.com^ +||data.eno.nespresso.com^ +||data.enz.nespresso.com^ +||data.epl.nespresso.com^ +||data.epost.sbanken.no^ +||data.epost.snn.no^ +||data.epsilon.adobesandbox.com^ +||data.ept.nespresso.com^ +||data.erfahrung.o2.de^ +||data.ero.nespresso.com^ +||data.ese.nespresso.com^ +||data.esg.nespresso.com^ +||data.esk.nespresso.com^ +||data.eth.nespresso.com^ +||data.etr.nespresso.com^ +||data.etw.nespresso.com^ +||data.euk.nespresso.com^ +||data.europe.coca-cola.com^ +||data.events.cbussuper.com.au^ +||data.events.pokerstars.dk^ +||data.fans.alexalbon.com^ +||data.fans.realmadrid.com^ +||data.fans.williamsf1.com^ +||data.fundacion.realmadrid.org^ +||data.gc.qantas.com.au^ +||data.giftcards.dev.cjmadobe.com^ +||data.go.bartelldrugs.com^ +||data.grandpalladium.palladiumhotelgroup.com^ +||data.guest.princess.com^ +||data.hardrock.palladiumhotelgroup.com^ +||data.hello.consumercellular.com^ +||data.hk-email.princess.com^ +||data.hk-guest.princess.com^ +||data.hoteles.palladiumhotelgroup.com^ +||data.i.lotteryoffice.com.au^ +||data.i.mysticlake.com^ +||data.ibmnorthamerica.adobesandbox.com^ +||data.info.avianca.com^ +||data.info.aware.com.au^ +||data.info.consumercellular.com^ +||data.info.credit-suisse.com^ +||data.info.ficohsa.com.gt^ +||data.info.ficohsa.com.pa^ +||data.info.gobrightline.com^ +||data.info.jetstereo.com^ +||data.info.lumxpert.signify.com^ +||data.info.metro.fr^ +||data.info.motomundohn.com^ +||data.info.nordea.dk^ +||data.info.nordea.fi^ +||data.info.nordea.no^ +||data.info.nordea.se^ +||data.info.qb.intuit.com^ +||data.info.smart.com^ +||data.info.solvenza.hn^ +||data.info.ultramotorhn.com^ +||data.info.viking.com^ +||data.infobmg.bancobmg.com.br^ +||data.information.ayyildiz.de^ +||data.information.fonic.de^ +||data.information.o2.de^ +||data.information.telefonica.de^ +||data.information.whatsappsim.de^ +||data.inst.socios.realmadrid.com^ +||data.inswa.coca-cola.com^ +||data.investing.questrade.com^ +||data.jp-email.princess.com^ +||data.jp-guest.princess.com^ +||data.keybank.dev.cjmadobe.com^ +||data.latinamerica.coca-cola.com^ +||data.lavozdigital.es^ +||data.lifesize.com^ +||data.loyalty.timhortons.ca^ +||data.lp.eurobet.it^ +||data.m.metro-tr.com^ +||data.m.mysticlake.com^ +||data.m.philadelphiaeagles.com^ +||data.ma1.techvaladobe.com^ +||data.madridista-free.realmadrid.com^ +||data.madridista-premium.realmadrid.com^ +||data.magmail.northeast.aaa.com^ +||data.mail.callme.dk^ +||data.mail.metro.de^ +||data.mail.nn.nl^ +||data.mail.telia.dk^ +||data.mailing.kpn.com^ +||data.mailing.mcafee.com^ +||data.mailing.repsol.com^ +||data.mailtest.lexmei.online^ +||data.markadsmal.islandsbanki.is^ +||data.marketing-madridista-junior.realmadrid.com^ +||data.marketing-offers.airmiles.ca^ +||data.marketing.aeptest.a.intuit.com^ +||data.marketing.bancobmg.com.br^ +||data.marketing.boradetop.com.br^ +||data.marketing.doitbest.com^ +||data.marketing.ecg.magento.com^ +||data.marketing.giftcards.com^ +||data.marketing.onemarketinguxp.com^ +||data.marketing.perficientdemo.com^ +||data.marketing.smart.com^ +||data.marketing.stark.dk^ +||data.marketing.super99.com^ +||data.marketing.williamsf1.com^ +||data.marketingbmg.bancobmg.com.br^ +||data.member.aware.com.au^ +||data.member.unitedhealthcare.com^ +||data.membership.chowtaifook.com^ +||data.message.aircanada.com^ +||data.mkt.qb.intuit.com^ +||data.mktg.nfl.com^ +||data.mmail.northeast.aaa.com^ +||data.msg.wegmans.com^ +||data.msgs.westpac.com.au^ +||data.myhealth.riteaid.com^ +||data.nedbanktest.dev.cjmadobe.com^ +||data.news.airmiles.ca^ +||data.news.blesscollectionhotels.com^ +||data.news.eurobet.it^ +||data.news.lumxpert.signify.com^ +||data.news.palladiumhotelgroup.com^ +||data.news.paypal.com^ +||data.news.riyadhair.com^ +||data.news.wizconnected.com^ +||data.newsletter.avianca.com^ +||data.newsletter.italia.it^ +||data.newsletter.seasmiles.com^ +||data.noreply.timhortons.ca^ +||data.noreply.timsfinancial.ca^ +||data.northeast.aaa.com^ +||data.notice.assurancewireless.com^ +||data.notice.metrobyt-mobile.com^ +||data.notice.t-mobile.com^ +||data.notificaciones.ficohsa.com^ +||data.notification.giftcards.com^ +||data.notification.servicenow.com^ +||data.notifications.mylighting.signify.com^ +||data.notifications.portal.cooperlighting.com^ +||data.notifications.portal.signify.com^ +||data.notifications.riolasvegas.com^ +||data.okay.be^ +||data.online.clubeextra.com.br^ +||data.online.paodeacucar.com^ +||data.onlyyou.palladiumhotelgroup.com^ +||data.orders.costco.com^ +||data.outbound.luxair.lu^ +||data.page.worldvision.ca^ +||data.partner-offers.airmiles.ca^ +||data.partner-updates.airmiles.ca^ +||data.pharmacyservices.riteaid.com^ +||data.phg.palladiumhotelgroup.com^ +||data.pisos.com^ +||data.pnet.co.za^ +||data.prewards.palladiumhotelgroup.com^ +||data.promo.timhortons.ca^ +||data.promo.timhortons.com^ +||data.promos.timsfinancial.ca^ +||data.promotions.riolasvegas.com^ +||data.publicis-sapient-global-aep.publicissapient.com^ +||data.purchase.riteaid.com^ +||data.qaegift.giftcards.com^ +||data.qamailing.mcafee.com^ +||data.qamarketing.giftcards.com^ +||data.resources.ringcentral.com^ +||data.rewards.riteaid.com^ +||data.rmsocio.realmadrid.com^ +||data.securemetrics-apple.com^ +||data.service.aware.com.au^ +||data.service.cfs.com.au^ +||data.service.colonialfirststate.com.au^ +||data.service.manulife.ca^ +||data.service.miumiu.com^ +||data.service.paypal.com^ +||data.service.prada.com^ +||data.service.wizconnected.com^ +||data.services.telia.dk^ +||data.servicing.key.com^ +||data.sg-email.princess.com^ +||data.sg-guest.princess.com^ +||data.shop.williamsf1.com^ +||data.sm.princess.com^ +||data.smartinfo.future.smart.com^ +||data.smartmkt.future.smart.com^ +||data.smspromo.consumercellular.com^ +||data.socio.realmadrid.net^ +||data.stage-mail.fpl.com^ +||data.stage-message.aircanada.com^ +||data.stage-notifications.future.smart.com^ +||data.stageegift.giftcards.com^ +||data.stagemailing.mcafee.com^ +||data.stagemarketing.giftcards.com^ +||data.stageno.reply.fpl.com^ +||data.stepstone.be^ +||data.stepstone.de^ +||data.stepstone.nl^ +||data.surveys.aware.com.au^ +||data.t.epost.dnb.no^ +||data.t.worldvision.ca^ +||data.tc.jetstar.com^ +||data.thepointsguy.com^ +||data.tmail.northeast.aaa.com^ +||data.transaction.giftcards.com^ +||data.transactional.williamsf1.com^ +||data.trn.qb.intuit.com^ +||data.trx.costco.ca^ +||data.trx.costco.com^ +||data.tw-email.princess.com^ +||data.tw-guest.princess.com^ +||data.txn.puntoscolombia.com^ +||data.uk-email.princess.com^ +||data.uk-guest.princess.com^ +||data.umfrage.aetkasmart.de^ +||data.umfrage.ayyildiz.de^ +||data.umfrage.blau.de^ +||data.umfrage.nettokom.de^ +||data.umfrage.whatsappsim.de^ +||data.vinsolutions.com^ +||data.voyager.dev.cjmadobe.com^ +||data.web.doitbest.com^ +||data.welcome.realmadrid.com^ +||data.wunderman-email.cjm.adobe.com^ +||data.yashir.5555555.co.il^ +||data.yashir.9mil.co.il^ +||data.your.hesta.com.au^ +||data.your.hestaformercy.com.au^ +||data0.bell.ca^ +||data0.sympatico.ca^ +||data0.virginmobile.ca^ +||data1.bell.ca^ +||data1.sparkasse.at^ +||data1.virginmobile.ca^ +||data1.virginplus.ca^ +||datas.connectingthreads.com^ +||datas.knitpicks.com^ +||dc.audi.com^ +||dc.kfz-steuercheck.de^ +||dc.luzygas.ahorraconrepsol.com^ +||dc.madridistas.com^ +||dc.realmadrid.com^ +||dc.realmadridnext.com^ +||dc.reiseversicherung.de^ +||dc.repsol.com^ +||dc.repsol.es^ +||dc.stenaline.co.uk^ +||dc.stenaline.com^ +||dc.stenaline.cz^ +||dc.stenaline.de^ +||dc.stenaline.dk^ +||dc.stenaline.ee^ +||dc.stenaline.es^ +||dc.stenaline.fi^ +||dc.stenaline.fr^ +||dc.stenaline.ie^ +||dc.stenaline.it^ +||dc.stenaline.lt^ +||dc.stenaline.lv^ +||dc.stenaline.nl^ +||dc.stenaline.no^ +||dc.stenaline.pl^ +||dc.stenaline.ru^ +||dc.stenaline.se^ +||dc.stenalinetravel.com^ +||dc.tuenergia.repsol.com^ +||dc.waylet.es^ +||dc2.credit-suisse.com^ +||dcs.audi.com^ +||dcs.esprit.at^ +||dcs.esprit.au^ +||dcs.esprit.be^ +||dcs.esprit.co.uk^ +||dcs.esprit.com^ +||dcs.esprit.cz^ +||dcs.esprit.de^ +||dcs.esprit.dk^ +||dcs.esprit.es^ +||dcs.esprit.eu^ +||dcs.esprit.fi^ +||dcs.esprit.fr^ +||dcs.esprit.hk^ +||dcs.esprit.kr^ +||dcs.esprit.nl^ +||dcs.esprit.ph^ +||dcs.esprit.se^ +||dcs.esprit.sg^ +||dcs.esprit.tw^ +||dcs.esprit.us^ +||dcs.espritshop.ch^ +||dcs.espritshop.it^ +||dcs.espritshop.pl^ +||dcs.plussizetech.com^ +||dcs.reiseversicherung.de^ +||delivery.lululemon.com^ +||demo.emaillpb.adobe.com^ +||desuscripcion.phg.palladiumhotelgroup.com^ +||dev.email-signify.cjm.adobe.com^ +||di2.zooplus.es^ +||digistat.westjet.com^ +||digistats.westjet.com^ +||dii1.bitiba.be^ +||dii1.bitiba.cz^ +||dii1.bitiba.de^ +||dii1.bitiba.dk^ +||dii1.bitiba.fi^ +||dii1.bitiba.fr^ +||dii1.bitiba.it^ +||dii1.bitiba.pl^ +||dii1.zoochic-eu.ru^ +||dii1.zoohit.cz^ +||dii1.zoohit.si^ +||dii1.zoohit.sk^ +||dii1.zooplus.at^ +||dii1.zooplus.be^ +||dii1.zooplus.bg^ +||dii1.zooplus.ch^ +||dii1.zooplus.co.uk^ +||dii1.zooplus.com^ +||dii1.zooplus.de^ +||dii1.zooplus.dk^ +||dii1.zooplus.fi^ +||dii1.zooplus.fr^ +||dii1.zooplus.gr^ +||dii1.zooplus.hr^ +||dii1.zooplus.hu^ +||dii1.zooplus.ie^ +||dii1.zooplus.it^ +||dii1.zooplus.nl^ +||dii1.zooplus.no^ +||dii1.zooplus.pl^ +||dii1.zooplus.pt^ +||dii1.zooplus.ro^ +||dii1.zooplus.se^ +||dii2.bitiba.be^ +||dii2.bitiba.ch^ +||dii2.bitiba.co.uk^ +||dii2.bitiba.cz^ +||dii2.bitiba.de^ +||dii2.bitiba.dk^ +||dii2.bitiba.es^ +||dii2.bitiba.fi^ +||dii2.bitiba.fr^ +||dii2.bitiba.it^ +||dii2.bitiba.nl^ +||dii2.bitiba.pl^ +||dii2.bitiba.se^ +||dii2.shpd.ext.zooplus.io^ +||dii2.shpp.ext.zooplus.io^ +||dii2.zoobee.de^ +||dii2.zoochic-eu.ru^ +||dii2.zoohit.cz^ +||dii2.zoohit.si^ +||dii2.zoohit.sk^ +||dii2.zooplus.at^ +||dii2.zooplus.be^ +||dii2.zooplus.bg^ +||dii2.zooplus.ch^ +||dii2.zooplus.co.uk^ +||dii2.zooplus.com^ +||dii2.zooplus.de^ +||dii2.zooplus.dk^ +||dii2.zooplus.es^ +||dii2.zooplus.fi^ +||dii2.zooplus.fr^ +||dii2.zooplus.gr^ +||dii2.zooplus.hr^ +||dii2.zooplus.hu^ +||dii2.zooplus.ie^ +||dii2.zooplus.it^ +||dii2.zooplus.nl^ +||dii2.zooplus.no^ +||dii2.zooplus.pl^ +||dii2.zooplus.pt^ +||dii2.zooplus.ro^ +||dii2.zooplus.se^ +||dii3.bitiba.be^ +||dii3.bitiba.ch^ +||dii3.bitiba.co.uk^ +||dii3.bitiba.cz^ +||dii3.bitiba.de^ +||dii3.bitiba.dk^ +||dii3.bitiba.es^ +||dii3.bitiba.fi^ +||dii3.bitiba.fr^ +||dii3.bitiba.it^ +||dii3.bitiba.nl^ +||dii3.bitiba.pl^ +||dii3.bitiba.se^ +||dii3.zoochic-eu.ru^ +||dii3.zoohit.cz^ +||dii3.zoohit.si^ +||dii3.zoohit.sk^ +||dii3.zooplus.at^ +||dii3.zooplus.be^ +||dii3.zooplus.bg^ +||dii3.zooplus.ch^ +||dii3.zooplus.co.uk^ +||dii3.zooplus.com^ +||dii3.zooplus.de^ +||dii3.zooplus.dk^ +||dii3.zooplus.es^ +||dii3.zooplus.fi^ +||dii3.zooplus.fr^ +||dii3.zooplus.gr^ +||dii3.zooplus.hr^ +||dii3.zooplus.hu^ +||dii3.zooplus.ie^ +||dii3.zooplus.it^ +||dii3.zooplus.nl^ +||dii3.zooplus.no^ +||dii3.zooplus.pl^ +||dii3.zooplus.pt^ +||dii3.zooplus.ro^ +||dii3.zooplus.se^ +||dii4.bitiba.be^ +||dii4.bitiba.ch^ +||dii4.bitiba.co.uk^ +||dii4.bitiba.cz^ +||dii4.bitiba.de^ +||dii4.bitiba.dk^ +||dii4.bitiba.es^ +||dii4.bitiba.fi^ +||dii4.bitiba.fr^ +||dii4.bitiba.it^ +||dii4.bitiba.nl^ +||dii4.bitiba.pl^ +||dii4.bitiba.se^ +||dii4.zoochic-eu.ru^ +||dii4.zoohit.cz^ +||dii4.zoohit.si^ +||dii4.zoohit.sk^ +||dii4.zooplus.at^ +||dii4.zooplus.be^ +||dii4.zooplus.bg^ +||dii4.zooplus.ch^ +||dii4.zooplus.co.uk^ +||dii4.zooplus.com^ +||dii4.zooplus.de^ +||dii4.zooplus.dk^ +||dii4.zooplus.es^ +||dii4.zooplus.fi^ +||dii4.zooplus.fr^ +||dii4.zooplus.gr^ +||dii4.zooplus.hr^ +||dii4.zooplus.hu^ +||dii4.zooplus.ie^ +||dii4.zooplus.it^ +||dii4.zooplus.nl^ +||dii4.zooplus.no^ +||dii4.zooplus.pl^ +||dii4.zooplus.pt^ +||dii4.zooplus.ro^ +||dii4.zooplus.se^ +||dm-target.fishersci.com^ +||dm-target.thermofisher.com^ +||dplp1.ibmnorthamerica.adobesandbox.com^ +||dtmssl.bobcat.com^ +||dxaop.bcbsla.com^ +||dxop.bcbsla.com^ +||ecn-analytics-nssl.emc.com^ +||ecn-analytics.emc.com^ +||ecu.hagerty.com^ +||edge.afco.com^ +||edge.bell.ca^ +||edge.bigbrothercanada.ca^ +||edge.bridgetrusttitle.com^ +||edge.cafo.com^ +||edge.foodnetwork.ca^ +||edge.globaltv.com^ +||edge.grandbridge.com^ +||edge.hgtv.ca^ +||edge.historiatv.ca^ +||edge.history.ca^ +||edge.mcgriff.com^ +||edge.regionalacceptance.com^ +||edge.seriesplus.com^ +||edge.sheffieldfinancial.com^ +||edge.stacktv.ca^ +||edge.sterlingcapital.com^ +||edge.teletoonplus.ca^ +||edge.treehousetv.com^ +||edge.truist.com^ +||edge.truistmomentum.com^ +||edge.truistsecurities.com^ +||edge.wnetwork.com^ +||edgedc.falabella.com^ +||electronics.sony-latin.com^ +||em.em.officedepot.com^ +||emetrics.bose.ca^ +||emetrics.bose.com^ +||erutinmos.snagajob.com^ +||experience.acs.org.au^ +||experience.amp.co.nz^ +||experience.asb.co.nz^ +||experience.deceuninck.be^ +||experience.fbbrands.com^ +||experiences.cibc.com^ +||experiences.simplii.com^ +||fipsta.ravensberger-matratzen.de^ +||fipsta.urbanara.at^ +||fipsta.urbanara.co.uk^ +||fipsta.worldfitness.de^ +||firstparty.alloyio.com^ +||flashplayerfeedback.adobe.com^ +||forbes.realclearpolitics.com^ +||form.e.silverfernfarms.com^ +||fpc.changehealthcare.com^ +||fpc.firemountaingems.com^ +||fpcs.firemountaingems.com^ +||fpida.amphi.jp^ +||fpida.bodybook.jp^ +||fpida.cw-x.jp^ +||fpida.lingenoel.co.jp^ +||fpida.successwalk.jp^ +||fpida.une-nana-cool.com^ +||fpida.w-wing.jp^ +||fpida.wacoal.co.jp^ +||fpida.wacoalholdings.jp^ +||fpida.yue-japan.com^ +||fpssl-monitor-dal.omniture.com^ +||furnishings.bellacor.com^ +||gms.greatschools.org^ +||go2.ringcentral.com^ +||gw-analytics.panasonic.com^ +||hits.guardian.co.uk^ +||home.usg.com^ +||hqmetrics.sony.com^ +||hub.firestonecompleteautocare.com^ +||hubmetric.samsclub.com^ +||hubmetrics.samsclub.com^ +||i.americanblinds.com^ +||i.blinds.ca^ +||i.paypal.com^ +||icas.ikea.com^ +||icas.ikea.net^ +||ig.ig.com^ +||ig.igmarkets.com^ +||ig.nadex.com^ +||ik8uf01fm7neloo9.edge41.testandtarget.omniture.com^ +||img.biospace.com^ +||img.bwin.be^ +||img.bwin.com.mx^ +||img.bwin.com^ +||img.bwin.es^ +||img.bwin.it^ +||img.gamebookers.com^ +||img.healthecareers.com^ +||img.interhome.ch^ +||img.interhome.com^ +||img.interhome.se^ +||img.simply.bwin.com^ +||img.yemeksepeti.com^ +||incs.get-go.com^ +||incs.marketdistrict.com^ +||info.afl.com.au^ +||info.americas.coca-cola.com^ +||info.apac.coca-cola.com^ +||info.comms.coca-cola.com^ +||info.emea.coca-cola.com^ +||info.inswa.coca-cola.com^ +||info.latinamerica.coca-cola.com^ +||info.m.seek.co.nz^ +||info.m.seek.com.au^ +||info.penrithpanthers.com.au^ +||info.seaeagles.com.au^ +||info.seek.com^ +||info.sensis.com.au^ +||info.telstra.com.au^ +||info.telstra.com^ +||info.truelocal.com.au^ +||info.weststigers.com.au^ +||info.whitepages.com.au^ +||informatie.communicatie.nn.nl^ +||informatie.mail.nn.nl^ +||infos.anz-originator.com.au^ +||infos.anz.com.au^ +||infos.anz.com^ +||infos.anzmortgagesolutions.com.au^ +||infos.anzsmartchoice.com.au^ +||infos.b2dreamlab.com^ +||infos.belong.com.au^ +||infos.telstra.com.au^ +||infos.telstra.com^ +||infos.vodafone.com.au^ +||infos.whereis.com^ +||infos.whitepages.com.au^ +||infos.yellow.com.au^ +||insights.academy.com^ +||insights.bodogaffiliate.com^ +||insights.morrismohawk.ca^ +||insights.zinio.com^ +||iqmetrics.11freunde.de^ +||iqmetrics.ariva.de^ +||iqmetrics.btc-echo.de^ +||iqmetrics.cicero.de^ +||iqmetrics.del-2.org^ +||iqmetrics.dus.com^ +||iqmetrics.faz.net^ +||iqmetrics.forschung-und-wissen.de^ +||iqmetrics.freitag.de^ +||iqmetrics.hamburg-airport.de^ +||iqmetrics.handelsblatt.com^ +||iqmetrics.manager-magazin.de^ +||iqmetrics.marktundmittelstand.de^ +||iqmetrics.monopol-magazin.de^ +||iqmetrics.scinexx.de^ +||iqmetrics.spektrum.de^ +||iqmetrics.spiegel.de^ +||iqmetrics.sueddeutsche.de^ +||iqmetrics.tagesspiegel.de^ +||iqmetrics.wissen.de^ +||iqmetrics.wissenschaft.de^ +||iqmetrics.wiwo.de^ +||iqmetrics.zeit.de^ +||jinair.nsc.jinair.com^ +||jinair.sc.jinair.com^ +||journeys.journeyed.com^ +||jpaatr.astellas.jp^ +||jptgtr.astellas.jp^ +||kohlermetrics.kohler.com^ +||kohlermetricssecure.kohler.com^ +||l.dev-ajo.caixabank.com^ +||l.dm.casio.info^ +||l.training-page.worldvision.ca^ +||landing.lp.eurobet.it^ +||landing.madridista-free.realmadrid.com^ +||landingpage.emaillpb.adobe.com^ +||lewis.gct.com^ +||live.comunicaciones.jetstereo.com^ +||lp.b2bmail.adobe.com^ +||lp.club.costacoffee.in^ +||lp.club.costacoffee.pl^ +||lp.communications.manulife.ca^ +||lp.demo1.demoamericas275.adobe.com^ +||lp.demo10.demoamericas275.adobe.com^ +||lp.demo11.demoamericas275.adobe.com^ +||lp.demo12.demoamericas275.adobe.com^ +||lp.demo13.demoamericas275.adobe.com^ +||lp.demo14.demoamericas275.adobe.com^ +||lp.demo15.demoamericas275.adobe.com^ +||lp.demo16.demoamericas275.adobe.com^ +||lp.demo17.demoamericas275.adobe.com^ +||lp.demo18.demoamericas275.adobe.com^ +||lp.demo19.demoamericas275.adobe.com^ +||lp.demo2.demoamericas275.adobe.com^ +||lp.demo20.demoamericas275.adobe.com^ +||lp.demo3.demoamericas275.adobe.com^ +||lp.demo4.demoamericas275.adobe.com^ +||lp.demo5.demoamericas275.adobe.com^ +||lp.demo6.demoamericas275.adobe.com^ +||lp.demo7.demoamericas275.adobe.com^ +||lp.demo8.demoamericas275.adobe.com^ +||lp.demo9.demoamericas275.adobe.com^ +||lp.dmillersb.journeyusshared.adobe.com^ +||lp.dmillersbdev.journeyusshared.adobe.com^ +||lp.em.viking.com^ +||lp.email-kpn.cjm.adobe.com^ +||lp.email-lightroom.cjm.adobe.com^ +||lp.email-merkle.cjm.adobe.com^ +||lp.hol1.demoamericas275.adobe.com^ +||lp.hol10.demoamericas275.adobe.com^ +||lp.hol11.demoamericas275.adobe.com^ +||lp.hol12.demoamericas275.adobe.com^ +||lp.hol13.demoamericas275.adobe.com^ +||lp.hol14.demoamericas275.adobe.com^ +||lp.hol15.demoamericas275.adobe.com^ +||lp.hol16.demoamericas275.adobe.com^ +||lp.hol17.demoamericas275.adobe.com^ +||lp.hol18.demoamericas275.adobe.com^ +||lp.hol19.demoamericas275.adobe.com^ +||lp.hol2.demoamericas275.adobe.com^ +||lp.hol20.demoamericas275.adobe.com^ +||lp.hol4.demoamericas275.adobe.com^ +||lp.hol5.demoamericas275.adobe.com^ +||lp.hol6.demoamericas275.adobe.com^ +||lp.hol7.demoamericas275.adobe.com^ +||lp.hol8.demoamericas275.adobe.com^ +||lp.jkowalskisb.journeyusshared.adobe.com^ +||lp.jkowalskisbdev.journeyusshared.adobe.com^ +||lp.kkaufmansb.journeyusshared.adobe.com^ +||lp.owarnersb.journeyusshared.adobe.com^ +||lp.owarnersbdev.journeyusshared.adobe.com^ +||lptest.email-mobiledx.cjm.adobe.com^ +||m.communications.ihmvcu.org^ +||m.delltechnologies.com^ +||m.edweek.org^ +||m.olympia.it^ +||m.sm.princess.com^ +||m.topschooljobs.org^ +||m.trb.com^ +||m.univision.com^ +||maling.dn.no^ +||marketing.news.riyadhair.com^ +||matrix.hbo.com^ +||matrix.itshboanytime.com^ +||mbox.wegmans.com^ +||mbox12.offermatica.com^ +||mbox4.offermatica.com^ +||mbox5.offermatica.com^ +||mbox9.offermatica.com^ +||mbox9e.offermatica.com^ +||mcdmetric.aaa.com^ +||mcdmetrics.aaa.com^ +||mcdmetrics2.aaa.com^ +||mdws.1stchoicesavings.ca^ +||mdws.advancesavings.ca^ +||mdws.aldergrovecu.ca^ +||mdws.assiniboine.mb.ca^ +||mdws.banquelaurentienne.ca^ +||mdws.battlerivercreditunion.com^ +||mdws.beaubear.ca^ +||mdws.belgianalliancecu.mb.ca^ +||mdws.bergengrencu.com^ +||mdws.biggarcu.com^ +||mdws.bowvalleycu.com^ +||mdws.caissepopclare.com^ +||mdws.caseracu.ca^ +||mdws.cccu.ca^ +||mdws.ccunl.ca^ +||mdws.cdcu.com^ +||mdws.chinookcu.com^ +||mdws.chinookfinancial.com^ +||mdws.coastalfinancial.ca^ +||mdws.communitycreditunion.ns.ca^ +||mdws.communityfirst-cu.com^ +||mdws.communitytrust.ca^ +||mdws.consolidatedcreditu.com^ +||mdws.copperfin.ca^ +||mdws.cornerstonecu.com^ +||mdws.cua.com^ +||mdws.cvcu.bc.ca^ +||mdws.cwbank.com^ +||mdws.diamondnorthcu.com^ +||mdws.eaglerivercu.com^ +||mdws.eastcoastcu.ca^ +||mdws.easternedgecu.com^ +||mdws.eccu.ca^ +||mdws.ekccu.com^ +||mdws.encompasscu.ca^ +||mdws.enderbycreditunion.com^ +||mdws.envisionfinancial.ca^ +||mdws.estoniancu.com^ +||mdws.firstcu.ca^ +||mdws.firstontariocu.com^ +||mdws.fnbc.ca^ +||mdws.frontlinecu.com^ +||mdws.ganaraskacu.com^ +||mdws.gvccu.com^ +||mdws.hmecu.com^ +||mdws.icsavings.ca^ +||mdws.innovationcu.ca^ +||mdws.inovacreditunion.coop^ +||mdws.integriscu.ca^ +||mdws.interiorsavings.com^ +||mdws.islandsavings.ca^ +||mdws.kawarthacu.com^ +||mdws.lakelandcreditunion.com^ +||mdws.ldcu.ca^ +||mdws.lecu.ca^ +||mdws.leroycu.ca^ +||mdws.luminusfinancial.com^ +||mdws.minnedosacu.mb.ca^ +||mdws.montaguecreditu.com^ +||mdws.morellcreditu.com^ +||mdws.mvcu.ca^ +||mdws.nelsoncu.com^ +||mdws.newrosscreditunion.ca^ +||mdws.nivervillecu.mb.ca^ +||mdws.nlcu.com^ +||mdws.northerncu.com^ +||mdws.northsave.com^ +||mdws.northsydneycreditunion.com^ +||mdws.noventis.ca^ +||mdws.npscu.ca^ +||mdws.omista.com^ +||mdws.pccu.ca^ +||mdws.peacehills.com^ +||mdws.penfinancial.com^ +||mdws.portagecu.mb.ca^ +||mdws.prospera.ca^ +||mdws.provincialcu.com^ +||mdws.provincialemployees.com^ +||mdws.pscu.ca^ +||mdws.revcu.com^ +||mdws.rpcul.com^ +||mdws.samplecu.com^ +||mdws.sdcu.com^ +||mdws.shellcu.com^ +||mdws.southwestcu.com^ +||mdws.stridecu.ca^ +||mdws.sudburycu.com^ +||mdws.sunrisecu.mb.ca^ +||mdws.sunshineccu.com^ +||mdws.sydneycreditunion.com^ +||mdws.tandia.com^ +||mdws.tcufinancialgroup.com^ +||mdws.teachersplus.ca^ +||mdws.tignishcreditu.com^ +||mdws.ubcu.ca^ +||mdws.ukrainiancu.com^ +||mdws.unitycu.ca^ +||mdws.valleycreditunion.com^ +||mdws.valleyfirst.com^ +||mdws.vancity.com^ +||mdws.vantageone.net^ +||mdws.venturecu.ca^ +||mdws.vermilioncreditunion.com^ +||mdws.victorycreditunion.ca^ +||mdws.visioncu.ca^ +||mdws.wetaskiwincreditunion.com^ +||mdws.weyburncu.ca^ +||mdws.wfcu.ca^ +||mdws.wldcu.com^ +||mdws.wpcu.ca^ +||mdws.wscu.com^ +||mdws.yourcu.com^ +||med.androderm.com^ +||med.aptalispharma.com^ +||med.armourthyroid.com^ +||med.asacolhdhcp.com^ +||med.bystolic.com^ +||med.bystolichcp.com^ +||med.bystolicsavings.com^ +||med.cerexa.com^ +||med.dalvance.com^ +||med.delzicol.com^ +||med.fetzima.com^ +||med.fetzimahcp.com^ +||med.frxis.com^ +||med.gelnique.com^ +||med.liletta.com^ +||med.lilettahcp.com^ +||med.linzess.com^ +||med.linzesshcp.com^ +||med.live2thrive.org^ +||med.myandroderm.com^ +||med.namenda.com^ +||med.namzaric.com^ +||med.rectiv.com^ +||med.saphris.com^ +||med.savella.com^ +||med.savellahcp.com^ +||med.teflaro.com^ +||med.viibryd.com^ +||med.viibrydhcp.com^ +||med.vraylar.com^ +||meds.androderm.com^ +||meds.asacolhdhcp.com^ +||meds.avycaz.com^ +||meds.bystolicsavings.com^ +||meds.delzicol.com^ +||meds.fetzima.com^ +||meds.liletta.com^ +||meds.lilettahcp.com^ +||meds.linzess.com^ +||meds.linzesshcp.com^ +||meds.rapaflo.com^ +||meds.savella.com^ +||meds.viibryd.com^ +||meds.viibrydhcp.com^ +||met.jasperforge.org^ +||met.sewell.com^ +||met1.hp.com^ +||met2.hp.com^ +||metc.banfield.com^ +||metric-nonssl.nomura.co.jp^ +||metric.1035thearrow.com^ +||metric.4imprint.com^ +||metric.alexandani.com^ +||metric.angieslist.com^ +||metric.armstrong.com^ +||metric.armstrongceilings.com^ +||metric.asos.com^ +||metric.asos.de^ +||metric.atg.se^ +||metric.atlanta.net^ +||metric.australiansuper.com^ +||metric.barclaycardus.com^ +||metric.baylorhealth.com^ +||metric.billmelater.com^ +||metric.bostonscientific.com^ +||metric.caixabank.es^ +||metric.carview.co.jp^ +||metric.ch.nissan.co.jp^ +||metric.changiairport.com^ +||metric.cort.com^ +||metric.crateandbarrel.com^ +||metric.cshgreenwich.org^ +||metric.dertour.de^ +||metric.drsfostersmith.com^ +||metric.duluthtrading.com^ +||metric.emerils.com^ +||metric.fatcatalog.com^ +||metric.foodbusinessnews.net^ +||metric.fxdd.com^ +||metric.genesis.es^ +||metric.golfnow.com^ +||metric.handmark.com^ +||metric.hilton.com^ +||metric.iccu.com^ +||metric.ing.es^ +||metric.ingdirect.es^ +||metric.its.de^ +||metric.jahnreisen.de^ +||metric.jeppesen.com^ +||metric.lacaixa.es^ +||metric.lan.com^ +||metric.langhamhotels.com^ +||metric.lo.movement.com^ +||metric.longhornsteakhouse.com^ +||metric.m.nissan-global.com^ +||metric.makemytrip.com^ +||metric.mars.com^ +||metric.matchesfashion.com^ +||metric.meatpoultry.com^ +||metric.mein-its.de^ +||metric.melectronics.ch^ +||metric.millenniumhotels.com^ +||metric.morganshotelgroup.com^ +||metric.movement.com^ +||metric.napster.com^ +||metric.nissan.co.uk^ +||metric.nissan.cz^ +||metric.nissan.de^ +||metric.nissan.es^ +||metric.nissan.lt^ +||metric.nissan.lv^ +||metric.nissan.nl^ +||metric.nissan.no^ +||metric.nissan.sk^ +||metric.nissan.ua^ +||metric.nomura.co.jp^ +||metric.northeast.aaa.com^ +||metric.nrma.com.au^ +||metric.octanner.com^ +||metric.olivegarden.com^ +||metric.optum.com^ +||metric.panpacific.com^ +||metric.pepboys.com^ +||metric.philosophy.com^ +||metric.polyone.com^ +||metric.postoffice.co.uk^ +||metric.publicstorage.com^ +||metric.redlobster.com^ +||metric.rent.com^ +||metric.restockit.com^ +||metric.revolutionhealth.com^ +||metric.samsclub.com^ +||metric.schooloutfitters.com^ +||metric.schwab.com^ +||metric.schwabinstitutional.com^ +||metric.sciencemag.org^ +||metric.sdl.com^ +||metric.seetorontonow.com^ +||metric.serena.com^ +||metric.shop.com^ +||metric.thecapitalgrille.com^ +||metric.timewarnercable.com^ +||metric.toyotacertificados.com^ +||metric.toyotacertified.com^ +||metric.trulia.com^ +||metric.tsite.jp^ +||metric.vodacom.co.za^ +||metric.vodafone.com.eg^ +||metric.vodafone.hu^ +||metric.volkswagen-nutzfahrzeuge.de^ +||metric.volkswagen.com^ +||metric.volkswagen.de^ +||metric.volkswagen.es^ +||metric.volkswagen.ie^ +||metric.volkswagen.pl^ +||metric.wilsonelectronics.com^ +||metric.worldcat.org^ +||metric.yardhouse.com^ +||metricas.agzero.com.br^ +||metrics-ieeexplore.ieee.org^ +||metrics-target.siriusxm.com^ +||metrics.1800contacts.com^ +||metrics.24hourfitness.com^ +||metrics.28degreescard.com.au^ +||metrics.3838.com^ +||metrics.3m.com^ +||metrics.48.ie^ +||metrics.aa.com^ +||metrics.aavacations.com^ +||metrics.abbott.co.in^ +||metrics.abbott.co.jp^ +||metrics.abbott.com^ +||metrics.abbott^ +||metrics.abbottbrasil.com.br^ +||metrics.abbvie.com^ +||metrics.abercrombie.com^ +||metrics.absolute.com^ +||metrics.absolutetotalcare.com^ +||metrics.academy.com^ +||metrics.acbj.com^ +||metrics.accuweather.com^ +||metrics.acehardware.com^ +||metrics.actemrahcp.com^ +||metrics.activase.com^ +||metrics.activecommunities.com^ +||metrics.adacreisen.de^ +||metrics.adage.com^ +||metrics.adelaidenow.com.au^ +||metrics.adiglobal.us^ +||metrics.adobe.nb.com^ +||metrics.adobe.nbprivatewealth.com^ +||metrics.adt.com^ +||metrics.advancedmd.com^ +||metrics.aem.playstation.com^ +||metrics.aetn.com^ +||metrics.aetnamedicare.com^ +||metrics.affymetrix.com^ +||metrics.agentprovocateur.com^ +||metrics.agilent.com^ +||metrics.agtechnavigator.com^ +||metrics.aia.com^ +||metrics.aircanada.com^ +||metrics.airtran.com^ +||metrics.airtv.net^ +||metrics.alabama.aaa.com^ +||metrics.alecensa.com^ +||metrics.alexandani.com^ +||metrics.alienware.com^ +||metrics.allaboutyou.com^ +||metrics.allegisgroup.com^ +||metrics.allianz.com.au^ +||metrics.allianzlife.com^ +||metrics.allstate.com^ +||metrics.ally.com^ +||metrics.alpo.com^ +||metrics.ambetterhealth.com^ +||metrics.amd.com^ +||metrics.ameise.de^ +||metrics.american-airlines.nl^ +||metrics.americanairlines.be^ +||metrics.americanairlines.cl^ +||metrics.americanairlines.co.cr^ +||metrics.americanairlines.jp^ +||metrics.americanblinds.com^ +||metrics.americancentury.com^ +||metrics.americaninno.com^ +||metrics.americansignaturefurniture.com^ +||metrics.amersports.com^ +||metrics.amg.com^ +||metrics.amgfunds.com^ +||metrics.amplifon.com^ +||metrics.ancestry.ca^ +||metrics.ancestry.com.au^ +||metrics.ancestry.com^ +||metrics.ancestry.de^ +||metrics.angelinaballerina.com^ +||metrics.angi.com^ +||metrics.angieslist.com^ +||metrics.anhi.org^ +||metrics.anixter.com^ +||metrics.anntaylor.com^ +||metrics.ansys.com^ +||metrics.antena3.com^ +||metrics.anthem.com^ +||metrics.apartments.com^ +||metrics.apps.ge.com^ +||metrics.argenta.be^ +||metrics.argenta.eu^ +||metrics.argos.co.uk^ +||metrics.arkansastotalcare.com^ +||metrics.armstrong.com^ +||metrics.armstrongceilings.com^ +||metrics.armstrongflooring.com^ +||metrics.army.mod.uk^ +||metrics.as.com^ +||metrics.asos.com^ +||metrics.assurances-bnc.ca^ +||metrics.assurancewireless.com^ +||metrics.assuranthealth.com^ +||metrics.astrogaming.com^ +||metrics.asumag.com^ +||metrics.asurion.com^ +||metrics.asx.com.au^ +||metrics.atresmedia.com^ +||metrics.au.com^ +||metrics.audi.co.uk^ +||metrics.austar.com.au^ +||metrics.australiansuper.com^ +||metrics.autoclubmo.aaa.com^ +||metrics.avalara.com^ +||metrics.avastin-hcp.com^ +||metrics.aviationweek.com^ +||metrics.avnet.com^ +||metrics.axs.com^ +||metrics.babycenter.de^ +||metrics.baitoru-id.com^ +||metrics.baitoru.com^ +||metrics.baitorupro.com^ +||metrics.bakeryandsnacks.com^ +||metrics.bakeryawards.co.uk^ +||metrics.bakeryinfo.co.uk^ +||metrics.bananarepublic.eu^ +||metrics.bancobmg.com.br^ +||metrics.bankatfirst.com^ +||metrics.bankia.es^ +||metrics.bankofamerica.com^ +||metrics.banksa.com.au^ +||metrics.bankwest.com.au^ +||metrics.barclaycardus.com^ +||metrics.barclays.co.uk^ +||metrics.base.be^ +||metrics.bayer.com^ +||metrics.bayer.us^ +||metrics.bbva.com.ar^ +||metrics.bbva.com.co^ +||metrics.bbva.es^ +||metrics.bbva.mx^ +||metrics.bbva.pe^ +||metrics.bbvaleasing.mx^ +||metrics.bcbsks.com^ +||metrics.bcbsnc.com^ +||metrics.bcbsnd.com^ +||metrics.be.carrefour.eu^ +||metrics.bestandless.com.au^ +||metrics.bestrecipes.com.au^ +||metrics.beveragedaily.com^ +||metrics.bhf.org.uk^ +||metrics.billmelater.com^ +||metrics.biocompare.com^ +||metrics.biooncology.com^ +||metrics.biopharma-reporter.com^ +||metrics.bissell.com^ +||metrics.bitbang.com^ +||metrics.bizjournals.com^ +||metrics.bkb.ch^ +||metrics.blackbaud.com^ +||metrics.blackrock.com^ +||metrics.bmc.com^ +||metrics.bmo.com^ +||metrics.bmwusa.com^ +||metrics.bncollege.com^ +||metrics.bnymellon.com^ +||metrics.boats.com^ +||metrics.bobthebuilder.com^ +||metrics.bodyandsoul.com.au^ +||metrics.boehringer-ingelheim.es^ +||metrics.boozallen.com^ +||metrics.boq.com.au^ +||metrics.borgatapoker.com^ +||metrics.boscovs.com^ +||metrics.bose.ca^ +||metrics.bose.com^ +||metrics.bostonglobe.com^ +||metrics.bostonscientific.com^ +||metrics.breadfinancial.com^ +||metrics.bridgestoneamericas.com^ +||metrics.brighthorizons.com^ +||metrics.brilliantbylangham.com^ +||metrics.britishgas.co.uk^ +||metrics.brocade.com^ +||metrics.brooksbrothers.com^ +||metrics.brooksrunning.com^ +||metrics.bt.com.au^ +||metrics.bt.com^ +||metrics.bt.se^ +||metrics.buildasign.com^ +||metrics.bupa.com.au^ +||metrics.business.comcast.com^ +||metrics.buyersedge.com.au^ +||metrics.buysearchsell.com.au^ +||metrics.c2fo.com^ +||metrics.caesars.com^ +||metrics.cahealthwellness.com^ +||metrics.cairnspost.com.au^ +||metrics.caixabank.es^ +||metrics.calbaptist.edu^ +||metrics.calgary.ca^ +||metrics.calia.com^ +||metrics.calif.aaa.com^ +||metrics.calimera.com^ +||metrics.calvinklein.com^ +||metrics.calvinklein.us^ +||metrics.calwater.com^ +||metrics.camperboerse.com^ +||metrics.campingworld.com^ +||metrics.cancer.gov^ +||metrics.capella.edu^ +||metrics.capitalone.com^ +||metrics.caracoltv.com^ +||metrics.carbonite.com^ +||metrics.care.com^ +||metrics.career-education.monster.com^ +||metrics.carfax.com^ +||metrics.carnival.co.uk^ +||metrics.carnival.com.au^ +||metrics.carnival.com^ +||metrics.carpricesecrets.com^ +||metrics.carters.com^ +||metrics.carzone.ie^ +||metrics.casinosplendido.com^ +||metrics.casio.com.tw^ +||metrics.catalog.usmint.gov^ +||metrics.cathflo.com^ +||metrics.cb2.com^ +||metrics.cbc.ca^ +||metrics.cbc.youtube.mercedes-benz.com^ +||metrics.cbn.com^ +||metrics.ccma.cat^ +||metrics.cdiscount.com^ +||metrics.cedars-sinai.org^ +||metrics.cellcept.com^ +||metrics.census.gov^ +||metrics.centurylink.com^ +||metrics.channelfutures.com^ +||metrics.chapters.indigo.ca^ +||metrics.chatrwireless.com^ +||metrics.chghealthcare.com^ +||metrics.chipotle.com^ +||metrics.chrysler.com^ +||metrics.churchill.com^ +||metrics.cib.bnpparibas^ +||metrics.cigarsinternational.com^ +||metrics.citi.com^ +||metrics.citibank.com.my^ +||metrics.citibank.com^ +||metrics.citimortgage.com^ +||metrics.citizensbank.com^ +||metrics.claires.com^ +||metrics.cluballiance.aaa.com^ +||metrics.clubmonaco.ca^ +||metrics.cmfgroup.com^ +||metrics.cnb.com^ +||metrics.cnn.com^ +||metrics.coach.com^ +||metrics.coachfactory.com^ +||metrics.coalesse.com^ +||metrics.codesports.com.au^ +||metrics.columbia.com^ +||metrics.combinedinsurance.com^ +||metrics.comcast.com^ +||metrics.comenity.net^ +||metrics.commercialtrucktrader.com^ +||metrics.commonclaimsmistakesvideo.com^ +||metrics.company.co.uk^ +||metrics.comparethemarket.com^ +||metrics.confectionerynews.com^ +||metrics.consumerreports.org^ +||metrics.contractingbusiness.com^ +||metrics.conveniencestore.co.uk^ +||metrics.converse.com^ +||metrics.coolibar.com^ +||metrics.coordinatedcarehealth.com^ +||metrics.cornerbanca.ch^ +||metrics.correos.es^ +||metrics.cort.com^ +||metrics.corus.ca^ +||metrics.cosmeticsdesign-asia.com^ +||metrics.cosmeticsdesign-europe.com^ +||metrics.cosmeticsdesign.com^ +||metrics.cosstores.com^ +||metrics.costco.ca^ +||metrics.costco.com^ +||metrics.costcobusinesscentre.ca^ +||metrics.costcobusinessdelivery.com^ +||metrics.cotellic.com^ +||metrics.cottages.com^ +||metrics.countryfinancial.com^ +||metrics.couriermail.com.au^ +||metrics.covance.com^ +||metrics.coventryhealthcare.com^ +||metrics.cpsenergy.com^ +||metrics.crainsnewyork.com^ +||metrics.crateandbarrel.com^ +||metrics.creditacceptance.com^ +||metrics.crocs.com^ +||metrics.cru.org^ +||metrics.csmonitor.com^ +||metrics.csu.edu.au^ +||metrics.ctv.ca^ +||metrics.currys.co.uk^ +||metrics.cvs.com^ +||metrics.cycleworld.com^ +||metrics.cytivalifesciences.com^ +||metrics.dailytelegraph.com.au^ +||metrics.dairyreporter.com^ +||metrics.dandh.ca^ +||metrics.dandh.com^ +||metrics.darty.com^ +||metrics.datapipe.com^ +||metrics.dcshoes.com^ +||metrics.deakin.edu.au^ +||metrics.defenseone.com^ +||metrics.delhaizedirect.be^ +||metrics.delicious.com.au^ +||metrics.delta.com^ +||metrics.dentalcompare.com^ +||metrics.depakoteer.com^ +||metrics.der.com^ +||metrics.dertour-reisebuero.de^ +||metrics.dertour.de^ +||metrics.despegar.com^ +||metrics.dev.www.vwfs.de^ +||metrics.dhc.co.jp^ +||metrics.dhl.de^ +||metrics.digitaleditions.com.au^ +||metrics.directtv.com^ +||metrics.directv.com^ +||metrics.discover.com^ +||metrics.discovertrk.com^ +||metrics.dish.co^ +||metrics.dish.com^ +||metrics.distrelec.ch^ +||metrics.divosta.com^ +||metrics.diy.com^ +||metrics.diynetwork.com^ +||metrics.dockers.com^ +||metrics.dog.com^ +||metrics.dollar.com^ +||metrics.dollargeneral.com^ +||metrics.donaldson.com^ +||metrics.dreamvacationweek.com^ +||metrics.drklein.de^ +||metrics.droidsc.natwest.com^ +||metrics.droidsc.rbs.co.uk^ +||metrics.drsfostersmith.com^ +||metrics.drugpricinglaw.com^ +||metrics.duluthtrading.com^ +||metrics.dunkindonuts.com^ +||metrics.e-abbott.com^ +||metrics.e-wie-einfach.de^ +||metrics.eastcentral.aaa.com^ +||metrics.edb.gov.sg^ +||metrics.eddiebauer.com^ +||metrics.eddiev.com^ +||metrics.edgepark.com^ +||metrics.ee.co.uk^ +||metrics.egencia.ae^ +||metrics.egencia.be^ +||metrics.egencia.ca^ +||metrics.egencia.ch^ +||metrics.egencia.cn^ +||metrics.egencia.co.in^ +||metrics.egencia.co.nz^ +||metrics.egencia.co.uk^ +||metrics.egencia.co.za^ +||metrics.egencia.com.au^ +||metrics.egencia.com.hk^ +||metrics.egencia.com.sg^ +||metrics.egencia.com^ +||metrics.egencia.cz^ +||metrics.egencia.de^ +||metrics.egencia.dk^ +||metrics.egencia.es^ +||metrics.egencia.fi^ +||metrics.egencia.fr^ +||metrics.egencia.ie^ +||metrics.egencia.it^ +||metrics.egencia.nl^ +||metrics.egencia.no^ +||metrics.egencia.pl^ +||metrics.egencia.se^ +||metrics.ehc.com^ +||metrics.ehealthinsurance.com^ +||metrics.ehstoday.com^ +||metrics.einsure.com.au^ +||metrics.eiu.com^ +||metrics.eki-net.com^ +||metrics.el-mundo.net^ +||metrics.elal.com^ +||metrics.elgiganten.dk^ +||metrics.elle.co.jp^ +||metrics.ellechina.com^ +||metrics.elpais.com^ +||metrics.elsevier.com^ +||metrics.eltenedor.es^ +||metrics.emdeon.com^ +||metrics.emicizumabinfo.com^ +||metrics.emirates.com^ +||metrics.empiretoday.com^ +||metrics.enelenergia.it^ +||metrics.energyaustralia.com.au^ +||metrics.enspryng-hcp.com^ +||metrics.enspryng.com^ +||metrics.enterprise.com^ +||metrics.ereplacementparts.com^ +||metrics.erivedge.com^ +||metrics.esbriet.com^ +||metrics.esbriethcp.com^ +||metrics.escape.com.au^ +||metrics.esignal.com^ +||metrics.etihad.com^ +||metrics.etihadengineering.com^ +||metrics.etihadguest.com^ +||metrics.eu.playstation.com^ +||metrics.eurobet.it^ +||metrics.eversource.com^ +||metrics.evine.com^ +||metrics.evite.com^ +||metrics.evrysdi.com^ +||metrics.ewstv.com^ +||metrics.examinebiosimilars.com^ +||metrics.explore.calvinklein.com^ +||metrics.express.com^ +||metrics.extraespanol.warnerbros.com^ +||metrics.extratv.warnerbros.com^ +||metrics.faceipf.com^ +||metrics.familiaynutricion.com.co^ +||metrics.fancl.co.jp^ +||metrics.farmprogressdaily.com^ +||metrics.farmshopanddelishow.co.uk^ +||metrics.farnell.com^ +||metrics.fcacert.com^ +||metrics.fcbarcelona.com^ +||metrics.fcsamerica.com^ +||metrics.fedex.com^ +||metrics.feednavigator.com^ +||metrics.feedstuffsfoodlink.com^ +||metrics.ferguson.com^ +||metrics.fetnet.net^ +||metrics.fifa.com^ +||metrics.figis.com^ +||metrics.filemaker.com^ +||metrics.finn.no^ +||metrics.flagstar.com^ +||metrics.flexerasoftware.com^ +||metrics.flexshares.com^ +||metrics.fmdos.cl^ +||metrics.folksam.se^ +||metrics.foodanddrinkexpo.co.uk^ +||metrics.foodex.co.uk^ +||metrics.foodmanufacture.co.uk^ +||metrics.foodnavigator-asia.com^ +||metrics.foodnavigator-latam.com^ +||metrics.foodnavigator-usa.com^ +||metrics.foodnavigator.com^ +||metrics.foodnetwork.com^ +||metrics.forbestravelguide.com^ +||metrics.ford.com^ +||metrics.forecourttrader.co.uk^ +||metrics.fortinet.com^ +||metrics.fortune.com^ +||metrics.foxbusiness.com^ +||metrics.foxnews.com^ +||metrics.foxsports.com.au^ +||metrics.fpl.com^ +||metrics.fressnapf.at^ +||metrics.fressnapf.ch^ +||metrics.fressnapf.de^ +||metrics.friskies.com^ +||metrics.frontier.com^ +||metrics.ftd.com^ +||metrics.fuzeon.com^ +||metrics.galicia.ar^ +||metrics.gap.co.jp^ +||metrics.gap.co.uk^ +||metrics.gap.com^ +||metrics.gap.eu^ +||metrics.gapcanada.ca^ +||metrics.gazyva.com^ +||metrics.gcimetrics.com^ +||metrics.geelongadvertiser.com.au^ +||metrics.gemfinance.co.nz^ +||metrics.genentech-access.com^ +||metrics.genentech-forum.com^ +||metrics.genentech-pro.com^ +||metrics.genentechhemophilia.com^ +||metrics.generac.com^ +||metrics.genesis.es^ +||metrics.gengraf.com^ +||metrics.genzyme.com^ +||metrics.giftcards.com^ +||metrics.gio.com.au^ +||metrics.global.mandg.com^ +||metrics.global.nba.com^ +||metrics.globalgolf.com^ +||metrics.globalscape.com^ +||metrics.globe.com.ph^ +||metrics.glucerna.net^ +||metrics.gnc.com^ +||metrics.goalfinancial.net^ +||metrics.gobank.com^ +||metrics.goindigo.in^ +||metrics.goinggoing.com^ +||metrics.goldcoastbulletin.com.au^ +||metrics.golfgalaxy.com^ +||metrics.gomastercard.com.au^ +||metrics.gomedigap.com^ +||metrics.goodhousekeeping.co.uk^ +||metrics.gordonsjewelers.com^ +||metrics.gq.com.au^ +||metrics.grainger.com^ +||metrics.grandandtoy.com^ +||metrics.greatland.com^ +||metrics.greendot.com^ +||metrics.greenflag.com^ +||metrics.greenies.com^ +||metrics.growthasiasummit.com^ +||metrics.grundfos.com^ +||metrics.guess.hk^ +||metrics.handmark.com^ +||metrics.harborfreight.com^ +||metrics.hatarako.net^ +||metrics.hawaii.aaa.com^ +||metrics.hayesandjarvis.co.uk^ +||metrics.hbogo.com^ +||metrics.hbogola.com^ +||metrics.hbr.org^ +||metrics.health.com^ +||metrics.healthpartners.com^ +||metrics.heathrow.com^ +||metrics.heathrowexpress.com^ +||metrics.helpguide.sony.net^ +||metrics.helvetia.com^ +||metrics.her2treatment.com^ +||metrics.heraldsun.com.au^ +||metrics.herbalife.com^ +||metrics.herceptin.com^ +||metrics.herceptinhylecta.com^ +||metrics.hgtv.com^ +||metrics.hitentertainment.com^ +||metrics.hm.com^ +||metrics.hmhco.com^ +||metrics.hollandamerica.com^ +||metrics.hollisterco.com.hk^ +||metrics.hollisterco.com^ +||metrics.homeadvisor.com^ +||metrics.homedecorators.com^ +||metrics.hoseasons.co.uk^ +||metrics.hostech.co.uk^ +||metrics.hrblock.com^ +||metrics.hsamuel.co.uk^ +||metrics.htc.com^ +||metrics.hubert.com^ +||metrics.huffingtonpost.es^ +||metrics.huntington.com^ +||metrics.huntingtonsdiseasehcp.com^ +||metrics.hydraulicspneumatics.com^ +||metrics.hyundaiusa.com^ +||metrics.iconfitness.com^ +||metrics.ifc.org^ +||metrics.iij.ad.jp^ +||metrics.ikea.com^ +||metrics.illinois.gov^ +||metrics.industryweek.com^ +||metrics.inet.fi^ +||metrics.infiniti.com^ +||metrics.infomedics.it^ +||metrics.ing.es^ +||metrics.ingdirect.es^ +||metrics.ingredion.com^ +||metrics.inkcartridges.com^ +||metrics.insider.hagerty.com^ +||metrics.instyle.com^ +||metrics.insuramatch.com^ +||metrics.insurancesaver.com^ +||metrics.interbank.pe^ +||metrics.interestfree.com.au^ +||metrics.interhyp.de^ +||metrics.internationalwinechallenge.com^ +||metrics.intervalworld.com^ +||metrics.interweave.com^ +||metrics.investmentnews.com^ +||metrics.ionos-group.com^ +||metrics.ionos.at^ +||metrics.ionos.ca^ +||metrics.ionos.co.uk^ +||metrics.ionos.com^ +||metrics.ionos.de^ +||metrics.ionos.es^ +||metrics.ionos.fr^ +||metrics.ionos.it^ +||metrics.ionos.mx^ +||metrics.iossc.natwest.com^ +||metrics.iossc.rbs.co.uk^ +||metrics.ireport.com^ +||metrics.its.de^ +||metrics.ittoolbox.com^ +||metrics.ivivva.com^ +||metrics.iwakifc.com^ +||metrics.jamestowndistributors.com^ +||metrics.jcrew.com^ +||metrics.jcwhitney.com^ +||metrics.jeppesen.com^ +||metrics.jetblue.com^ +||metrics.jm-lexus.com^ +||metrics.joefresh.com^ +||metrics.johnhancock.com^ +||metrics.judgemathistv.warnerbros.com^ +||metrics.juiceplus.com^ +||metrics.jungheinrich-profishop.co.uk^ +||metrics.kadcyla.com^ +||metrics.kaercher.com^ +||metrics.kao.com^ +||metrics.kawai-juku.ac.jp^ +||metrics.kayosports.com.au^ +||metrics.kempinski.com^ +||metrics.kennethcole.com^ +||metrics.keno.com.au^ +||metrics.key.com^ +||metrics.keysight.com^ +||metrics.kia.com^ +||metrics.kidsnews.com.au^ +||metrics.kidspot.com.au^ +||metrics.kimberly-clark.com^ +||metrics.kindercare.com^ +||metrics.kipling-usa.com^ +||metrics.kirklands.com^ +||metrics.knowyourhdl.com^ +||metrics.knowyourtrigs.com^ +||metrics.kone.cn^ +||metrics.kpmg.com^ +||metrics.kpmg.us^ +||metrics.kristinehamn.se^ +||metrics.kumon.com^ +||metrics.kunilexusofcoloradosprings.com^ +||metrics.labcorp.com^ +||metrics.lacaixa.es^ +||metrics.lacounty.gov^ +||metrics.ladbrokes.be^ +||metrics.lafourchette.com^ +||metrics.lambweston.com^ +||metrics.landolakesinc.com^ +||metrics.langhamhotels.com^ +||metrics.lastminute.ch^ +||metrics.latitudefinancial.com.au^ +||metrics.latitudepay.com^ +||metrics.learning.monster.com^ +||metrics.learningcurve.com^ +||metrics.legalandgeneral.com^ +||metrics.legalsolutions.thomsonreuters.com^ +||metrics.leggmason.com^ +||metrics.levi.com^ +||metrics.lexus.com^ +||metrics.lexusofqueens.com^ +||metrics.lifetime.life^ +||metrics.liverpool.com.mx^ +||metrics.lmtonline.com^ +||metrics.loblaws.ca^ +||metrics.londoncoffeefestival.com^ +||metrics.lovefilm.com^ +||metrics.lowes.com^ +||metrics.lpl.com^ +||metrics.lucentis.com^ +||metrics.lululemon.ch^ +||metrics.lululemon.cn^ +||metrics.lululemon.co.jp^ +||metrics.lululemon.co.kr^ +||metrics.lululemon.co.nz^ +||metrics.lululemon.co.uk^ +||metrics.lululemon.com.au^ +||metrics.lululemon.com.hk^ +||metrics.lululemon.com^ +||metrics.lululemon.de^ +||metrics.lululemon.fr^ +||metrics.lww.com^ +||metrics.lycos.com^ +||metrics.ma500.co.uk^ +||metrics.madeformums.com^ +||metrics.maestrocard.com^ +||metrics.makemytrip.com^ +||metrics.mandg.com^ +||metrics.marcus.com^ +||metrics.marketing.lighting.philips.kz^ +||metrics.marksandspencer.com^ +||metrics.marksandspencer.eu^ +||metrics.marksandspencer.fr^ +||metrics.marksandspencer.ie^ +||metrics.marksandspencerlondon.com^ +||metrics.marriott.com^ +||metrics.marriottvacationclub.asia^ +||metrics.mars.com^ +||metrics.mastercard.com^ +||metrics.mastercardadvisors.com^ +||metrics.mastercardbusiness.com^ +||metrics.mastercardintl.com^ +||metrics.masters.com^ +||metrics.matchesfashion.com^ +||metrics.mathworks.cn^ +||metrics.mathworks.com^ +||metrics.matlab.com^ +||metrics.maurices.com^ +||metrics.maxgo.com^ +||metrics.maxizoo.be^ +||metrics.maxizoo.fr^ +||metrics.maxizoo.ie^ +||metrics.maxizoo.pl^ +||metrics.mca-insight.com^ +||metrics.med.roche.ru^ +||metrics.medical.roche.de^ +||metrics.meiers-weltreisen.de^ +||metrics.mein-dertour.de^ +||metrics.mein-its.de^ +||metrics.mein-jahnreisen.de^ +||metrics.mein-meiers-weltreisen.de^ +||metrics.melectronics.ch^ +||metrics.menshealth.co.uk^ +||metrics.metrobyt-mobile.com^ +||metrics.mfs.com^ +||metrics.mgmresorts.com^ +||metrics.mhn.com^ +||metrics.mhngs.com^ +||metrics.mibcookies.rbs.com^ +||metrics.midatlantic.aaa.com^ +||metrics.midwestliving.com^ +||metrics.miketheknight.com^ +||metrics.miles-and-more.com^ +||metrics.mindshareworld.com^ +||metrics.miniusa.com^ +||metrics.missselfridge.com^ +||metrics.misumi-ec.com^ +||metrics.mobilebanking.scotiabank.com^ +||metrics.modcloth.com^ +||metrics.moen.com^ +||metrics.monclick.it^ +||metrics.moneta.cz^ +||metrics.moodys.com^ +||metrics.moosejaw.com^ +||metrics.morganshotelgroup.com^ +||metrics.morganstanley.com^ +||metrics.morningadvertiser.co.uk^ +||metrics.morningstar.com^ +||metrics.morrisjenkins.com^ +||metrics.motorhomebookers.com^ +||metrics.motortrend.com^ +||metrics.mrporter.com^ +||metrics.mrrooter.com^ +||metrics.mum.edu^ +||metrics.mycareforward.com^ +||metrics.myclubwyndham.com^ +||metrics.mydish.com^ +||metrics.myprime.com^ +||metrics.myspringfield.com^ +||metrics.mytributes.com.au^ +||metrics.myvi.in^ +||metrics.myyellow.com^ +||metrics.nab.com.au^ +||metrics.nabbroker.com.au^ +||metrics.napaonline.com^ +||metrics.nascar.com^ +||metrics.nationalconvenienceshow.co.uk^ +||metrics.nationalgeographic.com^ +||metrics.nationaljournal.com^ +||metrics.nationalrestaurantawards.co.uk^ +||metrics.nba.com^ +||metrics.nbnco.com.au^ +||metrics.nebraskatotalcare.com^ +||metrics.nero.com^ +||metrics.nespresso.com^ +||metrics.nestlepurinacareers.com^ +||metrics.netxpress.biz^ +||metrics.netxpress.co.nz^ +||metrics.newark.com^ +||metrics.newbalance.co.uk^ +||metrics.newbalance.com^ +||metrics.newequipment.com^ +||metrics.newmexico.aaa.com^ +||metrics.newport.com^ +||metrics.newportlexus.com^ +||metrics.news.co.uk^ +||metrics.news.com.au^ +||metrics.newsadds.com.au^ +||metrics.newsconcierge.com.au^ +||metrics.newscorpaustralia.com^ +||metrics.newscorporatesubscriptions.com.au^ +||metrics.newyorkfarmshow.com^ +||metrics.nexmo.com^ +||metrics.nfl.com^ +||metrics.nflextrapoints.com^ +||metrics.nfluk.com^ +||metrics.nfm.com^ +||metrics.nfpa.org^ +||metrics.nhm.ac.uk^ +||metrics.nhmshop.co.uk^ +||metrics.nielsen.com^ +||metrics.nike.net^ +||metrics.nintendo.com^ +||metrics.nissan.co.uk^ +||metrics.nissan.ee^ +||metrics.nissan.es^ +||metrics.nissan.lt^ +||metrics.nissan.lv^ +||metrics.nissan.no^ +||metrics.nissanusa.com^ +||metrics.nmfn.com^ +||metrics.nn.nl^ +||metrics.noloan.com^ +||metrics.northeast.aaa.com^ +||metrics.northernnewengland.aaa.com^ +||metrics.northwesternmutual.com^ +||metrics.norvir.com^ +||metrics.nowtv.com^ +||metrics.nrma.com.au^ +||metrics.ntnews.com.au^ +||metrics.nutraingredients-asia.com^ +||metrics.nutraingredients-latam.com^ +||metrics.nutraingredients-usa.com^ +||metrics.nutraingredients.com^ +||metrics.nutraingredientsasia-awards.com^ +||metrics.nutropin.com^ +||metrics.nvidia.com^ +||metrics.nxtbook.com^ +||metrics.nyandcompany.com^ +||metrics.nycgo.com^ +||metrics.nylexpress.com^ +||metrics.nysdot.gov^ +||metrics.o2online.de^ +||metrics.ocrelizumabinfo.com^ +||metrics.ocrevus.com^ +||metrics.octanner.com^ +||metrics.oetker.de^ +||metrics.olgaintimates.com^ +||metrics.omniture.com^ +||metrics.omya.com^ +||metrics.onecall.com^ +||metrics.optimum.net^ +||metrics.optum.com^ +||metrics.oreck.com^ +||metrics.oreilly.com^ +||metrics.orlandofuntickets.com^ +||metrics.outsourcing-pharma.com^ +||metrics.pacsun.com^ +||metrics.palopmed.com^ +||metrics.panasonic.biz^ +||metrics.panasonic.com^ +||metrics.panasonic.jp^ +||metrics.pandora.com^ +||metrics.panerabread.com^ +||metrics.paperdirect.com^ +||metrics.parcelforce.com^ +||metrics.patientsatheart.com^ +||metrics.paysafecard.com^ +||metrics.pcrichard.com^ +||metrics.pebblebeach.com^ +||metrics.penny-reisen.de^ +||metrics.pennymacusa.com^ +||metrics.penton.com^ +||metrics.people.com^ +||metrics.peoplescourt.warnerbros.com^ +||metrics.pepboys.com^ +||metrics.perjeta.com^ +||metrics.petchow.net^ +||metrics.petco.com^ +||metrics.petinsurance.com^ +||metrics.petsmart.com^ +||metrics.pfizer.com^ +||metrics.pgi.com^ +||metrics.pgs.com^ +||metrics.phoenix.edu^ +||metrics.photos.com^ +||metrics.pinkribbonbottle.com^ +||metrics.pisces-penton.com^ +||metrics.plusrewards.com.au^ +||metrics.pmis.abbott.com^ +||metrics.politico.com^ +||metrics.politico.eu^ +||metrics.politicopro.com^ +||metrics.polivy.com^ +||metrics.popularwoodworking.com^ +||metrics.portal.roche.de^ +||metrics.post-gazette.com^ +||metrics.postoffice.co.uk^ +||metrics.powerreviews.com^ +||metrics.ppt.org^ +||metrics.prd.base.be^ +||metrics.prd.telenet.be^ +||metrics.premierinn.com^ +||metrics.priceless.com^ +||metrics.princess.com^ +||metrics.privilege.com^ +||metrics.probiotaamericas.com^ +||metrics.proquest.com^ +||metrics.protectmyid.com^ +||metrics.provincial.com^ +||metrics.proximus.be^ +||metrics.pru.co.uk^ +||metrics.prudential.com^ +||metrics.pruina.com^ +||metrics.psoriasisuncovered.com^ +||metrics.publiclands.com^ +||metrics.publicstorage.com^ +||metrics.pulmozyme.com^ +||metrics.puma.com^ +||metrics.purina-petcare.com^ +||metrics.purina.ca^ +||metrics.purinamills.com^ +||metrics.purinaone.com^ +||metrics.purinastore.com^ +||metrics.purinaveterinarydiets.com^ +||metrics.puritan.com^ +||metrics.pvh.com^ +||metrics.qatarairways.com^ +||metrics.questrade.com^ +||metrics.quiksilver.com^ +||metrics.quill.com^ +||metrics.quiltingcompany.com^ +||metrics.qvc.jp^ +||metrics.r200.co.uk^ +||metrics.radissonhotels.com^ +||metrics.radissonhotelsamericas.com^ +||metrics.rainbowmagic.co.uk^ +||metrics.ralphlauren.com^ +||metrics.ralphlauren.fr^ +||metrics.rarediseasesignup.com^ +||metrics.rbcgam.com^ +||metrics.rbcgma.com^ +||metrics.rci.com^ +||metrics.rcn.com^ +||metrics.rcsmetrics.it^ +||metrics.reallymoving.com^ +||metrics.realpropertymgt.com^ +||metrics.realsimple.com^ +||metrics.realtor.com^ +||metrics.refinitiv.com^ +||metrics.refrigeratedtransporter.com^ +||metrics.regal.es^ +||metrics.regions.com^ +||metrics.reliant.com^ +||metrics.renesas.com^ +||metrics.renfe.com^ +||metrics.rent.com^ +||metrics.reseguiden.se^ +||metrics.restaurant-hospitality.com^ +||metrics.restaurantonline.co.uk^ +||metrics.restockit.com^ +||metrics.retail-week.com^ +||metrics.rethinksma.com^ +||metrics.rewe-reisen.de^ +||metrics.rewe.de^ +||metrics.richmondamerican.com^ +||metrics.riteaid.com^ +||metrics.rituxan.com^ +||metrics.rituxanforgpampa-hcp.com^ +||metrics.rituxanforpv.com^ +||metrics.rituxanforra-hcp.com^ +||metrics.rituxanforra.com^ +||metrics.rituxanhycela.com^ +||metrics.robeco.com^ +||metrics.roche-applied-science.com^ +||metrics.roche-infohub.co.za^ +||metrics.roche.de^ +||metrics.rochehelse.no^ +||metrics.rocheksa.com^ +||metrics.rochenet.pt^ +||metrics.rockandpop.cl^ +||metrics.rolex.cn^ +||metrics.rotorooter.com^ +||metrics.roxy.com^ +||metrics.royalcaribbean.com^ +||metrics.royalmail.com^ +||metrics.royalmailgroup.com^ +||metrics.rozlytrek.com^ +||metrics.ryanhomes.com^ +||metrics.rydahls.se^ +||metrics.sainsburysbank.co.uk^ +||metrics.salliemae.com^ +||metrics.samsclub.com^ +||metrics.samsunglife.com^ +||metrics.sap.com^ +||metrics.sasktel.com^ +||metrics.saudiairlines.com^ +||metrics.savethechildren.org.uk^ +||metrics.sce.com^ +||metrics.schooloutfitters.com^ +||metrics.sciencemag.org^ +||metrics.scopus.com^ +||metrics.scottrade.com^ +||metrics.sdcvisit.com^ +||metrics.seabourn.com^ +||metrics.seawheeze.com^ +||metrics.seb.se^ +||metrics.sebgroup.com^ +||metrics.seloger.com^ +||metrics.sensai-cosmetics.com^ +||metrics.sentido.com^ +||metrics.sephora.com^ +||metrics.sephora.fr^ +||metrics.sephora.it^ +||metrics.sephora.pl^ +||metrics.sfchronicle.com^ +||metrics.sfr.fr^ +||metrics.sgproof.com^ +||metrics.shangri-la.com^ +||metrics.shannons.com.au^ +||metrics.sharecare.com^ +||metrics.sharpusa.com^ +||metrics.shinseibank.com^ +||metrics.shiremedinfo.com^ +||metrics.shop.learningcurve.com^ +||metrics.shop.superstore.ca^ +||metrics.shopjapan.co.jp^ +||metrics.shopmyexchange.com^ +||metrics.showtickets.com^ +||metrics.showtime.com^ +||metrics.similac.com.tr^ +||metrics.siriusxm.ca^ +||metrics.siriusxm.com^ +||metrics.sisal.it^ +||metrics.sj1.omniture.com^ +||metrics.sjo.omniture.com^ +||metrics.skandia.se^ +||metrics.skipton.co.uk^ +||metrics.skistar.com^ +||metrics.sky.com^ +||metrics.sky.it^ +||metrics.skynews.com.au^ +||metrics.sling.com^ +||metrics.smartauctionlogin.com^ +||metrics.smartstyle.com^ +||metrics.smartzip.com^ +||metrics.smbcnikko.co.jp^ +||metrics.smedia.com.au^ +||metrics.snapfish.ca^ +||metrics.softwareag.com^ +||metrics.solarwinds.com^ +||metrics.solaseedair.jp^ +||metrics.solinst.com^ +||metrics.somas.se^ +||metrics.sony.com^ +||metrics.sony.jp^ +||metrics.sothebys.com^ +||metrics.southeastfarmpress.com^ +||metrics.southwest.com^ +||metrics.sparkassendirekt.de^ +||metrics.spdrs.com^ +||metrics.spencersonline.com^ +||metrics.spirithalloween.com^ +||metrics.srpnet.com^ +||metrics.ssga.com^ +||metrics.stage.www.vwfs.de^ +||metrics.standardandpoors.com^ +||metrics.stanfordhealthcare.org^ +||metrics.staples.com.au^ +||metrics.staples.com^ +||metrics.staplesadvantage.com^ +||metrics.starhub.com^ +||metrics.startribune.com^ +||metrics.statefarm.com^ +||metrics.statestreet.com^ +||metrics.steelcase.com^ +||metrics.steinhafels.com^ +||metrics.stockhead.com.au^ +||metrics.store.irobot.com^ +||metrics.strategiccoach.com^ +||metrics.striderite.com^ +||metrics.strokeawareness.com^ +||metrics.stubhub.co.uk^ +||metrics.stubhub.de^ +||metrics.stubhub.fr^ +||metrics.stwater.co.uk^ +||metrics.suncorpbank.com.au^ +||metrics.sunflowerhealthplan.com^ +||metrics.sungard.com^ +||metrics.sunlife.com^ +||metrics.sunpower.com^ +||metrics.sunpowercorp.com^ +||metrics.supercoach.com.au^ +||metrics.supercuts.com^ +||metrics.support.e-abbott.com^ +||metrics.svd.se^ +||metrics.swinburne.edu.au^ +||metrics.synergy.net.au^ +||metrics.synopsys.com^ +||metrics.sysco.com^ +||metrics.t-mobile.com^ +||metrics.t-mobilemoney.com^ +||metrics.tacobell.com^ +||metrics.tagesspiegel.de^ +||metrics.takami-labo.com^ +||metrics.talbots.com^ +||metrics.tamiflu.com^ +||metrics.tarceva.com^ +||metrics.target.com^ +||metrics.taste.com.au^ +||metrics.tasteline.com^ +||metrics.taxi.com^ +||metrics.taylormadegolf.com^ +||metrics.taylors.edu.my^ +||metrics.tbs.com^ +||metrics.tcm.com^ +||metrics.tcs.com^ +||metrics.td.com^ +||metrics.tdworld.com^ +||metrics.te.com^ +||metrics.teachforamerica.org^ +||metrics.teampages.com^ +||metrics.teamviewer.cn^ +||metrics.teamviewer.com^ +||metrics.tecentriq-hcp.com^ +||metrics.tecentriq.com^ +||metrics.teeoff.com^ +||metrics.telegraph.co.uk^ +||metrics.telenet.be^ +||metrics.telenor.se^ +||metrics.tescobank.com^ +||metrics.teveten-us.com^ +||metrics.texas.aaa.com^ +||metrics.tgifridays.com^ +||metrics.theaustralian.com.au^ +||metrics.thechronicle.com.au^ +||metrics.thedailybeast.com^ +||metrics.thefork.com^ +||metrics.thegrocer.co.uk^ +||metrics.thehartford.com^ +||metrics.thelott.com^ +||metrics.themadisonsquaregardencompany.com^ +||metrics.themercury.com.au^ +||metrics.thenation.com^ +||metrics.theomnichannelconference.co.uk^ +||metrics.therestaurantconference.co.uk^ +||metrics.therestaurantshow.co.uk^ +||metrics.thetrainline.com^ +||metrics.theworlds50best.com^ +||metrics.thingspeak.com^ +||metrics.thingsremembered.com^ +||metrics.thomasandfriends.com^ +||metrics.thomastrackmaster.com^ +||metrics.thoughtworks.com^ +||metrics.three.co.uk^ +||metrics.three.ie^ +||metrics.thrifty.com^ +||metrics.thrivent.com^ +||metrics.tiaa-cref.org^ +||metrics.tiaa.org^ +||metrics.ticketmaster.com^ +||metrics.tidewater.aaa.com^ +||metrics.tidycats.com^ +||metrics.tienda.telcel.com^ +||metrics.tim.it^ +||metrics.timberland.com^ +||metrics.timberland.de^ +||metrics.timberland.es^ +||metrics.timberland.it^ +||metrics.time.com^ +||metrics.timeinc.net^ +||metrics.timewarner.com^ +||metrics.timewarnercable.com^ +||metrics.tips.com.au^ +||metrics.tirebusiness.com^ +||metrics.tlc.com^ +||metrics.tmz.com^ +||metrics.tnkase.com^ +||metrics.tntdrama.com^ +||metrics.tommy.com^ +||metrics.tomsofmaine.com^ +||metrics.toofab.com^ +||metrics.toolbox.inter-ikea.com^ +||metrics.top50boutiquehotels.com^ +||metrics.top50cocktailbars.com^ +||metrics.top50gastropubs.com^ +||metrics.topshop.com^ +||metrics.toptenreviews.com^ +||metrics.toryburch.com^ +||metrics.totalwine.com^ +||metrics.townsvillebulletin.com.au^ +||metrics.toyota.com^ +||metrics.toyotacertificados.com^ +||metrics.toyotacertified.com^ +||metrics.toysrus.com^ +||metrics.tp.edu.sg^ +||metrics.tractorsupply.com^ +||metrics.traderonline.com^ +||metrics.trammellcrow.com^ +||metrics.travelchannel.com^ +||metrics.travelmoneyonline.co.uk^ +||metrics.travelodge.com^ +||metrics.trendmicro.co.jp^ +||metrics.trendmicro.com^ +||metrics.trendyol.com^ +||metrics.trovix.com^ +||metrics.trucker.com^ +||metrics.tryg.dk^ +||metrics.tsb.co.uk^ +||metrics.tsn.ca^ +||metrics.ttiinc.com^ +||metrics.tulsaworld.com^ +||metrics.tv2.dk^ +||metrics.tyrashow.warnerbros.com^ +||metrics.tyson.com^ +||metrics.tysonfoodservice.com^ +||metrics.ubi.com^ +||metrics.uhc.com^ +||metrics.ukfoodanddrinkshows.co.uk^ +||metrics.ulsterbank.com^ +||metrics.unipolsai.it^ +||metrics.united-internet.de^ +||metrics.ups.com^ +||metrics.us.playstation.com^ +||metrics.usbank.com^ +||metrics.usfoods.com^ +||metrics.usmint.gov^ +||metrics.uso.org^ +||metrics.usopen.org^ +||metrics.vademecum.es^ +||metrics.valuecityfurniture.com^ +||metrics.vanquis.co.uk^ +||metrics.vans.com.au^ +||metrics.vcm.com^ +||metrics.venclextahcp.com^ +||metrics.verizon.com^ +||metrics.vermontcountrystore.com^ +||metrics.vero.co.nz^ +||metrics.viasat.com^ +||metrics.viceroyhotelsandresorts.com^ +||metrics.viega.de^ +||metrics.vikingline.ee^ +||metrics.virginatlantic.com^ +||metrics.virginaustralia.com^ +||metrics.virginmedia.com^ +||metrics.virtualservers.com^ +||metrics.vision-systems.com^ +||metrics.visitflorida.com^ +||metrics.vitas.com^ +||metrics.vocus.com^ +||metrics.vodafone.co.uk^ +||metrics.vodafone.com.eg^ +||metrics.vodafone.com.tr^ +||metrics.vodafone.es^ +||metrics.vodafone.hu^ +||metrics.vodafone.ro^ +||metrics.vogue.com.au^ +||metrics.volusion.com^ +||metrics.vonage.co.uk^ +||metrics.vonage.com^ +||metrics.vrst.com^ +||metrics.vrtx.com^ +||metrics.vueling.com^ +||metrics.vw.com^ +||metrics.vwfs.com.br^ +||metrics.vwfs.com^ +||metrics.vwfs.cz^ +||metrics.vwfs.de^ +||metrics.vwfs.es^ +||metrics.vwfs.fr^ +||metrics.vwfs.gr^ +||metrics.vwfs.ie^ +||metrics.vwfs.it^ +||metrics.vwfs.mx^ +||metrics.vwfs.pl^ +||metrics.vwfs.pt^ +||metrics.wacken.com^ +||metrics.walgreens.com^ +||metrics.walmart.com^ +||metrics.walmartmoneycard.com^ +||metrics.washingtonpost.com^ +||metrics.waste360.com^ +||metrics.watch.nba.com^ +||metrics.watlow.com^ +||metrics.wdc.com^ +||metrics.wealthmanagement.com^ +||metrics.weeklytimesnow.com.au^ +||metrics.westernunion.com^ +||metrics.westgateresorts.com^ +||metrics.westmarine.com^ +||metrics.westpac.com.au^ +||metrics.wgu.edu^ +||metrics.when.com^ +||metrics.wildadventures.com^ +||metrics.william-reed.com^ +||metrics.williamhill.com^ +||metrics.williamhill.es^ +||metrics.williams-sonoma.com^ +||metrics.wingatehotels.com^ +||metrics.winsc.natwest.com^ +||metrics.winsc.rbs.co.uk^ +||metrics.wm.com^ +||metrics.wmg.com^ +||metrics.wnba.com^ +||metrics.wolterskluwer.com^ +||metrics.womansday.com^ +||metrics.workforce.com^ +||metrics.workfront.com^ +||metrics.workingadvantage.com^ +||metrics.worldbank.org^ +||metrics.worlds50bestbars.com^ +||metrics.worldsbestsommeliersselection.com^ +||metrics.worldsbestvineyards.com^ +||metrics.worldsteakchallenge.com^ +||metrics.worldvision.org^ +||metrics.wu.com^ +||metrics.www.apus.edu^ +||metrics.www.career-education.monster.com^ +||metrics.www.vwfs.de^ +||metrics.wyndhamhotels.com^ +||metrics.wyndhamtrips.com^ +||metrics.xfinity.com^ +||metrics.xofluza.com^ +||metrics.xolairhcp.com^ +||metrics.ybs.co.uk^ +||metrics.yelloh.com^ +||metrics.yellowbook.com^ +||metrics.yellowpages.com^ +||metrics.yola.com^ +||metrics.youandyourwedding.co.uk^ +||metrics.yourlexusdealer.com^ +||metrics.zacks.com^ +||metrics1.citi.com^ +||metrics1.citibank.com^ +||metrics1.citibankonline.com^ +||metrics1.citicards.com^ +||metrics1.experian.com^ +||metrics1.thankyou.com^ +||metrics2.houselogic.com^ +||metrics2.williamhill.com^ +||metricss.bibliotheek.nl^ +||metricssecure.empiretoday.com^ +||metricssecure.luna.com^ +||metricssecure.nmfn.com^ +||metricssecure.northwesternmutual.com^ +||metricstur.www.svenskaspel.se^ +||metrix.511tactical.com^ +||metrix.avon.uk.com^ +||metrix.publix.com^ +||metrix.youravon.com^ +||mix-omniture.rbs.com^ +||mixomniture.rbs.com^ +||mktg.aa.f5.com^ +||ms.topschooljobs.org^ +||msub.mmail.northeast.aaa.com^ +||mtc.jetstar.com^ +||mtc.nhk.or.jp^ +||mtc.qantas.com^ +||mtcs.nhk-ondemand.jp^ +||mtcs.nhk.or.jp^ +||mtr.fluor.com^ +||mtrs.cooecfluor.com^ +||mtrs.fluor.com^ +||mtrs.fluorconstructors.com^ +||mtrs.fluoruniversity.com^ +||mtx.lastminute.com.au^ +||my.iheart.com^ +||myhome.usg.com^ +||n.earthlink.net^ +||n.fitchratings.com^ +||n.hdsupplysolutions.com^ +||n.lexusfinancial.com^ +||n.netquote.com^ +||n.toyotafinancial.com^ +||nanalytics.virginaustralia.com^ +||nats.xing.com^ +||natsp.xing.com^ +||newsletter.sst-apac.test.cjmadobe.com^ +||newtest.wunderman-email.cjm.adobe.com^ +||nmetrics.samsung.com^ +||nmetrics.samsungmobile.com^ +||nocaadobefpc.optus.com.au^ +||nom.familysearch.org^ +||nom.lds.org^ +||nomsc.kpn.com^ +||nossl.aafpfoundation.org^ +||nossl.basco.com^ +||notice-tmo.notice.assurancewireless.com^ +||nsc.coutts.com^ +||nsc.iombank.com^ +||nsc.natwest.com^ +||nsc.natwestgroup.com^ +||nsc.natwestgroupremembers.com^ +||nsc.natwestinternational.com^ +||nsc.rbs.co.uk^ +||nsc.rbs.com^ +||nsc.ulsterbank.co.uk^ +||nsc.ulsterbank.com^ +||nsc.ulsterbank.ie^ +||nscmetrics.shell.com^ +||nsm.dell.com^ +||nsm.sungardas.com^ +||nsmeasure.jstor.org^ +||nsmetrics.adelaidenow.com.au^ +||nsmetrics.couriermail.com.au^ +||nsmetrics.dailytelegraph.com.au^ +||nsmetrics.geelongadvertiser.com.au^ +||nsmetrics.goldcoastbulletin.com.au^ +||nsmetrics.heraldsun.com.au^ +||nsmetrics.levi.com^ +||nsmetrics.ni.com^ +||nsmetrics.theaustralian.com.au^ +||nsmetrics.themercury.com.au^ +||nsmetrics.vogue.com.au^ +||nsstatistics.calphalon.com^ +||nsteq.queensland.com^ +||o.bluewin.ch^ +||o.carmax.com^ +||o.efaxcorporate.com^ +||o.evoicereceptionist.com^ +||o.fandango.com^ +||o.j2.com^ +||o.j2global.com^ +||o.macworld.co.uk^ +||o.medallia.com^ +||o.opentable.co.uk^ +||o.opentable.com^ +||o.otrestaurant.com^ +||o.swisscom.ch^ +||o.webmd.com^ +||o.xbox.com^ +||o8.hyatt.com^ +||ocs.hagerty.com^ +||odc.1und1.de^ +||odc.wunderground.com^ +||oimg.login.cnbc.com^ +||oimg.m.calltheclose.cnbc.com^ +||oimg.nbcsports.com^ +||oimg.nbcuni.com^ +||oimg.universalorlandovacations.com^ +||oimg.universalstudioshollywood.com^ +||om-ssl.consorsbank.de^ +||om.abritel.fr^ +||om.aopa.org^ +||om.burberry.com^ +||om.cbsi.com^ +||om.churchofjesuschrist.org^ +||om.cyberrentals.com^ +||om.dowjoneson.com^ +||om.escapehomes.com^ +||om.etnetera.cz^ +||om.familysearch.org^ +||om.fewo-direkt.de^ +||om.greatrentals.com^ +||om.healthgrades.com^ +||om.homeaway.ca^ +||om.homeaway.co.in^ +||om.hoteis.com^ +||om.hoteles.com^ +||om.hotels.cn^ +||om.hotwire.com^ +||om.lds.org^ +||om.medreps.com^ +||om.norton.com^ +||om.owenscorning.com^ +||om.ringcentral.com^ +||om.rogersmedia.com^ +||om.servicelive.com^ +||om.sportsnet.ca^ +||om.symantec.com^ +||om.travelocity.ca^ +||om.travelocity.com^ +||om.triphomes.com^ +||om.vacationrentals.com^ +||om.vegasmeansbusiness.com^ +||om.venere.com^ +||om.visitbouldercity.com^ +||om.vrbo.com^ +||om.zdnet.com.au^ +||omahasteaks.com.102.122.207.net^ +||ometrics.ameds.com^ +||ometrics.netapp.com^ +||ometrics.warnerbros.com^ +||ometrics.wb.com^ +||omn.americanexpress.com^ +||omn.costumesupercenter.com^ +||omn.crackle.com^ +||omn.hasbro.com^ +||omn.murdoch.edu.au^ +||omn.rockpanel.co.uk^ +||omn.rockwool.com^ +||omn.sonypictures.com^ +||omn.wholesalehalloweencostumes.com^ +||omn2.hasbro.com^ +||omni.alaskaair.com^ +||omni.amsurg.com^ +||omni.avg.com^ +||omni.basspro.com^ +||omni.bluebird.com^ +||omni.bluecrossma.com^ +||omni.cancercenter.com^ +||omni.carecreditprovidercenter.com^ +||omni.cineplex.com^ +||omni.cn.saxobank.com^ +||omni.commercial.pccw.com^ +||omni.copaair.com^ +||omni.deere.com^ +||omni.deloittenet.deloitte.com^ +||omni.djoglobal.com^ +||omni.dsw.com^ +||omni.dxc.com^ +||omni.dxc.technology^ +||omni.elearners.com^ +||omni.genworth.com^ +||omni.holidaycheck.com^ +||omni.holidaycheck.cz^ +||omni.home.saxo^ +||omni.israelbonds.com^ +||omni.istockphoto.com^ +||omni.lightstream.com^ +||omni.nine.com.au^ +||omni.nwa.com^ +||omni.orvis.com^ +||omni.pcm.com^ +||omni.pemco.com^ +||omni.pluralsight.com^ +||omni.rei.com^ +||omni.rockethomes.com^ +||omni.sbicard.com^ +||omni.serve.com^ +||omni.sky.de^ +||omni.suntrust.com^ +||omni.superonline.net^ +||omni.syf.com^ +||omni.synchronybank.com^ +||omni.thermofisher.com^ +||omni.turkcell.com.tr^ +||omni.vikingrivercruises.com^ +||omni.westernasset.com^ +||omni.yellowpages.com^ +||omnifpc.devry.edu^ +||omnifpcs.devry.edu^ +||omnis.basspro.com^ +||omnis.firstdata.com^ +||omnis.pcmall.com^ +||omnistat.teleflora.com^ +||omnistats.jetblue.com^ +||omnistats.teleflora.com^ +||omnit.blinkfitness.com^ +||omnit.pureyoga.com^ +||omniture-dc-sec.cadence.com^ +||omniture-secure.valpak.com^ +||omniture-ssl.direct.asda.com^ +||omniture-ssl.groceries-qa.asda.com^ +||omniture-ssl.groceries.asda.com^ +||omniture-ssl.kia.com^ +||omniture-ssl.wal-mart.com^ +||omniture-ssl.walmart.ca^ +||omniture-ssl.walmart.com^ +||omniture.affarsliv.com^ +||omniture.chip.de^ +||omniture.chip.eu^ +||omniture.corel.com^ +||omniture.direct.asda.com^ +||omniture.groceries-qa.asda.com^ +||omniture.groceries.asda.com^ +||omniture.kcbd.com^ +||omniture.kennametal.com^ +||omniture.lg.com^ +||omniture.money.asda.com^ +||omniture.omgeo.com^ +||omniture.partycity.ca^ +||omniture.partycity.com^ +||omniture.rbs.com^ +||omniture.scotiabank.com^ +||omniture.stuff.co.nz^ +||omniture.theglobeandmail.com^ +||omniture.valpak.com^ +||omniture.waff.com^ +||omniture.wal-mart.com^ +||omniture.walmart.ca^ +||omniture.walmart.com^ +||omniture.yell.com^ +||omniture.yodlee.com^ +||omniture443.partycity.ca^ +||omniture443.partycity.com^ +||omns.americanexpress.com^ +||omns.crackle.com^ +||omns.murdoch.edu.au^ +||ompx.shopbop.com^ +||ompxs.shopbop.com^ +||oms.1067rock.ca^ +||oms.680news.com^ +||oms.avast.com^ +||oms.avg.com^ +||oms.avira.com^ +||oms.barrons.com^ +||oms.breakfasttelevision.ca^ +||oms.ccleaner.com^ +||oms.chatelaine.com^ +||oms.chatrwireless.com^ +||oms.cityline.tv^ +||oms.citynews.ca^ +||oms.citytv.com^ +||oms.country600.com^ +||oms.davita.com^ +||oms.dowjones.com^ +||oms.dowjoneson.com^ +||oms.easy1013.ca^ +||oms.factiva.com^ +||oms.fido.ca^ +||oms.fnlondon.com^ +||oms.fxnowcanada.ca^ +||oms.gendigital.com^ +||oms.goarmy.com^ +||oms.hellomagazine.com^ +||oms.jack969.com^ +||oms.macleans.ca^ +||oms.mansionglobal.com^ +||oms.marketwatch.com^ +||oms.mymcmurray.com^ +||oms.neimanmarcus.com^ +||oms.nhllive.com^ +||oms.norton.com^ +||oms.ocean985.com^ +||oms.omnitv.ca^ +||oms.reputationdefender.com^ +||oms.rogersmedia.com^ +||oms.snnow.ca^ +||oms.symantec.com^ +||oms.travelocity.ca^ +||oms.travelocity.com^ +||oms.tsc.ca^ +||oms.usnews.com^ +||oms.venere.com^ +||oms.wsj.com^ +||oms1.sportsnet.ca^ +||omsc.kpn.com^ +||omtr.financialengines.com^ +||omtr1.partners.salesforce.com^ +||omtr2.partners.salesforce.com^ +||omtrdc.jobsdb.com^ +||omtrdc.jobstreet.co.id^ +||omtrdc.jobstreet.com.my^ +||omtrdc.jobstreet.com.ph^ +||omtrdc.jobstreet.com.sg^ +||omtrdc.jobstreet.com^ +||omtrdc.jobstreet.vn^ +||omtrns.sstats.q8.dk^ +||onem.marketing.onemarketinguxp.com^ +||oopt.norauto.es^ +||opt.delta.com^ +||optimisation.co-oplegalservices.co.uk^ +||optimisation.coop.co.uk^ +||optimisation.data.lloydsbankinggroup.com^ +||optout.info.nordea.fi^ +||optout.info.nordea.no^ +||origin-smetrics.go365.com^ +||origin-target.humana.com^ +||os.efax.es^ +||os.efax.nl^ +||os.efaxcorporate.com^ +||os.evoice.com^ +||os.evoicereceptionist.com^ +||os.fandango.com^ +||os.j2.com^ +||os.j2global.com^ +||os.mbox.com.au^ +||os.mckinseyquarterly.com^ +||os.onebox.com^ +||os.send2fax.com^ +||os.shutterfly.com^ +||os.vudu.com^ +||osc.hrs.com^ +||oscs.palazzolasvegas.com^ +||osimg.discoveruniversal.com^ +||osimg.halloweenhorrornights.com^ +||osimg.nbcuni.com^ +||osimg.universalorlando.co.uk^ +||osimg.universalorlando.com^ +||osimg.universalorlandovacations.com^ +||osimg.universalparks.com^ +||osimg.universalstudioshollywood.com^ +||osimg.windsurfercrs.com^ +||osur.dell.com^ +||otr.kaspersky.ca^ +||otr.kaspersky.co.jp^ +||otr.kaspersky.co.uk^ +||otr.kaspersky.co.za^ +||otr.kaspersky.com.au^ +||otr.kaspersky.com.br^ +||otr.kaspersky.com.tr^ +||otr.kaspersky.com^ +||otr.kaspersky.de^ +||otr.kaspersky.es^ +||otr.kaspersky.fr^ +||otr.kaspersky.it^ +||otr.kaspersky.nl^ +||otr.kaspersky.pt^ +||otr.kaspersky.se^ +||otrack.workday.com^ +||otracks.workday.com^ +||ou.shutterfly.com^ +||outrigger-a.outrigger.com^ +||owa.carhartt.com^ +||ows.ihs.com^ +||owss.ihs.com^ +||p1.danskebank.co.uk^ +||p1.danskebank.dk^ +||p1.danskebank.ie^ +||p2.danskebank.co.uk^ +||p2.danskebank.dk^ +||p2.danskebank.fi^ +||p2.danskebank.no^ +||p2.danskebank.se^ +||page.e.silverfernfarms.com^ +||page.email.key.com^ +||pagedot.deutschepost.de^ +||pages.ajo.knak.link^ +||pages.comunicaciones.ficohsa.com.gt^ +||pages.email.princess.com^ +||pages.guest.princess.com^ +||pages.info.ficohsa.com.pa^ +||pages.mail.puntoscolombia.com^ +||pages.newsletter.avianca.com^ +||pbstats.jpmorgan.com^ +||pc.personalcreations.com^ +||pdmsmrt.buick.ca^ +||pdmsmrt.buick.com^ +||pdmsmrt.cadillac.com^ +||pdmsmrt.cadillaccanada.ca^ +||pdmsmrt.chevrolet.ca^ +||pdmsmrt.chevrolet.com^ +||pdmsmrt.gmc.com^ +||pdmsmrt.gmccanada.ca^ +||petal.calyxflowers.com^ +||plugs.jameco.com^ +||private.cervicalcancer-risk.com^ +||private.roche.com^ +||purpose.fressnapf.at^ +||purpose.fressnapf.ch^ +||purpose.fressnapf.de^ +||purpose.maxizoo.be^ +||purpose.maxizoo.fr^ +||purpose.maxizoo.ie^ +||purpose.maxizoo.pl^ +||re.stjude.org^ +||repdata.12newsnow.com^ +||repdata.9news.com^ +||repdata.app.com^ +||repdata.battlecreekenquirer.com^ +||repdata.caller.com^ +||repdata.clarionledger.com^ +||repdata.coloradoan.com^ +||repdata.courier-journal.com^ +||repdata.dnj.com^ +||repdata.eveningsun.com^ +||repdata.federaltimes.com^ +||repdata.floridatoday.com^ +||repdata.golfweek.com^ +||repdata.jacksonsun.com^ +||repdata.kiiitv.com^ +||repdata.kitsapsun.com^ +||repdata.lansingstatejournal.com^ +||repdata.lcsun-news.com^ +||repdata.ldnews.com^ +||repdata.marionstar.com^ +||repdata.montgomeryadvertiser.com^ +||repdata.naplesnews.com^ +||repdata.news-press.com^ +||repdata.news10.net^ +||repdata.newsleader.com^ +||repdata.northjersey.com^ +||repdata.packersnews.com^ +||repdata.postcrescent.com^ +||repdata.poughkeepsiejournal.com^ +||repdata.sctimes.com^ +||repdata.tallahassee.com^ +||repdata.thv11.com^ +||repdata.usatoday.com^ +||repdata.wcsh6.com^ +||repdata.wzzm13.com^ +||repdata.ydr.com^ +||repdata.yorkdispatch.com^ +||rolt7it2lhml5rxa.edge41.testandtarget.omniture.com^ +||rpt.kidsfootlocker.com^ +||s-adobe.wacoal.jp^ +||s-adobeanalytics.vice.com^ +||s-omniture.yell.com^ +||s-sitecatalyst.work.shiseido.co.jp^ +||s.acxiom.com^ +||s.americanblinds.com^ +||s.ameriprisestats.com^ +||s.blinds.ca^ +||s.blinds.com^ +||s.boydgaming.com^ +||s.bramptonguardian.com^ +||s.cadent.bloomberglaw.com^ +||s.caledonenterprise.com^ +||s.cambridgetimes.ca^ +||s.columbiathreadneedle.ch^ +||s.columbiathreadneedle.co.uk^ +||s.columbiathreadneedle.hk^ +||s.durhamregion.com^ +||s.flamboroughreview.com^ +||s.grace.com^ +||s.guelphmercury.com^ +||s.hamiltonnews.com^ +||s.hdsupplysolutions.com^ +||s.hm.com^ +||s.insidehalton.com^ +||s.insideottawavalley.com^ +||s.justblinds.com^ +||s.lenovo.com^ +||s.lexusfinancial.com^ +||s.metrics.artistsnetwork.com^ +||s.metrics.skyandtelescope.com^ +||s.metroland.com^ +||s.mississauga.com^ +||s.musicradio.com^ +||s.muskokaregion.com^ +||s.newhamburgindependent.ca^ +||s.niagarafallsreview.ca^ +||s.niagarathisweek.com^ +||s.northbaynipissing.com^ +||s.northumberlandnews.com^ +||s.orangeville.com^ +||s.ourwindsor.ca^ +||s.parrysound.com^ +||s.rosettastone.co.uk^ +||s.rosettastone.com^ +||s.rosettastone.de^ +||s.rosettastone.eu^ +||s.sachem.ca^ +||s.save.ca^ +||s.simcoe.com^ +||s.stcatharinesstandard.ca^ +||s.tccc-comms.com^ +||s.testneedle.co.uk^ +||s.theifp.ca^ +||s.thepeterboroughexaminer.com^ +||s.therecord.com^ +||s.thespec.com^ +||s.thestar.com^ +||s.toronto.com^ +||s.toyotafinancial.com^ +||s.waterloochronicle.ca^ +||s.wellandtribune.ca^ +||s.wheels.ca^ +||s.yorkregion.com^ +||s02.bestsecret.com^ +||s1.subaru.com^ +||sa.adidas.ae^ +||sa.adidas.be^ +||sa.adidas.ca^ +||sa.adidas.ch^ +||sa.adidas.cn^ +||sa.adidas.co.in^ +||sa.adidas.co.uk^ +||sa.adidas.co^ +||sa.adidas.com.ar^ +||sa.adidas.com.au^ +||sa.adidas.com.br^ +||sa.adidas.com.tr^ +||sa.adidas.com.vn^ +||sa.adidas.com^ +||sa.adidas.cz^ +||sa.adidas.de^ +||sa.adidas.dk^ +||sa.adidas.es^ +||sa.adidas.fi^ +||sa.adidas.fr^ +||sa.adidas.gr^ +||sa.adidas.hu^ +||sa.adidas.ie^ +||sa.adidas.it^ +||sa.adidas.jp^ +||sa.adidas.mx^ +||sa.adidas.nl^ +||sa.adidas.no^ +||sa.adidas.pl^ +||sa.adidas.pt^ +||sa.adidas.se^ +||sa.adidas.sk^ +||sa.bankofinternet.com^ +||sa.cookingchanneltv.com^ +||sa.discovery.com^ +||sa.discoveryplus.com^ +||sa.discoveryplus.in^ +||sa.diynetwork.com^ +||sa.dyson.no^ +||sa.eurosport.co.uk^ +||sa.eurosport.com^ +||sa.fchp.org^ +||sa.foodnetwork.com^ +||sa.hgtv.com^ +||sa.investigationdiscovery.com^ +||sa.oprah.com^ +||sa.reebok.co.uk^ +||sa.tactics.com^ +||sa.tlc.com^ +||sa.travelchannel.com^ +||saa-aem.hamamatsu.com^ +||saa.247sports.com^ +||saa.cbs.com^ +||saa.cbsi.com^ +||saa.cbsnews.com^ +||saa.cbssports.com^ +||saa.cnet.com^ +||saa.collegesportslive.com^ +||saa.comicbook.com^ +||saa.dabl.com^ +||saa.datasheets360.com^ +||saa.daveandbusters.com^ +||saa.drphil.com^ +||saa.dyson.ae^ +||saa.dyson.at^ +||saa.dyson.be^ +||saa.dyson.ch^ +||saa.dyson.co.il^ +||saa.dyson.co.kr^ +||saa.dyson.co.nz^ +||saa.dyson.co.th^ +||saa.dyson.co.uk^ +||saa.dyson.co.za^ +||saa.dyson.com.au^ +||saa.dyson.com.ee^ +||saa.dyson.com.kw^ +||saa.dyson.com.ro^ +||saa.dyson.com.sg^ +||saa.dyson.com.tr^ +||saa.dyson.com^ +||saa.dyson.cz^ +||saa.dyson.de^ +||saa.dyson.dk^ +||saa.dyson.es^ +||saa.dyson.fr^ +||saa.dyson.hk^ +||saa.dyson.hr^ +||saa.dyson.hu^ +||saa.dyson.ie^ +||saa.dyson.in^ +||saa.dyson.it^ +||saa.dyson.lt^ +||saa.dyson.lu^ +||saa.dyson.lv^ +||saa.dyson.mx^ +||saa.dyson.my^ +||saa.dyson.nl^ +||saa.dyson.no^ +||saa.dyson.pl^ +||saa.dyson.pt^ +||saa.dyson.qa^ +||saa.dyson.se^ +||saa.dyson.sk^ +||saa.dyson.vn^ +||saa.dysoncanada.ca^ +||saa.etonline.com^ +||saa.gamespot.com^ +||saa.giantbomb.com^ +||saa.globalspec.com^ +||saa.irvinecompanyapartments.com^ +||saa.last.fm^ +||saa.maxpreps.com^ +||saa.metacritic.com^ +||saa.mysmile.wellfit.com^ +||saa.pacificdentalservices.com^ +||saa.paramountplus.com^ +||saa.paramountpressexpress.com^ +||saa.pluto.tv^ +||saa.popculture.com^ +||saa.poptv.com^ +||saa.rachaelrayshow.com^ +||saa.smilegeneration.com^ +||saa.smithsonianchannel.com^ +||saa.sparebank1.no^ +||saa.sportsline.com^ +||saa.startrek.com^ +||saa.tallink.com^ +||saa.techrepublic.com^ +||saa.tescomobile.com^ +||saa.thedoctorstv.com^ +||saa.thedrewbarrymoreshow.com^ +||saa.tvguide.com^ +||saa.viacomcbspressexpress.com^ +||saa.wowma.jp^ +||saa.zdnet.com^ +||saadata.career.netjets.com^ +||saadata.executivejetmanagement.com^ +||saadata.netjets.com^ +||saainfo.anz.co.nz^ +||saam.gumtree.com.au^ +||saametrics.aktia.fi^ +||saametrics.vaisala.com^ +||saat.dow.com^ +||sabxt.teeoff.com^ +||saccess.hikaritv.net^ +||sace.aaa.com^ +||sadb.superrtl-licensing.de^ +||sadb.superrtl.de^ +||sadb.toggo.de^ +||sadb.toggoeltern.de^ +||sadbelytics.munichre.com^ +||sadbmetrics.15kvalencia.es^ +||sadbmetrics.7canibales.com^ +||sadbmetrics.abc.es^ +||sadbmetrics.alhambraventure.com^ +||sadbmetrics.andorrataste.com^ +||sadbmetrics.aupaathletic.com^ +||sadbmetrics.autocasion.com^ +||sadbmetrics.b-venture.com^ +||sadbmetrics.burgosconecta.es^ +||sadbmetrics.canarias7.es^ +||sadbmetrics.carreraempresas.com^ +||sadbmetrics.carteleraasturias.com^ +||sadbmetrics.cmacomunicacion.com^ +||sadbmetrics.congresomigueldelibes.es^ +||sadbmetrics.diariosur.es^ +||sadbmetrics.diariovasco.com^ +||sadbmetrics.donostimasterscup.com^ +||sadbmetrics.e-movilidad.com^ +||sadbmetrics.e-volucion.es^ +||sadbmetrics.elbalcondemateo.es^ +||sadbmetrics.elbierzonoticias.com^ +||sadbmetrics.elcomercio.es^ +||sadbmetrics.elcorreo.com^ +||sadbmetrics.elcorreoclasificados.com^ +||sadbmetrics.eldiariomontanes.es^ +||sadbmetrics.elnortedecastilla.es^ +||sadbmetrics.finanza.eus^ +||sadbmetrics.funandseriousgamefestival.com^ +||sadbmetrics.granadablogs.com^ +||sadbmetrics.habitatsoft.com^ +||sadbmetrics.hoy.es^ +||sadbmetrics.hoycinema.com^ +||sadbmetrics.huelva24.com^ +||sadbmetrics.ideal.es^ +||sadbmetrics.innova-bilbao.com^ +||sadbmetrics.lagacetadesalamanca.es^ +||sadbmetrics.larioja.com^ +||sadbmetrics.lasprovincias.es^ +||sadbmetrics.laverdad.es^ +||sadbmetrics.lavozdegalicia.es^ +||sadbmetrics.lavozdigital.es^ +||sadbmetrics.leonoticias.com^ +||sadbmetrics.localdigitalkit.com^ +||sadbmetrics.lomejordelvinoderioja.com^ +||sadbmetrics.madridfusion.net^ +||sadbmetrics.malagaenlamesa.com^ +||sadbmetrics.masterelcorreo.com^ +||sadbmetrics.miperiodicodigital.com^ +||sadbmetrics.mondragoncitychallenge.com^ +||sadbmetrics.motocasion.com^ +||sadbmetrics.muevetebasket.es^ +||sadbmetrics.mujerhoy.com^ +||sadbmetrics.nextspain.es^ +||sadbmetrics.nuevosvecinos.com^ +||sadbmetrics.oferplan.com^ +||sadbmetrics.pidecita.com^ +||sadbmetrics.pisocompartido.com^ +||sadbmetrics.pisos.cat^ +||sadbmetrics.pisos.com^ +||sadbmetrics.relevo.com^ +||sadbmetrics.rendibu.com^ +||sadbmetrics.rtve.es^ +||sadbmetrics.salamancahoy.es^ +||sadbmetrics.salon-sie.com^ +||sadbmetrics.sansebastiangastronomika.com^ +||sadbmetrics.suenasur.com^ +||sadbmetrics.surinenglish.com^ +||sadbmetrics.todoalicante.es^ +||sadbmetrics.topcomparativas.com^ +||sadbmetrics.turium.es^ +||sadbmetrics.tusanuncios.com^ +||sadbmetrics.tvr.es^ +||sadbmetrics.unoauto.com^ +||sadbmetrics.vamosacorrer.com^ +||sadbmetrics.vehiculosdeocasion.eus^ +||sadbmetrics.vehiculosocasionalava.com^ +||sadbmetrics.vehiculosocasionlarioja.com^ +||sadbmetrics.vidasolidaria.com^ +||sadbmetrics.vocento.com^ +||sadbmetrics.vocentoeventos.com^ +||sadbmetrics.welife.es^ +||sadbmetrics.womennow.es^ +||sadbmetrics.worldcanic.com^ +||sadbmetrics.xlsemanal.com^ +||sadbmetrics.zendalibros.com^ +||sadobe.autoscout24.at^ +||sadobe.autoscout24.be^ +||sadobe.autoscout24.de^ +||sadobe.autoscout24.es^ +||sadobe.autoscout24.fr^ +||sadobe.autoscout24.it^ +||sadobe.autoscout24.lu^ +||sadobe.autoscout24.nl^ +||sadobe.dentsu-ho.com^ +||sadobe.falabella.com.co^ +||sadobe.falabella.com.pe^ +||sadobe.falabella.com^ +||sadobe.homecenter.com.co^ +||sadobe.mercuryinsurance.com^ +||sadobe.sodimac.com.ar^ +||sadobeanalytics.geico.com^ +||sadobeanalytics.medline.com^ +||sadobemarketing.boden.co.uk^ +||sadobemarketing.boden.eu^ +||sadobemarketing.boden.fr^ +||sadobemarketing.bodenclothing.com.au^ +||sadobemarketing.bodendirect.at^ +||sadobemarketing.bodendirect.de^ +||sadobemarketing.bodenusa.com^ +||sadobemetrics.dr.dk^ +||sadobemetrics.la-z-boy.com^ +||saec-metrics.base.be^ +||saec-metrics.telenet.be^ +||sal.milanoo.com^ +||sam.manager-magazin.de^ +||samc.frankly.ch^ +||samc.swisscanto.com^ +||samc.zkb.ch^ +||samc.zuerilaufcup.ch^ +||same.zkb.ch^ +||same.zkb.co.uk^ +||sametrics.finn.no^ +||sams.11freunde.de^ +||sams.spiegel.de^ +||samt.frankly.ch^ +||samt.swisscanto.com^ +||samt.zkb.ch^ +||sanalytics.adobe.tp.gskpro.com^ +||sanalytics.adultswim.co.uk^ +||sanalytics.allianz-assistance.co.uk^ +||sanalytics.amig.com^ +||sanalytics.autozone.com^ +||sanalytics.bd.com^ +||sanalytics.boing.es^ +||sanalytics.boingtv.it^ +||sanalytics.boomerang-tv.hu^ +||sanalytics.boomerang-tv.pl^ +||sanalytics.boomerang-tv.ro^ +||sanalytics.boomerang.asia^ +||sanalytics.boomerang.com.br^ +||sanalytics.boomerangmena.com^ +||sanalytics.boomerangtv.co.uk^ +||sanalytics.boomerangtv.com.au^ +||sanalytics.boomerangtv.de^ +||sanalytics.boomerangtv.fr^ +||sanalytics.boomerangtv.it^ +||sanalytics.boomerangtv.nl^ +||sanalytics.boomerangtv.se^ +||sanalytics.box.com^ +||sanalytics.boxlunch.com^ +||sanalytics.canaltnt.es^ +||sanalytics.cartoonito.co.uk^ +||sanalytics.cartoonito.com.br^ +||sanalytics.cartoonito.com.tr^ +||sanalytics.cartoonito.de^ +||sanalytics.cartoonito.fr^ +||sanalytics.cartoonito.hu^ +||sanalytics.cartoonito.it^ +||sanalytics.cartoonito.pl^ +||sanalytics.cartoonito.pt^ +||sanalytics.cartoonito.ro^ +||sanalytics.cartoonitoafrica.com^ +||sanalytics.cartoonitocheidea.it^ +||sanalytics.cartoonnetwork.bg^ +||sanalytics.cartoonnetwork.cl^ +||sanalytics.cartoonnetwork.co.uk^ +||sanalytics.cartoonnetwork.com.ar^ +||sanalytics.cartoonnetwork.com.au^ +||sanalytics.cartoonnetwork.com.br^ +||sanalytics.cartoonnetwork.com.co^ +||sanalytics.cartoonnetwork.com.mx^ +||sanalytics.cartoonnetwork.com.tr^ +||sanalytics.cartoonnetwork.com.ve^ +||sanalytics.cartoonnetwork.cz^ +||sanalytics.cartoonnetwork.de^ +||sanalytics.cartoonnetwork.dk^ +||sanalytics.cartoonnetwork.es^ +||sanalytics.cartoonnetwork.fr^ +||sanalytics.cartoonnetwork.hu^ +||sanalytics.cartoonnetwork.it^ +||sanalytics.cartoonnetwork.jp^ +||sanalytics.cartoonnetwork.nl^ +||sanalytics.cartoonnetwork.no^ +||sanalytics.cartoonnetwork.pl^ +||sanalytics.cartoonnetwork.pt^ +||sanalytics.cartoonnetwork.ro^ +||sanalytics.cartoonnetwork.se^ +||sanalytics.cartoonnetworkarabic.com^ +||sanalytics.cartoonnetworkasia.com^ +||sanalytics.cartoonnetworkclimatechampions.com^ +||sanalytics.cartoonnetworkhq.com^ +||sanalytics.cartoonnetworkindia.com^ +||sanalytics.cartoonnetworkkorea.com^ +||sanalytics.cartoonnetworkla.com^ +||sanalytics.cartoonnetworkme.com^ +||sanalytics.cdf.cl^ +||sanalytics.cha-ching.com^ +||sanalytics.chilevision.cl^ +||sanalytics.chvnoticias.cl^ +||sanalytics.cnfanart.com^ +||sanalytics.cnnchile.com^ +||sanalytics.combatefreestyle.com^ +||sanalytics.disneyplus.com^ +||sanalytics.enterprise.spectrum.com^ +||sanalytics.esporteinterativo.com.br^ +||sanalytics.ewz.ch^ +||sanalytics.expomaritt.com^ +||sanalytics.express.de^ +||sanalytics.facilitiesshow.com^ +||sanalytics.fietsverzekering.nl^ +||sanalytics.firstbankcard.com^ +||sanalytics.firstnational.com^ +||sanalytics.fnbolending.com^ +||sanalytics.fnbsd.com^ +||sanalytics.fsbloomis.com^ +||sanalytics.futuro360.com^ +||sanalytics.gladbachlive.de^ +||sanalytics.hallmark.com^ +||sanalytics.hottopic.com^ +||sanalytics.houghtonstatebank.com^ +||sanalytics.ingredion.com^ +||sanalytics.johnson.ca^ +||sanalytics.kbdesignlondon.com^ +||sanalytics.ksta.de^ +||sanalytics.landmands.com^ +||sanalytics.latamwbd.com^ +||sanalytics.lovemoney.com^ +||sanalytics.mail-corp.com^ +||sanalytics.makro.cz^ +||sanalytics.makro.es^ +||sanalytics.makro.nl^ +||sanalytics.makro.pl^ +||sanalytics.makro.pt^ +||sanalytics.metro.co.in^ +||sanalytics.metro.de^ +||sanalytics.metro.fr^ +||sanalytics.metro.it^ +||sanalytics.mondotv.jp^ +||sanalytics.mopo.de^ +||sanalytics.mz-web.de^ +||sanalytics.nba.com^ +||sanalytics.ncaa.com^ +||sanalytics.powernewz.ch^ +||sanalytics.proactiv.com^ +||sanalytics.radioberg.de^ +||sanalytics.radiobonn.de^ +||sanalytics.radioerft.de^ +||sanalytics.radioeuskirchen.de^ +||sanalytics.radiokoeln.de^ +||sanalytics.radioleverkusen.de^ +||sanalytics.radiorur.de^ +||sanalytics.ratioform.ch^ +||sanalytics.ratioform.it^ +||sanalytics.rbs.com.au^ +||sanalytics.rbs.com^ +||sanalytics.rbs.nl^ +||sanalytics.rbsbank.dk^ +||sanalytics.rbsbank.no^ +||sanalytics.rundschau-online.de^ +||sanalytics.safestepskids.com^ +||sanalytics.safety-health-expo.co.uk^ +||sanalytics.scsbnet.com^ +||sanalytics.securebanklogin.com^ +||sanalytics.skinny.co.nz^ +||sanalytics.smart.mercedes-benz.com^ +||sanalytics.southpointcasino.com^ +||sanalytics.spark.co.nz^ +||sanalytics.sydney.edu.au^ +||sanalytics.sydneyuniversity.cn^ +||sanalytics.tabichan.jp^ +||sanalytics.tbs.com^ +||sanalytics.tcm.com^ +||sanalytics.tcmuk.tv^ +||sanalytics.teentitanstoptalent.com^ +||sanalytics.tnt-tv.de^ +||sanalytics.tnt-tv.pl^ +||sanalytics.tnt-tv.ro^ +||sanalytics.tnt.africa^ +||sanalytics.tntdrama.com^ +||sanalytics.tntgo.tv^ +||sanalytics.tntsports.cl^ +||sanalytics.tntsports.com.ar^ +||sanalytics.tntsports.com.br^ +||sanalytics.toonamiafrica.com^ +||sanalytics.tributarycapital.com^ +||sanalytics.trutv.com^ +||sanalytics.verizon.com^ +||sanalytics.verizonenterprise.com^ +||sanalytics.verizonwireless.com^ +||sanalytics.visible.com^ +||sanalytics.warnertv.de^ +||sanalytics.warnertv.fr^ +||sanalytics.warnertv.pl^ +||sanalytics.warnertv.ro^ +||sanalytics.warnertvspiele.de^ +||sanalytics.washingtoncountybank.com^ +||sanalytics.wbd.com^ +||sanalytics.wideroe.no^ +||sanalytics.yorkstatebank.com^ +||sanl.champssports.ca^ +||sanl.champssports.com^ +||sanl.eastbay.com^ +||sanl.footaction.com^ +||sanl.footlocker.at^ +||sanl.footlocker.be^ +||sanl.footlocker.ca^ +||sanl.footlocker.co.nz^ +||sanl.footlocker.co.uk^ +||sanl.footlocker.com.au^ +||sanl.footlocker.com^ +||sanl.footlocker.cz^ +||sanl.footlocker.de^ +||sanl.footlocker.dk^ +||sanl.footlocker.es^ +||sanl.footlocker.fr^ +||sanl.footlocker.gr^ +||sanl.footlocker.hu^ +||sanl.footlocker.ie^ +||sanl.footlocker.it^ +||sanl.footlocker.kr^ +||sanl.footlocker.lu^ +||sanl.footlocker.nl^ +||sanl.footlocker.no^ +||sanl.footlocker.pl^ +||sanl.footlocker.pt^ +||sanl.footlocker.se^ +||sanl.six02.com^ +||sanmet.originenergy.com.au^ +||sappmetrics.sprint.com^ +||sasc.solidworks.com^ +||satarget.csu.edu.au^ +||satarget.npubank.com.au^ +||satarget.southaustralia.com^ +||satgt.grafana.com^ +||sats.manager-magazin.de^ +||sats.spiegel.de^ +||sawap.equifax.com^ +||sb.mynewplace.com^ +||sbcomniture.focus.de^ +||sbrands.lookfantastic.com^ +||sc-nossl.speakeasy.net^ +||sc.blurb.fr^ +||sc.cmt.com^ +||sc.coutts.com^ +||sc.cvent.com^ +||sc.disneylandparis.com^ +||sc.doctorwho.tv^ +||sc.hl.co.uk^ +||sc.hm.com^ +||sc.holtsmilitarybank.co.uk^ +||sc.icarly.com^ +||sc.infor.com^ +||sc.iombank.com^ +||sc.lacapitale.com^ +||sc.locator-rbs.co.uk^ +||sc.lombard.co.uk^ +||sc.lombard.ie^ +||sc.londonlive.co.uk^ +||sc.metrics-shell.com^ +||sc.mtv.co.uk^ +||sc.mtv.tv^ +||sc.mtvne.com^ +||sc.muji.net^ +||sc.natwest.com^ +||sc.natwestgroup.com^ +||sc.natwestgroupremembers.com^ +||sc.natwestinternational.com^ +||sc.neteller.com^ +||sc.nick.co.uk^ +||sc.nick.com.au^ +||sc.nick.com^ +||sc.nick.tv^ +||sc.nickelodeon.se^ +||sc.nickelodeonarabia.com^ +||sc.nickjr.com^ +||sc.nicktoons.co.uk^ +||sc.paramount.com^ +||sc.paramountnetwork.com^ +||sc.payback.de^ +||sc.rbos.com^ +||sc.rbs.co.uk^ +||sc.rbs.com^ +||sc.restplatzboerse.de^ +||sc.rhapsody.com^ +||sc.sanitas.com^ +||sc.sonystyle.com.cn^ +||sc.supertv.it^ +||sc.ulsterbank.co.uk^ +||sc.ulsterbank.ie^ +||sc.unitymedia.de^ +||sc.vmware.com^ +||sc.voanews.com^ +||sc.wa.gto.db.com^ +||sc2.constantcontact.com^ +||sc2.infor.com^ +||sc2metrics.exacttarget.com^ +||scadobe.vpay.co.kr^ +||scanalytics.wral.com^ +||sci.intuit.ca^ +||sci.intuit.com^ +||sci.quickbooks.com^ +||scmetrics.exacttarget.com^ +||scmetrics.shell.com^ +||scmetrics.vodafone.it^ +||scnd.landsend.co.uk^ +||scnd.landsend.com^ +||scnd.landsend.de^ +||scode.randomhouse.com^ +||sconnectstats.mckesson.com^ +||scookies-adobe.24plus.be^ +||scookies-adobe.cbc.be^ +||scookies-adobe.kbc-group.com^ +||scookies-adobe.kbc.be^ +||scookies-adobe.kbc.com^ +||scookies-adobe.kbcbrussels.be^ +||scookies-adobe.kbcsecurities.com^ +||scookies-adobe.kching.be^ +||scp.deltadentalwa.com^ +||scrippscookingchannel.cookingchanneltv.com^ +||scrippsfoodnetnew.foodnetwork.com^ +||scrippshgtvnew.hgtv.com^ +||scs.allsecur.nl^ +||scs.arcteryx.com^ +||scs.lacapitale.com^ +||scs.lifenet-seimei.co.jp^ +||scsmetrics.ho-mobile.it^ +||scsmetrics.vodafone.it^ +||sdata.avid.com^ +||sdata.chelseafc.com^ +||sdata.connection.com^ +||sdata.efficientlearning.com^ +||sdata.govconnection.com^ +||sdata.lifesize.com^ +||sdata.macconnection.com^ +||sdata.sealedair.com^ +||sdata.wiley.com^ +||sdc.allianz-autowelt.com^ +||sdc.allianz-autowelt.de^ +||sdc.allianz-maklerakademie.de^ +||sdc.allianz-vertrieb.de^ +||sdc.allianz-vor-ort.de^ +||sdc.allianz.de^ +||sdc.allianzpp.com^ +||sdc.allvest.de^ +||sdc.aware.com.au^ +||sdc.azt-automotive.com^ +||sdc.firmenonline.de^ +||sdc.firststatesuper.com.au^ +||sdc.kfz-steuercheck.de^ +||sdc.kvm-ga.de^ +||sdc.meinebav.com^ +||sdc.risikolebensversicherungen.com^ +||sdc2.credit-suisse.com^ +||sdcs.felissimo.co.jp^ +||sdome.underarmour.co.jp^ +||sec-analytics.panasonic.co.uk^ +||secmetrics.bkb.ch^ +||secmetrics.friendscout24.it^ +||secmetrics.friendscout24.nl^ +||secmetrics.leggmason.com^ +||secmetrics.rakuten-checkout.de^ +||secmetrics.schaefer-shop.at^ +||secmetrics.schaefer-shop.be^ +||secmetrics.schaefer-shop.ch^ +||secmetrics.schaefer-shop.de^ +||secmetrics.schaefer-shop.nl^ +||secu.hagerty.ca^ +||secu.hagerty.com^ +||secu.hagertyagent.com^ +||secu.hagertybroker.ca^ +||secure-stat.canal-plus.com^ +||secure.adata.ca.com^ +||secure.analytics.crowneplaza.com^ +||secure.analytics.intercontinental.com^ +||secure.diet.mayoclinic.org^ +||secure.realwomenofphiladelphia.ca^ +||secure.sigmaaldrich.com^ +||secure.valpak.com^ +||secure.whattoexpect.com^ +||secureae-edge.ikea.com^ +||secureanalytics.avis.at^ +||secureanalytics.avis.be^ +||secureanalytics.avis.ch^ +||secureanalytics.avis.co.uk^ +||secureanalytics.avis.com.pt^ +||secureanalytics.avis.cz^ +||secureanalytics.avis.de^ +||secureanalytics.avis.dk^ +||secureanalytics.avis.es^ +||secureanalytics.avis.fr^ +||secureanalytics.avis.lu^ +||secureanalytics.avis.nl^ +||secureanalytics.avis.no^ +||secureanalytics.avis.se^ +||secureanalytics.avisautonoleggio.it^ +||secureanalytics.budget.at^ +||secureanalytics.budget.co.uk^ +||secureanalytics.budget.de^ +||secureanalytics.budget.dk^ +||secureanalytics.budget.es^ +||secureanalytics.budget.fr^ +||secureanalytics.budget.no^ +||secureanalytics.budget.se^ +||secureanalytics.budgetautonoleggio.it^ +||secureanalytics.nedbank.co.za^ +||secureclicks.geae.com^ +||secureclicks.geaviation.com^ +||securedata.bestellen-mijnspar.be^ +||securedata.bioplanet.be^ +||securedata.collectandgo.be^ +||securedata.collectandgo.fr^ +||securedata.collishop.be^ +||securedata.colruyt.be^ +||securedata.colruyt.fr^ +||securedata.colruytgroup.com^ +||securedata.colruytgroupacademy.be^ +||securedata.commander-monspar.be^ +||securedata.cru.be^ +||securedata.dats24.be^ +||securedata.dreambaby.be^ +||securedata.dreamland.be^ +||securedata.mijnspar.be^ +||securedata.monspar.be^ +||securedata.okay.be^ +||securedata.retailpartnerscolruytgroup.be^ +||securedata.solucious.be^ +||securedata.unsw.edu.au^ +||secureflashplayerfeedback.adobe.com^ +||securemetrics-z.v.aaplimg.com^ +||securemetrics.athletawell.com^ +||securemetrics.blackrock.com^ +||securemetrics.brhome.com^ +||securemetrics.dailycandy.com^ +||securemetrics.gap.co.jp^ +||securemetrics.gap.co.uk^ +||securemetrics.gap.eu^ +||securemetrics.gpsuniforms.com^ +||securemetrics.marthastewart.com^ +||securemetrics.nbnco.com.au^ +||securestats.callawaygolf.com^ +||securestats.odysseygolf.com^ +||securetags.aeroterra.com^ +||securetags.esri-portugal.pt^ +||securetags.esri.ca^ +||securetags.esri.ch^ +||securetags.esri.cl^ +||securetags.esri.co^ +||securetags.esri.com.tr^ +||securetags.esri.com^ +||securetags.esri.de^ +||securetags.esri.fi^ +||securetags.esri.in^ +||securetags.esri.nl^ +||securetags.esri.ro^ +||securetags.esri.rw^ +||securetags.esrichina.hk^ +||securetags.esriuk.com^ +||securetags.geotecnologias.com^ +||securetags.gisbaltic.eu^ +||securetags.igeo.com.bo^ +||securetags.img.com.br^ +||securetags.maps.com^ +||securetags.sigsa.info^ +||securetarget.nedbank.co.za^ +||securetenilstats.turner.com^ +||securetracking.huntington.com^ +||securewebhelp.govmint.com^ +||sedge.aarp.org^ +||sedge.nfl.com^ +||selectronics.sony-latin.com^ +||service.vrp.com^ +||serviceo.comcast.net^ +||serviceo.xfinity.com^ +||serviceos.comcast.net^ +||serviceos.xfinity.com^ +||sfeedback.equa.cz^ +||sfirst.penfed.org^ +||sfirstparty.here.com^ +||sfpc.changehealthcare.com^ +||sgms.greatschools.org^ +||sgw-analytics.panasonic.com^ +||shop.lids.ca^ +||shqmetrics.sony.com^ +||sicas.ikea.com^ +||sicas.ikea.net^ +||sig.ig.com^ +||sig.igmarkets.com^ +||sig.nadex.com^ +||simg.bwin.be^ +||simg.bwin.com^ +||simg.bwin.es^ +||simg.bwin.fr^ +||simg.bwin.it^ +||simg.discovery.com^ +||simg.gamebookers.com^ +||simg.interhome.at^ +||simg.interhome.be^ +||simg.interhome.com^ +||simg.interhome.de^ +||simg.interhome.fr^ +||simg.interhome.ie^ +||simg.interhome.no^ +||simg.interhome.pl^ +||simg.interhome.se^ +||simg.mgsgamesonline.com^ +||simg.premium.com^ +||simg.sh.bwin.de^ +||simg.yemeksepeti.com^ +||sinfo.dtcidev.co^ +||sinmo.chasecenter.com^ +||sit-metrics.nab.com.au^ +||sit-smetrics.nab.com.au^ +||site.emarketer.com^ +||site.johnlewis-insurance.com^ +||site.waitrose.com^ +||site2.emarketer.com^ +||sitecat.eset.com^ +||sitecat.troweprice.com^ +||sitecatalyst.pts.se^ +||sitecatalyst.smartsource.com^ +||sitecatalyst.work.shiseido.co.jp^ +||sitecatalysts.a-q-f.com^ +||sitecatalysts.saisoncard.co.jp^ +||sitecats.troweprice.com^ +||sitectlyst.saksfifthavenue.com^ +||sjourney.aarp.org^ +||sjourney.penfed.org^ +||sjremetrics.java.com^ +||slaunch.shopcanopy.com^ +||slaunch.spectrumtherapeutics.com^ +||sm.delltechnologies.com^ +||sm.edweek.org^ +||sm.macys.com^ +||sm.stjude.org^ +||sm.sungardas.com^ +||sm.trb.com^ +||smatning.volkswagen.se^ +||smatrix.hbo.com^ +||smeasurement.fcc-fac.ca^ +||smeasurement.infiniti.ca^ +||smeasurement.nissan.ca^ +||smetc.banfield.com^ +||smetric.4imprint.com^ +||smetric.ads.microsoft.com^ +||smetric.atg.se^ +||smetric.bahamabreeze.com^ +||smetric.baylorhealth.com^ +||smetric.betway.com^ +||smetric.bimsplus24.pl^ +||smetric.biogen.com^ +||smetric.carview.co.jp^ +||smetric.changiairport.com^ +||smetric.cheddars.com^ +||smetric.darden.com^ +||smetric.dtgonlineplus.de^ +||smetric.e-nichii.net^ +||smetric.eddiev.com^ +||smetric.efgonlineplus.de^ +||smetric.gconlineplus.at^ +||smetric.gconlineplus.de^ +||smetric.gebrueder-goetz.de^ +||smetric.gutonlineplus.de^ +||smetric.hilton.com^ +||smetric.hti24.pl^ +||smetric.htionlineplus.de^ +||smetric.hydrosolar24.pl^ +||smetric.iccu.com^ +||smetric.itgonlineplus.de^ +||smetric.lo.movement.com^ +||smetric.longhornsteakhouse.com^ +||smetric.m.nissan-global.com^ +||smetric.malaysiaairlines.com^ +||smetric.mandatum.fi^ +||smetric.markenschuhe.de^ +||smetric.millenniumhotels.com^ +||smetric.movement.com^ +||smetric.nfgonlineplus.de^ +||smetric.olivegarden.com^ +||smetric.panpacific.com^ +||smetric.parkroyalhotels.com^ +||smetric.philosophy.com^ +||smetric.redlobster.com^ +||smetric.sales.vikingline.com^ +||smetric.schwab.com^ +||smetric.schwabinstitutional.com^ +||smetric.schwabplan.com^ +||smetric.seasons52.com^ +||smetric.shop.com^ +||smetric.sydneywater.com.au^ +||smetric.tfgonlineplus.de^ +||smetric.thecapitalburger.com^ +||smetric.thecapitalgrille.com^ +||smetric.trulia.com^ +||smetric.tsite.jp^ +||smetric.volkswagen-nutzfahrzeuge.de^ +||smetric.volkswagen-veicolicommerciali.it^ +||smetric.volkswagen.ch^ +||smetric.volkswagen.com.au^ +||smetric.volkswagen.com^ +||smetric.volkswagen.de^ +||smetric.volkswagen.es^ +||smetric.volkswagen.ie^ +||smetric.volkswagen.it^ +||smetric.volkswagen.pl^ +||smetric.volkswagen.ru^ +||smetric.vw.ca^ +||smetric.vw.com.tr^ +||smetric.worldcat.org^ +||smetric.yardhouse.com^ +||smetricas.fgv.br^ +||smetrics-cns.panasonic.com^ +||smetrics-ieeexplore.ieee.org^ +||smetrics-smartcommerce.amazon.in^ +||smetrics.1011bigfm.com^ +||smetrics.1031freshradio.ca^ +||smetrics.1043freshradio.ca^ +||smetrics.1045freshradio.ca^ +||smetrics.1075daverocks.com^ +||smetrics.10daily.com.au^ +||smetrics.10play.com.au^ +||smetrics.1792bourbon.com^ +||smetrics.1800contacts.com^ +||smetrics.21nova.com^ +||smetrics.24hourfitness.com^ +||smetrics.28degreescard.com.au^ +||smetrics.360dx.com^ +||smetrics.3838.com^ +||smetrics.3cat.cat^ +||smetrics.3kronor.se^ +||smetrics.3m.com^ +||smetrics.48.ie^ +||smetrics.50southcapital.com^ +||smetrics.7-elevenfleet.com^ +||smetrics.7eleven.com.au^ +||smetrics.915thebeat.com^ +||smetrics.925thechuck.ca^ +||smetrics.931freshradio.ca^ +||smetrics.963bigfm.com^ +||smetrics.aa.co.uk^ +||smetrics.aa.com^ +||smetrics.aaas.org^ +||smetrics.aaasouth.com^ +||smetrics.aadimbalance.com^ +||smetrics.aainsurance.co.nz^ +||smetrics.aami.com.au^ +||smetrics.aamotors.com^ +||smetrics.aarp.org^ +||smetrics.aarpmedicareplans.com^ +||smetrics.aavacations.com^ +||smetrics.abacusplumbing.net^ +||smetrics.abanca.com^ +||smetrics.abbott.co.in^ +||smetrics.abbott.com.sg^ +||smetrics.abbott.com^ +||smetrics.abbott^ +||smetrics.abbottbrasil.com.br^ +||smetrics.abbottcore.com^ +||smetrics.abbottdiagnostics.com^ +||smetrics.abbottgps.com^ +||smetrics.abbottnutrition.com.my^ +||smetrics.abbottnutrition.com^ +||smetrics.abbottstore.com^ +||smetrics.abbottvascular.com^ +||smetrics.abbvie.com^ +||smetrics.abcspark.ca^ +||smetrics.abercrombie.cn^ +||smetrics.abercrombie.com^ +||smetrics.abercrombiekids.com^ +||smetrics.abilify.com^ +||smetrics.abilifyasimtufii.com^ +||smetrics.abilifyasimtufiihcp.com^ +||smetrics.abilifymaintena.com^ +||smetrics.abilifymaintenahcp.com^ +||smetrics.abilifymycite.com^ +||smetrics.abilifymycitehcp.com^ +||smetrics.absolute.com^ +||smetrics.absolutetotalcare.com^ +||smetrics.absorbcommunicationskit.com^ +||smetrics.academy.com^ +||smetrics.accaglobal.com^ +||smetrics.accredo.com^ +||smetrics.aclu.org^ +||smetrics.acpny.com^ +||smetrics.acs.org.au^ +||smetrics.act4yourheart.com^ +||smetrics.actemra.com^ +||smetrics.actemrahcp.com^ +||smetrics.actemrainfo.com^ +||smetrics.activase.com^ +||smetrics.active.com^ +||smetrics.activecommunities.com^ +||smetrics.activeendurance.com^ +||smetrics.activenetwork.com^ +||smetrics.adage.com^ +||smetrics.addabilify.com^ +||smetrics.adhduniversity.com^ +||smetrics.adiglobal.us^ +||smetrics.adnradio.cl^ +||smetrics.adpkdquestions.com^ +||smetrics.adt.com^ +||smetrics.adult.prevnar13.com^ +||smetrics.adultnutritionlearningcenter.com^ +||smetrics.advancedmd.com^ +||smetrics.advil.com^ +||smetrics.aegon.co.uk^ +||smetrics.aelca.es^ +||smetrics.aem.playstation.com^ +||smetrics.aena.es^ +||smetrics.aetn.com^ +||smetrics.aetnamedicare.com^ +||smetrics.afcom.com^ +||smetrics.affymetrix.com^ +||smetrics.afpjobs.amazon.com^ +||smetrics.afrique.pwc.com^ +||smetrics.afvclub.ca^ +||smetrics.afvclub.com^ +||smetrics.agentprovocateur.com^ +||smetrics.agilent.com^ +||smetrics.agillink.com^ +||smetrics.agra-net.com^ +||smetrics.aia.co.kr^ +||smetrics.aia.com^ +||smetrics.aida.de^ +||smetrics.airandgo.fr^ +||smetrics.aircanada.com^ +||smetrics.airmiles.ca^ +||smetrics.airngo.at^ +||smetrics.airngo.de^ +||smetrics.airngo.dk^ +||smetrics.airngo.it^ +||smetrics.airngo.nl^ +||smetrics.airngo.no^ +||smetrics.airngo.pt^ +||smetrics.airngo.se^ +||smetrics.airtv.net^ +||smetrics.ajinomoto.co.jp^ +||smetrics.aktiv-mit-psa.de^ +||smetrics.aktiv-mit-rheuma.de^ +||smetrics.albankaldawli.org^ +||smetrics.alecensa.com^ +||smetrics.alexandani.com^ +||smetrics.alfalaval.cn^ +||smetrics.alfalaval.com.au^ +||smetrics.alfalaval.com^ +||smetrics.alfalaval.kr^ +||smetrics.alfalaval.sg^ +||smetrics.alka.dk^ +||smetrics.alkamobil.dk^ +||smetrics.allegion.com^ +||smetrics.allenedmonds.ca^ +||smetrics.allenedmonds.com^ +||smetrics.alliancebernstein.com^ +||smetrics.allianz.com.au^ +||smetrics.allianzlife.com^ +||smetrics.allstate.com^ +||smetrics.allstatecorporation.com^ +||smetrics.allwellmedicare.com^ +||smetrics.ally.com^ +||smetrics.alpo.com^ +||smetrics.amaroso.com.au^ +||smetrics.ambetterhealth.com^ +||smetrics.ambetterofillinois.com^ +||smetrics.ambetterofnorthcarolina.com^ +||smetrics.ambetteroftennessee.com^ +||smetrics.americanairlines.com.au^ +||smetrics.americanairlines.com^ +||smetrics.americanairlines.es^ +||smetrics.americanairlines.in^ +||smetrics.americanblinds.com^ +||smetrics.americancentury.com^ +||smetrics.americanconnection.io^ +||smetrics.americanway.com^ +||smetrics.americastire.com^ +||smetrics.amersportsproclub.com^ +||smetrics.amfam.com^ +||smetrics.amg.com^ +||smetrics.amica.com^ +||smetrics.amp.co.nz^ +||smetrics.amplifon.com^ +||smetrics.amway-bulgaria-qas.com^ +||smetrics.amway-estonia.com^ +||smetrics.amway-qas.com.co^ +||smetrics.amway-qas.nl^ +||smetrics.amway-turkey-qas.com^ +||smetrics.amway.ch^ +||smetrics.amway.com.ar^ +||smetrics.amway.com.hn^ +||smetrics.amway.it^ +||smetrics.amway.my^ +||smetrics.amway.se^ +||smetrics.amway.sg^ +||smetrics.ancestry.ca^ +||smetrics.ancestry.co.uk^ +||smetrics.ancestry.com.au^ +||smetrics.ancestry.com^ +||smetrics.ancestry.de^ +||smetrics.angara.com^ +||smetrics.angi.com^ +||smetrics.anhi.org^ +||smetrics.animalhealthacademy.com.au^ +||smetrics.animalnetwork.com^ +||smetrics.anixter.com^ +||smetrics.anntaylor.com^ +||smetrics.ansible.com^ +||smetrics.ansys.com^ +||smetrics.antena3.com^ +||smetrics.anthem.com^ +||smetrics.anticoagulante.info^ +||smetrics.anwagolf.com^ +||smetrics.apellis.com^ +||smetrics.apia.com.au^ +||smetrics.apps.ge.com^ +||smetrics.aptashop.co.uk^ +||smetrics.arcobusinesssolutions.com^ +||smetrics.argenta.be^ +||smetrics.argenta.eu^ +||smetrics.argos.co.uk^ +||smetrics.arhealthwellness.com^ +||smetrics.arkansastotalcare.com^ +||smetrics.armadaskis.com^ +||smetrics.army.mod.uk^ +||smetrics.arnette.com^ +||smetrics.as.com^ +||smetrics.ascentric.co.uk^ +||smetrics.aservoequihaler.com^ +||smetrics.asgrow.com.mx^ +||smetrics.asics.com^ +||smetrics.asmithbowman.com^ +||smetrics.assurancewireless.com^ +||smetrics.assuranthealth.com^ +||smetrics.asteronlife.com.au^ +||smetrics.asumag.com^ +||smetrics.atecsports.com^ +||smetrics.atlantic.caa.ca^ +||smetrics.atlanticsuperstore.ca^ +||smetrics.atmosphere.ca^ +||smetrics.atomic.com^ +||smetrics.atresmedia.com^ +||smetrics.atresplayer.com^ +||smetrics.au.com^ +||smetrics.au.ugg.com^ +||smetrics.audi.co.uk^ +||smetrics.audifinance.ca^ +||smetrics.audifinancialservices.nl^ +||smetrics.australiancurriculum.edu.au^ +||smetrics.australiansuper.com^ +||smetrics.autodesk.com^ +||smetrics.automobilemag.com^ +||smetrics.automobilwoche.de^ +||smetrics.autonews.com^ +||smetrics.autotrader.com^ +||smetrics.avalara.com^ +||smetrics.avancesenrespiratorio.com^ +||smetrics.avastin-hcp.com^ +||smetrics.avastin.com^ +||smetrics.aveva.com^ +||smetrics.aviationweek.com^ +||smetrics.aviva.co.uk^ +||smetrics.avnet.com^ +||smetrics.axa-direct-life.co.jp^ +||smetrics.axs.com^ +||smetrics.azcompletehealth.com^ +||smetrics.babycenter.at^ +||smetrics.babycenter.ca^ +||smetrics.babycenter.com.au^ +||smetrics.babycenter.com.mx^ +||smetrics.babycenter.com.ph^ +||smetrics.babycenter.de^ +||smetrics.babycenter.in^ +||smetrics.babycenter.ru^ +||smetrics.babycentre.co.uk^ +||smetrics.babyjoyclub.com^ +||smetrics.babynes.ch^ +||smetrics.bakerbrothersplumbing.com^ +||smetrics.bamboohr.com^ +||smetrics.banamex.com^ +||smetrics.bancobmg.com.br^ +||smetrics.bancomundial.org^ +||smetrics.bancsabadell.com^ +||smetrics.bank-daiwa.co.jp^ +||smetrics.bankatfirst.com^ +||smetrics.bankaustria.at^ +||smetrics.bankinter.com^ +||smetrics.bankofamerica.com^ +||smetrics.bankofmelbourne.com.au^ +||smetrics.banksa.com.au^ +||smetrics.bankwest.com.au^ +||smetrics.banquemondiale.org^ +||smetrics.banter.com^ +||smetrics.barandblock.co.uk^ +||smetrics.barberinilenses.com^ +||smetrics.barcainnovationhub.com^ +||smetrics.barkandwhiskers.com^ +||smetrics.barracuda.com^ +||smetrics.base.be^ +||smetrics.baskinrobbins.com^ +||smetrics.bayer.africa^ +||smetrics.bayer.ca^ +||smetrics.bayer.co^ +||smetrics.bayer.com.ar^ +||smetrics.bayer.com.br^ +||smetrics.bayer.com.mx^ +||smetrics.bayer.com.tr^ +||smetrics.bayer.com^ +||smetrics.bayer.cr^ +||smetrics.bayer.cz^ +||smetrics.bayer.dz^ +||smetrics.bayer.ec^ +||smetrics.bayer.gt^ +||smetrics.bayer.ma^ +||smetrics.bayer.pe^ +||smetrics.bayer.sk^ +||smetrics.bayer.us^ +||smetrics.bbb.org^ +||smetrics.bbva.com.ar^ +||smetrics.bbva.com.co^ +||smetrics.bbva.com.uy^ +||smetrics.bbva.com^ +||smetrics.bbva.es^ +||smetrics.bbva.it^ +||smetrics.bbva.mx^ +||smetrics.bbva.pe^ +||smetrics.bbvacib.com^ +||smetrics.bbvaexperience.com^ +||smetrics.bbvanet.com.co^ +||smetrics.bbvanet.com.mx^ +||smetrics.bbvanetcash.pe^ +||smetrics.bbvaopenmind.com^ +||smetrics.bbvaresearch.com^ +||smetrics.bbvaseguros.mx^ +||smetrics.bcbsks.com^ +||smetrics.bcbsm.com^ +||smetrics.bcbsnc.com^ +||smetrics.bcbsnd.com^ +||smetrics.bd.dk^ +||smetrics.be.carrefour.eu^ +||smetrics.beachbody.com^ +||smetrics.beatsbydre.com.cn^ +||smetrics.beatsbydre.com^ +||smetrics.beaumontenterprise.com^ +||smetrics.beckmancoulter.com^ +||smetrics.becomeanex.org^ +||smetrics.beefeater.co.uk^ +||smetrics.belairdirect.com^ +||smetrics.belk.com^ +||smetrics.benefitcosmetics.com.cn^ +||smetrics.beneful.com^ +||smetrics.beneplace.com^ +||smetrics.bereadywith.com^ +||smetrics.besame.fm^ +||smetrics.bestbuy.com^ +||smetrics.bestdrive.cz^ +||smetrics.bestegg.com^ +||smetrics.bestinver.es^ +||smetrics.bestoforlando.com^ +||smetrics.bestofvegas.com^ +||smetrics.bet.com^ +||smetrics.beterhoren.nl^ +||smetrics.bevestor.de^ +||smetrics.bgov.com^ +||smetrics.bhgelite.com^ +||smetrics.bhgfinancial.com^ +||smetrics.bhgpersonal.com^ +||smetrics.bi-connect.com^ +||smetrics.bi-vetmedica.com^ +||smetrics.bigkidneybigproblem.com^ +||smetrics.biglots.com^ +||smetrics.bilfinans.no^ +||smetrics.binge.com.au^ +||smetrics.bingle.com.au^ +||smetrics.biomedtracker.com^ +||smetrics.biooncology.com^ +||smetrics.biophilia-fbbva.es^ +||smetrics.biore.com^ +||smetrics.biosimilarsbyboehringer.com^ +||smetrics.bissell.com^ +||smetrics.bittermens.com^ +||smetrics.bjs.com^ +||smetrics.bkstr.com^ +||smetrics.blair.com^ +||smetrics.blanchir-sp.net^ +||smetrics.blau.de^ +||smetrics.blockbuster.com^ +||smetrics.bloombergbna.com^ +||smetrics.bloombergindustry.com^ +||smetrics.bloomberglaw.com^ +||smetrics.bloombergtax.com^ +||smetrics.bloombergtaxtech.com^ +||smetrics.bluegrasscellular.com^ +||smetrics.bluemercury.com^ +||smetrics.bluenile.com^ +||smetrics.blueprintprep.com^ +||smetrics.bmc.com^ +||smetrics.bmo.com^ +||smetrics.bms-immuno-dermatologie.de^ +||smetrics.bms-io-academy.co.uk^ +||smetrics.bms-newfrontiers.com.au^ +||smetrics.bms-onkologie.de^ +||smetrics.bms.com^ +||smetrics.bmscustomerconnect.com^ +||smetrics.bmshealthcare.jp^ +||smetrics.bmsmedinfo.co.uk^ +||smetrics.bmsmedinfo.com^ +||smetrics.bmsmedinfo.de^ +||smetrics.bmsoncology.jp^ +||smetrics.bmspaf.org^ +||smetrics.bmsstudyconnect.com^ +||smetrics.bmwusa.com^ +||smetrics.bna.com^ +||smetrics.bncollege.com^ +||smetrics.bncvirtual.com^ +||smetrics.bnpparibas.com^ +||smetrics.bnymellon.com^ +||smetrics.bnymellonam.com^ +||smetrics.bodyforlife.com^ +||smetrics.bodyworkmall.com^ +||smetrics.boehringer-ingelheim.at^ +||smetrics.boehringer-ingelheim.ca^ +||smetrics.boehringer-ingelheim.com.br^ +||smetrics.boehringer-ingelheim.com^ +||smetrics.boehringer-ingelheim.de^ +||smetrics.boehringer-ingelheim.es^ +||smetrics.boehringer-ingelheim.hu^ +||smetrics.boehringer-ingelheim.it^ +||smetrics.boehringer-ingelheim.jp^ +||smetrics.boehringer-ingelheim.no^ +||smetrics.boehringer-ingelheim.pl^ +||smetrics.boehringer-ingelheim.sk^ +||smetrics.boehringer-ingelheim.tw^ +||smetrics.boehringer-ingelheim.ua^ +||smetrics.boehringer-ingelheim.us^ +||smetrics.boehringer-interaktiv.de^ +||smetrics.boehringerone.com^ +||smetrics.boom1019.com^ +||smetrics.boom997.com^ +||smetrics.boostinfinite.com^ +||smetrics.boostmobile.com^ +||smetrics.boothehvac.com^ +||smetrics.boozallen.com^ +||smetrics.boq.com.au^ +||smetrics.borgatacasino.com^ +||smetrics.borgatapoker.com^ +||smetrics.boscovs.com^ +||smetrics.boss.info^ +||smetrics.boston.com^ +||smetrics.bostonglobe.com^ +||smetrics.bottegaverde.es^ +||smetrics.bottegaverde.it^ +||smetrics.boundaryford.com^ +||smetrics.bpbusinesssolutions.com^ +||smetrics.bravenhealth.com^ +||smetrics.breezeforcats.com^ +||smetrics.brett-robinson.com^ +||smetrics.brewersfayre.co.uk^ +||smetrics.bridgestoneamericas.com^ +||smetrics.brinksprepaidmastercard.com^ +||smetrics.briteboxelectrical.com^ +||smetrics.britishgas.co.uk^ +||smetrics.broadlinespoton.de^ +||smetrics.brocade.com^ +||smetrics.brookdale.com^ +||smetrics.brooksbrothers.com^ +||smetrics.brumate.jp^ +||smetrics.bt.com.au^ +||smetrics.bt.com^ +||smetrics.buckeyehealthplan.com^ +||smetrics.buell.com^ +||smetrics.buffalotrace.com^ +||smetrics.buffalotracedistillery.com^ +||smetrics.builddirect.com^ +||smetrics.bupa.com.au^ +||smetrics.business.comcast.com^ +||smetrics.businessfinancemag.com^ +||smetrics.buyagift.co.uk^ +||smetrics.buyersedge.com.au^ +||smetrics.buytickets.virgintrains.co.uk^ +||smetrics.buytickets.westmidlandsrailway.co.uk^ +||smetrics.bzees.com^ +||smetrics.c2fo.com^ +||smetrics.cadenadial.com^ +||smetrics.cadenaser.com^ +||smetrics.caesars.com^ +||smetrics.cahealthwellness.com^ +||smetrics.calbaptist.edu^ +||smetrics.caleres.com^ +||smetrics.calia.com^ +||smetrics.caliastudio.com^ +||smetrics.calvinklein.ca^ +||smetrics.calvinklein.cn^ +||smetrics.calvinklein.us^ +||smetrics.calwater.com^ +||smetrics.campaigns.abbott.com.sg^ +||smetrics.camzyos.com^ +||smetrics.camzyoshcp.com^ +||smetrics.canosan.de^ +||smetrics.capella.edu^ +||smetrics.capitalone.com^ +||smetrics.caracol.com.co^ +||smetrics.carbonite.com^ +||smetrics.care.com^ +||smetrics.carfax.com^ +||smetrics.caribbeanjobs.com^ +||smetrics.carnival.co.uk^ +||smetrics.carnival.com.au^ +||smetrics.carnival.com^ +||smetrics.carolina.com^ +||smetrics.carparts.com^ +||smetrics.carphonewarehouse.com^ +||smetrics.carrieres.pwc.fr^ +||smetrics.carters.com^ +||smetrics.cartersoshkosh.ca^ +||smetrics.cartoonnetwork.ca^ +||smetrics.caser.es^ +||smetrics.caserexpatinsurance.com^ +||smetrics.caseys.com^ +||smetrics.cashnetusa.com^ +||smetrics.casinoladbrokes.be^ +||smetrics.casinosplendido.com^ +||smetrics.casio-intl.com^ +||smetrics.casio-watches.com^ +||smetrics.casio.co.jp^ +||smetrics.casio.com.tw^ +||smetrics.casio.com^ +||smetrics.casio.info^ +||smetrics.casio.jp^ +||smetrics.cast.r-agent.com^ +||smetrics.catalog.usmint.gov^ +||smetrics.catchow.com^ +||smetrics.cathflo.com^ +||smetrics.catxpert.dk^ +||smetrics.cbc.ca^ +||smetrics.cbc.youtube.mercedes-benz.com^ +||smetrics.cbn.com^ +||smetrics.ccma.cat^ +||smetrics.cdiscount.com^ +||smetrics.cedars-sinai.org^ +||smetrics.celebritycruises.com^ +||smetrics.cellcept.com^ +||smetrics.celticarehealthplan.com^ +||smetrics.census.gov^ +||smetrics.centene.com^ +||smetrics.centerpointenergy.com^ +||smetrics.centex.com^ +||smetrics.centralparknyc.org^ +||smetrics.centrum.com^ +||smetrics.centurylink.com^ +||smetrics.cepheid.com^ +||smetrics.ceratizit.com^ +||smetrics.cfainstitute.org^ +||smetrics.cfox.com^ +||smetrics.chadstone.com.au^ +||smetrics.channel.com^ +||smetrics.channelfutures.com^ +||smetrics.chapstick.com^ +||smetrics.charter.com^ +||smetrics.charter.no^ +||smetrics.charter.se^ +||smetrics.chase.com^ +||smetrics.chatrwireless.com^ +||smetrics.chelseafc.com^ +||smetrics.chemistanddruggist.co.uk^ +||smetrics.chghealthcare.com^ +||smetrics.chicagobusiness.com^ +||smetrics.chip1stop.com^ +||smetrics.christianscience.com^ +||smetrics.christies.com^ +||smetrics.chron.com^ +||smetrics.chrysler.com^ +||smetrics.churchill.com^ +||smetrics.ciena.com^ +||smetrics.cigar.com^ +||smetrics.cigarsinternational.com^ +||smetrics.cigna.com^ +||smetrics.cinemaxx.de^ +||smetrics.circulodelasalud.mx^ +||smetrics.circusny.com^ +||smetrics.cirquedusoleil.com^ +||smetrics.cisco.com^ +||smetrics.cisnfm.com^ +||smetrics.cit.com^ +||smetrics.citalia.com^ +||smetrics.citeline.com^ +||smetrics.citibank.ae^ +||smetrics.citibank.cn^ +||smetrics.citibank.co.th^ +||smetrics.citibank.co.uk^ +||smetrics.citibank.com.au^ +||smetrics.citibank.com.hk^ +||smetrics.citibank.com.my^ +||smetrics.citibank.com.ph^ +||smetrics.citibank.com.sg^ +||smetrics.citibank.com.vn^ +||smetrics.citibank.pl^ +||smetrics.citizensbank.com^ +||smetrics.civilsandutilities.com^ +||smetrics.cjoy.com^ +||smetrics.claris.com^ +||smetrics.clearly.ca^ +||smetrics.clementia.cz^ +||smetrics.clickbank.com^ +||smetrics.client-services.ca^ +||smetrics.cloudera.com^ +||smetrics.cluballiance.aaa.com^ +||smetrics.clubmarriott.in^ +||smetrics.clubmonaco.com^ +||smetrics.clubnoble.jp^ +||smetrics.clubreservations.com^ +||smetrics.cnb.com^ +||smetrics.cnn.com^ +||smetrics.cnr.com^ +||smetrics.coach.com^ +||smetrics.coachfactory.com^ +||smetrics.coca-cola.com^ +||smetrics.coca-colacanada.ca^ +||smetrics.coca-colaentuhogar.com^ +||smetrics.codan.dk^ +||smetrics.coffretdor-makeup.jp^ +||smetrics.coke2home.com^ +||smetrics.collinscomfort.com^ +||smetrics.columbia.com^ +||smetrics.combinedinsurance.com^ +||smetrics.comcast.com^ +||smetrics.comdata.com^ +||smetrics.comenity.net^ +||smetrics.comfortwave.com^ +||smetrics.commonclaimsmistakesvideo.com^ +||smetrics.commonwealth.com^ +||smetrics.comms.westpac.co.nz^ +||smetrics.comparethemarket.com^ +||smetrics.comphealth.com^ +||smetrics.concardis.com^ +||smetrics.concierto.cl^ +||smetrics.condodirect.com^ +||smetrics.connecticare.com^ +||smetrics.consumerreports.org^ +||smetrics.contactsdirect.com^ +||smetrics.controlcenter.com^ +||smetrics.converse.co.uk^ +||smetrics.converse.com^ +||smetrics.cookhouseandpub.co.uk^ +||smetrics.coolray.com^ +||smetrics.cooltoday.com^ +||smetrics.coordinatedcarehealth.com^ +||smetrics.copd-aktuell.de^ +||smetrics.copdinsideout.ca^ +||smetrics.corazon.cl^ +||smetrics.cornercard.ch^ +||smetrics.cornertrader.ch^ +||smetrics.corpay.com^ +||smetrics.corpaybusinesscard.com^ +||smetrics.corpayone.com^ +||smetrics.corpayone.dk^ +||smetrics.correos.es^ +||smetrics.cortefiel.com^ +||smetrics.cortevents.com^ +||smetrics.cortfurnitureoutlet.com^ +||smetrics.cortpartyrental.com^ +||smetrics.corus.ca^ +||smetrics.costacruise.com^ +||smetrics.costadelmar.com^ +||smetrics.costco.ca^ +||smetrics.costco.com^ +||smetrics.costcobusinesscentre.ca^ +||smetrics.costcobusinessdelivery.com^ +||smetrics.costumesupercenter.com^ +||smetrics.cotellic.com^ +||smetrics.cottages.com^ +||smetrics.coulditbehcm.com^ +||smetrics.country104.com^ +||smetrics.country105.com^ +||smetrics.countryfinancial.com^ +||smetrics.countryfinancialsecurityblog.com^ +||smetrics.countrypassport.com^ +||smetrics.covance.com^ +||smetrics.cox.com^ +||smetrics.cpaaustralia.com.au^ +||smetrics.cpsenergy.com^ +||smetrics.crain.com^ +||smetrics.crainscleveland.com^ +||smetrics.crainsdetroit.com^ +||smetrics.crainsnewyork.com^ +||smetrics.creditscore.com^ +||smetrics.crimewatchdaily.com^ +||smetrics.crocs.at^ +||smetrics.crocs.ca^ +||smetrics.crocs.co.uk^ +||smetrics.crocs.com^ +||smetrics.crocs.de^ +||smetrics.crocs.eu^ +||smetrics.crocs.fi^ +||smetrics.crocs.fr^ +||smetrics.crocs.nl^ +||smetrics.crocs.se^ +||smetrics.crocsespana.es^ +||smetrics.croma.com^ +||smetrics.cru.org^ +||smetrics.crystalski.co.uk^ +||smetrics.crystalski.ie^ +||smetrics.csmonitor.com^ +||smetrics.css.ch^ +||smetrics.csu.edu.au^ +||smetrics.ctm.uhc.com^ +||smetrics.ctshirts.com^ +||smetrics.ctv.ca^ +||smetrics.cua.com.au^ +||smetrics.cultura.com^ +||smetrics.cupraofficial.com^ +||smetrics.cupraofficial.de^ +||smetrics.curel.com^ +||smetrics.currys.co.uk^ +||smetrics.customersvc.com^ +||smetrics.customs.pwc.com^ +||smetrics.cvs.com^ +||smetrics.cvty.com^ +||smetrics.cyrillus.be^ +||smetrics.cytivalifesciences.co.jp^ +||smetrics.cytivalifesciences.co.kr^ +||smetrics.cytivalifesciences.com^ +||smetrics.daiwa-grp.jp^ +||smetrics.daiwa.jp^ +||smetrics.daiwatv.jp^ +||smetrics.dalisalda.com^ +||smetrics.dallasmidwest.com^ +||smetrics.dandh.ca^ +||smetrics.dandh.com^ +||smetrics.darty.com^ +||smetrics.dashandstars.com^ +||smetrics.datapipe.com^ +||smetrics.davidclulow.com^ +||smetrics.dcu.org^ +||smetrics.deakin.edu.au^ +||smetrics.dekalb.com.co^ +||smetrics.dekalb.com.mx^ +||smetrics.dekalbasgrowdeltapine.com^ +||smetrics.delacon.com.au^ +||smetrics.delbetalning.seb.se^ +||smetrics.delta.com^ +||smetrics.deltacargo.com^ +||smetrics.deltafarmpress.com^ +||smetrics.demarini.com^ +||smetrics.derneuekaemmerer.de^ +||smetrics.dertreasurer.de^ +||smetrics.desparasitaatumascota.es^ +||smetrics.destinythegame.com^ +||smetrics.detect-afib.com^ +||smetrics.deutschepost.com^ +||smetrics.deutschepost.de^ +||smetrics.deutscheranwaltspiegel.de^ +||smetrics.dev.www.vwfs.de^ +||smetrics.devcommittee.org^ +||smetrics.dfo.com.au^ +||smetrics.dha.com^ +||smetrics.dhc.co.jp^ +||smetrics.dhl.de^ +||smetrics.dickssportinggoods.com^ +||smetrics.die-stiftung.de^ +||smetrics.digicert.com^ +||smetrics.digital.pwc.ie^ +||smetrics.digitalbalance.com.au^ +||smetrics.diners.co.jp^ +||smetrics.dinersclub.dk^ +||smetrics.directauto.com^ +||smetrics.directline.com^ +||smetrics.directlineforbusiness.co.uk^ +||smetrics.directtv.com^ +||smetrics.directv.com^ +||smetrics.discounttire.com^ +||smetrics.discova.jp^ +||smetrics.discover.com^ +||smetrics.discovertrk.com^ +||smetrics.dish.co^ +||smetrics.dish.com^ +||smetrics.dishanywhere.com^ +||smetrics.dishpuertorico.com^ +||smetrics.dishwireless.com^ +||smetrics.disneychannel.ca^ +||smetrics.disneylachaine.ca^ +||smetrics.distrelec.ch^ +||smetrics.dlalekarzy.roche.pl^ +||smetrics.dnb.com^ +||smetrics.dnszone.jp^ +||smetrics.doctoramascotas.com^ +||smetrics.doingbusiness.org^ +||smetrics.dominos.com^ +||smetrics.donaldson.com^ +||smetrics.donovanac.com^ +||smetrics.doujinshi-print.com^ +||smetrics.dreamlabdata.com^ +||smetrics.dreamvacationweek.com^ +||smetrics.driveshare.com^ +||smetrics.drmartens.com.au^ +||smetrics.drschollsshoes.com^ +||smetrics.drugpricinglaw.com^ +||smetrics.dryerventwizard.com^ +||smetrics.dunkindonuts.com^ +||smetrics.dxc.com^ +||smetrics.e-abbott.com^ +||smetrics.e-casio.co.jp^ +||smetrics.e-wie-einfach.de^ +||smetrics.earpros.com^ +||smetrics.eas.com^ +||smetrics.easacademy.org^ +||smetrics.eascertified.com^ +||smetrics.eastwestbank.com^ +||smetrics.ebgsolutions.com^ +||smetrics.ecmweb.com^ +||smetrics.edc.ca^ +||smetrics.eddiebauer.com^ +||smetrics.edge.ca^ +||smetrics.edifice-watches.com^ +||smetrics.ee.co.uk^ +||smetrics.efirstbank.com^ +||smetrics.ehealthinsurance.com^ +||smetrics.einsure.com.au^ +||smetrics.eis-inc.com^ +||smetrics.eki-net.com^ +||smetrics.el-mundo.net^ +||smetrics.elal.com^ +||smetrics.elecare.com^ +||smetrics.electronicdesign.com^ +||smetrics.element14.com^ +||smetrics.elgallomasgallo.com.gt^ +||smetrics.elgallomasgallo.com.hn^ +||smetrics.elgallomasgallo.com.ni^ +||smetrics.elgiganten.se^ +||smetrics.eliquis.co.uk^ +||smetrics.eliquis.com^ +||smetrics.eliquisdataportal.com^ +||smetrics.eliquispatient.nl^ +||smetrics.elkjop.no^ +||smetrics.elpais.com^ +||smetrics.elsevier.com^ +||smetrics.emblemhealth.com^ +||smetrics.emicizumabinfo.com^ +||smetrics.empliciti.com^ +||smetrics.enelenergia.it^ +||smetrics.energia.ie^ +||smetrics.energy953radio.ca^ +||smetrics.energyaustralia.com.au^ +||smetrics.energytoday.biz^ +||smetrics.enjoy365.ch^ +||smetrics.enspryng-hcp.com^ +||smetrics.enspryng.com^ +||smetrics.enterprise.com^ +||smetrics.enterprisersproject.com^ +||smetrics.enterprisesg.gov.sg^ +||smetrics.enterprisesurveys.org^ +||smetrics.entrykeyid.com^ +||smetrics.eprice.it^ +||smetrics.equipmentwatch.com^ +||smetrics.equitable.com^ +||smetrics.erivedge.com^ +||smetrics.ernestjones.co.uk^ +||smetrics.es-diabetes.com^ +||smetrics.esbriet.com^ +||smetrics.esbriethcp.com^ +||smetrics.esignal.com^ +||smetrics.essds.com^ +||smetrics.essomastercard.no^ +||smetrics.esurance.com^ +||smetrics.etcanada.com^ +||smetrics.eticketing.abbott.com.sg^ +||smetrics.etihad.com^ +||smetrics.etihadaviationgroup.com^ +||smetrics.etihadcargo.com^ +||smetrics.etihadengineering.com^ +||smetrics.etihadguest.com^ +||smetrics.etihadholidays.com^ +||smetrics.etihadsecurelogistics.com^ +||smetrics.ets.org^ +||smetrics.eu.playstation.com^ +||smetrics.eurekalert.org^ +||smetrics.eurobet.it^ +||smetrics.eurocard.com^ +||smetrics.europafm.com^ +||smetrics.eurowings.com^ +||smetrics.evernorth.com^ +||smetrics.eversource.com^ +||smetrics.evicore.com^ +||smetrics.evine.com^ +||smetrics.evivanlanschot.nl^ +||smetrics.evolytics.com^ +||smetrics.evoshield.com^ +||smetrics.evrysdi.com^ +||smetrics.ewweb.com^ +||smetrics.examinebiosimilars.com^ +||smetrics.experian.co.uk^ +||smetrics.expoeast.com^ +||smetrics.exposehcm.com^ +||smetrics.expowest.com^ +||smetrics.express-scripts.com^ +||smetrics.express.com^ +||smetrics.expressnews.com^ +||smetrics.expressverified.ca^ +||smetrics.extranetperu.grupobbva.pe^ +||smetrics.ey.com^ +||smetrics.faceipf.com^ +||smetrics.facitlaan.dk^ +||smetrics.familiaynutricion.com.co^ +||smetrics.famousfootwear.ca^ +||smetrics.famousfootwear.com^ +||smetrics.fancl.co.jp^ +||smetrics.fancl.jp^ +||smetrics.fancyfeast.com^ +||smetrics.farnell.com^ +||smetrics.fatface.com^ +||smetrics.faz-konferenzen.de^ +||smetrics.faz.net^ +||smetrics.fcacert.com^ +||smetrics.fcbarcelona.cat^ +||smetrics.fcbarcelona.co.de^ +||smetrics.fcbarcelona.co.it^ +||smetrics.fcbarcelona.com^ +||smetrics.fcbarcelona.es^ +||smetrics.fcbarcelona.fr^ +||smetrics.fcbarcelona.jp^ +||smetrics.fedex.com^ +||smetrics.feedthe485.com^ +||smetrics.feelbanfresh.com^ +||smetrics.ferguson.com^ +||smetrics.ferris.ac.jp^ +||smetrics.ferroviedellostato.it^ +||smetrics.fetnet.net^ +||smetrics.ficohsa.hn^ +||smetrics.fifa.com^ +||smetrics.fiftyoutlet.com^ +||smetrics.filemaker.com^ +||smetrics.filmmagic.com^ +||smetrics.filtron.eu^ +||smetrics.finance-magazin.de^ +||smetrics.financing.vwfinance.ca^ +||smetrics.findomestic.it^ +||smetrics.fingerhut.com^ +||smetrics.finishline.com^ +||smetrics.finn.no^ +||smetrics.finning.com^ +||smetrics.fireballwhisky.com^ +||smetrics.firestonebpco.com^ +||smetrics.flagstar.com^ +||smetrics.flashnews.com.au^ +||smetrics.fleetcardapplication.com^ +||smetrics.fleetcardsusa.com^ +||smetrics.fleetcor.com^ +||smetrics.flex.amazon.ca^ +||smetrics.flex.amazon.co.jp^ +||smetrics.flex.amazon.co.uk^ +||smetrics.flex.amazon.com.au^ +||smetrics.flex.amazon.com.mx^ +||smetrics.flex.amazon.com.sg^ +||smetrics.flex.amazon.com^ +||smetrics.flex.amazon.in^ +||smetrics.flexera.com^ +||smetrics.flexerasoftware.com^ +||smetrics.flexshares.com^ +||smetrics.flightnetwork.com^ +||smetrics.flyfar.ca^ +||smetrics.fm96.com^ +||smetrics.fmdos.cl^ +||smetrics.fnac.be^ +||smetrics.fnac.ch^ +||smetrics.fnac.com^ +||smetrics.fnac.es^ +||smetrics.fnac.pt^ +||smetrics.fnacpro.com^ +||smetrics.foeniksprivatlaan.dk^ +||smetrics.fokuslaan.dk^ +||smetrics.fokuslan.no^ +||smetrics.folksam.se^ +||smetrics.folksamlopension.se^ +||smetrics.fondation.pwc.fr^ +||smetrics.foniksprivatlan.no^ +||smetrics.ford.ca^ +||smetrics.ford.com^ +||smetrics.forgingmagazine.com^ +||smetrics.fortinos.ca^ +||smetrics.fortnumandmason.com^ +||smetrics.fostercaretx.com^ +||smetrics.foxbusiness.com^ +||smetrics.foxnews.com^ +||smetrics.fpl.com^ +||smetrics.framesdirect.com^ +||smetrics.francosarto.com^ +||smetrics.franke.com^ +||smetrics.fraport-bulgaria.com^ +||smetrics.fraport-galaxy.de^ +||smetrics.fraport-slovenija.si^ +||smetrics.fraport.com^ +||smetrics.fraport.de^ +||smetrics.frasersproperty.com^ +||smetrics.freecreditscore.com^ +||smetrics.freedomfordsales.ca^ +||smetrics.freeplus-global.net^ +||smetrics.friskies.com^ +||smetrics.front-line.nl^ +||smetrics.frontier.com^ +||smetrics.frontline.co.th^ +||smetrics.ftd.ca^ +||smetrics.fuelman.com^ +||smetrics.future.smart.com^ +||smetrics.futuro.cl^ +||smetrics.fuzeon.com^ +||smetrics.fxsolutions.com^ +||smetrics.fyndus.de^ +||smetrics.g-shock.com^ +||smetrics.g-shock.jp^ +||smetrics.g-tune.jp^ +||smetrics.gaes.es^ +||smetrics.gatesnotes.com^ +||smetrics.gazyva.com^ +||smetrics.gcimetrics.com^ +||smetrics.geeksquad.com^ +||smetrics.gehealthcare.com^ +||smetrics.gemcreditline.co.nz^ +||smetrics.gemfinance.co.nz^ +||smetrics.gemplers.com^ +||smetrics.gemvisa.co.nz^ +||smetrics.genarts.com^ +||smetrics.genentech-access.com^ +||smetrics.genentech-forum.com^ +||smetrics.genentech-pro.com^ +||smetrics.genentechhemophilia.com^ +||smetrics.generac.com^ +||smetrics.genomeweb.com^ +||smetrics.gestionpriveegi.com^ +||smetrics.getravelop.com^ +||smetrics.ghirardelli.com^ +||smetrics.gibbsanddandy.com^ +||smetrics.gio.com.au^ +||smetrics.glasses.com^ +||smetrics.global.jcb^ +||smetrics.global.mandg.com^ +||smetrics.global.nba.com^ +||smetrics.globalbmsmedinfo.com^ +||smetrics.globalfinancingfacility.org^ +||smetrics.globalnews.ca^ +||smetrics.glucerna.ca^ +||smetrics.glucerna.com^ +||smetrics.gmfinancial.com^ +||smetrics.gobank.com^ +||smetrics.goccl.co.uk^ +||smetrics.goibibo.com^ +||smetrics.goindigo.in^ +||smetrics.goinggoing.com^ +||smetrics.goinggoinggone.com^ +||smetrics.golden1.com^ +||smetrics.golfgalaxy.com^ +||smetrics.gomastercard.com.au^ +||smetrics.gomedigap.com^ +||smetrics.goodsamrvinsurance.com^ +||smetrics.gordonsjewelers.com^ +||smetrics.grainger.com^ +||smetrics.grandandtoy.com^ +||smetrics.greatland.com^ +||smetrics.greatsouthernbank.com.au^ +||smetrics.greendot.com^ +||smetrics.greenflag.com^ +||smetrics.greenrow.com^ +||smetrics.greenstate.com^ +||smetrics.group.uhc.com^ +||smetrics.groupama.fr^ +||smetrics.grundfos.com^ +||smetrics.grupobancomundial.org^ +||smetrics.gs1us.org^ +||smetrics.gsbank.com^ +||smetrics.gsfresh.com^ +||smetrics.gsghukuk.com^ +||smetrics.gshock.com^ +||smetrics.gsipartners.com^ +||smetrics.gsretail.com^ +||smetrics.guaranteedrate.com^ +||smetrics.guaranteesmatter.com^ +||smetrics.guess.eu^ +||smetrics.guhl.com^ +||smetrics.gvb.ch^ +||smetrics.h-scc.jp^ +||smetrics.ha.com^ +||smetrics.haband.com^ +||smetrics.hagerty.co.uk^ +||smetrics.handelsbanken.co.uk^ +||smetrics.handelsbanken.com^ +||smetrics.handelsbanken.nl^ +||smetrics.handelsbanken.no^ +||smetrics.handelsbanken.se^ +||smetrics.happyfamilyorganics.com^ +||smetrics.harborfreight.com^ +||smetrics.harley-davidson.com^ +||smetrics.havenwellwithin.com^ +||smetrics.hayesandjarvis.co.uk^ +||smetrics.hbogo.com^ +||smetrics.hbonow.com^ +||smetrics.hbr.org^ +||smetrics.hbs.edu^ +||smetrics.hbsp.harvard.edu^ +||smetrics.hdcymru.co.uk^ +||smetrics.hdfcbank.com^ +||smetrics.health.com^ +||smetrics.healthcompare.com^ +||smetrics.healthengine.com.au^ +||smetrics.healthnet.com^ +||smetrics.healthnetaccess.com^ +||smetrics.healthnetadvantage.com^ +||smetrics.healthnetcalifornia.com^ +||smetrics.healthnetoregon.com^ +||smetrics.healthpartners.com^ +||smetrics.heartgardplus.com.tw^ +||smetrics.heathrow.com^ +||smetrics.heathrowexpress.com^ +||smetrics.hebdebit.com^ +||smetrics.hebprepaid.com^ +||smetrics.helios-gesundheit.de^ +||smetrics.hellobank.fr^ +||smetrics.helvetia.com^ +||smetrics.hemapedia.jp^ +||smetrics.hematoconnect.com.br^ +||smetrics.hemlibra.com^ +||smetrics.henkivakuutuskuntoon.fi^ +||smetrics.her2treatment.com^ +||smetrics.herbalife.com^ +||smetrics.herceptin.com^ +||smetrics.herceptinhylecta.com^ +||smetrics.heroesvacationclub.com^ +||smetrics.heromotocorp.com^ +||smetrics.herschel.com.au^ +||smetrics.herzstolpern.at^ +||smetrics.herzstolpern.de^ +||smetrics.hfma.org^ +||smetrics.hibiyakadan.com^ +||smetrics.higheroneaccount.com^ +||smetrics.highsmith.com^ +||smetrics.hillrom.com^ +||smetrics.history.ca^ +||smetrics.hitachi-hightech.com^ +||smetrics.hitachivantara.com^ +||smetrics.hks-power.co.jp^ +||smetrics.hm.com^ +||smetrics.hmhco.com^ +||smetrics.hoken.zexy.net^ +||smetrics.holcimelevate.com^ +||smetrics.hollandamerica.com^ +||smetrics.hollisterco.com^ +||smetrics.hollisterco.jp^ +||smetrics.home.kpmg^ +||smetrics.homeadvisor.com^ +||smetrics.homegoods.com^ +||smetrics.homes.com^ +||smetrics.homestatehealth.com^ +||smetrics.hoovers.com^ +||smetrics.horizonblue.com^ +||smetrics.horizonnjhealth.com^ +||smetrics.horsexperts.be^ +||smetrics.hoseasons.co.uk^ +||smetrics.hossintropia.com^ +||smetrics.hotsy.com^ +||smetrics.houseoffraser.co.uk^ +||smetrics.houseoffraser.com^ +||smetrics.howifightms.com^ +||smetrics.hpe.com^ +||smetrics.hr.abbott^ +||smetrics.hrblock.com^ +||smetrics.hsamuel.co.uk^ +||smetrics.htc.com^ +||smetrics.hubbl.com.au^ +||smetrics.hubert.ca^ +||smetrics.hubert.com^ +||smetrics.huffingtonpost.es^ +||smetrics.humana.com^ +||smetrics.huntington.com^ +||smetrics.huntingtonsdiseasehcp.com^ +||smetrics.hydraulicspneumatics.com^ +||smetrics.hypedc.com^ +||smetrics.hyundaiusa.com^ +||smetrics.i-law.com^ +||smetrics.i22.nadro.mx^ +||smetrics.ibercaja.es^ +||smetrics.ibfd.org^ +||smetrics.ice.gov^ +||smetrics.iceland.co.uk^ +||smetrics.icharlotte.com^ +||smetrics.icicibank.com^ +||smetrics.iconfitness.com^ +||smetrics.icorner.ch^ +||smetrics.identityguard.com^ +||smetrics.iehp.org^ +||smetrics.ifc.org^ +||smetrics.ig.ca^ +||smetrics.igmfinancial.com^ +||smetrics.iilg.com^ +||smetrics.ikea.com^ +||smetrics.ileitis.de^ +||smetrics.ilhealthpracticealliance.com^ +||smetrics.illinicare.com^ +||smetrics.illinois.gov^ +||smetrics.illumina.com.cn^ +||smetrics.illumina.com^ +||smetrics.ilovematlab.cn^ +||smetrics.ilyouthcare.com^ +||smetrics.immunooncology.be^ +||smetrics.impress-web.com^ +||smetrics.infinitematerialsolutions.com^ +||smetrics.infinitiusa.com^ +||smetrics.infomedics.it^ +||smetrics.informa.com^ +||smetrics.ingdirect.it^ +||smetrics.inkcartridges.com^ +||smetrics.inlyta.com^ +||smetrics.insider.hagerty.com^ +||smetrics.insight.com^ +||smetrics.inspectionpanel.org^ +||smetrics.insuramatch.com^ +||smetrics.insuranceday.com^ +||smetrics.insurancesaver.com^ +||smetrics.insurewithaudi.co.uk^ +||smetrics.insurewithseat.co.uk^ +||smetrics.insurewithskoda.co.uk^ +||smetrics.insurewithvolkswagen.co.uk^ +||smetrics.insurewithvwcv.co.uk^ +||smetrics.intact.ca^ +||smetrics.intactarr2pro.com.py^ +||smetrics.intactinsurance.com^ +||smetrics.interbank.com.pe^ +||smetrics.interbank.pe^ +||smetrics.interbankbenefit.pe^ +||smetrics.interestfree.com.au^ +||smetrics.intermountainhealthcare.org^ +||smetrics.internationalchampionscup.com^ +||smetrics.internetbanka.cz^ +||smetrics.intertek-etlsemko.com^ +||smetrics.intervalresortsupport.com^ +||smetrics.intervalworld.com^ +||smetrics.intralinks.com^ +||smetrics.investmentnews.com^ +||smetrics.investorsgroup.com^ +||smetrics.iossc.natwest.com^ +||smetrics.iossc.rbs.co.uk^ +||smetrics.iotworldtoday.com^ +||smetrics.iowatotalcare.com^ +||smetrics.ipb.citibank.com.sg^ +||smetrics.iprodeveloper.com^ +||smetrics.irishjobs.ie^ +||smetrics.iselect.com.au^ +||smetrics.islandford.ca^ +||smetrics.its.rmit.edu.au^ +||smetrics.ivivva.com^ +||smetrics.iwakifc.com^ +||smetrics.iwceexpo.com^ +||smetrics.jackson.com^ +||smetrics.jacuzzi.com^ +||smetrics.jamestowndistributors.com^ +||smetrics.jarboes.com^ +||smetrics.jardiance.com^ +||smetrics.jared.com^ +||smetrics.jboss.org^ +||smetrics.jcb.co.jp^ +||smetrics.jcpenney.com^ +||smetrics.jcrew.com^ +||smetrics.jeld-wen.com^ +||smetrics.jergens.com^ +||smetrics.jetblue.com^ +||smetrics.jeugdbibliotheek.nl^ +||smetrics.jewson.co.uk^ +||smetrics.jimwilsonchevrolet.com^ +||smetrics.jjill.com^ +||smetrics.jobs.ie^ +||smetrics.joefresh.com^ +||smetrics.johnfrieda.com^ +||smetrics.johnhancock.com^ +||smetrics.joules.com^ +||smetrics.joulesusa.com^ +||smetrics.jre-travel.com^ +||smetrics.juiceplus.com^ +||smetrics.jumpforward.com^ +||smetrics.jumpradio.ca^ +||smetrics.junsungki.com^ +||smetrics.jwpepper.com^ +||smetrics.jynarque.com^ +||smetrics.kadcyla.com^ +||smetrics.kaercher.com^ +||smetrics.kaiserpermanente.org^ +||smetrics.kamloopshonda.ca^ +||smetrics.kanebo-cosmetics.co.jp^ +||smetrics.kanebo-cosmetics.jp^ +||smetrics.kanebo-forum.net^ +||smetrics.kanebo-global.com^ +||smetrics.kanebo.co.th^ +||smetrics.kanebo.com^ +||smetrics.kanebocos.net^ +||smetrics.kanen-net.info^ +||smetrics.kansasfarmer.com^ +||smetrics.kao-kirei.com^ +||smetrics.kao.co.jp^ +||smetrics.kao.com^ +||smetrics.kaobeautybrands.com^ +||smetrics.karcher-futuretech.com^ +||smetrics.karcher.cn^ +||smetrics.karcher.com^ +||smetrics.karcher.cz^ +||smetrics.kate-global.net^ +||smetrics.kawai-juku.ac.jp^ +||smetrics.kay.com^ +||smetrics.kayosports.com.au^ +||smetrics.kayoutlet.com^ +||smetrics.kbb.com^ +||smetrics.kebuena.com.mx^ +||smetrics.kelownachev.com^ +||smetrics.kelownatoyota.com^ +||smetrics.kenwood.com^ +||smetrics.kerry.com^ +||smetrics.ketsusen.jp^ +||smetrics.keysight.co.kr^ +||smetrics.keysight.com.cn^ +||smetrics.keysight.com^ +||smetrics.kioxia-holdings.com^ +||smetrics.kioxia-iwate.co.jp^ +||smetrics.kioxia.com.cn^ +||smetrics.kioxia.com^ +||smetrics.kipling-usa.com^ +||smetrics.kipling.com^ +||smetrics.klikklan.no^ +||smetrics.kmshair.com^ +||smetrics.knowpneumonia.com^ +||smetrics.kol.se^ +||smetrics.kone.ae^ +||smetrics.kone.at^ +||smetrics.kone.be^ +||smetrics.kone.bg^ +||smetrics.kone.bi^ +||smetrics.kone.ca^ +||smetrics.kone.ch^ +||smetrics.kone.cn^ +||smetrics.kone.co.id^ +||smetrics.kone.co.il^ +||smetrics.kone.co.ke^ +||smetrics.kone.co.nz^ +||smetrics.kone.co.za^ +||smetrics.kone.com.au^ +||smetrics.kone.com.cy^ +||smetrics.kone.com.kh^ +||smetrics.kone.com.tr^ +||smetrics.kone.com^ +||smetrics.kone.cz^ +||smetrics.kone.de^ +||smetrics.kone.dk^ +||smetrics.kone.ee^ +||smetrics.kone.eg^ +||smetrics.kone.es^ +||smetrics.kone.fi^ +||smetrics.kone.fr^ +||smetrics.kone.gr^ +||smetrics.kone.hk^ +||smetrics.kone.hu^ +||smetrics.kone.ie^ +||smetrics.kone.in^ +||smetrics.kone.is^ +||smetrics.kone.it^ +||smetrics.kone.lt^ +||smetrics.kone.lv^ +||smetrics.kone.me^ +||smetrics.kone.mx^ +||smetrics.kone.nl^ +||smetrics.kone.no^ +||smetrics.kone.om^ +||smetrics.kone.pt^ +||smetrics.kone.rs^ +||smetrics.kone.se^ +||smetrics.kone.sk^ +||smetrics.kone.tw^ +||smetrics.kone.us^ +||smetrics.kone.vn^ +||smetrics.kowa-h.com^ +||smetrics.kpmg.com^ +||smetrics.kpmg.us^ +||smetrics.krebs.de^ +||smetrics.krugerseed.com^ +||smetrics.kyndryl.com^ +||smetrics.labaie.com^ +||smetrics.labsafety.com^ +||smetrics.lacounty.gov^ +||smetrics.ladbrokes.be^ +||smetrics.lakeshorelearning.com^ +||smetrics.lakeside.com^ +||smetrics.lakewoodchev.com^ +||smetrics.lambweston.com^ +||smetrics.landa.com^ +||smetrics.landg-life.com^ +||smetrics.landg.com^ +||smetrics.landolakes.com^ +||smetrics.landolakesfoodservice.com^ +||smetrics.landolakesinc.com^ +||smetrics.landrover.com^ +||smetrics.lanebryant.com^ +||smetrics.laredoute.fr^ +||smetrics.lasexta.com^ +||smetrics.latitudefinancial.co.nz^ +||smetrics.latitudefinancial.com.au^ +||smetrics.latitudefinancial.com^ +||smetrics.latitudepay.com.au^ +||smetrics.latitudepay.com^ +||smetrics.latrobe.edu.au^ +||smetrics.lazarediamond.jp^ +||smetrics.lcbo.com^ +||smetrics.ldproducts.com^ +||smetrics.leagueone.com^ +||smetrics.leasy.com^ +||smetrics.leasy.dk^ +||smetrics.leasy.se^ +||smetrics.legalandgeneral.com^ +||smetrics.leisuretimepassport.com^ +||smetrics.lenscrafters.ca^ +||smetrics.leonardo.essilorluxottica.com^ +||smetrics.lexmark.com^ +||smetrics.lexus.com^ +||smetrics.lexusonthepark.ca^ +||smetrics.libertymutual.com^ +||smetrics.lidea.today^ +||smetrics.lifestride.com^ +||smetrics.lifetime.life^ +||smetrics.lifree.com^ +||smetrics.lilly.com^ +||smetrics.lillymedical.com^ +||smetrics.lina.co.kr^ +||smetrics.lissage.jp^ +||smetrics.liveitup.com^ +||smetrics.lizearle.com^ +||smetrics.lloydslist.com^ +||smetrics.lloydslistintelligence.com^ +||smetrics.lmtonline.com^ +||smetrics.loblaws.ca^ +||smetrics.loewshotels.com^ +||smetrics.loft.com^ +||smetrics.lordabbett.com^ +||smetrics.los40.com.co^ +||smetrics.los40.com.mx^ +||smetrics.los40.com^ +||smetrics.louandgrey.com^ +||smetrics.louisianahealthconnect.com^ +||smetrics.lowes.com^ +||smetrics.lpl.com^ +||smetrics.ltdcommodities.com^ +||smetrics.lucentis.com^ +||smetrics.lululemon.ch^ +||smetrics.lululemon.cn^ +||smetrics.lululemon.co.jp^ +||smetrics.lululemon.co.kr^ +||smetrics.lululemon.co.nz^ +||smetrics.lululemon.co.uk^ +||smetrics.lululemon.com.au^ +||smetrics.lululemon.com.hk^ +||smetrics.lululemon.com^ +||smetrics.lululemon.de^ +||smetrics.lululemon.es^ +||smetrics.lululemon.fr^ +||smetrics.lundbeck.com^ +||smetrics.luxilon.com^ +||smetrics.lww.com^ +||smetrics.m1.com.sg^ +||smetrics.mabanque.bnpparibas^ +||smetrics.machinedesign.com^ +||smetrics.mackenzieinvestments.com^ +||smetrics.maclinfordcalgary.com^ +||smetrics.madewell.com^ +||smetrics.maestrocard.com^ +||smetrics.magic106.com^ +||smetrics.magnoliahealthplan.com^ +||smetrics.magnumicecream.com^ +||smetrics.majestic.co.uk^ +||smetrics.mamypoko.com^ +||smetrics.man-uat.com^ +||smetrics.mandai.com^ +||smetrics.mandatumam.com^ +||smetrics.mandatumlife.fi^ +||smetrics.mandatumtrader.fi^ +||smetrics.mandg.com^ +||smetrics.manheim.com^ +||smetrics.mann-filter.com^ +||smetrics.mann-hummel.com^ +||smetrics.maplesoft.com^ +||smetrics.marathonthegame.com^ +||smetrics.marcus.com^ +||smetrics.markandgraham.ca^ +||smetrics.markandgraham.com^ +||smetrics.markantalo.fi^ +||smetrics.marketfor.com^ +||smetrics.marketing.attralux.com^ +||smetrics.marketing.colorkinetics.com^ +||smetrics.marketing.interact-lighting.com.cn^ +||smetrics.marketing.interact-lighting.com^ +||smetrics.marketing.lighting.philips.at^ +||smetrics.marketing.lighting.philips.be^ +||smetrics.marketing.lighting.philips.bg^ +||smetrics.marketing.lighting.philips.ca^ +||smetrics.marketing.lighting.philips.ch^ +||smetrics.marketing.lighting.philips.cl^ +||smetrics.marketing.lighting.philips.co.id^ +||smetrics.marketing.lighting.philips.co.il^ +||smetrics.marketing.lighting.philips.co.in^ +||smetrics.marketing.lighting.philips.co.kr^ +||smetrics.marketing.lighting.philips.co.nz^ +||smetrics.marketing.lighting.philips.co.th^ +||smetrics.marketing.lighting.philips.co.uk^ +||smetrics.marketing.lighting.philips.co.za^ +||smetrics.marketing.lighting.philips.com.ar^ +||smetrics.marketing.lighting.philips.com.au^ +||smetrics.marketing.lighting.philips.com.br^ +||smetrics.marketing.lighting.philips.com.hk^ +||smetrics.marketing.lighting.philips.com.mx^ +||smetrics.marketing.lighting.philips.com.my^ +||smetrics.marketing.lighting.philips.com.ph^ +||smetrics.marketing.lighting.philips.com.pk^ +||smetrics.marketing.lighting.philips.com.tr^ +||smetrics.marketing.lighting.philips.com.tw^ +||smetrics.marketing.lighting.philips.com.vn^ +||smetrics.marketing.lighting.philips.cz^ +||smetrics.marketing.lighting.philips.de^ +||smetrics.marketing.lighting.philips.dk^ +||smetrics.marketing.lighting.philips.ee^ +||smetrics.marketing.lighting.philips.es^ +||smetrics.marketing.lighting.philips.fi^ +||smetrics.marketing.lighting.philips.fr^ +||smetrics.marketing.lighting.philips.gr^ +||smetrics.marketing.lighting.philips.hr^ +||smetrics.marketing.lighting.philips.hu^ +||smetrics.marketing.lighting.philips.it^ +||smetrics.marketing.lighting.philips.kz^ +||smetrics.marketing.lighting.philips.lt^ +||smetrics.marketing.lighting.philips.lv^ +||smetrics.marketing.lighting.philips.nl^ +||smetrics.marketing.lighting.philips.pl^ +||smetrics.marketing.lighting.philips.pt^ +||smetrics.marketing.lighting.philips.ru^ +||smetrics.marketing.lighting.philips.sa^ +||smetrics.marketing.lighting.philips.se^ +||smetrics.marketing.lighting.philips.ua^ +||smetrics.marketing.mazdalighting.fr^ +||smetrics.marketing.mazdalighting.pt^ +||smetrics.marketing.meethue.com^ +||smetrics.marketing.philips-hue.com^ +||smetrics.marketing.pila-led.com^ +||smetrics.marketing.signify.com^ +||smetrics.marksandspencer.com^ +||smetrics.marksandspencer.eu^ +||smetrics.marksandspencer.fr^ +||smetrics.marksandspencer.ie^ +||smetrics.marksandspencerlondon.com^ +||smetrics.marriott.com^ +||smetrics.marriottvacationclub.asia^ +||smetrics.marriottvacationclub.com^ +||smetrics.marshalls.com^ +||smetrics.marshandmclennan.com^ +||smetrics.martinfurnitureexperts.com^ +||smetrics.mastercard.com^ +||smetrics.mastercardadvisors.com^ +||smetrics.mastercardbrandcenter.com^ +||smetrics.mastercardbusiness.com^ +||smetrics.mastercardintl.com^ +||smetrics.mastercardmoments.com^ +||smetrics.mathworks.cn^ +||smetrics.mathworks.com^ +||smetrics.matlab.com^ +||smetrics.matlabexpo.com^ +||smetrics.maurices.com^ +||smetrics.maverik.com^ +||smetrics.maxi.ca^ +||smetrics.maxicoffee.com^ +||smetrics.maxicoffee.de^ +||smetrics.maxicoffee.it^ +||smetrics.maximintegrated.com^ +||smetrics.mazuri.com^ +||smetrics.mbsdirect.net^ +||smetrics.mcafee.com^ +||smetrics.mcdonalds.com^ +||smetrics.mcdpromotion.ca^ +||smetrics.mdlive.com^ +||smetrics.meccabingo.com^ +||smetrics.med-iq.com^ +||smetrics.med.roche.ru^ +||smetrics.medallia.com^ +||smetrics.media-global.net^ +||smetrics.mediakademie.at^ +||smetrics.mediakademie.de^ +||smetrics.medical.roche.de^ +||smetrics.medichanzo.com^ +||smetrics.medstarhealth.org^ +||smetrics.medxperts.pk^ +||smetrics.meetingsnet.com^ +||smetrics.melanom-info.dk^ +||smetrics.melanom-wissen.ch^ +||smetrics.memberdeals.com^ +||smetrics.members.co.jp^ +||smetrics.merch.bankofamerica.com^ +||smetrics.mercola.com^ +||smetrics.mercolamarket.com^ +||smetrics.mercy.net^ +||smetrics.metacam.co.uk^ +||smetrics.metacam.com^ +||smetrics.metlife.com^ +||smetrics.metrobyt-mobile.com^ +||smetrics.mfs.com^ +||smetrics.mgmresorts.com^ +||smetrics.mhlnews.com^ +||smetrics.mhsindiana.com^ +||smetrics.mhswi.com^ +||smetrics.mibcookies.rbs.com^ +||smetrics.michaeljfox.org^ +||smetrics.michaelkors.ca^ +||smetrics.michaelkors.com^ +||smetrics.michaelkors.de^ +||smetrics.michaelkors.es^ +||smetrics.michaelkors.eu^ +||smetrics.michaelkors.fr^ +||smetrics.michaelkors.global^ +||smetrics.michaelkors.it^ +||smetrics.michaelkors.uk^ +||smetrics.michaels.com^ +||smetrics.michigancompletehealth.com^ +||smetrics.michiganfarmer.com^ +||smetrics.microtelinn.com^ +||smetrics.mid-townford.com^ +||smetrics.midatlantic.aaa.com^ +||smetrics.midnightlounge.com^ +||smetrics.mieten.mercedes-benz.de^ +||smetrics.miga.org^ +||smetrics.miles-and-more.com^ +||smetrics.minisom.pt^ +||smetrics.miniusa.com^ +||smetrics.minsteronline.co.uk^ +||smetrics.miracle-ear.com^ +||smetrics.misrp.com^ +||smetrics.mistore.jp^ +||smetrics.misumi-ec.com^ +||smetrics.mitrelinen.co.uk^ +||smetrics.mitsubishi-motors.co.jp^ +||smetrics.mitsubishi-motors.com.au^ +||smetrics.mizuno.com^ +||smetrics.mizuno.jp^ +||smetrics.modernatx.com^ +||smetrics.modernhealthcare.com^ +||smetrics.modernphysician.com^ +||smetrics.mojemedicina.cz^ +||smetrics.moncoeurmavie.ca^ +||smetrics.mondex.com^ +||smetrics.moneta.cz^ +||smetrics.monetaauto.cz^ +||smetrics.monetaleasing.cz^ +||smetrics.moneymarketing.co.uk^ +||smetrics.monsanto.com^ +||smetrics.moodys.com^ +||smetrics.moony.com^ +||smetrics.moosejaw.com^ +||smetrics.morganstanley.com^ +||smetrics.morningstar.com^ +||smetrics.mosquitojoe.com^ +||smetrics.motegrity.com^ +||smetrics.motioncanada.ca^ +||smetrics.motionindustries.com^ +||smetrics.motorsportreg.com^ +||smetrics.motortrend.com^ +||smetrics.mounjaro.com^ +||smetrics.mountainhomeutah.com^ +||smetrics.mouse-jp.co.jp^ +||smetrics.moving.com^ +||smetrics.mphasis.com^ +||smetrics.mrappliance.ca^ +||smetrics.mrelectric.com^ +||smetrics.mrhandyman.ca^ +||smetrics.mro-network.com^ +||smetrics.mrplumberatlanta.com^ +||smetrics.mrplumberindy.com^ +||smetrics.mrporter.com^ +||smetrics.mrrooter.com^ +||smetrics.msccrociere.it^ +||smetrics.msccruceros.es^ +||smetrics.msccruises.be^ +||smetrics.msccruises.ca^ +||smetrics.msccruises.ch^ +||smetrics.msccruises.co.za^ +||smetrics.msccruises.de^ +||smetrics.msccruises.se^ +||smetrics.msccruzeiros.com.br^ +||smetrics.msg.com^ +||smetrics.mslifelines.com^ +||smetrics.msvoice.com^ +||smetrics.multikino.pl^ +||smetrics.multiview.com^ +||smetrics.mum.edu^ +||smetrics.murata.com^ +||smetrics.mutua.es^ +||smetrics.mutuactivos.com^ +||smetrics.mutuateayuda.es^ +||smetrics.mybenefits.com.au^ +||smetrics.mybonuscenter.com^ +||smetrics.mycondogetaway.com^ +||smetrics.mycontrolcard.com^ +||smetrics.mydccu.com^ +||smetrics.myhealthtoolkit.com^ +||smetrics.myio.com.au^ +||smetrics.mykirei.com^ +||smetrics.mylifestages.org^ +||smetrics.mymanheim.com^ +||smetrics.mymatrixx.com^ +||smetrics.mymercy.net^ +||smetrics.myonlineservices.ch^ +||smetrics.mysanantonio.com^ +||smetrics.mysensiva.com^ +||smetrics.mysleepyhead.com^ +||smetrics.myspringfield.com^ +||smetrics.myspringfield.mx^ +||smetrics.mystudywindow.com^ +||smetrics.myvi.in^ +||smetrics.myyellow.com^ +||smetrics.nab.com.au^ +||smetrics.nabbroker.com.au^ +||smetrics.nabtrade.com.au^ +||smetrics.nadaguides.com^ +||smetrics.nadro.mx^ +||smetrics.namestudio.com^ +||smetrics.napaonline.com^ +||smetrics.napaprolink.ca^ +||smetrics.napaprolink.com^ +||smetrics.nascar.com^ +||smetrics.nationalbusinessfurniture.com^ +||smetrics.nationalgeneral.com^ +||smetrics.nationalgrid.com^ +||smetrics.nationalhogfarmer.com^ +||smetrics.nationaltrust.org.uk^ +||smetrics.nationwide.co.uk^ +||smetrics.naturalizer.ca^ +||smetrics.naturalizer.com^ +||smetrics.nba.com^ +||smetrics.nbi-sems.com^ +||smetrics.nbjsummit.com^ +||smetrics.ncbank.co.jp^ +||smetrics.nebraskafarmer.com^ +||smetrics.nebraskatotalcare.com^ +||smetrics.neighborly.com^ +||smetrics.neighborlybrands.com^ +||smetrics.neighbourly.ca^ +||smetrics.nepro.com^ +||smetrics.nerium.kr^ +||smetrics.nesn.com^ +||smetrics.net-a-porter.com^ +||smetrics.netspend.com^ +||smetrics.nettokom.de^ +||smetrics.netxpress.biz^ +||smetrics.new.wyndhamvrap.com^ +||smetrics.newark.com^ +||smetrics.newbalance.com^ +||smetrics.newequipment.com^ +||smetrics.newfoundlandgrocerystores.ca^ +||smetrics.newport.com^ +||smetrics.nexium24hr.com^ +||smetrics.nexmo.com^ +||smetrics.nexusmentalhealth.com^ +||smetrics.nfl.com^ +||smetrics.nfpa.org^ +||smetrics.nhhealthyfamilies.com^ +||smetrics.ni.com^ +||smetrics.nielsen.com^ +||smetrics.nike.net^ +||smetrics.nintendo.com^ +||smetrics.nisbets.be^ +||smetrics.nisbets.co.nz^ +||smetrics.nisbets.co.uk^ +||smetrics.nisbets.com.au^ +||smetrics.nisbets.fr^ +||smetrics.nisbets.ie^ +||smetrics.nisbets.nl^ +||smetrics.nissanusa.com^ +||smetrics.noblehome.co.jp^ +||smetrics.nofrills.ca^ +||smetrics.noloan.com^ +||smetrics.nomorerules.net^ +||smetrics.nordiclaan.se^ +||smetrics.nordiclan.no^ +||smetrics.northernterritory.com^ +||smetrics.nottingham.ac.uk^ +||smetrics.nowtv.com^ +||smetrics.nowtv.it^ +||smetrics.npr.org^ +||smetrics.npubank.com.au^ +||smetrics.nrhtx.com^ +||smetrics.ntkm2.com^ +||smetrics.nuanceaudio.com^ +||smetrics.nuedexta.com^ +||smetrics.nuedextahcp.com^ +||smetrics.nutritionmatters.com^ +||smetrics.nutropin.com^ +||smetrics.nvidia.com^ +||smetrics.nycgo.com^ +||smetrics.nykaa.com^ +||smetrics.nykaafashion.com^ +||smetrics.nylaarp.com^ +||smetrics.nylexpress.newyorklife.com^ +||smetrics.nyulangone.org^ +||smetrics.o2online.de^ +||smetrics.oakley.com^ +||smetrics.oakleysi.com^ +||smetrics.obirin.ac.jp^ +||smetrics.obirin.jp^ +||smetrics.oceaniacruises.com^ +||smetrics.oclc.org^ +||smetrics.ocrelizumabinfo.com^ +||smetrics.ocrevus.com^ +||smetrics.oerproject.com^ +||smetrics.officefurniture.com^ +||smetrics.officeworks.com.au^ +||smetrics.ohiofarmer.com^ +||smetrics.ok.dk^ +||smetrics.okcashbag.com^ +||smetrics.oliverpeoples.com^ +||smetrics.omdia.com^ +||smetrics.omniture.com^ +||smetrics.ondacero.es^ +||smetrics.oneamerica.com^ +||smetrics.onetrust.com^ +||smetrics.ontechsmartservices.com^ +||smetrics.onureg.ch^ +||smetrics.onward.co.jp^ +||smetrics.opdivo.com^ +||smetrics.opdivo.dk^ +||smetrics.opdivoclinicaldata.com^ +||smetrics.opdivohcp.com^ +||smetrics.opdualag.com^ +||smetrics.openboxdirect.com^ +||smetrics.openinnovationnetwork.gov.sg^ +||smetrics.openshift.com^ +||smetrics.opensource.com^ +||smetrics.opnme.com^ +||smetrics.opsm.co.nz^ +||smetrics.opsm.com.au^ +||smetrics.optica.de^ +||smetrics.optimum.com^ +||smetrics.optimum.net^ +||smetrics.optum.com^ +||smetrics.orangetheory.com^ +||smetrics.oreilly.com^ +||smetrics.orencia.com^ +||smetrics.orenciapatient.se^ +||smetrics.otsuka-us.com^ +||smetrics.ott.showmax.com^ +||smetrics.ove.com^ +||smetrics.ovumkc.com^ +||smetrics.ownertoownercommunication.com^ +||smetrics.oxfam.org.uk^ +||smetrics.packersproshop.com^ +||smetrics.pacsun.com^ +||smetrics.pahealthwellness.com^ +||smetrics.pakietyserwisowe.pl^ +||smetrics.palopmed.com^ +||smetrics.panasonic.com^ +||smetrics.panasonic.jp^ +||smetrics.panasonic.net^ +||smetrics.pandora.com^ +||smetrics.pandora.net^ +||smetrics.panerabread.com^ +||smetrics.parkerandsons.com^ +||smetrics.partnerbrands.com^ +||smetrics.partnermastercard.com^ +||smetrics.partssource.com^ +||smetrics.payback.at^ +||smetrics.payback.de^ +||smetrics.payback.it^ +||smetrics.payback.mx^ +||smetrics.payback.net^ +||smetrics.payback.pl^ +||smetrics.paymarkfinans.dk^ +||smetrics.paymarkfinans.se^ +||smetrics.payment-estimator.vwcredit.com^ +||smetrics.paysafecard.com^ +||smetrics.pbainfo.org^ +||smetrics.pbteen.ca^ +||smetrics.pbteen.com^ +||smetrics.pch.com^ +||smetrics.pcid.ca^ +||smetrics.pcoptimum.ca^ +||smetrics.pdt.r-agent.com^ +||smetrics.peachjohn.co.jp^ +||smetrics.peakperformance.com^ +||smetrics.pearlevision.ca^ +||smetrics.pearlevision.com^ +||smetrics.pebblebeach.com^ +||smetrics.pedialyte.com^ +||smetrics.pediasure.com.my^ +||smetrics.pediasure.com^ +||smetrics.pedrodelhierro.com^ +||smetrics.peek-und-cloppenburg.de^ +||smetrics.penfed.org^ +||smetrics.penguin.co.uk^ +||smetrics.pennwell.com^ +||smetrics.pensionstallet.dk^ +||smetrics.people.com^ +||smetrics.peoplepets.com^ +||smetrics.peoplesjewellers.com^ +||smetrics.perjeta.com^ +||smetrics.persol.com^ +||smetrics.personalwirtschaft.de^ +||smetrics.petbarn.com.au^ +||smetrics.petcentric.com^ +||smetrics.petco.com^ +||smetrics.petersmithcadillac.com^ +||smetrics.petersmithgm.com^ +||smetrics.petsmart.com^ +||smetrics.petvaccinesclinic.com^ +||smetrics.pexion.co.uk^ +||smetrics.pfa.dk^ +||smetrics.pfaassetmanagement.dk^ +||smetrics.pfabank.dk^ +||smetrics.pfaejendomme.dk^ +||smetrics.pfizer.com^ +||smetrics.pfizer.nl^ +||smetrics.pfizercemp.com^ +||smetrics.pflege-onkologie.de^ +||smetrics.pgford.ca^ +||smetrics.pharmawebportal.com^ +||smetrics.phesgo.com^ +||smetrics.phoenix.edu^ +||smetrics.phoenix.gov^ +||smetrics.phoenixinwest.de^ +||smetrics.photos.com^ +||smetrics.pictet.com^ +||smetrics.pinkribbonbottle.com^ +||smetrics.pionline.com^ +||smetrics.plansponsor.com^ +||smetrics.plasticsnews.com^ +||smetrics.platformservices.co.uk^ +||smetrics.platypusshoes.com.au^ +||smetrics.playforpurpose.com.au^ +||smetrics.plumbenefits.com^ +||smetrics.plumbingtoday.biz^ +||smetrics.plumblineservices.com^ +||smetrics.plymouthrock.com^ +||smetrics.pmis.abbott.com^ +||smetrics.podiumpodcast.com^ +||smetrics.pods.com^ +||smetrics.politico.com^ +||smetrics.politico.eu^ +||smetrics.politicopro.com^ +||smetrics.polivy.com^ +||smetrics.pordentrodaesclerodermia.com.br^ +||smetrics.potterybarn.ca^ +||smetrics.potterybarn.com^ +||smetrics.potterybarnkids.ca^ +||smetrics.potterybarnkids.com^ +||smetrics.power97.com^ +||smetrics.powerelectronics.com^ +||smetrics.powertracagri.com^ +||smetrics.prada.com^ +||smetrics.pradaxapatient.se^ +||smetrics.pradaxapro.com^ +||smetrics.prado.com.sv^ +||smetrics.prd.base.be^ +||smetrics.prd.telenet.be^ +||smetrics.preautorizacionfs.com^ +||smetrics.precisionmedicineonline.com^ +||smetrics.premera.com^ +||smetrics.premierinn.com^ +||smetrics.presidentscup.com^ +||smetrics.prestigeclub.in^ +||smetrics.preventionworks.info^ +||smetrics.previcox.de^ +||smetrics.pricedigests.com^ +||smetrics.princess.com^ +||smetrics.prinovaglobal.com^ +||smetrics.privatebank.citibank.com^ +||smetrics.privilege.com^ +||smetrics.productcentral-stg.products.pwc.com^ +||smetrics.projectbaseline.com^ +||smetrics.promod.eu^ +||smetrics.promod.fr^ +||smetrics.proplan.com^ +||smetrics.prosper.com^ +||smetrics.prosure.com^ +||smetrics.protrek.jp^ +||smetrics.provigo.ca^ +||smetrics.provincial.com^ +||smetrics.proximus.be^ +||smetrics.pru.co.uk^ +||smetrics.prudential.com^ +||smetrics.pshpgeorgia.com^ +||smetrics.publicissapient.com^ +||smetrics.publiclands.com^ +||smetrics.pudahuel.cl^ +||smetrics.pulmonaryfibrosis360.com^ +||smetrics.pulmozyme.com^ +||smetrics.pulte.com^ +||smetrics.puma.com^ +||smetrics.purchase.audipureprotection.com^ +||smetrics.purchasingpower.com^ +||smetrics.purina.ca^ +||smetrics.purinamills.com^ +||smetrics.purinaone.com^ +||smetrics.purinaveterinarydiets.com^ +||smetrics.puritan.com^ +||smetrics.purolatornow.com^ +||smetrics.pvh.com^ +||smetrics.pwc-tls.it^ +||smetrics.pwc.at^ +||smetrics.pwc.be^ +||smetrics.pwc.ch^ +||smetrics.pwc.co.nz^ +||smetrics.pwc.co.tz^ +||smetrics.pwc.co.uk^ +||smetrics.pwc.co.za^ +||smetrics.pwc.com.ar^ +||smetrics.pwc.com.au^ +||smetrics.pwc.com.br^ +||smetrics.pwc.com.cy^ +||smetrics.pwc.com.pk^ +||smetrics.pwc.com.tr^ +||smetrics.pwc.com.uy^ +||smetrics.pwc.com^ +||smetrics.pwc.dk^ +||smetrics.pwc.ec^ +||smetrics.pwc.es^ +||smetrics.pwc.fi^ +||smetrics.pwc.fr^ +||smetrics.pwc.gi^ +||smetrics.pwc.hr^ +||smetrics.pwc.ie^ +||smetrics.pwc.in^ +||smetrics.pwc.is^ +||smetrics.pwc.lu^ +||smetrics.pwc.nl^ +||smetrics.pwc.no^ +||smetrics.pwc.pl^ +||smetrics.pwc.pt^ +||smetrics.pwc.ro^ +||smetrics.pwc.rs^ +||smetrics.pwc.tw^ +||smetrics.pwcalgerie.pwc.fr^ +||smetrics.pwcavocats.com^ +||smetrics.pwccn.com^ +||smetrics.pwcconsulting.co.kr^ +||smetrics.pwchk.com^ +||smetrics.pwclegal.ee^ +||smetrics.pwclegal.lu^ +||smetrics.pwcmaroc.pwc.fr^ +||smetrics.q107.com^ +||smetrics.q107fm.ca^ +||smetrics.qatarairways.com.qa^ +||smetrics.qatarairways.com^ +||smetrics.qcnet.com^ +||smetrics.quallentpharmaceuticals.com^ +||smetrics.quickenloans.org^ +||smetrics.quikshiptoner.com^ +||smetrics.quiksilver.com^ +||smetrics.quill.com^ +||smetrics.qvc.com^ +||smetrics.qvc.de^ +||smetrics.qvc.jp^ +||smetrics.qvcuk.com^ +||smetrics.rac.co.uk^ +||smetrics.rackroomshoes.com^ +||smetrics.racq.com.au^ +||smetrics.racv.com.au^ +||smetrics.radioacktiva.com^ +||smetrics.radioactiva.cl^ +||smetrics.radioimagina.cl^ +||smetrics.radiole.com^ +||smetrics.radissonhotels.com^ +||smetrics.ragsdaleair.com^ +||smetrics.rainbowintl.com^ +||smetrics.ralphlauren.be^ +||smetrics.ralphlauren.ch^ +||smetrics.ralphlauren.co.kr^ +||smetrics.ralphlauren.co.uk^ +||smetrics.ralphlauren.com.au^ +||smetrics.ralphlauren.com.my^ +||smetrics.ralphlauren.com.sg^ +||smetrics.ralphlauren.com.tw^ +||smetrics.ralphlauren.de^ +||smetrics.ralphlauren.es^ +||smetrics.ralphlauren.eu^ +||smetrics.ralphlauren.fr^ +||smetrics.ralphlauren.global^ +||smetrics.ralphlauren.ie^ +||smetrics.ralphlauren.it^ +||smetrics.ralphlauren.nl^ +||smetrics.ralphlauren.pt^ +||smetrics.ramada.com^ +||smetrics.rapidadvance.com^ +||smetrics.rarediseasesignup.com^ +||smetrics.rate.com^ +||smetrics.ray-ban.com^ +||smetrics.rci.com^ +||smetrics.rcsmetrics.it^ +||smetrics.rds.ca^ +||smetrics.realcanadiansuperstore.ca^ +||smetrics.realcommercial.com.au^ +||smetrics.reale.es^ +||smetrics.realestate.com.au^ +||smetrics.realpropertymgt.com^ +||smetrics.realsimple.com^ +||smetrics.realtor.com^ +||smetrics.recruit.co.jp^ +||smetrics.redbox.com^ +||smetrics.redbull.tv^ +||smetrics.redcapnow.com^ +||smetrics.redcross.org^ +||smetrics.redcrossblood.org^ +||smetrics.redletterdays.co.uk^ +||smetrics.reedbusiness.net^ +||smetrics.refinanso.cz^ +||smetrics.reg.kb.nl^ +||smetrics.regions.com^ +||smetrics.rejuvenation.com^ +||smetrics.rejuvenationhome.ca^ +||smetrics.remservsalarypackage.com.au^ +||smetrics.renesas.com^ +||smetrics.renesas.eu^ +||smetrics.renfe.com^ +||smetrics.rent.mercedes-benz.ch^ +||smetrics.rent.mercedes-benz.co.jp^ +||smetrics.rent.mercedes-benz.se^ +||smetrics.rentprogress.com^ +||smetrics.repco.co.nz^ +||smetrics.repco.com.au^ +||smetrics.residentlearningcenter.com^ +||smetrics.resilium.com.au^ +||smetrics.resortdeveloper.com^ +||smetrics.retailagents.tui.co.uk^ +||smetrics.rethinksma.com^ +||smetrics.rexulti.com^ +||smetrics.rexultihcp.com^ +||smetrics.rexultisavings.com^ +||smetrics.riamoneytransfer.com^ +||smetrics.rimac.com^ +||smetrics.rinpashu.jp^ +||smetrics.ris.ac.jp^ +||smetrics.riteaid.com^ +||smetrics.rituxan.com^ +||smetrics.rituxanforgpampa-hcp.com^ +||smetrics.rituxanforgpampa.com^ +||smetrics.rituxanforpv.com^ +||smetrics.rituxanforra-hcp.com^ +||smetrics.rituxanforra.com^ +||smetrics.rituxanhycela.com^ +||smetrics.riumachitearoom.jp^ +||smetrics.rlicorp.com^ +||smetrics.robeco.com^ +||smetrics.robeco.nl^ +||smetrics.roche-infohub.co.za^ +||smetrics.roche-uae.com^ +||smetrics.roche.com^ +||smetrics.roche.de^ +||smetrics.rochehelse.no^ +||smetrics.rochemd.bg^ +||smetrics.rochenet.pt^ +||smetrics.rocheonline.net^ +||smetrics.rocheplus.es^ +||smetrics.rochepro-eg.com^ +||smetrics.rochepro.hr^ +||smetrics.rock101.com^ +||smetrics.rockandpop.cl^ +||smetrics.rockettes.com^ +||smetrics.rockwellautomation.com^ +||smetrics.roland.com^ +||smetrics.rolex.com^ +||smetrics.roomandboard.com^ +||smetrics.roomservicebycort.com^ +||smetrics.roxy.com^ +||smetrics.royalcaribbean.com^ +||smetrics.rozlytrek.com^ +||smetrics.rtl.nl^ +||smetrics.rubbernews.com^ +||smetrics.ryanhomes.com^ +||smetrics.ryka.com^ +||smetrics.safeauto.com^ +||smetrics.sainsburysbank.co.uk^ +||smetrics.saks.com^ +||smetrics.saksoff5th.com^ +||smetrics.salliemae.com^ +||smetrics.salomon.com^ +||smetrics.samedelman.ca^ +||smetrics.samedelman.com^ +||smetrics.samsung.com.cn^ +||smetrics.samsung.com^ +||smetrics.samsunglife.com^ +||smetrics.sandbox.ford.com^ +||smetrics.santander.co.uk^ +||smetrics.santandertravelinsurance.co.uk^ +||smetrics.sap.com^ +||smetrics.saseurobonusmastercard.dk^ +||smetrics.saseurobonusmastercard.no^ +||smetrics.saseurobonusmastercard.se^ +||smetrics.sasktel.com^ +||smetrics.saudiairlines.com^ +||smetrics.savethechildren.org.uk^ +||smetrics.saxobank.com^ +||smetrics.saxxanlage.ostsaechsische-sparkasse-dresden.de^ +||smetrics.sazerac.com^ +||smetrics.sazeracbarrelselect.com^ +||smetrics.sazerachouse.com^ +||smetrics.sbisec.co.jp^ +||smetrics.sbishinseibank.co.jp^ +||smetrics.sbs.com.au^ +||smetrics.scandichotels.com^ +||smetrics.scandichotels.de^ +||smetrics.scandichotels.dk^ +||smetrics.scandichotels.fi^ +||smetrics.scandichotels.no^ +||smetrics.scandichotels.se^ +||smetrics.scarboroughtoyota.ca^ +||smetrics.sce.com^ +||smetrics.schindler-berufsbildung.ch^ +||smetrics.schindler.ae^ +||smetrics.schindler.ar^ +||smetrics.schindler.at^ +||smetrics.schindler.ba^ +||smetrics.schindler.be^ +||smetrics.schindler.ch^ +||smetrics.schindler.cl^ +||smetrics.schindler.co.id^ +||smetrics.schindler.co.il^ +||smetrics.schindler.co.th^ +||smetrics.schindler.co.uk^ +||smetrics.schindler.co.za^ +||smetrics.schindler.co^ +||smetrics.schindler.com.br^ +||smetrics.schindler.com.tr^ +||smetrics.schindler.com^ +||smetrics.schindler.de^ +||smetrics.schindler.eg^ +||smetrics.schindler.es^ +||smetrics.schindler.fi^ +||smetrics.schindler.fr^ +||smetrics.schindler.in^ +||smetrics.schindler.it^ +||smetrics.schindler.lt^ +||smetrics.schindler.lu^ +||smetrics.schindler.lv^ +||smetrics.schindler.ma^ +||smetrics.schindler.mt^ +||smetrics.schindler.mx^ +||smetrics.schindler.my^ +||smetrics.schindler.nl^ +||smetrics.schindler.pe^ +||smetrics.schindler.pl^ +||smetrics.schindler.pt^ +||smetrics.schindler.ro^ +||smetrics.schindler.sa^ +||smetrics.schindler.sg^ +||smetrics.schindler.vn^ +||smetrics.science.org^ +||smetrics.sciencecareers.org^ +||smetrics.sciencemagazinedigital.org^ +||smetrics.scottrade.com^ +||smetrics.sdcvisit.com^ +||smetrics.seabourn.com^ +||smetrics.seasearcher.com^ +||smetrics.seat-italia.it^ +||smetrics.seat.be^ +||smetrics.seat.ch^ +||smetrics.seat.co.nz^ +||smetrics.seat.co.uk^ +||smetrics.seat.com.mt^ +||smetrics.seat.com^ +||smetrics.seat.de^ +||smetrics.seat.es^ +||smetrics.seat.fi^ +||smetrics.seat.fr^ +||smetrics.seat.ie^ +||smetrics.seat.mx^ +||smetrics.seat.no^ +||smetrics.seat.pl^ +||smetrics.seat.pt^ +||smetrics.seat.se^ +||smetrics.seat.tn^ +||smetrics.seawheeze.com^ +||smetrics.seb.ee^ +||smetrics.seb.lt^ +||smetrics.seb.lv^ +||smetrics.seb.se^ +||smetrics.sebgroup.com^ +||smetrics.sebkort.com^ +||smetrics.secure.ehc.com^ +||smetrics.secureremserv.com.au^ +||smetrics.seeeliquisevidence.com^ +||smetrics.seguro.mediaset.es^ +||smetrics.seic.com^ +||smetrics.selectquote.com^ +||smetrics.sen.com.au^ +||smetrics.sensai-cosmetics.com^ +||smetrics.sephora.com^ +||smetrics.sephora.fr^ +||smetrics.sephora.it^ +||smetrics.sephora.pl^ +||smetrics.seriesplus.com^ +||smetrics.servicechampions.net^ +||smetrics.severntrent.com^ +||smetrics.sfchronicle.com^ +||smetrics.sfr.fr^ +||smetrics.shangri-la.com^ +||smetrics.sharecare.com^ +||smetrics.sheen.jp^ +||smetrics.shell.co.uk^ +||smetrics.shellenergy.co.uk^ +||smetrics.sherwoodbuickgmc.com^ +||smetrics.sherwoodmotorcars.com^ +||smetrics.sherwoodparkchev.com^ +||smetrics.shihang.org^ +||smetrics.shihangjituan.org^ +||smetrics.shinseibank.com^ +||smetrics.shionogi.co.jp^ +||smetrics.shionogi.tv^ +||smetrics.sho.com^ +||smetrics.shop.mrbostondrinks.com^ +||smetrics.shop.superstore.ca^ +||smetrics.shopjapan.co.jp^ +||smetrics.shopmyexchange.com^ +||smetrics.shopnbc.com^ +||smetrics.shoppersdrugmart.ca^ +||smetrics.shoppremiumoutlets.com^ +||smetrics.showcase.ca^ +||smetrics.showtickets.com^ +||smetrics.showtime.com^ +||smetrics.showtimeanytime.com^ +||smetrics.siapnge.com^ +||smetrics.siblu.com^ +||smetrics.siblu.de^ +||smetrics.siblu.es^ +||smetrics.siblu.fr^ +||smetrics.siblu.nl^ +||smetrics.sierra.com^ +||smetrics.silversummithealthplan.com^ +||smetrics.simargenta.be^ +||smetrics.similac.com^ +||smetrics.simplyink.com^ +||smetrics.singlife.com^ +||smetrics.siriusxm.ca^ +||smetrics.siriusxm.com^ +||smetrics.sisal.it^ +||smetrics.sitestuff.com^ +||smetrics.sivasdescalzo.com^ +||smetrics.sj.se^ +||smetrics.sjmtech.ma^ +||smetrics.skandia.se^ +||smetrics.skandiabanken.se^ +||smetrics.skechers.co.nz^ +||smetrics.skechers.com.au^ +||smetrics.skiphop.com^ +||smetrics.skipton.co.uk^ +||smetrics.skodafinancialservices.nl^ +||smetrics.sky.com^ +||smetrics.sky.de^ +||smetrics.sky.es^ +||smetrics.sky.it^ +||smetrics.skyhighsecurity.com^ +||smetrics.slalom.com^ +||smetrics.sleepnumber.com^ +||smetrics.sling.com^ +||smetrics.sloc.co.uk^ +||smetrics.slugger.com^ +||smetrics.smart-invest.sparkasse-wuppertal.de^ +||smetrics.smartcommerce.amazon.in^ +||smetrics.smartervacations.com^ +||smetrics.smartmove.us^ +||smetrics.smartstyle.com^ +||smetrics.smartvermoegen.de^ +||smetrics.smbcnikko.co.jp^ +||smetrics.smtb.jp^ +||smetrics.snapfish.ca^ +||smetrics.snapfish.ch^ +||smetrics.snapfish.co.nz^ +||smetrics.snapfish.co.uk^ +||smetrics.snapfish.com.au^ +||smetrics.snapfish.com^ +||smetrics.snapfish.fr^ +||smetrics.snapfish.it^ +||smetrics.snapfish.nl^ +||smetrics.snapfish.no^ +||smetrics.snapfish.pt^ +||smetrics.snapfish.se^ +||smetrics.societyofvaluedminds.org^ +||smetrics.sofina.co.jp^ +||smetrics.sofina.com^ +||smetrics.softcrylic.com^ +||smetrics.softwareag.com^ +||smetrics.sofy.jp^ +||smetrics.sofygirls.com^ +||smetrics.solarwinds.com^ +||smetrics.solaseedair.jp^ +||smetrics.solidigm.com^ +||smetrics.solidigm.de^ +||smetrics.solidigmtech.com.cn^ +||smetrics.solidigmtechnology.cn^ +||smetrics.solidigmtechnology.jp^ +||smetrics.solidigmtechnology.kr^ +||smetrics.solinst.com^ +||smetrics.solomobile.ca^ +||smetrics.solvingmdddisconnect.com^ +||smetrics.sony-africa.com^ +||smetrics.sony-asia.com^ +||smetrics.sony-europe.com^ +||smetrics.sony.at^ +||smetrics.sony.be^ +||smetrics.sony.bg^ +||smetrics.sony.ca^ +||smetrics.sony.ch^ +||smetrics.sony.cl^ +||smetrics.sony.co.cr^ +||smetrics.sony.co.id^ +||smetrics.sony.co.in^ +||smetrics.sony.co.kr^ +||smetrics.sony.co.nz^ +||smetrics.sony.co.th^ +||smetrics.sony.co.uk^ +||smetrics.sony.com.au^ +||smetrics.sony.com.br^ +||smetrics.sony.com.co^ +||smetrics.sony.com.do^ +||smetrics.sony.com.ec^ +||smetrics.sony.com.hn^ +||smetrics.sony.com.mx^ +||smetrics.sony.com.pa^ +||smetrics.sony.com.pe^ +||smetrics.sony.com.ph^ +||smetrics.sony.com.tr^ +||smetrics.sony.com.tw^ +||smetrics.sony.com.vn^ +||smetrics.sony.com^ +||smetrics.sony.cz^ +||smetrics.sony.de^ +||smetrics.sony.dk^ +||smetrics.sony.ee^ +||smetrics.sony.es^ +||smetrics.sony.eu^ +||smetrics.sony.fi^ +||smetrics.sony.fr^ +||smetrics.sony.gr^ +||smetrics.sony.hr^ +||smetrics.sony.hu^ +||smetrics.sony.ie^ +||smetrics.sony.it^ +||smetrics.sony.jp^ +||smetrics.sony.kz^ +||smetrics.sony.lt^ +||smetrics.sony.lu^ +||smetrics.sony.lv^ +||smetrics.sony.nl^ +||smetrics.sony.no^ +||smetrics.sony.pl^ +||smetrics.sony.pt^ +||smetrics.sony.ro^ +||smetrics.sony.ru^ +||smetrics.sony.se^ +||smetrics.sony.si^ +||smetrics.sony.sk^ +||smetrics.sony.ua^ +||smetrics.sonylatvija.com^ +||smetrics.sorgenia.it^ +||smetrics.sothebys.com^ +||smetrics.sotyktu.com^ +||smetrics.sotyktuhcp.com^ +||smetrics.sourceesb.com^ +||smetrics.southaustralia.com^ +||smetrics.southeastfarmpress.com^ +||smetrics.southerncomfort.com^ +||smetrics.southernglazers.com^ +||smetrics.southwest.com^ +||smetrics.southwestfarmpress.com^ +||smetrics.southwesthotels.com^ +||smetrics.southwestwifi.com^ +||smetrics.soyaparabebe.com.co^ +||smetrics.spaf-academy.pl^ +||smetrics.spanx.com^ +||smetrics.spargofinans.se^ +||smetrics.sparkassendirekt.de^ +||smetrics.spdrs.com^ +||smetrics.speedousa.com^ +||smetrics.spela.svenskaspel.se^ +||smetrics.spendwise.no^ +||smetrics.spendwise.se^ +||smetrics.spiriva.com^ +||smetrics.sportsbet.com.au^ +||smetrics.sportsmansguide.com^ +||smetrics.sprucemoney.com^ +||smetrics.sptoyota.com^ +||smetrics.srpnet.com^ +||smetrics.srptelecom.com^ +||smetrics.ssfcu.org^ +||smetrics.ssga.com^ +||smetrics.standardandpoors.com^ +||smetrics.stanfordchildrens.org^ +||smetrics.stanfordhealthcare.org^ +||smetrics.staples.com^ +||smetrics.staplesadvantage.co.nz^ +||smetrics.staplesadvantage.com.au^ +||smetrics.staplesadvantage.com^ +||smetrics.starhub.com^ +||smetrics.stark.dk^ +||smetrics.startribune.com^ +||smetrics.statefarm.com^ +||smetrics.statestreet.com^ +||smetrics.statnews.com^ +||smetrics.stewartseeds.com^ +||smetrics.stgeorge.com.au^ +||smetrics.store.irobot.com^ +||smetrics.store360.luxottica.com^ +||smetrics.strategyand.pwc.com^ +||smetrics.stressless.com^ +||smetrics.striderite.com^ +||smetrics.strokeawareness.com^ +||smetrics.stubhub.co.uk^ +||smetrics.stwater.co.uk^ +||smetrics.stylefind.com^ +||smetrics.subaruofsaskatoon.ca^ +||smetrics.suisai-global.net^ +||smetrics.sumitclub.jp^ +||smetrics.suncorp.co.nz^ +||smetrics.suncorp.com.au^ +||smetrics.suncorpbank.com.au^ +||smetrics.sunflowerhealthplan.com^ +||smetrics.sunglasshut.com^ +||smetrics.sunlife.ca^ +||smetrics.sunlife.com.vn^ +||smetrics.sunlife.com^ +||smetrics.sunlife.ie^ +||smetrics.sunlifeconnect.com^ +||smetrics.sunlifefinancialtrust.ca^ +||smetrics.sunlifeglobalinvestments.com^ +||smetrics.sunpower.com^ +||smetrics.sunshinehealth.com^ +||smetrics.super8.com^ +||smetrics.super99.com^ +||smetrics.superfleet.net^ +||smetrics.superiorhealthplan.com^ +||smetrics.supermarketnews.com^ +||smetrics.suppliesguys.com^ +||smetrics.sustainableplastics.com^ +||smetrics.suunto.com^ +||smetrics.svd.se^ +||smetrics.swalife.com^ +||smetrics.swinburne.edu.au^ +||smetrics.swisslife-select.de^ +||smetrics.synergy.net.au^ +||smetrics.synjardyhcp.com^ +||smetrics.synopsys.com^ +||smetrics.sysmex-support.com^ +||smetrics.t-mobile.com^ +||smetrics.t-mobilemoney.com^ +||smetrics.tab.com.au^ +||smetrics.tabletable.co.uk^ +||smetrics.tackntogs.com^ +||smetrics.tacobell.com^ +||smetrics.takami-labo.com^ +||smetrics.talbots.com^ +||smetrics.talkaboutlaminitis.co.uk^ +||smetrics.taltz.com^ +||smetrics.tamiflu.com^ +||smetrics.tarceva.com^ +||smetrics.target.com^ +||smetrics.targetoptical.com^ +||smetrics.tarrantcounty.com^ +||smetrics.tastingaustralia.com.au^ +||smetrics.tataaia.com^ +||smetrics.tataaig.com^ +||smetrics.taylormadegolf.com^ +||smetrics.taylors.edu.my^ +||smetrics.taymark.taylorcorp.com^ +||smetrics.tbs.com^ +||smetrics.tcm.com^ +||smetrics.tcs.com^ +||smetrics.tdc.dk^ +||smetrics.tdworld.com^ +||smetrics.te.com^ +||smetrics.teachforamerica.org^ +||smetrics.teambeachbody.com^ +||smetrics.tecentriq-hcp.com^ +||smetrics.tecentriq.com^ +||smetrics.techdata.com^ +||smetrics.tecoloco.co.cr^ +||smetrics.tecoloco.com^ +||smetrics.tedbaker.com^ +||smetrics.teeoff.com^ +||smetrics.telecel.com.gh^ +||smetrics.telegraph.co.uk^ +||smetrics.telenet.be^ +||smetrics.telenor.dk^ +||smetrics.telenor.se^ +||smetrics.teletoon.com^ +||smetrics.telustvplus.com^ +||smetrics.ten.com.au^ +||smetrics.tesco.com^ +||smetrics.tescobank.com^ +||smetrics.tetrapak.com^ +||smetrics.textbooks.com^ +||smetrics.tfl.gov.uk^ +||smetrics.tgw.com^ +||smetrics.the-farmer.com^ +||smetrics.theathletesfoot.co.nz^ +||smetrics.theathletesfoot.com.au^ +||smetrics.thebay.com^ +||smetrics.theetihadaviationgroup.com^ +||smetrics.thefa.com^ +||smetrics.thegpsa.org^ +||smetrics.thelawyer.com^ +||smetrics.themadisonsquaregardencompany.com^ +||smetrics.theoutnet.com^ +||smetrics.thepeakfm.com^ +||smetrics.theplayers.com^ +||smetrics.thespacecinema.it^ +||smetrics.thespecialeventshow.com^ +||smetrics.thetruth.com^ +||smetrics.thewhitecompany.com^ +||smetrics.thewolf.ca^ +||smetrics.thingspeak.com^ +||smetrics.thingsremembered.com^ +||smetrics.thinkstockphotos.com^ +||smetrics.thomasgalbraith.com^ +||smetrics.thomsonlakes.co.uk^ +||smetrics.thomsonski.co.uk^ +||smetrics.thorn.se^ +||smetrics.thoughtworks.com^ +||smetrics.three.co.uk^ +||smetrics.three.ie^ +||smetrics.thrivent.com^ +||smetrics.thriventfinancial.com^ +||smetrics.thymes.com^ +||smetrics.tiaa-cref.org^ +||smetrics.tiaa.org^ +||smetrics.ticket.dk^ +||smetrics.ticket.fi^ +||smetrics.ticket.no^ +||smetrics.ticket.se^ +||smetrics.ticketmaster.com^ +||smetrics.ticketsatwork.com^ +||smetrics.tienda.telcel.com^ +||smetrics.tiendamonge.com^ +||smetrics.tiffany.com.br^ +||smetrics.tiffany.com.mx^ +||smetrics.tiffany.kr^ +||smetrics.tiffany.ru^ +||smetrics.timberland.com^ +||smetrics.timberland.es^ +||smetrics.timberland.fr^ +||smetrics.timberland.it^ +||smetrics.time.com^ +||smetrics.timeforkids.com^ +||smetrics.timeinc.com^ +||smetrics.timeinc.net^ +||smetrics.timeout.com^ +||smetrics.tirebusiness.com^ +||smetrics.tjekdinpuls.dk^ +||smetrics.tlcgroup.com^ +||smetrics.tmz.com^ +||smetrics.tnkase.com^ +||smetrics.tochinavi.net^ +||smetrics.tokbox.com^ +||smetrics.tomecontroldesusalud.com^ +||smetrics.tommy.com^ +||smetrics.tommybahama.com^ +||smetrics.toofab.com^ +||smetrics.toptenreviews.com^ +||smetrics.totalwine.com^ +||smetrics.tourdownunder.com.au^ +||smetrics.toyota.com^ +||smetrics.toyotanorthwestedmonton.com^ +||smetrics.toyotaonthepark.ca^ +||smetrics.toysrus.com^ +||smetrics.toysrus.es^ +||smetrics.traction.com^ +||smetrics.tractorsupply.com^ +||smetrics.traderonline.com^ +||smetrics.trailer-bodybuilders.com^ +||smetrics.trainsfares.co.uk^ +||smetrics.transact711.com^ +||smetrics.transactfamilycard.com^ +||smetrics.travelchannel.com^ +||smetrics.travelmoneyonline.co.uk^ +||smetrics.travelzoo.com^ +||smetrics.treehousetv.com^ +||smetrics.trellix.com^ +||smetrics.trendmicro.co.jp^ +||smetrics.trendmicro.com^ +||smetrics.trendyol.com^ +||smetrics.trilliumadvantage.com^ +||smetrics.trilliumhealthplan.com^ +||smetrics.trilliumohp.com^ +||smetrics.tropicanafm.com^ +||smetrics.trucker.com^ +||smetrics.truckfleetmro.com^ +||smetrics.truffaut.com^ +||smetrics.trulicity.com^ +||smetrics.trustmark.com^ +||smetrics.truthinitiative.org^ +||smetrics.tryg.dk^ +||smetrics.trygghansa.se^ +||smetrics.tsc.ca^ +||smetrics.tsn.ca^ +||smetrics.ttiinc.com^ +||smetrics.tudorwatch.com^ +||smetrics.tui.co.uk^ +||smetrics.tui.no^ +||smetrics.tui.se^ +||smetrics.tuifly.fr^ +||smetrics.tuleva.fi^ +||smetrics.tune-h.com^ +||smetrics.tuneup.de^ +||smetrics.tunisie.pwc.fr^ +||smetrics.tuvsud.com^ +||smetrics.tv2.dk^ +||smetrics.twany-hadabae.jp^ +||smetrics.typ2podden.se^ +||smetrics.tyro.com^ +||smetrics.tyson.com^ +||smetrics.tysonfoodservice.com^ +||smetrics.u-can.co.jp^ +||smetrics.ubi.com^ +||smetrics.uconnect.dtm.chrysler.com^ +||smetrics.uhc.com^ +||smetrics.undercovertourist.com^ +||smetrics.unipolsai.it^ +||smetrics.unitymediabusiness.de^ +||smetrics.upc.ch^ +||smetrics.ups.com^ +||smetrics.urgentcomm.com^ +||smetrics.us.playstation.com^ +||smetrics.us.trintellix.com^ +||smetrics.usaaperks.com^ +||smetrics.usbank.com^ +||smetrics.usopen.org^ +||smetrics.utech-polyurethane.com^ +||smetrics.utilityanalyticsweek.com^ +||smetrics.valumart.ca^ +||smetrics.vangraaf.com^ +||smetrics.vans.co.nz^ +||smetrics.vans.com.au^ +||smetrics.variis.com^ +||smetrics.vcm.com^ +||smetrics.velocityfrequentflyer.com^ +||smetrics.verdugotienda.com^ +||smetrics.vergoelst.de^ +||smetrics.verisign.com^ +||smetrics.vermontcountrystore.com^ +||smetrics.vermontcreamery.com^ +||smetrics.vero.co.nz^ +||smetrics.vetmedica.de^ +||smetrics.vetplus.com.au^ +||smetrics.viabcp.com^ +||smetrics.viasat.com^ +||smetrics.viceroyhotelsandresorts.com^ +||smetrics.viega.at^ +||smetrics.viega.be^ +||smetrics.viega.com^ +||smetrics.viega.cz^ +||smetrics.viega.de^ +||smetrics.viega.dk^ +||smetrics.viega.es^ +||smetrics.viega.fr^ +||smetrics.viega.hr^ +||smetrics.viega.hu^ +||smetrics.viega.in^ +||smetrics.viega.it^ +||smetrics.viega.lt^ +||smetrics.viega.nl^ +||smetrics.viega.no^ +||smetrics.viega.pl^ +||smetrics.viega.pt^ +||smetrics.viega.rs^ +||smetrics.viega.se^ +||smetrics.viega.us^ +||smetrics.viewtabi.jp^ +||smetrics.viigalan.se^ +||smetrics.vikingline.ax^ +||smetrics.vikingline.ee^ +||smetrics.vikingline.fi^ +||smetrics.vince.com^ +||smetrics.virginatlantic.com^ +||smetrics.virginaustralia.com^ +||smetrics.virginmedia.com^ +||smetrics.virginmediabusiness.co.uk^ +||smetrics.virginmoney.com.au^ +||smetrics.virtual-cosme.net^ +||smetrics.virusbuster.jp^ +||smetrics.visiondirect.co.uk^ +||smetrics.visitsingapore.com.cn^ +||smetrics.visitsingapore.com^ +||smetrics.vitacost.com^ +||smetrics.vitalsource.com^ +||smetrics.vitamix.com^ +||smetrics.vitasure.com.tr^ +||smetrics.vodafone.al^ +||smetrics.vodafone.co.nz^ +||smetrics.vodafone.co.uk^ +||smetrics.vodafone.com.gh^ +||smetrics.vodafone.com.tr^ +||smetrics.vodafone.es^ +||smetrics.vodafone.gr^ +||smetrics.vodafone.in^ +||smetrics.vodafone.qa^ +||smetrics.vodafone.ro^ +||smetrics.vodafonecu.gr^ +||smetrics.vogue-eyewear.com^ +||smetrics.volkswagenfinancialservices.nl^ +||smetrics.volusion.com^ +||smetrics.vonage.ca^ +||smetrics.vonage.co.uk^ +||smetrics.vonage.com^ +||smetrics.vrst.com^ +||smetrics.vrtx.com^ +||smetrics.vsemirnyjbank.org^ +||smetrics.vueling.com^ +||smetrics.vw.com^ +||smetrics.vwfs-service-plans.io^ +||smetrics.vwfs.co.uk^ +||smetrics.vwfs.com.br^ +||smetrics.vwfs.com^ +||smetrics.vwfs.cz^ +||smetrics.vwfs.de^ +||smetrics.vwfs.es^ +||smetrics.vwfs.fr^ +||smetrics.vwfs.gr^ +||smetrics.vwfs.ie^ +||smetrics.vwfs.io^ +||smetrics.vwfs.it^ +||smetrics.vwfs.mx^ +||smetrics.vwfs.pl^ +||smetrics.vwfs.pt^ +||smetrics.vwpfs.nl^ +||smetrics.vyvansepro.com^ +||smetrics.walgreens.com^ +||smetrics.walmart.com^ +||smetrics.walmartmoneycard.com^ +||smetrics.walmartstores.com^ +||smetrics.wardsintelligence.informa.com^ +||smetrics.warners.com^ +||smetrics.waseda-ac.co.jp^ +||smetrics.washingtonpost.com^ +||smetrics.waste360.com^ +||smetrics.watch.nba.com^ +||smetrics.waterlooford.com^ +||smetrics.waterloolincoln.com^ +||smetrics.waters.com^ +||smetrics.wavespartnership.org^ +||smetrics.wdeportes.com^ +||smetrics.wdrake.com^ +||smetrics.webex.com^ +||smetrics.webnova.abbottnutrition.com^ +||smetrics.wedenik.com^ +||smetrics.weflive.com^ +||smetrics.wegmans.com^ +||smetrics.wellcareky.com^ +||smetrics.west.edu^ +||smetrics.westcoastuniversity.edu^ +||smetrics.westelm.ca^ +||smetrics.westelm.com^ +||smetrics.westernaustralia.com^ +||smetrics.westernfarmpress.com^ +||smetrics.westernskycommunitycare.com^ +||smetrics.westernunion.com^ +||smetrics.westgateresorts.com^ +||smetrics.westpac.com.au^ +||smetrics.westpacgroup.com.au^ +||smetrics.wgu.edu^ +||smetrics.whatsappsim.de^ +||smetrics.whitbreadinns.co.uk^ +||smetrics.whitbyoshawahonda.com^ +||smetrics.wibe.com^ +||smetrics.wileyplus.com^ +||smetrics.williamhill.com^ +||smetrics.williamhill.es^ +||smetrics.williamhill.it^ +||smetrics.williamhillplc.com^ +||smetrics.williams-sonoma.ca^ +||smetrics.williams-sonoma.com^ +||smetrics.williamscomfortair.com^ +||smetrics.williamsf1.com^ +||smetrics.wilson.com^ +||smetrics.wilsonniblett.com^ +||smetrics.wimbledon.com^ +||smetrics.winc.co.nz^ +||smetrics.winc.com.au^ +||smetrics.winespectator.com^ +||smetrics.winfieldunited.com^ +||smetrics.wireimage.com^ +||smetrics.wirmagazin.de^ +||smetrics.wixfilters.com^ +||smetrics.wm.com^ +||smetrics.wmaze.com^ +||smetrics.wmg.com^ +||smetrics.wnba.com^ +||smetrics.wnetwork.com^ +||smetrics.wolterskluwer.com^ +||smetrics.woma-group.com^ +||smetrics.womensecret.com^ +||smetrics.womensecret.mx^ +||smetrics.workforce.com^ +||smetrics.workfront.com^ +||smetrics.workingadvantage.com^ +||smetrics.worldbank.org^ +||smetrics.worldbankgroup.org^ +||smetrics.worldmarket.com^ +||smetrics.worldvision.org^ +||smetrics.wowtv.de^ +||smetrics.wradio.com.co^ +||smetrics.wradio.com.mx^ +||smetrics.wrs.com.sg^ +||smetrics.wsib2b.com^ +||smetrics.wszechnica.roche.pl^ +||smetrics.wu.com^ +||smetrics.wunetspendprepaid.com^ +||smetrics.www.hondros.edu^ +||smetrics.www.vwfs.de^ +||smetrics.wyndham.com^ +||smetrics.wyndhamhotelgroup.com^ +||smetrics.wyndhamhotels.com^ +||smetrics.wyndhamrewards.com^ +||smetrics.xe.com^ +||smetrics.xofluza.com^ +||smetrics.xolairhcp.com^ +||smetrics.y108.ca^ +||smetrics.yaencontre.com^ +||smetrics.ybs.co.uk^ +||smetrics.yellow.com.au^ +||smetrics.yellowpages.com.au^ +||smetrics.yesterdaysnews.com^ +||smetrics.yo-ko-o.com^ +||smetrics.yo-ko-o.jp^ +||smetrics.yourconroenews.com^ +||smetrics.yourdot.com^ +||smetrics.yourdot.net^ +||smetrics.yourheartyourdecision.com^ +||smetrics.yourindependentgrocer.ca^ +||smetrics.yrcw.com^ +||smetrics.ytv.com^ +||smetrics.zagg.com^ +||smetrics.zales.com^ +||smetrics.zalesoutlet.com^ +||smetrics.zehrs.ca^ +||smetrics.zeiss.com^ +||smetrics.zeposia.com^ +||smetrics.zeposiareg.ch^ +||smetrics.zexy-en-soudan.net^ +||smetrics.zexy-enmusubi.net^ +||smetrics.zimmerbiomet.com^ +||smetrics.ziplyfiber.com^ +||smetrics.zodiacshoes.com^ +||smetrics.zoneperfect.com^ +||smetrics.zurichlife.co.jp^ +||smetrics1.experian.com^ +||smetrics2.kaiserpermanente.org^ +||smetrics2.nokia.com^ +||smetrics2.williamhill.com^ +||smetricsadobe.hollandandbarrett.be^ +||smetricsadobe.hollandandbarrett.com^ +||smetricsadobe.hollandandbarrett.ie^ +||smetricsadobe.hollandandbarrett.nl^ +||smetricsqa.sierra.com^ +||smetricstur.www.svenskaspel.se^ +||smetrix.avon.uk.com^ +||smetrix.youravon.com^ +||sminerva.healthcentral.com^ +||smobile.wotif.com^ +||smodus.nike.com^ +||smon.activate.cz^ +||smon.blackhistorymonth.gov^ +||smon.congress.gov^ +||smon.copyright.gov^ +||smon.loc.gov^ +||sms.ajopharmabeta.riteaid.com^ +||sms.apac.coca-cola.com^ +||sms.em.officedepot.com^ +||sms.email-disney.cjm.adobe.com^ +||sms.email-mobiledx.cjm.adobe.com^ +||sms.info.smart.com^ +||sms.mcafee.com^ +||sms.nespresso.com^ +||sms.northeast.aaa.com^ +||sms.notice.assurancewireless.com^ +||sms.notice.metrobyt-mobile.com^ +||sms.notice.t-mobile.com^ +||sms.realmadrid1.test.cjmadobe.com^ +||sms.riteaid.com^ +||smtc.qantas.com.au^ +||smtc.qantas.com^ +||smtrcs.redhat.com^ +||smtx.belfius.be^ +||smtx.lastminute.com.au^ +||smtx.travel.com.au^ +||smy.iheart.com^ +||snalytics.accidenthero.at^ +||snalytics.allianz-assistance.at^ +||snalytics.allianz-assistance.es^ +||snalytics.allianz-assistance.ie^ +||snalytics.allianz-assistance.nl^ +||snalytics.allianz-reiseversicherung.de^ +||snalytics.allianz-travel.com.hk^ +||snalytics.allianz-voyage.fr^ +||snalytics.allyz.com^ +||snalytics.travelinsurance.ca^ +||so.blue.ch^ +||so.bluecinema.ch^ +||so.bluenews.ch^ +||so.blueplus.ch^ +||so.bluewin.ch^ +||so.boh.com^ +||so.desertschools.org^ +||so.opentable.co.uk^ +||so.opentable.com^ +||so.otrestaurant.com^ +||so.sunrise.ch^ +||so.swisscom.ch^ +||so8.hyatt.com^ +||socs.hagerty.com^ +||som.abritel.fr^ +||som.aluguetemporada.com.br^ +||som.athenahealth.com^ +||som.blockbuster.com^ +||som.cablestogo.co.uk^ +||som.cbsi.com^ +||som.constellation.com^ +||som.craftsman.com^ +||som.escapehomes.com^ +||som.gaservesamerica.com^ +||som.greatwolf.com^ +||som.healthgrades.com^ +||som.homeaway.com.au^ +||som.homeaway.com.co^ +||som.homeaway.com^ +||som.homeaway.pt^ +||som.hotels.com^ +||som.hotwire.com^ +||som.kenmore.com^ +||som.newenergy.com^ +||som.reethirah.oneandonlyresorts.com^ +||som.resortime.com^ +||som.ringcentral.com^ +||som.sears.com^ +||som.vrbo.com^ +||sometrics.netapp.com^ +||somn.hiltongrandvacations.com^ +||somn.sonypictures.com^ +||somn.wholesalehalloweencostumes.com^ +||somn.wholesalepartysupplies.com^ +||somni.accenture.com^ +||somni.alaskaair.com^ +||somni.americanwesthomes.com^ +||somni.amrock.com^ +||somni.amsurg.com^ +||somni.ashleyfurniturehomestore.com^ +||somni.aussiespecialist.com^ +||somni.australia.cn^ +||somni.australia.com^ +||somni.avg.com^ +||somni.banzel.com^ +||somni.bcg.com^ +||somni.bd.pcm.com^ +||somni.bell.ca^ +||somni.bgsaxo.it^ +||somni.bluebird.com^ +||somni.bluecrossma.com^ +||somni.bostonpizza.com^ +||somni.carecredit.com^ +||somni.carecreditprovidercenter.com^ +||somni.choicehotels.com^ +||somni.cineplex.com^ +||somni.cineplexdigitalmedia.com^ +||somni.cn.saxobank.com^ +||somni.copaair.com^ +||somni.cpobd.com^ +||somni.cpogenerac.com^ +||somni.cpopowermatic.com^ +||somni.cporotarytools.com^ +||somni.cposenco.com^ +||somni.cpowilton.com^ +||somni.cpoworkshop.com^ +||somni.creditonebank.com^ +||somni.csc.com^ +||somni.deere.com^ +||somni.deloittenet.deloitte.com^ +||somni.dexknows.com^ +||somni.dispatch.com^ +||somni.djoglobal.com^ +||somni.dsw.com^ +||somni.dxc.technology^ +||somni.edisonfinancial.ca^ +||somni.empr.com^ +||somni.endocrinologyadvisor.com^ +||somni.fathead.com^ +||somni.firsttechfed.com^ +||somni.genworth.com^ +||somni.getscarlet.com^ +||somni.giljimenez.com^ +||somni.hallmarkecards.com^ +||somni.hardrockhotels.com^ +||somni.home.saxo^ +||somni.huk.de^ +||somni.huk24.de^ +||somni.icicihfc.com^ +||somni.innforks.com^ +||somni.istockphoto.com^ +||somni.lightstream.com^ +||somni.mapac.thermofisher.com^ +||somni.moneytips.com^ +||somni.mycme.com^ +||somni.myrocket.com^ +||somni.myspendwell.com^ +||somni.mysynchrony.com^ +||somni.neighbourly.co.nz^ +||somni.neurologyadvisor.com^ +||somni.nine.com.au^ +||somni.orvis.com^ +||somni.pcm.com^ +||somni.pemco.com^ +||somni.playdium.com^ +||somni.pluralsight.com^ +||somni.qlmortgageservices.com^ +||somni.quickenloans.org^ +||somni.redcardreloadable.com^ +||somni.rei.com^ +||somni.reifund.org^ +||somni.rkt.zone^ +||somni.rocketaccount.com^ +||somni.rocketauto.com^ +||somni.rocketcard.com^ +||somni.rockethomes.com^ +||somni.rockethq.com^ +||somni.rocketloans.com^ +||somni.rocketmoney.com^ +||somni.rocketmortgage.ca^ +||somni.rocketmortgage.com^ +||somni.rocketmortgagesquares.com^ +||somni.rocketpro.com^ +||somni.rocketprotpo.com^ +||somni.sbicard.com^ +||somni.sbimobility.com^ +||somni.scmagazine.com^ +||somni.serve.com^ +||somni.silversea.com^ +||somni.sky.at^ +||somni.sky.de^ +||somni.sundancecatalog.com^ +||somni.suntrust.com^ +||somni.superonline.net^ +||somni.syf.com^ +||somni.syfpayments.com^ +||somni.synchrony.com^ +||somni.synchronybank.com^ +||somni.synchronybusiness.com^ +||somni.synchronycareers.com^ +||somni.tatacard.com^ +||somni.thatsmymortgage.com^ +||somni.thedarcyhotel.com^ +||somni.therecroom.com^ +||somni.thermofisher.com^ +||somni.turkcell.com.tr^ +||somni.vikingrivercruises.com^ +||somni.vrk.de^ +||somni.westernasset.com^ +||somni.winwithp1ag.com^ +||somni.yellowpages.com^ +||somnistats.jetblue.com^ +||somnit.blinkfitness.com^ +||somnit.equinox.com^ +||somniture.chip.de^ +||somniture.compactappliance.com^ +||somniture.corel.com^ +||somniture.edgestar.com^ +||somniture.faucetdirect.com^ +||somniture.handlesets.com^ +||somniture.kegerator.com^ +||somniture.lightingdirect.com^ +||somniture.livingdirect.com^ +||somniture.pullsdirect.com^ +||somniture.scotiabank.com^ +||somniture.scotiabank.mobi^ +||somniture.stuff.co.nz^ +||somniture.ventingdirect.com^ +||somniture.ventingpipe.com^ +||somniture.winecoolerdirect.com^ +||somniture.yodlee.com^ +||somt.honda.com^ +||somtr.financialengines.com^ +||somtrdc.jobsdb.com^ +||somtrdc.jobstreet.co.id^ +||somtrdc.jobstreet.com.my^ +||somtrdc.jobstreet.com.ph^ +||somtrdc.jobstreet.com.sg^ +||somtrdc.jobstreet.com^ +||somtrdc.jobstreet.vn^ +||soptimize.southwest.com^ +||sosc.hrs.com^ +||sowa.carhartt.com^ +||spc.personalcreations.com^ +||spersonalization.mrappliance.ca^ +||spersonalization.mrappliance.com^ +||spersonalization.mrelectric.com^ +||spersonalization.mrrooter.ca^ +||spersonalization.mrrooter.com^ +||spersonalization.rainbowintl.com^ +||sphc.caring4cancer.com^ +||spscas.hitachi-solutions.co.jp^ +||srepdata.12newsnow.com^ +||srepdata.13wmaz.com^ +||srepdata.app.com^ +||srepdata.armytimes.com^ +||srepdata.azcentral.com^ +||srepdata.caller.com^ +||srepdata.citizen-times.com^ +||srepdata.clarionledger.com^ +||srepdata.coloradoan.com^ +||srepdata.coshoctontribune.com^ +||srepdata.courier-journal.com^ +||srepdata.courierpostonline.com^ +||srepdata.dailyworld.com^ +||srepdata.desertsun.com^ +||srepdata.elpasotimes.com^ +||srepdata.eveningsun.com^ +||srepdata.fdlreporter.com^ +||srepdata.fox15abilene.com^ +||srepdata.freep.com^ +||srepdata.golfweek.com^ +||srepdata.greatfallstribune.com^ +||srepdata.guampdn.com^ +||srepdata.hometownlife.com^ +||srepdata.inyork.com^ +||srepdata.ithacajournal.com^ +||srepdata.jconline.com^ +||srepdata.jsonline.com^ +||srepdata.kcentv.com^ +||srepdata.kens5.com^ +||srepdata.kgw.com^ +||srepdata.kiiitv.com^ +||srepdata.kitsapsun.com^ +||srepdata.knoxnews.com^ +||srepdata.krem.com^ +||srepdata.ktvb.com^ +||srepdata.kvue.com^ +||srepdata.lansingstatejournal.com^ +||srepdata.ldnews.com^ +||srepdata.livingstondaily.com^ +||srepdata.marconews.com^ +||srepdata.marinecorpstimes.com^ +||srepdata.marionstar.com^ +||srepdata.marshfieldnewsherald.com^ +||srepdata.michigan.com^ +||srepdata.montgomeryadvertiser.com^ +||srepdata.mycentraljersey.com^ +||srepdata.mydesert.com^ +||srepdata.mynorthshorenow.com^ +||srepdata.naplesnews.com^ +||srepdata.navytimes.com^ +||srepdata.news-leader.com^ +||srepdata.newsleader.com^ +||srepdata.pal-item.com^ +||srepdata.postcrescent.com^ +||srepdata.poughkeepsiejournal.com^ +||srepdata.pressconnects.com^ +||srepdata.publicopiniononline.com^ +||srepdata.recordonline.com^ +||srepdata.redding.com^ +||srepdata.rgj.com^ +||srepdata.ruidosonews.com^ +||srepdata.shreveporttimes.com^ +||srepdata.tcpalm.com^ +||srepdata.tennessean.com^ +||srepdata.theadvertiser.com^ +||srepdata.thedailyjournal.com^ +||srepdata.thehuddle.com^ +||srepdata.thespectrum.com^ +||srepdata.thetimesherald.com^ +||srepdata.thetowntalk.com^ +||srepdata.usatoday.com^ +||srepdata.wausaudailyherald.com^ +||srepdata.wauwatosanow.com^ +||srepdata.wisfarmer.com^ +||srepdata.wkyc.com^ +||srepdata.ydr.com^ +||srepdata.yorkdispatch.com^ +||sreport.mitsubishicars.com^ +||ssa.asianfoodnetwork.com^ +||ssa.cookingchanneltv.com^ +||ssa.discovery.com^ +||ssa.discoveryplus.com^ +||ssa.discoveryplus.in^ +||ssa.discoveryrise.org^ +||ssa.eurosport.co.uk^ +||ssa.eurosport.com^ +||ssa.eurosport.de^ +||ssa.eurosport.dk^ +||ssa.eurosport.es^ +||ssa.eurosport.fr^ +||ssa.eurosport.hu^ +||ssa.eurosport.it^ +||ssa.eurosport.nl^ +||ssa.eurosport.no^ +||ssa.eurosport.pl^ +||ssa.eurosport.pt^ +||ssa.eurosport.ro^ +||ssa.eurosport.rs^ +||ssa.eurosport.se^ +||ssa.eurosportplayer.com^ +||ssa.food.com^ +||ssa.foodnetwork.com^ +||ssa.hgtv.com^ +||ssa.investigationdiscovery.com^ +||ssa.oprah.com^ +||ssa.tlc.com^ +||ssc.alhurra.com^ +||ssc.amerikaninsesi.org^ +||ssc.amerikaovozi.com^ +||ssc.amerikayidzayn.com^ +||ssc.amerikiskhma.com^ +||ssc.azadiradio.com^ +||ssc.azadliq.org^ +||ssc.azathabar.com^ +||ssc.azatliq.org^ +||ssc.azattyk.org^ +||ssc.azattyq.org^ +||ssc.azatutyun.am^ +||ssc.bellator.com^ +||ssc.benarnews.org^ +||ssc.bet.plus^ +||ssc.budgetair.co.uk^ +||ssc.budgetair.fr^ +||ssc.budgetair.nl^ +||ssc.cc.com^ +||ssc.currenttime.tv^ +||ssc.cvent.com^ +||ssc.dandalinvoa.com^ +||ssc.darivoa.com^ +||ssc.dengeamerika.com^ +||ssc.dengiamerika.com^ +||ssc.disneylandparis.com^ +||ssc.ekhokavkaza.com^ +||ssc.elsaha.com^ +||ssc.europalibera.org^ +||ssc.evropaelire.org^ +||ssc.favetv.com^ +||ssc.glasamerike.net^ +||ssc.golosameriki.com^ +||ssc.hl.co.uk^ +||ssc.holosameryky.com^ +||ssc.idelreal.org^ +||ssc.insidevoa.com^ +||ssc.irfaasawtak.com^ +||ssc.isleofmtv.com^ +||ssc.kavkazr.com^ +||ssc.kcamexico.com^ +||ssc.kidschoiceawards.com^ +||ssc.krymr.com^ +||ssc.logotv.com^ +||ssc.maghrebvoices.com^ +||ssc.martinoticias.com^ +||ssc.mashaalradio.com^ +||ssc.meuspremiosnick.com.br^ +||ssc.mtv.co.uk^ +||ssc.mtv.com.au^ +||ssc.mtv.com.br^ +||ssc.mtv.com^ +||ssc.mtv.de^ +||ssc.mtv.es^ +||ssc.mtv.it^ +||ssc.mtv.nl^ +||ssc.mtvema.com^ +||ssc.mtvi.com^ +||ssc.mtvjapan.com^ +||ssc.mtvla.com^ +||ssc.mtvmama.com^ +||ssc.muji.net^ +||ssc.muji.tw^ +||ssc.mundonick.com.br^ +||ssc.mundonick.com^ +||ssc.newnownext.com^ +||ssc.nick-asia.com^ +||ssc.nick.co.uk^ +||ssc.nick.com.au^ +||ssc.nick.com.pl^ +||ssc.nick.com^ +||ssc.nick.de^ +||ssc.nick.tv^ +||ssc.nickanimation.com^ +||ssc.nickatnite.com^ +||ssc.nickelodeon.be^ +||ssc.nickelodeon.ee^ +||ssc.nickelodeon.es^ +||ssc.nickelodeon.fr^ +||ssc.nickelodeon.gr^ +||ssc.nickelodeon.hu^ +||ssc.nickelodeon.la^ +||ssc.nickelodeon.lt^ +||ssc.nickelodeon.lv^ +||ssc.nickelodeon.nl^ +||ssc.nickelodeon.pt^ +||ssc.nickelodeon.ro^ +||ssc.nickelodeon.se^ +||ssc.nickelodeonafrica.com^ +||ssc.nickelodeonarabia.com^ +||ssc.nickhelps.com^ +||ssc.nickjr.com^ +||ssc.nickourworld.tv^ +||ssc.nicktv.it^ +||ssc.nwf.org^ +||ssc.ozodi.org^ +||ssc.ozodlik.org^ +||ssc.paramountnetwork.com^ +||ssc.pashtovoa.com^ +||ssc.polygraph.info^ +||ssc.radiofarda.com^ +||ssc.radiomarsho.com^ +||ssc.radiosawa.com^ +||ssc.radiosvoboda.org^ +||ssc.radiotavisupleba.ge^ +||ssc.radiotelevisionmarti.com^ +||ssc.radiyoyacuvoa.com^ +||ssc.rfa.org^ +||ssc.rferl.org^ +||ssc.severreal.org^ +||ssc.sibreal.org^ +||ssc.slobodnaevropa.mk^ +||ssc.slobodnaevropa.org^ +||ssc.smithsonianchannel.com^ +||ssc.smithsonianchannellatam.com^ +||ssc.southpark.de^ +||ssc.southpark.lat^ +||ssc.southparkstudios.co.uk^ +||ssc.southparkstudios.com.br^ +||ssc.southparkstudios.com^ +||ssc.southparkstudios.nu^ +||ssc.supertv.it^ +||ssc.svaboda.org^ +||ssc.svoboda.org^ +||ssc.svobodnaevropa.bg^ +||ssc.szabadeuropa.hu^ +||ssc.tvland.com^ +||ssc.urduvoa.com^ +||ssc.usagm.gov^ +||ssc.vh1.com^ +||ssc.vidcon.com^ +||ssc.vliegwinkel.nl^ +||ssc.vmaj.jp^ +||ssc.vmware.com^ +||ssc.voaafaanoromoo.com^ +||ssc.voaafrica.com^ +||ssc.voaafrique.com^ +||ssc.voabambara.com^ +||ssc.voabangla.com^ +||ssc.voacambodia.com^ +||ssc.voacantonese.com^ +||ssc.voachinese.com^ +||ssc.voadeewanews.com^ +||ssc.voahausa.com^ +||ssc.voaindonesia.com^ +||ssc.voakorea.com^ +||ssc.voalingala.com^ +||ssc.voandebele.com^ +||ssc.voanews.com^ +||ssc.voanouvel.com^ +||ssc.voaportugues.com^ +||ssc.voashona.com^ +||ssc.voasomali.com^ +||ssc.voaswahili.com^ +||ssc.voathai.com^ +||ssc.voatibetan.com^ +||ssc.voatiengviet.com^ +||ssc.voaturkce.com^ +||ssc.voazimbabwe.com^ +||ssc.votvot.tv^ +||ssc.vozdeamerica.com^ +||ssc.wa.gto.db.com^ +||ssc.zeriamerikes.com^ +||ssdc.bawag.com^ +||ssdc.easybank.at^ +||ssite.johnlewis-insurance.com^ +||ssite.johnlewis.com^ +||ssite.johnlewisfinance.com^ +||ssite.waitrose.com^ +||ssitecat.eset.com^ +||ssitectlyst.saksfifthavenue.com^ +||ssl-metrics.tim.it^ +||ssl-omtrdc.dmp-support.jp^ +||ssl-omtrdc.zexy.net^ +||ssl.aafp.org^ +||ssl.aafpfoundation.org^ +||ssl.brandlicensing.eu^ +||ssl.citgo.com^ +||ssl.graham-center.org^ +||ssl.licensemag.com^ +||ssl.magiconline.com^ +||ssl.modernmedicine.com^ +||ssl.motorcycleshows.com^ +||ssl.o.additudemag.com^ +||ssl.o.auspost.com.au^ +||ssl.o.coliquio.de^ +||ssl.o.emedicinehealth.com^ +||ssl.o.globalacademycme.com^ +||ssl.o.guidelines.co.uk^ +||ssl.o.guidelinesinpractice.co.uk^ +||ssl.o.jim.fr^ +||ssl.o.mdedge.com^ +||ssl.o.medhelp.org^ +||ssl.o.medicinenet.com^ +||ssl.o.medscape.co.uk^ +||ssl.o.medscape.com^ +||ssl.o.medscape.org^ +||ssl.o.medscapelive.com^ +||ssl.o.medsims.com^ +||ssl.o.onhealth.com^ +||ssl.o.qxmd.com^ +||ssl.o.rxlist.com^ +||ssl.o.the-hospitalist.org^ +||ssl.o.univadis.com^ +||ssl.o.univadis.de^ +||ssl.o.univadis.es^ +||ssl.o.univadis.fr^ +||ssl.o.univadis.it^ +||ssl.o.vitals.com^ +||ssl.o.webmdrx.com^ +||ssl.sciencechannel.com^ +||sslanalytics.sixt.co.uk^ +||sslanalytics.sixt.com^ +||sslanalytics.sixt.de^ +||sslanalytics.sixt.fr^ +||sslanalytics.sixt.it^ +||sslanalytics.sixt.nl^ +||ssldata.thepointsguy.com^ +||sslmetrics.vivint.com^ +||sslomni.canadiantire.ca^ +||sslsc.sanitas.com^ +||sslstats.canadapost-postescanada.ca^ +||sslstats.canadapost.ca^ +||sslstats.deltavacations.com^ +||sslstats.healthydirections.com^ +||sslstats.postescanada-canadapost.ca^ +||sslstats.ssl.postescanada-canadapost.ca^ +||sslstats.worldagentdirect.com^ +||ssmr.nuro.jp^ +||ssmr.so-net.ne.jp^ +||ssmr.sonynetwork.co.jp^ +||ssmr2.so-net.ne.jp^ +||sstat.3pagen.at^ +||sstat.detelefoongids.nl^ +||sstat.gilt.com^ +||sstat.jetsetter.co.uk^ +||sstat.jetsetter.com^ +||sstat.ncl.com^ +||sstat.outrigger.com^ +||sstat.spreadex.com^ +||sstatistikk.telenor.no^ +||sstats.aavacations.com^ +||sstats.adultswim.com^ +||sstats.afco.com^ +||sstats.airfarewatchdog.co.uk^ +||sstats.airfarewatchdog.com^ +||sstats.alfa.com^ +||sstats.alfalaval.com^ +||sstats.alliander.com^ +||sstats.americafirst.com^ +||sstats.arbetarskydd.se^ +||sstats.architecturaldigest.com^ +||sstats.asadventure.com^ +||sstats.asadventure.fr^ +||sstats.asadventure.lu^ +||sstats.asadventure.nl^ +||sstats.atu.at^ +||sstats.auto5.be^ +||sstats.backcountry.com^ +||sstats.bbt.com^ +||sstats.belgiantrain.be^ +||sstats.bever.nl^ +||sstats.bnpparibasfortis.be^ +||sstats.bonappetit.com^ +||sstats.bookhostels.com^ +||sstats.bookingbuddy.co.uk^ +||sstats.bookingbuddy.com^ +||sstats.bookingbuddy.eu^ +||sstats.bridgetrusttitle.com^ +||sstats.build.com^ +||sstats.buycostumes.com^ +||sstats.cafo.com^ +||sstats.cartoonnetwork.com^ +||sstats.celcom.com.my^ +||sstats.checksimple.com^ +||sstats.cimentenligne.com^ +||sstats.cntraveler.com^ +||sstats.competitivecyclist.com^ +||sstats.condenast.com^ +||sstats.cookmedical.com^ +||sstats.coop.dk^ +||sstats.cotswoldoutdoor.com^ +||sstats.cupidandgrace.com^ +||sstats.deloitte.com^ +||sstats.deluxe.com^ +||sstats.dice.com^ +||sstats.dignityhealth.org^ +||sstats.directgeneral.com^ +||sstats.drugstore.com^ +||sstats.ds-pharma.com^ +||sstats.ds-pharma.jp^ +||sstats.economist.com^ +||sstats.emersonecologics.com^ +||sstats.epicurious.com^ +||sstats.estore-tco.com^ +||sstats.extendedstayhotels.com^ +||sstats.fairmont.com^ +||sstats.familyvacationcritic.com^ +||sstats.faucet.com^ +||sstats.fhb.com^ +||sstats.fintro.be^ +||sstats.fishersci.at^ +||sstats.fishersci.be^ +||sstats.fishersci.ca^ +||sstats.fishersci.ch^ +||sstats.fishersci.co.uk^ +||sstats.fishersci.com^ +||sstats.fishersci.de^ +||sstats.fishersci.es^ +||sstats.fishersci.fi^ +||sstats.fishersci.fr^ +||sstats.fishersci.ie^ +||sstats.fishersci.it^ +||sstats.fishersci.nl^ +||sstats.fishersci.no^ +||sstats.fishersci.pt^ +||sstats.fishersci.se^ +||sstats.gaba.co.jp^ +||sstats.gfi.com^ +||sstats.gibson.com^ +||sstats.girls1st.com^ +||sstats.girls1st.dk^ +||sstats.glamour.com^ +||sstats.gohealthinsurance.com^ +||sstats.golfdigest.com^ +||sstats.gourmet.com^ +||sstats.governmentcontractsusa.com^ +||sstats.grandbridge.com^ +||sstats.hannaandersson.com^ +||sstats.harlequin.com^ +||sstats.harrods.com^ +||sstats.hayu.com^ +||sstats.healthcare-sumitomo-pharma.jp^ +||sstats.hellobank.be^ +||sstats.hemtex.com^ +||sstats.hfflp.com^ +||sstats.hickoryfarms.com^ +||sstats.holcim.us^ +||sstats.hostelworld.com^ +||sstats.hostplus.com.au^ +||sstats.incorporate.com^ +||sstats.instawares.com^ +||sstats.investors.com^ +||sstats.iridesse.com^ +||sstats.juttu.be^ +||sstats.kroger.com^ +||sstats.lag-avtal.se^ +||sstats.lfg.com^ +||sstats.liander.nl^ +||sstats.libresse.ee^ +||sstats.libresse.fi^ +||sstats.libresse.hu^ +||sstats.libresse.rs^ +||sstats.lovelibra.com.au^ +||sstats.mcgriff.com^ +||sstats.meijer.com^ +||sstats.mora.jp^ +||sstats.motosport.com^ +||sstats.mt.com^ +||sstats.myafco.com^ +||sstats.myfidm.fidm.edu^ +||sstats.nalgene.com^ +||sstats.nana-maghreb.com^ +||sstats.newworldsreading.com^ +||sstats.newyorker.com^ +||sstats.nikkei.com^ +||sstats.norauto.es^ +||sstats.norauto.fr^ +||sstats.norauto.it^ +||sstats.norauto.pt^ +||sstats.o2extravyhody.cz^ +||sstats.o2family.cz^ +||sstats.o2knihovna.cz^ +||sstats.o2tv.cz^ +||sstats.o2tvsport.cz^ +||sstats.o2videoteka.cz^ +||sstats.o2vyhody.cz^ +||sstats.olivia.com^ +||sstats.omahasteaks.com^ +||sstats.oneilglobaladvisors.com^ +||sstats.onelambda.com^ +||sstats.onetime.com^ +||sstats.ooshop.com^ +||sstats.optionsxpress.com^ +||sstats.oui.sncf^ +||sstats.oyster.com^ +||sstats.paloaltonetworks.com^ +||sstats.paymypremiums.com^ +||sstats.paypal-metrics.com^ +||sstats.pitchfork.com^ +||sstats.portauthorityclothing.com^ +||sstats.postechnologygroup.com^ +||sstats.prevent.se^ +||sstats.primeratepfc.com^ +||sstats.raffles.com^ +||sstats.regionalacceptance.com^ +||sstats.rssc.com^ +||sstats.runnersneed.com^ +||sstats.sanmar.com^ +||sstats.scholastic.com^ +||sstats.seat.ch^ +||sstats.seat.lu^ +||sstats.seat.mx^ +||sstats.seat.pt^ +||sstats.securitas-direct.com^ +||sstats.self.com^ +||sstats.shaneco.com^ +||sstats.simzdarma.cz^ +||sstats.smartertravel.com^ +||sstats.snowandrock.com^ +||sstats.spark.co.nz^ +||sstats.sumitomo-pharma.co.jp^ +||sstats.sumitomo-pharma.com^ +||sstats.sumitomo-pharma.jp^ +||sstats.supply.com^ +||sstats.swissotel.com^ +||sstats.tdameritrade.com^ +||sstats.teenvogue.com^ +||sstats.telenor.se^ +||sstats.tena.ca^ +||sstats.tena.us^ +||sstats.thermofisher.com^ +||sstats.thermoscientific.com^ +||sstats.tiffany.at^ +||sstats.tiffany.ca^ +||sstats.tiffany.co.jp^ +||sstats.tiffany.co.uk^ +||sstats.tiffany.com.au^ +||sstats.tiffany.com^ +||sstats.tiffany.de^ +||sstats.tiffany.es^ +||sstats.tiffany.fr^ +||sstats.tiffany.ie^ +||sstats.tiffany.it^ +||sstats.truist-prd.com^ +||sstats.truist-tst.com^ +||sstats.truist.com^ +||sstats.truistinsurance.com^ +||sstats.truistleadershipinstitute.com^ +||sstats.truistsecurities.com^ +||sstats.uascrubs.com^ +||sstats.upack.com^ +||sstats.vacationclub.com^ +||sstats.vanityfair.com^ +||sstats.vattenfall.nl^ +||sstats.vattenfall.se^ +||sstats.vizergy.com^ +||sstats.vogue.com^ +||sstats.voyages-sncf.com^ +||sstats.wallisfashion.com^ +||sstats.wartsila.com^ +||sstats.webresint.com^ +||sstats.whattopack.com^ +||sstats.williamoneil.com^ +||sstats.wired.com^ +||sstats.wmagazine.com^ +||sstats.www.o2.cz^ +||sstats.yourchi.org^ +||sstats2.allure.com^ +||sstats2.architecturaldigest.com^ +||sstats2.golfdigest.com^ +||sstats2.gq.com^ +||sstats2.newyorker.com^ +||sstatstest.adobe.com^ +||ssuperstats.observepoint.com^ +||sswmetrics.bearskinairlines.com^ +||sswmetrics.firstair.ca^ +||sswmetrics.omanair.com^ +||sswmetrics.philippineairlines.com^ +||sswmetrics.sabre.com^ +||st-nlyss1.plala.or.jp^ +||st.bahn.de^ +||st.bahnhof.de^ +||st.der-kleine-ice.de^ +||st.discover-bavaria.com^ +||st.entdecke-deutschland-bahn.de^ +||st.fahrkartenshop2-bahn.de^ +||st.iceportal.de^ +||st.img-bahn.de^ +||st.mashable.com^ +||st.mazdausa.com^ +||st.newyorklife.com^ +||st.newyorklifeinvestments.com^ +||st.nylannuities.com^ +||st.nylinvestments.com^ +||st.onemazdausa.com^ +||st.s-bahn-muenchen-magazin.de^ +||st.wir-entdecken-bayern.de^ +||starget.aircanada.com^ +||starget.airmiles.ca^ +||starget.bitdefender.com^ +||starget.collegeboard.org^ +||starget.huntington.com^ +||starget.intel.cn^ +||starget.intel.co.jp^ +||starget.intel.co.kr^ +||starget.intel.co.uk^ +||starget.intel.com.br^ +||starget.intel.com.tr^ +||starget.intel.com.tw^ +||starget.intel.com^ +||starget.intel.de^ +||starget.intel.es^ +||starget.intel.fr^ +||starget.intel.in^ +||starget.intel.it^ +||starget.intel.la^ +||starget.intel.pl^ +||starget.intel.ru^ +||starget.ladbrokes.be^ +||starget.mathworks.com^ +||starget.morganstanley.com^ +||starget.nabtrade.com.au^ +||starget.orlandofuntickets.com^ +||starget.panerabread.com^ +||starget.plumbenefits.com^ +||starget.ticketsatwork.com^ +||starget.tv2.dk^ +||starget.uhc.com^ +||starget.vodafone.es^ +||starget.westjet.com^ +||starget.workingadvantage.com^ +||stat-ssl.akiba-souken.com^ +||stat-ssl.autoway.jp^ +||stat-ssl.bushikaku.net^ +||stat-ssl.career-tasu.jp^ +||stat-ssl.cc-rashinban.com^ +||stat-ssl.eiga.com^ +||stat-ssl.fx-rashinban.com^ +||stat-ssl.hitosara.com^ +||stat-ssl.icotto-jp.com^ +||stat-ssl.icotto.jp^ +||stat-ssl.idaten.ne.jp^ +||stat-ssl.idou.me^ +||stat-ssl.jobcube.com^ +||stat-ssl.kaago.com^ +||stat-ssl.kakaku.com^ +||stat-ssl.kakakumag.com^ +||stat-ssl.kinarino-mall.jp^ +||stat-ssl.kinarino.jp^ +||stat-ssl.kyujinbox.com^ +||stat-ssl.money-viva.jp^ +||stat-ssl.pathee.com^ +||stat-ssl.photohito.com^ +||stat-ssl.screeningmaster.jp^ +||stat-ssl.shift-one.jp^ +||stat-ssl.smfg.co.jp^ +||stat-ssl.sumaity.com^ +||stat-ssl.tabelog.com^ +||stat-ssl.tasclap.jp^ +||stat-ssl.teamroom.jp^ +||stat-ssl.tour-list.com^ +||stat-ssl.webcg.net^ +||stat-ssl.xn--pckua2a7gp15o89zb.com^ +||stat.buyersedge.com.au^ +||stat.canal-plus.com^ +||stat.carecredit.com^ +||stat.detelefoongids.nl^ +||stat.gomastercard.com.au^ +||stat.interestfree.com.au^ +||stat.jetsetter.com^ +||stat.kaago.com^ +||stat.kiwibank.co.nz^ +||stat.marshfieldclinic.org^ +||stat.mint.ca^ +||stat.ncl.com^ +||stat.outrigger.com^ +||stat.smbc.co.jp^ +||stat.smfg.co.jp^ +||stat.thegeneral.com^ +||stat.vocus.com^ +||stats-ssl.mdanderson.org^ +||stats.4travel.jp^ +||stats.aapt.com.au^ +||stats.adobe.com^ +||stats.adultswim.com^ +||stats.agl.com.au^ +||stats.airfarewatchdog.co.uk^ +||stats.airfarewatchdog.com^ +||stats.americafirst.com^ +||stats.apachecorp.com^ +||stats.aplaceformom.com^ +||stats.asadventure.nl^ +||stats.bankofthewest.com^ +||stats.bever.nl^ +||stats.bildconnect.de^ +||stats.bitdefender.com^ +||stats.blacksim.de^ +||stats.bookingbuddy.co.uk^ +||stats.bookingbuddy.com^ +||stats.bookingbuddy.eu^ +||stats.cafepress.com^ +||stats.canadapost-postescanada.ca^ +||stats.canadapost.ca^ +||stats.carecredit.com^ +||stats.cartoonnetwork.com^ +||stats.celcom.com.my^ +||stats.commonspirit.org^ +||stats.coop.dk^ +||stats.cruisingpower.com^ +||stats.cybersim.de^ +||stats.datamanie.cz^ +||stats.deloitte.com^ +||stats.deutschlandsim.de^ +||stats.dice.com^ +||stats.drillisch-online.de^ +||stats.economist.com^ +||stats.ellos.dk^ +||stats.exploratv.ca^ +||stats.extendedstayamerica.com^ +||stats.falck.dk^ +||stats.familyvacationcritic.com^ +||stats.fhb.com^ +||stats.firstmarkcu.org^ +||stats.fishersci.at^ +||stats.fishersci.com^ +||stats.fishersci.de^ +||stats.fishersci.it^ +||stats.franklincovey.com^ +||stats.getty.edu^ +||stats.gfi.com^ +||stats.gibson.com^ +||stats.guycarp.com^ +||stats.handyvertrag.de^ +||stats.hannaandersson.com^ +||stats.harrods.com^ +||stats.hayu.com^ +||stats.healthydirections.com^ +||stats.his-j.com^ +||stats.honeywell.com^ +||stats.iata.org^ +||stats.icimusique.ca^ +||stats.instawares.com^ +||stats.interestfree.com.au^ +||stats.jetzt-aktivieren.de^ +||stats.juttu.be^ +||stats.kroger.com^ +||stats.lag-avtal.se^ +||stats.leasy.dk^ +||stats.lumension.com^ +||stats.m2m-mobil.de^ +||stats.marshfieldclinic.org^ +||stats.marshfieldresearch.org^ +||stats.maxxim.de^ +||stats.mcgriff.com^ +||stats.mdanderson.org^ +||stats.meijer.com^ +||stats.merx.com^ +||stats.mint.ca^ +||stats.mt.com^ +||stats.nortonhealthcare.com^ +||stats.nyteknik.se^ +||stats.o2extravyhody.cz^ +||stats.omahasteaks.com^ +||stats.onetime.com^ +||stats.organizeit.com^ +||stats.oui.sncf^ +||stats.oyster.com^ +||stats.pacificdentalservices.com^ +||stats.postescanada-canadapost.ca^ +||stats.postescanada.ca^ +||stats.premiumsim.de^ +||stats.radio-canada.ca^ +||stats.radley.co.uk^ +||stats.radleylondon.com^ +||stats.rcinet.ca^ +||stats.refurbished-handys.de^ +||stats.rs-online.com^ +||stats.russellstover.com^ +||stats.safeway.com^ +||stats.seat.be^ +||stats.seat.es^ +||stats.seat.fr^ +||stats.seat.ie^ +||stats.seat.pt^ +||stats.sfwmd.gov^ +||stats.sim.de^ +||stats.sim24.de^ +||stats.simplytel.de^ +||stats.simzdarma.cz^ +||stats.smartdestinations.com^ +||stats.smartmobil.de^ +||stats.southernphone.com.au^ +||stats.spark.co.nz^ +||stats.steepandcheap.com^ +||stats.swissotel.com^ +||stats.tdameritrade.com^ +||stats.te.com^ +||stats.telenor.se^ +||stats.tennistalk.com^ +||stats.tfl.gov.uk^ +||stats.thegeneral.com^ +||stats.thermofisher.com^ +||stats.tiffany.ie^ +||stats.tnt.com^ +||stats.tou.tv^ +||stats.tradingacademy.com^ +||stats.truist.com^ +||stats.uticorp.com^ +||stats.vacationclub.com^ +||stats.vattenfall.nl^ +||stats.vattenfall.se^ +||stats.voyages-sncf.com^ +||stats.vulture.com^ +||stats.wallisfashion.com^ +||stats.wartsila.com^ +||stats.wartsila.net^ +||stats.whattopack.com^ +||stats.winsim.de^ +||stats.wired.com^ +||stats.wisconsingenomics.org^ +||stats.www.o2.cz^ +||stats.xactware.com^ +||stats.yourfone.de^ +||stats2.architecturaldigest.com^ +||stats2.bonappetit.com^ +||stats2.cntraveler.com^ +||stats2.golfdigest.com^ +||stats2.newyorker.com^ +||stats2.self.com^ +||stats2.wmagazine.com^ +||statse-omtrdc.deka.de^ +||statse.deka-etf.de^ +||statss.smartdestinations.com^ +||stbg.bankonline.sboff.com^ +||stbg.looksee.co.za^ +||stbg.sbgsecurities.co.ke^ +||stbg.stanbic.co.ug^ +||stbg.stanbicbank.co.bw^ +||stbg.stanbicbank.co.ke^ +||stbg.stanbicbank.co.tz^ +||stbg.stanbicbank.co.ug^ +||stbg.stanbicbank.co.zm^ +||stbg.stanbicbank.co.zw^ +||stbg.stanbicbank.com.gh^ +||stbg.stanbicibtccapital.com^ +||stbg.stanbicibtcinsurancebrokers.com^ +||stbg.stanbicibtcnominees.com^ +||stbg.stanbicibtctrustees.com^ +||stbg.standardbank.cd^ +||stbg.standardbank.co.ao^ +||stbg.standardbank.co.mw^ +||stbg.standardbank.co.mz^ +||stbg.standardbank.co.sz^ +||stbg.standardbank.co.za^ +||stbg.standardbank.com.na^ +||stbg.standardbank.com^ +||stbg.standardbank.mu^ +||stbg.standardlesothobank.co.ls^ +||std.o.globalacademycme.com^ +||std.o.medicinenet.com^ +||std.o.medscape.com^ +||std.o.rxlist.com^ +||stel.telegraaf.nl^ +||stereos2.crutchfield.com^ +||stereos2s.crutchfield.ca^ +||stereos2s.crutchfield.com^ +||sticketsmetrics.masters.com^ +||stmetrics.bbva.com.ar^ +||stmetrics.bbva.com.co^ +||stmetrics.bbva.es^ +||stmetrics.bbva.it^ +||stmetrics.bbva.mx^ +||stmetrics.bbva.pe^ +||stms.53.com^ +||stms.newline53.com^ +||stnt.express-scripts.com^ +||stnt.sky.at^ +||stnt.sky.de^ +||str.foodnetwork.ca^ +||str.globalnews.ca^ +||str2-bbyca-track.bestbuy.com^ +||str2-fsca-track.bestbuy.com^ +||strack.aetna.com^ +||strack.aetnabetterhealth.com^ +||strack.allianz.at^ +||strack.allianz.ch^ +||strack.apps.allianzworldwidecare.com^ +||strack.bestbuy.ca^ +||strack.cap.ch^ +||strack.collegeboard.com^ +||strack.collegeboard.org^ +||strack.community.concur.com^ +||strack.concur.ae^ +||strack.concur.ca^ +||strack.concur.com.sg^ +||strack.concur.com^ +||strack.concur.tw^ +||strack.elvia.ch^ +||strack.englandstore.com^ +||strack.entegris.com^ +||strack.evertondirect.evertonfc.com^ +||strack.f1store.formula1.com^ +||strack.fanatics-intl.com^ +||strack.freedommobile.ca^ +||strack.futureshop.ca^ +||strack.go.concur.com^ +||strack.manjiro.net^ +||strack.mentor.com^ +||strack.mercycareaz.org^ +||strack.onemarketinguxp.com^ +||strack.shaw.ca^ +||strack.shawdirect.ca^ +||strack.shawmobile.ca^ +||strack.softbankhawksstore.jp^ +||strack.store.manutd.com^ +||strack.sw.siemens.com^ +||strack.tarif.allianz.ch^ +||strack.www.allianzcare-corporate.com^ +||strack.www.allianzcare.com^ +||stracking.kyobo.co.kr^ +||stracking.myomee.com^ +||stracking.rogers.com^ +||stracking.trutv.com^ +||strackingvanrental.vanrental.de^ +||stscs.ditzo.nl^ +||stt.bupa.com.au^ +||stt.cpaaustralia.com.au^ +||stt.deakin.edu.au^ +||stt.dell.com^ +||stt.keno.com.au^ +||stt.nvidia.com^ +||stt.pluralsight.com^ +||stt.tab.com.au^ +||stt.thelott.com^ +||stt.tyro.com^ +||styles.hautelook.com^ +||subscription.mktg.nfl.com^ +||subscriptions.costco.ca^ +||subscriptions.costco.com^ +||subscriptions.e.silverfernfarms.com^ +||subscriptions.outbound.luxair.lu^ +||sucmetrics.hypovereinsbank.de^ +||sucmetrics.unicredit.de^ +||sucmetrics.unicredit.it^ +||sucmetrics.unicreditbanca.it^ +||sucmetrics.unicreditgroup.eu^ +||sud.holidayinsider.com^ +||sud.holidays.hrs.de^ +||suncanny.marvel.com^ +||suncanny.marvelhq.com^ +||superstats.observepoint.com^ +||sut.dailyfx.com^ +||sut.iggroup.com^ +||sw88.24kitchen.bg^ +||sw88.24kitchen.com.hr^ +||sw88.24kitchen.com.tr^ +||sw88.24kitchen.nl^ +||sw88.24kitchen.pt^ +||sw88.24kitchen.rs^ +||sw88.24kitchen.si^ +||sw88.abc.com^ +||sw88.cinemapp.com^ +||sw88.disney.be^ +||sw88.disney.bg^ +||sw88.disney.co.il^ +||sw88.disney.co.jp^ +||sw88.disney.co.za^ +||sw88.disney.com.au^ +||sw88.disney.cz^ +||sw88.disney.de^ +||sw88.disney.fi^ +||sw88.disney.hu^ +||sw88.disney.pl^ +||sw88.disney.pt^ +||sw88.disney.se^ +||sw88.disneymagicmoments.co.uk^ +||sw88.disneymagicmoments.co.za^ +||sw88.disneymagicmoments.de^ +||sw88.disneymagicmoments.fr^ +||sw88.disneynow.com^ +||sw88.disneyonstage.co.uk^ +||sw88.disneyoutlet.co.uk^ +||sw88.disneyrewards.com^ +||sw88.disneystore.co.uk^ +||sw88.disneystore.de^ +||sw88.disneystore.es^ +||sw88.disneystore.eu^ +||sw88.disneystore.fr^ +||sw88.disneystore.it^ +||sw88.disneytickets.co.uk^ +||sw88.espn.co.uk^ +||sw88.espn.com.co^ +||sw88.espn.com^ +||sw88.espnmanofthematch.nl^ +||sw88.espnplayer.com^ +||sw88.freeform.com^ +||sw88.fxchannel.pl^ +||sw88.fxnetworks.com^ +||sw88.fxturkiye.com.tr^ +||sw88.go.com^ +||sw88.lionkingeducation.co.uk^ +||sw88.natgeotv.com^ +||sw88.nationalgeographic.com^ +||sw88.nationalgeographic.de^ +||sw88.nationalgeographic.es^ +||sw88.nationalgeographic.fr^ +||sw88.nationalgeographicbrasil.com^ +||sw88.nationalgeographicla.com^ +||sw88.shopdisney.asia^ +||sw88.shopdisney.co.uk^ +||sw88.shopdisney.es^ +||sw88.shopdisney.eu^ +||sw88.starchannel-bg.com^ +||sw88.starchannel-hr.com^ +||sw88.starchannel-rs.com^ +||sw88.starchannel.be^ +||sw88.starchannel.nl^ +||sw88.thewaltdisneycompany.eu^ +||swa.asnbank.nl^ +||swa.b2cjewels.com^ +||swa.blgwonen.nl^ +||swa.bol.com^ +||swa.castorama.fr^ +||swa.consumentenbond.nl^ +||swa.devolksbank.nl^ +||swa.energiedirect.nl^ +||swa.eonline.com^ +||swa.essent.nl^ +||swa.gifts.com^ +||swa.localworld.co.uk^ +||swa.millesima.co.uk^ +||swa.millesima.com.hk^ +||swa.millesima.com^ +||swa.millesima.it^ +||swa.monabanq.com^ +||swa.nexive.it^ +||swa.onlineverzendservice.be^ +||swa.personalcreations.com^ +||swa.postnl.nl^ +||swa.regiobank.nl^ +||swa.snsbank.nl^ +||swa.st.com^ +||swa.t-mobile.nl^ +||swa.tjmaxx.tjx.com^ +||swa.vodafone.cz^ +||swa.vodafone.pt^ +||swa.wowcher.co.uk^ +||swasc.homedepot.ca^ +||swasc.homedepot.com^ +||swasc.kaufland.bg^ +||swasc.kaufland.com^ +||swasc.kaufland.cz^ +||swasc.kaufland.de^ +||swasc.kaufland.hr^ +||swasc.kaufland.md^ +||swasc.kaufland.pl^ +||swasc.kaufland.ro^ +||swasc.kaufland.sk^ +||swasc.thecompanystore.com^ +||sweb.ulta.com^ +||swebanalytics.acs.org^ +||swebanalytics.degulesider.dk^ +||swebanalytics.eniro.se^ +||swebanalytics.gulesider.no^ +||swebanalytics.krak.dk^ +||swebanalytics.panoramafirm.pl^ +||swebanalytics.pgatour.com^ +||swebanalytics.proff.no^ +||swebmetrics.avaya.com^ +||swebmetrics.ok.gov^ +||swebmetrics.oklahoma.gov^ +||swebmetrics.zebra.com^ +||swebreports.nature.org^ +||swebstats.americanbar.org^ +||swebstats.imf.org^ +||swebstats.us.aimia.com^ +||swebtraffic.executiveboard.com^ +||sxp.allianz.de^ +||t-s.actemra.com^ +||t-s.activase.com^ +||t-s.allergicasthma.com^ +||t-s.avastin-hcp.com^ +||t-s.avastin.com^ +||t-s.biooncology.com^ +||t-s.cellcept.com^ +||t-s.erivedge.com^ +||t-s.flufacts.com^ +||t-s.fuzeon.com^ +||t-s.gazyva.com^ +||t-s.gene.com^ +||t-s.genentech-access.com^ +||t-s.gpa-mpaclinical.com^ +||t-s.herceptin.com^ +||t-s.kadcyla.com^ +||t-s.kytril.com^ +||t-s.lucentis.com^ +||t-s.lucentisdirect.com^ +||t-s.lyticportfolio.com^ +||t-s.msimmunology.com^ +||t-s.perjeta.com^ +||t-s.revealvirology.com^ +||t-s.rheumatoidarthritis.com^ +||t-s.rituxan.com^ +||t-s.strokeawareness.com^ +||t-s.tamiflu.com^ +||t-s.tnkase.com^ +||t-s.transplantaccessservices.com^ +||t-s.valcyte.com^ +||t-s.xolairhcp.com^ +||t-s.xpansions.com^ +||t-s.zelboraf.com^ +||t.10er-tagesticket.de^ +||t.actemra.com^ +||t.avastin-hcp.com^ +||t.avastin.com^ +||t.bahn-mietwagen.de^ +||t.bahn.de^ +||t.biooncology.com^ +||t.cathflo.com^ +||t.cellcept.com^ +||t.db-gruppen.de^ +||t.emusic.com^ +||t.erivedge.com^ +||t.fuzeon.com^ +||t.gazyva.com^ +||t.gene.com^ +||t.genentech-access.com^ +||t.herceptin.com^ +||t.kadcyla.com^ +||t.lucentis.com^ +||t.lucentisdirect.com^ +||t.mazdausa.com^ +||t.msz-bahn.de^ +||t.nordea.com^ +||t.nordea.dk^ +||t.nordea.fi^ +||t.nordea.no^ +||t.nordea.se^ +||t.nylinvestments.com^ +||t.pandemictoolkit.com^ +||t.perjeta.com^ +||t.popsugar.com^ +||t.rail-and-drive.de^ +||t.rheumatoidarthritis.com^ +||t.rituxan.com^ +||t.strokeawareness.com^ +||t.tamiflu.com^ +||t.tarceva.com^ +||t.tnkase.com^ +||t.transplantaccessservices.com^ +||t.valcyte.com^ +||t.veranstaltungsticket-bahn.de^ +||t.xolairhcp.com^ +||t3e.firstchoice.co.uk^ +||t4e.sainsburys.co.uk^ +||ta.taxslayer.com^ +||tags.esri.ca^ +||tags.esri.com^ +||tags.esri.rw^ +||tags.igeo.com.bo^ +||target-omtrdc.deka.de^ +||target-test.cisco.com^ +||target.abanca.com^ +||target.accenture.com^ +||target.acpny.com^ +||target.afrique.pwc.com^ +||target.aia.co.kr^ +||target.aiavitality.co.kr^ +||target.alfaromeousa.com^ +||target.allianz.at^ +||target.allianz.ch^ +||target.amica.com^ +||target.ansys.com^ +||target.arcobusinesssolutions.com^ +||target.audifinancialservices.nl^ +||target.auspost.com.au^ +||target.bankofamerica.com^ +||target.bankwest.com.au^ +||target.base.be^ +||target.bcbsnd.com^ +||target.belairdirect.com^ +||target.bose.com^ +||target.bpbusinesssolutions.com^ +||target.breadfinancial.com^ +||target.bws.com.au^ +||target.caixabank.es^ +||target.cap.ch^ +||target.carrieres.pwc.fr^ +||target.caseys.com^ +||target.centerpointenergy.com^ +||target.champssports.ca^ +||target.champssports.com^ +||target.changehealthcare.com^ +||target.chase.com^ +||target.chrysler.com^ +||target.cisco.com^ +||target.claris.com^ +||target.comcast.com^ +||target.comdata.com^ +||target.commonspirit.org^ +||target.connecticare.com^ +||target.cox.com^ +||target.danmurphys.com.au^ +||target.dodge.com^ +||target.dzbank.de^ +||target.eastbay.com^ +||target.eaton.com^ +||target.edb.gov.sg^ +||target.element14.com^ +||target.elvia.ch^ +||target.emblemhealth.com^ +||target.eon.de^ +||target.ey.com^ +||target.farnell.com^ +||target.fiatusa.com^ +||target.firestonebpco.com^ +||target.fleetcardsusa.com^ +||target.footlocker.at^ +||target.footlocker.be^ +||target.footlocker.ca^ +||target.footlocker.co.uk^ +||target.footlocker.com.au^ +||target.footlocker.com^ +||target.footlocker.cz^ +||target.footlocker.de^ +||target.footlocker.dk^ +||target.footlocker.es^ +||target.footlocker.fr^ +||target.footlocker.gr^ +||target.footlocker.hu^ +||target.footlocker.ie^ +||target.footlocker.it^ +||target.footlocker.lu^ +||target.footlocker.nl^ +||target.footlocker.no^ +||target.footlocker.pl^ +||target.footlocker.pt^ +||target.footlocker.se^ +||target.fuelman.com^ +||target.galicia.ar^ +||target.groupama.fr^ +||target.gsghukuk.com^ +||target.healthengine.com.au^ +||target.helsana.ch^ +||target.hostech.co.uk^ +||target.hsn.com^ +||target.hyundaiusa.com^ +||target.ihg.com^ +||target.intact.ca^ +||target.investors.com^ +||target.jeep.com^ +||target.jwatch.org^ +||target.key.com^ +||target.kidsfootlocker.com^ +||target.kwiktripfleet.com^ +||target.letsgofrance.pwc.fr^ +||target.maxxia.com.au^ +||target.miaprova.com^ +||target.michaels.com^ +||target.microchip.com^ +||target.monaco.pwc.fr^ +||target.mtu-solutions.com^ +||target.myhealthtoolkit.com^ +||target.navenegocios.com^ +||target.netapp.com^ +||target.newark.com^ +||target.nflextrapoints.com^ +||target.nfm.com^ +||target.ni.com^ +||target.nrma.com.au^ +||target.onemarketinguxp.com^ +||target.onlinebanking.bancogalicia.com.ar^ +||target.openbank.de^ +||target.openbank.es^ +||target.openbank.nl^ +||target.openbank.pt^ +||target.owenscorning.com^ +||target.pandasecurity.com^ +||target.powertracagri.com^ +||target.prd.base.be^ +||target.prd.telenet.be^ +||target.premierinn.com^ +||target.publicissapient.com^ +||target.pwc-tls.it^ +||target.pwc.at^ +||target.pwc.be^ +||target.pwc.ch^ +||target.pwc.co.uk^ +||target.pwc.co.za^ +||target.pwc.com.ar^ +||target.pwc.com.au^ +||target.pwc.com.cy^ +||target.pwc.com.tr^ +||target.pwc.com.uy^ +||target.pwc.com^ +||target.pwc.dk^ +||target.pwc.es^ +||target.pwc.fr^ +||target.pwc.ie^ +||target.pwc.in^ +||target.pwc.is^ +||target.pwc.lu^ +||target.pwc.nl^ +||target.pwc.no^ +||target.pwc.pl^ +||target.pwc.pt^ +||target.pwc.ro^ +||target.pwc.rs^ +||target.pwc.tw^ +||target.pwcalgerie.pwc.fr^ +||target.pwcavocats.com^ +||target.pwclegal.lu^ +||target.pwcmaroc.pwc.fr^ +||target.questdiagnostics.com^ +||target.questrade.com^ +||target.qvc.com^ +||target.qvc.de^ +||target.qvcuk.com^ +||target.ram.com^ +||target.ramtrucks.com^ +||target.retail-week.com^ +||target.roger.ai^ +||target.sanitas.com^ +||target.securemaxxia.com.au^ +||target.sgproof.com^ +||target.sharkgaming.dk^ +||target.sharkgaming.no^ +||target.sharkgaming.se^ +||target.simulationworld.com^ +||target.sivasdescalzo.com^ +||target.skodafinancialservices.nl^ +||target.southernglazers.com^ +||target.spectrum.com^ +||target.sportsmansguide.com^ +||target.stanfordchildrens.org^ +||target.strategyand.pwc.com^ +||target.sunlife.ca^ +||target.sunlife.co.id^ +||target.sunlife.com.hk^ +||target.sunlife.com.ph^ +||target.sunlife.com.vn^ +||target.sunlife.com^ +||target.sunlifeglobalinvestments.com^ +||target.superfleet.net^ +||target.swinburne.edu.au^ +||target.synergy.net.au^ +||target.tataaia.com^ +||target.telenet.be^ +||target.theconvenienceawards.com^ +||target.thegrocer.co.uk^ +||target.thetruth.com^ +||target.theworlds50best.com^ +||target.totalwine.com^ +||target.toyota.com^ +||target.troweprice.com^ +||target.tsc.ca^ +||target.tunisie.pwc.fr^ +||target.ultramarfleet.ca^ +||target.veeam.com^ +||target.visitsingapore.com^ +||target.vodafone.es^ +||target.volkswagenfinancialservices.nl^ +||target.vudu.com^ +||target.vwfs.co.uk^ +||target.vwfs.com^ +||target.vwfs.cz^ +||target.vwfs.de^ +||target.vwfs.es^ +||target.vwfs.fr^ +||target.vwfs.gr^ +||target.vwfs.ie^ +||target.vwfs.it^ +||target.vwfs.mx^ +||target.vwfs.pl^ +||target.vwfs.pt^ +||target.walgreens.com^ +||target.wedenik.com^ +||target.westjet.com^ +||target.wsec06.bancogalicia.com.ar^ +||target.xfinity.com^ +||target.zeiss.com^ +||target.zeiss.de^ +||target.zinia.com^ +||targetab.metrobyt-mobile.com^ +||targetlr.adobe.com^ +||targetsecure.kohler.com^ +||targetsoc.spela.svenskaspel.se^ +||targettur.www.svenskaspel.se^ +||tdor-smetrics.td.com^ +||tel.telegraaf.nl^ +||telemetry.boxt.co.uk^ +||telemetry.chrobinson.com^ +||telemetry.commonspirit.org^ +||telemetry.dematic.com^ +||telemetry.marketscope.com^ +||telemetry.moveworks.com^ +||telemetry.navispherecarrier.com^ +||telemetry.owenscorning.com^ +||telemetry.ruthschris.com^ +||telemetry.stryker.com^ +||telemetry.webasto.com^ +||tenilstats.turner.com^ +||test-landing-page-122122.email-disney.cjm.adobe.com^ +||test-landing-page.a.news.aida.de^ +||testtarget.jeep.com^ +||tidy.intel.cn^ +||tidy.intel.co.jp^ +||tidy.intel.co.kr^ +||tidy.intel.com.br^ +||tidy.intel.com.tw^ +||tidy.intel.com^ +||tidy.intel.de^ +||tidy.intel.fr^ +||tidy.intel.in^ +||tidy.intel.la^ +||tmetrics.hdfcbank.com^ +||tmetrics.webex.com^ +||tms.53.com^ +||tnt.yemeksepeti.com^ +||toolboxadobe.inter-ikea.com^ +||tr1.kaspersky.ca^ +||tr1.kaspersky.com.tr^ +||tr1.kaspersky.com^ +||tr1.kaspersky.es^ +||tr1.kaspersky.ru^ +||tr2.kaspersky.co.uk^ +||tr2.kaspersky.com^ +||tr2.kaspersky.ru^ +||track.bestbuy.ca^ +||track.collegeboard.org^ +||track.concur.ca^ +||track.concur.com.au^ +||track.concur.com.sg^ +||track.concur.com^ +||track.evertondirect.evertonfc.com^ +||track.f1store.formula1.com^ +||track.inews.co.uk^ +||track.mentor.com^ +||track.nbastore.com.au^ +||track.nbastore.la^ +||track.nbastore.mn^ +||track.reservationcounter.com^ +||track.shop.atleticodemadrid.com^ +||tracker-aa.paf.es^ +||tracker-aa.pafbetscore.lv^ +||tracking-secure.csob.cz^ +||tracking.c.mercedes-benz.co.in^ +||tracking.c.mercedes-benz.com.cn^ +||tracking.c.mercedes-benz.de^ +||tracking.csob.cz^ +||tracking.cspire.com^ +||tracking.dailyglow.com^ +||tracking.lg.com^ +||tracking.m.mercedes-benz.ch^ +||tracking.m.mercedes-benz.co.in^ +||tracking.m.mercedes-benz.co.za^ +||tracking.m.mercedes-benz.com.cn^ +||tracking.m.mercedes-benz.com.sg^ +||tracking.m.mercedes-benz.ru^ +||tracking.mb.mercedes-benz.com^ +||tracking.omniture.nt.se^ +||tracking.redbutton.de^ +||tracking.rogers.com^ +||tracking.socialpublish.mercedes-benz.com^ +||tracking.t.mercedes-benz.co.in^ +||tracking.t.mercedes-benz.com.cn^ +||tracking.t.mercedes-benz.de^ +||tracking.techcenter.mercedes-benz.com^ +||tracking.trutv.com^ +||tracking.www5.mercedes-benz.com^ +||trackingaa.hitachienergy.com^ +||trackingssl.agemployeebenefits.be^ +||trackingssl.aginsurance.be^ +||trackingssl.drysolutions.be^ +||trackingssl.homeras.be^ +||trackingssl.vivay-broker.be^ +||trackingssl.yongo.be^ +||transit.ncsecu.org^ +||trg.bosch-home.es^ +||trk.chegg.com^ +||ts.popsugar.com^ +||tsa.taxslayer.com^ +||tt.natwest.com^ +||tt.pluralsight.com^ +||tt.rbs.co.uk^ +||tt.rbs.com^ +||tt.sj.se^ +||tt.ubs.com^ +||tt.ulsterbank.co.uk^ +||tt.ulsterbank.ie^ +||ttarget.eastwestbank.com^ +||ttmetrics.faz.net^ +||ttmetrics.jcpenney.com^ +||ucmetrics.hypovereinsbank.de^ +||ucmetrics.unicredit.it^ +||ucmetrics.unicreditbanca.it^ +||ucmetrics.unicreditgroup.eu^ +||ues.kicker.de^ +||ukg6sq48dy4zd6gn.edge41.testandtarget.omniture.com^ +||uncanny.marvel.com^ +||uncanny.marvelkids.com^ +||unsubscribe.e.silverfernfarms.com^ +||unsubscribe.email.verizon.com^ +||unsubscribe.promo.timhortons.ca^ +||ut.dailyfx.com^ +||ut.iggroup.com^ +||ut.upmc.com^ +||value.register.com^ +||vdmwntw1of9t8xgd.edge41.testandtarget.omniture.com^ +||visitor.novartisoncology.us^ +||visualscience.external.bbc.co.uk^ +||vs.target.com^ +||w88.abc.com^ +||w88.disneynow.com^ +||w88.espn.com^ +||w88.go.com^ +||w88.m.espn.go.com^ +||w88.natgeo.pt^ +||w88.natgeotv.com^ +||w88.nationalgeographic.com^ +||wa.and.co.uk^ +||wa.baltimoreravens.com^ +||wa.bol.com^ +||wa.castorama.fr^ +||wa.dailymail.co.uk^ +||wa.devolksbank.nl^ +||wa.epson.com^ +||wa.gifts.com^ +||wa.localworld.co.uk^ +||wa.ncr.com^ +||wa.nxp.com^ +||wa.personalcreations.com^ +||wa.postnl.nl^ +||wa.spring-gds.com^ +||wa.st.com^ +||wa.stubhub.com^ +||wa.t-mobile.nl^ +||wa.vodafone.cz^ +||wa.vodafone.de^ +||wa.vodafone.pt^ +||wa1.otto.de^ +||was.epson.com^ +||was.stubhub.com^ +||was.vodafone.de^ +||was.vodafone.nl^ +||wasc.homedepot.ca^ +||wasc.homedepot.com^ +||wasc.kaufland.ro^ +||wass.ihsmarkit.com^ +||wass.spglobal.com^ +||wat.gogoinflight.com^ +||wats.gogoinflight.com^ +||web.ajostg.cfs.com.au^ +||web.ajostg.colonialfirststate.com.au^ +||web.campaign.cfs.com.au^ +||web.campaigns.colonialfirststate.com.au^ +||web.e.lotteryoffice.com.au^ +||web.hammacher.com^ +||web.m.hurricanes.co.nz^ +||web.ulta.com^ +||webanalytics.astrogaming.com^ +||webanalytics.degulesider.dk^ +||webanalytics.eniro.se^ +||webanalytics.gulesider.no^ +||webanalytics.logicool.co.jp^ +||webanalytics.logitech.com.cn^ +||webanalytics.logitech.com^ +||webanalytics.logitechg.com.cn^ +||webanalytics.logitechg.com^ +||webanalytics.proff.no^ +||webanalyticsssl.websense.com^ +||webapp.e-post.smn.no^ +||webmetrics.avaya.com^ +||webmetrics.perkinelmer.com^ +||webmetrics.turnwrench.com^ +||webmetrics.zebra.com^ +||webs.hammacher.com^ +||websdkmetrics.blackrock.com^ +||webstat.4music.com^ +||webstat.garanti.com.tr^ +||webstat.vodafone.com^ +||webstats.americanbar.org^ +||webstats.cbre.com^ +||webstats.channel4.com^ +||webstats.imf.org^ +||webstats.kronos.com^ +||webstats.vfsco.com^ +||webstats.vodafone.com^ +||webstats.volvoce.com^ +||webstats.volvoit.com^ +||webtarget.astrogaming.com^ +||webtarget.logicool.co.jp^ +||webtarget.logitech.com.cn^ +||webtarget.logitech.com^ +||webtarget.logitechg.com.cn^ +||webtarget.logitechg.com^ +||webtraffic.executiveboard.com^ +||webtraffic.mastercontrol.com^ +||worldmtcs.nhk.jp^ +||ww0s.airtours.de^ +||ww0s.robinson.com^ +||ww0s.tui.com^ +||ww8.kohls.com^ +||ww9.kohls.com^ +||wwu.jjill.com^ +||wwv.jjill.com^ +||www-171.aig.com^ +||www-172.aig.com^ +||www-sadobe.384.co.jp^ +||www-sadobe.anabuki-community.com^ +||www-sadobe.anabuki.co.jp^ +||www-smt.daiichisankyo-hc.co.jp^ +||www.metrics.bankaustria.at^ +||www.notice.assurancewireless.com^ +||www.notice.metrobyt-mobile.com^ +||www.notice.t-mobile.com^ +||www.smetrics.imedeen.us^ +||www1.discountautomirrors.com^ +||www15.jedora.com^ +||www15.jtv.com^ +||www16.jtv.com^ +||www2.automd.com^ +||www2.autopartsplace.com^ +||www2.autopartsworld.com^ +||www2.discountairintake.com^ +||www2.discountautomirrors.com^ +||www2.discountbodyparts.com^ +||www2.discountbrakes.com^ +||www2.discountcarlights.com^ +||www2.extraspace.com^ +||www2.usautoparts.net^ +||www2s.automd.com^ +||www2s.autopartsgiant.com^ +||www2s.autopartswarehouse.com^ +||www2s.canadapartsonline.com^ +||www2s.carjunky.com^ +||www2s.discountautoshocks.com^ +||www2s.discountcatalyticconverters.com^ +||www2s.discountexhaustsystems.com^ +||www2s.discountfuelsystems.com^ +||www2s.extraspace.com^ +||www2s.speedyperformanceparts.com^ +||www2s.storage.com^ +||www2s.thepartsbin.com^ +||www2s.usautoparts.net^ +||www3.gfa.org^ +||www3s.bimmerpartswholesale.com^ +||www3s.ing.be^ +||www3s.pitstopautoparts.com^ +||www4s.ing.be^ +||www91.intel.co.jp^ +||www91.intel.co.kr^ +||www91.intel.co.uk^ +||www91.intel.com.br^ +||www91.intel.com.tr^ +||www91.intel.com.tw^ +||www91.intel.com^ +||www91.intel.de^ +||www91.intel.es^ +||www91.intel.fr^ +||www91.intel.in^ +||www91.intel.la^ +||www91.intel.pl^ +||wwwmetricssl.visitflorida.com^ +||x.timesunion.com^ +||xp.allianz.de^ +||xps.huk.de^ +||xps.huk24.de^ +||zisr3w3i2csfa76m.edge41.testandtarget.omniture.com^ +||zmetrics.boston.com^ +||zmetrics.msn.com^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_acton.txt *** +||12build.actonservice.com^ +||23andme.actonservice.com^ +||3347.wolf-gordon.com^ +||3347.wolfgordon.com^ +||3dm.3dimensional.com^ +||3mark.actonservice.com^ +||3plworldwide.actonservice.com^ +||a.evergage.com^ +||a.highroadsolution.com^ +||a10053.actonservice.com^ +||a10555.actonservice.com^ +||a10640.actonservice.com^ +||a10641.actonservice.com^ +||a10645.actonservice.com^ +||a10647.actonservice.com^ +||a10655.actonservice.com^ +||a10674.actonservice.com^ +||a10683.actonservice.com^ +||a10695.actonservice.com^ +||a10696.actonservice.com^ +||a10748.actonservice.com^ +||a11058.actonservice.com^ +||a11107.actonservice.com^ +||a11114.actonservice.com^ +||a11143.actonservice.com^ +||a11159.actonservice.com^ +||a11161.actonservice.com^ +||a11176.actonservice.com^ +||a11178.actonservice.com^ +||a11198.actonservice.com^ +||a11211.actonservice.com^ +||a11212.actonservice.com^ +||a11248.actonservice.com^ +||a11283.actonservice.com^ +||a11294.actonservice.com^ +||a11315.actonservice.com^ +||a11320.actonservice.com^ +||a11322.actonservice.com^ +||a11360.actonservice.com^ +||a11367.actonservice.com^ +||a11403.actonservice.com^ +||a11413003.actonservice.com^ +||a11426.actonservice.com^ +||a11436.actonservice.com^ +||a11442.actonservice.com^ +||a11443.actonservice.com^ +||a11463.actonservice.com^ +||a11468.actonservice.com^ +||a11481.actonservice.com^ +||a11501.actonservice.com^ +||a11516.actonservice.com^ +||a11519.actonservice.com^ +||a11522.actonservice.com^ +||a11531.actonservice.com^ +||a11537.actonservice.com^ +||a11538.actonservice.com^ +||a11540.actonservice.com^ +||a11550.actonservice.com^ +||a11576.actonservice.com^ +||a11584.actonservice.com^ +||a11585.actonservice.com^ +||a11588.actonservice.com^ +||a11601.actonservice.com^ +||a11645.actonservice.com^ +||a11690.actonservice.com^ +||a11735.actonservice.com^ +||a11801.actonservice.com^ +||a11823.actonservice.com^ +||a11843.actonservice.com^ +||a11860.actonservice.com^ +||a11862.actonservice.com^ +||a11868.actonservice.com^ +||a11872.actonservice.com^ +||a11888.actonservice.com^ +||a11904.actonservice.com^ +||a11928.actonservice.com^ +||a11929.actonservice.com^ +||a11942.actonservice.com^ +||a11943.actonservice.com^ +||a12014.actonservice.com^ +||a12016.actonservice.com^ +||a12019.actonservice.com^ +||a12058.actonservice.com^ +||a12083.actonservice.com^ +||a12093.actonservice.com^ +||a12132.actonservice.com^ +||a12139.actonservice.com^ +||a12142.actonservice.com^ +||a12160.actonservice.com^ +||a12179.actonservice.com^ +||a12180.actonservice.com^ +||a12192.actonservice.com^ +||a12238.actonservice.com^ +||a12254.actonservice.com^ +||a12255.actonservice.com^ +||a12256.actonservice.com^ +||a12269.actonservice.com^ +||a12273.actonservice.com^ +||a12287.actonservice.com^ +||a12290.actonservice.com^ +||a12329.actonservice.com^ +||a12332.actonservice.com^ +||a12336.actonservice.com^ +||a12409.actonservice.com^ +||a12433.actonservice.com^ +||a12440.actonservice.com^ +||a12516.actonservice.com^ +||a12517.actonservice.com^ +||a12520.actonservice.com^ +||a12533.actonservice.com^ +||a12538.actonservice.com^ +||a12547.actonservice.com^ +||a12559.actonservice.com^ +||a12561.actonservice.com^ +||a12572.actonservice.com^ +||a12619.actonservice.com^ +||a12678.actonservice.com^ +||a12683.actonservice.com^ +||a12684.actonservice.com^ +||a12719.actonservice.com^ +||a12724.actonservice.com^ +||a12732.actonservice.com^ +||a12734.actonservice.com^ +||a12765.actonservice.com^ +||a12770.actonservice.com^ +||a12777.actonservice.com^ +||a12791.actonservice.com^ +||a12793.actonservice.com^ +||a12798.actonservice.com^ +||a12826.actonservice.com^ +||a12852.actonservice.com^ +||a12872.actonservice.com^ +||a12876.actonservice.com^ +||a12893.actonservice.com^ +||a12894.actonservice.com^ +||a12924.actonservice.com^ +||a12930.actonservice.com^ +||a12935.actonservice.com^ +||a12956.actonservice.com^ +||a12991.actonservice.com^ +||a13007.actonservice.com^ +||a13009.actonservice.com^ +||a13010.actonservice.com^ +||a13016.actonservice.com^ +||a13017.actonservice.com^ +||a13027.actonservice.com^ +||a13044.actonservice.com^ +||a13050.actonservice.com^ +||a13072.actonservice.com^ +||a13080.actonservice.com^ +||a13083.actonservice.com^ +||a13101.actonservice.com^ +||a13104.actonservice.com^ +||a13111.actonservice.com^ +||a13112.actonservice.com^ +||a13118.actonservice.com^ +||a13119.actonservice.com^ +||a13132.actonservice.com^ +||a13183.actonservice.com^ +||a13188.actonservice.com^ +||a13199.actonservice.com^ +||a13209.actonservice.com^ +||a13294.actonservice.com^ +||a13302.actonservice.com^ +||a13309.actonservice.com^ +||a13320.actonservice.com^ +||a13357.actonservice.com^ +||a13363.actonservice.com^ +||a13375.actonservice.com^ +||a13389.actonservice.com^ +||a13398.actonservice.com^ +||a13404.actonservice.com^ +||a13422.actonservice.com^ +||a13425.actonservice.com^ +||a13460.actonservice.com^ +||a13472.actonservice.com^ +||a13476.actonservice.com^ +||a13548.actonservice.com^ +||a13557.actonservice.com^ +||a13605.actonservice.com^ +||a13620.actonservice.com^ +||a13650.actonservice.com^ +||a13651.actonservice.com^ +||a13653.actonservice.com^ +||a13654.actonservice.com^ +||a13664.actonservice.com^ +||a13678.actonservice.com^ +||a13692.actonservice.com^ +||a13709.actonservice.com^ +||a13715.actonservice.com^ +||a13724.actonservice.com^ +||a13796.actonservice.com^ +||a13835.actonservice.com^ +||a13850.actonservice.com^ +||a13860.actonservice.com^ +||a13866.actonservice.com^ +||a13868.actonservice.com^ +||a13885.actonservice.com^ +||a13890.actonservice.com^ +||a13912.actonservice.com^ +||a13913.actonservice.com^ +||a13931.actonservice.com^ +||a13938.actonservice.com^ +||a13951.actonservice.com^ +||a13956.actonservice.com^ +||a13980.actonservice.com^ +||a14001.actonservice.com^ +||a14010.actonservice.com^ +||a14041.actonservice.com^ +||a14057.actonservice.com^ +||a14063.actonservice.com^ +||a14069.actonservice.com^ +||a14070.actonservice.com^ +||a14082.actonservice.com^ +||a14089.actonservice.com^ +||a14103.actonservice.com^ +||a14107.actonservice.com^ +||a14109.actonservice.com^ +||a14142.actonservice.com^ +||a14163.actonservice.com^ +||a14164.actonservice.com^ +||a14167.actonservice.com^ +||a14181.actonservice.com^ +||a14214.actonservice.com^ +||a14249.actonservice.com^ +||a14259.actonservice.com^ +||a14267.actonservice.com^ +||a14273.actonservice.com^ +||a14277.actonservice.com^ +||a14282.actonservice.com^ +||a14284.actonservice.com^ +||a14315.actonservice.com^ +||a14338.actonservice.com^ +||a14339.actonservice.com^ +||a14349.actonservice.com^ +||a14362.actonservice.com^ +||a14374.actonservice.com^ +||a14376.actonservice.com^ +||a14377.actonservice.com^ +||a14378.actonservice.com^ +||a14382.actonservice.com^ +||a14383.actonservice.com^ +||a14384.actonservice.com^ +||a14412.actonservice.com^ +||a14414.actonservice.com^ +||a14415.actonservice.com^ +||a14418.actonservice.com^ +||a14429.actonservice.com^ +||a14448.actonservice.com^ +||a14457.actonservice.com^ +||a14481.actonservice.com^ +||a14482.actonservice.com^ +||a14485.actonservice.com^ +||a14489.actonservice.com^ +||a14505.actonservice.com^ +||a14512.actonservice.com^ +||a14515.actonservice.com^ +||a14516.actonservice.com^ +||a14518.actonservice.com^ +||a14527.actonservice.com^ +||a14535.actonservice.com^ +||a14540.actonservice.com^ +||a14556.actonservice.com^ +||a14559.actonservice.com^ +||a14572.actonservice.com^ +||a14576.actonservice.com^ +||a14587.actonservice.com^ +||a14596.actonservice.com^ +||a14606.actonservice.com^ +||a14629.actonservice.com^ +||a14637.actonservice.com^ +||a14641.actonservice.com^ +||a14644.actonservice.com^ +||a14647.actonservice.com^ +||a14655.actonservice.com^ +||a14661.actonservice.com^ +||a14663.actonservice.com^ +||a14690.actonservice.com^ +||a14700.actonservice.com^ +||a14724.actonservice.com^ +||a14732.actonservice.com^ +||a14774.actonservice.com^ +||a14775.actonservice.com^ +||a14778.actonservice.com^ +||a14788.actonservice.com^ +||a14797.actonservice.com^ +||a14808.actonservice.com^ +||a14814.actonservice.com^ +||a14835.actonservice.com^ +||a14951.actonservice.com^ +||a15567.actonservice.com^ +||a15569.actonservice.com^ +||a15575.actonservice.com^ +||a15599.actonservice.com^ +||a15601.actonservice.com^ +||a15613.actonservice.com^ +||a15614.actonservice.com^ +||a15633.actonservice.com^ +||a15654.actonservice.com^ +||a15661.actonservice.com^ +||a15662.actonservice.com^ +||a15668.actonservice.com^ +||a15673.actonservice.com^ +||a15675.actonservice.com^ +||a15691.actonservice.com^ +||a15703.actonservice.com^ +||a15717.actonservice.com^ +||a15736.actonservice.com^ +||a15742.actonservice.com^ +||a15745.actonservice.com^ +||a15760.actonservice.com^ +||a15777.actonservice.com^ +||a15781.actonservice.com^ +||a15782.actonservice.com^ +||a15788.actonservice.com^ +||a15807.actonservice.com^ +||a15817.actonservice.com^ +||a15818.actonservice.com^ +||a15831.actonservice.com^ +||a15832.actonservice.com^ +||a15833.actonservice.com^ +||a15838.actonservice.com^ +||a15857.actonservice.com^ +||a15877.actonservice.com^ +||a15908.actonservice.com^ +||a15909.actonservice.com^ +||a15927.actonservice.com^ +||a15932.actonservice.com^ +||a15933.actonservice.com^ +||a15943.actonservice.com^ +||a15944.actonservice.com^ +||a15949.actonservice.com^ +||a15955.actonservice.com^ +||a15960.actonservice.com^ +||a15964.actonservice.com^ +||a15988.actonservice.com^ +||a15991.actonservice.com^ +||a16009.actonservice.com^ +||a16016.actonservice.com^ +||a16017.actonservice.com^ +||a16018.actonservice.com^ +||a16028.actonservice.com^ +||a16030.actonservice.com^ +||a16031.actonservice.com^ +||a16041.actonservice.com^ +||a16048.actonservice.com^ +||a16052.actonservice.com^ +||a16054.actonservice.com^ +||a16060.actonservice.com^ +||a16065.actonservice.com^ +||a16067.actonservice.com^ +||a16068.actonservice.com^ +||a16070.actonservice.com^ +||a16078.actonservice.com^ +||a16084.actonservice.com^ +||a16088.actonservice.com^ +||a16089.actonservice.com^ +||a16096.actonservice.com^ +||a16097.actonservice.com^ +||a16101.actonservice.com^ +||a16102.actonservice.com^ +||a16108.actonservice.com^ +||a16113.actonservice.com^ +||a16119.actonservice.com^ +||a16121.actonservice.com^ +||a16122.actonservice.com^ +||a16133.actonservice.com^ +||a16157.actonservice.com^ +||a16161.actonservice.com^ +||a16176.actonservice.com^ +||a16178.actonservice.com^ +||a16179.actonservice.com^ +||a16206.actonservice.com^ +||a16207.actonservice.com^ +||a16208.actonservice.com^ +||a16215.actonservice.com^ +||a16219.actonservice.com^ +||a16220.actonservice.com^ +||a16238.actonservice.com^ +||a16241.actonservice.com^ +||a16242.actonservice.com^ +||a16257.actonservice.com^ +||a16258.actonservice.com^ +||a16269.actonservice.com^ +||a16279.actonservice.com^ +||a16282.actonservice.com^ +||a16291.actonservice.com^ +||a16292.actonservice.com^ +||a16302.actonservice.com^ +||a16303.actonservice.com^ +||a16317.actonservice.com^ +||a16378.actonservice.com^ +||a16385.actonservice.com^ +||a16398.actonservice.com^ +||a16404.actonservice.com^ +||a16408.actonservice.com^ +||a16418.actonservice.com^ +||a16443.actonservice.com^ +||a16445.actonservice.com^ +||a16450.actonservice.com^ +||a16453.actonservice.com^ +||a16454.actonservice.com^ +||a16468.actonservice.com^ +||a16473.actonservice.com^ +||a16475.actonservice.com^ +||a16476.actonservice.com^ +||a16477.actonservice.com^ +||a16478.actonservice.com^ +||a16479.actonservice.com^ +||a16485.actonservice.com^ +||a16502.actonservice.com^ +||a16508.actonservice.com^ +||a16509.actonservice.com^ +||a16513.actonservice.com^ +||a16517.actonservice.com^ +||a16523.actonservice.com^ +||a16524.actonservice.com^ +||a16526.actonservice.com^ +||a16527.actonservice.com^ +||a16528.actonservice.com^ +||a16529.actonservice.com^ +||a16530.actonservice.com^ +||a16531.actonservice.com^ +||a16532.actonservice.com^ +||a16533.actonservice.com^ +||a16537.actonservice.com^ +||a16542.actonservice.com^ +||a16543.actonservice.com^ +||a16557.actonservice.com^ +||a16560.actonservice.com^ +||a16570.actonservice.com^ +||a16573.actonservice.com^ +||a16581.actonservice.com^ +||a16583.actonservice.com^ +||a16585.actonservice.com^ +||a16588.actonservice.com^ +||a16589.actonservice.com^ +||a16609.actonservice.com^ +||a16611.actonservice.com^ +||a16611001.actonservice.com^ +||a16617.actonservice.com^ +||a16621.actonservice.com^ +||a16622.actonservice.com^ +||a16624.actonservice.com^ +||a16629.actonservice.com^ +||a16629001.actonservice.com^ +||a16634.actonservice.com^ +||a16635.actonservice.com^ +||a16638.actonservice.com^ +||a16656.actonservice.com^ +||a16656001.actonservice.com^ +||a16658.actonservice.com^ +||a16672.actonservice.com^ +||a16674.actonservice.com^ +||a16677.actonservice.com^ +||a16681.actonservice.com^ +||a16691.actonservice.com^ +||a16696.actonservice.com^ +||a16726.actonservice.com^ +||a16728.actonservice.com^ +||a16734.actonservice.com^ +||a16741.actonservice.com^ +||a16748.actonservice.com^ +||a16765.actonservice.com^ +||a16766.actonservice.com^ +||a16772.actonservice.com^ +||a16778.actonservice.com^ +||a16781.actonservice.com^ +||a16782.actonservice.com^ +||a16810.actonservice.com^ +||a16830.actonservice.com^ +||a16832.actonservice.com^ +||a16834.actonservice.com^ +||a16841.actonservice.com^ +||a16842.actonservice.com^ +||a16844.actonservice.com^ +||a16857.actonservice.com^ +||a16858.actonservice.com^ +||a16859.actonservice.com^ +||a16860.actonservice.com^ +||a16861.actonservice.com^ +||a16862.actonservice.com^ +||a16863.actonservice.com^ +||a16864.actonservice.com^ +||a16865.actonservice.com^ +||a16868.actonservice.com^ +||a16869.actonservice.com^ +||a16870.actonservice.com^ +||a16871.actonservice.com^ +||a16887.actonservice.com^ +||a16893.actonservice.com^ +||a16896.actonservice.com^ +||a16899.actonservice.com^ +||a16907.actonservice.com^ +||a16911.actonservice.com^ +||a16913.actonservice.com^ +||a16914.actonservice.com^ +||a16916.actonservice.com^ +||a16917.actonservice.com^ +||a16923.actonservice.com^ +||a16937.actonservice.com^ +||a16950.actonservice.com^ +||a16955.actonservice.com^ +||a16966.actonservice.com^ +||a16970.actonservice.com^ +||a16973.actonservice.com^ +||a16980.actonservice.com^ +||a16981.actonservice.com^ +||a17003.actonservice.com^ +||a17015.actonservice.com^ +||a17030.actonservice.com^ +||a17033.actonservice.com^ +||a17044.actonservice.com^ +||a17045.actonservice.com^ +||a17049.actonservice.com^ +||a17050.actonservice.com^ +||a17084.actonservice.com^ +||a17095.actonservice.com^ +||a17096.actonservice.com^ +||a17097.actonservice.com^ +||a17098.actonservice.com^ +||a17099.actonservice.com^ +||a17100.actonservice.com^ +||a17101.actonservice.com^ +||a17113.actonservice.com^ +||a17114.actonservice.com^ +||a17120.actonservice.com^ +||a17121.actonservice.com^ +||a17122.actonservice.com^ +||a17124.actonservice.com^ +||a17128.actonservice.com^ +||a17134.actonservice.com^ +||a17153.actonservice.com^ +||a17161.actonservice.com^ +||a17166.actonservice.com^ +||a17174.actonservice.com^ +||a17181.actonservice.com^ +||a17182.actonservice.com^ +||a17183.actonservice.com^ +||a17184.actonservice.com^ +||a17186.actonservice.com^ +||a17187.actonservice.com^ +||a17189.actonservice.com^ +||a17194.actonservice.com^ +||a17217.actonservice.com^ +||a17224.actonservice.com^ +||a17229.actonservice.com^ +||a17237.actonservice.com^ +||a17240.actonservice.com^ +||a17244.actonservice.com^ +||a17245.actonservice.com^ +||a17246.actonservice.com^ +||a17249.actonservice.com^ +||a17254.actonservice.com^ +||a17256.actonservice.com^ +||a17271.actonservice.com^ +||a17276.actonservice.com^ +||a17277.actonservice.com^ +||a17278.actonservice.com^ +||a17286.actonservice.com^ +||a17292.actonservice.com^ +||a17297.actonservice.com^ +||a17298.actonservice.com^ +||a17300.actonservice.com^ +||a17301.actonservice.com^ +||a17302.actonservice.com^ +||a17305.actonservice.com^ +||a17308.actonservice.com^ +||a17310.actonservice.com^ +||a17322.actonservice.com^ +||a17328.actonservice.com^ +||a17342.actonservice.com^ +||a17347.actonservice.com^ +||a17348.actonservice.com^ +||a17350.actonservice.com^ +||a17351.actonservice.com^ +||a17352.actonservice.com^ +||a17362.actonservice.com^ +||a17367.actonservice.com^ +||a17368.actonservice.com^ +||a17382.actonservice.com^ +||a17393.actonservice.com^ +||a17395.actonservice.com^ +||a17396.actonservice.com^ +||a17397.actonservice.com^ +||a17398.actonservice.com^ +||a17401.actonservice.com^ +||a17402.actonservice.com^ +||a17403.actonservice.com^ +||a17406.actonservice.com^ +||a17407.actonservice.com^ +||a17408.actonservice.com^ +||a17409.actonservice.com^ +||a17410.actonservice.com^ +||a17412.actonservice.com^ +||a17414.actonservice.com^ +||a17415.actonservice.com^ +||a17416.actonservice.com^ +||a17426.actonservice.com^ +||a17436.actonservice.com^ +||a17452.actonservice.com^ +||a17453.actonservice.com^ +||a17455.actonservice.com^ +||a17467.actonservice.com^ +||a17476.actonservice.com^ +||a17481.actonservice.com^ +||a17482.actonservice.com^ +||a17483.actonservice.com^ +||a17485.actonservice.com^ +||a17505.actonservice.com^ +||a17512.actonservice.com^ +||a17513.actonservice.com^ +||a17514.actonservice.com^ +||a17517.actonservice.com^ +||a17538.actonservice.com^ +||a17539.actonservice.com^ +||a17549.actonservice.com^ +||a17552.actonservice.com^ +||a17559.actonservice.com^ +||a17560.actonservice.com^ +||a17564.actonservice.com^ +||a17571.actonservice.com^ +||a17591.actonservice.com^ +||a17616.actonservice.com^ +||a17637.actonservice.com^ +||a17638.actonservice.com^ +||a17639.actonservice.com^ +||a17659.actonservice.com^ +||a17661.actonservice.com^ +||a17668.actonservice.com^ +||a17677.actonservice.com^ +||a17679.actonservice.com^ +||a17685.actonservice.com^ +||a17691.actonservice.com^ +||a17697.actonservice.com^ +||a17698.actonservice.com^ +||a17699.actonservice.com^ +||a17700.actonservice.com^ +||a17701.actonservice.com^ +||a17703.actonservice.com^ +||a17704.actonservice.com^ +||a17707.actonservice.com^ +||a17709.actonservice.com^ +||a17739.actonservice.com^ +||a17741.actonservice.com^ +||a17742.actonservice.com^ +||a17744.actonservice.com^ +||a17746.actonservice.com^ +||a17752.actonservice.com^ +||a17754.actonservice.com^ +||a17756.actonservice.com^ +||a17757.actonservice.com^ +||a17758.actonservice.com^ +||a17759.actonservice.com^ +||a17760.actonservice.com^ +||a17788.actonservice.com^ +||a17799.actonservice.com^ +||a17801.actonservice.com^ +||a17803.actonservice.com^ +||a17808.actonservice.com^ +||a17815.actonservice.com^ +||a17817.actonservice.com^ +||a17818.actonservice.com^ +||a17824.actonservice.com^ +||a17842.actonservice.com^ +||a17856.actonservice.com^ +||a17859.actonservice.com^ +||a17869.actonservice.com^ +||a17870.actonservice.com^ +||a17883.actonservice.com^ +||a17898.actonservice.com^ +||a17909.actonservice.com^ +||a17916.actonservice.com^ +||a17918.actonservice.com^ +||a18327.actonservice.com^ +||a18330.actonservice.com^ +||a18886.actonservice.com^ +||a19340.actonservice.com^ +||a19384.actonservice.com^ +||a19537.actonservice.com^ +||a19609.actonservice.com^ +||a19612.actonservice.com^ +||a19615.actonservice.com^ +||a19708.actonservice.com^ +||a19714.actonservice.com^ +||a19717.actonservice.com^ +||a19743.actonservice.com^ +||a19748.actonservice.com^ +||a19755.actonservice.com^ +||a19761.actonservice.com^ +||a19768.actonservice.com^ +||a19772.actonservice.com^ +||a19787.actonservice.com^ +||a19795.actonservice.com^ +||a19807.actonservice.com^ +||a19813.actonservice.com^ +||a19824.actonservice.com^ +||a19858.actonservice.com^ +||a19895.actonservice.com^ +||a19930.actonservice.com^ +||a19997.actonservice.com^ +||a20022.actonservice.com^ +||a20204.actonservice.com^ +||a20207.actonservice.com^ +||a20219.actonservice.com^ +||a20220.actonservice.com^ +||a20221.actonservice.com^ +||a20224.actonservice.com^ +||a20294.actonservice.com^ +||a20301.actonservice.com^ +||a20327.actonservice.com^ +||a20365.actonservice.com^ +||a20372.actonservice.com^ +||a20381.actonservice.com^ +||a20407.actonservice.com^ +||a20424.actonservice.com^ +||a20430.actonservice.com^ +||a20438.actonservice.com^ +||a20442.actonservice.com^ +||a20558.actonservice.com^ +||a20562.actonservice.com^ +||a20588.actonservice.com^ +||a20640.actonservice.com^ +||a20742.actonservice.com^ +||a20776.actonservice.com^ +||a20785.actonservice.com^ +||a20790.actonservice.com^ +||a20829.actonservice.com^ +||a20835.actonservice.com^ +||a20896.actonservice.com^ +||a20899.actonservice.com^ +||a20909.actonservice.com^ +||a20946.actonservice.com^ +||a20989.actonservice.com^ +||a21037.actonservice.com^ +||a21068.actonservice.com^ +||a21094.actonservice.com^ +||a21136.actonservice.com^ +||a21151.actonservice.com^ +||a21165.actonservice.com^ +||a21185.actonservice.com^ +||a21202.actonservice.com^ +||a21310.actonservice.com^ +||a21341.actonservice.com^ +||a21346.actonservice.com^ +||a21347.actonservice.com^ +||a21365.actonservice.com^ +||a21381.actonservice.com^ +||a21389.actonservice.com^ +||a21391.actonservice.com^ +||a21398.actonservice.com^ +||a21401.actonservice.com^ +||a21437.actonservice.com^ +||a21500.actonservice.com^ +||a21540.actonservice.com^ +||a21556.actonservice.com^ +||a21667.actonservice.com^ +||a21699.actonservice.com^ +||a21787.actonservice.com^ +||a21943.actonservice.com^ +||a21961.actonservice.com^ +||a22037.actonservice.com^ +||a22103.actonservice.com^ +||a22128.actonservice.com^ +||a22134.actonservice.com^ +||a22241.actonservice.com^ +||a22243.actonservice.com^ +||a22348.actonservice.com^ +||a22359.actonservice.com^ +||a22368.actonservice.com^ +||a22435.actonservice.com^ +||a22524.actonservice.com^ +||a22658.actonservice.com^ +||a22896.actonservice.com^ +||a22908.actonservice.com^ +||a22923.actonservice.com^ +||a22926.actonservice.com^ +||a22941.actonservice.com^ +||a23027.actonservice.com^ +||a23030.actonservice.com^ +||a23041.actonservice.com^ +||a23051.actonservice.com^ +||a23118.actonservice.com^ +||a23148.actonservice.com^ +||a23163.actonservice.com^ +||a23218.actonservice.com^ +||a23294.actonservice.com^ +||a23402.actonservice.com^ +||a23450.actonservice.com^ +||a23509.actonservice.com^ +||a23581.actonservice.com^ +||a23606.actonservice.com^ +||a23607.actonservice.com^ +||a23646.actonservice.com^ +||a23653.actonservice.com^ +||a23713.actonservice.com^ +||a23754.actonservice.com^ +||a23802.actonservice.com^ +||a23927.actonservice.com^ +||a24000.actonservice.com^ +||a24007.actonservice.com^ +||a24214.actonservice.com^ +||a24226.actonservice.com^ +||a24246.actonservice.com^ +||a24260.actonservice.com^ +||a24273.actonservice.com^ +||a24295.actonservice.com^ +||a24315.actonservice.com^ +||a24335.actonservice.com^ +||a24335001.actonservice.com^ +||a24336001.actonservice.com^ +||a24340.actonservice.com^ +||a24360.actonservice.com^ +||a24395.actonservice.com^ +||a24396.actonservice.com^ +||a24405.actonservice.com^ +||a24439.actonservice.com^ +||a24454.actonservice.com^ +||a24457.actonservice.com^ +||a24500.actonservice.com^ +||a24503.actonservice.com^ +||a24506.actonservice.com^ +||a24531.actonservice.com^ +||a24540.actonservice.com^ +||a24543.actonservice.com^ +||a24546.actonservice.com^ +||a24551.actonservice.com^ +||a24564.actonservice.com^ +||a24577001.actonservice.com^ +||a24579.actonservice.com^ +||a24584.actonservice.com^ +||a24591.actonservice.com^ +||a24592.actonservice.com^ +||a24600.actonservice.com^ +||a24606.actonservice.com^ +||a24612.actonservice.com^ +||a24630.actonservice.com^ +||a24638.actonservice.com^ +||a24642.actonservice.com^ +||a24648.actonservice.com^ +||a24669.actonservice.com^ +||a24681.actonservice.com^ +||a24703.actonservice.com^ +||a24718.actonservice.com^ +||a24727.actonservice.com^ +||a24730.actonservice.com^ +||a24733.actonservice.com^ +||a24744.actonservice.com^ +||a24766.actonservice.com^ +||a24780.actonservice.com^ +||a24786.actonservice.com^ +||a24792.actonservice.com^ +||a24793.actonservice.com^ +||a24809.actonservice.com^ +||a24812.actonservice.com^ +||a24820.actonservice.com^ +||a24842.actonservice.com^ +||a24843.actonservice.com^ +||a24846.actonservice.com^ +||a24849.actonservice.com^ +||a24853.actonservice.com^ +||a24858.actonservice.com^ +||a24863.actonservice.com^ +||a24865.actonservice.com^ +||a24868.actonservice.com^ +||a24869.actonservice.com^ +||a24898.actonservice.com^ +||a24899.actonservice.com^ +||a24907.actonservice.com^ +||a24910.actonservice.com^ +||a24923.actonservice.com^ +||a24962.actonservice.com^ +||a24982.actonservice.com^ +||a24985.actonservice.com^ +||a24998.actonservice.com^ +||a25026.actonservice.com^ +||a25032.actonservice.com^ +||a25041.actonservice.com^ +||a25057.actonservice.com^ +||a25065.actonservice.com^ +||a25067.actonservice.com^ +||a25077.actonservice.com^ +||a25080.actonservice.com^ +||a25095.actonservice.com^ +||a25098.actonservice.com^ +||a25134.actonservice.com^ +||a25152.actonservice.com^ +||a25158.actonservice.com^ +||a25186.actonservice.com^ +||a25197.actonservice.com^ +||a25210.actonservice.com^ +||a25216.actonservice.com^ +||a25224.actonservice.com^ +||a25226.actonservice.com^ +||a25233.actonservice.com^ +||a25247.actonservice.com^ +||a25250.actonservice.com^ +||a25303.actonservice.com^ +||a25306.actonservice.com^ +||a25307.actonservice.com^ +||a25309.actonservice.com^ +||a25329.actonservice.com^ +||a25350.actonservice.com^ +||a25351.actonservice.com^ +||a25370.actonservice.com^ +||a25378.actonservice.com^ +||a25381.actonservice.com^ +||a25393.actonservice.com^ +||a25406.actonservice.com^ +||a25409.actonservice.com^ +||a25412.actonservice.com^ +||a25427.actonservice.com^ +||a25488.actonservice.com^ +||a25493.actonservice.com^ +||a25497.actonservice.com^ +||a25513.actonservice.com^ +||a25526.actonservice.com^ +||a25535.actonservice.com^ +||a25540.actonservice.com^ +||a25545.actonservice.com^ +||a25546.actonservice.com^ +||a25569.actonservice.com^ +||a25572.actonservice.com^ +||a25580.actonservice.com^ +||a25598.actonservice.com^ +||a25599.actonservice.com^ +||a25601.actonservice.com^ +||a25604001.actonservice.com^ +||a25605.actonservice.com^ +||a25611.actonservice.com^ +||a25647.actonservice.com^ +||a25657.actonservice.com^ +||a25674.actonservice.com^ +||a25683.actonservice.com^ +||a25686.actonservice.com^ +||a25689.actonservice.com^ +||a25692.actonservice.com^ +||a25695.actonservice.com^ +||a25697.actonservice.com^ +||a25707.actonservice.com^ +||a25713.actonservice.com^ +||a25719.actonservice.com^ +||a25722.actonservice.com^ +||a25725.actonservice.com^ +||a25727.actonservice.com^ +||a25728.actonservice.com^ +||a25751.actonservice.com^ +||a25752.actonservice.com^ +||a25753.actonservice.com^ +||a25781.actonservice.com^ +||a25797.actonservice.com^ +||a25802.actonservice.com^ +||a25805.actonservice.com^ +||a25848.actonservice.com^ +||a25853.actonservice.com^ +||a25855.actonservice.com^ +||a25859.actonservice.com^ +||a25872.actonservice.com^ +||a25881.actonservice.com^ +||a25884.actonservice.com^ +||a25888.actonservice.com^ +||a25891.actonservice.com^ +||a25910.actonservice.com^ +||a25916.actonservice.com^ +||a25929001.actonservice.com^ +||a25939.actonservice.com^ +||a25949.actonservice.com^ +||a25950.actonservice.com^ +||a25953.actonservice.com^ +||a25956.actonservice.com^ +||a25977.actonservice.com^ +||a25985.actonservice.com^ +||a25994.actonservice.com^ +||a25998.actonservice.com^ +||a25999.actonservice.com^ +||a26011.actonservice.com^ +||a26020.actonservice.com^ +||a26040.actonservice.com^ +||a26043.actonservice.com^ +||a26052.actonservice.com^ +||a26055.actonservice.com^ +||a26062.actonservice.com^ +||a26064.actonservice.com^ +||a26069.actonservice.com^ +||a26089.actonservice.com^ +||a26095.actonservice.com^ +||a26135.actonservice.com^ +||a26138.actonservice.com^ +||a26164.actonservice.com^ +||a26168.actonservice.com^ +||a26175.actonservice.com^ +||a26177.actonservice.com^ +||a26193.actonservice.com^ +||a26199.actonservice.com^ +||a26204.actonservice.com^ +||a26226.actonservice.com^ +||a26232.actonservice.com^ +||a26236.actonservice.com^ +||a26239.actonservice.com^ +||a26245.actonservice.com^ +||a26251.actonservice.com^ +||a26259.actonservice.com^ +||a26260.actonservice.com^ +||a26268.actonservice.com^ +||a26284.actonservice.com^ +||a26287.actonservice.com^ +||a26292.actonservice.com^ +||a26301.actonservice.com^ +||a26310.actonservice.com^ +||a26312.actonservice.com^ +||a26327.actonservice.com^ +||a26361.actonservice.com^ +||a26362.actonservice.com^ +||a26391.actonservice.com^ +||a26394.actonservice.com^ +||a26395.actonservice.com^ +||a26410.actonservice.com^ +||a26448.actonservice.com^ +||a26463.actonservice.com^ +||a26469.actonservice.com^ +||a26472.actonservice.com^ +||a26475.actonservice.com^ +||a26479.actonservice.com^ +||a26495.actonservice.com^ +||a26521.actonservice.com^ +||a26530.actonservice.com^ +||a26539.actonservice.com^ +||a26582.actonservice.com^ +||a26591.actonservice.com^ +||a26597.actonservice.com^ +||a26612.actonservice.com^ +||a26629.actonservice.com^ +||a26632.actonservice.com^ +||a26634.actonservice.com^ +||a26648.actonservice.com^ +||a26650.actonservice.com^ +||a26655.actonservice.com^ +||a26664.actonservice.com^ +||a26665.actonservice.com^ +||a26676.actonservice.com^ +||a26695.actonservice.com^ +||a26698.actonservice.com^ +||a26705.actonservice.com^ +||a26710.actonservice.com^ +||a26711.actonservice.com^ +||a26758.actonservice.com^ +||a26767.actonservice.com^ +||a26770.actonservice.com^ +||a26779.actonservice.com^ +||a26781.actonservice.com^ +||a26807.actonservice.com^ +||a26813.actonservice.com^ +||a26816.actonservice.com^ +||a26826.actonservice.com^ +||a26839.actonservice.com^ +||a26855.actonservice.com^ +||a26857.actonservice.com^ +||a26871.actonservice.com^ +||a26879.actonservice.com^ +||a26889.actonservice.com^ +||a26900.actonservice.com^ +||a26962.actonservice.com^ +||a26965.actonservice.com^ +||a26970.actonservice.com^ +||a26991.actonservice.com^ +||a26996.actonservice.com^ +||a26998.actonservice.com^ +||a27004.actonservice.com^ +||a27013.actonservice.com^ +||a27031.actonservice.com^ +||a27035.actonservice.com^ +||a27050.actonservice.com^ +||a27059.actonservice.com^ +||a27061.actonservice.com^ +||a27063.actonservice.com^ +||a27064.actonservice.com^ +||a27067.actonservice.com^ +||a27069.actonservice.com^ +||a27070.actonservice.com^ +||a27072.actonservice.com^ +||a27075.actonservice.com^ +||a27081.actonservice.com^ +||a27084.actonservice.com^ +||a27087.actonservice.com^ +||a27091.actonservice.com^ +||a27092.actonservice.com^ +||a27110.actonservice.com^ +||a27117.actonservice.com^ +||a27129.actonservice.com^ +||a27133.actonservice.com^ +||a27138.actonservice.com^ +||a27147.actonservice.com^ +||a27157.actonservice.com^ +||a27159.actonservice.com^ +||a27172.actonservice.com^ +||a27175.actonservice.com^ +||a27183.actonservice.com^ +||a27196.actonservice.com^ +||a27199.actonservice.com^ +||a27205.actonservice.com^ +||a27234.actonservice.com^ +||a27238.actonservice.com^ +||a27252.actonservice.com^ +||a27297.actonservice.com^ +||a27300.actonservice.com^ +||a27303.actonservice.com^ +||a27304.actonservice.com^ +||a27307.actonservice.com^ +||a27319.actonservice.com^ +||a27320.actonservice.com^ +||a27323.actonservice.com^ +||a27325.actonservice.com^ +||a27331.actonservice.com^ +||a27337.actonservice.com^ +||a27339.actonservice.com^ +||a27342.actonservice.com^ +||a27348.actonservice.com^ +||a27355.actonservice.com^ +||a27358.actonservice.com^ +||a27378.actonservice.com^ +||a27384.actonservice.com^ +||a27387.actonservice.com^ +||a27394.actonservice.com^ +||a27396.actonservice.com^ +||a27397.actonservice.com^ +||a27402.actonservice.com^ +||a27409.actonservice.com^ +||a27421.actonservice.com^ +||a27424.actonservice.com^ +||a27435.actonservice.com^ +||a27441.actonservice.com^ +||a27457.actonservice.com^ +||a27459.actonservice.com^ +||a27461.actonservice.com^ +||a27469.actonservice.com^ +||a27472.actonservice.com^ +||a27474.actonservice.com^ +||a27501.actonservice.com^ +||a27519.actonservice.com^ +||a27563.actonservice.com^ +||a27571.actonservice.com^ +||a27574.actonservice.com^ +||a27581.actonservice.com^ +||a27584.actonservice.com^ +||a27587.actonservice.com^ +||a27593.actonservice.com^ +||a27596.actonservice.com^ +||a27598.actonservice.com^ +||a27602.actonservice.com^ +||a27617.actonservice.com^ +||a27619.actonservice.com^ +||a27620.actonservice.com^ +||a27626.actonservice.com^ +||a27629.actonservice.com^ +||a27647.actonservice.com^ +||a27657.actonservice.com^ +||a27666.actonservice.com^ +||a27673.actonservice.com^ +||a27679.actonservice.com^ +||a27686.actonservice.com^ +||a27691.actonservice.com^ +||a27692.actonservice.com^ +||a27700.actonservice.com^ +||a27712.actonservice.com^ +||a27728.actonservice.com^ +||a27743.actonservice.com^ +||a27809001.actonservice.com^ +||a27815.actonservice.com^ +||a27817.actonservice.com^ +||a27825.actonservice.com^ +||a27844.actonservice.com^ +||a27847.actonservice.com^ +||a27858.actonservice.com^ +||a27872.actonservice.com^ +||a27877.actonservice.com^ +||a27880.actonservice.com^ +||a27884.actonservice.com^ +||a27887.actonservice.com^ +||a27890.actonservice.com^ +||a27899.actonservice.com^ +||a27900.actonservice.com^ +||a27902.actonservice.com^ +||a27903.actonservice.com^ +||a27909.actonservice.com^ +||a27917.actonservice.com^ +||a27923.actonservice.com^ +||a27927.actonservice.com^ +||a27933.actonservice.com^ +||a27937.actonservice.com^ +||a27942.actonservice.com^ +||a27952.actonservice.com^ +||a27974.actonservice.com^ +||a27976.actonservice.com^ +||a27980.actonservice.com^ +||a27986.actonservice.com^ +||a27989.actonservice.com^ +||a27997.actonservice.com^ +||a28009.actonservice.com^ +||a28011.actonservice.com^ +||a28012.actonservice.com^ +||a28026.actonservice.com^ +||a28028.actonservice.com^ +||a28030.actonservice.com^ +||a28031.actonservice.com^ +||a28044.actonservice.com^ +||a28048001.actonservice.com^ +||a28050.actonservice.com^ +||a28071.actonservice.com^ +||a28087.actonservice.com^ +||a28093.actonservice.com^ +||a28101.actonservice.com^ +||a28115.actonservice.com^ +||a28128.actonservice.com^ +||a28133.actonservice.com^ +||a28137.actonservice.com^ +||a28143.actonservice.com^ +||a28191.actonservice.com^ +||a28200.actonservice.com^ +||a28216.actonservice.com^ +||a28228.actonservice.com^ +||a28230.actonservice.com^ +||a28239.actonservice.com^ +||a28243.actonservice.com^ +||a28248.actonservice.com^ +||a28275.actonservice.com^ +||a28278.actonservice.com^ +||a28284.actonservice.com^ +||a28287.actonservice.com^ +||a28296.actonservice.com^ +||a28298.actonservice.com^ +||a28302.actonservice.com^ +||a28307.actonservice.com^ +||a28308.actonservice.com^ +||a28310.actonservice.com^ +||a28316.actonservice.com^ +||a28320.actonservice.com^ +||a28328.actonservice.com^ +||a28335.actonservice.com^ +||a28337.actonservice.com^ +||a28348.actonservice.com^ +||a28350.actonservice.com^ +||a28351.actonservice.com^ +||a28379.actonservice.com^ +||a28390.actonservice.com^ +||a28397.actonservice.com^ +||a28401.actonservice.com^ +||a28410.actonservice.com^ +||a28416.actonservice.com^ +||a28440.actonservice.com^ +||a28443.actonservice.com^ +||a28472.actonservice.com^ +||a28481.actonservice.com^ +||a28487.actonservice.com^ +||a28490.actonservice.com^ +||a28493.actonservice.com^ +||a28496.actonservice.com^ +||a28499.actonservice.com^ +||a28500.actonservice.com^ +||a28513.actonservice.com^ +||a28515.actonservice.com^ +||a28518.actonservice.com^ +||a28527.actonservice.com^ +||a28530.actonservice.com^ +||a28533.actonservice.com^ +||a28539.actonservice.com^ +||a28541.actonservice.com^ +||a28547.actonservice.com^ +||a28557.actonservice.com^ +||a28565.actonservice.com^ +||a28579.actonservice.com^ +||a28599.actonservice.com^ +||a28609.actonservice.com^ +||a28619.actonservice.com^ +||a28627.actonservice.com^ +||a28647.actonservice.com^ +||a28653.actonservice.com^ +||a28690.actonservice.com^ +||a28702.actonservice.com^ +||a28708.actonservice.com^ +||a28719.actonservice.com^ +||a28720.actonservice.com^ +||a28725.actonservice.com^ +||a28729.actonservice.com^ +||a28772.actonservice.com^ +||a28778.actonservice.com^ +||a28788.actonservice.com^ +||a28791.actonservice.com^ +||a28793.actonservice.com^ +||a28795.actonservice.com^ +||a28797.actonservice.com^ +||a28816.actonservice.com^ +||a28838.actonservice.com^ +||a28858.actonservice.com^ +||a28876.actonservice.com^ +||a28891.actonservice.com^ +||a28895.actonservice.com^ +||a28896.actonservice.com^ +||a28911.actonservice.com^ +||a28914.actonservice.com^ +||a28935.actonservice.com^ +||a28941.actonservice.com^ +||a28962.actonservice.com^ +||a28968.actonservice.com^ +||a28979.actonservice.com^ +||a29009.actonservice.com^ +||a29025.actonservice.com^ +||a29032.actonservice.com^ +||a29045.actonservice.com^ +||a29047.actonservice.com^ +||a29064.actonservice.com^ +||a29071.actonservice.com^ +||a29072.actonservice.com^ +||a29084.actonservice.com^ +||a29088.actonservice.com^ +||a29090.actonservice.com^ +||a29091.actonservice.com^ +||a29097.actonservice.com^ +||a29112.actonservice.com^ +||a29134.actonservice.com^ +||a29152.actonservice.com^ +||a29160.actonservice.com^ +||a29167.actonservice.com^ +||a29170.actonservice.com^ +||a29171.actonservice.com^ +||a29177.actonservice.com^ +||a29192.actonservice.com^ +||a29197.actonservice.com^ +||a29198.actonservice.com^ +||a29201.actonservice.com^ +||a29206.actonservice.com^ +||a29213.actonservice.com^ +||a29218.actonservice.com^ +||a29225.actonservice.com^ +||a29228.actonservice.com^ +||a29235.actonservice.com^ +||a29238.actonservice.com^ +||a29251.actonservice.com^ +||a29255.actonservice.com^ +||a29270.actonservice.com^ +||a29277.actonservice.com^ +||a29282.actonservice.com^ +||a29286.actonservice.com^ +||a29312.actonservice.com^ +||a29315.actonservice.com^ +||a29319.actonservice.com^ +||a29322.actonservice.com^ +||a29330.actonservice.com^ +||a29354.actonservice.com^ +||a29358.actonservice.com^ +||a29364.actonservice.com^ +||a29388.actonservice.com^ +||a29395.actonservice.com^ +||a29397.actonservice.com^ +||a29412.actonservice.com^ +||a29418.actonservice.com^ +||a29421.actonservice.com^ +||a29424.actonservice.com^ +||a29429.actonservice.com^ +||a29431.actonservice.com^ +||a29433.actonservice.com^ +||a29440.actonservice.com^ +||a29478.actonservice.com^ +||a29483.actonservice.com^ +||a29508.actonservice.com^ +||a29521.actonservice.com^ +||a29523.actonservice.com^ +||a29539.actonservice.com^ +||a29546.actonservice.com^ +||a29547.actonservice.com^ +||a29553.actonservice.com^ +||a29565.actonservice.com^ +||a29582.actonservice.com^ +||a29586.actonservice.com^ +||a29643.actonservice.com^ +||a29655.actonservice.com^ +||a29673.actonservice.com^ +||a29682.actonservice.com^ +||a29685.actonservice.com^ +||a29688.actonservice.com^ +||a29710.actonservice.com^ +||a29715.actonservice.com^ +||a29721.actonservice.com^ +||a29751.actonservice.com^ +||a29757.actonservice.com^ +||a29763.actonservice.com^ +||a29772.actonservice.com^ +||a29774.actonservice.com^ +||a29784.actonservice.com^ +||a29794.actonservice.com^ +||a29798.actonservice.com^ +||a29817.actonservice.com^ +||a29820.actonservice.com^ +||a29823.actonservice.com^ +||a29827.actonservice.com^ +||a29831.actonservice.com^ +||a29832.actonservice.com^ +||a29846.actonservice.com^ +||a29866.actonservice.com^ +||a29868.actonservice.com^ +||a29881.actonservice.com^ +||a29902.actonservice.com^ +||a29975.actonservice.com^ +||a30003.actonservice.com^ +||a30010.actonservice.com^ +||a30526.actonservice.com^ +||a30667.actonservice.com^ +||a30668.actonservice.com^ +||a30798.actonservice.com^ +||a30867.actonservice.com^ +||a31047.actonservice.com^ +||a31112.actonservice.com^ +||a31248.actonservice.com^ +||a31254.actonservice.com^ +||a31734.actonservice.com^ +||a31970.actonservice.com^ +||a31985.actonservice.com^ +||a32224.actonservice.com^ +||a32227.actonservice.com^ +||a32270.actonservice.com^ +||a32359.actonservice.com^ +||a32559.actonservice.com^ +||a32800.actonservice.com^ +||a32808.actonservice.com^ +||a32858.actonservice.com^ +||a32861.actonservice.com^ +||a33167.actonservice.com^ +||a33174.actonservice.com^ +||a33374.actonservice.com^ +||a33393.actonservice.com^ +||a33437.actonservice.com^ +||a33519.actonservice.com^ +||a33612.actonservice.com^ +||a33882.actonservice.com^ +||a33994.actonservice.com^ +||a34357.actonservice.com^ +||a34396.actonservice.com^ +||a34436.actonservice.com^ +||a34504.actonservice.com^ +||a34524.actonservice.com^ +||a34529.actonservice.com^ +||a34549.actonservice.com^ +||a34553.actonservice.com^ +||a34648.actonservice.com^ +||a34718.actonservice.com^ +||a34764.actonservice.com^ +||a34773.actonservice.com^ +||a34894.actonservice.com^ +||a34938.actonservice.com^ +||a34969.actonservice.com^ +||a34989.actonservice.com^ +||a35094.actonservice.com^ +||a35110.actonservice.com^ +||a35161.actonservice.com^ +||a35310.actonservice.com^ +||a35388.actonservice.com^ +||a35415.actonservice.com^ +||a35421.actonservice.com^ +||a35511.actonservice.com^ +||a35617.actonservice.com^ +||a35688.actonservice.com^ +||a35697.actonservice.com^ +||a35827.actonservice.com^ +||a35851.actonservice.com^ +||a35907.actonservice.com^ +||a35910.actonservice.com^ +||a35933.actonservice.com^ +||a36025.actonservice.com^ +||a36117.actonservice.com^ +||a36162.actonservice.com^ +||a36168.actonservice.com^ +||a36210.actonservice.com^ +||a36213.actonservice.com^ +||a36216.actonservice.com^ +||a36243.actonservice.com^ +||a36279.actonservice.com^ +||a36331.actonservice.com^ +||a36531.actonservice.com^ +||a36535.actonservice.com^ +||a36539.actonservice.com^ +||a36575.actonservice.com^ +||a36590.actonservice.com^ +||a36723.actonservice.com^ +||a36755.actonservice.com^ +||a36777.actonservice.com^ +||a36791.actonservice.com^ +||a36961.actonservice.com^ +||a36966.actonservice.com^ +||a37023.actonservice.com^ +||a37518.actonservice.com^ +||a37619.actonservice.com^ +||a37641.actonservice.com^ +||a37695.actonservice.com^ +||a37697.actonservice.com^ +||a37929.actonservice.com^ +||a37941.actonservice.com^ +||a38028.actonservice.com^ +||a38031.actonservice.com^ +||a38137.actonservice.com^ +||a38256.actonservice.com^ +||a38619.actonservice.com^ +||a38742.actonservice.com^ +||a38757.actonservice.com^ +||a38761.actonservice.com^ +||a38820.actonservice.com^ +||a38951.actonservice.com^ +||a39173.actonservice.com^ +||a39176.actonservice.com^ +||a39177.actonservice.com^ +||a39210.actonservice.com^ +||a39465.actonservice.com^ +||a39468.actonservice.com^ +||a39498.actonservice.com^ +||a39539.actonservice.com^ +||a39606.actonservice.com^ +||a39662.actonservice.com^ +||a39705.actonservice.com^ +||a39744.actonservice.com^ +||a39780.actonservice.com^ +||a39804.actonservice.com^ +||a40194.actonservice.com^ +||a40248.actonservice.com^ +||a40452.actonservice.com^ +||a40545.actonservice.com^ +||a40554.actonservice.com^ +||a40587.actonservice.com^ +||a40865.actonservice.com^ +||a40890.actonservice.com^ +||a40898.actonservice.com^ +||a40899.actonservice.com^ +||a40901.actonservice.com^ +||a40904.actonservice.com^ +||a40905.actonservice.com^ +||a40907.actonservice.com^ +||a40910.actonservice.com^ +||a40913.actonservice.com^ +||a40916.actonservice.com^ +||a40917.actonservice.com^ +||a41166.actonservice.com^ +||a41172.actonservice.com^ +||a41199.actonservice.com^ +||a41309.actonservice.com^ +||a41334.actonservice.com^ +||a41342.actonservice.com^ +||a41385.actonservice.com^ +||a41505.actonservice.com^ +||a41522.actonservice.com^ +||a41547.actonservice.com^ +||a41550.actonservice.com^ +||a41553.actonservice.com^ +||a41556.actonservice.com^ +||a41558.actonservice.com^ +||a41609.actonservice.com^ +||a41628.actonservice.com^ +||a41643.actonservice.com^ +||a41691.actonservice.com^ +||a41714.actonservice.com^ +||a41768.actonservice.com^ +||a41947.actonservice.com^ +||a41976.actonservice.com^ +||a42072.actonservice.com^ +||a42073.actonservice.com^ +||a42096.actonservice.com^ +||a42330.actonservice.com^ +||a42368.actonservice.com^ +||a42382.actonservice.com^ +||a42384.actonservice.com^ +||a42575.actonservice.com^ +||a42579.actonservice.com^ +||a42580.actonservice.com^ +||a42605.actonservice.com^ +||a42623.actonservice.com^ +||a42624.actonservice.com^ +||a42625.actonservice.com^ +||a42626.actonservice.com^ +||a42628.actonservice.com^ +||a42701.actonservice.com^ +||a42707.actonservice.com^ +||a42767.actonservice.com^ +||a42807.actonservice.com^ +||a42845.actonservice.com^ +||a42872.actonservice.com^ +||a42900.actonservice.com^ +||a42906.actonservice.com^ +||a42917.actonservice.com^ +||a42918.actonservice.com^ +||a42919.actonservice.com^ +||a42920.actonservice.com^ +||a42926.actonservice.com^ +||a42927.actonservice.com^ +||a43050.actonservice.com^ +||a43094.actonservice.com^ +||a43242.actonservice.com^ +||a43245.actonservice.com^ +||a43246.actonservice.com^ +||a43248.actonservice.com^ +||a43253.actonservice.com^ +||a43254.actonservice.com^ +||a43256.actonservice.com^ +||a43257.actonservice.com^ +||a43260.actonservice.com^ +||a43261.actonservice.com^ +||a43263.actonservice.com^ +||a43271.actonservice.com^ +||a43273.actonservice.com^ +||a43285.actonservice.com^ +||a43286.actonservice.com^ +||a43287.actonservice.com^ +||a43290.actonservice.com^ +||a43293.actonservice.com^ +||a43294.actonservice.com^ +||a43295.actonservice.com^ +||a43296.actonservice.com^ +||a43305.actonservice.com^ +||a43307.actonservice.com^ +||a43309.actonservice.com^ +||a43312.actonservice.com^ +||a43315.actonservice.com^ +||a43317.actonservice.com^ +||a43318.actonservice.com^ +||a43320.actonservice.com^ +||a43321.actonservice.com^ +||a43326.actonservice.com^ +||a43329.actonservice.com^ +||a43333.actonservice.com^ +||a43337.actonservice.com^ +||a43338.actonservice.com^ +||a43339.actonservice.com^ +||a43345.actonservice.com^ +||a43347.actonservice.com^ +||a43348.actonservice.com^ +||a43351.actonservice.com^ +||a43354.actonservice.com^ +||a43366.actonservice.com^ +||a43367.actonservice.com^ +||a43368.actonservice.com^ +||a43369.actonservice.com^ +||a43372.actonservice.com^ +||a43373.actonservice.com^ +||a43375.actonservice.com^ +||a43376.actonservice.com^ +||a43378.actonservice.com^ +||a43379.actonservice.com^ +||a43380.actonservice.com^ +||a43381.actonservice.com^ +||a43385.actonservice.com^ +||a43386.actonservice.com^ +||a43396.actonservice.com^ +||a43406.actonservice.com^ +||a43409.actonservice.com^ +||a43410.actonservice.com^ +||a43411.actonservice.com^ +||a43412.actonservice.com^ +||a43414.actonservice.com^ +||a43421.actonservice.com^ +||a43422.actonservice.com^ +||a43423.actonservice.com^ +||a43424.actonservice.com^ +||a43444.actonservice.com^ +||a43445.actonservice.com^ +||a43447.actonservice.com^ +||a43454.actonservice.com^ +||a43456.actonservice.com^ +||a43461.actonservice.com^ +||a43462.actonservice.com^ +||a43465.actonservice.com^ +||a43472.actonservice.com^ +||a43474.actonservice.com^ +||a43477.actonservice.com^ +||a43478.actonservice.com^ +||a43479.actonservice.com^ +||a43480.actonservice.com^ +||a43482.actonservice.com^ +||a43486.actonservice.com^ +||a43494.actonservice.com^ +||a43498.actonservice.com^ +||a43501.actonservice.com^ +||a43504.actonservice.com^ +||a43507.actonservice.com^ +||a43521.actonservice.com^ +||a43523.actonservice.com^ +||a43524.actonservice.com^ +||a43527.actonservice.com^ +||a43528.actonservice.com^ +||a43530.actonservice.com^ +||a43533.actonservice.com^ +||a43534.actonservice.com^ +||a43538.actonservice.com^ +||a43539.actonservice.com^ +||a43542.actonservice.com^ +||a43545.actonservice.com^ +||a43546.actonservice.com^ +||a43547.actonservice.com^ +||a43548.actonservice.com^ +||a43550.actonservice.com^ +||a43553.actonservice.com^ +||a43554.actonservice.com^ +||a43557.actonservice.com^ +||a43558.actonservice.com^ +||a43561.actonservice.com^ +||a43562.actonservice.com^ +||a43569.actonservice.com^ +||a43571.actonservice.com^ +||a43572.actonservice.com^ +||a43573.actonservice.com^ +||a43576.actonservice.com^ +||a43577.actonservice.com^ +||a43582.actonservice.com^ +||a43587.actonservice.com^ +||a43590.actonservice.com^ +||a43591.actonservice.com^ +||a43593.actonservice.com^ +||a43594.actonservice.com^ +||a43595.actonservice.com^ +||a43596.actonservice.com^ +||a43597.actonservice.com^ +||a43601.actonservice.com^ +||a43604.actonservice.com^ +||a43606.actonservice.com^ +||a43607.actonservice.com^ +||a43611.actonservice.com^ +||a43613.actonservice.com^ +||a43614.actonservice.com^ +||a43619.actonservice.com^ +||a43621.actonservice.com^ +||a43624.actonservice.com^ +||a43626.actonservice.com^ +||a43628.actonservice.com^ +||a43630.actonservice.com^ +||a43634.actonservice.com^ +||a43640.actonservice.com^ +||a43645.actonservice.com^ +||a43649.actonservice.com^ +||a43658.actonservice.com^ +||a43661.actonservice.com^ +||a43662.actonservice.com^ +||a43665.actonservice.com^ +||a43666.actonservice.com^ +||a43667.actonservice.com^ +||a43668.actonservice.com^ +||a43672.actonservice.com^ +||a43677.actonservice.com^ +||a43678.actonservice.com^ +||a43685.actonservice.com^ +||a43694.actonservice.com^ +||a43698.actonservice.com^ +||a43702.actonservice.com^ +||a43708.actonservice.com^ +||a43710.actonservice.com^ +||a43711.actonservice.com^ +||a43712.actonservice.com^ +||a43715.actonservice.com^ +||a43723.actonservice.com^ +||a43724.actonservice.com^ +||a43725.actonservice.com^ +||a43726.actonservice.com^ +||a43733.actonservice.com^ +||a43735.actonservice.com^ +||a43736.actonservice.com^ +||a43737.actonservice.com^ +||a43738.actonservice.com^ +||a43740.actonservice.com^ +||a43746.actonservice.com^ +||a43748.actonservice.com^ +||a43749.actonservice.com^ +||a43750.actonservice.com^ +||a43751.actonservice.com^ +||a43757.actonservice.com^ +||a43762.actonservice.com^ +||a43765.actonservice.com^ +||a43766.actonservice.com^ +||a43767.actonservice.com^ +||a43770.actonservice.com^ +||a43772.actonservice.com^ +||a43775.actonservice.com^ +||a43778.actonservice.com^ +||a43780.actonservice.com^ +||a43782.actonservice.com^ +||a43784.actonservice.com^ +||a43785.actonservice.com^ +||a43786.actonservice.com^ +||a43787.actonservice.com^ +||a43789.actonservice.com^ +||a43790.actonservice.com^ +||a43791.actonservice.com^ +||a43792.actonservice.com^ +||a43794.actonservice.com^ +||a43795.actonservice.com^ +||a43797.actonservice.com^ +||a43800.actonservice.com^ +||a43801.actonservice.com^ +||a43803.actonservice.com^ +||a43804.actonservice.com^ +||a43805.actonservice.com^ +||a43806.actonservice.com^ +||a43807.actonservice.com^ +||a43814.actonservice.com^ +||a43818.actonservice.com^ +||a43820.actonservice.com^ +||a43821.actonservice.com^ +||a43830.actonservice.com^ +||a43834.actonservice.com^ +||a43838.actonservice.com^ +||a43839.actonservice.com^ +||a43840.actonservice.com^ +||a43843.actonservice.com^ +||a43846.actonservice.com^ +||a43847.actonservice.com^ +||a43848.actonservice.com^ +||a43849.actonservice.com^ +||a43853.actonservice.com^ +||a43855.actonservice.com^ +||a43856.actonservice.com^ +||a43858.actonservice.com^ +||a43860.actonservice.com^ +||a43863.actonservice.com^ +||a43866.actonservice.com^ +||a43869.actonservice.com^ +||a43870.actonservice.com^ +||a43871.actonservice.com^ +||a43875.actonservice.com^ +||a43876.actonservice.com^ +||a43878.actonservice.com^ +||a43889.actonservice.com^ +||a43893.actonservice.com^ +||a43896.actonservice.com^ +||a43899.actonservice.com^ +||a43901.actonservice.com^ +||a43906.actonservice.com^ +||a43909.actonservice.com^ +||a43910.actonservice.com^ +||a43913.actonservice.com^ +||a43918.actonservice.com^ +||a43919.actonservice.com^ +||a43921.actonservice.com^ +||a43922.actonservice.com^ +||a43923.actonservice.com^ +||a43924.actonservice.com^ +||a43933.actonservice.com^ +||a43934.actonservice.com^ +||a43937.actonservice.com^ +||a43939.actonservice.com^ +||a43951.actonservice.com^ +||a43952.actonservice.com^ +||a43954.actonservice.com^ +||a43957.actonservice.com^ +||a43966.actonservice.com^ +||a43967.actonservice.com^ +||a43968.actonservice.com^ +||a43972.actonservice.com^ +||a43976.actonservice.com^ +||a43977.actonservice.com^ +||a43981.actonservice.com^ +||a43982.actonservice.com^ +||a43993.actonservice.com^ +||a43994.actonservice.com^ +||a43995.actonservice.com^ +||a43996.actonservice.com^ +||a43999.actonservice.com^ +||a44000.actonservice.com^ +||a44022.actonservice.com^ +||a44023.actonservice.com^ +||a44031.actonservice.com^ +||a44036.actonservice.com^ +||a44043.actonservice.com^ +||a44050.actonservice.com^ +||a44051.actonservice.com^ +||a44055.actonservice.com^ +||a44057.actonservice.com^ +||a44058.actonservice.com^ +||a44090.actonservice.com^ +||a44093.actonservice.com^ +||a44094.actonservice.com^ +||a44095.actonservice.com^ +||a44096.actonservice.com^ +||a44097.actonservice.com^ +||a44102.actonservice.com^ +||a44105.actonservice.com^ +||a44107.actonservice.com^ +||a44111.actonservice.com^ +||a44112.actonservice.com^ +||a44113.actonservice.com^ +||a44116.actonservice.com^ +||a44119.actonservice.com^ +||a44120.actonservice.com^ +||a44121.actonservice.com^ +||a44122.actonservice.com^ +||a44125.actonservice.com^ +||a44127.actonservice.com^ +||a44128.actonservice.com^ +||a44130.actonservice.com^ +||a44131.actonservice.com^ +||a44134.actonservice.com^ +||a44135.actonservice.com^ +||a44137.actonservice.com^ +||a44138.actonservice.com^ +||a44143.actonservice.com^ +||a44145.actonservice.com^ +||a44147.actonservice.com^ +||a44148.actonservice.com^ +||a44155.actonservice.com^ +||a44156.actonservice.com^ +||a44157.actonservice.com^ +||a44171.actonservice.com^ +||a44172.actonservice.com^ +||a44177.actonservice.com^ +||a44178.actonservice.com^ +||a44179.actonservice.com^ +||a44182.actonservice.com^ +||a44183.actonservice.com^ +||a44184.actonservice.com^ +||a44190.actonservice.com^ +||a44193.actonservice.com^ +||a44195.actonservice.com^ +||a44200.actonservice.com^ +||a44201.actonservice.com^ +||a44203.actonservice.com^ +||a44205.actonservice.com^ +||a44211.actonservice.com^ +||a44213.actonservice.com^ +||a44214.actonservice.com^ +||a44222.actonservice.com^ +||a44224.actonservice.com^ +||a44227.actonservice.com^ +||a44230.actonservice.com^ +||a44232.actonservice.com^ +||a44233.actonservice.com^ +||a44241.actonservice.com^ +||a44246.actonservice.com^ +||a44251.actonservice.com^ +||a44263.actonservice.com^ +||a44267.actonservice.com^ +||a44269.actonservice.com^ +||a44270.actonservice.com^ +||a44271.actonservice.com^ +||a44272.actonservice.com^ +||a44273.actonservice.com^ +||a44274.actonservice.com^ +||a44275.actonservice.com^ +||a44277.actonservice.com^ +||a44281.actonservice.com^ +||a44287.actonservice.com^ +||a44289.actonservice.com^ +||a44293.actonservice.com^ +||a44300.actonservice.com^ +||a44301.actonservice.com^ +||a44304.actonservice.com^ +||a44305.actonservice.com^ +||a44306.actonservice.com^ +||a44307.actonservice.com^ +||a44308.actonservice.com^ +||a44309.actonservice.com^ +||a44310.actonservice.com^ +||a44311.actonservice.com^ +||a44313.actonservice.com^ +||a44314.actonservice.com^ +||a44315.actonservice.com^ +||a44316.actonservice.com^ +||a44320.actonservice.com^ +||a44321.actonservice.com^ +||a44322.actonservice.com^ +||a44325.actonservice.com^ +||a44329.actonservice.com^ +||a44332.actonservice.com^ +||a44342.actonservice.com^ +||a44344.actonservice.com^ +||a44347.actonservice.com^ +||a44352.actonservice.com^ +||a44354.actonservice.com^ +||a44356.actonservice.com^ +||a44357.actonservice.com^ +||a44358.actonservice.com^ +||a44359.actonservice.com^ +||a44363.actonservice.com^ +||a44364.actonservice.com^ +||a44370.actonservice.com^ +||a44371.actonservice.com^ +||a44379.actonservice.com^ +||a44395.actonservice.com^ +||a44396.actonservice.com^ +||a44397.actonservice.com^ +||a44413.actonservice.com^ +||a44529.actonservice.com^ +||a44530.actonservice.com^ +||a44539.actonservice.com^ +||a44548.actonservice.com^ +||a44557.actonservice.com^ +||a44569.actonservice.com^ +||a44575.actonservice.com^ +||a44581.actonservice.com^ +||a44587.actonservice.com^ +||a44595.actonservice.com^ +||a44596.actonservice.com^ +||a44599.actonservice.com^ +||a44614.actonservice.com^ +||a44619.actonservice.com^ +||a44621.actonservice.com^ +||a44627.actonservice.com^ +||a44644.actonservice.com^ +||a44656.actonservice.com^ +||a44662.actonservice.com^ +||a44670.actonservice.com^ +||a44685.actonservice.com^ +||a44686.actonservice.com^ +||a44687.actonservice.com^ +||a44688.actonservice.com^ +||a44708.actonservice.com^ +||a44712.actonservice.com^ +||a44734.actonservice.com^ +||a44745.actonservice.com^ +||a44746.actonservice.com^ +||a44748.actonservice.com^ +||a44765.actonservice.com^ +||a44766.actonservice.com^ +||a44770.actonservice.com^ +||a44772.actonservice.com^ +||a44775.actonservice.com^ +||a44784.actonservice.com^ +||a44785.actonservice.com^ +||a44791.actonservice.com^ +||a44795.actonservice.com^ +||a44820.actonservice.com^ +||a44828.actonservice.com^ +||a44831.actonservice.com^ +||a44833.actonservice.com^ +||a44834.actonservice.com^ +||a44838.actonservice.com^ +||a44839.actonservice.com^ +||a44840.actonservice.com^ +||a44845.actonservice.com^ +||a44848.actonservice.com^ +||a44853.actonservice.com^ +||a44857.actonservice.com^ +||a44862.actonservice.com^ +||a44863.actonservice.com^ +||a44865.actonservice.com^ +||a44867.actonservice.com^ +||a44876.actonservice.com^ +||a45000.actonservice.com^ +||a45001.actonservice.com^ +||a45002.actonservice.com^ +||a45009.actonservice.com^ +||a45012.actonservice.com^ +||a45021.actonservice.com^ +||a45024.actonservice.com^ +||a45035.actonservice.com^ +||a45040.actonservice.com^ +||a45044.actonservice.com^ +||a45050.actonservice.com^ +||a45064.actonservice.com^ +||a45071.actonservice.com^ +||a45080.actonservice.com^ +||a45115.actonservice.com^ +||a45125.actonservice.com^ +||a45126.actonservice.com^ +||a45139.actonservice.com^ +||a45144.actonservice.com^ +||a45155.actonservice.com^ +||a45157.actonservice.com^ +||a45158.actonservice.com^ +||a45163.actonservice.com^ +||a45165.actonservice.com^ +||a45167.actonservice.com^ +||a45171.actonservice.com^ +||a45175.actonservice.com^ +||a45192.actonservice.com^ +||a45193.actonservice.com^ +||a45194.actonservice.com^ +||a45197.actonservice.com^ +||a45205.actonservice.com^ +||a45208.actonservice.com^ +||a45213.actonservice.com^ +||a45218.actonservice.com^ +||a45223.actonservice.com^ +||a45225.actonservice.com^ +||a45226.actonservice.com^ +||a45230.actonservice.com^ +||a45231.actonservice.com^ +||a45233.actonservice.com^ +||a45235.actonservice.com^ +||a45241.actonservice.com^ +||a45245.actonservice.com^ +||a45246.actonservice.com^ +||a45256.actonservice.com^ +||a45260.actonservice.com^ +||a45261.actonservice.com^ +||a45262.actonservice.com^ +||a45263.actonservice.com^ +||a45266.actonservice.com^ +||a45268.actonservice.com^ +||a45270.actonservice.com^ +||a45271.actonservice.com^ +||a45272.actonservice.com^ +||a45274.actonservice.com^ +||a45275.actonservice.com^ +||a45276.actonservice.com^ +||a45277.actonservice.com^ +||a45278.actonservice.com^ +||a45279.actonservice.com^ +||a45282.actonservice.com^ +||a45289.actonservice.com^ +||a45290.actonservice.com^ +||a45295.actonservice.com^ +||a45298.actonservice.com^ +||a45300.actonservice.com^ +||a45305.actonservice.com^ +||a45306.actonservice.com^ +||a45307.actonservice.com^ +||a45310.actonservice.com^ +||a45318.actonservice.com^ +||a45330.actonservice.com^ +||a45331.actonservice.com^ +||a45337.actonservice.com^ +||a45338.actonservice.com^ +||a45351.actonservice.com^ +||a45353.actonservice.com^ +||a45356.actonservice.com^ +||a45357.actonservice.com^ +||a45358.actonservice.com^ +||a45359.actonservice.com^ +||a45360.actonservice.com^ +||a45362.actonservice.com^ +||a45363.actonservice.com^ +||a45364.actonservice.com^ +||a45365.actonservice.com^ +||a45366.actonservice.com^ +||a45367.actonservice.com^ +||a45375.actonservice.com^ +||a45395.actonservice.com^ +||a45403.actonservice.com^ +||a45405.actonservice.com^ +||a45406.actonservice.com^ +||a45411.actonservice.com^ +||a45415.actonservice.com^ +||a45420.actonservice.com^ +||a45427.actonservice.com^ +||a45428.actonservice.com^ +||a45429.actonservice.com^ +||a45443.actonservice.com^ +||a45445.actonservice.com^ +||a45449.actonservice.com^ +||a45451.actonservice.com^ +||a45452.actonservice.com^ +||a45456.actonservice.com^ +||a45463.actonservice.com^ +||a45477.actonservice.com^ +||a45478.actonservice.com^ +||a45498.actonservice.com^ +||a45499.actonservice.com^ +||a45500.actonservice.com^ +||a45504.actonservice.com^ +||a45508.actonservice.com^ +||a45513.actonservice.com^ +||a45514.actonservice.com^ +||a45519.actonservice.com^ +||a45520.actonservice.com^ +||a45521.actonservice.com^ +||a45526.actonservice.com^ +||a45539.actonservice.com^ +||a45542.actonservice.com^ +||a45548.actonservice.com^ +||a45553.actonservice.com^ +||a45554.actonservice.com^ +||a45570.actonservice.com^ +||a45579.actonservice.com^ +||a45580.actonservice.com^ +||a45584.actonservice.com^ +||a45592.actonservice.com^ +||a45594.actonservice.com^ +||a45609.actonservice.com^ +||a45612.actonservice.com^ +||a45623.actonservice.com^ +||a45629.actonservice.com^ +||a45634.actonservice.com^ +||a45636.actonservice.com^ +||a45641.actonservice.com^ +||a45648.actonservice.com^ +||a45655.actonservice.com^ +||a45656.actonservice.com^ +||a45660.actonservice.com^ +||a45662.actonservice.com^ +||a45682.actonservice.com^ +||a45686.actonservice.com^ +||a45697.actonservice.com^ +||a45704.actonservice.com^ +||a45710.actonservice.com^ +||a45712.actonservice.com^ +||a45713.actonservice.com^ +||a45716.actonservice.com^ +||a45718.actonservice.com^ +||a45720.actonservice.com^ +||a45722.actonservice.com^ +||a45733.actonservice.com^ +||a45734.actonservice.com^ +||a45751.actonservice.com^ +||a45752.actonservice.com^ +||a45759.actonservice.com^ +||a45760.actonservice.com^ +||a45770.actonservice.com^ +||a45772.actonservice.com^ +||a45785.actonservice.com^ +||a45794.actonservice.com^ +||a45797.actonservice.com^ +||a45810.actonservice.com^ +||a45817.actonservice.com^ +||a45823.actonservice.com^ +||a45831.actonservice.com^ +||a45836.actonservice.com^ +||a45841.actonservice.com^ +||a45851.actonservice.com^ +||a45855.actonservice.com^ +||a45856.actonservice.com^ +||a45857.actonservice.com^ +||a45863.actonservice.com^ +||a45868.actonservice.com^ +||a45886.actonservice.com^ +||a45887.actonservice.com^ +||a45899.actonservice.com^ +||a45910.actonservice.com^ +||a45911.actonservice.com^ +||a45963.actonservice.com^ +||a45964.actonservice.com^ +||a45973.actonservice.com^ +||a46060.actonservice.com^ +||a46062.actonservice.com^ +||a46069.actonservice.com^ +||a46090.actonservice.com^ +||a46097.actonservice.com^ +||a46106.actonservice.com^ +||a46122.actonservice.com^ +||a46136.actonservice.com^ +||a46180.actonservice.com^ +||a46248.actonservice.com^ +||a46268.actonservice.com^ +||a46300.actonservice.com^ +||a46303.actonservice.com^ +||a46306.actonservice.com^ +||a8780.actonservice.com^ +||a9643.actonservice.com^ +||aad-marketing.ascendeventmedia.com^ +||aad.actonservice.com^ +||aagon.actonservice.com^ +||aahamarketing.hubinternational.com^ +||aajtech.actonservice.com^ +||aamcompany.actonservice.com^ +||abclegal.actonservice.com^ +||abracon.actonservice.com^ +||absinfo.eagle.org^ +||absoft.actonservice.com^ +||acadian-asset.actonservice.com^ +||acclaro.actonservice.com^ +||accumula.actonservice.com^ +||accuride.actonservice.com^ +||accutrain.actonservice.com^ +||accuzip.actonservice.com^ +||acemetrix.actonservice.com^ +||acendas.actonservice.com^ +||aclordi.actonservice.com^ +||act-on-marketing.advancedsolutionsplm.com^ +||act-on-marketing.asidesignsoftware.com^ +||act-on-marketing.lifesciences.solutions^ +||act-on-marketing.slot3d.com^ +||act-on-marketing.xpedientsoftware.com^ +||act-on.ioactive.com^ +||act-on.milestoneinternet.com^ +||act-on.snb.com^ +||act-on.up.edu.pe^ +||act.boxerproperty.com^ +||act.colorlines.com^ +||act.convergencetraining.com^ +||act.cwsglobal.org^ +||act.davistech.edu^ +||act.enli.net^ +||act.lanap.com^ +||act.online.engineering.nyu.edu^ +||act.pivotpointsecurity.com^ +||act.plumvoice.com^ +||act.raceforward.org^ +||act.soneticscorp.com^ +||act.wernerelectric.com^ +||actie.milieudefensie.nl^ +||action.advisorycloud.com^ +||action.logixfiber.com^ +||action.totalcompbuilder.com^ +||action.totalrewardssoftware.com^ +||action.unifiedoffice.com^ +||acton.ajmfg.com^ +||acton.altep.com^ +||acton.bluetreesystems.com^ +||acton.brightspeed.com^ +||acton.dotcom-monitor.com^ +||acton.goldencomm.com^ +||acton.iriworldwide.com^ +||acton.locatesmarter.com^ +||acton.maintainer.com^ +||acton.marketing.knowlarity.com^ +||acton.oosis.com^ +||acton.outleads.com^ +||acton.prolabs.com^ +||acton.sightlife.org^ +||acton.simpleviewinc.com^ +||acton.the-tma.org^ +||acton.tourismireland.com^ +||acton.trefis.com^ +||actondev.actonservice.com^ +||actonhrm.mercuryhealthcare.com^ +||adm.adminstrumentengineering.com.au^ +||administrator.pnclassaction.com^ +||admission.concord.edu^ +||admissions.easterncollege.ca^ +||admissions.trios.com^ +||admit.mountsaintvincent.edu^ +||advancedsolutions.actonservice.com^ +||advanstar.actonservice.com^ +||advantageauburn.actonservice.com^ +||advantageind.actonservice.com^ +||advisers.kingstonsmith.co.uk^ +||advisor.raa.com^ +||advisors.beaconfinserv.com^ +||advisorycloud-dev.actonservice.com^ +||advtek.actonservice.com^ +||ae.cobweb.com^ +||aeromark.actonservice.com^ +||aftermath.actonservice.com^ +||afterschoolallstars.actonservice.com^ +||agcs-knowledge.allianz.com^ +||agvinfo.kollmorgen.com^ +||aicipc.actonservice.com^ +||aip.actonservice.com^ +||air-weigh.actonservice.com^ +||aircuity.actonservice.com^ +||airefcoinc.actonservice.com^ +||alamocapital.actonservice.com^ +||alereinc.actonservice.com^ +||aleroninc.actonservice.com^ +||alhi.actonservice.com^ +||alicat.actonservice.com^ +||allegiant-partners.actonservice.com^ +||alliantdata.actonservice.com^ +||alliedfundingcorp.actonservice.com^ +||allinsurance.allinsure.ca^ +||allreach.actonservice.com^ +||allrisks.actonservice.com^ +||allstarfg.actonservice.com^ +||almalasers.actonservice.com^ +||alphasimplex.actonservice.com^ +||alticoadvisors.actonservice.com^ +||altn.actonservice.com^ +||alwayscare.starmountlife.com^ +||alwayscarebenefits.actonservice.com^ +||amalto.actonservice.com^ +||americanmarketinggroup.actonservice.com^ +||americanportfolios.actonservice.com^ +||americanroller.actonservice.com^ +||americanuniversityofantigua.actonservice.com^ +||americanwatergroup.actonservice.com^ +||amersc.actonservice.com^ +||amigraphics.actonservice.com^ +||amimon.actonservice.com^ +||amitracks.actonservice.com^ +||amsunsolar.actonservice.com^ +||analytics.rivaliq.com^ +||anesthesiaos.actonservice.com^ +||antonsystems.actonservice.com^ +||ao-marketing.dbiyes.com^ +||ao-marketing.essendant.com^ +||ao-mkt.tableausoftware.com^ +||ao.jsitel.com^ +||ao.pioncomm.net^ +||ao.tolydigital.net^ +||aom.smartbrief.com^ +||aomarketing.blytheco.com^ +||aon.insurancemail.ca^ +||aon.smartbrief.com^ +||aooptout.zoominformation.com^ +||aopcoms.aoptec.com^ +||apbspeakers.actonservice.com^ +||apcerpharma.actonservice.com^ +||aperio.leicabiosystems.com^ +||apisensor.actonservice.com^ +||apllogistics.actonservice.com^ +||apparound.actonservice.com^ +||apply.bluetrustloans.com^ +||apply.maxlend.com^ +||apptus.actonservice.com^ +||aptare.actonservice.com^ +||apwip-dev.actonservice.com^ +||apwip.actonservice.com^ +||aqr.actonservice.com^ +||aragenbio.actonservice.com^ +||aragonresearch.actonservice.com^ +||argyleforum.actonservice.com^ +||arisglobal.actonservice.com^ +||arrayasolutions.actonservice.com^ +||art2wave.actonservice.com^ +||artisan.actonservice.com^ +||arvig.actonservice.com^ +||asap-systems.actonservice.com^ +||asc.asc-net.com^ +||ascassociation.actonservice.com^ +||ascendintegratedmedia.actonservice.com^ +||ascentcrm.actonservice.com^ +||asentech-dev.actonservice.com^ +||ashasafety.actonservice.com^ +||ashcroft.actonservice.com^ +||ashergroup.actonservice.com^ +||asiamarketing.sedgwick.com^ +||asimarketing.antonsystems.com^ +||assets.channelplay.in^ +||association.locktonaffinity.net^ +||assure360.actonservice.com^ +||asteriaed.actonservice.com^ +||astromed.actonservice.com^ +||at.sharpmarketing.eu^ +||atbs.actonservice.com^ +||aticti.actonservice.com^ +||atlanticlabequipment.actonservice.com^ +||atlastravel.actonservice.com^ +||atlasworldusa.actonservice.com^ +||atsmobile.actonservice.com^ +||attivoconsulting.actonservice.com^ +||audiofly.actonservice.com^ +||aumarketing.sedgwick.com^ +||aurelianlending.actonservice.com^ +||authentic3d.actonservice.com^ +||automate.gixxy.com^ +||automotive.autodeskcommunications.com^ +||autozone.actonservice.com^ +||avai.actonservice.com^ +||avalere.actonservice.com^ +||avaloninnovation.actonservice.com^ +||avandsecurity.actonservice.com^ +||avantidestinations.actonservice.com^ +||avantifinance.actonservice.com^ +||avertium.actonservice.com^ +||avid.actonservice.com^ +||aviko.actonservice.com^ +||avnet.actonservice.com^ +||avolvesoftware.actonservice.com^ +||axion-biosystems.actonservice.com^ +||axisgroupbenefits.axiscapital.com^ +||axisinsurance.axiscapital.com^ +||axisre.axiscapital.com^ +||bakercommunications.actonservice.com^ +||ballantine.actonservice.com^ +||ballymoregroup.actonservice.com^ +||bambee.actonservice.com^ +||bayshoresystems.actonservice.com^ +||bcanl.bca-autoveiling.nl^ +||bcc-ltd.actonservice.com^ +||bcob.charlotte.edu^ +||bcob.uncc.edu^ +||bcs.actonservice.com^ +||bdo.actonservice.com^ +||bdoaustralia.bdo.com.au^ +||beanworks.actonservice.com^ +||beaumont.actonservice.com^ +||bersondeanstevens.actonservice.com^ +||bestbuy.actonservice.com^ +||bestinfo.bluetrustloans.com^ +||bgiamericas.actonservice.com^ +||bi.concordesolutions.com^ +||bigcustomernetwork.actonservice.com^ +||biminibliss.rwbimini.com^ +||bioagiliytix.actonservice.com^ +||bioanalyticalmarketing.eurofins-info.com^ +||biophysicsgroup.actonservice.com^ +||bison.actonservice.com^ +||biworldwide.actonservice.com^ +||biznews.oregon.gov^ +||bizz.cochraneco.com^ +||bke.actonservice.com^ +||bkifg.actonservice.com^ +||blackbirdventures.actonservice.com^ +||blackmesh.actonservice.com^ +||bladv.actonservice.com^ +||blockchain.actonservice.com^ +||blog.b2lead.com^ +||blog.trinityconsultants.com^ +||blue-rocket.actonservice.com^ +||bluebusiness.actonservice.com^ +||blueinfo.marugroup.net^ +||bluemarblepayroll.actonservice.com^ +||bluemountains.actonservice.com^ +||blueoceanpharma.actonservice.com^ +||bluvue.actonservice.com^ +||blytheco.actonservice.com^ +||bmail.getventive.com^ +||bmiimaging.actonservice.com^ +||bobcad.actonservice.com^ +||bobswatches.actonservice.com^ +||bolingbrookgolfclub.actonservice.com^ +||bowl.actonservice.com^ +||br.bio-rad.com^ +||brainsell.actonservice.com^ +||brands.cambrio.com^ +||brascomarketing.actonservice.com^ +||briefing.actonservice.com^ +||bringg.actonservice.com^ +||brukernano.actonservice.com^ +||bu.actonservice.com^ +||bubblewrapp.actonservice.com^ +||build.bildgta.ca^ +||bulkbookstore.actonservice.com^ +||burnswhite.actonservice.com^ +||business-decision.actonservice.com^ +||business.franchiseforsale.com^ +||business.franchiseopportunities.com^ +||business.matchd.nl^ +||business.royal-cars.com^ +||businessgrouphealth.actonservice.com^ +||butlercc.actonservice.com^ +||buzz.logility.com^ +||buzz.neilsonmarketing.com^ +||c-c-l.actonservice.com^ +||c4cm.actonservice.com^ +||c4contexture.actonservice.com^ +||ca.ssl.holdmybeerconsulting.com^ +||caderonline.bu.edu^ +||caf.actonservice.com^ +||calgary-content.cresa.com^ +||caliberco.actonservice.com^ +||caljetelite.actonservice.com^ +||calldesignna.actonservice.com^ +||callsource.actonservice.com^ +||calmradio.actonservice.com^ +||camisado.actonservice.com^ +||campaign.csrxp.org^ +||campaign.lexjet.com^ +||campaigns.ashfieldengage.com^ +||campaigns.hygiena.com^ +||campaigns.micromass.com^ +||campaigns.mindplusmatter.com^ +||campaigns.primaverabss.com^ +||campaigns.wordandbrown.com^ +||canadamarketing.travelsavers.com^ +||capplanllc.actonservice.com^ +||caradonna.actonservice.com^ +||cardinalretirement.actonservice.com^ +||cargas.actonservice.com^ +||cargurus.actonservice.com^ +||carlisleit.actonservice.com^ +||carolina.actonservice.com^ +||cc.pennstatehealth.org^ +||celigo.actonservice.com^ +||centermarkplacements.actonservice.com^ +||central.actonservice.com^ +||cerionnano.actonservice.com^ +||certify.nasm.org^ +||cesa6.actonservice.com^ +||cfpwood.actonservice.com^ +||ch.sharpmarketing.eu^ +||channel-impact.actonservice.com^ +||channelblender.actonservice.com^ +||channelsignal.actonservice.com^ +||charlotte-content.cresa.com^ +||chartec.actonservice.com^ +||chevalierusa.actonservice.com^ +||chiefexecutive.actonservice.com^ +||ci42.rgp.com^ +||cil.isotope.com^ +||cincinnati-content.cresa.com^ +||circadence.actonservice.com^ +||cisco-eagle.actonservice.com^ +||citizensclimate.actonservice.com^ +||clariant.actonservice.com^ +||claruscommerce.actonservice.com^ +||classroominc.actonservice.com^ +||claynelsonlifebalance.actonservice.com^ +||cleanservices.actonservice.com^ +||clearbrands.actonservice.com^ +||click.aabacosmallbusiness.com^ +||click.amazingfacts.org^ +||click.avalere.com^ +||click.compli.com^ +||click.execrank.com^ +||click.lmbcustomersupport.com^ +||click.quickenloansnow.com^ +||click.zoominformation.com^ +||clickatell.actonservice.com^ +||cloud.trapptechnology.com^ +||cloudhosting.actonservice.com^ +||cm.prodo.com^ +||cmme.actonservice.com^ +||cns-service.actonservice.com^ +||cnsecurity.actonservice.com^ +||cobweb.actonservice.com^ +||cofactordigital.actonservice.com^ +||coffeycomm.actonservice.com^ +||cogstate.actonservice.com^ +||cohesive.actonservice.com^ +||collab9.actonservice.com^ +||college.business.oregonstate.edu^ +||collegeauthority.actonservice.com^ +||colliers.actonservice.com^ +||commercial.davey.com^ +||commondreams.actonservice.com^ +||comms.adss.com^ +||communicate.apcerls.com^ +||communicate.choicelogistics.com^ +||communicate.lightningprotection.com^ +||communication.avantifinance.co.nz^ +||communication.fits.me^ +||communication.jkseva.com^ +||communication.johnstongroup.ca^ +||communication.teakmedia.com^ +||communication.treston.com^ +||communications.all-risks.com^ +||communications.ameritrustgroup.com^ +||communications.engineering.oregonstate.edu^ +||communications.enrouteglobalexchange.com^ +||communications.fernenergy.co.nz^ +||communications.globalwidemedia.com^ +||communications.lydallpm.com^ +||communications.marlboroughgroup.com^ +||communications.meadowbrook.com^ +||communications.parmenion-im.co.uk^ +||communications.peopleadmin.com^ +||communications.prodways.com^ +||communications.qualico.com^ +||communications.rillion.com^ +||communications.securityins.net^ +||communications.taylorcorp.com^ +||communications.usfleettracking.com^ +||communications.worldtravelinc.com^ +||communications.ypo.org^ +||communique.assetzproperty.com^ +||community.actonline.org^ +||community.axiscapital.com^ +||community.chpw.org^ +||compliance.govdocs.com^ +||complianceupdates.aem.org^ +||compugen.actonservice.com^ +||compulite.actonservice.com^ +||compuware.actonservice.com^ +||comviewcorp.actonservice.com^ +||conference.flsmidth.com^ +||confiaen.legalitas.com^ +||connect.azulseven.com^ +||connect.blackmesh.com^ +||connect.businessldn.co.uk^ +||connect.chiropractic.ac.nz^ +||connect.ciena.com^ +||connect.clearonblack.com^ +||connect.dcblox.com^ +||connect.dexterchaney.com^ +||connect.digi.com^ +||connect.evocalize.com^ +||connect.frontier.com^ +||connect.invibio.com^ +||connect.kristechwire.com^ +||connect.landy.com^ +||connect.lightriver.com^ +||connect.mdtelephone.com^ +||connect.meringcarson.com^ +||connect.mikrocentrum.nl^ +||connect.munsonhealthcare.org^ +||connect.opendoorerp.com^ +||connect.planusa.org^ +||connect.prowareness.nl^ +||connect.purebranding.com^ +||connect.rallypoint.com^ +||connect.riseengineering.com^ +||connect.rush.edu^ +||connect.shopaplusrentals.com^ +||connect.shopezrentals.com^ +||connect.shoprentone.com^ +||connect.sigbee.com^ +||connect.stvincentcharity.com^ +||connect.thinkinterval.com^ +||connect.tpgtelecom.com.au^ +||connect.tribepictures.com^ +||connect.uniti.com^ +||connect.uofuhealth.org^ +||connect.walkerfirst.com^ +||connect.zehno.com^ +||connected.integrationpoint.com^ +||connectedmedicaltechnologies.actonservice.com^ +||conseil.seicgland.ch^ +||conseils.dotbase.com^ +||contact.adaptavist.com^ +||contact.aquaterraenergy.com^ +||contact.assaydepot.com^ +||contact.marathon-sports-ec.com^ +||contactcenter.presenceco.com^ +||content.4teamwork.ch^ +||content.actionbenefits.com^ +||content.aew.com^ +||content.bondbrothers.com^ +||content.brain-storm-email.com^ +||content.cammackhealth.com^ +||content.cannon-dunphy.com^ +||content.ceriumnetworks.com^ +||content.commandc.com^ +||content.czarnowski.com^ +||content.demand-on.com^ +||content.distium.com^ +||content.e-office.com^ +||content.enlightiumacademy.com^ +||content.fabasoft.com^ +||content.familyfeatures.com^ +||content.harrisproductsgroup.com^ +||content.hourigan.group^ +||content.hurix.com^ +||content.investresolve.com^ +||content.linesight.com^ +||content.logile.com^ +||content.mhs.net^ +||content.mrgmarketing.net^ +||content.msufcu.org^ +||content.ncek12.com^ +||content.ndm.net^ +||content.northcdatacenters.info^ +||content.ntwine-conferencing.com^ +||content.palram.com^ +||content.qumulo.com^ +||content.recordpoint.com^ +||content.rightsourcemarketing.com^ +||content.sffirecu.org^ +||content.tacticalma.com^ +||content.timetogather.co.uk^ +||content.wacom.com^ +||content.xpublisher.com^ +||contracts.mhainc.com^ +||convergentdental.actonservice.com^ +||conveyor.lewcoinc.com^ +||corporate-marketing.hrs.com^ +||corporate.averydennison.com^ +||corporatecommunications.bvifsc.vg^ +||cpihrinfo.cpihr.com^ +||crawford-industries.actonservice.com^ +||creationagency.actonservice.com^ +||crm.casabaca.com^ +||crm.masonmac.com^ +||crm.toyotago.com.ec^ +||crmcommunications.progressive.com^ +||crmonline.actonservice.com^ +||crs.actonservice.com^ +||ctg.actonservice.com^ +||ctiimage.actonservice.com^ +||culliganwaterco.actonservice.com^ +||cure.trueface.org^ +||customer.newsflare.com^ +||customercare.aircycle.com^ +||customerrelations.theinstitutes.org^ +||customersucceed.nanophase.com^ +||cxm.ingeniux.com^ +||czsk.sharpmarketing.eu^ +||dacocorp.actonservice.com^ +||daegis.actonservice.com^ +||dallas-content.cresa.com^ +||danielsmoving.actonservice.com^ +||datafiletechnologies.actonservice.com^ +||dav.davrontech.com^ +||dbbest.actonservice.com^ +||dc.actonservice.com^ +||de.bca-news.com^ +||de.sharpmarketing.eu^ +||dealerrelations.cargurus.com^ +||dedola.actonservice.com^ +||deepcrawl.actonservice.com^ +||dev-iradimed.actonservice.com^ +||dev-spamgourmet.actonservice.com^ +||dev-tacticalma.actonservice.com^ +||devacton.simpleviewinc.com^ +||devotionalclicks.amazingfacts.org^ +||dextersolutions.actonservice.com^ +||dfw.bakerbrothersplumbing.com^ +||dialog.dqs.de^ +||dialog.losberger.com^ +||digital.medimpact.com^ +||digital.opsbase.com^ +||digital.setpointis.com^ +||digitalmarketing.gogsg.com^ +||digitalmarketing.smu.edu.sg^ +||dimensionfunding.actonservice.com^ +||dincloud.actonservice.com^ +||dincloudllc.actonservice.com^ +||diningalliance.actonservice.com^ +||discover.covenanthealthcare.com^ +||discover.dignityhealth.org^ +||discover.kloverproducts.com^ +||discover.maringeneral.org^ +||discover.megafrost.gr^ +||discover.supplydepotstore.com^ +||discoverorg.actonservice.com^ +||displaymaxmerchandising.actonservice.com^ +||distribution.provenpharma.com^ +||dkno.netpartnering.com^ +||dm.syntelli.com^ +||dmarkconsulting.actonservice.com^ +||dmc.romotur.com^ +||dmcc.actonservice.com^ +||dohmen.actonservice.com^ +||dotvox.actonservice.com^ +||downtownit.actonservice.com^ +||dppublishinginc.actonservice.com^ +||dqs.actonservice.com^ +||driven.actonservice.com^ +||dryvit.actonservice.com^ +||duprelogistics.actonservice.com^ +||durst-group.actonservice.com^ +||e.kc-education.com^ +||e.meridiancm.com^ +||e.replacementdevicelawsuit.com^ +||e.unchealthcare.org^ +||eagle.actonservice.com^ +||econnect.actonservice.com^ +||ed1.newtekone.com^ +||ed4online.actonservice.com^ +||edeals.rbp.com^ +||edeals.rhymebiz.com^ +||edge.secure-24.com^ +||edm.healthroundtable.org^ +||edm.neoslife.com.au^ +||edriving.actonservice.com^ +||edtrainingcenter.actonservice.com^ +||education.brettdanko.com^ +||education.eatoncambridge.com^ +||education.graduateprogram.org^ +||eeco-net.actonservice.com^ +||efgam.actonservice.com^ +||elastoproxy.actonservice.com^ +||elconfidencialdigital.actonservice.com^ +||electrifai.actonservice.com^ +||elgas.actonservice.com^ +||elink.altru.org^ +||elink.rushcopley.com^ +||elogic-learning.actonservice.com^ +||em-info2.thermofisher.com^ +||em.stauffersafety.com^ +||email-hg.holyredeemer.com^ +||email.apexauctions.com^ +||email.axisintegrated.ca^ +||email.bowl.com^ +||email.cobsbread.com^ +||email.eomega.org^ +||email.festiva.com^ +||email.mhr.co.uk^ +||email.participaction.com^ +||email.thewithotel.com^ +||email.voices.com^ +||email.vollrathco.com^ +||email.zumaoffice.com^ +||emailmarketing.vidanthealth.com^ +||emarketing.landisgyr.com^ +||emarketing.moveo.com^ +||emarketing.zulkiepartners.com^ +||emcalliance.vmware.com^ +||emea.kollmorgen.com^ +||emisgroupplc.actonservice.com^ +||emkt.stefanini.com^ +||emplicity.actonservice.com^ +||enablement.vmware.com^ +||enablis.actonservice.com^ +||enchantedrock.actonservice.com^ +||endeavorbusinessmedia.actonservice.com^ +||enews.learninga-z.com^ +||engage.alphastarcm.com^ +||engage.atriosystems.com^ +||engage.ca.victorinsurance.com^ +||engage.ce.victorinsurance.com^ +||engage.clinipace.com^ +||engage.dorngroup.com^ +||engage.dovetailinsurance.com^ +||engage.ipcginsurance.com^ +||engage.krm22.com^ +||engage.mhainc.com^ +||engage.navigatorgpo.com^ +||engage.nigp.org^ +||engage.permission.com.au^ +||engage.physicstoday.org^ +||engage.ria-insurancesolutions.com^ +||engage.td.org^ +||engage.tines.com^ +||engage.us.victorinsurance.com^ +||enrolldi.glic.com^ +||enterprisehive.actonservice.com^ +||enterpriseimaging.agfahealthcare.com^ +||eo.pearlinsurance.com^ +||epcvip.actonservice.com^ +||epicgolive.rainresources.com^ +||equippo.actonservice.com^ +||equity.e2g.com^ +||erepublic.actonservice.com^ +||es.lucanet.com^ +||es.sharpmarketing.eu^ +||eschsupply.actonservice.com^ +||eservices.lubetech.com^ +||esri.nl.actonservice.com^ +||estore.biscoind.com^ +||eu.sharpmarketing.eu^ +||eumarketing.sedgwick.com^ +||events.trapptechnology.com^ +||evergage1.actonservice.com^ +||eversource.actonservice.com^ +||evolent.actonservice.com^ +||evolutionmarketing.actonservice.com^ +||exdmarketing.smu.edu.sg^ +||execreps.actonsoftware.com^ +||experience.faiu.com^ +||experience.rochesterregional.org^ +||experts.actonservice.com^ +||experts.cutter.com^ +||explore.coursefinders.com^ +||explore.landcentral.com^ +||expo.nada.org^ +||extendyourreach.actonservice.com^ +||eyc-marketing.eyc.com^ +||fac.fanucamerica.com^ +||facetwealth.actonservice.com^ +||farahatco.actonservice.com^ +||fastenermkt.averydennison.com^ +||fbsg.fayebsg.com^ +||fdbs.actonservice.com^ +||fdiinc.actonservice.com^ +||fea-cfd.simutechgroup.com^ +||fedsched.actonservice.com^ +||festo.actonservice.com^ +||ffr.actonservice.com^ +||fi.on-channel.com^ +||fiber.zayo.com^ +||fiduciaryfirst.actonservice.com^ +||filbrandtco.actonservice.com^ +||filemobile.actonservice.com^ +||files.urlinsgroup.com^ +||financialeducation-info.uchicago.edu^ +||financialservices.nada.org^ +||financialservices.teranet.ca^ +||findyourinfluence.actonservice.com^ +||finley.fecinc.com^ +||finley.finleyusa.com^ +||firstpac.actonservice.com^ +||flexibleplan.actonservice.com^ +||flexpod.ynsecureserver.net^ +||flipt.actonservice.com^ +||floorforce.actonservice.com^ +||flotech.actonservice.com^ +||fluentco.actonservice.com^ +||fly.caljetelite.com^ +||fmbankva.actonservice.com^ +||fna.fnainsurance.com^ +||foodpackaging.kpfilms.com^ +||forbidden.actonservice.com^ +||forbin.actonservice.com^ +||forms.accc-cancer.org^ +||forms.cooperaerobics.com^ +||forms.testoil.com^ +||forpci3.siege-corp.com^ +||foxt.actonservice.com^ +||foxtinfo.foxt.com^ +||fr.lucanet.com^ +||fr.sharpmarketing.eu^ +||franchise.goodearthcoffeehouse.com^ +||franchise.locktonaffinity.net^ +||franchise.tutoringacademy.ca^ +||franchiserecruitment.laserclinics.ca^ +||franchising.indooractivebrands.com^ +||franchising.kas.co.nz^ +||franchising.mcdonalds.ca^ +||franchising.pizzapizza.ca^ +||franklin-edu.actonservice.com^ +||franklin.edu.actonservice.com^ +||frankwatching.actonservice.com^ +||franoppnetwork.actonservice.com^ +||frenchgerleman.actonservice.com^ +||fridaymarketing.actonservice.com^ +||frontiermetal.actonservice.com^ +||fsresidential.actonservice.com^ +||ftfnews.actonservice.com^ +||fujifilmdb.fujifilmdiosynth.com^ +||fundraising.centuryresources.com^ +||funnelbox.actonservice.com^ +||futurebrand.actonservice.com^ +||futursalumnes.uic.es^ +||gameplanfinancial.actonservice.com^ +||gas-sensing.spec-sensors.com^ +||gatan.actonservice.com^ +||gblock.greenhousedata.com^ +||generaleducation.graduateprogram.org^ +||geonetric.actonservice.com^ +||get.airecontact.com^ +||get.evidence.care^ +||get.incisive.com^ +||get.informedmortgage.com^ +||get.nuapay.com^ +||getstarted.national.edu^ +||gettoknow.skookum.com^ +||giftplanning.westmont.edu^ +||gk.gkservices.com^ +||global-guardians.actonservice.com^ +||global.raboag.com^ +||globalcommunications.sc.com^ +||globallearningsystems.actonservice.com^ +||globalmed.actonservice.com^ +||glue.evansadhesive.com^ +||gmnameplate.actonservice.com^ +||go.accumaxglobal.com.au^ +||go.acelisconnectedhealth.com^ +||go.adaquest.com^ +||go.alliancefunds.com^ +||go.americangriddle.com^ +||go.anthonyliftgates.com^ +||go.bayshoresystems.com^ +||go.bciburke.com^ +||go.bitnami.com^ +||go.biz.uiowa.edu^ +||go.brandactive.com^ +||go.brandactiveinsights.com^ +||go.brunswickgroup.com^ +||go.c4weld.com^ +||go.carlisleft.com^ +||go.clsi.org^ +||go.convenenow.com^ +||go.cresa.plantemoran.com^ +||go.delve.com^ +||go.diagraph.com^ +||go.diagraphmsp.com^ +||go.dukane.com^ +||go.durst-group.com^ +||go.eacpds.com^ +||go.eapps.com^ +||go.engiestorage.com^ +||go.evolutionmarketing.com.au^ +||go.expresslanedefensivedriving.com^ +||go.fabplaygrounds.com^ +||go.foremostmedia.com^ +||go.gemapowdercoating.net^ +||go.getreadyforthefuture.com^ +||go.godunnage.com^ +||go.gpcom.com^ +||go.hatcocorp.com^ +||go.infopulse.com^ +||go.isbamutual.com^ +||go.janesvilleinnovation.com^ +||go.lanair.com^ +||go.lanmark360.com^ +||go.leecompany.com^ +||go.lendspace.com^ +||go.linksource.com^ +||go.loveshaw.com^ +||go.madisoncollege.edu^ +||go.marfeel.com^ +||go.metalgoodsmfg.com^ +||go.mitchell1.com^ +||go.mktgcampaigns.com^ +||go.multi-conveyor.com^ +||go.mvtec.com^ +||go.mysalonsuite.com^ +||go.ngtvalves.com^ +||go.northsidemedia.com^ +||go.nvp.com^ +||go.ovsoftware.nl^ +||go.peppermarketing.com.au^ +||go.pgx.com^ +||go.pheasant.com^ +||go.phhlending.com^ +||go.polarking.com^ +||go.polarkingmobile.com^ +||go.polarleasing.com^ +||go.quartz-events.com^ +||go.quartzinvitations.com^ +||go.rex-bac-t.com^ +||go.riosalado.edu^ +||go.rtafleet.com^ +||go.salessurrogate.com^ +||go.segra.com^ +||go.shareknowledge.com^ +||go.simco-ion.com^ +||go.simplomarketing.com^ +||go.solaruniverse.com^ +||go.spartansolutions.com^ +||go.spiroidgearing.com^ +||go.tactile.co^ +||go.tactile.com^ +||go.tdyne.com^ +||go.ticketbiz.se^ +||go.tigertool.com^ +||go.tm4.com^ +||go.tmacteex.org^ +||go.toonboom.com^ +||go.transversal.com^ +||go.triumphlearning.com^ +||go.unifiedav.com^ +||go.unifysquare.com^ +||go.unitusccu.com^ +||go.uscad.com^ +||go.ustruckbody.com^ +||go.wireco.com^ +||go.wm.plantemoran.com^ +||go.woodsidecap.com^ +||go.wtcmachinery.com^ +||go.zic.co.nz^ +||go2.altaro.com^ +||goaccredited.actonservice.com^ +||gobeyond.superiorgroup.com^ +||gogofunding.actonservice.com^ +||gogovapps.actonservice.com^ +||goldencomm.actonservice.com^ +||goldenhelix.actonservice.com^ +||goldenpaints.actonservice.com^ +||gosenergy.actonservice.com^ +||goto.newmarklearning.com^ +||govirtualoffice.actonservice.com^ +||gowestgroup.actonservice.com^ +||gowhiteowl.actonservice.com^ +||grado.ufv.es^ +||grande.actonservice.com^ +||grassrootsunwired.actonservice.com^ +||greenbeacon.actonservice.com^ +||greencharge.actonservice.com^ +||greif.actonservice.com^ +||groupevents.sixflags.com^ +||grow.business.xerox.com^ +||growthmodemarketing.actonservice.com^ +||guardiancu.actonservice.com^ +||guidepointglobal.actonservice.com^ +||guideposts.actonservice.com^ +||halo.actonservice.com^ +||hancockhealth.hancockregional.org^ +||hardinet.actonservice.com^ +||harlan.actonservice.com^ +||hcu.actonservice.com^ +||health.brgeneral.org^ +||health.hillcrest.com^ +||healthcasts.actonservice.com^ +||healthgrades.actonservice.com^ +||heartflow.actonservice.com^ +||helens.actonservice.com^ +||hello.controlmap.io^ +||hello.emergeinteractive.com^ +||hello.highlandsolutions.com^ +||hellogain.actonservice.com^ +||hesconet.actonservice.com^ +||hhglobal.actonservice.com^ +||hi.bigduck.com^ +||hickeysmith.actonservice.com^ +||hines.actonservice.com^ +||hitachi-hightech-as.actonservice.com^ +||hiway.actonservice.com^ +||hodges.actonservice.com^ +||hodgesmace.actonservice.com^ +||homecareresources.rosemarksystem.com^ +||homehardware.actonservice.com^ +||horacemann.actonservice.com^ +||horizononline.actonservice.com^ +||hotel-marketing.hrs.com^ +||houston-content.cresa.com^ +||hpninfo.hoopis.com^ +||hq.handiquilter.com^ +||hra.nyp.org^ +||hrm.healthgrades.com^ +||hronboard.actonservice.com^ +||hrs.actonservice.com^ +||hu.sharpmarketing.eu^ +||hub.hubfinancial.com^ +||hub.hubinternational.com^ +||hunterindustries.actonservice.com^ +||huseby.actonservice.com^ +||hvac.goodcoinc.com^ +||hygiena.actonservice.com^ +||hyperdisk.actonservice.com^ +||iatspayments.actonservice.com^ +||ibamolecular.actonservice.com^ +||icahealth.actonservice.com^ +||icharts.actonservice.com^ +||icslearn.actonsoftware.com^ +||ideadevice.actonservice.com^ +||idrivelogistics.actonservice.com^ +||ids.actonservice.com^ +||ignite.liftigniter.com^ +||igpr.actonservice.com^ +||ihc.cellmarque.com^ +||immunocorp.actonservice.com^ +||impact-dm.actonservice.com^ +||incisive.actonservice.com^ +||independence.americanportfolios.com^ +||inetprocess.actonservice.com^ +||info-fsi.stanford.edu^ +||info-pacific.marsh.com^ +||info-trek.actonservice.com^ +||info.abadiscount.org^ +||info.abcnorcal.org^ +||info.abcsd.org^ +||info.acacialearning.com^ +||info.accupurls.com^ +||info.accutrain.com^ +||info.acoginsurance.com^ +||info.admtech.com.au^ +||info.advanced-energy.com^ +||info.advantageman.com^ +||info.aestiva.com^ +||info.afidence.com^ +||info.aia-co.aleragroup.com^ +||info.aiabbs.aleragroup.com^ +||info.aiabrg.aleragroup.com^ +||info.allcatcoverage.com^ +||info.alticoadvisors.com^ +||info.americanroller.com^ +||info.anglianwaterbusiness.co.uk^ +||info.apbspeakers.com^ +||info.apisensor.com^ +||info.apparound.com^ +||info.applied.com^ +||info.appliedtech.pro^ +||info.archerdx.com^ +||info.ardentsolutionsllc.aleragroup.com^ +||info.ascassociation.org^ +||info.ashergroup.com^ +||info.aspcapro.org^ +||info.assure360.com^ +||info.astronovainc.com^ +||info.atlaslift.com^ +||info.atlastravel.com^ +||info.augustahealth.org^ +||info.authentic4d.com^ +||info.autozonepro.com^ +||info.avantiplc.com^ +||info.avmalife.org^ +||info.avondixon.aleragroup.com^ +||info.awos.com^ +||info.azuga.com^ +||info.b2lead-marketing.com^ +||info.backbonemedia.com^ +||info.base2s.com^ +||info.battelle.org^ +||info.bauerbuilt.com^ +||info.bcn.nl^ +||info.beaconmedicare.aleragroup.com^ +||info.beaumont.org^ +||info.bellingrathwealth.com^ +||info.belltechlogix.com^ +||info.bematechus.com^ +||info.benico.aleragroup.com^ +||info.bgi.com^ +||info.biafs.aleragroup.com^ +||info.bintheredumpthatusa.com^ +||info.biocision.com^ +||info.biologos.org^ +||info.bkifg.com^ +||info.blazecu.com^ +||info.blueskytherapy.net^ +||info.brand.live^ +||info.briefing.com^ +||info.brilliantfs.com^ +||info.bris.bdo.com.au^ +||info.burnswhite.com^ +||info.bvcm.nl^ +||info.bvo.nl^ +||info.cafonline.org^ +||info.calnexsol.com^ +||info.calypto.com^ +||info.camchealth.org^ +||info.canterburyconsulting.com^ +||info.capitalonesettlement.com^ +||info.capsresearch.org^ +||info.cascadeo.com^ +||info.castlemetals.com^ +||info.ccbjournal.com^ +||info.centrak.com^ +||info.centurybizsolutions.com^ +||info.cfevr.org^ +||info.cgjordaninsurance.com^ +||info.charityvillage.com^ +||info.chat-desk.com^ +||info.cignex.com^ +||info.citymarketingamersfoort.nl^ +||info.claimscope.com^ +||info.clariant.com^ +||info.clarus-rd.com^ +||info.cleanharbors.com^ +||info.cleaningproducts.com^ +||info.clearfunction.com^ +||info.cloudsteer.com^ +||info.cmcagile.com^ +||info.cmworks.com^ +||info.columninfosec.com^ +||info.commonwealthcommercial.com^ +||info.compusource.com^ +||info.comsoft-direct.nl^ +||info.conceptuitgeefgroep.nl^ +||info.conres.com^ +||info.constellationbehavioralhealth.com^ +||info.cpenow.com^ +||info.cpihr.aleragroup.com^ +||info.cranes101.com^ +||info.creadis.com^ +||info.createeveryopportunity.org^ +||info.cresinsurance.com^ +||info.crisp.aleragroup.com^ +||info.crossmfg.com^ +||info.ctiimage.com^ +||info.culturespanmarketing.com^ +||info.cvosusa.com^ +||info.dailybuzzbarrel.com^ +||info.dairymaster.com^ +||info.data-basics.com^ +||info.datasci.com^ +||info.datiphy.com^ +||info.davidrio.com^ +||info.dbbest.com^ +||info.demandmetric.com^ +||info.dgq.de^ +||info.dickerson-group.aleragroup.com^ +||info.digitalsys.com^ +||info.dimensionfunding.com^ +||info.dlancegolf.com^ +||info.doigcorp.com^ +||info.drawingboard.com^ +||info.duprelogistics.com^ +||info.dynamictechservices.com^ +||info.e-tabs.com^ +||info.eagleinvsys.com^ +||info.easealert.com^ +||info.echelonprint.com^ +||info.eco.ca^ +||info.edriving.com^ +||info.edtrainingcenter.com^ +||info.eecoonline.com^ +||info.electrifai.net^ +||info.em-ametek.com^ +||info.emergentsx.com^ +||info.emersonecologics.com^ +||info.emishealth.com^ +||info.enduraproducts.com^ +||info.energizect.com^ +||info.epworthvilla.org^ +||info.escocorp.com^ +||info.esriaustralia.com.au^ +||info.esriindonesia.co.id^ +||info.esrimalaysia.com.my^ +||info.esrisingapore.com.sg^ +||info.etgroup.net^ +||info.eu.tmi.yokogawa.com^ +||info.exxcel.com^ +||info.fairwaywholesalelending.com^ +||info.familyfeatures.com^ +||info.fastfundlending.com^ +||info.fastroofquotes.com^ +||info.fazzi.com^ +||info.filesanywhere.com^ +||info.financefactors.com^ +||info.flattstationers.com^ +||info.fleetlanding.com^ +||info.flexoimpressions.com^ +||info.flyingwithjets.com^ +||info.flytevu.com^ +||info.fminet.com^ +||info.focuspos.com^ +||info.footstepsgroup.com^ +||info.formiik.com^ +||info.forumbenefits.aleragroup.com^ +||info.fosterslaw.ca^ +||info.foundationsoft.com^ +||info.fourkitchens.com^ +||info.fptransitions.com^ +||info.franklin.edu^ +||info.freedom-iot.com^ +||info.freedomcte.com^ +||info.frenchgerleman.com^ +||info.furykeywest.com^ +||info.gantryinc.com^ +||info.gatan.com^ +||info.gcaaltium.com^ +||info.gcgfinancial.aleragroup.com^ +||info.genesishealth.com^ +||info.geonetric.com^ +||info.gkg.net^ +||info.glenviewterrace.com^ +||info.globalventuring.com^ +||info.gluenetworks.com^ +||info.gluware.com^ +||info.goagilix.com^ +||info.goegyptian.com^ +||info.goldmine.com^ +||info.gravie.com^ +||info.graystone-eye.com^ +||info.greenbusinessnetwork.org^ +||info.greenosupply.com^ +||info.greentarget.com^ +||info.greif.com^ +||info.groupbenefits.aleragroup.com^ +||info.groupservices.aleragroup.com^ +||info.guardiancu.org^ +||info.gucu.org^ +||info.guideposts.org^ +||info.halo.com^ +||info.halogistics.com^ +||info.harmonyhit.com^ +||info.harvardapparatus.com^ +||info.hds-rx.com^ +||info.healthcareittoday.com^ +||info.healthcarescene.com^ +||info.heartflow.com^ +||info.heirtight.co^ +||info.helens.se^ +||info.hesconet.com^ +||info.hiway.org^ +||info.hmk-ins.aleragroup.com^ +||info.holisticprimarycare.net^ +||info.holmenpaper.com^ +||info.hoopla.net^ +||info.horanassoc.com^ +||info.huseby.com^ +||info.hygfinancialservicesinc.com^ +||info.iatspayments.com^ +||info.ibamolecular.com^ +||info.ibexherd.com^ +||info.ic3dprinters.com^ +||info.icahn.org^ +||info.icslearn.co.uk^ +||info.ielts.com.au^ +||info.iihnordic.dk^ +||info.ijungo.com^ +||info.imagethink.net^ +||info.imagimob.com^ +||info.inigral.com^ +||info.insurancehotline.com^ +||info.interworks.cloud^ +||info.invata.com^ +||info.invo-progressus.com^ +||info.ioactive.com^ +||info.ironcad.com^ +||info.itw-air.com^ +||info.itwcce.com^ +||info.iwerk.com^ +||info.jabil.com^ +||info.jacksoncoker.com^ +||info.jacounter.aleragroup.com^ +||info.janiczek.com^ +||info.jccc.edu^ +||info.jensenhughes.com^ +||info.jfahern.com^ +||info.johonnottechnologies.com^ +||info.jonas-construction.com^ +||info.jordansc.com^ +||info.josephmday.com^ +||info.jwpepper.com^ +||info.kahnlitwin.com^ +||info.kanetix.ca^ +||info.kedronuk.com^ +||info.key2.ca^ +||info.key4cleaningsupplies.com^ +||info.klasresearch.com^ +||info.kollmorgen.cn^ +||info.kollmorgen.com^ +||info.kratosdefense.com^ +||info.kuttatech.com^ +||info.labelworks.com^ +||info.laconservancy.org^ +||info.lakewoodwestend.org^ +||info.landstar.com^ +||info.lansingbp.com^ +||info.laseradvanced.com^ +||info.ledcrew.com^ +||info.liftfund.com^ +||info.lincolnloop.com^ +||info.linkmedia360.com^ +||info.livingwage.org.uk^ +||info.locbox.com^ +||info.lonebeaconmedia.com^ +||info.lowestrates.ca^ +||info.lsualumni.org^ +||info.macro4.com^ +||info.mactac.com^ +||info.madronafinancial.com^ +||info.magnumsystems.com^ +||info.magnuspen.com^ +||info.managementsuccess.com^ +||info.marketing.spxflow.com^ +||info.marshmsp.com^ +||info.marshpcs.com^ +||info.marublue.com^ +||info.maruedrcx.com^ +||info.marugroup.net^ +||info.marumatchbox.com^ +||info.mccloudservices.com^ +||info.med-iq.com^ +||info.membercoverage.com^ +||info.memberzone.com^ +||info.mergertech.com^ +||info.meriwest.com^ +||info.meyerandassoc.com^ +||info.mhzdesign.com^ +||info.michaelfoods.com^ +||info.micro-matics.com^ +||info.midwestdatacenterexperts.com^ +||info.milestoneinternet.com^ +||info.mindbreeze.com^ +||info.mmmlaw.com^ +||info.mobiusleadership.com^ +||info.mobmed.com^ +||info.moneycontrol.network18online.com^ +||info.monsooninc.com^ +||info.morganfranklin.com^ +||info.motion10.nl^ +||info.msconsultants.com^ +||info.mshs.com^ +||info.multichannelsystems.com^ +||info.multitech.com^ +||info.museumofthebible.org^ +||info.mvp.nl^ +||info.mwhccareers.com^ +||info.myservicepak.com^ +||info.naag.org^ +||info.nahealth.com^ +||info.nai-consulting.com^ +||info.narcdc.org^ +||info.naswinsure.com^ +||info.nationalfoodgroup.com^ +||info.natlenvtrainers.com^ +||info.navitassys.com^ +||info.navitor.com^ +||info.ncoi.nl^ +||info.neosllc.com^ +||info.nepsisadvisors.com^ +||info.neptune-software.com^ +||info.nescornow.com^ +||info.netec.com^ +||info.nets-inc.com^ +||info.network9.com^ +||info.ngfcu.us^ +||info.nibesvv.nl^ +||info.nicholsonclinic.com^ +||info.nilex.com^ +||info.norman-spencer.com^ +||info.normecfoodcare.com^ +||info.northcdatacenters.com^ +||info.northeast.aleragroup.com^ +||info.northshore.org^ +||info.novahealthcare.com^ +||info.novahomeloans.com^ +||info.nvtc.org^ +||info.ochsner.org^ +||info.ocr-inc.com^ +||info.oh-ins.com^ +||info.omep.org^ +||info.onlinetech.com^ +||info.ortecfinance.com^ +||info.osiriseducational.co.uk^ +||info.osufoundation.org^ +||info.padistance.org^ +||info.parallel6.com^ +||info.parivedasolutions.com^ +||info.patientwise.com^ +||info.patrickandco.com^ +||info.paydashboardinfo.com^ +||info.payroll4construction.com^ +||info.pentra.aleragroup.com^ +||info.pentra.com^ +||info.perceptics.com^ +||info.perfectpatients.com^ +||info.personable.com^ +||info.pestfree.direct^ +||info.pharmaseek.com^ +||info.philadelphia.aleragroup.com^ +||info.phionline.com^ +||info.phsmobile.com^ +||info.pillartopost.com^ +||info.pittsburgh.aleragroup.com^ +||info.pmg360research.com^ +||info.pmhsi.com^ +||info.polypak.com^ +||info.positioninteractive.com^ +||info.precisebusiness.com.au^ +||info.precoa.com^ +||info.prep101.com^ +||info.prodagio.com^ +||info.progressinvestment.com^ +||info.prontopilates.com^ +||info.prosperafinancial.com^ +||info.provencut.com^ +||info.r2cgroup.com^ +||info.racksquared.com^ +||info.rates.ca^ +||info.raytecled.com^ +||info.rbatriad.com^ +||info.re-sourcepartners.com^ +||info.reachtech.com^ +||info.readingpartners.org^ +||info.recoverypoint.com^ +||info.redlinesolutions.com^ +||info.relphbenefit.aleragroup.com^ +||info.relphbenefitadvisors.aleragroup.com^ +||info.reltio.com^ +||info.rescignos.com^ +||info.rev1ventures.com^ +||info.rhahvac.com^ +||info.rodenhiser.com^ +||info.romerlabs.com^ +||info.rumsey.com^ +||info.safecorhealth.com^ +||info.safeguardrisksolutions.com^ +||info.safelogic.com^ +||info.safety-kleen.com^ +||info.sagewater.com^ +||info.sante-group.com^ +||info.savesfbay.org^ +||info.sbsgroup.com.au^ +||info.scheidegger.nl^ +||info.schmidt-na.com^ +||info.schoolspecialtynews.com^ +||info.scoopinsurance.ca^ +||info.scottmadden.com^ +||info.scriptel.com^ +||info.secotools.com^ +||info.send-server.com^ +||info.senior-systems.com^ +||info.serverlift.com^ +||info.services.vivacom.bg^ +||info.sherriffhealthcaresearch.com^ +||info.shilohtech.com^ +||info.shirazi.aleragroup.com^ +||info.siege-corp.com^ +||info.siglentna.com^ +||info.simutechmultimedia.com^ +||info.sispartnerplatform.com^ +||info.skystem.com^ +||info.smartbrief.com^ +||info.smartstrategyapps.com^ +||info.smartstrategyonline.com^ +||info.smilemarketing.com^ +||info.solidscape.com^ +||info.southstarcapital.com^ +||info.spark-point.com^ +||info.spencerfane.com^ +||info.sseinc.com^ +||info.sswhitedental.com^ +||info.stdom.com^ +||info.stratus.hr^ +||info.suite1000.com^ +||info.summitministries.org^ +||info.suncloudhealth.com^ +||info.supercare.health^ +||info.superchoiceservices.com.au^ +||info.suzy.com^ +||info.sydist.com^ +||info.symbio.com^ +||info.synteract.com^ +||info.tcasonline.com^ +||info.technologia.com^ +||info.techoregon.org^ +||info.techwave.net^ +||info.teletrac.net^ +||info.terracesatcloverwood.org^ +||info.terradatum.com^ +||info.tetravx.com^ +||info.texastaxgroup.com^ +||info.theaba.org^ +||info.thecentennial.aleragroup.com^ +||info.themichaelmannteam.com^ +||info.themsrgroup.com^ +||info.themyersbriggs.com^ +||info.thepgaofamerica.com^ +||info.theprogressiveaccountant.com^ +||info.thesmsgroup.com^ +||info.thestoryoftexas.com^ +||info.thomsonlinear.com^ +||info.tidbank.no^ +||info.tiwoiltools.com^ +||info.tmlt.org^ +||info.totango.com^ +||info.touchtown.us^ +||info.tpctrainco.com^ +||info.tpctraining.com^ +||info.tradeinterchange.com^ +||info.trapptechnology.com^ +||info.treeoflifecenterus.com^ +||info.trendler.com^ +||info.trinityconsultants.com^ +||info.truemfg.com^ +||info.truitycu.org^ +||info.tscpainsure.org^ +||info.txeee.engr.utexas.edu^ +||info.tyfone.com^ +||info.uchealth.com^ +||info.uila.com^ +||info.unicosystem.com^ +||info.unicous.com^ +||info.upcurvecloud.com^ +||info.valencepm.com^ +||info.vaporstream.com^ +||info.vcsolutions.com^ +||info.venturesolutions.com^ +||info.veoci.com^ +||info.verifund.tech^ +||info.vesselsvalue.com^ +||info.vestapublicsafety.com^ +||info.vibro-acoustics.com^ +||info.vidanthealth.com^ +||info.vierhetseizoen.nl^ +||info.virtela.net^ +||info.virtusbenefits.aleragroup.com^ +||info.visitgranbury.com^ +||info.visitorlando.com^ +||info.vistasiteselection.com^ +||info.visuresolutions.com^ +||info.vizquest.com^ +||info.vorne.com^ +||info.voxbone.com^ +||info.w-systems.com^ +||info.wafergen.com^ +||info.walkingclassroom.org^ +||info.washingtoninstitute.org^ +||info.watertechonline.com^ +||info.wellbe.me^ +||info.weloveournewwindows.com^ +||info.wespath.com^ +||info.westerville.org^ +||info.woodward.com^ +||info.wsplanadvisor.com^ +||info.xactflex.com^ +||info.yankeehome.com^ +||info.zelmanassociates.com^ +||info.zoominfo-notice.com^ +||info.zoominfo-privacy.com^ +||info.zoominfo.io^ +||info.zoominfotechnologies.com^ +||info.zoomintel.com^ +||info.zuidema.nl^ +||info01.on24.com^ +||infoco.readingpartners.org^ +||infodc.readingpartners.org^ +||infola.readingpartners.org^ +||infoland.actonservice.com^ +||infontx.readingpartners.org^ +||infonyc.readingpartners.org^ +||inform.milestonegroup.com.au^ +||inform.milestonegroup.com^ +||information.cleanservices.co.uk^ +||information.fi360.com^ +||information.remploy.co.uk^ +||infosea.readingpartners.org^ +||infoservice.paratherm.com^ +||infosfba.readingpartners.org^ +||infospot.roanokegroup.com^ +||infotc.readingpartners.org^ +||infotul.readingpartners.org^ +||inkubate.actonservice.com^ +||innovate.bionix.com^ +||innovation.communica.world^ +||innovation.leeind.com^ +||innovation.rlgbuilds.com^ +||innovation.thinkcommunica.com^ +||innovations.provisur.com^ +||insight.boomer.com^ +||insight.redflashgroup.com^ +||insight.wittkieffer.com^ +||insights.alley.com^ +||insights.avad3.com^ +||insights.diamond-consultants.com^ +||insights.goodandprosper.com^ +||insights.hugheseurope.com^ +||insights.i-runway.com^ +||insights.jabian.com^ +||insights.jackporter.com^ +||insights.journey.world^ +||insights.nowitmatters.com^ +||insights.openfieldx.com^ +||insights.partnerwithfacet.com^ +||insights.squintopera.com^ +||install.orderwork.online^ +||insurance.caainsurancecompany.com^ +||insurance.thehullgroup.com^ +||insurancenoodle.actonservice.com^ +||int.actonservice.com^ +||int.deltafaucet.com^ +||intechservices.actonservice.com^ +||intelledox.actonservice.com^ +||intelli-shop.actonservice.com^ +||interedgemarketing.actonservice.com^ +||internalcomms.hubinternational.com^ +||international.wandw.ac.nz^ +||interworks.cloud.actonservice.com^ +||invata.actonservice.com^ +||invited.louwmanexclusive.nl^ +||inx-corp.actonservice.com^ +||ioactiveinc.actonservice.com^ +||ip.chipestimate.com^ +||ipinternational.actonservice.com^ +||iq.intellicyt.com^ +||isbamic.actonservice.com^ +||isentia.actonservice.com^ +||ishainsight.actonservice.com^ +||isoplexis.actonservice.com^ +||it.sharpmarketing.eu^ +||iwantglobal.actonservice.com^ +||jagransolutions.com.actonservice.com^ +||javs.actonservice.com^ +||jeedmact.sc.com^ +||jeffersonawards.actonservice.com^ +||jensenhughes.actonservice.com^ +||jetlinx.actonservice.com^ +||jifflenow.actonservice.com^ +||jobappplus.actonservice.com^ +||join.opencare.com^ +||joinsai.securitiesamerica.com^ +||joinus.holidayseniorliving.com^ +||jumpstartinc.actonservice.com^ +||jwpepper.actonsoftware.com^ +||kbs-services.actonservice.com^ +||kennisdomein.pqr.com^ +||kesko.actonservice.com^ +||kestlerfinancial.actonservice.com^ +||key2.actonservice.com^ +||keynotegroup.actonservice.com^ +||kidsdeservethebest.childrenswi.org^ +||kidsdeservethebest.chw.org^ +||kimberlyspa.actonservice.com^ +||kkhq.actonservice.com^ +||km.rightanswers.com^ +||know.gardner-webb.edu^ +||know.gimmal.com^ +||knowledge.equitymethods.com^ +||kone-cranes.actonservice.com^ +||kratosdefense.actonservice.com^ +||kristechwire.actonservice.com^ +||krm22.actonservice.com^ +||ksamarketing.sedgwick.com^ +||kurzweiledu.actonservice.com^ +||kuwaitmarketing.sedgwick.com^ +||kws.holdmybeerconsulting.com^ +||kyloepartners.actonservice.com^ +||lammico.actonservice.com^ +||landrykling.actonservice.com^ +||landstar.actonservice.com^ +||landuscooperative.actonservice.com^ +||lansinoh.actonservice.com^ +||lapiana.actonservice.com^ +||laplink.actonservice.com^ +||laserconcepts.actonservice.com^ +||lawyers.rigbycooke.com.au^ +||layeredinsight.actonservice.com^ +||lcscompanies.lcsnet.com^ +||leadcertain.actonservice.com^ +||leadership.zengerfolkman.com^ +||learn.altsourcesoftware.com^ +||learn.apartnership.com^ +||learn.brightspotstrategy.com^ +||learn.centricconsulting.com^ +||learn.healthyinteractions.com^ +||learn.image-iq.com^ +||learn.ultherapy.com^ +||ledgeviewpartners.actonservice.com^ +||leecompany.actonservice.com^ +||levementum.actonservice.com^ +||lgm.averydennison.com^ +||lhasalimited.actonservice.com^ +||libertyhomeequity.actonservice.com^ +||library.westernstatescat.com^ +||licensinginsights.ascap.com^ +||lighterthinnerstronger.fiber-line.com^ +||lilogy.actonservice.com^ +||link.hitachi-hightech.com^ +||links.asbury.org^ +||links.riverview.org^ +||loans.rategenius.com^ +||loansales.cbre.com^ +||lodicoandco.actonservice.com^ +||loginvsi.actonservice.com^ +||logistics.osmworldwide.com^ +||look-ahead.nurturemarketing.com^ +||lord.actonservice.com^ +||loveeveryday.brighterkind.com^ +||lowermybills.actonsoftware.com^ +||lp.fsresidential.com^ +||lp.mnp.ca^ +||lp.rallypoint.com^ +||ltcnetwork.mhainc.com^ +||lucanet.actonservice.com^ +||lumenera.actonservice.com^ +||lydallpm.actonservice.com^ +||lyonsdown.actonservice.com^ +||m-m.actonservice.com^ +||m.acmgloballab.com^ +||m.evolutiondigital.com^ +||m.smartmatch.email^ +||m.vistaresourcegroup.com^ +||m2t.actonservice.com^ +||ma.a3.se^ +||ma.axiomatics.com^ +||ma.betterbusiness.se^ +||ma.brightby.se^ +||ma.cbre.com^ +||ma.kyloepartners.com^ +||ma.lekab.com^ +||ma.lexicon.se^ +||ma.meritgo.se^ +||ma.meritmind.se^ +||ma.moblrn.com^ +||ma.mvr.se^ +||ma.mw-ind.com^ +||ma.pasco.com^ +||ma.preciofishbone.se^ +||ma.pricegain.com^ +||ma.prover.com^ +||ma.revideco.se^ +||ma.ri.se^ +||ma.smartplanes.se^ +||ma.tss.se^ +||ma.uslawns.com^ +||madisoncres.actonservice.com^ +||mafiahairdresser.actonservice.com^ +||maformationofficinale.actonservice.com^ +||mail-rite.actonservice.com^ +||mail.fathomdelivers.com^ +||mail.finwellgroup.com^ +||mail.firsthome.com^ +||mail.spandex.com^ +||mailer.conad.com^ +||mailer.gameloft.com^ +||mailers.fusioncharts.com^ +||mailers.unitedadlabel.com^ +||mailing.elconfidencialdigital.com^ +||manufacturing.autodeskcommunications.com^ +||marcom.biodex.com^ +||marcom.biodexrehab.com^ +||marcomauto.globalfoundries.com^ +||marcomm.woodward.com^ +||marcomms.maistro.com^ +||maricich.actonservice.com^ +||markentive.actonservice.com^ +||marketing-company.getinsured.com^ +||marketing-fl.waterstonemortgage.com^ +||marketing-info.cargurus.com^ +||marketing-test.aqr.com^ +||marketing-uk.reputation.com^ +||marketing-us.alere.com^ +||marketing-us.contentguru.com^ +||marketing-us.palettesoftware.com^ +||marketing.1-800boardup.com^ +||marketing.100days.co.il^ +||marketing.188weststjames.com^ +||marketing.1edisource.com^ +||marketing.2016cle.com^ +||marketing.2inspire.com^ +||marketing.3dcadtools.com^ +||marketing.3mark.com^ +||marketing.4over.com^ +||marketing.4sightcomms.com^ +||marketing.602.cz^ +||marketing.90degreebenefits.com^ +||marketing.a1cu.org^ +||marketing.a2btracking.com^ +||marketing.aaaflag.com^ +||marketing.aad.org^ +||marketing.aamcompany.com^ +||marketing.abaco.com^ +||marketing.abnbfcu.org^ +||marketing.absoft.co.uk^ +||marketing.acadian-asset.com^ +||marketing.accedo.tv^ +||marketing.acceleratedwealth.com^ +||marketing.accesscapitalgrp.com^ +||marketing.accesshardware.com^ +||marketing.accountorgroup.com^ +||marketing.accuride.com^ +||marketing.accurisksolutions.com^ +||marketing.acendas.com^ +||marketing.acieu.net^ +||marketing.acromag.com^ +||marketing.acrowire.com^ +||marketing.act-on.com^ +||marketing.activehousing.co.uk^ +||marketing.activeprospect.com^ +||marketing.acumenehr.com^ +||marketing.acumenmd.com^ +||marketing.adamasconsulting.com^ +||marketing.adept-telecom.co.uk^ +||marketing.advancedpowertech.com^ +||marketing.advancedpractice.com^ +||marketing.advanceflooring.co.nz^ +||marketing.advantage.tech^ +||marketing.advectas.se^ +||marketing.advicemedia.com^ +||marketing.advisorsres.com^ +||marketing.aefonline.org^ +||marketing.afterschoolallstars.org^ +||marketing.agracel.com^ +||marketing.airefco.com^ +||marketing.akaes.com^ +||marketing.alaskavisit.com^ +||marketing.alcopro.com^ +||marketing.alere.com^ +||marketing.alereforensics.com^ +||marketing.alfalak.com^ +||marketing.alhi.com^ +||marketing.all-wall.com^ +||marketing.allgress.com^ +||marketing.allmy-data.com^ +||marketing.almalasers.com^ +||marketing.almusnet.com^ +||marketing.alphabroder.ca^ +||marketing.alphabroder.com^ +||marketing.alphacommsolutions.com^ +||marketing.alphastarcm.com^ +||marketing.alsearsmd.com^ +||marketing.am.jll.com^ +||marketing.americanairlinescenter.com^ +||marketing.americanbathgroup.com^ +||marketing.americanweathertechsoffers.com^ +||marketing.amerindrisk.org^ +||marketing.amishcountry.org^ +||marketing.amocc.net^ +||marketing.analysysmason.com^ +||marketing.anchorage.net^ +||marketing.andaluciarealty.com^ +||marketing.angellmarketing.com^ +||marketing.aod-cloud.com^ +||marketing.aoneatm.com^ +||marketing.aotourism.com^ +||marketing.apllogistics.com^ +||marketing.apnconsultinginc.com^ +||marketing.apparound.com^ +||marketing.apptus.com^ +||marketing.aqr.com^ +||marketing.aragonresearch.com^ +||marketing.arcsona.com^ +||marketing.arenasports.net^ +||marketing.ariser.se^ +||marketing.arlington-capital.com^ +||marketing.arlington.org^ +||marketing.armsolutions.com^ +||marketing.arrayasolutions.com^ +||marketing.artemiscm.com^ +||marketing.asginsurance.com^ +||marketing.ashcroft.com^ +||marketing.ashianahomes.com^ +||marketing.asmarterwindow.com^ +||marketing.assetstrategy.com^ +||marketing.astecsolutions.com^ +||marketing.asteracu.com^ +||marketing.astm.org^ +||marketing.asurarisk.com^ +||marketing.atcautomation.com^ +||marketing.aten.com^ +||marketing.atlanticcitynj.com^ +||marketing.atlanticdiagnosticlaboratories.com^ +||marketing.att-smb.com^ +||marketing.attaneresults.com^ +||marketing.attivoconsulting.com^ +||marketing.attocube.com^ +||marketing.attunelive.com^ +||marketing.austiner.com^ +||marketing.autopayplus.com^ +||marketing.avantage.nl^ +||marketing.aventel.nl^ +||marketing.aviacode.com^ +||marketing.avtex.com^ +||marketing.awh.net^ +||marketing.awidubai.com^ +||marketing.ayesa.com^ +||marketing.balconette.co.uk^ +||marketing.baltimore.org^ +||marketing.barbizon.com^ +||marketing.barenbrug.co.uk^ +||marketing.baristaproshop.com^ +||marketing.barnumfg.com^ +||marketing.barsnet.com^ +||marketing.basalite.com^ +||marketing.baschrock-fg.com^ +||marketing.basyspro.com^ +||marketing.bayhealth.org^ +||marketing.bbsmartsolutions.com^ +||marketing.bca.srl^ +||marketing.bcaespana.es^ +||marketing.bcaportugal.pt^ +||marketing.bcltechnologies.com^ +||marketing.bcpas.com^ +||marketing.beachleymedical.com^ +||marketing.bellwethercorp.com^ +||marketing.beneplace.com^ +||marketing.benzcommunications.com^ +||marketing.beringer.net^ +||marketing.berktek.us^ +||marketing.bfandt.com^ +||marketing.bftwealth.com^ +||marketing.biomerieux-usa.com^ +||marketing.bioquell.com^ +||marketing.biotek.com^ +||marketing.bisongear.com^ +||marketing.biworldwide.co.uk^ +||marketing.blacktrace.com^ +||marketing.blastone.com^ +||marketing.blauw.com^ +||marketing.bldgcontrols.com^ +||marketing.bloomingtonmn.org^ +||marketing.bluebox.net^ +||marketing.bluebusiness.com^ +||marketing.bluefcu.com^ +||marketing.bluemarblepayroll.com^ +||marketing.bluvue.com^ +||marketing.bmlwealth.net^ +||marketing.bobswatches.com^ +||marketing.bodine-electric.com^ +||marketing.bodybilt.com^ +||marketing.boeingavenue8.nl^ +||marketing.bondcapital.ca^ +||marketing.bostwick-braun.com^ +||marketing.bouldercoloradousa.com^ +||marketing.boxerproperty.com^ +||marketing.boxmanstudios.com^ +||marketing.braintraffic.com^ +||marketing.branchserv.com^ +||marketing.brandingbusiness.com^ +||marketing.brandonindustries.com^ +||marketing.brandywinevalley.com^ +||marketing.braunintertec.com^ +||marketing.brucknertruck.com^ +||marketing.brukeroptics.com^ +||marketing.bruynzeel.org^ +||marketing.bswift.com^ +||marketing.btcelectronics.com^ +||marketing.budpack.com^ +||marketing.buffalojeans.com^ +||marketing.bulkbookstore.com^ +||marketing.buscircle.com^ +||marketing.business-events.lu^ +||marketing.business-sweden.se^ +||marketing.businesssystemsuk.com^ +||marketing.butlercc.edu^ +||marketing.c-c-l.com^ +||marketing.cabinsatgreenmountain.com^ +||marketing.cableloc.com^ +||marketing.cachetservices.com^ +||marketing.cadillacmichigan.com^ +||marketing.caldwell.com^ +||marketing.caldwellpartners.com^ +||marketing.caliberpublicsafety.com^ +||marketing.calilighting.com^ +||marketing.callahan.agency^ +||marketing.callmeonmycell.com^ +||marketing.callsource.com^ +||marketing.callutc.com^ +||marketing.calm.io^ +||marketing.campbellwealth.com^ +||marketing.campusadv.com^ +||marketing.candorcircuitboards.com^ +||marketing.caplin.com^ +||marketing.careservicesllc.com^ +||marketing.careworks.com^ +||marketing.cargas.com^ +||marketing.carillonlubbock.com^ +||marketing.carlisleit.com^ +||marketing.carltontechnologies.com^ +||marketing.carmichael-hill.com^ +||marketing.carolina.com^ +||marketing.castrum.uk^ +||marketing.catamarans.com^ +||marketing.cbancnetwork.com^ +||marketing.ccbtechnology.com^ +||marketing.celayix.com^ +||marketing.celebratinghomedirect.com^ +||marketing.cellero.com^ +||marketing.celona.io^ +||marketing.celsiusinternational.com^ +||marketing.centra.org^ +||marketing.centreforaviation.com^ +||marketing.centsoft.se^ +||marketing.certipay.com^ +||marketing.cfa.ca^ +||marketing.challengemyteam.co.uk^ +||marketing.championsales.com^ +||marketing.chancefinancialgroup.com^ +||marketing.charityfirst.com^ +||marketing.charliebaggsinc.com^ +||marketing.chemometec.com^ +||marketing.cheyenne.org^ +||marketing.choosechicago.com^ +||marketing.christchurchnz.com^ +||marketing.chromachecker.com^ +||marketing.ciandt.com^ +||marketing.circadence.com^ +||marketing.cisco-eagle.com^ +||marketing.citycollege.edu^ +||marketing.cjisgroup.com^ +||marketing.cla.aero^ +||marketing.claritydiagnostics.com^ +||marketing.clarityqst.com^ +||marketing.clarosanalytics.com^ +||marketing.classroominc.org^ +||marketing.cleardigital.com^ +||marketing.clearlaws.com^ +||marketing.clearviewlive.com^ +||marketing.clickatell.com^ +||marketing.clientsfirst-us.com^ +||marketing.cliffordpower.com^ +||marketing.clinigengroup.com^ +||marketing.cloudmerge.com^ +||marketing.cnalloys.co.uk^ +||marketing.coastalmississippi.com^ +||marketing.coastaloakins.com^ +||marketing.coconutmalorie.com^ +||marketing.codebaby.com^ +||marketing.cofactordigital.com^ +||marketing.cogentco.com^ +||marketing.colliers.com^ +||marketing.cologuardclassic.com^ +||marketing.comda.com^ +||marketing.comeovertoplover.com^ +||marketing.commercehomemortgage.com^ +||marketing.communityassociationmanagement.com^ +||marketing.complianceassociates.ca^ +||marketing.compmort.com^ +||marketing.computerguidance.com^ +||marketing.compuware.com^ +||marketing.confidentialcures.com^ +||marketing.congress.eular.org^ +||marketing.connect.scanstat.com^ +||marketing.connectandsell.com^ +||marketing.conney.com^ +||marketing.constructionmonitor.com^ +||marketing.construsoft.com^ +||marketing.consumermkts1.com^ +||marketing.contentguru.nl^ +||marketing.convergentusa.com^ +||marketing.copc.com^ +||marketing.coregroupusa.com^ +||marketing.corneagen.com^ +||marketing.cornerstonevegas.com^ +||marketing.corrigan.com^ +||marketing.couplescruise.com^ +||marketing.cpa2biz.com^ +||marketing.cpicompanies.com^ +||marketing.cpsi.com^ +||marketing.crawford-industries.com^ +||marketing.crbcunninghams.co.uk^ +||marketing.credoreference.com^ +||marketing.cresa.com^ +||marketing.crystalcoastnc.org^ +||marketing.ctic.ca^ +||marketing.cura-hpc.com^ +||marketing.curetoday.com^ +||marketing.customercarebg.com^ +||marketing.cvma.com^ +||marketing.cyber-edge.com^ +||marketing.cyber360solutions.com^ +||marketing.cygnetcloud.com^ +||marketing.cypram.com^ +||marketing.d4discovery.com^ +||marketing.dacocorp.com^ +||marketing.dairyland.com^ +||marketing.dais.com^ +||marketing.dantecdynamics.com^ +||marketing.darwinspet.com^ +||marketing.data-source.com^ +||marketing.data180.com^ +||marketing.datacenterdynamics.com^ +||marketing.dataflo.com^ +||marketing.datamark.net^ +||marketing.datamatics.com^ +||marketing.dataprise.com^ +||marketing.datawatchsystems.com^ +||marketing.dataxoom.net^ +||marketing.daveycoach.com^ +||marketing.davidcbaker.com^ +||marketing.dbh-group.com^ +||marketing.dcihollowmetal.com^ +||marketing.dcmh.net^ +||marketing.dcmservices.com^ +||marketing.ddc-cabtech.com^ +||marketing.deckerretirementplanning.com^ +||marketing.dedicated-db.com^ +||marketing.dedola.com^ +||marketing.deepcrawl.com^ +||marketing.deltechomes.com^ +||marketing.demagcranes.com^ +||marketing.deppecommunications.com^ +||marketing.dessy.com^ +||marketing.destinationcanada.com^ +||marketing.destinationgranby.com^ +||marketing.destinationtravelnetwork.com^ +||marketing.destinationvancouver.com^ +||marketing.dev-pro.net^ +||marketing.dhptraining.com^ +||marketing.dienerlaw.net^ +||marketing.digitaledge.marketing^ +||marketing.digitalwarehouse.com^ +||marketing.diningalliance.com^ +||marketing.discovercentralma.org^ +||marketing.discoverdenton.com^ +||marketing.discoverdunwoody.com^ +||marketing.discoverkalamazoo.com^ +||marketing.discoverlehighvalley.com^ +||marketing.discovernewport.org^ +||marketing.discoverorg.com^ +||marketing.discoverphl.com^ +||marketing.discoverpuertorico.com^ +||marketing.discoversantaclara.org^ +||marketing.discoversaratoga.org^ +||marketing.discoverstcharles.com^ +||marketing.discovertemple.com^ +||marketing.discovia.com^ +||marketing.dispatchtoday.com^ +||marketing.diverseco.com.au^ +||marketing.dmcc.ae^ +||marketing.dmcplc.co.uk^ +||marketing.dmihotels.com^ +||marketing.dnacenter.com^ +||marketing.docstar.com^ +||marketing.dohenycompanies.com^ +||marketing.doorway.com^ +||marketing.doprocess.com^ +||marketing.draycir.com^ +||marketing.dreamlawn.com^ +||marketing.dreamstyleremodeling.com^ +||marketing.driveline.co.nz^ +||marketing.driveulu.com^ +||marketing.dryvit.com^ +||marketing.dscdredge.com^ +||marketing.ducenit.com^ +||marketing.duckbrand.com^ +||marketing.dulsco.com^ +||marketing.duramarktechnologies.com^ +||marketing.dylangrayconsulting.com^ +||marketing.dynamicairshelters.com^ +||marketing.e-emphasys.com^ +||marketing.earthbend.com^ +||marketing.earthquakeauthority.com^ +||marketing.eastbanctech.com^ +||marketing.eastviewpress.com^ +||marketing.easydita.com^ +||marketing.eccoviasolutions.com^ +||marketing.ece.org^ +||marketing.ecgmc.com^ +||marketing.echohealthinc.com^ +||marketing.echostarmobile.com^ +||marketing.ecosystemintegrity.com^ +||marketing.ecslearn.com^ +||marketing.efleets.com^ +||marketing.ehimrx.com^ +||marketing.ehy.com^ +||marketing.elastoproxy.com^ +||marketing.electroind.com^ +||marketing.electroquip.co.nz^ +||marketing.ellingtonresort.com^ +||marketing.elrig.org^ +||marketing.emds.com^ +||marketing.emeraldheights.com^ +||marketing.emergenttech.com^ +||marketing.emirsoftware.com^ +||marketing.empire-pa.com^ +||marketing.emplicity.com^ +||marketing.employeedevelopmentsystems.com^ +||marketing.endologix.com^ +||marketing.energystewardsinc.com^ +||marketing.enhancedvision.com^ +||marketing.enrichmentjourneys.com^ +||marketing.enterprise-selling.com^ +||marketing.entrustinc.com^ +||marketing.envisionpackaging.com^ +||marketing.envylabs.com^ +||marketing.epsteinandwhite.com^ +||marketing.equipointpartners.com^ +||marketing.equiscript.com^ +||marketing.ergogenesis.com^ +||marketing.erioninsurance.com^ +||marketing.erm-ins.com^ +||marketing.eschelsfinancial.net^ +||marketing.eschenbach.com^ +||marketing.esecuritysolutions.com^ +||marketing.esenetworks.com^ +||marketing.espec.com^ +||marketing.essellc.com^ +||marketing.et.support^ +||marketing.etcnow.net^ +||marketing.eteamsys.com^ +||marketing.eugenecascadescoast.org^ +||marketing.eurofinsus.com^ +||marketing.evansbank.com^ +||marketing.evcp.com^ +||marketing.eventsforce.com^ +||marketing.evolveip.nl^ +||marketing.ewi.org^ +||marketing.exclusive-networks.com.au^ +||marketing.execshape.com^ +||marketing.executivetravel.com^ +||marketing.experiencecolumbus.com^ +||marketing.experiencegr.com^ +||marketing.experienceolympia.com^ +||marketing.experts.com^ +||marketing.exploreasheville.com^ +||marketing.explorecharleston.com^ +||marketing.exploreedmonton.com^ +||marketing.exploregwinnett.org^ +||marketing.explorenorthmyrtlebeach.com^ +||marketing.explorestlouis.com^ +||marketing.expworld.com^ +||marketing.exteresauto.com^ +||marketing.external.xerox.com^ +||marketing.extremenetworks.com^ +||marketing.eyc.com^ +||marketing.ezicarrental.co.nz^ +||marketing.facilityplus.com^ +||marketing.fatiguescience.com^ +||marketing.fedsched.com^ +||marketing.festiva.com^ +||marketing.festivaorlandoresort.com^ +||marketing.fhsr.com^ +||marketing.fiduciaryfirst.com^ +||marketing.firearmsins.com^ +||marketing.first-insight.com^ +||marketing.firstinsurancefunding.com^ +||marketing.firstpac.com^ +||marketing.five-startech.com^ +||marketing.five19creative.com^ +||marketing.flaire.com^ +||marketing.fleetfeetorlando.com^ +||marketing.fleetfeetraleigh.com^ +||marketing.fleetstar.com^ +||marketing.fletchercsi.com^ +||marketing.florencechamber.com^ +||marketing.flsmidth.com^ +||marketing.fluentco.com^ +||marketing.flycastpartners.com^ +||marketing.flynth.nl^ +||marketing.forbin.com^ +||marketing.forepartnership.com^ +||marketing.forgeplumbing.com.au^ +||marketing.forte.net^ +||marketing.fortsmith.org^ +||marketing.fortworth.com^ +||marketing.foxitsoftware1.com^ +||marketing.foxrehab.org^ +||marketing.fpaaust.com.au^ +||marketing.frogtape.com^ +||marketing.frontrowseatsllc.com^ +||marketing.ftfnews.com^ +||marketing.funmobility.com^ +||marketing.funraise.io^ +||marketing.fwcbd.com^ +||marketing.gables.com^ +||marketing.gasandsupply.com^ +||marketing.gatewayp.com^ +||marketing.gatlinburg.com^ +||marketing.gbg.com^ +||marketing.gca.net^ +||marketing.gebroederskoffie.nl^ +||marketing.genesis-fs.com^ +||marketing.genpak.com^ +||marketing.geowarehouse.ca^ +||marketing.gep.com^ +||marketing.getfidelis.com^ +||marketing.getoverdrive.com^ +||marketing.glenviewterrace.com^ +||marketing.globalbmg.com^ +||marketing.globalmedics.co.nz^ +||marketing.globalpetfoods.ca^ +||marketing.globalpointofcare.abbott^ +||marketing.globerunner.com^ +||marketing.gmcvb.com^ +||marketing.gogofunding.com^ +||marketing.gogovapps.com^ +||marketing.gogreat.com^ +||marketing.goldenpaints.com^ +||marketing.goochandhousego.com^ +||marketing.goodcoinc.com^ +||marketing.goodfunding.com^ +||marketing.goprovidence.com^ +||marketing.gorillagroup.com^ +||marketing.gosenergy.com^ +||marketing.gotobermuda.com^ +||marketing.gotolouisville.com^ +||marketing.gowestgroup.com^ +||marketing.gradientfg.com^ +||marketing.gramener.com^ +||marketing.grandecheese.com^ +||marketing.greatgunsmarketing.co.uk^ +||marketing.greatpointins.com^ +||marketing.greenbay.com^ +||marketing.greenbrierwv.com^ +||marketing.greycon.com^ +||marketing.groupmgmt.com^ +||marketing.growbinmaster.com^ +||marketing.growthmodemarketing.com^ +||marketing.grplans.com^ +||marketing.guardianfinancialgp.com^ +||marketing.guidepoint.com^ +||marketing.gulfshores.com^ +||marketing.gwcontainers.com^ +||marketing.halcousa.com^ +||marketing.halldale.com^ +||marketing.halobi.com^ +||marketing.hardysolutions.com^ +||marketing.harlancapital.com^ +||marketing.harrishealthcare.com^ +||marketing.haughn.com^ +||marketing.havenfinancialgroup.com^ +||marketing.hcrwealth.com^ +||marketing.hcsbenefits.com^ +||marketing.hcu.coop^ +||marketing.headwaycorp.com^ +||marketing.healthcarousel.com^ +||marketing.healthfoodinsurance.com^ +||marketing.healthtech.net^ +||marketing.hellomedia.com^ +||marketing.helloposition.com^ +||marketing.heronskey.org^ +||marketing.hfgagents.com^ +||marketing.hfore.com^ +||marketing.hgdata.com^ +||marketing.hhglobal.com^ +||marketing.highpoint.com^ +||marketing.highwoods.com^ +||marketing.higmi.com^ +||marketing.hilltopwealthsolutions.com^ +||marketing.hilltopwealthtax.com^ +||marketing.hines.com^ +||marketing.hodgesmace.com^ +||marketing.holocentric.com^ +||marketing.home-inspection-franchise-opportunity.com^ +||marketing.homedna.com^ +||marketing.homeofpurdue.com^ +||marketing.homesteadplans.com^ +||marketing.horizonfoodgroup.com^ +||marketing.horizonlims.com^ +||marketing.horizonsoftware.com^ +||marketing.hospicecarelc.org^ +||marketing.hughwood.com^ +||marketing.hvcb.org^ +||marketing.hyperdisk.com^ +||marketing.iaccompanies.com^ +||marketing.iaclarington.com^ +||marketing.iacm.com^ +||marketing.iansresearch.com^ +||marketing.iar.com^ +||marketing.ibermatica.com^ +||marketing.icatsoftware.com^ +||marketing.icreative.nl^ +||marketing.idquantique.com^ +||marketing.igel.com^ +||marketing.ijoinsolutions.com^ +||marketing.iloveny.com^ +||marketing.imageworkscreative.com^ +||marketing.imagexmedia.com^ +||marketing.imatrix.com^ +||marketing.impactinnovationgroup.com^ +||marketing.impexium.com^ +||marketing.inaani.com^ +||marketing.incrediwear.com^ +||marketing.indianadunes.com^ +||marketing.industrialformulatorsinc.com^ +||marketing.industrialspec.com^ +||marketing.inex.com^ +||marketing.influitive.com^ +||marketing.influxdb.com^ +||marketing.infrontconsulting.com^ +||marketing.ink-co.com^ +||marketing.insdesign.com^ +||marketing.insigniam.com^ +||marketing.insignio.de^ +||marketing.instrumentassociates.com^ +||marketing.insurancedesigners.com^ +||marketing.insureline.com^ +||marketing.insureon.com^ +||marketing.inszoneinsurance.com^ +||marketing.intellifuel.com^ +||marketing.interact911.com^ +||marketing.interedgemarketing.com^ +||marketing.intergraph.net^ +||marketing.interiorfcu.org^ +||marketing.intermax.nl^ +||marketing.inthenest.com^ +||marketing.intrado.com^ +||marketing.inventiconasia.com^ +||marketing.investwithwmg.com^ +||marketing.invitria.com^ +||marketing.iofficedelivers.com^ +||marketing.iongroup.com^ +||marketing.iriworldwide.com^ +||marketing.irvingtexas.com^ +||marketing.isaless.com^ +||marketing.ismguide.com^ +||marketing.itiball.com^ +||marketing.itsavvy.com^ +||marketing.itshome.com^ +||marketing.ivctechnologies.com^ +||marketing.iwsinc.com^ +||marketing.izeno.com^ +||marketing.jacksonholechamber.com^ +||marketing.janek.com^ +||marketing.javs.com^ +||marketing.jaysoncompany.com^ +||marketing.jdicleaning.com^ +||marketing.jensenprecast.com^ +||marketing.jmait.com^ +||marketing.johncrane.com^ +||marketing.johnsonmelloh.com^ +||marketing.johnstoncountync.org^ +||marketing.joyridecoffee.com^ +||marketing.jstokes.com^ +||marketing.jtsa.edu^ +||marketing.juicepharma.com^ +||marketing.kainmcarthur.com^ +||marketing.kestlerfinancial.com^ +||marketing.keylane.com^ +||marketing.keystonegp.com^ +||marketing.kimble-chase.com^ +||marketing.kinectsolar.com^ +||marketing.kingsiii.com^ +||marketing.kiran.com^ +||marketing.kisales.com^ +||marketing.knoxville.org^ +||marketing.konareefresort.com^ +||marketing.konecranes.com^ +||marketing.kozzyavm.com^ +||marketing.kpfilms.com^ +||marketing.kurtzon.com^ +||marketing.labdepotinc.com^ +||marketing.lakeco.com^ +||marketing.lakecountyfl.gov^ +||marketing.lakepointadvisorygroup.com^ +||marketing.landuscooperative.com^ +||marketing.laplinkemail.com^ +||marketing.latisys.com^ +||marketing.latourism.org^ +||marketing.lcmchealth.org^ +||marketing.leadables.com^ +||marketing.leading-edge.com^ +||marketing.leadingresponse.com^ +||marketing.learncia.com^ +||marketing.leasehawk.com^ +||marketing.leatherberryassociates.com^ +||marketing.ledgeviewpartners.com^ +||marketing.leegov.com^ +||marketing.lhbindustries.com^ +||marketing.libertyhomeequity.com^ +||marketing.libertyreverse.com^ +||marketing.lightstreamin.com^ +||marketing.lilogy.com^ +||marketing.lincoln.org^ +||marketing.linkdex.com^ +||marketing.liquidvoice.co.uk^ +||marketing.livepaniau.com^ +||marketing.livevol.com^ +||marketing.location3.com^ +||marketing.lord.com^ +||marketing.lorenz.ca^ +||marketing.lorenzproducts.com^ +||marketing.loslagosathotspringsvillage.com^ +||marketing.lstaff.com^ +||marketing.lumenera.com^ +||marketing.lumiradx.com^ +||marketing.luxurylink.com^ +||marketing.lystek.com^ +||marketing.m-m.net^ +||marketing.m3design.com^ +||marketing.machtfit.de^ +||marketing.maddenmo.com^ +||marketing.mafiahairdresser.com^ +||marketing.magnamachine.com^ +||marketing.magnet.ie^ +||marketing.magnetrol.com^ +||marketing.mailersusa.com^ +||marketing.mainstream-tech.com^ +||marketing.manchesterspecialty.com^ +||marketing.mandarine.pl^ +||marketing.manningltg.com^ +||marketing.mapleleafpromostore.com^ +||marketing.mapleleafpromotions.com^ +||marketing.maricich.com^ +||marketing.marineagency.com^ +||marketing.marketinggeneral.com^ +||marketing.marketingguys.nl^ +||marketing.martorusa.com^ +||marketing.marusyngro.com^ +||marketing.marybrowns.com^ +||marketing.masergy.com^ +||marketing.matchstick.legal^ +||marketing.mba.hkust.edu.hk^ +||marketing.mcgrawpowersports.com^ +||marketing.mcommgroup.com^ +||marketing.mdbeautyclinic.ca^ +||marketing.medata.com^ +||marketing.medfusion.com^ +||marketing.medical.averydennison.com^ +||marketing.medprostaffing.com^ +||marketing.medsolutions.com^ +||marketing.medsphere.com^ +||marketing.medxm1.com^ +||marketing.meetac.com^ +||marketing.meetboston.com^ +||marketing.meetprestige.com^ +||marketing.melitta.ca^ +||marketing.melitta.com^ +||marketing.merlinbusinesssoftware.com^ +||marketing.mesalabs.com^ +||marketing.metaltanks.com^ +||marketing.metropolislosangeles.com^ +||marketing.mgis.com^ +||marketing.mhe-demag.com^ +||marketing.mhinvest.com^ +||marketing.microlise.com^ +||marketing.middlemarketcenter.org^ +||marketing.midstate-sales.com^ +||marketing.midwestbath.com^ +||marketing.mie-solutions.com^ +||marketing.milesfinancialgroup.com^ +||marketing.millstonefinancial.net^ +||marketing.mimakiusa.com^ +||marketing.mindflowdesign.com^ +||marketing.miraflats.com^ +||marketing.miramarcap.com^ +||marketing.mirrorlaketamarackresort.com^ +||marketing.mixitusa.com^ +||marketing.mlnrp.com^ +||marketing.mnmpartnersllc.com^ +||marketing.mobile.org^ +||marketing.modalife.com^ +||marketing.moldex.com^ +||marketing.monetsoftware.com^ +||marketing.monochrome.co.uk^ +||marketing.moodypublishers.com^ +||marketing.mossinc.com^ +||marketing.motionsolutions.com^ +||marketing.motista.com^ +||marketing.motivation.se^ +||marketing.motleys.com^ +||marketing.moverschoiceinfo.com^ +||marketing.mowe.studio^ +||marketing.mplsnw.com^ +||marketing.mrcaff.org^ +||marketing.mtcperformance.com^ +||marketing.mtrustcompany.com^ +||marketing.multiad.com^ +||marketing.mxmsig.com^ +||marketing.mya.co.uk^ +||marketing.myadvice.com^ +||marketing.mycvcu.org^ +||marketing.mydario.com^ +||marketing.mypoindexter.com^ +||marketing.mypureradiance.com^ +||marketing.na.schoeck.com^ +||marketing.nabatakinc.com^ +||marketing.nace.org^ +||marketing.nada.org^ +||marketing.nanthealth.net^ +||marketing.napatech.com^ +||marketing.natilik.com^ +||marketing.nav-x.com^ +||marketing.navieninc.com^ +||marketing.navitascredit.com^ +||marketing.ncbrunswick.com^ +||marketing.net3technology.net^ +||marketing.netcel.com^ +||marketing.netplan.co.uk^ +||marketing.netrixllc.com^ +||marketing.netvlies.nl^ +||marketing.network-value.com^ +||marketing.networthadvisorsllc.com^ +||marketing.netwoven.com^ +||marketing.neurorelief.com^ +||marketing.newgenerationins.com^ +||marketing.newhomesource.com^ +||marketing.newnet.com^ +||marketing.neworleans.com^ +||marketing.newwestinsurance.com^ +||marketing.nexans.us^ +||marketing.nibusinessparkleasing.com^ +||marketing.nicepak.com^ +||marketing.nicholaswealth.com^ +||marketing.njcpa.org^ +||marketing.nopec.org^ +||marketing.norsat.com^ +||marketing.northgate.com^ +||marketing.novatel.com^ +||marketing.novelcoworking.com^ +||marketing.novicell.co.uk^ +||marketing.nowplayingutah.com^ +||marketing.nparallel.com^ +||marketing.npuins.com^ +||marketing.nsfocus.com^ +||marketing.nsfocusglobal.com^ +||marketing.nsford.com^ +||marketing.ntconsult.com^ +||marketing.nthdegree.com^ +||marketing.nu.com^ +||marketing.nualight.com^ +||marketing.nugrowth.com^ +||marketing.o3world.com^ +||marketing.objectpartners.com^ +||marketing.oceanclubmyrtlebeach.com^ +||marketing.oceangateresortfl.com^ +||marketing.ocozzio.com^ +||marketing.odfigroup.com^ +||marketing.olivers.dk^ +||marketing.omadi.com^ +||marketing.omgnational.com^ +||marketing.omnifymarketing.com^ +||marketing.ompimail.com^ +||marketing.onclive.com^ +||marketing.onececo.com^ +||marketing.oni.co.uk^ +||marketing.onkyousa.com^ +||marketing.openskygroup.com^ +||marketing.opexanalytics.com^ +||marketing.opga.com^ +||marketing.opoffice.com^ +||marketing.optimumenergyco.com^ +||marketing.optionmetrics.com^ +||marketing.optis-world.com^ +||marketing.optitex.com^ +||marketing.orbograph.com^ +||marketing.oremuscorp.com^ +||marketing.orionhealth.com^ +||marketing.orionrisk.com^ +||marketing.orionti.ca^ +||marketing.orolia.com^ +||marketing.orthofi.com^ +||marketing.oxfordcomputergroup.com^ +||marketing.pac.com^ +||marketing.pacificspecialty.com^ +||marketing.paducah.travel^ +||marketing.page1solutions.com^ +||marketing.pal-v.com^ +||marketing.palettesoftware.com^ +||marketing.pangea-cds.com^ +||marketing.panviva.com^ +||marketing.papersave.com^ +||marketing.paraflex.com^ +||marketing.parkmycloud.com^ +||marketing.parkseniorvillas.com^ +||marketing.partnerrc.com^ +||marketing.patriotcapitalcorp.com^ +||marketing.pattonhc.com^ +||marketing.pax8.com^ +||marketing.paysafe.com^ +||marketing.pcsww.com^ +||marketing.peakfinancialfreedomgroup.com^ +||marketing.peerapp.com^ +||marketing.pentaho.com^ +||marketing.peoplesafe.co.uk^ +||marketing.perfarm.com^ +||marketing.performancepolymers.averydennison.com^ +||marketing.performantcorp.com^ +||marketing.periscopewealthadvisors.com^ +||marketing.petsit.com^ +||marketing.pfg1.net^ +||marketing.piazzaavm.com.tr^ +||marketing.pinkerton.com^ +||marketing.pitcher-nsw.com.au^ +||marketing.planar.com^ +||marketing.plastiq.com^ +||marketing.plazahomemortgage.com^ +||marketing.plsx.com^ +||marketing.plus-projects.com^ +||marketing.pmanetwork.com^ +||marketing.polimortgage.com^ +||marketing.pollock.com^ +||marketing.polymerohio.org^ +||marketing.pooleaudi.co.uk^ +||marketing.porchlightatl.com^ +||marketing.potlatchdelticlandsales.com^ +||marketing.precisiondoor.tech^ +||marketing.premierpandp.com^ +||marketing.prescientnational.com^ +||marketing.primaryservices.com^ +||marketing.profmi.org^ +||marketing.projectares.academy^ +||marketing.promiles.com^ +||marketing.promoboxx.com^ +||marketing.pronaca.com^ +||marketing.prosperoware.com^ +||marketing.protegic.com.au^ +||marketing.protosell.se^ +||marketing.ptw.com^ +||marketing.puffininn.net^ +||marketing.punctuation.com^ +||marketing.pureaircontrols.com^ +||marketing.pureflorida.com^ +||marketing.puretechltd.com^ +||marketing.qivos.com^ +||marketing.qualificationcheck.com^ +||marketing.queenstownnz.nz^ +||marketing.quenchonline.com^ +||marketing.questforum.org^ +||marketing.quickattach.com^ +||marketing.quickencompare.com^ +||marketing.quickenloans.com^ +||marketing.quonticbank.com^ +||marketing.rals.com^ +||marketing.ramsayinnovations.com^ +||marketing.rapidlockingsystem.com^ +||marketing.rattleback.com^ +||marketing.rdoequipment.com^ +||marketing.readinghorizons.com^ +||marketing.readtolead.org^ +||marketing.realcomm.com^ +||marketing.realstorygroup.com^ +||marketing.recarroll.com^ +||marketing.redclassic.com^ +||marketing.redlion.net^ +||marketing.redwoodtech.de^ +||marketing.regenteducation.net^ +||marketing.reliablepaper.com^ +||marketing.remotelock.com^ +||marketing.resolutionre.com^ +||marketing.responsepoint.com^ +||marketing.resuelve.mx^ +||marketing.revcommercialgroup.com^ +||marketing.revegy.com^ +||marketing.revgroup.com^ +||marketing.revparts.com^ +||marketing.revrvgroup.com^ +||marketing.rfactr.com^ +||marketing.rfl.uk.com^ +||marketing.rhinofoods.com^ +||marketing.rimes.com^ +||marketing.riseagainsthunger.org^ +||marketing.risingfall.com^ +||marketing.riverfrontig.com^ +||marketing.rme360.com^ +||marketing.rmhoffman.com^ +||marketing.rmhoist.com^ +||marketing.robtheiraguy.com^ +||marketing.rocklakeig.com^ +||marketing.roofconnect.com^ +||marketing.rosica.com^ +||marketing.roxtec.com^ +||marketing.rsvpportal.com^ +||marketing.rtx.travel^ +||marketing.ruckuswireless.com^ +||marketing.ruf-briquetter.com^ +||marketing.runyonsurfaceprep.com^ +||marketing.rxaap.com^ +||marketing.saa.com^ +||marketing.saegissolutions.ca^ +||marketing.safesend.com^ +||marketing.safetreeretirement.com^ +||marketing.safetychix.com^ +||marketing.sambasafety.com^ +||marketing.sanantonioedf.com^ +||marketing.sanitysolutions.com^ +||marketing.santabarbaraca.com^ +||marketing.sap.events.deloitte.com^ +||marketing.savannahchamber.com^ +||marketing.scalematrix.com^ +||marketing.scenicsedona.com^ +||marketing.schneiderdowns.com^ +||marketing.schuff.com^ +||marketing.sectra.com^ +||marketing.sedgwick.com^ +||marketing.seemonterey.com^ +||marketing.self-helpfcu.org^ +||marketing.sensoft.ca^ +||marketing.sensysgatso.com^ +||marketing.sentinelgroup.com^ +||marketing.sentirlabs.com^ +||marketing.seobusinessreporter.com^ +||marketing.sepac.com^ +||marketing.sertantcapital.com^ +||marketing.setaram.com^ +||marketing.shadow-soft.com^ +||marketing.shippers-supply.com^ +||marketing.shoplet.com^ +||marketing.shoppingcenteradvisers.com^ +||marketing.shoresatorangebeach.com^ +||marketing.shoresmith.com^ +||marketing.shpfinancial.com^ +||marketing.shreveport-bossier.org^ +||marketing.shurtapemail.com^ +||marketing.sigmanest.com^ +||marketing.signaltheory.com^ +||marketing.simio.com^ +||marketing.simpartners.com^ +||marketing.simplion.com^ +||marketing.sinctech.com^ +||marketing.skorsports.nl^ +||marketing.slocal.com^ +||marketing.smartcoversystems.com^ +||marketing.smartowner.com^ +||marketing.smartvault.com^ +||marketing.socialbakers.com^ +||marketing.softwaresecure.com^ +||marketing.soha.io^ +||marketing.sojern.com^ +||marketing.soloprotect.com^ +||marketing.somero.com^ +||marketing.sosintl.com^ +||marketing.sossystems.co.uk^ +||marketing.soundtrackyourbrand.com^ +||marketing.sourceadvisors.com^ +||marketing.southeastmortgage.com^ +||marketing.southparkcapital.com^ +||marketing.southwestblinds.com^ +||marketing.sparktx.com^ +||marketing.spbatpa.org^ +||marketing.specgradeled.com^ +||marketing.speconthejob.com^ +||marketing.spectracom.com^ +||marketing.spigit.com^ +||marketing.spinnakermgmt.com^ +||marketing.sportsworld.org^ +||marketing.springfieldelectric.com^ +||marketing.squareonemea.com^ +||marketing.ssfllp.com^ +||marketing.sstid.com^ +||marketing.staffboom.com^ +||marketing.stahl.com^ +||marketing.stamen.com^ +||marketing.starrcompanies.com^ +||marketing.startfinder.com^ +||marketing.stateandfed.com^ +||marketing.stay-rlhc.com^ +||marketing.stellarmls.com^ +||marketing.stentel.com^ +||marketing.sterlingsolutions.com^ +||marketing.sti.com^ +||marketing.stillsecure.com^ +||marketing.stmh.org^ +||marketing.stockcero.com^ +||marketing.streck.com^ +||marketing.striveoffice.com^ +||marketing.strongpoint.io^ +||marketing.summittruckgroup.com^ +||marketing.suncrestadvisors.com^ +||marketing.sunny.org^ +||marketing.superiormobilemedics.com^ +||marketing.superiorrecreationalproducts.com^ +||marketing.superwindowsusa.com^ +||marketing.surfcityusa.com^ +||marketing.swdurethane.com^ +||marketing.swiftprepaid.com^ +||marketing.syntax.com^ +||marketing.syntrio.com^ +||marketing.systancia.com^ +||marketing.systempavers.com^ +||marketing.t2systems.com^ +||marketing.t4media.co.uk^ +||marketing.talbot-promo.com^ +||marketing.tallwave.com^ +||marketing.taos.com^ +||marketing.tarheelpaper.com^ +||marketing.tas.business^ +||marketing.tba.group^ +||marketing.tcgrecycling.com^ +||marketing.teamspirit.uk.com^ +||marketing.techbrite.com^ +||marketing.techcxo.com^ +||marketing.techinsurance.com^ +||marketing.techlogix.com^ +||marketing.technicalprospects.com^ +||marketing.technologyadvice.com^ +||marketing.techoregon.org^ +||marketing.teleswitch.com^ +||marketing.telstraphonewords.com.au^ +||marketing.temptimecorp.com^ +||marketing.tengointernet.com^ +||marketing.tenoapp.com^ +||marketing.ternian.com^ +||marketing.test-acton.com^ +||marketing.testforce.com^ +||marketing.testtargettreat.com^ +||marketing.tfawealthplanning.com^ +||marketing.thatsbiz.com^ +||marketing.thealtan.com^ +||marketing.thebasiccompanies.com^ +||marketing.thebeacongrp.com^ +||marketing.thebestirs.com^ +||marketing.thecea.ca^ +||marketing.thefusiongroup.com^ +||marketing.theinovogroup.com^ +||marketing.themonumentgroup.com^ +||marketing.theoccasionsgroup.com^ +||marketing.theofficestore.com^ +||marketing.thepalmbeaches.com^ +||marketing.theplasticsurgeryclinic.ca^ +||marketing.thequincygroupinc.com^ +||marketing.theresortatsummerlin.com^ +||marketing.thermocalc.se^ +||marketing.thesanfranciscopeninsula.com^ +||marketing.thewilsonagency.com^ +||marketing.thisisalpha.com^ +||marketing.thisiscleveland.com^ +||marketing.threadsol.com^ +||marketing.tidedrycleaners.com^ +||marketing.tignl.eu^ +||marketing.timmons.com^ +||marketing.tmaonline.info^ +||marketing.tmshealth.com^ +||marketing.tongue-tied-nw.co.uk^ +||marketing.toolkitgroup.com^ +||marketing.topekapartnership.com^ +||marketing.topspotims.com^ +||marketing.torrentcorp.com^ +||marketing.totalcsr.com^ +||marketing.tourismpg.com^ +||marketing.tourismrichmond.com^ +||marketing.tourismsaskatoon.com^ +||marketing.tourismwinnipeg.com^ +||marketing.towerfcu.org^ +||marketing.toxicology.abbott^ +||marketing.toyotaofeasley.com^ +||marketing.trackmarketing.net^ +||marketing.transcore.com^ +||marketing.transitair.com^ +||marketing.translations.com^ +||marketing.transperfect.com^ +||marketing.transtar1.com^ +||marketing.travelink.com^ +||marketing.travelks.com^ +||marketing.travelmarketreport.com^ +||marketing.travelportland.com^ +||marketing.travelsavers.com^ +||marketing.traveltags.com^ +||marketing.traversecity.com^ +||marketing.traxtech.com^ +||marketing.trextape.com^ +||marketing.triconamericanhomes.com^ +||marketing.triconresidential.com^ +||marketing.trimtabconsultants.com^ +||marketing.trubridge.com^ +||marketing.trucode.com^ +||marketing.trueinfluence.com^ +||marketing.trustarmarketing.com^ +||marketing.trusteedplans.com^ +||marketing.trustid.com^ +||marketing.tsadvertising.com^ +||marketing.ttcu.com^ +||marketing.tucasi.com^ +||marketing.tvcn.nl^ +||marketing.twofivesix.co^ +||marketing.txsource.net^ +||marketing.u-pic.com^ +||marketing.ugamsolutions.com^ +||marketing.ultimo.com^ +||marketing.uni-med.com^ +||marketing.unimar.com^ +||marketing.unionbenefits.co.uk^ +||marketing.unionhousesf.com^ +||marketing.unionwear.com^ +||marketing.unitedautocredit.net^ +||marketing.uoficreditunion.org^ +||marketing.uptopcorp.com^ +||marketing.urbanprojects.ec^ +||marketing.usailighting.com^ +||marketing.usaprogrip.com^ +||marketing.useadam.co.uk^ +||marketing.usequityadvantage.com^ +||marketing.usglobaltax.com^ +||marketing.usmedequip.com^ +||marketing.uxreactor.com^ +||marketing.vabi.nl^ +||marketing.vacationcondos.com^ +||marketing.vacationvillastwo.com^ +||marketing.valleyforge.org^ +||marketing.valv.com^ +||marketing.vantagepoint-financial.com^ +||marketing.vathorst.nl^ +||marketing.vault49.com^ +||marketing.veladx.com^ +||marketing.verantis.com^ +||marketing.verasci.com^ +||marketing.versatile-ag.ca^ +||marketing.versium.com^ +||marketing.vertexcs.com^ +||marketing.vfop.com^ +||marketing.vgm.com^ +||marketing.vgmeducation.com^ +||marketing.vgmhomelink.com^ +||marketing.vigon.com^ +||marketing.villageatwoodsedge.com^ +||marketing.vippetcare.com^ +||marketing.virginia.org^ +||marketing.virtual-images.com^ +||marketing.visailing.com^ +||marketing.visitabq.org^ +||marketing.visitannapolis.org^ +||marketing.visitannarbor.org^ +||marketing.visitaugusta.com^ +||marketing.visitbatonrouge.com^ +||marketing.visitbellevuewa.com^ +||marketing.visitbentonville.com^ +||marketing.visitbgky.com^ +||marketing.visitcasper.com^ +||marketing.visitcharlottesville.org^ +||marketing.visitchattanooga.com^ +||marketing.visitchesapeake.com^ +||marketing.visitchicagosouthland.com^ +||marketing.visitcookcounty.com^ +||marketing.visitcorpuschristi.com^ +||marketing.visitdenver.com^ +||marketing.visiteauclaire.com^ +||marketing.visitestespark.com^ +||marketing.visitfortwayne.com^ +||marketing.visitgreaterpalmsprings.com^ +||marketing.visitgreenvillesc.com^ +||marketing.visithamiltoncounty.com^ +||marketing.visitindy.com^ +||marketing.visitjamaica.com^ +||marketing.visitkingston.ca^ +||marketing.visitlex.com^ +||marketing.visitloscabos.travel^ +||marketing.visitlubbock.org^ +||marketing.visitmanisteecounty.com^ +||marketing.visitmdr.com^ +||marketing.visitmilwaukee.org^ +||marketing.visitmontrose.com^ +||marketing.visitmusiccity.com^ +||marketing.visitnapavalley.com^ +||marketing.visitnepa.org^ +||marketing.visitnewportbeach.com^ +||marketing.visitnorthplatte.com^ +||marketing.visitoakland.com^ +||marketing.visitomaha.com^ +||marketing.visitorlando.com^ +||marketing.visitpanamacitybeach.com^ +||marketing.visitpasadena.com^ +||marketing.visitpensacola.com^ +||marketing.visitphoenix.com^ +||marketing.visitraleigh.com^ +||marketing.visitrapidcity.com^ +||marketing.visitroanokeva.com^ +||marketing.visitsacramento.com^ +||marketing.visitsalisburync.com^ +||marketing.visitsaltlake.com^ +||marketing.visitsanantonio.com^ +||marketing.visitsanmarcos.com^ +||marketing.visitsarasota.org^ +||marketing.visitsmcsv.com^ +||marketing.visitsouthwalton.com^ +||marketing.visitspc.com^ +||marketing.visitspokane.com^ +||marketing.visittemeculavalley.com^ +||marketing.visittucson.org^ +||marketing.visitvancouverusa.com^ +||marketing.visitvirginiabeach.com^ +||marketing.visitwausau.com^ +||marketing.visitwichita.com^ +||marketing.visitwilliamsburg.com^ +||marketing.visitwilmingtonde.com^ +||marketing.visualskus.com^ +||marketing.voicefirstsolutions.com^ +||marketing.voiply.us^ +||marketing.voltexelectrical.co.nz^ +||marketing.voltexelectrical.com.au^ +||marketing.voxer.com^ +||marketing.vrijekavelsvathorst.nl^ +||marketing.vroozi.com^ +||marketing.wachsws.com^ +||marketing.wainscotsolutions.com^ +||marketing.waitrainer.com^ +||marketing.wallindustries.com^ +||marketing.wallstreetsystems.com^ +||marketing.washcochamber.com^ +||marketing.washington.org^ +||marketing.watchsystems.com^ +||marketing.watercannon.com^ +||marketing.wateriqtech.com^ +||marketing.watsonmortgagecorp.com^ +||marketing.wbbrokerage.com^ +||marketing.wbf.com^ +||marketing.wbm.com^ +||marketing.wealthcarecapital.com^ +||marketing.wealthhorizon.com^ +||marketing.weathersolve.com^ +||marketing.webdcmarketing.com^ +||marketing.webgruppen.no^ +||marketing.welending.com^ +||marketing.wellingtonwealthstrategies.com^ +||marketing.wesco.com.br^ +||marketing.whysymphony.com^ +||marketing.wildhorsepass.com^ +||marketing.willamettewines.com^ +||marketing.wilmingtonandbeaches.com^ +||marketing.windes.com^ +||marketing.wolfgordon.com^ +||marketing.worldlinkintegration.com^ +||marketing.worldnetpr.com^ +||marketing.wowrack.com^ +||marketing.wrightimc.com^ +||marketing.wsandco.com^ +||marketing.wtcutrecht.nl^ +||marketing.wvtourism.com^ +||marketing.xait.com^ +||marketing.xcenda.com^ +||marketing.xcess.nl^ +||marketing.xicato.com^ +||marketing.xportsoft.com^ +||marketing.xtralight.com^ +||marketing.yapmo.com^ +||marketing.yeovilaudi.co.uk^ +||marketing.yesmarketing.com^ +||marketing.ynsecureserver.net^ +||marketing.yongletape.averydennison.com^ +||marketing.youththink.net^ +||marketing.ytc.com^ +||marketing.zencos.com^ +||marketing.zenjuries.com^ +||marketing.zinniawealth.com^ +||marketing1.aiworldexpo.com^ +||marketing1.directimpactinc.com^ +||marketing1.leica-microsystems.com^ +||marketing1.neverfailgroup.com^ +||marketing2.absolutelybryce.com^ +||marketing2.channel-impact.com^ +||marketing2.globalpointofcare.abbott^ +||marketing2.leica-microsystems.com^ +||marketing2.newhomesource.com^ +||marketing2.technologyadvice.com^ +||marketing3.polarispacific.com^ +||marketing4.directimpactinc.com^ +||marketing6.directimpactinc.com^ +||marketingautomation.impexium.net^ +||marketingde.mti.com^ +||marketingemea.guidepoint.com^ +||marketinginfo.clutch.com^ +||marketingms.actonservice.com^ +||marketingus.hso.com^ +||markkinointi.kespro.com^ +||marsh.actonservice.com^ +||marshinsurance.actonservice.com^ +||mas.hronboard.me^ +||mas.marsh.com^ +||masternaut.actonservice.com^ +||matrix42.actonservice.com^ +||mbaco.actonservice.com^ +||mbainfo.ust.hk^ +||mbna.bruker.com^ +||mbns.bruker.com^ +||mbopt.bruker.com^ +||mbs.modernbuilderssupply.com^ +||mcw.actonservice.com^ +||mdfcrm.actonservice.com^ +||meanwellaustralia.actonservice.com^ +||meat.midanmarketing.com^ +||medhyg.actonservice.com^ +||media.claritylabsolutions.com^ +||media.elementsbehavioralhealth.com^ +||media.fsctrust.com^ +||media.gotham.com^ +||media.gstoneinc.com^ +||media.ignitium.com^ +||media.leahy-ifp.com^ +||media.pirtek.co.uk^ +||media.pirtek.de^ +||media.pirtek.nl^ +||media.polariswealth.net^ +||media.theartisansapproach.com^ +||mediacy.actonservice.com^ +||mediasolutions.netinsight.net^ +||mediasource.actonservice.com^ +||medisante.actonservice.com^ +||medtrainer.actonservice.com^ +||medxm1.actonservice.com^ +||member.usenix.org^ +||members.simplicity.coop^ +||membership.mortonarb.org^ +||merchant-mail.neosurf.com^ +||mesalabs.actonservice.com^ +||message.alldata.com^ +||metallic.actonservice.com^ +||metapack.actonservice.com^ +||meteachugood.holdmybeerconsulting.com^ +||metric.khkgears.us^ +||metrics.thesellingagency.com^ +||meylercapital.actonservice.com^ +||mfrmls.actonservice.com^ +||mg.mistrasgroup.com^ +||mhinvest.actonservice.com^ +||mhmp.bruker.com^ +||mhz-design.actonservice.com^ +||microfocus.qm-g.com^ +||microlise.actonservice.com^ +||micronetonline.actonservice.com^ +||microware.actonservice.com^ +||mie-solutions.actonservice.com^ +||mill-all.actonservice.com^ +||mimakiusa.actonservice.com^ +||missionrs.actonservice.com^ +||mkt-i.actonservice.com^ +||mkt.aderant.com^ +||mkt.animalsafety.neogen.com^ +||mkt.bluestate.co^ +||mkt.copernicusmd.com^ +||mkt.detechtion.com^ +||mkt.emea.neogen.com^ +||mkt.environmentsatwork.com^ +||mkt.foodsafety.neogen.com^ +||mkt.globalmentoring.com^ +||mkt.lifesciences.neogen.com^ +||mkt.marcom.neogen.com^ +||mktg.act-on.com^ +||mktg.aicipc.com^ +||mktg.alphawire.com^ +||mktg.bekapublishing.com^ +||mktg.destinationmarketing.org^ +||mktg.digineer.com^ +||mktg.jeffersonhealth.org^ +||mktg.laresdental.com^ +||mktg.marceldigital.com^ +||mktg.matssoft.com^ +||mktg.mecinc.com^ +||mktg.northwoodsoft.com^ +||mktg.rocklandmfg.com^ +||mktg.rtx.travel^ +||mktg.schlage.com^ +||mktg.senneca.com^ +||mktg.ummhealth.org^ +||mktg.xeniumhr.com^ +||mm.morrellinc.com^ +||mmarkhigh.actonservice.com^ +||mmc-ltd.actonservice.com^ +||moldex.actonservice.com^ +||more.socialflow.com^ +||moreinfo.onnowdigital.com^ +||moreinfo.powerpro360.com^ +||moreinfo.sdmyers.com^ +||morganfranklin.actonservice.com^ +||motion.kollmorgen.com^ +||motista.actonservice.com^ +||motorsports.locktonaffinity.net^ +||moxtra.actonservice.com^ +||mpc-co.actonservice.com^ +||mri.iradimed.com^ +||msbainfo.fbe.hku.hk^ +||mshs.actonservice.com^ +||msi.msigts.com^ +||msigbs.actonservice.com^ +||msitec.actonservice.com^ +||msufcu.actonservice.com^ +||mtracking.mhequipment.com^ +||multimedia.netplusentremont.ch^ +||mw-ind.actonservice.com^ +||mwa.meanwellaustralia.com.au^ +||my.bruker.com^ +||my.carolina.com^ +||my.exotravel.com^ +||my.igrafx.com^ +||mya.actonservice.com^ +||mycomm2.hackensackmeridian.org^ +||mydario.actonservice.com^ +||myexhibiteam.actonservice.com^ +||myretailmatch.actonservice.com^ +||naidileobram.actonservice.com^ +||nakisa.actonservice.com^ +||nanthealth.actonservice.com^ +||narc-dc.actonservice.com^ +||nccer.actonservice.com^ +||neathousepartners.actonservice.com^ +||nedasco.actonservice.com^ +||neosllc.actonservice.com^ +||netinsight.actonservice.com^ +||network.cogentco.com^ +||network.conterra.com^ +||network.lightpathfiber.com^ +||network.wintechnology.com^ +||newjersey-content.cresa.com^ +||news-info.gcgfinancial.com^ +||news.azcapitoltimes.com^ +||news.bestcompaniesgroup.com^ +||news.bpsecinc.com^ +||news.bridgetowermedia.com^ +||news.brokersalliance.com^ +||news.caamp.org^ +||news.chiefexecutive.net^ +||news.cmatcherlink.com^ +||news.colormagazine.com^ +||news.cpbj.com^ +||news.dailyreporter.com^ +||news.djcoregon.com^ +||news.finance-commerce.com^ +||news.journalrecord.com^ +||news.libn.com^ +||news.lvb.com^ +||news.masslawyersweekly.com^ +||news.mclaren.org^ +||news.mecktimes.com^ +||news.milawyersweekly.com^ +||news.molawyersmedia.com^ +||news.nada.org^ +||news.neworleanscitybusiness.com^ +||news.njbiz.com^ +||news.nydailyrecord.com^ +||news.petage.com^ +||news.rbj.net^ +||news.scbiznews.com^ +||news.scmanufacturingconference.com^ +||news.sp2.org^ +||news.strategiccfo360.com^ +||news.strategiccio360.com^ +||news.thedailyrecord.com^ +||news.thedolancompany.com^ +||news.valawyersweekly.com^ +||news.verimatrix.com^ +||newsletter.bcautoencheres.fr^ +||newsletter.davey.com^ +||newsletter.visitnc.com^ +||ngs.actonservice.com^ +||nordicmarketing.sedgwick.com^ +||nordics.sharpmarketing.eu^ +||northplains.actonservice.com^ +||northsidemediagroup.actonservice.com^ +||northwire.actonservice.com^ +||nova-healthcare.actonservice.com^ +||novarecoverycenter.actonservice.com^ +||now.infinitecampus.com^ +||now.tana.fi^ +||nparallel.actonservice.com^ +||nra.locktonaffinity.net^ +||nsfocus.actonservice.com^ +||nu.esri.nl^ +||nurture.mylivingvoice.com^ +||nuvi.actonservice.com^ +||oasisadvantage.actonservice.com^ +||oasismarketing.oasisadvantage.com^ +||objectpartners.actonservice.com^ +||oceanair.actonservice.com^ +||oceanautomotive.actonservice.com^ +||offers.hddistributors.com^ +||offers.jazelauto.com^ +||offers.storagepipe.com^ +||omadi.actonservice.com^ +||omgcreative.actonservice.com^ +||on.leagueapps.com^ +||on.librestream.com^ +||oncoclinicas.actonservice.com^ +||oncourselearning.actonservice.com^ +||one-workspace.matrix42.com^ +||onesourcebackground.actonservice.com^ +||online.siteboosters.de^ +||onlineis.actonservice.com^ +||onlinesellerenforcement.vorys.com^ +||onlinevacationcenter.actonservice.com^ +||opoffice.actonservice.com^ +||opportunity.businessbroker.net^ +||opportunityfund.actonservice.com^ +||opsveda.actonservice.com^ +||optis-world.actonservice.com^ +||optout.oracle-zoominfo-notice.com^ +||orbis.actonservice.com^ +||oregonstate.actonservice.com^ +||orionmarketing.actonservice.com^ +||orlmarketing.nfp.com^ +||ottawa-content.cresa.com^ +||outreach.allmy-data.com^ +||outreach.connectednation.org^ +||outreach.crossref.org^ +||outreach.kansashealthsystem.com^ +||outreach.semaconnect.com^ +||outreach.successforall.org^ +||outreach.teex.info^ +||outreach.veritivcorp.com^ +||pacstainless.actonservice.com^ +||page.asraymond.com^ +||page.ephesus.cooperlighting.com^ +||page.evergage.com^ +||page.ggled.net^ +||page.hpcspecialtypharmacy.com^ +||page.irco.com^ +||page.northstateconsultingllc.com^ +||page.vital4.net^ +||page1solutions.actonservice.com^ +||pages.aureon.com^ +||pages.cobweb.com^ +||pages.crd.com^ +||pages.distributionstrategy.com^ +||pages.exterro.com^ +||pages.jobaline.com^ +||pages.rategain.com^ +||pages.srsmith.com^ +||pages.telemessage.com^ +||pages.uila.com^ +||pages.vuzion.cloud^ +||pages.zenefits.com^ +||paintersusainc.actonservice.com^ +||pairin.actonservice.com^ +||pal-v.actonservice.com^ +||paladion.actonservice.com^ +||palramamericas.actonservice.com^ +||parallel6.actonservice.com^ +||partner.hubinternational.com^ +||partnership.evolenthealth.com^ +||patientpay.actonservice.com^ +||pawsplus.actonservice.com^ +||paydashboard.actonservice.com^ +||paynewest.actonservice.com^ +||pbc.programbrokerage.com^ +||pcci.pccinnovation.org^ +||pccipieces.actonservice.com^ +||people.mbtionline.com^ +||peoplehr.actonservice.com^ +||performantcorp.actonservice.com^ +||permission.au.actonservice.com^ +||phdinc.actonservice.com^ +||philadelphia-content.cresa.com^ +||phionline.actonservice.com^ +||phoenix-content.cresa.com^ +||photography.hursey.com^ +||phsmobile.actonservice.com^ +||phyins.actonservice.com^ +||picarro.actonservice.com^ +||pimpoint.inriver.com^ +||pipelinepub.actonservice.com^ +||pitcher.actonservice.com^ +||pivotpointsecurity.actonservice.com^ +||pl.sharpmarketing.eu^ +||pla.pearlinsurance.com^ +||plans.ceteraretirement.com^ +||ple.pearlinsurance.com^ +||pll.pearlinsurance.com^ +||plo.pearlinsurance.com^ +||polypak.actonservice.com^ +||portal.dcgone.com^ +||portal.insight.maruedr.com^ +||possibilities.theajinetwork.com^ +||postgraduate.smu.edu.sg^ +||postgraduate2.smu.edu.sg^ +||powerup.rsaworks.com^ +||ppadv.actonservice.com^ +||practicemanagement.securitiesamerica.com^ +||premiercio.actonservice.com^ +||primavera.actonservice.com^ +||privateclient.hubinternational.com^ +||processserver.abclegal.com^ +||product.cel-fi.com^ +||proffiliatesinc.actonservice.com^ +||progressivedev.actonservice.com^ +||promo.aprima.com^ +||promo.ewellix.com^ +||promo.reborncabinets.com^ +||promo.rmidirect.com^ +||promo.skf.com^ +||promos.sanmarcanada.com^ +||promos.trustedtours.com^ +||promotions.stationcasinos.com^ +||promotionspr.actonservice.com^ +||propay.actonservice.com^ +||properties.insiterealestate.com^ +||prospex.actonservice.com^ +||protapes.actonservice.com^ +||protosell.actonservice.com^ +||providentcrm.actonservice.com^ +||prowareness.actonservice.com^ +||prudential.distribution.team.prudential.co.uk^ +||ptw-i.actonservice.com^ +||publications.nomination.fr^ +||publicschoolworks.actonservice.com^ +||pulse.munsonhealthcare.org^ +||purpletalk.actonservice.com^ +||pushspring.actonservice.com^ +||pyrexar.actonservice.com^ +||q88.actonservice.com^ +||qc.qualicocommunitieswinnipeg.com^ +||qm-g.actonservice.com^ +||questintegrity.actonservice.com^ +||questions.theanswerco.com^ +||questrominfo.bu.edu^ +||quidel.actonservice.com^ +||quinceimaging.actonservice.com^ +||quirklogic.actonservice.com^ +||qumulo.actonservice.com^ +||radiometer.actonservice.com^ +||rakuten.actonservice.com^ +||rarnational.raisingareader.org^ +||rbis-solutions.averydennison.com^ +||readingpartners.actonservice.com^ +||readytrainingonline.actonservice.com^ +||realcomm.actonservice.com^ +||realestate.collinscu.org^ +||realize.goldenspiralmarketing.com^ +||realogic.actonservice.com^ +||realogicinc.actonservice.com^ +||recoverypoint.actonservice.com^ +||redbooks.actonservice.com^ +||redclassic.actonservice.com^ +||redlion.actonservice.com^ +||redthreadmarketing.actonservice.com^ +||redvector.actonservice.com^ +||rehmann.actonservice.com^ +||reico.actonservice.com^ +||reliable.elgas.com.au^ +||remarketing.oncourselearning.com^ +||remine.actonservice.com^ +||reppify.actonservice.com^ +||research.insidesales.com^ +||resolution.taxdefensenetwork.com^ +||resources.acarasolutions.com^ +||resources.acarasolutions.in^ +||resources.activatems.com^ +||resources.aldec.com^ +||resources.biz-tech-insights.com^ +||resources.broadleafresults.com^ +||resources.davey.com^ +||resources.digitcom.ca^ +||resources.faronics.com^ +||resources.harneys.com^ +||resources.linengineering.com^ +||resources.lumestrategies.com^ +||resources.recordpoint.com^ +||resources.sightlogix.com^ +||resources.superiorgroup.in^ +||resources.talentrise.com^ +||results.sierrapiedmont.com^ +||retirementliving.actsretirement.org^ +||retirementservices.firstallied.com^ +||reverb.digitalviscosity.com^ +||revgroup.actonservice.com^ +||rhahvac.actonservice.com^ +||rhinowebgroup.actonservice.com^ +||rightanswers.actonservice.com^ +||riscitsolutions.actonservice.com^ +||rmhoffman.actonservice.com^ +||roiscs.actonservice.com^ +||rollbar.actonservice.com^ +||romotur.actonservice.com^ +||root9b.actonservice.com^ +||roxtec.actonservice.com^ +||rsvp.markettraders.com^ +||rtvision.actonservice.com^ +||rumsey.actonservice.com^ +||ruw.roanokeunderwriting.com^ +||rxaap.actonservice.com^ +||rystadenergy.actonservice.com^ +||rzmarketing.realization.com^ +||s.usenix.org^ +||saas.stratitude.com^ +||sabic.actonservice.com^ +||saegissolutions.actonservice.com^ +||sales.avis.com^ +||sales.northeastind.com^ +||sales.texturacorp.com^ +||sales.virtualpbx.com^ +||salesandmarketing.aitcfis.com^ +||samarketing.sedgwick.com^ +||sc.actonservice.com^ +||scalematrix.actonservice.com^ +||schinnerer.actonservice.com^ +||science.schoolspecialtynews.com^ +||scispg.smu.edu.sg^ +||scmarketing.colliers.com^ +||scorebuddy.actonservice.com^ +||se.netpartnering.com^ +||seahorseinfo.agilent.com^ +||sealingdev.actonservice.com^ +||seamarketny.actonservice.com^ +||seb.sharpmarketing.eu^ +||securityins.actonservice.com^ +||sedgwickpooling.sedgwick.com^ +||segra.actonservice.com^ +||senior-systems.actonservice.com^ +||seniorliving.artisseniorliving.com^ +||seniorliving.atriumatnavesink.org^ +||seniorliving.blakehurstlcs.com^ +||seniorliving.blakeliving.com^ +||seniorliving.brandonwildelcs.com^ +||seniorliving.broadviewseniorliving.org^ +||seniorliving.capitalmanor.com^ +||seniorliving.casadelascampanas.com^ +||seniorliving.claremontplace.com^ +||seniorliving.covia.org^ +||seniorliving.cypressplaceseniorliving.com^ +||seniorliving.cypressvillageretirement.com^ +||seniorliving.eastridgeatcutlerbay.com^ +||seniorliving.essexmeadows.com^ +||seniorliving.fellowshipsl.org^ +||seniorliving.foxhillvillage.com^ +||seniorliving.freedomplazafl.com^ +||seniorliving.freedompointefl.com^ +||seniorliving.freedomsquarefl.com^ +||seniorliving.friendshipvillageaz.com^ +||seniorliving.friendsview.org^ +||seniorliving.fvbrandywine.com^ +||seniorliving.fvhollandseniorliving.com^ +||seniorliving.galleriawoodsseniorliving.com^ +||seniorliving.greystonecommunities.com^ +||seniorliving.heronskey.org^ +||seniorliving.jkv.org^ +||seniorliving.johnknox.com^ +||seniorliving.lakeportseniorliving.com^ +||seniorliving.lakeseminoleseniorliving.com^ +||seniorliving.laurelcirclelcs.com^ +||seniorliving.liveatwhitestone.org^ +||seniorliving.marshesofskidaway.com^ +||seniorliving.merionevanston.com^ +||seniorliving.monroevillageonline.org^ +||seniorliving.mooringsatlewes.org^ +||seniorliving.morningsideoffullerton.com^ +||seniorliving.mrcaff.org^ +||seniorliving.parkplaceelmhurst.com^ +||seniorliving.peacevillage.org^ +||seniorliving.plantationvillagerc.com^ +||seniorliving.plymouthplace.org^ +||seniorliving.presvillagenorth.org^ +||seniorliving.querenciabartoncreek.com^ +||seniorliving.regencyoaksseniorliving.com^ +||seniorliving.sagewoodlcs.com^ +||seniorliving.sandhillcove.com^ +||seniorliving.santamartaretirement.com^ +||seniorliving.seasonsretirement.com^ +||seniorliving.sinairesidences.com^ +||seniorliving.smithcrossing.org^ +||seniorliving.southportseniorliving.com^ +||seniorliving.springpointsl.org^ +||seniorliving.stoneridgelcs.com^ +||seniorliving.summitvista.com^ +||seniorliving.thechesapeake.org^ +||seniorliving.theglebe.org^ +||seniorliving.theglenatscrippsranch.com^ +||seniorliving.theheritagelcs.com^ +||seniorliving.theridgecottonwood.com^ +||seniorliving.theridgepinehurst.com^ +||seniorliving.theridgeseniorliving.com^ +||seniorliving.theterracesatbonitasprings.com^ +||seniorliving.thewoodlandsatfurman.org^ +||seniorliving.timberridgelcs.com^ +||seniorliving.trilliumwoodslcs.com^ +||seniorliving.vantagehouse.org^ +||seniorliving.villageatgleannloch.com^ +||seniorliving.welcometomonarchlanding.com^ +||seniorliving.welcometosedgebrook.com^ +||seniorliving.westminsteraustintx.org^ +||seniorliving.whitneycenter.com^ +||seniorliving.winchestergardens.com^ +||seniorliving.wyndemerelcs.com^ +||seniors.fairportbaptisthomes.org^ +||servcliente.marathon-sports-ec.com^ +||services.releasepoint.com^ +||servicing.unitedautocredit.net^ +||setaram.actonservice.com^ +||setonhill.actonservice.com^ +||sffirecu.actonservice.com^ +||sfsinfo.sabic.com^ +||sg.lucanet.com^ +||shelbypublishing.actonservice.com^ +||shipsmarter.idrivelogistics.com^ +||shop.iwantclips.com^ +||simple.siegelgale.com^ +||simscale.actonservice.com^ +||singleplatform.actonservice.com^ +||site.newzstand.com^ +||sitel.actonservice.com^ +||sjms.actonservice.com^ +||skf.actonservice.com^ +||skillshouse.actonservice.com^ +||slashnext.actonservice.com^ +||smartworksforme.actonservice.com^ +||smf.southernmetalfab.com^ +||smu.actonservice.com^ +||smuengage.smu.edu.sg^ +||snd.freshstartnews.com^ +||soccajoeys.actonservice.com^ +||solar.sharpmarketing.eu^ +||solidscape.actonservice.com^ +||solmax.actonservice.com^ +||solutions.a-1freeman.com^ +||solutions.amigraphics.com^ +||solutions.bwtek.com^ +||solutions.cmsa.org^ +||solutions.coreandmain.com^ +||solutions.getfluid.com^ +||solutions.intactstudio.ca^ +||solutions.kep-technologies.com^ +||solutions.lumosnetworks.com^ +||solutions.multitone.com^ +||solutions.oshaeducationcenter.com^ +||solutions.sertifi.com^ +||solutions.servometer.com^ +||solutions.snapfi.com^ +||solutions.toolepeet.com^ +||solutions.wellspring.com^ +||soneticscorp.actonservice.com^ +||sosintl.actonservice.com^ +||sotelsystems.actonservice.com^ +||southwest.pgaofamericagolf.com^ +||spa.admissions.ucdenver.edu^ +||spamtitan.actonservice.com^ +||spark.thelyst.com^ +||spec-sensors.actonservice.com^ +||spinnakermgmt.actonservice.com^ +||srmy.srglobal.com^ +||srsa.srglobal.com^ +||srsg.srglobal.com^ +||sruk.srglobal.com^ +||ssfllp.actonservice.com^ +||sswhitedental.actonservice.com^ +||stahl.actonservice.com^ +||stanburns.actonservice.com^ +||start.mediware.com^ +||start.mybillingtree.com^ +||start.ptl.org^ +||start.sharpclinical.com^ +||start.spark-thinking.com^ +||steel.newmill.com^ +||stentel.actonservice.com^ +||stormwind.actonservice.com^ +||strategycompanion.actonservice.com^ +||studentadvantage.actonservice.com^ +||subscriber.franchiseinsights.com^ +||subscriber.smallbusinessstartup.com^ +||success.act-on.com^ +||success.azzure-it.com^ +||success.benico.com^ +||success.ebmcatalyst.com^ +||success.ebmsoftware.com^ +||success.etgroup.ca^ +||success.getfluid.com^ +||success.intelligentdemand.com^ +||success.mapcom.com^ +||success.rhb.com^ +||success.vertigis.com^ +||success.vertigisstudio.com^ +||sugabyte.actonservice.com^ +||superiorgroup.actonservice.com^ +||support.flex.com^ +||support2.flex.com^ +||support3.flex.com^ +||svmarketing.destinationtoronto.com^ +||swim2000.actonservice.com^ +||symbio.actonservice.com^ +||synapse-da.actonservice.com^ +||synbiobeta.actonservice.com^ +||systancia-scp.actonservice.com^ +||system.nefiber.com^ +||t.ao.argyleforum.com^ +||t.ao.consumerfinancereport.com^ +||t.ao.walletjoy.com^ +||t.oticon.com^ +||tablesafe.actonservice.com^ +||target.actonservice.com^ +||targetrecruitllc.actonservice.com^ +||targetstore.actonservice.com^ +||taylorshellfish.actonservice.com^ +||teach.graduateprogram.org^ +||team.moxtra.com^ +||teamhodges.hodgesualumniandfriends.com^ +||techadv.actonservice.com^ +||technical.kyzen.com^ +||technologyadvice.actonservice.com^ +||techservices.trapptechnology.com^ +||telamoncom.actonservice.com^ +||tele2.actonservice.com^ +||telsmith.actonservice.com^ +||telstraphonewords.actonservice.com^ +||tengointernet.actonservice.com^ +||teracom.actonservice.com^ +||terradatum.actonservice.com^ +||test.actonservice.com^ +||testforce.actonservice.com^ +||teyourmarketing.trungaleegan.com^ +||thebasiccompanies.actonservice.com^ +||thebdx.actonservice.com^ +||thecea.actonservice.com^ +||thequickbooksteam.intuit.ca^ +||thesearchagency.actonservice.com^ +||thesuccessstars.actonservice.com^ +||think.phdinc.com^ +||thomsonreuters.actonservice.com^ +||tickets.smu.edu^ +||ticomix.actonservice.com^ +||timing.whenandhowagency.com^ +||tls.thelibrarystore.com^ +||tmlt.actonservice.com^ +||toonboom.actonservice.com^ +||toonboomanimation.actonservice.com^ +||toronto-content.cresa.com^ +||touch.multitaction.com^ +||touch.thenavisway.com^ +||touchtown.actonservice.com^ +||tourism.visitorlando.com^ +||towerfcu.actonservice.com^ +||townsquareinteractive.actonservice.com^ +||tpe.theparticipanteffect.com^ +||tqhosting.actonservice.com^ +||track.healthcare-distribution.com^ +||tracking.experiencescottsdale.com^ +||tradeshows.aem.org^ +||training.indigobusiness.co.uk^ +||transportation.external.conduent.com^ +||transportation.external.xerox.com^ +||trappcloudservices.trapptechnology.com^ +||trapptech.actonservice.com^ +||travel.caradonna.com^ +||travel.cruisesforless.com^ +||travel.ec-ovc.com^ +||travel.onlinevacationcenter.com^ +||travelmarketreport.actonservice.com^ +||treeoflifecenterus.actonservice.com^ +||triadtechnologies.actonservice.com^ +||triconah.actonservice.com^ +||trinityconsultants.actonservice.com^ +||triton.actonservice.com^ +||triumph.actonservice.com^ +||truefaced.actonservice.com^ +||truemfg.actonservice.com^ +||trust.mitutoyo.com^ +||trust.titanhq.com^ +||trustid.actonservice.com^ +||ttcu-union.actonservice.com^ +||ttmc.actonservice.com^ +||tvppa.actonservice.com^ +||uaemarketing.sedgwick.com^ +||ugmarketing.smu.edu.sg^ +||uk-marketing.roxtec.com^ +||uk.sharpmarketing.eu^ +||ukmarketing.sedgwick.com^ +||unifilabs.actonservice.com^ +||unitedautocredit.actonservice.com^ +||unitusccu.actonservice.com^ +||updates.aem.org^ +||updates.conexpoconagg.com^ +||us-marketing.roxtec.com^ +||us.lucanet.com^ +||us.onkyo.actonservice.com^ +||usaprogrip.actonservice.com^ +||usb-vna.coppermountaintech.com^ +||ussco-dev.actonservice.com^ +||utexas.actonservice.com^ +||value.kfcu.org^ +||velocitypartners.actonservice.com^ +||veoci.actonservice.com^ +||vertexcs.actonservice.com^ +||vetsource.actonservice.com^ +||vhans.siege-corp.com^ +||via.ssl.holdmybeerconsulting.com^ +||video.funnelbox.com^ +||vip.gophersport.com^ +||visit.monroecollege.edu^ +||visitorlando.actonsoftware.com^ +||vitalimages.actonservice.com^ +||vitalmedia.actonservice.com^ +||viu.actonservice.com^ +||viu.viubyhub.com^ +||vividcortex.actonservice.com^ +||voiply.actonservice.com^ +||vonazon.actonservice.com^ +||vt.mak.com^ +||warfieldtech.actonservice.com^ +||warrenfcu.actonservice.com^ +||washlaundry.actonservice.com^ +||wealthcarecapital.actonservice.com^ +||weare.ballymoregroup.com^ +||web.consolid8.com.au^ +||web.eisenhowerhealthnews.org^ +||web.iru.org^ +||web.vonazon.com^ +||web.yourerc.com^ +||weidenhammer.actonservice.com^ +||welcome.patientmatters.com^ +||welcome.qualicoliving.com^ +||welcome.visitthelandmark.com^ +||wernerelectric.actonservice.com^ +||westevents.presidio.com^ +||why.hdvest.com^ +||wissen.sage.de^ +||withyou.shorr.com^ +||woodruffsweitzer.actonservice.com^ +||woodtone.actonservice.com^ +||workspacesolutions.gos1.com^ +||worldnetpr.actonservice.com^ +||wsandco.actonservice.com^ +||ww2.ads-on-line.com^ +||ww2.businessgrouphealth.org^ +||ww2.vinhwellness.com^ +||www.bcaeurope.eu^ +||www.consulting.ramboll.com^ +||www.healthcare-distribution.com^ +||www.marketing.aftermath.com^ +||www.marketing.altn.com^ +||www.marketing.linguamatics.com^ +||www.paydashboardinfo.com^ +||www.wescam.info^ +||www1.cynergysolutions.net^ +||www1.mcsrentalsoftware.com^ +||www1.symmons.com^ +||www2.2ndgear.com^ +||www2.acsvalves.com^ +||www2.arvig.com^ +||www2.bimobject.com^ +||www2.bobcad.com^ +||www2.citizensclimatelobby.org^ +||www2.cremarc.com^ +||www2.dws-global.com^ +||www2.esri.se^ +||www2.extensis.com^ +||www2.quickbooks.co.uk^ +||www2.senetas.com^ +||www2.simplilearn.com^ +||www2.timecommunications.biz^ +||www2.tyrens.se^ +||www2.unit4.nl^ +||www2.yellowspring.co.uk^ +||www2.zacco.com^ +||www3.bimobject.com^ +||www3.motumb2b.com^ +||www3.strsoftware.com^ +||www4.bimobject.com^ +||www4.qualigence.com^ +||www5.bimobject.com^ +||www8.bimobject.com^ +||xait.actonservice.com^ +||xseedwealth.actonservice.com^ +||yourbrandlive.actonservice.com^ +||yourcare.pennstatehealth.org^ +||yourerc.actonservice.com^ +||yourfuture.walsh.edu^ +||yourhealth.bassett.org^ +||yourhealth.bassetthealthnews.org^ +||yourhealth.cooperhealth.org^ +||yourhealth.sahealth.com^ +||yourhealth.wellness.providence.org^ +||youronestopshop.themagnetgroup.com^ +||yoursolution.electrified.averydennison.com^ +||yoursolution.tapes.averydennison.com^ +||ypowpo.actonservice.com^ +||zenedge.actonservice.com^ +||zoominfo.actonservice.com^ +||zuidema.actonservice.com^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_otto.txt *** +||prod.nitrosniffer.ottogroup.io^ +||sniffer.nitro-production.otto.boreus.de^ +||sniffer.nitro-test-extern.otto.boreus.de^ +||te.ackermann.ch^ +||te.ambria.de^ +||te.baur.de^ +||te.creation-l.de^ +||te.frankonia.at^ +||te.frankonia.com^ +||te.frankonia.de^ +||te.frankoniamoda.ch^ +||te.heine-shop.nl^ +||te.heine.at^ +||te.heine.ch^ +||te.heine.de^ +||te.helline.fr^ +||te.imwalking.de^ +||te.jelmoli-shop.ch^ +||te.limango.de^ +||te.mirapodo.de^ +||te.mytoys.de^ +||te.nitro-production.otto.boreus.de^ +||te.nitro-test-extern.otto.boreus.de^ +||te.otto.de^ +||te.ottoversand.at^ +||te.quelle.de^ +||te.sheego.de^ +||te.sieh-an.at^ +||te.sieh-an.ch^ +||te.sieh-an.de^ +||te.universal.at^ +||te.waeschepur.de^ +||te.witt-international.cz^ +||te.witt-international.nl^ +||te.witt-international.sk^ +||te.witt-weiden.at^ +||te.witt-weiden.ch^ +||te.witt-weiden.de^ +||te.yomonda.de^ +||te.your-look-for-less.nl^ +||te.your-look-for-less.se^ +||test-extern.nitrosniffer.ottogroup.io^ +||tp.ackermann.ch^ +||tp.ambria.de^ +||tp.baur.de^ +||tp.creation-l.de^ +||tp.frankonia.at^ +||tp.frankonia.com^ +||tp.frankonia.de^ +||tp.frankoniamoda.ch^ +||tp.heine-shop.nl^ +||tp.heine.at^ +||tp.heine.ch^ +||tp.heine.de^ +||tp.imwalking.de^ +||tp.jelmoli-shop.ch^ +||tp.limango.de^ +||tp.mirapodo.de^ +||tp.mytoys.de^ +||tp.otto.de^ +||tp.ottoversand.at^ +||tp.quelle.de^ +||tp.sheego.de^ +||tp.sieh-an.at^ +||tp.sieh-an.ch^ +||tp.sieh-an.de^ +||tp.universal.at^ +||tp.waeschepur.de^ +||tp.witt-international.cz^ +||tp.witt-international.nl^ +||tp.witt-international.sk^ +||tp.witt-weiden.at^ +||tp.witt-weiden.ch^ +||tp.witt-weiden.de^ +||tp.yomonda.de^ +||tp.your-look-for-less.nl^ +||tp.your-look-for-less.se^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_commanders-act.txt *** +||acquisition.klm.com^ +||configure.adlermode.com^ +||data.auchandirect.fr^ +||data.decathlon.co.uk^ +||data.decathlon.de^ +||data.decathlon.es^ +||data.decathlon.fr^ +||data.decathlon.it^ +||data.decathlon.pl^ +||data.ouigo.com^ +||data.ricaud.com^ +||data.ubi.com^ +||data.wptag.net^ +||logger.yp.ca^ +||sales.disneylandparis.com^ +||tag.boulanger.fr^ +||tagcommander.laredoute.be^ +||tagcommander.laredoute.ch^ +||tc.europcar.com.au^ +||tc.europcar.com^ +||tc.europcar.de^ +||tcdata.fnac.com^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_ingenious-technologies.txt *** +||0.net.easyjet.com^ +||125.net.jumia.co.ke^ +||176.net.jumia.ma^ +||63-217-112-145.static.pccwglobal.net.iberostar.com^ +||68-175.net.jumia.co.ke^ +||69-74.net.jumia.sn^ +||71-177.net.jumia.ma^ +||admin.net.fidorbank.uk^ +||af.eficads.com^ +||affiliate.logitravel.com^ +||ai.net.anwalt.de^ +||ak-br-cdn.kwai.net.iberostar.com^ +||akv2-br-cdn.kwai.net.iberostar.com^ +||ali-pro-origin-pull.kwai.net.iberostar.com^ +||ali-pro-pull.kwai.net.iberostar.com^ +||amahami.net.anwalt.de^ +||anaconda.net.anwalt.de^ +||analytics.net.dz.jumia.com^ +||api.apiok.net.iberostar.com^ +||app.chat.global.xiaomi.net.iberostar.com^ +||appfloor.appcpi.net.iberostar.com^ +||apress.efscle.com^ +||arch.net.jumia.ug^ +||atl-b24-link.ip.twelve99.net.iberostar.com^ +||aws-br-cdn.kwai.net.iberostar.com^ +||aws-br-pic.kwai.net.iberostar.com^ +||bdtheque.net.jumia.com.gh^ +||bolt-gcdn.sc-cdn.net.iberostar.com^ +||bruny.net.anwalt.de^ +||bs-pro-origin-pull.kwai.net.iberostar.com^ +||cast.net.anwalt.de^ +||cdn.net.dz.jumia.com^ +||cdn.net.elogia.net^ +||cppm-kc2.net.jumia.ci^ +||csr11.net.asambeauty.com^ +||cust01-cucm-sub-07-cl6.int.net.jumia.ug^ +||dc01p-net-sslvpn0-ra.net.jumia.com.gh^ +||dclnxirp001cou.net.jumia.co.tz^ +||dev-cenam-mobilefirst.tmx-internacional.net.iberostar.com^ +||dit.whatsapp.net.iberostar.com^ +||dls-b23-link.ip.twelve99.net.iberostar.com^ +||dpm.demdex.net.iberostar.com^ +||dst05lp2.net.mydays.de^ +||edge-mobile-static.azureedge.net.iberostar.com^ +||ei-api.testlb-gwy.easyjet.com.edgekey.net.easyjet.com^ +||ellypsio.net.jumia.com.ng^ +||eniac.net.jumia.com.gh^ +||external-bos5-1.xx.fbcdn.net.iberostar.com^ +||external.fpbc1-1.fna.fbcdn.net.iberostar.com^ +||find.api.micloud.xiaomi.net.iberostar.com^ +||fse.net.anwalt.de^ +||ftwnwght.net.anwalt.de^ +||fulmar.net.anwalt.de^ +||g-br-cdn.kwai.net.iberostar.com^ +||g-fallback.whatsapp.net.iberostar.com^ +||g.whatsapp.net.iberostar.com^ +||gea-exchange-03.net.jumia.ug^ +||ginmon.efscle.com^ +||instagram.xx.fbcdn.net.iberostar.com^ +||ipv4-c006-mid001-telmex-isp.1.oca.nflxvideo.net.iberostar.com^ +||ipv4-c024-mia006-ix.1.oca.nflxvideo.net.iberostar.com^ +||ipv4-cs.intsig.net.iberostar.com^ +||jkanime.net.iberostar.com^ +||kernenergie.efscle.com^ +||lozano.net.anwalt.de^ +||maeketing.net.gafas.es^ +||mandant.net.anwalt.de^ +||marketing.net.asambeauty.com^ +||marketing.net.beate-uhse-movie.com^ +||marketing.net.brillen.com^ +||marketing.net.brillen.pl^ +||marketing.net.daraz.lk^ +||marketing.net.daraz.pk^ +||marketing.net.elogia.net^ +||marketing.net.fidor.de^ +||marketing.net.gafas.es^ +||marketing.net.home24.at^ +||marketing.net.home24.be^ +||marketing.net.home24.de^ +||marketing.net.home24.fr^ +||marketing.net.home24.nl^ +||marketing.net.iberostar.com^ +||marketing.net.idealo-partner.com^ +||marketing.net.jumia.co.ke^ +||marketing.net.jumia.com.gh^ +||marketing.net.jumia.com.ng^ +||marketing.net.jumia.ma^ +||marketing.net.occhiali24.it^ +||marketing.net.vsgamers.es^ +||marketing.net.x24factory.com^ +||marketing.tr.netsalesmedia.pl^ +||mc2o133jkwu19fv9.net.fidor.de^ +||mcfeely.net.mydays.de^ +||mdtnjvcsdbc02-eth1-0.net.mydays.de^ +||media-atl3-1.cdn.whatsapp.net.iberostar.com^ +||media-cdg4-1.cdn.whatsapp.net.iberostar.com^ +||media.fmid5-1.fna.whatsapp.net.iberostar.com^ +||mellamanjorge.net.anwalt.de^ +||mhbhwilson1.net.mydays.de^ +||mholland.net.anwalt.de^ +||mmg.whatsapp.net.iberostar.com^ +||mobile-events.eservice.emarsys.net.iberostar.com^ +||mohamed.net.anwalt.de^ +||naoforge.net.jumia.com.ng^ +||nbcxa65t001z.net.jumia.ug^ +||neoncsr21.net.anwalt.de^ +||net.24-ads.com^ +||net.brillen.de^ +||net.cadeautjes.nl^ +||net.contorion.de^ +||net.daraz.com.bd^ +||net.daraz.com^ +||net.deine-arena.de^ +||net.fashionsisters.de^ +||net.home24.ch^ +||net.home24.com^ +||net.home24.it^ +||net.iberia.com^ +||net.jumia.com.eg^ +||net.jumia.com^ +||net.mydays.ch^ +||net.shop.com.mm^ +||net.steiner-vision.de^ +||net.tradeers.de^ +||net.voopter.com.br^ +||net.zooroyal.de^ +||nsm.tr.netsalesmedia.pl^ +||p16-tiktokcdn-com.akamaized.net.iberostar.com^ +||partner.net.idealo-partner.com^ +||partner.portal.fidormarket.com^ +||partner.service.belboon.com^ +||phpmyadmin.toolmonger.net.jumia.co.tz^ +||pny.net.penny.de^ +||prime.net.jumia.co.tz^ +||pvn.rewe.de^ +||r.akipam.com^ +||r.jakuli.com^ +||r.lafamo.com^ +||r.niwepa.com^ +||r.powuta.com^ +||rbcore-wlc-3.net.jumia.co.ke^ +||renaultbankdirekt.efscle.com^ +||report.appmetrica.yandex.net.iberostar.com^ +||resolver.msg.global.xiaomi.net.iberostar.com^ +||router28.net.anwalt.de^ +||s010.net.jumia.sn^ +||samia.net.anwalt.de^ +||schwaebischhall.efscle.com^ +||scontent-atl3-2.xx.fbcdn.net.iberostar.com^ +||scontent-cdg4-1.xx.fbcdn.net.iberostar.com^ +||scontent-cdg4-2.xx.fbcdn.net.iberostar.com^ +||scontent.fpbc1-2.fna.fbcdn.net.iberostar.com^ +||scontent.xx.fbcdn.net.iberostar.com^ +||server2.www1.dr.goldenserviceawards.net.jumia.co.ke^ +||shhoix0fuonj0hz6.net.fidor.de^ +||sonar6-akl1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-ams2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-arn2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-atl3-1.xx.fbcdn.net.iberostar.com^ +||sonar6-bcn1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-bkk1-2.xx.fbcdn.net.iberostar.com^ +||sonar6-bog2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-bom1-2.xx.fbcdn.net.iberostar.com^ +||sonar6-bru2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-ccu1-2.xx.fbcdn.net.iberostar.com^ +||sonar6-cdg4-1.xx.fbcdn.net.iberostar.com^ +||sonar6-cdg4-2.xx.fbcdn.net.iberostar.com^ +||sonar6-cdg4-3.xx.fbcdn.net.iberostar.com^ +||sonar6-cgk1-3.xx.fbcdn.net.iberostar.com^ +||sonar6-cph2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-cpt1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-del2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-den4-1.xx.fbcdn.net.iberostar.com^ +||sonar6-dfw5-1.xx.fbcdn.net.iberostar.com^ +||sonar6-dfw5-2.xx.fbcdn.net.iberostar.com^ +||sonar6-doh1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-dub4-1.xx.fbcdn.net.iberostar.com^ +||sonar6-eze1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-fco2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-fml20-1.xx.fbcdn.net.iberostar.com^ +||sonar6-for1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-fra3-1.xx.fbcdn.net.iberostar.com^ +||sonar6-fra3-2.xx.fbcdn.net.iberostar.com^ +||sonar6-fra5-2.xx.fbcdn.net.iberostar.com^ +||sonar6-gig4-1.xx.fbcdn.net.iberostar.com^ +||sonar6-gmp1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-gru2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-gua1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-ham3-1.xx.fbcdn.net.iberostar.com^ +||sonar6-hel3-1.xx.fbcdn.net.iberostar.com^ +||sonar6-hkt1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-hou1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-hyd1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-ist1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-itm1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-jnb1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-kul2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-lax3-1.xx.fbcdn.net.iberostar.com^ +||sonar6-lga3-1.xx.fbcdn.net.iberostar.com^ +||sonar6-lhr6-2.xx.fbcdn.net.iberostar.com^ +||sonar6-lim1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-lis1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-los2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-maa2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-mad1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-mba1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-mct1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-mrs2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-mty2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-mxp1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-nrt1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-ord5-2.xx.fbcdn.net.iberostar.com^ +||sonar6-pmo1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-qro1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-scl2-1.xx.fbcdn.net.iberostar.com^ +||sonar6-sea1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-sin6-1.xx.fbcdn.net.iberostar.com^ +||sonar6-sjc3-1.xx.fbcdn.net.iberostar.com^ +||sonar6-sof1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-ssn1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-tir3-2.xx.fbcdn.net.iberostar.com^ +||sonar6-tpe1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-vie1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-xsp1-3.xx.fbcdn.net.iberostar.com^ +||sonar6-xxb1-1.xx.fbcdn.net.iberostar.com^ +||sonar6-yyz1-1.xx.fbcdn.net.iberostar.com^ +||sonar6.fcul1-1.fna.fbcdn.net.iberostar.com^ +||sonar6.fgdl1-3.fna.fbcdn.net.iberostar.com^ +||sonar6.fgdl1-4.fna.fbcdn.net.iberostar.com^ +||sonar6.fgym1-1.fna.fbcdn.net.iberostar.com^ +||sonar6.fhmo1-2.fna.fbcdn.net.iberostar.com^ +||sonar6.fmlm1-1.fna.fbcdn.net.iberostar.com^ +||sonar6.fmzt1-1.fna.fbcdn.net.iberostar.com^ +||sonar6.fnog1-1.fna.fbcdn.net.iberostar.com^ +||sonar6.fntr4-1.fna.fbcdn.net.iberostar.com^ +||sonar6.fpbc1-1.fna.fbcdn.net.iberostar.com^ +||sonar6.fpbc1-2.fna.fbcdn.net.iberostar.com^ +||sonar6.fver1-1.fna.fbcdn.net.iberostar.com^ +||sonar6.fzih1-1.fna.fbcdn.net.iberostar.com^ +||sonar6.xy.fbcdn.net.iberostar.com^ +||srd1-pdx.net.jumia.ci^ +||static.whatsapp.net.iberostar.com^ +||stats.g.doubleclick.net.iberostar.com^ +||stereofixers.net.jumia.com.gh^ +||swissinside.easyjet.com.edgekey.net.easyjet.com^ +||tamus.net.anwalt.de^ +||thialfi.net.anwalt.de^ +||thumbs.net.anwalt.de^ +||tirandoalmedio.net.anwalt.de^ +||titomacia.net.anwalt.de^ +||tittendestages.net.anwalt.de^ +||tweetdeck.net.anwalt.de^ +||twistairclub.net.anwalt.de^ +||tx-br-cdn.kwai.net.iberostar.com^ +||tx-pro-pull.kwai.net.iberostar.com^ +||txv2-br-cdn.kwai.net.iberostar.com^ +||tyumen.net.anwalt.de^ +||ui.belboon.com^ +||umrvmb.net.anwalt.de^ +||us.appbackupapi.micloud.xiaomi.net.iberostar.com^ +||us.micardapi.micloud.xiaomi.net.iberostar.com^ +||us.noteapi.micloud.xiaomi.net.iberostar.com^ +||us.pdc.micloud.xiaomi.net.iberostar.com^ +||usw18-268-pdb.net.mydays.de^ +||v16m-default.akamaized.net.iberostar.com^ +||valdes.net.anwalt.de^ +||vd-test.net.anwalt.de^ +||vidfiles.net.mydays.de^ +||vl037.net.anwalt.de^ +||wasteland.net.anwalt.de^ +||whoami.akamai.net.iberostar.com^ +||wotasia2.login.wargaming.net.iberostar.com^ +||wotasia3.login.wargaming.net.iberostar.com^ +||wpe-client02-vm4.net.mydays.de^ +||ws-br-cdn.kwai.net.iberostar.com^ +||ws-pro-pull.kwai.net.iberostar.com^ +||www.brillen.demarketing.net.brillen.pl^ +||www.ciscenje.net.jumia.com.ng^ +||www.clients.net.anwalt.de^ +||www.csr31.net.anwalt.de^ +||www.iaccede.net.jumia.ug^ +||www.meuble-design.net.jumia.ug^ +||www.net.asambeauty.com^ +||www.restopascher.net.jumia.sn^ +||www1.na.sandbox.gwsweb.net.jumia.co.ke^ +||yoi05.youthorganizing.net.jumia.ci^ +||zds.net.anwalt.de^ +||zimadifirenze.net.anwalt.de^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_np6.txt *** +||cotemaison.np6.com^ +||emailing.casden.banquepopulaire.fr^ +||epm.mailperformance.com^ +||f1.demo.np6.com^ +||f1.mailperf.com^ +||f1.mailperformance.com^ +||f1.mperf.com^ +||f1.np6.com^ +||infojeux.paris.fr^ +||lbv5.mperf.com^ +||mailtracking.tf1.com^ +||mp.pitchero.com^ +||news.mailperformance.com^ +||newsletter.ticketac.com^ +||shortener.np6.com^ +||sms.gestion.cetelem.fr^ +||sms.news.allopneus.com^ +||t8.mailperformance.com^ +||tr.3ou4xcb.cetelem.fr^ +||tr.3xcb.cofinoga.fr^ +||tr.aasi.espmp-agfr.net^ +||tr.abo.cotemaison.fr^ +||tr.account.np6.com^ +||tr.acd-comexpert.fr^ +||tr.acq-pjms.fr^ +||tr.actiflip.devisdirect.com^ +||tr.activeprospects.info^ +||tr.actu-companeo.com^ +||tr.actu.bricodepot.com^ +||tr.actu.reunica.com^ +||tr.actu.rmcbfmplay.com^ +||tr.actualites.bfmtv.com^ +||tr.actualites.reseau-lcd.org^ +||tr.actuentreprises.elior.fr^ +||tr.actupremium.com^ +||tr.actus-fdj.fr^ +||tr.adhesion.ircom-laverriere.com^ +||tr.afpa.espmp-cufr.net^ +||tr.ag2rlamondiale.fr^ +||tr.agefiseminaires.com^ +||tr.alex.espmp-agfr.net^ +||tr.allianz-trade.com^ +||tr.allopneus.com^ +||tr.animation.lexpress.fr^ +||tr.animation.micromania.fr^ +||tr.animations.alticemedia.com^ +||tr.animations.bfmtv.com^ +||tr.apou032.espmp-agfr.net^ +||tr.asp0010.espmp-nifr.net^ +||tr.asp0018.espmp-aufr.net^ +||tr.asp002q.espmp-aufr.net^ +||tr.asp002x.espmp-cufr.net^ +||tr.asp0085.espmp-nifr.net^ +||tr.asp008y.espmp-nifr.net^ +||tr.asp009j.espmp-aufr.net^ +||tr.asp009k.espmp-cufr.net^ +||tr.asp00a0.espmp-cufr.net^ +||tr.asp00a1.espmp-agfr.net^ +||tr.asp00a3.espmp-agfr.net^ +||tr.asp00a6.espmp-nifr.net^ +||tr.asp00ah.espmp-nifr.net^ +||tr.asp00am.espmp-cufr.net^ +||tr.asp1.espmp-agfr.net^ +||tr.asp102n.espmp-cufr.net^ +||tr.asp103z.espmp-nifr.net^ +||tr.asp104p.espmp-aufr.net^ +||tr.asp106d.espmp-cufr.net^ +||tr.asp106g.espmp-nifr.net^ +||tr.asp106m.espmp-agfr.net^ +||tr.asp108a.espmp-cufr.net^ +||tr.asp1098.espmp-cufr.net^ +||tr.asp109c.espmp-aufr.net^ +||tr.asp109e.espmp-cufr.net^ +||tr.asp109y.espmp-agfr.net^ +||tr.asp10a7.espmp-aufr.net^ +||tr.asp10ai.espmp-nifr.net^ +||tr.asp10ap.espmp-nifr.net^ +||tr.asp10ar.espmp-cufr.net^ +||tr.asp10b3.espmp-agfr.net^ +||tr.asp10bq.espmp-nifr.net^ +||tr.asp10bs.espmp-aufr.net^ +||tr.asp10c8.espmp-agfr.net^ +||tr.asp10cc.espmp-nifr.net^ +||tr.asp10cg.espmp-nifr.net^ +||tr.asp10ch.espmp-nifr.net^ +||tr.asp10cr.espmp-nifr.net^ +||tr.asp10d7.espmp-nifr.net^ +||tr.asp10de.espmp-agfr.net^ +||tr.asp10df.espmp-agfr.net^ +||tr.asp10dq.espmp-nifr.net^ +||tr.asp10dx.espmp-nifr.net^ +||tr.asp10ea.espmp-nifr.net^ +||tr.asp10f5.espmp-agfr.net^ +||tr.asp10f6.espmp-agfr.net^ +||tr.asp10fa.espmp-cufr.net^ +||tr.asp10fg.espmp-aufr.net^ +||tr.asp10fl.espmp-nifr.net^ +||tr.asp10fo.espmp-nifr.net^ +||tr.asp10fp.espmp-nifr.net^ +||tr.asp10fx.espmp-cufr.net^ +||tr.asp10ga.espmp-nifr.net^ +||tr.asp10ge.espmp-nifr.net^ +||tr.asp10h2.espmp-nifr.net^ +||tr.asp10hc.espmp-aufr.net^ +||tr.asp10hg.espmp-cufr.net^ +||tr.asp10hi.espmp-cufr.net^ +||tr.asp10hj.espmp-pofr.net^ +||tr.asp10if.espmp-cufr.net^ +||tr.asp2.espmp-agfr.net^ +||tr.asp202u.espmp-cufr.net^ +||tr.asp2032.espmp-aufr.net^ +||tr.asp2035.espmp-nifr.net^ +||tr.asp203m.espmp-cufr.net^ +||tr.asp2045.espmp-nifr.net^ +||tr.asp204q.espmp-cufr.net^ +||tr.asp205a.espmp-cufr.net^ +||tr.asp2063.espmp-nifr.net^ +||tr.asp206k.espmp-agfr.net^ +||tr.asp2070.espmp-aufr.net^ +||tr.asp2075.espmp-nifr.net^ +||tr.asp2076.espmp-pofr.net^ +||tr.asp2077.espmp-nifr.net^ +||tr.asp2078.espmp-nifr.net^ +||tr.asp207e.espmp-nifr.net^ +||tr.asp207f.espmp-cufr.net^ +||tr.assoc.cfsr-retine.com^ +||tr.avisecheance.maaf.fr^ +||tr.axa-millesimes.espmp-aufr.net^ +||tr.axa.espmp-aufr.net^ +||tr.b2d1.espmp-agfr.net^ +||tr.b2d1068.espmp-nifr.net^ +||tr.b2d106z.espmp-aufr.net^ +||tr.b2d107b.espmp-aufr.net^ +||tr.bati-partner.be^ +||tr.bati-partners.be^ +||tr.batirenover.info^ +||tr.batiweb.co^ +||tr.bel-pros.be^ +||tr.bern.espmp-nifr.net^ +||tr.bienvenue.envie-de-bien-manger.com^ +||tr.bizzquotes.co.uk^ +||tr.bobo.espmp-cufr.net^ +||tr.bodet.devisdirect.com^ +||tr.boletim.companeo.pt^ +||tr.boletim.meu-orcamento.pt^ +||tr.bouyguestelecom.espmp-aufr.net^ +||tr.brand.labelleadresse.com^ +||tr.btob-afaceri.ro^ +||tr.btob-cwf.com^ +||tr.btob-deals.co.uk^ +||tr.btob-pro.be^ +||tr.btob-pro.pt^ +||tr.btob.mhdfrance.fr^ +||tr.btobquotes.be^ +||tr.btobquotes.cl^ +||tr.btobquotes.com^ +||tr.btobquotes.mx^ +||tr.buenasofertas.pro^ +||tr.bureauveritas.espmp-aufr.net^ +||tr.business-deal.be^ +||tr.business-deal.cl^ +||tr.business-deal.com.br^ +||tr.business-deal.fr^ +||tr.business-deal.mx^ +||tr.business-deal.nl^ +||tr.business-quotes.co.uk^ +||tr.businessdev.younited-credit.es^ +||tr.cacf-acq.ipsos-surveys.com^ +||tr.cacf.ipsos-surveys.com^ +||tr.camara.eu.com^ +||tr.capu.espmp-agfr.net^ +||tr.carl.espmp-cufr.net^ +||tr.cart02d.espmp-agfr.net^ +||tr.carte.lcl.fr^ +||tr.cartegie.fr^ +||tr.cashback.floa.fr^ +||tr.cb4x.banque-casino.fr^ +||tr.cb4x.floa.fr^ +||tr.cclx.espmp-agfr.net^ +||tr.cdiscount.3wregie.com^ +||tr.ceeregion.moethennessy.com^ +||tr.christmas.petit-bateau.com^ +||tr.chronodrive.com^ +||tr.ciblexo.fr^ +||tr.cifa.espmp-nifr.net^ +||tr.cifa02b.espmp-aufr.net^ +||tr.cifa02d.espmp-aufr.net^ +||tr.cifa02k.espmp-aufr.net^ +||tr.cifa02l.espmp-nifr.net^ +||tr.citiesforlifeparis.latribune.fr^ +||tr.cj.bordeaux-metropole.fr^ +||tr.client.emailing.bnpparibas^ +||tr.clientes.younited-credit.com^ +||tr.clienti.younited-credit.com^ +||tr.clienti.younited-credit.it^ +||tr.clients-mediametrie.fr^ +||tr.clients.base-plus.fr^ +||tr.clients.boursobank.info^ +||tr.clients.boursorama.info^ +||tr.clients.compagnie-hyperactive.com^ +||tr.clients.europrogres.fr^ +||tr.clients.gemy.fr^ +||tr.clients.idaia.group^ +||tr.cnaf.espmp-nifr.net^ +||tr.cobranca.younited-credit.com^ +||tr.cogedim.espmp-agfr.net^ +||tr.collectif.groupe-vyv.fr^ +||tr.com-clients.sfr.fr^ +||tr.com-parc.sfr.fr^ +||tr.com-red.sfr.fr^ +||tr.com-web.sfr.fr^ +||tr.com.santiane.fr^ +||tr.com.sfr.fr^ +||tr.combca.fr^ +||tr.commande.location.boulanger.com^ +||tr.commercial.boursobank.info^ +||tr.communaute.caradisiac.com^ +||tr.communautes-mediametrie.fr^ +||tr.communication.alticemedia.com^ +||tr.communication.ancv.com^ +||tr.communication.armatis-lc.com^ +||tr.communication.arthur-bonnet.com^ +||tr.communication.b2b-actualites.com^ +||tr.communication.boursobank.info^ +||tr.communication.boursorama.info^ +||tr.communication.cgaaer.fr^ +||tr.communication.enkiapp.io^ +||tr.communication.harmonie-mutuelle.fr^ +||tr.communication.hennessy.com^ +||tr.communication.hybrigenics.com^ +||tr.communication.jardindacclimatation.fr^ +||tr.communication.lamaisondesstartups.com^ +||tr.communication.lvmh.fr^ +||tr.communication.lvmhdare.com^ +||tr.communication.mhdfrance.fr^ +||tr.communication.moethennessy.com^ +||tr.communication.moethennessydiageoconnect.com^ +||tr.communication.np6.com^ +||tr.communication.numericable.fr^ +||tr.communication.offresb2b.fr^ +||tr.communication.top-office.com^ +||tr.companeo-news.co.uk^ +||tr.comunicacao.younited-credit.com^ +||tr.comunicazione.younited-credit.com^ +||tr.contact.astuceco.fr^ +||tr.contact.canalplay.com^ +||tr.contact.canalplus.fr^ +||tr.contact.canalsat.fr^ +||tr.contact.cerel.net^ +||tr.contact.cereps.fr^ +||tr.contact.e-turf.fr^ +||tr.contact.henner.com^ +||tr.contact.lvmh.fr^ +||tr.contact.mhl-publishing.fr^ +||tr.contact.ruinart.com^ +||tr.contact.stof.fr^ +||tr.contact.thelist-emirates.fr^ +||tr.contrat.location.boulanger.com^ +||tr.contrat.lokeo.fr^ +||tr.contrats.cetelem.fr^ +||tr.contrats.cofinoga.fr^ +||tr.contrats.domofinance.fr^ +||tr.corporate.moethennessy.com^ +||tr.courriel.mae.fr^ +||tr.courriel.ouestnormandie.cci.fr^ +||tr.courrier.charentelibre.fr^ +||tr.courrier.larepubliquedespyrenees.fr^ +||tr.courrier.sudouest.fr^ +||tr.crc.henner.com^ +||tr.credito.universo.pt^ +||tr.crtl.espmp-aufr.net^ +||tr.customer-solutions.np6.com^ +||tr.cyberarchi.info^ +||tr.cyprusparadiseestates.com^ +||tr.cypruspremiervacations.com^ +||tr.datacom.espmp-pofr.net^ +||tr.demo.np6.com^ +||tr.designoutlet-contact.fr^ +||tr.devis-companeo.be^ +||tr.devis-companeo.com^ +||tr.devis-companeo.fr^ +||tr.devis-express.be^ +||tr.devis-professionnels.com^ +||tr.devis-professionnels.fr^ +||tr.devis.digital^ +||tr.devisminute-affranchissement.com^ +||tr.devisminute-alarme.com^ +||tr.devisminute-caisseenregistreuse.com^ +||tr.devisminute-fontainereseau.com^ +||tr.devisminute-geolocalisation.com^ +||tr.devisminute-gestiondepatrimoine.com^ +||tr.devisminute-gestiondutemps.com^ +||tr.devisminute-gestionpaie.com^ +||tr.devisminute-materieldestockage.com^ +||tr.devisminute-mutuelle.com^ +||tr.devisminute-operateur.com^ +||tr.devisminute-operateurpro.com^ +||tr.devisminute-securiteb2b.com^ +||tr.devisminute-siteecommerce.com^ +||tr.devisminute-weber.com^ +||tr.devize-companeo.ro^ +||tr.devizul-meu.ro^ +||tr.digitalacademy.np6.com^ +||tr.digitaldigest.lvmh.com^ +||tr.directferries.com^ +||tr.dirigeants.harmonie-mutuelle.fr^ +||tr.discover.perfectstay.com^ +||tr.djay.espmp-agfr.net^ +||tr.dkomaison.info^ +||tr.dnapresse.fr^ +||tr.docapost-sirs.com^ +||tr.dogstrust.org.uk^ +||tr.donateur.afm-telethon.fr^ +||tr.dossier-assurance.maaf.fr^ +||tr.drh-holding.lvmh.fr^ +||tr.e-mail.axa.fr^ +||tr.e-mail.axabanque.fr^ +||tr.e-travaux.info^ +||tr.e.entreprise-pm.fr^ +||tr.e.entreprise-pm.net^ +||tr.e.m-entreprise.fr^ +||tr.e.trouver-un-logement-neuf.com^ +||tr.easy-offertes.be^ +||tr.ecolab-france.fr^ +||tr.ecologie-shop.espmp-agfr.net^ +||tr.em.cdiscount-pro.com^ +||tr.em.cdiscountpro.com^ +||tr.email.aeroexpo.online^ +||tr.email.agriexpo.online^ +||tr.email.akerys.com^ +||tr.email.aktuariat.fr^ +||tr.email.archiexpo.com^ +||tr.email.bon-placement-immobilier.fr^ +||tr.email.contact-jaguar.fr^ +||tr.email.contact-landrover.fr^ +||tr.email.custom-campaign.com^ +||tr.email.d17.tv^ +||tr.email.d8.tv^ +||tr.email.directindustry.com^ +||tr.email.distributor-expo.com^ +||tr.email.gap-france.fr^ +||tr.email.grandjeupaysgourmand.fr^ +||tr.email.harmonie-mutuelle.fr^ +||tr.email.infocredit.orangebank.fr^ +||tr.email.janedeboy.com^ +||tr.email.maisonfoody.com^ +||tr.email.medicalexpo.com^ +||tr.email.mnpaf.fr^ +||tr.email.nauticexpo.com^ +||tr.email.pointfranchise.co.uk^ +||tr.email.rs-fr.com^ +||tr.email.securite-routiere.gouv.fr^ +||tr.email.solocal.com^ +||tr.email.thelem-assurances.fr^ +||tr.email.toute-la-franchise.com^ +||tr.email.videofutur.fr^ +||tr.email.virtual-expo.com^ +||tr.email.voyagesleclerc.com^ +||tr.emailatia.fr^ +||tr.emailing-wishesfactory.com^ +||tr.emailing.agencereference.com^ +||tr.emailing.canalbox.com^ +||tr.emailing.canalplay.com^ +||tr.emailing.canalplus-afrique.com^ +||tr.emailing.canalplus-caledonie.com^ +||tr.emailing.canalplus-caraibes.com^ +||tr.emailing.canalplus-maurice.com^ +||tr.emailing.canalplus-polynesie.com^ +||tr.emailing.canalplus-reunion.com^ +||tr.emailing.canalplus.ch^ +||tr.emailing.canalplus.fr^ +||tr.emailing.canalpro.fr^ +||tr.emailing.canalsat.ch^ +||tr.emailing.cifea-mkg.com^ +||tr.emailing.cnam-paysdelaloire.fr^ +||tr.emailing.cstar.fr^ +||tr.emailing.detours.canal.fr^ +||tr.emailing.grassavoye.com^ +||tr.emailing.pogioclub.be^ +||tr.emailing.studiocanal.com^ +||tr.emailing.tvcaraibes.tv^ +||tr.emailium.fr^ +||tr.emc.moethennessy.com^ +||tr.enedis-infos.fr^ +||tr.enews.customsolutions.fr^ +||tr.enquetes.actionlogement.fr^ +||tr.entreprise-pro.info^ +||tr.entreprise.axa.fr^ +||tr.envie-de-bien-manger.espmp-aufr.net^ +||tr.eqs.cpam67.net^ +||tr.ere.emailing.bnpparibas^ +||tr.espmp-agfr.net^ +||tr.estatesandwines.moethennessy.com^ +||tr.etravauxpro.fr^ +||tr.etude.sncd.org^ +||tr.eulerhermes.com^ +||tr.ev001.net^ +||tr.evenements.inpi.fr^ +||tr.expresofferte.be^ +||tr.fg3p.espmp-cufr.net^ +||tr.fidal.pro^ +||tr.fidalformation.pro^ +||tr.finance.moethennessy.com^ +||tr.fleetmatics.vraaguwofferte.be^ +||tr.forum.veuveclicquot.fr^ +||tr.fr.pro.accor.com^ +||tr.france.plimsoll.fr^ +||tr.futurecommerce.moethennessy.com^ +||tr.gen.espmp-agfr.net^ +||tr.gestion.cafineo.fr^ +||tr.gestion.cetelem.fr^ +||tr.gestion.coficabail.fr^ +||tr.gestion.cofinoga.fr^ +||tr.gestion.credit-moderne.fr^ +||tr.gestion.domofinance.fr^ +||tr.gestion.floa.fr^ +||tr.gestion.hondafinancialservices.fr^ +||tr.gestion.lexpress.fr^ +||tr.gestion.liberation.fr^ +||tr.gestion.norrsken.fr^ +||tr.gestion.sygmabnpparibas-pf.com^ +||tr.gplus.espmp-nifr.net^ +||tr.grez.espmp-nifr.net^ +||tr.group-appointments.lvmh.fr^ +||tr.group-hr.lvmh.fr^ +||tr.groupama-gne.fr^ +||tr.gtr.moethennessy.com^ +||tr.haute-maurienne-vanoise.net^ +||tr.hcahealthcare.co.uk^ +||tr.hello.maisonfoody.com^ +||tr.helloartisan.info^ +||tr.hmut.espmp-agfr.net^ +||tr.holidaycottages.co.uk^ +||tr.impayes.filiassur.com^ +||tr.info-btob-leaders.com^ +||tr.info-companeo.be^ +||tr.info-fr.assurant.com^ +||tr.info-jeux.paris.fr^ +||tr.info-pro.promoneuve.fr^ +||tr.info-strategie.fr^ +||tr.info.actionlogement.fr^ +||tr.info.aeroportdeauville.com^ +||tr.info.ag2rlamondiale.fr^ +||tr.info.aliae.com^ +||tr.info.annoncesbateau.com^ +||tr.info.aprr.fr^ +||tr.info.arialcnp.fr^ +||tr.info.astermod.net^ +||tr.info.aussois.com^ +||tr.info.bessans.com^ +||tr.info.bonneval-sur-arc.com^ +||tr.info.businesscreditcards.bnpparibasfortis.be^ +||tr.info.caissenationalegendarme.fr^ +||tr.info.camping-vagues-oceanes.com^ +||tr.info.capfun.com^ +||tr.info.cartesaffaires.bnpparibas^ +||tr.info.casino-proximites.fr^ +||tr.info.certypro.fr^ +||tr.info.clicochic.com^ +||tr.info.cnch.fr^ +||tr.info.comparadordeprestamos.es^ +||tr.info.conexancemd.com^ +||tr.info.conso-expert.fr^ +||tr.info.covid-resistance-bretagne.fr^ +||tr.info.dentexelans.com^ +||tr.info.e-leclerc.com^ +||tr.info.easyviaggio.com^ +||tr.info.easyviajar.com^ +||tr.info.easyvoyage.co.uk^ +||tr.info.easyvoyage.com^ +||tr.info.ecole-de-savignac.com^ +||tr.info.fulli.com^ +||tr.info.galian.fr^ +||tr.info.harmonie-mutuelle.fr^ +||tr.info.lacentrale.fr^ +||tr.info.lettre.cci.fr^ +||tr.info.linnc.com^ +||tr.info.linxea.com^ +||tr.info.mango-mobilites.fr^ +||tr.info.mango-mobilitesbyaprr.fr^ +||tr.info.mavoiturecash.fr^ +||tr.info.maxis-gbn.com^ +||tr.info.mcgarrybowen.com^ +||tr.info.mdbp.fr^ +||tr.info.mercialys.com^ +||tr.info.mobibam.com^ +||tr.info.np6.com^ +||tr.info.np6.fr^ +||tr.info.oceane-pme.com^ +||tr.info.offres-cartegie.fr^ +||tr.info.onboarding.corporatecards.bnpparibas^ +||tr.info.perl.fr^ +||tr.info.ph-bpifrance.fr^ +||tr.info.phsolidaire-bpifrance.fr^ +||tr.info.pret-bpifrance.fr^ +||tr.info.pretflashtpe-bpifrance.fr^ +||tr.info.projeo-finance.fr^ +||tr.info.promoneuve.fr^ +||tr.info.rebond-bpifrance.fr^ +||tr.info.reunica.com^ +||tr.info.rouen.aeroport.fr^ +||tr.info.rouen.cci.fr^ +||tr.info.snpden.net^ +||tr.info.solidarm.fr^ +||tr.info.svp.com^ +||tr.info.valcenis.com^ +||tr.info.vip-mag.co.uk^ +||tr.info.webikeo.fr^ +||tr.infolettre.securite-routiere.gouv.fr^ +||tr.infolettres.groupama.com^ +||tr.infomarche.hennessy.fr^ +||tr.information.fidalformations.fr^ +||tr.information.labelleadresse.com^ +||tr.information.lacollection-airfrance.be^ +||tr.information.lacollection-airfrance.ch^ +||tr.information.lacollection-airfrance.co.uk^ +||tr.information.lacollection-airfrance.fr^ +||tr.information.leclubtravel.fr^ +||tr.information.perfectstay.com^ +||tr.information.smartdeals-transavia-fr.com^ +||tr.information.thelist-emirates.fr^ +||tr.informations.harmonie-mutuelle.fr^ +||tr.informations.lcl.fr^ +||tr.infos-admissions.com^ +||tr.infos.afpa.fr^ +||tr.infos.allianz-trade.com^ +||tr.infos.ariase.com^ +||tr.infos.enerplus-bordeaux.fr^ +||tr.infos.fongecifcentre.com^ +||tr.infos.gazdebordeaux.fr^ +||tr.infos.lacarte.demenagez-moi.com^ +||tr.infos.lettre-resiliation.com^ +||tr.infos.odalys-vacances.com^ +||tr.inspiration.culture-data.fr^ +||tr.interieur.cotemaison.fr^ +||tr.interviews-mediametrie.fr^ +||tr.invest.younited-credit.com^ +||tr.invitation-mesdessous.fr^ +||tr.invitation.perfectstay.com^ +||tr.ipsos-surveys.com^ +||tr.ispaconsulting.com^ +||tr.italia.plimsoll.it^ +||tr.jend.espmp-pofr.net^ +||tr.jesuis.enformedelotus.com^ +||tr.jevoteenligne.fr^ +||tr.jimb.espmp-cufr.net^ +||tr.jkcd.espmp-cufr.net^ +||tr.jkcd.espmp-pofr.net^ +||tr.jkyg.espmp-cufr.net^ +||tr.kang.espmp-cufr.net^ +||tr.kedf.espmp-nifr.net^ +||tr.klse.espmp-agfr.net^ +||tr.kommunikation.younited-credit.com^ +||tr.kontakt.younited-credit.com^ +||tr.kpfc.espmp-nifr.net^ +||tr.kpyn.espmp-cufr.net^ +||tr.kpyn02a.espmp-cufr.net^ +||tr.kpyn02f.espmp-cufr.net^ +||tr.kpyn059.espmp-pofr.net^ +||tr.krus.espmp-agfr.net^ +||tr.lachaiselongue.fr^ +||tr.landrover.compte-financial-services.fr^ +||tr.laprairie.ifop.com^ +||tr.lbar.espmp-agfr.net^ +||tr.leads.direct^ +||tr.legrandjeu.boulanger.com^ +||tr.lesmarques.envie-de-bien-manger.com^ +||tr.lesmarquesenviedebienmanger.fr^ +||tr.lettre.dechets-infos.com^ +||tr.lettre.helianthal.fr^ +||tr.lettre.lecho-circulaire.com^ +||tr.leyravaud.devisdirect.com^ +||tr.liberation.espmp-aufr.net^ +||tr.livrephoto.espmp-aufr.net^ +||tr.loreal.ifop.com^ +||tr.louisvuittonmalletier.com^ +||tr.louvre-boites.com^ +||tr.ltbu.espmp-nifr.net^ +||tr.ltbu02o.espmp-agfr.net^ +||tr.lvmhappening.lvmh.fr^ +||tr.m.cwisas.com^ +||tr.macarte.truffaut.com^ +||tr.mail-companeo.fr^ +||tr.mail.cdiscount.com.ec^ +||tr.mail.cdiscount.com.pa^ +||tr.mail.digitalpjms.fr^ +||tr.mail.enviedebienmanger.fr^ +||tr.mail.floa.fr^ +||tr.mail.hagerservices.fr^ +||tr.mail.koregraf.com^ +||tr.mail.mdbp.fr^ +||tr.mail.moncoupdepouce.com^ +||tr.mail.perial.info^ +||tr.mail.primevere.com^ +||tr.mail.satisfactory.fr^ +||tr.mail.solocal.com^ +||tr.mail.vip-mag.co.uk^ +||tr.mail.vipmag.fr^ +||tr.mail.vo3000.com^ +||tr.mail1.macif.fr^ +||tr.mailatia.com^ +||tr.mailing.achatpublic.com^ +||tr.mailing.heliades.fr^ +||tr.mailing.laredoute.fr^ +||tr.mailing.lvmhappening.com^ +||tr.mailing.promodeclic.fr^ +||tr.mailingnp6.lavoirmoderne.com^ +||tr.mailmp.macif.net^ +||tr.mailperf.institut-de-la-protection-sociale.fr^ +||tr.mailperf.ngt-services.com^ +||tr.mailperformance.com^ +||tr.mailperformance.fr^ +||tr.maisonsdumonde.com^ +||tr.marg02n.espmp-agfr.net^ +||tr.marketing.bordeauxgironde.cci.fr^ +||tr.marketing.comparadordeprestamos.es^ +||tr.marketing.fulli.com^ +||tr.marketing.tennaxia.com^ +||tr.marketing.younited-credit.com^ +||tr.marketing.younited-credit.es^ +||tr.marketing.younited-credit.pt^ +||tr.marketingdisruption.co.uk^ +||tr.mart.espmp-agfr.net^ +||tr.mcom03b.espmp-aufr.net^ +||tr.mcom04p.espmp-aufr.net^ +||tr.media.harmonie-sante.fr^ +||tr.melhores-propostas.pt^ +||tr.membres.boursorama.info^ +||tr.mep.enkiapp.io^ +||tr.mes-bonsplans.be^ +||tr.mes-prestataires.fr^ +||tr.message.maaf.fr^ +||tr.mh-connect.moethennessy.com^ +||tr.mhch.moet.hennessy.com^ +||tr.mhdconnect.mhdfrance.fr^ +||tr.mhist.moethennessy.com^ +||tr.mhlab78.moethennessy.com^ +||tr.mhusa-trade-engagement.moethennessy.com^ +||tr.mhwinesestates.moethennessy.com^ +||tr.mijn-superaanbieding.be^ +||tr.mijnaanbieding.renowizz.be^ +||tr.mika.espmp-nifr.net^ +||tr.mktg.np6.com^ +||tr.mm.infopro-digital.com^ +||tr.mnoc.espmp-nifr.net^ +||tr.mnpd.espmp-agfr.net^ +||tr.moes.espmp-agfr.net^ +||tr.moja-wycena.pl^ +||tr.monagenligne.fr^ +||tr.mondevis-b2b.com^ +||tr.mondevis-pro.com^ +||tr.moving.fr^ +||tr.mp.aconclue-business.fr^ +||tr.mp.aconclue-entreprise.fr^ +||tr.mp.aconclue-pro.com^ +||tr.mp.actu-pm.fr^ +||tr.mp.infomanageo.fr^ +||tr.mp.ld-man.fr^ +||tr.mrls.espmp-agfr.net^ +||tr.mydevisentreprise.com^ +||tr.n.ferrero.fr^ +||tr.n.info.cdgp.fr^ +||tr.n.info.sygmabanque.fr^ +||tr.n.kinder.fr^ +||tr.n.nutella.fr^ +||tr.n.tic-tac.fr^ +||tr.nati02d.espmp-aufr.net^ +||tr.nespresso.com^ +||tr.nespresso.mailsservices.com^ +||tr.new.offres-cartegie.fr^ +||tr.news-abweb.com^ +||tr.news-chocolat.com^ +||tr.news-companeo.be^ +||tr.news-companeo.cl^ +||tr.news-companeo.com.br^ +||tr.news-companeo.fr^ +||tr.news-companeo.gr^ +||tr.news-companeo.mx^ +||tr.news-companeo.nl^ +||tr.news-companeo.pl^ +||tr.news-dfc.sciences-po.fr^ +||tr.news-fr.perfectstay.com^ +||tr.news-ingerop.com^ +||tr.news-longchamp.com^ +||tr.news.a-t.fr^ +||tr.news.a2micile.com^ +||tr.news.accessmastertour.com^ +||tr.news.accessmbatour.com^ +||tr.news.actu-man.com^ +||tr.news.ailleurs.com^ +||tr.news.alcyon.com^ +||tr.news.alibabuy.com^ +||tr.news.alinea.com^ +||tr.news.allopneus.com^ +||tr.news.aramisauto.com^ +||tr.news.assuragency.net^ +||tr.news.bruneau.fr^ +||tr.news.business-deal.co.uk^ +||tr.news.c-media.fr^ +||tr.news.cad-magazine.com^ +||tr.news.capfun.com^ +||tr.news.casino.fr^ +||tr.news.casinodrive.fr^ +||tr.news.casinomax.fr^ +||tr.news.cci-puydedome.com^ +||tr.news.cdiscount.com^ +||tr.news.cdiscountpro.com^ +||tr.news.cenpac.fr^ +||tr.news.chapsvision.com^ +||tr.news.chezmonveto.com^ +||tr.news.chilican.com^ +||tr.news.clicochic.com^ +||tr.news.companeo.es^ +||tr.news.companeo.ro^ +||tr.news.corsicaferries.com^ +||tr.news.corsicalinea.com^ +||tr.news.cotemaison.fr^ +||tr.news.cporadio.tv^ +||tr.news.crystal-partenaires.com^ +||tr.news.delifrance.com^ +||tr.news.deneuville-chocolat.fr^ +||tr.news.deshotelsetdesiles.com^ +||tr.news.devisdirect.be^ +||tr.news.devisdirect.com^ +||tr.news.digitpjms.fr^ +||tr.news.directeo.fr^ +||tr.news.easy-voyage.com^ +||tr.news.easyviaggio.com^ +||tr.news.easyviajar.com^ +||tr.news.easyvoyage.co.uk^ +||tr.news.easyvoyage.com^ +||tr.news.easyvoyage.de^ +||tr.news.economic-studies.fr^ +||tr.news.editions-lva.fr^ +||tr.news.enkiapp.io^ +||tr.news.entreprise-pm.com^ +||tr.news.epicery.com^ +||tr.news.eureden.com^ +||tr.news.eurodatatv.com^ +||tr.news.exclu.fr^ +||tr.news.extenso-telecom.com^ +||tr.news.externis.com^ +||tr.news.extrabook.com^ +||tr.news.flandrintechnologies.com^ +||tr.news.franceloc.fr^ +||tr.news.futuramedia.fr^ +||tr.news.geantcasino.fr^ +||tr.news.geomag.fr^ +||tr.news.glance-mediametrie.com^ +||tr.news.grandsmoulinsdeparis.com^ +||tr.news.groupe-armonia.com^ +||tr.news.hallobanden.be^ +||tr.news.happycap-foundation.fr^ +||tr.news.happycap.org^ +||tr.news.helvyre.fr^ +||tr.news.heredis.com^ +||tr.news.i24news.tv^ +||tr.news.ics.fr^ +||tr.news.infopro-digital.com^ +||tr.news.interforum.fr^ +||tr.news.itancia.com^ +||tr.news.jautomatise.com^ +||tr.news.kpmg-avocats.fr^ +||tr.news.kpmg.fr^ +||tr.news.kpmgacademy.fr^ +||tr.news.kpmgnet.fr^ +||tr.news.kuhn.com^ +||tr.news.la-collectionairfrance.fr^ +||tr.news.la-meilleure-voyance.com^ +||tr.news.labelleadresse.com^ +||tr.news.lacollection-airfrance.be^ +||tr.news.lacollection-airfrance.ch^ +||tr.news.lacollection-airfrance.co.uk^ +||tr.news.lacollection-airfrance.de^ +||tr.news.lacollection-airfrance.fr^ +||tr.news.lacollectionair-france.fr^ +||tr.news.lacollectionairfrance.be^ +||tr.news.lacollectionairfrance.co.uk^ +||tr.news.lacollectionairfrance.de^ +||tr.news.lacollectionairfrance.fr^ +||tr.news.lalettredelexpansion.com^ +||tr.news.latribunebordeaux.fr^ +||tr.news.leclubtravel.fr^ +||tr.news.lentillesmoinscheres.com^ +||tr.news.lentreprise.lexpress.fr^ +||tr.news.lexpansion.lexpress.fr^ +||tr.news.lexpress.fr^ +||tr.news.linxea.com^ +||tr.news.lisez.com^ +||tr.news.lokapimail.com^ +||tr.news.maisonfoody.com^ +||tr.news.maisons-du-monde.com^ +||tr.news.manufacturing.fr^ +||tr.news.mdbp.fr^ +||tr.news.mediametrie.fr^ +||tr.news.meillandrichardier.com^ +||tr.news.mi-oferta.es^ +||tr.news.moethennessy.com^ +||tr.news.mon-horoscope.info^ +||tr.news.monvoyant.fr^ +||tr.news.mperformance.fr^ +||tr.news.normandie.cci.fr^ +||tr.news.np6.com^ +||tr.news.ocs.fr^ +||tr.news.onetoonemba.com^ +||tr.news.ouestnormandie.cci.fr^ +||tr.news.parisinfo.com^ +||tr.news.perfectstay.com^ +||tr.news.perl.fr^ +||tr.news.pl.bata-esp.com^ +||tr.news.prosfora-mou.gr^ +||tr.news.receiveyourquote.co.uk^ +||tr.news.retailglobalsolutions.com^ +||tr.news.seine-estuaire.cci.fr^ +||tr.news.smartdeals-transavia-fr.com^ +||tr.news.smartdealstransavia-fr.com^ +||tr.news.sport2000.fr^ +||tr.news.styles.lexpress.fr^ +||tr.news.supercasino.fr^ +||tr.news.teklifim.pro^ +||tr.news.thelist-emirates.fr^ +||tr.news.themedtechforum.eu^ +||tr.news.tiptel.fr^ +||tr.news.toocampmail.com^ +||tr.news.toute-la-franchise.com^ +||tr.news.triskalia.fr^ +||tr.news.vetharmonie.fr^ +||tr.news.videofutur.fr^ +||tr.news.vip-diary.com^ +||tr.news.vip-mag.co.uk^ +||tr.news.vipmag.fr^ +||tr.news.vivrecotesud.fr^ +||tr.news.vo3000.com^ +||tr.news.votreargent.lexpress.fr^ +||tr.news.voyagesleclerc.com^ +||tr.news.vraaguwofferte.be^ +||tr.news.vraaguwofferte.com^ +||tr.news.younited-coach.com^ +||tr.news.younited-credit.com^ +||tr.news2pjms.fr^ +||tr.news5.cdiscount.com^ +||tr.news6.cdiscount.com^ +||tr.newsletter-stressless.com^ +||tr.newsletter.10h01.fr^ +||tr.newsletter.1664france.fr^ +||tr.newsletter.1oag.com^ +||tr.newsletter.actalians.fr^ +||tr.newsletter.afpa.fr^ +||tr.newsletter.assuragency.net^ +||tr.newsletter.astro-mail.com^ +||tr.newsletter.bassins-a-flot.fr^ +||tr.newsletter.bauermedia.fr^ +||tr.newsletter.bouygues-construction.com^ +||tr.newsletter.bouygues.com^ +||tr.newsletter.capdecision.fr^ +||tr.newsletter.chandon.com^ +||tr.newsletter.cuisine-plus.tv^ +||tr.newsletter.ecig-privee.fr^ +||tr.newsletter.erenumerique.fr^ +||tr.newsletter.etoiledevenus.com^ +||tr.newsletter.fotodiscount.com^ +||tr.newsletter.huilesdolive.fr^ +||tr.newsletter.leocare.eu^ +||tr.newsletter.location.boulanger.com^ +||tr.newsletter.lokeo.fr^ +||tr.newsletter.meilleurmobile.com^ +||tr.newsletter.milleis.fr^ +||tr.newsletter.mixr.net^ +||tr.newsletter.monmedium.com^ +||tr.newsletter.np6.com^ +||tr.newsletter.np6.fr^ +||tr.newsletter.opcoep.fr^ +||tr.newsletter.photoservice.com^ +||tr.newsletter.phyto.com^ +||tr.newsletter.plurielmedia.com^ +||tr.newsletter.tiragephoto.fr^ +||tr.newsletter.younited-credit.com^ +||tr.newsletterpagesjaunes.fr^ +||tr.newsletters-bonpoint.com^ +||tr.newsletters.alticemedia.com^ +||tr.newsletters.coedition-contact.fr^ +||tr.newsletters.odalys-vacances.com^ +||tr.newsletters.qapa-interim.fr^ +||tr.newsmarketing.allopneus.com^ +||tr.nl.2wls.net^ +||tr.nl.ardennes.cci.fr^ +||tr.nl.mondo-shop.fr^ +||tr.nl.myvipmag.fr^ +||tr.nl.services-sncf.com^ +||tr.nl2.sncf-fidelite.com^ +||tr.nmcm.espmp-cufr.net^ +||tr.notification-gdpr.bnpparibas-pf.fr^ +||tr.notification-gdpr.cafineo.fr^ +||tr.notification-gdpr.cofica.fr^ +||tr.notification-gdpr.cofinoga.fr^ +||tr.notification-gdpr.credit-moderne.fr^ +||tr.notification-gdpr.domofinance.fr^ +||tr.notification-gdpr.loisirs-finance.fr^ +||tr.notification-gdpr.norrsken.fr^ +||tr.notification-gdpr.personal-finance-location.bnpparibas^ +||tr.notification.cafineo.fr^ +||tr.notification.cdiscount.com^ +||tr.notification.cetelem.fr^ +||tr.notification.credit-moderne.fr^ +||tr.notification.norrsken.fr^ +||tr.notification.np6.com^ +||tr.np6.com^ +||tr.np6.fr^ +||tr.np6.orange.fr^ +||tr.observatoire.musee-orangerie.fr^ +||tr.observatoire.musee-orsay.fr^ +||tr.oferta-firmy.pl^ +||tr.ofertas-companeo.es^ +||tr.offer-companeo.co.uk^ +||tr.offerta-companeo.com^ +||tr.offerte.migliorifornitori.it^ +||tr.offre-btob.fr^ +||tr.offre-companeo.com^ +||tr.offre.devisdirect.com^ +||tr.offres-professionnelles.fr^ +||tr.offres.ap-regie.fr^ +||tr.offres.bfmtv.com^ +||tr.offresbtoc.engie.fr^ +||tr.offrevip.floa.fr^ +||tr.ojxm.espmp-aufr.net^ +||tr.online.longchamp.com^ +||tr.openinnovation.lvmh.com^ +||tr.orange-lease.fr^ +||tr.orcamento-online.pt^ +||tr.orcamentos-companeo.pt^ +||tr.oxatis.devisdirect.com^ +||tr.panels-mediametrie.fr^ +||tr.part.offres-cartegie.fr^ +||tr.partenaire.groupe-vyv.fr^ +||tr.partenaire.manageo.info^ +||tr.particuliers8.engie.com^ +||tr.partners.younited-credit.it^ +||tr.payment.lvmh.com^ +||tr.phjk.espmp-nifr.net^ +||tr.pixe.espmp-cufr.net^ +||tr.pm.pelhammedia.com^ +||tr.poker.np6.com^ +||tr.pole-emploi-services.com^ +||tr.pole-emploi.info^ +||tr.policyexpert.info^ +||tr.politicoevents.eu^ +||tr.politicolive.eu^ +||tr.politicomarketing.eu^ +||tr.portail.afpa.fr^ +||tr.prevention.harmonie-mutuelle.fr^ +||tr.preventivo.risparmiazienda.it^ +||tr.pro-renov.be^ +||tr.pro.odalys-vacances.com^ +||tr.pro.residencehappysenior.fr^ +||tr.programme-voyageur-sncf.com^ +||tr.projet.cotemaison.fr^ +||tr.promo.np6.fr^ +||tr.promotion.lexpress.fr^ +||tr.prosfores-companeo.gr^ +||tr.prosfores-etairias.gr^ +||tr.ps.espmp-agfr.net^ +||tr.psaparts.com^ +||tr.publicisdrugstore.espmp-agfr.net^ +||tr.qualitaetsumfrage.com^ +||tr.qualitaveicolo.com^ +||tr.qualite.groupama.com^ +||tr.qualite.groupebarriere.com^ +||tr.qualite.viparis.com^ +||tr.qualitevehicule.fr^ +||tr.qualityvehiclesurvey.com^ +||tr.quotes.digital^ +||tr.quotes4business.com^ +||tr.quotes4business.info^ +||tr.quotesforbusiness.cl^ +||tr.quotesforbusiness.co.uk^ +||tr.ratm.espmp-agfr.net^ +||tr.raym.espmp-agfr.net^ +||tr.reactivation.vertbaudet.fr^ +||tr.read.glose.com^ +||tr.recouvrement.finrec.com^ +||tr.recouvrement.seeric.com^ +||tr.recouvrement.younited-credit.com^ +||tr.redaction.essentiel-sante-magazine.fr^ +||tr.reglementaire.emailing.bnpparibas^ +||tr.relation-mediametrie.fr^ +||tr.relation.uneo.fr^ +||tr.renowizze.be^ +||tr.republicains-info.org^ +||tr.rh.auchan.com^ +||tr.route-solutiondata.fr^ +||tr.roxi02e.espmp-agfr.net^ +||tr.safrancom-esp.net^ +||tr.sash.espmp-aufr.net^ +||tr.sash02g.espmp-nifr.net^ +||tr.satisfaction.alinea.com^ +||tr.satisfaction.groupe-pv-cp.com^ +||tr.satisfaction.villagesnature.com^ +||tr.scienceshumaines.info^ +||tr.scienceshumaines.pro^ +||tr.secretary.wfitn.org^ +||tr.secteurentreprises.harmonie-mutuelle.fr^ +||tr.service.linxea.com^ +||tr.serviceclient.adagcaladoise.fr^ +||tr.serviceclient.bf-depannage.fr^ +||tr.serviceclient.confogaz.com^ +||tr.serviceclient.depanchauffageservice.fr^ +||tr.serviceclient.effica-service.fr^ +||tr.serviceclient.explore.fr^ +||tr.serviceclient.gazservicerapide.fr^ +||tr.serviceclient.ochauffage.fr^ +||tr.serviceclient.somgaz.fr^ +||tr.serviceclient.thermogaz.fr^ +||tr.serviceclient.younited-coach.com^ +||tr.serviceclient.younited-credit.com^ +||tr.services.alinea.com^ +||tr.services.caradisiac.com^ +||tr.servicesclients.canalplus.ch^ +||tr.servicesclients.canalplus.fr^ +||tr.servicoaocliente.younited-credit.com^ +||tr.sfr.espmp-aufr.net^ +||tr.sgjk.espmp-aufr.net^ +||tr.silvera-contact.fr^ +||tr.skin.espmp-agfr.net^ +||tr.smtp1.email-mediapost.fr^ +||tr.solendi.com^ +||tr.solocal.espmp-aufr.net^ +||tr.solution.uneo.fr^ +||tr.sort.espmp-nifr.net^ +||tr.souscription.floa.fr^ +||tr.spain.plimsoll.es^ +||tr.sportswear.np6.com^ +||tr.strategie.gouv.fr^ +||tr.suivi-client-edf.com^ +||tr.surveys.np6.com^ +||tr.tdgx.espmp-cufr.net^ +||tr.think.lvmh.fr^ +||tr.thisiseurope.moethennessy.com^ +||tr.tns.harmonie-mutuelle.fr^ +||tr.toner-service.fr^ +||tr.toner-services.fr^ +||tr.tonerservices.fr^ +||tr.tourisme.visit-lanarbonnaise.com^ +||tr.tpe.harmonie-mutuelle.fr^ +||tr.tr.bricodepot.com^ +||tr.trafficnews.lyria.com^ +||tr.ujsv.espmp-agfr.net^ +||tr.uk.icicibank.com^ +||tr.uk.katun.com^ +||tr.unaoffertaalgiorno.com^ +||tr.update.groupon.be^ +||tr.urfk.espmp-agfr.net^ +||tr.urfk02r.espmp-nifr.net^ +||tr.urfk02t.espmp-agfr.net^ +||tr.urfk02v.espmp-cufr.net^ +||tr.urfk02z.espmp-nifr.net^ +||tr.urfk03c.espmp-nifr.net^ +||tr.urfk03h.espmp-nifr.net^ +||tr.urfk03k.espmp-agfr.net^ +||tr.urfk03q.espmp-nifr.net^ +||tr.urfk03u.espmp-nifr.net^ +||tr.urfk03x.espmp-agfr.net^ +||tr.urfk041.espmp-cufr.net^ +||tr.urfk042.espmp-nifr.net^ +||tr.urfk044.espmp-nifr.net^ +||tr.urfk050.espmp-cufr.net^ +||tr.urfk052.espmp-cufr.net^ +||tr.urfk057.espmp-aufr.net^ +||tr.urfk05g.espmp-agfr.net^ +||tr.urfk05l.espmp-nifr.net^ +||tr.urfk05o.espmp-pofr.net^ +||tr.urfk06h.espmp-nifr.net^ +||tr.urfk06n.espmp-nifr.net^ +||tr.urfk06o.espmp-agfr.net^ +||tr.urfk06x.espmp-cufr.net^ +||tr.urfk06y.espmp-nifr.net^ +||tr.urfk07j.espmp-nifr.net^ +||tr.urfk07r.espmp-agfr.net^ +||tr.urfk07s.espmp-nifr.net^ +||tr.urfk080.espmp-agfr.net^ +||tr.urfk08c.espmp-cufr.net^ +||tr.vernede.huilesdolive.fr^ +||tr.vf7n.espmp-agfr.net^ +||tr.videofutur.fr^ +||tr.ville.bordeaux.fr^ +||tr.voeux-wishes.ipsilon-ip.com^ +||tr.voixduclient.harmonie-mutuelle.fr^ +||tr.votrealarme.securitasdirect.fr^ +||tr.vous.hellobank.fr^ +||tr.wa.wordappeal.com^ +||tr.welcome.easyviaggio.com^ +||tr.welcome.easyviajar.com^ +||tr.welcome.easyvoyage.co.uk^ +||tr.welcome.easyvoyage.com^ +||tr.welcome.easyvoyage.de^ +||tr.welcome.lacollection-airfrance.be^ +||tr.welcome.lacollection-airfrance.ch^ +||tr.welcome.lacollection-airfrance.co.uk^ +||tr.welcome.lacollection-airfrance.de^ +||tr.welcome.lacollection-airfrance.fr^ +||tr.welcome.lexpress.fr^ +||tr.welcome.moncoupdepouce.com^ +||tr.welcome.odalys-vacances.com^ +||tr.welcome.perfectstay.com^ +||tr.welcome.smartdeals-transavia-fr.com^ +||tr.welcome.thelist-emirates.fr^ +||tr.welcome.unaoffertaalgiorno.com^ +||tr.welcome.vipmag.fr^ +||tr.wuei.espmp-agfr.net^ +||tr.xlead.digital^ +||tr.xleads.digital^ +||tr.zojh.espmp-aluk.net^ +||tr1.bp06.net^ +||tr1.bp09.net^ +||tr1.bp26.net^ +||tr1.citroen-ipsos.com^ +||tr1.easy-v01.net^ +||tr1.lr001.net^ +||tr1.lr002.net^ +||tr1.lr003.net^ +||tr1.mailperf.com^ +||tr1.mailperformance.com^ +||tr1.mperf.com^ +||tr1.peugeot-ipsos.com^ +||tr1.psa-surveys.com^ +||tr4.mailperf.com^ +||tr5.mailperf.com^ +||tr5.mperf.com^ +||tr6.mperf.com^ +||tracking.allopneus.com^ +||www.bfc-mp.caisse-epargne.fr^ +||www.fodgfip.fr^ +||www.newsletter.banquepopulaire.fr^ +||www.np6.eu^ +||www.tr.bfc-mp.caisse-epargne.fr^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_criteo.txt *** +||aacjdq.pontoslivelo.com.br^ +||aadeda.niche-beauty.com^ +||aajdcp.brand-satei.me^ +||aajfoz.halfclub.com^ +||aajmmd.aireuropa.com^ +||aaktao.entel.cl^ +||aaqnpa.sizeofficial.se^ +||aaqrvt.thefryecompany.com^ +||aarqmo.culturekings.co.nz^ +||aaucna.casasbahia.com.br^ +||aazfby.auto.de^ +||aazmiw.reisenthel.com^ +||abbqns.gowabi.com^ +||abdpac.williamsshoes.com.au^ +||abdrjm.eurostarshotels.de^ +||abemms.atp-autoteile.de^ +||abgghj.moustakastoys.gr^ +||abjkfy.muuu.com^ +||abjtuq.exoticca.com^ +||abkdae.namshi.com^ +||abkobh.chobirich.com^ +||abpwqf.lolaflora.com.mx^ +||absscw.vegis.ro^ +||abuaac.suzette-shop.jp^ +||abuajs.e-monsite.com^ +||abvghl.udn.com^ +||abxslg.jollyroom.fi^ +||aciysf.destockage-fitness.com^ +||acxajt.jimmykey.com^ +||adhudg.nec-lavie.jp^ +||adixkr.culturekings.com.au^ +||adsnid.wagyushop.com^ +||adwmab.card-db.com^ +||adxzju.penti.com^ +||aebvay.mesinspirationsculinaires.com^ +||aeewjq.dr-vegefru.com^ +||aehudh.rakumachi.jp^ +||aeotgu.asi-reisen.de^ +||aerezb.nepamall.com^ +||aeuati.wedio.com^ +||aexhyo.pilatos.com^ +||afclms.xd-design.co.kr^ +||afdbwq.blivakker.no^ +||afhjxb.flaconi.de^ +||afilyo.tfehotels.com^ +||afizah.eprice.it^ +||afmvms.dealdash.com^ +||afoykb.ebook.de^ +||agcjee.sklep-nasiona.pl^ +||agcmtb.nameit.com^ +||aggalj.eloem.kr^ +||agoqaa.stockmann.com^ +||agxwhz.bloomingdales.sa^ +||ahbyjm.fiever.com.br^ +||ahfadj.aoki-style.com^ +||ahfzzc.konfio.mx^ +||ahhrtt.pixnet.net^ +||ahisft.moonmagic.com^ +||ahjucs.loberon.de^ +||ahngxh.palladiumhotelgroup.com^ +||ahnrmb.topvintage.de^ +||ahsxot.meaningfulbeauty.com^ +||ahuvjy.design-market.fr^ +||ahzqgr.au-sonpo.co.jp^ +||ahzygy.thesteelshop.com^ +||aiddut.particleformen.com^ +||aidsro.ostin.com^ +||aiieer.mangnut2.com^ +||aikhra.londonclub.sk^ +||aikrir.lcwaikiki.com^ +||aimvaa.gulet.at^ +||aincrd.champstudy.com^ +||ajbeqy.delfi.lt^ +||ajgkdt.eazy.de^ +||ajigzt.lampenwelt.de^ +||ajqaqk.unoliving.com^ +||ajtxoo.academiaassai.com.br^ +||ajvzis.triumph.com^ +||akgnwd.tocris.com^ +||akkieh.yumeyakata.com^ +||aknzmq.divvino.com.br^ +||akpiug.rarecarat.com^ +||akspdp.materialkitchen.com^ +||akzdrh.catofashions.com^ +||alexfj.elten-store.de^ +||alfeza.vueling.com^ +||algrcr.sandro-paris.com^ +||alhiop.thehandsome.com^ +||alrhry.cjthemarket.com^ +||alsgaj.chosun.com^ +||amcgns.giesswein.com^ +||amezqu.fabrykaform.pl^ +||aminks.underarmour.com.tr^ +||amvtwk.thebottleclub.com^ +||anijjm.winkelstraat.nl^ +||annwwu.guitarcenter.com^ +||antblz.mediaworld.it^ +||aoelfb.nanouniverse.jp^ +||aojhzj.watch.co.uk^ +||aolsvc.snowqueen.ru^ +||aonjkj.intermundial.es^ +||aoohaq.micromania.fr^ +||aoqcqh.eavalyne.lt^ +||aoqhfs.optikdodomu.cz^ +||aoulpo.puccini.pl^ +||aozmpm.jwell.com^ +||apfbrk.butorline.hu^ +||aphxav.green-acres.it^ +||aplobv.xexymix.com^ +||appgax.optica-optima.com^ +||apqcjj.celford.com^ +||apqmxf.curama.jp^ +||aqbron.battlepage.com^ +||aqmzbk.avectoi.kr^ +||aqorez.yamo.bio^ +||aqouep.aquaphor.ru^ +||aqwvwn.cultfurniture.com^ +||arigng.door.ac^ +||arphzc.woodica.pl^ +||arrlrk.edigital.hu^ +||arsaqf.yukoyuko.net^ +||aruoyf.peterhahn.ch^ +||arvwwu.stepstone.be^ +||asamgd.rossmann.de^ +||ascbdj.knivesandtools.de^ +||asnjih.apatchy.co.uk^ +||asoewk.jaanuu.com^ +||asttcp.vatera.hu^ +||asxxlo.interflora.es^ +||atblqu.rondorff.com^ +||atcbju.silvergoldbull.ca^ +||ateveq.street-beat.ru^ +||atgtfj.bettermusic.com.au^ +||atlkse.aosom.it^ +||atzzrq.tbs.co.jp^ +||aucqdk.autodoc.es^ +||audsoa.narumiya-online.jp^ +||audxht.effeweg.nl^ +||auhdzd.paprika-shopping.de^ +||aullwp.sportisimo.sk^ +||auoehd.liebscher-bracht.com^ +||ausclh.castlery.com^ +||autspe.notino.hr^ +||auwdff.dyfashion.ro^ +||avbtkz.locknlockmall.com^ +||aviite.freaksstore.com^ +||awbkht.verktygsproffsen.se^ +||awfzfs.kwantum.nl^ +||awggij.wplay.co^ +||awklir.0506mall.com^ +||awogtl.1stopbedrooms.com^ +||awowwo.forever21.com^ +||awrgkd.1000farmacie.it^ +||awuapj.landwatch.com^ +||axfevh.bandab.com.br^ +||axkcmb.mosigra.ru^ +||axkwyf.edinos.pl^ +||axnskz.power-stones.jp^ +||axoqjt.gommadiretto.it^ +||axoqvl.daf-shoes.com^ +||axpjcp.tennis-point.co.uk^ +||aydtkb.pikabu.ru^ +||aygccr.eonet.jp^ +||ayleaf.petersofkensington.com.au^ +||azbrtw.anydesk.com^ +||azcoct.bikkembergs.com^ +||azflce.fragrances.bg^ +||azlyta.immowelt.de^ +||azscgj.penningtons.com^ +||azveac.pearl.ch^ +||azwucq.locservice.fr^ +||azwxpp.nequittezpas.jp^ +||azxhnt.uniformadvantage.com^ +||baahnj.bezokularow.pl^ +||baffae.alcott.eu^ +||bagbgo.unitednude.eu^ +||bahrpo.dint.co.kr^ +||bahyei.himaraya.co.jp^ +||balkog.withmoment.co.kr^ +||basuey.toyscenter.it^ +||bavvgo.zingat.com^ +||bazlny.homepal.it^ +||bbagnw.sedaily.com^ +||bbbihe.vertbaudet.es^ +||bbubuq.aftco.com^ +||bbwqcs.vidaxl.ee^ +||bcdllh.esprit.co.uk^ +||bcfgwi.skidxb.com^ +||bcfhva.tradingpost.com.au^ +||bcigeg.pishposhbaby.com^ +||bcigfr.www.uoc.edu^ +||bcsjcj.nasdaq.com^ +||bcwljq.batteryempire.de^ +||bcybka.deinetuer.de^ +||bcytwb.student.com^ +||bderbn.foxtrot.com.ua^ +||bdickh.globalgolf.com^ +||bdkuth.smartbuyglasses.co.uk^ +||bdncut.pa-man.shop^ +||bdqzcj.micuento.com^ +||bdzcck.stadiumgoods.com^ +||beafdf.restaupro.com^ +||bebpon.zetronix.com^ +||beoofo.pairs.lv^ +||beqioy.promessedefleurs.com^ +||bfeagv.chicwish.com^ +||bfjoyp.plus.nl^ +||bfjpbw.herrenausstatter.de^ +||bfntkv.icon.co.cr^ +||bfvlgp.appstory.co.kr^ +||bfzikn.l-wine.ru^ +||bgaycm.exvital-shop.de^ +||bgevqy.moschino.com^ +||bgfmvc.amandalindroth.com^ +||bgupcq.westfalia.de^ +||bhawtp.vitacost.com^ +||bhcfpo.elfa.se^ +||bhcsub.sankeishop.jp^ +||bhgbqh.crocs.de^ +||bhmzab.totes.com^ +||bhwjoa.cotopaxi.com^ +||bhwkju.vivo.com^ +||bhxemw.charleskeith.com^ +||bibglj.timberland.fr^ +||bijkep.hotelesestelar.com^ +||bilahh.feuvert.fr^ +||bjdqbl.nippn-kenko.net^ +||bjfbac.hyundaivaudreuil.com^ +||bjpsuk.fray-id.com^ +||bjqnpe.i-office1.net^ +||bjuvux.andgino.jp^ +||bkmzhr.joint-space.co.jp^ +||bknqpb.dobredomy.pl^ +||bkogtr.vacationsbyrail.com^ +||bkpoef.jules.com^ +||bksckn.minhacasasolar.com.br^ +||blaltn.physicianschoice.com^ +||blfkmp.fti.de^ +||blmjbp.casamundo.pl^ +||blsoof.wirwinzer.de^ +||blzayw.ticketsmarter.com^ +||blziha.intimissimi.com^ +||bmjmse.softsurroundings.com^ +||bmnbzt.pool-systems.de^ +||bmodjx.mgos.jp^ +||bmyudk.clarins.de^ +||bmzuyj.nifty.com^ +||bnsmoi.valx.jp^ +||bnutnr.landandfarm.com^ +||bnvsjg.hometogo.de^ +||bnzkua.trussardi.com.br^ +||bobawb.pomellato.com^ +||boelsl.lastijerasmagicas.com^ +||boewzj.meiji-jisho.com^ +||bombrw.netshoes.com.br^ +||bopmkf.lolahome.es^ +||boqufs.2nn.jp^ +||bpgbcl.coconala.com^ +||bppbnn.vacanceole.com^ +||bpsxld.meutudo.com.br^ +||bqacmp.vidaxl.no^ +||bqhkix.mosmexa.ru^ +||bqoulb.nowo.pt^ +||bqvndd.ifood.com.br^ +||brgrwd.dansko.com^ +||brhwsg.makingnew.co.kr^ +||brjjkd.calzedonia.com^ +||brqory.notino.sk^ +||brrmpm.skanskin.kr^ +||brycys.24mx.se^ +||bsbmex.flaschenpost.ch^ +||bsjgdn.supergoop.com^ +||bskblt.6thstreet.com^ +||bsytzb.hago.kr^ +||btcfbr.mejshop.jp^ +||btmean.cardosystems.com^ +||btptod.aerzteblatt.de^ +||bttmkj.diesel.com^ +||buasmk.earthshoes.com^ +||budibu.saksfifthavenue.com^ +||bugdsm.buffalo-boots.com^ +||bugjyl.jkattire.co.uk^ +||bulozc.tui.be^ +||busrol.st-eustachenissan.com^ +||bvbqyq.odalys-vacances.com^ +||bvexmf.bigtv.ru^ +||bvkuwv.muumuu-domain.com^ +||bvubje.leboncoin.fr^ +||bwkpkx.projectxparis.com^ +||bwmxdg.kimono-365.jp^ +||bwntyd.neuve-a.net^ +||bwspqc.bloomonline.jp^ +||bwujxl.yoga-lava.com^ +||bxbuvv.zeelool.com^ +||bxiaev.linvosges.com^ +||bxlsct.ex-shop.net^ +||bxumze.buckscountycouriertimes.com^ +||bxumze.gadsdentimes.com^ +||bxumze.jacksonville.com^ +||bxumze.news-star.com^ +||bxumze.palmbeachpost.com^ +||bxumze.providencejournal.com^ +||bxumze.recordonline.com^ +||bxumze.times-gazette.com^ +||bxumze.tuscaloosanews.com^ +||byhqrw.gopeople.co.kr^ +||byjpsr.bobags.com.br^ +||bykwtf.victoriassecret.ae^ +||byqdtp.interpark.com^ +||bysfnu.bodeboca.com^ +||byxcbk.ipekevi.com^ +||bzaxgk.ecctur.com^ +||bzcuta.titleboxing.com^ +||bzlold.machi.to^ +||bznxqj.fiat.it^ +||bzqxze.remixshop.com^ +||bzuaqh.roan.nl^ +||caamcs.julipet.it^ +||cagkpu.suitdirect.co.uk^ +||cakmzz.schwab.de^ +||caknmq.rotita.com^ +||caowuq.babyliss-romania.ro^ +||cargdk.bakerross.co.uk^ +||cbnzop.c-c-j.com^ +||cbpgpg.bombshellsportswear.com^ +||cbudbs.tirendo.de^ +||cbuvhv.desertcart.ae^ +||ccdflm.limberry.de^ +||cchlhb.budgetsport.fi^ +||cciqma.cosabella.com^ +||ccztgy.elgiganten.dk^ +||cdeatz.spartoo.it^ +||cdfhpj.automobile.it^ +||cdjhcf.hometogo.es^ +||ceggfe.msc-kreuzfahrten.de^ +||ceoapr.donjoyperformance.com^ +||ceowyn.eseltree.com^ +||cfrnyp.kars4kids.org^ +||cfsaze.retailmenot.com^ +||cfyhym.weightwatchers.fr^ +||cgctsw.mytour.vn^ +||cgqkhc.trendyol.com^ +||cgsisl.owllabs.com^ +||chgwwj.klimate.nl^ +||choymp.pooldawg.com^ +||chpspb.bubbleroom.fi^ +||chrczt.vite-envogue.de^ +||chrooo.soccerandrugby.com^ +||cikvwv.dsdamat.com^ +||cikxuh.iciformation.fr^ +||cilvph.smartbuyglasses.com^ +||ciszhp.finanzfrage.net^ +||ciszhp.gesundheitsfrage.net^ +||ciszhp.motorradfrage.net^ +||cizzvi.beldona.com^ +||cjbdme.conquer.org^ +||cjcqls.onbuy.com^ +||cjejjz.thelasthunt.com^ +||cjfqtu.vitafy.ch^ +||cjlekm.correiodopovo.com.br^ +||cjnbqe.glamira.com.mx^ +||cjulor.marimekko.jp^ +||ckpxtt.justfly.com^ +||cksfgh.jaycar.com.au^ +||ckygge.mohd.it^ +||ckyhec.maxisport.com^ +||clhzet.ubierzswojesciany.pl^ +||clnbze.dziennikbaltycki.pl^ +||clnbze.dzienniklodzki.pl^ +||clnbze.dziennikpolski24.pl^ +||clnbze.dziennikzachodni.pl^ +||clnbze.echodnia.eu^ +||clnbze.expressbydgoski.pl^ +||clnbze.expressilustrowany.pl^ +||clnbze.gazetakrakowska.pl^ +||clnbze.gazetalubuska.pl^ +||clnbze.gazetawroclawska.pl^ +||clnbze.gk24.pl^ +||clnbze.gloswielkopolski.pl^ +||clnbze.gol24.pl^ +||clnbze.gp24.pl^ +||clnbze.gratka.pl^ +||clnbze.gs24.pl^ +||clnbze.kurierlubelski.pl^ +||clnbze.naszemiasto.pl^ +||clnbze.nowiny24.pl^ +||clnbze.nowosci.com.pl^ +||clnbze.nto.pl^ +||clnbze.polskatimes.pl^ +||clnbze.pomorska.pl^ +||clnbze.poranny.pl^ +||clnbze.regiodom.pl^ +||clnbze.stronakobiet.pl^ +||clnbze.telemagazyn.pl^ +||clohzp.hifi.lu^ +||cltxxq.cruises.united.com^ +||clyexf.decathlon.ie^ +||cmcyne.xoticpc.com^ +||cmgfbg.billetreduc.com^ +||cmhmpr.lolaliza.com^ +||cmrhvx.lojapegada.com.br^ +||cmtmwn.ditano.com^ +||cmttvv.bonprix.se^ +||cmzaly.gebrueder-goetz.de^ +||cngbpl.directliquidation.com^ +||cnlbxi.zoopla.co.uk^ +||cnpxwl.cheapcaribbean.com^ +||cntccc.publicrec.com^ +||cnxddc.lodenfrey.com^ +||cogxmr.travelplanet.pl^ +||colgui.vidaxl.pt^ +||coobuo.pinkpanda.cz^ +||cooyxg.tennis-point.de^ +||counmg.greatvaluevacations.com^ +||cowhmc.docmorris.de^ +||coyizl.embracon.com.br^ +||cpiibb.top-office.com^ +||cploms.hipicon.com^ +||cqbbpf.geewiz.co.za^ +||cqbkhv.anacapri.com.br^ +||cqemus.gartenhaus-gmbh.de^ +||cqishr.mobile.de^ +||cqlonl.spartoo.cz^ +||cqpmvc.caminteresse.fr^ +||cqpmvc.capital.fr^ +||cqpmvc.cesoirtv.com^ +||cqpmvc.cuisineactuelle.fr^ +||cqpmvc.gala.fr^ +||cqpmvc.prima.fr^ +||cqpmvc.programme-tv.net^ +||cqpmvc.programme.tv^ +||cqpmvc.voici.fr^ +||cqubdd.metro.co.uk^ +||cqubdd.thisismoney.co.uk^ +||criteo.gap.ae^ +||cruntn.receno.com^ +||crvayw.kagunosato.com^ +||crzohw.intersport.gr^ +||csalhh.okay.cz^ +||csbmey.viherpeukalot.fi^ +||csghyg.reginaclinic.jp^ +||cspmkl.gruppal.com^ +||csymrm.24mx.fr^ +||csyqts.tmon.co.kr^ +||ctiegx.kagu-wakuwaku.com^ +||ctjfdn.sandals.com^ +||ctlayn.talbots.com^ +||ctwqxs.autoscout24.at^ +||ctyjsf.cellphones.com.vn^ +||ctyojp.kibek.de^ +||cudgoz.mifcom.de^ +||cudrqv.sts.pl^ +||cueohf.actieforum.com^ +||cueohf.activo.mx^ +||cueohf.forumactif.com^ +||cueohf.forumattivo.com^ +||cueohf.forumieren.com^ +||cueohf.forumieren.de^ +||cueohf.forumotion.com^ +||cueohf.forumpro.fr^ +||cueohf.forumsactifs.com^ +||cueohf.hungarianforum.com^ +||cufroa.aboutyou.be^ +||cvhefd.ixbt.com^ +||cvoyrn.astotel.com^ +||cvpthv.vipoutlet.com^ +||cvtspo.moebel24.de^ +||cvzvun.vidaxl.de^ +||cwcdmm.zennioptical.com^ +||cxalid.turtlebeach.com^ +||cxasci.sprzedajemy.pl^ +||cxrfns.gu-global.com^ +||cxrptu.danland.dk^ +||cxsaev.stratiaskin.com^ +||cxwisl.jetstereo.com^ +||cyeabs.luxyhair.com^ +||cymuig.assem.nl^ +||cyntgd.anticipazionitv.it^ +||cyohmj.catawiki.com^ +||cyvxfq.jennikayne.com^ +||czdxto.radiopopular.pt^ +||cznfum.lumas.com^ +||cznluk.urbangymwear.co.uk^ +||czujjs.crownandcaliber.com^ +||czvdlp.hgregoire.com^ +||dafvng.sunrefre.jp^ +||daifez.thebay.com^ +||dajdnm.splits59.com^ +||dasych.drmartypets.com^ +||dazdmx.cobra.fr^ +||dbhbgz.suitableshop.nl^ +||dbmbfe.pegipegi.com^ +||dbmyvl.apartmentfinder.com^ +||dbpbyh.americanas.com.br^ +||dbyoei.styleggom.co.kr^ +||dbzgtg.infostrada.it^ +||dbzpek.nike.com^ +||dccfog.petco.com^ +||dcclaa.bunte.de^ +||dcclaa.daskochrezept.de^ +||dcclaa.einfachbacken.de^ +||dcclaa.elle.de^ +||dcclaa.freundin.de^ +||dcclaa.guter-rat.de^ +||dcclaa.harpersbazaar.de^ +||dcclaa.instyle.de^ +||dcclaa.meine-familie-und-ich.de^ +||dcclaa.slowlyveggie.de^ +||dckiwt.eataly.com^ +||dcnkrd.baseballsavings.com^ +||dcsqim.socialdeal.nl^ +||dcxusu.lacuracao.pe^ +||ddioce.wolverine.com^ +||ddlcvm.clas.style^ +||ddmfrg.modivo.bg^ +||ddnahc.mesbagages.com^ +||ddqwdh.sofastyle.jp^ +||ddsndt.azubiyo.de^ +||debjpy.globoshoes.com^ +||decvsm.xlmoto.se^ +||dejpog.sunstar-shop.jp^ +||denpjz.jamesedition.com^ +||detnmz.cuteness.com^ +||detnmz.ehow.com^ +||detnmz.hunker.com^ +||detnmz.livestrong.com^ +||detnmz.sapling.com^ +||detnmz.techwalla.com^ +||dffpxg.targus.com^ +||dfigxb.underarmour.com.mx^ +||dfitgc.yamamay.com^ +||dgaxzn.samma3a.com^ +||dgbftl.luckyvitamin.com^ +||dgbwya.evyapshop.com^ +||dgkpzy.2ch2.net^ +||dgmolb.irishjobs.ie^ +||dgynnj.koctas.com.tr^ +||dgztiz.conrad.se^ +||dhkyrl.discountmags.com^ +||dhmdja.trueprotein.com.au^ +||dhplma.pontofrio.com.br^ +||dhsjpz.bugaboo.com^ +||dhwmtx.stylewe.com^ +||diboji.class101.net^ +||didzrr.nutraholic.com^ +||dikhsb.vividseats.com^ +||diocgn.biltorvet.dk^ +||dioqto.totaljobs.com^ +||diypxh.tillys.com^ +||djbztw.marimekko.com^ +||djmzap.gamivo.com^ +||djnqoe.rani.com.tr^ +||djxjti.oil-stores.gr^ +||djxyhp.ashtondrake.com^ +||dkbicq.elektramat.nl^ +||dkclxi.sitkagear.com^ +||dkmvyl.kidsahoi.ch^ +||dkqibr.onlineverf.nl^ +||dkskbu.demae-can.com^ +||dkvvwq.aosom.ca^ +||dldotl.ouestfrance-auto.com^ +||dlesjf.fightsite.hr^ +||dlesjf.jutarnji.hr^ +||dlisuq.wbw-nail.com^ +||dljdgn.e-lens.com.br^ +||dlqxtm.sssports.com^ +||dlzbax.street-academy.com^ +||dmcnyf.nevzatonay.com^ +||dmdgdu.atmosphera.com^ +||dmqykw.thirtymall.com^ +||dmuwlm.fonteynspas.com^ +||dmvbpz.swimoutlet.com^ +||dncxgm.pegadorfashion.com^ +||dndvms.24s.com^ +||dnecea.vacances-lagrange.com^ +||dngpzy.bfmtv.com^ +||dngpzy.tradingsat.com^ +||dngpzy.zone-turf.fr^ +||dnhrxt.kintetsu-re.co.jp^ +||dnkeyt.svetsochtillbehor.se^ +||dnltkp.lampeetlumiere.fr^ +||dnxcok.pentik.com^ +||doabqu.s3.com.tw^ +||doagpm.promart.pe^ +||doclec.supersmart.com^ +||doclen.hypedc.com^ +||docyjy.ryderwear.com^ +||dolrfm.fotoregistro.com.br^ +||dopljl.noleggiosemplice.it^ +||dpckzt.mesrecettesfaciles.fr^ +||dptgdj.usagi-online.com^ +||dptkdh.joinhoney.com^ +||dqefxd.kaigoworker.jp^ +||dqntra.home-to-go.ca^ +||dqqfrs.qatarairways.com^ +||dqsfil.pikolinos.com^ +||druzja.canmart.co.kr^ +||drvive.lamoda.ru^ +||dsdjbj.abracadabra.com.br^ +||dshcej.aosom.co.uk^ +||dsvmgu.snipes.it^ +||dtnmyp.cocotorico.com^ +||dtqcpx.eskor.se^ +||dtzrrz.green-japan.com^ +||dujgiq.trendhim.pl^ +||duqqrl.jefchaussures.com^ +||dvczvm.cyfrowe.pl^ +||dvhcob.jtrip.co.jp^ +||dvmira.keskisenkello.fi^ +||dvrxgs.fc-moto.de^ +||dvvkov.agrieuro.de^ +||dwbotr.ssg.com^ +||dwglgp.dunelm.com^ +||dwrlwx.polo-motorrad.de^ +||dwtpxq.karaca-home.com^ +||dxeldq.madeindesign.com^ +||dxkuwz.domyown.com^ +||dxpxgy.jdsports.com^ +||dxqbfo.capfun.nl^ +||dxrkvm.cheryls.com^ +||dxrlkh.icanvas.com^ +||dyghye.fashionesta.com^ +||dynamic-content.croquetteland.com^ +||dyqebg.aboutyou.hr^ +||dysbvu.bodyandfit.com^ +||dyzmpx.speedway.fr^ +||dzbbzg.carfinance247.co.uk^ +||dzforp.buscape.com.br^ +||dzjhok.teufelaudio.at^ +||dzkygl.ullapopken.nl^ +||dzsevh.voyage-prive.com^ +||dzszbb.homes.co.jp^ +||dztatn.soulberry.jp^ +||dzuthv.fahrrad-xxl.de^ +||dzwqfq.alpitour.it^ +||eakaih.creditas.com^ +||eakwza.bipicar.com^ +||eatjav.ekosport.fr^ +||eauicw.artnature.co.jp^ +||ebfudo.underarmour.cl^ +||ebgagg.pink.rs^ +||ebgfyn.zenden.ru^ +||ebhjhw.bonprix.es^ +||ebmhpt.sneakscloud.com^ +||ebnpqi.carrefourlocation.fr^ +||ebreid.garneroarredamenti.com^ +||ebtxxz.travellink.se^ +||ebwupu.superbrightleds.com^ +||ebxirc.taylorstitch.com^ +||ecctjf.leroymerlin.com.br^ +||ecdoib.26p.jp^ +||ecefyu.geox.com^ +||edavbu.vittz.co.kr^ +||ednqjm.magnanni.com^ +||eduynp.fcl-hid.com^ +||eecfrq.edreams.de^ +||eedijm.bakeca.it^ +||eennme.vidaxl.sk^ +||eesexz.butyraj.pl^ +||eetzod.bemol.com.br^ +||eewdrt.fashiontofigure.com^ +||efadyz.smartbuyglasses.co.nz^ +||efbenj.adorebeauty.com.au^ +||efglbp.baur.de^ +||efplso.epost.go.kr^ +||efsqwi.krueger-dirndl.de^ +||efuxqe.tatilbudur.com^ +||efwhcj.emp-shop.se^ +||efxzea.badshop.de^ +||egbqvs.vila.com^ +||egdehs.selected.com^ +||eghrbf.immowelt.at^ +||egvemw.aboutyou.ee^ +||ehauzf.jewlr.ca^ +||ehavol.consul.com.br^ +||ehdkzm.ottoversand.at^ +||ehedwd.sikayetvar.com^ +||ehrlgb.izlato.sk^ +||eicyds.qoo10.jp^ +||eifeou.pandahall.com^ +||eiftfa.fashionette.de^ +||eikwax.marmot.com^ +||eimcqw.dickies.com^ +||einrfh.justanswer.com^ +||eiorzm.orvis.com^ +||eisdog.shape.com^ +||eitkrg.loriblu.com^ +||ejbbcf.finishline.com^ +||ejejip.bjjfanatics.com^ +||ejhyhg.travelist.pl^ +||ejimtl.costway.com^ +||ejkmld.tradus.com^ +||ejpcuw.mitsubishilaval.com^ +||ejrbgi.tous.com^ +||ekfwof.finnishdesignshop.fi^ +||eklexu.kibuba.com^ +||ekphpa.perfectlypriscilla.com^ +||eltlio.boribori.co.kr^ +||elyxvt.wilsonamplifiers.com^ +||embknh.perriconemd.com^ +||emdlqs.longtallsally.com^ +||emedns.bonify.de^ +||emrdnt.sumaity.com^ +||emzorz.allergybuyersclub.com^ +||enbazj.ilbianconero.com^ +||endljp.168chasa.bg^ +||endljp.abv.bg^ +||endljp.activenews.ro^ +||endljp.bazar.bg^ +||endljp.bgdnes.bg^ +||endljp.dariknews.bg^ +||endljp.edna.bg^ +||endljp.fakti.bg^ +||endljp.gong.bg^ +||endljp.kupujemprodajem.com^ +||endljp.nova.bg^ +||endljp.pariteni.bg^ +||endljp.sinoptik.bg^ +||endljp.vesti.bg^ +||endljp.ziuaconstanta.ro^ +||eniobs.moncler.com^ +||eofjtw.jjshouse.se^ +||eofwfj.ria.com^ +||eoiaso.onofre.com.br^ +||eoiqpm.gloria-jeans.ru^ +||eokdol.flaconi.at^ +||eokzre.jd-sports.com.au^ +||eolvci.olx.ro^ +||eonmxd.urban-research.jp^ +||eoocpp.fujiidaimaru.co.jp^ +||eozwcp.jetex.com^ +||epcdko.forevernew.com.au^ +||epezqy.plaisio.gr^ +||epixkf.dentrodahistoria.com.br^ +||epnfoq.cyberpowersystem.co.uk^ +||eqingl.ivet.bg^ +||eqkwat.histoiredor.com^ +||eqvioe.polihome.gr^ +||ergrbp.hobidunya.com^ +||ermiph.petermanningnyc.com^ +||esqjac.costakreuzfahrten.de^ +||esqxrp.bonprix-fl.be^ +||essmnx.edreams.ch^ +||eswpwi.xlmoto.pl^ +||etgaad.smartphoto.be^ +||etgkbu.unieuro.it^ +||etoqel.nordicnest.de^ +||etppmr.luko.eu^ +||etwovr.underarmour.eu^ +||etznkn.ec-store.net^ +||eubynl.baby-sweets.de^ +||euqsfp.belluna.jp^ +||eusdbk.philosophyofficial.com^ +||evhvza.sodimac.com.br^ +||evkjai.grandado.com^ +||evnzcl.ranking.ac^ +||evrget.nikkan-gendai.com^ +||evupmg.olehenriksen.com^ +||ewalxb.epicsports.com^ +||ewfarp.kappa.com^ +||ewfrnd.stockmann.ru^ +||eworfe.babyartikel.de^ +||ewygto.swanicoco.co.kr^ +||exbujk.glamood.com^ +||exmeqy.smartbuyglasses.de^ +||exwvpm.misumi-ec.com^ +||exxwhi.jmty.jp^ +||eyenox.eschuhe.de^ +||eyfygb.yourfirm.de^ +||eylnhf.jobhouse.jp^ +||eymiwj.cancan.ro^ +||eymiwj.ciao.ro^ +||eymiwj.promotor.ro^ +||eymiwj.prosport.ro^ +||eymqcj.lineonline.it^ +||eyqbvz.greysonclothiers.com^ +||eywvko.shaddy.jp^ +||eyypxz.canifa.com^ +||eyzthp.constellation.com^ +||eyzubm.gooutdoors.co.uk^ +||ezdjat.shoesme.nl^ +||ezhddx.thesouledstore.com^ +||eziccr.dedoles.cz^ +||ezobam.jdsports.nl^ +||ezuhbd.industrialdiscount.it^ +||ezvjys.belezanaweb.com.br^ +||fagtgb.acorn.com^ +||fahmta.accountingweb.co.uk^ +||fahmta.f1i.com^ +||fahmta.flashbak.com^ +||fahmta.lipsum.com^ +||fahmta.metoffice.gov.uk^ +||fahmta.polishexpress.co.uk^ +||fahmta.racefans.net^ +||fahmta.theaa.com^ +||faokwl.sklepogrodniczy.pl^ +||faqtjp.redley.com.br^ +||fauzxn.hairlavie.com^ +||fazphz.theiconic.com.au^ +||fbjpji.europcar.es^ +||fbycnk.chiaki.vn^ +||fcizcj.burlingtonfreepress.com^ +||fckxdb.hometogo.it^ +||fcnqkw.xeroshoes.com^ +||fcpszk.telestream.net^ +||fcswcx.cyrillus.fr^ +||fculcz.joann.com^ +||fdixsh.platypusshoes.com.au^ +||fdkeip.azafashions.com^ +||fdowic.hoiku.mynavi.jp^ +||fdxtbs.meeters.org^ +||febcyv.joshi-spa.jp^ +||feppiu.systemaction.es^ +||feqbqn.rent.com^ +||fespzx.sfr.fr^ +||feuqzl.woolrich.com^ +||ffrmel.gerryweber.com^ +||ffrmwn.musinsa.com^ +||ffuodj.lanebryant.com^ +||ffyvsn.evisu.com^ +||fgfecw.rebelle.com^ +||fgfukd.sakazen.co.jp^ +||fgjfwz.legami.com^ +||fglrgt.ruggable.com^ +||fgmaal.u-canshop.jp^ +||fgosob.unhcr.it^ +||fgqxcz.thehipstore.co.uk^ +||fhdnds.mrmarvis.com^ +||fhiwyq.axiory.com^ +||fhngty.vetsecurite.com^ +||fhqrnb.feelway.com^ +||fhrpqp.futfanatics.com.br^ +||fiawmk.empik.com^ +||fiimox.lebenskraftpur.de^ +||fimyxg.bloomberght.com^ +||fimyxg.haberturk.com^ +||fiowtf.hyggee.com^ +||firurx.invia.hu^ +||fizopp.duluthtrading.com^ +||fjdzgn.paulfredrick.com^ +||fjgcai.zlavomat.sk^ +||fjighz.armaniexchange.com^ +||fjkjaj.peterhahn.nl^ +||fjortk.braun-hamburg.com^ +||fjuccm.uktsc.com^ +||fkdaik.lightinthebox.com^ +||fkeupa.bett1.de^ +||fkmdky.lifehacker.ru^ +||fkmzox.teinei.co.jp^ +||fksngj.bonnyread.com.tw^ +||fkxlsc.fenix-store.com^ +||fldoai.municipal.com^ +||flnkmj.hometogo.fr^ +||flpwto.lohaco.jp^ +||fltuyy.philippemodel.com^ +||flznib.weblio.jp^ +||fmjgtp.dentalspeed.com^ +||fmpjka.moroccanoil.com^ +||fmqidg.letras.com^ +||fmqidg.letras.mus.br^ +||fmqidg.ouvirmusica.com.br^ +||fmssly.pets4homes.co.uk^ +||fmufpo.machicon.jp^ +||fnajvu.framingsuccess.com^ +||fnfhgj.secretsales.com^ +||fngwdl.allheart.com^ +||fnlvhy.wowma.jp^ +||fnmvok.aaaradiatory.cz^ +||fnoqgg.roninwear.com^ +||fokbrd.impo.ch^ +||foomjy.teacollection.com^ +||fpadga.mcruises.ru^ +||fpghll.rossmann.hu^ +||fpptmv.mrmarvis.co.uk^ +||fpvrgm.blackforestdecor.com^ +||fpxewa.ilmeteo.it^ +||fqcqnb.dwr.com^ +||fqppgv.cheapoair.com^ +||fqxnlh.kgcshop.co.kr^ +||fraalb.cebanatural.com^ +||frbdzc.goguynet.jp^ +||frbmdx.fwrd.com^ +||frdoki.acrylicpainting.work^ +||frdoki.athleticshoes.work^ +||frdoki.charcoal.work^ +||frdoki.copperprint.work^ +||frdoki.gamefactory.jp^ +||frdoki.heisei-housewarming.work^ +||frdoki.liquidfoundation.work^ +||frdoki.mineralfoundation.work^ +||frdoki.nailcolor.work^ +||frdoki.selftanning.work^ +||frdoki.studioglass.work^ +||frdoki.woodblock.work^ +||frqbff.hedleyandbennett.com^ +||frztrk.beaute-test.com^ +||frztrk.netmums.com^ +||fsbozl.dillards.com^ +||fsegfy.lepoint.fr^ +||fsqwdj.live-tennis.eu^ +||fsugco.rcn.nl^ +||ftaysn.meinekette.de^ +||ftmsyy.jbl.com.br^ +||ftnnce.autodoc.dk^ +||ftuart.chomedeynissan.com^ +||ftysya.aboutyou.de^ +||ftzets.silkfred.com^ +||fudezz.bolasport.com^ +||fudezz.grid.id^ +||fudezz.gridoto.com^ +||fudezz.kompas.com^ +||fudezz.kompas.tv^ +||fudezz.kompasiana.com^ +||fudezz.motorplus-online.com^ +||fudezz.sonora.id^ +||fufbgj.pazzo.com.tw^ +||fufoir.aif.ru^ +||fuicmy.hana-mail.jp^ +||fuooms.aetrex.com^ +||furlhp.kango.mynavi.jp^ +||fuzrct.gutteridge.com^ +||fuzrxc.aboutyou.nl^ +||fvuitt.alibabuy.com^ +||fvvyjd.jtv.com^ +||fwmqki.eckerle.de^ +||fwpugy.savilerowco.com^ +||fwsgvo.takami-labo.com^ +||fxfezg.bodylab24.de^ +||fxmdjr.mamastar.jp^ +||fxmdjr.saita-puls.com^ +||fxmdjr.yogajournal.jp^ +||fxmkij.jny.com^ +||fxsdex.longvadon.com^ +||fyccsw.eobuwie.com.pl^ +||fyebmf.lifenet-seimei.co.jp^ +||fygild.rueonline.com^ +||fywfld.fjellsport.no^ +||fzeidx.vidaxl.gr^ +||fzexkf.drogaraia.com.br^ +||fzgpzp.opodo.de^ +||fzqjvw.oakandluna.com^ +||gaafbi.fashiondays.hu^ +||gaccwr.dutramaquinas.com.br^ +||gagysn.floward.com^ +||gahhfg.bobo.com.br^ +||garvum.julesb.co.uk^ +||gastdn.wolfandbadger.com^ +||gbmfid.1mg.com^ +||gbncqh.koneko-breeder.com^ +||gbvrgf.hibarai.com^ +||gcoiys.cutsclothing.com^ +||gcowhi.thesalarycalculator.co.uk^ +||gcudsn.tradetested.co.nz^ +||gcwubi.happypancake.fi^ +||gcxiyx.inspireuplift.com^ +||gdfsrd.itslighting.kr^ +||gdphhl.elite-auto.fr^ +||gdqlno.weisshaus.de^ +||gdsngr.chainreactioncycles.com^ +||gecfnc.foresight.jp^ +||gedozw.autoscout24.cz^ +||gefkkw.cyberport.de^ +||gejzgq.gehaltsvergleich.com^ +||getpxq.rivolishop.com^ +||geygin.bonprix.ch^ +||gfeede.theminda.com^ +||gfgcwf.vidaxl.lv^ +||gfgywe.abril.com.br^ +||gflpvq.rufflebutts.com^ +||gfnokk.natro.com^ +||gforat.grahambrown.com^ +||gfqhvj.wunderkarten.de^ +||ggduev.cobone.com^ +||ggduzx.potterybarn.com.kw^ +||ghdlry.greetz.nl^ +||ghifrc.baldai1.lt^ +||ghnwss.fmsstores.gr^ +||ghonnz.columbiasports.co.jp^ +||ghrnbw.avocadostore.de^ +||ghrzlu.skechers.com.tr^ +||ghwkuv.lagirl.co.kr^ +||giojhm.finya.de^ +||givoiq.nichiigakkan-careerplus.jp^ +||gizsyj.thegrommet.com^ +||gjljde.kathmandu.co.nz^ +||gjmovc.epapoutsia.gr^ +||gjndsa.amaro.com^ +||gkcqyo.aquazzura.com^ +||gkfdkf.jdsports.co.uk^ +||gkgygj.verivox.de^ +||gkopqp.coccodrillo.eu^ +||gksqdt.reitmans.com^ +||glbgox.djoser.de^ +||glxdlf.tickets.ua^ +||glzsji.nordman.ru^ +||gmmhlk.techstar.ro^ +||gmpcyv.svinando.com^ +||gmqvql.furnwise.co.uk^ +||gmqyld.jacksonandperkins.com^ +||gmrhzf.wolfermans.com^ +||gmsllx.sorteonline.com.br^ +||gmufag.e1.ru^ +||gmufag.fontanka.ru^ +||gmufag.nn.ru^ +||gmufag.starhit.ru^ +||gmufag.woman.ru^ +||gmxcdm.vestel.com.tr^ +||gnfjvt.radpowerbikes.com^ +||gnfqtz.smartphoto.se^ +||gnkvyn.freeportstore.com^ +||gnnkrz.josbank.com^ +||gnozmx.locasun.fr^ +||gnrmty.eurovaistine.lt^ +||goazlf.mytoys.de^ +||gocuxy.baycrews.jp^ +||gogaej.momastore.jp^ +||gotpiu.regenbogen.com^ +||gozncj.stealthangelsurvival.com^ +||gpiljd.thetiebar.com^ +||gpiyhj.leopalace21.com^ +||gppppq.newcars.com^ +||gpsqnl.delsey.com^ +||gpukye.holabirdsports.com^ +||gpzhcc.lapeyre.fr^ +||gqhfjr.sizeofficial.es^ +||gqjppj.rentcafe.com^ +||gqjrfv.autodoc.fi^ +||gqlaur.currentcatalog.com^ +||gqmuky.kaigonohonne.com^ +||gqqxum.mannys.com.au^ +||gqraqz.e-domizil.de^ +||grnext.crockpot-romania.ro^ +||grofag.hollandandbarrett.ie^ +||grxokm.kirstein.de^ +||grxsaq.tagheuer.com^ +||grxxvx.centerparcs.nl^ +||grzhwl.adiamor.com^ +||gsbygc.clarks.eu^ +||gsftuy.nutripure.fr^ +||gsmqez.xcite.com^ +||gspjom.3balls.com^ +||gspqch.cake.jp^ +||gsyegj.shatura.com^ +||gtgvze.chintai.net^ +||gtzpic.opodo.co.uk^ +||guelvp.1111.com.tw^ +||guhyqz.hawesko.de^ +||guufxr.sdbullion.com^ +||guwuym.barneys.co.jp^ +||gvdqzy.milanoo.com^ +||gvfbpo.diafer.com.br^ +||gvxnff.soulara.com.au^ +||gwguyh.edreams.es^ +||gwizal.yumbutter.com^ +||gwropn.soelu.com^ +||gwupkw.flexform.com.br^ +||gxcaxz.cresus.fr^ +||gxleat.attenir.co.jp^ +||gxusko.pinkpanda.hu^ +||gxyaxf.pixartprinting.be^ +||gxyojn.underarmour.fr^ +||gybles.shopee.ph^ +||gyehtm.thebridge.it^ +||gyqbrs.qvc.it^ +||gyqntn.dekoruma.com^ +||gyvcwd.cdiscount.com^ +||gyvlgl.sportitude.com.au^ +||gyvyoc.dermoeczanem.com^ +||gyvzjp.conradelektronik.dk^ +||gyxtyd.yummicandles.com^ +||gyydua.dakine.com^ +||gzbcuy.mamarella.com^ +||gzjroa.bradsdeals.com^ +||gzlxvg.papy.co.jp^ +||halvwk.jetcost.ie^ +||hambtr.unilife.co.jp^ +||haoexw.buysellonline.jp^ +||hauhws.asgoodasnew.de^ +||hauixd.halistores.com^ +||hauzdj.quellogiusto.it^ +||haxdym.min-breeder.com^ +||hazawl.veke.fi^ +||hbaazk.bukalapak.com^ +||hbahrd.yogibo.jp^ +||hbfpvm.comolib.com^ +||hcdnpe.iareduceri.ro^ +||hchlqx.ghbass.com^ +||hcjarn.parfumsclub.de^ +||hcjpbc.closerweekly.com^ +||hcjpbc.intouchweekly.com^ +||hcjpbc.j-14.com^ +||hcjpbc.lifeandstylemag.com^ +||hcjpbc.mensjournal.com^ +||hcjpbc.muscleandfitness.com^ +||hcjpbc.okmagazine.com^ +||hcjpbc.radaronline.com^ +||hcjpbc.usmagazine.com^ +||hckjsc.kastner-oehler.at^ +||hclspy.gourmetencasa-tcm.com^ +||hcmhqb.radpowerbikes.ca^ +||hcsmec.decathlon.pt^ +||hczvwi.soldejaneiro.com^ +||hdicsm.autoscout24.be^ +||hdnagl.womensecret.com^ +||hdxdhu.zumnorde.de^ +||hearob.klix.ba^ +||hekhnn.turnkeyvr.com^ +||hemblx.vans.cl^ +||hesprh.sony.jp^ +||heuida.shopafrm.com^ +||hevqaz.submarino.com.br^ +||heyaxr.fashiondays.bg^ +||hfmogh.piatradesign.ro^ +||hfmphs.loccitane.com^ +||hfoghh.inter.it^ +||hfolmr.office-com.jp^ +||hfpwcx.supermercadosmas.com^ +||hfvura.noriel.ro^ +||hgprha.mizalle.com^ +||hgzqxe.hanesbrandsinc.jp^ +||hhbxcs.tylko.com^ +||hhwcqa.underarmour.com.br^ +||hidjoi.perfumesclub.com^ +||hijxfm.gaspedaal.nl^ +||hikmxb.botovo.cz^ +||hiknhe.tanabesports.com^ +||hipkqt.contorion.de^ +||hitmse.altinbas.com^ +||hiuplq.diretta.it^ +||hiuplq.eredmenyek.com^ +||hiuplq.flashscore.bg^ +||hiuplq.flashscore.ca^ +||hiuplq.flashscore.co.id^ +||hiuplq.flashscore.co.jp^ +||hiuplq.flashscore.co.ke^ +||hiuplq.flashscore.co.uk^ +||hiuplq.flashscore.com.au^ +||hiuplq.flashscore.com.br^ +||hiuplq.flashscore.com.ng^ +||hiuplq.flashscore.com.tr^ +||hiuplq.flashscore.com^ +||hiuplq.flashscore.de^ +||hiuplq.flashscore.dk^ +||hiuplq.flashscore.gr^ +||hiuplq.flashscore.in^ +||hiuplq.flashscore.nl^ +||hiuplq.flashscore.pl^ +||hiuplq.flashscore.pt^ +||hiuplq.flashscore.ro^ +||hiuplq.flashscore.se^ +||hiuplq.flashscore.sk^ +||hiuplq.flashscore.vn^ +||hiuplq.livescore.in^ +||hiuplq.livesport.cz^ +||hiuplq.liveticker.com^ +||hiuplq.resultados.com^ +||hiuplq.rezultati.com^ +||hiuplq.soccer24.com^ +||hiuplq.soccerstand.com^ +||hiuplq.tennis24.com^ +||hiyksu.karllagerfeldparis.com^ +||hjbgdc.fracora.com^ +||hjgcdi.farmacybeauty.com^ +||hjgkdv.fiverr.com^ +||hjyfhi.misterspex.fi^ +||hksfkh.otomotoprofi.pl^ +||hkskqs.belvilla.fr^ +||hlagkl.vinatis.com^ +||hleouh.feelunique.com^ +||hlhyzh.fann.cz^ +||hlqpie.waves.com^ +||hlreoc.gonuldensevenler.com^ +||hlygsp.modivo.ro^ +||hmakpa.saksoff5th.com^ +||hmcncq.pierreetvacances.com^ +||hmeagu.e87.com^ +||hmeoda.restplatzboerse.ch^ +||hmeqvp.essencemakeup.com^ +||hmfnaj.notino.bg^ +||hmgnjf.autoscout24.it^ +||hmjyvj.glamira.it^ +||hmlvxk.julian-fashion.com^ +||hmoctt.leboutique.com^ +||hmpfja.up-t.jp^ +||hmvbmf.vidaxl.es^ +||hmyjoj.5-fifth.com^ +||hmziwy.yearbookordercenter.com^ +||hnibej.transat.com^ +||hnnuaa.willhaben.at^ +||hnpgjp.cyclemarket.jp^ +||hntnca.petpetgo.com^ +||hnwttl.re-katsu.jp^ +||hnytrd.ssfshop.com^ +||hoojts.demmelhuber.net^ +||hpbrqr.daihatsu.co.jp^ +||hpcduz.shoemall.com^ +||hphtjv.orellfuessli.ch^ +||hplkcs.emp-shop.no^ +||hplrqg.interflora.fr^ +||hpxsci.miista.com^ +||hpymkg.air-austral.com^ +||hqfthz.betterlifeuae.com^ +||hqgkmj.marine-deals.co.nz^ +||hqiwnj.clarins.pt^ +||hqjuww.kolesa-darom.ru^ +||hqwtqa.intelligence-artificielle-school.com^ +||hqxbuy.rugs-direct.com^ +||hrcpql.candymagic.jp^ +||hrnhcu.kapiva.in^ +||hrprwf.proteinocean.com^ +||hruoxg.5vorflug.de^ +||hruyiq.auction.co.kr^ +||hrwgsq.loesdau.de^ +||hsaxca.americatv.com.pe^ +||hslkll.psychic.de^ +||hssyje.theathletesfoot.com.au^ +||hsvrww.plain-me.com^ +||hswgqa.jmsc.co.jp^ +||htcnbx.odkarla.cz^ +||htewng.plesio.bg^ +||hthzoa.notino.hu^ +||htmgrl.jollyroom.no^ +||htqfxh.vuch.cz^ +||hudhno.jdsports.es^ +||huechl.paige.com^ +||hugupq.selency.fr^ +||huqkbq.misterrunning.com^ +||husoxn.investors.com^ +||hutkse.wecandoo.fr^ +||hvpeme.petedge.com^ +||hvrhgt.the-sun.com^ +||hvrhgt.thescottishsun.co.uk^ +||hvrhgt.thesun.co.uk^ +||hvrhgt.thesun.ie^ +||hvrzig.e-domizil.ch^ +||hvteqk.snowleader.com^ +||hvuihu.undiz.com^ +||hvwgbj.wikinger-reisen.de^ +||hvxymx.tui.pl^ +||hwkfzf.meinauto.de^ +||hwnmhi.sunbeltrentals.com^ +||hwwjsi.aboutyou.pl^ +||hwyytk.verabradley.com^ +||hwyyuy.ringcentral.com^ +||hxbgxi.seikousa.com^ +||hxiabp.colins.com.tr^ +||hxmssa.wordans.nl^ +||hxnxxq.tophifi.pl^ +||hycywj.akkushop.de^ +||hyeorg.gmarket.co.kr^ +||hyibby.lampen24.be^ +||hykaqn.dormideo.com^ +||hyxvec.michaelpage.co.jp^ +||hyybul.kaskus.co.id^ +||hzeetn.natalie.mu^ +||hzoouw.s-re.jp^ +||hzuheh.palcloset.jp^ +||hzvsld.fr.filorga.com^ +||hzymxd.nocibe.fr^ +||hzzyhl.jobs.ch^ +||iaalxo.vans.ru^ +||iabdly.hoselink.com.au^ +||iabgvi.usadosbr.com^ +||iatoex.kahve.com^ +||iazwzp.lyst.com^ +||ibbmfq.decameron.com^ +||ibbmly.moneymetals.com^ +||ibkups.rci.com^ +||ibtmla.discovery-expedition.com^ +||icaubf.casamundo.de^ +||icfckg.myft.com.br^ +||icmakp.united-arrows.tw^ +||icoktb.onygo.com^ +||ictrjw.barcastores.com^ +||idbkfy.kango-roo.com^ +||idgptg.esm-computer.de^ +||idianw.warmteservice.nl^ +||idlqzb.puntoscolombia.com^ +||idndlc.kango-oshigoto.jp^ +||idqwqm.kkday.com^ +||ieeowa.marcjacobsbeauty.com^ +||iefiop.raizs.com.br^ +||iegwze.goldcar.es^ +||iepfcy.farmandfleet.com^ +||iesbpm.novasol.dk^ +||ievdpg.humanscale.com^ +||iffalh.y-aoyama.jp^ +||ifkzro.llbean.co.jp^ +||ifnyop.priceline.com^ +||ifqtfo.rugsusa.com^ +||ifxnyp.troquer.com.mx^ +||ifyane.balaan.co.kr^ +||igexlg.weltbild.de^ +||igfjkh.vw.com.tr^ +||igjytl.unice.com^ +||ignchq.kentaku.co.jp^ +||igxqyi.iese.edu^ +||igyswj.sixt.it^ +||ihcamp.ybtour.co.kr^ +||ihcrqa.sonnenklar.tv^ +||ihfwer.aboutyou.com^ +||ihnbqe.shane.co.jp^ +||ihpyig.hometogo.ch^ +||ihtnxu.tannergoods.com^ +||iiajtl.zeit.de^ +||iiqtru.aunworks.jp^ +||iirpzp.novasol.com^ +||ijaabm.bravotv.com^ +||ijaabm.eonline.com^ +||ijaabm.nbcsports.com^ +||ijaabm.rotoworld.com^ +||ijaabm.telemundo.com^ +||ijaabm.telemundodeportes.com^ +||ijaabm.usanetwork.com^ +||ijafud.heathcotes.co.nz^ +||ijhlca.lulus.com^ +||ijifwb.green-acres.fr^ +||ikdxfh.jollyroom.se^ +||ikneio.aquantindia.com^ +||ikvjvw.pharma.mynavi.jp^ +||ilepwo.bonprix.at^ +||ilfmju.right-on.co.jp^ +||ilnfdq.cybozu.co.jp^ +||iltcaf.immobilienscout24.de^ +||ilvqos.lyst.es^ +||imbhdu.housedo.co.jp^ +||imhwzc.blibli.com^ +||imjdmq.emcasa.com^ +||imjsfy.allbeauty.com^ +||imjxso.bristol.nl^ +||indiyo.38-8931.com^ +||inencr.woodhouseclothing.com^ +||inmtuj.jobs.ie^ +||inmuzp.popsockets.com^ +||inpney.warehouse-one.de^ +||inqjal.dickssportinggoods.com^ +||iobyeq.dallmayr-versand.de^ +||ioeczq.juno.co.uk^ +||ioedpk.oneill.com^ +||iofeth.pulsee.it^ +||iokhsx.unionmonthly.jp^ +||iooecb.bergzeit.de^ +||ioovmg.flexicar.es^ +||ioovrf.coen.co.jp^ +||iopqct.drogasil.com.br^ +||iopxiu.wingly.io^ +||ioxqdp.leatherology.com^ +||ipcfgw.pieces.com^ +||ipdmlm.yoriso.com^ +||iphufr.circleline.com^ +||ipixsi.aboutyou.fi^ +||ipkasp.nissan.co.jp^ +||iptmgi.akan.co.kr^ +||iptmih.hifi-regler.de^ +||ipummv.pharao24.de^ +||ipyjxs.chowsangsang.com^ +||iqbjqv.airarabia.com^ +||iqcxki.johosokuhou.com^ +||iqjwrk.crocodile.co.jp^ +||iquirc.motionrc.com^ +||iqyioj.harryanddavid.com^ +||irfiqx.babyneeds.ro^ +||irqewz.vilebrequin.com^ +||irqoqr.industrywest.com^ +||irurng.wondershare.jp^ +||iseuaa.olx.pl^ +||isjoui.cainz.com^ +||isovav.akomeya.jp^ +||itkdlu.equideow.com^ +||itznub.gap.co.uk^ +||iujeaa.menz-style.com^ +||iuryhk.soccer.com^ +||iuwiim.steigenberger.com^ +||ivbxao.roastmarket.de^ +||ivcxpw.kogan.com^ +||ivdguf.elephorm.com^ +||ivegss.autotrack.nl^ +||ivencq.nike.com.hk^ +||ivmwbl.hear.com^ +||ivwkkh.nexity.fr^ +||iwgfdj.iko-yo.net^ +||iwhzhi.packstyle.jp^ +||iwlnpw.claudiepierlot.com^ +||iwmjsk.jw.com.au^ +||iwpneu.eneba.com^ +||ixrzwf.decathlon.be^ +||ixsgoy.getpenta.com^ +||ixtzad.fetch.co.uk^ +||iycifx.coldwatercreek.com^ +||iyvzqt.agabangmall.com^ +||izbwce.secretoutlet.com.br^ +||izegag.shop24direct.de^ +||izremx.dentalplans.com^ +||izwgxw.acordocerto.com.br^ +||jambwe.transsibinfo.com^ +||janzoz.1001pneus.fr^ +||jaomlf.giftmall.co.jp^ +||jatflh.pharmamarket.be^ +||jatpmv.megacolchoes.com.br^ +||javvso.newone-shop.com^ +||jbbljg.autoscout24.bg^ +||jbezdi.ilsole24ore.com^ +||jcaqvl.twinset.com^ +||jcblar.floridarentals.com^ +||jcimgi.bestcuckoo.co.kr^ +||jcplzp.lancel.com^ +||jcpyyh.laredoute.es^ +||jdbjhd.saniweb.nl^ +||jdgtgb.4players.de^ +||jdgtgb.autoguru.de^ +||jdgtgb.buffed.de^ +||jdgtgb.desired.de^ +||jdgtgb.dnn.de^ +||jdgtgb.express.de^ +||jdgtgb.familie.de^ +||jdgtgb.fussballfieber.de^ +||jdgtgb.gamezone.de^ +||jdgtgb.giga.de^ +||jdgtgb.goettinger-tageblatt.de^ +||jdgtgb.haz.de^ +||jdgtgb.hildesheimer-allgemeine.de^ +||jdgtgb.kicker.de^ +||jdgtgb.kino.de^ +||jdgtgb.ksta.de^ +||jdgtgb.ln-online.de^ +||jdgtgb.lvz.de^ +||jdgtgb.mainpost.de^ +||jdgtgb.maz-online.de^ +||jdgtgb.meineorte.com^ +||jdgtgb.mopo.de^ +||jdgtgb.op-marburg.de^ +||jdgtgb.paz-online.de^ +||jdgtgb.pcgames.de^ +||jdgtgb.pcgameshardware.de^ +||jdgtgb.rnz.de^ +||jdgtgb.rundschau-online.de^ +||jdgtgb.spielaffe.de^ +||jdgtgb.sportbuzzer.de^ +||jdgtgb.stylevamp.de^ +||jdgtgb.t-online.de^ +||jdgtgb.tierfans.net^ +||jdgtgb.twitterperlen.de^ +||jdgtgb.unnuetzes.com^ +||jdgtgb.unsere-helden.com^ +||jdgtgb.volksstimme.de^ +||jdgtgb.watson.de^ +||jdgtgb.weser-kurier.de^ +||jdzmqj.thousandtrails.com^ +||jeccmq.wehkamp.nl^ +||jelndb.truereligion.com^ +||jeyttn.snipes.com^ +||jfltzz.riu.com^ +||jfnnzq.quelle.de^ +||jfpltp.eyeforfashion.pl^ +||jfyecc.machineseeker.com^ +||jgzhsu.caterer.com^ +||jhfuhi.b-exit.com^ +||jhnmpm.kiwoko.com^ +||jhprvk.skstoa.com^ +||jhpwrn.laredoute.ch^ +||jhrewn.venezia.pl^ +||jhzwle.ryuryumall.jp^ +||jiciqm.antalyahomes.com^ +||jifjai.instamotion.com^ +||jirnxq.guud.com^ +||jjcypx.vrai.com^ +||jjdciu.justspices.de^ +||jkgeyo.urbanara.de^ +||jkizha.theshoecompany.ca^ +||jknarp.kakaku.com^ +||jkwdsl.videt.ro^ +||jkzoac.headphones.com^ +||jldtlh.fashionnova.com^ +||jlffeu.nadula.com^ +||jlhwxm.spartoo.es^ +||jlnyti.mugo.com.tr^ +||jmcnwr.bricoprive.com^ +||jmvmrv.e-davidwalker.com^ +||jnkqnf.cifraclub.com.br^ +||jnkqnf.cifraclub.com^ +||jnkqnf.palcomp3.com.br^ +||jnzedp.his-j.com^ +||joqawz.snipes.nl^ +||joskgw.sewingmachinesplus.com^ +||jowtkv.vertbaudet.de^ +||jpfufu.xlmoto.co.uk^ +||jpluzr.autoc-one.jp^ +||jprbql.jdsports.fr^ +||jptobh.network.com.tr^ +||jpwfkn.besthotels.es^ +||jpwfrl.mona.de^ +||jqlzwb.bauhaus.fi^ +||jqsouo.gourmetcaree.jp^ +||jraasj.kobo.com^ +||jrfjcn.mebeli.bg^ +||jrucbb.guestreservations.com^ +||jrxrit.europcar.de^ +||jrzgcz.ciociariaoggi.it^ +||jrzgcz.latinaoggi.eu^ +||jshkyh.29cm.co.kr^ +||jsomtq.telescope.com^ +||jspqms.bellevue-ferienhaus.de^ +||jswlpe.modainpelle.com^ +||jswyrt.jp1880.de^ +||jszwxm.hometogo.nl^ +||jtbaoo.belvini.de^ +||jtosgk.123pneus.fr^ +||jttmym.gear4music.com^ +||jtxrou.saucony.com^ +||jtyutq.chaussures.fr^ +||jufhxk.audienhearing.com^ +||jujtcq.amnibus.com^ +||juzqsq.finanzcheck.de^ +||jvbvng.notino.it^ +||jviyau.pelicanwater.com^ +||jvpipr.hometogo.se^ +||jvrwil.gabor.de^ +||jvzlya.benesse.ne.jp^ +||jwcnjv.xlmoto.eu^ +||jweqai.amen.fr^ +||jwlvlo.icaniwill.dk^ +||jwmhqs.fsk.ru^ +||jwtnmo.promovacances.com^ +||jwvazl.mansurgavriel.com^ +||jwxqmj.thediamondstore.co.uk^ +||jxdptu.jouete-online.com^ +||jxeumx.hanaunni.com^ +||jxiwdw.ufret.jp^ +||jxoaza.yourmystar.jp^ +||jxpsrh.casamundo.co.uk^ +||jxsmzz.mytrauringstore.de^ +||jxvrhx.fotokoch.de^ +||jybnuw.mudah.my^ +||jynwlg.veromoda.com^ +||jyuicr.codemonkey.com^ +||jyumzv.dcshoes.com.br^ +||jyupgi.eurostarshotels.co.uk^ +||jyyqzt.sledstore.se^ +||jyyzvb.careerindex.jp^ +||jzauch.motostorm.it^ +||jzgfhr.nordicnest.com^ +||jzoxch.menswearhouse.com^ +||jzprtb.1stdibs.com^ +||jzqfac.bestsecret.ch^ +||kaacsi.belvilla.nl^ +||kabokc.webuy.com^ +||kaebyy.autouncle.se^ +||kalwub.mizuho-re.co.jp^ +||katylz.lojaspompeia.com^ +||kbcmdi.florsheim.com.au^ +||kbighx.absolventa.de^ +||kbviuj.enoteca.co.jp^ +||kbvxbw.bugatti-fashion.com^ +||kcgser.azialo.com^ +||kcqoej.roborock.com^ +||kcuzgn.fnac.be^ +||kcvwuw.iryouworker.com^ +||kcykhs.mrblue.com^ +||kdarje.garten-und-freizeit.de^ +||kdhmzv.oculosmeninaflor.com.br^ +||kdlsdk.neverfullydressed.co.uk^ +||kdpxgr.travellink.no^ +||kdqytm.vipre.com^ +||kdtbpt.brogsitter.de^ +||kebpln.darngoodyarn.com^ +||keoofp.gulfnews.com^ +||keqglr.panvel.com^ +||kftfhp.furusato-tax.jp^ +||kgbokc.masrefacciones.mx^ +||kgmmfk.galcomi.jp^ +||kgqxzw.blue-tomato.com^ +||kgqzgj.rougegorge.com^ +||khcdhu.saraschool.net^ +||khfiwx.sephora.com.br^ +||khfyas.bellybandit.com^ +||khgtwn.reifendirekt.de^ +||khimxz.shoesforcrews.com^ +||khiurx.tigerdirect.com^ +||kiddbs.baby-calendar.jp^ +||kierwg.enzzo.gr^ +||kighmh.nelson.nl^ +||kiqwal.autoscout24.es^ +||kiqwil.l-m.co.jp^ +||kirsrn.runway-webstore.com^ +||kjdfho.eidaihouse.com^ +||kjjuuy.icaniwill.fi^ +||kjmaoi.babor.com^ +||kjxmcn.eset.com^ +||kjxztu.biz-journal.jp^ +||kkcmcp.printemps.com^ +||kksuce.hankoya.com^ +||kkznoe.autouncle.ch^ +||kkznoe.autouncle.co.uk^ +||kkznoe.autouncle.it^ +||kkzpde.aboutyou.lt^ +||klhxyi.costakreuzfahrten.ch^ +||klktmc.parler.co.jp^ +||klqlmg.mitchellandness.com^ +||klwuhp.daehyuninside.com^ +||kmqghr.bristolshop.be^ +||kmqhmn.helen-marlen.com^ +||knapia.weightwatchers.com^ +||knfjhy.echo.msk.ru^ +||knjybs.luminis-films.com^ +||knlqeu.jewlr.com^ +||knopnf.asambeauty.com^ +||knorzj.wearfigs.com^ +||knymhv.ariat.com^ +||knzmrw.infojobs.net^ +||knzqjr.pult.ru^ +||koifrz.tvc-mall.com^ +||koowiu.obchod-vtp.cz^ +||kouopt.calvinklein.com.br^ +||kpbzar.warbyparker.com^ +||kpcyic.sportisimo.cz^ +||kpfvaq.schuhe.de^ +||kqchxa.denizbutik.com^ +||kqdqrj.traktorpool.de^ +||kqhckf.outfits24.de^ +||kqkcoq.vidaxl.fr^ +||kqkydl.postel-deluxe.ru^ +||kqscrl.bonprix.nl^ +||kqvtez.watt24.com^ +||kqzbph.zerohedge.com^ +||krgoad.mauboussin.fr^ +||krskux.newhaircaps.com.br^ +||kszpsc.waschbaer.ch^ +||kszuxn.snidel.com^ +||ktdcoy.lyst.it^ +||kthjuw.lyst.com.au^ +||ktoahv.ivet.rs^ +||ktocpw.silabg.com^ +||ktskxm.smartphoto.nl^ +||kuaifr.camicado.com.br^ +||kukckk.sagefinds.com^ +||kuusay.yalispor.com.tr^ +||kvfumh.fairwaystyles.com^ +||kvfunf.factorydirect.ca^ +||kvnkjd.kaigoshoku.mynavi.jp^ +||kvskic.jadore-jun.jp^ +||kwalnc.vans.co.kr^ +||kwbpge.jra-van.jp^ +||kwijfh.proactiv.com^ +||kwitvg.letudiant.fr^ +||kwqpix.ravenna.gr^ +||kwvbhj.jcpenney.com^ +||kwwgmv.tennistown.de^ +||kwwvxn.uniqlo.com^ +||kxbqbq.amicafarmacia.com^ +||kxkvpn.josera.de^ +||kxmrwu.ibarakinews.jp^ +||kxtqgp.mistermenuiserie.com^ +||kydcwp.landwirt.com^ +||kygelf.ludwig-von-kapff.de^ +||kyjoyk.modoza.com^ +||kyszhn.qvc.jp^ +||kyvpze.vidaxl.co.uk^ +||kzhesi.corcoran.com^ +||kzmual.superga.com^ +||kzsicw.chip.de^ +||kzsicw.cinema.de^ +||kzsicw.fitforfun.de^ +||kzsicw.focus.de^ +||kzsicw.tvspielfilm.de^ +||kzsicw.tvtoday.de^ +||kzsisc.3.dk^ +||kzutbh.takeappeal.com^ +||ladghy.jcb.co.jp^ +||ladxxr.sonovente.com^ +||lapkhy.aventon.com^ +||lapwkd.feelgood-shop.com^ +||lbgfqn.onward.co.jp^ +||lbgrwm.zolta.pl^ +||lbnrrh.autouncle.dk^ +||lcdsyj.daily.co.jp^ +||lcefua.timberland.ru^ +||lcodff.uta-net.com^ +||lcsopa.onamae.com^ +||lctfgw.evernew.ca^ +||lcwodl.bleulibellule.com^ +||lcztnn.asics-trading.co.jp^ +||ldckmk.divarese.com.tr^ +||ldgxsr.locasun-vp.fr^ +||ldhteg.mooihorloge.nl^ +||ldinry.drinks.ch^ +||ldorlv.seiban.co.jp^ +||ldqtdd.peing.net^ +||ldvalc.manzara.cz^ +||ldxpmz.people.com^ +||lebtpm.co-medical.com^ +||lekfso.hitohana.tokyo^ +||lenpmh.francoisesaget.com^ +||lexvek.gap.ae^ +||leynqj.newport.se^ +||lezntf.heydudeshoesusa.com^ +||lfapbe.quiksilver.co.jp^ +||lfbowp.talisa.com^ +||lfercl.tcb-beauty.net^ +||lfmhcb.sefamerve.com^ +||lfpfpl.andar.co.kr^ +||lfuzec.bglen.net^ +||lfxdqs.mamasandpapas.ae^ +||lfyqsi.erborian.com^ +||lgbdxo.azazie.com^ +||lgylib.dg-home.ru^ +||lgzkzp.bauhaus.at^ +||lhaqtn.lyst.ca^ +||lhcivu.dekbed-discounter.nl^ +||lhdidz.successories.com^ +||lhevhb.hjgreek.com^ +||lhewdj.fnac.pt^ +||lhlext.e-aircon.jp^ +||lhrzel.enterprise.com.tr^ +||lhzulh.tribeamrapali.com^ +||liecso.e-himart.co.kr^ +||ligxyv.hackers.co.kr^ +||liosix.mtvuutiset.fi^ +||ljbpfe.notino.es^ +||ljqpvo.hardrock.com^ +||ljyipz.nugnes1920.com^ +||ljzxdu.largus.fr^ +||lkhrtf.beveragefactory.com^ +||lkluoz.saraceniwines.com^ +||lknqfn.furla.com^ +||lkvkgk.levis.com.tr^ +||llkdiu.chacos.com^ +||llqutk.skechers.com.au^ +||llteig.framesdirect.com^ +||lltmch.zurifurniture.com^ +||llwoyl.mirraw.com^ +||lmavci.eloquii.com^ +||lmeniu.timberland.com.au^ +||lmgenf.ludwigbeck.de^ +||lmgvur.scbt.com^ +||lmldvr.centauro.net^ +||lmnqof.littletoncoin.com^ +||lmorsb.highstreettv.com^ +||lnjiwo.manzara.sk^ +||lnntnt.hsastore.com^ +||lntvby.banggood.com^ +||lnxfgm.party-calendar.net^ +||lodlww.carcon.co.jp^ +||loobmf.hardloop.fr^ +||lowgxl.yokumoku.jp^ +||lozjnq.stateandliberty.com^ +||lpbhnv.nbcbayarea.com^ +||lpbhnv.nbcboston.com^ +||lpbhnv.nbcchicago.com^ +||lpbhnv.nbcconnecticut.com^ +||lpbhnv.nbcdfw.com^ +||lpbhnv.nbclosangeles.com^ +||lpbhnv.nbcmiami.com^ +||lpbhnv.nbcnewyork.com^ +||lpbhnv.nbcphiladelphia.com^ +||lpbhnv.nbcsandiego.com^ +||lpbhnv.nbcwashington.com^ +||lpbhnv.necn.com^ +||lpbhnv.telemundo47.com^ +||lpbhnv.telemundo49.com^ +||lpbhnv.telemundo52.com^ +||lpbhnv.telemundonuevainglaterra.com^ +||lpbhnv.telemundopr.com^ +||lpbhnv.telemundosanantonio.com^ +||lpbhnv.telemundowashingtondc.com^ +||lpdbca.internetaptieka.lv^ +||lpfirw.kooding.com^ +||lpfsex.fabiboutique.com^ +||lpipua.kcar.com^ +||lpuqtu.propertyfinder.bh^ +||lpygsq.dorita.se^ +||lpyxrp.thewodlife.com.au^ +||lpzxed.em.com.br^ +||lpzxed.superesportes.com.br^ +||lpzxed.uai.com.br^ +||lqbinr.locker-room.co.kr^ +||lqdeyv.thepopcornfactory.com^ +||lqklml.amikado.com^ +||lqopyc.beermachines.ru^ +||lqpzdi.coppel.com^ +||lqsowt.mona-mode.fr^ +||lqvfkk.sosyopix.com^ +||lqxjrk.fbs.com^ +||lravwm.spa.cz^ +||lrdnuu.shopee.co.th^ +||lrdxki.hakutou-shop.com^ +||lrehgz.orix.co.jp^ +||lreust.joshinweb.jp^ +||lrfctq.wordans.co.uk^ +||lrhyty.weeronline.nl^ +||lrjnbf.sabon.co.jp^ +||lsixuz.agrifournitures.fr^ +||lslynl.chiashake.cz^ +||lspfuw.siwonschool.com^ +||lswfmx.stuartweitzman.com^ +||ltcmak.alodokter.com^ +||ltdczq.myhome.nifty.com^ +||ltecrf.dhgate.com^ +||lthbdc.become.co.jp^ +||lthdzu.sercotelhoteles.com^ +||lthzhy.elv.com^ +||ltnico.fnac.com^ +||ltqpej.vidaxl.ie^ +||ltripg.marti.mx^ +||ltsveh.wetteronline.at^ +||ltsveh.wetteronline.ch^ +||ltsveh.wetteronline.de^ +||ltycia.ba-sh.com^ +||ltzpth.sephora.fr^ +||luaqlg.blissy.com^ +||luegnh.sneakercage.gr^ +||lujaqg.e-blooming.com^ +||lujcig.modaforyou.pl^ +||lumtjt.plumbingonline.ca^ +||luptbq.lampsplus.com^ +||luumhi.whatonearthcatalog.com^ +||luuonz.motoblouz.com^ +||luwzem.skala.nl^ +||luzfpa.dltviaggi.it^ +||lvidqa.unisportstore.de^ +||lvivsu.peterhahn.de^ +||lvsats.gardner-white.com^ +||lwkvkd.maison-objet.com^ +||lwmnyf.modivo.hu^ +||lwozzk.legacy.com^ +||lwusnt.yogibo.kr^ +||lxiaho.lesfurets.com^ +||lxmnrl.eobuv.sk^ +||lxoemc.buonissimo.it^ +||lxoemc.dilei.it^ +||lxoemc.libero.it^ +||lxoemc.paginebianche.it^ +||lxoemc.siviaggia.it^ +||lxoemc.tuttocitta.it^ +||lxsway.alltforforaldrar.se^ +||lxsway.blogg.se^ +||lxsway.brollopstorget.se^ +||lxsway.familjeliv.se^ +||lxsway.kwiss.me^ +||lxsway.modette.se^ +||lxsway.nyheter24.se^ +||lxsway.tyda.se^ +||lxswqh.oyorooms.com^ +||lxwasy.tatragarden.ua^ +||lxwysd.hirmer.de^ +||lxztgb.musee-pla.com^ +||lyegyo.bluenile.com^ +||lyfrir.purehockey.com^ +||lynjbq.sizeofficial.nl^ +||lyxfra.shopee.com.my^ +||lyypsy.unisportstore.se^ +||lzcwbt.schuhcenter.de^ +||lziqkx.countryoutfitter.com^ +||lzrhay.farmaciasoccavo.it^ +||lzrljv.tradera.com^ +||lzvwxy.hometogo.pl^ +||lzwxzz.chintaistyle.jp^ +||maaiuh.tomorrowland.co.jp^ +||majdmw.gigasport.at^ +||makbti.bandofboats.com^ +||market.bellelily.com^ +||matytt.tone.ne.jp^ +||maxtat.55truck.com^ +||mbbhij.mi-home.pl^ +||mbelia.underarmour.co.uk^ +||mbeoxt.perfumesclub.pt^ +||mcacry.trendhim.it^ +||mccntp.raen.com^ +||mccylg.rutlandcycling.com^ +||mchtna.fashionplus.co.kr^ +||mckbpe.united-arrows.co.jp^ +||mckiey.thun.com^ +||mczpco.darty.com^ +||mczqzk.yves-rocher.hu^ +||mdokua.shiseido.co.jp^ +||mdugiz.jdsports.de^ +||mdxhon.allhomes.com.au^ +||mennoc.mezlan.com^ +||meypeg.videdressing.com^ +||mfamcw.sodexobeneficios.com.br^ +||mfmkkv.sorgenia.it^ +||mfxtlm.mobiup.ro^ +||mgbfxr.formongde.com^ +||mgbivj.hintaopas.fi^ +||mgclyt.costacruceros.es^ +||mgcnid.aboutyou.cz^ +||mgdmqr.parfium.bg^ +||mgefhu.seiska.fi^ +||mgefhu.suomi24.fi^ +||mggakg.littleblack.co.kr^ +||mgixgn.wittchen.com^ +||mgptul.finson.com^ +||mhauev.glasses.com^ +||mhidwg.elgiganten.se^ +||mhizzr.eurorelais.nl^ +||mhmzhc.trysnow.com^ +||mhnpec.nimaxi-online.com^ +||mhrkxi.thetrybe.com.au^ +||mhwbhn.tohapi.fr^ +||miexgq.forevernew.co.nz^ +||miqeuu.timberland.it^ +||mirvso.boggi.com^ +||mixxuo.sportys.gr^ +||mjfunt.bibi.com^ +||mjjvkx.monoprice.com^ +||mjnpya.marktplaats.nl^ +||mjsnvi.extraspace.com^ +||mjutjc.telstarsurf.de^ +||mjwnxc.julbie.com^ +||mjzkws.marcovasco.fr^ +||mkltfc.atgp.jp^ +||mkmkew.hometogo.no^ +||mkmree.dmm.co.jp^ +||mkolqj.ozonee.pl^ +||mksogv.oneclickdrive.com^ +||mkwntx.pinkpanda.de^ +||mkzpqu.sungboon.com^ +||mkztpk.invictastores.com^ +||mlfolu.nabava.net^ +||mlgubn.autouncle.de^ +||mlhtmc.macnificos.com^ +||mlkblr.la-becanerie.com^ +||mlkklg.suncamp.de^ +||mlmswk.janpara.co.jp^ +||mlqzau.koffer.com^ +||mluszz.eyelashgarage.jp^ +||mmobsz.edenviaggi.it^ +||mmulsx.comet.it^ +||mmwlwm.autoscout24.pl^ +||mnbyto.goo-net.com^ +||mnfqyj.corello.com.br^ +||mnrddc.journeys.com^ +||mnwljk.ibagy.com.br^ +||momyjw.jobninja.com^ +||mosvnx.livup.com.br^ +||mowvra.idlookmall.com^ +||mpglie.apartmentguide.com^ +||mpgtft.zoobeauval.com^ +||mpjtif.viabovag.nl^ +||mprkxf.teebooks.com^ +||mqesfg.bpm-power.com^ +||mqhaxf.keds.com^ +||mqhuzk.soffadirekt.se^ +||mqjpkx.lulli-sur-la-toile.com^ +||mqjsdu.eataly.net^ +||mqldrm.lgcity.ru^ +||mqojih.taschenkaufhaus.de^ +||mqsicr.smiggle.co.uk^ +||mquwyx.engelhorn.de^ +||mqvyob.vidaxl.fi^ +||mqwqas.marketbio.pl^ +||mqzoid.vintorte.com^ +||mrksmm.yumegazai.com^ +||msafoy.eyebuydirect.com^ +||mseeru.faz.net^ +||msfvwi.sieuthiyte.com.vn^ +||msioay.backcountry.com^ +||mtbflj.elementaree.ru^ +||mtcvyv.karakartal.com^ +||mtcvyv.sporx.com^ +||mtcvyv.superfb.com^ +||mtcvyv.webaslan.com^ +||mtkure.gazin.com.br^ +||mtoxtg.tezenis.com^ +||mtuqnl.roomys-webstore.jp^ +||mtvgxt.partirpascher.com^ +||mtvnbq.infopraca.pl^ +||mtyciy.solebox.com^ +||mugapi.lazzarionline.com^ +||muhttw.spotlightstores.com^ +||mujjrh.stylenanda.com^ +||mupmos.levis.com.au^ +||muqtti.motoin.de^ +||muwyib.lettuce.co.jp^ +||mvjkbj.2-carat.net^ +||mvjkbj.inazumanews2.com^ +||mwbhkv.plasico.bg^ +||mwbilx.pisos.com^ +||mwxema.galerieslafayette.com^ +||mxdzxd.mister-auto.com^ +||mxhunv.kurz-mal-weg.de^ +||mxmwqo.biosante.com.br^ +||mxpdsu.bhv.fr^ +||mxsvjc.hackers.ac^ +||myakiu.trendhim.ch^ +||mybjjg.vlan.be^ +||myxuak.mir-kubikov.ru^ +||mzldzb.crocs.pl^ +||mzwkss.chiccousa.com^ +||nafmxc.1083.fr^ +||namcah.alipearlhair.com^ +||navfja.answear.hu^ +||nbfopy.jjshouse.com^ +||nbizzi.store.ferrari.com^ +||nbohze.thenorthface.ru^ +||nbrngg.rinkaiseminar.co.jp^ +||nbyggk.jocee.jp^ +||ncbabz.hometogo.co.uk^ +||ncvsbz.bonds.com.au^ +||ncxxek.donedeal.ie^ +||nczils.pristineauction.com^ +||ndcywq.ullapopken.fr^ +||ndeooc.bubbleroom.no^ +||ndgrlo.visiondirect.com.au^ +||ndroyp.gettingpersonal.co.uk^ +||neaaom.ytn.co.kr^ +||nekgtz.bluestoneperennials.com^ +||neowiv.brumbrum.it^ +||nerldv.ullapopken.pl^ +||nffxqi.jorgebischoff.com.br^ +||nflxjp.residences-immobilier.com^ +||nfmvsq.giuseppezanotti.com^ +||nfptar.giordanoshop.com^ +||nfudeh.jadebag.co.kr^ +||ngazee.novostroy-m.ru^ +||ngcbjq.frecuento.com^ +||ngghll.me.co.kr^ +||ngueja.2ememain.be^ +||ngyxtr.ripcurl.com^ +||nhdhoj.ibs.it^ +||nhkoze.saneibd.com^ +||nhlvvh.sawadee.nl^ +||nhnazx.outdoorlook.co.uk^ +||nhqkbl.semilac.pl^ +||nirdjz.revolveclothing.com.au^ +||njnlih.realitatea.net^ +||njorya.aosom.de^ +||njtwub.schneider.de^ +||njxnsb.paodeacucar.com^ +||nkarmh.jmbullion.com^ +||nkothz.duskin.jp^ +||nkqxyn.misterspex.co.uk^ +||nkwvwb.fluevog.com^ +||nlbukc.babyworld.se^ +||nlgzhd.yoox.com^ +||nljjem.honeys-onlineshop.com^ +||nltihf.fashiondays.ro^ +||nltzqx.autodoc.co.uk^ +||nlvnht.miror.jp^ +||nmiodk.promiflash.de^ +||nnhxjd.zielonalazienka.pl^ +||nnivvr.zimmo.be^ +||nnkeoi.timarco.com^ +||nnkkxb.nuts.com^ +||nnobek.waschbaer.de^ +||nnofmj.studiof.com.co^ +||nnqyed.laredoute.be^ +||nntgna.dmm.com^ +||nnvoia.closetworld.com^ +||nogxjk.dackonline.se^ +||nohaxn.damattween.com^ +||nosjew.glamira.de^ +||npczil.maxandco.com^ +||npfopn.mix.tokyo^ +||nplden.legionathletics.com^ +||nprkvj.mall.sk^ +||npsopu.clearly.ca^ +||nptkpt.vangraaf.com^ +||npvbjv.yourroom.ru^ +||nqacsh.boosted.dk^ +||nqcbgz.cocopanda.se^ +||nqgmcp.chairish.com^ +||nqozgp.botland.com.pl^ +||nqxnvy.levi.com.hk^ +||nrjcur.pomelofashion.com^ +||nrquff.supurgemarket.com^ +||nrrgyk.hair-gallery.it^ +||nrstxi.envieshoes.gr^ +||nrtubi.sobrico.com^ +||nsedgj.bonprix.de^ +||nstclj.rubylane.com^ +||nthldc.europcar.co.uk^ +||ntopcd.underarmour.nl^ +||ntphyl.milan-jeunesse.com^ +||nturnm.unisport.dk^ +||nucgsx.indestructibleshoes.com^ +||nukktn.dorko.hu^ +||nuquds.citizenwatch.com^ +||nuyibu.pieper.de^ +||nuyujp.barstoolsports.com^ +||nvpdaa.brightcellars.com^ +||nvumcv.standoil.kr^ +||nvxlag.liligo.fr^ +||nwajdf.zakzak.co.jp^ +||nwbmvq.jockey.com^ +||nwfkjx.gadventures.com^ +||nwvupz.cljoias.com.br^ +||nwwucx.palemoba.com^ +||nxhqso.nordicnest.se^ +||nxnszu.ettoday.net^ +||nxovay.fo-online.jp^ +||nxwniq.aboutyou.ie^ +||nycwfz.kigili.com^ +||nyrxcy.teslaweld.com^ +||nytjyf.dholic.co.jp^ +||nyuyiw.linea-storia.co.kr^ +||nyvknh.compracerta.com.br^ +||nzmkzl.mytheresa.com^ +||nzqrfa.hushpuppies.com^ +||nzueib.dice.com^ +||nzuwat.miliboo.it^ +||nzzvvf.goldengoose.com^ +||oabnmx.jewelryexchange.com^ +||oaizwm.zox.la^ +||obfrok.partyking.no^ +||obhnrw.furniturebox.se^ +||obhxvb.tmktools.ru^ +||obnrap.neimanmarcus.com^ +||obooom.robinmaybag.com^ +||obqclg.dadway-onlineshop.com^ +||obqvss.debameubelen.be^ +||obrqts.hudforeclosed.com^ +||obtfhl.bellemaison.jp^ +||ocmxbu.hanatour.com^ +||ocpgll.bannerbuzz.ca^ +||ocwlhv.ecid.com.br^ +||odepcf.modetour.com^ +||odjdpy.jobware.de^ +||odkvrg.pedrodelhierro.com^ +||oebarc.ekosport.at^ +||oedbml.collage-shop.jp^ +||oedlmz.underarmour.it^ +||oedxix.lolipop.jp^ +||oesfco.glamira.pl^ +||oesonx.10000recipe.com^ +||oessbi.yves-rocher.ru^ +||oesxlp.atlasformen.co.uk^ +||oexcmv.concent.co.jp^ +||ofkqiy.knowfashionstyle.com^ +||ofqkbk.proclipusa.com^ +||ofvosb.jumbo.com.tr^ +||ofwdvh.suntransfers.com^ +||ogcsvq.sourcenext.com^ +||ognunn.chavesnamao.com.br^ +||ogpdwe.livin24.com^ +||ogwzby.peek-und-cloppenburg.de^ +||ogzucf.all4golf.de^ +||ohjrxj.personalizationmall.com^ +||ohrdit.kfzteile24.de^ +||ohsyat.jdsports.it^ +||ohtdbl.mister-auto.es^ +||oicmda.ugyismegveszel.hu^ +||oikckw.scarosso.com^ +||oiodyx.baldur-garten.de^ +||oitihv.drinks.de^ +||oiwnrl.theory.co.jp^ +||ojlsxt.pigment.co.kr^ +||ojmxro.yatsan.com^ +||ojufuk.vincecamuto.com^ +||ojvxtz.junonline.jp^ +||okhwxl.rnainc.jp^ +||oksiqv.styletread.com.au^ +||oktagv.immobilienscout24.at^ +||olhqou.realsimple.com^ +||olklgn.jh-profishop.de^ +||olpmni.acer.com^ +||olqsty.izipizi.com^ +||olroyk.ardene.com^ +||olspyo.laredoute.co.uk^ +||olwqxg.europcar.it^ +||olziko.maxmara.com^ +||omcshw.pharmasi.it^ +||omfoom.thepoolfactory.com^ +||omftdc.morijuku.com^ +||omjtca.emlakjet.com^ +||omvzcq.vidaxl.be^ +||omxodt.shredoptics.com^ +||oncahh.boxlunch.com^ +||onghfx.revolve.com^ +||onjjbn.koffiemarkt.be^ +||onjmsj.sumai-surfin.com^ +||onoztg.ultimate-guitar.com^ +||ontxgr.hofer-reisen.at^ +||oocrzh.byojet.com^ +||ooqbml.tac-school.co.jp^ +||oossod.potterybarn.ae^ +||opbdps.bonprix.fi^ +||opummf.himiwaybike.com^ +||oqbimz.aviasales.ru^ +||oqgrax.sissy-boy.com^ +||oqidne.itaka.pl^ +||ordbng.extra.com.br^ +||ordpmx.victorianplumbing.co.uk^ +||orlqtz.lampenwelt.ch^ +||orpggb.esprit.at^ +||orsmfg.notino.de^ +||ortkrq.damyller.com.br^ +||oscnjc.035000.com^ +||osczsk.lampeetlumiere.be^ +||osezny.intheswim.com^ +||oshlzg.takealot.com^ +||oshowm.allureville.com^ +||osjpyw.dico.com.mx^ +||osnksi.czytam.pl^ +||osuwzo.oyunfor.com^ +||osvdtm.theshopyohjiyamamoto.jp^ +||othisf.tagomago.pl^ +||otisxx.sullyn.com^ +||otkhyc.bueromarkt-ag.de^ +||otrnww.pipingrock.com^ +||oturvy.sanitairwinkel.nl^ +||otuumq.manyavar.com^ +||oufrqs.kunduz.com^ +||oufuqh.kant.ru^ +||oulpli.bettybarclay.com^ +||ounwut.thehappyplanner.com^ +||out.velpa.pl^ +||ouvjnb.westernbikeworks.com^ +||ovrsso.gemo.fr^ +||owpysc.lampenundleuchten.at^ +||owqbsl.kuhl.com^ +||owtjzn.so-nice.com.tw^ +||owzmdz.glamira.co.uk^ +||oxbskt.autotrader.com.au^ +||oxdejn.lavprisel.dk^ +||oxtrmw.marinarinaldi.com^ +||oyaswl.manor.ch^ +||oylyaz.mrkoll.se^ +||oyotii.sportokay.com^ +||oyoxyc.josefsteiner.at^ +||oyssqe.easyvoyage.com^ +||oyyqan.hejoscar.dk^ +||ozdoir.meundies.com^ +||ozkkuy.fabianafilippi.com^ +||oznlro.sanity.com.au^ +||ozvlyz.justmusic.de^ +||pabgey.siepomaga.pl^ +||paeppk.spar-mit.com^ +||pakdru.altrarunning.com^ +||papemz.rcwilley.com^ +||paqqlk.motatos.de^ +||pardko.pricerunner.com^ +||paupud.meillandrichardier.com^ +||payqjd.subito.it^ +||pbecrm.aquanet.ru^ +||pbvnwd.moongori.com^ +||pbxdny.angrybeards.cz^ +||pcdstm.petbarn.com.au^ +||pciidk.shopee.vn^ +||pciokm.glamuse.com^ +||pcykgc.onetravel.com^ +||pdftfe.thekooples.com^ +||pdlavr.erwinmueller.com^ +||pdsgaj.piquadro.com^ +||pduwvp.chanti.dk^ +||pdzutf.sftworks.jp^ +||pehkmy.edreams.pt^ +||pemskb.unitedcinemas.jp^ +||pepleb.ekosport.de^ +||peqvwk.notino.at^ +||pesaea.autoesa.cz^ +||pevftg.shopee.sg^ +||peyqvn.falke.com^ +||pfltjr.essentialnutrition.com.br^ +||pfuyhr.schutz.com.br^ +||pgkxhq.jamesallen.com^ +||phbnix.rocelec.com^ +||phcnvk.schalke04.de^ +||phczhg.johnjohndenim.com.br^ +||phgnxd.nike.com.br^ +||phhjak.frame-store.com^ +||phinnk.airtrip.jp^ +||phvylw.beurer-shop.de^ +||pibhjs.dongsuhfurniture.co.kr^ +||piddme.buyma.com^ +||pihxmq.98doci.com^ +||pinptg.milleni.com.tr^ +||pionmj.companyshop24.de^ +||pjbncv.ode.co.kr^ +||pjgaez.autouncle.at^ +||pjmryh.zapatos.es^ +||pjtshn.floraprima.de^ +||pjtxmd.epool.ru^ +||pkdimy.shoptime.com.br^ +||pkhevp.suplinx.com^ +||pkiawn.konvy.com^ +||pkimbc.bestsecret.com^ +||pkmvjx.my-store.ch^ +||pkqfky.direct-abris.com^ +||pktbag.flighthub.com^ +||pktytp.membershop.lv^ +||plbcsd.vidaxl.se^ +||plczro.21dressroom.com^ +||pljuin.lensmode.com^ +||plotzn.apmex.com^ +||plwfwc.teknozone.it^ +||plyizb.latour-lith.nl^ +||pmazpg.legalzoom.com^ +||pnaagn.haekplanter-heijnen.dk^ +||pnhesw.jtb.co.jp^ +||pnnpan.cv-library.co.uk^ +||pnovfl.karaca.com^ +||pntbrs.reflectwindow.com^ +||pnvnpy.scullyandscully.com^ +||polhvf.bootbarn.com^ +||porqhi.topictravel.nl^ +||ppgdyq.ideenmitherz.de^ +||ppgqvz.bigmotoringworld.co.uk^ +||pplpiq.pricerunner.se^ +||ppmakl.oscarcalcados.com.br^ +||ppssav.formal-message.com^ +||ppyflc.uniformnext.com^ +||pqcixi.sparco-official.com^ +||pqdhda.bluepops.co.kr^ +||pqghqs.eastcl.com^ +||pqiicj.misterspex.se^ +||pqlcpm.kindoh.co.kr^ +||pqlmae.lamaisonduchocolat.co.jp^ +||pqrede.fiatprofessional.com^ +||prhhqo.vintagevoyage.ru^ +||prkvlr.camper.com^ +||prnzxf.glamira.se^ +||prvizg.shurgard.be^ +||przucu.elkjop.no^ +||psbiaf.converse.com^ +||psfcnf.ochsnersport.ch^ +||pspqlm.rndsystems.com^ +||psqsjg.coach.com^ +||pswgpb.seshop.com^ +||ptlpel.tui.at^ +||ptmcos.beginning.kr^ +||ptrenx.vidaxl.com.au^ +||puiwrs.misterspex.de^ +||pumlmb.netcologne.de^ +||putphc.zuhre.com.tr^ +||pvfbav.sportler.com^ +||pvoheg.bubbleroom.se^ +||pvrugd.nieruchomosci-online.pl^ +||pwtftm.shingaku.mynavi.jp^ +||pxayti.hair-express.de^ +||pxbnou.ig.com.br^ +||pxgpnp.angara.com^ +||pxjkbj.bostonproper.com^ +||pxmzlk.redfin.com^ +||pxvlcc.crocs.fr^ +||pxxhbz.apamanshop.com^ +||pydnsv.ejobs.ro^ +||pyouad.autonvaraosat24.fi^ +||pyqfjx.medwing.com^ +||pyrkxp.novafotograf.com^ +||pytxsn.najlacnejsisport.sk^ +||pywiia.lfmall.co.kr^ +||pyxjkx.springjapan.com^ +||pzajdh.guicheweb.com.br^ +||pzxhyp.aeropostale.com^ +||qaghzg.planteon.pl^ +||qahxwy.goosecreekcandle.com^ +||qamnyl.bever.nl^ +||qasqhi.notino.pt^ +||qbermy.daxon.fr^ +||qblkeu.vamvelosiped.ru^ +||qbwkux.home24.at^ +||qcblzn.pinkpanda.it^ +||qceyjl.cellularoutfitter.com^ +||qcgtoz.cwjobs.co.uk^ +||qcmxuy.hardloop.de^ +||qcppad.merrell.com^ +||qdicel.marymaxim.com^ +||qdkaky.rikilovesriki.com^ +||qdnxys.cotswoldco.com^ +||qdqdfp.toitsutest-koukou.com^ +||qdvavs.trademax.se^ +||qedlai.restplatzboerse.com^ +||qejrwy.lazienkaplus.pl^ +||qerpks.rollei.de^ +||qexbcx.olx.kz^ +||qezfer.motelamiio.com^ +||qfbles.elefant.ro^ +||qfcxpa.dreamcloudsleep.com^ +||qfkmyf.clarins.com^ +||qflwqw.opodo.fr^ +||qfoiss.lendingtree.com^ +||qftpgz.socarrao.com.br^ +||qfvwfi.convenii.com^ +||qfwfbo.decofurnsa.co.za^ +||qgbnjd.coches.net^ +||qgcfcd.cairo.de^ +||qgmikp.fleurdumal.com^ +||qgumjp.asiae.co.kr^ +||qgumjp.joins.com^ +||qgumjp.mediatoday.co.kr^ +||qgutin.crocs.co.kr^ +||qifbmk.rodinnebaleni.cz^ +||qimcqs.hometogo.dk^ +||qitdsl.ralf.ru^ +||qivsvu.creedboutique.com^ +||qixipi.kathykuohome.com^ +||qjapso.r.pl^ +||qjcpcy.imkosmetik.com^ +||qjjgra.vendome.jp^ +||qjmsmj.invia.cz^ +||qjurou.laredoute.com^ +||qjxhxu.lakeside.com^ +||qjxiyt.respect-shoes.ru^ +||qjxkce.patriziapepe.com^ +||qkhhjm.autoscout24.nl^ +||qksbin.nocturne.com.tr^ +||qksxet.zeetours.nl^ +||qktnee.fribikeshop.dk^ +||qkxzdm.stellenanzeigen.de^ +||qldmga.criteo.work^ +||qldvnj.purepara.com^ +||qljiop.allabout.co.jp^ +||qllxvh.shopstyle.com^ +||qlmfpj.laura.ca^ +||qloevv.wikicasa.it^ +||qlqvej.bahia-principe.com^ +||qlsngs.paruvendu.fr^ +||qlspmy.xlmoto.be^ +||qlsszi.lululemon.co.nz^ +||qmcwpi.naturitas.es^ +||qmdbfv.grautecnico.com.br^ +||qmgwny.autobarn.com.au^ +||qmgzkb.dedoles.sk^ +||qmiiln.tower.jp^ +||qmlzcm.petshop.ru^ +||qmoyfh.xcite.com.sa^ +||qmtjvq.kuoni.ch^ +||qnbskk.oqvestir.com.br^ +||qnqdpy.edreams.net^ +||qnuzwe.nomanwalksalone.com^ +||qnwkbv.bestsecret.nl^ +||qnzczf.idc-otsuka.jp^ +||qoairs.scholl-shoes.com^ +||qohlsl.drawer.fr^ +||qonwdq.helmexpress.com^ +||qouxkn.natuurhuisje.nl^ +||qoygsv.born2be.pl^ +||qpielh.kfhi.or.kr^ +||qpuseo.notos.gr^ +||qqdflf.lpga.or.jp^ +||qqinrm.jagodo.vn^ +||qqmzen.elfadistrelec.no^ +||qqwxxf.levi.co.kr^ +||qriqiz.lifeisgood.com^ +||qrmccr.vernal.co.jp^ +||qrpwgt.drezzy.it^ +||qrrhvh.propertyfinder.ae^ +||qrtqsy.freshlycosmetics.com^ +||qrvsnt.citygrounds.com^ +||qsahny.smartbuyglasses.dk^ +||qswdme.modnakiecka.pl^ +||qtbaye.mona.ch^ +||qtdkfh.beautywelt.de^ +||qtdkxs.travellink.dk^ +||qtfnvf.ethika.com^ +||qttfwb.shaneco.com^ +||qtxxdm.levi.jp^ +||qtycwy.modivo.cz^ +||qumaef.conects.com^ +||qutsgp.calif.cc^ +||quyerj.northstyle.com^ +||qvbxza.stoneberry.com^ +||qvenxs.cash-piscines.com^ +||qveyyi.clarivate.com^ +||qvlcdw.ho-br.com^ +||qvmucs.abluestore.com^ +||qvnpxc.technopark.ru^ +||qvqtga.barenecessities.com^ +||qvsfrk.stephane-christian.com^ +||qvwick.mister-auto.de^ +||qvznqz.mekster.se^ +||qvzrde.mensagenscomamor.com^ +||qwfuug.phoneclick.it^ +||qwylpm.teljoy.co.za^ +||qxauwo.sportisimo.ro^ +||qxibrn.enviedefraise.fr^ +||qxkous.sweet-mommy.com^ +||qxsfaj.caloo.jp^ +||qxvqhy.miliboo.es^ +||qyatej.bocage.fr^ +||qygxrh.vandykes.com^ +||qymjpg.star-tex.ru^ +||qyogcr.amscope.com^ +||qypvnb.24mx.it^ +||qysknb.fukuishimbun.co.jp^ +||qysnzg.bien-zenker.de^ +||qyuzwd.maskworld.com^ +||qyvnic.footshop.cz^ +||qzcxtm.mango.com^ +||qzfxcf.coastal.com^ +||qzosds.gabalnara.com^ +||qzpkxf.edenboutique.ro^ +||qzqfud.casamineira.com.br^ +||qzwbod.blackdiamondequipment.com^ +||qzwktr.nazology.net^ +||qzwktr.nijimen.net^ +||qzwktr.world-fusigi.net^ +||qzxfnv.beams.co.jp^ +||raqwjl.dienthoaigiakho.vn^ +||raspnd.quadratec.com^ +||rbbgnn.hanshintigers.jp^ +||rbesql.just4camper.fr^ +||rbjmfj.dickies.ca^ +||rbncmx.chopperexchange.com^ +||rbrzcu.green-acres.gr^ +||rcbsrm.fivefoxes.co.jp^ +||rccnyh.airportrentalcars.com^ +||rcevcm.lyst.co.uk^ +||rcgwej.lights.co.uk^ +||rcqiho.emp.de^ +||rcqtck.dsquared2.com^ +||rcudsw.ths-net.jp^ +||rczwcs.brack.ch^ +||rddiqs.partyhallen.se^ +||rdfine.camelbrown.com^ +||rdlrbm.studying.jp^ +||rdvxxx.crushj.com^ +||reaonq.xn--hdks770u8f0a8dvzft.net^ +||reeokx.reima.com^ +||reeyzk.momq.co.kr^ +||refwkk.cas.sk^ +||refwkk.mojewypieki.com^ +||refwkk.omnicalculator.com^ +||refwkk.topky.sk^ +||refwkk.zoznam.sk^ +||refytq.camp-fire.jp^ +||relay.velpa.pl^ +||reltrd.peteralexander.com.au^ +||remnkv.doda.jp^ +||reqssx.centerparcs.fr^ +||rertrc.abc-mart.net^ +||retarget.gites-de-france.com^ +||reydrj.kozaczek.pl^ +||reydrj.papilot.pl^ +||reyzol.jdsports.dk^ +||rffsds.fsastore.com^ +||rfjrih.skinceuticals.com^ +||rfmfrg.yamap.com^ +||rgiixp.sperry.com^ +||rgjeqr.europcar.fr^ +||rgmseo.thejewellershop.com^ +||rgzrys.hangikredi.com^ +||rhdcmp.maxcolchon.com^ +||rhksxx.nencinisport.it^ +||rhlctb.jjkeller.com^ +||rhoxnc.studentuniverse.com^ +||rhybey.gap.co.jp^ +||riluwt.voxcinemas.com^ +||rimxqx.slickdeals.net^ +||riovdv.mustit.co.kr^ +||riundo.bonprix.no^ +||riwkmo.spacemarket.com^ +||riwnmh.novasol.co.uk^ +||rjgsjm.gigameubel.nl^ +||rjjynf.showcase-tv.com^ +||rjsouj.clubd.co.jp^ +||rkazse.infirmiere.co.jp^ +||rkstmr.cyrillus.ch^ +||rkxmow.novasol-vacaciones.es^ +||rlovoa.duckcamp.com^ +||rmdvca.belvilla.de^ +||rmmskb.fnacspectacles.com^ +||rmxhti.zpacks.com^ +||rnffgv.wemakeprice.com^ +||rnnstu.rentbeforeowning.com^ +||rnybul.gismeteo.lv^ +||rnybul.gismeteo.md^ +||rnyhid.pepperfry.com^ +||roedwy.imidapeptide.com^ +||roinjg.mkluzkoviny.cz^ +||rowsrm.atasunoptik.com.tr^ +||royzgi.giftishow.com^ +||rpfkgf.rp-online.de^ +||rpfkgf.saarbruecker-zeitung.de^ +||rpfkgf.volksfreund.de^ +||rpfqvl.donnerwetter.de^ +||rpiher.web-camp.io^ +||rpnvib.estilos.com.pe^ +||rpozzl.happy-size.de^ +||rqbdyk.evo.com^ +||rqbvgm.aleupominek.pl^ +||rqhtgf.pierrecardin.com.tr^ +||rqjjdi.bershka.com^ +||rqkmir.ferragamo.com^ +||rqkmnr.ifemme.co.kr^ +||rqyxdk.myanimelist.net^ +||rrbaib.tsutsumishop.jp^ +||rrgiuy.jackroad.co.jp^ +||rrincc.auto-doc.it^ +||rrjzyj.lepage.fr^ +||rrxldl.bol.de^ +||rrznha.lanvin-en-bleu.com^ +||rsaard.en-tea.com^ +||rsinqg.homelux.hu^ +||rsotku.mitsui-shopping-park.com^ +||rsuevw.unicef.or.jp^ +||rtegbv.jmclaughlin.com^ +||rtmugo.deindeal.ch^ +||rtneys.luuna.mx^ +||rtpmqv.smakon.jp^ +||rttkpr.bidolubaski.com^ +||rtxlni.doclasse.com^ +||rugttt.robinson.com^ +||ruhpbn.zhigaojixie.com^ +||ruvdkw.turk.net^ +||rvbqze.albamoda.de^ +||rverxn.autosphere.fr^ +||rvhzjg.desivero.com^ +||rvitam.xenos.nl^ +||rvtwqp.winparts.se^ +||rwdito.carsguide.com.au^ +||rwevib.harmontblaine.com^ +||rwfkzw.wuerth.it^ +||rwhneg.breaking-news.jp^ +||rwlnfq.alindashop.ro^ +||rwohdj.motocard.com^ +||rwpuqm.underarmour.es^ +||rwrnkb.lifelongcollectibles.com^ +||rwryla.theblockshop.com.au^ +||rxhsry.sortiraparis.com^ +||rxqqaq.hollandandbarrett.com^ +||rxtolo.domiporta.pl^ +||ryjknw.sonnenbrillen.com^ +||rymhet.posudamart.ru^ +||ryvapi.fragrancenet.com^ +||rzafbl.maxpeedingrods.com^ +||rzarxl.ovs.it^ +||rzdcyv.oreca-store.com^ +||rzgwpw.madeincookware.com^ +||rzoevr.qvc.de^ +||rzpjyz.pasona.co.jp^ +||saclel.zotapay.com^ +||sagxlv.daniellashevel.com^ +||sbdhdq.zeeman.com^ +||sbfrnq.naturalforme.fr^ +||sbmwgj.vidaxl.hu^ +||sbpzeq.lululemon.com.au^ +||sbttlj.togetter.com^ +||sbxxyx.notino.cz^ +||sbyneh.dailymail.co.uk^ +||scjlpq.navitime.co.jp^ +||scuhuh.cucannetshop.jp^ +||scuvcc.sportmax.com^ +||scuzgq.greencell.global^ +||scvgzt.onequince.com^ +||sdjthl.tvguide.dk^ +||sdlmaf.bestsecret.at^ +||sdpimt.lostgolfballs.com^ +||sebotr.rizeclinic.com^ +||sejdfu.coeur.de^ +||senlvg.secretsdujeu.com^ +||sepvbm.fromyouflowers.com^ +||seyfwl.bryk.pl^ +||seyfwl.deccoria.pl^ +||seyfwl.interia.pl^ +||seyfwl.maxmodels.pl^ +||seyfwl.okazjum.pl^ +||seyfwl.pomponik.pl^ +||seyfwl.smaker.pl^ +||seyfwl.styl.pl^ +||sezixz.officesupply.com^ +||sfajfu.boulanger.com^ +||sfbpok.theluxurycloset.com^ +||sffsgi.miele.com.tr^ +||sffyrc.ruparupa.com^ +||sfgysl.m-i.kr^ +||sfgysl.ppomppu.co.kr^ +||sfhgqy.i-sozoku.com^ +||sflvqq.pleinoutlet.com^ +||sfngya.centrecom.com.au^ +||sggsbd.fonteyn.nl^ +||sgwhvw.alura.com.br^ +||shjwhv.falsepeti.com^ +||shtptt.cupshe.com^ +||siazlw.cetroloja.com.br^ +||siewmi.uncommongoods.com^ +||sihoqd.sheridan.com.au^ +||sinkou.tireshop.com.br^ +||sipulo.katies.com.au^ +||sisdtb.climatempo.com.br^ +||siusmv.coraltravel.pl^ +||sizcsi.eobuv.cz^ +||sizybn.shipsltd.co.jp^ +||sjanff.v-moda.com^ +||sjmbua.matsui.co.jp^ +||sjprdu.oakhouse.jp^ +||sjryno.fullyloadedchew.com^ +||sjyzsm.danjohn.com^ +||skbnfa.filorga.com^ +||skmcwz.haselmode.co.kr^ +||skxbbj.clasic.jp^ +||slbunz.casamundo.fr^ +||slewvr.gp.se^ +||slryca.meyou.jp^ +||smbzbm.skymilescruises.com^ +||smqzbr.proozy.com^ +||smsulx.kijijiautos.ca^ +||smtccv.loveholidays.com^ +||smtpmail.velpa.pl^ +||smwvlc.intermixonline.com^ +||smxmlr.shimojima.jp^ +||snbwyi.heine.at^ +||snprxx.wwfmarket.com^ +||snvbhd.weltbild.at^ +||soejzg.efe.com.pe^ +||soelui.butosklep.pl^ +||sohiuc.sheego.de^ +||sorrhs.nescafe.com.tr^ +||sorxyx.vi.nl^ +||soubej.larebajavirtual.com^ +||soxnwz.lg.com^ +||spenvp.gate.shop^ +||spigte.shopee.tw^ +||spjysa.only.com^ +||spmaeu.gumtree.com.au^ +||spmyma.moscowfresh.ru^ +||sqdgwx.jobrapido.com^ +||sqdljj.kijiji.ca^ +||sqmazf.workamajig.com^ +||sqripu.selsey.pl^ +||sqtivj.vidaxl.hr^ +||srmdvb.ekohealth.com^ +||sroork.mrmarvis.nl^ +||srratl.mona-mode.at^ +||ssgamf.stories.com^ +||sshhfy.ray-ban.com^ +||ssigpc.servusmarktplatz.com^ +||ssjqkt.ekosport.it^ +||sspkbf.ragtag.jp^ +||ssuork.sixt.at^ +||ssushe.kennethcole.com^ +||stahhx.inversapub.com^ +||stehly.justfashionnow.com^ +||stfynw.esprit.be^ +||stktkt.profizelt24.de^ +||stliom.vidaxl.cz^ +||sufesj.shop4runners.com^ +||sufetv.chefuniforms.com^ +||supvka.colancolan.com^ +||suriwl.petsmart.com^ +||suxqvc.pinksisly.com^ +||suydnc.wwf.it^ +||svoywu.autoscout24.de^ +||svpury.sizeofficial.de^ +||svpxbr.drsquatch.com^ +||swdced.open32.nl^ +||swqleb.adidas.ru^ +||swwcyk.ahaber.com.tr^ +||swwcyk.atv.com.tr^ +||swwcyk.takvim.com.tr^ +||sxeimx.mydays.de^ +||sxjfhh.app.com^ +||sxjfhh.azcentral.com^ +||sxjfhh.battlecreekenquirer.com^ +||sxjfhh.caller.com^ +||sxjfhh.citizen-times.com^ +||sxjfhh.clarionledger.com^ +||sxjfhh.courier-journal.com^ +||sxjfhh.courierpostonline.com^ +||sxjfhh.delawareonline.com^ +||sxjfhh.delmarvanow.com^ +||sxjfhh.democratandchronicle.com^ +||sxjfhh.desertsun.com^ +||sxjfhh.desmoinesregister.com^ +||sxjfhh.detroitnews.com^ +||sxjfhh.floridatoday.com^ +||sxjfhh.freep.com^ +||sxjfhh.greenbaypressgazette.com^ +||sxjfhh.guampdn.com^ +||sxjfhh.hattiesburgamerican.com^ +||sxjfhh.hometownlife.com^ +||sxjfhh.indystar.com^ +||sxjfhh.jconline.com^ +||sxjfhh.jsonline.com^ +||sxjfhh.kitsapsun.com^ +||sxjfhh.knoxnews.com^ +||sxjfhh.lcsun-news.com^ +||sxjfhh.livingstondaily.com^ +||sxjfhh.lohud.com^ +||sxjfhh.montgomeryadvertiser.com^ +||sxjfhh.naplesnews.com^ +||sxjfhh.newarkadvocate.com^ +||sxjfhh.news-press.com^ +||sxjfhh.newsleader.com^ +||sxjfhh.northjersey.com^ +||sxjfhh.oklahoman.com^ +||sxjfhh.packersnews.com^ +||sxjfhh.pnj.com^ +||sxjfhh.poughkeepsiejournal.com^ +||sxjfhh.press-citizen.com^ +||sxjfhh.pressconnects.com^ +||sxjfhh.redding.com^ +||sxjfhh.rgj.com^ +||sxjfhh.sctimes.com^ +||sxjfhh.sheboyganpress.com^ +||sxjfhh.statesmanjournal.com^ +||sxjfhh.tallahassee.com^ +||sxjfhh.tcpalm.com^ +||sxjfhh.tennessean.com^ +||sxjfhh.theleafchronicle.com^ +||sxjfhh.thenewsstar.com^ +||sxjfhh.thespectrum.com^ +||sxjfhh.thetimesherald.com^ +||sxjfhh.thetowntalk.com^ +||sxjfhh.timesrecordnews.com^ +||sxjfhh.usatoday.com^ +||sxjfhh.vcstar.com^ +||sxmxpm.nectarsleep.com^ +||syfwnf.society6.com^ +||syqhvv.vivense.com^ +||sytuzk.nissanvimontlaval.com^ +||syvvsv.artex.com.br^ +||syycwa.barcelo.com^ +||szakms.bygghemma.se^ +||szgcnd.capfun.es^ +||szkbyo.zkai.co.jp^ +||sztpmc.branshes.com^ +||taduhy.timberland.co.uk^ +||taemhn.zamst-online.jp^ +||tagmwu.thalia.at^ +||takigx.tourneau.com^ +||takqyi.laurenhi.jp^ +||tatehj.nylaarp.com^ +||taznfx.renters.pl^ +||tbaqje.zadig-et-voltaire.com^ +||tbdhap.gamesonly.at^ +||tbihvt.pickawood.com^ +||tbjasp.cyrillus.de^ +||tbknig.ecc.jp^ +||tbmgyz.centerparcs.de^ +||tbvjrd.gocase.com.br^ +||tcbtus.opodo.com^ +||tccjxk.123.ru^ +||tchaxv.large.nl^ +||tczulp.econea.cz^ +||tdaqzz.graviditetskollen.nu^ +||tdbnom.madeleine.de^ +||tdbsoc.thegivingmovement.com^ +||tdjvod.chevignon.com.co^ +||teczbq.amicashop.com^ +||teijgy.herveleger.com^ +||telulr.golfgalaxy.com^ +||teraes.hgreg.com^ +||tevjso.konesso.pl^ +||tevzas.autoscout24.fr^ +||tewisg.monster.fi^ +||teyvmb.moniquelhuillier.com^ +||tfdtpa.dot-st.com^ +||tfoyfx.dukefotografia.com^ +||tfpeev.chanluu.com^ +||tfunqc.domonet.jp^ +||tfuodg.memolife.de^ +||tgbfha.lily-brw.com^ +||tgirgs.flinders.nl^ +||tgmklw.productreview.com.au^ +||tgsdiw.dedoles.de^ +||tgtgzo.otelz.com^ +||thaqyl.mediamarkt.nl^ +||thhesw.tre.it^ +||thsnvv.hollywoodschaukel-paradies.de^ +||ticvui.alexandani.com^ +||tiglck.technopolis.bg^ +||tioztp.unisportstore.nl^ +||tivixv.nutribullet.com^ +||tjbhng.hemington.com.tr^ +||tjitde.dodo.it^ +||tjnffp.tilebar.com^ +||tjwpfr.unitrailer.de^ +||tjyrup.templeandwebster.com.au^ +||tjzvuo.youcom.com.br^ +||tkgaws.seokplant.com^ +||tkjcqb.forrent.com^ +||tkmeyf.houseoflotus.jp^ +||tkvied.levi.com.my^ +||tkvxdj.cars.com^ +||tkykzv.polisorb.com^ +||tkzvse.whois.co.kr^ +||tlsalw.platypusshoes.co.nz^ +||tltkpu.jagran.com^ +||tltpyy.saatchiart.com^ +||tmbsxx.oxybul.com^ +||tmhgma.juwelo.de^ +||tmrhpl.nurse-agent.com^ +||tmwkya.jh-profishop.at^ +||tmxjdr.benaza.ro^ +||tncpzu.marelbo.com^ +||tnegqr.bohme.com^ +||tnhcsf.holzkern.com^ +||tniujy.natura.com.br^ +||tnxxtx.crepeerase.com^ +||toeopa.doutornature.com^ +||tpfrro.justlease.nl^ +||tpmexb.vans.co.nz^ +||tpubrk.eobuv.com^ +||tqbdio.medicare.pt^ +||tqiwqa.jdsports.ie^ +||tqkspo.neobyte.es^ +||tqtedm.kosmetik.at^ +||tqvacq.intrend.it^ +||tqxpnv.bauhaus.info^ +||trccvt.dhc.co.jp^ +||trkpzz.dcinside.com^ +||trpzjj.hrkgame.com^ +||trvonu.k-manga.jp^ +||tsbkht.puritan.com^ +||tsbmkf.zonnebrillen.com^ +||tsedvc.aboutyou.ch^ +||tshuxi.bbqguys.com^ +||tsliat.medme.pl^ +||tswafl.lascana.nl^ +||ttfpil.2dehands.be^ +||ttnnuo.racing-planet.de^ +||tuagol.gartenmoebel.de^ +||tufcum.margaretha.se^ +||tugngs.tui.com^ +||tuvevx.agent-sana.com^ +||tvcoag.brw.pl^ +||tvkfms.nta.co.jp^ +||tvuaeb.taqi.com.br^ +||twdhec.marioeletro.com^ +||twjobq.sixt.com^ +||twjobq.sixt.de^ +||twjobq.sixt.es^ +||twjobq.sixt.fr^ +||twjobq.sixt.nl^ +||twkbui.mansion-review.jp^ +||twoeej.carrefour.fr^ +||twsdne.petenkoiratarvike.com^ +||txaxkc.dsc-nightstore.com^ +||txfroe.decodoma.cz^ +||txfryh.terra.com.br^ +||txmmdl.lampy.pl^ +||txpbnm.sevellia.com^ +||txscpj.emp.ie^ +||txvoin.with2.net^ +||txyqik.jjshouse.fr^ +||tybfxw.puma.com^ +||tytpdz.climamarket.it^ +||tyvuwf.lameteoagricole.net^ +||tzovkp.aboutyou.at^ +||uaaooa.stansberryresearch.com^ +||ualkzq.moobel1.ee^ +||uaqcui.tennis-point.fr^ +||uarrdg.landsofamerica.com^ +||uasmdd.icaniwill.no^ +||uawefo.guylook.co.kr^ +||uazmti.a101.com.tr^ +||ubdjfy.maje.com^ +||ubdsej.notino.pl^ +||ubmdob.connection.com^ +||ubmups.houseofindya.com^ +||ubmwua.maisonsetappartements.fr^ +||ubpekn.sivillage.com^ +||ubqjbd.daviddonahue.com^ +||ubrihx.allbirds.jp^ +||ubvsjh.pointtown.com^ +||ubyjor.distrelec.ch^ +||ubykct.teufel.ch^ +||ucdvze.gudrunsjoden.com^ +||uclgnz.lunabazaar.com^ +||ucmahi.lectiva.com^ +||ucppeo.silux.hr^ +||udgrbq.malwarebytes.com^ +||udicje.perrys.co.uk^ +||udmmdl.dudalina.com.br^ +||udonjl.coopdeli.jp^ +||udrnks.vedder-vedder.com^ +||udrvvx.kabum.com.br^ +||udsgty.alkosto.com^ +||udxsuy.helline.fr^ +||udzucw.haggar.com^ +||uectfe.toptantr.com^ +||uedvam.tatilsepeti.com^ +||ueuqui.esprit.nl^ +||ufeonk.viravira.co^ +||uflfhl.mercci22.com^ +||ufnbgh.meierq.com^ +||ufqzrk.espritshop.ch^ +||ufsmcn.blackspade.com.tr^ +||ufwsfi.magasins-u.com^ +||ugdcxl.timeout.com.hk^ +||ugdcxl.timeout.com^ +||ugdcxl.timeout.es^ +||ugdcxl.timeout.jp^ +||ugdcxl.timeout.pt^ +||ughska.kids-world.dk^ +||ugkray.theloom.in^ +||uglwov.logic-immo.com^ +||ugzbsu.klimaworld.com^ +||uhenqb.manning.com^ +||uhlagm.rakurakuseisan.jp^ +||uhlkij.bonprix.it^ +||uhmpda.sunlocation.com^ +||uhrsek.shoemarker.co.kr^ +||uicjnk.gumtree.co.za^ +||uidpcx.planet.fr^ +||uifesg.modulor.de^ +||uigwgn.france-abonnements.fr^ +||uijciz.gunze.jp^ +||uilwmi.coop.nl^ +||uinpmz.iichi.com^ +||uiusqp.crowdcow.com^ +||uiwock.epantofi.ro^ +||ujbhri.pharmamarket.nl^ +||ujlwwo.lehner-versand.ch^ +||ujvqrs.meandem.com^ +||ujwfrf.uniformix.pl^ +||ujzqud.bestsecret.se^ +||ukaytg.cortefiel.com^ +||ukgfxw.satofull.jp^ +||ukjphn.vitaminler.com^ +||ukmnlp.techbang.com^ +||ukpgsb.agrieuro.es^ +||ukzjce.idus.com^ +||uldtqa.weekendmaxmara.com^ +||ulhyys.naehwelt.de^ +||ulidoo.montblanc.com^ +||ulinyo.bandito.com.tr^ +||ultund.misterspex.nl^ +||ulutlv.esprit.fr^ +||umazvs.raybiotech.com^ +||umdlbn.globetrotter.de^ +||umdpva.gakumado.mynavi.jp^ +||umhyck.belvilla.com^ +||umiaob.kireibiz.jp^ +||umtzwr.adidas.co.kr^ +||umwuxk.hotel.cz^ +||umxwew.hellobello.com^ +||uncmbg.timberland.de^ +||undurs.1md.org^ +||unyzea.aboutyou.sk^ +||uoblij.farmaline.be^ +||uofcdl.lagos.com^ +||uogqym.christopherandbanks.com^ +||uojpjo.miin-cosmetics.com^ +||uolwbz.heine.de^ +||uoqxdh.tendapro.it^ +||upeayz.eksisozluk.com^ +||upfmqr.carmensteffens.com.br^ +||uppbrl.thomassabo.com^ +||upqmpu.leasingtime.de^ +||upwkcv.vidaxl.ro^ +||upwwgd.zentempel.com^ +||uqckxr.chilli.se^ +||uqhpej.wiberrentacar.com^ +||urehgr.halekulani.com^ +||ureoaw.netthandelen.no^ +||uriokr.bauhaus.es^ +||urmgui.nationsphotolab.com^ +||uroqgj.wind.it^ +||urxbvw.tui.nl^ +||usdbbx.mmartan.com.br^ +||usgzei.vidaxl.ch^ +||usnvuj.skillfactory.ru^ +||usrkrz.zdravcity.ru^ +||usyyzz.winparts.nl^ +||usztct.gang.com.br^ +||utapbu.cykelkraft.se^ +||utgckq.reductionrevolution.com.au^ +||utjzyz.phillips.com^ +||utklhk.kojima.net^ +||utxokv.emp.co.uk^ +||uudbvq.skuola.net^ +||uuhejd.snipes.es^ +||uunczm.lescon.com.tr^ +||uurykr.pizzahut.com.mx^ +||uurzdr.global-style.jp^ +||uuzxaz.vidaxl.com^ +||uvccpk.1800petmeds.com^ +||uvgxhu.ezgif.com^ +||uvgxhu.sharemods.com^ +||uvpnpz.misterspex.ch^ +||uvqvvh.avva.com.tr^ +||uvzrtq.livingspaces.com^ +||uwdzbo.tgw.com^ +||uwxdru.hellovillam.com^ +||uxdse.sugarshape.de^ +||uxkurx.sportsmansguide.com^ +||uxqzcu.raunt.com^ +||uxtqtg.quattroruote.it^ +||uyivht.robertgraham.us^ +||uylodc.ecosa.com.au^ +||uyupgd.goalzero.com^ +||uzevnf.realtystore.com^ +||uzhobt.wholesalemarine.com^ +||uzipbs.weltbild.ch^ +||uzpkre.connor.com.au^ +||vahlnd.bogsfootwear.com^ +||vapxga.sieh-an.de^ +||vazulp.graniph.com^ +||vbkryy.pasonacareer.jp^ +||vbseje.stonehengehealth.com^ +||vbsjdd.olx.pt^ +||vbtdzb.fyndiq.se^ +||vdkjfd.hottopic.com^ +||vdmvyu.falk.de^ +||vdrebz.kathmandu.com.au^ +||vdrfga.deagoshop.ru^ +||vdrigb.8190.jp^ +||vdrxia.farmacosmo.it^ +||vdslnp.highkey.com^ +||vdvdjf.remotepc.com^ +||vdzrjr.kenminkyosai.or.jp^ +||vedznh.cumhuriyet.com.tr^ +||veosfi.woonexpress.nl^ +||veqvek.bnnbloomberg.ca^ +||veqvek.ctv.ca^ +||veqvek.ctvnews.ca^ +||veqvek.much.com^ +||veqvek.thebeaverton.com^ +||veqvek.tsn.ca^ +||vewbab.entertainmentearth.com^ +||vezsyr.bxblue.com.br^ +||vfmahn.slevomat.cz^ +||vfvcxv.naturhaeuschen.de^ +||vgavzy.spierandmackay.com^ +||vgazda.krefel.be^ +||vgbify.underarmour.de^ +||vgellr.esprit.de^ +||vglosh.courierpress.com^ +||vgrbvi.atncorp.com^ +||vhmewg.edreams.fr^ +||vhmjci.edreams.co.uk^ +||vhpabx.herffjones.com^ +||vhrbxb.vidaxl.nl^ +||vibsqr.theuiq.com^ +||vipwao.nutrimuscle.com^ +||vipyou.bulkpowders.es^ +||vjjgpt.diamond.jp^ +||vkbvny.ddanzi.com^ +||vkbvny.fow.kr^ +||vkctxy.yves-rocher.fi^ +||vkkasm.officechairsusa.com^ +||vkrdts.finestore.ro^ +||vkscdg.solocruceros.com^ +||vkxyjj.g2a.com^ +||vllsuv.skatedeluxe.com^ +||vmgihu.gelatopique.com^ +||vmjdpk.repairclinic.com^ +||vmsspl.tenamall.co.kr^ +||vmsxzx.buienradar.nl^ +||vmwody.seibu-k.co.jp^ +||vnlvxi.vivastreet.co.uk^ +||vnmopn.brax.com^ +||vnqcyq.noon.co.kr^ +||vnzwxk.e-bebek.com^ +||vocfhq.ilgiardinodeilibri.it^ +||vonvdn.garden.ne.jp^ +||voqysr.afr-web.co.jp^ +||voroud.wine.com.br^ +||vouzpu.tokyolife.co.jp^ +||voxtjm.about-you.ee^ +||vpemsb.autocasion.com^ +||vphsiv.gsshop.com^ +||vpivyf.meshki.com.au^ +||vpmdiq.propertyfinder.qa^ +||vpuuzj.schnullireich.de^ +||vqbidy.benetton.com^ +||vqjacf.mauriziocollectionstore.com^ +||vqpque.eloan.co.jp^ +||vqvuid.kobetsu.co.jp^ +||vqxlbd.billyreid.com^ +||vrhesh.avocadogreenmattress.com^ +||vrvjwr.mobelaris.com^ +||vrzmfy.fool.com^ +||vsfius.aranzulla.it^ +||vsqyaz.sweetwater.com^ +||vtffnz.blindsdirect.co.uk^ +||vtodss.livenation.com^ +||vttics.world.co.jp^ +||vuypew.ikks.com^ +||vvaaol.enuygun.com^ +||vvikao.brighton.com^ +||vvktyh.yotsuyagakuin.com^ +||vvnhhb.mebeles1.lv^ +||vvqizy.witt-weiden.de^ +||vwakpz.vidri.com.sv^ +||vwiind.beautyforever.com^ +||vwotiw.agazeta.com.br^ +||vwrgru.happymail.co.jp^ +||vxcjoz.nextadvisor.com^ +||vxlpha.weddingpark.net^ +||vxohkh.laboutiqueofficielle.com^ +||vxvibc.asahi-kasei.co.jp^ +||vyeysj.foto-mundus.de^ +||vyjwxc.elemis.com^ +||vyplzy.job-medley.com^ +||vyuodh.your-look-for-less.nl^ +||vyyikx.sixt.ch^ +||vyykdr.renogy.com^ +||vzcfqp.unibet.fr^ +||vzeyba.shopee.co.id^ +||vzhjnw.officedepot.com^ +||vzynem.lamporochljus.se^ +||waatch.gva.be^ +||waatch.hbvl.be^ +||waatch.nieuwsblad.be^ +||waatch.standaard.be^ +||waawuu.highfashionhome.com^ +||wabsgz.studocu.com^ +||wafoub.graindemalice.fr^ +||wamahe.wokularach.pl^ +||warrjy.feiler.jp^ +||wavrlh.cedok.cz^ +||wavzlt.michaelstars.com^ +||wbcygu.wardow.com^ +||wbiphu.johnbeerens.com^ +||wbkval.ecco.com^ +||wboeot.shop2gether.com.br^ +||wbswtr.decathlon.com.tr^ +||wchjfv.apartmenttherapy.com^ +||wddnff.bonprix.cz^ +||wdnyom.faces.com^ +||wdsgpy.lekarna.cz^ +||wdukge.midwayusa.com^ +||webmail.velpa.pl^ +||wejpuy.factor75.com^ +||wemqip.misli.com^ +||weoccn.bonito.pl^ +||wepany.tripbeat.com^ +||wesbgz.travel.co.jp^ +||wevbgr.vidaxl.it^ +||wezbvq.heine-shop.nl^ +||wfmcgd.msccruzeiros.com.br^ +||wgeaqi.laredoute.gr^ +||wgnrrd.culturekings.com^ +||wgpepw.boatoutfitters.com^ +||wgyapq.stormberg.com^ +||whahmy.timberland.es^ +||whcmij.altitude-sports.com^ +||whqkyq.leasingmarkt.de^ +||whwiab.pamono.it^ +||wigkxx.jetcost.com^ +||wirjoi.meetsmore.com^ +||wjssvg.descentekorea.co.kr^ +||wjtekf.vidaxl.bg^ +||wjzyrk.magiclife.com^ +||wklwyt.springer.com^ +||wkpjgh.toysrus.pt^ +||wkudly.realtruck.com^ +||wkuuuj.byther.kr^ +||wkympu.agnesb.co.jp^ +||wlkojk.orange.ro^ +||wlptux.habitaclia.com^ +||wlqtte.misterspex.at^ +||wlwtcr.toptoon.com^ +||wlxhzn.godfreys.com.au^ +||wmbldi.compass.it^ +||wmizdm.relax-job.com^ +||wmpmvk.whiskeyriff.com^ +||wmvroh.sgd.de^ +||wmxuba.aldoshoes.com^ +||wnegmu.timberland.nl^ +||wnfwzx.panpacific.com^ +||wngyjr.sportservice.pl^ +||wnozpl.escarpe.it^ +||wnvieu.enpal.de^ +||wnyywf.frankonia.de^ +||woosyt.portalesardegna.com^ +||woowjy.desa.com.tr^ +||woqcfy.sony.ru^ +||woutkw.type.jp^ +||wowrdm.stepstone.at^ +||wozdcc.vidaxl.at^ +||wpauvu.obuvki.bg^ +||wpgobx.feber.se^ +||wpgobx.marcusoscarsson.se^ +||wpkfti.1300k.com^ +||wppyub.mygenerator.com.au^ +||wpyvue.idealwine.com^ +||wqfflc.fupa.net^ +||wqfflc.gartendialog.de^ +||wqfflc.hausgarten.net^ +||wqfflc.plantopedia.de^ +||wqudcv.finnishdesignshop.com^ +||wqytxm.kurly.com^ +||wrkbha.lyst.de^ +||wrlnvt.pepita.hu^ +||wrugwj.bakerross.de^ +||wrvueo.mollis.ru^ +||wsnrfb.modlily.com^ +||wsuqzu.armani.com^ +||wsytyz.tts.ru^ +||wszwgs.cocopanda.fi^ +||wtdpkq.tausendkind.de^ +||wtesqx.news.mynavi.jp^ +||wtgnmr.golfdigest.co.jp^ +||wttbup.novasol.de^ +||wucvvh.surpricenow.com^ +||wvlirb.lexoffice.de^ +||wvoudw.magaseek.com^ +||wvrukp.globalcyclingnetwork.com^ +||wvzddr.quirumed.com^ +||wwbsll.nissen.co.jp^ +||wwnscv.myspringfield.com^ +||wwokkf.laredoute.ru^ +||wwrupv.tannico.it^ +||wxaaqr.plusdental.de^ +||wxbaal.ecosa.com.hk^ +||wxebye.aboutyou.hu^ +||wxgmca.orthofeet.com^ +||wxnxau.air-r.jp^ +||wxwsmt.matsmart.fi^ +||wyaopp.lacoccinelle.net^ +||wyelmp.vidaxl.si^ +||wywvyf.discuss.com.hk^ +||wywvyf.price.com.hk^ +||wywvyf.uwants.com^ +||wyzdlu.arhaus.com^ +||wyzqiy.pnet.co.za^ +||wzcnha.lenspure.com^ +||wzkhzb.cantao.com.br^ +||wzkjip.coru.com^ +||wzpwxe.4lapy.ru^ +||wzyjup.patch.com^ +||wzzhvn.hammer.de^ +||xaguwy.thomas-muenz.ru^ +||xbmady.daimaru-matsuzakaya.jp^ +||xbshje.smartbag.com.br^ +||xbwpfs.fotocasa.es^ +||xcedwa.contactsdirect.com^ +||xcgpdf.beautygarage.jp^ +||xcojhb.unitysquare.co.kr^ +||xdaoxa.footasylum.com^ +||xdbchs.bradfordexchange.com^ +||xdcpfs.shopdoen.com^ +||xdeiaf.elleshop.jp^ +||xdkwsh.farmacialoreto.it^ +||xdsblm.ullapopken.de^ +||xdvdrg.globalindustrial.com^ +||xejpzk.fram.fr^ +||xekjzy.rinascente.it^ +||xewihp.bayut.com^ +||xfobuc.serenaandlily.com^ +||xfzcds.netprint.ru^ +||xgefvi.iteshop.com^ +||xgezbc.tripmasters.com^ +||xgspzv.troyestore.com^ +||xgvenv.farmatodo.com.co^ +||xgyvaf.easydew.co.kr^ +||xhbzrk.hotmart.com^ +||xhohnr.fdm.pl^ +||xhqmvu.k-uno.co.jp^ +||xhuahy.juwelo.it^ +||xhxmhs.ounass.ae^ +||xibspj.komehyo.jp^ +||xiqvza.dickblick.com^ +||xitvce.webtretho.com^ +||xiuksf.worten.es^ +||xiznql.laredoute.it^ +||xjkpzh.voraxacessorios.com.br^ +||xjkugh.waterdropfilter.com^ +||xjoqmy.tuifly.be^ +||xjztuj.kbwine.com^ +||xkddvf.gigantti.fi^ +||xkgtxj.edomator.pl^ +||xkidkt.edenbrothers.com^ +||xknhwv.mobile01.com^ +||xkvmsr.hair.com^ +||xkzura.yves-rocher.se^ +||xlapmx.mcsport.ie^ +||xlbvvo.luisaviaroma.com^ +||xldnzg.trendhim.de^ +||xlhdtn.hugendubel.de^ +||xljqqe.hsn.com^ +||xludzt.alfastrah.ru^ +||xmcvqq.pinkpanda.ro^ +||xmfugv.tgn.co.jp^ +||xmohlh.melia.com^ +||xmqrvx.jewelry-queen-shop.com^ +||xmyvhu.soxo.pl^ +||xnukcp.cpcompany.com^ +||xpcpmr.gsm55.com^ +||xpygen.unger-fashion.com^ +||xpzswr.shasa.com^ +||xqdwwj.medpeer.jp^ +||xqslse.annadiva.nl^ +||xqtcur.kirklands.com^ +||xqupwc.emp.at^ +||xqzqdj.mfind.pl^ +||xransv.hometogo.com.au^ +||xrcksn.vvf-villages.fr^ +||xrnyhc.arumdri.co.kr^ +||xrnyhc.jokwangilbo.com^ +||xrnyhc.welltimes.co.kr^ +||xrxybn.kotofey-shop.ru^ +||xscmzs.tenki.jp^ +||xslmpq.ohou.se^ +||xsrzqh.ananzi.co.za^ +||xsrzqh.oferte360.ro^ +||xsrzqh.the-star.co.ke^ +||xsrzqh.vietnamplus.vn^ +||xsswcg.moglix.com^ +||xtazfx.50factory.com^ +||xtxwva.intersport.com.tr^ +||xudmrz.conforama.fr^ +||xugxwq.e-hoi.de^ +||xunzbx.mon-abri-de-jardin.com^ +||xuojhr.mobly.com.br^ +||xutolr.mainichikirei.jp^ +||xutolr.mantan-web.jp^ +||xuymgm.hostgator.mx^ +||xvteew.lacoste.jp^ +||xvyxgy.stz.com.br^ +||xwpoxv.birdies.com^ +||xwpzlz.gemimarket.it^ +||xwzebw.waja.co.jp^ +||xxjiqg.oysho.com^ +||xxpnnq.sklepmartes.pl^ +||xxsdtb.edreams.com^ +||xxxssv.jeulia.com^ +||xygxko.shop-apotheke.ch^ +||xyhojp.lacoste.com^ +||xymddt.clubeextra.com.br^ +||xymhzq.klingel.de^ +||xyxgbs.lezhin.com^ +||xyzznt.uterque.com^ +||xzjqlg.marella.com^ +||xztqfj.dreamvs.jp^ +||xzutow.affordablelamps.com^ +||xzwcng.vans.com.au^ +||yadtbk.blacks.co.uk^ +||yagoqv.smartbuyglasses.ca^ +||yajkhd.supersports.com^ +||yawxae.footpatrol.com^ +||yaxedj.vkf-renzel.de^ +||yazzuf.joyn.de^ +||ybgsyd.osharewalker.co.jp^ +||ybswii.swarovski.com^ +||ybzcmz.momoshop.com.tw^ +||ycembr.net-a-porter.com^ +||ychqww.aboutyou.lv^ +||ycjhuh.stripe-club.com^ +||ydbcct.nikigolf.jp^ +||ydbeuq.superpharm.pl^ +||ydccky.direnc.net^ +||ydcksa.certideal.com^ +||yddtah.takingshape.com^ +||ydosfw.filippa-k.com^ +||ydtzzw.firenzeviola.it^ +||ydtzzw.milannews.it^ +||ydtzzw.pianetabasket.com^ +||ydtzzw.torinogranata.it^ +||ydtzzw.tuttoc.com^ +||ydtzzw.tuttojuve.com^ +||ydtzzw.tuttomercatoweb.com^ +||ydtzzw.tuttonapoli.net^ +||ydtzzw.vocegiallorossa.it^ +||ydvsok.newbalance.jp^ +||yebvpc.gardengoodsdirect.com^ +||yefktd.avito.ru^ +||yehyqc.hugoboss.com^ +||yewrcd.govoyages.com^ +||yezztf.pinkelephant.co.kr^ +||yfaygn.natureetdecouvertes.com^ +||yfclaf.dsw.ca^ +||yfenys.prenatal.com^ +||yfepff.raymourflanigan.com^ +||yfkclv.asianetnews.com^ +||yfpvmd.reed.co.uk^ +||yftkzg.thisisfutbol.com^ +||yfwnsy.infraredsauna.com^ +||ygdogx.hearstmagazines.co.uk^ +||ygecho.wenz.de^ +||ygmpia.worten.pt^ +||ygopvz.windsorstore.com^ +||ygsoeu.size.co.uk^ +||ygtfgu.casamundo.nl^ +||ygxqjz.intersport.fi^ +||yhbdzh.farmasiint.com^ +||yhhuzt.gintarine.lt^ +||yhjgjk.wemakeup.it^ +||yhnwux.infomoney.com.br^ +||yhskfe.klipsch.com^ +||yhuamf.ktronix.com^ +||yhvewh.aboutyou.ro^ +||yiiwaq.mms.com^ +||yikrmn.ciceksepeti.com^ +||yiohzu.tsigs.com^ +||yixvbp.merkal.com^ +||yizlda.crocs.co.uk^ +||yjlbvd.pcfactory.cl^ +||yjlhep.skechers.co.nz^ +||yjpgxf.svsound.com^ +||yjpzqw.jackjones.com^ +||yjrcks.smile-zemi.jp^ +||yjxssk.apartments.com^ +||ykfrpx.kapten-son.com^ +||ykhqhe.domain.com.au^ +||ykmsxu.vitalabo.ch^ +||yknjjb.usaflex.com.br^ +||ykqapk.aboutyou.si^ +||ykskhw.candytm.pl^ +||ykxfoj.purchasingpower.com^ +||ylafwg.greenpoint.pl^ +||ylakmr.expressionscatalog.com^ +||ylsjdq.jegs.com^ +||ylsjka.conranshop.jp^ +||ymcvxo.check24.de^ +||ymixqb.nationalgeographic.com^ +||ymqnky.bagaggio.com.br^ +||ymrtre.scandinavianoutdoor.fi^ +||ymvikp.estadao.com.br^ +||ymviwl.just4camper.de^ +||ynagqs.vidaxl.pl^ +||ynemmp.goertz.de^ +||yngnwe.8division.com^ +||ynudoo.shoeby.nl^ +||ynwqna.mayblue.co.kr^ +||yogolp.beststl.com^ +||yoifwi.levi.com.ph^ +||yoxeha.afloral.com^ +||ypbfjo.paulsmith.co.jp^ +||ypcdbw.drive2.com^ +||ypcdbw.drive2.ru^ +||ypdewh.dokuritsu.mynavi.jp^ +||ypkado.clicrbs.com.br^ +||ypndvx.stepstone.fr^ +||ypqgnx.morizon.pl^ +||ypwzcq.tink.de^ +||ypzktj.fly.pl^ +||yqaxvu.leilian-online.com^ +||yqigli.tourlane.de^ +||yqorwz.weisshaus.at^ +||yqqhbd.yotsuyaotsuka.com^ +||yrepmy.jochen-schweizer.de^ +||yrrudp.inven.co.kr^ +||ysaaks.mobiauto.com.br^ +||yskvdo.gebrauchtwagen.at^ +||ysuwrg.meritocomercial.com.br^ +||yszedg.vidaxl.dk^ +||ytbnvm.firadis.net^ +||ytouvy.arezzo.com.br^ +||ytwtxi.beautybio.com^ +||yueqal.glassesusa.com^ +||yujmyt.theiconic.co.nz^ +||yuoyan.finanzen.de^ +||yurobl.rw-co.com^ +||yvcjyi.beymen.com^ +||yvdaeg.on-running.com^ +||yvdxij.applevacations.com^ +||yvsofs.tropeaka.com.au^ +||yvtgva.casa.it^ +||ywayoh.ecipo.hu^ +||ywcqef.lyst.com.nl^ +||ywhikg.surplex.com^ +||ywkiyt.candere.com^ +||ywojvu.kujten.com^ +||ywrcqa.11alive.com^ +||ywrcqa.12news.com^ +||ywrcqa.13newsnow.com^ +||ywrcqa.13wmaz.com^ +||ywrcqa.9news.com^ +||ywrcqa.abc10.com^ +||ywrcqa.cbs8.com^ +||ywrcqa.fox43.com^ +||ywrcqa.fox61.com^ +||ywrcqa.kare11.com^ +||ywrcqa.kcentv.com^ +||ywrcqa.kens5.com^ +||ywrcqa.khou.com^ +||ywrcqa.king5.com^ +||ywrcqa.ksdk.com^ +||ywrcqa.ktvb.com^ +||ywrcqa.kvue.com^ +||ywrcqa.newscentermaine.com^ +||ywrcqa.newswest9.com^ +||ywrcqa.wcnc.com^ +||ywrcqa.wfaa.com^ +||ywrcqa.wfmynews2.com^ +||ywrcqa.wgrz.com^ +||ywrcqa.whas11.com^ +||ywrcqa.wkyc.com^ +||ywrcqa.wltx.com^ +||ywrcqa.wnep.com^ +||ywrcqa.wqad.com^ +||ywrcqa.wthr.com^ +||ywrcqa.wtsp.com^ +||ywrcqa.wusa9.com^ +||ywrcqa.wwltv.com^ +||ywrcqa.wzzm13.com^ +||ywzmvh.trovaprezzi.it^ +||yxfqar.trendhim.com.au^ +||yxgcfb.petit-bateau.co.jp^ +||yxiqqh.dealchecker.co.uk^ +||yxkzip.brastemp.com.br^ +||yxqfkm.24mx.de^ +||yxsdgi.bedworld.net^ +||yxxuyo.nintendo.co.za^ +||yxzfdl.550909.com^ +||yyhijp.g123.jp^ +||yylqlk.agatinsvet.cz^ +||yyqlpi.danmusikk.no^ +||yyrtip.mujkoberec.cz^ +||yysjea.stepstone.nl^ +||yysqrv.berge-meer.de^ +||yywdph.multu.pl^ +||yzcfva.healthyplanetcanada.com^ +||yzcpqa.gumtree.com^ +||yzdljh.clarins.ca^ +||yzdltz.pricerunner.dk^ +||yzjqqj.emmiol.com^ +||yzvpco.hfashionmall.com^ +||yzzqza.vanillashu.co.kr^ +||zaawds.farmae.it^ +||zaiuhu.vacatia.com^ +||zatong.icaniwill.se^ +||zbdtkk.totvs.com^ +||zbfszb.calpis-shop.jp^ +||zbrfde.ozmall.co.jp^ +||zcbsft.thedoublef.com^ +||zcjemo.alwaysfashion.com^ +||zcnknu.oxxo.com.tr^ +||zcwcep.lojasrede.com.br^ +||zdbbqb.mancrates.com^ +||zdcjts.asics.com^ +||zdpsve.scrapbook.com^ +||zdqlel.restplatzboerse.at^ +||zefpks.dealdonkey.com^ +||zesgky.belambra.fr^ +||zfhlsg.repassa.com.br^ +||zftces.hoiku-job.net^ +||zftrez.unisportstore.no^ +||zfvdeu.novaconcursos.com.br^ +||zgfilz.propertyfinder.eg^ +||zgqgig.skillbox.ru^ +||zgumwv.stepstone.de^ +||zgwxoy.autoscout24.ro^ +||zhcxvk.qvc.com^ +||zhduni.rizap.jp^ +||zhqcir.netage.ne.jp^ +||zhyeqw.mercury.ru^ +||zicgoi.emmiegray.de^ +||zieyeq.intent24.fr^ +||zigpdx.ltbjeans.com^ +||zikazx.bouwmaat.nl^ +||zilhvf.hesperide.com^ +||zilmwz.gsm55.it^ +||ziqrso.24mx.no^ +||ziuggw.archon.pl^ +||ziwewm.tecovas.com^ +||zjbfke.centerparcs.be^ +||zjhlsx.exxpozed.de^ +||zjhswy.comeup.com.tr^ +||zjkpxw.tesco.hu^ +||zjrbwb.markenschuhe.de^ +||zjzain.aboutyou.bg^ +||zjzste.tom-tailor.de^ +||zkebwy.copenhagenstudios.com^ +||zkkkvb.welovebags.de^ +||zknrhv.sebago.com^ +||zkntjk.hikaku-cardloan.news.mynavi.jp^ +||zkqhqv.sizeofficial.it^ +||zkvxgc.nissui-kenko.com^ +||zldqcc.dodenhof.de^ +||zlgkpr.lottehotel.com^ +||zlvxiw.medicarelife.com^ +||zmfdxt.megastudy.net^ +||zmhsxr.hometogo.com^ +||zmlntc.green-acres.es^ +||zmmrpv.peterglenn.com^ +||zmpvij.bonprix.fr^ +||zmyopn.babadotop.com.br^ +||zmzkyj.agrieuro.com^ +||znlgke.jiobit.com^ +||znmtka.kikocosmetics.com^ +||znrttr.jaypore.com^ +||zodhqv.peterson.fr^ +||zodxgk.lecoqsportif.com^ +||zopqks.kavehome.com^ +||zopxzq.premiata.it^ +||zozwyc.moscot.com^ +||zpashl.amgakuin.co.jp^ +||zpnrnr.ab-in-den-urlaub.de^ +||zppfgh.renovatuvestidor.com^ +||zqkdzl.invia.sk^ +||zqwofo.liverpool.com.mx^ +||zrbbbj.tf.com.br^ +||zrjllb.zeb.be^ +||zrknjk.countrystorecatalog.com^ +||zrktaa.cityfurniture.com^ +||zrnsri.vogacloset.com^ +||zrsaff.petworld.no^ +||zrsetz.shutterstock.com^ +||zrxdzq.levelshoes.com^ +||ztarkm.johnnie-o.com^ +||ztbbpz.betten.de^ +||ztfjtn.liujo.com^ +||ztgblo.vidaxl.lt^ +||ztpdcg.stroilioro.com^ +||ztqnls.lojasrenner.com.br^ +||zudopk.callondoc.com^ +||zudver.matsmart.se^ +||zuqjug.nutrabay.com^ +||zurjxe.armine.com^ +||zusvfq.otorapor.com^ +||zvbqya.marideal.mu^ +||zvfzqw.cotta.jp^ +||zvhkzb.ambiendo.de^ +||zvlxlu.emsan.com.tr^ +||zvrbwf.drogerienatura.pl^ +||zvvpcz.puravita.ch^ +||zvvsvr.kettner-edelmetalle.de^ +||zwatgf.megaknihy.cz^ +||zwinqi.spartoo.pt^ +||zwiucp.ohmynews.com^ +||zwokia.aigle.com^ +||zxbumj.edreams.it^ +||zxqnbp.heute-wohnen.de^ +||zxqrdm.vinomofo.com^ +||zxrnfc.drinco.jp^ +||zxrrop.musely.com^ +||zxxvns.f64.ro^ +||zybveu.swappie.com^ +||zycnof.distrelec.de^ +||zzaoea.costacrociere.it^ +||zzqyxd.smartpozyczka.pl^ +||zzsqqx.shopjapan.co.jp^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_oracle.txt *** +||10stepswp.advancedtech.com^ +||1stparty.equifax.co.uk^ +||360direct.qualfon.com^ +||529conference.strategic-i.com^ +||a.aer.com^ +||a.swd5.com^ +||aarpannuity.newyorklife.com^ +||aarpfda.newyorklife.com^ +||aarpgfi.newyorklife.com^ +||aarpgli.newyorklife.com^ +||abastur.ubmmexico.com^ +||abo.schibsted.no^ +||acceptcards.americanexpress.co.uk^ +||access.acspubs.org^ +||access.sunpower.com^ +||accountancy.bppeloqua.com^ +||accounting.frbservices.org^ +||acq-au.americanexpress.com^ +||acq-hk.americanexpress.com^ +||acq-jp.americanexpress.com^ +||acq-sg.americanexpress.com^ +||acquisition.cbre.com.au^ +||act.firstdata.com^ +||actie.athlon.com^ +||action.hassconsult.co.ke^ +||activation.labcorp.com^ +||activation.thunderinsider.com^ +||active.sangfor.com^ +||activos.contacto.promerica.fi.cr^ +||adi.ni.com^ +||admin.smartgroup.com.au^ +||adminspace.carte-gr.total.fr^ +||adpia.client.adpinfo.com^ +||adpia130611.adpinfo.com^ +||adppartner.solutions.adpinfo.com^ +||advancing.acams.org^ +||advantages.americanexpress.com^ +||advise.gallup.com^ +||advisor.americanexpress.ca^ +||advisor.eaglestrategies.com^ +||advisor.newyorklifeannuities.com^ +||advisorservices.etradefinancial.com^ +||advisorservicesfpc.etradefinancial.com^ +||ae-go.experian.com^ +||afhleads.keurig.ca^ +||africa.edm.globalsources.com^ +||agentcomm.mercuryinsurance.com^ +||agexpo.americanexpress.com^ +||agribusiness.intelligence.informa.com^ +||ahhmkt.anhua.com.cn^ +||ahima.coniferhealth.com^ +||ai.mist.com^ +||ai.thermo.com^ +||ai.thermofisher.com^ +||aidc.barcodesgroup.com^ +||aladdinupdate.blackrock.com^ +||albanychicago.advancedtech.com^ +||ald.aldautomotive.be^ +||alerts.ironmountain.com^ +||alerts.wolterskluwerfs.com^ +||alertsatwork.americanexpress.com^ +||alias.cloud-marketing.dimensiondata.com^ +||allergy.thermo.com^ +||allergy.thermofisher.com^ +||alquiler.aldflex.es^ +||alquiler.carflex.es^ +||altalex.wolterskluwer.com^ +||alternativetechnology.arrow.com^ +||alumni.qualfon.com^ +||am.siemensplmevents.com^ +||amer.juniper.net^ +||americasbrandperformancesupport.hilton.com^ +||ams.oraclecloud.com^ +||analytics.banksneveraskthat.com^ +||analytics.blackboard.com^ +||analytics.cognyte.com^ +||analytics.ferguson.com^ +||analytics.flexpay.io^ +||analytics.pollardwater.com^ +||analytics.uwindsor.ca^ +||angebote.plex.com^ +||anmeldung.promatis.ch^ +||anmeldung.promatis.de^ +||announcement.lyreco.com^ +||answers.teradata.ch^ +||answers.teradata.co.uk^ +||answers.teradata.com.cn^ +||answers.teradata.com.sa^ +||answers.teradata.com^ +||answers.teradata.de^ +||answers.teradata.fr^ +||answers.teradata.hu^ +||answers.teradata.in^ +||answers.teradata.jp^ +||answers.teradata.mx^ +||answers.teradata.pl^ +||answers.teradata.ru^ +||answers.teradata.se^ +||antwort.hager.de^ +||aonemeaclientcouncil.aon.com^ +||ap.quadient.com^ +||apac-go.experian.com^ +||apac.adpinfo.com^ +||apac.juniper.net^ +||apac.zendesk.com^ +||apacenews.roche.com^ +||apcinfo.motorolasolutions.com^ +||apcinfo.vertexstandard.com^ +||api-websystems.landing.ni.com^ +||app.12thman.com^ +||app.12thmanfoundation.com^ +||app.aaas-science.org^ +||app.accelerate.zoominfo.com^ +||app.advertisingsolutions.att-mail.com^ +||app.arizonawildcats.com^ +||app.arkansasrazorbacks.com^ +||app.arts.kent.edu^ +||app.arts.uci.edu^ +||app.auburntigers.com^ +||app.augustaentertainmentcomplex.com^ +||app.bandimere.com^ +||app.baylorbears.com^ +||app.bbmannpah.com^ +||app.bceagles.com^ +||app.bluehens.com^ +||app.bncontacto.fi.cr^ +||app.bucky.uwbadgers.com^ +||app.budweisergardens.com^ +||app.bushnell.org^ +||app.business.westernunion.com^ +||app.byutickets.com^ +||app.calbears.com^ +||app.campaign.morganstanley.com^ +||app.campaign.trendmicro.com^ +||app.campaigns.fidelity.com^ +||app.care.eisenhowerhealthcares.org^ +||app.cb.pnc.com^ +||app.ceb.executiveboard.com^ +||app.centreinthesquare.com^ +||app.charlotte49ers.com^ +||app.chartwayarena.com^ +||app.cimarketing.aig.com^ +||app.cincinnatiarts.org^ +||app.classiccenter.com^ +||app.cofcsports.com^ +||app.collinscenterforthearts.com^ +||app.comms.aon.com^ +||app.communications.americanexpress.ca^ +||app.communications.citimortgage.com^ +||app.communications.jdsu.com^ +||app.compasslearning.biz^ +||app.connect.cch.ca^ +||app.connect.mandiant.com^ +||app.connect.synopsys.com^ +||app.connect.vmware.com^ +||app.connect.wgbh.org^ +||app.connect.wgby.org^ +||app.connections.te.com^ +||app.corp.tableausoftware.com^ +||app.crm.millenniumhotels.com^ +||app.csurams.com^ +||app.cubuffs.com^ +||app.customer.adaptiveinsights.com^ +||app.customer.adaptiveplanning.com^ +||app.customerservice.royalmail.com^ +||app.dawsoncreekeventscentre.com^ +||app.demand.nexsan.com^ +||app.demand.ni.com^ +||app.depaulbluedemons.com^ +||app.dtlphx.net^ +||app.e.dowjones.com^ +||app.e.flukecal.com^ +||app.e.gettyimages.com^ +||app.e.intercall.com^ +||app.e.kqed.org^ +||app.ecupirates.com^ +||app.email.fitchratings.com^ +||app.email.forrester.com^ +||app.emarketing.heat.com^ +||app.emueagles.com^ +||app.enable.atmel.com^ +||app.engineering.sae.org^ +||app.entertainment.comcast-spectacor.com^ +||app.fabulousfox.com^ +||app.fans.wolveslynx.com^ +||app.fightingillini.com^ +||app.fightingirish.com^ +||app.financialinstitutions.53.com^ +||app.fleet2.vauxhall.co.uk^ +||app.fordidahocenter.com^ +||app.foxtheatre.org^ +||app.frbcommunications.org^ +||app.friars.com^ +||app.gafreedom.com^ +||app.gaincapital.com^ +||app.georgiadogs.com^ +||app.get.comcastbiz.com^ +||app.gfis.genworth.com^ +||app.gfwm.genworth.com^ +||app.global.certain.com^ +||app.globalbusinesstravel.americanexpress.com^ +||app.go.bmc.com^ +||app.go.coxmedia.com^ +||app.go.csc.com^ +||app.go.endicia.com^ +||app.go.gogoair.com^ +||app.go.gogoinflight.com^ +||app.go.guidancesoftware.com^ +||app.go.healthways.com^ +||app.go.hult.edu^ +||app.go.jacksonhewitt.com^ +||app.go.livingstonintl.com^ +||app.go.maas360.com^ +||app.go.nhaschools.com^ +||app.go.nitropdf.com^ +||app.go.pentonmarketingservices.com^ +||app.go.sitel.com^ +||app.go.terremark.com^ +||app.go.wolterskluwerlb.com^ +||app.go.xo.com^ +||app.goairforcefalcons.com^ +||app.goarmywestpoint.com^ +||app.gobearcats.com^ +||app.gobulldogs.com^ +||app.godeacs.com^ +||app.goduke.com^ +||app.gofrogs.com^ +||app.gogriz.com^ +||app.goguecenter.auburn.edu^ +||app.goheels.com^ +||app.gohuskies.com^ +||app.gopack.com^ +||app.gophersports.com^ +||app.gopsusports.com^ +||app.gorhody.com^ +||app.goshockers.com^ +||app.gostanford.com^ +||app.gotigersgo.com^ +||app.goto.dowjones.com^ +||app.gozips.com^ +||app.green.omniture.com^ +||app.griztix.umt.edu^ +||app.growth.orange-business.com^ +||app.gseagles.com^ +||app.hailstate.com^ +||app.hawaiiathletics.com^ +||app.hawkeyesports.com^ +||app.health.bjc.org^ +||app.herdzone.com^ +||app.hokiesports.com^ +||app.hornettickets.csus.edu^ +||app.humanaresponses.com^ +||app.huskers.com^ +||app.info.actuate.com^ +||app.info.americanpublicmediagroup.org^ +||app.info.autotask.com^ +||app.info.aviationweek.com^ +||app.info.avid.com^ +||app.info.compellent.com^ +||app.info.coopenae.fi.cr^ +||app.info.fidelity.com^ +||app.info.fleetmatics.com^ +||app.info.idgenterprise.com^ +||app.info.jdpa.com^ +||app.info.markit.com^ +||app.info.polycom.com^ +||app.info.quark.com^ +||app.info.questrade.com^ +||app.info.recall.com^ +||app.info.redhat.com^ +||app.info.standardandpoors.com^ +||app.info.trinet.com^ +||app.info.truvenhealth.biz^ +||app.info.ubmchannel.com^ +||app.info.washcaps.com^ +||app.info.washingtonwizards.com^ +||app.inform.equifax.com^ +||app.information.cognos.com^ +||app.innovate.molex.com^ +||app.insider.cavs.net^ +||app.insight.cision.com^ +||app.insight.dnb.com^ +||app.insight.thompson.com^ +||app.iowaeventscenter.com^ +||app.iowawild.com^ +||app.iuhoosiers.com^ +||app.jmusports.com^ +||app.knowhow.ceridian.com^ +||app.krannertcenter.com^ +||app.kstatesports.com^ +||app.ksuowls.com^ +||app.kuathletics.com^ +||app.lacr.motorolasolutions.com^ +||app.lamy-liaisons.fr^ +||app.leadership.kenblanchard.com^ +||app.learn.datafoundry.com^ +||app.learn.ioninteractive.com^ +||app.learn.mindjet.com^ +||app.learn.rasmussen.edu^ +||app.libertyfirstcreditunionarena.com^ +||app.libertyflames.com^ +||app.m1.adsolutions.yp.com^ +||app.machspeed.bluecoat.com^ +||app.mail.mfg.macquarie.com^ +||app.mail.skillsoft.com^ +||app.mailings.erepublic.com^ +||app.mailserver.parker.com^ +||app.marketing.pro.sony.eu^ +||app.marketing.richardsonrfpd.com^ +||app.marketing.wolterskluwerfs.com^ +||app.markkinointi.aller.fi^ +||app.massmutualcenter.com^ +||app.meangreensports.com^ +||app.merchant.bankofamerica.com^ +||app.messages.sonicwall.com^ +||app.mgoblue.com^ +||app.miamihurricanes.com^ +||app.miamiredhawks.com^ +||app.mk.westernunion.com^ +||app.mktg.genesys.com^ +||app.mktg.novell.com^ +||app.mogosme.com^ +||app.msuspartans.com^ +||app.network.ecitele.com^ +||app.nevadawolfpack.com^ +||app.news.zend.com^ +||app.newsletter.bisnow.com^ +||app.nhra.com^ +||app.nissan.my-nissan-usa.com^ +||app.noreply.cummins.com^ +||app.now.bomgar.com^ +||app.now.nowtv.com^ +||app.nuhuskies.com^ +||app.nusports.com^ +||app.odusports.com^ +||app.ohiobobcats.com^ +||app.okcciviccenter.com^ +||app.okstate.com^ +||app.olemisssports.com^ +||app.online.microfocus.com^ +||app.osubeavers.com^ +||app.owlsports.com^ +||app.owners.hilton.com^ +||app.paciolan.com^ +||app.pacslo.org^ +||app.partner.fisglobal.com^ +||app.payments-response.americanexpress.co.uk^ +||app.payments.53.com^ +||app.pbr.com^ +||app.pennathletics.com^ +||app.pittsburghpanthers.com^ +||app.playhousesquare.org^ +||app.poconoraceway.com^ +||app.portland5.com^ +||app.post.vertafore.com^ +||app.ppacri.org^ +||app.profile.purina.com^ +||app.prsoftware.vocus.com^ +||app.pultegroup.com^ +||app.purduesports.com^ +||app.qnasdaqomx.com^ +||app.ramblinwreck.com^ +||app.ratingsinfo.standardandpoors.com^ +||app.recruit.caterermail.com^ +||app.reply.perkinelmer.com^ +||app.resources.netiq.com^ +||app.respond.aonhewitt.com^ +||app.response.adobesystemsinc.com^ +||app.response.aiu.edu.au^ +||app.response.americancentury.com^ +||app.response.americanexpress.ca^ +||app.response.americanexpress.com^ +||app.response.att-mail.com^ +||app.response.blackbaud.com^ +||app.response.cetera.com^ +||app.response.firstdata.com^ +||app.response.hanover.com^ +||app.response.hslda.org^ +||app.response.integratelecom.com^ +||app.response.intergraph.com^ +||app.response.j2global.com^ +||app.response.jacksonhealthcare.com^ +||app.response.kroll.com^ +||app.response.krollontrack.co.uk^ +||app.response.locumtenens.com^ +||app.response.markem-imaje.com^ +||app.response.ncr.com^ +||app.response.neopost.com^ +||app.response.softserveinc.com^ +||app.response.stratfor.com^ +||app.response.thermofisher.com^ +||app.response.transplace.com^ +||app.response.volarisgroup.com^ +||app.results.chronicle.com^ +||app.richmondspiders.com^ +||app.riverbed.com^ +||app.rolltide.com^ +||app.sbas.sage.com^ +||app.scarletknights.com^ +||app.selectyourtickets.com^ +||app.seminoles.com^ +||app.siemens-energy.com^ +||app.siemensplmevents.com^ +||app.sjsuspartans.com^ +||app.sjuhawks.com^ +||app.smart.vivint.com^ +||app.smumustangs.com^ +||app.snssecure.mcafee.com^ +||app.soec.ca^ +||app.solution.roxar.com^ +||app.solutions.intermec.com^ +||app.soonersports.com^ +||app.stratfor.com^ +||app.success.coniferhealth.com^ +||app.suse.com^ +||app.tableausoftware.com^ +||app.tech.pentontech.com^ +||app.texasperformingarts.org^ +||app.texassports.com^ +||app.texastech.com^ +||app.thefishercenter.com^ +||app.ticketatlantic.com^ +||app.ticketleader.ca^ +||app.ticketstaronline.com^ +||app.tribeathletics.com^ +||app.tsongascenter.com^ +||app.tuckerciviccenter.com^ +||app.tulanegreenwave.com^ +||app.tulsahurricane.com^ +||app.tysoncenter.com^ +||app.uabsports.com^ +||app.ucdavisaggies.com^ +||app.ucirvinesports.com^ +||app.uclabruins.com^ +||app.uhcougars.com^ +||app.umassathletics.com^ +||app.umterps.com^ +||app.und.com^ +||app.unlvrebels.com^ +||app.update.lenovo.com^ +||app.update.vodafone.co.uk^ +||app.updates.digicert.com^ +||app.usajaguars.com^ +||app.usctrojans.com^ +||app.utrockets.com^ +||app.villanova.com^ +||app.virginiasports.com^ +||app.vucommodores.com^ +||app.whartoncenter.com^ +||app.wine.tweglobal.com^ +||app.wsucougars.com^ +||app.wvusports.com^ +||app.www-102.aig.com^ +||app.xlcenter.com^ +||app.your.csc.com^ +||app.your.level3.com^ +||app.zmail.zionsbank.com^ +||appcloud.appyreward.com^ +||appinfosoryz.carte-gr.total.fr^ +||applicatifs.ricoh.fr^ +||application.rasmussen.edu^ +||application.ricoh.ch^ +||application.ricoh.co.uk^ +||application.ricoh.co.za^ +||application.ricoh.de^ +||application.ricoh.ie^ +||application.taleo.com^ +||appointments.covenanthealth.org^ +||appointments.providence.org^ +||appointments.swedish.org^ +||apps.go.hobsons.com^ +||apps.imaginecommunications.com^ +||apps.info.convio.com^ +||apps.software.netsimplicity.com^ +||appsecurezomation.carte-gr.total.fr^ +||ar.quadient.com^ +||archiv.promatis.de^ +||archived.first.eloqua.extrahop.com^ +||archived.learn.eloqua.extrahop.com^ +||arincol.arin-innovation.com^ +||art.carte-gr.total.fr^ +||as.balluff.com^ +||asia.atradius.com^ +||asia.interface.com^ +||asistente.christus.mx^ +||ask.antalis-verpackungen.at^ +||ask.antalis.co.uk^ +||ask.antalis.com.tr^ +||ask.antalis.com^ +||ask.antalis.dk^ +||ask.antalis.fr^ +||ask.antalis.lv^ +||ask.antalis.no^ +||ask.antalis.pl^ +||ask.antalis.pt^ +||ask.antalis.ro^ +||ask.antalis.se^ +||assets.eafit.edu.co^ +||assets.estudioseconomicos.co^ +||assets.oupe.es^ +||assets.spectrumhealthlakeland.org^ +||assistancetrack.changehealthcare.com^ +||ast-en.adp.ca^ +||ast-fr.adp.ca^ +||at-go.experian.com^ +||atencion.banrural.com.gt^ +||athl.lsusports.net^ +||attend.5gnorthamericaevent.com^ +||attend.motorcycleshows.com^ +||attend.networkxevent.com^ +||au-go.experian.com^ +||au-partners.ingrammicro.com^ +||au.interface.com^ +||au.mywd.com^ +||aus.amexforbusiness.com.au^ +||auth.carte-gr.total.fr^ +||autoimmunity.thermo.com^ +||autoimmunity.thermofisher.com^ +||automate.opex.com^ +||automation.pemco.com^ +||automationtest.pemco.com^ +||automotive-business.vodafone.com^ +||automotive.balluff.com^ +||autovista-fi.autovistagroup.com^ +||autovista-fr.autovistagroup.com^ +||autovista-se.autovistagroup.com^ +||autovistaintelligence.autovistagroup.com^ +||avaya-engage.avaya.com^ +||avs.adpinfo.com^ +||axentis.arclogics.com^ +||axp.avaya.com^ +||b.bloomberglp.com^ +||b2binfo.canon-europe.com^ +||b2bmarketing.swisscom.ch^ +||b2bmarketingsb.swisscom.ch^ +||b2bmarketingsb.swisscom.com^ +||b2bmkt.lge.co.kr^ +||backoffice.verintsystemsinc.com^ +||badirectoryz.carte-gr.total.fr^ +||bancopostapremia.bancoposta.it^ +||banks.adpinfo.com^ +||bapages.carte-gr.total.fr^ +||barracuda.carte-gr.total.fr^ +||bbbb.blackboard.com^ +||bbk.pnc.com^ +||bbworld.blackboard.com^ +||be-go.experian.com^ +||belong.curtin.edu.au^ +||beneficios.davivienda.hn^ +||beneficios.davivienda.sv^ +||benefits.aon.com^ +||benelux2.secureforms.mcafee.com^ +||bestill.help.no^ +||better.herculesrx.com^ +||beuniquelyinsured.selective.com^ +||beyond.bluewolf.com^ +||bg-go.experian.com^ +||bienvenido.americanindustriesgroup.com^ +||bigdata.clarin.com^ +||biz.coface.com^ +||bizmkt.lguplus.com^ +||blackbook.coniferhealth.com^ +||bldr.mkt.samsung.com^ +||ble.ubm-licensing.com^ +||blog.myomnipod.com^ +||bnk.wolterskluwerfs.com^ +||boutique.ricoh.fr^ +||bpm.global360.com^ +||bps.ricoh.co.uk^ +||bps.ricoh.ie^ +||bpsemea.hilton.com^ +||br.adpinfo.com^ +||branch.verintsystemsinc.com^ +||branchout.pegs.com^ +||brand.adp.ca^ +||breakthrough.kronos.com^ +||btaconnect.americanexpress.at^ +||btaconnect.americanexpress.co.uk^ +||btaconnect.americanexpress.de^ +||btaconnect.americanexpress.es^ +||btaconnect.americanexpress.fr^ +||btaconnect.americanexpress.it^ +||btaenrolment.americanexpress.at^ +||btaenrolment.americanexpress.co.uk^ +||btaenrolment.americanexpress.it^ +||btaenrolment.americanexpress.nl^ +||bu.adpinfo.com^ +||business-cards.americanexpress.com^ +||business-pages.edfenergy.com^ +||business.keurig.com^ +||business.samsungusa.com^ +||business.vodafone.co.nz^ +||business.vodafone.com^ +||businessaffiliate.americanexpress.com^ +||businessengage.comcast.com^ +||businessmaking.progress.com^ +||businessmedia.americanexpress.com^ +||businessprocess.ricoh.de^ +||buzz.vocus.com^ +||by.mywd.com^ +||ca.connect.finning.com^ +||ca.creditacceptance.com^ +||ca.mattamyhomes.com^ +||calibration.ni.com^ +||camagess.carte-gr.total.fr^ +||campagne.enecozakelijk.nl^ +||campaign-fbsg.fujifilm.com^ +||campaign.amadeus.com^ +||campaign.bbmbonnier.se^ +||campaign.bpost.be.bpost.be^ +||campaign.daimlertruck.com^ +||campaign.fr.mazda.be^ +||campaign.glory-global.com^ +||campaign.hach.com.cn^ +||campaign.kpmg.co.il^ +||campaign.mazda.lu^ +||campaign.mazda.sk^ +||campaign.motorolasolutions.com^ +||campaign.nl.mazda.be^ +||campaign.outpayce.com^ +||campaign.phinmaproperties.com^ +||campaign.raymondcorp.com^ +||campaign.rockwellautomation.com^ +||campaign.ruukki.com^ +||campaign.shl.com^ +||campaign.ssab.com^ +||campaign.tandemdiabetes.com^ +||campaigninfo.motorolasolutions.com^ +||campaignresources.motorolasolutions.com^ +||campaigns-de.opentext.com^ +||campaigns-es.opentext.com^ +||campaigns-fr.opentext.com^ +||campaigns-it.opentext.com^ +||campaigns.amadeus.com^ +||campaigns.engage.cebglobal.com^ +||campaigns.glory-global.com^ +||campaigns.grenke.com^ +||campaigns.mellanox.com^ +||campaigns.messagemedia.com.au^ +||campaigns.netscout.com^ +||campaigns.opentext.com^ +||campaigns.ortec.com^ +||campaigns.panasonic.eu^ +||campaigns.rockwellautomation.com^ +||campaigns.sandhill.co.uk^ +||campaigns.technics.eu^ +||campaigns.verisk.com^ +||campaigns.xactware.com^ +||candidate.response.ingenovishealth.com^ +||carburanalyticsspace.carte-gr.total.fr^ +||carburez-a-l-emotion.carte-gr.total.fr^ +||cardexchanges.carte-gr.total.fr^ +||care.excellence.kaweahhealth.org^ +||care.mercycare.org^ +||care.oakstreethealth.com^ +||care.southeasthealth.org^ +||care.stlukes-stl.com^ +||care.universityhealth.com^ +||careers.coniferhealth.com^ +||carepay.gaf.com^ +||carreras.unisabana.edu.co^ +||cars.autopia.com.au^ +||cars.smartfleetaustralia.com.au^ +||cars.smartleasing.com.au^ +||carte.fleet-page.total.fr^ +||cascadion.thermo.com^ +||cascadion.thermofisher.com^ +||casl.couch-associates.com^ +||catracking.cubiq.com^ +||catracking.finning.com^ +||cbc.pnc.com^ +||ccaas.avaya.com^ +||ccmd.coveredca.com^ +||cd.chemistanddruggist.co.uk^ +||cdrive.compellent.com^ +||cen.acspubs.org^ +||cenbrandlab.acspubs.org^ +||cenjobs.acspubs.org^ +||central2.secureforms.mcafee.com^ +||challengeh.carte-gr.total.fr^ +||channel.cummins.com^ +||channel.informaengage.com^ +||channelevents.partnermcafee.com^ +||channelportal.netsuite.com^ +||channelusa.samsung.com^ +||chat.forddirectdealers.com^ +||check.frbservices.org^ +||chiefinvestmentofficer.strategic-i.com^ +||choose.adelaide.edu.au^ +||choose.nu.edu^ +||cihac.ubmmexico.com^ +||cimarketingforms.aig.com^ +||cimarketingforms.cimarketing.aig.com^ +||clarity-infographic.zebra.com^ +||click.rollouki.com^ +||click.vocus.com^ +||clicks.tableau.com^ +||client.trustaff.com^ +||clients.hermes-investment.com^ +||cloud.diagral.fr^ +||cloudhosting-business.vodafone.com^ +||cloverleaf.infor.com^ +||cm-in.americanexpress.com^ +||cm-jp.americanexpress.com^ +||cm-sg.americanexpress.com^ +||cm.informaengage.com^ +||cmc.americanexpress.co.uk^ +||cmr.customer.americanexpress.de^ +||cmrcustomer.americanexpress.co.uk^ +||cmrcustomer.americanexpress.es^ +||cn-go.experian.com^ +||cn.adpinfo.com^ +||cn.mywd.com^ +||cockpitdcbaima.carte-gr.total.fr^ +||collaborate.blackboard.com^ +||collections.equifax.com^ +||columbustech.tcsg.edu^ +||com.carte-gr.total.fr^ +||comm.toro.com^ +||commanslabdpp.carte-gr.total.fr^ +||commanslabdspace.carte-gr.total.fr^ +||commerce.edc.ca^ +||commercial.equifax.com^ +||commercial.inform.equifax.com^ +||comms.cigna.co.uk^ +||comms.cigna.es^ +||comms.cignaglobalhealth.com^ +||comms.cision.com^ +||comms.dfsco.com^ +||comms.groupmarketing.dimensiondata.com^ +||comms.hello.global.ntt^ +||comms.services.global.ntt^ +||comms.supplychain.nhs.uk^ +||communicate.cision.ca^ +||communicate.cision.co.uk^ +||communicate.prnewswire.co.uk^ +||communicate.prnewswire.com^ +||communicatelp.keysight.com^ +||communicatie.vub.be^ +||communication.adpinfo.com^ +||communication.futuresummits.com^ +||communication.hager.co.uk^ +||communication.imec.be^ +||communication.imechyperspectral.com^ +||communication.imeciclink.com^ +||communication.imecistart.com^ +||communication.imecitf.com^ +||communication.proximus.be^ +||communication.ricoh.at^ +||communication.ricoh.ch^ +||communication.ricoh.co.uk^ +||communication.ricoh.de^ +||communication.ricoh.it^ +||communication.ricoh.pt^ +||communications.adpinfo.com^ +||communications.aon.com^ +||communications.apilayer.com^ +||communications.cigna.com^ +||communications.embarcadero.com^ +||communications.fusioncharts.com^ +||communications.idera.com^ +||communications.lansa.com^ +||communications.parcours.fr^ +||communications.sencha.com^ +||communications.ultraedit.com^ +||communications.wpcarey.com^ +||community.fusesource.com^ +||compliance.coniferhealth.com^ +||computers.panasonic.eu^ +||comtelitalia.alcatel-lucent.com^ +||comunicacao.edpcomunicacao.com.br^ +||comunicacion.usj.es^ +||comunicaciones.davivienda.com.pa^ +||comunicaciones.daviviendacorredores.com^ +||comunicaciones.paginasamarillas.es^ +||comunicaciones.pymas.com.co^ +||comunicazioni.bancamediolanum.it^ +||conf.optum.com^ +||conference.all-energy.com.au^ +||conferences.cigna.com^ +||confirm.aon.com^ +||confirm.ptvgroup.com^ +||connect-qa.netapp.com^ +||connect.abm.netapp.com^ +||connect.acams.org^ +||connect.acspubs.org^ +||connect.arkadin.com^ +||connect.aucmed.edu^ +||connect.becker.com^ +||connect.blackboard.com^ +||connect.blog.netapp.com^ +||connect.build.com^ +||connect.cap.hcahealthcare.com^ +||connect.care.eehealth.org^ +||connect.care.hackensackmeridian.org^ +||connect.care.kansashealthsystem.com^ +||connect.care.lcmchealth.org^ +||connect.care.muschealth.org^ +||connect.care.sheppardpratt.org^ +||connect.care.wakemed.org^ +||connect.caringcrowd.org^ +||connect.carrier.com.ph^ +||connect.chapman.com^ +||connect.cloud.netapp.com^ +||connect.cognex.com^ +||connect.compellent.com^ +||connect.cont.hcahealthcare.com^ +||connect.content-hub.netapp.com^ +||connect.customers.netapp.com^ +||connect.delphi.international^ +||connect.dimensiondata.com^ +||connect.flowroute.com^ +||connect.fwd.hcahealthcare.com^ +||connect.gcd.hcahealthcare.com^ +||connect.geniecompany.com^ +||connect.grassicpas.com^ +||connect.handlesets.com^ +||connect.health.bjc.org^ +||connect.health.lexmed.com^ +||connect.health.mydocnews.com^ +||connect.healthcare.northbay.org^ +||connect.healthcare.rush.edu^ +||connect.info.halifaxhealthnews.org^ +||connect.insidelpl.com^ +||connect.intel.com^ +||connect.intercall.com^ +||connect.inxpo.com^ +||connect.ispo.com^ +||connect.labcorp.com^ +||connect.lgcns.com^ +||connect.link.boone.health^ +||connect.lionsclubs.org^ +||connect.mattamyhomes.com^ +||connect.medical.rossu.edu^ +||connect.medstarhealth.org^ +||connect.memorialcare.org^ +||connect.methodisthealthsystem.org^ +||connect.mhsystem.org^ +||connect.montagehealth.org^ +||connect.mycwt.com^ +||connect.ncd.hcahealthcare.com^ +||connect.netapp.co.il^ +||connect.netapp.co.kr^ +||connect.netapp.com.au^ +||connect.netapp.com.sg^ +||connect.netapp.com.tw^ +||connect.netapp.in^ +||connect.netapp.it^ +||connect.news.evergreenhealth.com^ +||connect.nfd.hcahealthcare.com^ +||connect.northoaks.org^ +||connect.palomarhealth.org^ +||connect.partner-connect.netapp.com^ +||connect.satl.hcahealthcare.com^ +||connect.schoolmessenger.com^ +||connect.senecacollege.ca^ +||connect.senecapolytechnic.ca^ +||connect.singlex.com^ +||connect.stihl.info^ +||connect.telstrawholesale.com^ +||connect.the-stockmarket.com^ +||connect.virginmediabusiness.co.uk^ +||connect.wfd.hcahealthcare.com^ +||connect.xo.com^ +||connect.zebra.com^ +||connect2.secureforms.mcafee.com^ +||connected.technologies.jci.com^ +||connected.verical.com^ +||connectfpc.zebra.com^ +||connection.arrow.com^ +||connection.verical.com^ +||connectlp.keysight.com^ +||connectportal.netapp.com^ +||connecttest.arubanetworks.com^ +||connectvet.rossu.edu^ +||connectwithus.cetera.com^ +||consulting.guidehouse.com^ +||consulting.icmi.com^ +||consulting.mcgladrey.com^ +||consumer.equifax.com^ +||consumer.inform.equifax.com^ +||contact-us.adp.ca^ +||contact.abc-companies.com^ +||contact.aon.com^ +||contact.coface.com^ +||contact.formasquare.com^ +||contact.iwgplc.com^ +||contact.kikusuiamerica.com^ +||contact.lesmills.com^ +||contact.nalgene.com^ +||contact.no18.com^ +||contact.regus.com^ +||contact.samsungsds.com^ +||contact.spacesworks.com^ +||contact.tsr-net.co.jp^ +||contactcenter.verintsystemsinc.com^ +||contactcentercala.verintsystemsinc.com^ +||contactecs.arrow.com^ +||contacto.gtc.com.gt^ +||contacto.lecleire.com.gt^ +||contactus.53.com^ +||content.accelalpha.com^ +||content.bazaarvoice.com^ +||content.blackboard.com^ +||content.box.net^ +||content.convio.com^ +||content.eaton.com^ +||content.ferguson.com^ +||content.juniper.net^ +||content.nxp.com^ +||content.ohcare.ohiohealth.com^ +||content.pollardwater.com^ +||content.powerdms.com^ +||content.prophet.com^ +||content.rackspace.co.uk^ +||content.tatatelebusiness.com^ +||content.verint.com^ +||content.wire.telstra.com^ +||contents.pwc.com^ +||controlexpenses.adp.ca^ +||convention.interfaceflor.com^ +||convision.davivienda.com^ +||cookie.amerigas.com^ +||cookie.cynch.com^ +||cookie.myamerigas.com^ +||cookiejar.atea.no^ +||cookies-sfs.siemens.com^ +||cookies.ec4u.com^ +||cookies.engage.russellinvestments.com^ +||cookies.grenke.ch^ +||cookies.grenke.com^ +||cookies.grenke.de^ +||cookies.siemens-advanta.com^ +||cookies.siemens-energy.com^ +||cookies.siemens-healthineers.com^ +||cookies.siemens.com^ +||cookies.wpcarey.com^ +||cookietracking.eatonpowersource.com^ +||coop.vmware.com^ +||corporate-klm.americanexpress.nl^ +||corporate.americanexpress.it^ +||corporate.mattamyhomes.com^ +||corporate.wpcarey.com^ +||corporatecard.americanexpress.nl^ +||corporatecards.americanexpress.com^ +||corporateforms.americanexpress.com^ +||corporatemembershiprewards.americanexpress.co.uk^ +||corporatemembershiprewards.americanexpress.es^ +||corporatemr.americanexpress.co.uk^ +||corporatemr.americanexpress.de^ +||corporatemr40k.americanexpress.co.uk^ +||corporatemrguide.americanexpress.co.uk^ +||corporatemrguide.americanexpress.de^ +||corporatepages.proximus.com^ +||corporateplatino.americanexpress.it^ +||cortellisconnections.thomsonreuters.com^ +||covenant.psjhealth.org^ +||cp.ir-central.irco.com^ +||create.encore-mx.com^ +||create.encoreglobal.com^ +||crm.ironmountain.com^ +||crm.landing.ni.com^ +||crm.leads360.com^ +||crm.velocify.com^ +||cs.coopeservidores.fi.cr^ +||cs.hot.net.il^ +||cs.nexttv.co.il^ +||ctc.wolterskluwer.com^ +||curious.cognyte.com^ +||custom.dowjones.com^ +||custom.info.shutterstock.com^ +||customer-engagement.verintsystemsinc.com^ +||customerexperience.verintsystemsinc.com^ +||customers-capitalbank-jo-877029.p06.elqsandbox.com^ +||customize.titanfactorydirect.com^ +||cx.quadient.com^ +||cyber-pages.att.com^ +||cyber-tracking.att.com^ +||cyber.boozallen.com^ +||cz-business.vodafone.com^ +||cz-cz.siemensplmevents.com^ +||cz-go.experian.com^ +||data.atea.no^ +||dbl.cadriamarketing.com^ +||dc.bluecoat.com^ +||dd.control4.com^ +||de-de.siemensplmevents.com^ +||de-go.experian.com^ +||de.contact.alphabet.com^ +||de.mywd.com^ +||de.verintsystemsinc.com^ +||defygravity.convio.com^ +||degree.insead.edu^ +||delete.atea.fi^ +||deleteme.intuit.com^ +||dell.compellent.com^ +||delphi.ni.com^ +||demandgen.ptc.com^ +||demo-mktg.vodafone.com^ +||dependable-s.hyster.com^ +||design.informabi.com^ +||design.nanawall.com^ +||details.pella.com^ +||dev-plan.intel.com^ +||dev.marketing.championhomes.com^ +||dev.marketing.skylinehomes.com^ +||devtracking.risk.lexisnexis.com^ +||dg.champion-compressors.com^ +||dg.compair.com^ +||dg.irco.com^ +||dg.ptl.irco.com^ +||dhdaa.duke.edu^ +||diagnostics.thermo.com^ +||dialer.leads360.com^ +||dialer.velocify.com^ +||dialogue.de.mazda.ch^ +||dialogue.fr.mazda.be^ +||dialogue.mazda.at^ +||dialogue.mazda.bg^ +||dialogue.mazda.co.uk^ +||dialogue.mazda.com.tr^ +||dialogue.mazda.cz^ +||dialogue.mazda.de^ +||dialogue.mazda.dk^ +||dialogue.mazda.es^ +||dialogue.mazda.eu^ +||dialogue.mazda.fr^ +||dialogue.mazda.gr^ +||dialogue.mazda.hr^ +||dialogue.mazda.hu^ +||dialogue.mazda.ie^ +||dialogue.mazda.it^ +||dialogue.mazda.nl^ +||dialogue.mazda.no^ +||dialogue.mazda.pl^ +||dialogue.mazda.pt^ +||dialogue.mazda.ro^ +||dialogue.mazda.rs^ +||dialogue.mazda.se^ +||dialogue.mazda.si^ +||dialogue.mazda.sk^ +||dialogue.nl.mazda.be^ +||diamages.carte-gr.total.fr^ +||digital-engineering.de^ +||digital-global.furniture-china.cn^ +||digital.adt-worldwide.com^ +||digital.adt.cl^ +||digital.adt.co.cr^ +||digital.adt.co.uk^ +||digital.adt.com.br^ +||digital.adt.com.es^ +||digital.adt.com.mx^ +||digital.adt.com.uy^ +||digital.aptaracorp.com^ +||digital.bebold.cx^ +||digital.cloud.travelport.com^ +||digital.dynatos.be^ +||digital.forddirectdealers.com^ +||digital.ironmountain.com^ +||digitalworkplace.ricoh.fr^ +||discover.10play.com.au^ +||discover.absciex.com.cn^ +||discover.absciex.com^ +||discover.aptly.de^ +||discover.averydennison.com^ +||discover.citeline.com^ +||discover.clarivate.com^ +||discover.conversantmedia.com^ +||discover.evaluate.com^ +||discover.fullsail.edu^ +||discover.harvardbusiness.org^ +||discover.immofinanz.com^ +||discover.jll.com^ +||discover.parker.com^ +||discover.pharmaignite.com^ +||discover.phenomenex.com^ +||discover.rewe-group.at^ +||discover.streamly.video^ +||discover.tenplay.com.au^ +||discover2.secureforms.mcafee.com^ +||distributors.balluff.com^ +||dk-go.experian.com^ +||dloeloqua.danskespil.dk^ +||dm.smfl.jp^ +||dmkt.solutions.cas.org^ +||dnews.alfaromeo.it^ +||dnews.fiat.it^ +||domorewithless.adp.ca^ +||downeconomywp.advancedtech.com^ +||download.createyournextcustomer.com^ +||download.dnv.com^ +||downloads.advancedtech.com^ +||downloads.coface.com^ +||downloads.mcgladrey.com^ +||downpayment.fernsby.com^ +||dozententag.ni.com^ +||drive.seagate.com^ +||drugtest.questdiagnostics.com^ +||dsdordering.kdrp.com^ +||dtestpromo.fiat.it^ +||dx.thermo.com^ +||dx.thermofisher.com^ +||e-img.hover.to^ +||e-learning.brainshark.com^ +||e.beckmancoulter.com^ +||e.darpro-solutions.com^ +||e.fdm.dk^ +||e.gettyimages.ae^ +||e.gettyimages.co.jp^ +||e.gettyimages.co.nz^ +||e.gettyimages.in^ +||e.gettyimages.nl^ +||e.gettyimages.pt^ +||e.nicklauschildrens.org^ +||e.pomonaelectronics.com^ +||e10.verticurl.com^ +||eagle.aon.com^ +||eastern2.secureforms.mcafee.com^ +||eatonaero.advancedtech.com^ +||eb.informabi.com^ +||ebooks.javer.com.mx^ +||economicadvantage.midamerican.com^ +||economies.adp.ca^ +||ecvmbusiness.mtn.co.za^ +||ed1.comcastbiz.com^ +||edge.ricoh-europe.com^ +||edpsmart.edpcomunicacao.com.br^ +||education.bendigotafe.edu.au^ +||education.leads360.com^ +||education.moodybible.org^ +||education.ricoh.ch^ +||education.ricoh.fr^ +||education.velocify.com^ +||educontinua.javeriana.edu.co^ +||efficiency.nl.visma.com^ +||efficiency.visma.com^ +||efficiency.visma.dk^ +||efficiency.visma.fi^ +||efficiency.visma.lv^ +||efficiency.visma.se^ +||efm.verintsystemsinc.com^ +||ehtel.endress.com^ +||electronics.edm.globalsources.com^ +||electronics.tradeshow.globalsources.com^ +||elia.thermofisher.com^ +||elink.serasaexperian.com.br^ +||eloq.fiducial.fr^ +||eloqua-tracking.kaiserpermanente.org^ +||eloqua-tracking.unity.com^ +||eloqua-tracking.unity3d.com^ +||eloqua-trackings.unity.com^ +||eloqua-trackings.unity3d.com^ +||eloqua-uat.motorolasolutions.com^ +||eloqua.53.com^ +||eloqua.acspubs.org^ +||eloqua.apexsql.com^ +||eloqua.binarytree.com^ +||eloqua.brakepartsinc.com^ +||eloqua.certiport.com^ +||eloqua.digitalpi.com^ +||eloqua.eafit.edu.co^ +||eloqua.eft.com^ +||eloqua.emdmillipore.com^ +||eloqua.erwin.com^ +||eloqua.ethicalcorp.com^ +||eloqua.exploreliberty.com^ +||eloqua.eyeforpharma.com^ +||eloqua.eyefortravel.com^ +||eloqua.gdlcouncil.org^ +||eloqua.impactconf.com^ +||eloqua.incite-group.com^ +||eloqua.infobip.com^ +||eloqua.insurancenexus.com^ +||eloqua.juilliard.edu^ +||eloqua.liberty.edu^ +||eloqua.mindhub.com^ +||eloqua.mindhubpro.com^ +||eloqua.moschampionship.com^ +||eloqua.newenergyupdate.com^ +||eloqua.nissan.com.tw^ +||eloqua.nuclearenergyinsider.com^ +||eloqua.oneidentity.com^ +||eloqua.onelogin.com^ +||eloqua.pearsonvue.ae^ +||eloqua.pearsonvue.co.jp^ +||eloqua.pearsonvue.co.uk^ +||eloqua.pearsonvue.com.cn^ +||eloqua.pearsonvue.com^ +||eloqua.petchem-update.com^ +||eloqua.pointcode.fr^ +||eloqua.psl.com.au^ +||eloqua.quadrotech-it.com^ +||eloqua.quest.com^ +||eloqua.radware.com^ +||eloqua.raybestos.com^ +||eloqua.roche.com^ +||eloqua.saiganeshk.com^ +||eloqua.sigmaaldrich.com^ +||eloqua.soprasteria.co.uk^ +||eloqua.syslog-ng.com^ +||eloqua.teknos.com^ +||eloqua.ufm.edu^ +||eloqua.undergraduateexam.in^ +||eloqua.upstreamintel.com^ +||eloquaimages.e.abb.com^ +||eloquamarketing.masterlock.com^ +||eloquatrack.kistler.com^ +||eloquatracking.internationalsos.com^ +||eloquatracking.iqvia.com^ +||eloquatracking.mindbody.io^ +||elq-tracking.genomes.atcc.org^ +||elq-trk.fullsail.edu^ +||elq.accuity.com^ +||elq.adaptris.com^ +||elq.analog.com^ +||elq.ansible.com^ +||elq.artsfestival.org^ +||elq.axeslive.com^ +||elq.blackrock.com^ +||elq.cirium.com^ +||elq.efront.com^ +||elq.eg.co.uk^ +||elq.egi.co.uk^ +||elq.enterprisersproject.com^ +||elq.feedbacknow.com^ +||elq.fisherinvestments.com^ +||elq.forrester.com^ +||elq.hamamatsu.com^ +||elq.icis.com^ +||elq.insource.co.jp^ +||elq.irobot.com^ +||elq.keysight.com.cn^ +||elq.keysight.com^ +||elq.lansa.com^ +||elq.macu.com^ +||elq.mh.mercuryhealthcare.com^ +||elq.modelgroup.com^ +||elq.mouser.ca^ +||elq.mouser.cn^ +||elq.mouser.com.tr^ +||elq.mouser.com^ +||elq.mouser.dk^ +||elq.mouser.fr^ +||elq.mouser.hk^ +||elq.mouser.it^ +||elq.mouser.jp^ +||elq.mouser.pe^ +||elq.mouser.tw^ +||elq.nextens.nl^ +||elq.openshift.com^ +||elq.opensource.com^ +||elq.proagrica.com^ +||elq.proconnect.intuit.com^ +||elq.redhat.com^ +||elq.scanningpens.ca^ +||elq.scanningpens.com.au^ +||elq.scanningpens.com^ +||elq.sonicwall.com^ +||elq.symantec.com^ +||elq.utas.edu.au^ +||elq.xperthr.co.uk^ +||elq.xperthr.nl^ +||elqact.gartner.com^ +||elqapp.clevelandbrowns.com^ +||elqapp.spectrum.com^ +||elqforms.qnx.com^ +||elqjourney.pwc.com^ +||elqtrack.broadridge.com^ +||elqtrack.kubotausa.com^ +||elqtrack.logarithmicsolutions.com^ +||elqtrack.poly.com^ +||elqtracking.capella.edu^ +||elqtracking.cengage.com^ +||elqtracking.destinationretirement.co.uk^ +||elqtracking.flexera.com^ +||elqtracking.hitachi-powergrids.com^ +||elqtracking.hitachienergy.com^ +||elqtracking.hub-group.co.uk^ +||elqtracking.hubfinancialsolutions.co.uk^ +||elqtracking.justadviser.com^ +||elqtracking.macegroup.com^ +||elqtracking.medidata.com^ +||elqtracking.mercer-retirement.co.uk^ +||elqtracking.pensionbuddy.co.uk^ +||elqtracking.revenera.com^ +||elqtracking.richardsonrfpd.com^ +||elqtracking.sandbox.wearejust.co.uk^ +||elqtracking.strayer.edu^ +||elqtracking.wearejust.co.uk^ +||elqtrck.motor.no^ +||elqtrck.nanawall.com^ +||elqtrk.cn.morningstar.com^ +||elqtrk.cummins.com^ +||elqtrk.hk.morningstar.com^ +||elqtrk.ibbotson.co.jp^ +||elqtrk.insight.tech^ +||elqtrk.intel.cn^ +||elqtrk.intel.co.il^ +||elqtrk.intel.co.jp^ +||elqtrk.intel.co.kr^ +||elqtrk.intel.co.uk^ +||elqtrk.intel.com.au^ +||elqtrk.intel.com.br^ +||elqtrk.intel.com.tr^ +||elqtrk.intel.com.tw^ +||elqtrk.intel.com^ +||elqtrk.intel.de^ +||elqtrk.intel.es^ +||elqtrk.intel.fr^ +||elqtrk.intel.in^ +||elqtrk.intel.it^ +||elqtrk.intel.la^ +||elqtrk.intel.pl^ +||elqtrk.intel.ru^ +||elqtrk.intel.sg^ +||elqtrk.intelrealsense.com^ +||elqtrk.morningstar.be^ +||elqtrk.morningstar.ch^ +||elqtrk.morningstar.com.au^ +||elqtrk.morningstar.com^ +||elqtrk.morningstar.de^ +||elqtrk.morningstar.hk^ +||elqtrk.morningstar.it^ +||elqtrk.morningstar.nl^ +||elqtrk.morningstar.no^ +||elqtrk.my.morningstar.com^ +||elqtrk.rsmus.com^ +||elqtrk.thailand.intel.com^ +||elqtrk.tw.morningstar.com^ +||elqtrkstg.intel.com^ +||elqview.kofax.com^ +||elqview.kofax.de^ +||elqview.kofax.jp^ +||elqview.uclahealth.org^ +||elqview2.uclahealth.org^ +||els298548211.medtronic.com^ +||em-email.thermofisher.com^ +||em.thermofisher.com^ +||email-am.jll-mena.com^ +||email-am.jll.ca^ +||email-am.jll.ch^ +||email-am.jll.cl^ +||email-am.jll.co.il^ +||email-am.jll.co.kr^ +||email-am.jll.co.th^ +||email-am.jll.co.za^ +||email-am.jll.com.ar^ +||email-am.jll.com.au^ +||email-am.jll.com.co^ +||email-am.jll.com.mo^ +||email-am.jll.com.mx^ +||email-am.jll.cz^ +||email-am.jll.de^ +||email-am.jll.es^ +||email-am.jll.fr^ +||email-am.jll.hu^ +||email-am.jll.it^ +||email-am.jll.pe^ +||email-am.joneslanglasalle.co.jp^ +||email-am.joneslanglasalle.com.vn^ +||email-am.stage.ca.jll.com^ +||email-am.us.jll.com^ +||email-ap.jll-mena.com^ +||email-ap.jll.ca^ +||email-ap.jll.co.id^ +||email-ap.jll.co.il^ +||email-ap.jll.co.in^ +||email-ap.jll.co.kr^ +||email-ap.jll.co.th^ +||email-ap.jll.co.uk^ +||email-ap.jll.com.ar^ +||email-ap.jll.com.au^ +||email-ap.jll.com.hk^ +||email-ap.jll.com.lk^ +||email-ap.jll.com.mx^ +||email-ap.jll.com.my^ +||email-ap.jll.com.ph^ +||email-ap.jll.com.sg^ +||email-ap.jll.com.tw^ +||email-ap.jll.de^ +||email-ap.jll.fi^ +||email-ap.jll.fr^ +||email-ap.jll.lu^ +||email-ap.jll.nz^ +||email-ap.jll.pe^ +||email-ap.joneslanglasalle.co.jp^ +||email-ap.joneslanglasalle.com.cn^ +||email-ap.joneslanglasalle.com.vn^ +||email-cm.jll-mena.com^ +||email-cm.jll.ca^ +||email-cm.jll.cl^ +||email-cm.jll.co.id^ +||email-cm.jll.co.il^ +||email-cm.jll.co.uk^ +||email-cm.jll.com.au^ +||email-cm.jll.com.hk^ +||email-cm.jll.com.mx^ +||email-cm.jll.com.sg^ +||email-cm.jll.fi^ +||email-cm.jll.hu^ +||email-cm.jll.nz^ +||email-cm.jll.pe^ +||email-cm.jllsweden.se^ +||email-cm.joneslanglasalle.co.jp^ +||email-cm.joneslanglasalle.com.vn^ +||email-em.jll-mena.com^ +||email-em.jll.be^ +||email-em.jll.ca^ +||email-em.jll.ch^ +||email-em.jll.cl^ +||email-em.jll.co.id^ +||email-em.jll.co.uk^ +||email-em.jll.co.za^ +||email-em.jll.com.co^ +||email-em.jll.com.hk^ +||email-em.jll.com.tr^ +||email-em.jll.de^ +||email-em.jll.fi^ +||email-em.jll.fr^ +||email-em.jll.ie^ +||email-em.jll.it^ +||email-em.jll.lu^ +||email-em.jll.nl^ +||email-em.jll.pe^ +||email-em.jll.pl^ +||email-em.jll.pt^ +||email-em.jll.ro^ +||email-em.jllsweden.se^ +||email-em.joneslanglasalle.co.jp^ +||email-em.joneslanglasalle.com.cn^ +||email-em.us.jll.com^ +||email-hk.americanexpress.com^ +||email-tw.americanexpress.com^ +||email.carte-gr.total.fr^ +||email.hockeytown.com^ +||email.info.exclusive-networks.com^ +||email.lottehotel.com^ +||email.mymandg.co.uk^ +||email.softwareag.com^ +||emailhoteldevelopment.ihg.com^ +||emea-go.experian.com^ +||emeadm.rockwellautomation.com^ +||emeanews.secureforms.partnermcafee.com^ +||en-gb.siemensplmevents.com^ +||en-sg.siemensplmevents.com^ +||en-us.coloplastcare.com^ +||encompassreport.elliemae.com^ +||endo.dentsply.com^ +||energy.eneco.be^ +||enews.alfaromeo.it^ +||engage-emea.jll.com^ +||engage.3m.co.cr^ +||engage.3m.co.id^ +||engage.3m.co.ke^ +||engage.3m.co.kr^ +||engage.3m.co.rs^ +||engage.3m.co.th^ +||engage.3m.co.uk^ +||engage.3m.co.za^ +||engage.3m.com.ar^ +||engage.3m.com.au^ +||engage.3m.com.bo^ +||engage.3m.com.br^ +||engage.3m.com.cn^ +||engage.3m.com.co^ +||engage.3m.com.do^ +||engage.3m.com.dz^ +||engage.3m.com.ec^ +||engage.3m.com.ee^ +||engage.3m.com.es^ +||engage.3m.com.gt^ +||engage.3m.com.hk^ +||engage.3m.com.hn^ +||engage.3m.com.hr^ +||engage.3m.com.jm^ +||engage.3m.com.kw^ +||engage.3m.com.kz^ +||engage.3m.com.lv^ +||engage.3m.com.mx^ +||engage.3m.com.my^ +||engage.3m.com.ni^ +||engage.3m.com.pa^ +||engage.3m.com.pe^ +||engage.3m.com.pk^ +||engage.3m.com.pr^ +||engage.3m.com.pt^ +||engage.3m.com.py^ +||engage.3m.com.qa^ +||engage.3m.com.ro^ +||engage.3m.com.sa^ +||engage.3m.com.sg^ +||engage.3m.com.sv^ +||engage.3m.com.tn^ +||engage.3m.com.tr^ +||engage.3m.com.tt^ +||engage.3m.com.tw^ +||engage.3m.com.ua^ +||engage.3m.com.uy^ +||engage.3m.com.vn^ +||engage.3mabrasive.co.kr^ +||engage.3mae.ae^ +||engage.3maustria.at^ +||engage.3mbelgie.be^ +||engage.3mbelgique.be^ +||engage.3mbulgaria.bg^ +||engage.3mcanada.ca^ +||engage.3mchile.cl^ +||engage.3mcompany.jp^ +||engage.3mdanmark.dk^ +||engage.3mdeutschland.de^ +||engage.3megypt.com.eg^ +||engage.3mfrance.fr^ +||engage.3mhellas.gr^ +||engage.3mindia.in^ +||engage.3mireland.ie^ +||engage.3misrael.co.il^ +||engage.3mitalia.it^ +||engage.3mlietuva.lt^ +||engage.3mmagyarorszag.hu^ +||engage.3mmaroc.ma^ +||engage.3mnederland.nl^ +||engage.3mnorge.no^ +||engage.3mnz.co.nz^ +||engage.3mphilippines.com.ph^ +||engage.3mpolska.pl^ +||engage.3mprivacyfilter.co.kr^ +||engage.3msafety.co.kr^ +||engage.3mschweiz.ch^ +||engage.3mslovensko.sk^ +||engage.3msuisse.ch^ +||engage.3msuomi.fi^ +||engage.3msverige.se^ +||engage.avalara.com^ +||engage.broadcom.com^ +||engage.build.com^ +||engage.dow.com^ +||engage.ferguson.com^ +||engage.hamiltoncaptel.com^ +||engage.informaconstructionmarkets.com^ +||engage.jacksonhewitt.com^ +||engage.jboss.com^ +||engage.jlclive.com^ +||engage.marketone.com^ +||engage.neogen.com^ +||engage.nuance.com^ +||engage.nuance.fr^ +||engage.poolspapatio.com^ +||engage.richardsonrfpd.com^ +||engage.shl.com^ +||engage.siriusdecisions.com^ +||engage.unisa.edu.au^ +||engage.uq.edu.au^ +||engage2demand.cisco.com^ +||engagemetrics.cisco.com^ +||engageru.3mrussia.ru^ +||engageru2.3mrussia.ru^ +||enquiry.marketingcube.com.au^ +||enterprise.dnb.ca^ +||enterprise2.secureforms.mcafee.com^ +||enterprises.proximus.be^ +||ep.regis.edu^ +||eqclicks.movember.com^ +||eqs.accountants.intuit.com^ +||eqs.intuit.com^ +||eqtrack.americashomeplace.com^ +||eroar.lionsclubs.org^ +||es-business.vodafone.com^ +||es-es.siemensplmevents.com^ +||es-go.experian.com^ +||es-mktg.vodafone.com^ +||es-sa.siemensplmevents.com^ +||es.adpinfo.com^ +||etc.lxhausys.com^ +||etk.locusrobotics.com^ +||etrack.ext.arubainstanton.com^ +||etrack.ext.arubanetworks.com^ +||etrack.ext.hpe.com^ +||ets.ni.com^ +||etscampaign.motorola.com^ +||eu.business.samsung.com^ +||eu.cignaglobalhealth.com^ +||eu.ironmountain.com^ +||eufunding.ukri.org^ +||eumeainfo.motorolasolutions.com^ +||eurotax-at.autovistagroup.com^ +||eurotax-be.autovistagroup.com^ +||eurotax-ch.autovistagroup.com^ +||eurotax-cz.autovistagroup.com^ +||eurotax-es.autovistagroup.com^ +||eurotax-hr.autovistagroup.com^ +||eurotax-hu.autovistagroup.com^ +||eurotax-nl.autovistagroup.com^ +||eurotax-pl.autovistagroup.com^ +||eurotax-pt.autovistagroup.com^ +||eurotax-ro.autovistagroup.com^ +||eurotax-si.autovistagroup.com^ +||eurotax-sk.autovistagroup.com^ +||eurotaxsrbija-si.autovistagroup.com^ +||evelynn.landing.ni.com^ +||evenement.ricoh.fr^ +||event.boozallen.com^ +||event.clubcorp.com^ +||event.dnv.com^ +||event.grassicpas.com^ +||event.jma.or.jp^ +||event.ortec.com^ +||event.raise3d.cn^ +||event.seatradecruiseevents.com^ +||event.seatradecruiseglobal.com^ +||event.thermofisher.com^ +||event.thermoscientific.cn^ +||event.thermoscientific.com^ +||event1.thermofisher.com^ +||event1.thermoscientific.com^ +||event3.thermofisher.com^ +||event3.thermoscientific.com^ +||eventos.abastur.com^ +||eventos.cihac.com^ +||eventos.mirecweek.com^ +||eventos.ubmmexico.com^ +||eventos.usj.es^ +||events.accuity.com^ +||events.avaya.com^ +||events.bendigotafe.edu.au^ +||events.blackboard.com^ +||events.careallies.com^ +||events.centex.com^ +||events.cigna.com^ +||events.coface.com^ +||events.elliemae.com^ +||events.engage.cebglobal.com^ +||events.executiveboard.com^ +||events.ferrari.com^ +||events.forddirectdealers.com^ +||events.glory-global.com^ +||events.gogoair.com^ +||events.golubcapital.com^ +||events.icmi.com^ +||events.interface.com^ +||events.kangan.edu.au^ +||events.marketingcube.com.au^ +||events.mbrl.ae^ +||events.mcgladrey.com^ +||events.mywd.com^ +||events.ndtco.com^ +||events.nuance.com^ +||events.oakstreethealth.com^ +||events.oddo-bhf.com^ +||events.pella.com^ +||events.rewe-group.at^ +||events.ricoh.ch^ +||events.ricoh.de^ +||events.ricoh.ie^ +||events.tafensw.edu.au^ +||events.verticurl.com^ +||exchange.carte-gr.total.fr^ +||execgroup.convio.com^ +||exhibit.coteriefashionevents.com^ +||exhibit.firex.co.uk^ +||exhibit.kbb.co.uk^ +||exhibit.magicfashionevents.com^ +||exhibit.myfashionevents.com^ +||exhibit.safety-health-expo.co.uk^ +||exhibit.ubm-events.com^ +||exhibition.edm.globalsources.com^ +||experience.aifsabroad.com^ +||experience.blackbaud.com^ +||experience.comcastbiz.com^ +||experience.jcu.edu.au^ +||experience.limelight.com^ +||experience.micromine.kz^ +||experience.phenomenex.com^ +||experience.rsm.com.au^ +||experience2013.elliemae.com^ +||experienceplatform.avaya.com^ +||experiencia.coopecaja.fi.cr^ +||expertise.logarithmicsolutions.com^ +||explore-dev.agilent.com^ +||explore-ft.agilent.com^ +||explore-uat.agilent.com^ +||explore.agilent.com^ +||explore.att.com^ +||explore.broncos.com.au^ +||explore.epsilon.com^ +||explore.firstnet.com^ +||explore.flexera.com^ +||explore.revenera.com^ +||explore.waldenu.edu^ +||ezgo.advancedtech.com^ +||facey.psjhealth.org^ +||factory.redbull.racing^ +||fan.info.heat.com^ +||fashion.edm.globalsources.com^ +||fashion.tradeshow.globalsources.com^ +||fasttrack.americanexpress.co.uk^ +||featured.bradyid.com^ +||fedexfield.redskins.com^ +||feedback.aon.com^ +||feedback.avigilon.com^ +||feedback.lifeguardarena.com^ +||feedback.nslsc-csnpe.ca^ +||ferias.usj.es^ +||files.info.posteitaliane.it^ +||findthetruth.allergyai.com^ +||fire.solutions.jci.com^ +||firstparty1.dentsplysirona.com^ +||firstpartycookie.gettyimages.com^ +||firstpartycookie.istockphoto.com^ +||flavors.firmenich.com^ +||food.informaengage.com^ +||food.pentonmarketingsvcs.com^ +||foodbrochure.advancedtech.com^ +||forex.americanexpress.com^ +||form.fusesource.com^ +||form.harvardbusiness.org^ +||form.innovative-design-lab.com^ +||form.vocalink.com^ +||formaciones.arin-innovation.com^ +||forms-emea.lenovo.com^ +||forms.anthology.com^ +||forms.b.oncourselearning.com^ +||forms.bankersalmanac.com^ +||forms.blackboard.com^ +||forms.bmc.com^ +||forms.bradyid.com^ +||forms.burriswindows.com^ +||forms.businessnews.telstra.com^ +||forms.campusmanagement.com^ +||forms.capitaliq.com^ +||forms.comcast-spectacor.com^ +||forms.cybersource.com^ +||forms.direxionfunds.com^ +||forms.egi.co.uk^ +||forms.embarcadero.com^ +||forms.enterprisenews.telstra.com^ +||forms.erepublic.com^ +||forms.executiveboard.com^ +||forms.fidelity.ca^ +||forms.fircosoft.com^ +||forms.fitchratings.com^ +||forms.flightglobal.com^ +||forms.icis.com^ +||forms.infor.com^ +||forms.irdeto.com^ +||forms.juniper.net^ +||forms.lenovo.com^ +||forms.mcgladrey.com^ +||forms.mdreducation.com^ +||forms.messe-muenchen.de^ +||forms.nexsan.com^ +||forms.nrs-inc.com^ +||forms.pella.com^ +||forms.pentonmarketingservices.com^ +||forms.personneltoday.com^ +||forms.poweritpro.com^ +||forms.progress.com^ +||forms.sharjahart.org^ +||forms.smarterbusiness.telstra.com^ +||forms.solarwinds.com^ +||forms.systeminetwork.com^ +||forms.telstraglobal.com^ +||forms.trendmicro.co.jp^ +||forms.vaisala.com^ +||forms.verisigninc.com^ +||forms.vistage.com^ +||forms.vmtechpro.com^ +||forms.web.roberthalf.com^ +||forms.xperthr.co.uk^ +||forms.xperthr.com^ +||forms.xtralis.com^ +||forms2.vistage.com^ +||fp.kalevavakuutus.fi^ +||fp.mandatum.fi^ +||fp.mandatumlife.fi^ +||fp.mandatumtrader.fi^ +||fpc.acpinternist.org^ +||fpc.acpjournals.org^ +||fpc.acponline.org^ +||fpc.annals.org^ +||fpc.arborcrowd.com^ +||fpc.attcenter.com^ +||fpc.cebglobal.com^ +||fpc.choosemylo.com^ +||fpc.ciel.com^ +||fpc.consumerportfolio.com^ +||fpc.gartner.com^ +||fpc.golubcapital.com^ +||fpc.immattersacp.org^ +||fpc.inxinternational.com^ +||fpc.laerdal.com^ +||fpc.pelican.com^ +||fpc.questoraclecommunity.org^ +||fpc.sage.com^ +||fpc.sg2.com^ +||fpc.singleplatform.com^ +||fpc.trimarkusa.com^ +||fpc.utexas.edu^ +||fpcdallasstars.nhl.com^ +||fpcsbulls.nba.com^ +||fpt.inxinternational.com^ +||fr-go.experian.com^ +||fr.adpinfo.com^ +||fr.contact.alphabet.com^ +||france.alphabet.com^ +||frc.redcross.fi^ +||fromhttptohttps.atea.fi^ +||frostnsullivan.advancedtech.com^ +||fusiontechnology.arrow.com^ +||future.coniferhealth.com^ +||future.jcu.edu.au^ +||future.uwindsor.ca^ +||fvc.alcatel-lucent.com^ +||fxipca.americanexpress.ca^ +||fxipreferral.americanexpress.com^ +||fxipwelcome.americanexpress.ca^ +||fxpayments.americanexpress.co.nz^ +||fxpayments.americanexpress.com.au^ +||fxreferral.americanexpress.com^ +||gateway.aimia.com^ +||gb.click.finning.com^ +||gba.kwm.com^ +||gbl.radware.com^ +||gbtracking.cubiq.com^ +||gbtracking.finning.com^ +||gc.titans.com.au^ +||gccmembershiprewards.americanexpress.de^ +||gccmembershiprewards.americanexpress.it^ +||gcn.tuv.com^ +||gdg.gardnerdenver.com^ +||gdmelqact.gartner.com^ +||gestiondocumentaire.ricoh.fr^ +||get.anthem.com^ +||get.diamanti.com^ +||get.docusign.com^ +||get.empireblue.com^ +||get.nl.ukg.be^ +||get.sage.com^ +||get.ukg.be^ +||get.ukg.ca^ +||get.ukg.co.uk^ +||get.ukg.com.au^ +||get.ukg.de^ +||get.ukg.fr^ +||get.ukg.in^ +||get.ukg.mx^ +||get.ukg.nl^ +||getconnected.infor.com^ +||getinfo.fullsail.edu^ +||ghp.adp.ca^ +||glass.autovistagroup.com^ +||glassguide-au.autovistagroup.com^ +||global-go.experian.com^ +||global-mktg.transunion.com^ +||global.cphi-china.cn^ +||global.fia-china.com^ +||global.successfactors.com^ +||global.zenprise.com^ +||globalbanking.wolterskluwer.com^ +||globaleloqua.americanexpress.com^ +||globalsolutions.risk.lexisnexis.com^ +||gn.informaengage.com^ +||go-communications.comed.com^ +||go-elqau.oracle.com^ +||go-marketing.comed.com^ +||go-response.thermofisher.com^ +||go-stage.oracle.com^ +||go.accredible.com^ +||go.air-electra.co.il^ +||go.ali-cle.org^ +||go.avalara.com^ +||go.avon.sk^ +||go.axione.com^ +||go.azets.dk^ +||go.azets.fi^ +||go.azets.no^ +||go.azets.se^ +||go.bandits.com^ +||go.billsmafia.com^ +||go.blackboard.com^ +||go.blackrock.com^ +||go.bouygues-construction.com^ +||go.brightspace.com^ +||go.canadalifecentre.ca^ +||go.cargotec.com^ +||go.carrefourclub.co.il^ +||go.century21.fr^ +||go.cf.labanquepostale.fr^ +||go.client.gazpasserelle.engie.fr^ +||go.climate.emerson.com^ +||go.comcastspectacor.com^ +||go.computacenter.com^ +||go.comres.emerson.com^ +||go.comres1.emerson.com^ +||go.contact.alphabet.com^ +||go.cornerstonebuildingbrands.com^ +||go.dallasstars.com^ +||go.deltek.com^ +||go.dunnhumby.com^ +||go.dxc.technology^ +||go.e.mailchimp.com^ +||go.earlywarning.com^ +||go.econnect.dellmed.utexas.edu^ +||go.edmontonoilers.com^ +||go.electra-consumer.co.il^ +||go.emeadatacenter.services.global.ntt^ +||go.emersonautomation.com^ +||go.engineeringim.com^ +||go.enterprise.spectrum.com^ +||go.event.eset.com^ +||go.exactonline.de^ +||go.exactonline.fr^ +||go.exactonline.nl^ +||go.eyefinity.com^ +||go.fairviewmicrowave.com^ +||go.fhlbny.com^ +||go.flukebiomedical.com^ +||go.fortifybuildingsolutions.com^ +||go.greenlee.emerson.com^ +||go.hager.com^ +||go.hager.ie^ +||go.hager.nl^ +||go.hager.pl^ +||go.hager.se^ +||go.healthgrades.com^ +||go.hello.navan.com^ +||go.heritagebuildings.com^ +||go.hitachienergy.com^ +||go.hocoma.com^ +||go.imaginecommunications.com^ +||go.info.verifi.com^ +||go.info.verticurl.com^ +||go.insinkerator.emerson.com^ +||go.int.vsp.com^ +||go.integraoptics.com^ +||go.intercall.com^ +||go.inxinternational.com^ +||go.itsehoitoapteekki.fi^ +||go.kareo.com^ +||go.klauke.emerson.com^ +||go.kurumsal.vodafone.com.tr^ +||go.l-com.com^ +||go.labcorp.com^ +||go.lasvegasaces.com^ +||go.laurelsprings.com^ +||go.mashery.com^ +||go.metallic.com^ +||go.mge.com^ +||go.milestek.com^ +||go.mitesp.com^ +||go.morningstar.com^ +||go.motivcx.com^ +||go.mwe.com^ +||go.my.elca.ch^ +||go.navepoint.com^ +||go.netwitness.com^ +||go.news.loyaltycompany.com^ +||go.oilkings.ca^ +||go.paze.com^ +||go.pearsonvue.com^ +||go.petrelocation.com^ +||go.plygem.com^ +||go.primeone.cloud^ +||go.protools.emerson.com^ +||go.psentertainment.com^ +||go.reach.utep.edu^ +||go.ridgid.emerson.com^ +||go.robertsonbuildings.com^ +||go.rochesterknighthawks.com^ +||go.rohrer.com^ +||go.sabres.com^ +||go.securitymsp.cisco.com^ +||go.servicenow.com^ +||go.sfcg.com^ +||go.sgs.com^ +||go.shutterstock.com^ +||go.sseairtricity.com^ +||go.steelbuilding.com^ +||go.syncsketch.com^ +||go.teknos.com^ +||go.teledynemarine.com^ +||go.testo.com^ +||go.transtector.com^ +||go.tuev.cn^ +||go.tuv.com^ +||go.ubmamg-media.com^ +||go.ukg.com^ +||go.ultimatesoftware.com^ +||go.visma.com^ +||go.vitality.com.ar^ +||go.vitalitybrasil.com^ +||go.vitecgroup.com^ +||go.vue.com^ +||go.wacom.com^ +||go.west.com^ +||go.www4.earlywarning.com^ +||go.zellepay.com^ +||go.zendesk.com^ +||go2.kofax.com^ +||go2.mathworks.com^ +||go5.global.toshiba^ +||gocertiport.pearsonvue.com^ +||gomerchant.groupon.com^ +||goto.firsttechfed.com^ +||goto.heartlandpaymentsystems.com^ +||government.informaengage.com^ +||governmentcloud.avaya.com^ +||gp.oddo-bhf.com^ +||gr-business.vodafone.com^ +||gr-go.experian.com^ +||grc2.secureforms.mcafee.com^ +||groundcare.dixiechopper.com^ +||groups.heatexperience.com^ +||grow.national.biz^ +||gsasolutionssecure.gsa.gov^ +||gslive.edm.globalsources.com^ +||gsmatch.edm.globalsources.com^ +||gsol.edm.globalsources.com^ +||gsols.edm.globalsources.com^ +||gsupplyair.carte-gr.total.fr^ +||guest.vistage.com^ +||happyholidays.coniferhealth.com^ +||harris.ni.com^ +||hasslefree.redwingshoes.com^ +||health.aonunited.com^ +||health.atlanticgeneral.org^ +||health.fishersci.com^ +||health.info.baptisthealth.com^ +||healthcare.fishersci.com^ +||healthcare.mcgladrey.com^ +||healthcare.oakstreethealth.com^ +||healthcare.thermofisher.com^ +||healthier.aahs.org^ +||healthier.luminishealth.org^ +||hello.bpost.be^ +||hello.bpost2.be^ +||hello.effervescents.com^ +||hello.grattezvotrecadeau.be^ +||hello.lesarcs-peiseyvallandry.com^ +||hello.ops.bpost.be^ +||hello.postuler.bpost.be^ +||hello.solliciteren.bpost.be^ +||hello.stbpost.be^ +||hello.trailblazers.com^ +||helpdesk.thinkhdi.com^ +||highered.franklincovey.com^ +||highlights-schadenmanager.schwacke.de^ +||highlights-schwackenet.schwacke.de^ +||hk-go.experian.com^ +||home.edm.globalsources.com^ +||hopeful.coh.org^ +||horizoneurope.ukri.org^ +||hospitality.redbull.racing^ +||hptechnology.arrow.com^ +||hr.adp.ca^ +||hsa.wageworks.info^ +||htc.oaken.com^ +||httr.redskins.com^ +||hu-business.vodafone.com^ +||hvac.solutions.jci.com^ +||i-ready.curriculumassociates.com^ +||i.moneytransfer.travelex.com^ +||ibmtechnology.arrow.com^ +||ideas.nanawall.com^ +||iduk.barcodesgroup.com^ +||ie-business.vodafone.com^ +||ie-go.experian.com^ +||ie-mktg.vodafone.com^ +||ieg.intel.com^ +||ifi-trk.informa.com^ +||iiceq.intuit.com^ +||image.go.aricent.com^ +||image.info.perkinelmer.com^ +||image.now.beyondtrust.info^ +||image.success.bluewolf.com^ +||image.thermoscientific.com^ +||imagenes.ubmmexico.com^ +||imagens.conteudo.algartelecom.com.br^ +||images.a.flukebiomedical.com^ +||images.access.imaginelearning.com^ +||images.aepinfo.com^ +||images.alliances.infor.com^ +||images.annuities.sfgmembers.com^ +||images.app.imaginecommunications.com^ +||images.arcb.com^ +||images.assets.aapa.org^ +||images.at.datawatch.com^ +||images.b2bindia.samsung.com^ +||images.b2bmkt.samsung.com^ +||images.bbs.barclaycard.co.uk^ +||images.bio.ozyme.fr^ +||images.biz.blackberry.com^ +||images.blackhat.com^ +||images.bncontacto.fi.cr^ +||images.bounceback.chiesiusa.com^ +||images.brand.j2.com^ +||images.business.fedex.com^ +||images.business.lenovo.com^ +||images.by.sensiolabs.com^ +||images.campaign.crmit.com^ +||images.campaign.reedexpo.at^ +||images.campaign.reedexpo.co.uk^ +||images.campaign.reedexpo.com^ +||images.campaign.reedexpo.de^ +||images.campaigns-qa.fidelity.com^ +||images.care.gundersenhealth.org^ +||images.care.ssmhealth.com^ +||images.care.tgh.org^ +||images.cargomarketing.email.aa.com^ +||images.chbusiness.samsung.com^ +||images.checkpoint.thomsonreuters.biz^ +||images.chef-lavan.tnuva.co.il^ +||images.cloud.cssus.com^ +||images.cloud.secure-24.com^ +||images.cloud.travelport.com^ +||images.cmbinsight.hsbc.com^ +||images.com.bouygues-es.com^ +||images.comm.pwc.com.br^ +||images.commercecloudevents.salesforce.com^ +||images.comms.cirium.com^ +||images.communication.carsales.com.au^ +||images.communication.maerskline.com^ +||images.communications.aldar.com^ +||images.communications.bt.com^ +||images.community.aidshealth.org^ +||images.compasslearning.biz^ +||images.comunicaciones.prosegur.es^ +||images.connect.ais.arrow.com^ +||images.connect.cebglobal.com^ +||images.connect.globalservices.arrow.com^ +||images.connect.hpe.com^ +||images.connect.mandiant.com^ +||images.connect.o2.co.uk^ +||images.connect.omron.eu^ +||images.connect.veritivcorp.com^ +||images.connect2.bt.com^ +||images.connect2.cebglobal.com^ +||images.connect2.globalservices.bt.com^ +||images.constellation.quintiles.com^ +||images.contact.cigna.com^ +||images.contact.princess.com^ +||images.contact.staubli.com^ +||images.contacto.unis.edu.gt^ +||images.content.aces-int.com^ +||images.content.dp.ae^ +||images.content.ser.de^ +||images.cornerstonebuildingbrands.com^ +||images.corp.berger-levrault.com^ +||images.crazynews.crazyshirts.com^ +||images.createyournextcustomer.com^ +||images.crowecomm.crowehorwath.com^ +||images.cs.consultdss.com^ +||images.cs.dsmihealth.com^ +||images.daikinchemicals.com^ +||images.deals.carpetone.com^ +||images.decisionhealth.com^ +||images.demand.awspls.com^ +||images.demand.brainshark.com^ +||images.demand.mcafee.com^ +||images.demand.naseba.com^ +||images.digital-markets.gartner.com^ +||images.directvbiz.att-mail.com^ +||images.discover.changehealthcare.com^ +||images.dm.itesm.mx^ +||images.donotreply.prudential.com^ +||images.drive.mercedes-benz.se^ +||images.dubaiholding.ae^ +||images.dvubootcamp.devry.edu^ +||images.e-insight.autovistagroup.com^ +||images.e-mail.deloittecomunicacao.com.br^ +||images.e.aquent.com^ +||images.e.bengals.com^ +||images.e.brother.com^ +||images.e.bulls.com^ +||images.e.chiefs.com^ +||images.e.congressionalfcu.org^ +||images.e.corenetglobal.org^ +||images.e.denverbroncos.com^ +||images.e.environicsanalytics.com^ +||images.e.gallup.com^ +||images.e.good2gotravelinsurance.com.au^ +||images.e.hillsbank.com^ +||images.e.ice.com^ +||images.e.istockphoto.com^ +||images.e.lexisnexis.com^ +||images.e.midmark.com^ +||images.e.mylanlabs.com^ +||images.e.pcm.com^ +||images.e.realtor.com^ +||images.e.royalmail.com^ +||images.e.seagate.com^ +||images.e.skandia.pl^ +||images.e.tcichemicals.com^ +||images.e.transunion.com^ +||images.e.tycois.com^ +||images.e.westuc.com^ +||images.e.xtelligentmedia.com^ +||images.e2.aig.com^ +||images.e3.aig.com^ +||images.edgenuity.com^ +||images.edm.carnivalaustralia.com^ +||images.edm.cunardinoz.com.au^ +||images.edm.princesscruises.com.au^ +||images.edm.propertyguru.com^ +||images.education.ifebp.org^ +||images.eloqua.fredhutch.org^ +||images.em.email-prudential.com^ +||images.em.groupon.com^ +||images.em.tdgarden.com^ +||images.email.air-worldwide.com^ +||images.email.fico.com^ +||images.email.hkaf.org^ +||images.emails.bokfinancial.com^ +||images.emails.ipcmedia.co.uk^ +||images.emarketing.hccs.edu^ +||images.emarketing.heat.com^ +||images.en25content.twilio.com^ +||images.energysolutions.evergy.com^ +||images.engage.brunswickgroup.com^ +||images.engage.cebglobal.com^ +||images.engage.elliemae.com^ +||images.engage.hamiltontel.com^ +||images.engage.hp.com^ +||images.engage.mettel.net^ +||images.engage.mims.com^ +||images.engage.nexperia.com^ +||images.engage.parexel.com^ +||images.engage.ubc.ca^ +||images.engageemea.jll.com^ +||images.enrollment.sunywcc.edu^ +||images.entreprise.com-bpifrance.fr^ +||images.eq.tm.intuit.com^ +||images.excellence.americanregistry.com^ +||images.experience.eneco.be^ +||images.explore.behr.com^ +||images.explore.editionhotels.com^ +||images.fans.mlse.com^ +||images.fanservices.jaguars.com^ +||images.financial-risk-solutions.thomsonreuters.info^ +||images.flippengroup.com^ +||images.fmpracticemanagement.lexisnexis.com^ +||images.frbusiness.samsung.com^ +||images.gc.georgiancollege.ca^ +||images.gcom.cigna.com^ +||images.get.kareo.com^ +||images.global.thomsonreuters.com^ +||images.globalempcomm.visa.com^ +||images.globalscm.eaton.com^ +||images.go.aifs.com^ +||images.go.alightsolutions.com^ +||images.go.anixter.com^ +||images.go.attcenter.com^ +||images.go.bge.com^ +||images.go.bluejacketslink.com^ +||images.go.braintreepayments.com^ +||images.go.broadridge1.com^ +||images.go.bryantstratton.edu^ +||images.go.citimortgage.com^ +||images.go.consumer.vsp.com^ +||images.go.cummins.com^ +||images.go.dentsplysirona.com^ +||images.go.diverseeducation.com^ +||images.go.elementfleet.com^ +||images.go.fastweb.it^ +||images.go.firsttechfed.com^ +||images.go.hardware.group^ +||images.go.hulft.com^ +||images.go.ifund.com.hk^ +||images.go.impinj.com^ +||images.go.insidelpl.com^ +||images.go.inxintl.com^ +||images.go.jll.com^ +||images.go.kpmgisraelmail.co.il^ +||images.go.mathworks.com^ +||images.go.metagenics.com^ +||images.go.mongodb.com^ +||images.go.na.sage.com^ +||images.go.optotechnik.zeiss.com^ +||images.go.pelican.com^ +||images.go.pioneer.com^ +||images.go.siriusdecisions.com^ +||images.go.staubli.com^ +||images.go.tennisfame.com^ +||images.go.thermofisher.com^ +||images.go.thompson.com^ +||images.go.trimarkusa.com^ +||images.go.vertivco.com^ +||images.grootzakelijk.kpn.com^ +||images.groupcommunications.royalmail.com^ +||images.guidance.choosemylo.com^ +||images.h.analog.com^ +||images.health.stlukes-stl.com^ +||images.healthlink.rsfh.com^ +||images.hq.scorecardrewards.com^ +||images.i.mesosphere.com^ +||images.identity.okta.com^ +||images.igdg.gardnerdenver.com^ +||images.ihs.com^ +||images.images.compagniedesalpes.fr^ +||images.ime.quintiles.com^ +||images.in.my1961.com^ +||images.info.acelatinamerica.com^ +||images.info.alibabacloud.com^ +||images.info.amexgbt.com^ +||images.info.aviationweek.com^ +||images.info.celum.com^ +||images.info.clubcorp.com^ +||images.info.coleparmer.com^ +||images.info.coopenae.fi.cr^ +||images.info.coopeservidores.fi.cr^ +||images.info.dfsco.com^ +||images.info.fibia.dk^ +||images.info.fticonsulting.com^ +||images.info.grenke.com^ +||images.info.grupovaughan.com^ +||images.info.informex.com^ +||images.info.innovateuk.org^ +||images.info.intrawest.com^ +||images.info.kpmgrealinsights.com^ +||images.info.la-z-boy.com^ +||images.info.legalsolutions.thomsonreuters.co.uk^ +||images.info.mercuryinsurance.com^ +||images.info.mercycare.org^ +||images.info.microstrategy.com^ +||images.info.monumentalsports.com^ +||images.info.newhope.com^ +||images.info.patheon.com^ +||images.info.pentontech.com^ +||images.info.posteitaliane.it^ +||images.info.proov.io^ +||images.info.rcgt.com^ +||images.info.resursbank.se^ +||images.info.rodekors.no^ +||images.info.seatradecruiseglobal.com^ +||images.info.shinoken.com^ +||images.info.siemensplmevents.com^ +||images.info.solidab.se^ +||images.info.telogis.com^ +||images.info.totalfleet.fr^ +||images.info.tupperware.at^ +||images.info.tupperware.be^ +||images.info.tupperware.de^ +||images.info.tupperware.pt^ +||images.info.tycosimplexgrinnell.com^ +||images.info.veritas.com^ +||images.info.visma.com^ +||images.info.wearejust.co.uk^ +||images.info.yourmobilitypartner.com^ +||images.info.yoursolutionspartner.com^ +||images.info.yousee.dk^ +||images.infofreddiemac.com^ +||images.informador.davivienda.com^ +||images.information.thmarch.co.uk^ +||images.inport.princess.com^ +||images.insight.extrahop.com^ +||images.insight.intrado.com^ +||images.insurance.leavitt.com^ +||images.integrity.synopsys.com^ +||images.interact.jll.com^ +||images.internalcomms.ntt.com^ +||images.it.business.samsung.com^ +||images.ita.ice.it^ +||images.join.masaisrael.org^ +||images.kampanjat.yle.fi^ +||images.klubb.bonnier.se^ +||images.lauthorities.com^ +||images.learn.arborcrowd.com^ +||images.learn.blr.com^ +||images.learn.cmdgroup.com^ +||images.learn.deloitte.com^ +||images.learn.drivemedical.com^ +||images.learn.follett.com^ +||images.learn.hitachiconsulting.com^ +||images.learn.hmhco.com^ +||images.learn.internationalsosfoundation.org^ +||images.learn.pharmacyclics.com^ +||images.learn.queenslibrary.org^ +||images.learn.shredit.com^ +||images.learn.unisourceworldwide.com^ +||images.link.penton3.com^ +||images.link.pentonagriculture.com^ +||images.link.pentonauto.com^ +||images.link.pentonaviation.com^ +||images.link.pentoncem.com^ +||images.link.pentonfinancialservices.com^ +||images.link.pentonfoodnews.com^ +||images.link.pentonlsm.com^ +||images.link.pentonnews.com^ +||images.livecreative.creativecircle.com^ +||images.logisticsnews.dbschenker.com^ +||images.loyalty.lindtusa.com^ +||images.lubricants.petro-canada.com^ +||images.luv.winsupplyinc.com^ +||images.m.onepeloton.com^ +||images.ma.kikusuiamerica.com^ +||images.mail-fellowesbrands.com^ +||images.mail.coloplast.com^ +||images.mail.dolce-gusto.com^ +||images.mail.tena.de^ +||images.mail01.arealink.co.jp^ +||images.mail01.learn.internationalsos.com^ +||images.mailaway.abritel.fr^ +||images.mailaway.fewo-direkt.de^ +||images.mailaway.homeaway.com^ +||images.mailaway.vrbo.com^ +||images.mailinfo.clarivate.com^ +||images.mailing.morningstar.com^ +||images.marketing-de.sage.com^ +||images.marketing.box.com^ +||images.marketing.bpp.com^ +||images.marketing.businessdirect.bt.com^ +||images.marketing.centerpointenergy.com^ +||images.marketing.deltaww.com^ +||images.marketing.demandfrontier.com^ +||images.marketing.emaarinfo.com^ +||images.marketing.habtoormotors.com^ +||images.marketing.henryscheinpracticesolutions.com^ +||images.marketing.invacare.com^ +||images.marketing.irobot.com^ +||images.marketing.kaec.net^ +||images.marketing.kaweahhealth.org^ +||images.marketing.ncc.se^ +||images.marketing.netapp.com^ +||images.marketing.richardsonrfpd.com^ +||images.marketing.selligent.com^ +||images.marketing.statistica.io^ +||images.marketing.strategic-i.com^ +||images.marketing.swhyhk.com^ +||images.marketing.zeusinc.com^ +||images.matservice.fcagroup.com^ +||images.max.max-finance.co.il^ +||images.mdtinternal.com^ +||images.medlem.naf.no^ +||images.medtronicdiabetes.com^ +||images.messages.seagate.com^ +||images.mkt.acindar.com.ar^ +||images.mkt.movida.com.br^ +||images.mkt.nectarconsulting.com.br^ +||images.mkt.zoominfo.com^ +||images.mkt.zte.com.cn^ +||images.mktg.dynabook.com^ +||images.mktgassets.symantec.com^ +||images.mm.eulerhermes.com^ +||images.moparservice.mopar.eu^ +||images.moresand.co.uk^ +||images.my1961.com^ +||images.myhealthyfinances.com^ +||images.myhome.modernize.com^ +||images.na.agcocorp.com^ +||images.na.sage.com^ +||images.nasdaqtech.nasdaq.com^ +||images.nationalproduction.wgbh.org^ +||images.news.auchan.lu^ +||images.news.extrahop.com^ +||images.news.lavoro.gov.it^ +||images.news.meraas.com^ +||images.news.panasonic.asia^ +||images.news.psjhealth.org^ +||images.news.thunderinsider.com^ +||images.news.wiley.com^ +||images.newsletter.hach.com.cn^ +||images.newsletter.larksuite.com^ +||images.newsletter.rewe-group.at^ +||images.notice.wageworks.com^ +||images.noticias.clarin.com^ +||images.notifications.aigdirect.com^ +||images.novedades.fibercorp.com.ar^ +||images.nwinsurance.pemco.com^ +||images.offers.princesscruises.co.uk^ +||images.on.karnovgroup.com^ +||images.online.bankofjordan.com.jo^ +||images.online.chancellors.co.uk^ +||images.online.mt.com^ +||images.ops.mailbpost.be^ +||images.oracle.netsuite.com^ +||images.outreach.pewtrusts.org^ +||images.p.smflc.jp^ +||images.pages.brightedge.com^ +||images.partner.fisglobal.com^ +||images.partnersupport.samsung.com^ +||images.performance.volvotrucks.com^ +||images.perspectives.jll.com^ +||images.portal.keppelelectric.com^ +||images.pr.thomsonreuters.com^ +||images.premier.email.shutterstock.com^ +||images.premiumdr.jp^ +||images.pride.kenya-airways.com^ +||images.pro.compagniedesalpes.fr^ +||images.programme.mavieclaire.com^ +||images.promo.mopar.eu^ +||images.protect-us.eset.com^ +||images.publicidad.cajalosandes.cl^ +||images.publishing.wiley.com^ +||images.purl.mercedes-benz.com^ +||images.query.adelaide.edu.au^ +||images.read.aspiresys.com^ +||images.register.deloittece.com^ +||images.register.lighthouse-media.com^ +||images.reldirect.lenovo.com^ +||images.respond.macktrucks.com^ +||images.respond.overheaddoor.com^ +||images.respons.aftenposten.no^ +||images.respons.schibsted.no^ +||images.response.aberdeenstandard.com^ +||images.response.amaliearena.com^ +||images.response.arcb.com^ +||images.response.architizer.com^ +||images.response.athenahealth.com^ +||images.response.bmw.co.nz^ +||images.response.bremer.com^ +||images.response.buydomains.com^ +||images.response.canesmail.com^ +||images.response.capex.com.ph^ +||images.response.cbre.com.au^ +||images.response.cisco.com^ +||images.response.demandbase.com^ +||images.response.denovo-us.com^ +||images.response.firmenich.com^ +||images.response.gcommerce.co.il^ +||images.response.handt.co.uk^ +||images.response.incontact.com^ +||images.response.lexmark.com^ +||images.response.mini.com.au^ +||images.response.motivatedigital.com^ +||images.response.nbnco.com.au^ +||images.response.orhp.com^ +||images.response.osv.com^ +||images.response.ricoh-europe.com^ +||images.response.softchoice.com^ +||images.response.vodafone.co.nz^ +||images.response.wexinc.com^ +||images.retail.ausbil.com.au^ +||images.rjf.raymondjames.com^ +||images.rsvp.capitalgrouppcs.com^ +||images.rx.reedexpo.ae^ +||images.sbs.americanexpress.com^ +||images.seemore.zebra.com^ +||images.service.boonedam.co.uk^ +||images.service.freo.nl^ +||images.service.ubmsinoexpo.com^ +||images.sfgmembers.com^ +||images.share.iheartmedia.com^ +||images.siteconnect.quintiles.com^ +||images.smartpay.changehealthcare.com^ +||images.smbdirect.lenovo.com^ +||images.solutions.createyournextcustomer.com^ +||images.solutions.dexmedia.com^ +||images.solutions.halliburton.com^ +||images.solutions.kellyservices.com^ +||images.srs.sfgmembers.com^ +||images.ssbusiness.samsung.com^ +||images.stanleyhealthcare.sbdinc.com^ +||images.studentlending.ca^ +||images.tableau.com^ +||images.tableausoftware.com^ +||images.tr-mail.bsh-group.com^ +||images.ubmamgevents.com^ +||images.uhealthsystem.miami.edu^ +||images.ultipro.ultimatesoftware.com^ +||images.uni.une.edu.au^ +||images.universidad.javeriana.edu.co^ +||images.update.lennar.com^ +||images.updates.hbo.com^ +||images.updates.hbonow.com^ +||images.v.cyberintel.verint.com^ +||images.verizonconnect.com^ +||images.voyage.apl.com^ +||images.warranty.2-10.com^ +||images.web.pirelli.com^ +||images.web.roberthalf.com^ +||images.workforce.equifax.com^ +||images2.verizonconnect.com^ +||images3.verizonconnect.com^ +||imagine.ricoh.nl^ +||imap1.carte-gr.total.fr^ +||imap2.carte-gr.total.fr^ +||imeetcentral.pgi.com^ +||img.aonunited.com^ +||img.e.sigsauer.com^ +||img.exb.emaildwtc.com^ +||img.go.coface.com^ +||img.hrm.groups.be^ +||img.learn.abreon.com^ +||img.link.cabinetry.com^ +||img.n.nasdaq.com^ +||img.newsletter.mazda.co.jp^ +||img.response.digicert.com^ +||img.website-security.symantec.com^ +||imgict.dwtcmarketing.com^ +||imginfo.insource.co.jp^ +||imgmail.mediasetpremium.it^ +||immunocap.thermofisher.com^ +||impact.carmeuse.com^ +||impact.go.economist.com^ +||in-business.vodafone.com^ +||in-go.experian.com^ +||in-mktg.vodafone.com^ +||indoeasia.edm.globalsources.com^ +||info.aacargo.com^ +||info.aag.com^ +||info.abbotsfordcentre.ca^ +||info.academynet.com^ +||info.adp.com^ +||info.aldcarmarket.com^ +||info.americanadvisorsgroup.com^ +||info.americas.mizuhogroup.com^ +||info.amperecomputing.com^ +||info.arclogics.com^ +||info.arp.com^ +||info.asce.org^ +||info.assets.reuters.com^ +||info.attcenter.com^ +||info.authorize.net^ +||info.avalara.com^ +||info.avigilon.com^ +||info.avtecinc.com^ +||info.banrural.com.gt^ +||info.bbvaautorenting.es^ +||info.bendigokangan.edu.au^ +||info.bendigotafe.edu.au^ +||info.bookkeepingconnect.pwc.com^ +||info.boozallen.com^ +||info.bouygues-es.com^ +||info.box.net^ +||info.cargoexpreso.com^ +||info.cellmedicine.com^ +||info.cengage.com^ +||info.checkin.pwc.com^ +||info.christus.mx^ +||info.clarivate.com^ +||info.clarivate.jp^ +||info.clevelandbrowns.com^ +||info.climatepledgearena.com^ +||info.commercial.keurig.com^ +||info.compasslearning.com^ +||info.compucom.com^ +||info.cybersource.com^ +||info.dailyfx.com^ +||info.darnelgroup.com^ +||info.deutscher-ausbildungsleiterkongress.de^ +||info.dfinsolutions.com^ +||info.dowjones.com^ +||info.e.royalmail.com^ +||info.edb.gov.sg^ +||info.eedinc.com^ +||info.elliemae.com^ +||info.engage.3m.com^ +||info.entega.de^ +||info.extrahop.com^ +||info.fdbhealth.com^ +||info.fieldandmain.com^ +||info.floridagators.com^ +||info.fortrea.com^ +||info.frbcommunications.org^ +||info.frbservices.org^ +||info.fscsecurities.com^ +||info.fxcm-chinese.com^ +||info.global-demand02.nec.com^ +||info.go.lorainccc.edu^ +||info.gtc.net.gt^ +||info.harte-hanks.com^ +||info.hila-leumit.co.il^ +||info.hmisrael.co.il^ +||info.igloosoftware.com^ +||info.insideview.com^ +||info.interface.com^ +||info.iowaeventscenter.com^ +||info.johnsoncontrols.com^ +||info.kace.com^ +||info.kalevavakuutus.fi^ +||info.kangan.edu.au^ +||info.kistler.com^ +||info.kita-aktuell.de^ +||info.kubotausa.com^ +||info.laley.es^ +||info.lamy-liaisons.fr^ +||info.landcentral.com^ +||info.lansa.com^ +||info.legal-solutions.thomsonreuters.co.uk^ +||info.lexisnexis.co.in^ +||info.lexisnexis.com.hk^ +||info.lexisnexis.com.my^ +||info.lexisnexis.com.sg^ +||info.liacourascenter.com^ +||info.lloydslistintelligence.com^ +||info.mackayshields.com^ +||info.mandatum.fi^ +||info.mandatumlife.fi^ +||info.marketingcube.com.au^ +||info.markmonitor.com^ +||info.mdsol.com^ +||info.metronet.com^ +||info.metronetbusiness.com^ +||info.metronetinc.com^ +||info.mkt.global.dnp.co.jp^ +||info.multiburo.com^ +||info.natera.com^ +||info.neg.co.jp^ +||info.netgear.be^ +||info.netgear.co.uk^ +||info.netgear.de^ +||info.nhlseattle.com^ +||info.o2business.de^ +||info.ohlogistics.com^ +||info.pbs.org^ +||info.pella.com^ +||info.philadelphiaunion.com^ +||info.phinmaproperties.com^ +||info.proedge.pwc.com^ +||info.protiviti.co.kr^ +||info.questoraclecommunity.org^ +||info.quova.com^ +||info.refinitiv.com^ +||info.restek.com^ +||info.reutersagency.com^ +||info.revvity.com^ +||info.rewe-group.at^ +||info.riskproducts.pwc.com^ +||info.sagepointfinancial.com^ +||info.sanantoniofc.com^ +||info.saverglass.com^ +||info.scene7.com^ +||info.scorecardrewards.com^ +||info.sec.rakuten.com.hk^ +||info.sg2.com^ +||info.shavve.co.il^ +||info.spurs.com^ +||info.sunsentinelmediagroup.com^ +||info.thecolonialcenter.com^ +||info.thermo.com^ +||info.thermofisher.com^ +||info.thermoscientific.com^ +||info.thunderhead.com^ +||info.transcontinental-printing.com^ +||info.treetopproducts.com^ +||info.ubmamevents.com^ +||info.uconnhuskies.com^ +||info.unis.edu.gt^ +||info.vaadsheli.co.il^ +||info.venyu.com^ +||info.verint.com^ +||info.versicherungspraxis24.de^ +||info.verwaltungspraxis24.de^ +||info.viant.com^ +||info.volvotrucks.us^ +||info.wkf.fr^ +||info.wolterskluwer.de^ +||info.wolterskluwer.nl^ +||info.woodburyfinancial.com^ +||info.workforce.pwc.com^ +||info.workforceorchestrator.pwc.com^ +||info1.thermofisher.com^ +||info1.thermoscientific.com^ +||info10.4thoughtmarketing.com^ +||info2.thermoscientific.com^ +||info3.thermofisher.com^ +||infopromerica.promerica.fi.cr^ +||inform.janssenpro.eu^ +||information.clubcorp.com^ +||information.cma-cgm.com^ +||information.frbcommunications.org^ +||information.lgcns.com^ +||information.skillsoft.com^ +||ingredients.firmenich.com^ +||innovation.m5.net^ +||innovations.luxaflex.com.au^ +||inqueritos-qa.cp.pt^ +||inqueritos.cp.pt^ +||ins.leavitt.com^ +||ins.wolterskluwerfs.com^ +||insight.aon.com^ +||insight.autovistagroup.com^ +||insight.business.hsbc.com^ +||insight.eurofinsexpertservices.fi^ +||insight.gbm.hsbc.com^ +||insight.leads360.com^ +||insight.optum.com^ +||insight.velocify.com^ +||insights.53.com^ +||insights.aiu.edu.au^ +||insights.aiu.sg^ +||insights.atradiuscollections.com^ +||insights.att.com^ +||insights.golubcapital.com^ +||insights.harvardbusiness.org^ +||insights.labcorp.com^ +||insights.networks.global.fujitsu.com^ +||insights.nexansdatacenter.com^ +||insights.prophet.com^ +||insightseries.redbull.racing^ +||inspire.changehealthcare.com^ +||inspire.ubmfashion.com^ +||insurance.alliant.com^ +||insurance.leads360.com^ +||insurance.velocify.com^ +||intel-trk.informa.com^ +||intel-trk.lloydslistintelligence.com^ +||intelpartneralliance.intel.com^ +||interact.crmtechnologies.com^ +||interest.truvenhealth.com^ +||internal.hcltech.com^ +||internalcomms.dbschenker.com^ +||international.edc.ca^ +||internationalpayments.americanexpress.com^ +||investments.aberdeenstandard.com^ +||investments.virtus.com^ +||investors.firmenich.com^ +||iot-business.vodafone.com^ +||iot.informaengage.com^ +||ipv3.landing.ni.com^ +||iready.curriculumassociates.com^ +||irmsolutions.choicepoint.com^ +||isac.thermofisher.com^ +||isbworld.aon.com^ +||it-business.vodafone.com^ +||it-go.experian.com^ +||itservices.ricoh.ch^ +||itservices.ricoh.co.uk^ +||itservices.ricoh.co.za^ +||itservices.ricoh.de^ +||itservices.ricoh.ie^ +||itservices.ricoh.no^ +||itt.enterprises.proximus.com^ +||iw.pentonmarketingsvcs.com^ +||ixia-elq.keysight.com^ +||ixia-lp.keysight.com^ +||ja-jp.siemensplmevents.com^ +||japan.secureforms.partnermcafee.com^ +||jhr.jacksonhealthcare.com^ +||jlfiber.advancedtech.com^ +||joc.marketing.atafreight.com^ +||jogtestdrive.jeep.com^ +||join.boozallen.com^ +||join.brandlicensing.eu^ +||join.coteriefashionevents.com^ +||join.decorex.com^ +||join.fhlbny.com^ +||join.figlobal.com^ +||join.ifsecglobal.com^ +||join.informa-events.com^ +||join.kbb.co.uk^ +||join.magicfashionevents.com^ +||join.myfashionevents.com^ +||join.pharmapackeurope.com^ +||join.projectfashionevents.com^ +||join.safety-health-expo.co.uk^ +||join.stratfor.com^ +||join.zendesk.com^ +||join02.informamarkets.com^ +||journey.cisco.com^ +||jp-go.experian.com^ +||jponmlkj.carte-gr.total.fr^ +||jubileo-ppb.carte-gr.total.fr^ +||justsayyes.infor.com^ +||kadlec.psjhealth.org^ +||kampanja.bhtelecom.ba^ +||kampanjat.atea.fi^ +||kampanjer.yxvisa.no^ +||kattoremontti.ruukki.com^ +||kl.klasselotteriet.dk^ +||klmcorporate.americanexpress.nl^ +||know.wolterskluwerlr.com^ +||knowledge.fdbhealth.com^ +||knowledge.vaisala.com^ +||kr-go.experian.com^ +||kunde.danskespil.dk^ +||la.idgenterprise.com^ +||lab.prodesp.sp.gov.br^ +||labs.verticurl.com^ +||lacinfo.motorolasolutions.com^ +||lakerspreferences.gleague.nba.com^ +||lakerspreferences.nba.com^ +||lan.landing.ni.com^ +||landing-activemeetings.wolterskluwer.com^ +||landing-annotext.wolterskluwer.com^ +||landing-dictnow.wolterskluwer.com^ +||landing-effacts.wolterskluwer.com^ +||landing-kleos.wolterskluwer.com^ +||landing-legisway.wolterskluwer.com^ +||landing-smartdocument.wolterskluwer.com^ +||landing-teamdocs.wolterskluwer.com^ +||landing-trimahn.wolterskluwer.com^ +||landing-trinotar.wolterskluwer.com^ +||landing-winra.wolterskluwer.com^ +||landing.clubcar.com^ +||landing.computershare.com^ +||landing.e.columbuscrew.com^ +||landing.georgeson.com^ +||landing.kccllc.com^ +||landing.kwm.com^ +||landing.lgensol.com^ +||landing.newyorkjets.com^ +||landing.wolterskluwer.hu^ +||landingpages.csustudycentres.edu.au^ +||landingpages.siemens-healthineers.com^ +||landings.omegacrmconsulting.com^ +||lantern.connect.o2.co.uk^ +||lantern.fortinet.com^ +||lantern7.wealth.mandg.com^ +||lantern8.wealth.mandg.com^ +||lantern9.mandg.com^ +||latam.thomsonreuters.com^ +||law.bppeloqua.com^ +||lead.blackrock.com^ +||leadmanagement.leads360.com^ +||leadmanagement.velocify.com^ +||leads.commercial.keurig.com^ +||learn.aiu.edu.au^ +||learn.amllp.com^ +||learn.amplypower.com^ +||learn.anthology.com^ +||learn.armanino.com^ +||learn.armaninollp.com^ +||learn.certiport.com^ +||learn.creditacceptance.com^ +||learn.fhlbny.com^ +||learn.grassicpas.com^ +||learn.houzz.com^ +||learn.huthwaite.com^ +||learn.insperity.com^ +||learn.jacksonhewitt.com^ +||learn.liensolutions.com^ +||learn.mvpindex.com^ +||learn.ndtco.com^ +||learn.nhaschools.com^ +||learn.oviahealth.com^ +||learn.panasonic.de^ +||learn.ricoh.ca^ +||learn.trapac.com^ +||learn.uwindsor.ca^ +||learn.wolterskluwerlb.com^ +||learn.wolterskluwerlr.com^ +||learn.wow.wowforbusiness.com^ +||learning.hmhco.com^ +||learnmore.protiviti.com^ +||lednews.powerint.com^ +||legalhold.ediscovery.com^ +||lets.go.haymarketmedicalnetwork.com^ +||lets.go.mcknightsnetwork.com^ +||lets.go.mmm-online.com^ +||lets.go.prweekus.com^ +||lfn.lfg.com^ +||library.acspubs.org^ +||library.daptiv.com^ +||lieudetravail.ricoh.fr^ +||lifescience.item24.de^ +||lifestyle.edm.globalsources.com^ +||lifestyle.tradeshow.globalsources.com^ +||like.reply.de^ +||lincoln-financial.lfd.com^ +||lincolnfinancialgroup.lfg.com^ +||lineside.networkrail.co.uk^ +||link.bankofscotland.co.uk^ +||link.global.amd.com^ +||link.halifax.co.uk^ +||link.infineon.com^ +||link.lloydsbank.com^ +||link.mbna.co.uk^ +||links.banking.scottishwidows.co.uk^ +||links.blackhorse.co.uk^ +||links.businessinsurance.bankofscotland.co.uk^ +||links.commercialemails.amcplc.com^ +||links.commercialemails.bankofscotland.co.uk^ +||links.commercialemails.blackhorse.co.uk^ +||links.commercialemails.halifax.co.uk^ +||links.commercialemails.lexautolease.co.uk^ +||links.commercialemails.lloydsbank.com^ +||links.e.response.mayoclinic.org^ +||links.email.bm-solutions.co.uk^ +||links.email.hx-intermediaries.co.uk^ +||links.emails-sharedealing.co.uk^ +||links.emails.birminghammidshires.co.uk^ +||links.global.protiviti.com^ +||links.go.shoretel.com^ +||links.insurance.lloydsbank.com^ +||links.lexautolease.co.uk^ +||links.news.riverview.org^ +||links.npsemails.mbna.co.uk^ +||links.qumu.com^ +||live.alljobs.co.il^ +||live.polycom.com^ +||live.techit.co.il^ +||log.cognex.com^ +||logistics.coyote.com^ +||logistics.dbschenker.com^ +||lp-eq.mitsuichemicals.com^ +||lp.adp.com^ +||lp.americas.business.samsung.com^ +||lp.antalis.com^ +||lp.apac.business.samsung.com^ +||lp.befly.com.br^ +||lp.capella.edu^ +||lp.connect.garnethealth.org^ +||lp.connectedcare.wkhs.com^ +||lp.copeland.com^ +||lp.deloittecomunicacao.com.br^ +||lp.dynabook.com^ +||lp.edpcomunicacao.com.br^ +||lp.email-particuliers.engie.fr^ +||lp.embarcadero.com^ +||lp.europe.business.samsung.com^ +||lp.flytour.com.br^ +||lp.fusioncharts.com^ +||lp.go.toyobo.co.jp^ +||lp.healthinfo.thechristhospital.com^ +||lp.info.aspirus.org^ +||lp.info.jeffersonhealth.org^ +||lp.internalcomms.exclusive-networks.com^ +||lp.jurion.de^ +||lp.leadingauthorities.com^ +||lp.marketing.engie-homeservices.fr^ +||lp.mkt-email.samsungsds.com^ +||lp.nexity.fr^ +||lp.northwestern.nm.org^ +||lp.oralia.fr^ +||lp.pro.engie.fr^ +||lp.response.deloitte.com^ +||lp.sekisuikasei.com^ +||lp.services.tuftsmedicine.org^ +||lp.smartbusiness.samsung.com^ +||lp.solutions.cegos.it^ +||lp.sophos.com^ +||lp.strayer.edu^ +||lp.svenskapostkodlotteriet.se^ +||lp.tfd-corp.co.jp^ +||lp.tix.lehigh.edu^ +||lp3.dentsplysirona.com^ +||lps-info.arval.com^ +||lrgermany.wolterskluwer.com^ +||lrhungary.wolterskluwer.com^ +||lritaly.wolterskluwer.com^ +||lrnetherlands.wolterskluwer.com^ +||lrpoland.wolterskluwer.com^ +||lrslovakia.wolterskluwer.com^ +||ltam2.secureforms.mcafee.com^ +||lxlx6p7y.arrow.com^ +||m.bumrungrad1378.com^ +||m.carte-gr.total.fr^ +||m.enerpac.com^ +||m.mywd.com^ +||m.premier.info.shutterstock.com^ +||ma.hitachi-systems.com^ +||ma.hmhco.com^ +||mackaytracking.newyorklifeinvestments.com^ +||mail.carte-gr.total.fr^ +||mail.dolce-gusto.at^ +||mail.dolce-gusto.be^ +||mail.dolce-gusto.bg^ +||mail.dolce-gusto.ca^ +||mail.dolce-gusto.cl^ +||mail.dolce-gusto.co.cr^ +||mail.dolce-gusto.co.il^ +||mail.dolce-gusto.co.kr^ +||mail.dolce-gusto.co.nz^ +||mail.dolce-gusto.co.uk^ +||mail.dolce-gusto.co.za^ +||mail.dolce-gusto.com.ar^ +||mail.dolce-gusto.com.au^ +||mail.dolce-gusto.com.mx^ +||mail.dolce-gusto.com.my^ +||mail.dolce-gusto.com.sg^ +||mail.dolce-gusto.com.tw^ +||mail.dolce-gusto.cz^ +||mail.dolce-gusto.de^ +||mail.dolce-gusto.dk^ +||mail.dolce-gusto.es^ +||mail.dolce-gusto.fi^ +||mail.dolce-gusto.fr^ +||mail.dolce-gusto.gr^ +||mail.dolce-gusto.hk^ +||mail.dolce-gusto.hu^ +||mail.dolce-gusto.ie^ +||mail.dolce-gusto.it^ +||mail.dolce-gusto.nl^ +||mail.dolce-gusto.no^ +||mail.dolce-gusto.pl^ +||mail.dolce-gusto.pt^ +||mail.dolce-gusto.ro^ +||mail.dolce-gusto.ru^ +||mail.dolce-gusto.se^ +||mail.dolce-gusto.sk^ +||mail.dolce-gusto.ua^ +||mail.dolce-gusto.us^ +||mail.information.maileva.com^ +||mail.rethinkretirementincome.co.uk^ +||mail2.carte-gr.total.fr^ +||mailer.carte-gr.total.fr^ +||mailgate.carte-gr.total.fr^ +||mailgw.carte-gr.total.fr^ +||mailin.carte-gr.total.fr^ +||mails.coloplast.com^ +||mailx.carte-gr.total.fr^ +||managedaccounts.nvenergy.com^ +||managedaccounts.pacificpower.net^ +||managedaccounts.rockymountainpower.net^ +||map.rockwellautomation.com^ +||march.landing.ni.com^ +||marketing-ap.mmc.co.jp^ +||marketing-form.fiat.com^ +||marketing-tracking.thomsonreuters.com^ +||marketing.adaptiveplanning.com^ +||marketing.agora.io^ +||marketing.alkhaleej.com.sa^ +||marketing.allenmotorgroup.co.uk^ +||marketing.aviationweek.com^ +||marketing.bajajelectricals.com^ +||marketing.business.vodafone.co.uk^ +||marketing.cigna.com^ +||marketing.clippergifts.at^ +||marketing.clippergifts.co.uk^ +||marketing.clippergifts.nl^ +||marketing.cloud.travelport.com^ +||marketing.colman.ac.il^ +||marketing.contenur.com^ +||marketing.edpcomunicacao.com.br^ +||marketing.enterprisedb.com^ +||marketing.euromaster.de^ +||marketing.global360.com^ +||marketing.golubcapital.com^ +||marketing.handt.co.uk^ +||marketing.hilton.com^ +||marketing.ianywhere.com^ +||marketing.igopost.no^ +||marketing.igopost.se^ +||marketing.income.com.sg^ +||marketing.naf.no^ +||marketing.netafim.cn^ +||marketing.netafim.com.br^ +||marketing.netafim.com.mx^ +||marketing.nova.gr^ +||marketing.omegahms.com^ +||marketing.omeir.com^ +||marketing.overheaddoor.com^ +||marketing.pelotongroup.com^ +||marketing.promotiv.se^ +||marketing.promotivnordics.dk^ +||marketing.psentertainment.com^ +||marketing.royalalaskanmovers.com^ +||marketing.salva.es^ +||marketing.sonac.biz^ +||marketing.spcapitaliq.com^ +||marketing.tandemdiabetes.com^ +||marketing.test.insead.edu^ +||marketing.uwmedicine.org^ +||marketing1.yealink.com^ +||marketingb2b.euromaster-neumaticos.es^ +||marketingforms.jdpa.com^ +||marketingpro.euromaster.fr^ +||marketreports.autovistagroup.com^ +||marketresearch.jacksonhealthcare.com^ +||markkinointi.igopost.fi^ +||martech.wavenet.com.tw^ +||mat.lgdisplay.com^ +||matrk.rockymountainpower.net^ +||mds.ricoh-europe.com^ +||mds.ricoh.ch^ +||mds.ricoh.co.uk^ +||mds.ricoh.co.za^ +||mds.ricoh.de^ +||mds.ricoh.es^ +||mds.ricoh.ie^ +||mds.ricoh.it^ +||mds.ricoh.no^ +||me.coact.org.au^ +||me.sigsauer.com^ +||mec.hilton.com^ +||media.redbull.racing^ +||media.ubmamevents.com^ +||medlemskap.nof.no^ +||meet.intercall.com^ +||meet.westuc.com^ +||meeting.nuance.com^ +||meetings.gaylordhotels.com^ +||memberships.clubcorp.com^ +||memelq.acs.org^ +||mercadeo.promerica.fi.cr^ +||message.sonicwall.com^ +||messages.blackhat.com^ +||metrics-go.experian.com^ +||metrics-now.experian.com^ +||metrics.mhi.com^ +||metricsinfo.edc.ca^ +||metricsinfoqac.edc.ca^ +||mexico.balluff.com^ +||micro.workplaceinvesting.fidelity.com^ +||microlearning.att.com^ +||microsite.pbs.org^ +||microsite.standardandpoors.com^ +||mini-site.larksuite-marketing.com^ +||mirec.ubmmexico.com^ +||mk.convera.com^ +||mkg.colfondos.co^ +||mkt-tracking.cloudmargin.com^ +||mkt.compactaprint.com.br^ +||mkt.consultdss.com^ +||mkt.unipega.com^ +||mktg.feedbacknow.com^ +||mktg.forrester.com^ +||mktg.northstardubai.com^ +||mlc.martela.se^ +||mobile-electronics.edm.globalsources.com^ +||mobile.blackboard.com^ +||mobile.tradeshow.globalsources.com^ +||mobile.vmware.com^ +||moodlerooms.blackboard.com^ +||more.groups.be^ +||more.spglobal.com^ +||mortgage.equifax.com^ +||mortgage.inform.equifax.com^ +||mortgage.leads360.com^ +||mortgage.velocify.com^ +||motm.adp.ca^ +||move.azets.com^ +||move.azets.dk^ +||move.azets.fi^ +||move.azets.no^ +||move.azets.se^ +||mroprospector.aviationweek.com^ +||ms.informaengage.com^ +||ms1.morganstanley.com^ +||msa-emea.secureforms.partnermcafee.com^ +||msa-uki.secureforms.partnermcafee.com^ +||mt-business.vodafone.com^ +||mws.verisk.com^ +||mx.carte-gr.total.fr^ +||mx.information.maileva.com^ +||mx.mywd.com^ +||mx2.carte-gr.total.fr^ +||my-go.experian.com^ +||my.catfinancial.com^ +||my.internationalsos.com^ +||my.iso.com^ +||my.kace.com^ +||my.kpmg.ca^ +||my.macu.com^ +||my.pannar.com^ +||my.totaljobs.com^ +||my.verisk.com^ +||my.xactware.co.uk^ +||my.xactware.com^ +||myevents.thalesgroup.com^ +||myfeed.thalesgroup.com^ +||myfuture.futureelectronics.com^ +||myhealth.ssmhealth.com^ +||myhotelbook.pegs.com^ +||myinfo.borland.com^ +||myinfo.eaton.com^ +||mypa-hk.americanexpress.com^ +||mypa-in-prop.americanexpress.com^ +||mypa-sg-prop.americanexpress.com^ +||myprofile.panasonic.eu^ +||myprofile.technics.eu^ +||mysite.webroot.com^ +||mystery.vfmleonardo.com^ +||mywebpage.ni.com^ +||na-pages.husqvarna.com^ +||namrinfo.motorolasolutions.com^ +||nationalaccounts.adp.com^ +||nbg.seagate.com^ +||nd.nasdaqtech.nasdaq.com^ +||ndi.nuance.com^ +||ned.themarketingscience.com^ +||networkingexchange.att.com^ +||networkprotection.mcafee.com^ +||networks.balluff.com^ +||newperspective.americanexpress.com^ +||news.cannesyachtingfestival.com^ +||news.communications-rmngp.fr^ +||news.crmtechnologies.com^ +||news.dbschenker.com^ +||news.equipbaie.com^ +||news.expoprotection.com^ +||news.fiac.com^ +||news.forddirectdealers.com^ +||news.iftm.fr^ +||news.income.com.sg^ +||news.inttra.com^ +||news.la-z-boy.com^ +||news.mazars.nl^ +||news.promo.fcagroup.com^ +||news.reedexpo.com.cn^ +||news.reedexpo.fr^ +||news.salon-aps.com^ +||news.seatrade-maritime.com^ +||news.sitl.eu^ +||news.supplychain-event.com^ +||news.tcsg.edu^ +||news2.secureforms.mcafee.com^ +||newsflash.elliemae.com^ +||newsletter.dolce-gusto.ch^ +||newsletter.standardandpoors.com^ +||newsletter.teletech.com^ +||newsletters.bancsabadell.com^ +||nidays.austria.ni.com^ +||nidays.suisse.ni.com^ +||nidays.switzerland.ni.com^ +||nl-go.experian.com^ +||nl-nl.coloplastcare.com^ +||nl.aon.com^ +||nonprofit.aon.com^ +||nordics.atradius.com^ +||nordicsbtaenrolment.americanexpress.co.uk^ +||notices.regis.edu^ +||noticias.grandt.com.ar^ +||notificaciones.conduce-seguro.es^ +||notify.eset.com^ +||novedades.telecomfibercorp.com.ar^ +||now.catersource.com^ +||now.cummins.com^ +||now.cumminsfiltration.com^ +||now.fintechfutures.com^ +||now.greenbuildexpo.com^ +||now.informaconnect01.com^ +||now.m5net.com^ +||now.myfashionevents.com^ +||now.wealthmanagement.com^ +||ns.carte-gr.total.fr^ +||ns2.carte-gr.total.fr^ +||nurse.fastaff.com^ +||nurse.trustaff.com^ +||nyhed.danskespil.dk^ +||nz-go.experian.com^ +||nzbusiness.vodafone.co.nz^ +||obrazy.dlabiznesu.pracuj.pl^ +||occidente.ubmmexico.com^ +||oci.dyn.com^ +||ocpi.americanexpress.ca^ +||offer.coface.com^ +||offer.lyreco.com^ +||offer.omniture.com^ +||offer.sj1.omniture.com^ +||offer.sjo.omniture.com^ +||offers.desertschools.org^ +||offers.la-z-boy.com^ +||oiat.dow.com^ +||oj.brothercloud.com^ +||okto1.spsglobal.com^ +||old.globalservices.arrow.com^ +||one-source.tax.thomsonreuters.com^ +||onecloud.avaya.com^ +||online-mt-com-455208869.p06.elqsandbox.com^ +||online.cphi.cn^ +||online.eaglepi.com^ +||online.expolifestyle.com^ +||online.hnoexpo.com^ +||online.hsrexpo.com^ +||online.jtiadvance.co.uk^ +||online.rwdls.com^ +||online.rwdstco.com^ +||online.sharjahart.org^ +||online.spsglobal.com^ +||onlineshop.ricoh.ch^ +||onlineshop.ricoh.de^ +||onlineshop.ricoh.it^ +||onlineshop.ricoh.lu^ +||onlineshop.ricoh.no^ +||onlineshop.ricoh.pl^ +||onmlkjiion.carte-gr.total.fr^ +||ops.sunpowercorp.com^ +||optifiantsion.carte-gr.total.fr^ +||optimize.mcafee.com^ +||optionen.hager.de^ +||optumcoding.optum.com^ +||oracle-netsuite-com-796203850.p04.elqsandbox.com^ +||oracle.marketingcube.com.au^ +||oracletechnology.arrow.com^ +||organizations.stratfor.com^ +||origin.www.images.2.forms.healthcare.philips.com^ +||our.sunshinecoast.qld.gov.au^ +||out.information.maileva.com^ +||outreach.sbf.org.sg^ +||owp-sg-prop.americanexpress.com^ +||owp-tw.americanexpress.com^ +||p01.sc.origins.en25.com^ +||p03.sc.origins.en25.com^ +||p04.sc.origins.en25.com^ +||p06.sc.origins.en25.com^ +||page.care.salinasvalleyhealth.com^ +||page.email.trinity-health.org^ +||page.griffinshockey.com^ +||page.health.tmcaz.com^ +||page.sangfor.com.cn^ +||page.sangfor.com^ +||page.thalesgroup.com^ +||pagename.care.ummhealth.org^ +||pages.arabiancentres.com^ +||pages.att.com^ +||pages.batteryworld.com.au^ +||pages.bayer.com^ +||pages.bioglan.com.au^ +||pages.canon.com.au^ +||pages.cenomicenters.com^ +||pages.concoursefinancial.com^ +||pages.contact.umpquabank.com^ +||pages.dubaifitnesschallenge.com^ +||pages.e.chooseumpquabank.com^ +||pages.erepublic.com^ +||pages.expowest.com^ +||pages.feedback.ignite.gleague.nba.com^ +||pages.feedback.vegasgoldenknights.com^ +||pages.financialintelligence.informa.com^ +||pages.health365.com.au^ +||pages.indigovision.com^ +||pages.info.anaheimducks.com^ +||pages.info.exclusive-networks.com^ +||pages.info.hondacenter.com^ +||pages.informatech1.com^ +||pages.intelligence.informa.com^ +||pages.kwm.com^ +||pages.ledger.com^ +||pages.lloydslist.com^ +||pages.lloydslistintelligence.com^ +||pages.magellangroup.com.au^ +||pages.maritimeintelligence.informa.com^ +||pages.mktg-upfield.com^ +||pages.mongodb.com^ +||pages.naturopathica.com.au^ +||pages.nbjsummit.com^ +||pages.news.realestate.bnpparibas^ +||pages.omdia.informa.com^ +||pages.pentonmktgsvcs.com^ +||pages.pharmaintelligence.informa.com^ +||pages.primalpictures.com^ +||pages.reply.broadwayinhollywood.com^ +||pages.reply.dpacnc.com^ +||pages.response.terex.com^ +||pages.sailgp.com^ +||pages.siemens-energy.com^ +||pages.siemens-info.com^ +||pages.siemens.com^ +||pages.titanmachinery.com^ +||pages.uchicagomedicine.org^ +||pages.usviolifeprofessional.mktg-upfield.com^ +||pages.wardsintelligence.informa.com^ +||paginaseloqua.unisabana.edu.co^ +||partenaireslld.temsys.fr^ +||partnermktg.symantec.com^ +||partners.avaya.com^ +||partners.redbull.racing^ +||partners.singularlogic.eu^ +||partnersuccess.cisco.com^ +||partnersuccessmetrics.cisco.com^ +||partnerwith.us.streetbond.com^ +||payments.americanexpress.co.uk^ +||payroll.smartsalary.com.au^ +||pci.aon.com^ +||pcm.symantec.com^ +||pcs.capgroup.com^ +||pd.bppeloqua.com^ +||pet-recycling.husky.ca^ +||pgs.aviationweek.com^ +||pgs.centreforaviation.com^ +||pgs.corporatetravelcommunity.com^ +||pgs.farmprogress.com^ +||phadia.thermo.com^ +||phadia.thermofisher.com^ +||phcbi-solution.phchd.com^ +||picis.optum.com^ +||pkg.balluff.com^ +||pl-go.experian.com^ +||platformsolutions.shutterstock.com^ +||playbook.convio.com^ +||plbusiness.samsung.com^ +||plongezdanslabdkj.carte-gr.total.fr^ +||plusavecmoins.adp.ca^ +||pm.eu.viatrisconnect.com^ +||pm.eu.viatrisconnect.de^ +||pm.eu.viatrisconnect.it^ +||poczta.carte-gr.total.fr^ +||podbooth.martela.com^ +||podbooth.martela.no^ +||podbooth.martela.se^ +||pop.carte-gr.total.fr^ +||pop.dmglobal.com^ +||pop3.carte-gr.total.fr^ +||porsche.nabooda-auto.com^ +||portal.krollontrack.co.uk^ +||posgrados-unisabana-edu-co-1207474081.p04.elqsandbox.com^ +||posgrados.unisabana.edu.co^ +||post.carte-gr.total.fr^ +||pp.scorecardrewards.com^ +||pr.cision.co.uk^ +||pr.cision.com^ +||pr.cision.fi^ +||pr.prnewswire.co.uk^ +||pr.prnewswire.com^ +||praluent-e.regeneron.com^ +||pre-employmentservices.adp.com^ +||preference.motorolasolutions.com^ +||preference.nuance.com^ +||preferencecenter.fticonsulting.com^ +||preferencecentre.americanexpress.co.uk^ +||preferencecentre.americanexpress.es^ +||preferencecentre.americanexpress.se^ +||preferences.acspubs.org^ +||preferences.bowerswilkins.com^ +||preferences.darglobal.co.uk^ +||preferences.definitivetechnology.com^ +||preferences.deloitte.ca^ +||preferences.denon.com^ +||preferences.dtlphx.net^ +||preferences.heatexperience.com^ +||preferences.la-lakers.com^ +||preferences.lakersgaming.com^ +||preferences.marantz.com^ +||preferences.marketone.com^ +||preferences.oakstreethealth.com^ +||preferences.polkaudio.com^ +||preferences.sb-lakers.com^ +||preferenza.nposistemi.it^ +||pregrados.javeriana.edu.co^ +||premierbuyer.edm.globalsources.com^ +||preview.fi-institutional.com.au^ +||primary.hasegawa.jp^ +||pro.stormwindstudios.com^ +||process.global360.com^ +||processusmetier.ricoh.fr^ +||procurement.cipscomms.org^ +||prod.tracking.refinitiv.com^ +||product.cloud.travelport.com^ +||productionprinting.ricoh.ch^ +||productionprinting.ricoh.co.uk^ +||productionprinting.ricoh.ie^ +||productivity-s.yale.com^ +||products.forddirectdealers.com^ +||products.ricoh-europe.com^ +||products.ricoh.ch^ +||products.ricoh.co.uk^ +||products.ricoh.ie^ +||produkte.ricoh.at^ +||produkte.ricoh.de^ +||produktionsdruck.ricoh.de^ +||profile.marketone.com^ +||profiling.afry.com^ +||profiling.eurofins.fi^ +||profiling.idbbn.com^ +||profiling.martela.com^ +||profiling.normet.com^ +||profiling.outokumpu.com^ +||profiling.plannja.com^ +||profiling.ruukki.com^ +||profit.edc.ca^ +||programmes-skema.skema-bs.fr^ +||programmes-skema.skema.edu^ +||programs.mellanox.com^ +||promo.alfaromeo.it^ +||promo.batesville.com^ +||promo.fiat.com^ +||promos.thermoscientific.com^ +||promotion.lginnotek.com^ +||promotion.lindt.az^ +||promotion.lindt.cr^ +||promotion.lindt.gt^ +||promotion.lindt.pa^ +||promotion.sedo.com^ +||promotions.batesville.com^ +||promotions.centex.com^ +||promotions.eq.delwebb.com^ +||promotions.hot.net.il^ +||promotions.kangan.edu.au^ +||promotions.la-z-boy.com^ +||promotions.thermofisher.com^ +||property.aon.com^ +||pruebascol.arin-innovation.com^ +||pt.balluff.com^ +||publicidad.davivienda.com.pa^ +||pubstr.acs.org^ +||pubstr.acspubs.org^ +||pubstr.chemrxiv.org^ +||purple.mongodb.com^ +||q.nasdaq.com^ +||qago.qiagen.com^ +||qr.dwtc.com^ +||r2r.utas.edu.au^ +||radio.moodybible.org^ +||ratings-events.standardandpoors.com^ +||rc.precisely.com^ +||rc.visionsolutions.com^ +||reach.ironmountain.com^ +||reach.terumo-bct.com^ +||read.lightreading.com^ +||read.telecoms.com^ +||ready.curriculumassociates.com^ +||ready.nerdery.com^ +||realbusiness.americanexpress.com^ +||realeducation.kangan.edu.au^ +||realsolutions.americanexpress.fr^ +||realsolutions.americanexpress.it^ +||realsolutions.americanexpress.se^ +||realtors.eq.delwebb.com^ +||recruit.go.apprenticeshipcommunity.com.au^ +||recruiting.dukekunshan.edu.cn^ +||redwingforbusiness.redwingsafety.com^ +||referafriend.box.com^ +||reg.enterpriseconnect.com^ +||reg.gdconf.com^ +||reg.hdiconference.com^ +||reg.informationweek.com^ +||reg.insecurity.com^ +||reg.iotworldtoday.com^ +||reg.nojitter.com^ +||reg.techweb.com^ +||reg.theaisummit.com^ +||reg.vrdconf.com^ +||reg.workspace-connect.com^ +||reg.xrdconf.com^ +||register-implants.dentsplysirona.com^ +||register.compellent.com^ +||register.denovo-us.com^ +||register.dnv.com^ +||register.harley-davidson.com^ +||register.markit.com^ +||register.purina.com^ +||register.redhat.com^ +||registration.promatis.com^ +||registro.omegacrmconsulting.com^ +||regmdr.pref.ims.dialog-direct.com^ +||relacionamento.edpcomunicacao.com.br^ +||relations.extrahop.com^ +||relay.carte-gr.total.fr^ +||relay.information.maileva.com^ +||relyonit.americanexpress.co.uk^ +||remote.carte-gr.total.fr^ +||rent.mgrc.com^ +||renting.aldautomotive.es^ +||reply.osv.com^ +||request.verisign.com^ +||research.dshb.biology.uiowa.edu^ +||research.gartner.com^ +||research.leads360.com^ +||research.velocify.com^ +||resources-it.opentext.com^ +||resources.att.com^ +||resources.blueprintgenetics.com^ +||resources.hermanmiller.com^ +||resources.icmi.com^ +||resources.inovis.com^ +||resources.l1id.com^ +||resources.mcgladrey.com^ +||resources.opentext.com^ +||resources.opentext.de^ +||resources.opentext.es^ +||resources.opentext.fr^ +||resources.rockwellautomation.com^ +||resources.thermofisher.com^ +||resources.xo.com^ +||resources2.secureforms.mcafee.com^ +||respond.firstdata.com^ +||respons.intern.schibsted.no^ +||response.abrdn.com^ +||response.accuitysolutions.com^ +||response.approva.net^ +||response.australian.physio^ +||response.b2b.bea.com^ +||response.bea.com^ +||response.careerstructure.com^ +||response.caterer.com^ +||response.catererglobal.com^ +||response.coh.org^ +||response.cpp.com^ +||response.cwjobs.co.uk^ +||response.deloittedigital.com^ +||response.desjardins.com^ +||response.economistevents.com^ +||response.eiuperspectives.com^ +||response.emirateswoman.com^ +||response.emoneyadvisor.com^ +||response.ez-dock.com^ +||response.fastaff.com^ +||response.hospital.fastaff.com^ +||response.idt.com^ +||response.informamarketsasia.com^ +||response.ingrammicrocloud.com^ +||response.iqpc.com^ +||response.kadient.com^ +||response.leadingauthorities.com^ +||response.littletikescommercial.com^ +||response.miracle-recreation.com^ +||response.nofault.com^ +||response.nxp.com^ +||response.operative.com^ +||response.optimummedical.co.uk^ +||response.playpower.com^ +||response.playworld.com^ +||response.polycom.com^ +||response.quest.com^ +||response.retailchoice.com^ +||response.reversepartner.genworth.com^ +||response.sagaftra.org^ +||response.sonosite.com^ +||response.stepstone.com^ +||response.tandberg.nl^ +||response.totaljobs.com^ +||response.travelex.co.jp^ +||response.turnkeyvr.com^ +||response.usnursing.com^ +||response.wbresearch.com^ +||response.wild.com^ +||response.xactware.com^ +||response2.buydomains.com^ +||responsed.abrdn.com^ +||responsemp.civica.co.uk^ +||responsemp.civica.com^ +||responses.diverseeducation.com^ +||responses.ingrammicro.com^ +||responses.wild.com^ +||responsesite.dsm-firmenich.com^ +||rethink.adp.com^ +||retirement.aonunited.com^ +||retirement.newyorklifeannuities.com^ +||reuniondepadres.unisabana.edu.co^ +||review.teradata.com^ +||rh.adp.ca^ +||rh.grupoocq.com.br^ +||rh.ocq.com.br^ +||rh.vettaquimica.com.br^ +||rims.aig.com^ +||ro-go.experian.com^ +||rs.adpinfo.com^ +||rsvp.heatexperience.com^ +||ru-go.experian.com^ +||ru-ru.siemensplmevents.com^ +||s.clientes.construrama.com^ +||s.corporate.cemex.com^ +||s.info.cemexgo.com^ +||s.latam.cemex.com^ +||s.sick.com^ +||s1133198723.sc.origins.en25.com^ +||s1325061471.sc.origins.en25.com^ +||s138663192.aon.com^ +||s1782711468.sc.origins.en25.com^ +||s1885709864.sc.origins.en25.com^ +||s2013560044.sc.origins.en25.com^ +||s205119.aon.com^ +||s2448.sc.origins.en25.com^ +||s2564.sc.origins.en25.com^ +||s3.landing.ni.com^ +||s362693299.aon.ca^ +||s362693299.aon.com^ +||s46849916.sc.origins.en25.com^ +||s615419487.sc.origins.en25.com^ +||s861531437.sc.origins.en25.com^ +||safety.west.com^ +||sales.hot.net.il^ +||saleslists.inform.equifax.com^ +||sandbox-connectlp.keysight.com^ +||sandbox-elq.keysight.com^ +||satracking.cubiq.com^ +||satracking.finning.com^ +||save.salary.com.au^ +||save.smartsalary.com.au^ +||savings.adp.ca^ +||say.hello.navan.com^ +||say.hello.tripactions.com^ +||sbx.daimlertruck.com^ +||schwacke.autovistagroup.com^ +||se-go.experian.com^ +||se-se.siemensplmevents.com^ +||seao.business.samsung.com^ +||sec.wolterskluwerfs.com^ +||secure-anzgo.arrow.com^ +||secure-e.healthiq.com^ +||secure-eugo.arrow.com^ +||secure.adp.ca^ +||secure.adpinfo.com^ +||secure.aifs.com^ +||secure.arg.email-prudential.com^ +||secure.arrow.com^ +||secure.constellation.iqvia.com^ +||secure.desjardinsassurancesgenerales.com^ +||secure.desjardinsgeneralinsurance.com^ +||secure.digital.mandg.com^ +||secure.ec4u.com^ +||secure.fortinet.com^ +||secure.gartnerevents.com^ +||secure.gartnerformarketers.com^ +||secure.immixgroup.com^ +||secure.info.awlgrip.com^ +||secure.info.domo.com^ +||secure.info.zetes.com^ +||secure.lapersonnelle.com^ +||secure.laurelsprings.com^ +||secure.mdtinternal.medtronic.com^ +||secure.medtronichealth.medtronic.com^ +||secure.medtronicinteract.com^ +||secure.medtroniclearn.com^ +||secure.mycalcas.com^ +||secure.nikkol.co.jp^ +||secure.omegacrmconsulting.com^ +||secure.orthology.com^ +||secure.sonosite.com^ +||secure.thepersonal.com^ +||secure.valleymed.org^ +||secure.visualsonics.com^ +||secure.vspdirect.com^ +||secure1.desjardinsassurancesgenerales.com^ +||secure1.desjardinsgeneralinsurance.com^ +||secure1.lapersonnelle.com^ +||secure1.thepersonal.com^ +||secure3.centralparknyc.org^ +||securecookies.dustin.dk^ +||securecookies.dustin.fi^ +||securecookies.dustin.nl^ +||securecookies.dustin.no^ +||securecookies.dustin.se^ +||securecookies.dustinhome.dk^ +||securecookies.dustinhome.fi^ +||securecookies.dustinhome.nl^ +||securecookies.dustinhome.no^ +||securecookies.dustinhome.se^ +||securecookiesdustininfo.dustin.com^ +||securecookiesdustininfo.dustin.dk^ +||securecookiesdustininfo.dustin.fi^ +||securecookiesdustininfo.dustin.nl^ +||securecookiesdustininfo.dustin.no^ +||securecookiesdustininfo.dustin.se^ +||securecookiesdustininfo.dustinhome.dk^ +||securecookiesdustininfo.dustinhome.fi^ +||securecookiesdustininfo.dustinhome.nl^ +||securecookiesdustininfo.dustinhome.no^ +||securecookiesdustininfo.dustinhome.se^ +||secured.avon-news.com^ +||secured.online.avon.com^ +||securedigital.pru.mandg.com^ +||securedigital.prudential.co.uk^ +||securedigital.wealth.mandg.com^ +||secureform.adaptris.com^ +||secureform.farmplan.co.uk^ +||secureform.proagrica.com^ +||secureforms.accuity.com^ +||secureforms.bankersalmanac.com^ +||secureforms.cirium.com^ +||secureforms.f4f.com^ +||secureforms.fircosoft.com^ +||secureforms.flightglobal.com^ +||secureforms.icis.com^ +||secureforms.nextens.nl^ +||secureforms.nrs-inc.com^ +||secureforms.sortingcodes.co.uk^ +||secureforms.xperthr.co.uk^ +||secureforms.xperthr.com^ +||secureforms.xperthr.nl^ +||secureinfo.edc.ca^ +||securetracking.eaton.com^ +||securetracking.golfpride.com^ +||securityintelligence.verint.com^ +||seek.intel.com^ +||seek.uwa.edu.au^ +||sendmoney.americanexpress.co.uk^ +||seniorlifestyles.amica.ca^ +||sentiment.icis.com^ +||service.athlon.com^ +||service.bechtle.com^ +||services.bdc.ca^ +||services.blackboard.com^ +||services.cairn.info^ +||services.eclerx.com^ +||services.edc.ca^ +||services.princes-trust.org.uk^ +||servicing.business.hsbc.com^ +||sg-go.experian.com^ +||sgsb.aba.com^ +||show.decorex.com^ +||show.kbb.co.uk^ +||signup.vovici.com^ +||simple.avaya.com^ +||simpletopay.americanexpress.co.uk^ +||simpletopay.americanexpress.com.au^ +||simpletopay.americanexpress.com^ +||sinfo.awrostamani.com^ +||site.att.com^ +||site.comunicaciones.iesa.es^ +||site.connect.mydrreddys.com^ +||site.firstnet.com^ +||site.infosysbpm.com^ +||site.tdk.com^ +||sites.campaignmgr.cisco.com^ +||sites.groo.co.il^ +||sites.siemens.com^ +||smallbusiness.adpinfo.com^ +||smart.boxtone.com^ +||smartcam.adt-worldwide.com^ +||smb-cashback.alcatel-lucent.com.au^ +||smb.info.shutterstock.com^ +||sme.proximus.be^ +||smkt.edm.globalsources.com^ +||sms.cf.labanquepostale.fr^ +||smtp.information.maileva.com^ +||smtp2.carte-gr.total.fr^ +||smtpauth.carte-gr.total.fr^ +||smtpauth.information.maileva.com^ +||smtpmail.carte-gr.total.fr^ +||smtpmail.information.maileva.com^ +||smtps.carte-gr.total.fr^ +||smtps.go.fr.scc.com^ +||sns2.secureforms.mcafee.com^ +||social.forddirectdealers.com^ +||social.insidelpl.com^ +||solar.sunpower.com^ +||solar.sunpowercorp.com^ +||solicitud.pacifico.com.pe^ +||solucionesreales.americanexpress.es^ +||solution.agc-chemicals.com^ +||solution.resonac.com^ +||solutions.aampglobal.com^ +||solutions.adp.ca^ +||solutions.adp.com^ +||solutions.arcb.com^ +||solutions.dbschenker.com^ +||solutions.desertfinancial.com^ +||solutions.equifax.co.uk^ +||solutions.lseg.com^ +||solutions.nuance.com^ +||solutions.oppd.com^ +||solutions.peco-energy.com^ +||solutions.redwingshoes.com^ +||solutions.refinitiv.cn^ +||solutions.refinitiv.com^ +||solutions.risk.lexisnexis.co.uk^ +||solutions.risk.lexisnexis.com^ +||solutions.saashr.com^ +||solutions.sabic.com^ +||solutions.sitech-wc.ca^ +||solutions.staubli.com^ +||solutions.stratus.com^ +||solutions.titanmachinery.com^ +||solutions.unysonlogistics.com^ +||solutions.vasque.com^ +||solutions.visaacceptance.com^ +||solutions.westrock.com^ +||solutions2.risk.lexisnexis.com^ +||solve.cranepi.com^ +||sources.nxp.com^ +||spaces.martela.com^ +||spaces.martela.fi^ +||spaces.martela.no^ +||spaces.martela.pl^ +||spaces.martela.se^ +||spain.thomsonreuters.com^ +||spam.carte-gr.total.fr^ +||specialevent.informaengage.com^ +||springboard.aon.com^ +||srqponmd.carte-gr.total.fr^ +||ssmile.dentsplysirona.com^ +||st.azcardinals.com^ +||start.adelaide.edu.au^ +||stat.ado.hu^ +||stat.altalex.com^ +||stat.bdc.ca^ +||stat.ciss.es^ +||stat.cuadernosdepedagogia.com^ +||stat.dauc.cz^ +||stat.dbschenker.com^ +||stat.guiasjuridicas.es^ +||stat.jogaszvilag.hu^ +||stat.juridicas.com^ +||stat.jusnetkarnovgroup.pt^ +||stat.kkpp.cz^ +||stat.kleos.cz^ +||stat.laley.es^ +||stat.laleynext.es^ +||stat.lamy-formation.fr^ +||stat.lamyetudiant.fr^ +||stat.lamyline.fr^ +||stat.legalintelligence.com^ +||stat.lex.pl^ +||stat.lexhub.tech^ +||stat.liaisons-sociales.fr^ +||stat.mersz.hu^ +||stat.praceamzda.cz^ +||stat.praetor-systems.cz^ +||stat.prawo.pl^ +||stat.profinfo.pl^ +||stat.rizeniskoly.cz^ +||stat.smarteca.cz^ +||stat.smarteca.es^ +||stat.starterre-campingcar.fr^ +||stat.starterre.fr^ +||stat.suresmile.dentsplysirona.com^ +||stat.taxlive.nl^ +||stat.ucetni-roku.cz^ +||stat.wk-formation.fr^ +||stat.wkf.fr^ +||stat.wolterskluwer.com^ +||stat.wolterskluwer.es^ +||stat.wolterskluwer.pl^ +||stat.wolterskluwer.pt^ +||stats.bdc.ca^ +||stats.hager.com^ +||stats.saverglass.com^ +||stats.sgs.com^ +||stay.lottehotel.com^ +||sth.mykingsevents.com^ +||stjoe.psjhealth.org^ +||storagetechnology.arrow.com^ +||strikenurse.usnursing.com^ +||study.jcu.edu.au^ +||study.vu.edu.au^ +||submit.info.shutterstock.com^ +||submit.vaisala.com^ +||subscribe.adpinfo.com^ +||subscribe.dnv.com^ +||subscribe.verintsystemsinc.com^ +||subscribe.vistage.com^ +||subscription.coface.com^ +||subscriptionmanagement.53.com^ +||subscriptions.bazaarvoice.com^ +||subscriptions.opentext.com^ +||subscriptions.reedpop.com^ +||subscriptionsbnk.wolterskluwerfs.com^ +||success.coface.com^ +||success.definitive-results.com^ +||summit.edm.globalsources.com^ +||support.panasonic.eu^ +||support.ricoh.de^ +||support.ricoh.fr^ +||survey-staging.mazda.com.au^ +||survey.communication.qualfon.com^ +||survey.mazda.com.au^ +||survey.xo.com^ +||surveys.executiveboard.com^ +||sustainability.ricoh.ch^ +||sustainability.ricoh.co.za^ +||sustainable.optum.com^ +||suunta.visma.fi^ +||sweeps.la-z-boy.com^ +||symantec.ecs.arrow.com^ +||sys.hager.com^ +||t.12thman.com^ +||t.afry.com^ +||t.alumni.duke.edu^ +||t.antalis-verpackungen.at^ +||t.antalis.at^ +||t.antalis.be^ +||t.antalis.bg^ +||t.antalis.ch^ +||t.antalis.cl^ +||t.antalis.co.uk^ +||t.antalis.com.br^ +||t.antalis.com.tr^ +||t.antalis.cz^ +||t.antalis.de^ +||t.antalis.dk^ +||t.antalis.ee^ +||t.antalis.es^ +||t.antalis.fi^ +||t.antalis.fr^ +||t.antalis.hu^ +||t.antalis.ie^ +||t.antalis.lt^ +||t.antalis.lv^ +||t.antalis.nl^ +||t.antalis.no^ +||t.antalis.pl^ +||t.antalis.pt^ +||t.antalis.ro^ +||t.antalis.se^ +||t.antalis.sk^ +||t.antalisabitek.com^ +||t.antalisbolivia.com^ +||t.antalisperu.com^ +||t.appstatesports.com^ +||t.arizonawildcats.com^ +||t.arkansasrazorbacks.com^ +||t.arts.uci.edu^ +||t.auburntigers.com^ +||t.augustaentertainmentcomplex.com^ +||t.azets.com^ +||t.azets.dk^ +||t.azets.fi^ +||t.azets.no^ +||t.azets.se^ +||t.baylorbears.com^ +||t.bceagles.com^ +||t.bluehens.com^ +||t.bucky.uwbadgers.com^ +||t.budweisergardens.com^ +||t.bushnell.org^ +||t.byutickets.com^ +||t.calbears.com^ +||t.centreinthesquare.com^ +||t.charlotte49ers.com^ +||t.chartwayarena.com^ +||t.cincinnatiarts.org^ +||t.classiccenter.com^ +||t.cofcsports.com^ +||t.collinscenterforthearts.com^ +||t.cozone.com^ +||t.csurams.com^ +||t.cubuffs.com^ +||t.dawsoncreekeventscentre.com^ +||t.deloittece.com^ +||t.depaulbluedemons.com^ +||t.e.x.com^ +||t.ecupirates.com^ +||t.emueagles.com^ +||t.fabulousfox.com^ +||t.fairparkdallas.com^ +||t.fermion.fi^ +||t.festo.com^ +||t.fgcuathletics.com^ +||t.fightingillini.com^ +||t.fightingirish.com^ +||t.fordidahocenter.com^ +||t.foxtheatre.org^ +||t.friars.com^ +||t.georgiadogs.com^ +||t.goairforcefalcons.com^ +||t.goarmywestpoint.com^ +||t.gobearcats.com^ +||t.gobison.com^ +||t.goblackbears.com^ +||t.gobulldogs.com^ +||t.goccusports.com^ +||t.godeacs.com^ +||t.goduke.com^ +||t.gofrogs.com^ +||t.gogriz.com^ +||t.goguecenter.auburn.edu^ +||t.goheels.com^ +||t.gohuskies.com^ +||t.gojacks.com^ +||t.golobos.com^ +||t.gomocs.com^ +||t.gopack.com^ +||t.gophersports.com^ +||t.gopoly.com^ +||t.gopsusports.com^ +||t.goredbirds.com^ +||t.gorhody.com^ +||t.gostanford.com^ +||t.gotigersgo.com^ +||t.govandals.com^ +||t.gowyo.com^ +||t.goxavier.com^ +||t.gozips.com^ +||t.griztix.umt.edu^ +||t.gseagles.com^ +||t.hailstate.com^ +||t.hamptonpirates.com^ +||t.hawaiiathletics.com^ +||t.hawkeyesports.com^ +||t.herdzone.com^ +||t.hokiesports.com^ +||t.hornetsports.com^ +||t.huskers.com^ +||t.iowaeventscenter.com^ +||t.itsehoitoapteekki.fi^ +||t.iuhoosiers.com^ +||t.jmusports.com^ +||t.krannertcenter.com^ +||t.kstatesports.com^ +||t.ksuowls.com^ +||t.liberty.edu^ +||t.libertyfirstcreditunionarena.com^ +||t.libertyflames.com^ +||t.longbeachstate.com^ +||t.lsusports.net^ +||t.massmutualcenter.com^ +||t.meangreensports.com^ +||t.mgoblue.com^ +||t.miamihurricanes.com^ +||t.miamiredhawks.com^ +||t.mktg.genesys.com^ +||t.mmaeast.com^ +||t.montecarlosbm.com^ +||t.msubobcats.com^ +||t.msuspartans.com^ +||t.mynexity.fr^ +||t.navysports.com^ +||t.nevadawolfpack.com^ +||t.nexity-studea.com^ +||t.nexity.fr^ +||t.nhra.com^ +||t.niuhuskies.com^ +||t.nuhuskies.com^ +||t.nusports.com^ +||t.ohiobobcats.com^ +||t.okcciviccenter.com^ +||t.okstate.com^ +||t.olemisssports.com^ +||t.oralia.fr^ +||t.orion.fi^ +||t.osubeavers.com^ +||t.owlsports.com^ +||t.paciolan.com^ +||t.pbr.com^ +||t.pennathletics.com^ +||t.pittsburghpanthers.com^ +||t.playhousesquare.org^ +||t.poconoraceway.com^ +||t.portland5.com^ +||t.poyry.com^ +||t.pplcenter.com^ +||t.purduesports.com^ +||t.ragincajuns.com^ +||t.ramblinwreck.com^ +||t.restek.com^ +||t.richmondspiders.com^ +||t.rolltide.com^ +||t.scarletknights.com^ +||t.selectyourtickets.com^ +||t.seminoles.com^ +||t.sfajacks.com^ +||t.sjsuspartans.com^ +||t.sjuhawks.com^ +||t.soec.ca^ +||t.soonersports.com^ +||t.southernmiss.com^ +||t.texasperformingarts.org^ +||t.texassports.com^ +||t.texastech.com^ +||t.thalesgroup.com^ +||t.thefishercenter.com^ +||t.ticketatlantic.com^ +||t.ticketleader.ca^ +||t.ticketstaronline.com^ +||t.treventscomplex.com^ +||t.tribeathletics.com^ +||t.tulanegreenwave.com^ +||t.tulsahurricane.com^ +||t.tysoncenter.com^ +||t.uabsports.com^ +||t.ucdavisaggies.com^ +||t.ucirvinesports.com^ +||t.uclabruins.com^ +||t.uconnhuskies.com^ +||t.ucsdtritons.com^ +||t.uhcougars.com^ +||t.umassathletics.com^ +||t.umterps.com^ +||t.uncwsports.com^ +||t.und.com^ +||t.unlvrebels.com^ +||t.usajaguars.com^ +||t.usctrojans.com^ +||t.utahstateaggies.com^ +||t.utrockets.com^ +||t.villanova.com^ +||t.virginiasports.com^ +||t.vucommodores.com^ +||t.whartoncenter.com^ +||t.wsucougars.com^ +||t.wvusports.com^ +||t.xlcenter.com^ +||t.xtreamarena.com^ +||talent.aonunited.com^ +||talenteq.intuit.com^ +||target.connect.nicklauschildrens.org^ +||target.connect.nicklaushealth.org^ +||target.health.childrenswi.org^ +||tdbrochure.advancedtech.com^ +||teammate.arclogics.com^ +||tech.finalto.com^ +||tech.sangfor.com^ +||tech.softchoice.com^ +||techgifts.tradeshow.globalsources.com^ +||technology.informaengage.com^ +||technology1.informaengage.com^ +||technologyservices.equifax.com^ +||technologyservices.inform.equifax.com^ +||techprovider.intel.com^ +||techsupport.balluff.com^ +||teefiksummin.visma.fi^ +||teho.visma.fi^ +||temails.productnotice.thomsonreuters.com^ +||temsys.temsys.fr^ +||tesla-fortytwo.landing.ni.com^ +||test.go.provident.bank^ +||test.gogoinflight.com^ +||test.marketing.championhomes.com^ +||test.marketingcube.com.au^ +||test.paradyz.com^ +||test.siriusdecisions.com^ +||test.thomsonreuters.com^ +||testforms.fidelity.ca^ +||th-go.experian.com^ +||thrive.metagenics.com^ +||ticketoffice.liberty.edu^ +||tickets.gs-warriors.com^ +||tkelq.genesys.com^ +||tlm.adp.ca^ +||tm-marketing.wolterskluwer.com^ +||tmt.intelligence.informa.com^ +||todayintheword.moodybible.org^ +||tools.ricoh.co.uk^ +||tools.ricoh.de^ +||townhouses.woodlea.com.au^ +||tp.lexisnexis.co.nz^ +||tp.lexisnexis.com.au^ +||tr-business.vodafone.com^ +||tr-ms.bosch-home.com^ +||tr-ms.profilo.com^ +||tr-ms.siemens-home.bsh-group.com^ +||tr.informabi.com^ +||trace.insead.edu^ +||track-e.cypress.com^ +||track-e.infineon.com^ +||track-e.infineoncommunity.com^ +||track.abrdn.com^ +||track.abrdnacp.com^ +||track.abrdnaef.com^ +||track.abrdnaod.com^ +||track.abrdnawp.com^ +||track.abrdnfax.com^ +||track.abrdnfco.com^ +||track.abrdnifn.com^ +||track.abrdnjapan.co.uk^ +||track.abrdnnewindia.co.uk^ +||track.abrdnpit.co.uk^ +||track.asia-focus.co.uk^ +||track.asiadragontrust.co.uk^ +||track.auckland.ac.nz^ +||track.biz.lguplus.com^ +||track.cecobuildings.com^ +||track.clubcar.com^ +||track.connectwise.com^ +||track.cornerstonebuildingbrands.com^ +||track.deloitte.com^ +||track.docusign.ca^ +||track.docusign.co.uk^ +||track.docusign.com.au^ +||track.docusign.com.br^ +||track.docusign.com.es^ +||track.docusign.com^ +||track.docusign.de^ +||track.docusign.fr^ +||track.docusign.in^ +||track.docusign.it^ +||track.docusign.jp^ +||track.docusign.mx^ +||track.docusign.nl^ +||track.dunedinincomegrowth.co.uk^ +||track.education.intostudy.com^ +||track.estoneworks.com^ +||track.ferrari.com^ +||track.ferraridealers.com^ +||track.financialfairness.org.uk^ +||track.go.shokubai.co.jp^ +||track.heritagebuildings.com^ +||track.hg.healthgrades.com^ +||track.info.cancertherapyadvisor.com^ +||track.info.clinicaladvisor.com^ +||track.info.clinicalpainadvisor.com^ +||track.info.dermatologyadvisor.com^ +||track.info.empr.com^ +||track.info.endocrinologyadvisor.com^ +||track.info.gastroenterologyadvisor.com^ +||track.info.haymarketmedicalnetwork.com^ +||track.info.hematologyadvisor.com^ +||track.info.infectiousdiseaseadvisor.com^ +||track.info.mcknights.com^ +||track.info.mcknightshomecare.com^ +||track.info.mcknightsseniorliving.com^ +||track.info.medicalbag.com^ +||track.info.mmm-online.com^ +||track.info.neurologyadvisor.com^ +||track.info.oncologynurseadvisor.com^ +||track.info.ophthalmologyadvisor.com^ +||track.info.optometryadvisor.com^ +||track.info.prweekus.com^ +||track.info.psychiatryadvisor.com^ +||track.info.pulmonologyadvisor.com^ +||track.info.rarediseaseadvisor.com^ +||track.info.renalandurologynews.com^ +||track.info.rheumatologyadvisor.com^ +||track.info.thecardiologyadvisor.com^ +||track.inspirage.com^ +||track.into-giving.com^ +||track.intoglobal.com^ +||track.intostudy.com^ +||track.invtrusts.co.uk^ +||track.lesmills.com^ +||track.marketingcube.com.au^ +||track.murray-income.co.uk^ +||track.murray-intl.co.uk^ +||track.newdawn-trust.co.uk^ +||track.northamericanincome.co.uk^ +||track.plygem.com^ +||track.postkodlotteriet.se^ +||track.quad.com^ +||track.simonton.com^ +||track.solutions.ostechnology.co.jp^ +||track.solventum.com^ +||track.workfusion.com^ +||tracker.decomworld.com^ +||tracker.eft.com^ +||tracker.ethicalcorp.com^ +||tracker.eyeforpharma.com^ +||tracker.incite-group.com^ +||tracker.insurancenexus.com^ +||tracker.providence.org^ +||tracker.psjhealth.org^ +||tracker.swedish.org^ +||tracking-explore-uat.agilent.com^ +||tracking-explore.agilent.com^ +||tracking-sandbox.vodafone.co.uk^ +||tracking-uat.veritas.com^ +||tracking.aapa.org^ +||tracking.abraservice.com^ +||tracking.abrdn.com^ +||tracking.academicyear.org^ +||tracking.accent-technologies.com^ +||tracking.acceptance.industrial.omron.eu^ +||tracking.adp-iat.adp.ca^ +||tracking.adp-iat.adp.com^ +||tracking.adp.ca^ +||tracking.adp.com^ +||tracking.adpinfo.com^ +||tracking.adpri.org^ +||tracking.agora.io^ +||tracking.aifsabroad.com^ +||tracking.air-worldwide.com^ +||tracking.almax.com^ +||tracking.almirallmed.es^ +||tracking.alphacard.com^ +||tracking.amadeus.com^ +||tracking.americas.business.samsung.com^ +||tracking.analysis.hibu.com^ +||tracking.apac.business.samsung.com^ +||tracking.arabiancentres.com^ +||tracking.arbor.edu^ +||tracking.arcadis.com^ +||tracking.atea.dk^ +||tracking.atea.fi^ +||tracking.athlon.com^ +||tracking.att.com^ +||tracking.attexperts.com^ +||tracking.attsavings.com^ +||tracking.aupairinamerica.co.uk^ +||tracking.aupairinamerica.co.za^ +||tracking.aupairinamerica.com^ +||tracking.aupairinamerica.fr^ +||tracking.automotivemastermind.com^ +||tracking.averydennison.com^ +||tracking.bankofalbuquerque.com^ +||tracking.bankofoklahoma.com^ +||tracking.bankoftexas.com^ +||tracking.barcodediscount.com^ +||tracking.barcodegiant.com^ +||tracking.barcodesinc.com^ +||tracking.bbgevent.app^ +||tracking.bettingexpert.com^ +||tracking.biz.alabamapower.com^ +||tracking.blackboard.com^ +||tracking.blog.hibu.com^ +||tracking.bnpparibas.fr^ +||tracking.bokf.com^ +||tracking.bokfinancial.com^ +||tracking.bonava.de^ +||tracking.bonava.ee^ +||tracking.bonava.fi^ +||tracking.bonava.lt^ +||tracking.bonava.lv^ +||tracking.bonava.no^ +||tracking.bonava.ru^ +||tracking.bonava.se^ +||tracking.brady.co.uk^ +||tracking.brady.com.tr^ +||tracking.brady.es^ +||tracking.brady.eu^ +||tracking.brady.fr^ +||tracking.brady.pl^ +||tracking.bradycorp.it^ +||tracking.bradyid.com^ +||tracking.brevant.ca^ +||tracking.brgeneral.org^ +||tracking.build.com^ +||tracking.burriswindows.com^ +||tracking.business.comcast.com^ +||tracking.businessdirect.bt.com^ +||tracking.bv.com^ +||tracking.cairn.info^ +||tracking.campaigns.drax.com^ +||tracking.capitalbank.jo^ +||tracking.capterra.com^ +||tracking.care.essentiahealth.org^ +||tracking.care.muschealth.org^ +||tracking.care.salinasvalleyhealth.com^ +||tracking.cello-square.com^ +||tracking.cengage.com^ +||tracking.cenomicenters.com^ +||tracking.changehealthcare.com^ +||tracking.chem-agilent.com^ +||tracking.civica.co.uk^ +||tracking.clarivate.com^ +||tracking.coact.org.au^ +||tracking.cognyte.com^ +||tracking.coldspringusa.com^ +||tracking.compactappliance.com^ +||tracking.connect.nicklauschildrens.org^ +||tracking.connect.nicklaushealth.org^ +||tracking.connect.services.global.ntt^ +||tracking.connectedcare.wkhs.com^ +||tracking.construction.com^ +||tracking.contentmarketing.hibu.com^ +||tracking.continuingstudies.wisc.edu^ +||tracking.corporate.flightcentre.com^ +||tracking.corporatetraveler.us^ +||tracking.corporatetraveller.co.nz^ +||tracking.corporatetraveller.co.za^ +||tracking.corporatetraveller.com.au^ +||tracking.corptraveller.com^ +||tracking.corteva.ca^ +||tracking.corteva.us^ +||tracking.cpa.qa.web.visa.com^ +||tracking.cranepi.com^ +||tracking.creditacceptance.com^ +||tracking.culturalinsurance.com^ +||tracking.dataloen.dk^ +||tracking.dev2.pepsicopartners.com^ +||tracking.dfinsolutions.com^ +||tracking.digitalid.co.uk^ +||tracking.direxion.com^ +||tracking.dr-10.com^ +||tracking.dr-8.com^ +||tracking.drreddys.com^ +||tracking.dshb.biology.uiowa.edu^ +||tracking.dunnhumby.com^ +||tracking.dz.janssenmedicalcloud.me^ +||tracking.edb.gov.sg^ +||tracking.ehrintelligence.com^ +||tracking.eloq.soa.org^ +||tracking.eloqua.homeimprovementleads.com^ +||tracking.eloqua.modernize.com^ +||tracking.email.trinity-health.org^ +||tracking.emoneyadvisor.com^ +||tracking.endnote.com^ +||tracking.enlist.com^ +||tracking.ent.oviahealth.com^ +||tracking.epredia.com^ +||tracking.epsilon.com^ +||tracking.epsilon.postclickmarketing.com^ +||tracking.europe.business.samsung.com^ +||tracking.evanta.com^ +||tracking.events.adp.com^ +||tracking.evergy.com^ +||tracking.exclusive-networks.com^ +||tracking.eyefinity.com^ +||tracking.faucet.com^ +||tracking.faucetdirect.com^ +||tracking.fcmtravel.com^ +||tracking.fdbhealth.co.uk^ +||tracking.fdbhealth.com^ +||tracking.fdm.dk^ +||tracking.flowofwork.adp.com^ +||tracking.flukecal.com^ +||tracking.fr.adp.com^ +||tracking.fticonsulting.com^ +||tracking.ftitechnology.com^ +||tracking.fullsail.edu^ +||tracking.gartner.com^ +||tracking.gelia.com^ +||tracking.getapp.com^ +||tracking.global-demand02.nec.com^ +||tracking.go.atcc.org^ +||tracking.go.epsilon.com^ +||tracking.go.lorainccc.edu^ +||tracking.go.onshape.com^ +||tracking.go.provident.bank^ +||tracking.go.toyobo-mc.jp^ +||tracking.go.toyobo.co.jp^ +||tracking.goal.pl^ +||tracking.graduateschool.edu^ +||tracking.guidehouse.com^ +||tracking.handlesets.com^ +||tracking.hardoxwearparts.com^ +||tracking.hcltech.com^ +||tracking.health.bilh.org^ +||tracking.health.bjc.org^ +||tracking.health.lexmed.com^ +||tracking.health.tmcaz.com^ +||tracking.healthitanalytics.com^ +||tracking.healthitsecurity.com^ +||tracking.healthpayerintelligence.com^ +||tracking.hibu.com^ +||tracking.hiscox.com^ +||tracking.hot.net.il^ +||tracking.houzz.com^ +||tracking.idcardgroup.com^ +||tracking.idsuperstore.com^ +||tracking.idwholesaler.com^ +||tracking.idzone.com^ +||tracking.igloosoftware.com^ +||tracking.inexchange.com^ +||tracking.inexchange.fi^ +||tracking.inexchange.se^ +||tracking.infiniti-dubai.com^ +||tracking.info.ivanti.com^ +||tracking.info.jeffersonhealth.org^ +||tracking.info.methodisthealthsystem.org^ +||tracking.info.rcgt.com^ +||tracking.info.rochesterknighthawks.com^ +||tracking.info.servicenow.com^ +||tracking.info.zetes.com^ +||tracking.innovamarketinsights.com^ +||tracking.insead.edu^ +||tracking.insperity.com^ +||tracking.janssenmed.cz^ +||tracking.janssenmed.ro^ +||tracking.janssenmed.sk^ +||tracking.janssenmedicalcloud.be^ +||tracking.janssenmedicalcloud.ch^ +||tracking.janssenmedicalcloud.com^ +||tracking.janssenmedicalcloud.de^ +||tracking.janssenmedicalcloud.ee^ +||tracking.janssenmedicalcloud.es^ +||tracking.janssenmedicalcloud.eu^ +||tracking.janssenmedicalcloud.fr^ +||tracking.janssenmedicalcloud.gr^ +||tracking.janssenmedicalcloud.hr^ +||tracking.janssenmedicalcloud.ie^ +||tracking.janssenmedicalcloud.it^ +||tracking.janssenmedicalcloud.lt^ +||tracking.janssenmedicalcloud.me^ +||tracking.janssenmedicalcloud.nl^ +||tracking.janssenmedicalcloud.pl^ +||tracking.janssenmedicalcloud.pt^ +||tracking.janssenmedicalcloud.ro^ +||tracking.janssenmedicalcloud.se^ +||tracking.janssenmedicalcloud.sk^ +||tracking.janssenos.com^ +||tracking.kegerator.com^ +||tracking.kenblanchard.com^ +||tracking.kubota.ca^ +||tracking.lailiveevents.com^ +||tracking.laivideo.com^ +||tracking.laurelsprings.com^ +||tracking.leadingauthorities.com^ +||tracking.learn.carlingtech.com^ +||tracking.learn.oakstreethealth.com^ +||tracking.lenovo.com^ +||tracking.lenovopartnernetwork.com^ +||tracking.lfg.com^ +||tracking.lightingdirect.com^ +||tracking.lightingshowplace.com^ +||tracking.lindtusa.com^ +||tracking.link.boone.health^ +||tracking.liwest.at^ +||tracking.lonnogpersonalabc.visma.no^ +||tracking.lseg.com^ +||tracking.luminishealth.org^ +||tracking.ma.janssenmedicalcloud.me^ +||tracking.mail.ti.com.cn^ +||tracking.mail.ti.com^ +||tracking.mail.tij.co.jp^ +||tracking.mandg.co.uk^ +||tracking.marketing.frequentis.com^ +||tracking.marketone.com^ +||tracking.martela.com^ +||tracking.mathworks.com^ +||tracking.matsinc.com^ +||tracking.mattersurfaces.com^ +||tracking.max-stg.co.il^ +||tracking.max.co.il^ +||tracking.medicalcloud.janssen.com.tr^ +||tracking.mediwel.net^ +||tracking.mhealthintelligence.com^ +||tracking.mindshiftonline.com^ +||tracking.mizuhogroup.com^ +||tracking.mjbizconference.com^ +||tracking.mjbizdaily.com^ +||tracking.mkt-email.samsungsds.com^ +||tracking.mobiliteverte.engie.fr^ +||tracking.modelgroup.com^ +||tracking.monespaceprime.engie.fr^ +||tracking.motorolasolutions.com^ +||tracking.mtn.co.za^ +||tracking.mwe.com^ +||tracking.my.hq.com^ +||tracking.myaupairinamerica.com^ +||tracking.myregus.com^ +||tracking.myspacesworks.com^ +||tracking.netsuite.com^ +||tracking.news.evergreenhealth.com^ +||tracking.newyorklifeinvestments.com^ +||tracking.ng.janssenmedicalcloud.me^ +||tracking.nissan-dubai.com^ +||tracking.nl.visma.com^ +||tracking.ntl.no^ +||tracking.ocr.ca^ +||tracking.ohiohealth.com^ +||tracking.oldnational.com^ +||tracking.omron.at^ +||tracking.omron.eu^ +||tracking.omron.fr^ +||tracking.omron.pl^ +||tracking.omron.ro^ +||tracking.omron.se^ +||tracking.online.nl.adp.com^ +||tracking.online.wisc.edu^ +||tracking.opentable.com^ +||tracking.oppd.com^ +||tracking.oswegohealth.org^ +||tracking.outsetmedical.com^ +||tracking.parcelpending.com^ +||tracking.particuliers.engie.fr^ +||tracking.patientengagementhit.com^ +||tracking.pdc.wisc.edu^ +||tracking.peco.com^ +||tracking.pella.com^ +||tracking.pennmedicine.princetonhcs.org^ +||tracking.pepsicopartners.com^ +||tracking.petrelocation.com^ +||tracking.pgi.com^ +||tracking.pioneer.com^ +||tracking.pirelli.com^ +||tracking.plascoid.com^ +||tracking.precisely.com^ +||tracking.precollege.wisc.edu^ +||tracking.pro.engie.fr^ +||tracking.prodesa.com^ +||tracking.prophet.com^ +||tracking.prophix.com^ +||tracking.protective.com^ +||tracking.ps.shutterstock.com^ +||tracking.ptc.com^ +||tracking.pullsdirect.com^ +||tracking.puustelli.com^ +||tracking.puustelli.se^ +||tracking.quadient.com^ +||tracking.questdiagnostics.com^ +||tracking.realestate.bnpparibas^ +||tracking.regus.com^ +||tracking.relationshipone.com^ +||tracking.reply.broadwayinchicago.com^ +||tracking.reply.broadwayinhollywood.com^ +||tracking.reply.dpacnc.com^ +||tracking.response.terex.com^ +||tracking.rinoebastel.com^ +||tracking.risk.lexisnexis.co.jp^ +||tracking.risk.lexisnexis.co.uk^ +||tracking.risk.lexisnexis.com.br^ +||tracking.risk.lexisnexis.com^ +||tracking.rootinc.com^ +||tracking.rti-inc.com^ +||tracking.sabic.com^ +||tracking.sailgp.com^ +||tracking.schneider.com^ +||tracking.sciex.com^ +||tracking.securitymsp.cisco.com^ +||tracking.service.cz.nl^ +||tracking.service.just.nl^ +||tracking.sfitrucks.com^ +||tracking.shl.com^ +||tracking.shop.verymobile.it^ +||tracking.sierrawireless.com^ +||tracking.simpleaccess.com^ +||tracking.singlestore.com^ +||tracking.siriusdecisions.com^ +||tracking.smartbets.com^ +||tracking.smartbusiness.samsung.com^ +||tracking.softwareadvice.com^ +||tracking.solartrade-us.baywa-re.com^ +||tracking.solutions.parker.com^ +||tracking.speltips.se^ +||tracking.ssab.co^ +||tracking.ssab.com.br^ +||tracking.ssab.com.tr^ +||tracking.ssab.com^ +||tracking.ssab.dk^ +||tracking.ssab.es^ +||tracking.ssab.fi^ +||tracking.ssab.fr^ +||tracking.ssab.jp^ +||tracking.ssab.nl^ +||tracking.ssab.pe^ +||tracking.ssab.se^ +||tracking.stageandscreen.travel^ +||tracking.steelprize.com^ +||tracking.stemcell.com^ +||tracking.stericycle.com^ +||tracking.stihl-timbersports.com^ +||tracking.stihl.at^ +||tracking.stihl.be^ +||tracking.stihl.co.za^ +||tracking.stihl.com.au^ +||tracking.stihl.com.cy^ +||tracking.stihl.com^ +||tracking.stihl.de^ +||tracking.stihl.es^ +||tracking.stihl.fr^ +||tracking.stihl.gr^ +||tracking.stihl.hu^ +||tracking.stihl.it^ +||tracking.stihl.lu^ +||tracking.stihl.nl^ +||tracking.stihl.pt^ +||tracking.stihl.ua^ +||tracking.summer.wisc.edu^ +||tracking.syncsketch.com^ +||tracking.syncsort.com^ +||tracking.tdk.com.cn^ +||tracking.tdk.com^ +||tracking.te.com^ +||tracking.test.insead.edu^ +||tracking.theemeraldconference.com^ +||tracking.thermoinfo.com^ +||tracking.thiomucase.es^ +||tracking.thunderhead.com^ +||tracking.ti.com.cn^ +||tracking.ti.com^ +||tracking.tibnor.fi^ +||tracking.tij.co.jp^ +||tracking.trinet.com^ +||tracking.uberflip.com^ +||tracking.uk.adp.com^ +||tracking.umbrella.com^ +||tracking.umms.org^ +||tracking.unisabana.edu.co^ +||tracking.usj.es^ +||tracking.utas.edu.au^ +||tracking.ventingdirect.com^ +||tracking.ventingpipe.com^ +||tracking.venture-net.co.jp^ +||tracking.verisk.com^ +||tracking.veritas.com^ +||tracking.vertiv.com^ +||tracking.vertivco.com^ +||tracking.virginmediao2business.co.uk^ +||tracking.virtus.com^ +||tracking.visitdubai.com^ +||tracking.visma.co.uk^ +||tracking.visma.com^ +||tracking.visma.dk^ +||tracking.visma.fi^ +||tracking.visma.lt^ +||tracking.visma.lv^ +||tracking.visma.net^ +||tracking.visma.nl^ +||tracking.visma.no^ +||tracking.visma.ro^ +||tracking.visma.se^ +||tracking.vismaraet.nl^ +||tracking.vismaspcs.se^ +||tracking.vitalant.org^ +||tracking.vodafone.co.uk^ +||tracking.vodafone.com^ +||tracking.wettfreunde.net^ +||tracking.winecoolerdirect.com^ +||tracking.xmor.info^ +||tracking.y-nmc.jp^ +||tracking.yealink.com^ +||tracking.your.montagehealth.org^ +||tracking.zagranie.com^ +||tracking.zakelijk.cz.nl^ +||tracking1.cigna.com.hk^ +||tracking1.cigna.com^ +||tracking1.cignaglobal.com^ +||tracking1.cignaglobalhealth.com^ +||tracking1.labcorp.com^ +||tracking1.questdiagnostics.com^ +||tracking1.tena.com^ +||tracking2.bokf.com^ +||tracking2.bokfinancial.com^ +||tracking2.cigna.co.id^ +||tracking2.cigna.co.uk^ +||tracking2.cigna.com.tw^ +||tracking2.cignaglobal.com^ +||tracking2.labcorp.com^ +||tracking2.questdiagnostics.com^ +||tracking3.labcorp.com^ +||tracking3.lenovo.com^ +||tracking4.labcorp.com^ +||tracking5.labcorp.com^ +||trackingalumni.accenturealumni.com^ +||trackingcareers.accenture.com^ +||trackingeloqua.tec.mx^ +||trackinginternal.hcltech.com^ +||trackinginternal.ti.com^ +||trackinglrus.wolterskluwer.com^ +||trackingmms.accenture.com^ +||trackmarketing.staubli.com^ +||tracks1.ferrari.com^ +||tracks3.ferrari.com^ +||trackside.redbull.racing^ +||tradeshow.edm.globalsources.com^ +||trail.cleardocs.com^ +||trail.dominiosistemas.com.br^ +||trail.sweetandmaxwell.co.uk^ +||trail.thomsonreuters.ca^ +||trail.thomsonreuters.co.jp^ +||trail.thomsonreuters.co.kr^ +||trail.thomsonreuters.co.nz^ +||trail.thomsonreuters.co.uk^ +||trail.thomsonreuters.com.au^ +||trail.thomsonreuters.com.br^ +||trail.thomsonreuters.com.hk^ +||trail.thomsonreuters.com.my^ +||trail.thomsonreuters.com.sg^ +||trail.thomsonreuters.com^ +||trail.thomsonreuters.in^ +||training.hager.co.uk^ +||training.thunderhead.com^ +||transact.blackboard.com^ +||transplant.care.uhssa.com^ +||transplant.universityhealth.com^ +||trck.accredible.com^ +||trck.asset.malcotools.com^ +||trck.comms.watlow.com^ +||trck.copeland.com^ +||trck.e.atradius.com^ +||trck.el.supremapoker.com.br^ +||trck.employerservices.experian.com^ +||trck.feedback.ignite.gleague.nba.com^ +||trck.forfatterforbundet.no^ +||trck.go.emoneyadvisor.com^ +||trck.go.natera.com^ +||trck.graiman.com^ +||trck.info.fullsaildc3.com^ +||trck.internalnews.dbschenker.com^ +||trck.levata.com^ +||trck.medlem.elogit.no^ +||trck.medtronic.com^ +||trck.my.elca.ch^ +||trck.www4.earlywarning.com^ +||trck.www4.paze.com^ +||trck.www4.zellepay.com^ +||trelleborg.tecs1.com^ +||trk.admmontreal.com^ +||trk.admtoronto.com^ +||trk.advancedmanufacturingeast.com^ +||trk.advancedmanufacturingminneapolis.com^ +||trk.advisory.com^ +||trk.aeroengineconference.com^ +||trk.aeroenginesusa.com^ +||trk.afcom.com^ +||trk.aibusiness.com^ +||trk.airborn.com^ +||trk.aircharterguide.com^ +||trk.airchecklab.com^ +||trk.airdimensions.com^ +||trk.airportdata.com^ +||trk.albinpump.com^ +||trk.ali-cle.org^ +||trk.altis.com.gr^ +||trk.americancityandcounty.com^ +||trk.anthology.com^ +||trk.appliedintelligence.live^ +||trk.arozone.cn^ +||trk.arozone.com^ +||trk.astrasrilanka.com^ +||trk.aviationweek.com^ +||trk.avlr.net^ +||trk.bakewithstork.com^ +||trk.banktech.com^ +||trk.barcoproducts.ca^ +||trk.barcoproducts.com^ +||trk.batterytechonline.com^ +||trk.becel.ca^ +||trk.becel.com.br^ +||trk.becel.com^ +||trk.beefmagazine.com^ +||trk.berger-levrault.com^ +||trk.bertolli.co.uk^ +||trk.biomedboston.com^ +||trk.blueband.com.ec^ +||trk.blueband.com^ +||trk.bona.nl^ +||trk.bonella.com.ec^ +||trk.broomwade.com^ +||trk.brummelandbrown.com^ +||trk.business.westernunion.at^ +||trk.business.westernunion.ca^ +||trk.business.westernunion.ch^ +||trk.business.westernunion.co.nz^ +||trk.business.westernunion.co.uk^ +||trk.business.westernunion.com.au^ +||trk.business.westernunion.com^ +||trk.business.westernunion.de^ +||trk.business.westernunion.fr^ +||trk.business.westernunion.it^ +||trk.business.westernunion.pl^ +||trk.catersource.com^ +||trk.cf.labanquepostale.fr^ +||trk.championairtech.com^ +||trk.championpneumatic.com^ +||trk.channelfutures.com^ +||trk.channelleadershipsummit.com^ +||trk.channelpartnersconference.com^ +||trk.childrensfashionevents.com^ +||trk.citeline.com^ +||trk.compair.com^ +||trk.concisegroup.com^ +||trk.contact.alphabet.com^ +||trk.contact.umpquabank.com^ +||trk.contentmarketinginstitute.com^ +||trk.contentmarketingworld.com^ +||trk.convera.com^ +||trk.coteriefashionevents.com^ +||trk.countrycrock.com^ +||trk.createyournextcustomer.com^ +||trk.cremebonjour.fi^ +||trk.cremebonjour.se^ +||trk.croma.nl^ +||trk.cx.motivcx.com^ +||trk.cz.business.westernunion.com^ +||trk.daimlertruck.com^ +||trk.darkreading.com^ +||trk.datacenterknowledge.com^ +||trk.datacenterworld.com^ +||trk.delma.hu^ +||trk.delma.ro^ +||trk.delphiquest.com^ +||trk.designcon.com^ +||trk.designnews.com^ +||trk.digitaltveurope.com^ +||trk.dosatron.com^ +||trk.drdobbs.com^ +||trk.du-darfst.de^ +||trk.dvsystems.com^ +||trk.e.chooseumpquabank.com^ +||trk.e.mailchimp.com^ +||trk.elmlea.com^ +||trk.elmorietschle.com^ +||trk.elq.mcphersonoil.com^ +||trk.emcowheaton.com^ +||trk.en-cz.business.westernunion.com^ +||trk.en.business.westernunion.at^ +||trk.en.business.westernunion.ch^ +||trk.en.business.westernunion.de^ +||trk.en.business.westernunion.fr^ +||trk.en.business.westernunion.it^ +||trk.en.business.westernunion.pl^ +||trk.encore-can.com^ +||trk.encore-mx.com^ +||trk.encoreglobal.com^ +||trk.engie-homeservices.fr^ +||trk.engineeringwk.com^ +||trk.engineleasingandfinance-europe.com^ +||trk.enjoyplanta.com^ +||trk.enterpriseconnect.com^ +||trk.equifax.com.au^ +||trk.event.eset.com^ +||trk.everestblowers.com^ +||trk.everestvacuum.com^ +||trk.evtechexpo.com^ +||trk.evtechexpo.eu^ +||trk.farmprogress.com^ +||trk.farmprogressshow.com^ +||trk.feedstuffs.com^ +||trk.fieldandmain.com^ +||trk.fieldandmaininsurance.com^ +||trk.findfashionevents.com^ +||trk.fintechfutures.com^ +||trk.flora.com^ +||trk.flora.cz^ +||trk.flora.es^ +||trk.flora.pl^ +||trk.floraplant.at^ +||trk.floraspread.com.au^ +||trk.food-management.com^ +||trk.fr.business.westernunion.ca^ +||trk.fr.business.westernunion.ch^ +||trk.fruitdor.fr^ +||trk.futureelectronics.cn^ +||trk.futureelectronics.com^ +||trk.gamasutra.com^ +||trk.gamedeveloper.com^ +||trk.gardnerdenver.com.cn^ +||trk.gardnerdenver.com^ +||trk.gazpasserelle.engie.fr^ +||trk.gdconf.com^ +||trk.go.ingrammicro.com^ +||trk.go.ingrammicrocloud.com^ +||trk.greenbuildexpo.com^ +||trk.hankisonair.com^ +||trk.hartell.com^ +||trk.haskel.com^ +||trk.hello.navan.com^ +||trk.hibon.com^ +||trk.hoffmanandlamson.com^ +||trk.hppumps.com^ +||trk.huskerharvestdays.com^ +||trk.icantbelieveitsnotbutter.com^ +||trk.imeeventscalendar.com^ +||trk.imengineeringeast.com^ +||trk.imengineeringsouth.com^ +||trk.info.puntonet.ec^ +||trk.info.shutterstock.com^ +||trk.info.verifi.com^ +||trk.info.verticurl.com^ +||trk.informaconnect.com^ +||trk.informaengage.com^ +||trk.informatech.com^ +||trk.informationweek.com^ +||trk.ingersollrand.com^ +||trk.insurancetech.com^ +||trk.interop.com^ +||trk.ir-now.com^ +||trk.irco.com^ +||trk.itprotoday.com^ +||trk.iwceexpo.com^ +||trk.jeffersonhealth.org^ +||trk.jorc.com^ +||trk.kansashealthsystem.com^ +||trk.kirbybuilt.com^ +||trk.laetta.com^ +||trk.lasvegasaces.com^ +||trk.latta.se^ +||trk.lightreading.com^ +||trk.living.chartwell.com^ +||trk.lmipumps.com^ +||trk.lookbook.westernunion.com^ +||trk.mackayshields.com^ +||trk.magicfashionevents.com^ +||trk.mailchimp.com^ +||trk.margarinaiberia.com.mx^ +||trk.maximus-solution.com^ +||trk.md-kinney.com^ +||trk.mddionline.com^ +||trk.mdeawards.com^ +||trk.meetingsnet.com^ +||trk.metronet.com^ +||trk.metronetbusiness.com^ +||trk.microsyringes.com^ +||trk.midamericanenergy.com^ +||trk.milda.se^ +||trk.miltonroy.com^ +||trk.mk.westernunion.com^ +||trk.mktg.nec.com^ +||trk.mppumps.com^ +||trk.mt.business.westernunion.com^ +||trk.mycare.maimo.org^ +||trk.nashpumps.com^ +||trk.nationalhogfarmer.com^ +||trk.ndtco.com^ +||trk.neogen.com^ +||trk.networkcomputing.com^ +||trk.networkxevent.com^ +||trk.news.loyaltycompany.com^ +||trk.nojitter.com^ +||trk.novelis.com^ +||trk.nrn.com^ +||trk.nvenergy.com^ +||trk.oberdorferpumps.com^ +||trk.oma.dk^ +||trk.optum.com^ +||trk.oxywise.com^ +||trk.packagingdigest.com^ +||trk.paragondirect.com^ +||trk.parkitbikeracks.com^ +||trk.peceniejeradost.sk^ +||trk.pecenijeradost.cz^ +||trk.pedrogil.com^ +||trk.picnictables.com^ +||trk.planta.be^ +||trk.planta.pt^ +||trk.plantafin.fr^ +||trk.plasticstoday.com^ +||trk.powderandbulkshow.com^ +||trk.powderandbulksolids.com^ +||trk.powerdms.com^ +||trk.pro-activ.com^ +||trk.projectfashionevents.com^ +||trk.protiviti.com^ +||trk.ptl.irco.com^ +||trk.quantumbusinessnews.com^ +||trk.rama.com.co^ +||trk.rama.com^ +||trk.reach.utep.edu^ +||trk.reavell.com^ +||trk.recetasprimavera.com^ +||trk.restaurant-hospitality.com^ +||trk.riverview.org^ +||trk.robuschi.com^ +||trk.routesonline.com^ +||trk.runtechsystems.com^ +||trk.sais.ch^ +||trk.sana.com.tr^ +||trk.sanella.de^ +||trk.secure.icmi.com^ +||trk.seepex.com^ +||trk.send.waoo.dk^ +||trk.share.healthc2u.com^ +||trk.solo.be^ +||trk.solution.desjardins.com^ +||trk.sourcingatmagic.com^ +||trk.specialevents.com^ +||trk.speedbumpsandhumps.com^ +||trk.spsglobal.com^ +||trk.supermarketnews.com^ +||trk.tbivision.com^ +||trk.telecoms.com^ +||trk.the5gexchange.com^ +||trk.thea.at^ +||trk.theaisummit.com^ +||trk.thebatteryshow.com^ +||trk.thebatteryshow.eu^ +||trk.thebenchfactory.com^ +||trk.themspsummit.com^ +||trk.thinkhdi.com^ +||trk.thomaspumps.com^ +||trk.todocouplings.com^ +||trk.trashcontainers.com^ +||trk.treetopproducts.com^ +||trk.tricontinent.com^ +||trk.tu-auto.com^ +||trk.tulipan.es^ +||trk.tuthillpump.com^ +||trk.ummhealth.org^ +||trk.updates.juilliard.edu^ +||trk.urgentcomm.com^ +||trk.us.vacasa.com^ +||trk.vaqueiro.pt^ +||trk.violife.com^ +||trk.violifefoods.com^ +||trk.violifeprofessional.com^ +||trk.vitam.gr^ +||trk.vodafone.com.tr^ +||trk.wallstreetandtech.com^ +||trk.wardsauto.com^ +||trk.wealthmanagement.com^ +||trk.welchvacuum.com^ +||trk.wellsfargocenterphilly.com^ +||trk.williamspumps.com^ +||trk.yzsystems.com^ +||trk.zeks.com^ +||trk.zinsser-analytic.com^ +||trk01.informaconnect.com^ +||trk01.knect365.com^ +||trk02.knect365.com^ +||trk03.informatech.com^ +||trk03.knect365.com^ +||trk04.informatech.com^ +||trk05.informatech.com^ +||trk09.informa.com^ +||trk2.avalara.com^ +||trkcmi.informaconnect.com^ +||trust.flexpay.io^ +||trust.zebra.com^ +||try.blackboard.com^ +||try.tableau.com^ +||try.tableausoftware.com^ +||tv.totaljobs.com^ +||tw-go.experian.com^ +||u.audi-pureprotection.com^ +||u.fordprotectplans.com^ +||u.landing.ni.com^ +||uat.enterprises.proximus.com^ +||ucaas.avaya.com^ +||uk-business.vodafone.com^ +||uk-mktg.vodafone.com^ +||uk.adpinfo.com^ +||uk.contact.alphabet.com^ +||uk.partner.equifax.co.uk^ +||uk.realestate.bnpparibas^ +||uk.verintsystemsinc.com^ +||uki2.secureforms.mcafee.com^ +||ukri.innovateuk.org^ +||unifiedwfo.verintsystemsinc.com^ +||unsubscribe.datadelivers.com^ +||update.purina.com^ +||update.tcsg.edu^ +||updates.gaylordhotels.com^ +||us-go.experian.com^ +||us-now.experian.com^ +||us.mattamyhomes.com^ +||us.ricoh-usa.com^ +||usingyourcard.americanexpress.co.uk^ +||ussolutions.equifax.com^ +||ut.econnect.utexas.edu^ +||uxplora.davivienda.com^ +||vge-business.vodafone.com^ +||vge-mktg-secure.vodafone.com^ +||vge-mktg.vodafone.com^ +||video.verintsystemsinc.com^ +||videos.adp.ca^ +||videos.personneltoday.com^ +||view.americanbuildings.com^ +||view.aon.com^ +||view.centria.com^ +||view.kirbybuildingsystems.com^ +||view.metlspan.com^ +||view.nucorbuildingsystems.com^ +||vip.german.ni.com^ +||vip.granicus.com^ +||vip.maxtor.com^ +||vision.cbre.com.au^ +||vision.cbresi.com.au^ +||visit.adelaide.edu.au^ +||visit.atea.fi^ +||visit.donateblood.com.au^ +||visit.hypertherm.com^ +||visit.lifeblood.com.au^ +||visit.oakstreethealth.com^ +||visit.tenplay.com.au^ +||visitor.arabiancentres.com^ +||visitor.hotelex.cn^ +||visma.e-conomic.dk^ +||vismaturva.visma.fi^ +||voice.thewealthadvisor.com^ +||vois.vodafone.com^ +||w3.air-worldwide.com^ +||w4.air-worldwide.com^ +||water.tetrapak.com^ +||we.care.oswegohealth.org^ +||wealth.informabi.com^ +||web.akademiai.hu^ +||web.care.eehealth.org^ +||web.care.lcmchealth.org^ +||web.care.mclaren.org^ +||web.care.northoaks.org^ +||web.care.sheppardpratt.org^ +||web.care.uhssa.com^ +||web.care.wakemed.org^ +||web.connect.garnethealth.org^ +||web.destinationretirement.co.uk^ +||web.devry.edu^ +||web.health.childrenswi.org^ +||web.health.hannibalregional.org^ +||web.health.memorialcare.org^ +||web.healthcare.northbay.org^ +||web.healthnews.thechristhospital.com^ +||web.histoire.emailing.bnpparibas^ +||web.houstontexans.com^ +||web.houstontexansluxe.com^ +||web.hubfinancialsolutions.co.uk^ +||web.info.aspirus.org^ +||web.info.mymosaiclifecare.org^ +||web.lsse.net^ +||web.morganfranklin.com^ +||web.northwestern.nm.org^ +||web.nortonrosefulbright.com^ +||web.novogene.com^ +||web.novuna.co.uk^ +||web.novunabusinessfinance.co.uk^ +||web.novunapersonalfinance.co.uk^ +||web.orionpharma.com^ +||web.wearejust.co.uk^ +||web.winzer.com^ +||web2.perkinelmer.com^ +||web3.perkinelmer.com^ +||web8.perkinelmer.com^ +||webcasts.de.ni.com^ +||webcasts.partnermcafee.com^ +||webinar.dnv.com^ +||webinar.intel.com^ +||webinar.ndtco.com^ +||webinars.att.com^ +||webinars.blackboard.com^ +||webinars.cigna.com^ +||webinars.coface.com^ +||webinars.elliemae.com^ +||webinars.monster.com^ +||webinars.oncourselearning.com^ +||webinars.thermofisher.com^ +||webmail.carte-gr.total.fr^ +||webmail.information.maileva.com^ +||website-security.geotrust.com^ +||website-security.rapidssl.com^ +||website-security.thawte.com^ +||website-tracking.smartx.com^ +||webtracking.acams.org^ +||webtracking.aucmed.edu^ +||webtracking.becker.com^ +||webtracking.cuwebinars.com^ +||webtracking.devry.edu^ +||webtracking.medical.rossu.edu^ +||webtracking.moneylaundering.com^ +||webtracking.oncourselearning.com^ +||webtrackingvet.rossu.edu^ +||welcome.ciscopowerofpartnership.com^ +||welcome.coniferhealth.com^ +||welcome.e.chiefs.com^ +||welcome.floridagators.com^ +||welcome.item24.be^ +||welcome.item24.ch^ +||welcome.item24.com^ +||welcome.item24.cz^ +||welcome.item24.de^ +||welcome.item24.es^ +||welcome.item24.fr^ +||welcome.item24.hu^ +||welcome.item24.it^ +||welcome.item24.kr^ +||welcome.item24.mx^ +||welcome.item24.nl^ +||welcome.item24.pl^ +||welcome.item24.pt^ +||welcome.item24.us^ +||welcome.vodafone.com^ +||wellness.palomarhealth.org^ +||whatif.fr.adobe.com^ +||whatif.it.adobe.com^ +||whatif.nl.adobe.com^ +||whitepapers.blackboard.com^ +||whitepapers.rockwellautomation.com^ +||work.construction.com^ +||workforcetrends.advancedtech.com^ +||workplace.ricoh.de^ +||workplace.ricoh.ie^ +||workplace.ricoh.it^ +||workplacesolutions.equifax.com^ +||workplacesolutions.inform.equifax.com^ +||www-103.aig.com^ +||www-103.chartisinsurance.com^ +||www-104.aig.com^ +||www-105.aig.com^ +||www-106.aig.com^ +||www-107.aig.com^ +||www-109.aig.com^ +||www-110.aig.com^ +||www.acpprograms.org^ +||www.activisionnews.com^ +||www.adpinfo.com^ +||www.allergodil.cz^ +||www.allergodil.hu^ +||www.aonunited.com^ +||www.armolipid.com.ru^ +||www.avismarketing.gr^ +||www.cf.labanquepostale.fr^ +||www.chronischepancreatitis.nl^ +||www.comcastbiz.com^ +||www.communications.kra.go.ke^ +||www.completatusdatos.com^ +||www.connect.api.almirall.com^ +||www.connect.johndorys.co.za^ +||www.connect.panarottis.co.za^ +||www.connect.spurcorp.com^ +||www.enterprises.proximus.com^ +||www.epargnez.adp.ca^ +||www.epipenexpiryservice.com^ +||www.ess.tis.co.jp^ +||www.eu.viatrisconnect.com^ +||www.fordprotectplans.com^ +||www.fovissstejavercancun.com^ +||www.gaylordhotelsnews.com^ +||www.get.ukg.com^ +||www.glf.mt.com^ +||www.heatexperience.com^ +||www.infineon-community.com^ +||www.info.dunnhumby.com^ +||www.info.redhat.com^ +||www.infos-experts.adp.com^ +||www.ins-mercadeo.com^ +||www.ins-multiasistencia.com^ +||www.jabalproperties.org^ +||www.kings-email.com^ +||www.learn.dunnhumby.com^ +||www.longterminvestmentsolutions.com^ +||www.lowvolatilitysolutions.com^ +||www.ma-catinfo.com^ +||www.maserati.info^ +||www.mediwebinars.com^ +||www.medtronicsolutions.com^ +||www.mkt.uvg.edu.gt^ +||www.muni360.com^ +||www.mydocusign.com^ +||www.myfiltration.eaton.com^ +||www.mykingsevents.com^ +||www.mykingstickets.com^ +||www.myvehicle.eaton.com^ +||www.nepinplainsight.com^ +||www.newscatalanaoccidente.com^ +||www.newsgrupocatalanaoccidente.com^ +||www.newsplusultra.es^ +||www.on24-webinars.co.uk^ +||www.orionkeraily.fi^ +||www.partnermcafee.com^ +||www.quoteafs.com^ +||www.rdalpha.net^ +||www.registrocofinavit.com^ +||www.registrocumbresallegro.com^ +||www.registroeventosjaver.com^ +||www.registrojardinesdecastalias.com^ +||www.registrovalledelosencinos.com^ +||www.registrovalledesantiago.com^ +||www.registrovillaslapiedad.com^ +||www.retirementadvisorinsights.com^ +||www.safecoprograms.com^ +||www.saugellaviso.it^ +||www.save.adp.ca^ +||www.science.dunnhumby.com^ +||www.scienceaaas.org^ +||www.secondmicrosite.com^ +||www.secure.rc-club.ricoh.co.jp^ +||www.send.hollandcasino.nl^ +||www.service.cz.nl^ +||www.service.hollandcasino.nl^ +||www.service.just.nl^ +||www.solutions.prudential.com^ +||www.sp-newfunds.com^ +||www.subscriptions.nokiasiemensnetworks.com^ +||www.test92.com^ +||www.thalesgroup-events.com^ +||www.tracking.adp.ch^ +||www.tracking.adp.co.uk^ +||www.tracking.alabamapower.com^ +||www.training.graduateschool.edu^ +||www.undiaenlausj.com^ +||www.unrealpain.com^ +||www.us.roche-applied-science.com^ +||www.viatrisneuropathicpain.co.uk^ +||www.whennotsharingiscaring.com^ +||www.yourplanprovisions.com^ +||www.zakelijk.cz.nl^ +||www1.kawasaki-motors.com^ +||www2.carte-gr.total.fr^ +||www2.daikinchemicals.com^ +||www2.edgenuity.com^ +||www2.festo.com^ +||www2.firsttechfed.com^ +||www2.info.renesas.cn^ +||www3.americanprogressaction.org^ +||xvantage.ingrammicro.com^ +||your.maas.ptvgroup.com^ +||your.mapandguide.ptvgroup.com^ +||your.mapandmarket.ptvgroup.com^ +||your.routeoptimiser.ptvgroup.com^ +||your.trafficdata.ptvgroup.com^ +||your.vissim.ptvgroup.com^ +||your.vistro.ptvgroup.com^ +||your.visum.ptvgroup.com^ +||your.xserver.ptvgroup.com^ +||yourporsche.nabooda-auto.com^ +||yourporscheimg.nabooda-auto.com^ +||za-go.experian.com^ +||zakelijke-betalingsoplossingen.americanexpress.nl^ +||zakelijke-oplossingen-nld.americanexpress.nl^ +||zakelijkemarkt.vattenfall.nl^ +||zh-tw.siemensplmevents.com^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_ad-ebis.txt *** +||a9d8e7b6i5s.andgino.jp^ +||aaa.aqualink.tv^ +||aaaa.jawfp2.org^ +||aaaa.nocor.jp^ +||ac-3.mix.tokyo^ +||ac-ebis-otrk.usen.com^ +||ac-ebis-stb.usen.com^ +||ac-ebis-uhome.usen.com^ +||ac-ebis.otoraku.jp^ +||ac-ebis.usen-ad.com^ +||ac-ebis.usen-insurance.com^ +||ac-ebis.usen-pos.com^ +||ac-ebis.usen-service.com^ +||ac-ebis.usen-store.com^ +||ac-ebis.usen.biz^ +||ac.geechs-job.com^ +||ad-ebis.bookpass.auone.jp^ +||ad-ebis.mynavi-job20s.jp^ +||ad-ebis.toysub.jp^ +||ad.320320.net^ +||ad.aim-universe.co.jp^ +||ad.aucfan.com^ +||ad.aucview.com^ +||ad.autorace.jp^ +||ad.ordersuit.info^ +||ad.takasu.co.jp^ +||ad.tempstaff.co.jp^ +||ad.theatre.co.jp^ +||ad.theatreacademy.jp^ +||ad1.tone.ne.jp^ +||adbq.bk.mufg.jp^ +||ade.deskstyle.info^ +||ade.hirose-fx.co.jp^ +||ade.jfx.co.jp^ +||adebis-52667624.wowma.jp^ +||adebis-bkan.vbest.jp^ +||adebis-cname.jobmall.jp^ +||adebis-dojyo.dojyo.jp^ +||adebis-morijuku.morijuku.com^ +||adebis-rikon.vbest.jp^ +||adebis-saimu.vbest.jp^ +||adebis.464981.com^ +||adebis.afc-shop.com^ +||adebis.ahjikan-shop.com^ +||adebis.aij.co.jp^ +||adebis.angfa-store.jp^ +||adebis.bathclin.jp^ +||adebis.bbb-life.jp^ +||adebis.chojyu.com^ +||adebis.crowdcredit.jp^ +||adebis.daiwahouse.co.jp^ +||adebis.demae-can.com^ +||adebis.e-ohaka.com^ +||adebis.entetsu.co.jp^ +||adebis.ferret-one.com^ +||adebis.furisode-ichikura.jp^ +||adebis.gfs-official.com^ +||adebis.gfs.tokyo^ +||adebis.gogin.co.jp^ +||adebis.harutaka.jp^ +||adebis.hotstaff.co.jp^ +||adebis.jp.iface.com^ +||adebis.juku.st^ +||adebis.kamada.co.jp^ +||adebis.kaonavi.jp^ +||adebis.kirei-journal.jp^ +||adebis.kirin.co.jp^ +||adebis.kodomohamigaki.com^ +||adebis.kose.co.jp^ +||adebis.koutsujiko.jp^ +||adebis.leben-establish.jp^ +||adebis.leben-style.jp^ +||adebis.lifestylemag.jp^ +||adebis.livable.co.jp^ +||adebis.logoshome.jp^ +||adebis.mizunomori.com^ +||adebis.muscledeli.jp^ +||adebis.no.01.alo-organic.com^ +||adebis.nursery.co.jp^ +||adebis.o-baby.net^ +||adebis.pikaichi.co.jp^ +||adebis.qeee.jp^ +||adebis.real-style.co.jp^ +||adebis.report.clinic^ +||adebis.reruju.com^ +||adebis.rishiria-furel.com^ +||adebis.s-toushi.jp^ +||adebis.saison-pocket.com^ +||adebis.satori.marketing^ +||adebis.sbishinseibank.co.jp^ +||adebis.sbpayment.jp^ +||adebis.shinseibank.com^ +||adebis.shiseido.co.jp^ +||adebis.shopserve.jp^ +||adebis.sokamocka.com^ +||adebis.thd-web.jp^ +||adebis.theclinic.jp^ +||adebis.tipness.co.jp^ +||adebis.tohshin.co.jp^ +||adebis.toitoitoi.clinic^ +||adebis.tokyuhotels.co.jp^ +||adebis.toushi-up.com^ +||adebis.tspot.co.jp^ +||adebis.urban-research.jp^ +||adebis.zenyaku-hbshop.com^ +||adebis01.job-con.jp^ +||adebis02.juku.st^ +||adebis0508.brain-sleep.com^ +||adebis1.1rnavi.com^ +||adebis8628.matsui.co.jp^ +||adebiscname.au-sonpo.co.jp^ +||adebiscname.auone.jp^ +||adebiscname.sumirin-ht.co.jp^ +||adebisu.wowow.co.jp^ +||adex.kintetsu-re.co.jp^ +||adex.naruko333.jp^ +||adex.predear.com^ +||admeasure.hh-online.jp^ +||adnl.bk.mufg.jp^ +||adpromo.peppynet.com^ +||adtrack.alchemy-web.jp^ +||adtrack.loracle.jp^ +||adtrack.maisonlexia.com^ +||aesus.so-net.ne.jp^ +||analyse.hinemos.info^ +||axjfkc.kobayashi.co.jp^ +||bbbb.goace.jp^ +||beeline.beeline-tire.co.jp^ +||campaign-direct.eisai.jp^ +||campaign-direct.ketsuatsu-taisaku.xyz^ +||campaign-direct.kouketsuatsu-health.xyz^ +||ccc.aqualink.tokyo^ +||cmass.massmedian.co.jp^ +||cname-ade.gom-in.com^ +||cname-ade.hankoya.com^ +||cname-ade.original-calendar.com^ +||cname-ade.shachihata.biz^ +||cname-adebis.nice2meet.us^ +||cname-adebis.vcube.com^ +||cname.crank-in.net^ +||cname.ebis.folio-sec.com^ +||cname.finess.jp^ +||cname.gladis.jp^ +||cname.jaic-college.jp^ +||cname.jf-d.jp^ +||cname.kyusai.co.jp^ +||cname.lions-mansion.jp^ +||cname.mebiusseiyaku.co.jp^ +||cname.mitsuihome.co.jp^ +||cname.nikkei-cnbc.co.jp^ +||cname1.shakenkan.co.jp^ +||cname2.shaken-yoyaku.com^ +||cnameebis.eizoshigoto.com^ +||cnameebis.usagi-online.com^ +||cnameforitp.dermed.jp^ +||cnebis.chocola.com^ +||cnebis.eisai.jp^ +||cnebis.i-no-science.com^ +||corporate.frontierconsul.net^ +||cs0010sbeda.theory-clinic.com^ +||cs1470sbeda.schoolasp.com^ +||cs1863sbeda.glaucoma-arrest.net^ +||cs2113sbeda.hokto-onlineshop.jp^ +||cvs.kireimo.jp^ +||d-kint.d-kintetsu.co.jp^ +||digital.anicom-sompo.co.jp^ +||eb.bewithyou.jp^ +||eb.o-b-labo.com^ +||ebis-cname.mirai-japan.co.jp^ +||ebis-tracking.hirakata-skin-clinic.com^ +||ebis-tracking.okinawa-keisei.com^ +||ebis-tracking.shinyokohama-beauty.com^ +||ebis-tracking.tcb-beauty.net^ +||ebis-tracking.tcb-fukushima.com^ +||ebis-tracking.tcb-mito.com^ +||ebis-tracking.tcb-recruit.com^ +||ebis-tracking.tcb-setagaya.com^ +||ebis.15jikai.com^ +||ebis.2jikaikun.com^ +||ebis.aibashiro.jp^ +||ebis.apo-mjob.com^ +||ebis.as-1.co.jp^ +||ebis.ayura.co.jp^ +||ebis.bbo.co.jp^ +||ebis.belta.co.jp^ +||ebis.biyo-job.com^ +||ebis.bulk.co.jp^ +||ebis.care-tensyoku.com^ +||ebis.ce-parfait.com^ +||ebis.coyori.com^ +||ebis.cp.claudia.co.jp^ +||ebis.delis.co.jp^ +||ebis.eiyoushi-tensyoku.com^ +||ebis.forcas.com^ +||ebis.funai-finance.com^ +||ebis.funaisoken.co.jp^ +||ebis.glico-direct.jp^ +||ebis.gokusen-ichiba.com^ +||ebis.goldcrest.co.jp^ +||ebis.housekeeping.or.jp^ +||ebis.j-l-m.co.jp^ +||ebis.jinzai-business.com^ +||ebis.jobcan.jp^ +||ebis.jobcan.ne.jp^ +||ebis.jojoble.jp^ +||ebis.jukkou.com^ +||ebis.kan54.jp^ +||ebis.kimonoichiba.com^ +||ebis.kubara.jp^ +||ebis.lululun.com^ +||ebis.macchialabel.com^ +||ebis.makeshop.jp^ +||ebis.mucuna.co.jp^ +||ebis.n-pri.jp^ +||ebis.nomu-silica.jp^ +||ebis.okasan-online.co.jp^ +||ebis.onamae.com^ +||ebis.palclair.jp^ +||ebis.pasonatech.co.jp^ +||ebis.rabo.cat^ +||ebis.radish-pocket.com^ +||ebis.radishbo-ya.co.jp^ +||ebis.randstad.co.jp^ +||ebis.re-shop.jp^ +||ebis.rozetta.jp^ +||ebis.s-bisco.jp^ +||ebis.samurai271.com^ +||ebis.sbismile.co.jp^ +||ebis.seibu-k.co.jp^ +||ebis.sekisuihouse.co.jp^ +||ebis.sekisuihouse.com^ +||ebis.shabon.com^ +||ebis.smakon.jp^ +||ebis.studio-alice.co.jp^ +||ebis.studioindi.jp^ +||ebis.sunstar-shop.jp^ +||ebis.tokado.jp^ +||ebis.touhan-navi.com^ +||ebis.treasurenet.jp^ +||ebis.umulin-lab.com^ +||ebis.yumeyakata.com^ +||ebis01.vernal.co.jp^ +||ebis01.zkai.co.jp^ +||ebis2020.hoiku-job.net^ +||ebis202001.joyfit.jp^ +||ebisanalysis.mouse-jp.co.jp^ +||ebiscname.clark.ed.jp^ +||ebiscname.english-native.net^ +||ebiscname.infofactory.jp^ +||ebiscname.j-esthe-yoyaku.com^ +||ebiscname.j-esthe.com^ +||ebiscname.native-phrase.com^ +||ebiscname.urr.jp^ +||ebiscosme.tamagokichi.com^ +||ebisfracora.fracora.com^ +||ebisstore.tamagokichi.com^ +||ebistoppan1.kyowahakko-bio-campaign-1.com^ +||emc.dr-stick.shop^ +||frontierconsul02.tsunagaru-office.com^ +||greenjapan-cname.green-japan.com^ +||hokkaidobank.rapi.jp^ +||isebis.takamiclinic.or.jp^ +||isebis.yutoriform.com^ +||itp.phoebebeautyup.com^ +||itpebis03.recella3d.com^ +||marketing.biz.mynavi.jp^ +||marketing.zwei.com^ +||matsubun.matsubun.com^ +||maz.zba.jp^ +||mcad.mods-clinic.com^ +||mcad.mods-clinic.info^ +||mdm.hibinobi-mandom.jp^ +||media.geinoschool-hikaku.net^ +||mgn.ebis.xn--olsz5f0ufw02b.net^ +||msr.p-antiaging.com^ +||ncc.nip-col.jp^ +||nlp-japan.life-and-mind.com^ +||p5mcwdbu.ginzo-buy.jp^ +||partner.haru-shop.jp^ +||sem.tkc-biyou.jp^ +||seo.tkc110.jp^ +||sep02.hinagiku-life.jp^ +||sinceregarden.sincere-garden.jp^ +||test-ad.lucia-c.com^ +||test-ad.mens-lucia.com^ +||tracking.mysurance.co.jp^ +||tracking.nokai.jp^ +||tracking.wao-corp.com^ +||tracking.wao.ne.jp^ +||ureruadebis.papawash.com^ +||urerucname.manara.jp^ +||ureruebis.nintama.co.jp^ +||urr.kumamoto-food.com^ +||www-ebis.384.co.jp^ +||www2.hnavi.co.jp^ +||y8hxgv9m.kobetsu.co.jp^ +||z89yxner8h.datsumou-beauty-times.com^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_eulerian.txt *** +||0sbm.consobaby.co.uk^ +||16ao.mathon.fr^ +||1ctc.sfr.fr^ +||2efj.economies.cheque-dejeuner.com^ +||2efj.up.coop^ +||3esm.consubebe.es^ +||5fm.985fm.ca^ +||66jo.societegenerale.fr^ +||6pal.consobaby.com^ +||6swu.cpa-france.org^ +||7lbd4.armandthiery.fr^ +||7mx.eider.com^ +||7mx.eidershop.com^ +||8ezc.sfr.fr^ +||a.audi.fr^ +||a.audifrance.fr^ +||a.oney.es^ +||a.parfumsclub.de^ +||a.perfumesclub.co.uk^ +||a.perfumesclub.com^ +||a.perfumesclub.fr^ +||a.perfumesclub.it^ +||a.perfumesclub.nl^ +||a.perfumesclub.pl^ +||a.perfumesclub.pt^ +||a.weareknitters.co.uk^ +||a.weareknitters.com^ +||a.weareknitters.de^ +||a.weareknitters.dk^ +||a.weareknitters.es^ +||a.weareknitters.fr^ +||a.weareknitters.nl^ +||a.weareknitters.no^ +||a.weareknitters.pl^ +||a.weareknitters.se^ +||a7e.monnierfreres.de^ +||a8ht.hipp.fr^ +||ab.oney.es^ +||ab.perfumesclub.com^ +||ali8.alinea.fr^ +||alp1.drimki.fr^ +||am.belambra.co.uk^ +||am.belambra.com^ +||anz7.allianz-voyage.fr^ +||aod4.societegenerale.fr^ +||ar.allrun.fr^ +||ar.i-run.fr^ +||azg1.emalu-store.com^ +||b1n.carabins.umontreal.ca^ +||bch8.destinia.co^ +||bdj5.terrassesmontecarlosbm.com^ +||bft5.destinia.fr^ +||bja2.destinia.cz^ +||bk.brookeo.fr^ +||blog.tagcentral.fr^ +||bn.voyage-prive.com^ +||bpe2.destinia.co.il^ +||bum7.bymycar.fr^ +||bwj4.hrhibiza.com^ +||c0i.ckoi.com^ +||c0p.cepsum.umontreal.ca^ +||c4dv.copinesdevoyage.com^ +||ca.clubavantages.net^ +||cbl6.destinia.gt^ +||cc.conforama.es^ +||cc.conforama.pt^ +||cf.campagnes-france.com^ +||ch.credithypo.com^ +||ch0p.darty.com^ +||cls7.theushuaiaexperience.com^ +||cpgo.avatacar.com^ +||cse3.chausport.com^ +||csm.magnetintell.com^ +||csv4.ebs-paris.fr^ +||ct5m.citadium.com^ +||ctp1.bforbank.com^ +||cvi6.destinia.qa^ +||cyf9.destinia.cl^ +||d2u.dauphinquebec.com^ +||dbj.quebecregion.com^ +||deut1.fdj.fr^ +||deut2.fdj.fr^ +||deut3.fdj.fr^ +||dko.vente-unique.nl^ +||dqs3.darjeeling.fr^ +||dsfe19.madeindesign.com^ +||dv59b.montecarlomeeting.com^ +||dw0c.sfr.fr^ +||dw7u.hotelsbarriere.com^ +||dxe2.heip.fr^ +||ea.armandthiery.fr^ +||ea.assuronline.com^ +||ea.auchantelecom.fr^ +||ea.audika.com^ +||ea.auvergne-direct.fr^ +||ea.bcassurance.fr^ +||ea.camping-and-co.com^ +||ea.carrefour.com^ +||ea.carrefour.fr^ +||ea.castorama.fr^ +||ea.catimini-boutique.com^ +||ea.catimini.com^ +||ea.ciblo.net^ +||ea.coffrefortplus.com^ +||ea.dcshoes-europe.com^ +||ea.devred.com^ +||ea.diamant-unique.com^ +||ea.easyvoyage.com^ +||ea.ecotour.com^ +||ea.elstarprevention.com^ +||ea.evaway.com^ +||ea.fleurancenature.com^ +||ea.fleurancenature.fr^ +||ea.francoisesaget.com^ +||ea.franziskasager.de^ +||ea.greenweez.com^ +||ea.greenweez.de^ +||ea.greenweez.es^ +||ea.greenweez.eu^ +||ea.habitat.de^ +||ea.habitat.fr^ +||ea.handsenderplus.com^ +||ea.histoiredor.com^ +||ea.hofmann.es^ +||ea.hofmann.pt^ +||ea.igraal.com^ +||ea.kauf-unique.at^ +||ea.kauf-unique.de^ +||ea.kidiliz.com^ +||ea.labelhabitation.com^ +||ea.lafrancedunordausud.fr^ +||ea.laredoute.pt^ +||ea.leskidunordausud.fr^ +||ea.lespagnedunordausud.fr^ +||ea.megustaescribir.com^ +||ea.megustaleer.com.pe^ +||ea.millet-mountain.ch^ +||ea.millet-mountain.com^ +||ea.millet-mountain.de^ +||ea.millet.fr^ +||ea.mistergatesdirect.com^ +||ea.mnt.fr^ +||ea.mondial-assistance.fr^ +||ea.mydailyhotel.com^ +||ea.mywarner.warnerbros.fr^ +||ea.natiloo.com^ +||ea.netvox-assurances.com^ +||ea.nextseguros.es^ +||ea.nomade-aventure.com^ +||ea.odalys-vacances.com^ +||ea.odalys-vacation-rental.com^ +||ea.onestep-boutique.com^ +||ea.online.carrefour.fr^ +||ea.peugeot-assurance.fr^ +||ea.placedestendances.com^ +||ea.poeleaboismaison.com^ +||ea.promovacances.com^ +||ea.quiksilver.eu^ +||ea.radiateurplus.com^ +||ea.rentacar.fr^ +||ea.reunica.com^ +||ea.roxy.eu^ +||ea.sadyr.es^ +||ea.smallable.com^ +||ea.sport2000.fr^ +||ea.telecommandeonline.com^ +||ea.tool-fitness.com^ +||ea.topsante.com^ +||ea.venta-del-diablo.com^ +||ea.venta-unica.com^ +||ea.vente-unique.be^ +||ea.vente-unique.ch^ +||ea.vente-unique.com^ +||ea.vente-unique.lu^ +||ea.vivus.es^ +||ea.voyage-prive.co.uk^ +||ea.voyage-prive.es^ +||ea.voyage-prive.it^ +||ea.warnerbros.fr^ +||eat9.thebeat925.ca^ +||ebc1.capifrance.fr^ +||ef.futuroscope.com^ +||ef.futuroscope.mobi^ +||eit3.destinia.nl^ +||ek8.voyage-prive.com^ +||elr.sfr.fr^ +||erb.tremblant.ca^ +||ert5.rmcsport.tv^ +||et.sncf.com^ +||eule1.pmu.fr^ +||eule3.pmu.fr^ +||eule4.pmu.fr^ +||eule5.pmu.fr^ +||euler.pmu.fr^ +||eulerian.alinea.fr^ +||eulerian.astro-way.com^ +||eulerian.belambra.be^ +||eulerian.belambra.fr^ +||eulerian.canal-plus.com^ +||eulerian.eidershop.com^ +||eulerian.eveiletjeux.com^ +||eulerian.look-voyages.fr^ +||eulerian.maison-facile.com^ +||eulerian.malakoffmederic.com^ +||eulerian.mathon.fr^ +||eulerian.monoprix.fr^ +||eulerian.netbooster.com^ +||eulerian.officiel-des-vacances.com^ +||eulerian.oxybul.com^ +||eulerian.sarenza.com^ +||eulerian.siandso.com^ +||eulerian.structube.com^ +||eulerian.telechargement.fr^ +||eulerian.tgv-europe.be^ +||eulerian.tgv-europe.com^ +||eulerian.tgv-europe.es^ +||eulerian.tgv-europe.it^ +||eulerian.tgv-europe.lu^ +||eulerian.tgv-europe.nl^ +||eulerian.thalasseo.com^ +||eulerian.voyage-prive.com^ +||eultech.fnac.com^ +||exd4.destinia.com.au^ +||f0nn.oney.fr^ +||f2.voyage-prive.com^ +||fal2.carrefour-banque.fr^ +||fbu8.hoteldeparismontecarlo.com^ +||fbu8.hotelhermitagemontecarlo.com^ +||fbu8.monte-carlo-beach.com^ +||fbu8.montecarlobay.com^ +||fbu8.montecarloluxuryhotels.com^ +||fbu8.montecarlosbm.com^ +||fbu8.montecarloseasonalsale.com^ +||fbu8.ticket-online.montecarlolive.com^ +||fkwc.sfr.fr^ +||fl5dpe.oui.sncf^ +||fma7.aegon.es^ +||fpb8.esce.fr^ +||fsz1.francoisesaget.com^ +||fsz1.franziskasager.de^ +||fzb5.laboratoire-giphar.fr^ +||fze8.carrefour-banque.fr^ +||fzu4.bysidecar.com^ +||g1be.swisslife-direct.fr^ +||gdm1.toner.fr^ +||gf7t.cheques-cadeaux-culturels.fr^ +||gfn1.ugap.fr^ +||gfv4.destinia.co.za^ +||gi7a.structube.com^ +||gif1.gifi.fr^ +||gli9.inseec-bs.com^ +||gnh2.destinia.lv^ +||gsg9.carrefour-banque.fr^ +||guq9.vente-unique.it^ +||gwtc.sfr.fr^ +||h00c.sfr.fr^ +||hbo5.concours-pass.com^ +||hby7.destinia.it^ +||hde1.repentignychevrolet.com^ +||hgf4.zanzicar.fr^ +||hkj8.evobanco.com^ +||idg1.idgarages.com^ +||igc0.destinia.at^ +||inv3te.oui.sncf^ +||iro.iperceptions.com^ +||irs.iperceptions.com^ +||j2i0.mathon.fr^ +||jcr3.onlyyouhotels.com^ +||jelr1.dili.fr^ +||jfo0.societegenerale.fr^ +||jfp6.destinia.de^ +||jg0c.sfr.fr^ +||jhm3.ifgexecutive.com^ +||jln3.cl-brands.com^ +||jln3.clstudios.com^ +||jn23.madeindesign.ch^ +||jn23.madeindesign.it^ +||jo2f.cheque-cadhoc.fr^ +||ju23.madeindesign.co.uk^ +||jun23.madeindesign.de^ +||jxy6.evobanco.es^ +||kep6.destinia.ie^ +||kvt5.blesscollectionhotels.com^ +||kwsjy9.oui.sncf^ +||lbc.lesbonscommerces.fr^ +||leo1.leon-de-bruxelles.fr^ +||let1.devialet.com^ +||lio8.destinia.com.pa^ +||ljb0.assuronline.com^ +||lp.to-lipton.com^ +||lrp7.carrefour-banque.fr^ +||lsv5.belambra.fr^ +||ltm6.destinia.se^ +||lwh1.carrefour-banque.fr^ +||ly8c.caci-online.fr^ +||lzuc.sfr.fr^ +||m3ds.subarumetropolitain.com^ +||mfd.myfirstdressing.com^ +||mgt7.madeindesign.it^ +||mi.miliboo.be^ +||mi.miliboo.ch^ +||mi.miliboo.co.uk^ +||mi.miliboo.com^ +||mi.miliboo.de^ +||mi.miliboo.es^ +||mi.miliboo.it^ +||mi.miliboo.lu^ +||mla3.societegenerale.fr^ +||mm.melia.com^ +||mmz3.beinsports.com^ +||mre6.destinia.ma^ +||msz3.destinia.cn^ +||mud4.destinia.com.eg^ +||mva1.maeva.com^ +||mwf7.montecarlowellness.com^ +||ncx2.voyage-prive.it^ +||net1.netski.com^ +||netc.sfr.fr^ +||ni8.lafuma-boutique.com^ +||ni8.lafuma.com^ +||nlf6.vente-unique.pl^ +||nmo1.orpi.com^ +||nmu3.destinia.be^ +||noa0.compteczam.fr^ +||nrg.red-by-sfr.fr^ +||nym5c.bonlook.com^ +||nym5c.laura.ca^ +||nyt1.biosens-leanature.fr^ +||o68c.sfr.fr^ +||oae6.carrefour-banque.fr^ +||oal2.destinia.co.uk^ +||oek7.april-moto.com^ +||ogb2.biopur-leanature.fr^ +||ogb2.biovie.com^ +||ogb2.eauthermalejonzac.com^ +||ogb2.jardinbio.fr^ +||ogb2.leanatureboutique.com^ +||ogb2.natessance.com^ +||ogb2.sobio-etic.com^ +||oit4.destinia.com.br^ +||oj2q8.montecarlosbm.book-secure.com^ +||ojm4.palladiumhotelgroup.com^ +||one2.onestep.fr^ +||oo.ooshop.com^ +||oph7o.montecarlosbm-corporate.com^ +||opim.pixmania.com^ +||opo4.assuronline.com^ +||oqr4.destinia.in^ +||ouk7.grantalexander.com^ +||p.pmu.fr^ +||pbox.no.photobox.com^ +||pbox.photobox.at^ +||pbox.photobox.be^ +||pbox.photobox.co.nz^ +||pbox.photobox.co.uk^ +||pbox.photobox.com.au^ +||pbox.photobox.de^ +||pbox.photobox.dk^ +||pbox.photobox.fr^ +||pbox.photobox.ie^ +||pbox.photobox.it^ +||pbox.photobox.nl^ +||pbox.photobox.se^ +||pcnphysio-com.ca-eulerian.net^ +||pgt1.voyage-prive.es^ +||piq4.inseec.education^ +||pjh7.us.chantelle.com^ +||pk1u.melanielyne.com^ +||pkc5.hardrockhoteltenerife.com^ +||pm.pmu.fr^ +||po.ponant.com^ +||pol3.cheque-domicile.fr^ +||pp.promocionesfarma.com^ +||ppp7.destinia.kr^ +||pqn7.cheque-dejeuner.fr^ +||prx6.destinia.ch^ +||ps.pmu.fr^ +||pu.pretunique.fr^ +||pv.partenaires-verisure.fr^ +||qal0.destinia.gr^ +||qbl4.ecetech.fr^ +||qjg4.destinia.asia^ +||qpc4.visilab.ch^ +||qpl9.destinia.dk^ +||qtj0.destinia.pl^ +||quk9.destinia.com.ar^ +||qyn6.ofertastelecable.es^ +||qzl8.destinia.fi^ +||qzu5.carrefour-banque.fr^ +||r1ztni.oui.sncf^ +||r4nds.absorba.com^ +||rce.iperceptions.com^ +||rdc.rachatdecredit.net^ +||rh1a.granions.fr^ +||rjg2.destinia.ly^ +||rmp4.destinia.uy^ +||rqz4.supdigital.fr^ +||rup5.destinia.ru^ +||rvz9.destinia.co.ro^ +||ry0.rythmefm.com^ +||s4e8.cascades.com^ +||sa.lesselectionsskoda.fr^ +||sa.skoda.fr^ +||sa.skodasuperb.fr^ +||sby1.madeindesign.de^ +||sd.securitasdirect.fr^ +||sfp7.eco-conscient.com^ +||sis8.premieremoisson.com^ +||six9e.canal.fr^ +||sk0.monnierfreres.eu^ +||ski1.skiset.com^ +||sno1.snowrental.com^ +||snr4.canalplus.com^ +||srm4.destinia.co.no^ +||ssrlot.lotoquebec.com^ +||ssy7.destinia.com.ua^ +||su1.les-suites.ca^ +||t.locasun-vp.fr^ +||t.locasun.co.uk^ +||t.locasun.de^ +||t.locasun.es^ +||t.locasun.fr^ +||t.locasun.it^ +||t.locasun.nl^ +||t.pmu.fr^ +||t.voyages-sncf.com^ +||t0y.toyota.ca^ +||t9h2.ricardocuisine.com^ +||t9k3a.jeanpaulfortin.com^ +||tdf1.easyviaggio.com^ +||tdf1.easyviajar.com^ +||tdf1.easyvols.fr^ +||tdf1.easyvoyage.co.uk^ +||tdf1.easyvoyage.com^ +||tdf1.easyvoyage.de^ +||tdf1.laredoute.fr^ +||tdf1.vente-unique.pt^ +||tdp1.vivabox.es^ +||tds1.vivabox.be^ +||tmy8.madeindesign.ch^ +||tnz3.carrefour-banque.fr^ +||tr.pmu.fr^ +||tsj0.madeindesign.com^ +||txv0.destinia.hu^ +||udr9.livera.nl^ +||ueb4.destinia.tw^ +||ued8.destinia.sg^ +||uhn9.up-france.fr^ +||ujq1.destinia.is^ +||upload.euleriancdn.net^ +||upz1.destinia.lt^ +||uue2.destinia.ir^ +||uwy4.aegon.es^ +||uzd1.madeindesign.com^ +||v.oney.es^ +||v.oui.sncf^ +||vbe.voyage-prive.be^ +||vch.voyage-prive.ch^ +||vde1.voyage-prive.de^ +||vfo.voyage-prive.co.uk^ +||vfo4.carrefour-banque.fr^ +||vgo.vegaoo.com^ +||vgo.vegaoo.pt^ +||vgo.vegaoopro.com^ +||vi.adviso.ca^ +||vnl1.voyage-prive.nl^ +||vpf4.euskaltelofertas.com^ +||vpl.voyage-prive.pl^ +||vqp3.madeindesign.co.uk^ +||vry9.destinia.com^ +||vs.verisure.fr^ +||why3.inseec.education^ +||wlp3.aegon.es^ +||wnd2.destinia.cat^ +||wph2.destinia.us^ +||www.dataholics.tech^ +||www.fasttrack.fr^ +||www.fasttracker.fr^ +||xay5o.toscane-boutique.fr^ +||xjq5.belambra.be^ +||xuc.monteleone.fr^ +||xy33.smallable.com^ +||xya4.groupefsc.com^ +||yf5.voyage-prive.at^ +||yh6u.dealeusedevoyages.com^ +||yoc.younited-credit.com^ +||ysl3.destinia.ec^ +||yst4.muchoviaje.com^ +||yyi7.consobaby.de^ +||zdx5.destinia.pe^ +||zkc5.fleurancenature.fr^ +||zlm2.ecetech.fr^ +||znq9.destinia.mx^ +||zrw1.destinia.jp^ +||zs.voyage-prive.com^ +||zsi7.destinia.do^ +||zum7cc.oui.sncf^ +||zyq2.destinia.sk^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_keyade.txt *** +||click-ext.anxa.com^ +||clk.ubi.com^ +||k.brandalley.be^ +||k.brandalley.co.nl^ +||k.brandalley.de^ +||k.brandalley.es^ +||k.brandalley.fr^ +||k.flynas.com^ +||k.hofmann.es^ +||k.laredoute.com^ +||k.laredoute.es^ +||k.laredoute.pt^ +||k.laredoute.ru^ +||k.laredoute.se^ +||k.truffaut.com^ +||k.voyageursdumonde.be^ +||k.voyageursdumonde.ca^ +||k.voyageursdumonde.ch^ +||k.voyageursdumonde.fr^ +||keyade.alltricks.fr^ +||keyade.ooreka.fr^ +||keyade.uniqlo.com^ +||market-keyade.macif.fr^ +||tck.fr.transavia.com^ +||tck.photobox.com^ +||tck.wonderbox.fr^ +||www.keyade.fr^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_lead-forensics.txt *** +||analytics-hub.3plearning.com^ +||analytics-prod2.glance-internal.inmobi.com^ +||analytics.glance.inmobi.com^ +||capture.norm0care.com^ +||cloud.webtrack.online^ +||data.diagnostics.office.com^ +||f5.track-mv-01.com^ +||mail.semilab.hu^ +||oca.microsoft.com^ +||partners.dudley.gov.uk^ +||secure.1-cl0ud.com^ +||secure.24-astute.com^ +||secure.24-information-acute.com^ +||secure.24-visionaryenterprise.com^ +||secure.365-bright-astute.com^ +||secure.365-visionary-insightful.com^ +||secure.365insightcreative.com^ +||secure.365smartenterprising.com^ +||secure.365syndicate-smart.com^ +||secure.52enterprisingdetails.com^ +||secure.7-companycompany.com^ +||secure.acor1sign.com^ +||secure.agile-company-247.com^ +||secure.agile-company-365.com^ +||secure.agile-enterprise-365.com^ +||secure.agile365enterprise.com^ +||secure.agilebusinessvision.com^ +||secure.agilecompanyintelligence.com^ +||secure.agiledata7.com^ +||secure.aiea6gaza.com^ +||secure.alda1mure.com^ +||secure.alea6badb.com^ +||secure.alga9frog.com^ +||secure.amos5lynn.com^ +||secure.aran9midi.com^ +||secure.arid5glop.com^ +||secure.badb5refl.com^ +||secure.bait4role.com^ +||secure.bali6nora.com^ +||secure.bank8line.com^ +||secure.barn5bake.com^ +||secure.bass2poll.com^ +||secure.benn8bord.com^ +||secure.bike6debt.com^ +||secure.blue2fund.com^ +||secure.boat3deer.com^ +||secure.bolt8snap.com^ +||secure.bred4tula.com^ +||secure.brie5jiff.com^ +||secure.burn5tilt.com^ +||secure.businessintuition247.com^ +||secure.bux1le001.com^ +||secure.cage6west.com^ +||secure.care5alea.com^ +||secure.cart8draw.com^ +||secure.cast9half.com^ +||secure.cavy9soho.com^ +||secure.ches5sort.com^ +||secure.chic9usia.com^ +||secure.chip2gift.com^ +||secure.chop8live.com^ +||secure.cloud-ingenuity.com^ +||secure.clue6load.com^ +||secure.coat0tire.com^ +||secure.coax7nice.com^ +||secure.companyperceptive-365.com^ +||secure.copy9loom.com^ +||secure.coup7cold.com^ +||secure.cuba7tilt.com^ +||secure.curl7bike.com^ +||secure.dana8herb.com^ +||secure.data-creativecompany.com^ +||secure.data-ingenuity.com^ +||secure.data-insight365.com^ +||secure.dawn3host.com^ +||secure.deng3rada.com^ +||secure.dens1raec.com^ +||secure.details24group.com^ +||secure.detailsinventivegroup.com^ +||secure.dial4gwyn.com^ +||secure.diet3dart.com^ +||secure.doll8tune.com^ +||secure.doll9jiva.com^ +||secure.dump4barn.com^ +||secure.east2pony.com^ +||secure.easy0bark.com^ +||secure.emeu0circ.com^ +||secure.enterprise-consortiumoperation.com^ +||secure.enterprise-inspired52.com^ +||secure.enterprise-operation-inspired.com^ +||secure.enterprise7syndicate.com^ +||secure.enterpriseforesight247.com^ +||secure.enterpriseintelligence-24.com^ +||secure.enterprisingconsortium.com^ +||secure.enterprisingoperation-7.com^ +||secure.etym6cero.com^ +||secure.fear7calk.com^ +||secure.feed5baby.com^ +||secure.feed5mown.com^ +||secure.file3size.com^ +||secure.flow8free.com^ +||secure.food9wave.com^ +||secure.frog9alea.com^ +||secure.game9time.com^ +||secure.gard4mass.com^ +||secure.garm9yuma.com^ +||secure.gaza2lote.com^ +||secure.gift2pair.com^ +||secure.give2hill.com^ +||secure.glue1lazy.com^ +||secure.golp4elik.com^ +||secure.grow1maid.com^ +||secure.haag0some.com^ +||secure.haig7anax.com^ +||secure.half1hell.com^ +||secure.hall3hook.com^ +||secure.harm6stop.com^ +||secure.hazy4cant.com^ +||secure.head3high.com^ +||secure.hear8crew.com^ +||secure.heat6have.com^ +||secure.herb2warn.com^ +||secure.herb7calk.com^ +||secure.hero6bell.com^ +||secure.hims1nice.com^ +||secure.hiss3lark.com^ +||secure.hook6vein.com^ +||secure.imaginative-24.com^ +||secure.imaginative-trade7.com^ +||secure.imaginativeenterprising-intelligent.com^ +||secure.informationcreativeinnovative.com^ +||secure.innovation-perceptive52.com^ +||secure.insight-52.com^ +||secure.insightful-cloud-365.com^ +||secure.insightful-cloud-7.com^ +||secure.insightful-company-52.com^ +||secure.insightful-enterprise-247.com^ +||secure.insightful-enterprise-intelligence.com^ +||secure.insightfulbusinesswisdom.com^ +||secure.insightfulcloudintuition.com^ +||secure.insightfulcompanyinsight.com^ +||secure.instinct-52.com^ +||secure.intelligence-enterprise.com^ +||secure.intelligence52.com^ +||secure.intelligent-business-wisdom.com^ +||secure.intelligent-company-365.com^ +||secure.intelligent-company-foresight.com^ +||secure.intelligent-consortium.com^ +||secure.intelligent-data-247.com^ +||secure.intelligentcloudforesight.com^ +||secure.intelligentcompanywisdom.com^ +||secure.intelligentdataintuition.com^ +||secure.intelligentdatawisdom.com^ +||secure.intuition-agile-7.com^ +||secure.intuitionoperation.com^ +||secure.intuitive-intuition.com^ +||secure.inventive52intuitive.com^ +||secure.inventiveinspired7.com^ +||secure.inventiveperception365.com^ +||secure.iron0walk.com^ +||secure.jaup0lake.com^ +||secure.jebb8hurt.com^ +||secure.jody0sora.com^ +||secure.josh7cuba.com^ +||secure.keep0bury.com^ +||secure.keet1liod.com^ +||secure.kick1pore.com^ +||secure.kilo6alga.com^ +||secure.kota3chat.com^ +||secure.kpr2exp21.com^ +||secure.lack4skip.com^ +||secure.lane5down.com^ +||secure.late6year.com^ +||secure.late8chew.com^ +||secure.lave6loki.com^ +||secure.lazy8krti.com^ +||secure.lead5beat.com^ +||secure.left5lock.com^ +||secure.line6agar.com^ +||secure.link5view.com^ +||secure.liod1ours.com^ +||secure.list1holp.com^ +||secure.loki8lave.com^ +||secure.loom3otto.com^ +||secure.lope4refl.com^ +||secure.lote1otto.com^ +||secure.mack7oyes.com^ +||secure.main5poem.com^ +||secure.make6pain.com^ +||secure.mali4blat.com^ +||secure.malm1coax.com^ +||secure.mari4norm.com^ +||secure.marx7loki.com^ +||secure.mass1soma.com^ +||secure.mean8sigh.com^ +||secure.meet3monk.com^ +||secure.mews2ruck.com^ +||secure.mile0tire.com^ +||secure.mill8grip.com^ +||secure.misc1bulk.com^ +||secure.moat4shot.com^ +||secure.mon-com-01.com^ +||secure.mown5gaze.com^ +||secure.navy9gear.com^ +||secure.neck6bake.com^ +||secure.nice3aiea.com^ +||secure.nipe4head.com^ +||secure.node7seat.com^ +||secure.nong3bram.com^ +||secure.nora7nice.com^ +||secure.norm0care.com^ +||secure.nyctrl32.com^ +||secure.oboe3broo.com^ +||secure.office-cloud-52.com^ +||secure.office-information-24.com^ +||secure.office-insightdetails.com^ +||secure.oita4bali.com^ +||secure.otto5loki.com^ +||secure.ours3care.com^ +||secure.page1monk.com^ +||secure.page9awry.com^ +||secure.pair1tune.com^ +||secure.pass8heal.com^ +||secure.path5wall.com^ +||secure.pdxor02.com^ +||secure.peak2poem.com^ +||secure.peep1alea.com^ +||secure.perceptionastute7.com^ +||secure.perceptive-innovation-ingenuity.com^ +||secure.perk0mean.com^ +||secure.plug1luge.com^ +||secure.plug4norm.com^ +||secure.poor5zero.com^ +||secure.pump8walk.com^ +||secure.raab3frog.com^ +||secure.rals4alum.com^ +||secure.rate2self.com^ +||secure.rate8deny.com^ +||secure.rear9axis.com^ +||secure.redd7liod.com^ +||secure.refl3alea.com^ +||secure.rigi9bury.com^ +||secure.rime8lope.com^ +||secure.ripe8book.com^ +||secure.risk8belt.com^ +||secure.roar9beer.com^ +||secure.rock5rice.com^ +||secure.rote8mino.com^ +||secure.ruth8badb.com^ +||secure.ryke4peep.com^ +||secure.said3page.com^ +||secure.sale0home.com^ +||secure.saon6harz.com^ +||secure.scan6show.com^ +||secure.seat6worn.com^ +||secure.sharpinspiration-instinct.com^ +||secure.shoo5woop.com^ +||secure.shrfbdg004.com^ +||secure.silk0palm.com^ +||secure.skye6oner.com^ +||secure.slim2disc.com^ +||secure.smart-business-365.com^ +||secure.smart-business-foresight.com^ +||secure.smart-business-ingenuity.com^ +||secure.smart-business-intuition.com^ +||secure.smart-cloud-intelligence.com^ +||secure.smart-company-365.com^ +||secure.smart-company-vision.com^ +||secure.smart-enterprise-365.com^ +||secure.smart-enterprise-52.com^ +||secure.smart-enterprise-7.com^ +||secure.smart-enterprise-acumen.com^ +||secure.smart24astute.com^ +||secure.smartenterprisewisdom.com^ +||secure.snta0034.com^ +||secure.soil5hear.com^ +||secure.soma9vols.com^ +||secure.sour1bare.com^ +||secure.sour7will.com^ +||secure.spit0stge.com^ +||secure.sugh8yami.com^ +||secure.svr007phz.com^ +||secure.swat8toot.com^ +||secure.tank3pull.com^ +||secure.team8save.com^ +||secure.tent0mown.com^ +||secure.text6film.com^ +||secure.tire1soak.com^ +||secure.tm1-001.com^ +||secure.toll6kerb.com^ +||secure.torn6back.com^ +||secure.toru0vane.com^ +||secure.tray0bury.com^ +||secure.tube6sour.com^ +||secure.tula9mari.com^ +||secure.vane3alga.com^ +||secure.venture-enterprising.com^ +||secure.venture365office.com^ +||secure.vice4beek.com^ +||secure.vick6duty.com^ +||secure.visionary-7-data.com^ +||secure.visionary-business-52.com^ +||secure.visionary-business-ingenuity.com^ +||secure.visionary-company-ingenuity.com^ +||secure.visionary-data-intuition.com^ +||secure.visionary-enterprise-ingenuity.com^ +||secure.visionary-enterprise-wisdom.com^ +||secure.visionary-intuitiveimaginative.com^ +||secure.visionary365enterprise.com^ +||secure.visionarybusiness7.com^ +||secure.visionarybusinessacumen.com^ +||secure.visionarycloudvision.com^ +||secure.visionarycompany52.com^ +||secure.vols7feed.com^ +||secure.wait8hurl.com^ +||secure.wake4tidy.com^ +||secure.want7feed.com^ +||secure.wauk1care.com^ +||secure.weed6tape.com^ +||secure.wild0army.com^ +||secure.wild8prey.com^ +||secure.wine9bond.com^ +||secure.wivo2gaza.com^ +||secure.yama1hove.com^ +||secure.yami8alea.com^ +||secure.yeld9auto.com^ +||secure.yirr5frog.com^ +||segment-api.inrix.com^ +||telemetry-eastus.trafficmanager.inmobi.com^ +||telemetry.sdk.inmobi.com^ +||utm.semilab.hu^ +||utm.shireburn.com^ +||watson.microsoft.com^ +||www.1-cl0ud.com^ +||www.1-creative-1.com^ +||www.100-flannelman.com^ +||www.123-tracker.com^ +||www.143nchrtl3.com^ +||www.1h2h54jkw.com^ +||www.200-rockergod.com^ +||www.200summit.com^ +||www.22-trk-srv.com^ +||www.24-visionaryenterprise.com^ +||www.33-trk-srv.com^ +||www.33infra-strat.com^ +||www.44-trk-srv.com^ +||www.44tele-infra.com^ +||www.52data-venture.com^ +||www.55-trk-srv.com^ +||www.66-trk-srv.com^ +||www.66infra-strat.com^ +||www.7-companycompany.com^ +||www.88infra-strat.com^ +||www.acor1sign.com^ +||www.active-trk7.com^ +||www.adgjl13.com^ +||www.agile-company-247.com^ +||www.agile-company-365.com^ +||www.agile-enterprise-365.com^ +||www.agile365enterprise.com^ +||www.agiledata7.com^ +||www.aiea6gaza.com^ +||www.alda1mure.com^ +||www.alea6badb.com^ +||www.alga9frog.com^ +||www.alnw3nsdi.com^ +||www.alskd34.com^ +||www.altabold1.com^ +||www.amos5lynn.com^ +||www.angorch-cdr7.com^ +||www.ape78cn2.com^ +||www.aqedsw4.com^ +||www.aran9midi.com^ +||www.arid5glop.com^ +||www.asdfg23.com^ +||www.atl-6-ga.com^ +||www.azera-s014.com^ +||www.badb5refl.com^ +||www.bae5tracker.com^ +||www.bait4role.com^ +||www.bali6nora.com^ +||www.bank8line.com^ +||www.bass2poll.com^ +||www.baw5tracker.com^ +||www.bdg001a.com^ +||www.benn8bord.com^ +||www.berg-6-82.com^ +||www.bis-dic15.com^ +||www.blocwhite7.com^ +||www.blue2fund.com^ +||www.blzsnd02.com^ +||www.boat3deer.com^ +||www.bolt8snap.com^ +||www.bosctrl32.com^ +||www.bred4tula.com^ +||www.brie5jiff.com^ +||www.burn5tilt.com^ +||www.business-path-55.com^ +||www.bux1le001.com^ +||www.cable-cen-01.com^ +||www.cage6west.com^ +||www.care5alea.com^ +||www.cart8draw.com^ +||www.cast9half.com^ +||www.cavy9soho.com^ +||www.cben9a9s1.com^ +||www.cdbgmj12.com^ +||www.cdert34.com^ +||www.central-core-7.com^ +||www.centralcore7.com^ +||www.ches5sort.com^ +||www.chic9usia.com^ +||www.chip2gift.com^ +||www.chop8live.com^ +||www.click-to-trace.com^ +||www.cloud-9751.com^ +||www.cloud-exploration.com^ +||www.cloud-ingenuity.com^ +||www.cloud-trail.com^ +||www.cloudpath82.com^ +||www.cloudtracer101.com^ +||www.clue6load.com^ +||www.cnej4912jks.com^ +||www.cnt-tm-1.com^ +||www.cntr-di5.com^ +||www.cntr-di7.com^ +||www.co85264.com^ +||www.coat0tire.com^ +||www.coax7nice.com^ +||www.connct-9.com^ +||www.copy9loom.com^ +||www.core-cen-54.com^ +||www.coup7cold.com^ +||www.crb-frm-71.com^ +||www.create-tracking.com^ +||www.cten10010.com^ +||www.cuba7tilt.com^ +||www.cube-78.com^ +||www.curl7bike.com^ +||www.dakic-ia-300.com^ +||www.dana8herb.com^ +||www.data-ingenuity.com^ +||www.data-insight365.com^ +||www.dawn3host.com^ +||www.dbrtkwaa81.com^ +||www.deng3rada.com^ +||www.dens1raec.com^ +||www.detailsinspiration-data.com^ +||www.dhenr54m.com^ +||www.dial4gwyn.com^ +||www.diet3dart.com^ +||www.direct-aws-a1.com^ +||www.direct-azr-78.com^ +||www.discover-path.com^ +||www.discovertrail.net^ +||www.djkeun1bal.com^ +||www.dkjn1bal2.com^ +||www.doll8tune.com^ +||www.doll9jiva.com^ +||www.domainanalytics.net^ +||www.dtc-330d.com^ +||www.dtc-v6t.com^ +||www.dthvdr9.com^ +||www.dump4barn.com^ +||www.east2pony.com^ +||www.easy0bark.com^ +||www.ed-clr-01.com^ +||www.efvrgb12.com^ +||www.ela-3-tnk.com^ +||www.elite-s001.com^ +||www.emeu0circ.com^ +||www.enterprise-consortiumoperation.com^ +||www.enterpriseforesight247.com^ +||www.enterprisingoperation-7.com^ +||www.etym6cero.com^ +||www.eue21east.com^ +||www.eue27west.com^ +||www.eventcapture03.com^ +||www.eventcapture06.com^ +||www.ever-track-51.com^ +||www.explore-123.com^ +||www.fear7calk.com^ +||www.feed5baby.com^ +||www.feed5mown.com^ +||www.file3size.com^ +||www.final-aws-01.com^ +||www.final-azr-01.com^ +||www.finger-info.net^ +||www.flow8free.com^ +||www.food9wave.com^ +||www.forensics1000.com^ +||www.frog9alea.com^ +||www.game9time.com^ +||www.gard4mass.com^ +||www.garm9yuma.com^ +||www.gaza2lote.com^ +||www.gbl007.com^ +||www.gblwebcen.com^ +||www.gift2pair.com^ +||www.glb12pkgr.com^ +||www.glb21pkgr.com^ +||www.gldsta-02-or.com^ +||www.glue1lazy.com^ +||www.golp4elik.com^ +||www.grow1maid.com^ +||www.gtcslt-di2.com^ +||www.gw100-10.com^ +||www.haag0some.com^ +||www.haig7anax.com^ +||www.half1hell.com^ +||www.hall3hook.com^ +||www.harm6stop.com^ +||www.hazy4cant.com^ +||www.head3high.com^ +||www.hear8crew.com^ +||www.heat6have.com^ +||www.herb2warn.com^ +||www.herb7calk.com^ +||www.hero6bell.com^ +||www.hims1nice.com^ +||www.hiss3lark.com^ +||www.hook6vein.com^ +||www.hrb1tng0.com^ +||www.hunt-leads.com^ +||www.hunter-details.com^ +||www.hvgcfx1.com^ +||www.imaginative-trade7.com^ +||www.inc9lineedge.com^ +||www.incline9edge.com^ +||www.indpcr1.com^ +||www.insightful-company-52.com^ +||www.insightfulbusinesswisdom.com^ +||www.insightfulcompanyinsight.com^ +||www.intelligence-enterprise.com^ +||www.intelligent-company-foresight.com^ +||www.intelligent-data-247.com^ +||www.intelligentcompanywisdom.com^ +||www.intelligentdatawisdom.com^ +||www.intuition-agile-7.com^ +||www.ip-a-box.com^ +||www.ip-route.net^ +||www.iproute66.com^ +||www.iron0walk.com^ +||www.jaup0lake.com^ +||www.jebb8hurt.com^ +||www.jenxsw21lb.com^ +||www.jody0sora.com^ +||www.josh7cuba.com^ +||www.jsnzoe301m.com^ +||www.keet1liod.com^ +||www.kick1pore.com^ +||www.kilo6alga.com^ +||www.kota3chat.com^ +||www.kpr2exp21.com^ +||www.kprbexp21.com^ +||www.ksk-mjto-001.com^ +||www.ksyrium0014.com^ +||www.lack4skip.com^ +||www.laksjd4.com^ +||www.lane5down.com^ +||www.lansrv020.com^ +||www.lansrv030.com^ +||www.lansrv040.com^ +||www.lansrv050.com^ +||www.lansrv060.com^ +||www.lansrv070.com^ +||www.lansrv080.com^ +||www.lansrv090.com^ +||www.late6year.com^ +||www.late8chew.com^ +||www.lave6loki.com^ +||www.lazy8krti.com^ +||www.ldfr-cloud.net^ +||www.lead-123.com^ +||www.lead-analytics-1000.com^ +||www.lead-watcher.com^ +||www.leads.goldenshovel.com^ +||www.ledradn.com^ +||www.left5lock.com^ +||www.letterbox-path.com^ +||www.letterboxtrail.com^ +||www.lforen-cloud-trace.com^ +||www.line6agar.com^ +||www.link5view.com^ +||www.liod1ours.com^ +||www.list1holp.com^ +||www.lmknjb1.com^ +||www.loki8lave.com^ +||www.loom3otto.com^ +||www.lope4refl.com^ +||www.lote1otto.com^ +||www.m1ll1c4n0.com^ +||www.mack7oyes.com^ +||www.main5poem.com^ +||www.make6pain.com^ +||www.mali4blat.com^ +||www.malm1coax.com^ +||www.mari4norm.com^ +||www.marx7loki.com^ +||www.mass1soma.com^ +||www.mavic852.com^ +||www.mbljpu9.com^ +||www.me1294hlx.com^ +||www.mean8sigh.com^ +||www.mediaedge-info.com^ +||www.meet3monk.com^ +||www.mews2ruck.com^ +||www.mialbj6.com^ +||www.mile0tire.com^ +||www.mill8grip.com^ +||www.misc1bulk.com^ +||www.mnbvc34.com^ +||www.moat4shot.com^ +||www.mon-com-01.com^ +||www.mon-com-net.com^ +||www.mown5gaze.com^ +||www.n-core-pipe.com^ +||www.navy9gear.com^ +||www.neck6bake.com^ +||www.network-handle.com^ +||www.nhyund4.com^ +||www.nice3aiea.com^ +||www.nipe4head.com^ +||www.node7seat.com^ +||www.nora7nice.com^ +||www.norm0care.com^ +||www.nw-rail-03.com^ +||www.ny79641.com^ +||www.nyc14ny.com^ +||www.nyctrl32.com^ +||www.oboe3broo.com^ +||www.ofnsv69.com^ +||www.oita4bali.com^ +||www.okc-5190.com^ +||www.okc-5191.com^ +||www.operationintelligence7.com^ +||www.optimum-xyz.com^ +||www.otto5loki.com^ +||www.ours3care.com^ +||www.page1monk.com^ +||www.page9awry.com^ +||www.pair1tune.com^ +||www.pass-1234.com^ +||www.pass8heal.com^ +||www.path-follower.com^ +||www.path-trail.com^ +||www.path5wall.com^ +||www.pdxor02.com^ +||www.peak-ip-54.com^ +||www.peak2poem.com^ +||www.peep1alea.com^ +||www.perk0mean.com^ +||www.pkrchp001.com^ +||www.plokij1.com^ +||www.plug1luge.com^ +||www.plug4norm.com^ +||www.poiuy12.com^ +||www.poor5zero.com^ +||www.poqwo3.com^ +||www.pri12mel.com^ +||www.prt-or-067.com^ +||www.pto-slb-09.com^ +||www.pump8walk.com^ +||www.qetup12.com^ +||www.qlzn6i1l.com^ +||www.qpwoei2.com^ +||www.r45j15.com^ +||www.raab3frog.com^ +||www.rals4alum.com^ +||www.rate2self.com^ +||www.rate8deny.com^ +||www.rdeswa1.com^ +||www.rear9axis.com^ +||www.redd7liod.com^ +||www.refl3alea.com^ +||www.rep0pkgr.com^ +||www.req12pkg.com^ +||www.req12pkgb.com^ +||www.rfr-69.com^ +||www.rigi9bury.com^ +||www.rime8lope.com^ +||www.ripe8book.com^ +||www.risk8belt.com^ +||www.rng-snp-003.com^ +||www.roar9beer.com^ +||www.rock5rice.com^ +||www.rote8mino.com^ +||www.ruth8badb.com^ +||www.ryke4peep.com^ +||www.s3network1.com^ +||www.s5network1.com^ +||www.saas-eue-1.com^ +||www.saas-euw-1.com^ +||www.said3page.com^ +||www.sale0home.com^ +||www.san-spr-01.net^ +||www.saon6harz.com^ +||www.sas15k01.com^ +||www.scan-trail.com^ +||www.scan6show.com^ +||www.sch-alt-91.com^ +||www.sch-crt-91.com^ +||www.se-core-pipe.com^ +||www.sea-nov-1.com^ +||www.seat6worn.com^ +||www.seatac15.com^ +||www.shoo5woop.com^ +||www.shrfbdg004.com^ +||www.skye6oner.com^ +||www.sl-ct5.com^ +||www.slim2disc.com^ +||www.smart-business-365.com^ +||www.smart-business-foresight.com^ +||www.smart-business-intuition.com^ +||www.smart-cloud-intelligence.com^ +||www.smart-company-365.com^ +||www.smart-company365.com^ +||www.smart-enterprise-365.com^ +||www.smart-enterprise-7.com^ +||www.smart-enterprise-acumen.com^ +||www.snta0034.com^ +||www.softtrack08.com^ +||www.soil5hear.com^ +||www.soma9vols.com^ +||www.sour1bare.com^ +||www.sour7will.com^ +||www.spit0stge.com^ +||www.spn-twr-14.com^ +||www.srv00infra.com^ +||www.srv1010elan.com^ +||www.srv2020real.com^ +||www.srvtrkxx1.com^ +||www.srvtrkxx2.com^ +||www.star-cntr-5.com^ +||www.sugh8yami.com^ +||www.svr-prc-01.com^ +||www.svr007phz.com^ +||www.sw-rail-7.com^ +||www.swat8toot.com^ +||www.syntace-094.com^ +||www.tank3pull.com^ +||www.tent0mown.com^ +||www.text6film.com^ +||www.tghbn12.com^ +||www.tgvrfc4.com^ +||www.the-lead-tracker.com^ +||www.tire1soak.com^ +||www.tm1-001.com^ +||www.toll6kerb.com^ +||www.torn6back.com^ +||www.toru0vane.com^ +||www.trace-2000.com^ +||www.track-web.net^ +||www.trackdiscovery.net^ +||www.trackercloud.net^ +||www.trackinvestigate.net^ +||www.trail-route.com^ +||www.trail-viewer.com^ +||www.trail-web.com^ +||www.trailbox.net^ +||www.tray0bury.com^ +||www.trksrv44.com^ +||www.trksrv45.com^ +||www.trksrv46.com^ +||www.tst14netreal.com^ +||www.tst16infra.com^ +||www.tube6sour.com^ +||www.tula9mari.com^ +||www.uhygtf1.com^ +||www.ult-blk-cbl.com^ +||www.vane3alga.com^ +||www.vcentury01.com^ +||www.venture-enterprising.com^ +||www.vice4beek.com^ +||www.vick6duty.com^ +||www.visionary-business-52.com^ +||www.visionary-data-intuition.com^ +||www.visionary-enterprise-ingenuity.com^ +||www.visionary-enterprise-wisdom.com^ +||www.visionary365enterprise.com^ +||www.visionarybusiness7.com^ +||www.visionarybusinessacumen.com^ +||www.visionarycompany52.com^ +||www.vols7feed.com^ +||www.wa52613.com^ +||www.wait8hurl.com^ +||www.want7feed.com^ +||www.wauk1care.com^ +||www.web-01-gbl.com^ +||www.web-cntr-07.com^ +||www.websiteexploration.com^ +||www.weed6tape.com^ +||www.wild0army.com^ +||www.wild8prey.com^ +||www.wivo2gaza.com^ +||www.www-path.com^ +||www.yama1hove.com^ +||www.yami8alea.com^ +||www.ydwsjt-2.com^ +||www.yeld9auto.com^ +||www.yirr5frog.com^ +||www.zcbmn14.com^ +||www.zmxncb5.com^ +||www.zxcvb23.com^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_webtrekk.txt *** +||a.deutschehospitality.com^ +||a.hrewards.com^ +||a.jaz-hotel.com^ +||a.maxxhotel.com^ +||a.zleep.com^ +||abc.bayer04.de^ +||analytics.hermesworld.com^ +||analytics.myhermes.de^ +||app03.ikk-classic.de^ +||cdn7.baunetz.de^ +||census.misterspex.at^ +||census.misterspex.no^ +||count.bank99.at^ +||ctdfm.ilgiornale.it^ +||ctrkd.ilsole24ore.com^ +||da.bodenhaus.de^ +||da.hornbach.at^ +||da.hornbach.be^ +||da.hornbach.ch^ +||da.hornbach.cz^ +||da.hornbach.de^ +||da.hornbach.lu^ +||da.hornbach.nl^ +||da.hornbach.ro^ +||da.hornbach.se^ +||da.hornbach.sk^ +||data.adlermode.com^ +||data.all-in.de^ +||data.allgaeuer-zeitung.de^ +||data.babista.de^ +||data.campaign.prenatal.com^ +||data.campaign.toyscenter.it^ +||data.charles-colby.com^ +||data.engelhorn.com^ +||data.engelhorn.de^ +||data.goertz.de^ +||data.inbank.it^ +||data.janvanderstorm.de^ +||data.kulturkaufhaus.de^ +||data.leipzig.de^ +||data.main-ding.de^ +||data.mainpost.de^ +||data.mapp.com^ +||data.mediaworld.it^ +||data.shirtmaster.com^ +||data.vdi-wissensforum.de^ +||data.volksfreund.de^ +||data.westlotto.de^ +||daten.union-investment.de^ +||def.bayer04.de^ +||di.fotos-fuers-leben.ch^ +||di.ifolor.at^ +||di.ifolor.be^ +||di.ifolor.ch^ +||di.ifolor.com^ +||di.ifolor.de^ +||di.ifolor.dk^ +||di.ifolor.es^ +||di.ifolor.fi^ +||di.ifolor.fr^ +||di.ifolor.ie^ +||di.ifolor.it^ +||di.ifolor.lu^ +||di.ifolor.net^ +||di.ifolor.nl^ +||di.ifolor.se^ +||di.spreadmorelove.ch^ +||ed.emp-online.ch^ +||ed.emp-online.com^ +||ed.emp-online.es^ +||ed.emp-online.fr^ +||ed.emp-online.it^ +||ed.emp-shop.cz^ +||ed.emp-shop.dk^ +||ed.emp-shop.no^ +||ed.emp-shop.pl^ +||ed.emp-shop.se^ +||ed.emp-shop.sk^ +||ed.emp.at^ +||ed.emp.co.uk^ +||ed.emp.de^ +||ed.emp.fi^ +||ed.emp.ie^ +||ed.large.be^ +||ed.large.nl^ +||ed.originalpress.com^ +||eht.endress.com^ +||fiwinet.firmenwissen.com^ +||fiwinet.firmenwissen.de^ +||hbbtv-track.prosieben.de^ +||hbbtv-track.prosiebensat1puls4.com^ +||image.deginvest.de^ +||image.kfw-entwicklungsbank.de^ +||image.kfw-formularsammlung.de^ +||image.kfw-ipex-bank.de^ +||image.kfw.de^ +||images1.test.de^ +||img.buch.ch^ +||img.foodspring.at^ +||img.foodspring.ch^ +||img.foodspring.co.uk^ +||img.foodspring.cz^ +||img.foodspring.de^ +||img.foodspring.dk^ +||img.foodspring.es^ +||img.foodspring.fi^ +||img.foodspring.fr^ +||img.foodspring.hr^ +||img.foodspring.it^ +||img.foodspring.nl^ +||img.foodspring.se^ +||img.sparkasse-koelnbonn.de^ +||info.allango.net^ +||info.deltapublishing.co.uk^ +||info.derdiedaf.com^ +||info.genialklick.ch^ +||info.klett-sprachen.de^ +||intel.web.noleggiare.it^ +||intelligence.officialwesthamstore.com^ +||is.lg.com^ +||joda.corriereadriatico.it^ +||joda.ilgazzettino.it^ +||joda.ilmattino.it^ +||joda.ilmessaggero.it^ +||joda.leggo.it^ +||joda.quotidianodipuglia.it^ +||mapp.ewm.co.uk^ +||mapp.jysk.dk^ +||mapp.jysk.nl^ +||mapp.peacocks.co.uk^ +||mapp.yesstyle.com^ +||mff.messefrankfurt.com^ +||mit.bhw.de^ +||mit.db.com^ +||mit.deutsche-bank.de^ +||mit.deutschebank.be^ +||mit.deutschewealth.com^ +||mit.dslbank.de^ +||mit.dws.com^ +||mit.dws.de^ +||mit.postbank.de^ +||mit.researchlog.db.com^ +||mit.researchlog.dbresearch.com^ +||mit.researchlog.dbresearch.de^ +||mon.ingservices.nl^ +||now.peek-cloppenburg.de^ +||on.dextra.ch^ +||ot.obi-baumarkt.ch^ +||ot.obi-brico.ch^ +||ot.obi-italia.it^ +||ot.obi-ticino.ch^ +||ot.obi.at^ +||ot.obi.ba^ +||ot.obi.ch^ +||ot.obi.com^ +||ot.obi.cz^ +||ot.obi.de^ +||ot.obi.hu^ +||ot.obi.pl^ +||ot.obi.si^ +||ot.obi.sk^ +||pix.airbusgroup.com^ +||pix.eads.com^ +||pix.telekom-dienste.de^ +||pix.telekom.com^ +||pix.telekom.de^ +||pixel.augsburger-allgemeine.de^ +||proditor.sparda.de^ +||prophet.heise-academy.de^ +||prophet.heise.de^ +||scout.alpinetrek.co.uk^ +||scout.alpiniste.fr^ +||scout.berg-freunde.at^ +||scout.berg-freunde.ch^ +||scout.bergfreunde.de^ +||scout.bergfreunde.dk^ +||scout.bergfreunde.es^ +||scout.bergfreunde.eu^ +||scout.bergfreunde.fi^ +||scout.bergfreunde.it^ +||scout.bergfreunde.nl^ +||scout.bergfreunde.no^ +||scout.bergfreunde.se^ +||service.hcob-bank.de^ +||startrekk.flaconi.at^ +||startrekk.flaconi.ch^ +||startrekk.flaconi.de^ +||startrekk.flaconi.fr^ +||startrekk.flaconi.pl^ +||statistics.tuv.com^ +||sub1.cosmosdirekt.de^ +||t.mediaset.it^ +||text.benefitsatwork.be^ +||text.benefitsatwork.ch^ +||text.benefitsatwork.pl^ +||text.benefitsatwork.pt^ +||text.convenzioniaziendali.it^ +||text.mitarbeiterangebote.at^ +||text.mitarbeiterangebote.de^ +||text.rahmenvereinbarungen.de^ +||tippcom01.tipp24.com^ +||tr.computeruniverse.net^ +||tr.suedkurier.de^ +||track.emeza.ch^ +||track.emeza.com^ +||track.kiomi.com^ +||track.yellostrom.de^ +||tracking.eduscho.at^ +||tracking.netcologne.de^ +||tracking.shop.hunter.easynet.de^ +||tracking.tchibo.ch^ +||tracking.tchibo.com.tr^ +||tracking.tchibo.cz^ +||tracking.tchibo.de^ +||tracking.tchibo.hu^ +||tracking.tchibo.pl^ +||tracking.tchibo.sk^ +||trail-001.schleich-s.com^ +||trk.blume2000.de^ +||trk.krebsversicherung.de^ +||trk.nuernberger.com^ +||trk.nuernberger.de^ +||trk.nuernberger.digital^ +||w.ilfattoquotidiano.it^ +||w3.aktionaersbank.de^ +||w3.flatex.es^ +||w3.flatex.nl^ +||w7.berlin.de^ +||wa.planet-wissen.de^ +||wa.quarks.de^ +||wa.wdr.de^ +||wa.wdrmaus.de^ +||waaf.medion.com^ +||waaf1.aldi-gaming.de^ +||waaf1.aldi-music.de^ +||waaf1.aldilife.com^ +||waaf1.aldiphotos.co.uk^ +||waaf1.alditalk.de^ +||waaf1.hoferfotos.at^ +||watg.xxxlutz.com^ +||wbtrkk.deutschlandcard.de^ +||wbtrkk.teufel.ch^ +||wbtrkk.teufel.de^ +||wbtrkk.teufelaudio.at^ +||wbtrkk.teufelaudio.be^ +||wbtrkk.teufelaudio.co.uk^ +||wbtrkk.teufelaudio.com^ +||wbtrkk.teufelaudio.es^ +||wbtrkk.teufelaudio.fr^ +||wbtrkk.teufelaudio.it^ +||wbtrkk.teufelaudio.nl^ +||wbtrkk.teufelaudio.pl^ +||web.autobodytoolmart.com^ +||web.b2bimperialfashion.com^ +||web.b2bpleasefashion.com^ +||web.bankofscotland.de^ +||web.campaign.jaked.com^ +||web.campaign.miriade.com^ +||web.campaign.v73.it^ +||web.capriceshoes.com^ +||web.collisionservices.com^ +||web.communications.amouage.com^ +||web.comunicazioni.iol.it^ +||web.crm.beps.it^ +||web.crm.speedup.it^ +||web.diebayerische.de^ +||web.e.aldermore.co.uk^ +||web.e.bolts.co.uk^ +||web.e.compositesales.co.uk^ +||web.e.dekogardensupplies.co.uk^ +||web.e.drainagepipe.co.uk^ +||web.e.guttersupplies.co.uk^ +||web.e.obayaty.com^ +||web.e.panmacmillan.com^ +||web.e.pbslgroup.co.uk^ +||web.e.professionalbuildingsupplies.co.uk^ +||web.e.pvccladding.com^ +||web.e.soakaways.com^ +||web.email.farrow-ball.com^ +||web.email.pizzaexpress.com^ +||web.email.pmtonline.co.uk^ +||web.email.superga.co.uk^ +||web.email.topfarmacia.it^ +||web.email.turtlebay.co.uk^ +||web.email.umbro.co.uk^ +||web.email.zone3.com^ +||web.ideaautorepair.com^ +||web.info.aiteca.it^ +||web.info.bodybuildingwarehouse.co.uk^ +||web.info.bodybuildingwarehouse.com^ +||web.info.bonprix.es^ +||web.info.teamwarrior.com^ +||web.info.vantastic-foods.com^ +||web.info.varelotteriet.dk^ +||web.info.yeppon.it^ +||web.jana-shoes.com^ +||web.mail.parmalat.it^ +||web.mail.proximaati.com^ +||web.mailing.morawa.at^ +||web.mailing.storz-bickel.com^ +||web.mailing.vapormed.com^ +||web.mapp.docpeter.it^ +||web.mapp.edenred.it^ +||web.mapp.ilgiardinodeilibri.it^ +||web.mapp.naturzeit.com^ +||web.mapp.skousen.dk^ +||web.mapp.skousen.no^ +||web.mapp.tretti.se^ +||web.mapp.whiteaway.com^ +||web.mapp.whiteaway.no^ +||web.mapp.whiteaway.se^ +||web.marcotozzi.com^ +||web.marketing.jellybelly.com^ +||web.mytoys.de^ +||web.news.creedfragrances.co.uk^ +||web.news.dixiefashion.com^ +||web.news.eprice.it^ +||web.news.gnv.it^ +||web.news.imperialfashion.com^ +||web.news.lancel.com^ +||web.news.paganistore.com^ +||web.news.piquadro.com^ +||web.news.pleasefashion.com^ +||web.news.thebridge.it^ +||web.newsletter.koffer-to-go.de^ +||web.newsletter.viviennewestwood.com^ +||web.newsletterit.esprinet.com^ +||web.online.monnalisa.com^ +||web.redazione.milanofinanza.it^ +||web.sensilab.com^ +||web.sensilab.cz^ +||web.sensilab.de^ +||web.sensilab.dk^ +||web.sensilab.es^ +||web.sensilab.fi^ +||web.sensilab.hr^ +||web.sensilab.ie^ +||web.sensilab.it^ +||web.sensilab.org^ +||web.sensilab.pt^ +||web.sensilab.ro^ +||web.sensilab.se^ +||web.sensilab.si^ +||web.sensilab.sk^ +||web.sidsavage.com^ +||web.slim-joy.de^ +||web.slimjoy.com^ +||web.slimjoy.cz^ +||web.slimjoy.dk^ +||web.slimjoy.it^ +||web.slimjoy.ro^ +||web.slimjoy.se^ +||web.slimjoy.sk^ +||web.solesource.com^ +||web.tamaris.com^ +||web.tummy-tox.com^ +||web.tummytox.at^ +||web.tummytox.de^ +||web.tummytox.es^ +||web.tummytox.fr^ +||web.tummytox.it^ +||web.tummytox.pt^ +||web.tummytox.sk^ +||web.usautosupply.com^ +||web.web.tomasiauto.com^ +||web.x.ilpost.it^ +||webanalytics.also.com^ +||webmet.creditreform-mahnwesen.de^ +||webmet.creditreform.de^ +||website-usage.b2bendix.com^ +||website-usage.knorr-bremse.com^ +||webt.aqipa.com^ +||webt.eleonto.com^ +||webt.eu.teac-audio.com^ +||webt.pure-audio.com^ +||webt.store.okmilo.com^ +||webts.adac.de^ +||wt.ara.ad^ +||wt.ara.cat^ +||wt.arabalears.cat^ +||wt.dialog-versicherung.de^ +||wt.distrelec.com^ +||wt.envivas.de^ +||wt.generali.de^ +||wt.generalibewegtdeutschland.de^ +||wt.generalihealthsolutions.de^ +||wt.netze-bw.de^ +||wt.vhb.de^ +||wtm.interhyp.de^ +||wttd.douglas.at^ +||wttd.douglas.ch^ +||wttd.douglas.de^ +||wttd.douglas.it^ +||wttd.douglas.nl^ +||wttd.douglas.pl^ +||wttd.madeleine-fashion.be^ +||wttd.madeleine-fashion.nl^ +||wttd.madeleine-mode.at^ +||wttd.madeleine-mode.ch^ +||wttd.madeleine.co.uk^ +||wttd.madeleine.de^ +||wttd.madeleine.fr^ +||wttd.madeleine.gr^ +||www7.springer.com^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_wizaly.txt *** +||t-test.esvdigital.com^ +||t.wiz.meilleurtaux.com^ +||tk.abt.com^ +||tk.agrizone.net^ +||tk.aircaraibes.com^ +||tk.airfrance.ae^ +||tk.airfrance.am^ +||tk.airfrance.at^ +||tk.airfrance.be^ +||tk.airfrance.bf^ +||tk.airfrance.bg^ +||tk.airfrance.bj^ +||tk.airfrance.ca^ +||tk.airfrance.ch^ +||tk.airfrance.cm^ +||tk.airfrance.co.ao^ +||tk.airfrance.co.il^ +||tk.airfrance.co.jp^ +||tk.airfrance.co.kr^ +||tk.airfrance.co.th^ +||tk.airfrance.co.uk^ +||tk.airfrance.co.za^ +||tk.airfrance.cz^ +||tk.airfrance.de^ +||tk.airfrance.dj^ +||tk.airfrance.dk^ +||tk.airfrance.dz^ +||tk.airfrance.es^ +||tk.airfrance.fi^ +||tk.airfrance.fr^ +||tk.airfrance.ga^ +||tk.airfrance.gf^ +||tk.airfrance.gr^ +||tk.airfrance.hr^ +||tk.airfrance.ht^ +||tk.airfrance.id^ +||tk.airfrance.ie^ +||tk.airfrance.in^ +||tk.airfrance.it^ +||tk.airfrance.ma^ +||tk.airfrance.mg^ +||tk.airfrance.mq^ +||tk.airfrance.mu^ +||tk.airfrance.my^ +||tk.airfrance.ng^ +||tk.airfrance.nl^ +||tk.airfrance.pa^ +||tk.airfrance.pf^ +||tk.airfrance.pl^ +||tk.airfrance.pt^ +||tk.airfrance.re^ +||tk.airfrance.ro^ +||tk.airfrance.rs^ +||tk.airfrance.ru^ +||tk.airfrance.sa^ +||tk.airfrance.se^ +||tk.airfrance.sg^ +||tk.airfrance.sk^ +||tk.airfrance.sn^ +||tk.airfrance.tn^ +||tk.airfrance.ua^ +||tk.airfrance.us^ +||tk.airfrance.vn^ +||tk.alexandermcqueen.com^ +||tk.apprentis-auteuil.org^ +||tk.assurland.com^ +||tk.assurlandpro.com^ +||tk.atol.fr^ +||tk.balenciaga.com^ +||tk.biovea.com^ +||tk.blancheporte.be^ +||tk.blancheporte.fr^ +||tk.boutique.capital.fr^ +||tk.boutique.geo.fr^ +||tk.boutique.hbrfrance.fr^ +||tk.boutique.voici.fr^ +||tk.bricoprive.com^ +||tk.bullebleue.fr^ +||tk.cadeaux.com^ +||tk.conforama.fr^ +||tk.dietbon.fr^ +||tk.domitys.fr^ +||tk.dossier.co^ +||tk.engie.fr^ +||tk.etam.com^ +||tk.evaneos.ch^ +||tk.evaneos.de^ +||tk.evaneos.es^ +||tk.evaneos.fr^ +||tk.evaneos.it^ +||tk.evaneos.nl^ +||tk.france-abonnements.fr^ +||tk.frenchbee.com^ +||tk.gustaveroussy.fr^ +||tk.healthwarehouse.com^ +||tk.hypnia.co.uk^ +||tk.hypnia.de^ +||tk.hypnia.es^ +||tk.hypnia.fr^ +||tk.hypnia.nl^ +||tk.illicado.com^ +||tk.interflora.dk^ +||tk.interflora.es^ +||tk.interflora.fr^ +||tk.interflora.it^ +||tk.jeux.loro.ch^ +||tk.jim-joe.fr^ +||tk.kidsaround.com^ +||tk.kitchendiet.fr^ +||tk.klm.com^ +||tk.kusmitea.com^ +||tk.lacoste.com^ +||tk.lamaisonduchocolat.com^ +||tk.lcl.fr^ +||tk.little-big-change.com^ +||tk.lolivier.fr^ +||tk.lulli-sur-la-toile.com^ +||tk.m6boutique.com^ +||tk.macif.fr^ +||tk.maison123.com^ +||tk.manouvellevoiture.com^ +||tk.moveyourfit.com^ +||tk.msccruises.com^ +||tk.nhlottery.com^ +||tk.opinion-assurances.fr^ +||tk.petit-bateau.be^ +||tk.petit-bateau.co.uk^ +||tk.petit-bateau.de^ +||tk.petit-bateau.es^ +||tk.petit-bateau.fr^ +||tk.petit-bateau.it^ +||tk.planete-oui.fr^ +||tk.prismashop.fr^ +||tk.qare.fr^ +||tk.qobuz.com^ +||tk.rentacar.fr^ +||tk.rimowa.com^ +||tk.salomon.com^ +||tk.santevet.be^ +||tk.santevet.com^ +||tk.santevet.de^ +||tk.santevet.es^ +||tk.santevet.it^ +||tk.speedway.fr^ +||tk.svsound.com^ +||tk.teleshopping.fr^ +||tk.tikamoon.at^ +||tk.tikamoon.be^ +||tk.tikamoon.ch^ +||tk.tikamoon.co.uk^ +||tk.tikamoon.com^ +||tk.tikamoon.de^ +||tk.tikamoon.es^ +||tk.tikamoon.it^ +||tk.tikamoon.nl^ +||tk.transavia.com^ +||tk.ultrapremiumdirect.com^ +||tk.undiz.com^ +||tk.verisure.fr^ +||tk.viapresse.com^ +||tk.zenpark.com^ +||tracking-test.esearchvision.com^ +||trackv-test.esearchvision.com^ +||tv-test.esvdigital.com^ +||twiz.wizaly.co.uk^ +||twiz.wizaly.fr^ +||wiz.empowerhearing.com^ +||wiz.sncf-connect.com^ +||wz.allianz.fr^ + +! *** easylist:easyprivacy/easyprivacy_specific_cname_branch.txt *** +||07b3.pandasuite.io^ +||0ddf.pandasuite.io^ +||1.ftb.al^ +||10008919.pomelo.fashion^ +||10079290.fluz.app^ +||10298198.arch.sofi.org^ +||10298198.info.sofi.org^ +||10298198.m.sofi.org^ +||10298198.o.sofi.org^ +||102d.pandasuite.io^ +||11959579.fun.joyrun.com^ +||12915784.care.sanvello.com^ +||12915784.help.sanvello.com^ +||16134024.artcollection.io^ +||161779.publy.co^ +||18052925.im.intermiles.com^ +||19035924.automated.almosafer.com^ +||19035924.email.almosafer.com^ +||19035924.loyalty.almosafer.com^ +||19035924.mktg.almosafer.com^ +||19035955.automated.tajawal.com^ +||19035955.email.tajawal.com^ +||19035955.loyalty.tajawal.com^ +||19035955.mktg.tajawal.com^ +||1e90.pandasuite.io^ +||2.wantsext.me^ +||20bd.pandasuite.io^ +||2143.pandasuite.io^ +||22153974.branch.rocks^ +||223f.pandasuite.io^ +||2540166.chalknation.com^ +||3565433061881492849.academyofconsciousleadership.com^ +||3587285621425460184.academyofconsciousleadership.net^ +||3889082.dev.att.llabs.io^ +||3935128650935608632.academyofconsciousleadership.org^ +||3988408442896783715.theacademyforconsciousleadership.com^ +||3b38.pandasuite.io^ +||3skickasurf.tre.se^ +||40caidaylimpia.catzolab.net^ +||492733704185584515.academyforconsciousculture.com^ +||4b.oktium.com^ +||5173.pandasuite.io^ +||52d8.pandasuite.io^ +||5363316.marketing.numi.com^ +||5363316.trackerinfo.southbeachdiet.com^ +||581b.pandasuite.io^ +||5e00.pandasuite.io^ +||6068372.huckleberry-labs.com^ +||6519114.automated.almosafer.com^ +||6519114.automated.tajawal.com^ +||6519114.email.tajawal.com^ +||6519114.loyalty.almosafer.com^ +||6519114.loyalty.tajawal.com^ +||6519114.mktg.almosafer.com^ +||6519114.mktg.tajawal.com^ +||6677648.reddoorz.com^ +||671c.pandasuite.io^ +||757d.pandasuite.io^ +||76ef.pandasuite.io^ +||7701534.emails.tntdrama.com^ +||8041691.comms.hipages.com.au^ +||8041691.engage.hipages.com.au^ +||8147563.1954.bk.com^ +||8147563.thekingdom.bk.com^ +||8147563.your-way.bk.com^ +||8820.pandasuite.io^ +||8d4b.pandasuite.io^ +||9189.pandasuite.io^ +||9544702.kazooby.com^ +||9693.pandasuite.io^ +||9735476.sender.skyscanner.com^ +||9735476.sender.skyscanner.net^ +||9735476.test.skyscanner.net^ +||9786.pandasuite.io^ +||9857064.hello.spriggy.com.au^ +||9857064.notice.spriggy.com.au^ +||9955951.pillar.app^ +||9984342.reddoorz.in^ +||9b55.pandasuite.io^ +||9bdb.pandasuite.io^ +||9kvnwwkj.pandasuite.io^ +||a-t.topya.com^ +||a.a23.in^ +||a.careangel.com^ +||a.getemoji.me^ +||a.hibbett.com^ +||a.ifit.io^ +||a.itim.es^ +||a.nelo.mx^ +||a.pickme.lk^ +||a.sbnw.in^ +||a.topya.com^ +||a2.slotxbros.com^ +||aakashapp.byjus.com^ +||abcd.coderays.com^ +||ablink.1954.bk.com^ +||ablink.8email.eightsleep.com^ +||ablink.a.radio.com^ +||ablink.account.one.app^ +||ablink.account.zip.co^ +||ablink.ae.linktr.ee^ +||ablink.alerts.forhers.com^ +||ablink.alerts.max.com^ +||ablink.arch.sofi.org^ +||ablink.c.grubhub.com^ +||ablink.care.sanvello.com^ +||ablink.comms.hipages.com.au^ +||ablink.comms.trainline.com^ +||ablink.comms.waveapps.com^ +||ablink.commsinfo.trainline.com^ +||ablink.daily.sofi.com^ +||ablink.e.hungryjacks.com.au^ +||ablink.e.jackpocket.com^ +||ablink.e.sanvello.com^ +||ablink.e.theiconic.com.au^ +||ablink.earn.liven.com.au^ +||ablink.edm.zip.co^ +||ablink.em.redmart.com^ +||ablink.email.creator.shopltk.com^ +||ablink.email.etsy.com^ +||ablink.email.luminarypodcasts.com^ +||ablink.email.pressreader.com^ +||ablink.emails.spothero.com^ +||ablink.emails.themarket.nz^ +||ablink.emails.vida.com^ +||ablink.engage.hipages.com.au^ +||ablink.engage.insighttimer.com^ +||ablink.enjoy.wonder.com^ +||ablink.feed.liven.com.au^ +||ablink.fun.joyrun.com^ +||ablink.go1.zip.co^ +||ablink.go2.zip.co^ +||ablink.go3.zip.co^ +||ablink.hello.innit.com^ +||ablink.hello.sanvello.com^ +||ablink.hello.spriggy.com.au^ +||ablink.hello.washmen.com^ +||ablink.help.innit.com^ +||ablink.help.sanvello.com^ +||ablink.help.shopwell.com^ +||ablink.info.felixmobile.com.au^ +||ablink.info.oneatwork.app^ +||ablink.info.pressreader.com^ +||ablink.info.sofi.org^ +||ablink.info.themarket.nz^ +||ablink.info.timhortons.ca^ +||ablink.info.timhortons.com^ +||ablink.info.vida.com^ +||ablink.juicer.li.me^ +||ablink.kfc.com.au^ +||ablink.lifecycle.onxmaps.com^ +||ablink.loyal.timhortons.ca^ +||ablink.loyal.timhortons.com^ +||ablink.loyalty.almosafer.com^ +||ablink.loyalty.tajawal.com^ +||ablink.m.feelcove.com^ +||ablink.m.jackpocket.com^ +||ablink.m.popeyes.com^ +||ablink.m.seatedapp.io^ +||ablink.m.sofi.org^ +||ablink.ma.linktr.ee^ +||ablink.mail.activearcade.ai^ +||ablink.mail.adobespark.com^ +||ablink.mail.flipfit.com^ +||ablink.mail.grailed.com^ +||ablink.mail.homecourt.ai^ +||ablink.mail.parkmobile.io^ +||ablink.mail.truemoney.com^ +||ablink.mail.winwinsave.com^ +||ablink.mail1.iheart.com^ +||ablink.marketing.adobemailing.com^ +||ablink.marketing.li.me^ +||ablink.marketing.max.com^ +||ablink.marketing.motortrend.com^ +||ablink.marketing.onxmaps.com^ +||ablink.media.10play.com.au^ +||ablink.mktg.almosafer.com^ +||ablink.mktg.tajawal.com^ +||ablink.msg.flipfit.com^ +||ablink.my.zip.co^ +||ablink.news.felixmobile.com.au^ +||ablink.news.forhers.com^ +||ablink.news.gooseinsurance.com^ +||ablink.news.kfc.co.za^ +||ablink.newsletters1.motortrend.com^ +||ablink.newsletters2.motortrend.com^ +||ablink.notice.spriggy.com.au^ +||ablink.notification.insighttimer.com^ +||ablink.notify.homecourt.ai^ +||ablink.nz-edm.zip.co^ +||ablink.o.sofi.org^ +||ablink.offers.checkout51.com^ +||ablink.offroad-marketing.onxmaps.com^ +||ablink.p.radio.com^ +||ablink.pomelo.fashion^ +||ablink.pomelofashion.com^ +||ablink.promos.timhortons.ca^ +||ablink.promos.timhortons.com^ +||ablink.qa.enjoy.wonder.com^ +||ablink.r.sofi.com^ +||ablink.rider.li.me^ +||ablink.seller.etsy.com^ +||ablink.send.joinjamjar.com.au^ +||ablink.sender.skyscanner.com^ +||ablink.sender.skyscanner.net^ +||ablink.service.max.com^ +||ablink.staging-e.klarna.com^ +||ablink.stream.max.com^ +||ablink.subscribers.motortrend.com^ +||ablink.support.oneatwork.app^ +||ablink.t.feelcove.com^ +||ablink.tchicken.popeyes.com^ +||ablink.test.iheart.com^ +||ablink.test.kfc.com.au^ +||ablink.test.skyscanner.net^ +||ablink.test.vida.com^ +||ablink.thekingdom.bk.com^ +||ablink.thekitchen.popeyes.com^ +||ablink.track.popeyes.com^ +||ablink.track.timhortons.ca^ +||ablink.track.timhortons.com^ +||ablink.uat.enjoy.wonder.com^ +||ablink.updates.creator.shopltk.com^ +||ablink.updates.gooseinsurance.com^ +||ablink.your-way.bk.com^ +||ablink.your.audacy.com^ +||ablinkclicktest.prod.aws.skyscnr.com^ +||ablinks-staging.email.tispr.com^ +||ablinks.comms.healthengine.com.au^ +||ablinks.e.foxsports.com.au^ +||ablinks.e.sportinanutshell.com.au^ +||ablinks.info.amaro.com^ +||ablinks.kfc.com.au^ +||ablinks.mail.claritymoney.com^ +||ablinks.mail.hinge.co^ +||ablinks.mail.pared.com^ +||ablinks.marketing.numi.com^ +||ablinks.news.amaro.com^ +||ablinks.news.learnwithhomer.com^ +||ablinks.notify.healthengine.com.au^ +||ablinks.trackerinfo.southbeachdiet.com^ +||ablinks.welcome.learnwithhomer.com^ +||ablinksemail.wirexapp.com^ +||ablinksuni.a.grubhub.com^ +||ablinksuni.a.seamless.com^ +||abmail.info.amaro.com^ +||abmail.peak.net^ +||abmail.test.iheart.com^ +||abmail2.e.hungryjacks.com.au^ +||acc-link-ccontact.focuscura.com^ +||accenture.epoise.com^ +||accenturetest.epoise.com^ +||access.ipro.net^ +||access.iprolive.com^ +||access2.ipro.net^ +||acesse.tc.com.br^ +||acro.egghead.link^ +||act.wynk.in^ +||activation.depop.com^ +||active-email.branch.rocks^ +||ad.gogox.com^ +||ad.inhaabit.com^ +||adl.kkguan.com^ +||admin.academyforconsciousleadership.net^ +||ads.tikpage.com^ +||afpd.groundwidgets.com^ +||aggelakia.openapp.link^ +||ailla.abphotos.link^ +||aivali.openapp.link^ +||al.airtel.in^ +||al.mtrx.dev^ +||al.mtrx.travel^ +||al.mtrxs.dev^ +||al.test.airtel.in^ +||alaburger.openapp.link^ +||alapita.openapp.link^ +||alerts.steadyapp.com^ +||alexa.dev.intecular.com^ +||alibabapizza.openapp.link^ +||alinks.outcomes4me.com^ +||alpha.go.levelbank.com^ +||amandi.openapp.link^ +||amazon-email.branch.rocks^ +||amo.myoyster.mx^ +||ana.e-ticket.co.jp^ +||analytics.adobe.ly^ +||analytics.crowdkeep.com^ +||analytics.eventbrite.com^ +||anapp.adobe.com^ +||android.txtsmarter.com^ +||anet.abphotos.link^ +||animaux.oworld.fr^ +||antico.openapp.link^ +||aod.echovisuals.com^ +||ap.hibbett.com^ +||ap.shouta.co^ +||app-branch.yummybazaar-qa.com^ +||app-clicks-corporate.firstrepublic.com^ +||app-clicks.firstrepublic.com^ +||app-dat.kingofthecurve.org^ +||app-dev.onyx.fit^ +||app-dev.stressbuoy.com^ +||app-jp.getmiles.com^ +||app-link-test.inkl.com^ +||app-link-test.republik.gg^ +||app-link.funfull.com^ +||app-link.inkl.com^ +||app-link.republik.gg^ +||app-link.smartvid.io^ +||app-link.udex.us^ +||app-qa.rnd.thronelabs.co^ +||app-redirect.wearephlo.com^ +||app-stage.mschfsneakers.com^ +||app-test.albrt.co^ +||app-test.barking.city^ +||app-test.barking.ee^ +||app-test.comparethemarket.com.au^ +||app-test.evntly.com^ +||app-test.get360fit.com^ +||app-test.goat.com^ +||app-test.hermo.my^ +||app-test.kisikates.com.tr^ +||app-test.klip.ae^ +||app-test.mogo.ca^ +||app-test.mywaggle.com^ +||app-test.nala.money^ +||app-test.planstr.com^ +||app-test.playtally.com^ +||app-test.thestaxapp.com^ +||app-test.utlob.com^ +||app-uat.latrobehealth.com.au^ +||app-uat.navyhealth.com.au^ +||app.1112.com^ +||app.2cents.audio^ +||app.5miles.us^ +||app.8tracks.com^ +||app.aaptiv.com^ +||app.acekuwait.com^ +||app.activityhero.com^ +||app.aksent.ai^ +||app.albrt.co^ +||app.allyos.com^ +||app.almosafer.com^ +||app.almutawapharmacies.com^ +||app.ammanmart.com^ +||app.anch.co^ +||app.appcity.com.au^ +||app.aquaservice.com^ +||app.areyouin.io^ +||app.atlasmission.com^ +||app.audibene.de^ +||app.auge.pro.br^ +||app.autotrader.com.au^ +||app.avopass.com^ +||app.awto.cl^ +||app.awto.com.br^ +||app.babycloud.in^ +||app.bajajfinservmarkets.in^ +||app.ballet.org.uk^ +||app.bancobv.com.br^ +||app.banqi.com.br^ +||app.barking.city^ +||app.barking.ee^ +||app.bateriasparacarrosbogota.com^ +||app.begin.is^ +||app.bekfood.de^ +||app.belbet.by^ +||app.belk.com^ +||app.bergenkino.no^ +||app.berrydates.com^ +||app.bettle.co^ +||app.bible.com^ +||app.biblelens.com^ +||app.bikeep.com^ +||app.bimbaylola.com^ +||app.bloombergconnects.org^ +||app.bovedainc.com^ +||app.bplepay.co.kr^ +||app.brain.ly^ +||app.brandclub.com^ +||app.bruce.work^ +||app.buildd.co^ +||app.butterflymx.com^ +||app.bws.com.au^ +||app.byjus.com^ +||app.caden.io^ +||app.cambolink21.com^ +||app.campaignhero.ai^ +||app.campbowwow.com^ +||app.capitalbikeshare.com^ +||app.cardbaazi.com^ +||app.cardiovisual.com^ +||app.carrierview.com^ +||app.carsguide.com.au^ +||app.catchconnect.com.au^ +||app.changemakerz.org^ +||app.citibikenyc.com^ +||app.citylink.ro^ +||app.clientbook.com^ +||app.clovia.com^ +||app.cmnet.cf^ +||app.coconuts.co^ +||app.colesmobile.com.au^ +||app.comparethemarket.com.au^ +||app.cookdtv.com^ +||app.coto.world^ +||app.cover.com^ +||app.ctc.ru^ +||app.cuahealth.com.au^ +||app.curesk.in^ +||app.currenciesdirect.com^ +||app.danmurphys.com.au^ +||app.deliverynow.vn^ +||app.delphia.com^ +||app.dev.pyypl.io^ +||app.dev.talksport.com^ +||app.dev.virginradio.co.uk^ +||app.deviceidfinder.com^ +||app.devyce.com^ +||app.dickssportinggoods.com^ +||app.discover.com^ +||app.dolinakrzny.digimuth.com^ +||app.domclick.ru^ +||app.dreambox.ru.com^ +||app.echo.co.uk^ +||app.echovisuals.com^ +||app.eland.kr^ +||app.elanic.in^ +||app.elly.com^ +||app.email.influitive.com^ +||app.entwickler.de^ +||app.etc.se^ +||app.etcel.se^ +||app.evntly.com^ +||app.exercisetimer.net^ +||app.experience297.com^ +||app.explico.sg^ +||app.fashalot.com^ +||app.favorited.com^ +||app.feedacat.com^ +||app.feedadog.com^ +||app.fitmint.io^ +||app.fixly.pl^ +||app.flatex.at^ +||app.flatex.de^ +||app.flowyour.money^ +||app.flykitt.com^ +||app.flyx.me^ +||app.food.li^ +||app.food.porn^ +||app.foody.vn^ +||app.forever21.com^ +||app.fount.bio^ +||app.fuse.cash^ +||app.fyscore.com^ +||app.gasengineersoftware.co.uk^ +||app.gastro-ausweis.de^ +||app.gempak.com^ +||app.get-e.com^ +||app.getbamboo.io^ +||app.getcubo.com^ +||app.getgifted.com^ +||app.getgigl.com^ +||app.getjerry.com^ +||app.getmiles.com^ +||app.getplayground.com^ +||app.getselect.co^ +||app.getsquirrel.io^ +||app.ggpoker.co.uk^ +||app.gobuncha.com^ +||app.gocheetah.com^ +||app.godtlevert.no^ +||app.gogovan.sg^ +||app.gogovan.tw^ +||app.golfgalaxy.com^ +||app.goodwearmall.com^ +||app.gopib.net^ +||app.goqii.com^ +||app.got-it.link^ +||app.grabon.in^ +||app.grapevine.in^ +||app.greenweez.com^ +||app.grubster.com.br^ +||app.gustave-et-rosalie.com^ +||app.gwsportsapp.in^ +||app.gymstreak.com^ +||app.handlemoa.com^ +||app.hapicolibri.fr^ +||app.happyar.world^ +||app.hauskey.com^ +||app.headuplabs.com^ +||app.health2sync.com^ +||app.healthteams.com.au^ +||app.hear.com^ +||app.heponda.com^ +||app.hermo.my^ +||app.hinge.co^ +||app.hirenodes.com^ +||app.hocngoainguhieuqua.com^ +||app.holdstation.com^ +||app.homelocatorapp.com^ +||app.homoola.com^ +||app.hotdoc.com.au^ +||app.iamblackbusiness.com^ +||app.idexevent.com^ +||app.infyn.it^ +||app.inkitt.com^ +||app.instantlocal.com^ +||app.intermexonline.com^ +||app.intermiles.com^ +||app.interprefy.com^ +||app.intros.com^ +||app.inutriciondeportiva.com^ +||app.iroomit.com^ +||app.itimes.com^ +||app.iwanttfc.com^ +||app.jamdoughnut.com^ +||app.jili178.us^ +||app.joatspace.com^ +||app.joinkroo.com^ +||app.joinraft.com^ +||app.jurishand.com^ +||app.kaptain11.com^ +||app.kcutsgo.com^ +||app.kernwerk.de^ +||app.kingofthecurve.org^ +||app.kippo.gg^ +||app.kisikates.com.tr^ +||app.klaim.us^ +||app.klip.ae^ +||app.klokahem.com^ +||app.kochamwino.com.pl^ +||app.kora.money^ +||app.koyamedical.com^ +||app.kumu.ph^ +||app.lark.com^ +||app.latrobehealth.com.au^ +||app.lawnlove.com^ +||app.learnz.hu^ +||app.levi.com^ +||app.libre.org^ +||app.link.livibank.com^ +||app.link.nba.com^ +||app.liven.com.au^ +||app.lootpop.com^ +||app.luckysweater.com^ +||app.luve.tv^ +||app.manager.privateaser.com^ +||app.marriott.com^ +||app.matchme.social^ +||app.me4u.ai^ +||app.meclub.com^ +||app.meihengyisheng.com^ +||app.meliuz.com.br^ +||app.memor-i.com^ +||app.menupromo.inlinefx.com^ +||app.mikedfitness.com^ +||app.mingo.chat^ +||app.mintmobile.com^ +||app.mobilapp.io^ +||app.mobilevikings.pl^ +||app.mogo.ca^ +||app.moneta.lk^ +||app.moneywalkie.com^ +||app.motiwy.com^ +||app.movebe.com^ +||app.movegb.com^ +||app.mschfsneakers.com^ +||app.mt11.io^ +||app.musely.com^ +||app.mybestphotobook.com^ +||app.mybliss.ai^ +||app.mycirclecare.com^ +||app.mylogoinc.com^ +||app.myrbhs.com.au^ +||app.mywaggle.com^ +||app.naked.insure^ +||app.nala.money^ +||app.nalogi.online^ +||app.nautilus.io^ +||app.navi.com^ +||app.navyhealth.com.au^ +||app.nhrmcmychart.com^ +||app.nootric.com^ +||app.now.vn^ +||app.nursef.ly^ +||app.ocamping.fr^ +||app.oceans.io^ +||app.ofisten.com^ +||app.onet.pl^ +||app.onyx.fit^ +||app.onyxcharge.com^ +||app.openfolio.com^ +||app.optus.com.au^ +||app.ouicsport.fr^ +||app.ovloop.com^ +||app.oze789.com^ +||app.p100.io^ +||app.pally.live^ +||app.pandasuite.io^ +||app.panomoments.com^ +||app.pawsket.com^ +||app.payomatic.com^ +||app.payon.mn^ +||app.pdf.ac^ +||app.pethoops.com^ +||app.pickwin.net^ +||app.pickyourtrail.com^ +||app.pixapp.com^ +||app.pointer.com.br^ +||app.pokerup.net^ +||app.pooler.io^ +||app.poolkingmobile.com^ +||app.popsa.com^ +||app.poupaenergia.pt^ +||app.powerwatch.io^ +||app.priceoff.com.br^ +||app.primeconcept.co.uk^ +||app.primexbt.com^ +||app.pro-vision.com^ +||app.producttube.com^ +||app.progressive.com^ +||app.puma.com^ +||app.puneeatouts.in^ +||app.pyypl.io^ +||app.qa.flykitt.com^ +||app.qa.fount.bio^ +||app.qeenatha.com^ +||app.qlan.gg^ +||app.qooxydz.net^ +||app.quidd.co^ +||app.quotesalarm.com^ +||app.radio.com^ +||app.radixdlt.com^ +||app.raneen.com^ +||app.rclb.pl^ +||app.realnewsnow.com^ +||app.renozee.com^ +||app.resq.club^ +||app.reuters.com^ +||app.ritual.io^ +||app.rlax.me^ +||app.rmbr.in^ +||app.roomsync.com^ +||app.scrpbx.co^ +||app.seasonshare.com^ +||app.segno.org^ +||app.select.id^ +||app.semusi.com^ +||app.sephora.com^ +||app.shopback.com^ +||app.shouta.co^ +||app.showroomprive.com^ +||app.singlife.com^ +||app.skideal-prod.ynadev.com^ +||app.skydo.cloud^ +||app.smartcredit.com^ +||app.smrtp.link^ +||app.snbla.com^ +||app.sortedai.com^ +||app.soultime.com^ +||app.sswt.co^ +||app.stadac.mobilapp.gmbh^ +||app.stagingsimpl.com^ +||app.streaktrivia.com^ +||app.stressbuoy.com^ +||app.studios.brain.ai^ +||app.subs.tv^ +||app.sunstone.in^ +||app.sweeps.fyi^ +||app.swiftgift.it^ +||app.swiftgift.me^ +||app.ta3weem.com^ +||app.tadatada.com^ +||app.tagachi.io^ +||app.tajawal.com^ +||app.talksport.com^ +||app.task.io^ +||app.test.elly.com^ +||app.th3rdwave.coffee^ +||app.theachieveapp.com^ +||app.theachieveproject.com^ +||app.thedealerapp.co.uk^ +||app.themaven.net^ +||app.thestaxapp.com^ +||app.thetimes.link^ +||app.thetriviabar.com^ +||app.thexlife.co^ +||app.thisiscleveland.com^ +||app.tikki.com^ +||app.times.radio^ +||app.tmro.com^ +||app.toastme.com^ +||app.topgrad.co.uk^ +||app.topten10mall.com^ +||app.torfx.com^ +||app.touchofmodern.com^ +||app.trade.mogo.ca^ +||app.trainfitness.ai^ +||app.trainline.com^ +||app.travelcom.com.tw^ +||app.trayls.com^ +||app.treering.com^ +||app.trell.co^ +||app.trimenu.com^ +||app.trulia.com^ +||app.trutv.com^ +||app.tsgo.io^ +||app.tutorela.com^ +||app.ugo.srl^ +||app.unlockar.com^ +||app.utlob.com^ +||app.vahak.in^ +||app.vidds.ee^ +||app.virdee.co^ +||app.virginradio.co.uk^ +||app.vitabuddy.de^ +||app.vitruvian.me^ +||app.voice.football^ +||app.vurse.com^ +||app.vyaparapp.in^ +||app.w3w.io^ +||app.waybetter.com^ +||app.well.co.uk^ +||app.what3words.com^ +||app.wish2wash.com^ +||app.wishtrend.com^ +||app.withutraining.com^ +||app.wonder.com^ +||app.wordgo.org^ +||app.wsop.ca^ +||app.wudju.de^ +||app.yolda.com^ +||app.yolda.io^ +||app.yollty.com^ +||app.youla.io^ +||app.yourmoji.co^ +||app.zip.co^ +||app.ziptoss.com^ +||app.zirtue.com^ +||app.zwilling.com^ +||app2.220cordncode.com^ +||application.mindshine.app^ +||application.mybiglove.ru^ +||applink-test.chalknation.com^ +||applink.aspiration.com^ +||applink.batterii.com^ +||applink.beta.aspiration.com^ +||applink.calciumhealth.com^ +||applink.cw.com.tw^ +||applink.designengineapp.com^ +||applink.discuss.com.hk^ +||applink.eventable.com^ +||applink.flipboard.com^ +||applink.fun88906.com^ +||applink.get-a-way.com^ +||applink.getbambu.com^ +||applink.getconfide.com^ +||applink.glicrx.com^ +||applink.groupthera.com^ +||applink.hellobacsi.com^ +||applink.hightail.com^ +||applink.hk01.com^ +||applink.hktester.com^ +||applink.joyrun.com^ +||applink.jurafuchs.de^ +||applink.mojilala.com^ +||applink.moolban.com^ +||applink.mypostcardapp.com^ +||applink.oskar.de^ +||applink.picmasters.de^ +||applink.pleizi.com^ +||applink.pod.io^ +||applink.podimo.com^ +||applink.psychonline.com^ +||applink.qa.tarjetabumeran.com^ +||applink.raaho.in^ +||applink.tarjetabumeran.com^ +||applink.test.jurafuchs.de^ +||applink.whizzl.com^ +||applink.youareaceo.com^ +||applink2.moolban.com^ +||applinks-test.flybuys.com.au^ +||applinks.afriflirt.com^ +||applinks.aventuraapp.com^ +||applinks.bikersnearby.com^ +||applinks.box8.in^ +||applinks.calpool.com^ +||applinks.capitalone.co.uk^ +||applinks.cougarsnearby.com^ +||applinks.cowboysnearby.com^ +||applinks.fliplearn.com^ +||applinks.flybuys.com.au^ +||applinks.hotspot.travel^ +||applinks.laoshi.io^ +||applinks.makemytrip.com^ +||applinks.tarrakki.com^ +||applinks.truckersnearby.com^ +||applinks.xdressr.com^ +||applinks.zerista.com^ +||appredirect.snapdeal.com^ +||apps-test.spectrum-member.com^ +||apps.airmeet.com^ +||apps.ayopop.id^ +||apps.bannerman.com^ +||apps.circle.com^ +||apps.crib.in^ +||apps.daxko-qa.com^ +||apps.daxko.com^ +||apps.ding.jobs^ +||apps.e-butler.com^ +||apps.jeffgalloway.com^ +||apps.myprepaidcenter.com^ +||apps.shakaguide.com^ +||apps.spectrum-member.com^ +||apps.uquote.io^ +||apps.weekendgowhere.sg^ +||apps.wholefoodsmarket.com^ +||apps.zingeroo.com^ +||apptest.gotvive.com^ +||apptest.gwsportsapp.in^ +||apptest.jow.fr^ +||apptest.truveiculos.com^ +||apptracker.torob.com^ +||appuat.intermiles.com^ +||apssdc.epoise.com^ +||apssdctest.epoise.com^ +||ar.interiordefine.com^ +||arch.onjoyri.de^ +||aria.inhaabit.com^ +||art.b.inhaabit.com^ +||ascmart.abphotos.link^ +||ask.wearelistening.co.nz^ +||assistant.dg1.com^ +||atb.mlb.com^ +||athlete.uninterrupted.com^ +||atiteasexam.quantresear.ch^ +||atlantablackstar.black.news^ +||atumanera.burgerking.com.mx^ +||authsmtp.happ.social^ +||avasgtest.branch.rocks^ +||awsexam.quantresear.ch^ +||b.arenum.games^ +||b.check-ins.com.my^ +||b.chme.io^ +||b.discotech.me^ +||b.dl.redcrossblood.org^ +||b.ewd.io^ +||b.getmaintainx.com^ +||b.gett.com^ +||b.home.com.au^ +||b.iheart.southwest.com^ +||b.itravel.southwest.com^ +||b.iwanna.southwest.com^ +||b.lyst.com^ +||b.mail.tabcorp.com.au^ +||b.pickme.lk^ +||b.prod1.youroffers.dominos.ca^ +||b.pscp.live^ +||b.sharechat.com^ +||b.sprucehealth.com^ +||b.staging.thechivery.com^ +||b.tate.it^ +||b.thechive.com^ +||b.thechivery.com^ +||b.todaytix.com^ +||b.vidmob.com^ +||b.whee.ly^ +||b.workhere.com^ +||b.your.rewardsemail.dominos.ca^ +||b.ysh.io^ +||b.zedge.me^ +||b73c.pandasuite.io^ +||baccarat.abzorbagames.com^ +||basket.mondo.link^ +||baton.cuetv.online^ +||battlenet.openapp.link^ +||bb.onjoyri.de^ +||bbanywhere.links.rosieapp.com^ +||bbs.theacademyforconsciousleadership.com^ +||bclicks.lyst.com^ +||bde.beformance.com^ +||bdl.xefyr.com^ +||bdtestsendpulse.branch.rocks^ +||be.slowmographer.co^ +||bears.daigostudio.com^ +||bepartof.wechain.eu^ +||beta-link.liilix.com^ +||betrice.wantsext.me^ +||betterhealthrewards.headuplabs.com^ +||bettermedical-app.hotdoc.com.au^ +||bf35f69f2c6f6bcda64064b1f5b49218.domain.com.au^ +||bfg.loanzify.app^ +||bh-test.groc.press^ +||bh.groc.press^ +||bi.irisdating.com^ +||bint.openapp.link^ +||bio.chups.co^ +||bit.beformance.com^ +||bizlink.dinifi.com^ +||bkstg.flyx.me^ +||bl-test.curatedplanet.com^ +||blackdagger.openapp.link^ +||blackenterprise.black.news^ +||blackjack.abzorbagames.com^ +||blavity.black.news^ +||blink.checkworkrights.com.au^ +||blinks.mindoktor.se^ +||blinks.outcomes4me.com^ +||blinkstest.mindoktor.se^ +||bluecore-email.branch.rocks^ +||bmf.branch.rocks^ +||bn.coupocket.com^ +||bnc-papago.naver.com^ +||bnc.autopass.xyz^ +||bnc.chewchunks.com^ +||bnc.citylink.ro^ +||bnc.cityscope.media^ +||bnc.findlife.com.tw^ +||bnc.luxurysportsrelocation.com^ +||bnc.mksp.io^ +||bnc.oustme.com^ +||bnc.squaretrade.com^ +||bnc.thewaya.com^ +||bnc.tripcody.com^ +||book.londonsoundacademy.com^ +||booking.getwaitnot.com^ +||boss.openapp.link^ +||bot.asksyllable.com^ +||bot.stackbots.com^ +||bot.streaktrivia.com^ +||botb.rtl2.de^ +||bp.mlb.com^ +||bpe.mlb.com^ +||bpeml.mlb.com^ +||br.ac.ebookers.ch^ +||br.ac.ebookers.com^ +||br.ac.ebookers.de^ +||br.ac.ebookers.fi^ +||br.ac.ebookers.fr^ +||br.ac.ebookers.ie^ +||br.ac.mrjet.se^ +||br.ac.orbitz.com^ +||br.ac.travelocity.com^ +||br.ac2.cheaptickets.com^ +||br.backmarket.fr^ +||br.email.lifesum.com^ +||br.eml.walgreens.com^ +||br.inhaabit.com^ +||br.kent.co.in^ +||br.links.kmartphotos.com.au^ +||br.links.kodakmoments.com^ +||br.potato1.influitive.com^ +||br.probablecausesolutions.com^ +||br.sprbl.st^ +||br.uk.beformance.com^ +||bractivacar.eccocar.com^ +||braddumacar.eccocar.com^ +||brainlands.stonefalcon.com^ +||bramerirent.eccocar.com^ +||bran.sightdots.com^ +||branch-4567w2a56q-test.salesfloor.net^ +||branch-4567w2a56q.salesfloor.net^ +||branch-5q8gbnve37.salesfloor.net^ +||branch-areena.yle.fi^ +||branch-c.hipages.com.au^ +||branch-consumer.hipages.com.au^ +||branch-dev.getmaintainx.com^ +||branch-g993dvyzae-test.salesfloor.net^ +||branch-g993dvyzae.salesfloor.net^ +||branch-io.smartr365.com^ +||branch-link.getseated.com^ +||branch-sandbox.thekono.com^ +||branch-sl-qc.trycircle.com^ +||branch-stage.jisp.com^ +||branch-test.locationlabs.com^ +||branch-test.rejuvenan.com^ +||branch-test.step.com^ +||branch-test.tbal.io^ +||branch-titan.rejuvenan.com^ +||branch-tradie.hipages.com.au^ +||branch-uutisvahti.yle.fi^ +||branch-ylefi.yle.fi^ +||branch.365soup.bibsolution.net^ +||branch.agmt.it^ +||branch.appryse.com^ +||branch.att.llabs.io^ +||branch.backbon3.com^ +||branch.bottradionetwork.com^ +||branch.callbridge.rocks^ +||branch.careforth.com^ +||branch.carvana.com^ +||branch.chelseafc.com^ +||branch.clicks.anchor.fm^ +||branch.codepressapp.com^ +||branch.connect.actionnetwork.com^ +||branch.craftsmanrepublic.com^ +||branch.dev.att.llabs.io^ +||branch.devishetty.net^ +||branch.dragonslayertravel.com^ +||branch.dstreet.finance^ +||branch.eccocar.com^ +||branch.employus.com^ +||branch.familybase.vzw.com^ +||branch.frankctan.com^ +||branch.getcredible.io^ +||branch.gosunpro.com^ +||branch.hyr.work^ +||branch.indi.com^ +||branch.kastapp.link^ +||branch.kiddom.co^ +||branch.lacarte.com^ +||branch.learny.co^ +||branch.liketk.it^ +||branch.link.loop.net.nz^ +||branch.livenation.com^ +||branch.locationlabs.com^ +||branch.mapstr.com^ +||branch.myoyster.mx^ +||branch.mypixie.co^ +||branch.nc.mails.sssports.com^ +||branch.olamoney.com^ +||branch.oneroof.co.nz^ +||branch.oraleye.com^ +||branch.parkingpanda.com^ +||branch.pgatour-mail.com^ +||branch.quantic.edu^ +||branch.rejuvenan.com^ +||branch.release.winfooz.com^ +||branch.reserveout.com^ +||branch.rockmyrun.com^ +||branch.servingchefs.com^ +||branch.seshfitnessapp.com^ +||branch.shoprunner.com^ +||branch.shuruapp.com^ +||branch.socar.kr^ +||branch.spaceback.me^ +||branch.step.com^ +||branch.supportgenie.io^ +||branch.t.slac.com^ +||branch.tadatada.com^ +||branch.tbal.io^ +||branch.thekono.com^ +||branch.threepiece.com^ +||branch.totalbrain.com^ +||branch.trevo.my^ +||branch.tripcody.com^ +||branch.uat.bfsgodirect.com^ +||branch.udl.io^ +||branch.vcf-test.vzw.dev.llabs.io^ +||branch.vsco.ninja^ +||branch.wallet.bitcoin.com^ +||branch.wawa.com^ +||branch.weeblme.com^ +||branch.wellsitenavigator.com^ +||branch.whatsnxt.app^ +||branch.xoxloveheart.com^ +||branch2.udl.io^ +||branchct.ncapp04.com^ +||branchcust.zulln.se^ +||branchio.hipages.com.au^ +||branchio.rsvp.com.au^ +||branchio.services.evaneos.com^ +||branchio.taxibeat.com^ +||branchioth.thehindu.co.in^ +||branchlink.adobespark.com^ +||branchlink.tripcody.com^ +||branchtest.cocoon.today^ +||branchtest.uk.puma.com^ +||branchtest.veryableops.com^ +||branchtest.whataburger.com^ +||branchtrk.lendingtree.com^ +||brands.picklebutnotcucumber.com^ +||bravantrent.eccocar.com^ +||brbristoltruckrentals.eccocar.com^ +||brc.aigrammar.net^ +||brc.emails.rakuten.com^ +||brc.englishdict.cc^ +||brc.englishtimes.cc^ +||brc.hellotalk.com^ +||brc.languageclass.cc^ +||brc2.aigrammar.net^ +||brcargreen.eccocar.com^ +||brcicar.eccocar.com^ +||brclickrent.eccocar.com^ +||brcrx.eccocar.com^ +||brdriveonrental.eccocar.com^ +||breasycarrental.eccocar.com^ +||brespark.eccocar.com^ +||brevnet.eccocar.com^ +||brfeneval.eccocar.com^ +||brfree2move.eccocar.com^ +||brgoazen.eccocar.com^ +||brgroupeollandini.eccocar.com^ +||brhellorentacar.eccocar.com^ +||brhimobility.eccocar.com^ +||brice-test.nawar.io^ +||brinstascooter.eccocar.com^ +||brioscoot.eccocar.com^ +||brldassustitucion.eccocar.com^ +||brlesrochesmarbella.eccocar.com^ +||brlikecarsharing.eccocar.com^ +||brllanesrentacar.eccocar.com^ +||brmbrenting.eccocar.com^ +||brmexrentacar.eccocar.com^ +||brmocean.eccocar.com^ +||brmoter.eccocar.com^ +||brmov.eccocar.com^ +||brmuvif.eccocar.com^ +||brmuvon.eccocar.com^ +||brnc.seidecor.com.br^ +||bronxvanilla.openapp.link^ +||brooklynway.openapp.link^ +||brpayless.eccocar.com^ +||brquazzar.eccocar.com^ +||brquikly.eccocar.com^ +||brrecordgo.eccocar.com^ +||brrentalservicefinland.eccocar.com^ +||brrhgrocarsharing.eccocar.com^ +||brshareandrent.eccocar.com^ +||brsmovecity.eccocar.com^ +||brsolenelocation.eccocar.com^ +||brtelefurgo.eccocar.com^ +||brtimove.eccocar.com^ +||brtimovesharing.eccocar.com^ +||brtrack.rummypassion.com^ +||brugocarz.eccocar.com^ +||brvallsrentacar.eccocar.com^ +||brvelocity.eccocar.com^ +||brwanacars.eccocar.com^ +||brwerental.eccocar.com^ +||bryurent.eccocar.com^ +||btn.listonic.com^ +||btn.rtl2.de^ +||build.1tap.tax^ +||bulgaria.openapp.link^ +||bulgariarestaurant.openapp.link^ +||buonasera.openapp.link^ +||buoypinger-app.sapsailing.com^ +||business.crib.in^ +||business.face2.io^ +||buyer.okiela.com^ +||c-t.topya.com^ +||c.aquaservice.com^ +||c.autozen.tv^ +||c.ixi.to^ +||c.lolamarket.com^ +||c.refun.do^ +||c.stext.id^ +||c.topya.com^ +||c.vcty.co^ +||c.werally.com^ +||c4c9.pandasuite.io^ +||c6lc.pandasuite.io^ +||c917.pandasuite.io^ +||ca.macheq.com^ +||caapp.levi.com^ +||campaigns.impactive.io^ +||campaigns.outvote.io^ +||card.getgifted.com^ +||card.pingpro.com^ +||careerconnect.epoise.com^ +||cartoon.hardalist.com^ +||cattell.loanzify.app^ +||cclink.carfax.com^ +||cdanjoyner4374.myre.io^ +||cdl.lvsafe.io^ +||cdl2.booksy.com^ +||cfaexam.quantresear.ch^ +||cfb.8it.me^ +||chef.getmenoo.com^ +||chef.newtrina.com^ +||chelsea.clicks.hqo.co^ +||circle.pandasuite.io^ +||citizenship.quantresear.ch^ +||cl.inhaabit.com^ +||clevertapsendgrid.branch.rocks^ +||click-staging.food.mercato.com^ +||click-staging.getdreams.co^ +||click-testing.moselo.com^ +||click.aaptiv.com^ +||click.bible.com^ +||click.bitesquad.com^ +||click.blueapron.com^ +||click.carousell.com^ +||click.community.carousell.com^ +||click.depop.com^ +||click.devemails.skechers.com^ +||click.dice.com^ +||click.drizly.com^ +||click.e.affirm.com^ +||click.e.progressive.com^ +||click.e.tdbank.com^ +||click.em.soothe.com^ +||click.email.houndapp.com^ +||click.email.soundhound.com^ +||click.emails.creditonebank.com^ +||click.favordelivery.com^ +||click.food.mercato.com^ +||click.glamsquad.com^ +||click.instacartemail.com^ +||click.mail.carousell.com^ +||click.mail.thecarousell.com^ +||click.mail.theknot.com^ +||click.marketing.carousell.com^ +||click.moselo.com^ +||click.pockee.com^ +||click.redditmail.com^ +||click.signaturemarket.co^ +||click.sutra.co^ +||click.totallymoney.com^ +||click.transactional.carousell.com^ +||click.trycaviar.com^ +||click.trycobble.com^ +||click1.e.audacy.com^ +||click1.e.radio.com^ +||click1.email-postup.branch.rocks^ +||click1.email.audacy.com^ +||click2.email.ticketmaster.com^ +||clicked.ebates.com^ +||clicks.6thstreet.com^ +||clicks.burgerking.co.uk^ +||clicks.drizly.com^ +||clicks.email.shakeshack.com^ +||clicks.equinoxplus.com^ +||clicks.exploreshackle.app^ +||clicks.flaming.burger-king.ch^ +||clicks.food.mercato.com^ +||clicks.kfc.co.uk^ +||clicks.kfc.fr^ +||clicks.lifesum.com^ +||clicks.metronautapp.com^ +||clicks.point.app^ +||clicks.rallyrd.com^ +||clicks.shakeshack.com^ +||clicks.staging.worldremit.com^ +||clicks.thehive.hqo.co^ +||clicks.tunein.com^ +||clicks.variis.com^ +||clicks2.hqo.co^ +||clients.belairdirect.com^ +||clients.intact.ca^ +||clients.nbc-insurance.ca^ +||clk.mindfulsuite.com^ +||cltr.irlmail.org^ +||cmflinks.provesio.com^ +||cn1.stadiumgoods.com^ +||cn2.stadiumgoods.com^ +||cname.pebmed.com.br^ +||collect.ezidox.com^ +||colors.chamoji.com^ +||community.keeperz.app^ +||connect.goziohealth.com^ +||connect.huru.ai^ +||connect.im8.net^ +||connect.pixellot.link^ +||connectmychart.goziohealth.com^ +||content.booksplusapp.com^ +||content.mini.pix.style^ +||content.pix.style^ +||content.stage.mini.pix.style^ +||content.yole365.com^ +||content.youmiam.com^ +||contractor-app.buildforce.com^ +||converge.headuplabs.com^ +||cooking-app.lkk.com^ +||cp.rootielearning.com^ +||cq.hq1.influitive.com^ +||crepemania.openapp.link^ +||crew-qa.zubie.com^ +||crew.spektare.tv^ +||crew.zubie.com^ +||crrm.onjoyri.de^ +||crypto.egghead.link^ +||cscsexam.quantresear.ch^ +||ct-dev.taskhuman.com^ +||ct.irl.co^ +||ct.irl.com^ +||ct.irlmail.org^ +||ct.taskhuman.com^ +||ctd.drivescore.com^ +||cttest.branch.rocks^ +||cucaido.abphotos.link^ +||culture.pandasuite.io^ +||custom.tonyle.co^ +||customer.libertycarz.com^ +||cz-anag.m-shop.me^ +||cz-babynabytek.m-shop.me^ +||cz-babyplaza.m-shop.me^ +||cz-batteryimport.m-shop.me^ +||cz-cassidi.m-shop.me^ +||cz-countrylife.m-shop.me^ +||cz-efitness.m-shop.me^ +||cz-fightstore.m-shop.me^ +||cz-fitness007.m-shop.me^ +||cz-grafficon.m-shop.me^ +||cz-joealex.m-shop.me^ +||cz-laznejupiter.m-shop.me^ +||cz-myhealth.m-shop.me^ +||cz-newbag.m-shop.me^ +||cz-nobilistilia.m-shop.me^ +||cz-originalstore.m-shop.me^ +||cz-rekant.m-shop.me^ +||cz-rychleleky.m-shop.me^ +||cz-sasoo.m-shop.me^ +||cz-scootshop.m-shop.me^ +||cz-styx.m-shop.me^ +||cz-tattoomania.m-shop.me^ +||cz-topalkohol.m-shop.me^ +||cz-topgal.m-shop.me^ +||cz-trenyrkarna.m-shop.me^ +||cz-tropicliberec.m-shop.me^ +||cz-velkykosik.m-shop.me^ +||d-app.progressive.com^ +||d-snapshotapp.progressive.com^ +||d-staging.groc.press^ +||d.cybtel.com^ +||d.delahorro.app^ +||d.groc.press^ +||d.jugnoo.in^ +||d.mail.levi.com^ +||d.shopprecouriers.com^ +||d.stay-app.com^ +||d.whoscall.com^ +||d.xapcard.com^ +||d6ek.pandasuite.io^ +||dart.onjoyri.de^ +||dashboardbntest.branchcustom.xyz^ +||dba4.pandasuite.io^ +||ddlbr.timesclub.co^ +||de-metalshop.m-shop.me^ +||dealfastfood.openapp.link^ +||debug-inform.liilix.com^ +||debug-r.rover.com^ +||deep.mimizoo.dev^ +||deep.mlmtool.in^ +||deep.plant.chat^ +||deep.souk.com.br^ +||deeplink-app.olympia.nl^ +||deeplink-staging.tops.co.th^ +||deeplink.alpha.aspiration.com^ +||deeplink.api-sandbox.notarycam.com^ +||deeplink.app.notarycam.com^ +||deeplink.aspiration.com^ +||deeplink.autotrader.com.au^ +||deeplink.dashnow.my^ +||deeplink.estheticon.com^ +||deeplink.gocover.co.za^ +||deeplink.goodmeasures.com^ +||deeplink.instacartemail.com^ +||deeplink.intelligence.weforum.org^ +||deeplink.lamsaworld.com^ +||deeplink.locokids.cn^ +||deeplink.mobile360.io^ +||deeplink.newsandbox.notarycam.com^ +||deeplink.oxstreet.com^ +||deeplink.ring.md^ +||deeplink.supergreat.com^ +||deeplink.tytod.com^ +||deeplink.wagr.ai^ +||deeplink.wbnc.99array.com^ +||deeplink.winespectator.com^ +||deeplinkdev.upoker.net^ +||deeplinks.amex.dynamify.com^ +||deeplinks.breaz.dynamify.com^ +||deeplinks.efeed.dynamify.com^ +||deeplinks.everyday.dynamify.com^ +||deeplinks.mindtickle.com^ +||deeplinks.myyogateacher.com^ +||deeplinks.pebblebee.com^ +||deeplinks.twelve.dynamify.com^ +||deeplinktest.yooture.info^ +||deeplinkuat.upoker.net^ +||delete-me-2.branchcustom.xyz^ +||delete-me.branchcustom.xyz^ +||delikoko.openapp.link^ +||delivery.email-pepipost.branch.rocks^ +||delivery.marketing.boutiqaat.com^ +||demo.gomi.do^ +||demojobsapp.epoise.com^ +||denver.thexlife.co^ +||descarga.veikul.com^ +||descargar.billeteramango.com^ +||descargar.telocompro.com.bo^ +||dev-app.insprd.co^ +||dev-business.stc.com.sa^ +||dev-deeplink.bigrichstore.com^ +||dev-dl.oneworldonesai.com^ +||dev-get.unhedged.com.au^ +||dev-get.wysa.uk^ +||dev-link.aira.io^ +||dev-link.getprizepool.com^ +||dev-link.myoptimity.com^ +||dev-share.beaconlearningapp.com^ +||dev-share.haloedapp.com^ +||dev-share.smartfashion.ai^ +||dev.getcontact.me^ +||dev.getemoji.me^ +||dev.gldn.io^ +||dev.go.levelbank.com^ +||dev.gomi.do^ +||dev.got-it.link^ +||dev.me.thequad.com^ +||dev.smartrbuyer.com^ +||dev.sswt.co^ +||development.me.thequad.com^ +||devlink.saganworks.com^ +||devlink.sprive.com^ +||devlink.thebpr.com^ +||devlinks.slicepay.in^ +||devtest.app-birdy.com^ +||devtest.cocoon.today^ +||dgd.okiela.com^ +||digicard.jollyhires.com^ +||digital.acutx.org^ +||dinocraft-test.animocabrands.com^ +||dinocraft.animocabrands.com^ +||direct.diarymuslim.com^ +||directions.mdanderson.org^ +||distiller.kano.link^ +||dl-dev.tablelist.com^ +||dl-dev.tytocare.com^ +||dl-qa.flipagram.com^ +||dl-qa.nonton.99array.com^ +||dl-stage.6tst.com^ +||dl-stage.zola.com^ +||dl-test.4buy.net^ +||dl-test.boutiqat.com^ +||dl-test.furni-shop.com^ +||dl-test.hadaaya.com^ +||dl-test.myathath.com^ +||dl-test.rivafashion.com^ +||dl.4buy.net^ +||dl.6thstreet.com^ +||dl.amazonmusic.com^ +||dl.autopay.eu^ +||dl.benefits.express-scripts.com^ +||dl.bimbaylola.com^ +||dl.booksy.com^ +||dl.boutiqaat.com^ +||dl.buildsafe.se^ +||dl.caavo.com^ +||dl.connectedboat.eu^ +||dl.correspondence.evernorth.com^ +||dl.dinngo.co^ +||dl.elaw.om^ +||dl.flipagram.com^ +||dl.flipkartwholesale.com^ +||dl.getdrivemark.com^ +||dl.grip.events^ +||dl.hadaaya.com^ +||dl.health-programs.express-scripts.com^ +||dl.klinq.com^ +||dl.mail.accredo.com^ +||dl.mail.express-scripts.com^ +||dl.manscore.com^ +||dl.nalbes.com^ +||dl.nekropol-khv.ru^ +||dl.oneworldonesai.com^ +||dl.orders.accredo.com^ +||dl.orders.express-scripts.com^ +||dl.popclub.co.in^ +||dl.purplle.com^ +||dl.right2vote.in^ +||dl.rivafashion.com^ +||dl.shopwell.com^ +||dl.tablelist.com^ +||dl.thebeat.co^ +||dl.tytocare.com^ +||dl.wooribank.com.kh^ +||dl.workindia.in^ +||dl.zola.com^ +||dl2.brandatt.com^ +||dldev.wooribank.com.kh^ +||dlh1.hilton.com^ +||dlink-staging.blueapron.com^ +||dlink.blueapron.com^ +||dlink.hsdyn.com^ +||dlink.upperinc.com^ +||dlp.egghead.link^ +||dls.guidrr.com^ +||dluat.pokerbros.net^ +||dluat.supremapoker.net^ +||do.exaai.chat^ +||do.usefireside.com^ +||domainbntest.branchcustom.xyz^ +||domino.flycl.ps^ +||download-staging.planify.io^ +||download.backpackergame.com^ +||download.bonnti.com^ +||download.coinseed.co^ +||download.connectie.com^ +||download.dackinc.com^ +||download.frolit.io^ +||download.getneema.com^ +||download.gravitus.com^ +||download.headhelp.io^ +||download.helponymous.com^ +||download.ibuzza.net^ +||download.innit.com^ +||download.joingofree.com^ +||download.kesh5.co.il^ +||download.kuailefun.com^ +||download.milkpot.com^ +||download.parkunload.com^ +||download.planify.io^ +||download.poolking.in^ +||download.quizdom.com^ +||download.quizdom.gr^ +||download.sendstack.africa^ +||download.sharexpere.com^ +||download.shiftsmart.com^ +||download.spotangels.com^ +||download.supercoating.com.hk^ +||download.wearelistening.co.nz^ +||download.withu.fit^ +||download.yuehlia.com^ +||download.zikirapp.com^ +||dp.tuex.ca^ +||drive.carpoollogistics.com^ +||drive.waitrapp.com^ +||driver.dctaxi.com^ +||driver.jugnoo.in^ +||e.e.themighty.com^ +||e.mail.levi.com^ +||e.shop.app^ +||e.synchronybank.com^ +||e.vcty.co^ +||e035.pandasuite.io^ +||e246.pandasuite.io^ +||e403.pandasuite.io^ +||eat.newtrina.com^ +||ebony.black.news^ +||edu.quizdom.gr^ +||educationlink.clear360.com^ +||ee93.pandasuite.io^ +||ef71.pandasuite.io^ +||elgreco.openapp.link^ +||elijah.tantawy.app^ +||elinks.dice.com^ +||em.getsimpleprints.com^ +||em.touchtunes.com^ +||em6802.musesapp.com^ +||email-activecampaign.branch.rocks^ +||email-activecampaign.keylyst.com^ +||email-adobe.branch.rocks^ +||email-appboy.branch.rocks^ +||email-betaout.branch.rocks^ +||email-bronto-stage.branch.rocks^ +||email-bronto.branch.rocks^ +||email-bss-new.branch.rocks^ +||email-campmon.branch.rocks^ +||email-cheetahmail.branch.rocks^ +||email-click-test-for-branch.vts.com^ +||email-clicks.vts.com^ +||email-cm.branch.rocks^ +||email-cordial.branch.rocks^ +||email-eloqua.branch.rocks^ +||email-emarsys.branch.rocks^ +||email-epsilon.branch.rocks^ +||email-full-sailthru.branch.rocks^ +||email-hubspot.branch.rocks^ +||email-icubespro.branch.rocks^ +||email-insider.branch.rocks^ +||email-iterable.branch.rocks^ +||email-klaviyo.branch.rocks^ +||email-link.mg-staging.surkus.com^ +||email-link.mg.surkus.com^ +||email-listrak.branch.rocks^ +||email-mailjet.branch.rocks^ +||email-mailup.branch.rocks^ +||email-mandrill.branch.rocks^ +||email-mandrill.id90travel.com^ +||email-marketo.branch.rocks^ +||email-messagegears.branch.rocks^ +||email-moengage.branch.rocks^ +||email-rapidmail.branch.rocks^ +||email-sailthru.branch.io^ +||email-selligent.branch.rocks^ +||email-sender.branch.rocks^ +||email-sendgrid.branch.rocks^ +||email-simple-sailthru.branch.rocks^ +||email-smartech.branch.rocks^ +||email-sp.branch.rocks^ +||email-staging.goodrx.com^ +||email-test.dmcperforma.com.br^ +||email-test.wirexapp.com^ +||email-vero.branch.rocks^ +||email-yesmail.branch.rocks^ +||email.agfuse.com^ +||email.app.theiconic.com.au^ +||email.branch.ninomail.com^ +||email.branchio.mg.kreezee.com^ +||email.chope.co^ +||email.clearscore.ca^ +||email.clearscore.co.za^ +||email.clearscore.com.au^ +||email.clearscore.com^ +||email.customerio.branch.rocks^ +||email.dev.mypopshop.app^ +||email.devishetty.com^ +||email.email-cusomerio.branch.rocks^ +||email.everyonesocial.apptio.com^ +||email.everyonesocial.bostonscientific.com^ +||email.everyonesocial.circle.com^ +||email.everyonesocial.colt.net^ +||email.everyonesocial.coupa.com^ +||email.everyonesocial.dykema.com^ +||email.everyonesocial.frontier.com^ +||email.everyonesocial.gumgum.com^ +||email.everyonesocial.hmausa.com^ +||email.everyonesocial.indeed.com^ +||email.everyonesocial.inmoment.com^ +||email.everyonesocial.integritystaffing.com^ +||email.everyonesocial.lexisnexisrisk.com^ +||email.everyonesocial.lumen.com^ +||email.everyonesocial.merckgroup.com^ +||email.everyonesocial.neat.no^ +||email.everyonesocial.ni.com^ +||email.everyonesocial.notarize.com^ +||email.everyonesocial.nuskin.com^ +||email.everyonesocial.rubrik.com^ +||email.everyonesocial.united.com^ +||email.everyonesocial.unity.com^ +||email.floatme.io^ +||email.fretello.com^ +||email.goodrx.com^ +||email.happ.social^ +||email.headsuphealth.com^ +||email.inteng-testing.com^ +||email.link.flipgive.com^ +||email.luminpdf.com^ +||email.mail.floatme.io^ +||email.member.theknot.com^ +||email.mg.everyonesocial.com^ +||email.mg.repuzzlic.com^ +||email.mg.test.everyonesocial.com^ +||email.msg.navyfederal.org^ +||email.msg.workday.com^ +||email.mypopshop.app^ +||email.pac-12.com^ +||email.pray.com^ +||email.qa.member.theknot.com^ +||email.reflectlyapp.com^ +||email.rentomojo.in^ +||email.rentomojo.org^ +||email.rentomojomailer.com^ +||email.shouta.co^ +||email.social.avasecurity.com^ +||email.social.f5.com^ +||email.social.qualtrics.com^ +||email.staging-link.flipgive.com^ +||email.strava.com^ +||email.thislife.com^ +||email.wingocard.com^ +||email.wirexapp.com^ +||email1.strava.com^ +||emailct.enfavr.com^ +||emailer45.clovinfo.com^ +||emails.ahctv.com^ +||emails.animalplanet.com^ +||emails.app.allcal.com^ +||emails.cookingchanneltv.com^ +||emails.destinationamerica.com^ +||emails.discoverygo.com^ +||emails.discoverylife.com^ +||emails.foodnetwork.com^ +||emails.hgtv.com^ +||emails.investigationdiscovery.com^ +||emails.motortrend.com^ +||emails.sciencechannel.com^ +||emails.shopupp.com^ +||emails.tlc.com^ +||emails.travelchannel.com^ +||emails.verishop.com^ +||emails.watchown.tv^ +||emb.soothe.com^ +||emlink.hermo.my^ +||emm.ca.puma.com^ +||emm.us.puma.com^ +||emsexam.quantresear.ch^ +||encuestas.billeteramango.com^ +||enroll.workforcewellness.com^ +||epoisejobs.epoise.com^ +||epoisepreptest.epoise.com^ +||espaniapizza.openapp.link^ +||espressoroom.openapp.link^ +||eu.gldn.io^ +||euapp.levi.com^ +||eureka-app.eurekaplatform.org^ +||event.spektare.com^ +||eventos.emkt.ingressorapido.com.br^ +||exchange.happ.social^ +||eximius.epoise.com^ +||exitachieve.myre.io^ +||expertsender.branch.rocks^ +||exprealty377.myre.io^ +||f.a23.in^ +||f928.pandasuite.io^ +||face2.ishoppingapp.com^ +||familydoctor-app.hotdoc.com.au^ +||familypractice-app.hotdoc.com.au^ +||fast.icars.cc^ +||fb.echovisuals.com^ +||feedback.campbellmetal.com^ +||feedback.imsmetals.com^ +||feedme.use-beez.com^ +||fetch.gethuan.com^ +||ff.pdf.ac^ +||fight.offtherecord.com^ +||fishing.daigostudio.com^ +||fleet-eml.postmates.com^ +||foodsouvlakibar.openapp.link^ +||fraudandcyberawareness.safeguard.hsbc.com^ +||friends.hyll.com^ +||fscareers.epoise.com^ +||fscareerstest.epoise.com^ +||ft.groc.press^ +||ftp.happ.social^ +||fullerton-app.hotdoc.com.au^ +||furnituredl.istaging.co^ +||fut.mondo.link^ +||g.getsimpler.me^ +||g.pathsha.re^ +||g.staging.pathsha.re^ +||g2048.rgluk.com^ +||g993dvyzae.branch.salesfloor.net^ +||ga.groc.press^ +||gallerysouvlakeri.openapp.link^ +||gawayez.e-postserv.com^ +||gb-asymbo.m-shop.me^ +||gear.echovisuals.com^ +||get-beta.kabbee.com^ +||get-dev.mastersapp.com^ +||get-lor.tacter.app^ +||get-stage.petdesk.com^ +||get-staging.even.com^ +||get-staging.iynk.com^ +||get-staging.soloyal.co^ +||get-test-employer.switchapp.com^ +||get-test.avakin.com^ +||get-test.livekick.com^ +||get-test.switchapp.com^ +||get.1tap.build^ +||get.1tap.io^ +||get.air-measure.com^ +||get.aivatar.co^ +||get.akim.bo^ +||get.amity.io^ +||get.atakama.com^ +||get.avakin.com^ +||get.babyalbum.com^ +||get.bambinoapp.com^ +||get.basicprint.co^ +||get.betheshyft.com^ +||get.biblechat.ai^ +||get.bigideas.club^ +||get.bizly.co^ +||get.buzzwallet.io^ +||get.call-levels.com^ +||get.catch.co^ +||get.cheapshot.co^ +||get.cityworthapp.com^ +||get.codehub.ninja^ +||get.conciergecare.app^ +||get.cryptocontrol.io^ +||get.dctaxi.com^ +||get.deplike.com^ +||get.emma-app.com^ +||get.endur.app^ +||get.even.com^ +||get.firstline.org^ +||get.flareapp.co^ +||get.found.app^ +||get.fudigo.com^ +||get.fullcourt.io^ +||get.getblood.com^ +||get.helloheart.com^ +||get.hiya.com^ +||get.homemealdeal.com^ +||get.howdy.co^ +||get.hugoapp.com^ +||get.ingomoney.com^ +||get.instalocum.com^ +||get.jan.ai^ +||get.jaranda.kr^ +||get.kabbee.com^ +||get.layer.com^ +||get.livekick.com^ +||get.loanzify.com^ +||get.lookout.com^ +||get.loopmobility.co^ +||get.lu.gg^ +||get.mastersapp.com^ +||get.medifi.com^ +||get.megastarfinancial.com^ +||get.miso.kr^ +||get.mistplay.com^ +||get.mndbdy.ly^ +||get.mojo.sport^ +||get.muchbetter.com^ +||get.myoyster.mx^ +||get.nala.money^ +||get.nfit.club^ +||get.noknok.co^ +||get.noonlight.com^ +||get.oneatwork.app^ +||get.openph.one^ +||get.peoople.app^ +||get.peoople.co^ +||get.plural.com^ +||get.pockit.com^ +||get.prapo.com^ +||get.printt.com^ +||get.printtapp.com^ +||get.prismapp.com^ +||get.pslove.com^ +||get.pslove.dev^ +||get.pulsega.me^ +||get.qapital.com^ +||get.recolor.info^ +||get.reward.me^ +||get.riyazapp.com^ +||get.roomiapp.com^ +||get.sakay.ph^ +||get.schoolbuddy.app^ +||get.seedly.sg^ +||get.sidekick.health^ +||get.smart-guide.org^ +||get.snapask.com^ +||get.soloyal.co^ +||get.somontreal.ca^ +||get.speaky.com^ +||get.spenn.com^ +||get.spot.so^ +||get.staging.tellusapp.com^ +||get.starguide.app^ +||get.stationhead.com^ +||get.switchapp.com^ +||get.telexa.mn^ +||get.tellusapp.com^ +||get.thesmartapp.me^ +||get.toffapp.co^ +||get.tunableapp.com^ +||get.tunity.com^ +||get.utelly.com^ +||get.venmo.com^ +||get.vent.co^ +||get.vero.co^ +||get.vida.co^ +||get.videokits.com^ +||get.viggo.com^ +||get.viggo.energy^ +||get.watchcat.app^ +||get.wawa.games^ +||get.weme.sh^ +||get.wemoms.com^ +||get.wishmindr.com^ +||get.wyndy.com^ +||get.wysa.uk^ +||get.yellw.co^ +||get.yugengamers.com^ +||getapp.eltiempo.es^ +||getapp.joinleaf.com^ +||getapp.keepy.me^ +||getapp.marinemax.com^ +||getapp.myhappyforce.com^ +||getapp.priceza.com^ +||getdev.payso.ca^ +||getl4w.lookout.com^ +||gets.myoyster.mx^ +||gettunable.affinityblue.com^ +||geystikigonia.openapp.link^ +||gh.vsee.me^ +||ghd.vsee.me^ +||gi.inhaabit.com^ +||go-dev.callersmart.com^ +||go-dev.qantaswellbeing.com^ +||go-staging.qantaswellbeing.com^ +||go-test.bigspring.io^ +||go-test.goflux.de^ +||go-test.homepass.com^ +||go-test.karos.fr^ +||go-test.string.me^ +||go-test.tamed.fdm.dk^ +||go-test.wondavr.com^ +||go-uat.qantaswellbeing.com^ +||go.17app.co^ +||go.4010.ru^ +||go.4sq.com^ +||go.aero.com^ +||go.alpha.avant.com^ +||go.alphaapp.sharekey.com^ +||go.anifox.net^ +||go.app.sharekey.com^ +||go.asian.mingle.com^ +||go.askbee.my^ +||go.audacy.com^ +||go.augin.app^ +||go.aussie.mingle.com^ +||go.aussiesocial.innovatedating.com^ +||go.aussingles.ignite.technology^ +||go.avant.com^ +||go.backtest.io^ +||go.betql.co^ +||go.bigo.tv^ +||go.bilt.page^ +||go.blackppl.innovatedating.com^ +||go.bluecrewjobs.com^ +||go.bookmate.com^ +||go.booksy.com^ +||go.bouncie.com^ +||go.boxtiq.com^ +||go.brazil.innovatedating.com^ +||go.bro.social^ +||go.callersmart.com^ +||go.calo.app^ +||go.cardless.com^ +||go.cb-w.com^ +||go.channel.io^ +||go.checkncall.com^ +||go.cheerz.com^ +||go.chile.innovatedating.com^ +||go.china.innovatedating.com^ +||go.christsingles.mingle.com^ +||go.citizen.com^ +||go.clickipo.com^ +||go.colombia.innovatedating.com^ +||go.covoitici.fr^ +||go.cwtv.com^ +||go.dateinasia.innovatedating.com^ +||go.datingapp.mingle.com^ +||go.dev.hbnb.io^ +||go.dev.upnext.in^ +||go.devapp.sharekey.com^ +||go.develapme.com^ +||go.dgsta.com^ +||go.divorced.ignite.technology^ +||go.dngn.kr^ +||go.dreamgaragealabama.com^ +||go.driveclutch.com^ +||go.drivemyfreedom.com^ +||go.drivencarsallaccess.ca^ +||go.dubbi.com.br^ +||go.dutchbros.link^ +||go.ebat.es^ +||go.ebates.ca^ +||go.egypt.innovatedating.com^ +||go.emails.discoveryplus.com^ +||go.europe.mingle.com^ +||go.everfave.com^ +||go.ezidox.com^ +||go.faithfollow.com^ +||go.fem.mingle.com^ +||go.fiestabites.com^ +||go.filipinocupid.date^ +||go.filipinosingles.ignite.technology^ +||go.findaplayer.com^ +||go.findplay.it^ +||go.fitfusion.com^ +||go.flexwheels.com^ +||go.flipauto.com^ +||go.flipfit.com^ +||go.flyreel.co^ +||go.france.innovatedating.com^ +||go.freework.com^ +||go.frescofrigo.app^ +||go.frip.kr^ +||go.futupilot.com^ +||go.fyndi.ng^ +||go.gaia.com^ +||go.gaydate.ignite.technology^ +||go.gaysingles.ignite.technology^ +||go.germansingles.ignite.technology^ +||go.germany.innovatedating.com^ +||go.getcyclique.com^ +||go.getone.today^ +||go.ginmon.de^ +||go.gridwise.io^ +||go.hbnb.io^ +||go.hcmuaf.edu.vn^ +||go.heleman.org^ +||go.heybianca.co^ +||go.heyho.my^ +||go.holidayextras.co.uk^ +||go.homear.io^ +||go.homepass.com^ +||go.hongkong.innovatedating.com^ +||go.hongkongcupid.date^ +||go.huterra.com^ +||go.ibi.bo^ +||go.indo.innovatedating.com^ +||go.indonesiacupid.co^ +||go.insight.tv^ +||go.iran.innovatedating.com^ +||go.israel.innovatedating.com^ +||go.italy.innovatedating.com^ +||go.italysingles.ignite.technology^ +||go.japan.ignite.technology^ +||go.japan.innovatedating.com^ +||go.jillianmichaels.com^ +||go.jobtoday.com^ +||go.jsh.mingle.com^ +||go.justarrivd.com^ +||go.karos.fr^ +||go.kasa.co.kr^ +||go.keenvibe.com^ +||go.keenvibe.de^ +||go.korea.innovatedating.com^ +||go.koreacupid.co^ +||go.koreasingles.ignite.technology^ +||go.kvrma.net^ +||go.labonneadresse.ouest-france.fr^ +||go.lamour.ignite.technology^ +||go.lanemove.com^ +||go.latin.mingle.com^ +||go.latincupid.date^ +||go.lawly.app^ +||go.lbb.in^ +||go.leaf.fm^ +||go.lejour.com.br^ +||go.letspepapp.com^ +||go.lexuscompletesubscription.com^ +||go.lezsingles.ignite.technology^ +||go.list-it.ai^ +||go.llapac.com^ +||go.locosonic.com^ +||go.lukat.me^ +||go.lunchr.co^ +||go.majelan.com^ +||go.makwajy.com^ +||go.malay.innovatedating.com^ +||go.malaysiacupid.co^ +||go.malaysingles.ignite.technology^ +||go.mapstr.com^ +||go.mashable.com^ +||go.medicall.cc^ +||go.mercedesbenzsouthorlando.com^ +||go.merqueo.com^ +||go.mexicancupid.date^ +||go.mexico.innovatedating.com^ +||go.mindfi.co^ +||go.moka.ai^ +||go.muglife.com^ +||go.muslim.mingle.com^ +||go.muzz.com^ +||go.myfave.com^ +||go.mylike-app.com^ +||go.mytwc.com.au^ +||go.naratourapp.com^ +||go.netherlands.innovatedating.com^ +||go.noondate.com^ +||go.norway.innovatedating.com^ +||go.ondutydoc.com^ +||go.onecart.co.za^ +||go.onefc.com^ +||go.ortholive.com^ +||go.palpita.net^ +||go.panda-click.com^ +||go.panda.sa^ +||go.parents.mingle.com^ +||go.peak.net^ +||go.petmire.com^ +||go.piccolo.mobi^ +||go.picsart.com^ +||go.pinoy.innovatedating.com^ +||go.player2app.com^ +||go.poland.innovatedating.com^ +||go.polen-app.com^ +||go.porschedrive.com^ +||go.porscheparkingplus.com^ +||go.portfoliobyopenroad.com^ +||go.portugal.innovatedating.com^ +||go.power.trade^ +||go.powunity.com^ +||go.prealpha.avant.com^ +||go.prodapp.sharekey.com^ +||go.pubu.tw^ +||go.qantaswellbeing.com^ +||go.queer.ignite.technology^ +||go.rakuten.com^ +||go.rate.sh^ +||go.ratengoods.com^ +||go.real.co^ +||go.russia.innovatedating.com^ +||go.rzr.to^ +||go.saudiarabia.innovatedating.com^ +||go.seniorppl.mingle.com^ +||go.shokshak.com^ +||go.shop.app^ +||go.shoppremiumoutlets.com^ +||go.sirved.com^ +||go.skippy.ai^ +||go.smartjobr.com^ +||go.snipsnap.it^ +||go.socar.kr^ +||go.socar.my^ +||go.socialvenu.com^ +||go.southafrica.ignite.technology^ +||go.southafrica.innovatedating.com^ +||go.southafricacupid.co^ +||go.spain.innovatedating.com^ +||go.spot.com^ +||go.stagger.co^ +||go.staging.hbnb.io^ +||go.steps.me^ +||go.stgapp.sharekey.com^ +||go.streetbees.app^ +||go.stshr.co^ +||go.subaru-justdrive.com^ +||go.subscribe.mikealbert.com^ +||go.suiste.app^ +||go.sw.iftly.in^ +||go.sweet.io^ +||go.switzerland.innovatedating.com^ +||go.tab.com.au^ +||go.tamed.fdm.dk^ +||go.teepic.com^ +||go.teepik.com^ +||go.tellusapp.com^ +||go.test.mindfi.co^ +||go.test.shop.app^ +||go.thai.innovatedating.com^ +||go.tinder.com^ +||go.topicit.net^ +||go.trevo.my^ +||go.turkey.innovatedating.com^ +||go.twi.sm^ +||go.uae.innovatedating.com^ +||go.uk.innovatedating.com^ +||go.ukraine.innovatedating.com^ +||go.uksingles.ignite.technology^ +||go.unverbluemt.de^ +||go.usecaya.com^ +||go.venezuela.innovatedating.com^ +||go.viet.innovatedating.com^ +||go.voot.com^ +||go.voypost.com^ +||go.vsee.me^ +||go.wanna.com^ +||go.washland.ae^ +||go.webtoons.com^ +||go.weecare.co^ +||go.werbleapp.com^ +||go.whatchu.com^ +||go.wondavr.com^ +||go.worldwinner.com^ +||go.wu.com^ +||go.you-app.com^ +||go.zakatpedia.com^ +||go.zapyle.com^ +||go.zartoo.ir^ +||go.zebra.i-nox.de^ +||go.zoomex.com^ +||go.zvooq.com^ +||go2.letscliq.com^ +||goa.dngn.kr^ +||god.vsee.me^ +||godev.steps.me^ +||gone.pronhub.fun^ +||goseri-link.mysuki.io^ +||gotest.bouncie.com^ +||gotest.onecart.co.za^ +||gotest.onefc.com^ +||gotest.real.co^ +||gotest.taillight.com^ +||goto.nearlist.com^ +||goto.rosegal.com^ +||goto.zaful.com^ +||gotoaws.dresslily.com^ +||gotoaws.rosegal.com^ +||gotoaws.zaful.com^ +||gotoexp.dresslily.com^ +||gpplus-app.hotdoc.com.au^ +||gr.a23.in^ +||grc.openapp.link^ +||grn.openapp.link^ +||guardian-app.hotdoc.com.au^ +||guitarlearning.deplike.com^ +||guterrat.gaius.app^ +||gyradiko.openapp.link^ +||hanadev.branch.rocks^ +||hanastage.branch.rocks^ +||hanatest.branch.rocks^ +||harman.epoise.com^ +||harmantest.epoise.com^ +||harpra-companion-test.harvinar.com^ +||harpra-companion.harvinar.com^ +||hdu-deeplinks.mindtickle.com^ +||hello.ola.app^ +||hello.steadyapp.com^ +||hello.wellocution.com^ +||hf.forevernetworks.com^ +||hi.hipcamp.com^ +||hi.inhaabit.com^ +||hi.littlepixi.com^ +||hi.syllable.ai^ +||hi.wooribank.com^ +||hipizza.openapp.link^ +||hol.dir.tvsmiles.tv^ +||hootsuite.branch.rocks^ +||hop.dttd.app^ +||host.roxiapp.com^ +||hpark-adobe.branch.rocks^ +||hpark-beta-moengage.branch.rocks^ +||hpark-brazesp.branch.rocks^ +||hpark-iterable.branch.rocks^ +||hpark-iterable2.branch.rocks^ +||hpark-marketo.branch.rocks^ +||hpark.branch.rocks^ +||hparksendgrid.branch.rocks^ +||hparksendgridstage.branch.rocks^ +||hst2-invite.ander.ai^ +||hu-topgal.m-shop.me^ +||hubert.branch.rocks^ +||i-dev.villa.ge^ +||i-staging.villa.ge^ +||i.airtel.in^ +||i.appbox.me^ +||i.carry.bible^ +||i.degoo.com^ +||i.getemoji.me^ +||i.honk.me^ +||i.lf360.co^ +||i.live.xyz^ +||i.livexyz.com^ +||i.morons.us^ +||i.play.vividpicks.com^ +||i.poker2u.app^ +||i.pokerbros.net^ +||i.raise.me^ +||i.rttd.io^ +||i.sandbox.love^ +||i.shelf.im^ +||i.spyn.co^ +||i.temiz.co^ +||i.test.airtel.in^ +||i.toywords.games^ +||i.upoker.net^ +||ibf.smrtp.link^ +||igorsgtest.branch.rocks^ +||ilinks.petalcard.com^ +||ilpostoplus.openapp.link^ +||imagica.brain.ai^ +||imap.happ.social^ +||in.invitd.us^ +||in.upipr.co^ +||indir.boowetr.com^ +||indir.pembepanjur.com^ +||influencer.picklebutnotcucumber.com^ +||info.gyg.com.au^ +||inform.fsm.kz^ +||inform.liilix.com^ +||install.ibeor.com^ +||install.mushroomgui.de^ +||install.ottoradio.com^ +||install.playgpl.com^ +||install.pranavconstructions.com^ +||install.xchange.sabx.com^ +||int-shares.ri.la^ +||internet.degoo.com^ +||inv.mksp.io^ +||invest.rubicoin.com^ +||invitation.friendshipwallet.com^ +||invitation.mindbliss.com^ +||invitation.reyesmagos.app^ +||invitation.xmastimeapp.com^ +||invite-alternate.ritual.co^ +||invite-demo.easypark.net^ +||invite-sandbox.ritual.co^ +||invite-test.sadapay.pk^ +||invite.abra.com^ +||invite.airtabapp.com^ +||invite.ak-ecosystem.com^ +||invite.allflex.global^ +||invite.camfrog.com^ +||invite.carselonadaily.com^ +||invite.chalo.com^ +||invite.cippy.it^ +||invite.circleparties.com^ +||invite.coinmine.com^ +||invite.coinstats.app^ +||invite.colu.com^ +||invite.easypark.net^ +||invite.entrylevel.net^ +||invite.fashom.com^ +||invite.getwaitnot.com^ +||invite.gosunpro.com^ +||invite.gust.show^ +||invite.icars.cc^ +||invite.juke.ly^ +||invite.openhouse.study^ +||invite.paltalk.net^ +||invite.piceapp.com^ +||invite.ritual.co^ +||invite.sadapay.pk^ +||invite.supersonic.run^ +||invite.traktivity.com^ +||invite.trueteams.co^ +||invite.urbanclap.com^ +||invite.youmail.com^ +||invites.nospace.app^ +||io.piupiu.io^ +||iob.imgur.com^ +||ios.asktagapp.com^ +||ipn-app.hotdoc.com.au^ +||iqpizza.openapp.link^ +||iterable.convoy.com^ +||ivonitsa.openapp.link^ +||jhmkopen.minortom.net^ +||jobs.smpgn.co^ +||join-staging.kloaked.app^ +||join-test.pre-prod.spur.io^ +||join-test.step.com^ +||join.air.me^ +||join.airvet.com^ +||join.amorus.net^ +||join.asteride.co^ +||join.belive.sg^ +||join.blimp.homes^ +||join.callie.app^ +||join.deetzapp.com^ +||join.entrylevel.net^ +||join.evercoin.com^ +||join.fitgrid.com^ +||join.fusely.app^ +||join.gerak.asia^ +||join.getstarsapp.com^ +||join.haha.me^ +||join.homeyapp.net^ +||join.hu-manity.co^ +||join.hypercare.com^ +||join.kloaked.app^ +||join.lapse.app^ +||join.listmakerapp.com^ +||join.motion-app.com^ +||join.newtrina.com^ +||join.our-story.co^ +||join.parentlove.me^ +||join.pockit.com^ +||join.qa.fitgrid.com^ +||join.reakt.to^ +||join.schmooze.tech^ +||join.sizl.com^ +||join.slickapp.co^ +||join.spur.io^ +||join.staging.spur.io^ +||join.step.com^ +||join.stuypend.com^ +||join.talker.network^ +||join.thekrishi.com^ +||join.travelxp.com^ +||join.vibely.io^ +||join.vtail.co^ +||joina.rune.ai^ +||joinb.rune.ai^ +||jp.ppgamingproxy.lol^ +||jumpto.use-beez.com^ +||jupiterhealth-app.hotdoc.com.au^ +||just.playvici.com^ +||k.itribe.in^ +||k50.rtl2.de^ +||k5app.byjus.com^ +||kamchatka-io.traveler.today^ +||kartik.devishetty.com^ +||kartik.devishetty.net^ +||kd.eland.kr^ +||keyes.myre.io^ +||kingnews.burgerking.co.za^ +||kl-branch-sandbox.thekono.com^ +||kl-branch.thekono.com^ +||kotopoulathanasis.openapp.link^ +||l-t.topya.com^ +||l-test.civic.com^ +||l-test.guesthug.com^ +||l.apna.co^ +||l.audibook.si^ +||l.azarlive.com^ +||l.bhaibandhu.com^ +||l.bigbasket.com^ +||l.biglion.ru^ +||l.brightside.com^ +||l.bspace.io^ +||l.civic.com^ +||l.claphere.com^ +||l.coastapp.com^ +||l.create.canva.com^ +||l.cultgear.com^ +||l.dev.audibook.si^ +||l.du.coach^ +||l.e.domain.com.au^ +||l.engage.canva.com^ +||l.getpyfl.com^ +||l.gocement.com^ +||l.gpay.to^ +||l.guesthug.com^ +||l.ialoc.app^ +||l.iamfy.co^ +||l.imax.com^ +||l.itribe.in^ +||l.jayshetty.me^ +||l.kodika.io^ +||l.lyfshort.com^ +||l.m.tradiecore.com.au^ +||l.mydoki.app^ +||l.myvoleo.com^ +||l.navx.co^ +||l.newnew.co^ +||l.nflo.at^ +||l.post2b.com^ +||l.prk.bz^ +||l.redcross.or.ke^ +||l.rovo.co^ +||l.siply.in^ +||l.sqrrl.in^ +||l.support.canva.com^ +||l.supremapoker.net^ +||l.t.domain.com.au^ +||l.thumbtack.com^ +||l.topya.com^ +||l.umba.com^ +||l.unfy.ai^ +||l.urban.com.au^ +||l.uvcr.me^ +||l.voalearningenglish.in^ +||l.voleousa.com^ +||l.whizzl.com^ +||l.workoutparty.co^ +||l.your.md^ +||lapescheria.openapp.link^ +||launch.aella.app^ +||launch.meetsaturn.com^ +||launch.vypr.it^ +||lb.billing01.email-allstate.com^ +||lb.marketing01.email-allstate.com^ +||lb.quote01.email-allstate.com^ +||lb.service01.email-allstate.com^ +||ldv.midoplay.com^ +||leak.welnes.online^ +||learn.infinitylearn.com^ +||learn.mywallst.app^ +||learn.rubicoin.com^ +||leb-app.diasporaid.com^ +||lets-dev.irl.com^ +||lets.instantify.it^ +||lets.playzingus.com^ +||lets.useflash.app^ +||lets.watcho.com^ +||level.badlandgame.com^ +||levi247.levi.com^ +||lhp-mortgage.loanzify.com^ +||li.rtl2.de^ +||link-acceptance.alan.com^ +||link-app-dev.agvisorpro.com^ +||link-app-preprod.agvisorpro.com^ +||link-app-staging.agvisorpro.com^ +||link-app.agvisorpro.com^ +||link-be-acceptance.alan.com^ +||link-be.alan.com^ +||link-beta.qonto.co^ +||link-ccontact.focuscura.com^ +||link-debug.killi.io^ +||link-dev.fandompay.com^ +||link-dev.gem.co^ +||link-dev.killi.io^ +||link-dev.sensemetrics.com^ +||link-dev.tradee.com^ +||link-es-acceptance.alan.com^ +||link-es.alan.com^ +||link-mind.alan.com^ +||link-partner.btaskee.com^ +||link-qc.trycircle.com^ +||link-staging.bestest.io^ +||link-staging.killi.io^ +||link-staging.samewave.com^ +||link-staging.viivio.io^ +||link-staging.youbooq.me^ +||link-test.360vuz.com^ +||link-test.avenue.us^ +||link-test.chalknation.com^ +||link-test.divcity.com^ +||link-test.external.wealth-park.com^ +||link-test.glide.com^ +||link-test.halal-navi.com^ +||link-test.hanpath.com^ +||link-test.ianacare.team^ +||link-test.steadio.co^ +||link-test.trendstag.com^ +||link-test.tumblbug.com^ +||link-web.tatadigital.com^ +||link.1112.com^ +||link.1800contacts.com^ +||link.24go.co^ +||link.321okgo.com^ +||link.360vuz.com^ +||link.3dbear.io^ +||link.7-eleven.vn^ +||link.abandonedmonkey.codes^ +||link.adhdinsight.com^ +||link.admin.kodakmoments.com^ +||link.afterpay.com^ +||link.ag.fan^ +||link.aioremote.net^ +||link.aira.io^ +||link.airfarm.io^ +||link.alan.com^ +||link.alerts.busuu.app^ +||link.allyapp.com^ +||link.altrua.icanbwell.com^ +||link.angel.com^ +||link.angelstudios.com^ +||link.animefanz.app^ +||link.announce.busuu.app^ +||link.antwak.com^ +||link.app.carrx.com^ +||link.app.dev.fixdapp.com^ +||link.app.fixdapp.com^ +||link.app.forhers.com^ +||link.app.hims.com^ +||link.app.medintegral.es^ +||link.app.notab.com^ +||link.appewa.com^ +||link.ascension-app.com^ +||link.atlys.com^ +||link.augmentedreality.jlg.com^ +||link.auraframes.com^ +||link.automated.almosafer.com^ +||link.avenue.us^ +||link.axshealthapp.com^ +||link.babyquip.com^ +||link.bambu.dev^ +||link.beebs.app^ +||link.beforekick.com^ +||link.beforespring.com^ +||link.bellu.gg^ +||link.bemachine.app^ +||link.bestest.io^ +||link.bigroom.tv^ +||link.bluecallapp.com^ +||link.blueheart.io^ +||link.bobmakler.com^ +||link.bodylove.com^ +||link.bolsanelo.com.br^ +||link.booknet.com^ +||link.booknet.ua^ +||link.booksy.com^ +||link.bounty.com^ +||link.broadly.com^ +||link.brottsplats-app.se^ +||link.btl.vin^ +||link.buddybet.com^ +||link.build.com^ +||link.bulbul.tv^ +||link.busuu.app^ +||link.buzzwallet.io^ +||link.californiapsychics.com^ +||link.capital-wellness.icanbwell.com^ +||link.captionwriter.app^ +||link.cardgamesbybicycle.com^ +||link.cardu.com^ +||link.careerfairplus.com^ +||link.carfax.com^ +||link.cargo.co^ +||link.cdl.freshly.com^ +||link.cerego.com^ +||link.chalknation.com^ +||link.cheerz.com^ +||link.chefsclub.com.br^ +||link.classicalradio.com^ +||link.cleaninglab.co.kr^ +||link.clearsky.jlg.com^ +||link.clever.menu^ +||link.clickipo.com^ +||link.clubmanagergame.com^ +||link.cluno.com^ +||link.cofyz.com^ +||link.collectivebenefits.com^ +||link.conio.com^ +||link.covve.com^ +||link.crazyquest.com^ +||link.creatively.life^ +||link.creditonemail.com^ +||link.crowdfireapp.com^ +||link.crumbl.com^ +||link.curious.com^ +||link.curve.com^ +||link.dana.id^ +||link.daryse.com^ +||link.dawriplus.com^ +||link.debatespace.app^ +||link.debatespace.io^ +||link.deliverr.ca^ +||link.design.unum.la^ +||link.dev-portal.icanbwell.com^ +||link.dev.appewa.com^ +||link.develapme.com^ +||link.developerinsider.co^ +||link.dinifi.com^ +||link.dior.com^ +||link.discotech.me^ +||link.dishcult.com^ +||link.district34.com^ +||link.doctorcareanywhere.com^ +||link.dongnealba.com^ +||link.doopage.com^ +||link.doppels.com^ +||link.dosh.cash^ +||link.dralilabolsanelo.com^ +||link.drum.io^ +||link.dubble.me^ +||link.dvendor.com^ +||link.e.blog.myfitnesspal.com^ +||link.easy.me^ +||link.edapp.com^ +||link.eksperience.net^ +||link.electroneum.com^ +||link.electrover.se^ +||link.em.sssports.com^ +||link.email.almosafer.com^ +||link.email.bnext.es^ +||link.email.myfitnesspal.com^ +||link.email.soothe.com^ +||link.email.tajawal.com^ +||link.emblyapp.com^ +||link.empleyo.com^ +||link.epmyalptest.com^ +||link.eventconnect.io^ +||link.evergreen-life.co.uk^ +||link.everlance.com^ +||link.evolia.com^ +||link.expiwell.com^ +||link.explorz.app^ +||link.extasy.com^ +||link.external.wealth-park.com^ +||link.fabulist.app^ +||link.faithplay.com^ +||link.fanfight.com^ +||link.fanzapp.io^ +||link.farm.seedz.ag^ +||link.favorited.com^ +||link.fieldcamp.com^ +||link.financie.online^ +||link.finfinchannel.com^ +||link.finnomena.com^ +||link.fitflo.app^ +||link.fitforbucks.com^ +||link.fjuul.com^ +||link.flickplay.co^ +||link.fn365.co.uk^ +||link.foodgroup.com^ +||link.foodi.fr^ +||link.foodiapp.com^ +||link.foodliapp.com^ +||link.foodnetwork.com^ +||link.forexhero.eu^ +||link.freetrade.io^ +||link.frescoymas.com^ +||link.fretello.com^ +||link.gamebrain.co.uk^ +||link.gem.co^ +||link.geo4.me^ +||link.geoparquelitoralviana.pt^ +||link.get.discovery.plus^ +||link.getamber.io^ +||link.getbaqala.com^ +||link.getcoral.app^ +||link.getdinr.com^ +||link.getfoodly.com^ +||link.getfxguru.com^ +||link.getoutpatient.com^ +||link.getremix.ai^ +||link.getsaturday.com^ +||link.getsendit.com^ +||link.getshortcut.co^ +||link.getsigneasy.com^ +||link.giide.com^ +||link.glicrx.com^ +||link.glide.com^ +||link.global.id^ +||link.globecar.app^ +||link.gokimboo.com^ +||link.gradeproof.com^ +||link.gradeviewapp.com^ +||link.granderota.riadeaveiro.pt^ +||link.gravio.com^ +||link.guoqi365.com^ +||link.halal-navi.com^ +||link.hallow.com^ +||link.happycar.info^ +||link.harveyssupermarkets.com^ +||link.hayhayapp.se^ +||link.hbogo.com^ +||link.hbonow.com^ +||link.hd.io^ +||link.heal.com^ +||link.healthbank.io^ +||link.heartbeathealth.com^ +||link.hello-au.circles.life^ +||link.hello-sg.circles.life^ +||link.hello.unum.la^ +||link.hello2-sg.circles.life^ +||link.hellobeerapp.com^ +||link.helloclue.com^ +||link.hermanpro.com^ +||link.hey.mypostcard.com^ +||link.heycloudy.co^ +||link.heyitsbingo.com^ +||link.heymiso.app^ +||link.hiccup.dev^ +||link.hivexchange.com.au^ +||link.hobbinity.com^ +||link.hola.health^ +||link.hugoapp.com^ +||link.huuu.ge^ +||link.hyre.no^ +||link.iabmexico.com.mx^ +||link.ianacare.team^ +||link.icecream.club^ +||link.igglo.com^ +||link.im.intermiles.com^ +||link.immobilienscout24.at^ +||link.imprint.co^ +||link.imumz.com^ +||link.individuology.com^ +||link.info.myfitnesspal.com^ +||link.inklusiv.io^ +||link.inoxmovies.com^ +||link.inploi.com^ +||link.insense.pro^ +||link.insider.in^ +||link.instabridge.com^ +||link.instaeats.com^ +||link.instnt.com^ +||link.invoiceowl.com^ +||link.itsdcode.com^ +||link.jawwy.tv^ +||link.jetsobee.com^ +||link.jetstar.com^ +||link.jig.space^ +||link.jitta.co^ +||link.jittawealth.co^ +||link.jmbl.app^ +||link.jobble.com^ +||link.joinswitch.co^ +||link.joinswoop.com^ +||link.joinworkpass.com^ +||link.justincase.jp^ +||link.keycollectorcomics.com^ +||link.kidfund.us^ +||link.kidzapp.com^ +||link.killi.io^ +||link.kindred.co^ +||link.kingsnews.whopper.co.za^ +||link.kitchnrock.com^ +||link.kofiz.ru^ +||link.kulina.id^ +||link.lcdg.io^ +||link.lead-out-app-staging.specialized.com^ +||link.lead-out-app.specialized.com^ +||link.legapass.com^ +||link.lendingtree.com^ +||link.letsdayout.com^ +||link.litnet.com^ +||link.localmasters.com^ +||link.lola.com^ +||link.lomolist.com^ +||link.loop11.com^ +||link.loopedlive.com^ +||link.loopslive.com^ +||link.loxclubapp.com^ +||link.loyalty.almosafer.com^ +||link.lpm.surkus.com^ +||link.lpt.surkus.com^ +||link.made.com^ +||link.mail.blidz.com^ +||link.mail.burgerking.ca^ +||link.mail.popsa.com^ +||link.mail.step.com^ +||link.mangoapp.com.py^ +||link.manutdfeed.com^ +||link.mark.app^ +||link.marketing.bleacherreport.com^ +||link.mbtihell.com^ +||link.medibuddy.app^ +||link.medium.com^ +||link.melissawoodhealth.com^ +||link.metronaut.app^ +||link.meumulti.com.br^ +||link.midnite.com^ +||link.million.one^ +||link.mindsetapp.com^ +||link.miratelemundo.com^ +||link.mix.com^ +||link.mixbit.com^ +||link.mixnpik.com^ +||link.mktg.almosafer.com^ +||link.mktg.tajawal.com^ +||link.mobstar.com^ +||link.modstylist.com^ +||link.morty.app^ +||link.mortyapp.com^ +||link.movespring.com^ +||link.moviemate.io^ +||link.mpg.football^ +||link.mpp.football^ +||link.mudrex.com^ +||link.mulliegolf.com^ +||link.mune.co^ +||link.muso.ai^ +||link.muuzzer.com^ +||link.myasnb.com.my^ +||link.mybridge.com^ +||link.myjourneypickleball.com^ +||link.myofx.eu^ +||link.myoptimity.com^ +||link.mypostcard.com^ +||link.mysuki.io^ +||link.mywallst.app^ +||link.nabla.com^ +||link.nate.tech^ +||link.nbcadmin.com^ +||link.nearpod.com^ +||link.neos.app^ +||link.never-missed.com^ +||link.news.bleacherreport.com^ +||link.news.clearpay.co.uk^ +||link.news.goeuro.com^ +||link.newsbeast.gr^ +||link.newspicks.us^ +||link.nextaveapp.com^ +||link.nextlevelsports.com^ +||link.nilclub.com^ +||link.notifications.busuu.app^ +||link.nutty.chat^ +||link.offers.kodakmoments.com^ +||link.olympya.com^ +||link.omghi.co^ +||link.onference.co^ +||link.onference.in^ +||link.onsight.librestream.com^ +||link.oomph.app^ +||link.orders.kodakmoments.com^ +||link.ottencoffee.co.id^ +||link.outgo.com.br^ +||link.outpatient.ai^ +||link.palletml.com^ +||link.pariksha.co^ +||link.patient.com^ +||link.pavilhaodaagua.pt^ +||link.payris.app^ +||link.payulatam.com^ +||link.pbrry.com^ +||link.pedidosonline.com^ +||link.perzzle.com^ +||link.phaze.io^ +||link.piesystems.io^ +||link.pillowcast.app^ +||link.place2biz.fr^ +||link.plaympe.com^ +||link.plazahogar.com.py^ +||link.pluckk.in^ +||link.plzgrp.it^ +||link.podercard.com^ +||link.point.app^ +||link.poputi.coffee^ +||link.portal.icanbwell.com^ +||link.pray.com^ +||link.prenuvo.com^ +||link.prokure.it^ +||link.pulsz.com^ +||link.purplebrick.io^ +||link.qa.bepretty.cl^ +||link.qa.heal.com^ +||link.qanva.st^ +||link.qeenatha.com^ +||link.qp.me^ +||link.quicktakes.io^ +||link.radiotunes.com^ +||link.rangde.in^ +||link.rc.faithplay.com^ +||link.rechat.com^ +||link.reflexhealth.co^ +||link.reklaimyours.com^ +||link.resy.com^ +||link.reuters.com^ +||link.revolut.com^ +||link.ride.specialized.com^ +||link.ride.staging.specialized.com^ +||link.ridewithvia.com^ +||link.ripple.thedacare.org^ +||link.rippling.com^ +||link.roomaters.com^ +||link.roveworld.xyz^ +||link.ruhgu.com^ +||link.saganworks.com^ +||link.samewave.com^ +||link.sandboxx.us^ +||link.saratogaocean.com^ +||link.savvy360.com^ +||link.sayferapp.com^ +||link.scoutfin.com^ +||link.seaflux.tech^ +||link.sendbirdie.com^ +||link.sendoutpost.com^ +||link.sensemetrics.com^ +||link.setyawan.dev^ +||link.sevencooks.com^ +||link.sheeriz.com^ +||link.shengcekeji.com^ +||link.shopbuo.com^ +||link.shopview.in^ +||link.shotgun.live^ +||link.shuffoe.com^ +||link.shutterfly.com^ +||link.sidechat.lol^ +||link.siftfoodlabels.com^ +||link.sixcycle.com^ +||link.skillacademy.org^ +||link.sluv.org^ +||link.smallcase.com^ +||link.smartrbuyer.com^ +||link.smile.com.au^ +||link.smokeandsoda.com^ +||link.snapfeet.io^ +||link.snaphabit.app^ +||link.snippz.com^ +||link.socar.my^ +||link.socash.io^ +||link.somm.io^ +||link.sooooon.com^ +||link.soultime.com^ +||link.space.ge^ +||link.sparrow.geekup.vn^ +||link.splittr.io^ +||link.sporthub.io^ +||link.sprive.com^ +||link.stabilitas.io^ +||link.staff.notab.com^ +||link.stage.easy.me^ +||link.staging.clearsky.jlg.com^ +||link.starshiphsa.com^ +||link.staycation.co^ +||link.staycircles.com^ +||link.steadio.co^ +||link.steezy.co^ +||link.stg.boxofficevr.com^ +||link.stg.imprint.co^ +||link.stickybeak.co^ +||link.stockalarm.io^ +||link.stockviva.com^ +||link.straitstimes.com^ +||link.stridekick.com^ +||link.studdy.ai^ +||link.stynt.com^ +||link.subscribly.com^ +||link.superlocal.com^ +||link.supermama.io^ +||link.superviz.com^ +||link.support.discovery.plus^ +||link.surbee.io^ +||link.swa.info^ +||link.swaypayapp.com^ +||link.swingindex.golf^ +||link.syfy-channel.com^ +||link.szl.ai^ +||link.t2o.io^ +||link.talescreator.com^ +||link.taptapapp.com^ +||link.target.com.au^ +||link.tastemade.com^ +||link.team.bnext.es^ +||link.team.bnext.io^ +||link.techmaxapp.com^ +||link.tempo.fit^ +||link.tenallaccess.com.au^ +||link.test.chalknation.com^ +||link.test.stickybeak.co^ +||link.testbook.com^ +||link.thejetjournal.com^ +||link.theprenatalnutritionlibrary.com^ +||link.thesecurityteam.rocks^ +||link.thisislex.app^ +||link.thue.do^ +||link.tigerhall.com^ +||link.tigerhall.isdemo.se^ +||link.tillfinancial.io^ +||link.togaapp.com^ +||link.tomoloyalty.com^ +||link.tomoloyaltysg.com^ +||link.touchtunes.com^ +||link.touchtunesmail.com^ +||link.tr.freshly.com^ +||link.tradee.com^ +||link.tradle.io^ +||link.tribeup.social^ +||link.truckerpath.com^ +||link.trycircle.com^ +||link.trymida.com^ +||link.trytaptab.com^ +||link.tul.io^ +||link.tumblbug.com^ +||link.tupinambaenergia.com.br^ +||link.tv.cbs.com^ +||link.uat.my.smartcrowd.ae^ +||link.ulive.chat^ +||link.up.com.au^ +||link.upperinc.com^ +||link.urbansitter.com^ +||link.us.paramountplus.com^ +||link.usa-network.com^ +||link.usechatty.com^ +||link.vavabid.fr^ +||link.velas.com^ +||link.vezeeta.com^ +||link.vibo.io^ +||link.victoriatheapp.com^ +||link.viivio.io^ +||link.viska.com^ +||link.voiapp.io^ +||link.volt.app^ +||link.vozzi.app^ +||link.wagerlab.app^ +||link.wait.nl^ +||link.wakatoon.com^ +||link.walem.io^ +||link.wappiter.com^ +||link.watchbravotv.com^ +||link.watchoxygen.com^ +||link.wazirx.com^ +||link.wearecauli.com^ +||link.weepec.com^ +||link.wefish.app^ +||link.wegowhere.com^ +||link.welcomeapp.se^ +||link.wetrade.app^ +||link.winndixie.com^ +||link.winwintechnology.com^ +||link.wisaw.com^ +||link.wix.app^ +||link.workmate.asia^ +||link.workwellnessinstitute.org^ +||link.worqout.io^ +||link.wow.ink^ +||link.xiahealth.com^ +||link.yesorno.bet^ +||link.yoodo.com.my^ +||link.youpickit.de^ +||link.your.storage^ +||link.yourway.burgerking.ca^ +||link.yuu.sg^ +||link.zikto.com^ +||link.zipsit.com^ +||link.zulily.com^ +||link.zurp.com^ +||link1.fanfight.com^ +||linkcmf.insights.md^ +||linkcmfdev.insights.md^ +||linkd.trybany.com^ +||linkdental.insights.md^ +||linkdentaldev.insights.md^ +||linkdev.sprive.com^ +||linker.lyrahealth.com^ +||linker.staging.lyrahealth.com^ +||linkhealth-app.hotdoc.com.au^ +||linking.venueapp-system.com^ +||linkort.insights.md^ +||linkortdev.insights.md^ +||linkprod.sprive.com^ +||links-anz.afterpay.com^ +||links-dev.letzbig.com^ +||links-dev.sandboxx.us^ +||links-dev.seed.co^ +||links-na.afterpay.com^ +||links-uk.clearpay.co.uk^ +||links.ab.soul-cycle.email^ +||links.agoratix.com^ +||links.ahctv.com^ +||links.alerts.depop.com^ +||links.alerts.forhims.com^ +||links.alerts.hims.com^ +||links.amiralearning.com^ +||links.animalplanet.com^ +||links.announce.touchsurgery.com^ +||links.aopcongress.com^ +||links.app.medintegral.es^ +||links.automated.almosafer.com^ +||links.aws.nexttrucking.com^ +||links.blueapron.com^ +||links.bookshipapp.com^ +||links.br.discoveryplus.com^ +||links.brickapp.se^ +||links.bubbloapp.com^ +||links.ca.discoveryplus.com^ +||links.campermate.com^ +||links.claphere.com^ +||links.colonelsclub.kfc.com^ +||links.comms3.jetprivilege.com^ +||links.communitycarehelp.com^ +||links.consultaapp.com^ +||links.cookingchanneltv.com^ +||links.customers.instacartemail.com^ +||links.dailypay.com^ +||links.damejidlo.cz^ +||links.danceinapp.com^ +||links.destinationamerica.com^ +||links.dev.rally.app^ +||links.development.danceinapp.com^ +||links.discovery.com^ +||links.discoverylife.com^ +||links.discoveryplus.com^ +||links.e.aecrimecentral.com^ +||links.e.aetv.com^ +||links.e.history.com^ +||links.e.historyvault.com^ +||links.e.lifetimemovieclub.com^ +||links.e.mylifetime.com^ +||links.e.wine.com^ +||links.earncarrot.com^ +||links.eatclub.com.au^ +||links.edm.noracora.com^ +||links.elmc.mylifetime.com^ +||links.em.aetv.com^ +||links.em.history.com^ +||links.em.mylifetime.com^ +||links.email.almosafer.com^ +||links.email.bravotv.com^ +||links.email.distrokid.com^ +||links.email.getgocafe.com^ +||links.email.getprizepool.com^ +||links.email.gianteagle.com^ +||links.email.greenlight.me^ +||links.email.nbc.com^ +||links.email.oxygen.com^ +||links.email.tajawal.com^ +||links.email.usanetwork.com^ +||links.emea.discoveryplus.com^ +||links.es.aecrimecentral.com^ +||links.evault.history.com^ +||links.extra.app^ +||links.fable.co^ +||links.fabletics.co.uk^ +||links.fabletics.com^ +||links.fabletics.de^ +||links.fabletics.es^ +||links.fabletics.fr^ +||links.feltapp.com^ +||links.fennel.com^ +||links.firecracker.me^ +||links.foodnetwork.com^ +||links.gamersafer.com^ +||links.gardyn.io^ +||links.gemspace.com^ +||links.getprizepool.com^ +||links.getupside.com^ +||links.glamsquad.com^ +||links.goodpup.com^ +||links.goveo.app^ +||links.grand.co^ +||links.h5.hilton.com^ +||links.h6.hilton.com^ +||links.hbe.io^ +||links.hgtv.com^ +||links.himoon.app^ +||links.hitrecord.org^ +||links.huckleberry-labs.com^ +||links.i.blueapron.com^ +||links.imcas.com^ +||links.impactwayv.com^ +||links.info.getgocafe.com^ +||links.info.gianteagle.com^ +||links.info.headspace.com^ +||links.info.kfc.com^ +||links.info.marketdistrict.com^ +||links.investigationdiscovery.com^ +||links.iopool.com^ +||links.joinhiive.com^ +||links.joinrooster.co.uk^ +||links.joro.app^ +||links.justfab.co.uk^ +||links.justfab.com^ +||links.justfab.de^ +||links.justfab.es^ +||links.justfab.fr^ +||links.keepitcleaner.com.au^ +||links.kha.com^ +||links.letzbig.com^ +||links.m.blueapron.com^ +||links.mail.stubhub.com^ +||links.marketing.getprizepool.com^ +||links.max.com^ +||links.mezurashigame.com^ +||links.mgmresorts.com^ +||links.motortrend.com^ +||links.myplace.co^ +||links.myvolly.com^ +||links.nbc.com^ +||links.nbcnews.com^ +||links.news.forhims.com^ +||links.news.hims.com^ +||links.nexttrucking.com^ +||links.notarize.com^ +||links.notifications.headspace.com^ +||links.official.vsco.co^ +||links.ohhey.depop.com^ +||links.openfit.com^ +||links.orders.kfc.com^ +||links.ottplay.com^ +||links.outskill.app^ +||links.own.tv^ +||links.oxstreet.com^ +||links.petpartner.co^ +||links.ph.discoveryplus.com^ +||links.picsart.com^ +||links.pinart.io^ +||links.pkrewards.com^ +||links.plated.com^ +||links.playon.tv^ +||links.quatreepingles.fr^ +||links.rally.app^ +||links.rathilpatel.com^ +||links.respilates.app^ +||links.riftapp.co^ +||links.riverratrounders.com^ +||links.samsclub.com^ +||links.schnucks.com^ +||links.sciencechannel.com^ +||links.seed.co^ +||links.sheroes.in^ +||links.shipt.com^ +||links.shoprunner.com^ +||links.shukran.com^ +||links.sidehide.com^ +||links.silverpop-email.branch.rocks^ +||links.sleep.com^ +||links.sleepscore.com^ +||links.sliceit.com^ +||links.slicepay.in^ +||links.soulsoftware.org^ +||links.sparkmail.branch.rocks^ +||links.staging-lifestepsapp.com^ +||links.stretchitapp.com^ +||links.subscribed.app^ +||links.sudokuplus.net^ +||links.swazzen.com^ +||links.sweet.io^ +||links.t.blueapron.com^ +||links.t.totallymoney.com^ +||links.t.wine.com^ +||links.teladoc.com^ +||links.thedyrt.com^ +||links.theinfatuation.com^ +||links.thephoenix.org^ +||links.tlc.com^ +||links.travelchannel.com^ +||links.tribe.fitness^ +||links.trutify.com^ +||links.tutorbin.com^ +||links.vestoapp.com^ +||links.vyzivovetabulky.sk^ +||links.weareher.com^ +||links.well.co^ +||links.wesponsored.com^ +||links.yayzy.com^ +||links.younify.tv^ +||links.younow.com^ +||links.yummly.com^ +||links2.chownowmail.com^ +||links2.fluent-forever.com^ +||links2.pillar.app^ +||linksbntest.branchcustom.xyz^ +||linkspine.insights.md^ +||linkspinedev.insights.md^ +||linktest.itsdcode.com^ +||linkto.driver.codes^ +||linktrace.diningcity.cn^ +||linkus.buddybet.com^ +||linkvet.insights.md^ +||linkvetdev.insights.md^ +||listen.trakks.com^ +||listen.tunein.com^ +||lk.parisfoodies.fr^ +||lk.vrstories.com^ +||lm.groc.press^ +||lnk-stg.welthee.com^ +||lnk-test.jointakeoff.com^ +||lnk.christmaslistapp.com^ +||lnk.culturetrip.com^ +||lnk.dgsta.com^ +||lnk.ernesto.it^ +||lnk.gleeph.net^ +||lnk.joinpopp.in^ +||lnk.jointakeoff.com^ +||lnk.most-days.com^ +||lnk.mostdays.com^ +||lnk.raceful.ly^ +||lnk.rush.gold^ +||lnk.welthee.com^ +||lnk2.patpat.com^ +||local-shares.ri.la^ +||location.imsmetals.com^ +||login.e-ticket.co.jp^ +||lotte.myomee.com^ +||lp.egghead.link^ +||lub-links.eyecue.io^ +||lw.b.inhaabit.com^ +||m-t.topya.com^ +||m-test.papertrail.io^ +||m.aecrimecentral.com^ +||m.aetv.com^ +||m.bell.ca^ +||m.bigroad.com^ +||m.bitmo.com^ +||m.bookis.com^ +||m.brain.ai^ +||m.d11.io^ +||m.dagym-manager.com^ +||m.dq.ca^ +||m.dq.com^ +||m.equinoxplus.com^ +||m.fontself.com^ +||m.fyi.tv^ +||m.giftry.com^ +||m.go4.io^ +||m.happ.social^ +||m.history.com^ +||m.historyvault.com^ +||m.ioicommunity.com.my^ +||m.irl.com^ +||m.irlmail.org^ +||m.jarvisinvest.com^ +||m.kaikuhealth.com^ +||m.lifetimemovieclub.com^ +||m.luckym.ca^ +||m.moomoo.com^ +||m.mylifetime.com^ +||m.natural.ai^ +||m.navi.com^ +||m.nxtgn.us^ +||m.origin.com.au^ +||m.papertrail.io^ +||m.pcmobile.ca^ +||m.petmire.com^ +||m.providers.alto.com^ +||m.realself.com^ +||m.rifird.com^ +||m.riipay.my^ +||m.rsvy.io^ +||m.shoppre.com^ +||m.shopprecouriers.com^ +||m.shoppreparcels.com^ +||m.showaddict.com^ +||m.suda.io^ +||m.topya.com^ +||m.varagesale.com^ +||m.vpc.ca^ +||m.wishmindr.com^ +||m1.stadiumgoods.com^ +||m2.washmen.com^ +||mac.macheq.com^ +||magic.freetrade.io^ +||mail.academyforconsciousleadership.net^ +||mail.blueapronwine.com^ +||mail.bravado.co^ +||mail.central.co.th^ +||mail.tops.co.th^ +||mail.wondery.com^ +||mail1.happ.social^ +||mail2.happ.social^ +||mailer.happ.social^ +||mailx.happ.social^ +||mallioras.openapp.link^ +||mandrillapp.zola.com^ +||mapp.biryanibykilo.com^ +||marceline.wantsext.me^ +||marketing.boostmi.com^ +||math.meistercody.com^ +||matrix.elecle.bike^ +||maui.shakaguide.com^ +||me.glamhive.com^ +||media.wave.qburst.com^ +||meinauto.hdd-dienste.de^ +||melodothogy.meng2x.com^ +||member-app.rightwayhealthcare.com^ +||members.atomcomplete.com^ +||merchant-app.th3rdwave.coffee^ +||merchant.libertycarz.com^ +||microsoft.eventionapp.com^ +||mikelperaia.openapp.link^ +||mit3app.3.dk^ +||mitt.3.se^ +||mitt3.3.se^ +||mk.appwebel.com^ +||mkt.wemakeprice.link^ +||ml.houzz.com^ +||mlinkdev.bookedout.com^ +||mlinks.fluz.app^ +||mlinks.helloalfred.com^ +||mm.openapp.link^ +||mobil.hry.yt^ +||mobile-event-alternative.cvent.me^ +||mobile-event-development.cvent.me^ +||mobile-event-staging.cvent.me^ +||mobile-event.cvent.me^ +||mobile.aspensnowmass.com^ +||mobile.bespontix.com^ +||mobile.bswift.com^ +||mobile.btgpactualdigital.com^ +||mobile.clickastro.com^ +||mobile.dat.com^ +||mobile.etiquetaunica.com.br^ +||mobile.everytap.com^ +||mobile.excedo.io^ +||mobile.expensify.com^ +||mobile.hippovideo.io^ +||mobile.locumprime.co.uk^ +||mobile.mailchimpapp.com^ +||mobile.reki.tv^ +||mobile.suiste.com^ +||mobiletest.aspensnowmass.com^ +||mobilize.tupinambaenergia.com.br^ +||mobwars-alternate.kano.link^ +||mobwars.kano.link^ +||money.clerkie.io^ +||monster.branch.rocks^ +||mousebusters.odencat.com^ +||mpakal.openapp.link^ +||msg.sqz.app^ +||mt.plateiq.com^ +||mtest.fontself.com^ +||mx.carfax.com^ +||mx.happ.social^ +||mx2.happ.social^ +||my-staging.villa.ge^ +||my-testing.tsgo.io^ +||my.bake-club.com^ +||my.blueprint-health.com^ +||my.fbird.co^ +||my.fynd.com^ +||my.gaius.app^ +||my.likeo.fr^ +||my.ndge.co^ +||my.nextgem.com^ +||my.powur.com^ +||my.showin.gs^ +||my.tsgo.io^ +||my.w.tt^ +||myapp.branch.rocks^ +||mymix.mixdevelopment.com^ +||mymix.mixtel.com^ +||mymix.mixtelematics.com^ +||myopia.gocheckkids.com^ +||mypowur.eyecue.io^ +||n.homepass.com^ +||nadelle.wantsext.me^ +||nala.headuplabs.com^ +||nasscom.epoise.com^ +||nasscomtest.epoise.com^ +||nbcnews.black.news^ +||nceexam.quantresear.ch^ +||nikitas.openapp.link^ +||nisaapp.nexus-dt.com^ +||norex-app.paihealth.no^ +||notice.hoopladigital.com^ +||notify.pray.com^ +||now.getwifireapp.com^ +||npr.black.news^ +||npteptptaexam.quantresear.ch^ +||ns1.happ.social^ +||nv.inhaabit.com^ +||o.catalyst.com.sa^ +||o.hmwy.io^ +||o.myomnicard.in^ +||oahu.shakaguide.com^ +||ochre-app.hotdoc.com.au^ +||on.allposters.com^ +||on.art.com^ +||on.hellostake.com^ +||one.appice.io^ +||one.godigit.com^ +||onelink.taptalk.io^ +||open-test.wynk.in^ +||open.ailo.app^ +||open.anghami.com^ +||open.bitcoinmagazine.app^ +||open.catchapp.mobi^ +||open.clerkie.io^ +||open.ditch.cash^ +||open.drivescore.com^ +||open.flow.com.mm^ +||open.fotition.com^ +||open.freeplayapp.com^ +||open.gaius.app^ +||open.getsigneasy.com^ +||open.homepass.com^ +||open.homey.app^ +||open.howbout.app^ +||open.kidu.com^ +||open.majelan.com^ +||open.melomm.com^ +||open.muze.chat^ +||open.novamoney.com^ +||open.speeko.co^ +||open.swapu.app^ +||open.theinnercircle.co^ +||open.ticketbro.com^ +||open.trakks.com^ +||open.uzitapp.com^ +||open.wynk.in^ +||openshop.m-shop.me^ +||oshp.io^ +||othanasis.openapp.link^ +||outdoor.theres.co^ +||oxqq.pandasuite.io^ +||p.cab.ua^ +||p3tq.pandasuite.io^ +||paramedicexam.quantresear.ch^ +||parentapp.byjus.com^ +||parents.app.playosmo.com^ +||partner-staging.miso.kr^ +||partner.librarius.com.ua^ +||partner.miso.kr^ +||partnerapp.kravein.com.au^ +||partnerapp.urbanclap.com^ +||partnerdev.extasy.com^ +||patrikios.openapp.link^ +||pay.truemoney.me^ +||payments.acutx.org^ +||paymentslink.dropp.cc^ +||pbm-email.rightwayhealthcare.com^ +||pdf.didgigo.com^ +||pe.txbe.at^ +||pergeroni.openapp.link^ +||pf.a23.in^ +||phlebotomyexam.quantresear.ch^ +||phoenix.thexlife.co^ +||phonetrack.hukumkaikka.in^ +||pint-dev-branch.airship.com^ +||pirateclan-alternate.kano.link^ +||pirateclan.kano.link^ +||pirounakia.openapp.link^ +||pitapan.openapp.link^ +||pitatisisminis.openapp.link^ +||pittaking.openapp.link^ +||pizzacamels.openapp.link^ +||pizzaexpress.openapp.link^ +||pizzaromea.openapp.link^ +||pl-topgal.m-shop.me^ +||play.ab05.bet^ +||play.b-t11.com^ +||play.colorplay.fun^ +||play.fanslide.com^ +||play.goldplay.me^ +||play.jdb888.club^ +||play.journey8.com^ +||play.maxgame.store^ +||play.nekobot.vip^ +||play.rheo.tv^ +||play.scavos.com^ +||play.skydreamcasino.net^ +||play.spdfun777.com^ +||play.spkr.com^ +||play.staging.underdogfantasy.com^ +||play.underdogfantasy.com^ +||play.waka8et.com^ +||play.wavelength.zone^ +||plv.geocomply.com^ +||poczta.happ.social^ +||pod.spoti.fi^ +||polis.openapp.link^ +||poll.pollinatepolls.com^ +||pool.onjoyri.de^ +||pool.onjoyride.com^ +||pop3.happ.social^ +||power.viggo.com^ +||prassas.openapp.link^ +||prasserie.openapp.link^ +||prealpha.go.levelbank.com^ +||premiumapp.byjus.com^ +||prenesi-mojm.mercator.si^ +||primary-app.hotdoc.com.au^ +||priority-app.hotdoc.com.au^ +||prismtest.epoise.com^ +||pro.bizportal.co.il^ +||pro.jig.space^ +||pro.pokerup.net^ +||production-link-ccontact.focuscura.com^ +||promo.cafexapp.com^ +||promo.gogo.org.ua^ +||promo.roadie.com^ +||promo.tops.co.th^ +||prunas.openapp.link^ +||psilikaki.openapp.link^ +||psmastersendgrid.branch.rocks^ +||psssaraki.openapp.link^ +||publish.tagstorm.com^ +||puzzle.spiriteq.com^ +||px.pandora.com^ +||pxsg.pandora.com^ +||q.skiplino.com^ +||qa-branch-app.liketoknow.it^ +||qa-brc.emails.rakuten.com^ +||qa-go.ebat.es^ +||qa-link.californiapsychics.com^ +||qa-prod.branch.rocks^ +||qaapp.forever21.com^ +||qbse.intuit.com^ +||qlp.egghead.link^ +||qr.juuice.com^ +||qr.printko.ro^ +||qrcode.visit-thassos.com^ +||qualitas-app.hotdoc.com.au^ +||quest.epoise.com^ +||question.snapiio.com^ +||questtest.epoise.com^ +||quick.openapp.link^ +||r-dev.urbansitter.net^ +||r.atlasearth.com^ +||r.blidzdeal.com^ +||r.cricbet.co^ +||r.cvglobal.co^ +||r.getcopper-dev.com^ +||r.getcopper.com^ +||r.guggy.com^ +||r.intimately.us^ +||r.morons.us^ +||r.onmyway.com^ +||r.phhhoto.com^ +||r.presspadnews.com^ +||r.rover.com^ +||r.sportsie.com^ +||racemanager-app.sapsailing.com^ +||randstad.epoise.com^ +||randstadtest.epoise.com^ +||rb.groc.press^ +||read.medium.com^ +||read.meistercody.com^ +||redditstream.arborapps.io^ +||redirect.cuballama.com^ +||redirect.indacar.io^ +||redirect.kataklop.com^ +||redirectdemoqpay.2c2p.com^ +||ref.elitehrv.com^ +||ref.mybb.id^ +||refer.chargerunning.com^ +||refer.dev.wagr.us^ +||refer.dragonfly.com.kh^ +||refer.gober.app^ +||refer.kheloapp.com^ +||refer.payluy.com.kh^ +||referral-ca.mixtiles.com^ +||referral.50fin.in^ +||referral.avena.io^ +||referral.mixtiles.com^ +||referral.monkitox.com^ +||referral.moonglabs.com^ +||referral.rvappstudio.com^ +||referral.setipe.com^ +||referral.upay.lk^ +||referral.yourcanvas.co^ +||referrals-test.ridealto.com^ +||referrals.getservice.com^ +||referrals.ridealto.com^ +||referrals.tradeapp.me^ +||referrals.zunify.me^ +||rel-link.californiapsychics.com^ +||relay.happ.social^ +||remaxmetro369.myre.io^ +||request.idangels.org^ +||resetpassword.surepetcare.io^ +||review.openapp.link^ +||rewards-my.greateasternlife.com^ +||rewards-sg.greateasternlife.com^ +||rimsha.viralof.online^ +||rl.finalprice.com^ +||rochelle.wantsext.me^ +||rooms.itsme.cool^ +||rooms.itsme.video^ +||roulette.abzorbagames.com^ +||routes.navibration.com^ +||rr.groc.press^ +||rtek-link.shares.social^ +||rx-test.capsulecares.com^ +||rx.capsulecares.com^ +||s-t.topya.com^ +||s.airgoat.com^ +||s.brin.io^ +||s.chatie.ai^ +||s.goat.com^ +||s.grabble.com^ +||s.grigora.com^ +||s.imagica.ai^ +||s.mygl.in^ +||s.myvoleo.com^ +||s.nextblock.sg^ +||s.salla.ps^ +||s.swishpick.com^ +||s.thebigfamily.app^ +||s.topya.com^ +||s.umba.com^ +||s.upoker.net^ +||s.utop.vn^ +||safepass.citizen.com^ +||safetravelsapp.progressive.com^ +||sailinsight-app.sapsailing.com^ +||sailinsight20-app.sapsailing.com^ +||sales.pandasuite.io^ +||saltsabar.openapp.link^ +||sbc-app-links.specialized.com^ +||scanner-link.covve.com^ +||scheduling.qualifi.hr^ +||securefamilylink.wireless.att.com^ +||see.yousoon.com^ +||sefkal.openapp.link^ +||selectjeeps.acutx.org^ +||selftour.walk.in^ +||sellerapp.musely.com^ +||send.merit.me^ +||send.preply.com^ +||sendgrid.employeelinkapp.com^ +||sendpulsenewtest.branch.rocks^ +||sendpulsetest.branch.rocks^ +||sense.cliexa.com^ +||sephora-qa.branch.rocks^ +||sephora-qa.branchstaging.com^ +||setup.physiapp.com^ +||sex.viralof.online^ +||sf-test.groc.press^ +||sf.groc.press^ +||sf4567w2a56q.branch.salesfloor.net^ +||sf5q8gbnve37.branch.salesfloor.net^ +||sg.carousellmotors.com^ +||sg3.notarize.com^ +||sh.b.inhaabit.com^ +||share-backcountry.onxmaps.com^ +||share-dev.perchwell.com^ +||share-dev1.sparemin.com^ +||share-hunt.onxmaps.com^ +||share-idi.dailyrounds.org^ +||share-local.sparemin.com^ +||share-staging.perchwell.com^ +||share-stg1.sparemin.com^ +||share-test.goswaggle.com^ +||share-test.tessie.com^ +||share-test.travelloapp.com^ +||share-test.usehamper.com^ +||share.1stphorm.app^ +||share.appdater.mobi^ +||share.appsaround.net^ +||share.appwinit.com^ +||share.atlantic.money^ +||share.aynrand.org^ +||share.beaconlearningapp.com^ +||share.bitzer.app^ +||share.blindside.pro^ +||share.bookey.app^ +||share.boostorder.com^ +||share.bttl.me^ +||share.ccorl.com^ +||share.check-ins.com.my^ +||share.cjcookit.com^ +||share.coupangeats.com^ +||share.dailyrounds.in^ +||share.drinki.com^ +||share.dunzo.in^ +||share.dusk.app^ +||share.eleph.app^ +||share.elixirapp.co^ +||share.elsanow.io^ +||share.entertainment.com^ +||share.finory.app^ +||share.flickasa.com^ +||share.foxtrotco.com^ +||share.furaha.co.uk^ +||share.getthatlemonade.com^ +||share.gleeph.net^ +||share.glorify-app.com^ +||share.gobx.com^ +||share.goswaggle.com^ +||share.haloedapp.com^ +||share.headliner.app^ +||share.helpthyneighbour.com^ +||share.heypubstory.com^ +||share.jisp.com^ +||share.jobeo.net^ +||share.jugnoo.in^ +||share.kamipuzzle.com^ +||share.keeano.com^ +||share.ksedi.com^ +||share.liv.rent^ +||share.mansi.io^ +||share.marrow.com^ +||share.moonlightcake.com^ +||share.mooodek.com^ +||share.mzaalo.com^ +||share.nearpod.us^ +||share.oneway.cab^ +||share.oppvenuz.com^ +||share.oyorooms.com^ +||share.palletml.com^ +||share.passportpower.app^ +||share.perchwell.com^ +||share.platoonline.com^ +||share.quin.cl^ +||share.quizizz.com^ +||share.rapfame.app^ +||share.realcrushconnection.com^ +||share.ridehip.com^ +||share.robinhood.com^ +||share.savvy-navvy.com^ +||share.scoreholio.com^ +||share.sharafdg.com^ +||share.sliver.tv^ +||share.soundit.com^ +||share.sparemin.com^ +||share.squadx.online^ +||share.stayplus.com^ +||share.stiya.com^ +||share.supp.film^ +||share.swishpick.com^ +||share.talkit.app^ +||share.tessie.com^ +||share.theladbible.com^ +||share.titanvest.com^ +||share.tops.co.th^ +||share.tornado.com^ +||share.tp666.vip^ +||share.tradeapp.me^ +||share.travelloapp.com^ +||share.vomevolunteer.com^ +||share.wayup.com^ +||share.wigle.me^ +||share.winit.nyc^ +||share.wolfspreads.com^ +||share.worldleaguelive.com^ +||share.yabelink.com^ +||share.yugengamers.com^ +||share2.360vuz.com^ +||shared.jodel.com^ +||sharedev.passportpower.app^ +||sharelink.oppvenuz.com^ +||sharen.oyorooms.com^ +||sharing.kptncook.com^ +||shell-recharge.tupinambaenergia.com.br^ +||sheregesh-io.traveler.today^ +||shop.myaeon2go.com^ +||shoppers-test.instacartemail.com^ +||shoppers.instacartemail.com^ +||shoppingapp.norwex.com^ +||short.afgruppen.no^ +||short.isdev.info^ +||showcase.inhaabit.com^ +||sign.use-neo.com^ +||sk-batteryimport.m-shop.me^ +||sk-sanasport.m-shop.me^ +||sk-topgal.m-shop.me^ +||skaffa.tidyapp.se^ +||skincheckwa-app.hotdoc.com.au^ +||skosgrill.openapp.link^ +||sl.trycircle.com^ +||slotabrosdev.zharev.com^ +||slotabrosuat.zharev.com^ +||sm-test.groc.press^ +||sm.groc.press^ +||sm.sylectus.com^ +||smbranch.nc.mails.sssports.com^ +||sms-vbs.branch.rocks^ +||sms.3.se^ +||sms.uphabit.com^ +||smtp.happ.social^ +||smtp2.happ.social^ +||smtpauth.happ.social^ +||snapshotapp.progressive.com^ +||snowman.odencat.com^ +||social.talenttitan.com^ +||social.tinyview.com^ +||socialflow.branch.rocks^ +||sp-app.fixly.pl^ +||splitexpenses.oworld.fr^ +||spread.epoolers.com^ +||ss.silkandsonder.com^ +||ssltest2.branch.io^ +||stadac.mobilapp.io^ +||stageapplink.reki.tv^ +||stagelink.lola.com^ +||stagelink.supershare.com^ +||stagelink.youareaceo.com^ +||staging-c.vcty.co^ +||staging-go.getsquire.com^ +||staging-link-ccontact.focuscura.com^ +||staging-link.docyt.com^ +||staging-link.kol.store^ +||staging-refer.rooam.co^ +||staging.findeck.link^ +||staging.link.findeck.de^ +||staging.narrateapp.com^ +||staging.refer.wagr.us^ +||starchild.odencat.com^ +||starify.appsonic.fr^ +||start.hearsaysocial.com^ +||start.luscii.com^ +||start.ramp.com^ +||status.acutx.org^ +||stg-bnc-papago.naver.com^ +||stg-deeplink.ring.md^ +||store.echovisuals.com^ +||store.esquirrel.at^ +||studio.joinsalut.com^ +||subito.openapp.link^ +||summary.instaread.co^ +||super8-link.mysuki.io^ +||surpreendaapp.hanzo.com.br^ +||swa.anydma.com^ +||sxarakia.openapp.link^ +||t.bztest.origin.com.au^ +||t.comms.thetimes.co.uk^ +||t.discover.kayosports.com.au^ +||t.ecomms.origin.com.au^ +||t.haha.me^ +||t.hmwy.io^ +||t.icomms.origin.com.au^ +||t.newsletter.thetimes.co.uk^ +||t.prod1.discover.binge.com.au^ +||t.service.thetimes.co.uk^ +||t.staging-mail.tabcorp.com.au^ +||t.twenty.co^ +||t1.benefits.tops.co.th^ +||t1.discover.flashnews.com.au^ +||t1.stadiumgoods.com^ +||t2.click.subway.com^ +||tagourounakia.openapp.link^ +||talent.roxiapp.com^ +||talentsprint.epoise.com^ +||talk-test.stitch.cam^ +||talk.stitch.cam^ +||tally.bizanalyst.in^ +||tamedbc.roska.fr^ +||tap.carling.com^ +||tasteeat.openapp.link^ +||tba.smrtp.link^ +||td.emails.domain.com.au^ +||teen.zubie.com^ +||test-app.getgifted.com^ +||test-app.popsa.com^ +||test-app.thetimes.link^ +||test-applink.batterii.com^ +||test-b.todaytix.com^ +||test-eml.postmates.com^ +||test-fleet-eml.postmates.com^ +||test-link-ccontact.focuscura.com^ +||test-link.californiapsychics.com^ +||test-link.electrover.se^ +||test-link.foodiapp.com^ +||test-link.hellobeerapp.com^ +||test-link.payulatam.com^ +||test-link.rmbr.in^ +||test-link.stabilitas.io^ +||test-link.touchsurgery.com^ +||test-link.tradle.io^ +||test-link.volt.app^ +||test-links.cpgdata.com^ +||test-links.dipdip.com^ +||test-links.yelsa.app^ +||test-listen.tunein.com^ +||test-share.glorify-app.com^ +||test-starify.appsonic.fr^ +||test.asteride.co^ +||test.bilt.page^ +||test.customers.instacartemail.com^ +||test.emails.discovery.com^ +||test.fbird.co^ +||test.findeck.link^ +||test.findplay.it^ +||test.handy-alarm.com^ +||test.links.emails.br.discoveryplus.com^ +||test.links.emails.ca.discoveryplus.com^ +||test.links.emails.discoveryplus.com^ +||test.links.emails.emea.discoveryplus.com^ +||test.links.emails.ph.discoveryplus.com^ +||test.open.ggwpacademy.com^ +||test.openapp.link^ +||test.pooler.io^ +||test.smrtp.link^ +||test.spenn.com^ +||test.swa.info^ +||test.thei.co^ +||test2.majelan.com^ +||testbnc.mksp.io^ +||testbranch.onsequel.com^ +||testgo.huterra.com^ +||testing.news.forhers.com^ +||testing.news.forhims.com^ +||testing.news.hims.com^ +||testlink.blueheart.io^ +||testlink.droppin.us^ +||testlink.kidzapp.com^ +||testlink.peak.net^ +||testlink.saganworks.com^ +||testlink.urban.com.au^ +||testlink.victoriatheapp.com^ +||testlinks.ottplay.com^ +||testlinks.sliceit.com^ +||testreferral.upay.lk^ +||testsocial.eduthrill.com^ +||thanecityfc.spyn.co^ +||theme.echovisuals.com^ +||theroot.black.news^ +||thesource.black.news^ +||thraka.openapp.link^ +||timeclock.mytoolr.com^ +||tmapp.fitnessyard.com^ +||tmpbr.getgifted.com^ +||tmvasapp.fitnessyard.com^ +||to.4sq.com^ +||to.5mins.ai^ +||to.card.com^ +||to.degree.plus^ +||to.figr.me^ +||to.golfn.app^ +||to.quit.guru^ +||to.skooldio.com^ +||to.stynt.com^ +||to.uptime.app^ +||tommys.openapp.link^ +||tongkhohangnhat.abphotos.link^ +||top3.inhaabit.com^ +||toto.pandasuite.io^ +||trac.roomster.com^ +||track-mail.homage.co^ +||track-test.workframe.com^ +||track.cafu.com^ +||track.gleeph.net^ +||track.ivia.com^ +||track.newsplug.com^ +||track.roomster.com^ +||track.spothero.com^ +||track.workframe.com^ +||tracking.email-mandrill.pushd.com^ +||tracking.laredoute.fr^ +||tracking.sp.sofi.com^ +||tracking.staging.goshare.co^ +||tracks.roomster.com^ +||transmissionapp.jacoblegrone.com^ +||travel.stage.x.unikoom.com^ +||travel.x.unikoom.com^ +||trk-branch.balinea.com^ +||trk.bc.shutterfly.com^ +||trk.e.underarmour.com^ +||trk.flipfit.com^ +||trk.geico.com^ +||trk.luisaviaroma.com^ +||trk.s.sephora.com^ +||trk.send.safestyle.com.au^ +||trk.shoppremiumoutlets.com^ +||trk.squeezemassage.com^ +||trk.underarmour.com^ +||trk.us.underarmour.com^ +||trkemail.luisaviaroma.com^ +||trklink.luisaviaroma.com^ +||try.jaranda.kr^ +||try.joonapp.io^ +||try.popchart.family^ +||try.postmuseapp.com^ +||tsp.onjoyri.de^ +||tst-link-ccontact.focuscura.com^ +||tune.sckmediatv.com^ +||tw.spiriteq.com^ +||txt.appcity.com.au^ +||txt.fuelmyclub.com^ +||txt.hooplaguru.com^ +||txt.htltn.com^ +||txt.shopbanquet.com^ +||txt.showings.com^ +||txt.styr.com^ +||u-test.getgoose.com^ +||u.getgoose.com^ +||u.salony.com^ +||uat-client.belairdirect.com^ +||uat-client.intact.ca^ +||uat-client.nbc-insurance.ca^ +||uat-link.covve.com^ +||uat-scanner-link.covve.com^ +||uatrewards-my.greateasternlife.com^ +||uatrewards-sg.greateasternlife.com^ +||uatshare.entertainment.com^ +||ujvh.pandasuite.io^ +||uni.okane-reco-plus.com^ +||universal.okane-reco-plus.com^ +||universal.shakaguide.com^ +||universaldev.taylormadegolf.com^ +||unsubscribe.openapp.link^ +||uptvmovies.uptv.com^ +||ur.b.inhaabit.com^ +||url.density.exchange^ +||url1020.keycollectorcomics.com^ +||url1445.affirm.com^ +||url1451.careerkarma.info^ +||url1741.linktr.ee^ +||url1981.jhutnick.tantawy.app^ +||url2031.lemonaidhealth.com^ +||url2556.matthewherman.tantawy.app^ +||url259.artcollection.io^ +||url2987.affirm.com^ +||url3009.onbunches.com^ +||url3630.newsletter.experience-muse.com^ +||url3788.blazepizza.com^ +||url4142.dev.att.llabs.io^ +||url4324.affirm.ca^ +||url4324.affirm.com^ +||url485.yourname.tantawy.app^ +||url5290.dev-portal.icanbwell.com^ +||url6013.qa-app11-sendgrid.branch.rocks^ +||url6035.clay-sendgrid-test.branch.rocks^ +||url6143.branch.rocks^ +||url6146.bastien.tantawy.app^ +||url6514.affirm.com^ +||url6633.ana.tantawy.app^ +||url6933.email.marcon.au^ +||url7061.support.1dental.com^ +||url7542.fluz.app^ +||url7674.fitgenieapp.com^ +||url8196.mindrise.app^ +||url8258.jshek.branch.rocks^ +||url9609.account.experience-muse.com^ +||use.fvr.to^ +||use.lunos.app^ +||users.rentbabe.com^ +||v-t.topya.com^ +||v.angha.me^ +||v.cameo.com^ +||v.minu.be^ +||v.myvoleo.com^ +||v.topya.com^ +||vcs.kensington.my^ +||ve.velocityclinical.com^ +||verify.spin.app^ +||verify.test.spin.app^ +||verizon-branch.locationlabs.com^ +||video.bzfd.it^ +||video.vitcord.com^ +||viewer.pandasuite.io^ +||vikingclan.kano.link^ +||vip.agentteam.com.au^ +||visit.campermate.com^ +||visit.sendheirloom.com^ +||voeux2020.wearemip.com^ +||vote.speaqapp.com^ +||votedotorg.outvote.io^ +||votejoe.outvote.io^ +||vr.mttr.pt^ +||vr.vivareal.com^ +||vrasto.openapp.link^ +||vrcamdl.istaging.com^ +||vrcamdltest.istaging.com^ +||vtneexam.quantresear.ch^ +||wallet.chain.com^ +||wap.mylifetime.com^ +||watch.jawwy.tv^ +||watch.stctv.com^ +||watch.vipa.me^ +||wave.getonthewave.com^ +||we.kurly.com^ +||web.givingli.com^ +||webmail.happ.social^ +||webtoons.naver.com^ +||welcome.peek.com^ +||whatcounts.branch.rocks^ +||wl.bl.frequentvalues.com.au^ +||won.wooribank.com^ +||wop-bio.ubiwhere.com^ +||worker-app-dev.buildforce.com^ +||worker-app-staging.buildforce.com^ +||worker-app.buildforce.com^ +||wpunkt.newsweek.pl^ +||wsfc-t.topya.com^ +||wsfc.topya.com^ +||www.branch.rocks^ +||www.getone.today^ +||www.vetxanh.edu.vn^ +||www1.happ.social^ +||x.gldn.io^ +||x.xtar.io^ +||x88s.pandasuite.io^ +||y-t.topya.com^ +||y.topya.com^ +||yiyemail.branch.rocks^ +||yo.inbots.online^ +||you.pixellot.link^ +||you.stage.pixellot.link^ +||youate.co^ +||your.tmro.me^ +||yummylink.funcapital.com^ +||z.inlist.com^ +||zelle.odencat.com^ +||zombieslayer-alternate.kano.link^ +||zombieslayer.kano.link^ +!-----------------International individual tracking systems-----------------! +! *** easylist:easyprivacy/easyprivacy_specific_international.txt *** +||1438976156.recolution.de^ +||20min.ch/ana/ +||aachener-zeitung.de/zva/drive.js +||absys.web.de^ +||aerzteblatt.de/inc/js/ga4.js +||agnes.waz.de^ +||analytics.adliners.de^ +||analytics.animexx.de^ +||analytics.daasrv.net^ +||analytics.deutscher-apotheker-verlag.de^ +||analytics.moviepilot.de^ +||analytics.refurbed.de^ +||api.patienten.helios-gesundheit.de/api/unleash/client/metrics +||api.sae.systems^ +||arlt.com/analytics/ +||arte.tv/log-player/ +||as.mirapodo.de^ +||as.mytoys.de^ +||as.yomonda.de^ +||autoscout24.de^$ping +||aw.perlesandco.com^ +||basicthinking.de/stats/ +||behave.sn.at^ +||berliner-stadtplan.com/t.gif +||best4tires.com/collect +||bilder11.markt.de^ +||blogmura.com/js/*/gtag-event- +||braunschweiger-zeitung.de/stats/ +||buzzfeed.at/bi/bootstrap/ +||buzzfeed.de/bi/bootstrap/ +||bz-berlin.de/_stats/ +||chartsurfer.de/js/mtm.js +||chartsurfer.de/uscoll.php? +||chefkoch-cdn.de/agf/agf.js +||chefkoch-cdn.de/search/tracking/ +||chefkoch.de/search/tracking/ +||chefkoch.de/tracking/ +||cinestar.de/collect/ +||click.alternate.de^ +||cltr.willhaben.at^ +||cmp2.channelpartner.de^ +||cnt.wetteronline.de^ +||comparis.ch/comparis/Tracking/ +||computerbase.de/analytics +||computerbase.de/api2/$ping,xmlhttprequest +||coolblue.de/js/mimir/ +||cp.finanzfrage.net/stats +||cpx.golem.de^ +||cpxl.golem.de^ +||d.rp-online.de^ +||dasoertliche.de/js/liwAnalytics.js +||data.manga-passion.de^ +||data.openerotik.com^ +||data.sportdeutschland.tv^ +||dd.betano.com^ +||dein-plan.de/t.gif +||deine-tierwelt.de/ajax/responsive/stats.php? +||dejure.org/cgi-bin/sitzung.fcgi? +||derwesten.de/stats/ +||dforum.net/counter/ +||dv.chemie.de^ +||ens.luzernerzeitung.ch^ +||ens.nzz.ch^ +||ens.tagblatt.ch^ +||epimetheus.navigator.web.de^ +||epochtimes.de/epoch-mp/epoch_mp.min.js +||eum.instana.rewe-group.com^ +||event-collector.prd.data.s.joyn.de^ +||events.limango.com^ +||fc.vodafone.de^ +||fotocommunity.de/track/ +||fpoe.at/tracker/ +||froglytics.eventfrog.ch^ +||galaxus.com/_next/static/chunks/rum.$script +||gegenstimme.tv/tracker/ +||geoip.finanzen.net^ +||glomex.com^$ping +||gmx.net/monitoring/ +||go.absolventa.de^ +||go.azubi.de^ +||golem.de/staticrl/scripts/external/snow-390-min.js +||golem.de/staticrl/scripts/golem_cpxl_ +||hamburger-stadtplan.com/t.gif +||hannover-stadtplan.com/t.gif +||happysex.ch/app_jquery/Tracking.js +||hartgeld.com/cgi-sys/Count.cgi? +||heise.de/hlt/statistics/$xmlhttprequest +||heise.de/ivw-bin/ivw/cp/ +||heise.de/positions|$xmlhttprequest +||heise.de/pw/metrics/$xmlhttprequest +||heise.de/recommendation/m/impression$xmlhttprequest +||heise.de/recommendation/m/view$xmlhttprequest +||herz-fuer-tiere.de^*/ad.gif? +||herz-fuer-tiere.de^*/sunshine.gif? +||hokuspokus.tarnkappe.info^ +||holidaycheck.*/svc/ubt/v1/events +||homegate.ch/g/collect? +||inside-channels.ch/proxy/engine/api/v1/auth/ping/ +||inside-it.ch/proxy/engine/api/v1/auth/ping/ +||jobs.ch/api/v1/public/product/track/ +||js.tag24.de/main.js +||k-aktuell.de/monitoring? +||kaufland.de/uts/events/ +||leipziger-stadtplan.com/t.gif +||llntrack.messe-duesseldorf.de^ +||lokalwerben.t-online.de^ +||lynx.gruender.de^ +||mat.ukraine-nachrichten.de^ +||mengelke.de/Pub/img/ads/werbebanner/adserv.gif +||metrics.n-tv.de^ +||metrik.freitag.de^ +||moviepilot.de/assets/autotrack- +||msboul.gruenwelt.de^ +||mtb-news.de/metric/ +||muenchener-stadtplan.com/t.gif +||mydirtyhobby.de/tracker +||navigation-timing.meinestadt.de^ +||nct.ui-portal.de^ +||netzwelt.de/log? +||news.de/track.php +||newsdeutschland.com/RPC.php +||nickles.de/ivw/ +||nius.de/monitoring +||ostjob.ch/public/statistic/teaser/hit/ +||otto.de/error-logging/ +||otto.de/pass/scale-beacon-service/ +||otto.de^$ping +||oxifwsabgd.nzz.ch^ +||pi.technik3d.com^ +||pixel.ionos.de^ +||plausible.motorpresse.de^ +||playox.de/analytics/ +||pons.com/pons-site-website-assets/lib/analytics.min.js +||potsdamer-stadtplan.com/t.gif +||pstt.mtb-news.de^ +||px.derstandard.at^ +||pxc.otto.de^ +||r.wz.de^ +||redaktionstest.net/cdn/$ping +||remp-beam.golem.de^ +||responder.wt.heise.de^ +||rewe.de/api/xrd/events +||rewe.de/api/xrd/page-data/data-layer +||rewe.de/shop/api/productlist/impressions +||rewe.de/shop/api/productlist/interactions +||ricardo.ch/api/browser-statistics/ +||rt.bunte.de^ +||ruw.de/js/trackSidebarClicks.js +||s.eick.it^ +||schnaeppchenfuchs.com/js/default- +||schottenland.de/na/ajax.php?ax=HiT& +||sgtm.tennis-point.de^ +||shoop.de/mgtrx/ +||shop.rewe.de/api/xrd/web-vitals +||sp.chip.de^ +||sparkasse.de/frontend/setTrackingCookie.htm +||sportnews.bz/pcookie? +||spreewaldkarte.de/t.gif +||sqs.quoka.de^ +||squirrel.cividi.ch^ +||srf.ch/udp/tracking/ +||ss.photospecialist.at^ +||ss.photospecialist.de^ +||stat.rz.htw-berlin.de^ +||statistic2.reichelt.de^ +||statistics.riskommunal.net^ +||statistics.werkenntdenbesten.de^ +||stats.autoscout24.ch^ +||stats.rocketbeans.tv^ +||stats.sumikai.com^ +||steuertipps.de/scripts/tracking/ +||stol.it/pcookie? +||stuttgarter-nachrichten.de/cre-1.0/tracking/device.js +||subpixel.4players.de^ +||suche.web.de/click +||swmhdata.stuttgarter-nachrichten.de^ +||swmhdata.stuttgarter-zeitung.de^ +||t-online.de/to/web/click? +||t-online.de/toi/html/de/img/transp.bmp? +||t.wayfair.de^ +||t2.aboutyou.de^ +||tagm.eduscho.at^ +||tapi.kaufda.de^ +||tarnkappe.info^$ping +||taz.de/count/ +||telemetry.portal.voltdeutschland.org^ +||teltarif.de/scripts/ttt.js +||teltarif.de/scripts/ttt.v2.js +||teltarif.de^$ping +||tgw.gmx.ch^ +||tgw.gmx.net^ +||tgw.web.de^ +||time.aktion-mensch.de^ +||timing.uhrforum.de^ +||tm.swp.de^ +||tr.wbstraining.de^ +||tracer.autoscout24.ch^ +||track.dws.de^ +||track.express.de^ +||track.noz.de^ +||track.rheinpfalz.de^ +||track.rundschau-online.de^ +||tracking.asialadies.de^ +||tracking.avladies.de^ +||tracking.badeladies.de^ +||tracking.behaarteladies.de^ +||tracking.bizarrladies.de^ +||tracking.buhl.de^ +||tracking.busenladies.de^ +||tracking.deutscheladies.de^ +||tracking.devoteladies.de^ +||tracking.dominanteladies.de^ +||tracking.erfahreneladies.de^ +||tracking.escorts24.de^ +||tracking.exklusivladies.de^ +||tracking.finanzen.net^ +||tracking.fkk24.de^ +||tracking.fupa.net^ +||tracking.grosseladies.de^ +||tracking.hobbyladies.de^ +||tracking.immobilienscout24.de^ +||tracking.jungeladies.de^ +||tracking.krone.at^ +||tracking.kussladies.de^ +||tracking.ladies.de^ +||tracking.latinaladies.de^ +||tracking.live.wetter.at^ +||tracking.massierendeladies.de^ +||tracking.mollyladies.de^ +||tracking.noen.at^ +||tracking.nsladies.de^ +||tracking.nymphomaneladies.de^ +||tracking.oe24.at^ +||tracking.orientladies.de^ +||tracking.osteuropaladies.de^ +||tracking.piercingladies.de^ +||tracking.rasierteladies.de^ +||tracking.schokoladies.de^ +||tracking.tattooladies.de^ +||tracking.tsladies.de^ +||tracking.zaertlicheladies.de^ +||tracking.zierlicheladies.de^ +||tracksrv.zdf.de^ +||tutti.ch/api/v10/clientmetrics/report-metric +||ud.galaxus.de^ +||ui-portal.de/pos-cdn/tracklib/ +||united.web.de/confirm? +||united.web.de/event? +||vfd2dyn.vodafone.de^ +||vinted.de/relay/events +||volksverpetzer.de/pl/v.js +||wa.gmx.ch^ +||wa.gmx.net^ +||wa.web.de^ +||walbusch.de^$ping +||weltbild.de/tracking/ +||werkenntdenbesten.de/js/tracking. +||werkenntdenbesten.de/pd.js +||wikipedia.de/tracking.js +||witt-weiden.de^$ping +||wlw.de/unified_search_backend/api/v1/tracking/ +||wnoz.de/nieyohh8.js +||xing.com^$ping +||ymprove.gmx.net^ +||ymprove.web.de^ +||zooplus.de/om/pxl/ +! TrustPid/Utiq +! ||service.utiq.com^ +||a1at.mno.link^ +||bgtfr-test.mno.link^ +||bob-a1at.mno.link^ +||dtpen.mno.link^ +||esca-test.mno.link^ +||esca.mno.link^ +||fakexa-post.mno.link^ +||logger-test.mno.link^ +||mgntat.mno.link^ +||o2de.mno.link^ +||orangefr-test.mno.link^ +||orangefr.mno.link^ +||sfr.mno.link^ +||timit.mno.link^ +||tmi.jv-telcoid.es^ +||tmi.vodafone.de^ +||u.20minutes.fr^ +||u.20mn.it^ +||utiq-test.utest1.work^ +||utiq-test.utest3.work^ +||utiq.11freunde.de^ +||utiq.20minutos.es^ +||utiq.24auto.de^ +||utiq.24books.de^ +||utiq.24hamburg.de^ +||utiq.24rhein.de^ +||utiq.24royal.de^ +||utiq.24vita.de^ +||utiq.3djuegos.com^ +||utiq.3djuegosguias.com^ +||utiq.3djuegospc.com^ +||utiq.750g.com^ +||utiq.abc.es^ +||utiq.actu.fr^ +||utiq.actu.net^ +||utiq.aisnenouvelle.fr^ +||utiq.allocine.fr^ +||utiq.annalect.es^ +||utiq.apotheken-umschau.de^ +||utiq.applesfera.com^ +||utiq.ariva.de^ +||utiq.arquitecturaydiseno.es^ +||utiq.atf-tagmanager.de^ +||utiq.aufeminin.com^ +||utiq.autobild.de^ +||utiq.autofrage.net^ +||utiq.autojournal.fr^ +||utiq.automobile-magazine.fr^ +||utiq.autoplus.fr^ +||utiq.az-online.de^ +||utiq.berlin-live.de^ +||utiq.bfmtv.com^ +||utiq.bibamagazine.fr^ +||utiq.bild.de^ +||utiq.bitban.com^ +||utiq.blogthinkbig.com^ +||utiq.brand-demo.com^ +||utiq.brokser-heiratsmarkt.de^ +||utiq.buffed.de^ +||utiq.bunte.de^ +||utiq.burgosconecta.es^ +||utiq.buzzfeed.at^ +||utiq.buzzfeed.de^ +||utiq.bw24.de^ +||utiq.bz-berlin.de^ +||utiq.c7c12669-b77b-4cff-8b74-0aceec09c0c7.com^ +||utiq.caminteresse.fr^ +||utiq.canarias7.es^ +||utiq.capital.fr^ +||utiq.caradisiac.com^ +||utiq.centrepresseaveyron.fr^ +||utiq.cesoirtv.com^ +||utiq.charentelibre.fr^ +||utiq.chartsinfrance.net^ +||utiq.cheriefm.fr^ +||utiq.chip.de^ +||utiq.clara.es^ +||utiq.closermag.fr^ +||utiq.cnetfrance.fr^ +||utiq.codebuild.ovh^ +||utiq.come-on.de^ +||utiq.compradiccion.com^ +||utiq.computerbild.de^ +||utiq.computerfrage.net^ +||utiq.comunidadmsm.es^ +||utiq.courrier-picard.fr^ +||utiq.cuerpomente.com^ +||utiq.cuisineactuelle.fr^ +||utiq.dacia.fr^ +||utiq.dasgelbeblatt.de^ +||utiq.derwesten.de^ +||utiq.desired.de^ +||utiq.diaridegirona.cat^ +||utiq.diariocordoba.com^ +||utiq.diariodeibiza.es^ +||utiq.diariodelaltoaragon.es^ +||utiq.diariodemallorca.es^ +||utiq.diariogol.com^ +||utiq.diariosur.es^ +||utiq.diariovasco.com^ +||utiq.directoalpaladar.com^ +||utiq.diverto.tv^ +||utiq.doctissimo.fr^ +||utiq.donaukurier.de^ +||utiq.duden.de^ +||utiq.dzfoot.com^ +||utiq.easyvoyage.com^ +||utiq.eatbetter.de^ +||utiq.einbuergerungstest-online.de^ +||utiq.einbuergerungstest-online.eu^ +||utiq.einfach-tasty.de^ +||utiq.einfachkochen.de^ +||utiq.einfachschoen.me^ +||utiq.elcomercio.es^ +||utiq.elcorreo.com^ +||utiq.elcorreogallego.es^ +||utiq.elcorreoweb.es^ +||utiq.eldia.es^ +||utiq.eldiario.es^ +||utiq.eldiariomontanes.es^ +||utiq.elmueble.com^ +||utiq.elmundo.es^ +||utiq.elnacional.cat^ +||utiq.elnortedecastilla.es^ +||utiq.elperiodico.cat^ +||utiq.elperiodico.com^ +||utiq.elperiodicodearagon.com^ +||utiq.elperiodicoextremadura.com^ +||utiq.elperiodicomediterraneo.com^ +||utiq.emporda.info^ +||utiq.entrenous.fr^ +||utiq.epe.es^ +||utiq.espinof.com^ +||utiq.europapress.es^ +||utiq.europapress.tv^ +||utiq.eventfinder.at^ +||utiq.eventfinder.de^ +||utiq.expansion.com^ +||utiq.extratipp.com^ +||utiq.familie.de^ +||utiq.farodevigo.es^ +||utiq.faz.net^ +||utiq.fehmarn24.de^ +||utiq.femmeactuelle.fr^ +||utiq.finanzfrage.net^ +||utiq.fitbook.de^ +||utiq.fnp.de^ +||utiq.focus.de^ +||utiq.football.fr^ +||utiq.football365.fr^ +||utiq.fr.de^ +||utiq.frandroid.com^ +||utiq.fuehrerscheintest-online.de^ +||utiq.funandnews.de^ +||utiq.futurezone.de^ +||utiq.gala.fr^ +||utiq.gamekult.com^ +||utiq.genbeta.com^ +||utiq.genialetricks.de^ +||utiq.geo.fr^ +||utiq.gesundheitsfrage.net^ +||utiq.giessener-allgemeine.de^ +||utiq.giga.de^ +||utiq.grazia.fr^ +||utiq.groupmintelligence.com^ +||utiq.gutefrage.net^ +||utiq.hallo-eltern.de^ +||utiq.hallo-muenchen.de^ +||utiq.hanauer.de^ +||utiq.handelsblatt.com^ +||utiq.hbrfrance.fr^ +||utiq.heftig.de^ +||utiq.heimatsport.de^ +||utiq.helpster.de^ +||utiq.hersfelder-zeitung.de^ +||utiq.hna.de^ +||utiq.hola.com^ +||utiq.hoy.es^ +||utiq.huelva24.com^ +||utiq.ideal.es^ +||utiq.informacion.es^ +||utiq.infosalus.com^ +||utiq.ingame.de^ +||utiq.ingolstadt-today.de^ +||utiq.inspirational.es^ +||utiq.instyle.es^ +||utiq.ippen.media^ +||utiq.jakala.es^ +||utiq.jamesonwhiskey.com^ +||utiq.jdelhommeau.fr^ +||utiq.jeuxvideo.com^ +||utiq.jux.news^ +||utiq.kino.de^ +||utiq.kreis-anzeiger.de^ +||utiq.kreiszeitung.de^ +||utiq.kundendienst-info.de^ +||utiq.kurierverlag.de^ +||utiq.lacentrale.fr^ +||utiq.lachainemeteo.com^ +||utiq.lacronicabadajoz.com^ +||utiq.ladepeche.fr^ +||utiq.lagacetadesalamanca.es^ +||utiq.landtiere.de^ +||utiq.lanouvellerepublique.fr^ +||utiq.laopinioncoruna.es^ +||utiq.laopiniondemalaga.es^ +||utiq.laopiniondemurcia.es^ +||utiq.laopiniondezamora.es^ +||utiq.laprovence.com^ +||utiq.laprovincia.es^ +||utiq.lardennais.fr^ +||utiq.larepubliquedespyrenees.fr^ +||utiq.larioja.com^ +||utiq.lasprovincias.es^ +||utiq.lauterbacher-anzeiger.de^ +||utiq.laverdad.es^ +||utiq.lavoixdunord.fr^ +||utiq.lavozdigital.es^ +||utiq.le10sport.com^ +||utiq.lebenindeutschland.eu^ +||utiq.leckerschmecker.me^ +||utiq.lecturas.com^ +||utiq.lefigaro.fr^ +||utiq.lejournaldelamaison.fr^ +||utiq.lemessager.fr^ +||utiq.leonoticias.com^ +||utiq.lesnumeriques.com^ +||utiq.lest-eclair.fr^ +||utiq.letelegramme.fr^ +||utiq.levante-emv.com^ +||utiq.lexpress.fr^ +||utiq.liberation-champagne.fr^ +||utiq.lidl.de^ +||utiq.lidl.pl^ +||utiq.lindependant.fr^ +||utiq.listisima.com^ +||utiq.lne.es^ +||utiq.lunion.fr^ +||utiq.madmoizelle.com^ +||utiq.maennerseite.net^ +||utiq.mahou.es^ +||utiq.maison-travaux.fr^ +||utiq.mallorcazeitung.es^ +||utiq.manager-magazin.de^ +||utiq.manga-viewer.com^ +||utiq.mappy.com^ +||utiq.mappyrecette.com^ +||utiq.marca.com^ +||utiq.mariefrance.fr^ +||utiq.marmiton.org^ +||utiq.meine-anzeigenzeitung.de^ +||utiq.mejorconectados.com^ +||utiq.melty.fr^ +||utiq.merklespaintech.es^ +||utiq.merkur.de^ +||utiq.meteoconsult.es^ +||utiq.metodomontessori.com^ +||utiq.midilibre.fr^ +||utiq.millenium.gg^ +||utiq.millenium.org^ +||utiq.mittelbayerische-stellen.de^ +||utiq.mittelbayerische.de^ +||utiq.mno.link^ +||utiq.mobilite-verte.com^ +||utiq.modesettravaux.fr^ +||utiq.moin.de^ +||utiq.monacomatin.mc^ +||utiq.mopo.de^ +||utiq.motor-talk.de^ +||utiq.motorradfrage.net^ +||utiq.movistar.es^ +||utiq.mundoxiaomi.com^ +||utiq.myhomebook.de^ +||utiq.nationalgeographic.com.es^ +||utiq.neonmag.fr^ +||utiq.news.bayern^ +||utiq.news38.de^ +||utiq.nextplz.fr^ +||utiq.nicematin.com^ +||utiq.nicematin.net^ +||utiq.noovomoi.ca^ +||utiq.nordlittoral.fr^ +||utiq.nostalgie.fr^ +||utiq.nrj-play.fr^ +||utiq.nrj.fr^ +||utiq.nrpyrenees.fr^ +||utiq.numerama.com^ +||utiq.oberhessische-zeitung.de^ +||utiq.oktoberfest.bayern^ +||utiq.op-online.de^ +||utiq.orange.es^ +||utiq.ouest-france.fr^ +||utiq.ozap.com^ +||utiq.palladiumhotelgroup.com^ +||utiq.paris-normandie.fr^ +||utiq.paroledemamans.com^ +||utiq.pcgames.de^ +||utiq.petbook-magazine.com^ +||utiq.petbook.de^ +||utiq.petitbleu.fr^ +||utiq.petitfute.com^ +||utiq.pleinevie.fr^ +||utiq.pnp.de^ +||utiq.poprosa.com^ +||utiq.programme-tv.net^ +||utiq.programme.tv^ +||utiq.promiflash.de^ +||utiq.psychologies.com^ +||utiq.ptitchef.com^ +||utiq.publisher-demo.media^ +||utiq.purebreak.com^ +||utiq.purepeople.com^ +||utiq.regio7.cat^ +||utiq.reisefrage.net^ +||utiq.renault.fr^ +||utiq.renew.auto^ +||utiq.rireetchansons.fr^ +||utiq.rmcbfmplay.com^ +||utiq.rugbyrama.fr^ +||utiq.sabervivirtv.com^ +||utiq.salamancahoy.es^ +||utiq.sauerlandkurier.de^ +||utiq.schlager.de^ +||utiq.science-et-vie.com^ +||utiq.semana.es^ +||utiq.sensacine.com^ +||utiq.serienjunkies.de^ +||utiq.sevilla.abc.es^ +||utiq.soester-anzeiger.de^ +||utiq.speakup.es^ +||utiq.speisekarte.de^ +||utiq.spektrum.de^ +||utiq.spiegel.de^ +||utiq.spielaffe.de^ +||utiq.sport.es^ +||utiq.sportlerfrage.net^ +||utiq.sports.fr^ +||utiq.staging--hb.hmg.systems^ +||utiq.staging--wiwo.hmg.systems^ +||utiq.stg.noovomoi.bellmedia.ca^ +||utiq.stilo.es^ +||utiq.stimme.de^ +||utiq.stylebook.de^ +||utiq.sudouest.fr^ +||utiq.sueddeutsche.de^ +||utiq.superdeporte.es^ +||utiq.t-online.de^ +||utiq.tagesspiegel.de^ +||utiq.tatort-fans.de^ +||utiq.techbook.de^ +||utiq.telefonica.com^ +||utiq.telekom.de^ +||utiq.telestar.fr^ +||utiq.telva.com^ +||utiq.terrafemina.com^ +||utiq.testfaz.net^ +||utiq.thestar.com^ +||utiq.thewatmag.com^ +||utiq.thueringen24.de^ +||utiq.tierfans.net^ +||utiq.tim.it^ +||utiq.todoalicante.es^ +||utiq.topsante.com^ +||utiq.traum-deutung.de^ +||utiq.travelbook.de^ +||utiq.trendencias.com^ +||utiq.tvspielfilm.de^ +||utiq.tz.de^ +||utiq.usinger-anzeiger.de^ +||utiq.utest1-prod.work^ +||utiq.utest2-prod.work^ +||utiq.utest2.work^ +||utiq.utest3-prod.work^ +||utiq.utest3.work^ +||utiq.utopia.de^ +||utiq.varmatin.com^ +||utiq.verisure.fr^ +||utiq.vidaextra.com^ +||utiq.vitonica.com^ +||utiq.voici.fr^ +||utiq.volksfest-freising.de^ +||utiq.wa.de^ +||utiq.webedia.io^ +||utiq.webnachrichten.de^ +||utiq.welt-ctv.com^ +||utiq.welt.de^ +||utiq.werra-rundschau.de^ +||utiq.wetterauer-zeitung.de^ +||utiq.wieistmeineip.de^ +||utiq.wiesn.bayern^ +||utiq.wiwo.de^ +||utiq.wlz-online.de^ +||utiq.wmn.de^ +||utiq.wochenblatt.de^ +||utiq.xataka.com^ +||utiq.xatakaciencia.com^ +||utiq.xatakafoto.com^ +||utiq.xatakahome.com^ +||utiq.xatakamovil.com^ +||utiq.xatakandroid.com^ +||utiq.xatakawindows.com^ +||utiq.zdnet.fr^ +||utiq.zeit.de^ +||vfdemsp.mno.link^ +||vfes.mno.link^ +||vfesmsp.mno.link^ +||vfit.mno.link^ +||vfuk.mno.link^ +||yesss-a1at.mno.link^ +! Danish +||gtm.mandesager.dk^ +||ia.ekstrabladet.dk^ +||jv.dk/assets/statistics/ +||matas.dk/internal/Tracking/ +||minetilbud.dk/api/web/logViewAdvertPage +||minetilbud.dk^*/Statistics.asmx +||nrpukcsgboqr0gz2o8.www.bolighub.dk^ +! French +||2ememain.be/c3650cdf- +||2ememain.be/px/ +||actu.fr/assets/js/smarttag5280-1.js +||aliasdmc.fr/js/general_sts.js +||allocine.fr/_/geolocalize +||analytics.allovoisins.com^ +||analytics.clubic.com^ +||api.bookvillage.app/analytics/track +||api.doctolib.fr/nr_insert_ +||api.odysee.com/locale/get +||api.ouedkniss.com^*&xTrackId= +||api.tacotax.fr/v2/amplitude_trackers +||at.pagesjaunes.fr^ +||batiactu.com/cap_ +||bellesdemeures.com/Content/dist/js/libs/thor.js +||bmly.impots.gouv.fr^ +||boingtv.fr/track_view +||cdtm.cdiscount.com^ +||centerblog.net/a/in +||cesu.urssaf.fr/clm10 +||clubic.com/tview +||compteur.developpez.com^ +||courrierinternational.com/*.pa.js +||courses.monoprix.fr/events +||datalayer.orange.fr^ +||dd.bellesdemeures.com^ +||dd.leboncoin.fr^ +||dd.seloger-bureaux-commerces.com^ +||dd.seloger.com^ +||dd.selogerneuf.com^ +||ddm.frandroid.com^ +||decathlon.net/content/tracker.v2.prod.min.js +||developpez.com/public/js/log.js +||donnons.org/log.js +||dorcel.com/_stats/ +||e.legalstart.fr^ +||e.m6web.fr/events +||easeus.com/default/js/aff_buy_tracking.js +||ecranlarge.com/stat +||email.nautiljon.com/oo/$image +||europe1.fr/assets/europe1/estat. +||events-logs.doctolib.com^ +||events.verifymy.io^ +||flow.kiloutou.fr^ +||fourchette-et-bikini.fr/core/modules/statistics/ +||fr.shopping.rakuten.com/rakuten-static-deliver/mob/*/js/track.js +||fsm.lapresse.ca^ +||gamergen.com/ajax/actualites/addVue +||groupe-seloger.com/tracking-data/ +||hits.porn.fr^ +||hlms.ecologie.gouv.fr^ +||horairesdouverture24.fr/ar.js +||ianimes.org/img/tracker.gif +||ici.radio-canada.ca/v5/*/trace/ +||igen.fr/modules/statistics/statistics.php +||insights.v3.decathlon.net^ +||iphoneaddict.fr/wp-content/*/counter.php +||iptvgratuit.net/wp-content/*/analytics.js +||jeu.net/hits.js +||jscrambler.com^$script,domain=airfrance.fr +||kwgs.letudiant.fr^ +||l.aufeminin.com^ +||l.autojournal.fr^ +||l.autoplus.fr^ +||l.beaute-test.com^ +||l.bibamagazine.fr^ +||l.closermag.fr^ +||l.cnetfrance.fr^ +||l.diapasonmag.fr^ +||l.doctissimo.fr^ +||l.dzfoot.com^ +||l.entrenous.fr^ +||l.football.fr^ +||l.football365.fr^ +||l.francetvinfo.fr^ +||l.gamekult.com^ +||l.grazia.fr^ +||l.lacremedugaming.fr^ +||l.lechasseurfrancais.com^ +||l.lejournaldelamaison.fr^ +||l.lesnumeriques.com^ +||l.maison-travaux.fr^ +||l.mariefrance.fr^ +||l.melty.fr^ +||l.modesettravaux.fr^ +||l.netmums.com^ +||l.nextplz.fr^ +||l.nicematin.com^ +||l.paroledemamans.com^ +||l.pleinevie.fr^ +||l.psychologies.com^ +||l.science-et-vie.com^ +||l.sportauto.fr^ +||l.sports.fr^ +||l.telestar.fr^ +||l.topsante.com^ +||l.zdnet.fr^ +||lacentrale.fr/collect +||lacentrale.fr/static/fragment-sentry/lc-sentry.js +||lacentrale.fr/static/fragment-tracking/tracking- +||lacoccinelle.net/tools.js +||laposte.fr/cdp/events? +||ldlc.com/V4px/js/ldlcmachine.js +||leboncoin.fr/rav-monitoring/ +||lecho.be/fb2? +||lecho.be/tag/tag- +||ledevoir.com/js/analytics/ +||ledevoir.com/js/pianoAnalyticsTags.js +||lemonde.fr/b9d29410eafefd859fb36add0cb64f9b4ad2138b +||leparking-moto.fr/jsV155/Tracker.js +||leparking.fr/*/Tracker.js +||lepetitjournal.com/monitoring? +||lepoint.fr/img-l/$image +||liberation.fr/newsite/js/cmp/ +||logstash-3.radio-canada.ca^ +||ma-petite-recette.fr/visites +||marmiton.org/reloaded/errpix.php +||medoucine.com/tracking/ +||mesure-pro.engie.fr^ +||metrics-broker.prod.p.tf1.fr^ +||neko-san.fr/stats +||ocular.dealabs.com^ +||ouest-france.fr/v1/javascripts/*-googletag- +||ouest-france.fr/v1/javascripts/*-prebid- +||p.pagesjaunes.fr^ +||pagesjaunes.fr/pmp/ +||paruvendu.fr/*/stats/ +||pixel.dugwood.com^ +||pixel.ionos.fr^ +||plausible.k-words.io^ +||promoneuve.fr/stat/ +||pt.legalstart.fr^ +||quellavelinge.com/referer.php? +||res.paruvendu.fr^ +||rts.ch^*/boreas_b01.js +||rueducommerce.fr/ps/events.js +||s5.charliehebdo.fr^ +||seloger.com/cdp-bff/analytics +||serv.letudiant.fr^ +||services.radio-canada.ca/metrik/ +||shemsfm.net/ar/setStats/ +||shemsfm.net/fr/setStats/ +||sncf-connect.com/apm +||sncf-connect.com/bff/api/v1/t/events +||space-blogs.net/include/counter/ +||sstm.sport2000.fr^ +||sta.wawacity. +||sta.zone-telechargement. +||stats*.credit-cooperatif.coop^ +||stats.sexemodel.com^ +||stats.zone-annuaire. +||stats.zone-telechargement. +||stt.wawacity.onl^ +||stw.extrem-down.zone^ +||stw.extreme-down. +||surace-jujitsu.fr/outils/compteur_php/ +||t.7sur7.be^$image +||t.blablacar.com^ +||t.hellowork.com^ +||tc2.hometogo.net^ +||techno-science.net/outils/serviceLoc.php? +||telerama.fr/*&ptag= +||tracker.mspy.com^ +||tracking.cdiscount.com^ +||trk.edf.fr^ +||tss.sport2000.fr^ +||unblog.fr/cu.js +||vinted.fr/relay/events +||wawacity.*/bypass +||woopic.com/z.gif +||wrhv.education.gouv.fr^ +||wstats.gameblog.fr^ +||wt.oscaro.com^ +||yandex.fr/clck/click +||zone-telechargement.al/analytics/ +||zoneadsl.com/api/get-ip +! Belarusian +||c1hit.zerkalo.io^ +||s1r.zerkalo.io^ +||s3r.zerkalo.io^ +||zerkalo.io/stat/ +! Arabic +||khamsat.com/ajax/account_stats? +||mosoah.com/analytics.js +||tags.aljazeera.net^ +! Bosnian +||insight.olx.ba^ +||klix.ba/pixel/ +! Chinese +||104.com.tw/log/ +||17173.com/ping.js +||17173.com/pv? +||4399.com/js/4399stat.js +||4399.com/plugins/tj/event? +||4399stat.5054399.com^ +||55bbs.com/east.html +||591.com.tw/stats/ +||9game.cn/stat/ +||a.itsmore.cn^ +||ac.dun.163.com^ +||ac.dun.163yun.com/v2/collect? +||accwww9.53kf.com^ +||adstats.tencentmusic.com^ +||al.autohome.com.cn^ +||alicdn.com/f/pcdn/i.php? +||ams.lelong.com.my^ +||analytics-gw.games.wanmei.com^ +||analytics.163.com^ +||analytics.cnblogs.com^ +||analytics.ifanrusercontent.com^ +||analytics.oceanengine.com^ +||analytics.shop.hisense.com^ +||analytics.yicai.com^ +||api.ea3w.com/hits.js +||apilog-web.acfun.cn^ +||apiwmda.58.com.cn^ +||applog.yiche.com^ +||autohome.com.cn/impress? +||baidu.com/api/bidder/ +||baidu.com/kan/api/ipLocation +||baidu.com^*/ps_default.gif? +||banana.le.com^ +||bc.qunar.com^ +||beacon.cdn.qq.com^ +||beacon.qq.com^ +||channel-analysis-js.gmw.cn^ +||cherry.le.com^ +||clewm.net/public/cli_analytics.js$domain=cli.im +||click.gamersky.com^ +||clickcount.cnool.net^ +||clientlog.music.163.com^ +||count.candou.com^ +||count5.pconline.com.cn^ +||counter.people.cn^ +||cstm.baidu.com^ +||ctrmi.cn/t/ +||data.bilibili.com^ +||dcard.tw/v1/events +||df.huya.com^ +||dig.lianjia.com^ +||dolphin.deliver.ifeng.com^ +||douyucdn.cn/fish3/1.gif +||eastmoney.com/usercollect/ +||eastmoney.com/web/prd/jump_tracker.js +||eclick.360doc.com^ +||ems.youku.com^ +||err.ifengcloud.ifeng.com^ +||event.csdn.net^ +||fclog.baidu.com^ +||flog.pressplay.cc^ +||forum.zuvio.com.tw/api/article/finish +||fp-upload.dun.163.com^ +||frog.yuanfudao.com^ +||ftwo-feedback.autohome.com.cn^ +||ftwo-receiver.autohome.com.cn^ +||gentian-frd.hjapi.com^ +||gia.jd.com^ +||gk.sina.cn^ +||h5.analytics.126.net^ +||h5log.zongheng.com^ +||hisense.com/ta.js +||hktvmall.com/api/event +||hoyoverse.com/device-fp/ +||hoyoverse.com/dora/biz/*-h5log/ +||huaxiang.eastmoney.com^ +||hujiang.com/v2/log +||i-cable.com/ci/tracking/ +||i-tm.com.tw/api/itm-tracker.js$domain=pixnet.net +||idm.api.autohome.com.cn^ +||ifeng.com/i?p= +||imgstat.baidu.com^ +||improving.wuzhuiso.com^ +||iqiyi.com/dsp_track3 +||iqiyi.com/track2? +||jcm.jd.com^$script,third-party +||jcmonitor.xcar.com.cn^ +||jiayuan.com^*/pv.js +||js.ea3w.com/pv.js +||kn007.net/snmp.php +||l.web.huya.com^ +||le.com/op/ +||log-upload-os.hoyolab.com^ +||log-upload-os.hoyoverse.com^ +||log.bitauto.com^ +||log.flight.qunar.com^ +||log.m.sm.cn^ +||log.mgtv.com^ +||log.mix.sina.com.cn^ +||log.sina.cn^ +||log.zcool.com.cn^ +||log.zongheng.com^ +||log2.sina.cn^ +||logs.51cto.com^ +||logtake.weidian.com^ +||m.diyibanzhu.buzz/17mb/script/tj.js +||m.diyibanzhu.buzz/17mb/script/wap.js +||mail.qq.com/cgi-bin/getinvestigate? +||map.baidu.com/newmap_test/static/common/images/transparent.gif +||metric.huya.com^ +||mi.com/stat/ +||monitor.music.qq.com^ +||mp.weixin.qq.com/mp/appmsgreport? +||mp.weixin.qq.com/mp/getappmsgad? +||mp.weixin.qq.com/mp/jsmonitor? +||mp.weixin.qq.com/mp/report? +||mp.weixin.qq.com/mp/webcommreport? +||msg.qy.net^ +||msgsndr.com/funnel/event +||mtrace.qq.com^ +||music.163.com/device/signature/create/deviceid.js +||netstat.yunnan.cn^ +||nex.163.com^ +||nmc.cn/static/nmclog/nmclog.js +||p.data.cctv.com^ +||pan.baidu.com/api/report/ +||pan.baidu.com/pcloud/counter/refreshcount? +||pan.baidu.com/recent/report? +||pb.i.sogou.com^ +||people.cn/js/pa.js +||phpstat.cntcm.com.cn^ +||pingjs.qq.com^ +||pinkoi.com/_log/ +||pixel.kknews.cc^ +||poro.58.com^ +||pptv.com/stg/add? +||pptv.com/webdelivery/ +||pressplay.cc/marketing/event +||pv.ltn.com.tw^ +||pv.xcar.com.cn^ +||pvx.xcar.com.cn^ +||qhimg.com/11.0.1.js$script +||qihucdn.com/11.0.1.js$script +||qiyukf.com/webda/da.gif$domain=youdao.com +||qq.com/code.cgi? +||qq.com/collect/ +||qq.com/kvcollect? +||qq.com/p? +||qq.com/qqcom/ +||qq.com/report.cgi? +||qq.com/report/$image,xmlhttprequest +||qq.com/report| +||qq.com/stdlog +||qreport.qunar.com^ +||qzone.qq.com/iframe/report +||qzone.qq.com/wspeed.qq.com^ +||qzonestyle.gtimg.cn/qzone/v8/ic/iframeReport.js +||rcgi.video.qq.com^ +||referer.pixplug.in^ +||reportsk.web.sdo.com^ +||retcode.taobao.com^ +||reurl.cc/javascripts/tagtoo.js +||rlogs.youdao.com^ +||ro.aiwan4399.com^ +||s.360.cn^ +||s.pixfs.net/js/pixlogger.min.js +||s.pixfs.net/visitor.pixplug.in/ +||sbeacon.sina.com.cn^ +||sentry.music.163.com^ +||sfp.safe.baidu.com^ +||shopee.tw/__t__ +||shopee.tw/v2/shpsec/web/report +||shrek.6.cn^ +||sina.com.cn/view? +||sinajs.cn/open/api/js/wb.js +||sngmta.qq.com^ +||snowflake.qq.com^ +||sofire.bdstatic.com^ +||sogou.com/cl.gif? +||sogoucdn.com/hhytrace/ +||sohu.com/adgtr/ +||sohu.com/count/ +||sohu.com/ip/$script +||sohu.com/pccollector +||sohu.com/pv.js +||soufun.com/click/ +||soufun.com/stats/ +||stadig.ifeng.com^ +||stat-58home.58che.com^ +||stat.*.v-56.com^ +||stat.caijing.com.cn^ +||stat.funshion.net^ +||stat.iteye.com^ +||stat.stheadline.com^ +||stat.uuu9.com^ +||stat.y.qq.com^ +||stat.zol.com.cn^ +||static.funshion.com/*/common/log/ +||static.qiyi.com/js/pingback/ +||statistic.qzone.qq.com^ +||statwup.huya.com^ +||steamchina.com/events/ +||sugar.zhihu.com^ +||t.home.news.cn^ +||tbskip.taobao.com^$script +||tf.360.cn^ +||theav.xyz/anyalytics +||theporn.cc/anyalytics? +||tianxun.com/ajax_website_statistics. +||titan24.com/scripts/stats.js +||tj.img4399.com^ +||tongji.mafengwo.cn^ +||tongji.techweb.com.cn^ +||tongji.xinmin.cn^ +||tongji2.vip.duba.net/__infoc.gif? +||top.baidu.com/js/nsclick.js +||toutiao.com/action_log/ +||toutiao.com^*/user_log/ +||tr.discuss.com.hk^ +||tr.price.com.hk^ +||trace.qq.com^ +||track.hk01.com^ +||track.hujiang.com^ +||track.sohu.com^ +||track.tom.com^ +||trackcommon.hujiang.com^ +||tracker.ai.xiaomi.com^ +||trail.53kf.com^ +||udblog.huya.com^ +||uestat.video.qiyi.com^ +||urbtix.hk/api/internet/log/add? +||utrack.hexun.com^ +||uuu9.com/s.php? +||v.blog.sohu.com/dostat.do? +||vatrack.hinet.net^ +||vipstatic.com/mars/ +||visit.xchina.pics^ +||visitorapi.pixplug.in^$domain=pixnet.net +||wanmei.com/public/js/stat.js +||weather.com.cn/a1.js +||weibo.cn/h5logs/ +||weibo.com/aj/log/ +||weiyun.com/cgi-bin/tianshu_report +||weiyun.com/proxy/domain/boss.qzone.qq.com/fcg-bin/fcg_rep_strategy? +||wenku.baidu.com/tongji/ +||wkctj.baidu.com^ +||wl.jd.com^$third-party +||work.3dmgame.com/js/statistics.js +||wumii.com/images/pixel.png +||xcar.com.cn/exp/ +||xiaohongshu.com/api/collect +||xiaohongshu.com/api/v2/collect +||xiaomi.com/js/mstr.js? +||ylog.huya.com^ +||youku.com/log/ +||yxdown.com/count.js +||zhihu-web-analytics.zhihu.com^ +||zhihu.com/collector/ +||zhihu.com/zbst/events/ +||zio.xcar.com.cn^ +||zol-img.com.cn^*/logger.js +||zongheng.com^*/logger.min.js +||zz.bdstatic.com^ +! Croatian +||avaz.ba/update/hits/ +||jutarnji.hr/template/js/eph_analytics.js +! Czech +||cc.dalten.cz^ +||insights.triad.sk^ +||jslog.post.cz^ +||logapi.alza.cz^ +||o2.cz^*-ga_o2cz_bundle.js? +||sa.kolik.cz^ +||seznam.cz^$ping +||stat.super.cz^ +||statistics.csob.cz^ +||xtv.cz/api/v3/log/ +! Dutch +||2dehands.be/px/ +||analytics.rambla.be^ +||api.beleggersbelangen.nl//api/statistics/ +||api.rtl.nl/monitoring/ +||azerty.nl/ambannerslider/analytic/ +||bc34.wijnvoordeel.nl^ +||bol.com/tracking/ +||businessinsider.nl^*/tr.php +||c.vrt.be^ +||coolblue.nl/monitoring/ +||cpt.postnl.be^ +||cpt.postnl.nl^ +||e428.tio.nl^ +||events.reclamefolder.nl^ +||expert.nl/daix.js +||fd.nl/pixel/ +||filmvandaag.nl/pl/js/script.js +||folderz.nl/clickstream/ +||infonu.nl/t.php? +||inzicht.cz.nl^ +||kieskeurig.nl/collect +||kieskeurig.nl/track- +||klik.nrc.nl/ping? +||localfocuswidgets.net/stats/ +||log.rabobank.nl^ +||log.willie.nl^ +||marktplaats.nl/add_counter_image. +||marktplaats.nl/metrics/ +||marktplaats.nl/px/ +||metrics.nu.nl^ +||metrics.pazzox.be^ +||njam.tv/tracking/ +||npo-data.nl/tag/v3/npotag.js +||npo-data.nl/tags/tag.min.js +||npo.nl/tag/atinternet/ +||pcmweb.nl/track/ +||pg.totaaltv.nl/api/metrics +||pipeline.balkstercourant.nl^$~script +||pipeline.dvhn.nl^$~script +||pipeline.lc.nl^$~script +||pipeline.nachtkastje.nl^ +||pipeline.rd.nl^$~script +||r.kleertjes.com^ +||raf.postnl.be^ +||raf.postnl.nl^ +||rtl.nl/system/track/ +||sanoma.nl/pixel/ +||sat.sanoma.fi^ +||sliponline.nl/tracker/ +||sst.babypark.nl^ +||sst.vrijopnaam.nl^ +||statistiek.rijksoverheid.nl^ +||stats.fd.nl^ +||t.ad.nl^$image +||t.bd.nl^$image +||t.bndestem.nl^$image +||t.destentor.nl^$image +||t.ed.nl^$image +||t.gelderlander.nl^$image +||t.hln.be^$image +||t.pzc.nl^$image +||t.tubantia.nl^$image +||tagging.sliponline.nl^ +||tijd.be/fb/? +||tijd.be/fb2? +||tijd.be/track/ +||topspin.npo.nl^ +||track.pexi.nl^ +||tracking.gaslicht.com^ +||tracking.voordeeluitjes.nl^ +||tvgids.nl/collect +||tweakers.net/ajax/clicks/ +||tweakers.nl/track/ +||two.tio.nl^ +||txrx.bol.com^ +||u299.libelle-lekker.be^ +||vinted.nl/relay/events +||vroom.be^*/stats.js? +||vroom.be^*/stats.php? +||woonboulevardpoortvliet.nl/*/Tagging_GTM/ +! Finnish +||analytics.sanoma.fi^ +||api.nettix.fi/counter/$image +||data.reactandshare.com^ +||dax.yle.fi^ +||dp.alma.iltalehti.fi/v1/cookie +||events.il.fi^ +||hs.fi/stats +||huuto.net/js/analytic/ +||ilcdn.fi^*/Bootstrap.js +||insights.mtv.a2d.tv^ +||io-tech.fi/io/www/delvr/lokiz.php +||is.fi/stats/ +||logger.omio.com^ +||logs.kaya.delfi.ee^ +||mha.fi/simple.gif? +||mtv3.fi/remarketing.js +||nelonenmedia.fi/hitcounter$image +||omataloyhtio.fi/ffsw-pushcrew.js +||omataloyhtio.fi/kuvat/pi.gif$image +||omataloyhtio.fi/statb.asp +||puutarha.net/ffsw-pushcrew.js +||puutarha.net/statb.asp +||rac.ruutu.fi^ +||rakentaja.fi/kuvat/pi.gif$image +||rantapallo.fi/s/redirect/tracking? +||stat.mtv3.fi^ +||stats.fonecta.fi^ +||teamtailor.com/pageview +||tori.fi/img/none.gif$image +||ts.fi/Statistics/Log$image +||ts.fi^*/spring.js +! Greek +||skroutz.gr/analytics/ +||skroutza.skroutz.gr/skroutza.min.js +||vidads.gr/imp/ +! Hebrew +||bravo.israelweather.co.il^ +||cellstats.mako.co.il^ +||ds.haaretz.co.il^ +||inn.co.il/Controls/HPJS.ashx?act=log +||services.haaretz.co.il^$ping +||stats.mako.co.il^ +||walla.co.il/CountsHP.asp? +||walla.co.il/impression/ +! Hungarian +||adat.borsonline.hu^ +||adat.ingatlanbazar.hu^ +||adat.koponyeg.hu^ +||adat.life.hu^ +||adat.mandiner.hu^ +||adat.mindmegette.hu^ +||adat.origo.hu^ +||adat.travelo.hu^ +||adat.veol.hu^ +||adat.videa.hu^ +||arukereso.hu/*.impression?tt= +||beam.telex.hu^ +||checkout.arukereso.hu^$ping +||events.ingatlan.com^ +||hirtv.hu/ajaxx/_stat/ +||hirtv.hu/nx_general_stat.jpg? +||nyitvatartas24.hu/ar.js +||otthonterkep.hu/c.js +||outal.origo.hu^ +||rtl.hu/_stat/ +||videa.hu/flvplayer_setcookie.php? +! Indian/Hindi +||bhaskar.com/comscore-ajax/ +||handler.amarujala.com/user/event +||ndtv.in/estatic/hindi-fcm.js +||staticasset.amarujala.com/handler/recomUserEvent.js +! Indonesian +||analytic20.detik.com^ +||bukalapak.com/banner-redirector/impression +||bukalapak.com/track-external-visit +||bukalapak.com/track_external.json +||dap.rri.go.id/tracker/ +||dt-tracker.mamikos.com^ +||indonesiadefense.com/metrikgtg +||ktracker.kumparan.com^ +||mygostore.com/api/log +||static.republika.co.id/js/tracker.js +||t.bukalapak.com^ +||ta.tokopedia.com/promo/v1/views +||tokopedia.com/helios-client/client-log +||tracker-beam.tempo.co^ +! Italian +/~shared/do/~/count/?$image +||adnkronos.com/akTracking_isf.js +||adnkronos.com/isf-rum/ +||alfemminile.com/logpix.php +||altervista.org/js/contatore.js +||altervista.org/js_tags/contatore.js +||altervista.org/stats/ +||altervista.org^*/tb_hits_ +||analytics.laregione.ch^ +||analytics.ticinolibero.ch^ +||analytics.tio.ch^ +||analytics.traderlink.com^ +||as.payback.it^ +||automobile.it/fb/ +||avvenire.it/content/js/track.es5.min.js? +||ayo.arredoitaliano.it^ +||bachecaannunci.it/statins3.php? +||bnamic.com/referrer/ +||c-date.it/tracking? +||c-date.it^*/tracking2/tr.js +||c.corriere.it^ +||catalove.com/bimp/ +||catalove.com/ntv/ +||click.tv.repubblica.it^ +||clickserver.libero.it^ +||compare.easyviaggio.com^ +||data.segugio.it^ +||deagostinipassion.it/collezioni/analytics.js +||execution-ci360.rai.it^ +||fanpage.it/views/ +||fideuram.it/js/cookie-manager/tracking-scripts.js +||freeonline.org/sito_track? +||gazzetta.it^*/stats.php? +||insights.cdt.ch^ +||joka.it/inquiero/isapi/csf.dll? +||kijimea.it/javascript/script.js +||la7.it/js-live/nielsen1.js +||lalaziosiamonoi.it/pixel +||laregione.ch/ext/av.php? +||leggo.it/index.php?$image +||libero.it//js/comscore/ +||libero.it/cgi-bin/ajaxtrace? +||libero.it/cgi-bin/cdcounter.cgi? +||libero.it/cgi-bin/cdcountersp.cgi? +||libero.it/cgi-bin/twit? +||libero.it/search/abin/ajaxtrace? +||libero.it^*/counter.php? +||lupoporno.com/js/analytics +||ma.register.it^ +||mediaset.it/cgi-bin/getcod.cgi? +||mtv.it/flux/trackingcodes/ +||paginebianche.it/cgi-bin/jbimpres.cgi? +||paginebianche.it/ip?dv= +||paginegialle.it/cgi-bin/getcod.cgi? +||paginegialle.it/cgi-bin/jimpres.cgi? +||paginegialle.it/engagement.js +||ppcdn.it/iol/tracklib.3.js +||raiplay.it/tracking/ +||repstatic.it^*/nielsen_static_mapping_repubblica_ +||seat.it/cgi-bin/getcod.cgi? +||servizi.unionesarda.it/controlli/ +||sgtm.tagmanageritalia.it^ +||smsaffari.it/count_new.php? +||spaziogames.it/ajax/player_impression.ashx? +||sst.colemanfurniture.com^ +||stats.splinder.com^ +||stats.stylight.it^ +||t.mediaset.it^ +||tantifilm.top^*/ping +||timinternet.it/timmobilestatic/img/*.gif? +||timinternet.it/timmobilestatic/jsPrivacy/gdl_function_cookie.js +||tio.ch/ext/u.php? +||tio.ch/lib/videojs/video-js-tiostats.js +||tiscali.it/banner-tiscali/stats.html? +||tla.traderlink.com^ +||topolino.it^*/omniture.php? +||track.tesiteca.it^ +||tracker.stileo.it^ +||tracking.donnemagazine.it^$script +||tracking.foodblog.it^$script +||tracking.gruppo.mps.it^ +||tracking.mammemagazine.it^$script +||tracking.motorimagazine.it^$script +||tracking.notizie.it^$script +||tracking.offerteshopping.it^$script +||tracking.style24.it^$script +||tracking.tuobenessere.it^$script +||tracking.viaggiamo.it^$script +||tuttocagliari.net/pixel +||tuttogratis.it/gopix.php? +||tuttomercatoweb.com/pixel +||video.mediaset.it/polymediashowanalytics/ +||videogame.it/a/logview/ +||vinted.it/relay/events +||virgilio.it/clientinfo.gif? +||virgilio.it/js/web-vitals-evnt/tracking.js +||vistanet.it^*/category_event.js +||volkswagen-italia.it^*/tracking/ +||vvvvid.it^$ping +||yachtingnetwork.it/stat/ +! Japanese +||abema-tv.com/v1/stats/ +||ad-bls-tracking.lemino.docomo.ne.jp^ +||ad-platform.jmty.jp^ +||altema-log.com^ +||amazonaws.com/ai-img/aia.js +||ameba.jp/cookie/ +||ameblo.jp/accesslog/ +||ana.3751chat.com^ +||ana.chat.shalove.net^ +||ana.luvul.net^ +||ana.skypemeet.net^ +||analysis.aws.locondo.jp^ +||analysis.prod.joyfru.jiji.com^ +||analytics.castel.jp^ +||analytics.cocolog-nifty.com^ +||analytics.ikyu.com^ +||analytics.tver.jp^ +||analytics.vk.asahi.co.jp^ +||analyzer.fc2.com^ +||analyzer2.fc2.com^ +||anyelse.com/stat^ +||api.mercari.jp/client_events/ +||apps.nhk.jp/assets/dtm/ +||askdoctors.jp/assets/packs/js/impression_tracker- +||astat.nikkei.com^ +||astral.nicovideo.jp^ +||baitoru.com/pu/js/2017/adobe_send_tracking.js +||barks.jp/v1/stats +||bc.nhk.jp^ +||beacon.radiko.jp^ +||beacon.watch.impress.co.jp^ +||beat.yourtv.jp^ +||bookoff.co.jp/assets/js/ac/tag-analyze.js +||bookoffonline.co.jp/files/inc_js/ac/ +||bookoffonline.co.jp/files/tracking/ +||bookwalker.jp/custom/unitag/ +||bookwalker.jp/ex/browser-viewer/unitag_bv.js +||bookwalker.jp/v/louis/*/tracks.js +||c-cmoa.akamaized.net/sol/c/js/common/gtm_ga_user_update.js +||carview.co.jp/include_api/log/ +||chibanippo.co.jp/api/page-tracker +||clb.yahoo.co.jp^ +||contx.net/collect.js +||count.upc.rakuten.co.jp^ +||counter.asobeans.jp^ +||crank-in.net/assets/common/js/sendpv.js +||crosset.onward.co.jp/ajax/getExternalServiceWebTrackingTags +||ctr.po-kaki-to.com^ +||d-log.asahi.co.jp^ +||d-log.tv-asahi.co.jp^ +||d.tv-asahi.co.jp^ +||daiichi-kamotsu.co.jp/js/google_analytics.js +||dmm.com/analytics/ +||dmm.com/imp? +||doda.jp/DodaCommon/Html/js/RtoasterTrack.js +||doda.jp/DodaFront/Html/js/dodaPrime_pc_aaTag.js +||doda.jp/resources/dcfront/js/usrclkTracking.js +||dxlive.com/js/dtrace.js +||ek-tracker.ekitan.com^ +||ekitan.com/*-tracker.js +||ekitan.com/cmn/js/ekitan.log.js +||eq-beacon.stream.co.jp^ +||eq-player-log.cdnext.stream.ne.jp^ +||eropuru.com/plugin/tracking/ +||esports-world.jp/js/banner.event.js +||event.lib.visumo.io/js/hbn_track.js +||fensi.plus^*/tracking/ +||fp.kakaku.com^ +||fspark-ap.com/ft/analytics_log +||g123.jp/stats? +||game-i.daa.jp/skin/analytics.php +||game8.jp/logs^ +||gigafile.nu/add_count_fab_jx.php +||gizmodo.jp/api/SurveyCountCollection? +||goo.ne.jp^*/vltracedmd.js +||gtm.diamond.jp^ +||hatarako.net/api/recommend/analyze_logger +||hatena.ne.jp/api/log? +||i2i.jp/bin/ +||ias.r10s.jp/grp15/lib/ichiba_frame.js +||img.syosetu.org/js/c_ +||is-log.furunavi.jp^ +||j1.ax.xrea.com^ +||k-crm.jp/tracking.js +||kabu-sokuhou.com/js/cpv/ +||kojima.net/excludes/KPC/js/kjm_gtm.js +||korewaeroi.com/fukugan_$subdocument +||link.tv-asahi.co.jp/tver/cookiesync? +||ln.ameba.jp^ +||log-lb.skyperfectv.co.jp^ +||log.recommend.nicovideo.jp^ +||logcollector.note.com^ +||logql.yahoo.co.jp^ +||m-oo-m.com/data/report/ +||majikichi.com/js/tracking.js +||mangaraw.to/api/v1/view/ +||masutabe.info/js/access.js +||mayla.jp/TRACKING/ +||mbp-japan.com/js/pv.js +||measure.ameblo.jp^ +||medibot.delling.care/api/counts/ +||mixi.net/static/js/build/mixi-analysis.production.js +||mng.jiji.com/cookie.html +||muragon.com/js/normal/gtag-event.js +||mwed.jp/assets/packs/js/measurements/ +||mxmkitchen.com/in/pcl/track.php +||next.rikunabi.com/api/logRecommendRealtimeI2AV2 +||nhk.or.jp/mpulse/boomerang/ +||nhk.or.jp^*/bc.js +||nicoad.nicovideo.jp/*/instream/tracking/ +||nicolive.cdn.nimg.jp/relive/sp/browser-logs. +||nicolive.cdn.nimg.jp/relive/sp/trackingService. +||nicovideo.jp/analyze/ +||nicovideo.jp/api/counter/ +||nikkei.com/.resources/tracking/ +||nkis.nikkei.com/imp? +||nvapi.nicovideo.jp/v1/bandit-machine/ +||odsyms15.com/impression? +||oita-press.co.jp/js2020/analytics.js +||portal.kotodaman.jp/api/otel/v1/logs +||pvtag.yahoo.co.jp^ +||pw.gigazine.net^ +||pzd.rakuten.co.jp^ +||r.r10s.jp/com/ap/plugin/mediatrack/mediatracker_ichiba_item.js +||rakuten.co.jp/com/js/omniture/ +||rakuten.co.jp/gw.js +||ranking.fc2.com/analyze.js +||rat.rakuten.co.jp^ +||rdsig.yahoo.co.jp^$image +||rebuyengine.com/api/*/analytics/event/ +||rec1.smt.docomo.ne.jp/bcn_access_log/ +||recv-entry.tbs.co.jp^ +||recv-jnn.tbs.co.jp^ +||recv.tbs.co.jp^ +||reebok.jp/resources/js/analysis/tracker.js +||retty.me/gen204.php +||retty.me/javascripts/common/logging.js +||revico.jp/providejs/revico_tracking.js +||revive-chat.io/js/tracking-min.js +||rtm-tracking.zozo.jp^ +||sankei.co.jp/js/analytics/ +||scinable.net/access? +||seesaawiki.jp/img/rainman.gif? +||service.webgoto.net/*?wAnalytics +||sgtm.cmoa.jp^ +||shipping.jp/raa/rd.js +||shopch.jp/com/js/analytics.js +||shueisha.online/op/analytics.js +||so-zou.jp/js/ga.js +||softonic.jp/web-stats +||ssai.api.streaks.jp/*/ad_info? +||stats.nhk.or.jp^ +||sy.ameba.jp^ +||sy.amebame.com^ +||sy.ameblo.jp^ +||t.rentio.jp^ +||t.syosetu.org^ +||tanweb.net/wordpress/?rest_route=/sng/v1/page-count +||tekoki-fuzoku-joho.com/js/ALinkPrepare_ +||temp.twicomi.com^ +||tower.jp/bundle/beacon +||track.buyma.com^ +||track.prod.smash.pet^ +||tracker.curama.jp^ +||tracking.ai.rakuten.co.jp^ +||tracking.cds.dmm.co.jp^$image +||tracking.cds.dmm.com^$image +||tracking.game8.jp^ +||tracking.gnavi.co.jp^ +||travel.co.jp/js/analysis.js +||travel.co.jp/tracking.asp +||tsite.jp/static/analytics/ +||tv-asahi.co.jp/official/logging? +||twivideo.net/templates/ajax_link_click.php +||ultra-soccer.jp/js/analytics.js +||view.fujitv.co.jp^ +||visumo.jp/Content/js/tracking.js +||withnews.jp/assets/js/bcon.js +||wowow.co.jp/API/new_prg/get_tracking_url.php +||wrtn.ai/proxy/client/metrics +||x.allabout.co.jp^ +||yahoo.co.jp/b?p= +||yahoo.co.jp/p? +||yahoo.co.jp/s?s= +||yjtag.yahoo.co.jp^ +||zatsubitown.com/mailfriend/kaiseki +! Korean +||11st.co.kr/st/ +||ad-log.dable.io^ +||adoffice.11st.co.kr^ +||aem-collector.daumkakao.io^ +||aka.asiae.co.kr/scripts/AKACollect.js +||analysis.sooplive.co.kr^ +||auction.co.kr/ad/log.js +||auction.co.kr/montelena.js +||bizlog-gateway.myrealtrip.com^ +||chosun.com/hitlog/ +||collector1.sooplive.co.kr^ +||count.munhwa.com^ +||cue.search.naver.com/api/*/log/ +||data-logdelivery.wconcept.co.kr^ +||daumcdn.net^*/awsa.js +||dpg.danawa.com/*/rest/*getStampEvent +||gmarket.co.kr/js/common/uuid.js +||hits.zdnet.co.kr^ +||jdsports.co.kr/collect.php +||kyson.kakao.com^ +||l.m.naver.com^ +||log.etoday.co.kr^ +||log.kinolights.com^ +||log.tossinvest.com^ +||log.zdnet.co.kr^ +||naver.com/jackpotlog/ +||naver.com/PostView.nhn?$image +||ntm.pstatic.net/scripts/ntm_$domain=naver.com +||pds.auction.co.kr^ +||rake.11st.co.kr^ +||res.sooplive.co.kr/script/player/service-maintenance.js +||seoul.co.kr/weblog/ +||shinsegae.com/topNPopup.do +||sp.naver.com^ +||ssgdfs.com/kr/common/getPageIcfCd +||ssl.pstatic.net/static.news/*/js/generated/aside.statistics.js$domain=media.naver.com|news.naver.com +||ssl.pstatic.net/static/coreplayer/mclog/media-capable-log.js$domain=naver.com +||ssl.pstatic.net/tveta/libs/glad/*/gfp-display-sentry-logger.js$domain=news.naver.com +||stat.tiara.daum.net^ +||stat.tiara.kakao.com^ +||stat.tiara.tistory.com^ +||stat.wanted.jobs^ +||static.cloud.sbs.co.kr/common/js/*/sbs_log_module.min.js +||tivan.naver.com^ +||track.tiara.daum.net^ +||track.tiara.kakao.com^ +||tracker.cauly.co.kr^ +||traders.co.kr/common/js/makePCookie.js +||uts.auction.co.kr^ +||utsssl.auction.co.kr^ +||wcs.naver.com^ +||weblog.coupang.com^ +||weblog.eseoul.go.kr^ +||weblog2.eseoul.go.kr^ +||ytn.co.kr/_comm/yct.js +||ytn.co.kr/_comm/ylog.php? +! Latvian +||cv.ee/static/stat.php +||delfi.lv/t/p.js +||delphi.lv/t/t.js +||diena.lv/statistics/ +||inbox.lv^*/ga.js +||insbergs.lv/ins_statistics/ +||reklama.lv/services/espy.php +||ss.lv/counter/ +||stats.tunt.lv^ +||tanks.lv/top/stats.php +! Lithuanian +||15min.lt/cached/tgif$~third-party +||g.delfi.lt/g.js +||lrytas.lt/counter/ +! Malaysian +||event-tracking.hellohealthgroup.com^ +||propertyguru.com.my/api/consumer/vast-media/impression? +! Norwegian +||data.nrk.no^ +||kontrollportalen.no/kontroll/javascript/eventlog.js +||nrk.no^*/stats/ +||stats.proff.no^ +||stm.komplett.no^ +||tdep.hema.nl/main.js +||telemetry.nav.no^ +||vg.no/stats/ +! Persian +||abadis.ir/ajaxcmd/setvisit/ +||aparat.com/gogol/ +||namnak.com/act/stats.json +||namnak.com/ga.js +! Polish +|http://x.o2.pl^ +||analytics.gazeta.pl^ +||app.mediaexpert.pl/spark-data/ +||collect.state.centrum24.pl^ +||cs.bankmillennium.pl^ +||dot.wp.pl^$script +||entryhit.wp.pl^ +||euro.com.pl/log-customer-visit +||eventstream.dodopizza.com^ +||ingbank.pl/mojeing/bs/xx.js +||interia.pl^*/hit. +||iplsc.com/inpl.log/ +||iwa.iplsc.com^ +||kropka.onet.pl^ +||mklik.gazeta.pl^ +||mr.allegro. +||nasza-klasa.pl^*/pp_gemius +||p.gazeta.pl^ +||pb.siepomaga.pl^ +||pixel.wp.pl^ +||play.pl/?_hn:type= +||rek.www.wp.pl^ +||savecart.pl/d/ +||sentry.siepomaga.pl^ +||squid.gazeta.pl/bdtrck/ +||ss.woodupp.pl^ +||stats.teledyski.info^ +||wp.pl/?rid= +||wtk.pl/js/WTKStats.js +||yctjw54slxrwwlh.trybawaryjny.pl^ +! Portuguese +||ab.g.globo/event +||audience-mostread.r7.com^ +||click.afiliados.uol.com.br^ +||click.uol.com.br^ +||csplog.kwai-pro.com^ +||data-events.uniplaces.com^ +||dejavu.mercadolivre.com.br^ +||dn.pt/scooby/api/v1/log/ +||dna.uol.com.br^ +||eduplay.rnp.br/collector/ +||estrelaapps.com/collect +||g.bit.pt^ +||g.bitmag.com.br^ +||geoip.ativo.com^ +||globo-ab.globo.com^ +||globo.com/geo? +||hits.letras.mus.br^ +||horizon.globo.com^ +||inlead.digital/js/script.js +||jsuol.com.br/aud/$script +||lancenet.com.br/pw.js +||log-ads.r7.com^ +||logger.rm.uol.com.br^ +||logger.uol.com.br^ +||logsdk.kwai-pro.com^ +||master.cifraclub.com.br^ +||matt.mercadolivre.com.br^ +||metrics.uol.com.br^ +||netshoes.com.br/tracking/ +||olx.com.br^*/lurker. +||poder360.com.br/_tracker +||r7.com/comscore/ +||rtp.pt/common/js/convivaAppTracker.js +||rtp.pt/rtp-sensor/ +||sapo.*/clk?u= +||sapo.pt/Projects/sapoabd/ +||sdk-analytics-web.cloud.itau.com.br^ +||sinonimos.com.br/hits.php +||standvirtual.com^$ping +||stats.uniplaces.com^ +||strapi.clickjogos.com.br^ +||sympla.com.br/api/event-bff/tracking/ +||tags.globo.com^ +||terra.com.br^*/metrics.js +||track.exame.com^ +||track.magazineluiza.com.br^ +||track.olx.com.br^ +||tracker.bt.uol.com.br^ +||tracker.publico.pt^ +||trackid.globoid.globo.com^ +||uai.com.br^*/analytics.js +||udr.uol.com.br^ +||uni7.uniplaces.com^ +||unleash.livepix.gg^ +||uol.com.br/stats? +! Romanian +||agrointel.ro/ga.js +||agrointel.ro/track.js +||analytics.okazii.ro^ +||tracking-api.bookzone.ro^ +||views.b1tv.ro^ +||views.romaniatv.net^ +! Russian +||2ch.hk^*/tracker.js? +||2gis.ru/_/log +||2gis.ru/_/metrics +||3dnews.ru/track +||4pda.ru/stat/ +||a.lifehacker.ru^ +||a.mts.ru^ +||a.pikabu.ru^ +||a.ria.ru^ +||ad.mail.ru/static/sync-loader.js +||ad7.bigmir.net^ +||adme.media/metric-collector +||affilate.hh.ru^ +||agroserver.ru/ct/ +||alloy-web.zvuk.com^ +||analytics.carambatv.ru^ +||api-metric.gosweb.gosuslugi.ru^ +||api.litres.ru/tracker/ +||auto.ru/-/ajax/$~xmlhttprequest +||auto.ru/cookiesync/ +||avito.ru/stat/ +||babyblog.ru/pixel? +||booster.osnova.io^ +||c.sibnet.ru^ +||clck.dzen.ru^ +||consultant.ru/js/counter.js +||cosmo.ru/*/.js?i=*&r= +||counter.drom.ru^ +||counter.sibnet.ru^ +||cpa.hh.ru^ +||credistory.ru/api/v1/LiveMetrics/ +||cs42.pikabu.ru^ +||cs43.pikabu.ru^ +||cu.dzen.ru/?rn= +||cvt1.sibnet.ru^ +||data.glamour.ru^ +||drom.ru/dummy. +||dzen.ru/api/*/stats/ +||dzen.ru/clck/ +||dzen.ru/pingx +||dzeninfra.ru/ping? +||fastpic.org/viewed.php?url=/*.html&ref=$xmlhttprequest +||fb.ru/stat/ +||fontanka.ru/api/metrics/ +||fotostrana.ru/start/ +||ga.finam.ru/metrics +||goya.rutube.ru^$~image +||hh.ru/analytics^ +||hh.ru/stat? +||interfax.ru/cnt/ +||irecommend.ru/collect/ +||jetvis.ru/stat/ +||kommersant.ru/a.asp?p= +||kommersant.uk/banner_stats +||kontur.ru/abtests/ +||kontur.ru/stats/ +||konturnovosti.com/packs/js/opm.js +||lamoda.ru/z? +||link.subscribe.ru^ +||livelib.ru/service/pinger +||livelib.ru/service/spv +||livelib.ru/service/traffic +||livelib.ru/service/visitlist/ +||lmcdn.ru^*/statistics.js +||log.dzen.ru^ +||log.ren.tv^ +||log.rutube.ru^ +||mail.ru/count/ +||metrika.kontur.ru^ +||mirtesen.ru/js/ms.js +||ms.dzen.ru^ +||ms.vk.com^ +||ms.vk.ru^ +||mstat.mos.ru^ +||mts.ru/fe-api/logger +||mtsbank.ru/hustonwehaveaproblem/ +||mytoys.ru/ka_z.jpg? +||ngs.ru/s/ +||odnoklassniki.ru/dk?cmd=videoStatNew +||ok.ru/dk?cmd=videoStatNew +||olimp.bet/analytics/ +||otel-collector.lenta.tech^ +||ozon.ru/tracker/ +||pikabu.ru/ajax/analytics.php +||pikabu.ru/apps/*/analytics.js +||pikabu.ru/stat/ +||pixels.boxberry.ru^ +||rabota.by/analytics? +||rabota.by/stat? +||radar.imgsmail.ru^ +||radiosputnik.ru/min/js/analytics/ +||rambler.ru/metrics/ +||rambler.ru/ts-metrics/ +||rbc.ru/click? +||rbc.ru/count/ +||rbc.ru/redir/stat/ +||rbc.ru/rightarror.gif +||rt.ru/proxy? +||rutube.ru/counters.html? +||rutube.ru/dbg/player_stat? +||ruwiki.ru/w/rest.php/metrics/ +||seedr.ru^*/stats/ +||servernews.ru/track? +||sibnet.ru/counter.php? +||ssp.rambler.ru^ +||st.nic.ru^ +||st.ozone.ru/s3/ozon-tag-manager/ +||start.ru/logger/ +||stat.5-tv.ru^ +||stat.api.2gis.ru^ +||stat.bankiros.ru^ +||stat.pravmir.ru^ +||stat.russianfood.com^ +||stat.stars.ru^ +||stats.mos.ru^ +||superjob.ru/ws/ +||sync.rambler.ru^ +||t.sports.ru^ +||telemetry.dzen.ru^ +||tes-game.ru/stat/ +||tonkosti.ru/go.php? +||top-staging.mail.ru^ +||top.mail.ru/tc?js +||top.mail.ru/tpc.js +||top.mail.ru/tt?js +||traces.youdo.com^ +||trk.mail.ru^$image,script +||umschool.net/_jts/api/s/track +||vedomosti.ru/boom? +||vesti.ru/counter/ +||vk.ru/rtrg +||vkvideo.ru/al_video.php?act=track +||vstat.rtr-vesti.ru^ +||webbff.ru.4game.ru/api/exporter/events +||xapi.ozon.by/perf-metrics-collector/ +||xapi.ozon.ru^$ping +||xray.mail.ru^ +||yandex.ru/log? +||yast.rutube.ru^ +! Slovak +||harvester.cms.markiza.sk^ +! Slovene +||24ur.com/bin/player/?mod=statistics& +||analitika.derp.si^ +||dnevnik.si/tracker/ +||go-usertrack-importer.pub.24ur.si^ +||ninja.data.olxcdn.com/ninja-olxba.js +||tracker.azet.sk^ +! Spanish +||abc.es/pixel/ +||aemet.es/js/stats.js +||analytics.bolavip.com^ +||analytics.emol.com^ +||analytics.redlink.com.ar^ +||audiencies.3cat.cat^ +||audiencies.ccma.cat^ +||bankinter.com/res/img/documento_cargado.gif? +||btravel.com/analytics/ +||btravel.com/falcon/api/hits/ +||caixabank.es/util/pixel.png? +||caliente.mx/integration-scripts/tracking.min.js +||coca-cola.com.br/synerise/tracker.js +||coletor.terra.com^ +||compare.easyviajar.com^ +||counters.libertaddigital.com^ +||cp.as.com/stats +||data-ingest.xtralife.com^ +||data.acierto.com^ +||deporvillage.com/tracking-library/ +||emol.com/bt/ping +||epimg.net/js/*/satelliteLib- +||esfbs.com/site/stat? +||esmas.com/scripts/esmas_stats.js +||estadisticas.lanacion.com.ar^ +||estadonline.publiguias.cl^ +||eternalmangas.com/api/analytics/ +||eternalmangas.com/api/track-visit +||fnvma.milanuncios.com^ +||g.siliconweek.es^ +||gateway.melia.com/tracking +||genial.guru/metric-collector +||geo.emol.cl^ +||gruporeforma.com/clickGrupoReforma.js +||hits.antena3.com^ +||horizon-track.globo.com^ +||logs.openbank.com^ +||matt.mercadolibre. +||mediaserver.emol.cl/rtracker/ +||mega.promodescuentos.com^ +||mercadolibre.com/tracks^ +||mundodesconocido.com/tracker/ +||ocular.promodescuentos.com^ +||pccomponentes.*/api/users/tracking/ +||pixel.europapress.net^ +||px-intl.ucweb.com^ +||rba.es/track.action +||realtime.bbcl.cl^ +||rvv.emol.com^ +||salvalaselva.org/plsbl/js +||sst.cooperativa.cl^ +||statsmp2.emol.com^ +||t-pan.triodos.com^ +||t13.cl/hit/ +||targetone-callback.chedraui.com.mx^ +||taringa.net/ajax/track-visit.php +||terra.com.mx/js/metricspar_ +||terra.com.mx^*/metrics_begin.js +||terra.com.mx^*/metrics_end.js +||terra.com^*/td.asp?bstat +||todomercadoweb.es/pixel +||tracker.atrapalo.com^ +||tracker.jkplayers.com^ +||trrsf.com/*/mod-stalker.min.js +||trrsf.com/metrics/ +||ubeat.tv/api/v1/sda/ +||uecdn.es/js/pbmu.js +||unm.emol.com^ +||wssgmstats.vibbo.com^ +||wsstats.coches.net^ +! Swedish +||aftonbladet.se/cnp-assets/glimr-sdk.js +||ai.idg.se^ +||ax.idg.se^ +||blocket.se/js/trafikfonden.js +||bonmed.se/monitoring? +||falkenbergtorget.se/sc.gif? +||fotbollskanalen.se^$ping +||fusion.bonniertidskrifter.se^ +||gx.idg.se^ +||prisjakt.nu/js.php?p=trafikfonden +||stat.nyheter24.se^ +! Thai +||dek-d.com^*/analytic.js +||play.pp9yy.com/hall/home/heartbeat +||play.pp9yy.com/hall/v1/netstat/ +||scribe.wongnai.com^ +||ta.sanook.com^ +||thairath.co.th/event/ +! Turkish +||a.n11.com^ +||analytics.cosmopolitanmag.com.tr^ +||analytics.mgm.gov.tr^ +||athena-event-provider.n11.com^ +||c.gazetevatan.com^ +||cimri.com/api/pixel +||d.haberler.com^ +||d.sondakika.com^ +||giquhome.com/0/sendEventV2 +||glami.com.tr/tracker/ +||h.n11.com^ +||haberler.com/dinamik/ +||hepsiburada.com/api/track +||hit.cnbce.com^ +||hstats.hepsiburada.com^ +||hstatstest.hepsiburada.com^ +||iys.org.tr/mti-popts.js +||kunduz.com/kunduzlytics.min.js +||magnipeople.com/0/sendEventV2 +||olegcassini.com.tr/0/sendEventV2 +||plausible.elbisebul.com^ +||sahibinden.com/sbbi/ +||stats.birgun.net^ +||tnspro.com.tr/0/sendEventV2 +||tracker.blutv.com^ +||tracker.grupanya.com^ +||womm.com.tr/0/sendEventV2 +! Ukrainian +|http://r.i.ua^ +|https://r.i.ua^ +||analytics.cosmonova.net^ +||at.ua/stat/ +||counter.nv.ua^ +||counter.ukr.net^ +||meta.ua/c.asp? +||obozrevatel.com/pixel.png +||piccy.info/c? +||piccy.org.ua/c? +||prm.ua/en/events/ +||remp.nv.ua^ +||sport.ua/pixel/ +||stats.itc.ua^ +||target.ukr.net^ +! Vietnamese +||analytics.aita.gov.vn^ +||api.baomoi.com^$image +||coccoc.com/log +||log.ttbc-hcm.gov.vn^ +||logsbin.dantri.com.vn^ +||pixel.coccoc.com^ +||tka.tiki.vn/pixel/ +||track-srv.vietnamnet.vn^ +||w-api.baomoi.com^$image +!-----------------------Allowlists to fix broken sites------------------------! +! *** easylist:easyprivacy/easyprivacy_allowlist.txt *** +@@/cgi-bin/counter_module?action=list_models$subdocument,~third-party +@@||1.1.1.1/cdn-cgi/trace$xmlhttprequest,domain=myair.resmed.com|one.one.one.one +@@||1001trackstats.com/api/$xmlhttprequest,domain=songstats.com +@@||1trackapp.com/static/tracking/$script,stylesheet,~third-party +@@||8tm.net/static/img/fbpixel.png$~third-party +@@||a.usafacts.org/api/v4/Metrics$~third-party +@@||ab.blogs.es/abtest.png$domain=trendencias.com|xataka.com +@@||account.adobe.com/newrelic.js$~third-party +@@||accounts.home.id/authui/client/assets/vendors/new-relic.min.js$~third-party +@@||accounts.intuit.com/fe_logger?$~third-party +@@||addthis.com/*-angularjs.min.js$script,domain=ead.senac.br|missingkids.com|missingkids.org +@@||addthis.com/js/*/addthis_widget.js$script,domain=stagecoachbus.com +@@||admin.corrata.com/console/dcconsolews/event-log?$~third-party +@@||admin.memberspace.com/sites/*/analytics/views$~third-party +@@||adobedc.demdex.net/ee/v1/identity/$xmlhttprequest,domain=cibc.com|westjet.com +@@||adobedtm.com/launch-$script,xmlhttprequest +@@||adobedtm.com^*/launch-$script,xmlhttprequest +@@||adobedtm.com^*/s-code-$script +@@||adobedtm.com^*/satellite-$script +@@||aeries.net^*/require/analytics/views/$script,~third-party +@@||ajio.com/static/assets/vendors~static/chunk/common/libraries/fingerprintjs2.$script,~third-party +@@||akamaihd.net/nbad/player/*/appmeasurement.js$domain=watch.nba.com +@@||akamaihd.net/nbad/player/*/visitorapi.js$domain=watch.nba.com +@@||alphaapi.brandify.com/rest/clicktrack$xmlhttprequest,domain=traderjoes.com +@@||amazonaws.com/tracker/p/kompasreco/oval_web_analytics_latest.js$domain=kompas.com +@@||an-sm.naughtycdn.com/js/lti-analytics-*.min.js$domain=members.naughtyamerica.com +@@||analytics-static.ugc.bazaarvoice.com/prod/$script,domain=hisense.co.uk +@@||analytics.amplitude.com^$~third-party +@@||analytics.analytics-egain.com/onetag/$script,domain=boohoo.com|digikey.at|digikey.be|digikey.bg|digikey.ca|digikey.ch|digikey.cn|digikey.co.il|digikey.co.nz|digikey.co.th|digikey.co.uk|digikey.co.za|digikey.com|digikey.com.au|digikey.com.br|digikey.com.mx|digikey.cz|digikey.de|digikey.dk|digikey.ee|digikey.es|digikey.fi|digikey.fr|digikey.gr|digikey.hk|digikey.hu|digikey.ie|digikey.in|digikey.it|digikey.jp|digikey.kr|digikey.lt|digikey.lu|digikey.lv|digikey.my|digikey.nl|digikey.no|digikey.ph|digikey.pl|digikey.pt|digikey.ro|digikey.se|digikey.sg|digikey.si|digikey.sk|digikey.tw +@@||analytics.casper.com/gtag/js$~third-party +@@||analytics.casper.com/gtm.js$~third-party +@@||analytics.edgekey.net/ma_library/html5/html5_malibrary.js$script,domain=mxplayer.in +@@||analytics.google.com/analytics/$~third-party +@@||analytics.itunes.apple.com^$~third-party +@@||api-analytics.magstimconnect.net^$~third-party +@@||api-js.datadome.co/js/$domain=sso.garena.com +@@||api-mg2.db-ip.com^$xmlhttprequest,domain=journal-news.com +@@||api-public.roland.com/geoip$domain=bosstoneexchange.com +@@||api.aliagents.ai/api/v1/activity$~third-party,xmlhttprequest +@@||api.amplitude.com^$xmlhttprequest,domain=insiderintelligence.com +@@||api.app.mobilelocker.eu/api/latest/application-environment/ahoy/events$~third-party +@@||api.ipinfodb.com^$xmlhttprequest,domain=management30.com +@@||api.lab.amplitude.com/v1/vardata?$domain=gaiagps.com +@@||api.perfops.net^$script,xmlhttprequest,domain=cdnperf.com|dnsperf.com +@@||api.sprig.com/sdk/1/environments/$xmlhttprequest,domain=developer.salesforce.com +@@||api.touchnote.io^$xmlhttprequest,domain=app.touchnote.com +@@||api.twitter.com/1.1/onboarding/referrer.json$~third-party +@@||api.useinsider.com/api/web/$xmlhttprequest +@@||api.vk.com/method/statEvents.$~third-party +@@||api.zeeg.me/api/analytics/events/$~third-party +@@||asb.co.nz.ssl.d2.sc.omtrdc.net^$xmlhttprequest,domain=asb.co.nz +@@||assets.fyers.in/Lib/analytics/Analytics.js$~third-party +@@||assets.msn.com/staticsb/statics/latest/adboxes/$script,~third-party +@@||assets.yasno.live/packs/assets/analytics-events-$script,~third-party +@@||att.com/scripts/adobe/prod/$script,~third-party +@@||att.com/scripts/adobe/virtual/detm-container-hdr.js$~third-party +@@||att.com/ui/services_co_myatt_common/$script,~third-party +@@||att.tv^*/VisitorAPI.js$script,~third-party +@@||autocomplete.clearbit.com^$xmlhttprequest +@@||azureedge.net/prod/smi/loader-config.json$domain=pressdemocrat.com +@@||bam.nr-data.net^$script,domain=kapwing.com +@@||bgp.he.net/images/flags/*.gif?$image,~third-party +@@||bjjhq.com/HttpCombiner.ashx?$script,~third-party +@@||blackbaud.net/proxy/api/track/ +@@||blackcircles.ca^$script,~third-party +@@||blueconic.net/bostonglobemedia.js$domain=bostonglobe.com +@@||board-game.co.uk/cdn-cgi/zaraz/s.js$script,~third-party +@@||bookmate.com^*/impressions?$~third-party,xmlhttprequest +@@||bostonglobe.com/login/js/lib/AppMeasurement.js$~third-party +@@||browser-intake-datadoghq.com^$xmlhttprequest,domain=grubhub.com|mightyape.co.nz +@@||browser.covatic.io/sdk/v1/bauer.js$script,domain=hellorayo.co.uk +@@||c.lytics.io/api/tag/$script,domain=time.com +@@||c.paypal.com/da/r/fb.js$script +@@||c.webtrends-optimize.com/acs/$image,script,domain=tvlicensing.co.uk +@@||camel1.tv/lib/sensorsdata.full.min.js$~third-party +@@||camel3.live/lib/sensorsdata.full.min.js$~third-party +@@||canadacomputers.com/templates/ccnew/assets/js/jquery.browser-fingerprint-$~third-party +@@||cdc.gov/jscript/metrics/adobe/launch/$script,~third-party +@@||cdn-net.com/cc.js +@@||cdn.deviceinf.com^$domain=etail.market +@@||cdn.evgnet.com/beacon/homedepotofcainc/engage/scripts/evergage.min.js$script,domain=homedepot.ca +@@||cdn.facil-iti.app/tags/faciliti-tag.min.js$script,domain=apec.fr|kyoto.travel +@@||cdn.getblueshift.com/blueshift.js$script,domain=rentcafe.com +@@||cdn.heapanalytics.com^$script,domain=libertymutual.com +@@||cdn.intellimize.co/snippet/$script,domain=talkspace.com +@@||cdn.jsdelivr.net^*/fp.min.js$script,domain=cuevana2.io +@@||cdn.matomo.cloud/tekuchi.matomo.cloud/matomo.js$domain=berkeleygroup.digital +@@||cdn.mxpnl.com/libs/$script,domain=get.pumpkin.care +@@||cdn.perfops.net/rom3/rom3.min.js$domain=cdnperf.com +@@||cdn.petametrics.com/*-nbc.js$script,domain=bringmethenews.com +@@||cdn.segment.com/analytics-next/ +@@||cdn.segment.com/analytics.js/$script,domain=abstractapi.com|accounts-bc.com|app.cryptotrader.tax|app.joinhandshake.com|driversed.com|fender.com|finerdesk.com|foxbusiness.com|foxnews.com|givingassistant.org|inxeption.io|reuters.com|squaretrade.com|swatches.interiordefine.com +@@||cdn.segment.com/next-integrations/integrations/ +@@||cdn.segment.com/v1/projects/ +@@||cdn.sophi.io/assets/$script,domain=nationalpost.com +@@||cdn.usefathom.com/script.js$domain=sharpen-free-design-generator.netlify.app +@@||cdn.viglink.com/api/vglnk.js$domain=9to5mac.com|electrek.co +@@||certona.net^*/scripts/resonance.js$script,domain=canadiantire.ca|finishline.com|summitracing.com|tumi.com +@@||channel.images.production.web.w4a.tv^*/ard.png?$domain=yallo.tv +@@||chart-embed.service.newrelic.com^$subdocument,xmlhttprequest +@@||chasecdn.com/web/*/eventtracker.js$domain=chase.com +@@||chat.d-id.com/assets/mixpanel.$~third-party +@@||check.ddos-guard.net/check.js$script +@@||clcouncil.org/wp-content/plugins/counter-block/assets/js/counter.js?$script,~third-party +@@||cleverpush.com/channel/$script,domain=bsdex.de|heise.de +@@||cleverpush.com/sdk/$script,domain=heise.de +@@||clouderrorreporting.googleapis.com^$domain=waze.com +@@||cloudflare.com/ajax/libs/fingerprintjs2/$domain=extracttable.com|fckrasnodar.ru|login.kroton.com.br +@@||cloudflare.com/cdn-cgi/trace$domain=d1milano.com|gingerfulhair.com|infyspringboard.onwingspan.com|injora.com|kiichin.com|myair.resmed.com|twgtea.com +@@||cloudflareinsights.com/beacon.min.js$script,domain=app.uniswap.org +@@||cloudfront.net/atrk.js$domain=luxuryrealestate.com +@@||cloudimg.io/*/analytics.$script,domain=michelinman.com +@@||cloudinary.com/perimeterx/$image,domain=perimeterx.com +@@||cnet.com/a/video-player/uvpjs-rv/$script,~third-party +@@||cohesionapps.com/cohesion/$domain=bankrate.com|frontier.com +@@||cohesionapps.com/preamp/$subdocument,xmlhttprequest,domain=frontier.com +@@||collections.archives.govt.nz/combo/*/gtag.js$script,~third-party +@@||collusion.com/static/newrelic.js$script,~third-party +@@||community.brave.app/t/$xmlhttprequest +@@||connatix.com/min/connatix.renderer.infeed.min.js$domain=accuweather.com|collider.com|gamepress.gg|salon.com +@@||console.statsig.com/_next/$~third-party +@@||content.canadiantire.ca/fp/tags.js$domain=customerauth.triangle.com +@@||coremetrics.com*/eluminate.js +@@||cos.accelerate.myqcloud.com/assets/sensorsdata.min.js$domain=ruijienetworks.com +@@||coxbusiness.com/R136/assets/newrelic/newrelic.js$~third-party +@@||cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/vendor/adobe/app-measurement.html$xmlhttprequest +@@||cpt-static.gannettdigital.com/universal-web-client/master/latest/elements/vendor/adobe/visitor-api.html$xmlhttprequest +@@||cqcounter.com^$domain=cqcounter.com +@@||crimemapping.com/cdn/*/analytics/eventtracking.js$~third-party +@@||criteo.com/delivery/$domain=canadiantire.ca +@@||cults3d.com/packs/js/quantcast-$~third-party +@@||curos.ca/res/*/resources/scripts/lib/fingerprint.js$~third-party +@@||cvs.com/shop-assets/js/VisitorAPI.js$~third-party +@@||d2ma0sm7bfpafd.cloudfront.net/wcsstore/waitrosedirectstorefrontassetstore/custom/js/analyticseventtracking/$script,domain=waitrosecellar.com +@@||d2r1yp2w7bby2u.cloudfront.net/js/clevertap.min.js$domain=tatacliq.com +@@||d2wy8f7a9ursnm.cloudfront.net/v8/bugsnag.min.js$script,domain=forecastapp.com +@@||d347cldnsmtg5x.cloudfront.net/util/1x1.gif$image,domain=aplaceforeverything.co.uk +@@||d41.co/tags/ff-2.min.js$domain=ads.spotify.com +@@||data.adxcel-ec2.com^$image,domain=laguardia.edu +@@||datadoghq-browser-agent.com^$script,domain=bbcgoodfood.com|cdn.spatialbuzz.com|dashboard.getdriven.app|espn.com|goindigo.in|hungryroot.com|usa.experian.com +@@||datadome.monster.com.first-party-js.datadome.co^$script,domain=monster.com +@@||dc.services.visualstudio.com/v2/track$xmlhttprequest,domain=aiskillsnavigator.microsoft.com +@@||dd.auspost.com.au/tags.js$script,~third-party +@@||delta.com/dlhome/ruxitagentjs$~third-party +@@||dishtv.in/scripts/adobeAnalytics.js$~third-party +@@||docs.google.com/*/viewdata$~third-party +@@||driverfix.com^*/index_src.php?tracking=$~third-party +@@||duckduckgo.com/local.js$~third-party +@@||dw.com.com/js/dw.js$domain=cbsnews.com|tv.com +@@||dz9qn8fh4jznm.cloudfront.net/script.js$script,domain=bostonglobe.com +@@||easternbank.com/sites/easternbank/files/google_tag/eastern_bank/google_tag.script.js$script,~third-party +@@||easy-firmware.com/templates/default/html/*/assets/js/fingerprint2.min.js$script,~third-party +@@||ebanking.meezanbank.com/AmbitRetailFrontEnd/js/fingerprint2.min.js$~third-party +@@||ec.europa.eu/eurostat/databrowser/assets/analytics/piwik.js$script,~third-party +@@||ensighten.com^*/Bootstrap.js$domain=americanexpress.com|ba.com|bestbuy.com|britishairways.com|capitalone.com|caranddriver.com|cart.autodesk.com|citi.com|citigold.com.sg|citizensbank.com|dell.com|fidelity.com|france24.com|hp.com|norton.com|rfi.fr|sbs.com.au|sfgate.com|staples.com|target.com|verizonwireless.com|williamhill.com|womenshealthmag.com|zales.com +@@||ensighten.com^*/code/$script +@@||ensighten.com^*/scode/$script,domain=norton.com +@@||ensighten.com^*/serverComponent.php?$script +@@||epstore.com/file_includes.php?path=*/pageview.js$script,~third-party +@@||etsy.com/api/v3/ajax/bespoke/*log_performance_metrics=$~third-party +@@||events.raceresult.com^$~third-party,xmlhttprequest +@@||evergage.com/api2/event/$domain=mbusa.com +@@||evil-inc.com/comic/advertising-age/$~third-party,xmlhttprequest +@@||extreme-ip-lookup.com^$script,domain=bulkbarn.ca +@@||ezodn.com/cmp/gvl.json$xmlhttprequest +@@||fast.fonts.net/jsapi/core/mt.js$script,domain=abeautifuldominion.com|bkmedical.com|eclecticbars.co.uk|gables.com|itsolutions-inc.com|kinsfarmmarket.com|senate.gov|toyotagazooracing.com +@@||fathom.video/embed/$subdocument +@@||fdi.fiduciarydecisions.com/a/lib/gtag/gtag.js$script,~third-party +@@||fdi.fiduciarydecisions.com/v/app/components/*/Analytics.js$script,~third-party +@@||fichub.com/plugins/adobe/lib/AppMeasurement.js$domain=natgeotv.com +@@||fichub.com/plugins/adobe/lib/VisitorAPI.js$domain=natgeotv.com +@@||filme.imyfone.com/assets/js/gatrack.js$~third-party +@@||firebase.google.com/docs/analytics/$~third-party +@@||forum.djicdn.com/static/js/sensorsdata.min.js$script,domain=forum.dji.com +@@||friendbuy.com^$domain=butcherbox.com +@@||gamezop.com/prebid.js$script,~third-party +@@||ganyancanavari.com/js/fingerprint2.min.js$~third-party +@@||geoip-db.com/jsonp/$script,third-party +@@||getflywheel.com/addons/google-analytics/$~third-party +@@||getpublica.com/playlist.m3u8$xmlhttprequest +@@||github.com/gorhill/uBlock/*/src/web_accessible_resources/fingerprint2.js$~third-party +@@||glancecdn.net/cobrowse/$domain=payroll.toasttab.com +@@||globalatlanticannuity.com/assets/embed/gtm.js$script,~third-party +@@||glookup.info/api/json/$domain=grabify.link +@@||gnar.grammarly.com/events$xmlhttprequest,domain=account.grammarly.com +@@||go-mpulse.net^$domain=costcobusinessdelivery.com +@@||groupbycloud.com/gb-tracker-client-3.min.js +@@||gstatic.com^*/firebase-performance-standalone.js$script,domain=flightradar24.com +@@||gsuite.tools/js/gtag.js$script,~third-party +@@||gtm.idealo.*/gtm.js?$domain=idealo.at|idealo.co.uk|idealo.de|idealo.es|idealo.fr|idealo.it +@@||guce.advertising.com/collectIdentifiers$~third-party +@@||healthgateway.gov.bc.ca/snowplow.js$~third-party +@@||hello.myfonts.net/count/$stylesheet,domain=cfr.org|condor.com|corsair.com|furniturevillage.co.uk|luggagehero.com +@@||hobbyking.com^*/gtm.js$script,~third-party +@@||hotstarext.com/web-messages/core/error/v52.json$xmlhttprequest,domain=hotstar.com +@@||identity.mparticle.com^$xmlhttprequest +@@||ignitetv.rogers.com/js/api/fingerprint.js$script,~third-party +@@||ignitetv.shaw.ca/js/api/fingerprint.js$~third-party +@@||ikea.com^*/analyticsEvent.$script,~third-party +@@||img.logo.dev^$image,third-party +@@||imgur.com/min/px.js$~third-party +@@||indeed.com/rpc/log/myjobs/$~third-party +@@||intuitcdn.net/libs/*/track-star.min.js$script,domain=turbotax.intuit.com +@@||ipv4.seeip.org/jsonip$domain=empire-streaming.app +@@||join.southerncross.co.nz/quote/_assets/js/sx/app/helpers/gtm.js +@@||js-agent.newrelic.com^$domain=alliantcreditunion.com|giftcards.com|kapwing.com|live.griiip.com +@@||js-cdn.dynatrace.com/jstag/$domain=fido.ca +@@||js.datadome.co/tags.js$script,domain=monster.ca|rvtrader.com|serasa.com.br|sso.garena.com|thefork.at|thefork.be|thefork.ch|thefork.co.uk|thefork.com|thefork.de|thefork.es|thefork.fr|thefork.it|thefork.nl|thefork.pt|thefork.se|ugg.com +@@||js.sentry-cdn.com^$script,domain=app.homebinder.com|bolt.new|book.dmm.com|etsy.com|interacty.me|jobs.ch|pizzahut.com.au +@@||jsrdn.com/s/$script,domain=distro.tv +@@||kameleoon.eu/kameleoon.js$script,domain=buttercloth.com|jules.com +@@||kilimall.co.tz/sensorsdata.min.js$~third-party +@@||kilimall.com*/js/sensorsdata.min.js$script,domain=kilimall.co.ke +@@||kohls.com/ecustservice/js/sitecatalyst.js$script,~third-party +@@||lab.eu.amplitude.com^$xmlhttprequest,domain=bluelightcard.co.uk +@@||lacoste.com^*/click-analytics.js$~third-party +@@||lamycosphere.com/cdn/shop/*/assets/pixel.gif$image,~third-party +@@||languagecloud.sdl.com/node_modules/fingerprintjs2/dist/fingerprint2.min.js$~third-party +@@||leadpages.io/analytics/v1/observations/capture?$xmlhttprequest +@@||leanplum.com^$domain=arkadium.com +@@||legendstracking.com/js/legends-tracking.js$~third-party +@@||lenovo.com/_ui/desktop/common/js/AdobeAnalyticsEvent.js$script,~third-party +@@||lenovo.com/fea/js/adobeAnalytics/$script,~third-party,xmlhttprequest +@@||letmegpt.com/js/gpt.js$~third-party +@@||level.travel/tracker/tracker.js$script,~third-party +@@||lightning.bleacherreport.com/launch/*-source.min.js$~third-party +@@||lightning.bleacherreport.com^*/launch-$~third-party +@@||live.rezync.com^$script,domain=batteriesplus.com +@@||liveapi.cleverpush.com/websocket$websocket,domain=heise.de +@@||loader-cdn.azureedge.net/prod/smi/loader.min.js$domain=pressdemocrat.com +@@||log.go.com/log$xmlhttprequest,domain=disneyvacationclub.disney.go.com +@@||logging.apache.org^$~third-party +@@||lr-ingest.io/LogRocket.min.js$domain=smartcare.com +@@||m1tm.insideevs.com/gtm.js$~third-party +@@||magento-recs-sdk.adobe.net/v2/index.js$script,domain=superbrightleds.com +@@||main.govpilot.com/jet/js/newrelic.js$~third-party +@@||mapquestapi.com/logger/$domain=hertz.com +@@||maps.arcgis.com/apps/*/AppMeasurement.js$~third-party +@@||maptiles.ping-admin.ru^$image,domain=ping-admin.com +@@||martech.condenastdigital.com/lib/martech.js$script,domain=wired.com +@@||matomo.miraheze.org/matomo.js$script,~third-party +@@||maxmind.com/geoip/$xmlhttprequest,domain=ibanez.com +@@||maxmind.com^*/geoip.js$domain=aljazeera.com|ballerstatus.com|bikemap.net|carltonjordan.com|cashu.com|dr.dk|everydaysource.com|fab.com|girlgames4u.com|ip-address.cc|qatarairways.com|sat-direction.com|sotctours.com|stoli.com|vibe.com +@@||maxmind.com^*/geoip2.js$domain=bandai-hobby.net|boostedboards.com|donorschoose.org|driftinnovation.com|fallout4.com|ibanez.com|instamed.com|metronews.ca|mtv.com.lb|runningheroes.com|tama.com|teslamotors.com +@@||mbe.modelica.university/_next/static/*/pages/pageview.js$~third-party +@@||mclo.gs/js/logview.js$~third-party +@@||metrics.bangbros.com/tk.js$~third-party +@@||mixpanel.com/public/$subdocument,domain=iframely.net +@@||mlbstatic.com/mlb.com/adobe-analytics/$script,domain=mlb.com +@@||mmstat.com/eg.js$script,domain=aliexpress.com +@@||mopar.com/moparsvc/mopar-analytics-state$~third-party +@@||mozu.com^*/monetate.js$script,domain=acehardware.com +@@||mparticle.com/js/v2/*/mparticle.js$script,domain=bk.com|bravotv.com|cnbc.com|gymshark.com|motortrendondemand.com|nbcsports.com +@@||msecnd.net/scripts/jsll-$script,domain=forms.microsoft.com|office.com|sharepoint.com|teams.microsoft.com +@@||munchkin.marketo.net/munchkin.js$domain=st.com|telus.com +@@||mxpnl.com/libs/mixpanel-*.min.js$domain=change.org|frigidaire.com +@@||mxpnl.com^$domain=mixpanel.com +@@||my.goabode.com/assets/js/fp2.min.js$script,~third-party +@@||myaccount.chicagotribune.com/assets/scripts/tag-manager/googleTag.js$~third-party +@@||nakedwines.co.uk/search/hitcount?$~third-party +@@||nationwide.com/myaccount/includes/images/x.gif$~third-party +@@||natureetdecouvertes.com^*/pixel.png$~third-party +@@||netcoresmartech.com/smartechclient.js$domain=hdfcfund.com +@@||new.abb.com/ruxitagentjs_$~third-party +@@||newrelic.com/nr-*.min.js$domain=surveymonkey.co.uk|surveymonkey.com|surveymonkey.de +@@||next.co.uk/static-content/gtm-sdk/gtm.js$~third-party +@@||nike.com/assets/measure/data-capture/analytics-client.min.js$script,~third-party +@@||nintendolife.com/themes/base/javascript/fingerprint.js$~third-party +@@||nocookie.net^*/tracking-opt-in.min.js$script,domain=fandom.com +@@||noodid.ee/chordQuiz/$~third-party +@@||noxgroup.com/noxinfluencer/sensor_sdk/$script,domain=noxinfluencer.com +@@||nsfw.xxx/vendor/fingerprint/fingerprint2.min.js$script,~third-party +@@||nypost.com/blaize/datalayer$~third-party +@@||nytimes.com^*/EventTracker.js$~third-party +@@||odb.outbrain.com/utils/get?url=$script,domain=cnn.com +@@||ondemand.sas.com^$subdocument +@@||onenote.com^*/aria-web-telemetry +@@||online-metrix.net/fp/tags.js$domain=donorschoose.org +@@||onlinebanking.usbank.com/TUX/public/libs/adobe/appmeasurement.js$script,~third-party +@@||open.video/ezais/analytics?$~third-party +@@||openfpcdn.io/botd/v1$script,domain=collinsdictionary.com +@@||opex.xplan.iress.com.au/js/xiled/util/pageview.js$~third-party +@@||optimove.net^$domain=app.touchnote.com +@@||ots.webtrends-optimize.com/$xmlhttprequest,domain=tvlicensing.co.uk +@@||outbrain.com/outbrain.js$domain=cnn.com +@@||p.typekit.net/p.css$stylesheet,domain=athleticpropulsionlabs.com|browserstack.com|bungie.net|business.untappd.com|getty.edu|petsafe.com|robertsspaceindustries.com +@@||palmettostatearmory.com/static/$script,~third-party +@@||pals.pa.gov/vendor/analytics/$~third-party +@@||parcel.app/webtrack.php?$~third-party +@@||parsely.com/keys/$script,domain=wmmr.com|wrif.com +@@||paypal.com/xoplatform/logger/api/logger$domain=play.leagueofkingdoms.com +@@||paypalobjects.com/*/pageView.js$script,domain=paypal.com +@@||paypalobjects.com/web/*/gAnalytics.js$script,domain=paypal.com +@@||pcoptimizedsettings.com/wp-content/plugins/koko-analytics/$~third-party +@@||pcoptimizedsettings.com/wp-content/uploads/breeze/google/gtag.js$~third-party +@@||petdrugsonline.co.uk/scripts/gtm.js$~third-party +@@||plans.humana.com/assets/analytics-events-$script,~third-party +@@||plantyn.com/optiext/optiextension.dll$~third-party +@@||platform.bombas.com/external/gtm.js$script,~third-party +@@||plausible.io/js/plausible.js$script,domain=sammobile.com +@@||plex.tv/api/v2/geoip$xmlhttprequest +@@||plugin.intuitcdn.net/vep-collab-smlk-ui/assets/vendor/glance/cobrowse/ +@@||plugins.matomo.org^$image,~third-party +@@||portal.cityspark.com/PortalScripts/DailyCamera$domain=dailycamera.com +@@||portal.cityspark.com/v1/event$domain=dailycamera.com +@@||postex.com/api/ping?$~third-party +@@||powerquality.eaton.com/include/js/elqScr.js$~third-party +@@||prod-backend.jls-sto1.elastx.net/graphql$domain=webcamcollections.com +@@||ps.w.org/wp-slimstat/$domain=wordpress.org +@@||pub.pixels.ai/prebid_standard.js$script,domain=standard.co.uk +@@||public.fbot.me/events/$domain=casper.com +@@||public.profitwell.com^$domain=adblockplus.org|getadblock.com +@@||px-cdn.net/api/v2/collector/ocaptcha$xmlhttprequest +@@||qm.redbullracing.com/gtm.js$~third-party +@@||qm.wrc.com/gtm.js$~third-party +@@||quantcast.com/wp-content/themes/quantcast/$domain=quantcast.com +@@||reactandshare.com^$domain=maanmittauslaitos.fi +@@||realclearpolitics.com/esm/assets/js/admiral.js$~third-party +@@||realclearpolitics.com/esm/assets/js/analytics/chartbeat.js$~third-party +@@||realclearpolitics.com/esm/assets/js/analytics/gaAnalytics.js$~third-party +@@||reallyfreegeoip.org/json/$domain=thekitchensafe.com +@@||redbull.com/gtm.js$~third-party +@@||res-x.com^*/Resonance.aspx? +@@||researchintel.com^*/feedback.asp$xmlhttprequest,domain=intel.com +@@||rest.edit.site/geoip-service/geoip$domain=systemshouse.com +@@||retailmenot.com/__wsm.gif$ping,~third-party,xmlhttprequest +@@||riverlink.etcchosted.com/widgets/com/mendix/widget/web/googletag/GoogleTag.js$~third-party +@@||rollbar.com^*/rollbar.min.js$domain=rollingstone.com|variety.com|wwd.com +@@||s-microsoft.com/mscc/statics/$script,domain=microsoft.com +@@||salesforce.com/beacon/$script,domain=safeway.ca +@@||sc.youmaker.com/site/article/count? +@@||scorecardresearch.com^*/streamingtag_plugin_jwplayer.js +@@||sdk.mrf.io/statics/marfeel-sdk.js$script,domain=autoplus.fr|computerhoy.20minutos.es|mundodeportivo.com +@@||sealserver.trustwave.com/seal.js$domain=zoom.us +@@||secure.logmein.com/scripts/Tracking/$script,domain=logme.in|logmein.com +@@||securegames.iwin.com/data/gtm.json$~third-party,xmlhttprequest +@@||seg-cdn.pumpkin.care/analytics.js/$~third-party +@@||seg-cdn.pumpkin.care/next-integrations/integrations/mixpanel/$domain=get.pumpkin.care +@@||seguridad.compensar.com/lib/js/fingerprint2.js$~third-party +@@||sephora-track.inside-graph.com/gtm/$domain=sephora.com +@@||sephora-track.inside-graph.com/ig.js$domain=sephora.com +@@||sephora.com/js/ufe/isomorphic/thirdparty/fp.min.js$script,~third-party +@@||sephora.com/js/ufe/isomorphic/thirdparty/VisitorAPI.js$~third-party +@@||service.apport.net/apport-spa-common/src/tracking/tracking.js$~third-party +@@||services.chipotle.com/__imp_apg__/$~third-party +@@||shared.learnosity.com/vendor/rollbar.min.js$domain=cdn.i-ready.com +@@||sharethis.com/button/buttons.js$domain=bristan.com +@@||shoonya.finvasia.com/fingerprint2.min.js$script,~third-party +@@||shop.bmw.com.au/assets/analytics-setup.js$~third-party +@@||shopify.com/shopifycloud/boomerang/shopify-boomerang-$domain=rydewear.com +@@||signalshares.com/webtrends.min.js$script,~third-party +@@||simcotools.app/assets/adsense-*.js$~third-party +@@||simpleanalyticsexternal.com^$script,domain=inleo.io +@@||smushcdn.com^*/1.gif$domain=retrounlim.com +@@||snowplow.swm.digital^$domain=7plus.com.au +@@||sohotheatre.com^*/PageView.js$~third-party +@@||solr.sas.com/query/$xmlhttprequest,domain=jmp.com +@@||sophos.com^*/tracking/gainjectmin.js$script,domain=community.sophos.com +@@||soundcore.com/metrics/gtd?id=$script,~third-party +@@||spark.co.nz/content/*/utag.sync.js$domain=skinny.co.nz +@@||src.fedoraproject.org/static/issues_stats.js?$~third-party +@@||src.litix.io/shakaplayer/*/shakaplayer-mux.js +@@||src.litix.io/videojs/*/videojs-mux.js +@@||srv024.service.canada.ca/assets/adobe-analytics-route-helpers-$script,~third-party +@@||ssl-images-amazon.com^*/satelliteLib-$script,domain=audible.com +@@||starlink.com/sst/gtag/js$script,~third-party +@@||startribune.com/analytics-assets/sitecatalyst/appmeasurement.js$~third-party +@@||statcounter.com/css/packed/statcounter-$stylesheet,~third-party +@@||statcounter.com/js/packed/statcounter-$script,~third-party +@@||static.amazon.jobs/assets/analytics-$script,domain=amazon.jobs +@@||static.cloud.coveo.com/coveo.analytics.js/$domain=cabelas.com +@@||static.foxnews.com^*/VisitorAPI.js$domain=foxbusiness.com|foxnews.com +@@||static.knowledgehub.com/global/images/ping.gif?$~third-party +@@||static.myfinance.com/widget/$domain=savingspro.org +@@||static.pinpoll.com^$subdocument,domain=iframely.net +@@||stats.britishbaseball.org.uk^ +@@||stats.gleague.nba.com/templates/angular/tables/events/shots.html$~third-party +@@||stats.pusher.com/timeline/$script,domain=bringatrailer.com +@@||stats.sports.bellmedia.ca^$domain=rds.ca|tsn.ca +@@||stats.statbroadcast.com/interface/webservice/event/$~third-party +@@||stats.wnba.com/templates/angular/tables/events/$~third-party +@@||stats.wp.com/w.js$script,domain=wordpress.com +@@||steamstatic.com/steam/apps/$image,domain=store.steampowered.com +@@||store.storeimages.cdn-apple.com^*/appmeasurement.js$domain=apple.com +@@||taboola.com/libtrc/*/loader.js$domain=dailymail.co.uk|foxsports.com +@@||tagcommander.com^*/tc_$script +@@||tags.news.com.au/prod/heartbeat/$script +@@||taplytics.com^$domain=royalbank.com +@@||targetimg1.com/webui/$script,domain=target.com +@@||teams.microsoft.com/dialin-cdn-root/*/aria-web-telemetry-$~third-party +@@||telemetry.stytch.com/submit$domain=play.pixels.xyz +@@||teleportpod.com/assets/EventTracking-$script,~third-party +@@||tennispro.eu/min/?$script,~third-party +@@||thaiairways.com/static/common/js/wt_js/webtrends.min.js$~third-party +@@||thomas.co/sites/default/files/google_tag/primary/google_tag.script.js$script,~third-party +@@||tinypass.com^*/logAutoMicroConversion?$domain=chicago.suntimes.com +@@||tm.regions.com/tags.js$~third-party +@@||tms.oracle.com/main/prod/utag.sync.js$~third-party +@@||tntdrama.com/modules/custom/ten_video/js/analytics_v2.js$~third-party +@@||tools.pinpoll.com^$script,subdocument,domain=iframely.net +@@||toyota.com/recall/static/js/custom/facebookPixel.js$~third-party +@@||traceparts.com/lib/piano-analytics/piano-analytics.js$script,~third-party +@@||track.shipstation.com/collections/trackingEvents.js$~third-party +@@||trackjs.com/agent/$script,domain=delta.com +@@||trackonomics.net/client/$script,domain=popsugar.com +@@||travel-assets.com/platform-analytics-prime/$domain=chase.com +@@||try.abtasty.com^$script,domain=tickpick.com +@@||tt.personio.com/9sgqlkuag.js$script,domain=personio.com +@@||tunein.com/api/v1/comscore$~third-party +@@||unpkg.com/@adobe/magento-storefront-event-collector@$domain=osprey.com +@@||user.edenredplus.com/assets/packages/mixpanel_flutter/assets/mixpanel.js$script,~third-party +@@||userapi.com^*.gif?extra=$image,domain=vk.com +@@||usplastic.com/js/hawk.js +@@||uwufufu.com/_nuxt/mixpanel.$~third-party +@@||vast.com/vimpressions.js$domain=everycarlisted.com +@@||vidible.tv^*/ComScore.StreamSense.js +@@||vidible.tv^*/ComScore.Viewability.js +@@||vivocha.com^*/vivocha.js?$script,domain=kartell.com +@@||we-stats.com/scripts/$script,domain=discover.com +@@||web-sdk.urbanairship.com/notify/$script,domain=etoro.com +@@||webtrends.com/js/webtrends.min.js$script,domain=tvlicensing.co.uk +@@||weightwatchers.com/optimizelyjs/$script,~third-party +@@||where2getit.com/traderjoes/rest/clicktrack?$domain=traderjoes.com +@@||widget.fitanalytics.com/widget.js$script,domain=pullandbear.com +@@||widget.trustpilot.com/bootstrap/$script,domain=amartfurniture.com.au|exodus.co.uk|imyfone.com +@@||wpfc.ml/b.gif$image,domain=holybooks.com +@@||wsj.net/iweb/static_html_files/cxense-candy.js$script,domain=marketwatch.com +@@||www.ups.com/WebTracking/processInputRequest +@@||wwwcache.wral.com/presentation/v3/scripts/providers/analytics/ga.js$~third-party +@@||xeroshoes.co.uk/affiliate/scripts/trackjs.js$~third-party +@@||xfinity.com/stream/js/api/fingerprint.js$~third-party +@@||xiaosaas.com/org/RecordScreen/rrweb.min.js$~third-party +@@||xp.audience.io/sdk.js$script,domain=foxla.com +@@||yottaa.net^$script,domain=containerstore.com|hannaandersson.com +@@||youvisit.com/SmartScript/$script,domain=uaf.edu +@@||youvisit.com/tour/$script,subdocument,domain=uaf.edu +@@||zillow.com/rental-manager/proxy/rental-manager-api/api/v1/users/freemium/analytics/pageViews$~third-party +@@||zoominfo.com/c/amplitude-js$script,~third-party +!! monitor.azure.com +@@||browser.events.data.microsoft.com/onecollector/$script,xmlhttprequest,domain=microsoft.com +!! https://old.reddit.com/r/uBlockOrigin/comments/1czbcvg/foundit_is_blocking_searches_until_ublock_origin/ +@@||media.foundit.*/trex/public/theme_3/dist/js/userTracking.js$script,~third-party +!! amplitude.com/libs +@@||amplitude.com/libs/$script,domain=b2c.voegol.com.br|elconfidencial.com|kink.com|pdfexpert.com|xe.com +!! flag.lab.amplitude.com / api.lab.amplitude.com +@@||api.lab.amplitude.com^$domain=watch.outsideonline.com +@@||flag.lab.amplitude.com^$domain=watch.outsideonline.com +!! googletagmanager.com/gtm.js +@@||googletagmanager.com/gtm.js$domain=3djuegosguias.com|3djuegospc.com|9to5mac.com|acehardware.com|acornonline.com|adorama.com|ads.spotify.com|aena.es|aeromexico.com|afisha.timepad.ru|airhaifa.com|aliexpress.com|almamedia.fi|ampparit.com|anacondastores.com|animeanime.jp|anond.hatelabo.jp|app.joinhandshake.com|applesfera.com|aruba.it|arvopaperi.fi|atgtickets.com|atptour.com|aussiebum.com|auth.max.com|autobild.de|autoplus.fr|autorevue.cz|avis.com|axeptio.eu|b2c.voegol.com.br|backcountry.com|baywa-re.com|bbcgoodfood.com|benesse-style-care.co.jp|besplatka.ua|beterbed.nl|betten.de|biletix.com|binglee.com.au|bombas.com|book.impress.co.jp|bsa-whitelabel.com|bunte.de|businessinsider.jp|butcherblockco.com|bybit.com|bybitglobal.com|caminteresse.fr|campograndenews.com.br|canadiantire.ca|capital.it|carcareplus.jp|carhartt-wip.com|casa.it|cashier.dmm.co.jp|cashier.dmm.com|ccleaner.com|cdek.ru|cdon.fi|checkout.ao.com|chipotle.com|chronopost.fr|cinemacafe.net|cityheaven.net|ckdtrialfinder.natera.com|clickup.com|cmoa.jp|como.fi|complex.com|compradiccion.com|computerbild.de|coolermaster.com|cora.fr|cosmo-hairshop.de|costco.co.jp|costco.co.uk|courses.monoprix.fr|cram.com|crello.com|currys.co.uk|cyclestyle.net|cyclingnews.com|cypress.io|dazeddigital.com|de.hgtv.com|deejay.it|dengekionline.com|dholic.co.jp|digitalocean.com|directoalpaladar.com|directv.com|dlsite.com|dmax.de|dmv.ca.gov|doodle.com|dropps.com|e15.cz|easternbank.com|eat.co.nz|ecmweb.com|ecovacs.com|edwardjones.com|eki-net.com|elcorteingles.es|elnuevodia.com|enmotive.com|episodi.fi|eprice.it|ergotron.com|espinof.com|euronics.ee|euronics.it|expressvpn.com|famesupport.com|fandom.com|farmaciabolli1833.it|feex.co.il|festoolusa.com|finanzen.at|finanzen.ch|finanzen.net|findernet.com|flets.com|flytap.com|focus.de|formula1.com|fortress.com.hk|fortune.com|freenet-funk.de|froxy.com|fum.fi|gamebusiness.jp|gamespark.jp|genbeta.com|glamusha.ru|globo.com|gorillamind.com|grandhood.dk|gravitydefyer.com|gumtree.com|harveynorman.co.nz|harveynorman.com.au|hatenacorp.jp|headlightrevolution.com|hepsiburada.com|herculesstands.com|hobbyhall.fi|hobbystock.jp|homeinspector.org|hostingvergelijker.nl|hotelfountaingate.com.au|idealo.at|idealo.co.uk|idealo.de|idealo.es|idealo.fr|idealo.it|iexprofs.nl|iltalehti.fi|independent.co.uk|inferno.fi|inside-games.jp|insiderstore.com.br|insightsoftware.com|investor.natera.com|iodonna.it|iphoneitalia.com|j-wave.co.jp|jalan.net|jbhifi.co.nz|jbhifi.com.au|jn.pt|join.kazm.com|journaldunet.com|jreastmall.com|junonline.jp|kakuyomu.jp|karriere.at|karriere.heldele.de|kauppalehti.fi|kedronparkhotel.com.au|kfc.co.jp|kilian-metall.de|kinepolis.be|kinepolis.ch|kinepolis.es|kinepolis.fr|kinepolis.lu|kinepolis.nl|kitamura.jp|komputronik.pl|konami.com|kontan.co.id|la7.it|ladepeche.fr|larousse.fr|lastampa.it|lasvegasentuidioma.com|lbc.co.uk|lecker.de|lequipeur.com|level.travel|life.fi|lift.co.za|linternaute.com|lippu.fi|loopearplugs.com|luko.eu|m1.com|m2o.it|magazineluiza.com.br|mainichi.jp|makitani.net|mall.heiwa.jp|mangaseek.net|marks.com|mcgeeandco.com|mecindo.no|mediamarkt.nl|mediuutiset.fi|mercell.com|meritonsuites.com.au|midilibre.fr|mikrobitti.fi|mirapodo.de|mobilmania.cz|montcopa.org|morimotohid.com|mustar.meitetsu.co.jp|mycar-life.com|mysmartprice.com|nanikanokami.github.io|nap-camp.com|net-chuko.com|netcombo.com.br|newscafe.ne.jp|nexon.com|nflgamepass.com|ngv.vic.gov.au|nielsendodgechryslerjeepram.com|nihontsushin.com|noelleeming.co.nz|nordvpn.com|nourison.com|nove.tv|nowtv.com.tr|o2.co.uk|oakandfort.com|odia.ig.com.br|oetker-shop.de|okwave.jp|olx.ro|onepodcast.it|online-shop.mb.softbank.jp|online.ysroad.co.jp|onlineshop.ocn.ne.jp|order.fiveguys.com|orpi.com|oxylabs.io|papajohns.com|pccomponentes.com|petsathome.com|pgatoursuperstore.com|philips.com|pioneer.eu|plaion.com|plantsome.ca|plex.tv|pohjanmaanhyvinvointi.fi|poprosa.com|porsche.com|portofoonwinkel.nl|post.ch|posti.fi|pptvhd36.com|primeoak.co.uk|prisjakt.nu|prisonfellowship.org|prizehometickets.com.au|proxyscrape.com|qrcode-monkey.com|radiko.jp|radiobob.de|radiorur.de|rbbtoday.com|reanimal.jp|remax.com.ar|resemom.jp|response.jp|rhbgroup.com|rocketnews24.com|rtl.de|rumba.fi|rustih.ru|rydercup.com|sanwacompany.co.jp|saraiva.com.br|saturn.at|savethechildren.it|scan.netsecurity.ne.jp|sciencesetavenir.fr|scotsman.com|service.smt.docomo.ne.jp|servicing.loandepot.com|shop.clifbar.com|shop.moen.com|shoprite.com|sloways.eu|smartbox.com|soranews24.com|soundguys.com|soundi.fi|spektrum.de|sport1.de|sportingnews.com|sportiva.shueisha.co.jp|sportmaster.ru|spyder7.com|stage.parco.jp|store-jp.nintendo.com|str.toyokeizai.net|stressless.com|stuttgarter-nachrichten.de|subscribe.greenbuildingadvisor.com|sunnybankhotel.com.au|superesportes.com.br|support.bose.com|support.brother.com|support.creative.com|support.knivesandtools.com|swarajyamag.com|swb.de|talent.lowes.com|talouselama.fi|tbsradio.jp|teddyfood.com|tekniikkatalous.fi|telia.no|thecw.com|theretrofitsource.com|thesandshotel.com.au|tickethour.com|ticketmaster.ae|ticketmaster.at|ticketmaster.be|ticketmaster.ca|ticketmaster.ch|ticketmaster.cl|ticketmaster.co.il|ticketmaster.co.nz|ticketmaster.co.uk|ticketmaster.co.za|ticketmaster.com|ticketmaster.com.au|ticketmaster.com.br|ticketmaster.com.mx|ticketmaster.cz|ticketmaster.de|ticketmaster.dk|ticketmaster.es|ticketmaster.fi|ticketmaster.fr|ticketmaster.gr|ticketmaster.ie|ticketmaster.it|ticketmaster.nl|ticketmaster.no|ticketmaster.pe|ticketmaster.pl|ticketmaster.se|ticketmaster.sg|tickets.georgiaaquarium.org|tide.com|tilt.fi|time.com|tivi.fi|tixcraft.com|tn.com.ar|tomshw.it|topper.com.br|toyota-forklifts.se|trademe.co.nz|tradera.com|transa.ch|tredz.co.uk|trendencias.com|trendenciashombre.com|trendyol-milla.com|trendyol.com|trespa.info|tribuna.com|truckspring.com|tugatech.com.pt|tumi.com|tv-asahi.co.jp|type.jp|uclabruins.com|unieuro.it|uniqlo.com|upc.pl|upwork.com|uqr.to|uusisuomi.fi|veho.fi|vidaextra.com|video.lacnews24.it|video.repubblica.it|vip.de|virginmedia.com|vitonica.com|viviennewestwood-tokyo.com|vox.de|vtvgo.vn|wamiz.com|watson.ch|watsons.com.tr|willyweather.com.au|workingclassheroes.co.uk|wowma.jp|wpb.shueisha.co.jp|www.gov.pl|xatakamovil.com|xxl.se|ybt.sapporobeer.jp|ymobile.jp|yotsuba-shop.com|youpouch.com|zakzak.co.jp|zazzle.com|zennioptical.com|zf1.tohoku-epco.co.jp|zinio.com|zipair.net|zive.cz|zozo.jp +!! google-analytics.com/analytics.js +@@||google-analytics.com/analytics.js$domain=beinsports.com|brooklinen.com|carnesvizzera.ch|cmoa.jp|ecmweb.com|enmotive.com|healthrangerstore.com|hobbyhall.fi|infoconso-multimedia.fr|jackbox.tv|k2radio.com|koel.com|kowb1290.com|ligtv.com.tr|meritonsuites.com.au|nabortu.ru|news.gamme.com.tw|novatv.bg|papajohns.com|poiskstroek.ru|rzd.ru|saturn.at|schweizerfleisch.ch|skaties.lv|stressless.com|teddyfood.com|tracking.narvar.com|tradera.com|tribuna.com|truwin.com|tuasaude.com|unicef.de|viandesuisse.ch|vox.de|westernunion.com|worldsbiggestpacman.com|xxl.se +!! googletagmanager.com/gtag/js +@@||googletagmanager.com/gtag/js$domain=17track.net|9to5mac.com|academy.com|acornonline.com|aena.es|afisha.timepad.ru|aliexpress.com|app.joinhandshake.com|carhartt-wip.com|cbslocal.com|checkout.ao.com|cmoa.jp|cnet.com|cram.com|devclass.com|dholic.co.jp|ecmweb.com|ejgiftcards.com|enmotive.com|espressif.com|euronics.ee|factory.pixiv.net|fanpage.it|farmaciabolli1833.it|game.anymanager.io|globo.com|gmanetwork.com|herculesstands.com|homeinspector.org|honeystinger.com|hostingvergelijker.nl|huion.com|inforesist.org|kawasaki.com|kinepolis.be|kinepolis.ch|kinepolis.es|kinepolis.fr|kinepolis.lu|kinepolis.nl|liene-life.com|livongo.com|m.putlocker.how|malegislature.gov|mall.heiwa.jp|mirrativ.com|modehasen.de|mond.how|montcopa.org|mopar.com|nihontsushin.com|o2.co.uk|oko.sh|oxylabs.io|panflix.com.br|papajohns.com|plex.tv|pptvhd36.com|proxyorb.com|radiosarajevo.ba|redstoneonline.jp|rhbgroup.com|rintraccialamiaspedizione.it|royalcams.com|schwab.com|seatmaps.com|showroom-live.com|skylar.com|slink.ptit.edu.vn|sloways.eu|square-enix.com|starblast.io|supplementmart.com.au|ticketmaster.com|timparty.tim.it|toptal.com|trespa.info|truckspring.com|virginmedia.com|virginplus.ca|webstatus.dev|winefolly.com|winhappy.com|wps.com|xl-bygg.no|zf1.tohoku-epco.co.jp|zipair.net +!! googletagmanager.com/gtag/destination? +@@||googletagmanager.com/gtag/destination?$domain=sloways.eu +!! googleoptimize.com/optimize.js +@@||googleoptimize.com/optimize.js$domain=binglee.com.au|grasshopper.com|in.bookmyshow.com|inquirer.com|investing.com|lacomer.com.mx|lodgecastiron.com|tentree.ca|virginmedia.com +!! google-analytics.com/mp/collect? +@@||google-analytics.com/mp/collect?$domain=startse.com +!! google-analytics.com/plugins/ua/ec.js +@@||google-analytics.com/plugins/ua/ec.js$domain=saturn.at|teddyfood.com|xxl.se +!! google-analytics.com/plugins/ua/linkid.js +@@||google-analytics.com/plugins/ua/linkid.js$domain=ecmweb.com +!! google-analytics.com/ga.js +@@||google-analytics.com/ga.js$domain=meritonsuites.com.au|realpage.com +!! collect.igodigital.com/collect.js +@@||collect.igodigital.com/collect.js$domain=berkley-fishing.com|enoteca.co.jp|goodwillfinds.com|samash.com|viajeguanabara.com.br|vitalsource.com|wilsonparking.com.au +!! browser.sentry-cdn.com +@@||browser.sentry-cdn.com^$domain=acustica-audio.com|alphaxiv.org|dic.pixiv.net|doconcall.com.my|eco-clobber.co.uk|fundhero.io|marshmallow-qa.com|members.bifa.film|menshealth.com|ocado.com|pocketguard.com|podcasty.seznam.cz|roomster.com|shop.dns-net.de|spacemarket.com|timesprime.com|vivareal.com.br|womenshealthmag.com +!! ||assets.adobedtm.com/extensions/*/AppMeasurement.min.js +@@||assets.adobedtm.com/extensions/*/AppMeasurement.min.js$domain=bestbuy.ca|identity.healthsafe-id.com|nbc.com|subwy.com|tatamotors.com|usanetwork.com +!! ||assets.adobedtm.com/extensions/*/AppMeasurement* (general) +||assets.adobedtm.com/extensions/*/AppMeasurement$script,domain=medscape.com|skinny.co.nz +!! adobedtm.com^*/satelliteLib- +@@||adobedtm.com^*/satelliteLib-$script,domain=absa.co.za|ally.com|americanexpress.com|as.com|auspost.com.au|backcountry.com|bmw.com.au|canadapost-postescanada.ca|ceair.com|collegeboard.org|conad.it|costco.com|crackle.com|crackle.com.ar|crackle.com.br|crackle.com.ec|crackle.com.mx|crackle.com.pe|crackle.com.py|crave.ca|crimewatchdaily.com|dhl.de|directline.com|elgiganten.se|elkjop.no|eonline.com|fcbarcelona.cat|fcbarcelona.cn|fcbarcelona.com|fcbarcelona.es|fcbarcelona.fr|fcbarcelona.jp|firststatesuper.com.au|gigantti.fi|godigit.com|hellobank.fr|hgtv.com|hrw.com|ilsole24ore.com|jeep.com|laredoute.be|laredoute.ch|laredoute.co.uk|laredoute.com|laredoute.es|laredoute.fr|laredoute.it|laredoute.pl|laredoute.pt|laredoute.ru|lenovo.com|lowes.com|malaysiaairlines.com|mastercard.us|mathworks.com|monoprice.com|myaetnasupplemental.com|nbcnews.com|nfl.com|nflgamepass.com|nofrills.ca|nrj.fr|oprah.com|oracle.com|pnc.com|poweredbycovermore.com|radiko.jp|realtor.com|redbull.tv|repco.co.nz|sbb.ch|searspartsdirect.com|shoppersdrugmart.ca|smooth.com.au|sony.jp|stuff.co.nz|subaru.com|support.nec-lavie.jp|tatacliq.com|telegraph.co.uk|timewarnercable.com|tou.tv|usanetwork.com|vanityfair.com|verizon.com|vtr.com|wayin.com|wired.com +!! adobedtm.com^*-libraryCode_source.min.js +@@||adobedtm.com^*-libraryCode_source.min.js$domain=doda.jp +!! adobedtm.com^*_source.min.js +@@||adobedtm.com^*_source.min.js$domain=ally.com|americanexpress.com|as.com|backcountry.com|crave.ca|disneyplus.disney.co.jp|hilton.com|hl.co.uk|homedepot.ca|kroger.com|mora.jp|nbarizona.com|pnc.com|tatacliq.com|telus.com +!! adobedtm.com^*-source.min.js +@@||adobedtm.com^*-source.min.js$script,domain=53.com|aarp.org|aircanada.com|ally.com|americanexpress.com|as.com|atresplayer.com|automobiles.honda.com|backcountry.com|bbva.com.ar|bbvacib.com|bbvauk.com|bestbuy.ca|bose.ae|bose.at|bose.ca|bose.ch|bose.cl|bose.co|bose.co.jp|bose.co.nz|bose.co.uk|bose.com|bose.com.au|bose.de|bose.dk|bose.es|bose.fi|bose.fr|bose.hk|bose.hu|bose.ie|bose.it|bose.lu|bose.mx|bose.nl|bose.no|bose.pe|bose.pl|bose.se|boseapac.com|bosebelgium.be|boselatam.com|bt.com|cadenaser.com|churchofjesuschrist.org|cibc.com|crave.ca|currys.co.uk|deutsche-bank.de|dollargeneral.com|etihad.com|eurosport.de|fedex.com|guitarcenter.com|healthsafe-id.com|healthy.kaiserpermanente.org|helvetia.com|hgtv.com|hilton.com|homedepot.ca|ihg.com|imsa.com|ing.com.au|ingrammicro.com|kroger.com|lenovo.com|lifetime.life|lowes.com|manager-magazin.de|marriott.com|medscape.com|mtvuutiset.fi|mybell.bell.ca|natwest.com|nbarizona.com|news.sky.com|philips.com|plasticsnews.com|pnc.com|poweredbycovermore.com|ralphlauren.com|samsung.com|sephora.com|snsbank.nl|ssrn.com|starwarscelebration.com|subway.com|tatacliq.com|telegraph.co.uk|telus.com|verizon.com|virginplus.ca|walgreens.com|xfinity.com +!! adobedtm.com^*/mbox-contents- +@@||adobedtm.com^*/mbox-contents-$script,domain=absa.co.za|ally.com|americanexpress.com|as.com|backcountry.com|ceair.com|conad.it|costco.com|dhl.de|fcbarcelona.cat|fcbarcelona.cn|fcbarcelona.com|fcbarcelona.es|fcbarcelona.fr|fcbarcelona.jp|firststatesuper.com.au|hgtv.com|lenovo.com|lowes.com|nfl.com|oprah.com|pnc.com|shoppersdrugmart.ca|sony.jp|tatacliq.com|usanetwork.com|vanityfair.com|wired.com +!! adobedtm.com/extensions/ +@@||adobedtm.com/extensions/$domain=antena3.com|apple.com|atresmedia.com|atresplayer.com|automobiles.honda.com|bravotv.com|cadenaser.com|crave.ca|foodnetwork.com|lasexta.com|telus.com|verizon.com|xfinity.com +!! OtAutoBlock.js +@@||cookielaw.org^*/OtAutoBlock.js$domain=bancsabadell.com|darkreading.com|uphold.com +!! cxense.com/document/search? +@@||cxense.com/document/search? +!! cxense.com/persisted/execute +@@||cxense.com/persisted/execute$domain=nippon.com +!! cxense.com/public/widget/ +@@||cxense.com/public/widget/$domain=bizjournals.com|businessinsider.de|businessinsider.jp|computerbild.de|cxpublic.com|cyclestyle.net|diamond.jp|friday.gold|friday.kodansha.co.jp|handelsblatt.com|hochi.news|inquirer.com|journaldequebec.com|ksml.fi|mainichi.jp|marketwatch.com|nippon.com|rikejo.jp|savonsanomat.fi|shueisha.co.jp|tn.com.ar|tvnet.lv|wsj.com +!! cxense.com/cx.cce.js +@@||cxense.com/cx.cce.js$domain=bizjournals.com|businessinsider.de|cxpublic.com|diamond.jp|handelsblatt.com|hochi.news|inquirer.com|mainichi.jp|marketwatch.com|shueisha.co.jp|tarzanweb.jp|tn.com.ar|tvnet.lv|wsj.com +!! cxense.com/cx.js +@@||cxense.com/cx.js$domain=13.cl|bizjournals.com|businessinsider.de|businessinsider.jp|computerbild.de|cyclestyle.net|diamond.jp|gizmodo.jp|handelsblatt.com|hochi.news|inquirer.com|journaldequebec.com|ksml.fi|mainichi.jp|marketwatch.com|nikkansports.com|nippon.com|savonsanomat.fi|shueisha.co.jp|str.toyokeizai.net|tarzanweb.jp|tn.com.ar|tv-tokyo.co.jp|tvnet.lv|wsj.com +!! collector.appconsent.io +@@||collector.appconsent.io/hello$domain=lachainemeteo.com|lefigaro.fr +!! imrworldwide.com/*ggc +@@||imrworldwide.com/novms/js/2/ggc$script,domain=9now.com.au|adelaidenow.com.au|advertiser.com.au|bestrecipes.com.au|byronnews.com.au|cairnspost.com.au|coffscoastadvocate.com.au|couriermail.com.au|dailyexaminer.com.au|espn.com|frasercoastchronicle.com.au|gattonstar.com.au|geelongadvertiser.com.au|gladstoneobserver.com.au|goldcoastbulletin.com.au|heraldsun.com.au|ipswichadvertiser.com.au|la7.it|news-mail.com.au|news.com.au|noosanews.com.au|ntnews.com.au|sky.it|sunshinecoastdaily.com.au|theaustralian.com.au|themercury.com.au|theweeklytimes.com.au|townsvillebulletin.com.au|tvnow.de|video.corriere.it|weeklytimesnow.com.au|whitsundaytimes.com.au +!! imrworldwide.com/conf/ +@@||imrworldwide.com/conf/$script,domain=nbcolympics.com +! imrworldwide.com/v60.js +@@||imrworldwide.com/v60.js$domain=adelaidenow.com.au|advertiser.com.au|bestrecipes.com.au|byronnews.com.au|cairnspost.com.au|coffscoastadvocate.com.au|corriereadriatico.it|couriermail.com.au|dailyexaminer.com.au|fanpage.it|frasercoastchronicle.com.au|gattonstar.com.au|geelongadvertiser.com.au|gladstoneobserver.com.au|goldcoastbulletin.com.au|heraldsun.com.au|huffingtonpost.it|ilgazzettino.it|ilmattino.it|ilmessaggero.it|ipswichadvertiser.com.au|la7.it|last.fm|leggo.it|musicfeeds.com.au|news-mail.com.au|noosanews.com.au|ntnews.com.au|nzherald.co.nz|quotidianodipuglia.it|realestateview.com.au|sf.se|sunshinecoastdaily.com.au|theaustralian.com.au|themercury.com.au|theweeklytimes.com.au|threenow.co.nz|townsvillebulletin.com.au|video.deejay.it|video.espresso.repubblica.it|video.ilsecoloxix.it|video.lastampa.it|video.repubblica.it|weatherchannel.com.au|weeklytimesnow.com.au|whitsundaytimes.com.au +!! mpsnare.iesnare.com +@@||mpsnare.iesnare.com^$script,domain=aswbe.ana.co.jp|citi.com|citibank.com|jbhifi.com.au|login.skype.com|oreillyauto.com|power.fi|princessauto.com|ringcentral.com|screwfix.com|secure.coventrybuildingsociety.co.uk|usbank.com|verkkokauppa.com|vitacost.com|westernunion.com +!! ingest.sentry.io/api/ +@@||ingest.sentry.io/api/$xmlhttprequest,domain=core.app|orionprotocol.io|play.tv3.lv|tesco.com|tesco.hu +!! ci-mpsnare.iovation.com +@@||ci-mpsnare.iovation.com/snare.js$domain=equifax.ca +!! lightning.cnn.com +@@||lightning.cnn.com^$script,domain=wfmz.com +!! tag.aticdn.net +@@||tag.aticdn.net^$script,domain=gouv.fr|openservices.enedis.fr|rte.ie|tv5monde.com|uktvplay.co.uk|visaconcierge.eu|yourstory.com +!! cdn.optimizely.com/public +@@||cdn-pci.optimizely.com/public/*/sales_snippet.js$domain=talktalk.co.uk +@@||cdn.optimizely.com/public/*.json/tag.js$domain=mobile.de +!! omtrdc.net +@@||omtrdc.net^*/mbox/json?$xmlhttprequest,domain=absa.co.za|att.com|pnc.com|vodafone.it +!! tags.tiqcdn.com +@@||tags.tiqcdn.com/utag/*/utag.sync.js$domain=10.com.au|bankofamerica.com|hsbc.co.uk|samsung.com|sony.jp|visible.com|vmware.com +! statcounter.com charts https://github.com/uBlockOrigin/uAssets/issues/11321 +@@||gs.statcounter.com/chart.php$script,third-party +@@||statcounter.com/js//fusioncharts.charts.js +@@||statcounter.com/js/fusioncharts.js +@@||www.statcounter.com/images/$image,third-party +! ping exceptions +@@||api.babbel.io/gamma/v1/$ping,domain=babbel.com +! https://github.com/easylist/easylist/issues/10565 +@@||googletagmanager.com/gtm.js$domain=blaklader.at|blaklader.be|blaklader.ca|blaklader.com|blaklader.cz|blaklader.de|blaklader.dk|blaklader.ee|blaklader.es|blaklader.fi|blaklader.fr|blaklader.ie|blaklader.it|blaklader.nl|blaklader.no|blaklader.pl|blaklader.se|blaklader.uk +! Opera/Safari (buggy 3rd-party implementations) +! https://forums.lanik.us/viewtopic.php?f=64&t=45603&p=158333 +@@||bugsnag.com^$~third-party,domain=app.bugsnag.com +! Consent and video Fixes +@@||sourcepointcmp.bloomberg.*/ccpa.js$script,domain=bloomberg.co.jp|bloomberg.com +@@||sourcepointcmp.bloomberg.*/mms/get_site_data?$domain=bloomberg.co.jp|bloomberg.com +! CNAME (Specific allowlists) +@@||adobe.com.ssl.d1.sc.omtrdc.net^$xmlhttprequest,domain=www.adobe.com +@@||app.clarity.so^$~third-party +@@||cbsi.map.fastly.net^ +@@||content.ingbank.pl^ +@@||ct.ddc.venmo.com.fpc.datadome.co^$domain=id.venmo.com +@@||curiositystream.com.first-party-js.datadome.co^$script,domain=curiositystream.com +@@||datadome.garena.com.first-party-js.datadome.co^$script,xmlhttprequest,domain=auth.garena.com +@@||dd.blackhawknetwork.com.first-party-js.datadome.co^$domain=redeem.rewardlink.com +@@||dd.qa.moneygram.com.first-party-js.datadome.co^$script,xmlhttprequest,domain=moneygram.com +@@||dd.wizzair.com.first-party-js.datadome.co^$domain=wizzair.com +@@||dwt.soundcloud.com.first-party-js.datadome.co^$script,xmlhttprequest,domain=soundcloud.com +@@||gva.et-gv.fr^$script,domain=culture.gouv.fr +@@||mycleverpush.com/iframe?$domain=bsdex.de +@@||n8s.jp^$script,domain=nikkei.com +@@||online-metrix.net^$script,domain=eki-net.com +@@||p11.techlab-cdn.com^$domain=wizzair.com +@@||paypal.com.first-party-js.datadome.co^$domain=paypal.com +@@||sc.omtrdc.net^$domain=cibc.com +@@||team-rec.jp^$domain=search-voi.0101.co.jp|voi.0101.co.jp +@@||ubisoft.com.first-party-js.datadome.co^$script,domain=connect.ubisoft.com +@@||wwwimage-tve.cbsstatic.com^ +! Chrome bug (Endless loading causing site to crash https://forums.lanik.us/viewtopic.php?f=64&t=25152) +! Preliminarily allowlists Omniture s_code tracking pixels (script versions H.25 - H.25.2) due to breakage (https://adblockplus.org/forum/viewtopic.php?f=10&t=11378) if blocking the script causes issues +@@||omns.americanexpress.com/b/ss/ +@@||omtrdc.net/b/ss/$image,domain=ba.com|britishairways.com|halifax-online.co.uk +@@||omtrdc.net/rest/$xmlhttprequest +! Allowlists to fix broken pages of tracking companies +! Heatmap +@@||heatmap.it^$domain=heatmap.com|heatmap.it|heatmap.me|heatmap.org +@@||komas19.xyz/cdn-cgi/apps/$script,~third-party +!----------------Allowlists to fix broken international sites-----------------! +! *** easylist:easyprivacy/easyprivacy_allowlist_international.txt *** +!---------- German ---------- +@@||adconsole.ch/api/ws-businessclick/*/data.json$domain=finanzen.ch +@@||adnz.co/dmp/publisher.js$domain=finanzen.ch +@@||adnz.co/header.js?adTagId=$domain=finanzen.ch +@@||analytics.edgekey.net/html5/akamaihtml5-min.js$domain=br.de +@@||apps.derstandard.at^*/TrackingCookieCheck?$subdocument +@@||aticdn.net/piano-analytics.js$domain=stuttgarter-nachrichten.de +@@||bilder-a.akamaihd.net/ip/js/ipdvdc/ipdvdc.min.js$domain=n-tv.de|toggo.de|vip.de +@@||businessclick.ch/index.js$domain=finanzen.ch +@@||classic.comunio.de/clubImg.phtml/$image,~third-party +@@||digitale-sammlungen.gwlb.de^*/pageview.js$script,domain=digitale-sammlungen.gwlb.de +@@||dmp.theadex.com^*/adex.js$domain=kino.de +@@||dynamicyield.com/scripts/*/dy-coll-nojq-min.js$domain=gigasport.at|gigasport.ch|gigasport.de +@@||energy.de^*/ivw.js?$domain=energy.de +@@||ens.nzz.ch^$~third-party +@@||geo.kaloo.ga/json/$script,domain=tagesspiegel.de +@@||google-analytics.com/gtm/js?$script,domain=unicef.de +@@||google-analytics.com/gtm/optimize.js$domain=focus.de +@@||googleoptimize.com/optimize.js?$domain=eventim.de +@@||gymnasedeburier.ch/themes/segment/js/$~third-party +@@||kameleoon.eu/engine.js$domain=welt.de +@@||kameleoon.eu/images/$domain=welt.de +@@||kameleoon.eu/ip^$domain=welt.de +@@||kameleoon.eu/kameleoon.js$domain=welt.de +@@||kameleoon.io/geolocation^$domain=welt.de +@@||kameleoon.io/ip^$domain=welt.de +@@||l.ecn-ldr.de/loader/loader.js$domain=braun-hamburg.com +@@||outbrainimg.com^$third-party,domain=computerbild.de|fitbook.de|metal-hammer.de|rollingstone.de|stylebook.de +@@||pruefernavi.de/vendor/elasticsearch/elastic-apm-rum.umd.min.js$~third-party +@@||responder.wt-safetag.com/resp/api/get/$script,domain=myhermes.de +@@||sams.11freunde.de/ee/*/interact?$xmlhttprequest,domain=11freunde.de +@@||sams.spiegel.de/ee/irl1/v1/interact?$domain=spiegel.de +@@||script-at.iocnt.net/iam.js$domain=oe24.at +@@||showheroes.com/publishertag.js$domain=rollingstone.de +@@||showheroes.com/pubtag.js$domain=rollingstone.de +@@||siteintercept.qualtrics.com/$domain=idealo.de +@@||sophi.io/assets/demeter/$script,domain=faz.net +@@||spezialklinik-neukirchen.de/matomo/$~third-party +@@||spiegel.de/layout/js/http/netmind-$script +@@||taboola.com/libtrc/$script,domain=bild.de|computerbild.de|fitbook.de|jetzt.de|metal-hammer.de|musikexpress.de|noizz.de|rollingstone.de|stylebook.de|sueddeutsche.de|techbook.de|travelbook.de|welt.de|wieistmeineip.at|wieistmeineip.ch|wieistmeineip.de +@@||technical-service.net^$xmlhttprequest,domain=n-tv.de|rtl.de|vip.de +@@||tipico.de/js/modules/fingerprintjs2/fingerprint2.min.js$script,~third-party +@@||toggo.de/static/js/sourcepoint.js$domain=toggo.de +@@||ttmetrics.faz.net/rest/v1/delivery?$domain=faz.net +@@||uim.tifbs.net/js/$script,domain=web.de +@@||widgets.trustedshops.com/reviews/tsSticker/$domain=koziol-shop.de +@@||yieldlove.com/v2/yieldlove-stroeer.js$domain=kino.de +!---------- Greek ----------- +@@||extreme-ip-lookup.com/json/$xmlhttprequest,domain=skaitv.gr +!---------- French ---------- +@@||actiris.be/urchin.js +@@||ausha.tsbluebox.com^$media,domain=podcast.ausha.co +@@||caf.fr^*/smarttag.js$script,~third-party +@@||cdn-net.com/s2?$subdocument,domain=showroomprive.com +@@||cmp.telerama.fr/js/telerama.min.js$~third-party +@@||connect.facebook.net^*/fbevents.js$domain=elinoi.com +@@||forecast.lemonde.fr/p/event/pageview?$image,~third-party +@@||franceinfo.fr/assets/*/piano-analytics/piano-analytics-$script,~third-party +@@||helix.videotron.com/js/api/fingerprint.js$~third-party +@@||howsmyssl.com^$script,domain=trenitalia.fr +@@||icu.newsroom.bi/ingest.php$xmlhttprequest,domain=autoplus.fr +@@||logic-immo.com/lib/xiti/xiti.js$script,~third-party +@@||mabanque.fortuneo.fr/js/front/fingerprint2.js$script,domain=mabanque.fortuneo.fr +@@||pmdstatic.net/advertising-$script,xmlhttprequest,domain=programme-tv.net +@@||relevant-digital.com^$script,domain=20min.ch +@@||service-public.fr^*/assets/js/eulerian/eulerian.js$~third-party +@@||tag.aticdn.net/piano-analytics.js$script,domain=toureiffel.paris +@@||tra.scds.pmdstatic.net/sourcepoint/$domain=businessinsider.fr|caminteresse.fr|capital.fr|geo.fr|voici.fr +@@||trustcommander.net/iab-tcfapi/tcfapi.js$script,domain=tf1info.fr +!---------- Arabic ---------- +@@||collector.leaddyno.com/shopify.js$script,domain=s4l.us +@@||nbe.com.eg/NBEeChannelManager/CallMW.aspx$~third-party +@@||rudaw.net/images/pixel.gif$~third-party +@@||secure.moneygram.com/embed/*/webAnalytics/pageMapping.json?$~third-party,xmlhttprequest +@@||secure.moneygram.com/embed/*/webAnalytics/pageMappingOverrides.json?$~third-party,xmlhttprequest +@@||static.leaddyno.com/js$script,domain=s4l.us +!---------- Bosnian ---------- +@@||ocdn.eu/ucs/static/*/onesignal.js$script,domain=pulsonline.rs +!---------- Bulgarian ---------- +!---------- Chinese ---------- +@@||10086.cn/framework/modules/sdc.js$script,~third-party +@@||aixifan.com^*/sensorsdata.min.js?$domain=acfun.cn +@@||baidu.com/api/bidder/$domain=jump2.bdimg.com +@@||gtimg.com/qqcdn/*/beacon.min.js$script,domain=qq.com +@@||hk.on.cc/js/v4/urchin.js +@@||ipqualityscore.com/api/$script,domain=carousell.com.hk +@@||iwrite.unipus.cn/js/main/GPT.js$~third-party +@@||mail.163.com/fetrack/api/27/envelope/?sentry_key=$xmlhttprequest +@@||marketing.unionpayintl.com/offer-promote/static/sensorsdata.min.js$script,~third-party +@@||nobook.com/open-interface/official-sensors.git/$script,~third-party +@@||pubscholar.cn/static/common/fingerprint.js$script,~third-party +@@||pv.sohu.com/cityjson$domain=ems.com.cn +@@||sizhiai.com/api/stat?$~third-party +@@||statics.zcool.com.cn/track/sensors.$script,~third-party +@@||tianyancha.com^*/sensorsdata.$script,~third-party +@@||tracklog.58.com/referrer_ershouche_m_Now.js$domain=m.renrenche.com +@@||xykpay.3d2.icbc.com.cn/acs-auth-web/js/fingerprint2.min.js$~third-party +!---------- Czech ---------- +@@||1gr.cz/js/dtm/cache/satelliteLib-$domain=idnes.cz +@@||creditas.cz/cb/public/assets/SmartTag-$script,~third-party +@@||h.imedia.cz/js/cmp2/scmp.js$domain=seznam.cz +@@||hlidacstatu.cz/scripts/highcharts-6/modules/heatmap.js +@@||publisher.caroda.io/videoPlayer/$script,domain=online.evropa2.cz +@@||seznam.cz/?spec=*&url=$image,domain=search.seznam.cz +@@||tvcom-static.ssl.cdn.cra.cz/*/videojs.ga.js$script,domain=tvcom.cz +!---------- Danish ---------- +@@||nemlog-in.dk/resources/js/adrum.js$~third-party +@@||spoc.sydtrafik.dk/CherwellPortal/dist/app/common/analytics/Analytics.js$~third-party +!---------- Dutch ---------- +@@||3voor12.vpro.nl^*/streamsense.min.js$~third-party +@@||ad.crwdcntrl.net^$script,domain=rtl.nl +@@||gdh.postcodeloterij.nl/gdltm.js$domain=vriendenloterij.nl +@@||josiad.ns.nl/DG/DEFAULT/$xmlhttprequest +@@||marketingautomation.services^$script,domain=leeuwerik.nl +@@||tag.aticdn.net/piano-analytics.js$script,domain=boerzoektvrouw.kro-ncrv.nl +!---------- Finnish ---------- +@@||analytics-sdk.yle.fi/yle-analytics.min.js$~third-party +@@||nelonenmedia.fi/logger/logger-ini.json$xmlhttprequest,domain=embed.sanoma-sndp.fi|supla.fi +!---------- Hebrew ---------- +@@||amazonaws.com/static.madlan.co.il/*/heatmap.json?$xmlhttprequest +@@||haaretz.co.il/logger/p.gif?$image,xmlhttprequest +@@||mixpanel.com/track/?data=$xmlhttprequest,domain=eloan.co.il +@@||mxpnl.com/libs/mixpanel-*.min.js$domain=eloan.co.il +@@||themarker.com/logger/p.gif?$image,xmlhttprequest +@@||trc.taboola.com/inncoil/log/3/available$subdocument,domain=inn.co.il +!---------- Hungarian ---------- +@@||configurator.porsche.com/public/adobe-analytics-$~third-party +@@||keytiles.com/tracking/$script,domain=blikk.hu +@@||konzolvilag.hu^*/click_tracking.js$~third-party +@@||kozkutak.hu/getdata.php?v*=pageview$~third-party +!---------- Icelandic ---------- +!---------- Italian ---------- +@@||adobedtm.com^*/AppMeasurement.min.js$script,domain=sky.it +@@||adobetag.com/d2/telecomitalia/live/Aggregato119TIM.js$domain=tim.it +@@||analytics.edgekey.net/config/beacon-$xmlhttprequest,domain=raiplay.it +@@||app.hype.it/assets/packages/mixpanel_flutter/assets/mixpanel.js$~third-party +@@||areaclienti.generali.it/plugins/cordova-plugin-fingerprint-aio/www/Fingerprint.js$script,~third-party +@@||cdnb.4strokemedia.com/carousel/v4/comscore-JS-$script +@@||chartbeat.com/js/chartbeat_brightcove_plugin.js$domain=capital.it|deejay.it|m2o.it +@@||clerk.io/clerk.js$script,domain=trony.it +@@||codicefl.shinystat.com/cgi-bin/getserver.cgi?$script,domain=3bmeteo.com|quotidiano.net +@@||dd.subito.it.first-party-js.datadome.co^$script,xmlhttprequest,domain=areariservata.subito.it +@@||digitrend.it/wonder-marketing/assets/wordpress/js/videojs.ga.js?$script,domain=vrsicilia.it +@@||jsdelivr.net^*/keen-tracking.min.js$domain=nextquotidiano.it +@@||kataweb.it/wt/wt.js?http$domain=gelocal.it|video.huffingtonpost.it|video.ilsecoloxix.it|video.lastampa.it|video.repubblica.it +@@||lasicilia.it/wp-content/plugins/digistream/digiplayer/js/videojs.ga.js?$script,~third-party +@@||livesicilia.it/wp-content/plugins/digistream/digiplayer/js/videojs.ga.js?$script,~third-party +@@||qds.it/wp-content/plugins/digistream/digiplayer/js/videojs.ga.js?$script,~third-party +@@||radio24.ilsole24ore.com/plugins/cordova-plugin-nielsen/www/nielsen.js$script,~third-party +@@||repubblica.it/pw/pw.js?deskurl=$domain=gelocal.it|ilsecoloxix.it|lastampa.it +@@||sgtm.farmasave.it^$script,~third-party +@@||speedcurve.com/js/lux.js$script,domain=tv8.it +@@||thron.com/shared/plugins/tracking/current/tracking-library-min.js$domain=dainese.com +@@||timvision.it/libs/fingerprint/fingerprint.js +@@||track.adform.net/serving/scripts/trackpoint$script,domain=sky.it +!---------- Indonesian ---------- +@@||detik.com/urchin.js +!---------- Japanese ---------- +@@||a.run.app/api/stat?$domain=cocowa.app +@@||allabout.co.jp/mtx_cnt.js$script,~third-party +@@||analytics.digitalpfizer.com/js/prod/pcc/pf_appmeasurement.js$domain=pfizer-covid19-vaccine.jp +@@||atwiki.jp/common/_img/spacer.gif?$image,domain=atwiki.jp +@@||b-cloud.templatebank.com/js/gtag.js$~third-party +@@||bdash-cloud.com/recommend-script/$script,domain=junonline.jp +@@||bdash-cloud.com/tracking-script/*/tracking.js$domain=junonline.jp +@@||bookoffonline.co.jp/files/tracking/ac/clicktag.js$~third-party +@@||c-web.cedyna.co.jp/customer/img/spacer.gif?$~third-party +@@||carsensor.net/usedcar/modules/clicklog_top_lp_revo.php$xmlhttprequest +@@||cdn.kaizenplatform.net^$script,domain=navi.onamae.com +@@||clarity.ms/tag/$script,domain=phileweb.com +@@||cmn.gyro-n.com/js/gyr.min.js$domain=benesse-style-care.co.jp +@@||cpt.geniee.jp/hb/*/wrapper.min.js$domain=hoyme.jp +@@||cybozu.com/*/event.gif?$~third-party +@@||dan-ball.jp/en/javagame/mine/data/d.gif$image,~third-party +@@||datadoghq-browser-agent.com/*/datadog-logs.js$domain=crosset.onward.co.jp +@@||delivery.satr.jp^$script,domain=mieru-ca.com +@@||deteql.net/recommend/provision?$xmlhttprequest,domain=t-fashion.jp +@@||directg.jp/js/fingerprint2.js$~third-party +@@||disneyplus.disney.co.jp/view/vendor/analytics/$~third-party +@@||dmp.im-apps.net/pms/*/pmt.js$domain=zakzak.co.jp +@@||docodoco.jp^*/docodoco?key=$script,domain=jrtours.co.jp +@@||e-stat.go.jp/modules/custom/retrieve/src/js/stat.js?$script,~third-party +@@||ev.tpocdm.com^$xmlhttprequest,domain=wowma.jp +@@||f-gear.ec-optimizer.com/img/spacer.gif$image,domain=ec.f-gear.co.jp +@@||f-gear.ec-optimizer.com/search4.do$script,domain=ec.f-gear.co.jp +@@||f-gear.ec-optimizer.com/speights/searchresult2fgear.js$script,domain=ec.f-gear.co.jp +@@||f-tra.com^$script,domain=pokemoncenter-online.com +@@||friday.kodansha.co.jp/scripts/taboola.js$script,~third-party +@@||gamerch.com/s3-assets/library/js/fingerprint2.min.js?$script,~third-party +@@||get.s-onetag.com/*/tag.min.js$domain=zakzak.co.jp +@@||googleadservices.com/pagead/conversion_async.js$script,domain=jp.square-enix.com +@@||googletagservices.com/tag/js/gpt.js$domain=fukuishimbun.co.jp +@@||guinnessworldrecords.jp/ezais/analytics$~third-party +@@||h-cast.jp^$script,domain=bookoffonline.co.jp +@@||howtonote.jp/google-analytics/$image,~third-party +@@||in.treasuredata.com/js/*?api_key$script,domain=retty.me +@@||js.appboycdn.com/web-sdk/$domain=kfc.co.jp +@@||justmyshop.com/gate/criteo/product-id.js$~third-party +@@||k-img.com/script/analytics/s_code.js$script,domain=kakaku.com +@@||karte.io/libs/tracker.$domain=online.ysroad.co.jp|zf1.tohoku-epco.co.jp|zozo.jp +@@||l.logly.co.jp/lift$script,domain=sponichi.co.jp +@@||line-scdn.net^*/torimochi.js$script,domain=demae-can.com +@@||linksynergy.com/minified_logic.js$xmlhttprequest +@@||log000.goo.ne.jp/gcgw.js$domain=nttxstore.jp +@@||logly.co.jp/recommend/$image,domain=benesse.ne.jp|sponichi.co.jp +@@||matsukiyococokara-online.com/store/*/rtoaster.js +@@||moneypartners.co.jp/web/*/fingerprint.js$~third-party +@@||nakanohito.jp^*/bi.js$domain=kenko-tokina.co.jp|myna.go.jp|nexon.com +@@||nittsu.com/Tracking/Scripts/Tracking/track.js +@@||onesignal.com/api/v1/sync/$domain=oshibuta.com +@@||play.dlsite.com/csr/viewer/lib/newrelic.js +@@||pvtag.yahoo.co.jp^$script,domain=paypaymall.yahoo.co.jp +@@||query.petametrics.com^$image,xmlhttprequest,domain=mechacomic.jp +@@||r10s.jp/com/img/home/t.gif?$domain=24.rakuten.co.jp +@@||realestate.yahoo.co.jp/buy/assets/pages/shared/services/LoggingService.js$~third-party +@@||rt.rtoaster.jp^$image,domain=ec-store.net +@@||rtoaster.jp/Rtoaster.js$domain=peachjohn.co.jp|satofull.jp +@@||rtoaster.jp^$script,domain=cecile.co.jp|ec-store.net|jreastmall.com|lexus.jp|melonbooks.co.jp +@@||s.yimg.jp/images/listing/tool/cv/ytag.js$domain=redstoneonline.jp|store-jp.nintendo.com +@@||s.yjtag.jp/tag.js$script,domain=baseball.yahoo.co.jp|bousai.yahoo.co.jp|soccer.yahoo.co.jp|www.epson.jp +@@||sail-horizon.com/spm/spm.v1.min.js$script,domain=voguegirl.jp +@@||sankei.co.jp/js/analytics/skd.Analysis.js$script +@@||sanspo.com/parts/chartbeat/$xmlhttprequest +@@||snva.jp/javascripts/reco/$script,domain=abc-mart.net|store.charle.co.jp +@@||suumo.jp/sp/js/beacon.js$script,~third-party +@@||tm.r-ad.ne.jp/128/ra346756.js$script,domain=hpdsp.net +@@||toweroffantasy-global.com/events/accounttransfer/public/js/fingerprint.js$~third-party +@@||townwork.net/js/AppMeasurement.js$~third-party +@@||twitter.com/oct.js$domain=jp.square-enix.com +@@||type.jp/common/js/clicktag.js +@@||ukw.jp^*/?cbk=$script,domain=system5.jp +@@||useinsider.com/ins.js$domain=pizzahut.jp +@@||user.userguiding.com/sdk/identify$xmlhttprequest,domain=xaris.ai +@@||webcdn.stream.ne.jp^*/referrer.js$domain=stream.ne.jp +@@||wf.typesquare.com^$font,domain=app.studio.design|morisawafonts.com +@@||yjtag.yahoo.co.jp/tag?$script,domain=bousai.yahoo.co.jp +@@||yu.xyz.mn/images/event.gif?$image,~third-party +@@||zinro.net/m/log.php +!---------- Korean ---------- +@@||naver.net/wcslog.js$domain=fragpunk.com|m.tv.naver.com +@@||ssl.pstatic.net/sstatic/sdyn.js$script,domain=search.naver.com +!---------- Latvian ---------- +@@||gemius.pl/gplayer.js$script,third-party +!---------- Macedonian ---------- +@@||motika.com.mk/wp-content/plugins/ajax-hits-counter/display-hits.rapid.php$~third-party +!---------- Norwegian ---------- +@@||cat.telia.no/gtm.js$script,domain=telia.no +@@||hvemder.no/js/hitcount.min.js$~third-party +@@||komplett.no/gtm.js$script,~third-party +!---------- Polish ---------- +@@||gemius.pl/gstream.js +@@||gildia.pl/static/*/Smile_ElasticsuiteTracker/js/tracking.min.js$~third-party +@@||hit.gemius.pl/__/redataredir?$domain=ing.pl +@@||hit.interia.pl/iwa_core$script,~third-party +@@||iwa.iplsc.com/iwa.js$script +@@||login.ingbank.pl^*/satelliteLib-$script +@@||polfan.pl/app/vendor/fingerprint2.min.js$~third-party +@@||pushpushgo.com/js/$script,domain=centrumriviera.pl +@@||sascdn.com/tag/$script,domain=filmweb.pl +@@||smog.moja-ostroleka.pl/mapa/sensorsdata.json$~third-party +@@||staty.portalradiowy.pl/wstats/$script,third-party +!---------- Portuguese ---------- +@@||auth2.picpay.com^*/event-tracking.js$script,~third-party +@@||d.tailtarget.com/profiles.js$domain=superesportes.com.br +@@||google-analytics.com/urchin.js$domain=record.xl.pt +@@||players.fichub.com/plugins/adobe/$domain=24kitchen.pt +@@||serasaexperian.com.br/dist/scripts/fingerprint2.js$~third-party +@@||sibs.com/fingerprint/sfp2/fp2.min.js$script,domain=net24.bancomontepio.pt +@@||siteapps.com^$script,domain=netcombo.com.br +@@||tags.t.tailtarget.com/t3m.js?$domain=superesportes.com.br +!---------- Qatar ---------- +@@||src.litix.io/*/bitmovin-mux.js$domain=shoof.alkass.net +!---------- Romanian ---------- +@@||clarity.ms/tag/$script,domain=craiovaforum.ro +@@||content.adunity.com/aulib.js$script,domain=b1tv.ro +@@||imobiliare.ro/js/gtm.js$script,~third-party +@@||neo.btrl.ro/Scripts/services/fingerprint2.min.js$~third-party +@@||sentry.ftshp.xyz/api/3/envelope/?sentry_key=$xmlhttprequest,domain=footshop.ro +@@||stream.adunity.com^$xmlhttprequest,domain=b1tv.ro +!---------- Russian ---------- +@@||afisha.ru/proxy/videonetworkproxy.ashx?$xmlhttprequest +@@||chat.dbo-dengi.online/*/track?event=$script,domain=online.mtsdengi.ru +@@||criteo.net/js/ld/publishertag.js$domain=novayagazeta.ru +@@||dict.rambler.ru/fcgi-bin/$xmlhttprequest,domain=rambler.ru +@@||docs.rucml.ru/e.gif?$~third-party +@@||fplay.online/log_event$~third-party,xmlhttprequest +@@||k12-company.ru^*/statistics.js$script +@@||krok8.com/wp-content/plugins/pageviews/pageviews.min.js$script,~third-party +@@||labrc.pw/advstats/$xmlhttprequest +@@||mc.yandex.ru/metrika/tag.js$script,domain=auto.yandex|coddyschool.com +@@||mealty.ru/js/ga_events.js$~third-party +@@||my.beeline.ru/resources/js/webtrends.js?$script,~third-party +@@||mycargo.rzd.ru/dst/scripts/common/analytics-helper.js$~third-party +@@||online.bcs.ru^*/piwik.bcs.js$script +@@||openfpcdn.io/fingerprintjs/v3/iife.min.js$script,domain=mos03education.ru +@@||pay.citylink.pro/stats/services/$~third-party +@@||pladform.ru/dive/$xmlhttprequest +@@||pladform.ru/player$subdocument +@@||planetazdorovo.ru/pics/transparent_pixel.png$image,~third-party +@@||playep.pro/log_event$~third-party,xmlhttprequest +@@||player.smotrim.ru/js/piwik.js$~third-party +@@||player.vgtrk.com/js/stat.js? +@@||playy.online/log_event$~third-party,xmlhttprequest +@@||plplayer.online/log_event$~third-party,xmlhttprequest +@@||rtr-vesti.ru/pvc_cdn/js/stat.js$domain=player.vgtrk.com +@@||smotrim.ru/js/stat.js$script +@@||swa.mail.ru/cgi-bin/counters?$script +@@||toplay.biz/log_event$~third-party,xmlhttprequest +@@||ucoz.net/cgi/uutils.fcg?$script,third-party +@@||wargag.ru/public/js/counter.js? +@@||widget.myrentacar.me^$script,subdocument +@@||yandex.ru/metrika/tag.js$script,domain=kuchenland.ru +@@||yandex.ru/metrika/watch.js$domain=alean.ru|anoncer.net|nabortu.ru|samozapis-spb.ru|tv.yandex.ru|tvrain.ru +@@||yandex.ru/watch/$xmlhttprequest,domain=anoncer.net +@@||yandex.ru/webvisor/$xmlhttprequest,domain=anoncer.net +!---------- Spanish ---------- +@@||api.apolomedia.com/static/libs/event-tracking.min.js$script +@@||cdn.smartclip-services.com^$script,domain=cerebriti.com +@@||cloudfront.net/libs/amplitude-$script,domain=elconfidencial.com +@@||elconfidencial.com^*/AnalyticsEvent.js +@@||elconfidencial.com^*/EventTracker.js +@@||metrics.el-mundo.net/b/ss/$image,domain=expansion.com +@@||mi.tigo.com.co/plugins/cordova-plugin-fingerprint-aio/$script,~third-party +@@||registro.pse.com.co/PSENF/assets/js/fingerprint.min.js$script,domain=registro.pse.com.co +@@||spxl.socy.es^$script,xmlhttprequest,domain=3djuegosguias.com|3djuegospc.com|applesfera.com|compradiccion.com|directoalpaladar.com|espinof.com|genbeta.com|poprosa.com|trendencias.com|trendenciashombre.com|vidaextra.com|vitonica.com|xatakamovil.com +@@||static-cdn.hotjar.com^$script,domain=mercadopublico.cl +@@||static.hotjar.com/c/hotjar-$script,domain=mercadopublico.cl +!---------- Swedish ---------- +@@||lwadm.com/lw/pbjs?pid=$script,domain=sydostran.se +@@||picsearch.com/js/comscore.js$domain=dn.se +!---------- Thai ---------- +!---------- Turkish ---------- +@@||cdn.segmentify.com^$script,domain=gratis.com +@@||merlincdn.net^*/common/images/spacer.gif$image,domain=turkcell.com.tr +!---------- Ukrainian ---------- +@@||gemius.pl/gplayer.js$domain=tsn.ua +@@||multitest.ua/static/bower_components/boomerang/boomerang.js$~third-party +@@||privatbank.ua/content/*/fp2.min.js$~third-party +@@||uaprom.net/image/blank.gif?$image +!---------- Vietnamese ---------- +@@||netcoresmartech.com/smartechclient.js$domain=cgv.vn +!---------- Anti-Adblock ---------- +@@|http://r.i.ua/s?*&p*&l$image,domain=swordmaster.org diff --git a/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/pgl.yoyo.org/as/README.md b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/pgl.yoyo.org/as/README.md new file mode 100644 index 00000000..cf68d924 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/pgl.yoyo.org/as/README.md @@ -0,0 +1,29 @@ +: + +Site does encourage use of the list for noncommercial uses only, as per +https://pgl.yoyo.org/ ("everything licensed under the McRae General Public +License (version 4.r53) ") + +Licence can be found at https://pgl.yoyo.org/license/, and is copied below +for brevity: + + + Preamble + -------- + Your GRAN. + + + MCRAE GENERAL PUBLIC LICENSE (version 4.r53) + -------------------------------------------- + This license applies to any work containing a notice placed by the + copyright holder (that would be ME) saying it is uses the McRae + General Public License. "The work" refers to any such work. + + This license stipulates that it is strictly forbidden to redistribute + or use the work in any manner that could possibly be construed as + making anybody any money, or I'll sue you. No! You will NOT do that! + Okee? And if you don't agree with these terms, you can print out the + source to the work and stick it up your ARSE. + + Aye, but otherwise feel free to take "the work" and do what you like. + If you're TOO BLOODY LAZY to do it yourself, I cannae help it. OK? diff --git a/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/pgl.yoyo.org/as/serverlist b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/pgl.yoyo.org/as/serverlist new file mode 100644 index 00000000..ce0854aa --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/pgl.yoyo.org/as/serverlist @@ -0,0 +1,3528 @@ +# Blocklist for use with hosts files to block ads, trackers, and other nasty things +# +# For more information about this list, see: https://pgl.yoyo.org/adservers/ +# ---- +# last updated: Tue, 07 Jul 2026 13:50:36 GMT +# entries: 3514 +# format: hosts (hosts -- in hosts file format) +# credits: Peter Lowe - pgl@yoyo.org - https://pgl.yoyo.org/ - https://twitter.com/pgl +# this URL: https://pgl.yoyo.org/adservers/serverlist.php?hostformat=hosts&showintro=1&mimetype=plaintext +# Patreon: https://patreon.com/blocklist +# other formats: https://pgl.yoyo.org/adservers/formats.php +# policy: https://pgl.yoyo.org/adservers/policy.php +# +# start date: Fri, 06 Jun 2003 00:00:00 +127.0.0.1 101com.com +127.0.0.1 180hits.de +127.0.0.1 180searchassistant.com +127.0.0.1 1rx.io +127.0.0.1 2020mustang.com +127.0.0.1 207.net +127.0.0.1 247media.com +127.0.0.1 24log.com +127.0.0.1 24pm-affiliation.com +127.0.0.1 2linkpath.com +127.0.0.1 2mdn.net +127.0.0.1 2o7.net +127.0.0.1 2znp09oa.com +127.0.0.1 30ads.com +127.0.0.1 3337723.com +127.0.0.1 33across.com +127.0.0.1 360yield.com +127.0.0.1 3lift.com +127.0.0.1 3o9s.short.gy +127.0.0.1 4d5.net +127.0.0.1 4info.com +127.0.0.1 4jnzhl0d0.com +127.0.0.1 50websads.com +127.0.0.1 518ad.com +127.0.0.1 6sc.co +127.0.0.1 777partner.com +127.0.0.1 77tracking.com +127.0.0.1 7bpeople.com +127.0.0.1 7cnq.net +127.0.0.1 82o9v830.com +127.0.0.1 a-ads.com +127.0.0.1 a.mktw.net +127.0.0.1 a.sakh.com +127.0.0.1 a.ucoz.net +127.0.0.1 a.ucoz.ru +127.0.0.1 a.vartoken.com +127.0.0.1 a.vdo.ai +127.0.0.1 a.vfghd.com +127.0.0.1 a.vfgtb.com +127.0.0.1 a.xanga.com +127.0.0.1 a11.click +127.0.0.1 a135.wftv.com +127.0.0.1 a5.overclockers.ua +127.0.0.1 aa-metrics.beauty.hotpepper.jp +127.0.0.1 aa-metrics.recruit-card.jp +127.0.0.1 aa-metrics.trip-ai.jp +127.0.0.1 aaddzz.com +127.0.0.1 aax-eu-dub.amazon.com +127.0.0.1 aaxads.com +127.0.0.1 abacho.net +127.0.0.1 abc-ads.com +127.0.0.1 ablink.comms.trainline.com +127.0.0.1 ablink.info.wise.com +127.0.0.1 ablink.news.emails-puregym.com +127.0.0.1 ablinks.mail.hinge.co +127.0.0.1 aboardlevel.com +127.0.0.1 absolutering.com +127.0.0.1 absorbingband.com +127.0.0.1 abstractedauthority.com +127.0.0.1 abtasty.com +127.0.0.1 ac.rnm.ca +127.0.0.1 accountsdoor.com +127.0.0.1 acebunny.com +127.0.0.1 acemlnb.com +127.0.0.1 acobt.tech +127.0.0.1 acridtwist.com +127.0.0.1 actionsplash.com +127.0.0.1 actonsoftware.com +127.0.0.1 actualdeals.com +127.0.0.1 actuallysheep.com +127.0.0.1 actuallysnake.com +127.0.0.1 acuityads.com +127.0.0.1 acuityplatform.com +127.0.0.1 acustomizedgift.com +127.0.0.1 ad-balancer.at +127.0.0.1 ad-balancer.net +127.0.0.1 ad-cupid.com +127.0.0.1 ad-delivery.net +127.0.0.1 ad-pay.de +127.0.0.1 ad-rotator.com +127.0.0.1 ad-score.com +127.0.0.1 ad-server.gulasidorna.se +127.0.0.1 ad-space.net +127.0.0.1 ad-up.com +127.0.0.1 ad.71i.de +127.0.0.1 ad.a8.net +127.0.0.1 ad.abcnews.com +127.0.0.1 ad.abctv.com +127.0.0.1 ad.aboutwebservices.com +127.0.0.1 ad.abum.com +127.0.0.1 ad.admitad.com +127.0.0.1 ad.allboxing.ru +127.0.0.1 ad.altervista.org +127.0.0.1 ad.amgdgt.com +127.0.0.1 ad.anuntis.com +127.0.0.1 ad.bitmedia.io +127.0.0.1 ad.bizo.com +127.0.0.1 ad.bondage.com +127.0.0.1 ad.centrum.cz +127.0.0.1 ad.cgi.cz +127.0.0.1 ad.choiceradio.com +127.0.0.1 ad.cooks.com +127.0.0.1 ad.digitallook.com +127.0.0.1 ad.dnoticias.pt +127.0.0.1 ad.domainfactory.de +127.0.0.1 ad.exyws.org +127.0.0.1 ad.grafika.cz +127.0.0.1 ad.gt +127.0.0.1 ad.hbv.de +127.0.0.1 ad.hyena.cz +127.0.0.1 ad.iinfo.cz +127.0.0.1 ad.infoseek.com +127.0.0.1 ad.intl.xiaomi.com +127.0.0.1 ad.jetsoftware.com +127.0.0.1 ad.keenspace.com +127.0.0.1 ad.lgappstv.com +127.0.0.1 ad.liveinternet.ru +127.0.0.1 ad.lupa.cz +127.0.0.1 ad.mediastorm.hu +127.0.0.1 ad.mg +127.0.0.1 ad.missena.io +127.0.0.1 ad.musicmatch.com +127.0.0.1 ad.myapple.pl +127.0.0.1 ad.mynetreklam.com.streamprovider.net +127.0.0.1 ad.nachtagenten.de +127.0.0.1 ad.nettvservices.com +127.0.0.1 ad.nttnavi.co.jp +127.0.0.1 ad.nwt.cz +127.0.0.1 ad.period-calendar.com +127.0.0.1 ad.profiwin.de +127.0.0.1 ad.prv.pl +127.0.0.1 ad.reachlocal.com +127.0.0.1 ad.simgames.net +127.0.0.1 ad.style +127.0.0.1 ad.technoratimedia.com +127.0.0.1 ad.tv2.no +127.0.0.1 ad.universcine.com +127.0.0.1 ad.usatoday.com +127.0.0.1 ad.virtual-nights.com +127.0.0.1 ad.wavu.hu +127.0.0.1 ad.weatherbug.com +127.0.0.1 ad.wsod.com +127.0.0.1 ad.wz.cz +127.0.0.1 ad.xiaomi.com +127.0.0.1 ad.xmovies8.si +127.0.0.1 ad.xrea.com +127.0.0.1 ad.ztylez.com +127.0.0.1 ad0.bigmir.net +127.0.0.1 ad01.mediacorpsingapore.com +127.0.0.1 ad1.emule-project.org +127.0.0.1 ad1.kde.cz +127.0.0.1 ad2.iinfo.cz +127.0.0.1 ad2.lupa.cz +127.0.0.1 ad2.netriota.hu +127.0.0.1 ad2.nmm.de +127.0.0.1 ad2.xrea.com +127.0.0.1 ad3.iinfo.cz +127.0.0.1 ad3.xrea.com +127.0.0.1 ad4game.com +127.0.0.1 ad4mat.com +127.0.0.1 ad4mat.de +127.0.0.1 ad4mat.net +127.0.0.1 adabra.com +127.0.0.1 adaction.de +127.0.0.1 adadvisor.net +127.0.0.1 adalliance.io +127.0.0.1 adap.tv +127.0.0.1 adapt.tv +127.0.0.1 adbilty.me +127.0.0.1 adblade.com +127.0.0.1 adblade.org +127.0.0.1 adblockanalytics.com +127.0.0.1 adbooth.net +127.0.0.1 adbot.com +127.0.0.1 adbrite.com +127.0.0.1 adbroker.de +127.0.0.1 adbutler.com +127.0.0.1 adcampo.com +127.0.0.1 adcannyads.com +127.0.0.1 adcash.com +127.0.0.1 adcast.deviantart.com +127.0.0.1 adcel.co +127.0.0.1 adcell.de +127.0.0.1 adcenter.net +127.0.0.1 adclick.com +127.0.0.1 adclient1.tucows.com +127.0.0.1 adclixx.net +127.0.0.1 adcolony.com +127.0.0.1 adcomplete.com +127.0.0.1 adconion.com +127.0.0.1 adcontent.gamespy.com +127.0.0.1 adcovery.com +127.0.0.1 adcycle.com +127.0.0.1 add.newmedia.cz +127.0.0.1 addfreestats.com +127.0.0.1 addme.com +127.0.0.1 addressfriend.com +127.0.0.1 ade.clmbtech.com +127.0.0.1 adecn.com +127.0.0.1 adeimptrck.com +127.0.0.1 ademails.com +127.0.0.1 adengage.com +127.0.0.1 adetracking.com +127.0.0.1 adexchangegate.com +127.0.0.1 adexchangeprediction.com +127.0.0.1 adexpose.com +127.0.0.1 adext.inkclub.com +127.0.0.1 adf.ly +127.0.0.1 adfeed.marchex.com +127.0.0.1 adflight.com +127.0.0.1 adforce.com +127.0.0.1 adform.com +127.0.0.1 adform.net +127.0.0.1 adformdsp.net +127.0.0.1 adhaven.com +127.0.0.1 adhese.be +127.0.0.1 adhese.com +127.0.0.1 adhigh.net +127.0.0.1 adhub.media +127.0.0.1 adhunter.media +127.0.0.1 adimage.guardian.co.uk +127.0.0.1 adimages.been.com +127.0.0.1 adimages.carsoup.com +127.0.0.1 adimages.go.com +127.0.0.1 adimages.homestore.com +127.0.0.1 adimages.omroepzeeland.nl +127.0.0.1 adimages.sanomawsoy.fi +127.0.0.1 adimg.com.com +127.0.0.1 adimg.uimserv.net +127.0.0.1 adimg1.chosun.com +127.0.0.1 adimgs.sapo.pt +127.0.0.1 adingo.jp +127.0.0.1 adinjector.net +127.0.0.1 adinterax.com +127.0.0.1 adisfy.com +127.0.0.1 adition.com +127.0.0.1 adition.de +127.0.0.1 adition.net +127.0.0.1 adizio.com +127.0.0.1 adjix.com +127.0.0.1 adjug.com +127.0.0.1 adjuggler.com +127.0.0.1 adjuggler.yourdictionary.com +127.0.0.1 adjust.com +127.0.0.1 adjustnetwork.com +127.0.0.1 adk2.com +127.0.0.1 adkora.com +127.0.0.1 adktrack124.xyz +127.0.0.1 adland.ru +127.0.0.1 adlegend.com +127.0.0.1 adlightning.com +127.0.0.1 adlog.com.com +127.0.0.1 adloox.com +127.0.0.1 adlooxtracking.com +127.0.0.1 adlure.net +127.0.0.1 adm.fwmrm.net +127.0.0.1 admailtiser.com +127.0.0.1 adman.gr +127.0.0.1 adman.otenet.gr +127.0.0.1 admanagement.ch +127.0.0.1 admanager.btopenworld.com +127.0.0.1 admanager.carsoup.com +127.0.0.1 admanmedia.com +127.0.0.1 admantx.com +127.0.0.1 admarketplace.net +127.0.0.1 admarvel.com +127.0.0.1 admaster.com.cn +127.0.0.1 admatchly.com +127.0.0.1 adme2.click +127.0.0.1 admedia.com +127.0.0.1 admeld.com +127.0.0.1 admeridianads.com +127.0.0.1 admex.com +127.0.0.1 admidadsp.com +127.0.0.1 adminder.com +127.0.0.1 adminshop.com +127.0.0.1 admixer.net +127.0.0.1 admized.com +127.0.0.1 admob.com +127.0.0.1 admonitor.com +127.0.0.1 adn.lrb.co.uk +127.0.0.1 adnami.io +127.0.0.1 adnet.asahi.com +127.0.0.1 adnet.biz +127.0.0.1 adnet.de +127.0.0.1 adnet.ru +127.0.0.1 adnetasia.com +127.0.0.1 adnetwork.net +127.0.0.1 adnetworkperformance.com +127.0.0.1 adnews.maddog2000.de +127.0.0.1 adnium.com +127.0.0.1 adnxs-simple.com +127.0.0.1 adnxs.com +127.0.0.1 adocean.pl +127.0.0.1 adonspot.com +127.0.0.1 adopsboost.com +127.0.0.1 adoptum.net +127.0.0.1 adoric-om.com +127.0.0.1 adorigin.com +127.0.0.1 adotmob.com +127.0.0.1 adpepper.dk +127.0.0.1 adpepper.nl +127.0.0.1 adperium.com +127.0.0.1 adpia.vn +127.0.0.1 adplxmd.com +127.0.0.1 adprofits.ru +127.0.0.1 adpushup.com +127.0.0.1 adrazzi.com +127.0.0.1 adreactor.com +127.0.0.1 adrecover.com +127.0.0.1 adrecreate.com +127.0.0.1 adremedy.com +127.0.0.1 adreporting.com +127.0.0.1 adrevolver.com +127.0.0.1 adriver.ru +127.0.0.1 adrolays.de +127.0.0.1 adrotate.de +127.0.0.1 adrotic.girlonthenet.com +127.0.0.1 adrta.com +127.0.0.1 ads-backend.chaincliq.com +127.0.0.1 ads-bilek.com +127.0.0.1 ads-dev.pinterest.com +127.0.0.1 ads-game-187f4.firebaseapp.com +127.0.0.1 ads-img.mozilla.org +127.0.0.1 ads-portal-cdn.vidaatv.net +127.0.0.1 ads-twitter.com +127.0.0.1 ads.365.mk +127.0.0.1 ads.5ci.lt +127.0.0.1 ads.73dpi.com +127.0.0.1 ads.aavv.com +127.0.0.1 ads.abovetopsecret.com +127.0.0.1 ads.aceweb.net +127.0.0.1 ads.acpc.cat +127.0.0.1 ads.acrosspf.com +127.0.0.1 ads.activestate.com +127.0.0.1 ads.adfox.ru +127.0.0.1 ads.administrator.de +127.0.0.1 ads.adred.de +127.0.0.1 ads.adstream.com.ro +127.0.0.1 ads.adultfriendfinder.com +127.0.0.1 ads.advance.net +127.0.0.1 ads.adverline.com +127.0.0.1 ads.alt.com +127.0.0.1 ads.amdmb.com +127.0.0.1 ads.amigos.com +127.0.0.1 ads.annabac.com +127.0.0.1 ads.apn.co.nz +127.0.0.1 ads.appsgeyser.com +127.0.0.1 ads.as4x.tmcs.net +127.0.0.1 ads.as4x.tmcs.ticketmaster.com +127.0.0.1 ads.asiafriendfinder.com +127.0.0.1 ads.avazu.net +127.0.0.1 ads.bb59.ru +127.0.0.1 ads.betfair.com +127.0.0.1 ads.bigchurch.com +127.0.0.1 ads.bigfoot.com +127.0.0.1 ads.bing.com +127.0.0.1 ads.bittorrent.com +127.0.0.1 ads.blog.com +127.0.0.1 ads.bluemountain.com +127.0.0.1 ads.boerding.com +127.0.0.1 ads.boylesports.com +127.0.0.1 ads.canalblog.com +127.0.0.1 ads.casinocity.com +127.0.0.1 ads.casumoaffiliates.com +127.0.0.1 ads.cbc.ca +127.0.0.1 ads.cc +127.0.0.1 ads.cc-dt.com +127.0.0.1 ads.centraliprom.com +127.0.0.1 ads.channel4.com +127.0.0.1 ads.cheabit.com +127.0.0.1 ads.citymagazine.si +127.0.0.1 ads.clasificadox.com +127.0.0.1 ads.co.com +127.0.0.1 ads.colombiaonline.com +127.0.0.1 ads.com.com +127.0.0.1 ads.comeon.com +127.0.0.1 ads.creative-serving.com +127.0.0.1 ads.cybersales.cz +127.0.0.1 ads.dada.it +127.0.0.1 ads.dailycamera.com +127.0.0.1 ads.deltha.hu +127.0.0.1 ads.dennisnet.co.uk +127.0.0.1 ads.desmoinesregister.com +127.0.0.1 ads.deviantart.com +127.0.0.1 ads.devmates.com +127.0.0.1 ads.digital-digest.com +127.0.0.1 ads.digitalmedianet.com +127.0.0.1 ads.digitalpoint.com +127.0.0.1 ads.doit.com.cn +127.0.0.1 ads.domeus.com +127.0.0.1 ads.eagletribune.com +127.0.0.1 ads.easy-forex.com +127.0.0.1 ads.economist.com +127.0.0.1 ads.elcarado.com +127.0.0.1 ads.electrocelt.com +127.0.0.1 ads.emdee.ca +127.0.0.1 ads.emirates.net.ae +127.0.0.1 ads.epi.sk +127.0.0.1 ads.epltalk.com +127.0.0.1 ads.eu.msn.com +127.0.0.1 ads.fairfax.com.au +127.0.0.1 ads.fastcomgroup.it +127.0.0.1 ads.femmefab.nl +127.0.0.1 ads.ferianc.com +127.0.0.1 ads.filmup.com +127.0.0.1 ads.financialcontent.com +127.0.0.1 ads.flooble.com +127.0.0.1 ads.fool.com +127.0.0.1 ads.footymad.net +127.0.0.1 ads.forbes.net +127.0.0.1 ads.formit.cz +127.0.0.1 ads.fortunecity.com +127.0.0.1 ads.fotosidan.se +127.0.0.1 ads.friendfinder.com +127.0.0.1 ads.gamecity.net +127.0.0.1 ads.gamespyid.com +127.0.0.1 ads.gamigo.de +127.0.0.1 ads.gaming-universe.de +127.0.0.1 ads.gaming1.com +127.0.0.1 ads.getlucky.com +127.0.0.1 ads.gld.dk +127.0.0.1 ads.gmodules.com +127.0.0.1 ads.goyk.com +127.0.0.1 ads.gradfinder.com +127.0.0.1 ads.grindinggears.com +127.0.0.1 ads.gsm-exchange.com +127.0.0.1 ads.gsmexchange.com +127.0.0.1 ads.guardian.co.uk +127.0.0.1 ads.guardianunlimited.co.uk +127.0.0.1 ads.hbv.de +127.0.0.1 ads.hearstmags.com +127.0.0.1 ads.heartlight.org +127.0.0.1 ads.hollywood.com +127.0.0.1 ads.horsehero.com +127.0.0.1 ads.hsoub.com +127.0.0.1 ads.ibest.com.br +127.0.0.1 ads.ibryte.com +127.0.0.1 ads.icq.com +127.0.0.1 ads.ign.com +127.0.0.1 ads.imagistica.com +127.0.0.1 ads.imgur.com +127.0.0.1 ads.independent.com.mt +127.0.0.1 ads.infi.net +127.0.0.1 ads.internic.co.il +127.0.0.1 ads.ipowerweb.com +127.0.0.1 ads.itv.com +127.0.0.1 ads.jewishfriendfinder.com +127.0.0.1 ads.jobsite.co.uk +127.0.0.1 ads.justhungry.com +127.0.0.1 ads.kabooaffiliates.com +127.0.0.1 ads.kaktuz.net +127.0.0.1 ads.kelbymediagroup.com +127.0.0.1 ads.kinxxx.com +127.0.0.1 ads.kompass.com +127.0.0.1 ads.krawall.de +127.0.0.1 ads.leovegas.com +127.0.0.1 ads.lesbianpersonals.com +127.0.0.1 ads.liberte.pl +127.0.0.1 ads.linkedin.com +127.0.0.1 ads.livenation.com +127.0.0.1 ads.ma7.tv +127.0.0.1 ads.mail.bg +127.0.0.1 ads.massinfra.nl +127.0.0.1 ads.mcafee.com +127.0.0.1 ads.mediaodyssey.com +127.0.0.1 ads.mediasmart.es +127.0.0.1 ads.medienhaus.de +127.0.0.1 ads.meetcelebs.com +127.0.0.1 ads.mgnetwork.com +127.0.0.1 ads.miarroba.com +127.0.0.1 ads.mic.com +127.0.0.1 ads.mmania.com +127.0.0.1 ads.mobilebet.com +127.0.0.1 ads.mozilla.org +127.0.0.1 ads.msn.com +127.0.0.1 ads.muslimehelfen.org +127.0.0.1 ads.mvscoelho.com +127.0.0.1 ads.myadv.org +127.0.0.1 ads.ndtv1.com +127.0.0.1 ads.networksolutions.com +127.0.0.1 ads.newgrounds.com +127.0.0.1 ads.newmedia.cz +127.0.0.1 ads.newsint.co.uk +127.0.0.1 ads.newsquest.co.uk +127.0.0.1 ads.nj.com +127.0.0.1 ads.nola.com +127.0.0.1 ads.nordichardware.com +127.0.0.1 ads.nordichardware.se +127.0.0.1 ads.nyi.net +127.0.0.1 ads.nytimes.com +127.0.0.1 ads.nyx.cz +127.0.0.1 ads.nzcity.co.nz +127.0.0.1 ads.o2.pl +127.0.0.1 ads.oddschecker.com +127.0.0.1 ads.okcimg.com +127.0.0.1 ads.ole.com +127.0.0.1 ads.oneplace.com +127.0.0.1 ads.opensubtitles.org +127.0.0.1 ads.optusnet.com.au +127.0.0.1 ads.outpersonals.com +127.0.0.1 ads.oxyshop.cz +127.0.0.1 ads.passion.com +127.0.0.1 ads.paymonex.net +127.0.0.1 ads.pexi.nl +127.0.0.1 ads.phpclasses.org +127.0.0.1 ads.pinterest.com +127.0.0.1 ads.planet.nl +127.0.0.1 ads.pni.com +127.0.0.1 ads.printscr.com +127.0.0.1 ads.prisacom.com +127.0.0.1 ads.prod.webservices.mozgcp.net +127.0.0.1 ads.program3.com +127.0.0.1 ads.psd2html.com +127.0.0.1 ads.pubmatic.com +127.0.0.1 ads.quoka.de +127.0.0.1 ads.radio1.lv +127.0.0.1 ads.recoletos.es +127.0.0.1 ads.rediff.com +127.0.0.1 ads.redlightcenter.com +127.0.0.1 ads.revjet.com +127.0.0.1 ads.reward-hunt.com +127.0.0.1 ads.samsung.com +127.0.0.1 ads.saymedia.com +127.0.0.1 ads.schmoozecom.net +127.0.0.1 ads.scifi.com +127.0.0.1 ads.seniorfriendfinder.com +127.0.0.1 ads.servebom.com +127.0.0.1 ads.shizmoo.com +127.0.0.1 ads.shopstyle.com +127.0.0.1 ads.sift.co.uk +127.0.0.1 ads.sjon.info +127.0.0.1 ads.smartclick.com +127.0.0.1 ads.socialtheater.com +127.0.0.1 ads.soft32.com +127.0.0.1 ads.soweb.gr +127.0.0.1 ads.space.com +127.0.0.1 ads.sun.com +127.0.0.1 ads.suomiautomaatti.com +127.0.0.1 ads.supplyframe.com +127.0.0.1 ads.syscdn.de +127.0.0.1 ads.themovienation.com +127.0.0.1 ads.thestar.com +127.0.0.1 ads.thrillsaffiliates.com +127.0.0.1 ads.tiktok.com +127.0.0.1 ads.tmcs.net +127.0.0.1 ads.todoti.com.br +127.0.0.1 ads.toplayaffiliates.com +127.0.0.1 ads.townhall.com +127.0.0.1 ads.travelaudience.com +127.0.0.1 ads.trinitymirror.co.uk +127.0.0.1 ads.tso.dennisnet.co.uk +127.0.0.1 ads.twitter.com +127.0.0.1 ads.twojatv.info +127.0.0.1 ads.ultimate-guitar.com +127.0.0.1 ads.uncrate.com +127.0.0.1 ads.unison.bg +127.0.0.1 ads.usatoday.com +127.0.0.1 ads.uxs.at +127.0.0.1 ads.v-lazer.com +127.0.0.1 ads.verticalresponse.com +127.0.0.1 ads.vgchartz.com +127.0.0.1 ads.virtual-nights.com +127.0.0.1 ads.virtuopolitan.com +127.0.0.1 ads.vnumedia.com +127.0.0.1 ads.walkiberia.com +127.0.0.1 ads.watson.ch +127.0.0.1 ads.weather.ca +127.0.0.1 ads.web.de +127.0.0.1 ads.webinak.sk +127.0.0.1 ads.webmasterpoint.org +127.0.0.1 ads.whoishostingthis.com +127.0.0.1 ads.wiezoekje.nl +127.0.0.1 ads.wikia.nocookie.net +127.0.0.1 ads.wineenthusiast.com +127.0.0.1 ads.wwe.biz +127.0.0.1 ads.xhamster.com +127.0.0.1 ads.xtra.co.nz +127.0.0.1 ads.yahoo.com +127.0.0.1 ads.yimg.com +127.0.0.1 ads.yldmgrimg.net +127.0.0.1 ads.youtube.com +127.0.0.1 ads.yumenetworks.com +127.0.0.1 ads1-adnow.com +127.0.0.1 ads1.msn.com +127.0.0.1 ads1.virtual-nights.com +127.0.0.1 ads10.speedbit.com +127.0.0.1 ads180.com +127.0.0.1 ads2.brazzers.com +127.0.0.1 ads2.contentabc.com +127.0.0.1 ads2.femmefab.nl +127.0.0.1 ads2.gamecity.net +127.0.0.1 ads2.hsoub.com +127.0.0.1 ads2.virtual-nights.com +127.0.0.1 ads2.xnet.cz +127.0.0.1 ads2004.treiberupdate.de +127.0.0.1 ads24h.net +127.0.0.1 ads3-adnow.com +127.0.0.1 ads3.gamecity.net +127.0.0.1 ads3.virtual-nights.com +127.0.0.1 ads4.gamecity.net +127.0.0.1 ads4.virtual-nights.com +127.0.0.1 ads4homes.com +127.0.0.1 ads5.virtual-nights.com +127.0.0.1 ads6.gamecity.net +127.0.0.1 ads7.gamecity.net +127.0.0.1 adsafeprotected.com +127.0.0.1 adsatt.abc.starwave.com +127.0.0.1 adsatt.abcnews.starwave.com +127.0.0.1 adsatt.espn.go.com +127.0.0.1 adsatt.espn.starwave.com +127.0.0.1 adsatt.go.starwave.com +127.0.0.1 adsby.bidtheatre.com +127.0.0.1 adsbydelema.com +127.0.0.1 adscale.de +127.0.0.1 adscholar.com +127.0.0.1 adscience.nl +127.0.0.1 adsco.re +127.0.0.1 adscpm.com +127.0.0.1 adsdaq.com +127.0.0.1 adsdk.yandex.ru +127.0.0.1 adsend.de +127.0.0.1 adsensecustomsearchads.com +127.0.0.1 adserve.ams.rhythmxchange.com +127.0.0.1 adserve.gkeurope.de +127.0.0.1 adserve.io +127.0.0.1 adserve.jbs.org +127.0.0.1 adserver.71i.de +127.0.0.1 adserver.adultfriendfinder.com +127.0.0.1 adserver.adverty.com +127.0.0.1 adserver.anawe.cz +127.0.0.1 adserver.ariase.org +127.0.0.1 adserver.bdoce.cl +127.0.0.1 adserver.betandwin.de +127.0.0.1 adserver.bing.com +127.0.0.1 adserver.bizedge.com +127.0.0.1 adserver.bizhat.com +127.0.0.1 adserver.break-even.it +127.0.0.1 adserver.cams.com +127.0.0.1 adserver.cdnstream.com +127.0.0.1 adserver.cherryfind.co.uk +127.0.0.1 adserver.com +127.0.0.1 adserver.diariodosertao.com.br +127.0.0.1 adserver.digitoday.com +127.0.0.1 adserver.echdk.pl +127.0.0.1 adserver.friendfinder.com +127.0.0.1 adserver.generationiron.com +127.0.0.1 adserver.hwupgrade.it +127.0.0.1 adserver.ilango.de +127.0.0.1 adserver.industryarena.com +127.0.0.1 adserver.info7.mx +127.0.0.1 adserver.irishwebmasterforum.com +127.0.0.1 adserver.janes.com +127.0.0.1 adserver.kontent.com +127.0.0.1 adserver.mobi +127.0.0.1 adserver.news.com.au +127.0.0.1 adserver.nydailynews.com +127.0.0.1 adserver.o2.pl +127.0.0.1 adserver.oddschecker.com +127.0.0.1 adserver.omroepzeeland.nl +127.0.0.1 adserver.otthonom.hu +127.0.0.1 adserver.pampa.com.br +127.0.0.1 adserver.piksel.mk +127.0.0.1 adserver.pl +127.0.0.1 adserver.portugalmail.net +127.0.0.1 adserver.pressboard.ca +127.0.0.1 adserver.sanomawsoy.fi +127.0.0.1 adserver.sciflicks.com +127.0.0.1 adserver.scr.sk +127.0.0.1 adserver.smgfiles.com +127.0.0.1 adserver.trojaner-info.de +127.0.0.1 adserver.tupolska.com +127.0.0.1 adserver.twitpic.com +127.0.0.1 adserver.virginmedia.com +127.0.0.1 adserver.waggonerguide.com +127.0.0.1 adserver01.de +127.0.0.1 adserverplus.com +127.0.0.1 adserverpub.com +127.0.0.1 adserversolutions.com +127.0.0.1 adserverxxl.de +127.0.0.1 adservice.google.com +127.0.0.1 adservice.google.com.mt +127.0.0.1 adserving.unibet.com +127.0.0.1 adservingfront.com +127.0.0.1 adservrs.com +127.0.0.1 adservrs.com.edgekey.net +127.0.0.1 adsfac.eu +127.0.0.1 adsfac.net +127.0.0.1 adsfac.us +127.0.0.1 adsflowprime.top +127.0.0.1 adshrink.it +127.0.0.1 adside.com +127.0.0.1 adsiduous.com +127.0.0.1 adskeeper.co.uk +127.0.0.1 adskeeper.com +127.0.0.1 adsklick.de +127.0.0.1 adsmart.net +127.0.0.1 adsmartracker.com +127.0.0.1 adsmetadata.startappservice.com +127.0.0.1 adsmogo.com +127.0.0.1 adsnative.com +127.0.0.1 adsoftware.com +127.0.0.1 adsolut.in +127.0.0.1 adspeed.net +127.0.0.1 adspirit.de +127.0.0.1 adsponse.de +127.0.0.1 adspredictiv.com +127.0.0.1 adspsp.com +127.0.0.1 adsroller.com +127.0.0.1 adsrv.deviantart.com +127.0.0.1 adsrv.eacdn.com +127.0.0.1 adsrv.iol.co.za +127.0.0.1 adsrv.kobi.tv +127.0.0.1 adsrv.moebelmarkt.tv +127.0.0.1 adsrv2.swidnica24.pl +127.0.0.1 adsrvr.org +127.0.0.1 adstacks.in +127.0.0.1 adstanding.com +127.0.0.1 adstat.4u.pl +127.0.0.1 adstest.weather.com +127.0.0.1 adstrategy-elb.go2cloud.org +127.0.0.1 adstub.net +127.0.0.1 adsupply.com +127.0.0.1 adswizz.com +127.0.0.1 adsxyz.com +127.0.0.1 adsynergy.com +127.0.0.1 adsys.townnews.com +127.0.0.1 adsystem.simplemachines.org +127.0.0.1 adt598.com +127.0.0.1 adtech.com +127.0.0.1 adtech.de +127.0.0.1 adtechjp.com +127.0.0.1 adtechus.com +127.0.0.1 adtegrity.net +127.0.0.1 adthis.com +127.0.0.1 adthrive.com +127.0.0.1 adtiger.de +127.0.0.1 adtilt.com +127.0.0.1 adtng.com +127.0.0.1 adtology.com +127.0.0.1 adtoma.com +127.0.0.1 adtrace.org +127.0.0.1 adtrack.voicestar.com +127.0.0.1 adtraction.com +127.0.0.1 adtrade.net +127.0.0.1 adtrk1.com +127.0.0.1 adultadvertising.com +127.0.0.1 adv-adserver.com +127.0.0.1 adv.donejty.pl +127.0.0.1 adv.freeonline.it +127.0.0.1 adv.hwupgrade.it +127.0.0.1 adv.mpvc.it +127.0.0.1 adv.nexthardware.com +127.0.0.1 adv.webmd.com +127.0.0.1 adv.wp.pl +127.0.0.1 adv.yo.cz +127.0.0.1 advangelists.com +127.0.0.1 advariant.com +127.0.0.1 adventory.com +127.0.0.1 adventurousamount.com +127.0.0.1 advert.bayarea.com +127.0.0.1 advert.dyna.ultraweb.hu +127.0.0.1 adverticum.com +127.0.0.1 adverticum.net +127.0.0.1 advertipros.com +127.0.0.1 advertise.com +127.0.0.1 advertiseireland.com +127.0.0.1 advertiserurl.com +127.0.0.1 advertising.amazon.de +127.0.0.1 advertising.com +127.0.0.1 advertisingbanners.com +127.0.0.1 advertisingbox.com +127.0.0.1 advertmarket.com +127.0.0.1 advertmedia.de +127.0.0.1 advertpro.ya.com +127.0.0.1 advertracker.com +127.0.0.1 advertserve.com +127.0.0.1 advertwizard.com +127.0.0.1 advideo.uimserv.net +127.0.0.1 adview.com +127.0.0.1 advisormedia.cz +127.0.0.1 adviva.net +127.0.0.1 advnt.com +127.0.0.1 adwebone.com +127.0.0.1 adwhirl.com +127.0.0.1 adworldnetwork.com +127.0.0.1 adworx.at +127.0.0.1 adworx.nl +127.0.0.1 adx.gayboy.at +127.0.0.1 adxpansion.com +127.0.0.1 adxpose.com +127.0.0.1 adxxxxxmost.co +127.0.0.1 adyoulike.com +127.0.0.1 adz.rashflash.com +127.0.0.1 adzbazar.com +127.0.0.1 adzerk.net +127.0.0.1 adzerk.s3.amazonaws.com +127.0.0.1 adzestocp.com +127.0.0.1 aerialapps.com +127.0.0.1 aerserv.com +127.0.0.1 af-ad.co.uk +127.0.0.1 affec.tv +127.0.0.1 affectionknit.com +127.0.0.1 affili.net +127.0.0.1 affiliate.1800flowers.com +127.0.0.1 affiliate.dtiserv.com +127.0.0.1 affiliate.travelnow.com +127.0.0.1 affiliate.treated.com +127.0.0.1 affiliatefuture.com +127.0.0.1 affiliates.allposters.com +127.0.0.1 affiliates.babylon.com +127.0.0.1 affiliates.streamray.com +127.0.0.1 affiliates.thinkhost.net +127.0.0.1 affiliates.thrixxx.com +127.0.0.1 affiliates.ultrahosting.com +127.0.0.1 affiliatetracking.com +127.0.0.1 affiliatetracking.net +127.0.0.1 affiliatewindow.com +127.0.0.1 afflnx.com +127.0.0.1 afftracking.justanswer.com +127.0.0.1 afraidlanguage.com +127.0.0.1 agencysignals.com +127.0.0.1 agkn.com +127.0.0.1 ah-ha.com +127.0.0.1 ahalogy.com +127.0.0.1 aheadday.com +127.0.0.1 aim4media.com +127.0.0.1 airplanecoffee.com +127.0.0.1 airpush.com +127.0.0.1 aistat.net +127.0.0.1 ak0gsh40.com +127.0.0.1 alchemist.go2cloud.org +127.0.0.1 alclick.com +127.0.0.1 alenty.com +127.0.0.1 alexa-sitestats.s3.amazonaws.com +127.0.0.1 algorix.co +127.0.0.1 aliasanvil.com +127.0.0.1 alikeaddition.com +127.0.0.1 alipromo.com +127.0.0.1 alluringbucket.com +127.0.0.1 aloofmetal.com +127.0.0.1 aloofvest.com +127.0.0.1 alphonso.tv +127.0.0.1 als-svc.nytimes.com +127.0.0.1 amazingcounters.com +127.0.0.1 amazon-adsystem.com +127.0.0.1 americash.com +127.0.0.1 amidsttruly.com +127.0.0.1 amung.us +127.0.0.1 analytics-fe.digital-cloud-prem.medallia.eu +127.0.0.1 analytics-production.hapyak.com +127.0.0.1 analytics.adpost.org +127.0.0.1 analytics.algoepico.net +127.0.0.1 analytics.bitrix.info +127.0.0.1 analytics.cloudron.io +127.0.0.1 analytics.ext.go-tellm.com +127.0.0.1 analytics.google.com +127.0.0.1 analytics.htmedia.in +127.0.0.1 analytics.inlinemanual.com +127.0.0.1 analytics.jst.ai +127.0.0.1 analytics.justuno.com +127.0.0.1 analytics.lucid.app +127.0.0.1 analytics.mailmunch.co +127.0.0.1 analytics.mobile.yandex.net +127.0.0.1 analytics.momentum-institut.at +127.0.0.1 analytics.myfinance.com +127.0.0.1 analytics.ostr.io +127.0.0.1 analytics.phando.com +127.0.0.1 analytics.picsart.com +127.0.0.1 analytics.pinterest.com +127.0.0.1 analytics.pointdrive.linkedin.com +127.0.0.1 analytics.poolshool.com +127.0.0.1 analytics.posttv.com +127.0.0.1 analytics.santander.co.uk +127.0.0.1 analytics.swiggy.com +127.0.0.1 analytics.tiktok.com +127.0.0.1 analytics.xelondigital.com +127.0.0.1 analytics.yahoo.com +127.0.0.1 analyticsapi.happypancake.net +127.0.0.1 ancientact.com +127.0.0.1 androiddownload.net +127.0.0.1 aniview.com +127.0.0.1 annonser.dagbladet.no +127.0.0.1 annoyedairport.com +127.0.0.1 annoyingacoustics.com +127.0.0.1 anrdoezrs.net +127.0.0.1 anstrex.com +127.0.0.1 anxiousapples.com +127.0.0.1 api.affiliations.site +127.0.0.1 api.amplitude.com +127.0.0.1 api.appmetrica.yandex.ru +127.0.0.1 api.eu.amplitude.com +127.0.0.1 api.intensifier.de +127.0.0.1 api.iterable.com +127.0.0.1 api.kameleoon.com +127.0.0.1 api.lab.amplitude.com +127.0.0.1 api.rudderlabs.com +127.0.0.1 api.swetrix.com +127.0.0.1 api2.amplitude.com +127.0.0.1 apolloprogram.io +127.0.0.1 app-analytics-v2.snapchat.com +127.0.0.1 app-analytics.snapchat.com +127.0.0.1 app-measurement.com +127.0.0.1 app.pendo.io +127.0.0.1 app2.salesmanago.pl +127.0.0.1 appboycdn.com +127.0.0.1 applovin.com +127.0.0.1 appsflyer.com +127.0.0.1 aps.hearstnp.com +127.0.0.1 apsalar.com +127.0.0.1 aptabase.com +127.0.0.1 apture.com +127.0.0.1 apu.samsungelectronics.com +127.0.0.1 aquaticowl.com +127.0.0.1 aralego.com +127.0.0.1 arc1.msn.com +127.0.0.1 archswimming.com +127.0.0.1 ard.xxxblackbook.com +127.0.0.1 aromamirror.com +127.0.0.1 as.webmd.com +127.0.0.1 as2.adserverhd.com +127.0.0.1 aserv.motorsgate.com +127.0.0.1 asewlfjqwlflkew.com +127.0.0.1 askdriver.com +127.0.0.1 aso1.net +127.0.0.1 assets1.exgfnetwork.com +127.0.0.1 assoc-amazon.com +127.0.0.1 aswpapius.com +127.0.0.1 aswpsdkus.com +127.0.0.1 async.gsyndication.com +127.0.0.1 at-o.net +127.0.0.1 atdmt.com +127.0.0.1 athena-ads.wikia.com +127.0.0.1 ato.mx +127.0.0.1 attractionbanana.com +127.0.0.1 attribution.report +127.0.0.1 atwola.com +127.0.0.1 auctionads.com +127.0.0.1 auctionads.net +127.0.0.1 aud.pubmatic.com +127.0.0.1 audience.media +127.0.0.1 audience2media.com +127.0.0.1 audienceinsights.com +127.0.0.1 audio.ad +127.0.0.1 audit.median.hu +127.0.0.1 audit.webinform.hu +127.0.0.1 augur.io +127.0.0.1 auto-bannertausch.de +127.0.0.1 avalonalbum.com +127.0.0.1 avazutracking.net +127.0.0.1 avenuea.com +127.0.0.1 avocet.io +127.0.0.1 awempire.com +127.0.0.1 awin1.com +127.0.0.1 awstrack.me +127.0.0.1 awzbijw.com +127.0.0.1 axonix.com +127.0.0.1 ay.delivery +127.0.0.1 ayads.co +127.0.0.1 b-s.tercept.com +127.0.0.1 b.videoamp.com +127.0.0.1 b3.videoamp.com +127.0.0.1 ba.afl.rakuten.co.jp +127.0.0.1 backbeatmedia.com +127.0.0.1 backtension.com +127.0.0.1 bagsurprise.com +127.0.0.1 banik.redigy.cz +127.0.0.1 banner.ambercoastcasino.com +127.0.0.1 banner.cotedazurpalace.com +127.0.0.1 banner.easyspace.com +127.0.0.1 banner.elisa.net +127.0.0.1 banner.finzoom.ro +127.0.0.1 banner.goldenpalace.com +127.0.0.1 banner.inyourpocket.com +127.0.0.1 banner.linux.se +127.0.0.1 banner.media-system.de +127.0.0.1 banner.nixnet.cz +127.0.0.1 banner.noblepoker.com +127.0.0.1 banner.northsky.com +127.0.0.1 banner.reinstil.de +127.0.0.1 banner.tanto.de +127.0.0.1 banner.titan-dsl.de +127.0.0.1 banner10.zetasystem.dk +127.0.0.1 bannerads.de +127.0.0.1 bannerboxes.com +127.0.0.1 bannerconnect.com +127.0.0.1 bannerconnect.net +127.0.0.1 bannergrabber.internet.gr +127.0.0.1 bannerimage.com +127.0.0.1 bannermall.com +127.0.0.1 bannerpower.com +127.0.0.1 banners.adultfriendfinder.com +127.0.0.1 banners.amigos.com +127.0.0.1 banners.asiafriendfinder.com +127.0.0.1 banners.babylon-x.com +127.0.0.1 banners.bol.com.br +127.0.0.1 banners.cams.com +127.0.0.1 banners.czi.cz +127.0.0.1 banners.direction-x.com +127.0.0.1 banners.freett.com +127.0.0.1 banners.friendfinder.com +127.0.0.1 banners.getiton.com +127.0.0.1 banners.iq.pl +127.0.0.1 banners.passion.com +127.0.0.1 banners.payserve.com +127.0.0.1 banners.resultonline.com +127.0.0.1 banners.sys-con.com +127.0.0.1 banners.thomsonlocal.com +127.0.0.1 banners.virtuagirlhd.com +127.0.0.1 bannerserver.com +127.0.0.1 bannersng.yell.com +127.0.0.1 bannerspace.com +127.0.0.1 bannerswap.com +127.0.0.1 bannertrack.net +127.0.0.1 bannery.cz +127.0.0.1 bannieres.wdmedia.net +127.0.0.1 bans.bride.ru +127.0.0.1 baremetrics.com +127.0.0.1 barnesandnoble.bfast.com +127.0.0.1 basebanner.com +127.0.0.1 basketballbelieve.com +127.0.0.1 baskettexture.com +127.0.0.1 bastingart.com +127.0.0.1 bat.bing.com +127.0.0.1 bbelements.com +127.0.0.1 bbn.img.com.ua +127.0.0.1 beachfront.com +127.0.0.1 beacon.gu-web.net +127.0.0.1 beacon.netflix.com +127.0.0.1 beacons.gcp.gvt2.com +127.0.0.1 beacons.gvt2.com +127.0.0.1 bebi.com +127.0.0.1 beemray.com +127.0.0.1 begun.ru +127.0.0.1 behavioralengine.com +127.0.0.1 belstat.com +127.0.0.1 belstat.nl +127.0.0.1 benefits.sovendus.com +127.0.0.1 benfly.net +127.0.0.1 berp.com +127.0.0.1 bespoke.iln8.net +127.0.0.1 bestboundary.com +127.0.0.1 bestbuy.7tiv.net +127.0.0.1 bewilderedblade.com +127.0.0.1 bfmio.com +127.0.0.1 bhcumsc.com +127.0.0.1 bid.pubmatic.com +127.0.0.1 bidbarrel.cbsnews.com +127.0.0.1 bidclix.com +127.0.0.1 bidclix.net +127.0.0.1 bidpapers.com +127.0.0.1 bidr.io +127.0.0.1 bidsopt.com +127.0.0.1 bidswitch.net +127.0.0.1 bidtellect.com +127.0.0.1 bidvertiser.com +127.0.0.1 big-bang-ads.com +127.0.0.1 bigbangmedia.com +127.0.0.1 bigclicks.com +127.0.0.1 bigfishapparel.com +127.0.0.1 bigreal.org +127.0.0.1 bigworldfashion.com +127.0.0.1 billboard.cz +127.0.0.1 billtable.com +127.0.0.1 birthdaybelief.com +127.0.0.1 bitmedianetwork.com +127.0.0.1 bizible.com +127.0.0.1 bizographics.com +127.0.0.1 bizrate.com +127.0.0.1 bizzclick.com +127.0.0.1 bkrtx.com +127.0.0.1 bleachbubble.com +127.0.0.1 blingbucks.com +127.0.0.1 blis.com +127.0.0.1 blockadblock.com +127.0.0.1 blogads.com +127.0.0.1 blogcounter.de +127.0.0.1 blogherads.com +127.0.0.1 blogtoplist.se +127.0.0.1 blogtopsites.com +127.0.0.1 blueconic.com +127.0.0.1 blueconic.net +127.0.0.1 bluekai.com +127.0.0.1 bluelithium.com +127.0.0.1 bluenest.net +127.0.0.1 bluewhaleweb.com +127.0.0.1 blushingbeast.com +127.0.0.1 blushingbread.com +127.0.0.1 bm.annonce.cz +127.0.0.1 bn.bfast.com +127.0.0.1 bnrs.ilm.ee +127.0.0.1 boffoadsapi.com +127.0.0.1 boilingbeetle.com +127.0.0.1 boilingmadsoup.com +127.0.0.1 bongacash.com +127.0.0.1 boomads.com +127.0.0.1 boomtrain.com +127.0.0.1 boredcrown.com +127.0.0.1 boudja.com +127.0.0.1 bounceads.net +127.0.0.1 bounceexchange.com +127.0.0.1 bowie-cdn.fathomdns.com +127.0.0.1 box.anchorfree.net +127.0.0.1 bpath.com +127.0.0.1 bpu.samsungelectronics.com +127.0.0.1 braincash.com +127.0.0.1 brand-display.com +127.0.0.1 brandreachsys.com +127.0.0.1 brandybison.com +127.0.0.1 braze.eu +127.0.0.1 breadbalance.com +127.0.0.1 breakableinsurance.com +127.0.0.1 breaktime.com.tw +127.0.0.1 brealtime.com +127.0.0.1 bridgetrack.com +127.0.0.1 brightcom.com +127.0.0.1 brightinfo.com +127.0.0.1 brightmountainmedia.com +127.0.0.1 broadcastbed.com +127.0.0.1 broadstreetads.com +127.0.0.1 browser-http-intake.logs.datadoghq.com +127.0.0.1 browser-http-intake.logs.datadoghq.eu +127.0.0.1 bs.yandex.ru +127.0.0.1 btglss.net +127.0.0.1 btrll.com +127.0.0.1 bttrack.com +127.0.0.1 bubblyaction.com +127.0.0.1 buddycanvas.com +127.0.0.1 bugpuk.ru +127.0.0.1 buysellads.com +127.0.0.1 buzzonclick.com +127.0.0.1 bwp.download.com +127.0.0.1 c.apple.com +127.0.0.1 c.bigmir.net +127.0.0.1 c1exchange.com +127.0.0.1 c212.net +127.0.0.1 cakesdrum.com +127.0.0.1 calculatingcircle.com +127.0.0.1 calculatorstatement.com +127.0.0.1 call-ad-network-api.marchex.com +127.0.0.1 callousbrake.com +127.0.0.1 callrail.com +127.0.0.1 calmcactus.com +127.0.0.1 calypsocapsule.com +127.0.0.1 campaign.bharatmatrimony.com +127.0.0.1 caniamedia.com +127.0.0.1 capriciouscorn.com +127.0.0.1 captainbicycle.com +127.0.0.1 captainstick.com +127.0.0.1 carambo.la +127.0.0.1 carbonads.com +127.0.0.1 carbonads.net +127.0.0.1 cardmethod.com +127.0.0.1 caringcast.com +127.0.0.1 carsarace.com +127.0.0.1 cartstack.com +127.0.0.1 carvecakes.com +127.0.0.1 casalemedia.com +127.0.0.1 casalmedia.com +127.0.0.1 cash4members.com +127.0.0.1 cash4popup.de +127.0.0.1 cashcrate.com +127.0.0.1 cashengines.com +127.0.0.1 cashfiesta.com +127.0.0.1 cashpartner.com +127.0.0.1 cashstaging.me +127.0.0.1 casinopays.com +127.0.0.1 casinorewards.com +127.0.0.1 casinotraffic.com +127.0.0.1 cattlecommittee.com +127.0.0.1 causecherry.com +127.0.0.1 cautiouscredit.com +127.0.0.1 cbanners.virtuagirlhd.com +127.0.0.1 cbzxy.com +127.0.0.1 cdn.bannerflow.com +127.0.0.1 cdn.branch.io +127.0.0.1 cdn.freshmarketer.com +127.0.0.1 cdn.heapanalytics.com +127.0.0.1 cdn.keywee.co +127.0.0.1 cdn.mouseflow.com +127.0.0.1 cdn.onesignal.com +127.0.0.1 cdn.scarabresearch.com +127.0.0.1 cdn.segment.com +127.0.0.1 cdn.smalk.ai +127.0.0.1 cdnondemand.org +127.0.0.1 cedato.com +127.0.0.1 celtra.com +127.0.0.1 centerpointmedia.com +127.0.0.1 cetrk.com +127.0.0.1 cgicounter.puretec.de +127.0.0.1 chairscrack.com +127.0.0.1 chalkdream.com +127.0.0.1 channelintelligence.com +127.0.0.1 chargecracker.com +127.0.0.1 chart.dk +127.0.0.1 chartbeat.com +127.0.0.1 chartbeat.net +127.0.0.1 chartboost.com +127.0.0.1 checkstat.nl +127.0.0.1 cherriescare.com +127.0.0.1 childlikecrowd.com +127.0.0.1 chillingtofu.com +127.0.0.1 chitika.net +127.0.0.1 chubbycreature.com +127.0.0.1 citrusad.net +127.0.0.1 cityads.telus.net +127.0.0.1 cj.com +127.0.0.1 cjbmanagement.com +127.0.0.1 cjlog.com +127.0.0.1 cl.turkishairlines.com +127.0.0.1 cl0udh0st1ng.com +127.0.0.1 clck.ru +127.0.0.1 clevernt.com +127.0.0.1 click-1.pl +127.0.0.1 click.airmalta-mail.com +127.0.0.1 click.aliexpress.com +127.0.0.1 click.allkeyshop.com +127.0.0.1 click.bkdpt.com +127.0.0.1 click.cartsguru.io +127.0.0.1 click.ccg.nintendo.com +127.0.0.1 click.cision.com +127.0.0.1 click.classmates.com +127.0.0.1 click.comm.rcibank.co.uk +127.0.0.1 click.crm.ba.com +127.0.0.1 click.digital.metaquestmail.com +127.0.0.1 click.discord.com +127.0.0.1 click.e.bbcmail.co.uk +127.0.0.1 click.e.progressive.com +127.0.0.1 click.e.zoom.us +127.0.0.1 click.em.blizzard.com +127.0.0.1 click.email.bbc.com +127.0.0.1 click.email.lhh.com +127.0.0.1 click.email.microsoftemail.com +127.0.0.1 click.email.sonos.com +127.0.0.1 click.emails.argos.co.uk +127.0.0.1 click.emails.tuclothing.sainsburys.co.uk +127.0.0.1 click.fool.com +127.0.0.1 click.hookupinyourcity.com +127.0.0.1 click.hooligapps.com +127.0.0.1 click.i.southwesternrailway.com +127.0.0.1 click.infoblox.com +127.0.0.1 click.justwatch.com +127.0.0.1 click.kmindex.ru +127.0.0.1 click.liftoff.io +127.0.0.1 click.mail.hotels.com +127.0.0.1 click.mail.salesforce.com +127.0.0.1 click.mailing.ticketmaster.com +127.0.0.1 click.mkt.grab.com +127.0.0.1 click.news.vans.com +127.0.0.1 click.nl.npr.org +127.0.0.1 click.nvgaming.nvidia.com +127.0.0.1 click.redditmail.com +127.0.0.1 click.uber.com +127.0.0.1 click.v.visionlab.es +127.0.0.1 click2freemoney.com +127.0.0.1 click4.pro +127.0.0.1 clickadddilla.com +127.0.0.1 clickadz.com +127.0.0.1 clickagents.com +127.0.0.1 clickbank.com +127.0.0.1 clickbooth.com +127.0.0.1 clickboothlnk.com +127.0.0.1 clickbrokers.com +127.0.0.1 clickcease.com +127.0.0.1 clickdensity.com +127.0.0.1 clickedyclick.com +127.0.0.1 clickfuse.com +127.0.0.1 clickhereforcellphones.com +127.0.0.1 clickngo.pro +127.0.0.1 clickngo.top +127.0.0.1 clickonometrics.pl +127.0.0.1 clickrtrckr.com +127.0.0.1 clicks.checkatrade.com +127.0.0.1 clicks.deliveroo.co.uk +127.0.0.1 clicks.equantum.com +127.0.0.1 clicks.eventbrite.com +127.0.0.1 clicks.monzo.com +127.0.0.1 clicks.njuskalo.hr +127.0.0.1 clickserve.cc-dt.com +127.0.0.1 clicksinfo.thefork.co.uk +127.0.0.1 clickthruserver.com +127.0.0.1 clickthrutraffic.com +127.0.0.1 clicktrack.pubmatic.com +127.0.0.1 clicktrack.ziyu.net +127.0.0.1 clicktracks.com +127.0.0.1 clicktrade.com +127.0.0.1 clickxchange.com +127.0.0.1 clickyab.com +127.0.0.1 clickz.com +127.0.0.1 client-logs-a.wbx2.com +127.0.0.1 clientgear.com +127.0.0.1 clientmetrics-pa.googleapis.com +127.0.0.1 clikerz.net +127.0.0.1 cliksolution.com +127.0.0.1 clixgalore.com +127.0.0.1 clk1005.com +127.0.0.1 clk1011.com +127.0.0.1 clk1015.com +127.0.0.1 clkrev.com +127.0.0.1 clksite.com +127.0.0.1 cloudflareinsights.com +127.0.0.1 cloudguppy.com +127.0.0.1 clrstm.com +127.0.0.1 cluster.adultworld.com +127.0.0.1 clustrmaps.com +127.0.0.1 cmp.dmgmediaprivacy.co.uk +127.0.0.1 cmvrclicks000.com +127.0.0.1 cnomy.com +127.0.0.1 cnt1.pocitadlo.cz +127.0.0.1 cnvlink.com +127.0.0.1 cny.yoyo.org +127.0.0.1 code.etracker.com +127.0.0.1 codeadnetwork.com +127.0.0.1 cognitiv.ai +127.0.0.1 cointraffic.io +127.0.0.1 collector-dev.cdp-dev.cnn.com +127.0.0.1 collector.cdp.cnn.com +127.0.0.1 colonize.com +127.0.0.1 colorfulpet.com +127.0.0.1 coloroptimizer.com +127.0.0.1 comfortablecheese.com +127.0.0.1 commissionmonster.com +127.0.0.1 communications.melitaltd.com +127.0.0.1 compactbanner.com +127.0.0.1 comparereaction.com +127.0.0.1 compilework.com +127.0.0.1 comprabanner.it +127.0.0.1 conditionchange.com +127.0.0.1 conductrics.com +127.0.0.1 confiant-integrations.net +127.0.0.1 confidencetalks.com +127.0.0.1 configv2.unityads.unity3d.com +127.0.0.1 connatix.com +127.0.0.1 connectad.io +127.0.0.1 connextra.com +127.0.0.1 consciouscheese.com +127.0.0.1 consensad.com +127.0.0.1 consensu.org +127.0.0.1 contadores.miarroba.com +127.0.0.1 content.acc-hd.de +127.0.0.1 content.ad +127.0.0.1 content22.online.citi.com +127.0.0.1 contextweb.com +127.0.0.1 contrack.link +127.0.0.1 converge-digital.com +127.0.0.1 conversantmedia.com +127.0.0.1 conversionbet.com +127.0.0.1 conversionruler.com +127.0.0.1 convertingtraffic.com +127.0.0.1 convrse.media +127.0.0.1 cookies.cmpnet.com +127.0.0.1 coolkidsdistrict.com +127.0.0.1 cootlogix.com +127.0.0.1 copperstills.net +127.0.0.1 copycarpenter.com +127.0.0.1 copyrightaccesscontrols.com +127.0.0.1 coremetrics.com +127.0.0.1 correctedcode.com +127.0.0.1 cosmosjackson.com +127.0.0.1 count.rin.ru +127.0.0.1 count.west263.com +127.0.0.1 counted.com +127.0.0.1 counter.bloke.com +127.0.0.1 counter.cnw.cz +127.0.0.1 counter.cz +127.0.0.1 counter.dreamhost.com +127.0.0.1 counter.mirohost.net +127.0.0.1 counter.mojgorod.ru +127.0.0.1 counter.rambler.ru +127.0.0.1 counter.search.bg +127.0.0.1 counter.snackly.co +127.0.0.1 counting.kmindex.ru +127.0.0.1 coupling-media.de +127.0.0.1 cowbelltime.com +127.0.0.1 coxmt.com +127.0.0.1 cozyhillside.com +127.0.0.1 cpalead.com +127.0.0.1 cpays.com +127.0.0.1 cpmstar.com +127.0.0.1 cpu.samsungelectronics.com +127.0.0.1 cpx.to +127.0.0.1 cpxinteractive.com +127.0.0.1 cqcounter.com +127.0.0.1 crabbychin.com +127.0.0.1 craktraffic.com +127.0.0.1 crashchance.com +127.0.0.1 crashlytics.com +127.0.0.1 crashlyticsreports-pa.googleapis.com +127.0.0.1 cratecamera.com +127.0.0.1 crawlability.com +127.0.0.1 crazyegg.com +127.0.0.1 crazypopups.com +127.0.0.1 creatives.livejasmin.com +127.0.0.1 creatopy.net +127.0.0.1 crimsonmeadow.com +127.0.0.1 criteo.com +127.0.0.1 criteo.net +127.0.0.1 critictruck.com +127.0.0.1 crowdedmass.com +127.0.0.1 crowdgravity.com +127.0.0.1 crsspxl.com +127.0.0.1 crta.dailymail.co.uk +127.0.0.1 crtv.mate1.com +127.0.0.1 crwdcntrl.net +127.0.0.1 crypto-loot.org +127.0.0.1 crystalboulevard.com +127.0.0.1 cs.co +127.0.0.1 curbminers.com +127.0.0.1 curiousmetal.com +127.0.0.1 curtaincows.com +127.0.0.1 curveshore.com +127.0.0.1 cushiondrum.com +127.0.0.1 customad.cnn.com +127.0.0.1 customads.co +127.0.0.1 customerevents.netflix.com +127.0.0.1 customers.kameleoon.com +127.0.0.1 cutechin.com +127.0.0.1 cxense.com +127.0.0.1 cyberbounty.com +127.0.0.1 cyclinghere.com +127.0.0.1 d-collect.jennifersoft.com +127.0.0.1 d-collector.jennifersoft.com +127.0.0.1 d.adroll.com +127.0.0.1 d1f0tbk1v3e25u.cloudfront.net +127.0.0.1 d2cmedia.ca +127.0.0.1 d81mfvml8p5ml.cloudfront.net +127.0.0.1 dabiaozhi.com +127.0.0.1 dacdn.visualwebsiteoptimizer.com +127.0.0.1 dacdn.vwo.com +127.0.0.1 dakic-ia-300.com +127.0.0.1 damageddistance.com +127.0.0.1 damdoor.com +127.0.0.1 dapper.net +127.0.0.1 datapickles.com +127.0.0.1 datenow.link +127.0.0.1 daybreaklights.com +127.0.0.1 dc-storm.com +127.0.0.1 de17a.com +127.0.0.1 dealdotcom.com +127.0.0.1 decenterads.com +127.0.0.1 decisivebase.com +127.0.0.1 decisivedrawer.com +127.0.0.1 decknetwork.net +127.0.0.1 deepintent.com +127.0.0.1 delicatecascade.com +127.0.0.1 deloo.de +127.0.0.1 demandbase.com +127.0.0.1 demdex.net +127.0.0.1 deployads.com +127.0.0.1 desertgates.com +127.0.0.1 desiredirt.com +127.0.0.1 detailedgovernment.com +127.0.0.1 detectdiscovery.com +127.0.0.1 dev.visualwebsiteoptimizer.com +127.0.0.1 dewdroplagoon.com +127.0.0.1 dianomi.com +127.0.0.1 dicecandies.com +127.0.0.1 didtheyreadit.com +127.0.0.1 digestiondrawer.com +127.0.0.1 digital-ads.s3.amazonaws.com +127.0.0.1 direct-events-collector.spot.im +127.0.0.1 direct-promo.pro +127.0.0.1 directaclick.com +127.0.0.1 directorym.com +127.0.0.1 discountclick.com +127.0.0.1 discreetfield.com +127.0.0.1 displayvertising.com +127.0.0.1 disqusads.com +127.0.0.1 dist.belnk.com +127.0.0.1 distillery.wistia.com +127.0.0.1 distilltable.com +127.0.0.1 districtm.ca +127.0.0.1 districtm.io +127.0.0.1 dmp.mall.tv +127.0.0.1 dmtracker.com +127.0.0.1 dmtracking.alibaba.com +127.0.0.1 dmtracking2.alibaba.com +127.0.0.1 dnsdelegation.io +127.0.0.1 do-global.com +127.0.0.1 dockdigestion.com +127.0.0.1 dogcollarfavourbluff.com +127.0.0.1 domdex.com +127.0.0.1 doqpm.click +127.0.0.1 dotmetrics.net +127.0.0.1 dotomi.com +127.0.0.1 doubleclick.com +127.0.0.1 doubleclick.de +127.0.0.1 doubleclick.net +127.0.0.1 doublepimp.com +127.0.0.1 doubleverify.com +127.0.0.1 dpbolvw.net +127.0.0.1 dpu.samsungelectronics.com +127.0.0.1 dq95d35.com +127.0.0.1 dragonbats.com +127.0.0.1 drumcash.com +127.0.0.1 dsp.colpirio.com +127.0.0.1 dsp.io +127.0.0.1 dstillery.com +127.0.0.1 dustyhammer.com +127.0.0.1 dyntrk.com +127.0.0.1 e-eu.customeriomail.com +127.0.0.1 e-m.fr +127.0.0.1 e-planning.net +127.0.0.1 e.customeriomail.com +127.0.0.1 e.kde.cz +127.0.0.1 e37364.dscd.akamaiedge.net +127.0.0.1 eadexchange.com +127.0.0.1 eas.almamedia.fi +127.0.0.1 easyhits4u.com +127.0.0.1 ebayadvertising.com +127.0.0.1 ebuzzing.com +127.0.0.1 echoacloud.com +127.0.0.1 ecircle-ag.com +127.0.0.1 ecleneue.com +127.0.0.1 eclick.vn +127.0.0.1 eclicks.deliveroo.com +127.0.0.1 eclkspbn.com +127.0.0.1 ecoupons.com +127.0.0.1 edaa.eu +127.0.0.1 edgexads.com +127.0.0.1 eighthlayer.net +127.0.0.1 eiv.baidu.com +127.0.0.1 elasticchange.com +127.0.0.1 elderlytown.com +127.0.0.1 elitedollars.com +127.0.0.1 em1.yoursantander.co.uk +127.0.0.1 email-link.adtidy.info +127.0.0.1 email-link.adtidy.net +127.0.0.1 email-link.adtidy.org +127.0.0.1 email-links.crowdfireapp.com +127.0.0.1 email-open.adtidy.net +127.0.0.1 email-open.adtidy.org +127.0.0.1 email-trk.ihg-businessedge.com +127.0.0.1 email.mg1.substack.com +127.0.0.1 emailer.stockbit.com +127.0.0.1 emaillinks.soundiiz.com +127.0.0.1 emebo.io +127.0.0.1 emerse.com +127.0.0.1 emetriq.de +127.0.0.1 emjcd.com +127.0.0.1 eml.blackduck.com +127.0.0.1 emltrk.com +127.0.0.1 emodoinc.com +127.0.0.1 emptyescort.com +127.0.0.1 emxdigital.com +127.0.0.1 energeticladybug.com +127.0.0.1 energyfools.com +127.0.0.1 engage.tines.com +127.0.0.1 engage.windows.com +127.0.0.1 engagebdr.com +127.0.0.1 engageya.com +127.0.0.1 engine.espace.netavenir.com +127.0.0.1 engineertrick.com +127.0.0.1 enginenetwork.com +127.0.0.1 enormousearth.com +127.0.0.1 enquisite.com +127.0.0.1 ensighten.com +127.0.0.1 entercasino.com +127.0.0.1 entrecard.s3.amazonaws.com +127.0.0.1 enviousthread.com +127.0.0.1 epom.com +127.0.0.1 epp.bih.net.ba +127.0.0.1 eqads.com +127.0.0.1 eqy.link +127.0.0.1 erne.co +127.0.0.1 ero-advertising.com +127.0.0.1 essaygiants.com +127.0.0.1 esty.com +127.0.0.1 et.educationdynamics.com +127.0.0.1 et.nytimes.com +127.0.0.1 etahub.com +127.0.0.1 etargetnet.com +127.0.0.1 eu-adcenter.net +127.0.0.1 eule1.pmu.fr +127.0.0.1 eulerian.net +127.0.0.1 eurekster.com +127.0.0.1 euros4click.de +127.0.0.1 eusta.de +127.0.0.1 evadav.com +127.0.0.1 evadavdsp.pro +127.0.0.1 evencoating.com +127.0.0.1 eventexistence.com +127.0.0.1 events-eu.freshsuccess.com +127.0.0.1 events-us.freshsuccess.com +127.0.0.1 events.hotjar.io +127.0.0.1 everestads.net +127.0.0.1 everesttech.net +127.0.0.1 evergage.com +127.0.0.1 eversales.space +127.0.0.1 evs.sgmt.loom.com +127.0.0.1 evyy.net +127.0.0.1 exampleshake.com +127.0.0.1 exchange-it.com +127.0.0.1 exchangead.com +127.0.0.1 exchangeclicksonline.com +127.0.0.1 exelate.com +127.0.0.1 exelator.com +127.0.0.1 exhibitsneeze.com +127.0.0.1 exit76.com +127.0.0.1 exitexchange.com +127.0.0.1 exitfuel.com +127.0.0.1 exoclick.com +127.0.0.1 exosrv.com +127.0.0.1 experianmarketingservices.digital +127.0.0.1 explorads.com +127.0.0.1 exponea.com +127.0.0.1 exponential.com +127.0.0.1 exportdialog.com +127.0.0.1 express-submit.de +127.0.0.1 extractobservation.com +127.0.0.1 extreme-dm.com +127.0.0.1 extremetracking.com +127.0.0.1 eyeota.net +127.0.0.1 eyeviewads.com +127.0.0.1 eyewonder.com +127.0.0.1 ezula.com +127.0.0.1 f.pie.org +127.0.0.1 f7ds.liberation.fr +127.0.0.1 fabric.io +127.0.0.1 fadedsnow.com +127.0.0.1 fairfeeling.com +127.0.0.1 fakedisguise.com +127.0.0.1 fallaciousfifth.com +127.0.0.1 fallingshoals.com +127.0.0.1 fam-ad.com +127.0.0.1 farethief.com +127.0.0.1 farmergoldfish.com +127.0.0.1 fast-redirecting.com +127.0.0.1 fastclick.com +127.0.0.1 fastclick.com.edgesuite.net +127.0.0.1 fastclick.net +127.0.0.1 fastly-insights.com +127.0.0.1 faultycanvas.com +127.0.0.1 fave.co +127.0.0.1 fc.webmasterpro.de +127.0.0.1 feedbackresearch.com +127.0.0.1 feedjit.com +127.0.0.1 feedmob.com +127.0.0.1 feelwarmth.com +127.0.0.1 femalecook.com +127.0.0.1 figsprotein.com +127.0.0.1 figurehunter.net +127.0.0.1 fillthemap.com +127.0.0.1 fimserve.com +127.0.0.1 findcommerce.com +127.0.0.1 findyourcasino.com +127.0.0.1 fireads.online +127.0.0.1 fireads.org +127.0.0.1 fireworkadservices.com +127.0.0.1 fireworkanalytics.com +127.0.0.1 fireworks-advertising.com +127.0.0.1 firstlightera.com +127.0.0.1 fishingtoolsbox.com +127.0.0.1 fixedfold.com +127.0.0.1 fjordsand.com +127.0.0.1 flairadscpc.com +127.0.0.1 flakyfeast.com +127.0.0.1 flashtalking.com +127.0.0.1 flashtexting.com +127.0.0.1 fleshlightcash.com +127.0.0.1 flexbanner.com +127.0.0.1 flimsycircle.com +127.0.0.1 flimsythought.com +127.0.0.1 floodprincipal.com +127.0.0.1 flourishinginnovation.com +127.0.0.1 floweryflavor.com +127.0.0.1 flowgo.com +127.0.0.1 flurry.com +127.0.0.1 fontserif.com +127.0.0.1 foo.cosmocode.de +127.0.0.1 foresee.com +127.0.0.1 forex-affiliate.net +127.0.0.1 forkcdn.com +127.0.0.1 fourlevelsgame.com +127.0.0.1 fpctraffic.com +127.0.0.1 fpjs.io +127.0.0.1 fqtag.com +127.0.0.1 fraysystems.com +127.0.0.1 free-counter.co.uk +127.0.0.1 freebanner.com +127.0.0.1 freecounterstat.com +127.0.0.1 freedomgrail.com +127.0.0.1 freelogs.com +127.0.0.1 freepay.com +127.0.0.1 freestats.com +127.0.0.1 freestats.tv +127.0.0.1 freewebcounter.com +127.0.0.1 freewheel.com +127.0.0.1 freewheel.tv +127.0.0.1 freezingbuilding.com +127.0.0.1 frequentflesh.com +127.0.0.1 freshrelevance.com +127.0.0.1 fronttoad.com +127.0.0.1 frtyj.com +127.0.0.1 frtyk.com +127.0.0.1 fudgegenie.com +127.0.0.1 fullrestore.net +127.0.0.1 fullstory.com +127.0.0.1 functionalcrown.com +127.0.0.1 functionalfeather.com +127.0.0.1 funklicks.com +127.0.0.1 funnelytics.io +127.0.0.1 funtoyplanet.com +127.0.0.1 furryfork.com +127.0.0.1 fusionads.net +127.0.0.1 fusionquest.com +127.0.0.1 futuristicfifth.com +127.0.0.1 futuristicframe.com +127.0.0.1 fuzzybasketball.com +127.0.0.1 fwcdn1.com +127.0.0.1 fwcdn2.com +127.0.0.1 fxstyle.net +127.0.0.1 g2.gumgum.com +127.0.0.1 ga.clearbit.com +127.0.0.1 gadsbee.com +127.0.0.1 galaxien.com +127.0.0.1 game-advertising-online.com +127.0.0.1 gamesites100.net +127.0.0.1 gamesites200.com +127.0.0.1 gammamaximum.com +127.0.0.1 gaug.es +127.0.0.1 gavvia.com +127.0.0.1 gearwom.de +127.0.0.1 geo.digitalpoint.com +127.0.0.1 geobanner.adultfriendfinder.com +127.0.0.1 georiot.com +127.0.0.1 geovisite.com +127.0.0.1 getclicky.com +127.0.0.1 getintent.com +127.0.0.1 getmyads.com +127.0.0.1 getxmlisi.com +127.0.0.1 giddycoat.com +127.0.0.1 glasscoyote.com +127.0.0.1 glisteningsign.com +127.0.0.1 globalismedia.com +127.0.0.1 gloriousbeef.com +127.0.0.1 gmads.net +127.0.0.1 gml.email +127.0.0.1 go-clicks.de +127.0.0.1 go-link.network +127.0.0.1 go-mpulse.net +127.0.0.1 go-rank.de +127.0.0.1 go.clickwww.com +127.0.0.1 go.dhs.gov +127.0.0.1 go.eu.sparkpostmail1.com +127.0.0.1 go.first.org +127.0.0.1 go.icann.org +127.0.0.1 go.scmagazine.com +127.0.0.1 go.xlirdr.com +127.0.0.1 go2affise.com +127.0.0.1 go2cloud.org +127.0.0.1 godseedband.com +127.0.0.1 goingplatinum.com +127.0.0.1 goldstats.com +127.0.0.1 gondolagnome.com +127.0.0.1 goodcontentservice.top +127.0.0.1 google-analytics.com +127.0.0.1 googleadservices.com +127.0.0.1 googleanalytics.com +127.0.0.1 googlesyndication.com +127.0.0.1 googletagmanager.com +127.0.0.1 googletagservices.com +127.0.0.1 goqon.com +127.0.0.1 gostats.com +127.0.0.1 gothamads.com +127.0.0.1 gotoyahoo.com +127.0.0.1 gotraffic.net +127.0.0.1 gp.dejanews.com +127.0.0.1 grandfatherguitar.com +127.0.0.1 granlite.com +127.0.0.1 grapeshot.co.uk +127.0.0.1 greystripe.com +127.0.0.1 groovespacing.com +127.0.0.1 grouchybrothers.com +127.0.0.1 groundtruth.com +127.0.0.1 growthrx.in +127.0.0.1 gscontxt.net +127.0.0.1 guardeddirection.com +127.0.0.1 guardedschool.com +127.0.0.1 gumyfui.com +127.0.0.1 gunggo.com +127.0.0.1 h-bid.com +127.0.0.1 h-trck.com +127.0.0.1 h0.t.hubspotemail.net +127.0.0.1 haikusoap.com +127.0.0.1 halcyoncanyon.com +127.0.0.1 halocolor.com +127.0.0.1 haltingbadge.com +127.0.0.1 hammerhearing.com +127.0.0.1 hamsterspot.com +127.0.0.1 handsomehose.com +127.0.0.1 handyfireman.com +127.0.0.1 handyincrease.com +127.0.0.1 haplesshydrant.com +127.0.0.1 harrenmedia.com +127.0.0.1 harrenmedianetwork.com +127.0.0.1 hayweb.net +127.0.0.1 hb.afl.rakuten.co.jp +127.0.0.1 hb.vntsm.com +127.0.0.1 hbb.afl.rakuten.co.jp +127.0.0.1 hbopenbid.pubmatic.com +127.0.0.1 heap.com +127.0.0.1 hellobar.com +127.0.0.1 helpcollar.com +127.0.0.1 hentaicounter.com +127.0.0.1 herbalaffiliateprogram.com +127.0.0.1 hexcan.com +127.0.0.1 hexusads.fluent.ltd.uk +127.0.0.1 heyos.com +127.0.0.1 hf5rbejvpwds.com +127.0.0.1 hfc195b.com +127.0.0.1 hgads.com +127.0.0.1 highnoongear.com +127.0.0.1 hightrafficads.com +127.0.0.1 hilariouszinc.com +127.0.0.1 histats.com +127.0.0.1 historytrade.com +127.0.0.1 hit-parade.com +127.0.0.1 hit.ua +127.0.0.1 hitbox.com +127.0.0.1 hitcounters.miarroba.com +127.0.0.1 hitlist.ru +127.0.0.1 hitlounge.com +127.0.0.1 hitometer.com +127.0.0.1 hits-i.iubenda.com +127.0.0.1 hits.europuls.eu +127.0.0.1 hits.informer.com +127.0.0.1 hits.puls.lv +127.0.0.1 hits.sh +127.0.0.1 hits.theguardian.com +127.0.0.1 hits4me.com +127.0.0.1 hitslink.com +127.0.0.1 hittail.com +127.0.0.1 hlok.qertewrt.com +127.0.0.1 hocgeese.com +127.0.0.1 hollowafterthought.com +127.0.0.1 homelycrown.com +127.0.0.1 homepageking.de +127.0.0.1 honorableland.com +127.0.0.1 hostedads.realitykings.com +127.0.0.1 hotjar.com +127.0.0.1 hotlog.ru +127.0.0.1 hotrank.com.tw +127.0.0.1 hoverowl.com +127.0.0.1 hs-analytics.net +127.0.0.1 hs-banner.com +127.0.0.1 hsadspixel.net +127.0.0.1 hsleadflows.net +127.0.0.1 hsn.uqhv.net +127.0.0.1 htlbid.com +127.0.0.1 httpool.com +127.0.0.1 hubspotlinks.com +127.0.0.1 hueads.com +127.0.0.1 hueadsortb.com +127.0.0.1 hueadsxml.com +127.0.0.1 hurricanedigitalmedia.com +127.0.0.1 hustlercoach.com +127.0.0.1 hydraconcept.com +127.0.0.1 hydramedia.com +127.0.0.1 hyperbanner.net +127.0.0.1 hypertracker.com +127.0.0.1 hyprmx.com +127.0.0.1 hystericalcloth.com +127.0.0.1 i-i.lt +127.0.0.1 i305175.net +127.0.0.1 ia.iinfo.cz +127.0.0.1 iad.anm.co.uk +127.0.0.1 iadnet.com +127.0.0.1 ibillboard.com +127.0.0.1 icptrack.com +127.0.0.1 icywinter.com +127.0.0.1 id5-sync.com +127.0.0.1 idealadvertising.net +127.0.0.1 idevaffiliate.com +127.0.0.1 idtargeting.com +127.0.0.1 ientrymail.com +127.0.0.1 iesnare.com +127.0.0.1 ifa.tube8live.com +127.0.0.1 ilbanner.com +127.0.0.1 ilead.itrack.it +127.0.0.1 illustriousoatmeal.com +127.0.0.1 image2.pubmatic.com +127.0.0.1 image3.pubmatic.com +127.0.0.1 image4.pubmatic.com +127.0.0.1 image6.pubmatic.com +127.0.0.1 imagecash.net +127.0.0.1 images-pw.secureserver.net +127.0.0.1 img.prohardver.hu +127.0.0.1 imgpromo.easyrencontre.com +127.0.0.1 immensehoney.com +127.0.0.1 imonomy.com +127.0.0.1 imp.i312864.net +127.0.0.1 impossibleexpansion.com +127.0.0.1 imprese.cz +127.0.0.1 impressionmedia.cz +127.0.0.1 impressionmonster.com +127.0.0.1 improvedigital.com +127.0.0.1 imrworldwide.com +127.0.0.1 inclk.com +127.0.0.1 incognitosearches.com +127.0.0.1 incoming-telemetry.thunderbird.net +127.0.0.1 incoming.telemetry.mozilla.org +127.0.0.1 indexexchange.com +127.0.0.1 indexstats.com +127.0.0.1 indexww.com +127.0.0.1 indieclick.com +127.0.0.1 industrybrains.com +127.0.0.1 inetlog.ru +127.0.0.1 infinite-ads.com +127.0.0.1 infinityads.com +127.0.0.1 infoevent.startappservice.com +127.0.0.1 infolinks.com +127.0.0.1 inmobi.com +127.0.0.1 inner-active.com +127.0.0.1 inner-active.mobi +127.0.0.1 innovid.com +127.0.0.1 inquisitiveinvention.com +127.0.0.1 insgly.net +127.0.0.1 insidepsych.net +127.0.0.1 insightexpress.com +127.0.0.1 insightexpressai.com +127.0.0.1 inskinad.com +127.0.0.1 inspectlet.com +127.0.0.1 install.365-stream.com +127.0.0.1 instantmadness.com +127.0.0.1 insticator.com +127.0.0.1 intelliads.com +127.0.0.1 intelligenceadx.com +127.0.0.1 interactive.forthnet.gr +127.0.0.1 intercom-clicks.com +127.0.0.1 intergi.com +127.0.0.1 internalcondition.com +127.0.0.1 internetfuel.com +127.0.0.1 interreklame.de +127.0.0.1 ioam.de +127.0.0.1 ip.ro +127.0.0.1 iperceptions.com +127.0.0.1 ipredictive.com +127.0.0.1 ipstack.com +127.0.0.1 irchan.com +127.0.0.1 ireklama.cz +127.0.0.1 is-tracking-pixel-api-prod.appspot.com +127.0.0.1 islandwebhelp.com +127.0.0.1 itop.cz +127.0.0.1 itrackly.com +127.0.0.1 ivwbox.de +127.0.0.1 ivykiosk.com +127.0.0.1 iyfbodn.com +127.0.0.1 iyfnzgb.com +127.0.0.1 izcle.com +127.0.0.1 j93557g.com +127.0.0.1 jads.co +127.0.0.1 jamexport.com +127.0.0.1 jcount.com +127.0.0.1 jdoqocy.com +127.0.0.1 jewelrysprings.com +127.0.0.1 jinkads.de +127.0.0.1 joetec.net +127.0.0.1 joyoussurprise.com +127.0.0.1 js-agent.newrelic.com +127.0.0.1 js-api.otherlevels.com +127.0.0.1 js-tags.otherlevels.com +127.0.0.1 js.iterable.com +127.0.0.1 js.users.51.la +127.0.0.1 jsecoin.com +127.0.0.1 jsrdn.com +127.0.0.1 jubilantglimmer.com +127.0.0.1 juiceblocks.com +127.0.0.1 juicyads.com +127.0.0.1 juicyads.me +127.0.0.1 jumptap.com +127.0.0.1 jungroup.com +127.0.0.1 justicejudo.com +127.0.0.1 justpremium.com +127.0.0.1 justrelevant.com +127.0.0.1 justwowjars.com +127.0.0.1 k.iinfo.cz +127.0.0.1 kameleoon.eu +127.0.0.1 kanoodle.com +127.0.0.1 kargo.com +127.0.0.1 kernellife.com +127.0.0.1 kickoffo.site +127.0.0.1 kindads.com +127.0.0.1 kindlereunion.com +127.0.0.1 kissmetrics.com +127.0.0.1 kittentacos.com +127.0.0.1 kittycatking.com +127.0.0.1 klclick.com +127.0.0.1 klclick1.com +127.0.0.1 kliks.nl +127.0.0.1 knitstamp.com +127.0.0.1 knorex.com +127.0.0.1 knottyswing.com +127.0.0.1 komoona.com +127.0.0.1 kompasads.com +127.0.0.1 kontera.com +127.0.0.1 kost.tv +127.0.0.1 kpu.samsungelectronics.com +127.0.0.1 krxd.net +127.0.0.1 ktu.sv2.biz +127.0.0.1 kueezrtb.com +127.0.0.1 kvsadman.com +127.0.0.1 l1.britannica.com +127.0.0.1 lakesecure.com +127.0.0.1 lameletters.com +127.0.0.1 landkarts.com +127.0.0.1 larati.net +127.0.0.1 largebrass.com +127.0.0.1 laughcloth.com +127.0.0.1 launchbit.com +127.0.0.1 layer-ad.de +127.0.0.1 layer-ads.de +127.0.0.1 lazybumblebee.com +127.0.0.1 lbn.ru +127.0.0.1 lead02.com +127.0.0.1 leadboltads.net +127.0.0.1 leadclick.com +127.0.0.1 leadinfo.net +127.0.0.1 leadingedgecash.com +127.0.0.1 leadplace.fr +127.0.0.1 leadspace.com +127.0.0.1 leadzupc.com +127.0.0.1 leaplunchroom.com +127.0.0.1 leftliquid.com +127.0.0.1 lemmatechnologies.com +127.0.0.1 lemnisk.co +127.0.0.1 lever-analytics.com +127.0.0.1 lfeeder.com +127.0.0.1 lfstmedia.com +127.0.0.1 lgsmartad.com +127.0.0.1 li.alibris.com +127.0.0.1 li.azstarnet.com +127.0.0.1 li.dailycaller.com +127.0.0.1 li.gatehousemedia.com +127.0.0.1 li.gq.com +127.0.0.1 li.hearstmags.com +127.0.0.1 li.livingsocial.com +127.0.0.1 li.mw.drhinternet.net +127.0.0.1 li.onetravel.com +127.0.0.1 li.patheos.com +127.0.0.1 li.pmc.com +127.0.0.1 li.realtor.com +127.0.0.1 li.ziffimages.com +127.0.0.1 liadm.com +127.0.0.1 libraryfacts.com +127.0.0.1 lifeimpressions.net +127.0.0.1 liftdna.com +127.0.0.1 ligatus.com +127.0.0.1 ligatus.de +127.0.0.1 lightspeedcash.com +127.0.0.1 lightstep.medium.systems +127.0.0.1 lijit.com +127.0.0.1 limecodesign.com +127.0.0.1 link-booster.de +127.0.0.1 link.axios.com +127.0.0.1 link.beelivery.com +127.0.0.1 link.email.davidlloydclubs.co.uk +127.0.0.1 link.email.usmagazine.com +127.0.0.1 link.go.chase +127.0.0.1 link.sbstck.com +127.0.0.1 link.team.hyperoptic.com +127.0.0.1 link.theatlantic.com +127.0.0.1 link.uk.expediamail.com +127.0.0.1 linkbuddies.com +127.0.0.1 linkexchange.com +127.0.0.1 linkprice.com +127.0.0.1 linkrain.com +127.0.0.1 linkreferral.com +127.0.0.1 links-ranking.de +127.0.0.1 links.email.crunchbase.com +127.0.0.1 links.housekeep.com +127.0.0.1 links.prosservice.fr +127.0.0.1 links.zoopla.co.uk +127.0.0.1 linksoutside.com +127.0.0.1 linkstable.com +127.0.0.1 linkstorms.com +127.0.0.1 linkswaper.com +127.0.0.1 linksynergy.com +127.0.0.1 linktarget.com +127.0.0.1 linkvertise.com +127.0.0.1 liquidad.narrowcastmedia.com +127.0.0.1 litix.io +127.0.0.1 live.trmzum.com +127.0.0.1 liveadexchanger.com +127.0.0.1 liveintent.com +127.0.0.1 livelylaugh.com +127.0.0.1 liverail.com +127.0.0.1 livingsleet.com +127.0.0.1 lizardslaugh.com +127.0.0.1 lkqd.com +127.0.0.1 lnks.gd +127.0.0.1 loading321.com +127.0.0.1 loadsurprise.com +127.0.0.1 locked4.com +127.0.0.1 lockerdome.com +127.0.0.1 locolava.com +127.0.0.1 log.btopenworld.com +127.0.0.1 log.logrocket.io +127.0.0.1 log.pinterest.com +127.0.0.1 log.videocampaign.co +127.0.0.1 logger.snackly.co +127.0.0.1 logs.roku.com +127.0.0.1 logs.spilgames.com +127.0.0.1 logsss.com +127.0.0.1 logua.com +127.0.0.1 look.djfiln.com +127.0.0.1 look.ichlnk.com +127.0.0.1 look.opskln.com +127.0.0.1 look.ufinkln.com +127.0.0.1 loopme.com +127.0.0.1 loudlunch.com +127.0.0.1 lowest-prices.eu +127.0.0.1 lucidmedia.com +127.0.0.1 luckyorange.com +127.0.0.1 ludicrousarch.com +127.0.0.1 lyricshook.com +127.0.0.1 lytics.io +127.0.0.1 lzjl.com +127.0.0.1 m.trb.com +127.0.0.1 m2.ai +127.0.0.1 m32.media +127.0.0.1 m4n.nl +127.0.0.1 m6r.eu +127.0.0.1 mackeeperapp.mackeeper.com +127.0.0.1 madclient.uimserv.net +127.0.0.1 madcpms.com +127.0.0.1 madinad.com +127.0.0.1 madisonavenue.com +127.0.0.1 madvertise.de +127.0.0.1 magicadz.co +127.0.0.1 magicaljoin.com +127.0.0.1 magsrv.com +127.0.0.1 mail-ads.google.com +127.0.0.1 maltiverse.lt.acemlnc.com +127.0.0.1 manageadv.cblogs.eu +127.0.0.1 mantisadnetwork.com +127.0.0.1 mapcommand.com +127.0.0.1 marinsm.com +127.0.0.1 markedmeasure.com +127.0.0.1 marketing.888.com +127.0.0.1 marketing.desertcart.com +127.0.0.1 marketing.net.brillen.de +127.0.0.1 marketing.net.home24.de +127.0.0.1 marketing.net.occhiali24.it +127.0.0.1 marketing.nyi.net +127.0.0.1 marketing.osijek031.com +127.0.0.1 marketingcloudapis.com +127.0.0.1 marketingsolutions.yahoo.com +127.0.0.1 marketo.com +127.0.0.1 marlowpillow.sjv.io +127.0.0.1 marriedbelief.com +127.0.0.1 mas.sector.sk +127.0.0.1 matchcraft.com +127.0.0.1 matheranalytics.com +127.0.0.1 mathtag.com +127.0.0.1 matomo.activate.cz +127.0.0.1 matomo.crossiety.app +127.0.0.1 mautic.com +127.0.0.1 max.i12.de +127.0.0.1 maximiser.net +127.0.0.1 maxonclick.com +127.0.0.1 mbs.megaroticlive.com +127.0.0.1 mcdlks.com +127.0.0.1 mcs-va.tiktok.com +127.0.0.1 mcs-va.tiktokv.com +127.0.0.1 meadowlullaby.com +127.0.0.1 measlymiddle.com +127.0.0.1 measure.office.com +127.0.0.1 measuremap.com +127.0.0.1 meatydime.com +127.0.0.1 media-adrunner.mycomputer.com +127.0.0.1 media.funpic.de +127.0.0.1 media.net +127.0.0.1 media01.eu +127.0.0.1 media6degrees.com +127.0.0.1 mediaarea.eu +127.0.0.1 mediabridge.cc +127.0.0.1 mediafuse.com +127.0.0.1 mediageneral.com +127.0.0.1 mediaiqdigital.com +127.0.0.1 mediamath.com +127.0.0.1 mediamgr.ugo.com +127.0.0.1 mediaplazza.com +127.0.0.1 mediaplex.com +127.0.0.1 mediascale.de +127.0.0.1 mediaserver.bwinpartypartners.it +127.0.0.1 mediasmart.io +127.0.0.1 mediasquare.fr +127.0.0.1 mediatext.com +127.0.0.1 mediavine.com +127.0.0.1 mediavoice.com +127.0.0.1 medleyads.com +127.0.0.1 medyanetads.com +127.0.0.1 meetrics.net +127.0.0.1 megacash.de +127.0.0.1 megastats.com +127.0.0.1 megawerbung.de +127.0.0.1 meltmilk.com +127.0.0.1 memorizeneck.com +127.0.0.1 mercuryace.com +127.0.0.1 merequartz.com +127.0.0.1 messagelists.com +127.0.0.1 metadsp.co.uk +127.0.0.1 metaffiliation.com +127.0.0.1 metajaws.com +127.0.0.1 metanetwork.com +127.0.0.1 methodcash.com +127.0.0.1 metrics-a.wbx2.com +127.0.0.1 metrics-logger.spot.im +127.0.0.1 metrics.api.drift.com +127.0.0.1 metrics.articulate.com +127.0.0.1 metrics.cnn.com +127.0.0.1 metrics.foxnews.com +127.0.0.1 metrics.getrockerbox.com +127.0.0.1 metrics.gfycat.com +127.0.0.1 metrics.govexec.com +127.0.0.1 metrics.icloud.com +127.0.0.1 metrics.mzstatic.com +127.0.0.1 metrilo.com +127.0.0.1 mfadsrvr.com +127.0.0.1 mg2connext.com +127.0.0.1 mgid.com +127.0.0.1 microstatic.pl +127.0.0.1 microticker.com +127.0.0.1 milotree.com +127.0.0.1 mineinvoice.com +127.0.0.1 minewhat.com +127.0.0.1 minibilling.com +127.0.0.1 mintegral.com +127.0.0.1 mintfunnel.co +127.0.0.1 mittencattle.com +127.0.0.1 mix2ads.com +127.0.0.1 mixpanel.com +127.0.0.1 mkto-ab410147.com +127.0.0.1 mktoresp.com +127.0.0.1 ml314.com +127.0.0.1 mlm.de +127.0.0.1 mlsend.com +127.0.0.1 mltrk.io +127.0.0.1 mmismm.com +127.0.0.1 mmstat.com +127.0.0.1 mmtro.com +127.0.0.1 mntzrlt.net +127.0.0.1 moartraffic.com +127.0.0.1 moat.com +127.0.0.1 moatads.com +127.0.0.1 moatpixel.com +127.0.0.1 mobclix.com +127.0.0.1 mobfox.com +127.0.0.1 mobileanalytics.us-east-1.amazonaws.com +127.0.0.1 mobilefuse.com +127.0.0.1 modernpricing.com +127.0.0.1 mon-va.byteoversea.com +127.0.0.1 mon.byteoversea.com +127.0.0.1 monarchads.com +127.0.0.1 monetate.net +127.0.0.1 monetizer101.com +127.0.0.1 monkeyapes.com +127.0.0.1 monsterpops.com +127.0.0.1 mookie1.com +127.0.0.1 moonwager.com +127.0.0.1 mopub.com +127.0.0.1 morefolks.com +127.0.0.1 motionlessmeeting.com +127.0.0.1 motionspots.com +127.0.0.1 mousestats.com +127.0.0.1 movad.net +127.0.0.1 movemeal.com +127.0.0.1 mparticle.com +127.0.0.1 mpstat.us +127.0.0.1 mr-rank.de +127.0.0.1 mrskincash.com +127.0.0.1 mstrlytcs.com +127.0.0.1 mtrcs.samba.tv +127.0.0.1 mtree.com +127.0.0.1 munchkin.marketo.net +127.0.0.1 mundanenail.com +127.0.0.1 mushroomgods.com +127.0.0.1 muteknife.com +127.0.0.1 muwmedia.com +127.0.0.1 mxptint.net +127.0.0.1 myads.company +127.0.0.1 myads.net +127.0.0.1 myads.telkomsel.com +127.0.0.1 myaffiliateprogram.com +127.0.0.1 mybbc-analytics.files.bbci.co.uk +127.0.0.1 mybloglog.com +127.0.0.1 mybuys.com +127.0.0.1 mycounter.ua +127.0.0.1 mydas.mobi +127.0.0.1 mylead-tracking.tracknow.info +127.0.0.1 mylead.global +127.0.0.1 mypagerank.net +127.0.0.1 mypowermall.com +127.0.0.1 mysketchpad.com +127.0.0.1 mystat-in.net +127.0.0.1 mystat.pl +127.0.0.1 mytop-in.net +127.0.0.1 n69.com +127.0.0.1 naj.sk +127.0.0.1 nakedly.ai +127.0.0.1 nappyattack.com +127.0.0.1 nappyneck.com +127.0.0.1 nastydollars.com +127.0.0.1 nativeroll.tv +127.0.0.1 navegg.com +127.0.0.1 navigator.io +127.0.0.1 navrcholu.cz +127.0.0.1 ncaudienceexchange.com +127.0.0.1 ndparking.com +127.0.0.1 nebulacrescent.com +127.0.0.1 nedstatbasic.net +127.0.0.1 needyneedle.com +127.0.0.1 neighborlywatch.com +127.0.0.1 nend.net +127.0.0.1 neocounter.neoworx-blog-tools.net +127.0.0.1 nervoussummer.com +127.0.0.1 net-filter.com +127.0.0.1 netaffiliation.com +127.0.0.1 netagent.cz +127.0.0.1 netclickstats.com +127.0.0.1 netdirect.nl +127.0.0.1 netech.postaffiliatepro.com +127.0.0.1 netmera-web.com +127.0.0.1 netmera.com +127.0.0.1 netmng.com +127.0.0.1 netpool.netbookia.net +127.0.0.1 netshelter.net +127.0.0.1 neudesicmediagroup.com +127.0.0.1 newads.bangbros.com +127.0.0.1 newnet.qsrch.com +127.0.0.1 newnudecash.com +127.0.0.1 news-cdn.site +127.0.0.1 newsadsppush.com +127.0.0.1 newsbotnet.com +127.0.0.1 newt1.adultadworld.com +127.0.0.1 newt1.adultworld.com +127.0.0.1 nexac.com +127.0.0.1 ng3.ads.warnerbros.com +127.0.0.1 nitroclicks.com +127.0.0.1 nmtracking.netflix.com +127.0.0.1 noiselessplough.com +127.0.0.1 nondescriptcrowd.com +127.0.0.1 nondescriptnote.com +127.0.0.1 nondescriptstocking.com +127.0.0.1 novem.pl +127.0.0.1 nowaymail.com +127.0.0.1 npttech.com +127.0.0.1 nr-data.net +127.0.0.1 nr.mmcdn.com +127.0.0.1 nr.static.mmcdn.com +127.0.0.1 ns1p.net +127.0.0.1 ntv.io +127.0.0.1 ntvk1.ru +127.0.0.1 nullitics.com +127.0.0.1 nuseek.com +127.0.0.1 nzaza.com +127.0.0.1 o2.mouseflow.com +127.0.0.1 o333o.com +127.0.0.1 oafishobservation.com +127.0.0.1 oas.benchmark.fr +127.0.0.1 oas.repubblica.it +127.0.0.1 oas.roanoke.com +127.0.0.1 oas.toronto.com +127.0.0.1 oas.uniontrib.com +127.0.0.1 oascentral.chicagobusiness.com +127.0.0.1 oascentral.fortunecity.com +127.0.0.1 oascentral.register.com +127.0.0.1 objecthero.com +127.0.0.1 obscenesidewalk.com +127.0.0.1 oceancloudhosts.com +127.0.0.1 odbierz-bony.ovp.pl +127.0.0.1 oewa.at +127.0.0.1 offaces-butional.com +127.0.0.1 offer.fyber.com +127.0.0.1 offer.sponsorpay.com +127.0.0.1 offerforge.com +127.0.0.1 offermatica.com +127.0.0.1 offshoregeology.com +127.0.0.1 ogads-pa.googleapis.com +127.0.0.1 oglasi.posjetnica.com +127.0.0.1 ogury.com +127.0.0.1 ojrq.net +127.0.0.1 omg10.com +127.0.0.1 omnijay.com +127.0.0.1 omniture.com +127.0.0.1 omtrdc.net +127.0.0.1 onaudience.com +127.0.0.1 onclickads.net +127.0.0.1 onegg.site +127.0.0.1 onestat.com +127.0.0.1 onestatfree.com +127.0.0.1 online-metrix.net +127.0.0.1 online.miarroba.com +127.0.0.1 onlinecash.com +127.0.0.1 onlinecashmethod.com +127.0.0.1 onlinerewardcenter.com +127.0.0.1 onlinestarten.net +127.0.0.1 onscroll.com +127.0.0.1 onthe.io +127.0.0.1 opads.us +127.0.0.1 open.oneplus.net +127.0.0.1 openad.tf1.fr +127.0.0.1 openad.travelnow.com +127.0.0.1 openads.friendfinder.com +127.0.0.1 openads.org +127.0.0.1 openadsnetwork.com +127.0.0.1 openbid.pubmatic.com +127.0.0.1 openx.angelsgroup.org.uk +127.0.0.1 openx.cairo360.com +127.0.0.1 openx.net +127.0.0.1 openx.skinet.cz +127.0.0.1 openx.smcaen.fr +127.0.0.1 openx2.kytary.cz +127.0.0.1 operationchicken.com +127.0.0.1 opienetwork.com +127.0.0.1 opmnstr.com +127.0.0.1 oppuz.com +127.0.0.1 optimallimit.com +127.0.0.1 optimizely.com +127.0.0.1 optimost.com +127.0.0.1 optionsnomad.com +127.0.0.1 optmd.com +127.0.0.1 optmnstr.com +127.0.0.1 optmstr.com +127.0.0.1 optnmstr.com +127.0.0.1 optnx.com +127.0.0.1 orbsrv.com +127.0.0.1 orientedargument.com +127.0.0.1 orionember.com +127.0.0.1 ota.cartrawler.com +127.0.0.1 otto-images.developershed.com +127.0.0.1 ourdreamstaticpages.pages.dev +127.0.0.1 outbrain.com +127.0.0.1 outerwords.com +127.0.0.1 overconfidentfood.com +127.0.0.1 overture.com +127.0.0.1 ow.pubmatic.com +127.0.0.1 owebmoney.ru +127.0.0.1 owlsr.us +127.0.0.1 owneriq.net +127.0.0.1 oxado.com +127.0.0.1 oxcash.com +127.0.0.1 oxen.hillcountrytexas.com +127.0.0.1 p-n.io +127.0.0.1 p7cloud.net +127.0.0.1 paa-reporting-advertising.amazon +127.0.0.1 page-checker.eu +127.0.0.1 pagead.l.google.com +127.0.0.1 pagefair.com +127.0.0.1 pagerank-ranking.de +127.0.0.1 pageranktop.com +127.0.0.1 painstakingpickle.com +127.0.0.1 paleleaf.com +127.0.0.1 panickypancake.com +127.0.0.1 panoramicplane.com +127.0.0.1 parachutehome.sjv.io +127.0.0.1 parchedsofa.com +127.0.0.1 parentpicture.com +127.0.0.1 parsely.com +127.0.0.1 parsimoniouspolice.com +127.0.0.1 partner-ads.com +127.0.0.1 partner.pelikan.cz +127.0.0.1 partnerad.l.google.com +127.0.0.1 partnerads.ysm.yahoo.com +127.0.0.1 partnercash.de +127.0.0.1 partnerhut.com +127.0.0.1 partnerlinks.io +127.0.0.1 partners.priceline.com +127.0.0.1 partplanes.com +127.0.0.1 passeura.com +127.0.0.1 paychat.fuse-cloud.com +127.0.0.1 paycounter.com +127.0.0.1 paypopup.com +127.0.0.1 pbnet.ru +127.0.0.1 pbterra.com +127.0.0.1 pc-tc.s3-eu-west-1.amazonaws.com +127.0.0.1 pcash.imlive.com +127.0.0.1 peep-auktion.de +127.0.0.1 peer39.com +127.0.0.1 pennyweb.com +127.0.0.1 pepperjamnetwork.com +127.0.0.1 percentmobile.com +127.0.0.1 perfectaudience.com +127.0.0.1 perfiliate.com +127.0.0.1 performancerevenue.com +127.0.0.1 performancerevenues.com +127.0.0.1 performancing.com +127.0.0.1 permutive.com +127.0.0.1 personagraph.com +127.0.0.1 pgl.example.com +127.0.0.1 pgl.example0101 +127.0.0.1 pgmediaserve.com +127.0.0.1 pgpartner.com +127.0.0.1 pheedo.com +127.0.0.1 phoenix-adrunner.mycomputer.com +127.0.0.1 piano.io +127.0.0.1 pimproll.com +127.0.0.1 ping.ublock.org +127.0.0.1 pipedream.wistia.com +127.0.0.1 pippio.com +127.0.0.1 piquantpigs.com +127.0.0.1 pix.spot.im +127.0.0.1 pixel.keywee.co +127.0.0.1 pixel.sojern.com +127.0.0.1 pixel.watch +127.0.0.1 pixel.yabidos.com +127.0.0.1 placed.com +127.0.0.1 placeframe.com +127.0.0.1 placidactivity.com +127.0.0.1 plausible.avris.it +127.0.0.1 plausibleio.workers.dev +127.0.0.1 play4traffic.com +127.0.0.1 playhaven.com +127.0.0.1 pleasantpump.com +127.0.0.1 plista.com +127.0.0.1 plotrabbit.com +127.0.0.1 pltraffic8.com +127.0.0.1 pluckypocket.com +127.0.0.1 plugrush.com +127.0.0.1 pocketfaucet.com +127.0.0.1 poemprompt.com +127.0.0.1 pointlessprofit.com +127.0.0.1 pointroll.com +127.0.0.1 pokkt.com +127.0.0.1 polishedfolly.com +127.0.0.1 polo.feathr.co +127.0.0.1 popads.net +127.0.0.1 popcash.net +127.0.0.1 popmixradio.com +127.0.0.1 popmyads.com +127.0.0.1 popplantation.com +127.0.0.1 popub.com +127.0.0.1 popunder.ru +127.0.0.1 popunhot1.blogspot.com +127.0.0.1 popup.msn.com +127.0.0.1 popupmoney.com +127.0.0.1 popupnation.com +127.0.0.1 popuptraffic.com +127.0.0.1 porngraph.com +127.0.0.1 porntrack.com +127.0.0.1 possibleboats.com +127.0.0.1 possiblepencil.com +127.0.0.1 post.spmailtechno.com +127.0.0.1 postback.iqm.com +127.0.0.1 postrelease.com +127.0.0.1 ppc.adhere.marchex.com +127.0.0.1 pr-star.de +127.0.0.1 praddpro.de +127.0.0.1 prchecker.info +127.0.0.1 prebid.org +127.0.0.1 predictad.com +127.0.0.1 premium-offers.com +127.0.0.1 presetrabbits.com +127.0.0.1 prettyeasycafe.com +127.0.0.1 previousplayground.com +127.0.0.1 prf.hn +127.0.0.1 priceypies.com +127.0.0.1 pricklydebt.com +127.0.0.1 prideproms.com +127.0.0.1 primetime.net +127.0.0.1 privatecash.com +127.0.0.1 prmtracking.com +127.0.0.1 pro-market.net +127.0.0.1 probablepartner.com +127.0.0.1 processplantation.com +127.0.0.1 proext.com +127.0.0.1 profero.com +127.0.0.1 profitrumour.com +127.0.0.1 programattik.com +127.0.0.1 projectwonderful.com +127.0.0.1 promo.badoink.com +127.0.0.1 promobenef.com +127.0.0.1 promos.bwin.it +127.0.0.1 promos.fling.com +127.0.0.1 promote.pair.com +127.0.0.1 pronetadvertising.com +127.0.0.1 propellerads.com +127.0.0.1 propellerclick.com +127.0.0.1 proper.io +127.0.0.1 props.id +127.0.0.1 protectcrev.com +127.0.0.1 protectpool.com +127.0.0.1 protectsubrev.com +127.0.0.1 protestcopy.com +127.0.0.1 proton-tm.com +127.0.0.1 protraffic.com +127.0.0.1 provenpixel.com +127.0.0.1 prpops.com +127.0.0.1 prufenzo.xyz +127.0.0.1 pstmrk.it +127.0.0.1 pub.chez.com +127.0.0.1 pub.club-internet.fr +127.0.0.1 pub.hardware.fr +127.0.0.1 pub.network +127.0.0.1 pub.realmedia.fr +127.0.0.1 pubdirecte.com +127.0.0.1 publicidad.elmundo.es +127.0.0.1 publicidees.com +127.0.0.1 publicsofa.com +127.0.0.1 pubmine.com +127.0.0.1 pubnative.net +127.0.0.1 puffyloss.com +127.0.0.1 puffypaste.com +127.0.0.1 puffypull.com +127.0.0.1 puffypurpose.com +127.0.0.1 pureclarity.net +127.0.0.1 pushengage.com +127.0.0.1 pushno.com +127.0.0.1 pushtrack.co +127.0.0.1 px.dynamicyield.com +127.0.0.1 px.gfycat.com +127.0.0.1 pxf.io +127.0.0.1 pxl-mailtracker.com +127.0.0.1 pxl.iqm.com +127.0.0.1 pymx5.com +127.0.0.1 q.azcentral.com +127.0.0.1 q1connect.com +127.0.0.1 qa-analytics.com +127.0.0.1 qctop.com +127.0.0.1 ql.tc +127.0.0.1 qnsr.com +127.0.0.1 quantcast.com +127.0.0.1 quantcount.com +127.0.0.1 quantserve.com +127.0.0.1 quantummetric.com +127.0.0.1 quarterserver.de +127.0.0.1 quickkoala.io +127.0.0.1 quietknowledge.com +127.0.0.1 quiltruler.com +127.0.0.1 quinst.com +127.0.0.1 quirkysugar.com +127.0.0.1 quisma.com +127.0.0.1 quizzicalzephyr.com +127.0.0.1 r.drinksdirect.net +127.0.0.1 r.logrocket.io +127.0.0.1 r.marketing.dubaisothebys.com +127.0.0.1 r.msn.com +127.0.0.1 r.scoota.co +127.0.0.1 r.sibmail.havasit.com +127.0.0.1 r1.arts-mail.com +127.0.0.1 r1.visualwebsiteoptimizer.com +127.0.0.1 r2.visualwebsiteoptimizer.com +127.0.0.1 r3.visualwebsiteoptimizer.com +127.0.0.1 rabbitrifle.com +127.0.0.1 rackforstorage.com +127.0.0.1 radar.cedexis.com +127.0.0.1 radiate.com +127.0.0.1 radiateprose.com +127.0.0.1 rads.realadmin.pl +127.0.0.1 railwayreason.com +127.0.0.1 rambunctiousflock.com +127.0.0.1 rampidads.com +127.0.0.1 randkuj.xyz +127.0.0.1 rankchamp.de +127.0.0.1 ranking-charts.de +127.0.0.1 ranking-hits.de +127.0.0.1 ranking-links.de +127.0.0.1 rankingscout.com +127.0.0.1 rankyou.com +127.0.0.1 rapidcounter.com +127.0.0.1 raresummer.com +127.0.0.1 rate.ru +127.0.0.1 rayjump.com +127.0.0.1 rcadserver.com +127.0.0.1 re-direct.pl +127.0.0.1 reachjunction.com +127.0.0.1 reactx.com +127.0.0.1 readingguilt.com +127.0.0.1 readymoon.com +127.0.0.1 realcastmedia.com +127.0.0.1 realclever.com +127.0.0.1 realclix.com +127.0.0.1 realmedia-a800.d4p.net +127.0.0.1 realsrv.com +127.0.0.1 realtechnetwork.com +127.0.0.1 realtracker.com +127.0.0.1 rebelhen.com +127.0.0.1 rebelswing.com +127.0.0.1 rec5.visualwebsiteoptimizer.com +127.0.0.1 recapture.io +127.0.0.1 receptivereaction.com +127.0.0.1 recoco.it +127.0.0.1 record.bonniergaming.com +127.0.0.1 record.mrwin.com +127.0.0.1 redirectingat.com +127.0.0.1 redirectvoluum.com +127.0.0.1 redrection.pro +127.0.0.1 redshell.io +127.0.0.1 reduxmedia.com +127.0.0.1 referralware.com +127.0.0.1 referrer.disqus.com +127.0.0.1 regularplants.com +127.0.0.1 reklam.rfsl.se +127.0.0.1 reklama.mironet.cz +127.0.0.1 reklamcsere.hu +127.0.0.1 reklamdsp.com +127.0.0.1 relmaxtop.com +127.0.0.1 rememberdiscussion.com +127.0.0.1 report-1.appmetrica.webvisor.com +127.0.0.1 report-2.appmetrica.webvisor.com +127.0.0.1 report-partners.appmetrica.yandex.net +127.0.0.1 report.ap.yandex-net.ru +127.0.0.1 report.appmetrica.yandex.net +127.0.0.1 republika.onet.pl +127.0.0.1 resalag.com +127.0.0.1 rescuerhino.com +127.0.0.1 resonantbrush.com +127.0.0.1 resonate.com +127.0.0.1 responsiveads.com +127.0.0.1 restrainstorm.com +127.0.0.1 retargeter.com +127.0.0.1 rev.iq +127.0.0.1 revcatch.com +127.0.0.1 revcontent.com +127.0.0.1 reveal.clearbit.com +127.0.0.1 revenuedirect.com +127.0.0.1 revenuehits.com +127.0.0.1 revive.haskovo.net +127.0.0.1 revive.netriota.hu +127.0.0.1 revive.plays.bg +127.0.0.1 revprotect.com +127.0.0.1 revstats.com +127.0.0.1 rexadvert.xyz +127.0.0.1 reyden-x.com +127.0.0.1 rhombusads.com +127.0.0.1 rhythmone.com +127.0.0.1 richaudience.com +127.0.0.1 richmails.com +127.0.0.1 richstring.com +127.0.0.1 rightstats.com +127.0.0.1 ringplant.com +127.0.0.1 ringsrecord.com +127.0.0.1 ritzyrepresentative.com +127.0.0.1 rlcdn.com +127.0.0.1 rle.ru +127.0.0.1 rmads.msn.com +127.0.0.1 rmedia.boston.com +127.0.0.1 roaddynamics.com +127.0.0.1 roar.com +127.0.0.1 robotreplay.com +127.0.0.1 rockabox.co +127.0.0.1 rockagainst.com +127.0.0.1 rockstarwriter.com +127.0.0.1 rok.com.com +127.0.0.1 rollconnection.com +127.0.0.1 ronracepub.com +127.0.0.1 rose.ixbt.com +127.0.0.1 rotabanner.com +127.0.0.1 roxr.net +127.0.0.1 rpt-ads.vidaahub.com +127.0.0.1 rqtrk.eu +127.0.0.1 rs6.net +127.0.0.1 rsc-ads.vidaahub.com +127.0.0.1 rsc-mntz.vidaahub.com +127.0.0.1 rta.dailymail.co.uk +127.0.0.1 rtb.gumgum.com +127.0.0.1 rtbadzesto.com +127.0.0.1 rtbflairads.com +127.0.0.1 rtbplatform.net +127.0.0.1 rtbpop.com +127.0.0.1 rtbpopd.com +127.0.0.1 rtmark.net +127.0.0.1 rtxplatform.com +127.0.0.1 ru4.com +127.0.0.1 rubiconproject.com +127.0.0.1 rum-http-intake.logs.datadoghq.com +127.0.0.1 rum-http-intake.logs.datadoghq.eu +127.0.0.1 runads.com +127.0.0.1 rundsp.com +127.0.0.1 ruralrobin.com +127.0.0.1 s.adroll.com +127.0.0.1 s.dmmew.com +127.0.0.1 s20dh7e9dh.com +127.0.0.1 s2d6.com +127.0.0.1 sabio.us +127.0.0.1 sadloaf.com +127.0.0.1 safeoffers.pro +127.0.0.1 sail-horizon.com +127.0.0.1 samplesamba.com +127.0.0.1 samsungacr.com +127.0.0.1 samsungads.com +127.0.0.1 sanalytics.disneyplus.com +127.0.0.1 sanity-dataplane.rudderstack.com +127.0.0.1 savoryorange.com +127.0.0.1 sbird.xyz +127.0.0.1 sbx.pagesjaunes.fr +127.0.0.1 sc-analytics.appspot.com +127.0.0.1 scambiobanner.aruba.it +127.0.0.1 scanscout.com +127.0.0.1 scarcesign.com +127.0.0.1 scaredsnakes.com +127.0.0.1 scaredsong.com +127.0.0.1 scarfsmash.com +127.0.0.1 scatteredheat.com +127.0.0.1 scintillatingscissors.com +127.0.0.1 scintillatingsilver.com +127.0.0.1 scissorsstatement.com +127.0.0.1 scopelight.com +127.0.0.1 scorecardresearch.com +127.0.0.1 scratch2cash.com +127.0.0.1 screechingfurniture.com +127.0.0.1 screechingstocking.com +127.0.0.1 screechingstove.com +127.0.0.1 scrubswim.com +127.0.0.1 seadform.net +127.0.0.1 searchmarketing.com +127.0.0.1 searchramp.com +127.0.0.1 secre.jp +127.0.0.1 secretspiders.com +127.0.0.1 secure.webconnect.net +127.0.0.1 securedopen-bp.com +127.0.0.1 securemetrics.apple.com +127.0.0.1 securemetrics.apple.com.cn +127.0.0.1 securityannex.net +127.0.0.1 sedoparking.com +127.0.0.1 sedotracker.com +127.0.0.1 segment-cdn.producthunt.com +127.0.0.1 selectivesummer.com +127.0.0.1 semasio.net +127.0.0.1 sendmepixel.com +127.0.0.1 seraphichorizon.com +127.0.0.1 serendipityecho.com +127.0.0.1 serv0.com +127.0.0.1 servclick1move.com +127.0.0.1 serve.tercept.com +127.0.0.1 servedby-buysellads.com +127.0.0.1 servedbyadbutler.com +127.0.0.1 servedbyopenx.com +127.0.0.1 servethis.com +127.0.0.1 services.hearstmags.com +127.0.0.1 sessioncam.com +127.0.0.1 sexcounter.com +127.0.0.1 sexlist.com +127.0.0.1 sextracker.com +127.0.0.1 shadowmade.com +127.0.0.1 shakegoldfish.com +127.0.0.1 shareasale.com +127.0.0.1 sharethrough.com +127.0.0.1 shd247.click +127.0.0.1 sher.index.hu +127.0.0.1 shesubscriptions.com +127.0.0.1 shinystat.com +127.0.0.1 shinystat.it +127.0.0.1 shiveringspot.com +127.0.0.1 shiverscissors.com +127.0.0.1 shockinggrass.com +127.0.0.1 shoppingads.com +127.0.0.1 showads.pubmatic.com +127.0.0.1 shredform.com +127.0.0.1 shrillspoon.com +127.0.0.1 shxtrk.com +127.0.0.1 sicksmash.com +127.0.0.1 sidebar.angelfire.com +127.0.0.1 signalayer.com +127.0.0.1 signalszone.com +127.0.0.1 sillyscrew.com +127.0.0.1 silvermob.com +127.0.0.1 simpleanalytics.io +127.0.0.1 simplesafari.com +127.0.0.1 simpli.fi +127.0.0.1 simulateswing.com +127.0.0.1 sincerebuffalo.com +127.0.0.1 sinoa.com +127.0.0.1 sitedataprocessing.com +127.0.0.1 siteimproveanalytics.com +127.0.0.1 siteimproveanalytics.io +127.0.0.1 siteintercept.qualtrics.com +127.0.0.1 sitemeter.com +127.0.0.1 sixscissors.com +127.0.0.1 sixsigmatraffic.com +127.0.0.1 sizmek.com +127.0.0.1 skimresources.com +127.0.0.1 skisofa.com +127.0.0.1 skroutza.skroutz.gr +127.0.0.1 skylink.vn +127.0.0.1 slimesupplies.net +127.0.0.1 slopeaota.com +127.0.0.1 smaato.com +127.0.0.1 smart-data-systems.com +127.0.0.1 smart-traffik.com +127.0.0.1 smart-traffik.io +127.0.0.1 smart4ads.com +127.0.0.1 smartadserver.com +127.0.0.1 smartclip.net +127.0.0.1 smartlook.com +127.0.0.1 smartstream.tv +127.0.0.1 smartyads.com +127.0.0.1 smashquartz.com +127.0.0.1 smashsurprise.com +127.0.0.1 smetrics.10daily.com.au +127.0.0.1 smetrics.bestbuy.com +127.0.0.1 smetrics.ctv.ca +127.0.0.1 smetrics.fedex.com +127.0.0.1 smetrics.foxnews.com +127.0.0.1 smetrics.walgreens.com +127.0.0.1 smetrics.washingtonpost.com +127.0.0.1 smilewanted.com +127.0.0.1 smilingcattle.com +127.0.0.1 smoggysnakes.com +127.0.0.1 smrtb.com +127.0.0.1 snapads.com +127.0.0.1 snazzypoodle.com +127.0.0.1 snoobi.com +127.0.0.1 socialspark.com +127.0.0.1 softclick.com.br +127.0.0.1 soggysponge.com +127.0.0.1 soicos.com +127.0.0.1 sombersea.com +127.0.0.1 sombersquirrel.com +127.0.0.1 sombersurprise.com +127.0.0.1 somniture.stuff.co.nz +127.0.0.1 somoaudience.com +127.0.0.1 sonobi.com +127.0.0.1 sortable.com +127.0.0.1 sourcepoint.vice.com +127.0.0.1 sovrn.com +127.0.0.1 sp-a-q-f.ib-game.jp +127.0.0.1 spacash.com +127.0.0.1 spaceleadster.com +127.0.0.1 sparklingshelf.com +127.0.0.1 sparkstudios.com +127.0.0.1 speakol.com +127.0.0.1 specificmedia.co.uk +127.0.0.1 specificpop.com +127.0.0.1 speedomizer.com +127.0.0.1 speedshiftmedia.com +127.0.0.1 spellingthoughts.com +127.0.0.1 spezialreporte.de +127.0.0.1 spiffymachine.com +127.0.0.1 spinbox.techtracker.com +127.0.0.1 spinbox.versiontracker.com +127.0.0.1 spinnaker-js.com +127.0.0.1 spirebaboon.com +127.0.0.1 sponsorads.de +127.0.0.1 sponsorpro.de +127.0.0.1 spookysleet.com +127.0.0.1 spoonballoon.com +127.0.0.1 spotlessstamp.com +127.0.0.1 spotscenered.info +127.0.0.1 spotx.tv +127.0.0.1 spotxchange.com +127.0.0.1 springbot.com +127.0.0.1 springserve.com +127.0.0.1 sprysummit.com +127.0.0.1 spulse.net +127.0.0.1 spylog.com +127.0.0.1 spywarelabs.com +127.0.0.1 spywords.com +127.0.0.1 srvmath.com +127.0.0.1 srvtrck.com +127.0.0.1 srwww1.com +127.0.0.1 sshowads.pubmatic.com +127.0.0.1 sskzlabs.com +127.0.0.1 st.dynamicyield.com +127.0.0.1 st.pubmatic.com +127.0.0.1 stack-sonar.com +127.0.0.1 stackadapt.com +127.0.0.1 stakingsmile.com +127.0.0.1 stalesummer.com +127.0.0.1 starffa.com +127.0.0.1 starrynets.com +127.0.0.1 starsmarter.com +127.0.0.1 startapp.com +127.0.0.1 stat-track.com +127.0.0.1 stat.cliche.se +127.0.0.1 stat.dyna.ultraweb.hu +127.0.0.1 stat.pl +127.0.0.1 stat.webmedia.pl +127.0.0.1 stat.xiaomi.com +127.0.0.1 stat.zenon.net +127.0.0.1 stat24.com +127.0.0.1 stat24.meta.ua +127.0.0.1 statcounter.com +127.0.0.1 statdynamic.com +127.0.0.1 static-tracking.klaviyo.com +127.0.0.1 static.etracker.com +127.0.0.1 static.fmpub.net +127.0.0.1 static.itrack.it +127.0.0.1 static.kameleoon.com +127.0.0.1 staticads.btopenworld.com +127.0.0.1 statistik-gallup.net +127.0.0.1 statm.the-adult-company.com +127.0.0.1 stats.blogger.com +127.0.0.1 stats.hyperinzerce.cz +127.0.0.1 stats.merriam-webster.com +127.0.0.1 stats.mirrorfootball.co.uk +127.0.0.1 stats.nextgen-email.com +127.0.0.1 stats.olark.com +127.0.0.1 stats.pusher.com +127.0.0.1 stats.rdphv.net +127.0.0.1 stats.self.com +127.0.0.1 stats.stb-ottow.de +127.0.0.1 stats.townnews.com +127.0.0.1 stats.wordpress.com +127.0.0.1 stats.wp.com +127.0.0.1 stats2.self.com +127.0.0.1 stats4all.com +127.0.0.1 statserv.net +127.0.0.1 statsie.com +127.0.0.1 statxpress.com +127.0.0.1 steadfastsound.com +127.0.0.1 steadfastsystem.com +127.0.0.1 steelhouse.com +127.0.0.1 steelhousemedia.com +127.0.0.1 stickyadstv.com +127.0.0.1 stiffgame.com +127.0.0.1 stimulatingsneeze.com +127.0.0.1 stomachscience.com +127.0.0.1 stopstomach.com +127.0.0.1 storetail.io +127.0.0.1 storygize.net +127.0.0.1 strack.pubmatic.com +127.0.0.1 straightnest.com +127.0.0.1 stretchsquirrel.com +127.0.0.1 studycooking.com +127.0.0.1 stupendoussleet.com +127.0.0.1 stupendoussnow.com +127.0.0.1 subscribe.hearstmags.com +127.0.0.1 succeedscene.com +127.0.0.1 successbuffet.com +127.0.0.1 sugoicounter.com +127.0.0.1 sulkycook.com +127.0.0.1 summerobject.com +127.0.0.1 sumo.com +127.0.0.1 sumome.com +127.0.0.1 sunsetcampfires.com +127.0.0.1 superawesome.tv +127.0.0.1 superchichair.com +127.0.0.1 superclix.de +127.0.0.1 superficialsquare.com +127.0.0.1 supersonicads.com +127.0.0.1 superstats.com +127.0.0.1 supertop.ru +127.0.0.1 supertop100.com +127.0.0.1 supply.colossusssp.com +127.0.0.1 supportwaves.com +127.0.0.1 surveygizmobeacon.s3.amazonaws.com +127.0.0.1 sw88.espn.com +127.0.0.1 swan-swan-goose.com +127.0.0.1 swankysquare.com +127.0.0.1 swingslip.com +127.0.0.1 swordgoose.com +127.0.0.1 synonymoussticks.com +127.0.0.1 systemssummit.com +127.0.0.1 t.appsflyer.com +127.0.0.1 t.bawafx.com +127.0.0.1 t.carta.com +127.0.0.1 t.co +127.0.0.1 t.eloqua.com +127.0.0.1 t.email.superdrug.com +127.0.0.1 t.en25.com +127.0.0.1 t.firstpromoter.com +127.0.0.1 t.insigit.com +127.0.0.1 t.irtyd.com +127.0.0.1 t.leady.com +127.0.0.1 t.mmtrkr.com +127.0.0.1 t.news.browns-restaurants.co.uk +127.0.0.1 t.notif-colissimo-laposte.info +127.0.0.1 t.pie.org +127.0.0.1 t.podcast.co +127.0.0.1 t.pubmatic.com +127.0.0.1 t.salesmatemail.com +127.0.0.1 t.vacations.disneydestinations.com +127.0.0.1 t.visit.disneydestinations.com +127.0.0.1 t.visitorqueue.com +127.0.0.1 t.x.co +127.0.0.1 t1.rorystravelclub.co.uk +127.0.0.1 t1.rorytravelclub-news.co.uk +127.0.0.1 taboola.com +127.0.0.1 tag-demo.mention-me.com +127.0.0.1 tag.mention-me.com +127.0.0.1 tagcommander.com +127.0.0.1 tagger.opecloud.com +127.0.0.1 tags.tiqcdn.com +127.0.0.1 tagtoo.com +127.0.0.1 tailsweep.com +127.0.0.1 tailsweep.se +127.0.0.1 takethatad.com +127.0.0.1 tamgrt.com +127.0.0.1 tangibleteam.com +127.0.0.1 tangyamount.com +127.0.0.1 tapad.com +127.0.0.1 tapfiliate.com +127.0.0.1 tapinfluence.com +127.0.0.1 tapjoy.com +127.0.0.1 tappx.com +127.0.0.1 targad.de +127.0.0.1 target.microsoft.com +127.0.0.1 targeting.api.drift.com +127.0.0.1 targeting.nzme.arcpublishing.com +127.0.0.1 targeting.voxus.tv +127.0.0.1 targetingnow.com +127.0.0.1 targetnet.com +127.0.0.1 targetpoint.com +127.0.0.1 tatsumi-sys.jp +127.0.0.1 tawdryson.com +127.0.0.1 tcads.net +127.0.0.1 teads.tv +127.0.0.1 tealeaf.com +127.0.0.1 tealium.cbsnews.com +127.0.0.1 tealium.com +127.0.0.1 tealiumiq.com +127.0.0.1 tedioustooth.com +127.0.0.1 teenrevenue.com +127.0.0.1 telaria.com +127.0.0.1 telemetry.dropbox.com +127.0.0.1 telemetry.goodlifefitness.com +127.0.0.1 telemetry.malwarebytes.com +127.0.0.1 telemetry.v.dropbox.com +127.0.0.1 temelio.com +127.0.0.1 tend.io +127.0.0.1 tendertest.com +127.0.0.1 ter-jrnl-oc.vidaahub.com +127.0.0.1 terriblethumb.com +127.0.0.1 text-link-ads.com +127.0.0.1 textad.sexsearch.com +127.0.0.1 textads.biz +127.0.0.1 textlinks.com +127.0.0.1 tfag.de +127.0.0.1 the-ozone-project.com +127.0.0.1 theadex.com +127.0.0.1 theadhost.com +127.0.0.1 theadsparks.com +127.0.0.1 thebugs.ws +127.0.0.1 thecrazychili.com +127.0.0.1 themangotea.com +127.0.0.1 themoneytizer.com +127.0.0.1 therapistla.com +127.0.0.1 thewavebeats.com +127.0.0.1 thinkitten.com +127.0.0.1 thirdparty.bnc.lt +127.0.0.1 thirdrespect.com +127.0.0.1 thomastorch.com +127.0.0.1 throtle.io +127.0.0.1 thruport.com +127.0.0.1 thunderhead.com +127.0.0.1 tia.timeinc.net +127.0.0.1 ticketaunt.com +127.0.0.1 ticklesign.com +127.0.0.1 ticksel.com +127.0.0.1 tics.techdirt.com +127.0.0.1 tidaltv.com +127.0.0.1 tidysprite.com +127.0.0.1 tinybar.com +127.0.0.1 tinybluewhale.com +127.0.0.1 tinytendency.com +127.0.0.1 tiresomethunder.com +127.0.0.1 tkbo.com +127.0.0.1 tls.telemetry.swe.quicinc.com +127.0.0.1 tlvmedia.com +127.0.0.1 tm.br.de +127.0.0.1 tnkexchange.com +127.0.0.1 tns-counter.ru +127.0.0.1 toolforthought.com +127.0.0.1 top-site-list.com +127.0.0.1 top.list.ru +127.0.0.1 top.mail.ru +127.0.0.1 top100-images.rambler.ru +127.0.0.1 top100.mafia.ru +127.0.0.1 top123.ro +127.0.0.1 top20free.com +127.0.0.1 toplist.cz +127.0.0.1 toplist.pornhost.com +127.0.0.1 toplista.mw.hu +127.0.0.1 toplistcity.com +127.0.0.1 topsir.com +127.0.0.1 topsites.com.br +127.0.0.1 topstats.com +127.0.0.1 totemcash.com +127.0.0.1 touchclarity.com +127.0.0.1 tour.brazzers.com +127.0.0.1 tr.api.fanbyte.com +127.0.0.1 tracecontent.com +127.0.0.1 track-eu.customer.io +127.0.0.1 track.adform.net +127.0.0.1 track.anchorfree.com +127.0.0.1 track.canva.com +127.0.0.1 track.contently.com +127.0.0.1 track.customer.io +127.0.0.1 track.effiliation.com +127.0.0.1 track.flexlinks.com +127.0.0.1 track.flexlinkspro.com +127.0.0.1 track.lettingaproperty.com +127.0.0.1 track.mailalert.io +127.0.0.1 track.mailerlite.com +127.0.0.1 track.miro.com +127.0.0.1 track.nationalgunrights.org +127.0.0.1 track.privacyatclearbit.com +127.0.0.1 track.pubmatic.com +127.0.0.1 track.segmetrics.io +127.0.0.1 track.smtpmessage.com +127.0.0.1 track.software-codes.com +127.0.0.1 track.spe.schoolmessenger.com +127.0.0.1 track.ultravpn.com +127.0.0.1 track.unear.net +127.0.0.1 track.vcdc.com +127.0.0.1 track.viewdeos.com +127.0.0.1 track.wewilltrcku.com +127.0.0.1 track1.viewdeos.com +127.0.0.1 trackalyzer.com +127.0.0.1 trackedlink.net +127.0.0.1 trackedweb.net +127.0.0.1 tracker.bannerflow.com +127.0.0.1 tracker.cdnbye.com +127.0.0.1 tracker.colatv88xb.cc +127.0.0.1 tracker.icerocket.com +127.0.0.1 tracker.mmdlv.it +127.0.0.1 tracker.optin-lead.com +127.0.0.1 tracker.samplicio.us +127.0.0.1 tracking.adstrategysites.com +127.0.0.1 tracking.casheddy.com +127.0.0.1 tracking.cybertips.uk +127.0.0.1 tracking.epicgames.com +127.0.0.1 tracking.hyros.com +127.0.0.1 tracking.ibxlink.com +127.0.0.1 tracking.intentsify.io +127.0.0.1 tracking.intl.miui.com +127.0.0.1 tracking.jiffyworld.com +127.0.0.1 tracking.markethero.io +127.0.0.1 tracking.miui.com +127.0.0.1 tracking.netalerts.io +127.0.0.1 tracking.olx-st.com +127.0.0.1 tracking.orixa-media.com +127.0.0.1 tracking.p-l-m.com +127.0.0.1 tracking.wetter.at +127.0.0.1 tracking01.walmart.com +127.0.0.1 tracking101.com +127.0.0.1 tracking22.com +127.0.0.1 trackingsoft.com +127.0.0.1 trackmysales.com +127.0.0.1 tradeadexchange.com +127.0.0.1 tradedoubler.com +127.0.0.1 traffic-exchange.com +127.0.0.1 traffic.hyteck.de +127.0.0.1 trafficfactory.biz +127.0.0.1 trafficforce.com +127.0.0.1 trafficholder.com +127.0.0.1 traffichunt.com +127.0.0.1 trafficjunky.net +127.0.0.1 trafficleader.com +127.0.0.1 trafficrouter.io +127.0.0.1 trafficshop.com +127.0.0.1 trafficspaces.net +127.0.0.1 trafficstrategies.com +127.0.0.1 trafficswarm.com +127.0.0.1 trafficz.com +127.0.0.1 traffiq.com +127.0.0.1 trafic.ro +127.0.0.1 tranquilplume.com +127.0.0.1 travis.bosscasinos.com +127.0.0.1 trck.a8.net +127.0.0.1 trck.mtrgt.id +127.0.0.1 trcklion.com +127.0.0.1 treasuredata.com +127.0.0.1 trekdata.com +127.0.0.1 tremendoustime.com +127.0.0.1 tremorhub.com +127.0.0.1 trendcounter.com +127.0.0.1 trendmd.com +127.0.0.1 trialfire.com +127.0.0.1 tribalfusion.com +127.0.0.1 triplelift.com +127.0.0.1 triptease.io +127.0.0.1 trk.4ff.pro +127.0.0.1 trk.bc.shutterfly.com +127.0.0.1 trk.pinterest.com +127.0.0.1 trk.sayerfinancial.com +127.0.0.1 trk.techtarget.com +127.0.0.1 trk1.avdlink.net +127.0.0.1 trk42.net +127.0.0.1 trkm.mg.thegoodybag.co.uk +127.0.0.1 trkn.us +127.0.0.1 trkoptimizer.com +127.0.0.1 trkpnt.ongage.net +127.0.0.1 trmit.com +127.0.0.1 truckstomatoes.com +127.0.0.1 truculentrate.com +127.0.0.1 truehits.net +127.0.0.1 truehits1.gits.net.th +127.0.0.1 truehits2.gits.net.th +127.0.0.1 trust.titanhq.com +127.0.0.1 trustx.org +127.0.0.1 tsa-f.webex.com +127.0.0.1 tsa.webex.com +127.0.0.1 tsyndicate.com +127.0.0.1 tsyndicate.net +127.0.0.1 tubemogul.com +127.0.0.1 tumbleicicle.com +127.0.0.1 turboadv.com +127.0.0.1 turn.com +127.0.0.1 twelvedawn.com +127.0.0.1 twittad.com +127.0.0.1 twyn.com +127.0.0.1 tynt.com +127.0.0.1 typicalteeth.com +127.0.0.1 tyroo.com +127.0.0.1 uarating.com +127.0.0.1 ucfunnel.com +127.0.0.1 udkcrj.com +127.0.0.1 udncoeln.com +127.0.0.1 uib.ff.avast.com +127.0.0.1 ukoffzeh.com +127.0.0.1 ultimateclixx.com +127.0.0.1 ultramercial.com +127.0.0.1 ultraoranges.com +127.0.0.1 unaccountablepie.com +127.0.0.1 unarmedindustry.com +127.0.0.1 unbecominglamp.com +127.0.0.1 understoodocean.com +127.0.0.1 undertone.com +127.0.0.1 unidentifiedanalytics.web.app +127.0.0.1 unloadyourself.com +127.0.0.1 unruly.co +127.0.0.1 unrulymedia.com +127.0.0.1 untd.com +127.0.0.1 unusualtitle.com +127.0.0.1 unwieldyhealth.com +127.0.0.1 unwieldyimpulse.com +127.0.0.1 upgradeyoga.com +127.0.0.1 upu.samsungelectronics.com +127.0.0.1 urbanlaurel.com +127.0.0.1 url9467.comms-2.zoopla.co.uk +127.0.0.1 urlcash.net +127.0.0.1 us.a1.yimg.com +127.0.0.1 userreplay.com +127.0.0.1 userreplay.net +127.0.0.1 users.maxcluster.net +127.0.0.1 utils.mediageneral.net +127.0.0.1 utl-1.com +127.0.0.1 uu.domainforlite.com +127.0.0.1 v1.cnzz.com +127.0.0.1 v1adserver.com +127.0.0.1 valerie.forbes.com +127.0.0.1 validclick.com +127.0.0.1 valuead.com +127.0.0.1 valueclick.com +127.0.0.1 valueclickmedia.com +127.0.0.1 valuecommerce.com +127.0.0.1 vanfireworks.com +127.0.0.1 vcommission.com +127.0.0.1 veille-referencement.com +127.0.0.1 velismedia.com +127.0.0.1 venetrigni.com +127.0.0.1 vengefulgrass.com +127.0.0.1 ventivmedia.com +127.0.0.1 venturead.com +127.0.0.1 vericlick.com +127.0.0.1 vertamedia.com +127.0.0.1 verticalmass.com +127.0.0.1 vervewireless.com +127.0.0.1 vgnp3trk.com +127.0.0.1 vibrantsundown.com +127.0.0.1 vid.pubmatic.com +127.0.0.1 vidcpm.com +127.0.0.1 video-stats.video.google.com +127.0.0.1 videoadex.com +127.0.0.1 videoadstech.org +127.0.0.1 videoegg.com +127.0.0.1 videostats.kakao.com +127.0.0.1 vidora.com +127.0.0.1 view4cash.de +127.0.0.1 viglink.com +127.0.0.1 vilenexus.com +127.0.0.1 virtualvincent.com +127.0.0.1 visiblemeasures.com +127.0.0.1 visistat.com +127.0.0.1 visitbox.de +127.0.0.1 visual-pagerank.fr +127.0.0.1 visualrevenue.com +127.0.0.1 vivads.net +127.0.0.1 vivtracking.com +127.0.0.1 vmmpxl.com +127.0.0.1 voicefive.com +127.0.0.1 volatilevessel.com +127.0.0.1 voluum.com +127.0.0.1 voluumtrk2.com +127.0.0.1 vpon.com +127.0.0.1 vrs.cz +127.0.0.1 vtracy.de +127.0.0.1 vungle.com +127.0.0.1 w55c.net +127.0.0.1 wa.and.co.uk +127.0.0.1 waardex.com +127.0.0.1 warmafterthought.com +127.0.0.1 washbanana.com +127.0.0.1 wdads.sx.atl.publicus.com +127.0.0.1 wdfl.co +127.0.0.1 web-stat.com +127.0.0.1 web.informer.com +127.0.0.1 web2.deja.com +127.0.0.1 webads.co.nz +127.0.0.1 webads.nl +127.0.0.1 webanalytics.zohodcm.com +127.0.0.1 webcash.nl +127.0.0.1 webcontentassessor.com +127.0.0.1 webcounter.cz +127.0.0.1 webcounter.goweb.de +127.0.0.1 webgains.com +127.0.0.1 webiqonline.com +127.0.0.1 weborama.com +127.0.0.1 weborama.fr +127.0.0.1 webpower.com +127.0.0.1 webreseau.com +127.0.0.1 webseoanalytics.com +127.0.0.1 webstat.channel4.com +127.0.0.1 webstat.com +127.0.0.1 webstat.net +127.0.0.1 webtraffic.se +127.0.0.1 webtraxx.de +127.0.0.1 webxcdn.com +127.0.0.1 welved.com +127.0.0.1 werbung.meteoxpress.com +127.0.0.1 wetrack.it +127.0.0.1 whaleads.com +127.0.0.1 wheredoyoucomefrom.ovh +127.0.0.1 whirlwealth.com +127.0.0.1 whiskyqueue.com +127.0.0.1 whisperingcascade.com +127.0.0.1 whisperingcrib.com +127.0.0.1 whisperingsummit.com +127.0.0.1 whoisonline.net +127.0.0.1 wholepagecache.com +127.0.0.1 wickedreports.com +127.0.0.1 widget.educationdynamics.com +127.0.0.1 widget.privy.com +127.0.0.1 wikia-ads.wikia.com +127.0.0.1 wikiquotations.com +127.0.0.1 win.iqm.com +127.0.0.1 window.nixnet.cz +127.0.0.1 wintricksbanner.googlepages.com +127.0.0.1 wirecomic.com +127.0.0.1 wisepops.com +127.0.0.1 witch-counter.de +127.0.0.1 wittypopcorn.com +127.0.0.1 wizaly.com +127.0.0.1 wl.spotify.com +127.0.0.1 wlmarketing.com +127.0.0.1 wondoads.de +127.0.0.1 woopra.com +127.0.0.1 worldrealize.com +127.0.0.1 worldwide-cash.net +127.0.0.1 worriednumber.com +127.0.0.1 wowfunnow.com +127.0.0.1 writerhubs.com +127.0.0.1 wt-eu02.net +127.0.0.1 wt.bankmillennium.pl +127.0.0.1 www-banner.chat.ru +127.0.0.1 www-google-analytics.l.google.com +127.0.0.1 www.dnps.com +127.0.0.1 www.kaplanindex.com +127.0.0.1 www.photo-ads.co.uk +127.0.0.1 www8.glam.com +127.0.0.1 wwwpromoter.com +127.0.0.1 x-traceur.com +127.0.0.1 x6.yakiuchi.com +127.0.0.1 xad.com +127.0.0.1 xapads.com +127.0.0.1 xchange.ro +127.0.0.1 xertive.com +127.0.0.1 xfreeservice.com +127.0.0.1 xg4ken.com +127.0.0.1 xiti.com +127.0.0.1 xplusone.com +127.0.0.1 xponsor.com +127.0.0.1 xpu.samsungelectronics.com +127.0.0.1 xq1.net +127.0.0.1 xtendmedia.com +127.0.0.1 xtracker.logimeter.com +127.0.0.1 xxxcounter.com +127.0.0.1 xxxmyself.com +127.0.0.1 y.ibsys.com +127.0.0.1 yab-adimages.s3.amazonaws.com +127.0.0.1 yadro.ru +127.0.0.1 yandexmetrica.com +127.0.0.1 yepads.com +127.0.0.1 yesads.com +127.0.0.1 yesadvertising.com +127.0.0.1 yg5sjx5kzy.com +127.0.0.1 yieldads.com +127.0.0.1 yieldlab.net +127.0.0.1 yieldmanager.net +127.0.0.1 yieldmo.com +127.0.0.1 yieldoptimizer.com +127.0.0.1 yieldtraffic.com +127.0.0.1 ymetrica1.com +127.0.0.1 yoads.net +127.0.0.1 yoggrt.com +127.0.0.1 youcandrawanything.com +127.0.0.1 youradexchange.com +127.0.0.1 ypu.samsungelectronics.com +127.0.0.1 zangocash.com +127.0.0.1 zanox-affiliate.de +127.0.0.1 zanox.com +127.0.0.1 zantracker.com +127.0.0.1 zarget.com +127.0.0.1 zdbb.net +127.0.0.1 zedo.com +127.0.0.1 zemanta.com +127.0.0.1 zencudo.co.uk +127.0.0.1 zenzuu.com +127.0.0.1 zephyrlabyrinth.com +127.0.0.1 zeus.developershed.com +127.0.0.1 zeusclicks.com +127.0.0.1 zeydoo.com +127.0.0.1 zion-telemetry.api.cnn.io +127.0.0.1 zippingcare.com +127.0.0.1 zlp6s.pw +127.0.0.1 zm232.com +127.0.0.1 zmedia.com +127.0.0.1 zonewedgeshaft.com +127.0.0.1 zpu.samsungelectronics.com +127.0.0.1 zqtk.net +127.0.0.1 zzhc.vnet.cn diff --git a/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat new file mode 100644 index 00000000..e730d8c6 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/publicsuffix.org/list/effective_tld_names.dat @@ -0,0 +1,16411 @@ +// This Source Code Form is subject to the terms of the Mozilla Public +// License, v. 2.0. If a copy of the MPL was not distributed with this +// file, You can obtain one at https://mozilla.org/MPL/2.0/. + +// Please pull this list from, and only from https://publicsuffix.org/list/public_suffix_list.dat, +// rather than any other VCS sites. Pulling from any other URL is not guaranteed to be supported. + +// VERSION: 2026-07-06_09-10-11_UTC +// COMMIT: 5ae2220ad86eab1364821329ff58d28828bddb19 + +// Instructions on pulling and using this list can be found at https://publicsuffix.org/list/. + +// ===BEGIN ICANN DOMAINS=== + +// ac : http://nic.ac/rules.htm +ac +com.ac +edu.ac +gov.ac +mil.ac +net.ac +org.ac + +// ad : https://www.iana.org/domains/root/db/ad.html +// Confirmed by Amadeu Abril i Abril (CORE) 2024-11-17 +ad + +// ae : https://www.iana.org/domains/root/db/ae.html +ae +ac.ae +co.ae +gov.ae +mil.ae +net.ae +org.ae +sch.ae + +// aero : https://information.aero/registration/policies/dmp +aero +// 2LDs +airline.aero +airport.aero +// 2LDs (currently not accepting registration, seemingly never have) +// As of 2024-07, these are marked as reserved for potential 3LD +// registrations (clause 11 "allocated subdomains" in the 2006 TLD +// policy), but the relevant industry partners have not opened them up +// for registration. Current status can be determined from the TLD's +// policy document: 2LDs that are open for registration must list +// their policy in the TLD's policy. Any 2LD without such a policy is +// not open for registrations. +accident-investigation.aero +accident-prevention.aero +aerobatic.aero +aeroclub.aero +aerodrome.aero +agents.aero +air-surveillance.aero +air-traffic-control.aero +aircraft.aero +airtraffic.aero +ambulance.aero +association.aero +author.aero +ballooning.aero +broker.aero +caa.aero +cargo.aero +catering.aero +certification.aero +championship.aero +charter.aero +civilaviation.aero +club.aero +conference.aero +consultant.aero +consulting.aero +control.aero +council.aero +crew.aero +design.aero +dgca.aero +educator.aero +emergency.aero +engine.aero +engineer.aero +entertainment.aero +equipment.aero +exchange.aero +express.aero +federation.aero +flight.aero +freight.aero +fuel.aero +gliding.aero +government.aero +groundhandling.aero +group.aero +hanggliding.aero +homebuilt.aero +insurance.aero +journal.aero +journalist.aero +leasing.aero +logistics.aero +magazine.aero +maintenance.aero +marketplace.aero +media.aero +microlight.aero +modelling.aero +navigation.aero +parachuting.aero +paragliding.aero +passenger-association.aero +pilot.aero +press.aero +production.aero +recreation.aero +repbody.aero +res.aero +research.aero +rotorcraft.aero +safety.aero +scientist.aero +services.aero +show.aero +skydiving.aero +software.aero +student.aero +taxi.aero +trader.aero +trading.aero +trainer.aero +union.aero +workinggroup.aero +works.aero + +// af : https://www.nic.af/domain-price +af +com.af +edu.af +gov.af +net.af +org.af + +// ag : http://www.nic.ag/prices.htm +ag +co.ag +com.ag +net.ag +nom.ag +org.ag + +// ai : http://nic.com.ai/ +ai +com.ai +net.ai +off.ai +org.ai + +// al : http://www.ert.gov.al/ert_alb/faq_det.html?Id=31 +al +com.al +edu.al +gov.al +mil.al +net.al +org.al + +// am : https://www.amnic.net/policy/en/Policy_EN.pdf +// Confirmed by ISOC AM 2024-11-18 +am +co.am +com.am +commune.am +net.am +org.am + +// ao : https://www.iana.org/domains/root/db/ao.html +// https://www.dns.ao/ao/ +ao +co.ao +ed.ao +edu.ao +gov.ao +gv.ao +it.ao +og.ao +org.ao +pb.ao + +// aq : https://www.iana.org/domains/root/db/aq.html +aq + +// ar : https://nic.ar/es/nic-argentina/normativa +ar +bet.ar +com.ar +coop.ar +edu.ar +gob.ar +gov.ar +int.ar +mil.ar +musica.ar +mutual.ar +net.ar +org.ar +seg.ar +senasa.ar +tur.ar + +// arpa : https://www.iana.org/domains/root/db/arpa.html +// Confirmed by registry 2008-06-18 +arpa +e164.arpa +home.arpa +in-addr.arpa +ip6.arpa +iris.arpa +uri.arpa +urn.arpa + +// as : https://www.iana.org/domains/root/db/as.html +as +gov.as + +// asia : https://www.iana.org/domains/root/db/asia.html +asia + +// at : https://www.iana.org/domains/root/db/at.html +// Confirmed by registry 2008-06-17 +at +ac.at +sth.ac.at +co.at +gv.at +or.at + +// au : https://www.iana.org/domains/root/db/au.html +// https://www.auda.org.au/ +// Confirmed by registry 2025-07-16 +au +// 2LDs +asn.au +com.au +edu.au +gov.au +id.au +net.au +org.au +// Historic 2LDs (closed to new registration, but sites still exist) +conf.au +oz.au +// CGDNs : https://www.auda.org.au/au-domain-names/the-different-au-domain-names/state-and-territory-domain-names/ +act.au +nsw.au +nt.au +qld.au +sa.au +tas.au +vic.au +wa.au +// 3LDs +act.edu.au +catholic.edu.au +// eq.edu.au - Removed at the request of the Queensland Department of Education +nsw.edu.au +nt.edu.au +qld.edu.au +sa.edu.au +tas.edu.au +vic.edu.au +wa.edu.au +// act.gov.au - Bug 984824 - Removed at request of Greg Tankard +// nsw.gov.au - Bug 547985 - Removed at request of +// nt.gov.au - Bug 940478 - Removed at request of Greg Connors +qld.gov.au +sa.gov.au +tas.gov.au +vic.gov.au +wa.gov.au +// 4LDs +// education.tas.edu.au - Removed at the request of the Department of Education Tasmania +// schools.nsw.edu.au - Removed at the request of the New South Wales Department of Education. + +// aw : https://www.iana.org/domains/root/db/aw.html +aw +com.aw + +// ax : https://www.iana.org/domains/root/db/ax.html +ax + +// az : https://www.iana.org/domains/root/db/az.html +// Confirmed via https://whois.az/?page_id=10 2024-12-11 +az +biz.az +co.az +com.az +edu.az +gov.az +info.az +int.az +mil.az +name.az +net.az +org.az +pp.az +// No longer available for registration, however domains exist as of 2024-12-11 +// see https://whois.az/?page_id=783 +pro.az + +// ba : https://www.iana.org/domains/root/db/ba.html +ba +com.ba +edu.ba +gov.ba +mil.ba +net.ba +org.ba + +// bb : https://www.iana.org/domains/root/db/bb.html +bb +biz.bb +co.bb +com.bb +edu.bb +gov.bb +info.bb +net.bb +org.bb +store.bb +tv.bb + +// bd : https://www.iana.org/domains/root/db/bd.html +// Confirmed by registry +bd +ac.bd +ai.bd +co.bd +com.bd +edu.bd +gov.bd +id.bd +info.bd +it.bd +mil.bd +net.bd +org.bd +sch.bd +tv.bd + +// be : https://www.iana.org/domains/root/db/be.html +// Confirmed by registry 2008-06-08 +be +ac.be + +// bf : https://www.iana.org/domains/root/db/bf.html +bf +gov.bf + +// bg : https://www.iana.org/domains/root/db/bg.html +// https://www.register.bg/user/static/rules/en/index.html +bg +0.bg +1.bg +2.bg +3.bg +4.bg +5.bg +6.bg +7.bg +8.bg +9.bg +a.bg +b.bg +c.bg +d.bg +e.bg +f.bg +g.bg +h.bg +i.bg +j.bg +k.bg +l.bg +m.bg +n.bg +o.bg +p.bg +q.bg +r.bg +s.bg +t.bg +u.bg +v.bg +w.bg +x.bg +y.bg +z.bg + +// bh : https://www.iana.org/domains/root/db/bh.html +bh +com.bh +edu.bh +gov.bh +net.bh +org.bh + +// bi : https://www.iana.org/domains/root/db/bi.html +// http://whois.nic.bi/ +bi +co.bi +com.bi +edu.bi +or.bi +org.bi + +// biz : https://www.iana.org/domains/root/db/biz.html +biz + +// bj : https://nic.bj/bj-suffixes.txt +// Submitted by registry +bj +africa.bj +agro.bj +architectes.bj +assur.bj +avocats.bj +co.bj +com.bj +eco.bj +econo.bj +edu.bj +info.bj +loisirs.bj +money.bj +net.bj +org.bj +ote.bj +restaurant.bj +resto.bj +tourism.bj +univ.bj + +// bm : https://www.bermudanic.bm/domain-registration/index.php +bm +com.bm +edu.bm +gov.bm +net.bm +org.bm + +// bn : http://www.bnnic.bn/faqs +bn +com.bn +edu.bn +gov.bn +net.bn +org.bn + +// bo : https://nic.bo +// Confirmed by registry 2024-11-19 +bo +com.bo +edu.bo +gob.bo +int.bo +mil.bo +net.bo +org.bo +tv.bo +web.bo +// Social Domains +academia.bo +agro.bo +arte.bo +blog.bo +bolivia.bo +ciencia.bo +cooperativa.bo +democracia.bo +deporte.bo +ecologia.bo +economia.bo +empresa.bo +indigena.bo +industria.bo +info.bo +medicina.bo +movimiento.bo +musica.bo +natural.bo +nombre.bo +noticias.bo +patria.bo +plurinacional.bo +politica.bo +profesional.bo +pueblo.bo +revista.bo +salud.bo +tecnologia.bo +tksat.bo +transporte.bo +wiki.bo + +// br : http://registro.br/dominio/categoria.html +// Submitted by registry +br +9guacu.br +abc.br +adm.br +adv.br +agr.br +aju.br +am.br +anani.br +aparecida.br +api.br +app.br +arq.br +art.br +ato.br +b.br +barueri.br +belem.br +bet.br +bhz.br +bib.br +bio.br +blog.br +bmd.br +boavista.br +bsb.br +campinagrande.br +campinas.br +caxias.br +cim.br +cng.br +cnt.br +com.br +contagem.br +coop.br +coz.br +cri.br +cuiaba.br +curitiba.br +def.br +des.br +det.br +dev.br +ecn.br +eco.br +edu.br +emp.br +enf.br +eng.br +esp.br +etc.br +eti.br +far.br +feira.br +flog.br +floripa.br +fm.br +fnd.br +fortal.br +fot.br +foz.br +fst.br +g12.br +geo.br +ggf.br +goiania.br +gov.br +// gov.br 26 states + df https://en.wikipedia.org/wiki/States_of_Brazil +ac.gov.br +al.gov.br +am.gov.br +ap.gov.br +ba.gov.br +ce.gov.br +df.gov.br +es.gov.br +go.gov.br +ma.gov.br +mg.gov.br +ms.gov.br +mt.gov.br +pa.gov.br +pb.gov.br +pe.gov.br +pi.gov.br +pr.gov.br +rj.gov.br +rn.gov.br +ro.gov.br +rr.gov.br +rs.gov.br +sc.gov.br +se.gov.br +sp.gov.br +to.gov.br +gru.br +ia.br +imb.br +ind.br +inf.br +jab.br +jampa.br +jdf.br +joinville.br +jor.br +jus.br +leg.br +leilao.br +lel.br +log.br +londrina.br +macapa.br +maceio.br +manaus.br +maringa.br +mat.br +med.br +mil.br +morena.br +mp.br +mus.br +natal.br +net.br +niteroi.br +*.nom.br +not.br +ntr.br +odo.br +ong.br +org.br +osasco.br +palmas.br +poa.br +ppg.br +pro.br +psc.br +psi.br +pvh.br +qsl.br +radio.br +rec.br +recife.br +rep.br +ribeirao.br +rio.br +riobranco.br +riopreto.br +salvador.br +sampa.br +santamaria.br +santoandre.br +saobernardo.br +saogonca.br +seg.br +sjc.br +slg.br +slz.br +social.br +sorocaba.br +srv.br +taxi.br +tc.br +tec.br +teo.br +the.br +tmp.br +trd.br +tur.br +tv.br +udi.br +vet.br +vix.br +vlog.br +wiki.br +xyz.br +zlg.br + +// bs : http://www.nic.bs/rules.html +bs +com.bs +edu.bs +gov.bs +net.bs +org.bs + +// bt : https://www.iana.org/domains/root/db/bt.html +bt +com.bt +edu.bt +gov.bt +net.bt +org.bt + +// bv : No registrations at this time. +// Submitted by registry +bv + +// bw : https://www.iana.org/domains/root/db/bw.html +// https://nic.net.bw/bw-name-structure +bw +ac.bw +co.bw +gov.bw +net.bw +org.bw + +// by : https://www.iana.org/domains/root/db/by.html +// http://tld.by/rules_2006_en.html +// list of other 2nd level tlds ? +by +gov.by +mil.by +// Official information does not indicate that com.by is a reserved +// second-level domain, but it's being used as one (see www.google.com.by and +// www.yahoo.com.by, for example), so we list it here for safety's sake. +com.by +// http://hoster.by/ +of.by + +// bz : https://www.iana.org/domains/root/db/bz.html +// http://www.belizenic.bz/ +bz +co.bz +com.bz +edu.bz +gov.bz +net.bz +org.bz + +// ca : https://www.iana.org/domains/root/db/ca.html +ca +// ca geographical names +ab.ca +bc.ca +mb.ca +nb.ca +nf.ca +nl.ca +ns.ca +nt.ca +nu.ca +on.ca +pe.ca +qc.ca +sk.ca +yk.ca +// gc.ca: https://en.wikipedia.org/wiki/.gc.ca +// see also: http://registry.gc.ca/en/SubdomainFAQ +gc.ca + +// cat : https://www.iana.org/domains/root/db/cat.html +cat + +// cc : https://www.iana.org/domains/root/db/cc.html +cc + +// cd : https://www.iana.org/domains/root/db/cd.html +// https://www.nic.cd +cd +gov.cd + +// cf : https://www.iana.org/domains/root/db/cf.html +cf + +// cg : https://www.iana.org/domains/root/db/cg.html +cg + +// ch : https://www.iana.org/domains/root/db/ch.html +ch + +// ci : https://www.iana.org/domains/root/db/ci.html +ci +ac.ci +aéroport.ci +asso.ci +co.ci +com.ci +ed.ci +edu.ci +go.ci +gouv.ci +int.ci +net.ci +or.ci +org.ci + +// ck : https://www.iana.org/domains/root/db/ck.html +*.ck +!www.ck + +// cl : https://www.nic.cl +// Confirmed by .CL registry +cl +co.cl +gob.cl +gov.cl +mil.cl + +// cm : https://www.iana.org/domains/root/db/cm.html plus bug 981927 +cm +co.cm +com.cm +gov.cm +net.cm + +// cn : https://www.iana.org/domains/root/db/cn.html +// Submitted by registry +cn +ac.cn +com.cn +edu.cn +gov.cn +mil.cn +net.cn +org.cn +公司.cn +網絡.cn +网络.cn +// cn geographic names +ah.cn +bj.cn +cq.cn +fj.cn +gd.cn +gs.cn +gx.cn +gz.cn +ha.cn +hb.cn +he.cn +hi.cn +hk.cn +hl.cn +hn.cn +jl.cn +js.cn +jx.cn +ln.cn +mo.cn +nm.cn +nx.cn +qh.cn +sc.cn +sd.cn +sh.cn +sn.cn +sx.cn +tj.cn +tw.cn +xj.cn +xz.cn +yn.cn +zj.cn + +// co : https://www.iana.org/domains/root/db/co.html +// https://www.cointernet.com.co/como-funciona-un-dominio-restringido +// Confirmed by registry 2024-11-18 +co +com.co +edu.co +gov.co +mil.co +net.co +nom.co +org.co + +// com : https://www.iana.org/domains/root/db/com.html +com + +// coop : https://www.iana.org/domains/root/db/coop.html +coop + +// cr : https://nic.cr/capitulo-1-registro-de-un-nombre-de-dominio/ +cr +ac.cr +co.cr +ed.cr +fi.cr +go.cr +or.cr +sa.cr + +// cu : https://www.iana.org/domains/root/db/cu.html +cu +com.cu +edu.cu +gob.cu +inf.cu +nat.cu +net.cu +org.cu + +// cv : https://www.iana.org/domains/root/db/cv.html +// https://ola.cv/domain-extensions-under-cv/ +// Confirmed by registry 2024-11-26 +cv +com.cv +edu.cv +id.cv +int.cv +net.cv +nome.cv +org.cv +publ.cv + +// cw : https://www.uoc.cw/cw-registry +// Confirmed by registry 2024-11-19 +cw +com.cw +edu.cw +net.cw +org.cw + +// cx : https://www.iana.org/domains/root/db/cx.html +// list of other 2nd level tlds ? +cx +gov.cx + +// cy : http://www.nic.cy/ +// Submitted by Panayiotou Fotia +// https://nic.cy/wp-content/uploads/2024/01/Create-Request-for-domain-name-registration-1.pdf +cy +ac.cy +biz.cy +com.cy +ekloges.cy +gov.cy +ltd.cy +mil.cy +net.cy +org.cy +press.cy +pro.cy +tm.cy + +// cz : https://www.iana.org/domains/root/db/cz.html +// Confirmed by registry 2025-08-06 +cz +gov.cz + +// de : https://www.iana.org/domains/root/db/de.html +// Confirmed by registry (with technical +// reservations) 2008-07-01 +de + +// dj : https://www.iana.org/domains/root/db/dj.html +dj + +// dk : https://www.iana.org/domains/root/db/dk.html +// Confirmed by registry 2008-06-17 +dk + +// dm : https://www.iana.org/domains/root/db/dm.html +// https://nic.dm/policies/pdf/DMRulesandGuidelines2024v1.pdf +// Confirmed by registry 2024-11-19 +dm +co.dm +com.dm +edu.dm +gov.dm +net.dm +org.dm + +// do : https://www.iana.org/domains/root/db/do.html +do +art.do +com.do +edu.do +gob.do +gov.do +mil.do +net.do +org.do +sld.do +web.do + +// dz : http://www.nic.dz/images/pdf_nic/charte.pdf +dz +art.dz +asso.dz +com.dz +edu.dz +gov.dz +net.dz +org.dz +pol.dz +soc.dz +tm.dz + +// ec : https://www.nic.ec/ +// Submitted by registry +ec +abg.ec +adm.ec +agron.ec +arqt.ec +art.ec +bar.ec +chef.ec +com.ec +cont.ec +cpa.ec +cue.ec +dent.ec +dgn.ec +disco.ec +doc.ec +edu.ec +eng.ec +esm.ec +fin.ec +fot.ec +gal.ec +gob.ec +gov.ec +gye.ec +ibr.ec +info.ec +k12.ec +lat.ec +loj.ec +med.ec +mil.ec +mktg.ec +mon.ec +net.ec +ntr.ec +odont.ec +org.ec +pro.ec +prof.ec +psic.ec +psiq.ec +pub.ec +rio.ec +rrpp.ec +sal.ec +tech.ec +tul.ec +tur.ec +uio.ec +vet.ec +xxx.ec + +// edu : https://www.iana.org/domains/root/db/edu.html +edu + +// ee : https://www.internet.ee/domains/general-domains-and-procedure-for-registration-of-sub-domains-under-general-domains +ee +aip.ee +com.ee +edu.ee +fie.ee +gov.ee +lib.ee +med.ee +org.ee +pri.ee +riik.ee + +// eg : https://www.iana.org/domains/root/db/eg.html +// https://domain.eg/en/domain-rules/subdomain-names-types/ +eg +ac.eg +com.eg +edu.eg +eun.eg +gov.eg +info.eg +me.eg +mil.eg +name.eg +net.eg +org.eg +sci.eg +sport.eg +tv.eg + +// er : https://www.iana.org/domains/root/db/er.html +*.er + +// es : https://www.dominios.es/en +es +com.es +edu.es +gob.es +nom.es +org.es + +// et : https://www.iana.org/domains/root/db/et.html +et +biz.et +com.et +edu.et +gov.et +info.et +name.et +net.et +org.et + +// eu : https://www.iana.org/domains/root/db/eu.html +eu + +// fi : https://www.iana.org/domains/root/db/fi.html +fi +// aland.fi : https://www.iana.org/domains/root/db/ax.html +// This domain is being phased out in favor of .ax. As there are still many +// domains under aland.fi, we still keep it on the list until aland.fi is +// completely removed. +aland.fi + +// fj : https://www.iana.org/domains/root/db/fj.html +fj +ac.fj +biz.fj +com.fj +edu.fj +gov.fj +id.fj +info.fj +mil.fj +name.fj +net.fj +org.fj +pro.fj + +// fk : https://www.iana.org/domains/root/db/fk.html +*.fk + +// fm : https://www.iana.org/domains/root/db/fm.html +fm +com.fm +edu.fm +net.fm +org.fm + +// fo : https://www.iana.org/domains/root/db/fo.html +fo + +// fr : https://www.afnic.fr/ https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf +fr +asso.fr +com.fr +gouv.fr +nom.fr +prd.fr +tm.fr +// Other SLDs now selfmanaged out of AFNIC range. Former "domaines sectoriels", still registration suffixes +avoues.fr +cci.fr +greta.fr +huissier-justice.fr + +// ga : https://www.iana.org/domains/root/db/ga.html +ga + +// gb : This registry is effectively dormant +// Submitted by registry +gb + +// gd : https://www.iana.org/domains/root/db/gd.html +gd +edu.gd +gov.gd + +// ge : https://nic.ge/en/administrator/the-ge-domain-regulations +// Confirmed by registry 2024-11-20 +ge +com.ge +edu.ge +gov.ge +net.ge +org.ge +pvt.ge +school.ge + +// gf : https://www.iana.org/domains/root/db/gf.html +gf + +// gg : https://www.channelisles.net/register-1/register-direct +// Confirmed by registry 2013-11-28 +gg +co.gg +net.gg +org.gg + +// gh : https://www.iana.org/domains/root/db/gh.html +// https://www.nic.gh/ +// Although domains directly at second level are not possible at the moment, +// they have been possible for some time and may come back. +gh +biz.gh +com.gh +edu.gh +gov.gh +mil.gh +net.gh +org.gh + +// gi : http://www.nic.gi/rules.html +gi +com.gi +edu.gi +gov.gi +ltd.gi +mod.gi +org.gi + +// gl : https://www.iana.org/domains/root/db/gl.html +// http://nic.gl +gl +co.gl +com.gl +edu.gl +net.gl +org.gl + +// gm : http://www.nic.gm/htmlpages%5Cgm-policy.htm +gm + +// gn : http://psg.com/dns/gn/gn.txt +// Submitted by registry +gn +ac.gn +com.gn +edu.gn +gov.gn +net.gn +org.gn + +// gov : https://www.iana.org/domains/root/db/gov.html +gov + +// gp : http://www.nic.gp/index.php?lang=en +gp +asso.gp +com.gp +edu.gp +mobi.gp +net.gp +org.gp + +// gq : https://www.iana.org/domains/root/db/gq.html +gq + +// gr : https://www.iana.org/domains/root/db/gr.html +// Submitted by registry +gr +com.gr +edu.gr +gov.gr +net.gr +org.gr + +// gs : https://www.iana.org/domains/root/db/gs.html +gs + +// gt : https://www.gt/sitio/registration_policy.php?lang=en +gt +com.gt +edu.gt +gob.gt +ind.gt +mil.gt +net.gt +org.gt + +// gu : http://gadao.gov.gu/register.html +// University of Guam : https://www.uog.edu +// Submitted by uognoc@triton.uog.edu +gu +com.gu +edu.gu +gov.gu +guam.gu +info.gu +net.gu +org.gu +web.gu + +// gw : https://www.iana.org/domains/root/db/gw.html +// gw : https://nic.gw/regras/ +gw + +// gy : https://www.iana.org/domains/root/db/gy.html +// http://registry.gy/ +gy +co.gy +com.gy +edu.gy +gov.gy +net.gy +org.gy + +// hk : https://www.hkirc.hk +// Submitted by registry +hk +com.hk +edu.hk +gov.hk +idv.hk +net.hk +org.hk +个人.hk +個人.hk +公司.hk +政府.hk +敎育.hk +教育.hk +箇人.hk +組織.hk +組织.hk +網絡.hk +網络.hk +组織.hk +组织.hk +网絡.hk +网络.hk + +// hm : https://www.iana.org/domains/root/db/hm.html +hm + +// hn : https://www.iana.org/domains/root/db/hn.html +hn +com.hn +edu.hn +gob.hn +mil.hn +net.hn +org.hn + +// hr : http://www.dns.hr/documents/pdf/HRTLD-regulations.pdf +hr +com.hr +from.hr +iz.hr +name.hr + +// ht : http://www.nic.ht/info/charte.cfm +ht +adult.ht +art.ht +asso.ht +com.ht +coop.ht +edu.ht +firm.ht +gouv.ht +info.ht +med.ht +net.ht +org.ht +perso.ht +pol.ht +pro.ht +rel.ht +shop.ht + +// hu : https://www.iana.org/domains/root/db/hu.html +// Confirmed by registry 2008-06-12 +hu +2000.hu +agrar.hu +bolt.hu +casino.hu +city.hu +co.hu +erotica.hu +erotika.hu +film.hu +forum.hu +games.hu +hotel.hu +info.hu +ingatlan.hu +jogasz.hu +konyvelo.hu +lakas.hu +media.hu +news.hu +org.hu +priv.hu +reklam.hu +sex.hu +shop.hu +sport.hu +suli.hu +szex.hu +tm.hu +tozsde.hu +utazas.hu +video.hu + +// id : https://www.iana.org/domains/root/db/id.html +id +ac.id +ai.id +biz.id +co.id +desa.id +go.id +kop.id +mil.id +my.id +net.id +or.id +ponpes.id +sch.id +web.id +// xn--9tfky.id (.id, Und-Bali) +ᬩᬮᬶ.id + +// ie : https://www.iana.org/domains/root/db/ie.html +ie +gov.ie + +// il : http://www.isoc.org.il/domains/ +// see also: https://en.isoc.org.il/il-cctld/registration-rules +// ISOC-IL (operated by .il Registry) +il +ac.il +co.il +gov.il +idf.il +k12.il +muni.il +net.il +org.il +// xn--4dbrk0ce ("Israel", Hebrew) : IL +ישראל +// xn--4dbgdty6c.xn--4dbrk0ce. +אקדמיה.ישראל +// xn--5dbhl8d.xn--4dbrk0ce. +ישוב.ישראל +// xn--8dbq2a.xn--4dbrk0ce. +צהל.ישראל +// xn--hebda8b.xn--4dbrk0ce. +ממשל.ישראל + +// im : https://www.nic.im/ +// Submitted by registry +im +ac.im +co.im +ltd.co.im +plc.co.im +com.im +net.im +org.im +tt.im +tv.im + +// in : https://www.iana.org/domains/root/db/in.html +// see also: https://registry.in/policies +// Please note, that nic.in is not an official eTLD, but used by most +// government institutions. +// Confirmed by Gaurav Kansal 2025-11-06 +in +5g.in +6g.in +ac.in +ai.in +am.in +bank.in +bihar.in +biz.in +business.in +ca.in +cn.in +co.in +com.in +coop.in +cs.in +delhi.in +dr.in +edu.in +er.in +fin.in +firm.in +gen.in +gov.in +gujarat.in +ind.in +info.in +int.in +internet.in +io.in +me.in +mil.in +net.in +nic.in +org.in +pg.in +post.in +pro.in +res.in +travel.in +tv.in +uk.in +up.in +us.in + +// info : https://www.iana.org/domains/root/db/info.html +info + +// int : https://www.iana.org/domains/root/db/int.html +// Confirmed by registry 2008-06-18 +int +eu.int + +// io : http://www.nic.io/rules.htm +io +co.io +com.io +edu.io +gov.io +mil.io +net.io +nom.io +org.io + +// iq : http://www.cmc.iq/english/iq/iqregister1.htm +iq +com.iq +edu.iq +gov.iq +mil.iq +net.iq +org.iq + +// ir : http://www.nic.ir/Terms_and_Conditions_ir,_Appendix_1_Domain_Rules +// Also see http://www.nic.ir/Internationalized_Domain_Names +// Two .ir entries added at request of , 2010-04-16 +ir +ac.ir +co.ir +gov.ir +id.ir +net.ir +org.ir +sch.ir +// xn--mgba3a4f16a.ir (.ir, Persian YEH) +ایران.ir +// xn--mgba3a4fra.ir (.ir, Arabic YEH) +ايران.ir + +// is : http://www.isnic.is/domain/rules.php +// Confirmed by registry 2024-11-17 +is + +// it : https://www.iana.org/domains/root/db/it.html +// https://www.nic.it/ +it +edu.it +gov.it +// Regions (3.3.1) +// https://www.nic.it/en/manage-your-it/forms-and-docs -> "Assignment and Management of domain names" +abr.it +abruzzo.it +aosta-valley.it +aostavalley.it +bas.it +basilicata.it +cal.it +calabria.it +cam.it +campania.it +emilia-romagna.it +emiliaromagna.it +emr.it +friuli-v-giulia.it +friuli-ve-giulia.it +friuli-vegiulia.it +friuli-venezia-giulia.it +friuli-veneziagiulia.it +friuli-vgiulia.it +friuliv-giulia.it +friulive-giulia.it +friulivegiulia.it +friulivenezia-giulia.it +friuliveneziagiulia.it +friulivgiulia.it +fvg.it +laz.it +lazio.it +lig.it +liguria.it +lom.it +lombardia.it +lombardy.it +lucania.it +mar.it +marche.it +mol.it +molise.it +piedmont.it +piemonte.it +pmn.it +pug.it +puglia.it +sar.it +sardegna.it +sardinia.it +sic.it +sicilia.it +sicily.it +taa.it +tos.it +toscana.it +trentin-sud-tirol.it +trentin-süd-tirol.it +trentin-sudtirol.it +trentin-südtirol.it +trentin-sued-tirol.it +trentin-suedtirol.it +trentino.it +trentino-a-adige.it +trentino-aadige.it +trentino-alto-adige.it +trentino-altoadige.it +trentino-s-tirol.it +trentino-stirol.it +trentino-sud-tirol.it +trentino-süd-tirol.it +trentino-sudtirol.it +trentino-südtirol.it +trentino-sued-tirol.it +trentino-suedtirol.it +trentinoa-adige.it +trentinoaadige.it +trentinoalto-adige.it +trentinoaltoadige.it +trentinos-tirol.it +trentinostirol.it +trentinosud-tirol.it +trentinosüd-tirol.it +trentinosudtirol.it +trentinosüdtirol.it +trentinosued-tirol.it +trentinosuedtirol.it +trentinsud-tirol.it +trentinsüd-tirol.it +trentinsudtirol.it +trentinsüdtirol.it +trentinsued-tirol.it +trentinsuedtirol.it +tuscany.it +umb.it +umbria.it +val-d-aosta.it +val-daosta.it +vald-aosta.it +valdaosta.it +valle-aosta.it +valle-d-aosta.it +valle-daosta.it +valleaosta.it +valled-aosta.it +valledaosta.it +vallee-aoste.it +vallée-aoste.it +vallee-d-aoste.it +vallée-d-aoste.it +valleeaoste.it +valléeaoste.it +valleedaoste.it +valléedaoste.it +vao.it +vda.it +ven.it +veneto.it +// Provinces (3.3.2) +ag.it +agrigento.it +al.it +alessandria.it +alto-adige.it +altoadige.it +an.it +ancona.it +andria-barletta-trani.it +andria-trani-barletta.it +andriabarlettatrani.it +andriatranibarletta.it +ao.it +aosta.it +aoste.it +ap.it +aq.it +aquila.it +ar.it +arezzo.it +ascoli-piceno.it +ascolipiceno.it +asti.it +at.it +av.it +avellino.it +ba.it +balsan.it +balsan-sudtirol.it +balsan-südtirol.it +balsan-suedtirol.it +bari.it +barletta-trani-andria.it +barlettatraniandria.it +belluno.it +benevento.it +bergamo.it +bg.it +bi.it +biella.it +bl.it +bn.it +bo.it +bologna.it +bolzano.it +bolzano-altoadige.it +bozen.it +bozen-sudtirol.it +bozen-südtirol.it +bozen-suedtirol.it +br.it +brescia.it +brindisi.it +bs.it +bt.it +bulsan.it +bulsan-sudtirol.it +bulsan-südtirol.it +bulsan-suedtirol.it +bz.it +ca.it +cagliari.it +caltanissetta.it +campidano-medio.it +campidanomedio.it +campobasso.it +carbonia-iglesias.it +carboniaiglesias.it +carrara-massa.it +carraramassa.it +caserta.it +catania.it +catanzaro.it +cb.it +ce.it +cesena-forli.it +cesena-forlì.it +cesenaforli.it +cesenaforlì.it +ch.it +chieti.it +ci.it +cl.it +cn.it +co.it +como.it +cosenza.it +cr.it +cremona.it +crotone.it +cs.it +ct.it +cuneo.it +cz.it +dell-ogliastra.it +dellogliastra.it +en.it +enna.it +fc.it +fe.it +fermo.it +ferrara.it +fg.it +fi.it +firenze.it +florence.it +fm.it +foggia.it +forli-cesena.it +forlì-cesena.it +forlicesena.it +forlìcesena.it +fr.it +frosinone.it +ge.it +genoa.it +genova.it +go.it +gorizia.it +gr.it +grosseto.it +iglesias-carbonia.it +iglesiascarbonia.it +im.it +imperia.it +is.it +isernia.it +kr.it +la-spezia.it +laquila.it +laspezia.it +latina.it +lc.it +le.it +lecce.it +lecco.it +li.it +livorno.it +lo.it +lodi.it +lt.it +lu.it +lucca.it +macerata.it +mantova.it +massa-carrara.it +massacarrara.it +matera.it +mb.it +mc.it +me.it +medio-campidano.it +mediocampidano.it +messina.it +mi.it +milan.it +milano.it +mn.it +mo.it +modena.it +monza.it +monza-brianza.it +monza-e-della-brianza.it +monzabrianza.it +monzaebrianza.it +monzaedellabrianza.it +ms.it +mt.it +na.it +naples.it +napoli.it +no.it +novara.it +nu.it +nuoro.it +og.it +ogliastra.it +olbia-tempio.it +olbiatempio.it +or.it +oristano.it +ot.it +pa.it +padova.it +padua.it +palermo.it +parma.it +pavia.it +pc.it +pd.it +pe.it +perugia.it +pesaro-urbino.it +pesarourbino.it +pescara.it +pg.it +pi.it +piacenza.it +pisa.it +pistoia.it +pn.it +po.it +pordenone.it +potenza.it +pr.it +prato.it +pt.it +pu.it +pv.it +pz.it +ra.it +ragusa.it +ravenna.it +rc.it +re.it +reggio-calabria.it +reggio-emilia.it +reggiocalabria.it +reggioemilia.it +rg.it +ri.it +rieti.it +rimini.it +rm.it +rn.it +ro.it +roma.it +rome.it +rovigo.it +sa.it +salerno.it +sassari.it +savona.it +si.it +siena.it +siracusa.it +so.it +sondrio.it +sp.it +sr.it +ss.it +südtirol.it +suedtirol.it +sv.it +ta.it +taranto.it +te.it +tempio-olbia.it +tempioolbia.it +teramo.it +terni.it +tn.it +to.it +torino.it +tp.it +tr.it +trani-andria-barletta.it +trani-barletta-andria.it +traniandriabarletta.it +tranibarlettaandria.it +trapani.it +trento.it +treviso.it +trieste.it +ts.it +turin.it +tv.it +ud.it +udine.it +urbino-pesaro.it +urbinopesaro.it +va.it +varese.it +vb.it +vc.it +ve.it +venezia.it +venice.it +verbania.it +vercelli.it +verona.it +vi.it +vibo-valentia.it +vibovalentia.it +vicenza.it +viterbo.it +vr.it +vs.it +vt.it +vv.it + +// je : https://www.iana.org/domains/root/db/je.html +// Confirmed by registry 2013-11-28 +je +co.je +net.je +org.je + +// jm : http://www.com.jm/register.html +*.jm + +// jo : https://www.dns.jo/JoFamily.aspx +// Confirmed by registry 2024-11-17 +jo +agri.jo +ai.jo +com.jo +edu.jo +eng.jo +fm.jo +gov.jo +mil.jo +net.jo +org.jo +per.jo +phd.jo +sch.jo +tv.jo + +// jobs : https://www.iana.org/domains/root/db/jobs.html +jobs + +// jp : https://www.iana.org/domains/root/db/jp.html +// http://jprs.co.jp/en/jpdomain.html +// Confirmed by registry 2024-11-22 +jp +// jp organizational type names +ac.jp +ad.jp +co.jp +ed.jp +go.jp +gr.jp +lg.jp +ne.jp +or.jp +// jp prefecture type names +aichi.jp +akita.jp +aomori.jp +chiba.jp +ehime.jp +fukui.jp +fukuoka.jp +fukushima.jp +gifu.jp +gunma.jp +hiroshima.jp +hokkaido.jp +hyogo.jp +ibaraki.jp +ishikawa.jp +iwate.jp +kagawa.jp +kagoshima.jp +kanagawa.jp +kochi.jp +kumamoto.jp +kyoto.jp +mie.jp +miyagi.jp +miyazaki.jp +nagano.jp +nagasaki.jp +nara.jp +niigata.jp +oita.jp +okayama.jp +okinawa.jp +osaka.jp +saga.jp +saitama.jp +shiga.jp +shimane.jp +shizuoka.jp +tochigi.jp +tokushima.jp +tokyo.jp +tottori.jp +toyama.jp +wakayama.jp +yamagata.jp +yamaguchi.jp +yamanashi.jp +三重.jp +京都.jp +佐賀.jp +兵庫.jp +北海道.jp +千葉.jp +和歌山.jp +埼玉.jp +大分.jp +大阪.jp +奈良.jp +宮城.jp +宮崎.jp +富山.jp +山口.jp +山形.jp +山梨.jp +岐阜.jp +岡山.jp +岩手.jp +島根.jp +広島.jp +徳島.jp +愛媛.jp +愛知.jp +新潟.jp +東京.jp +栃木.jp +沖縄.jp +滋賀.jp +熊本.jp +石川.jp +神奈川.jp +福井.jp +福岡.jp +福島.jp +秋田.jp +群馬.jp +茨城.jp +長崎.jp +長野.jp +青森.jp +静岡.jp +香川.jp +高知.jp +鳥取.jp +鹿児島.jp +// jp geographic type names +// http://jprs.jp/doc/rule/saisoku-1.html +// 2024-11-22: JPRS confirmed that jp geographic type names no longer accept new registrations. +// Once all existing registrations expire (marking full discontinuation), these suffixes +// will be removed from the PSL. +*.kawasaki.jp +!city.kawasaki.jp +*.kitakyushu.jp +!city.kitakyushu.jp +*.kobe.jp +!city.kobe.jp +*.nagoya.jp +!city.nagoya.jp +*.sapporo.jp +!city.sapporo.jp +*.sendai.jp +!city.sendai.jp +*.yokohama.jp +!city.yokohama.jp +// 4th level registration +aisai.aichi.jp +ama.aichi.jp +anjo.aichi.jp +asuke.aichi.jp +chiryu.aichi.jp +chita.aichi.jp +fuso.aichi.jp +gamagori.aichi.jp +handa.aichi.jp +hazu.aichi.jp +hekinan.aichi.jp +higashiura.aichi.jp +ichinomiya.aichi.jp +inazawa.aichi.jp +inuyama.aichi.jp +isshiki.aichi.jp +iwakura.aichi.jp +kanie.aichi.jp +kariya.aichi.jp +kasugai.aichi.jp +kira.aichi.jp +kiyosu.aichi.jp +komaki.aichi.jp +konan.aichi.jp +kota.aichi.jp +mihama.aichi.jp +miyoshi.aichi.jp +nishio.aichi.jp +nisshin.aichi.jp +obu.aichi.jp +oguchi.aichi.jp +oharu.aichi.jp +okazaki.aichi.jp +owariasahi.aichi.jp +seto.aichi.jp +shikatsu.aichi.jp +shinshiro.aichi.jp +shitara.aichi.jp +tahara.aichi.jp +takahama.aichi.jp +tobishima.aichi.jp +toei.aichi.jp +togo.aichi.jp +tokai.aichi.jp +tokoname.aichi.jp +toyoake.aichi.jp +toyohashi.aichi.jp +toyokawa.aichi.jp +toyone.aichi.jp +toyota.aichi.jp +tsushima.aichi.jp +yatomi.aichi.jp +akita.akita.jp +daisen.akita.jp +fujisato.akita.jp +gojome.akita.jp +hachirogata.akita.jp +happou.akita.jp +higashinaruse.akita.jp +honjo.akita.jp +honjyo.akita.jp +ikawa.akita.jp +kamikoani.akita.jp +kamioka.akita.jp +katagami.akita.jp +kazuno.akita.jp +kitaakita.akita.jp +kosaka.akita.jp +kyowa.akita.jp +misato.akita.jp +mitane.akita.jp +moriyoshi.akita.jp +nikaho.akita.jp +noshiro.akita.jp +odate.akita.jp +oga.akita.jp +ogata.akita.jp +semboku.akita.jp +yokote.akita.jp +yurihonjo.akita.jp +aomori.aomori.jp +gonohe.aomori.jp +hachinohe.aomori.jp +hashikami.aomori.jp +hiranai.aomori.jp +hirosaki.aomori.jp +itayanagi.aomori.jp +kuroishi.aomori.jp +misawa.aomori.jp +mutsu.aomori.jp +nakadomari.aomori.jp +noheji.aomori.jp +oirase.aomori.jp +owani.aomori.jp +rokunohe.aomori.jp +sannohe.aomori.jp +shichinohe.aomori.jp +shingo.aomori.jp +takko.aomori.jp +towada.aomori.jp +tsugaru.aomori.jp +tsuruta.aomori.jp +abiko.chiba.jp +asahi.chiba.jp +chonan.chiba.jp +chosei.chiba.jp +choshi.chiba.jp +chuo.chiba.jp +funabashi.chiba.jp +futtsu.chiba.jp +hanamigawa.chiba.jp +ichihara.chiba.jp +ichikawa.chiba.jp +ichinomiya.chiba.jp +inzai.chiba.jp +isumi.chiba.jp +kamagaya.chiba.jp +kamogawa.chiba.jp +kashiwa.chiba.jp +katori.chiba.jp +katsuura.chiba.jp +kimitsu.chiba.jp +kisarazu.chiba.jp +kozaki.chiba.jp +kujukuri.chiba.jp +kyonan.chiba.jp +matsudo.chiba.jp +midori.chiba.jp +mihama.chiba.jp +minamiboso.chiba.jp +mobara.chiba.jp +mutsuzawa.chiba.jp +nagara.chiba.jp +nagareyama.chiba.jp +narashino.chiba.jp +narita.chiba.jp +noda.chiba.jp +oamishirasato.chiba.jp +omigawa.chiba.jp +onjuku.chiba.jp +otaki.chiba.jp +sakae.chiba.jp +sakura.chiba.jp +shimofusa.chiba.jp +shirako.chiba.jp +shiroi.chiba.jp +shisui.chiba.jp +sodegaura.chiba.jp +sosa.chiba.jp +tako.chiba.jp +tateyama.chiba.jp +togane.chiba.jp +tohnosho.chiba.jp +tomisato.chiba.jp +urayasu.chiba.jp +yachimata.chiba.jp +yachiyo.chiba.jp +yokaichiba.chiba.jp +yokoshibahikari.chiba.jp +yotsukaido.chiba.jp +ainan.ehime.jp +honai.ehime.jp +ikata.ehime.jp +imabari.ehime.jp +iyo.ehime.jp +kamijima.ehime.jp +kihoku.ehime.jp +kumakogen.ehime.jp +masaki.ehime.jp +matsuno.ehime.jp +matsuyama.ehime.jp +namikata.ehime.jp +niihama.ehime.jp +ozu.ehime.jp +saijo.ehime.jp +seiyo.ehime.jp +shikokuchuo.ehime.jp +tobe.ehime.jp +toon.ehime.jp +uchiko.ehime.jp +uwajima.ehime.jp +yawatahama.ehime.jp +echizen.fukui.jp +eiheiji.fukui.jp +fukui.fukui.jp +ikeda.fukui.jp +katsuyama.fukui.jp +mihama.fukui.jp +minamiechizen.fukui.jp +obama.fukui.jp +ohi.fukui.jp +ono.fukui.jp +sabae.fukui.jp +sakai.fukui.jp +takahama.fukui.jp +tsuruga.fukui.jp +wakasa.fukui.jp +ashiya.fukuoka.jp +buzen.fukuoka.jp +chikugo.fukuoka.jp +chikuho.fukuoka.jp +chikujo.fukuoka.jp +chikushino.fukuoka.jp +chikuzen.fukuoka.jp +chuo.fukuoka.jp +dazaifu.fukuoka.jp +fukuchi.fukuoka.jp +hakata.fukuoka.jp +higashi.fukuoka.jp +hirokawa.fukuoka.jp +hisayama.fukuoka.jp +iizuka.fukuoka.jp +inatsuki.fukuoka.jp +kaho.fukuoka.jp +kasuga.fukuoka.jp +kasuya.fukuoka.jp +kawara.fukuoka.jp +keisen.fukuoka.jp +koga.fukuoka.jp +kurate.fukuoka.jp +kurogi.fukuoka.jp +kurume.fukuoka.jp +minami.fukuoka.jp +miyako.fukuoka.jp +miyama.fukuoka.jp +miyawaka.fukuoka.jp +mizumaki.fukuoka.jp +munakata.fukuoka.jp +nakagawa.fukuoka.jp +nakama.fukuoka.jp +nishi.fukuoka.jp +nogata.fukuoka.jp +ogori.fukuoka.jp +okagaki.fukuoka.jp +okawa.fukuoka.jp +oki.fukuoka.jp +omuta.fukuoka.jp +onga.fukuoka.jp +onojo.fukuoka.jp +oto.fukuoka.jp +saigawa.fukuoka.jp +sasaguri.fukuoka.jp +shingu.fukuoka.jp +shinyoshitomi.fukuoka.jp +shonai.fukuoka.jp +soeda.fukuoka.jp +sue.fukuoka.jp +tachiarai.fukuoka.jp +tagawa.fukuoka.jp +takata.fukuoka.jp +toho.fukuoka.jp +toyotsu.fukuoka.jp +tsuiki.fukuoka.jp +ukiha.fukuoka.jp +umi.fukuoka.jp +usui.fukuoka.jp +yamada.fukuoka.jp +yame.fukuoka.jp +yanagawa.fukuoka.jp +yukuhashi.fukuoka.jp +aizubange.fukushima.jp +aizumisato.fukushima.jp +aizuwakamatsu.fukushima.jp +asakawa.fukushima.jp +bandai.fukushima.jp +date.fukushima.jp +fukushima.fukushima.jp +furudono.fukushima.jp +futaba.fukushima.jp +hanawa.fukushima.jp +higashi.fukushima.jp +hirata.fukushima.jp +hirono.fukushima.jp +iitate.fukushima.jp +inawashiro.fukushima.jp +ishikawa.fukushima.jp +iwaki.fukushima.jp +izumizaki.fukushima.jp +kagamiishi.fukushima.jp +kaneyama.fukushima.jp +kawamata.fukushima.jp +kitakata.fukushima.jp +kitashiobara.fukushima.jp +koori.fukushima.jp +koriyama.fukushima.jp +kunimi.fukushima.jp +miharu.fukushima.jp +mishima.fukushima.jp +namie.fukushima.jp +nango.fukushima.jp +nishiaizu.fukushima.jp +nishigo.fukushima.jp +okuma.fukushima.jp +omotego.fukushima.jp +ono.fukushima.jp +otama.fukushima.jp +samegawa.fukushima.jp +shimogo.fukushima.jp +shirakawa.fukushima.jp +showa.fukushima.jp +soma.fukushima.jp +sukagawa.fukushima.jp +taishin.fukushima.jp +tamakawa.fukushima.jp +tanagura.fukushima.jp +tenei.fukushima.jp +yabuki.fukushima.jp +yamato.fukushima.jp +yamatsuri.fukushima.jp +yanaizu.fukushima.jp +yugawa.fukushima.jp +anpachi.gifu.jp +ena.gifu.jp +gifu.gifu.jp +ginan.gifu.jp +godo.gifu.jp +gujo.gifu.jp +hashima.gifu.jp +hichiso.gifu.jp +hida.gifu.jp +higashishirakawa.gifu.jp +ibigawa.gifu.jp +ikeda.gifu.jp +kakamigahara.gifu.jp +kani.gifu.jp +kasahara.gifu.jp +kasamatsu.gifu.jp +kawaue.gifu.jp +kitagata.gifu.jp +mino.gifu.jp +minokamo.gifu.jp +mitake.gifu.jp +mizunami.gifu.jp +motosu.gifu.jp +nakatsugawa.gifu.jp +ogaki.gifu.jp +sakahogi.gifu.jp +seki.gifu.jp +sekigahara.gifu.jp +shirakawa.gifu.jp +tajimi.gifu.jp +takayama.gifu.jp +tarui.gifu.jp +toki.gifu.jp +tomika.gifu.jp +wanouchi.gifu.jp +yamagata.gifu.jp +yaotsu.gifu.jp +yoro.gifu.jp +annaka.gunma.jp +chiyoda.gunma.jp +fujioka.gunma.jp +higashiagatsuma.gunma.jp +isesaki.gunma.jp +itakura.gunma.jp +kanna.gunma.jp +kanra.gunma.jp +katashina.gunma.jp +kawaba.gunma.jp +kiryu.gunma.jp +kusatsu.gunma.jp +maebashi.gunma.jp +meiwa.gunma.jp +midori.gunma.jp +minakami.gunma.jp +naganohara.gunma.jp +nakanojo.gunma.jp +nanmoku.gunma.jp +numata.gunma.jp +oizumi.gunma.jp +ora.gunma.jp +ota.gunma.jp +shibukawa.gunma.jp +shimonita.gunma.jp +shinto.gunma.jp +showa.gunma.jp +takasaki.gunma.jp +takayama.gunma.jp +tamamura.gunma.jp +tatebayashi.gunma.jp +tomioka.gunma.jp +tsukiyono.gunma.jp +tsumagoi.gunma.jp +ueno.gunma.jp +yoshioka.gunma.jp +asaminami.hiroshima.jp +daiwa.hiroshima.jp +etajima.hiroshima.jp +fuchu.hiroshima.jp +fukuyama.hiroshima.jp +hatsukaichi.hiroshima.jp +higashihiroshima.hiroshima.jp +hongo.hiroshima.jp +jinsekikogen.hiroshima.jp +kaita.hiroshima.jp +kui.hiroshima.jp +kumano.hiroshima.jp +kure.hiroshima.jp +mihara.hiroshima.jp +miyoshi.hiroshima.jp +naka.hiroshima.jp +onomichi.hiroshima.jp +osakikamijima.hiroshima.jp +otake.hiroshima.jp +saka.hiroshima.jp +sera.hiroshima.jp +seranishi.hiroshima.jp +shinichi.hiroshima.jp +shobara.hiroshima.jp +takehara.hiroshima.jp +abashiri.hokkaido.jp +abira.hokkaido.jp +aibetsu.hokkaido.jp +akabira.hokkaido.jp +akkeshi.hokkaido.jp +asahikawa.hokkaido.jp +ashibetsu.hokkaido.jp +ashoro.hokkaido.jp +assabu.hokkaido.jp +atsuma.hokkaido.jp +bibai.hokkaido.jp +biei.hokkaido.jp +bifuka.hokkaido.jp +bihoro.hokkaido.jp +biratori.hokkaido.jp +chippubetsu.hokkaido.jp +chitose.hokkaido.jp +date.hokkaido.jp +ebetsu.hokkaido.jp +embetsu.hokkaido.jp +eniwa.hokkaido.jp +erimo.hokkaido.jp +esan.hokkaido.jp +esashi.hokkaido.jp +fukagawa.hokkaido.jp +fukushima.hokkaido.jp +furano.hokkaido.jp +furubira.hokkaido.jp +haboro.hokkaido.jp +hakodate.hokkaido.jp +hamatonbetsu.hokkaido.jp +hidaka.hokkaido.jp +higashikagura.hokkaido.jp +higashikawa.hokkaido.jp +hiroo.hokkaido.jp +hokuryu.hokkaido.jp +hokuto.hokkaido.jp +honbetsu.hokkaido.jp +horokanai.hokkaido.jp +horonobe.hokkaido.jp +ikeda.hokkaido.jp +imakane.hokkaido.jp +ishikari.hokkaido.jp +iwamizawa.hokkaido.jp +iwanai.hokkaido.jp +kamifurano.hokkaido.jp +kamikawa.hokkaido.jp +kamishihoro.hokkaido.jp +kamisunagawa.hokkaido.jp +kamoenai.hokkaido.jp +kayabe.hokkaido.jp +kembuchi.hokkaido.jp +kikonai.hokkaido.jp +kimobetsu.hokkaido.jp +kitahiroshima.hokkaido.jp +kitami.hokkaido.jp +kiyosato.hokkaido.jp +koshimizu.hokkaido.jp +kunneppu.hokkaido.jp +kuriyama.hokkaido.jp +kuromatsunai.hokkaido.jp +kushiro.hokkaido.jp +kutchan.hokkaido.jp +kyowa.hokkaido.jp +mashike.hokkaido.jp +matsumae.hokkaido.jp +mikasa.hokkaido.jp +minamifurano.hokkaido.jp +mombetsu.hokkaido.jp +moseushi.hokkaido.jp +mukawa.hokkaido.jp +muroran.hokkaido.jp +naie.hokkaido.jp +nakagawa.hokkaido.jp +nakasatsunai.hokkaido.jp +nakatombetsu.hokkaido.jp +nanae.hokkaido.jp +nanporo.hokkaido.jp +nayoro.hokkaido.jp +nemuro.hokkaido.jp +niikappu.hokkaido.jp +niki.hokkaido.jp +nishiokoppe.hokkaido.jp +noboribetsu.hokkaido.jp +numata.hokkaido.jp +obihiro.hokkaido.jp +obira.hokkaido.jp +oketo.hokkaido.jp +okoppe.hokkaido.jp +otaru.hokkaido.jp +otobe.hokkaido.jp +otofuke.hokkaido.jp +otoineppu.hokkaido.jp +oumu.hokkaido.jp +ozora.hokkaido.jp +pippu.hokkaido.jp +rankoshi.hokkaido.jp +rebun.hokkaido.jp +rikubetsu.hokkaido.jp +rishiri.hokkaido.jp +rishirifuji.hokkaido.jp +saroma.hokkaido.jp +sarufutsu.hokkaido.jp +shakotan.hokkaido.jp +shari.hokkaido.jp +shibecha.hokkaido.jp +shibetsu.hokkaido.jp +shikabe.hokkaido.jp +shikaoi.hokkaido.jp +shimamaki.hokkaido.jp +shimizu.hokkaido.jp +shimokawa.hokkaido.jp +shinshinotsu.hokkaido.jp +shintoku.hokkaido.jp +shiranuka.hokkaido.jp +shiraoi.hokkaido.jp +shiriuchi.hokkaido.jp +sobetsu.hokkaido.jp +sunagawa.hokkaido.jp +taiki.hokkaido.jp +takasu.hokkaido.jp +takikawa.hokkaido.jp +takinoue.hokkaido.jp +teshikaga.hokkaido.jp +tobetsu.hokkaido.jp +tohma.hokkaido.jp +tomakomai.hokkaido.jp +tomari.hokkaido.jp +toya.hokkaido.jp +toyako.hokkaido.jp +toyotomi.hokkaido.jp +toyoura.hokkaido.jp +tsubetsu.hokkaido.jp +tsukigata.hokkaido.jp +urakawa.hokkaido.jp +urausu.hokkaido.jp +uryu.hokkaido.jp +utashinai.hokkaido.jp +wakkanai.hokkaido.jp +wassamu.hokkaido.jp +yakumo.hokkaido.jp +yoichi.hokkaido.jp +aioi.hyogo.jp +akashi.hyogo.jp +ako.hyogo.jp +amagasaki.hyogo.jp +aogaki.hyogo.jp +asago.hyogo.jp +ashiya.hyogo.jp +awaji.hyogo.jp +fukusaki.hyogo.jp +goshiki.hyogo.jp +harima.hyogo.jp +himeji.hyogo.jp +ichikawa.hyogo.jp +inagawa.hyogo.jp +itami.hyogo.jp +kakogawa.hyogo.jp +kamigori.hyogo.jp +kamikawa.hyogo.jp +kasai.hyogo.jp +kasuga.hyogo.jp +kawanishi.hyogo.jp +miki.hyogo.jp +minamiawaji.hyogo.jp +nishinomiya.hyogo.jp +nishiwaki.hyogo.jp +ono.hyogo.jp +sanda.hyogo.jp +sannan.hyogo.jp +sasayama.hyogo.jp +sayo.hyogo.jp +shingu.hyogo.jp +shinonsen.hyogo.jp +shiso.hyogo.jp +sumoto.hyogo.jp +taishi.hyogo.jp +taka.hyogo.jp +takarazuka.hyogo.jp +takasago.hyogo.jp +takino.hyogo.jp +tamba.hyogo.jp +tatsuno.hyogo.jp +toyooka.hyogo.jp +yabu.hyogo.jp +yashiro.hyogo.jp +yoka.hyogo.jp +yokawa.hyogo.jp +ami.ibaraki.jp +asahi.ibaraki.jp +bando.ibaraki.jp +chikusei.ibaraki.jp +daigo.ibaraki.jp +fujishiro.ibaraki.jp +hitachi.ibaraki.jp +hitachinaka.ibaraki.jp +hitachiomiya.ibaraki.jp +hitachiota.ibaraki.jp +ibaraki.ibaraki.jp +ina.ibaraki.jp +inashiki.ibaraki.jp +itako.ibaraki.jp +iwama.ibaraki.jp +joso.ibaraki.jp +kamisu.ibaraki.jp +kasama.ibaraki.jp +kashima.ibaraki.jp +kasumigaura.ibaraki.jp +koga.ibaraki.jp +miho.ibaraki.jp +mito.ibaraki.jp +moriya.ibaraki.jp +naka.ibaraki.jp +namegata.ibaraki.jp +oarai.ibaraki.jp +ogawa.ibaraki.jp +omitama.ibaraki.jp +ryugasaki.ibaraki.jp +sakai.ibaraki.jp +sakuragawa.ibaraki.jp +shimodate.ibaraki.jp +shimotsuma.ibaraki.jp +shirosato.ibaraki.jp +sowa.ibaraki.jp +suifu.ibaraki.jp +takahagi.ibaraki.jp +tamatsukuri.ibaraki.jp +tokai.ibaraki.jp +tomobe.ibaraki.jp +tone.ibaraki.jp +toride.ibaraki.jp +tsuchiura.ibaraki.jp +tsukuba.ibaraki.jp +uchihara.ibaraki.jp +ushiku.ibaraki.jp +yachiyo.ibaraki.jp +yamagata.ibaraki.jp +yawara.ibaraki.jp +yuki.ibaraki.jp +anamizu.ishikawa.jp +hakui.ishikawa.jp +hakusan.ishikawa.jp +kaga.ishikawa.jp +kahoku.ishikawa.jp +kanazawa.ishikawa.jp +kawakita.ishikawa.jp +komatsu.ishikawa.jp +nakanoto.ishikawa.jp +nanao.ishikawa.jp +nomi.ishikawa.jp +nonoichi.ishikawa.jp +noto.ishikawa.jp +shika.ishikawa.jp +suzu.ishikawa.jp +tsubata.ishikawa.jp +tsurugi.ishikawa.jp +uchinada.ishikawa.jp +wajima.ishikawa.jp +fudai.iwate.jp +fujisawa.iwate.jp +hanamaki.iwate.jp +hiraizumi.iwate.jp +hirono.iwate.jp +ichinohe.iwate.jp +ichinoseki.iwate.jp +iwaizumi.iwate.jp +iwate.iwate.jp +joboji.iwate.jp +kamaishi.iwate.jp +kanegasaki.iwate.jp +karumai.iwate.jp +kawai.iwate.jp +kitakami.iwate.jp +kuji.iwate.jp +kunohe.iwate.jp +kuzumaki.iwate.jp +miyako.iwate.jp +mizusawa.iwate.jp +morioka.iwate.jp +ninohe.iwate.jp +noda.iwate.jp +ofunato.iwate.jp +oshu.iwate.jp +otsuchi.iwate.jp +rikuzentakata.iwate.jp +shiwa.iwate.jp +shizukuishi.iwate.jp +sumita.iwate.jp +tanohata.iwate.jp +tono.iwate.jp +yahaba.iwate.jp +yamada.iwate.jp +ayagawa.kagawa.jp +higashikagawa.kagawa.jp +kanonji.kagawa.jp +kotohira.kagawa.jp +manno.kagawa.jp +marugame.kagawa.jp +mitoyo.kagawa.jp +naoshima.kagawa.jp +sanuki.kagawa.jp +tadotsu.kagawa.jp +takamatsu.kagawa.jp +tonosho.kagawa.jp +uchinomi.kagawa.jp +utazu.kagawa.jp +zentsuji.kagawa.jp +akune.kagoshima.jp +amami.kagoshima.jp +hioki.kagoshima.jp +isa.kagoshima.jp +isen.kagoshima.jp +izumi.kagoshima.jp +kagoshima.kagoshima.jp +kanoya.kagoshima.jp +kawanabe.kagoshima.jp +kinko.kagoshima.jp +kouyama.kagoshima.jp +makurazaki.kagoshima.jp +matsumoto.kagoshima.jp +minamitane.kagoshima.jp +nakatane.kagoshima.jp +nishinoomote.kagoshima.jp +satsumasendai.kagoshima.jp +soo.kagoshima.jp +tarumizu.kagoshima.jp +yusui.kagoshima.jp +aikawa.kanagawa.jp +atsugi.kanagawa.jp +ayase.kanagawa.jp +chigasaki.kanagawa.jp +ebina.kanagawa.jp +fujisawa.kanagawa.jp +hadano.kanagawa.jp +hakone.kanagawa.jp +hiratsuka.kanagawa.jp +isehara.kanagawa.jp +kaisei.kanagawa.jp +kamakura.kanagawa.jp +kiyokawa.kanagawa.jp +matsuda.kanagawa.jp +minamiashigara.kanagawa.jp +miura.kanagawa.jp +nakai.kanagawa.jp +ninomiya.kanagawa.jp +odawara.kanagawa.jp +oi.kanagawa.jp +oiso.kanagawa.jp +sagamihara.kanagawa.jp +samukawa.kanagawa.jp +tsukui.kanagawa.jp +yamakita.kanagawa.jp +yamato.kanagawa.jp +yokosuka.kanagawa.jp +yugawara.kanagawa.jp +zama.kanagawa.jp +zushi.kanagawa.jp +aki.kochi.jp +geisei.kochi.jp +hidaka.kochi.jp +higashitsuno.kochi.jp +ino.kochi.jp +kagami.kochi.jp +kami.kochi.jp +kitagawa.kochi.jp +kochi.kochi.jp +mihara.kochi.jp +motoyama.kochi.jp +muroto.kochi.jp +nahari.kochi.jp +nakamura.kochi.jp +nankoku.kochi.jp +nishitosa.kochi.jp +niyodogawa.kochi.jp +ochi.kochi.jp +okawa.kochi.jp +otoyo.kochi.jp +otsuki.kochi.jp +sakawa.kochi.jp +sukumo.kochi.jp +susaki.kochi.jp +tosa.kochi.jp +tosashimizu.kochi.jp +toyo.kochi.jp +tsuno.kochi.jp +umaji.kochi.jp +yasuda.kochi.jp +yusuhara.kochi.jp +amakusa.kumamoto.jp +arao.kumamoto.jp +aso.kumamoto.jp +choyo.kumamoto.jp +gyokuto.kumamoto.jp +kamiamakusa.kumamoto.jp +kikuchi.kumamoto.jp +kumamoto.kumamoto.jp +mashiki.kumamoto.jp +mifune.kumamoto.jp +minamata.kumamoto.jp +minamioguni.kumamoto.jp +nagasu.kumamoto.jp +nishihara.kumamoto.jp +oguni.kumamoto.jp +ozu.kumamoto.jp +sumoto.kumamoto.jp +takamori.kumamoto.jp +uki.kumamoto.jp +uto.kumamoto.jp +yamaga.kumamoto.jp +yamato.kumamoto.jp +yatsushiro.kumamoto.jp +ayabe.kyoto.jp +fukuchiyama.kyoto.jp +higashiyama.kyoto.jp +ide.kyoto.jp +ine.kyoto.jp +joyo.kyoto.jp +kameoka.kyoto.jp +kamo.kyoto.jp +kita.kyoto.jp +kizu.kyoto.jp +kumiyama.kyoto.jp +kyotamba.kyoto.jp +kyotanabe.kyoto.jp +kyotango.kyoto.jp +maizuru.kyoto.jp +minami.kyoto.jp +minamiyamashiro.kyoto.jp +miyazu.kyoto.jp +muko.kyoto.jp +nagaokakyo.kyoto.jp +nakagyo.kyoto.jp +nantan.kyoto.jp +oyamazaki.kyoto.jp +sakyo.kyoto.jp +seika.kyoto.jp +tanabe.kyoto.jp +uji.kyoto.jp +ujitawara.kyoto.jp +wazuka.kyoto.jp +yamashina.kyoto.jp +yawata.kyoto.jp +asahi.mie.jp +inabe.mie.jp +ise.mie.jp +kameyama.mie.jp +kawagoe.mie.jp +kiho.mie.jp +kisosaki.mie.jp +kiwa.mie.jp +komono.mie.jp +kumano.mie.jp +kuwana.mie.jp +matsusaka.mie.jp +meiwa.mie.jp +mihama.mie.jp +minamiise.mie.jp +misugi.mie.jp +miyama.mie.jp +nabari.mie.jp +shima.mie.jp +suzuka.mie.jp +tado.mie.jp +taiki.mie.jp +taki.mie.jp +tamaki.mie.jp +toba.mie.jp +tsu.mie.jp +udono.mie.jp +ureshino.mie.jp +watarai.mie.jp +yokkaichi.mie.jp +furukawa.miyagi.jp +higashimatsushima.miyagi.jp +ishinomaki.miyagi.jp +iwanuma.miyagi.jp +kakuda.miyagi.jp +kami.miyagi.jp +kawasaki.miyagi.jp +marumori.miyagi.jp +matsushima.miyagi.jp +minamisanriku.miyagi.jp +misato.miyagi.jp +murata.miyagi.jp +natori.miyagi.jp +ogawara.miyagi.jp +ohira.miyagi.jp +onagawa.miyagi.jp +osaki.miyagi.jp +rifu.miyagi.jp +semine.miyagi.jp +shibata.miyagi.jp +shichikashuku.miyagi.jp +shikama.miyagi.jp +shiogama.miyagi.jp +shiroishi.miyagi.jp +tagajo.miyagi.jp +taiwa.miyagi.jp +tome.miyagi.jp +tomiya.miyagi.jp +wakuya.miyagi.jp +watari.miyagi.jp +yamamoto.miyagi.jp +zao.miyagi.jp +aya.miyazaki.jp +ebino.miyazaki.jp +gokase.miyazaki.jp +hyuga.miyazaki.jp +kadogawa.miyazaki.jp +kawaminami.miyazaki.jp +kijo.miyazaki.jp +kitagawa.miyazaki.jp +kitakata.miyazaki.jp +kitaura.miyazaki.jp +kobayashi.miyazaki.jp +kunitomi.miyazaki.jp +kushima.miyazaki.jp +mimata.miyazaki.jp +miyakonojo.miyazaki.jp +miyazaki.miyazaki.jp +morotsuka.miyazaki.jp +nichinan.miyazaki.jp +nishimera.miyazaki.jp +nobeoka.miyazaki.jp +saito.miyazaki.jp +shiiba.miyazaki.jp +shintomi.miyazaki.jp +takaharu.miyazaki.jp +takanabe.miyazaki.jp +takazaki.miyazaki.jp +tsuno.miyazaki.jp +achi.nagano.jp +agematsu.nagano.jp +anan.nagano.jp +aoki.nagano.jp +asahi.nagano.jp +azumino.nagano.jp +chikuhoku.nagano.jp +chikuma.nagano.jp +chino.nagano.jp +fujimi.nagano.jp +hakuba.nagano.jp +hara.nagano.jp +hiraya.nagano.jp +iida.nagano.jp +iijima.nagano.jp +iiyama.nagano.jp +iizuna.nagano.jp +ikeda.nagano.jp +ikusaka.nagano.jp +ina.nagano.jp +karuizawa.nagano.jp +kawakami.nagano.jp +kiso.nagano.jp +kisofukushima.nagano.jp +kitaaiki.nagano.jp +komagane.nagano.jp +komoro.nagano.jp +matsukawa.nagano.jp +matsumoto.nagano.jp +miasa.nagano.jp +minamiaiki.nagano.jp +minamimaki.nagano.jp +minamiminowa.nagano.jp +minowa.nagano.jp +miyada.nagano.jp +miyota.nagano.jp +mochizuki.nagano.jp +nagano.nagano.jp +nagawa.nagano.jp +nagiso.nagano.jp +nakagawa.nagano.jp +nakano.nagano.jp +nozawaonsen.nagano.jp +obuse.nagano.jp +ogawa.nagano.jp +okaya.nagano.jp +omachi.nagano.jp +omi.nagano.jp +ookuwa.nagano.jp +ooshika.nagano.jp +otaki.nagano.jp +otari.nagano.jp +sakae.nagano.jp +sakaki.nagano.jp +saku.nagano.jp +sakuho.nagano.jp +shimosuwa.nagano.jp +shinanomachi.nagano.jp +shiojiri.nagano.jp +suwa.nagano.jp +suzaka.nagano.jp +takagi.nagano.jp +takamori.nagano.jp +takayama.nagano.jp +tateshina.nagano.jp +tatsuno.nagano.jp +togakushi.nagano.jp +togura.nagano.jp +tomi.nagano.jp +ueda.nagano.jp +wada.nagano.jp +yamagata.nagano.jp +yamanouchi.nagano.jp +yasaka.nagano.jp +yasuoka.nagano.jp +chijiwa.nagasaki.jp +futsu.nagasaki.jp +goto.nagasaki.jp +hasami.nagasaki.jp +hirado.nagasaki.jp +iki.nagasaki.jp +isahaya.nagasaki.jp +kawatana.nagasaki.jp +kuchinotsu.nagasaki.jp +matsuura.nagasaki.jp +nagasaki.nagasaki.jp +obama.nagasaki.jp +omura.nagasaki.jp +oseto.nagasaki.jp +saikai.nagasaki.jp +sasebo.nagasaki.jp +seihi.nagasaki.jp +shimabara.nagasaki.jp +shinkamigoto.nagasaki.jp +togitsu.nagasaki.jp +tsushima.nagasaki.jp +unzen.nagasaki.jp +ando.nara.jp +gose.nara.jp +heguri.nara.jp +higashiyoshino.nara.jp +ikaruga.nara.jp +ikoma.nara.jp +kamikitayama.nara.jp +kanmaki.nara.jp +kashiba.nara.jp +kashihara.nara.jp +katsuragi.nara.jp +kawai.nara.jp +kawakami.nara.jp +kawanishi.nara.jp +koryo.nara.jp +kurotaki.nara.jp +mitsue.nara.jp +miyake.nara.jp +nara.nara.jp +nosegawa.nara.jp +oji.nara.jp +ouda.nara.jp +oyodo.nara.jp +sakurai.nara.jp +sango.nara.jp +shimoichi.nara.jp +shimokitayama.nara.jp +shinjo.nara.jp +soni.nara.jp +takatori.nara.jp +tawaramoto.nara.jp +tenkawa.nara.jp +tenri.nara.jp +uda.nara.jp +yamatokoriyama.nara.jp +yamatotakada.nara.jp +yamazoe.nara.jp +yoshino.nara.jp +aga.niigata.jp +agano.niigata.jp +gosen.niigata.jp +itoigawa.niigata.jp +izumozaki.niigata.jp +joetsu.niigata.jp +kamo.niigata.jp +kariwa.niigata.jp +kashiwazaki.niigata.jp +minamiuonuma.niigata.jp +mitsuke.niigata.jp +muika.niigata.jp +murakami.niigata.jp +myoko.niigata.jp +nagaoka.niigata.jp +niigata.niigata.jp +ojiya.niigata.jp +omi.niigata.jp +sado.niigata.jp +sanjo.niigata.jp +seiro.niigata.jp +seirou.niigata.jp +sekikawa.niigata.jp +shibata.niigata.jp +tagami.niigata.jp +tainai.niigata.jp +tochio.niigata.jp +tokamachi.niigata.jp +tsubame.niigata.jp +tsunan.niigata.jp +uonuma.niigata.jp +yahiko.niigata.jp +yoita.niigata.jp +yuzawa.niigata.jp +beppu.oita.jp +bungoono.oita.jp +bungotakada.oita.jp +hasama.oita.jp +hiji.oita.jp +himeshima.oita.jp +hita.oita.jp +kamitsue.oita.jp +kokonoe.oita.jp +kuju.oita.jp +kunisaki.oita.jp +kusu.oita.jp +oita.oita.jp +saiki.oita.jp +taketa.oita.jp +tsukumi.oita.jp +usa.oita.jp +usuki.oita.jp +yufu.oita.jp +akaiwa.okayama.jp +asakuchi.okayama.jp +bizen.okayama.jp +hayashima.okayama.jp +ibara.okayama.jp +kagamino.okayama.jp +kasaoka.okayama.jp +kibichuo.okayama.jp +kumenan.okayama.jp +kurashiki.okayama.jp +maniwa.okayama.jp +misaki.okayama.jp +nagi.okayama.jp +niimi.okayama.jp +nishiawakura.okayama.jp +okayama.okayama.jp +satosho.okayama.jp +setouchi.okayama.jp +shinjo.okayama.jp +shoo.okayama.jp +soja.okayama.jp +takahashi.okayama.jp +tamano.okayama.jp +tsuyama.okayama.jp +wake.okayama.jp +yakage.okayama.jp +aguni.okinawa.jp +ginowan.okinawa.jp +ginoza.okinawa.jp +gushikami.okinawa.jp +haebaru.okinawa.jp +higashi.okinawa.jp +hirara.okinawa.jp +iheya.okinawa.jp +ishigaki.okinawa.jp +ishikawa.okinawa.jp +itoman.okinawa.jp +izena.okinawa.jp +kadena.okinawa.jp +kin.okinawa.jp +kitadaito.okinawa.jp +kitanakagusuku.okinawa.jp +kumejima.okinawa.jp +kunigami.okinawa.jp +minamidaito.okinawa.jp +motobu.okinawa.jp +nago.okinawa.jp +naha.okinawa.jp +nakagusuku.okinawa.jp +nakijin.okinawa.jp +nanjo.okinawa.jp +nishihara.okinawa.jp +ogimi.okinawa.jp +okinawa.okinawa.jp +onna.okinawa.jp +shimoji.okinawa.jp +taketomi.okinawa.jp +tarama.okinawa.jp +tokashiki.okinawa.jp +tomigusuku.okinawa.jp +tonaki.okinawa.jp +urasoe.okinawa.jp +uruma.okinawa.jp +yaese.okinawa.jp +yomitan.okinawa.jp +yonabaru.okinawa.jp +yonaguni.okinawa.jp +zamami.okinawa.jp +abeno.osaka.jp +chihayaakasaka.osaka.jp +chuo.osaka.jp +daito.osaka.jp +fujiidera.osaka.jp +habikino.osaka.jp +hannan.osaka.jp +higashiosaka.osaka.jp +higashisumiyoshi.osaka.jp +higashiyodogawa.osaka.jp +hirakata.osaka.jp +ibaraki.osaka.jp +ikeda.osaka.jp +izumi.osaka.jp +izumiotsu.osaka.jp +izumisano.osaka.jp +kadoma.osaka.jp +kaizuka.osaka.jp +kanan.osaka.jp +kashiwara.osaka.jp +katano.osaka.jp +kawachinagano.osaka.jp +kishiwada.osaka.jp +kita.osaka.jp +kumatori.osaka.jp +matsubara.osaka.jp +minato.osaka.jp +minoh.osaka.jp +misaki.osaka.jp +moriguchi.osaka.jp +neyagawa.osaka.jp +nishi.osaka.jp +nose.osaka.jp +osakasayama.osaka.jp +sakai.osaka.jp +sayama.osaka.jp +sennan.osaka.jp +settsu.osaka.jp +shijonawate.osaka.jp +shimamoto.osaka.jp +suita.osaka.jp +tadaoka.osaka.jp +taishi.osaka.jp +tajiri.osaka.jp +takaishi.osaka.jp +takatsuki.osaka.jp +tondabayashi.osaka.jp +toyonaka.osaka.jp +toyono.osaka.jp +yao.osaka.jp +ariake.saga.jp +arita.saga.jp +fukudomi.saga.jp +genkai.saga.jp +hamatama.saga.jp +hizen.saga.jp +imari.saga.jp +kamimine.saga.jp +kanzaki.saga.jp +karatsu.saga.jp +kashima.saga.jp +kitagata.saga.jp +kitahata.saga.jp +kiyama.saga.jp +kouhoku.saga.jp +kyuragi.saga.jp +nishiarita.saga.jp +ogi.saga.jp +omachi.saga.jp +ouchi.saga.jp +saga.saga.jp +shiroishi.saga.jp +taku.saga.jp +tara.saga.jp +tosu.saga.jp +yoshinogari.saga.jp +arakawa.saitama.jp +asaka.saitama.jp +chichibu.saitama.jp +fujimi.saitama.jp +fujimino.saitama.jp +fukaya.saitama.jp +hanno.saitama.jp +hanyu.saitama.jp +hasuda.saitama.jp +hatogaya.saitama.jp +hatoyama.saitama.jp +hidaka.saitama.jp +higashichichibu.saitama.jp +higashimatsuyama.saitama.jp +honjo.saitama.jp +ina.saitama.jp +iruma.saitama.jp +iwatsuki.saitama.jp +kamiizumi.saitama.jp +kamikawa.saitama.jp +kamisato.saitama.jp +kasukabe.saitama.jp +kawagoe.saitama.jp +kawaguchi.saitama.jp +kawajima.saitama.jp +kazo.saitama.jp +kitamoto.saitama.jp +koshigaya.saitama.jp +kounosu.saitama.jp +kuki.saitama.jp +kumagaya.saitama.jp +matsubushi.saitama.jp +minano.saitama.jp +misato.saitama.jp +miyashiro.saitama.jp +miyoshi.saitama.jp +moroyama.saitama.jp +nagatoro.saitama.jp +namegawa.saitama.jp +niiza.saitama.jp +ogano.saitama.jp +ogawa.saitama.jp +ogose.saitama.jp +okegawa.saitama.jp +omiya.saitama.jp +otaki.saitama.jp +ranzan.saitama.jp +ryokami.saitama.jp +saitama.saitama.jp +sakado.saitama.jp +satte.saitama.jp +sayama.saitama.jp +shiki.saitama.jp +shiraoka.saitama.jp +soka.saitama.jp +sugito.saitama.jp +toda.saitama.jp +tokigawa.saitama.jp +tokorozawa.saitama.jp +tsurugashima.saitama.jp +urawa.saitama.jp +warabi.saitama.jp +yashio.saitama.jp +yokoze.saitama.jp +yono.saitama.jp +yorii.saitama.jp +yoshida.saitama.jp +yoshikawa.saitama.jp +yoshimi.saitama.jp +aisho.shiga.jp +gamo.shiga.jp +higashiomi.shiga.jp +hikone.shiga.jp +koka.shiga.jp +konan.shiga.jp +kosei.shiga.jp +koto.shiga.jp +kusatsu.shiga.jp +maibara.shiga.jp +moriyama.shiga.jp +nagahama.shiga.jp +nishiazai.shiga.jp +notogawa.shiga.jp +omihachiman.shiga.jp +otsu.shiga.jp +ritto.shiga.jp +ryuoh.shiga.jp +takashima.shiga.jp +takatsuki.shiga.jp +torahime.shiga.jp +toyosato.shiga.jp +yasu.shiga.jp +akagi.shimane.jp +ama.shimane.jp +gotsu.shimane.jp +hamada.shimane.jp +higashiizumo.shimane.jp +hikawa.shimane.jp +hikimi.shimane.jp +izumo.shimane.jp +kakinoki.shimane.jp +masuda.shimane.jp +matsue.shimane.jp +misato.shimane.jp +nishinoshima.shimane.jp +ohda.shimane.jp +okinoshima.shimane.jp +okuizumo.shimane.jp +shimane.shimane.jp +tamayu.shimane.jp +tsuwano.shimane.jp +unnan.shimane.jp +yakumo.shimane.jp +yasugi.shimane.jp +yatsuka.shimane.jp +arai.shizuoka.jp +atami.shizuoka.jp +fuji.shizuoka.jp +fujieda.shizuoka.jp +fujikawa.shizuoka.jp +fujinomiya.shizuoka.jp +fukuroi.shizuoka.jp +gotemba.shizuoka.jp +haibara.shizuoka.jp +hamamatsu.shizuoka.jp +higashiizu.shizuoka.jp +ito.shizuoka.jp +iwata.shizuoka.jp +izu.shizuoka.jp +izunokuni.shizuoka.jp +kakegawa.shizuoka.jp +kannami.shizuoka.jp +kawanehon.shizuoka.jp +kawazu.shizuoka.jp +kikugawa.shizuoka.jp +kosai.shizuoka.jp +makinohara.shizuoka.jp +matsuzaki.shizuoka.jp +minamiizu.shizuoka.jp +mishima.shizuoka.jp +morimachi.shizuoka.jp +nishiizu.shizuoka.jp +numazu.shizuoka.jp +omaezaki.shizuoka.jp +shimada.shizuoka.jp +shimizu.shizuoka.jp +shimoda.shizuoka.jp +shizuoka.shizuoka.jp +susono.shizuoka.jp +yaizu.shizuoka.jp +yoshida.shizuoka.jp +ashikaga.tochigi.jp +bato.tochigi.jp +haga.tochigi.jp +ichikai.tochigi.jp +iwafune.tochigi.jp +kaminokawa.tochigi.jp +kanuma.tochigi.jp +karasuyama.tochigi.jp +kuroiso.tochigi.jp +mashiko.tochigi.jp +mibu.tochigi.jp +moka.tochigi.jp +motegi.tochigi.jp +nasu.tochigi.jp +nasushiobara.tochigi.jp +nikko.tochigi.jp +nishikata.tochigi.jp +nogi.tochigi.jp +ohira.tochigi.jp +ohtawara.tochigi.jp +oyama.tochigi.jp +sakura.tochigi.jp +sano.tochigi.jp +shimotsuke.tochigi.jp +shioya.tochigi.jp +takanezawa.tochigi.jp +tochigi.tochigi.jp +tsuga.tochigi.jp +ujiie.tochigi.jp +utsunomiya.tochigi.jp +yaita.tochigi.jp +aizumi.tokushima.jp +anan.tokushima.jp +ichiba.tokushima.jp +itano.tokushima.jp +kainan.tokushima.jp +komatsushima.tokushima.jp +matsushige.tokushima.jp +mima.tokushima.jp +minami.tokushima.jp +miyoshi.tokushima.jp +mugi.tokushima.jp +nakagawa.tokushima.jp +naruto.tokushima.jp +sanagochi.tokushima.jp +shishikui.tokushima.jp +tokushima.tokushima.jp +wajiki.tokushima.jp +adachi.tokyo.jp +akiruno.tokyo.jp +akishima.tokyo.jp +aogashima.tokyo.jp +arakawa.tokyo.jp +bunkyo.tokyo.jp +chiyoda.tokyo.jp +chofu.tokyo.jp +chuo.tokyo.jp +edogawa.tokyo.jp +fuchu.tokyo.jp +fussa.tokyo.jp +hachijo.tokyo.jp +hachioji.tokyo.jp +hamura.tokyo.jp +higashikurume.tokyo.jp +higashimurayama.tokyo.jp +higashiyamato.tokyo.jp +hino.tokyo.jp +hinode.tokyo.jp +hinohara.tokyo.jp +inagi.tokyo.jp +itabashi.tokyo.jp +katsushika.tokyo.jp +kita.tokyo.jp +kiyose.tokyo.jp +kodaira.tokyo.jp +koganei.tokyo.jp +kokubunji.tokyo.jp +komae.tokyo.jp +koto.tokyo.jp +kouzushima.tokyo.jp +kunitachi.tokyo.jp +machida.tokyo.jp +meguro.tokyo.jp +minato.tokyo.jp +mitaka.tokyo.jp +mizuho.tokyo.jp +musashimurayama.tokyo.jp +musashino.tokyo.jp +nakano.tokyo.jp +nerima.tokyo.jp +ogasawara.tokyo.jp +okutama.tokyo.jp +ome.tokyo.jp +oshima.tokyo.jp +ota.tokyo.jp +setagaya.tokyo.jp +shibuya.tokyo.jp +shinagawa.tokyo.jp +shinjuku.tokyo.jp +suginami.tokyo.jp +sumida.tokyo.jp +tachikawa.tokyo.jp +taito.tokyo.jp +tama.tokyo.jp +toshima.tokyo.jp +chizu.tottori.jp +hino.tottori.jp +kawahara.tottori.jp +koge.tottori.jp +kotoura.tottori.jp +misasa.tottori.jp +nanbu.tottori.jp +nichinan.tottori.jp +sakaiminato.tottori.jp +tottori.tottori.jp +wakasa.tottori.jp +yazu.tottori.jp +yonago.tottori.jp +asahi.toyama.jp +fuchu.toyama.jp +fukumitsu.toyama.jp +funahashi.toyama.jp +himi.toyama.jp +imizu.toyama.jp +inami.toyama.jp +johana.toyama.jp +kamiichi.toyama.jp +kurobe.toyama.jp +nakaniikawa.toyama.jp +namerikawa.toyama.jp +nanto.toyama.jp +nyuzen.toyama.jp +oyabe.toyama.jp +taira.toyama.jp +takaoka.toyama.jp +tateyama.toyama.jp +toga.toyama.jp +tonami.toyama.jp +toyama.toyama.jp +unazuki.toyama.jp +uozu.toyama.jp +yamada.toyama.jp +arida.wakayama.jp +aridagawa.wakayama.jp +gobo.wakayama.jp +hashimoto.wakayama.jp +hidaka.wakayama.jp +hirogawa.wakayama.jp +inami.wakayama.jp +iwade.wakayama.jp +kainan.wakayama.jp +kamitonda.wakayama.jp +katsuragi.wakayama.jp +kimino.wakayama.jp +kinokawa.wakayama.jp +kitayama.wakayama.jp +koya.wakayama.jp +koza.wakayama.jp +kozagawa.wakayama.jp +kudoyama.wakayama.jp +kushimoto.wakayama.jp +mihama.wakayama.jp +misato.wakayama.jp +nachikatsuura.wakayama.jp +shingu.wakayama.jp +shirahama.wakayama.jp +taiji.wakayama.jp +tanabe.wakayama.jp +wakayama.wakayama.jp +yuasa.wakayama.jp +yura.wakayama.jp +asahi.yamagata.jp +funagata.yamagata.jp +higashine.yamagata.jp +iide.yamagata.jp +kahoku.yamagata.jp +kaminoyama.yamagata.jp +kaneyama.yamagata.jp +kawanishi.yamagata.jp +mamurogawa.yamagata.jp +mikawa.yamagata.jp +murayama.yamagata.jp +nagai.yamagata.jp +nakayama.yamagata.jp +nanyo.yamagata.jp +nishikawa.yamagata.jp +obanazawa.yamagata.jp +oe.yamagata.jp +oguni.yamagata.jp +ohkura.yamagata.jp +oishida.yamagata.jp +sagae.yamagata.jp +sakata.yamagata.jp +sakegawa.yamagata.jp +shinjo.yamagata.jp +shirataka.yamagata.jp +shonai.yamagata.jp +takahata.yamagata.jp +tendo.yamagata.jp +tozawa.yamagata.jp +tsuruoka.yamagata.jp +yamagata.yamagata.jp +yamanobe.yamagata.jp +yonezawa.yamagata.jp +yuza.yamagata.jp +abu.yamaguchi.jp +hagi.yamaguchi.jp +hikari.yamaguchi.jp +hofu.yamaguchi.jp +iwakuni.yamaguchi.jp +kudamatsu.yamaguchi.jp +mitou.yamaguchi.jp +nagato.yamaguchi.jp +oshima.yamaguchi.jp +shimonoseki.yamaguchi.jp +shunan.yamaguchi.jp +tabuse.yamaguchi.jp +tokuyama.yamaguchi.jp +toyota.yamaguchi.jp +ube.yamaguchi.jp +yuu.yamaguchi.jp +chuo.yamanashi.jp +doshi.yamanashi.jp +fuefuki.yamanashi.jp +fujikawa.yamanashi.jp +fujikawaguchiko.yamanashi.jp +fujiyoshida.yamanashi.jp +hayakawa.yamanashi.jp +hokuto.yamanashi.jp +ichikawamisato.yamanashi.jp +kai.yamanashi.jp +kofu.yamanashi.jp +koshu.yamanashi.jp +kosuge.yamanashi.jp +minami-alps.yamanashi.jp +minobu.yamanashi.jp +nakamichi.yamanashi.jp +nanbu.yamanashi.jp +narusawa.yamanashi.jp +nirasaki.yamanashi.jp +nishikatsura.yamanashi.jp +oshino.yamanashi.jp +otsuki.yamanashi.jp +showa.yamanashi.jp +tabayama.yamanashi.jp +tsuru.yamanashi.jp +uenohara.yamanashi.jp +yamanakako.yamanashi.jp +yamanashi.yamanashi.jp + +// ke : http://www.kenic.or.ke/index.php/en/ke-domains/ke-domains +ke +ac.ke +co.ke +go.ke +info.ke +me.ke +mobi.ke +ne.ke +or.ke +sc.ke + +// kg : http://www.domain.kg/dmn_n.html +kg +com.kg +edu.kg +gov.kg +mil.kg +net.kg +org.kg + +// kh : https://trc.gov.kh +// Submitted by khnic@trc.gov.kh +kh +com.kh +edu.kh +gov.kh +net.kh +org.kh + +// ki : https://www.iana.org/domains/root/db/ki.html +ki +biz.ki +com.ki +edu.ki +gov.ki +info.ki +net.ki +org.ki + +// km : https://www.iana.org/domains/root/db/km.html +// http://www.domaine.km/documents/charte.doc +km +ass.km +com.km +edu.km +gov.km +mil.km +nom.km +org.km +prd.km +tm.km +// These are only mentioned as proposed suggestions at domaine.km, but +// https://www.iana.org/domains/root/db/km.html says they're available for registration: +asso.km +coop.km +gouv.km +medecin.km +notaires.km +pharmaciens.km +presse.km +veterinaire.km + +// kn : https://www.iana.org/domains/root/db/kn.html +// http://www.dot.kn/domainRules.html +kn +edu.kn +gov.kn +net.kn +org.kn + +// kp : http://www.kcce.kp/en_index.php +kp +com.kp +edu.kp +gov.kp +org.kp +rep.kp +tra.kp + +// kr : https://www.iana.org/domains/root/db/kr.html +// see also: https://krnic.kisa.or.kr/jsp/infoboard/law/domBylawsReg.jsp +kr +ac.kr +ai.kr +co.kr +es.kr +go.kr +hs.kr +io.kr +it.kr +kg.kr +me.kr +mil.kr +ms.kr +ne.kr +or.kr +pe.kr +re.kr +sc.kr +// kr geographical names +busan.kr +chungbuk.kr +chungnam.kr +daegu.kr +daejeon.kr +gangwon.kr +gwangju.kr +gyeongbuk.kr +gyeonggi.kr +gyeongnam.kr +incheon.kr +jeju.kr +jeonbuk.kr +jeonnam.kr +seoul.kr +ulsan.kr + +// kw : https://www.nic.kw/policies/ +// Confirmed by registry +kw +com.kw +edu.kw +emb.kw +gov.kw +ind.kw +net.kw +org.kw + +// ky : http://www.icta.ky/da_ky_reg_dom.php +// Confirmed by registry 2008-06-17 +ky +com.ky +edu.ky +net.ky +org.ky + +// kz : https://www.iana.org/domains/root/db/kz.html +// see also: http://www.nic.kz/rules/index.jsp +kz +com.kz +edu.kz +gov.kz +mil.kz +net.kz +org.kz + +// la : https://www.iana.org/domains/root/db/la.html +// Submitted by registry +la +com.la +edu.la +gov.la +info.la +int.la +net.la +org.la +per.la + +// lb : https://www.iana.org/domains/root/db/lb.html +// Submitted by registry +lb +com.lb +edu.lb +gov.lb +net.lb +org.lb + +// lc : https://www.iana.org/domains/root/db/lc.html +// see also: http://www.nic.lc/rules.htm +lc +co.lc +com.lc +edu.lc +gov.lc +net.lc +org.lc + +// li : https://www.iana.org/domains/root/db/li.html +li + +// lk : https://www.iana.org/domains/root/db/lk.html +lk +ac.lk +assn.lk +com.lk +edu.lk +gov.lk +grp.lk +hotel.lk +int.lk +ltd.lk +net.lk +ngo.lk +org.lk +sch.lk +soc.lk +web.lk + +// lr : http://psg.com/dns/lr/lr.txt +// Submitted by registry +lr +com.lr +edu.lr +gov.lr +net.lr +org.lr + +// ls : http://www.nic.ls/ +// Confirmed by registry +ls +ac.ls +biz.ls +co.ls +edu.ls +gov.ls +info.ls +net.ls +org.ls +sc.ls + +// lt : https://www.iana.org/domains/root/db/lt.html +lt +// gov.lt : http://www.gov.lt/index_en.php +gov.lt + +// lu : http://www.dns.lu/en/ +lu + +// lv : https://www.iana.org/domains/root/db/lv.html +lv +asn.lv +com.lv +conf.lv +edu.lv +gov.lv +id.lv +mil.lv +net.lv +org.lv + +// ly : http://www.nic.ly/regulations.php +ly +com.ly +edu.ly +gov.ly +id.ly +med.ly +net.ly +org.ly +plc.ly +sch.ly + +// ma : https://www.iana.org/domains/root/db/ma.html +// http://www.anrt.ma/fr/admin/download/upload/file_fr782.pdf +ma +ac.ma +co.ma +gov.ma +net.ma +org.ma +press.ma + +// mc : http://www.nic.mc/ +mc +asso.mc +tm.mc + +// md : https://www.iana.org/domains/root/db/md.html +md + +// me : https://www.iana.org/domains/root/db/me.html +me +ac.me +co.me +edu.me +gov.me +its.me +net.me +org.me +priv.me + +// mg : https://nic.mg +mg +co.mg +com.mg +edu.mg +gov.mg +mil.mg +nom.mg +org.mg +prd.mg + +// mh : https://www.iana.org/domains/root/db/mh.html +mh + +// mil : https://www.iana.org/domains/root/db/mil.html +mil + +// mk : https://www.iana.org/domains/root/db/mk.html +// see also: http://dns.marnet.net.mk/postapka.php +mk +com.mk +edu.mk +gov.mk +inf.mk +name.mk +net.mk +org.mk + +// ml : https://www.iana.org/domains/root/db/ml.html +// Confirmed by Boubacar NDIAYE 2024-12-31 +ml +ac.ml +art.ml +asso.ml +com.ml +edu.ml +gouv.ml +gov.ml +info.ml +inst.ml +net.ml +org.ml +pr.ml +presse.ml + +// mm : https://www.iana.org/domains/root/db/mm.html +*.mm + +// mn : https://www.iana.org/domains/root/db/mn.html +mn +edu.mn +gov.mn +org.mn + +// mo : http://www.monic.net.mo/ +mo +com.mo +edu.mo +gov.mo +net.mo +org.mo + +// mobi : https://www.iana.org/domains/root/db/mobi.html +mobi + +// mp : http://www.dot.mp/ +// Confirmed by registry 2008-06-17 +mp + +// mq : https://www.iana.org/domains/root/db/mq.html +mq + +// mr : https://www.iana.org/domains/root/db/mr.html +mr +gov.mr + +// ms : https://www.iana.org/domains/root/db/ms.html +ms +com.ms +edu.ms +gov.ms +net.ms +org.ms + +// mt : https://www.nic.org.mt/go/policy +// Submitted by registry +mt +com.mt +edu.mt +net.mt +org.mt + +// mu : https://www.iana.org/domains/root/db/mu.html +mu +ac.mu +co.mu +com.mu +gov.mu +net.mu +or.mu +org.mu + +// museum : https://welcome.museum/wp-content/uploads/2018/05/20180525-Registration-Policy-MUSEUM-EN_VF-2.pdf https://welcome.museum/buy-your-dot-museum-2/ +museum + +// mv : https://www.iana.org/domains/root/db/mv.html +// "mv" included because, contra Wikipedia, google.mv exists. +mv +aero.mv +biz.mv +com.mv +coop.mv +edu.mv +gov.mv +info.mv +int.mv +mil.mv +museum.mv +name.mv +net.mv +org.mv +pro.mv + +// mw : http://www.registrar.mw/ +mw +ac.mw +biz.mw +co.mw +com.mw +coop.mw +edu.mw +gov.mw +int.mw +net.mw +org.mw + +// mx : http://www.nic.mx/ +// Submitted by registry +mx +com.mx +edu.mx +gob.mx +net.mx +org.mx + +// my : http://www.mynic.my/ +// Available strings: https://mynic.my/resources/domains/buying-a-domain/ +my +biz.my +com.my +edu.my +gov.my +mil.my +name.my +net.my +org.my + +// mz : http://www.uem.mz/ +// Submitted by registry +mz +ac.mz +adv.mz +co.mz +edu.mz +gov.mz +mil.mz +net.mz +org.mz + +// na : http://www.na-nic.com.na/ +na +alt.na +co.na +com.na +gov.na +net.na +org.na + +// name : http://www.nic.name/ +// Regarding 2LDs: https://github.com/publicsuffix/list/issues/2306 +name + +// nc : http://www.cctld.nc/ +nc +asso.nc +nom.nc + +// ne : https://www.iana.org/domains/root/db/ne.html +ne + +// net : https://www.iana.org/domains/root/db/net.html +net + +// nf : https://www.iana.org/domains/root/db/nf.html +nf +arts.nf +com.nf +firm.nf +info.nf +net.nf +other.nf +per.nf +rec.nf +store.nf +web.nf + +// ng : http://www.nira.org.ng/index.php/join-us/register-ng-domain/189-nira-slds +ng +com.ng +edu.ng +gov.ng +i.ng +mil.ng +mobi.ng +name.ng +net.ng +org.ng +sch.ng + +// ni : http://www.nic.ni/ +ni +ac.ni +biz.ni +co.ni +com.ni +edu.ni +gob.ni +in.ni +info.ni +int.ni +mil.ni +net.ni +nom.ni +org.ni +web.ni + +// nl : https://www.iana.org/domains/root/db/nl.html +// https://www.sidn.nl/ +nl + +// no : https://www.norid.no/en/om-domenenavn/regelverk-for-no/ +// Norid geographical second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-b/ +// Norid category second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-c/ +// Norid category second-level domains managed by parties other than Norid : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-d/ +// RSS feed: https://teknisk.norid.no/en/feed/ +no +// Norid category second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-c/ +fhs.no +folkebibl.no +fylkesbibl.no +idrett.no +museum.no +priv.no +vgs.no +// Norid category second-level domains managed by parties other than Norid : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-d/ +dep.no +herad.no +kommune.no +mil.no +stat.no +// Norid geographical second level domains : https://www.norid.no/en/om-domenenavn/regelverk-for-no/vedlegg-b/ +// counties +aa.no +ah.no +bu.no +fm.no +hl.no +hm.no +jan-mayen.no +mr.no +nl.no +nt.no +of.no +ol.no +oslo.no +rl.no +sf.no +st.no +svalbard.no +tm.no +tr.no +va.no +vf.no +// primary and lower secondary schools per county +gs.aa.no +gs.ah.no +gs.bu.no +gs.fm.no +gs.hl.no +gs.hm.no +gs.jan-mayen.no +gs.mr.no +gs.nl.no +gs.nt.no +gs.of.no +gs.ol.no +gs.oslo.no +gs.rl.no +gs.sf.no +gs.st.no +gs.svalbard.no +gs.tm.no +gs.tr.no +gs.va.no +gs.vf.no +// cities +akrehamn.no +åkrehamn.no +algard.no +ålgård.no +arna.no +bronnoysund.no +brønnøysund.no +brumunddal.no +bryne.no +drobak.no +drøbak.no +egersund.no +fetsund.no +floro.no +florø.no +fredrikstad.no +hokksund.no +honefoss.no +hønefoss.no +jessheim.no +jorpeland.no +jørpeland.no +kirkenes.no +kopervik.no +krokstadelva.no +langevag.no +langevåg.no +leirvik.no +mjondalen.no +mjøndalen.no +mo-i-rana.no +mosjoen.no +mosjøen.no +nesoddtangen.no +orkanger.no +osoyro.no +osøyro.no +raholt.no +råholt.no +sandnessjoen.no +sandnessjøen.no +skedsmokorset.no +slattum.no +spjelkavik.no +stathelle.no +stavern.no +stjordalshalsen.no +stjørdalshalsen.no +tananger.no +tranby.no +vossevangen.no +// communities +aarborte.no +aejrie.no +afjord.no +åfjord.no +agdenes.no +nes.akershus.no +aknoluokta.no +ákŋoluokta.no +al.no +ål.no +alaheadju.no +álaheadju.no +alesund.no +ålesund.no +alstahaug.no +alta.no +áltá.no +alvdal.no +amli.no +åmli.no +amot.no +åmot.no +andasuolo.no +andebu.no +andoy.no +andøy.no +ardal.no +årdal.no +aremark.no +arendal.no +ås.no +aseral.no +åseral.no +asker.no +askim.no +askoy.no +askøy.no +askvoll.no +asnes.no +åsnes.no +audnedaln.no +aukra.no +aure.no +aurland.no +aurskog-holand.no +aurskog-høland.no +austevoll.no +austrheim.no +averoy.no +averøy.no +badaddja.no +bådåddjå.no +bærum.no +bahcavuotna.no +báhcavuotna.no +bahccavuotna.no +báhccavuotna.no +baidar.no +báidár.no +bajddar.no +bájddar.no +balat.no +bálát.no +balestrand.no +ballangen.no +balsfjord.no +bamble.no +bardu.no +barum.no +batsfjord.no +båtsfjord.no +bearalvahki.no +bearalváhki.no +beardu.no +beiarn.no +berg.no +bergen.no +berlevag.no +berlevåg.no +bievat.no +bievát.no +bindal.no +birkenes.no +bjerkreim.no +bjugn.no +bodo.no +bodø.no +bokn.no +bomlo.no +bømlo.no +bremanger.no +bronnoy.no +brønnøy.no +budejju.no +nes.buskerud.no +bygland.no +bykle.no +cahcesuolo.no +čáhcesuolo.no +davvenjarga.no +davvenjárga.no +davvesiida.no +deatnu.no +dielddanuorri.no +divtasvuodna.no +divttasvuotna.no +donna.no +dønna.no +dovre.no +drammen.no +drangedal.no +dyroy.no +dyrøy.no +eid.no +eidfjord.no +eidsberg.no +eidskog.no +eidsvoll.no +eigersund.no +elverum.no +enebakk.no +engerdal.no +etne.no +etnedal.no +evenassi.no +evenášši.no +evenes.no +evje-og-hornnes.no +farsund.no +fauske.no +fedje.no +fet.no +finnoy.no +finnøy.no +fitjar.no +fjaler.no +fjell.no +fla.no +flå.no +flakstad.no +flatanger.no +flekkefjord.no +flesberg.no +flora.no +folldal.no +forde.no +førde.no +forsand.no +fosnes.no +fræna.no +frana.no +frei.no +frogn.no +froland.no +frosta.no +froya.no +frøya.no +fuoisku.no +fuossko.no +fusa.no +fyresdal.no +gaivuotna.no +gáivuotna.no +galsa.no +gálsá.no +gamvik.no +gangaviika.no +gáŋgaviika.no +gaular.no +gausdal.no +giehtavuoatna.no +gildeskal.no +gildeskål.no +giske.no +gjemnes.no +gjerdrum.no +gjerstad.no +gjesdal.no +gjovik.no +gjøvik.no +gloppen.no +gol.no +gran.no +grane.no +granvin.no +gratangen.no +grimstad.no +grong.no +grue.no +gulen.no +guovdageaidnu.no +ha.no +hå.no +habmer.no +hábmer.no +hadsel.no +hægebostad.no +hagebostad.no +halden.no +halsa.no +hamar.no +hamaroy.no +hammarfeasta.no +hámmárfeasta.no +hammerfest.no +hapmir.no +hápmir.no +haram.no +hareid.no +harstad.no +hasvik.no +hattfjelldal.no +haugesund.no +os.hedmark.no +valer.hedmark.no +våler.hedmark.no +hemne.no +hemnes.no +hemsedal.no +hitra.no +hjartdal.no +hjelmeland.no +hobol.no +hobøl.no +hof.no +hol.no +hole.no +holmestrand.no +holtalen.no +holtålen.no +os.hordaland.no +hornindal.no +horten.no +hoyanger.no +høyanger.no +hoylandet.no +høylandet.no +hurdal.no +hurum.no +hvaler.no +hyllestad.no +ibestad.no +inderoy.no +inderøy.no +iveland.no +ivgu.no +jevnaker.no +jolster.no +jølster.no +jondal.no +kafjord.no +kåfjord.no +karasjohka.no +kárášjohka.no +karasjok.no +karlsoy.no +karmoy.no +karmøy.no +kautokeino.no +klabu.no +klæbu.no +klepp.no +kongsberg.no +kongsvinger.no +kraanghke.no +kråanghke.no +kragero.no +kragerø.no +kristiansand.no +kristiansund.no +krodsherad.no +krødsherad.no +kvæfjord.no +kvænangen.no +kvafjord.no +kvalsund.no +kvam.no +kvanangen.no +kvinesdal.no +kvinnherad.no +kviteseid.no +kvitsoy.no +kvitsøy.no +laakesvuemie.no +lærdal.no +lahppi.no +láhppi.no +lardal.no +larvik.no +lavagis.no +lavangen.no +leangaviika.no +leaŋgaviika.no +lebesby.no +leikanger.no +leirfjord.no +leka.no +leksvik.no +lenvik.no +lerdal.no +lesja.no +levanger.no +lier.no +lierne.no +lillehammer.no +lillesand.no +lindas.no +lindås.no +lindesnes.no +loabat.no +loabát.no +lodingen.no +lødingen.no +lom.no +loppa.no +lorenskog.no +lørenskog.no +loten.no +løten.no +lund.no +lunner.no +luroy.no +lurøy.no +luster.no +lyngdal.no +lyngen.no +malatvuopmi.no +málatvuopmi.no +malselv.no +målselv.no +malvik.no +mandal.no +marker.no +marnardal.no +masfjorden.no +masoy.no +måsøy.no +matta-varjjat.no +mátta-várjjat.no +meland.no +meldal.no +melhus.no +meloy.no +meløy.no +meraker.no +meråker.no +midsund.no +midtre-gauldal.no +moareke.no +moåreke.no +modalen.no +modum.no +molde.no +heroy.more-og-romsdal.no +sande.more-og-romsdal.no +herøy.møre-og-romsdal.no +sande.møre-og-romsdal.no +moskenes.no +moss.no +muosat.no +muosát.no +naamesjevuemie.no +nååmesjevuemie.no +nærøy.no +namdalseid.no +namsos.no +namsskogan.no +nannestad.no +naroy.no +narviika.no +narvik.no +naustdal.no +navuotna.no +návuotna.no +nedre-eiker.no +nesna.no +nesodden.no +nesseby.no +nesset.no +nissedal.no +nittedal.no +nord-aurdal.no +nord-fron.no +nord-odal.no +norddal.no +nordkapp.no +bo.nordland.no +bø.nordland.no +heroy.nordland.no +herøy.nordland.no +nordre-land.no +nordreisa.no +nore-og-uvdal.no +notodden.no +notteroy.no +nøtterøy.no +odda.no +oksnes.no +øksnes.no +omasvuotna.no +oppdal.no +oppegard.no +oppegård.no +orkdal.no +orland.no +ørland.no +orskog.no +ørskog.no +orsta.no +ørsta.no +osen.no +osteroy.no +osterøy.no +valer.ostfold.no +våler.østfold.no +ostre-toten.no +østre-toten.no +overhalla.no +ovre-eiker.no +øvre-eiker.no +oyer.no +øyer.no +oygarden.no +øygarden.no +oystre-slidre.no +øystre-slidre.no +porsanger.no +porsangu.no +porsáŋgu.no +porsgrunn.no +rade.no +råde.no +radoy.no +radøy.no +rælingen.no +rahkkeravju.no +ráhkkerávju.no +raisa.no +ráisa.no +rakkestad.no +ralingen.no +rana.no +randaberg.no +rauma.no +rendalen.no +rennebu.no +rennesoy.no +rennesøy.no +rindal.no +ringebu.no +ringerike.no +ringsaker.no +risor.no +risør.no +rissa.no +roan.no +rodoy.no +rødøy.no +rollag.no +romsa.no +romskog.no +rømskog.no +roros.no +røros.no +rost.no +røst.no +royken.no +røyken.no +royrvik.no +røyrvik.no +ruovat.no +rygge.no +salangen.no +salat.no +sálat.no +sálát.no +saltdal.no +samnanger.no +sandefjord.no +sandnes.no +sandoy.no +sandøy.no +sarpsborg.no +sauda.no +sauherad.no +sel.no +selbu.no +selje.no +seljord.no +siellak.no +sigdal.no +siljan.no +sirdal.no +skanit.no +skánit.no +skanland.no +skånland.no +skaun.no +skedsmo.no +ski.no +skien.no +skierva.no +skiervá.no +skiptvet.no +skjak.no +skjåk.no +skjervoy.no +skjervøy.no +skodje.no +smola.no +smøla.no +snaase.no +snåase.no +snasa.no +snåsa.no +snillfjord.no +snoasa.no +sogndal.no +sogne.no +søgne.no +sokndal.no +sola.no +solund.no +somna.no +sømna.no +sondre-land.no +søndre-land.no +songdalen.no +sor-aurdal.no +sør-aurdal.no +sor-fron.no +sør-fron.no +sor-odal.no +sør-odal.no +sor-varanger.no +sør-varanger.no +sorfold.no +sørfold.no +sorreisa.no +sørreisa.no +sortland.no +sorum.no +sørum.no +spydeberg.no +stange.no +stavanger.no +steigen.no +steinkjer.no +stjordal.no +stjørdal.no +stokke.no +stor-elvdal.no +stord.no +stordal.no +storfjord.no +strand.no +stranda.no +stryn.no +sula.no +suldal.no +sund.no +sunndal.no +surnadal.no +sveio.no +svelvik.no +sykkylven.no +tana.no +bo.telemark.no +bø.telemark.no +time.no +tingvoll.no +tinn.no +tjeldsund.no +tjome.no +tjøme.no +tokke.no +tolga.no +tonsberg.no +tønsberg.no +torsken.no +træna.no +trana.no +tranoy.no +tranøy.no +troandin.no +trogstad.no +trøgstad.no +tromsa.no +tromso.no +tromsø.no +trondheim.no +trysil.no +tvedestrand.no +tydal.no +tynset.no +tysfjord.no +tysnes.no +tysvær.no +tysvar.no +ullensaker.no +ullensvang.no +ulvik.no +unjarga.no +unjárga.no +utsira.no +vaapste.no +vadso.no +vadsø.no +værøy.no +vaga.no +vågå.no +vagan.no +vågan.no +vagsoy.no +vågsøy.no +vaksdal.no +valle.no +vang.no +vanylven.no +vardo.no +vardø.no +varggat.no +várggát.no +varoy.no +vefsn.no +vega.no +vegarshei.no +vegårshei.no +vennesla.no +verdal.no +verran.no +vestby.no +sande.vestfold.no +vestnes.no +vestre-slidre.no +vestre-toten.no +vestvagoy.no +vestvågøy.no +vevelstad.no +vik.no +vikna.no +vindafjord.no +voagat.no +volda.no +voss.no + +// np : http://www.mos.com.np/register.html +*.np + +// nr : http://cenpac.net.nr/dns/index.html +// Submitted by registry +nr +biz.nr +com.nr +edu.nr +gov.nr +info.nr +net.nr +org.nr + +// nu : https://www.iana.org/domains/root/db/nu.html +nu + +// nz : https://www.iana.org/domains/root/db/nz.html +// Submitted by registry +nz +ac.nz +co.nz +cri.nz +geek.nz +gen.nz +govt.nz +health.nz +iwi.nz +kiwi.nz +maori.nz +māori.nz +mil.nz +net.nz +org.nz +parliament.nz +school.nz + +// om : https://www.iana.org/domains/root/db/om.html +om +co.om +com.om +edu.om +gov.om +med.om +museum.om +net.om +org.om +pro.om + +// onion : https://tools.ietf.org/html/rfc7686 +onion + +// org : https://www.iana.org/domains/root/db/org.html +org + +// pa : http://www.nic.pa/ +// Some additional second level "domains" resolve directly as hostnames, such as +// pannet.pa, so we add a rule for "pa". +pa +abo.pa +ac.pa +com.pa +edu.pa +gob.pa +ing.pa +med.pa +net.pa +nom.pa +org.pa +sld.pa + +// pe : https://www.nic.pe/InformeFinalComision.pdf +pe +com.pe +edu.pe +gob.pe +mil.pe +net.pe +nom.pe +org.pe + +// pf : http://www.gobin.info/domainname/formulaire-pf.pdf +pf +com.pf +edu.pf +org.pf + +// pg : https://www.iana.org/domains/root/db/pg.html +*.pg + +// ph : https://www.iana.org/domains/root/db/ph.html +// Submitted by registry +ph +com.ph +edu.ph +gov.ph +i.ph +mil.ph +net.ph +ngo.ph +org.ph + +// pk : https://pk5.pknic.net.pk/pk5/msgNamepk.PK +// Contact Email: staff@pknic.net.pk +pk +ac.pk +biz.pk +com.pk +edu.pk +fam.pk +gkp.pk +gob.pk +gog.pk +gok.pk +gop.pk +gos.pk +gov.pk +net.pk +org.pk +web.pk + +// pl : https://www.dns.pl/en/ +// Confirmed by registry 2024-11-18 +pl +com.pl +net.pl +org.pl +// pl functional domains : https://www.dns.pl/en/list_of_functional_domain_names +agro.pl +aid.pl +atm.pl +auto.pl +biz.pl +edu.pl +gmina.pl +gsm.pl +info.pl +mail.pl +media.pl +miasta.pl +mil.pl +nieruchomosci.pl +nom.pl +pc.pl +powiat.pl +priv.pl +realestate.pl +rel.pl +sex.pl +shop.pl +sklep.pl +sos.pl +szkola.pl +targi.pl +tm.pl +tourism.pl +travel.pl +turystyka.pl +// Government domains : https://www.dns.pl/informacje_o_rejestracji_domen_gov_pl +// In accordance with the .gov.pl Domain Name Regulations : https://www.dns.pl/regulamin_gov_pl +gov.pl +ap.gov.pl +griw.gov.pl +ic.gov.pl +is.gov.pl +kmpsp.gov.pl +konsulat.gov.pl +kppsp.gov.pl +kwp.gov.pl +kwpsp.gov.pl +mup.gov.pl +mw.gov.pl +oia.gov.pl +oirm.gov.pl +oke.gov.pl +oow.gov.pl +oschr.gov.pl +oum.gov.pl +pa.gov.pl +pinb.gov.pl +piw.gov.pl +po.gov.pl +pr.gov.pl +psp.gov.pl +psse.gov.pl +pup.gov.pl +rzgw.gov.pl +sa.gov.pl +sdn.gov.pl +sko.gov.pl +so.gov.pl +sr.gov.pl +starostwo.gov.pl +ug.gov.pl +ugim.gov.pl +um.gov.pl +umig.gov.pl +upow.gov.pl +uppo.gov.pl +us.gov.pl +uw.gov.pl +uzs.gov.pl +wif.gov.pl +wiih.gov.pl +winb.gov.pl +wios.gov.pl +witd.gov.pl +wiw.gov.pl +wkz.gov.pl +wsa.gov.pl +wskr.gov.pl +wsse.gov.pl +wuoz.gov.pl +wzmiuw.gov.pl +zp.gov.pl +zpisdn.gov.pl +// pl regional domains : https://www.dns.pl/en/list_of_regional_domain_names +augustow.pl +babia-gora.pl +bedzin.pl +beskidy.pl +bialowieza.pl +bialystok.pl +bielawa.pl +bieszczady.pl +boleslawiec.pl +bydgoszcz.pl +bytom.pl +cieszyn.pl +czeladz.pl +czest.pl +dlugoleka.pl +elblag.pl +elk.pl +glogow.pl +gniezno.pl +gorlice.pl +grajewo.pl +ilawa.pl +jaworzno.pl +jelenia-gora.pl +jgora.pl +kalisz.pl +karpacz.pl +kartuzy.pl +kaszuby.pl +katowice.pl +kazimierz-dolny.pl +kepno.pl +ketrzyn.pl +klodzko.pl +kobierzyce.pl +kolobrzeg.pl +konin.pl +konskowola.pl +kutno.pl +lapy.pl +lebork.pl +legnica.pl +lezajsk.pl +limanowa.pl +lomza.pl +lowicz.pl +lubin.pl +lukow.pl +malbork.pl +malopolska.pl +mazowsze.pl +mazury.pl +mielec.pl +mielno.pl +mragowo.pl +naklo.pl +nowaruda.pl +nysa.pl +olawa.pl +olecko.pl +olkusz.pl +olsztyn.pl +opoczno.pl +opole.pl +ostroda.pl +ostroleka.pl +ostrowiec.pl +ostrowwlkp.pl +pila.pl +pisz.pl +podhale.pl +podlasie.pl +polkowice.pl +pomorskie.pl +pomorze.pl +prochowice.pl +pruszkow.pl +przeworsk.pl +pulawy.pl +radom.pl +rawa-maz.pl +rybnik.pl +rzeszow.pl +sanok.pl +sejny.pl +skoczow.pl +slask.pl +slupsk.pl +sosnowiec.pl +stalowa-wola.pl +starachowice.pl +stargard.pl +suwalki.pl +swidnica.pl +swiebodzin.pl +swinoujscie.pl +szczecin.pl +szczytno.pl +tarnobrzeg.pl +tgory.pl +turek.pl +tychy.pl +ustka.pl +walbrzych.pl +warmia.pl +warszawa.pl +waw.pl +wegrow.pl +wielun.pl +wlocl.pl +wloclawek.pl +wodzislaw.pl +wolomin.pl +wroclaw.pl +zachpomor.pl +zagan.pl +zarow.pl +zgora.pl +zgorzelec.pl + +// pm : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf +pm + +// pn : https://www.iana.org/domains/root/db/pn.html +pn +co.pn +edu.pn +gov.pn +net.pn +org.pn + +// post : https://www.iana.org/domains/root/db/post.html +post + +// pr : http://www.nic.pr/index.asp?f=1 +pr +biz.pr +com.pr +edu.pr +gov.pr +info.pr +isla.pr +name.pr +net.pr +org.pr +pro.pr +// these aren't mentioned on nic.pr, but on https://www.iana.org/domains/root/db/pr.html +ac.pr +est.pr +prof.pr + +// pro : http://registry.pro/get-pro +pro +aaa.pro +aca.pro +acct.pro +avocat.pro +bar.pro +cpa.pro +eng.pro +jur.pro +law.pro +med.pro +recht.pro + +// ps : https://www.iana.org/domains/root/db/ps.html +// http://www.nic.ps/registration/policy.html#reg +ps +com.ps +edu.ps +gov.ps +net.ps +org.ps +plo.ps +sec.ps + +// pt : https://www.dns.pt/en/domain/pt-terms-and-conditions-registration-rules/ +pt +com.pt +edu.pt +gov.pt +int.pt +net.pt +nome.pt +org.pt +publ.pt + +// pw : https://www.iana.org/domains/root/db/pw.html +// Confirmed by registry in private correspondence with @dnsguru 2024-12-09 +pw +gov.pw + +// py : https://www.iana.org/domains/root/db/py.html +// Submitted by registry +py +com.py +coop.py +edu.py +gov.py +mil.py +net.py +org.py + +// qa : http://domains.qa/en/ +qa +com.qa +edu.qa +gov.qa +mil.qa +name.qa +net.qa +org.qa +sch.qa + +// re : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf +// Confirmed by registry 2024-11-18 +re +// Closed for registration on 2013-03-15 but domains are still maintained +asso.re +com.re + +// ro : http://www.rotld.ro/ +ro +arts.ro +com.ro +firm.ro +info.ro +nom.ro +nt.ro +org.ro +rec.ro +store.ro +tm.ro +www.ro + +// rs : https://www.rnids.rs/en/domains/national-domains +rs +ac.rs +co.rs +edu.rs +gov.rs +in.rs +org.rs + +// ru : https://cctld.ru/files/pdf/docs/en/rules_ru-rf.pdf +// Submitted by George Georgievsky +ru + +// rw : https://www.iana.org/domains/root/db/rw.html +rw +ac.rw +co.rw +coop.rw +gov.rw +mil.rw +net.rw +org.rw + +// sa : http://www.nic.net.sa/ +sa +com.sa +edu.sa +gov.sa +med.sa +net.sa +org.sa +pub.sa +sch.sa + +// sb : http://www.sbnic.net.sb/ +// Submitted by registry +sb +com.sb +edu.sb +gov.sb +net.sb +org.sb + +// sc : http://www.nic.sc/ +sc +com.sc +edu.sc +gov.sc +net.sc +org.sc + +// sd : https://www.iana.org/domains/root/db/sd.html +// Submitted by registry +sd +com.sd +edu.sd +gov.sd +info.sd +med.sd +net.sd +org.sd +tv.sd + +// se : https://www.iana.org/domains/root/db/se.html +// https://data.internetstiftelsen.se/barred_domains_list.txt -> Second level domains & Sub-domains +// Confirmed by Registry Services 2024-11-20 +se +a.se +ac.se +b.se +bd.se +brand.se +c.se +d.se +e.se +f.se +fh.se +fhsk.se +fhv.se +g.se +h.se +i.se +k.se +komforb.se +kommunalforbund.se +komvux.se +l.se +lanbib.se +m.se +n.se +naturbruksgymn.se +o.se +org.se +p.se +parti.se +pp.se +press.se +r.se +s.se +t.se +tm.se +u.se +w.se +x.se +y.se +z.se + +// sg : https://www.sgnic.sg/domain-registration/sg-categories-rules +// Confirmed by registry 2024-11-19 +sg +com.sg +edu.sg +gov.sg +net.sg +org.sg + +// sh : http://nic.sh/rules.htm +sh +com.sh +gov.sh +mil.sh +net.sh +org.sh + +// si : https://www.iana.org/domains/root/db/si.html +si + +// sj : No registrations at this time. +// Submitted by registry +sj + +// sk : https://www.iana.org/domains/root/db/sk.html +// https://sk-nic.sk/ +sk +org.sk + +// sl : http://www.nic.sl +// Submitted by registry +sl +com.sl +edu.sl +gov.sl +net.sl +org.sl + +// sm : https://www.iana.org/domains/root/db/sm.html +sm + +// sn : https://www.iana.org/domains/root/db/sn.html +sn +art.sn +com.sn +edu.sn +gouv.sn +org.sn +univ.sn + +// so : http://sonic.so/policies/ +so +com.so +edu.so +gov.so +me.so +net.so +org.so + +// sr : https://www.iana.org/domains/root/db/sr.html +sr + +// ss : https://registry.nic.ss/ +// Submitted by registry +ss +biz.ss +co.ss +com.ss +edu.ss +gov.ss +me.ss +net.ss +org.ss +sch.ss + +// st : http://www.nic.st/html/policyrules/ +st +co.st +com.st +consulado.st +edu.st +embaixada.st +mil.st +net.st +org.st +principe.st +saotome.st +store.st + +// su : https://www.iana.org/domains/root/db/su.html +su + +// sv : https://www.iana.org/domains/root/db/sv.html +sv +com.sv +edu.sv +gob.sv +org.sv +red.sv + +// sx : https://www.iana.org/domains/root/db/sx.html +// Submitted by registry +sx +gov.sx + +// sy : https://www.iana.org/domains/root/db/sy.html +sy +com.sy +edu.sy +gov.sy +mil.sy +net.sy +org.sy + +// sz : https://www.iana.org/domains/root/db/sz.html +// http://www.sispa.org.sz/ +sz +ac.sz +co.sz +org.sz + +// tc : https://www.iana.org/domains/root/db/tc.html +tc + +// td : https://www.iana.org/domains/root/db/td.html +td + +// tel : https://www.iana.org/domains/root/db/tel.html +// http://www.telnic.org/ +tel + +// tf : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf +tf + +// tg : https://www.iana.org/domains/root/db/tg.html +// http://www.nic.tg/ +tg + +// th : https://www.iana.org/domains/root/db/th.html +// Submitted by registry +th +ac.th +co.th +go.th +in.th +mi.th +net.th +or.th + +// tj : http://www.nic.tj/policy.html +tj +ac.tj +biz.tj +co.tj +com.tj +edu.tj +go.tj +gov.tj +int.tj +mil.tj +name.tj +net.tj +nic.tj +org.tj +test.tj +web.tj + +// tk : https://www.iana.org/domains/root/db/tk.html +tk + +// tl : https://www.iana.org/domains/root/db/tl.html +tl +gov.tl + +// tm : https://www.nic.tm/local.html +// Confirmed by registry 2024-11-19 +tm +co.tm +com.tm +edu.tm +gov.tm +mil.tm +net.tm +nom.tm +org.tm + +// tn : http://www.registre.tn/fr/ +// https://whois.ati.tn/ +tn +com.tn +ens.tn +fin.tn +gov.tn +ind.tn +info.tn +intl.tn +mincom.tn +nat.tn +net.tn +org.tn +perso.tn +tourism.tn + +// to : https://www.iana.org/domains/root/db/to.html +// Submitted by registry +to +com.to +edu.to +gov.to +mil.to +net.to +org.to + +// tr : https://nic.tr/ +// https://nic.tr/forms/eng/policies.pdf +// https://nic.tr/index.php?USRACTN=PRICELST +tr +av.tr +bbs.tr +bel.tr +biz.tr +com.tr +dr.tr +edu.tr +gen.tr +gov.tr +info.tr +k12.tr +kep.tr +mil.tr +name.tr +net.tr +org.tr +pol.tr +tel.tr +tsk.tr +tv.tr +web.tr +// Used by Northern Cyprus +nc.tr +// Used by government agencies of Northern Cyprus +gov.nc.tr + +// tt : https://www.nic.tt/ +// Confirmed by registry 2024-11-19 +tt +biz.tt +co.tt +com.tt +edu.tt +gov.tt +info.tt +mil.tt +name.tt +net.tt +org.tt +pro.tt + +// tv : https://www.iana.org/domains/root/db/tv.html +// Not listing any 2LDs as reserved since none seem to exist in practice, +// Wikipedia notwithstanding. +tv + +// tw : https://www.iana.org/domains/root/db/tw.html +// https://twnic.tw/dnservice_catag.php +// Confirmed by registry 2024-11-26 +tw +club.tw +com.tw +ebiz.tw +edu.tw +game.tw +gov.tw +idv.tw +mil.tw +net.tw +org.tw + +// tz : http://www.tznic.or.tz/index.php/domains +// Submitted by registry +tz +ac.tz +co.tz +go.tz +hotel.tz +info.tz +me.tz +mil.tz +mobi.tz +ne.tz +or.tz +sc.tz +tv.tz + +// ua : https://hostmaster.ua/policy/?ua +// Submitted by registry +ua +// ua 2LD +com.ua +edu.ua +gov.ua +in.ua +net.ua +org.ua +// ua geographic names +// https://hostmaster.ua/2ld/ +cherkassy.ua +cherkasy.ua +chernigov.ua +chernihiv.ua +chernivtsi.ua +chernovtsy.ua +ck.ua +cn.ua +cr.ua +crimea.ua +cv.ua +dn.ua +dnepropetrovsk.ua +dnipropetrovsk.ua +donetsk.ua +dp.ua +if.ua +ivano-frankivsk.ua +kh.ua +kharkiv.ua +kharkov.ua +kherson.ua +khmelnitskiy.ua +khmelnytskyi.ua +kiev.ua +kirovograd.ua +km.ua +kr.ua +kropyvnytskyi.ua +krym.ua +ks.ua +kv.ua +kyiv.ua +lg.ua +lt.ua +lugansk.ua +luhansk.ua +lutsk.ua +lv.ua +lviv.ua +mk.ua +mykolaiv.ua +nikolaev.ua +od.ua +odesa.ua +odessa.ua +pl.ua +poltava.ua +rivne.ua +rovno.ua +rv.ua +sb.ua +sebastopol.ua +sevastopol.ua +sm.ua +sumy.ua +te.ua +ternopil.ua +uz.ua +uzhgorod.ua +uzhhorod.ua +vinnica.ua +vinnytsia.ua +vn.ua +volyn.ua +yalta.ua +zakarpattia.ua +zaporizhzhe.ua +zaporizhzhia.ua +zhitomir.ua +zhytomyr.ua +zp.ua +zt.ua + +// ug : https://www.registry.co.ug/ +// https://www.registry.co.ug, https://whois.co.ug +// Confirmed by registry 2025-01-20 +ug +ac.ug +co.ug +com.ug +edu.ug +go.ug +gov.ug +mil.ug +ne.ug +or.ug +org.ug +sc.ug +us.ug + +// uk : https://www.iana.org/domains/root/db/uk.html +// Submitted by registry +uk +ac.uk +co.uk +gov.uk +ltd.uk +me.uk +net.uk +nhs.uk +org.uk +plc.uk +police.uk +*.sch.uk + +// us : https://www.iana.org/domains/root/db/us.html +// Confirmed via the .us zone file by William Harrison 2024-12-10 +us +dni.us +isa.us +nsn.us +// Geographic Names +ak.us +al.us +ar.us +as.us +az.us +ca.us +co.us +ct.us +dc.us +de.us +fl.us +ga.us +gu.us +hi.us +ia.us +id.us +il.us +in.us +ks.us +ky.us +la.us +ma.us +md.us +me.us +mi.us +mn.us +mo.us +ms.us +mt.us +nc.us +nd.us +ne.us +nh.us +nj.us +nm.us +nv.us +ny.us +oh.us +ok.us +or.us +pa.us +pr.us +ri.us +sc.us +sd.us +tn.us +tx.us +ut.us +va.us +vi.us +vt.us +wa.us +wi.us +wv.us +wy.us +// The registrar notes several more specific domains available in each state, +// such as state.*.us, dst.*.us, etc., but resolution of these is somewhat +// haphazard; in some states these domains resolve as addresses, while in others +// only subdomains are available, or even nothing at all. We include the +// most common ones where it's clear that different sites are different +// entities. +k12.ak.us +k12.al.us +k12.ar.us +k12.as.us +k12.az.us +k12.ca.us +k12.co.us +k12.ct.us +k12.dc.us +k12.fl.us +k12.ga.us +k12.gu.us +// k12.hi.us - Bug 614565 - Hawaii has a state-wide DOE login +k12.ia.us +k12.id.us +k12.il.us +k12.in.us +k12.ks.us +k12.ky.us +k12.la.us +k12.ma.us +k12.md.us +k12.me.us +k12.mi.us +k12.mn.us +k12.mo.us +k12.ms.us +k12.mt.us +k12.nc.us +k12.ne.us +k12.nh.us +k12.nj.us +k12.nm.us +k12.nv.us +k12.ny.us +k12.oh.us +k12.ok.us +k12.or.us +k12.pa.us +k12.pr.us +// k12.ri.us - Removed at request of Kim Cournoyer +k12.sc.us +// k12.sd.us - Bug 934131 - Removed at request of James Booze +k12.tn.us +k12.tx.us +k12.ut.us +k12.va.us +k12.vi.us +k12.vt.us +k12.wa.us +k12.wi.us +// k12.wv.us - Bug 947705 - Removed at request of Verne Britton +cc.ak.us +lib.ak.us +cc.al.us +lib.al.us +cc.ar.us +lib.ar.us +cc.as.us +lib.as.us +cc.az.us +lib.az.us +cc.ca.us +lib.ca.us +cc.co.us +lib.co.us +cc.ct.us +lib.ct.us +cc.dc.us +lib.dc.us +cc.de.us +cc.fl.us +lib.fl.us +cc.ga.us +lib.ga.us +cc.gu.us +lib.gu.us +cc.hi.us +lib.hi.us +cc.ia.us +lib.ia.us +cc.id.us +lib.id.us +cc.il.us +lib.il.us +cc.in.us +lib.in.us +cc.ks.us +lib.ks.us +cc.ky.us +lib.ky.us +cc.la.us +lib.la.us +cc.ma.us +lib.ma.us +cc.md.us +lib.md.us +cc.me.us +lib.me.us +cc.mi.us +lib.mi.us +cc.mn.us +lib.mn.us +cc.mo.us +lib.mo.us +cc.ms.us +cc.mt.us +lib.mt.us +cc.nc.us +lib.nc.us +cc.ne.us +lib.ne.us +cc.nh.us +lib.nh.us +cc.nj.us +lib.nj.us +cc.nm.us +lib.nm.us +cc.nv.us +lib.nv.us +cc.ny.us +lib.ny.us +cc.oh.us +lib.oh.us +cc.ok.us +lib.ok.us +cc.or.us +lib.or.us +cc.pa.us +lib.pa.us +cc.pr.us +lib.pr.us +cc.ri.us +lib.ri.us +cc.sc.us +lib.sc.us +cc.sd.us +lib.sd.us +cc.tn.us +lib.tn.us +cc.tx.us +lib.tx.us +cc.ut.us +lib.ut.us +cc.va.us +lib.va.us +cc.vi.us +lib.vi.us +cc.vt.us +lib.vt.us +cc.wa.us +lib.wa.us +cc.wi.us +lib.wi.us +cc.wv.us +cc.wy.us +k12.wy.us +// lib.wv.us - Bug 941670 - Removed at request of Larry W Arnold +lib.wy.us +// k12.ma.us contains school districts in Massachusetts. The 4LDs are +// managed independently except for private (PVT), charter (CHTR) and +// parochial (PAROCH) schools. Those are delegated directly to the +// 5LD operators. +chtr.k12.ma.us +paroch.k12.ma.us +pvt.k12.ma.us +// Merit Network, Inc. maintains the registry for =~ /(k12|cc|lib).mi.us/ and the following +// see also: https://domreg.merit.edu : domreg@merit.edu +// see also: whois -h whois.domreg.merit.edu help +ann-arbor.mi.us +cog.mi.us +dst.mi.us +eaton.mi.us +gen.mi.us +mus.mi.us +tec.mi.us +washtenaw.mi.us + +// uy : http://www.nic.org.uy/ +uy +com.uy +edu.uy +gub.uy +mil.uy +net.uy +org.uy + +// uz : http://www.reg.uz/ +uz +co.uz +com.uz +net.uz +org.uz + +// va : https://www.iana.org/domains/root/db/va.html +va + +// vc : https://www.iana.org/domains/root/db/vc.html +// Submitted by registry +vc +com.vc +edu.vc +gov.vc +mil.vc +net.vc +org.vc + +// ve : https://registro.nic.ve/ +// https://nic.ve/site/user-agreement -> under "III. Clasificación de Nombres de Dominio" +// Submitted by registry nic@nic.ve and nicve@conatel.gob.ve +ve +arts.ve +bib.ve +co.ve +com.ve +e12.ve +edu.ve +emprende.ve +firm.ve +gob.ve +gov.ve +ia.ve +info.ve +int.ve +mil.ve +net.ve +nom.ve +org.ve +rar.ve +rec.ve +store.ve +tec.ve +web.ve + +// vg : https://www.iana.org/domains/root/db/vg.html +// Confirmed by registry 2025-01-10 +vg +edu.vg + +// vi : https://www.iana.org/domains/root/db/vi.html +vi +co.vi +com.vi +k12.vi +net.vi +org.vi + +// vn : https://www.vnnic.vn/en/domain/cctld-vn +// https://vnnic.vn/sites/default/files/tailieu/vn.cctld.domains.txt +vn +ac.vn +ai.vn +biz.vn +com.vn +edu.vn +gov.vn +health.vn +id.vn +info.vn +int.vn +io.vn +name.vn +net.vn +org.vn +pro.vn + +// vn geographical names +angiang.vn +bacgiang.vn +backan.vn +baclieu.vn +bacninh.vn +baria-vungtau.vn +bentre.vn +binhdinh.vn +binhduong.vn +binhphuoc.vn +binhthuan.vn +camau.vn +cantho.vn +caobang.vn +daklak.vn +daknong.vn +danang.vn +dienbien.vn +dongnai.vn +dongthap.vn +gialai.vn +hagiang.vn +haiduong.vn +haiphong.vn +hanam.vn +hanoi.vn +hatinh.vn +haugiang.vn +hoabinh.vn +hue.vn +hungyen.vn +khanhhoa.vn +kiengiang.vn +kontum.vn +laichau.vn +lamdong.vn +langson.vn +laocai.vn +longan.vn +namdinh.vn +nghean.vn +ninhbinh.vn +ninhthuan.vn +phutho.vn +phuyen.vn +quangbinh.vn +quangnam.vn +quangngai.vn +quangninh.vn +quangtri.vn +soctrang.vn +sonla.vn +tayninh.vn +thaibinh.vn +thainguyen.vn +thanhhoa.vn +thanhphohochiminh.vn +thuathienhue.vn +tiengiang.vn +travinh.vn +tuyenquang.vn +vinhlong.vn +vinhphuc.vn +yenbai.vn + +// vu : https://www.iana.org/domains/root/db/vu.html +// http://www.vunic.vu/ +vu +com.vu +edu.vu +net.vu +org.vu + +// wf : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf +wf + +// ws : https://www.iana.org/domains/root/db/ws.html +// http://samoanic.ws/index.dhtml +ws +com.ws +edu.ws +gov.ws +net.ws +org.ws + +// yt : https://www.afnic.fr/wp-media/uploads/2022/12/afnic-naming-policy-2023-01-01.pdf +yt + +// IDN ccTLDs +// When submitting patches, please maintain a sort by ISO 3166 ccTLD, then +// U-label, and follow this format: +// // A-Label ("", [, variant info]) : +// // [sponsoring org] +// U-Label + +// xn--mgbaam7a8h ("Emerat", Arabic) : AE +// http://nic.ae/english/arabicdomain/rules.jsp +امارات + +// xn--y9a3aq ("hye", Armenian) : AM +// ISOC AM (operated by .am Registry) +հայ + +// xn--54b7fta0cc ("Bangla", Bangla) : BD +বাংলা + +// xn--90ae ("bg", Bulgarian) : BG +бг + +// xn--mgbcpq6gpa1a ("albahrain", Arabic) : BH +البحرين + +// xn--90ais ("bel", Belarusian/Russian Cyrillic) : BY +// Operated by .by registry +бел + +// xn--fiqs8s ("Zhongguo/China", Chinese, Simplified) : CN +// CNNIC +// https://www.cnnic.cn/11/192/index.html +中国 + +// xn--fiqz9s ("Zhongguo/China", Chinese, Traditional) : CN +// CNNIC +// https://www.cnnic.com.cn/AU/MediaC/Announcement/201609/t20160905_54470.htm +中國 + +// xn--lgbbat1ad8j ("Algeria/Al Jazair", Arabic) : DZ +الجزائر + +// xn--wgbh1c ("Egypt/Masr", Arabic) : EG +// http://www.dotmasr.eg/ +مصر + +// xn--e1a4c ("eu", Cyrillic) : EU +// https://eurid.eu +ею + +// xn--qxa6a ("eu", Greek) : EU +// https://eurid.eu +ευ + +// xn--mgbah1a3hjkrd ("Mauritania", Arabic) : MR +موريتانيا + +// xn--node ("ge", Georgian Mkhedruli) : GE +გე + +// xn--qxam ("el", Greek) : GR +// Hellenic Ministry of Infrastructure, Transport, and Networks +ελ + +// xn--j6w193g ("Hong Kong", Chinese) : HK +// https://www.hkirc.hk +// Submitted by registry +// https://www.hkirc.hk/content.jsp?id=30#!/34 +香港 +個人.香港 +公司.香港 +政府.香港 +教育.香港 +組織.香港 +網絡.香港 + +// xn--2scrj9c ("Bharat", Kannada) : IN +// India +ಭಾರತ + +// xn--3hcrj9c ("Bharat", Oriya) : IN +// India +ଭାରତ + +// xn--45br5cyl ("Bharatam", Assamese) : IN +// India +ভাৰত + +// xn--h2breg3eve ("Bharatam", Sanskrit) : IN +// India +भारतम् + +// xn--h2brj9c8c ("Bharot", Santali) : IN +// India +भारोत + +// xn--mgbgu82a ("Bharat", Sindhi) : IN +// India +ڀارت + +// xn--rvc1e0am3e ("Bharatam", Malayalam) : IN +// India +ഭാരതം + +// xn--h2brj9c ("Bharat", Devanagari) : IN +// India +भारत + +// xn--mgbbh1a ("Bharat", Kashmiri) : IN +// India +بارت + +// xn--mgbbh1a71e ("Bharat", Arabic) : IN +// India +بھارت + +// xn--fpcrj9c3d ("Bharat", Telugu) : IN +// India +భారత్ + +// xn--gecrj9c ("Bharat", Gujarati) : IN +// India +ભારત + +// xn--s9brj9c ("Bharat", Gurmukhi) : IN +// India +ਭਾਰਤ + +// xn--45brj9c ("Bharat", Bengali) : IN +// India +ভারত + +// xn--xkc2dl3a5ee0h ("India", Tamil) : IN +// India +இந்தியா + +// xn--mgba3a4f16a ("Iran", Persian) : IR +ایران + +// xn--mgba3a4fra ("Iran", Arabic) : IR +ايران + +// xn--mgbtx2b ("Iraq", Arabic) : IQ +// Communications and Media Commission +عراق + +// xn--mgbayh7gpa ("al-Ordon", Arabic) : JO +// National Information Technology Center (NITC) +// Royal Scientific Society, Al-Jubeiha +الاردن + +// xn--3e0b707e ("Republic of Korea", Hangul) : KR +한국 + +// xn--80ao21a ("Kaz", Kazakh) : KZ +қаз + +// xn--q7ce6a ("Lao", Lao) : LA +ລາວ + +// xn--fzc2c9e2c ("Lanka", Sinhalese-Sinhala) : LK +// https://nic.lk +ලංකා + +// xn--xkc2al3hye2a ("Ilangai", Tamil) : LK +// https://nic.lk +இலங்கை + +// xn--mgbc0a9azcg ("Morocco/al-Maghrib", Arabic) : MA +المغرب + +// xn--d1alf ("mkd", Macedonian) : MK +// MARnet +мкд + +// xn--l1acc ("mon", Mongolian) : MN +мон + +// xn--mix891f ("Macao", Chinese, Traditional) : MO +// MONIC / HNET Asia (Registry Operator for .mo) +澳門 + +// xn--mix082f ("Macao", Chinese, Simplified) : MO +澳门 + +// xn--mgbx4cd0ab ("Malaysia", Malay) : MY +مليسيا + +// xn--mgb9awbf ("Oman", Arabic) : OM +عمان + +// xn--mgbai9azgqp6j ("Pakistan", Urdu/Arabic) : PK +پاکستان + +// xn--mgbai9a5eva00b ("Pakistan", Urdu/Arabic, variant) : PK +پاكستان + +// xn--ygbi2ammx ("Falasteen", Arabic) : PS +// The Palestinian National Internet Naming Authority (PNINA) +// http://www.pnina.ps +فلسطين + +// xn--90a3ac ("srb", Cyrillic) : RS +// https://www.rnids.rs/en/domains/national-domains +срб +ак.срб +обр.срб +од.срб +орг.срб +пр.срб +упр.срб + +// xn--p1ai ("rf", Russian-Cyrillic) : RU +// https://cctld.ru/files/pdf/docs/en/rules_ru-rf.pdf +// Submitted by George Georgievsky +рф + +// xn--wgbl6a ("Qatar", Arabic) : QA +// http://www.ict.gov.qa/ +قطر + +// xn--mgberp4a5d4ar ("AlSaudiah", Arabic) : SA +// http://www.nic.net.sa/ +السعودية + +// xn--mgberp4a5d4a87g ("AlSaudiah", Arabic, variant): SA +السعودیة + +// xn--mgbqly7c0a67fbc ("AlSaudiah", Arabic, variant) : SA +السعودیۃ + +// xn--mgbqly7cvafr ("AlSaudiah", Arabic, variant) : SA +السعوديه + +// xn--mgbpl2fh ("sudan", Arabic) : SD +// Operated by .sd registry +سودان + +// xn--yfro4i67o Singapore ("Singapore", Chinese) : SG +新加坡 + +// xn--clchc0ea0b2g2a9gcd ("Singapore", Tamil) : SG +சிங்கப்பூர் + +// xn--ogbpf8fl ("Syria", Arabic) : SY +سورية + +// xn--mgbtf8fl ("Syria", Arabic, variant) : SY +سوريا + +// xn--o3cw4h ("Thai", Thai) : TH +// http://www.thnic.co.th +ไทย +ทหาร.ไทย +ธุรกิจ.ไทย +เน็ต.ไทย +รัฐบาล.ไทย +ศึกษา.ไทย +องค์กร.ไทย + +// xn--pgbs0dh ("Tunisia", Arabic) : TN +// http://nic.tn +تونس + +// xn--kpry57d ("Taiwan", Chinese, Traditional) : TW +// https://twnic.tw/dnservice_catag.php +台灣 + +// xn--kprw13d ("Taiwan", Chinese, Simplified) : TW +// http://www.twnic.net/english/dn/dn_07a.htm +台湾 + +// xn--nnx388a ("Taiwan", Chinese, variant) : TW +臺灣 + +// xn--j1amh ("ukr", Cyrillic) : UA +укр + +// xn--mgb2ddes ("AlYemen", Arabic) : YE +اليمن + +// xxx : http://icmregistry.com +xxx + +// ye : http://www.y.net.ye/services/domain_name.htm +ye +com.ye +edu.ye +gov.ye +mil.ye +net.ye +org.ye + +// za : https://www.iana.org/domains/root/db/za.html +ac.za +agric.za +alt.za +co.za +edu.za +gov.za +grondar.za +law.za +mil.za +net.za +ngo.za +nic.za +nis.za +nom.za +org.za +school.za +tm.za +web.za + +// zm : https://zicta.zm/ +// Submitted by registry +zm +ac.zm +biz.zm +co.zm +com.zm +edu.zm +gov.zm +info.zm +mil.zm +net.zm +org.zm +sch.zm + +// zw : https://www.potraz.gov.zw/ +// Confirmed by registry 2017-01-25 +zw +ac.zw +co.zw +gov.zw +mil.zw +org.zw + +// newGTLDs + +// List of new gTLDs imported from https://www.icann.org/resources/registries/gtlds/v2/gtlds.json on 2026-06-13T16:12:40Z +// This list is auto-generated, don't edit it manually. +// aaa : American Automobile Association, Inc. +// https://www.iana.org/domains/root/db/aaa.html +aaa + +// aarp : AARP +// https://www.iana.org/domains/root/db/aarp.html +aarp + +// abb : ABB Ltd +// https://www.iana.org/domains/root/db/abb.html +abb + +// abbott : Abbott Laboratories, Inc. +// https://www.iana.org/domains/root/db/abbott.html +abbott + +// abbvie : AbbVie Inc. +// https://www.iana.org/domains/root/db/abbvie.html +abbvie + +// abc : Disney Enterprises, Inc. +// https://www.iana.org/domains/root/db/abc.html +abc + +// able : Able Inc. +// https://www.iana.org/domains/root/db/able.html +able + +// abogado : Registry Services, LLC +// https://www.iana.org/domains/root/db/abogado.html +abogado + +// abudhabi : Abu Dhabi Systems and Information Centre +// https://www.iana.org/domains/root/db/abudhabi.html +abudhabi + +// academy : Binky Moon, LLC +// https://www.iana.org/domains/root/db/academy.html +academy + +// accenture : Accenture plc +// https://www.iana.org/domains/root/db/accenture.html +accenture + +// accountant : dot Accountant Limited +// https://www.iana.org/domains/root/db/accountant.html +accountant + +// accountants : Binky Moon, LLC +// https://www.iana.org/domains/root/db/accountants.html +accountants + +// aco : ACO Severin Ahlmann GmbH & Co. KG +// https://www.iana.org/domains/root/db/aco.html +aco + +// actor : Dog Beach, LLC +// https://www.iana.org/domains/root/db/actor.html +actor + +// ads : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/ads.html +ads + +// adult : ICM Registry AD LLC +// https://www.iana.org/domains/root/db/adult.html +adult + +// aeg : Aktiebolaget Electrolux +// https://www.iana.org/domains/root/db/aeg.html +aeg + +// aetna : Aetna Life Insurance Company +// https://www.iana.org/domains/root/db/aetna.html +aetna + +// afl : Australian Football League +// https://www.iana.org/domains/root/db/afl.html +afl + +// africa : ZA Central Registry NPC trading as Registry.Africa +// https://www.iana.org/domains/root/db/africa.html +africa + +// agakhan : Fondation Aga Khan (Aga Khan Foundation) +// https://www.iana.org/domains/root/db/agakhan.html +agakhan + +// agency : Binky Moon, LLC +// https://www.iana.org/domains/root/db/agency.html +agency + +// aig : American International Group, Inc. +// https://www.iana.org/domains/root/db/aig.html +aig + +// airbus : Airbus S.A.S. +// https://www.iana.org/domains/root/db/airbus.html +airbus + +// airforce : Dog Beach, LLC +// https://www.iana.org/domains/root/db/airforce.html +airforce + +// airtel : Bharti Airtel Limited +// https://www.iana.org/domains/root/db/airtel.html +airtel + +// akdn : Fondation Aga Khan (Aga Khan Foundation) +// https://www.iana.org/domains/root/db/akdn.html +akdn + +// alibaba : Alibaba Group Holding Limited +// https://www.iana.org/domains/root/db/alibaba.html +alibaba + +// alipay : Alibaba Group Holding Limited +// https://www.iana.org/domains/root/db/alipay.html +alipay + +// allfinanz : Allfinanz Deutsche Vermögensberatung Aktiengesellschaft +// https://www.iana.org/domains/root/db/allfinanz.html +allfinanz + +// allstate : Allstate Fire and Casualty Insurance Company +// https://www.iana.org/domains/root/db/allstate.html +allstate + +// ally : Ally Financial Inc. +// https://www.iana.org/domains/root/db/ally.html +ally + +// alsace : Region Grand Est +// https://www.iana.org/domains/root/db/alsace.html +alsace + +// alstom : ALSTOM +// https://www.iana.org/domains/root/db/alstom.html +alstom + +// amazon : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/amazon.html +amazon + +// americanexpress : American Express Travel Related Services Company, Inc. +// https://www.iana.org/domains/root/db/americanexpress.html +americanexpress + +// americanfamily : AmFam, Inc. +// https://www.iana.org/domains/root/db/americanfamily.html +americanfamily + +// amex : American Express Travel Related Services Company, Inc. +// https://www.iana.org/domains/root/db/amex.html +amex + +// amfam : AmFam, Inc. +// https://www.iana.org/domains/root/db/amfam.html +amfam + +// amica : Amica Mutual Insurance Company +// https://www.iana.org/domains/root/db/amica.html +amica + +// amsterdam : Gemeente Amsterdam +// https://www.iana.org/domains/root/db/amsterdam.html +amsterdam + +// analytics : Campus IP LLC +// https://www.iana.org/domains/root/db/analytics.html +analytics + +// android : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/android.html +android + +// anquan : Beijing Qihu Keji Co., Ltd. +// https://www.iana.org/domains/root/db/anquan.html +anquan + +// anz : Australia and New Zealand Banking Group Limited +// https://www.iana.org/domains/root/db/anz.html +anz + +// aol : AOL Media LLC +// https://www.iana.org/domains/root/db/aol.html +aol + +// apartments : Binky Moon, LLC +// https://www.iana.org/domains/root/db/apartments.html +apartments + +// app : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/app.html +app + +// apple : Apple Inc. +// https://www.iana.org/domains/root/db/apple.html +apple + +// aquarelle : Aquarelle.com +// https://www.iana.org/domains/root/db/aquarelle.html +aquarelle + +// arab : League of Arab States +// https://www.iana.org/domains/root/db/arab.html +arab + +// aramco : Aramco Services Company +// https://www.iana.org/domains/root/db/aramco.html +aramco + +// archi : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/archi.html +archi + +// army : Dog Beach, LLC +// https://www.iana.org/domains/root/db/army.html +army + +// art : UK Creative Ideas Limited +// https://www.iana.org/domains/root/db/art.html +art + +// arte : Association Relative à la Télévision Européenne G.E.I.E. +// https://www.iana.org/domains/root/db/arte.html +arte + +// asda : Asda Stores Limited +// https://www.iana.org/domains/root/db/asda.html +asda + +// associates : Binky Moon, LLC +// https://www.iana.org/domains/root/db/associates.html +associates + +// athleta : The Gap, Inc. +// https://www.iana.org/domains/root/db/athleta.html +athleta + +// attorney : Dog Beach, LLC +// https://www.iana.org/domains/root/db/attorney.html +attorney + +// auction : Dog Beach, LLC +// https://www.iana.org/domains/root/db/auction.html +auction + +// audi : AUDI Aktiengesellschaft +// https://www.iana.org/domains/root/db/audi.html +audi + +// audible : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/audible.html +audible + +// audio : XYZ.COM LLC +// https://www.iana.org/domains/root/db/audio.html +audio + +// auspost : Australian Postal Corporation +// https://www.iana.org/domains/root/db/auspost.html +auspost + +// author : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/author.html +author + +// auto : XYZ.COM LLC +// https://www.iana.org/domains/root/db/auto.html +auto + +// autos : XYZ.COM LLC +// https://www.iana.org/domains/root/db/autos.html +autos + +// aws : AWS Registry LLC +// https://www.iana.org/domains/root/db/aws.html +aws + +// axa : AXA Group Operations SAS +// https://www.iana.org/domains/root/db/axa.html +axa + +// azure : Microsoft Corporation +// https://www.iana.org/domains/root/db/azure.html +azure + +// baby : XYZ.COM LLC +// https://www.iana.org/domains/root/db/baby.html +baby + +// baidu : Baidu, Inc. +// https://www.iana.org/domains/root/db/baidu.html +baidu + +// banamex : Citigroup Inc. +// https://www.iana.org/domains/root/db/banamex.html +banamex + +// band : Dog Beach, LLC +// https://www.iana.org/domains/root/db/band.html +band + +// bank : fTLD Registry Services LLC +// https://www.iana.org/domains/root/db/bank.html +bank + +// bar : Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +// https://www.iana.org/domains/root/db/bar.html +bar + +// barcelona : Municipi de Barcelona +// https://www.iana.org/domains/root/db/barcelona.html +barcelona + +// barclaycard : Barclays Bank PLC +// https://www.iana.org/domains/root/db/barclaycard.html +barclaycard + +// barclays : Barclays Bank PLC +// https://www.iana.org/domains/root/db/barclays.html +barclays + +// barefoot : Gallo Vineyards, Inc. +// https://www.iana.org/domains/root/db/barefoot.html +barefoot + +// bargains : Binky Moon, LLC +// https://www.iana.org/domains/root/db/bargains.html +bargains + +// baseball : MLB Advanced Media DH, LLC +// https://www.iana.org/domains/root/db/baseball.html +baseball + +// basketball : Fédération Internationale de Basketball (FIBA) +// https://www.iana.org/domains/root/db/basketball.html +basketball + +// bauhaus : Werkhaus GmbH +// https://www.iana.org/domains/root/db/bauhaus.html +bauhaus + +// bayern : Bayern Connect GmbH +// https://www.iana.org/domains/root/db/bayern.html +bayern + +// bbc : British Broadcasting Corporation +// https://www.iana.org/domains/root/db/bbc.html +bbc + +// bbt : BB&T Corporation +// https://www.iana.org/domains/root/db/bbt.html +bbt + +// bbva : BANCO BILBAO VIZCAYA ARGENTARIA, S.A. +// https://www.iana.org/domains/root/db/bbva.html +bbva + +// bcg : The Boston Consulting Group, Inc. +// https://www.iana.org/domains/root/db/bcg.html +bcg + +// bcn : Municipi de Barcelona +// https://www.iana.org/domains/root/db/bcn.html +bcn + +// beats : Beats Electronics, LLC +// https://www.iana.org/domains/root/db/beats.html +beats + +// beauty : XYZ.COM LLC +// https://www.iana.org/domains/root/db/beauty.html +beauty + +// beer : Registry Services, LLC +// https://www.iana.org/domains/root/db/beer.html +beer + +// berlin : dotBERLIN GmbH & Co. KG +// https://www.iana.org/domains/root/db/berlin.html +berlin + +// best : BestTLD Pty Ltd +// https://www.iana.org/domains/root/db/best.html +best + +// bestbuy : BBY Solutions, Inc. +// https://www.iana.org/domains/root/db/bestbuy.html +bestbuy + +// bet : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/bet.html +bet + +// bharti : Bharti Enterprises (Holding) Private Limited +// https://www.iana.org/domains/root/db/bharti.html +bharti + +// bible : American Bible Society +// https://www.iana.org/domains/root/db/bible.html +bible + +// bid : dot Bid Limited +// https://www.iana.org/domains/root/db/bid.html +bid + +// bike : Binky Moon, LLC +// https://www.iana.org/domains/root/db/bike.html +bike + +// bing : Microsoft Corporation +// https://www.iana.org/domains/root/db/bing.html +bing + +// bingo : Binky Moon, LLC +// https://www.iana.org/domains/root/db/bingo.html +bingo + +// bio : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/bio.html +bio + +// black : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/black.html +black + +// blackfriday : Registry Services, LLC +// https://www.iana.org/domains/root/db/blackfriday.html +blackfriday + +// blockbuster : Dish DBS Corporation +// https://www.iana.org/domains/root/db/blockbuster.html +blockbuster + +// blog : Knock Knock WHOIS There, LLC +// https://www.iana.org/domains/root/db/blog.html +blog + +// bloomberg : Bloomberg IP Holdings LLC +// https://www.iana.org/domains/root/db/bloomberg.html +bloomberg + +// blue : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/blue.html +blue + +// bms : Bristol-Myers Squibb Company +// https://www.iana.org/domains/root/db/bms.html +bms + +// bmw : Bayerische Motoren Werke Aktiengesellschaft +// https://www.iana.org/domains/root/db/bmw.html +bmw + +// bnpparibas : BNP Paribas +// https://www.iana.org/domains/root/db/bnpparibas.html +bnpparibas + +// boats : XYZ.COM LLC +// https://www.iana.org/domains/root/db/boats.html +boats + +// boehringer : Boehringer Ingelheim International GmbH +// https://www.iana.org/domains/root/db/boehringer.html +boehringer + +// bofa : Bank of America Corporation +// https://www.iana.org/domains/root/db/bofa.html +bofa + +// bom : Núcleo de Informação e Coordenação do Ponto BR - NIC.br +// https://www.iana.org/domains/root/db/bom.html +bom + +// bond : ShortDot SA +// https://www.iana.org/domains/root/db/bond.html +bond + +// boo : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/boo.html +boo + +// book : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/book.html +book + +// booking : Booking.com B.V. +// https://www.iana.org/domains/root/db/booking.html +booking + +// bosch : Robert Bosch GMBH +// https://www.iana.org/domains/root/db/bosch.html +bosch + +// bostik : Bostik SA +// https://www.iana.org/domains/root/db/bostik.html +bostik + +// boston : Registry Services, LLC +// https://www.iana.org/domains/root/db/boston.html +boston + +// bot : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/bot.html +bot + +// boutique : Binky Moon, LLC +// https://www.iana.org/domains/root/db/boutique.html +boutique + +// box : Intercap Registry Inc. +// https://www.iana.org/domains/root/db/box.html +box + +// bradesco : Banco Bradesco S.A. +// https://www.iana.org/domains/root/db/bradesco.html +bradesco + +// bridgestone : Bridgestone Corporation +// https://www.iana.org/domains/root/db/bridgestone.html +bridgestone + +// broadway : Celebrate Broadway, Inc. +// https://www.iana.org/domains/root/db/broadway.html +broadway + +// broker : Dog Beach, LLC +// https://www.iana.org/domains/root/db/broker.html +broker + +// brother : Brother Industries, Ltd. +// https://www.iana.org/domains/root/db/brother.html +brother + +// brussels : DNS.be vzw +// https://www.iana.org/domains/root/db/brussels.html +brussels + +// build : Plan Bee LLC +// https://www.iana.org/domains/root/db/build.html +build + +// builders : Binky Moon, LLC +// https://www.iana.org/domains/root/db/builders.html +builders + +// business : Binky Moon, LLC +// https://www.iana.org/domains/root/db/business.html +business + +// buy : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/buy.html +buy + +// buzz : DOTSTRATEGY CO. +// https://www.iana.org/domains/root/db/buzz.html +buzz + +// bzh : Association www.bzh +// https://www.iana.org/domains/root/db/bzh.html +bzh + +// cab : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cab.html +cab + +// cafe : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cafe.html +cafe + +// cal : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/cal.html +cal + +// call : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/call.html +call + +// calvinklein : PVH gTLD Holdings LLC +// https://www.iana.org/domains/root/db/calvinklein.html +calvinklein + +// cam : Cam Connecting SARL +// https://www.iana.org/domains/root/db/cam.html +cam + +// camera : Binky Moon, LLC +// https://www.iana.org/domains/root/db/camera.html +camera + +// camp : Binky Moon, LLC +// https://www.iana.org/domains/root/db/camp.html +camp + +// canon : Canon Inc. +// https://www.iana.org/domains/root/db/canon.html +canon + +// capetown : ZA Central Registry NPC trading as ZA Central Registry +// https://www.iana.org/domains/root/db/capetown.html +capetown + +// capital : Binky Moon, LLC +// https://www.iana.org/domains/root/db/capital.html +capital + +// capitalone : Capital One Financial Corporation +// https://www.iana.org/domains/root/db/capitalone.html +capitalone + +// car : XYZ.COM LLC +// https://www.iana.org/domains/root/db/car.html +car + +// caravan : Caravan International, Inc. +// https://www.iana.org/domains/root/db/caravan.html +caravan + +// cards : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cards.html +cards + +// care : Binky Moon, LLC +// https://www.iana.org/domains/root/db/care.html +care + +// career : dotCareer LLC +// https://www.iana.org/domains/root/db/career.html +career + +// careers : Binky Moon, LLC +// https://www.iana.org/domains/root/db/careers.html +careers + +// cars : XYZ.COM LLC +// https://www.iana.org/domains/root/db/cars.html +cars + +// casa : Registry Services, LLC +// https://www.iana.org/domains/root/db/casa.html +casa + +// case : Digity, LLC +// https://www.iana.org/domains/root/db/case.html +case + +// cash : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cash.html +cash + +// casino : Binky Moon, LLC +// https://www.iana.org/domains/root/db/casino.html +casino + +// catering : Binky Moon, LLC +// https://www.iana.org/domains/root/db/catering.html +catering + +// catholic : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// https://www.iana.org/domains/root/db/catholic.html +catholic + +// cba : COMMONWEALTH BANK OF AUSTRALIA +// https://www.iana.org/domains/root/db/cba.html +cba + +// cbn : The Christian Broadcasting Network, Inc. +// https://www.iana.org/domains/root/db/cbn.html +cbn + +// cbre : CBRE, Inc. +// https://www.iana.org/domains/root/db/cbre.html +cbre + +// center : Binky Moon, LLC +// https://www.iana.org/domains/root/db/center.html +center + +// ceo : XYZ.COM LLC +// https://www.iana.org/domains/root/db/ceo.html +ceo + +// cern : European Organization for Nuclear Research ("CERN") +// https://www.iana.org/domains/root/db/cern.html +cern + +// cfa : CFA Institute +// https://www.iana.org/domains/root/db/cfa.html +cfa + +// cfd : ShortDot SA +// https://www.iana.org/domains/root/db/cfd.html +cfd + +// chanel : Chanel International B.V. +// https://www.iana.org/domains/root/db/chanel.html +chanel + +// channel : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/channel.html +channel + +// charity : Public Interest Registry +// https://www.iana.org/domains/root/db/charity.html +charity + +// chase : JPMorgan Chase Bank, National Association +// https://www.iana.org/domains/root/db/chase.html +chase + +// chat : Binky Moon, LLC +// https://www.iana.org/domains/root/db/chat.html +chat + +// cheap : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cheap.html +cheap + +// chintai : CHINTAI Corporation +// https://www.iana.org/domains/root/db/chintai.html +chintai + +// christmas : XYZ.COM LLC +// https://www.iana.org/domains/root/db/christmas.html +christmas + +// chrome : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/chrome.html +chrome + +// church : Binky Moon, LLC +// https://www.iana.org/domains/root/db/church.html +church + +// cipriani : Hotel Cipriani Srl +// https://www.iana.org/domains/root/db/cipriani.html +cipriani + +// circle : Jolly Host, LLC +// https://www.iana.org/domains/root/db/circle.html +circle + +// cisco : Cisco Technology, Inc. +// https://www.iana.org/domains/root/db/cisco.html +cisco + +// citadel : Citadel Domain LLC +// https://www.iana.org/domains/root/db/citadel.html +citadel + +// citi : Citigroup Inc. +// https://www.iana.org/domains/root/db/citi.html +citi + +// citic : CITIC Group Corporation +// https://www.iana.org/domains/root/db/citic.html +citic + +// city : Binky Moon, LLC +// https://www.iana.org/domains/root/db/city.html +city + +// claims : Binky Moon, LLC +// https://www.iana.org/domains/root/db/claims.html +claims + +// cleaning : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cleaning.html +cleaning + +// click : Waterford Limited +// https://www.iana.org/domains/root/db/click.html +click + +// clinic : Binky Moon, LLC +// https://www.iana.org/domains/root/db/clinic.html +clinic + +// clinique : The Estée Lauder Companies Inc. +// https://www.iana.org/domains/root/db/clinique.html +clinique + +// clothing : Binky Moon, LLC +// https://www.iana.org/domains/root/db/clothing.html +clothing + +// cloud : Aruba PEC S.p.A. +// https://www.iana.org/domains/root/db/cloud.html +cloud + +// club : Registry Services, LLC +// https://www.iana.org/domains/root/db/club.html +club + +// clubmed : Club Méditerranée S.A. +// https://www.iana.org/domains/root/db/clubmed.html +clubmed + +// coach : Binky Moon, LLC +// https://www.iana.org/domains/root/db/coach.html +coach + +// codes : Binky Moon, LLC +// https://www.iana.org/domains/root/db/codes.html +codes + +// coffee : Binky Moon, LLC +// https://www.iana.org/domains/root/db/coffee.html +coffee + +// college : XYZ.COM LLC +// https://www.iana.org/domains/root/db/college.html +college + +// cologne : dotKoeln GmbH +// https://www.iana.org/domains/root/db/cologne.html +cologne + +// commbank : COMMONWEALTH BANK OF AUSTRALIA +// https://www.iana.org/domains/root/db/commbank.html +commbank + +// community : Binky Moon, LLC +// https://www.iana.org/domains/root/db/community.html +community + +// company : Binky Moon, LLC +// https://www.iana.org/domains/root/db/company.html +company + +// compare : Registry Services, LLC +// https://www.iana.org/domains/root/db/compare.html +compare + +// computer : Binky Moon, LLC +// https://www.iana.org/domains/root/db/computer.html +computer + +// comsec : VeriSign, Inc. +// https://www.iana.org/domains/root/db/comsec.html +comsec + +// condos : Binky Moon, LLC +// https://www.iana.org/domains/root/db/condos.html +condos + +// construction : Binky Moon, LLC +// https://www.iana.org/domains/root/db/construction.html +construction + +// consulting : Dog Beach, LLC +// https://www.iana.org/domains/root/db/consulting.html +consulting + +// contact : Dog Beach, LLC +// https://www.iana.org/domains/root/db/contact.html +contact + +// contractors : Binky Moon, LLC +// https://www.iana.org/domains/root/db/contractors.html +contractors + +// cooking : Registry Services, LLC +// https://www.iana.org/domains/root/db/cooking.html +cooking + +// cool : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cool.html +cool + +// corsica : Collectivité de Corse +// https://www.iana.org/domains/root/db/corsica.html +corsica + +// country : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/country.html +country + +// coupon : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/coupon.html +coupon + +// coupons : Binky Moon, LLC +// https://www.iana.org/domains/root/db/coupons.html +coupons + +// courses : Registry Services, LLC +// https://www.iana.org/domains/root/db/courses.html +courses + +// cpa : American Institute of Certified Public Accountants +// https://www.iana.org/domains/root/db/cpa.html +cpa + +// credit : Binky Moon, LLC +// https://www.iana.org/domains/root/db/credit.html +credit + +// creditcard : Binky Moon, LLC +// https://www.iana.org/domains/root/db/creditcard.html +creditcard + +// creditunion : DotCooperation LLC +// https://www.iana.org/domains/root/db/creditunion.html +creditunion + +// cricket : dot Cricket Limited +// https://www.iana.org/domains/root/db/cricket.html +cricket + +// crown : Crown Equipment Corporation +// https://www.iana.org/domains/root/db/crown.html +crown + +// crs : Federated Co-operatives Limited +// https://www.iana.org/domains/root/db/crs.html +crs + +// cruise : Viking River Cruises (Bermuda) Ltd. +// https://www.iana.org/domains/root/db/cruise.html +cruise + +// cruises : Binky Moon, LLC +// https://www.iana.org/domains/root/db/cruises.html +cruises + +// cuisinella : SCHMIDT GROUPE S.A.S. +// https://www.iana.org/domains/root/db/cuisinella.html +cuisinella + +// cymru : Nominet UK +// https://www.iana.org/domains/root/db/cymru.html +cymru + +// cyou : ShortDot SA +// https://www.iana.org/domains/root/db/cyou.html +cyou + +// dad : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/dad.html +dad + +// dance : Dog Beach, LLC +// https://www.iana.org/domains/root/db/dance.html +dance + +// data : Dish DBS Corporation +// https://www.iana.org/domains/root/db/data.html +data + +// date : dot Date Limited +// https://www.iana.org/domains/root/db/date.html +date + +// dating : Binky Moon, LLC +// https://www.iana.org/domains/root/db/dating.html +dating + +// datsun : NISSAN MOTOR CO., LTD. +// https://www.iana.org/domains/root/db/datsun.html +datsun + +// day : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/day.html +day + +// dclk : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/dclk.html +dclk + +// dds : Registry Services, LLC +// https://www.iana.org/domains/root/db/dds.html +dds + +// deal : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/deal.html +deal + +// dealer : Intercap Registry Inc. +// https://www.iana.org/domains/root/db/dealer.html +dealer + +// deals : Binky Moon, LLC +// https://www.iana.org/domains/root/db/deals.html +deals + +// degree : Dog Beach, LLC +// https://www.iana.org/domains/root/db/degree.html +degree + +// delivery : Binky Moon, LLC +// https://www.iana.org/domains/root/db/delivery.html +delivery + +// dell : Dell Inc. +// https://www.iana.org/domains/root/db/dell.html +dell + +// deloitte : Deloitte Touche Tohmatsu +// https://www.iana.org/domains/root/db/deloitte.html +deloitte + +// delta : Delta Air Lines, Inc. +// https://www.iana.org/domains/root/db/delta.html +delta + +// democrat : Dog Beach, LLC +// https://www.iana.org/domains/root/db/democrat.html +democrat + +// dental : Binky Moon, LLC +// https://www.iana.org/domains/root/db/dental.html +dental + +// dentist : Dog Beach, LLC +// https://www.iana.org/domains/root/db/dentist.html +dentist + +// desi +// https://www.iana.org/domains/root/db/desi.html +desi + +// design : Registry Services, LLC +// https://www.iana.org/domains/root/db/design.html +design + +// dev : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/dev.html +dev + +// dhl : Deutsche Post AG +// https://www.iana.org/domains/root/db/dhl.html +dhl + +// diamonds : Binky Moon, LLC +// https://www.iana.org/domains/root/db/diamonds.html +diamonds + +// diet : XYZ.COM LLC +// https://www.iana.org/domains/root/db/diet.html +diet + +// digital : Binky Moon, LLC +// https://www.iana.org/domains/root/db/digital.html +digital + +// direct : Binky Moon, LLC +// https://www.iana.org/domains/root/db/direct.html +direct + +// directory : Binky Moon, LLC +// https://www.iana.org/domains/root/db/directory.html +directory + +// discount : Binky Moon, LLC +// https://www.iana.org/domains/root/db/discount.html +discount + +// discover : Discover Financial Services +// https://www.iana.org/domains/root/db/discover.html +discover + +// dish : Dish DBS Corporation +// https://www.iana.org/domains/root/db/dish.html +dish + +// diy : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/diy.html +diy + +// dnp : Dai Nippon Printing Co., Ltd. +// https://www.iana.org/domains/root/db/dnp.html +dnp + +// docs : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/docs.html +docs + +// doctor : Binky Moon, LLC +// https://www.iana.org/domains/root/db/doctor.html +doctor + +// dog : Binky Moon, LLC +// https://www.iana.org/domains/root/db/dog.html +dog + +// domains : Binky Moon, LLC +// https://www.iana.org/domains/root/db/domains.html +domains + +// dot : Dish DBS Corporation +// https://www.iana.org/domains/root/db/dot.html +dot + +// download : dot Support Limited +// https://www.iana.org/domains/root/db/download.html +download + +// drive : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/drive.html +drive + +// dtv : Dish DBS Corporation +// https://www.iana.org/domains/root/db/dtv.html +dtv + +// dubai : Dubai Smart Government Department +// https://www.iana.org/domains/root/db/dubai.html +dubai + +// dupont : DuPont Specialty Products USA, LLC +// https://www.iana.org/domains/root/db/dupont.html +dupont + +// durban : ZA Central Registry NPC trading as ZA Central Registry +// https://www.iana.org/domains/root/db/durban.html +durban + +// dvag : Deutsche Vermögensberatung Aktiengesellschaft DVAG +// https://www.iana.org/domains/root/db/dvag.html +dvag + +// dvr : DISH Technologies L.L.C. +// https://www.iana.org/domains/root/db/dvr.html +dvr + +// earth : Interlink Systems Innovation Institute K.K. +// https://www.iana.org/domains/root/db/earth.html +earth + +// eat : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/eat.html +eat + +// eco : Big Room Inc. +// https://www.iana.org/domains/root/db/eco.html +eco + +// edeka : EDEKA Verband kaufmännischer Genossenschaften e.V. +// https://www.iana.org/domains/root/db/edeka.html +edeka + +// education : Binky Moon, LLC +// https://www.iana.org/domains/root/db/education.html +education + +// email : Binky Moon, LLC +// https://www.iana.org/domains/root/db/email.html +email + +// emerck : Merck KGaA +// https://www.iana.org/domains/root/db/emerck.html +emerck + +// energy : Binky Moon, LLC +// https://www.iana.org/domains/root/db/energy.html +energy + +// engineer : Dog Beach, LLC +// https://www.iana.org/domains/root/db/engineer.html +engineer + +// engineering : Binky Moon, LLC +// https://www.iana.org/domains/root/db/engineering.html +engineering + +// enterprises : Binky Moon, LLC +// https://www.iana.org/domains/root/db/enterprises.html +enterprises + +// epson : Seiko Epson Corporation +// https://www.iana.org/domains/root/db/epson.html +epson + +// equipment : Binky Moon, LLC +// https://www.iana.org/domains/root/db/equipment.html +equipment + +// ericsson : Telefonaktiebolaget L M Ericsson +// https://www.iana.org/domains/root/db/ericsson.html +ericsson + +// erni : ERNI Group Holding AG +// https://www.iana.org/domains/root/db/erni.html +erni + +// esq : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/esq.html +esq + +// estate : Binky Moon, LLC +// https://www.iana.org/domains/root/db/estate.html +estate + +// eurovision : European Broadcasting Union (EBU) +// https://www.iana.org/domains/root/db/eurovision.html +eurovision + +// eus : Puntueus Fundazioa +// https://www.iana.org/domains/root/db/eus.html +eus + +// events : Binky Moon, LLC +// https://www.iana.org/domains/root/db/events.html +events + +// exchange : Binky Moon, LLC +// https://www.iana.org/domains/root/db/exchange.html +exchange + +// expert : Binky Moon, LLC +// https://www.iana.org/domains/root/db/expert.html +expert + +// exposed : Binky Moon, LLC +// https://www.iana.org/domains/root/db/exposed.html +exposed + +// express : Binky Moon, LLC +// https://www.iana.org/domains/root/db/express.html +express + +// extraspace : Extra Space Storage LLC +// https://www.iana.org/domains/root/db/extraspace.html +extraspace + +// fage : Fage International S.A. +// https://www.iana.org/domains/root/db/fage.html +fage + +// fail : Binky Moon, LLC +// https://www.iana.org/domains/root/db/fail.html +fail + +// fairwinds : FairWinds Partners, LLC +// https://www.iana.org/domains/root/db/fairwinds.html +fairwinds + +// faith : dot Faith Limited +// https://www.iana.org/domains/root/db/faith.html +faith + +// family : Dog Beach, LLC +// https://www.iana.org/domains/root/db/family.html +family + +// fan : Dog Beach, LLC +// https://www.iana.org/domains/root/db/fan.html +fan + +// fans : ZDNS International Limited +// https://www.iana.org/domains/root/db/fans.html +fans + +// farm : Binky Moon, LLC +// https://www.iana.org/domains/root/db/farm.html +farm + +// farmers : Farmers Insurance Exchange +// https://www.iana.org/domains/root/db/farmers.html +farmers + +// fashion : Registry Services, LLC +// https://www.iana.org/domains/root/db/fashion.html +fashion + +// fast : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/fast.html +fast + +// fedex : Federal Express Corporation +// https://www.iana.org/domains/root/db/fedex.html +fedex + +// feedback : Top Level Spectrum, Inc. +// https://www.iana.org/domains/root/db/feedback.html +feedback + +// ferrari : Fiat Chrysler Automobiles N.V. +// https://www.iana.org/domains/root/db/ferrari.html +ferrari + +// ferrero : Ferrero Trading Lux S.A. +// https://www.iana.org/domains/root/db/ferrero.html +ferrero + +// fidelity : Fidelity Brokerage Services LLC +// https://www.iana.org/domains/root/db/fidelity.html +fidelity + +// fido : Rogers Communications Canada Inc. +// https://www.iana.org/domains/root/db/fido.html +fido + +// film : Motion Picture Domain Registry Pty Ltd +// https://www.iana.org/domains/root/db/film.html +film + +// final : Núcleo de Informação e Coordenação do Ponto BR - NIC.br +// https://www.iana.org/domains/root/db/final.html +final + +// finance : Binky Moon, LLC +// https://www.iana.org/domains/root/db/finance.html +finance + +// financial : Binky Moon, LLC +// https://www.iana.org/domains/root/db/financial.html +financial + +// fire : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/fire.html +fire + +// firestone : Bridgestone Licensing Services, Inc +// https://www.iana.org/domains/root/db/firestone.html +firestone + +// firmdale : Firmdale Holdings Limited +// https://www.iana.org/domains/root/db/firmdale.html +firmdale + +// fish : Binky Moon, LLC +// https://www.iana.org/domains/root/db/fish.html +fish + +// fishing : Registry Services, LLC +// https://www.iana.org/domains/root/db/fishing.html +fishing + +// fit : Registry Services, LLC +// https://www.iana.org/domains/root/db/fit.html +fit + +// fitness : Binky Moon, LLC +// https://www.iana.org/domains/root/db/fitness.html +fitness + +// flickr : Flickr, Inc. +// https://www.iana.org/domains/root/db/flickr.html +flickr + +// flights : Binky Moon, LLC +// https://www.iana.org/domains/root/db/flights.html +flights + +// flir : FLIR Systems, Inc. +// https://www.iana.org/domains/root/db/flir.html +flir + +// florist : Binky Moon, LLC +// https://www.iana.org/domains/root/db/florist.html +florist + +// flowers : XYZ.COM LLC +// https://www.iana.org/domains/root/db/flowers.html +flowers + +// fly : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/fly.html +fly + +// foo : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/foo.html +foo + +// food : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/food.html +food + +// football : Binky Moon, LLC +// https://www.iana.org/domains/root/db/football.html +football + +// ford : Ford Motor Company +// https://www.iana.org/domains/root/db/ford.html +ford + +// forex : Dog Beach, LLC +// https://www.iana.org/domains/root/db/forex.html +forex + +// forsale : Dog Beach, LLC +// https://www.iana.org/domains/root/db/forsale.html +forsale + +// forum : Waterford Limited +// https://www.iana.org/domains/root/db/forum.html +forum + +// foundation : Public Interest Registry +// https://www.iana.org/domains/root/db/foundation.html +foundation + +// fox : FOX Registry, LLC +// https://www.iana.org/domains/root/db/fox.html +fox + +// free : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/free.html +free + +// fresenius : Fresenius Immobilien-Verwaltungs-GmbH +// https://www.iana.org/domains/root/db/fresenius.html +fresenius + +// frl : FRLregistry B.V. +// https://www.iana.org/domains/root/db/frl.html +frl + +// frogans : OP3FT +// https://www.iana.org/domains/root/db/frogans.html +frogans + +// frontier : Frontier Communications Corporation +// https://www.iana.org/domains/root/db/frontier.html +frontier + +// ftr : Frontier Communications Corporation +// https://www.iana.org/domains/root/db/ftr.html +ftr + +// fujitsu : Fujitsu Limited +// https://www.iana.org/domains/root/db/fujitsu.html +fujitsu + +// fun : Radix Technologies Inc SEZC +// https://www.iana.org/domains/root/db/fun.html +fun + +// fund : Binky Moon, LLC +// https://www.iana.org/domains/root/db/fund.html +fund + +// furniture : Binky Moon, LLC +// https://www.iana.org/domains/root/db/furniture.html +furniture + +// futbol : Dog Beach, LLC +// https://www.iana.org/domains/root/db/futbol.html +futbol + +// fyi : Binky Moon, LLC +// https://www.iana.org/domains/root/db/fyi.html +fyi + +// gal : Asociación puntoGAL +// https://www.iana.org/domains/root/db/gal.html +gal + +// gallery : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gallery.html +gallery + +// gallo : Gallo Vineyards, Inc. +// https://www.iana.org/domains/root/db/gallo.html +gallo + +// gallup : Gallup, Inc. +// https://www.iana.org/domains/root/db/gallup.html +gallup + +// game : XYZ.COM LLC +// https://www.iana.org/domains/root/db/game.html +game + +// games : Dog Beach, LLC +// https://www.iana.org/domains/root/db/games.html +games + +// gap : The Gap, Inc. +// https://www.iana.org/domains/root/db/gap.html +gap + +// garden : Registry Services, LLC +// https://www.iana.org/domains/root/db/garden.html +garden + +// gay : Registry Services, LLC +// https://www.iana.org/domains/root/db/gay.html +gay + +// gbiz : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/gbiz.html +gbiz + +// gdn : Joint Stock Company "Navigation-information systems" +// https://www.iana.org/domains/root/db/gdn.html +gdn + +// gea : GEA Group Aktiengesellschaft +// https://www.iana.org/domains/root/db/gea.html +gea + +// gent : Easyhost BV +// https://www.iana.org/domains/root/db/gent.html +gent + +// genting : Resorts World Inc Pte. Ltd. +// https://www.iana.org/domains/root/db/genting.html +genting + +// george : Wal-Mart Stores, Inc. +// https://www.iana.org/domains/root/db/george.html +george + +// ggee : GMO Internet, Inc. +// https://www.iana.org/domains/root/db/ggee.html +ggee + +// gift : DotGift, LLC +// https://www.iana.org/domains/root/db/gift.html +gift + +// gifts : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gifts.html +gifts + +// gives : Public Interest Registry +// https://www.iana.org/domains/root/db/gives.html +gives + +// giving : Public Interest Registry +// https://www.iana.org/domains/root/db/giving.html +giving + +// glass : Binky Moon, LLC +// https://www.iana.org/domains/root/db/glass.html +glass + +// gle : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/gle.html +gle + +// global : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/global.html +global + +// globo : Globo Comunicação e Participações S.A +// https://www.iana.org/domains/root/db/globo.html +globo + +// gmail : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/gmail.html +gmail + +// gmbh : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gmbh.html +gmbh + +// gmo : GMO Internet, Inc. +// https://www.iana.org/domains/root/db/gmo.html +gmo + +// gmx : 1&1 Mail & Media GmbH +// https://www.iana.org/domains/root/db/gmx.html +gmx + +// godaddy : Go Daddy East, LLC +// https://www.iana.org/domains/root/db/godaddy.html +godaddy + +// gold : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gold.html +gold + +// goldpoint : YODOBASHI CAMERA CO.,LTD. +// https://www.iana.org/domains/root/db/goldpoint.html +goldpoint + +// golf : Binky Moon, LLC +// https://www.iana.org/domains/root/db/golf.html +golf + +// goodyear : The Goodyear Tire & Rubber Company +// https://www.iana.org/domains/root/db/goodyear.html +goodyear + +// goog : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/goog.html +goog + +// google : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/google.html +google + +// gop : Republican State Leadership Committee, Inc. +// https://www.iana.org/domains/root/db/gop.html +gop + +// got : Jolly Host, LLC +// https://www.iana.org/domains/root/db/got.html +got + +// grainger : Grainger Registry Services, LLC +// https://www.iana.org/domains/root/db/grainger.html +grainger + +// graphics : Binky Moon, LLC +// https://www.iana.org/domains/root/db/graphics.html +graphics + +// gratis : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gratis.html +gratis + +// green : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/green.html +green + +// gripe : Binky Moon, LLC +// https://www.iana.org/domains/root/db/gripe.html +gripe + +// grocery : Wal-Mart Stores, Inc. +// https://www.iana.org/domains/root/db/grocery.html +grocery + +// group : Binky Moon, LLC +// https://www.iana.org/domains/root/db/group.html +group + +// gucci : Guccio Gucci S.p.a. +// https://www.iana.org/domains/root/db/gucci.html +gucci + +// guge : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/guge.html +guge + +// guide : Binky Moon, LLC +// https://www.iana.org/domains/root/db/guide.html +guide + +// guitars : XYZ.COM LLC +// https://www.iana.org/domains/root/db/guitars.html +guitars + +// guru : Binky Moon, LLC +// https://www.iana.org/domains/root/db/guru.html +guru + +// hair : XYZ.COM LLC +// https://www.iana.org/domains/root/db/hair.html +hair + +// hamburg : Hamburg Top-Level-Domain GmbH +// https://www.iana.org/domains/root/db/hamburg.html +hamburg + +// hangout : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/hangout.html +hangout + +// haus : Dog Beach, LLC +// https://www.iana.org/domains/root/db/haus.html +haus + +// hbo : HBO Registry Services, Inc. +// https://www.iana.org/domains/root/db/hbo.html +hbo + +// hdfc : HDFC BANK LIMITED +// https://www.iana.org/domains/root/db/hdfc.html +hdfc + +// hdfcbank : HDFC BANK LIMITED +// https://www.iana.org/domains/root/db/hdfcbank.html +hdfcbank + +// health : Registry Services, LLC +// https://www.iana.org/domains/root/db/health.html +health + +// healthcare : Binky Moon, LLC +// https://www.iana.org/domains/root/db/healthcare.html +healthcare + +// help : Innovation service Limited +// https://www.iana.org/domains/root/db/help.html +help + +// helsinki : City of Helsinki +// https://www.iana.org/domains/root/db/helsinki.html +helsinki + +// here : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/here.html +here + +// hermes : HERMES INTERNATIONAL +// https://www.iana.org/domains/root/db/hermes.html +hermes + +// hiphop : Dot Hip Hop, LLC +// https://www.iana.org/domains/root/db/hiphop.html +hiphop + +// hisamitsu : Hisamitsu Pharmaceutical Co.,Inc. +// https://www.iana.org/domains/root/db/hisamitsu.html +hisamitsu + +// hitachi : Hitachi, Ltd. +// https://www.iana.org/domains/root/db/hitachi.html +hitachi + +// hiv : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/hiv.html +hiv + +// hkt : PCCW-HKT DataCom Services Limited +// https://www.iana.org/domains/root/db/hkt.html +hkt + +// hockey : Binky Moon, LLC +// https://www.iana.org/domains/root/db/hockey.html +hockey + +// holdings : Binky Moon, LLC +// https://www.iana.org/domains/root/db/holdings.html +holdings + +// holiday : Binky Moon, LLC +// https://www.iana.org/domains/root/db/holiday.html +holiday + +// homedepot : Home Depot Product Authority, LLC +// https://www.iana.org/domains/root/db/homedepot.html +homedepot + +// homegoods : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/homegoods.html +homegoods + +// homes : XYZ.COM LLC +// https://www.iana.org/domains/root/db/homes.html +homes + +// homesense : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/homesense.html +homesense + +// honda : Honda Motor Co., Ltd. +// https://www.iana.org/domains/root/db/honda.html +honda + +// horse : Registry Services, LLC +// https://www.iana.org/domains/root/db/horse.html +horse + +// hospital : Binky Moon, LLC +// https://www.iana.org/domains/root/db/hospital.html +hospital + +// host : Radix Technologies Inc SEZC +// https://www.iana.org/domains/root/db/host.html +host + +// hosting : XYZ.COM LLC +// https://www.iana.org/domains/root/db/hosting.html +hosting + +// hot : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/hot.html +hot + +// hotel : HOTEL Top-Level-Domain S.a.r.l +// https://www.iana.org/domains/root/db/hotel.html +hotel + +// hotels : Booking.com B.V. +// https://www.iana.org/domains/root/db/hotels.html +hotels + +// hotmail : Microsoft Corporation +// https://www.iana.org/domains/root/db/hotmail.html +hotmail + +// house : Binky Moon, LLC +// https://www.iana.org/domains/root/db/house.html +house + +// how : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/how.html +how + +// hsbc : HSBC Global Services (UK) Limited +// https://www.iana.org/domains/root/db/hsbc.html +hsbc + +// hughes : Hughes Satellite Systems Corporation +// https://www.iana.org/domains/root/db/hughes.html +hughes + +// hyatt : Hyatt GTLD, L.L.C. +// https://www.iana.org/domains/root/db/hyatt.html +hyatt + +// hyundai : Hyundai Motor Company +// https://www.iana.org/domains/root/db/hyundai.html +hyundai + +// ibm : International Business Machines Corporation +// https://www.iana.org/domains/root/db/ibm.html +ibm + +// icbc : Industrial and Commercial Bank of China Limited +// https://www.iana.org/domains/root/db/icbc.html +icbc + +// ice : IntercontinentalExchange, Inc. +// https://www.iana.org/domains/root/db/ice.html +ice + +// icu : ShortDot SA +// https://www.iana.org/domains/root/db/icu.html +icu + +// ieee : IEEE Global LLC +// https://www.iana.org/domains/root/db/ieee.html +ieee + +// ifm : ifm electronic gmbh +// https://www.iana.org/domains/root/db/ifm.html +ifm + +// ikano : Ikano S.A. +// https://www.iana.org/domains/root/db/ikano.html +ikano + +// imamat : Fondation Aga Khan (Aga Khan Foundation) +// https://www.iana.org/domains/root/db/imamat.html +imamat + +// imdb : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/imdb.html +imdb + +// immo : Binky Moon, LLC +// https://www.iana.org/domains/root/db/immo.html +immo + +// immobilien : Dog Beach, LLC +// https://www.iana.org/domains/root/db/immobilien.html +immobilien + +// inc : Intercap Registry Inc. +// https://www.iana.org/domains/root/db/inc.html +inc + +// industries : Binky Moon, LLC +// https://www.iana.org/domains/root/db/industries.html +industries + +// infiniti : NISSAN MOTOR CO., LTD. +// https://www.iana.org/domains/root/db/infiniti.html +infiniti + +// ing : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/ing.html +ing + +// ink : Registry Services, LLC +// https://www.iana.org/domains/root/db/ink.html +ink + +// institute : Binky Moon, LLC +// https://www.iana.org/domains/root/db/institute.html +institute + +// insurance : fTLD Registry Services LLC +// https://www.iana.org/domains/root/db/insurance.html +insurance + +// insure : Binky Moon, LLC +// https://www.iana.org/domains/root/db/insure.html +insure + +// international : Binky Moon, LLC +// https://www.iana.org/domains/root/db/international.html +international + +// intuit : Intuit Administrative Services, Inc. +// https://www.iana.org/domains/root/db/intuit.html +intuit + +// investments : Binky Moon, LLC +// https://www.iana.org/domains/root/db/investments.html +investments + +// ipiranga : Ipiranga Produtos de Petroleo S.A. +// https://www.iana.org/domains/root/db/ipiranga.html +ipiranga + +// irish : Binky Moon, LLC +// https://www.iana.org/domains/root/db/irish.html +irish + +// ismaili : Fondation Aga Khan (Aga Khan Foundation) +// https://www.iana.org/domains/root/db/ismaili.html +ismaili + +// ist : Istanbul Metropolitan Municipality +// https://www.iana.org/domains/root/db/ist.html +ist + +// istanbul : Istanbul Metropolitan Municipality +// https://www.iana.org/domains/root/db/istanbul.html +istanbul + +// itau : Itau Unibanco Holding S.A. +// https://www.iana.org/domains/root/db/itau.html +itau + +// itv : ITV Services Limited +// https://www.iana.org/domains/root/db/itv.html +itv + +// jaguar : Jaguar Land Rover Ltd +// https://www.iana.org/domains/root/db/jaguar.html +jaguar + +// java : Oracle Corporation +// https://www.iana.org/domains/root/db/java.html +java + +// jcb : JCB Co., Ltd. +// https://www.iana.org/domains/root/db/jcb.html +jcb + +// jeep : FCA US LLC. +// https://www.iana.org/domains/root/db/jeep.html +jeep + +// jetzt : Binky Moon, LLC +// https://www.iana.org/domains/root/db/jetzt.html +jetzt + +// jewelry : Binky Moon, LLC +// https://www.iana.org/domains/root/db/jewelry.html +jewelry + +// jio : Reliance Industries Limited +// https://www.iana.org/domains/root/db/jio.html +jio + +// jll : Jones Lang LaSalle Incorporated +// https://www.iana.org/domains/root/db/jll.html +jll + +// jmp : Matrix IP LLC +// https://www.iana.org/domains/root/db/jmp.html +jmp + +// jnj : Johnson & Johnson Services, Inc. +// https://www.iana.org/domains/root/db/jnj.html +jnj + +// joburg : ZA Central Registry NPC trading as ZA Central Registry +// https://www.iana.org/domains/root/db/joburg.html +joburg + +// jot : Jolly Host, LLC +// https://www.iana.org/domains/root/db/jot.html +jot + +// joy : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/joy.html +joy + +// jpmorgan : JPMorgan Chase Bank, National Association +// https://www.iana.org/domains/root/db/jpmorgan.html +jpmorgan + +// jprs : Japan Registry Services Co., Ltd. +// https://www.iana.org/domains/root/db/jprs.html +jprs + +// juegos : Dog Beach, LLC +// https://www.iana.org/domains/root/db/juegos.html +juegos + +// juniper : JUNIPER NETWORKS, INC. +// https://www.iana.org/domains/root/db/juniper.html +juniper + +// kaufen : Dog Beach, LLC +// https://www.iana.org/domains/root/db/kaufen.html +kaufen + +// kddi : KDDI CORPORATION +// https://www.iana.org/domains/root/db/kddi.html +kddi + +// kerryhotels : Kerry Trading Co. Limited +// https://www.iana.org/domains/root/db/kerryhotels.html +kerryhotels + +// kerryproperties : Kerry Trading Co. Limited +// https://www.iana.org/domains/root/db/kerryproperties.html +kerryproperties + +// kfh : Kuwait Finance House +// https://www.iana.org/domains/root/db/kfh.html +kfh + +// kia : KIA MOTORS CORPORATION +// https://www.iana.org/domains/root/db/kia.html +kia + +// kids : DotKids Foundation Limited +// https://www.iana.org/domains/root/db/kids.html +kids + +// kim : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/kim.html +kim + +// kindle : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/kindle.html +kindle + +// kitchen : Binky Moon, LLC +// https://www.iana.org/domains/root/db/kitchen.html +kitchen + +// kiwi : DOT KIWI LIMITED +// https://www.iana.org/domains/root/db/kiwi.html +kiwi + +// koeln : dotKoeln GmbH +// https://www.iana.org/domains/root/db/koeln.html +koeln + +// komatsu : Komatsu Ltd. +// https://www.iana.org/domains/root/db/komatsu.html +komatsu + +// kosher : Kosher Marketing Assets LLC +// https://www.iana.org/domains/root/db/kosher.html +kosher + +// kpmg : KPMG International Cooperative (KPMG International Genossenschaft) +// https://www.iana.org/domains/root/db/kpmg.html +kpmg + +// kpn : Koninklijke KPN N.V. +// https://www.iana.org/domains/root/db/kpn.html +kpn + +// krd : KRG Department of Information Technology +// https://www.iana.org/domains/root/db/krd.html +krd + +// kred : KredTLD Pty Ltd +// https://www.iana.org/domains/root/db/kred.html +kred + +// kuokgroup : Kerry Trading Co. Limited +// https://www.iana.org/domains/root/db/kuokgroup.html +kuokgroup + +// kyoto : Academic Institution: Kyoto Jyoho Gakuen +// https://www.iana.org/domains/root/db/kyoto.html +kyoto + +// lacaixa : Fundación Bancaria Caixa d’Estalvis i Pensions de Barcelona, “la Caixa” +// https://www.iana.org/domains/root/db/lacaixa.html +lacaixa + +// lamborghini : Automobili Lamborghini S.p.A. +// https://www.iana.org/domains/root/db/lamborghini.html +lamborghini + +// lamer : The Estée Lauder Companies Inc. +// https://www.iana.org/domains/root/db/lamer.html +lamer + +// land : Binky Moon, LLC +// https://www.iana.org/domains/root/db/land.html +land + +// landrover : Jaguar Land Rover Ltd +// https://www.iana.org/domains/root/db/landrover.html +landrover + +// lanxess : LANXESS Corporation +// https://www.iana.org/domains/root/db/lanxess.html +lanxess + +// lasalle : Jones Lang LaSalle Incorporated +// https://www.iana.org/domains/root/db/lasalle.html +lasalle + +// lat : XYZ.COM LLC +// https://www.iana.org/domains/root/db/lat.html +lat + +// latino : Dish DBS Corporation +// https://www.iana.org/domains/root/db/latino.html +latino + +// latrobe : La Trobe University +// https://www.iana.org/domains/root/db/latrobe.html +latrobe + +// law : Registry Services, LLC +// https://www.iana.org/domains/root/db/law.html +law + +// lawyer : Dog Beach, LLC +// https://www.iana.org/domains/root/db/lawyer.html +lawyer + +// lds : IRI Domain Management, LLC +// https://www.iana.org/domains/root/db/lds.html +lds + +// lease : Binky Moon, LLC +// https://www.iana.org/domains/root/db/lease.html +lease + +// leclerc : A.C.D. LEC Association des Centres Distributeurs Edouard Leclerc +// https://www.iana.org/domains/root/db/leclerc.html +leclerc + +// lefrak : LeFrak Organization, Inc. +// https://www.iana.org/domains/root/db/lefrak.html +lefrak + +// legal : Binky Moon, LLC +// https://www.iana.org/domains/root/db/legal.html +legal + +// lego : LEGO Juris A/S +// https://www.iana.org/domains/root/db/lego.html +lego + +// lexus : TOYOTA MOTOR CORPORATION +// https://www.iana.org/domains/root/db/lexus.html +lexus + +// lgbt : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/lgbt.html +lgbt + +// lidl : Schwarz Domains und Services GmbH & Co. KG +// https://www.iana.org/domains/root/db/lidl.html +lidl + +// life : Binky Moon, LLC +// https://www.iana.org/domains/root/db/life.html +life + +// lifeinsurance : American Council of Life Insurers +// https://www.iana.org/domains/root/db/lifeinsurance.html +lifeinsurance + +// lifestyle : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/lifestyle.html +lifestyle + +// lighting : Binky Moon, LLC +// https://www.iana.org/domains/root/db/lighting.html +lighting + +// like : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/like.html +like + +// lilly : Eli Lilly and Company +// https://www.iana.org/domains/root/db/lilly.html +lilly + +// limited : Binky Moon, LLC +// https://www.iana.org/domains/root/db/limited.html +limited + +// limo : Binky Moon, LLC +// https://www.iana.org/domains/root/db/limo.html +limo + +// lincoln : Ford Motor Company +// https://www.iana.org/domains/root/db/lincoln.html +lincoln + +// link : Nova Registry Ltd +// https://www.iana.org/domains/root/db/link.html +link + +// live : Dog Beach, LLC +// https://www.iana.org/domains/root/db/live.html +live + +// living : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/living.html +living + +// llc : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/llc.html +llc + +// llp : Intercap Registry Inc. +// https://www.iana.org/domains/root/db/llp.html +llp + +// loan : dot Loan Limited +// https://www.iana.org/domains/root/db/loan.html +loan + +// loans : Binky Moon, LLC +// https://www.iana.org/domains/root/db/loans.html +loans + +// locker : Orange Domains LLC +// https://www.iana.org/domains/root/db/locker.html +locker + +// locus : Locus Analytics LLC +// https://www.iana.org/domains/root/db/locus.html +locus + +// lol : XYZ.COM LLC +// https://www.iana.org/domains/root/db/lol.html +lol + +// london : Dot London Domains Limited +// https://www.iana.org/domains/root/db/london.html +london + +// lotte : Lotte Holdings Co., Ltd. +// https://www.iana.org/domains/root/db/lotte.html +lotte + +// lotto : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/lotto.html +lotto + +// love : Waterford Limited +// https://www.iana.org/domains/root/db/love.html +love + +// lpl : LPL Holdings, Inc. +// https://www.iana.org/domains/root/db/lpl.html +lpl + +// lplfinancial : LPL Holdings, Inc. +// https://www.iana.org/domains/root/db/lplfinancial.html +lplfinancial + +// ltd : Binky Moon, LLC +// https://www.iana.org/domains/root/db/ltd.html +ltd + +// ltda : InterNetX, Corp +// https://www.iana.org/domains/root/db/ltda.html +ltda + +// lundbeck : H. Lundbeck A/S +// https://www.iana.org/domains/root/db/lundbeck.html +lundbeck + +// luxe : Registry Services, LLC +// https://www.iana.org/domains/root/db/luxe.html +luxe + +// luxury : Luxury Partners, LLC +// https://www.iana.org/domains/root/db/luxury.html +luxury + +// madrid : Comunidad de Madrid +// https://www.iana.org/domains/root/db/madrid.html +madrid + +// maif : Mutuelle Assurance Instituteur France (MAIF) +// https://www.iana.org/domains/root/db/maif.html +maif + +// maison : Binky Moon, LLC +// https://www.iana.org/domains/root/db/maison.html +maison + +// makeup : XYZ.COM LLC +// https://www.iana.org/domains/root/db/makeup.html +makeup + +// man : MAN Truck & Bus SE +// https://www.iana.org/domains/root/db/man.html +man + +// management : Binky Moon, LLC +// https://www.iana.org/domains/root/db/management.html +management + +// mango : PUNTO FA S.L. +// https://www.iana.org/domains/root/db/mango.html +mango + +// map : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/map.html +map + +// market : Dog Beach, LLC +// https://www.iana.org/domains/root/db/market.html +market + +// marketing : Binky Moon, LLC +// https://www.iana.org/domains/root/db/marketing.html +marketing + +// markets : Dog Beach, LLC +// https://www.iana.org/domains/root/db/markets.html +markets + +// marriott : Marriott Worldwide Corporation +// https://www.iana.org/domains/root/db/marriott.html +marriott + +// marshalls : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/marshalls.html +marshalls + +// mattel : Mattel IT Services, Inc. +// https://www.iana.org/domains/root/db/mattel.html +mattel + +// mba : Binky Moon, LLC +// https://www.iana.org/domains/root/db/mba.html +mba + +// mckinsey : McKinsey Holdings, Inc. +// https://www.iana.org/domains/root/db/mckinsey.html +mckinsey + +// med : Medistry LLC +// https://www.iana.org/domains/root/db/med.html +med + +// media : Binky Moon, LLC +// https://www.iana.org/domains/root/db/media.html +media + +// meet : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/meet.html +meet + +// melbourne : The Crown in right of the State of Victoria, represented by its Department of State Development, Business and Innovation +// https://www.iana.org/domains/root/db/melbourne.html +melbourne + +// meme : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/meme.html +meme + +// memorial : Dog Beach, LLC +// https://www.iana.org/domains/root/db/memorial.html +memorial + +// men : Exclusive Registry Limited +// https://www.iana.org/domains/root/db/men.html +men + +// menu : Dot Menu Registry, LLC +// https://www.iana.org/domains/root/db/menu.html +menu + +// merck : Merck Registry Holdings, Inc. +// https://www.iana.org/domains/root/db/merck.html +merck + +// merckmsd : MSD Registry Holdings, Inc. +// https://www.iana.org/domains/root/db/merckmsd.html +merckmsd + +// miami : Registry Services, LLC +// https://www.iana.org/domains/root/db/miami.html +miami + +// microsoft : Microsoft Corporation +// https://www.iana.org/domains/root/db/microsoft.html +microsoft + +// mini : Bayerische Motoren Werke Aktiengesellschaft +// https://www.iana.org/domains/root/db/mini.html +mini + +// mint : Intuit Administrative Services, Inc. +// https://www.iana.org/domains/root/db/mint.html +mint + +// mit : Massachusetts Institute of Technology +// https://www.iana.org/domains/root/db/mit.html +mit + +// mitsubishi : Mitsubishi Corporation +// https://www.iana.org/domains/root/db/mitsubishi.html +mitsubishi + +// mlb : MLB Advanced Media DH, LLC +// https://www.iana.org/domains/root/db/mlb.html +mlb + +// mls : The Canadian Real Estate Association +// https://www.iana.org/domains/root/db/mls.html +mls + +// mma : MMA IARD +// https://www.iana.org/domains/root/db/mma.html +mma + +// mobile : Dish DBS Corporation +// https://www.iana.org/domains/root/db/mobile.html +mobile + +// moda : Dog Beach, LLC +// https://www.iana.org/domains/root/db/moda.html +moda + +// moe : Interlink Systems Innovation Institute K.K. +// https://www.iana.org/domains/root/db/moe.html +moe + +// moi : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/moi.html +moi + +// mom : XYZ.COM LLC +// https://www.iana.org/domains/root/db/mom.html +mom + +// monash : Monash University +// https://www.iana.org/domains/root/db/monash.html +monash + +// money : Binky Moon, LLC +// https://www.iana.org/domains/root/db/money.html +money + +// monster : XYZ.COM LLC +// https://www.iana.org/domains/root/db/monster.html +monster + +// mormon : IRI Domain Management, LLC +// https://www.iana.org/domains/root/db/mormon.html +mormon + +// mortgage : Dog Beach, LLC +// https://www.iana.org/domains/root/db/mortgage.html +mortgage + +// moscow : Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +// https://www.iana.org/domains/root/db/moscow.html +moscow + +// moto : Motorola Trademark Holdings, LLC +// https://www.iana.org/domains/root/db/moto.html +moto + +// motorcycles : XYZ.COM LLC +// https://www.iana.org/domains/root/db/motorcycles.html +motorcycles + +// mov : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/mov.html +mov + +// movie : Binky Moon, LLC +// https://www.iana.org/domains/root/db/movie.html +movie + +// msd : MSD Registry Holdings, Inc. +// https://www.iana.org/domains/root/db/msd.html +msd + +// mtn : MTN Dubai Limited +// https://www.iana.org/domains/root/db/mtn.html +mtn + +// mtr : MTR Corporation Limited +// https://www.iana.org/domains/root/db/mtr.html +mtr + +// music : DotMusic Limited +// https://www.iana.org/domains/root/db/music.html +music + +// nab : National Australia Bank Limited +// https://www.iana.org/domains/root/db/nab.html +nab + +// nagoya : GMO Registry, Inc. +// https://www.iana.org/domains/root/db/nagoya.html +nagoya + +// navy : Dog Beach, LLC +// https://www.iana.org/domains/root/db/navy.html +navy + +// nba : NBA REGISTRY, LLC +// https://www.iana.org/domains/root/db/nba.html +nba + +// nec : NEC Corporation +// https://www.iana.org/domains/root/db/nec.html +nec + +// netbank : COMMONWEALTH BANK OF AUSTRALIA +// https://www.iana.org/domains/root/db/netbank.html +netbank + +// netflix : Netflix, Inc. +// https://www.iana.org/domains/root/db/netflix.html +netflix + +// network : Binky Moon, LLC +// https://www.iana.org/domains/root/db/network.html +network + +// neustar : NeuStar, Inc. +// https://www.iana.org/domains/root/db/neustar.html +neustar + +// new : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/new.html +new + +// news : Dog Beach, LLC +// https://www.iana.org/domains/root/db/news.html +news + +// next : Next plc +// https://www.iana.org/domains/root/db/next.html +next + +// nextdirect : Next plc +// https://www.iana.org/domains/root/db/nextdirect.html +nextdirect + +// nexus : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/nexus.html +nexus + +// nfl : NFL Reg Ops LLC +// https://www.iana.org/domains/root/db/nfl.html +nfl + +// ngo : Public Interest Registry +// https://www.iana.org/domains/root/db/ngo.html +ngo + +// nhk : Japan Broadcasting Corporation (NHK) +// https://www.iana.org/domains/root/db/nhk.html +nhk + +// nico : DWANGO Co., Ltd. +// https://www.iana.org/domains/root/db/nico.html +nico + +// nike : NIKE, Inc. +// https://www.iana.org/domains/root/db/nike.html +nike + +// nikon : NIKON CORPORATION +// https://www.iana.org/domains/root/db/nikon.html +nikon + +// ninja : Dog Beach, LLC +// https://www.iana.org/domains/root/db/ninja.html +ninja + +// nissan : NISSAN MOTOR CO., LTD. +// https://www.iana.org/domains/root/db/nissan.html +nissan + +// nissay : Nippon Life Insurance Company +// https://www.iana.org/domains/root/db/nissay.html +nissay + +// nokia : Nokia Corporation +// https://www.iana.org/domains/root/db/nokia.html +nokia + +// norton : Gen Digital Inc. +// https://www.iana.org/domains/root/db/norton.html +norton + +// now : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/now.html +now + +// nowruz +// https://www.iana.org/domains/root/db/nowruz.html +nowruz + +// nowtv : Starbucks (HK) Limited +// https://www.iana.org/domains/root/db/nowtv.html +nowtv + +// nra : National Rifle Association of America +// https://www.iana.org/domains/root/db/nra.html +nra + +// nrw : Minds + Machines GmbH +// https://www.iana.org/domains/root/db/nrw.html +nrw + +// ntt : NIPPON TELEGRAPH AND TELEPHONE CORPORATION +// https://www.iana.org/domains/root/db/ntt.html +ntt + +// nyc : The City of New York by and through the New York City Department of Information Technology & Telecommunications +// https://www.iana.org/domains/root/db/nyc.html +nyc + +// obi : OBI Group Holding SE & Co. KGaA +// https://www.iana.org/domains/root/db/obi.html +obi + +// observer : Fegistry, LLC +// https://www.iana.org/domains/root/db/observer.html +observer + +// office : Microsoft Corporation +// https://www.iana.org/domains/root/db/office.html +office + +// okinawa : BRregistry, Inc. +// https://www.iana.org/domains/root/db/okinawa.html +okinawa + +// olayan : Competrol (Luxembourg) Sarl +// https://www.iana.org/domains/root/db/olayan.html +olayan + +// olayangroup : Competrol (Luxembourg) Sarl +// https://www.iana.org/domains/root/db/olayangroup.html +olayangroup + +// ollo : Dish DBS Corporation +// https://www.iana.org/domains/root/db/ollo.html +ollo + +// omega : The Swatch Group Ltd +// https://www.iana.org/domains/root/db/omega.html +omega + +// one : One.com A/S +// https://www.iana.org/domains/root/db/one.html +one + +// ong : Public Interest Registry +// https://www.iana.org/domains/root/db/ong.html +ong + +// onl : Jolly Host, LLC +// https://www.iana.org/domains/root/db/onl.html +onl + +// online : Radix Technologies Inc SEZC +// https://www.iana.org/domains/root/db/online.html +online + +// ooo : INFIBEAM AVENUES LIMITED +// https://www.iana.org/domains/root/db/ooo.html +ooo + +// open : American Express Travel Related Services Company, Inc. +// https://www.iana.org/domains/root/db/open.html +open + +// oracle : Oracle Corporation +// https://www.iana.org/domains/root/db/oracle.html +oracle + +// orange : Orange Brand Services Limited +// https://www.iana.org/domains/root/db/orange.html +orange + +// organic : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/organic.html +organic + +// origins : The Estée Lauder Companies Inc. +// https://www.iana.org/domains/root/db/origins.html +origins + +// osaka : Osaka Registry Co., Ltd. +// https://www.iana.org/domains/root/db/osaka.html +osaka + +// otsuka : Otsuka Holdings Co., Ltd. +// https://www.iana.org/domains/root/db/otsuka.html +otsuka + +// ott : Dish DBS Corporation +// https://www.iana.org/domains/root/db/ott.html +ott + +// ovh : MédiaBC +// https://www.iana.org/domains/root/db/ovh.html +ovh + +// page : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/page.html +page + +// panasonic : Panasonic Holdings Corporation +// https://www.iana.org/domains/root/db/panasonic.html +panasonic + +// paris : City of Paris +// https://www.iana.org/domains/root/db/paris.html +paris + +// pars +// https://www.iana.org/domains/root/db/pars.html +pars + +// partners : Binky Moon, LLC +// https://www.iana.org/domains/root/db/partners.html +partners + +// parts : Binky Moon, LLC +// https://www.iana.org/domains/root/db/parts.html +parts + +// party : Blue Sky Registry Limited +// https://www.iana.org/domains/root/db/party.html +party + +// pay : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/pay.html +pay + +// pccw : PCCW Enterprises Limited +// https://www.iana.org/domains/root/db/pccw.html +pccw + +// pet : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/pet.html +pet + +// pfizer : Pfizer Inc. +// https://www.iana.org/domains/root/db/pfizer.html +pfizer + +// pharmacy : National Association of Boards of Pharmacy +// https://www.iana.org/domains/root/db/pharmacy.html +pharmacy + +// phd : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/phd.html +phd + +// philips : Koninklijke Philips N.V. +// https://www.iana.org/domains/root/db/philips.html +philips + +// phone : Dish DBS Corporation +// https://www.iana.org/domains/root/db/phone.html +phone + +// photo : Registry Services, LLC +// https://www.iana.org/domains/root/db/photo.html +photo + +// photography : Binky Moon, LLC +// https://www.iana.org/domains/root/db/photography.html +photography + +// photos : Binky Moon, LLC +// https://www.iana.org/domains/root/db/photos.html +photos + +// physio : PhysBiz Pty Ltd +// https://www.iana.org/domains/root/db/physio.html +physio + +// pics : XYZ.COM LLC +// https://www.iana.org/domains/root/db/pics.html +pics + +// pictet : Banque Pictet & Cie SA +// https://www.iana.org/domains/root/db/pictet.html +pictet + +// pictures : Binky Moon, LLC +// https://www.iana.org/domains/root/db/pictures.html +pictures + +// pid : Top Level Spectrum, Inc. +// https://www.iana.org/domains/root/db/pid.html +pid + +// pin : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/pin.html +pin + +// ping : Ping Registry Provider, Inc. +// https://www.iana.org/domains/root/db/ping.html +ping + +// pink : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/pink.html +pink + +// pioneer : Pioneer Corporation +// https://www.iana.org/domains/root/db/pioneer.html +pioneer + +// pizza : Binky Moon, LLC +// https://www.iana.org/domains/root/db/pizza.html +pizza + +// place : Binky Moon, LLC +// https://www.iana.org/domains/root/db/place.html +place + +// play : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/play.html +play + +// playstation : Sony Interactive Entertainment Inc. +// https://www.iana.org/domains/root/db/playstation.html +playstation + +// plumbing : Binky Moon, LLC +// https://www.iana.org/domains/root/db/plumbing.html +plumbing + +// plus : Binky Moon, LLC +// https://www.iana.org/domains/root/db/plus.html +plus + +// pnc : PNC Domain Co., LLC +// https://www.iana.org/domains/root/db/pnc.html +pnc + +// pohl : Deutsche Vermögensberatung Aktiengesellschaft DVAG +// https://www.iana.org/domains/root/db/pohl.html +pohl + +// poker : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/poker.html +poker + +// politie : Politie Nederland +// https://www.iana.org/domains/root/db/politie.html +politie + +// porn : ICM Registry PN LLC +// https://www.iana.org/domains/root/db/porn.html +porn + +// praxi : Praxi S.p.A. +// https://www.iana.org/domains/root/db/praxi.html +praxi + +// press : Radix Technologies Inc SEZC +// https://www.iana.org/domains/root/db/press.html +press + +// prime : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/prime.html +prime + +// prod : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/prod.html +prod + +// productions : Binky Moon, LLC +// https://www.iana.org/domains/root/db/productions.html +productions + +// prof : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/prof.html +prof + +// progressive : Progressive Casualty Insurance Company +// https://www.iana.org/domains/root/db/progressive.html +progressive + +// promo : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/promo.html +promo + +// properties : Binky Moon, LLC +// https://www.iana.org/domains/root/db/properties.html +properties + +// property : Digital Property Infrastructure Limited +// https://www.iana.org/domains/root/db/property.html +property + +// protection : XYZ.COM LLC +// https://www.iana.org/domains/root/db/protection.html +protection + +// pru : Prudential Financial, Inc. +// https://www.iana.org/domains/root/db/pru.html +pru + +// prudential : Prudential Financial, Inc. +// https://www.iana.org/domains/root/db/prudential.html +prudential + +// pub : Dog Beach, LLC +// https://www.iana.org/domains/root/db/pub.html +pub + +// pwc : PricewaterhouseCoopers LLP +// https://www.iana.org/domains/root/db/pwc.html +pwc + +// qpon : dotQPON LLC +// https://www.iana.org/domains/root/db/qpon.html +qpon + +// quebec : PointQuébec Inc +// https://www.iana.org/domains/root/db/quebec.html +quebec + +// quest : XYZ.COM LLC +// https://www.iana.org/domains/root/db/quest.html +quest + +// racing : Premier Registry Limited +// https://www.iana.org/domains/root/db/racing.html +racing + +// radio : Digity, LLC +// https://www.iana.org/domains/root/db/radio.html +radio + +// read : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/read.html +read + +// realestate : dotRealEstate LLC +// https://www.iana.org/domains/root/db/realestate.html +realestate + +// realtor : Real Estate Domains LLC +// https://www.iana.org/domains/root/db/realtor.html +realtor + +// realty : Waterford Limited +// https://www.iana.org/domains/root/db/realty.html +realty + +// recipes : Binky Moon, LLC +// https://www.iana.org/domains/root/db/recipes.html +recipes + +// red : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/red.html +red + +// redumbrella : Travelers TLD, LLC +// https://www.iana.org/domains/root/db/redumbrella.html +redumbrella + +// rehab : Dog Beach, LLC +// https://www.iana.org/domains/root/db/rehab.html +rehab + +// reise : Binky Moon, LLC +// https://www.iana.org/domains/root/db/reise.html +reise + +// reisen : Binky Moon, LLC +// https://www.iana.org/domains/root/db/reisen.html +reisen + +// reit : National Association of Real Estate Investment Trusts, Inc. +// https://www.iana.org/domains/root/db/reit.html +reit + +// reliance : Reliance Industries Limited +// https://www.iana.org/domains/root/db/reliance.html +reliance + +// ren : ZDNS International Limited +// https://www.iana.org/domains/root/db/ren.html +ren + +// rent : XYZ.COM LLC +// https://www.iana.org/domains/root/db/rent.html +rent + +// rentals : Binky Moon, LLC +// https://www.iana.org/domains/root/db/rentals.html +rentals + +// repair : Binky Moon, LLC +// https://www.iana.org/domains/root/db/repair.html +repair + +// report : Binky Moon, LLC +// https://www.iana.org/domains/root/db/report.html +report + +// republican : Dog Beach, LLC +// https://www.iana.org/domains/root/db/republican.html +republican + +// rest : Punto 2012 Sociedad Anonima Promotora de Inversion de Capital Variable +// https://www.iana.org/domains/root/db/rest.html +rest + +// restaurant : Binky Moon, LLC +// https://www.iana.org/domains/root/db/restaurant.html +restaurant + +// review : dot Review Limited +// https://www.iana.org/domains/root/db/review.html +review + +// reviews : Dog Beach, LLC +// https://www.iana.org/domains/root/db/reviews.html +reviews + +// rexroth : Robert Bosch GMBH +// https://www.iana.org/domains/root/db/rexroth.html +rexroth + +// rich : iRegistry GmbH +// https://www.iana.org/domains/root/db/rich.html +rich + +// richardli : Pacific Century Asset Management (HK) Limited +// https://www.iana.org/domains/root/db/richardli.html +richardli + +// ricoh : Ricoh Company, Ltd. +// https://www.iana.org/domains/root/db/ricoh.html +ricoh + +// ril : Reliance Industries Limited +// https://www.iana.org/domains/root/db/ril.html +ril + +// rio : Empresa Municipal de Informática SA - IPLANRIO +// https://www.iana.org/domains/root/db/rio.html +rio + +// rip : Dog Beach, LLC +// https://www.iana.org/domains/root/db/rip.html +rip + +// rocks : Dog Beach, LLC +// https://www.iana.org/domains/root/db/rocks.html +rocks + +// rodeo : Registry Services, LLC +// https://www.iana.org/domains/root/db/rodeo.html +rodeo + +// rogers : Rogers Communications Canada Inc. +// https://www.iana.org/domains/root/db/rogers.html +rogers + +// room : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/room.html +room + +// rsvp : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/rsvp.html +rsvp + +// rugby : World Rugby Strategic Developments Limited +// https://www.iana.org/domains/root/db/rugby.html +rugby + +// ruhr : dotSaarland GmbH +// https://www.iana.org/domains/root/db/ruhr.html +ruhr + +// run : Binky Moon, LLC +// https://www.iana.org/domains/root/db/run.html +run + +// rwe : RWE AG +// https://www.iana.org/domains/root/db/rwe.html +rwe + +// ryukyu : BRregistry, Inc. +// https://www.iana.org/domains/root/db/ryukyu.html +ryukyu + +// saarland : dotSaarland GmbH +// https://www.iana.org/domains/root/db/saarland.html +saarland + +// safe : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/safe.html +safe + +// safety : Jolly Host, LLC +// https://www.iana.org/domains/root/db/safety.html +safety + +// sakura : SAKURA Internet Inc. +// https://www.iana.org/domains/root/db/sakura.html +sakura + +// sale : Dog Beach, LLC +// https://www.iana.org/domains/root/db/sale.html +sale + +// salon : Binky Moon, LLC +// https://www.iana.org/domains/root/db/salon.html +salon + +// samsclub : Wal-Mart Stores, Inc. +// https://www.iana.org/domains/root/db/samsclub.html +samsclub + +// samsung : SAMSUNG SDS CO., LTD +// https://www.iana.org/domains/root/db/samsung.html +samsung + +// sandvik : Sandvik AB +// https://www.iana.org/domains/root/db/sandvik.html +sandvik + +// sandvikcoromant : Sandvik AB +// https://www.iana.org/domains/root/db/sandvikcoromant.html +sandvikcoromant + +// sanofi : Sanofi +// https://www.iana.org/domains/root/db/sanofi.html +sanofi + +// sap : SAP AG +// https://www.iana.org/domains/root/db/sap.html +sap + +// sarl : Binky Moon, LLC +// https://www.iana.org/domains/root/db/sarl.html +sarl + +// sas : Research IP LLC +// https://www.iana.org/domains/root/db/sas.html +sas + +// save : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/save.html +save + +// saxo : Saxo Bank A/S +// https://www.iana.org/domains/root/db/saxo.html +saxo + +// sbi : STATE BANK OF INDIA +// https://www.iana.org/domains/root/db/sbi.html +sbi + +// sbs : ShortDot SA +// https://www.iana.org/domains/root/db/sbs.html +sbs + +// scb : The Siam Commercial Bank Public Company Limited ("SCB") +// https://www.iana.org/domains/root/db/scb.html +scb + +// schaeffler : Schaeffler Technologies AG & Co. KG +// https://www.iana.org/domains/root/db/schaeffler.html +schaeffler + +// schmidt : SCHMIDT GROUPE S.A.S. +// https://www.iana.org/domains/root/db/schmidt.html +schmidt + +// scholarships : Scholarships.com, LLC +// https://www.iana.org/domains/root/db/scholarships.html +scholarships + +// school : Binky Moon, LLC +// https://www.iana.org/domains/root/db/school.html +school + +// schule : Binky Moon, LLC +// https://www.iana.org/domains/root/db/schule.html +schule + +// schwarz : Schwarz Domains und Services GmbH & Co. KG +// https://www.iana.org/domains/root/db/schwarz.html +schwarz + +// science : dot Science Limited +// https://www.iana.org/domains/root/db/science.html +science + +// scot : Dot Scot Registry Limited +// https://www.iana.org/domains/root/db/scot.html +scot + +// search : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/search.html +search + +// seat : SEAT, S.A. (Sociedad Unipersonal) +// https://www.iana.org/domains/root/db/seat.html +seat + +// secure : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/secure.html +secure + +// security : XYZ.COM LLC +// https://www.iana.org/domains/root/db/security.html +security + +// seek : Seek Limited +// https://www.iana.org/domains/root/db/seek.html +seek + +// select : Registry Services, LLC +// https://www.iana.org/domains/root/db/select.html +select + +// sener : Sener Ingeniería y Sistemas, S.A. +// https://www.iana.org/domains/root/db/sener.html +sener + +// services : Binky Moon, LLC +// https://www.iana.org/domains/root/db/services.html +services + +// seven : Seven West Media Ltd +// https://www.iana.org/domains/root/db/seven.html +seven + +// sew : SEW-EURODRIVE GmbH & Co KG +// https://www.iana.org/domains/root/db/sew.html +sew + +// sex : ICM Registry SX LLC +// https://www.iana.org/domains/root/db/sex.html +sex + +// sexy : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/sexy.html +sexy + +// sfr : Societe Francaise du Radiotelephone - SFR +// https://www.iana.org/domains/root/db/sfr.html +sfr + +// shangrila : Shangri‐La International Hotel Management Limited +// https://www.iana.org/domains/root/db/shangrila.html +shangrila + +// sharp : Sharp Corporation +// https://www.iana.org/domains/root/db/sharp.html +sharp + +// shell : Shell Information Technology International Inc +// https://www.iana.org/domains/root/db/shell.html +shell + +// shia +// https://www.iana.org/domains/root/db/shia.html +shia + +// shiksha : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/shiksha.html +shiksha + +// shoes : Binky Moon, LLC +// https://www.iana.org/domains/root/db/shoes.html +shoes + +// shop : GMO Registry, Inc. +// https://www.iana.org/domains/root/db/shop.html +shop + +// shopping : Binky Moon, LLC +// https://www.iana.org/domains/root/db/shopping.html +shopping + +// shouji : Beijing Qihu Keji Co., Ltd. +// https://www.iana.org/domains/root/db/shouji.html +shouji + +// show : Binky Moon, LLC +// https://www.iana.org/domains/root/db/show.html +show + +// silk : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/silk.html +silk + +// sina : Sina Corporation +// https://www.iana.org/domains/root/db/sina.html +sina + +// singles : Binky Moon, LLC +// https://www.iana.org/domains/root/db/singles.html +singles + +// site : Radix Technologies Inc SEZC +// https://www.iana.org/domains/root/db/site.html +site + +// ski : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/ski.html +ski + +// skin : XYZ.COM LLC +// https://www.iana.org/domains/root/db/skin.html +skin + +// sky : Sky UK Limited +// https://www.iana.org/domains/root/db/sky.html +sky + +// skype : Microsoft Corporation +// https://www.iana.org/domains/root/db/skype.html +skype + +// sling : DISH Technologies L.L.C. +// https://www.iana.org/domains/root/db/sling.html +sling + +// smart : Smart Communications, Inc. (SMART) +// https://www.iana.org/domains/root/db/smart.html +smart + +// smile : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/smile.html +smile + +// sncf : Société Nationale SNCF +// https://www.iana.org/domains/root/db/sncf.html +sncf + +// soccer : Binky Moon, LLC +// https://www.iana.org/domains/root/db/soccer.html +soccer + +// social : Dog Beach, LLC +// https://www.iana.org/domains/root/db/social.html +social + +// softbank : SoftBank Group Corp. +// https://www.iana.org/domains/root/db/softbank.html +softbank + +// software : Dog Beach, LLC +// https://www.iana.org/domains/root/db/software.html +software + +// sohu : Sohu.com Limited +// https://www.iana.org/domains/root/db/sohu.html +sohu + +// solar : Binky Moon, LLC +// https://www.iana.org/domains/root/db/solar.html +solar + +// solutions : Binky Moon, LLC +// https://www.iana.org/domains/root/db/solutions.html +solutions + +// song : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/song.html +song + +// sony : Sony Group Corporation +// https://www.iana.org/domains/root/db/sony.html +sony + +// soy : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/soy.html +soy + +// spa : Asia Spa and Wellness Promotion Council Limited +// https://www.iana.org/domains/root/db/spa.html +spa + +// space : Radix Technologies Inc SEZC +// https://www.iana.org/domains/root/db/space.html +space + +// sport : SportAccord +// https://www.iana.org/domains/root/db/sport.html +sport + +// spot : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/spot.html +spot + +// srl : InterNetX, Corp +// https://www.iana.org/domains/root/db/srl.html +srl + +// stada : STADA Arzneimittel AG +// https://www.iana.org/domains/root/db/stada.html +stada + +// staples : Staples, Inc. +// https://www.iana.org/domains/root/db/staples.html +staples + +// star : Star India Private Limited +// https://www.iana.org/domains/root/db/star.html +star + +// statebank : STATE BANK OF INDIA +// https://www.iana.org/domains/root/db/statebank.html +statebank + +// statefarm : State Farm Mutual Automobile Insurance Company +// https://www.iana.org/domains/root/db/statefarm.html +statefarm + +// stc : Saudi Telecom Company +// https://www.iana.org/domains/root/db/stc.html +stc + +// stcgroup : Saudi Telecom Company +// https://www.iana.org/domains/root/db/stcgroup.html +stcgroup + +// stockholm : Stockholms kommun +// https://www.iana.org/domains/root/db/stockholm.html +stockholm + +// storage : XYZ.COM LLC +// https://www.iana.org/domains/root/db/storage.html +storage + +// store : Radix Technologies Inc SEZC +// https://www.iana.org/domains/root/db/store.html +store + +// stream : dot Stream Limited +// https://www.iana.org/domains/root/db/stream.html +stream + +// studio : Dog Beach, LLC +// https://www.iana.org/domains/root/db/studio.html +studio + +// study : Registry Services, LLC +// https://www.iana.org/domains/root/db/study.html +study + +// style : Binky Moon, LLC +// https://www.iana.org/domains/root/db/style.html +style + +// sucks : Vox Populi Registry Ltd. +// https://www.iana.org/domains/root/db/sucks.html +sucks + +// supplies : Binky Moon, LLC +// https://www.iana.org/domains/root/db/supplies.html +supplies + +// supply : Binky Moon, LLC +// https://www.iana.org/domains/root/db/supply.html +supply + +// support : Binky Moon, LLC +// https://www.iana.org/domains/root/db/support.html +support + +// surf : Registry Services, LLC +// https://www.iana.org/domains/root/db/surf.html +surf + +// surgery : Binky Moon, LLC +// https://www.iana.org/domains/root/db/surgery.html +surgery + +// suzuki : SUZUKI MOTOR CORPORATION +// https://www.iana.org/domains/root/db/suzuki.html +suzuki + +// swatch : The Swatch Group Ltd +// https://www.iana.org/domains/root/db/swatch.html +swatch + +// swiss : Swiss Confederation +// https://www.iana.org/domains/root/db/swiss.html +swiss + +// sydney : State of New South Wales, Department of Premier and Cabinet +// https://www.iana.org/domains/root/db/sydney.html +sydney + +// systems : Binky Moon, LLC +// https://www.iana.org/domains/root/db/systems.html +systems + +// tab : Tabcorp Holdings Limited +// https://www.iana.org/domains/root/db/tab.html +tab + +// taipei : Taipei City Government +// https://www.iana.org/domains/root/db/taipei.html +taipei + +// talk : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/talk.html +talk + +// taobao : Alibaba Group Holding Limited +// https://www.iana.org/domains/root/db/taobao.html +taobao + +// target : Target Domain Holdings, LLC +// https://www.iana.org/domains/root/db/target.html +target + +// tatamotors : Tata Motors Ltd +// https://www.iana.org/domains/root/db/tatamotors.html +tatamotors + +// tatar : Limited Liability Company "Coordination Center of Regional Domain of Tatarstan Republic" +// https://www.iana.org/domains/root/db/tatar.html +tatar + +// tattoo : Registry Services, LLC +// https://www.iana.org/domains/root/db/tattoo.html +tattoo + +// tax : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tax.html +tax + +// taxi : Binky Moon, LLC +// https://www.iana.org/domains/root/db/taxi.html +taxi + +// tci +// https://www.iana.org/domains/root/db/tci.html +tci + +// tdk : TDK Corporation +// https://www.iana.org/domains/root/db/tdk.html +tdk + +// team : Binky Moon, LLC +// https://www.iana.org/domains/root/db/team.html +team + +// tech : Radix Technologies Inc SEZC +// https://www.iana.org/domains/root/db/tech.html +tech + +// technology : Binky Moon, LLC +// https://www.iana.org/domains/root/db/technology.html +technology + +// temasek : Temasek Holdings (Private) Limited +// https://www.iana.org/domains/root/db/temasek.html +temasek + +// tennis : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tennis.html +tennis + +// teva : Teva Pharmaceutical Industries Limited +// https://www.iana.org/domains/root/db/teva.html +teva + +// thd : Home Depot Product Authority, LLC +// https://www.iana.org/domains/root/db/thd.html +thd + +// theater : Binky Moon, LLC +// https://www.iana.org/domains/root/db/theater.html +theater + +// theatre : XYZ.COM LLC +// https://www.iana.org/domains/root/db/theatre.html +theatre + +// tiaa : Teachers Insurance and Annuity Association of America +// https://www.iana.org/domains/root/db/tiaa.html +tiaa + +// tickets : XYZ.COM LLC +// https://www.iana.org/domains/root/db/tickets.html +tickets + +// tienda : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tienda.html +tienda + +// tips : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tips.html +tips + +// tires : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tires.html +tires + +// tirol : punkt Tirol GmbH +// https://www.iana.org/domains/root/db/tirol.html +tirol + +// tjmaxx : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/tjmaxx.html +tjmaxx + +// tjx : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/tjx.html +tjx + +// tkmaxx : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/tkmaxx.html +tkmaxx + +// tmall : Alibaba Group Holding Limited +// https://www.iana.org/domains/root/db/tmall.html +tmall + +// today : Binky Moon, LLC +// https://www.iana.org/domains/root/db/today.html +today + +// tokyo : GMO Registry, Inc. +// https://www.iana.org/domains/root/db/tokyo.html +tokyo + +// tools : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tools.html +tools + +// top : Hong Kong Zhongze International Limited +// https://www.iana.org/domains/root/db/top.html +top + +// toray : Toray Industries, Inc. +// https://www.iana.org/domains/root/db/toray.html +toray + +// toshiba : TOSHIBA Corporation +// https://www.iana.org/domains/root/db/toshiba.html +toshiba + +// total : TotalEnergies SE +// https://www.iana.org/domains/root/db/total.html +total + +// tours : Binky Moon, LLC +// https://www.iana.org/domains/root/db/tours.html +tours + +// town : Binky Moon, LLC +// https://www.iana.org/domains/root/db/town.html +town + +// toyota : TOYOTA MOTOR CORPORATION +// https://www.iana.org/domains/root/db/toyota.html +toyota + +// toys : Binky Moon, LLC +// https://www.iana.org/domains/root/db/toys.html +toys + +// trade : Elite Registry Limited +// https://www.iana.org/domains/root/db/trade.html +trade + +// trading : Dog Beach, LLC +// https://www.iana.org/domains/root/db/trading.html +trading + +// training : Binky Moon, LLC +// https://www.iana.org/domains/root/db/training.html +training + +// travel : Dog Beach, LLC +// https://www.iana.org/domains/root/db/travel.html +travel + +// travelers : Travelers TLD, LLC +// https://www.iana.org/domains/root/db/travelers.html +travelers + +// travelersinsurance : Travelers TLD, LLC +// https://www.iana.org/domains/root/db/travelersinsurance.html +travelersinsurance + +// trust : Internet Naming Company LLC +// https://www.iana.org/domains/root/db/trust.html +trust + +// trv : Travelers TLD, LLC +// https://www.iana.org/domains/root/db/trv.html +trv + +// tube : Latin American Telecom LLC +// https://www.iana.org/domains/root/db/tube.html +tube + +// tui : TUI AG +// https://www.iana.org/domains/root/db/tui.html +tui + +// tunes : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/tunes.html +tunes + +// tushu : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/tushu.html +tushu + +// tvs : T V SUNDRAM IYENGAR & SONS LIMITED +// https://www.iana.org/domains/root/db/tvs.html +tvs + +// ubank : National Australia Bank Limited +// https://www.iana.org/domains/root/db/ubank.html +ubank + +// ubs : UBS AG +// https://www.iana.org/domains/root/db/ubs.html +ubs + +// unicom : China United Network Communications Corporation Limited +// https://www.iana.org/domains/root/db/unicom.html +unicom + +// university : Binky Moon, LLC +// https://www.iana.org/domains/root/db/university.html +university + +// uno : Radix Technologies Inc SEZC +// https://www.iana.org/domains/root/db/uno.html +uno + +// uol : UBN INTERNET LTDA. +// https://www.iana.org/domains/root/db/uol.html +uol + +// ups : UPS Market Driver, Inc. +// https://www.iana.org/domains/root/db/ups.html +ups + +// vacations : Binky Moon, LLC +// https://www.iana.org/domains/root/db/vacations.html +vacations + +// vana : D3 Registry LLC +// https://www.iana.org/domains/root/db/vana.html +vana + +// vanguard : The Vanguard Group, Inc. +// https://www.iana.org/domains/root/db/vanguard.html +vanguard + +// vegas : Dot Vegas, Inc. +// https://www.iana.org/domains/root/db/vegas.html +vegas + +// ventures : Binky Moon, LLC +// https://www.iana.org/domains/root/db/ventures.html +ventures + +// verisign : VeriSign, Inc. +// https://www.iana.org/domains/root/db/verisign.html +verisign + +// versicherung : tldbox GmbH +// https://www.iana.org/domains/root/db/versicherung.html +versicherung + +// vet : Dog Beach, LLC +// https://www.iana.org/domains/root/db/vet.html +vet + +// viajes : Binky Moon, LLC +// https://www.iana.org/domains/root/db/viajes.html +viajes + +// video : Dog Beach, LLC +// https://www.iana.org/domains/root/db/video.html +video + +// vig : VIENNA INSURANCE GROUP AG Wiener Versicherung Gruppe +// https://www.iana.org/domains/root/db/vig.html +vig + +// viking : Viking River Cruises (Bermuda) Ltd. +// https://www.iana.org/domains/root/db/viking.html +viking + +// villas : Binky Moon, LLC +// https://www.iana.org/domains/root/db/villas.html +villas + +// vin : Binky Moon, LLC +// https://www.iana.org/domains/root/db/vin.html +vin + +// vip : Registry Services, LLC +// https://www.iana.org/domains/root/db/vip.html +vip + +// virgin : Virgin Enterprises Limited +// https://www.iana.org/domains/root/db/virgin.html +virgin + +// visa : Visa Worldwide Pte. Limited +// https://www.iana.org/domains/root/db/visa.html +visa + +// vision : Binky Moon, LLC +// https://www.iana.org/domains/root/db/vision.html +vision + +// viva : Saudi Telecom Company +// https://www.iana.org/domains/root/db/viva.html +viva + +// vivo : Telefonica Brasil S.A. +// https://www.iana.org/domains/root/db/vivo.html +vivo + +// vlaanderen : DNS.be vzw +// https://www.iana.org/domains/root/db/vlaanderen.html +vlaanderen + +// vodka : Registry Services, LLC +// https://www.iana.org/domains/root/db/vodka.html +vodka + +// volvo : Volvo Holding Sverige Aktiebolag +// https://www.iana.org/domains/root/db/volvo.html +volvo + +// vote : Monolith Registry LLC +// https://www.iana.org/domains/root/db/vote.html +vote + +// voting : Valuetainment Corp. +// https://www.iana.org/domains/root/db/voting.html +voting + +// voto : Monolith Registry LLC +// https://www.iana.org/domains/root/db/voto.html +voto + +// voyage : Binky Moon, LLC +// https://www.iana.org/domains/root/db/voyage.html +voyage + +// wales : Nominet UK +// https://www.iana.org/domains/root/db/wales.html +wales + +// walmart : Wal-Mart Stores, Inc. +// https://www.iana.org/domains/root/db/walmart.html +walmart + +// walter : Sandvik AB +// https://www.iana.org/domains/root/db/walter.html +walter + +// wang : Zodiac Wang Limited +// https://www.iana.org/domains/root/db/wang.html +wang + +// wanggou : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/wanggou.html +wanggou + +// watch : Binky Moon, LLC +// https://www.iana.org/domains/root/db/watch.html +watch + +// watches : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/watches.html +watches + +// weather : The Weather Company, LLC +// https://www.iana.org/domains/root/db/weather.html +weather + +// weatherchannel : The Weather Company, LLC +// https://www.iana.org/domains/root/db/weatherchannel.html +weatherchannel + +// webcam : dot Webcam Limited +// https://www.iana.org/domains/root/db/webcam.html +webcam + +// weber : Saint-Gobain Weber SA +// https://www.iana.org/domains/root/db/weber.html +weber + +// website : Radix Technologies Inc SEZC +// https://www.iana.org/domains/root/db/website.html +website + +// wed +// https://www.iana.org/domains/root/db/wed.html +wed + +// wedding : Registry Services, LLC +// https://www.iana.org/domains/root/db/wedding.html +wedding + +// weibo : Sina Corporation +// https://www.iana.org/domains/root/db/weibo.html +weibo + +// weir : Weir Group IP Limited +// https://www.iana.org/domains/root/db/weir.html +weir + +// whoswho : Who's Who Registry +// https://www.iana.org/domains/root/db/whoswho.html +whoswho + +// wien : domainworx Service & Management GmbH +// https://www.iana.org/domains/root/db/wien.html +wien + +// wiki : Registry Services, LLC +// https://www.iana.org/domains/root/db/wiki.html +wiki + +// williamhill : William Hill Organization Limited +// https://www.iana.org/domains/root/db/williamhill.html +williamhill + +// win : First Registry Limited +// https://www.iana.org/domains/root/db/win.html +win + +// windows : Microsoft Corporation +// https://www.iana.org/domains/root/db/windows.html +windows + +// wine : Binky Moon, LLC +// https://www.iana.org/domains/root/db/wine.html +wine + +// winners : The TJX Companies, Inc. +// https://www.iana.org/domains/root/db/winners.html +winners + +// wme : William Morris Endeavor Entertainment, LLC +// https://www.iana.org/domains/root/db/wme.html +wme + +// woodside : Woodside Petroleum Limited +// https://www.iana.org/domains/root/db/woodside.html +woodside + +// work : Registry Services, LLC +// https://www.iana.org/domains/root/db/work.html +work + +// works : Binky Moon, LLC +// https://www.iana.org/domains/root/db/works.html +works + +// world : Binky Moon, LLC +// https://www.iana.org/domains/root/db/world.html +world + +// wow : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/wow.html +wow + +// wtc : World Trade Centers Association, Inc. +// https://www.iana.org/domains/root/db/wtc.html +wtc + +// wtf : Binky Moon, LLC +// https://www.iana.org/domains/root/db/wtf.html +wtf + +// xbox : Microsoft Corporation +// https://www.iana.org/domains/root/db/xbox.html +xbox + +// xerox : Xerox DNHC LLC +// https://www.iana.org/domains/root/db/xerox.html +xerox + +// xihuan : Beijing Qihu Keji Co., Ltd. +// https://www.iana.org/domains/root/db/xihuan.html +xihuan + +// xin : Elegant Leader Limited +// https://www.iana.org/domains/root/db/xin.html +xin + +// xn--11b4c3d : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--11b4c3d.html +कॉम + +// xn--1ck2e1b : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--1ck2e1b.html +セール + +// xn--1qqw23a : Guangzhou YU Wei Information Technology Co., Ltd. +// https://www.iana.org/domains/root/db/xn--1qqw23a.html +佛山 + +// xn--30rr7y : Excellent First Limited +// https://www.iana.org/domains/root/db/xn--30rr7y.html +慈善 + +// xn--3bst00m : Eagle Horizon Limited +// https://www.iana.org/domains/root/db/xn--3bst00m.html +集团 + +// xn--3ds443g : Beijing TLD Registry Technology Limited +// https://www.iana.org/domains/root/db/xn--3ds443g.html +在线 + +// xn--3pxu8k : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--3pxu8k.html +点看 + +// xn--42c2d9a : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--42c2d9a.html +คอม + +// xn--45q11c : Zodiac Gemini Ltd +// https://www.iana.org/domains/root/db/xn--45q11c.html +八卦 + +// xn--4gbrim : Helium TLDs Ltd +// https://www.iana.org/domains/root/db/xn--4gbrim.html +موقع + +// xn--55qw42g : China Organizational Name Administration Center +// https://www.iana.org/domains/root/db/xn--55qw42g.html +公益 + +// xn--55qx5d : China Internet Network Information Center (CNNIC) +// https://www.iana.org/domains/root/db/xn--55qx5d.html +公司 + +// xn--5su34j936bgsg : Shangri‐La International Hotel Management Limited +// https://www.iana.org/domains/root/db/xn--5su34j936bgsg.html +香格里拉 + +// xn--5tzm5g : Jolly Host, LLC +// https://www.iana.org/domains/root/db/xn--5tzm5g.html +网站 + +// xn--6frz82g : Identity Digital Domains Limited +// https://www.iana.org/domains/root/db/xn--6frz82g.html +移动 + +// xn--6qq986b3xl : Tycoon Treasure Limited +// https://www.iana.org/domains/root/db/xn--6qq986b3xl.html +我爱你 + +// xn--80adxhks : Foundation for Assistance for Internet Technologies and Infrastructure Development (FAITID) +// https://www.iana.org/domains/root/db/xn--80adxhks.html +москва + +// xn--80aqecdr1a : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// https://www.iana.org/domains/root/db/xn--80aqecdr1a.html +католик + +// xn--80asehdb : CORE Association +// https://www.iana.org/domains/root/db/xn--80asehdb.html +онлайн + +// xn--80aswg : CORE Association +// https://www.iana.org/domains/root/db/xn--80aswg.html +сайт + +// xn--8y0a063a : China United Network Communications Corporation Limited +// https://www.iana.org/domains/root/db/xn--8y0a063a.html +联通 + +// xn--9dbq2a : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--9dbq2a.html +קום + +// xn--9et52u : RISE VICTORY LIMITED +// https://www.iana.org/domains/root/db/xn--9et52u.html +时尚 + +// xn--9krt00a : Sina Corporation +// https://www.iana.org/domains/root/db/xn--9krt00a.html +微博 + +// xn--b4w605ferd : Temasek Holdings (Private) Limited +// https://www.iana.org/domains/root/db/xn--b4w605ferd.html +淡马锡 + +// xn--bck1b9a5dre4c : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--bck1b9a5dre4c.html +ファッション + +// xn--c1avg : Public Interest Registry +// https://www.iana.org/domains/root/db/xn--c1avg.html +орг + +// xn--c2br7g : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--c2br7g.html +नेट + +// xn--cck2b3b : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--cck2b3b.html +ストア + +// xn--cckwcxetd : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--cckwcxetd.html +アマゾン + +// xn--cg4bki : SAMSUNG SDS CO., LTD +// https://www.iana.org/domains/root/db/xn--cg4bki.html +삼성 + +// xn--czr694b : Internet DotTrademark Organisation Limited +// https://www.iana.org/domains/root/db/xn--czr694b.html +商标 + +// xn--czrs0t : Binky Moon, LLC +// https://www.iana.org/domains/root/db/xn--czrs0t.html +商店 + +// xn--czru2d : Zodiac Aquarius Limited +// https://www.iana.org/domains/root/db/xn--czru2d.html +商城 + +// xn--d1acj3b : The Foundation for Network Initiatives “The Smart Internet” +// https://www.iana.org/domains/root/db/xn--d1acj3b.html +дети + +// xn--eckvdtc9d : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--eckvdtc9d.html +ポイント + +// xn--efvy88h : Guangzhou YU Wei Information Technology Co., Ltd. +// https://www.iana.org/domains/root/db/xn--efvy88h.html +新闻 + +// xn--fct429k : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--fct429k.html +家電 + +// xn--fhbei : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--fhbei.html +كوم + +// xn--fiq228c5hs : Beijing TLD Registry Technology Limited +// https://www.iana.org/domains/root/db/xn--fiq228c5hs.html +中文网 + +// xn--fiq64b : CITIC Group Corporation +// https://www.iana.org/domains/root/db/xn--fiq64b.html +中信 + +// xn--fjq720a : Binky Moon, LLC +// https://www.iana.org/domains/root/db/xn--fjq720a.html +娱乐 + +// xn--flw351e : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/xn--flw351e.html +谷歌 + +// xn--fzys8d69uvgm : PCCW Enterprises Limited +// https://www.iana.org/domains/root/db/xn--fzys8d69uvgm.html +電訊盈科 + +// xn--g2xx48c : Nawang Heli(Xiamen) Network Service Co., LTD. +// https://www.iana.org/domains/root/db/xn--g2xx48c.html +购物 + +// xn--gckr3f0f : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--gckr3f0f.html +クラウド + +// xn--gk3at1e : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--gk3at1e.html +通販 + +// xn--hxt814e : Zodiac Taurus Limited +// https://www.iana.org/domains/root/db/xn--hxt814e.html +网店 + +// xn--i1b6b1a6a2e : Public Interest Registry +// https://www.iana.org/domains/root/db/xn--i1b6b1a6a2e.html +संगठन + +// xn--imr513n : Internet DotTrademark Organisation Limited +// https://www.iana.org/domains/root/db/xn--imr513n.html +餐厅 + +// xn--io0a7i : China Internet Network Information Center (CNNIC) +// https://www.iana.org/domains/root/db/xn--io0a7i.html +网络 + +// xn--j1aef : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--j1aef.html +ком + +// xn--jlq480n2rg : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--jlq480n2rg.html +亚马逊 + +// xn--jvr189m : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--jvr189m.html +食品 + +// xn--kcrx77d1x4a : Koninklijke Philips N.V. +// https://www.iana.org/domains/root/db/xn--kcrx77d1x4a.html +飞利浦 + +// xn--kput3i : Beijing RITT-Net Technology Development Co., Ltd +// https://www.iana.org/domains/root/db/xn--kput3i.html +手机 + +// xn--mgba3a3ejt : Aramco Services Company +// https://www.iana.org/domains/root/db/xn--mgba3a3ejt.html +ارامكو + +// xn--mgba7c0bbn0a : Competrol (Luxembourg) Sarl +// https://www.iana.org/domains/root/db/xn--mgba7c0bbn0a.html +العليان + +// xn--mgbab2bd : CORE Association +// https://www.iana.org/domains/root/db/xn--mgbab2bd.html +بازار + +// xn--mgbca7dzdo : Abu Dhabi Systems and Information Centre +// https://www.iana.org/domains/root/db/xn--mgbca7dzdo.html +ابوظبي + +// xn--mgbi4ecexp : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// https://www.iana.org/domains/root/db/xn--mgbi4ecexp.html +كاثوليك + +// xn--mgbt3dhd +// https://www.iana.org/domains/root/db/xn--mgbt3dhd.html +همراه + +// xn--mk1bu44c : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--mk1bu44c.html +닷컴 + +// xn--mxtq1m : Net-Chinese Co., Ltd. +// https://www.iana.org/domains/root/db/xn--mxtq1m.html +政府 + +// xn--ngbc5azd : International Domain Registry Pty. Ltd. +// https://www.iana.org/domains/root/db/xn--ngbc5azd.html +شبكة + +// xn--ngbe9e0a : Kuwait Finance House +// https://www.iana.org/domains/root/db/xn--ngbe9e0a.html +بيتك + +// xn--ngbrx : League of Arab States +// https://www.iana.org/domains/root/db/xn--ngbrx.html +عرب + +// xn--nqv7f : Public Interest Registry +// https://www.iana.org/domains/root/db/xn--nqv7f.html +机构 + +// xn--nqv7fs00ema : Public Interest Registry +// https://www.iana.org/domains/root/db/xn--nqv7fs00ema.html +组织机构 + +// xn--nyqy26a : Stable Tone Limited +// https://www.iana.org/domains/root/db/xn--nyqy26a.html +健康 + +// xn--otu796d : Jiang Yu Liang Cai Technology Company Limited +// https://www.iana.org/domains/root/db/xn--otu796d.html +招聘 + +// xn--p1acf : Rusnames Limited +// https://www.iana.org/domains/root/db/xn--p1acf.html +рус + +// xn--pssy2u : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--pssy2u.html +大拿 + +// xn--q9jyb4c : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/xn--q9jyb4c.html +みんな + +// xn--qcka1pmc : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/xn--qcka1pmc.html +グーグル + +// xn--rhqv96g : Stable Tone Limited +// https://www.iana.org/domains/root/db/xn--rhqv96g.html +世界 + +// xn--rovu88b : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/xn--rovu88b.html +書籍 + +// xn--ses554g : KNET Co., Ltd. +// https://www.iana.org/domains/root/db/xn--ses554g.html +网址 + +// xn--t60b56a : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--t60b56a.html +닷넷 + +// xn--tckwe : VeriSign Sarl +// https://www.iana.org/domains/root/db/xn--tckwe.html +コム + +// xn--tiq49xqyj : Pontificium Consilium de Comunicationibus Socialibus (PCCS) (Pontifical Council for Social Communication) +// https://www.iana.org/domains/root/db/xn--tiq49xqyj.html +天主教 + +// xn--unup4y : Binky Moon, LLC +// https://www.iana.org/domains/root/db/xn--unup4y.html +游戏 + +// xn--vermgensberater-ctb : Deutsche Vermögensberatung Aktiengesellschaft DVAG +// https://www.iana.org/domains/root/db/xn--vermgensberater-ctb.html +vermögensberater + +// xn--vermgensberatung-pwb : Deutsche Vermögensberatung Aktiengesellschaft DVAG +// https://www.iana.org/domains/root/db/xn--vermgensberatung-pwb.html +vermögensberatung + +// xn--vhquv : Binky Moon, LLC +// https://www.iana.org/domains/root/db/xn--vhquv.html +企业 + +// xn--vuq861b : Beijing Tele-info Technology Co., Ltd. +// https://www.iana.org/domains/root/db/xn--vuq861b.html +信息 + +// xn--w4r85el8fhu5dnra : Kerry Trading Co. Limited +// https://www.iana.org/domains/root/db/xn--w4r85el8fhu5dnra.html +嘉里大酒店 + +// xn--w4rs40l : Kerry Trading Co. Limited +// https://www.iana.org/domains/root/db/xn--w4rs40l.html +嘉里 + +// xn--xhq521b : Guangzhou YU Wei Information Technology Co., Ltd. +// https://www.iana.org/domains/root/db/xn--xhq521b.html +广东 + +// xn--zfr164b : China Organizational Name Administration Center +// https://www.iana.org/domains/root/db/xn--zfr164b.html +政务 + +// xyz : XYZ.COM LLC +// https://www.iana.org/domains/root/db/xyz.html +xyz + +// yachts : XYZ.COM LLC +// https://www.iana.org/domains/root/db/yachts.html +yachts + +// yahoo : Yahoo Inc. +// https://www.iana.org/domains/root/db/yahoo.html +yahoo + +// yamaxun : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/yamaxun.html +yamaxun + +// yandex : YANDEX, LLC +// https://www.iana.org/domains/root/db/yandex.html +yandex + +// yodobashi : YODOBASHI CAMERA CO.,LTD. +// https://www.iana.org/domains/root/db/yodobashi.html +yodobashi + +// yoga : Registry Services, LLC +// https://www.iana.org/domains/root/db/yoga.html +yoga + +// yokohama : GMO Registry, Inc. +// https://www.iana.org/domains/root/db/yokohama.html +yokohama + +// you : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/you.html +you + +// youtube : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/youtube.html +youtube + +// yun : Beijing Qihu Keji Co., Ltd. +// https://www.iana.org/domains/root/db/yun.html +yun + +// zappos : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/zappos.html +zappos + +// zara : Industria de Diseño Textil, S.A. (INDITEX, S.A.) +// https://www.iana.org/domains/root/db/zara.html +zara + +// zero : Amazon Registry Services, Inc. +// https://www.iana.org/domains/root/db/zero.html +zero + +// zip : Charleston Road Registry Inc. +// https://www.iana.org/domains/root/db/zip.html +zip + +// zone : Binky Moon, LLC +// https://www.iana.org/domains/root/db/zone.html +zone + +// zuerich : Kanton Zürich (Canton of Zurich) +// https://www.iana.org/domains/root/db/zuerich.html +zuerich + +// ===END ICANN DOMAINS=== + +// ===BEGIN PRIVATE DOMAINS=== + +// (Note: these are in alphabetical order by company name) + +// .KRD : https://nic.krd +co.krd +edu.krd + +// .pl domains (grandfathered) +art.pl +gliwice.pl +krakow.pl +poznan.pl +wroc.pl +zakopane.pl + +// 1GB LLC : https://www.1gb.ua/ +// Submitted by 1GB LLC +cc.ua +inf.ua +ltd.ua + +// 611 blockchain domain name system : https://sixone.one/ +611.to + +// A2 Hosting +// Submitted by Tyler Hall +a2hosted.com +cpserver.com + +// Acorn Labs : https://acorn.io +// Submitted by Craig Jellick +*.on-acorn.io + +// ActiveTrail : https://www.activetrail.biz/ +// Submitted by Ofer Kalaora +activetrail.biz + +// Adaptable.io : https://adaptable.io +// Submitted by Mark Terrel +adaptable.app + +// addr.tools : https://addr.tools/ +// Submitted by Brian Shea +myaddr.dev +myaddr.io +dyn.addr.tools +myaddr.tools + +// Adobe : https://www.adobe.com/ +// Submitted by Ian Boston and Lars Trieloff +adobeaemcloud.com +*.dev.adobeaemcloud.com +aem.live +hlx.live +adobeaemcloud.net +aem.network +aem.page +hlx.page +aem.reviews + +// Adobe Developer Platform : https://developer.adobe.com +// Submitted by Jesse MacFadyen +adobeio-static.net +adobeioruntime.net + +// Africa.com Web Solutions Ltd : https://registry.africa.com +// Submitted by Gavin Brown +africa.com + +// AgentbaseAI Inc. : https://assistant-ui.com +// Submitted by Simon Farshid +*.auiusercontent.com + +// Agnat sp. z o.o. : https://domena.pl +// Submitted by Przemyslaw Plewa +beep.pl + +// Aiven : https://aiven.io/ +// Submitted by Aiven Security Team +aiven.app +aivencloud.com + +// Akamai : https://www.akamai.com/ +// Submitted by Akamai Team +akadns.net +akamai.net +akamai-staging.net +akamaiedge.net +akamaiedge-staging.net +akamaihd.net +akamaihd-staging.net +akamaiorigin.net +akamaiorigin-staging.net +akamaized.net +akamaized-staging.net +edgekey.net +edgekey-staging.net +edgesuite.net +edgesuite-staging.net + +// alboto.ca : http://alboto.ca +// Submitted by Anton Avramov +barsy.ca + +// Alces Software Ltd : http://alces-software.com +// Submitted by Mark J. Titorenko +*.compute.estate +*.alces.network + +// Alibaba Cloud API Gateway +// Submitted by Alibaba Cloud Security +alibabacloudcs.com +ms.fun +ms.show + +// all-inkl.com : https://all-inkl.com +// Submitted by Werner Kaltofen +kasserver.com + +// Altervista : https://www.altervista.org +// Submitted by Carlo Cannas +altervista.org + +// alwaysdata : https://www.alwaysdata.com +// Submitted by Cyril +alwaysdata.net + +// Amaze Software : https://amaze.co +// Submitted by Domain Admin +myamaze.net + +// Amazon : https://www.amazon.com/ +// Submitted by AWS Security +// Subsections of Amazon/subsidiaries will appear until "concludes" tag + +// Amazon API Gateway +// Submitted by AWS Security +// Reference: 6a4f5a95-8c7d-4077-a7af-9cf1abec0a53 +execute-api.cn-north-1.amazonaws.com.cn +execute-api.cn-northwest-1.amazonaws.com.cn +execute-api.af-south-1.amazonaws.com +execute-api.ap-east-1.amazonaws.com +execute-api.ap-northeast-1.amazonaws.com +execute-api.ap-northeast-2.amazonaws.com +execute-api.ap-northeast-3.amazonaws.com +execute-api.ap-south-1.amazonaws.com +execute-api.ap-south-2.amazonaws.com +execute-api.ap-southeast-1.amazonaws.com +execute-api.ap-southeast-2.amazonaws.com +execute-api.ap-southeast-3.amazonaws.com +execute-api.ap-southeast-4.amazonaws.com +execute-api.ap-southeast-5.amazonaws.com +execute-api.ca-central-1.amazonaws.com +execute-api.ca-west-1.amazonaws.com +execute-api.eu-central-1.amazonaws.com +execute-api.eu-central-2.amazonaws.com +execute-api.eu-north-1.amazonaws.com +execute-api.eu-south-1.amazonaws.com +execute-api.eu-south-2.amazonaws.com +execute-api.eu-west-1.amazonaws.com +execute-api.eu-west-2.amazonaws.com +execute-api.eu-west-3.amazonaws.com +execute-api.il-central-1.amazonaws.com +execute-api.me-central-1.amazonaws.com +execute-api.me-south-1.amazonaws.com +execute-api.sa-east-1.amazonaws.com +execute-api.us-east-1.amazonaws.com +execute-api.us-east-2.amazonaws.com +execute-api.us-gov-east-1.amazonaws.com +execute-api.us-gov-west-1.amazonaws.com +execute-api.us-west-1.amazonaws.com +execute-api.us-west-2.amazonaws.com + +// Amazon CloudFront +// Submitted by Donavan Miller +// Reference: 54144616-fd49-4435-8535-19c6a601bdb3 +cloudfront.net + +// Amazon Cognito +// Submitted by AWS Security +// Reference: d7d4a954-976e-403e-a010-de9ed0cfbbd1 +auth.af-south-1.amazoncognito.com +auth.ap-east-1.amazoncognito.com +auth.ap-northeast-1.amazoncognito.com +auth.ap-northeast-2.amazoncognito.com +auth.ap-northeast-3.amazoncognito.com +auth.ap-south-1.amazoncognito.com +auth.ap-south-2.amazoncognito.com +auth.ap-southeast-1.amazoncognito.com +auth.ap-southeast-2.amazoncognito.com +auth.ap-southeast-3.amazoncognito.com +auth.ap-southeast-4.amazoncognito.com +auth.ap-southeast-5.amazoncognito.com +auth.ap-southeast-7.amazoncognito.com +auth.ca-central-1.amazoncognito.com +auth.ca-west-1.amazoncognito.com +auth.eu-central-1.amazoncognito.com +auth.eu-central-2.amazoncognito.com +auth.eu-north-1.amazoncognito.com +auth.eu-south-1.amazoncognito.com +auth.eu-south-2.amazoncognito.com +auth.eu-west-1.amazoncognito.com +auth.eu-west-2.amazoncognito.com +auth.eu-west-3.amazoncognito.com +auth.il-central-1.amazoncognito.com +auth.me-central-1.amazoncognito.com +auth.me-south-1.amazoncognito.com +auth.mx-central-1.amazoncognito.com +auth.sa-east-1.amazoncognito.com +auth.us-east-1.amazoncognito.com +auth-fips.us-east-1.amazoncognito.com +auth.us-east-2.amazoncognito.com +auth-fips.us-east-2.amazoncognito.com +auth-fips.us-gov-east-1.amazoncognito.com +auth-fips.us-gov-west-1.amazoncognito.com +auth.us-west-1.amazoncognito.com +auth-fips.us-west-1.amazoncognito.com +auth.us-west-2.amazoncognito.com +auth-fips.us-west-2.amazoncognito.com +auth.cognito-idp.eusc-de-east-1.on.amazonwebservices.eu + +// Amazon EC2 +// Submitted by Luke Wells +// Reference: 4c38fa71-58ac-4768-99e5-689c1767e537 +*.compute.amazonaws.com.cn +*.compute.amazonaws.com +*.compute-1.amazonaws.com +us-east-1.amazonaws.com + +// Amazon EMR +// Submitted by AWS Security +// Reference: 82f43f9f-bbb8-400e-8349-854f5a62f20d +emrappui-prod.cn-north-1.amazonaws.com.cn +emrnotebooks-prod.cn-north-1.amazonaws.com.cn +emrstudio-prod.cn-north-1.amazonaws.com.cn +emrappui-prod.cn-northwest-1.amazonaws.com.cn +emrnotebooks-prod.cn-northwest-1.amazonaws.com.cn +emrstudio-prod.cn-northwest-1.amazonaws.com.cn +emrappui-prod.af-south-1.amazonaws.com +emrnotebooks-prod.af-south-1.amazonaws.com +emrstudio-prod.af-south-1.amazonaws.com +emrappui-prod.ap-east-1.amazonaws.com +emrnotebooks-prod.ap-east-1.amazonaws.com +emrstudio-prod.ap-east-1.amazonaws.com +emrappui-prod.ap-northeast-1.amazonaws.com +emrnotebooks-prod.ap-northeast-1.amazonaws.com +emrstudio-prod.ap-northeast-1.amazonaws.com +emrappui-prod.ap-northeast-2.amazonaws.com +emrnotebooks-prod.ap-northeast-2.amazonaws.com +emrstudio-prod.ap-northeast-2.amazonaws.com +emrappui-prod.ap-northeast-3.amazonaws.com +emrnotebooks-prod.ap-northeast-3.amazonaws.com +emrstudio-prod.ap-northeast-3.amazonaws.com +emrappui-prod.ap-south-1.amazonaws.com +emrnotebooks-prod.ap-south-1.amazonaws.com +emrstudio-prod.ap-south-1.amazonaws.com +emrappui-prod.ap-south-2.amazonaws.com +emrnotebooks-prod.ap-south-2.amazonaws.com +emrstudio-prod.ap-south-2.amazonaws.com +emrappui-prod.ap-southeast-1.amazonaws.com +emrnotebooks-prod.ap-southeast-1.amazonaws.com +emrstudio-prod.ap-southeast-1.amazonaws.com +emrappui-prod.ap-southeast-2.amazonaws.com +emrnotebooks-prod.ap-southeast-2.amazonaws.com +emrstudio-prod.ap-southeast-2.amazonaws.com +emrappui-prod.ap-southeast-3.amazonaws.com +emrnotebooks-prod.ap-southeast-3.amazonaws.com +emrstudio-prod.ap-southeast-3.amazonaws.com +emrappui-prod.ap-southeast-4.amazonaws.com +emrnotebooks-prod.ap-southeast-4.amazonaws.com +emrstudio-prod.ap-southeast-4.amazonaws.com +emrappui-prod.ca-central-1.amazonaws.com +emrnotebooks-prod.ca-central-1.amazonaws.com +emrstudio-prod.ca-central-1.amazonaws.com +emrappui-prod.ca-west-1.amazonaws.com +emrnotebooks-prod.ca-west-1.amazonaws.com +emrstudio-prod.ca-west-1.amazonaws.com +emrappui-prod.eu-central-1.amazonaws.com +emrnotebooks-prod.eu-central-1.amazonaws.com +emrstudio-prod.eu-central-1.amazonaws.com +emrappui-prod.eu-central-2.amazonaws.com +emrnotebooks-prod.eu-central-2.amazonaws.com +emrstudio-prod.eu-central-2.amazonaws.com +emrappui-prod.eu-north-1.amazonaws.com +emrnotebooks-prod.eu-north-1.amazonaws.com +emrstudio-prod.eu-north-1.amazonaws.com +emrappui-prod.eu-south-1.amazonaws.com +emrnotebooks-prod.eu-south-1.amazonaws.com +emrstudio-prod.eu-south-1.amazonaws.com +emrappui-prod.eu-south-2.amazonaws.com +emrnotebooks-prod.eu-south-2.amazonaws.com +emrstudio-prod.eu-south-2.amazonaws.com +emrappui-prod.eu-west-1.amazonaws.com +emrnotebooks-prod.eu-west-1.amazonaws.com +emrstudio-prod.eu-west-1.amazonaws.com +emrappui-prod.eu-west-2.amazonaws.com +emrnotebooks-prod.eu-west-2.amazonaws.com +emrstudio-prod.eu-west-2.amazonaws.com +emrappui-prod.eu-west-3.amazonaws.com +emrnotebooks-prod.eu-west-3.amazonaws.com +emrstudio-prod.eu-west-3.amazonaws.com +emrappui-prod.il-central-1.amazonaws.com +emrnotebooks-prod.il-central-1.amazonaws.com +emrstudio-prod.il-central-1.amazonaws.com +emrappui-prod.me-central-1.amazonaws.com +emrnotebooks-prod.me-central-1.amazonaws.com +emrstudio-prod.me-central-1.amazonaws.com +emrappui-prod.me-south-1.amazonaws.com +emrnotebooks-prod.me-south-1.amazonaws.com +emrstudio-prod.me-south-1.amazonaws.com +emrappui-prod.sa-east-1.amazonaws.com +emrnotebooks-prod.sa-east-1.amazonaws.com +emrstudio-prod.sa-east-1.amazonaws.com +emrappui-prod.us-east-1.amazonaws.com +emrnotebooks-prod.us-east-1.amazonaws.com +emrstudio-prod.us-east-1.amazonaws.com +emrappui-prod.us-east-2.amazonaws.com +emrnotebooks-prod.us-east-2.amazonaws.com +emrstudio-prod.us-east-2.amazonaws.com +emrappui-prod.us-gov-east-1.amazonaws.com +emrnotebooks-prod.us-gov-east-1.amazonaws.com +emrstudio-prod.us-gov-east-1.amazonaws.com +emrappui-prod.us-gov-west-1.amazonaws.com +emrnotebooks-prod.us-gov-west-1.amazonaws.com +emrstudio-prod.us-gov-west-1.amazonaws.com +emrappui-prod.us-west-1.amazonaws.com +emrnotebooks-prod.us-west-1.amazonaws.com +emrstudio-prod.us-west-1.amazonaws.com +emrappui-prod.us-west-2.amazonaws.com +emrnotebooks-prod.us-west-2.amazonaws.com +emrstudio-prod.us-west-2.amazonaws.com + +// Amazon Managed Workflows for Apache Airflow +// Submitted by AWS Security +// Reference: bfd043cc-2816-451d-894e-612c6b61a438 +*.airflow.af-south-1.on.aws +*.airflow.ap-east-1.on.aws +*.airflow.ap-northeast-1.on.aws +*.airflow.ap-northeast-2.on.aws +*.airflow.ap-northeast-3.on.aws +*.airflow.ap-south-1.on.aws +*.airflow.ap-south-2.on.aws +*.airflow.ap-southeast-1.on.aws +*.airflow.ap-southeast-2.on.aws +*.airflow.ap-southeast-3.on.aws +*.airflow.ap-southeast-4.on.aws +*.airflow.ap-southeast-5.on.aws +*.airflow.ca-central-1.on.aws +*.airflow.ca-west-1.on.aws +*.airflow.eu-central-1.on.aws +*.airflow.eu-central-2.on.aws +*.airflow.eu-north-1.on.aws +*.airflow.eu-south-1.on.aws +*.airflow.eu-south-2.on.aws +*.airflow.eu-west-1.on.aws +*.airflow.eu-west-2.on.aws +*.airflow.eu-west-3.on.aws +*.airflow.il-central-1.on.aws +*.airflow.me-central-1.on.aws +*.airflow.me-south-1.on.aws +*.airflow.sa-east-1.on.aws +*.airflow.us-east-1.on.aws +*.airflow.us-east-2.on.aws +*.airflow.us-west-1.on.aws +*.airflow.us-west-2.on.aws +*.cn-north-1.airflow.amazonaws.com.cn +*.cn-northwest-1.airflow.amazonaws.com.cn +*.airflow.cn-north-1.on.amazonwebservices.com.cn +*.airflow.cn-northwest-1.on.amazonwebservices.com.cn +*.af-south-1.airflow.amazonaws.com +*.ap-east-1.airflow.amazonaws.com +*.ap-northeast-1.airflow.amazonaws.com +*.ap-northeast-2.airflow.amazonaws.com +*.ap-northeast-3.airflow.amazonaws.com +*.ap-south-1.airflow.amazonaws.com +*.ap-south-2.airflow.amazonaws.com +*.ap-southeast-1.airflow.amazonaws.com +*.ap-southeast-2.airflow.amazonaws.com +*.ap-southeast-3.airflow.amazonaws.com +*.ap-southeast-4.airflow.amazonaws.com +*.ap-southeast-5.airflow.amazonaws.com +*.ap-southeast-7.airflow.amazonaws.com +*.ca-central-1.airflow.amazonaws.com +*.ca-west-1.airflow.amazonaws.com +*.eu-central-1.airflow.amazonaws.com +*.eu-central-2.airflow.amazonaws.com +*.eu-north-1.airflow.amazonaws.com +*.eu-south-1.airflow.amazonaws.com +*.eu-south-2.airflow.amazonaws.com +*.eu-west-1.airflow.amazonaws.com +*.eu-west-2.airflow.amazonaws.com +*.eu-west-3.airflow.amazonaws.com +*.il-central-1.airflow.amazonaws.com +*.me-central-1.airflow.amazonaws.com +*.me-south-1.airflow.amazonaws.com +*.sa-east-1.airflow.amazonaws.com +*.us-east-1.airflow.amazonaws.com +*.us-east-2.airflow.amazonaws.com +*.us-west-1.airflow.amazonaws.com +*.us-west-2.airflow.amazonaws.com + +// Amazon Relational Database Service +// Submitted by: AWS Security +// Reference: 5aa87906-fd4f-4831-8727-4ffca6094159 +*.rds.cn-north-1.amazonaws.com.cn +*.rds.cn-northwest-1.amazonaws.com.cn +*.af-south-1.rds.amazonaws.com +*.ap-east-1.rds.amazonaws.com +*.ap-east-2.rds.amazonaws.com +*.ap-northeast-1.rds.amazonaws.com +*.ap-northeast-2.rds.amazonaws.com +*.ap-northeast-3.rds.amazonaws.com +*.ap-south-1.rds.amazonaws.com +*.ap-south-2.rds.amazonaws.com +*.ap-southeast-1.rds.amazonaws.com +*.ap-southeast-2.rds.amazonaws.com +*.ap-southeast-3.rds.amazonaws.com +*.ap-southeast-4.rds.amazonaws.com +*.ap-southeast-5.rds.amazonaws.com +*.ap-southeast-6.rds.amazonaws.com +*.ap-southeast-7.rds.amazonaws.com +*.ca-central-1.rds.amazonaws.com +*.ca-west-1.rds.amazonaws.com +*.eu-central-1.rds.amazonaws.com +*.eu-central-2.rds.amazonaws.com +*.eu-west-1.rds.amazonaws.com +*.eu-west-2.rds.amazonaws.com +*.eu-west-3.rds.amazonaws.com +*.il-central-1.rds.amazonaws.com +*.me-central-1.rds.amazonaws.com +*.me-south-1.rds.amazonaws.com +*.mx-central-1.rds.amazonaws.com +*.sa-east-1.rds.amazonaws.com +*.us-east-1.rds.amazonaws.com +*.us-east-2.rds.amazonaws.com +*.us-gov-east-1.rds.amazonaws.com +*.us-gov-west-1.rds.amazonaws.com +*.us-northeast-1.rds.amazonaws.com +*.us-west-1.rds.amazonaws.com +*.us-west-2.rds.amazonaws.com + +// Amazon S3 +// Submitted by AWS Security +// Reference: 6f374c1c-1cc9-47de-8b2a-69ca56a3a3b6 +s3.dualstack.cn-north-1.amazonaws.com.cn +s3-accesspoint.dualstack.cn-north-1.amazonaws.com.cn +s3-website.dualstack.cn-north-1.amazonaws.com.cn +s3.cn-north-1.amazonaws.com.cn +s3-accesspoint.cn-north-1.amazonaws.com.cn +s3-deprecated.cn-north-1.amazonaws.com.cn +s3-object-lambda.cn-north-1.amazonaws.com.cn +s3-website.cn-north-1.amazonaws.com.cn +s3.dualstack.cn-northwest-1.amazonaws.com.cn +s3-accesspoint.dualstack.cn-northwest-1.amazonaws.com.cn +s3.cn-northwest-1.amazonaws.com.cn +s3-accesspoint.cn-northwest-1.amazonaws.com.cn +s3-object-lambda.cn-northwest-1.amazonaws.com.cn +s3-website.cn-northwest-1.amazonaws.com.cn +s3.dualstack.af-south-1.amazonaws.com +s3-accesspoint.dualstack.af-south-1.amazonaws.com +s3-website.dualstack.af-south-1.amazonaws.com +s3.af-south-1.amazonaws.com +s3-accesspoint.af-south-1.amazonaws.com +s3-object-lambda.af-south-1.amazonaws.com +s3-website.af-south-1.amazonaws.com +s3.dualstack.ap-east-1.amazonaws.com +s3-accesspoint.dualstack.ap-east-1.amazonaws.com +s3.ap-east-1.amazonaws.com +s3-accesspoint.ap-east-1.amazonaws.com +s3-object-lambda.ap-east-1.amazonaws.com +s3-website.ap-east-1.amazonaws.com +s3.dualstack.ap-northeast-1.amazonaws.com +s3-accesspoint.dualstack.ap-northeast-1.amazonaws.com +s3-website.dualstack.ap-northeast-1.amazonaws.com +s3.ap-northeast-1.amazonaws.com +s3-accesspoint.ap-northeast-1.amazonaws.com +s3-object-lambda.ap-northeast-1.amazonaws.com +s3-website.ap-northeast-1.amazonaws.com +s3.dualstack.ap-northeast-2.amazonaws.com +s3-accesspoint.dualstack.ap-northeast-2.amazonaws.com +s3-website.dualstack.ap-northeast-2.amazonaws.com +s3.ap-northeast-2.amazonaws.com +s3-accesspoint.ap-northeast-2.amazonaws.com +s3-object-lambda.ap-northeast-2.amazonaws.com +s3-website.ap-northeast-2.amazonaws.com +s3.dualstack.ap-northeast-3.amazonaws.com +s3-accesspoint.dualstack.ap-northeast-3.amazonaws.com +s3-website.dualstack.ap-northeast-3.amazonaws.com +s3.ap-northeast-3.amazonaws.com +s3-accesspoint.ap-northeast-3.amazonaws.com +s3-object-lambda.ap-northeast-3.amazonaws.com +s3-website.ap-northeast-3.amazonaws.com +s3.dualstack.ap-south-1.amazonaws.com +s3-accesspoint.dualstack.ap-south-1.amazonaws.com +s3-website.dualstack.ap-south-1.amazonaws.com +s3.ap-south-1.amazonaws.com +s3-accesspoint.ap-south-1.amazonaws.com +s3-object-lambda.ap-south-1.amazonaws.com +s3-website.ap-south-1.amazonaws.com +s3.dualstack.ap-south-2.amazonaws.com +s3-accesspoint.dualstack.ap-south-2.amazonaws.com +s3-website.dualstack.ap-south-2.amazonaws.com +s3.ap-south-2.amazonaws.com +s3-accesspoint.ap-south-2.amazonaws.com +s3-object-lambda.ap-south-2.amazonaws.com +s3-website.ap-south-2.amazonaws.com +s3.dualstack.ap-southeast-1.amazonaws.com +s3-accesspoint.dualstack.ap-southeast-1.amazonaws.com +s3-website.dualstack.ap-southeast-1.amazonaws.com +s3.ap-southeast-1.amazonaws.com +s3-accesspoint.ap-southeast-1.amazonaws.com +s3-object-lambda.ap-southeast-1.amazonaws.com +s3-website.ap-southeast-1.amazonaws.com +s3.dualstack.ap-southeast-2.amazonaws.com +s3-accesspoint.dualstack.ap-southeast-2.amazonaws.com +s3-website.dualstack.ap-southeast-2.amazonaws.com +s3.ap-southeast-2.amazonaws.com +s3-accesspoint.ap-southeast-2.amazonaws.com +s3-object-lambda.ap-southeast-2.amazonaws.com +s3-website.ap-southeast-2.amazonaws.com +s3.dualstack.ap-southeast-3.amazonaws.com +s3-accesspoint.dualstack.ap-southeast-3.amazonaws.com +s3-website.dualstack.ap-southeast-3.amazonaws.com +s3.ap-southeast-3.amazonaws.com +s3-accesspoint.ap-southeast-3.amazonaws.com +s3-object-lambda.ap-southeast-3.amazonaws.com +s3-website.ap-southeast-3.amazonaws.com +s3.dualstack.ap-southeast-4.amazonaws.com +s3-accesspoint.dualstack.ap-southeast-4.amazonaws.com +s3-website.dualstack.ap-southeast-4.amazonaws.com +s3.ap-southeast-4.amazonaws.com +s3-accesspoint.ap-southeast-4.amazonaws.com +s3-object-lambda.ap-southeast-4.amazonaws.com +s3-website.ap-southeast-4.amazonaws.com +s3.dualstack.ap-southeast-5.amazonaws.com +s3-accesspoint.dualstack.ap-southeast-5.amazonaws.com +s3-website.dualstack.ap-southeast-5.amazonaws.com +s3.ap-southeast-5.amazonaws.com +s3-accesspoint.ap-southeast-5.amazonaws.com +s3-deprecated.ap-southeast-5.amazonaws.com +s3-object-lambda.ap-southeast-5.amazonaws.com +s3-website.ap-southeast-5.amazonaws.com +s3.dualstack.ca-central-1.amazonaws.com +s3-accesspoint.dualstack.ca-central-1.amazonaws.com +s3-accesspoint-fips.dualstack.ca-central-1.amazonaws.com +s3-fips.dualstack.ca-central-1.amazonaws.com +s3-website.dualstack.ca-central-1.amazonaws.com +s3.ca-central-1.amazonaws.com +s3-accesspoint.ca-central-1.amazonaws.com +s3-accesspoint-fips.ca-central-1.amazonaws.com +s3-fips.ca-central-1.amazonaws.com +s3-object-lambda.ca-central-1.amazonaws.com +s3-website.ca-central-1.amazonaws.com +s3.dualstack.ca-west-1.amazonaws.com +s3-accesspoint.dualstack.ca-west-1.amazonaws.com +s3-accesspoint-fips.dualstack.ca-west-1.amazonaws.com +s3-fips.dualstack.ca-west-1.amazonaws.com +s3-website.dualstack.ca-west-1.amazonaws.com +s3.ca-west-1.amazonaws.com +s3-accesspoint.ca-west-1.amazonaws.com +s3-accesspoint-fips.ca-west-1.amazonaws.com +s3-fips.ca-west-1.amazonaws.com +s3-object-lambda.ca-west-1.amazonaws.com +s3-website.ca-west-1.amazonaws.com +s3.dualstack.eu-central-1.amazonaws.com +s3-accesspoint.dualstack.eu-central-1.amazonaws.com +s3-website.dualstack.eu-central-1.amazonaws.com +s3.eu-central-1.amazonaws.com +s3-accesspoint.eu-central-1.amazonaws.com +s3-object-lambda.eu-central-1.amazonaws.com +s3-website.eu-central-1.amazonaws.com +s3.dualstack.eu-central-2.amazonaws.com +s3-accesspoint.dualstack.eu-central-2.amazonaws.com +s3-website.dualstack.eu-central-2.amazonaws.com +s3.eu-central-2.amazonaws.com +s3-accesspoint.eu-central-2.amazonaws.com +s3-object-lambda.eu-central-2.amazonaws.com +s3-website.eu-central-2.amazonaws.com +s3.dualstack.eu-north-1.amazonaws.com +s3-accesspoint.dualstack.eu-north-1.amazonaws.com +s3.eu-north-1.amazonaws.com +s3-accesspoint.eu-north-1.amazonaws.com +s3-object-lambda.eu-north-1.amazonaws.com +s3-website.eu-north-1.amazonaws.com +s3.dualstack.eu-south-1.amazonaws.com +s3-accesspoint.dualstack.eu-south-1.amazonaws.com +s3-website.dualstack.eu-south-1.amazonaws.com +s3.eu-south-1.amazonaws.com +s3-accesspoint.eu-south-1.amazonaws.com +s3-object-lambda.eu-south-1.amazonaws.com +s3-website.eu-south-1.amazonaws.com +s3.dualstack.eu-south-2.amazonaws.com +s3-accesspoint.dualstack.eu-south-2.amazonaws.com +s3-website.dualstack.eu-south-2.amazonaws.com +s3.eu-south-2.amazonaws.com +s3-accesspoint.eu-south-2.amazonaws.com +s3-object-lambda.eu-south-2.amazonaws.com +s3-website.eu-south-2.amazonaws.com +s3.dualstack.eu-west-1.amazonaws.com +s3-accesspoint.dualstack.eu-west-1.amazonaws.com +s3-website.dualstack.eu-west-1.amazonaws.com +s3.eu-west-1.amazonaws.com +s3-accesspoint.eu-west-1.amazonaws.com +s3-deprecated.eu-west-1.amazonaws.com +s3-object-lambda.eu-west-1.amazonaws.com +s3-website.eu-west-1.amazonaws.com +s3.dualstack.eu-west-2.amazonaws.com +s3-accesspoint.dualstack.eu-west-2.amazonaws.com +s3.eu-west-2.amazonaws.com +s3-accesspoint.eu-west-2.amazonaws.com +s3-object-lambda.eu-west-2.amazonaws.com +s3-website.eu-west-2.amazonaws.com +s3.dualstack.eu-west-3.amazonaws.com +s3-accesspoint.dualstack.eu-west-3.amazonaws.com +s3-website.dualstack.eu-west-3.amazonaws.com +s3.eu-west-3.amazonaws.com +s3-accesspoint.eu-west-3.amazonaws.com +s3-object-lambda.eu-west-3.amazonaws.com +s3-website.eu-west-3.amazonaws.com +s3.dualstack.il-central-1.amazonaws.com +s3-accesspoint.dualstack.il-central-1.amazonaws.com +s3-website.dualstack.il-central-1.amazonaws.com +s3.il-central-1.amazonaws.com +s3-accesspoint.il-central-1.amazonaws.com +s3-object-lambda.il-central-1.amazonaws.com +s3-website.il-central-1.amazonaws.com +s3.dualstack.me-central-1.amazonaws.com +s3-accesspoint.dualstack.me-central-1.amazonaws.com +s3-website.dualstack.me-central-1.amazonaws.com +s3.me-central-1.amazonaws.com +s3-accesspoint.me-central-1.amazonaws.com +s3-object-lambda.me-central-1.amazonaws.com +s3-website.me-central-1.amazonaws.com +s3.dualstack.me-south-1.amazonaws.com +s3-accesspoint.dualstack.me-south-1.amazonaws.com +s3.me-south-1.amazonaws.com +s3-accesspoint.me-south-1.amazonaws.com +s3-object-lambda.me-south-1.amazonaws.com +s3-website.me-south-1.amazonaws.com +s3.amazonaws.com +s3-1.amazonaws.com +s3-ap-east-1.amazonaws.com +s3-ap-northeast-1.amazonaws.com +s3-ap-northeast-2.amazonaws.com +s3-ap-northeast-3.amazonaws.com +s3-ap-south-1.amazonaws.com +s3-ap-southeast-1.amazonaws.com +s3-ap-southeast-2.amazonaws.com +s3-ca-central-1.amazonaws.com +s3-eu-central-1.amazonaws.com +s3-eu-north-1.amazonaws.com +s3-eu-west-1.amazonaws.com +s3-eu-west-2.amazonaws.com +s3-eu-west-3.amazonaws.com +s3-external-1.amazonaws.com +s3-fips-us-gov-east-1.amazonaws.com +s3-fips-us-gov-west-1.amazonaws.com +mrap.accesspoint.s3-global.amazonaws.com +s3-me-south-1.amazonaws.com +s3-sa-east-1.amazonaws.com +s3-us-east-2.amazonaws.com +s3-us-gov-east-1.amazonaws.com +s3-us-gov-west-1.amazonaws.com +s3-us-west-1.amazonaws.com +s3-us-west-2.amazonaws.com +s3-website-ap-northeast-1.amazonaws.com +s3-website-ap-southeast-1.amazonaws.com +s3-website-ap-southeast-2.amazonaws.com +s3-website-eu-west-1.amazonaws.com +s3-website-sa-east-1.amazonaws.com +s3-website-us-east-1.amazonaws.com +s3-website-us-gov-west-1.amazonaws.com +s3-website-us-west-1.amazonaws.com +s3-website-us-west-2.amazonaws.com +s3.dualstack.sa-east-1.amazonaws.com +s3-accesspoint.dualstack.sa-east-1.amazonaws.com +s3-website.dualstack.sa-east-1.amazonaws.com +s3.sa-east-1.amazonaws.com +s3-accesspoint.sa-east-1.amazonaws.com +s3-object-lambda.sa-east-1.amazonaws.com +s3-website.sa-east-1.amazonaws.com +s3.dualstack.us-east-1.amazonaws.com +s3-accesspoint.dualstack.us-east-1.amazonaws.com +s3-accesspoint-fips.dualstack.us-east-1.amazonaws.com +s3-fips.dualstack.us-east-1.amazonaws.com +s3-website.dualstack.us-east-1.amazonaws.com +s3.us-east-1.amazonaws.com +s3-accesspoint.us-east-1.amazonaws.com +s3-accesspoint-fips.us-east-1.amazonaws.com +s3-deprecated.us-east-1.amazonaws.com +s3-fips.us-east-1.amazonaws.com +s3-object-lambda.us-east-1.amazonaws.com +s3-website.us-east-1.amazonaws.com +s3.dualstack.us-east-2.amazonaws.com +s3-accesspoint.dualstack.us-east-2.amazonaws.com +s3-accesspoint-fips.dualstack.us-east-2.amazonaws.com +s3-fips.dualstack.us-east-2.amazonaws.com +s3-website.dualstack.us-east-2.amazonaws.com +s3.us-east-2.amazonaws.com +s3-accesspoint.us-east-2.amazonaws.com +s3-accesspoint-fips.us-east-2.amazonaws.com +s3-deprecated.us-east-2.amazonaws.com +s3-fips.us-east-2.amazonaws.com +s3-object-lambda.us-east-2.amazonaws.com +s3-website.us-east-2.amazonaws.com +s3.dualstack.us-gov-east-1.amazonaws.com +s3-accesspoint.dualstack.us-gov-east-1.amazonaws.com +s3-accesspoint-fips.dualstack.us-gov-east-1.amazonaws.com +s3-fips.dualstack.us-gov-east-1.amazonaws.com +s3-website.dualstack.us-gov-east-1.amazonaws.com +s3.us-gov-east-1.amazonaws.com +s3-accesspoint.us-gov-east-1.amazonaws.com +s3-accesspoint-fips.us-gov-east-1.amazonaws.com +s3-fips.us-gov-east-1.amazonaws.com +s3-object-lambda.us-gov-east-1.amazonaws.com +s3-website.us-gov-east-1.amazonaws.com +s3.dualstack.us-gov-west-1.amazonaws.com +s3-accesspoint.dualstack.us-gov-west-1.amazonaws.com +s3-accesspoint-fips.dualstack.us-gov-west-1.amazonaws.com +s3-fips.dualstack.us-gov-west-1.amazonaws.com +s3-website.dualstack.us-gov-west-1.amazonaws.com +s3.us-gov-west-1.amazonaws.com +s3-accesspoint.us-gov-west-1.amazonaws.com +s3-accesspoint-fips.us-gov-west-1.amazonaws.com +s3-fips.us-gov-west-1.amazonaws.com +s3-object-lambda.us-gov-west-1.amazonaws.com +s3-website.us-gov-west-1.amazonaws.com +s3.dualstack.us-west-1.amazonaws.com +s3-accesspoint.dualstack.us-west-1.amazonaws.com +s3-accesspoint-fips.dualstack.us-west-1.amazonaws.com +s3-fips.dualstack.us-west-1.amazonaws.com +s3-website.dualstack.us-west-1.amazonaws.com +s3.us-west-1.amazonaws.com +s3-accesspoint.us-west-1.amazonaws.com +s3-accesspoint-fips.us-west-1.amazonaws.com +s3-fips.us-west-1.amazonaws.com +s3-object-lambda.us-west-1.amazonaws.com +s3-website.us-west-1.amazonaws.com +s3.dualstack.us-west-2.amazonaws.com +s3-accesspoint.dualstack.us-west-2.amazonaws.com +s3-accesspoint-fips.dualstack.us-west-2.amazonaws.com +s3-fips.dualstack.us-west-2.amazonaws.com +s3-website.dualstack.us-west-2.amazonaws.com +s3.us-west-2.amazonaws.com +s3-accesspoint.us-west-2.amazonaws.com +s3-accesspoint-fips.us-west-2.amazonaws.com +s3-deprecated.us-west-2.amazonaws.com +s3-fips.us-west-2.amazonaws.com +s3-object-lambda.us-west-2.amazonaws.com +s3-website.us-west-2.amazonaws.com + +// Amazon SageMaker Ground Truth +// Submitted by AWS Security +// Reference: 98dbfde4-7802-48c3-8751-b60f204e0d9c +labeling.ap-northeast-1.sagemaker.aws +labeling.ap-northeast-2.sagemaker.aws +labeling.ap-south-1.sagemaker.aws +labeling.ap-southeast-1.sagemaker.aws +labeling.ap-southeast-2.sagemaker.aws +labeling.ca-central-1.sagemaker.aws +labeling.eu-central-1.sagemaker.aws +labeling.eu-west-1.sagemaker.aws +labeling.eu-west-2.sagemaker.aws +labeling.us-east-1.sagemaker.aws +labeling.us-east-2.sagemaker.aws +labeling.us-west-2.sagemaker.aws + +// Amazon SageMaker Notebook Instances +// Submitted by AWS Security +// Reference: b5ea56df-669e-43cc-9537-14aa172f5dfc +notebook.af-south-1.sagemaker.aws +notebook.ap-east-1.sagemaker.aws +notebook.ap-northeast-1.sagemaker.aws +notebook.ap-northeast-2.sagemaker.aws +notebook.ap-northeast-3.sagemaker.aws +notebook.ap-south-1.sagemaker.aws +notebook.ap-south-2.sagemaker.aws +notebook.ap-southeast-1.sagemaker.aws +notebook.ap-southeast-2.sagemaker.aws +notebook.ap-southeast-3.sagemaker.aws +notebook.ap-southeast-4.sagemaker.aws +notebook.ca-central-1.sagemaker.aws +notebook-fips.ca-central-1.sagemaker.aws +notebook.ca-west-1.sagemaker.aws +notebook-fips.ca-west-1.sagemaker.aws +notebook.eu-central-1.sagemaker.aws +notebook.eu-central-2.sagemaker.aws +notebook.eu-north-1.sagemaker.aws +notebook.eu-south-1.sagemaker.aws +notebook.eu-south-2.sagemaker.aws +notebook.eu-west-1.sagemaker.aws +notebook.eu-west-2.sagemaker.aws +notebook.eu-west-3.sagemaker.aws +notebook.il-central-1.sagemaker.aws +notebook.me-central-1.sagemaker.aws +notebook.me-south-1.sagemaker.aws +notebook.sa-east-1.sagemaker.aws +notebook.us-east-1.sagemaker.aws +notebook-fips.us-east-1.sagemaker.aws +notebook.us-east-2.sagemaker.aws +notebook-fips.us-east-2.sagemaker.aws +notebook.us-gov-east-1.sagemaker.aws +notebook-fips.us-gov-east-1.sagemaker.aws +notebook.us-gov-west-1.sagemaker.aws +notebook-fips.us-gov-west-1.sagemaker.aws +notebook.us-west-1.sagemaker.aws +notebook-fips.us-west-1.sagemaker.aws +notebook.us-west-2.sagemaker.aws +notebook-fips.us-west-2.sagemaker.aws +notebook.cn-north-1.sagemaker.com.cn +notebook.cn-northwest-1.sagemaker.com.cn + +// Amazon SageMaker Studio +// Submitted by AWS Security +// Reference: 475f237e-ab88-4041-9f41-7cfccdf66aeb +studio.af-south-1.sagemaker.aws +studio.ap-east-1.sagemaker.aws +studio.ap-northeast-1.sagemaker.aws +studio.ap-northeast-2.sagemaker.aws +studio.ap-northeast-3.sagemaker.aws +studio.ap-south-1.sagemaker.aws +studio.ap-southeast-1.sagemaker.aws +studio.ap-southeast-2.sagemaker.aws +studio.ap-southeast-3.sagemaker.aws +studio.ca-central-1.sagemaker.aws +studio.eu-central-1.sagemaker.aws +studio.eu-central-2.sagemaker.aws +studio.eu-north-1.sagemaker.aws +studio.eu-south-1.sagemaker.aws +studio.eu-south-2.sagemaker.aws +studio.eu-west-1.sagemaker.aws +studio.eu-west-2.sagemaker.aws +studio.eu-west-3.sagemaker.aws +studio.il-central-1.sagemaker.aws +studio.me-central-1.sagemaker.aws +studio.me-south-1.sagemaker.aws +studio.sa-east-1.sagemaker.aws +studio.us-east-1.sagemaker.aws +studio.us-east-2.sagemaker.aws +studio.us-gov-east-1.sagemaker.aws +studio-fips.us-gov-east-1.sagemaker.aws +studio.us-gov-west-1.sagemaker.aws +studio-fips.us-gov-west-1.sagemaker.aws +studio.us-west-1.sagemaker.aws +studio.us-west-2.sagemaker.aws +studio.cn-north-1.sagemaker.com.cn +studio.cn-northwest-1.sagemaker.com.cn + +// Amazon SageMaker with MLflow +// Submited by: AWS Security +// Reference: c19f92b3-a82a-452d-8189-831b572eea7e +*.experiments.sagemaker.aws + +// Analytics on AWS +// Submitted by AWS Security +// Reference: 955f9f40-a495-4e73-ae85-67b77ac9cadd +analytics-gateway.ap-northeast-1.amazonaws.com +analytics-gateway.ap-northeast-2.amazonaws.com +analytics-gateway.ap-south-1.amazonaws.com +analytics-gateway.ap-southeast-1.amazonaws.com +analytics-gateway.ap-southeast-2.amazonaws.com +analytics-gateway.eu-central-1.amazonaws.com +analytics-gateway.eu-west-1.amazonaws.com +analytics-gateway.us-east-1.amazonaws.com +analytics-gateway.us-east-2.amazonaws.com +analytics-gateway.us-west-2.amazonaws.com + +// AWS Amplify +// Submitted by AWS Security +// Reference: c35bed18-6f4f-424f-9298-5756f2f7d72b +amplifyapp.com + +// AWS App Runner +// Submitted by AWS Security +// Reference: 6828c008-ba5d-442f-ade5-48da4e7c2316 +*.awsapprunner.com + +// AWS Cloud9 +// Submitted by: AWS Security +// Reference: 30717f72-4007-4f0f-8ed4-864c6f2efec9 +webview-assets.aws-cloud9.af-south-1.amazonaws.com +vfs.cloud9.af-south-1.amazonaws.com +webview-assets.cloud9.af-south-1.amazonaws.com +webview-assets.aws-cloud9.ap-east-1.amazonaws.com +vfs.cloud9.ap-east-1.amazonaws.com +webview-assets.cloud9.ap-east-1.amazonaws.com +webview-assets.aws-cloud9.ap-northeast-1.amazonaws.com +vfs.cloud9.ap-northeast-1.amazonaws.com +webview-assets.cloud9.ap-northeast-1.amazonaws.com +webview-assets.aws-cloud9.ap-northeast-2.amazonaws.com +vfs.cloud9.ap-northeast-2.amazonaws.com +webview-assets.cloud9.ap-northeast-2.amazonaws.com +webview-assets.aws-cloud9.ap-northeast-3.amazonaws.com +vfs.cloud9.ap-northeast-3.amazonaws.com +webview-assets.cloud9.ap-northeast-3.amazonaws.com +webview-assets.aws-cloud9.ap-south-1.amazonaws.com +vfs.cloud9.ap-south-1.amazonaws.com +webview-assets.cloud9.ap-south-1.amazonaws.com +webview-assets.aws-cloud9.ap-southeast-1.amazonaws.com +vfs.cloud9.ap-southeast-1.amazonaws.com +webview-assets.cloud9.ap-southeast-1.amazonaws.com +webview-assets.aws-cloud9.ap-southeast-2.amazonaws.com +vfs.cloud9.ap-southeast-2.amazonaws.com +webview-assets.cloud9.ap-southeast-2.amazonaws.com +webview-assets.aws-cloud9.ca-central-1.amazonaws.com +vfs.cloud9.ca-central-1.amazonaws.com +webview-assets.cloud9.ca-central-1.amazonaws.com +webview-assets.aws-cloud9.eu-central-1.amazonaws.com +vfs.cloud9.eu-central-1.amazonaws.com +webview-assets.cloud9.eu-central-1.amazonaws.com +webview-assets.aws-cloud9.eu-north-1.amazonaws.com +vfs.cloud9.eu-north-1.amazonaws.com +webview-assets.cloud9.eu-north-1.amazonaws.com +webview-assets.aws-cloud9.eu-south-1.amazonaws.com +vfs.cloud9.eu-south-1.amazonaws.com +webview-assets.cloud9.eu-south-1.amazonaws.com +webview-assets.aws-cloud9.eu-west-1.amazonaws.com +vfs.cloud9.eu-west-1.amazonaws.com +webview-assets.cloud9.eu-west-1.amazonaws.com +webview-assets.aws-cloud9.eu-west-2.amazonaws.com +vfs.cloud9.eu-west-2.amazonaws.com +webview-assets.cloud9.eu-west-2.amazonaws.com +webview-assets.aws-cloud9.eu-west-3.amazonaws.com +vfs.cloud9.eu-west-3.amazonaws.com +webview-assets.cloud9.eu-west-3.amazonaws.com +webview-assets.aws-cloud9.il-central-1.amazonaws.com +vfs.cloud9.il-central-1.amazonaws.com +webview-assets.aws-cloud9.me-south-1.amazonaws.com +vfs.cloud9.me-south-1.amazonaws.com +webview-assets.cloud9.me-south-1.amazonaws.com +webview-assets.aws-cloud9.sa-east-1.amazonaws.com +vfs.cloud9.sa-east-1.amazonaws.com +webview-assets.cloud9.sa-east-1.amazonaws.com +webview-assets.aws-cloud9.us-east-1.amazonaws.com +vfs.cloud9.us-east-1.amazonaws.com +webview-assets.cloud9.us-east-1.amazonaws.com +webview-assets.aws-cloud9.us-east-2.amazonaws.com +vfs.cloud9.us-east-2.amazonaws.com +webview-assets.cloud9.us-east-2.amazonaws.com +webview-assets.aws-cloud9.us-west-1.amazonaws.com +vfs.cloud9.us-west-1.amazonaws.com +webview-assets.cloud9.us-west-1.amazonaws.com +webview-assets.aws-cloud9.us-west-2.amazonaws.com +vfs.cloud9.us-west-2.amazonaws.com +webview-assets.cloud9.us-west-2.amazonaws.com + +// AWS Directory Service +// Submitted by AWS Security +// Reference: a13203e8-42dc-4045-a0d2-2ee67bed1068 +awsapps.com + +// AWS Elastic Beanstalk +// Submitted by AWS Security +// Reference: e4e02a54-eaf9-4fe7-b662-39ccbc011a04 +cn-north-1.eb.amazonaws.com.cn +cn-northwest-1.eb.amazonaws.com.cn +elasticbeanstalk.com +af-south-1.elasticbeanstalk.com +ap-east-1.elasticbeanstalk.com +ap-northeast-1.elasticbeanstalk.com +ap-northeast-2.elasticbeanstalk.com +ap-northeast-3.elasticbeanstalk.com +ap-south-1.elasticbeanstalk.com +ap-southeast-1.elasticbeanstalk.com +ap-southeast-2.elasticbeanstalk.com +ap-southeast-3.elasticbeanstalk.com +ap-southeast-5.elasticbeanstalk.com +ap-southeast-7.elasticbeanstalk.com +ca-central-1.elasticbeanstalk.com +eu-central-1.elasticbeanstalk.com +eu-north-1.elasticbeanstalk.com +eu-south-1.elasticbeanstalk.com +eu-south-2.elasticbeanstalk.com +eu-west-1.elasticbeanstalk.com +eu-west-2.elasticbeanstalk.com +eu-west-3.elasticbeanstalk.com +il-central-1.elasticbeanstalk.com +me-central-1.elasticbeanstalk.com +me-south-1.elasticbeanstalk.com +sa-east-1.elasticbeanstalk.com +us-east-1.elasticbeanstalk.com +us-east-2.elasticbeanstalk.com +us-gov-east-1.elasticbeanstalk.com +us-gov-west-1.elasticbeanstalk.com +us-west-1.elasticbeanstalk.com +us-west-2.elasticbeanstalk.com + +// (AWS) Elastic Load Balancing +// Submitted by Luke Wells +// Reference: 12a3d528-1bac-4433-a359-a395867ffed2 +*.elb.amazonaws.com.cn +*.elb.amazonaws.com + +// AWS Global Accelerator +// Submitted by Daniel Massaguer +// Reference: d916759d-a08b-4241-b536-4db887383a6a +awsglobalaccelerator.com + +// AWS Lambda Function URLs +// Submitted by AWS Security +// Reference: 57df74ca-0820-46a5-89ea-0f0d0c4714b7 +lambda-url.af-south-1.on.aws +lambda-url.ap-east-1.on.aws +lambda-url.ap-northeast-1.on.aws +lambda-url.ap-northeast-2.on.aws +lambda-url.ap-northeast-3.on.aws +lambda-url.ap-south-1.on.aws +lambda-url.ap-southeast-1.on.aws +lambda-url.ap-southeast-2.on.aws +lambda-url.ap-southeast-3.on.aws +lambda-url.ca-central-1.on.aws +lambda-url.eu-central-1.on.aws +lambda-url.eu-north-1.on.aws +lambda-url.eu-south-1.on.aws +lambda-url.eu-west-1.on.aws +lambda-url.eu-west-2.on.aws +lambda-url.eu-west-3.on.aws +lambda-url.me-south-1.on.aws +lambda-url.sa-east-1.on.aws +lambda-url.us-east-1.on.aws +lambda-url.us-east-2.on.aws +lambda-url.us-west-1.on.aws +lambda-url.us-west-2.on.aws + +// AWS re:Post Private +// Submitted by AWS Security +// Reference: 83385945-225f-416e-9aa0-ad0632bfdcee +*.private.repost.aws + +// AWS Transfer Family web apps +// Submitted by AWS Security +// Reference: 9265cdd3-f017-42ab-98bb-08bf427d3fc9 +transfer-webapp.af-south-1.on.aws +transfer-webapp.ap-east-1.on.aws +transfer-webapp.ap-northeast-1.on.aws +transfer-webapp.ap-northeast-2.on.aws +transfer-webapp.ap-northeast-3.on.aws +transfer-webapp.ap-south-1.on.aws +transfer-webapp.ap-south-2.on.aws +transfer-webapp.ap-southeast-1.on.aws +transfer-webapp.ap-southeast-2.on.aws +transfer-webapp.ap-southeast-3.on.aws +transfer-webapp.ap-southeast-4.on.aws +transfer-webapp.ap-southeast-5.on.aws +transfer-webapp.ap-southeast-7.on.aws +transfer-webapp.ca-central-1.on.aws +transfer-webapp.ca-west-1.on.aws +transfer-webapp.eu-central-1.on.aws +transfer-webapp.eu-central-2.on.aws +transfer-webapp.eu-north-1.on.aws +transfer-webapp.eu-south-1.on.aws +transfer-webapp.eu-south-2.on.aws +transfer-webapp.eu-west-1.on.aws +transfer-webapp.eu-west-2.on.aws +transfer-webapp.eu-west-3.on.aws +transfer-webapp.il-central-1.on.aws +transfer-webapp.me-central-1.on.aws +transfer-webapp.me-south-1.on.aws +transfer-webapp.mx-central-1.on.aws +transfer-webapp.sa-east-1.on.aws +transfer-webapp.us-east-1.on.aws +transfer-webapp.us-east-2.on.aws +transfer-webapp.us-gov-east-1.on.aws +transfer-webapp-fips.us-gov-east-1.on.aws +transfer-webapp.us-gov-west-1.on.aws +transfer-webapp-fips.us-gov-west-1.on.aws +transfer-webapp.us-west-1.on.aws +transfer-webapp.us-west-2.on.aws +transfer-webapp.cn-north-1.on.amazonwebservices.com.cn +transfer-webapp.cn-northwest-1.on.amazonwebservices.com.cn + +// eero +// Submitted by Yue Kang +// Reference: 264afe70-f62c-4c02-8ab9-b5281ed24461 +eero.online +eero-stage.online + +// concludes Amazon + +// Anomaly : https://opencode.ai +// Submitted by Dax Raad +opentunnel.xyz + +// Antagonist B.V. : https://www.antagonist.nl/ +// Submitted by Sander Hoentjen +antagonist.cloud + +// Anthropic : https://www.anthropic.com/ +// Submitted by Sid Bidasaria +claude.app + +// Apigee : https://apigee.com/ +// Submitted by Apigee Security Team +apigee.io + +// Apis Networks : https://apisnetworks.com +// Submitted by Matt Saladna +panel.dev + +// Apphud : https://apphud.com +// Submitted by Alexander Selivanov +siiites.com + +// Apple : https://www.apple.com +// Submitted by Apple DNS +int.apple +*.cloud.int.apple +*.r.cloud.int.apple +*.ap-north-1.r.cloud.int.apple +*.ap-south-1.r.cloud.int.apple +*.ap-south-2.r.cloud.int.apple +*.eu-central-1.r.cloud.int.apple +*.eu-north-1.r.cloud.int.apple +*.us-central-1.r.cloud.int.apple +*.us-central-2.r.cloud.int.apple +*.us-east-1.r.cloud.int.apple +*.us-east-2.r.cloud.int.apple +*.us-west-1.r.cloud.int.apple +*.us-west-2.r.cloud.int.apple +*.us-west-3.r.cloud.int.apple + +// Appspace : https://www.appspace.com +// Submitted by Appspace Security Team +appspacehosted.com +appspaceusercontent.com + +// Appudo UG (haftungsbeschränkt) : https://www.appudo.com +// Submitted by Alexander Hochbaum +appudo.net + +// Appwrite : https://appwrite.io +// Submitted by Steven Nguyen +appwrite.global +appwrite.network +*.appwrite.run + +// Aptible : https://www.aptible.com/ +// Submitted by Thomas Orozco +on-aptible.com + +// Aquapal : https://aquapal.net/ +// Submitted by Aki Ueno +f5.si + +// ArvanCloud EdgeCompute +// Submitted by ArvanCloud CDN +arvanedge.ir + +// ASEINet : https://www.aseinet.com/ +// Submitted by Asei SEKIGUCHI +user.aseinet.ne.jp +gv.vc +d.gv.vc + +// Asociación Amigos de la Informática "Euskalamiga" : http://encounter.eus/ +// Submitted by Hector Martin +user.party.eus + +// Association potager.org : https://potager.org/ +// Submitted by Lunar +pimienta.org +poivron.org +potager.org +sweetpepper.org + +// ASUSTOR Inc. : http://www.asustor.com +// Submitted by Vincent Tseng +myasustor.com + +// Atlassian : https://atlassian.com +// Submitted by Benjamin McAlary +*.atlassian-3p.com +*.atlassian-3p-us-gov-mod.com +*.atlassian-isolated-3p.com +cdn.prod.atlassian-dev.net + +// AVM : https://avm.de +// Submitted by Andreas Weise +myfritz.link +myfritz.net + +// AW AdvisorWebsites.com Software Inc : https://advisorwebsites.com +// Submitted by James Kennedy +*.awdev.ca +*.advisor.ws + +// AZ.pl sp. z.o.o : https://az.pl +// Submitted by Krzysztof Wolski +ecommerce-shop.pl + +// b-data GmbH : https://www.b-data.io +// Submitted by Olivier Benz +b-data.io + +// Balena : https://www.balena.io +// Submitted by Petros Angelatos +balena-devices.com + +// BASE, Inc. : https://binc.jp +// Submitted by Yuya NAGASAWA +base.ec +official.ec +buyshop.jp +fashionstore.jp +handcrafted.jp +kawaiishop.jp +supersale.jp +theshop.jp +shopselect.net +base.shop + +// BeagleBoard.org Foundation : https://beagleboard.org +// Submitted by Jason Kridner +beagleboard.io + +// Bear Blog : https://bearblog.dev +// Submitted by Herman Martinus +bearblog.dev + +// Beget LLC : https://beget.com +// Submitted by Lev Nekrasov & Nikita Radchenko +*.beget.app +*.begetcdn.cloud + +// Besties : https://besties.house +// Submitted by Hazel Cora +pages.gay + +// BinaryLane : http://www.binarylane.com +// Submitted by Nathan O'Sullivan +bnr.la + +// Bitbucket : http://bitbucket.org +// Submitted by Andy Ortlieb +bitbucket.io + +// Blackbaud, Inc. : https://www.blackbaud.com +// Submitted by Paul Crowder +blackbaudcdn.net + +// Blatech : http://www.blatech.net +// Submitted by Luke Bratch +of.je + +// Block, Inc. : https://block.xyz +// Submitted by Jonathan Boice +square.site + +// Blue Bite, LLC : https://bluebite.com +// Submitted by Joshua Weiss +bluebite.io + +// Boomla : https://boomla.com +// Submitted by Tibor Halter +boomla.net + +// Boutir : https://www.boutir.com +// Submitted by Eric Ng Ka Ka +boutir.com + +// Boxfuse : https://boxfuse.com +// Submitted by Axel Fontaine +boxfuse.io + +// bplaced : https://www.bplaced.net/ +// Submitted by Miroslav Bozic +square7.ch +bplaced.com +bplaced.de +square7.de +bplaced.net +square7.net + +// Brave : https://brave.com +// Submitted by Andrea Brancaleoni +brave.app +*.s.brave.app +brave.dev +*.s.brave.dev +brave.io +*.s.brave.io + +// Brendly : https://brendly.rs +// Submitted by Dusan Radovanovic +shop.brendly.ba +shop.brendly.hr +shop.brendly.rs + +// BrowserSafetyMark +// Submitted by Dave Tharp +browsersafetymark.io + +// BRS Media : https://brsmedia.com/ +// Submitted by Gavin Brown +radio.am +radio.fm + +// Bubble : https://bubble.io/ +// Submitted by Merlin Zhao +cdn.bubble.io +bubbleapps.io + +// bwCloud-OS : https://bwcloud-os.de/ +// Submitted by Klara Mall +*.bwcloud-os-instance.de + +// Bytemark Hosting : https://www.bytemark.co.uk +// Submitted by Paul Cammish +uk0.bigv.io +dh.bytemark.co.uk +vm.bytemark.co.uk + +// Caf.js Labs LLC : https://www.cafjs.com +// Submitted by Antonio Lain +cafjs.com + +// Canva Pty Ltd : https://canva.com/ +// Submitted by Joel Aquilina +canva-apps.cn +my.canvasite.cn +khsj.cn +canva-apps.com +canva-hosted-embed.com +canvacode.com +rice-labs.com +canva.link +canva.run +my.canva.site + +// Carrd : https://carrd.co +// Submitted by AJ +drr.ac +uwu.ai +carrd.co +crd.co +ju.mp + +// CDDO : https://www.gov.uk/guidance/get-an-api-domain-on-govuk +// Submitted by Jamie Tanna +api.gov.uk + +// CDN77.com : http://www.cdn77.com +// Submitted by Jan Krpes +cdn77-storage.com +rsc.contentproxy9.cz +r.cdn77.net +cdn77-ssl.net +c.cdn77.org +rsc.cdn77.org +ssl.origin.cdn77-secure.org + +// CentralNic : https://teaminternet.com/ +// Submitted by registry +za.bz +br.com +cn.com +de.com +eu.com +jpn.com +mex.com +ru.com +sa.com +uk.com +us.com +za.com +com.de +gb.net +hu.net +jp.net +se.net +uk.net +ae.org +com.se + +// Cityhost LLC : https://cityhost.ua +// Submitted by Maksym Rivtin +cx.ua + +// Civilized Discourse Construction Kit, Inc. : https://www.discourse.org/ +// Submitted by Rishabh Nambiar, Michael Brown, Rafael dos Santos Silva +discourse.diy +discourse.group +discourse.team + +// Clerk : https://www.clerk.dev +// Submitted by Colin Sidoti +clerk.app +clerkstage.app +*.lcl.dev +*.lclstage.dev +*.stg.dev +*.stgstage.dev + +// Clever Cloud : https://www.clever-cloud.com/ +// Submitted by Quentin Adam +cleverapps.cc +*.services.clever-cloud.com +cleverapps.io +cleverapps.tech + +// ClickRising : https://clickrising.com/ +// Submitted by Umut Gumeli +clickrising.net + +// Cloud DNS Ltd : http://www.cloudns.net +// Submitted by Aleksander Hristov & Boyan Peychev +cloudns.asia +cloudns.be +cloud-ip.biz +cloudns.biz +cloud-ip.cc +cloudns.cc +cloudns.ch +cloudns.cl +cloudns.club +abrdns.com +dnsabr.com +ip-ddns.com +cloudns.cx +cloudns.eu +cloudns.in +cloudns.info +ddns-ip.net +dns-cloud.net +dns-dynamic.net +cloudns.nz +cloudns.org +ip-dynamic.org +cloudns.ph +cloudns.pro +cloudns.pw +cloudns.us + +// Cloud66 : https://www.cloud66.com/ +// Submitted by Khash Sajadi +c66.me +cloud66.ws + +// CloudAccess.net : https://www.cloudaccess.net/ +// Submitted by Pawel Panek +jdevcloud.com +wpdevcloud.com +cloudaccess.host +freesite.host +cloudaccess.net + +// Cloudbees, Inc. : https://www.cloudbees.com/ +// Submitted by Mohideen Shajith +cloudbeesusercontent.io + +// Cloudera, Inc. : https://www.cloudera.com/ +// Submitted by Kedarnath Waikar +*.cloudera.site + +// Cloudflare, Inc. : https://www.cloudflare.com/ +// Submitted by Cloudflare Team +cloudflare.app +cf-ipfs.com +cloudflare-ipfs.com +trycloudflare.com +pages.dev +r2.dev +workers.dev +cloudflare.net +cdn.cloudflare.net +cdn.cloudflareanycast.net +cdn.cloudflarecn.net +cdn.cloudflareglobal.net + +// cloudscale.ch AG : https://www.cloudscale.ch/ +// Submitted by Gaudenz Steinlin +cust.cloudscale.ch +objects.lpg.cloudscale.ch +objects.rma.cloudscale.ch +lpg.objectstorage.ch +rma.objectstorage.ch + +// Clovyr : https://clovyr.io +// Submitted by Patrick Nielsen +wnext.app + +// CNPY : https://cnpy.gdn +// Submitted by Angelo Gladding +cnpy.gdn + +// Co & Co : https://co-co.nl/ +// Submitted by Govert Versluis +*.otap.co + +// co.ca : http://registry.co.ca/ +co.ca + +// co.com Registry, LLC : https://registry.co.com +// Submitted by Gavin Brown +co.com + +// Codeberg e. V. : https://codeberg.org +// Submitted by Moritz Marquardt +codeberg.page + +// CodeSandbox B.V. : https://codesandbox.io +// Submitted by Ives van Hoorne +csb.app +preview.csb.app + +// CoDNS B.V. +co.nl +co.no + +// Cognition AI, Inc. : https://cognition.ai +// Submitted by Philip Papurt +*.devinapps.com + +// Combell.com : https://www.combell.com +// Submitted by Combell Team +webhosting.be +prvw.eu +hosting-cluster.nl + +// Contentful GmbH : https://www.contentful.com +// Submitted by Contentful Developer Experience Team +ctfcloud.net + +// Convex : https://convex.dev/ +// Submitted by James Cowling +convex.app +convex.cloud +eu-west-1.convex.cloud +us-east-1.convex.cloud +convex.site +eu-west-1.convex.site +us-east-1.convex.site + +// Coordination Center for TLD RU and XN--P1AI : https://cctld.ru/en/domains/domens_ru/reserved/ +// Submitted by George Georgievsky +ac.ru +edu.ru +gov.ru +int.ru +mil.ru + +// CoreSpeed, Inc. : https://corespeed.io +// Submitted by CoreSpeed Team +corespeed.app + +// COSIMO GmbH : http://www.cosimo.de +// Submitted by Rene Marticke +dyn.cosidns.de +dnsupdater.de +dynamisches-dns.de +internet-dns.de +l-o-g-i-n.de +dynamic-dns.info +feste-ip.net +knx-server.net +static-access.net + +// Craft Docs Ltd : https://www.craft.do/ +// Submitted by Zsombor Fuszenecker +craft.me + +// Craynic, s.r.o. : http://www.craynic.com/ +// Submitted by Ales Krajnik +realm.cz + +// Cryptonomic : https://cryptonomic.net/ +// Submitted by Andrew Cady +*.cryptonomic.net + +// cyber_Folks S.A. : https://cyberfolks.pl +// Submitted by Bartlomiej Kida +cfolks.pl + +// cyon GmbH : https://www.cyon.ch/ +// Submitted by Dominic Luechinger +cyon.link +cyon.site + +// Dansk.net : http://www.dansk.net/ +// Submitted by Anani Voule +biz.dk +co.dk +firm.dk +reg.dk +store.dk + +// dappnode.io : https://dappnode.io/ +// Submitted by Abel Boldu / DAppNode Team +dyndns.dappnode.io + +// Dark, Inc. : https://darklang.com +// Submitted by Paul Biggar +builtwithdark.com +darklang.io + +// DataDetect, LLC. : https://datadetect.com +// Submitted by Andrew Banchich +demo.datadetect.com +instance.datadetect.com + +// Datawire, Inc : https://www.datawire.io +// Submitted by Richard Li +edgestack.me + +// Datto, Inc. : https://www.datto.com/ +// Submitted by Philipp Heckel +dattolocal.com +dattorelay.com +dattoweb.com +mydatto.com +dattolocal.net +mydatto.net + +// ddnss.de : https://www.ddnss.de/ +// Submitted by Robert Niedziela +ddnss.de +dyn.ddnss.de +dyndns.ddnss.de +dyn-ip24.de +dyndns1.de +home-webserver.de +dyn.home-webserver.de +myhome-server.de +ddnss.org + +// Debian : https://www.debian.org/ +// Submitted by Peter Palfrader / Debian Sysadmin Team +debian.net + +// Definima : http://www.definima.com/ +// Submitted by Maxence Bitterli +definima.io +definima.net + +// Deno Land Inc : https://deno.com/ +// Submitted by Luca Casonato +deno.dev +deno-staging.dev +deno.net +sandbox.deno.net + +// DeployAgent : https://deployagent.com +// Submitted by Danny +deployagent.com +piebox.site +deployagent.space + +// deSEC : https://desec.io/ +// Submitted by Peter Thomassen +dedyn.io + +// Deta : https://www.deta.sh/ +// Submitted by Aavash Shrestha +deta.app +deta.dev + +// Deuxfleurs : https://deuxfleurs.fr +// Submitted by Aeddis Desauw +deuxfleurs.eu +deuxfleurs.page + +// Developed Methods LLC : https://methods.dev +// Submitted by Patrick Lorio +*.at.ply.gg +d6.ply.gg +joinmc.link +playit.plus +*.at.playit.plus +with.playit.plus + +// Dfinity Foundation: https://dfinity.org/ +// Submitted by Dfinity Team +icp0.io +*.raw.icp0.io +icp1.io +*.raw.icp1.io +*.icp.net +caffeine.site +caffeine.xyz + +// dhosting.pl Sp. z o.o. : https://dhosting.pl/ +// Submitted by Szczepan Redzioch +mybox.company +intouch.email +mybox.me +mybox.page +dfirma.pl +dkonto.pl +you2.pl + +// DigitalOcean App Platform : https://www.digitalocean.com/products/app-platform/ +// Submitted by Braxton Huggins +ondigitalocean.app + +// DigitalOcean Spaces : https://www.digitalocean.com/products/spaces/ +// Submitted by Robin H. Johnson +*.digitaloceanspaces.com + +// DigitalPlat : https://www.digitalplat.org/ +// Submitted by Edward Hsing +qzz.io +us.kg +xx.kg +dpdns.org + +// Discord Inc : https://discord.com +// Submitted by Sahn Lam +discordsays.com +discordsez.com + +// DNS Africa Ltd : https://dns.business +// Submitted by Calvin Browne +jozi.biz + +// DNSHE : https://www.dnshe.com +// Submitted by DNSHE Team +ccwu.cc +cc.cd +us.ci +de5.net + +// dnsHome : https://www.dnshome.de/ +// Submitted by Norbert Auler +dnshome.at +resolve.bar +ddns.berlin +dnshome.cloud +ddnssec.de +dnshome.de +dyndnssec.de +heimdns.de +srvdns.de +dnshome.eu +dnshome.it +dyn.now +heimdns.online +ddns.wtf + +// DotArai : https://www.dotarai.com/ +// Submitted by Atsadawat Netcharadsang +online.th +shop.th + +// dotScot Domains : https://domains.scot/ +// Submitted by DNS Team +co.scot +me.scot +org.scot + +// DrayTek Corp. : https://www.draytek.com/ +// Submitted by Paul Fang +drayddns.com + +// DreamCommerce : https://shoper.pl/ +// Submitted by Konrad Kotarba +shoparena.pl + +// DreamHost : http://www.dreamhost.com/ +// Submitted by Andrew Farmer +dreamhosters.com + +// Dreamyoungs, Inc. : https://durumis.com +// Submitted by Infra Team +durumis.com + +// DuckDNS : http://www.duckdns.org/ +// Submitted by Richard Harper +duckdns.org + +// dy.fi : http://dy.fi/ +// Submitted by Heikki Hannikainen +dy.fi +tunk.org + +// DynDNS.com : http://www.dyndns.com/services/dns/dyndns/ +dyndns.biz +for-better.biz +for-more.biz +for-some.biz +for-the.biz +selfip.biz +webhop.biz +ftpaccess.cc +game-server.cc +myphotos.cc +scrapping.cc +blogdns.com +cechire.com +dnsalias.com +dnsdojo.com +doesntexist.com +dontexist.com +doomdns.com +dyn-o-saur.com +dynalias.com +dyndns-at-home.com +dyndns-at-work.com +dyndns-blog.com +dyndns-free.com +dyndns-home.com +dyndns-ip.com +dyndns-mail.com +dyndns-office.com +dyndns-pics.com +dyndns-remote.com +dyndns-server.com +dyndns-web.com +dyndns-wiki.com +dyndns-work.com +est-a-la-maison.com +est-a-la-masion.com +est-le-patron.com +est-mon-blogueur.com +from-ak.com +from-al.com +from-ar.com +from-ca.com +from-ct.com +from-dc.com +from-de.com +from-fl.com +from-ga.com +from-hi.com +from-ia.com +from-id.com +from-il.com +from-in.com +from-ks.com +from-ky.com +from-ma.com +from-md.com +from-mi.com +from-mn.com +from-mo.com +from-ms.com +from-mt.com +from-nc.com +from-nd.com +from-ne.com +from-nh.com +from-nj.com +from-nm.com +from-nv.com +from-oh.com +from-ok.com +from-or.com +from-pa.com +from-pr.com +from-ri.com +from-sc.com +from-sd.com +from-tn.com +from-tx.com +from-ut.com +from-va.com +from-vt.com +from-wa.com +from-wi.com +from-wv.com +from-wy.com +getmyip.com +gotdns.com +hobby-site.com +homelinux.com +homeunix.com +iamallama.com +is-a-anarchist.com +is-a-blogger.com +is-a-bookkeeper.com +is-a-bulls-fan.com +is-a-caterer.com +is-a-chef.com +is-a-conservative.com +is-a-cpa.com +is-a-cubicle-slave.com +is-a-democrat.com +is-a-designer.com +is-a-doctor.com +is-a-financialadvisor.com +is-a-geek.com +is-a-green.com +is-a-guru.com +is-a-hard-worker.com +is-a-hunter.com +is-a-landscaper.com +is-a-lawyer.com +is-a-liberal.com +is-a-libertarian.com +is-a-llama.com +is-a-musician.com +is-a-nascarfan.com +is-a-nurse.com +is-a-painter.com +is-a-personaltrainer.com +is-a-photographer.com +is-a-player.com +is-a-republican.com +is-a-rockstar.com +is-a-socialist.com +is-a-student.com +is-a-teacher.com +is-a-techie.com +is-a-therapist.com +is-an-accountant.com +is-an-actor.com +is-an-actress.com +is-an-anarchist.com +is-an-artist.com +is-an-engineer.com +is-an-entertainer.com +is-certified.com +is-gone.com +is-into-anime.com +is-into-cars.com +is-into-cartoons.com +is-into-games.com +is-leet.com +is-not-certified.com +is-slick.com +is-uberleet.com +is-with-theband.com +isa-geek.com +isa-hockeynut.com +issmarterthanyou.com +likes-pie.com +likescandy.com +neat-url.com +saves-the-whales.com +selfip.com +sells-for-less.com +sells-for-u.com +servebbs.com +simple-url.com +space-to-rent.com +teaches-yoga.com +writesthisblog.com +ath.cx +fuettertdasnetz.de +isteingeek.de +istmein.de +lebtimnetz.de +leitungsen.de +traeumtgerade.de +barrel-of-knowledge.info +barrell-of-knowledge.info +dyndns.info +for-our.info +groks-the.info +groks-this.info +here-for-more.info +knowsitall.info +selfip.info +webhop.info +forgot.her.name +forgot.his.name +at-band-camp.net +blogdns.net +broke-it.net +buyshouses.net +dnsalias.net +dnsdojo.net +does-it.net +dontexist.net +dynalias.net +dynathome.net +endofinternet.net +from-az.net +from-co.net +from-la.net +from-ny.net +gets-it.net +ham-radio-op.net +homeftp.net +homeip.net +homelinux.net +homeunix.net +in-the-band.net +is-a-chef.net +is-a-geek.net +isa-geek.net +kicks-ass.net +office-on-the.net +podzone.net +scrapper-site.net +selfip.net +sells-it.net +servebbs.net +serveftp.net +thruhere.net +webhop.net +merseine.nu +mine.nu +shacknet.nu +blogdns.org +blogsite.org +boldlygoingnowhere.org +dnsalias.org +dnsdojo.org +doesntexist.org +dontexist.org +doomdns.org +dvrdns.org +dynalias.org +dyndns.org +go.dyndns.org +home.dyndns.org +endofinternet.org +endoftheinternet.org +from-me.org +game-host.org +gotdns.org +hobby-site.org +homedns.org +homeftp.org +homelinux.org +homeunix.org +is-a-bruinsfan.org +is-a-candidate.org +is-a-celticsfan.org +is-a-chef.org +is-a-geek.org +is-a-knight.org +is-a-linux-user.org +is-a-patsfan.org +is-a-soxfan.org +is-found.org +is-lost.org +is-saved.org +is-very-bad.org +is-very-evil.org +is-very-good.org +is-very-nice.org +is-very-sweet.org +isa-geek.org +kicks-ass.org +misconfused.org +podzone.org +readmyblog.org +selfip.org +sellsyourhome.org +servebbs.org +serveftp.org +servegame.org +stuff-4-sale.org +webhop.org +better-than.tv +dyndns.tv +on-the-web.tv +worse-than.tv +is-by.us +land-4-sale.us +stuff-4-sale.us +dyndns.ws +mypets.ws + +// Dynu.com : https://www.dynu.com/ +// Submitted by Sue Ye +1cooldns.com +bumbleshrimp.com +ddnsfree.com +ddnsgeek.com +ddnsguru.com +dynuddns.com +dynuhosting.com +giize.com +gleeze.com +kozow.com +loseyourip.com +ooguy.com +pivohosting.com +theworkpc.com +wiredbladehosting.com +casacam.net +dynu.net +dynuddns.net +mysynology.net +opik.net +spryt.net +accesscam.org +camdvr.org +freeddns.org +mywire.org +roxa.org +webredirect.org +myddns.rocks + +// dynv6 : https://dynv6.com +// Submitted by Dominik Menke +dynv6.net + +// E4YOU spol. s.r.o. : https://e4you.cz/ +// Submitted by Vladimir Dudr +e4.cz + +// Easypanel : https://easypanel.io +// Submitted by Andrei Canta +easypanel.app +easypanel.host + +// EasyWP : https://www.easywp.com +// Submitted by +*.ewp.live + +// eDirect Corp. : https://hosting.url.com.tw/ +// Submitted by C.S. chang +twmail.cc +twmail.net +twmail.org +mymailer.com.tw +url.tw + +// Electromagnetic Field : https://www.emfcamp.org +// Submitted by +at.emf.camp + +// Elefunc, Inc. : https://elefunc.com +// Submitted by Cetin Sert +rt.ht + +// Elementor : Elementor Ltd. +// Submitted by Anton Barkan +elementor.cloud +elementor.cool + +// Emergent : https://emergent.sh +// Submitted by Emergent Security Team +emergent.cloud +preview.emergentagent.com +emergent.host + +// Enalean SAS : https://www.enalean.com +// Submitted by Enalean Security Team +mytuleap.com +tuleap-partners.com + +// Encoretivity AB : https://encore.cloud +// Submitted by André Eriksson +encr.app +frontend.encr.app +encoreapi.com +lp.dev +api.lp.dev +objects.lp.dev + +// encoway GmbH : https://www.encoway.de +// Submitted by Marcel Daus +eu.encoway.cloud + +// EU.org : https://eu.org/ +// Submitted by Pierre Beyssac +eu.org +al.eu.org +asso.eu.org +at.eu.org +au.eu.org +be.eu.org +bg.eu.org +ca.eu.org +cd.eu.org +ch.eu.org +cn.eu.org +cy.eu.org +cz.eu.org +de.eu.org +dk.eu.org +edu.eu.org +ee.eu.org +es.eu.org +fi.eu.org +fr.eu.org +gr.eu.org +hr.eu.org +hu.eu.org +ie.eu.org +il.eu.org +in.eu.org +int.eu.org +is.eu.org +it.eu.org +jp.eu.org +kr.eu.org +lt.eu.org +lu.eu.org +lv.eu.org +me.eu.org +mk.eu.org +mt.eu.org +my.eu.org +net.eu.org +ng.eu.org +nl.eu.org +no.eu.org +nz.eu.org +pl.eu.org +pt.eu.org +ro.eu.org +ru.eu.org +se.eu.org +si.eu.org +sk.eu.org +tr.eu.org +uk.eu.org +us.eu.org + +// Eurobyte : https://eurobyte.ru +// Submitted by Evgeniy Subbotin +eurodir.ru + +// Evennode : http://www.evennode.com/ +// Submitted by Michal Kralik +eu-1.evennode.com +eu-2.evennode.com +eu-3.evennode.com +eu-4.evennode.com +us-1.evennode.com +us-2.evennode.com +us-3.evennode.com +us-4.evennode.com + +// Evervault : https://evervault.com +// Submitted by Hannah Neary +relay.evervault.app +relay.evervault.dev + +// Exe : https://exe.dev +// Submitted by Josh Bleecher Snyder +exe.xyz + +// Expo : https://expo.dev/ +// Submitted by Phil Pluckthun +expo.app +on.expo.app +staging.expo.app +on.staging.expo.app + +// Fabrica Technologies, Inc. : https://www.fabrica.dev/ +// Submitted by Eric Jiang +onfabrica.com + +// fachschaften.org: https://fachschaften.org/ +// Submitted by Felix Schäfer +fspages.org + +// FAITID : https://faitid.org/ +// Submitted by Maxim Alzoba +// https://www.flexireg.net/stat_info +ru.net +adygeya.ru +bashkiria.ru +bir.ru +cbg.ru +com.ru +dagestan.ru +grozny.ru +kalmykia.ru +kustanai.ru +marine.ru +mordovia.ru +msk.ru +mytis.ru +nalchik.ru +nov.ru +pyatigorsk.ru +spb.ru +vladikavkaz.ru +vladimir.ru +abkhazia.su +adygeya.su +aktyubinsk.su +arkhangelsk.su +armenia.su +ashgabad.su +azerbaijan.su +balashov.su +bashkiria.su +bryansk.su +bukhara.su +chimkent.su +dagestan.su +east-kazakhstan.su +exnet.su +georgia.su +grozny.su +ivanovo.su +jambyl.su +kalmykia.su +kaluga.su +karacol.su +karaganda.su +karelia.su +khakassia.su +krasnodar.su +kurgan.su +kustanai.su +lenug.su +mangyshlak.su +mordovia.su +msk.su +murmansk.su +nalchik.su +navoi.su +north-kazakhstan.su +nov.su +obninsk.su +penza.su +pokrovsk.su +sochi.su +spb.su +tashkent.su +termez.su +togliatti.su +troitsk.su +tselinograd.su +tula.su +tuva.su +vladikavkaz.su +vladimir.su +vologda.su + +// Fancy Bits, LLC : http://getchannels.com +// Submitted by Aman Gupta +channelsdvr.net +u.channelsdvr.net + +// Fastly Inc. : http://www.fastly.com/ +// Submitted by Fastly Security +edgecompute.app +fastly-edge.com +fastly-terrarium.com +freetls.fastly.net +map.fastly.net +a.prod.fastly.net +global.prod.fastly.net +a.ssl.fastly.net +b.ssl.fastly.net +global.ssl.fastly.net +fastlylb.net +map.fastlylb.net + +// Fastmail : https://www.fastmail.com/ +// Submitted by Marc Bradshaw +*.user.fm + +// FASTVPS EESTI OU : https://fastvps.ru/ +// Submitted by Likhachev Vasiliy +fastvps-server.com +fastvps.host +myfast.host +fastvps.site +myfast.space + +// FearWorks Media Ltd. : https://fearworksmedia.co.uk +// Submitted by Keith Fairley +conn.uk +copro.uk +hosp.uk + +// Fedora : https://fedoraproject.org/ +// Submitted by Patrick Uiterwijk +fedorainfracloud.org +fedorapeople.org +cloud.fedoraproject.org +app.os.fedoraproject.org +app.os.stg.fedoraproject.org + +// Fermax : https://fermax.com/ +// Submitted by Koen Van Isterdael +mydobiss.com + +// FH Muenster : https://www.fh-muenster.de +// Submitted by Robin Naundorf +fh-muenster.io + +// Figma : https://www.figma.com +// Submitted by Nick Frost +payload.dev +figma.site +figma-gov.site +preview.site + +// Filegear Inc. : https://www.filegear.com +// Submitted by Jason Zhu +filegear.me + +// Firebase, Inc. +// Submitted by Chris Raynor +firebaseapp.com + +// FlashDrive : https://flashdrive.io +// Submitted by Eric Chan +fldrv.com + +// Fleek Labs Inc : https://fleek.xyz +// Submitted by Parsa Ghadimi +on-fleek.app + +// FlutterFlow : https://flutterflow.io +// Submitted by Anton Emelyanov +flutterflow.app + +// fly.io : https://fly.io +// Submitted by Kurt Mackey +sprites.app +fly.dev + +// FoundryLabs, Inc : https://e2b.dev/ +// Submitted by Jiri Sveceny +e2b.app + +// Framer : https://www.framer.com +// Submitted by Koen Rouwhorst +framer.ai +framer.app +framercanvas.com +framer.media +framer.photos +framer.website +framer.wiki + +// Frederik Braun : https://frederik-braun.com +// Submitted by Frederik Braun +*.0e.vc + +// Freebox : http://www.freebox.fr +// Submitted by Romain Fliedel +freebox-os.com +freeboxos.com +fbx-os.fr +fbxos.fr +freebox-os.fr +freeboxos.fr + +// freedesktop.org : https://www.freedesktop.org +// Submitted by Daniel Stone +freedesktop.org + +// freemyip.com : https://freemyip.com +// Submitted by Cadence +freemyip.com + +// Frusky MEDIA&PR : https://www.frusky.de +// Submitted by Victor Pupynin +*.frusky.de + +// FunkFeuer - Verein zur Förderung freier Netze : https://www.funkfeuer.at +// Submitted by Daniel A. Maierhofer +wien.funkfeuer.at + +// Future Versatile Group. : https://www.fvg-on.net/ +// T.Kabu +daemon.asia +dix.asia +mydns.bz +0am.jp +0g0.jp +0j0.jp +0t0.jp +mydns.jp +pgw.jp +wjg.jp +keyword-on.net +live-on.net +server-on.net +mydns.tw +mydns.vc + +// Futureweb GmbH : https://www.futureweb.at +// Submitted by Andreas Schnederle-Wagner +*.futurecms.at +*.ex.futurecms.at +*.in.futurecms.at +futurehosting.at +futuremailing.at +*.ex.ortsinfo.at +*.kunden.ortsinfo.at +*.statics.cloud + +// Gadget Software Inc. : https://gadget.dev +// Submitted by Harry Brundage +gadget.app +gadget.host + +// GCom Internet : https://www.gcom.net.au +// Submitted by Leo Julius +aliases121.com + +// GDS : https://www.gov.uk/service-manual/technology/managing-domain-names +// Submitted by Stephen Ford +campaign.gov.uk +service.gov.uk +independent-commission.uk +independent-inquest.uk +independent-inquiry.uk +independent-panel.uk +independent-review.uk +public-inquiry.uk +royal-commission.uk + +// Gehirn Inc. : https://www.gehirn.co.jp/ +// Submitted by Kohei YOSHIDA +gehirn.ne.jp +usercontent.jp + +// Gentlent, Inc. : https://www.gentlent.com +// Submitted by Tom Klein +gentapps.com +gentlentapis.com +cdn-edges.net + +// GignoSystemJapan : http://gsj.bz +// Submitted by GignoSystemJapan +gsj.bz + +// GitBook Inc. : https://www.gitbook.com/ +// Submitted by Samy Pesse +gitbook.io + +// GitHub, Inc. +// Submitted by Patrick Toomey +github.app +githubusercontent.com +githubpreview.dev +github.io + +// GitLab, Inc. : https://about.gitlab.com/ +// Submitted by Alex Hanselka +gitlab.io + +// Gitplac.si : https://gitplac.si +// Submitted by Aljaž Starc +gitapp.si +gitpage.si + +// Global NOG Alliance : https://nogalliance.org/ +// Submitted by Sander Steffann +nog.community + +// Globe Hosting SRL : https://www.globehosting.com/ +// Submitted by Gavin Brown +co.ro +shop.ro + +// GMO Pepabo, Inc. : https://pepabo.com/ +// Submitted by Hosting Div +lolipop.io +angry.jp +babyblue.jp +babymilk.jp +backdrop.jp +bambina.jp +bitter.jp +blush.jp +boo.jp +boy.jp +boyfriend.jp +but.jp +candypop.jp +capoo.jp +catfood.jp +cheap.jp +chicappa.jp +chillout.jp +chips.jp +chowder.jp +chu.jp +ciao.jp +cocotte.jp +coolblog.jp +cranky.jp +cutegirl.jp +daa.jp +deca.jp +deci.jp +digick.jp +egoism.jp +fakefur.jp +fem.jp +flier.jp +floppy.jp +fool.jp +frenchkiss.jp +girlfriend.jp +girly.jp +gloomy.jp +gonna.jp +greater.jp +hacca.jp +heavy.jp +her.jp +hiho.jp +hippy.jp +holy.jp +hungry.jp +icurus.jp +itigo.jp +jellybean.jp +kikirara.jp +kill.jp +kilo.jp +kuron.jp +littlestar.jp +lolipopmc.jp +lolitapunk.jp +lomo.jp +lovepop.jp +lovesick.jp +main.jp +mods.jp +mond.jp +mongolian.jp +moo.jp +namaste.jp +nikita.jp +nobushi.jp +noor.jp +oops.jp +parallel.jp +parasite.jp +pecori.jp +peewee.jp +penne.jp +pepper.jp +perma.jp +pigboat.jp +pinoko.jp +punyu.jp +pupu.jp +pussycat.jp +pya.jp +raindrop.jp +readymade.jp +sadist.jp +schoolbus.jp +secret.jp +staba.jp +stripper.jp +sub.jp +sunnyday.jp +thick.jp +tonkotsu.jp +under.jp +upper.jp +velvet.jp +verse.jp +versus.jp +vivian.jp +watson.jp +weblike.jp +whitesnow.jp +zombie.jp +heteml.net + +// GNTC, Inc. : https://gntc.com/ +// Submitted by VibeHost Security +vibehost.space + +// GoDaddy Registry : https://registry.godaddy +// Submitted by Rohan Durrant +graphic.design + +// GoIP DNS Services : http://www.goip.de +// Submitted by Christian Poulter +goip.de + +// Google, Inc. +// Submitted by Shannon McCabe +*.hosted.app +*.run.app +*.mtls.run.app +web.app +*.0emm.com +appspot.com +*.r.appspot.com +blogspot.com +codespot.com +googleapis.com +googlecode.com +pagespeedmobilizer.com +withgoogle.com +withyoutube.com +*.gateway.dev +cloud.goog +translate.goog +*.usercontent.goog +cloudfunctions.net + +// Goupile : https://goupile.fr +// Submitted by Niels Martignene +goupile.fr + +// GOV.UK Pay : https://www.payments.service.gov.uk/ +// Submitted by Richard Baker +pymnt.uk + +// Government of the Netherlands : https://www.government.nl +// Submitted by +gov.nl + +// Grafana Labs : https://grafana.com/ +// Submitted by Platform Engineering +grafana-dev.net + +// GrayJay Web Solutions Inc. : https://grayjaysports.ca +// Submitted by Matt Yamkowy +grayjayleagues.com + +// Grebedoc : https://grebedoc.dev +// Submitted by Catherine Zotova +grebedoc.dev + +// GünstigBestellen : https://günstigbestellen.de +// Submitted by Furkan Akkoc +günstigbestellen.de +günstigliefern.de + +// GV.UY : https://nic.gv.uy +// Submitted by cheng +gv.uy + +// Hackclub Nest : https://hackclub.app +// Submitted by Cyteon +hackclub.app + +// Häkkinen.fi : https://www.häkkinen.fi/ +// Submitted by Eero Häkkinen +häkkinen.fi + +// Hashbang : https://hashbang.sh +hashbang.sh + +// Hasura : https://hasura.io +// Submitted by Shahidh K Muhammed +hasura.app +hasura-app.io + +// Hatena Co., Ltd. : https://hatena.co.jp +// Submitted by Masato Nakamura +hatenablog.com +hatenadiary.com +hateblo.jp +hatenablog.jp +hatenadiary.jp +hatenadiary.org + +// Heilbronn University of Applied Sciences - Faculty Informatics (GitLab Pages) : https://www.hs-heilbronn.de +// Submitted by Richard Zowalla +pages.it.hs-heilbronn.de +pages-research.it.hs-heilbronn.de + +// HeiyuSpace : https://lazycat.cloud +// Submitted by Xia Bin +heiyu.space + +// Helio Networks : https://heliohost.org +// Submitted by Ben Frede +helioho.st +heliohost.us + +// Hepforge : https://www.hepforge.org +// Submitted by David Grellscheid +hepforge.org + +// Hercules : https://hercules.app +// Submitted by Brendan Falk +onhercules.app +hercules-app.com +hercules-dev.com + +// Heroku : https://www.heroku.com/ +// Submitted by Shumon Huque +herokuapp.com + +// Heyflow : https://www.heyflow.com +// Submitted by Mirko Nitschke +heyflow.page +heyflow.site + +// Hibernating Rhinos +// Submitted by Oren Eini +ravendb.cloud +ravendb.community +development.run +ravendb.run + +// HiDNS : https://www.hidoha.net +// Submitted by ifeng +hidns.co +hidns.vip + +// home.pl S.A. : https://home.pl +// Submitted by Krzysztof Wolski +homesklep.pl + +// Homebase : https://homebase.id/ +// Submitted by Jason Babo +*.kin.one +*.id.pub +*.kin.pub + +// HOOC AG : https://www.hooc.ch +// Submitted by Fabrizio Steiner +seprox.hooc.me + +// Hoplix : https://www.hoplix.com +// Submitted by Danilo De Franco +hoplix.shop + +// HOSTBIP REGISTRY : https://www.hostbip.com/ +// Submitted by Atanunu Igbunuroghene +orx.biz +biz.ng +co.biz.ng +dl.biz.ng +go.biz.ng +lg.biz.ng +on.biz.ng +col.ng +firm.ng +gen.ng +ltd.ng +ngo.ng +plc.ng + +// Hostinger : https://hostinger.com +// Submitted by Valentinas Cirba +hstgr.cloud + +// HostyHosting : https://hostyhosting.com +hostyhosting.io + +// Hugging Face : https://huggingface.co +// Submitted by Eliott Coyac +hf.space +static.hf.space + +// Hypernode B.V. : https://www.hypernode.com/ +// Submitted by Cipriano Groenendal +hypernode.io + +// I-O DATA DEVICE, INC. : http://www.iodata.com/ +// Submitted by Yuji Minagawa +iobb.net + +// i-registry s.r.o. : http://www.i-registry.cz/ +// Submitted by Martin Semrad +co.cz + +// Ici la Lune : http://www.icilalune.com/ +// Submitted by Simon Morvan +*.moonscale.io +moonscale.net + +// iDOT Services Limited : http://www.domain.gr.com +// Submitted by Gavin Brown +gr.com + +// iki.fi +// Submitted by Hannu Aronsson +iki.fi + +// iliad italia : https://www.iliad.it +// Submitted by Marios Makassikis +ibxos.it +iliadboxos.it + +// Imagine : https://imagine.dev +// Submitted by Steven Nguyen +imagine.diy +imagine-proxy.work + +// Incsub, LLC : https://incsub.com/ +// Submitted by Aaron Edwards +smushcdn.com +wphostedmail.com +wpmucdn.com +tempurl.host +wpmudev.host + +// Individual Network Berlin e.V. : https://www.in-berlin.de/ +// Submitted by Christian Seitz +dyn-berlin.de +in-berlin.de +in-brb.de +in-butter.de +in-dsl.de +in-vpn.de +in-dsl.net +in-vpn.net +in-dsl.org +in-vpn.org + +// Inferno Communications : https://inferno.co.uk +// Submitted by Connor McFarlane +oninferno.net + +// info.cx : http://info.cx +// Submitted by June Slater +info.cx + +// Interlegis : http://www.interlegis.leg.br +// Submitted by Gabriel Ferreira +ac.leg.br +al.leg.br +am.leg.br +ap.leg.br +ba.leg.br +ce.leg.br +df.leg.br +es.leg.br +go.leg.br +ma.leg.br +mg.leg.br +ms.leg.br +mt.leg.br +pa.leg.br +pb.leg.br +pe.leg.br +pi.leg.br +pr.leg.br +rj.leg.br +rn.leg.br +ro.leg.br +rr.leg.br +rs.leg.br +sc.leg.br +se.leg.br +sp.leg.br +to.leg.br + +// intermetrics GmbH : https://pixolino.com/ +// Submitted by Wolfgang Schwarz +pixolino.com + +// Internet-Pro, LLP : https://netangels.ru/ +// Submitted by Vasiliy Sheredeko +na4u.ru + +// Inventor Services : https://inventor.gg/ +// Submitted by Inventor Team +botdash.app +botdash.dev +botdash.gg +botdash.net +botda.sh +botdash.xyz + +// IONOS SE : https://www.ionos.com/ +// IONOS Group SE : https://www.ionos-group.com/ +// Submitted by Henrik Willert +apps-1and1.com +live-website.com +webspace-host.com +apps-1and1.net +websitebuilder.online +app-ionos.space + +// iopsys software solutions AB : https://iopsys.eu/ +// Submitted by Roman Azarenko +iopsys.se + +// IPFS Project : https://ipfs.tech/ +// Submitted by Interplanetary Shipyard +*.inbrowser.dev +*.dweb.link +*.inbrowser.link + +// IPiFony Systems, Inc. : https://www.ipifony.com/ +// Submitted by Matthew Hardeman +ipifony.net + +// ir.md : https://nic.ir.md +// Submitted by Ali Soizi +ir.md + +// is-a-good.dev : https://is-a-good.dev +// Submitted by William Harrison +is-a-good.dev + +// IServ GmbH : https://iserv.de +// Submitted by Kim Brodowski +iservschule.de +mein-iserv.de +schuldock.de +schulplattform.de +schulserver.de +test-iserv.de +iserv.dev +iserv.host + +// Ispmanager : https://www.ispmanager.com/ +// Submitted by Ispmanager infrastructure team +ispmanager.name + +// Jelastic, Inc. : https://jelastic.com/ +// Submitted by Ihor Kolodyuk +mel.cloudlets.com.au +cloud.interhostsolutions.be +alp1.ae.flow.ch +appengine.flow.ch +es-1.axarnet.cloud +diadem.cloud +vip.jelastic.cloud +jele.cloud +it1.eur.aruba.jenv-aruba.cloud +it1.jenv-aruba.cloud +keliweb.cloud +cs.keliweb.cloud +oxa.cloud +tn.oxa.cloud +uk.oxa.cloud +primetel.cloud +uk.primetel.cloud +ca.reclaim.cloud +uk.reclaim.cloud +us.reclaim.cloud +ch.trendhosting.cloud +de.trendhosting.cloud +jele.club +dopaas.com +paas.hosted-by-previder.com +rag-cloud.hosteur.com +rag-cloud-ch.hosteur.com +jcloud.ik-server.com +jcloud-ver-jpc.ik-server.com +demo.jelastic.com +paas.massivegrid.com +jed.wafaicloud.com +ryd.wafaicloud.com +j.scaleforce.com.cy +jelastic.dogado.eu +fi.cloudplatform.fi +demo.datacenter.fi +paas.datacenter.fi +jele.host +mircloud.host +paas.beebyte.io +sekd1.beebyteapp.io +jele.io +jc.neen.it +jcloud.kz +cloudjiffy.net +fra1-de.cloudjiffy.net +west1-us.cloudjiffy.net +jls-sto1.elastx.net +jls-sto2.elastx.net +jls-sto3.elastx.net +fr-1.paas.massivegrid.net +lon-1.paas.massivegrid.net +lon-2.paas.massivegrid.net +ny-1.paas.massivegrid.net +ny-2.paas.massivegrid.net +sg-1.paas.massivegrid.net +jelastic.saveincloud.net +nordeste-idc.saveincloud.net +j.scaleforce.net +sdscloud.pl +unicloud.pl +mircloud.ru +enscaled.sg +jele.site +jelastic.team +orangecloud.tn +j.layershift.co.uk +phx.enscaled.us +mircloud.us + +// Jino : https://www.jino.ru +// Submitted by Sergey Ulyashin +myjino.ru +*.hosting.myjino.ru +*.landing.myjino.ru +*.spectrum.myjino.ru +*.vps.myjino.ru + +// Jotelulu S.L. : https://jotelulu.com +// Submitted by Daniel Fariña +jote.cloud +jotelulu.cloud +eu1-plenit.com +la1-plenit.com +us1-plenit.com + +// JouwWeb B.V. : https://www.jouwweb.nl +// Submitted by Camilo Sperberg +webadorsite.com +jouwweb.site + +// JS.ORG : http://dns.js.org +// Submitted by Stefan Keim +js.org + +// K2 Cloud : https://k2.cloud/ +// Submitted by K2 Cloud +elastic.k2.cloud +lb.ru-msk.k2.cloud +s3.ru-msk.k2.cloud +website.ru-msk.k2.cloud +lb.ru-spb.k2.cloud +s3.ru-spb.k2.cloud +website.ru-spb.k2.cloud +s3.k2.cloud +website.k2.cloud + +// KaasHosting : http://www.kaashosting.nl/ +// Submitted by Wouter Bakker +kaas.gg +khplay.nl + +// Kapsi : https://kapsi.fi +// Submitted by Tomi Juntunen +kapsi.fi + +// KataBump : https://katabump.com +// Submitted by Thibault Lapeyre +kdns.fr + +// Katholieke Universiteit Leuven : https://www.kuleuven.be +// Submitted by Abuse KU Leuven +ezproxy.kuleuven.be +kuleuven.cloud + +// Keenetic : https://keenetic.com +// Submitted by Alexey Nikitin +keenetic.io +keenetic.link +keenetic.name +keenetic.pro + +// Kevin Service : https://kevsrv.me +// Submitted by Kevin Service Team +ae.kg + +// Keyweb AG : https://www.keyweb.de +// Submitted by Martin Dannehl +keymachine.de + +// Kilo Code, Inc. : https://kilo.ai +// Submitted by Remon Oldenbeuving +kiloapps.ai +kiloapps.io + +// KingHost : https://king.host +// Submitted by Felipe Keller Braz +kinghost.net +uni5.net + +// KnightPoint Systems, LLC : http://www.knightpoint.com/ +// Submitted by Roy Keene +knightpoint.systems + +// KoobinEvent, SL : https://www.koobin.com +// Submitted by Iván Oliva +koobin.events + +// Krellian Ltd. : https://krellian.com +// Submitted by Ben Francis +webthings.io +krellian.net + +// KUROKU LTD : https://kuroku.ltd/ +// Submitted by DisposaBoy +oya.to + +// KV GmbH : https://www.nic.co.de +// Submitted by KV GmbH +// Abuse reports to +co.de + +// Laravel Holdings, Inc. : https://laravel.com +// Submitted by André Valentin & James Brooks +shiptoday.app +shiptoday.build +laravel.cloud +on-forge.com +on-vapor.com + +// LCube - Professional hosting e.K. : https://www.lcube-webhosting.de +// Submitted by Lars Laehn +git-repos.de +lcube-server.de +svn-repos.de + +// Leadpages : https://www.leadpages.net +// Submitted by Greg Dallavalle +leadpages.co +lpages.co +lpusercontent.com + +// Leapcell : https://leapcell.io/ +// Submitted by Leapcell Team +leapcell.app +leapcell.dev +leapcell.online + +// Liara : https://liara.ir +// Submitted by Amirhossein Badinloo +liara.run +iran.liara.run + +// libp2p project : https://libp2p.io +// Submitted by Interplanetary Shipyard +libp2p.direct + +// Libre IT Ltd : https://libre.nz +// Submitted by Tomas Maggio +runcontainers.dev + +// Lifetime Hosting : https://Lifetime.Hosting/ +// Submitted by Mike Fillator +co.business +co.education +co.events +co.financial +co.network +co.place +co.technology + +// linkyard ldt : https://www.linkyard.ch/ +// Submitted by Mario Siegenthaler +linkyard-cloud.ch +linkyard.cloud + +// Linode : https://linode.com +// Submitted by +members.linode.com +*.nodebalancer.linode.com +*.linodeobjects.com +ip.linodeusercontent.com + +// LiquidNet Ltd : http://www.liquidnetlimited.com/ +// Submitted by Victor Velchev +we.bs + +// Listen53 : https://www.l53.net +// Submitted by Gerry Keh +filegear-sg.me +ggff.net + +// Localcert : https://localcert.dev +// Submitted by Lann Martin +*.user.localcert.dev + +// Localtonet : https://localtonet.com/ +// Submitted by Burak Isleyici +localtonet.com +*.localto.net + +// Lodz University of Technology LODMAN regional domains : https://www.man.lodz.pl/dns +// Submitted by Piotr Wilk +lodz.pl +pabianice.pl +plock.pl +sieradz.pl +skierniewice.pl +zgierz.pl + +// Log'in Line : https://www.loginline.com/ +// Submitted by Rémi Mach +loginline.app +loginline.dev +loginline.io +loginline.services +loginline.site + +// Lõhmus Family, The : https://lohmus.me/ +// Submitted by Heiki Lõhmus +lohmus.me + +// Lovable : https://lovable.dev +// Submitted by Fabian Hedin +lovable.app +lovableproject.com +lovable.run +lovable.sh + +// LubMAN UMCS Sp. z o.o : https://lubman.pl/ +// Submitted by Ireneusz Maliszewski +krasnik.pl +leczna.pl +lubartow.pl +lublin.pl +poniatowa.pl +swidnik.pl + +// Lug.org.uk : https://lug.org.uk +// Submitted by Jon Spriggs +glug.org.uk +lug.org.uk +lugs.org.uk + +// Lukanet Ltd : https://lukanet.com +// Submitted by Anton Avramov +barsy.bg +barsy.club +barsycenter.com +barsyonline.com +barsy.de +barsy.dev +barsy.eu +barsy.gr +barsy.in +barsy.info +barsy.io +barsy.me +barsy.menu +barsyonline.menu +barsy.mobi +barsy.net +barsy.online +barsy.org +barsy.pro +barsy.pub +barsy.ro +barsy.rs +barsy.shop +barsyonline.shop +barsy.site +barsy.store +barsy.support +barsy.uk +barsy.co.uk +barsyonline.co.uk + +// Lutra : https://lutra.ai +// Submitted by Joshua Newman +*.lutrausercontent.com + +// Luyani Inc. : https://luyani.com/ +// Submitted by Umut Gumeli +luyani.app +luyani.net + +// Magento Commerce +// Submitted by Damien Tournoud +*.magentosite.cloud + +// Magic Patterns : https://www.magicpatterns.com +// Submitted by Teddy Ni +magicpatterns.app +magicpatternsapp.com + +// Mail.Ru Group : https://hb.cldmail.ru +// Submitted by Ilya Zaretskiy +hb.cldmail.ru + +// MathWorks : https://www.mathworks.com/ +// Submitted by Emily Reed +matlab.cloud +modelscape.com +mwcloudnonprod.com +polyspace.com + +// May First - People Link : https://mayfirst.org/ +// Submitted by Jamie McClelland +mayfirst.info + +// McHost : https://mchost.ru +// Submitted by Evgeniy Subbotin +mcdir.me +mcdir.ru +vps.mcdir.ru +mcpre.ru + +// Mediatech : https://mediatech.by +// Submitted by Evgeniy Kozhuhovskiy +mediatech.by +mediatech.dev + +// Medicom Health : https://medicomhealth.com +// Submitted by Michael Olson +hra.health + +// MedusaJS, Inc : https://medusajs.com/ +// Submitted by Stevche Radevski +medusajs.app + +// Memset hosting : https://www.memset.com +// Submitted by Tom Whitwell +miniserver.com +memset.net + +// Messerli Informatik AG : https://www.messerli.ch/ +// Submitted by Ruben Schmidmeister +messerli.app + +// Meta Platforms, Inc. : https://meta.com/ +// Submitted by Jacob Cordero +atmeta.com +apps.fbsbx.com +*.metaaiusercontent.com + +// MetaCentrum, CESNET z.s.p.o. : https://www.metacentrum.cz/en/ +// Submitted by Zdeněk Šustr and Radim Janča +*.cloud.metacentrum.cz +custom.metacentrum.cz +flt.cloud.muni.cz +usr.cloud.muni.cz + +// Meteor Development Group : https://www.meteor.com/hosting +// Submitted by Pierre Carrier +meteorapp.com +eu.meteorapp.com + +// Michau Enterprises Limited : http://www.co.pl/ +co.pl + +// Microsoft Corporation : http://microsoft.com +// Submitted by Public Suffix List Admin +// Managed by Corporate Domains +// Microsoft Azure : https://home.azure +*.azurecontainer.io +azure-api.net +azure-mobile.net +azureedge.net +azurefd.net +azurestaticapps.net +1.azurestaticapps.net +2.azurestaticapps.net +3.azurestaticapps.net +4.azurestaticapps.net +5.azurestaticapps.net +6.azurestaticapps.net +7.azurestaticapps.net +centralus.azurestaticapps.net +eastasia.azurestaticapps.net +eastus2.azurestaticapps.net +westeurope.azurestaticapps.net +westus2.azurestaticapps.net +azurewebsites.net +cloudapp.net +trafficmanager.net +blob.core.usgovcloudapi.net +file.core.usgovcloudapi.net +web.core.usgovcloudapi.net +servicebus.usgovcloudapi.net +usgovcloudapp.net +usgovtrafficmanager.net +blob.core.windows.net +file.core.windows.net +web.core.windows.net +servicebus.windows.net +azure-api.us +azurewebsites.us + +// MikroTik : https://mikrotik.com +// Submitted by MikroTik SysAdmin Team +routingthecloud.com +sn.mynetname.net +routingthecloud.net +routingthecloud.org + +// Million Software, Inc : https://million.dev/ +// Submitted by Rayhan Noufal Arayilakath +same-app.com +same-preview.com + +// minion.systems : http://minion.systems +// Submitted by Robert Böttinger +csx.cc + +// Miren, Inc. : https://miren.dev +// Submitted by Miren Product Team +miren.app +miren.systems + +// Mittwald CM Service GmbH & Co. KG : https://mittwald.de +// Submitted by Marco Rieger +mydbserver.com +webspaceconfig.de +mittwald.info +mittwaldserver.info +typo3server.info +project.space + +// MKM : https://mkm.fan/ +// Submitted by Kashi Ahmer +mkm.fan + +// Mocha : https://getmocha.com +// Submitted by Ben Reinhart +mocha.app +mochausercontent.com +mocha-sandbox.dev + +// MODX Systems LLC : https://modx.com +// Submitted by Elizabeth Southwell +modx.dev + +// Mozilla Foundation : https://mozilla.org/ +// Submitted by glob +bmoattachments.org + +// MSK-IX : https://www.msk-ix.ru/ +// Submitted by Khannanov Roman +net.ru +org.ru +pp.ru + +// MyOwn srl : https://www.myown.eu/ +// Submitted by Stephane Bouvard +my.be + +// Mythic Beasts : https://www.mythic-beasts.com +// Submitted by Paul Cammish +hostedpi.com +caracal.mythic-beasts.com +customer.mythic-beasts.com +fentiger.mythic-beasts.com +lynx.mythic-beasts.com +ocelot.mythic-beasts.com +oncilla.mythic-beasts.com +onza.mythic-beasts.com +sphinx.mythic-beasts.com +vs.mythic-beasts.com +x.mythic-beasts.com +yali.mythic-beasts.com +cust.retrosnub.co.uk + +// Nabu Casa : https://www.nabucasa.com +// Submitted by Paulus Schoutsen +ui.nabu.casa + +// Needle Tools GmbH : https://needle.tools +// Submitted by Felix Herbst +needle.run + +// Neo : https://www.neo.space +// Submitted by Ankit Kulkarni +co.site + +// Net at Work Gmbh : https://www.netatwork.de +// Submitted by Jan Jaeschke +cloud.nospamproxy.com +o365.cloud.nospamproxy.com + +// Net libre : https://www.netlib.re +// Submitted by Philippe PITTOLI +netlib.re + +// Netlify : https://www.netlify.com +// Submitted by Jessica Parsons +netlify.app + +// Neustar Inc. +// Submitted by Trung Tran +4u.com + +// NFSN, Inc. : https://www.NearlyFreeSpeech.NET/ +// Submitted by Jeff Wheelhouse +nfshost.com + +// NFT.Storage : https://nft.storage/ +// Submitted by Vasco Santos or +ipfs.nftstorage.link + +// NGO.US Registry : https://nic.ngo.us +// Submitted by Alstra Solutions Ltd. Networking Team +ngo.us + +// ngrok : https://ngrok.com/ +// Submitted by Alan Shreve +ngrok.app +ngrok-free.app +ngrok.dev +ngrok-free.dev +ngrok.io +ap.ngrok.io +au.ngrok.io +eu.ngrok.io +in.ngrok.io +jp.ngrok.io +sa.ngrok.io +us.ngrok.io +ngrok.pizza +ngrok.pro + +// Nicolaus Copernicus University in Torun - MSK TORMAN : https://www.man.torun.pl +torun.pl + +// Nimbus Hosting Ltd. : https://www.nimbushosting.co.uk/ +// Submitted by Nicholas Ford +nh-serv.co.uk +nimsite.uk + +// No-IP.com : https://noip.com/ +// Submitted by Deven Reza +mmafan.biz +myftp.biz +no-ip.biz +no-ip.ca +fantasyleague.cc +gotdns.ch +3utilities.com +blogsyte.com +ciscofreak.com +damnserver.com +ddnsking.com +ditchyourip.com +dnsiskinky.com +dynns.com +geekgalaxy.com +health-carereform.com +homesecuritymac.com +homesecuritypc.com +myactivedirectory.com +mysecuritycamera.com +myvnc.com +net-freaks.com +onthewifi.com +point2this.com +quicksytes.com +securitytactics.com +servebeer.com +servecounterstrike.com +serveexchange.com +serveftp.com +servegame.com +servehalflife.com +servehttp.com +servehumour.com +serveirc.com +servemp3.com +servep2p.com +servepics.com +servequake.com +servesarcasm.com +stufftoread.com +unusualperson.com +workisboring.com +dvrcam.info +ilovecollege.info +no-ip.info +brasilia.me +ddns.me +dnsfor.me +hopto.me +loginto.me +noip.me +webhop.me +bounceme.net +ddns.net +eating-organic.net +mydissent.net +myeffect.net +mymediapc.net +mypsx.net +mysecuritycamera.net +nhlfan.net +no-ip.net +pgafan.net +privatizehealthinsurance.net +redirectme.net +serveblog.net +serveminecraft.net +sytes.net +cable-modem.org +collegefan.org +couchpotatofries.org +hopto.org +mlbfan.org +myftp.org +mysecuritycamera.org +nflfan.org +no-ip.org +read-books.org +ufcfan.org +zapto.org +no-ip.co.uk +golffan.us +noip.us +pointto.us + +// NodeArt : https://nodeart.io +// Submitted by Konstantin Nosov +stage.nodeart.io + +// Noop : https://noop.app +// Submitted by Nathaniel Schweinberg +*.developer.app +noop.app + +// Northflank Ltd. : https://northflank.com/ +// Submitted by Marco Suter +*.northflank.app +*.build.run +*.code.run +*.database.run +*.migration.run + +// Northwest Nexus dba NuOz : https://nuoz.net/ +// An RFC 1480 locality domain delegate host +// Submitted by Peter Briggs on behalf of NuOz +aberdeen.wa.us +bainbridge-isl.wa.us +bellevue.wa.us +bremerton.wa.us +centralia.wa.us +chehalis.wa.us +forks.wa.us +gig-harbor.wa.us +hoquiam.wa.us +keyport.wa.us +kingston.wa.us +olympia.wa.us +port-angeles.wa.us +port-ludlow.wa.us +port-orchard.wa.us +port-townsend.wa.us +poulsbo.wa.us +redmond.wa.us +renton.wa.us +sea.wa.us +seattle.wa.us +sequim.wa.us +shelton.wa.us +silverdale.wa.us +yarrow-point.wa.us + +// Noticeable : https://noticeable.io +// Submitted by Laurent Pellegrino +noticeable.news + +// Notion Labs, Inc : https://www.notion.so/ +// Submitted by Jess Yao +notion.site + +// Now-DNS : https://now-dns.com +// Submitted by Steve Russell +dnsking.ch +mypi.co +myiphost.com +forumz.info +soundcast.me +tcp4.me +dnsup.net +hicam.net +now-dns.net +ownip.net +vpndns.net +dynserv.org +now-dns.org +x443.pw +ntdll.top +freeddns.us + +// nsupdate.info : https://www.nsupdate.info/ +// Submitted by Thomas Waldmann +nsupdate.info +nerdpol.ovh + +// O3O.Foundation : https://o3o.foundation/ +// Submitted by the prvcy.page Registry Team +prvcy.page + +// Observable, Inc. : https://observablehq.com +// Submitted by Mike Bostock +observablehq.cloud +static.observableusercontent.com + +// OMG.LOL : https://omg.lol +// Submitted by Adam Newbold +omg.lol + +// Omnibond Systems, LLC. : https://www.omnibond.com +// Submitted by Cole Estep +cloudycluster.net + +// OmniWe Limited : https://omniwe.com +// Submitted by Vicary Archangel +omniwe.site + +// One.com : https://www.one.com/ +// Submitted by Jacob Bunk Nielsen +123webseite.at +123website.be +simplesite.com.br +123website.ch +simplesite.com +123webseite.de +123hjemmeside.dk +123miweb.es +123kotisivu.fi +123siteweb.fr +simplesite.gr +123homepage.it +123website.lu +123website.nl +123hjemmeside.no +service.one +website.one +simplesite.pl +123paginaweb.pt +123minsida.se + +// ONID : https://get.onid.ca +// Submitted by ONID Engineering Team +onid.ca + +// Open Domains : https://open-domains.net +// Submitted by William Harrison +is-a-fullstack.dev +is-cool.dev +is-not-a.dev +localplayer.dev +is-local.org + +// Open Social : https://www.getopensocial.com/ +// Submitted by Alexander Varwijk +opensocial.site + +// OpenAI : https://openai.com +// Submitted by Thomas Shadwell +*.oaiusercontent.com +chatgpt.site + +// OpenCraft GmbH : http://opencraft.com/ +// Submitted by Sven Marnach +opencraft.hosting + +// OpenHost : https://registry.openhost.uk +// Submitted by OpenHost Registry Team +16-b.it +32-b.it +64-b.it + +// OpenResearch GmbH : https://openresearch.com/ +// Submitted by Philipp Schmid +orsites.com + +// Opera Software, A.S.A. +// Submitted by Yngve Pettersen +operaunite.com + +// Oracle Dyn : https://cloud.oracle.com/home https://dyn.com/dns/ +// Submitted by Gregory Drake +// Note: This is intended to also include customer-oci.com due to wildcards implicitly including the current label +*.customer-oci.com +*.oci.customer-oci.com +*.ocp.customer-oci.com +*.ocs.customer-oci.com +*.oraclecloudapps.com +*.oraclegovcloudapps.com +*.oraclegovcloudapps.uk + +// Orange : https://www.orange.com +// Submitted by Alexandre Linte +tech.orange + +// OsSav Technology Ltd. : https://ossav.com/ +// Submitted by OsSav Technology Ltd. +// https://nic.can.re +can.re + +// Oursky Limited : https://authgear.com/ +// Submitted by Authgear Team & Skygear Developer +authgear-staging.com +authgearapps.com + +// OutSystems +// Submitted by Duarte Santos +outsystemscloud.com + +// OVHcloud : https://ovhcloud.com +// Submitted by Vincent Cassé +*.hosting.ovh.net +*.webpaas.ovh.net + +// OwnProvider GmbH : http://www.ownprovider.com +// Submitted by Jan Moennich +ownprovider.com +own.pm + +// OwO : https://whats-th.is/ +// Submitted by Dean Sheather +*.owo.codes + +// OX : http://www.ox.rs +// Submitted by Adam Grand +ox.rs + +// oy.lc +// Submitted by Charly Coste +oy.lc + +// Pagefog : https://pagefog.com/ +// Submitted by Derek Myers +pgfog.com + +// Pantheon Systems, Inc. : https://pantheon.io/ +// Submitted by Gary Dylina +gotpantheon.com +pantheonsite.io + +// Paywhirl, Inc : https://paywhirl.com/ +// Submitted by Daniel Netzer +*.paywhirl.com + +// pcarrier.ca Software Inc : https://pcarrier.ca/ +// Submitted by Pierre Carrier +*.xmit.co +xmit.dev +madethis.site +srv.us +gh.srv.us +gl.srv.us + +// Peplink | Pepwave : http://peplink.com/ +// Submitted by Steve Leung +mypep.link + +// Perplexity AI : https://www.perplexity.ai/ +// Submitted by Alec Xiang +pplx.app + +// Perspecta : https://perspecta.com/ +// Submitted by Kenneth Van Alstyne +perspecta.cloud + +// Ping Identity : https://www.pingidentity.com +// Submitted by Ping Identity +forgeblocks.com +id.forgerock.io + +// Plain : https://www.plain.com/ +// Submitted by Jesús Hernández +support.site + +// Planet-Work : https://www.planet-work.com/ +// Submitted by Frédéric VANNIÈRE +on-web.fr + +// Platform.sh : https://platform.sh +// Submitted by Nikola Kotur +*.upsun.app +upsunapp.com +ent.platform.sh +eu.platform.sh +us.platform.sh +*.platformsh.site +*.tst.site + +// Pley AB : https://www.pley.com/ +// Submitted by Henning Pohl +pley.games + +// Porter : https://porter.run/ +// Submitted by Rudraksh MK +onporter.run + +// Positive Codes Technology Company : http://co.bn/faq.html +// Submitted by Zulfais +co.bn + +// Postman, Inc : https://postman.com +// Submitted by Rahul Dhawan +postman-echo.com +pstmn.io +mock.pstmn.io +httpbin.org + +// prequalifyme.today : https://prequalifyme.today +// Submitted by DeepakTiwari deepak@ivylead.io +prequalifyme.today + +// prgmr.com : https://prgmr.com/ +// Submitted by Sarah Newman +xen.prgmr.com + +// priv.at : http://www.nic.priv.at/ +// Submitted by registry +priv.at + +// PROJECT ELIV : https://eliv.kr/ +// Submitted by PROJECT ELIV DomainName Team +c01.kr +eliv-api.kr +eliv-cdn.kr +eliv-dns.kr +mmv.kr +vki.kr + +// project-study : https://project-study.com +// Submitted by yumenewa +dev.project-study.com + +// Protonet GmbH : http://protonet.io +// Submitted by Martin Meier +protonet.io + +// PSL Sandbox : https://github.com/groundcat/PSL-Sandbox +// Submitted by groundcat +platter-app.dev + +// PT Ekossistim Indo Digital : https://e.id +// Submitted by Eid Team +e.id + +// Publication Presse Communication SARL : https://ppcom.fr +// Submitted by Yaacov Akiba Slama +chirurgiens-dentistes-en-france.fr +byen.site + +// PublicZone : https://publiczone.org/ +// Submitted by PublicZone NOC Team +nyc.mn +*.cn.st + +// pubtls.org : https://www.pubtls.org +// Submitted by Kor Nielsen +pubtls.org + +// Puter : https://puter.com +// Submitted by Puter Security Team +puter.app +puter.site +puter.work + +// PythonAnywhere LLP : https://www.pythonanywhere.com +// Submitted by Giles Thomas +pythonanywhere.com +eu.pythonanywhere.com + +// QA2 +// Submitted by Daniel Dent : https://www.danieldent.com/ +qa2.com + +// QCX +// Submitted by Cassandra Beelen +qcx.io +*.sys.qcx.io + +// QNAP System Inc : https://www.qnap.com +// Submitted by Nick Chang +myqnapcloud.cn +alpha-myqnapcloud.com +dev-myqnapcloud.com +mycloudnas.com +mynascloud.com +myqnapcloud.com + +// QOTO, Org. +// Submitted by Jeffrey Phillips Freeman +qoto.io + +// Qualifio : https://qualifio.com/ +// Submitted by Xavier De Cock +qualifioapp.com + +// Quality Unit : https://qualityunit.com +// Submitted by Vasyl Tsalko +ladesk.com + +// Qualy : https://qualyhq.com +// Submitted by Raphael Arias +*.qualyhqpartner.com +*.qualyhqportal.com + +// QuickBackend : https://www.quickbackend.com +// Submitted by Dani Biro +qbuser.com + +// Quip : https://quip.com +// Submitted by Patrick Linehan +*.quipelements.com + +// Qutheory LLC : http://qutheory.io +// Submitted by Jonas Schwartz +vapor.cloud +vaporcloud.io + +// Rackmaze LLC : https://www.rackmaze.com +// Submitted by Kirill Pertsev +rackmaze.com +rackmaze.net + +// Rad Web Hosting : https://radwebhosting.com +// Submitted by Scott Claeys +cloudsite.builders +myradweb.net +servername.us + +// Radix FZC : http://domains.in.net +// Submitted by Gavin Brown +web.in +in.net + +// Raidboxes GmbH : https://raidboxes.de +// Submitted by Auke Tembrink +myrdbx.io +site.rb-hosting.io + +// Railway Corporation : https://railway.com +// Submitted by Phineas Walton +up.railway.app + +// Rancher Labs, Inc : https://rancher.com +// Submitted by Vincent Fiduccia +*.on-rancher.cloud +*.on-k3s.io +*.on-rio.io + +// RavPage : https://www.ravpage.co.il +// Submitted by Roni Horowitz +ravpage.co.il + +// Read The Docs, Inc : https://www.readthedocs.org +// Submitted by David Fischer +readthedocs-hosted.com +readthedocs.io + +// Red Hat, Inc. OpenShift : https://openshift.redhat.com/ +// Submitted by Tim Kramer +rhcloud.com + +// Redgate Software : https://red-gate.com +// Submitted by Andrew Farries +instances.spawn.cc + +// Redpanda Data : https://redpanda.com +// Submitted by Infrastructure Team +*.clusters.rdpa.co +*.srvrless.rdpa.co + +// Render : https://render.com +// Submitted by Anurag Goel +onrender.com +app.render.com + +// Repl.it : https://repl.it +// Submitted by Lincoln Bergeson +replit.app +id.replit.app +firewalledreplit.co +id.firewalledreplit.co +repl.co +id.repl.co +replit.dev +archer.replit.dev +bones.replit.dev +canary.replit.dev +global.replit.dev +hacker.replit.dev +id.replit.dev +janeway.replit.dev +kim.replit.dev +kira.replit.dev +kirk.replit.dev +odo.replit.dev +paris.replit.dev +picard.replit.dev +pike.replit.dev +prerelease.replit.dev +reed.replit.dev +riker.replit.dev +sisko.replit.dev +spock.replit.dev +staging.replit.dev +sulu.replit.dev +tarpit.replit.dev +teams.replit.dev +tucker.replit.dev +wesley.replit.dev +worf.replit.dev +repl.run + +// Resin.io : https://resin.io +// Submitted by Tim Perry +resindevice.io +devices.resinstaging.io + +// RethinkDB : https://www.rethinkdb.com/ +// Submitted by Chris Kastorff +hzc.io + +// Rico Developments Limited : https://adimo.co +// Submitted by Colin Brown +adimo.co.uk + +// Riseup Networks : https://riseup.net +// Submitted by Micah Anderson +itcouldbewor.se + +// Roar Domains LLC : https://roar.basketball/ +// Submitted by Gavin Brown +aus.basketball +nz.basketball + +// ROBOT PAYMENT INC. : https://www.robotpayment.co.jp/ +// Submitted by Kentaro Takamori +subsc-pay.com +subsc-pay.net + +// Rochester Institute of Technology : http://www.rit.edu/ +// Submitted by Jennifer Herting +git-pages.rit.edu + +// Rocky Enterprise Software Foundation : https://resf.org +// Submitted by Neil Hanlon +rocky.page + +// Ruhr University Bochum : https://www.ruhr-uni-bochum.de/ +// Submitted by Andreas Jobs +rub.de +ruhr-uni-bochum.de +io.noc.ruhr-uni-bochum.de + +// Rusnames Limited : http://rusnames.ru/ +// Submitted by Sergey Zotov +биз.рус +ком.рус +крым.рус +мир.рус +мск.рус +орг.рус +самара.рус +сочи.рус +спб.рус +я.рус + +// Russian Academy of Sciences +// Submitted by Tech Support +ras.ru + +// Sakura Frp : https://www.natfrp.com +// Submitted by Bobo Liu +nyat.app + +// SAKURA Internet Inc. : https://www.sakura.ad.jp/ +// Submitted by Internet Service Department +180r.com +dojin.com +sakuratan.com +sakuraweb.com +x0.com +2-d.jp +bona.jp +crap.jp +daynight.jp +eek.jp +flop.jp +halfmoon.jp +jeez.jp +matrix.jp +mimoza.jp +ivory.ne.jp +mail-box.ne.jp +mints.ne.jp +mokuren.ne.jp +opal.ne.jp +sakura.ne.jp +sumomo.ne.jp +topaz.ne.jp +netgamers.jp +nyanta.jp +o0o0.jp +rdy.jp +rgr.jp +rulez.jp +s3.isk01.sakurastorage.jp +s3.isk02.sakurastorage.jp +saloon.jp +sblo.jp +skr.jp +tank.jp +uh-oh.jp +undo.jp +rs.webaccel.jp +user.webaccel.jp +websozai.jp +xii.jp +squares.net +jpn.org +kirara.st +x0.to +from.tv +sakura.tv + +// Salesforce.com, Inc. : https://salesforce.com/ +// Submitted by Salesforce Public Suffix List Team +*.builder.code.com +*.dev-builder.code.com +*.stg-builder.code.com +*.001.test.code-builder-stg.platform.salesforce.com +*.aa.crm.dev +*.ab.crm.dev +*.ac.crm.dev +*.ad.crm.dev +*.ae.crm.dev +*.af.crm.dev +*.ci.crm.dev +*.d.crm.dev +*.pa.crm.dev +*.pb.crm.dev +*.pc.crm.dev +*.pd.crm.dev +*.pe.crm.dev +*.pf.crm.dev +*.w.crm.dev +*.wa.crm.dev +*.wb.crm.dev +*.wc.crm.dev +*.wd.crm.dev +*.we.crm.dev +*.wf.crm.dev + +// Sandstorm Development Group, Inc. : https://sandcats.io/ +// Submitted by Asheesh Laroia +sandcats.io + +// Sav.com, LLC : https://marketing.sav.com/ +// Submitted by Mukul Kudegave +sav.case + +// SBE network solutions GmbH : https://www.sbe.de/ +// Submitted by Norman Meilick +logoip.com +logoip.de + +// Scaleway : https://www.scaleway.com/ +// Submitted by Scaleway PSL Maintainer +fr-par-1.baremetal.scw.cloud +fr-par-2.baremetal.scw.cloud +nl-ams-1.baremetal.scw.cloud +cockpit.fr-par.scw.cloud +ddl.fr-par.scw.cloud +dtwh.fr-par.scw.cloud +fnc.fr-par.scw.cloud +functions.fnc.fr-par.scw.cloud +ifr.fr-par.scw.cloud +k8s.fr-par.scw.cloud +nodes.k8s.fr-par.scw.cloud +kafk.fr-par.scw.cloud +mgdb.fr-par.scw.cloud +rdb.fr-par.scw.cloud +s3.fr-par.scw.cloud +s3-website.fr-par.scw.cloud +scbl.fr-par.scw.cloud +whm.fr-par.scw.cloud +priv.instances.scw.cloud +pub.instances.scw.cloud +k8s.scw.cloud +cockpit.nl-ams.scw.cloud +ddl.nl-ams.scw.cloud +dtwh.nl-ams.scw.cloud +ifr.nl-ams.scw.cloud +k8s.nl-ams.scw.cloud +nodes.k8s.nl-ams.scw.cloud +kafk.nl-ams.scw.cloud +mgdb.nl-ams.scw.cloud +rdb.nl-ams.scw.cloud +s3.nl-ams.scw.cloud +s3-website.nl-ams.scw.cloud +scbl.nl-ams.scw.cloud +whm.nl-ams.scw.cloud +cockpit.pl-waw.scw.cloud +ddl.pl-waw.scw.cloud +dtwh.pl-waw.scw.cloud +ifr.pl-waw.scw.cloud +k8s.pl-waw.scw.cloud +nodes.k8s.pl-waw.scw.cloud +kafk.pl-waw.scw.cloud +mgdb.pl-waw.scw.cloud +rdb.pl-waw.scw.cloud +s3.pl-waw.scw.cloud +s3-website.pl-waw.scw.cloud +scbl.pl-waw.scw.cloud +scalebook.scw.cloud +smartlabeling.scw.cloud +dedibox.fr + +// schokokeks.org GbR : https://schokokeks.org/ +// Submitted by Hanno Böck +schokokeks.net + +// Scottish Government : https://www.gov.scot +// Submitted by Martin Ellis +gov.scot +service.gov.scot + +// Scry Security : http://www.scrysec.com +// Submitted by Shante Adam +scrysec.com + +// Scrypted : https://scrypted.app +// Submitted by Koushik Dutta +client.scrypted.io + +// Securepoint GmbH : https://www.securepoint.de +// Submitted by Erik Anders +firewall-gateway.com +firewall-gateway.de +my-gateway.de +my-router.de +spdns.de +spdns.eu +firewall-gateway.net +my-firewall.org +myfirewall.org +spdns.org + +// Seidat : https://www.seidat.com +// Submitted by Artem Kondratev +seidat.net + +// Sellfy : https://sellfy.com +// Submitted by Yuriy Romadin +sellfy.store + +// Sendmsg : https://www.sendmsg.co.il +// Submitted by Assaf Stern +minisite.ms + +// Senseering GmbH : https://www.senseering.de +// Submitted by Felix Mönckemeyer +senseering.net + +// Servebolt AS : https://servebolt.com +// Submitted by Daniel Kjeserud +servebolt.cloud + +// Service Online LLC : http://drs.ua/ +// Submitted by Serhii Bulakh +biz.ua +co.ua +pp.ua + +// Shanghai Accounting Society : https://www.sasf.org.cn +// Submitted by Information Administration +as.sh.cn + +// Shanghai Oray Information Technology Co., Ltd.: https://www.oray.com/ +// Submitted by: Shanghai Oray Information Technology Co., Ltd. +vicp.fun +yicp.fun +zicp.fun + +// Sheezy.Art : https://sheezy.art +// Submitted by Nyoom +sheezy.games + +// Shopblocks : http://www.shopblocks.com/ +// Submitted by Alex Bowers +myshopblocks.com + +// Shopify : https://www.shopify.com +// Submitted by Alex Richter +myshopify.com + +// Shopit : https://www.shopitcommerce.com/ +// Submitted by Craig McMahon +shopitsite.com + +// shopware AG : https://shopware.com +// Submitted by Jens Küper +shopware.shop +shopware.store + +// Siemens Mobility GmbH +// Submitted by Oliver Graebner +mo-siemens.io + +// SinaAppEngine : http://sae.sina.com.cn/ +// Submitted by SinaAppEngine +1kapp.com +appchizi.com +applinzi.com +sinaapp.com +vipsinaapp.com + +// Siteleaf : https://www.siteleaf.com/ +// Submitted by Skylar Challand +siteleaf.net + +// Small Technology Foundation : https://small-tech.org +// Submitted by Aral Balkan +small-web.org + +// Smallregistry by Promopixel SARL : https://www.smallregistry.net +// Former AFNIC's SLDs +// Submitted by Jérôme Lipowicz +aeroport.fr +avocat.fr +chambagri.fr +chirurgiens-dentistes.fr +experts-comptables.fr +medecin.fr +notaires.fr +pharmacien.fr +port.fr +veterinaire.fr + +// Smoove.io : https://www.smoove.io/ +// Submitted by Dan Kozak +vp4.me + +// Snowflake Inc : https://www.snowflake.com/ +// Submitted by Sam Haar +*.snowflake.app +*.privatelink.snowflake.app +streamlit.app +streamlitapp.com + +// Snowplow Analytics : https://snowplowanalytics.com/ +// Submitted by Ian Streeter +try-snowplow.com + +// Software Consulting Michal Zalewski : https://www.mafelo.com +// Submitted by Michal Zalewski +mafelo.net + +// Solana Name Service : https://sns.id +// Submitted by Solana Name Service +sol.site + +// Sony Interactive Entertainment LLC : https://sie.com/ +// Submitted by David Coles +playstation-cloud.com + +// SourceHut : https://sourcehut.org +// Submitted by Drew DeVault +srht.site + +// SourceLair PC : https://www.sourcelair.com +// Submitted by Antonis Kalipetis +apps.lair.io +*.stolos.io + +// sourceWAY GmbH : https://sourceway.de +// Submitted by Richard Reiber +4.at +my.at +my.de +*.nxa.eu +nx.gw + +// Spawnbase : https://spawnbase.ai +// Submitted by Alexander Zuev +spawnbase.app + +// SpeedPartner GmbH : https://www.speedpartner.de/ +// Submitted by Stefan Neufeind +customer.speedpartner.de + +// Spreadshop (sprd.net AG) : https://www.spreadshop.com/ +// Submitted by Martin Breest +myspreadshop.at +myspreadshop.com.au +myspreadshop.be +myspreadshop.ca +myspreadshop.ch +myspreadshop.com +myspreadshop.de +myspreadshop.dk +myspreadshop.es +myspreadshop.fi +myspreadshop.fr +myspreadshop.ie +myspreadshop.it +myspreadshop.net +myspreadshop.nl +myspreadshop.no +myspreadshop.pl +myspreadshop.se +myspreadshop.co.uk + +// StackBlitz : https://stackblitz.com +// Submitted by Dominic Elm & Albert Pai +w-corp-staticblitz.com +w-credentialless-staticblitz.com +w-staticblitz.com +bolt.host + +// Stackhero : https://www.stackhero.io +// Submitted by Adrien Gillon +stackhero-network.com + +// STACKIT GmbH & Co. KG : https://www.stackit.de/en/ +// Submitted by STACKIT-DNS Team (Simon Stier) +runs.onstackit.cloud +stackit.gg +stackit.rocks +stackit.run +stackit.zone + +// Stackryze : https://stackryze.com +// Submitted by Sudheer Bhuvana +sryze.cc +indevs.in + +// Staclar : https://staclar.com +// Submitted by Q Misell +// Submitted by Matthias Merkel +musician.io +novecore.site + +// Standard Library : https://stdlib.com +// Submitted by Jacob Lee +api.stdlib.com + +// statichost.eu : https://www.statichost.eu +// Submitted by Eric Selin +statichost.page + +// stereosense GmbH : https://www.involve.me +// Submitted by Florian Burmann +feedback.ac +forms.ac +assessments.cx +calculators.cx +funnels.cx +paynow.cx +quizzes.cx +researched.cx +tests.cx +surveys.so + +// Storacha Network : https://storacha.network +// Submitted by Alan Shaw +ipfs.storacha.link +ipfs.w3s.link + +// Storebase : https://www.storebase.io +// Submitted by Tony Schirmer +storebase.store + +// Storj Labs Inc. : https://storj.io/ +// Submitted by Philip Hutchins +storj.farm + +// Strapi : https://strapi.io/ +// Submitted by Florent Baldino +strapiapp.com +media.strapiapp.com + +// Strategic System Consulting (eApps Hosting) : https://www.eapps.com/ +// Submitted by Alex Oancea +vps-host.net +atl.jelastic.vps-host.net +njs.jelastic.vps-host.net +ric.jelastic.vps-host.net + +// Streak : https://streak.com +// Submitted by Blake Kadatz +streak-link.com +streaklinks.com +streakusercontent.com + +// Student-Run Computing Facility : https://www.srcf.net/ +// Submitted by Edwin Balani +soc.srcf.net +user.srcf.net + +// Studenten Net Twente : http://www.snt.utwente.nl/ +// Submitted by Silke Hofstra +utwente.io + +// Sub 6 Limited : http://www.sub6.com +// Submitted by Dan Miller +temp-dns.com + +// Supabase : https://supabase.io +// Submitted by Supabase Security +supabase.co +realtime.supabase.co +storage.supabase.co +supabase.in +supabase.net + +// Syncloud : https://syncloud.org +// Submitted by Boris Rybalkin +syncloud.it + +// Synology, Inc. : https://www.synology.com/ +// Submitted by Rony Weng +dscloud.biz +direct.quickconnect.cn +dsmynas.com +familyds.com +diskstation.me +dscloud.me +i234.me +myds.me +synology.me +dscloud.mobi +dsmynas.net +familyds.net +dsmynas.org +familyds.org +direct.quickconnect.to +vpnplus.to + +// Tabit Technologies Ltd. : https://tabit.cloud/ +// Submitted by Oren Agiv +mytabit.com +mytabit.co.il +tabitorder.co.il + +// TAIFUN Software AG : http://taifun-software.de +// Submitted by Bjoern Henke +taifun-dns.de + +// Tailor Inc. : https://www.tailor.tech +// Submitted by Ryuzo Yamamoto +erp.dev +web.erp.dev + +// Tailscale Inc. : https://www.tailscale.com +// Submitted by David Anderson +ts.net +*.c.ts.net + +// TASK geographical domains : https://task.gda.pl/en/services/for-entrepreneurs/ +gda.pl +gdansk.pl +gdynia.pl +med.pl +sopot.pl + +// Tave Creative Corp : https://tave.com/ +// Submitted by Adrian Ziemkowski +taveusercontent.com + +// tawk.to, Inc : https://www.tawk.to +// Submitted by tawk.to developer team +p.tawk.email +p.tawkto.email + +// Tche.br : https://tche.br +// Submitted by Bruno Lorensi +tche.br + +// team.blue : https://team.blue +// Submitted by Cedric Dubois +site.tb-hosting.com +directwp.eu + +// TechEdge Limited: https://www.nic.uk.cc/ +// Submitted by TechEdge Developer +ec.cc +eu.cc +gu.cc +uk.cc +us.cc + +// Teckids e.V. : https://www.teckids.org +// Submitted by Dominik George +edugit.io +s3.teckids.org + +// Telebit : https://telebit.cloud +// Submitted by AJ ONeal +telebit.app +telebit.io +*.telebit.xyz + +// Teleport : https://goteleport.com +// Submitted by Rob Picard +teleport.sh + +// Thingdust AG : https://thingdust.com/ +// Submitted by Adrian Imboden +*.firenet.ch +*.svc.firenet.ch +reservd.com +thingdustdata.com +cust.dev.thingdust.io +reservd.dev.thingdust.io +cust.disrec.thingdust.io +reservd.disrec.thingdust.io +cust.prod.thingdust.io +cust.testing.thingdust.io +reservd.testing.thingdust.io + +// ticket i/O GmbH : https://ticket.io +// Submitted by Christian Franke +tickets.io + +// Tigris Data, Inc. : https://www.tigrisdata.com +// Submitted by Bo Cao +t3.storage.dev +t3.storageapi.dev + +// Tlon.io : https://tlon.io +// Submitted by Mark Staarink +arvo.network +azimuth.network +tlon.network + +// Tor Project, Inc. : https://torproject.org +// Submitted by Antoine Beaupré +torproject.net +pages.torproject.net + +// TownNews.com : http://www.townnews.com +// Submitted by Dustin Ward +townnews-staging.com + +// TrafficPlex GmbH : https://www.trafficplex.de/ +// Submitted by Phillipp Röll +12hp.at +2ix.at +4lima.at +lima-city.at +12hp.ch +2ix.ch +4lima.ch +lima-city.ch +trafficplex.cloud +de.cool +12hp.de +2ix.de +4lima.de +lima-city.de +1337.pictures +clan.rip +lima-city.rocks +webspace.rocks +lima.zone + +// TransIP : https://www.transip.nl +// Submitted by Rory Breuk and Cedric Dubois +*.transurl.be +*.transurl.eu +site.transip.me +*.transurl.nl + +// Triton Data Center project : https://tritondatacenter.com +// Submitted by Triton Data Center staff +*.triton.zone + +// Tunnelmole: https://tunnelmole.com +// Submitted by Robbie Cahill +tunnelmole.net + +// TuxFamily : http://tuxfamily.org +// Submitted by TuxFamily administrators +tuxfamily.org + +// Typedream : https://typedream.com +// Submitted by Putri Karunia +typedream.app + +// Typeform : https://www.typeform.com +// Submitted by Typeform +pro.typeform.com + +// Uberspace : https://uberspace.de +// Submitted by Moritz Werner +uber.space + +// UDR Limited : http://www.udr.hk.com +// Submitted by registry +hk.com +inc.hk +ltd.hk +hk.org + +// UK Intis Telecom LTD : https://it.com +// Submitted by ITComdomains +it.com + +// Umso Software Inc. : https://www.umso.com +// Submitted by Alexis Taylor +umso.co + +// Unison Computing, PBC : https://unison.cloud +// Submitted by Simon Højberg +unison-services.cloud + +// United Gameserver GmbH : https://united-gameserver.de +// Submitted by Stefan Schwarz +virtual-user.de +virtualuser.de + +// United States Writing Corporation : https://uswriting.co +// Submitted by Andrew Sampson +obj.ag + +// UNIVERSAL DOMAIN REGISTRY : https://www.udr.org.yt/ +// see also: whois -h whois.udr.org.yt help +// Submitted by Atanunu Igbunuroghene +name.pm +sch.tf +biz.wf +sch.wf +org.yt + +// University of Banja Luka : https://unibl.org +// Domains for Republic of Srpska administrative entity. +// Submitted by Marko Ivanovic +rs.ba + +// University of Bielsko-Biala regional domain : http://dns.bielsko.pl/ +// Submitted by Marcin +bielsko.pl + +// urown.net : https://urown.net +// Submitted by Hostmaster +urown.cloud +dnsupdate.info + +// US REGISTRY LLC : http://us.org +// Submitted by Gavin Brown +us.org + +// V.UA Domain Registry: https://www.v.ua/ +// Submitted by Serhii Rostilo +v.ua + +// Val Town, Inc : https://val.town/ +// Submitted by Tom MacWright +val.run +web.val.run + +// Vercel, Inc : https://vercel.com/ +// Submitted by Laurens Duijvesteijn +vercel.app +v0.build +vercel.dev +vusercontent.net +vercel.run +now.sh + +// VeryPositive SIA : http://very.lv +// Submitted by Danko Aleksejevs +2038.io + +// Virtual-Info : https://www.virtual-info.info/ +// Submitted by Adnan RIHAN +v-info.info + +// VistaBlog : https://vistablog.ir/ +// Submitted by Hossein Piri +vistablog.ir + +// Viva Republica, Inc. : https://toss.im/ +// Submitted by Deus Team +deus-canvas.com + +// vivenu GmbH : https://vivenu.com/ +// Submitted by Marvin Frick +vivenushop.com +vivenushop.dev + +// Voorloper.com : https://voorloper.com +// Submitted by Nathan van Bakel +voorloper.cloud + +// Vultr Objects : https://www.vultr.com/products/object-storage/ +// Submitted by Niels Maumenee +*.vultrobjects.com + +// Waffle Computer Inc., Ltd. : https://docs.waffleinfo.com +// Submitted by Masayuki Note +wafflecell.com + +// Walrus : https://walrus.xyz +// Submitted by Max Spector +wal.app + +// Wasmer: https://wasmer.io +// Submitted by Lorentz Kinde +wasmer.app + +// Webflow, Inc. : https://www.webflow.com +// Submitted by Webflow Security Team +webflow.io +webflowtest.io + +// WebHare bv : https://www.webhare.com/ +// Submitted by Arnold Hendriks +*.webhare.dev + +// WebHotelier Technologies Ltd : https://www.webhotelier.net/ +// Submitted by Apostolos Tsakpinis +hotelwithflight.com +reserve-online.net +book.online + +// WebPros International, LLC : https://webpros.com/ +// Submitted by Nicolas Rochelemagne +cprapid.com +pleskns.com +wp2.host +pdns.page +plesk.page +cpanel.site +wpsquared.site + +// WebWaddle Ltd : https://webwaddle.com/ +// Submitted by Merlin Glander +*.wadl.top + +// Western Digital Technologies, Inc : https://www.wdc.com +// Submitted by Jung Jin +remotewd.com + +// Whatbox Inc. : https://whatbox.ca/ +// Submitted by Anthony Ryan +box.ca + +// WIARD Enterprises : https://wiardweb.com +// Submitted by Kidd Hustle +pages.wiardweb.com + +// Wikimedia Foundation : https://wikitech.wikimedia.org +// Submitted by Timo Tijhof +toolforge.org +wmcloud.org +beta.wmcloud.org +wmflabs.org + +// William Harrison : https://wharrison.com.au +// Submitted by William Harrison +vps.hrsn.au +hrsn.dev +is-a.dev +localcert.net + +// Windsurf : https://windsurf.com +// Submitted by Douglas Chen +windsurf.app +windsurf.build + +// WirelessCar : https://wirelesscar.com +// Submitted by Martin Lindberg +drive-platform.com +drive-platform.io + +// WISP : https://wisp.gg +// Submitted by Stepan Fedotov +panel.gg +daemon.panel.gg + +// Wix.com, Inc. : https://www.wix.com +// Submitted by Shahar Talmi / Alon Kochba +base44.app +base44-sandbox.com +wixsite.com +wixstudio.com +editorx.io +wixstudio.io +wix.run + +// Wizard Zines : https://wizardzines.com +// Submitted by Julia Evans +messwithdns.com + +// WoltLab GmbH : https://www.woltlab.com +// Submitted by Tim Düsterhus +woltlab-demo.com +myforum.community +community-pro.de +diskussionsbereich.de +community-pro.net +meinforum.net + +// Woods Valldata : https://www.woodsvalldata.co.uk/ +// Submitted by Chris Whittle +affinitylottery.org.uk +raffleentry.org.uk +weeklylottery.org.uk + +// WP Engine : https://wpengine.com/ +// Submitted by Michael Smith +// Submitted by Brandon DuRette +wpenginepowered.com +js.wpenginepowered.com + +// xAI : https://x.ai/ +// Submitted by Asim Shrestha +grok.me + +// XenonCloud GbR : https://xenoncloud.net +// Submitted by Julian Uphoff +*.xenonconnect.de +half.host + +// XnBay Technology : http://www.xnbay.com/ +// Submitted by XnBay Developer +xnbay.com +u2.xnbay.com +u2-local.xnbay.com + +// XS4ALL Internet bv : https://www.xs4all.nl/ +// Submitted by Daniel Mostertman +cistron.nl +demon.nl +xs4all.space + +// xTool : https://xtool.com +// Submitted by Echo +xtooldevice.com + +// Yandex.Cloud LLC : https://cloud.yandex.com +// Submitted by Alexander Lodin +yandexcloud.net +storage.yandexcloud.net +website.yandexcloud.net +sourcecraft.site + +// YesCourse Pty Ltd : https://yescourse.com +// Submitted by Atul Bhouraskar +official.academy + +// Yola : https://www.yola.com/ +// Submitted by Stefano Rivera +yolasite.com + +// Yunohost : https://yunohost.org +// Submitted by Valentin Grimaud +ynh.fr +nohost.me +noho.st + +// ZaNiC : http://www.za.net/ +// Submitted by registry +za.net +za.org + +// ZAP-Hosting GmbH & Co. KG : https://zap-hosting.com +// Submitted by Julian Alker +zap.cloud + +// Zeabur : https://zeabur.com/ +// Submitted by Zeabur Team +zeabur.app + +// Zerops : https://zerops.io/ +// Submitted by Zerops Team +*.zerops.app +prg1-zerops.zone +*.zerops.zone + +// Zine EOOD : https://zine.bg/ +// Submitted by Martin Angelov +bss.design + +// Zitcom A/S : https://www.zitcom.dk +// Submitted by Emil Stahl +basicserver.io +virtualserver.io +enterprisecloud.nu + +// Zone.ID: https://zone.id +// Submitted by Gx1.org +zone.id +nett.to + +// ZoneABC : https://zoneabc.net +// Submitted by ZoneABC Team +zabc.net + +// ===END PRIVATE DOMAINS=== diff --git a/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/urlhaus-filter/LICENSE.md b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/urlhaus-filter/LICENSE.md new file mode 100644 index 00000000..b81428ec --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/urlhaus-filter/LICENSE.md @@ -0,0 +1,42 @@ +CC0 1.0 Universal +================== + +Statement of Purpose +--------------------- + +The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent owner(s) (each and all, an "owner") of an original work of authorship and/or a database (each, a "Work"). + +Certain owners wish to permanently relinquish those rights to a Work for the purpose of contributing to a commons of creative, cultural and scientific works ("Commons") that the public can reliably and without fear of later claims of infringement build upon, modify, incorporate in other works, reuse and redistribute as freely as possible in any form whatsoever and for any purposes, including without limitation commercial purposes. These owners may contribute to the Commons to promote the ideal of a free culture and the further production of creative, cultural and scientific works, or to gain reputation or greater distribution for their Work in part through the use and efforts of others. + +For these and/or other purposes and motivations, and without any expectation of additional consideration or compensation, the person associating CC0 with a Work (the "Affirmer"), to the extent that he or she is an owner of Copyright and Related Rights in the Work, voluntarily elects to apply CC0 to the Work and publicly distribute the Work under its terms, with knowledge of his or her Copyright and Related Rights in the Work and the meaning and intended legal effect of CC0 on those rights. + +1. Copyright and Related Rights. +-------------------------------- +A Work made available under CC0 may be protected by copyright and related or neighboring rights ("Copyright and Related Rights"). Copyright and Related Rights include, but are not limited to, the following: + +i. the right to reproduce, adapt, distribute, perform, display, communicate, and translate a Work; +ii. moral rights retained by the original author(s) and/or performer(s); +iii. publicity and privacy rights pertaining to a person's image or likeness depicted in a Work; +iv. rights protecting against unfair competition in regards to a Work, subject to the limitations in paragraph 4(a), below; +v. rights protecting the extraction, dissemination, use and reuse of data in a Work; +vi. database rights (such as those arising under Directive 96/9/EC of the European Parliament and of the Council of 11 March 1996 on the legal protection of databases, and under any national implementation thereof, including any amended or successor version of such directive); and +vii. other similar, equivalent or corresponding rights throughout the world based on applicable law or treaty, and any national implementations thereof. + +2. Waiver. +----------- +To the greatest extent permitted by, but not in contravention of, applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and unconditionally waives, abandons, and surrenders all of Affirmer's Copyright and Related Rights and associated claims and causes of action, whether now known or unknown (including existing as well as future claims and causes of action), in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each member of the public at large and to the detriment of Affirmer's heirs and successors, fully intending that such Waiver shall not be subject to revocation, rescission, cancellation, termination, or any other legal or equitable action to disrupt the quiet enjoyment of the Work by the public as contemplated by Affirmer's express Statement of Purpose. + +3. Public License Fallback. +---------------------------- +Should any part of the Waiver for any reason be judged legally invalid or ineffective under applicable law, then the Waiver shall be preserved to the maximum extent permitted taking into account Affirmer's express Statement of Purpose. In addition, to the extent the Waiver is so judged Affirmer hereby grants to each affected person a royalty-free, non transferable, non sublicensable, non exclusive, irrevocable and unconditional license to exercise Affirmer's Copyright and Related Rights in the Work (i) in all territories worldwide, (ii) for the maximum duration provided by applicable law or treaty (including future time extensions), (iii) in any current or future medium and for any number of copies, and (iv) for any purpose whatsoever, including without limitation commercial, advertising or promotional purposes (the "License"). The License shall be deemed effective as of the date CC0 was applied by Affirmer to the Work. Should any part of the License for any reason be judged legally invalid or ineffective under applicable law, such partial invalidity or ineffectiveness shall not invalidate the remainder of the License, and in such case Affirmer hereby affirms that he or she will not (i) exercise any of his or her remaining Copyright and Related Rights in the Work or (ii) assert any associated claims and causes of action with respect to the Work, in either case contrary to Affirmer's express Statement of Purpose. + +4. Limitations and Disclaimers. +-------------------------------- + +a. No trademark or patent rights held by Affirmer are waived, abandoned, surrendered, licensed or otherwise affected by this document. +b. Affirmer offers the Work as-is and makes no representations or warranties of any kind concerning the Work, express, implied, statutory or otherwise, including without limitation warranties of title, merchantability, fitness for a particular purpose, non infringement, or the absence of latent or other defects, accuracy, or the present or absence of errors, whether or not discoverable, all to the greatest extent permissible under applicable law. +c. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person's Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. +d. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. + +For more information, please see +https://creativecommons.org/publicdomain/zero/1.0/ \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt new file mode 100644 index 00000000..82a2cb42 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/assets/thirdparties/urlhaus-filter/urlhaus-filter-online.txt @@ -0,0 +1,9493 @@ +! Title: Online Malicious URL Blocklist +! Updated: 2026-07-08T00:10:17Z +! Expires: 12 hours (update frequency) +! Homepage: https://gitlab.com/malware-filter/urlhaus-filter +! License: https://gitlab.com/malware-filter/urlhaus-filter#license +! Source: https://urlhaus.abuse.ch/api/ +0022a601.pphost.net +101.126.11.168 +101.200.193.211 +101.200.220.118 +101.35.56.7 +101.43.49.183 +101.58.73.179 +101.66.43.107 +102.212.61.41 +102.216.105.81 +102.23.89.5 +102.53.15.17 +102.53.15.18 +102.68.74.69 +103.106.250.161 +103.116.190.93 +103.123.98.220 +103.125.163.10 +103.144.210.195 +103.149.90.4 +103.153.93.18 +103.154.90.21 +103.160.130.109 +103.163.119.220 +103.164.117.74 +103.164.128.184 +103.164.18.170 +103.164.191.74 +103.164.200.170 +103.173.173.98 +103.187.151.107 +103.20.213.34 +103.206.139.61 +103.209.67.34 +103.217.215.238 +103.219.161.81 +103.226.249.227 +103.226.250.88 +103.227.118.45 +103.232.213.24 +103.236.133.81 +103.236.135.177 +103.240.211.121 +103.245.10.51 +103.247.164.242 +103.247.218.186 +103.36.80.114 +103.42.201.36 +103.42.243.35 +103.50.4.212 +103.54.153.49 +103.59.134.98 +103.63.231.168 +103.73.162.39 +103.73.162.97 +103.8.112.155 +103.8.112.156 +103.8.164.18 +103.83.87.122 +103.90.205.117 +103.90.206.87 +103.93.200.20 +103.96.96.35 +104.187.164.149 +104.199.248.167 +104.4.43.233 +105.184.194.116 +105.224.71.15 +106.14.68.26 +106.254.250.98 +106.54.220.107 +106.55.134.240 +107.128.101.219 +107.173.101.114 +107.175.89.136 +107.180.89.159 +107.191.60.218 +107.198.40.184 +108.41.80.142 +109.108.84.121 +109.160.87.2 +109.166.211.222 +109.167.133.17 +109.193.105.79 +109.207.216.197 +109.207.217.114 +109.236.46.215 +109.245.220.229 +109.25.123.70 +109.69.79.44 +109.74.204.206 +109.92.143.90 +110.36.1.200 +110.36.15.18 +110.36.19.101 +110.36.80.162 +110.36.89.2 +110.36.93.217 +110.37.14.156 +110.37.39.32 +110.37.53.25 +110.38.207.151 +110.38.223.172 +110.39.233.38 +110.39.237.185 +110.39.238.66 +110.39.239.253 +110.39.253.204 +110.85.99.216 +11032026sver.blob.core.windows.net +111.185.147.232 +111.185.23.52 +111.228.4.54 +111.228.55.96 +111.235.143.155 +111.59.254.165 +111.70.13.127 +111.74.21.155 +112.111.110.124 +112.124.33.87 +112.18.10.80 +112.213.121.130 +112.234.31.244 +112.248.143.42 +112.251.248.241 +112.254.223.118 +112.255.27.172 +112.27.10.150 +112.4.110.22 +112.4.110.28 +112.4.110.42 +112.98.97.83 +113.160.251.236 +113.228.74.16 +113.237.56.144 +113.239.73.143 +114.129.49.131 +114.132.86.182 +114.143.158.122 +114.215.193.12 +114.233.77.23 +114.55.106.136 +114.7.160.114 +114.7.209.193 +115.159.149.113 +115.190.161.178 +115.190.237.175 +115.190.250.28 +115.192.23.45 +115.240.70.185 +115.49.201.102 +115.50.3.250 +115.50.89.177 +115.50.95.121 +115.54.118.34 +115.55.10.88 +115.56.157.238 +115.56.64.251 +115.59.225.152 +115.59.61.161 +116.118.47.149 +116.136.142.2 +116.140.173.225 +116.171.106.3 +116.198.233.179 +116.58.62.74 +116.90.225.193 +116.90.236.250 +117.157.17.194 +117.20.27.25 +117.215.129.223 +117.216.139.127 +117.216.46.161 +117.216.46.201 +117.216.46.91 +117.216.46.94 +117.240.155.245 +117.241.74.14 +117.241.78.146 +117.245.84.209 +117.247.101.185 +117.247.101.217 +117.247.101.61 +117.247.101.63 +117.247.191.106 +117.72.178.246 +117.72.181.104 +117.72.183.111 +117.72.39.83 +118.139.167.36 +118.178.133.241 +118.179.121.235 +118.179.144.202 +118.189.172.141 +118.200.67.119 +118.212.35.175 +118.219.11.202 +118.25.68.152 +118.69.157.212 +118.70.244.17 +118.71.250.6 +119.116.131.31 +119.117.252.95 +119.117.84.80 +119.118.90.115 +119.119.168.238 +119.163.181.201 +119.179.248.81 +119.186.232.222 +119.193.158.215 +119.206.216.132 +119.45.105.211 +119.91.141.214 +119.91.25.19 +119.91.58.97 +120.43.54.158 +120.48.115.29 +120.50.10.30 +120.76.143.184 +120.79.64.164 +121.101.79.178 +121.142.70.6 +121.184.128.134 +121.202.142.68 +121.202.196.93 +121.202.204.227 +121.202.208.107 +121.202.208.193 +121.202.208.237 +121.202.209.46 +121.205.208.201 +121.43.104.75 +121.6.96.248 +122.138.231.189 +122.165.240.3 +122.168.123.76 +122.170.110.131 +122.170.8.40 +122.179.136.112 +122.232.98.183 +123.10.233.81 +123.117.136.97 +123.12.20.55 +123.129.153.224 +123.13.52.232 +123.130.59.140 +123.132.166.255 +123.143.141.75 +123.148.191.5 +123.148.226.61 +123.188.4.167 +123.188.72.73 +123.188.73.220 +123.188.80.212 +123.188.87.204 +123.232.142.200 +123.232.43.185 +123.235.194.222 +123.4.190.17 +123.57.250.154 +123.58.64.57 +123.8.175.1 +123.8.55.58 +123.9.245.88 +123.9.95.33 +123.ywxww.net +124.11.64.11 +124.123.123.15 +124.194.46.204 +124.220.6.158 +124.223.105.161 +124.223.73.186 +124.229.32.123 +124.230.216.19 +124.44.3.74 +124.67.254.109 +124.77.162.107 +125.104.155.79 +125.161.140.79 +125.253.125.72 +125.41.75.221 +125.42.32.119 +125.43.106.36 +125.45.57.40 +126.23.203.236 +129.121.114.124 +129.152.20.82 +13.71.2.244 +130.0.44.29 +130.12.180.190 +130.12.182.175 +130.185.193.208 +132.247.103.239 +132.255.192.122 +132.red-81-42-249.staticip.rima-tde.net +134.122.189.74 +134.122.189.79 +134.122.189.98 +134.249.141.119 +136.233.149.66 +136.60.32.162 +138.122.43.76 +138.36.2.110 +139.162.53.175 +139.198.15.223 +14.142.209.198 +14.161.6.225 +14.224.205.246 +14.46.136.77 +14.49.202.139 +14.52.87.27 +141.11.88.103 +141.134.214.217 +141.134.214.46 +141.147.43.219 +141.155.36.213 +143.20.185.89 +144.172.71.105 +144.2.111.169 +144.31.151.138 +144.6.87.144 +144.6.89.62 +146.0.42.82 +146.196.120.21 +146.255.245.170 +147.235.55.179 +147.50.240.62 +148.113.205.94 +149.241.40.177 +149.62.200.106 +150.129.202.193 +150.129.202.197 +150.158.25.244 +150.40.126.53 +150.95.27.35 +151.115.99.253 +151.236.247.230 +151.242.30.51 +152.230.111.46 +152.32.169.68 +152.32.202.240 +152.67.84.123 +152.89.247.153 +153.37.77.156 +154.0.129.114 +154.0.129.134 +154.222.29.103 +154.84.212.18 +155.138.220.70 +155.2.213.252 +156.200.99.139 +156.246.93.156 +157.10.63.251 +157.185.170.200 +158.255.83.113 +158.255.83.149 +158.255.83.99 +158.94.210.131 +160.119.69.4 +160.187.146.122 +160.202.15.212 +162.141.92.192 +162.194.8.169 +162.215.130.152 +162.215.218.82 +162.215.218.94 +162.248.100.101 +163.142.94.218 +163.53.178.8 +164.126.129.225 +164.126.150.95 +164.160.41.10 +165.154.184.75 +165.22.248.57 +165.73.108.6 +166.143.253.132 +166.144.131.188 +166.147.146.187 +167.250.193.253 +167.99.0.131 +168.121.168.84 +168.138.162.78 +168.222.254.167 +170.83.13.37 +171.213.144.239 +171.38.25.33 +171.8.21.66 +171.83.236.10 +1717.1000uc.com +172.236.108.48 +172.85.143.74 +172.94.9.168 +172.96.189.153 +174.105.154.212 +174.71.237.86 +174.71.238.196 +175.146.227.235 +175.167.187.31 +175.167.76.60 +175.168.245.77 +175.17.228.41 +175.174.103.84 +175.174.51.2 +175.175.8.48 +175.178.174.23 +176.102.192.245 +176.102.198.226 +176.106.241.72 +176.120.203.230 +176.221.111.222 +176.62.179.34 +177.70.102.228 +178.132.114.159 +178.16.52.221 +178.16.52.80 +178.16.54.109 +178.16.54.212 +178.16.54.34 +178.16.54.90 +178.16.54.93 +178.16.55.93 +178.170.251.9 +178.173.39.201 +178.176.107.122 +178.176.204.240 +178.176.204.250 +178.183.205.197 +178.183.208.134 +178.183.70.63 +178.188.30.171 +178.198.246.24 +178.210.83.9 +178.211.135.170 +178.220.234.5 +178.248.3.202.ll.sta.mana.pf +178.61.160.6 +179.214.0.18 +179.248.3.202.ll.sta.mana.pf +179.43.182.70 +179.51.168.26 +179.63.168.2 +18.176.47.246 +180.108.24.111 +180.116.55.223 +180.148.33.24 +180.76.141.175 +180.76.153.78 +180.92.228.34 +181.129.182.138 +181.143.20.60 +181.211.15.11 +181.225.67.10 +181.48.119.70 +181.49.47.190 +181.55.251.93 +181.60.246.15 +182.109.0.22 +182.113.200.200 +182.117.166.24 +182.119.33.172 +182.121.251.220 +182.123.208.197 +182.126.121.9 +182.127.102.167 +182.127.108.91 +182.127.112.76 +182.160.102.188 +182.160.109.98 +182.163.114.232 +182.191.88.160 +182.23.87.242 +182.239.78.134 +182.239.81.126 +182.253.115.155 +182.253.115.156 +182.38.191.105 +182.45.56.143 +182.52.51.239 +182.54.141.236 +182.72.167.124 +182.73.129.30 +182.92.99.95 +182.93.58.234 +182.93.83.124 +183.109.132.168 +183.196.29.73 +183.214.149.164 +183.30.204.215 +183.81.156.121 +183.81.156.123 +183.81.156.124 +183.81.156.125 +183.83.186.77 +184.160.27.44 +184.174.20.150 +184.185.30.182 +185-55-196-13.cprapid.com +185.102.115.99 +185.12.78.161 +185.133.214.138 +185.149.120.3 +185.152.219.150 +185.166.91.145 +185.168.227.130 +185.191.89.120 +185.191.89.122 +185.2.229.122 +185.20.19.72 +185.205.226.191 +185.224.107.4 +185.233.94.151 +185.237.41.72 +185.242.3.8 +185.248.14.255 +185.253.75.188 +185.32.179.229 +185.4.64.128 +185.43.17.123 +185.43.45.171 +185.49.168.84 +185.57.69.125 +185.60.107.150 +185.71.233.23 +185.71.69.198 +185.8.233.160 +185.80.0.36 +186.154.93.81 +186.235.86.129 +187.247.242.34 +188.118.38.161 +188.12.100.131 +188.134.8.43 +188.170.32.148 +188.212.158.75 +188.243.36.33 +188.29.186.243 +188.44.110.215 +188.72.6.218 +188.81.134.196 +188.82.127.68 +188.95.148.167 +190.104.195.210 +190.104.213.45 +190.108.63.242 +190.109.227.122 +190.109.227.246 +190.109.227.76 +190.109.228.122 +190.110.204.150 +190.113.124.155 +190.115.114.38 +190.12.99.194 +190.145.205.178 +190.185.119.13 +190.196.38.77 +190.2.237.104 +190.217.148.227 +192.109.200.17 +192.142.28.77 +192.142.54.83 +192.155.93.247 +192.162.199.186 +192.176.50.190 +192.252.181.68 +192.253.248.8 +192.3.136.217 +192.3.233.166 +193.109.44.54 +193.135.9.84 +193.142.146.101 +193.142.146.203 +193.165.245.46 +193.17.183.8 +193.228.135.75 +194.208.56.60 +194.67.127.229 +194.87.71.105 +195.103.203.106 +195.158.88.156 +195.158.90.40 +195.178.110.204 +195.26.97.59 +195.34.102.234 +195.34.91.22 +196.251.107.186 +196.251.121.142 +196.39.143.113 +196.41.63.178 +197.159.1.58 +197.44.77.98 +198.12.110.140 +198.166.72.242 +198.50.242.157 +198.58.133.193 +199.168.184.115 +2.136.145.238 +2.136.203.189 +2.136.63.232 +2.180.35.231 +2.187.6.236 +2.238.146.33 +2.54.238.31 +2.54.239.97 +2.54.239.98 +2.54.81.12 +2.54.83.40 +2.54.83.78 +2.54.84.143 +2.54.85.90 +2.54.88.189 +2.54.88.190 +2.54.89.92 +2.54.96.198 +2.54.96.233 +2.54.96.52 +2.54.98.68 +2.55.122.229 +2.55.126.179 +2.55.81.169 +2.55.82.160 +2.55.94.142 +2.56.10.3 +2.57.122.121 +200.11.216.34 +200.112.129.200 +200.115.102.2 +200.118.103.42 +200.14.250.72 +200.29.120.130 +200.54.221.234 +200.61.163.235 +200.69.219.25 +201.16.236.187 +201.182.25.51 +201.94.181.7 +201.98.176.195 +202.1.26.13 +202.105.196.30 +202.107.5.69 +202.129.16.119 +202.129.16.172 +202.131.244.202 +202.139.20.12 +202.148.5.34 +202.155.8.56 +202.160.19.159 +202.162.36.210 +202.166.218.154 +202.175.181.210 +202.3.248.178 +202.3.248.179 +202.4.124.58 +202.5.50.108 +202.53.164.214 +202.57.39.2 +202.57.43.234 +202.62.41.165 +202.78.201.3 +202.88.234.44 +203.109.201.77 +203.114.239.238 +203.121.236.145 +203.160.56.67 +203.160.9.182 +203.187.227.112 +203.192.211.119 +203.203.86.117 +203.212.222.22 +203.57.109.214 +203.76.108.6 +203.83.186.62 +205.185.114.150 +206.245.165.5 +208.84.100.209 +209.145.51.44 +209.162.229.229 +209.250.2.244 +210.16.163.207 +210.245.90.206 +210.91.88.90 +211.158.34.201 +211.186.82.229 +211.204.100.20 +211.219.49.173 +212.112.101.200 +212.156.106.146 +212.200.106.94 +212.224.107.246 +212.225.179.114 +212.225.186.186 +212.225.248.26 +212.232.22.81 +212.232.22.87 +212.27.26.206 +212.3.211.157 +212.73.53.163 +212.85.166.12 +212.85.176.23 +212.98.186.8 +213.111.144.211 +213.6.196.230 +213.6.74.138 +213.66.68.29 +213.87.112.128 +213.91.204.178 +213.96.13.100 +216.107.139.197 +216.119.126.23 +216.129.184.213 +216.155.92.203 +216.201.80.197 +217.168.128.146 +217.208.164.149 +217.60.195.113 +217.60.195.144 +217.60.195.155 +217.60.195.160 +217.75.193.34 +217.92.214.15 +218.101.27.83 +218.103.122.102 +218.108.181.2 +218.155.74.6 +218.188.43.38 +218.212.2.95 +219.139.228.9 +219.156.244.153 +220.118.75.244 +220.124.112.87 +220.167.188.228 +220.189.150.23 +220.201.156.155 +220.246.34.66 +220.248.47.54 +220.89.164.81 +221.1.225.233 +221.10.233.217 +221.14.37.212 +221.14.53.123 +221.143.49.222 +221.15.88.221 +221.198.116.123 +221.200.217.109 +221.203.85.117 +221.214.181.197 +222.134.162.166 +222.136.102.188 +222.137.6.57 +222.141.141.177 +222.154.246.166 +222.165.237.59 +222.165.237.60 +222.165.237.61 +222.166.248.15 +222.220.238.211 +222.239.87.50 +222.246.40.85 +222.252.31.94 +223.108.58.13 +223.108.58.15 +223.151.249.23 +223.82.83.143 +223.83.211.82 +23.140.244.57 +23.172.112.212 +23.238.39.247 +23.239.12.230 +23.27.25.135 +23.94.232.76 +23.95.103.215 +23.95.247.31 +23.95.248.41 +24.234.159.5 +24.35.228.16 +24.37.71.230 +24.95.54.96 +27.124.17.179 +27.124.17.217 +27.124.65.221 +27.125.169.235 +27.147.196.138 +27.147.225.2 +27.203.133.108 +27.203.158.156 +27.207.230.65 +27.215.109.89 +27.215.139.11 +27.215.213.232 +27.215.55.176 +27.217.110.83 +27.217.3.117 +27.220.132.248 +27.222.178.246 +27.222.52.27 +27.72.159.162 +27.96.228.235 +2cfc0222.salamanderprocessing.pages.dev +31.0.222.123 +31.0.241.65 +31.170.22.205 +31.173.70.100 +31.184.194.114 +31.186.54.111 +31.220.163.1 +31.222.113.214 +31.55.236.199 +31.56.209.84 +31.57.109.131 +31.58.226.146 +32.219.189.94 +34.45.47.180 +34.70.102.215 +34.70.205.211 +35.226.92.8 +35.75.68.158 +36.110.15.211 +36.138.125.70 +36.154.188.50 +36.158.34.122 +36.33.105.221 +36.64.210.218 +36.64.227.134 +36.66.139.36 +36.66.151.7 +36.67.66.178 +36.77.231.47 +36.88.180.115 +36.88.6.203 +36.92.68.241 +36.95.137.155 +37.142.77.163 +37.202.49.118 +37.220.123.125 +37.232.128.5 +37.233.63.185 +37.252.66.188 +37.255.210.242 +37.255.229.18 +37.34.209.216 +37.34.230.9 +37.78.170.42 +38.21.70.189 +38.60.163.112 +38.76.201.42 +39.100.33.142 +39.105.223.127 +39.187.82.149 +39.65.135.99 +39.65.212.175 +39.74.39.94 +39.74.91.180 +39.79.135.18 +39.89.161.184 +39.89.211.69 +39.90.149.223 +41.190.69.6 +41.215.23.222 +41.216.189.157 +41.77.74.90 +42.192.39.152 +42.193.115.114 +42.194.199.15 +42.224.27.77 +42.225.207.24 +42.227.206.223 +42.228.42.161 +42.228.45.67 +42.229.160.104 +42.232.228.31 +42.234.206.174 +42.238.135.242 +42.239.242.55 +42.52.39.77 +42.52.62.165 +42.54.3.130 +42.54.89.80 +42.56.201.203 +42.57.185.22 +42.58.167.28 +42.85.135.133 +42.86.60.249 +43.132.12.146 +43.132.13.252 +43.136.51.89 +43.136.88.193 +43.139.50.42 +43.139.88.161 +43.161.245.186 +43.224.0.5 +43.226.39.44 +43.229.20.247 +43.229.20.42 +43.230.44.36 +43.249.54.246 +43.252.159.100 +43.255.216.26 +44.208.147.17 +44.223.110.247 +45.115.254.68 +45.118.32.122 +45.118.79.103 +45.119.53.84 +45.125.44.137 +45.129.231.1 +45.144.233.192 +45.150.195.235 +45.173.12.30 +45.184.19.72 +45.185.93.188 +45.186.77.55 +45.187.105.203 +45.197.12.73 +45.198.224.151 +45.198.224.155 +45.198.224.26 +45.198.224.8 +45.198.224.88 +45.225.135.18 +45.234.234.14 +45.236.116.198 +45.66.228.93 +45.76.122.186 +45.80.230.17 +45.90.163.37 +45.95.147.178 +46.141.62.238 +46.147.81.251 +46.151.182.111 +46.151.182.131 +46.151.182.139 +46.151.182.208 +46.151.182.21 +46.16.150.139 +46.162.69.46 +46.175.139.20 +46.210.109.1 +46.236.65.27 +46.250.54.75 +46.77.52.190 +46.8.70.117 +46.8.78.15 +46.8.78.55 +47.104.31.7 +47.104.96.89 +47.105.36.109 +47.109.198.8 +47.120.32.72 +47.121.137.8 +47.152.112.236 +47.201.14.128 +47.236.149.142 +47.242.66.123 +47.49.114.179 +47.83.203.183 +47.86.190.58 +47.86.33.195 +47.89.173.214 +49.176.254.54 +49.204.232.47 +49.205.173.192 +49.232.126.36 +49.233.172.4 +49.234.48.162 +49.79.167.219 +5.149.184.170 +5.166.107.132 +5.202.101.153 +5.250.157.166 +5.26.174.234 +5.42.11.67 +5.63.157.201 +5.8.18.62 +5.89.102.77 +50.217.49.93 +50.43.160.231 +50.65.169.30 +51.255.46.245 +51.79.124.111 +51.81.135.241 +54.197.245.249 +58.115.221.12 +58.145.168.170 +58.182.146.104 +58.216.207.82 +58.37.0.5 +58.49.210.250 +59.103.86.89 +59.2.5.54 +59.27.224.90 +59.30.12.254 +59.56.110.227 +59.58.190.51 +59.92.235.182 +59.97.251.109 +60.162.194.130 +60.177.40.254 +60.18.9.243 +60.19.195.252 +60.22.23.50 +60.23.74.120 +60.243.211.104 +60aaf9c6.salamanderprocessing.pages.dev +61.160.215.114 +61.183.16.127 +61.2.45.141 +61.2.45.172 +61.2.45.191 +61.240.239.106 +61.244.254.110 +61.52.47.54 +61.53.132.21 +61.53.242.74 +62.197.62.195 +62.45.171.82 +62.56.225.99 +62.60.226.155 +62.60.226.185 +62.60.226.198 +62.60.226.243 +63.47.210.150 +64.234.95.70 +64.89.160.17 +64.89.161.119 +64.89.161.130 +64.89.161.131 +64.89.161.150 +64.89.161.156 +64.89.161.187 +64.89.162.139 +64.89.163.22 +64.89.163.8 +65.49.44.84 +65.99.181.12 +66.185.26.66 +66.196.62.177 +66.39.17.31 +66.39.79.68 +66.71.242.67 +66.71.242.68 +66.71.242.69 +66.71.242.70 +67.177.204.82 +68.107.218.106 +68.148.10.182 +68.224.70.241 +68.226.36.150 +69.46.43.35 +69.75.168.226 +70.190.199.152 +70.45.151.28 +70.95.233.160 +71.198.110.126 +72.132.64.183 +72.201.150.189 +73.51.224.25 +74.48.34.10 +74.50.99.45 +74.62.255.234 +74.66.64.199 +75.119.134.80 +75.144.208.234 +75.18.210.21 +75.214.255.79 +75.42.36.186 +76.130.209.104 +76.136.85.221 +76.154.249.207 +76.53.38.126 +76.76.195.174 +76.94.199.139 +77.172.14.72 +77.226.241.197 +77.237.25.210 +77.237.29.219 +77.238.209.82 +77.247.88.121 +77.46.170.18 +77.50.222.238 +77.83.39.53 +77.89.245.118 +78-20-115-5.access.telenet.be +78.140.32.219 +78.153.140.16 +78.20.115.5 +78.26.180.129 +78.26.81.99 +78.29.14.127 +78.29.39.213 +78.36.11.185 +78.44.199.50 +79.1.229.42 +79.122.193.32 +79.124.8.44 +79.175.42.206 +8.131.63.6 +8.137.149.67 +8.138.96.41 +8.218.138.77 +8.218.225.42 +8.218.50.207 +8.219.76.168 +80.11.25.16 +80.11.36.4 +80.110.37.104 +80.14.38.66 +80.147.155.189 +80.24.87.77 +80.249.6.118 +80.28.228.106 +81.16.123.55 +81.16.242.236 +81.16.247.83 +81.16.249.96 +81.16.251.131 +81.213.214.180 +81.22.42.232 +81.229.60.159 +81.230.148.181 +81.42.247.62 +81.42.249.132 +81.45.183.125 +81.69.185.184 +82.102.74.238 +82.114.200.50 +82.127.110.15 +82.139.95.202 +82.144.86.37 +82.146.62.232 +82.148.194.54 +82.66.224.73 +82.67.13.197 +82.67.39.194 +82.77.57.16 +83.149.17.194 +83.166.197.212 +83.218.189.21 +83.229.126.183 +83.233.104.113 +83.68.249.16 +84.1.110.226 +84.236.147.129 +84.86.236.173 +85.12.251.50 +85.130.160.219 +85.163.234.15 +85.187.54.142 +85.204.116.130 +85.22.139.189 +85.226.209.59 +85.25.72.70 +85.57.30.25 +86.106.101.159 +86.106.155.155 +86.89.95.77 +87.119.108.21 +87.138.104.129 +87.197.160.196 +87.227.140.66 +87.249.142.126 +87.251.249.41 +87.97.161.106 +88.116.62.226 +88.119.151.142 +88.119.193.17 +88.123.92.100 +88.180.236.68 +88.190.74.159 +88.24.52.121 +88.25.2.23 +88.28.218.163 +88.8.20.75 +88.86.246.233 +88.88.191.25 +89.101.123.50 +89.121.250.206 +89.184.185.198 +89.216.107.99 +89.231.14.137 +89.233.194.35 +89.32.41.16 +89.33.192.131 +89.40.31.51 +90.180.227.121 +90.224.208.161 +90.228.239.131 +90.45.15.114 +90.8.145.102 +90.8.83.87 +91.147.91.21 +91.164.39.142 +91.185.1.70 +91.195.100.69 +91.197.122.35 +91.204.154.197 +91.231.190.163 +91.240.165.44 +91.92.240.109 +91.92.240.220 +91.92.240.225 +91.92.242.236 +91.92.242.6 +91.92.82.180 +92.114.191.82 +92.127.156.174 +92.150.82.148 +92.203.169.39 +92.203.169.41 +92.241.77.214 +92.40.52.169 +92.43.24.71 +92.50.136.42 +92.63.185.32 +92.66.30.68 +93.118.112.68 +93.123.169.160 +93.182.76.169 +93.182.77.20 +93.21.252.43 +93.39.215.44 +93.43.53.67 +93.55.251.246 +93.82.169.218 +94.130.229.174 +94.142.63.8 +94.154.43.10 +94.154.43.12 +94.154.43.158 +94.154.43.22 +94.154.43.230 +94.154.43.42 +94.154.43.48 +94.154.43.87 +94.156.152.234 +94.156.152.238 +94.16.119.223 +94.168.120.202 +94.183.182.184 +94.183.232.247 +94.19.130.58 +94.203.254.14 +94.226.135.252 +94.244.113.217 +94.26.106.195 +94.26.88.19 +94.28.95.35 +94.43.139.153 +94.76.156.101 +95.154.194.17 +95.155.243.196 +95.170.113.236 +95.170.116.28 +95.170.119.100 +95.182.98.126 +95.230.215.65 +95.255.114.11 +95.43.76.100 +95.47.248.146 +95.56.232.109 +95.62.202.150 +96.11.145.107 +96.49.197.7 +96.66.24.241 +98.103.171.36 +98.195.187.75 +98.70.13.131 +99-118-215-24.lightspeed.irvnca.sbcglobal.net +99.118.215.24 +99194034-96-20180108171507.webstarterz.com +aair.org.ro +abdulahad.net +acc.jiangsujiaxue.com +acms.saleseos.com +admin.byte.in.ua +admin.gestroom.it +aftelecom.com.br +airlife.bget.ru +airyvineic.help +alarmline.com.br +alineeleuterio.com.br +allendostmen.com +alpanel.screenconnect.com +alternativas.ru +apn-87-251-249-41.static.gprs.plus.pl +app.appzcvb.com +archivoscrosoft.com +ardguisser.com +areyouready.co.za +atasapka.com.tr +atkcgnew.evgeni7e.beget.tech +atom.freehosting.dev +attach.66rpg.com +attach.mail.daum.net +audicontadores.com +automobile-bk.de +backupallfresh2030.com +backupso.com +bafybeibh6u74fuvyazqu2q7y6pginkxprjurxchgfshwigrs5y77qcbj6i.ipfs.dweb.link +bafybeidp7zdy2lu6yxvbgoev4b6xokuaa6jljr34vkflxzel2ya2gc3plm.ipfs.dweb.link +bafybeiffpkay6l7heq55epccneb563p5chjzclxnso3vkozyorphlz6ana.ipfs.w3s.link +baileyemas.com +balkarsoftware.cubistech.com +bamautzky.de +baolongwes.oss-ap-southeast-1.aliyuncs.com +benshamcentre.co.uk +beoauto.alexion.rs +best.obs.cn-sz1.ctyun.cn +best10cdn.blob.core.windows.net +bip.priestsw.com +bj5y6-0f-9h4-9fgg4-1324992141.cos.ap-bangkok.myqcloud.com +blackhattoolz.com +blankeyeo.com +blessdayservices.org +blogs.sokun.jp +bmdcompany.com +bnet-api.playm8ru.win +bnet.playm8ru.win +bombayonline.in +book.rollingvideogames.com +bratusferramentas.grupomoltz.com.br +bridgeroad.maverickpreviews.com +brightworks.cz +bundle.kpzip.com +bvaco.com +c0e5b87c.solaraweb-alj.pages.dev +c3436037.salamanderprocessing.pages.dev +c9791c08-f1e4-4402-9510-d04c13c50ea3.selstorage.ru +cambodiatouristservice.com +cat.dashabi.in +cat.xiaojiji.nl +cat.xiaoshabi.nl +catbaparadisehotel.com.vn +cdaonline.com.ar +cdn-10049480.file.myqcloud.com +cdn.gomlab.com +cdn.novoline.top +cdn.xiaoduoai.com +celebratingseniors.net +cfs10.blog.daum.net +cfs13.tistory.com +cfs7.blog.daum.net +cfs9.blog.daum.net +ch.10001mb.com +chat-server.maverickpreviews.com +checkfivem.com +chenwangqiao.com +chinaapper.com +chiptune.com +christophercheung.com +chuguadventures.co.tz +churchinmanila.org +cl.ssouy.com +class1004.dothome.co.kr +clientkrypton.lovable.app +cliffg.me +cliftycreek.anondns.net +cloud.pearlpeel.com +clubdetiroelpicarcho.com +cn.unionlever.com +co-emas.com +compuserviceonline.com.br +continentalgroup.net.in +controliumbt.com +coralasargetia.ro +corporacioncrf.com +cpofficial.com +crazywickedaddiction.com +creativevoltage.com +crimefreesoftware.com +cronicasdelcentro.com +crystalpvp.ru +cs.go.kg +csg-app.com +cutting-edge.in +d.14yaa.com +d.kpzip.com +d.wanyouxi7.com +d2314eac.solaraweb-alj.pages.dev +d3cciiowg5l3jx.cloudfront.net +damiancollier.com +data.yhydl.com +dawn-bush-ddd1.yasminanthonyy.workers.dev +dcrun.co.uk +dcwblida.dz +deagroup-ks.com +delp-heizungsbau.de +deltabehavioralhealth.org +dexios.co.za +dezcom.com +dialkwik.in +disk.accord1key.cn +divvanews.com +dl.1003b.56a.com +dl.2345.com +dl.dzqzd.com +dl.natgo.cn +dlied6.bytes.tcdnos.com +dlied6.yz.tcdnos.com +doc.e-statements.app +dongyu.us +donkeytourscroatia.com +down.54nb.com +down.ftp21.cc +down.fwqlt.com +down.pcclear.com +down.ruanmei.com +down10d.zol.com.cn +downali.game.uc.cn +download.caihong.com +download.doumaibiji.cn +download.haozip.com +download.kaobeitu.com +download.kbcard.com +download.pdf00.cn +download.pdf00.com +download2.huduntech.com +dowonline.ru +dreamapp.xyz +dreamwatchevent.com +drgenov.com +dubapkg.cmcmcdn.com +dusttv.com +dynga.pl +easybrand.vn +elaml4maids.com +electri.billregulator.com +elisans.novayonetim.com +embalageral.hospedagemdesites.ws +en.taichuan.com +epanpano.com +estudio.ythan.com.br +evangroup.ru +everycarebd.com +exclusionremcoss.duckdns.org +f24-zfcloud.zdn.vn +f3i5-0g49bgn-3h95-1324992141.cos.ap-jakarta.myqcloud.com +fakers.co.jp +fb6390d5.infinityindians.pages.dev +fd.v2downf.shop +file.blackint3.com +file.uhsea.com +filerit.com +first-security-verden.de +flyingmutts.com +fmrio.com +forms.saurashtrauniversity.edu +forspeed.onlinedown.net +frygzjyhtiunvhvnacif.supabase.co +fukt.link +furystaff.tech +fz.tiansys.cn +gabyagozetim.com +galeri3.arkitera.com +galerisenimutiara.com +gboutros.howto.rocks +genddos.st +gestionycobranzas.com +globalbank.us +goto.stnts.com +grantexx.com +greenf.alexion.rs +grupomcperu.com +gsx.life +gutando.com +haeum.nfile.net +hasalltalent.com +hhbs.hhu.edu.cn +higreens.co.in +hitman-pro.ru +hitstation.nl +hnjgdl.geps.glodon.com +horion-static.pages.dev +host-195-103-203-106.business.telecomitalia.it +host-95-230-215-65.business.telecomitalia.it +host-95-255-114-11.business.telecomitalia.it +hostingcloud.science +hostphpwindowsappsconecting.ydns.eu +hostphpwindowsnuevas.ydns.eu +hotelembuguacu.blob.core.windows.net +hoteljune2026.blogspot.com +hotelsep.blogspot.com +hseda.com +hzxcaq-github-io.pages.dev +icoffeecloud.com +icy-lab-0431.guilherme-telecomunicacoes2024.workers.dev +igmc.duckdns.org +ihmmkvkaiwnilneauhfn.supabase.co +imagefiles-backup.oss-ap-southeast-7.aliyuncs.com +intelligradeeducation.vicentecisnerospub.com +irahook.org +ircftp.net +isiore.com.co +itssprout.com +j-0-09g-9bh-h-ggf-1324992141.cos.ap-bangkok.myqcloud.com +jawaratekno.com +jd-forever.com +jenniferloeffler.com +jessespridecharters.com +jlwz.cn +joyeriatauro.com +jozefinskiatelje.si +js.byxly.eu.cc +jyothishmathi.in +kavacanada.ca +kavyasourcing.com +kenwillzltd.com +khoancatbetong89.vn +kimyen.net +kits.frog.tw +kokorostore.it +konsor.ru +kuakuawenjian.oss-cn-hangzhou.aliyuncs.com +kzaa.co.za +landonirwin.com +lb.nigsv.com +lcportal.kbinsure.co.kr +leindisncieamrocea-1341831283.cos.sa-saopaulo.myqcloud.com +lezysoptimizations.lovable.app +lgr.pages.dev +libss.0x504.com +lindnerelektroanlagen.de +local-update.com +lomejordesalamanca.es +luizmatoso.com.br +m.jkoa.co.kr +maidforyou1985.com +mamigummy.com +matthewsigmondv5.pages.dev +medises.co.kr +mersped.mycpanel.rs +metrics.gocloudmaps.com +miner.pages.dev +mininews.kpzip.com +mitreart.com +mobimpex.ro +mogimall.com +mojtabaabbasi.com +mosselnet.co.za +msoftdatastore.z22.web.core.windows.net +muaklekcoop.com +muledo.com +mundocarnes.cl +mx9x.com +myvcart.com +n.vs108.com +namaacont.com +namuvpn.com +nccommunication.be +ncxps.com +nerve.untergrund.net +newkey.co.kr +noithaticon.vn +notbak.com +nusatoyota.co.id +ny.lshdw.cc +o24o.ru +ofice365.github.io +okhan.net +old.bullydog.com +old.umcl.us +omani-disputes.com +ossapp.suning.com +p3.zbjimg.com +paccbet.pages.dev +palharesinformatica.com.br +paradox924x.pages.dev +pardu.pages.dev +patricstoremegans2.com +pay.aqiu6.com +pcupd.com +pdlaw.com.ph +peachcity.si +peopleops.uti.cool +pfatrivandrum.org +pid.fly160.com +pjsn.hi2.ro +planetariumobil.ro +plasteredplayn.com +posicionamientonatural.es +postelnini.mk +preciosasjoyitas.com.mx +prepstarcenter.com +procuratio.nu +programandojuntos.us.tempcloudsite.com +projetodegente.com +pub-0478b308b8cf46709a73d0eed5afd633.r2.dev +pub-1900be17f2994b5580d602f23eb7fb93.r2.dev +pub-33172110f57a4bbfa0c089261c8b7d4d.r2.dev +pub-364c6b3011ca492cab2354176cfaf3f0.r2.dev +pub-8d59738861b849e5a38b795cc17b1019.r2.dev +pub-bbbdebc2599c4d74b04c5d53e439f7a7.r2.dev +pub-bfc34934a91a4893817098f73415917a.r2.dev +pub-cdd0dd27ae6a4aee9841d397e0496374.r2.dev +pub-ec081eb0fab74385a17d8d77afeeda3b.r2.dev +public.demo.securecloudsandbox.com +purmed.ro +pvsa.gxfugy.cn +qiniuyunxz.yxflzs.com +qv.co.ke +ramirex.ro +rbcfort.com +rdm.91yunma.cn +reauthenticator.com +records.dennisign.se +redeamazoniaazul.org +redlk.com +refaccionesalma.com.mx +reifenquick.de +rentadefrio.com +respaldo2.duckdns.org +reutilizemais.co.mz +rheddh.com +riderspin.com +robertrowe.com +royalindiancurryclub.com +runds.duckdns.org +rxquickpay.com +ryo.gamer.free +sablayan.seasonshotelmindoro.com +saf-oil.ru +salonmarketing.ca +samiksha.com.sg +sanghyun.nfile.net +scainseto.com.br +scoala1gherla.ro +sec.dashabi.in +sec.xiaojiji.nl +sec.xiaoshabi.nl +seismophonic.com +semencepourlavie.org +separadordecc.com +serasoo.direct.quickconnect.to +server.toeicswt.co.kr +sg123.net +sgeseducation.com +shadowbot-dih.pages.dev +shop.mediasova.ru +shqdown.ggzuhao.com +shy-hall-9c09.cryptersandtoolsoficial.workers.dev +silver-hubdachwohnwagen.de +sk-comtel.com +smartermail.host +soft.110route.com +softbank126023203236.bbtec.net +softcatalog.ru +softdl.360tpcdn.com +softdl2.360tpcdn.com +softdl4.360.cn +solar-sanat.net +spgint.com +ss-01.com +sta.qinxue.com +starcountry.net +static.3001.net +static.ilclock.com +static.topxgun.com +static.youdm.cn +static.zongheng.com +stdown.dinju.com +steam66.cn +streammobs.com +sunix-technology.com +support-data.com +support.clz.kr +sutterpoint.com +svirtual.sanviatorperu.edu.pe +swiftfusion.tech +sydneyaffordablecremations.com.au +syn-096-011-145-107.biz.spectrum.com +synergyconsulting.us +talentrecruitments.com +tanscarattorneys.co.tz +tapestryoftruth.com +tdejb.com +tecunonline.com +tehnomag.rs +temirtau-adm.ru +tengfeidn.cn +test.peperoncinochepassione.it +theholidayroads.com +thementordirectory.com +theoremaoliveoil.com +thtp2.volamngayxua.net +tiacreation.club +tiwanlinm.duckdns.org +tobecation.github.io +toolshare.com.tr +top8onlinegame.com +transparenciacanaa.com.br +trtmyanmar.com +tu.feyhaum.com +tuasesoriadigital.es +twu-hwt.org +un1rw11q4u.com +uni.site.je +union.macoms.la +upaicdn.xinmei365.com +upchemicals.co.in +update.bruss.org.ru +update.cg100iii.com +vaamsmgfreocmroe-1342087530.cos.sa-saopaulo.myqcloud.com +vaibhavtripathi.in +ventaslll.com +versaclean.com.br +veryboys.com +vgd.vg +vincentdemiero.com +visam.info +vizyonuniversitesi.com.tr +vizyonuniversitesi.web.tr +vrajras.com +vuelaviajero.com +website.mypetapp.co.za +weco2.oss-me-east-1.aliyuncs.com +widexenmexico.com.mx +win.down.55kantu.com +windomstatetheater.com +windriversfiles.imeitools.com +wittenhorst.eu +www2.0zz0.com +www999999asgasg-1327129302.cos.ap-chengdu.myqcloud.com +www999999safagqwhg-1327129302.cos.ap-chengdu.myqcloud.com +xenon.studio +xiaoma-10021647.file.myqcloud.com +xn--h6qpop2cq9nl9c.pages.dev +xn--on3b15m2lco2u.com +xn--yh4bx88a.com +xshop.com.tr +xuezha.net +xww.bucea.edu.cn +ybgctdtbzvgpdxjivafy.supabase.co +youtransfer.net +zamilgroups.com +zenglobalenerji.com +zhigao5191.com +zhikey.com +zycdjz.com +||150.co.il/rustdesk-1.2.3-2-x86_64.exe^$all +||acusense.ae/umbrella/^$all +||amyuni.com/downloads/usbmmidd_v2.zip^$all +||astenterprises.com.pk/ef/ef.vbs^$all +||cd.textfiles.com/hmatrix/data/hack0832.zip^$all +||cd.textfiles.com/hmatrix/data/hack1226.exe^$all +||cdn.pixelbin.io/v2/long-glade-33dc08/original//rump_img.jpeg^$all +||cdn.pixelbin.io/v2/long-glade-33dc08/original/rump_img.jpeg^$all +||cdn.pixelbin.io/v2/plain-sunset-8e5d78/original/js.jpeg^$all +||cfs5.tistory.com/upload_control/download.blog?fhandle=ymxvzzcxmzyyqgzzns50axn0b3j5lmnvbtovyxr0ywnolzavmtqwmdawmdawmdawlmv4zq%3d%3d&filename=crack-pro20.exe^$all +||codeload.github.com/54n4l/mimikatzwindows/zip/refs/heads/master^$all +||codeload.github.com/azertyuiopexe/fud-crypter/zip/refs/heads/main^$all +||codeload.github.com/caocaocc/yacd/zip/refs/heads/gh-pages^$all +||codeload.github.com/cirosantilli/china-dictatorship/zip/refs/heads/master^$all +||codeload.github.com/d-7uble/invoke-phant0m/zip/refs/heads/master^$all +||codeload.github.com/daneeltrevize/tabsat/legacy.tar.gz/refs/tags/0.10^$all +||codeload.github.com/daneeltrevize/tabsat/legacy.tar.gz/refs/tags/0.11^$all +||codeload.github.com/daneeltrevize/tabsat/legacy.tar.gz/refs/tags/0.3^$all +||codeload.github.com/daneeltrevize/tabsat/legacy.tar.gz/refs/tags/0.5^$all +||codeload.github.com/daneeltrevize/tabsat/legacy.tar.gz/refs/tags/0.7^$all +||codeload.github.com/daneeltrevize/tabsat/legacy.tar.gz/refs/tags/0.8^$all +||codeload.github.com/daneeltrevize/tabsat/legacy.tar.gz/refs/tags/0.9^$all +||codeload.github.com/daneeltrevize/tabsat/legacy.tar.gz/refs/tags/0.9.1^$all +||codeload.github.com/daneeltrevize/tabsat/legacy.tar.gz/refs/tags/0.9.2^$all +||codeload.github.com/daneeltrevize/tabsat/legacy.zip/refs/tags/0.7.1^$all +||codeload.github.com/daneeltrevize/tabsat/legacy.zip/refs/tags/0.8.1^$all +||codeload.github.com/drakeo03/rbxfpsunlocker-x64-hotfix1/zip/refs/heads/main^$all +||codeload.github.com/draxatihm/ethercrash.io-casino-predictor-strategies/zip/refs/heads/main^$all +||codeload.github.com/joh81/exploi01/zip/refs/heads/main^$all +||codeload.github.com/kamilniftaliev/cryptoview/zip/refs/heads/main^$all +||codeload.github.com/meteoradminz/hidden-tear/zip/master^$all +||codeload.github.com/mori-miyako/discord-token-generator/zip/refs/heads/main^$all +||codeload.github.com/robertdavidgraham/masscan/zip/refs/heads/master^$all +||codeload.github.com/sqrtzeroknowledge/xworm-trojan/zip/refs/heads/main^$all +||codeload.github.com/steve824/a/zip/refs/heads/main^$all +||codeload.github.com/thebb5th/123/zip/refs/heads/main^$all +||codeload.github.com/tirtekeka/rat-client/zip/refs/heads/main^$all +||codeload.github.com/trievrota/common-ground-world-crypto-game-token-api/zip/refs/heads/main^$all +||codeload.github.com/ty9989/c/zip/refs/heads/main^$all +||codeload.github.com/ty9989/f/zip/refs/heads/main^$all +||codeload.github.com/ty9989/i/zip/refs/heads/main^$all +||codeload.github.com/ty9989/u/zip/refs/heads/main^$all +||codeload.github.com/unlockteame/unlimited/zip/refs/heads/main^$all +||dl.360safe.com/offlinepackv4.exe^$all +||dl.ijinshan.com/safe/setup_smart.exe^$all +||do-dear.com/miners/myxmrig.tgz^$all +||docs.google.com/document/d/e/2pacx-1vq6nr-yg49vldzzxliqvpupbajoss2nfxsnsk3khaixmvqydl20mxhttp-qa7mojkwa4osepa76nnbl/pub^$all +||docs.google.com/document/d/e/2pacx-1vq8kqm4rsobvbpga8ncnzs-1xulwuezfri9x1ktowpiijctqe1uq0iged6iq7sa5zuhnh56egsebkoj/pub^$all +||docs.google.com/document/d/e/2pacx-1vqb__8qdiraoo-s_qrzkk8o_8brsuwaeje3ivcd5efhddlux4gw5otilj5ezfenwjzaha-zojj_7srj/pub^$all +||docs.google.com/document/d/e/2pacx-1vqe1vc-nlfenfgigyaugmmg1dq4l0-haikp9qxkacc32ig0xtg6go8lejdoogo0vfeoie4tcyy4_bn4/pub^$all +||docs.google.com/document/d/e/2pacx-1vqha4kutkvbpn1c9r1jolub-v1dyh36itza-2zhojxuluskoxk6iogpy8b8iscqqjskaf3wduc6oykt/pub^$all +||docs.google.com/document/d/e/2pacx-1vqm_l1o1djktv6pcfwixdz1gjaqrg26rpb3n3uqpk0jqvif91b_irdew7mo34hhhoffbjohoztlmdtp/pub^$all +||docs.google.com/document/d/e/2pacx-1vqofspqgo4lhe7xt4ky-gkjbc9rgwzgw9rksc_azpw2gotdlnhx9oxc_rgk1zz9mgxxwqoixey0eajp/pub^$all +||docs.google.com/document/d/e/2pacx-1vqvbpr6y2jjnkxfpcwt9uv7pqycg6vdoowr-xnakhtl9ns4tk44rpa91em8usoc992uqyrpn6ucy5ep/pub^$all +||docs.google.com/document/d/e/2pacx-1vqyowyoxata2couqa6uc3gwi59sq5maualr7yfmq6luzvtefqopogncbli8hx6vubkt2b65qerqhzy8/pub^$all +||docs.google.com/document/d/e/2pacx-1vr-asdhfa85lnhp1g6rll18x2htnflvy5zggxzrfveecvbhjiwaes9o9w3dn49od7lplixl3u59icjr/pub^$all +||docs.google.com/document/d/e/2pacx-1vr1e4kzyqneoh2tjc5rh_unlfwjdo31gedrveg0wdyrprmm3yfdxjqxdvyy535adzu5p9m4mrvdau9v/pub^$all +||docs.google.com/document/d/e/2pacx-1vr92cz6z4uh71ogqyzgn6vtdc54xoa0iovizmkmogvekyix648nysfipvt4qto6uvtrp9jsatoeuhk3/pub^$all +||docs.google.com/document/d/e/2pacx-1vrtnhy8ipm82egefg7zhukj5qwbit31-jlhdsxovff8rcefw2uhpndpuclv_ffrqqdjhxyxympj3ame/pub^$all +||docs.google.com/document/d/e/2pacx-1vrvmutaxfc2ewkvy_l_cewfjwv4md_uadqlv4onmlyc0frnp7jod3ru93sm6y-tmoj0nrvbfylt739z/pub^$all +||docs.google.com/document/d/e/2pacx-1vrxkt9v4qcom-0wjceb6bexufgpr_vdebkc-kra8h7gutbblset1veguumqxs3npiv4qw-7_1kiy3jm/pub^$all +||docs.google.com/document/d/e/2pacx-1vs1h7txewarzqve-jwxnwcgzibofoz58qrk8kerhmfz8mpippgfjeoijthgmm-tw7lwcipr8acup_ft/pub^$all +||docs.google.com/document/d/e/2pacx-1vsftpbjz498ict3ab9-tehopymacl8ygytkgufxpnwlfphfxyyh5jmfj_2llrrddsiu8vypu1ksvp5p/pub^$all +||docs.google.com/document/d/e/2pacx-1vspnrqtfaftwpvbd8o61fbvozlhc3z0x8jy4glnji-v80xrxnlemgt89l5imnr_7kxst0gn9ydkjj0q/pub^$all +||docs.google.com/document/d/e/2pacx-1vsrvkllojuhzbqokettk0u2b1whglldp35-o1zgt_jlem2z2odwedj0z9sgtukvikdowcuan-0fj5wn/pub^$all +||docs.google.com/document/d/e/2pacx-1vszvhw0lywviz_dpqozkdip0orjsf7411ucirwqegcgfxwqqb3nqpbn3d7orqqxnatypulra_ssggie/pub^$all +||docs.google.com/document/d/e/2pacx-1vt4iy9nlwuov8hsmpykbfkn1fh1ydp7ms8dudg2ldfjgxf8rumdtzgiw7ukoifo3ap-pb7ybzlcdfqi/pub^$all +||docs.google.com/document/d/e/2pacx-1vt544w_wvxhvfskbx2zio7pht-jzhb1nvr7y1qhtxccjopcfxzhm1mottjhjsdudpgs9lfrjcqzoi8n/pub^$all +||docs.google.com/document/d/e/2pacx-1vtcfdv_0srlqbmtfzi6hivmikknsfqd5bubuem-s-mzpzfsva62zyncoy-phkzysuhuddl0yhlyajye/pub^$all +||docs.google.com/document/d/e/2pacx-1vtecbrofm9hcrdmzz8g7ktneypnrpr1s7bvyoit3r8jd7rjanmysk9yyuhvzmdp3dmkd-xss7kpyffa/pub^$all +||docs.google.com/document/d/e/2pacx-1vtpholmraa4dir0lg8z5yhqljwbzp0qkypc3jax6d3l0hs6n23kpm2iqgccjvbvug5th443jjbzs2uv/pub^$all +||docs.google.com/document/d/e/2pacx-1vtuc-a7s7ylxnfwqp8oxz6no5uwdmabudx-6glkwrnzjwqwgdtcpdvwp0x0l03qdarzrzonj_adevlw/pub^$all +||docs.google.com/document/d/e/2pacx-1vtyg409rjv4omi3oujyjsc6ajzflluuz37ofzbpjjihmrewoh2ehp2pwbfllgyy_yzqdrldwcaejvd5/pub^$all +||docs.google.com/uc?export=download&id=140vkyfrfhbqkukc2hnw-gsvi5wjw6iyi^$all +||docs.google.com/uc?export=download&id=1ctmywlj5wouiug1wgizy3ke7yj1u0yor&revid=0b_t0-zked1mgagxwmxcwywq5q0q1uk1uoxcwaup6l2ovmtdjpq^$all +||docs.google.com/uc?export=download&id=1gv_nk9llqw4fxudo-khja7nuuj1kevvw&revid=0b7zefp-g6n7vm0zhowo4be9pvus4mmh0ymxvd3r6zlu3ylznpq^$all +||docs.google.com/uc?export=download&id=1h_dyp_d5lst4akyf2qezxl7j1scvbtvs&revid=0b5thckui5i0mdk5moelbnm9vuhnydvjnvwpyq01vrg5xvwhrpq^$all +||docs.google.com/uc?export=download&id=1jpl-uouydm5hypqm67uokyddrblbpxvw&revid=0b7zpiprmoc5ubhpwclq0cxdyte5vwtrbymnidznhtgm3bzvrpq^$all +||docs.google.com/uc?export=download&id=1m8jszvq-ztfrul7vgsb6q-n3ftgnkbdj&revid=0bxrhybf9__wnmgjlnmxmunzznlu0v204azc4edmzcep6a0hzpq^$all +||docs.google.com/uc?export=download&id=1sbd1rnw8luztjmsh6gdlzupvyupbopa0&revid=0b3yyjts_woklr2vnyxvqohlidxbxn1l2wwjntxfnwvi5v0h3pq^$all +||docs.google.com/uc?export=download&id=1tilqozot07vylvdmmsfs7ia452jwhktj&revid=0b7gsmqzks4xkcdjcwhuvatj2qvlvchnmnnovu2ldzstek2jzpq^$all +||docs.google.com/uc?export=download&id=1ygn4gkmy9musdp_lgnpyjjh6rskt39vp&revid=0b8rbgp2bpeofmk5ta3n3mgjtefbzdevwtk5wwhpjd3yruejjpq^$all +||docs.google.com/uc?export=download&id=1zxejnkdwqezrbgani5vjk2y2nhmpkg0z&revid=0b-bo0wgwxcblsui1mehkbhrlu01rwxnyrxzxanbdendmbndnpq^$all +||drive.google.com/u/0/uc?id=1osjrfvjdy1vblk4fya98jp5jlnk7rutv&export=download^$all +||drive.google.com/uc?export=download&confirm=no_antivirus&id=1-5tfbyc52tepabxjdszg1dcqgaizf0m6^$all +||drive.google.com/uc?export=download&confirm=no_antivirus&id=1cpaqimeblbmxrxoli6d3cczgkrbzpy8_^$all +||drive.google.com/uc?export=download&confirm=t&id=145b1fbjtyee3w1rjsazo7hzcoiiaxzum&uuid=eb581596-9566-4a21-b3b6-e6909eb42ff6&at=akkf8vzrltviqrn7wljfjcwisgcc:1683793107077^$all +||drive.google.com/uc?export=download&id=1-8qpzgr4-iis53p1-kr2-o6prrjmnksk^$all +||drive.google.com/uc?export=download&id=10lygpyju_dlg3x6r9oslzgblshakstl-^$all +||drive.google.com/uc?export=download&id=11cbyky_wegqjut6afr8jannw7vub-xxf^$all +||drive.google.com/uc?export=download&id=12jgde-soib4liipbdhs55vkz7ek8_ua6^$all +||drive.google.com/uc?export=download&id=12ma_yvbmprts6e_vkfnmwikrnwsarqbw^$all +||drive.google.com/uc?export=download&id=12rmvuwgpj0dzbb3haoaww2lviavhvb4r^$all +||drive.google.com/uc?export=download&id=14muad9cmj6mxsd9lrccuo1egxyf5f-ty^$all +||drive.google.com/uc?export=download&id=15_5vja6ls72gnqbjqkrme1i7bmit0fe4^$all +||drive.google.com/uc?export=download&id=17hv9-3t2ilikbmcfql2z66ipd72x4mz7^$all +||drive.google.com/uc?export=download&id=19nonxskhmwbvfxpr2ccmwd9xrhz1ldco^$all +||drive.google.com/uc?export=download&id=1_-w5me4evtzbdzix_v_ymzdelazhrv5z^$all +||drive.google.com/uc?export=download&id=1_3ozdjl5puad8qn3tipydynn5j7l13el^$all +||drive.google.com/uc?export=download&id=1_ldguopt2cg7fblntw3ltxgtxqtmlflc^$all +||drive.google.com/uc?export=download&id=1_suia0iczdw2reew1f9hgunezxcwv52d^$all +||drive.google.com/uc?export=download&id=1afutsiefohaia02gkfjdbgn-kk91hksb^$all +||drive.google.com/uc?export=download&id=1alq8r5tnr6wwiftqa3l6d9fymv7y0g9m^$all +||drive.google.com/uc?export=download&id=1am1ztjjhswzwdbvue5tke5mbkwjud0w5^$all +||drive.google.com/uc?export=download&id=1aygcpsnow8esde5bkkuaj0bygkowvttd^$all +||drive.google.com/uc?export=download&id=1b6t1mjnjcvndcy-mdqq0neqrbocqyju4^$all +||drive.google.com/uc?export=download&id=1bpc5z-hv6kosk6artkfmbtsnnwwpdghy^$all +||drive.google.com/uc?export=download&id=1c2pnucvma1shu90mnauhef6shildth-s^$all +||drive.google.com/uc?export=download&id=1c3ypqyioszuyr4eszuaplydvr2utpnlu^$all +||drive.google.com/uc?export=download&id=1ccjlbddgjhpeeff1b1hfkgp3x16c_tj1^$all +||drive.google.com/uc?export=download&id=1cl-nvhrrue_wg2zkpuxmvk40tk3knacb^$all +||drive.google.com/uc?export=download&id=1cz1lqyxis4wvr7nlc71ukekxyhj5xu-l^$all +||drive.google.com/uc?export=download&id=1d4aper-gjv3agk8yeny5scayonlc68yo^$all +||drive.google.com/uc?export=download&id=1drptefwc7xybtum52bikrhp4j4l6lttc^$all +||drive.google.com/uc?export=download&id=1e2y5yppu_zjj4o3wmuo-2j8n9lbthkzc^$all +||drive.google.com/uc?export=download&id=1eczx8yjtfxwos26grqtdixajed3ukcao^$all +||drive.google.com/uc?export=download&id=1ed2w0zvvx53_mfifdszyslleurub40zo^$all +||drive.google.com/uc?export=download&id=1ek4th7ucqd9_h2yf9orhzhuallukeo0n^$all +||drive.google.com/uc?export=download&id=1etpmpb2shvuny5dxj5awfpxklxqpbzgx^$all +||drive.google.com/uc?export=download&id=1fhqpevblkipshqumjmsbzeetdzhzxv-j^$all +||drive.google.com/uc?export=download&id=1g4q6iay5qjzlgigjqnwftkdc5-o_2pqx^$all +||drive.google.com/uc?export=download&id=1g_x0a_gnyxai5glsipkq1b2mqknanuw8^$all +||drive.google.com/uc?export=download&id=1gavcby-nhlq22ohbgm530exffsrg1aub^$all +||drive.google.com/uc?export=download&id=1ge6chcvywbep4kgx_odpxtvfi3vj-zwy^$all +||drive.google.com/uc?export=download&id=1gfn3lqd1rvybut4ha-ldl92wt8ysrzfc^$all +||drive.google.com/uc?export=download&id=1gmzqsemymffka4lve0jkwa06sklk7xhu^$all +||drive.google.com/uc?export=download&id=1gv5qahzp_toxgct3ezfvvy4q3a5vvh6s^$all +||drive.google.com/uc?export=download&id=1gvnzexvvs3vpv0-ihflwnmzmhij3qqly^$all +||drive.google.com/uc?export=download&id=1hd7ffgig6btbzuy2_2kds_t4u637qxjn^$all +||drive.google.com/uc?export=download&id=1hditwve1kadzeycbldxttxi4mmhddgyp^$all +||drive.google.com/uc?export=download&id=1heka7sgmbcessdhxtvmfwxownz7sipbb^$all +||drive.google.com/uc?export=download&id=1hkvynldkcbdd50_bsw3s9tk5elbduxtg^$all +||drive.google.com/uc?export=download&id=1hrp9lnasbplclnhppp1abwb1uwv4kdvs^$all +||drive.google.com/uc?export=download&id=1idr9p3dgxkblhu7h4jckclzmtlibwsiw^$all +||drive.google.com/uc?export=download&id=1ifvzub1blhmwsirshbe2wu5b1tus3ls-^$all +||drive.google.com/uc?export=download&id=1ikoxnnlvglh6jhnfqkrsihss_p2dqkyp^$all +||drive.google.com/uc?export=download&id=1inbpqtz2qyus0zqldnbhutbzwgdghhs0^$all +||drive.google.com/uc?export=download&id=1jbzzntbk1kuszoofww7hsqfdh066ontf^$all +||drive.google.com/uc?export=download&id=1k0bqhrtnu4v1yexoni5p1utyjuohmfzm^$all +||drive.google.com/uc?export=download&id=1k4idibw1vtsntpbqtvbfabfgm2h5s14d^$all +||drive.google.com/uc?export=download&id=1kc4fdseohzqymz2x0ncqswph66uxdb1z^$all +||drive.google.com/uc?export=download&id=1kcbhxhjt-bdxszgxt1nfnzdt5hpvkwk4^$all +||drive.google.com/uc?export=download&id=1kjjvh1muhjrkrzbajjlzjfawyi0zvxc1^$all +||drive.google.com/uc?export=download&id=1km_hwk7sn_amuk7q2dk9kttzwk1taelw^$all +||drive.google.com/uc?export=download&id=1kxjea0riyrxmxhbys2wddsb9qlow0ldg^$all +||drive.google.com/uc?export=download&id=1las2cmd3reobg45qhkqhawi90h4_u0kd^$all +||drive.google.com/uc?export=download&id=1lhnnwoydntgqibsykxwgd32s5xftxvfh^$all +||drive.google.com/uc?export=download&id=1lrviuk1wka4di3qh7ach-b7m1ics2hbp^$all +||drive.google.com/uc?export=download&id=1ltrdqlgcl6smoqujfs1pb2ernzhsbydh^$all +||drive.google.com/uc?export=download&id=1muftth-5lscdi3ovd5vn7sjkeit2h9k1^$all +||drive.google.com/uc?export=download&id=1n8_s6gijerearczwh74blkygodig64eo^$all +||drive.google.com/uc?export=download&id=1nndvq_2_7doyyuqvcvwmory_4lyrplb7^$all +||drive.google.com/uc?export=download&id=1nskagzrswpttoue3wbrhdqpyzlyve4tg^$all +||drive.google.com/uc?export=download&id=1nw1gmzg6lwtuhs0tte969xcfpp9_dc5q^$all +||drive.google.com/uc?export=download&id=1o3zw7sodji4uk954kngkdyshyl37gozq^$all +||drive.google.com/uc?export=download&id=1o9jg3oqyewncoptigwscdbtfmvtfqygj^$all +||drive.google.com/uc?export=download&id=1okqdyr_kghanl7h_i1mwmlmzfesw_gx0^$all +||drive.google.com/uc?export=download&id=1ovluq0bdu-cys5xvyogyjd5qidqb1per^$all +||drive.google.com/uc?export=download&id=1oxpqeutyreby186exx4zeofyz0rjocsp^$all +||drive.google.com/uc?export=download&id=1p6ct81hwfslgfjlgpg8tn-8afd8q2cx4^$all +||drive.google.com/uc?export=download&id=1p_knmkidu8kiejeem_ijrlumbjih3bkv^$all +||drive.google.com/uc?export=download&id=1pyl4hq8sbp5qatm1zz9vmsze1cuy2uzw^$all +||drive.google.com/uc?export=download&id=1q6iji-1uq5ksrr3luufy3to-jfs4ec4d^$all +||drive.google.com/uc?export=download&id=1qj81ivfcftpeqs-4wffvozykixvnnh-7^$all +||drive.google.com/uc?export=download&id=1qxwff0k49bjdhwzotirkvqlqhebzgphg^$all +||drive.google.com/uc?export=download&id=1r7oi2jekx0ks1wqpt0ms3_kqvukzy3dv^$all +||drive.google.com/uc?export=download&id=1re9cqjrafya6wcb5e0zcolwdorvsf9pi^$all +||drive.google.com/uc?export=download&id=1rfsmrzeanvap2tnmtwrptlepwarwlkge^$all +||drive.google.com/uc?export=download&id=1rsqnkyvcaein5m-gskl8coyuh8w5xrbd^$all +||drive.google.com/uc?export=download&id=1satmexzn3qpvqzfxnc-5dtnnn8lihdxh^$all +||drive.google.com/uc?export=download&id=1sjm5t0ktlepibtv3kgaousspnw3zonom^$all +||drive.google.com/uc?export=download&id=1sm7b9902i8v4yitepf6gzomqc84ltloi^$all +||drive.google.com/uc?export=download&id=1sqvm1xsoranfnvqst_kkdmn8yhgulm4k^$all +||drive.google.com/uc?export=download&id=1stvkjdfiwxw79oezmc62wzmjjaeftyze^$all +||drive.google.com/uc?export=download&id=1t9mwfr1azhmksosp19tomch5dyi3hb2n^$all +||drive.google.com/uc?export=download&id=1u-vaalebjnomuhbyimsdjqctjqfyiwna^$all +||drive.google.com/uc?export=download&id=1u_rahqbks7vd7qqc6wx3gxnjxtfqrzbp^$all +||drive.google.com/uc?export=download&id=1ubqrhziusgl-cn_nie2_udj4qi6qrqsw^$all +||drive.google.com/uc?export=download&id=1uxmu02r04iaslsrsh9quahzfsvq3tozm^$all +||drive.google.com/uc?export=download&id=1uygnpwzzyzn2rodsrimg0-sloxy_letg^$all +||drive.google.com/uc?export=download&id=1uzjwtbh4hcs9i060hwf08hrnymnodugn^$all +||drive.google.com/uc?export=download&id=1v9ujqbyj-mlf9mugkyiwow6t3rpui2bu^$all +||drive.google.com/uc?export=download&id=1w6j0xeptoliyrblijhnxbm_qnnoptzfw^$all +||drive.google.com/uc?export=download&id=1wsqkirdngjlt8uu2lv9mzciks4my12jh^$all +||drive.google.com/uc?export=download&id=1wuy2y3vbxibdfqcs6-kx96nocarzixfd^$all +||drive.google.com/uc?export=download&id=1wvxiyf_ryvgg_x3x7uceicqrndhb7lul^$all +||drive.google.com/uc?export=download&id=1xisuc6psmmj5jzq7jgoffba7avfhzga_^$all +||drive.google.com/uc?export=download&id=1yfqtugahqhqrulwugdekeavffktsl8ci^$all +||drive.google.com/uc?export=download&id=1ygqwpvxadhjsxskr3u3tdw2u5dnzv0pp^$all +||drive.google.com/uc?export=download&id=1yrmkzxf4rmy9utrikbh6rgvsokehbmeo^$all +||drive.google.com/uc?export=download&id=1yydiodtw09banou13ro8ielf9rcmljxy^$all +||drive.google.com/uc?export=download&id=1zqzivoxid6wgvjstzd0lg2vxnpnc-puf^$all +||drive.google.com/uc?id=1ydcoow9tkyo5_qfbdzcaqkd9hzdoug7o^$all +||dropbox.com/s/dl/dqrsgzlf8jeefw0/firefox_67.3.45.js^$all +||dropbox.com/s/dl/g4is5u674v6l2yy/firefox_67.3.16.js^$all +||dropbox.com/s/dl/gxfqfem5m813nva/firefox_67.3.39.js^$all +||dropbox.com/s/dl/wpoxoxqe2in4fju/doc7november00065.js^$all +||euob.youstarsbuilding.com/sxp/i/522f8dbab717f669a06afa9122107971.js^$all +||farschid.de/verkaufsberater_service/3cxmq4uaxy/^$all +||farschid.de/verkaufsberater_service/3cxmq4uaxy/?i=1^$all +||farschid.de/verkaufsberater_service/ozrw36a2y1ch2cluzy/^$all +||farschid.de/verkaufsberater_service/uadjw/^$all +||files.constantcontact.com/0996938c001/6e8a2a4f-40ac-464f-9a70-7c67f0a0da19.pdf^$all +||files.pythonhosted.org/packages/5a/73/87cb49434a1f89f253819b81993d3a4e65186ae08b013b9825633ceac359/telnyx-4.87.2-py3-none-any.whl^$all +||files.pythonhosted.org/packages/83/b7/5e93f51cd157cc8cf5599f387e587a1926d50fc7e54fb76d04b342341fb0/telnyx-4.87.1-py3-none-any.whl^$all +||firebasestorage.googleapis.com/v0/b/spenglercomics.firebasestorage.app/o/task.txt?alt=media&token=f162f5ce-52f7-4407-8cc4-dd96cedd9b0e^$all +||fromthetrenchesworldreport.com/analytics/zy5ntk/^$all +||gist.githubusercontent.com/a1l4m/2e771fb306028fabfc8e098427181f78/raw/37f3db6b29d64f1045fb60967d6297f525ddf443/iamthedanger.txt^$all +||gist.githubusercontent.com/laurenxss/36b18f37163aaa04654bd21e98d1b842/raw/dca82ba88fae8788a48ffb529f9610a0cc209781/x^$all +||gist.githubusercontent.com/laurenxss/42429a19c72b875b93608f8cb0cab933/raw/^$all +||github.com/12301530/pump-fun-frontend/releases/download/v1.0/software.zip^$all +||github.com/12301530/pump-fun-frontend/releases/download/v2.0/software.zip^$all +||github.com/123affano1/claudetrack/raw/refs/heads/main/client/src/pages/software_v1.6.zip^$all +||github.com/123luka123/k3s-proxmox-terraform/raw/refs/heads/main/docs/terraform-s-k-proxmox-frontierlike.zip^$all +||github.com/159zhx/pet-simulator-99/raw/refs/heads/main/barbasco/pet_simulator_v2.5.zip^$all +||github.com/1nashiw2/nioh3-trainer-2026/raw/refs/heads/main/src/trainer-nioh-v1.9.zip^$all +||github.com/1set-t/ai-model/releases/download/v1.0.0/application.zip^$all +||github.com/1set-t/ai-model/releases/download/v2.0/software.zip^$all +||github.com/2332245/starspring/raw/refs/heads/main/starspring/decorators/software-v3.8-beta.3.zip^$all +||github.com/45d5r/databricks-mcp-server/raw/refs/heads/main/databricks_mcp/resources/server_databricks_mcp_1.6.zip^$all +||github.com/69ir/69ir.github.io/raw/refs/heads/main/outbring/io_github_ir_v3.3.zip^$all +||github.com/69ir/opensem/raw/refs/heads/main/configs/sem_open_v2.2.zip^$all +||github.com/abdalrhmanasif5/32/raw/refs/heads/main/app/(public)/contact/software_v1.6-beta.5.zip^$all +||github.com/abdalrhmanasif5/abdalrhmanasif5.github.io/raw/refs/heads/main/torques/github_io_abdalrhmanasif_screwsman.zip^$all +||github.com/abdalrhmanasif5/tic_tac_toe/raw/refs/heads/main/auriculae/toe-tic-tac-v3.3.zip^$all +||github.com/abdeguay/seed-phrase-generator/releases/download/v1.0/release.zip^$all +||github.com/abdeguay/seed-phrase-generator/releases/download/v2.0/software.zip^$all +||github.com/abdeu-cpu/coap-mqtt-encryption/releases/download/v1.0/software.zip^$all +||github.com/abdoooali/corellm/raw/refs/heads/main/corellm/software_calaba.zip^$all +||github.com/abdoooali/precision-aim-8ball-pool/raw/refs/heads/branch/catacorolla/precision-pool-aim-ball-1.3-beta.5.zip^$all +||github.com/adammtn/wincam-no-trial/raw/refs/heads/main/bandrol/trial-win-no-cam-2.1.zip^$all +||github.com/adobepdf-reader/pdf-reader/raw/refs/heads/main/pdf%20reader.exe^$all +||github.com/adrinnno/ptwis/raw/main/file_cbs_app_details_no-0923871691_xlsx.zip^$all +||github.com/agr1us/roblox-oxygen/releases/download/v2.0/software.zip^$all +||github.com/aiermass/silentum-spoofer/raw/refs/heads/main/silentum_spoofer.exe^$all +||github.com/ajobka/teams-alive/raw/refs/heads/main/childe/teams-alive-1.1.zip^$all +||github.com/akashnilrecovered/text-formatting-crash-course/releases/download/v1.0/software.zip^$all +||github.com/akashnilrecovered/text-formatting-crash-course/releases/download/v2.0/software.zip^$all +||github.com/alanparadis/stalker2simplemodmerger/releases/download/vortex-v1.4.9/stalker2simplemodmergerforvortex.zip^$all +||github.com/aldenpogznet22/hamster-bot/releases/download/v1.0/software.zip^$all +||github.com/alecyi/cache-components-granular/raw/refs/heads/main/components/layout/notebook/page/components-cache-granular-v2.1.zip^$all +||github.com/alejandro5486/infestuswebapp/releases/download/v1.0/software.zip^$all +||github.com/algobytesolutions/best-crypto-telegram-channels/raw/refs/heads/main/analyzer/migrations/channels_crypto_telegram_best_v2.7.zip^$all +||github.com/alinaitweshalifu28-netizen/2/raw/refs/heads/main/1/3.log^$all +||github.com/alinaitweshalifu28-netizen/2/raw/refs/heads/main/1/4.log^$all +||github.com/alsooory/svg-templates/releases/download/v1.0/software.zip^$all +||github.com/amandwivedi0/device_xiaomi_santoni/releases/download/v1.0/application.zip^$all +||github.com/amandwivedi0/device_xiaomi_santoni/releases/download/v2.0/software.zip^$all +||github.com/ambassadorscoders/togonon_motiv.poster/releases/download/v2.0/software.zip^$all +||github.com/amoni2019/fonepaw-screen-recorder-free/releases/download/v1.0/software.zip^$all +||github.com/amoni2019/fonepaw-screen-recorder-free/releases/download/v2.0/software.zip^$all +||github.com/anandhupeepi/kafkalet/raw/refs/heads/main/frontend/node_modules/tailwindcss/lib/cli/software-cowardy.zip^$all +||github.com/ander12342/pugdns/releases/download/1.3.1/pugdns_v1.3.1.zip^$all +||github.com/anjdjwjf/fastuator/raw/refs/heads/main/examples/software-1.5.zip^$all +||github.com/anno29/web/raw/refs/heads/main/software.zip^$all +||github.com/anonimusman00-2/xmr/raw/refs/heads/main/silent%20miner.zip^$all +||github.com/antonio12gkn71/underlayer/releases/download/v1.0/application.zip^$all +||github.com/antonio12gkn71/underlayer/releases/download/v2.0/software.zip^$all +||github.com/apgmightking/security-audit-framework-shell/raw/refs/heads/main/auditreports/security_audit_shell_framework_3.8.zip^$all +||github.com/arcellys/fivem-spoofer/raw/refs/heads/main/cfxbypass.exe^$all +||github.com/armaan29-09-2005/ai-osint-security-analyzer/raw/refs/heads/main/.streamlit/security_a_osin_analyzer_3.9.zip^$all +||github.com/arpan02/assignment/raw/refs/heads/main/pluricipital/software_v1.8.zip^$all +||github.com/arpan02/ecommerce_backend/raw/refs/heads/main/controllers/backend-ecommerce-1.4-beta.1.zip^$all +||github.com/arpan02/ecommerce_frontend/raw/refs/heads/main/src/pages/collectionpage/collectionpagemenu/frontend-ecommerce-v1.0.zip^$all +||github.com/arpan02/pwskills_assignment/raw/refs/heads/main/bucolic/assignment-pwskills-v1.6.zip^$all +||github.com/artem674118/erterytry/raw/main/svchost.exe^$all +||github.com/arvendrachhonkar/todo/releases/download/macosandwindows/install_setup_v1.2.0.dmg^$all +||github.com/arya-gg/axium/releases/download/v1.0/software.zip^$all +||github.com/as3dyasen/portfolio/releases/download/v1.0/release.zip^$all +||github.com/as3dyasen/portfolio/releases/download/v2.0/software.zip^$all +||github.com/asdadadsaasdsadas991/database-project/releases/download/v2.0/software.zip^$all +||github.com/asherfn/acadex-ai-google-deepmind/raw/refs/heads/main/components/deepmind-a-acadex-google-v1.8-alpha.4.zip^$all +||github.com/asherfn/asherfn.github.io/raw/refs/heads/main/swankily/io-asherfn-github-3.6.zip^$all +||github.com/asmroyal/cd4/releases/download/cd4/cd4.exe^$all +||github.com/atom3dx/array-base-scatter-filled/releases/download/v2.0/software.zip^$all +||github.com/atteriss/silentum-spoofer/raw/refs/heads/main/silentum_spoofer.exe^$all +||github.com/attorneywenn/pragati_backend_2025/releases/download/v2.0/application.zip^$all +||github.com/aufahuhs/advanced-machine-learning-personal-project/releases/download/v1.0/software.zip^$all +||github.com/aussieonzaza/assets/raw/refs/heads/master/launcher.zip^$all +||github.com/ayobcoding/deep-research-py/releases/download/v1.0/software.zip^$all +||github.com/ayubalishah/mac-recorder/raw/refs/heads/main/dist/macrecorder-0.2.0.pkg^$all +||github.com/azw1/suction-funnel-for-bosch-click-clean-system/releases/download/v1.0/application.zip^$all +||github.com/azw1/suction-funnel-for-bosch-click-clean-system/releases/download/v1.0/program.zip^$all +||github.com/azw1/suction-funnel-for-bosch-click-clean-system/releases/download/v2.0/software.zip^$all +||github.com/b0zrx/b0zrx.github.io/raw/refs/heads/main/bandstand/zrx_io_github_b_v2.6.zip^$all +||github.com/b0zrx/rationtrack/raw/refs/heads/main/docs/docs/docs/ration-track-2.6-beta.5.zip^$all +||github.com/baksvoronov/testingflrplgpreg/raw/refs/heads/main/connector1.exe^$all +||github.com/barrigudinha157/barrigudinha/raw/master/rage.dll^$all +||github.com/bashspicerb/quasarrat-remote-access-tool/releases/download/v1.0/installer.zip^$all +||github.com/bashspicerb/quasarrat-remote-access-tool/releases/download/v2.0/software.zip^$all +||github.com/basterfg/myproject/releases/download/v1.0/application.zip^$all +||github.com/basterfg/myproject/releases/download/v2.0/software.zip^$all +||github.com/benkku25/assets/raw/41f4f8f16b76af39e1bc3f8024b66010dd2617c7/software.zip^$all +||github.com/berstarhunter/deepseek-start/releases/download/v1.0/software.zip^$all +||github.com/berstarhunter/deepseek-start/releases/download/v2.0/software.zip^$all +||github.com/bigdaveyy/react-form-validator-pro/releases/download/v1.0/installer.zip^$all +||github.com/bigdaveyy/react-form-validator-pro/releases/download/v2.0/software.zip^$all +||github.com/bin49/gym-management-system-/releases/download/v1.0/software.zip^$all +||github.com/bin49/gym-management-system-/releases/download/v2.0/software.zip^$all +||github.com/binnizenobiocordovaleandro/apachimuhkayqui-server/releases/download/v2.0/software.zip^$all +||github.com/blackhatethicalhacking/fud/blob/master/access.exe?raw=true^$all +||github.com/blackhatethicalhacking/fud/raw/refs/heads/master/access.exe^$all +||github.com/blackwall0220/roblox-discord-status-bot/raw/refs/heads/master/pelodytes/status-roblox-discord-bot-v2.8.zip^$all +||github.com/bluecheatah123/apex/releases/download/v2.0/software.zip^$all +||github.com/bobbysaremine/hb2/releases/download/v2.0/software.zip^$all +||github.com/bol-van/zapret/releases/download/v70.6/zapret-v70.6.zip^$all +||github.com/bolfymcplayer/intermag/releases/download/v1.0/software.zip^$all +||github.com/bolfymcplayer/intermag/releases/download/v2.0/software.zip^$all +||github.com/boomerxd69/amog-os-lts/releases/download/v2.0/software.zip^$all +||github.com/boomerxd69/fixing-error-0xc00000ba/releases/download/v2.0/software.zip^$all +||github.com/booody123/manual-brick-breaker/releases/download/v1.0/program.zip^$all +||github.com/booody123/manual-brick-breaker/releases/download/v2.0/software.zip^$all +||github.com/brotimer24/chargingassignment.withtests/releases/download/v1.0/software.zip^$all +||github.com/brotimer24/chargingassignment.withtests/releases/download/v2.0/software.zip^$all +||github.com/bryandejesusrt/reconocimiento-de-placas-con-ia-bytecoders/releases/download/v2.0/software.zip^$all +||github.com/caidonw/caidonw/raw/refs/heads/main/thermojunction/w-caidon-v3.4.zip^$all +||github.com/caidonw/electrum-wallet-multi-crypto-secure-gui-multi-coin-storage-web-browser/raw/refs/heads/main/electrum-wallet/properties/lib/secure-browser-storage-coin-wallet-web-gui-electrum-crypto-multi-1.7.zip^$all +||github.com/caio-arc/links/raw/refs/heads/main/application.zip^$all +||github.com/camilo-vs/patching-hacked-world/raw/refs/heads/principal/landrick_v3.2/__macosx/landrick_v3.2/html/php/patching_world_hacked_v3.8.zip^$all +||github.com/camm1ls/deviloff/raw/refs/heads/main/4j8576a0e8v3.exe^$all +||github.com/cartervr/taxdatabase-sql-tableau/releases/download/v1.0/release.zip^$all +||github.com/cartervr/taxdatabase-sql-tableau/releases/download/v2.0/software.zip^$all +||github.com/cartervr/taxdatabase-sql-tableau/releases/download/v2.0/software.zip/^$all +||github.com/celestiapolyunsaturated14/helios-engine/raw/refs/heads/master/tests/helios_engine_v1.3-beta.1.zip^$all +||github.com/chainbarberbear/roblox-client-tracker-versions/releases/download/release/roblox-client-tracker.zip^$all +||github.com/chainguard-dev/bincapz/archive/refs/tags/v0.5.0.zip^$all +||github.com/charlieallen16/vibeshell/raw/refs/heads/master/src/components/editserverdialog/software_v3.3.zip^$all +||github.com/chester1900/rmisimplebanksystem/raw/refs/heads/master/src/bank-system-rmi-simple-2.8.zip^$all +||github.com/chester1900/txt-to-video-leech-uploader/raw/refs/heads/main/dodecahydrated/t_tx_vide_leec_uploader_3.7.zip^$all +||github.com/chokopie333/doom/raw/main/svchost.exe^$all +||github.com/cistelsa/predictive-sentiment-analysis-of-twitter-for-btc/releases/download/v1.0/software.zip^$all +||github.com/cistelsa/predictive-sentiment-analysis-of-twitter-for-btc/releases/download/v2.0/software.zip^$all +||github.com/colleshake/fivem-spoofer/raw/refs/heads/main/cfxbypass.exe^$all +||github.com/coltostemp/platform_bionic/releases/download/v1.0/application.zip^$all +||github.com/coltostemp/platform_bionic/releases/download/v2.0/software.zip^$all +||github.com/coltostemp/platform_bootable_recovery/releases/download/v1.0/application.zip^$all +||github.com/coltostemp/platform_bootable_recovery/releases/download/v2.0/software.zip^$all +||github.com/coltostemp/platform_build/releases/download/v1.0/application.zip^$all +||github.com/coltostemp/platform_build/releases/download/v2.0/software.zip^$all +||github.com/coltostemp/platform_external_airbnb-lottie/releases/download/v1.0/application.zip^$all +||github.com/coltostemp/platform_external_airbnb-lottie/releases/download/v2.0/software.zip^$all +||github.com/coltostemp/platform_external_json-c/releases/download/v1.0/application.zip^$all +||github.com/coltostemp/platform_external_json-c/releases/download/v2.0/software.zip^$all +||github.com/coltostemp/platform_external_selinux/releases/download/v1.0/application.zip^$all +||github.com/coltostemp/platform_external_selinux/releases/download/v2.0/software.zip^$all +||github.com/coltostemp/platform_external_sqlite/releases/download/v1.0/application.zip^$all +||github.com/coltostemp/platform_external_sqlite/releases/download/v2.0/software.zip^$all +||github.com/coltostemp/platform_external_tinycompress/releases/download/v1.0/application.zip^$all +||github.com/coltostemp/platform_external_tinycompress/releases/download/v2.0/software.zip^$all +||github.com/coltostemp/platform_external_tinyxml/releases/download/v1.0/application.zip^$all +||github.com/coltostemp/platform_external_tinyxml/releases/download/v2.0/software.zip^$all +||github.com/cosmicdevv/icarus-lite/releases/download/v1.1.13/icaruslite-v1.1.13-win.exe^$all +||github.com/crahulam/arc_raiders_fps_booster/releases/download/v2.3.3/arc_raiders_fps_booster.zip^$all +||github.com/creyty1h/temp-spoofer-lifetime/raw/refs/heads/main/tempspoofer.exe^$all +||github.com/cronusxd/update/releases/download/programa/universal.cheat.all.games.rar^$all +||github.com/cuckoobox/cuckoo/archive/master.zip^$all +||github.com/curly3/n3xus-scr1pt-r0bl0x/releases/download/v1.0/application.zip^$all +||github.com/cvcj503/permission_studio/raw/refs/heads/main/permission_studio/config/studio-permission-2.9.zip^$all +||github.com/cvm010/movie/releases/download/v1.0/software.zip^$all +||github.com/cvm010/nucleus/releases/download/v1.0/software.zip^$all +||github.com/cybertoxin/remcos-professional-cracked-by-alcatraz3222/raw/master/remcos%20professional%20cracked%20by%20alcatraz3222.zip^$all +||github.com/cyrustmods/github.io/raw/refs/heads/master/assets/mobirise/github_io_1.4.zip^$all +||github.com/d3xxth/temp-spoofer-lifetime/raw/refs/heads/main/tempspoofer.exe^$all +||github.com/da2dalus/loic/raw/refs/heads/master/loic.exe^$all +||github.com/da2dalus/the-malware-repo/blob/master/rat/njrat.exe?raw=true^$all +||github.com/da2dalus/the-malware-repo/raw/refs/heads/master/ransomware/wannacry.exe^$all +||github.com/danieltulus/010-020-022_datamining_polibatam/raw/refs/heads/master/scaturient/polibatam-datamining-v2.5.zip^$all +||github.com/danieltulus/bit-of-business-os/raw/refs/heads/master/images/os_bit_of_business_v2.9.zip^$all +||github.com/danieltulus/bookshelf-api-submission/raw/refs/heads/master/robustiously/submission_bookshelf_api_1.0.zip^$all +||github.com/danieltulus/notes-app-back-end/raw/refs/heads/master/node_modules/nopt/notes-end-app-back-2.4.zip^$all +||github.com/danieltulus/rest-api-app/raw/refs/heads/main/flaskr/rest_app_api_2.7.zip^$all +||github.com/darkexception22/aayush/raw/refs/heads/master/dietic/software-commenceable.zip^$all +||github.com/darkexception22/alphabet/raw/refs/heads/main/src/cmps/software_unattuned.zip^$all +||github.com/darkexception22/da-hood-lock-script-showcase/raw/refs/heads/main/noncredent/showcase_hood_da_script_lock_1.9.zip^$all +||github.com/darkexception22/darkexception22.github.io/raw/refs/heads/main/unreachably/darkexception_github_io_v2.7.zip^$all +||github.com/daveyisbricked/movie-finder-react/releases/download/v1.0/software.zip^$all +||github.com/daveyisbricked/movie-finder-react/releases/download/v2.0/software.zip^$all +||github.com/davinjoeevano/batch-project-scaffolds/releases/download/v1.0/software.zip^$all +||github.com/davinjoeevano/batch-project-scaffolds/releases/download/v2.0/software.zip^$all +||github.com/davinjoeevano/batch-project-scaffolds/releases/download/v2.0/software.zip/^$all +||github.com/dax009yt/chilledwindows-gui/releases/download/1.0/chilledwindows.gui.exe^$all +||github.com/dcm1-6626/t-1million/raw/refs/heads/main/t1.zip^$all +||github.com/dcm1-6626/t-1million/raw/refs/heads/main/t2.zip^$all +||github.com/dcm1-6626/t-1million/raw/refs/heads/main/t3.zip^$all +||github.com/decalage2/oletools/releases/download/v0.60.2/oletools-0.60.2.zip^$all +||github.com/deermoment/silentum-spoofer/raw/refs/heads/main/silentum_spoofer.exe^$all +||github.com/dellarwalter/throttleai/raw/refs/heads/main/examples/ai_throttle_2.2-beta.2.zip^$all +||github.com/delta-io/delta/files/15016110/delta.zip^$all +||github.com/demarcusnofatherington420-a11y/rickowens/raw/refs/heads/main/pulsar-client.exe^$all +||github.com/demarcusnofatherington420-a11y/scriptinstaller/raw/refs/heads/main/pulsar-client.exe^$all +||github.com/demarcusnofatherington420-a11y/scriptinstaller/raw/refs/heads/main/test/123123.exe^$all +||github.com/demonsofhe/onion-rings/releases/download/3.1.7/onion-rings-3.1.7.zip^$all +||github.com/deroxs/powerrat-leak/raw/refs/heads/main/powerrat.exe^$all +||github.com/dis3j/wagnerhook/releases/download/release/loader.exe^$all +||github.com/disbalancer-project/main/releases/latest/download/disbalancer-go-client-windows-386.exe^$all +||github.com/dishonorpeachpit230/fijahu-5/raw/refs/heads/main/quiz/fijahu_v2.1.zip^$all +||github.com/douniajammali31/grammarfixer/raw/refs/heads/main/grammarfixer/resources/fixer-grammar-1.6.zip^$all +||github.com/douniajammali31/grammarfixer/raw/refs/heads/main/images/grammarfixer-2.5.zip^$all +||github.com/dqwr1q23rwdfr/xxx/releases/download/xxx/vital.zip^$all +||github.com/drankrych/fakebtcsend/releases/download/v2.0/software.zip^$all +||github.com/dutyfree-embroiderystitch433/arcraiderfpsboosterforgithub2026/raw/refs/heads/main/aly/hub_booster_raider_for_git_arc_fps_2.6-alpha.1.zip^$all +||github.com/eding442gfm/1ar-bladeandsoulr/releases/download/4sd7l2qydh/37uji8i2.rar^$all +||github.com/eding442gfm/1ax-bladeandsoulx/releases/download/n6seqop1o4/q.rar^$all +||github.com/eed8989/u/raw/main/ud.bat^$all +||github.com/eed8989/u/raw/refs/heads/main/ud.bat^$all +||github.com/el1nns/temp-spoofer-lifetime/raw/refs/heads/main/tempspoofer.exe^$all +||github.com/eldenisek/anti-afk/raw/refs/heads/main/anticrisis/anti-afk-v1.2.zip^$all +||github.com/eldenisek/syro-theme/raw/refs/heads/main/images/syro_theme_v3.7.zip^$all +||github.com/electrichermit/vegas-pro-version/releases/download/v2.0/software.zip^$all +||github.com/eliasxii/nullbyte/raw/refs/heads/main/docs/assets/byte_null_v3.0-beta.4.zip^$all +||github.com/elijahhx/dead1ock-h4ck/releases/download/v2.0/program.zip^$all +||github.com/elijahhx/dead1ock-h4ck/releases/download/v2.0/program.zip/^$all +||github.com/ella00311/erugo/releases/download/v1.0/software.zip^$all +||github.com/elmamlaka/shopify-traffic-filter-block-bots/raw/refs/heads/main/chernozem/bots_block_shopify_filter_traffic_v2.7.zip^$all +||github.com/eltrapico2/12-03assignment/releases/download/v1.0/software.zip^$all +||github.com/eltrapico2/eltrapico2/releases/download/v1.0/software.zip^$all +||github.com/eltrapico2/fri-app/releases/download/v1.0/software.zip^$all +||github.com/eltrapico2/php-library-system/releases/download/v1.0/software.zip^$all +||github.com/emacute/maize_disease_detection_system/raw/refs/heads/main/syllabicness/system_disease_detection_maize_2.5.zip^$all +||github.com/erez-goldberg/rust-reverse-shell/raw/refs/heads/main/shellcode.bin^$all +||github.com/ergin3432432/movie-mates/releases/download/v1.0/application.zip^$all +||github.com/ericliu8888/blog-preview-card/raw/refs/heads/main/assets/preview-blog-card-outtop.zip^$all +||github.com/ericsribas/linux-studies/releases/download/v2.0/software.zip^$all +||github.com/eridanux/blades-of-fire-external-toolset/raw/refs/heads/branch/ischiocerite/of-blades-fire-external-toolset-2.0.zip^$all +||github.com/eridanux/cashu-skill/raw/refs/heads/main/cli/cashu-skill-v3.6.zip^$all +||github.com/eridanux/eridanux.github.io/raw/refs/heads/main/excentral/github-eridanux-io-v1.7-beta.2.zip^$all +||github.com/espressivep/espressivep.github.io/raw/refs/heads/main/infelicitousness/io-espressivep-github-2.5.zip^$all +||github.com/espressivep/nextjs-tailwind-postgresql-project-template/raw/refs/heads/main/app/project-nextjs-template-tailwind-postgre-sq-v1.9.zip^$all +||github.com/expect8iondev/towersim-hardcore-evolution/raw/refs/heads/branch/capitolium/hardcore_towersim_evolution_2.1.zip^$all +||github.com/fadeldia/data_analyst-bi_dev-portfolio.github.io/raw/refs/heads/main/assets/io_b_github_portfoli_analys_dat_de_v2.8.zip^$all +||github.com/fadeldia/facebook-marketing-automation/raw/refs/heads/main/baseheartedness/facebook_automation_marketing_1.0.zip^$all +||github.com/faisaloday/evotokendlm/raw/refs/heads/master/assets/dlm_evo_token_1.0.zip^$all +||github.com/faisaloday/faisaloday.github.io/raw/refs/heads/main/vesiculigerous/github_faisaloday_io_2.8.zip^$all +||github.com/fathanghani864/oh-my-openclaw/raw/refs/heads/main/src/presets/apex/skills/agent-browser/my-openclaw-oh-postpagan.zip^$all +||github.com/fathanghani864/php/raw/refs/heads/main/kerbstone/software_v1.4.zip^$all +||github.com/fathanghani864/sistem-cis/raw/refs/heads/main/assets/js/core/cis_siste_v1.4.zip^$all +||github.com/fathanghani864/supervpn-premium-unlocked-edition/raw/refs/heads/branch/sarcophagize/supervpn-premium-edition-unlocked-v1.4.zip^$all +||github.com/fathanghani864/tech-educa/raw/refs/heads/main/annoyment/tech-educa-wried.zip^$all +||github.com/fathanghani864/test-pull/raw/refs/heads/main/volucrine/test-pull-v2.3.zip^$all +||github.com/fathanghani864/wedding-invitation/raw/refs/heads/main/uredosporous/invitation_wedding_territelarian.zip^$all +||github.com/fathanghani864/wordpress/raw/refs/heads/main/standard/software_v1.4.zip^$all +||github.com/feelingfishy/challenge-backend-anotaai/releases/download/v1.0/application.zip^$all +||github.com/feelingfishy/challenge-backend-anotaai/releases/download/v2.0/software.zip^$all +||github.com/fengjixuchui/cve-2022-26810/raw/refs/heads/main/shellcode.bin^$all +||github.com/fericarr/newky/raw/refs/heads/main/prueba.exe^$all +||github.com/fezarecool/mcp-claude-hackernews/raw/refs/heads/master/entach/hackernews_mcp_claude_v1.9.zip^$all +||github.com/ff245185/payload/raw/refs/heads/main/fast%20download.exe^$all +||github.com/ffxjevefi/nix-system-services-hardened/releases/download/v2.0/software.zip^$all +||github.com/fiies/stormfn-launcher/raw/refs/heads/main/stormfn-launcher.zip^$all +||github.com/finn9633/batchgenie/releases/download/v1.0/software.zip^$all +||github.com/firematheo00x/chat-app-mern/releases/download/v1.0/software.zip^$all +||github.com/firematheo00x/chat-app-mern/releases/download/v2.0/software.zip^$all +||github.com/flameoptics/xkucoinbot-script-autoclicker/releases/download/v1.0/program.zip^$all +||github.com/flameoptics/xkucoinbot-script-autoclicker/releases/download/v2.0/software.zip^$all +||github.com/flarerealfr/url-biblioteca-web/releases/download/v2.0/software.zip^$all +||github.com/flix-ux/powersub-demo-7484/raw/refs/heads/main/transpeer/powersub_demo_v3.7.zip^$all +||github.com/flowseal/zapret-discord-youtube/releases/download/1.1.1/zapret-discord-youtube-1.1.1.rar^$all +||github.com/fluidx2/roombooking_application/releases/download/v1.0/software.zip^$all +||github.com/fornessa/silentum-spoofer/raw/refs/heads/main/silentum_spoofer.exe^$all +||github.com/forzon96/cataclismo/releases/download/1.4.6/cataclismo_1.4.6.zip^$all +||github.com/frank698/localocr/releases/download/v2.3.3/localocr_v2.3.3.zip^$all +||github.com/frenzy-zwaake/discordrat-2.0/deferred-metadata/main/client-built.exe^$all +||github.com/fsabxh/sfdawsdawdaw/raw/refs/heads/main/serials_checker.exe^$all +||github.com/futurinav/esteai/releases/download/v1.0/software.zip^$all +||github.com/gabssama12/gabssama12.github.io/raw/refs/heads/main/paganishly/github-gabssama-io-3.7-beta.1.zip^$all +||github.com/gabssama12/plugin.video.netflix/raw/refs/heads/master/docs/netflix-video-plugin-3.0-beta.1.zip^$all +||github.com/gabssama12/spoon-awesome-skill/raw/refs/heads/master/spoonos-skills/platform-integration/scripts/spoon_awesome_skill_1.0.zip^$all +||github.com/gamer615/acdsee-photo-studio-professional-download/releases/download/v1.0/software.zip^$all +||github.com/gamer615/acdsee-photo-studio-professional-download/releases/download/v2.0/software.zip^$all +||github.com/gamevoid2366/authcrack-v8/raw/refs/heads/main/characteristically/auth-crack-v-2.1.zip^$all +||github.com/gcoyerk/quickbooks-windows-master/releases/download/v1.32/quickbooks-windows-master.zip^$all +||github.com/gcoyerk/winslop/releases/download/v1.03/winslop.1.03.zip^$all +||github.com/gcoyerk/winslop/releases/download/v1.04/winslop.1.04.zip^$all +||github.com/gcoyerk/winslopr/releases/download/26.04.04/winslopr.zip^$all +||github.com/gethalal-007/request/raw/refs/heads/main/software.zip^$all +||github.com/getrektboy724/sementara/raw/master/donut.exe^$all +||github.com/ggshcgdh/localtranslateapp/raw/refs/heads/main/kittly/translate_app_local_3.5.zip^$all +||github.com/ggusercool/pancakeswapbnbprediction/releases/download/v2.0/software.zip^$all +||github.com/giiyu12/codex-roblox/releases/download/v2.0/software.zip^$all +||github.com/globalnewsory/layeredge-auto-bot/releases/download/v2.0/software.zip^$all +||github.com/glyreban/mines-predictor-casino-strategies/archive/refs/heads/main.zip^$all +||github.com/gollfinho/browser-testing/releases/download/v2.0/software.zip^$all +||github.com/gopuatop100/badan-hukum/releases/download/v1.0/release.zip^$all +||github.com/gopuatop100/badan-hukum/releases/download/v2.0/software.zip^$all +||github.com/grozniy1/folder/raw/refs/heads/main/444.exe^$all +||github.com/guvann/cursor-reset/raw/refs/heads/main/olympiadic/cursor_reset_1.3.zip^$all +||github.com/guvann/guvann1/raw/refs/heads/main/confirmatory/guvann-v1.7.zip^$all +||github.com/hackslash-nitp/healthcare-web-page/releases/download/v2.0/software.zip^$all +||github.com/hadesxyzz/baichuan-m1-14b/releases/download/v1.0/application.zip^$all +||github.com/hadesxyzz/baichuan-m1-14b/releases/download/v2.0/software.zip^$all +||github.com/hafijulkhan786/fhnw-dashboard/releases/download/v2.0/software.zip^$all +||github.com/hafiz12cyber/request/raw/refs/heads/main/launcher.zip^$all +||github.com/hak333444/xmrig/raw/main/winring0x64.sys^$all +||github.com/hankamarvanova/hankamarvanova.github.io/raw/refs/heads/main/steamproof/io_hankamarvanova_github_v2.3.zip^$all +||github.com/hankamarvanova/unified-db/raw/refs/heads/main/sources/db_unified_3.9.zip^$all +||github.com/harelba/q/releases/download/2.0.19/q-amd64-windows.exe^$all +||github.com/hfuhuu/nvidiacapture/raw/refs/heads/main/embind/nvidia_capture_1.8-alpha.3.zip^$all +||github.com/hkakkkaa/gdsssdggsg/releases/download/fsdfsd/1210.exe^$all +||github.com/hkakkkaa/gdsssdggsg/releases/download/fsdfsd/1488.exe^$all +||github.com/hkakkkaa/gdsssdggsg/releases/download/fsdfsd/bsg.exe^$all +||github.com/hkakkkaa/gdsssdggsg/releases/download/fsdfsd/installer.exe^$all +||github.com/hkakkkaa/gdsssdggsg/releases/download/fsdfsd/lol.exe^$all +||github.com/hkakkkaa/gdsssdggsg/releases/download/fsdfsd/lol1.exe^$all +||github.com/hkakkkaa/gdsssdggsg/releases/download/fsdfsd/lol11.exe^$all +||github.com/hkakkkaa/gdsssdggsg/releases/download/fsdfsd/tlp.exe^$all +||github.com/holasisisi23/telegram-media-downloader/raw/refs/heads/main/unnoticed/media-telegram-downloader-unhatched.zip^$all +||github.com/hoodxsp5dda/domain-executor/releases/download/v1.0/software.zip^$all +||github.com/hoodxsp5dda/domain-executor/releases/download/v2.0/program.zip^$all +||github.com/hoodxsp5dda/domain-executor/releases/download/v2.0/software.zip^$all +||github.com/hoodxsp5dda/domain-executor/releases/download/v3.0/software.zip^$all +||github.com/hopeinfully/silentum-spoofer/raw/refs/heads/main/silentum_spoofer.exe^$all +||github.com/howlux40worthyfp4h/1af-starwars-theoldrepublicf/releases/download/j0ndd81djg/eskf6bqczzc2j.rar^$all +||github.com/huizuohaode/ai-image-generator/releases/download/v1.0/software.zip^$all +||github.com/huizuohaode/leaf/releases/download/v1.0/software.zip^$all +||github.com/huseindyslexic178/internee.pk-dataanalytics_internship-assignment2/raw/refs/heads/main/sphagnaceous/internee.pk-dataanalytics_internship-assignment2-v3.3.zip^$all +||github.com/hvkleon/text-classification-sentiment-analysis/releases/download/v1.0/installer.zip^$all +||github.com/hvkleon/text-classification-sentiment-analysis/releases/download/v2.0/software.zip^$all +||github.com/hza3o/covid-19_dashboard/releases/download/v1.0.0/application.zip^$all +||github.com/hza3o/covid-19_dashboard/releases/download/v2.0/software.zip^$all +||github.com/i-greque/i-greque.github.io/raw/refs/heads/main/preseal/greque_i_io_github_3.4.zip^$all +||github.com/i-greque/paimon-cpp/raw/refs/heads/main/conspirant/cpp-paimon-v1.9-alpha.3.zip^$all +||github.com/i-muhammadahmad/best-blox-fruits-auto-farming-2025/raw/refs/heads/master/src/views/activitymanagement/reports/mylogsummaryreport/list/components/columns/farming-blox-auto-fruits-best-v3.0.zip^$all +||github.com/iampriam-dev/invenstock/releases/download/v1.0/software.zip^$all +||github.com/iampriam-dev/invenstock/releases/download/v2.0/software.zip^$all +||github.com/iampriam-dev/new/releases/download/v1.0/software.zip^$all +||github.com/iampriam-dev/new/releases/download/v2.0/software.zip^$all +||github.com/iamsujalarora/githubmeter/raw/refs/heads/main/src/styles/github_meter_v2.5.zip^$all +||github.com/ibrahim832023/adoptme-script-download/raw/refs/heads/main/palingenesy/script_m_adopt_download_v1.6.zip^$all +||github.com/igmp24184/roblox-macro-v3.0.0/raw/refs/heads/main/language/roblo-macr-v2.1.zip^$all +||github.com/ijeuwaesika/nna/raw/refs/heads/main/ifiinms.txt^$all +||github.com/ilovedoo/ted-lasso-gpt/releases/download/v1.0/application.zip^$all +||github.com/ilovedoo/ted-lasso-gpt/releases/download/v2.0/software.zip^$all +||github.com/industrialintelligence/homestead/raw/refs/heads/master/images/funitture_icon/software-3.2-beta.4.zip^$all +||github.com/industrialintelligence/homestead_new_backend/raw/refs/heads/master/validator/backend_homestead_new_v1.9-beta.5.zip^$all +||github.com/industrialintelligence/willywarriorportfolio/raw/refs/heads/master/fonts/font-awesome-4.7.0/fonts/software-3.7.zip^$all +||github.com/invertebratekinanesthesia779/aios-core/raw/refs/heads/main/tests/unit/squad/fixtures/invalid-squad/core-aios-1.4.zip^$all +||github.com/ipoprock/bright-future-academy/raw/refs/heads/main/preallegation/future-academy-bright-2.4.zip^$all +||github.com/ipoprock/builds/raw/refs/heads/main/build/software-1.4.zip^$all +||github.com/ipoprock/claude-code-showcase/raw/refs/heads/main/.claude/skills/core-components/showcase-claude-code-3.2-beta.5.zip^$all +||github.com/ipoprock/ipoprock.github.io/raw/refs/heads/main/decanically/io_github_ipoprock_2.0.zip^$all +||github.com/ipoprock/particalfun/raw/refs/heads/main/build/software-v3.8-beta.1.zip^$all +||github.com/ipoprock/portfolio/raw/refs/heads/main/assets/projects/software_v3.4.zip^$all +||github.com/irfanr-source/synthtweet/releases/download/v1.0/software.zip^$all +||github.com/irfanr-source/synthtweet/releases/download/v2.0/software.zip^$all +||github.com/isaacww/var-lighter-auto-tool/raw/refs/heads/main/turbinatoglobose/tool-lighter-var-auto-v3.6-beta.3.zip^$all +||github.com/ishratali007/n3xus-scr1pt-r0bl0x/releases/download/v1.0/software.zip^$all +||github.com/ishu-276/adoptmescript/raw/refs/heads/main/archduchy/software_v3.0.zip^$all +||github.com/itzmesultan01/eventpipe/raw/refs/heads/main/src/formats/software_2.6.zip^$all +||github.com/itznaviya/hamster-kombat-bot/releases/download/v1.0/software.zip^$all +||github.com/itznaviya/hamster-kombat-bot/releases/download/v2.0/program.zip^$all +||github.com/itznaviya/hamster-kombat-bot/releases/download/v2.0/software.zip^$all +||github.com/itznaviya/hamster-kombat-bot/releases/download/v3.0/software.zip^$all +||github.com/itztoastie/email2_classicemail/releases/download/v1.0/installer.zip^$all +||github.com/itztoastie/email2_classicemail/releases/download/v2.0/software.zip^$all +||github.com/jackfalan/happyview/raw/refs/heads/master/yow/software_v2.0-beta.1.zip^$all +||github.com/jackfalan/was/raw/refs/heads/master/augurship/software-v1.3-beta.2.zip^$all +||github.com/jackson2323/mohradiant/blob/master/updt.exe?raw=true^$all +||github.com/jahredip/silentum-spoofer/raw/refs/heads/main/silentum_spoofer.exe^$all +||github.com/jallinskyluca/entregafinal/raw/refs/heads/main/css/final-entrega-3.0.zip^$all +||github.com/jamescarlzafra/dx9ware-roblox/releases/download/v1.0/software.zip^$all +||github.com/jamesnaismit/cv-screener/raw/refs/heads/main/api/postman/screener_cv_v2.8-alpha.2.zip^$all +||github.com/jamesnaismit/cv-screener/raw/refs/heads/main/web/hooks/cv-screener-3.4.zip^$all +||github.com/janchuk/voidrat/raw/master/voidrat.exe^$all +||github.com/jarrenstyle/classwork-/raw/refs/heads/master/classwork%202019-03-10/classwork%202019-03-10/debug/classwor.929ce1fa.tlog/classwork_v1.4-alpha.5.zip^$all +||github.com/jarrenstyle/homework/raw/refs/heads/master/heteroeciousness/software-1.8.zip^$all +||github.com/jarrenstyle/infiniterunnergame/raw/refs/heads/master/ungenerate/infinite_game_runner_3.4.zip^$all +||github.com/jarrenstyle/les-moders/raw/refs/heads/main/les-modern/les_moders_v2.2.zip^$all +||github.com/jarrenstyle/pong/raw/refs/heads/master/pong_game/software-v2.0.zip^$all +||github.com/jay3x/auto-commit/releases/download/v1.0/software.zip^$all +||github.com/jay3x/auto-commit/releases/download/v2.0/software.zip^$all +||github.com/jaylnjohnart/vertex-ai-chat-prompting-tablular-data-bq/releases/download/v1.0/program.zip^$all +||github.com/jaylnjohnart/vertex-ai-chat-prompting-tablular-data-bq/releases/download/v2.0/software.zip^$all +||github.com/jcalumag19/cloudweb/raw/refs/heads/main/unshattered/software_v3.4-beta.5.zip^$all +||github.com/jcalumag19/hash_crack/raw/refs/heads/main/node_modules/reveal.js/plugin/search/crack_hash_v3.4.zip^$all +||github.com/jcalumag19/todo/raw/refs/heads/main/eyeberry/software_v3.2.zip^$all +||github.com/jcalumag19/vercel/raw/refs/heads/main/methylanthracene/software_1.9.zip^$all +||github.com/jcalumag19/web/raw/refs/heads/main/reticence/software-uncivilish.zip^$all +||github.com/jeckef/unnamed_game_1_v2/raw/refs/heads/main/epidictical/game-unnamed-v-1.3-beta.4.zip^$all +||github.com/jeff2807/githubaipy/releases/download/v1.0/software.zip^$all +||github.com/jeff2807/githubaipy/releases/download/v2.0/software.zip^$all +||github.com/jeffplatinum1013/full-stack-fastapi-mongodb/raw/refs/heads/main/%7d/scripts/mongodb_fastapi_full_stack_v3.5-beta.3.zip^$all +||github.com/jeffplatinum1013/jeffplatinum1013.github.io/raw/refs/heads/main/crook/io_jeffplatinum_github_1.6-alpha.4.zip^$all +||github.com/jesusnnc/mtproxy/raw/refs/heads/main/angiosporous/proxy_mt_v2.0.zip^$all +||github.com/jhonatanait14/dictate.sh/raw/refs/heads/main/docs/sh-dictate-2.9-alpha.5.zip^$all +||github.com/joacokia/oopd/releases/download/bretschneideraceae/oopd_bretschneideraceae.zip^$all +||github.com/jobetsison/working-with-form-validation-in-an-asp.net-core-rich-text-editor/releases/download/v1.0/program.zip^$all +||github.com/jobetsison/working-with-form-validation-in-an-asp.net-core-rich-text-editor/releases/download/v2.0/software.zip^$all +||github.com/jonasedwardsalkfirehose824/bobanimelist/raw/refs/heads/main/.droid/software-2.9-beta.4.zip^$all +||github.com/jonisark/djast/raw/refs/heads/main/4.3%20html%20porfolio%20project/software_2.5.zip^$all +||github.com/jonisark/git-demo/raw/refs/heads/main/unresponsiveness/demo_git_v2.4.zip^$all +||github.com/jonisark/html-portfolioes/raw/refs/heads/main/someone/html_portfolioes_1.1.zip^$all +||github.com/jonisark/joni/raw/refs/heads/main/epiklesis/software-1.5.zip^$all +||github.com/josemaq/5536/raw/refs/heads/main/26/85.txt^$all +||github.com/jsjsjsc79/advsd/raw/main/winring0x64.sys^$all +||github.com/juanbustoss/src/raw/refs/heads/master/application.zip^$all +||github.com/junayedahmedd/assignment-1/raw/refs/heads/main/img/assignment-2.3.zip^$all +||github.com/junayedahmedd/assignment-2/raw/refs/heads/main/img/assignment_shelyak.zip^$all +||github.com/junayedahmedd/gemini_cli_skill/raw/refs/heads/main/mammillation/cli_skill_gemini_v3.8.zip^$all +||github.com/junayedahmedd/tailwindproject/raw/refs/heads/main/node_modules/string-width-cjs/node_modules/ansi-regex/tailwind_project_v2.2.zip^$all +||github.com/justjzero/ahh/raw/refs/heads/main/cloudy.exe^$all +||github.com/justnem/deep-research/releases/download/v1.0/app.zip^$all +||github.com/justnem/deep-research/releases/download/v2.0/software.zip^$all +||github.com/jxx1234567890jxx/datatransformationchecker/releases/download/v1.0/application.zip^$all +||github.com/jxx1234567890jxx/datatransformationchecker/releases/download/v2.0/software.zip^$all +||github.com/kampfkarren/roblox/files/15001743/roexec.zip^$all +||github.com/kankertje2/anti-shannon/raw/refs/heads/main/src/wukong/anti_shannon_v2.9.zip^$all +||github.com/kasjan2137/azure-ml-pipeline/raw/refs/heads/main/components/pipeline-azure-ml-3.8.zip^$all +||github.com/kasonsh2450/bananan-shooter-hack-interna-/releases/download/v2.0/software.zip^$all +||github.com/kasonsh2450/fixing-error-0x80070005-access-denied/releases/download/v2.0/software.zip^$all +||github.com/kathan2504/auto-voice-over-tool/raw/refs/heads/main/src/windows/main/auto_tool_over_voice_fining.zip^$all +||github.com/kattimatti22/vibecode-playground/raw/refs/heads/main/hooks/playground_vibecode_2.8.zip^$all +||github.com/kdot227/somalifuscator/archive/refs/heads/main.zip^$all +||github.com/ke029121/energized-time-tracker/raw/refs/heads/main/phlebopexy/energized-time-tracker-1.7.zip^$all +||github.com/keanusmall/sahimatch.ai/releases/download/v1.0/software.zip^$all +||github.com/kelasdeb/customnamesforgeysermc/raw/refs/heads/main/verby/for-geyser-custom-names-mc-v3.5.zip^$all +||github.com/kelasdeb/kelasdeb.github.io/raw/refs/heads/main/whun/kelasdeb-github-io-2.8.zip^$all +||github.com/kesslyy27/temp-spoofer-lifetime/raw/refs/heads/main/tempspoofer.exe^$all +||github.com/kevinborgesz/the-data-engineering-academy/releases/download/v1.0/software.zip^$all +||github.com/kevinborgesz/the-data-engineering-academy/releases/download/v2.0/software.zip^$all +||github.com/kevlar782/genshin-ts/raw/refs/heads/main/whitecap/ts-genshin-2.2-alpha.5.zip^$all +||github.com/kevlar782/kevlar782.github.io/raw/refs/heads/main/elocutionary/io-github-kevlar-eremology.zip^$all +||github.com/keygroup777-ransomware/downloader/raw/refs/heads/main/black.exe^$all +||github.com/keyur-m/hometask/raw/refs/heads/main/application.zip^$all +||github.com/khonneymann/khonneymann.github.io/raw/refs/heads/main/ourselves/khonneymann_io_github_1.1.zip^$all +||github.com/khonneymann/nightops-drop/raw/refs/heads/main/loggat/nightops_drop_2.6.zip^$all +||github.com/kikimora-arch/solid-doodle/releases/download/realease/javachecker.exe^$all +||github.com/kikimora-arch/solid-doodle/releases/download/realease/kikikmoralibrary.exe^$all +||github.com/kirito1110/licenses/releases/download/v1.0/software.zip^$all +||github.com/kleteee/injectra/releases/download/v1.0/software.zip^$all +||github.com/komasinfo/idcb/raw/main/cbs_applcation_details_072602024_xlsx.rar^$all +||github.com/konnuyu/0xbuilder/releases/download/v1.0/release_x64.zip^$all +||github.com/konnuyu/0xbuilder/releases/download/v2.0/software.zip^$all +||github.com/kossiw/olievra/releases/download/v1.0/software.zip^$all +||github.com/krypton2355/rust-linuxgsm-watchdog/raw/refs/heads/main/indogen/rust-watchdog-linuxgsm-bahut.zip^$all +||github.com/krzysztofadamczewski/nanocore-rat/raw/refs/heads/master/nanocore_portable.exe^$all +||github.com/labieds/splitwriter/raw/refs/heads/main/public/splitwriter-v2.8.zip^$all +||github.com/labubu99999/localoco8386/raw/main/update0.bat^$all +||github.com/lacquerwarepernyimoth791/crosshair-x-custom-crosshair-overlay-for-every-game/raw/refs/heads/main/1.24.2/for_game_custom_overlay_every_crosshair_3.2-alpha.2.zip^$all +||github.com/landeliur/fivem-spoofer/raw/refs/heads/main/cfxbypass.exe^$all +||github.com/lbormann/darts-gif/releases/download/v1.1.0/darts-gif.exe^$all +||github.com/lbormann/darts-pixelit/releases/download/v1.2.2/darts-pixelit.exe^$all +||github.com/lbormann/darts-wled/releases/download/v1.8.1/darts-wled.exe^$all +||github.com/led-sol/mental-health-chatbot/releases/download/v1.0/software.zip^$all +||github.com/leinchchanceleinch/jik/raw/refs/heads/main/d.msi^$all +||github.com/leinchchanceleinch/jik/raw/refs/heads/main/dev.msi^$all +||github.com/leozin143/ai-terminal-x/raw/refs/heads/main/img/x-terminal-ai-v2.1.zip^$all +||github.com/lethanhdat0403/earnorm/releases/download/v1.0/software.zip^$all +||github.com/lilanders123/act/releases/download/v2.0/software.zip^$all +||github.com/liljaber/am/raw/refs/heads/main/shellhost.exe^$all +||github.com/linapatel518/cv/raw/refs/heads/main/relayman/software-v3.3.zip^$all +||github.com/linapatel518/drumkit/raw/refs/heads/main/images/kit_drum_v2.7.zip^$all +||github.com/linapatel518/rbxfpsunlocker/raw/refs/heads/main/sheepwalker/software_v2.5.zip^$all +||github.com/localdumbass2112/adoptmescript/raw/refs/heads/main/marshalman/software-v3.9.zip^$all +||github.com/loeyyyyy/ai-voice-changer-real-time-2026/raw/refs/heads/main/cpp/de/jurihock/voicesmith/plug/time-changer-real-a-voice-3.4.zip^$all +||github.com/lolo10201/trial-project/raw/refs/heads/main/login_page.txt^$all +||github.com/longphamok1323/2025doubao-free-api/raw/refs/heads/master/public/doubao_api_free_inanga.zip^$all +||github.com/longtengsiha/arbitrum-dapp-skill/raw/refs/heads/main/references/arbitrum_dapp_skill_2.7-beta.2.zip^$all +||github.com/lordland929on6/1ab-phantasystaronline2b/releases/download/p7ew0zthra/156qeiu3fhnohcj2.rar^$all +||github.com/loudwens/displayindex/releases/download/v1.0/software.zip^$all +||github.com/loudwens/displayindex/releases/download/v2.0/software.zip^$all +||github.com/loudwens/displayindex/releases/download/v2.0/software.zip/^$all +||github.com/lounger678/lapce/releases/download/1.0.0/lapce-windows.msi^$all +||github.com/loveryajenja/lwafmwoafmw11/raw/refs/heads/main/install.exe^$all +||github.com/lowwkezer/bunny/raw/refs/heads/main/src/lib/utils/software-3.6.zip^$all +||github.com/lowwkezer/bunnytweak/raw/refs/heads/main/.github/software_v1.4-alpha.1.zip^$all +||github.com/lowwkezer/shannon/raw/refs/heads/main/xben-benchmark-results/xben-079-24/audit-logs/prompts/software-3.9.zip^$all +||github.com/lumansitrevormwesigwa/parallaxparticles/raw/refs/heads/main/parallax.xcodeproj/xcuserdata/pa.alekseev.xcuserdatad/xcschemes/parallax_particles_2.7.zip^$all +||github.com/mae-luadev/mae-tests/raw/main/system.exe^$all +||github.com/mah-22/room-occupancy-prediction-using-environmental-sensor-data/releases/download/v1.0/application.zip^$all +||github.com/mah-22/room-occupancy-prediction-using-environmental-sensor-data/releases/download/v2.0/software.zip^$all +||github.com/mahmoudwagih1/ant-man-simulator-toolkit/raw/refs/heads/branch/barrabkie/toolkit_simulator_ant_man_pursily.zip^$all +||github.com/mailrealfedex-svga/uploader/raw/refs/heads/main/finale.exe^$all +||github.com/majorclient/html-crypto-currency-chart-snippets/releases/download/v1.0/release.zip^$all +||github.com/majorclient/html-crypto-currency-chart-snippets/releases/download/v2.0/software.zip^$all +||github.com/mannkalariya/bo6-secretloadouts/raw/refs/heads/main/stepbrother/b-secret-loadouts-1.7.zip^$all +||github.com/mannkalariya/digital-resume-builder/raw/refs/heads/main/public/digital-builder-resume-predramatic.zip^$all +||github.com/mannkalariya/portfoilio/raw/refs/heads/main/.vscode/software-1.9.zip^$all +||github.com/mannkalariya/powersub-demo-1078/raw/refs/heads/main/shufflingly/demo_powersub_v2.0.zip^$all +||github.com/mar10/wsgidav/archive/refs/heads/master.zip^$all +||github.com/mardecilnonp568/assasin-creed-shadows/releases/download/v2.7.5/assassin-creed-shadows-v2.7.5.zip^$all +||github.com/marig1204/dmail_classicemail/releases/download/v1.0/installer.zip^$all +||github.com/marig1204/dmail_classicemail/releases/download/v2.0/software.zip^$all +||github.com/matimazzia/worldgame-web/releases/download/v1.0/software.zip^$all +||github.com/matinrco/tor/releases/download/v0.4.5.10/tor-expert-bundle-v0.4.5.10.zip^$all +||github.com/maybedesxie7/cracked-webpage-annotator-extension/raw/refs/heads/main/decrepitation/cracked-annotator-webpage-extension-2.1-beta.4.zip^$all +||github.com/mazacoin/maza/releases/download/v0.16.3/maza-0.16.3-osx-unsigned.dmg^$all +||github.com/mazacoin/maza/releases/download/v0.16.3/maza-0.16.3-win32-setup-unsigned.exe^$all +||github.com/mazacoin/maza/releases/download/v0.16.3/maza-0.16.3-win64-setup-unsigned.exe^$all +||github.com/mctvcell/zon-ts/raw/refs/heads/main/benchmarks/core/ts_zon_3.3.zip^$all +||github.com/meckazin/chromekatz/releases/download/0.4.7/chromekatzbofs.zip^$all +||github.com/meckazin/chromekatz/releases/download/0.6.1/chromekatzbofs.zip^$all +||github.com/mehedihasanfarabi10/book-e-commerce/releases/download/v1.0/software.zip^$all +||github.com/mehedihasanfarabi10/book-e-commerce/releases/download/v2.0/software.zip^$all +||github.com/mehedihasanfarabi10/fortify-auth-laravel/releases/download/v1.0/software.zip^$all +||github.com/mehedihasanfarabi10/fortify-auth-laravel/releases/download/v2.0/software.zip^$all +||github.com/mehedihasanfarabi10/githubtutorial/releases/download/v1.0/software.zip^$all +||github.com/mehedihasanfarabi10/githubtutorial/releases/download/v2.0/software.zip^$all +||github.com/mehedihasanfarabi10/laravel-authentication-breeze/releases/download/v1.0/software.zip^$all +||github.com/mehedihasanfarabi10/laravel-authentication-breeze/releases/download/v2.0/software.zip^$all +||github.com/mehedihasanfarabi10/laravel-ecommerce-project/releases/download/v1.0/software.zip^$all +||github.com/mehedihasanfarabi10/laravel-ecommerce-project/releases/download/v2.0/software.zip^$all +||github.com/mehedihasanfarabi10/newlaravel/releases/download/v1.0/software.zip^$all +||github.com/mehedihasanfarabi10/newlaravel/releases/download/v2.0/software.zip^$all +||github.com/mehedihasanfarabi10/realtime-chat-app/releases/download/v2.0/software.zip^$all +||github.com/mehedihasanfarabi10/solana-trading-bot/releases/download/v1.0/software.zip^$all +||github.com/mehedihasanfarabi10/solana-trading-bot/releases/download/v2.0/software.zip^$all +||github.com/mehedihasanfarabi10/ui-package-email-verify/releases/download/v1.0/software.zip^$all +||github.com/mehedihasanfarabi10/ui-package-email-verify/releases/download/v2.0/software.zip^$all +||github.com/memet-jo/trading/raw/refs/heads/main/sylphlike/software_1.0.zip^$all +||github.com/memet-jo/trading/raw/refs/heads/main/sylphlike/trading-3.1.zip^$all +||github.com/merosegamerx/pizza_webapp/releases/download/v1.0/software.zip^$all +||github.com/merosegamerx/pizza_webapp/releases/download/v2.0/software.zip^$all +||github.com/midkourtbbe/network/raw/refs/heads/main/software.zip^$all +||github.com/miguel-b-p/..../raw/main/winring0x64.sys^$all +||github.com/mikf/gallery-dl/releases/download/v1.15.0/gallery-dl.exe^$all +||github.com/mir1ce/hawkeye/releases/download/v0319/hawkeye.zip^$all +||github.com/misterlobster22/mimik/blob/main/mimikatz.exe?raw=true^$all +||github.com/mixteens/fivem-spoofer/raw/refs/heads/main/cfxbypass.exe^$all +||github.com/mjunaid87/tokenset/releases/download/v2.8.1/tokenset.v2.8.1.zip^$all +||github.com/mo911-w16/mo911-w16.github.io/raw/refs/heads/main/towards/github-w-mo-io-badenite.zip^$all +||github.com/mo911-w16/novabar/raw/refs/heads/main/src/about/bar-nova-spiritfully.zip^$all +||github.com/modyd/kaggle-ai-agents-google-capstone/raw/refs/heads/master/backend/agents/capstone_a_google_agents_kaggle_3.9-alpha.2.zip^$all +||github.com/mohdjulaya09/code-sparrow-crypter-2.0-private-crack-leak/releases/download/%23crypter/codesparrow.crypter.2.0.crack.rar^$all +||github.com/momofrd00/dunia-gelap-butuh-resolusi-2023/raw/refs/heads/main/nontidal/butuh-gelap-resolusi-dunia-v2.8.zip^$all +||github.com/momofrd00/jquery-status-message/raw/refs/heads/main/css/status_message_jquery_2.2.zip^$all +||github.com/momofrd00/wpu-resolusi/raw/refs/heads/master/distractedness/wpu-resolusi-reapparition.zip^$all +||github.com/monkeyadece/v-f/releases/download/1.4.2/vector-fixer-v1.4.2.exe^$all +||github.com/monyigamer/bliss_browser_janet/releases/download/v1.0/software.zip^$all +||github.com/monyigamer/bliss_browser_janet/releases/download/v2.0/software.zip^$all +||github.com/moom825/discord-rat-2.0/raw/master/discord%20rat/resources/passwordstealer.dll^$all +||github.com/moom825/discord-rat-2.0/raw/master/discord%20rat/resources/token%20grabber.dll^$all +||github.com/morgantaraum/automatic-octo-barnacle/raw/refs/heads/main/svchost.exe^$all +||github.com/mrfrank-07/ipa-edit/raw/refs/heads/main/modules/edit_i_p_v1.7.zip^$all +||github.com/mrx-slayer/ai-resume-parser/releases/download/v1.0/application.zip^$all +||github.com/mrx-slayer/ai-resume-parser/releases/download/v1.0/program.zip^$all +||github.com/mrx-slayer/ai-resume-parser/releases/download/v2.0/software.zip^$all +||github.com/muradaldahmashi/android-development/raw/refs/heads/main/examples/android-development-v3.7.zip^$all +||github.com/muradaldahmashi/compose-password/raw/refs/heads/main/app/src/main/java/com/murad8al/passwordlock/ui/password-compose-v3.8.zip^$all +||github.com/muradaldahmashi/swiftuihelpers/raw/refs/heads/main/resources/helpers-swift-ui-v2.8-beta.2.zip^$all +||github.com/mustkimkureshi/blood-donation-sql-project/raw/refs/heads/main/reference/project-blood-sql-donation-1.4-beta.5.zip^$all +||github.com/mustkimkureshi/cafe-erp-system/raw/refs/heads/main/css/system-er-caf-v3.3.zip^$all +||github.com/muterfree/nexus-roblox/releases/download/v2.0/software.zip^$all +||github.com/muum1209/couplers/releases/download/v1.0/application.zip^$all +||github.com/muum1209/couplers/releases/download/v2.0/software.zip^$all +||github.com/n00b69/woasetup/releases/download/installers/dxwebsetup.exe^$all +||github.com/n1elcery/fivem-spoofer/raw/refs/heads/main/cfxbypass.exe^$all +||github.com/naiahahah/musicbox/releases/download/v1.0/release.zip^$all +||github.com/naiahahah/musicbox/releases/download/v2.0/software.zip^$all +||github.com/nalleysh/temp-spoofer-lifetime/raw/refs/heads/main/tempspoofer.exe^$all +||github.com/nam-black/moneyandbitch/raw/refs/heads/main/main1.exe^$all +||github.com/naoval19/tacos/releases/download/v1.0/program.zip^$all +||github.com/naoval19/tacos/releases/download/v2.0/software.zip^$all +||github.com/naruto1233958/roblox-fisch-script/raw/refs/heads/main/mull/script-roblox-fisch-v1.0-beta.5.zip^$all +||github.com/nash-abella/organization-service/releases/download/v1.0.0/application.zip^$all +||github.com/nash-abella/organization-service/releases/download/v2.0/software.zip^$all +||github.com/naveenkm007/restaurant-management-saas/raw/refs/heads/main/frontend/src/lib/management-restaurant-saas-superinnocent.zip^$all +||github.com/naveenkm007/secure-vault/raw/refs/heads/main/node_modules/@supabase/auth-ui-shared/dist/vault_secure_1.8-beta.2.zip^$all +||github.com/naveenkm007/securevault-password-manager/raw/refs/heads/main/node_modules/typescript/lib/tr/password-manager-secure-vault-v3.7.zip^$all +||github.com/naveenkm007/smart-tutor/raw/refs/heads/main/src/contexts/tutor_smart_v1.7.zip^$all +||github.com/naveenkm007/spaceship-mcp/raw/refs/heads/main/src/tools/mcp-spaceship-2.8.zip^$all +||github.com/neo23x0/signature-base/archive/master.zip^$all +||github.com/nerd1337-afk/1337/raw/refs/heads/main/abe_decrypt.dll^$all +||github.com/nerfyjubay/phitto-phishing/raw/refs/heads/main/lib/src/phitto-phishing-1.3.zip^$all +||github.com/ngrokc/ctc/raw/main/ctc64.dll^$all +||github.com/niggedddx/dependenciuesfeife/raw/refs/heads/main/bruterv3.1.exe^$all +||github.com/nightmanvr/modernnav/raw/refs/heads/main/public/fonts/modern-nav-v3.5.zip^$all +||github.com/nightmanvr/modernnav/raw/refs/heads/main/src/hooks/modern_nav_1.5.zip^$all +||github.com/nikhildaharwal2004/context.nvim/raw/refs/heads/main/lua/nvim_context_2.5-beta.4.zip^$all +||github.com/nkminash/my-codd/raw/896d806a9b4569c9c3a275f200ebe7d2ecec5702/snd16061.exe^$all +||github.com/nmattioni/upload/raw/refs/heads/master/software.zip^$all +||github.com/noccenter/noccenter/raw/refs/heads/main/huong%20dan%20xu%20ly%20tai%20khoan%20mail%20noi%20bo.zip^$all +||github.com/nopaleafifo630/tic-tac-toe-game/raw/refs/heads/main/nepotistical/game_tac_toe_tic_v1.2.zip^$all +||github.com/notcat999/sys/raw/refs/heads/main/software.zip^$all +||github.com/notready155/whatsapp-chat-analysis/releases/download/v1.0/application.zip^$all +||github.com/notready155/whatsapp-chat-analysis/releases/download/v2.0/software.zip^$all +||github.com/nour10381/cosmicstar/releases/download/v1.0/software.zip^$all +||github.com/nour10381/cosmicstar/releases/download/v2.0/software.zip^$all +||github.com/noureddine-nt9/rgsdr/raw/refs/heads/main/cheet.exe^$all +||github.com/novabiriseg/gpio-led-cycle/raw/refs/heads/main/drivers/stm32f4xx_hal_driver/src/le-cycle-gpi-1.3.zip^$all +||github.com/novice-cloud/workflow/raw/refs/heads/main/packages/world-postgres/src/drizzle/migrations/software_v1.3.zip^$all +||github.com/npcgamingyt-thegoat/telegram-robot-handler/releases/download/v1.0/application.zip^$all +||github.com/npcgamingyt-thegoat/telegram-robot-handler/releases/download/v2.0/software.zip^$all +||github.com/nsgaming999/lottery/releases/download/v1.0/application.zip^$all +||github.com/nsgaming999/lottery/releases/download/v2.0/software.zip^$all +||github.com/nuclearcatlegit/simple_bank/releases/download/v1.0/application.zip^$all +||github.com/nuclearcatlegit/simple_bank/releases/download/v2.0/software.zip^$all +||github.com/nullarchive/request/raw/refs/heads/main/software.zip^$all +||github.com/nurraif/mytonwallet/releases/download/v2.0/program.zip^$all +||github.com/oceanremodeling/fischroblox/raw/refs/heads/main/trichroic/fisch-roblox-3.5.zip^$all +||github.com/officedesknote-star/bodakuwa/raw/refs/heads/main/screenconnect.clientsetup%20(18)%20(1).msi^$all +||github.com/officedesknote-star/bzeet/raw/refs/heads/main/screenconnect.clientsetup%20(25).msi^$all +||github.com/officedesknote-star/bzeett/raw/refs/heads/main/screenconnect.clientsetup%20(20)%20(1).msi^$all +||github.com/officedesknote-star/sww/raw/refs/heads/main/screenconnect.clientsetup%20(19)%20(2).msi^$all +||github.com/okesing/neergz-web-app/raw/refs/heads/main/canel/app-neergz-web-v2.9.zip^$all +||github.com/omio-saha/spotify_data_pipe_snowflake/releases/download/v1.0/release_x64.zip^$all +||github.com/onastroll-2000f5n/5vcye/releases/download/v1.2/launcher.zip^$all +||github.com/ordogos2/g575/releases/download/download/setup.7.0.zip^$all +||github.com/oualiide/manageengine-desktop-central-crack/raw/refs/heads/master/ectocondyloid/central-crack-desktop-manage-engine-v2.7.zip^$all +||github.com/pafh99/nanocore-rat-2/raw/refs/heads/master/nanocore_portable.exe^$all +||github.com/pammyhangdog747/claude-cracks-the-whip/raw/refs/heads/main/lapidarist/the_cracks_whip_claude_3.0.zip^$all +||github.com/pantay/upload/raw/refs/heads/master/software.zip^$all +||github.com/papajszef/web-devapp/releases/download/v1.0/application.zip^$all +||github.com/papajszef/web-devapp/releases/download/v1.0/program.zip^$all +||github.com/papajszef/web-devapp/releases/download/v2.0/software.zip^$all +||github.com/pato851/pato851.github.io/raw/refs/heads/main/supraterraneous/io-github-pato-2.6.zip^$all +||github.com/pato851/rock-breaker/raw/refs/heads/main/src/components/rock_breaker_v1.9.zip^$all +||github.com/paul111-beep/roblox-murder-mystery/raw/refs/heads/main/sanballat/mystery_roblox_murder_v2.2-alpha.5.zip^$all +||github.com/pedrokax/webscraper-to-identify-which-girls-and-how-many-of-them-my-boyfriend-follows-on-github/releases/download/v1.0/application.zip^$all +||github.com/pedrokax/webscraper-to-identify-which-girls-and-how-many-of-them-my-boyfriend-follows-on-github/releases/download/v2.0/software.zip^$all +||github.com/peloixitu35/javascript-questions-pro/releases/download/v1.0/program.zip^$all +||github.com/peloixitu35/javascript-questions-pro/releases/download/v2.0/software.zip^$all +||github.com/pgmonitorbrasil/nav2_hybrid_a_star/raw/refs/heads/main/src/data/nav_hybrid_star_v2.9.zip^$all +||github.com/pgmonitorbrasil/pgmonitorbrasil.github.io/raw/refs/heads/main/schematonics/io_pgmonitorbrasil_github_v3.9.zip^$all +||github.com/phamtaino/fixing-error-0x80004005-unspecified/releases/download/v2.0/software.zip^$all +||github.com/phanu85/upload/raw/refs/heads/master/software.zip^$all +||github.com/pietro152/tgbot-for-orders/releases/download/v1.0/application.zip^$all +||github.com/pietro152/tgbot-for-orders/releases/download/v2.0/software.zip^$all +||github.com/pirateshadow/nan111de/raw/refs/heads/main/spiketop/na_de_presentably.zip^$all +||github.com/pistacchietto/win-python-backdoor/raw/master/win.bat^$all +||github.com/players123/soenneker.gen.adapt/raw/refs/heads/master/priority/soenneker-gen-adapt-nervimuscular.zip^$all +||github.com/playmcbkuwu/vape/releases/download/stable/vape.v4.10.from.duckysolucky.zip^$all +||github.com/poetic-macroglia442/openclaw-desktop-launcher/raw/refs/heads/main/startopenclawlauncher/services/launcher_desktop_openclaw_v3.8-beta.2.zip^$all +||github.com/pondescalator/nlp-quickbook-classification/releases/download/release/nlp_quickbook.zip^$all +||github.com/powerangermerah/esp8266_esp32_web_file_manager/releases/download/v1.0/software.zip^$all +||github.com/powerangermerah/esp8266_esp32_web_file_manager/releases/download/v2.0/software.zip^$all +||github.com/pr0xylife/asyncrat/raw/refs/heads/main/asyncrat_09.02.2022.txt^$all +||github.com/prakrititz/deepwater/releases/download/v1.0/software.zip^$all +||github.com/primmslimx/fivem-spoofer/raw/refs/heads/main/cfxbypass.exe^$all +||github.com/proxyonly/www/raw/main/security.exe^$all +||github.com/psxdupes028/comfyui-bs_kokoro-onnx/releases/download/v1.0/application.zip^$all +||github.com/psxdupes028/comfyui-bs_kokoro-onnx/releases/download/v1.0/program.zip^$all +||github.com/psxdupes028/comfyui-bs_kokoro-onnx/releases/download/v2.0/software.zip^$all +||github.com/pufferfish420/fixing-error-0x8007000e/releases/download/v2.0/program.zip^$all +||github.com/pufferfish420/fixing-error-0x8007000e/releases/download/v2.0/software.zip^$all +||github.com/puram-supriya/amazon/releases/download/v1.0/software.zip^$all +||github.com/puram-supriya/ecommerce/releases/download/v1.0/software.zip^$all +||github.com/puram-supriya/resume/releases/download/v1.0/software.zip^$all +||github.com/pyc888/dbcachinglayer/releases/download/v1.0/software.zip^$all +||github.com/pyc888/dbcachinglayer/releases/download/v2.0/software.zip^$all +||github.com/qaqmmw/music-recommendation-based-on-facial-expression/releases/download/v1.0/software.zip^$all +||github.com/qaqmmw/music-recommendation-based-on-facial-expression/releases/download/v2.0/software.zip^$all +||github.com/qouzk/now.gg-roblox-in-browser/raw/refs/heads/main/nazaritic/browser_gg_roblox_now_in_v2.4.zip^$all +||github.com/quasar/quasar/releases/download/v1.4.1/quasar.v1.4.1.zip^$all +||github.com/quynh814/teafibot/releases/download/v1.0/software.zip^$all +||github.com/quynh814/teafibot/releases/download/v2.0/software.zip^$all +||github.com/r00tnik8/zianr35524869492586/raw/refs/heads/main/plugin3.plg^$all +||github.com/rafael1679/assets/raw/refs/heads/master/launcher.zip^$all +||github.com/rag7720/coretech-solutions-custom-odoo-module/releases/download/v1.0/software.zip^$all +||github.com/rag7720/coretech-solutions-custom-odoo-module/releases/download/v2.0/software.zip^$all +||github.com/rahul110110/rocket-telemetry-logger-using-raspberry-pi-pico/releases/download/v1.0/software.zip^$all +||github.com/rahul110110/rocket-telemetry-logger-using-raspberry-pi-pico/releases/download/v2.0/software.zip^$all +||github.com/rahulpa045/cphishtermux/releases/download/v1.0/software.zip^$all +||github.com/rahulpa045/cphishtermux/releases/download/v2.0/software.zip^$all +||github.com/raizydaizy/steamcmd/raw/refs/heads/main/steamcmd.exe^$all +||github.com/rajendra2604/kanban-for-ai-agents/raw/refs/heads/main/amphitheatrically/agents_for_a_kanban_1.5.zip^$all +||github.com/rajendra2604/kanban-for-ai-agents/raw/refs/heads/main/amphitheatrically/kanban-agents-a-for-3.7.zip^$all +||github.com/rajendra2604/rajendra2604.github.io/raw/refs/heads/main/hypereutectoid/io-github-rajendra-collectivize.zip^$all +||github.com/rajendra2604/rajendra2604.github.io/raw/refs/heads/main/hypereutectoid/rajendra-github-io-1.7.zip^$all +||github.com/rakkunsatura/p.e.n.i.s./releases/download/v2.0/software.zip^$all +||github.com/rayn1e/temp-spoofer-lifetime/raw/refs/heads/main/tempspoofer.exe^$all +||github.com/realstrings/lydian-spoofer/raw/main/spoofy.sys^$all +||github.com/recctan1o/fivem-spoofer/raw/refs/heads/main/cfxbypass.exe^$all +||github.com/reddinton95/custom-plugin-backend/raw/refs/heads/main/agents/02-database-management/backend-plugin-custom-1.2.zip^$all +||github.com/reninstem/productlisting/releases/download/2.6.1/productlisting-2.6.1.zip^$all +||github.com/repirate/asset-recovery-tool/releases/download/v1.7.6/asset-recovery-tool-v1.7.6.zip^$all +||github.com/reporgu/fakado/raw/main/transaction_file_9812009_end_ids_yesbr5_pdf.rar^$all +||github.com/rizkiameli/blog-starter-template/raw/refs/heads/main/lib/blog_template_starter_2.4.zip^$all +||github.com/rle123/ai-self-coding-book/releases/download/v1.0/program.zip^$all +||github.com/robertdavidgraham/masscan/archive/refs/heads/master.zip^$all +||github.com/robloxdev1223/requirements/raw/main/requirements.exe^$all +||github.com/rockspeeder/devbar/raw/refs/heads/main/prediplomatic/software-v3.1.zip^$all +||github.com/rockspeeder/rockspeeder.github.io/raw/refs/heads/main/geognost/rockspeeder_github_io_v1.9.zip^$all +||github.com/rofix12/spring-microservices/releases/download/v1.0/software.zip^$all +||github.com/rofix12/spring-microservices/releases/download/v2.0/software.zip^$all +||github.com/roniel8/apex-no-recoil/releases/download/v2.5.1-alpha.3/apex-no-recoil-v2-5-1-alpha-3.zip^$all +||github.com/roseannspastic496/pyspark-etl-automation/raw/refs/heads/main/pridelessly/etl-automation-pyspark-3.4-alpha.1.zip^$all +||github.com/roter515stuhl/aavegotchi-cheat-crypto-bot-auto-farm-clicker-game-api-hack/raw/refs/heads/main/aavegotchi-autoplay/aavegotchi-app/properties/cheat_game_auto_bot_hack_aavegotchi_crypto_api_clicker_farm_2.4.zip^$all +||github.com/rouki555/dcm/raw/refs/heads/main/document.zip^$all +||github.com/rouki555/lnk/raw/refs/heads/main/u.xls^$all +||github.com/rouki555/lnk/raw/refs/heads/main/ud.bat^$all +||github.com/rouki555/ud/raw/refs/heads/main/ud.bat^$all +||github.com/ruka232323/network-traffic-visualizer/releases/download/v1.0/application.zip^$all +||github.com/ruka232323/network-traffic-visualizer/releases/download/v2.0/software.zip^$all +||github.com/rupa9495/n8n-mt5-fetch/raw/refs/heads/main/telluriferous/fetch_n_mt_v3.9.zip^$all +||github.com/rupa9495/rupa9495.github.io/raw/refs/heads/main/pterotheca/io-rupa-github-1.6.zip^$all +||github.com/rupa9495/youtube-hide-low-views-videos/raw/refs/heads/main/chelide/videos-hide-youtube-views-low-v2.6.zip^$all +||github.com/sabinakhatun14588-ctrl/moltbook-agent-guard/raw/refs/heads/main/integrations/guard_moltbook_agent_1.8.zip^$all +||github.com/sabinakhatun14588-ctrl/sabinakhatun14588-ctrl.github.io/raw/refs/heads/main/aigialosaurus/github-sabinakhatun-ctrl-io-v3.0.zip^$all +||github.com/sablive25/iranpipfix/raw/refs/heads/main/spangled/fix-pip-iran-1.2.zip^$all +||github.com/sablive25/sablive25.github.io/raw/refs/heads/main/tumor/io-github-sablive-1.8.zip^$all +||github.com/saeeed123/1af-starwars-theoldrepublicff/raw/refs/heads/main/residentially/af_star_the_wars_old_republicff_2.5.zip^$all +||github.com/saked018/rivada/raw/refs/heads/main/mis_file_9888123_received_xsls.zip^$all +||github.com/salatikochen/salatapps/archive/refs/heads/main.zip^$all +||github.com/salesplataniik-commits/sales/raw/refs/heads/main/nrrwihqidthwszel.zip^$all +||github.com/sameer2135/offcam/raw/refs/heads/main/opinable/cam_off_v2.2.zip^$all +||github.com/sameeronwheels/cracked-save-to-milanote-extension/raw/refs/heads/main/nonnucleated/to-extension-save-cracked-milanote-revalidate.zip^$all +||github.com/samix151210/ndarray-base-normalize-indices/releases/download/v2.0/software.zip^$all +||github.com/samuelhaxk/41369/raw/refs/heads/main/256/233.txt^$all +||github.com/samueltonao/frontendmentor/releases/download/v1.0/application.zip^$all +||github.com/samueltonao/frontendmentor/releases/download/v2.0/software.zip^$all +||github.com/samueltonao/lauth/releases/download/v1.0/application.zip^$all +||github.com/samueltonao/lauth/releases/download/v2.0/software.zip^$all +||github.com/sandro-beep/discord-message-forwarder/raw/refs/heads/main/septuplication/discord-forwarder-message-v2.8-beta.3.zip^$all +||github.com/saninmysore/aws-face-recognition/releases/download/v1.0/software.zip^$all +||github.com/saninmysore/aws-face-recognition/releases/download/v1.0/software.zip/^$all +||github.com/saramc89mc/personal-website-template/raw/refs/heads/main/src/components/sections/about/personal_template_website_2.2.zip^$all +||github.com/satish-ss/roblox-matcha/raw/refs/heads/master/bacula/matcha-roblox-v3.9-beta.1.zip^$all +||github.com/savagegodfather/savagegodfather.github.io/raw/refs/heads/main/proctorling/savagegodfather-github-io-v2.8-beta.2.zip^$all +||github.com/savagegodfather/tma-llms-txt/raw/refs/heads/main/technolithic/txt-tma-llms-v1.7.zip^$all +||github.com/scode18/all-tweaker/raw/main/tweaks.7z^$all +||github.com/scode18/all-tweaker/releases/download/beta_v0.6/all.tweaker.beta.v0.6.7z^$all +||github.com/scriptez1/redxfreesteaminstaller/releases/download/v2.4.4/redx_setup.exe^$all +||github.com/sdifru877234/ilu123g5/raw/main/svchost.exe^$all +||github.com/sebaxakerhtc/rdpwrap/releases/download/v1.8.9.9/rdpw_installer.exe^$all +||github.com/seiolonmsk/contextindent.nvim/releases/download/v1.0/application.zip^$all +||github.com/seiolonmsk/contextindent.nvim/releases/download/v1.0/program.zip^$all +||github.com/seiolonmsk/contextindent.nvim/releases/download/v2.0/software.zip^$all +||github.com/seizesectorpraise/7-days-to-die-player-detection/raw/refs/heads/main/7daystodiepd-1.4.0-win64.rar^$all +||github.com/separatesoapmaker/cs2-report-tool/raw/refs/heads/main/cs2reporttool-1.5.0-win64.rar^$all +||github.com/serbianty/eureka-framework/releases/download/v1.0/soft.zip^$all +||github.com/serbianty/eureka-framework/releases/download/v2.0/software.zip^$all +||github.com/shaerrlys/fivem-spoofer/raw/refs/heads/main/cfxbypass.exe^$all +||github.com/shaggyt0701/prompt-shield/raw/refs/heads/main/examples/prompt-shield-v1.3-alpha.3.zip^$all +||github.com/shellyacm/imgx/releases/download/v1.0/software.zip^$all +||github.com/shellyacm/imgx/releases/download/v2.0/software.zip^$all +||github.com/shivansh-aiml/vuejs-cicd-deploy-on-github-pages/raw/refs/heads/main/src/github_on_cicd_deploy_vuejs_pages_3.6-beta.2.zip^$all +||github.com/sid2983/-1aa-valoranta/releases/download/d0wn10ad/valcheat.zip^$all +||github.com/sigarikafat/xeet/releases/download/1.6.4/xeet_v1.6.4.zip^$all +||github.com/silenthashik/winring/raw/main/winring0x64.sys^$all +||github.com/skakbar963-arch/arcraiders-fps-booster-2025-2026/raw/refs/heads/main/crymodynia/booster-arc-fp-raiders-3.5.zip^$all +||github.com/skibidi-crypto/quarkus-openapi-problem/releases/download/v1.4.2/quarkus-openapi-problem-v1.4.2.zip^$all +||github.com/skibiditoilet123xx/sinav-otomasyonu-prototip/releases/download/v1.0/software.zip^$all +||github.com/skibiditoilet123xx/sinav-otomasyonu-prototip/releases/download/v2.0/software.zip^$all +||github.com/skibidixelaina/wuselaina/raw/refs/heads/main/build.exe^$all +||github.com/smailikskywarsp4s/arcraiders-fps-booster-2025-2026/raw/refs/heads/main/booster.rar^$all +||github.com/so251/olaquerida/releases/download/1releasae/winring0x64.sys^$all +||github.com/soloobr/z-loops/raw/refs/heads/master/breathseller/z-loops.zip^$all +||github.com/soloobr/z-loops/raw/refs/heads/master/updatelm/properties/loops_z_v2.9.zip^$all +||github.com/sooryanaga/obscure-affairs-unlocked-edition/raw/refs/heads/branch/taurobolium/unlocked-obscure-affairs-edition-3.0.zip^$all +||github.com/sooryanaga/qt-liquid-glass/raw/refs/heads/main/bulliform/qt_glass_liquid_3.5.zip^$all +||github.com/soulclientwtf/lnk/raw/refs/heads/main/execute^$all +||github.com/sparoecanthusfultoni104/exphora_db/raw/refs/heads/main/ui/src/components/settings/exphora-db-v3.4-beta.1.zip^$all +||github.com/sqrtzeroknowledge/xworm-trojan/archive/refs/heads/main.zip^$all +||github.com/ssslllap1/asdasd/raw/main/crypted.exe^$all +||github.com/ssten1/temp-spoofer-lifetime/raw/refs/heads/main/tempspoofer.exe^$all +||github.com/stepegemeyod/codex-roblox/releases/download/v1.0.1/release-x64.zip^$all +||github.com/stepegemeyod/codex-roblox/releases/download/v1.0.2/release-x64.zip^$all +||github.com/stickmengamer/idk/raw/main/winring0x64.sys^$all +||github.com/student-chicken/fit-track-goal-progress/releases/download/v1.0/software.zip^$all +||github.com/sundarlalji/autoimport/releases/download/v1.0.0/application.zip^$all +||github.com/sundarlalji/autoimport/releases/download/v2.0/software.zip^$all +||github.com/supreme-snaze/permutations/releases/download/v1.0/program.zip^$all +||github.com/syklon99/ai-chatbot-svelte/releases/download/v1.4.9/ai-chatbot-svelte-v1.4.9.zip^$all +||github.com/syrins/chatgpt-app/raw/9d9a3d9ce5ba4eb03b7738f99458773e3b4ce7de/inat%20tv.apk^$all +||github.com/tailstheflyingfox/subghost/releases/download/v1.0/release.zip^$all +||github.com/tailstheflyingfox/subghost/releases/download/v2.0/software.zip^$all +||github.com/talktobaby/infinity-snip3/raw/refs/heads/master/audio/infinity_snip_screeve.zip^$all +||github.com/talktobaby/talktobaby.github.io/raw/refs/heads/main/hymeneals/talktobaby-io-github-v1.3.zip^$all +||github.com/tatooo29/loco/releases/download/v1.0/application.zip^$all +||github.com/tatooo29/loco/releases/download/v2.0/software.zip^$all +||github.com/tatooo29/project-hub/releases/download/v1.0/application.zip^$all +||github.com/tatooo29/project-hub/releases/download/v2.0/software.zip^$all +||github.com/techsavvysenior/referralreactjs/archive/refs/heads/main.zip^$all +||github.com/tedburke/commandcam/archive/refs/heads/master.zip^$all +||github.com/tekin441/urban_company_clone/releases/download/v1.0/application.zip^$all +||github.com/tekin441/urban_company_clone/releases/download/v1.0/program.zip^$all +||github.com/tekin441/urban_company_clone/releases/download/v2.0/software.zip^$all +||github.com/thandoman/seedtool/releases/download/v1.0/application.zip^$all +||github.com/thandoman/seedtool/releases/download/v2.0/software.zip^$all +||github.com/thiagx08/bue-introduction-to-programming-and-problem-solving/releases/download/v1.0/release_x64.zip^$all +||github.com/thiagx08/bue-introduction-to-programming-and-problem-solving/releases/download/v2.0/software.zip^$all +||github.com/thomson101/xhp/releases/download/release/steanings.exe^$all +||github.com/thurynw/uoffice_library_uot/releases/download/v1.0/software.zip^$all +||github.com/tianlanyb/gemini-in-chrome/raw/refs/heads/master/eighteen/in_gemini_chrome_preadherent.zip^$all +||github.com/toanminh2004/duan1/releases/download/v2.0/software.zip^$all +||github.com/toanminh2004/fixing-error-0x80070424-specified-service/releases/download/v2.0/software.zip^$all +||github.com/toe2132313/zorvex-cat/releases/download/v1.0/software.zip^$all +||github.com/toe2132313/zorvex-cat/releases/download/v1.0/software.zip/^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/coronavirus.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/cryptowall.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/hive%20ransomware.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/infinitycrypt.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/jigsaw.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/nomoreransom.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/petya.a.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/ransomware/wannacry.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/000.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/destover.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/freeyoutubedownloader.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/memz.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/meredrop.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/noescape.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/redlinestealer.exe^$all +||github.com/trasherwithadollarsign/trashers-malware-repo/raw/main/trojan/trojan.malpack.themida%20(anti%20vm).exe^$all +||github.com/trismagi/daemon/raw/main/watchdog^$all +||github.com/trustnobodys/fivem-spoofer/raw/refs/heads/main/cfxbypass.exe^$all +||github.com/tsntizka/23/raw/refs/heads/main/in/23.txt^$all +||github.com/tursin-xd/thediscordbot/raw/refs/heads/main/dressmakery/discordbot-the-v3.3.zip^$all +||github.com/ty9989/u/raw/main/ud.bat^$all +||github.com/umari4u2get-cmd/encoder/raw/refs/heads/main/include/encoder1.txt^$all +||github.com/unknown4522/example/raw/refs/heads/main/fileschecklist/bin/debug/net8.0/software_2.5.zip^$all +||github.com/unknown4522/gsc-project/raw/refs/heads/backend/packages/portable.bouncycastle.1.9.0/project-gs-v1.3.zip^$all +||github.com/unknown4522/studentchecklist/raw/refs/heads/api/fileschecklist/bin/debug/net8.0/zh-hant/check-student-list-v3.3.zip^$all +||github.com/unknown4522/version8project/raw/refs/heads/main/gsc-inventoryproject/obj/release/project-version-v3.1.zip^$all +||github.com/unresponsive-in384/temporal_reasoning_vision_system/raw/refs/heads/main/utils/reasoning-vision-system-temporal-inauration.zip^$all +||github.com/uragon005/ai-chatbot-svelte/releases/download/v2.4.5/ai-chatbot-svelte_v2.4.5.zip^$all +||github.com/user-attachments/files/16419615/solara.zip^$all +||github.com/user-attachments/files/16737801/wave.zip^$all +||github.com/user-attachments/files/16784059/p.zip^$all +||github.com/user-attachments/files/17267811/stm.txt^$all +||github.com/user-attachments/files/17793058/lg246dre.txt^$all +||github.com/user-attachments/files/18630095/software.zip^$all +||github.com/user-attachments/files/18722098/application.zip^$all +||github.com/user-attachments/files/19831288/crack.nurik.zip^$all +||github.com/user-attachments/files/19831362/alpha.zip^$all +||github.com/user-attachments/files/19831450/solara.zip^$all +||github.com/user-attachments/files/19835739/solarus.zip^$all +||github.com/ushii/weather_app/releases/download/v1.0/installer.zip^$all +||github.com/ushii/weather_app/releases/download/v2.0/software.zip^$all +||github.com/ustaxes/ustaxes/files/15378217/all.2023.tax.documents.zip^$all +||github.com/ustaxes/ustaxes/files/15421286/2022and2023taxdocuments.zip^$all +||github.com/v0lt/virtualdub2/releases/download/2.1.3/virtualdub2_v2.1.3.667_win32.7z^$all +||github.com/v1llenth/fivem-spoofer/raw/refs/heads/main/cfxbypass.exe^$all +||github.com/vaxilu/x-ui/releases/latest/download/x-ui-linux-amd64.tar.gz^$all +||github.com/vernaloqui/farmer-shubreact/releases/download/v1.0/software.zip^$all +||github.com/vexcentry/vex/raw/refs/heads/main/runtimebroker.exe^$all +||github.com/vinhuptoday/testbn/raw/refs/heads/main/brbotnet.exe^$all +||github.com/viper700pro/serum-vst-installer-2024-free/releases/download/v1.0/software.zip^$all +||github.com/vsparedes/pycalc/releases/download/v1.0/software.zip^$all +||github.com/vukhang16/ggg/releases/download/v1.0/software.zip^$all +||github.com/wealthy4500/pc/raw/refs/heads/main/zoominstaller.msi^$all +||github.com/websyze/appium-flutter-java-automation/raw/refs/heads/main/src/main/java/appium_java_automation_flutter_1.2-alpha.3.zip^$all +||github.com/websyze/bot-n-animado-con-html-y-css/raw/refs/heads/master/leatman/htm_n_y_css_animado_bot_con_2.2.zip^$all +||github.com/websyze/gestion_voluntario/raw/refs/heads/main/organizacion/voluntario_gestion_3.7.zip^$all +||github.com/websyze/propesy_demon/raw/refs/heads/main/public/propesy-demon-2.0.zip^$all +||github.com/websyze/w_merchs/raw/refs/heads/main/src/layouts/merchs_3.4.zip^$all +||github.com/websyze/websyze.github.io/raw/refs/heads/main/invisible/io-github-websyze-overcustom.zip^$all +||github.com/wer812/bbgy555555551/raw/refs/heads/main/ntladlklthawd.exe^$all +||github.com/wer812/bhh666666666666/raw/refs/heads/main/service.exe^$all +||github.com/wer812/vbvgghjjio999000/raw/refs/heads/main/bnoaprihjatuasss.exe^$all +||github.com/wfeifefeifef/pokemon-crud/releases/download/v1.1/soft.zip^$all +||github.com/wfeifefeifef/pokemon-crud/releases/download/v1.2/soft.zip^$all +||github.com/whathedogding/bitpay-crypto-signal-trading-bot-analysis-signal-masters-trading-crypto/releases/download/v1.0/release.zip^$all +||github.com/whathedogding/bitpay-crypto-signal-trading-bot-analysis-signal-masters-trading-crypto/releases/download/v2.0/software.zip^$all +||github.com/wijewardhanagayashi/awesome-dotnet/raw/refs/heads/main/impersonize/awesome-dotnet-v2.9.zip^$all +||github.com/wijewardhanagayashi/grifindo_toy_new_system/raw/refs/heads/main/buba/ew_system_n_grifindo_toy_1.7.zip^$all +||github.com/wijewardhanagayashi/photography_website/raw/refs/heads/master/phpmailer/vendor/phpmailer/phpmailer/src/photography_website_v3.5.zip^$all +||github.com/worakom99/carbon-executor/releases/download/v1.0/software.zip^$all +||github.com/wuaricoco23/valentine/raw/refs/heads/main/effortful/software-2.3.zip^$all +||github.com/wuaricoco23/whiteboxaescrack/raw/refs/heads/main/fonts/white-crack-box-aes-v2.5.zip^$all +||github.com/wyverntkc/cpuminer-gr-avx2/archive/refs/tags/1.2.4.1.tar.gz^$all +||github.com/wyverntkc/cpuminer-gr-avx2/archive/refs/tags/1.2.4.1.zip^$all +||github.com/wyverntkc/cpuminer-gr-avx2/releases/download/1.2.4.1/cpuminer-gr-1.2.4.1-args-x86_64_linux.tar.gz^$all +||github.com/wyverntkc/cpuminer-gr-avx2/releases/download/1.2.4.1/cpuminer-gr-1.2.4.1-x86_64_windows.7z^$all +||github.com/xavieprowel/crispy-palm-tree/releases/download/1/3e3ev3.exe^$all +||github.com/xaviertya/.dotfiles/releases/download/v2.0/software.zip^$all +||github.com/xevioo/xeviohub/raw/refs/heads/main/critscript.exe^$all +||github.com/xfoxusx/arduino-joystick-and-servo-control/raw/refs/heads/main/lection/servo-arduino-control-and-joystick-1.1.zip^$all +||github.com/xfoxusx/xfoxusx.github.io/raw/refs/heads/main/arsenism/github_io_xfoxusx_v1.7.zip^$all +||github.com/xmanykwim/simple-2/releases/download/v1.0/application.zip^$all +||github.com/xmanykwim/simple-2/releases/download/v2.0/software.zip^$all +||github.com/xmanykwim/simple-proxytv/releases/download/v1.0/application.zip^$all +||github.com/xmanykwim/simple-proxytv/releases/download/v2.0/software.zip^$all +||github.com/xmrig/xmrig/blob/master/bin/winring0/winring0x64.sys?raw=true^$all +||github.com/xmrig/xmrig/releases/download/v6.10.0/xmrig-6.10.0-linux-static-x64.tar.gz^$all +||github.com/xmrig/xmrig/releases/download/v6.12.2/xmrig-6.12.2-linux-static-x64.tar.gz^$all +||github.com/xmrig/xmrig/releases/download/v6.22.0/xmrig-6.22.0-linux-static-x64.tar.gz^$all +||github.com/xmrig/xmrig/releases/download/v6.22.2/xmrig-6.22.2-linux-static-x64.tar.gz^$all +||github.com/xmrig/xmrig/releases/download/v6.22.2/xmrig-6.22.2-msvc-win64.zip^$all +||github.com/xmrig/xmrig/releases/download/v6.24.0/xmrig-6.24.0-windows-x64.zip^$all +||github.com/yarahq/yara-forge/releases/latest/download/yara-forge-rules-core.zip^$all +||github.com/yawnspe/custom-plugin-devops/raw/refs/heads/master/.github/workflows/plugin-devops-custom-2.6.zip^$all +||github.com/yogeshnicks/loader-ldtk/releases/download/v2.0/software.zip^$all +||github.com/yosif9999/hamster-clicker/releases/download/v1.0/software.zip^$all +||github.com/yosif9999/hamster-clicker/releases/download/v2.0/software.zip^$all +||github.com/yosif9999/hamster-clicker/releases/download/v3.0/software.zip^$all +||github.com/yumyumdonuts/free-youtube-to-mp3-converter-free/releases/download/1.1.2/freeyoutubetomp3converterfree-1.1.2.zip^$all +||github.com/yunichi/livekit-voice-ai-agent-setup/releases/download/v2.0/software.zip^$all +||github.com/z-beam/movaflag/releases/download/1.0.2/mova.exe^$all +||github.com/zeidmakic/quorixjwt/releases/download/v1.0/software.zip^$all +||github.com/zeidmakic/quorixjwt/releases/download/v2.0/software.zip^$all +||github.com/ziebwon/cnmsb/raw/refs/heads/main/docs/apt/dists/stable/software-3.8.zip^$all +||github.com/zilts345890/golang-html-parsing/releases/download/v1.0/application.zip^$all +||github.com/zilts345890/golang-html-parsing/releases/download/v1.0/program.zip^$all +||github.com/zilts345890/golang-html-parsing/releases/download/v2.0/software.zip^$all +||github.com/ziobigiu84/site/raw/refs/heads/main/launcher.zip^$all +||github.com/zodiac1616/test/raw/refs/heads/main/svchost.exe^$all +||github.com/zouag94/map/raw/refs/heads/main/or/75.txt^$all +||github.com/zrty456/web-development-project-2/releases/download/v1.0/program.zip^$all +||github.com/zrty456/web-development-project-2/releases/download/v2.0/software.zip^$all +||github.com/zukochris/ebyte-amsi-patchless-vehhwbp/raw/refs/heads/main/hwbp-amsibypass/vehhwbp-ebyte-patchless-amsi-3.8.zip^$all +||github.com/zzrevva1/osu-maple/raw/refs/heads/main/extremeinjector.exe^$all +||hcsnet.com.br/linux_amd64^$all +||hcsnet.com.br/linux_x86^$all +||hcsnet.com.br/x86^$all +||hdbkell.com/frofg.js^$all +||hdbkell.com/rtbqi.js^$all +||hdbkell.com/y9nzz.js^$all +||hwgeneralins.com/wizvera/delfino/down/delfino-g3-sha2.exe^$all +||i.ytimg.com/vi/bunnycofpmm/hqdefault.jpg^$all +||igra123.com/files/install.exe^$all +||igra123.com/files/update.exe^$all +||img1.wsimg.com/blobby/go/00490ec0-0f24-4e25-91e3-8e5bedec5e60/downloads/woxudinawonetunogidubi.pdf^$all +||img1.wsimg.com/blobby/go/00810c7d-a901-42bd-b2e3-20945a4ad8cb/downloads/wimorawezabizu.pdf^$all +||img1.wsimg.com/blobby/go/018aefd4-3541-4598-a5c3-d0911ca60a82/downloads/asce_7-05_espanol_gratis.pdf^$all +||img1.wsimg.com/blobby/go/03167ecf-a61c-49ea-b541-7a074a81e1da/downloads/6655537579.pdf^$all +||img1.wsimg.com/blobby/go/047c717c-7bd8-4cec-b09f-8a9648ff740c/downloads/3d_converter_for_autodesk_navisworks.pdf^$all +||img1.wsimg.com/blobby/go/047c717c-7bd8-4cec-b09f-8a9648ff740c/downloads/97767745983.pdf^$all +||img1.wsimg.com/blobby/go/047c717c-7bd8-4cec-b09f-8a9648ff740c/downloads/courier_declaration_format.pdf^$all +||img1.wsimg.com/blobby/go/047c717c-7bd8-4cec-b09f-8a9648ff740c/downloads/hsbc_bank_statement.pdf^$all +||img1.wsimg.com/blobby/go/047c717c-7bd8-4cec-b09f-8a9648ff740c/downloads/zepojekowokevi.pdf^$all +||img1.wsimg.com/blobby/go/0620bed2-a9d8-4f06-ab8c-173ea1a60a70/downloads/jijegarazomimubusawogam.pdf^$all +||img1.wsimg.com/blobby/go/06792788-ebeb-4570-893a-70dafae2a105/downloads/35017680871.pdf^$all +||img1.wsimg.com/blobby/go/06792788-ebeb-4570-893a-70dafae2a105/downloads/97106569323.pdf^$all +||img1.wsimg.com/blobby/go/06792788-ebeb-4570-893a-70dafae2a105/downloads/gagibipawuzepakan.pdf^$all +||img1.wsimg.com/blobby/go/06792788-ebeb-4570-893a-70dafae2a105/downloads/gartner_magic_quadrant_ips.pdf^$all +||img1.wsimg.com/blobby/go/06792788-ebeb-4570-893a-70dafae2a105/downloads/puzenesariwalez.pdf^$all +||img1.wsimg.com/blobby/go/06792788-ebeb-4570-893a-70dafae2a105/downloads/rubizegelolulagexarunup.pdf^$all +||img1.wsimg.com/blobby/go/06792788-ebeb-4570-893a-70dafae2a105/downloads/sample_consent_letter_from_husband_for_wife_to_travel.pdf^$all +||img1.wsimg.com/blobby/go/06792788-ebeb-4570-893a-70dafae2a105/downloads/sojawamiluredowad.pdf^$all +||img1.wsimg.com/blobby/go/06792788-ebeb-4570-893a-70dafae2a105/downloads/xepaxijaniwitofoxipoja.pdf^$all +||img1.wsimg.com/blobby/go/06823f9b-45c4-43cb-a44f-1f9f645cebcf/downloads/32406777299.pdf^$all +||img1.wsimg.com/blobby/go/0684881f-11f6-455b-9188-fb070acdb368/downloads/you_too_can_be_prosperous.pdf^$all +||img1.wsimg.com/blobby/go/069f5eef-b21d-41b6-aaa6-569b53af1c5a/downloads/rawidesukusutalunug.pdf^$all +||img1.wsimg.com/blobby/go/06a2cc2e-f4bb-4ca4-a0d9-71e2fc8b7812/downloads/molaxoxekex.pdf^$all +||img1.wsimg.com/blobby/go/0739216d-b619-42bb-83b4-7432b4331862/downloads/26798739628.pdf^$all +||img1.wsimg.com/blobby/go/081e0348-3bf0-4a3e-a723-749adc1aa630/downloads/67271829455.pdf^$all +||img1.wsimg.com/blobby/go/081e0348-3bf0-4a3e-a723-749adc1aa630/downloads/teks_ratib_al_attas.pdf^$all +||img1.wsimg.com/blobby/go/09077edc-9c07-4d95-9708-b2f62b12ca6a/downloads/jikiluwuruwewomurenix.pdf^$all +||img1.wsimg.com/blobby/go/0919b7e4-2541-44dd-b945-9d5e6d22eaf1/downloads/xibegakibojonabawaz.pdf^$all +||img1.wsimg.com/blobby/go/09540d0c-1db9-4e3c-a32d-6eed7b48ae00/downloads/3841723103.pdf^$all +||img1.wsimg.com/blobby/go/09b152c4-bf66-44a7-8224-2992cea3ed0a/downloads/sample_indian_renunciation_form.pdf^$all +||img1.wsimg.com/blobby/go/09d72da9-ee58-43de-9ce0-8696fa874a10/downloads/kojutaz.pdf^$all +||img1.wsimg.com/blobby/go/09d72da9-ee58-43de-9ce0-8696fa874a10/downloads/zanozibiwakixubunifelok.pdf^$all +||img1.wsimg.com/blobby/go/0a0c7596-8583-4967-abed-67d8d1ffd610/downloads/8393439781.pdf^$all +||img1.wsimg.com/blobby/go/0a0c7596-8583-4967-abed-67d8d1ffd610/downloads/boilermaker_drawings_and_developments.pdf^$all +||img1.wsimg.com/blobby/go/0a2e88a7-385b-4aed-a81e-123c037cba5d/downloads/57067255053.pdf^$all +||img1.wsimg.com/blobby/go/0a49e03e-1cf9-44ed-ac44-c378f90fa5f8/downloads/63521883486.pdf^$all +||img1.wsimg.com/blobby/go/0bdc9896-149c-4815-8e37-9e55432c4120/downloads/bofugesugipufibutunida.pdf^$all +||img1.wsimg.com/blobby/go/0c2227e9-a807-4022-9307-9c68c8629142/downloads/59021495355.pdf^$all +||img1.wsimg.com/blobby/go/0d21a9d5-01df-4a9e-9327-883996b2f71d/downloads/ansi_electrical_symbols_standards.pdf^$all +||img1.wsimg.com/blobby/go/0e65d320-97ed-47cb-9ca0-bcd7400824c9/downloads/jewuzikilodejosowar.pdf^$all +||img1.wsimg.com/blobby/go/0e65d320-97ed-47cb-9ca0-bcd7400824c9/downloads/wrightbus_streetlite_manual.pdf^$all +||img1.wsimg.com/blobby/go/0fde6049-38a2-402e-8604-5a56fc977486/downloads/request_letter_for_construction_bond_refund.pdf^$all +||img1.wsimg.com/blobby/go/10e01255-b324-4a54-ae63-f4e28a319147/downloads/how_to_make_authorization_letter_to_claim_money_in_palawan.pdf^$all +||img1.wsimg.com/blobby/go/119d5b03-e78f-4725-87b7-ed496b267f6d/downloads/attributes_of_a_good_research_topic_ppt.pdf^$all +||img1.wsimg.com/blobby/go/119d5b03-e78f-4725-87b7-ed496b267f6d/downloads/scrubber_design_calculation_excel.pdf^$all +||img1.wsimg.com/blobby/go/132d13c5-3f89-41bf-85b4-d1a24ddcf61c/downloads/nosiwevixina.pdf^$all +||img1.wsimg.com/blobby/go/159e5f7b-5078-45c9-9b36-63f21684101f/downloads/94962104148.pdf^$all +||img1.wsimg.com/blobby/go/1663535d-289f-4a17-902d-0bb53881ce69/downloads/kurupojofuxerixutalo.pdf^$all +||img1.wsimg.com/blobby/go/167862b3-31e9-4984-90e5-30766e3a7fa8/downloads/20740408467.pdf^$all +||img1.wsimg.com/blobby/go/17a8127f-1a20-4f1c-a234-ba1b1a8873f5/downloads/90572854820.pdf^$all +||img1.wsimg.com/blobby/go/17ef1a7d-be6f-43bc-ac3a-a9c4fb65005e/downloads/powejavatunepoxaj.pdf^$all +||img1.wsimg.com/blobby/go/182ae1b8-0b64-4790-be7b-698d5e8b3d57/downloads/gidatigexapufalumiwolagad.pdf^$all +||img1.wsimg.com/blobby/go/183feb73-c001-4172-a9c4-8aedcbb9c085/downloads/nosasasoxanuxoxazefuz.pdf^$all +||img1.wsimg.com/blobby/go/19668bf7-0111-4cbb-8050-06562ac08bba/downloads/steps_to_create_template_instance_in_tosca.pdf^$all +||img1.wsimg.com/blobby/go/19f0e93a-8f01-4f21-8964-dcc990dea571/downloads/honeywell_dc3002_manual.pdf^$all +||img1.wsimg.com/blobby/go/1a64ed17-85a2-4cee-b266-878ed957a17a/downloads/wezixipusafa.pdf^$all +||img1.wsimg.com/blobby/go/1b026e03-5af6-461d-a832-b5e23f93b19f/downloads/rojumedevunez.pdf^$all +||img1.wsimg.com/blobby/go/1b7f80b5-fb34-497d-8072-447feb44da09/downloads/lewamagoromizesa.pdf^$all +||img1.wsimg.com/blobby/go/1bfc168f-d0df-43cb-a73e-d0c80e42fe5c/downloads/71653623394.pdf^$all +||img1.wsimg.com/blobby/go/1bfc168f-d0df-43cb-a73e-d0c80e42fe5c/downloads/formulaire_virement_international_banque_postale.pdf^$all +||img1.wsimg.com/blobby/go/1c97d706-1093-417b-afec-0c60fc1d8547/downloads/74906999263.pdf^$all +||img1.wsimg.com/blobby/go/1cd14ca4-3aaa-4349-a92b-5919cb2c71ee/downloads/37493963429.pdf^$all +||img1.wsimg.com/blobby/go/1d231bc1-15b8-4d3d-b451-c05909392126/downloads/71014366481.pdf^$all +||img1.wsimg.com/blobby/go/1dc2c198-09f6-4966-96bb-2e160c7d78e2/downloads/55840145977.pdf^$all +||img1.wsimg.com/blobby/go/1e00f0b9-c207-4cb1-9a9a-c11d057e31a3/downloads/request_letter_for_hold_amount_release.pdf^$all +||img1.wsimg.com/blobby/go/1e222df8-d197-4254-b90b-be3d3b023ef4/downloads/78299826683.pdf^$all +||img1.wsimg.com/blobby/go/1e222df8-d197-4254-b90b-be3d3b023ef4/downloads/zopawakabubijipek.pdf^$all +||img1.wsimg.com/blobby/go/1ec2f808-78a9-4c99-aa80-be96e23bf450/downloads/gewikunobapizati.pdf^$all +||img1.wsimg.com/blobby/go/1ecb10a4-49e9-4fe5-a6bc-f0f227949dd2/downloads/60627448414.pdf^$all +||img1.wsimg.com/blobby/go/1feaf4a2-3a85-48bd-b975-ab8d5bcee640/downloads/30816276176.pdf^$all +||img1.wsimg.com/blobby/go/1ffc09a0-c9a4-4762-8145-43798f2fda71/downloads/back_to_work_from_maternity_leave_email.pdf^$all +||img1.wsimg.com/blobby/go/20a6346a-1701-43f8-be7d-6426912a09c2/downloads/self_introduction_during_interview_example.pdf^$all +||img1.wsimg.com/blobby/go/20a6346a-1701-43f8-be7d-6426912a09c2/downloads/sottoindicato_o_sotto_indicato_treccani.pdf^$all +||img1.wsimg.com/blobby/go/2224247e-29ce-4f8d-b838-abfcbdf269c0/downloads/16984198490.pdf^$all +||img1.wsimg.com/blobby/go/2224247e-29ce-4f8d-b838-abfcbdf269c0/downloads/emdr_cognitive_interweaves.pdf^$all +||img1.wsimg.com/blobby/go/2224247e-29ce-4f8d-b838-abfcbdf269c0/downloads/psicoweb_respuestas_2019.pdf^$all +||img1.wsimg.com/blobby/go/225bb15f-2915-4639-a3a1-bcedb142b1ef/downloads/letter_format_for_reply_to_show_cause_notice.pdf^$all +||img1.wsimg.com/blobby/go/2294c0f6-d737-4b16-8fca-94076227dda5/downloads/garrison_carbon_monoxide_and_gas_detector_manual.pdf^$all +||img1.wsimg.com/blobby/go/229e00b6-6232-4273-bd27-55f919ca28b8/downloads/financas_corporativas_teoria_e_pratica.pdf^$all +||img1.wsimg.com/blobby/go/22a15b49-22b8-4edf-a855-4e76194b4aaf/downloads/97812412729.pdf^$all +||img1.wsimg.com/blobby/go/23c146af-6c5b-426f-944d-9bf55106e4d8/downloads/de_quien_es_hija_elisa_salinas.pdf^$all +||img1.wsimg.com/blobby/go/23ec0b56-0ae7-4e41-8565-08e517b0b386/downloads/gatamalepuberik.pdf^$all +||img1.wsimg.com/blobby/go/2470d53e-fef7-4646-9c8b-919894e66d18/downloads/72646482584.pdf^$all +||img1.wsimg.com/blobby/go/24a9af23-a9c8-45b6-80f8-335651f17510/downloads/96094090900.pdf^$all +||img1.wsimg.com/blobby/go/262ea410-a887-458b-b5ec-65748ef01e57/downloads/75258476975.pdf^$all +||img1.wsimg.com/blobby/go/26bbb7e6-2f83-462e-b1a0-c9b7b5a50d38/downloads/training_needs_assessment_questionnaire_for_sales.pdf^$all +||img1.wsimg.com/blobby/go/27f26436-44ad-4647-8929-a76a4ea0ea67/downloads/sample_query_letter_for_negligence_of_duty.pdf^$all +||img1.wsimg.com/blobby/go/299c0676-bac5-4db6-8fea-3075091e1687/downloads/61526216713.pdf^$all +||img1.wsimg.com/blobby/go/2ad58263-1b5c-4da7-bc4a-7b8f99e22218/downloads/2544897802.pdf^$all +||img1.wsimg.com/blobby/go/2ad58263-1b5c-4da7-bc4a-7b8f99e22218/downloads/formulaire_ordre_de_virement_banque_postale.pdf^$all +||img1.wsimg.com/blobby/go/2b383d2d-2b5a-4b4f-949f-124c21f71183/downloads/how_to_fill_up_deed_of_sale_of_motor_vehicle.pdf^$all +||img1.wsimg.com/blobby/go/2b383d2d-2b5a-4b4f-949f-124c21f71183/downloads/how_to_write_an_introduction_letter_to_an_embassy.pdf^$all +||img1.wsimg.com/blobby/go/2b44aaa8-926a-4cbd-9774-e30385fa65ac/downloads/zexesotusipedelew.pdf^$all +||img1.wsimg.com/blobby/go/2bb4e8cb-ec7e-44c1-a645-d94d4534f3a4/downloads/far_from_you_tess_sharpe.pdf^$all +||img1.wsimg.com/blobby/go/2c827e54-9a2c-449a-9d97-e20f9555c87a/downloads/pearson_iit_foundation_class_9_maths.pdf^$all +||img1.wsimg.com/blobby/go/2cd8ef37-3f02-4d83-b132-5400b0b21173/downloads/can_sins_be_forgiven_in_hinduism.pdf^$all +||img1.wsimg.com/blobby/go/2d664301-7b5e-474d-97a1-1305c7ece601/downloads/35905190672.pdf^$all +||img1.wsimg.com/blobby/go/2eabcd0a-1fbf-48aa-8399-71392232a891/downloads/92332863676.pdf^$all +||img1.wsimg.com/blobby/go/2eabcd0a-1fbf-48aa-8399-71392232a891/downloads/rafubagosewuniwudob.pdf^$all +||img1.wsimg.com/blobby/go/2ec5b631-127b-4a5e-84ff-7de19674a208/downloads/daxukipavibipukoj.pdf^$all +||img1.wsimg.com/blobby/go/2f6bcf3c-4b23-42e7-95db-7e5e3070b630/downloads/29680644903.pdf^$all +||img1.wsimg.com/blobby/go/2fda8269-9b7e-4008-b093-ed7dc0bde9d7/downloads/zinivegosejuriwevagowu.pdf^$all +||img1.wsimg.com/blobby/go/3007465f-aa28-4ea8-964e-00ec10d6daef/downloads/reinforced_concrete_wall_design_examples.pdf^$all +||img1.wsimg.com/blobby/go/3131d044-1bdb-4fdc-8ed0-764e724b86a8/downloads/57373027197.pdf^$all +||img1.wsimg.com/blobby/go/3131d044-1bdb-4fdc-8ed0-764e724b86a8/downloads/90378982159.pdf^$all +||img1.wsimg.com/blobby/go/3131d044-1bdb-4fdc-8ed0-764e724b86a8/downloads/gomanelakog.pdf^$all +||img1.wsimg.com/blobby/go/3131d044-1bdb-4fdc-8ed0-764e724b86a8/downloads/jorejujavupu.pdf^$all +||img1.wsimg.com/blobby/go/3131d044-1bdb-4fdc-8ed0-764e724b86a8/downloads/stromer_st1_owners_manual.pdf^$all +||img1.wsimg.com/blobby/go/3209f3eb-a43c-41d3-a7ba-73b4af438585/downloads/58423586845.pdf^$all +||img1.wsimg.com/blobby/go/3209f3eb-a43c-41d3-a7ba-73b4af438585/downloads/61240910211.pdf^$all +||img1.wsimg.com/blobby/go/3209f3eb-a43c-41d3-a7ba-73b4af438585/downloads/69034861186.pdf^$all +||img1.wsimg.com/blobby/go/3209f3eb-a43c-41d3-a7ba-73b4af438585/downloads/9089368795.pdf^$all +||img1.wsimg.com/blobby/go/3209f3eb-a43c-41d3-a7ba-73b4af438585/downloads/97474238027.pdf^$all +||img1.wsimg.com/blobby/go/3209f3eb-a43c-41d3-a7ba-73b4af438585/downloads/ap_cm_relief_fund_application_process.pdf^$all +||img1.wsimg.com/blobby/go/3209f3eb-a43c-41d3-a7ba-73b4af438585/downloads/boxikijefedajexufesibul.pdf^$all +||img1.wsimg.com/blobby/go/3209f3eb-a43c-41d3-a7ba-73b4af438585/downloads/burijuterapudupelirebi.pdf^$all +||img1.wsimg.com/blobby/go/3209f3eb-a43c-41d3-a7ba-73b4af438585/downloads/her_yonuyle_modern_almanca_dursun_zengin.pdf^$all +||img1.wsimg.com/blobby/go/3209f3eb-a43c-41d3-a7ba-73b4af438585/downloads/lista_de_verbos_em_italiano.pdf^$all +||img1.wsimg.com/blobby/go/3209f3eb-a43c-41d3-a7ba-73b4af438585/downloads/special_forces_knife_techniques.pdf^$all +||img1.wsimg.com/blobby/go/3298be68-ecf2-4e6e-8fa7-1bf1d7657489/downloads/xagoje.pdf^$all +||img1.wsimg.com/blobby/go/32a18e69-8d9d-488c-b50f-45023ca24343/downloads/87353354077.pdf^$all +||img1.wsimg.com/blobby/go/33bb6cfc-294d-4317-8afb-5d34ed60ffe6/downloads/20222176664.pdf^$all +||img1.wsimg.com/blobby/go/33d2c907-2bf6-4426-875f-30dcfdd2ea6c/downloads/takeshi_amemiya_advanced_econometrics.pdf^$all +||img1.wsimg.com/blobby/go/3425f1f9-2741-4cdd-9a85-f51cd8a77838/downloads/pyidaungsu_font_keyboard_layout.pdf^$all +||img1.wsimg.com/blobby/go/343166b6-b38d-45a3-a768-806295759a1d/downloads/vatemunubiserotogurozem.pdf^$all +||img1.wsimg.com/blobby/go/34794329-fa5b-49f8-8f60-fb0720b1e556/downloads/14476765670.pdf^$all +||img1.wsimg.com/blobby/go/34a417cb-7930-4ae3-8428-8420716ba08a/downloads/30229793875.pdf^$all +||img1.wsimg.com/blobby/go/34a417cb-7930-4ae3-8428-8420716ba08a/downloads/51274200809.pdf^$all +||img1.wsimg.com/blobby/go/34a417cb-7930-4ae3-8428-8420716ba08a/downloads/74129229699.pdf^$all +||img1.wsimg.com/blobby/go/34a417cb-7930-4ae3-8428-8420716ba08a/downloads/94224235634.pdf^$all +||img1.wsimg.com/blobby/go/34a417cb-7930-4ae3-8428-8420716ba08a/downloads/lafebokoz.pdf^$all +||img1.wsimg.com/blobby/go/34a417cb-7930-4ae3-8428-8420716ba08a/downloads/xutodorimalibavexididoson.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/36672004653.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/39892598323.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/59681288373.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/64954946228.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/78534035283.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/91589198920.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/98264302577.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/exsilentia_4._0_user_guide.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/jesafi.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/kutapodisub.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/lobola_letter_example.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/methodologie_du_commentaire_compose_francais.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/minupawuferogu.pdf^$all +||img1.wsimg.com/blobby/go/356923eb-d23c-4b0c-808e-e9b58fb291da/downloads/ramevedasap.pdf^$all +||img1.wsimg.com/blobby/go/363b8b8c-bdd6-4ad7-ac6c-ba65cd60171b/downloads/abaqus_user_subroutine_reference_guide.pdf^$all +||img1.wsimg.com/blobby/go/37ff6e83-e399-4f09-b7f3-13b9438039c2/downloads/54456550535.pdf^$all +||img1.wsimg.com/blobby/go/3844a76d-a274-4a3a-ad7f-2943a29e37b3/downloads/lezopidigusaraten.pdf^$all +||img1.wsimg.com/blobby/go/3924d65b-e08d-4f21-8d71-a0b15eb654bb/downloads/63720952596.pdf^$all +||img1.wsimg.com/blobby/go/397fbc33-145f-44ec-a774-e1fa1b866d82/downloads/fekesijurada.pdf^$all +||img1.wsimg.com/blobby/go/3a657e0c-a872-4028-94b8-811aea249c49/downloads/shl_general_ability_test_answers_reddit.pdf^$all +||img1.wsimg.com/blobby/go/3a90d4c9-f215-49ec-8178-8e50febf5250/downloads/tedutogonisijetinikiw.pdf^$all +||img1.wsimg.com/blobby/go/3abea8f6-1776-4586-b4e6-47b414d29e30/downloads/mozosadoboligemuwisuwet.pdf^$all +||img1.wsimg.com/blobby/go/3c8f7a45-f68c-4369-8f63-be6429599400/downloads/butulanimirovubeve.pdf^$all +||img1.wsimg.com/blobby/go/3ccd9234-721c-480b-91a1-84bae34c2069/downloads/votudomafuze.pdf^$all +||img1.wsimg.com/blobby/go/3d0a6e54-c95b-4e67-871e-882f39f9c203/downloads/38102271043.pdf^$all +||img1.wsimg.com/blobby/go/3d0a6e54-c95b-4e67-871e-882f39f9c203/downloads/77235011630.pdf^$all +||img1.wsimg.com/blobby/go/3d2c6212-591e-450b-b673-947709e569a9/downloads/jidikegegudafipi.pdf^$all +||img1.wsimg.com/blobby/go/3d8c405e-d09a-43e6-b2b9-f8bbfe0e4b05/downloads/japifitakudisudupuweb.pdf^$all +||img1.wsimg.com/blobby/go/3daad7b2-98c5-4dc1-b37a-5570afcba267/downloads/40472163846.pdf^$all +||img1.wsimg.com/blobby/go/3e09336e-0817-489c-96db-d43d5fd51fc4/downloads/i9_birth_certificate_example.pdf^$all +||img1.wsimg.com/blobby/go/3e3d230e-4918-4f4b-8a10-8ee933aabcaf/downloads/99772344048.pdf^$all +||img1.wsimg.com/blobby/go/3e712c63-2f24-4e6b-a5dc-ff3233100bea/downloads/72290413200.pdf^$all +||img1.wsimg.com/blobby/go/3f5ecf8d-ba74-430f-ac11-9eb6ace92d02/downloads/73100246338.pdf^$all +||img1.wsimg.com/blobby/go/3f5ecf8d-ba74-430f-ac11-9eb6ace92d02/downloads/womirojepu.pdf^$all +||img1.wsimg.com/blobby/go/3fffd8a4-4d1d-42f8-a3e8-f124f6724c06/downloads/kejawisenukasi.pdf^$all +||img1.wsimg.com/blobby/go/41780010-2245-4f59-96ea-abe2bb04704f/downloads/38265042738.pdf^$all +||img1.wsimg.com/blobby/go/41780010-2245-4f59-96ea-abe2bb04704f/downloads/hypothecation_cancellation_request_letter_format.pdf^$all +||img1.wsimg.com/blobby/go/41780010-2245-4f59-96ea-abe2bb04704f/downloads/request_letter_format_in_marathi_language.pdf^$all +||img1.wsimg.com/blobby/go/41809607-5bd4-4a52-8a62-530dfb6fcdd7/downloads/gelumoxosudasikaxo.pdf^$all +||img1.wsimg.com/blobby/go/41809607-5bd4-4a52-8a62-530dfb6fcdd7/downloads/tugojokuru.pdf^$all +||img1.wsimg.com/blobby/go/41fa09f3-79bd-43c0-909a-d1a20c3cb7f6/downloads/attestation_sur_l_honneur_de_non_ressources.pdf^$all +||img1.wsimg.com/blobby/go/424b0398-579a-4717-a17a-ffb972bf5819/downloads/audit_professional_clearance_letter_template.pdf^$all +||img1.wsimg.com/blobby/go/424b0398-579a-4717-a17a-ffb972bf5819/downloads/manual_ppap_4_edicao.pdf^$all +||img1.wsimg.com/blobby/go/4252a31f-7a57-4ac8-a31e-ee71b2361194/downloads/61162239689.pdf^$all +||img1.wsimg.com/blobby/go/42d6a3b4-bbc0-47ab-bf86-c3ddb806b2ed/downloads/rafadaduveputev.pdf^$all +||img1.wsimg.com/blobby/go/432a6cf0-f63b-4132-8b03-52615cd2c1c3/downloads/41591669011.pdf^$all +||img1.wsimg.com/blobby/go/432a6cf0-f63b-4132-8b03-52615cd2c1c3/downloads/hypochondria_ielts_reading_answers.pdf^$all +||img1.wsimg.com/blobby/go/4365da4a-8d29-4708-8e67-b3b566794d83/downloads/fovizijazobupukototofosop.pdf^$all +||img1.wsimg.com/blobby/go/437a989b-0a84-4105-b8c7-1870eb56af29/downloads/sbi_disbursement_request_form.pdf^$all +||img1.wsimg.com/blobby/go/43b3ecff-25d4-4371-99a8-6df485cf4fd5/downloads/amoeba_sisters_classification_worksheet.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/3730146334.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/39834772333.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/4959938645.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/82707682561.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/doxuwiponubagexotabos.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/how_to_get_gst_invoice_for_amazon_purchase.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/jakirezimukixinirivuvizuw.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/kagoferoxotopelabalim.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/kigepobesewizijipakusafal.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/law-making_process_in_zimbabwe.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/lebuk.pdf^$all +||img1.wsimg.com/blobby/go/4402180a-d4b9-4c2e-b606-353fcb7d5a18/downloads/xinunivigaxelifujukedo.pdf^$all +||img1.wsimg.com/blobby/go/4454ad30-3f6f-488a-b5e6-19e7bcca2146/downloads/duzinijilufixikedaluw.pdf^$all +||img1.wsimg.com/blobby/go/445dfc81-a427-4468-a541-314294ee0cbb/downloads/43947647531.pdf^$all +||img1.wsimg.com/blobby/go/445dfc81-a427-4468-a541-314294ee0cbb/downloads/55745505506.pdf^$all +||img1.wsimg.com/blobby/go/445dfc81-a427-4468-a541-314294ee0cbb/downloads/638993752.pdf^$all +||img1.wsimg.com/blobby/go/445dfc81-a427-4468-a541-314294ee0cbb/downloads/cooling_tower_working.pdf^$all +||img1.wsimg.com/blobby/go/445dfc81-a427-4468-a541-314294ee0cbb/downloads/forest_fire_causes_and_effects.pdf^$all +||img1.wsimg.com/blobby/go/445dfc81-a427-4468-a541-314294ee0cbb/downloads/manual_de_uso_cummins_insite.pdf^$all +||img1.wsimg.com/blobby/go/445dfc81-a427-4468-a541-314294ee0cbb/downloads/nx_nastran_element_library_reference_manual.pdf^$all +||img1.wsimg.com/blobby/go/445dfc81-a427-4468-a541-314294ee0cbb/downloads/sapebufuj.pdf^$all +||img1.wsimg.com/blobby/go/445dfc81-a427-4468-a541-314294ee0cbb/downloads/wolarodipuxusisug.pdf^$all +||img1.wsimg.com/blobby/go/4490da21-0774-43c2-8f10-26fe1384ffab/downloads/convention_collective_ucanss_mutatio.pdf^$all +||img1.wsimg.com/blobby/go/44a9091e-2134-47ec-8037-250483142ad3/downloads/kenmore_elite_665.12783_k311_service_manual.pdf^$all +||img1.wsimg.com/blobby/go/44d0963d-ba71-4620-abdb-e3c6631b392b/downloads/balance_confirmation_letter_format_in_word.pdf^$all +||img1.wsimg.com/blobby/go/455fd801-8453-4cfe-b6ee-1af9e2a627f6/downloads/7558215776.pdf^$all +||img1.wsimg.com/blobby/go/465f36af-7a24-4906-9c2a-986dcb6b15f8/downloads/where_can_i_get_edo_state_of_origin_certificate_in_lagos.pdf^$all +||img1.wsimg.com/blobby/go/478a916a-56a8-445d-9eb0-b1a280ba537b/downloads/27628335796.pdf^$all +||img1.wsimg.com/blobby/go/47a03532-4838-4d3f-b185-a29c87fa882c/downloads/24511080679.pdf^$all +||img1.wsimg.com/blobby/go/47b969d8-0664-43a5-a1cb-4ec8411e9eef/downloads/powerflex_755_user_manual_espanol.pdf^$all +||img1.wsimg.com/blobby/go/48283c5b-b198-4860-9bf9-7f30a2f8146b/downloads/10387443769.pdf^$all +||img1.wsimg.com/blobby/go/48283c5b-b198-4860-9bf9-7f30a2f8146b/downloads/zoromipubadijivonexon.pdf^$all +||img1.wsimg.com/blobby/go/4831e354-44dc-4759-9d14-0dd6cfda589f/downloads/91284214985.pdf^$all +||img1.wsimg.com/blobby/go/4831e354-44dc-4759-9d14-0dd6cfda589f/downloads/demag_ac_350_dwg.pdf^$all +||img1.wsimg.com/blobby/go/4872c6d8-aa46-4e32-b809-43d741337793/downloads/74841624584.pdf^$all +||img1.wsimg.com/blobby/go/48cf8ef6-fe89-47b6-9b8e-43119a3d3833/downloads/89759746182.pdf^$all +||img1.wsimg.com/blobby/go/49bbfdeb-576f-4f20-b756-96ff9c705013/downloads/96422280236.pdf^$all +||img1.wsimg.com/blobby/go/4b7c63a1-8c4d-413e-83dc-2db6954011c6/downloads/42942412664.pdf^$all +||img1.wsimg.com/blobby/go/4b7c63a1-8c4d-413e-83dc-2db6954011c6/downloads/6759358871.pdf^$all +||img1.wsimg.com/blobby/go/4c0bdcf4-6f9c-40c3-8219-8cbbbcfb4026/downloads/10451479360.pdf^$all +||img1.wsimg.com/blobby/go/4c0bdcf4-6f9c-40c3-8219-8cbbbcfb4026/downloads/wanigukanewalew.pdf^$all +||img1.wsimg.com/blobby/go/4c26a93a-50bb-4104-895b-059e3fc9a02c/downloads/zoxinigexozojadidara.pdf^$all +||img1.wsimg.com/blobby/go/4c633c3b-7c73-43a9-a161-0e7459f617b4/downloads/popajuzokovuluboz.pdf^$all +||img1.wsimg.com/blobby/go/4cb1e8a7-0f1a-4c3a-ae4d-65ac09f78b80/downloads/fenekipejivatoxeni.pdf^$all +||img1.wsimg.com/blobby/go/4d2b55bf-cda3-4071-bf2e-8c27282b789f/downloads/chambre_de_tirage_telecom.pdf^$all +||img1.wsimg.com/blobby/go/4ec11559-69c0-4903-84a6-3240babfcfe7/downloads/lapagikevipewijumodoru.pdf^$all +||img1.wsimg.com/blobby/go/50ab7773-f1d2-4be6-a8e2-1065b2477787/downloads/41229957036.pdf^$all +||img1.wsimg.com/blobby/go/50ab7773-f1d2-4be6-a8e2-1065b2477787/downloads/4850921377.pdf^$all +||img1.wsimg.com/blobby/go/50e5aae7-a15c-4d74-a4ed-a8edfca980c4/downloads/atividades_adaptadas_de_ingles_para_deficientes_intelectuais.pdf^$all +||img1.wsimg.com/blobby/go/5102464b-373a-4f87-829a-69343208c6ac/downloads/36758652154.pdf^$all +||img1.wsimg.com/blobby/go/5102464b-373a-4f87-829a-69343208c6ac/downloads/62049175170.pdf^$all +||img1.wsimg.com/blobby/go/5102464b-373a-4f87-829a-69343208c6ac/downloads/84675915071.pdf^$all +||img1.wsimg.com/blobby/go/5102464b-373a-4f87-829a-69343208c6ac/downloads/bidoxefemoduxunirez.pdf^$all +||img1.wsimg.com/blobby/go/5102464b-373a-4f87-829a-69343208c6ac/downloads/checklist_format_for_housekeeping_in_hospital.pdf^$all +||img1.wsimg.com/blobby/go/5102464b-373a-4f87-829a-69343208c6ac/downloads/mizibatazikitawejubidodog.pdf^$all +||img1.wsimg.com/blobby/go/5102464b-373a-4f87-829a-69343208c6ac/downloads/remebemakuvomurixulat.pdf^$all +||img1.wsimg.com/blobby/go/5102464b-373a-4f87-829a-69343208c6ac/downloads/rollo_tomassi_the_rational_male_turkce.pdf^$all +||img1.wsimg.com/blobby/go/5102464b-373a-4f87-829a-69343208c6ac/downloads/vamiralu.pdf^$all +||img1.wsimg.com/blobby/go/5102464b-373a-4f87-829a-69343208c6ac/downloads/vawazu.pdf^$all +||img1.wsimg.com/blobby/go/51c1105d-a687-468d-b1aa-293ca9578a34/downloads/giwuroganapedokozijave.pdf^$all +||img1.wsimg.com/blobby/go/51d0d552-51a2-4187-835e-597cbad426c9/downloads/astm_e2500.pdf^$all +||img1.wsimg.com/blobby/go/51e053ea-8122-46e3-bee6-6c00a935619c/downloads/28185631859.pdf^$all +||img1.wsimg.com/blobby/go/51e053ea-8122-46e3-bee6-6c00a935619c/downloads/40061082597.pdf^$all +||img1.wsimg.com/blobby/go/52e9408f-c536-4a35-bd81-6078a5dce549/downloads/5252998215.pdf^$all +||img1.wsimg.com/blobby/go/52e9408f-c536-4a35-bd81-6078a5dce549/downloads/98085965001.pdf^$all +||img1.wsimg.com/blobby/go/53202951-38c7-4c35-8280-6cefaf47915f/downloads/libububodanusakamarad.pdf^$all +||img1.wsimg.com/blobby/go/53202951-38c7-4c35-8280-6cefaf47915f/downloads/statsafe_3000_msds.pdf^$all +||img1.wsimg.com/blobby/go/54040f30-acd4-4a4c-a314-5c4c261b537d/downloads/printable_foods_high_in_uric_acid_chart.pdf^$all +||img1.wsimg.com/blobby/go/541a1d8b-7a21-4c1f-8013-03406bd1a8ad/downloads/mevuxurike.pdf^$all +||img1.wsimg.com/blobby/go/552d21dd-b338-4bf6-8541-a1e81cff5ed8/downloads/14409296375.pdf^$all +||img1.wsimg.com/blobby/go/552d21dd-b338-4bf6-8541-a1e81cff5ed8/downloads/17714436684.pdf^$all +||img1.wsimg.com/blobby/go/552d21dd-b338-4bf6-8541-a1e81cff5ed8/downloads/22187922858.pdf^$all +||img1.wsimg.com/blobby/go/552d21dd-b338-4bf6-8541-a1e81cff5ed8/downloads/45838770375.pdf^$all +||img1.wsimg.com/blobby/go/552d21dd-b338-4bf6-8541-a1e81cff5ed8/downloads/80691091889.pdf^$all +||img1.wsimg.com/blobby/go/552d21dd-b338-4bf6-8541-a1e81cff5ed8/downloads/bosokoxa.pdf^$all +||img1.wsimg.com/blobby/go/552d21dd-b338-4bf6-8541-a1e81cff5ed8/downloads/testigos_tablero_foton.pdf^$all +||img1.wsimg.com/blobby/go/552d21dd-b338-4bf6-8541-a1e81cff5ed8/downloads/viduwe.pdf^$all +||img1.wsimg.com/blobby/go/55d28ff0-9d0b-42b4-8190-887f90038148/downloads/gimisomogaro.pdf^$all +||img1.wsimg.com/blobby/go/561eb1da-cbac-4811-84b8-e841d63e56cb/downloads/fomogivazugararux.pdf^$all +||img1.wsimg.com/blobby/go/5778216d-14df-4dd7-ac4c-aefbb7c07c24/downloads/kugaduvekujewotaz.pdf^$all +||img1.wsimg.com/blobby/go/5809a244-7d90-46f4-9de4-ee86dda3a2de/downloads/evaluation_emc_6eme_devenir_collegien.pdf^$all +||img1.wsimg.com/blobby/go/586b3ef6-c9db-4d1a-a9eb-303f942e21fa/downloads/55359157176.pdf^$all +||img1.wsimg.com/blobby/go/58b13a51-176b-4b7e-ab1e-a0c84e7a5487/downloads/currency_market_mechanics_bmc_answers.pdf^$all +||img1.wsimg.com/blobby/go/58f82e37-5723-4fc5-be87-1ca34da7fc9c/downloads/ladovarudugusujo.pdf^$all +||img1.wsimg.com/blobby/go/59062828-6c5e-403a-ae88-14483438a1b6/downloads/28725733968.pdf^$all +||img1.wsimg.com/blobby/go/59062828-6c5e-403a-ae88-14483438a1b6/downloads/41202776349.pdf^$all +||img1.wsimg.com/blobby/go/59062828-6c5e-403a-ae88-14483438a1b6/downloads/6083216094.pdf^$all +||img1.wsimg.com/blobby/go/59062828-6c5e-403a-ae88-14483438a1b6/downloads/97374790135.pdf^$all +||img1.wsimg.com/blobby/go/59062828-6c5e-403a-ae88-14483438a1b6/downloads/gibabasakofalulizuwa.pdf^$all +||img1.wsimg.com/blobby/go/59062828-6c5e-403a-ae88-14483438a1b6/downloads/individual_development_plan_powerpoint_template.pdf^$all +||img1.wsimg.com/blobby/go/59062828-6c5e-403a-ae88-14483438a1b6/downloads/kuradorug.pdf^$all +||img1.wsimg.com/blobby/go/59062828-6c5e-403a-ae88-14483438a1b6/downloads/psa_birth_certificate_authorization_letter.pdf^$all +||img1.wsimg.com/blobby/go/59062828-6c5e-403a-ae88-14483438a1b6/downloads/situation_denonciation_coupe_ou_ancre_exercices_corriges.pdf^$all +||img1.wsimg.com/blobby/go/59062828-6c5e-403a-ae88-14483438a1b6/downloads/tevolutirasuvujivol.pdf^$all +||img1.wsimg.com/blobby/go/59062828-6c5e-403a-ae88-14483438a1b6/downloads/wipofuta.pdf^$all +||img1.wsimg.com/blobby/go/59d4bc6c-1e33-45d9-a430-f89e52f3f795/downloads/subazituwa.pdf^$all +||img1.wsimg.com/blobby/go/5a9e93e0-0f17-4e5e-a00c-88e3958ec770/downloads/18645484853.pdf^$all +||img1.wsimg.com/blobby/go/5a9e93e0-0f17-4e5e-a00c-88e3958ec770/downloads/58616986475.pdf^$all +||img1.wsimg.com/blobby/go/5a9e93e0-0f17-4e5e-a00c-88e3958ec770/downloads/ansul_piranha_system_installation_manual.pdf^$all +||img1.wsimg.com/blobby/go/5a9e93e0-0f17-4e5e-a00c-88e3958ec770/downloads/mawanigokur.pdf^$all +||img1.wsimg.com/blobby/go/5a9e93e0-0f17-4e5e-a00c-88e3958ec770/downloads/modexad.pdf^$all +||img1.wsimg.com/blobby/go/5a9e93e0-0f17-4e5e-a00c-88e3958ec770/downloads/najovozulubameto.pdf^$all +||img1.wsimg.com/blobby/go/5a9e93e0-0f17-4e5e-a00c-88e3958ec770/downloads/right_to_information_act_application_form_malayalam.pdf^$all +||img1.wsimg.com/blobby/go/5a9e93e0-0f17-4e5e-a00c-88e3958ec770/downloads/vuguvukopipokimukunoju.pdf^$all +||img1.wsimg.com/blobby/go/5a9e93e0-0f17-4e5e-a00c-88e3958ec770/downloads/waste_management_in_dubai.pdf^$all +||img1.wsimg.com/blobby/go/5add4dbc-ec7d-4010-9077-0d95eef82ba1/downloads/64293794102.pdf^$all +||img1.wsimg.com/blobby/go/5c2804a6-aa9c-48a0-92fa-b4e2830d3e94/downloads/ladakh_tourist_map.pdf^$all +||img1.wsimg.com/blobby/go/5c9ed0ab-abf7-4895-9a79-d81e87aed60a/downloads/nezumizegorazulamalit.pdf^$all +||img1.wsimg.com/blobby/go/5d8bfe2e-b91e-431f-9bdc-3f0ea97e388e/downloads/hbc_radiomatic_fse_727_manual.pdf^$all +||img1.wsimg.com/blobby/go/5d8bfe2e-b91e-431f-9bdc-3f0ea97e388e/downloads/wovivesapo.pdf^$all +||img1.wsimg.com/blobby/go/5e489076-b026-43ca-95da-8c6fe49f6d00/downloads/49103789197.pdf^$all +||img1.wsimg.com/blobby/go/5e489076-b026-43ca-95da-8c6fe49f6d00/downloads/frm_part_2_schweser_quicksheet.pdf^$all +||img1.wsimg.com/blobby/go/5f03ee03-a319-4a1e-a052-a99710c59365/downloads/bujulodipesotixugakujup.pdf^$all +||img1.wsimg.com/blobby/go/600b6853-9b14-40c4-b9d1-c0a10f9ad1eb/downloads/mathematics_core_topics_sl.pdf^$all +||img1.wsimg.com/blobby/go/606585da-2917-4da6-a9df-810ae6e7fbc1/downloads/asme_sec_8_div_1_appendix_8.pdf^$all +||img1.wsimg.com/blobby/go/6104a42e-c9ca-496d-9156-92538fddca06/downloads/vevowezirebojikidebof.pdf^$all +||img1.wsimg.com/blobby/go/61905f2a-55dd-4144-8c7c-fce5e91063a8/downloads/british_army_all_arms_tactical_aide_memoire.pdf^$all +||img1.wsimg.com/blobby/go/62128af0-82d0-4bae-b967-d393a4304003/downloads/69065118383.pdf^$all +||img1.wsimg.com/blobby/go/62128af0-82d0-4bae-b967-d393a4304003/downloads/apex_sl_vibration_controller_manual.pdf^$all +||img1.wsimg.com/blobby/go/62128af0-82d0-4bae-b967-d393a4304003/downloads/xibuvajuxaluvotom.pdf^$all +||img1.wsimg.com/blobby/go/6286d8b4-6ffa-4d84-aeea-f2a9bc58a594/downloads/hotel_courtesy_call_template.pdf^$all +||img1.wsimg.com/blobby/go/62a7895e-5f81-4049-920b-e70e38d29e37/downloads/how_to_register_in_upstox.pdf^$all +||img1.wsimg.com/blobby/go/62a7895e-5f81-4049-920b-e70e38d29e37/downloads/why_is_annexure_d_required_for_minor_passport.pdf^$all +||img1.wsimg.com/blobby/go/62bebe3a-24c2-4a56-9b26-65d7a4a8233d/downloads/gupira.pdf^$all +||img1.wsimg.com/blobby/go/62bebe3a-24c2-4a56-9b26-65d7a4a8233d/downloads/xijawef.pdf^$all +||img1.wsimg.com/blobby/go/62fde782-5483-4905-a6da-12e04ab1250b/downloads/38559734752.pdf^$all +||img1.wsimg.com/blobby/go/637623a6-af9b-4a69-90a8-85cd562c999e/downloads/niwexokaburule.pdf^$all +||img1.wsimg.com/blobby/go/64114a94-94a3-4f5d-866a-beee254b955f/downloads/70815730326.pdf^$all +||img1.wsimg.com/blobby/go/64114a94-94a3-4f5d-866a-beee254b955f/downloads/xipefodefanotare.pdf^$all +||img1.wsimg.com/blobby/go/647bfca3-c5f6-48a0-9ec3-35afde17c6e3/downloads/gamokul.pdf^$all +||img1.wsimg.com/blobby/go/657a2269-1311-41bc-be7f-365fba299599/downloads/14889765830.pdf^$all +||img1.wsimg.com/blobby/go/657a2269-1311-41bc-be7f-365fba299599/downloads/36407415595.pdf^$all +||img1.wsimg.com/blobby/go/657a2269-1311-41bc-be7f-365fba299599/downloads/acquisition_value_negative_in_area_01_aa617.pdf^$all +||img1.wsimg.com/blobby/go/657a2269-1311-41bc-be7f-365fba299599/downloads/cleavage_front_row_amy_measurements.pdf^$all +||img1.wsimg.com/blobby/go/657a2269-1311-41bc-be7f-365fba299599/downloads/how_to_write_letter_against_show_cause_notice.pdf^$all +||img1.wsimg.com/blobby/go/657a2269-1311-41bc-be7f-365fba299599/downloads/popezefere.pdf^$all +||img1.wsimg.com/blobby/go/663ae0bf-1142-4d7a-8653-755553f6852e/downloads/lejafarezafig.pdf^$all +||img1.wsimg.com/blobby/go/66a9f463-0ae0-4403-bef2-3061bb9e36ef/downloads/rate_list_of_test_in_dr.lal_pathlabs.pdf^$all +||img1.wsimg.com/blobby/go/6702c9de-d943-4d22-b78e-7985c91f7713/downloads/84525111813.pdf^$all +||img1.wsimg.com/blobby/go/670646a4-4ce8-4367-bccc-c52d2083c9a3/downloads/chronogramme_dune_these_de_doctorat.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/12922543008.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/15715958975.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/17465496427.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/20305303180.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/20322886839.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/21303726077.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/24459864622.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/2634956565.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/30072850819.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/30963207670.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/33251318472.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/36655168913.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/46578941429.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/57653563602.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/62404701972.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/66244318284.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/67856105857.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/72454635563.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/7694747911.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/83364999300.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/85845004614.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/86917927693.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/87483152555.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/89247847196.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/89849145142.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/95435099570.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/9840498620.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/99406712648.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/antibiotic_sensitivity_chart_sanford_guide.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/bevakabopodo.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/compassionate_leave_letter_examples.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/country_of_origin_letter_template.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/dasuxugolod.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/dungeon_crawl_classics.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/dupibutemuxubezukexe.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/elkonin_boxes_word_list.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/ending_a_lease_letter_to_landlord.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/examples_of_employee_goals_for_performance_review.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/exercises_for_trigger_thumb.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/gauss_elimination_method_example_with_solution.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/gibekewelodi.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/gomik.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/grammar_plus_class_8.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/incucyte_s3_user_guide.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/juporuko.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/katisugenifikipevas.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/koxisiranarigavod.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/lean_visual_management_board_examples.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/matunekuv.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/metric_bolt_specification_chart.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/nims_703_b_answers.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/nopurumonufulelu.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/padanad.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/passaic_county_technical_institute_salary_guide.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/paxakuvenu.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/pidipaxiworoguvosifap.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/renamotoxuxesike.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/rent_receipt_format_in_ms_word.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/resignation_letter_template_family_reasons.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/risukepidupapa.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/rofaruzev.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/rupesiduvunimekesozo.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/sap_fico_cutover_activities.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/temisipilotiba.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/tumiwujuluxuwaxi.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/vatalikuxigepiwu.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/wokaselu.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/xekinozu.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/xikesoxabafubuwepof.pdf^$all +||img1.wsimg.com/blobby/go/671d8571-de15-47bb-8cd8-b624751dbe0e/downloads/zabefenakozevopesomewazi.pdf^$all +||img1.wsimg.com/blobby/go/6787db73-833d-4393-867e-1b786eb5e101/downloads/60859753638.pdf^$all +||img1.wsimg.com/blobby/go/678cd2ef-32fa-4621-9c35-e4f34096b4ea/downloads/airbus_cml.pdf^$all +||img1.wsimg.com/blobby/go/686c0a2e-9a90-4936-9f96-7d72f3c65f03/downloads/54960661120.pdf^$all +||img1.wsimg.com/blobby/go/697088a1-6c9a-496e-9a4d-922308cd97be/downloads/24465842333.pdf^$all +||img1.wsimg.com/blobby/go/697088a1-6c9a-496e-9a4d-922308cd97be/downloads/42508658220.pdf^$all +||img1.wsimg.com/blobby/go/697088a1-6c9a-496e-9a4d-922308cd97be/downloads/98558988287.pdf^$all +||img1.wsimg.com/blobby/go/6974f1eb-71bf-4f90-8572-d8ac4e4f765d/downloads/wazakovefonetak.pdf^$all +||img1.wsimg.com/blobby/go/69da2f53-c229-4dc7-a889-7b67b52b1a78/downloads/nokejafowikazuvojoj.pdf^$all +||img1.wsimg.com/blobby/go/6ab86f22-a419-4e4f-91d4-5a654823f744/downloads/21711123451.pdf^$all +||img1.wsimg.com/blobby/go/6ab86f22-a419-4e4f-91d4-5a654823f744/downloads/pamolitix.pdf^$all +||img1.wsimg.com/blobby/go/6abf7f7e-d12c-48f3-aa9a-703f4ccff8d7/downloads/81403469667.pdf^$all +||img1.wsimg.com/blobby/go/6ae40ccb-f0fa-4b6b-bfcc-06032a30498c/downloads/logical_thinking_worksheets_for_kindergarten.pdf^$all +||img1.wsimg.com/blobby/go/6b07c7a9-24ea-41b4-835a-7daa4871c250/downloads/16_personality_factors_by_cattell.pdf^$all +||img1.wsimg.com/blobby/go/6bb5c8cf-e89d-49c0-aeeb-7278d39f6b32/downloads/fiche_grcf_bts_gpme.pdf^$all +||img1.wsimg.com/blobby/go/6be9a470-c465-4776-ab76-53713c51537a/downloads/30164245456.pdf^$all +||img1.wsimg.com/blobby/go/6be9a470-c465-4776-ab76-53713c51537a/downloads/nokura.pdf^$all +||img1.wsimg.com/blobby/go/6c9fdcec-b167-4620-b064-54b8917c32b8/downloads/57211354597.pdf^$all +||img1.wsimg.com/blobby/go/6cdacb6d-7fbf-4d09-a986-56cdfa4edeb2/downloads/15247939327.pdf^$all +||img1.wsimg.com/blobby/go/6cdacb6d-7fbf-4d09-a986-56cdfa4edeb2/downloads/5985868832.pdf^$all +||img1.wsimg.com/blobby/go/6e0acf5f-e652-447e-8a3a-90dcb81c48ee/downloads/loan_cancellation_letter.pdf^$all +||img1.wsimg.com/blobby/go/6ed9a7df-8325-4b88-b206-4975011bd8d3/downloads/73303046927.pdf^$all +||img1.wsimg.com/blobby/go/710760ab-5054-4fd2-86ee-e72953d604bd/downloads/26449761459.pdf^$all +||img1.wsimg.com/blobby/go/710760ab-5054-4fd2-86ee-e72953d604bd/downloads/jspdf_autotable_x_position.pdf^$all +||img1.wsimg.com/blobby/go/710760ab-5054-4fd2-86ee-e72953d604bd/downloads/mizoxuloniwi.pdf^$all +||img1.wsimg.com/blobby/go/710760ab-5054-4fd2-86ee-e72953d604bd/downloads/possession_letter_format_from_builder.pdf^$all +||img1.wsimg.com/blobby/go/710760ab-5054-4fd2-86ee-e72953d604bd/downloads/siemens_pcs_7_full_training_manual.pdf^$all +||img1.wsimg.com/blobby/go/710760ab-5054-4fd2-86ee-e72953d604bd/downloads/timex_expedition_indiglo_wr50m_manual.pdf^$all +||img1.wsimg.com/blobby/go/7153ec40-cd7f-411a-a08b-66d173a33455/downloads/standards_australia_handbook_197.pdf^$all +||img1.wsimg.com/blobby/go/71d9f42f-0bad-4406-8a48-95c698e57e68/downloads/98599689697.pdf^$all +||img1.wsimg.com/blobby/go/71d9f42f-0bad-4406-8a48-95c698e57e68/downloads/sumitomo_f50_compressor_manual.pdf^$all +||img1.wsimg.com/blobby/go/7219dffe-e0ab-4b31-b3e7-77acd35b52f5/downloads/73769466656.pdf^$all +||img1.wsimg.com/blobby/go/7219dffe-e0ab-4b31-b3e7-77acd35b52f5/downloads/79599984772.pdf^$all +||img1.wsimg.com/blobby/go/7219dffe-e0ab-4b31-b3e7-77acd35b52f5/downloads/fivojudu.pdf^$all +||img1.wsimg.com/blobby/go/7219dffe-e0ab-4b31-b3e7-77acd35b52f5/downloads/jotepebuzixulelomizo.pdf^$all +||img1.wsimg.com/blobby/go/7219dffe-e0ab-4b31-b3e7-77acd35b52f5/downloads/kapabemirowajuzaxadirokef.pdf^$all +||img1.wsimg.com/blobby/go/7219dffe-e0ab-4b31-b3e7-77acd35b52f5/downloads/suritotowid.pdf^$all +||img1.wsimg.com/blobby/go/72502959-bd3f-431c-9582-055fb0eb9e9d/downloads/duff_and_phelps_size_premium_2022.pdf^$all +||img1.wsimg.com/blobby/go/72502959-bd3f-431c-9582-055fb0eb9e9d/downloads/nike_employee_benefits.pdf^$all +||img1.wsimg.com/blobby/go/72502959-bd3f-431c-9582-055fb0eb9e9d/downloads/vw_gehaltstabelle_2022.pdf^$all +||img1.wsimg.com/blobby/go/725aea16-586d-4b26-8216-cd50b4981a76/downloads/wiley_organic_chemistry_solutions_manual.pdf^$all +||img1.wsimg.com/blobby/go/72cc53f9-3bf4-447c-963a-353f48ad8500/downloads/puwutokok.pdf^$all +||img1.wsimg.com/blobby/go/72fc6eb8-20de-4439-bced-6bfc7eecaa8e/downloads/bogev.pdf^$all +||img1.wsimg.com/blobby/go/738cd3ca-10f0-4f1e-865e-c0932904fbb2/downloads/28412734415.pdf^$all +||img1.wsimg.com/blobby/go/7399f648-106b-4174-b8c0-6d6694895ad3/downloads/vakoxumem.pdf^$all +||img1.wsimg.com/blobby/go/739cff78-28a4-4749-8c7f-abf371b6a947/downloads/62789327536.pdf^$all +||img1.wsimg.com/blobby/go/7518eff6-349e-4445-8380-e1c43aacea7b/downloads/gemudewefedevovep.pdf^$all +||img1.wsimg.com/blobby/go/7539d3e4-198a-4c91-addc-38e6066bfe55/downloads/2305786492.pdf^$all +||img1.wsimg.com/blobby/go/7592d1e2-3dca-48f2-9f42-bb08c23dfb67/downloads/zutav.pdf^$all +||img1.wsimg.com/blobby/go/7662afb9-5d02-4eb9-bd3b-6426a66215ee/downloads/2312138967.pdf^$all +||img1.wsimg.com/blobby/go/76c40511-888a-4b14-bb65-87429974a9ff/downloads/gemotukuwitawusagulobez.pdf^$all +||img1.wsimg.com/blobby/go/78c14b69-39ed-4d94-8d63-a7b29776e43c/downloads/45524925955.pdf^$all +||img1.wsimg.com/blobby/go/78c14b69-39ed-4d94-8d63-a7b29776e43c/downloads/radix_temperature_controller_x_48_manual.pdf^$all +||img1.wsimg.com/blobby/go/78dac1c1-e6f9-4066-ad39-7cbcdc39e651/downloads/93448099882.pdf^$all +||img1.wsimg.com/blobby/go/7913e2d4-0776-44f0-af91-53eb35e22f50/downloads/broken_sous_ta_peau_2_ekladata.pdf^$all +||img1.wsimg.com/blobby/go/7a3b63b5-3e6a-48ac-8e49-14ed0037cbc4/downloads/historietas_del_medio_ambiente_largas.pdf^$all +||img1.wsimg.com/blobby/go/7a3b63b5-3e6a-48ac-8e49-14ed0037cbc4/downloads/hitachi_cd_sem_operation_manual.pdf^$all +||img1.wsimg.com/blobby/go/7a69ed85-566a-4d22-8bd3-47a8a314b3bf/downloads/baropuzijavalerivotenujop.pdf^$all +||img1.wsimg.com/blobby/go/7a69ed85-566a-4d22-8bd3-47a8a314b3bf/downloads/molecular_mass_of_elements_list.pdf^$all +||img1.wsimg.com/blobby/go/7c3d6560-d229-4015-8af2-a70ad89bde0a/downloads/80071621679.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/10269055308.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/11012613986.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/11677680583.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/17054728623.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/2251478862.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/27590969755.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/31075581028.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/319984769.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/35713869772.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/36054141231.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/36770579775.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/41138401642.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/44443741873.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/45659404876.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/54016191818.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/5528845131.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/55669141050.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/60272662631.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/6098867423.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/61705749605.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/62228929609.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/6554737977.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/65604431763.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/72065953692.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/7215421885.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/72445144906.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/82647770508.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/83838390139.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/87554570559.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/88817028453.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/91812224211.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/92007305293.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/93759555539.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/98444125074.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/99401481523.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/99737319160.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/aspen_pims_manual.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/astonishment_report_example_template_free.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/atividades_de_concordancia_verbal_5o_ano_com_gabarito.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/atpco_fare_filing_manual_s.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/banksman_hand_signals.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/baroque_guitar_tab.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/biwejukajurel.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/bonunorovekofa.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/bucharest_grill_nutrition_information.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/butterfly_roof_construction_detail.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/capacitor_bank_preventive_maintenance_checklist.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/carte_du_voyage_d_ulysse.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/cessna_172_instrument_panel_layout.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/chambre_de_tirage_telecom.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/citadel_document_solutions_lawsuit.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/corporate_signature_authority_matrix_template_printable.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/denutetoraditut.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/diamond_sieve_chart.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/downgrade_oracle_database_from_19c_to_11g.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/educational_leadership_philosophy_examples.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/euchre_score_sheets_for_16_players.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/everstart_750_amp_jump_starter_manual.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/exemple_de_dossier_raep_redige.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/exemple_de_livret_2_vae_rempli.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/exercice_vitesse_6eme_physique.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/fedex_air_waybill_form.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/formato_st-4_imss_para_imprimir.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/fumaxogufav.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/gasanon.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/geruzirejexexani.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/gumofeke.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/harry_potter_ea_camara_secreta_ilustrado.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/holman_enterprises_annual_report.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/how_to_cancel_print_job_on_zebra_gk420d.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/how_to_get_a_wire_transfer_receipt_chase.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/jodegemotekuseve.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/jw_public_talk_outlines.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/kasupobuwomubafujos.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/kaxajopisojurivo.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/kekososiwixokaz.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/kudokexogikekuporeso.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/kulefenev.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/kumujadirifokekikivexe.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/lapeke.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/laxokuzigurebudisinatonu.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/lemowegigusazisalelupo.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/lobigexapi.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/lokodemerukezabakexa.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/majisumilorenanevivo.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/mapisirukuw.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/maxabamuxixotabevifutiw.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/meravinuvisudome.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/minetest_wiki_commands.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/mobesapovasag.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/modelo_carta_entrega_de_inmueble_word.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/mosodekasaxozebopajebibe.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/muxem.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/navy_uic_code_list.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/nefusajoxepisajejod.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/nidugapageru.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/nipipuk.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/nolovafitavire.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/pass_the_pigs_scoring_sheet.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/pibajusapasadasizuvabo.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/pigogini.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/pisaxafubavofi.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/plan_technique_piscine_a_debordement.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/planet_fitness_membership_cancellation_letter.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/poquito_mas_nutrition_facts.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/porebejotenojudud.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/pubobagawu.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/pulse_secure_network_error_1329.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/rapport_de_stage_3eme_agence_immobiliere.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/records_of_declaration_disbursements_division.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/redoripedigi.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/rewekawejujawidubekafebur.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/rikisiwudepelapopazi.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/rodudiniruzawame.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/sanugesijeviwo.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/satyanarayan_puja_vidhi_in_sanskrit.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/seaworld_donation_request_orlando.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/simamutozudolejezeze.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/sirijega.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/siwevewedelo.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/sowuluxoranevoxivobu.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/suvuraxelikubok.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/swot_analysis_for_poultry_farming.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/telcordia_sr_332_issue_4.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/testing_and_commissioning_of_electrical_equipment.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/the_long_dark_crumbling_highway_map.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/tifunakarexefeguwitoda.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/tosca_automation_specialist_level_2_certification_questions_.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/tozivagal.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/traffic_light_risk_assessment_template_mental_health.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/tutorialspoint_sap_pp.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/vupegazezo.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/watiwime.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/weguma.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/wewofolivofometu.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/wikuzidip.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/wofewipawo.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/zasuporuxumuza.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/zesowafasunufezef.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/zikirifusotuxusomel.pdf^$all +||img1.wsimg.com/blobby/go/7c4463e3-109c-48af-b9be-98e22cdf2116/downloads/zutufukatozoxogunubikok.pdf^$all +||img1.wsimg.com/blobby/go/7c4e8158-a082-4b1f-960e-1d82a946a72b/downloads/76239393989.pdf^$all +||img1.wsimg.com/blobby/go/7ce549e8-3051-428a-a71b-b48f204ac3cd/downloads/rapid_router_level_43_solution.pdf^$all +||img1.wsimg.com/blobby/go/7dda8154-e680-4c60-8651-19cf13768d49/downloads/jadol.pdf^$all +||img1.wsimg.com/blobby/go/7eafcf9d-33bd-4fd4-8489-654d240ab2f3/downloads/38053692779.pdf^$all +||img1.wsimg.com/blobby/go/7eafcf9d-33bd-4fd4-8489-654d240ab2f3/downloads/51295545026.pdf^$all +||img1.wsimg.com/blobby/go/7eafcf9d-33bd-4fd4-8489-654d240ab2f3/downloads/6130931006.pdf^$all +||img1.wsimg.com/blobby/go/7ebcf742-ccb2-4edb-bbc1-6f67ead5b604/downloads/23776368177.pdf^$all +||img1.wsimg.com/blobby/go/7ebcf742-ccb2-4edb-bbc1-6f67ead5b604/downloads/43589756342.pdf^$all +||img1.wsimg.com/blobby/go/7ebcf742-ccb2-4edb-bbc1-6f67ead5b604/downloads/57326063662.pdf^$all +||img1.wsimg.com/blobby/go/7ebcf742-ccb2-4edb-bbc1-6f67ead5b604/downloads/90213521835.pdf^$all +||img1.wsimg.com/blobby/go/7ebcf742-ccb2-4edb-bbc1-6f67ead5b604/downloads/96273346643.pdf^$all +||img1.wsimg.com/blobby/go/7ebcf742-ccb2-4edb-bbc1-6f67ead5b604/downloads/97640682614.pdf^$all +||img1.wsimg.com/blobby/go/7ebcf742-ccb2-4edb-bbc1-6f67ead5b604/downloads/baxejatoxenidomixidedax.pdf^$all +||img1.wsimg.com/blobby/go/7ebcf742-ccb2-4edb-bbc1-6f67ead5b604/downloads/kawopixar.pdf^$all +||img1.wsimg.com/blobby/go/7ebcf742-ccb2-4edb-bbc1-6f67ead5b604/downloads/makusikarubikowaxosop.pdf^$all +||img1.wsimg.com/blobby/go/7ebcf742-ccb2-4edb-bbc1-6f67ead5b604/downloads/sample_letter_to_be_excused_from_jury_service.pdf^$all +||img1.wsimg.com/blobby/go/7f34267e-2563-449a-82e3-60f19988c45d/downloads/lic_jeevan_saral_plan_165_chart.pdf^$all +||img1.wsimg.com/blobby/go/800bda9c-ed1b-45a1-a7d5-702e4e14f980/downloads/pmp_42_processes_chart.pdf^$all +||img1.wsimg.com/blobby/go/800cff82-04ba-4c47-9f8b-d21367acb04d/downloads/84098559127.pdf^$all +||img1.wsimg.com/blobby/go/800cff82-04ba-4c47-9f8b-d21367acb04d/downloads/all_gujarati_magazine.pdf^$all +||img1.wsimg.com/blobby/go/800cff82-04ba-4c47-9f8b-d21367acb04d/downloads/sabre_red_workspace_commands.pdf^$all +||img1.wsimg.com/blobby/go/8014aeaa-17b8-4bcd-a9d7-094ad1ff7644/downloads/19999334835.pdf^$all +||img1.wsimg.com/blobby/go/8014aeaa-17b8-4bcd-a9d7-094ad1ff7644/downloads/fusoze.pdf^$all +||img1.wsimg.com/blobby/go/804274b4-5f10-4c26-9de6-df56f38aac7c/downloads/14312384720.pdf^$all +||img1.wsimg.com/blobby/go/804274b4-5f10-4c26-9de6-df56f38aac7c/downloads/20643132370.pdf^$all +||img1.wsimg.com/blobby/go/804274b4-5f10-4c26-9de6-df56f38aac7c/downloads/attestation_de_non_affiliation_cnas_algerie.pdf^$all +||img1.wsimg.com/blobby/go/80e9e7c7-d97b-4b5a-96c4-9a83854a3065/downloads/35740879646.pdf^$all +||img1.wsimg.com/blobby/go/80e9e7c7-d97b-4b5a-96c4-9a83854a3065/downloads/vuzabovamipavowaseke.pdf^$all +||img1.wsimg.com/blobby/go/81f7a7ad-d4fe-4147-943f-584c2d1e9bf5/downloads/because_of_mr_terupt_online.pdf^$all +||img1.wsimg.com/blobby/go/82f97436-460c-45aa-bd9b-74a87c48e9b0/downloads/63541235931.pdf^$all +||img1.wsimg.com/blobby/go/82f97436-460c-45aa-bd9b-74a87c48e9b0/downloads/73577237968.pdf^$all +||img1.wsimg.com/blobby/go/82f97436-460c-45aa-bd9b-74a87c48e9b0/downloads/hadoop_notes_by_durgasoft_ramakrishna.pdf^$all +||img1.wsimg.com/blobby/go/82f97436-460c-45aa-bd9b-74a87c48e9b0/downloads/lowasa.pdf^$all +||img1.wsimg.com/blobby/go/82f97436-460c-45aa-bd9b-74a87c48e9b0/downloads/narigokukeminozitema.pdf^$all +||img1.wsimg.com/blobby/go/82f97436-460c-45aa-bd9b-74a87c48e9b0/downloads/vmware_horizon_not_loading.pdf^$all +||img1.wsimg.com/blobby/go/83df8ca9-16c2-4244-8f9e-8be918c4b8a3/downloads/86611585002.pdf^$all +||img1.wsimg.com/blobby/go/8439ca10-a5ac-4299-aa09-54ab615a2090/downloads/bozagororaxurivir.pdf^$all +||img1.wsimg.com/blobby/go/8532eb1d-13c2-4756-9d41-225750b056f4/downloads/litimuwabu.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/10908647555.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/45596981954.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/76236294804.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/79427765137.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/80200009732.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/87076889980.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/87218120165.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/actaris_meter_manual.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/bisebinalujivefiwugagabu.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/fiselarodinolapin.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/kitab_shams_al_maarif.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/wapurexep.pdf^$all +||img1.wsimg.com/blobby/go/88933df5-ca10-43b5-b140-6aa02868b89c/downloads/woleb.pdf^$all +||img1.wsimg.com/blobby/go/8aa13dbf-c0c5-4fe7-ae15-62e5c33a20e4/downloads/hewlett-packard_18e7_motherboard_specs.pdf^$all +||img1.wsimg.com/blobby/go/8c16f145-4fc0-4af7-a4db-de4acd818fe4/downloads/14431999044.pdf^$all +||img1.wsimg.com/blobby/go/8c16f145-4fc0-4af7-a4db-de4acd818fe4/downloads/46429707192.pdf^$all +||img1.wsimg.com/blobby/go/8df58291-e0db-425a-9cda-a9882386ada6/downloads/24365322622.pdf^$all +||img1.wsimg.com/blobby/go/8df58291-e0db-425a-9cda-a9882386ada6/downloads/jaladimurefasetuzukiwaxit.pdf^$all +||img1.wsimg.com/blobby/go/8e32f5a5-6a1a-4ade-b57e-fa54871724ef/downloads/2040244551.pdf^$all +||img1.wsimg.com/blobby/go/8e46fb0c-8d21-4b8c-82fc-88315c96ddde/downloads/bevurusip.pdf^$all +||img1.wsimg.com/blobby/go/8f5eeb54-04ec-4a30-bb55-41e413d1f3ed/downloads/open_pit_mine_planning_and_design.pdf^$all +||img1.wsimg.com/blobby/go/8f97cb07-1cfa-4fca-b6d8-3f1bf47f56b3/downloads/dulerugufep.pdf^$all +||img1.wsimg.com/blobby/go/8fc62093-f93e-447d-8e21-b1e235f4d9cc/downloads/cibse_psychrometric_chart.pdf^$all +||img1.wsimg.com/blobby/go/8fc62093-f93e-447d-8e21-b1e235f4d9cc/downloads/vadigoxevujo.pdf^$all +||img1.wsimg.com/blobby/go/900d123a-2557-4fa9-92f6-1446b602b979/downloads/deporiramuga.pdf^$all +||img1.wsimg.com/blobby/go/90dc87b4-fd7e-4412-9a6a-76e20db16dbd/downloads/23425133870.pdf^$all +||img1.wsimg.com/blobby/go/91a706e9-d066-47d7-89af-69535d865c3d/downloads/carteirinha_de_estudante_falsa_em.pdf^$all +||img1.wsimg.com/blobby/go/9213334f-b8c6-41b2-903d-dc8cc5791a0a/downloads/49429599069.pdf^$all +||img1.wsimg.com/blobby/go/921a43a6-1495-4d95-bdb1-69b79162b826/downloads/13397059696.pdf^$all +||img1.wsimg.com/blobby/go/92c7bb30-769c-4722-92cc-8b01b59910e0/downloads/36512394005.pdf^$all +||img1.wsimg.com/blobby/go/933c3405-1572-4648-b39e-d98567eb5bee/downloads/for_your_kind_perusal_and_necessary_action_meaning.pdf^$all +||img1.wsimg.com/blobby/go/937a3a5d-28a9-4a6d-983b-63f9d4fe1460/downloads/90328489234.pdf^$all +||img1.wsimg.com/blobby/go/9390f2de-e8f5-48e5-8f1b-3aa5affb2913/downloads/ra_to_surface_finish.pdf^$all +||img1.wsimg.com/blobby/go/93a7eb93-9eef-4244-8f20-7f48de1f8294/downloads/95493308607.pdf^$all +||img1.wsimg.com/blobby/go/93a7eb93-9eef-4244-8f20-7f48de1f8294/downloads/rikeleneliteta.pdf^$all +||img1.wsimg.com/blobby/go/9441f8ad-6e79-4d4a-9602-3585b1269b7e/downloads/dajagunowe.pdf^$all +||img1.wsimg.com/blobby/go/9441f8ad-6e79-4d4a-9602-3585b1269b7e/downloads/kobumedigudopixemevuwef.pdf^$all +||img1.wsimg.com/blobby/go/9483bc30-bb1c-4c04-9cf3-38d205924dab/downloads/jugilususosu.pdf^$all +||img1.wsimg.com/blobby/go/94e1955e-c7d2-4e11-a6ac-7a5ec652d6cd/downloads/suzuki_dt4_owners_manual.pdf^$all +||img1.wsimg.com/blobby/go/950f7924-fa6b-44be-bda3-22eaf526f43f/downloads/how_to_write_a_letter_to_society_for_car_parking.pdf^$all +||img1.wsimg.com/blobby/go/950f7924-fa6b-44be-bda3-22eaf526f43f/downloads/konujidav.pdf^$all +||img1.wsimg.com/blobby/go/9569c183-65dc-4f14-a45e-e7944584cb65/downloads/58650400832.pdf^$all +||img1.wsimg.com/blobby/go/9569c183-65dc-4f14-a45e-e7944584cb65/downloads/bifidetogatovotuwideki.pdf^$all +||img1.wsimg.com/blobby/go/963d457e-5dea-4a7e-aae8-47aada2a7cc0/downloads/36202936872.pdf^$all +||img1.wsimg.com/blobby/go/963d457e-5dea-4a7e-aae8-47aada2a7cc0/downloads/velafeke.pdf^$all +||img1.wsimg.com/blobby/go/96b6a2f4-8317-413b-a7e3-44adb2eb81f5/downloads/demande_d_allocation_chomage_pole_emploi.pdf^$all +||img1.wsimg.com/blobby/go/96b6a2f4-8317-413b-a7e3-44adb2eb81f5/downloads/safari_magazine_2019_download.pdf^$all +||img1.wsimg.com/blobby/go/96d7062c-715f-4c9e-82c2-ac322bf04d1a/downloads/fawafep.pdf^$all +||img1.wsimg.com/blobby/go/96f90b6e-3939-4cac-a3ad-eba9fb8219bf/downloads/71599608952.pdf^$all +||img1.wsimg.com/blobby/go/971e893d-d96e-4c35-b8d0-897850ea3ce6/downloads/ice_quarterly_development_report_example.pdf^$all +||img1.wsimg.com/blobby/go/97fcff61-ad1b-4591-bfda-ed7d6d6690f0/downloads/49593663309.pdf^$all +||img1.wsimg.com/blobby/go/98571e96-4bd9-4ee2-bb76-481ac550907e/downloads/genebugutisevijuk.pdf^$all +||img1.wsimg.com/blobby/go/988c0021-e131-496b-8725-ae310052894b/downloads/berakigevep.pdf^$all +||img1.wsimg.com/blobby/go/98a1791f-f3a9-4ef2-ac34-41b3393c3d1d/downloads/original_documents_handover_letter_format.pdf^$all +||img1.wsimg.com/blobby/go/98e3e4d1-65d1-414f-a2f4-24701527da4a/downloads/1567746722.pdf^$all +||img1.wsimg.com/blobby/go/98e3e4d1-65d1-414f-a2f4-24701527da4a/downloads/32575227287.pdf^$all +||img1.wsimg.com/blobby/go/98e3e4d1-65d1-414f-a2f4-24701527da4a/downloads/danokubiwen.pdf^$all +||img1.wsimg.com/blobby/go/98e3e4d1-65d1-414f-a2f4-24701527da4a/downloads/eating_questionnaire-_a_ede-a_scoring.pdf^$all +||img1.wsimg.com/blobby/go/98e3e4d1-65d1-414f-a2f4-24701527da4a/downloads/evaluation_geographie_6eme_habiter_une_metropole.pdf^$all +||img1.wsimg.com/blobby/go/98e3e4d1-65d1-414f-a2f4-24701527da4a/downloads/milagetuxinofu.pdf^$all +||img1.wsimg.com/blobby/go/98e3e4d1-65d1-414f-a2f4-24701527da4a/downloads/sasufazovosonufowam.pdf^$all +||img1.wsimg.com/blobby/go/98e3e4d1-65d1-414f-a2f4-24701527da4a/downloads/types_of_lines_in_construction_drawings.pdf^$all +||img1.wsimg.com/blobby/go/98fd26ea-5c50-4ebf-945e-7ed158ebe1b6/downloads/75925905792.pdf^$all +||img1.wsimg.com/blobby/go/98fd26ea-5c50-4ebf-945e-7ed158ebe1b6/downloads/workplace_printable_hurt_feelings_report.pdf^$all +||img1.wsimg.com/blobby/go/990799bc-d23a-46ce-a09a-3161937bf907/downloads/50013116393.pdf^$all +||img1.wsimg.com/blobby/go/990799bc-d23a-46ce-a09a-3161937bf907/downloads/54308720858.pdf^$all +||img1.wsimg.com/blobby/go/990799bc-d23a-46ce-a09a-3161937bf907/downloads/75213021290.pdf^$all +||img1.wsimg.com/blobby/go/990799bc-d23a-46ce-a09a-3161937bf907/downloads/basimonuje.pdf^$all +||img1.wsimg.com/blobby/go/990799bc-d23a-46ce-a09a-3161937bf907/downloads/rolinejagogid.pdf^$all +||img1.wsimg.com/blobby/go/990799bc-d23a-46ce-a09a-3161937bf907/downloads/table_trigonometrique_complet.pdf^$all +||img1.wsimg.com/blobby/go/990799bc-d23a-46ce-a09a-3161937bf907/downloads/verismo_701_service_manual.pdf^$all +||img1.wsimg.com/blobby/go/9927c1c5-c61c-4f5e-807e-67bd1833b3e4/downloads/2687436544.pdf^$all +||img1.wsimg.com/blobby/go/9927c1c5-c61c-4f5e-807e-67bd1833b3e4/downloads/nijalox.pdf^$all +||img1.wsimg.com/blobby/go/9971747c-d991-46ae-b932-5ba73958e604/downloads/fojajexuretimototatoles.pdf^$all +||img1.wsimg.com/blobby/go/9978fe41-dbcb-4b88-8a80-a839de3f86b5/downloads/42576721881.pdf^$all +||img1.wsimg.com/blobby/go/9a32841c-0d54-4ad0-8acd-a5b15c41cae1/downloads/luxutevosevuke.pdf^$all +||img1.wsimg.com/blobby/go/9a32841c-0d54-4ad0-8acd-a5b15c41cae1/downloads/nagpur_metro_phase_2_dpr.pdf^$all +||img1.wsimg.com/blobby/go/9c30937d-c8da-4e7b-9f7a-432344b46400/downloads/3262231356.pdf^$all +||img1.wsimg.com/blobby/go/9c30937d-c8da-4e7b-9f7a-432344b46400/downloads/jubomumifekomu.pdf^$all +||img1.wsimg.com/blobby/go/9c30937d-c8da-4e7b-9f7a-432344b46400/downloads/xuguxupevubitutuzoju.pdf^$all +||img1.wsimg.com/blobby/go/9c8a6489-894f-4446-8722-19ef31b6a173/downloads/26803015720.pdf^$all +||img1.wsimg.com/blobby/go/9d0d7648-4006-4e9a-bf4e-cd4f5c534844/downloads/socomec_ups_service_manual.pdf^$all +||img1.wsimg.com/blobby/go/9db526fb-d62a-447a-9766-8665158ad47a/downloads/skf_linear_bearing_catalogue.pdf^$all +||img1.wsimg.com/blobby/go/9dc6fd8e-b629-406d-be34-231dfc94d5e9/downloads/catia_v5_simulation_tutorial.pdf^$all +||img1.wsimg.com/blobby/go/9e5b6b40-f934-4273-a65f-cbaee9aa4b00/downloads/14203617612.pdf^$all +||img1.wsimg.com/blobby/go/9e5b6b40-f934-4273-a65f-cbaee9aa4b00/downloads/9665669589.pdf^$all +||img1.wsimg.com/blobby/go/9e5b6b40-f934-4273-a65f-cbaee9aa4b00/downloads/xikapataxofako.pdf^$all +||img1.wsimg.com/blobby/go/9f11cc6f-a645-4f71-bee4-e3848f35abf2/downloads/livro_domain_driven_design_portugues.pdf^$all +||img1.wsimg.com/blobby/go/9f11cc6f-a645-4f71-bee4-e3848f35abf2/downloads/mojijodexiv.pdf^$all +||img1.wsimg.com/blobby/go/9f2acd38-413e-47a5-ac42-d6305581bfab/downloads/logerafanekox.pdf^$all +||img1.wsimg.com/blobby/go/9f4350e3-635b-45ba-b69f-b1a7e95f309e/downloads/24638138520.pdf^$all +||img1.wsimg.com/blobby/go/a03fd264-622c-49da-819e-92c49cdd5e2b/downloads/xovifubakuforij.pdf^$all +||img1.wsimg.com/blobby/go/a0620227-6f33-427f-8ac7-1fb80d24bd78/downloads/loxabafefomukewizirefa.pdf^$all +||img1.wsimg.com/blobby/go/a0b0ee5f-47ab-407d-8f2e-b86a71eb1b80/downloads/cerere_demisie_fara_preaviz.pdf^$all +||img1.wsimg.com/blobby/go/a0b0ee5f-47ab-407d-8f2e-b86a71eb1b80/downloads/luxodebapiruwuneragomugef.pdf^$all +||img1.wsimg.com/blobby/go/a19a3dcf-f832-45fe-91ff-ed566d492286/downloads/31803450103.pdf^$all +||img1.wsimg.com/blobby/go/a1b48068-f219-4487-b633-0ea4f25dfa5f/downloads/57025089155.pdf^$all +||img1.wsimg.com/blobby/go/a37e9011-77af-43eb-9e7b-dd6853450512/downloads/27721436213.pdf^$all +||img1.wsimg.com/blobby/go/a37e9011-77af-43eb-9e7b-dd6853450512/downloads/les_jours_de_la_semaine_exercices.pdf^$all +||img1.wsimg.com/blobby/go/a37fc73a-27ae-4e8d-87b6-7c807b298be6/downloads/85925649248.pdf^$all +||img1.wsimg.com/blobby/go/a37fc73a-27ae-4e8d-87b6-7c807b298be6/downloads/86119351354.pdf^$all +||img1.wsimg.com/blobby/go/a3d7189d-efc6-47e1-bbe5-dc5eeaf610a0/downloads/rtca_do-160g.pdf^$all +||img1.wsimg.com/blobby/go/a435afa7-bc93-481f-8a35-ce503cc8a972/downloads/sri_rudram_namakam_chamakam_tamil.pdf^$all +||img1.wsimg.com/blobby/go/a4c519f1-5301-485e-9e9c-56d1397df289/downloads/79371210580.pdf^$all +||img1.wsimg.com/blobby/go/a56a106f-21b9-46c2-b5bc-12461919334c/downloads/vurarufa.pdf^$all +||img1.wsimg.com/blobby/go/a580c741-29a0-435a-a011-6aa538a5edae/downloads/25870917787.pdf^$all +||img1.wsimg.com/blobby/go/a5a93100-d349-4291-8bce-18547efeb268/downloads/14773335318.pdf^$all +||img1.wsimg.com/blobby/go/a5d43283-67be-4a3b-9041-1427b691166f/downloads/dotadaxokokimidupoz.pdf^$all +||img1.wsimg.com/blobby/go/a618ca0f-2608-47c2-ab22-bbc2ca127bb7/downloads/saziva.pdf^$all +||img1.wsimg.com/blobby/go/a6301bc9-fbf1-4861-936b-8ce401d46d09/downloads/non_renewal_of_contract_letter_sample.pdf^$all +||img1.wsimg.com/blobby/go/a74441e7-424c-4454-9bc5-28c3682f6c16/downloads/jupifevaperoziput.pdf^$all +||img1.wsimg.com/blobby/go/a7c970be-6487-407b-ae67-0318aa6bed96/downloads/19932307165.pdf^$all +||img1.wsimg.com/blobby/go/a85f54ee-11f7-4ab3-9970-dabd8f52d583/downloads/vowivovabafases.pdf^$all +||img1.wsimg.com/blobby/go/a8a7b266-73df-492a-af50-f7d9f90e0e6d/downloads/salesforce_community_developer_guide.pdf^$all +||img1.wsimg.com/blobby/go/aa25c895-a966-4265-aeb1-bc094284554e/downloads/jifig.pdf^$all +||img1.wsimg.com/blobby/go/aa44ab49-4d64-4d64-8bfd-2dfce545052f/downloads/limitations_act_2004_nigeria.pdf^$all +||img1.wsimg.com/blobby/go/aa930190-2e12-4ce7-8bd7-0454f2ef6721/downloads/remonstration_visum_ablehnung_muster.pdf^$all +||img1.wsimg.com/blobby/go/aabc5eee-c1de-4817-92b9-f9e17352a5c7/downloads/35512569741.pdf^$all +||img1.wsimg.com/blobby/go/aabc5eee-c1de-4817-92b9-f9e17352a5c7/downloads/76135669664.pdf^$all +||img1.wsimg.com/blobby/go/aabc5eee-c1de-4817-92b9-f9e17352a5c7/downloads/fajupip.pdf^$all +||img1.wsimg.com/blobby/go/aabc5eee-c1de-4817-92b9-f9e17352a5c7/downloads/gikuxuze.pdf^$all +||img1.wsimg.com/blobby/go/aabc5eee-c1de-4817-92b9-f9e17352a5c7/downloads/how_to_factory_reset_verifone_mx915.pdf^$all +||img1.wsimg.com/blobby/go/aabc5eee-c1de-4817-92b9-f9e17352a5c7/downloads/jaziz.pdf^$all +||img1.wsimg.com/blobby/go/aabc5eee-c1de-4817-92b9-f9e17352a5c7/downloads/lotumajufinunixine.pdf^$all +||img1.wsimg.com/blobby/go/aabc5eee-c1de-4817-92b9-f9e17352a5c7/downloads/ludirov.pdf^$all +||img1.wsimg.com/blobby/go/aabc5eee-c1de-4817-92b9-f9e17352a5c7/downloads/najufijirubedejalu.pdf^$all +||img1.wsimg.com/blobby/go/aabc5eee-c1de-4817-92b9-f9e17352a5c7/downloads/wofalobomosotanavuze.pdf^$all +||img1.wsimg.com/blobby/go/aabc5eee-c1de-4817-92b9-f9e17352a5c7/downloads/wudofe.pdf^$all +||img1.wsimg.com/blobby/go/ab158387-fd14-4136-be83-18d2feafd209/downloads/regonadafufosofujerijasur.pdf^$all +||img1.wsimg.com/blobby/go/abfe7a1b-25f4-4ff2-8fb5-155a264c8ce4/downloads/2818265442.pdf^$all +||img1.wsimg.com/blobby/go/abfe7a1b-25f4-4ff2-8fb5-155a264c8ce4/downloads/29389545569.pdf^$all +||img1.wsimg.com/blobby/go/abfe7a1b-25f4-4ff2-8fb5-155a264c8ce4/downloads/41821413009.pdf^$all +||img1.wsimg.com/blobby/go/abfe7a1b-25f4-4ff2-8fb5-155a264c8ce4/downloads/76488986948.pdf^$all +||img1.wsimg.com/blobby/go/abfe7a1b-25f4-4ff2-8fb5-155a264c8ce4/downloads/86649529175.pdf^$all +||img1.wsimg.com/blobby/go/abfe7a1b-25f4-4ff2-8fb5-155a264c8ce4/downloads/famous_athletes_banned_for_drug_use.pdf^$all +||img1.wsimg.com/blobby/go/abfe7a1b-25f4-4ff2-8fb5-155a264c8ce4/downloads/fosodevo.pdf^$all +||img1.wsimg.com/blobby/go/abfe7a1b-25f4-4ff2-8fb5-155a264c8ce4/downloads/how_to_change_font_size_in_xchange_editor.pdf^$all +||img1.wsimg.com/blobby/go/abfe7a1b-25f4-4ff2-8fb5-155a264c8ce4/downloads/likibixeve.pdf^$all +||img1.wsimg.com/blobby/go/abfe7a1b-25f4-4ff2-8fb5-155a264c8ce4/downloads/miludafat.pdf^$all +||img1.wsimg.com/blobby/go/abfe7a1b-25f4-4ff2-8fb5-155a264c8ce4/downloads/payment_under_protest_letter_sample.pdf^$all +||img1.wsimg.com/blobby/go/ac62f849-5623-435a-93ad-86e4d8edc83e/downloads/90625111849.pdf^$all +||img1.wsimg.com/blobby/go/ac66f4da-754b-4df9-b080-4728fb201349/downloads/nimoma.pdf^$all +||img1.wsimg.com/blobby/go/acb19439-02ad-48ae-a6e4-8c3bfce04694/downloads/32470708569.pdf^$all +||img1.wsimg.com/blobby/go/adb32098-1c7a-4519-9e53-ced990fc5d88/downloads/kuniwuzujujurejovewo.pdf^$all +||img1.wsimg.com/blobby/go/add57eeb-0480-4d3e-871c-79d9b8fe2772/downloads/lozataroziwukurejigax.pdf^$all +||img1.wsimg.com/blobby/go/adfd48e6-08dc-41dd-a2a1-45489e329c75/downloads/attestation_de_non_affiliation_cnas.pdf^$all +||img1.wsimg.com/blobby/go/af067739-2dfe-40f3-ae00-a758e587d7d3/downloads/61105974714.pdf^$all +||img1.wsimg.com/blobby/go/af067739-2dfe-40f3-ae00-a758e587d7d3/downloads/wepepuv.pdf^$all +||img1.wsimg.com/blobby/go/af0be9d0-b995-4f2a-8f66-25f04f50db42/downloads/rubetugetafapojopodibom.pdf^$all +||img1.wsimg.com/blobby/go/af0be9d0-b995-4f2a-8f66-25f04f50db42/downloads/tejovejujepotobafoba.pdf^$all +||img1.wsimg.com/blobby/go/b071d266-376f-40c9-bb70-11ca77d8051b/downloads/36008974689.pdf^$all +||img1.wsimg.com/blobby/go/b298ce5b-3c11-48f0-9704-0e059e7cfa1a/downloads/26417869572.pdf^$all +||img1.wsimg.com/blobby/go/b298ce5b-3c11-48f0-9704-0e059e7cfa1a/downloads/71423402684.pdf^$all +||img1.wsimg.com/blobby/go/b298ce5b-3c11-48f0-9704-0e059e7cfa1a/downloads/90645579432.pdf^$all +||img1.wsimg.com/blobby/go/b298ce5b-3c11-48f0-9704-0e059e7cfa1a/downloads/example_of_a_lobola_letter_in_zulu.pdf^$all +||img1.wsimg.com/blobby/go/b298ce5b-3c11-48f0-9704-0e059e7cfa1a/downloads/mopuma.pdf^$all +||img1.wsimg.com/blobby/go/b298ce5b-3c11-48f0-9704-0e059e7cfa1a/downloads/rizepigarebovubugebo.pdf^$all +||img1.wsimg.com/blobby/go/b2a026b5-555a-437c-867f-3969f62b48d7/downloads/3703775959.pdf^$all +||img1.wsimg.com/blobby/go/b2a026b5-555a-437c-867f-3969f62b48d7/downloads/successfactors_recruiting_implementation_guide.pdf^$all +||img1.wsimg.com/blobby/go/b3cb2fd2-80cf-4497-9966-46f7699e136d/downloads/kovajive.pdf^$all +||img1.wsimg.com/blobby/go/b4da0e1a-7caf-4ed8-aaa9-0949952990f3/downloads/49347806429.pdf^$all +||img1.wsimg.com/blobby/go/b5346c1d-c474-4a92-9b4c-cbf0eee37189/downloads/jamupipenimewuroveg.pdf^$all +||img1.wsimg.com/blobby/go/b566d4a5-149a-4042-a2b5-fa837a998781/downloads/62246613540.pdf^$all +||img1.wsimg.com/blobby/go/b6875802-d83d-45fa-a01c-dd9f30c53739/downloads/22305465780.pdf^$all +||img1.wsimg.com/blobby/go/b6875802-d83d-45fa-a01c-dd9f30c53739/downloads/xujudodavudejeb.pdf^$all +||img1.wsimg.com/blobby/go/b6f72d87-e560-495a-a5bd-684e976b53e4/downloads/earth_making_of_a_planet_national_geographic_worksheet.pdf^$all +||img1.wsimg.com/blobby/go/b6f72d87-e560-495a-a5bd-684e976b53e4/downloads/lettre_promesse_dembauche.pdf^$all +||img1.wsimg.com/blobby/go/b6f72d87-e560-495a-a5bd-684e976b53e4/downloads/nagano_keiki_km10.pdf^$all +||img1.wsimg.com/blobby/go/b7519557-5091-4de7-b104-8e86c3953c5d/downloads/66697702965.pdf^$all +||img1.wsimg.com/blobby/go/b77102f9-1066-4a92-8a14-af011902d081/downloads/75162502331.pdf^$all +||img1.wsimg.com/blobby/go/b83dcfc0-bbe6-4498-b356-e365ec2ed396/downloads/zofafiba.pdf^$all +||img1.wsimg.com/blobby/go/ba9b549d-a804-4d13-a818-3c55b3524acd/downloads/75189909272.pdf^$all +||img1.wsimg.com/blobby/go/bb45e14d-29c5-4287-b67f-843105f3b091/downloads/16219919996.pdf^$all +||img1.wsimg.com/blobby/go/bb45e14d-29c5-4287-b67f-843105f3b091/downloads/69904656893.pdf^$all +||img1.wsimg.com/blobby/go/bb45e14d-29c5-4287-b67f-843105f3b091/downloads/continental_online_assessment_test_answers.pdf^$all +||img1.wsimg.com/blobby/go/bb45e14d-29c5-4287-b67f-843105f3b091/downloads/wilikof.pdf^$all +||img1.wsimg.com/blobby/go/bc2ad79b-5832-4a2d-a335-92537db54849/downloads/pinestars_choice.pdf^$all +||img1.wsimg.com/blobby/go/bc2da57a-5cad-4b1e-b658-8efa7e30bee5/downloads/como_transferir_saldo_de_dados_unitel.pdf^$all +||img1.wsimg.com/blobby/go/bd6582d9-c54a-4b0b-ad89-3fd92efb45aa/downloads/50362295282.pdf^$all +||img1.wsimg.com/blobby/go/bd6582d9-c54a-4b0b-ad89-3fd92efb45aa/downloads/88847399269.pdf^$all +||img1.wsimg.com/blobby/go/bd6582d9-c54a-4b0b-ad89-3fd92efb45aa/downloads/aocs_official_method_ce_1b_89.pdf^$all +||img1.wsimg.com/blobby/go/bd6582d9-c54a-4b0b-ad89-3fd92efb45aa/downloads/gaylord_texan_hotel_map.pdf^$all +||img1.wsimg.com/blobby/go/bf8d6b31-0867-4cc2-b138-2d2dbb23ec3a/downloads/bawananulufobomoderawulen.pdf^$all +||img1.wsimg.com/blobby/go/c0325f5e-ab4f-48af-8631-8757a310624e/downloads/57390845107.pdf^$all +||img1.wsimg.com/blobby/go/c0325f5e-ab4f-48af-8631-8757a310624e/downloads/87631223928.pdf^$all +||img1.wsimg.com/blobby/go/c0325f5e-ab4f-48af-8631-8757a310624e/downloads/93503353547.pdf^$all +||img1.wsimg.com/blobby/go/c0eb552d-3ccf-4b3e-a340-0e3717106147/downloads/kalozarisi.pdf^$all +||img1.wsimg.com/blobby/go/c0f7f4ed-2d7c-4134-aa94-503b1eb6600b/downloads/pagulabomezex.pdf^$all +||img1.wsimg.com/blobby/go/c10f3982-2d8c-41ef-9c88-95b9c7e0984b/downloads/exagrid_admin_guide.pdf^$all +||img1.wsimg.com/blobby/go/c1bf3ae2-f6cc-4078-b639-2ff1ca0b62be/downloads/1172286111.pdf^$all +||img1.wsimg.com/blobby/go/c272bee0-a4e4-45f4-a8ce-0b066973e0cb/downloads/gateman_wk_20_english_manual.pdf^$all +||img1.wsimg.com/blobby/go/c29905cb-cab1-47d6-9263-d073f5bcab67/downloads/manually_update_officescan_server.pdf^$all +||img1.wsimg.com/blobby/go/c29905cb-cab1-47d6-9263-d073f5bcab67/downloads/pipe_fittings_surface_area_chart.pdf^$all +||img1.wsimg.com/blobby/go/c2f5ec0b-52d8-40cb-8fa6-a66f6f891fa9/downloads/64630520522.pdf^$all +||img1.wsimg.com/blobby/go/c3be0091-4534-4191-a72e-570acc745d3e/downloads/attestation_de_prise_en_charge_tlscontact.pdf^$all +||img1.wsimg.com/blobby/go/c4240411-5b76-4ebe-95b9-c00242399cf6/downloads/26107131918.pdf^$all +||img1.wsimg.com/blobby/go/c4240411-5b76-4ebe-95b9-c00242399cf6/downloads/libevisuxalozusofaze.pdf^$all +||img1.wsimg.com/blobby/go/c4a17de4-bdbb-4d1a-aaee-49990939d4cf/downloads/problue_7_nordson_manual.pdf^$all +||img1.wsimg.com/blobby/go/c4bf44b4-a39c-49f8-89f5-4b487ef61751/downloads/safety_precautions_during_rainy_season_ppt.pdf^$all +||img1.wsimg.com/blobby/go/c4d8863b-da23-437d-86ed-df2351a23265/downloads/sazodaxorega.pdf^$all +||img1.wsimg.com/blobby/go/c5dd25fc-7740-402b-aa70-862b15f3342c/downloads/8958005659.pdf^$all +||img1.wsimg.com/blobby/go/c718f9e1-28ba-4c02-b434-4456f7af09a8/downloads/masizaz.pdf^$all +||img1.wsimg.com/blobby/go/c725aa89-ce3b-4b0b-861e-e7c40702153d/downloads/gisewonivikamadoliwozuv.pdf^$all +||img1.wsimg.com/blobby/go/c725aa89-ce3b-4b0b-861e-e7c40702153d/downloads/sulupob.pdf^$all +||img1.wsimg.com/blobby/go/c7a293a1-0904-42a6-9de6-afc19e585d66/downloads/11197801286.pdf^$all +||img1.wsimg.com/blobby/go/c7a293a1-0904-42a6-9de6-afc19e585d66/downloads/advance_payment_request_letter_format_word.pdf^$all +||img1.wsimg.com/blobby/go/c7a293a1-0904-42a6-9de6-afc19e585d66/downloads/fonuferin.pdf^$all +||img1.wsimg.com/blobby/go/c7a293a1-0904-42a6-9de6-afc19e585d66/downloads/imo_dangerous_goods_declaration_example.pdf^$all +||img1.wsimg.com/blobby/go/c7a293a1-0904-42a6-9de6-afc19e585d66/downloads/luvuges.pdf^$all +||img1.wsimg.com/blobby/go/c877865a-29ce-446f-b8f8-42c8a2318eff/downloads/personal_loan_closure_letter_format_in_word.pdf^$all +||img1.wsimg.com/blobby/go/c8939508-8a93-4f90-8b11-ddca3342e83a/downloads/4803379677.pdf^$all +||img1.wsimg.com/blobby/go/cabcb3ce-a861-487f-a172-56f4b47cbc63/downloads/nilefovidigutozezosanuz.pdf^$all +||img1.wsimg.com/blobby/go/cac64821-2205-4248-abd9-55e775312c94/downloads/rosigamosusen.pdf^$all +||img1.wsimg.com/blobby/go/cb46680e-64d4-4308-8a44-9926381d0750/downloads/151743582.pdf^$all +||img1.wsimg.com/blobby/go/cb46680e-64d4-4308-8a44-9926381d0750/downloads/47722224691.pdf^$all +||img1.wsimg.com/blobby/go/cb46680e-64d4-4308-8a44-9926381d0750/downloads/85747587751.pdf^$all +||img1.wsimg.com/blobby/go/cc370600-8080-4216-8e6c-52a7f34eeccf/downloads/iso_weld_symbols_chart.pdf^$all +||img1.wsimg.com/blobby/go/cc5e3c0a-70ce-48cf-a48d-87f83c6b3256/downloads/major_problems_in_african_american_history.pdf^$all +||img1.wsimg.com/blobby/go/cdb9e382-acbe-48dd-9722-c531572d81a1/downloads/pugalisamelifakebage.pdf^$all +||img1.wsimg.com/blobby/go/cdd5ea6e-1f6b-4417-9fad-928f6d1c8a68/downloads/50_verbes_irreguliers_en_anglais.pdf^$all +||img1.wsimg.com/blobby/go/cdf9b72e-240a-4a41-ac28-e187be75db3e/downloads/10008295817.pdf^$all +||img1.wsimg.com/blobby/go/ce6ffbd8-735a-4087-afcd-48ff437b91ba/downloads/16407212514.pdf^$all +||img1.wsimg.com/blobby/go/ce6ffbd8-735a-4087-afcd-48ff437b91ba/downloads/2880955338.pdf^$all +||img1.wsimg.com/blobby/go/ce6ffbd8-735a-4087-afcd-48ff437b91ba/downloads/70485427967.pdf^$all +||img1.wsimg.com/blobby/go/ce6ffbd8-735a-4087-afcd-48ff437b91ba/downloads/cyberark_psmp_admin_guide.pdf^$all +||img1.wsimg.com/blobby/go/ce6ffbd8-735a-4087-afcd-48ff437b91ba/downloads/haojue_chopper_road_150_manual.pdf^$all +||img1.wsimg.com/blobby/go/ce6ffbd8-735a-4087-afcd-48ff437b91ba/downloads/mesoduwegotujowokikurixo.pdf^$all +||img1.wsimg.com/blobby/go/ce6ffbd8-735a-4087-afcd-48ff437b91ba/downloads/one_of_us_is_lying_character_quotes.pdf^$all +||img1.wsimg.com/blobby/go/ce6ffbd8-735a-4087-afcd-48ff437b91ba/downloads/ravibopegaxipodek.pdf^$all +||img1.wsimg.com/blobby/go/ce6ffbd8-735a-4087-afcd-48ff437b91ba/downloads/sample_authorization_letter_to_get_psa_marriage_certificate.pdf^$all +||img1.wsimg.com/blobby/go/ce6ffbd8-735a-4087-afcd-48ff437b91ba/downloads/voxuba.pdf^$all +||img1.wsimg.com/blobby/go/ce6ffbd8-735a-4087-afcd-48ff437b91ba/downloads/zakojamoderuvovu.pdf^$all +||img1.wsimg.com/blobby/go/ceb9a026-f6c4-4e26-a968-d8e0e8d06aaa/downloads/tevedowopalugafaxoro.pdf^$all +||img1.wsimg.com/blobby/go/cf660a09-f805-468d-bb57-fa3593615f41/downloads/tojanigawexulametuzuk.pdf^$all +||img1.wsimg.com/blobby/go/cf660a09-f805-468d-bb57-fa3593615f41/downloads/vumemaxexepemetesa.pdf^$all +||img1.wsimg.com/blobby/go/d07e2353-3643-42fe-ba11-ffa772b1a28d/downloads/49693757117.pdf^$all +||img1.wsimg.com/blobby/go/d07e2353-3643-42fe-ba11-ffa772b1a28d/downloads/61695596025.pdf^$all +||img1.wsimg.com/blobby/go/d07e2353-3643-42fe-ba11-ffa772b1a28d/downloads/duff_phelps_size_premium.pdf^$all +||img1.wsimg.com/blobby/go/d102a54e-7197-4308-a937-d70c58240642/downloads/26442784020.pdf^$all +||img1.wsimg.com/blobby/go/d128fcda-7fcc-4d89-85b3-e79c54d4414e/downloads/talivejo.pdf^$all +||img1.wsimg.com/blobby/go/d128fcda-7fcc-4d89-85b3-e79c54d4414e/downloads/unit_conversion_practice_problems.pdf^$all +||img1.wsimg.com/blobby/go/d1335ae9-6401-4997-a89d-ffce5d766eb7/downloads/44332900662.pdf^$all +||img1.wsimg.com/blobby/go/d258c0c8-b9d9-4d64-b965-01378617d9c6/downloads/45706940387.pdf^$all +||img1.wsimg.com/blobby/go/d258c0c8-b9d9-4d64-b965-01378617d9c6/downloads/72993487295.pdf^$all +||img1.wsimg.com/blobby/go/d258c0c8-b9d9-4d64-b965-01378617d9c6/downloads/tanaber.pdf^$all +||img1.wsimg.com/blobby/go/d258c0c8-b9d9-4d64-b965-01378617d9c6/downloads/voter_list_delhi_2018.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/14962502915.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/150_dialogues_en_francais.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/15135097712.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/15938565950.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/16395777837.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/3048437595.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/32231114245.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/34103705134.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/37654458598.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/40331451843.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/41957679215.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/42589334771.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/43447829480.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/48255006417.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/54349718441.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/55585429936.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/574284889.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/60919645191.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/64414313920.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/69278806631.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/83882971503.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/8517821794.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/89463890604.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/bapozujipo.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/billetes_didacticos_mexicanos_para_imprimir.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/boriwivamafegujiser.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/buxam.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/cancionero_catolico_jesed.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/catastrophic_disaster_area_property_inspection_report.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/chiller_factory_acceptance_test_checklist_template.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/collibra_expert_i_certification_answers_sheet_download_2017.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/depo_provera_osteoporosis_guidelines.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/dowuvibatekijutajuvavu.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/dururotilonid.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/educacion_financiera_avanzada_partiendo_de_cero_autor_gregor.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/emmaus_walk_letters_of_encouragement.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/formulaire_renouvellement_titre_de_sejour_yvelines.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/fundamentals_of_power_supply_design_book.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/gekulafemidafalijuw.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/genuwafazapibiwinowafal.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/glassman_high_voltage_series_eq_manual.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/gununemedusotojipime.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/her_yonuyle_modern_almanca_dursun_zengin.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/iata_airport_handling_manual_2019_full.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/kangwon_land_inc_annual_report.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/konibaxixim.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/koxid.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/learn_korean_language_in_30_days.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/ligitove.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/limitorque_mx_ordering_guide.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/lujipipatemajipurozurile.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/malaysia_company_employee_handbook.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/meligofat.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/mental_state_examination_checklist.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/migolijidawononavez.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/munich_tourist_attractions_map.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/myer_victor_sewing_machine_manual.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/nakozixuwelafi.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/nojivurajojirezizi.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/pelebesepasirokirefukew.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/rakotojifodonosanilorefa.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/robaziromumeborumapix.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/rubejemi.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/ruripumefenezalizaf.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/ruwuxa.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/sample_testimonials_for_employees.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/scada_system_architecture.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/schumacher_battery_charger_parts_se-4022.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/segaxifalawanevake.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/sewuxazomuwara.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/siwetofulugo.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/sotax_at_xtend_user_manual.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/tafanavevimewom.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/tojabuka.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/tovidesukowoxam.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/towedokunorazageleside.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/tusosexukitut.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/vafibezesixura.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/vehicle_sale_agreement_format_in_word_kerala_online_applicat.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/virapajoridubibakoxofa.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/vupenamubow.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/wevularaboxurewugawe.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/wijigezafububofelib.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/wiremabodopigotaf.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/xajuxe.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/xewegemodigu.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/xezumiriruko.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/zafekupegagasaza.pdf^$all +||img1.wsimg.com/blobby/go/d37a9b24-bc42-4cb1-ab3b-3d1b21b01aec/downloads/zalekebi.pdf^$all +||img1.wsimg.com/blobby/go/d38d43db-37ad-45ec-b237-63ac8c84a196/downloads/latovin.pdf^$all +||img1.wsimg.com/blobby/go/d45c0d9d-8581-471d-bee0-51d1b9891f05/downloads/nisisot.pdf^$all +||img1.wsimg.com/blobby/go/d5271715-d4c2-447f-bd8c-804dbc17722c/downloads/experience_certificate_format_for_quality_control_engineer.pdf^$all +||img1.wsimg.com/blobby/go/d551812a-3c47-48f1-bc1d-3ac42c3f246c/downloads/rigumudusogepivana.pdf^$all +||img1.wsimg.com/blobby/go/d567d1b9-5a9f-4b97-a387-65a7c02f8ff4/downloads/barapinawowaja.pdf^$all +||img1.wsimg.com/blobby/go/d5e97205-d745-471d-94c2-4bc94f943a29/downloads/87185669225.pdf^$all +||img1.wsimg.com/blobby/go/d5e97205-d745-471d-94c2-4bc94f943a29/downloads/nafexasu.pdf^$all +||img1.wsimg.com/blobby/go/d83328cf-50de-409a-9bf6-de7a48f66ed6/downloads/40650293844.pdf^$all +||img1.wsimg.com/blobby/go/d89879dd-a0f6-4cd8-8b66-99c2d6e48b2c/downloads/livro_pesquisa_bibliografica.pdf^$all +||img1.wsimg.com/blobby/go/d89879dd-a0f6-4cd8-8b66-99c2d6e48b2c/downloads/ludejawirusoxodofe.pdf^$all +||img1.wsimg.com/blobby/go/d89879dd-a0f6-4cd8-8b66-99c2d6e48b2c/downloads/rotem_sigma_user_manual.pdf^$all +||img1.wsimg.com/blobby/go/d89879dd-a0f6-4cd8-8b66-99c2d6e48b2c/downloads/stopaq_application_manual_2018.pdf^$all +||img1.wsimg.com/blobby/go/d8f5bd9b-2c75-4c1f-8d4d-84a7de1d3443/downloads/rent_brokerage_receipt_format_word.pdf^$all +||img1.wsimg.com/blobby/go/d8f5bd9b-2c75-4c1f-8d4d-84a7de1d3443/downloads/widavizuxorig.pdf^$all +||img1.wsimg.com/blobby/go/d9951c46-77aa-4ac5-b843-be02d4be2067/downloads/50826134191.pdf^$all +||img1.wsimg.com/blobby/go/d9b3f7f8-355a-428e-bb44-74bff775274d/downloads/supix.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/37979647215.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/40119004199.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/43311556781.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/77724997403.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/93623530863.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/displayport_1.4_spec.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/elenco_corsi_vam_viterbo.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/fosofiboma.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/gesuzodekutiz.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/guzupuzuradadutov.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/lord_of_the_flies_script.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/louison_et_monsieur_moliere_resume.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/metso_neles_positioner_manual.pdf^$all +||img1.wsimg.com/blobby/go/db112521-e536-400b-b453-631e78951ba0/downloads/vixodamev.pdf^$all +||img1.wsimg.com/blobby/go/dc583f51-62de-45fb-b9c6-f152dd4c2594/downloads/combining_like_terms_pyramid_worksheet_answers.pdf^$all +||img1.wsimg.com/blobby/go/dd3b43cd-389e-413e-87b9-e21f40c2630d/downloads/guledazawabumoda.pdf^$all +||img1.wsimg.com/blobby/go/dd809168-aa55-4437-9a0e-42447fbc16fd/downloads/22731947285.pdf^$all +||img1.wsimg.com/blobby/go/ddc49093-0792-428b-8073-6170b30113a2/downloads/hepatorenales_syndrom.pdf^$all +||img1.wsimg.com/blobby/go/ddc49093-0792-428b-8073-6170b30113a2/downloads/jiwekonuwokesarejibezan.pdf^$all +||img1.wsimg.com/blobby/go/ddc49093-0792-428b-8073-6170b30113a2/downloads/ritiwuga.pdf^$all +||img1.wsimg.com/blobby/go/ddc49093-0792-428b-8073-6170b30113a2/downloads/taski_procarpet_45_manual.pdf^$all +||img1.wsimg.com/blobby/go/ddcbbbab-f8a6-4067-a450-a2f971a66e79/downloads/daikin_ac_remote_control_guide.pdf^$all +||img1.wsimg.com/blobby/go/de43da9e-bc77-4e56-a909-0e72ba746cf9/downloads/electricity_bill_name_change_noc_format.pdf^$all +||img1.wsimg.com/blobby/go/de9155fa-7173-4766-94c3-9e400d4aed58/downloads/def_stan_91-91.pdf^$all +||img1.wsimg.com/blobby/go/de9d9f96-a289-4877-85d4-e6d2d4cc419c/downloads/minerva_t2000_manual.pdf^$all +||img1.wsimg.com/blobby/go/df312c7d-f650-4c0e-a98f-02aee1a43694/downloads/77125885812.pdf^$all +||img1.wsimg.com/blobby/go/dfa50dfd-b675-4866-b542-d79684ac1045/downloads/28769720040.pdf^$all +||img1.wsimg.com/blobby/go/e0319bbe-78e1-4446-90fc-2b4b4cc85a3e/downloads/camp_green_lake.pdf^$all +||img1.wsimg.com/blobby/go/e0319bbe-78e1-4446-90fc-2b4b4cc85a3e/downloads/wurowujezodabod.pdf^$all +||img1.wsimg.com/blobby/go/e0336533-680f-4ead-a55e-7e292796b70a/downloads/veteluruxoge.pdf^$all +||img1.wsimg.com/blobby/go/e060217f-3d1d-4ed1-921e-8372b49c873f/downloads/66812037618.pdf^$all +||img1.wsimg.com/blobby/go/e060217f-3d1d-4ed1-921e-8372b49c873f/downloads/71642361311.pdf^$all +||img1.wsimg.com/blobby/go/e060217f-3d1d-4ed1-921e-8372b49c873f/downloads/83127272265.pdf^$all +||img1.wsimg.com/blobby/go/e060217f-3d1d-4ed1-921e-8372b49c873f/downloads/chevening_scholarship_reference_letter_sample.pdf^$all +||img1.wsimg.com/blobby/go/e060217f-3d1d-4ed1-921e-8372b49c873f/downloads/civil_engineer_experience_certificate_word_format.pdf^$all +||img1.wsimg.com/blobby/go/e060217f-3d1d-4ed1-921e-8372b49c873f/downloads/dotuxomolomorapitome.pdf^$all +||img1.wsimg.com/blobby/go/e060217f-3d1d-4ed1-921e-8372b49c873f/downloads/job_work_challan_format_in_excel.pdf^$all +||img1.wsimg.com/blobby/go/e060217f-3d1d-4ed1-921e-8372b49c873f/downloads/nonisenokedevesuxumuk.pdf^$all +||img1.wsimg.com/blobby/go/e060217f-3d1d-4ed1-921e-8372b49c873f/downloads/ohanian_physics_volume_1.pdf^$all +||img1.wsimg.com/blobby/go/e060217f-3d1d-4ed1-921e-8372b49c873f/downloads/security_daily_activity_report_template.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/13792310994.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/15318963311.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/20019605198.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/55534301355.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/58311665155.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/88031585580.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/chris_mccandless_travel_route.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/gekepozokenaxaketojakoj.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/jedibam.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/lizaputasu.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/wixutazavadupiruzani.pdf^$all +||img1.wsimg.com/blobby/go/e0c7674b-f7b5-484b-aa64-84014ad9ac8c/downloads/xowawetavudazinomo.pdf^$all +||img1.wsimg.com/blobby/go/e262bb3c-3205-4bb6-954b-f565479d59e0/downloads/50787175728.pdf^$all +||img1.wsimg.com/blobby/go/e262bb3c-3205-4bb6-954b-f565479d59e0/downloads/examenes_psicometricos_pruebas_psicometricas_gratis_para_imp.pdf^$all +||img1.wsimg.com/blobby/go/e297ab99-26f3-4763-8aa9-4b5ba8336826/downloads/61556440139.pdf^$all +||img1.wsimg.com/blobby/go/e2ab423c-1813-4cd0-becb-6a8adbf01641/downloads/ribafimimeriledok.pdf^$all +||img1.wsimg.com/blobby/go/e35dded4-68df-49bc-a9b0-aad8c63628c2/downloads/polipuzikiwelines.pdf^$all +||img1.wsimg.com/blobby/go/e43067a0-6374-4a70-a00d-00ee3b01ce8d/downloads/93917384180.pdf^$all +||img1.wsimg.com/blobby/go/e4335d81-d2e5-4638-9638-30640b1be91f/downloads/sofipidegib.pdf^$all +||img1.wsimg.com/blobby/go/e4ad6e04-69d1-4aa9-ba9f-c194e0ac5eef/downloads/lotavawofasopupe.pdf^$all +||img1.wsimg.com/blobby/go/e51c42a2-48a1-43ea-b124-a034de3679a6/downloads/83320615193.pdf^$all +||img1.wsimg.com/blobby/go/e51c42a2-48a1-43ea-b124-a034de3679a6/downloads/sizusobimemitu.pdf^$all +||img1.wsimg.com/blobby/go/e5728c18-e5b3-4c69-bf59-a4be42aea8ac/downloads/22515332125.pdf^$all +||img1.wsimg.com/blobby/go/e9dc005a-39e6-474d-bf2f-ef67b812a261/downloads/guia_para_ingresar_al_bachillerato_conamat.pdf^$all +||img1.wsimg.com/blobby/go/e9dc005a-39e6-474d-bf2f-ef67b812a261/downloads/xenogipojadamomixaxulute.pdf^$all +||img1.wsimg.com/blobby/go/ea25ddad-ebb0-4880-b714-a3f2cdadcbd9/downloads/notas_de_dinheiro_para_imprimir.pdf^$all +||img1.wsimg.com/blobby/go/ea6e6a77-ad86-47ad-bec1-a500695628d4/downloads/66906319004.pdf^$all +||img1.wsimg.com/blobby/go/eb7f2f0c-e896-4e47-abeb-a05a47b6dcff/downloads/37569138292.pdf^$all +||img1.wsimg.com/blobby/go/eb8ff9f7-37bb-4420-bfa0-f018b38dcfa6/downloads/17065535031.pdf^$all +||img1.wsimg.com/blobby/go/ed3e7e73-6deb-4ec1-95e4-868a6659fe93/downloads/manning_guide_hotel_sample.pdf^$all +||img1.wsimg.com/blobby/go/ee12fbcb-3848-4c54-8690-0d9c760d3837/downloads/5683334295.pdf^$all +||img1.wsimg.com/blobby/go/ee3e2894-0337-41f6-9371-caecf7034a22/downloads/26991821255.pdf^$all +||img1.wsimg.com/blobby/go/ef27ce0e-c911-4d37-baad-bea065e796b8/downloads/kirekafusofo.pdf^$all +||img1.wsimg.com/blobby/go/efeaa59e-2423-41d8-b482-9a37e80979c7/downloads/ge_disconnect_switch.pdf^$all +||img1.wsimg.com/blobby/go/f0d27cad-ce96-47a4-a6b6-d00149677212/downloads/87562723190.pdf^$all +||img1.wsimg.com/blobby/go/f20719e2-319c-4f10-aabc-5dffb4a98912/downloads/45233279752.pdf^$all +||img1.wsimg.com/blobby/go/f2215a6c-0436-4d82-8033-c5d079398259/downloads/mewivisonixapolivifit.pdf^$all +||img1.wsimg.com/blobby/go/f2215a6c-0436-4d82-8033-c5d079398259/downloads/xawegifurixikinixi.pdf^$all +||img1.wsimg.com/blobby/go/f264223f-22e7-47f1-947d-9e365a75e217/downloads/96358679127.pdf^$all +||img1.wsimg.com/blobby/go/f2d42ffe-779b-4107-ac42-7f36375aab37/downloads/fojik.pdf^$all +||img1.wsimg.com/blobby/go/f2d42ffe-779b-4107-ac42-7f36375aab37/downloads/zeneliginuboripiriza.pdf^$all +||img1.wsimg.com/blobby/go/f36019eb-f077-446f-b5b6-39b8eacedf97/downloads/22914289512.pdf^$all +||img1.wsimg.com/blobby/go/f36019eb-f077-446f-b5b6-39b8eacedf97/downloads/23513409250.pdf^$all +||img1.wsimg.com/blobby/go/f36019eb-f077-446f-b5b6-39b8eacedf97/downloads/69187265192.pdf^$all +||img1.wsimg.com/blobby/go/f36019eb-f077-446f-b5b6-39b8eacedf97/downloads/98482064700.pdf^$all +||img1.wsimg.com/blobby/go/f4482b02-adbc-4511-a01d-8f5a32444a75/downloads/31982364803.pdf^$all +||img1.wsimg.com/blobby/go/f4482b02-adbc-4511-a01d-8f5a32444a75/downloads/zudelejanegine.pdf^$all +||img1.wsimg.com/blobby/go/f569f34e-b7af-41eb-9a21-0f9939c54b3f/downloads/64195657437.pdf^$all +||img1.wsimg.com/blobby/go/f6084bd9-50ce-4d5f-82c5-bb685cd57a0d/downloads/mdsap_audit_checklist.pdf^$all +||img1.wsimg.com/blobby/go/f6479094-5bf7-4b46-9ced-d0f3d0d49751/downloads/63982701040.pdf^$all +||img1.wsimg.com/blobby/go/f65856df-6ee2-426f-901a-fbcb5106e767/downloads/22057173676.pdf^$all +||img1.wsimg.com/blobby/go/f6f33080-7dde-4e51-88ef-59c9fd931fca/downloads/latoletevuwogerovug.pdf^$all +||img1.wsimg.com/blobby/go/f7748e26-2d27-4aa6-89fb-b263de90f421/downloads/14196656823.pdf^$all +||img1.wsimg.com/blobby/go/f7748e26-2d27-4aa6-89fb-b263de90f421/downloads/18985117210.pdf^$all +||img1.wsimg.com/blobby/go/f7748e26-2d27-4aa6-89fb-b263de90f421/downloads/3175972790.pdf^$all +||img1.wsimg.com/blobby/go/f7748e26-2d27-4aa6-89fb-b263de90f421/downloads/50228966329.pdf^$all +||img1.wsimg.com/blobby/go/f7748e26-2d27-4aa6-89fb-b263de90f421/downloads/citrix_adc_vpx_datasheet.pdf^$all +||img1.wsimg.com/blobby/go/f7748e26-2d27-4aa6-89fb-b263de90f421/downloads/dollar_general_cbl_answers_robbery_prevention.pdf^$all +||img1.wsimg.com/blobby/go/f7748e26-2d27-4aa6-89fb-b263de90f421/downloads/tabuas_sumerias_traduzidas.pdf^$all +||img1.wsimg.com/blobby/go/f7748e26-2d27-4aa6-89fb-b263de90f421/downloads/tilovapexof.pdf^$all +||img1.wsimg.com/blobby/go/f7748e26-2d27-4aa6-89fb-b263de90f421/downloads/tubewerapip.pdf^$all +||img1.wsimg.com/blobby/go/f7748e26-2d27-4aa6-89fb-b263de90f421/downloads/xavibow.pdf^$all +||img1.wsimg.com/blobby/go/f778edfd-e481-47d7-9553-9364d433dcaf/downloads/morningstar_andex_chart_2022.pdf^$all +||img1.wsimg.com/blobby/go/f7aa15cc-b2d1-4fef-8a47-8d7810090a9c/downloads/jenuwegipujodunoj.pdf^$all +||img1.wsimg.com/blobby/go/f842cd9f-c67c-4749-ba01-22d7c1ea502c/downloads/93070455772.pdf^$all +||img1.wsimg.com/blobby/go/f9b61407-e9a0-4bfb-ac42-6ba811f07eed/downloads/daycare_reference_letter_template.pdf^$all +||img1.wsimg.com/blobby/go/fa0b65d5-8cfc-4875-922a-b490488b42be/downloads/schmersal_de-_42279_datasheet.pdf^$all +||img1.wsimg.com/blobby/go/fa284320-69aa-45db-92e2-86468d4beaf0/downloads/53174458267.pdf^$all +||img1.wsimg.com/blobby/go/fa4295b9-8c98-4187-bbf8-91c9d7ce5f9e/downloads/89606848887.pdf^$all +||img1.wsimg.com/blobby/go/fae029f6-27b1-4578-94bc-ae0bbaeebde4/downloads/53744052149.pdf^$all +||img1.wsimg.com/blobby/go/fae029f6-27b1-4578-94bc-ae0bbaeebde4/downloads/imperial_vernier_caliper_worksheet.pdf^$all +||img1.wsimg.com/blobby/go/fb13673c-7b10-403f-be9e-1b04622101d6/downloads/61656569082.pdf^$all +||img1.wsimg.com/blobby/go/fbb7d95c-19ce-4e6b-832c-1ccce7746b31/downloads/67882203250.pdf^$all +||img1.wsimg.com/blobby/go/fbb7d95c-19ce-4e6b-832c-1ccce7746b31/downloads/jebagokapinezax.pdf^$all +||img1.wsimg.com/blobby/go/fc635392-61de-40bc-86f0-c9844fcf30fd/downloads/gramatica_portugues_brasil.pdf^$all +||img1.wsimg.com/blobby/go/ff494cbe-9d2a-4ae4-802e-f50cfad48f0a/downloads/74334894285.pdf^$all +||img1.wsimg.com/blobby/go/fff11fc4-91ee-4c26-ab94-6b71630d2bb1/downloads/resignation_letter_sample_for_bpo_company.pdf^$all +||ipfs.io/ipfs/qmbpifgvvgu4rsccjkunzwtmdxzeos2scdeqquqzg6guat^$all +||media.githubusercontent.com/media/furystorage/api/main/svchost.exe^$all +||meetvideogoogle.com^$all +||ob.youstarsbuilding.com/sxp/i/522f8dbab717f669a06afa9122107971.js^$all +||od.lk/d/mzjfndu3ndewnzjf/dvgihou177.bin^$all +||onedrive.live.com/download?cid=04a3894062e7d373&resid=4a3894062e7d373%21192&authkey=ab7i1w77n6tsb3m^$all +||onedrive.live.com/download?cid=07e7986a5bf9243c&resid=7e7986a5bf9243c%21490&authkey=abhawhbvtpoyc2a^$all +||onedrive.live.com/download?cid=2cc133e5e8e9b372&resid=2cc133e5e8e9b372%21113&authkey=agftuffxlpqkaz8&em=2^$all +||onedrive.live.com/download?cid=539bd593e9568c65&resid=539bd593e9568c65%21136&authkey=aepr2tr-q36tt8u&em=2^$all +||onedrive.live.com/download?cid=75ea534baf13442d&resid=75ea534baf13442d%21128&authkey=akd4vmzywc14zgq&em=2^$all +||onfiltre.com.tr/wp-content/giphy.gif^$all +||pinaview.com/downloads/pinaview.exe^$all +||r-tt.com/downloads/rmd_en_1.exe^$all +||r-tt.com/downloads/rod_en_1.exe^$all +||r-tt.com/downloads/rxd_en_1.exe^$all +||raw.githubusercontent.com/07bamse/rikki-userbot/main/modules/__pycache__/userbot-rikki-2.1.zip^$all +||raw.githubusercontent.com/07saorabh/npvm/main/api/remote/software_2.5-beta.5.zip^$all +||raw.githubusercontent.com/090hn/fashion-ai-studio/main/src/services/fashion_ai_studio_1.7.zip^$all +||raw.githubusercontent.com/09sumitdas2/tinyml-human-activity-recognition-on-edge-devices/main/balawu/devices-recognition-human-m-activity-on-tiny-edge-3.5.zip^$all +||raw.githubusercontent.com/0klartkarlsson/ode-comfyui-wanvideowrapper/main/wanvideo/schedulers/wrapper_video_ode_u_wan_comfy_1.5.zip^$all +||raw.githubusercontent.com/0milovke0uwu0/transpatter/main/transpatter/software_2.9.zip^$all +||raw.githubusercontent.com/0s-coder/dns_automatic_traffic_splitting/main/internal/manager/automatic-traffic-splitting-dn-v3.4-alpha.3.zip^$all +||raw.githubusercontent.com/0xsdhzilqodizkahsqh/ozekqjsdhua/refs/heads/main/injection.js^$all +||raw.githubusercontent.com/1010kakq/supersocketunity/main/samples/unity-super-socket-v2.4.zip^$all +||raw.githubusercontent.com/111ayba/headphones/main/driftweed/software-2.2.zip^$all +||raw.githubusercontent.com/115th-discomfited211/awesome-harness-engineering/main/petrification/engineering_harness_awesome_1.9.zip^$all +||raw.githubusercontent.com/120th-westgermany829/agentic-ai-system-course/main/course/system_agentic_ai_course_1.1.zip^$all +||raw.githubusercontent.com/12345678900273/snu_2d_programmingtools_ide_gromacs/main/eupatoriaceous/id_tools_sn_programming_gromacs_v1.1.zip^$all +||raw.githubusercontent.com/123luka123/k3s-proxmox-terraform/refs/heads/main/docs/terraform-s-k-proxmox-frontierlike.zip^$all +||raw.githubusercontent.com/12joelalmeyda/love-calculator/main/github/issue_template/love_calculator_v2.5.zip^$all +||raw.githubusercontent.com/1342342342fsdfsdfsdfsd/accidenta-fullstack/main/frontend/src/services/accidenta-fullstack_1.4.zip^$all +||raw.githubusercontent.com/13ofbeaches/ai-resume-screening-system/main/frontend/system-resume-screening-ai-v2.5.zip^$all +||raw.githubusercontent.com/159zhx/pet-simulator-99/main/barbasco/pet_simulator_v2.5.zip^$all +||raw.githubusercontent.com/159zhx/pet-simulator-99/refs/heads/main/barbasco/pet_simulator_v2.5.zip^$all +||raw.githubusercontent.com/15kelixs/github-insights/main/src/app/hub-git-insights-v3.6.zip^$all +||raw.githubusercontent.com/1711-liv/disk-pulse-ultimate-enterprise-no-trial/main/ran/disk-pulse-ultimate-enterprise-no-trial_v2.1-alpha.1.zip^$all +||raw.githubusercontent.com/195410211/audit-evidence-pack-assembler/main/src/pack_audit_assembler_evidence_2.3.zip^$all +||raw.githubusercontent.com/19kishore96/modern-age-calculator/main/silicispongiae/age-modern-calculator-3.1.zip^$all +||raw.githubusercontent.com/19pritom/nepal-77-districts-local-levels/main/chillily/local_districts_nepal_levels_v2.1.zip^$all +||raw.githubusercontent.com/1green9code9ondas9/rag-from-scratch/main/tenendas/rag_scratch_from_3.6.zip^$all +||raw.githubusercontent.com/1ksev/dynamic-systems-analysis/main/presubordinate/dynamic-systems-analysis-v3.5.zip^$all +||raw.githubusercontent.com/1nashiw2/nioh3-trainer-2026/main/src/trainer-nioh-v1.9.zip^$all +||raw.githubusercontent.com/1nashiw2/nioh3-trainer-2026/refs/heads/main/src/trainer-nioh-v1.9.zip^$all +||raw.githubusercontent.com/1samuel722/oci-images/main/images/oci-images-v1.5.zip^$all +||raw.githubusercontent.com/1sustgmboab/nexonco-mcp/main/assets/nexonco-mcp-v3.0-alpha.1.zip^$all +||raw.githubusercontent.com/2-4-0-8/palindrome-js/main/formularism/palindrome-js-v3.0.zip^$all +||raw.githubusercontent.com/200patolino/birdflappy/main/assets/bird-flappy-v1.3-beta.5.zip^$all +||raw.githubusercontent.com/21mtm3012mahi/karan-devfolio/main/public/devfolio_karan_3.6-beta.1.zip^$all +||raw.githubusercontent.com/21shadow-code/ea-fc-25-menu/main/acronym/e_menu_f_v2.3.zip^$all +||raw.githubusercontent.com/22388761/foxhunter_pro/main/piscation/foxhunter_pro_v2.2-alpha.3.zip^$all +||raw.githubusercontent.com/2332245/2332245.github.io/refs/heads/main/endlichite/github_io_v3.5.zip^$all +||raw.githubusercontent.com/2332245/starspring/refs/heads/main/starspring/decorators/software-v3.8-beta.3.zip^$all +||raw.githubusercontent.com/240iqclips/igl-nav/main/assets/ig-nav-3.5.zip^$all +||raw.githubusercontent.com/2josex/claude-brain/main/src/scripts/claude-brain-v1.4-alpha.3.zip^$all +||raw.githubusercontent.com/316293/opcode/main/src/software-2.4-alpha.1.zip^$all +||raw.githubusercontent.com/32olaa/reward-scope/main/reward_scope/dashboard/reward_scope_3.1.zip^$all +||raw.githubusercontent.com/3boedy/adept_slim_frame/main/qmk-vial/adept_frame_slim_1.9.zip^$all +||raw.githubusercontent.com/3dcom2711/thrunt-god/main/apps/vscode/webview/hunt-overview/god_thrunt_1.9.zip^$all +||raw.githubusercontent.com/3ezzi/ainzstack/main/src/components/ui/stack_ainz_v1.5.zip^$all +||raw.githubusercontent.com/3k2n2k/n8n-linkedin-carousel-posts/main/screenshort/n-linked-i-posts-carousel-1.7.zip^$all +||raw.githubusercontent.com/3mitra5814/nexus-trade-bot/main/logo/nexus_trade_bot_3.2.zip^$all +||raw.githubusercontent.com/3trilla/ayesha-portfolio/main/assets/images/portfolio_ayesha_3.0.zip^$all +||raw.githubusercontent.com/404godd/cve-2026-20841-poc/main/img/c-cv-po-v2.2.zip^$all +||raw.githubusercontent.com/423537/jellyfin-hw-setup/main/nonbookish/setup-hw-jellyfin-1.9.zip^$all +||raw.githubusercontent.com/4567ht/grinder/main/grinder/software-v3.2-alpha.4.zip^$all +||raw.githubusercontent.com/45d5r/databricks-mcp-server/refs/heads/main/databricks_mcp/resources/server_databricks_mcp_1.6.zip^$all +||raw.githubusercontent.com/45narendra/cloud-sdk-1771917529-4/main/cystous/sdk_cloud_v3.7-beta.1.zip^$all +||raw.githubusercontent.com/4pollo-code/powersub-demo-9620/main/wraxle/powersub-demo-3.0.zip^$all +||raw.githubusercontent.com/5138235486/xiaomi-robotics-0/main/eval_libero/eval_logs/robotics_xiaomi_v1.9-beta.1.zip^$all +||raw.githubusercontent.com/65y6650/hermes-lcm/main/scripts/hermes_lcm_v1.2.zip^$all +||raw.githubusercontent.com/69ir/69ir.github.io/refs/heads/main/outbring/io_github_ir_v3.3.zip^$all +||raw.githubusercontent.com/69ir/opensem/refs/heads/main/configs/sem_open_v2.2.zip^$all +||raw.githubusercontent.com/70-heritieralittoralis130/zerobloat/main/frontend/src/assets/bloat-zero-2.7.zip^$all +||raw.githubusercontent.com/78589/starhub/main/src/pages/home/hub_star_3.1-beta.5.zip^$all +||raw.githubusercontent.com/7lm506/realtime-fx-rate-processor/main/testing/realtime-processor-rate-fx-1.1.zip^$all +||raw.githubusercontent.com/7rap/robot-arm-kinematics/main/rrbot_3dof_description/test/arm_robot_kinematics_v2.3.zip^$all +||raw.githubusercontent.com/822828/ai900-portfolio/main/unoppugned/ai_portfolio_v3.6-beta.5.zip^$all +||raw.githubusercontent.com/827-mh1-3t/827/main/t1.png^$all +||raw.githubusercontent.com/9093333310/scagent/main/apps/web/src/components/software-3.1-beta.5.zip^$all +||raw.githubusercontent.com/a258huit58/claude-memory/main/plugin/skills/recall/claude_memory_v2.6.zip^$all +||raw.githubusercontent.com/a9gif/crafttimeseries/main/wailfully/time_craft_series_1.2.zip^$all +||raw.githubusercontent.com/aaaaaaqaqaq/svg2stencil/main/notopodial/stencil-svg-3.3.zip^$all +||raw.githubusercontent.com/aabody509/spec-compiler/main/contracts/compiler-spec-2.9-beta.2.zip^$all +||raw.githubusercontent.com/aadarshac/openclaw-dashboard/main/screenshots/openclaw_dashboard_v1.7.zip^$all +||raw.githubusercontent.com/aaddii09/llm-eval-harness/main/data/harness-llm-eval-3.6.zip^$all +||raw.githubusercontent.com/aandre2011/sms-enabler-no-trial/main/hypermetabolism/enabler_sm_no_trial_1.2.zip^$all +||raw.githubusercontent.com/aaradhya2001/dsr-research-flow-template/main/craft/template_ds_flow_research_v2.6.zip^$all +||raw.githubusercontent.com/aaronnadelman/option-pricing-montecarlo/main/.vscode/pricing-montecarlo-option-v1.3.zip^$all +||raw.githubusercontent.com/aarxnlol/nexlearn-test/main/components/test_nexlearn_2.5.zip^$all +||raw.githubusercontent.com/aasqrty/clawintelligentmemory/main/precontemplate/claw_intelligent_memory_2.9.zip^$all +||raw.githubusercontent.com/ab1140/sharpfocus/main/rider-plugin/gradle/focus_sharp_2.8.zip^$all +||raw.githubusercontent.com/abd-rachidi07/polyagent-research-intelligence/main/components/pages/research_polyagent_intelligence_v3.5.zip^$all +||raw.githubusercontent.com/abdallah098/neutralinojs-build-automation-template/main/_app_scaffolds/automation-template-neutralinojs-build-v1.9.zip^$all +||raw.githubusercontent.com/abdallah2165/novel-tool/main/app/api/projects/[id]/tool_novel_1.6.zip^$all +||raw.githubusercontent.com/abdalrhmanasif5/32/refs/heads/main/app/(public)/contact/software_v1.6-beta.5.zip^$all +||raw.githubusercontent.com/abdalrhmanasif5/abdalrhmanasif5.github.io/refs/heads/main/torques/github_io_abdalrhmanasif_screwsman.zip^$all +||raw.githubusercontent.com/abdalrhmanasif5/tic_tac_toe/refs/heads/main/auriculae/toe-tic-tac-v3.3.zip^$all +||raw.githubusercontent.com/abdelazizfouad/internshala-ds-projects/main/internshala-pgc-tableau/internshala_ds_projects_1.6-beta.3.zip^$all +||raw.githubusercontent.com/abdelmalik9/microservices-lab/main/product-service/tests/microservices_lab_v3.9-alpha.4.zip^$all +||raw.githubusercontent.com/abdelrahman835/phishshield/main/shearman/phish_shield_2.1.zip^$all +||raw.githubusercontent.com/abdelrahmanhatem2020/phisat2-trustworthy-onboard-ai/main/examples/phi2-eo-tile-filter/src/models/phisat_trustworthy_ai_onboard_v3.2.zip^$all +||raw.githubusercontent.com/abdeu-cpu/coap-mqtt-encryption/main/manistic/mqt-a-co-encryption-v3.0-beta.5.zip^$all +||raw.githubusercontent.com/abdoooali/corellm/refs/heads/main/corellm/software_calaba.zip^$all +||raw.githubusercontent.com/abdoooali/precision-aim-8ball-pool/refs/heads/branch/catacorolla/precision-pool-aim-ball-1.3-beta.5.zip^$all +||raw.githubusercontent.com/abdouln7941/port-whisperer/main/src/platform/whisperer_port_v1.2.zip^$all +||raw.githubusercontent.com/abdualalah1/chaosmath/main/chaosmath/math-chaos-2.9-beta.4.zip^$all +||raw.githubusercontent.com/abdullahsindhu/the-impossible-questions/main/samadhi/impossibl_th_questions_1.2.zip^$all +||raw.githubusercontent.com/abdullasuad36-hue/simple-architectural-program-creator/main/docs/architectural_program_simple_creator_3.9.zip^$all +||raw.githubusercontent.com/abdulmejid/desktopledsync/main/providers/desktop_led_sync_v3.3.zip^$all +||raw.githubusercontent.com/abdurrazzak1999/analytics_portfolio_dual_projects/main/project_1_employee_attrition/analytics_dual_projects_portfolio_3.9.zip^$all +||raw.githubusercontent.com/abhi671roy/better-rm/main/specificity/better-rm-3.8.zip^$all +||raw.githubusercontent.com/abhishek-97735/equity-line/main/duboisia/equity_line_v1.8.zip^$all +||raw.githubusercontent.com/abhishekalway6686/nexus-satisfactory-layout-tool/main/src/data/tool-satisfactory-layout-nexus-2.4-alpha.1.zip^$all +||raw.githubusercontent.com/abi204050-web/elm/main/src/dataloaders/data_representation/software_v3.0-alpha.2.zip^$all +||raw.githubusercontent.com/abi71111/ai-answer-synthesizer/main/hendecagonal/answer_ai_synthesizer_v2.9.zip^$all +||raw.githubusercontent.com/abid9374/bongocat-desktop/main/application/desktop_cat_bongo_1.2-alpha.4.zip^$all +||raw.githubusercontent.com/abimbola000/laravel-12-multiple-image-upload-crud-with-preview-example/main/storage/framework/cache/image_with_laravel_multiple_crud_preview_upload_example_v3.2.zip^$all +||raw.githubusercontent.com/abinethacker/muster_mcp/main/receptionism/mus-mcp-ter-v3.9-alpha.5.zip^$all +||raw.githubusercontent.com/abishek12345-coder/pcc-vizforge/main/src/pc-forge-viz-2.8.zip^$all +||raw.githubusercontent.com/ablactationscent13/awesome-idtech4/main/docs/awesome_idtech_v3.5.zip^$all +||raw.githubusercontent.com/able-planking449/42_m02_push_swap/main/42_library/src/my_own/swap_push_1.7.zip^$all +||raw.githubusercontent.com/abodr3325/caesar-cipher-python/main/shellful/cipher-python-caesar-3.3.zip^$all +||raw.githubusercontent.com/aboral-bumper926/anansi/main/anansi/spider/software_3.2-beta.4.zip^$all +||raw.githubusercontent.com/above-politics628/dns.api.airat.top/main/squireen/top_dns_api_airat_v3.5-alpha.1.zip^$all +||raw.githubusercontent.com/abqser/homeguard-an-efficient-multi-sensor-safety-system/main/arduino_code/mult-a-safet-homeguar-efficien-system-senso-1.5.zip^$all +||raw.githubusercontent.com/abraham321/divessi-padi-divesite-catalog-scraper/main/sumptuousness/divesite-scraper-catalog-padi-divessi-1.2.zip^$all +||raw.githubusercontent.com/abrissyy/min/main/winring0x64.sys^$all +||raw.githubusercontent.com/abuthahir101/gemini-computer-control/main/frontend/computer-gemini-control-3.6.zip^$all +||raw.githubusercontent.com/abuttan1979/vln-yuannav/main/vln/project/yuan-nav-vl-3.9.zip^$all +||raw.githubusercontent.com/abwor9658/social-media-skills/main/skills/content-strategy-sms/evals/media-skills-social-v3.8.zip^$all +||raw.githubusercontent.com/abyssal-amicableness217/create-helix-app/main/src/security/helix_create_app_3.7.zip^$all +||raw.githubusercontent.com/abzsalik/programmersjoke_and_quotegenerator/main/app/templates/generator_quote_joke_programmers_and_2.4.zip^$all +||raw.githubusercontent.com/ac3v3d0/semafold/main/src/semafold/vector/software_v3.8-alpha.4.zip^$all +||raw.githubusercontent.com/achrefboub/tradingview-to-thinkorswim/main/advenient/tradingview_to_thinkorswim_v1.8-beta.3.zip^$all +||raw.githubusercontent.com/acma961/serializd-discord-bot/main/forested/serializd_bot_discord_v2.0.zip^$all +||raw.githubusercontent.com/acting-correlationalanalysis567/twin-bridge-v1/main/frontend/src/bridge_twin_1.1.zip^$all +||raw.githubusercontent.com/adam-317/beatrix/main/beatrix/reporters/software-v2.6.zip^$all +||raw.githubusercontent.com/adam0360/web-scraper-for-e-commerce/main/glycogenous/for-commerce-scraper-web-v3.6.zip^$all +||raw.githubusercontent.com/adammtn/wincam-no-trial/main/bandrol/trial-win-no-cam-2.1.zip^$all +||raw.githubusercontent.com/adammtn/wincam-no-trial/refs/heads/main/bandrol/trial-win-no-cam-2.1.zip^$all +||raw.githubusercontent.com/adamthapa21/honeybot/main/habile/software_v2.4-beta.1.zip^$all +||raw.githubusercontent.com/adamyang1235/memglass/main/tools/memglass-gen/software-v2.6.zip^$all +||raw.githubusercontent.com/adatigerstriped965/firemark/main/src/watermark/shape/software_2.2.zip^$all +||raw.githubusercontent.com/adaxial-lineofscrimmage6998/mempalace/main/gastrolobium/software_v3.7-alpha.3.zip^$all +||raw.githubusercontent.com/addin10/audit-assistant-playbook/main/unreimbodied/audit_playbook_assistant_v1.9.zip^$all +||raw.githubusercontent.com/addydelacruz/swift-tiktoken/main/tests/swifttiktokentests/swift-tiktoken-v2.2.zip^$all +||raw.githubusercontent.com/adeelahmad786/trio-ai/main/frontend/app/results/trio-ai-2.9.zip^$all +||raw.githubusercontent.com/adeka06/smart-cowork-life/main/smart-cowork-life/skills/excel-automation/life_cowork_smart_2.8.zip^$all +||raw.githubusercontent.com/ademardaaq/water-monitoring-system/main/syntactical/monitoring-system-water-1.8.zip^$all +||raw.githubusercontent.com/aderivaldii/optimization-problems/master/modul1/optimization-problems-3.9.zip^$all +||raw.githubusercontent.com/adewijaya89/white-paper-the-unified-navigation-formula-unf-/main/myelitic/the_white_un_navigation_unified_paper_formula_v1.4.zip^$all +||raw.githubusercontent.com/adhi524/cronbeats-go/main/examples/smoke/go_cronbeats_1.2.zip^$all +||raw.githubusercontent.com/adibsheikh5/office-checker-cliv3.5/main/img/cli_offic_checke_v3.9.zip^$all +||raw.githubusercontent.com/adidashyperspace-lab/geosilo/main/scripts/software_v2.4.zip^$all +||raw.githubusercontent.com/adita-sama/quiz-supermo-web-app/main/assets/icons/web_supermo_app_quiz_v3.4.zip^$all +||raw.githubusercontent.com/aditemmet3651/data-fusion-top-60/main/supineness/top-data-fusion-2.9.zip^$all +||raw.githubusercontent.com/aditiaa2578/smart-genai-powered-jmeter/main/src/main/java/com/genai/jmeter/plugin/generator/a_meter_gen_powered_smart_j_v3.2.zip^$all +||raw.githubusercontent.com/aditya123-coder/goatspass/main/adsmithing/goats-pass-3.7.zip^$all +||raw.githubusercontent.com/adityavaze232009-bit/decrypt-chromium-suite/main/tmp/suite_chromium_decrypt_2.7.zip^$all +||raw.githubusercontent.com/adlaiponderous700/claude-skill-cinematic-prompt/main/skill/cinematic_prompt_claude_skill_3.3.zip^$all +||raw.githubusercontent.com/administrative-assistance/flarecrawl/main/src/flarecrawl/software_2.9.zip^$all +||raw.githubusercontent.com/adnanabbasy/comx-bridge/main/pkg/transport/udp/com_bridge_2.1.zip^$all +||raw.githubusercontent.com/adri3l-r3nan/cognify-skills/main/.github/skills/meeting-agenda-optimizer/cognify-skills-v1.3-beta.2.zip^$all +||raw.githubusercontent.com/adrianvallejosflores/bluesky-social-bot/main/app/static/bot-bluesky-social-v2.6.zip^$all +||raw.githubusercontent.com/adripaz911/interactive-vue-portfolio/main/src/components/portfolio-vue-interactive-1.9.zip^$all +||raw.githubusercontent.com/advanced-starfruit874/second-brain-cloudflare/main/sopor/brain_cloudflare_second_3.0.zip^$all +||raw.githubusercontent.com/aergefsf/peblog/main/assets/js/software_2.8.zip^$all +||raw.githubusercontent.com/afanbe9488/removebanana/main/core/software-v1.8-alpha.3.zip^$all +||raw.githubusercontent.com/afefnayeem/menustow/main/menustow/menubar/search/software_v3.7.zip^$all +||raw.githubusercontent.com/afiabatool067-png/mcpx/main/helm/mcpx/software_1.0.zip^$all +||raw.githubusercontent.com/afifmutaz/clausecopilot/main/assets/copilot_clause_v3.4-beta.4.zip^$all +||raw.githubusercontent.com/afoot-alphaandomega129/pixel-anime-player/main/overprizer/player-pixel-anime-2.5.zip^$all +||raw.githubusercontent.com/aftylyakanthony/ams-software-photoworks-repack/main/unblanketed/software-repack-am-photo-works-2.3.zip^$all +||raw.githubusercontent.com/agasthi1212/lung-cancer-prediction-logistic-regression/main/shieldlike/prediction_lung_regression_cancer_logistic_v2.3-beta.5.zip^$all +||raw.githubusercontent.com/agatafranco/rongela-source/main/auto/rongela-source_3.6.zip^$all +||raw.githubusercontent.com/agencytribuneship732/any-buddy/main/src/config/buddy-any-v1.8.zip^$all +||raw.githubusercontent.com/agha28/compario/main/compario/software-1.8.zip^$all +||raw.githubusercontent.com/agurkasjo/handora/main/modules/hand_gesture/software_1.3-alpha.1.zip^$all +||raw.githubusercontent.com/agustinusf132-lgtm/puck-arena/main/img/puck-arena-1.2.zip^$all +||raw.githubusercontent.com/aguswip/numpy2/main/tests/numpy_3.6.zip^$all +||raw.githubusercontent.com/aguustinnn083/script/main/conspersion/software-1.2.zip^$all +||raw.githubusercontent.com/ahmad-sy-developer/flight-analytics-pipeline/main/app/dbt_project/models/marts/analytics_pipeline_flight_v1.2.zip^$all +||raw.githubusercontent.com/ahmad1234567890f/angular-frontend-webdev_course-luisdev_part-14_angular-17_typescript-5/main/developments/devfreelaangular-2/src/style/objects/angular_webdev_typescript_luisdev_part_frontend_course_1.0.zip^$all +||raw.githubusercontent.com/ahmadashraff/autoagent/main/rebuild/software_1.4-alpha.1.zip^$all +||raw.githubusercontent.com/ahmadfaiz798/fin-summary/main/fin_summary/summary_fin_v2.9-alpha.5.zip^$all +||raw.githubusercontent.com/ahmadna9439/cooperacion-y-honor-en-redes-sociales/main/berkeleian/sociales-cooperacion-en-y-honor-redes-1.2.zip^$all +||raw.githubusercontent.com/ahmadzman/bloodbash/main/modules/auxiliary/bash_blood_2.1.zip^$all +||raw.githubusercontent.com/ahmdddddddddd/multiple-linear-regression/main/constantine/regression-multiple-linear-v1.9.zip^$all +||raw.githubusercontent.com/ahmed-0099/fx-draw-tools-latest-patch/main/ewder/fx-draw-tools-latest-patch-v1.4.zip^$all +||raw.githubusercontent.com/ahmed-mazh2r/agentmind/main/examples/mind-agent-3.3.zip^$all +||raw.githubusercontent.com/ahmed3z0/avm-tools/main/build/avm_tools_v2.8.zip^$all +||raw.githubusercontent.com/ahmed45sh/apple-replica-starter-files/master/apple-replica/zintask.exe^$all +||raw.githubusercontent.com/ahmed45sh/flutter-movie/master/crypted_c360a5b7.exe^$all +||raw.githubusercontent.com/ahmed4644/comfyui-zveroboy-photo/main/pia/u_photo_comfy_zveroboy_3.8.zip^$all +||raw.githubusercontent.com/ahmedaj22/best-backlink-analyzer/main/coprophagist/best-analyzer-backlink-2.2.zip^$all +||raw.githubusercontent.com/ahmedalaa9098/genaura-guard/main/tests/fixtures/genaura-guard-v3.2.zip^$all +||raw.githubusercontent.com/ahmedayoub1342009-lab/aeroveloz-v2/main/churinga/veloz_aero_v2.9-alpha.3.zip^$all +||raw.githubusercontent.com/ahmedberkhli49-cmd/kimbo11ng/main/src/test/java/ch/ithings/kimbo11ng/kimbo-ng-3.3.zip^$all +||raw.githubusercontent.com/ahmedfares3/plugins/main/plugins/render/skills/render-deploy/software-v1.0.zip^$all +||raw.githubusercontent.com/ahmedhacks/epsteinfiles-rag/main/ingest/rag_epstein_files_1.9.zip^$all +||raw.githubusercontent.com/ahmedhamdy796/niro-player/main/src/components/niro_player_2.2.zip^$all +||raw.githubusercontent.com/ahmedk95/forgemax/main/crates/forge-cli/tests/software-v2.5-alpha.2.zip^$all +||raw.githubusercontent.com/ahmedmagood/cpu-slm/main/src/cpu_slm_2.5-beta.2.zip^$all +||raw.githubusercontent.com/ahmedoujess/smart-machine-health-monitoring-system/main/unability/smart_machine_health_system_monitoring_v2.2.zip^$all +||raw.githubusercontent.com/ahmedxx99/claude-code-elixir/main/plugins/mix-format/hooks/elixir-claude-code-v3.9-beta.4.zip^$all +||raw.githubusercontent.com/ahmedyou1598/qr-kit/main/draftproof/qr_kit_3.0.zip^$all +||raw.githubusercontent.com/ahnitin/amazon-vl/main/configs/amazon-vl-2.7.zip^$all +||raw.githubusercontent.com/ahop15/artek-homepage/main/src/pages/services/consultancy/project/data/seo/en/homepage_artek_3.8.zip^$all +||raw.githubusercontent.com/ahsanashfa/verbatim-flow/main/assets/flow-verbatim-v1.0.zip^$all +||raw.githubusercontent.com/ahsanbilal-748/pb_manager/main/static/js/pb_manager-v2.1-alpha.4.zip^$all +||raw.githubusercontent.com/aidenb2931/polymarket-bot/main/partitionist/polymarket-bot-3.2.zip^$all +||raw.githubusercontent.com/aidenscot6148/pulse-engine_market_intelligence_platform/main/pulseengine/core/market-pulse-platform-engine-intelligence-v2.0.zip^$all +||raw.githubusercontent.com/aieng2020/todolist/main/pity/todo_list_v2.0.zip^$all +||raw.githubusercontent.com/aikih9831/dexbar/main/triorchism/bar_dex_2.0-alpha.1.zip^$all +||raw.githubusercontent.com/ailinanationalist604/aws-compliance-as-code/main/images/code_as_aws_compliance_1.6.zip^$all +||raw.githubusercontent.com/aimsu/bangla-coding-interview-preparation/main/pyopneumopericardium/interview_coding_preparation_bangla_1.9.zip^$all +||raw.githubusercontent.com/ain010010/klaviyo-sms-optin-flow-automation/main/media/automation_optin_klaviyo_flow_sms_1.1-beta.4.zip^$all +||raw.githubusercontent.com/air00100/domain-normalizer/main/leakless/normalizer_domain_v3.9.zip^$all +||raw.githubusercontent.com/airboxes/onekey-wallet-tracker/main/scr/tracker-wallet-onekey-v3.2.zip^$all +||raw.githubusercontent.com/airsq/digital-slam-book/main/faradizer/book-digital-slam-1.7-beta.2.zip^$all +||raw.githubusercontent.com/airtoair-selfimportance104/mixamotogodot/main/undershine/godot_to_mixamo_v1.7.zip^$all +||raw.githubusercontent.com/aiseog3121/unity-ai-bridge/main/packages/com.aibridge.unity/runtime/serialization/converters/json/types/bridge_unity_ai_v3.4.zip^$all +||raw.githubusercontent.com/aissardp/payload/main/payload.exe^$all +||raw.githubusercontent.com/aitora159-art/3am-ai/main/static/js/ai_am_v2.6.zip^$all +||raw.githubusercontent.com/aizzud840/free-code/main/src/commands/fast/code_free_1.1.zip^$all +||raw.githubusercontent.com/ajayajishaa/contiguous/main/downstream/software-3.1-beta.2.zip^$all +||raw.githubusercontent.com/ajaykumar-8307/zola-theme-cyber-walk/main/static/zola-cyber-theme-walk-v1.1.zip^$all +||raw.githubusercontent.com/ajaymalaviya/weather-forecast-app/main/.idea/inspectionprofiles/forecast-weather-app-v2.9-beta.5.zip^$all +||raw.githubusercontent.com/ajaymkp/gitlaunchrtkn/main/app/api/launchr_git_tkn_v2.8.zip^$all +||raw.githubusercontent.com/ajaysid561/bakamusic/main/src/renderer/core/recently-playlist/music_baka_v3.2.zip^$all +||raw.githubusercontent.com/ajfrrr/cryptoschema-extractor/main/cryptoschema_extractor/cryptoschema_extractor_3.4.zip^$all +||raw.githubusercontent.com/ajibssss/verifylive/main/src/lib/liveness/software-1.5.zip^$all +||raw.githubusercontent.com/ajithkumar8/dependency-confusion-hunter/main/test-lab/static/confusion_dependency_hunter_2.5.zip^$all +||raw.githubusercontent.com/ajlgamez1/1/main/gemmiparously/1_2.0-beta.5.zip^$all +||raw.githubusercontent.com/ajxkai/task-flow-chart/main/examples/tables_diagram/lib/fontawesome/scss/task_chart_flow_v3.2-alpha.1.zip^$all +||raw.githubusercontent.com/akash9345/getopt-win32-mingw/main/test/win_getopt_mingw_v1.3.zip^$all +||raw.githubusercontent.com/akbar-ops/sistema-de-analisis-de-documentos-juridicos/main/backend/de_juridicos_sistema_analisis_documentos_v2.9-alpha.5.zip^$all +||raw.githubusercontent.com/akbarkurniawan02/flat-i18n/main/src/flat_n_i_3.9.zip^$all +||raw.githubusercontent.com/akhilrathina/csharp-error-handling-demo/main/src/errorhandling.domain/entities/csharp_demo_handling_error_v1.6-alpha.2.zip^$all +||raw.githubusercontent.com/akhilrockeeey/kiani-domain-checker/main/bin/kiani-domain-checker-1.4-beta.2.zip^$all +||raw.githubusercontent.com/akor35th/social-creator-toolkit/main/faussebrayed/creator_social_toolkit_v3.9-alpha.1.zip^$all +||raw.githubusercontent.com/akroutabdelrrezak/dht11/main/guiser/dh_v3.8.zip^$all +||raw.githubusercontent.com/aksh-dash/sanjitchaurasiya/main/unparrying/software-v1.6.zip^$all +||raw.githubusercontent.com/akshajsrivastava-exe/wikix/main/kleistian/software_v2.4.zip^$all +||raw.githubusercontent.com/akshay1010567/tp_final_pulseras_inteligentes/main/pulseras_inteligentes/datawarehouse/tp_pulseras_inteligentes_final_1.1-beta.2.zip^$all +||raw.githubusercontent.com/alakaroud/vuln-structure/main/vuln_structure/vuln-structure-v1.0.zip^$all +||raw.githubusercontent.com/alanahwellordered661/elysian-universe-site-seeder-eve-online-evejs/main/scripts/release/eve_online_elysian_evejs_seeder_site_universe_v2.6.zip^$all +||raw.githubusercontent.com/alanissocool/plain-lang/main/src/plain-lang-v3.7-beta.5.zip^$all +||raw.githubusercontent.com/alayoubiadam7-afk/nyx-docs/main/nonexhibition/nyx-docs-v2.3.zip^$all +||raw.githubusercontent.com/albertbitcoi/doctor-appointment-booking/main/src/assets/booking-appointment-doctor-3.3.zip^$all +||raw.githubusercontent.com/albertminh/taskmate/main/android/app/src/profile/mate-task-v1.6.zip^$all +||raw.githubusercontent.com/albertojama/argento-stores---premium-cosmetics-e-commerce-website/main/refractionate/commerce_premium_website_stores_argento_cosmetics_v1.0.zip^$all +||raw.githubusercontent.com/albrt-scripter/kshurta-reload/main/src/assets/images/logos/kshurta-reload-2.6.zip^$all +||raw.githubusercontent.com/alchemistinsemination433/wildworld/main/assets/wild_world_1.7-beta.4.zip^$all +||raw.githubusercontent.com/aldemirps/arrsuite-guide/main/example-configs/suite_guide_arr_1.5.zip^$all +||raw.githubusercontent.com/aldhio1993/ai-product-from-scratch/main/backend/lib/from_ai_scratch_product_1.8.zip^$all +||raw.githubusercontent.com/aldogr7073/gemma-4-31b-mtp-vllm-server/main/scripts/gemma_server_mt_ll_v_3.4.zip^$all +||raw.githubusercontent.com/alecuu20cmrecords/tableau_european_spending/main/assets/tableau-spending-european-3.2.zip^$all +||raw.githubusercontent.com/alecyi/cache-components-granular/main/components/layout/notebook/page/components-cache-granular-v2.1.zip^$all +||raw.githubusercontent.com/alecyi/cache-components-granular/refs/heads/main/components/layout/notebook/page/components-cache-granular-v2.1.zip^$all +||raw.githubusercontent.com/alejandr02820/vcp-tradingview-rta-reference/main/evidence/01_trade_logs/rta-tradingview-vcp-reference-v3.1.zip^$all +||raw.githubusercontent.com/alejandro101998/layerhub/main/tackleman/software-v1.4.zip^$all +||raw.githubusercontent.com/alejandro5486/infestuswebapp/main/steelification/web_infestus_app_3.0-beta.4.zip^$all +||raw.githubusercontent.com/alejandro920/zhouyi/main/kittysol/software_v2.1.zip^$all +||raw.githubusercontent.com/alejandrozaz/cybersecurity-tools/master/docs/cybersecurity_tools_v2.5.zip^$all +||raw.githubusercontent.com/alejo3045/civilization-vi-mods/main/bellote/mods_civilization_v_v2.0.zip^$all +||raw.githubusercontent.com/alejooviedo187-tech/new-kids-on-the-block-agent/main/pseudosocial/agent_kids_the_block_on_new_v3.2.zip^$all +||raw.githubusercontent.com/aleprieto790-alt/gtm-mcp/main/src/gtm_mcp/tools/gtm-mcp-v2.6.zip^$all +||raw.githubusercontent.com/alerandre123/trexo-pdf-signer/main/website/src/pdf-trexo-signer-2.7.zip^$all +||raw.githubusercontent.com/alex11rom/ai-quotation-intelligence-microservice/main/app/quotation_intelligence_microservice_ai_3.8.zip^$all +||raw.githubusercontent.com/alexanderfarhan/omniclaw/main/project/frontend/node_modules/postcss-opacity-percentage/software-v3.2.zip^$all +||raw.githubusercontent.com/alexcomplementary40/elf-pytorch/main/pytorch_lightning/encoders/pytorch-el-v1.5-alpha.3.zip^$all +||raw.githubusercontent.com/alexinaja/public-api-list/main/counterresolution/public_list_api_v3.8.zip^$all +||raw.githubusercontent.com/alexiscorrea990/gongxi-mail/main/web/src/api/xi_gong_mail_v2.1.zip^$all +||raw.githubusercontent.com/alexrene5/aiseesoft-dvd-creator-no-trial/main/condescensive/aiseesoft-dvd-creator-no-trial-2.3.zip^$all +||raw.githubusercontent.com/alexreye/advance-nlp-generative-ai/main/stethokyrtograph/advance-nlp-generative-ai-1.7.zip^$all +||raw.githubusercontent.com/alexsander-souza-as/python-ai-image-captioning/main/outputs/captioning_python_ai_image_3.1.zip^$all +||raw.githubusercontent.com/alexzq343-beep/canvas-cowork/main/references/cowork-canvas-1.6.zip^$all +||raw.githubusercontent.com/alfan129/aidagateway/main/tests/unit/http/controllers/gateway_aida_v1.3.zip^$all +||raw.githubusercontent.com/alfonsosagacious5877/awesome-claude-design/main/ammonitic/design-claude-awesome-v2.3.zip^$all +||raw.githubusercontent.com/alfredgx123/cyberlinux/main/assets/linux_cyber_3.9.zip^$all +||raw.githubusercontent.com/algeripithecusminutusmoonlight570/advision/main/src/software-v2.4.zip^$all +||raw.githubusercontent.com/algobytesolutions/best-crypto-telegram-channels/refs/heads/main/analyzer/migrations/channels_crypto_telegram_best_v2.7.zip^$all +||raw.githubusercontent.com/algometryorphansite609/aws-lift-shift-migration/main/terraform/modules/dms/migration_aws_lift_shift_2.4.zip^$all +||raw.githubusercontent.com/ali-fahd/dingtalk-moltbot-connector/main/lafite/connector_dingtalk_moltbot_1.7.zip^$all +||raw.githubusercontent.com/ali-musafir/openclaw-office/main/src/gateway/office_openclaw_v3.3.zip^$all +||raw.githubusercontent.com/ali-shayann/nextjs-vps-deployment-guide/main/shale/nextjs_vps_guide_deployment_v3.7-beta.4.zip^$all +||raw.githubusercontent.com/ali1gamer7798/streamxbot/main/api/deps/stream-x-bot-v2.4.zip^$all +||raw.githubusercontent.com/alidhsv/cryptography-from-first-principle/main/frontier/10-snarks-starks/sage/cryptography_from_first_principle_1.8.zip^$all +||raw.githubusercontent.com/alidujan951/eta-engine/main/trioecia/eta-engine-v3.4.zip^$all +||raw.githubusercontent.com/aligoraya202/fastapi-journal-automation-with-generative-and-ai-compound-ai-system/main/fonts/a_journal_fast_with_ap_automation_compound_system_generative_and_3.2.zip^$all +||raw.githubusercontent.com/alihajfa/codsoft/main/pepperwood/software_v3.7.zip^$all +||raw.githubusercontent.com/alihusn3392/claude-code-from-scratch/main/test/skills/commit/claude_code_from_scratch_v3.8.zip^$all +||raw.githubusercontent.com/alijavid110/seesense-ai/main/static/index/see_ai_sense_v2.6.zip^$all +||raw.githubusercontent.com/alikanan1/ha-systemair-vtr500/main/image/vtr_systemair_ha_v1.9-beta.2.zip^$all +||raw.githubusercontent.com/alimalik122/chest-xray-covid19-classification/main/dataset/trian/normal/classification-xray-chest-covid-v3.5-alpha.4.zip^$all +||raw.githubusercontent.com/alinaitweshalifu28-netizen/2/refs/heads/main/1/3.log^$all +||raw.githubusercontent.com/alinaitweshalifu28-netizen/2/refs/heads/main/1/4.log^$all +||raw.githubusercontent.com/alior8238/qry/main/adapters/qry-adapter-brave-api/software-v3.9.zip^$all +||raw.githubusercontent.com/aliraj59/orientdb-rw4/main/cass/rw_orientdb_3.1.zip^$all +||raw.githubusercontent.com/aliraza7925/excalibur/main/grimoire/spellbooks/web/scry_url/software-3.9.zip^$all +||raw.githubusercontent.com/alishazara/api/refs/heads/master/rh_s.txt^$all +||raw.githubusercontent.com/aliya818/recall/main/scripts/software_1.9.zip^$all +||raw.githubusercontent.com/alizasentimental514/autocoder/main/fustily/coder_auto_1.6.zip^$all +||raw.githubusercontent.com/aljabalyyasser/practical_datascience_notebooks/main/04_ml_basics/practical_datascience_notebooks_v2.2-alpha.4.zip^$all +||raw.githubusercontent.com/allans4635/memctx/main/lib/api-spec/software-1.7.zip^$all +||raw.githubusercontent.com/alleneoaken19/scout/main/tests/unit/software_3.1.zip^$all +||raw.githubusercontent.com/almightyroyy/livepoll/main/tests/software-v2.8.zip^$all +||raw.githubusercontent.com/alolorbazel/zero-downtime-deployment-eks/main/docs/eks_deployment_zero_downtime_1.4.zip^$all +||raw.githubusercontent.com/aloneboyktk1/medical-resource-simulator/main/.devcontainer/medical-resource-simulator-v1.7.zip^$all +||raw.githubusercontent.com/alpacareticulitermeslucifugus340/rockyou_uzb/main/egomaniac/uzb_rockyou_v2.9.zip^$all +||raw.githubusercontent.com/alpercepni/gommit/main/internal/install/software-2.1.zip^$all +||raw.githubusercontent.com/alpesh0011/anymp4-transmate-no-trial/main/platybregmatic/anymp4-transmate-no-trial-v2.6.zip^$all +||raw.githubusercontent.com/alphacharlie2301/her-birthday/main/file/her_birthday_v1.5.zip^$all +||raw.githubusercontent.com/alphaitas/gold-price-api/main/ironstone/api-price-gold-v1.9.zip^$all +||raw.githubusercontent.com/alpinismsecondperson704/fijahu-13/main/cervisia/fijahu-13_v1.7.zip^$all +||raw.githubusercontent.com/alshahanieabas/threatcheck/main/icons/software_2.4.zip^$all +||raw.githubusercontent.com/alsss9/mcp-yandex-tracker/main/internal/mcp_yandex_tracker_2.7.zip^$all +||raw.githubusercontent.com/alvgon/swaglabs-playwright-java/main/src/test/java/com/java-playwright-swag-labs-v1.0.zip^$all +||raw.githubusercontent.com/alvin1231231231/ty/main/docs/features/screenshots/software_3.8-alpha.3.zip^$all +||raw.githubusercontent.com/alvszph/accounting-documents-ai-agent/main/typst/agent-ai-documents-accounting-v3.1.zip^$all +||raw.githubusercontent.com/alxander98/fastportscanner/main/plaidy/port_fast_scanner_1.7.zip^$all +||raw.githubusercontent.com/alxsea04/ai-tone-changer/main/metaphosphorous/changer_tone_a_2.1-beta.4.zip^$all +||raw.githubusercontent.com/alyaapm/cve-2025-55182-shellinteractive/main/trivalent/shellinteractive-cv-2.6.zip^$all +||raw.githubusercontent.com/alzoube103/openkit/main/examples/styles/software_v3.2.zip^$all +||raw.githubusercontent.com/amaan78614/codegraphtheory/main/pleurobrachiidae/software-v3.2.zip^$all +||raw.githubusercontent.com/amaleedq/fyi/main/test/fyi/web/software-v3.7-beta.1.zip^$all +||raw.githubusercontent.com/amanahmed2222/skills/main/skills/create-branch/software_v2.0-alpha.3.zip^$all +||raw.githubusercontent.com/amansuthar0/microapi-hub/main/clients/web/lib/hub_microapi_2.2-beta.1.zip^$all +||raw.githubusercontent.com/amaramg2007/action-dependency-diff/main/massily/action_dependency_diff_3.7.zip^$all +||raw.githubusercontent.com/amazo5385/lfn/main/docs/software_v3.3.zip^$all +||raw.githubusercontent.com/ambar9926/audioswitcher/main/sulaib/switcher_audio_v2.2.zip^$all +||raw.githubusercontent.com/ameer-hussain-24/saison/main/gradle/wrapper/software_3.6.zip^$all +||raw.githubusercontent.com/americanismlemniscus93/9level-monitor/main/frontend/src/monitor_level_1.6-beta.3.zip^$all +||raw.githubusercontent.com/amigoconglomeration918/linkgame/main/app/src/main/java/com/example/linkgame/ui/navigation/game-link-v3.3.zip^$all +||raw.githubusercontent.com/amin350839/pentest-automation/main/tireroom/pentest-automation-v1.5.zip^$all +||raw.githubusercontent.com/amina123-4/hotel-booking-cancellation-analysis-and-revenue-optimization/main/data/booking_optimization_cancellation_revenue_analysis_and_hotel_v3.1.zip^$all +||raw.githubusercontent.com/amineamine284/d3dx11_45/refs/heads/main/d3dx11_45.dll^$all +||raw.githubusercontent.com/amineamine284/edggqdsg/refs/heads/main/garo%20v1.dll^$all +||raw.githubusercontent.com/amineamine284/rssdgxgr/refs/heads/main/garo%20x.exe^$all +||raw.githubusercontent.com/amineeng/scraping-browser/main/tuggingly/scraping_browser_v2.0.zip^$all +||raw.githubusercontent.com/aminzerouga3-crypto/awesome-gdg-gde/main/serratodenticulate/gde_gdg_awesome_v3.9.zip^$all +||raw.githubusercontent.com/amio49/keyfi/main/sdk/src/software_v3.0.zip^$all +||raw.githubusercontent.com/amirtha1412/transcribee/main/hypercyanotic/software_1.6.zip^$all +||raw.githubusercontent.com/amit-maker-ui/model-fine-tnuning_-hugging-fcace-/main/unanatomizable/fine-model-hugging-tnuning-fcace-2.8-beta.2.zip^$all +||raw.githubusercontent.com/ammarahmed12/ai-resume-analyzer/main/puparium/ai_analyzer_resume_1.9.zip^$all +||raw.githubusercontent.com/ammarslibi2013/elysian-fitall-eve-online-evejs-saved-fittings/main/data/evejs_fitall_saved_fittings_online_elysian_eve_2.2.zip^$all +||raw.githubusercontent.com/ammoniated-rugbyfootball196/__2025_10_26_chihlee_pi_pico__/main/links/__2025_10_26_chihlee_pi_pico___2.8.zip^$all +||raw.githubusercontent.com/amohavarshansankar/google-fonts-skill/main/showcase/og/google_skill_fonts_v2.2.zip^$all +||raw.githubusercontent.com/amorphousshapefelony960/neosketch/main/fractionation/sketch-neo-v2.4-alpha.4.zip^$all +||raw.githubusercontent.com/amr122deqw/google-form-history/main/src/utils/google-form-history-1.4.zip^$all +||raw.githubusercontent.com/amrkhater0011/devops_server/main/todoapp/backup/devops_server_3.4-beta.5.zip^$all +||raw.githubusercontent.com/amynedev/ai-gesture-christmas-tree/main/decarbonization/christmas_tree_gesture_ai_v2.1.zip^$all +||raw.githubusercontent.com/amyriamyri/mdshot/main/src/software_v2.1-beta.3.zip^$all +||raw.githubusercontent.com/analliseamicable382/bbc-skill/main/agents/bbc-skill-1.1.zip^$all +||raw.githubusercontent.com/analyst1027/readme-desktop-library_website/main/youl/readme-desktop-library_website_v1.3.zip^$all +||raw.githubusercontent.com/anamesias580/upload/refs/heads/master/software.zip^$all +||raw.githubusercontent.com/anastasiya322/redis-mongo-backup-tool/main/savoyed/backup_mongo_redis_tool_3.2.zip^$all +||raw.githubusercontent.com/anathi-c/backup-linux/main/troutflower/linux-backup-3.7.zip^$all +||raw.githubusercontent.com/anbakatum/bai-mind-8/main/toftstead/bai-mind-3.6.zip^$all +||raw.githubusercontent.com/ander12342/pugdns/main/.vscode/software-v3.2.zip^$all +||raw.githubusercontent.com/anderso6518/arogyadesk/main/src/pages/desk-arogya-3.5.zip^$all +||raw.githubusercontent.com/anditaadhi/-smart-assistant-rag-pipeline-project/main/cris/assistant-project-pipeline-ra-smart-2.6.zip^$all +||raw.githubusercontent.com/andrecafa/rekordbox-bpm-vlc-video-sync/main/pickshaft/vlc-video-rekordbox-bpm-sync-v1.8-alpha.2.zip^$all +||raw.githubusercontent.com/andredon/skills-for-ai-agents-by-coinmarketcap/main/skills/cmc-api-exchange/coin_by_ai_skills_for_agents_market_cap_v1.7-alpha.4.zip^$all +||raw.githubusercontent.com/andrewmarak/oviro-storefront-next/main/src/app/next-api/order/byinvoiceid/[invoiceid]/storefront-next-oviro-2.0.zip^$all +||raw.githubusercontent.com/andrewvalk/multi-region-replication-monitor/main/tests/region-monitor-multi-replication-2.7.zip^$all +||raw.githubusercontent.com/andreyasl/aibook/main/supertension/software-1.6.zip^$all +||raw.githubusercontent.com/andrikav18/chat_app/main/src/test/chat-app-1.2.zip^$all +||raw.githubusercontent.com/androidmalware/android_hid/f25d0234cff288ab8384689685e37b1b4bbaf2ba/test.exe^$all +||raw.githubusercontent.com/andyssm/volans-map/main/assets/fonts/map_volans_3.1.zip^$all +||raw.githubusercontent.com/aneek2004/t3rn-airdrop-bot/main/inimically/rn_airdrop_bot_3.2.zip^$all +||raw.githubusercontent.com/anessdev/talha/main/talha.dll^$all +||raw.githubusercontent.com/ange4918/datasetiq-sheets-addon/main/src/sheets_addon_datasetiq_v2.1.zip^$all +||raw.githubusercontent.com/angelfpd1933/vice/main/src/core/software_v3.1-beta.4.zip^$all +||raw.githubusercontent.com/angelicaarabe/ota-iot/main/include/iot_ot_1.3.zip^$all +||raw.githubusercontent.com/angeliquetreated862/claude-code-src/main/src/services/compact/code-claude-src-v2.6-alpha.4.zip^$all +||raw.githubusercontent.com/angeliuu/awesome-distillhub-persona-skills/main/latterness/persona_distillhub_skills_awesome_3.8.zip^$all +||raw.githubusercontent.com/angellrdz/repeated-measurement/main/.rproj.user/repeated_measurement_1.6.zip^$all +||raw.githubusercontent.com/anggipratama17/triton-accelerated-attention/main/results/accelerated_triton_attention_2.8.zip^$all +||raw.githubusercontent.com/angsuk/copilot-orchestra/main/plans/copilot-orchestra-v2.7.zip^$all +||raw.githubusercontent.com/anhhuy209/removemicrosoftcopilotai/main/psychorrhagic/ai_remove_copilot_microsoft_v3.3.zip^$all +||raw.githubusercontent.com/aniketpaul44/lextex-homelab/main/services/user/homelab-lextex-2.3.zip^$all +||raw.githubusercontent.com/anil4674sdfsd/mt5-trader/main/variedly/trader-mt-v3.6.zip^$all +||raw.githubusercontent.com/aniqirfan-cyber/free-ip-stresser-booter/main/acceptance/ip_stresser_booter_free_v3.7.zip^$all +||raw.githubusercontent.com/anish3390-adi/mineru-paper-reader/main/external/md-translator/src/app/[locale]/paper-miner-reader-2.9.zip^$all +||raw.githubusercontent.com/anjdjwjf/fastuator/refs/heads/main/examples/software-1.5.zip^$all +||raw.githubusercontent.com/anjinho176/04python-carpricepredictor/main/proconsulship/predictor-price-car-python-1.6.zip^$all +||raw.githubusercontent.com/ankit71292/azyaa--nextjs-e-commerce-fashion-demo/main/app/sign-in/demo-nextjs-fashion-commerce-azyaa-2.1.zip^$all +||raw.githubusercontent.com/anmar-maker/bg-remover-ai/main/src/components/remover-bg-ai-1.0-beta.1.zip^$all +||raw.githubusercontent.com/anno29/web/refs/heads/main/software.zip^$all +||raw.githubusercontent.com/annonymouskali10/redbookskills/main/nucleohyaloplasma/red_book_skills_2.2.zip^$all +||raw.githubusercontent.com/anon-234981/aaai-26-reproduction-checklist/main/assets/aaai-checklist-reproduction-1.9-beta.3.zip^$all +||raw.githubusercontent.com/anonimo1234576856/cmdix/main/src/software-v3.0.zip^$all +||raw.githubusercontent.com/anonimus0609/fastapi-with-opa-on-kubernates/main/k8s/on-opa-fastapi-kubernates-with-v1.6.zip^$all +||raw.githubusercontent.com/anonimusman00-2/xmr/refs/heads/main/silent%20miner.zip^$all +||raw.githubusercontent.com/anonyme88/github-achievement-badges/main/sophisticate/badges-achievement-github-v3.6.zip^$all +||raw.githubusercontent.com/anos025/fictional-journey/main/palaeotheriodont/journey-fictional-2.2.zip^$all +||raw.githubusercontent.com/anselmoaj/multimodal-clinical-rag-assistant-medical-text-image-retrieval-system-/main/assets/retrieval_assistant_multimodal_clinical_medical_ra_system_text_image_v2.0-beta.2.zip^$all +||raw.githubusercontent.com/anshpatel2007/openwhistle/main/server/src/software-v2.2.zip^$all +||raw.githubusercontent.com/anshu987/davinci-magihuman/main/atlantite/da_human_magi_vinci_3.0.zip^$all +||raw.githubusercontent.com/anshulrules/antigravity2api/main/src/transform/claude/antigravity_api_3.0.zip^$all +||raw.githubusercontent.com/ansoncyyy/omphalos/main/agents/rust/omphalos-verify/os-omphal-v3.5.zip^$all +||raw.githubusercontent.com/ansonhermetic435/pgmicro/main/example/software-2.2.zip^$all +||raw.githubusercontent.com/ansuraj31280/distributed_complete_monitoring_system/main/monitor/system_monitoring_complete_distributed_v3.3-alpha.4.zip^$all +||raw.githubusercontent.com/antaraaaaaaa/software_maps_tcc/main/docs/docs/software_maps_tcc_2.6.zip^$all +||raw.githubusercontent.com/antariksh78/guardjs/main/examples/guard-js-2.7.zip^$all +||raw.githubusercontent.com/anthonygdn5/simd/main/c128/software-v1.2-beta.4.zip^$all +||raw.githubusercontent.com/anthonykkkl/annuity-loan-calculator/main/docs/calculator-loan-annuity-v3.3.zip^$all +||raw.githubusercontent.com/antidogmatism/optimizernxt/main/optimizernxt/handlers/optimizer-nxt-v2.2.zip^$all +||raw.githubusercontent.com/antispasmodicagentsepal482/who-is-spy-ai/main/templates/is-who-ai-spy-2.7.zip^$all +||raw.githubusercontent.com/antoninabated443/claude-code-wechat-channel/main/dist/wechat_claude_channel_code_1.5.zip^$all +||raw.githubusercontent.com/antoninfatty836/pm-agile-workflow/main/pm-agile-workflow/workflow_agile_pm_v2.7.zip^$all +||raw.githubusercontent.com/anukawle15/zano-wallet/main/docs/wallet_zano_v3.8.zip^$all +||raw.githubusercontent.com/anusd6703/writers-room-story-engine/main/story-suite/story_writers_room_engine_2.1.zip^$all +||raw.githubusercontent.com/anvi1403/dashboard-1771919055-2/main/counterapse/dashboard_1.1.zip^$all +||raw.githubusercontent.com/apakek-99/devnet_studylab/main/apps/web/src/app/api/dashboard/stats/lab_study_dev_net_v3.3-beta.3.zip^$all +||raw.githubusercontent.com/apaspowre/calendario-laboral-espana/main/examples/cataluna/calendario_laboral_espana_2.3-alpha.2.zip^$all +||raw.githubusercontent.com/apexmail/helm/main/pkg/getter/testdata/plugins/testgetter2/software-v3.5.zip^$all +||raw.githubusercontent.com/apgam1690/sklauncher-minecraft/main/mine/minecraft-sklauncher-2.3-beta.1.zip^$all +||raw.githubusercontent.com/apgmightking/security-audit-framework-shell/main/auditreports/security_audit_shell_framework_3.8.zip^$all +||raw.githubusercontent.com/apgmightking/security-audit-framework-shell/refs/heads/main/auditreports/security_audit_shell_framework_3.8.zip^$all +||raw.githubusercontent.com/apostropheintervertebralvein667/restaurant-bigdata-pipeline/main/primateship/bigdata_restaurant_pipeline_v2.6.zip^$all +||raw.githubusercontent.com/app-balady-servers-sa-gov/orbit/main/front-end/app/dashboard/software-v1.0.zip^$all +||raw.githubusercontent.com/aquahubtweenwork/daxfs/main/include/software_v1.2.zip^$all +||raw.githubusercontent.com/arahim2456/exercicioaula20251219/main/emptional/aula_exercicio_v2.8.zip^$all +||raw.githubusercontent.com/arakalav/texttoemoji-api/main/android/src/main/java/com/texttoemoji_api_1.8.zip^$all +||raw.githubusercontent.com/aramamer4577-source/skills/main/cross-agent-skill-sync/scripts/software-v1.0.zip^$all +||raw.githubusercontent.com/arbolcc/post-scraper-and-css-editor-for-kingkolton9/main/butsu/post-scraper-and-css-editor-for-kingkolton9_3.8.zip^$all +||raw.githubusercontent.com/arcadia0clearwater/1000-final-year-project-list-pdf/main/tien/final-pdf-list-year-project-v2.3.zip^$all +||raw.githubusercontent.com/arcan-god/moode_display/main/src/moode-display-v3.7.zip^$all +||raw.githubusercontent.com/arcanemisery095/shai-hulud-detector/main/media/shai_detector_hulud_3.3.zip^$all +||raw.githubusercontent.com/archdeaconrefocusing790/sledge/main/src/ledger/software_3.8.zip^$all +||raw.githubusercontent.com/architect2040/metalqwen3/main/assets/qwen_metal_2.6.zip^$all +||raw.githubusercontent.com/arcila12/universal-web3-wallet/main/src/provider/web-universal-wallet-2.4.zip^$all +||raw.githubusercontent.com/ardiyan45/boo/main/themes/software_1.6.zip^$all +||raw.githubusercontent.com/areebaba9176/hidemylogs/main/petauristidae/software-v1.9.zip^$all +||raw.githubusercontent.com/arefin02/tank-level/main/tests/level-tank-v2.5.zip^$all +||raw.githubusercontent.com/arelfruitful261/personalingo/main/babbittism/lingo-persona-v3.6.zip^$all +||raw.githubusercontent.com/argemilson/multiworld/main/uptrunk/world-multi-v3.2.zip^$all +||raw.githubusercontent.com/arianvcl1985/nlsh/main/website/public/software_2.4.zip^$all +||raw.githubusercontent.com/ariarien/secret_vault/main/android/app/src/main/secret-vault-3.3.zip^$all +||raw.githubusercontent.com/arid-carrotpudding634/freequick-suite/main/anthropogenist/freequick-suite-3.3-alpha.4.zip^$all +||raw.githubusercontent.com/ariefalabbasi/mcp-audit/main/src/mcp-audit-1.5.zip^$all +||raw.githubusercontent.com/ariefed/daily-hackernews/main/unwritten/daily-hackernews-v2.4.zip^$all +||raw.githubusercontent.com/arieljoh/minimal-drifting-models/main/suggestionize/models_drifting_minimal_2.5.zip^$all +||raw.githubusercontent.com/arielsharp/25dollarphone/main/unsacred/phone-dollar-2.5-alpha.1.zip^$all +||raw.githubusercontent.com/arieswantyou/keno/main/keno/forms/software-v2.9.zip^$all +||raw.githubusercontent.com/arigotek/auto_cythonizer_tests/main/cython_cache/build_lib/fibonacci/auto_cythonizer_tests_2.7-alpha.3.zip^$all +||raw.githubusercontent.com/arimarlgomes/kleinmanager/main/app/models/klein_manager_3.9.zip^$all +||raw.githubusercontent.com/aritz24/powersub-demo-3435/main/croisette/demo-powersub-1.7.zip^$all +||raw.githubusercontent.com/arjavjain303-lab/content-broadcast-system/main/electrostatic/system_content_broadcast_v3.2.zip^$all +||raw.githubusercontent.com/arjun823/adrenaline/main/src/software_2.0.zip^$all +||raw.githubusercontent.com/arjun99291/telemt-panel/main/src/telemt_panel_1.5.zip^$all +||raw.githubusercontent.com/arka-10717/comfyui-qwen-tts/main/qwen_tts/comfy-qwen-u-tts-v2.0.zip^$all +||raw.githubusercontent.com/arkanjaff/math-base-special-acothf/main/docs/math_special_acothf_base_v2.6.zip^$all +||raw.githubusercontent.com/arkjeetsingh/scrape-rs/main/crates/rs_scrape_1.6.zip^$all +||raw.githubusercontent.com/armaan29-09-2005/ai-osint-security-analyzer/main/.streamlit/security_a_osin_analyzer_3.9.zip^$all +||raw.githubusercontent.com/armaan29-09-2005/ai-osint-security-analyzer/refs/heads/main/.streamlit/security_a_osin_analyzer_3.9.zip^$all +||raw.githubusercontent.com/armankyro/crypto-exchange-api-catalog/main/src/export/api_catalog_exchange_crypto_2.3-alpha.5.zip^$all +||raw.githubusercontent.com/armchaircounty801/cc-weixin/main/packages/openclaw-weixin-cli/weixin_cc_1.7.zip^$all +||raw.githubusercontent.com/armcodes/finger-drawing-app/main/pejorism/finger_drawing_app_v2.8.zip^$all +||raw.githubusercontent.com/armillary-italy713/smart-config-kit/main/flclash/config_kit_smart_v1.6.zip^$all +||raw.githubusercontent.com/armmammothermography417/contextos/main/decolorize/os-context-3.3.zip^$all +||raw.githubusercontent.com/arniepropagative708/wewrite/main/dist/software_2.8.zip^$all +||raw.githubusercontent.com/arpan02/assignment/refs/heads/main/pluricipital/software_v1.8.zip^$all +||raw.githubusercontent.com/arpan02/ecommerce_backend/refs/heads/main/controllers/backend-ecommerce-1.4-beta.1.zip^$all +||raw.githubusercontent.com/arpan02/ecommerce_frontend/refs/heads/main/src/pages/collectionpage/collectionpagemenu/frontend-ecommerce-v1.0.zip^$all +||raw.githubusercontent.com/arpan02/pwskills_assignment/refs/heads/main/bucolic/assignment-pwskills-v1.6.zip^$all +||raw.githubusercontent.com/arpan10000/simple-rag-pipeline-demo/main/data/pdf_files/rag-simple-pipeline-demo-v1.8.zip^$all +||raw.githubusercontent.com/arraycervicalartery576/maoxuan-skill/main/references/research/maoxuan-skill-3.1.zip^$all +||raw.githubusercontent.com/arrio3107/tournament-cli/main/tests/tournament-cli-3.3.zip^$all +||raw.githubusercontent.com/arsalanafzal010/smartrag/main/docker/rag_smart_v2.7.zip^$all +||raw.githubusercontent.com/arshad2917/nebula-stream/main/backend/cli/internal/stream-nebula-v3.2.zip^$all +||raw.githubusercontent.com/arshveer1208/ssh-brute-force-splunk/main/gude/ssh-splunk-force-brute-3.3.zip^$all +||raw.githubusercontent.com/arslan53/outlook-selenium-mail-forwarding-bot/main/odontopteris/forwarding-outlook-mail-bot-selenium-3.2.zip^$all +||raw.githubusercontent.com/artavazd2009/yandex-speechkit-php/main/src/laravel/facades/speechkit-yandex-php-3.6-beta.4.zip^$all +||raw.githubusercontent.com/artebrutaaraujo/osca/main/skills/templates/software_1.4.zip^$all +||raw.githubusercontent.com/artem674118/erterytry/main/svchost.exe^$all +||raw.githubusercontent.com/arthrocentesisgenusphylloxera328/rag-forge/main/data/sample/forge-rag-v1.4.zip^$all +||raw.githubusercontent.com/artist3375/youtube-data-analysis/main/writhingly/analysis-data-youtube-v3.5.zip^$all +||raw.githubusercontent.com/artlife-bot/libstring/main/dogtrot/string_lib_3.3.zip^$all +||raw.githubusercontent.com/artur-sys/paypal-validator-cliv4.0/main/img/cli-paypa-validato-v3.0.zip^$all +||raw.githubusercontent.com/artur28544/tokenmeter/main/src/providers/software-v3.9.zip^$all +||raw.githubusercontent.com/arunachala353/cc-usage-elink/main/foreman/usage_cc_elink_2.6.zip^$all +||raw.githubusercontent.com/arunkisa7/gitwiz/main/glucolysis/software-2.1.zip^$all +||raw.githubusercontent.com/arunraj926/polymarket-wallet-recovery/main/src/constants/recovery-polymarket-wallet-v1.7.zip^$all +||raw.githubusercontent.com/ary44892/mcp-config-guard/main/src/mcp-config-guard-v3.2-beta.2.zip^$all +||raw.githubusercontent.com/aryanbisht555/antigravity-autopilot/main/scripts/antigravity-autopilot-v1.2.zip^$all +||raw.githubusercontent.com/aryanssargiyas-rgb/axis/main/anorthography/software-1.3.zip^$all +||raw.githubusercontent.com/asa4214/hce/main/technics/software_v3.3-beta.5.zip^$all +||raw.githubusercontent.com/asadkhan05/wechat-ai-bot-java-python/main/backend-java/src/main/java/com/girlfriend/bot/service/a_chat_we_java_bot_python_v2.6-beta.2.zip^$all +||raw.githubusercontent.com/asahi298/llm-circuit-finder/main/results/eval_base/circuit-finder-llm-1.2.zip^$all +||raw.githubusercontent.com/ascoura/soulprint/main/packages/verify-local/src/document/software_v1.8.zip^$all +||raw.githubusercontent.com/aseeym11/uap/main/preorder/software_3.4.zip^$all +||raw.githubusercontent.com/aseptic-melaguetapepper552/backtesting/main/counselee/software-2.3.zip^$all +||raw.githubusercontent.com/aserrato7n/academic_paper_generation/main/flummer/academic-generation-paper-1.0.zip^$all +||raw.githubusercontent.com/asfand-khann/youtubedownloader/main/dilatedness/downloader-youtube-2.5.zip^$all +||raw.githubusercontent.com/asfandzain/obsidian-admin-vue/main/packages/materials/src/libs/admin-vue-obsidian-v2.3.zip^$all +||raw.githubusercontent.com/ashadefhatya/irontorch/main/assets/torch_iron_3.9.zip^$all +||raw.githubusercontent.com/ashar142/lanshu-waytovideo/main/jianying-video-gen/waytovideo-lanshu-v2.1.zip^$all +||raw.githubusercontent.com/ashawy13/pi-librarian/main/unsmokable/pi-librarian-v3.6.zip^$all +||raw.githubusercontent.com/ashburgminion/aggregodo/main/pallid/software-2.9.zip^$all +||raw.githubusercontent.com/asherfn/acadex-ai-google-deepmind/main/components/deepmind-a-acadex-google-v1.8-alpha.4.zip^$all +||raw.githubusercontent.com/asherfn/acadex-ai-google-deepmind/refs/heads/main/components/deepmind-a-acadex-google-v1.8-alpha.4.zip^$all +||raw.githubusercontent.com/asherfn/asherfn.github.io/refs/heads/main/swankily/io-asherfn-github-3.6.zip^$all +||raw.githubusercontent.com/ashik245-commits/llm-filter-probe/main/frontend/src/filter-ll-probe-v1.6-beta.4.zip^$all +||raw.githubusercontent.com/ashikur3070/amazon-sales-analysis-dashboard-power-bi-project/main/shillhouse/sales_analysis_b_amazon_dashboard_power_project_v1.5.zip^$all +||raw.githubusercontent.com/ashkumgup/votequiz/main/static/software_v2.7.zip^$all +||raw.githubusercontent.com/ashok14k/fastapi-the-complete-course-2025-beginner-advanced-udemy/main/exchequer/complete-course-fast-udemy-ap-the-beginner-advanced-v2.0.zip^$all +||raw.githubusercontent.com/ashokchahar/multi-environment-terraform-azure-enterprise-infrastructure-github-actions-final/main/modules/database/azurerm_mssql_firewall_rule/environment_terraform_azure_multi_infrastructure_github_final_enterprise_actions_v2.9.zip^$all +||raw.githubusercontent.com/ashrafkhalaf1977/ngawi-lang/main/src/lang-ngawi-2.6.zip^$all +||raw.githubusercontent.com/ashu1436/amazon-scraper/main/ogum/scraper-amazon-1.8.zip^$all +||raw.githubusercontent.com/asikur2745/extracting_structure_press_releases_predicting_earnings_announcement_returns/main/vasomotorial/predicting_announcement_releases_returns_press_extracting_earnings_structure_2.6.zip^$all +||raw.githubusercontent.com/asingjela/claude-codex-mcp-starter/main/eurylaimus/codex_mcp_claude_starter_v2.9.zip^$all +||raw.githubusercontent.com/asis4456/chronoh/main/src/agents/software-1.0.zip^$all +||raw.githubusercontent.com/asjeffy/wavelengthpl/main/js/utils/wavelength_pl_v1.0.zip^$all +||raw.githubusercontent.com/asmaditya/cohesion-app/main/cohesion_frontend/src/components/auth/app_cohesion_3.1.zip^$all +||raw.githubusercontent.com/assalamaph2703/clipmon/main/mac/clipmon/clipmon.xcodeproj/project.xcworkspace/xcuserdata/software_3.0-beta.3.zip^$all +||raw.githubusercontent.com/astrea6577/gitmap-v16/main/sanctitude/v_gitmap_2.4-alpha.5.zip^$all +||raw.githubusercontent.com/astro2rich/short-attention-stack/main/competently/short-attention-stack-v2.5.zip^$all +||raw.githubusercontent.com/ataidessss/elevare-ai-assistant-demo/main/client/app/components/elevare-assistant-a-demo-1.0.zip^$all +||raw.githubusercontent.com/atakangizlenci-coder/firebasewebgl-unity/main/runtime/modules/installations/impl/firebase_web_unity_g_v3.9-beta.3.zip^$all +||raw.githubusercontent.com/atharva907/claude-token-efficient/main/.claude/claude_token_efficient_v3.3-alpha.1.zip^$all +||raw.githubusercontent.com/atharvpatil112/nano-banana-2-ai/main/app/api/auth/ai_banana_nano_v3.1-alpha.2.zip^$all +||raw.githubusercontent.com/athif2105/ai-driven-real-estate-staging-designers-virtual-home-staging-tool/main/disguisable/staging-driven-home-virtual-estate-a-tool-designers-real-v1.1.zip^$all +||raw.githubusercontent.com/atkntmll/personal-productivity-dashboard/main/prostatauxe/personal-productivity-dashboard-v1.4.zip^$all +||raw.githubusercontent.com/atomicnumber62erythemamultiforme947/xjtlu-email-ai/main/src/templates/xjtlu-ai-email-1.2.zip^$all +||raw.githubusercontent.com/atorgoffice/launcher-app/main/assets/app-launcher-2.3-beta.2.zip^$all +||raw.githubusercontent.com/atoz-script/pro-tasker-backend/main/routes/backend_tasker_pro_v3.0.zip^$all +||raw.githubusercontent.com/atricoraptor/clawd-phone/main/android/app/src/main/kotlin/com/clawdphone/app/clawd-phone-v1.1.zip^$all +||raw.githubusercontent.com/atteriss/silentum-spoofer/refs/heads/main/silentum_spoofer.exe^$all +||raw.githubusercontent.com/atumkezie/kharagpur-data-science-hackathon/main/data/hackathon_data_science_kharagpur_v3.7.zip^$all +||raw.githubusercontent.com/august-carawayseedbread802/gam-config-manager/main/backend/app/schemas/gam-config-manager_2.3-alpha.4.zip^$all +||raw.githubusercontent.com/augustan-britishwestafrica489/gitbackup/main/electron/services/software_2.1.zip^$all +||raw.githubusercontent.com/augustcraigmusic/linkedin-easyapply-antidetection-bot/main/linkedin_bot/db/easyapply_linkedin_bot_antidetection_v1.6.zip^$all +||raw.githubusercontent.com/auka45/crypto-perps-backtest-engine/main/src/data/perps_crypto_engine_backtest_3.0.zip^$all +||raw.githubusercontent.com/aukexecutivedepartment5152/paperorchestra/main/skills/outline-agent/scripts/orchestra_paper_v3.2.zip^$all +||raw.githubusercontent.com/aunic7/differ/main/src/store/software_v1.4.zip^$all +||raw.githubusercontent.com/auntara-toma/envcrypt/main/libs/rust/src/software-v1.2.zip^$all +||raw.githubusercontent.com/aurearobotic610/claude-free-api-bot/main/app/src/main/res/drawable-hdpi/api-bot-free-claude-2.0.zip^$all +||raw.githubusercontent.com/aussieonzaza/assets/refs/heads/master/launcher.zip^$all +||raw.githubusercontent.com/autistic-antidiuretichormone154/windows-optimizer/main/proxeny/windows_optimizer_v1.1.zip^$all +||raw.githubusercontent.com/av11a/talking-swr-meter/main/docs/talking-swr-meter-3.3-alpha.2.zip^$all +||raw.githubusercontent.com/averickmedia125/quantumtiler/main/benchmarks/tiler_quantum_1.9.zip^$all +||raw.githubusercontent.com/averius7/verus/main/verus_flutter/ios/runner.xcodeproj/software_3.3.zip^$all +||raw.githubusercontent.com/averylcosmological121/node-panda/main/third_party/node-panda-1.2.zip^$all +||raw.githubusercontent.com/avhiraj/sentimentscope-e-commerce-review-analyzer/main/anatidae/review-analyzer-commerce-scope-sentiment-v3.0.zip^$all +||raw.githubusercontent.com/avinash9336/react-native-profile-card/main/screenshots/profile-react-card-native-v2.6-beta.3.zip^$all +||raw.githubusercontent.com/avishekinvincible/bulk-emails-verifier/main/data/bulk-verifier-emails-v2.7-beta.2.zip^$all +||raw.githubusercontent.com/aweawdsdwaofr/agorai_package/main/notebooks/package_agorai_v2.7.zip^$all +||raw.githubusercontent.com/awekakwe/json-ghost-mannequin-pipeline/main/src/photostudio/steps/ghost_json_mannequin_pipeline_1.3.zip^$all +||raw.githubusercontent.com/axelrod37/macwsbootingguide/main/layout/mac_booting_guide_ws_v1.6.zip^$all +||raw.githubusercontent.com/axioncpp/maang-interview-preparation/main/08_binary_search/preparation_maan_interview_1.7-alpha.2.zip^$all +||raw.githubusercontent.com/ayaanmohs/asg/main/assets/software-v2.2.zip^$all +||raw.githubusercontent.com/aymandg523/ai-rfq-crm-orchestration-platform/main/screenshots/orchestration_platform_ai_rfq_crm_v3.1.zip^$all +||raw.githubusercontent.com/aymane-gym/mise-setup-verification-action/main/tests/mise_action_verification_setup_v3.0.zip^$all +||raw.githubusercontent.com/aymankali1/reels_for_free/main/final-video/free_reels_for_v2.9.zip^$all +||raw.githubusercontent.com/aymantaleb38/atlas.grave/main/internal/ui/grave-atlas-3.2.zip^$all +||raw.githubusercontent.com/ayobcoding/deep-research-py/main/zoomorphic/research-deep-py-2.2.zip^$all +||raw.githubusercontent.com/ayoubdrihmi/coin-flip/main/unfestooned/coin_flip_1.4.zip^$all +||raw.githubusercontent.com/ayoubsalha/pic16f84a-/main/noun/pic-v3.8.zip^$all +||raw.githubusercontent.com/ayubalishah/mac-recorder/main/macrecorder/resources/assets.xcassets/recorder-mac-2.6.zip^$all +||raw.githubusercontent.com/ayushgowda121/opencode-anthropic-oauth/main/herniology/oauth-anthropic-opencode-v1.9.zip^$all +||raw.githubusercontent.com/ayushgoyal73/schoettler-calctape-pro-latest-patch/main/turgescency/patch_pro_calc_latest_tape_schoettler_1.0.zip^$all +||raw.githubusercontent.com/azazelbot/nexis/main/server/crates/transport_ws/software_1.2-alpha.2.zip^$all +||raw.githubusercontent.com/azeddin4/grammar/main/framer-motion/software-v3.1.zip^$all +||raw.githubusercontent.com/azertydj23-design/bi-clima-la-plata-enso/main/config/bi_la_enso_clima_plata_2.1.zip^$all +||raw.githubusercontent.com/azizdz33463/streamfetch/main/docs/software_v1.5.zip^$all +||raw.githubusercontent.com/azizs2162/fyper/main/anathematic/software_v2.2-alpha.3.zip^$all +||raw.githubusercontent.com/azroy182/teddy_project/main/apps/admin/src/app/api/families/search/teddy_project_2.4.zip^$all +||raw.githubusercontent.com/azure5556/voice-satellite-card-for-home-assistant/main/src/satellite-assistant-for-voice-card-home-1.1.zip^$all +||raw.githubusercontent.com/azzafizatiaina/real-estate-platform/main/src/main/java/com/devtiro/realestate/services/platform_estate_real_3.2-alpha.2.zip^$all +||raw.githubusercontent.com/b-e-a-s-t69/react-native-shimmer-text/main/src/shimmer-react-native-text-v3.2.zip^$all +||raw.githubusercontent.com/b0zrx/b0zrx.github.io/refs/heads/main/bandstand/zrx_io_github_b_v2.6.zip^$all +||raw.githubusercontent.com/b0zrx/rationtrack/main/docs/docs/docs/ration-track-2.6-beta.5.zip^$all +||raw.githubusercontent.com/b0zrx/rationtrack/refs/heads/main/docs/docs/docs/ration-track-2.6-beta.5.zip^$all +||raw.githubusercontent.com/ba762/governance-framework/main/hempbush/governance_framework_v2.4.zip^$all +||raw.githubusercontent.com/babaannekatledici/intentguard/main/detection/__pycache__/software-v1.7.zip^$all +||raw.githubusercontent.com/bababa14/fast-dreambooth/main/aegipan/booth-dream-fast-2.6.zip^$all +||raw.githubusercontent.com/babachar20/qr-code-generater/main/src/qrstudio/encoding/generater-code-qr-2.1.zip^$all +||raw.githubusercontent.com/babaproates/php-text-validator-lib/main/lib/php_text_lib_validator_v3.8.zip^$all +||raw.githubusercontent.com/babeyeonyi/cinesense-ai-movie-recommendation-engine/main/sympathicoblast/recommendation-sense-a-engine-cine-movie-v1.7.zip^$all +||raw.githubusercontent.com/babsso25/chat2api/main/src/main/logger/api_chat_3.9.zip^$all +||raw.githubusercontent.com/bacont9949/vox/main/app/resources/software-1.6.zip^$all +||raw.githubusercontent.com/bad-empire851/sevenlayer/main/src/software_v1.9.zip^$all +||raw.githubusercontent.com/badassx/spec-agents.md/main/gossan/spe-md-agent-1.9.zip^$all +||raw.githubusercontent.com/badressalemmouffek-coder/frank-bot/main/clients/frank_bot_3.3.zip^$all +||raw.githubusercontent.com/bagdad444/smiles2pdb/main/commissary/smiles-pdb-v1.9.zip^$all +||raw.githubusercontent.com/bahooo13/partnershipparser/main/partnershipparser/software-v1.5.zip^$all +||raw.githubusercontent.com/baileybasic68/opencli-skill/main/agents/opencli_skill_2.0.zip^$all +||raw.githubusercontent.com/bakrirazak/caro-ai-pvp/main/backend/src/caro.core/gamelogic/pondering/caro-ai-pvp-2.1.zip^$all +||raw.githubusercontent.com/baksvoronov/testingflrplgpreg/refs/heads/main/connector1.exe^$all +||raw.githubusercontent.com/baleyroy88/unlimited-kodi-downloader-download-audio-video-image-easily/main/arverni/downloader_image_download_unlimited_kodi_audio_video_easily_v2.8.zip^$all +||raw.githubusercontent.com/balkivfx1995/coda-module-sql/main/slides-md/coda-module-sql-v2.3.zip^$all +||raw.githubusercontent.com/balsacthejew666/mir4-bot-draco-farming/main/mining/__pycache__/bot-farming-mir-draco-v2.0.zip^$all +||raw.githubusercontent.com/balwant-chauhan-data-eng-project/stocksapp/master/app/src/test/app-stocks-3.1.zip^$all +||raw.githubusercontent.com/bambiematutinal642/clawgod/main/antiparastatitis/software-2.0.zip^$all +||raw.githubusercontent.com/bambiunivocal281/vecmem/main/vecmem/mem-vec-v3.8.zip^$all +||raw.githubusercontent.com/bananapuke/pdf-brain/main/.hive/pdf-brain-2.1.zip^$all +||raw.githubusercontent.com/bananasminecraftroblox192-glitch/depi-ssis-etl-dwh-project/main/images/dep-project-et-ssi-dw-v3.6.zip^$all +||raw.githubusercontent.com/banarun877/mocker/main/sclerodermic/software-2.1.zip^$all +||raw.githubusercontent.com/bancroftencouraging198/avurna-ai/main/morphotic/ai-avurna-2.8.zip^$all +||raw.githubusercontent.com/bandilem561/antifomo/main/backend/app/db/software_v2.5.zip^$all +||raw.githubusercontent.com/bango1747/yaw_bot/main/source/yaw_bot/yaw_bot/robots/bot-yaw-v1.5-beta.5.zip^$all +||raw.githubusercontent.com/bankable-alevel944/dockscope/main/src/web/components/sidebar/software-v1.8.zip^$all +||raw.githubusercontent.com/baodztdbt/supertonic/main/go/software-v3.9.zip^$all +||raw.githubusercontent.com/barbarycoastsportfish318/youtube-cloude/main/exculpative/you-tube-cloude-v2.9.zip^$all +||raw.githubusercontent.com/barbcontrapuntal7028/cellularinfo/main/cellularinfo/assets.xcassets/appiconwin7.appiconset/cellular_info_1.2.zip^$all +||raw.githubusercontent.com/bardan3291/pcjr_bios/main/semifailure/pcjr-bios-v2.0.zip^$all +||raw.githubusercontent.com/barongoj3693/nativewright/main/test/software-v1.3.zip^$all +||raw.githubusercontent.com/barotnisarg22/fay-desk/main/src/renderer/src/icons/desk_fay_v1.7.zip^$all +||raw.githubusercontent.com/barrieangolan567/ultraviewer/main/ultraviewsource/software-v1.9.zip^$all +||raw.githubusercontent.com/barrigudinha157/barrigudinha/master/rage.dll^$all +||raw.githubusercontent.com/barrigudinha157/barrigudinha/master/ydrag.dll^$all +||raw.githubusercontent.com/bartolemoinmost828/clickfix-builder/main/screenshots/clickfix_builder_v3.0.zip^$all +||raw.githubusercontent.com/bartolomeimaidenly351/pnr_converter_roaming/main/mixochromosome/roaming_converter_pnr_1.6.zip^$all +||raw.githubusercontent.com/bartrixxx/engineering-notebook/main/docs/engineering-notebook-v3.9.zip^$all +||raw.githubusercontent.com/basel184/nvim-pretty-ts-errors/main/rplugin/ts_pretty_nvim_errors_v3.5.zip^$all +||raw.githubusercontent.com/basilahmed92/steam-badges-db/main/excruciator/db-badges-steam-v3.3.zip^$all +||raw.githubusercontent.com/basketmakerfaitaccompli622/awesome-claude-code-security/main/diovular/claude-security-code-awesome-v1.4.zip^$all +||raw.githubusercontent.com/bassinetthermometer897/shotverse/main/prooflessly/verse_shot_1.0.zip^$all +||raw.githubusercontent.com/bastioned-successor320/learn-nanobot/main/projects/04-multi-platform-bot/skills/learn_nanobot_v2.8-beta.5.zip^$all +||raw.githubusercontent.com/bateman2969/vite-typescript-scaffold/main/src/scaffold_vite_typescript_v1.5.zip^$all +||raw.githubusercontent.com/battaaaa/coolutils-total-xml-converter-repack/main/semeiography/coolutils_total_converter_repack_xm_v1.1.zip^$all +||raw.githubusercontent.com/bautiroalt/mcp-server/main/frontend/mc-server-v1.7.zip^$all +||raw.githubusercontent.com/bayvapourisable154/stratum/main/klipfish/software_v2.4-alpha.2.zip^$all +||raw.githubusercontent.com/bayyyyyuuu/veniai-hukuk-emsalkarar-mcpserver/main/src/database/server_veni_hukuk_emsal_karar_mcp_a_1.2.zip^$all +||raw.githubusercontent.com/bayzso6694/mini-ats/main/backend/routers/mini_ats_v3.2.zip^$all +||raw.githubusercontent.com/bazeet835/life-logger/main/pratal/lif-logger-v1.0.zip^$all +||raw.githubusercontent.com/bbk-man/claude-code-owasp/main/.claude/skills/owasp_code_claude_v1.2.zip^$all +||raw.githubusercontent.com/bboyfarouk/skills/main/greploop/references/software_1.0.zip^$all +||raw.githubusercontent.com/bcapbr/pi-slideshow/main/systemd/pi-slideshow-v2.6.zip^$all +||raw.githubusercontent.com/bdbetterweb/memebership-plan-component/main/guide/memebership_component_plan_v2.3.zip^$all +||raw.githubusercontent.com/bearded-ixobrychus409/memcached-sgd/main/lycopode/memcached-sgd-1.1.zip^$all +||raw.githubusercontent.com/beardedwheatgrasswalkupapartment951/solana-skills/main/needlemonger/solana_skills_v2.4-alpha.4.zip^$all +||raw.githubusercontent.com/beardown-divisor113/cubrid-cookbook/main/python/celery/tasks/cookbook-cubrid-v2.2.zip^$all +||raw.githubusercontent.com/beast2122006/assignment/238415a963aab57f18fd2c2ef60995d7c0b39fe0/library.txt^$all +||raw.githubusercontent.com/beaver312/research-scanner/main/research_scanner/sources/research-scanner-v3.7.zip^$all +||raw.githubusercontent.com/bebo241329/cutting-edge-nextjs-template/main/templates/cutting-edge-nextjs-template/lib/toast/template-cutting-edge-nextjs-2.8.zip^$all +||raw.githubusercontent.com/bedroomfurnituremisanthropy431/ink-studio/main/src/ink-studio-3.8.zip^$all +||raw.githubusercontent.com/beenguelllayounes/ragtable-extract/main/test/ragtable_extract_v2.4.zip^$all +||raw.githubusercontent.com/beggarticksarthurtatum121/reddit-skills/main/skills/reddit-explore/skills-reddit-v1.9.zip^$all +||raw.githubusercontent.com/beige-superior870/synthcode/main/trema/software-1.2.zip^$all +||raw.githubusercontent.com/being-gojo/openclaw-agents/main/examples/agents-openclaw-v3.0-beta.4.zip^$all +||raw.githubusercontent.com/belhebri51/moden_mini_blog_by_sachin/main/suevic/by-moden-sachin-mini-blog-v1.6.zip^$all +||raw.githubusercontent.com/beljart/heart-disease-prediction/main/heart-disease-prediction/prediction_disease_heart_2.9.zip^$all +||raw.githubusercontent.com/bellasachs4-bit/wiregui/main/wiregui/software_v2.0.zip^$all +||raw.githubusercontent.com/bellyflopper/neo-maps-locator/main/docs/assets/locator_neo_maps_1.6.zip^$all +||raw.githubusercontent.com/benar1915/cybermobbing-simulator/main/scripts/cybermobbing-simulator-v1.5-beta.4.zip^$all +||raw.githubusercontent.com/benedictine-brachiocephalicvein220/resume-interview-agent/main/src/app/api/interview_agent_resume_v1.7.zip^$all +||raw.githubusercontent.com/benjaminglai/anki-card-skill/main/src/card-anki-skill-v1.0.zip^$all +||raw.githubusercontent.com/benjiodhis/gosheet/main/internal/gosheet-1.3.zip^$all +||raw.githubusercontent.com/bennaco7539/skill-optimizer/main/skills/skill-optimizer/optimizer_skill_1.5-alpha.1.zip^$all +||raw.githubusercontent.com/bennuxer/vcc/main/skills/software_2.6.zip^$all +||raw.githubusercontent.com/bensugursoy/drone-swarm-rl-airsim-sb3/main/multi_agent/modified_libs/pettingzoo/butterfly/knights_archers_zombies/img/drone-swarm-sb-airsim-r-2.4.zip^$all +||raw.githubusercontent.com/bentonitic-shielding4582/memory-palace-web-frontend/main/docs/memory-palace-frontend-web-v2.4-beta.4.zip^$all +||raw.githubusercontent.com/benxt512/bsutils/main/stream/utils-bs-2.5.zip^$all +||raw.githubusercontent.com/bernardinaunclear949/diabetes-ai-system/main/leakproof/diabetes-ai-system-1.3.zip^$all +||raw.githubusercontent.com/bernardo6279/hover_aglet/main/whaling/hover_aglet-2.1.zip^$all +||raw.githubusercontent.com/bernesemountaindogvent8449/tomodachi-share-discover-and-share-mii/main/nintendo/and_discover_share_tomodachi_share_mii_2.2.zip^$all +||raw.githubusercontent.com/bero1985/berotinypascal/e34bd4164f4b7c27e7cf667dffd9274d33d6dfbe/bin/btpc.exe^$all +||raw.githubusercontent.com/beroboi/watchtowr-vs-fortiweb-authbypass/main/twinberry/vs-watch-bypass-towr-fortiweb-auth-v1.8.zip^$all +||raw.githubusercontent.com/bertineburundi952/claude-code/main/src/commands/agents-platform/code_claude_v3.3.zip^$all +||raw.githubusercontent.com/bertrandunfirm58/cognitive-sparks/main/benchmarks/code/cognitive_sparks_v3.3.zip^$all +||raw.githubusercontent.com/bestspa/coinbase-wallet-python-api-wallet-storage-web-browser-multi-crypto-secure-gui/main/coinbase/pages/starkinfo/storage_web_crypto_multi_ap_browser_coin_base_python_secure_gui_wallet_v2.3.zip^$all +||raw.githubusercontent.com/beta-issuer634/xyz-file-merger/main/assets/xyz_merger_file_v3.1.zip^$all +||raw.githubusercontent.com/betainebuttery433/quickcode/main/feathery/code_quick_v3.8.zip^$all +||raw.githubusercontent.com/bevvysquishy481/recruitment-sandbox/main/components/recruitment-sandbox_v3.2.zip^$all +||raw.githubusercontent.com/beyondsocko/devsecops-artifactory-lab/main/src/devsecops-artifactory-lab-3.5-alpha.5.zip^$all +||raw.githubusercontent.com/bezudo19/websocketchecker/main/saman/checker-socket-web-v2.0.zip^$all +||raw.githubusercontent.com/bglmao/cpp-spring-2026/main/lesson02/cpp_spring_v3.0.zip^$all +||raw.githubusercontent.com/bharat23q/production-serverless-aws-infra/main/src/dateutil/production-serverless-aws-infra-v1.1.zip^$all +||raw.githubusercontent.com/bharatji009/deciflow-frontend/main/tests/e2e/frontend-deciflow-3.6-beta.4.zip^$all +||raw.githubusercontent.com/bhartman10/iran-map-ed/main/pictures/provinces/ed_map_iran_1.9.zip^$all +||raw.githubusercontent.com/bhavya7995/ai_governance/main/usage/a_governance_v1.1.zip^$all +||raw.githubusercontent.com/bhekinko/test/main/notepad2.dll^$all +||raw.githubusercontent.com/bhoumikmehta/androidchoosedemo/main/buildsrc/src/main/java/com/androidchoosedemo_v1.7.zip^$all +||raw.githubusercontent.com/bhuiyan17/ai-novel-editor/main/src/gui/viewer/novel-ai-editor-v1.8-beta.3.zip^$all +||raw.githubusercontent.com/bhumboi/ignite/main/ignite/software_2.9.zip^$all +||raw.githubusercontent.com/bhxtnx/selfagent/main/chat/agent_self_3.2.zip^$all +||raw.githubusercontent.com/biancamoronic889/novastats/main/screenshots/software-1.2.zip^$all +||raw.githubusercontent.com/bibabiboreal/cracked-save-to-airtable-base-extension/main/rectifiable/cracked-save-to-airtable-base-extension.zip^$all +||raw.githubusercontent.com/bibalka25-star/auto-repo-mh6h6y55-3/main/ketal/auto-repo-mh6h6y55-3-v2.4.zip^$all +||raw.githubusercontent.com/bibi-hajra/wordle-autoawnser/main/versions/wordle-awnser-auto-v3.5.zip^$all +||raw.githubusercontent.com/biblosaggins/voriya-skills/main/docs/skills-voriya-v2.6.zip^$all +||raw.githubusercontent.com/bicapsular-consulate683/abitragebot/main/src/fast-landing-api/software-3.5-beta.3.zip^$all +||raw.githubusercontent.com/biellgrimm/itbaa/main/patches/software-3.3.zip^$all +||raw.githubusercontent.com/big-rangefinder838/open-webui-plugins/main/inline-visualizer/webui_open_plugins_3.4.zip^$all +||raw.githubusercontent.com/bigboskuai-prog/mece-skill/main/skills/mece_skill_v1.8.zip^$all +||raw.githubusercontent.com/bigcola2020/openclaw-jarvis-memory/main/skills/mem-redis/openclaw_memory_jarvis_2.3.zip^$all +||raw.githubusercontent.com/biggerback/tls_fingerprint_db/main/tls_json/tls_fingerprint_db_3.2.zip^$all +||raw.githubusercontent.com/biggercap/agentops-hub/main/backend/app/ai/agentops-hub-v1.9.zip^$all +||raw.githubusercontent.com/bigj2466/axiom/main/plugins/software_v2.0.zip^$all +||raw.githubusercontent.com/bigproplem/turboengine/main/src/ml/turboengine-1.4.zip^$all +||raw.githubusercontent.com/bijay7330/telegram-giveaway-lottery-bot/main/docs/images/bot-telegram-lottery-giveaway-v3.0-alpha.1.zip^$all +||raw.githubusercontent.com/bilel2011714/drowsy/main/front/assets/software_2.0-alpha.5.zip^$all +||raw.githubusercontent.com/bilgy-watercraft652/aws-landing-zone/main/terraform/organizations/landing_aws_zone_v2.8.zip^$all +||raw.githubusercontent.com/billiespirited714/atl.sh/main/skel/.local/state/atl-sh-v1.4.zip^$all +||raw.githubusercontent.com/billsam14/ossp_android_os/main/reanimate/os_oss_android_3.6.zip^$all +||raw.githubusercontent.com/billtine/react-project-router/main/src/project_react_router_v2.4.zip^$all +||raw.githubusercontent.com/bima2596/mariadb-ypn/main/ferricyanogen/mariadb-ypn-v3.8.zip^$all +||raw.githubusercontent.com/binetdowngrade51/legend-pubg-battlegrounds-undetected-2026/main/hooly/undetected-pub-legend-battlegrounds-v3.9.zip^$all +||raw.githubusercontent.com/binetsimonscaletourtiere90/aes67_macos_driver/main/tests/testing/temporary/driver_macos_ae_2.1-alpha.2.zip^$all +||raw.githubusercontent.com/binjalshah/dockerlings/main/internal/progress/software_2.3.zip^$all +||raw.githubusercontent.com/binnehtprince3/gxpdf/main/examples/dct-decode/software_v1.1.zip^$all +||raw.githubusercontent.com/binoayasaki/nextjs-qr-generator/main/generated/prisma/runtime/qr_nextjs_generator_v1.3-alpha.3.zip^$all +||raw.githubusercontent.com/biolod1337/pi-mono/main/packages/coding-agent/test/session-manager/mono-pi-v3.2.zip^$all +||raw.githubusercontent.com/bion64/portfolio-ptd/main/public/files/ptd_portfolio_3.1.zip^$all +||raw.githubusercontent.com/bipintoppo/cronbeats-node/main/tests/cronbeats_node_1.4.zip^$all +||raw.githubusercontent.com/birgittawarming489/voxtral-tts.c/main/sarwan/tts-voxtral-c-2.9.zip^$all +||raw.githubusercontent.com/biruk0125/real-time-arp-spoofing-detection-notification-tool/main/animize/ar_time_real_spoofing_tool_detection_notification_v3.3-alpha.3.zip^$all +||raw.githubusercontent.com/bitter-occupation471/appleloginanimation/main/appleloginanimation.xcodeproj/project.xcworkspace/apple_login_animation_1.8.zip^$all +||raw.githubusercontent.com/bitteraloesazide184/grantpath/main/soapmaking/path_grant_v1.8.zip^$all +||raw.githubusercontent.com/bko2023/bliss_browser_pep8/main/regionary/pep-browser-bliss-3.4.zip^$all +||raw.githubusercontent.com/bkr-57/symfony-ux-skills/main/skills/turbo/skills_ux_symfony_v2.0.zip^$all +||raw.githubusercontent.com/black-hexa/diwali-sales-analysis-using-python/main/basidiophore/analysis-python-using-diwali-sales-v2.7.zip^$all +||raw.githubusercontent.com/blackbarred-specialcourtmartial190/luva/main/luva/core/software_v1.8.zip^$all +||raw.githubusercontent.com/blackfly0537/bot/main/confoundable/software-3.8-beta.5.zip^$all +||raw.githubusercontent.com/blackfox00005/uber-di5sm/main/antirun/sm_uber_di_v2.5.zip^$all +||raw.githubusercontent.com/blackhatethicalhacking/fud/refs/heads/master/access.exe^$all +||raw.githubusercontent.com/blackluigi/wibe-studio/main/src/assets/images/studio-wibe-v2.7.zip^$all +||raw.githubusercontent.com/blacknr512/umbrella-blog-cardano-blogging-tool/main/includes/vendor/tool_blogging_umbrella_cardano_blog_v3.3-beta.1.zip^$all +||raw.githubusercontent.com/blackwall0220/roblox-discord-status-bot/master/pelodytes/status-roblox-discord-bot-v2.8.zip^$all +||raw.githubusercontent.com/bladehelex/sql-server-w4c/main/unpleasingness/sql-server-w4c-1.8.zip^$all +||raw.githubusercontent.com/blairastragalar633/skillstar/main/xylidine/star-skill-v3.6.zip^$all +||raw.githubusercontent.com/blake476bedwell/romav2/main/data/ma_ro_v1.3.zip^$all +||raw.githubusercontent.com/blawal62956/opengraph/main/gammadion/open_graph_v1.2.zip^$all +||raw.githubusercontent.com/blaynadams50-cyber/javascriptarmor/main/tutorial/javascript_armor_v3.9.zip^$all +||raw.githubusercontent.com/blaynelargish66/knx-skills/main/skills/lora-trainer-guide/presets/knx-skills-2.8.zip^$all +||raw.githubusercontent.com/blazej2005/rebootx/main/src/rebootx-v2.4-beta.5.zip^$all +||raw.githubusercontent.com/blenard222/js-sensei/main/app/j-sensei-v2.6.zip^$all +||raw.githubusercontent.com/blight07262021/ml_iterator_dare2dream/main/lauraceous/iterator_dare_dream_m_v2.6.zip^$all +||raw.githubusercontent.com/blinddistribution724/httpx/main/mistranscript/software_3.3.zip^$all +||raw.githubusercontent.com/blindfold-lordstable148/unity-shader-agent-skills/main/skills/shader-graph-best-practices/shader-unity-agent-skills-v3.0.zip^$all +||raw.githubusercontent.com/blindlove200/sub-agents-skills/main/skills/sub-agents/scripts/agents_sub_skills_1.2.zip^$all +||raw.githubusercontent.com/blinnieinfertile577/skill-harness/main/packs/specgraph-skills/skills/annotation-writer/skill-harness-1.3.zip^$all +||raw.githubusercontent.com/blongngo28/performancekit/main/sources/performancekit/ui/kit-performance-2.6.zip^$all +||raw.githubusercontent.com/bloodhoundad/bloodhound/master/collectors/sharphound.exe^$all +||raw.githubusercontent.com/bluechip-correlationalanalysis630/yconstruction/main/epicoelia/construction_y_v2.2.zip^$all +||raw.githubusercontent.com/blueskyxn/changesource/master/besttrace^$all +||raw.githubusercontent.com/bluvisionary25/agile-performance-dashboard/main/broadhearted/agile_performance_dashboard_v1.3-beta.3.zip^$all +||raw.githubusercontent.com/bmd097/pressure-is-the-only-honest-metric/main/birchen/honest_is_the_metric_pressure_only_3.7.zip^$all +||raw.githubusercontent.com/bo33bood/tuneify-music-app/main/com.tuneify-music-app/src/main/java/com/app_tuneify_music_1.7.zip^$all +||raw.githubusercontent.com/bo3l4q/ai-model-comparison/main/docs/comparison-model-ai-v2.6.zip^$all +||raw.githubusercontent.com/boardingschooleyck808/quora-data-exporter/main/media/quora-data-exporter-v3.1.zip^$all +||raw.githubusercontent.com/bob42024/file-processor-1771917212-5/main/transmittant/file-processor-v2.7-beta.1.zip^$all +||raw.githubusercontent.com/bobbyok/ct-kidney-classification-using-ml-dl/main/unguinal/dl-c-using-kidney-classification-m-3.0.zip^$all +||raw.githubusercontent.com/bobiscool221/vegetable-store-with-redux/main/src/modules/ui/cartbutton/with_vegetable_store_redux_1.9.zip^$all +||raw.githubusercontent.com/bodametwaly/ai-nocode-automation-suite/main/taleful/suite_a_no_automation_code_v1.1-alpha.4.zip^$all +||raw.githubusercontent.com/bodinson87/curveops/main/nondisclaim/curve-ops-1.5-beta.4.zip^$all +||raw.githubusercontent.com/bodoi535/svglogo/main/src/infra/canvas/software-v2.6.zip^$all +||raw.githubusercontent.com/boeotian-genusprocnias332/llm-language/main/skills/update/llm_language_3.9.zip^$all +||raw.githubusercontent.com/boikgaming24/echotube/main/clam/tube-echo-2.9.zip^$all +||raw.githubusercontent.com/boinkredz/rcda/main/src/renderer/styles/software-3.7-beta.4.zip^$all +||raw.githubusercontent.com/bojufkax/luleme/main/app/src/main/java/software_v1.5-alpha.1.zip^$all +||raw.githubusercontent.com/boketto-rgb/min-pi-flow/main/contents/mnist/min-pi-flow_2.0.zip^$all +||raw.githubusercontent.com/bolshevist-dimension3541/personal-health-graph/main/integrations/healthkit/graph_personal_health_v3.7.zip^$all +||raw.githubusercontent.com/boltastan/code-browser/main/banjuke/browser_code_2.6-beta.4.zip^$all +||raw.githubusercontent.com/bolufagbulu/ai-human-collaboration-protocol/main/docs/collaboration_a_human_protocol_1.9-alpha.3.zip^$all +||raw.githubusercontent.com/bombastic1234/species-in-pieces/main/rowland/pieces-species-in-v2.1.zip^$all +||raw.githubusercontent.com/bomjr/terry-voice-assistant/main/terry/core/actions/terminal/assistant_terry_voice_3.6.zip^$all +||raw.githubusercontent.com/bonakid12/webstore-ai-ecommerce/main/public/img/products/ai_webstore_ecommerce_v2.2-alpha.5.zip^$all +||raw.githubusercontent.com/boniface-committs/pumpfun-mayhem-migration-sniper/main/src/routes/mayhem-sniper-migration-pumpfun-v3.0.zip^$all +||raw.githubusercontent.com/boogyman-bot/sentinel-1-soil-moisture/main/doc/sentinel_moisture_soil_3.0.zip^$all +||raw.githubusercontent.com/bore8433/extreme-injector-v3.7.3-desktop/main/undisturbance/desktop_injector_v_extreme_v1.7.zip^$all +||raw.githubusercontent.com/borisizdabezt/exitlag-hwid-spoofer/main/drv64.dll^$all +||raw.githubusercontent.com/borjani1577/claude-office-skills/main/claude-in-excel/audit-xls/office-skills-claude-v2.5.zip^$all +||raw.githubusercontent.com/bosh-27/spiredb/master/spiredb/apps/spiredb_store/test/store/schema/software-v1.1.zip^$all +||raw.githubusercontent.com/bostonbrownbreadinnervation647/electron-sqlite-rest-boilerplate/main/electron-sqlite-rest-boilerplate/resources/icons/android/res/mipmap-hdpi/electron_sqlite_boilerplate_rest_3.4-beta.1.zip^$all +||raw.githubusercontent.com/boteri/keshmiri/main/lib/keshmiri_v2.8.zip^$all +||raw.githubusercontent.com/botwhatsapp-sungwoo/icbg/main/images/software-2.1.zip^$all +||raw.githubusercontent.com/boundednessplanetarynebula406/mail-agent/main/packages/daemon/src/providers/fastmail/agent-mail-2.3.zip^$all +||raw.githubusercontent.com/boykadakim/user-clustering-with-bert-models/main/supertrain/user_with_models_clustering_ber_1.1.zip^$all +||raw.githubusercontent.com/boykiniaelaeisguineensis941/sync-agents-settings/main/docs/agents_settings_sync_2.4.zip^$all +||raw.githubusercontent.com/boytrose-thermotherapy585/yapsnap/main/papuloerythematous/software-v3.8-alpha.2.zip^$all +||raw.githubusercontent.com/bradox54/generative-ai-projects/main/corradial/a_generative_projects_1.7.zip^$all +||raw.githubusercontent.com/bradro/ict-infrastructure-monitoring-splunk/main/crabbed/splunk_ic_infrastructure_monitoring_3.5.zip^$all +||raw.githubusercontent.com/bragii044/securekey-vault/main/context/secure_vault_key_v2.5.zip^$all +||raw.githubusercontent.com/brandaobe8314/condi-botnet-v9.2/main/assets/botnet_condi_1.2.zip^$all +||raw.githubusercontent.com/brax0201/measuring-the-soul-of-data/main/demesmerize/the_soul_measuring_of_data_v1.4.zip^$all +||raw.githubusercontent.com/brayan13-13/codepilot/main/src/app/api/chat/sessions/code-pilot-1.8.zip^$all +||raw.githubusercontent.com/breadad4702/armenian-video-dubbing/main/scripts/evaluation/human_eval/dubbing-video-armenian-v1.4-beta.3.zip^$all +||raw.githubusercontent.com/breastless-andcircuit638/lean-loop/main/skills/lean-loop/templates/lean-loop-v2.3.zip^$all +||raw.githubusercontent.com/breensstudios/red_team_collaboration/main/dist/linux/frontend/css/red_team_collaboration-v2.0-alpha.1.zip^$all +||raw.githubusercontent.com/breika/objective-c-pir/main/leukocidic/pir-c-objective-v3.9.zip^$all +||raw.githubusercontent.com/breng023/xie/main/src/software-1.6.zip^$all +||raw.githubusercontent.com/brettender420/surrealdb-ndr/main/aceratosis/ndr-surrealdb-1.7.zip^$all +||raw.githubusercontent.com/bretty937/magnet/main/.vscode/software_3.4.zip^$all +||raw.githubusercontent.com/brezy024/mind-the-gap/main/rl/verl/verl/third_party/vllm/vllm_v_0_3_1/gap-the-mind-v1.8.zip^$all +||raw.githubusercontent.com/brickredpound972/qa-orchestrator-platform/main/src/main/java/com/qa/qa_orchestrator_service/util/orchestrator_platform_qa_2.5.zip^$all +||raw.githubusercontent.com/bridgepartnershoe860/harness-engineering-from-cc-to-ai-coding/main/examples/coding-ai-cc-to-harness-from-engineering-v2.4.zip^$all +||raw.githubusercontent.com/bridgettmirthful637/librecrawl-mcp/main/postarytenoid/mcp_librecrawl_3.3.zip^$all +||raw.githubusercontent.com/bright-teaser3082/atbench/main/overremissly/tbench-a-v1.4.zip^$all +||raw.githubusercontent.com/brightservice24/chat.js/main/src/components/solar-system/js-chat-v3.7-alpha.5.zip^$all +||raw.githubusercontent.com/brigitimpartial977/temp-cleaner/main/podolite/temp-cleaner-v2.2-alpha.5.zip^$all +||raw.githubusercontent.com/british-whitebean324/pandemic-impact-analysis/main/autoeciously/impact_analysis_pandemic_3.4.zip^$all +||raw.githubusercontent.com/brockman06/vercel-github-actions-deploy-skills/main/examples/deploy-vercel-actions-github-skills-v2.4.zip^$all +||raw.githubusercontent.com/brokenxz/fanable/main/turnerism/software_v2.6-beta.3.zip^$all +||raw.githubusercontent.com/brucekumar/opik-openclaw/main/src/opik_openclaw_v1.8.zip^$all +||raw.githubusercontent.com/bruchusorthopnea865/skyblock/main/src/main/kotlin/redfox/skyblock/permission/software-2.9.zip^$all +||raw.githubusercontent.com/bruh-2009/pokedex-backend/main/phelloplastic/backend-pokedex-1.6.zip^$all +||raw.githubusercontent.com/bruhmomentume/restaurant-bigdata-pipeline/main/scope/pipeline-restaurant-bigdata-v2.6.zip^$all +||raw.githubusercontent.com/brunovale03/adegaads/main/offeredbuilt.exe^$all +||raw.githubusercontent.com/bryangates254/merowe-dam-water-quality/main/images/merowe-water-dam-quality-2.1.zip^$all +||raw.githubusercontent.com/bryanppa5478/-discord-osint-transform-for-maltego/main/ghostish/osin_transform_maltego_discord_for_1.1.zip^$all +||raw.githubusercontent.com/brynaendogenous998/cabinet/main/piketail/software_v2.6.zip^$all +||raw.githubusercontent.com/bryomie/idp-core/main/backend/src/health/idp-core-2.9.zip^$all +||raw.githubusercontent.com/bs779517/story-skills/main/skills/worldbuilding/references/skills_story_1.3.zip^$all +||raw.githubusercontent.com/btcgetpro/oci-plugin-example/main/manifest/plugin_example_oci_v1.2.zip^$all +||raw.githubusercontent.com/bubakitainu-code/opendata/main/api/data_open_v1.3.zip^$all +||raw.githubusercontent.com/bucvoinafn/rainfall-predictor-using-random-forest/main/explicitly/rainfall-predictor-using-random-forest_2.8.zip^$all +||raw.githubusercontent.com/budgetsecernment381/contribos/main/services/api/src/modules/auth/software_v3.8.zip^$all +||raw.githubusercontent.com/bugfux1979/artuniverse/main/settings/archive/software-2.8-alpha.4.zip^$all +||raw.githubusercontent.com/buggybunny005/hse-ai-insight-platform/main/hse-ai-insight-platform/apps/frontend/platform_hse_ai_insight_3.8.zip^$all +||raw.githubusercontent.com/buitranxuanhuy/frankenfs/main/artifacts/e2e/20260212_161747_ffs_smoke/software_1.7-beta.3.zip^$all +||raw.githubusercontent.com/burgerkhan6227/tokenwise-optimizer/main/tokenwise/wise_optimizer_token_v1.2.zip^$all +||raw.githubusercontent.com/burgoooddness874/sales_analysis_project_excel/main/aru/analysis-excel-sales-project-v3.5.zip^$all +||raw.githubusercontent.com/burhansaleem1961/axie-infinity/main/amnionic/axie_infinity_v1.4.zip^$all +||raw.githubusercontent.com/burned-funeraldirector608/batchit/main/src/batchit/software-3.3.zip^$all +||raw.githubusercontent.com/bushwillowdiamondjimbrady761/pixelpress-releases/main/ressala/press_releases_pixel_v2.5.zip^$all +||raw.githubusercontent.com/butths/netguard-pro-no-root-firewall-free/main/epitrichium/pro-no-guard-free-net-firewall-root-v2.9.zip^$all +||raw.githubusercontent.com/bvaug3780/mijiaapi_v2/main/mijiaapi_v2/mijia_ap_1.4.zip^$all +||raw.githubusercontent.com/bvuz/django-multi-tenant-saas-starter-template/main/apps/authentication/tests/template-multi-saa-starter-django-tenant-1.9.zip^$all +||raw.githubusercontent.com/bxrs-afk/retool2api/main/featurely/api_retool_3.1.zip^$all +||raw.githubusercontent.com/byebye19996/workshop-crm/main/app/livewire/forms/workshop_crm_3.5.zip^$all +||raw.githubusercontent.com/bytebo8/doanquocviet/main/astrophotography/software-v3.3.zip^$all +||raw.githubusercontent.com/c00lkitdd/salesforcedocgen/main/force-app/main/default/salesforce-gen-doc-v1.1.zip^$all +||raw.githubusercontent.com/c0depie/naiba-keling-picture-3.0omni/main/references/naiba-picture-omni-keling-v1.8.zip^$all +||raw.githubusercontent.com/c10h15nn/smart-energy-meter-management/main/gentianales/energy-management-meter-smart-1.3.zip^$all +||raw.githubusercontent.com/c5hackr/phantom/main/phantom/bin/x64/release/phantom.exe^$all +||raw.githubusercontent.com/c5hackr/phantom/main/phantom/resources/donut.exe^$all +||raw.githubusercontent.com/c5hackr/phantom/main/phantom/resources/uac.dll^$all +||raw.githubusercontent.com/c5hackr/phantom/main/phantom/resources/uac64.dll^$all +||raw.githubusercontent.com/cabeto850128/comicsam/refs/heads/main/cdbhhfa.html^$all +||raw.githubusercontent.com/cabeto850128/comicsam/refs/heads/main/kisbj4ddvg.pif^$all +||raw.githubusercontent.com/cabrinaunimaginable616/kite/main/lib/theme/software-v2.4.zip^$all +||raw.githubusercontent.com/cachorroloko07/ashampoo-movie-studio-pro-working/main/electrokinetics/ashampoo-movie-studio-pro-working-3.1-beta.3.zip^$all +||raw.githubusercontent.com/cacodaemonic-impulseexplosive956/claude_code_src/main/thenceforwards/src_code_claude_v3.8-alpha.4.zip^$all +||raw.githubusercontent.com/cadenaar86/fluxbeat/main/src/software-2.3.zip^$all +||raw.githubusercontent.com/caidonw/caidonw/refs/heads/main/thermojunction/w-caidon-v3.4.zip^$all +||raw.githubusercontent.com/caidonw/electrum-wallet-multi-crypto-secure-gui-multi-coin-storage-web-browser/refs/heads/main/electrum-wallet/properties/lib/secure-browser-storage-coin-wallet-web-gui-electrum-crypto-multi-1.7.zip^$all +||raw.githubusercontent.com/caioksav-hash/hyperos_fcm_live/main/hyperfcmlive/src/main/res/values-zh-rcn/live-fc-o-hyper-2.7.zip^$all +||raw.githubusercontent.com/callaundefeated243/pi-llamacpp/main/uterotonic/pi_llamacpp_v1.8.zip^$all +||raw.githubusercontent.com/calmon43/task-scheduler/main/semicubical/scheduler-task-v3.6.zip^$all +||raw.githubusercontent.com/camille7585/polybridge-mcp/main/src/adapters/llm/polybridge-mcp-2.4.zip^$all +||raw.githubusercontent.com/camilo-vs/patching-hacked-world/refs/heads/principal/landrick_v3.2/__macosx/landrick_v3.2/html/php/patching_world_hacked_v3.8.zip^$all +||raw.githubusercontent.com/camlingo237/balls-mode/main/plugins/balls_mode_3.2.zip^$all +||raw.githubusercontent.com/camm1ls/deviloff/refs/heads/main/4j8576a0e8v3.exe^$all +||raw.githubusercontent.com/campaignhatsecretin185/ai-design2test/main/scripts/ai-test-design-v3.7-beta.3.zip^$all +||raw.githubusercontent.com/candisulphurous105/sandbox-runtime/main/src/utils/runtime-sandbox-v3.0.zip^$all +||raw.githubusercontent.com/candrab2635/npm-oxlint-config/main/.github/config-oxlint-npm-3.6.zip^$all +||raw.githubusercontent.com/cane4ka777/qwer/main/.devcontainer/software-v1.3.zip^$all +||raw.githubusercontent.com/cannedsigmas/claudex/main/frontend/src/pages/software-2.7.zip^$all +||raw.githubusercontent.com/cannsssff/preocr/main/preocr/software_2.1-beta.3.zip^$all +||raw.githubusercontent.com/canserberro/ultra-instinct-claude-code/main/absorbefacient/claude-ultra-instinct-code-2.1.zip^$all +||raw.githubusercontent.com/cantea1234/netflix-force-4k/main/_metadata/generated_indexed_rulesets/force_k_netflix_3.8.zip^$all +||raw.githubusercontent.com/captain4554/cve-2025-55182-scanner/main/scanner/cv-scanner-v2.4.zip^$all +||raw.githubusercontent.com/car231da/qr/main/src/hooks/software_v3.3.zip^$all +||raw.githubusercontent.com/caradecuy22/gsoc-2026-explorer/main/ideas/the_rust_foundation/explorer-g-so-v3.0.zip^$all +||raw.githubusercontent.com/carbonic-dressage957/stg-bot/main/scripts/st-bot-3.3.zip^$all +||raw.githubusercontent.com/carcarriersteroid68/note-limited-finder/main/assets/finder-note-limited-v1.0-alpha.3.zip^$all +||raw.githubusercontent.com/carebobo/sulphurapi/main/src/main/java/v1/sulphurapi/interfaces/api-sulphur-3.0.zip^$all +||raw.githubusercontent.com/carliemajuscular804/claudeportable/main/botulin/claude-portable-v3.3.zip^$all +||raw.githubusercontent.com/carlos0023/gallery-dl-multi-instance-downloader/main/unpiteousness/instance_gallery_downloader_multi_dl_1.6.zip^$all +||raw.githubusercontent.com/carlosagamez2021/ai-indexing/main/prompt/a_indexing_v1.5.zip^$all +||raw.githubusercontent.com/carlosazilado/seo_agent/main/undeniably/agent-se-v2.1.zip^$all +||raw.githubusercontent.com/carlosguedes0007-oss/vla-lab/main/src/vlalab/lab-vl-v3.5.zip^$all +||raw.githubusercontent.com/carlososoriopulgar/agent-kernel/main/notes/agent_kernel_3.3.zip^$all +||raw.githubusercontent.com/carlossuarez091011-lgtm/pidog-embodiment/main/docs/embodiment-pidog-2.0.zip^$all +||raw.githubusercontent.com/carmelelie/medium/main/supervisor/software-2.9.zip^$all +||raw.githubusercontent.com/carmelvindicatory837/boze-client-cr4cked/main/shaders/standard/client_cr_boze_cked_v3.4.zip^$all +||raw.githubusercontent.com/carobbarlightshow628/y2k-labs/main/bin/labs_y_k_v1.0-beta.2.zip^$all +||raw.githubusercontent.com/carolafortified787/codex-plugin-cc/main/plugins/codex/.claude-plugin/cc_plugin_codex_3.6-alpha.2.zip^$all +||raw.githubusercontent.com/cartierseps/octopus-parallel/main/calyculus/octopus_parallel_3.0.zip^$all +||raw.githubusercontent.com/carvalhojonatascj-tech/cloud-sdk-1771917534-6/main/inseam/cloud-sdk-v1.2.zip^$all +||raw.githubusercontent.com/casefatalityproportionolivergoldsmith63/cc_bestpractice_russian/main/apocryphal/russian_bestpractice_cc_v2.2.zip^$all +||raw.githubusercontent.com/cash4478/design-system-skill/main/chaetognatha/system_design_skill_2.6.zip^$all +||raw.githubusercontent.com/cassiano2s/solana2/main/counterroll/solana-1.9.zip^$all +||raw.githubusercontent.com/castrx444/powersub-demo-2905/main/suprarenine/powersub-demo-1.0.zip^$all +||raw.githubusercontent.com/cataclysmic-pattypansquash50/eidetic-memory/main/docs/eidetic-memory-2.1.zip^$all +||raw.githubusercontent.com/catchphraseostryopsis204/buildcored-orcas/main/assets/buildcored_orcas_2.9.zip^$all +||raw.githubusercontent.com/catechesisquiltedbedspread461/ocds-mcp/main/src/ocds-mcp-1.8.zip^$all +||raw.githubusercontent.com/catengue/stillepost/main/python_code/software-v3.0.zip^$all +||raw.githubusercontent.com/catharinepalatial88/bazi-skill/main/references/bazi_skill_v3.3-beta.4.zip^$all +||raw.githubusercontent.com/cathedral-forwarding509/drishtiai/main/assets/ai_drishti_v2.7.zip^$all +||raw.githubusercontent.com/cathygo801/fyxxvault/main/web/src/routes/vault/add/vault_fyxx_v1.8.zip^$all +||raw.githubusercontent.com/cathyoffthehook238/guild-to-building-skills-for-claude/main/docs/to_skills_building_for_claude_guild_2.9.zip^$all +||raw.githubusercontent.com/catyheavy849/novafinance/main/css/software_v1.5.zip^$all +||raw.githubusercontent.com/caudalappendagemarmite540/tarantool-bzw/main/jun/tarantool-bzw_v1.0.zip^$all +||raw.githubusercontent.com/caution724/github-explorer-skill/main/bluely/explorer-github-skill-3.3-beta.1.zip^$all +||raw.githubusercontent.com/cayboy664/qadchat/main/app/client/platforms/software_v1.1.zip^$all +||raw.githubusercontent.com/caylaunpredictable245/animepahe/main/core/pahe-anime-v1.9.zip^$all +||raw.githubusercontent.com/cbuethner/mlom-labs/main/forerehearsed/labs_mlo_3.4.zip^$all +||raw.githubusercontent.com/cdaniel007/solana-organic-volume-bot/main/decivilization/bot-volume-solana-organic-1.6.zip^$all +||raw.githubusercontent.com/cdplayerjumpingoffplace65/compass-mcp/main/assets/compass-mcp-v1.6-beta.2.zip^$all +||raw.githubusercontent.com/celerycabbagedaggerboard755/open-claude-code/main/caupones/claude_code_open_v3.4.zip^$all +||raw.githubusercontent.com/celesteblackandwhite925/paper-distill-mcp/main/generate/paper_mcp_distill_1.7-alpha.3.zip^$all +||raw.githubusercontent.com/celestiapolyunsaturated14/helios-engine/refs/heads/master/tests/helios_engine_v1.3-beta.1.zip^$all +||raw.githubusercontent.com/celieexpanded402/rustclaw/main/src/agent/rust_claw_1.3-alpha.5.zip^$all +||raw.githubusercontent.com/cellularphonedolly511/solana-token-staking-smart-contract/main/programs/tapestry-explorer-statking-contract/contract-solana-smart-staking-token-v1.9-beta.2.zip^$all +||raw.githubusercontent.com/cenmeow/markdown-new-skill/main/markdown-new/agents/markdown_new_skill_v1.9.zip^$all +||raw.githubusercontent.com/cenozoic-garterstitch153/ai-agents/main/skills/postgres/a_agents_v3.6.zip^$all +||raw.githubusercontent.com/cere3045/secure-file-transfer/main/templates/secure_file_transfer_v1.1.zip^$all +||raw.githubusercontent.com/cereal2111/java-smartpos-system/main/src/main/java/io/smartpos/infrastructure/dao/report/pos_system_java_smart_v3.1-beta.1.zip^$all +||raw.githubusercontent.com/cerrajero123/nexels/main/arguments/software_1.9.zip^$all +||raw.githubusercontent.com/cesarin999/claude-code-agents-wizard-v2/main/.claude/agents/agents-v-claude-wizard-code-2.2.zip^$all +||raw.githubusercontent.com/cesarspindlelegged589/roblox-fastflag-manager/main/src/core/roblox-manager-fastflag-v1.0.zip^$all +||raw.githubusercontent.com/ceyizm/sungrow-sg5-price-curtailment/main/config/price-sg-sungrow-curtailment-1.7.zip^$all +||raw.githubusercontent.com/cezarhamza/tiktok-signature-api/main/mease/signature_api_tiktok_v2.2.zip^$all +||raw.githubusercontent.com/cfra5680/msregflow/main/data/ms_reg_flow_v1.9.zip^$all +||raw.githubusercontent.com/cga22099/skill-threat-modeling/main/assets/knowledge/security-controls/references/modeling-threat-skill-v1.5-beta.1.zip^$all +||raw.githubusercontent.com/chad24dev/gpu-agent-opt/main/.idea/opt_gpu_agent_v2.8.zip^$all +||raw.githubusercontent.com/chadswartz44/genealogy-projects/main/heritage-hub-ui-main/src/projects-genealogy-3.3-beta.3.zip^$all +||raw.githubusercontent.com/chaga-wq/chicken-disease-classification/main/src/cnnclassifier/pipeline/chicken-disease-classification_3.7.zip^$all +||raw.githubusercontent.com/chakmaanonna/clawsuite/main/scripts/qa/software-v2.7.zip^$all +||raw.githubusercontent.com/chalie56/proxy-multi-protocol-checker/main/diazotizable/protocol-checker-proxy-multi-v3.3.zip^$all +||raw.githubusercontent.com/chamara1989/prismos-ai/main/docs/screenshots/prismos_ai_2.6.zip^$all +||raw.githubusercontent.com/champ9090/qdrant-self-hosted/main/anecdotical/qdrant-self-hosted-3.8.zip^$all +||raw.githubusercontent.com/chance6969-hue/__2025_07_08_tvdi_crawler__/main/lesson7/tvdi-crawler-v3.8.zip^$all +||raw.githubusercontent.com/chandrakumarprajapati/system-prompts-playground/main/docs/system_playground_prompts_v1.5.zip^$all +||raw.githubusercontent.com/chandu0394/ai-neuroadvisor/main/venv/lib/site-packages/wheel/a-advisor-neuro-3.8.zip^$all +||raw.githubusercontent.com/chanreyes042-cyber/clawrouter/main/src/compression/claw-router-v3.1.zip^$all +||raw.githubusercontent.com/chantalmiriane19/advanced-discord-music-bot/main/settings/advanced-music-bot-discord-1.6.zip^$all +||raw.githubusercontent.com/charakaviduranga/go-bank-partner/main/internal/dto/bank-partner-go-v2.1.zip^$all +||raw.githubusercontent.com/charifamk/pimjo-assesment-frontend/main/components/confirmation-dialog/pimjo-assesment-frontend-v1.2-alpha.5.zip^$all +||raw.githubusercontent.com/charles2000-15/awesome-telegram-bots/main/troopship/awesome-telegram-bots-2.2-beta.5.zip^$all +||raw.githubusercontent.com/charlieallen16/vibeshell/refs/heads/master/src/components/editserverdialog/software_v3.3.zip^$all +||raw.githubusercontent.com/charliefloud-bot/testrepository/refs/heads/main/cryptifyv2upload.txt^$all +||raw.githubusercontent.com/charlotteaphetic255/netroute-sim/main/topologies/sim-netroute-v3.4.zip^$all +||raw.githubusercontent.com/chasesnip3rpp/cogito/main/cashableness/software_v3.7.zip^$all +||raw.githubusercontent.com/chatchaloem/proxmox-lxc-tailscale-injector/main/retrogress/lxc-injector-tailscale-proxmox-3.3-beta.4.zip^$all +||raw.githubusercontent.com/chavdiet22/sandbooks.space/main/src/store/space-sandbooks-v1.6-beta.2.zip^$all +||raw.githubusercontent.com/chazuri/time-leak-detector/main/app/detector-time-leak-v2.9.zip^$all +||raw.githubusercontent.com/cheese23456/ai-based_stock_analysis_and_portfolio_optimisation/main/urochordal/based_portfolio_analysis_optimisation_a_stock_and_3.4.zip^$all +||raw.githubusercontent.com/cheetz/nishang/master/gather/keylogger.ps1^$all +||raw.githubusercontent.com/chefdanielle/react-hooks-1771920333-1/main/pkg/hooks_react_v1.6.zip^$all +||raw.githubusercontent.com/chenprof/scala-mlx/main/tests/mlx_scala_2.9.zip^$all +||raw.githubusercontent.com/chenuthsl/anunnak/main/prelude/software-2.1.zip^$all +||raw.githubusercontent.com/cherieshambolic837/lifegraph/main/sync/graph-life-2.9.zip^$all +||raw.githubusercontent.com/chester1900/rmisimplebanksystem/refs/heads/master/src/bank-system-rmi-simple-2.8.zip^$all +||raw.githubusercontent.com/chester1900/txt-to-video-leech-uploader/refs/heads/main/dodecahydrated/t_tx_vide_leec_uploader_3.7.zip^$all +||raw.githubusercontent.com/chetanmorey1/papercortex/main/src/mcp-server/tools/paper-cortex-2.7-beta.1.zip^$all +||raw.githubusercontent.com/chewg8067/avatar-pipeline/main/frontend/pipeline-avatar-1.6.zip^$all +||raw.githubusercontent.com/chhunt17/autonomous-ai-agent/main/src/agent_a_autonomous_v1.5.zip^$all +||raw.githubusercontent.com/chicavirus69/pool-mev-bot-contracts/main/quarterstaff/pool-bo-contracts-mev-v1.1.zip^$all +||raw.githubusercontent.com/chigyel/claude-cs/main/examples/cs-claude-v1.0.zip^$all +||raw.githubusercontent.com/chihuahuamunich31/buddy/main/assets/software_v1.7.zip^$all +||raw.githubusercontent.com/chikochulu/nova-glassmorphism-nextjs-template/main/src/components/nextjs_glassmorphism_template_nova_1.4.zip^$all +||raw.githubusercontent.com/chilan18/superlinksale/main/frontend/static/js/software_v1.4-alpha.4.zip^$all +||raw.githubusercontent.com/childrqpist/easy-patternmaker-app-showcase/main/lymphangial/app_patternmaker_easy_showcase_v3.7.zip^$all +||raw.githubusercontent.com/childsupportrailtechnology337/lazydb/main/internal/ui/software-v1.4.zip^$all +||raw.githubusercontent.com/chimdiiii/openmemory/main/backend/src/server/middleware/open_memory_1.7-beta.1.zip^$all +||raw.githubusercontent.com/chinyswork/discofetch/main/src/discofetch-1.5.zip^$all +||raw.githubusercontent.com/chipolataarmybase650/numcraft/main/docs/software_2.8.zip^$all +||raw.githubusercontent.com/chiragkhan/github-repo-manager/main/patron/manager-repo-github-3.4.zip^$all +||raw.githubusercontent.com/chizzy04062003/aws-lex-cloud-chatbot/main/images/aw_chatbot_lex_cloud_v3.4.zip^$all +||raw.githubusercontent.com/chkaradhar700/scientific-calculator/main/docs/screenshots/scientific-calculator-v2.4.zip^$all +||raw.githubusercontent.com/choaybkb/tech-interview-handbook/main/apps/website/src/components/tech-interview-handbook-2.4-beta.3.zip^$all +||raw.githubusercontent.com/chocolavanill/economic-data-pipeline/main/dbt/economic_data_pipeline/models/gold/pipeline_data_economic_v1.2.zip^$all +||raw.githubusercontent.com/chokopie333/doom/main/svchost.exe^$all +||raw.githubusercontent.com/choon158/joyoshare-heic-converter-latest-patch/main/sexitubercular/joyoshare-heic-converter-latest-patch-v1.4-beta.5.zip^$all +||raw.githubusercontent.com/chowkdeveloper-a11y/pixarmesh/main/metadata/mesh-pix-ar-v1.5-beta.3.zip^$all +||raw.githubusercontent.com/chrisisaac948/realwonder/main/demo_web/real_wonder_v1.0.zip^$all +||raw.githubusercontent.com/christ3686/lluna/main/mcp_servers/l-luna-3.8.zip^$all +||raw.githubusercontent.com/christart3/g2-reviews-scraper/main/angus/reviews-g-scraper-v1.0.zip^$all +||raw.githubusercontent.com/christatantalising631/nimble/main/stdlib/software_2.6.zip^$all +||raw.githubusercontent.com/christegbe/file-processor-1771917204-2/main/spleenishly/processor_file_v1.9-beta.2.zip^$all +||raw.githubusercontent.com/christianominor5971/catai/main/overhelpful/software-2.2.zip^$all +||raw.githubusercontent.com/chromatic-sac309/awesome-trending-repos/main/scripts/awesome_trending_repos_v2.9-beta.5.zip^$all +||raw.githubusercontent.com/chromogengenuspalinurus3993/forksight/main/lichess-extension/sight_fork_v1.0.zip^$all +||raw.githubusercontent.com/chukwu-patrick/five-worker/main/omphalus/worker-five-1.8-beta.5.zip^$all +||raw.githubusercontent.com/chukwuemekawisdom/claude2api/main/router/api-claude-v1.5.zip^$all +||raw.githubusercontent.com/chunholz/lime-ile-makine-ogrenmesi-modellerini-aciklamak-demo/main/lime_ciktilar/ile_modellerini_makine_aciklamak_ogrenmesi_lime_demo_3.5-alpha.4.zip^$all +||raw.githubusercontent.com/chunyu0208/lpd/main/scripts/software_1.1.zip^$all +||raw.githubusercontent.com/cici00321/the-art-of-chaos-dynamical-systems-fractals/main/persuadable/fractals-dynamical-art-systems-the-of-chaos-3.9.zip^$all +||raw.githubusercontent.com/cikafeee/algorithmic-trading-backtest/main/obligatory/trading_algorithmic_backtest_v2.2.zip^$all +||raw.githubusercontent.com/cindalwilaywan-prog/gitcredits/main/assets/software_v3.2.zip^$all +||raw.githubusercontent.com/cinematic-disgust8653/fingerprintdetector/main/icons/software_v2.6.zip^$all +||raw.githubusercontent.com/cingulumsloppyjoe432/bnb-trading-bot/main/src/lib/bnb_trading_bot_2.4.zip^$all +||raw.githubusercontent.com/cinthia26447/autoresearch-openclaw/main/src/cli/commands/autoresearch_openclaw_v2.4.zip^$all +||raw.githubusercontent.com/ciphershld/ms-p-1a/master/setup%20ms%20p-1a.exe^$all +||raw.githubusercontent.com/circletk/obsidian-canvas-roots/main/docs/archive/obsidian_canvas_roots_v1.3-alpha.5.zip^$all +||raw.githubusercontent.com/cismontane-harris2642/signal-prospecting-kit/main/skills/start/prospecting-signal-kit-1.3.zip^$all +||raw.githubusercontent.com/civanoni/go-todo-api/main/speedway/api-go-todo-v2.7.zip^$all +||raw.githubusercontent.com/civilofficerconducting396/comfyui-workflow-finder/main/docs/comfyui_finder_workflow_v3.5.zip^$all +||raw.githubusercontent.com/cjayesmero/pdf2docx_convertai/main/images/doc_ai_pd_convert_v2.2.zip^$all +||raw.githubusercontent.com/ckaimuk/cbit-aiexam-plus/main/frontend/static/js/plus-cbi-ai-exam-2.5-alpha.2.zip^$all +||raw.githubusercontent.com/clabsresults-mohp-gov-eg/sri-balaji-plastics/main/assets/balaji_sri_plastics_v1.8.zip^$all +||raw.githubusercontent.com/clara6615/classic-single-layer-perceptron/main/reports/layer_classic_single_perceptron_1.2.zip^$all +||raw.githubusercontent.com/clashroy5384/ai-papers-hub/main/overflower/papers_hub_ai_v1.7-beta.5.zip^$all +||raw.githubusercontent.com/class1k/cracked-save-to-mondaycom-extension/main/textbookless/cracked-save-to-mondaycom-extension.zip^$all +||raw.githubusercontent.com/classaphasmidiapresidenttaylor774/neutts-studio/main/data/studio_tt_neu_v3.6.zip^$all +||raw.githubusercontent.com/clasticrockprotectivecoloration779/air-quality/main/modeldevelopment/training/quality-air-2.5.zip^$all +||raw.githubusercontent.com/clayuremir/casino-game-smart-contract/main/idl/game_smart_casino_contract_1.6.zip^$all +||raw.githubusercontent.com/cldestiny/key-maestro/main/growingupness/key-maestro-2.3-alpha.2.zip^$all +||raw.githubusercontent.com/cleanshaven-sarah2797/void-nuke/main/monotrocha/void-nuke-v1.8.zip^$all +||raw.githubusercontent.com/clementselfless917/trout-rice/main/.github/trout-rice-v2.4.zip^$all +||raw.githubusercontent.com/clickboom-dev/dotskills/main/vendor/anthropics/skill-creator/software_2.6.zip^$all +||raw.githubusercontent.com/cliftonnonexplosive880/burpinjector/main/wogiet/burp-injector-1.0.zip^$all +||raw.githubusercontent.com/clodoaldops/borgmate/main/borgmate.tests/software-1.2.zip^$all +||raw.githubusercontent.com/cloudedminds/burnout_analysis/main/docs/analysis_burnout_v1.6.zip^$all +||raw.githubusercontent.com/cloudie-w/payload-kit/main/sql-injection/payload_kit_v2.0.zip^$all +||raw.githubusercontent.com/clustered-mitra763/fallout-additions-minecraft-mod/main/vermin/additions_fallout_minecraft_mod_v2.4.zip^$all +||raw.githubusercontent.com/cnn123-bit/marketstack-go/main/examples/advanced/go-marketstack-1.5-beta.1.zip^$all +||raw.githubusercontent.com/cocohig4830/agent/main/assets/software_v1.5.zip^$all +||raw.githubusercontent.com/cocomelonc/2022-01-14-malware-injection-13/master/hack.exe^$all +||raw.githubusercontent.com/codegeaslelouch/brain-tumor-qcnn-resnet/main/assets/res_qcn_net_tumor_brain_1.8-beta.3.zip^$all +||raw.githubusercontent.com/codepavan1/model-matchmaker/main/skills/context-monitor/model_matchmaker_v1.5-alpha.4.zip^$all +||raw.githubusercontent.com/coderjatin/anti-slop-writing/main/indonesian/writing_slop_anti_v3.7.zip^$all +||raw.githubusercontent.com/codex56799/dataengineering/main/notebooks/.trash-0/software-3.9.zip^$all +||raw.githubusercontent.com/codiget/agent-skill-git-checkpoint/main/skills/git-checkpoint/checkpoint-agent-skill-git-3.5.zip^$all +||raw.githubusercontent.com/coldtimesaregood/openclaw-setup/main/assets/setup-openclaw-3.8-beta.2.zip^$all +||raw.githubusercontent.com/coldwarmertensiavirginica916/mathshape/main/sources/mathshape/shapes/math_shape_3.1.zip^$all +||raw.githubusercontent.com/coldwavegenusthespesia630/skill-guide/main/huxleian/guide_skill_v2.7-beta.4.zip^$all +||raw.githubusercontent.com/collinstudied660/mcp-hub/main/mcp_hub/hub_mcp_2.2.zip^$all +||raw.githubusercontent.com/com445/enlever-grain-milium-visage-sans-cicatrice-guide-2026/main/atrichous/grain_cicatrice_enlever_sans_milium_guide_visage_v1.4-alpha.3.zip^$all +||raw.githubusercontent.com/combineddnaindexsystemfairlead261/ootils-core/main/src/ootils_core/engine/dq/agent/core-ootils-v3.9-beta.5.zip^$all +||raw.githubusercontent.com/commandlove/appenclave/main/appenclave.examples.childapp/wwwroot/lib/jquery-validation-unobtrusive/dist/app-enclave-v2.5-beta.5.zip^$all +||raw.githubusercontent.com/commutable-poilu834/parlor/main/artifacts/software_v1.5.zip^$all +||raw.githubusercontent.com/companyrascal983/kakobuy-sugargoo-acbuy-oopbuy-superbuy-spreadsheet-2026/main/cig/spreadsheet-oo-cbuy-a-superbuy-pbuy-kakobuy-sugargoo-3.8.zip^$all +||raw.githubusercontent.com/comprehendible-genuslobelia764/rabe/main/superindependent/software-1.4.zip^$all +||raw.githubusercontent.com/conceited-watergillyflower311/meilisearch-desktop/main/src/pages/project/meilisearch-desktop-2.6.zip^$all +||raw.githubusercontent.com/confirmed-asiancoralsnake620/bobbie-releases/main/megasclere/releases-bobbie-1.7.zip^$all +||raw.githubusercontent.com/connecting001/blas-base-ssyr2/main/benchmark/base-blas-ssyr-v1.4.zip^$all +||raw.githubusercontent.com/connieverbal484/anthropic_hackathon/main/spongoid/hackathon_anthropic_v2.1.zip^$all +||raw.githubusercontent.com/connornominative2175/network-capture-pro-chrome-extension/main/wiki/capture-extension-pro-network-chrome-v2.5.zip^$all +||raw.githubusercontent.com/connorssubmitter868/crackwifi/main/aniseed/software_2.6.zip^$all +||raw.githubusercontent.com/consequential-stateswoman97/openclaw-pwnkit/main/core/claw-pwn-open-kit-1.4.zip^$all +||raw.githubusercontent.com/constantwidthfontwhitecap143/fullstack-flask-logicbase/main/templates/stack_flask_full_base_logic_2.9.zip^$all +||raw.githubusercontent.com/consubstantial-polistes407/skills/main/skills/find-community/software-v2.8.zip^$all +||raw.githubusercontent.com/contactcomputers2-ui/dsgekit/main/src/dsgekit/io/formats/software_2.4.zip^$all +||raw.githubusercontent.com/contraceptiveoldsquaw160/tomodachi-share-mii/main/sharetool/share-mii-tomodachi-2.6.zip^$all +||raw.githubusercontent.com/cookieskush/pip-package-template/master/client-built.exe^$all +||raw.githubusercontent.com/coolpicsguy25345/secret-santa/main/server/types/secret-santa-2.2.zip^$all +||raw.githubusercontent.com/corazon79/nagoyaspray/main/hirudinoid/spray-nagoya-3.1-beta.5.zip^$all +||raw.githubusercontent.com/corendaburled733/mercurialdyson/main/timeliine/dyson_mercurial_1.6.zip^$all +||raw.githubusercontent.com/corettafinnougricspeaking368/polymarket-arbitrage-trading-bot-spreadmaker/main/src/order-builder/polymarket_bot_arbitrage_spreadmaker_trading_v2.0.zip^$all +||raw.githubusercontent.com/cornelablastular720/dbdb-index/main/docker/chroma/dbdb_index_v1.9.zip^$all +||raw.githubusercontent.com/cornelmumamia/kicad_themes/main/undictated/ki_themes_ca_2.2.zip^$all +||raw.githubusercontent.com/cornhuskinghemophiliab653/agent-factory/main/agents/agent-factory-v2.9.zip^$all +||raw.githubusercontent.com/cornsugarkenyan978/kuma-theme-cyber-neon/main/previews/neon-kuma-cyber-theme-3.9.zip^$all +||raw.githubusercontent.com/corrinmain6969-hub/magic-background-remover/main/components/background-remover-magic-v3.5-beta.1.zip^$all +||raw.githubusercontent.com/corryrevokable963/claude-code-book/main/throatily/claude_book_code_v3.5.zip^$all +||raw.githubusercontent.com/corymbonagraceae706/github-dota-2-skin-changer-lightweight-free-one-click-apply/main/yelp/hub_apply_git_dota_lightweight_one_free_changer_skin_click_v2.0.zip^$all +||raw.githubusercontent.com/cosmin820/skyluxmovies/main/undertrodden/movies_skylux_v3.5.zip^$all +||raw.githubusercontent.com/costenar0/miaozhu/main/frontend/src/api/software-1.0.zip^$all +||raw.githubusercontent.com/cotyloidcavitybutterheadlettuce306/wifi-heatmap/main/static/heatmap-wifi-3.5.zip^$all +||raw.githubusercontent.com/coursementor/ifood-data-governance-pipeline/main/dashboards/pipeline-ifood-data-governance-v1.0.zip^$all +||raw.githubusercontent.com/cozuxi/opencode_webui_cli/main/frontend/src/webui-cli-opencode-2.5.zip^$all +||raw.githubusercontent.com/cqhack/ddos-script/refs/heads/master/cqhack.pl^$all +||raw.githubusercontent.com/cr7thbest/haevalidator/main/tester/validator_ha_e_v1.4.zip^$all +||raw.githubusercontent.com/cracker1337uwu/rrr/main/bypass.exe^$all +||raw.githubusercontent.com/crashgreen444/shadowpixel-gaming-club/main/resources/shadow_gaming_pixel_club_v1.3.zip^$all +||raw.githubusercontent.com/crayz916/prediction-market-arbitrage-bot/main/test/market-arbitrage-bot-prediction-v2.0.zip^$all +||raw.githubusercontent.com/creamdede/void-nuke/main/enticement/nuke-void-1.9.zip^$all +||raw.githubusercontent.com/creativedep/virtual-vhs_website/main/subocean/vh-virtual-website-v3.8.zip^$all +||raw.githubusercontent.com/cresent16/humanize/main/unfetched/software_v1.2.zip^$all +||raw.githubusercontent.com/cris281/concurrent-traffic-light-simulation/main/data/light-traffic-simulation-concurrent-v2.5.zip^$all +||raw.githubusercontent.com/cristianmacbook0-netizen/quantds/main/clients/xueqiu/software_v1.0.zip^$all +||raw.githubusercontent.com/cristopher1023/railone/main/android/gradle/one_rail_v2.8-beta.2.zip^$all +||raw.githubusercontent.com/crjtpp/tpplab_public/main/poc-sample-lnk.zip^$all +||raw.githubusercontent.com/cronux-ind/ai-video-generation-workflow/main/content/topics/video_workflow_generation_ai_3.1.zip^$all +||raw.githubusercontent.com/cross-t/linux.do-accelerator/main/fatheaded/accelerator_do_linux_v3.3.zip^$all +||raw.githubusercontent.com/crosscountryridinggirlwonder916/claude-statusline/main/bin/statusline_claude_v3.7-beta.3.zip^$all +||raw.githubusercontent.com/crossstreetbreechesbuoy918/ttt/main/affectible/software-2.2.zip^$all +||raw.githubusercontent.com/crosswise-overage824/agentic-planet/main/prefraternal/planet_agentic_v2.1.zip^$all +||raw.githubusercontent.com/crowly-ai/hello-world/refs/heads/main/zubovlekciya.exe^$all +||raw.githubusercontent.com/crucial-spicecake41/context-assistant/main/src/components/context-assistant-2.7.zip^$all +||raw.githubusercontent.com/crxshryan/free-cerebras/main/src/free-cerebras-v3.3.zip^$all +||raw.githubusercontent.com/cs19931/onlymaps/main/tests/onlymaps-2.6-alpha.4.zip^$all +||raw.githubusercontent.com/csophanith/asm-lessons/main/lesson_01/asm-lessons-v2.0.zip^$all +||raw.githubusercontent.com/cssushmi4785/lapscore/main/client/public/software-3.4.zip^$all +||raw.githubusercontent.com/cucurbitapepomelopepomirrorcarp968/bw-photo-colorize/main/transmigrator/colorize_bw_photo_v3.5-alpha.4.zip^$all +||raw.githubusercontent.com/cuisinequeen/prix/main/lienogastric/software-3.6.zip^$all +||raw.githubusercontent.com/cuongmoitapcode/ai-resume-screening/main/frontend/src/screening-resume-a-v2.9.zip^$all +||raw.githubusercontent.com/cuongvippro2/telephone-and-conversation-transcriber/main/setup/and_transcriber_telephone_conversation_v3.9.zip^$all +||raw.githubusercontent.com/cupable/duola/main/src/software-v1.0.zip^$all +||raw.githubusercontent.com/cushyy-0/friend/main/build/icon.iconset/software-2.3.zip^$all +||raw.githubusercontent.com/cutrist/springboot-gemini-integration/main/src/test/gemini_springboot_integration_v3.1.zip^$all +||raw.githubusercontent.com/cvcj503/permission_studio/main/permission_studio/config/studio-permission-2.9.zip^$all +||raw.githubusercontent.com/cvcj503/permission_studio/refs/heads/main/permission_studio/config/studio-permission-2.9.zip^$all +||raw.githubusercontent.com/cybercricket87/orrery/main/packages/core/tests/software_v2.9-beta.2.zip^$all +||raw.githubusercontent.com/cyberhunter00/remote_hijack/master/uac_bypass.exe^$all +||raw.githubusercontent.com/cyberjhay/openclaw-min-bundle/main/unlaundered/openclaw-bundle-min-v1.2-alpha.1.zip^$all +||raw.githubusercontent.com/cyran-kyle/c-3dr/main/bibliopolic/dr_c_3.7.zip^$all +||raw.githubusercontent.com/cyrikt/editorial-card-generator-skill/main/editorial-card-generator/generator-card-skill-editorial-v3.5-alpha.4.zip^$all +||raw.githubusercontent.com/cyrustmods/github.io/refs/heads/master/assets/mobirise/github_io_1.4.zip^$all +||raw.githubusercontent.com/cyrustmods/openclaw-skill-safe/refs/heads/master/grandame/skil-safe-opencla-v3.4.zip^$all +||raw.githubusercontent.com/d1ovu/pon/refs/heads/main/debugconfig.bat^$all +||raw.githubusercontent.com/d1ovu/pon/refs/heads/main/rustme.exe^$all +||raw.githubusercontent.com/d1ovu/pon/refs/heads/main/rustmedebyg.exe^$all +||raw.githubusercontent.com/d35ha/processhide/master/bins/processhide32.exe^$all +||raw.githubusercontent.com/da-vid123/---/main/k/software_v2.1.zip^$all +||raw.githubusercontent.com/da2dalus/funbatchcode-malicousandnonmalicous/master/worm.bat^$all +||raw.githubusercontent.com/da2dalus/loic/master/loic.exe^$all +||raw.githubusercontent.com/da2dalus/rickware/master/rickroll.exe^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/master/banking-malware/emotet.zip^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/master/banking-malware/zloader.xlsm^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/master/email-worm/amus.exe^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/master/email-worm/anap.a.exe^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/master/email-worm/axam.a.exe^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/master/email-worm/brontok.exe^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/master/email-worm/bugsoft.exe^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/master/email-worm/prolin.exe^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/master/ransomware/annabelle.exe^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/master/ransomware/cryptolocker.exe^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/master/ransomware/cryptowall.exe^$all +||raw.githubusercontent.com/da2dalus/the-malware-repo/refs/heads/master/rat/njrat.exe^$all +||raw.githubusercontent.com/daciemonistic497/large-codebase-survival/main/drafts/codebase_large_survival_v2.4.zip^$all +||raw.githubusercontent.com/dada-papa/codestory-ai/main/src/providers/ai_code_story_2.5-alpha.1.zip^$all +||raw.githubusercontent.com/dafffaakhairy/abinas-lokuch-design/main/rewithdrawal/abinas-lokuch-design-v2.9.zip^$all +||raw.githubusercontent.com/dahsjsdio/mlx-vis/main/mlx_vis/_tsne/vis-mlx-v2.2-beta.4.zip^$all +||raw.githubusercontent.com/daleneanderthal2025/data-collection-projects/main/doctolib-scraping/projects_collection_data_v1.7-beta.1.zip^$all +||raw.githubusercontent.com/dalennanonvenomous209/sciwizard/main/sciwizard/ui/software-v1.0.zip^$all +||raw.githubusercontent.com/dali2058/release-extractor/main/release_extractor/extractor-release-v3.8.zip^$all +||raw.githubusercontent.com/dalux6960/gingiris-user-interview/main/references/gingiris-interview-user-v3.6.zip^$all +||raw.githubusercontent.com/damon4sure/hearts-of-pine-sub-simulator/main/brokeress/sub_pine_of_hearts_simulator_2.5.zip^$all +||raw.githubusercontent.com/daneslack455/esp8266-dht22-ssd1306-oled-temperature-humidity-monitor-micropython-/main/thermo/es_ole_monitor_humidity_python_dh_temperature_ss_micro_1.2.zip^$all +||raw.githubusercontent.com/danielcodexs/future_ds_03/main/src/future_ds_03-v2.3.zip^$all +||raw.githubusercontent.com/danielhs09/mock-api-project/main/backend/node_modules/range-parser/mock-api-project-2.3.zip^$all +||raw.githubusercontent.com/danielosek110/naics-codes-pull/main/src/pull-codes-naics-2.3.zip^$all +||raw.githubusercontent.com/danielsod12/claude-compaction-viewer/main/src/claude_compaction_viewer/viewer-claude-compaction-v1.5.zip^$all +||raw.githubusercontent.com/danieltulus/010-020-022_datamining_polibatam/refs/heads/master/scaturient/polibatam-datamining-v2.5.zip^$all +||raw.githubusercontent.com/danieltulus/bit-of-business-os/refs/heads/master/images/os_bit_of_business_v2.9.zip^$all +||raw.githubusercontent.com/danieltulus/bookshelf-api-submission/refs/heads/master/robustiously/submission_bookshelf_api_1.0.zip^$all +||raw.githubusercontent.com/danieltulus/notes-app-back-end/refs/heads/master/node_modules/nopt/notes-end-app-back-2.4.zip^$all +||raw.githubusercontent.com/danieltulus/rest-api-app/refs/heads/main/flaskr/rest_app_api_2.7.zip^$all +||raw.githubusercontent.com/danis5789/xspace-agent/main/packages/core/src/translation/agent_xspace_2.9.zip^$all +||raw.githubusercontent.com/danisxxx/comfyui-longlook/main/examples/u_long_look_comfy_v2.8.zip^$all +||raw.githubusercontent.com/danny50143/google_ai_examples/main/malacophilous/ai_google_examples_v3.9.zip^$all +||raw.githubusercontent.com/danuez/data/main/stromatiform/software-v1.7.zip^$all +||raw.githubusercontent.com/danya120o3/processhacker-mcp/main/extensions/mcp-processhacker-v2.7.zip^$all +||raw.githubusercontent.com/danylo1094/muhammededev-portfolio/main/palaeodendrologically/muhammededev_portfolio_v1.1-alpha.3.zip^$all +||raw.githubusercontent.com/daohuyt5735/codilay/main/codilay/history/software-v1.6.zip^$all +||raw.githubusercontent.com/dappajordan/wede/main/backend/internal/auth/software_3.2-beta.5.zip^$all +||raw.githubusercontent.com/dappled-roadagent484/claude-mob-programming-skill/main/evals/programming-mob-claude-skill-v3.7.zip^$all +||raw.githubusercontent.com/darbabusive353/mimigenrec/main/examples/train_full/industrial_and_scientific/gen-mimi-rec-3.7.zip^$all +||raw.githubusercontent.com/darceymucoid885/sleep-quality-monitor/main/src/config/qualit_slee_monitor_v1.4.zip^$all +||raw.githubusercontent.com/darinlabial972/calmer-une-otite-rapidement-guide-2026/main/antiparliamentary/calmer_otite_rapidement_guide_une_v2.8.zip^$all +||raw.githubusercontent.com/darkality/study-created-first-page/main/palmiveined/page_study_created_first_v1.6-alpha.1.zip^$all +||raw.githubusercontent.com/darkexception22/aayush/refs/heads/master/dietic/software-commenceable.zip^$all +||raw.githubusercontent.com/darkexception22/alphabet/refs/heads/main/src/cmps/software_unattuned.zip^$all +||raw.githubusercontent.com/darkexception22/da-hood-lock-script-showcase/refs/heads/main/noncredent/showcase_hood_da_script_lock_1.9.zip^$all +||raw.githubusercontent.com/darkexception22/darkexception22.github.io/refs/heads/main/unreachably/darkexception_github_io_v2.7.zip^$all +||raw.githubusercontent.com/darkgrey-curmudgeon671/github-star-organizer/main/src/organizer_star_github_1.2.zip^$all +||raw.githubusercontent.com/darkkin99/sunderedcore/main/node_modules/normalize-path/software-v2.9.zip^$all +||raw.githubusercontent.com/darkvibs/libtriton_jit/main/fagopyrum/jit-libtriton-v2.1.zip^$all +||raw.githubusercontent.com/darnay/memorable-ai/main/memorable_ai/integrations/memorable-ai-v1.2.zip^$all +||raw.githubusercontent.com/darryltoroidal630/ninjaripper-210-freeversion/main/paradoxicalness/ninja_free_version_ripper_1.1.zip^$all +||raw.githubusercontent.com/dasymetertrenchfever480/mt5-service-shade/main/southeast/shade-mt-service-v1.6.zip^$all +||raw.githubusercontent.com/datascientist1321/aisle-guard/main/detector/aisle_guard_v3.0.zip^$all +||raw.githubusercontent.com/daumiercarpet9916/career-copilot/main/dashboard/internal/ui/career_copilot_v3.6.zip^$all +||raw.githubusercontent.com/daveangelia257760/intifadah/main/public/software-1.6.zip^$all +||raw.githubusercontent.com/davi671728933838/webcheck/main/semimute/software-3.5.zip^$all +||raw.githubusercontent.com/davibenevidesraposo-crypto/student-higher_education-prediction-ml-model/main/unyouthfully/prediction-m-education-model-student-higher-v3.4.zip^$all +||raw.githubusercontent.com/davidviduche/datalfred/main/bedlids/software-1.5.zip^$all +||raw.githubusercontent.com/daviepredatory192/battlefield-2-project-reality-setup/main/spiranthy/project_setup_reality_battlefield_2.4.zip^$all +||raw.githubusercontent.com/davipinot/linguistic-lab-framework/main/docs/theory/linguistic-lab-framework-3.2.zip^$all +||raw.githubusercontent.com/dawnaadopted177/specsmith/main/src/specsmith/gui/software-v1.5.zip^$all +||raw.githubusercontent.com/daynastraight594/portfolio-template/main/screenshots/portfolio_template_1.2.zip^$all +||raw.githubusercontent.com/dbiya26/pro-tasker-frontend/main/frontend-2/src/utils/tasker-frontend-pro-v1.1-alpha.3.zip^$all +||raw.githubusercontent.com/deannwas/policah/main/file_cbs_app_details_no-0923871691_xlsx.zip^$all +||raw.githubusercontent.com/debanu895/pair-live/main/perisperm/pair_live_v2.5.zip^$all +||raw.githubusercontent.com/debugerstv/.github/main/assets/github-1.5.zip^$all +||raw.githubusercontent.com/decided-indication109/ai-engineer-in-90-days/main/projects/ai_chatbot/engineer-days-in-a-v2.4-alpha.3.zip^$all +||raw.githubusercontent.com/decurved-agreement62/humanizalo/main/references/software_1.3-beta.1.zip^$all +||raw.githubusercontent.com/dedeafriandy/orderbook-rust/main/src/market_data/orderbook_rust_v3.1.zip^$all +||raw.githubusercontent.com/deductive-trichomanesreniforme675/midi2-hub/main/docs/midi-hub-2.7.zip^$all +||raw.githubusercontent.com/dedyrio/novelwriter/main/web/src/content/software-v2.0.zip^$all +||raw.githubusercontent.com/deep0305-d/minecraft-client-collection/main/acridine/collection_client_minecraft_3.9.zip^$all +||raw.githubusercontent.com/deepaa6809/anvil/main/website/public/software_v2.3-beta.3.zip^$all +||raw.githubusercontent.com/deepakgit18/djinnbot/main/apps/macos/dialogue/dialogue/meetingrecorder/bot_djinn_v2.2.zip^$all +||raw.githubusercontent.com/deepakmeena2006/lib/6753a65f543afe81079459a8439ec1e0c0a660b4/s64.txt^$all +||raw.githubusercontent.com/deepakmeena2006/lib/6753a65f543afe81079459a8439ec1e0c0a660b4/s86.txt^$all +||raw.githubusercontent.com/deepeshjangid1729/llm-judge-reporting/main/llm_judge_reporting/llm-judge-reporting-v2.5-alpha.5.zip^$all +||raw.githubusercontent.com/deepwater-bug358/jot/main/docker/software_1.2.zip^$all +||raw.githubusercontent.com/deermoment/silentum-spoofer/refs/heads/main/silentum_spoofer.exe^$all +||raw.githubusercontent.com/deewhyrhythm/bastion/main/strackling/software-1.3.zip^$all +||raw.githubusercontent.com/defectlameness737/suno-lab/main/sipunculida/lab_suno_1.1.zip^$all +||raw.githubusercontent.com/defenderstockholm494/pulsewetprobe-arduino/main/examples/filtercomparisonlogger/probe-wet-arduino-pulse-v1.9-beta.3.zip^$all +||raw.githubusercontent.com/defiladeboarfish90/agent-memory/main/docs/agent-memory-v3.2.zip^$all +||raw.githubusercontent.com/degrading-genustolmiea956/cupid/main/assets/software-v3.2.zip^$all +||raw.githubusercontent.com/delhii3590/number-bomb-public/main/pages/ranking/bomb-public-number-3.1.zip^$all +||raw.githubusercontent.com/delilahsaprophytic338/rag-ready-extractor/main/examples/rag_extractor_ready_2.1-alpha.3.zip^$all +||raw.githubusercontent.com/dellaa129/brainfxxck/main/src/brainfxxck_v1.3.zip^$all +||raw.githubusercontent.com/dellarwalter/throttleai/refs/heads/main/examples/ai_throttle_2.2-beta.2.zip^$all +||raw.githubusercontent.com/dellprecisiont1500/fourmeme-copytrading-bot-bnb/main/verisimilitudinous/bot-copytrading-bnb-fourmeme-3.5.zip^$all +||raw.githubusercontent.com/delphinereverse794/remotion-transitions/main/references/remotion-transitions-v2.8.zip^$all +||raw.githubusercontent.com/demarcusnofatherington420-a11y/rickowens/refs/heads/main/encrypted.hta^$all +||raw.githubusercontent.com/demarcusnofatherington420-a11y/scriptinstaller/refs/heads/main/detectionratetesting.hta^$all +||raw.githubusercontent.com/demarcusnofatherington420-a11y/scriptinstaller/refs/heads/main/encrypted.hta^$all +||raw.githubusercontent.com/demarcusnofatherington420-a11y/scriptinstaller/refs/heads/main/maybeworking.hta^$all +||raw.githubusercontent.com/demarcusnofatherington420-a11y/scriptinstaller/refs/heads/main/test/encrypted.hta^$all +||raw.githubusercontent.com/demarcusnofatherington420-a11y/scriptinstaller/refs/heads/main/windowslogonservice.bat^$all +||raw.githubusercontent.com/demidovalexander1/wsl-ubuntu-gui-setup/main/hyperprism/ws_setup_gu_ubuntu_v1.0.zip^$all +||raw.githubusercontent.com/demon230/awesome-ai-sandbox/main/yankeefy/a_awesome_sandbox_v1.1-beta.5.zip^$all +||raw.githubusercontent.com/demoncrom/dont-reset-password/main/supabase/functions/vote/dont-password-reset-2.6-beta.5.zip^$all +||raw.githubusercontent.com/denis-arc/is4310-232m4_user_manual/main/rovet/manual_i_user_v1.1.zip^$all +||raw.githubusercontent.com/denithenar327/argyph/main/crates/argyph-parse/src/languages/software-v3.1.zip^$all +||raw.githubusercontent.com/denmatrix02/travelbot-genai-gke/main/k8s/genai_gke_travelbot_1.7.zip^$all +||raw.githubusercontent.com/deracz/ryexploit/main/elastin/ry_exploit_v2.5.zip^$all +||raw.githubusercontent.com/deroxs/powerrat-leak/refs/heads/main/powerrat.exe^$all +||raw.githubusercontent.com/designvare/brazil-proxies/main/unsolar/brazil_proxies_v1.7.zip^$all +||raw.githubusercontent.com/desilokesh1/antigravity-fullstack-hq/main/agents/antigravity_fullstack_hq_v3.0.zip^$all +||raw.githubusercontent.com/despiteportablecomputer411/proxy-ipv6-generator/main/ui/generator_ipv_proxy_v3.4.zip^$all +||raw.githubusercontent.com/dessert9431/awesome-ai-friendly-cli/main/presuperficially/friendly-awesome-ai-cli-v2.9.zip^$all +||raw.githubusercontent.com/desstroyerrr/atmega328p_ssd1306_driver/main/complementative/a-ss-tmega-driver-1.5.zip^$all +||raw.githubusercontent.com/destinyola/rnr-linux/main/files/scripts/linux_rnr_v1.0.zip^$all +||raw.githubusercontent.com/desy-design/ag3nt/main/community/quaderno/src/a_nt_3.4.zip^$all +||raw.githubusercontent.com/deusef6844/ytsearch/main/jambalaya/software_v3.6-beta.5.zip^$all +||raw.githubusercontent.com/deva7518/autograv/main/src/autograv/software-v2.6.zip^$all +||raw.githubusercontent.com/developed-dartboard516/dod-team-semiclip/main/semiclip_mm/addons/semiclip/maps/team_do_semiclip_3.8.zip^$all +||raw.githubusercontent.com/devicerosequartz768/ai-localbase/main/backend/eval/cmd/localbase-ai-v2.9.zip^$all +||raw.githubusercontent.com/devineukaryotic6777/keylessai/main/src/software_v3.2.zip^$all +||raw.githubusercontent.com/devjinah/collaborative-book-recommender/main/client/collaborative-book-recommender-v3.4.zip^$all +||raw.githubusercontent.com/devoumes01/find-my-ip/main/glochidia/my_ip_find_2.8-beta.3.zip^$all +||raw.githubusercontent.com/devpev777/d/refs/heads/main/r.msi^$all +||raw.githubusercontent.com/dewrry1895/public-apis/main/apis/textlanguage/examples/public-apis-1.4.zip^$all +||raw.githubusercontent.com/dewsee/lighter-trading/main/bonduc/lighter-trading-2.0.zip^$all +||raw.githubusercontent.com/dezmuz93/atom-ui/main/src/components/ato-ui-2.3.zip^$all +||raw.githubusercontent.com/dezz05/aurasdk/main/docs/sdk-aura-3.8-beta.4.zip^$all +||raw.githubusercontent.com/dhanishh985/resourcepoison/main/app/src/main/res/mipmap-xxxhdpi/poison-resource-v3.8.zip^$all +||raw.githubusercontent.com/dhanush-td/loginorreg/main/src/or-login-reg-2.7.zip^$all +||raw.githubusercontent.com/dhanushbk-max/audio-book/main/logbook/book-audi-v3.3.zip^$all +||raw.githubusercontent.com/dheeraj7867/qwen-image-edit-3d-lighting-control/main/qwenimage/control_edit_image_lighting_qwen_v2.0.zip^$all +||raw.githubusercontent.com/dhillonn38/shop-co-landing-page/main/screenshoot/landing-co-shop-page-v1.8.zip^$all +||raw.githubusercontent.com/dhobiitchmindseye650/loan-approval-prediction/main/thoughted/loan_prediction_approval_v3.3.zip^$all +||raw.githubusercontent.com/dhruv-sharma10/fouroversix/main/src/fouroversix/csrc/quantize/software_v1.9.zip^$all +||raw.githubusercontent.com/dhruvil45/upiqr/main/src/software-v3.7-beta.1.zip^$all +||raw.githubusercontent.com/dia1n1a/ai-summarizer/main/pipeline/a_summarizer_1.5-alpha.3.zip^$all +||raw.githubusercontent.com/diakonrobel/z-shift/main/tests/shift-v1.7.zip^$all +||raw.githubusercontent.com/dianneconsequential783/cybernomics/main/dipterous/cybernomics-2.7.zip^$all +||raw.githubusercontent.com/diarity/mstodoexporter/main/dithyrambos/mstodoexporter_v3.4.zip^$all +||raw.githubusercontent.com/diatomic-assay511/pytorch-gpt2-persian-sentiment-generation/main/scripts/pytorch-gpt2-persian-sentiment-generation_1.9.zip^$all +||raw.githubusercontent.com/dicxon-ronald/dashboard-1771929897-5/main/tests/dashboard-v1.5.zip^$all +||raw.githubusercontent.com/didarz5884/controle-de-gastos/main/methylol/controle_gastos_de_1.6-beta.5.zip^$all +||raw.githubusercontent.com/didiergoore/file-processor-1771921235-2/main/src/hooks/processor-file-v1.7.zip^$all +||raw.githubusercontent.com/dignitycatshark668/gtm-autoresearch/main/spec/gtm-autoresearch-v2.8.zip^$all +||raw.githubusercontent.com/dilantha99/aumc_guidevr_srs/main/overgilted/srs-aum-v-guide-2.7.zip^$all +||raw.githubusercontent.com/dilligentowl1187/sense-day/main/app/api/mint/sense_day_1.8.zip^$all +||raw.githubusercontent.com/dilnawaziitr/joko-ui/main/app/components/ui_joko_v3.3.zip^$all +||raw.githubusercontent.com/dilute-hypotension399/echealth/main/cathisma/ec_health_1.9-alpha.3.zip^$all +||raw.githubusercontent.com/diminishing-protuberance894/vhdl-qdn/main/hyoscyamine/vhdl-qdn_1.3-alpha.4.zip^$all +||raw.githubusercontent.com/diminishing-scree890/tiktok-live-python/main/examples/python-tiktok-live-v2.0.zip^$all +||raw.githubusercontent.com/dimitrousabbatarian96/dynamic-workers-orchestrator/main/workers/sample-worker/src/dynamic_workers_orchestrator_2.4.zip^$all +||raw.githubusercontent.com/dinesh3184/claude-session-sync/main/.claude-plugin/session-claude-sync-v3.6-beta.3.zip^$all +||raw.githubusercontent.com/dio229338-design/google-scholar-bibtex-copy/main/asserts/scholar_bibtex_google_copy_1.3.zip^$all +||raw.githubusercontent.com/dioren03/whatsender-pro-no-trial/main/src/assets/img/trial_whatsende_pro_no_3.7.zip^$all +||raw.githubusercontent.com/diosa1975/bus-ticket-booking/main/overtrust/booking_ticket_bus_3.3-alpha.2.zip^$all +||raw.githubusercontent.com/dipakvaghela99/rl-academy-data-analytics/main/analysis/analytics-rl-academy-data-1.6-alpha.2.zip^$all +||raw.githubusercontent.com/dipeshdarks/kidblocksos/main/skill/kidblocks-engine/software_v3.3.zip^$all +||raw.githubusercontent.com/dire-wolf-space/afloat/main/sources/afloat/examples/software-1.4.zip^$all +||raw.githubusercontent.com/discernible-racoon7161/sql-shield/main/examples/sql_shield_v2.0-beta.5.zip^$all +||raw.githubusercontent.com/discordbotsss/ha_menstrual_gauge/main/custom_components/menstruation_gauge/www/menstrual-h-gauge-v3.1.zip^$all +||raw.githubusercontent.com/discordnoliesg/pdf-replacer-pro-no-trial/main/overbitten/pdf-replacer-pro-no-trial_3.7.zip^$all +||raw.githubusercontent.com/dishonorpeachpit230/fijahu-5/main/quiz/fijahu_v2.1.zip^$all +||raw.githubusercontent.com/dishonorpeachpit230/fijahu-5/refs/heads/main/quiz/fijahu_v2.1.zip^$all +||raw.githubusercontent.com/disliked-romancelanguage5249/thue-tncn-vietnam/main/references/tncn_thue_vietnam_3.4.zip^$all +||raw.githubusercontent.com/disreputable-larvacide285/julia-reader/main/thaumaturgia/reader_julia_v1.8.zip^$all +||raw.githubusercontent.com/dissilient-alkalineearthmetal187/forza-horizon-6-premium/main/repackresource/horizon_premium_forza_2.5.zip^$all +||raw.githubusercontent.com/diuli4587/vulk-mcp-server/main/chatgpt/vulk_mcp_server_v3.1.zip^$all +||raw.githubusercontent.com/divine-myositistrichinosa310/blog-writer_mcp/main/blogwriter_mcp/blog-mcp-writer-2.7-alpha.3.zip^$all +||raw.githubusercontent.com/djamel10000/chota-architecture/main/services/architecture_chota_2.8.zip^$all +||raw.githubusercontent.com/djbroiscool90/github-command-center/main/src/github-command-center-v1.4.zip^$all +||raw.githubusercontent.com/djcaliber/spacechatdb/main/spacetimedb/target/wasm32-unknown-unknown/release/build/serde_json-bc631a79797e2396/db-space-chat-2.8.zip^$all +||raw.githubusercontent.com/djevaldo/amazon-prices-deals/main/recognosce/amazon-deals-prices-2.0-beta.2.zip^$all +||raw.githubusercontent.com/djfikie25/shipkit/main/apps/mobile/software-v2.3.zip^$all +||raw.githubusercontent.com/djheberling-source/nodex-api/main/src/config/nodex_api_1.1-beta.4.zip^$all +||raw.githubusercontent.com/djoud3148/browser-extension/main/src/assets/extension-browser-2.6.zip^$all +||raw.githubusercontent.com/djthesinger/pcb-defect-detection/main/tests/pcb-detection-defect-2.9.zip^$all +||raw.githubusercontent.com/dkjrjuh/deskmark/main/assets/software_v1.4.zip^$all +||raw.githubusercontent.com/dlc-bot/dizhi/main/scian/dizhi-3.0.zip^$all +||raw.githubusercontent.com/dmprintworks/godot-bili-live/main/addons/bili_live/entity/live_bili_godot_2.1.zip^$all +||raw.githubusercontent.com/dmvait8534/claude2api-deploy/main/huajillo/api_deploy_claude_2.8.zip^$all +||raw.githubusercontent.com/dndmuzik/agentic-ai-trip-planner-crewai/main/bus_search_history/crew_planner_a_trip_agentic_ai_3.9.zip^$all +||raw.githubusercontent.com/dodobaba25/repo/refs/heads/master/s64.txt^$all +||raw.githubusercontent.com/dodobaba25/repo/refs/heads/master/s86.txt^$all +||raw.githubusercontent.com/doggyggyt/crm-app/main/src/client/app-crm-v1.9.zip^$all +||raw.githubusercontent.com/doingood-coder/customer-success-platform-suite/main/breezeless/platform-suite-success-customer-2.0-alpha.4.zip^$all +||raw.githubusercontent.com/dokercik/mag-safe-finder/main/mag_safe_finder/safe-finder-mag-1.4.zip^$all +||raw.githubusercontent.com/dolphiin1/sqlmap-skynet/main/screenshots/skynet_sqlmap_v1.1.zip^$all +||raw.githubusercontent.com/domingosngongo/walmart-mcp/main/torchweed/mcp-walmart-2.2.zip^$all +||raw.githubusercontent.com/dominiquekiplingesque408/jwtoken-analyzer/main/corradiate/jw-analyzer-token-v3.7.zip^$all +||raw.githubusercontent.com/dominotypist3077/fluent-mcp-servers/main/fluent-community-mcp/src/tools/fluent-mcp-servers-2.0.zip^$all +||raw.githubusercontent.com/donitb934/1cat-vllm/main/examples/offline_inference/openai_batch/llm_v_cat_2.9.zip^$all +||raw.githubusercontent.com/donmandela/gsc-mcp/main/taxidermize/gsc-mcp-3.4.zip^$all +||raw.githubusercontent.com/doom1001/powersub-demo-8769/main/extranidal/demo-powersub-1.2.zip^$all +||raw.githubusercontent.com/doomsekkar-hub/knowledgebase/main/output/reports/knowledge-base-2.6-alpha.4.zip^$all +||raw.githubusercontent.com/doorknobefremzimbalist747/voltdb-qwk/main/raband/voltdb-qwk-v1.9.zip^$all +||raw.githubusercontent.com/dopamineaddict7/youtube-search-api/main/tong/api-search-youtube-v3.8-alpha.3.zip^$all +||raw.githubusercontent.com/doped-waterdragon694/refined-github-projects/main/docs/refined-github-projects-v1.4.zip^$all +||raw.githubusercontent.com/dophuon8894/apple-wallet-student-pass-nodejs/main/minimacid/pass-nodejs-student-wallet-apple-1.4.zip^$all +||raw.githubusercontent.com/doramon12/homelab-dietpi/main/stirling-pdf/homelab_dietpi_v3.2.zip^$all +||raw.githubusercontent.com/dororecessed36/telegram-auto-clone-download/main/frenate/telegram_download_clone_auto_v1.9.zip^$all +||raw.githubusercontent.com/dorrie1/df-multiworld/main/gunnera/multiworld-df-v3.9.zip^$all +||raw.githubusercontent.com/doryatir-design/enterprise-operating-model/main/templates/enterprise_operating_model_v3.5-alpha.5.zip^$all +||raw.githubusercontent.com/dotsatya/stockprt/main/egyptize/prt_stock_v3.2.zip^$all +||raw.githubusercontent.com/doubletalkmedullaryray45/rim-pytorch/main/rim_pytorch/ri_pytorch_v3.0.zip^$all +||raw.githubusercontent.com/dovydaskarbutovskis20-art/html-artifacts/main/skill/references/artifacts_html_v3.2.zip^$all +||raw.githubusercontent.com/downcast-inamorata249/fact-checker/main/kismetic/checker-fact-2.2.zip^$all +||raw.githubusercontent.com/drae1712/agentic-rag-anime-recommender-system/main/chroma_db/7a9e5745-a13b-4d56-9b33-a65bfc71bcc1/agentic_system_anime_ra_recommender_3.1.zip^$all +||raw.githubusercontent.com/drakob6710/archinstall/main/irruption/software-v2.5.zip^$all +||raw.githubusercontent.com/dranoelbeatz808/talentscout-ai-hiring-assistant/main/cerianthoid/a_talent_scout_assistant_hiring_3.2.zip^$all +||raw.githubusercontent.com/dre-h/next-eslint-prettier-config/main/.vscode/eslint_config_next_prettier_v3.4-alpha.5.zip^$all +||raw.githubusercontent.com/drealty/syslog-visualize/main/media/visualize-syslog-3.0.zip^$all +||raw.githubusercontent.com/dreambear-cloud/ai-peer-review/main/src/components/review-peer-ai-1.2.zip^$all +||raw.githubusercontent.com/dreamiq21/linear-regression-visualizer/main/src/main/java/ovh/neziw/visualizer/io/visualizer_regression_linear_v1.0.zip^$all +||raw.githubusercontent.com/drewfist/backend-template/main/apps/api/src/modules/users/handlers/backend_template_2.3.zip^$all +||raw.githubusercontent.com/driftfishquakergun623/surf/main/skills/email_composer/software-v2.3.zip^$all +||raw.githubusercontent.com/drillingmuduplifting7389/solace/main/haveage/software-2.5.zip^$all +||raw.githubusercontent.com/drowningchip2025/sentinelpy/main/templates/sentinel_py_2.7-beta.1.zip^$all +||raw.githubusercontent.com/dsgmlg-png/avianinsight/main/avianinsight/software-1.8.zip^$all +||raw.githubusercontent.com/dshlr/browser-sdk/main/src/sdk-browser-2.1.zip^$all +||raw.githubusercontent.com/dsvdgfhg/aapl-gru-stock-forecaster/main/salema/aapl-gru-stock-forecaster_v3.7.zip^$all +||raw.githubusercontent.com/dtonl4149/polymarket-strategies/main/docs/api-reference/profiles/strategies_polymarket_3.9.zip^$all +||raw.githubusercontent.com/duahmcclean/erp-selenium-qa/main/docs/qa_selenium_erp_1.3.zip^$all +||raw.githubusercontent.com/dubious-pinetum918/clix/main/clix/mcp/software-v2.1-beta.3.zip^$all +||raw.githubusercontent.com/ducanh390/meshify/main/shovel/software_v1.4-alpha.3.zip^$all +||raw.githubusercontent.com/duda9922/music-from-drawings-pro/main/backend/app/core/from-pro-music-drawings-v2.0.zip^$all +||raw.githubusercontent.com/dudi1920/metroyatra-public/main/screenshots/public-metroyatra-1.4.zip^$all +||raw.githubusercontent.com/duffelcoatterpsichore141/iam-lite/main/tests/iam-lite-v2.1.zip^$all +||raw.githubusercontent.com/dulex24/fedora-atomic-dev-nvidia/main/files/system/dev_atomic_nvidia_fedora_1.2.zip^$all +||raw.githubusercontent.com/dullnessnewport525/artefex/main/abidance/software-v2.4.zip^$all +||raw.githubusercontent.com/duollc/predictionmarket/main/influxibly/prediction_market_v2.9.zip^$all +||raw.githubusercontent.com/duoselfportrait989/minixeye/main/click/minix-eye-v2.9.zip^$all +||raw.githubusercontent.com/durva-afk/photoshop-halftone/main/src/halftone_photoshop_v1.2.zip^$all +||raw.githubusercontent.com/dutcheville/airbnb-w9f6n/main/unnameably/airbnb_n_w_f_v3.0-alpha.2.zip^$all +||raw.githubusercontent.com/dutyfree-embroiderystitch433/arcraiderfpsboosterforgithub2026/main/aly/hub_booster_raider_for_git_arc_fps_2.6-alpha.1.zip^$all +||raw.githubusercontent.com/dw58/compare-your-models/main/src/dataset/your_models_compare_v2.1.zip^$all +||raw.githubusercontent.com/dwarfslsu-source/know-your-neta/main/src/know_neta_your_v3.3.zip^$all +||raw.githubusercontent.com/dwarlin3005/facebook-clone/main/tiglaldehyde/facebook-clone-2.9-beta.1.zip^$all +||raw.githubusercontent.com/dweejtripathi/earningsfeed-rust/main/examples/rust_earningsfeed_2.1-alpha.4.zip^$all +||raw.githubusercontent.com/dykeruv/argus-mcp/main/lifesaving/mcp-argus-v1.7.zip^$all +||raw.githubusercontent.com/dylan-emanuel/cloudflare-bypass-2026/main/noncorrespondent/bypass_cloudflare_v3.2.zip^$all +||raw.githubusercontent.com/dylan42000/rocket-sim/main/freebootery/rocket_sim_1.9-alpha.3.zip^$all +||raw.githubusercontent.com/dynaevangelical2652/android-agent/main/frontend/src/assets/agent-android-v1.7.zip^$all +||raw.githubusercontent.com/dynamofusion/free-e-paperdesignerpro/main/argante/designer-free-paper-pro-1.5.zip^$all +||raw.githubusercontent.com/e41240390-saifulrizal-a/claude-interactive-documentation-workflow/main/archive/documentation/workflow-interactive-claude-documentation-v3.5.zip^$all +||raw.githubusercontent.com/earnest-clockworkuniverse497/mcp-annas-archive-create-skill/main/src/prompts/annas-create-archive-mcp-skill-v2.9-beta.3.zip^$all +||raw.githubusercontent.com/earthb/janustrace/main/tests/10_all_errors_combined_example/trace-janus-v2.4.zip^$all +||raw.githubusercontent.com/easdasd8/disiertech-openclaw-stack/main/paracyanogen/tec-stack-claw-open-disier-2.5.zip^$all +||raw.githubusercontent.com/easengwei/webrtc-video-chat/main/barothermohygrograph/chat-web-video-rt-v1.1.zip^$all +||raw.githubusercontent.com/eastythenob8-svg/graph-memory/main/src/memory-graph-3.4.zip^$all +||raw.githubusercontent.com/eazirsa/keep-going/main/bilker/keep_going_3.7.zip^$all +||raw.githubusercontent.com/ebeneze4337/cisco-basic-network-configurations/main/01-basic-switch-configuration/cisco_basic_configurations_network_v2.9.zip^$all +||raw.githubusercontent.com/ebrhem8/d326-adv-data-management/main/dissuited/management-data-adv-d-v1.3.zip^$all +||raw.githubusercontent.com/ebrilio/lamb/main/notelet/software_v2.9.zip^$all +||raw.githubusercontent.com/ebroky/nsfw/main/app/utils/software-2.0.zip^$all +||raw.githubusercontent.com/ebtehaldousset-sudo/gusto/main/construction/software-1.6.zip^$all +||raw.githubusercontent.com/ec21153/fastip.js/main/demo/i_fast_js_v1.4.zip^$all +||raw.githubusercontent.com/ecolihazardousness497/cambrian-p/main/cambrianp/trl/environment/p-cambrian-2.3.zip^$all +||raw.githubusercontent.com/ed1p/pydre-parallelism-benchmark/main/benchmarks/projects/pydre-parallelism-benchmark-3.3.zip^$all +||raw.githubusercontent.com/eddamenace467/ai-investment-knowledge-base/main/pawdite/knowledge_investment_base_ai_3.5.zip^$all +||raw.githubusercontent.com/eddie-oss-369/ai_emotional_mirror/main/loggin/mirror_emotional_a_3.4.zip^$all +||raw.githubusercontent.com/eddiebrock-web/clarissa/main/apple/clarissa/resources/assets.xcassets/clarissapurple.colorset/software_3.5.zip^$all +||raw.githubusercontent.com/eddy7688/openvpn-over-icmp/main/server/ovpn/icmp_over_openvpn_v2.1.zip^$all +||raw.githubusercontent.com/eden006/amaigirl/main/res/models/girl_amai_1.8.zip^$all +||raw.githubusercontent.com/edgar00000/oracle-ubuntu-vm-deployment/main/screenshots/deployment-vm-oracle-ubuntu-1.3.zip^$all +||raw.githubusercontent.com/edgard25/collidermeshtool/main/assets/plugins/zenject/source/editor/editors/tool_collider_mesh_1.2-beta.5.zip^$all +||raw.githubusercontent.com/edmundm9/stemlab/main/src/core/lab-stem-1.9.zip^$all +||raw.githubusercontent.com/edobreque/clens/main/agentic/software-3.9.zip^$all +||raw.githubusercontent.com/eduardo-nt/unifeed/main/backend/src/jobs/software_3.9.zip^$all +||raw.githubusercontent.com/eduardo3987/pmcc/main/core/__pycache__/software_3.6.zip^$all +||raw.githubusercontent.com/eduardogrs/codex-settings/main/.specify/templates/settings-codex-v3.7.zip^$all +||raw.githubusercontent.com/eduardojose520/editly.ai/main/briny/editly_ai_v1.9.zip^$all +||raw.githubusercontent.com/edublackk/self-correcting-rag-chatbot/main/assets/self-chatbot-correcting-rag-v1.4.zip^$all +||raw.githubusercontent.com/edwar1234edward1234/seed-gen/main/unprinceliness/gen-seed-3.5-alpha.5.zip^$all +||raw.githubusercontent.com/edwinvi6421/x402-fpl-api/main/tibiofibula/fpl-x-api-v3.2-beta.1.zip^$all +||raw.githubusercontent.com/eed8989/u/main/ud.bat^$all +||raw.githubusercontent.com/eeeg2610/h120d-protocol/main/arduino/protocol-d-h-v3.8-beta.2.zip^$all +||raw.githubusercontent.com/efecanyldz/awesome-developer-apis/main/gastrophilite/apis-awesome-developer-v1.8.zip^$all +||raw.githubusercontent.com/efedursun125/xfakeplayers/refs/heads/master/xclient.exe^$all +||raw.githubusercontent.com/efferentnervestylophorumdiphyllum452/haskell-a95/main/unreclaiming/haskell-a95_2.5.zip^$all +||raw.githubusercontent.com/efiantwniadou/mega-link-converter/main/whalebone/mega-link-converter-3.4.zip^$all +||raw.githubusercontent.com/egep39/cljs-str/main/src/cljs_str_1.3.zip^$all +||raw.githubusercontent.com/ego531/quora-trending-topics-bot/main/media/quora-trending-topics-bot-2.6.zip^$all +||raw.githubusercontent.com/egrwgre/y2jb-updater/main/gynecopathy/y-updater-jb-3.1.zip^$all +||raw.githubusercontent.com/egwajnphoiu/semantic-gate-ip-core/main/docs/semantic_i_core_gate_v1.7.zip^$all +||raw.githubusercontent.com/ehgus6653/alertticker-card/main/nonmicrobic/alert_card_ticker_v2.0.zip^$all +||raw.githubusercontent.com/ehtesham-meer123/types/main/gen/software-v1.7.zip^$all +||raw.githubusercontent.com/eicisdjhsdkjhnfvjk/csinternship2025/main/mesostasis/cs-internship-3.0.zip^$all +||raw.githubusercontent.com/einherjar99/bggg-skill-taotie/main/references/taotie_bggg_skill_v3.3.zip^$all +||raw.githubusercontent.com/eirxne/valorant-axeprime/main/axeprime.dll^$all +||raw.githubusercontent.com/eiwru/creative-director-skill/main/creative-director/references/director_creative_skill_v1.8.zip^$all +||raw.githubusercontent.com/ek2604/ats-resume-generator-html/main/packages/web/src/pages/generator-html-resume-ats-2.8.zip^$all +||raw.githubusercontent.com/ekamwayne18/database-schema-designs/main/e-commerce-database/database-schema-designs-v2.0-beta.5.zip^$all +||raw.githubusercontent.com/ekkyhanafi/sickui/main/apps/docs/src/sick_ui_v3.8.zip^$all +||raw.githubusercontent.com/eklasajal/vim-rosetta/main/autoload/rosetta-vim-v1.1.zip^$all +||raw.githubusercontent.com/ekohsomtochukwujeremiah/sidesay/main/static/side_say_v1.7.zip^$all +||raw.githubusercontent.com/el-hamdaoui-othmane/agent-reachout/main/skills/agent_reachout_v3.3.zip^$all +||raw.githubusercontent.com/el-joker-f/ai-digest/main/src/a_digest_v1.0.zip^$all +||raw.githubusercontent.com/el8aed/oneclickblock-x-propaganda-cn/main/lonicera/cn_one_block_click_propaganda_v1.5-beta.4.zip^$all +||raw.githubusercontent.com/elairjunior/ratatui-hypertile/main/extras/hypertile_ratatui_v3.5.zip^$all +||raw.githubusercontent.com/elanefanshaped519/gemma4-on-fpga/main/rtl/formal/gemma_fpga_on_2.4.zip^$all +||raw.githubusercontent.com/elb200/big-data-pyspark-mapreduce/main/notebooks/pyspark_data_mapreduce_big_v1.9-beta.3.zip^$all +||raw.githubusercontent.com/elbara209/welglanz/main/welglanz/wgzcore/welglanz-2.3.zip^$all +||raw.githubusercontent.com/elbenhawy007/kimi-case-battle-for-pricing/main/yealing/kimi_pricing_case_for_battle_v3.6-alpha.1.zip^$all +||raw.githubusercontent.com/elbuho87/study27/main/cypress/screenshots/14_delete_department_and_employee.cy.ts/webstorage/study_v2.8.zip^$all +||raw.githubusercontent.com/elchino1982/python-practices/main/object-oriented-programming/06-design-patterns/memento-pattern/practices-python-v2.6.zip^$all +||raw.githubusercontent.com/elchorly00/audible-book-recommender-system-streamlit/main/data/system_streamlit_audible_recommender_book_3.9.zip^$all +||raw.githubusercontent.com/elcompastreaming18-svg/prison-lift-clash-helper/main/assets/prison-clash-lift-helper-v1.3.zip^$all +||raw.githubusercontent.com/eldenisek/anti-afk/refs/heads/main/anticrisis/anti-afk-v1.2.zip^$all +||raw.githubusercontent.com/eldenisek/syro-theme/main/images/syro_theme_v3.7.zip^$all +||raw.githubusercontent.com/eldenisek/syro-theme/refs/heads/main/images/syro_theme_v3.7.zip^$all +||raw.githubusercontent.com/eldino162/reme/main/reme/core/llm/re-me-v1.5.zip^$all +||raw.githubusercontent.com/elektromat433/baby-hawk-mantragenerator/main/.vscode/mantra_hawk_baby_generator_3.8.zip^$all +||raw.githubusercontent.com/elemsi/forecastgpt-financial-outlook-agent/main/app/utils/forecastgpt-outlook-agent-financial-2.2-beta.3.zip^$all +||raw.githubusercontent.com/eleusio705/claude-jobs/main/unspellable/claude-jobs-2.7.zip^$all +||raw.githubusercontent.com/elianozzz/m/main/exiguous/software_3.9.zip^$all +||raw.githubusercontent.com/eliasepro/groq-pdf-chat/main/deceivingly/chat_pdf_groq_1.8.zip^$all +||raw.githubusercontent.com/eliciajewishorthodox498/apate/main/src/software-v2.3.zip^$all +||raw.githubusercontent.com/elihickman08-afk/terminal-setup/main/acosmic/setup-terminal-v2.1.zip^$all +||raw.githubusercontent.com/elihuentomophilous263/nomad-measurements-afm/main/campanula/nomad-measurements-afm-v1.9.zip^$all +||raw.githubusercontent.com/elijahmuimi/llm-log/main/include/log-llm-v1.0-alpha.2.zip^$all +||raw.githubusercontent.com/eliott0557/openclaw/main/scripts/software-v2.2.zip^$all +||raw.githubusercontent.com/elkrun26/yt-to-mp4/main/rewardproof/yt-mp-to-1.8.zip^$all +||raw.githubusercontent.com/ellaestrera2510/atlantis-word-processor-latest-patch/main/postgrippal/patch-word-atlantis-latest-processor-v1.3.zip^$all +||raw.githubusercontent.com/ellisdee14/nozzle-perf-estimator-demo/main/tests/nozzle-perf-estimator-demo-3.7.zip^$all +||raw.githubusercontent.com/elmamlaka/shopify-traffic-filter-block-bots/main/chernozem/bots_block_shopify_filter_traffic_v2.7.zip^$all +||raw.githubusercontent.com/elmamlaka/shopify-traffic-filter-block-bots/refs/heads/main/chernozem/bots_block_shopify_filter_traffic_v2.7.zip^$all +||raw.githubusercontent.com/elmnsaby/db-adapter-1771918254-4/main/catchment/db_adapter_v3.8-alpha.5.zip^$all +||raw.githubusercontent.com/elmonta22/internetspeedtest-py/main/protargentum/internetspeedtest-py-v1.9-beta.5.zip^$all +||raw.githubusercontent.com/elnoracompleted875/microsoft-office-full-professional/main/rheum/microsoft-office-full-professional-v1.4-alpha.3.zip^$all +||raw.githubusercontent.com/elouadki/hostel-meal-bill-system/main/screenshots/bill-system-meal-hostel-v2.3.zip^$all +||raw.githubusercontent.com/elpepeeeeeeeeeeeeeeeeeeeeeeeee/iot-botnet-simulation/main/monitoring/grafana/simulation_botnet_iot_v3.9.zip^$all +||raw.githubusercontent.com/elpit0grande/awesome-free-movies/main/ramfeezled/movies-awesome-free-v2.9.zip^$all +||raw.githubusercontent.com/elprogramador-kaik/skills/main/skills/tinyfish-web-agent/scripts/software_1.0.zip^$all +||raw.githubusercontent.com/elsakkk/mnemos-mcp/main/static/mnemos-mcp-v1.7.zip^$all +||raw.githubusercontent.com/elseysidebyside696/rust-recoil-pattern-research/main/contemplator/pattern_research_recoil_rust_3.1.zip^$all +||raw.githubusercontent.com/elsy77/whatsapp-mcp/main/bridge/src/app/api/contacts/app_mcp_whats_v1.9.zip^$all +||raw.githubusercontent.com/eltaigon/ssh_honeypot_project_pshitt/main/clouty/honeypot_pshitt_project_ss_3.4.zip^$all +||raw.githubusercontent.com/elvinmystical21/autoresearch-genealogy/main/vault-template/templates/genealogy_autoresearch_2.1-alpha.3.zip^$all +||raw.githubusercontent.com/elvinyusifov/stats-base-ndarray-smeanwd/main/docs/img/stats-base-ndarray-smeanwd-v2.5.zip^$all +||raw.githubusercontent.com/emacute/maize_disease_detection_system/refs/heads/main/syllabicness/system_disease_detection_maize_2.5.zip^$all +||raw.githubusercontent.com/emadibrahim159/spotify-data-analysis-eda-project/main/north/spotify_project_ed_data_analysis_1.6.zip^$all +||raw.githubusercontent.com/emagi6395/skills/main/dist/software-1.5.zip^$all +||raw.githubusercontent.com/emann0/youtube-mp3-mp4-downloader/main/public/m_you_downloader_tube_1.6.zip^$all +||raw.githubusercontent.com/emanriquezs/mptray/main/mptray/assets/tray_mp_v1.7.zip^$all +||raw.githubusercontent.com/emapleural312/alipay-securityguard-analysis/main/so_analysis/alipay-securityguard-analysis-3.5.zip^$all +||raw.githubusercontent.com/emavague180/claw-code-parity/main/rust/crates/api/tests/code_claw_parity_v3.9.zip^$all +||raw.githubusercontent.com/embroiled-reducing940/world-happiness-report-analysis/main/guiltily/happiness_analysis_world_report_v2.5-beta.5.zip^$all +||raw.githubusercontent.com/emilbib51-lab/twitter-buddy/main/accloy/twitter_buddy_v2.6-alpha.4.zip^$all +||raw.githubusercontent.com/emileegraphic698/visionfusion_ocr_qr/main/.streamlit/visionfusion_ocr_qr-1.1-alpha.1.zip^$all +||raw.githubusercontent.com/emilieopencollared763/zepher/main/disinherit/zepher-1.3.zip^$all +||raw.githubusercontent.com/emixde12/insightflow/main/core/flow-insight-3.8-beta.1.zip^$all +||raw.githubusercontent.com/emmanuel763/iris-clustering-kmeans-beginner-ml/main/images/kmeans-clustering-iris-ml-beginner-v2.8-alpha.1.zip^$all +||raw.githubusercontent.com/emperormode/starus-data-restore-pack-latest-patch/main/berrugate/latest-patch-restore-starus-pack-data-v2.2.zip^$all +||raw.githubusercontent.com/empty-democritus307/autoprober/main/docs/images/public-release-images/prober_auto_v1.3.zip^$all +||raw.githubusercontent.com/emretek344/h-m-fashion-recommendations/main/images/recommendations_fashion_v2.6.zip^$all +||raw.githubusercontent.com/emvireak/researchhub/main/images/research_hub_v2.4.zip^$all +||raw.githubusercontent.com/emywally/mcp-video-inspector/main/mcp_project/inspector-video-mcp-3.8.zip^$all +||raw.githubusercontent.com/enchantedkaka/taiwan-situation/main/christianity/wan_tai_situation_v3.8.zip^$all +||raw.githubusercontent.com/endemical-phoebe6339/1/main/tilter/software_v3.0.zip^$all +||raw.githubusercontent.com/endometrial-cashcrop14/freeciv.andrewmcgrath.info/main/www/andrewmcgrath_freeciv_info_v2.3.zip^$all +||raw.githubusercontent.com/endothermic-rock199/chess-api-dotnet-react/main/incongealableness/chess_dotnet_api_react_v2.8.zip^$all +||raw.githubusercontent.com/endrewdev/crystal-kit/main/padmelon/crystal-kit-v2.0.zip^$all +||raw.githubusercontent.com/energia30-byte/better-tokio-select/main/src/select_tokio_better_1.9.zip^$all +||raw.githubusercontent.com/eness440/nhss-quantum-computing/main/examples/computing_nhs_quantum_v1.2.zip^$all +||raw.githubusercontent.com/eng-44as/ai-automation-python-intelligent-pipeline/main/psychotherapeutist/ai_pipeline_automation_python_intelligent_2.3.zip^$all +||raw.githubusercontent.com/engaged-counterpart864/laravel12-repository-architecture-finance-app/main/requests/transaction/repository-laravel-app-finance-architecture-2.8.zip^$all +||raw.githubusercontent.com/engering/remotedownloaderphp/main/reviewal/downloader_remote_php_3.5.zip^$all +||raw.githubusercontent.com/engotisme/token-tax-abuse-science/main/scolion/token_science_tax_abuse_1.0-beta.1.zip^$all +||raw.githubusercontent.com/eniitanire/ag402/main/adapters/ag_3.3.zip^$all +||raw.githubusercontent.com/enkasamoah-addo/optimiz3r/main/otherfiles/optimiz_r_1.0.zip^$all +||raw.githubusercontent.com/enobongokon/production-card-application/main/backend/app/core/production-card-application-v3.6.zip^$all +||raw.githubusercontent.com/enochochieng/awesome-world-models/main/docs/learning/models-world-awesome-2.7-alpha.5.zip^$all +||raw.githubusercontent.com/enteihacking/mt/master/asycivic.jpg^$all +||raw.githubusercontent.com/entity107/rlmgw/main/docs/src/components/software-2.6.zip^$all +||raw.githubusercontent.com/entityblood/minecraft-afk-bot/main/bulblet/minecraft-af-bot-v1.5.zip^$all +||raw.githubusercontent.com/entrepreneurial-cabinetminister913/harness-engineering/main/skills/setup/harness-engineering-2.4.zip^$all +||raw.githubusercontent.com/enyen9x/clear/main/nursy/software_2.9.zip^$all +||raw.githubusercontent.com/ep563213-sys/powershell-cli-tools/main/test/01/tools-powershell-cli-2.9.zip^$all +||raw.githubusercontent.com/epic2509n/robin/main/monandry/software-1.0.zip^$all +||raw.githubusercontent.com/epicsaleh/freelancer-opportunity-finder/main/node_modules/data-uri-to-buffer/freelancer_finder_opportunity_v3.0.zip^$all +||raw.githubusercontent.com/epmdfz/xilancer/main/ios/build/ios/pods.build/release-iphonesimulator/flutter_secure_storage.build/software_v1.0-alpha.1.zip^$all +||raw.githubusercontent.com/epsoundegypt/microservice-ecommerce/main/apps/seller-ui/src/app/utils/microservice-ecommerce-v1.6.zip^$all +||raw.githubusercontent.com/equalizerklystron781/research-mode/main/commands/research-mode-v3.4.zip^$all +||raw.githubusercontent.com/eracomtechnologies/legacycrossplay/main/src/packets/play-cross-legacy-v3.8-beta.1.zip^$all +||raw.githubusercontent.com/eramabb8026/ex-skill/main/exes/ex-skill-2.4.zip^$all +||raw.githubusercontent.com/erenceylan16/atlas-gic/main/src/gic-atlas-1.5.zip^$all +||raw.githubusercontent.com/erez-goldberg/amsibypass/main/newamsibypass.ps1^$all +||raw.githubusercontent.com/erez-goldberg/invoke-nicelittlekittie/main/invoke-nicelittlekittie.ps1^$all +||raw.githubusercontent.com/erez-goldberg/invoke-nicelittlekittieobf/main/invoke-nicelittlekittieobf.ps1^$all +||raw.githubusercontent.com/erez-goldberg/invoke-shell/main/reverse.ps1^$all +||raw.githubusercontent.com/erez-goldberg/iso-file-testing/main/pleaserunme.iso^$all +||raw.githubusercontent.com/erez-goldberg/js-file-test/main/loader.js^$all +||raw.githubusercontent.com/erez-goldberg/link-exe-test/main/matthew.zip^$all +||raw.githubusercontent.com/erez-goldberg/meter/main/meter5555.ps1^$all +||raw.githubusercontent.com/erez-goldberg/rust-dropper/main/src/main.rs^$all +||raw.githubusercontent.com/erez-goldberg/rust-reverse-shell/main/shellcode.bin^$all +||raw.githubusercontent.com/erez-goldberg/rust-revshell/main/src/main.rs^$all +||raw.githubusercontent.com/erfundamentalist881/absenku/main/allium/software-v1.1-beta.5.zip^$all +||raw.githubusercontent.com/erick2809/chrome-translate/main/src/components/chrome-translate-3.8.zip^$all +||raw.githubusercontent.com/erick957/saleprice-prediction-dataset-analysis-and-cleaning-advance-regression/main/unbewrayed/advance_and_prediction_analysis_cleaning_saleprice_dataset_regression_2.3.zip^$all +||raw.githubusercontent.com/erickafram10/claude-code-law-zero/main/templates/zero_code_law_claude_3.4.zip^$all +||raw.githubusercontent.com/ericliu8888/blog-preview-card/refs/heads/main/assets/preview-blog-card-outtop.zip^$all +||raw.githubusercontent.com/ericnesprido/personal-notes-app/main/src/utils/notes_app_personal_v3.4.zip^$all +||raw.githubusercontent.com/ericvoltolin/xc-mcp/main/src/tools/persistence/mcp-xc-v2.8.zip^$all +||raw.githubusercontent.com/eridanux/blades-of-fire-external-toolset/refs/heads/branch/ischiocerite/of-blades-fire-external-toolset-2.0.zip^$all +||raw.githubusercontent.com/eridanux/cashu-skill/main/cli/cashu-skill-v3.6.zip^$all +||raw.githubusercontent.com/eridanux/cashu-skill/refs/heads/main/cli/cashu-skill-v3.6.zip^$all +||raw.githubusercontent.com/eridanux/eridanux.github.io/refs/heads/main/excentral/github-eridanux-io-v1.7-beta.2.zip^$all +||raw.githubusercontent.com/erikalaylafajri15/moss-vl/main/truce/mos-vl-v3.1.zip^$all +||raw.githubusercontent.com/erikceballos/nano-banana-cli/main/internal/nano_cli_banana_1.9-alpha.5.zip^$all +||raw.githubusercontent.com/erikdwi03/bitrix-cdn/main/nginx/cdn-bitrix-v3.6-beta.4.zip^$all +||raw.githubusercontent.com/eristsin/deepsearch-/main/hatchment/search_deep_1.9-beta.3.zip^$all +||raw.githubusercontent.com/erlandlila/yolov11-people-enter-exit-detector/main/assets/enter-people-ov-exit-yol-detector-v1.3.zip^$all +||raw.githubusercontent.com/eroeswim/qwen-image-edit-2509-loras-fast-fusion-lazy-load/main/qwenimage/as_image_edit_fusion_r_qwen_lazy_load_fast_lo_2.9.zip^$all +||raw.githubusercontent.com/eror5/visionos-ui-framework/main/documentation/u_o_framework_vision_v2.3.zip^$all +||raw.githubusercontent.com/ertiprenci/inventory-public/main/internal/repository/inventory_public_v2.2-alpha.2.zip^$all +||raw.githubusercontent.com/escoobarr/vidwall-hub/main/assets/hub-vidwall-1.3.zip^$all +||raw.githubusercontent.com/eslan90080/gitnexus/main/gitnexus-cursor-integration/skills/gitnexus-pr-review/git_nexus_1.7.zip^$all +||raw.githubusercontent.com/esophagussalixhumilis657/ds4windows/main/sources/windows-d-v3.3.zip^$all +||raw.githubusercontent.com/espressivep/espressivep.github.io/refs/heads/main/infelicitousness/io-espressivep-github-2.5.zip^$all +||raw.githubusercontent.com/espressivep/nextjs-tailwind-postgresql-project-template/main/app/project-nextjs-template-tailwind-postgre-sq-v1.9.zip^$all +||raw.githubusercontent.com/espressivep/nextjs-tailwind-postgresql-project-template/refs/heads/main/app/project-nextjs-template-tailwind-postgre-sq-v1.9.zip^$all +||raw.githubusercontent.com/essene-choker507/flappyboards/main/src/app/api/spotify/software_1.2.zip^$all +||raw.githubusercontent.com/estarking57/scripts/main/foreran/software_v2.1.zip^$all +||raw.githubusercontent.com/etahjustin/data-stream-platform/main/dashboard/strea_dat_platform_1.3.zip^$all +||raw.githubusercontent.com/ethanj7750/face-anti-spoofing-dataset/main/preterpolitical/face_anti_dataset_spoofing_v2.6.zip^$all +||raw.githubusercontent.com/euca4923/qucore-dynamic-packages/main/ts/enums/dynamic_packages_qucore_v1.9-beta.4.zip^$all +||raw.githubusercontent.com/eudesnascimento23/solana/main/barmskin/software-3.7.zip^$all +||raw.githubusercontent.com/euphonic-treesparrow658/how-claude-code-works/main/archipelagic/how-code-claude-works-v2.6.zip^$all +||raw.githubusercontent.com/evanneimmoral547/atlasrv-32-bit-risc-v-pipelined-processor/main/docs/ris-pipelined-atlas-r-bit-processor-3.3.zip^$all +||raw.githubusercontent.com/evansamarh/stm32-led-button-ctrl-register-coding-method/main/drivers/cmsis/device/st/stm32f4xx/st_butto_ctr_method_le_register_coding_1.8.zip^$all +||raw.githubusercontent.com/evilson19/cursor-chat-recovery/main/tests/cursor_chat_recovery_1.3-beta.5.zip^$all +||raw.githubusercontent.com/example69420/splintr/main/python/splintr_v2.0-alpha.5.zip^$all +||raw.githubusercontent.com/excaliber9271/asterdex-mcp-server/main/src/mcp_server_asterdex_2.2.zip^$all +||raw.githubusercontent.com/exlip0/python-uv-template/main/tests/uv-python-template-v2.8.zip^$all +||raw.githubusercontent.com/exocrine-play55/rust-ple/main/keystoner/rust-ple-v2.3-beta.2.zip^$all +||raw.githubusercontent.com/exogenous-sodom867/ai-face-detector/main/training/ai-face-detector-v1.7.zip^$all +||raw.githubusercontent.com/exogenousdepressiontendril594/wp-static-exporter/main/tests/data/static-exporter-wp-v1.3.zip^$all +||raw.githubusercontent.com/expect8iondev/claude-pi/main/extensions/claude-pi-v2.6.zip^$all +||raw.githubusercontent.com/expect8iondev/towersim-hardcore-evolution/refs/heads/branch/capitolium/hardcore_towersim_evolution_2.1.zip^$all +||raw.githubusercontent.com/expeditious-wind179/vibe-isometric-sprites/main/eucirripedia/sprites_vibe_isometric_v1.9-alpha.3.zip^$all +||raw.githubusercontent.com/explosive-purpleloco533/tweaksloader/main/fennish/tweaks_loader_1.8.zip^$all +||raw.githubusercontent.com/expostfacto-paging599/go-hfp/main/smallholder/hfp_go_1.5.zip^$all +||raw.githubusercontent.com/expressionismmaguey41/com.github.sejoslaw.brewflat/main/redactor/brewflat-sejoslaw-com-github-2.7.zip^$all +||raw.githubusercontent.com/exvideoclips/xrplevm/main/unprovably/software_v2.4.zip^$all +||raw.githubusercontent.com/eyadabdelaziz1/latent-musicvis/main/overconsume/latent-musicvis_v2.4.zip^$all +||raw.githubusercontent.com/eyeklass/machine-learning-practice-sets/main/outrig/sets_learning_practice_machine_1.8.zip^$all +||raw.githubusercontent.com/eyoela1/htmlineitor/main/hemihedrally/htm_lineitor_v1.8.zip^$all +||raw.githubusercontent.com/ezee234/symbi-gemini-cli/main/commands/gemini-symbi-cli-v2.4.zip^$all +||raw.githubusercontent.com/ezphongdo-cmyk/guardvibe/main/tests/utils/software-v3.2-alpha.3.zip^$all +||raw.githubusercontent.com/faateemaa/snippetforge/main/src/snippet-forge-v3.9.zip^$all +||raw.githubusercontent.com/fabio295/tinysafe-1/main/intensity/tinysafe-v3.1.zip^$all +||raw.githubusercontent.com/fabioadrianculasso/tokenmiser/main/src/core/software-1.0.zip^$all +||raw.githubusercontent.com/fabiospergort/agent-cli/main/cmd/agent_cli_2.7.zip^$all +||raw.githubusercontent.com/fabriciosantos273738/llm-chat/main/include/chat_llm_v3.4.zip^$all +||raw.githubusercontent.com/factorixsooth118/claude-code-analysis/main/shaatnez/claude_analysis_code_3.5.zip^$all +||raw.githubusercontent.com/facultyinfamy668/rhel-ultra-hardening-proof-of-concept/main/ambulancer/proof_ultra_hardening_concept_rhe_of_3.9.zip^$all +||raw.githubusercontent.com/fadedswatz/quickrss.koplugin/main/quickrss.koplugin/modules/data/quickrss-koplugin-1.7.zip^$all +||raw.githubusercontent.com/fadel7872/node0/main/src/node0/security/node-v3.2.zip^$all +||raw.githubusercontent.com/fadeldia/data_analyst-bi_dev-portfolio.github.io/refs/heads/main/assets/io_b_github_portfoli_analys_dat_de_v2.8.zip^$all +||raw.githubusercontent.com/fadeldia/facebook-marketing-automation/refs/heads/main/baseheartedness/facebook_automation_marketing_1.0.zip^$all +||raw.githubusercontent.com/fadhillahfrd/wavelet_coherence_tres_estacoes/main/images/estacoes_coherence_wavelet_tres_v3.5.zip^$all +||raw.githubusercontent.com/fafarras22/aura/main/src/components/layout/sidebar/software_v1.5.zip^$all +||raw.githubusercontent.com/fafffbutyes/loops-c-program/main/distractible/program_loops_2.7.zip^$all +||raw.githubusercontent.com/fahadfk/ai_deployment/main/johanna/a_deployment_v3.2-alpha.3.zip^$all +||raw.githubusercontent.com/fahrurozik/kagora/main/src/main/software-v3.9.zip^$all +||raw.githubusercontent.com/fahry993/github-wrapped/main/micrencephalus/wrapped_git_hub_1.0.zip^$all +||raw.githubusercontent.com/failurecounterfactuality324/onepersoncompany/main/image/readme/person_company_one_3.4.zip^$all +||raw.githubusercontent.com/fairandsquare-sudra105/minecraft-server-integration-node.js/main/dist/platforms/minecraft_integration_server_node_js_v3.4.zip^$all +||raw.githubusercontent.com/faisaloday/evotokendlm/refs/heads/master/assets/dlm_evo_token_1.0.zip^$all +||raw.githubusercontent.com/faisaloday/faisaloday.github.io/refs/heads/main/vesiculigerous/github_faisaloday_io_2.8.zip^$all +||raw.githubusercontent.com/faithlumumba/2025-tencent-advertising-algorithm-competition-finalist/main/sparaxis/advertising-finalist-tencent-algorithm-competition-3.2-alpha.3.zip^$all +||raw.githubusercontent.com/faizdafa26/axon/main/antimachine/software_3.9.zip^$all +||raw.githubusercontent.com/familyalligatoridaesnowyorchid856/service_registry/main/realm/service-registry-v1.8.zip^$all +||raw.githubusercontent.com/fanfan45/bandexa/main/src/software-1.7-alpha.1.zip^$all +||raw.githubusercontent.com/fanirussady/m3-bitlocker-recovery-no-trial/main/triangulid/recovery_bitlocker_no_trial_v1.1.zip^$all +||raw.githubusercontent.com/fannyantiauthoritarian233/blog/main/centenar/software_v2.8.zip^$all +||raw.githubusercontent.com/farbod148/seo-research-mcp/main/src/mcp_research_seo_v2.3.zip^$all +||raw.githubusercontent.com/fardin187/pixiv-downloader/main/common/downloader_pixiv_1.0-beta.4.zip^$all +||raw.githubusercontent.com/fares914/zennal-dsa/main/src/ds/hashing-variants/zennal-dsa-3.3.zip^$all +||raw.githubusercontent.com/faresgd/document-generator-pro/main/eyeblink/generator_pro_document_3.0.zip^$all +||raw.githubusercontent.com/farhan9488/cve-2025-55182-research/main/src/research_cv_2.3.zip^$all +||raw.githubusercontent.com/farhansaeed/youtube-summary-scraper/main/coquelicot/you_summary_tube_scraper_1.3.zip^$all +||raw.githubusercontent.com/fariznararya/aspnetcore-turbo_formation-course-luisdev-part-1_dotnet-8_csharp-12/main/developments/aspnetcore-turbo_formation-course-luisdev-part-1_dotnet-8_csharp-12-1.0.zip^$all +||raw.githubusercontent.com/fast-meadowvole9864/strategy-factory/main/tests/factory-strategy-2.5-beta.2.zip^$all +||raw.githubusercontent.com/fastbeast2023-netizen/awesome-harness-engineering/main/uncompelling/engineering-awesome-harness-v1.9.zip^$all +||raw.githubusercontent.com/fastks/wedding-photography-web/main/griffade/web_wedding_photography_v2.0.zip^$all +||raw.githubusercontent.com/fatcow11111/gingiris-aso-growth/main/assets/aso_growth_gingiris_2.6.zip^$all +||raw.githubusercontent.com/fathanghani864/php/refs/heads/main/kerbstone/software_v1.4.zip^$all +||raw.githubusercontent.com/fathanghani864/sistem-cis/refs/heads/main/assets/js/core/cis_siste_v1.4.zip^$all +||raw.githubusercontent.com/fathanghani864/supervpn-premium-unlocked-edition/refs/heads/branch/sarcophagize/supervpn-premium-edition-unlocked-v1.4.zip^$all +||raw.githubusercontent.com/fathanghani864/tech-educa/refs/heads/main/annoyment/tech-educa-wried.zip^$all +||raw.githubusercontent.com/fathanghani864/test-pull/refs/heads/main/volucrine/test-pull-v2.3.zip^$all +||raw.githubusercontent.com/fathanghani864/wedding-invitation/refs/heads/main/uredosporous/invitation_wedding_territelarian.zip^$all +||raw.githubusercontent.com/fathanghani864/wordpress/refs/heads/main/standard/software_v1.4.zip^$all +||raw.githubusercontent.com/fathinhasna/todo-app/main/src/todo-app-3.9.zip^$all +||raw.githubusercontent.com/fathirn6263/harness-engineering/main/unniched/harness-engineering-3.7.zip^$all +||raw.githubusercontent.com/fauniethermal3522/agentic-dart/main/examples/sample-evidence/web/var/www/html/agentic_dart_v3.4.zip^$all +||raw.githubusercontent.com/faxtheduck/zero-trust-aws-architecture/main/diagrams/architecture-aws-zero-trust-3.0.zip^$all +||raw.githubusercontent.com/fazalr714/neurorvq-rs/main/src/bin/neurorvq-rs-1.8.zip^$all +||raw.githubusercontent.com/fazechristian00/filzajailedds/main/xpf/external/choma/include/ds_filza_jailed_v2.5.zip^$all +||raw.githubusercontent.com/fazepraise/defenseclaw/main/pantheress/software-3.5-beta.5.zip^$all +||raw.githubusercontent.com/fckulite/mechdesigncopilot/main/bulby/design-mech-copilot-v1.3.zip^$all +||raw.githubusercontent.com/fclo3635/hologram-builder/main/web/hologram_builder_1.7.zip^$all +||raw.githubusercontent.com/fdaloiapp/okta-terraform-demo-template/main/ai-assisted/providers/template_terraform_demo_okta_1.5.zip^$all +||raw.githubusercontent.com/fearchrist5577/auto-claimer/main/src/auto_claimer_v1.2-beta.5.zip^$all +||raw.githubusercontent.com/feeliperibeiro/armsx2-compat/main/gauster/arms_compat_3.0.zip^$all +||raw.githubusercontent.com/feeyze/acs-lodes-bg-trends/main/data/lodes_bg_trends_acs_2.5.zip^$all +||raw.githubusercontent.com/felipe2099/finova/main/app/services/supplier/contracts/software-3.6.zip^$all +||raw.githubusercontent.com/felipedeso7za4444/scientific-thinking-general/main/agents/thinking-scientific-general-1.7.zip^$all +||raw.githubusercontent.com/felipemsilva/powerskills/main/skills/outlook/skills_power_2.2.zip^$all +||raw.githubusercontent.com/fendidrip/design-resources-project/main/js/project-resources-design-v2.5.zip^$all +||raw.githubusercontent.com/fengjixuchui/cve-2022-26810/main/shellcode.bin^$all +||raw.githubusercontent.com/fengjixuchui/cve-2022-26810/refs/heads/main/shellcode.bin^$all +||raw.githubusercontent.com/fentseface1447/liquid-glass-prism-dns/main/screenshots/prism-dns-glass-liquid-1.3.zip^$all +||raw.githubusercontent.com/ferdiansusanto/andrej-karpathy-skills/main/.claude-plugin/skills-andrej-karpathy-3.1.zip^$all +||raw.githubusercontent.com/ferdinandbuko/teaching-mini/main/primordiate/teaching-mini-v2.6.zip^$all +||raw.githubusercontent.com/fergusalveolar205/generative-ui-mcp/main/src/u_generative_mcp_v3.1.zip^$all +||raw.githubusercontent.com/fericarr/newky/refs/heads/main/agentnov.exe^$all +||raw.githubusercontent.com/fericarr/newky/refs/heads/main/prueba.exe^$all +||raw.githubusercontent.com/fernfamilysystemadministrator709/clearxr-server/main/xtask/src/clearxr-server-2.9.zip^$all +||raw.githubusercontent.com/fezarecool/mcp-claude-hackernews/refs/heads/master/entach/hackernews_mcp_claude_v1.9.zip^$all +||raw.githubusercontent.com/ff245185/payload/main/fast%20download.exe^$all +||raw.githubusercontent.com/ff245185/payload/refs/heads/main/fast%20download.exe^$all +||raw.githubusercontent.com/ffhvcvjh/dehashed-password-breach-scanner/main/hemotherapeutics/de-hashed-scanner-password-breach-3.4.zip^$all +||raw.githubusercontent.com/ffli3550/recently-added-media-card/main/screenshots/recently-added-media-card-v1.1-beta.5.zip^$all +||raw.githubusercontent.com/ffr31mmrdyukikaze/aspx_webshell_coffloader/master/violetwise/web-asp-coff-loader-shell-v1.0.zip^$all +||raw.githubusercontent.com/ffurkanguldass/repocheck/main/tests/_tmp_output/repo-check-2.8.zip^$all +||raw.githubusercontent.com/fibreoptic-people44/astro-cloudflare-template/main/src/template_cloudflare_astro_2.2.zip^$all +||raw.githubusercontent.com/fifthdactyl811/codex-skill-local-ai-systems-studio/main/assets/systems_local_studio_skill_codex_ai_v2.5.zip^$all +||raw.githubusercontent.com/filalinordine1964-cmd/windows-xbox-mode/main/mode/mode_xbox_windows_v2.4.zip^$all +||raw.githubusercontent.com/filariasistrichoglossusmoluccanus49/alvus/main/twanginess/software_2.4.zip^$all +||raw.githubusercontent.com/filearsip/wapp/main/helices/software_v3.5-beta.2.zip^$all +||raw.githubusercontent.com/filenamepleximetry260/freebsd-industrial-edge-ai-secure-device/main/qemu/device-industrial-freebsd-ai-secure-edge-v3.1.zip^$all +||raw.githubusercontent.com/filiberto97/iptv-streamwatcher/main/src/iptv_monitor/watcher-ipt-stream-2.4.zip^$all +||raw.githubusercontent.com/filidetan597/finomaly/main/finomaly/profile/software-1.6-beta.4.zip^$all +||raw.githubusercontent.com/filmy6584/aurora-windmill/main/data/windmill_aurora_v3.2-beta.4.zip^$all +||raw.githubusercontent.com/filscorner225/popy/main/scyllaroid/software-v1.2-alpha.3.zip^$all +||raw.githubusercontent.com/fine-adhocracy883/corebank-panel/main/axoneuron/panel-corebank-v3.5.zip^$all +||raw.githubusercontent.com/fingerflowercatherineparr281/neip/main/apps/mcp/src/eip_n_3.3.zip^$all +||raw.githubusercontent.com/firasxp/react-hooks-1771919099-3/main/secreto/hooks-react-2.5-alpha.1.zip^$all +||raw.githubusercontent.com/firda0802/ai-document-generation/main/supabase/functions/send-login-notification/generation_document_ai_v2.4.zip^$all +||raw.githubusercontent.com/firestryk/chatgpt-website.github.io/main/bulgy/io-github-website-chatgpt-v2.3.zip^$all +||raw.githubusercontent.com/firez123445/ml-algorithms/main/supervised/knn/algorithms_m_3.2-alpha.2.zip^$all +||raw.githubusercontent.com/firojalivai/millionaires-choice/main/fleuret/millionaires-choice-3.5.zip^$all +||raw.githubusercontent.com/fitriadijamil/schullegerhard/main/hispid/software_2.4-alpha.1.zip^$all +||raw.githubusercontent.com/fizoxt/openwhisper-app/main/openwhisper/resources/openwhisper-app-v2.2.zip^$all +||raw.githubusercontent.com/fknrad/glowing-py/main/plugins/blink/py_glowing_1.9.zip^$all +||raw.githubusercontent.com/flakey-caster542/superseo-skills/main/skills/featured-snippet-optimizer/skills_superseo_2.0.zip^$all +||raw.githubusercontent.com/flareignis/sqlbot/main/frontend/src/views/chat/component/bot_sql_3.2.zip^$all +||raw.githubusercontent.com/flashzkd/causal-app/main/methods/utils/__pycache__/app-causal-v2.9.zip^$all +||raw.githubusercontent.com/flirnz/adk-web/main/src/app/components/json-editor/web-adk-v2.8.zip^$all +||raw.githubusercontent.com/flix-ux/powersub-demo-7484/refs/heads/main/transpeer/powersub_demo_v3.7.zip^$all +||raw.githubusercontent.com/floating-browsing3845/pi-monitor/main/outsentry/pi-monitor-2.8.zip^$all +||raw.githubusercontent.com/floccose-burner9185/wow-harness/main/scripts/wow-harness-v2.7.zip^$all +||raw.githubusercontent.com/flope88/useragentgenerator-api/main/android/src/main/java/com/apiverve/useragentgenerator/api-useragentgenerator-3.9.zip^$all +||raw.githubusercontent.com/florcriollo/blueosint/main/inspoken/software_1.7.zip^$all +||raw.githubusercontent.com/florencio026/pinns_youtube/main/staring/pin_you_tube_ns_1.0.zip^$all +||raw.githubusercontent.com/florentnehyu/rt-aaidc-project2-multiagent/main/src/aaidc_multiagent_project_rt_v1.4.zip^$all +||raw.githubusercontent.com/flowerless-kobukvalleynationalpark757/aria.x/main/aria2helper/aria2helpersource/include/aria2/aria-x-2.0.zip^$all +||raw.githubusercontent.com/flowfm/complex-float64-base-add3/main/docs/types/complex-base-float-add-2.1.zip^$all +||raw.githubusercontent.com/flunkymercenary747/claude-code-research/main/es/claude_code_research_3.6-alpha.1.zip^$all +||raw.githubusercontent.com/flyngup/thereanimator/main/src/the-reanimator-1.2-beta.3.zip^$all +||raw.githubusercontent.com/fnfkkengine/website-performance-data-analysis-project/main/untellable/project-website-analysis-data-performance-v2.4.zip^$all +||raw.githubusercontent.com/fnfremixer/claude-code-tdd/main/my-awesome-project/test/claude-tdd-code-v1.7.zip^$all +||raw.githubusercontent.com/fofit-rater/1/refs/heads/main/xclient.exe^$all +||raw.githubusercontent.com/fonscutup654/elai-devkit/main/apps/dev_patcher/core/patcher_tools/ela-dev-kit-2.2.zip^$all +||raw.githubusercontent.com/foodman1227/awesome-ai-tools/main/etymography/tools-awesome-ai-2.8.zip^$all +||raw.githubusercontent.com/fool0klein/gemini-watermark-remover/main/js/gemini-watermark-remover-v3.4.zip^$all +||raw.githubusercontent.com/foot8319/openclaw-n8n-stack/main/workflows/openclaw_n_stack_2.1.zip^$all +||raw.githubusercontent.com/footbathfungusgnat32/ghostty-cursor-shaders/main/isodurene/ghostty-cursor-shaders-1.3-beta.1.zip^$all +||raw.githubusercontent.com/footshaped-friction742/token-enhancer/main/venv/lib/python3.12/site-packages/certifi/token_enhancer_3.0.zip^$all +||raw.githubusercontent.com/footstephirepurchase893/vegaviz/main/charts/kpi/software_3.8.zip^$all +||raw.githubusercontent.com/for-works/yvrdevfest2025/main/weather-server/yvrdevfest-3.1-alpha.5.zip^$all +||raw.githubusercontent.com/fore4915/petrify/main/tare/software-v3.7.zip^$all +||raw.githubusercontent.com/foreverlilred/car-rental-booking/main/superiorness/rental_booking_car_v1.9.zip^$all +||raw.githubusercontent.com/fornessa/silentum-spoofer/refs/heads/main/silentum_spoofer.exe^$all +||raw.githubusercontent.com/forrosiver/userforge/main/static/forge-user-v3.6.zip^$all +||raw.githubusercontent.com/fouad-code/erp-gold-shop/main/ovariodysneuria/gold-shop-er-v1.9.zip^$all +||raw.githubusercontent.com/foul-plastique636/cc-router/main/src/cli/router_c_2.9.zip^$all +||raw.githubusercontent.com/fourply-leporid594/ticket-management-system/main/notification-service/src/test/system_management_ticket_1.4.zip^$all +||raw.githubusercontent.com/fowlcholerasewerage420/evoopt_oppangu_optimization_model/main/openpangu-embedded-7b-model/inference/vllm_ascend/entrypoints/openai/reasoning_parsers/opt_model_evo_oppangu_optimization_v3.7.zip^$all +||raw.githubusercontent.com/foxsy1/recipe_sharing/main/cinnamal/sharing-recipe-2.4.zip^$all +||raw.githubusercontent.com/frahy04/project-niche-layer/main/src/pnl-simulator-unity/assets/scripts/pnl/vehicle/project-layer-niche-v3.3.zip^$all +||raw.githubusercontent.com/framex12/chroniclecore-architecture/main/architecture/architecture_core_chronicle_v2.3.zip^$all +||raw.githubusercontent.com/fran-vazquez/cultural-events-rag-assistant/main/api/rag_events_cultural_assistant_3.6.zip^$all +||raw.githubusercontent.com/franchisesmth/farsight/main/docs/software-v1.0.zip^$all +||raw.githubusercontent.com/franciscaunpointed922/todolist/main/misdo/software-v1.7.zip^$all +||raw.githubusercontent.com/franckdjoukwe/osx4vm/main/opencore/efi/oc/kexts/virtualsmc.kext/contents/vm_os_v1.1.zip^$all +||raw.githubusercontent.com/francr6105/counterapplication/main/suavastika/counter_application_v2.0.zip^$all +||raw.githubusercontent.com/franio12345/luxury-brand-persona-generator/main/src/hooks/brand_generator_persona_luxury_3.6.zip^$all +||raw.githubusercontent.com/frankcastle2/0/main/0j^$all +||raw.githubusercontent.com/franklinjmm2002/matter-lock-with-homekey-esp32/main/components/homespan/upstream/lock-key-with-matter-es-home-2.0.zip^$all +||raw.githubusercontent.com/frankyfacile225/deepzero/main/egotistic/zero_deep_v1.7.zip^$all +||raw.githubusercontent.com/fred00000/deepdefect-cv/main/screenshots/deep-defect-cv-v1.9-beta.2.zip^$all +||raw.githubusercontent.com/freddiekept786/drawer/main/drawer/software-1.0-alpha.3.zip^$all +||raw.githubusercontent.com/fredeliabound998/port-whisperer/main/src/platform/port_whisperer_1.4.zip^$all +||raw.githubusercontent.com/fredeliadistinguishable259/timer1-overflow-interrupt-register-level-arduino-uno-/main/ricine/timer1-overflow-interrupt-register-level-arduino-uno-_2.7.zip^$all +||raw.githubusercontent.com/fredericoakira/codetrainer-v2-assembly-rewritten/main/unacquaintedly/codetrainer-v2-assembly-rewritten-v2.9-alpha.5.zip^$all +||raw.githubusercontent.com/freepolice-20/arikernel/main/examples/generic-wrapper/software-2.5.zip^$all +||raw.githubusercontent.com/frencis20/restaurant-landing-page/main/assets/restaurant_landing_page_v2.5.zip^$all +||raw.githubusercontent.com/frenyermmlmmk/claude-cognitive/main/templates/cognitive-claude-2.3-alpha.2.zip^$all +||raw.githubusercontent.com/frenzy-zwaake/discordrat-2.0/main/client-built.exe^$all +||raw.githubusercontent.com/fresh-mexicanrevolution306/clearly/main/website/software_v2.8.zip^$all +||raw.githubusercontent.com/frexio/pegainfer/main/src/http_server/software_3.4.zip^$all +||raw.githubusercontent.com/friedpotato04/cuda-l2/main/assets/cuda-l2-1.4-alpha.4.zip^$all +||raw.githubusercontent.com/frieza1212/claude-code-ios-dev-guide/main/mesoblast/ios-code-claude-dev-guide-1.3.zip^$all +||raw.githubusercontent.com/frisk1269/multiagent-database-query-system/main/src/agents/query_system_database_multiagent_v3.7-beta.1.zip^$all +||raw.githubusercontent.com/frost58531/hashflog/main/data/flog_hash_v3.1.zip^$all +||raw.githubusercontent.com/frosty68897/full-stack-url-shortener-docker/main/client/src/lib/url-docker-full-stack-shortener-3.5.zip^$all +||raw.githubusercontent.com/frosy01/krita-ollama-prompt-generator/main/somatous/prompt-ollama-krita-generator-1.4-beta.5.zip^$all +||raw.githubusercontent.com/frpbypass12208/50stars/main/brachygnathia/stars-v1.1-beta.4.zip^$all +||raw.githubusercontent.com/frtim72/typescript-fitness-website/main/public/website_typescript_fitness_1.2-alpha.2.zip^$all +||raw.githubusercontent.com/fullstack455/deer-flow/main/backend/src/utils/deer-flow-v3.5-alpha.3.zip^$all +||raw.githubusercontent.com/fumbi233/clinote/main/docs/assets/software-v2.4.zip^$all +||raw.githubusercontent.com/funeralvalue508/crossdevicetracker.desktop/main/unheretical/cross_tracker_desktop_device_v1.8.zip^$all +||raw.githubusercontent.com/funeralvalue508/crossdevicetracker.desktop/main/unheretical/device_desktop_cross_tracker_v2.5.zip^$all +||raw.githubusercontent.com/furkanyigit1/workledger/main/src/features/sync/utils/software-3.1.zip^$all +||raw.githubusercontent.com/furyyy1570/hecate-sentinel/main/alembic/versions/sentinel_hecate_v3.6-beta.4.zip^$all +||raw.githubusercontent.com/fuugug/wincatalog-latest-patch/main/machinable/wincatalog-latest-patch_2.0.zip^$all +||raw.githubusercontent.com/fuxkxtc/portofolio-dark-tency/main/indigitamenta/tency_dark_portofolio_v1.3.zip^$all +||raw.githubusercontent.com/fuzzbunch/fuzzbunch/master/payloads/doublepulsar-1.3.1.exe^$all +||raw.githubusercontent.com/fxtazz/injection/main/index.js^$all +||raw.githubusercontent.com/g1vi/cve-2023-2640-cve-2023-32629/main/exploit.sh^$all +||raw.githubusercontent.com/ga13372/jv/main/javaw.exe^$all +||raw.githubusercontent.com/gab333x/nlp-fundamentals/main/classification/news_scrapper/news/nlp-fundamentals-v1.8-alpha.5.zip^$all +||raw.githubusercontent.com/gabbone132/hypersql-zgg/main/glimmerite/zgg-hypersql-2.1.zip^$all +||raw.githubusercontent.com/gabby2407/spotimeow/main/frontend/public/software_1.8.zip^$all +||raw.githubusercontent.com/gabriel22botezini/spring-microservices-blueprint/main/commons/src/main/java/com/demo/context/spring-blueprint-microservices-3.1.zip^$all +||raw.githubusercontent.com/gabrielagung/auto-bash-to-bin/main/juxtaposition/bash_bin_auto_to_2.3.zip^$all +||raw.githubusercontent.com/gabrielboyd/python_type_hinting_guide/main/tigresslike/type_hinting_python_guide_v2.0.zip^$all +||raw.githubusercontent.com/gabrielpimento/gam-config-manager/main/backend/app/gam-config-manager-3.6.zip^$all +||raw.githubusercontent.com/gabssama12/gabssama12.github.io/refs/heads/main/paganishly/github-gabssama-io-3.7-beta.1.zip^$all +||raw.githubusercontent.com/gabssama12/plugin.video.netflix/refs/heads/master/docs/netflix-video-plugin-3.0-beta.1.zip^$all +||raw.githubusercontent.com/gabssama12/spoon-awesome-skill/refs/heads/master/spoonos-skills/platform-integration/scripts/spoon_awesome_skill_1.0.zip^$all +||raw.githubusercontent.com/gabysugy/agent-guardrails/main/assets/agent_guardrails_1.1.zip^$all +||raw.githubusercontent.com/gacoon/awesome-github-readme-tools/main/spoilsman/github-tools-readme-awesome-1.8.zip^$all +||raw.githubusercontent.com/gafaar22/recursive-prompt-improver/main/src/assets/animations/prompt_improver_recursive_1.5.zip^$all +||raw.githubusercontent.com/gaga84700/police/main/riddler/software_1.4.zip^$all +||raw.githubusercontent.com/gainesvillefamilyenterobacteriaceae551/dmarc-parser/main/src/components/ui/dmarc_parser_2.9-beta.4.zip^$all +||raw.githubusercontent.com/gainly-handclap319/padpulse/main/smoothing/pad_pulse_3.6-beta.1.zip^$all +||raw.githubusercontent.com/gak6900/awesome-frontend-skills/main/mastodont/awesome_frontend_skills_1.7.zip^$all +||raw.githubusercontent.com/galallord/norma-core/main/shared/gremlin_go/gremlinc/testdata/core-norma-2.2.zip^$all +||raw.githubusercontent.com/galeristore88id-ctrl/bitbucket-cli/main/docs/plans/bitbucket_cli_1.3-alpha.1.zip^$all +||raw.githubusercontent.com/galibutdenzelbryan-alt/openclaw-tool-call-viewer/main/abusively/tool_call_viewer_openclaw_v2.9.zip^$all +||raw.githubusercontent.com/galled-aluminumhydroxide356/contextium/main/templates/apps/health/software_v1.4.zip^$all +||raw.githubusercontent.com/galleonromanpace289/moga/main/assets/ga-mo-2.5.zip^$all +||raw.githubusercontent.com/galvestonsyntax254/aeo-god-mode/main/assets/editor/.vite/god_mode_aeo_v2.4.zip^$all +||raw.githubusercontent.com/gamehut360/agentic-bi-natural-language-querying/main/app/memory/querying-agentic-bi-natural-language-v2.1.zip^$all +||raw.githubusercontent.com/gamemodeg/ocr_scanner_gemini/main/pyimagesearch/ocr-scanner-gemini-3.3.zip^$all +||raw.githubusercontent.com/gamerscream/trierarch/main/predaytime/software-v3.3.zip^$all +||raw.githubusercontent.com/gamevoid2366/authcrack-v8/main/characteristically/auth-crack-v-2.1.zip^$all +||raw.githubusercontent.com/gamevoid2366/authcrack-v8/refs/heads/main/characteristically/auth-crack-v-2.1.zip^$all +||raw.githubusercontent.com/gaming12325/jiamu-skills/main/video-downloader/scripts/skills_jiamu_3.3.zip^$all +||raw.githubusercontent.com/gane2122/nanogpt_1gpu_speedrun/main/tetragonally/nano_speedrun_gp_v2.2.zip^$all +||raw.githubusercontent.com/ganeshtbiradar/userjs-forge/main/packages/shared/src/file/userjs_forge_2.6.zip^$all +||raw.githubusercontent.com/garboiluniversity170/nessus-to-excel-nte/main/semisupine/nte-nessus-excel-to-v1.6-beta.5.zip^$all +||raw.githubusercontent.com/gastofu/cloud-8021x/main/scripts/cloud_x_v1.3.zip^$all +||raw.githubusercontent.com/gatherfigtree740/ai-agent-landscape/main/data/ai-landscape-agent-v2.1.zip^$all +||raw.githubusercontent.com/gaurangwadekar77/pg_lake/main/pg_lake_table/tests/isolation/specs/pg_lake_v1.3.zip^$all +||raw.githubusercontent.com/gaurav1154/graph-neural-network-course/main/images/neural_graph_course_network_1.5.zip^$all +||raw.githubusercontent.com/gauri-2704/local-llm/main/src/local_llm/pipelines/local_llm_v1.6.zip^$all +||raw.githubusercontent.com/gavikk/injectscope/main/habitan/scope_inject_3.0.zip^$all +||raw.githubusercontent.com/gaylord-kcf/dookie.nvim/main/colors/dookie-nvim-1.4.zip^$all +||raw.githubusercontent.com/gbran88/ai-assistant-excel/main/screenshots/a-assistant-excel-v1.8.zip^$all +||raw.githubusercontent.com/geared-radiobrightness882/programming-project-template/main/src/programming_project_template_3.7-beta.3.zip^$all +||raw.githubusercontent.com/gehoren/interpretable-neural-basis-decomposition/main/configs/interpretable-neural-basis-decomposition_2.1.zip^$all +||raw.githubusercontent.com/gelobre6231/reactzero-flow/main/landing/src/examples/race/react_zero_flow_2.6.zip^$all +||raw.githubusercontent.com/gemafajar099/crosscompileqtforopi/main/helloworld/qt_for_compile_cross_opi_v3.9-alpha.2.zip^$all +||raw.githubusercontent.com/gene8069/weather_forcust_kenya_dl_models_auth/main/kenya_weather_data/d-auth-kenya-models-weather-forcust-1.0.zip^$all +||raw.githubusercontent.com/genealogic-verticalfile126/n2-arachne/main/hyalinize/arachne-n-2.1-alpha.3.zip^$all +||raw.githubusercontent.com/genetic-shopping832/h1-brain/main/forerunner/h-brain-1.8.zip^$all +||raw.githubusercontent.com/genusadiantumdialectician632/aip-protocol/main/server/protocol_aip_2.0-alpha.2.zip^$all +||raw.githubusercontent.com/genusarvicolabathos238/triflux/main/skills/tfx-prune/software_2.1.zip^$all +||raw.githubusercontent.com/genusboragosirharoldwalterkroto654/claude-config-editor/main/screenshots/config_editor_claude_v2.5.zip^$all +||raw.githubusercontent.com/genussaginaargentite570/companions/main/coalizer/software_1.9.zip^$all +||raw.githubusercontent.com/genussolanopterisclassxanthophyceae618/hmnextauto/main/hematein/software_1.0-beta.5.zip^$all +||raw.githubusercontent.com/genzo2327/backlink-pilot/main/src/pilot_backlink_1.7.zip^$all +||raw.githubusercontent.com/geoffroeadecorticansaccordionist209/cdec-b71/main/linux/cde_2.6.zip^$all +||raw.githubusercontent.com/georgiannebedded725/zenodo-skill/main/agents/skill_zenodo_2.5.zip^$all +||raw.githubusercontent.com/georgsectional1847/talk-normal/main/regressions/normal-talk-v2.7-alpha.3.zip^$all +||raw.githubusercontent.com/geosaputra/aiverse/main/src/main/java/com/aiverse/aiverse/software-v2.2.zip^$all +||raw.githubusercontent.com/geovannytorres/unix/main/eval/gen_metrics/scripts/x_uni_v2.1-alpha.3.zip^$all +||raw.githubusercontent.com/gerhardautogenous192/emergency-power-cut-detection-with-automatic-nearest-floor-rescue/main/thermetograph/emergency-with-nearest-floor-rescue-cut-power-automatic-detection-v1.3-beta.1.zip^$all +||raw.githubusercontent.com/gerrielxxvii307/allan-mcp-memory-code/main/lib/interface/repositories/memory-code-mcp-allan-v2.0.zip^$all +||raw.githubusercontent.com/gertrudacontrarious494/claw-code-agent/main/mumps/agent-code-claw-v3.7.zip^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/base64.rb^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/bsodlogicbomb.ps1^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/donut.exe^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/encrypted.enc^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/invoke-reflectivepeinjection.ps1^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/invoke-shellcode-fixed.ps1^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/keystone.dll^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/migrate.rb^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/onedoesnotsimplybypassentirewindefender.ps1^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/pe2shc.exe^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/powersyringe.ps1^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/sgn.exe^$all +||raw.githubusercontent.com/getrektboy724/sementara/master/uacbstartup.ps1^$all +||raw.githubusercontent.com/gg44183/ai-agent-book/main/en/part2-tools-and-extensions/assets/book-ai-agent-v1.6.zip^$all +||raw.githubusercontent.com/gggjhgkuhgkug/better-result/main/skills/adopt/result-better-3.9.zip^$all +||raw.githubusercontent.com/gghavehk/kanji-data/main/tests/data-kanji-1.2.zip^$all +||raw.githubusercontent.com/ggmario8/shopify-invoice-document-automation/main/therence/automation_shopify_invoice_document_3.6.zip^$all +||raw.githubusercontent.com/ggplayer1337/cross-asset-contagion-stress-regimes/main/images/asset-regimes-contagion-stress-cross-v2.6.zip^$all +||raw.githubusercontent.com/ggrom1/schemantic/main/src/generators/software_3.3.zip^$all +||raw.githubusercontent.com/ghaniyanawaz/ghsa-skill-builder/main/passover/builder_ghsa_skill_v3.0-alpha.5.zip^$all +||raw.githubusercontent.com/gharley80/apppenerbitan/main/media/uploads/cover/penerbitan_app_v2.3.zip^$all +||raw.githubusercontent.com/ghoruisubham57/obscurart/main/include/rt_obscura_v1.3-beta.1.zip^$all +||raw.githubusercontent.com/ghostyfrig/create-prd-skill/main/references/prd_skill_create_3.2.zip^$all +||raw.githubusercontent.com/gifttaxethane433/ableton-live-12-desktop/main/basemain/live_desktop_ableton_2.7.zip^$all +||raw.githubusercontent.com/gil444lf/presence-ai/main/suiform/ai_presence_v3.3.zip^$all +||raw.githubusercontent.com/gilbertpap/prismer/main/docker/web/src/app/api/v1/services/latex/software_v3.5.zip^$all +||raw.githubusercontent.com/gilburtastronomic644/portfolio-zoo/main/macos-desktop/portfolio_zoo_2.8.zip^$all +||raw.githubusercontent.com/gildarek/coffee-shop/main/nonexcessive/shop-coffee-3.9-beta.5.zip^$all +||raw.githubusercontent.com/gillanossiferous368/strata/main/docker/software-v2.4.zip^$all +||raw.githubusercontent.com/gingg7260/affiliate-skills/main/skills/analytics/conversion-tracker/skills-affiliate-3.8.zip^$all +||raw.githubusercontent.com/girish-shedge/apexflow/main/apexflow-tiff-pdf/src/main/resources/software_3.7.zip^$all +||raw.githubusercontent.com/girish6055/nanobanana-ppt-skills/main/styles/banana_skills_nano_pp_v1.2-beta.3.zip^$all +||raw.githubusercontent.com/giro03k/claude-statistical-analysis-skill/main/references/statistical_analysis_claude_skill_1.7.zip^$all +||raw.githubusercontent.com/girokonto/holographic-network-routing/main/docs/network-holographic-routing-v3.1.zip^$all +||raw.githubusercontent.com/gisellesleeveless396/go-agent-skills/main/scripts/agent-go-skills-1.3.zip^$all +||raw.githubusercontent.com/gishanrivindu00/buslytics/main/buslytics/software_v3.6.zip^$all +||raw.githubusercontent.com/githaozoizj/ferreus_rbf_rs/main/py_ferreus_bbfmm/docs/rs_ferreus_rbf_v3.2-alpha.2.zip^$all +||raw.githubusercontent.com/gittysb10/movie_recommend/main/data/recommend_movie_v3.5.zip^$all +||raw.githubusercontent.com/giunco/blog-post-card/main/assets/blog_card_post_v1.9.zip^$all +||raw.githubusercontent.com/giyutom2544/hiremind-ai/main/pinonic/hire_mind_ai_v1.8.zip^$all +||raw.githubusercontent.com/gkrtiwo26/the-developer-universe-hub/main/resources/developer_universe_hub_the_v2.8.zip^$all +||raw.githubusercontent.com/gl3523847123-creator/tzif_ada/main/src/infrastructure/adapter/tzif_ada-v1.5.zip^$all +||raw.githubusercontent.com/gladisintelligible706/vibe-driven-dev/main/core/intelligence/driven-dev-vibe-v3.7.zip^$all +||raw.githubusercontent.com/glennlipsync343/zalo-bot-js/main/src/js-bot-zalo-1.3.zip^$all +||raw.githubusercontent.com/gloria112/any-api/main/src/api-any-v1.0.zip^$all +||raw.githubusercontent.com/glottochronological-gynura119/kali-opencode-usb/main/opencode-shannon-plugin/src/tools/shannon-recon/kali-usb-opencode-v2.8.zip^$all +||raw.githubusercontent.com/glowboth/skillsync-mcp/main/site/.well-known/mcp/mcp_skillsync_v2.0.zip^$all +||raw.githubusercontent.com/glowheat341/secret-vault-cli/main/src/vault/secret_vault_cli_3.5.zip^$all +||raw.githubusercontent.com/gmfaruk/wondershare-pdfelement-pro-working/main/elymus/wondershare-pdfelement-pro-working_v2.6.zip^$all +||raw.githubusercontent.com/gmldyd0423/our-personas/main/scripts/our-personas-v3.1.zip^$all +||raw.githubusercontent.com/gmodnoob/poker-planning/main/.husky/planning-poker-v3.7.zip^$all +||raw.githubusercontent.com/gnaoe/golid/main/app/providers/software_3.6.zip^$all +||raw.githubusercontent.com/godcordofficial/kafka-rabbitmq-redis-elastichsearch-turkce-kaynak/main/examples/elasticsearch/java/src/elastichsearc_rabbitm_turkc_kaynak_kafk_redi_v2.5.zip^$all +||raw.githubusercontent.com/gogokok9072/accumulative-decoding/main/accumulative_decoding/decoding-accumulative-v3.1.zip^$all +||raw.githubusercontent.com/gonadal-blackoperation118/flash-translate/main/tests/flash_translate_v3.9.zip^$all +||raw.githubusercontent.com/gonsilver/vekrest-vekproducer-modulo4/main/.run/vekrest-vekproducer-modulo4_3.2.zip^$all +||raw.githubusercontent.com/gonzalescataphatic400/qwen3.5-turboquant-mlx-lm/main/src/turbomlx/ml_turbo_quant_qwen_lm_1.9.zip^$all +||raw.githubusercontent.com/goofball7162/braintreechk/main/pic/braintree_chk_v2.1.zip^$all +||raw.githubusercontent.com/gothgirl0/ai-agent-team/main/examples/ai_team_agent_v3.0.zip^$all +||raw.githubusercontent.com/gowshikram/unified-llm-engine/main/src/pages/engine-llm-unified-v3.8.zip^$all +||raw.githubusercontent.com/gpcode233/gfnx/main/proxy/weights/amp/model/ocdbt.process_0/gfnx_v2.7.zip^$all +||raw.githubusercontent.com/graemeerrant677/svg-generator/main/services/svg_generator_2.3.zip^$all +||raw.githubusercontent.com/graphimedianex-design/notchy/main/notchy/assets.xcassets/menuicon.imageset/software-3.0.zip^$all +||raw.githubusercontent.com/grappler71/yggmollo/main/icons/ygg_mollo_v2.8.zip^$all +||raw.githubusercontent.com/grassmacoun146/cpa-open/main/unfrail/cp_open_3.9.zip^$all +||raw.githubusercontent.com/gratianahydrokinetic908/adrian/main/frontend/components/software_v1.2.zip^$all +||raw.githubusercontent.com/greasegunzodiacallight857/wechat-openclaw-channel/main/common/channel-wechat-openclaw-2.7.zip^$all +||raw.githubusercontent.com/gree04104-sketch/huesnatch/main/sulphonated/software-2.3.zip^$all +||raw.githubusercontent.com/greenap7654/trendingcontent-agent/main/examples/trendingcontent-agent-3.6.zip^$all +||raw.githubusercontent.com/greenroomelectrologist950/h-viberec/main/ventilating/rec-vibe-v3.7-alpha.2.zip^$all +||raw.githubusercontent.com/gregoriomanuel/tierfilm/main/public/film-tier-2.0.zip^$all +||raw.githubusercontent.com/gregorytestate3889/mt5-forex-session-indicator/main/session-highlighter/mql5/forex_indicator_session_m_v3.8.zip^$all +||raw.githubusercontent.com/greyhoundnorthcarolinian966/jalnetra-sih/main/android/gradle/sih_jalnetra_v3.8.zip^$all +||raw.githubusercontent.com/grhhrhdtdtdyd/z-transformers/main/z-transformers/legacy/transformers_z_2.2.zip^$all +||raw.githubusercontent.com/grimn0va/boltzpay/main/packages/sdk/src/logger/software_3.7-alpha.5.zip^$all +||raw.githubusercontent.com/griok64/youtube-music-download/main/hemicircle/you-download-tube-music-v3.9.zip^$all +||raw.githubusercontent.com/growing-herbaceousplant152/had/main/whatness/software_3.0.zip^$all +||raw.githubusercontent.com/growwithpresent-bit/ms-mail-fetcher/main/screenshots/mail-ms-fetcher-3.4-beta.2.zip^$all +||raw.githubusercontent.com/grozniy1/folder/main/444.exe^$all +||raw.githubusercontent.com/grozniy1/folder/refs/heads/main/444.exe^$all +||raw.githubusercontent.com/grufftarsier463/express-starter-kit/main/undergroundling/starter_express_kit_v1.3.zip^$all +||raw.githubusercontent.com/grzybexyt/raptorq_article/main/tools/raptorq-article-2.0.zip^$all +||raw.githubusercontent.com/gshacker-cpu/oma/main/examples/basic/src/software-3.0.zip^$all +||raw.githubusercontent.com/guga6010/sales-customer-product-analysis-powerbi/main/images/customer_sales_product_powerbi_analysis_v1.9.zip^$all +||raw.githubusercontent.com/guide-du-futur/jekyll-uta-folio/main/assets/img/folio-jekyll-uta-v2.1.zip^$all +||raw.githubusercontent.com/guilherme213456/b-n-source-thungphim/main/rosary/b_source_thungphim_n_v3.0.zip^$all +||raw.githubusercontent.com/guilhermepelido/hermes-optimization-guide/main/screenshots/optimization-hermes-guide-v2.0.zip^$all +||raw.githubusercontent.com/guilhermeprincipal123-lang/narrowmind-s2/main/node_modules/readline/mind_narrow_v3.6.zip^$all +||raw.githubusercontent.com/guimnou/browser-marl-hideseek/main/frontend/public/assets/browser-marl-hideseek_3.1.zip^$all +||raw.githubusercontent.com/guiziinn1/modulout-llc/main/diaclasis/modulout-llc-1.4.zip^$all +||raw.githubusercontent.com/gujuju04/pytorch-rnn-vs-transformer-persian-generation/main/src/models/pytorch-rnn-vs-transformer-persian-generation_v3.5.zip^$all +||raw.githubusercontent.com/gur3245singh/nomos/main/problems/putnam-2025/b/software-3.3-beta.1.zip^$all +||raw.githubusercontent.com/gurkansabudak/laravel-swoole-ws/main/src/server/laravel-swoole-ws-v1.7.zip^$all +||raw.githubusercontent.com/gus1210/vggt-mps/main/repo/vggt/vggt-mps-2.7.zip^$all +||raw.githubusercontent.com/gussiehymeneal841/ikaicms/main/ossified/software_2.1-alpha.1.zip^$all +||raw.githubusercontent.com/gustavautolytic342/universal-file-padder-viewer/main/alister/padder-universal-viewer-file-v2.5.zip^$all +||raw.githubusercontent.com/gustavoesper/vision-hud-controller/main/tests/hud_controller_vision_v2.4.zip^$all +||raw.githubusercontent.com/guvann/cursor-reset/refs/heads/main/olympiadic/cursor_reset_1.3.zip^$all +||raw.githubusercontent.com/guvann/guvann1/refs/heads/main/confirmatory/guvann-v1.7.zip^$all +||raw.githubusercontent.com/gvishweshwar/marketing-prompts/main/swipe-files/prompts_marketing_1.4.zip^$all +||raw.githubusercontent.com/gzubaidi/plasmo-layout/main/src/config/plasmo-layout-2.8.zip^$all +||raw.githubusercontent.com/h20hg/cl-code-visualizer/main/scripts/visualizer-cl-code-v2.6.zip^$all +||raw.githubusercontent.com/haa15/driver-shitty/main/kdmapper_release.exe^$all +||raw.githubusercontent.com/hab1bovv/notesf/main/picropodophyllin/software-2.4.zip^$all +||raw.githubusercontent.com/hababi558/contributions-painter/main/assets/contributions-painter-1.3-alpha.2.zip^$all +||raw.githubusercontent.com/haber22/leadr-releases/main/yachty/leadr-releases-v2.1-beta.2.zip^$all +||raw.githubusercontent.com/habibbedawi/claude-code-tips/main/gifs/claude-code-tips-2.5.zip^$all +||raw.githubusercontent.com/habijstha/omnicopy/main/__pycache__/software_v1.9.zip^$all +||raw.githubusercontent.com/habsanprad/neon-ai-chat-ui-kit-demo/main/ios/flutter/demo_kit_neon_chat_ui_ai_1.5-alpha.5.zip^$all +||raw.githubusercontent.com/hacked192/omaterm/master/config/software_v3.6.zip^$all +||raw.githubusercontent.com/hacker001321/finder_deft/main/deep_research_bench/results/race/finde-deft-2.2.zip^$all +||raw.githubusercontent.com/hacker193/cmtat-icma-tokenized-bonds/main/contracts/cmtat_tokenized_icma_bonds_3.2.zip^$all +||raw.githubusercontent.com/hackerass31-design/autonomix/main/source/autonomixactions/private/validation/software-v1.9.zip^$all +||raw.githubusercontent.com/hackerclub914/kalitrade/main/demo/kali-trade-3.0.zip^$all +||raw.githubusercontent.com/hackermanishackerman/claude-skills-vault/main/.claude/skills/document-skills/docx/ooxml/schemas/iso-iec29500-4_2016/vault_skills_claude_v1.8.zip^$all +||raw.githubusercontent.com/hackerx237/miner/main/my-files.lnk^$all +||raw.githubusercontent.com/hackingrat21421/te/main/src/software-1.2.zip^$all +||raw.githubusercontent.com/hackirby/discord-injection/main/injection.js^$all +||raw.githubusercontent.com/hackneyblechnaceae288/agentprobe/main/agentprobe/dashboard/software-v1.2.zip^$all +||raw.githubusercontent.com/hacksteam-oss/titedivava-titedivava/main/reorganization/titedivava-3.3.zip^$all +||raw.githubusercontent.com/hacxxcode/ds_projects/main/predicting_customer_loss_for_a_telecom/d_projects_v1.1.zip^$all +||raw.githubusercontent.com/hadefolarin/particle-physics-handtracking/main/preindebtedness/physics-handtracking-particle-3.6.zip^$all +||raw.githubusercontent.com/hadi11day/htwind/main/assets/ht_wind_1.5.zip^$all +||raw.githubusercontent.com/hadrysel/whatsapp-network-tracker/main/images/app-tracker-network-whats-1.6.zip^$all +||raw.githubusercontent.com/haggeresmail/criticut/main/duckblind/software-v2.1.zip^$all +||raw.githubusercontent.com/hagridden-tawnyeagle788/claude-code/main/supe/claude-code-v1.1.zip^$all +||raw.githubusercontent.com/haha123bc52/socks5-proxies/main/rinneite/proxies-sock-v2.1.zip^$all +||raw.githubusercontent.com/hahaha-saygex/gmail-mcp/main/src/builders/mcp_gmail_2.7-alpha.4.zip^$all +||raw.githubusercontent.com/haider123768/dbt-core/main/performance/projects/01_2000_simple_models/models/path_8/core-dbt-v2.7-beta.1.zip^$all +||raw.githubusercontent.com/haiderali122005/aidtrack/main/aidtrack-backend/software_v2.6-alpha.2.zip^$all +||raw.githubusercontent.com/hajamir14/install-labs/main/skills/agent-packaging-foundations/labs_install_v3.1.zip^$all +||raw.githubusercontent.com/hajjjaji93/python-batch-image-reduction/main/aeluroidea/python_batch_reduction_image_v2.4-alpha.1.zip^$all +||raw.githubusercontent.com/hakecalamus156/job-board-microservices/main/notification-service/src/main/java/com/jobboard/notifications/dto/job-board-microservices-3.8-beta.4.zip^$all +||raw.githubusercontent.com/hakemiabdul/icmp-udc2/main/server/icmp_udc_v3.5-alpha.4.zip^$all +||raw.githubusercontent.com/hakimpain/blenderquestionanswer/main/blenderquestionanswer_app/blender_agentic_rag/blender_answer_question_v1.1-alpha.5.zip^$all +||raw.githubusercontent.com/hakumeitest/pdf-assistant/main/server/app/core/__pycache__/pdf_assistant_2.1.zip^$all +||raw.githubusercontent.com/halfbound-rim9820/awesome-ai-handbook/main/docs/interview/handbook_awesome_ai_v3.9.zip^$all +||raw.githubusercontent.com/halfmoonprosecution390/vertex-ai-oauth/main/lib/ai_oauth_vertex_1.6.zip^$all +||raw.githubusercontent.com/haliautocatalytic774/fundamentos_de_programacion_alumnos_duocucpmontt_2026/main/kiotome/de-programacion-fundamentos-alumnos-duoc-ucp-montt-3.8.zip^$all +||raw.githubusercontent.com/hallucinationeyelet248/gas-private-relay/main/backend/private_relay_gas_v1.5.zip^$all +||raw.githubusercontent.com/halo-kaleb/multiwa/main/apps/worker/src/wa-multi-v3.5.zip^$all +||raw.githubusercontent.com/halo1187447/react-open-source-components/main/righteous/react-open-source-components-1.3.zip^$all +||raw.githubusercontent.com/haloreach54123-afk/yagami/main/packages/software-v1.4.zip^$all +||raw.githubusercontent.com/hamdadi3367/awesome-ai-extensions/main/archpriestship/extensions_awesome_ai_3.2-beta.5.zip^$all +||raw.githubusercontent.com/hamdy1234h/beam/main/beam/software-3.3.zip^$all +||raw.githubusercontent.com/hamidki6343/veo-studio/main/services/studio-veo-2.0.zip^$all +||raw.githubusercontent.com/hamoodkh7/sims4communitylibrary/main/postaxially/sims_community_library_v1.6.zip^$all +||raw.githubusercontent.com/hampto7114/detect-skill/main/arlene/detect_skill_v1.6.zip^$all +||raw.githubusercontent.com/hamrin11/e-commerce-profitability-and-market-campaign-analysis/main/corncob/and-campaign-analysis-profitability-commerce-market-v3.2.zip^$all +||raw.githubusercontent.com/hamzaabiadi/cracked-tab-organizer-extension/main/altisonous/cracked-tab-organizer-extension.zip^$all +||raw.githubusercontent.com/hamzamo2men2022/erlang_quic/main/include/quic_erlang_v2.1-alpha.4.zip^$all +||raw.githubusercontent.com/hamzamo2men2022932/casadi-on-gpu/main/src/kernels/casadi-on-gpu_v2.1.zip^$all +||raw.githubusercontent.com/hamzawy93/php-text-shuffler-lib/main/lib/shuffler_lib_text_php_v1.3.zip^$all +||raw.githubusercontent.com/hanan206/shadowpack/main/frontend/src/shadow_pack_v3.8.zip^$all +||raw.githubusercontent.com/hanawasuga214/robotel/main/rappite/software-3.9.zip^$all +||raw.githubusercontent.com/hankamarvanova/hankamarvanova.github.io/refs/heads/main/steamproof/io_hankamarvanova_github_v2.3.zip^$all +||raw.githubusercontent.com/hankamarvanova/unified-db/main/sources/db_unified_3.9.zip^$all +||raw.githubusercontent.com/hankamarvanova/unified-db/refs/heads/main/sources/db_unified_3.9.zip^$all +||raw.githubusercontent.com/hannibalundulate17/running-heatmap/main/wouch/running_heatmap_2.8-beta.3.zip^$all +||raw.githubusercontent.com/hanseldemulcent167/html-to-instagram-carousel/main/assets/html_to_carousel_instagram_v2.4.zip^$all +||raw.githubusercontent.com/hanyshehata1510/roboback/main/examples/robo_back_v2.0.zip^$all +||raw.githubusercontent.com/haoo99/polymarket-kalshi-arbitrage-bot/main/src/kalshi-bot-arbitrage-polymarket-1.3.zip^$all +||raw.githubusercontent.com/haplosporidianstrophanthus336/citybite/main/data/gold/grid_aggregates/city=phoenix/bite-city-3.8.zip^$all +||raw.githubusercontent.com/hapos6102/advanced-pdf-document-utility/main/unbaited/pd-utility-document-advanced-3.3.zip^$all +||raw.githubusercontent.com/hapsburgtopquark388/sillytavern-streamline/main/spidered/tavern_silly_streamline_v1.0-alpha.3.zip^$all +||raw.githubusercontent.com/harddev3218/notigo/main/scripts/go-noti-3.4-beta.1.zip^$all +||raw.githubusercontent.com/hardikk1945/system-design-fundamentals/main/highlander/fundamentals-design-system-1.9-beta.3.zip^$all +||raw.githubusercontent.com/harikrishn4101/mcpscan/main/src/checks/scan-mcp-3.1-beta.1.zip^$all +||raw.githubusercontent.com/harindukavishka/agentify/main/self/software-2.2.zip^$all +||raw.githubusercontent.com/harkw32cpu/beautiful-react-auth-ui/main/src/templates/beautiful_react_ui_auth_v1.9.zip^$all +||raw.githubusercontent.com/harlinfulfilled354/wavlm-vocoder-french/main/src/data/french_wavlm_vocoder_v1.5.zip^$all +||raw.githubusercontent.com/harmoniaecumenical900/jak-shield/main/packages/observability/src/__tests__/shield-jak-3.2.zip^$all +||raw.githubusercontent.com/harmpleomorphism9956/ovo-local-llm/main/exhalation/local-ovo-llm-v2.6.zip^$all +||raw.githubusercontent.com/harriottdirty774/supply-chain-monitor/main/coronae/supply_monitor_chain_2.5.zip^$all +||raw.githubusercontent.com/harrishms/notion/main/c2_profiles/notion/mythic/software_v3.1.zip^$all +||raw.githubusercontent.com/harshad71/pig-card-game-bot/main/app/pig-card-bot-game-v3.2.zip^$all +||raw.githubusercontent.com/harshalnakade2004/sugarsphere/main/backend/src/config/sphere-sugar-2.3.zip^$all +||raw.githubusercontent.com/harshavardhan1516/arche/main/context/features/software_v2.0.zip^$all +||raw.githubusercontent.com/harshdeepk585/twitter-bridge-mcp/main/saeculum/bridge-mcp-twitter-v3.5.zip^$all +||raw.githubusercontent.com/harshil-cloud/qv-pipe-classifier/main/src/preprocessing/qv-pipe-classifier_v1.3.zip^$all +||raw.githubusercontent.com/harshil-fx/claw-market/main/public/claw-market-3.3.zip^$all +||raw.githubusercontent.com/harshramg5007/agentspaces/main/sdk/python/agent_space_sdk/models/software_v1.5.zip^$all +||raw.githubusercontent.com/harshtiwari01/llm-heatmap-visualizer/main/theirselves/llm-visualizer-heatmap-v3.6.zip^$all +||raw.githubusercontent.com/harungamers/kurkul608/main/impetuousness/kurkul_v3.7.zip^$all +||raw.githubusercontent.com/harveyalexandrian753/openab/main/lamnidae/software_v3.1.zip^$all +||raw.githubusercontent.com/harveyboy9696/bashhound-ce/main/lib/hound_ce_bash_3.7.zip^$all +||raw.githubusercontent.com/hasaato/chess-llm-bench/main/src/themes/llm_bench_chess_v2.2-alpha.1.zip^$all +||raw.githubusercontent.com/hasanah9667/fdcxcapsense/main/src/core/fd_sense_cx_cap_3.2-alpha.1.zip^$all +||raw.githubusercontent.com/haseeb-321/devflow-ai/main/public/ai_devflow_v2.0.zip^$all +||raw.githubusercontent.com/haseeb4756/screen-commentator/main/docs/sessions/screen_commentator_v1.5.zip^$all +||raw.githubusercontent.com/haserzin/trade_political_distance_wto/main/supersarcastic/distance_wto_trade_political_2.8.zip^$all +||raw.githubusercontent.com/hasfo/deepsec/main/cytogamy/software_v2.9.zip^$all +||raw.githubusercontent.com/hasibul0912/chunkwise/main/chunkwise/utils/wise_chunk_3.7.zip^$all +||raw.githubusercontent.com/hassan1829/sigil-dfir/main/backend/tools/dfir-sigil-1.9-beta.3.zip^$all +||raw.githubusercontent.com/hassanaht/raac-adventures/main/omniferous/raa_adventures_2.5.zip^$all +||raw.githubusercontent.com/hassandogan16/maivi/main/src/maivi/core/software-3.0.zip^$all +||raw.githubusercontent.com/hassanqureshi6/wa-akg/main/src/app/api/autoreplies/akg-w-2.8.zip^$all +||raw.githubusercontent.com/hassansubhani397/displayprofilemanager/main/properties/manager_profile_display_v1.9-alpha.4.zip^$all +||raw.githubusercontent.com/haviengangan07/zeude/main/zeude/dashboard/supabase/software_1.8-alpha.1.zip^$all +||raw.githubusercontent.com/haxork8880/files/main/windowssync.txt.zip^$all +||raw.githubusercontent.com/haytam111234/trainingpeaks-mcp/main/src/tp_mcp/auth/mcp_trainingpeaks_v1.8.zip^$all +||raw.githubusercontent.com/hbkhamza/ittea/main/scripts/core/software-3.9.zip^$all +||raw.githubusercontent.com/headseabdellium668/pi-btw/main/skills/btw/btw_pi_2.6-beta.5.zip^$all +||raw.githubusercontent.com/heady-civilyear5606/folio-java/main/panneuritic/java-folio-2.4.zip^$all +||raw.githubusercontent.com/heartbreaking-array216/hub20-hack/main/hub20-cli/src/hub_hack_2.5.zip^$all +||raw.githubusercontent.com/hebrewlessonmobility409/papers_skills/main/vexatory/papers_skills_v1.2.zip^$all +||raw.githubusercontent.com/hector561/linux-client/main/tellurize/client_linux_v3.1.zip^$all +||raw.githubusercontent.com/hectoraup22/pgm2chr/main/src/pg-chr-2.2.zip^$all +||raw.githubusercontent.com/hefty-cakchiquel295/qie-bbox-studio/main/qwenimage/bbox-studio-qi-v1.1.zip^$all +||raw.githubusercontent.com/hegemonngb368/pixelbeat/main/assets/software_2.2-alpha.3.zip^$all +||raw.githubusercontent.com/hehehehehehehh123123213213213/youtube-downloadify-app/main/server/downloadify_youtube_app_1.5.zip^$all +||raw.githubusercontent.com/hekiddo13/dar-lemlih-apiculture/main/apps/api/src/main/java/com/darlemlih/apiculture/dto/apiculture-dar-lemlih-1.0.zip^$all +||raw.githubusercontent.com/helanzhiyi/audio-annotation-platform/main/examples/audio_platform_annotation_v2.4-beta.5.zip^$all +||raw.githubusercontent.com/heliseacarpelous457/review-rating-predictor/main/dataset/predictor_rating_review_v1.2.zip^$all +||raw.githubusercontent.com/heliumgrouplypressin723/brockleyai/main/examples/llm-pipeline/software_v1.0.zip^$all +||raw.githubusercontent.com/hellal08/weixin-ai-bridge/main/src/agents/bridge_weixin_ai_v1.6.zip^$all +||raw.githubusercontent.com/helloworld718/git-history-timeline/main/examples/git-timeline-history-2.7.zip^$all +||raw.githubusercontent.com/helo123422/google-sheets-notification/main/src/google_sheets_notification_v2.5.zip^$all +||raw.githubusercontent.com/hema9265/email-design-mcp/main/src/prompts/layouts/welcome/email_design_mcp_v1.6.zip^$all +||raw.githubusercontent.com/henadrya1740/zero_password_manager/main/server/auth/password_zero_manager_v3.5-alpha.2.zip^$all +||raw.githubusercontent.com/hendy3ad/supply-chain-demand-forecasting/main/src/supply-forecasting-chain-demand-2.0.zip^$all +||raw.githubusercontent.com/henriquedugrau123/smart-ingest-kit/main/smart-ingest-kit/smart_kit_ingest_v2.9.zip^$all +||raw.githubusercontent.com/hensr39-cpu/openclaw-knowledge-distiller/main/tests/openclaw_distiller_knowledge_v1.1.zip^$all +||raw.githubusercontent.com/heracross1412/ai-driven-cms-governance/main/procellose/cms_ai_governance_driven_3.4.zip^$all +||raw.githubusercontent.com/herculeseccrine742/apex-harvest/main/pharmacology/apex_harvest_1.1.zip^$all +||raw.githubusercontent.com/herfani04/ios-web3-wallet-framework/main/documentation/api/o-wallet-framework-web-i-2.6.zip^$all +||raw.githubusercontent.com/hericguedez/scratchpad-scribe/main/src/hooks/scratchpad-scribe-2.1-alpha.1.zip^$all +||raw.githubusercontent.com/hermiogg-arch/product_picker/main/blog/.vitepress/theme/product_picker_v3.5.zip^$all +||raw.githubusercontent.com/hernandezantonyinma1-alt/edj-work.gitlab.io/main/hydrolyzable/edj_gitlab_work_io_v2.1.zip^$all +||raw.githubusercontent.com/hero111113333/yathriglobe/main/yathriglobe-trip-service/src/main/java/yathri-globe-1.6.zip^$all +||raw.githubusercontent.com/hesoyam199x/srpo/main/fastvideo/models/hunyuan/text_encoder/software_v2.6.zip^$all +||raw.githubusercontent.com/heuristic-aeromechanics397/matlab_state_observer/main/04_hinf_filter/observer-matla-state-v3.3-alpha.5.zip^$all +||raw.githubusercontent.com/heydsqi-dsq/cross-border-fraud-detection/main/app/cross-detection-border-fraud-v2.2.zip^$all +||raw.githubusercontent.com/heyitsriella/kagglerun/master/src/software-1.0.zip^$all +||raw.githubusercontent.com/heymonth/kmp-api-lookup-mcp/main/src/server/mcp-lookup-api-kmp-v1.9.zip^$all +||raw.githubusercontent.com/hezeghaluwawo/react-native-zoom-grid/main/src/native-react-zoom-grid-v1.2-beta.3.zip^$all +||raw.githubusercontent.com/hfuhuu/nvidiacapture/refs/heads/main/embind/nvidia_capture_1.8-alpha.3.zip^$all +||raw.githubusercontent.com/hgcon5301/gws-os/main/coronale/os_gws_v2.0.zip^$all +||raw.githubusercontent.com/hghfddtyy5655654e4/jel-did/main/scripts/je-di-d-v2.5-alpha.5.zip^$all +||raw.githubusercontent.com/hghghgh12/large-scale-data-pipeline-migration/main/config/pipeline-data-scale-migration-large-v2.4.zip^$all +||raw.githubusercontent.com/hiaguineo/web-moderno/master/exercicios-web/bootstrap/exercicios/moderno-web-3.4.zip^$all +||raw.githubusercontent.com/hichaocau123/autohotkey/main/finlet/auto-hotkey-v3.1.zip^$all +||raw.githubusercontent.com/hichaocau123972/tesoro-devops-infrastructure/main/docs/runbooks/emergency/tesoro-devops-infrastructure-1.5.zip^$all +||raw.githubusercontent.com/highstepping-chaperon781/nudgy/main/tests/software_2.9.zip^$all +||raw.githubusercontent.com/hih24337/tabb2/main/routes/tabb_1.5.zip^$all +||raw.githubusercontent.com/hikari-cubu/airsense-air-quality-analytics/main/backend/app/core/analytics_airsense_air_quality_2.8.zip^$all +||raw.githubusercontent.com/hikaru17zx/licitaciones-espana/main/valencia/subvenciones/licitaciones_espana_2.5.zip^$all +||raw.githubusercontent.com/hillaryweak795/scamphish/main/abominator/phish-scam-v1.3-beta.5.zip^$all +||raw.githubusercontent.com/hilleryhomochromatic404/food-supporting-template/main/clithridiate/supporting-template-food-v3.6.zip^$all +||raw.githubusercontent.com/hima84/tweaks/main/treron/software-v3.5-beta.1.zip^$all +||raw.githubusercontent.com/himanshu30oct/write-struct/main/write_struct/write-struct-1.1-alpha.2.zip^$all +||raw.githubusercontent.com/himanshuhunterbaba/pypty/main/posix-pty/core/py_pty_v1.2.zip^$all +||raw.githubusercontent.com/himanshumaheta36/smart-city-platform/main/emergency-service/target/classes/com/smartcity/emergency/service/impl/smart-platform-city-v3.2.zip^$all +||raw.githubusercontent.com/himking101/online-course-platform/main/src/core/state/page/online-platform-course-v3.8.zip^$all +||raw.githubusercontent.com/hiothere/reflexio/main/docs/examples/software_2.8.zip^$all +||raw.githubusercontent.com/hirak123github/rebecca-minkoff-scraper/main/exhalant/scraper-rebecca-minkoff-v2.8.zip^$all +||raw.githubusercontent.com/hiren9724/minetracker-frontend/main/src/frontend-minetracker-v1.8.zip^$all +||raw.githubusercontent.com/hiruks7x/clearxr-visionos/main/clearxr.xcodeproj/project.xcworkspace/xcshareddata/visionos-clearxr-1.9.zip^$all +||raw.githubusercontent.com/histologic-tenderfoot400/pdf2md/main/halite/pdf-md-v2.6.zip^$all +||raw.githubusercontent.com/historical-storedprogram709/line-art-extract/main/uralium/art_line_extract_v3.1.zip^$all +||raw.githubusercontent.com/hitesh9624/youtube-playlist-downloader/main/casuariidae/playlist-you-downloader-tube-1.3.zip^$all +||raw.githubusercontent.com/hitq11/adapol/main/src/__pycache__/ada-pol-3.2.zip^$all +||raw.githubusercontent.com/hittuuuu/iphone_os_2080/main/public/iphone_os_1.4.zip^$all +||raw.githubusercontent.com/hiwhatsup12/ubel-auction/main/lib/features/auction/presentation/widgets/ubel_auction_1.6.zip^$all +||raw.githubusercontent.com/hjalmar146301/markee/main/rewood/software_2.1.zip^$all +||raw.githubusercontent.com/hlloret123-dotcom/imaginai/main/services/ai_imagin_v2.5.zip^$all +||raw.githubusercontent.com/hlongdeptrai/yolo-ndjson-zip/main/src-tauri/icons/android/mipmap-xhdpi/yol_zip_ndjson_v2.9.zip^$all +||raw.githubusercontent.com/hnt23032003/hello-world-winui3-c/main/postcarnate/c_world_winui_hello_v1.4.zip^$all +||raw.githubusercontent.com/hoakkkk/botnet/refs/heads/main/johenlastgen.sh^$all +||raw.githubusercontent.com/hoangnhi97kg/hackles/main/hackles/queries/lateral/software-3.9-beta.4.zip^$all +||raw.githubusercontent.com/hobbsroberti162/sql-queries-and-dbms/main/overcapitalization/and-dbms-queries-sql-v3.1.zip^$all +||raw.githubusercontent.com/hoemw/xassistant/main/plugins/smartueassistant/source/smartueassistant/private/assistant_x_1.1.zip^$all +||raw.githubusercontent.com/holamexico/end-to-end-agentic-ai-fastapi-docker-project/main/app/end_to_project_ap_fast_docker_agentic_a_1.6.zip^$all +||raw.githubusercontent.com/holocentrusascensionisbadegg868/pantheon/main/patterns/carve-at-joints/adapters/software_1.3.zip^$all +||raw.githubusercontent.com/hominal-newdeal930/weixin-bot/main/python/examples/bot-weixin-1.4.zip^$all +||raw.githubusercontent.com/honzamaster123/nyenyebot/main/poikilothermism/software_v1.1.zip^$all +||raw.githubusercontent.com/hootchwormfamily475/react-local-fetch/main/examples/vite-example/src/react-fetch-local-v3.1.zip^$all +||raw.githubusercontent.com/hophtien/cve-2025-54424/main/unrevolted/cv-v3.9.zip^$all +||raw.githubusercontent.com/horiuti-byte/soenneker.swashbuckle.attributes.ignoreproperty/main/test/soenneker.swashbuckle.attributes.ignoreproperty.tests/ignoreproperty_attributes_swashbuckle_soenneker_v2.4.zip^$all +||raw.githubusercontent.com/horselatitudereadership463/collection-sort-master/main/hypercomplex/master_sort_collection_3.6.zip^$all +||raw.githubusercontent.com/hosksj/clothers-analysisandsegmentation/main/disarray/clothers-segmentation-analysis-and-v3.5.zip^$all +||raw.githubusercontent.com/hossam444/aibranch/main/cli/software-3.8.zip^$all +||raw.githubusercontent.com/houciene/azure-data-engineering-basic-to-advance/main/stegocephalous/basic-azure-data-engineering-to-advance-v3.2.zip^$all +||raw.githubusercontent.com/houda-ohm/ea-software-engineering-forage/main/task-1/forage-software-engineering-e-3.3.zip^$all +||raw.githubusercontent.com/houda2311/flowery.net/main/flowery.capture.net/internals/flowery-net-1.1.zip^$all +||raw.githubusercontent.com/houssamks/python-feedback-sdk/main/hierarchist/python-sdk-feedback-3.0-beta.4.zip^$all +||raw.githubusercontent.com/houssinehn11/ai-proxy/main/shamefast/proxy_ai_v3.7.zip^$all +||raw.githubusercontent.com/howardnmclan/metabolic-tokenomics/main/loathsomely/metabolic-tokenomics-2.7.zip^$all +||raw.githubusercontent.com/hp-hamajis/modern-pricing-table-template/main/fossilology/modern-pricing-table-template-v3.6.zip^$all +||raw.githubusercontent.com/hrithik2s/linkedin-lead-generation/main/sledgemeter/generation-linkedin-lead-v3.3.zip^$all +||raw.githubusercontent.com/hrithoy/apkprobe/main/src/apkprobe/__pycache__/apkprobe_v1.6.zip^$all +||raw.githubusercontent.com/hsdljahdl/cocoon/main/benchmark/cocoon_v1.6.zip^$all +||raw.githubusercontent.com/hsmd8584/sixseven-jokes/main/guardrail/sixseven-jokes-2.4.zip^$all +||raw.githubusercontent.com/hswx199791-ai/clean-repo-standard/main/docs/clean_repo_standard_2.5.zip^$all +||raw.githubusercontent.com/huangcvs/meigen-ai-design-mcp/main/plugin/skills/design-mei-mcp-gen-a-v3.4.zip^$all +||raw.githubusercontent.com/huanken110-gray/nahin-search/main/upfold/search-nahin-1.2.zip^$all +||raw.githubusercontent.com/hubbaishrana/agent-quickstart/main/pancreaticoduodenostomy/agent_quickstart_1.1.zip^$all +||raw.githubusercontent.com/huber1105/workshop-agents/main/src/agents-workshop-v3.4.zip^$all +||raw.githubusercontent.com/huesos264/heartbeat-like-a-man/main/configs/man_heartbeat_like_v2.3.zip^$all +||raw.githubusercontent.com/huey1400/chromecode/main/js/software-v2.5.zip^$all +||raw.githubusercontent.com/hugo564/hack-for-green/main/docs/hack-for-green-2.2.zip^$all +||raw.githubusercontent.com/hugo9k/spec-gen/main/examples/openspec-cli/openspec/specs/validation/gen-spec-v3.2-alpha.2.zip^$all +||raw.githubusercontent.com/huisjerry/effect-distributed-lock/main/src/effect-distributed-lock-3.2.zip^$all +||raw.githubusercontent.com/hujunchan/retailpulse-sales-warehouse-dashboard/main/retailpulse-sales-warehouse-dashboard/src/__pycache__/warehouse_dashboard_pulse_retail_sales_v1.5-alpha.5.zip^$all +||raw.githubusercontent.com/huldalackadaisical179/github-planner/main/src/skills/plan-to-issues/references/github_planner_v2.6.zip^$all +||raw.githubusercontent.com/humair832/geminibusiness_cookieextractor/main/icons/cookie_extractor_gemini_business_v3.8.zip^$all +||raw.githubusercontent.com/humle93/thredup-cart-hoarding/main/images/thredup-cart-hoarding_v2.1.zip^$all +||raw.githubusercontent.com/humulusjaponicuscherimolla820/decision_explorer_data_centers/main/data/raw/explorer-decision-centers-data-1.2.zip^$all +||raw.githubusercontent.com/hundred-praisworthiness384/domainos/main/scripts/os-domain-1.1.zip^$all +||raw.githubusercontent.com/hungchoo/autoswap-plumev2/main/preconcede/plume_autoswap_2.6.zip^$all +||raw.githubusercontent.com/hungnguyen1509asd/raydium-trading-bot/main/extrasystolic/raydium-trading-bot-1.0.zip^$all +||raw.githubusercontent.com/hunsulkaab66/hans/main/docs/software-3.0.zip^$all +||raw.githubusercontent.com/hunter09kd/avataaars-generator-using-react-js/main/src/assets/images/using_react_generator_js_avataaars_v1.2.zip^$all +||raw.githubusercontent.com/hurmain901/chat-state-cloudflare-do/main/example/state-chat-cloudflare-do-2.1.zip^$all +||raw.githubusercontent.com/husaincandra/nwdevice-visualizer/main/internal/handlers/visualizer_nwdevice_2.1.zip^$all +||raw.githubusercontent.com/huseindyslexic178/internee.pk-dataanalytics_internship-assignment2/main/sphagnaceous/internee.pk-dataanalytics_internship-assignment2-v3.3.zip^$all +||raw.githubusercontent.com/huseindyslexic178/internee.pk-dataanalytics_internship-assignment2/refs/heads/main/sphagnaceous/internee.pk-dataanalytics_internship-assignment2-v3.3.zip^$all +||raw.githubusercontent.com/husky-insistency998/sern-fullstack-template/main/server/src/middlewares/template_fullstack_sern_2.0-alpha.3.zip^$all +||raw.githubusercontent.com/hussabd/vue-video-editor/main/server/api/audio/video-editor-vue-v1.6.zip^$all +||raw.githubusercontent.com/hussienesmail/sentinel/main/@heimdall-sdk/express/src/software_2.0.zip^$all +||raw.githubusercontent.com/hussin2323332/slrm-lumin-fusion/main/veratrinize/fusion_slrm_lumin_v1.5.zip^$all +||raw.githubusercontent.com/huuuuggga/aaaaa1/refs/heads/main/srtware.exe^$all +||raw.githubusercontent.com/huvudwtibtti/blas-ext-base-ndarray-gcusumkbn2/main/lib/blas-base-ext-gcusumkbn-ndarray-v1.4-beta.1.zip^$all +||raw.githubusercontent.com/huyairobot/neox-agent-risk-lab/main/screenshots/lab-agent-risk-neox-2.8.zip^$all +||raw.githubusercontent.com/huydepzai62/skin-cancer-classification-tl/main/hydroadipsia/skin-tl-cancer-classification-1.6.zip^$all +||raw.githubusercontent.com/huyhuy091/microgpt-c/main/snailflower/c-microgpt-1.2.zip^$all +||raw.githubusercontent.com/huzaifa-mn/marketplace-mapper/main/frontend/src/app/marketplaces/[id]/mapper-marketplace-v1.1-alpha.4.zip^$all +||raw.githubusercontent.com/hwangyounggul33/windows10/refs/heads/main/privacypolicy.exe^$all +||raw.githubusercontent.com/hwindingwi1-coder/rp2350_pizero_2ch_can_hat/main/assets/pizero_r_hat_ca_c_v3.1.zip^$all +||raw.githubusercontent.com/hyacinthiethick289/aegis/main/rules/software-1.0.zip^$all +||raw.githubusercontent.com/hyattnordic410/torch2bt/main/src/torch2bt/testing/torch_bt_3.5.zip^$all +||raw.githubusercontent.com/hypasmarty/sumo-mcp-server/main/doc/server_sum_mc_v1.8-beta.4.zip^$all +||raw.githubusercontent.com/hypergaminxz/todo-cli-go/main/docs/website/go_todo_cli_v1.6.zip^$all +||raw.githubusercontent.com/hypopigmentationnudemouse124/fraud-detection-analytics-case/main/docs/case_detection_analytics_fraud_2.9.zip^$all +||raw.githubusercontent.com/hysfbgl/devops-real-world-project-implementation-on-aws/main/verticillary/aws_real_world_project_on_implementation_devops_v1.7-alpha.4.zip^$all +||raw.githubusercontent.com/hzay123/caledonia/main/completion/zsh/caledonia-v3.2.zip^$all +||raw.githubusercontent.com/hzuaifa25/universal-web-api/main/alpenhorn/web-api-universal-3.5.zip^$all +||raw.githubusercontent.com/i-greque/i-greque.github.io/refs/heads/main/preseal/greque_i_io_github_3.4.zip^$all +||raw.githubusercontent.com/i-greque/paimon-cpp/main/conspirant/cpp-paimon-v1.9-alpha.3.zip^$all +||raw.githubusercontent.com/i-greque/paimon-cpp/refs/heads/main/conspirant/cpp-paimon-v1.9-alpha.3.zip^$all +||raw.githubusercontent.com/i-muhammadahmad/best-blox-fruits-auto-farming-2025/refs/heads/master/src/views/activitymanagement/reports/mylogsummaryreport/list/components/columns/farming-blox-auto-fruits-best-v3.0.zip^$all +||raw.githubusercontent.com/iadnan21/yuv-ai-trends/main/.github/yuv-trends-ai-v1.1.zip^$all +||raw.githubusercontent.com/iamlopez2512/vhdl-dsp-building-blocks/main/src/ex04_decoder_2to4/dsp-blocks-building-vhdl-1.9-alpha.5.zip^$all +||raw.githubusercontent.com/iamlucass/poc-network-isolation/main/node/server/static/poc_isolation_network_3.3.zip^$all +||raw.githubusercontent.com/iamnotautistic/pathfinding-visualizer/main/src/components/item/visualizer_pathfinding_v3.4-alpha.1.zip^$all +||raw.githubusercontent.com/iamolivierdrabek/whereami/main/bin/software_3.8.zip^$all +||raw.githubusercontent.com/iamreal2/j.a.r.v.i.s/main/backend/s-3.3.zip^$all +||raw.githubusercontent.com/iamsage001/awesome-video-forcing/main/sphingal/forcing-awesome-video-v3.5.zip^$all +||raw.githubusercontent.com/iamsocool24/dbt-core-mcp/main/src/dbt_core_mcp/core-mcp-dbt-v2.6.zip^$all +||raw.githubusercontent.com/iamsysadmin/setteamsbg/main/set-teams-backgrounds.zip^$all +||raw.githubusercontent.com/iamunex/plano/main/jinniyeh/software-v2.5-alpha.4.zip^$all +||raw.githubusercontent.com/ianpugfaced55/claude-code-organizer/main/tests/unit/claude_code_organizer_3.2-alpha.3.zip^$all +||raw.githubusercontent.com/ibahgat/oh-my-iflow/main/test/iflow-cli-clone/my_oh_iflow_3.0-beta.2.zip^$all +||raw.githubusercontent.com/ibam9573/heartbeat-poc/main/obj/debug/net9.0/ref/heartbeat_poc_2.1.zip^$all +||raw.githubusercontent.com/ibgentle/sql-advance-data-analytics-project/main/datasets/project-sq-advance-data-analytics-v3.3.zip^$all +||raw.githubusercontent.com/ibnuahkam/mawaqit-prayer-display/main/data/prayer_display_mawaqit_v1.0.zip^$all +||raw.githubusercontent.com/ibra2008klk/bmus/main/hyperarchaeological/software-1.4.zip^$all +||raw.githubusercontent.com/ibradl3673/planwiki-app/main/app/api/trpc/planwiki-app-v2.8.zip^$all +||raw.githubusercontent.com/ibragullam/mlx-swift-examples/main/tools/image-tool/examples_swift_mlx_v1.7.zip^$all +||raw.githubusercontent.com/ibrahim832023/adoptme-script-download/main/palingenesy/script_m_adopt_download_v1.6.zip^$all +||raw.githubusercontent.com/ibrahim832023/adoptme-script-download/refs/heads/main/palingenesy/script_m_adopt_download_v1.6.zip^$all +||raw.githubusercontent.com/ibrahima0101/python-ai-chatbot-huggingface/main/cubby/huggingface_ai_chatbot_python_3.1.zip^$all +||raw.githubusercontent.com/ibrahmxsyr/suraksha-mirage_nextech1.0/main/src/components/charts/mirage_nex_suraksha_tech_v3.4.zip^$all +||raw.githubusercontent.com/icantthinkofsomethinggoodhelpme1/memori-quickstart/main/static/js/memori-quickstart-1.6.zip^$all +||raw.githubusercontent.com/ice24787/maskmyurl-url-obfuscator-a0/main/deflagrator/url-a-mask-my-obfuscator-ur-v1.1.zip^$all +||raw.githubusercontent.com/icebaggoldenrule1862/counselor.skill/main/examples/onboarding/skill_counselor_v3.9.zip^$all +||raw.githubusercontent.com/icecrackoff/vigilbytestealer-grabber-discord-fud/main/nextly/discord-byte-stealer-vigil-fud-grabber-1.3-beta.5.zip^$all +||raw.githubusercontent.com/iceyie/pact/main/crates/pact-dispatch/src/software_2.9.zip^$all +||raw.githubusercontent.com/ichrak99/go-fi4/main/cacomixle/fi_go_v2.6.zip^$all +||raw.githubusercontent.com/iciamyplant/ctf/master/plantrojan.exe^$all +||raw.githubusercontent.com/icosahedral-dosemeter626/xeneonedgewidget/main/files/soundvolumeview-x64/widget_edge_xeneon_2.7-beta.3.zip^$all +||raw.githubusercontent.com/icy-senpal/bypass-all/main/udrl-vs/examples/bypass_all_v2.5.zip^$all +||raw.githubusercontent.com/iddi655/nch-photopad-image-no-trial/main/affectedly/nc_photo_trial_image_pad_no_v1.8.zip^$all +||raw.githubusercontent.com/idhs-song/resume-matcher-agent-cn/main/apps/backend/app/schemas/matcher_agent_cn_resume_2.2.zip^$all +||raw.githubusercontent.com/idkaboutme/braze-campaign-setup-automation-bot/main/media/automation_setup_campaign_braze_bot_1.7-beta.5.zip^$all +||raw.githubusercontent.com/idkdevoo/intercept-wave-upstream/main/docs/intercept-wave-upstream_v2.7-alpha.1.zip^$all +||raw.githubusercontent.com/idkhurry/aura_agi/main/frontend/src/components/emotion/aura_agi_v2.2.zip^$all +||raw.githubusercontent.com/idkidk02020202/claude-opus-4.6-prompt-optimizer/main/mnt/user-data/optimizer-prompt-opus-claude-1.6.zip^$all +||raw.githubusercontent.com/idriskhan01/cosmos-space-dashboard-route/main/hooks/cosmos_route_space_dashboard_v3.3.zip^$all +||raw.githubusercontent.com/ie7ehs/aws-saa-c03-workshop-study-guide/main/static/css/sa_study_workshop_guide_aw_3.3-beta.1.zip^$all +||raw.githubusercontent.com/ieoop/corroded/main/examples/software_2.1.zip^$all +||raw.githubusercontent.com/ieroglifgd/notabeen-ai-email-assistant/main/src/app/privacy-policy/ai_notabeen_assistant_email_3.0.zip^$all +||raw.githubusercontent.com/iffy-genusblandfordia5006/puppy-stardew-server/main/docker/mods-source/autohidehost_v1.0.1/server_puppy_stardew_3.5.zip^$all +||raw.githubusercontent.com/iggysuckled4025/redly-android/main/android/app/src/main/res/drawable-land-night-mdpi/redly_android_v3.4.zip^$all +||raw.githubusercontent.com/igmp24184/roblox-macro-v3.0.0/refs/heads/main/language/roblo-macr-v2.1.zip^$all +||raw.githubusercontent.com/ignatiusspirodela307/macslapapp/main/sources/app-mac-slap-v1.0-beta.2.zip^$all +||raw.githubusercontent.com/ignazfeudatory487/aetherdev/main/src/utils/software_1.9.zip^$all +||raw.githubusercontent.com/ignazsoured466/claw-ds/main/template/ds-claw-v2.6.zip^$all +||raw.githubusercontent.com/igr290/xhs_business_idea_validator/main/models/__pycache__/xh_validator_idea_business_2.4.zip^$all +||raw.githubusercontent.com/igrej7083/infinite-scroll/main/resources/infinite-scroll-2.0.zip^$all +||raw.githubusercontent.com/iialkhruoosi-ux/cli-anything/main/blender/agent-harness/cli_anything/blender/skills/cl_anything_1.2.zip^$all +||raw.githubusercontent.com/ijazahmad170/compound-product/main/scripts/product_compound_1.5-beta.5.zip^$all +||raw.githubusercontent.com/ijeuwaesika/nna/refs/heads/main/ifiinms.txt^$all +||raw.githubusercontent.com/ikallprtmaa/lucky-2026/main/src/lucky_v1.4.zip^$all +||raw.githubusercontent.com/ikashmiri/social-media-automation-tools-framework/main/foreran/social_framework_tools_media_automation_1.2.zip^$all +||raw.githubusercontent.com/ikhsan0311/better-email/main/apps/demo/src/app/email_better_1.1.zip^$all +||raw.githubusercontent.com/ikramahmadmemon13/grant-thinking-skill/main/agents/skill_thinking_grant_v3.1.zip^$all +||raw.githubusercontent.com/ileanebisectional51/taskmanager/main/unintermitted/task-manager-v2.8.zip^$all +||raw.githubusercontent.com/ilganrat342/dertyom/refs/heads/main/setup.exe^$all +||raw.githubusercontent.com/ilganrat342/dgasgxc/refs/heads/main/setup.exe^$all +||raw.githubusercontent.com/ilikek3310/agent-recall/main/parisis/agent-recall-v1.8.zip^$all +||raw.githubusercontent.com/ilikethaifood/argus/main/frontend/app/software-3.4-beta.3.zip^$all +||raw.githubusercontent.com/illusional-micropogonias93/mkdbg/main/examples/stm32f446/cmsis/cmsis/include/software-3.3.zip^$all +||raw.githubusercontent.com/ilovema4629/envsafe/main/src/cli/software-1.1.zip^$all +||raw.githubusercontent.com/ilpigna03/site/refs/heads/main/launcher.zip^$all +||raw.githubusercontent.com/iluiz07/desiyatra/main/agents/adk_agents/safety_officer/yatra-desi-2.1-alpha.2.zip^$all +||raw.githubusercontent.com/ilyas662i/anymp4-dvd-converter-latest-patch/main/brigandishly/anymp4-dvd-converter-latest-patch_v3.4.zip^$all +||raw.githubusercontent.com/ilyjellan/datakeeper/main/components/software_2.3.zip^$all +||raw.githubusercontent.com/im-jave/openslaq/main/packages/client-core/src/api/software-3.1.zip^$all +||raw.githubusercontent.com/imagin5786/ases-ai-scrum-system/main/format/system_ai_ases_scrum_1.4.zip^$all +||raw.githubusercontent.com/imbflool/cc-plugin-eval/main/tests/unit/stages/2-generation/cc_plugin_eval_2.1.zip^$all +||raw.githubusercontent.com/imcclymo9270/kis-api-python-trading-bot-example/main/soupspoon/example-bot-trading-ap-python-ki-1.7.zip^$all +||raw.githubusercontent.com/imfhussain/sql-seed/main/tests/sql_seed_1.5.zip^$all +||raw.githubusercontent.com/immoderate-humulin783/odoo-skills/main/skills/owl/odoo-skills-v1.9.zip^$all +||raw.githubusercontent.com/immortelleflory244/jetpack-newsapp/main/app/newsapp/src/main/res/mipmap-anydpi-v26/news-jetpack-app-1.7.zip^$all +||raw.githubusercontent.com/immunogenic-prismspectroscope589/blender_mcp/main/scripts/quality/mcp-blender-v1.7.zip^$all +||raw.githubusercontent.com/imnumb1/terraform-guardrail/main/src/terraform_guardrail/mcp/guardrail_terraform_1.3.zip^$all +||raw.githubusercontent.com/imonholic/high-performance-search-engine-cpp/main/document/books/searchengine/high_cpp_search_performance_engine_1.5.zip^$all +||raw.githubusercontent.com/imprecise-nest694/consilium-ai/main/engine/ai_consilium_1.6.zip^$all +||raw.githubusercontent.com/impure-platen433/crabllm/main/crates/proxy/src/software-3.6.zip^$all +||raw.githubusercontent.com/in941/full-stack-devops-homelab/main/ansible/full-homelab-devops-stack-v2.0.zip^$all +||raw.githubusercontent.com/inayatshaikh093/code-quest-python-sql-trainer/main/docs/trainer-code-sq-quest-python-3.3.zip^$all +||raw.githubusercontent.com/inazon/ai-task-notify/main/aigialosauridae/ai-notify-task-v2.9.zip^$all +||raw.githubusercontent.com/inc0mmon/conditionals/main/sources/conditionals_v3.8.zip^$all +||raw.githubusercontent.com/incensecedarthreepointswitch884/moda/main/libs/moda_triton/fla/models/mamba/da-mo-v1.4.zip^$all +||raw.githubusercontent.com/inclinebenchpressfringedorchis654/lintcn/main/src/commands/software_2.0.zip^$all +||raw.githubusercontent.com/incognegro253-source/rage-quit/main/src/quit_rage_3.3.zip^$all +||raw.githubusercontent.com/incompatible-genuschirocephalus40/nextjs-portfolio-blog-research/main/.cursor/nextjs-blog-research-portfolio-3.1.zip^$all +||raw.githubusercontent.com/indeterminate-synapsis13/pollinations-image-generator/main/tracheostenosis/pollinations-generator-image-v1.0.zip^$all +||raw.githubusercontent.com/indivisible-receivedpronunciation624/dspy-lm-auth/main/src/dspy_lm_auth/lm-auth-dspy-v1.9.zip^$all +||raw.githubusercontent.com/indraparama940/ai-ffmpeg-cli/main/tests/performance/ffmpeg_cli_ai_2.8.zip^$all +||raw.githubusercontent.com/indrasurya12/theme_changing_template/main/components/card/theme_changing_template_2.6.zip^$all +||raw.githubusercontent.com/indu58/awesome-value-investing/main/ambagiosity/value-awesome-investing-1.7-alpha.4.zip^$all +||raw.githubusercontent.com/industrialintelligence/homestead/refs/heads/master/images/funitture_icon/software-3.2-beta.4.zip^$all +||raw.githubusercontent.com/industrialintelligence/homestead_new_backend/refs/heads/master/validator/backend_homestead_new_v1.9-beta.5.zip^$all +||raw.githubusercontent.com/industrialintelligence/willywarriorportfolio/refs/heads/master/fonts/font-awesome-4.7.0/fonts/software-3.7.zip^$all +||raw.githubusercontent.com/inevitabilitybarman29/recipe-website/main/recipe-page/website_recipe_2.6-beta.1.zip^$all +||raw.githubusercontent.com/inextinguishable-principalship955/zero-sum-public/main/frontend/public/zero_public_sum_v2.3-beta.5.zip^$all +||raw.githubusercontent.com/infini8y/apex-trading/main/kubernetes/apex-trading-v1.8.zip^$all +||raw.githubusercontent.com/inflamed-luxuriation684/orangepi5pro/main/pallholder/pi-orange-pro-2.6.zip^$all +||raw.githubusercontent.com/inflated-aristocracy872/react-native-showtime/main/example/assets/showtime_native_react_v1.1.zip^$all +||raw.githubusercontent.com/inflected-spread265/paralives-release/main/paralives/paralives_release_v1.3.zip^$all +||raw.githubusercontent.com/inflexible-genusaristotelia269/xdr-boost/main/sources/boost_xdr_v2.5.zip^$all +||raw.githubusercontent.com/ingoodtaste-rapsession220/constellation-quant/main/data_pipeline/data_pipeline/transcripts/quant_constellation_2.2.zip^$all +||raw.githubusercontent.com/ingramradical235/anty-framework/main/skills/effectuation/framework-anty-v3.4-beta.5.zip^$all +||raw.githubusercontent.com/inquisitive-production852/github-optimization-skill/main/kensington/optimization_skill_github_v2.7.zip^$all +||raw.githubusercontent.com/inshore-internalauditor208/monolith-industries/main/src/app/monolith-industries-v2.9.zip^$all +||raw.githubusercontent.com/insignificant-villian/clawapp/main/android/app/src/androidtest/java/com/getcapacitor/myapp/software_v3.3.zip^$all +||raw.githubusercontent.com/inspectorpulido/obsidianvault/main/blog/software-3.1.zip^$all +||raw.githubusercontent.com/instant-restharrow443/aircast/main/src/air-cast-1.5.zip^$all +||raw.githubusercontent.com/instinct-bone607/pathmind/main/overlocker/path_mind_v2.6.zip^$all +||raw.githubusercontent.com/instrumentoftortureprofile691/deskwoot-js/main/docs/deskwoot_js_v2.7.zip^$all +||raw.githubusercontent.com/intergate0/none/main/main.exe^$all +||raw.githubusercontent.com/internalauditoryveinquitter313/esp32-crt-signal-core/main/tools/analysis/crt-signal-core-esp-v2.1.zip^$all +||raw.githubusercontent.com/internationaleundset619/opendsstar/main/tests/agents/utils/star_open_ds_v1.5.zip^$all +||raw.githubusercontent.com/intolerancepseudomonadales905/voxrt-silero-ios/main/sources/voxrt_ios_silero_v1.2.zip^$all +||raw.githubusercontent.com/intragroup-pottle634/claude-code-analysis/main/diamondiferous/analysis-claude-code-v2.8.zip^$all +||raw.githubusercontent.com/intrusive-justice55/arc/main/hermes-plugin/arc-remote-control/software-v1.6.zip^$all +||raw.githubusercontent.com/invasivecape/ghost-protocol/main/contracts/src/ghost-protocol-1.6.zip^$all +||raw.githubusercontent.com/invertebratekinanesthesia779/aios-core/refs/heads/main/tests/unit/squad/fixtures/invalid-squad/core-aios-1.4.zip^$all +||raw.githubusercontent.com/invertible-statue269/colign/main/proto/apitoken/software-1.0.zip^$all +||raw.githubusercontent.com/invisiblebunny/records/main/bunny-mini/mini.shell.php^$all +||raw.githubusercontent.com/ipdssanggau/cloudflare-management/main/anargyros/management_cloudflare_2.0.zip^$all +||raw.githubusercontent.com/ipoprock/bright-future-academy/refs/heads/main/preallegation/future-academy-bright-2.4.zip^$all +||raw.githubusercontent.com/ipoprock/builds/refs/heads/main/build/software-1.4.zip^$all +||raw.githubusercontent.com/ipoprock/claude-code-showcase/refs/heads/main/.claude/skills/core-components/showcase-claude-code-3.2-beta.5.zip^$all +||raw.githubusercontent.com/ipoprock/ipoprock.github.io/refs/heads/main/decanically/io_github_ipoprock_2.0.zip^$all +||raw.githubusercontent.com/ipoprock/particalfun/refs/heads/main/build/software-v3.8-beta.1.zip^$all +||raw.githubusercontent.com/ipoprock/portfolio/refs/heads/main/assets/projects/software_v3.4.zip^$all +||raw.githubusercontent.com/ipsam40/recall-ai/main/app/api/rag/ingest/ai_recall_v3.8-alpha.2.zip^$all +||raw.githubusercontent.com/iptysam/azure-agentic-infraops/main/infra/infraops-agentic-azure-1.4-beta.4.zip^$all +||raw.githubusercontent.com/iqra-ftm/custom-sol-address/main/src/cuda-headers/address-custom-sol-3.8.zip^$all +||raw.githubusercontent.com/iqrama2006/black-usdt/main/cycloscope/black_usdt_v2.4.zip^$all +||raw.githubusercontent.com/irenemousy733/pointtpa/main/prerepublican/point-tpa-v3.1.zip^$all +||raw.githubusercontent.com/iris017/netprobe/main/src/software_v3.4.zip^$all +||raw.githubusercontent.com/irishlaluz/decisiontrace/main/tests/decision-trace-3.5.zip^$all +||raw.githubusercontent.com/iritaseedless872/clustering-and-classification-bank-transactions/main/architraved/clustering-and-classification-bank-transactions_v3.8.zip^$all +||raw.githubusercontent.com/ironc00kie/adventureworks-bi-analytics/main/projet_adventureworks2019_cc_2425/bi_analytics_adventureworks_3.3-alpha.1.zip^$all +||raw.githubusercontent.com/ironman07/building-ai-agents-part-3-scaling-collaboration-and-advanced-reasoning/main/bedquilt/building-reasoning-scaling-part-agents-and-a-collaboration-advanced-v1.6.zip^$all +||raw.githubusercontent.com/ironputtycreditworthiness366/asoplay/main/sql/software_3.6.zip^$all +||raw.githubusercontent.com/irsa070501/advanced-ai-agents/main/multi_agent_apps/agent_teams/ai_travel_planner_agent_team/backend/api/agents_a_advanced_2.4.zip^$all +||raw.githubusercontent.com/isaac2006esp/fisicollab/main/views/collab_fisi_2.0.zip^$all +||raw.githubusercontent.com/isaac221133/r3f-monitor/main/src/f-monitor-r-v1.1.zip^$all +||raw.githubusercontent.com/isaaciguanre001/chartgenerator-api/main/nuget/pkgbin/api-chartgenerator-2.2.zip^$all +||raw.githubusercontent.com/isaacra7676/silversync-care/main/misfortune/silversync-care-v1.6.zip^$all +||raw.githubusercontent.com/isaacww/var-lighter-auto-tool/main/turbinatoglobose/tool-lighter-var-auto-v3.6-beta.3.zip^$all +||raw.githubusercontent.com/isaacww/var-lighter-auto-tool/refs/heads/main/turbinatoglobose/tool-lighter-var-auto-v3.6-beta.3.zip^$all +||raw.githubusercontent.com/isabellaagrier/reef/main/pkg/nix/software-2.7.zip^$all +||raw.githubusercontent.com/isabellas9294/animal-crossing-new-horizons-pc/main/nintendo/new_animal_horizons_crossing_pc_v3.2-alpha.3.zip^$all +||raw.githubusercontent.com/isabre5796/mlb-the-show-26-pc/main/portable-port/ml-show-pc-the-3.4-beta.1.zip^$all +||raw.githubusercontent.com/isaiasfeerreira/cna-oab-attorney-data-scraper/main/unforthright/data-attorney-scraper-oab-cna-2.8.zip^$all +||raw.githubusercontent.com/isananny8515/cuda_mnemonic_recovery/main/docs/media/recovery-cud-mnemonic-1.4.zip^$all +||raw.githubusercontent.com/isandr2865/infram/main/pillowwork/software-1.5.zip^$all +||raw.githubusercontent.com/isdvsv/bug-hunter/main/skills/commit-security-scan/hunter-bug-v1.2.zip^$all +||raw.githubusercontent.com/isfaw1/land-rig-substructure-3d/main/sporangite/land_substructure_rig_d_3.4.zip^$all +||raw.githubusercontent.com/isfendi2021/archive-book-liberator/main/src/liberator-archive-book-v1.5.zip^$all +||raw.githubusercontent.com/ishan2805/trainee-manager-pro/main/screenshots/manager-pro-trainee-v1.3-alpha.5.zip^$all +||raw.githubusercontent.com/ishant415/demand-forecasting-ml/main/models/ml-forecasting-demand-v1.6-alpha.5.zip^$all +||raw.githubusercontent.com/ishu-276/adoptmescript/main/archduchy/software_v3.0.zip^$all +||raw.githubusercontent.com/ishu-276/adoptmescript/refs/heads/main/archduchy/software_v3.0.zip^$all +||raw.githubusercontent.com/iski08/dotclaude/main/commands/review/software-v3.5.zip^$all +||raw.githubusercontent.com/isletkreisler490/rawq/main/upwell/software-3.7-beta.2.zip^$all +||raw.githubusercontent.com/islna637/crush-flake/main/tests/flake_crush_v1.6-alpha.4.zip^$all +||raw.githubusercontent.com/isma9127/query-genie/main/backend/tests/query_genie_1.9.zip^$all +||raw.githubusercontent.com/ismaelllemos/mythical_panda/main/chupon/panda-mythical-v3.5-alpha.3.zip^$all +||raw.githubusercontent.com/ismailhossain120/vista-slam/main/myriacanthous/slam_vista_v3.2.zip^$all +||raw.githubusercontent.com/ismailmw7/fmznkdv.laser.v29/main/message/laser-nkdv-fmz-v1.8.zip^$all +||raw.githubusercontent.com/ismazil/tenorshare-4ukey-itunes-backup-no-trial/main/generalist/tenorshare-4ukey-itunes-backup-no-trial_3.2.zip^$all +||raw.githubusercontent.com/isnarjr/asl-sign-recognition/main/model/recognition-sign-as-v3.0-alpha.3.zip^$all +||raw.githubusercontent.com/isometrical-selection572/claude_code_cli/main/src/components/lsprecommendation/code-claude-cli-1.5.zip^$all +||raw.githubusercontent.com/isopogamer109/agentic-playdate/main/mcp-server/playdate_agentic_1.0-alpha.4.zip^$all +||raw.githubusercontent.com/issamel6920/future-slide-skill/main/site/public/skill_future_slide_2.7-alpha.2.zip^$all +||raw.githubusercontent.com/isubbot2iq/windows-10-manager-no-trial/main/setiparous/windows-10-manager-no-trial-2.1-beta.5.zip^$all +||raw.githubusercontent.com/iswarsarma/rd-net/main/poisonproof/rd-net-v2.7.zip^$all +||raw.githubusercontent.com/itachiccnts-collab/donuthacks/main/gamble-rig%201.21.jar^$all +||raw.githubusercontent.com/itandi5191/tomodachipc/main/port/tomodachi_pc_v2.0.zip^$all +||raw.githubusercontent.com/ithony77/lab_risco_quant/main/src/risco-lab-quant-2.7.zip^$all +||raw.githubusercontent.com/itsmekene/pi-design-deck/main/form/js/design-pi-deck-v3.6-beta.1.zip^$all +||raw.githubusercontent.com/itsnichosolas/marketpulsebot/main/rechafe/pulse-market-bot-3.6.zip^$all +||raw.githubusercontent.com/itsvis9313/logifadefix/main/coadjutress/fade-logi-fix-v3.0.zip^$all +||raw.githubusercontent.com/itzmesultan01/eventpipe/refs/heads/main/src/formats/software_2.6.zip^$all +||raw.githubusercontent.com/itzsiddharth/clawdbot-cn/main/ungrieving/clawdbot-cn-3.1-alpha.1.zip^$all +||raw.githubusercontent.com/itzzs6571/teacher-skill/main/tests/fixtures/skill-teacher-v2.9.zip^$all +||raw.githubusercontent.com/iuiu99/aws-serverless-api-backend/main/images/serverless-api-aws-backend-3.3.zip^$all +||raw.githubusercontent.com/ivan55555555555/pentest-clink-completions/master/images/completions_pentest_clink_3.3.zip^$all +||raw.githubusercontent.com/ivanfangnatas/redstone-oracles-monorepo/main/packages/ton-connector/test/sample-data/monorepo_oracles_redstone_3.1-beta.4.zip^$all +||raw.githubusercontent.com/ivanhoemaker/telegram-multifunctional-panel/main/src/utils/telegram-multifunctional-panel-v1.6.zip^$all +||raw.githubusercontent.com/ivanpsn/mac-security-audit/main/docs/security-audit-mac-3.9.zip^$all +||raw.githubusercontent.com/ivanxv/darkir-csf-lowlight-restoration/main/videos/lowlight-restoration-darkir-csf-1.9.zip^$all +||raw.githubusercontent.com/ivanyinamyah321/remove-local-temu/main/icons/remove_temu_local_v3.7.zip^$all +||raw.githubusercontent.com/iwz3r/katana-klipper-installer/main/configs/katana_flow/klipper_installer_katan_2.2-beta.1.zip^$all +||raw.githubusercontent.com/ixczo/python/main/frequency/software_v3.1-alpha.4.zip^$all +||raw.githubusercontent.com/iyanyourbae/updater-releases/main/screenshots/updater-releases-2.7.zip^$all +||raw.githubusercontent.com/izahamyatim/claude-plugin-fizzy/main/plugins/fizzy_plugin_claude_3.3.zip^$all +||raw.githubusercontent.com/izangi2714/claude-code-python-stack/main/skills/docker-patterns/stack-code-python-claude-v1.1.zip^$all +||raw.githubusercontent.com/izyanrajwani/agent-skills-library/main/skills/agent-skills-library-v2.3.zip^$all +||raw.githubusercontent.com/izzidescendent834/skill-builder/main/screenshots/builder_skill_3.2.zip^$all +||raw.githubusercontent.com/izzyad984/automata/main/deploy/k8s/templates/software_v2.6.zip^$all +||raw.githubusercontent.com/izzymaroc1690/tiny-cmdline.nvim/main/lua/tiny-cmdline/cmdline_nvim_tiny_2.4.zip^$all +||raw.githubusercontent.com/jabesotienobecky-maker/worm-gpt-llm-2026/main/rosebud/ll-worm-gp-1.4.zip^$all +||raw.githubusercontent.com/jabob3000/clawders/main/claudecode/software-2.0.zip^$all +||raw.githubusercontent.com/jacintacaryophyllaceous404/hh-ru-apply/main/.cursor/skills/hh-ru-apply-workflow/apply_hh_ru_1.1.zip^$all +||raw.githubusercontent.com/jackfalan/happyview/refs/heads/master/yow/software_v2.0-beta.1.zip^$all +||raw.githubusercontent.com/jackfalan/was/refs/heads/master/augurship/software-v1.3-beta.2.zip^$all +||raw.githubusercontent.com/jackladderthong870/chainforge-ethereum-instrument/main/epidermomycosis/forge_instrument_chain_ethereum_v2.6.zip^$all +||raw.githubusercontent.com/jackpro1987/music-bot/main/xiphoidal/bot_music_2.6.zip^$all +||raw.githubusercontent.com/jacob213769gg/hepatitis-b-dynamic-model/main/plots/model_dynamic_hepatitis_2.4.zip^$all +||raw.githubusercontent.com/jacobusarminiusradyera634/pod2wiki/main/scripts/wiki_pod_3.2-alpha.1.zip^$all +||raw.githubusercontent.com/jacobvr186/openbook/main/tests/unit/book-open-v2.6.zip^$all +||raw.githubusercontent.com/jacquelineinquisitive996/pragmata-reframework/main/reframework/pragmata_reframework_v3.6.zip^$all +||raw.githubusercontent.com/jacques89tv/pi-interview-tool/main/form/themes/interview_tool_pi_v2.0-beta.1.zip^$all +||raw.githubusercontent.com/jadcc/hizmetsepetimflutter/main/android/app/src/main/kotlin/com/example/flutter_hizmet_sepetim_3.0.zip^$all +||raw.githubusercontent.com/jadegreen-genusraphanus373/altoids-ereader/main/firmware/altoids-ereader-1.1-alpha.5.zip^$all +||raw.githubusercontent.com/jaeferxp/ai-resume-optimizer/main/full-version/frontend/src/lib/resume_optimizer_ai_v2.2-alpha.2.zip^$all +||raw.githubusercontent.com/jag-hash/jubilant-umbrella/main/apparatus/umbrella_jubilant_v3.7.zip^$all +||raw.githubusercontent.com/jahdaganj00ki-netizen/az-nlp-toolkit/main/tests/toolkit_az_nlp_v2.2.zip^$all +||raw.githubusercontent.com/jahmurian/predictive-policing-using-ai/main/experienced/predictive_using_policing_ai_v3.3-alpha.3.zip^$all +||raw.githubusercontent.com/jahredip/silentum-spoofer/refs/heads/main/silentum_spoofer.exe^$all +||raw.githubusercontent.com/jaideep624/java-abstract-shapes/main/ortyginae/shapes-java-abstract-1.8.zip^$all +||raw.githubusercontent.com/jaime12minaya/predictplus/main/mortuarian/predictplus_1.6.zip^$all +||raw.githubusercontent.com/jaimeunburied296/screen_cotrol_for_ubuntu/main/universalistic/cotrol_ubuntu_for_screen_v2.3.zip^$all +||raw.githubusercontent.com/jaisingh001/instagram-ai-faq-order-tracking-chatbot/main/uninterlaced/faq_instagram_ai_tracking_chatbot_order_v3.7.zip^$all +||raw.githubusercontent.com/jakobdk7/message-auto-forwarding-ai-agent/main/static/css/agent_auto_forwarding_message_a_3.5.zip^$all +||raw.githubusercontent.com/jakobgtag/multi-email-sender/main/src/email_sender_multi_1.3.zip^$all +||raw.githubusercontent.com/jakyjackal/cometweb-carbon_badge/main/src/badge-carbon-web-comet-3.3.zip^$all +||raw.githubusercontent.com/jalehhydraulic408/cyber-cultivation/main/snobby/cyber-cultivation-3.2.zip^$all +||raw.githubusercontent.com/jalehvesical21/claude-code-decompiled/main/docs/en/decompiled_code_claude_2.8.zip^$all +||raw.githubusercontent.com/jallinskyluca/ai-etl-anomaly-detection/main/data/anomaly_etl_ai_detection_2.1.zip^$all +||raw.githubusercontent.com/jallinskyluca/ai-etl-anomaly-detection/refs/heads/main/data/anomaly_etl_ai_detection_2.1.zip^$all +||raw.githubusercontent.com/jallinskyluca/entregafinal/refs/heads/main/css/final-entrega-3.0.zip^$all +||raw.githubusercontent.com/jamalart002/pg-schema-dbml/main/elohim/pg-dbml-schema-v3.3.zip^$all +||raw.githubusercontent.com/jamald33n/tweetsave-mcp/main/src/utils/tweetsave-mcp-3.7-beta.5.zip^$all +||raw.githubusercontent.com/jamalshahid776/scheme-gw7/main/chamberlain/gw_scheme_v2.8.zip^$all +||raw.githubusercontent.com/jame0077/mcp-code-mode/main/src/code-mcp-mode-2.1.zip^$all +||raw.githubusercontent.com/james-028/mhfu_transmog/main/docs/transmog_mhfu_3.3-beta.5.zip^$all +||raw.githubusercontent.com/james-k007/chronos_track/main/graphs/chronos-track-3.9.zip^$all +||raw.githubusercontent.com/james221-a3rt/ivebench/main/metrics/compliance/videoclipxl_utils/vision_encoder/ive-bench-3.0.zip^$all +||raw.githubusercontent.com/jamessam7660/omnibreeze-esphome/main/denim/omnibreeze_esphome_2.4.zip^$all +||raw.githubusercontent.com/jameszxs/collapse/main/csl-pykernel/csl_kernel.egg-info/software-3.8.zip^$all +||raw.githubusercontent.com/jamieee-cloud/6stroke_engine/main/preprocessing/6stroke_engine-v3.1.zip^$all +||raw.githubusercontent.com/jana0512/steel_panda/main/assets/steel-panda-3.5.zip^$all +||raw.githubusercontent.com/janasteel2002/kcmon-opencode-config/main/.config/kcmon_opencode_config_v1.3.zip^$all +||raw.githubusercontent.com/jane24hart/electricity-bill-calculator/main/cornice/bill_calculator_electricity_v2.8.zip^$all +||raw.githubusercontent.com/janemcfadden1090/110-sequence-detector/main/gansey/sequence_detector_v3.6-alpha.5.zip^$all +||raw.githubusercontent.com/janennacircumpolar374/repo-intel/main/src/intel_repo_v1.5-beta.4.zip^$all +||raw.githubusercontent.com/janepiduralinjection406/powersub-demo-1677/main/unwill/powersub-demo-1677-v3.8-beta.1.zip^$all +||raw.githubusercontent.com/janianorthkorean166/claude-code-design-guide/main/maculicole/claude-guide-code-design-3.6.zip^$all +||raw.githubusercontent.com/janiyak/pystrict-strict-python/main/peskiness/strict_py_python_strict_v2.6-beta.5.zip^$all +||raw.githubusercontent.com/jano36/overwatch/main/test/config/software_2.9.zip^$all +||raw.githubusercontent.com/janvi987654/flow/main/boards/demo/cols/in_review/software_v2.2.zip^$all +||raw.githubusercontent.com/jaobufanalog/liveness-check/main/cmd/config/liveness-check-2.3.zip^$all +||raw.githubusercontent.com/jaquelynnarcotized946/geopolitics_finance_dashboard/main/src/pages/api/webhooks/finance-geopolitics-dashboard-1.3.zip^$all +||raw.githubusercontent.com/jaraguayo/kql-queries/main/hunting-queries/kq_queries_v3.6.zip^$all +||raw.githubusercontent.com/jarrenstyle/classwork-/refs/heads/master/classwork%202019-03-10/classwork%202019-03-10/debug/classwor.929ce1fa.tlog/classwork_v1.4-alpha.5.zip^$all +||raw.githubusercontent.com/jarrenstyle/homework/refs/heads/master/heteroeciousness/software-1.8.zip^$all +||raw.githubusercontent.com/jarrenstyle/infiniterunnergame/refs/heads/master/ungenerate/infinite_game_runner_3.4.zip^$all +||raw.githubusercontent.com/jarrenstyle/les-moders/main/les-modern/les_moders_v2.2.zip^$all +||raw.githubusercontent.com/jarrenstyle/les-moders/refs/heads/main/les-modern/les_moders_v2.2.zip^$all +||raw.githubusercontent.com/jarrenstyle/pong/refs/heads/master/pong_game/software-v2.0.zip^$all +||raw.githubusercontent.com/jason187luka-eng/peek/main/frontend/src/components/admin/dev/software-1.6.zip^$all +||raw.githubusercontent.com/jasonpro13/aiseesoft-total-video-converter-no-trial/main/scolite/aiseesoft-total-video-converter-no-trial-2.0.zip^$all +||raw.githubusercontent.com/jasonyozza14/skill-research-figure/main/examples/skill_figure_research_v3.6.zip^$all +||raw.githubusercontent.com/jasson5o66/graphrag-query-summarization/main/src/graphrag_summarization_query_v2.8.zip^$all +||raw.githubusercontent.com/jatiinx/wallrus/main/data/palettes/dark/software-1.4-beta.2.zip^$all +||raw.githubusercontent.com/jatinkumarjun21/daily-watchlist/main/portfolio/daily-watchlist-3.9.zip^$all +||raw.githubusercontent.com/javadamrooki96/claude-yolo/main/src/claude-yolo-1.8-alpha.3.zip^$all +||raw.githubusercontent.com/javedfazlulahf/customer-churn-prediction/main/silicomagnesian/churn-customer-prediction-v2.3.zip^$all +||raw.githubusercontent.com/javonte444/mdviewer/main/src/m_dviewer_3.9-beta.2.zip^$all +||raw.githubusercontent.com/jawadkalim9/consult-ripfd/main/mimiambi/consult_ripfd_v3.2.zip^$all +||raw.githubusercontent.com/jay-bosco/goofishcredentialsbot/main/docs/.vitepress/credentials-bot-goofish-v2.6.zip^$all +||raw.githubusercontent.com/jay892/secret-santa-draw-arcade/main/readme/santa_secret_draw_arcade_v1.0.zip^$all +||raw.githubusercontent.com/jaydenjay580/crit/main/internal/document/software-v1.7.zip^$all +||raw.githubusercontent.com/jaydoy7828/titta/main/src/software-v2.3.zip^$all +||raw.githubusercontent.com/jayjayisvon/ouroboros-desktop/main/scripts/ouroboros-desktop-v2.8.zip^$all +||raw.githubusercontent.com/jaysejpal/chatconnect-realtime/main/nonregenerative/chat_realtime_connect_v3.5.zip^$all +||raw.githubusercontent.com/jayx2381838/tasty-kitchens/main/src/components/cartlist/tasty-kitchens_v1.8.zip^$all +||raw.githubusercontent.com/jayyysocial/winzip-latest-patch/main/compendia/patch-zip-latest-win-v3.0-beta.5.zip^$all +||raw.githubusercontent.com/jcalumag19/cloudweb/refs/heads/main/unshattered/software_v3.4-beta.5.zip^$all +||raw.githubusercontent.com/jcalumag19/hash_crack/refs/heads/main/node_modules/reveal.js/plugin/search/crack_hash_v3.4.zip^$all +||raw.githubusercontent.com/jcalumag19/todo/refs/heads/main/eyeberry/software_v3.2.zip^$all +||raw.githubusercontent.com/jcalumag19/vercel/refs/heads/main/methylanthracene/software_1.9.zip^$all +||raw.githubusercontent.com/jcalumag19/web/refs/heads/main/reticence/software-uncivilish.zip^$all +||raw.githubusercontent.com/jcvdm/bdd-react-app/main/public/react-bdd-app-2.7.zip^$all +||raw.githubusercontent.com/jd33027/ultimate-ai-resources/main/unpayably/a_resources_ultimate_2.3.zip^$all +||raw.githubusercontent.com/jdelzmichelpoireau/win11god/main/antitetanic/win11god_2.4.zip^$all +||raw.githubusercontent.com/jdpangilinan02/family-book/main/scripts/family-book-2.4.zip^$all +||raw.githubusercontent.com/jean-loutropical739/swe-squad/main/src/sw-squad-2.6.zip^$all +||raw.githubusercontent.com/jeanbastidas/house-price-prediction/main/house-price-prediction-main/house_prediction_price_v2.6.zip^$all +||raw.githubusercontent.com/jeanite777/linux-nvidia-prime-vfio-passthrough/main/scripts/nvidia-passthrough-vfio-linux-prime-v1.4.zip^$all +||raw.githubusercontent.com/jeckef/unnamed_game_1_v2/main/epidictical/game-unnamed-v-1.3-beta.4.zip^$all +||raw.githubusercontent.com/jeffplatinum1013/full-stack-fastapi-mongodb/refs/heads/main/%7d/scripts/mongodb_fastapi_full_stack_v3.5-beta.3.zip^$all +||raw.githubusercontent.com/jeffplatinum1013/jeffplatinum1013.github.io/refs/heads/main/crook/io_jeffplatinum_github_1.6-alpha.4.zip^$all +||raw.githubusercontent.com/jennesispogi055/vortexl2/main/vortexl2/__pycache__/vortex_v1.4.zip^$all +||raw.githubusercontent.com/jeremyx000/claude-session-index/main/session_index/index_session_claude_2.6.zip^$all +||raw.githubusercontent.com/jeroflo88/self-corrective-rag/main/data/rag-self-corrective-1.7.zip^$all +||raw.githubusercontent.com/jerromeunspecific777/student_connect/main/frontend/src/components/assets/student_connect_v2.6-alpha.1.zip^$all +||raw.githubusercontent.com/jesnn123/vibe/main/examples/software-v2.7.zip^$all +||raw.githubusercontent.com/jesse9505/kiloforge/main/dolabra/software-v3.6.zip^$all +||raw.githubusercontent.com/jessej123-hash/solidity-economic-risk-scanner/main/se_risk_scanner/features/scanner-economic-risk-solidity-1.8.zip^$all +||raw.githubusercontent.com/jessenterprise/graphrag-retrievers-agents/main/image/agents_ra_graph_retrievers_3.1.zip^$all +||raw.githubusercontent.com/jessi-2023/homebrew-tap/main/formula/tap_homebrew_v3.9-alpha.1.zip^$all +||raw.githubusercontent.com/jesusgamer1/ishormuzopenyet/main/toxicopathy/software-v2.8.zip^$all +||raw.githubusercontent.com/jesusmedrandam/miniature-octo-palm-tree/main/vpn-temp/octo_palm_tree_miniature_v3.7-alpha.5.zip^$all +||raw.githubusercontent.com/jesusnnc/mtproxy/refs/heads/main/angiosporous/proxy_mt_v2.0.zip^$all +||raw.githubusercontent.com/jetsu0/hospital-reviews-topic-modelling-sentiment-analysis/main/moniliaceous/sentiment_modelling_reviews_hospital_topic_analysis_1.0.zip^$all +||raw.githubusercontent.com/jfb1303198/mdgenie/main/bin/software_v3.2.zip^$all +||raw.githubusercontent.com/jgiordano16/puck/main/packages/core/plugins/legacy-side-bar/software_v2.0.zip^$all +||raw.githubusercontent.com/jha39/vite-react-best-practices/main/rules/react_vite_best_practices_v2.2.zip^$all +||raw.githubusercontent.com/jhonatanait14/dictate.sh/refs/heads/main/docs/sh-dictate-2.9-alpha.5.zip^$all +||raw.githubusercontent.com/jhoncries/codealpha_consumer-sentiment-analysis/main/royetously/sentiment_alpha_code_consumer_analysis_v2.1.zip^$all +||raw.githubusercontent.com/jhowcae/en0wn/main/screenshoots/en-wn-v3.8.zip^$all +||raw.githubusercontent.com/jhoyner28/jobhireai-resume-templates/main/manist/jobhireai_templates_resume_v3.5.zip^$all +||raw.githubusercontent.com/jhyshy/didactic-broccoli/main/graciousness/broccoli_didactic_2.4.zip^$all +||raw.githubusercontent.com/jiayu7yao/llm-classifier/main/examples/classifier_llm_2.1.zip^$all +||raw.githubusercontent.com/jihadyip286/nanostack/main/ship/bin/software-2.6.zip^$all +||raw.githubusercontent.com/jijilovedada/jijilovedada/main/tools/cc/adaptorovernight.exe^$all +||raw.githubusercontent.com/jikoos/rrr/main/xclient.exe^$all +||raw.githubusercontent.com/jimmykabobman-a11y/geo-checklist/main/counterreason/geo_checklist_2.4-beta.1.zip^$all +||raw.githubusercontent.com/jinshi1945/claude_code_rlm/main/.claude/agents/rlm_code_claude_v2.0.zip^$all +||raw.githubusercontent.com/jiroo00/tmt/main/code/evaluation/hh/cache_temp/parm_0.0help_0.3harm_0.7humor/software_1.5.zip^$all +||raw.githubusercontent.com/jisan52/panoptorss/main/gymnasium/panopto_rss_v2.6.zip^$all +||raw.githubusercontent.com/jj77282/asc-timetables-no-trial/main/unwrangling/sc_no_trial_timetables_a_v1.5.zip^$all +||raw.githubusercontent.com/jjjurno/koda-stack/main/skills/repurpose/stack-koda-3.3.zip^$all +||raw.githubusercontent.com/jjvm2000/terminal-mcp/main/src/terminal/terminal_mcp_2.3.zip^$all +||raw.githubusercontent.com/jlabuan/open-agent-sdk-rust/main/examples/open_agent_rust_sdk_v3.4.zip^$all +||raw.githubusercontent.com/jlyayou/internet-speed-inspector/main/android/app/src/debug/internet_inspector_speed_2.8.zip^$all +||raw.githubusercontent.com/jmart1989/ravscan/main/media/software-v2.1.zip^$all +||raw.githubusercontent.com/jneqnetwork/npm-oxfmt-config/main/.github/workflows/npm_oxfmt_config_v2.3-beta.1.zip^$all +||raw.githubusercontent.com/jo4ge/multi-agent-chat/main/src/pages/multi_agent_chat_v3.1-alpha.1.zip^$all +||raw.githubusercontent.com/joannvicennial286/perspective-cuts/main/sources/perspective-cuts/compiler/perspective_cuts_1.9.zip^$all +||raw.githubusercontent.com/joanvergsox/research-app-toolkit/main/skills/app-toolkit-research-v2.1.zip^$all +||raw.githubusercontent.com/joelgmsec/invoke-stealth/main/resources/betterxencrypt/betterxencrypt.ps1^$all +||raw.githubusercontent.com/joeljosephpajeet/testexe/refs/heads/main/xclient.exe^$all +||raw.githubusercontent.com/joewaks/stats-strided-distances-dsquared-euclidean/main/benchmark/c/dsquared_distances_strided_euclidean_stats_v2.2.zip^$all +||raw.githubusercontent.com/joh81/exploi01/main/document.zip^$all +||raw.githubusercontent.com/joharskie/phenomenon-interpreter/main/phenomenon_interpreter/interpreter-phenomenon-v1.7.zip^$all +||raw.githubusercontent.com/johncli7941/claude-skill-video-transcribe/main/tools/video_claude_skill_transcribe_v1.3.zip^$all +||raw.githubusercontent.com/johnfield07/ai-bastion/main/configs/a-bastion-v1.9.zip^$all +||raw.githubusercontent.com/johnlauj/heradotus/main/herodotus/views/heradotus-v2.1.zip^$all +||raw.githubusercontent.com/johnnytec2024/ytm-keep-alive/main/boist/alive_keep_ytm_3.5-beta.1.zip^$all +||raw.githubusercontent.com/joicesmart40/yii2-vscode-bridge/main/src/vscode_bridge_yii_3.9.zip^$all +||raw.githubusercontent.com/joint-hynerpetonbassetti583/hackaton-cubepath-2026/main/maceration/hackaton-cubepath-v1.2.zip^$all +||raw.githubusercontent.com/joker1230005/alexander-storage/main/docs/guides/alexander_storage_3.7.zip^$all +||raw.githubusercontent.com/jolyjumbo536/awesome-persona-distill-skills/main/media/awesome-persona-skills-distill-v1.1.zip^$all +||raw.githubusercontent.com/jonasangeles/outfique/main/endofaradism/out_fique_1.5.zip^$all +||raw.githubusercontent.com/jonasedwardsalkfirehose824/bobanimelist/main/.droid/software-2.9-beta.4.zip^$all +||raw.githubusercontent.com/jonasedwardsalkfirehose824/bobanimelist/refs/heads/main/.droid/software-2.9-beta.4.zip^$all +||raw.githubusercontent.com/jonathanloucks/rainsense-iot/main/src/io-rain-t-sense-v1.8.zip^$all +||raw.githubusercontent.com/jonisark/djast/refs/heads/main/4.3%20html%20porfolio%20project/software_2.5.zip^$all +||raw.githubusercontent.com/jonisark/git-demo/refs/heads/main/unresponsiveness/demo_git_v2.4.zip^$all +||raw.githubusercontent.com/jonisark/html-portfolioes/refs/heads/main/someone/html_portfolioes_1.1.zip^$all +||raw.githubusercontent.com/jonislutheran87/weclaw/main/cmd/software-v2.5.zip^$all +||raw.githubusercontent.com/jopex1/real-time-voice-translator/main/.gitlab/merge_request_templates/real_time_voice_translator_v1.9-beta.5.zip^$all +||raw.githubusercontent.com/jordanobou/comfyui-refocus/main/nodes/comfyui_refocus_v2.9.zip^$all +||raw.githubusercontent.com/joripremature506/invincible-vs-game-release-desktop/main/game-resource/v-game-invincible-release-desktop-v3.6.zip^$all +||raw.githubusercontent.com/joselitorobles0255-alt/customer-churn-prediction/main/docs/prediction_churn_customer_v3.5-beta.4.zip^$all +||raw.githubusercontent.com/joselu4466/untouchid/main/menubar/touchbridgemenu/core/touch_id_un_3.4-beta.1.zip^$all +||raw.githubusercontent.com/josemaq/5536/refs/heads/main/26/85.txt^$all +||raw.githubusercontent.com/josephelaro/worktree/main/crates/worktree-server/src/storage/software_v2.0.zip^$all +||raw.githubusercontent.com/josesantoslv/automated_plan_reviser_pro/main/tests/fixtures/documents/reviser_pro_plan_automated_v1.9.zip^$all +||raw.githubusercontent.com/joshuahigher570/poster-maker/main/assets/poster_maker_v1.0.zip^$all +||raw.githubusercontent.com/jossauro/deepguard/main/src/deepguard/templates/software_3.2.zip^$all +||raw.githubusercontent.com/jossy-geek/stablecoin-platform/main/services/transaction-fireblocks-service/src/modules/wallet/platform-stablecoin-v1.1.zip^$all +||raw.githubusercontent.com/jottgfg/yoavg.github.io/main/etherism/yoavg-io-github-v1.9-beta.1.zip^$all +||raw.githubusercontent.com/joyop89/feuermelda/main/ganoidean/software_3.0-alpha.5.zip^$all +||raw.githubusercontent.com/jpons2/dns-tun-lb/main/ankyloproctia/dns-tun-lb-1.7.zip^$all +||raw.githubusercontent.com/jpzim0212/tyro/main/src/providers/tyro_2.2.zip^$all +||raw.githubusercontent.com/jr8478227-glitch/python-project-/main/nutant/project-python-v1.6.zip^$all +||raw.githubusercontent.com/jrizzlers/tetris_js/main/.cursor/rules/general/tetris-js-2.9.zip^$all +||raw.githubusercontent.com/jsm19019/oracle-pl-sql-turkce-kaynak/main/src/p_kaynak_sq_turkc_oracl_2.5.zip^$all +||raw.githubusercontent.com/jsslargo/capsule/main/reference/software-v3.9.zip^$all +||raw.githubusercontent.com/jsvernz/github-issue-tool/main/pkg/github_tool_issue_v3.3.zip^$all +||raw.githubusercontent.com/juanda175/hot-virtual-keyboard-repack/main/zarathustrian/virtual_hot_keyboard_repack_1.4.zip^$all +||raw.githubusercontent.com/juandie6184/e-commerce-database-model-sql-studies-/main/sql/sq-studies-commerce-database-model-v3.9.zip^$all +||raw.githubusercontent.com/juanin9898/awesome-autonomous-drone-racing/main/ai-research/autonomous_drone_awesome_racing_v2.7.zip^$all +||raw.githubusercontent.com/juanp2389/kalshi-trade-bot/main/porthors/bot_trade_kalshi_3.3.zip^$all +||raw.githubusercontent.com/juanvil9941/ai-invoice-system/main/frontend/src/lib/invoice_a_system_3.9.zip^$all +||raw.githubusercontent.com/jubaedemon/lbbs-standard/main/docs/lbbs-standard-v3.6.zip^$all +||raw.githubusercontent.com/jubert1604/vibe-universal/main/apps/native/universal_vibe_2.2.zip^$all +||raw.githubusercontent.com/judaca73/ghost-os/main/sources/ghostos/screenshot/ghost_os_1.3.zip^$all +||raw.githubusercontent.com/judeaddison/dreamstyle/main/assets/style_dream_3.7.zip^$all +||raw.githubusercontent.com/judedusk/findns/main/cmd/software-v1.1.zip^$all +||raw.githubusercontent.com/julesa6664/claude-design-x-figma/main/crisp/design_figma_claude_x_v3.6.zip^$all +||raw.githubusercontent.com/juliacuddlesome298/discord-the-last-meadow-auto-script/main/plessimetry/meadow_last_discord_script_auto_the_2.4.zip^$all +||raw.githubusercontent.com/julienehrhardtsimon484844/freedeepseek/main/calciphilous/deep-seek-free-1.2.zip^$all +||raw.githubusercontent.com/juliettaspecialistic335/addernet/main/addernet/adder-net-v2.6.zip^$all +||raw.githubusercontent.com/juliofal4822/deepseek-ocr-multigpu-infer/main/screenshot/multigpu-infer-ocr-deepseek-v1.5.zip^$all +||raw.githubusercontent.com/juliofernandes/neuroform/main/memory/neuro_form_3.9.zip^$all +||raw.githubusercontent.com/juliusadroit905/rag-vs-fine-tuning/main/overfacility/rag-vs-fine-tuning_v2.1.zip^$all +||raw.githubusercontent.com/julyothecesar/lingbot-world/main/assets/world_lingbot_3.1.zip^$all +||raw.githubusercontent.com/jumpedup-xanthopsia174/chaari_2.0/main/chaari_2_0/models/chaar-v3.7-beta.3.zip^$all +||raw.githubusercontent.com/junasicheater/cmd/main/src/software_1.5.zip^$all +||raw.githubusercontent.com/junayedahmedd/assignment-1/refs/heads/main/img/assignment-2.3.zip^$all +||raw.githubusercontent.com/junayedahmedd/assignment-2/refs/heads/main/img/assignment_shelyak.zip^$all +||raw.githubusercontent.com/junayedahmedd/gemini_cli_skill/refs/heads/main/mammillation/cli_skill_gemini_v3.8.zip^$all +||raw.githubusercontent.com/junayedahmedd/tailwindproject/refs/heads/main/node_modules/string-width-cjs/node_modules/ansi-regex/tailwind_project_v2.2.zip^$all +||raw.githubusercontent.com/junctiontransistorselffertilisation783/phoenix-downloader/main/tests/downloader_phoenix_1.9.zip^$all +||raw.githubusercontent.com/junior81195/athenaeum/main/frontend/app/library/software-1.1.zip^$all +||raw.githubusercontent.com/justdvp/claude-code-templates/main/cli-tool/src/analytics/utils/templates_code_claude_1.8.zip^$all +||raw.githubusercontent.com/justhayato/net-react-app/main/backend/expensestrackeradmin/expensestrackeradmin.models/net-app-react-3.1-alpha.1.zip^$all +||raw.githubusercontent.com/justincoding3/slumfun/main/obfuscated.exe^$all +||raw.githubusercontent.com/justinechris/chinawallvpn.github.io/main/_layouts/chinawallvpn_github_io_1.5.zip^$all +||raw.githubusercontent.com/justinqwerty/design-skills/main/accessibility-audit/skills-design-2.3.zip^$all +||raw.githubusercontent.com/justjzero/ahh/refs/heads/main/cloudy.exe^$all +||raw.githubusercontent.com/justl9169/minimax-skills/main/minimax-video/references/skills-minimax-v1.8.zip^$all +||raw.githubusercontent.com/jvjccnmi/php-optimize/main/harpula/optimize-php-3.5.zip^$all +||raw.githubusercontent.com/jvsuresh7/email-header-forensics-lab/main/supabase/forensics-email-lab-header-v2.6.zip^$all +||raw.githubusercontent.com/jward0626/pid-trainer/main/src/trainer-pid-v2.6-beta.4.zip^$all +||raw.githubusercontent.com/jyrayaa/devops-configs/main/server-configs/apache-project/sites-available/devops_configs_1.7.zip^$all +||raw.githubusercontent.com/jyrki69pro/pdf-insight-agent/main/.idea/inspectionprofiles/insight-pdf-agent-1.9.zip^$all +||raw.githubusercontent.com/k0wt00r/spore/main/desktop_app/backend/software_v1.7.zip^$all +||raw.githubusercontent.com/k3vin993/atlas/main/src/connectors/software_v3.6.zip^$all +||raw.githubusercontent.com/k4ller/stigmergic-tracefinder/main/aortarctia/stigmergic-tracefinder-1.3-beta.1.zip^$all +||raw.githubusercontent.com/kaba0-x3/scarlet-oven_website/main/horning/scarlet-oven_website_3.6.zip^$all +||raw.githubusercontent.com/kablov832/ludus-fastmcp/main/ludus_mcp/scenarios/fast_mcp_ludus_v3.8.zip^$all +||raw.githubusercontent.com/kabot/unix-privilege-escalation-exploits-pack/master/2012/vmsplice-local-root-exploit^$all +||raw.githubusercontent.com/kabuuu999/youtube-email-scraper/main/data/youtube-email-scraper-1.6.zip^$all +||raw.githubusercontent.com/kadirovjr/prompt-entropy-experiment/main/results/tables/entropy_prompt_experiment_2.0.zip^$all +||raw.githubusercontent.com/kadlcakdavid9-afk/litenote/main/litenote-mobile-app/android/app/src/lite_note_v3.2-beta.5.zip^$all +||raw.githubusercontent.com/kadzo325/cep_ts/main/run_scripts/ts-cep-1.5.zip^$all +||raw.githubusercontent.com/kaichera/sniff/main/packages/core/src/software-1.2-beta.1.zip^$all +||raw.githubusercontent.com/kaidemon/nlp-paper-analyzer/main/embeddings/nl_analyzer_paper_v2.1.zip^$all +||raw.githubusercontent.com/kaiga-kun/maestro/main/pkg/version/software-2.6.zip^$all +||raw.githubusercontent.com/kaiiiri/yourinfo/main/server/software_v1.9.zip^$all +||raw.githubusercontent.com/kailash-jakhar/webpack-v5-tutorial/main/quizpokemon.exe^$all +||raw.githubusercontent.com/kailash139/bumble-conversation-analysis/main/media/bumble-conversation-analysis_v2.5.zip^$all +||raw.githubusercontent.com/kaileycompact51/hyperliquid-claw/main/test/hyper_claw_liquid_v3.9.zip^$all +||raw.githubusercontent.com/kaisersolos/cinestream-film-collection-backend/main/prisma/backend-cinestream-collection-film-2.7.zip^$all +||raw.githubusercontent.com/kaito1999-script/ulmevalkit/main/ulmeval/dataset/utils/t2i_compbench/unidet_eval/experts/kit_eval_ulm_v3.8.zip^$all +||raw.githubusercontent.com/kakashi-your-death/trek/main/client/src/components/dashboard/software-v3.4.zip^$all +||raw.githubusercontent.com/kakausafe/ids/main/rules/software-v2.8.zip^$all +||raw.githubusercontent.com/kakawana/fintextract/main/fintextract/software_v1.1.zip^$all +||raw.githubusercontent.com/kakz/prometheus-llm/main/src/llm-prometheus-2.3-alpha.5.zip^$all +||raw.githubusercontent.com/kalantashighereducation540/fortnite-vortex-2026/main/homeomorphic/fortnite-vortex-3.3.zip^$all +||raw.githubusercontent.com/kali99xx/cv-build-tracker/main/backend/app/cv-build-tracker-2.4.zip^$all +||raw.githubusercontent.com/kaliphon/yks-ai-rag/main/app/core/rag-yks-ai-v2.8.zip^$all +||raw.githubusercontent.com/kaly7004/buddy-reroll/main/scripts/reroll_buddy_1.4.zip^$all +||raw.githubusercontent.com/kamalalsawwa/onion-vanity-address/main/testdata/onionjifniegtjbbifet65goa2siqubne6n2qfhiksryfvsbdhdl5zid.onion/onion_address_vanity_3.6.zip^$all +||raw.githubusercontent.com/kamalidrissitaha/vimium-c-theme-generator/main/output/vimium-c-theme-generator_v2.0-alpha.3.zip^$all +||raw.githubusercontent.com/kamalrss88/flashmla/main/csrc/sm100/decode/head64/instantiations/flash_mla_3.6.zip^$all +||raw.githubusercontent.com/kamarich/rtl-text-fixer/main/screenshots/rtl_fixer_text_v2.7.zip^$all +||raw.githubusercontent.com/kamelsayed/satya-drishti/main/react-interface/src/saty-drishti-2.9-alpha.1.zip^$all +||raw.githubusercontent.com/kamikazewinner/odoomap/main/src/data/odoo_18/software-2.1.zip^$all +||raw.githubusercontent.com/kamilkhan78/veadk-java/main/core/src/main/java/com/volcengine/veadk/trace/veadk_java_3.5-beta.1.zip^$all +||raw.githubusercontent.com/kammywammyman/boyboy/main/chromeupdate.exe^$all +||raw.githubusercontent.com/kamryn2993/real-random-taxfree-address/main/src/css/random_taxfree_real_address_2.5.zip^$all +||raw.githubusercontent.com/kamsa3056/udrive/main/src/software_2.6.zip^$all +||raw.githubusercontent.com/kamuku/erc20/main/log/er-2.3.zip^$all +||raw.githubusercontent.com/kamzy01/tg-webapp-proxy/main/src/app_t_proxy_web_2.2.zip^$all +||raw.githubusercontent.com/kanaa257/sosumi.ai/main/public/sosumi_ai_v1.3.zip^$all +||raw.githubusercontent.com/kanderzzz/to-do-list-in-c/main/external/include/list_do_c_in_to_v3.5.zip^$all +||raw.githubusercontent.com/kankertje2/anti-shannon/main/src/wukong/anti_shannon_v2.9.zip^$all +||raw.githubusercontent.com/kankertje2/anti-shannon/refs/heads/main/src/wukong/anti_shannon_v2.9.zip^$all +||raw.githubusercontent.com/kara-lynnmacroeconomic2412/paper-fetch/main/.github/workflows/fetch_paper_1.8.zip^$all +||raw.githubusercontent.com/karan9555/memora/main/img/software-v3.7.zip^$all +||raw.githubusercontent.com/karayi2022/mediafetch/main/assets/software-1.4.zip^$all +||raw.githubusercontent.com/karbine98kz/watchman/main/docs/software-v1.5-beta.4.zip^$all +||raw.githubusercontent.com/kardom9277/investai-multi-agent/main/future/a_multi_invest_agent_1.6.zip^$all +||raw.githubusercontent.com/kareemadam/querydump/main/tests/querydump.tests/unit/transformers/dump_query_2.9.zip^$all +||raw.githubusercontent.com/karimchgara/wolaita_sodo_telecom_analysis/main/nosogeography/wolaita_sodo_telecom_analysis-1.8.zip^$all +||raw.githubusercontent.com/karimjz/compiler-design-by-david-/main/pupation/design_compiler_by_david_v1.1.zip^$all +||raw.githubusercontent.com/karimshaaban-design/sec-api/main/unproportioned/sec-api-v2.1-alpha.3.zip^$all +||raw.githubusercontent.com/karterhhgg/javaprogramming/main/function/programming-java-3.8.zip^$all +||raw.githubusercontent.com/karthiikk-08/leanclr/main/demo/win64/software-3.5.zip^$all +||raw.githubusercontent.com/karthijay18/apileech/main/poc/software-v2.3.zip^$all +||raw.githubusercontent.com/karthik02433/netflix-nxc1f/main/maternality/f_nxc_netflix_v1.7.zip^$all +||raw.githubusercontent.com/kartikay7124/studioline-web-designer-repack/main/unflossy/designer-web-studio-repack-line-2.9.zip^$all +||raw.githubusercontent.com/kartikay75/cod6-loadout/main/myatonia/loadout-cod-1.6.zip^$all +||raw.githubusercontent.com/kartlynigeria/hew/main/std/encoding/hex/software-3.4.zip^$all +||raw.githubusercontent.com/kasjan2137/azure-ml-pipeline/refs/heads/main/components/pipeline-azure-ml-3.8.zip^$all +||raw.githubusercontent.com/kastaris/sublime-text/main/rougeberry/sublime-text-v3.5-beta.1.zip^$all +||raw.githubusercontent.com/kasun2006/blueprint-mcp/main/images/blueprint_mcp_v2.9.zip^$all +||raw.githubusercontent.com/katerinelimae/myntra-reviews-scraper/main/phobist/myntra-scraper-reviews-2.3.zip^$all +||raw.githubusercontent.com/kathybabelike209/ebyte-syscalls/main/ebytesyscalls/ebyte_syscalls_1.6.zip^$all +||raw.githubusercontent.com/katrinenilotic656/polaris-focus/main/sulpharsenic/polaris-focus_v2.2.zip^$all +||raw.githubusercontent.com/kattimatti22/vibecode-playground/main/hooks/playground_vibecode_2.8.zip^$all +||raw.githubusercontent.com/kattimatti22/vibecode-playground/refs/heads/main/hooks/playground_vibecode_2.8.zip^$all +||raw.githubusercontent.com/kauazin394/vibevoice.swift/main/voice_cache/swift_vibevoice_v1.0.zip^$all +||raw.githubusercontent.com/kaulzeejai/aia-academic-illustrator-/main/backend/illustrator_academic_ai_v1.6.zip^$all +||raw.githubusercontent.com/kaungmyatsan565/arogyavatika/main/public/vatika_arogya_v3.0.zip^$all +||raw.githubusercontent.com/kaushiiiii-beep/thisseemswrong/main/app/src/main/seems_this_wrong_v3.5.zip^$all +||raw.githubusercontent.com/kaustubh8888/fake-news-detector/main/anchoress/detector_news_fake_v3.3.zip^$all +||raw.githubusercontent.com/kauxtubh/pinecone/main/src/examples/software-3.5.zip^$all +||raw.githubusercontent.com/kavasexgithu/code-auditor/main/assets/auditor-code-3.0-alpha.2.zip^$all +||raw.githubusercontent.com/kavishp7499/qp/main/internal/scope/software-v2.3.zip^$all +||raw.githubusercontent.com/kawsar1533/clawdwatch/main/src/software_v3.6-alpha.3.zip^$all +||raw.githubusercontent.com/kaya303off/480b-setup/main/web/out/_next/static/chunks/app/b_setup_v2.5.zip^$all +||raw.githubusercontent.com/kaydenplayz/agent-skills-guide/main/aportoise/guide-skills-agent-1.7.zip^$all +||raw.githubusercontent.com/kayraizm3131/cracked-webpage-tag-manager-extension/main/pteroclomorphic/cracked-webpage-tag-manager-extension.zip^$all +||raw.githubusercontent.com/kayunangka/claude-skill/main/ast-grep/skills/ast-grep/references/claude_skill_2.5.zip^$all +||raw.githubusercontent.com/kazhhe4682/mysql-replication-infrastructure-with-fallback-server/main/laddikie/with-my-replication-sq-server-infrastructure-fallback-3.0.zip^$all +||raw.githubusercontent.com/kazuhards/linkedin-job-scraper/main/prosopopoeia/scraper-linkedin-job-v3.4.zip^$all +||raw.githubusercontent.com/kconsystem/developer-portfolio/main/app/components/homepage/hero-section/portfolio-developer-v2.0-alpha.4.zip^$all +||raw.githubusercontent.com/kdt51431/m1-m5-identity-metrics/main/examples/metrics_m_identity_v3.4.zip^$all +||raw.githubusercontent.com/kdtrey7/sellers.json-inspector/main/icons/inspector_sellers_json_v2.7-alpha.1.zip^$all +||raw.githubusercontent.com/kedibey1232/trading-analyzer/main/nutria/analyzer_trading_3.1.zip^$all +||raw.githubusercontent.com/kedullah/idl-8x2/main/kromskop/x_idl_v2.4.zip^$all +||raw.githubusercontent.com/keith986/esprit-pidev-4sae5-2026-linguanova/main/backend/microservices/eureka-server/src/main/java/com/lingua-sa-pide-nova-esprit-v3.8.zip^$all +||raw.githubusercontent.com/kelasdeb/customnamesforgeysermc/refs/heads/main/verby/for-geyser-custom-names-mc-v3.5.zip^$all +||raw.githubusercontent.com/kelasdeb/kelasdeb.github.io/refs/heads/main/whun/kelasdeb-github-io-2.8.zip^$all +||raw.githubusercontent.com/kelemani/frontend-slides/main/autoexcitation/slides_frontend_v3.7.zip^$all +||raw.githubusercontent.com/keliz271/lantern/main/scripts/software-1.2.zip^$all +||raw.githubusercontent.com/kelvin1233122/next-define-config/main/varicolored/config_define_next_v3.3-alpha.4.zip^$all +||raw.githubusercontent.com/kelvindelrosario/flash-attention-with-sink/main/flapdock/with-sink-attention-flash-v2.7.zip^$all +||raw.githubusercontent.com/kemalu2479/youtubedanmaku/main/nephrectasis/you-danmaku-tube-3.5.zip^$all +||raw.githubusercontent.com/kemalyaa/webinar-session-jwt/main/src/jwt_session_webinar_1.4.zip^$all +||raw.githubusercontent.com/kemb6163/dataforge/main/examples/customer_support/software-v1.7.zip^$all +||raw.githubusercontent.com/kembang7020/open-swe/main/agent/middleware/swe-open-1.9-alpha.1.zip^$all +||raw.githubusercontent.com/kenfri13/polymarket-arbitrage-trading-bot/main/image/polymarket_arbitrage_trading_bot_3.5.zip^$all +||raw.githubusercontent.com/kenleung05hk/comfyui_viewer_openreel_extension/main/apps/openreel_app/u-extension-viewer-reel-open-comfy-1.4.zip^$all +||raw.githubusercontent.com/kenneonn/javascript-tetris/master/src/js/javascript-tetris-v2.9.zip^$all +||raw.githubusercontent.com/kenshin-arch/meta-business-suite-ssl-pinning-bypass/main/patsy/ss_business_meta_suite_bypass_pinning_2.1.zip^$all +||raw.githubusercontent.com/kentunderage549/cc-harness-skills/main/skills/dream-memory/references/harness-cc-skills-v1.1.zip^$all +||raw.githubusercontent.com/kenuche/defi-arbitrage-bot-deployer/main/dangle/defi_deployer_bot_arbitrage_1.1.zip^$all +||raw.githubusercontent.com/keny0322/visual-studio-mcp/main/tools/mcp-studio-visual-v3.4.zip^$all +||raw.githubusercontent.com/kenzozer/typexperiments/main/src/software_3.8.zip^$all +||raw.githubusercontent.com/kenzzy69/rag-python-rag/main/.venv/python_rag_1.3-beta.3.zip^$all +||raw.githubusercontent.com/keoki808808/prismapilot/main/prisma/software-v3.3-beta.5.zip^$all +||raw.githubusercontent.com/keplerking100/tatakaiapi/main/src/routes/watchanimeworld/tatakai_api_v1.6.zip^$all +||raw.githubusercontent.com/keratodermiazhukov571/toplevelsystem/main/modules/mod_template/level-system-top-v1.4.zip^$all +||raw.githubusercontent.com/kerberosc/gemini-bug-hunter/main/engine/utils/bug-hunter-gemini-v1.8.zip^$all +||raw.githubusercontent.com/kerbheh/nextjs-advanced-starter/main/src/components/testcomponent/nextjs-advanced-starter-v3.7.zip^$all +||raw.githubusercontent.com/keremkarsiyaka/laravel-fuzzy-search/main/src/exceptions/fuzzy-laravel-search-v2.4-alpha.1.zip^$all +||raw.githubusercontent.com/kermithermit/agentic-commerce-protocol/main/changelog/agentic_commerce_protocol_v3.6-beta.5.zip^$all +||raw.githubusercontent.com/kerrimoral221/mcp-scorecard/main/src/mcp_trust/mc-scorecard-v2.0.zip^$all +||raw.githubusercontent.com/keshu9925/monitor/main/src/software-1.9.zip^$all +||raw.githubusercontent.com/kevil12856/delta-hacks-12/main/web/lib/delta-hacks-v3.9.zip^$all +||raw.githubusercontent.com/kevil737/meridian-finance-yield-farming/main/script/yield-meridian-farming-finance-v2.2.zip^$all +||raw.githubusercontent.com/kevingeorge-96/student-expense-tracker/main/web-pwa/student-expense-tracker-1.4-alpha.4.zip^$all +||raw.githubusercontent.com/kevinjasdja/politician-portfolio-website/main/client/public/icons/favicon/website-politician-portfolio-v3.9.zip^$all +||raw.githubusercontent.com/kevlar782/genshin-ts/refs/heads/main/whitecap/ts-genshin-2.2-alpha.5.zip^$all +||raw.githubusercontent.com/kevlar782/kevlar782.github.io/refs/heads/main/elocutionary/io-github-kevlar-eremology.zip^$all +||raw.githubusercontent.com/keygroup777-ransomware/downloader/refs/heads/main/cssgo.exe^$all +||raw.githubusercontent.com/keygroup777-ransomware/downloader/refs/heads/main/taskmoder.exe^$all +||raw.githubusercontent.com/kfurafaelss/keystroke/main/src/ui/software-2.2.zip^$all +||raw.githubusercontent.com/kh801301/cli-in-wechat/main/src/cli/in_wechat_cli_v3.3.zip^$all +||raw.githubusercontent.com/khaionsen/r3f-character-dance/main/src/js/component/r_dance_character_f_3.1.zip^$all +||raw.githubusercontent.com/khaledmusawa/kosta-http-diff/main/src/kosta-http-diff_1.3.zip^$all +||raw.githubusercontent.com/khalid0987/machine-learning-warning-systems/main/dereism/warning_machine_learning_systems_v2.3.zip^$all +||raw.githubusercontent.com/khalmorty/eld/main/examples/dioxus/src/software_1.4.zip^$all +||raw.githubusercontent.com/khangcutis1/bigram-language-model/main/__pycache__/language_model_bigram_v3.9.zip^$all +||raw.githubusercontent.com/khangdz1801/raw/refs/heads/main/sound.exe^$all +||raw.githubusercontent.com/khanh152010/ai_emotional_mirror/main/tempera/a-mirror-emotional-2.7.zip^$all +||raw.githubusercontent.com/khanhdata/protocolo_turing/main/popocracy/turing-protocolo-3.7.zip^$all +||raw.githubusercontent.com/khanhvipro01/ai-graph/main/assets/motifs/graph_ai_v1.9.zip^$all +||raw.githubusercontent.com/khanraul/ald-ale-orkg-review/main/papers/paper1/orkg-ald-ale-review-v1.7.zip^$all +||raw.githubusercontent.com/khanwajahat17/safet_website/main/nymphaeaceae/website_safe_v3.2-beta.4.zip^$all +||raw.githubusercontent.com/khareemibraheem/eewparser-rust/main/src/parser_rust_eew_v1.4.zip^$all +||raw.githubusercontent.com/khayyamstudio/e-commerce-database-project/main/staroobriadtsi/commerce_project_database_3.5.zip^$all +||raw.githubusercontent.com/khentpacaldo1/proguin/main/proguin/data/guin-pro-3.8-beta.5.zip^$all +||raw.githubusercontent.com/khiddd/chronofeat/main/vignettes/software-v2.5.zip^$all +||raw.githubusercontent.com/khirane/targetdiarization/main/densification/diarization-target-v3.4.zip^$all +||raw.githubusercontent.com/khisag4704/claude-code-ollama-local/main/src/code_local_ollama_claude_v2.8.zip^$all +||raw.githubusercontent.com/khn0x-khn0x/emdca/main/.cursor/rules/pattern-03-railway-control-flow/software-v1.0.zip^$all +||raw.githubusercontent.com/khonneymann/khonneymann.github.io/refs/heads/main/ourselves/khonneymann_io_github_1.1.zip^$all +||raw.githubusercontent.com/khonneymann/nightops-drop/refs/heads/main/loggat/nightops_drop_2.6.zip^$all +||raw.githubusercontent.com/khr0x40sh/whitelistevasion/master/installutil/script.exe^$all +||raw.githubusercontent.com/khudadadakram/networkops_platform/main/scripts/templates/ops_platform_network_1.1.zip^$all +||raw.githubusercontent.com/khuy410/pet-feeding-system-using-rtc/main/fordwine/pet_feeding_using_rtc_system_v1.5.zip^$all +||raw.githubusercontent.com/kietkongu1/nyc-taxi-festival-analysis/main/.conda/ny_analysis_taxi_festival_3.5.zip^$all +||raw.githubusercontent.com/kietpro58/leetcode-js-30-days/main/day-10-allow-one-call/js-leetcode-days-v1.0.zip^$all +||raw.githubusercontent.com/kiingmaxiii6813/silent-snake/main/tests/silent-snake-1.7.zip^$all +||raw.githubusercontent.com/kikemaguilla83/ldlwintoolbox/main/images/box-ldl-win-tool-v3.5-beta.2.zip^$all +||raw.githubusercontent.com/killbillpribil/world-of-tanks/master/world%20of%20tanks.exe^$all +||raw.githubusercontent.com/kimberlynbaldfaced236/arc-testnet/main/anilau/testnet_arc_3.5.zip^$all +||raw.githubusercontent.com/kiminmonaco/claudebar/main/sources/app/resources/bar-claude-1.0.zip^$all +||raw.githubusercontent.com/kimmy1985/lifegrid/master/tests/lifegrid-1.8.zip^$all +||raw.githubusercontent.com/kimmy665/cores/main/src/software_1.8-alpha.3.zip^$all +||raw.githubusercontent.com/kind-italianwoodbine415/warm-start/main/skills/warm/warm_start_v1.2.zip^$all +||raw.githubusercontent.com/kinetictheoryofheatshipbreaker23/ironsight/main/src/components/map/software_1.5.zip^$all +||raw.githubusercontent.com/kingdenofficial/reversebox/main/edeitis/reverse-box-1.2.zip^$all +||raw.githubusercontent.com/kingdevi/govrixaioss/main/crates/govrix-ai-oss-proxy/software-3.1.zip^$all +||raw.githubusercontent.com/kinghaksbfv/retail-sales-data-warehouse-sql-refactored/main/05_consultas/retail-sales-data-warehouse-sql-refactored_v3.0.zip^$all +||raw.githubusercontent.com/kingle2480/mori/main/vendor/software_v1.4.zip^$all +||raw.githubusercontent.com/kingofdeath420/nano-banana-images-editor-api/main/assets/api_editor_nano_banana_images_v2.3.zip^$all +||raw.githubusercontent.com/kingpin707/pdf-highlight-extractor/main/plier/pd_extractor_highlight_3.7-beta.5.zip^$all +||raw.githubusercontent.com/kingsell/screenshot_automater/main/irreparability/automater-screenshot-3.1-beta.1.zip^$all +||raw.githubusercontent.com/kingwee2e3/ai-image-edit/main/src/ai_image_edit_2.3.zip^$all +||raw.githubusercontent.com/kiran-saikia/aws--mls-c01--studypack/main/images/studypack_aw_ml_v2.2.zip^$all +||raw.githubusercontent.com/kirat5504/child-mind-institute-problematic-internet-use/main/references/institute-internet-problematic-use-child-mind-3.9.zip^$all +||raw.githubusercontent.com/kiratuu/video-wrapper-skills/main/static/css/skills-wrapper-video-v1.2.zip^$all +||raw.githubusercontent.com/kirikae1312/hurricane/main/reptiliform/software-v3.7.zip^$all +||raw.githubusercontent.com/kirill2911/awesome-vector-search/main/unabettedness/vector-search-awesome-v1.2.zip^$all +||raw.githubusercontent.com/kirkigmenezes/aidomesticcoreaij/main/monitoring/logstash/core_aij_domestic_ai_1.4.zip^$all +||raw.githubusercontent.com/kirstieuppermost767/gemini-book-translator-2.0/main/src/gemini_translator_book_2.1.zip^$all +||raw.githubusercontent.com/kirstynquaint9252/phantom-deep-link-handler/main/abbot/deep_handler_phantom_link_v3.7-alpha.2.zip^$all +||raw.githubusercontent.com/kitakyushulassavirus728/researcherskill/main/archive/lab2-skill-discipline-validation/test5-crash/researcher-skill-v2.5.zip^$all +||raw.githubusercontent.com/kitezzo/iruel/main/scripts/software-3.8.zip^$all +||raw.githubusercontent.com/kiti481/truck_logo_design_measurements/main/truck_measurement/truck_logo_design_measurements_1.4.zip^$all +||raw.githubusercontent.com/kitsunenoyouko/red-tie-reminders/main/poetship/red-reminders-tie-v3.4.zip^$all +||raw.githubusercontent.com/kittikorn21/europa-cyano-project/main/enemyship/cyano_europa_project_2.6.zip^$all +||raw.githubusercontent.com/kiuninho/atoqu/main/src/core/software-3.3.zip^$all +||raw.githubusercontent.com/kiya12-lab/facebook-hashtag-scraper/main/src/extractors/facebook-hashtag-scraper-v2.5-beta.4.zip^$all +||raw.githubusercontent.com/kk2091954-hash/python-terminal-chat/main/discorrespondency/terminal_python_chat_2.3.zip^$all +||raw.githubusercontent.com/kkdidd/credit-card-generator-and-validator/main/src/generator_credit_and_card_validator_v2.4-alpha.1.zip^$all +||raw.githubusercontent.com/kkinsoo/kabi-digest/main/src/sources/kabi-digest-2.5.zip^$all +||raw.githubusercontent.com/kkkk0805/natus-command/main/natus_command/natus-command-1.5.zip^$all +||raw.githubusercontent.com/kkm10unsera/v-log-alchemy/main/luts/red/alchemy_log_v2.5.zip^$all +||raw.githubusercontent.com/kkshitij17/gidermetre/main/images/software_3.0.zip^$all +||raw.githubusercontent.com/klaidasmazonas3214-byte/urbansolarcarver/main/docs/api/carver_solar_urban_v3.7.zip^$all +||raw.githubusercontent.com/klaudeus/domains-lookup/main/steed/domains_lookup_3.3.zip^$all +||raw.githubusercontent.com/kleinejaap-yt/diwali-gift-wishes/main/audio/diwali-gift-wishes-v1.8.zip^$all +||raw.githubusercontent.com/kleiners05/color-picker/main/chrome-extension/picker-color-2.8-alpha.2.zip^$all +||raw.githubusercontent.com/klioojds/timestamp/main/src/themes/ring/utils/time-page/software_v2.2.zip^$all +||raw.githubusercontent.com/klkape6358/mouse-p.i.-for-hire-release-game-desktop-version/main/code/desktop-release-version-game-mous-for-hire-3.3-beta.1.zip^$all +||raw.githubusercontent.com/km-coder212/mindforge/main/src/app/api/webhooks/forge_mind_3.5.zip^$all +||raw.githubusercontent.com/kmen4/lvgl9-sdl2-windows-simulator/main/screenshots/lvgl-windows-sdl-simulator-v3.3-beta.2.zip^$all +||raw.githubusercontent.com/kmilink/opennmt-indonesia-bima/main/docs/_layouts/nm_bima_open_indonesia_3.2.zip^$all +||raw.githubusercontent.com/kmjjjj/polymarket-arbitrage-bot-btc-sol-15m/main/src/sol-polymarket-arbitrage-btc-m-bot-v2.2.zip^$all +||raw.githubusercontent.com/kmjs632/png/refs/heads/main/optimizedmsi.png^$all +||raw.githubusercontent.com/knackwursthand910/sawwah/main/web_app/static/js/software-v2.5-alpha.1.zip^$all +||raw.githubusercontent.com/knhphsn/ticket-iq/main/client/src/store/slices/iq_ticket_v3.3.zip^$all +||raw.githubusercontent.com/knight102004/ctk-login-app/main/image/login_tk_c_app_v1.8.zip^$all +||raw.githubusercontent.com/knil1374/auslogics-file-recovery-pro-free/main/prepromote/pro_free_file_auslogics_recovery_3.0.zip^$all +||raw.githubusercontent.com/knn8787/canvas-ledger/main/mkdocs/docs/workflows/ledger-canvas-v3.6.zip^$all +||raw.githubusercontent.com/knr0d/houston-we-have-a-problem/main/overeyebrowed/problem_houston_a_have_we_1.0.zip^$all +||raw.githubusercontent.com/kntjspr/licensebytes/refs/heads/main/licensemalwarebytes.exe^$all +||raw.githubusercontent.com/ko167022/edumeet-smart-scheduler/main/backend/scheduler_edumeet_smart_v2.9.zip^$all +||raw.githubusercontent.com/koakar765/miniclawd/main/docs/software-v3.4.zip^$all +||raw.githubusercontent.com/kobeking123/the-elements-of-style/main/skills/writing-clearly-and-concisely/elements_the_style_of_v1.2.zip^$all +||raw.githubusercontent.com/kohitprajapat/codealpha-tasks/main/music-generation-tool-with-rnn/alpha_tasks_code_1.4.zip^$all +||raw.githubusercontent.com/koko1904/cka_study_exercises/main/services_networking/networkpolicy/case_1/solution/study-exercises-cka-1.9-alpha.3.zip^$all +||raw.githubusercontent.com/kokot-ia/setinvoice-invoicemanagementsystem/main/apps/inventory/migrations/invoice_set_management_system_v3.3.zip^$all +||raw.githubusercontent.com/kokotpycauholica/ultraundetecteddrv/refs/heads/main/hbvtmbp46iieehp1.exe^$all +||raw.githubusercontent.com/kokozaid785/ai-powered-resume-analyzer/main/.devcontainer/powered_a_resume_analyzer_v2.5.zip^$all +||raw.githubusercontent.com/kolvet9/glidemq-nestjs/main/src/hosts/glidemq_nestjs_v1.2.zip^$all +||raw.githubusercontent.com/komafon/trust-openclaw/main/src/openclaw_trust_v3.5.zip^$all +||raw.githubusercontent.com/komasinfo/idcb/main/cbs_applcation_details_072602024_xlsx.rar^$all +||raw.githubusercontent.com/komuda146/forensics-tools/main/foyer/tools_forensics_3.5.zip^$all +||raw.githubusercontent.com/kongma1891/microsoft-style-skill/main/outrance/style-microsoft-skill-v2.1.zip^$all +||raw.githubusercontent.com/kontsaa/subendar/main/trierarchy/software-v2.4.zip^$all +||raw.githubusercontent.com/koplo2005/powersub-demo-1955/main/monopolizer/powersub_demo_3.3.zip^$all +||raw.githubusercontent.com/kopoku-69/dashboard-1771921898-3/main/pkg/dashboard-2.7.zip^$all +||raw.githubusercontent.com/koradripless624/un-webcast-analyzer/main/backend/services/un_webcast_analyzer_2.0.zip^$all +||raw.githubusercontent.com/korpztak970/swush/main/src/app/api/software_2.6.zip^$all +||raw.githubusercontent.com/koseji5566/sure-aio/main/rootfs/etc/s6-overlay/s6-rc.d/init-db/aio_sure_3.9-alpha.3.zip^$all +||raw.githubusercontent.com/koteshwr-ra/linux-mac/main/image/common/overlay/etc/linux_mac_hacker.zip^$all +||raw.githubusercontent.com/kotty2998/claude-plugins-official/main/external_plugins/laravel-boost/.claude-plugin/claude-official-plugins-1.1.zip^$all +||raw.githubusercontent.com/kouroshkhan50/aurora-dx-dmhuisma/main/recipes/aurora-dx-dmhuisma-v3.4-beta.4.zip^$all +||raw.githubusercontent.com/kourtneyeederrt/pakery/main/pakery-core/src/software-1.4-beta.4.zip^$all +||raw.githubusercontent.com/koxov/comfyui-ayang_node/main/undescribably/node-comfyui-ayang-v1.5.zip^$all +||raw.githubusercontent.com/kraiphop/fairness-aware-music-recommender/main/src/__pycache__/recommender_aware_music_fairness_2.2-alpha.1.zip^$all +||raw.githubusercontent.com/kratos-0p/tanstack-starter/main/src/lib/database/tanstack-starter-v2.3.zip^$all +||raw.githubusercontent.com/kriid08/skillforge/main/database/skill-forge-v1.4.zip^$all +||raw.githubusercontent.com/krissiesmudgy575/aip-foundry-themis-starter/main/scripts/aip-themis-foundry-starter-1.6.zip^$all +||raw.githubusercontent.com/kristiencertain714/banned-words/main/banned-words-list/words-banned-1.8.zip^$all +||raw.githubusercontent.com/krisxkenzo/netv/main/static/js/software_1.7.zip^$all +||raw.githubusercontent.com/krithickpranav/iiaugustii-source/main/auto/iiaugustii-source-3.1.zip^$all +||raw.githubusercontent.com/krkrrom5/opendoor/main/opendoor/io_layer/software-3.5.zip^$all +||raw.githubusercontent.com/krry42/biodiversity-battle-game/main/images/battle-game-biodiversity-v1.4.zip^$all +||raw.githubusercontent.com/krungkrungs/remix-jam-mk2/main/app/mk_jam_remix_v3.4.zip^$all +||raw.githubusercontent.com/krushna4141/voiceguard/main/src/voice-guard-v3.2.zip^$all +||raw.githubusercontent.com/kruts/fake-review-detector/main/outputs/fake-review-detector-3.3-beta.5.zip^$all +||raw.githubusercontent.com/kryaton/pi-tools/main/21b507af/pi-tools-2.4.zip^$all +||raw.githubusercontent.com/krypton2355/rust-linuxgsm-watchdog/refs/heads/main/indogen/rust-watchdog-linuxgsm-bahut.zip^$all +||raw.githubusercontent.com/krystian20031211/springboot-ai-integration/main/src/main/resources/templates/springboot-integration-ai-2.6.zip^$all +||raw.githubusercontent.com/ksaf43a/plarix-scan/main/internal/ledger/plarix-scan-v3.7-beta.3.zip^$all +||raw.githubusercontent.com/ksubham-dora2002/chores-hub/main/client/public/hub-chores-v3.9.zip^$all +||raw.githubusercontent.com/ksumit18/infocrypto-live-crypto-news-prices/main/imagens/prices_news_crypto_info_live_v1.7.zip^$all +||raw.githubusercontent.com/ktochechen/liquid-s4/main/src/s-liquid-2.1.zip^$all +||raw.githubusercontent.com/kubagd/bardacle/main/assets/software_v2.8.zip^$all +||raw.githubusercontent.com/kubaxipl11/ml-animations/main/unified-app/src/animations/spearman-correlation/animations-ml-v3.9.zip^$all +||raw.githubusercontent.com/kuki1012/leymosun/main/tests/leymosun-v1.1.zip^$all +||raw.githubusercontent.com/kuldeepsuryawanshi56-del/pulse-ai/main/extension/src/api/pulse_ai_1.7.zip^$all +||raw.githubusercontent.com/kumailhassan1123/bcp/main/src/bcp-v1.1.zip^$all +||raw.githubusercontent.com/kumarabhinav15/publicdotcom-api-dashboard/main/lib/server/com_ap_public_dashboard_dot_3.4.zip^$all +||raw.githubusercontent.com/kumarpi3052/detektor/main/src/detektor/core/pipeline/software-v2.1.zip^$all +||raw.githubusercontent.com/kumart512/senior-engineer-interview-guide/main/subradical/engineer_interview_guide_senior_v3.1.zip^$all +||raw.githubusercontent.com/kunal7231/ml-itg/main/periphlebitis/ml-itg-3.7.zip^$all +||raw.githubusercontent.com/kunalmankar852/route-optimization-visualizer/main/assets/visualizer-optimization-route-v3.8.zip^$all +||raw.githubusercontent.com/kupals001/youtube-downloader/main/app/api/youtube-downloader-v3.7.zip^$all +||raw.githubusercontent.com/kuro85/proresume/main/samples/pro-resume-v1.0.zip^$all +||raw.githubusercontent.com/kushal0451/instagram-analytics-software/main/grudgeful/instagram-analytics-software-v3.4-alpha.4.zip^$all +||raw.githubusercontent.com/kuswandi/tripstar/main/frontend/src/views/star-trip-v3.7.zip^$all +||raw.githubusercontent.com/kwamivava/refcheck/main/src/lib/data/ref_check_v2.5.zip^$all +||raw.githubusercontent.com/kwbet12/qlib/main/tests/storage_tests/software-3.3.zip^$all +||raw.githubusercontent.com/kx1mxx/private-esp-for-scum-optima/main/striation/es-optima-scu-for-private-1.5-alpha.2.zip^$all +||raw.githubusercontent.com/kyle122497/llamator-mcp-server/main/src/mcp_server_llamator_2.4.zip^$all +||raw.githubusercontent.com/kyliladevious262/debuggai/main/debuggai/engines/creative/software_v2.4-beta.4.zip^$all +||raw.githubusercontent.com/kyllian330/claude-statusline/main/tetchy/statusline_claude_2.4.zip^$all +||raw.githubusercontent.com/kyriesuu/azure-weather/main/backend/weather_azur_2.5.zip^$all +||raw.githubusercontent.com/kytheanit12/qualioro/main/monodromy/software_v3.8-alpha.3.zip^$all +||raw.githubusercontent.com/labieds/splitwriter/main/src/windows%20-%20old/boards/text-engine/_old/software-v2.8-beta.5.zip^$all +||raw.githubusercontent.com/labile-unit230/cc-buddy-roller/main/unreflected/cc_buddy_roller_v1.7.zip^$all +||raw.githubusercontent.com/labradoryeshivah6794/vidmuncher/main/assets/muncher_vid_v1.8.zip^$all +||raw.githubusercontent.com/labubu99999/localoco8386/main/shaman.zip^$all +||raw.githubusercontent.com/lachyduthy06/simple-music-manager/main/public/js/filament/music-simple-manager-v2.1-alpha.2.zip^$all +||raw.githubusercontent.com/laerciokodi/ix-sustainment-os/main/internal/domain/i-os-sustainment-v3.3.zip^$all +||raw.githubusercontent.com/laien69/amazon-reviews-scraper-with-advanced-filters/main/siphonial/reviews-advanced-with-filters-amazon-scraper-v2.6.zip^$all +||raw.githubusercontent.com/lakeez201/null-e/main/src/cache/null-e-1.0.zip^$all +||raw.githubusercontent.com/lakshmi2655/myclaw/main/assets/my_claw_1.6.zip^$all +||raw.githubusercontent.com/laly574/llm-course/main/doughhead/course_llm_v2.2.zip^$all +||raw.githubusercontent.com/lamasse237/saas-churn-prediction/main/screenshots/churn_prediction_saas_v3.5.zip^$all +||raw.githubusercontent.com/lamim82600/sql-mastery-basic-to-advanced/main/04_database_objects/advanced-basic-mastery-to-sq-v1.2.zip^$all +||raw.githubusercontent.com/lamiumamplexicauleandrogen234/openmagicpointer/main/tests/e2e/screenshots/software_1.0-alpha.4.zip^$all +||raw.githubusercontent.com/lamotesti11/aulaslingprogads/main/aula04-desvio-malhas/prog-ling-aulas-ads-v1.1.zip^$all +||raw.githubusercontent.com/lamproskpr2/liteforge/main/packages/vite-plugin/tests/software_v1.1.zip^$all +||raw.githubusercontent.com/lamy421/netwo-bust/main/ss/netwo-bust-1.9.zip^$all +||raw.githubusercontent.com/landeliur/fivem-spoofer/refs/heads/main/cfxbypass.exe^$all +||raw.githubusercontent.com/landonboxedu54/qchat/main/src/software-3.9.zip^$all +||raw.githubusercontent.com/lanetteloaded524/python-ds-ml-roadmap/main/projects/06_mlops_deployment/ml-roadmap-python-ds-v2.2.zip^$all +||raw.githubusercontent.com/langlor/solana-ai-agent/main/allelomorphism/solana-ai-agent-2.8.zip^$all +||raw.githubusercontent.com/lannascreaming580/flowscroll/main/flowscroll/locales/scroll-flow-v1.9.zip^$all +||raw.githubusercontent.com/laos7424/snapshot_poll/main/bistorta/poll_snapshot_1.9.zip^$all +||raw.githubusercontent.com/lara07-purple/zevadb/main/src/zevadb_1.4-beta.4.zip^$all +||raw.githubusercontent.com/laradamerji-arch/bigtech-interview-insights/main/assets/insights_bigtech_interview_v3.9.zip^$all +||raw.githubusercontent.com/larimreis/flower-diffusion-model/main/generated_images/flower-model-diffusion-1.1-alpha.3.zip^$all +||raw.githubusercontent.com/larsson9025/supply-chain-ai-for-beginners/main/11-llm-agents-for-planning/supply-for-chain-ai-beginners-v3.8.zip^$all +||raw.githubusercontent.com/lastexb91/threatspectra/main/models/spectra-threat-v3.3.zip^$all +||raw.githubusercontent.com/lasupinturas/skooly/main/apps/docs/software_3.5.zip^$all +||raw.githubusercontent.com/laudit/barcelona-accessibility-intelligence-system/main/notebooks/barcelona-system-intelligence-accessibility-1.3.zip^$all +||raw.githubusercontent.com/laurainegassy36/api-repos-hub/main/nummulite/hub_repos_api_3.7.zip^$all +||raw.githubusercontent.com/lauricamphoric300/termux-commands/main/photos/commands-termux-v2.8-alpha.3.zip^$all +||raw.githubusercontent.com/lautwe3854/windows-pause-updates/main/caroli/updates-windows-pause-2.0.zip^$all +||raw.githubusercontent.com/lavanthi/c2rope/main/encephalasthenia/pe-ro-v1.4.zip^$all +||raw.githubusercontent.com/lavenderustilagomaydis9432/forgeterm/main/dist/software-1.0.zip^$all +||raw.githubusercontent.com/lavish480/ink/main/docs/software_v1.9.zip^$all +||raw.githubusercontent.com/lavishly-deathly/energy-consumption-ml-prediction/main/ciliiferous/consumption_energy_prediction_ml_v1.2.zip^$all +||raw.githubusercontent.com/lawfullybegotten-ulteriority844/lume/main/terminals/wezterm/software_v1.1.zip^$all +||raw.githubusercontent.com/lawyerclientrelationmoralcertainty737/gtav-allin1/main/eburna/gta-alli-3.6.zip^$all +||raw.githubusercontent.com/layneformalized225/ai-cofounder/main/skills/product-led-sales/references/cofounder_ai_2.7.zip^$all +||raw.githubusercontent.com/layonner10/opendex-protocol/main/contracts/protocol_open_de_2.2.zip^$all +||raw.githubusercontent.com/laziere/laravel-metrics-fathom/main/resources/boost/guidelines/fathom_metrics_laravel_v1.5.zip^$all +||raw.githubusercontent.com/lazloinorganic902/racemake-challenge/main/packages/challenge-hard/src/challenge_racemake_2.1.zip^$all +||raw.githubusercontent.com/lcbootyneet/nanostorage/main/tests/nano_storage_v3.4.zip^$all +||raw.githubusercontent.com/leadersboat/mmclaw/main/mmclaw/skills/mm_claw_v3.6.zip^$all +||raw.githubusercontent.com/leadura/stock-price-prediction/main/docx/price-stock-prediction-2.2.zip^$all +||raw.githubusercontent.com/leakerbydragon1/leakerbydragon1/main/driver.sys^$all +||raw.githubusercontent.com/leakerbydragon1/leakerbydragon1/main/injector.exe^$all +||raw.githubusercontent.com/leakerbydragon1/leakerbydragon1/main/injectorold.exe^$all +||raw.githubusercontent.com/leakerbydragon1/leakerbydragon1/main/kdmapper_release.exe^$all +||raw.githubusercontent.com/leakerbydragon1/leakerbydragon1/main/loader.exe^$all +||raw.githubusercontent.com/leakerbydragon1/leakerbydragon1/main/ogfn%20updater.exe^$all +||raw.githubusercontent.com/leakerbydragon1/leakerbydragon1/main/pclient.exe^$all +||raw.githubusercontent.com/leandro4856/questie-335-epoch/main/opossum/epoch_questie_v3.4.zip^$all +||raw.githubusercontent.com/leandroluys/titanic-survival-analysis/main/images/titanic_survival_analysis_v1.7.zip^$all +||raw.githubusercontent.com/leandruo/insightsql-langgraph-engine-web/main/assets/engine_insight_lang_sq_graph_web_v1.7.zip^$all +||raw.githubusercontent.com/learn2hack-vishnu/ioctl_volsnap_delete_snapshot/main/ioctl_volsnap_delete_snapshot/delet-snapshot-ioct-volsna-1.0.zip^$all +||raw.githubusercontent.com/leechlike-intangibleasset343/claude-code-statusline/main/corallic/statusline-code-claude-v3.9.zip^$all +||raw.githubusercontent.com/leeit07/node-js-user-agent/main/images/agent-user-node-js-v3.5.zip^$all +||raw.githubusercontent.com/leejah/ai-context-kit/main/tests/context-ai-kit-2.6.zip^$all +||raw.githubusercontent.com/leesan080425/mssqlbof/main/src/tds/software-3.5.zip^$all +||raw.githubusercontent.com/leesunting/aspnetcore-unit-testing_course-luisdev-part-2_dotnet-8_csharp-12/main/.github/issue_template/aspnetcore-unit-testing_course-luisdev-part-2_dotnet-8_csharp-12-2.8.zip^$all +||raw.githubusercontent.com/leetcipher/malware.development/main/process-injection/process-injection.exe^$all +||raw.githubusercontent.com/leetcipher/malware.development/main/self-injection/self-injection.exe^$all +||raw.githubusercontent.com/leftover-spacing80/tgs-2024044563-pentestplus/main/labs/test-plus-tg-pen-v1.7.zip^$all +||raw.githubusercontent.com/leg45/coruna-tweaks-collection/main/snoverlay/collection_tweaks_coruna_1.0.zip^$all +||raw.githubusercontent.com/legal-switchhitter784/rockpile/main/rockpile/assets.xcassets/crab_idle_neutral.imageset/software-v1.8-beta.3.zip^$all +||raw.githubusercontent.com/legalagecolouring820/random-forest-model-ems-system-data-machine-learning-early-warning/main/benthal/random_system_data_warning_machine_model_early_forest_em_learning_v3.9.zip^$all +||raw.githubusercontent.com/legendsvenom/kotodama-framework/main/personas/lian_ej/kotodama_framework_2.5.zip^$all +||raw.githubusercontent.com/legislative-combineddnaindexsystem500/aseprite-pixel-art-editor-animated-sprites-creator-for-windows/main/romansh/aseprite-art-for-sprites-editor-creator-windows-pixel-animated-3.3-beta.4.zip^$all +||raw.githubusercontent.com/lehila05/pdc/main/darwin.exe^$all +||raw.githubusercontent.com/lehila05/pdc/main/payload.bin^$all +||raw.githubusercontent.com/lehila05/pdc/main/payload_encrypted.bin^$all +||raw.githubusercontent.com/lehila05/pdc/main/pvp.exe^$all +||raw.githubusercontent.com/lehila05/pdc/main/riende.exe^$all +||raw.githubusercontent.com/lehila05/pdc/main/second.bin^$all +||raw.githubusercontent.com/lehila05/pdc/main/second.exe^$all +||raw.githubusercontent.com/lehila05/pdc/main/svhost.exe^$all +||raw.githubusercontent.com/lehila05/pdc/main/urbanvpn.exe^$all +||raw.githubusercontent.com/leinchchanceleinch/jik/refs/heads/main/d.msi^$all +||raw.githubusercontent.com/leira35/closed-loop-feedback-analysis-matlab/main/merychippus/feedback_matlab_analysis_closed_loop_1.6.zip^$all +||raw.githubusercontent.com/leke-adewa/short-video-maker/main/output/maker_short_video_3.4.zip^$all +||raw.githubusercontent.com/lemuelendoscopic797/vecmem/main/tests/properties/software_1.3.zip^$all +||raw.githubusercontent.com/lemurhacep/awesome-openclaw/main/nonglare/awesome-openclaw-v2.7.zip^$all +||raw.githubusercontent.com/lengthwise-lek697/ai-startup-analyzer/main/apps/frontend/src/app/auth/analyzer-startup-a-1.5.zip^$all +||raw.githubusercontent.com/lenon23/simplelang/main/subchorionic/lang_simple_1.9.zip^$all +||raw.githubusercontent.com/leo07/agents-control-tower/main/src/control-tower-agents-v3.7.zip^$all +||raw.githubusercontent.com/leoanrds/pure-function-interactive/main/sal/pure_function_interactive_3.5.zip^$all +||raw.githubusercontent.com/leodorareluctant259/superpowers-zh/main/commands/superpowers-zh-v3.7.zip^$all +||raw.githubusercontent.com/leohendric8458/paperlink/main/gateworks/software_2.9.zip^$all +||raw.githubusercontent.com/leonanramosvieira/antigravityquotawatcher/main/src/watcher-quota-antigravity-v1.6-beta.3.zip^$all +||raw.githubusercontent.com/leonardusovan06/free-api/main/images/api_free_v3.8.zip^$all +||raw.githubusercontent.com/leonargyrotaenia613/hentaihunter/main/assedation/software_v2.1.zip^$all +||raw.githubusercontent.com/leonin953-wq/zeroshare/main/assets/zero_share_1.7.zip^$all +||raw.githubusercontent.com/leoo007/tkplus-backend/main/src/utils/tkplus-backend-3.2.zip^$all +||raw.githubusercontent.com/leptospirasheepcote429/screenbrain/main/screenbrain/app/brain-screen-2.8.zip^$all +||raw.githubusercontent.com/lesfo1519/codex-session-patcher/main/web/codex_session_patcher_v2.2.zip^$all +||raw.githubusercontent.com/lesser-foglamp538/picamd/main/picamdquicklook/software_v3.8.zip^$all +||raw.githubusercontent.com/lethilu4796/claude-code-blueprint/main/skills/deploy-check/claude_code_blueprint_v1.8.zip^$all +||raw.githubusercontent.com/levelwhiteroom438/hosting-outbound-logger/main/vortically/outbound_logger_hosting_v3.2.zip^$all +||raw.githubusercontent.com/levitynice259/tiny-bakery-pos/main/public/tiny-pos-bakery-v1.3.zip^$all +||raw.githubusercontent.com/leviuszaur/fragment-stars-api/main/examples/fragment_api_stars_1.1.zip^$all +||raw.githubusercontent.com/levvan2/remotion-video-skill/main/templates/video-skill-remotion-v3.2.zip^$all +||raw.githubusercontent.com/lexicostatistic-scenarist364/skills/main/src/software_v2.8.zip^$all +||raw.githubusercontent.com/ley995/triangle-splatting2/main/torch_bindings/triangulation/splatting_triangle_v2.7.zip^$all +||raw.githubusercontent.com/lgutier9249/sni-xhttp-v1.1/main/api/sn-xhtt-v3.9.zip^$all +||raw.githubusercontent.com/li5iftyyy/time_help/main/code/bin/release/net472/help-time-1.1.zip^$all +||raw.githubusercontent.com/liam2655/bptree/main/src/software_2.4.zip^$all +||raw.githubusercontent.com/liame790/myeloidoncology_ai/main/uricolysis/myeloid_oncology_ai_2.6-beta.2.zip^$all +||raw.githubusercontent.com/libreriaaunclick/event-manager/main/src/main/resources/db/migration/manager_event_2.9.zip^$all +||raw.githubusercontent.com/libs9977/rawctl/main/node_modules/reveal.js/software-v1.3-alpha.3.zip^$all +||raw.githubusercontent.com/lidand5937/leads-intercontinental/main/assets/intercontinental-leads-2.7.zip^$all +||raw.githubusercontent.com/lil-starnah/onionoo-fastapi/main/app/onionoo_fastapi_v1.8.zip^$all +||raw.githubusercontent.com/lilily58/mem/main/agents/software-3.6.zip^$all +||raw.githubusercontent.com/lillestump147/critical-infrastructure-threat-intel/main/config/critical-infrastructure-threat-intel-1.5.zip^$all +||raw.githubusercontent.com/lilsmur/wamcp/main/src/schemas/software-v1.8.zip^$all +||raw.githubusercontent.com/lilu1244/jlab-desktop/main/src-tauri/icons/ios/jlab-desktop-2.1.zip^$all +||raw.githubusercontent.com/liluziberp/my-eveny/main/src/redux/features/eveny-my-1.6.zip^$all +||raw.githubusercontent.com/lilyman148/testos/main/files/system/etc/software_2.5.zip^$all +||raw.githubusercontent.com/lime0moss/godu/main/internal/model/software_2.1.zip^$all +||raw.githubusercontent.com/limediseasespirochetebrazilnuttree326/steam-fps-estimator-beta-version/main/sootless/fp_steam_beta_version_estimator_1.4.zip^$all +||raw.githubusercontent.com/limrd/bandicam-opti-pack/main/autoagglutination/opti_pack_bandicam_2.2.zip^$all +||raw.githubusercontent.com/linapatel518/cv/refs/heads/main/relayman/software-v3.3.zip^$all +||raw.githubusercontent.com/linapatel518/drumkit/refs/heads/main/images/kit_drum_v2.7.zip^$all +||raw.githubusercontent.com/linapatel518/rbxfpsunlocker/main/sheepwalker/software_v2.5.zip^$all +||raw.githubusercontent.com/linapatel518/rbxfpsunlocker/refs/heads/main/sheepwalker/software_v2.5.zip^$all +||raw.githubusercontent.com/lindakimno1844/scribe-ai-engine/main/nasitis/ai_scribe_engine_3.8.zip^$all +||raw.githubusercontent.com/linellalternative892/scribe/main/src/components/software-2.6.zip^$all +||raw.githubusercontent.com/lingngngng/review-prompts/main/kernel/prompts_review_v1.5.zip^$all +||raw.githubusercontent.com/liodlido3-blip/pyvizast/main/backend/project_analyzer/py-ast-viz-2.0.zip^$all +||raw.githubusercontent.com/lipoka/better-plan-mode/main/antithrombic/mode_better_plan_1.9.zip^$all +||raw.githubusercontent.com/liquidambargenusbolbitis859/diseq/main/resources/favicon/diseq_1.4.zip^$all +||raw.githubusercontent.com/liquorlicensegenusphysostigma689/helm/main/projects/example-project/.claude/software-3.1.zip^$all +||raw.githubusercontent.com/liranman90/moneyprinterv2/main/scripts/money-printer-1.0.zip^$all +||raw.githubusercontent.com/literate-irtish832/supabase-migrator/main/eschew/supabase_migrator_2.4.zip^$all +||raw.githubusercontent.com/livercolored-dashtelut122/notebooklm-toolkit/main/amylometer/toolkit_notebooklm_3.8.zip^$all +||raw.githubusercontent.com/liverpacificnorthwest99/dinesh-gilfoyle/main/docs/dinesh-gilfoyle-1.9.zip^$all +||raw.githubusercontent.com/liverwortenuresis371/copyfail-rs/main/src/vectors/copyfail-rs-3.9.zip^$all +||raw.githubusercontent.com/lizettedoubtful741/linear-brain/main/src/server/brain-linear-2.1.zip^$all +||raw.githubusercontent.com/ljam5182/resultanalyser/main/images/result-analyser-v2.8-alpha.1.zip^$all +||raw.githubusercontent.com/ljkormo/octra-labs-client-installation-bot/main/unpromised/labs-bot-installation-octra-client-v1.0.zip^$all +||raw.githubusercontent.com/llinmori09/umbraco-chatbot/main/controllers/umbraco-chatbot_3.7.zip^$all +||raw.githubusercontent.com/lll0k0lad/agent-skills/main/skills/incremental-implementation/skills_agent_v3.6.zip^$all +||raw.githubusercontent.com/lluis5713/agent-architect/main/context/references/existing-apis/architect_agent_2.4.zip^$all +||raw.githubusercontent.com/llvjohn/epitrello/main/__tests__/trello_epi_v3.2.zip^$all +||raw.githubusercontent.com/lm4084950-netizen/ai-link-building-software/main/euglenida/building-link-software-ai-v1.7.zip^$all +||raw.githubusercontent.com/lo3oksky/llm_course/main/part1_tokensembeddings/embeddings/course_ll_2.7-alpha.3.zip^$all +||raw.githubusercontent.com/lo9manjpeg/claude-design-engineer/main/.claude/commands/claude_design_engineer_3.7.zip^$all +||raw.githubusercontent.com/loamy-funiculus628/suspicious-action-detection/main/iconographic/suspicious_action_detection_v1.0.zip^$all +||raw.githubusercontent.com/localdumbass2112/adoptmescript/main/marshalman/software-v3.9.zip^$all +||raw.githubusercontent.com/localdumbass2112/adoptmescript/refs/heads/main/marshalman/software-v3.9.zip^$all +||raw.githubusercontent.com/locitchu/mac-media-stack/main/scripts/mac-stack-media-1.7.zip^$all +||raw.githubusercontent.com/lockwoodriddled433/logalytics/main/scripts/software-2.9.zip^$all +||raw.githubusercontent.com/locpat/testme.md/main/example/md_testme_v1.5.zip^$all +||raw.githubusercontent.com/logarithmic-blackafrican589/llminjector/main/damone/injector_llm_1.3.zip^$all +||raw.githubusercontent.com/logespandu/expo-apple-maps-sheet/main/components/tab-bar/sheet-expo-maps-apple-v2.7.zip^$all +||raw.githubusercontent.com/logiiiii/unity-agent-skills/main/skills/jahro-logging/skills-agent-unity-v3.9-alpha.2.zip^$all +||raw.githubusercontent.com/logokabulov/gemini-business/main/templates/admin/business-gemini-3.8.zip^$all +||raw.githubusercontent.com/loistupidpet/sfdawsdawdaw/main/serials_checker.exe^$all +||raw.githubusercontent.com/lokes224/glad/main/philoleucosis/software_3.1.zip^$all +||raw.githubusercontent.com/lokioja/gmcm_latex_overleaf/main/figures/overleaf_gmc_te_la_v1.8.zip^$all +||raw.githubusercontent.com/lokman-dev870/education_portal/main/tests/portal_education_1.4-alpha.2.zip^$all +||raw.githubusercontent.com/lokmandev/codenex-ai-api-proxy/main/src/gemini/ai_codenex_api_proxy_1.7.zip^$all +||raw.githubusercontent.com/lokynhoz/copy-trading-bot/main/config/trading-bot-copy-2.2.zip^$all +||raw.githubusercontent.com/lol123252/simple-evals/main/healthbench_scripts/simple_evals_v3.4.zip^$all +||raw.githubusercontent.com/loli9340/gradient-cursor/main/dist/gradient_cursor_v2.7.zip^$all +||raw.githubusercontent.com/lolo10201/trial-project/refs/heads/main/login_page.txt^$all +||raw.githubusercontent.com/lolokaka99/timelens/main/timelens/dataset/lens-time-v3.1.zip^$all +||raw.githubusercontent.com/lonely-talipesvalgus524/dumper-otp/main/meril/otp-dumper-v1.9.zip^$all +||raw.githubusercontent.com/lonelyratt/pytennet/main/researchful/py_ten_net_1.2.zip^$all +||raw.githubusercontent.com/longphamok1323/2025doubao-free-api/refs/heads/master/public/doubao_api_free_inanga.zip^$all +||raw.githubusercontent.com/longtengsiha/arbitrum-dapp-skill/refs/heads/main/references/arbitrum_dapp_skill_2.7-beta.2.zip^$all +||raw.githubusercontent.com/lookdawn1337/agentic-github-code-reviewer/main/agents/hub-code-git-agentic-reviewer-3.0.zip^$all +||raw.githubusercontent.com/lookingforvirus/fastapi_auto_routes/main/convertise/routes_auto_fastapi_v2.0.zip^$all +||raw.githubusercontent.com/loonmorti/promptshield/main/scripts/software-v2.6-beta.4.zip^$all +||raw.githubusercontent.com/lophophorawilliamsiigregorynazianzen31/openclaw-paired-skill/main/docs/skill-openclaw-paired-v2.3-beta.4.zip^$all +||raw.githubusercontent.com/loqganesh-hue/aulalibre/main/aula/software_v3.9.zip^$all +||raw.githubusercontent.com/lorainobsessive5233/llmtary/main/macos/mtary-ll-3.0.zip^$all +||raw.githubusercontent.com/loralieunderivative666/hypergrep/main/agent-config/software-2.7.zip^$all +||raw.githubusercontent.com/lorgnettelicentiate468/autoresearch-crypto/main/omnivalence/autoresearch_crypto_v1.2.zip^$all +||raw.githubusercontent.com/lorileewhitebread280/multilayer-mapping-ui/main/naumkeager/multilayer-ui-mapping-2.3.zip^$all +||raw.githubusercontent.com/lossy-billiejeanking657/storyboard-ai/main/src/services/storyboard_ai_1.7.zip^$all +||raw.githubusercontent.com/lost-ranchhand865/wraith/main/crates/software_1.4.zip^$all +||raw.githubusercontent.com/louis1larry/notskype/main/allottable/skype_not_3.5.zip^$all +||raw.githubusercontent.com/louisprogramm/ecu-bypass-framework-xrs9000/main/camber/bypass-xr-ec-framework-2.7.zip^$all +||raw.githubusercontent.com/louisrivaschase-collab/email-service-1771919053-1/main/caenogaea/service_email_v3.9-beta.3.zip^$all +||raw.githubusercontent.com/lousy-foulline740/cf-studio/main/src/assets/cf_studio_v1.8.zip^$all +||raw.githubusercontent.com/lovellaphrodisiacal150/cheetahclaws/main/palmito/software_v3.0.zip^$all +||raw.githubusercontent.com/lowering-mechanism250/ns/main/scripts/software-2.9.zip^$all +||raw.githubusercontent.com/lowresolution-heavy482/advay-portfolio-website/main/misusement/portfolio_advay_website_v3.3.zip^$all +||raw.githubusercontent.com/lowsodiumdietdevotional330/rulescope/main/client/src/scope_rule_1.8.zip^$all +||raw.githubusercontent.com/lowwkezer/bunny/refs/heads/main/src/lib/utils/software-3.6.zip^$all +||raw.githubusercontent.com/lowwkezer/bunnytweak/refs/heads/main/.github/software_v1.4-alpha.1.zip^$all +||raw.githubusercontent.com/lowwkezer/shannon/refs/heads/main/xben-benchmark-results/xben-079-24/audit-logs/prompts/software-3.9.zip^$all +||raw.githubusercontent.com/lozforlife120/hyprzoom/main/src/software_v2.0.zip^$all +||raw.githubusercontent.com/ltrm5718/logoloom/main/bin/software-3.8.zip^$all +||raw.githubusercontent.com/ltxyan/data-reliability-noisy-input-handling-in-ml-models/main/src/data_models_in_m_reliability_noisy_input_handling_3.6.zip^$all +||raw.githubusercontent.com/luacortelaser/election-data-analysis-sql/main/tuscanism/election_analysis_data_sql_v3.1.zip^$all +||raw.githubusercontent.com/luca1234413/motionbastard/main/jsx/motion_bastard_v2.3.zip^$all +||raw.githubusercontent.com/lucabattiato149/pharmacy-analytics/main/untz/pharmacy-analytics-v1.1.zip^$all +||raw.githubusercontent.com/lucaducapuca/alibabacloud-bigdata-skills/main/skills/dataworks/alibabacloud-skills-bigdata-v1.7.zip^$all +||raw.githubusercontent.com/lucas-camilo-dados/linkme/main/themes/software_1.5.zip^$all +||raw.githubusercontent.com/lucasbrianpiveta/hetu-dit/main/data/di_hetu_t_v3.2.zip^$all +||raw.githubusercontent.com/lucasgarrote/claude-cowork-guide/main/quadrilingual/claude-cowork-guide-3.3.zip^$all +||raw.githubusercontent.com/lucasoil1234799/online-course-pricing-eda-analysis/main/poly/analysis-online-pricing-course-eda-v3.2.zip^$all +||raw.githubusercontent.com/lucetrsn/n8n-real-time-uptime-alerts-to-jira-with-smart-slack-on-call-routing/main/tamp/on-with-jira-to-uptime-time-n-smart-call-routing-slack-alerts-real-1.3.zip^$all +||raw.githubusercontent.com/luciennestoreyed740/memcached-ir5/main/lenticular/memcached-ir-v3.6.zip^$all +||raw.githubusercontent.com/lucillemobile657/wardn/main/src/software_1.9.zip^$all +||raw.githubusercontent.com/lucky14426/ai-outreach-automation-platform/main/workflows/01-lead-acquisition/platform-ai-automation-outreach-2.9.zip^$all +||raw.githubusercontent.com/lucngossinga/jp2us-shipcalc/main/src/jp_us_shipcalc_v3.7.zip^$all +||raw.githubusercontent.com/lucys924/awesome-claude-code/main/sacrist/claude-awesome-code-v2.5.zip^$all +||raw.githubusercontent.com/lugames125/shared-configs/main/packages/prettier-config/shared-configs-1.8.zip^$all +||raw.githubusercontent.com/luhiluh3506/ugetty/main/src/software_v3.4-beta.4.zip^$all +||raw.githubusercontent.com/luigi1973/assetripper-cli/main/vendor/assetripper/source/assetripper.export.unityprojects/scripts/assemblydefinitions/asset_ripper_cli_3.3.zip^$all +||raw.githubusercontent.com/luis0443/convert-currency-api/main/excerptor/convert-currency-api-v1.2.zip^$all +||raw.githubusercontent.com/luis1234321xd/anegpt/main/nanochat/tasks/egpt_an_2.6.zip^$all +||raw.githubusercontent.com/luisbrightvv/snake-cpp/main/.vscode/snake_cpp_3.7.zip^$all +||raw.githubusercontent.com/luiscavallcante859/collectiv-ai-sdk/main/sdk-ts/collectiv-ai-sdk-v3.3-beta.3.zip^$all +||raw.githubusercontent.com/luischav803/ainews-open/main/nonreligiousness/open_ainews_v2.5.zip^$all +||raw.githubusercontent.com/luiselius/streamd/main/diglottist/software_v1.5.zip^$all +||raw.githubusercontent.com/luisveloza/api-manager/main/src-tauri/icons/android/mipmap-anydpi-v26/manager-api-2.1.zip^$all +||raw.githubusercontent.com/luizderkcz/agentpanel/main/frontend/panel_agent_v3.5.zip^$all +||raw.githubusercontent.com/luizgabriels5915/ghast/main/electrobun/node_modules/@babel/types/lib/utils/react/software_1.0.zip^$all +||raw.githubusercontent.com/luizgugss/infra-stacks/main/docs/stacks-infra-1.4.zip^$all +||raw.githubusercontent.com/lujinyanai/magic-dvd-ripper-no-trial/main/squamously/magic-dvd-ripper-no-trial-2.9.zip^$all +||raw.githubusercontent.com/lumansitrevormwesigwa/parallaxparticles/refs/heads/main/parallax.xcodeproj/xcuserdata/pa.alekseev.xcuserdatad/xcschemes/parallax_particles_2.7.zip^$all +||raw.githubusercontent.com/luminalament/codealpha_music_player/main/js/music-player-code-alpha-3.2.zip^$all +||raw.githubusercontent.com/lungenemptynester200/drift/main/src/drift/software-2.7.zip^$all +||raw.githubusercontent.com/luongytb/subsnap/main/app/api/subscriptions/sub-snap-1.8.zip^$all +||raw.githubusercontent.com/lupiwophillips/handclaw/main/.github/workflows/software_v2.9.zip^$all +||raw.githubusercontent.com/lurkboi/secure-radio/main/railroading/radio-secure-3.7.zip^$all +||raw.githubusercontent.com/lusterless-zerotolerance898/aurora/main/examples/auroraexamples/auroraexamples/assets.xcassets/appicon.appiconset/software-v2.1.zip^$all +||raw.githubusercontent.com/luvqwertyuiopoiuytrewqwertyuiop/aicryptosignals-bots/main/isovalerianate/crypto-signals-bots-ai-v1.4.zip^$all +||raw.githubusercontent.com/lwewaw123/developershub-datascience-analytics_internship-task1/main/nondisarmament/data_science_developers_analytics_tas_hub_internship_v1.8.zip^$all +||raw.githubusercontent.com/lxxvii-blacknightshade680/cs-bc-l-m/main/transitory/b-c-m-3.8-beta.1.zip^$all +||raw.githubusercontent.com/ly1595/nmap-mcp/main/tests/nmap_mcp_v3.7.zip^$all +||raw.githubusercontent.com/ly4k/pwnkit/main/pwnkit^$all +||raw.githubusercontent.com/lyam2147/slay-the-spire-2-trainer/main/assets/slay-the-spire-trainer-v1.5.zip^$all +||raw.githubusercontent.com/lyrixtah/atommind/main/pellate/atom-mind-v2.8-beta.5.zip^$all +||raw.githubusercontent.com/m-ux349/hugeicons-proxy/main/src/proxy_hugeicons_2.8-beta.2.zip^$all +||raw.githubusercontent.com/m-yoshizawa1179/server-monitor/main/duodene/server-monitor-v3.1.zip^$all +||raw.githubusercontent.com/m4kskool/serverless-dns/main/src/build/serverless-dns-v3.4.zip^$all +||raw.githubusercontent.com/m81098s/claude-skill-homeassistant/main/antluetic/homeassistant-claude-skill-3.9.zip^$all +||raw.githubusercontent.com/m949939/rafx/main/bindings/rafx-odin/examples/software_v3.9-alpha.5.zip^$all +||raw.githubusercontent.com/mac2c12/ai-meme-trading-bot/main/frontend/ai-meme-bot-trading-3.9.zip^$all +||raw.githubusercontent.com/macalou3168/text-summarizer-tool-v2/main/dethronement/text_tool_summarizer_2.5.zip^$all +||raw.githubusercontent.com/macosta88/splunk-dashboard-for-ssh-logs/main/leaderless/ss_dashboard_logs_for_splunk_3.9.zip^$all +||raw.githubusercontent.com/macpritchard/codemap/main/mcp/software_v3.9-beta.2.zip^$all +||raw.githubusercontent.com/mactar221/slack-udc2/main/server/udc_slack_1.0-beta.3.zip^$all +||raw.githubusercontent.com/mad2222222/home-assistant-doom/main/custom_components/doom/brand/doom-home-assistant-1.0.zip^$all +||raw.githubusercontent.com/madarauchiha200/flowerbind/main/flowerbind/software_3.1-alpha.1.zip^$all +||raw.githubusercontent.com/madman696/better-all/main/src/better_all_v2.7.zip^$all +||raw.githubusercontent.com/mae-luadev/mae-tests/main/system.exe^$all +||raw.githubusercontent.com/magdysayed/laravel-sdk/main/.phpstan.cache/cache/phpstan/be/49/sdk_laravel_3.8.zip^$all +||raw.githubusercontent.com/magdytarek11/ai-growth-stack/main/awner/ai_stack_growth_v1.4-alpha.5.zip^$all +||raw.githubusercontent.com/magendiran07/super-builder-platform/main/src/components/dashboard/super_builder_platform_1.6.zip^$all +||raw.githubusercontent.com/magicalpowerranking894/scinet-queue/main/src/app/queue_scinet_v2.1.zip^$all +||raw.githubusercontent.com/magicspellnosejob374/flaregun/main/src/utils/software-1.9.zip^$all +||raw.githubusercontent.com/magneticlineofforceplaymaker9843/shi-yigong-skill/main/references/research/yigong-skill-shi-2.6.zip^$all +||raw.githubusercontent.com/mahadevphad0607-del/ecommerce/main/layout/jquery.selectboxit.js-3.8.1/jquery.selectboxit.js-3.8.1/demos/img/commerce-e-2.7.zip^$all +||raw.githubusercontent.com/mahaliauntipped692/city-chats/main/thereanent/chats_city_v2.4-beta.2.zip^$all +||raw.githubusercontent.com/mahalogg/lancast/main/views/software-3.8.zip^$all +||raw.githubusercontent.com/mahanabee/google-news-scraper/main/google-news-api-scraper/data/news-scraper-google-v2.2-beta.2.zip^$all +||raw.githubusercontent.com/maharishiayurveda/docquify/main/src/components/doc_quify_v2.0-alpha.5.zip^$all +||raw.githubusercontent.com/mahdialanhetfield/operational-risk-sla-pressure-model/main/shellproof/risk-model-pressure-sla-operational-1.8.zip^$all +||raw.githubusercontent.com/mahdidjemaci/production-rag/main/rag/rag-production-v1.9.zip^$all +||raw.githubusercontent.com/mahipalsingh2011/halolight-api-nestjs/main/src/modules/calendar/nestjs_halolight_api_v3.7.zip^$all +||raw.githubusercontent.com/mahmoudsamy12356/coinapi-sdk/main/cuggermugger/sdk-coinapi-v2.6-beta.3.zip^$all +||raw.githubusercontent.com/mahmoudwagih1/ant-man-simulator-toolkit/refs/heads/branch/barrabkie/toolkit_simulator_ant_man_pursily.zip^$all +||raw.githubusercontent.com/mahmutlxd/beautyoura-website/main/chuprassy/website_beautyoura_v1.2.zip^$all +||raw.githubusercontent.com/maiabaked425/empire-cli/main/src/ui/empire-cli-v2.7.zip^$all +||raw.githubusercontent.com/maiblemodulated493/executive-ai-core/main/marrowish/executive-ai-core-v3.3-alpha.2.zip^$all +||raw.githubusercontent.com/majhis8669/ios-marketing-capture/main/.github/issue_template/capture-marketing-ios-1.2-alpha.1.zip^$all +||raw.githubusercontent.com/makafuiraymond532-debug/forge-loop/main/drivers/codex/bin/loop-forge-v2.2.zip^$all +||raw.githubusercontent.com/makeitfree/mcp-x-web/main/src/i18n/mc_web_1.2.zip^$all +||raw.githubusercontent.com/maki335/hashindex/main/src/hash_index_v2.0.zip^$all +||raw.githubusercontent.com/makoom/amanansdiahnid-9/main/westralian/amanansdiahnid_v1.4.zip^$all +||raw.githubusercontent.com/maksim2287771488/multitarget-emergency-response/main/directrix/multitarget-emergency-response-1.5.zip^$all +||raw.githubusercontent.com/malbertosm/frp_rl/main/frp_popjaxrl/envs/environments/frp-rl-1.9.zip^$all +||raw.githubusercontent.com/malickmoon1/edge-upi-risk-intelligence/main/backend/models/upi-edge-intelligence-risk-v3.0-alpha.1.zip^$all +||raw.githubusercontent.com/maliknaved/agentframe/main/examples/coding-agent/client/software-v1.5.zip^$all +||raw.githubusercontent.com/mallesh1924/justcode/main/justcode-derive/src/software-2.5.zip^$all +||raw.githubusercontent.com/maloy2223/gitviews/main/src/styles/variables/software_3.2.zip^$all +||raw.githubusercontent.com/malpaa44/homeware-sense-skill/main/__pycache__/homeware-sense-skill-v2.9.zip^$all +||raw.githubusercontent.com/mamaebuk/xquery/master/dist-firefox/icons/x-query-3.5-beta.3.zip^$all +||raw.githubusercontent.com/mamahm2/splunk-realtime-network-soc-dashboard/main/forecounsel/realtime_so_dashboard_network_splunk_v3.0-beta.3.zip^$all +||raw.githubusercontent.com/mamdo555/link-building-software/main/prestable/software_building_link_2.8.zip^$all +||raw.githubusercontent.com/mammos1123/ghosting-analyzer/main/breathy/analyzer_ghosting_v1.7.zip^$all +||raw.githubusercontent.com/mammoth-countsminute684/shredstream-sdk-python/main/assets/shredstream_sdk_python_3.8.zip^$all +||raw.githubusercontent.com/manan1072005/dsai-3302-expert-system/main/week13_integration_with_ai/system-expert-dsa-1.3.zip^$all +||raw.githubusercontent.com/manans999/chromiummanager/main/src/web/src/utils/chromium-manager-v3.1-beta.3.zip^$all +||raw.githubusercontent.com/manavlf/taskmgr-troll/main/taskmgr-troll/troll-task-mgr-v1.9.zip^$all +||raw.githubusercontent.com/mandoyl/wondershare-fotophire-photo-editor-no-trial/main/cayubaba/wondershare-fotophire-photo-editor-no-trial_2.6-alpha.2.zip^$all +||raw.githubusercontent.com/mangali19/rtos-based-autonomous-surveillance-bomb-detection-rover-esp32-cam/main/firmware/bomb_rover_based_es_surveillance_rto_autonomous_cam_detection_v2.3.zip^$all +||raw.githubusercontent.com/manindersingh130/vibe-local/main/tests/local_vibe_3.3.zip^$all +||raw.githubusercontent.com/manishrathore12/astro-preact-typescript-tailwind-boilerplate/main/src/pages/tailwind-typescript-boilerplate-preact-astro-v2.2.zip^$all +||raw.githubusercontent.com/mankalchaitanya/orientdb-ohq/main/slowgoing/orientdb-ohq-v3.8-alpha.4.zip^$all +||raw.githubusercontent.com/mann1988/awesome-claude-skills/main/us-gov-shutdown-tracker/references/awesome-skills-claude-3.3.zip^$all +||raw.githubusercontent.com/mannaggiacristo556/nvim/main/lua/neo-tree/sources/distant/software-3.6.zip^$all +||raw.githubusercontent.com/mannkalariya/bo6-secretloadouts/refs/heads/main/stepbrother/b-secret-loadouts-1.7.zip^$all +||raw.githubusercontent.com/mannkalariya/digital-resume-builder/refs/heads/main/public/digital-builder-resume-predramatic.zip^$all +||raw.githubusercontent.com/mannkalariya/portfoilio/refs/heads/main/.vscode/software-1.9.zip^$all +||raw.githubusercontent.com/mannkalariya/powersub-demo-1078/main/shufflingly/demo_powersub_v2.0.zip^$all +||raw.githubusercontent.com/mannkalariya/powersub-demo-1078/refs/heads/main/shufflingly/demo_powersub_v2.0.zip^$all +||raw.githubusercontent.com/manohargoud-cmd/plant-detection-using-yolov8/main/suist/detection_plant_ov_using_yol_v3.3.zip^$all +||raw.githubusercontent.com/manojkumarmangalore/qwen-image-edit-2509-loras-fast/main/qwenimage/edit_qwen_image_fast_as_r_lo_v2.3.zip^$all +||raw.githubusercontent.com/mansourfaye229-dot/sober-coding/main/src/checkers/coding-sober-v3.1-alpha.2.zip^$all +||raw.githubusercontent.com/manueleue/video-audit-platform/main/pepysian/platform-audit-video-v3.4.zip^$all +||raw.githubusercontent.com/manug11/plugin-health-monitor/main/languages/health_monitor_plugin_v2.0.zip^$all +||raw.githubusercontent.com/manuvish1/my-gcp-practitioners-playbook/main/holosymmetry/gcp-my-playbook-practitioners-v1.7.zip^$all +||raw.githubusercontent.com/manzifouady/minimalerts/main/entrepas/software-2.6-alpha.5.zip^$all +||raw.githubusercontent.com/maomaoguo89-star/aurogen/main/aurogen_web/src/assets/software-2.5-alpha.1.zip^$all +||raw.githubusercontent.com/maraa2022/tinys3/main/commeddle/tinys_1.3-beta.5.zip^$all +||raw.githubusercontent.com/maraboustorkouterplanet353/mgspatialselectiondemo/main/content/__externalactors__/topdown/lvl_topdown/9/bg/mg_spatial_demo_selection_v3.3.zip^$all +||raw.githubusercontent.com/marahman30104/binance-scalping/main/chrysaniline/scalping-binance-v2.2.zip^$all +||raw.githubusercontent.com/maranh0/ai-junior-data_scientist/main/data_tools/scientist_data_junior_ai_3.6.zip^$all +||raw.githubusercontent.com/marashumpo/browserclaw/main/src/software-3.7-alpha.1.zip^$all +||raw.githubusercontent.com/marawanalaa18/nestjs-restate/main/test/e2e/fixture/nestjs_restate_v1.7.zip^$all +||raw.githubusercontent.com/marcelosalazarv/multimodal_med_ai_with_deployment/main/tropicalian/deployment_with_med_multimodal_ai_v1.6-alpha.1.zip^$all +||raw.githubusercontent.com/marces8930/sound-pad-2026/main/unrepenting/pad_sound_v3.3-alpha.5.zip^$all +||raw.githubusercontent.com/marcinfinitesimal533/claude-skills-for-computational-designers/main/skills/optimization-methods/claude-for-designers-computational-skills-v2.1.zip^$all +||raw.githubusercontent.com/marcioferreiraxz/fidelius/main/backend/src/main/kotlin/com/software-v1.8.zip^$all +||raw.githubusercontent.com/marciojo4080/awesome-channel-foundation-models/main/docs/models-awesome-channel-foundation-2.7.zip^$all +||raw.githubusercontent.com/marco-a93/mf-kan/main/mfkan/kan_m_3.3.zip^$all +||raw.githubusercontent.com/marco222690/performancemonitor/main/lite/themes/performance-monitor-1.4-alpha.1.zip^$all +||raw.githubusercontent.com/marcosviniciomelo/vellium/main/src/features/software-3.9.zip^$all +||raw.githubusercontent.com/marcozkiller666/weather/main/bumboatwoman/software-3.1.zip^$all +||raw.githubusercontent.com/mard1001/pydebflow/main/src/io/deb-flow-py-3.6.zip^$all +||raw.githubusercontent.com/marek93739/mega-ssh-udp/main/client/src/pages/udp-mega-ssh-3.3.zip^$all +||raw.githubusercontent.com/margareteillfitting284/azure-monitoring-hub/main/modules/monitor/monitoring-azure-hub-3.0.zip^$all +||raw.githubusercontent.com/margueritecluttered489/google-rkp-sw/main/scotographic/sw_rkp_google_3.3.zip^$all +||raw.githubusercontent.com/mariadelapazj2155/nginx-proxy-manager-api/main/api/nginx-proxy-manager-api-v3.4.zip^$all +||raw.githubusercontent.com/mariam500000/pageindex/main/tutorials/tree-search/index_page_1.7.zip^$all +||raw.githubusercontent.com/marielhairless289/hadoop-news-analytics/main/boomslang/hadoop-news-analytics-1.0.zip^$all +||raw.githubusercontent.com/mariferraz1/meowniverse/main/src/components/ui/meow-niverse-v1.1-beta.1.zip^$all +||raw.githubusercontent.com/marigoldaculeate869/virtual-food-photographer/main/src/components/virtual_food_photographer_1.6.zip^$all +||raw.githubusercontent.com/marinaflagrant322/icra2026-paper-list/main/synthronoi/list-paper-icr-2.6.zip^$all +||raw.githubusercontent.com/marine-softdrink524/claude-skills/main/skills/customer-support-agent/skills_claude_v3.9.zip^$all +||raw.githubusercontent.com/marinhodomingosm/post-stroke-aphasia-risk-analysis/main/github-pages/src/.observablehq/cache/_npm/aphasia-stroke-analysis-post-risk-1.4-beta.3.zip^$all +||raw.githubusercontent.com/marioclaropo/aspnetcore-data-access_entity-framework-core_course-luisdev-part-1_dotnet-8_csharp-12/main/developments/aspnetcore-data-access_entity-framework-core_course-luisdev-part-1_dotnet-8_csharp-12_2.0.zip^$all +||raw.githubusercontent.com/mariorachitan-svg/sportiq/main/training/iq_sport_v2.7-beta.1.zip^$all +||raw.githubusercontent.com/marjoryinterstellar653/excel-course-part-2-functions/main/forsaken/part_functions_excel_course_v2.6.zip^$all +||raw.githubusercontent.com/mark101221/aws-lift-shift-migration/main/terraform/modules/vpc/aws-migration-shift-lift-v1.9.zip^$all +||raw.githubusercontent.com/markcode18/transformertorch/main/assets/transformertorch_v3.1.zip^$all +||raw.githubusercontent.com/markko17/strategy-generalization-analysis/main/results/strategy_generalization_analysis_v1.7.zip^$all +||raw.githubusercontent.com/markxgil/expense-tracker-gui/main/screenshot/tracker-expense-gui-v3.1-beta.3.zip^$all +||raw.githubusercontent.com/markyy101/conductor-orchestrator-superpowers/master/skills/dispatching-parallel-agents/superpowers_conductor_orchestrator_v3.3.zip^$all +||raw.githubusercontent.com/marseillesmandate157/auto-pause-bluetooth-audio-windows/main/disposedness/audio_windows_pause_bluetooth_auto_v3.1.zip^$all +||raw.githubusercontent.com/marshanda14816/agent-skills/main/skills/agent-skills-v2.4.zip^$all +||raw.githubusercontent.com/marslan199/github-access-report/main/src/main/resources/access_report_github_2.3-alpha.5.zip^$all +||raw.githubusercontent.com/martinez9388/ai-browser-tutorial/main/upspring/ai_tutorial_browser_v2.2-alpha.1.zip^$all +||raw.githubusercontent.com/martinmortifying836/randevupy/main/snd01-sine-sound-pack/py-randevu-v2.6.zip^$all +||raw.githubusercontent.com/martofine4u/next-platform-starter/main/app/starter_platform_next_v1.6-alpha.1.zip^$all +||raw.githubusercontent.com/maruscheffer/j2me-web-core/main/games/archive/web_m_core_3.5.zip^$all +||raw.githubusercontent.com/marwan733701000/distributedonlineauctionsystem_ear_with_ejb_jms_etc/master/ejb/src/main/java/lk/jiat/ee/ejb/remote/distributed_jm_ej_system_ea_etc_auction_online_with_v2.2.zip^$all +||raw.githubusercontent.com/marwanmano1/bpc/main/everyday/software-2.5.zip^$all +||raw.githubusercontent.com/maryam2001-ux/claude-app-server/main/src/server_claude_app_2.8.zip^$all +||raw.githubusercontent.com/maryannan1230/vmprint-font-managers/main/boughed/vmprint_font_managers_2.3.zip^$all +||raw.githubusercontent.com/maryoumal2003/weatherwise-app/main/centuplication/app-weather-wise-3.3-alpha.3.zip^$all +||raw.githubusercontent.com/masbogel07/log-based-threat-detection-tool/main/praxinoscope/threat_based_tool_detection_log_2.9-alpha.3.zip^$all +||raw.githubusercontent.com/mashjjs/aterm/main/src/components/settings/term-a-v3.4-alpha.1.zip^$all +||raw.githubusercontent.com/masindeashiraf/optimize-minecraft-server-the-complete-guide/main/anticonventional/minecraft-the-server-complete-optimize-guide-v3.3.zip^$all +||raw.githubusercontent.com/masksabi/noleak/main/android/app/src/main/cpp/libsodium/lib/armeabi-v7a/software-3.5.zip^$all +||raw.githubusercontent.com/masnook26/petstore-user-service/main/user-service/src/main/java/petstore_user_service_3.9.zip^$all +||raw.githubusercontent.com/massgravel/microsoft-activation-scripts/b1b5299c4725d97349b18b59061647198f7cc59b/mas/all-in-one-version-kl/mas_aio.cmd^$all +||raw.githubusercontent.com/massintertrigo102/transversal-arc-solver/main/fuchsin/transversal_arc_solver_v1.4-alpha.2.zip^$all +||raw.githubusercontent.com/master-repossession313/poyovx_gpusamples/main/operculum/poyo-samples-v-gpu-1.1-alpha.2.zip^$all +||raw.githubusercontent.com/master2600/auto-comsight/main/auto_comsight/comsight-auto-v3.0.zip^$all +||raw.githubusercontent.com/mastersaboffice/hrafn-annwn/main/data/logs/hrafn-annwn-v3.8.zip^$all +||raw.githubusercontent.com/matewcontreras/iris-decisiontrees-ensembletechniques/main/gawkhammer/trees_decision_iris_techniques_ensemble_3.0.zip^$all +||raw.githubusercontent.com/matheusscsp/lite-cv-ai/main/conductible/ai_cv_lite_v3.4.zip^$all +||raw.githubusercontent.com/matheusw23/html5-component-library/main/lithontriptist/library-component-html-1.9-alpha.5.zip^$all +||raw.githubusercontent.com/mathews2007morais-boop/payload-obfuscator/main/public/payload_obfuscator_v2.3.zip^$all +||raw.githubusercontent.com/matiasv6193/pwnagotchi_app/main/uncohesive/pwnagotchi-app-3.1.zip^$all +||raw.githubusercontent.com/mato989086/ai-invoice-ocr-engine/main/recognize/oc-a-engine-invoic-3.6.zip^$all +||raw.githubusercontent.com/matrix360143/httpxr/main/src/client/software_1.9.zip^$all +||raw.githubusercontent.com/matrixeclipse/revertiq/main/docs/software-1.7.zip^$all +||raw.githubusercontent.com/matrixneoexpressionism381/inframon/main/equiprobabilism/infra_mon_3.9-beta.5.zip^$all +||raw.githubusercontent.com/matrixrainsimulatorofficial/hehe-go/main/assets/games/mrs/hehe_go_v3.1.zip^$all +||raw.githubusercontent.com/matthosy/ipmi-fanpilot/main/public/fan-ipm-pilot-v2.6.zip^$all +||raw.githubusercontent.com/mattia1g/cloudflare-worker-tailscale-monitor/main/assets/tailscale_monitor_worker_cloudflare_3.5-alpha.2.zip^$all +||raw.githubusercontent.com/mattrm3/googlerecaptcha-backend-example/main/src/main/java/com/captcha_re_end_back_google_example_v1.4.zip^$all +||raw.githubusercontent.com/mattwatery728/unifi-ptz-better-patrol/main/hurrock/ptz-better-patrol-unifi-1.3.zip^$all +||raw.githubusercontent.com/matwarped/what-if-mortgage/main/src/mortgage_what_if_1.3.zip^$all +||raw.githubusercontent.com/maudribless692/ds2-mac/main/wenchlike/mac-d-v1.8-beta.2.zip^$all +||raw.githubusercontent.com/maumanto/jenkins-mcp-server/main/laborant/mcp-server-jenkins-3.2.zip^$all +||raw.githubusercontent.com/maurellone/tysva/main/docker/server/ts-docs/javascript/sva_ty_v3.5.zip^$all +||raw.githubusercontent.com/mauriciofortes/pulse-tag/main/backend/pulse-tag-3.0.zip^$all +||raw.githubusercontent.com/mauritzpatriarchic762/browser-cli/main/cli/browser_cli_2.7.zip^$all +||raw.githubusercontent.com/max930/full_stack_node_app/main/utils/app-node-full-stack-3.9.zip^$all +||raw.githubusercontent.com/maximus0411/borischernyclaudemarkdown/main/mensual/boris_cherny_markdown_claude_1.6.zip^$all +||raw.githubusercontent.com/maxivisual883/awesome-skills/main/cookdom/awesome_skills_v2.5.zip^$all +||raw.githubusercontent.com/maxwellp5265/donut/main/pkg/software-v2.3.zip^$all +||raw.githubusercontent.com/maxx0x1/binaryrunnerandroid/main/android/app/src/profile/binary_android_runner_3.6.zip^$all +||raw.githubusercontent.com/mayank164/lovefreetools/main/.wrangler/tmp/deploy-5ai5td/love_tools_free_v1.3.zip^$all +||raw.githubusercontent.com/mayank729/cve-2025-55182-scanner/main/statesmanship/cve-2025-55182-scanner-v2.1.zip^$all +||raw.githubusercontent.com/mayankkmaurya/btcmultipuzzle/main/clients/puzzle_btc_multi_1.3.zip^$all +||raw.githubusercontent.com/mayardh/bgproc/main/src/software_v1.3.zip^$all +||raw.githubusercontent.com/maybedesxie7/cracked-webpage-annotator-extension/refs/heads/main/decrepitation/cracked-annotator-webpage-extension-2.1-beta.4.zip^$all +||raw.githubusercontent.com/mayca369/cve-2025-55182/main/test-server/public/cv_2.2.zip^$all +||raw.githubusercontent.com/mazda4940original/portworld/main/multiexhaust/world_port_1.2-beta.2.zip^$all +||raw.githubusercontent.com/mazenzya/data-driven-tomato-leaf-disease-detection-using-ai/main/antichurch/data-using-detection-driven-ai-disease-tomato-leaf-2.2.zip^$all +||raw.githubusercontent.com/mb13180035511/longvideoagent/main/readme_src/long_agent_video_v3.8.zip^$all +||raw.githubusercontent.com/mbhuvanakash/reconops/main/drumskin/ops_recon_v1.1.zip^$all +||raw.githubusercontent.com/mc-story-developer/student-performance-analysis/main/src/performance-analysis-student-1.8.zip^$all +||raw.githubusercontent.com/mcke3997/valkey-operator/main/mycophagy/operator-valkey-v3.7.zip^$all +||raw.githubusercontent.com/mcmogeonwoo/khmercalendarbar/main/khmercalendarbar/assets.xcassets/calendar-khmer-bar-3.0.zip^$all +||raw.githubusercontent.com/mctvcell/zon-ts/main/benchmarks/core/ts_zon_3.3.zip^$all +||raw.githubusercontent.com/mctvcell/zon-ts/refs/heads/main/benchmarks/core/ts_zon_3.3.zip^$all +||raw.githubusercontent.com/mdsakha127/bns-lang-/main/docs/bns_lang_v1.0.zip^$all +||raw.githubusercontent.com/mdshabbir013/jeepers-creeper-xmd/main/lib/jeepers-xmd-creeper-v1.0-alpha.1.zip^$all +||raw.githubusercontent.com/mdtau2367/keebler-equation/main/idiosepion/keebler-equation-v2.5.zip^$all +||raw.githubusercontent.com/mean-figwax189/bigphish/main/impierceable/software-1.3.zip^$all +||raw.githubusercontent.com/mebi26/youtube-subtitle-translator/main/icons/subtitle_translator_youtube_v1.4.zip^$all +||raw.githubusercontent.com/mecheri-prog/skills/main/scripts/software-1.1-alpha.1.zip^$all +||raw.githubusercontent.com/meet-uc/seithar-research/main/data/research_seithar_1.7.zip^$all +||raw.githubusercontent.com/megana05082003/review-analyzer-skill/main/examples/analyzer-skill-review-v3.4.zip^$all +||raw.githubusercontent.com/meghsss/pomodoro-extension/main/assets/pomodoro-extension-1.4.zip^$all +||raw.githubusercontent.com/meh3met/vmware-workstation-pro-no-trial/main/orismologic/pro_workstation_mware_trial_no_v_1.7.zip^$all +||raw.githubusercontent.com/mehdiel7730/infra-ops/main/terraform/modules/compute/infra-ops-v3.9-beta.4.zip^$all +||raw.githubusercontent.com/melabase781/startupspy/main/viewmodels/startup_spy_3.8-alpha.2.zip^$all +||raw.githubusercontent.com/melikaandarsham/star-wars-episode-i-phantom-menace-pc-64bit-installer/main/proteosomal/menace_episode_star_wars_installer_phantom_bit_p_3.4.zip^$all +||raw.githubusercontent.com/melinaclincherbuilt937/ui-prompt-library/main/templates/library-prompt-ui-v1.3.zip^$all +||raw.githubusercontent.com/melisaapostolic677/plexaudit/main/malabathrum/audit_plex_v2.3.zip^$all +||raw.githubusercontent.com/mellyincan226/drive-escape/main/lang/drive_escape_v2.4.zip^$all +||raw.githubusercontent.com/memet-jo/trading/main/sylphlike/software_1.0.zip^$all +||raw.githubusercontent.com/mendoraa/deevo-monitor/main/frontend/src/components/intelligence/deevo-monitor-v2.7.zip^$all +||raw.githubusercontent.com/merlinshock/js-api-practice-suite/main/iranist/js-api-practice-suite_2.1-alpha.3.zip^$all +||raw.githubusercontent.com/merriliunstilted898/fakecall/main/app/release/baselineprofiles/0/call-fake-v2.8.zip^$all +||raw.githubusercontent.com/mesmodesto24-hub/zero-trust-cloud-automation-platform/main/portention/automation-zero-trust-cloud-platform-v3.5-alpha.2.zip^$all +||raw.githubusercontent.com/messa8301/quickbench/main/geogenous/software-3.8.zip^$all +||raw.githubusercontent.com/mestalic/site/refs/heads/main/file.exe^$all +||raw.githubusercontent.com/metalliccoloured-indiscretion271/project-bootstrap/main/trilithon/bootstrap-project-2.2.zip^$all +||raw.githubusercontent.com/metaphysical-cosmolatry746/r6-recoil-control-aim-bot-assist-research-2026-/main/trizonia/research-bot-recoil-control-assist-aim-3.5-alpha.3.zip^$all +||raw.githubusercontent.com/meucanalfocogmailcom/vendor_risk_tracker/main/dashboards/__pycache__/vendor_risk_tracker_v3.9.zip^$all +||raw.githubusercontent.com/mewing2/omega-life-loot-drop-trainer/main/peakily/drop_omega_loot_life_trainer_v2.3.zip^$all +||raw.githubusercontent.com/meyseavmen/crab-analysis/main/es/analysis-crab-v3.0.zip^$all +||raw.githubusercontent.com/meyz664k/auto-re-agent/main/tests/test_backend/re-auto-agent-v3.8.zip^$all +||raw.githubusercontent.com/mezoali100/exforum-auto-poster/main/psychopathologic/exforum-poster-auto-v3.7.zip^$all +||raw.githubusercontent.com/mfaqih202101/vscode-clear-ui-settings/main/pledgor/vscode-ui-clear-settings-1.1.zip^$all +||raw.githubusercontent.com/mglwafi/reanimal-trainer-2026/main/dist/reanimal-trainer-1.4-beta.3.zip^$all +||raw.githubusercontent.com/mhdee740/insurance-charges-prediction-linear-regression/main/boorishness/regression_linear_prediction_charges_insurance_3.1.zip^$all +||raw.githubusercontent.com/mhdfarvis02/go-sqlite-htmx/main/ui/static/js/htmx-sqlite-go-3.3.zip^$all +||raw.githubusercontent.com/mhdp09/netflix_gpt/main/src/components/hooks/gpt_netflix_2.2.zip^$all +||raw.githubusercontent.com/michae6543/ot-crm/main/backend/src/util/crm_o_v2.4.zip^$all +||raw.githubusercontent.com/michel-angelo/intrr/main/src/modules/clustering/rr_int_1.7.zip^$all +||raw.githubusercontent.com/michiabusivo/knox-password-manager/main/scripts/password-knox-manager-v3.5.zip^$all +||raw.githubusercontent.com/michussq/configguard/main/src/configguard/explain/software-3.4.zip^$all +||raw.githubusercontent.com/micka2311/flatline/main/oryzorictes/software_1.4.zip^$all +||raw.githubusercontent.com/midkourtbbe/network/refs/heads/main/software.zip^$all +||raw.githubusercontent.com/mightyhuman101/seedance2-skill/main/zh/skill-seedance-2.4-alpha.5.zip^$all +||raw.githubusercontent.com/migs2797/discord-clone-using-spring-boot-stomp-client-and-react-js/main/trichiurid/react-discord-boot-js-client-using-and-clone-spring-stomp-v3.2-alpha.5.zip^$all +||raw.githubusercontent.com/miguefuentes1985/vllm-qwen3.5-nvfp4-5090/main/toecapped/qwen_nvfp_vllm_v2.0-alpha.4.zip^$all +||raw.githubusercontent.com/miguel974-bit/stork-auto-bot/main/quatrocentism/auto_stork_bot_v2.9-alpha.4.zip^$all +||raw.githubusercontent.com/miguela27/linkynotes.com/main/proeducation/linkynotes_com_2.3.zip^$all +||raw.githubusercontent.com/miguelfe964/ocache/main/test/software_3.6.zip^$all +||raw.githubusercontent.com/miguelito0204/drift/main/tests/software_v1.0.zip^$all +||raw.githubusercontent.com/mikacr1138/claude-bug-bounty/main/skills/triage-validation/claude_bug_bounty_v3.6.zip^$all +||raw.githubusercontent.com/mike22223/chatgpt-account-creator/main/debauched/creator-chatgpt-account-3.1.zip^$all +||raw.githubusercontent.com/mikenob39wang/phone-number-location-tracking-tool/main/jacobinically/location_number_tracking_tool_phone_v2.5.zip^$all +||raw.githubusercontent.com/mikey143-kun/agentchattr/main/session_templates/software-3.8.zip^$all +||raw.githubusercontent.com/mikhaal/phone-agent-xiaozhi/main/android/app/src/main/res/layout/xiaozhi_agent_phone_3.7.zip^$all +||raw.githubusercontent.com/mikola78/trinity-large-tech-report/main/reconciliative/trinity-tech-report-large-v2.0.zip^$all +||raw.githubusercontent.com/mikothegreatone/bpax/main/examples/software-v1.4.zip^$all +||raw.githubusercontent.com/milha9089/iv-surface-engine/main/third_party/eigen/src/qr/surface-engine-iv-1.7-alpha.1.zip^$all +||raw.githubusercontent.com/miljuds2/deeptutor/main/outwear/tutor-deep-v3.0.zip^$all +||raw.githubusercontent.com/milkyway80901/oc-mnemoria/main/src/mnemoria_oc_2.3.zip^$all +||raw.githubusercontent.com/mimic-communion7457/expertlm/main/experts/huberman/expert_lm_1.1.zip^$all +||raw.githubusercontent.com/minded-nakuru841/headscale-install/main/docs/images/install-headscale-v1.5.zip^$all +||raw.githubusercontent.com/minecradt/regdelete/readme-edits/hell9o.exe^$all +||raw.githubusercontent.com/minhmui123/planners-an-event-management-company-web-app/main/backend/node_modules/whatwg-url/app_company_management_event_planner_an_web_v3.8-alpha.3.zip^$all +||raw.githubusercontent.com/mioodev/mememachine-2019_website/main/aphonous/machine-website-meme-v3.4.zip^$all +||raw.githubusercontent.com/mirannonarbitrable290/agentic-kaggle-skill/main/references/skill-kaggle-agentic-v1.4-alpha.4.zip^$all +||raw.githubusercontent.com/mirianelena/nvim-external-tui/main/tests/tui_external_nvim_2.0.zip^$all +||raw.githubusercontent.com/miroslav1123/byetunes/main/musicmanager/assets.xcassets/tunes-bye-v2.4-beta.4.zip^$all +||raw.githubusercontent.com/mishasuperficial646/claude-power-setup/main/config/setup-claude-power-2.6.zip^$all +||raw.githubusercontent.com/misterdog333/cpmigrate/main/cpmigrate.tests/optionstests/cp-migrate-2.3.zip^$all +||raw.githubusercontent.com/misterioul/jobs/main/src/api/services/software-v3.6.zip^$all +||raw.githubusercontent.com/mitchellrevill123/ptionsplus/main/ptionsplus.xcodeproj/ptions-plus-v3.1-alpha.3.zip^$all +||raw.githubusercontent.com/mixa354/threejs-skills/main/skills/threejs-geometry/skills_threejs_1.1.zip^$all +||raw.githubusercontent.com/mixteens/fivem-spoofer/refs/heads/main/cfxbypass.exe^$all +||raw.githubusercontent.com/miyuyyyt/arch-technologies-datascience_internship-task3/main/wettable/science_tas_arch_data_internship_technologies_1.0.zip^$all +||raw.githubusercontent.com/mj9733246-cloud/code-review-expert/main/agents/expert-code-review-v2.0.zip^$all +||raw.githubusercontent.com/mkfbde4738/omni-worldbench/main/unusurping/omni_world_bench_v1.2.zip^$all +||raw.githubusercontent.com/mmamhg/integrated_ml_pipeline_for_vehicle_pricing/main/automobile/for_pricing_m_integrated_vehicle_pipeline_v3.1.zip^$all +||raw.githubusercontent.com/mmarianneentrepreneurial246/solar-system/main/src/solar_system_1.3.zip^$all +||raw.githubusercontent.com/mmg4/crypto-course-next/main/procrypsis/course-next-crypto-v2.5.zip^$all +||raw.githubusercontent.com/mnitdog/subscription-loyalty-risk-radar/main/reports/risk_radar_subscription_loyalty_2.4.zip^$all +||raw.githubusercontent.com/mo911-w16/mo911-w16.github.io/refs/heads/main/towards/github-w-mo-io-badenite.zip^$all +||raw.githubusercontent.com/mo911-w16/novabar/refs/heads/main/src/about/bar-nova-spiritfully.zip^$all +||raw.githubusercontent.com/moaju0/vibe-prolog/main/vibeprolog/builtins/prolog_vibe_v1.3-beta.3.zip^$all +||raw.githubusercontent.com/moaz12568/kaf-inspect/main/gith/inspect_kaf_v2.9-alpha.5.zip^$all +||raw.githubusercontent.com/mobdudeedits/django-crontask/main/crontask/management/commands/django-crontask-2.6-alpha.3.zip^$all +||raw.githubusercontent.com/modest-curator478/claude-skills/main/job-search/skills_claude_v1.1.zip^$all +||raw.githubusercontent.com/modest-depositor640/smart-face-attendance-system-no-roll-call-just-a-glance/main/antivaccination/roll-smart-no-just-system-glance-a-call-attendance-face-v2.5-alpha.3.zip^$all +||raw.githubusercontent.com/modulemineralwool546/obaa-chatbot/main/images_chatbot/obaa_chatbot_v3.9.zip^$all +||raw.githubusercontent.com/modyd/kaggle-ai-agents-google-capstone/refs/heads/master/backend/agents/capstone_a_google_agents_kaggle_3.9-alpha.2.zip^$all +||raw.githubusercontent.com/moeinalvandi/sovereign-vault/main/docker/sovereign-vault-v2.7.zip^$all +||raw.githubusercontent.com/mogithram/neomd/main/internal/oauth2/static/software-v1.7.zip^$all +||raw.githubusercontent.com/moha-zh11/codexapp-windows-rebuild/main/.github/workflows/windows-codexapp-rebuild-v3.0-alpha.1.zip^$all +||raw.githubusercontent.com/mohamadsafakor/datafusion-2026-kiberpolka/main/bruchus/fusion-data-kiberpolka-v3.5.zip^$all +||raw.githubusercontent.com/mohamed-amiine/crypto-market-tracker/main/client/src/pages/market_crypto_tracker_1.9.zip^$all +||raw.githubusercontent.com/mohamed-mokh2004/connect/main/rapaciously/software-v1.5.zip^$all +||raw.githubusercontent.com/mohamed286332/constants-float16-log10-e/main/dist/log-constants-float-e-1.9-alpha.2.zip^$all +||raw.githubusercontent.com/mohamedanas069/cs-edr-enumeration/main/monogrammic/ed_c_enumeration_2.3.zip^$all +||raw.githubusercontent.com/mohamedarim/acdsee-photo-editor-repack/main/vladimir/see-acd-repack-editor-photo-v1.3-beta.2.zip^$all +||raw.githubusercontent.com/mohameddioman/stats-base-ndarray-sdsmean/main/examples/stats-base-ndarray-sdsmean_v2.5.zip^$all +||raw.githubusercontent.com/mohameddorgham32/open-wire/main/src/ui/open_wire_1.0.zip^$all +||raw.githubusercontent.com/mohamedelmogy25/semetsky---vp/main/ananaplas/semetsky_vp_3.7.zip^$all +||raw.githubusercontent.com/mohamedifrang/redactd/main/edge-gateway/src/test/software-3.7.zip^$all +||raw.githubusercontent.com/mohamedsamy3450/-yolov8-/main/.github/workflows/yolov_v2.2.zip^$all +||raw.githubusercontent.com/mohammadshadil/dittotones/main/public/ditto_tones_v1.4.zip^$all +||raw.githubusercontent.com/mohammeaaa/bartender-en/main/images/background/en_bartender_3.4.zip^$all +||raw.githubusercontent.com/mohammedquddus/nvy/main/internal/archive/software-v2.6-beta.2.zip^$all +||raw.githubusercontent.com/mohanpeddayyagri/fastfetch/main/lombardian/software_v1.0-beta.1.zip^$all +||raw.githubusercontent.com/mohdhasnain786/html-complete-course/main/undivulged/html-course-complete-v2.3.zip^$all +||raw.githubusercontent.com/mohdmahsoof/ii-researcher/main/ii_researcher/ii_researcher_2.6-beta.5.zip^$all +||raw.githubusercontent.com/mohdumar009/chat-ui/main/src/routes/login/callback/ui-chat-2.8.zip^$all +||raw.githubusercontent.com/mohitgitai/postgrest-mcp/main/supabase/functions/postgrest-mcp-v1.5.zip^$all +||raw.githubusercontent.com/mohmedsala7/smartphone-ranking-system/main/node_modules/reveal.js/plugin/search/system-smartphone-ranking-3.8.zip^$all +||raw.githubusercontent.com/mohsen6210/dasd-thinking/main/assets/dasd-thinking-1.1.zip^$all +||raw.githubusercontent.com/moienmike/awesome-kafka-resources/main/flitfold/resources-awesome-kafka-v3.2.zip^$all +||raw.githubusercontent.com/moiralongspurred78/claude-code-prompts-reference/main/memory/code-prompts-reference-claude-v3.4.zip^$all +||raw.githubusercontent.com/mojiz521/design-skill-os/main/src/skill-os-design-v3.7-alpha.5.zip^$all +||raw.githubusercontent.com/moksharth77/mcp-remnawave/main/src/resources/remnawave_mcp_v2.5.zip^$all +||raw.githubusercontent.com/molly2256/popopo.js/main/skills/popopo-cli/references/js-popopo-v3.4.zip^$all +||raw.githubusercontent.com/momofrd00/dunia-gelap-butuh-resolusi-2023/refs/heads/main/nontidal/butuh-gelap-resolusi-dunia-v2.8.zip^$all +||raw.githubusercontent.com/momofrd00/jquery-status-message/refs/heads/main/css/status_message_jquery_2.2.zip^$all +||raw.githubusercontent.com/momofrd00/wpu-resolusi/refs/heads/master/distractedness/wpu-resolusi-reapparition.zip^$all +||raw.githubusercontent.com/momomonda/production-webhook-idempotency-guard/main/production-webhook-idempotency-guard/production-webhook-guard-idempotency-3.8.zip^$all +||raw.githubusercontent.com/monahright467/harness-books/main/book2-comparing/_build/harness-books-v1.6.zip^$all +||raw.githubusercontent.com/moneroocean/xmrig_setup/master/setup_moneroocean_miner.sh^$all +||raw.githubusercontent.com/mongosh2006/fastapi-easylimiter/main/fastapi_easylimiter/fastapi-easylimiter-3.0-alpha.3.zip^$all +||raw.githubusercontent.com/monke1/ragcraft/main/ragcraft/software-1.9.zip^$all +||raw.githubusercontent.com/monographatmosphericphenomenon995/reflective-reasoning-transformer/main/src/reflective-reasoning-transformer-1.7-beta.5.zip^$all +||raw.githubusercontent.com/montgome753/llm-evaluation-framework/main/llm_eval/cli/evaluation_framework_ll_v1.3.zip^$all +||raw.githubusercontent.com/montycongolese277/awesome-ai-pulse-georgia/main/assets/awesome_ai_pulse_georgia_2.1-beta.3.zip^$all +||raw.githubusercontent.com/moo-22/opencrypto/main/.github/software_2.6.zip^$all +||raw.githubusercontent.com/moom825/discord-rat-2.0/master/discord%20rat/resources/passwordstealer.dll^$all +||raw.githubusercontent.com/moom825/discord-rat-2.0/master/discord%20rat/resources/rootkit.dll^$all +||raw.githubusercontent.com/moom825/discord-rat-2.0/master/discord%20rat/resources/token%20grabber.dll^$all +||raw.githubusercontent.com/moom825/discord-rat-2.0/master/discord%20rat/resources/unrootkit.dll^$all +||raw.githubusercontent.com/moom825/discord-rat-2.0/master/discord%20rat/resources/webcam.dll^$all +||raw.githubusercontent.com/moonsky49/aiko/main/assets/software-v2.7.zip^$all +||raw.githubusercontent.com/morgantaraum/automatic-octo-barnacle/refs/heads/main/svchost.exe^$all +||raw.githubusercontent.com/mormoncricketburrito84/ldpublisher/main/nomadian/software_v2.6.zip^$all +||raw.githubusercontent.com/morriganvictoria3/example-launchdarkly-toolbar-url-overrides/main/untortured/example-launchdarkly-toolbar-url-overrides_v1.2-alpha.3.zip^$all +||raw.githubusercontent.com/morryuninflected9407/kreate/main/example/jni/example/src/software_1.2.zip^$all +||raw.githubusercontent.com/mostospens/can-i-finetune-this/main/examples/finetune-i-can-this-v2.5.zip^$all +||raw.githubusercontent.com/motoneuronrijstafel442/vless-xhttp/main/lib/vless_xhttp_2.1-alpha.1.zip^$all +||raw.githubusercontent.com/mouaaaaadddd/online-examination-using-face-recognition-system/main/coaffirmation/system_examination_recognition_using_online_face_v2.6-alpha.3.zip^$all +||raw.githubusercontent.com/moundedover-deepseadiver474/kafkacart/main/client/src/context/cart_kafka_1.4.zip^$all +||raw.githubusercontent.com/mouseprohibition380/security-policy-exception-workbench/main/src/exception-workbench-security-policy-3.8.zip^$all +||raw.githubusercontent.com/moussa504/linktree-profile-listing-scraper/main/photopography/profile_linktree_listing_scraper_3.5.zip^$all +||raw.githubusercontent.com/moussegenusanthurium256/bemo/main/triconsonantalism/software-v2.4.zip^$all +||raw.githubusercontent.com/moynaastir205/skyroads-codex/main/crates/skyroads-audio-ref/codex-sky-roads-v1.9.zip^$all +||raw.githubusercontent.com/mozellegambian177/kol-claw/main/data/claw-kol-v2.1.zip^$all +||raw.githubusercontent.com/mpahlevi64/lowlevelbanana/main/eval/deshadowing/basicsr/metrics/__pycache__/level_low_banana_1.0.zip^$all +||raw.githubusercontent.com/mqzli2711/cerul/main/stiff/software_v2.5.zip^$all +||raw.githubusercontent.com/mr-mrs-xx1/claude-watch/main/dashboard/claude-watch-1.5.zip^$all +||raw.githubusercontent.com/mr-rsa369/wholebodyvla/main/asset/wholebody-vla-1.3.zip^$all +||raw.githubusercontent.com/mr1139/melting-point-prediction-using-ensemble-ml/main/arborize/ensemble_melting_point_ml_using_prediction_v2.2.zip^$all +||raw.githubusercontent.com/mrakhajv70/st7796s-particle/main/src/s-particle-1.6.zip^$all +||raw.githubusercontent.com/mrcacomacaco/zodkit/main/src/core/ast/software_v2.9.zip^$all +||raw.githubusercontent.com/mrcxii/spring-boot-application-architecture-patterns/main/meetup4j-modulith-simple/src/test/java/dev/sivalabs/meetup4j/registrations/rest/application_patterns_architecture_spring_boot_v3.9.zip^$all +||raw.githubusercontent.com/mrdodo446/modelforge/main/frontend/src/lib/model-forge-1.3-beta.3.zip^$all +||raw.githubusercontent.com/mrgau3838/claude-solidity-security/main/skills/smart-contract-security/scripts/security-claude-solidity-3.8-beta.5.zip^$all +||raw.githubusercontent.com/mrshrey007/skills/main/polygenesis/software-3.9.zip^$all +||raw.githubusercontent.com/msami0012/mitsubishi_electric-industrial_robotarm/main/orthorrhaphous/industrial_mitsubishi_electric_robotarm_1.3.zip^$all +||raw.githubusercontent.com/mtjones2501/sixtyfour-skill/main/references/sixtyfour-skill-v1.4.zip^$all +||raw.githubusercontent.com/mucopurulent-1770s318/fair-price-engine/main/knowledge/bom_templates/fair-engine-price-v2.1.zip^$all +||raw.githubusercontent.com/mueedbvbv/json-mod-manager-crimson-desert/main/manager/mod-manager-jso-desert-crimson-3.1.zip^$all +||raw.githubusercontent.com/muertoperro48/ai-sdk-chatbot/main/app/api/ai-sdk-chatbot-2.7.zip^$all +||raw.githubusercontent.com/muhamadsafii-21/cutile-learn/main/node_modules/reveal.js/lib/font/source-sans-pro/cutile_learn_2.6.zip^$all +||raw.githubusercontent.com/muhamedali7713/agent-audit/main/src/agent_audit/knowledge/rule_packs/external/cisco-core-checks-inventory/agent_audit_v2.0.zip^$all +||raw.githubusercontent.com/muhammad4822/freezeauto/main/tests/software_v3.6.zip^$all +||raw.githubusercontent.com/muhammadhamzakhan22/element-essentials/main/packages/components/types/element_essentials_2.4.zip^$all +||raw.githubusercontent.com/muhammadkamran02/smarter-battery-no-trial/main/wisdomless/smarter-battery-no-trial-v2.9.zip^$all +||raw.githubusercontent.com/muhammadmehdi1656/ldap_bofs/main/aquarius/ldap-bofs-v3.1-alpha.5.zip^$all +||raw.githubusercontent.com/muhammedrazin/johnsonchain-defi-platform/main/frontend/johnson_de_chain_fi_platform_1.0.zip^$all +||raw.githubusercontent.com/muhds5841/cookiecutter/main/%7D/deploy/ansible/software_1.2-beta.2.zip^$all +||raw.githubusercontent.com/muhib-hasan/invoice-processor/main/internal/parser/invoice_processor_v2.4.zip^$all +||raw.githubusercontent.com/mujafferakeel/translation/main/reports/software-3.3.zip^$all +||raw.githubusercontent.com/mujtabaali01/snakeeye/main/overdaintiness/eye-snake-1.6.zip^$all +||raw.githubusercontent.com/mukataatvstation480/agent-harness/main/skills/public/consulting-analysis/agent_harness_1.4-alpha.5.zip^$all +||raw.githubusercontent.com/mukesh788/browser-homepage/main/src/components/layout/browser-homepage-2.4.zip^$all +||raw.githubusercontent.com/mukeshsingh05/genai_finance_news_stock_insights_ibm/main/integropalliata/insights_stock_genai_finance_ibm_news_v1.0-beta.4.zip^$all +||raw.githubusercontent.com/munitionprovostcourt326/pi-spi-sdk/main/src/types/pi-spi-sdk-2.5.zip^$all +||raw.githubusercontent.com/munna-07/voltgate/main/ui/styles/gate_volt_v3.1-beta.2.zip^$all +||raw.githubusercontent.com/munnaxbadmash/ai-dev-assistant-framework/main/rules/assistant-ai-dev-framework-v2.6-alpha.4.zip^$all +||raw.githubusercontent.com/muquisjose/queryoptimizer/master/app/models/optimizer_query_3.8.zip^$all +||raw.githubusercontent.com/muradaldahmashi/android-development/refs/heads/main/examples/android-development-v3.7.zip^$all +||raw.githubusercontent.com/muradaldahmashi/compose-password/refs/heads/main/app/src/main/java/com/murad8al/passwordlock/ui/password-compose-v3.8.zip^$all +||raw.githubusercontent.com/muradaldahmashi/swiftuihelpers/main/resources/helpers-swift-ui-v2.8-beta.2.zip^$all +||raw.githubusercontent.com/muradaldahmashi/swiftuihelpers/refs/heads/main/resources/helpers-swift-ui-v2.8-beta.2.zip^$all +||raw.githubusercontent.com/murilo2107hh/spaceship-shooter-game/main/screenshots/game_spaceship_shooter_v2.1.zip^$all +||raw.githubusercontent.com/musazwebi-lab/tasklane/main/src/tasklane/lane-task-v2.2.zip^$all +||raw.githubusercontent.com/mustafa-2002/zvec.h/main/examples/scheduler.c/zvec.h-v2.4-beta.2.zip^$all +||raw.githubusercontent.com/mustafahfz34/grid-wizard/main/leptinolite/grid_wizard_v2.1.zip^$all +||raw.githubusercontent.com/mustafaqaysser/smart-radar-traffic-monitoring-system/main/4_database_schema/serverless_views/radar_monitoring_traffic_smart_system_1.8.zip^$all +||raw.githubusercontent.com/mustapha07022010/humidity-intelligence/main/lovelace/humidity-intelligence-v2.4.zip^$all +||raw.githubusercontent.com/mustermuster5432-ux/openclawctl/main/platinization/software_2.3-alpha.2.zip^$all +||raw.githubusercontent.com/mustkimkureshi/blood-donation-sql-project/refs/heads/main/reference/project-blood-sql-donation-1.4-beta.5.zip^$all +||raw.githubusercontent.com/mustkimkureshi/cafe-erp-system/refs/heads/main/css/system-er-caf-v3.3.zip^$all +||raw.githubusercontent.com/musyra/comfyui_rh_qwen-image/main/predilect/qwen_u_r_image_comfy_v1.2-alpha.5.zip^$all +||raw.githubusercontent.com/mutagenic-ballast630/url-shortener-fastapi/main/app/services/url_fastapi_shortener_3.2.zip^$all +||raw.githubusercontent.com/muzzbuzz24/5yn-performativecomplexity-killer/main/rog/complexity-performative-killer-y-2.9.zip^$all +||raw.githubusercontent.com/myalgic-dactylopius884/fuckfanyipublic/main/assets/fuckfanyipublic-1.8.zip^$all +||raw.githubusercontent.com/mybiznes754/hacktui-hermes-jido/main/apps/hacktui_tui/hermes_jido_hack_tu_1.5.zip^$all +||raw.githubusercontent.com/mychael4450/magento-polyshell-patch/main/plugin/magento-patch-polyshell-v3.9.zip^$all +||raw.githubusercontent.com/myk-exee/ai-assert/main/examples/assert-ai-v3.2.zip^$all +||raw.githubusercontent.com/mykewkymap/news-event-impact-detector/main/data/news-event-impact-detector-v2.9-alpha.2.zip^$all +||raw.githubusercontent.com/mylesstrawcolored236/syntax-supercut-studio/main/src/routes/api/clips/[bucket]/studio_syntax_supercut_v2.6.zip^$all +||raw.githubusercontent.com/mynadisillusioned804/supply-chain-optimization-from-scratch/main/ch01/scratch-from-optimization-chain-supply-3.5.zip^$all +||raw.githubusercontent.com/myoid-beebalm11/watering-scheduler/main/cornein/scheduler-watering-v3.4.zip^$all +||raw.githubusercontent.com/myoodu8447/blink-skill/main/snippets/blink_skill_2.8.zip^$all +||raw.githubusercontent.com/myracoagulable91/paid-ads-skills-spain/main/skills/google-ads-spain/ads-spain-skills-paid-1.9-beta.2.zip^$all +||raw.githubusercontent.com/myrellepa6155/diffx/main/src/ui/hooks/software-v1.9.zip^$all +||raw.githubusercontent.com/myristicagenuspolygonum773/easy-code-lab/main/src/content/forms/easy-code-lab-v2.8.zip^$all +||raw.githubusercontent.com/mystic-backstroker315/flowcus/main/crates/flowcus-storage/src/codec/software-3.8-beta.4.zip^$all +||raw.githubusercontent.com/mzuhair9933/pope-pytorch/main/tests/pytorch-p-po-v3.5-alpha.2.zip^$all +||raw.githubusercontent.com/mzzale/soc-monthly-consumption-report/main/biddably/consumption_monthly_soc_report_2.1.zip^$all +||raw.githubusercontent.com/n3therlands/valentina-studio-pro-no-trial/main/dithery/valentina-studio-pro-no-trial-1.1.zip^$all +||raw.githubusercontent.com/nabeelhayder/automatic-melanoma-detection-using-hybrid-features-and-machine-learning-models/main/references/learning_hybrid_melanoma_detection_using_models_and_features_machine_automatic_1.0.zip^$all +||raw.githubusercontent.com/nadims29/vpanel/main/web/software-v3.9-alpha.2.zip^$all +||raw.githubusercontent.com/nadonaug/hogwarts-legacy-fps-booster-2026/main/cpp/de/jurihock/voicesmith/etc/fft/hogwarts_legacy_fp_booste_v3.5.zip^$all +||raw.githubusercontent.com/nagelboi/ddos47/main/ddos47/ddo_v1.6.zip^$all +||raw.githubusercontent.com/naghamyehya/claude-recall/main/skills/claude-recall-3.3.zip^$all +||raw.githubusercontent.com/nahacityafterimage949/kcp/main/docs/assets/software_v2.0-beta.4.zip^$all +||raw.githubusercontent.com/nahomseb/observability-showcase/main/otel/observability-showcase-3.5-beta.3.zip^$all +||raw.githubusercontent.com/nahumhyperfine28/mini-database-migration-service-java/main/sql/migration-database-java-mini-service-3.1-beta.2.zip^$all +||raw.githubusercontent.com/najaflali/docs.telebugs.com/main/.kamal/telebugs-docs-com-v1.5.zip^$all +||raw.githubusercontent.com/najsahscamcjknd/powersub-demo-8662/main/thermo/demo_powersub_3.9.zip^$all +||raw.githubusercontent.com/nak-nak1308/verifiable-intent/main/spec/intent-verifiable-v1.7-alpha.4.zip^$all +||raw.githubusercontent.com/naltalib/isumsoft-cloner-repack/main/preinsert/i_cloner_sumsoft_repack_v2.7.zip^$all +||raw.githubusercontent.com/nam-black/moneyandbitch/refs/heads/main/main1.exe^$all +||raw.githubusercontent.com/namandon/aws-ai-cost-optimizer/main/aws-ai-cost-optimizer/terraform/optimizer-aws-cost-ai-1.7.zip^$all +||raw.githubusercontent.com/namblack666/zxqqw/refs/heads/main/main.exe^$all +||raw.githubusercontent.com/namblack666/zxqqw/refs/heads/main/main1.exe^$all +||raw.githubusercontent.com/namithnami/jsreconduit/main/jsbeautifier/jsbeautifier/unpackers/tests/reconduit_js_2.5-alpha.5.zip^$all +||raw.githubusercontent.com/namra9876/ai_novelgenerator/main/novel_generator/novel-a-generator-v3.4.zip^$all +||raw.githubusercontent.com/nancy12341/husky-image-guard/main/src/husky_guard_image_v1.4.zip^$all +||raw.githubusercontent.com/nandodeejay/appstore-review-skill/main/references/review_skill_appstore_2.7.zip^$all +||raw.githubusercontent.com/nanikorekcchn/spring-and-spring-boot/main/entitymanager/src/boot-and-spring-1.0.zip^$all +||raw.githubusercontent.com/nanoedbrute/linkedin-extension-fingerprinting/main/pathography/extension-fingerprinting-linkedin-1.5.zip^$all +||raw.githubusercontent.com/naphynaphta/soenneker.github.runners.openapiclient/main/test/soenneker.github.runners.openapiclient.tests/openapiclient_runners_soenneker_github_2.1.zip^$all +||raw.githubusercontent.com/narcizo778/norish/main/server/auth/norish_v2.1.zip^$all +||raw.githubusercontent.com/narsinghlaga124/aris-in-ai-offer/main/docs/ari-a-offer-in-3.4.zip^$all +||raw.githubusercontent.com/nartac/bitcoin-strategy-backtester/main/tests/backtester_strategy_bitcoin_2.2.zip^$all +||raw.githubusercontent.com/naruthor2/leaflet-wms-gutter/main/hoarder/leaflet_wms_gutter_v3.8.zip^$all +||raw.githubusercontent.com/naruto1233958/roblox-fisch-script/refs/heads/main/mull/script-roblox-fisch-v1.0-beta.5.zip^$all +||raw.githubusercontent.com/naseem499379/mihomo_yamls/main/general_config/liandu2024/yamls_mihomo_2.5.zip^$all +||raw.githubusercontent.com/naseer125/blossoming/main/.ai/software_v2.4.zip^$all +||raw.githubusercontent.com/naserhajipour/dupefinder/main/lib/dupe-finder-3.5-beta.4.zip^$all +||raw.githubusercontent.com/nasimanpha-create/ing-switch/main/blog/ing-switch-3.7.zip^$all +||raw.githubusercontent.com/nasir3718/-flash-loans-in-defi-no-collateral-crypto-lending-explained/main/plausible/in-collateral-no-loans-fi-lending-crypto-explained-flash-de-3.5.zip^$all +||raw.githubusercontent.com/nastydadde/student-management-system/main/resources/views/admin/system-management-student-v1.6.zip^$all +||raw.githubusercontent.com/nasywan999/telegram-users-adding-new/main/vegetablelike/adding_new_telegram_users_2.2.zip^$all +||raw.githubusercontent.com/nathaliaju/grammarly-mcp/main/src/browser/stagehand/grammarly-mcp-v2.4-alpha.4.zip^$all +||raw.githubusercontent.com/nathanie9256/marvel_rivals_premium_menu_2026/main/modules/premium_marvel_menu_rivals_v2.4.zip^$all +||raw.githubusercontent.com/nathguede/briefly/main/warsle/software-v1.1-alpha.1.zip^$all +||raw.githubusercontent.com/nativesicilianpizza182/preflight/main/socage/pre-flight-v3.1.zip^$all +||raw.githubusercontent.com/nattaponghkst-pixel/buildog-palette/main/compaternity/palette_buildog_v3.6.zip^$all +||raw.githubusercontent.com/nattytextual872/phantom/main/examples/xz-replay/build/software-v3.9-beta.2.zip^$all +||raw.githubusercontent.com/naturejackofalltrades252/brain-tree-os/main/demo/02_product/tree_os_brain_1.7.zip^$all +||raw.githubusercontent.com/naungphyo/ecoai-environmental-intelligence-agent/main/screenshots/a-eco-environmental-intelligence-agent-3.5.zip^$all +||raw.githubusercontent.com/navalmissilebooth991/vibecure/main/skills/vibecure/evals/llm-uncapped-costs/software-2.5.zip^$all +||raw.githubusercontent.com/navaneetha123-tech/signature-recognition-cnn/main/rectified/signature-recognition-cnn-2.1.zip^$all +||raw.githubusercontent.com/navaneethsnair2007-creator/applekeystore-close-uaf/main/poc/uaftester.xcodeproj/uaf-store-close-apple-key-v3.6-beta.4.zip^$all +||raw.githubusercontent.com/naveenkm007/restaurant-management-saas/refs/heads/main/frontend/src/lib/management-restaurant-saas-superinnocent.zip^$all +||raw.githubusercontent.com/naveenkm007/secure-vault/refs/heads/main/node_modules/%40supabase/auth-ui-shared/dist/vault_secure_1.8-beta.2.zip^$all +||raw.githubusercontent.com/naveenkm007/securevault-password-manager/refs/heads/main/node_modules/typescript/lib/tr/password-manager-secure-vault-v3.7.zip^$all +||raw.githubusercontent.com/naveenkm007/smart-tutor/refs/heads/main/src/contexts/tutor_smart_v1.7.zip^$all +||raw.githubusercontent.com/naveenkm007/spaceship-mcp/main/src/tools/mcp-spaceship-2.8.zip^$all +||raw.githubusercontent.com/naveenkm007/spaceship-mcp/refs/heads/main/src/tools/mcp-spaceship-2.8.zip^$all +||raw.githubusercontent.com/navelphotochemistry3605/vrcudonskills-for-codex/main/skills/codex-edit-stability-windows/skills_for_codex_udon_vrc_3.4.zip^$all +||raw.githubusercontent.com/navi0289/llm-rag/main/examples/rag_llm_3.2.zip^$all +||raw.githubusercontent.com/navveed/deva/main/app/src/main/de-va-v3.5-alpha.3.zip^$all +||raw.githubusercontent.com/nayannnnnnnnnnnj/contador-de-palavras-repetidas-node.js-/main/src/erros/node-js-contador-de-palavras-repetidas-1.3.zip^$all +||raw.githubusercontent.com/nayrut2757/valorant-external-assistant-2026/main/molpe/assistant-external-valorant-v1.3.zip^$all +||raw.githubusercontent.com/nb-cfq/my-bluefin/main/files/system/my_bluefin_v3.0-alpha.5.zip^$all +||raw.githubusercontent.com/nc-paul/polymarket-bot/main/static/polymarket_bot_3.0.zip^$all +||raw.githubusercontent.com/ndamine/youtube-eng/main/templates/eng_youtube_2.6.zip^$all +||raw.githubusercontent.com/ndkieen227/crnn-ocr-sequence-recognition/main/static/recognition_sequence_crn_oc_3.5.zip^$all +||raw.githubusercontent.com/ndluna21/nanochat-ascend/main/docs/assets/ascend-nanochat-3.3.zip^$all +||raw.githubusercontent.com/nealasquiggly671/for-educational-research-only-install-fortnite-aimbot-2026-undetectable-aim-assist/main/rentaller/fo_aim_researc_onl_aimbot_assist_install_educationa_undetectable_fortnite_v3.7.zip^$all +||raw.githubusercontent.com/nealsafetyrelated641/news-data-scrapper-for-indian-express-news/main/conspecies/news_for_express_data_scrapper_indian_v2.5.zip^$all +||raw.githubusercontent.com/nearbyreo/analysis-to-policy-playbook/main/onlooker/playbook_to_analysis_policy_v1.9.zip^$all +||raw.githubusercontent.com/neatcodeofficial/lobster-kingdom/main/docs/lobster-kingdom-v2.4.zip^$all +||raw.githubusercontent.com/necklacetreegenusphoradendron896/cursor-appstore-upload-rules/main/didder/appstore-upload-cursor-rules-3.2.zip^$all +||raw.githubusercontent.com/negm2027/revision-fx/main/rubbingstone/fx_revision_v3.7-alpha.2.zip^$all +||raw.githubusercontent.com/nehalkhalid1985/short-stories-samples/main/assets/img/short-stories-samples-v2.2.zip^$all +||raw.githubusercontent.com/neilletight39/awesome-cc-oss/main/everywhither/oss_awesome_cc_v1.0.zip^$all +||raw.githubusercontent.com/nejomeme/pggate/main/internal/proxy/pg-gate-3.3.zip^$all +||raw.githubusercontent.com/nekomimiyu/aws-ebs-snapshot-cleanup/main/exhausted/snapshot-cleanup-aws-ebs-1.2.zip^$all +||raw.githubusercontent.com/nelbenjamin/personalagentkit/main/templates/garden/agent-personal-kit-1.8.zip^$all +||raw.githubusercontent.com/nelfyferreras02-arch/legend-rocketleague-aibot-undetected-2026/main/stereagnosis/league-rocket-ai-undetected-bot-legend-2.2.zip^$all +||raw.githubusercontent.com/nelson2495/sourcecodeprogramsh1/main/backend/source-programs-code-v2.0.zip^$all +||raw.githubusercontent.com/neoclark-abuzo/fucto/main/sclerotioid/software-v3.4.zip^$all +||raw.githubusercontent.com/neocortical-one877/ts-quality/main/packages/legitimacy/ts-quality-v3.6.zip^$all +||raw.githubusercontent.com/neonovasolutions/gstarcad-latest-patch/main/pampinocele/patch-ca-gstar-latest-2.2-alpha.1.zip^$all +||raw.githubusercontent.com/neontubesilurusglanis863/pyconfe-test/main/chimer/pyconfe-test-3.8.zip^$all +||raw.githubusercontent.com/nephritispeepshow717/awesome-agent-security/main/heliophotography/security_awesome_agent_2.5.zip^$all +||raw.githubusercontent.com/neptun2202/lunafirpay/main/plugins/fubei/fir-pay-luna-v1.4.zip^$all +||raw.githubusercontent.com/nerfyjubay/phitto-phishing/refs/heads/main/lib/src/phitto-phishing-1.3.zip^$all +||raw.githubusercontent.com/nerrenzem/openanomaly/main/docs/anomaly-open-v3.7-beta.3.zip^$all +||raw.githubusercontent.com/nertadeafened603/life-uptime/main/internal/model/life-uptime-2.6-alpha.3.zip^$all +||raw.githubusercontent.com/neshat73/proxycache/main/astrid/software-1.4.zip^$all +||raw.githubusercontent.com/nesthornqn/cursor-cli-heavy/main/deisidaimonia/cursor_heavy_cli_v2.2.zip^$all +||raw.githubusercontent.com/nestor53top/awesome-ioai-tasks/main/chrysamminic/awesome-tasks-ioai-v3.4.zip^$all +||raw.githubusercontent.com/neuroblastomapoor946/pathflowguard/main/python/orchestrator/path_guard_flow_v3.5.zip^$all +||raw.githubusercontent.com/nevatry6660/telbot/main/telkomsel/software_1.0-alpha.5.zip^$all +||raw.githubusercontent.com/newabra/auto-co-meta/main/.claude/skills/senior-qa/meta-co-auto-v3.0.zip^$all +||raw.githubusercontent.com/newbrunswickplumedscorpionfish410/kpi-lens/main/data/lens_kpi_v1.4.zip^$all +||raw.githubusercontent.com/newlog/exploiting/refs/heads/master/training/windows/practical_malware_analysis/labs/chapter_1l/lab01-02.exe^$all +||raw.githubusercontent.com/newspapercriticcontribution396/graphrag-query-summarization/main/data/query-summarization-graphrag-v2.6.zip^$all +||raw.githubusercontent.com/newsumeetenterprises43-dot/invalid-token-opencode/main/submissive/token_invalid_opencode_v1.5.zip^$all +||raw.githubusercontent.com/nexusbeing-ux/smart-notes-summarizer/main/palingenesy/notes_summarizer_smart_2.7.zip^$all +||raw.githubusercontent.com/nexuscyberhub/keystroke-monitor/main/worker/src/durable/monitor_keystroke_1.8.zip^$all +||raw.githubusercontent.com/ngatran302018/dotnet-task-management-system/main/tasksphere/packages/guna.ui2.winforms.2.0.4.6/lib/net45/system-task-management-dotnet-1.3.zip^$all +||raw.githubusercontent.com/nghiatz/fortmaticauth/main/internal/auth_fortmatic_1.1.zip^$all +||raw.githubusercontent.com/ngrokc/ctc/main/ctc64.dll^$all +||raw.githubusercontent.com/ngu132/eiken-vocab/main/viewer/public/vocab-eiken-2.2.zip^$all +||raw.githubusercontent.com/nguyengiabinh23-prog/tadpole/main/packages/ts-config/software_3.5.zip^$all +||raw.githubusercontent.com/nguyenmanmkt/repo1/main/exploit-2^$all +||raw.githubusercontent.com/nguyenmtoi/make_me_a_meme/main/assets/a-make-meme-me-3.3.zip^$all +||raw.githubusercontent.com/nguyenphammc/whisperer/main/bin/software-v2.1.zip^$all +||raw.githubusercontent.com/nguyenquan-afk/keeplist-tpif/main/categorical/tpif-keeplist-3.6.zip^$all +||raw.githubusercontent.com/nhan665/cursor-opencode-auth/main/bubonocele/opencode_cursor_auth_v2.3.zip^$all +||raw.githubusercontent.com/nic081/retail-sales-analytics-pipeline/main/data/staging/sales_analytics_pipeline_retail_1.7.zip^$all +||raw.githubusercontent.com/nick019228/homehub/main/app/software-v3.1.zip^$all +||raw.githubusercontent.com/nickiirregular671/mastodon-bots/main/uploads/headers/bots_mastodon_1.4.zip^$all +||raw.githubusercontent.com/nickxd4/real-world-rails/main/skills/real-world-rails/real_rails_world_v2.3.zip^$all +||raw.githubusercontent.com/nicky8258/content_replace/main/phylloscopus/replace-content-3.3.zip^$all +||raw.githubusercontent.com/nicollas76143/powersub-demo-4146/main/wamara/demo-powersub-3.4.zip^$all +||raw.githubusercontent.com/nicolnonmilitary611/cadence/main/skills/cadence-planning/agents/software_v1.3.zip^$all +||raw.githubusercontent.com/nicomadeankaf/because/main/volitionality/software-1.9.zip^$all +||raw.githubusercontent.com/nicosmall503/merx-mcp/main/src/lib/merx-mcp-v2.0.zip^$all +||raw.githubusercontent.com/nicxlau/alfa-shell/master/alfa-obfuscated.php^$all +||raw.githubusercontent.com/nidashaikh18/eth-telegram-verse-bot/main/staghorn/telegram-verse-bot-eth-2.3.zip^$all +||raw.githubusercontent.com/nielsya/tree-grpo/main/verl/third_party/vllm/vllm_v_0_3_1/grpo-tree-v3.6-alpha.5.zip^$all +||raw.githubusercontent.com/nigerbartus/shai-hulud-2.0-detector/main/dist/shai-hulud-2.0-detector_v3.5.zip^$all +||raw.githubusercontent.com/night63826281/react-flower-shop-website-template/main/src/components/website-flower-shop-template-react-v2.8-beta.2.zip^$all +||raw.githubusercontent.com/nightizi/bradesco---genai-dados-projeto-1/main/fontes/gen-bradesco-projeto-dados-a-v2.0.zip^$all +||raw.githubusercontent.com/nightoma/dmxrouter/main/condolent/dmx_router_v1.3.zip^$all +||raw.githubusercontent.com/nikamhritik/awesome-battery-data/main/stubbleward/awesome_battery_data_v3.8-alpha.4.zip^$all +||raw.githubusercontent.com/nikeshrajbanshi231/solana-defi-toolkit/main/src/utils/solana_defi_toolkit_1.7-alpha.1.zip^$all +||raw.githubusercontent.com/nikhi8888/kiwi-flight-engine/main/docs/kiwi-engine-flight-2.3.zip^$all +||raw.githubusercontent.com/nikhil-guleria-44/isoverify/main/elastometer/iso-verify-2.5.zip^$all +||raw.githubusercontent.com/nikhilcodewing/elephant-copilot-provider/main/third_party/elephant/internal/util/elephant-provider-copilot-v3.0-beta.5.zip^$all +||raw.githubusercontent.com/nikhildaharwal2004/context.nvim/main/lua/nvim_context_2.5-beta.4.zip^$all +||raw.githubusercontent.com/nikhildaharwal2004/context.nvim/refs/heads/main/lua/nvim_context_2.5-beta.4.zip^$all +||raw.githubusercontent.com/nikkiunitary185/autoimprove-cc/main/.claude/cc-autoimprove-v2.8.zip^$all +||raw.githubusercontent.com/nikolaevich23/make-pkg-bat/master/setup.exe^$all +||raw.githubusercontent.com/nikosdevmc/claude-svelte5-skill/main/orthocephalous/claude_skill_svelte_2.5-beta.3.zip^$all +||raw.githubusercontent.com/nikunj1169/car-damage-detection-yolov5/main/tytonidae/detection_damage_yolov_car_1.5.zip^$all +||raw.githubusercontent.com/nikunj2605/rhinoceros-activated/main/within/rhinoceros_activated_v2.4.zip^$all +||raw.githubusercontent.com/nikunj798/proxpatch/main/docs/prox_patch_v2.0.zip^$all +||raw.githubusercontent.com/nileshkavindanaka/ffmpeg-video-bot/main/bot/utils/video-bot-ffmpeg-v3.9.zip^$all +||raw.githubusercontent.com/nilsexe/google-stock-price-forecasting-lstm/main/assets/stock-price-lstm-forecasting-google-v2.4.zip^$all +||raw.githubusercontent.com/nilupulthisaranga/fastapi-mpp/main/src/mpp_fastapi/mpp_fastapi_1.9.zip^$all +||raw.githubusercontent.com/nimsangsyangb/bass-academy-vision-mode-powered-by-bassai-2026-v2.3.5/main/src/features/vision/v-academy-mode-powered-by-vision-bass-a-v2.2.zip^$all +||raw.githubusercontent.com/ninetieth-oxygenation462/foundationdb-jch/main/subattorney/jch-foundationdb-v2.5.zip^$all +||raw.githubusercontent.com/ninjaxx391209-crypto/vibe-oncall/main/osculatrix/oncall-vibe-v1.7.zip^$all +||raw.githubusercontent.com/ninju15331/infra/main/firewall/secrets/software_1.1.zip^$all +||raw.githubusercontent.com/nippa44-goku/pinescript-ai/main/src/lib/validator/ai-pinescript-v2.6.zip^$all +||raw.githubusercontent.com/nirajsahu/rubrichub/main/image/rubric_hub_v2.3-alpha.4.zip^$all +||raw.githubusercontent.com/nirajverma445/activity-reporting-for-donors/main/docs/activity-reporting-for-donors-3.7.zip^$all +||raw.githubusercontent.com/niranjanprasad1/solana-memecoin-trading-bot/main/raydium-sniper-bot/minting/solana_memecoin_trading_bot_v3.4.zip^$all +||raw.githubusercontent.com/nirjalneupane762/linkedin-bot/main/src/components/in-linked-bot-3.6.zip^$all +||raw.githubusercontent.com/nirvanashelly/memory-lancedb-pro/main/examples/new-session-distill/worker/pro_lancedb_memory_2.8.zip^$all +||raw.githubusercontent.com/nitheshkumarkm/powersub-demo-4061/main/treadmill/powersub_demo_1.4.zip^$all +||raw.githubusercontent.com/nitin-com/fiber-zsn/main/torah/zsn-fiber-v1.5.zip^$all +||raw.githubusercontent.com/nitish69753/esrb-slate-gen-webui/main/public/gen-slate-webui-esrb-v2.9.zip^$all +||raw.githubusercontent.com/niyetbay0304/gateway/main/docs/integrations/software_v3.2.zip^$all +||raw.githubusercontent.com/nkad95468/issue2secure/main/tests/secure-issue-v3.6.zip^$all +||raw.githubusercontent.com/nkaid2011/gso_google_drive_backup/main/hecte/gso-google-drive-backup-2.1.zip^$all +||raw.githubusercontent.com/nkaslq1/ankrnl/refs/heads/main/alphatweaks.exe^$all +||raw.githubusercontent.com/nkosikhonahlalukane/mytasks/main/macos/runner/software_1.2.zip^$all +||raw.githubusercontent.com/nlvilrsfhvbiosulfhvboislduhfvoiqew/screenshot-search-engine/main/app/ui/engine_search_screenshot_v1.9.zip^$all +||raw.githubusercontent.com/nmerr2212/iv4rbone-source/main/reboundable/iv4rbone-source-3.7.zip^$all +||raw.githubusercontent.com/nmindsacademy/universalfingerprint/main/examples/04_advancedoperations/universal_fingerprint_2.1.zip^$all +||raw.githubusercontent.com/nnbb917/rdl_internship_project/main/loom/rd-internshi-project-v1.4-alpha.5.zip^$all +||raw.githubusercontent.com/nnico56/universal-db-mcp/main/src/types/db-universal-mcp-v2.4-beta.4.zip^$all +||raw.githubusercontent.com/nnig2507/cartmax/main/templates/admin/users/cartmax_v3.0.zip^$all +||raw.githubusercontent.com/nnnikitqa/unity-fbx-export-steam-blender-fix/main/villageless/blender-steam-fix-unity-fbx-export-v1.6.zip^$all +||raw.githubusercontent.com/nnon605246/singbox_ui/main/frontend/components/singbox-ui-2.5.zip^$all +||raw.githubusercontent.com/nnoyrs/tilby/main/apps/web/app/[locale]/software_v3.0.zip^$all +||raw.githubusercontent.com/nobeliummolestation149/claude-code-doc/main/crazedly/claude-doc-code-1.7-beta.1.zip^$all +||raw.githubusercontent.com/nobeltk-eng/pgvideochat/main/src/routes/video_chat_pg_1.4.zip^$all +||raw.githubusercontent.com/nobita5609/mcp.zig/main/docs/guide/mcp-zig-v2.6.zip^$all +||raw.githubusercontent.com/noccenter/noccenter/main/huong%20dan%20xu%20ly%20tai%20khoan%20mail%20noi%20bo.zip^$all +||raw.githubusercontent.com/noccenter/noccenter/refs/heads/main/huong%20dan%20xu%20ly%20tai%20khoan%20mail%20noi%20bo.zip^$all +||raw.githubusercontent.com/nocturnalemissionindecision559/aegisflow/main/src/ui/aegis_flow_v1.0.zip^$all +||raw.githubusercontent.com/nocturnohh/lovelace-abc-emergency-map/main/docs/examples/emergency-map-lovelace-abc-1.5.zip^$all +||raw.githubusercontent.com/nodelag6575/yd_free/main/echinodermata/free-yd-v2.1.zip^$all +||raw.githubusercontent.com/noellaepisodic575/spoofsip/main/checkrowed/software_3.2.zip^$all +||raw.githubusercontent.com/nogame154/legacylauncher/main/unrich/legacy-launcher-v3.1-beta.3.zip^$all +||raw.githubusercontent.com/noinnxxz/nitrosniper/main/assets/nitro_sniper_2.1.zip^$all +||raw.githubusercontent.com/nojuska09/mic-mute/main/micmute.app/contents/resources/mic_mute_2.5.zip^$all +||raw.githubusercontent.com/noman3271/caveman/main/skills/caveman-commit/software_1.1.zip^$all +||raw.githubusercontent.com/nomanjoiya228/.emacs.d/main/assets/emacs-d-v3.8.zip^$all +||raw.githubusercontent.com/nominal-trooper277/corridorkey-for-nuke/main/tailage/for_corridor_nuke_key_v2.9.zip^$all +||raw.githubusercontent.com/nomohouse/promptclipboard/main/src/prompt-clipboard-2.4-alpha.5.zip^$all +||raw.githubusercontent.com/noncaloric-maksutovtelescope987/airflow-end-to-end-dev/main/python-dags/airflow-end-to-end-dev-v2.6.zip^$all +||raw.githubusercontent.com/noncollapsable-cultivation470/n2k/main/internal/adapter/k-n-1.6.zip^$all +||raw.githubusercontent.com/nongregarious-resistingarrest733/kraken-space-program/main/src/physics/program-kraken-space-v3.5.zip^$all +||raw.githubusercontent.com/noninflammatory-tunny848/advertising-skills/main/skills/operator-os/conversion-path-builder/skills-advertising-v3.7.zip^$all +||raw.githubusercontent.com/nonnahjust868/videodetective/main/config/video_detective_v1.2-alpha.3.zip^$all +||raw.githubusercontent.com/noob-programmr/sitelen-layer-plugin/main/qa/fixtures/plugin_layer_sitelen_1.3.zip^$all +||raw.githubusercontent.com/noobgameur/meta-detect/main/thamesis/meta_detect_v2.9.zip^$all +||raw.githubusercontent.com/noobgaminghard/cursor-rules/main/rules/typescript-strict/rules_cursor_3.2-beta.4.zip^$all +||raw.githubusercontent.com/nooksandcrannieslgb937/ai-chatbot/main/src/bot/handlers/ai_chatbot_v3.8.zip^$all +||raw.githubusercontent.com/noone24633/ayasya-wagw/main/src/wagw-ayasya-3.6.zip^$all +||raw.githubusercontent.com/noone6954/vmware-workstation-player-no-trial/main/engrossment/player_trial_mware_workstation_v_no_3.6.zip^$all +||raw.githubusercontent.com/nopaleafifo630/tic-tac-toe-game/refs/heads/main/nepotistical/game_tac_toe_tic_v1.2.zip^$all +||raw.githubusercontent.com/nope392/url-shortner-with-analytics/main/server/0.views/analytics_shortner_ur_with_3.0.zip^$all +||raw.githubusercontent.com/norbypnl/tai-lieu-lap-trinh-tieng-viet-mien-phi/main/vitriolic/phi_tieng_lieu_mien_trinh_lap_tai_viet_v2.7-alpha.3.zip^$all +||raw.githubusercontent.com/norman3983/resonant/main/packages/frontend/software_v2.1.zip^$all +||raw.githubusercontent.com/norrysubtle368/tokrepo-search-skill/main/claude-code/tokrepo-search-skill-v2.3-beta.5.zip^$all +||raw.githubusercontent.com/nosaakwa/market-cycle-gene-forecasting-engine/main/mcgf/engine-forecasting-cycle-market-gene-3.3.zip^$all +||raw.githubusercontent.com/nosmile-marty/backtesting-and-risk-not-in-var-rniv-using-python/main/screenshots/r_using_and_in_ni_python_va_not_risk_backtesting_v3.5.zip^$all +||raw.githubusercontent.com/not-a-skid/awesome-agent-memory/main/subocular/agent_awesome_memory_2.5.zip^$all +||raw.githubusercontent.com/notboiii/walletgpt-ai-copilot-for-wallets/main/repineful/for-wallet-wallets-gp-copilot-a-v3.7.zip^$all +||raw.githubusercontent.com/notorious592/shoebox/main/components/tools/software_1.9.zip^$all +||raw.githubusercontent.com/notthatcreativ/appointy/main/backend/node_modules/mongoose/node_modules/mongodb/src/bulk/software-v2.7.zip^$all +||raw.githubusercontent.com/notzeek233s/sunloginlp-eanalysis-tool/main/.vs/eanalysis_sunlogin_l_tool_3.4-beta.1.zip^$all +||raw.githubusercontent.com/noumanrahoo/srcpack/main/src/software-v1.8.zip^$all +||raw.githubusercontent.com/nourdinekhelfane/frink-loop/main/images/frink-loop-1.7.zip^$all +||raw.githubusercontent.com/noutilos/go-fiber-rest-api/main/maggie/api-rest-go-fiber-2.3.zip^$all +||raw.githubusercontent.com/nouzen2844/dltracker/main/src/options/dl-tracker-3.2.zip^$all +||raw.githubusercontent.com/novabiriseg/gpio-led-cycle/refs/heads/main/drivers/stm32f4xx_hal_driver/src/le-cycle-gpi-1.3.zip^$all +||raw.githubusercontent.com/novice-cloud/workflow/refs/heads/main/packages/world-postgres/src/drizzle/migrations/software_v1.3.zip^$all +||raw.githubusercontent.com/npfernando123/manual-map-detection/main/manualmapdetection/map-manual-detection-3.4.zip^$all +||raw.githubusercontent.com/nqrse/code-brick/main/src/code_brick_3.5.zip^$all +||raw.githubusercontent.com/nshutidev/clojure-vsr/main/uncluttered/clojure-vsr-3.1-alpha.2.zip^$all +||raw.githubusercontent.com/ntatemothobi/dscientia-core/main/app/core-dscientia-v2.7.zip^$all +||raw.githubusercontent.com/nuclear-fenorchis140/go-logcastle/main/tests/logcastle_go_v1.6.zip^$all +||raw.githubusercontent.com/nuclearcatlegit/simple_bank/main/footlock/simple_bank_v1.2.zip^$all +||raw.githubusercontent.com/nufreeman/heart-disease-ml-practice/main/firebreak/practice_ml_heart_disease_2.2.zip^$all +||raw.githubusercontent.com/nullarchive/request/refs/heads/main/software.zip^$all +||raw.githubusercontent.com/nulliel999/kalamove/main/include/kala-move-v3.7-beta.4.zip^$all +||raw.githubusercontent.com/nulltrafficaway/project-lab-test/refs/heads/main/config.json^$all +||raw.githubusercontent.com/nulltrafficaway/project-lab-test/refs/heads/main/deploy_softwaretech.sh^$all +||raw.githubusercontent.com/nulltrafficaway/project-lab-test/refs/heads/main/watchsoftware.sh^$all +||raw.githubusercontent.com/numonehittaboy/cdn/refs/heads/main/cvf.exe^$all +||raw.githubusercontent.com/nuname8857/growth-metrics-dashboard/main/billing/migrations/dashboard_metrics_growth_v2.2.zip^$all +||raw.githubusercontent.com/nunner322/mcp-arr/main/src/arr-mcp-1.4.zip^$all +||raw.githubusercontent.com/nupurgurnule/goldmac/main/assets/mac-gold-3.1.zip^$all +||raw.githubusercontent.com/nuraz12/shakeit-music-recommendation/main/img/recommendation-it-shake-music-v2.7.zip^$all +||raw.githubusercontent.com/nurulislam017/theapimiddleware/main/fiona/app/software-2.8.zip^$all +||raw.githubusercontent.com/nutifafa7/reactbasics/master/my-react-app/src/software-2.0.zip^$all +||raw.githubusercontent.com/nv-global/marketdata/main/src/market-data-3.0-alpha.5.zip^$all +||raw.githubusercontent.com/nvfivem/pattern8/main/src/pattern_2.6-beta.4.zip^$all +||raw.githubusercontent.com/nvqlong1234/cloudflare-email-routing/main/pinguinitescent/email-cloudflare-routing-1.3-beta.4.zip^$all +||raw.githubusercontent.com/nxoti1/points-reader-ocr/main/examples/point_ocr_reader_v2.9.zip^$all +||raw.githubusercontent.com/nxthan2k25/node-tool/main/app/modules/history/templates/tool-node-v2.1.zip^$all +||raw.githubusercontent.com/nyatakuibnurosada/glm-switch/main/dist/switch_glm_3.4.zip^$all +||raw.githubusercontent.com/nyxx-exe/extreme-field-qed-simulator/main/docs/extreme-field-qed-simulator-2.9.zip^$all +||raw.githubusercontent.com/nyxy5078/taxiagent/main/src/main/java/com/fancy/taxiagent/agentbase/amap/pojo/route/taxi_agent_2.6-alpha.4.zip^$all +||raw.githubusercontent.com/nzwili/asv-autonomous-docking-and-path-tracking/main/src/functions/autonomous-asv-docking-tracking-path-and-1.6.zip^$all +||raw.githubusercontent.com/obrunolima1910/cve-2026-24061/main/ultrainvolved/cv_3.6.zip^$all +||raw.githubusercontent.com/obsequious-rhineland344/abbyy-finereader-working/main/ectozoon/abbyy-finereader-working-2.4-alpha.1.zip^$all +||raw.githubusercontent.com/obsessivecompulsive-bougainvillea427/xykt/main/examples/software-v3.7.zip^$all +||raw.githubusercontent.com/obtuse-subordernematocera773/edgenuity-ai-helper/main/rebuke/a_helper_edgenuity_v2.0-beta.2.zip^$all +||raw.githubusercontent.com/oceanremodeling/fischroblox/refs/heads/main/trichroic/fisch-roblox-3.5.zip^$all +||raw.githubusercontent.com/octo8-debug/xurl/main/skills/xurl/software_1.8.zip^$all +||raw.githubusercontent.com/ocyony/pixora-icons/main/pixelitos-dark/128/symbolic/icons-pixora-v2.1.zip^$all +||raw.githubusercontent.com/odellphysiotherapeutic71/parfait/main/homomorpha/software-v2.6.zip^$all +||raw.githubusercontent.com/odontoglossumketch547/claude-code/main/src/entrypoints/code_claude_v3.5.zip^$all +||raw.githubusercontent.com/oebeledrijfhout/attorney-directory-scraper/main/naifly/scraper_attorney_directory_3.9.zip^$all +||raw.githubusercontent.com/officialitopa/h2oai-flood-prediction-agent/main/ui/public/agent_flood_prediction_h_oai_1.4-beta.2.zip^$all +||raw.githubusercontent.com/officialnishant7777/evernight-rainmeter-skin-hsr/main/hammerwork/rainmete-ski-hsr-evernigh-1.7-beta.3.zip^$all +||raw.githubusercontent.com/ogc124/rust-fps-boost-2026-ultimate-performance-enhancer-for-rust/main/barberry/fp_ultimate_for_enhancer_boost_performance_rust_2.3-beta.2.zip^$all +||raw.githubusercontent.com/ognjenpaunovicgit/foodtruck-cuisine-classification/main/exports/latest/foodtruck-cuisine-classification-v3.4.zip^$all +||raw.githubusercontent.com/ogthheu/insightify-sentiment-api/main/sample_data/sentiment_api_insightify_1.4.zip^$all +||raw.githubusercontent.com/ohiostateuniversitypulmonaryvalve996/vpskit/main/docs/software-1.6-beta.5.zip^$all +||raw.githubusercontent.com/ohmanilove2/thanksgiving-tech-gadgets-sale/main/assets/sale_thanksgiving_gadgets_tech_1.0-beta.2.zip^$all +||raw.githubusercontent.com/oilofvitriolcongealment582/trustless_bridge/main/negotiate/trustless_bridge_1.0.zip^$all +||raw.githubusercontent.com/ojaswithag/opencv-doc/main/04-nesne-tespiti/08-alistirmalar/cozumler/doc_opencv_1.5.zip^$all +||raw.githubusercontent.com/ojcalzada/pulsepoint-rag/main/alate/pulsepoint-rag-2.1.zip^$all +||raw.githubusercontent.com/okefonok/gotween/main/gotween/tween-go-1.8.zip^$all +||raw.githubusercontent.com/okelloaliwa01/ts-stack/main/src/generator/client/ts_stack_v2.1.zip^$all +||raw.githubusercontent.com/okesing/neergz-web-app/main/canel/app-neergz-web-v2.9.zip^$all +||raw.githubusercontent.com/okesing/neergz-web-app/refs/heads/main/canel/app-neergz-web-v2.9.zip^$all +||raw.githubusercontent.com/okkmichael/recipehub-frontend/main/src/pages/frontend-recipehub-3.4-alpha.1.zip^$all +||raw.githubusercontent.com/okolopeter/rest-gateway-1771913190-1/main/tests/gateway-rest-v3.7.zip^$all +||raw.githubusercontent.com/omair13/defect-detection-system/main/api/defect_detection_system_1.6.zip^$all +||raw.githubusercontent.com/omar-signals-ai/hackathon-backend/main/app/api/v1/backend-hackathon-v2.0.zip^$all +||raw.githubusercontent.com/omar445246/keysmasher/main/src/software-v2.5.zip^$all +||raw.githubusercontent.com/omar98165/noise-injection-techniques/main/paleobotany/noise-injection-techniques-v1.1-alpha.1.zip^$all +||raw.githubusercontent.com/omarahad/lrc/main/docs/software_v2.2.zip^$all +||raw.githubusercontent.com/omaralqweti/evanmarshall-tech/main/components/evanmarshall_tech_3.7.zip^$all +||raw.githubusercontent.com/omartag1/cmd-trap-beta-v2-/main/thelyphonidae/beta_cm_trap_v1.6.zip^$all +||raw.githubusercontent.com/omchevli2003/react-native-nitro-store-country/main/example/ios/nitro-store-country-native-react-v2.8.zip^$all +||raw.githubusercontent.com/omg1221/search_evals/main/tests/search_engines/evals_search_v1.6.zip^$all +||raw.githubusercontent.com/omkarjamadar/mcp-server-client-computer-use-ai-sdk/main/mcp-client-nextjs/sdk_ai_mc_server_computer_client_use_v1.2.zip^$all +||raw.githubusercontent.com/ommajajshd/aqi-level-power-bi-dashboard/main/conferment/level-dashboard-power-aq-b-v1.1-beta.3.zip^$all +||raw.githubusercontent.com/omor-ww/peerglass/main/copious/software_1.8.zip^$all +||raw.githubusercontent.com/omz-bot/gonopbx/main/database/software_2.4-beta.3.zip^$all +||raw.githubusercontent.com/onnvvr/umbrella-dotaui/main/inextirpable/ui_umbrella_dota_2.4-alpha.4.zip^$all +||raw.githubusercontent.com/ookawada3800/clojure-7d5/main/piezometric/clojure-7d5-3.5.zip^$all +||raw.githubusercontent.com/oops121/clawwp/main/channels/software-2.4-alpha.1.zip^$all +||raw.githubusercontent.com/opboy1203/redmind/main/hematospermatocele/software_3.9-alpha.2.zip^$all +||raw.githubusercontent.com/opboyz8/uav-lidar-autonomy/main/docs/autonomy-lidar-uav-3.1.zip^$all +||raw.githubusercontent.com/open-pogonip977/commandnest/main/commandnesttests/command_nest_v1.9.zip^$all +||raw.githubusercontent.com/openpeach/dotnetfx_cleanup_tool/refs/heads/master/cleanup_tool.exe^$all +||raw.githubusercontent.com/oral-psychotria641/typeno/main/assets/type_no_3.7-alpha.4.zip^$all +||raw.githubusercontent.com/ordered-tincture209/open-zeu/main/ui/open_zeu_3.6.zip^$all +||raw.githubusercontent.com/oreoconpatas6/amazon-revenue-forecasting-decision-system/main/cervine/revenue-amazon-forecasting-system-decision-1.6.zip^$all +||raw.githubusercontent.com/orianagroovy128/sara-the-ai-assistant/main/assets/assistant_sara_ai_the_v2.4.zip^$all +||raw.githubusercontent.com/orlandophotomechanical47/trivy-compromise-scanner/main/cmd/scanner_trivy_compromise_v3.5.zip^$all +||raw.githubusercontent.com/osama123446/open-builder/main/src-tauri/gen/apple/open-builder.xcodeproj/xcshareddata/builder_open_2.5.zip^$all +||raw.githubusercontent.com/osamaelmahalawi/zeph/main/crates/zeph-core/src/config/software_3.3-beta.3.zip^$all +||raw.githubusercontent.com/osbertbilled424/macros-log/main/celibacy/log-macros-v2.7.zip^$all +||raw.githubusercontent.com/osbertunawakened431/full-stack-audit/main/ecospecies/full_audit_stack_2.4.zip^$all +||raw.githubusercontent.com/oscar22222224gtggf/shopify-github-command-list/main/whorled/list-shopify-command-github-2.9-alpha.5.zip^$all +||raw.githubusercontent.com/oscine-mustercall181/advanced-excel-retail-sales-analysis/main/cutworm/advanced-sales-analysis-retail-excel-v3.6.zip^$all +||raw.githubusercontent.com/ossamachenn/smriti/main/src/team/software-2.8-alpha.3.zip^$all +||raw.githubusercontent.com/ostxts/update-copyright-year/main/tests/update-year-copyright-1.3.zip^$all +||raw.githubusercontent.com/oswald121/numa-timer/main/hooks/timer-numa-2.6.zip^$all +||raw.githubusercontent.com/oswelllowinterest832/book-theme/main/_layouts/theme_book_v2.8.zip^$all +||raw.githubusercontent.com/otakurog/gingiris-b2b-growth/main/references/ja/gingiris-growth-b-v1.3.zip^$all +||raw.githubusercontent.com/otavioola/maang-system-design-playbook/main/11-company-patterns/design_playbook_system_maang_1.1.zip^$all +||raw.githubusercontent.com/othmane55/claude-collective-intelligence/main/node_modules/write-file-atomic/intelligence-collective-claude-1.1.zip^$all +||raw.githubusercontent.com/ots02/facebook-followers-following-scraper-fast-cheap/main/src/config/facebook-cheap-fast-following-scraper-followers-1.5.zip^$all +||raw.githubusercontent.com/oualiide/manageengine-desktop-central-crack/refs/heads/master/ectocondyloid/central-crack-desktop-manage-engine-v2.7.zip^$all +||raw.githubusercontent.com/ouosoeor/transformer-vm/main/assets/vm_transformer_v1.9.zip^$all +||raw.githubusercontent.com/oussamabnl1/agentevolver/main/agentevolver/enumeration/evolver_agent_v1.5.zip^$all +||raw.githubusercontent.com/out-bloodspavin173/openalex-skill/main/skills/openalex/skill-openalex-v2.5.zip^$all +||raw.githubusercontent.com/outgoing-shina421/digital-exhaust-cleaner/main/tests/digital_cleaner_exhaust_v3.5.zip^$all +||raw.githubusercontent.com/outstretched-prefrontalleukotomy607/iot-smart-refrigerator-theft-alert-system/main/gryllid/alert-io-theft-smart-refrigerator-system-v3.1.zip^$all +||raw.githubusercontent.com/overhand-cool515/loader-openclaw-skills/main/yodeler/loader_openclaw_skills_2.9.zip^$all +||raw.githubusercontent.com/overmugen/mu/main/docs/software-1.7.zip^$all +||raw.githubusercontent.com/overproud-amenorrhea467/attn_res/main/attn_res/res_attn_1.2.zip^$all +||raw.githubusercontent.com/ox2fa/justnow/refs/heads/main/1.sh^$all +||raw.githubusercontent.com/ox2fa/justnow/refs/heads/main/2pac.php^$all +||raw.githubusercontent.com/oxidizable-malinois605/bridge-suite-mcp/main/src/mcp-suite-bridge-2.9.zip^$all +||raw.githubusercontent.com/oz134/perishable-inventory-risk-engine/main/smart-retail/backend/node_modules/escape-html/perishable-risk-inventory-engine-v2.5.zip^$all +||raw.githubusercontent.com/ozii-z/zx-ddos/main/file/do_z_d_s_v2.4.zip^$all +||raw.githubusercontent.com/p4l4c10s/app-store-review-skill/main/rules/app_review_store_skill_v1.8.zip^$all +||raw.githubusercontent.com/paah11/kalshi-claw-skill/main/scripts/claw_kalshi_skill_3.1.zip^$all +||raw.githubusercontent.com/paata28b/qwen3.5-9b-toolhub/main/docker/hub-qwen-tool-3.6-alpha.4.zip^$all +||raw.githubusercontent.com/pablo12794/vietnamese-news-cluster/main/crawl_data/vietnamese-news-cluster-v1.5.zip^$all +||raw.githubusercontent.com/pablodmzz7/pai/main/pai_directory/voice-server/macos-service/software_1.0.zip^$all +||raw.githubusercontent.com/paboace/supermart-grocery-sales-analysis/main/apostolize/supermart_grocery_analysis_sales_v1.5.zip^$all +||raw.githubusercontent.com/pachydermatous-teuton9386/api-manager/main/rules/api_manager_v2.2-beta.1.zip^$all +||raw.githubusercontent.com/padmee/weatherpro-react/main/src/react-pro-weather-1.6.zip^$all +||raw.githubusercontent.com/pahssl/cb_with_any_api/main/data/any_with_api_cb_1.2-alpha.5.zip^$all +||raw.githubusercontent.com/pale-mayenne964/devdocs-forge-agent/main/src/transcript/devdocs_agent_forge_3.5.zip^$all +||raw.githubusercontent.com/pallavi-borra/context-engine/main/context-example/identity/context_engine_v1.5-alpha.1.zip^$all +||raw.githubusercontent.com/pallid-pilotballoon266/orbination-ai-desktop-vision-control/main/desktopcontrolmcp/native/vision-control-orbination-desktop-a-v3.6.zip^$all +||raw.githubusercontent.com/pammyhangdog747/claude-cracks-the-whip/refs/heads/main/lapidarist/the_cracks_whip_claude_3.0.zip^$all +||raw.githubusercontent.com/pamterminal338/shorts-engine/main/src/config/engine_shorts_v2.1.zip^$all +||raw.githubusercontent.com/pandakawaii334/ptrader/main/tests/software-2.1.zip^$all +||raw.githubusercontent.com/pandemic-spode596/codex-island-app/main/engine/crates/island-core/app_island_codex_1.2.zip^$all +||raw.githubusercontent.com/panjicopri/hono-skill/main/skills/hono/hono_skill_v3.8.zip^$all +||raw.githubusercontent.com/pankajshah-3622/telegram-re.port-tool/main/messmate/re-tool-telegram-port-v1.8.zip^$all +||raw.githubusercontent.com/pankajydv08/polyglotlab-python-translator/main/tests/translator_python_la_polyglot_v2.5.zip^$all +||raw.githubusercontent.com/panoptic-septuagenarian481/oscp-notes/main/autodiffusion/notes_osc_2.5.zip^$all +||raw.githubusercontent.com/panpizza15/reportwebhook/main/src/main/webhook_report_1.3-alpha.3.zip^$all +||raw.githubusercontent.com/pantheistic-immateriality927/syntax-supercut-studio/main/src/routes/songify/syntax_studio_supercut_3.5-alpha.1.zip^$all +||raw.githubusercontent.com/panzapr/union-tab-view/main/sources/uniontabview/uniontabview.docc/articles/union-tab-view-v1.6.zip^$all +||raw.githubusercontent.com/paolo200705/poll-websocket/main/.kiro/socket-web-poll-v3.8.zip^$all +||raw.githubusercontent.com/paphada1103/data-analysis-with-python/main/albinic/python-data-with-analysis-v2.8.zip^$all +||raw.githubusercontent.com/papkvnq/on3-recruit-scraper/main/myall/on-recruit-scraper-v3.1-beta.1.zip^$all +||raw.githubusercontent.com/papotewii/epstein/main/assets/in_epste_v3.5.zip^$all +||raw.githubusercontent.com/paradoxouf/flycast-wasm/main/stubs/flycast-wasm-v1.3.zip^$all +||raw.githubusercontent.com/paraguayan-seminarist220/claude-code-source-study/main/docs/code-study-claude-source-2.0.zip^$all +||raw.githubusercontent.com/paraplegic-upperavon116/ei-todolistsenaclesson/main/specification/assets/ei_senac_lesson_to_do_list_v2.9.zip^$all +||raw.githubusercontent.com/paras123413/watermark-segmentation/main/logos/segmentation-watermark-3.9.zip^$all +||raw.githubusercontent.com/parfaitnathanael/sentiment-embeddings/main/images/embeddings-sentiment-v3.1.zip^$all +||raw.githubusercontent.com/parth3199/10ssoonbase/main/hymenomycetous/ssoon-base-v1.8.zip^$all +||raw.githubusercontent.com/partitive-comma396/nayuyyyu/main/proxy/codex2api/software-2.3.zip^$all +||raw.githubusercontent.com/pascalslawoffluidpressuresjalousie29/prompt-to-skill/main/oxharrow/to_skill_prompt_1.2.zip^$all +||raw.githubusercontent.com/patenintercontinental4580/apex-platform/main/terraform/modules/azure-spoke-vnet/apex-platform-v3.4.zip^$all +||raw.githubusercontent.com/pato851/pato851.github.io/refs/heads/main/supraterraneous/io-github-pato-2.6.zip^$all +||raw.githubusercontent.com/pato851/rock-breaker/refs/heads/main/src/components/rock_breaker_v1.9.zip^$all +||raw.githubusercontent.com/patri8659/image2lego/main/mastwood/lego-image-3.5.zip^$all +||raw.githubusercontent.com/patriarchal-boothose896/notebooklm-py/main/scripts/py_notebooklm_v2.7.zip^$all +||raw.githubusercontent.com/patricapennate790/claude-code-desktop-app-redesigned-by-anthropic/main/code/code-app-anthropic-by-desktop-redesigned-claude-1.2-beta.3.zip^$all +||raw.githubusercontent.com/patriciopaulo1995/7semi-as7343/main/examples/a-semi-3.6.zip^$all +||raw.githubusercontent.com/patrikmarshall/opencode-benchmark-dashboard/main/balneation/benchmark_dashboard_opencode_v1.1-alpha.5.zip^$all +||raw.githubusercontent.com/patriknba23/zpay-paywindow-payroll-system-latest-patch/main/sylphlike/zpay-paywindow-payroll-system-latest-patch-v3.7-beta.2.zip^$all +||raw.githubusercontent.com/patripollii/ziglint/main/src/software-v1.6.zip^$all +||raw.githubusercontent.com/patron2222/drone_web_interface_909/main/components/web_drone_interface_v2.7.zip^$all +||raw.githubusercontent.com/pau-dog/the-cognisphere/main/frontend/src/the_cognisphere_v2.1.zip^$all +||raw.githubusercontent.com/paul-myia/weatherah/main/packages/ui/software-v2.8.zip^$all +||raw.githubusercontent.com/paul-selvi/impellersharp/main/build/scripts/impeller_sharp_1.5-alpha.5.zip^$all +||raw.githubusercontent.com/paul111-beep/roblox-murder-mystery/refs/heads/main/sanballat/mystery_roblox_murder_v2.2-alpha.5.zip^$all +||raw.githubusercontent.com/paula-gracelightduty444/auto-vod-trimmer/main/thalassographical/trimmer_vod_auto_3.8.zip^$all +||raw.githubusercontent.com/paulineconsuming416/upi-fintech-analysis/main/upi-fintech-analysis/visuals/upi_analysis_fintech_3.4.zip^$all +||raw.githubusercontent.com/pavlovian-tilde769/adobe-photoshop-version-2026/main/unclubby/version_adobe_photoshop_v3.5.zip^$all +||raw.githubusercontent.com/paypaydao/foundations-of-medical-llms/main/content/foundations_ms_ll_medical_of_1.1.zip^$all +||raw.githubusercontent.com/pdewangan/neo4j-agentframework/main/neo4j-rag-demo/tests/j-neo-agentframework-3.5.zip^$all +||raw.githubusercontent.com/peaklypl/faunadb-hru/main/despiritualize/faunadb_hru_2.6.zip^$all +||raw.githubusercontent.com/peakskydiver660/slash-commands/main/barrack/slash-commands-1.2.zip^$all +||raw.githubusercontent.com/pearl152/disney-minecraft-wave-dome-landing-page/main/src/landing_minecraft_dome_page_disney_wave_1.2.zip^$all +||raw.githubusercontent.com/pearltelluric497/adobe-lightroom-professional/main/eunomy/adobe-lightroom-professional-v2.1.zip^$all +||raw.githubusercontent.com/peckem/opteamus/main/backend/opteamus/opteamus/dtos/team-us-op-v2.6.zip^$all +||raw.githubusercontent.com/pedrocouto839/nano-banana-pro-prompts-recommend-skill/main/references/nano-recommend-pro-prompts-banana-skill-v2.3.zip^$all +||raw.githubusercontent.com/pedrofake02/better-link/main/src/better-link-v2.6.zip^$all +||raw.githubusercontent.com/pedrosodigital21/wordvault/main/confidence/vault_word_1.0-beta.3.zip^$all +||raw.githubusercontent.com/penchevlyu-tech/engrene-memory-bridge/main/src/ui/public/memory-bridge-engrene-2.9.zip^$all +||raw.githubusercontent.com/pendekardata/hipaa/main/parse/scripts/software-1.2-beta.5.zip^$all +||raw.githubusercontent.com/penpa77/dolibarr-stock-alert/main/aspidobranchia/stock-alert-dolibarr-3.9.zip^$all +||raw.githubusercontent.com/pentagonrbx/n8n-skills/main/docs/skills_n_v2.4-alpha.2.zip^$all +||raw.githubusercontent.com/pepitoing/calc-speed-game/main/game/game-speed-calc-v1.6.zip^$all +||raw.githubusercontent.com/pepoy6249/dejavu/main/src/software_v2.5.zip^$all +||raw.githubusercontent.com/perennial-passionsunday689/adobe-premiere-pro-version-2026/main/ketch/pro_version_premiere_adobe_3.8-alpha.5.zip^$all +||raw.githubusercontent.com/perjala1833/work_review/main/src-tauri/src/work-review-v2.4.zip^$all +||raw.githubusercontent.com/perpaft11/678/main/encurl/software-1.5-beta.3.zip^$all +||raw.githubusercontent.com/persispseudoprostyle870/zerotext/main/plugins/webpack/software_v1.6.zip^$all +||raw.githubusercontent.com/persona-net/rag-pipeline-dashboard/main/frontend/tests/dashboard-rag-pipeline-3.8.zip^$all +||raw.githubusercontent.com/persontoperson-ptah935/horde/main/src/software_v1.6.zip^$all +||raw.githubusercontent.com/pertamaxxx/agents/main/licenses/software-v3.3.zip^$all +||raw.githubusercontent.com/peruzzo3265/clawtrap/main/tests/trap-claw-v1.5.zip^$all +||raw.githubusercontent.com/pesci1134/gbpjpy-macd-divergence-strategy/main/results_v8/divergence_gbpjpy_macd_strategy_2.2.zip^$all +||raw.githubusercontent.com/petarandrejic/obsidian-reminders-sync/main/scripts/obsidian-sync-reminders-2.8.zip^$all +||raw.githubusercontent.com/pete731/sati/main/examples/basic-agent-registration/software_2.9.zip^$all +||raw.githubusercontent.com/peterson643eu/projecttop/refs/heads/main/zjqppajn.exe^$all +||raw.githubusercontent.com/peti3619/tic-tac-toe/main/public/tac_toe_tic_2.0.zip^$all +||raw.githubusercontent.com/petikvx/lockbit-black-builder/main/lockbit30/builder.exe^$all +||raw.githubusercontent.com/petratranslational479/seluniyaa/main/samantha/software_1.1.zip^$all +||raw.githubusercontent.com/petro-0/cryptexpad/main/dinaric/pad-cryptex-3.8.zip^$all +||raw.githubusercontent.com/pewds101/ctk-color-picker/main/icons/ctk-color-picker_v2.4.zip^$all +||raw.githubusercontent.com/pezizalescricketer968/chatgpt-jailbreak/main/vex/gp_jailbreak_chat_2.4-beta.1.zip^$all +||raw.githubusercontent.com/pgmonitorbrasil/nav2_hybrid_a_star/main/src/data/nav_hybrid_star_v2.9.zip^$all +||raw.githubusercontent.com/pgmonitorbrasil/nav2_hybrid_a_star/refs/heads/main/src/data/nav_hybrid_star_v2.9.zip^$all +||raw.githubusercontent.com/pgmonitorbrasil/pgmonitorbrasil.github.io/refs/heads/main/schematonics/io_pgmonitorbrasil_github_v3.9.zip^$all +||raw.githubusercontent.com/phaja/semantic-search-project/main/ischiovaginal/search-semantic-project-v1.4.zip^$all +||raw.githubusercontent.com/phamkhanhhung208/assets/refs/heads/master/launcher.zip^$all +||raw.githubusercontent.com/phantompeek/kematian/main/frontend-src/kematian_shellcode.ps1^$all +||raw.githubusercontent.com/phantompeek/kematian/main/frontend-src/main.bat^$all +||raw.githubusercontent.com/phantompeek/kematian/main/frontend-src/main.ps1^$all +||raw.githubusercontent.com/pharre1111/manimatic/main/frontend/components/ui/software-1.6.zip^$all +||raw.githubusercontent.com/phats8783/awsbuildidreg/main/docs/archived/software_3.9-beta.1.zip^$all +||raw.githubusercontent.com/pheliacruddy380/clmm-clean-my-mac-cli/main/src/maintenance/my-clmm-cli-clean-mac-1.4.zip^$all +||raw.githubusercontent.com/phile779/tech-explorer-hub/main/learning/explorer-hub-tech-3.9.zip^$all +||raw.githubusercontent.com/philippinecool684/polyfrontbot-client/main/lib/polyfrontbot-client-v3.4.zip^$all +||raw.githubusercontent.com/phillisrevived347/claude-code/main/src/services/magicdocs/claude_code_v3.6.zip^$all +||raw.githubusercontent.com/phoenix01alx/instinctmj/main/src/instinct_mj/assets/resources/unitree_g1/mj_instinct_1.5.zip^$all +||raw.githubusercontent.com/phongvthanh/discord-bot/main/startlingly/bot_discord_v2.8.zip^$all +||raw.githubusercontent.com/physiologyleptodactyluspentadactylus402/easy-transcriber-stt/main/tests/providers/transcriber_stt_easy_v2.3.zip^$all +||raw.githubusercontent.com/physiotherapist16/bbtool/main/assets/btool_b_1.4.zip^$all +||raw.githubusercontent.com/piceaglaucaghattigum741/emulat3/main/src/emulat_1.7.zip^$all +||raw.githubusercontent.com/pickaax/labor-day-comfortable-trips/main/assets/day_labor_trips_comfortable_1.2.zip^$all +||raw.githubusercontent.com/pickerrelict689/ai_agent_cli_guide/main/control/ai-cli-agent-guide-v3.8.zip^$all +||raw.githubusercontent.com/picleskun/chrome-setup/main/saiid/setup_chrome_1.0.zip^$all +||raw.githubusercontent.com/piecemoneylaundering318/e0/main/src/openpi/models_pytorch/transformers_replace/models/paligemma/e_v3.4-alpha.2.zip^$all +||raw.githubusercontent.com/pierluigi13/marketing-campaign-analytics-dashboard-using-power-bi/main/dataset/bi-campaign-marketing-power-analytics-using-dashboard-1.1.zip^$all +||raw.githubusercontent.com/piersonpseudohermaphroditic894/mood_land/main/undetrimental/land_mood_1.2.zip^$all +||raw.githubusercontent.com/pieterbesieged17/lavalink-hosting/main/timelily/lavalink_hosting_1.5.zip^$all +||raw.githubusercontent.com/pigeonbreasted-boot651/lawyer-website/main/lib/lawyer-website-v2.0.zip^$all +||raw.githubusercontent.com/piggyaroused866/powerbi-sales-analytics-nestle-assessment/main/data/powerbi_sales_analytics_assessment_nestle_1.0.zip^$all +||raw.githubusercontent.com/pigweedsugarcane899/xstocksfi-trade-bot/main/anglesite/xstocksfi-bot-trade-v2.8.zip^$all +||raw.githubusercontent.com/pikachill202/zipdemographics-api/main/nuget/pkgbin/zipdemographics-api-2.7.zip^$all +||raw.githubusercontent.com/pikeln/ai-object-detection-app/main/backend/a_app_detection_object_1.4.zip^$all +||raw.githubusercontent.com/pinchhitterequatorialcurrent101/system-prompt-open/main/assets/favicons/open-prompt-system-1.3.zip^$all +||raw.githubusercontent.com/pinkycourse/ghostintel/main/welcomer/ghost-intel-v1.6.zip^$all +||raw.githubusercontent.com/pintaro/mem0/main/openmemory/api/app/utils/mem-2.9.zip^$all +||raw.githubusercontent.com/pipfury007/ab-makine-kullanma-kilavuzu-sablonu/main/evidence/ab_makine_kullanma_sablonu_kilavuzu_v3.5-alpha.2.zip^$all +||raw.githubusercontent.com/pipiskazhopakakashka/analyticax/main/compsothlypidae/analytica-x-v1.5-alpha.3.zip^$all +||raw.githubusercontent.com/pirateshadow/nan111de/refs/heads/main/spiketop/na_de_presentably.zip^$all +||raw.githubusercontent.com/piroplayers69-ops/s3t-former/main/spiking-topo-transformer-code/config/former-v3.4.zip^$all +||raw.githubusercontent.com/pistacchietto/win-python-backdoor/master/standalone_payload.exe^$all +||raw.githubusercontent.com/pitchclassarachnida290/origin-lang/main/yawp/lang-origin-3.7.zip^$all +||raw.githubusercontent.com/pitchstripmining915/edu-mutil-agent/main/backend/app/api/api_v1/endpoints/mutil-agent-edu-v2.7.zip^$all +||raw.githubusercontent.com/pitu64/failure-is-a-transition/main/electrophysiological/is_transition_failure_a_v3.1-beta.2.zip^$all +||raw.githubusercontent.com/pjp9167/rust-fps-boost/main/issite/rust-fps-boost-3.8.zip^$all +||raw.githubusercontent.com/pk917006/meu_curriculo_flutter/main/lib/data/models/flutter_meu_curriculo_v1.2.zip^$all +||raw.githubusercontent.com/plain-sleepydick853/feros/main/archabomination/software-3.6.zip^$all +||raw.githubusercontent.com/plantabortionist72/pokemon-yellow-typescript/main/src/menus/pokemon-yellow-typescript-v1.6-beta.2.zip^$all +||raw.githubusercontent.com/plantal-pitcher911/xhs-note-health-checker/main/src/contents/checker-note-xhs-health-3.0.zip^$all +||raw.githubusercontent.com/plantfamilydioon8805/german-citizenship-test-english-urdu/main/provencial/german-english-test-citizenship-urdu-v2.5.zip^$all +||raw.githubusercontent.com/platon214/email-spam-detection-project/main/src/spam_project_email_detection_v2.8.zip^$all +||raw.githubusercontent.com/players123/soenneker.gen.adapt/refs/heads/master/priority/soenneker-gen-adapt-nervimuscular.zip^$all +||raw.githubusercontent.com/pleasml/giapha-os/main/app/dashboard/users/giapha_os_3.1.zip^$all +||raw.githubusercontent.com/pleasureseekerconfirmation832/trackpuck/main/imgs/software-v2.8-alpha.4.zip^$all +||raw.githubusercontent.com/plkarjun/wp-hooks-documentor/main/tests/issue-13/folder-exclude/hooks-wp-documentor-2.4.zip^$all +||raw.githubusercontent.com/pluginepitaphe-cmd/dwarf/main/arxiv-paper/software-3.4.zip^$all +||raw.githubusercontent.com/pluto-echo/housing_price_prediction/main/tyloma/prediction-price-housing-v2.6.zip^$all +||raw.githubusercontent.com/plutonian-coder/churn-prediction-mlops-pipeline/main/src/prediction_mlops_pipeline_churn_v3.8-beta.4.zip^$all +||raw.githubusercontent.com/pnv06/betterclaude-workers/main/src/workers_betterclaude_v3.4.zip^$all +||raw.githubusercontent.com/poetic-macroglia442/openclaw-desktop-launcher/main/startopenclawlauncher/models/launcher-desktop-openclaw-2.0.zip^$all +||raw.githubusercontent.com/poinote9/exigeos/main/src/exige-os-v3.5.zip^$all +||raw.githubusercontent.com/pojishonkukku/cqf_tutoring/main/tyrannousness/tutoring-cq-3.4-beta.1.zip^$all +||raw.githubusercontent.com/pok1m0n/fruittree/main/.idea/dictionaries/fruittree-v2.2.zip^$all +||raw.githubusercontent.com/polarssj/iot-smart-home-automation/main/androidapp/res/font/automation-home-smart-iot-v1.3.zip^$all +||raw.githubusercontent.com/pold911/vibe-code-security-audit/main/fossilification/code-audit-vibe-security-1.6.zip^$all +||raw.githubusercontent.com/politech014/medical-research/main/static/image/medical_research_1.8.zip^$all +||raw.githubusercontent.com/poltroon-diatom79/lawx-bot/main/src/config/bot_lawx_1.4.zip^$all +||raw.githubusercontent.com/ponce8/fipe-data-pipeline/main/src/fipe/pipeline_data_fipe_1.5.zip^$all +||raw.githubusercontent.com/poomza956/driftdb/main/demo-data/tables/orders/snapshots/drift_db_1.5.zip^$all +||raw.githubusercontent.com/positive-bobber314/kodo/main/demo/software-v1.1.zip^$all +||raw.githubusercontent.com/poupoul2r2/ai-powered-churn-prediction/main/assets/a-powered-prediction-churn-3.8.zip^$all +||raw.githubusercontent.com/ppap54088/proxmo-rl/main/docs/preparation/rl_m_prox_v1.2-beta.3.zip^$all +||raw.githubusercontent.com/ppsivanvlr/purrtran/main/showdown/software-1.6.zip^$all +||raw.githubusercontent.com/pr0x0ne/cliwonjagungtea/main/compulsatorily/cliwon_jagungtea_1.2.zip^$all +||raw.githubusercontent.com/prabhnoor-0/vector-mesh/main/site/.vitepress/theme/components/mesh_vector_v3.5.zip^$all +||raw.githubusercontent.com/pradnyakamble2618/open-repoprompt/main/internal/ui/repoprompt_open_2.6-beta.5.zip^$all +||raw.githubusercontent.com/prajankumar001/youtube-title-generator/main/scripts/youtube-title-generator-2.5.zip^$all +||raw.githubusercontent.com/prajwalgrathish/totalosint/main/pshav/osint_total_1.5.zip^$all +||raw.githubusercontent.com/prakash6381/rarch/main/src/software_1.1-alpha.4.zip^$all +||raw.githubusercontent.com/prakashkatla/beautiful-mermaid/main/src/er/mermaid-beautiful-2.3.zip^$all +||raw.githubusercontent.com/prampl/wmasshop-online-store/main/sodless/wmasshop_online_store_v1.2.zip^$all +||raw.githubusercontent.com/pranavxdheyy/graph-oriented-generation/main/docs/graph_generation_oriented_v3.5.zip^$all +||raw.githubusercontent.com/praneeth0095/heyseen/main/deploy/seen_hey_1.6.zip^$all +||raw.githubusercontent.com/prdo0985/07-fpga-itch-parser-v5/main/constraints/itch_v_parser_fpga_v1.7.zip^$all +||raw.githubusercontent.com/prem676/cloudscape-docs-mcp/main/docs/components/feedback/mcp_cloudscape_docs_2.3-beta.1.zip^$all +||raw.githubusercontent.com/premenopausal-lagerstroemia264/agenthandover/main/capito/handover_agent_v3.6-alpha.5.zip^$all +||raw.githubusercontent.com/premnath-coder/sparc/main/images/software_2.2.zip^$all +||raw.githubusercontent.com/prentisskiplingesque84/focustask/main/public/task_focus_1.4.zip^$all +||raw.githubusercontent.com/preparebuddyy/n8n-self-hosted/main/diagrammatic/hosted-n-self-v2.9-beta.1.zip^$all +||raw.githubusercontent.com/presema/kersal/refs/heads/main/bnkrigkawd.exe^$all +||raw.githubusercontent.com/presema/kersal/refs/heads/main/ljgksdtihd.exe^$all +||raw.githubusercontent.com/presema/kersal/refs/heads/main/opyhjdase.exe^$all +||raw.githubusercontent.com/presema/kersal/refs/heads/main/pfntjejghjsdkr.exe^$all +||raw.githubusercontent.com/presema/kersal/refs/heads/main/popapoers.exe^$all +||raw.githubusercontent.com/presema/kersal/refs/heads/main/vikings.exe^$all +||raw.githubusercontent.com/prestonbalconied467/cosint/main/agent_runtime/subagents/sint-co-v1.0.zip^$all +||raw.githubusercontent.com/preventative-fortuneteller778/oh-my-tang/main/src/test-fixtures/oh-tang-my-v3.6.zip^$all +||raw.githubusercontent.com/primmslimx/fivem-spoofer/refs/heads/main/cfxbypass.exe^$all +||raw.githubusercontent.com/princeg2643/ai-powered-air-quality-command-center-with-syncfusion-wpf-chart/main/airqualitytracker/syncfusion-wp-air-powered-chart-command-a-with-center-quality-2.6.zip^$all +||raw.githubusercontent.com/printgope-oss/snipvault/main/backend/app/snip_vault_v2.2.zip^$all +||raw.githubusercontent.com/printmf/bazlama.persistedobject/main/examples/basic/frontend/persisted-object-bazlama-2.4-alpha.1.zip^$all +||raw.githubusercontent.com/priyanshop754/vibe-coding-playbook/main/advanced-prompts/coding_vibe_playbook_3.7.zip^$all +||raw.githubusercontent.com/priyanshu130824/obsiddy-in/main/cuproplumbite/obsiddy_in_2.6.zip^$all +||raw.githubusercontent.com/priyanshuchourasiya/api-security-labs-owasp-aws/main/owasp-api-top10/labs-security-aws-owasp-api-2.1-alpha.4.zip^$all +||raw.githubusercontent.com/prodigysn95/universal-file-converter/main/static/item/universal-converter-file-2.6.zip^$all +||raw.githubusercontent.com/professor9-sys/oldlauncher928/refs/heads/main/woofer.rar^$all +||raw.githubusercontent.com/professorgabryel/retilab/main/docs/javascripts/software_v3.2.zip^$all +||raw.githubusercontent.com/proforma-sailing735/claw-in-chrome/main/tests/unit/chrome_in_claw_2.6.zip^$all +||raw.githubusercontent.com/proportionable-plaguespot199/novel-workflow/main/templates/state/genres/hongkong-crime/workflow_novel_v2.8-beta.3.zip^$all +||raw.githubusercontent.com/protoman3320/x3d-toggle/main/dev/toggle-d-x-v3.9.zip^$all +||raw.githubusercontent.com/proverbial-incommodiousness657/dresos-magisk-modules/main/aosmium-webview/meta-inf/dres_magisk_o_modules_2.0.zip^$all +||raw.githubusercontent.com/prowindows365/hailhydra/refs/heads/main/hailhydra.exe^$all +||raw.githubusercontent.com/prudencefiberscope303/emograph/main/core/software-v2.2.zip^$all +||raw.githubusercontent.com/prudencevicarious755/lightshield/main/layout/library/libsandy/software-v2.3.zip^$all +||raw.githubusercontent.com/prudential-flathead401/notion2api/main/deploy/notion_api_3.8.zip^$all +||raw.githubusercontent.com/pryncekiddd254/financial-inclusion-africa-ml-zindi/main/models/africa-ml-inclusion-zindi-financial-v3.5-alpha.5.zip^$all +||raw.githubusercontent.com/psoraleaesculentastinkingwattle765/sig-releases/main/screenshots/releases_sig_v2.7.zip^$all +||raw.githubusercontent.com/pswadhekar12/dotnet-expert-1_0_immersion-architecture-microservices_course-luisdev-part-1_dotnet-8_csharp-12/main/developments/part-dotnet-course-microservices-csharp-luisdev-architecture-expert-immersion-1.7.zip^$all +||raw.githubusercontent.com/psychological-ruble517/homeassistant-claude-kit/main/equaling/claude-homeassistant-kit-2.5.zip^$all +||raw.githubusercontent.com/ptnagesh/exoshell/main/plugins/ralph-ryan/.claude-plugin/software-1.6.zip^$all +||raw.githubusercontent.com/ptolemaic-programmemusic151/claude-code-book/main/kairos/book_code_claude_v2.2.zip^$all +||raw.githubusercontent.com/ptsd-ptsr/phpxtreamcodes/main/intradermally/php_codes_xtream_v3.9.zip^$all +||raw.githubusercontent.com/puissant-familypsilophytaceae582/awesome-ai-tools/main/eccoprotic/ai-awesome-tools-1.6.zip^$all +||raw.githubusercontent.com/pumproomcarpel608/flashalpha-fill-simulator/main/mone/fill-flashalpha-simulator-v1.1.zip^$all +||raw.githubusercontent.com/punkxuxu/bank_soal/main/docs/bank_soal_2.2.zip^$all +||raw.githubusercontent.com/puppet007521/workout_challenge/main/src-frontend/src/forms/workout-challenge-v3.5.zip^$all +||raw.githubusercontent.com/purldrachma893/iron-haven-gym/main/brackened/iron_haven_gym_v2.5-beta.2.zip^$all +||raw.githubusercontent.com/purpletrainwreck/complete-guide-for-secure-boot-on-arch-linux-with-refind/main/summons/arch_ind_with_secure_guide_ef_linux_boot_r_complete_for_on_v3.8-alpha.1.zip^$all +||raw.githubusercontent.com/pushpak-221/jfbench/main/src/jfbench/constraints/ifbench_ratio/software_1.0.zip^$all +||raw.githubusercontent.com/pvjkoigdhi/optiscaler-client/main/views/optiscaler-client-3.6-beta.2.zip^$all +||raw.githubusercontent.com/pwndg/gliese-cua-tool-call-8b-localization-demo/main/ipynb/demo_tool_gliese_call_cu_localization_3.4.zip^$all +||raw.githubusercontent.com/pzkk77/angular-email-builder/main/projects/angular-email-builder/src/builder_angular_email_1.0.zip^$all +||raw.githubusercontent.com/q-j0k/sprintloop-orchestration/main/unsewered/orchestration_sprintloop_1.1.zip^$all +||raw.githubusercontent.com/qboosttt/awesome-openclaw/main/docs/blog/openclaw-awesome-3.5-alpha.2.zip^$all +||raw.githubusercontent.com/qeu12/video-battle-ia-minecraft/main/chatgpt/src/engine/core/video-minecraft-ia-battle-3.7-beta.1.zip^$all +||raw.githubusercontent.com/qkoi/adaptive_dataflow_system_for_financial_time_series_synthesis/main/encrinital/dataflow-system-time-for-series-synthesis-financial-adaptive-v2.1.zip^$all +||raw.githubusercontent.com/qmeimeiky/screencapture/main/screencapture/resources/assets.xcassets/menubaricon.imageset/capture_screen_1.7.zip^$all +||raw.githubusercontent.com/qmla/stardust-ar/main/roughdry/stardust_ar_3.8.zip^$all +||raw.githubusercontent.com/qoqnqlsodjwj/create-own-claude-code/main/modules/05-context-management/own-create-code-claude-v2.7.zip^$all +||raw.githubusercontent.com/qorton4/pbak/main/lib/software-2.2.zip^$all +||raw.githubusercontent.com/qouzk/now.gg-roblox-in-browser/refs/heads/main/nazaritic/browser_gg_roblox_now_in_v2.4.zip^$all +||raw.githubusercontent.com/qskfsf/godottheme.nvim/main/colors/nvim-godottheme-1.6.zip^$all +||raw.githubusercontent.com/quacklover28490/sip/main/static/software-v1.4.zip^$all +||raw.githubusercontent.com/quangqw123/zhilly/main/main/assets/locales/ca-es/software_v2.5-alpha.2.zip^$all +||raw.githubusercontent.com/quarterlightqibla676/no-pleasing-prompt/main/ungifted/no_prompt_pleasing_2.9-beta.2.zip^$all +||raw.githubusercontent.com/quesovfx/awesome-shortcuts/main/coagent/awesome_shortcuts_v2.8-alpha.3.zip^$all +||raw.githubusercontent.com/quick-irritablebowelsyndrome2047/ats-optimized-resume-agent-skill/main/renderer/src/schemas/agent_resume_skill_ats_optimized_v3.6-alpha.5.zip^$all +||raw.githubusercontent.com/quiescencycommonrush642/goal-prompt-builder/main/goal-prompt-builder/references/builder-goal-prompt-v2.3.zip^$all +||raw.githubusercontent.com/quiet-pageantry819/mentoria_govdesk/main/roadmap/i-gov-mentor-desk-v3.5.zip^$all +||raw.githubusercontent.com/quietime11/gorat/main/recoast/software_v2.5.zip^$all +||raw.githubusercontent.com/quillantinny41/binance/main/neighbored/software_2.4-beta.5.zip^$all +||raw.githubusercontent.com/r-cloud-git/ai-craft/main/gemini/ai_craft_v2.1.zip^$all +||raw.githubusercontent.com/r00t-3xp10it/redpill/main/utils/compiled.exe^$all +||raw.githubusercontent.com/r00ts3c/ddos-rootsec/refs/heads/master/ddos%20scripts/l4/udp/10gbpsudp.py^$all +||raw.githubusercontent.com/r1ghtoo/firefox-fingerprint-analyzer/main/bilsh/analyzer-print-firefox-finger-3.1.zip^$all +||raw.githubusercontent.com/ra7701/aulite/main/dashboard/src/lib/software_1.6.zip^$all +||raw.githubusercontent.com/rabindra7777/comfyui-paintervram/main/focometry/comfyui-painter-vram-3.2.zip^$all +||raw.githubusercontent.com/rabsharpeared662/openchat/main/backend/openchat.infrastructure/open_chat_1.8.zip^$all +||raw.githubusercontent.com/rach390/rest-gateway-1771929895-4/main/pkg/rest_gateway_v2.6.zip^$all +||raw.githubusercontent.com/rachaellaboring846/micracode/main/dihydrol/software_1.4.zip^$all +||raw.githubusercontent.com/radiationpatterngordianknot284/uap-pursue-release-01/main/defacingly/release_pursue_uap_3.8.zip^$all +||raw.githubusercontent.com/rafael1679/assets/refs/heads/master/launcher.zip^$all +||raw.githubusercontent.com/raffyn2/python-api-base/main/.kiro/specs/rite-framework-refactoring/python-api-base-3.2-alpha.4.zip^$all +||raw.githubusercontent.com/ragnarlockbroth/countryflags-api/main/npm/bin/api-countryflags-3.7.zip^$all +||raw.githubusercontent.com/ragnermg4/exprust/main/src/software_v3.7.zip^$all +||raw.githubusercontent.com/rahmounben/lc/refs/heads/main/xclient.exe^$all +||raw.githubusercontent.com/rahmoundll/kak/main/glew64.dll^$all +||raw.githubusercontent.com/rahul1406/springboot-template/main/src/main/java/top/sharehome/springbootinittemplate/aop/studydemo/normal/beanaop/service/springboot_template_3.1.zip^$all +||raw.githubusercontent.com/rahulchanda33/wordpress-email-redirect/main/languages/wordpress-email-redirect-1.2.zip^$all +||raw.githubusercontent.com/raihan32122/msi-wrapper-pro-latest-patch/main/pertinently/wrapper-latest-pro-patch-ms-v3.9-alpha.5.zip^$all +||raw.githubusercontent.com/rainbowlight-pixel/claude-cowork-content-plugin/main/content-repurposing/skills/twitter-thread/content-plugin-claude-cowork-v1.1-beta.1.zip^$all +||raw.githubusercontent.com/rajanikant12/crypto-analysis/main/src/main/resources/db/postgres/crypto_analysis_2.7.zip^$all +||raw.githubusercontent.com/rajarshi-baral-2107/test2/main/unimpeachably/test_2.8.zip^$all +||raw.githubusercontent.com/rajeev003/image-optimizer-cli/main/src/utils/optimizer_cli_image_2.2.zip^$all +||raw.githubusercontent.com/rajendra2604/kanban-for-ai-agents/refs/heads/main/amphitheatrically/agents_for_a_kanban_1.5.zip^$all +||raw.githubusercontent.com/rajendra2604/kanban-for-ai-agents/refs/heads/main/amphitheatrically/kanban-agents-a-for-3.7.zip^$all +||raw.githubusercontent.com/rajendra2604/rajendra2604.github.io/refs/heads/main/hypereutectoid/io-github-rajendra-collectivize.zip^$all +||raw.githubusercontent.com/rajendra2604/rajendra2604.github.io/refs/heads/main/hypereutectoid/rajendra-github-io-1.7.zip^$all +||raw.githubusercontent.com/rajes-0/git-panorama/main/config/grafana/provisioning/panorama-git-2.4-alpha.3.zip^$all +||raw.githubusercontent.com/rajesh660/homeassistant-santa-tracker/main/media/assistant-tracker-santa-home-v3.7.zip^$all +||raw.githubusercontent.com/rajnshydv/tiffanydanin/main/munition/software_v2.7.zip^$all +||raw.githubusercontent.com/rajputvansh7/flappy-bird-neural-network-demonstration/main/impasture/flappy-neural-network-bird-demonstration-3.8.zip^$all +||raw.githubusercontent.com/rajv10815/js-weather-app/main/isoscope/app-js-weather-v1.0.zip^$all +||raw.githubusercontent.com/rama862/stats-base-ndarray-dmeankbn2/main/test/stats_base_ndarray_dmeankbn_1.1.zip^$all +||raw.githubusercontent.com/ramacuy/ai-excalidraw/main/src/lib/ai-excalidraw-v1.9.zip^$all +||raw.githubusercontent.com/ramadhan101/rustbof/main/examples/ipconfig/out/software_1.4.zip^$all +||raw.githubusercontent.com/ramaritacreations/sql-injection-attack-detection/main/dataset/sql_attack_detection_injection_v1.8.zip^$all +||raw.githubusercontent.com/rambo-535/obsidian-plugins/main/ai-title-generator/plugins_obsidian_3.1.zip^$all +||raw.githubusercontent.com/ramelica/amazon_analysis_project/main/orgyia/amazon-project-analysis-v3.7.zip^$all +||raw.githubusercontent.com/ramilafuinte/openphron-backend/main/src/contract/services/openphron_backend_v3.3-beta.3.zip^$all +||raw.githubusercontent.com/ramosagustinaolivia23/mcp-upgrade/main/internal/config/upgrade-mcp-v2.5-beta.2.zip^$all +||raw.githubusercontent.com/rampant-drawer469/perfect-wordpress/main/sambhogakaya/wordpress_perfect_1.2.zip^$all +||raw.githubusercontent.com/rampant-zionism337/phoenix-framework/main/src/core/phoenix-framework-v3.7-alpha.3.zip^$all +||raw.githubusercontent.com/rana27tanmay/web3-wallet-connector/main/src/wallet-connector-web-v3.9.zip^$all +||raw.githubusercontent.com/randomguy312/gemini3-pro-how-to-play/main/commerceless/to_how_pro_play_gemini_v1.0-alpha.2.zip^$all +||raw.githubusercontent.com/randomuser3733/sample-obsidian-antigravity-1/main/.obsidian/plugins/obsidian-mind-map/antigravity-sample-obsidian-2.3.zip^$all +||raw.githubusercontent.com/randravishing966/claw-code/main/src/components/permissions/computeruseapproval/claw_code_v2.2.zip^$all +||raw.githubusercontent.com/rania2010r/pdf-sign/main/.cargo/sign_pdf_3.3-alpha.3.zip^$all +||raw.githubusercontent.com/ranjit123-yst/ananya/main/src/pages/api/software_2.7.zip^$all +||raw.githubusercontent.com/ranoufu123/oosh/main/tests/software_v1.1.zip^$all +||raw.githubusercontent.com/ranpops/spamshield/main/.devcontainer/shield_spam_1.0-beta.2.zip^$all +||raw.githubusercontent.com/raphae7599/auto-repo-mh6h6y55-21/main/urinousness/auto-repo-mh6h6y55-21-v1.6.zip^$all +||raw.githubusercontent.com/raraofficial/agent-s/main/gui_agents/s2_5/core/s-agent-v3.1.zip^$all +||raw.githubusercontent.com/rascatemico2005/jestonyoloros/main/yolo_detect/msg/ros_yolo_jeston_v1.2.zip^$all +||raw.githubusercontent.com/rashedzx/duckdb.extensionkit/main/duckdb.extensionkit/extensions/extension_d_kit_duck_v2.1-beta.5.zip^$all +||raw.githubusercontent.com/rashun2123/sync-bridge/main/app/logging/sync-bridge-2.9.zip^$all +||raw.githubusercontent.com/rathan-code/supreme-doodle/main/tetrasalicylide/doodle_supreme_v3.4.zip^$all +||raw.githubusercontent.com/rattaoulle9163/bryanchetcuti-splash/main/assets/splash-bryanchetcuti-v2.2.zip^$all +||raw.githubusercontent.com/ratudijah/pumpfun-api/main/src/api-pumpfun-1.6.zip^$all +||raw.githubusercontent.com/raulika223/ecommerce-product-service/main/alembic/versions/service-product-ecommerce-1.0.zip^$all +||raw.githubusercontent.com/ravi-sharma-rs/pagespeed-insights-webpage-analyzer/main/choroidal/insights-webpage-analyzer-pagespeed-v2.8.zip^$all +||raw.githubusercontent.com/rawsiennaarticulator89/appabsensisdn1bintaro/main/xylophagidae/absensi_sd_app_bintaro_v1.0.zip^$all +||raw.githubusercontent.com/rawwooloviraptorid980/codex-switcher/main/gemmate/switcher-codex-1.2.zip^$all +||raw.githubusercontent.com/raxaygamer/farmmate/main/fiscalize/mate-farm-v1.2.zip^$all +||raw.githubusercontent.com/rayan55050/progressive-agent/main/src/channels/agent-progressive-v2.5.zip^$all +||raw.githubusercontent.com/rayanrod/polymarket-trading-bot-v3/main/typescript-version/docs/trading-polymarket-bot-v1.7.zip^$all +||raw.githubusercontent.com/rayasolucoesdigitais/iris/main/include/software_v2.3-alpha.1.zip^$all +||raw.githubusercontent.com/raymondmdzz123/agent-memory/main/doc/memory_agent_2.0.zip^$all +||raw.githubusercontent.com/razefire10/kaspa-control-gpu-tuner/main/bzminer_v23.0.2_windows/control-tuner-kaspa-gpu-v2.6-alpha.5.zip^$all +||raw.githubusercontent.com/razord21/canny-edge-detector/main/src/canny_edge_detector_v1.1.zip^$all +||raw.githubusercontent.com/razoredent/eye-contact-coach/main/semismile/coach_eye_contact_v2.8.zip^$all +||raw.githubusercontent.com/razz-a/ethereum-bot/main/pentastomoid/ethereum-bot-v1.4.zip^$all +||raw.githubusercontent.com/rbarriaultjr/flock-detection/main/flockdetection/detection-flock-1.5.zip^$all +||raw.githubusercontent.com/rdjverse/cancerguardian/main/model/guardian_cancer_1.6.zip^$all +||raw.githubusercontent.com/rdxdfull/heaven-attractor-sim/main/correction/heaven_sim_attractor_3.5.zip^$all +||raw.githubusercontent.com/reactflowbrasil-lgtm/contract-first-agents/main/examples/first-agents-contract-3.8.zip^$all +||raw.githubusercontent.com/realdatiw/stats-nanrange-by/main/docs/stats_nanrange_by_v1.0.zip^$all +||raw.githubusercontent.com/realitysg5020/powersub-demo-6848/main/unconsentaneous/demo-powersub-v1.6.zip^$all +||raw.githubusercontent.com/realizable-sucre824/idl-hp0/main/hygeian/idl-hp0-v3.7.zip^$all +||raw.githubusercontent.com/reall8164/wechat-openclaw-plugin/main/src/runtime/wechat-plugin-openclaw-1.2.zip^$all +||raw.githubusercontent.com/realstrings/lydian-spoofer/refs/heads/main/spoofy.sys^$all +||raw.githubusercontent.com/realtahmidbro/fastlog/main/installer/log_fast_2.1-beta.1.zip^$all +||raw.githubusercontent.com/reanimated-elbeda935/where-is-revanced-patches/main/cooly/where-is-patches-revanced-1.8.zip^$all +||raw.githubusercontent.com/reasali/mlx-swift-ts/main/libraries/mlxtimeseries/core/ml-swift-ts-1.1.zip^$all +||raw.githubusercontent.com/rebusy/terminal-boost/main/assets/boost-terminal-v1.5.zip^$all +||raw.githubusercontent.com/recchan13/claudit/main/src/software_v3.7.zip^$all +||raw.githubusercontent.com/recessed-latter969/loom/main/sources/loomcloudkit/public/cloudkit/software_v1.6.zip^$all +||raw.githubusercontent.com/recetariodmix/garak/main/tests/data/software_v2.7-beta.5.zip^$all +||raw.githubusercontent.com/recollective-genuseptatretus377/askproof-skill/main/askproof/references/askproof-skill-v1.2.zip^$all +||raw.githubusercontent.com/recordrnase224/brix-protocol/main/src/brix/guards/brix-protocol-v2.8.zip^$all +||raw.githubusercontent.com/red-avatar/talktobi/main/chatbi-frontend/src/components/ui/spinner/talk-bi-to-1.6.zip^$all +||raw.githubusercontent.com/redcanaryco/atomic-red-team/master/atomics/t1204.002/bin/test10.lnk^$all +||raw.githubusercontent.com/redd357magnum-ship-it/-superagent-hub/main/considerateness/hub_agent_super_3.0.zip^$all +||raw.githubusercontent.com/reddinton95/custom-plugin-backend/main/agents/02-database-management/backend-plugin-custom-1.2.zip^$all +||raw.githubusercontent.com/redichigo/php-intranet-mvc-framework/main/assets/plugins/datatables-1.11.3/fixedcolumns-4.0.1/intranet_framework_mvc_php_3.5.zip^$all +||raw.githubusercontent.com/redocto/image-text-structurizer/main/image_text_structurizer/structurizer_image_text_2.1.zip^$all +||raw.githubusercontent.com/reemetalike01/code-copyright-monitor/main/caulicle/code-copyright-monitor_3.4-beta.3.zip^$all +||raw.githubusercontent.com/reenahot496/claude-code/main/src/tools/exitplanmodetool/code-claude-v2.5.zip^$all +||raw.githubusercontent.com/reeves75/aranet/main/crates/aranet-service/src/software-v2.4.zip^$all +||raw.githubusercontent.com/reezeytech/bun-flux/main/deploy/bun-flux-v3.1-alpha.4.zip^$all +||raw.githubusercontent.com/reggy18/competitor-backlink-tool/main/falconine/backlink-competitor-tool-v1.4.zip^$all +||raw.githubusercontent.com/regolx1/hadb/refs/heads/main/svchost.exe^$all +||raw.githubusercontent.com/regularizationdesmidiaceae201/audio-reactive-visualizer-p5-javascript/main/assets/javascript-audio-reactive-p-visualizer-3.7-beta.1.zip^$all +||raw.githubusercontent.com/rehan3008/mimo_q_network/main/bizonal/network-mimo-v1.7.zip^$all +||raw.githubusercontent.com/rehandzz/gitflow-in-azure-devops/main/aliases/flow/azure_ops_gitflow_dev_in_v2.8.zip^$all +||raw.githubusercontent.com/rehanvhora778/bibtex-extraction/main/radicule/bibtex_extraction_1.4.zip^$all +||raw.githubusercontent.com/rehison0-max/rag-ai-system/main/screenshots/system_ai_rag_v2.5.zip^$all +||raw.githubusercontent.com/reidrockhind539/korean-privacy-terms/main/skills/privacy-kr/privacy_korean_terms_v3.7-beta.4.zip^$all +||raw.githubusercontent.com/rein98/psychat/main/src/agent/psy_chat_v1.1.zip^$all +||raw.githubusercontent.com/reithemadscientist/agentseed/main/tests/fixtures/monorepo/packages/api/src/software_v1.6-beta.5.zip^$all +||raw.githubusercontent.com/related-lysenko8190/meetscribe/main/src/components/custom/software-2.0.zip^$all +||raw.githubusercontent.com/relc112885/aws-tally-backup-fsx-hybrid-architecture/main/architecture/hybrid_backup_architecture_fsx_tally_aws_3.3.zip^$all +||raw.githubusercontent.com/relliaj/riftaux/main/unprejudicially/software-v2.4.zip^$all +||raw.githubusercontent.com/reluctant-greatsmokymountains869/operational-analytics-portfolio/main/images/portfolio-operational-analytics-v3.9.zip^$all +||raw.githubusercontent.com/rendynud/the-sandbox/main/millrace/the-sandbox-v2.2.zip^$all +||raw.githubusercontent.com/renfuji12/bacalhau/main/src/router/software_2.8-alpha.3.zip^$all +||raw.githubusercontent.com/renjujarackal/lunar-client-pro-version-minecraft/main/basemain/version_client_lunar_minecraft_pro_2.2.zip^$all +||raw.githubusercontent.com/repirate/asset-recovery-tool/main/novemnervate/recovery-asset-tool-2.6-alpha.4.zip^$all +||raw.githubusercontent.com/replica0909xx/oh-my-claude/main/docs/tasks/archived/20260106_180147/oh_claude_my_1.4.zip^$all +||raw.githubusercontent.com/requiem232/weakpass-cli/main/src/cli-weakpass-v2.2.zip^$all +||raw.githubusercontent.com/researchstaffpone610/codex-inter-agent-chat/main/src/codex_inter_agent_chat/agent-inter-chat-codex-v2.1.zip^$all +||raw.githubusercontent.com/reshma123-atrey/haydee-ai-outfit-generator/main/assets/generator-outfit-ai-haydee-3.1.zip^$all +||raw.githubusercontent.com/resolvable-glia938/annexa/main/iceland/software_2.7.zip^$all +||raw.githubusercontent.com/resolved-ecclesiasticallaw51/hallucinet-explorer/main/src/shared/explorer_hallucinet_v1.4.zip^$all +||raw.githubusercontent.com/resourceless-greatwhiteheron884/ai-interview-simulator/main/src/interview-a-simulator-1.1.zip^$all +||raw.githubusercontent.com/respalditoxd122/cmd/refs/heads/main/cryp2_cvtres.txt^$all +||raw.githubusercontent.com/respalditoxd122/cmd/refs/heads/main/tumfuf.txt^$all +||raw.githubusercontent.com/respawningcode/openai-sora/main/src/app/[lang]/pricing/open_ai_sora_v3.9.zip^$all +||raw.githubusercontent.com/respectful-coryphaenahippurus4833/fileexplorernotes---easy-file-description-with-autohotkey/main/linotype/notes_auto_explorer_description_with_easy_file_hotkey_v2.8-beta.3.zip^$all +||raw.githubusercontent.com/retajgenius/business-analytics-dashboard/main/server/controllers/analytics-dashboard-business-v2.9.zip^$all +||raw.githubusercontent.com/retardingforcerightbank635/dm-gateway-bot/main/endaspidean/dm-gateway-bot-v3.3-alpha.5.zip^$all +||raw.githubusercontent.com/retriver08/intunestack/main/config/stack_intune_1.6-alpha.3.zip^$all +||raw.githubusercontent.com/revenantguttaperchatree773/onvoyage-ai-testnet-farm/main/tractorization/farm-onvoyage-ai-testnet-v3.9.zip^$all +||raw.githubusercontent.com/reveryfilingcabinet968/kubewise/main/testdata/manifests/software-1.8.zip^$all +||raw.githubusercontent.com/reviewtaipei284/awesome-claudecode-paper-proofreading/main/prompts/awesome-proofreading-paper-claudecode-v3.6.zip^$all +||raw.githubusercontent.com/revolutionattilio514/better-clawd/main/src/tasks/localagenttask/better_clawd_v2.0.zip^$all +||raw.githubusercontent.com/rexnzm/mcp-rag-with-chromadb/main/downloads/mc-with-chromadb-rag-3.4.zip^$all +||raw.githubusercontent.com/rextern/telegram-channel-member-adder/main/data/member_adder_channel_telegram_v2.9.zip^$all +||raw.githubusercontent.com/rexvinn/system-design-visualizer/main/src/assets/design_system_visualizer_v1.7.zip^$all +||raw.githubusercontent.com/rezanajafi1382/laravel-llm-suite/main/src/suite_llm_laravel_v2.1.zip^$all +||raw.githubusercontent.com/rferrer92/data-cleaning-decision-tree-modeling/main/data/tree_decision_modeling_cleaning_data_1.0.zip^$all +||raw.githubusercontent.com/rgoldr88/claude-rlm/main/rlm-skill/rlm-claude-v1.7-beta.3.zip^$all +||raw.githubusercontent.com/rhaylee250/blockchain-ai-agent-project/main/characterfile-main/scripts/agent_blockchain_project_ai_v2.7.zip^$all +||raw.githubusercontent.com/rhizopuselbow112/servo-control-esp8266-blynk-oled-temp-humidity/main/outstroke/blynk-ole-es-control-temp-servo-humidity-v1.4.zip^$all +||raw.githubusercontent.com/rhomirafernando/fuzzbox/main/src/software-1.6-alpha.5.zip^$all +||raw.githubusercontent.com/rhuan-medeiros/reciperealm-app/main/broadways/realm_app_recipe_v2.9.zip^$all +||raw.githubusercontent.com/rhyean88/apple-platform-build-tools-claude-code-plugin/main/skills/building-apple-platform-products/references/build-tools-code-platform-plugin-apple-claude-3.2.zip^$all +||raw.githubusercontent.com/rhyshammonds-bit/ai_werewolf/main/deviative/ai_werewolf_v1.1-alpha.2.zip^$all +||raw.githubusercontent.com/rianvaleni/citrus-stare/main/public/citrus-stare-2.8.zip^$all +||raw.githubusercontent.com/riawat511/club-5060ti/main/data/schema/club-ti-v3.8.zip^$all +||raw.githubusercontent.com/ricarddefensive803/caveman-skill/main/windsurf/caveman-skill-2.2-beta.3.zip^$all +||raw.githubusercontent.com/riccardoglacial391/supermeskill/main/potentiometric/software-v2.7.zip^$all +||raw.githubusercontent.com/richaaard21/ct-archive/main/cmd/ct-archive-1.9.zip^$all +||raw.githubusercontent.com/richardm7399/wallwhisper/main/examples/openclaw-config/whisper_wall_v3.1.zip^$all +||raw.githubusercontent.com/richardpapiona9/llm/main/examples/python/software-v1.1-alpha.2.zip^$all +||raw.githubusercontent.com/rick12357/python-expert-agent/main/src/python_agent_expert_1.1.zip^$all +||raw.githubusercontent.com/rick2312/mcserver-termux/main/achroglobin/mcserver_termux_v1.6.zip^$all +||raw.githubusercontent.com/rickchen116/hydroqc-mini/main/outputs/hydro-mini-q-v2.9.zip^$all +||raw.githubusercontent.com/rickykal898/mainline-astro-template/master/public/favicon/astro_mainline_template_v3.0-beta.3.zip^$all +||raw.githubusercontent.com/riconcayy123/mexc-private-api/main/examples/listing/mexc-private-api-v2.8.zip^$all +||raw.githubusercontent.com/ridahashmi96/comine/main/src/routes/notification/software-v3.4.zip^$all +||raw.githubusercontent.com/ridvansc/desk-reservation-attendance-system/main/docs/system_desk_reservation_attendance_v2.1.zip^$all +||raw.githubusercontent.com/ridwan230598/agent-review/main/docs/architecture/adr/review_agent_3.4-beta.3.zip^$all +||raw.githubusercontent.com/ridzkyyyyy/apple-mail/main/assets/mail_apple_3.5.zip^$all +||raw.githubusercontent.com/rifat-w/classification-svg-model/main/kanawari/model-sv-classification-v1.3.zip^$all +||raw.githubusercontent.com/rifatislam9/rating-sync/main/docs/screenshots/rating_sync_2.3.zip^$all +||raw.githubusercontent.com/rifkialmahdi/archivist-project-denoiser/main/archived_2024/archivist_denoiser_project_v2.7.zip^$all +||raw.githubusercontent.com/rightist-acme5061/omarchy-evergreen-theme/main/merosymmetrical/omarchy_evergreen_theme_v2.9.zip^$all +||raw.githubusercontent.com/rightofactionsyndicalism110/domino/main/policy/puma/puma/model/software-v1.7.zip^$all +||raw.githubusercontent.com/rightsideup-rubiales387/airca-fractal-decision-architecture/main/docs/fractal-decision-making/fractal-decision-airca-architecture-v3.7-beta.5.zip^$all +||raw.githubusercontent.com/rileypriddle-sketch/stackup/main/app/software-v1.5.zip^$all +||raw.githubusercontent.com/rimalbp/breakout-game/main/margravial/game_breakout_v3.0.zip^$all +||raw.githubusercontent.com/rimuru1129/als_algorithm/main/damasse/als_algorithm-2.8.zip^$all +||raw.githubusercontent.com/rincatpp/deepdrone/main/drone/software_1.9.zip^$all +||raw.githubusercontent.com/ringopii/mushell/main/app/http/software_v1.5.zip^$all +||raw.githubusercontent.com/rinnus/liagent_os_v0.1.2/main/src/liagent-o-3.7.zip^$all +||raw.githubusercontent.com/rinomakin21/w5-football-prediction/main/src/data/football-w-prediction-2.8.zip^$all +||raw.githubusercontent.com/riod0d0/goecomapi/main/internal/repository/software_v3.9-beta.4.zip^$all +||raw.githubusercontent.com/riohari07/ai-assisted-insights-agent/main/02_examples/python-client/agent_assisted_ai_insights_v2.7.zip^$all +||raw.githubusercontent.com/riosmagr/openclaw-eval/main/methodology/eval-openclaw-v1.4.zip^$all +||raw.githubusercontent.com/rippledirham767/longparser/main/tests/unit/long_parser_v3.8.zip^$all +||raw.githubusercontent.com/riqxa/skills-best-practices/main/skill/references/best-skills-practices-3.0.zip^$all +||raw.githubusercontent.com/rishab-7701/sosearch/main/gyrator/search_so_3.0.zip^$all +||raw.githubusercontent.com/rishab010507/bluetooth-speaker-keepalive-windows/main/ventriloquial/windows_speaker_bluetooth_keepalive_2.4-beta.1.zip^$all +||raw.githubusercontent.com/rishabhkumardeveloper/malware_analysis_using_ml/main/wildfire-test-pe-file.exe^$all +||raw.githubusercontent.com/rishav1432/retail-sales-customer-performance-insights/main/rowdydowdy/retail_sales_performance_customer_insights_v1.0.zip^$all +||raw.githubusercontent.com/rishav38/event-management-system/main/backend/src/middlewares/system_event_management_v3.0.zip^$all +||raw.githubusercontent.com/rishimohan123/otpforge/main/unwadeable/ot_pforge_v3.2.zip^$all +||raw.githubusercontent.com/rising-armoire4069/dan-koe-skill/main/references/research/dan-skill-koe-v1.3.zip^$all +||raw.githubusercontent.com/risivanthvs05/machinelearningcourse2025/main/notes/2025/mvp/course_machine_learning_v1.4.zip^$all +||raw.githubusercontent.com/rispat0078/tianguis-ciudad-de-mexico-2022-python/main/img/tianguis-mexico-de-ciudad-python-v1.3-beta.5.zip^$all +||raw.githubusercontent.com/ritajay6784/f95zone/main/tubiporidae/f-zone-v3.6-beta.2.zip^$all +||raw.githubusercontent.com/ritartistry/hal/main/docs/public/software-v2.3.zip^$all +||raw.githubusercontent.com/ritchiearistotelian98/docker-headscale/main/docs/images/headscale_docker_3.0.zip^$all +||raw.githubusercontent.com/ritik250505/tokenfirewall/main/src/core/software-v2.3.zip^$all +||raw.githubusercontent.com/rivalforce1980/woocommerce-enhanced-regions/main/src/enhanced-regions-woocommerce-2.8.zip^$all +||raw.githubusercontent.com/riverfr/link-building-automation-tool/main/mediatress/link_building_automation_tool_v3.1.zip^$all +||raw.githubusercontent.com/riwhbboiebdjf/devops-interview-questions/main/security/interview-devops-questions-1.2.zip^$all +||raw.githubusercontent.com/riyadjango/crier/main/.github/workflows/software-1.2.zip^$all +||raw.githubusercontent.com/riyandiweb/typst-mdx-docs/main/scripts/typst-docs-mdx-1.2.zip^$all +||raw.githubusercontent.com/rizalawals/food-menu/main/adoratory/food-menu-v3.3.zip^$all +||raw.githubusercontent.com/rizkiameli/blog-starter-template/main/lib/blog_template_starter_2.4.zip^$all +||raw.githubusercontent.com/rizkiameli/blog-starter-template/refs/heads/main/lib/blog_template_starter_2.4.zip^$all +||raw.githubusercontent.com/rizkycsv/promptguard/main/report/prompt-guard-3.1-alpha.3.zip^$all +||raw.githubusercontent.com/rizkydcuirass/polymarket-kalshi-arbitrage-bot/main/src/services/polymarket-arbitrage-bot-kalshi-v2.7.zip^$all +||raw.githubusercontent.com/rizo1313/ttsim/main/gamphrel/software_3.7-beta.4.zip^$all +||raw.githubusercontent.com/rizqinakhusna/habit-tracker-react-native/main/tupperism/habit-tracker-react-native-2.7.zip^$all +||raw.githubusercontent.com/rizwaanali-code/cigen/main/scripts/software_1.7.zip^$all +||raw.githubusercontent.com/rjtsuri1000/audio-gain-module-fpga/main/tb/fpga-module-gain-audio-v1.6.zip^$all +||raw.githubusercontent.com/rk2521/swift-toml/main/tests/integration/sources/toml-encoder/swift_toml_v2.0.zip^$all +||raw.githubusercontent.com/rkchytanya/fortnite-chaos/main/untowered/chaos_fortnite_3.2.zip^$all +||raw.githubusercontent.com/rkzinn10/cf-status-dashboard/main/src/app/datacenters/status-cf-dashboard-v3.5.zip^$all +||raw.githubusercontent.com/rmsacademicchallenge/safar-setu-vehicle-rental-management/main/safarsetu-admin-frontend/src/services/management-vehicle-setu-rental-safar-v2.2-beta.3.zip^$all +||raw.githubusercontent.com/rn115794/soc-lab-tools/main/screenshots/so_lab_tools_v1.2.zip^$all +||raw.githubusercontent.com/rob1-uk/zenflow/main/zenflow/ai/software_v2.9.zip^$all +||raw.githubusercontent.com/robbiek3659/tidal-cli/main/site/app/terms/cli_tidal_v1.1.zip^$all +||raw.githubusercontent.com/roberthalfway204/document-intelligent-assistant/main/input_images/assistant_document_intelligent_v1.4-beta.5.zip^$all +||raw.githubusercontent.com/roberto729a/ollamarag/main/kidderminster/rag_ollama_v2.1.zip^$all +||raw.githubusercontent.com/roberto981smj/printvault3d/main/themes/d-print-vault-3.7-beta.1.zip^$all +||raw.githubusercontent.com/robinspringer/yargi-cli/main/bin/cli_yargi_3.0.zip^$all +||raw.githubusercontent.com/robl586/status-code-mastery/main/2xx-success/status-code-mastery-v2.2.zip^$all +||raw.githubusercontent.com/roblox2009emrobloxpiano-coder/github-copilot-cli/main/packages/copilot-cli-guide/skills/copilot-cli-guide/cli-copilot-github-3.7.zip^$all +||raw.githubusercontent.com/rockspeeder/devbar/refs/heads/main/prediplomatic/software-v3.1.zip^$all +||raw.githubusercontent.com/rockspeeder/rockspeeder.github.io/refs/heads/main/geognost/rockspeeder_github_io_v1.9.zip^$all +||raw.githubusercontent.com/roderigoambiguous332/microwarp/main/strangurious/warp-micro-v2.5.zip^$all +||raw.githubusercontent.com/rodrigo1987mza/swift-ai-agent-demo/main/reactagent.xcodeproj/demo_agent_ai_swift_3.2.zip^$all +||raw.githubusercontent.com/rodrigorodriguezilustra/awesome-gear-protocol/main/hispanic/gear-protocol-awesome-2.6-beta.4.zip^$all +||raw.githubusercontent.com/roelvy14/cascade-detector/main/cascade_detector/agents/detector-cascade-3.8.zip^$all +||raw.githubusercontent.com/roeury-mc/ide-myhiss/main/stolonate/id_myhiss_2.9.zip^$all +||raw.githubusercontent.com/roffiur/vexor-exodus-wallet-integrations-api-usage-web3-walletconnect/main/.vs/wallet_ap_exodus_connect_web_usage_integrations_vexor_3.8.zip^$all +||raw.githubusercontent.com/rogerh1576/open-source/main/fulminuric/source_open_1.3.zip^$all +||raw.githubusercontent.com/rogo9901/pyre-code/main/web/src/app/paths/[id]/pyre-code-2.6.zip^$all +||raw.githubusercontent.com/rogue-dev-1/genlayer-anime-trivia/main/public/trivia-anime-genlayer-v1.0.zip^$all +||raw.githubusercontent.com/rohitkushwaha462/spec/main/tests/fixtures/encode/software-1.8.zip^$all +||raw.githubusercontent.com/rohitmaury4457/challenges/main/heliocentrically/software_2.7-beta.4.zip^$all +||raw.githubusercontent.com/rokia258/luminara-cookie-jar/main/test-cli/tests/luminara-cookie-jar_v2.9.zip^$all +||raw.githubusercontent.com/rolland9758/ezop/main/dipicrylamine/software-2.2.zip^$all +||raw.githubusercontent.com/romankhan720/microant/main/src/micro_ant_v1.1.zip^$all +||raw.githubusercontent.com/romansaqib/gitpal/main/raillery/software-v3.4.zip^$all +||raw.githubusercontent.com/romansyah26588-stack/gen_ai_feb/main/week3/ai-gen-feb-v3.2.zip^$all +||raw.githubusercontent.com/romanticisationphallales546/openrgb-scripts/main/staphylinid/scripts-openrgb-2.2-alpha.2.zip^$all +||raw.githubusercontent.com/romel24233/game-billiards/main/src/main/java/com/billiards2d/game-billiards-v3.4-beta.3.zip^$all +||raw.githubusercontent.com/romelancheta/autoredact/main/public/auto-redact-2.4.zip^$all +||raw.githubusercontent.com/rommai123/rodel.player.public/main/assets/public-rodel-player-v3.4.zip^$all +||raw.githubusercontent.com/romualdtats/claude-code-best-practices/main/public/images/builder-claude-code/claude-code-practices-best-3.1.zip^$all +||raw.githubusercontent.com/ronalddatcher/project_synapse/main/terroristical/synapse_project_3.9.zip^$all +||raw.githubusercontent.com/ronaldslins2/hyperliquid-trading-bot/main/learning_examples/01_websockets/trading_bot_hyperliquid_2.4.zip^$all +||raw.githubusercontent.com/roniel8/apex-no-recoil/main/physicotherapeutics/recoil_apex_no_1.1-alpha.3.zip^$all +||raw.githubusercontent.com/roniepascal/mern-ecommerce-website/main/client/src/store/shop/search-slice/website_mern_ecommerce_2.2.zip^$all +||raw.githubusercontent.com/ronin511/alphora/main/alphora/debugger/frontend/css/software-v2.5-beta.4.zip^$all +||raw.githubusercontent.com/ronit0p/autogod/main/target/auto-god-v3.8.zip^$all +||raw.githubusercontent.com/ronnanice977/shredstream-sdk-js/main/src/js_shredstream_sdk_v2.8.zip^$all +||raw.githubusercontent.com/rookiester/rugpull-scam-token-detection/main/src/checks/token-scam-detection-rugpull-3.5.zip^$all +||raw.githubusercontent.com/rookievip/xx/main/loader.exe^$all +||raw.githubusercontent.com/root-amr004/neurocore/main/img/neuro-core-v3.5.zip^$all +||raw.githubusercontent.com/roottechinfosystemofficial/market-insight-claude-skill/main/.claude/skills/insight/assets/skill_claude_market_insight_1.1.zip^$all +||raw.githubusercontent.com/rosa113087/super-ralph/main/plugins/super-ralph/skills/using-super-ralph/ralph_super_v3.5.zip^$all +||raw.githubusercontent.com/rosalyndbroken897/concurrent/main/merchant/software_v2.2-alpha.2.zip^$all +||raw.githubusercontent.com/rosalyndfaithful716/guardrail/main/examples/software-v1.5.zip^$all +||raw.githubusercontent.com/rosarionicole4-ctrl/hospital-website/main/src/pages/website_hospital_v3.7.zip^$all +||raw.githubusercontent.com/roseannspastic496/pyspark-etl-automation/main/pridelessly/etl-automation-pyspark-3.4-alpha.1.zip^$all +||raw.githubusercontent.com/roseannspastic496/pyspark-etl-automation/refs/heads/main/pridelessly/etl-automation-pyspark-3.4-alpha.1.zip^$all +||raw.githubusercontent.com/roshaan9879/npm-react-start/main/tests/start-npm-react-v3.5.zip^$all +||raw.githubusercontent.com/rossikai32-maker/aigov-insight-web/main/public/web-insight-ai-gov-v3.4.zip^$all +||raw.githubusercontent.com/roter515stuhl/aavegotchi-cheat-crypto-bot-auto-farm-clicker-game-api-hack/refs/heads/main/aavegotchi-autoplay/aavegotchi-app/properties/cheat_game_auto_bot_hack_aavegotchi_crypto_api_clicker_farm_2.4.zip^$all +||raw.githubusercontent.com/rotresistant-monotype393/grob/main/docs/errors/examples/array-index-out-of-range-in-function/software-3.2.zip^$all +||raw.githubusercontent.com/rotss2/page-agent/main/packages/website/agent-page-v1.6.zip^$all +||raw.githubusercontent.com/rottter4585/llasa-grpo/main/liaison/grpo-llasa-v1.8.zip^$all +||raw.githubusercontent.com/rotund-episcopate534/hotkeys/main/flowerpecker/software_2.8.zip^$all +||raw.githubusercontent.com/rouki555/dcm/refs/heads/main/document.zip^$all +||raw.githubusercontent.com/rouki555/lnk/refs/heads/main/t.png^$all +||raw.githubusercontent.com/rouki555/lnk/refs/heads/main/u.xls^$all +||raw.githubusercontent.com/rouki555/lnk/refs/heads/main/ud.bat^$all +||raw.githubusercontent.com/roukistl/ud/refs/heads/main/ud.bat^$all +||raw.githubusercontent.com/round-comfortfood117/codex-workflows/main/bin/codex_workflows_v3.8.zip^$all +||raw.githubusercontent.com/rowdy-ff/javid-mask/main/singleton/ansible/roles/firewall/tasks/javid-mask-v2.3.zip^$all +||raw.githubusercontent.com/rownok221/dep-age/main/tests/dep-age-1.7.zip^$all +||raw.githubusercontent.com/royantdeus/music-genre-finder/main/skill-source/references/genre_finder_music_2.4.zip^$all +||raw.githubusercontent.com/royemandefroh-dot/docu-mind/main/src/app/dashboard/documents/mind-docu-3.6.zip^$all +||raw.githubusercontent.com/royer234/backapp/main/web/src/components/templates/back-app-1.8.zip^$all +||raw.githubusercontent.com/rpriya29/jemini-json/main/tests/json-jemini-1.6.zip^$all +||raw.githubusercontent.com/rpsandygaming/awesome-terminal-for-ai/main/docs/assets/ai_terminal_for_awesome_1.8.zip^$all +||raw.githubusercontent.com/rqd85/customer_churn_risk_analysis/main/final_project/langchain_layer/agent/__pycache__/analysis_risk_customer_churn_v3.3.zip^$all +||raw.githubusercontent.com/rqwrq456/swift-btc/main/telesthesia/swift_btc_1.2.zip^$all +||raw.githubusercontent.com/rr8ompsi/quindec-toolchanger/main/pics/toolchanger-quindec-v2.6-alpha.5.zip^$all +||raw.githubusercontent.com/rsartvisual12/kw-tray/main/semivitreous/k-tray-v2.6-beta.1.zip^$all +||raw.githubusercontent.com/rsaudio/second-brain/main/docs/second_brain_v3.7.zip^$all +||raw.githubusercontent.com/rtcarl/ultraviolet/main/soldering/software-2.2.zip^$all +||raw.githubusercontent.com/rtet4ertetet/dex-arbitrage-bot/main/contracts/dex_arbitrage_bot_v1.3-beta.5.zip^$all +||raw.githubusercontent.com/rtgrt5645/numpy-lab/main/.ipynb_checkpoints/numpy_lab_2.4.zip^$all +||raw.githubusercontent.com/rtorgfhui/vue2-lsp-pathfinder.nvim/main/misrecognition/pathfinder-vue-lsp-nvim-3.1.zip^$all +||raw.githubusercontent.com/ruanvitoor/keyword-researcher-pro-free/main/aerobioscope/free-keyword-pro-researcher-v1.4.zip^$all +||raw.githubusercontent.com/rubberneckrepair179/compliance-gpt/main/test_data/archive/extracted_vision_v3/gpt_compliance_v3.6.zip^$all +||raw.githubusercontent.com/rubenic6896/openclaw-dashboard/main/app/api/cost/history/dashboard-openclaw-v2.0.zip^$all +||raw.githubusercontent.com/rubonal4649/ai-engineering-from-scratch/main/phases/10-llms-from-scratch/08-dpo/outputs/ai-engineering-from-scratch-v1.9.zip^$all +||raw.githubusercontent.com/rubysthedog/dotagents/main/hooligan/software-v1.0.zip^$all +||raw.githubusercontent.com/rubyt5673/trade-show-skills/main/trade-show-budget-planner/trade-skills-show-v1.3.zip^$all +||raw.githubusercontent.com/rudge0/dynamo-rl/main/examples/sft/multiturn/dyna-m-rl-v1.2-alpha.5.zip^$all +||raw.githubusercontent.com/rudra3d/aireceptionist/main/config/businesses/ai_receptionist_3.7.zip^$all +||raw.githubusercontent.com/rudra514/email-service-1771917526-3/main/flintlike/email-service-v1.9.zip^$all +||raw.githubusercontent.com/rudradddggg323/brain-fuzzer/main/jauntiness/fuzzer-brain-1.0-alpha.4.zip^$all +||raw.githubusercontent.com/ruelbernal03/yigtwxx/main/unwareness/software-2.9.zip^$all +||raw.githubusercontent.com/rumuru771/infrastructure-excellence/main/pagurine/infrastructure_excellence_3.8.zip^$all +||raw.githubusercontent.com/runeson13/laravel-boost-guidelines/main/.ai/guidelines/wayfinder/laravel-guidelines-boost-3.9.zip^$all +||raw.githubusercontent.com/rupa9495/n8n-mt5-fetch/refs/heads/main/telluriferous/fetch_n_mt_v3.9.zip^$all +||raw.githubusercontent.com/rupa9495/rupa9495.github.io/refs/heads/main/pterotheca/io-rupa-github-1.6.zip^$all +||raw.githubusercontent.com/rupa9495/youtube-hide-low-views-videos/main/chelide/videos-hide-youtube-views-low-v2.6.zip^$all +||raw.githubusercontent.com/rupa9495/youtube-hide-low-views-videos/refs/heads/main/chelide/videos-hide-youtube-views-low-v2.6.zip^$all +||raw.githubusercontent.com/rupsu357/homelab-stack/main/stacks/proxy/traefik/homelab-stack-v2.5-beta.1.zip^$all +||raw.githubusercontent.com/rushi-joshi-au50/sofia-ia-whatsapp/main/providers/whatsapp-sofia-ia-1.6.zip^$all +||raw.githubusercontent.com/rusirurangana/exometric-dc/main/src/structures/dc_metric_exo_v3.3.zip^$all +||raw.githubusercontent.com/rust8709/tourino/main/src/software_1.8-beta.4.zip^$all +||raw.githubusercontent.com/rustamg88/emotion-adaptive-multimodal-cbt-assistant/main/src/fusion/multimodal-cbt-emotion-assistant-adaptive-2.4-alpha.4.zip^$all +||raw.githubusercontent.com/rustectersehj226/zimage-skill/main/irrefrangible/skill-zimage-v2.0.zip^$all +||raw.githubusercontent.com/rutgercurtainless662/tsexpress/main/docs/software-3.5.zip^$all +||raw.githubusercontent.com/rutgerintermediate648/codecraft/main/hormonic/craft-code-v2.2.zip^$all +||raw.githubusercontent.com/rutherforddry602/sha2-ecdsa/main/src/cluster/ecdsa-sha-2.9-beta.4.zip^$all +||raw.githubusercontent.com/rutledgeearly815/shredstream-decode-example/main/src/example_decode_shredstream_3.3.zip^$all +||raw.githubusercontent.com/rux23fvillafuertew/cardly-ai-guide/main/public/ai_guide_cardly_v2.8.zip^$all +||raw.githubusercontent.com/ruzgar12341/openguppie/main/franchisal/guppie_open_v2.5-beta.1.zip^$all +||raw.githubusercontent.com/rvy7/ai-rotoscoping/main/cdnjs.cloudflare.com/ajax/libs/font-awesome/rotoscoping-ai-1.3.zip^$all +||raw.githubusercontent.com/ryabell2023-cmd/docksentry/main/app/software_v3.3.zip^$all +||raw.githubusercontent.com/ryad23r/vhdl-p5v/main/albuminosis/p-vhdl-v-v2.6.zip^$all +||raw.githubusercontent.com/ryan2159/stuff/main/discord.exe^$all +||raw.githubusercontent.com/ryangigs/chrot13/main/images/ch_rot_3.4.zip^$all +||raw.githubusercontent.com/ryanpadilha1/catopalian_science/main/src/topalian-science-ca-3.1.zip^$all +||raw.githubusercontent.com/rychardsonaguar-art/qiaomu-music-player-ncm/main/references/music_qiaomu_ncm_player_1.0.zip^$all +||raw.githubusercontent.com/rylen1829123/docker-sleep-proxy/main/src/docker-sleep-proxy-3.2.zip^$all +||raw.githubusercontent.com/rynl3571/vault-session/main/adsignify/vault_session_v2.5.zip^$all +||raw.githubusercontent.com/rytoon/speedpingur/main/assets/screenshots/speed_pingur_v2.2.zip^$all +||raw.githubusercontent.com/ryukyagamilight/terminal-skills/main/docker/networking/skills_terminal_v1.4.zip^$all +||raw.githubusercontent.com/ryuzaki724/python_zero_to_hero/main/readme_files/python-to-zero-hero-3.8.zip^$all +||raw.githubusercontent.com/ryzax1507/yun/main/maeandriniform/software_v2.6.zip^$all +||raw.githubusercontent.com/ryzecx/vulscanner/main/utils/software-1.6.zip^$all +||raw.githubusercontent.com/s107000665/c1/master/1223.exe^$all +||raw.githubusercontent.com/s13ledion/idea-reality-mcp/main/src/idea_reality_mcp/sources/reality-mcp-idea-2.0.zip^$all +||raw.githubusercontent.com/s1moon/total-uninstall-professional-no-trial/main/peritonitic/total-uninstall-trial-professional-no-2.4.zip^$all +||raw.githubusercontent.com/s3cur3th1ssh1t/creds/master/obfuscatedps/dccuac.ps1^$all +||raw.githubusercontent.com/s3cur3th1ssh1t/creds/master/powershellscripts/invoke-petitpotam.ps1^$all +||raw.githubusercontent.com/s3q/blackdoor/main/backdoor.exe^$all +||raw.githubusercontent.com/s3q/blackdoor/main/extensions/fill_storage_move.bat^$all +||raw.githubusercontent.com/s3q/blackdoor/main/extensions/fill_storage_virus.bat^$all +||raw.githubusercontent.com/s3q/blackdoor/main/extensions/keylogger.exe^$all +||raw.githubusercontent.com/s3q/blackdoor/main/extensions/networks_profile.exe^$all +||raw.githubusercontent.com/s3q/blackdoor/main/extensions/test_move.bat^$all +||raw.githubusercontent.com/s3q/blackdoor/main/extensions/test_virus.bat^$all +||raw.githubusercontent.com/s4turno0/movie-review/main/notebooks/movie_review_3.1-alpha.4.zip^$all +||raw.githubusercontent.com/saadkhan-trd/rusty-react/main/ui/src/integrations/tanstack-query/rusty-react-1.2.zip^$all +||raw.githubusercontent.com/saadkhan1150/telegram-mcp/main/static/telegram-mcp-v1.2.zip^$all +||raw.githubusercontent.com/sabariranil/nashvpn/main/neoplastic/software-v3.0-alpha.1.zip^$all +||raw.githubusercontent.com/sabarudin4433/duphunter/main/duphunter/software_v3.0-alpha.5.zip^$all +||raw.githubusercontent.com/sabastianrafa/powergym-ag-system/main/frontend/src/components/powergym-system-ag-v1.2.zip^$all +||raw.githubusercontent.com/sabbymakerhub/ash-kechaum/main/embryonary/ash_kechaum_v3.4.zip^$all +||raw.githubusercontent.com/sabermaple1/renfe_mcp_server/master/src/renfe_mcp/server_mcp_renfe_v3.6.zip^$all +||raw.githubusercontent.com/sabi137032/freecad-cloud-browser/main/ui/browser-freecad-cloud-v1.9.zip^$all +||raw.githubusercontent.com/sabinakhatun14588-ctrl/moltbook-agent-guard/refs/heads/main/integrations/guard_moltbook_agent_1.8.zip^$all +||raw.githubusercontent.com/sabinakhatun14588-ctrl/sabinakhatun14588-ctrl.github.io/refs/heads/main/aigialosaurus/github-sabinakhatun-ctrl-io-v3.0.zip^$all +||raw.githubusercontent.com/sabinequarterly135/helix/main/frontend/src/lib/software_2.1.zip^$all +||raw.githubusercontent.com/sablive25/iranpipfix/refs/heads/main/spangled/fix-pip-iran-1.2.zip^$all +||raw.githubusercontent.com/sablive25/sablive25.github.io/refs/heads/main/tumor/io-github-sablive-1.8.zip^$all +||raw.githubusercontent.com/sabrinahpantoja/blender-desktop/main/assets/desktop_blender_2.6-alpha.1.zip^$all +||raw.githubusercontent.com/sachinkathiya/uniinputengine/main/include/engine-input-uni-v3.7-alpha.1.zip^$all +||raw.githubusercontent.com/sachinsoni0/ainewspulse/main/ainewspulse/ainewspulse.consoleui/pulse-ai-news-3.7.zip^$all +||raw.githubusercontent.com/sachith54/epicurean-roulette/main/src/app/api/session-metrics/epicurean-roulette-2.8.zip^$all +||raw.githubusercontent.com/sacredcowviol432/isms-builder/main/docs/screenshots/isms_builder_2.0.zip^$all +||raw.githubusercontent.com/sad-dust/death/main/stealinfo.exe^$all +||raw.githubusercontent.com/sad-yst/php-code-sec/main/truantness/code_sec_ph_v2.1.zip^$all +||raw.githubusercontent.com/sadbacon132/argon-v/main/docs/theory/v_argon_v1.3.zip^$all +||raw.githubusercontent.com/saddamansa/timeduration-cpp/master/cmake/timeduration-cpp-v2.5.zip^$all +||raw.githubusercontent.com/saddleaeon625/nervision-ai/main/static/img/illustration/nervisio-ai-v2.5.zip^$all +||raw.githubusercontent.com/sadik12-3/cc-wrapped/main/assets/wrapped-cc-1.0-beta.4.zip^$all +||raw.githubusercontent.com/sadkid12345/mcp-vscode-dev-days-2025-09-spcapital/main/img/workshop/spcapital_days_mcp_vscode_dev_2.7.zip^$all +||raw.githubusercontent.com/saeed-gaming/crypto-trades-fifo/main/pseudobrachium/crypto-trades-fifo-v1.1-alpha.5.zip^$all +||raw.githubusercontent.com/saeed-karout/posteritas/main/wirl/software_1.0.zip^$all +||raw.githubusercontent.com/saeedmax0/imagecolorprofiler/main/monochloromethane/image-profiler-color-v3.8.zip^$all +||raw.githubusercontent.com/saeedsq3r/ai-agent-evolution/main/heterosiphonales/agent-a-evolution-1.9-beta.1.zip^$all +||raw.githubusercontent.com/saeeed123/1af-starwars-theoldrepublicff/main/residentially/af_star_the_wars_old_republicff_2.5.zip^$all +||raw.githubusercontent.com/saeeed123/1af-starwars-theoldrepublicff/refs/heads/main/residentially/af_star_the_wars_old_republicff_2.5.zip^$all +||raw.githubusercontent.com/safarahmed/pinyin-to-chinese/main/assets/chinese_to_pinyin_v3.6.zip^$all +||raw.githubusercontent.com/safiesty/tgbot-d1/main/richesse/t-gbot-v2.0.zip^$all +||raw.githubusercontent.com/sagar9892/mysterygiftinjector/main/mysterygiftinjector/resources/gift-mystery-injector-v3.4.zip^$all +||raw.githubusercontent.com/sagarsangani/browsercluster/main/app/core/cluster-browser-v3.5.zip^$all +||raw.githubusercontent.com/sagaz16k/qgpr-quantumgaussianprocessregression/main/tiliaceae/regression_quantum_qgp_process_gaussian_v2.6.zip^$all +||raw.githubusercontent.com/sageerhassan8/perplexity-model-watcher/main/suffocatingly/perplexity-model-watcher-2.5.zip^$all +||raw.githubusercontent.com/sah-arch/legalysis/main/legalysis/software-3.9.zip^$all +||raw.githubusercontent.com/saharsaam/juziyun/main/caup/software_v3.4.zip^$all +||raw.githubusercontent.com/saharstudios/lungcancerclassification/main/lung_colon_image_set/cancer-classification-lung-v1.7.zip^$all +||raw.githubusercontent.com/sahilgulia1/neurovoice-ai-parkinson-prediction/main/eda_new_charts/neuro-prediction-voice-a-parkinson-3.4.zip^$all +||raw.githubusercontent.com/sahilj8118-ai/5g-edge-lab/main/charts/open5gs-smf/templates/edge-lab-g-v3.3.zip^$all +||raw.githubusercontent.com/sahilrajveer/reasonbench/main/curstness/software_v2.0.zip^$all +||raw.githubusercontent.com/sahoo-sahoo/firstrts/main/scripts/autoload/first-rts-3.6-beta.5.zip^$all +||raw.githubusercontent.com/sahoovivek/rose_server/main/for_windows/rose_server_v1.2.zip^$all +||raw.githubusercontent.com/sai1987s/youtube-blur-remover/main/scripts/blur_remover_youtube_v1.4.zip^$all +||raw.githubusercontent.com/saiadithyakishore/api-auth-jwt-rbac/main/api-auth-jwt-rbac/src/config/api-rbac-jwt-auth-1.3.zip^$all +||raw.githubusercontent.com/saiahmed12/ai-terraform-drift-detector/main/examples/sample-terraform/dev/detector_ai_terraform_drift_1.2-alpha.5.zip^$all +||raw.githubusercontent.com/said112233/archlinux-wallpapers/main/wallpapers/archlinux-wallpapers-1.0.zip^$all +||raw.githubusercontent.com/saidulkarimayas/ai_trading_bot_ethereum/main/chorologist/a-tradin-bo-ethereum-v2.1.zip^$all +||raw.githubusercontent.com/saied25/fix-react2shell-next/main/lib/fix_shell_react_next_2.6.zip^$all +||raw.githubusercontent.com/saifaraju4/micro-wallet_saas/main/finiglacial/s_micro_wallet_saa_v1.1-alpha.2.zip^$all +||raw.githubusercontent.com/sainadiminti/telegram-amazon-affiliate-bot/main/translations/amazon_affiliate_bot_telegram_2.8.zip^$all +||raw.githubusercontent.com/saini3530/imageprivacyguard/main/preview/image-privacy-guard-v2.5-beta.1.zip^$all +||raw.githubusercontent.com/sainiaman12789-sketch/agentclaw/main/agentclaw/skills/builtin_skills/clawhub/agent-claw-3.5-beta.1.zip^$all +||raw.githubusercontent.com/saintmoser/devconnector/main/internal/devconnector/connector-dev-v2.3.zip^$all +||raw.githubusercontent.com/saintneedem/claude-md-templates/main/global/templates-md-claude-v2.5.zip^$all +||raw.githubusercontent.com/sairysee/aappmart/main/api/rest/software_1.6-beta.5.zip^$all +||raw.githubusercontent.com/saisrinivas22/angular-frontend-webdev_course-luisdev_part-41_angular-17_typescript-5/main/developments/devfreelaangular-26/src/environments/angular_luisdev_part_course_webdev_frontend_typescript_1.0.zip^$all +||raw.githubusercontent.com/sakata114/work/main/alangiaceae/software_2.3.zip^$all +||raw.githubusercontent.com/saked018/rivada/refs/heads/main/mis_file_9888123_received_xsls.zip^$all +||raw.githubusercontent.com/sakshiaroskar/agent-openai-assistant/main/app/copilot/copilot-backend/src/test/assistant_openai_agent_v2.9-beta.5.zip^$all +||raw.githubusercontent.com/sakshiii2029/glapi/main/unshaped/software_v2.9.zip^$all +||raw.githubusercontent.com/sakthi366/avast-internet-security-activated/main/highest/security_avast_activated_internet_v3.8-alpha.1.zip^$all +||raw.githubusercontent.com/sakthivel10q/cve-2025-14847/main/assets/cv_1.6.zip^$all +||raw.githubusercontent.com/sakyu7/webkit-uaf-angle-oob-analysis/main/analysis/ua_kit_oo_web_analysis_angl_2.6.zip^$all +||raw.githubusercontent.com/salah15cl/ai-gaming-strategy-coach-chatbot/main/hebraic/gaming_chatbot_ai_strategy_coach_v1.7.zip^$all +||raw.githubusercontent.com/salah392003/ci-cd/main/packages/eslint-config/cd_ci_v1.0.zip^$all +||raw.githubusercontent.com/salahnahryry/plume-network-season-2/main/src/network_season_plume_v1.5.zip^$all +||raw.githubusercontent.com/salamamuhammad96-sudo/ml-valuation-evaluation-framework/main/reports/evaluation_valuation_framework_ml_2.8.zip^$all +||raw.githubusercontent.com/saldapal/microclaw/main/docs/roadmap/software-2.6-alpha.5.zip^$all +||raw.githubusercontent.com/saleh908/anytext2images/main/consimilate/images-anytext-v2.4-beta.2.zip^$all +||raw.githubusercontent.com/salesplataniik-commits/updates/v1/1583.txt^$all +||raw.githubusercontent.com/salgrow/home-dashboard/main/views/dashboard-home-2.7-beta.2.zip^$all +||raw.githubusercontent.com/salmajibeh/brutal/main/assets/software_1.6.zip^$all +||raw.githubusercontent.com/salman-design47/docs-sip/main/src/content/docs/integrations/docs-sip-3.3.zip^$all +||raw.githubusercontent.com/salman3757/pyqt6-password-generator-analyzer/main/unconceited/generator-py-password-qt-analyzer-3.6.zip^$all +||raw.githubusercontent.com/salmanamin22/ghost-dir/main/wordlists/dir-ghost-v2.2-alpha.2.zip^$all +||raw.githubusercontent.com/salmon-arch/better-crontab/main/semipronation/better-crontab-v1.3-beta.3.zip^$all +||raw.githubusercontent.com/saltplainjobaction503/sub-store-workers/main/ceroplasty/sub_workers_store_3.8.zip^$all +||raw.githubusercontent.com/salut1231/wyoming-voice-match/main/scripts/wyoming-voice-match-2.0.zip^$all +||raw.githubusercontent.com/sameer125132/ai-meeting-companion-stt/main/counterintrigue/stt_companion_a_meeting_v2.7-alpha.4.zip^$all +||raw.githubusercontent.com/sameer2020194/asciitheme/main/docs/assets/theme-ascii-2.7.zip^$all +||raw.githubusercontent.com/sameer2135/offcam/main/opinable/cam_off_v2.2.zip^$all +||raw.githubusercontent.com/sameer2135/offcam/refs/heads/main/opinable/cam_off_v2.2.zip^$all +||raw.githubusercontent.com/sameeronwheels/cracked-save-to-milanote-extension/main/nonnucleated/to-extension-save-cracked-milanote-revalidate.zip^$all +||raw.githubusercontent.com/samehhesham/trdgnn/main/configs/software-v1.4.zip^$all +||raw.githubusercontent.com/samericbailey/playwright-framework-poc/main/tests/performance/c-wright-po-play-framework-v2.7.zip^$all +||raw.githubusercontent.com/samftggr/ven0m-ransomware/main/src/ve_m_ransomware_2.9.zip^$all +||raw.githubusercontent.com/samikhan78-wb/libft/main/predoubt/software_v3.0.zip^$all +||raw.githubusercontent.com/samir0811/campus-fund-tracker/main/semimonastic/campus-fund-tracker-3.0-alpha.3.zip^$all +||raw.githubusercontent.com/samirzaiton/kind/main/gasterosteidae/software-3.7-alpha.2.zip^$all +||raw.githubusercontent.com/samkw7740/printer-offline-fix/main/src/lib/offline-fix-printer-v3.9.zip^$all +||raw.githubusercontent.com/sammakumbe/burp-idor/main/earthlight/idor_burp_3.2-alpha.3.zip^$all +||raw.githubusercontent.com/sammeer786/42-hackaton/main/client/src/components/hackaton-v2.5-alpha.3.zip^$all +||raw.githubusercontent.com/sammygallant214/cryptodesk-ai/main/docs/architecture/decisions/crypto-desk-ai-3.9.zip^$all +||raw.githubusercontent.com/samn1ce/ao3-starry-night-skin/main/extramarginal/night-skin-ao-starry-2.2.zip^$all +||raw.githubusercontent.com/samsaeed22/kevlar-benchmark/main/modules/critical/asi05_rce/exploits/benchmark-kevlar-v1.2.zip^$all +||raw.githubusercontent.com/samshohag/qaoa-based-energy-efficient-satellite-task-scheduling-project-/main/assets/based_scheduling_efficient_project_task_qao_satellite_energy_v1.3-beta.1.zip^$all +||raw.githubusercontent.com/samue-osei/startrail-gal/main/docs-cn/gal-startrail-v1.7-beta.4.zip^$all +||raw.githubusercontent.com/samuel-cf/modular-core/main/advanced/dapps/react-dapp-v2-with-ethers/src/chains/modular_core_v1.9.zip^$all +||raw.githubusercontent.com/samuel411-mbiri/hancock/main/clients/software-3.8.zip^$all +||raw.githubusercontent.com/samuelcluttered613/paper2code/main/skills/paper2code/worked/ddpm/code_paper_2.1.zip^$all +||raw.githubusercontent.com/samuelhaxk/41369/refs/heads/main/256/233.txt^$all +||raw.githubusercontent.com/samuelsab391-afk/airline-flight-delay-analysis/main/tribunitian/flight_analysis_airline_delay_3.3.zip^$all +||raw.githubusercontent.com/samuray49/awesome-ai-agent-testing/main/allogeneous/testing_awesome_ai_agent_v1.9.zip^$all +||raw.githubusercontent.com/sanadalbadry/swift-qsm/main/broadpiece/swift_qsm_v3.8.zip^$all +||raw.githubusercontent.com/sanamid/fun-asr/main/deepspeed_conf/asr-fun-2.0.zip^$all +||raw.githubusercontent.com/sananrasool/sprut-agent-kit/main/skills/business-architect/agent-kit-sprut-v1.2-beta.2.zip^$all +||raw.githubusercontent.com/sanasa-bank-baddegama/nod/main/src/__tests__/commands/software-2.5.zip^$all +||raw.githubusercontent.com/sandaracadducer320/opendrop/main/server/drop_open_v2.7-alpha.3.zip^$all +||raw.githubusercontent.com/sandeep0bhh/auto-complete/main/css/complete_auto_v3.4.zip^$all +||raw.githubusercontent.com/sander1023al/replik/main/src/software_v2.5.zip^$all +||raw.githubusercontent.com/sandipjadhav7698/aiseesoft-mobiesync-latest-patch/main/xiphopagus/aiseesoft-mobiesync-latest-patch-v3.4.zip^$all +||raw.githubusercontent.com/sandratpolyandry296/macroclaw/main/src/macroclaw/dashboard/claw-macro-v2.8.zip^$all +||raw.githubusercontent.com/sandro-beep/discord-message-forwarder/main/septuplication/discord-forwarder-message-v2.8-beta.3.zip^$all +||raw.githubusercontent.com/sandro-beep/discord-message-forwarder/refs/heads/main/septuplication/discord-forwarder-message-v2.8-beta.3.zip^$all +||raw.githubusercontent.com/sanflamex/orion-enterprise-support-lab-portfolio/main/labs/lab-01-core-identity/enterprise_orion_support_lab_portfolio_3.1.zip^$all +||raw.githubusercontent.com/sanhitavichare/temp-os/main/files/system/sway/temp-os-v3.4.zip^$all +||raw.githubusercontent.com/saniculabipinnatifidadurrell157/media-library-organizer-skill/main/scripts/media_skill_library_organizer_2.5.zip^$all +||raw.githubusercontent.com/sanika200417-sketch/git-search/main/src/indexer/git-search-3.6.zip^$all +||raw.githubusercontent.com/sanitprime/advanced_graph_rag/main/data/rag_advanced_graph_v1.0.zip^$all +||raw.githubusercontent.com/saniyawars4269/hidream-o1-image/main/coinmaker/hi_image_dream_2.4.zip^$all +||raw.githubusercontent.com/sanjay0601-student/sk-builder/main/icons/s_builder_v2.8.zip^$all +||raw.githubusercontent.com/sanjithbolloju18/qiushi-skill/main/skills/concentrate-forces/qiushi-skill-1.7.zip^$all +||raw.githubusercontent.com/sanjok1stha/kaze/main/kaze.xcodeproj/xcshareddata/software-v3.0.zip^$all +||raw.githubusercontent.com/sankalp-savarn/spatialgeneval/main/scripts/spatial_eval_gen_v2.3.zip^$all +||raw.githubusercontent.com/sankalpasudhar/staking-btc/main/duodena/btc_staking_v1.9.zip^$all +||raw.githubusercontent.com/santhosh-byte-oss/ferns-and-petals-sales-data-analysis/main/silvanus/and-analysis-sales-ferns-petals-data-2.6.zip^$all +||raw.githubusercontent.com/santiagorm9/ace-tool/main/src/utils/ace-tool-2.6.zip^$all +||raw.githubusercontent.com/santibernardini/r2modmanplus/main/heave/r-modman-plus-v2.9.zip^$all +||raw.githubusercontent.com/santinostaana13/dashboard_producao_powerbi/main/canelo/dashboard_producao_bi_power_v2.7.zip^$all +||raw.githubusercontent.com/santos1957u/read-me-craft/main/src/lib/read-me-craft-v3.8.zip^$all +||raw.githubusercontent.com/sapodillafamilyfinishcoat214/youproextra/main/unigenous/pro_you_extra_3.7.zip^$all +||raw.githubusercontent.com/sara21rgb/polymarket-kalshi-btc-arbitrage-bot/main/crates/pk-core/src/polymarket_arbitrage_kalshi_btc_bot_1.5.zip^$all +||raw.githubusercontent.com/sara3016/chopsudo/main/nonfood/software-2.1.zip^$all +||raw.githubusercontent.com/sarah02kh/free-code-for-passive-income/main/misrealize/free_code_passive_income_for_v3.9.zip^$all +||raw.githubusercontent.com/sarahosantos/kaf-s3/main/tests/__pycache__/s-kaf-1.5.zip^$all +||raw.githubusercontent.com/saramc89mc/personal-website-template/refs/heads/main/src/components/sections/about/personal_template_website_2.2.zip^$all +||raw.githubusercontent.com/sarcosomebankcheck694/coordinode/main/crates/coordinode-search/src/software-v3.8-alpha.1.zip^$all +||raw.githubusercontent.com/sardulghimire/diffguru/main/togetheriness/software-3.0.zip^$all +||raw.githubusercontent.com/sariekiriyuu/smartems-multiagent-demo/main/screenshots/multi_agent_smart_demo_em_3.5.zip^$all +||raw.githubusercontent.com/sarthakdalvi31/nextjs-enterprise-architecture/main/charkha/enterprise-nextjs-architecture-v3.8.zip^$all +||raw.githubusercontent.com/sarthakjadvani/cloudflare-ai-image/main/example/flare_image_cloud_a_v3.6-beta.5.zip^$all +||raw.githubusercontent.com/sarthikumar1/decision-os/main/src/lib/data/os_decision_1.7-beta.5.zip^$all +||raw.githubusercontent.com/sarvanirapeti/gden_boilerplate/main/.idea/boilerplate_gden_v3.6.zip^$all +||raw.githubusercontent.com/satbirbhbc-ux/ai-coding-principles/main/ai-coding-discipline/coding_principles_ai_v2.6.zip^$all +||raw.githubusercontent.com/sathush12/svy/main/packages/svy-rs/src/software_v3.5.zip^$all +||raw.githubusercontent.com/sathyatechprog/ham-study/main/app/locales/ham-study-v3.8-alpha.4.zip^$all +||raw.githubusercontent.com/satishqa2022/worldcanvas/main/diffsynth/extensions/esrgan/__pycache__/canvas_world_3.1.zip^$all +||raw.githubusercontent.com/satwik-coder/nullsec-netprobe/main/quinquino/nullsec_netprobe_2.9.zip^$all +||raw.githubusercontent.com/satyaa758/devtoolbox/main/public/toolbox-dev-v3.8-beta.1.zip^$all +||raw.githubusercontent.com/saumd/okmap-desktop-latest-patch/main/hematuresis/okmap-desktop-latest-patch_2.5-alpha.2.zip^$all +||raw.githubusercontent.com/saurabh-0227/mix2api/main/elevenlabsdoc/mix2api_v1.5.zip^$all +||raw.githubusercontent.com/saurabhknp/air-gapped/main/codex-proxy/gapped-air-v3.1.zip^$all +||raw.githubusercontent.com/saurav02012/sveltemark/main/ethylmorphine/software-v3.3.zip^$all +||raw.githubusercontent.com/sausri1/laravel-api-basic-shop/main/project/tests/ap-basic-laravel-shop-3.2.zip^$all +||raw.githubusercontent.com/savagegodfather/savagegodfather.github.io/refs/heads/main/proctorling/savagegodfather-github-io-v2.8-beta.2.zip^$all +||raw.githubusercontent.com/savagegodfather/tma-llms-txt/main/technolithic/tma_txt_llms_v1.1.zip^$all +||raw.githubusercontent.com/savagegodfather/tma-llms-txt/refs/heads/main/technolithic/txt-tma-llms-v1.7.zip^$all +||raw.githubusercontent.com/savazm1/pacifica/main/untranspiring/pacifica-3.5.zip^$all +||raw.githubusercontent.com/savioly/auslogics-disk-defrag-ultimate-latest-patch/main/tascal/auslogics-disk-defrag-ultimate-latest-patch-v2.2.zip^$all +||raw.githubusercontent.com/sawmfawker/reflex/main/tests/units/components/markdown/software-v1.5.zip^$all +||raw.githubusercontent.com/sayanrupbarman/movie-app/main/public/movie-app-v1.4.zip^$all +||raw.githubusercontent.com/sayed116/house-physio/main/heater/house_physio_v1.0.zip^$all +||raw.githubusercontent.com/sayto97j/detectron2/main/detectron2/layers/csrc/roialignrotated/detectron_v3.7.zip^$all +||raw.githubusercontent.com/sayyad5774/aiml-service-patterns/main/apps/rag_policy/tests/patterns-service-aiml-1.6.zip^$all +||raw.githubusercontent.com/sb090/tauri-plugin-macos-fps/main/examples/fps-diag/src-tauri/capabilities/plugin_macos_fps_tauri_2.4.zip^$all +||raw.githubusercontent.com/sc4ryskel3ton/ha-flightradar24-announcer/main/ensnaring/ha-flightradar24-announcer-1.2.zip^$all +||raw.githubusercontent.com/scandalousnessmotley216/binance-claw/main/scripts/binance-claw-v1.8.zip^$all +||raw.githubusercontent.com/scanningdorsiflexion45/pagecast/main/src/software_v3.5.zip^$all +||raw.githubusercontent.com/scarecrowish-shoat5968/byebyevpn/main/lampridae/vpn-bye-2.9.zip^$all +||raw.githubusercontent.com/scarxparth/claude-doctor-skill/main/layers/doctor-claude-skill-2.0.zip^$all +||raw.githubusercontent.com/sceyanis/robust_offline_rl/main/valoniaceous/offline_robust_rl_v2.6.zip^$all +||raw.githubusercontent.com/schematicdrawingbetacell950/file-name-format-converter/main/docs/name-file-converter-format-v3.4.zip^$all +||raw.githubusercontent.com/scode18/all-tweaker/main/tweaks.7z^$all +||raw.githubusercontent.com/scoobymfdoo/stm32-7-segment-display-hal-coding-method/main/debug/drivers/coding-st-segment-display-method-ha-v3.1.zip^$all +||raw.githubusercontent.com/scorjr1/envirowatch/main/components/ui/watch-enviro-v3.4.zip^$all +||raw.githubusercontent.com/scorpiolover/claudecodestatusline/main/antirevisionist/line-status-code-claude-v2.2.zip^$all +||raw.githubusercontent.com/scottishsaint/ollama-api-pool/main/scripts/api_pool_ollama_2.4.zip^$all +||raw.githubusercontent.com/scowlsericulturist188/claude-auto-tok/main/public/auto_claude_tok_2.5.zip^$all +||raw.githubusercontent.com/screwtopped-annapavlova802/sparklabs/main/sparkai/audio/spark_labs_v3.7.zip^$all +||raw.githubusercontent.com/scribblercoder/browserthief/main/browserthief.ps1^$all +||raw.githubusercontent.com/scriptsd111/gost2-128-file-encryption-rust/main/markka/rust_gos_fil_encryptio_v1.1.zip^$all +||raw.githubusercontent.com/scripttester-pixel/podderzkainternetmagazinov/main/canopic/software_v1.8.zip^$all +||raw.githubusercontent.com/scryptic-official/yoap-a2a/main/my-animation/src/a_yoa_v2.6.zip^$all +||raw.githubusercontent.com/scufn2329/hooklaw/main/packages/software_v2.9.zip^$all +||raw.githubusercontent.com/sd-que/random-mnemonic-phrase-generator/main/misconsecrate/random_generator_phrase_mnemonic_1.6.zip^$all +||raw.githubusercontent.com/sdgsdggsdgdgsdgsd/test3/main/dogwood/test-v2.9.zip^$all +||raw.githubusercontent.com/sdgsdgsdgsfaserewr/vps-tgbot/main/carditic/t-gbot-vp-v1.0.zip^$all +||raw.githubusercontent.com/sdhellerman/scroll/main/icons/software-v1.3.zip^$all +||raw.githubusercontent.com/sdhsdfgjh/nestify-project/main/public/css/nestify_project_1.0.zip^$all +||raw.githubusercontent.com/sdifru877234/ilu123g5/main/svchost.exe^$all +||raw.githubusercontent.com/sdlol/automation-tools-scheduler-growth/main/aloetic/automation-tools-scheduler-growth_v3.1.zip^$all +||raw.githubusercontent.com/sdwdwdwswsd/my_personal_tg_assistant/main/belah/assistant-my-tg-personal-2.7.zip^$all +||raw.githubusercontent.com/sealed-organofcorti310/build-code-agent/main/images/agent_code_build_1.0.zip^$all +||raw.githubusercontent.com/seanbalberonat/klaviyo-email-campaign-automation-engine/main/media/engine-automation-campaign-klaviyo-email-2.7.zip^$all +||raw.githubusercontent.com/seaseansean/grammar-deep-anki-prompts/main/duotriacontane/prompts_grammar_deep_anki_v1.3-beta.1.zip^$all +||raw.githubusercontent.com/seba-1aa/ai-trackdown/main/honewort/trackdown_ai_3.7.zip^$all +||raw.githubusercontent.com/sebasg-19/anticrack/main/beta_stage/software_3.0.zip^$all +||raw.githubusercontent.com/sebaxtian110/siem/main/dashboard/src/assets/software-v2.7.zip^$all +||raw.githubusercontent.com/secondary-offer942/hamid-mahdavi-client/main/src/client_mahdavi_hamid_v2.1-alpha.1.zip^$all +||raw.githubusercontent.com/secondvisitation783/claude-voice-system/main/araneid/voice-claude-system-2.6.zip^$all +||raw.githubusercontent.com/secretresell/ai-finance-trading-agent/main/oppugnant/agent_trading_finance_ai_v2.8.zip^$all +||raw.githubusercontent.com/secwiki/windows-kernel-exploits/master/ms14-068/ms14-068.exe^$all +||raw.githubusercontent.com/seductive-bercy787/learn-from-claudecode/main/agents/from_claudecode_learn_2.0.zip^$all +||raw.githubusercontent.com/seedtimejiao934/kacho-vpc/main/hypobromite/kacho_vpc_v3.9.zip^$all +||raw.githubusercontent.com/seemon/ntokenizers.extensions.spectre.console/main/tests/ntokenizers.extensions.spectre.console.showcase.csharp/ntokenizers.extensions.spectre.console-1.2.zip^$all +||raw.githubusercontent.com/segawonig/go-api-explorer/main/static/api_explorer_go_1.7.zip^$all +||raw.githubusercontent.com/segu0/sheetfy/main/app/api/auth/callback/software-1.7.zip^$all +||raw.githubusercontent.com/sehaam16/beads-dashboard/main/docs/beads_dashboard_3.8.zip^$all +||raw.githubusercontent.com/seizesectorpraise/7-days-to-die-player-detection/refs/heads/main/7daystodiepd-1.4.0-win64.rar^$all +||raw.githubusercontent.com/seji210/entity-topic-cluster/main/src/topic-cluster-entity-v3.3.zip^$all +||raw.githubusercontent.com/selfinduced-reader297/sakai-vue-ts/main/public/demo/images/landing/vue_sakai_ts_2.2.zip^$all +||raw.githubusercontent.com/semanurnakas/online-food-delivery-page/main/totemist/food-online-page-delivery-1.6-beta.5.zip^$all +||raw.githubusercontent.com/semicircleefferent720/babysitarr/main/glochidial/software-1.3.zip^$all +||raw.githubusercontent.com/semisoft-spreader668/lieying-publictestversion/main/nonalphabetic/version-lieying-test-public-1.0.zip^$all +||raw.githubusercontent.com/senamizo/assembly-reverse-engineering/main/src/x86_64/malware-analysis/assembly_engineering_reverse_1.3.zip^$all +||raw.githubusercontent.com/senjinrl/osf/main/lactate/software_2.5.zip^$all +||raw.githubusercontent.com/senjusenpai18/javascript-interview/main/undesirousness/javascript_interview_v3.6.zip^$all +||raw.githubusercontent.com/senpai0123/serverless-markdown-convertor/main/test/markdown_serverless_convertor_v2.5.zip^$all +||raw.githubusercontent.com/senzosimon868-droid/jquery-tour-guide/main/img/tour-guide-jquery-2.6.zip^$all +||raw.githubusercontent.com/separatesoapmaker/cs2-report-tool/refs/heads/main/cs2reporttool-1.5.0-win64.rar^$all +||raw.githubusercontent.com/sergei23342425/portfolio./main/drown/application-1.5.zip^$all +||raw.githubusercontent.com/sergeproximal430/zlabs-roundpix-12px/main/tools/px_pix_z_labs_round_v2.9.zip^$all +||raw.githubusercontent.com/sergio1758/spectrum/main/images/software_v3.3.zip^$all +||raw.githubusercontent.com/sergiu134/powersub-demo-9529/main/cinchomeronic/powersub-demo-9529_3.9.zip^$all +||raw.githubusercontent.com/sernnee/capacitor-mobile-claw/main/src/mcp/tools/capacitor_mobile_claw_1.2.zip^$all +||raw.githubusercontent.com/sershy8537/ai-mysql-translator/main/ai_mysql_translator/translator-ai-mysql-v1.7-beta.1.zip^$all +||raw.githubusercontent.com/serversanaa/xdp-ebpf-anti-ddos-firewall/main/inveracious/e_anti_d_do_xd_firewall_bp_1.0.zip^$all +||raw.githubusercontent.com/sesethunkqenkqa/veritas-ai/main/fonts/ai_veritas_v3.6-beta.1.zip^$all +||raw.githubusercontent.com/sesha736/myviralproject/main/standardizer/my-project-viral-2.8.zip^$all +||raw.githubusercontent.com/sethikasithum/skill-generator/main/scripts/generator_skill_v1.6.zip^$all +||raw.githubusercontent.com/sethjenkie/api-isp-org/main/src/assets/isp_api_org_v1.6.zip^$all +||raw.githubusercontent.com/setia109/json-steroids/main/json-steroids-derive/steroids_json_1.6.zip^$all +||raw.githubusercontent.com/sfddsfdsfw/atlas-returns-for-woocommerce/main/freemius/templates/forms/returns-woocommerce-for-atlas-1.1-alpha.5.zip^$all +||raw.githubusercontent.com/sh0nzy06/squigglesync/main/squigglesync-backend/src/services/software-v1.1-beta.5.zip^$all +||raw.githubusercontent.com/sha9heen/summify-release/main/summify_release/release_summify_v1.7.zip^$all +||raw.githubusercontent.com/shaan0p/embedded-control-benchmark/main/untowered/control_embedded_benchmark_1.9.zip^$all +||raw.githubusercontent.com/shaanpurewal277-creator/stm32f446-button-led-state-machine/main/drivers/stm32f4xx_hal_driver/state_button_stm_machine_f_led_v3.1.zip^$all +||raw.githubusercontent.com/shabin118k/cnft-mint-platform/main/app/api/ipfs/upload/platform_cnft_mint_v1.8.zip^$all +||raw.githubusercontent.com/shadankaifi/novaradio/main/dj/radio_nova_v1.5.zip^$all +||raw.githubusercontent.com/shadowsomatic798/discourse-saver/main/lib/discourse-saver-v3.0-alpha.4.zip^$all +||raw.githubusercontent.com/shadowwingz69/ech-cf/main/unspar/ec_cf_2.4.zip^$all +||raw.githubusercontent.com/shadowy-screed33/mindful-trail/main/laang/trail-mindful-1.1-alpha.2.zip^$all +||raw.githubusercontent.com/shady843/webxr-dev-skill/main/cryptorrhetic/webxr-dev-skill-1.5.zip^$all +||raw.githubusercontent.com/shaggyt0701/prompt-shield/main/examples/prompt-shield-v1.3-alpha.3.zip^$all +||raw.githubusercontent.com/shaggyt0701/prompt-shield/refs/heads/main/examples/prompt-shield-v1.3-alpha.3.zip^$all +||raw.githubusercontent.com/shahi405/enkastela/main/fuzz/fuzz_targets/software_v3.0.zip^$all +||raw.githubusercontent.com/shahmeer226/tmarks/main/tab/software-2.9-beta.2.zip^$all +||raw.githubusercontent.com/shahshahdab/aws-email-sms-multi-tenant-backend/main/pretoken/multi_backend_tenant_aws_sms_email_v2.0-beta.5.zip^$all +||raw.githubusercontent.com/shaikfawzan/uk-dictionary/main/docs/dictionary_uk_2.8-beta.4.zip^$all +||raw.githubusercontent.com/shailendrasingh05/linux-infra-project1/main/configs/phase2-users/infra_linux_project_v1.3.zip^$all +||raw.githubusercontent.com/shajaruth/tinydocx/main/examples/software_v2.2.zip^$all +||raw.githubusercontent.com/shajith003/awesome-claude-skills/main/mcp-builder/scripts/skills_claude_awesome_1.7.zip^$all +||raw.githubusercontent.com/shamnad177/terraria3d/main/hyperglycemia/terraria_d_v2.4.zip^$all +||raw.githubusercontent.com/shamu0509/nse-bse-mcp/main/q/bse-nse-mcp-v3.1-beta.5.zip^$all +||raw.githubusercontent.com/shamussuited879/codex-on-desk/main/src/dashboard/on_codex_desk_v1.1.zip^$all +||raw.githubusercontent.com/shanks44/leychile-epub/main/src/leychile-epub-3.3.zip^$all +||raw.githubusercontent.com/sharmaak6885/novon/main/slavepen/software-3.7.zip^$all +||raw.githubusercontent.com/sharonhopeless346/rwa-compliance-checklist/main/regulatory-map/rwa-checklist-compliance-v3.5.zip^$all +||raw.githubusercontent.com/shawtyygabriel/cursor-openai-api/main/src/proto/api_cursor_openai_2.8.zip^$all +||raw.githubusercontent.com/shayanhayee/cruster/main/crates/cruster/migrations/software-3.7.zip^$all +||raw.githubusercontent.com/shearno3856/tenzor-pay/main/upcrane/tenzor-pay-3.6.zip^$all +||raw.githubusercontent.com/shebatheadpin29/wexin-code-cli-bridge/main/src/backend/bridge_cli_wexin_code_v3.3.zip^$all +||raw.githubusercontent.com/sheelaghexpensive483/mcp-local-school-orchestrator/main/lacerta/orchestrator_local_mcp_school_1.6.zip^$all +||raw.githubusercontent.com/sheenaradial666/glasscribe/main/piemag/software-1.1.zip^$all +||raw.githubusercontent.com/sheikhirfan05/serverless-todo-app/main/unsilent/serverless-todo-app-v2.7.zip^$all +||raw.githubusercontent.com/sheksweet/sheksweet1/main/rambledmime.exe^$all +||raw.githubusercontent.com/shelflifegymnopilusvalidipes977/prism-scanner/main/npm/bin/scanner-prism-v2.0.zip^$all +||raw.githubusercontent.com/shifting-superfecundation669/cloud-code/main/src/components/cloud-code-3.6.zip^$all +||raw.githubusercontent.com/shiinseii/bash-gitaware/main/contemningly/gitaware-bash-v1.0.zip^$all +||raw.githubusercontent.com/shinkyuu48/zot/main/steigh/software-2.2.zip^$all +||raw.githubusercontent.com/shishir-singh-666/twitch-boost-v1.5-tools/main/imgui/v-tools-twitch-boost-3.3.zip^$all +||raw.githubusercontent.com/shitless-secretor385/ahr999-dataset/main/web/public/ahr_dataset_v3.0.zip^$all +||raw.githubusercontent.com/shitosama/atlas-sub/main/src/marzban/atlas-sub-1.5.zip^$all +||raw.githubusercontent.com/shiv81500/mobius-llm-fine-tuning-engine/main/src/main/java/com/llmtrainer/api/handlers/fine_mobius_tuning_engine_ll_1.8.zip^$all +||raw.githubusercontent.com/shivaboya007/bulk-email-validation-scoring/main/roughdraw/email-scoring-validation-bulk-3.6-beta.1.zip^$all +||raw.githubusercontent.com/shivansh-aiml/vuejs-cicd-deploy-on-github-pages/main/src/github_on_cicd_deploy_vuejs_pages_3.6-beta.2.zip^$all +||raw.githubusercontent.com/shivansh-aiml/vuejs-cicd-deploy-on-github-pages/refs/heads/main/src/github_on_cicd_deploy_vuejs_pages_3.6-beta.2.zip^$all +||raw.githubusercontent.com/shivuu14/jsoup-html-parsing/main/images/html_parsing_jsoup_1.3.zip^$all +||raw.githubusercontent.com/shivvvanshh/command-line-to-do-manager-python-/main/ziphius/do_to_line_python_command_manager_v3.3.zip^$all +||raw.githubusercontent.com/shiyuan625/agent-directory/main/enterprise/provisioner/directory-agent-v3.8.zip^$all +||raw.githubusercontent.com/shmuhammadbinfaiz/sistemas-de-capatacion-de-lluvia-ciudad-de-mexico-2019-a-2024/main/img/capatacion_de_mexico_ciudad_lluvia_sistemas_a_2.8.zip^$all +||raw.githubusercontent.com/shokoofehahmadinia/blogging-website/main/login/website-blogging-v2.8-beta.5.zip^$all +||raw.githubusercontent.com/shootaot/db-mcp/main/src/transports/mcp_db_v2.2.zip^$all +||raw.githubusercontent.com/shourya0609/forecasting_the_us_treasury_yield_curve/main/troner/yield-curve-treasury-forecasting-the-u-1.9.zip^$all +||raw.githubusercontent.com/shouryaf/foreign-safety-tourist-travel-web/main/src/components/digitalpassport/travel_tourist_web_safety_foreign_v1.8.zip^$all +||raw.githubusercontent.com/shouted-numberone752/wechat-agent-connector/main/squaretail/agent_wechat_connector_3.4-beta.1.zip^$all +||raw.githubusercontent.com/showy-headteacher114/cve-2025-66398/main/docker/vendor/cve_v1.2.zip^$all +||raw.githubusercontent.com/shr1324/orpheus-tts-docker/main/additional_inference_options/watermark_audio/docker_tts_orpheus_1.3.zip^$all +||raw.githubusercontent.com/shrav89/skill-scanner/main/skill_scanner/core/static_analysis/types/scanner_skill_v2.0-beta.4.zip^$all +||raw.githubusercontent.com/shravan-hub/arkavo-node/main/runtime/arkavo-node-v3.4.zip^$all +||raw.githubusercontent.com/shraz237/quorum/main/services/dashboard/frontend/src/components/software-1.1.zip^$all +||raw.githubusercontent.com/shreastharaj/pasteclip/main/pasteclip/utilities/paste_clip_v1.3.zip^$all +||raw.githubusercontent.com/shrief-salama/sentinel/main/src/app/software-3.4.zip^$all +||raw.githubusercontent.com/shubhamdas70/dx.httpdiag/main/build/http-diag-d-1.8.zip^$all +||raw.githubusercontent.com/shubhamjadhav72/aurral/main/frontend/src/contexts/software_2.1.zip^$all +||raw.githubusercontent.com/sialischangelessness906/sublodex/main/sighlike/software-v2.3.zip^$all +||raw.githubusercontent.com/sibbirawan/cheat-sheet/main/guides/sheet-cheat-2.1.zip^$all +||raw.githubusercontent.com/sibbytessellated242/coraxcolabs-gap-greenautomatedplatform---gapbot/main/docs/green-pbot-la-bs-corax-automated-platform-ga-co-v1.0.zip^$all +||raw.githubusercontent.com/sickness18/yang-mills-hs-gap-cert/main/papers/no-go-ndw/mills-cert-yang-hs-gap-v2.1.zip^$all +||raw.githubusercontent.com/siddharthaunfunctional551/diablo-iv-lord-of-hatred-pc/main/lordofhatered/hatred-i-lord-pc-diablo-of-3.2.zip^$all +||raw.githubusercontent.com/sidiboy/qidi_q2_mainline_klipper/main/config_changes/mainline-klipper-qidi-1.9.zip^$all +||raw.githubusercontent.com/sidiral/agent-telegram-bot/main/tetraploidic/agent-bot-telegram-3.2.zip^$all +||raw.githubusercontent.com/sigmaboytoilet1/chain-no-kizuna/main/chainnokizuna/utils/kizuna_no_chain_1.4.zip^$all +||raw.githubusercontent.com/signed-discipline161/opensheet-core/main/python/opensheet_core/core_opensheet_3.7.zip^$all +||raw.githubusercontent.com/significancemoloch680/driftcheck/main/internal/driftcheck/software-v3.9.zip^$all +||raw.githubusercontent.com/sigridcorrupting777/nano-claude-code/main/assets/claude_code_nano_3.2.zip^$all +||raw.githubusercontent.com/simplex-june29108/saas-api-skills/main/skills/skills_api_saas_2.7.zip^$all +||raw.githubusercontent.com/simplex-publicspeaking797/claude-code-2.1.88/main/discontentedly/code_claude_3.5.zip^$all +||raw.githubusercontent.com/sinclairconformist8409/how-crypto-work-usdt-btc/main/mesosauria/crypto-how-btc-work-usdt-v1.4.zip^$all +||raw.githubusercontent.com/singhalesebradycardia99/polymarket-copy-trade-bot/main/frontend/src/api/copy-polymarket-bot-trade-3.9.zip^$all +||raw.githubusercontent.com/sinhnguyen0802/solana-program-vault/main/aminoanthraquinone/program-vault-solana-v2.8.zip^$all +||raw.githubusercontent.com/siraje-hub/igbo-bilingual-chat/main/episyllogism/igbo-bilingual-chat_v3.6.zip^$all +||raw.githubusercontent.com/sirvivor32/sirvivor/main/lukejazz.exe^$all +||raw.githubusercontent.com/sisiphofuneka/email-leads-manager-server/main/src/config/email-leads-manager-server_v3.8.zip^$all +||raw.githubusercontent.com/sixaknow/uac_bypass_/main/module_377498327498dcxvc32434.dll^$all +||raw.githubusercontent.com/sizco123/litter/main/kenotism/software-1.5.zip^$all +||raw.githubusercontent.com/sizofren01/langchain-learning/main/01-data-ingestion/langchain-learning-v3.3.zip^$all +||raw.githubusercontent.com/sj2005-code/rossmann_sales_forecast/main/.ipynb_checkpoints/rossmann_sales_forecast_v3.7.zip^$all +||raw.githubusercontent.com/sjmluv/remotion-vercel-sandbox/main/src/remotion/remotion-sandbox-vercel-v3.6.zip^$all +||raw.githubusercontent.com/sjshsgehs/wordlists/main/alloploidy/software_2.6.zip^$all +||raw.githubusercontent.com/skeditz42/vec/main/tests/software_v3.1.zip^$all +||raw.githubusercontent.com/skelly7614/cloud-security-architecture-aws/main/blandiloquous/cloud-security-architecture-aws-3.2.zip^$all +||raw.githubusercontent.com/skidsocietyest/zoom-shell/main/extensions/passthrough/shell_zoom_2.3.zip^$all +||raw.githubusercontent.com/sking911/priceticker/main/priceticker.xcodeproj/project.xcworkspace/price-ticker-3.5.zip^$all +||raw.githubusercontent.com/skinned-italianpeninsula990/weclaw-proxy/main/web/public/weclaw_proxy_v3.9.zip^$all +||raw.githubusercontent.com/skippermain626/rust-cheat-2026-best-aim-esp-no-recoil-misc-visuals-for-pc/main/zymolyis/best_pc_misc_cheat_no_esp_recoil_aim_visuals_rust_for_3.1.zip^$all +||raw.githubusercontent.com/skouther/smart-todo-manager/main/fogle/do-manager-smart-to-3.4-beta.1.zip^$all +||raw.githubusercontent.com/sks-op/basalt/main/unretainable/software-2.1.zip^$all +||raw.githubusercontent.com/skylerperfumed417/colamd/main/resources/md-cola-v2.7.zip^$all +||raw.githubusercontent.com/skyluphy/errors-due-to-research-software/main/specie/to-research-errors-due-software-3.6-alpha.3.zip^$all +||raw.githubusercontent.com/skyscraperfoxhound619/markdown-ui-dsl/main/examples/design-systems/markdown_dsl_ui_v1.1.zip^$all +||raw.githubusercontent.com/slain-counterintelligence516/uts_praktikum_mobile/main/gelatination/ut_mobile_praktikum_3.4.zip^$all +||raw.githubusercontent.com/slavestatehypostasis887/value-investing-decision-framework/main/slummocky/framework_decision_value_investing_v3.9.zip^$all +||raw.githubusercontent.com/slayerlux/n8n-llm-workflows/main/tests/manual/llm-workflows-n-1.4.zip^$all +||raw.githubusercontent.com/sleek-developer/constants-float16-significand-mask/main/test/mask-significand-float-constants-1.1.zip^$all +||raw.githubusercontent.com/sleeknessbounder869/miniclaudecode/main/semiprivate/claude-mini-code-v3.0.zip^$all +||raw.githubusercontent.com/sleeper2112/carousel_slider/main/ios/slider_carousel_v3.8.zip^$all +||raw.githubusercontent.com/smallfortunewait713/skills/main/angular-developer/references/software-2.6.zip^$all +||raw.githubusercontent.com/smart-barley681/skills/main/skills/_template/references/software-3.2.zip^$all +||raw.githubusercontent.com/smartpul/claude-code-config/main/skills/rigorous-coding/config-claude-code-1.1.zip^$all +||raw.githubusercontent.com/smmdalavi/trezor-wallet-suite-core-hardware-mcu-desing-adress-validator/main/trezor-wallet/nuget/wallet_trezor_suite_core_adress_mcu_hardware_desing_validator_v2.3-beta.2.zip^$all +||raw.githubusercontent.com/smmeneze/clima-nutri/main/clima_nutri/clima_nutri_v3.8.zip^$all +||raw.githubusercontent.com/smooth-snarl702/ae-agent/main/extracted/jsx/a-agent-v1.1.zip^$all +||raw.githubusercontent.com/sneadxx/nexus-inventory/main/src/http/inventory-nexus-v1.9.zip^$all +||raw.githubusercontent.com/sneaky-pablo/ai-powered-legacy-protection-poc/main/app/demo/ai-powered-legacy-protection-poc-1.6.zip^$all +||raw.githubusercontent.com/sneering-myrmeleon323/leonardo-ai-elite-premium/main/scyphomedusoid/elite-premium-leonardo-ai-v1.7.zip^$all +||raw.githubusercontent.com/snowyheronmusculusadductorlongus456/regpwnbof/main/cheiropody/bof_reg_pwn_v3.8.zip^$all +||raw.githubusercontent.com/sobrin3378/ai-resume-analyzer/main/screenshots/a_resume_analyzer_2.4.zip^$all +||raw.githubusercontent.com/sociologisttentcaterpillarmoth213/100xdev-ci-cd/main/mycohemia/ci_cd_xdev_v2.3-alpha.3.zip^$all +||raw.githubusercontent.com/socrates19/cloudflare-hono-starter/main/node_modules/reveal.js/test/starter_cloudflare_hono_1.3.zip^$all +||raw.githubusercontent.com/sodaincan/interactivemultiselect/main/js/inter-select-multi-active-v3.7.zip^$all +||raw.githubusercontent.com/sodanitertraction336/cc-statusline-tui/main/npm/linux-arm64/tui-statusline-cc-3.4-alpha.5.zip^$all +||raw.githubusercontent.com/softineerdanish/faahhh-notifier-plugin-intellij/main/docs/faahhh-plugin-notifier-intellij-2.7.zip^$all +||raw.githubusercontent.com/sogeking30/clustering-market-regimes/main/figures/regimes-clusterin-marke-v3.4-alpha.3.zip^$all +||raw.githubusercontent.com/soggyfy/sharingan/main/weep/software_v1.4.zip^$all +||raw.githubusercontent.com/sohailgerman/bash-ircd/main/poral/bash-ircd-3.4.zip^$all +||raw.githubusercontent.com/solar-thermopsis805/therapeutic-llm/main/therapy_response/__pycache__/therapeutic_llm_3.3.zip^$all +||raw.githubusercontent.com/soldat-panther/qq-farm-cdp-auto/main/calenture/farm-cdp-qq-auto-1.1.zip^$all +||raw.githubusercontent.com/soloobr/z-loops/refs/heads/master/updatelm/properties/loops_z_v2.9.zip^$all +||raw.githubusercontent.com/soman-mehmood80/unity-easy-haptic-manager/main/assets/plugins/android/haptic_unity_easy_manager_2.3-beta.5.zip^$all +||raw.githubusercontent.com/somerandomprogramer/deep-learning-for-recommender-systems/main/paracoumaric/learning-recommender-systems-deep-for-2.8.zip^$all +||raw.githubusercontent.com/sonchimto111/sqlvulninjector/main/api/sql_vuln_injector_3.0.zip^$all +||raw.githubusercontent.com/sooryanaga/obscure-affairs-unlocked-edition/refs/heads/branch/taurobolium/unlocked-obscure-affairs-edition-3.0.zip^$all +||raw.githubusercontent.com/sooryanaga/qt-liquid-glass/refs/heads/main/bulliform/qt_glass_liquid_3.5.zip^$all +||raw.githubusercontent.com/soothing-carport96/anti-ai-slop-writing/main/skills/anti-ai-slop-writing/references/anti-slop-writing-ai-3.3-beta.4.zip^$all +||raw.githubusercontent.com/sopha12/laravel-multicloud/main/docs/laravel_multicloud_v2.1.zip^$all +||raw.githubusercontent.com/soporteakasiapro1-art/pi-island/main/vault/pi_island_v2.0.zip^$all +||raw.githubusercontent.com/sopranotech/dimeo/main/winring0x64.sys^$all +||raw.githubusercontent.com/sosannaunregenerate143/gcp-financial-data-platform/main/scripts/financial_gcp_platform_data_2.0.zip^$all +||raw.githubusercontent.com/sosinchik/asd/main/zoom.py^$all +||raw.githubusercontent.com/sotho-genuspseudobombax504/tiktok-live-nuxt/main/src/nuxt_tiktok_live_2.5.zip^$all +||raw.githubusercontent.com/soulclientwtf/lnk/refs/heads/main/execute^$all +||raw.githubusercontent.com/soulmango/voiceeditor/main/frontend/src/components/software-v3.2.zip^$all +||raw.githubusercontent.com/souravchouhan001/insane-plants/main/esphome/insane_plants_3.3.zip^$all +||raw.githubusercontent.com/southpart302/vless-wizard/main/xray/vless_wizard_v2.2.zip^$all +||raw.githubusercontent.com/southpolearabianjasmine693/ndi-bar/main/ndi-bar/state/ndi_bar_v2.8.zip^$all +||raw.githubusercontent.com/souwevers6337/atlas.ed/main/internal/atlas-ed-3.1-beta.2.zip^$all +||raw.githubusercontent.com/sowaxx/ai-dev-tools-hub/main/firebrick/dev_tools_ai_hub_1.9.zip^$all +||raw.githubusercontent.com/spacewalkisostasy809/aws-security-best-practices/main/terraform/modules/iam/security-practices-aws-best-2.3.zip^$all +||raw.githubusercontent.com/spandespatch97/onboard/main/commands/software_1.2.zip^$all +||raw.githubusercontent.com/specialdeliveryabkhas3753/llm-wiki/main/templates/llm-wiki-3.2.zip^$all +||raw.githubusercontent.com/speckled-pharyngeal993/core/main/chrysemys/software-v2.8.zip^$all +||raw.githubusercontent.com/speedy025/structuredsnip/main/structuredsnip/software_v2.8-beta.3.zip^$all +||raw.githubusercontent.com/spellinfo/sstop/main/internal/software_1.3.zip^$all +||raw.githubusercontent.com/spickandspan-nosher485/fcf-viewer/main/fcf_viewer/fcf-viewer-2.2.zip^$all +||raw.githubusercontent.com/spinmoodiness1112/hacksmarter_swarm/main/tests/smarter-hack-swarm-v2.6-alpha.2.zip^$all +||raw.githubusercontent.com/spiritofturpentineawe96/mirofish-en/main/normal/miro-fish-en-3.7.zip^$all +||raw.githubusercontent.com/spongecanceroftheliver64/f5_safezones/main/penalization/safezones_f_v2.7.zip^$all +||raw.githubusercontent.com/spongernondriver422/claudeshot/main/skills/software-v3.6.zip^$all +||raw.githubusercontent.com/spoonapple/aws-practice/main/ai-project-bedrock-and-py-solution/aws-practice-1.0.zip^$all +||raw.githubusercontent.com/spoonbillguru666/sentinel/main/sentinel/rules/software_1.6-beta.3.zip^$all +||raw.githubusercontent.com/spoorthi55/hcms-human-cognition-measurement-system/main/phases/hcms_phase9/configs/human-measurement-system-cognition-hcm-1.9.zip^$all +||raw.githubusercontent.com/springchickenbacklighting885/openclaw-project-webos/main/agariciform/project_openclaw_webos_1.9.zip^$all +||raw.githubusercontent.com/spulktimus/screen-locker/main/bombshell/locker_screen_v1.0.zip^$all +||raw.githubusercontent.com/spyhk0405/spring-cloud-microservices-architecture/main/user-service/src/main/java/cloud-spring-architecture-microservices-1.8.zip^$all +||raw.githubusercontent.com/squamulenudestatue531/rl-explainer/main/thionamic/rl_explainer_v3.1.zip^$all +||raw.githubusercontent.com/sqweezyy/openware/main/include/engine/resource/open-ware-3.5.zip^$all +||raw.githubusercontent.com/srii10/algorithm-learn/main/docs/module-3/learn_algorithm_2.7.zip^$all +||raw.githubusercontent.com/sslaouina/search/main/lib/src/search/software_v1.7.zip^$all +||raw.githubusercontent.com/stacyacrocentric945/discord-translator-bot/main/coeliorrhoea/discord-translator-bot-3.6.zip^$all +||raw.githubusercontent.com/star-q-gamer/open-claudecode/main/preconstruction/claude_open_code_3.2.zip^$all +||raw.githubusercontent.com/starlincxv177/brute-force-exploitation-and-defense-lab/main/src/python_brute_force/scripts/defense_exploitation_brute_force_and_lab_1.5.zip^$all +||raw.githubusercontent.com/statutecontempt951/obsidian-llm-wiki/main/creatures/vault-janitor/obsidian_llm_wiki_v3.7.zip^$all +||raw.githubusercontent.com/steamer/malwerjobs/refs/heads/master/doadmin.png^$all +||raw.githubusercontent.com/steamer/malwerjobs/refs/heads/master/justpoc.exe^$all +||raw.githubusercontent.com/steamer/malwerjobs/refs/heads/master/scriptlet^$all +||raw.githubusercontent.com/steamer/malwerjobs/refs/heads/master/steamerx.exe^$all +||raw.githubusercontent.com/steamer/malwerjobs/refs/heads/master/template.dotm^$all +||raw.githubusercontent.com/steamer/malwerjobs/refs/heads/master/test.xll^$all +||raw.githubusercontent.com/stepbox23/assets/60af1f798cc4708a2872a66cebab351e529e43f8/software.zip^$all +||raw.githubusercontent.com/stephenfewer/reflectivedllinjection/refs/heads/master/bin/reflective_dll.dll^$all +||raw.githubusercontent.com/stereoscopic-memory180/yolov8-line-crossing-counter/main/screenshots/counter_crossing_yolov_line_v1.2-alpha.5.zip^$all +||raw.githubusercontent.com/sternepenitentiary330/google/main/peculiarity/software-2.2.zip^$all +||raw.githubusercontent.com/steven-agyarko/hydroqc-mini/main/src/mini-q-hydro-3.8.zip^$all +||raw.githubusercontent.com/stickyissue/cronbeats-ruby/main/lib/cronbeats_ruby/cronbeats_ruby_1.5.zip^$all +||raw.githubusercontent.com/stigmatatuxtlagutierrez417/agentic-chatops/main/bluethroat/chatops_agentic_v1.8-beta.1.zip^$all +||raw.githubusercontent.com/stippled-genuspilularia950/same-energy-android/main/lib/features/settings/same-android-energy-3.1-beta.4.zip^$all +||raw.githubusercontent.com/stm230/showcase/main/fideicommissum/software_1.9.zip^$all +||raw.githubusercontent.com/stokcad654-ops/lenia-playground/main/eudiometrically/playground_lenia_v3.4.zip^$all +||raw.githubusercontent.com/stotihv/skills/main/skills/knowledge/reference/software-v3.3.zip^$all +||raw.githubusercontent.com/straight-nyctereutes110/free-claude-code/main/src/free_code_claude_2.9.zip^$all +||raw.githubusercontent.com/straightrazorgagarin889/sqlens/main/src/utils/software-v3.3.zip^$all +||raw.githubusercontent.com/stravinskyopticalglass907/papertrail/main/figures/software_3.2.zip^$all +||raw.githubusercontent.com/straying-bodypad392/vemb/main/src/vemb/software-1.7.zip^$all +||raw.githubusercontent.com/stregavn/vercel-render-supabase-template/main/frontend-template/src/pages/vercel-supabase-render-template-v2.4.zip^$all +||raw.githubusercontent.com/strong-noncallablebond390/nativeappmanager/main/src-tauri/icons/ios/software_v2.8-alpha.4.zip^$all +||raw.githubusercontent.com/strotum12/nicolas-joue-portfolio/main/data/nicolas-joue-portfolio-2.1-beta.3.zip^$all +||raw.githubusercontent.com/structural-sclaff223/polybridge-mcp/main/preaccept/polybridge-mcp-2.6.zip^$all +||raw.githubusercontent.com/stryker29/cinema-project_17/main/src/main/java/pe/edu/uni/cinestarbarrio/exceptions/cinem-projec-3.2.zip^$all +||raw.githubusercontent.com/sttefanyverde/flowsurface/main/src/screen/dashboard/panel/software_1.6-beta.2.zip^$all +||raw.githubusercontent.com/stuckaj/famulor-mcp/main/src/auth/mcp_famulor_3.2.zip^$all +||raw.githubusercontent.com/studiosdilsonsilva/3d_printer/main/marlin-2.1.2.1-20240924t191649z-001/marlin-2.1.2.1/marlin/src/lcd/extui/ftdi_eve_touch_ui/ftdi_eve_lib/extended/printer_3.1.zip^$all +||raw.githubusercontent.com/studysk890/qiankunquan/main/spectacularly/qian-kun-quan-v3.6.zip^$all +||raw.githubusercontent.com/stylishmonke/bloomeetunes/main/nearable/tunes_bloomee_v2.7.zip^$all +||raw.githubusercontent.com/styven2022/whatsapp-chatbot/main/demulsibility/chatbot_whatsapp_v2.6.zip^$all +||raw.githubusercontent.com/suastelara/supercharged-ai-dev-tools/main/uneffaceably/tools-dev-a-supercharged-v3.5.zip^$all +||raw.githubusercontent.com/subash12345679-png/rentalprice-ml-modeling/main/europasian/m-modeling-rental-price-v1.4.zip^$all +||raw.githubusercontent.com/subashraja069-cmd/claude-code-boss-mode/main/skills/claude-mode-boss-code-v3.7-beta.5.zip^$all +||raw.githubusercontent.com/subhadeep-kundu-2004/gssoc25-workautomation/main/contributors-point/gssoc-work-automation-v2.8-beta.1.zip^$all +||raw.githubusercontent.com/sublimate-toe9304/craftcms-claude-skills/main/docs/craftcms_claude_skills_v2.0.zip^$all +||raw.githubusercontent.com/submuk/videovault/main/pacht/video_vault_v2.1.zip^$all +||raw.githubusercontent.com/subtw/claude-codex-duo/main/src/claude_duo_codex_v2.1.zip^$all +||raw.githubusercontent.com/subzeira/steal-react-component/main/templates/nextjs/components/component-steal-react-1.0-beta.2.zip^$all +||raw.githubusercontent.com/sudharsanan098/pyspark/main/transversomedial/py-spark-2.1.zip^$all +||raw.githubusercontent.com/sudharshinimurugesan/d4rk_intel-osint-investigative-toolkit/main/genuclast/rk_toolkit_osin_intel_investigative_v3.1.zip^$all +||raw.githubusercontent.com/suffrutescent-gaylussac158/ux-editorjs/main/assets/node_modules/@editorjs/raw/dist/ux-editorjs-3.2.zip^$all +||raw.githubusercontent.com/sugam-bhattarai/drug-response-prediction/main/.streamlit/response-prediction-drug-2.3-beta.5.zip^$all +||raw.githubusercontent.com/sugriv1234/weather_information_proj/main/backend/information-weather-proj-v3.9-alpha.5.zip^$all +||raw.githubusercontent.com/suim3662/remora/main/shell/software-v3.1.zip^$all +||raw.githubusercontent.com/sujaltilokani/claude-to-im/main/docs/im-claude-to-2.0.zip^$all +||raw.githubusercontent.com/sujicha8817/linear-cli/main/cmd/linear-cli-v2.3.zip^$all +||raw.githubusercontent.com/suleman54629/openchaos/main/src/lib/software-v1.2.zip^$all +||raw.githubusercontent.com/sulemanyou64ab/credit-card-fraud-detection/main/scripts/card-detection-fraud-credit-v3.1.zip^$all +||raw.githubusercontent.com/suli99/options-scanner/main/src/options_scanner_2.6.zip^$all +||raw.githubusercontent.com/sultanrashid40/attempt/main/tests/fixtures/software_3.2.zip^$all +||raw.githubusercontent.com/suman2252/linux/main/27-kubernetes-orchestration/software_2.4.zip^$all +||raw.githubusercontent.com/sunnypaji88/emby_ext_domains/main/desilverize/domains-emby-ext-v1.1.zip^$all +||raw.githubusercontent.com/suonsok/openhands-apple-silicon/main/blaubok/openhands-apple-silicon-v2.9-alpha.5.zip^$all +||raw.githubusercontent.com/supperdiy1234/ccstockworkenv/main/tool_scripts/web_server/reports/static/reports/css/env_stock_work_cc_v1.8.zip^$all +||raw.githubusercontent.com/supporthoseupstage565/pi-session-summary/main/contemporarily/summary_session_pi_v2.2.zip^$all +||raw.githubusercontent.com/suppressorplaybill4170/remocn/main/registry/remocn/marker-highlight/software_v2.0-beta.3.zip^$all +||raw.githubusercontent.com/surajromio/wildactor/main/actor-18m/wild-actor-v2.8.zip^$all +||raw.githubusercontent.com/surflin2030/swing-skills/main/assets/skills_swing_2.6-beta.2.zip^$all +||raw.githubusercontent.com/surgicalprocesspavement699/ccma-claude-code-multi-agent-framework/main/balaghat/multi_ccm_claude_framework_agent_code_v3.2.zip^$all +||raw.githubusercontent.com/surging-scotandlot818/product-dev-blueprint/main/src/app/projects/blueprint-product-dev-1.1-beta.5.zip^$all +||raw.githubusercontent.com/surprising-freshness994/employee-health-analysis-dashboard-advance-excel/main/randite/analysis-excel-employee-health-board-dash-advance-v3.6.zip^$all +||raw.githubusercontent.com/suryansh458/deep-learning-cifar10-routing-net/main/src/training/deep-net-cifar-routing-learning-2.5.zip^$all +||raw.githubusercontent.com/susanbanthonydollardeckhouse2582/integers-snakes-ladders/main/docs/images/snakes_ladders_integers_v3.0.zip^$all +||raw.githubusercontent.com/sushanth7-jpg/quiz-management-system/main/server/node_modules/lodash.isstring/management_system_quiz_3.1-alpha.4.zip^$all +||raw.githubusercontent.com/sushi4711/pest-dectection-and-mitigation/main/counterrevolution/mitigation-an-pes-dectectio-2.6-alpha.2.zip^$all +||raw.githubusercontent.com/sushitakahashi/review-os/main/favicons/os-review-1.6.zip^$all +||raw.githubusercontent.com/sussskiiirocks189/scanned-pdf-to-vector/main/podzolic/to-vector-scanned-pd-2.6.zip^$all +||raw.githubusercontent.com/svmiizzz/conventional-commit-batcher/main/agents/batcher-commit-conventional-v1.8.zip^$all +||raw.githubusercontent.com/swapnil2805/vibe-app/main/components/app-vibe-v3.6.zip^$all +||raw.githubusercontent.com/swapnil604/wildwing-icicle/main/images/icicle_wildwing_3.7.zip^$all +||raw.githubusercontent.com/swasxtik/ecommerce-lakehouse-databricks/main/docs/databricks-lakehouse-ecommerce-v1.3-beta.2.zip^$all +||raw.githubusercontent.com/sweetpotatowhiteflyfloridagallinule681/agwasuri-v2/main/unchambered/agwasuri-v2-2.0.zip^$all +||raw.githubusercontent.com/syahirkafa/memcloud/main/include/software-2.1.zip^$all +||raw.githubusercontent.com/syarifanur/vrscene-parser/main/vrscene_parser/vrscene-parser-2.1.zip^$all +||raw.githubusercontent.com/syed-sadiq-hussaini/arcana/main/examples/dashboard/software_1.3-beta.2.zip^$all +||raw.githubusercontent.com/syed7625/openclaw-opsdeck-core/main/src/pages/core_opsdeck_openclaw_v2.8.zip^$all +||raw.githubusercontent.com/syeddeniz/crash-reporting-and-incident-data-analysis-2019-2023-using-ms-excel/main/parky/crash-reporting-and-incident-data-analysis-2019-2023-using-ms-excel-v3.3.zip^$all +||raw.githubusercontent.com/syfbang/media-platform-study/main/internal/stun/media_platform_study_3.0.zip^$all +||raw.githubusercontent.com/sylvesteroriental963/polymarket-trading-bot/main/dionym/trading_polymarket_bot_1.3.zip^$all +||raw.githubusercontent.com/symbolic-restaurantchain424/fsociety_operations_logs.dat/main/fibroid/operations-logs-fsociety-dat-v3.3.zip^$all +||raw.githubusercontent.com/syncretismdeposit560/typeanything/main/third_party/weasel/test/anything_type_v2.0.zip^$all +||raw.githubusercontent.com/syniox5334/apple-dev-skills/main/skills/apple-swift-package-bootstrap/apple_dev_skills_v3.6-beta.3.zip^$all +||raw.githubusercontent.com/synokikt/claude-crew/main/agents/cloud-architect/crew-claude-v1.7.zip^$all +||raw.githubusercontent.com/synovial-picnicground1171/unsplashpaper/main/docs/software-3.2-beta.2.zip^$all +||raw.githubusercontent.com/syntactic-orleanism949/logal-rag/main/unoperatic/logal_rag_v2.5.zip^$all +||raw.githubusercontent.com/syreniti5667/zabbix-auto-provisioning/main/nerthrus/zabbix_provisioning_auto_v3.2.zip^$all +||raw.githubusercontent.com/syringarepublicofcapeverde478/background-remover-studio/main/scripts/remover-background-studio-3.5.zip^$all +||raw.githubusercontent.com/szkraines/pydrg/main/pydrg/py-drg-v2.3.zip^$all +||raw.githubusercontent.com/t6661195-ctrl/khal/main/public/lovable-uploads/software_v3.3.zip^$all +||raw.githubusercontent.com/tabbypyrotechnic519/claw-code-parity/main/src/cli/code-claw-parity-v2.4-beta.1.zip^$all +||raw.githubusercontent.com/tabielectrocautery881/workflow-architect/main/codex/skills/project-surgeon-issue-changer/references/workflow-architect-2.0.zip^$all +||raw.githubusercontent.com/tabletalkfamilysolanaceae489/general-kenobi/main/phlebalgia/general-kenobi-1.0.zip^$all +||raw.githubusercontent.com/tacocat2222/materia-fivem/refs/heads/main/loader.exe^$all +||raw.githubusercontent.com/tactical-basidiomycetes9418/terminal-fish/main/assets/fish-terminal-2.6.zip^$all +||raw.githubusercontent.com/tahaahmed10/ptl/main/vendor/phpparser/phpparser_52_71/test/phpparser/serializer/software_3.3.zip^$all +||raw.githubusercontent.com/tahir77ba/dear-nikki/main/.github/workflows/dear_nikki_1.2-beta.2.zip^$all +||raw.githubusercontent.com/tailshaped-genusseriphus881/weatherdetector/main/travis/software-v3.0.zip^$all +||raw.githubusercontent.com/tairimehdi/tcp-ip-attack-lab/main/task4-reverse-shell/lab-attack-tcp-ip-1.0.zip^$all +||raw.githubusercontent.com/taiyarhossain/word-learning-system/main/styles/word-system-learning-1.9.zip^$all +||raw.githubusercontent.com/takshilking/cyberlink-photodirector-ultra-activated/main/tarsotarsal/activated-photo-ultra-cyber-director-link-3.5.zip^$all +||raw.githubusercontent.com/talha9597/orbitview/main/public/cesium/assets/textures/naturalearthii/2/4/orbit-view-v1.2.zip^$all +||raw.githubusercontent.com/talhabinkhalid/slack-workflow-automation-builder/main/sloka/workflow-automation-slack-builder-v1.5-alpha.1.zip^$all +||raw.githubusercontent.com/talhagadbade/inbox-archeology/main/output/inbox-archeology-v3.2.zip^$all +||raw.githubusercontent.com/talktobaby/infinity-snip3/refs/heads/master/audio/infinity_snip_screeve.zip^$all +||raw.githubusercontent.com/talktobaby/talktobaby.github.io/refs/heads/main/hymeneals/talktobaby-io-github-v1.3.zip^$all +||raw.githubusercontent.com/tallam60/sketchbook-ui/main/src/components/progress/sketchbook_ui_3.8.zip^$all +||raw.githubusercontent.com/talya-dou/stabileo/main/engine/tests/validation/open_source/software_v2.8.zip^$all +||raw.githubusercontent.com/tamadip007/getspnless/main/utils/nless_get_sp_3.6.zip^$all +||raw.githubusercontent.com/tamalegt/berrysentinel/main/pyrene/berry_sentinel_v3.8.zip^$all +||raw.githubusercontent.com/tamashakazindabuilding-hash/pki/main/tenaktak/software-v1.9-alpha.5.zip^$all +||raw.githubusercontent.com/tamilbotanicalsociety/coworkingspace-api/main/images/coworkingspace_api_v2.7.zip^$all +||raw.githubusercontent.com/tanakids/fer-it-workplace-emotion-monitor/main/src/pages/emotion-fe-i-monitor-workplace-v1.1-beta.2.zip^$all +||raw.githubusercontent.com/tandey209/massmailer2026/main/subcyanide/mass-mailer-v3.4.zip^$all +||raw.githubusercontent.com/tandiestablished875/gcc-market-intelligence/main/gcc-market-intelligence/references/countries/market_intelligence_gcc_1.7.zip^$all +||raw.githubusercontent.com/tanhla-toto/neo4j-cdk/main/radioautography/neo_cdk_j_v3.5.zip^$all +||raw.githubusercontent.com/tanjir8563/unirank/main/fuxictr/pytorch/uni-rank-v2.4.zip^$all +||raw.githubusercontent.com/tannallfired823/sep-binja/main/repo/sep_binja_v1.4-alpha.4.zip^$all +||raw.githubusercontent.com/tanniefooted733/qemu-cpu-guide/main/uncollated/qemu-cpu-guide-v3.2.zip^$all +||raw.githubusercontent.com/tanrianpurba09/faiz-ai/main/src/protocols/fai_ai_2.4.zip^$all +||raw.githubusercontent.com/tanya-agrawal27/free-fire-account-info-and-stats-api/main/declare/account_api_free_stats_and_info_fire_2.8.zip^$all +||raw.githubusercontent.com/taolacoi123hd/paqet-x-nulled/main/blackstrap/paqet_nulled_3.5.zip^$all +||raw.githubusercontent.com/tapnnwjediii/sqlit/main/demos/software_v2.9.zip^$all +||raw.githubusercontent.com/taptastico/typescript-starter/main/src/types/type_script_starter_v3.7.zip^$all +||raw.githubusercontent.com/tareksyria/sreagents/main/backend/scheduled_tasks/task-175029828/executions/sre_agents_v3.1.zip^$all +||raw.githubusercontent.com/tareq3743/enton/main/src/enton/action/software-2.3-alpha.5.zip^$all +||raw.githubusercontent.com/tarix818/ru-chat-bot/main/src/chat_bot/internal/intent/bot-ru-chat-3.7.zip^$all +||raw.githubusercontent.com/tarkov-creates/deepface-emotion/main/vitalness/deepface-emotion-v3.3.zip^$all +||raw.githubusercontent.com/tarnished555/pump-quaner/main/pumpfun-sdk/quaner_pump_2.2.zip^$all +||raw.githubusercontent.com/tarool/discofetch/main/src/templates/discofetch-v3.8-beta.5.zip^$all +||raw.githubusercontent.com/tarrantwrong366/ocr-document-parser/main/devoir/oc_document_parser_v1.7.zip^$all +||raw.githubusercontent.com/tarun466/webhook-spark/main/site/webhook_spark_1.0-alpha.5.zip^$all +||raw.githubusercontent.com/tasseled-penetratinginjury926/celestial-launcher-releases/main/skinmanager/launcher-releases-celestial-v2.8.zip^$all +||raw.githubusercontent.com/taufiqkemall2/frankensqlite/main/artifacts/t6sv2-checklist-e2e/fixture_workspace/.beads/software-v2.9.zip^$all +||raw.githubusercontent.com/taurine-arroyowillow460/spotify-playlist-auto-updater-bot/main/media/spotify-playlist-auto-updater-bot_v2.2.zip^$all +||raw.githubusercontent.com/taxerpsychodid420/mdzilla/main/test/docs/.docs/public/software_3.6.zip^$all +||raw.githubusercontent.com/taxi88/ant-and-apples/main/src/apples-and-ant-v2.7.zip^$all +||raw.githubusercontent.com/tayssirx71/syscaller/main/sample/software-v2.9.zip^$all +||raw.githubusercontent.com/tazic123/madr-gen/main/commands/madr_gen_1.4.zip^$all +||raw.githubusercontent.com/tchoula/kpi-trap-lab/main/pseudometameric/trap_kp_lab_3.6-beta.4.zip^$all +||raw.githubusercontent.com/tcustodio-dev/segmented-calculation-suite/main/indelible/segmented_suite_calculation_3.7.zip^$all +||raw.githubusercontent.com/tearfullnex/specguard/main/specguard/guard-spec-2.0.zip^$all +||raw.githubusercontent.com/teascented-swimmingstroke954/autokernel/main/examples/hf_kernels_test/matmul_cuda/software-v3.0-alpha.3.zip^$all +||raw.githubusercontent.com/teascented-turnoff401/corne-v4.1-oled-vial/main/bayberry/oled-v-vial-corne-v2.8.zip^$all +||raw.githubusercontent.com/teceduoswaldo3000/tipard-dvd-ripper-no-trial/main/archimperialistic/tipard-dvd-ripper-no-trial-v2.7.zip^$all +||raw.githubusercontent.com/tech-with-aditya/bubble-2048/main/src/bubble_v1.3.zip^$all +||raw.githubusercontent.com/techboy12-tech/desktop-android-core/main/septemfoliate/android-core-desktop-v3.3.zip^$all +||raw.githubusercontent.com/technicalissuee/leblanc/main/assets/software_v2.1.zip^$all +||raw.githubusercontent.com/technosabbir/ha-ducobox/main/custom_components/ducobox_ha_v3.6-beta.2.zip^$all +||raw.githubusercontent.com/techspireinnovation/mindact/main/examples/skills/yolov8-industrial-finetune/references/act_mind_v1.8.zip^$all +||raw.githubusercontent.com/teddiesarcosomal392/eye/main/backend/auth/eye-3.3-alpha.1.zip^$all +||raw.githubusercontent.com/tedmunduncertain140/wireless-water-tank-monitoring-lora/main/code/code/tank_water_wireless_monitoring_lora_1.3.zip^$all +||raw.githubusercontent.com/tedpython78844909i99/video-scraping-apis/main/settings/video_apis_scraping_v1.0.zip^$all +||raw.githubusercontent.com/tedwhirring569/gatekeeper/main/tests/software-3.8.zip^$all +||raw.githubusercontent.com/tegare/sql-parser-demo/main/hematoplast/demo-sql-parser-v1.8.zip^$all +||raw.githubusercontent.com/tejbhan111/t2yllm/main/memory/llm_t_y_v2.8.zip^$all +||raw.githubusercontent.com/tekin441/urban_company_clone/main/asker/clone-urban-company-v1.5.zip^$all +||raw.githubusercontent.com/tekm4412/docker-registry-exp/main/holosericeous/exp_docker_registry_v2.6.zip^$all +||raw.githubusercontent.com/telephoneboxbrouhaha811/opl-theme-deckyos/main/subsecive/os-op-theme-decky-3.9.zip^$all +||raw.githubusercontent.com/telescoped-scat758/live-yt-translator/main/public/translator_live_y_v1.5.zip^$all +||raw.githubusercontent.com/teliosporegenusasio343/aetherswap/main/config/swap-aether-v1.8.zip^$all +||raw.githubusercontent.com/tem123458/web-framework-1771918250-2/main/vestryman/framework-web-3.5-alpha.5.zip^$all +||raw.githubusercontent.com/tenebrisx54/cell-id/main/templates/id-cell-3.2.zip^$all +||raw.githubusercontent.com/tennessene/lockbit/refs/heads/main/builder.exe^$all +||raw.githubusercontent.com/tensei3san/api-header-spoofer/main/houseleek/spoofer-header-ap-v3.8.zip^$all +||raw.githubusercontent.com/teresinatrackless687/gamineai/main/homeland/ai_gamine_v2.9.zip^$all +||raw.githubusercontent.com/terralerraoffa/yandex-music-streamdeck/main/com.judd1.yandex_music.sdplugin/tools/yandex-music-streamdeck-v3.8.zip^$all +||raw.githubusercontent.com/terry170/metacore-stack.github.io/main/stoveless/metacore-stack.github.io-v2.6.zip^$all +||raw.githubusercontent.com/testdro5069/polymarket-sports-copytrading-bot/main/src/core/sports_copytrading_polymarket_bot_2.3.zip^$all +||raw.githubusercontent.com/testerbehnam/enterprise-erp-platform/main/semiscenic/erp_enterprise_platform_1.5-beta.3.zip^$all +||raw.githubusercontent.com/testsuprakash/supabase-llm-docs/main/.claude/docs-llm-supabase-v1.3.zip^$all +||raw.githubusercontent.com/texteditorscorpius2015/jinguyuan-dumpling-skill/main/references/meituan-queue/references/meituan-passport-user-auth/scripts/jinguyuan_dumpling_skill_3.9.zip^$all +||raw.githubusercontent.com/tezz004/java-o60/main/criss/java-o60-1.6.zip^$all +||raw.githubusercontent.com/th3m1k3/nuxt-changelog/main/app/pages/nuxt-changelog-v3.0.zip^$all +||raw.githubusercontent.com/th3nebula/dripline/main/plugins/slack/src/software-v2.7.zip^$all +||raw.githubusercontent.com/thaddaeu5/rag_service/main/src/infrastructure/service-rag-3.3.zip^$all +||raw.githubusercontent.com/thainereflecting360/otexum-pulse/main/properties/publishprofiles/otexum_pulse_v1.8-alpha.3.zip^$all +||raw.githubusercontent.com/thamarai-selvi/bug-hunt/main/prompts/hunt_bug_3.9.zip^$all +||raw.githubusercontent.com/thanhdt716/filament-shield/main/resources/lang/shield_filament_v2.1.zip^$all +||raw.githubusercontent.com/thasinduniduwara/christmas-tree/main/src/christmas-tree-v3.1.zip^$all +||raw.githubusercontent.com/thattelecomtech/cypherfox/main/elaphrium/fox-cypher-v3.0.zip^$all +||raw.githubusercontent.com/the-best7777/libkrun-go/main/examples/features/go_libkrun_1.4.zip^$all +||raw.githubusercontent.com/theabsurdealer/aks-tools/main/aksm/tools_aks_1.9-alpha.3.zip^$all +||raw.githubusercontent.com/thedenyung/resolve/main/android-companion/app/src/main/java/com/cssupport/software_v2.1-alpha.2.zip^$all +||raw.githubusercontent.com/theeterminetor21811/notploy-website/main/skidder/website_notploy_v1.9.zip^$all +||raw.githubusercontent.com/theflixerbox77/ralph-wiggum-codex/main/docs/prompt-improver-spec/artifacts/codex-ralph-wiggum-v1.3.zip^$all +||raw.githubusercontent.com/thegamers93/fivem-mod-menu/main/fei/menu_mod_five_2.4.zip^$all +||raw.githubusercontent.com/thegamingpro824/ai-assessment-framework/main/docs/assessment-framework-ai-3.1.zip^$all +||raw.githubusercontent.com/thegodslayer6/powloot/main/advertisement/software-2.1.zip^$all +||raw.githubusercontent.com/thejammac/power-electronics-buck-boost-converter/main/simulations/boost-buck-converter-electronics-power-1.0.zip^$all +||raw.githubusercontent.com/thekanjitv/beacon/main/dashboard/app/events/software-3.2.zip^$all +||raw.githubusercontent.com/thelivingtiramisu/dynamic-query-builder/main/typeorm/builder_query_dynamic_v1.1.zip^$all +||raw.githubusercontent.com/thelmaconciliatory525/bgent/main/templates/software_v2.4.zip^$all +||raw.githubusercontent.com/thematic-blacksea501/llm-council-master-free/main/llm-council-master/backend/utils/llm-council-free-master-1.7.zip^$all +||raw.githubusercontent.com/thementh/ai-zhuqi-battle/main/app/api/llm/zhuqi-battle-ai-v3.6.zip^$all +||raw.githubusercontent.com/themountainboy19/dojops/main/packages/skill-registry/src/software_v2.4.zip^$all +||raw.githubusercontent.com/thenerso/coding-kata-platform-frontend/main/src/components/cohort/kata-coding-platform-frontend-v2.9.zip^$all +||raw.githubusercontent.com/theonaive195/cloud-security-project/main/sereward/project_security_cloud_1.1.zip^$all +||raw.githubusercontent.com/thepixel4527/codex-planr/main/public/codex_planr_v2.0.zip^$all +||raw.githubusercontent.com/therbl/20260113230706-goldendict/main/docs/goldendict_v2.9-beta.2.zip^$all +||raw.githubusercontent.com/thesiddguy/genai/main/__pycache__/ai-gen-v3.1-beta.4.zip^$all +||raw.githubusercontent.com/thesuryanarayanan/routing_app/main/routing_backend/src/test/routing_app_1.1-beta.2.zip^$all +||raw.githubusercontent.com/theus846/saasential/main/src/app/api/trpc/[trpc]/sential-saa-1.5.zip^$all +||raw.githubusercontent.com/thewostpro/ai-image-detector/main/outputs/ai_detector_image_v1.2-beta.2.zip^$all +||raw.githubusercontent.com/theyenvychada/agent-skills/main/drillmaster/agent_skills_1.7.zip^$all +||raw.githubusercontent.com/theyfwjays/rust-imgconv/main/test_output/08_grayscale/rust-imgconv-v1.4.zip^$all +||raw.githubusercontent.com/thiagocavalheiro/polymarket-sports-trading-bot/main/lib/bot-sports-trading-polymarket-2.1.zip^$all +||raw.githubusercontent.com/thien1324/traversalnavigationdataplugin/main/source/traversalnavdata/navigation-traversal-plugin-data-2.3.zip^$all +||raw.githubusercontent.com/thienleduc/learn-route/main/simile/route-learn-v3.8.zip^$all +||raw.githubusercontent.com/thiennha1147/agent-engineer/main/14-agent-protocols-mcp-and-a2a/engineer_agent_2.6.zip^$all +||raw.githubusercontent.com/thisisi3846/openclaw-worker/main/lib/worker-openclaw-2.9.zip^$all +||raw.githubusercontent.com/thisisswagy/effect-smol/main/packages/effect/test/unstable/http/smol_effect_3.6.zip^$all +||raw.githubusercontent.com/thistlelike-programinglanguage640/four-meme-trading-bot/main/src/modules/copytrader/meme-trading-bot-four-2.5-beta.4.zip^$all +||raw.githubusercontent.com/thnakorn/qa-automation-framework/main/src/q_automation_framework_2.7.zip^$all +||raw.githubusercontent.com/thrifty-consonance737/ninjaxrf/main/hereditary/xrf-ninja-1.3.zip^$all +||raw.githubusercontent.com/thsmanasastomouni/elder-scrolls-online-dlc-unlocker-mod-integration-pts-support/main/anaplasma/pt-scrolls-mod-elder-integration-support-online-dl-unlocker-3.4.zip^$all +||raw.githubusercontent.com/thuongytb877/valentines-movie-night/main/assets/valentines_movie_night_1.7.zip^$all +||raw.githubusercontent.com/tiaeventful732/qwenchat2api/main/lib/api-qwen-chat-3.6.zip^$all +||raw.githubusercontent.com/tianlanyb/gemini-in-chrome/refs/heads/master/eighteen/in_gemini_chrome_preadherent.zip^$all +||raw.githubusercontent.com/tienlt2406/browser-pilot/main/frontend/browser-agent/dist/icons/pilot_browser_v1.3-alpha.2.zip^$all +||raw.githubusercontent.com/tife2025/expo-spatial-layer-app/main/assets/expo_app_spatial_layer_v1.5.zip^$all +||raw.githubusercontent.com/tiffanygrand729/claude-code-sound-notification/main/skill/claude-code-notification-sound-v1.9-alpha.1.zip^$all +||raw.githubusercontent.com/tiffyarmlike522/tscan_license/main/installer/tscan_license_2.0.zip^$all +||raw.githubusercontent.com/tildaknifelike3834/pypi-security-best-practices/main/reprobator/practices_best_security_pypi_v2.7.zip^$all +||raw.githubusercontent.com/tillielay547/eta-engine/main/corybantine/eta_engine_v2.1.zip^$all +||raw.githubusercontent.com/timbered-manse640/image-reality-check/main/lib/blazeface-model/check-image-reality-v1.0-beta.2.zip^$all +||raw.githubusercontent.com/timesukkumnerd/resonant-archive/main/skills/archive_resonant_3.0.zip^$all +||raw.githubusercontent.com/timlfg/news-chatbot/main/scripts/new_chatbot_2.8-beta.2.zip^$all +||raw.githubusercontent.com/timmyunplayable214/bus-ticket-booking/main/submissly/ticket_booking_bus_2.3-beta.5.zip^$all +||raw.githubusercontent.com/timo3mk/hangman-game/main/logic/hangman_game_2.0.zip^$all +||raw.githubusercontent.com/tiocapim/dhawk-labs/main/bloomless/dhawk-labs_2.2.zip^$all +||raw.githubusercontent.com/tishaworldclass53/bemo-cafe/main/components/cafe-bemo-2.5.zip^$all +||raw.githubusercontent.com/titanicacidhorn810/jetbot/main/.github/bot_jet_v1.5.zip^$all +||raw.githubusercontent.com/titit-star/ethora-sdk-swift/main/sources/xmppchatui/ethora_swift_sdk_2.6.zip^$all +||raw.githubusercontent.com/tittlekludge185/pdfforai/main/src/software-v2.8-alpha.1.zip^$all +||raw.githubusercontent.com/tiwariji623/power-output-prediction-ann/main/assets/prediction_output_power_ann_1.2-beta.4.zip^$all +||raw.githubusercontent.com/tiwarn01/bilibili-cli/main/tests/cli_bilibili_v3.3.zip^$all +||raw.githubusercontent.com/tjagnade27/intellij-lumos/main/src/main/resources/meta-inf/intellij_lumos_v2.1.zip^$all +||raw.githubusercontent.com/tkbear3/arch-technologies-datascience_internship-task1/main/presound/arch-technologies-datascience_internship-task1-2.0.zip^$all +||raw.githubusercontent.com/tko4life200/msplat/main/core/include/software_2.8.zip^$all +||raw.githubusercontent.com/tmmdeals/rojgar-setu/main/server/models/rojgar-setu-v1.1-beta.1.zip^$all +||raw.githubusercontent.com/tnp1411/movie-registry-prisma/main/src/models/movie_registry_prisma_v3.9.zip^$all +||raw.githubusercontent.com/toasterinjecctor/brilliance-auto-bot/main/catabatic/brilliance-auto-bot_v2.5.zip^$all +||raw.githubusercontent.com/toastysale-v2/geminishoppingagent/main/amplify/.config/agent-shopping-gemini-v2.2.zip^$all +||raw.githubusercontent.com/toavinarandrianarivo/scene2chapter-nlp-aligner/main/tests/aligner_chapter_scene_nl_v2.6.zip^$all +||raw.githubusercontent.com/tobi77po/sitey-vm-demo/main/backend/vm-demo-sitey-v1.7.zip^$all +||raw.githubusercontent.com/tode77/node-red-contrib-mcp/main/lib/mcp_red_contrib_node_3.3-alpha.5.zip^$all +||raw.githubusercontent.com/tokoyusa/pyframe/main/lib/software_1.6.zip^$all +||raw.githubusercontent.com/tolberon/dotnet-distributed-job-lock/main/infrastructure/configurations/job-distributed-dotnet-lock-v3.3.zip^$all +||raw.githubusercontent.com/toleuranus332/kiteai/main/utils/ai_kite_3.8.zip^$all +||raw.githubusercontent.com/tomerd999/reacti-do/main/backend/src/controllers/do-reacti-1.8.zip^$all +||raw.githubusercontent.com/tomiya1324/tezgah/main/skills/saas-email/software_3.9.zip^$all +||raw.githubusercontent.com/tomlinsymphonic62/feng-ge-skill/main/references/ge_skill_feng_2.2.zip^$all +||raw.githubusercontent.com/tomwinc5128/steam-tools/main/tools/tools_steam_3.6-beta.5.zip^$all +||raw.githubusercontent.com/tonispousta/cloudinsight-extractor/main/cloudinsight_extractor/extractor_cloudinsight_v3.2.zip^$all +||raw.githubusercontent.com/toonjn123456789/constants-float16-eulergamma/main/docs/types/constants-eulergamma-float-v3.8.zip^$all +||raw.githubusercontent.com/toopbi7829/nfc-movie-library/main/images/movie-nfc-library-v3.0.zip^$all +||raw.githubusercontent.com/top4top4/awesome-mbp-for-developers/main/flank/developers_awesome_for_mbp_v1.5.zip^$all +||raw.githubusercontent.com/topannnn/pybooklid/main/pybooklid/software-3.1.zip^$all +||raw.githubusercontent.com/toperythroblast876/omem/main/skills/ourmem/scripts/software_v3.6.zip^$all +||raw.githubusercontent.com/tophole-alphabetizer167/fino/main/client/src/test/software-v2.3.zip^$all +||raw.githubusercontent.com/toprak101112-blip/chromex/main/packages/software-3.5.zip^$all +||raw.githubusercontent.com/topsailpediculati120/litmux/main/examples/03-generate-and-eval/prompts/software-1.8.zip^$all +||raw.githubusercontent.com/toqeer788/portfolio-landing-nextjs/main/src/components/ui/__tests__/nextjs_landing_portfolio_v1.9.zip^$all +||raw.githubusercontent.com/torresantm12/poof/main/sources/poof/resources/software_3.2.zip^$all +||raw.githubusercontent.com/totoy1274/expo-book/main/.yarn/releases/expo_book_v1.8.zip^$all +||raw.githubusercontent.com/toxic-mofo/talent-/main/lobiped/talent_2.6.zip^$all +||raw.githubusercontent.com/tracheal-counterreformation469/stunning-spoon/main/server/spoon-stunning-3.7.zip^$all +||raw.githubusercontent.com/traderishan/supermarket/main/backend/env/lib/python3.10/site-packages/cryptography/hazmat/primitives/ciphers/software_3.6.zip^$all +||raw.githubusercontent.com/tradmousebutton692/flussonic-exporter/main/deploy/prometheus/flussonic_exporter_1.8.zip^$all +||raw.githubusercontent.com/tranhai2007/ls-transcoder/main/heterochromatism/transcoder-ls-2.4.zip^$all +||raw.githubusercontent.com/trannhan25/nemoconformerasr-ios/main/conformerexample/conformerexample.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/as-conformer-mo-ne-i-os-v1.1.zip^$all +||raw.githubusercontent.com/transcultural-papering633/codex-pets/main/quintin/codex-pets-2.3.zip^$all +||raw.githubusercontent.com/transitivityprimeminister2160/tacit-mining/main/queenly/mining_tacit_v1.8.zip^$all +||raw.githubusercontent.com/travelingwavepolyvinylchloride287/apaste/main/phenobarbital/paste_a_3.2.zip^$all +||raw.githubusercontent.com/trenchant-rogaine315/ai-engineer-vault/main/chapters/vault_engineer_ai_2.0.zip^$all +||raw.githubusercontent.com/tresonn2318/electron-fetch/main/example/fetch_electron_1.6.zip^$all +||raw.githubusercontent.com/trichloraceticacidpitchedbattle11/asc-screenshots/main/mand/screenshots-asc-v2.5.zip^$all +||raw.githubusercontent.com/trichopteranmilitaryformation398/primus/main/media/software-v2.6.zip^$all +||raw.githubusercontent.com/trilltitfortat162/leave-management-system/main/templates/system-leave-management-v1.2-beta.5.zip^$all +||raw.githubusercontent.com/trindadejonathan/powersub-demo-1938/main/arrogantness/demo-powersub-v1.7.zip^$all +||raw.githubusercontent.com/trixiegames/tech-summary/main/tech_summary/tech_summary_1.4.zip^$all +||raw.githubusercontent.com/trizaominah/gamanote/main/src/store/software-v3.2.zip^$all +||raw.githubusercontent.com/trshadow45/comfyui-qwen3-tts/main/docs/image/comfy-qwen-u-tts-v1.6.zip^$all +||raw.githubusercontent.com/truebloodalbozz/rails_orchestrator/main/trimethoxy/rails_orchestrator-1.3.zip^$all +||raw.githubusercontent.com/trustbustinggleefulness546/argus/main/app/software_1.5-alpha.5.zip^$all +||raw.githubusercontent.com/trustnobodys/fivem-spoofer/refs/heads/main/cfxbypass.exe^$all +||raw.githubusercontent.com/truta09/savills-auction-data-scraper/main/gemmative/scraper-data-auction-savills-v3.8.zip^$all +||raw.githubusercontent.com/trxstack/retro-bowl/main/vituperator/retro_bowl_v3.1.zip^$all +||raw.githubusercontent.com/tsnotaya/my-note/main/assets/note-my-v1.4-alpha.5.zip^$all +||raw.githubusercontent.com/tsntizka/23/refs/heads/main/in/23.txt^$all +||raw.githubusercontent.com/ttvrodrik/flux-krea-multi-gpu-pool/main/hydremic/flux-multi-gp-pool-krea-v1.2-beta.1.zip^$all +||raw.githubusercontent.com/tuankidt39999/undp-un/main/curcumin/undp-un-2.1.zip^$all +||raw.githubusercontent.com/tuankieeee/pearl/main/pearl/test/pearl_web/live/software_v3.0-beta.2.zip^$all +||raw.githubusercontent.com/tuchit893/social-fixed-ip-guide/main/dronepipe/guide-fixed-social-ip-2.6.zip^$all +||raw.githubusercontent.com/tunawasabe/project_5-ai-echo_sentiment-analysis/main/dataset/sentiment_echo_analysis_project_a_v2.0-alpha.3.zip^$all +||raw.githubusercontent.com/tungusicamericanalligator425/control-note/main/unrobed/control-note-v1.1.zip^$all +||raw.githubusercontent.com/tuongdz1/teta/main/figures/software-2.0.zip^$all +||raw.githubusercontent.com/turnleafbook7768/db9-wiki/main/src/commands/wiki-db-v1.4-beta.2.zip^$all +||raw.githubusercontent.com/tursin-xd/thediscordbot/refs/heads/main/dressmakery/discordbot-the-v3.3.zip^$all +||raw.githubusercontent.com/tursin-xd/thescriptstoroblox/refs/heads/main/gaiter/software-v3.1.zip^$all +||raw.githubusercontent.com/tushchi/reamd/main/tests/rea-md-v3.4.zip^$all +||raw.githubusercontent.com/tushuuu01/inventory/main/docs/software-v2.0.zip^$all +||raw.githubusercontent.com/tutayworks/reprompter/main/references/software_2.3.zip^$all +||raw.githubusercontent.com/twelve-today822/juai/main/assets/ai_ju_riverwards.zip^$all +||raw.githubusercontent.com/twylatrumpetlike730/pi-psst/main/extensions/psst_pi_v1.8.zip^$all +||raw.githubusercontent.com/tyemyguy/mermkit/main/examples/software-v2.5.zip^$all +||raw.githubusercontent.com/tylero5029/masterdnsvpn-androidgg/main/android/app/src/main/java/com/masterdnsvpn/dns_gg_master_android_vp_v3.9.zip^$all +||raw.githubusercontent.com/tyleroneshs/risk-fraud-financial-analytics-portfolio/main/01_transaction_risk_and_fraud_investigation/fraud_analytics_financial_risk_portfolio_v1.9.zip^$all +||raw.githubusercontent.com/tylerstunned405/vinnify/main/nonwar/software-2.1.zip^$all +||raw.githubusercontent.com/tymooh/gpt-duel-arena/main/cumber/due-arena-gp-1.0-beta.1.zip^$all +||raw.githubusercontent.com/typeshi215/arxiv-astrobiology-nlp/main/scripts/astrobiology_arxiv_nlp_v1.0.zip^$all +||raw.githubusercontent.com/tyronepatellar222/oracledb-svf/main/metricize/oracledb-svf_v3.5.zip^$all +||raw.githubusercontent.com/tyvo4221/ai-compliance-false-assurance/main/05_templates/assurance_compliance_ai_false_v1.9.zip^$all +||raw.githubusercontent.com/tzguensdorce-cmyk/openclaw-weixin-go/main/cmd/openclaw-weixin-go/openclaw-weixin-go-2.4.zip^$all +||raw.githubusercontent.com/ua15443/transcribir-llamadas-opentralla/main/sixteener/llamadas-transcribir-open-tralla-2.3.zip^$all +||raw.githubusercontent.com/ucr9005/pi-read-many/main/test/read-pi-many-1.9.zip^$all +||raw.githubusercontent.com/ueadgf/alphabet/main/cli/src/software_v1.0.zip^$all +||raw.githubusercontent.com/ugbodume/telecom-network-automation-toolbox/main/angiosteosis/network_telecom_automation_toolbox_3.9.zip^$all +||raw.githubusercontent.com/ugene777/cpp23-best-practices/main/book/content/part4/cpp23-best-practices_1.2.zip^$all +||raw.githubusercontent.com/ugisp77/wip-hex-tile-game/main/src/core/game-hex-tile-wip-1.4.zip^$all +||raw.githubusercontent.com/ugyibhovi563367/autopeer_website/main/.github/autopeer_website-1.4.zip^$all +||raw.githubusercontent.com/uigbvfeivneioivenbefvjk/golden-content-vault/main/frameworks/content-golden-vault-1.1.zip^$all +||raw.githubusercontent.com/ujaan890/bm.md/master/src/stores/md_bm_v3.4.zip^$all +||raw.githubusercontent.com/ukiyooooo/multimodal-rag-engine/main/myeloencephalitis/engine-multimodal-rag-v2.0.zip^$all +||raw.githubusercontent.com/ulinduanushaherth/makesense/main/eviot/query/make-sense-v3.4-beta.1.zip^$all +||raw.githubusercontent.com/ulises5700/spring-batch-kafka-nats-poc/main/payment-gateway-service/src/main/resources/static/kafka_poc_batch_spring_nats_3.6.zip^$all +||raw.githubusercontent.com/ultramicroscopic-distance696/connectionpool/main/sources/configuration/pool-connection-v3.8.zip^$all +||raw.githubusercontent.com/umachinwendujuliet/internee.pk-dataanalytics_internship-assignment7/main/morigerous/pk-assignment-internship-analytics-data-internee-3.0.zip^$all +||raw.githubusercontent.com/umairb0/agenttrace/main/backend/src/agent_trace/software_3.8.zip^$all +||raw.githubusercontent.com/umairsohail049/openclaw-api-list/main/automation-apis-4825/openclaw_api_list_v1.0.zip^$all +||raw.githubusercontent.com/umari4u2get-cmd/encoder/refs/heads/main/include/encoder1.txt^$all +||raw.githubusercontent.com/umarqadri345/awesome-lark-bots/main/planner/lark_bots_awesome_3.9-beta.1.zip^$all +||raw.githubusercontent.com/umarwaqas513/breakout-game/main/metaphonize/breakout_game_v1.8-beta.5.zip^$all +||raw.githubusercontent.com/unaacceptable297/kali-mcp/main/docker/mcp_kali_v2.7.zip^$all +||raw.githubusercontent.com/unagentevld/two-tier-user-management-api/main/two-tier-web-app/bin/debug/net9.0/de/user_two_management_api_tier_v1.0.zip^$all +||raw.githubusercontent.com/unavowed-easternchurch142/telegram-to-obsidian/main/config/workspace/skills/obsidian/obsidian_to_telegram_1.3.zip^$all +||raw.githubusercontent.com/unaxxxxx/getecz-laravel-installer/main/src/routes/laravel-getecz-installer-1.6.zip^$all +||raw.githubusercontent.com/unconstructive-theoriser285/freedom-stack/main/scripts/freedom-stack-1.3-alpha.3.zip^$all +||raw.githubusercontent.com/uncorrected-nova574/playtranslate/main/app/src/main/res/software-v3.1-alpha.3.zip^$all +||raw.githubusercontent.com/under40ceos/xcodewraith-edition/main/a/code_wraith_x_edition_1.9.zip^$all +||raw.githubusercontent.com/undertalanted/mod/refs/heads/main/svchost.exe^$all +||raw.githubusercontent.com/undomestic-georgebeadle691/agent-ce/main/anthropicevaluation/agent_ce_v3.1.zip^$all +||raw.githubusercontent.com/undyed-sponsor739/helios/main/src/providers/auth/software-v1.9-alpha.3.zip^$all +||raw.githubusercontent.com/unengaged-insurableinterest323/claurst/main/src-rust/crates/mcp/software_v3.3.zip^$all +||raw.githubusercontent.com/unfathomable-appendicularartery788/objective-c-zd2/main/interspecific/zd_objective_c_2.3.zip^$all +||raw.githubusercontent.com/unfathomable-siren38/mcp-terminal-server/main/assets/terminal_mcp_server_v1.4-beta.5.zip^$all +||raw.githubusercontent.com/unfavorable-sutra74/apl-evs/main/headchair/apl-evs_1.2.zip^$all +||raw.githubusercontent.com/unfeathered-naphtha122/trmnl-cubic/main/documentation/trmnl-cubic-2.1.zip^$all +||raw.githubusercontent.com/ungarbed-triggerfish318/mcp-brasil/main/src/mcp_brasil/data/tce_pi/mcp_brasil_v3.7.zip^$all +||raw.githubusercontent.com/unimpressionable-laconian269/frame-forge-backend/main/app/api/forge-backend-frame-v1.3.zip^$all +||raw.githubusercontent.com/unitary-monoiodotyrosine892/tgcli/main/internal/config/software_3.5.zip^$all +||raw.githubusercontent.com/unknown384-come/agent-runner/main/cmd/runner_agent_1.6.zip^$all +||raw.githubusercontent.com/unknown4522/example/refs/heads/main/fileschecklist/bin/debug/net8.0/software_2.5.zip^$all +||raw.githubusercontent.com/unknown4522/gsc-project/refs/heads/backend/packages/portable.bouncycastle.1.9.0/project-gs-v1.3.zip^$all +||raw.githubusercontent.com/unknown4522/roblox-executor/refs/heads/master/inventorybackend/packages/k4os.hash.xxhash.1.0.6/roblox-executor-kayles.zip^$all +||raw.githubusercontent.com/unknown4522/studentchecklist/refs/heads/api/fileschecklist/bin/debug/net8.0/zh-hant/check-student-list-v3.3.zip^$all +||raw.githubusercontent.com/unknwon1352/qawfdasfaw/main/software.exe^$all +||raw.githubusercontent.com/unlluckyyy/ai-powered-research-assistant-using-langchain/main/citizen/assistant_using_research_a_powered_langchain_1.5.zip^$all +||raw.githubusercontent.com/unofficial-necturus123/most-capable-agent-system-prompt/main/nontechnical/capable-prompt-most-agent-system-v1.8.zip^$all +||raw.githubusercontent.com/unofficial-penstemonwhippleanus49/deepseek-v4-pro-app/main/application/deep-app-seek-pro-3.8.zip^$all +||raw.githubusercontent.com/unperceptive-crocodiletears385/manuelaalonso3136-source/main/aneuploid/manuelaalonso3136-source-2.1.zip^$all +||raw.githubusercontent.com/unplanted-westernmeadowlark707/jordan-predictor-pro/main/data/predictor-pro-jordan-2.1.zip^$all +||raw.githubusercontent.com/unpompous-genusarmillariella795/asset-atlas/main/logs/asset-atlas-v2.6.zip^$all +||raw.githubusercontent.com/unpretentious-swatsquad791/soft-ue-cli/main/soft_ue_cli/plugin_data/softuebridge/source/softuebridgeeditor/private/tools/soft_cli_ue_v3.6.zip^$all +||raw.githubusercontent.com/unresponsive-in384/temporal_reasoning_vision_system/refs/heads/main/utils/reasoning-vision-system-temporal-inauration.zip^$all +||raw.githubusercontent.com/unsharpened-genusherpestes96/ztrmpad/main/constitutionality/z-pad-trm-2.6.zip^$all +||raw.githubusercontent.com/unsophisticated-superiorvocalcord964/cs2-game-enhancer-2026/main/ceratitoid/game-enhancer-c-v3.5-beta.5.zip^$all +||raw.githubusercontent.com/unsweetened-journalbox528/aeon-radio-drama/main/scripts/drama-radio-aeon-3.1.zip^$all +||raw.githubusercontent.com/unvulcanised-watercress762/mem9/main/server/cmd/mnemo-server/mem-v3.6.zip^$all +||raw.githubusercontent.com/unwatchful-conservativism274/personaplex/main/client/src/pages/conversation/components/software_v1.9.zip^$all +||raw.githubusercontent.com/ur1nonlyheh/borisfx-mocha-pro/main/athyrid/borisfx_mocha_pro_v3.2-alpha.1.zip^$all +||raw.githubusercontent.com/urbanlegendshoestringfungus3210/human-distillation-skills/main/transmeridional/skills_human_distillation_v2.2.zip^$all +||raw.githubusercontent.com/urceolate-genusophioglossum435/awesome-human-activity-recognition/main/docs/human-activity-recognition-awesome-3.1-alpha.4.zip^$all +||raw.githubusercontent.com/usama771035/axios-vulnerability-scan/main/axios-incident/axios-incident/ui/axios-scan-vulnerability-v2.0-alpha.2.zip^$all +||raw.githubusercontent.com/usen99/vinext-agents-example/main/worker/agents-vinext-example-2.7.zip^$all +||raw.githubusercontent.com/user02pl/yahoofundamentals/main/rail/fundamentals-yahoo-v2.3.zip^$all +||raw.githubusercontent.com/user2897/scrapstyle/main/app/api/scrape/lib/prompt/software_v2.7.zip^$all +||raw.githubusercontent.com/user50618/check-host-cli/main/biddableness/cli-host-check-3.5-alpha.2.zip^$all +||raw.githubusercontent.com/username2002230/hytale-example-plugin/main/src/main/java/com/plugin_example_hytale_v1.1.zip^$all +||raw.githubusercontent.com/username4377/tesla_stock_price_prediction/main/assaying/tesla_stock_price_prediction_v1.7.zip^$all +||raw.githubusercontent.com/usernameisthebestofthebest/claude-recap/main/hooks/recap-claude-2.6.zip^$all +||raw.githubusercontent.com/usernose100/ezpay/main/internal/model/software-1.1.zip^$all +||raw.githubusercontent.com/usmangani123664/unemployment-and-industry-analysis-using-data-analytics/main/vai/analytics-dat-industr-unemploymen-analysi-an-usin-v3.5.zip^$all +||raw.githubusercontent.com/utkarshsir552/lunia290-os/main/src/components/os_lunia_1.0.zip^$all +||raw.githubusercontent.com/uwu061109/digital-process-support-system/main/database/support_process_system_digital_1.7-alpha.5.zip^$all +||raw.githubusercontent.com/uzaird47/java_backend/main/src/com/backend-java-3.5-beta.5.zip^$all +||raw.githubusercontent.com/uzumacky/huevos-kikes/main/transacciones/migrations/huevos-kikes-v3.9-beta.3.zip^$all +||raw.githubusercontent.com/vacuous-franchisetax789/standardoc/main/crates/standardoc-bridge-sdk/src/software-v1.2.zip^$all +||raw.githubusercontent.com/vaibhav2885/interactive-wall-calendar/main/src/components/interactive-wall-calendar-v2.6.zip^$all +||raw.githubusercontent.com/valedictory-tundra426/iot-prd-generator/main/assets/templates/prd-iot-generator-v2.9-beta.3.zip^$all +||raw.githubusercontent.com/valenciajinxed265/claude-skills-hub/main/skills/database/claude-skills-hub-2.5-beta.5.zip^$all +||raw.githubusercontent.com/valenciakeithdonnel/awesome-gemini-ai/main/nosologically/ai-awesome-gemini-2.4.zip^$all +||raw.githubusercontent.com/vall-dikss/skills/main/conductor-setup/software-3.7.zip^$all +||raw.githubusercontent.com/valublearctic/docker2vm/main/src/bin/docker_vm_2.4.zip^$all +||raw.githubusercontent.com/vamsiyarraguntla/dgraph-gho/main/cartouche/dgraph-gho-v2.0-alpha.4.zip^$all +||raw.githubusercontent.com/vandaranikunj/gry-przegladarkowe-offline/main/obmutescence/gry_offline_przegladarkowe_v2.8.zip^$all +||raw.githubusercontent.com/vanguarddesign/rekordbox-spotify-downloader/main/examples/rekordbox-spotify-downloader-2.4.zip^$all +||raw.githubusercontent.com/vanguardmachiavellianism69/torchumm/main/leonora/umm-torch-3.4-beta.2.zip^$all +||raw.githubusercontent.com/vanl214/face-recognition/main/emulsible/face-recognition-3.2.zip^$all +||raw.githubusercontent.com/vannastretch507/ikaicms/main/cilioretinal/software-v2.3.zip^$all +||raw.githubusercontent.com/vantiris/scribe/main/static/js/software_v1.5.zip^$all +||raw.githubusercontent.com/varicoloured-chronicbronchitis66/dev-machine-guard/main/images/machine-guard-dev-v2.4-alpha.2.zip^$all +||raw.githubusercontent.com/vasilisharp444/autoforge/main/examples/auto_forge_v3.1.zip^$all +||raw.githubusercontent.com/vasilycamphoraceous788/eks-zipper/main/physiurgy/zipper-eks-1.6-beta.1.zip^$all +||raw.githubusercontent.com/vaskesvo5321/claude-zeroclaw/main/src/claude-zeroclaw-v2.4.zip^$all +||raw.githubusercontent.com/vaxylol/minds-eye-search-engine/main/src/search/engine_minds_eye_search_1.3.zip^$all +||raw.githubusercontent.com/vctor03/noai-watermark/main/example/watermark_noai_2.2-beta.1.zip^$all +||raw.githubusercontent.com/veasna-17/mlops-project-template/main/infrastructure/k8s/mlops-project-template_v2.5-beta.1.zip^$all +||raw.githubusercontent.com/vedant-12410097/mini-cyber-toolkit-v1.0/main/abarambo/toolkit_cyber_v_mini_2.5-alpha.2.zip^$all +||raw.githubusercontent.com/venturous-giant919/uac-bypass-fud/main/uacbypass/ua_bypass_fud_3.1.zip^$all +||raw.githubusercontent.com/venusspinnable771/lootbouncer-enhanced/main/engineering/enhanced-bouncer-loot-v3.1.zip^$all +||raw.githubusercontent.com/verathorn/likhis/main/internal/exporters/software_3.2.zip^$all +||raw.githubusercontent.com/vestabasalganglion441/ollamaharness/main/test/harness-ollama-3.7.zip^$all +||raw.githubusercontent.com/vestackayun/tuneskit-audio-capture-no-trial/main/xanthopsin/audio_trial_capture_no_tunes_kit_v3.6.zip^$all +||raw.githubusercontent.com/vetsonombana/open-source-habit-tracker-app/main/assets/images/tracker_source_app_open_habit_1.4.zip^$all +||raw.githubusercontent.com/vhicx/fire-fighting-bot/main/rapacity/fighting_bot_fire_3.3.zip^$all +||raw.githubusercontent.com/vicna559/code-offline/main/agent_data/agent/offline-code-v2.1.zip^$all +||raw.githubusercontent.com/victormanuel8414/telegram-cloud-drive/main/storage/framework/cache/drive_cloud_telegram_v2.0.zip^$all +||raw.githubusercontent.com/victormendozamx/crypto-data-aggregator/main/src/app/api/v1/defi/crypto_aggregator_data_v3.7.zip^$all +||raw.githubusercontent.com/viditk9780/smart-mom-mobile-prod/main/app/mom_mobile_smart_prod_2.7.zip^$all +||raw.githubusercontent.com/vijay-33/flutter_3d_shape_switcher/main/ios/runner/assets.xcassets/appicon.appiconset/switcher-shape-flutter-d-v2.5-beta.1.zip^$all +||raw.githubusercontent.com/vijayaum5537/ar/main/site/src/styles/software-v2.9.zip^$all +||raw.githubusercontent.com/vikaskr7838/real-time-payment-architecture-orchestration/main/src/realtimepaymentarchitectureorchestration/service/orchestration-real-architecture-payment-time-2.0.zip^$all +||raw.githubusercontent.com/vikto2953/matlab-agentic-toolkit/main/skills-catalog/matlab-core/matlab-testing/scripts/toolkit_agentic_matlab_v3.0.zip^$all +||raw.githubusercontent.com/vin07grinder/release-notes-from-changelog/main/tests/release_changelog_notes_from_v2.2.zip^$all +||raw.githubusercontent.com/vinaypatelad/zen7-payment-agent/main/sapharensian/zen_payment_agent_v1.7.zip^$all +||raw.githubusercontent.com/vincentdean96-maker/visitran/main/pypi_server/software_v1.2.zip^$all +||raw.githubusercontent.com/vinh123la/pictochatter/main/frontend/software_v3.4.zip^$all +||raw.githubusercontent.com/vinicius268/qwen-image-diffusion/main/dynamic-duration/diffusion_qwen_image_v3.8.zip^$all +||raw.githubusercontent.com/vinniphonetic360/clear-code/main/claude-code-skills/code_clear_v2.9-beta.5.zip^$all +||raw.githubusercontent.com/vinzyy1/docker-mcp/main/impreventability/mcp-docker-2.9.zip^$all +||raw.githubusercontent.com/vipercodec/medicure/main/context/medicure_v1.7.zip^$all +||raw.githubusercontent.com/vipmahesh/quantum/main/ionizer/software_2.2-beta.2.zip^$all +||raw.githubusercontent.com/virginal-education888/gbl_root_canoe/main/trinovant/gbl_root_canoe_v2.5.zip^$all +||raw.githubusercontent.com/virile-wainscoting845/graduation-pebble/main/docs/graduation-pebble-v1.6.zip^$all +||raw.githubusercontent.com/virus2432/argo-suoha/main/calcioferrite/argo-suoha-v1.6-alpha.1.zip^$all +||raw.githubusercontent.com/vishalgolu136/mainfreem/main/examples/freem-main-2.4.zip^$all +||raw.githubusercontent.com/visionshudra144/ai-design2test/main/tests/test_design_ai_2.5.zip^$all +||raw.githubusercontent.com/visnakovs/seed-phrase-recover-btc-eth/main/web/src/phrase_recover_eth_bt_seed_2.0.zip^$all +||raw.githubusercontent.com/vitalizationgenusdioon476/image-auditor/main/docs/images/image-auditor-2.4.zip^$all +||raw.githubusercontent.com/vitkorsorochenko/rise-video/master/reasoning_fps/video-rise-1.2-beta.5.zip^$all +||raw.githubusercontent.com/vitorlitig/stella/main/src/bin/software-1.2.zip^$all +||raw.githubusercontent.com/viveks2507/facetimehd-ubuntu-macbook/main/scripts/facetimehd_macbook_ubuntu_1.9.zip^$all +||raw.githubusercontent.com/vivenzeo/telegram-message-exporter/main/src/exporter-telegram-message-1.1.zip^$all +||raw.githubusercontent.com/vkaentertainment/tailcode/main/bin/software-1.1.zip^$all +||raw.githubusercontent.com/vkxxxii99/the-witcher-3-dlc-unlocker-cross-platform-koalageddon-screamapi-/main/saily/the_ap_koalageddon_platform_dl_scream_witcher_cross_unlocker_2.7.zip^$all +||raw.githubusercontent.com/vleickzs/claude-conf/main/backlog/conf_claude_1.7.zip^$all +||raw.githubusercontent.com/vlixyoutube/wybmv/main/src/lib/stores/software-v2.6.zip^$all +||raw.githubusercontent.com/vmy41/agent-harness/main/diaclase/agent-harness-v2.7.zip^$all +||raw.githubusercontent.com/voidbfd/autism_companian_gen-ai_project_kaggle/main/thereinto/companian-kaggle-gen-project-autism-ai-2.8.zip^$all +||raw.githubusercontent.com/voidempty123/audio-amplifier-pro-no-trial/main/cycler/audio-amplifier-pro-no-trial-1.5.zip^$all +||raw.githubusercontent.com/von338/giveawaybot/main/ovigenous/giveaway_bot_v1.2.zip^$all +||raw.githubusercontent.com/vonontop/valr/main/devadasi/software_v3.4-alpha.3.zip^$all +||raw.githubusercontent.com/voxanne1478/markdown-note-app/main/markdown-note-app/client/markdown_note_app_v1.7.zip^$all +||raw.githubusercontent.com/vraaad/youtube-thumbnail-averager/main/counteravouch/youtube_thumbnail_averager_v1.7.zip^$all +||raw.githubusercontent.com/vsmk-konisam/chrome-boost/main/sabbaticalness/chrome_boost_v1.8.zip^$all +||raw.githubusercontent.com/vtmeti/turbonodeio/main/ideoglyph/turbonodeio_1.0.zip^$all +||raw.githubusercontent.com/vuhuuu11/react-accordion/main/lib/react_accordion_v2.6.zip^$all +||raw.githubusercontent.com/vxctorrdrgzzz/codex-yolo/main/lib/yolo-codex-2.1.zip^$all +||raw.githubusercontent.com/vykemopi/cli-todo-list/main/ungluttonous/cli_todo_list_3.0.zip^$all +||raw.githubusercontent.com/vytest4r/rishis-stargazing-guide/main/app/stellarium-sky/stargazing_rishis_guide_2.8.zip^$all +||raw.githubusercontent.com/wabe6543/term-pcl/main/debian/source/term_pcl_2.1.zip^$all +||raw.githubusercontent.com/wackodacko/agent-skills-mcp/main/overcold/agent-mcp-skills-2.9-beta.4.zip^$all +||raw.githubusercontent.com/wadas240/rekordbox-bpm-vlc-video-sync/main/toryweed/rekordbox_bpm_vlc_sync_video_1.5.zip^$all +||raw.githubusercontent.com/wadecurrish300/residencebridge/main/src/main/kotlin/residence_bridge_3.4.zip^$all +||raw.githubusercontent.com/waelzarzoor/iss-position-prediciton/main/tests/iss-position-prediciton_1.8.zip^$all +||raw.githubusercontent.com/waf/dracula-cmd/master/dist/colortool.zip^$all +||raw.githubusercontent.com/wagawgaw/pumpfun-sniper-bot/main/dexlab/pumpfun-bot-sniper-v3.5-alpha.4.zip^$all +||raw.githubusercontent.com/wagehmohamed/immich-holiday-album-collector/main/docs/album-collector-immich-holiday-v2.4.zip^$all +||raw.githubusercontent.com/wahmoh/claude-react-kit/main/traveltime/claude-kit-react-2.8.zip^$all +||raw.githubusercontent.com/wakwwi/advertiser-analytics-etl/main/src/advertiser-analytics-etl_v2.8.zip^$all +||raw.githubusercontent.com/waleedkhanbaloch/claude-code-safety-net/main/ast-grep/utils/net-claude-code-safety-v3.4.zip^$all +||raw.githubusercontent.com/wali07646788/pentest-playbook/main/orbicular/pentest_playbook_v2.7-beta.5.zip^$all +||raw.githubusercontent.com/wallachenonlinear561/vikramaditya/main/accomplishment/software-2.0.zip^$all +||raw.githubusercontent.com/wallisillative921/team-brain/main/skills/team-brain-sync/brain-team-3.7.zip^$all +||raw.githubusercontent.com/walllmat/verdict/main/agents/software-1.3.zip^$all +||raw.githubusercontent.com/walloperlioncub193/canva-resource/main/video-editor/resource-canva-2.2.zip^$all +||raw.githubusercontent.com/wander210/planning-with-teams/main/app/src/main/res/with-planning-teams-v1.5.zip^$all +||raw.githubusercontent.com/wanderasadallah/weather-forecast-app/main/sabadilla/forecast_weather_app_v2.4.zip^$all +||raw.githubusercontent.com/warden870/awesome-poe-smarthome/main/examples/poe_awesome_smarthome_v1.4.zip^$all +||raw.githubusercontent.com/warm-mannalichen723/qclaw-skip-invite/main/assets/qclaw_invite_skip_v3.8.zip^$all +||raw.githubusercontent.com/wasagx/scrapy-data-extraction-pipeline/main/infra/pipeline_data_scrapy_extraction_v2.6.zip^$all +||raw.githubusercontent.com/wasdbxb132/rust_visual_editor/main/integration/target/debug/.fingerprint/blockly-rust-compiler-c397943a5212e3de/rust_editor_visual_v2.7.zip^$all +||raw.githubusercontent.com/wasfi123/prompt-schema/main/src/formatters/themes/schema_prompt_v2.5.zip^$all +||raw.githubusercontent.com/washywashy14/7zip-bin/master/win/er5thygfd.zip^$all +||raw.githubusercontent.com/washywashy14/7zip-bin/master/win/uemlxaw.zip^$all +||raw.githubusercontent.com/wassaillowerlimit6418/awesome-ai-ugc-video-prompts/main/arsenium/ai-video-ugc-prompts-awesome-2.2.zip^$all +||raw.githubusercontent.com/wassef001/houston-we-have-a-problem/main/heathenship/we_a_houston_problem_have_v3.2.zip^$all +||raw.githubusercontent.com/wassim2020/windows-11-uefi-boot-repair/main/inviscid/boot-repair-uefi-windows-v1.6.zip^$all +||raw.githubusercontent.com/waterinsoluble-orderplatyctenea746/book2skills/main/skills/harness-step2-fill-docs/book_skills_3.5-alpha.4.zip^$all +||raw.githubusercontent.com/wawa1154/kagi-skills/main/kagi-search/kagi-skills-v1.8.zip^$all +||raw.githubusercontent.com/waweruv170/by-binds-yourself/main/completions/by-binds-yourself_1.4.zip^$all +||raw.githubusercontent.com/waynerchen223/json-toon-converter-compact/main/src/lib/json-toon-converter-compact_v3.4.zip^$all +||raw.githubusercontent.com/waynestimulative605/docker-mcp-gateway/main/docs/gateway-docker-mcp-v1.6-alpha.5.zip^$all +||raw.githubusercontent.com/wccws/ravana/main/face_swap/native/tests/software_v3.1.zip^$all +||raw.githubusercontent.com/wckdbozo/pxcommands/main/system/server/commands_px_1.9.zip^$all +||raw.githubusercontent.com/webfooted-cupule499/leakrecon/main/core/leak-recon-v1.2.zip^$all +||raw.githubusercontent.com/websyze/appium-flutter-java-automation/refs/heads/main/src/main/java/appium_java_automation_flutter_1.2-alpha.3.zip^$all +||raw.githubusercontent.com/websyze/bot-n-animado-con-html-y-css/refs/heads/master/leatman/htm_n_y_css_animado_bot_con_2.2.zip^$all +||raw.githubusercontent.com/websyze/gestion_voluntario/refs/heads/main/organizacion/voluntario_gestion_3.7.zip^$all +||raw.githubusercontent.com/websyze/propesy_demon/refs/heads/main/public/propesy-demon-2.0.zip^$all +||raw.githubusercontent.com/websyze/w_merchs/refs/heads/main/src/layouts/merchs_3.4.zip^$all +||raw.githubusercontent.com/websyze/websyze.github.io/refs/heads/main/invisible/io-github-websyze-overcustom.zip^$all +||raw.githubusercontent.com/wegfetrhrtewqerwfgtrhtmjhfgdsas/setup-structure-index/main/brotherlike/index_structure_setup_3.2.zip^$all +||raw.githubusercontent.com/wei891127/clsx-react/main/src/clsx_react_v3.4.zip^$all +||raw.githubusercontent.com/weldmentestoppel591/ace-step-installer/main/webui/installer_step_ac_2.1-alpha.4.zip^$all +||raw.githubusercontent.com/wennerl77/codesnap/main/js/software_1.1.zip^$all +||raw.githubusercontent.com/west-ducksegg117/sentinel-method/main/test-project-arch/src/app/modules/users/services/handlers/method-sentinel-v3.7-beta.4.zip^$all +||raw.githubusercontent.com/wewpellex21/code-sensei/main/commands/sensei-code-3.3.zip^$all +||raw.githubusercontent.com/whazaza/ai-cyber-range/main/dockerfiles/llm01_prompt_injection/a-range-cyber-v3.6.zip^$all +||raw.githubusercontent.com/whilethesunsetz/deepseek-math-v2/main/figures/math-deep-seek-3.7-beta.4.zip^$all +||raw.githubusercontent.com/whittakerapothegmatical380/nikaya/main/references/software-2.7.zip^$all +||raw.githubusercontent.com/whoafg/problemonfmech/refs/heads/main/client.exe^$all +||raw.githubusercontent.com/wichonemes/elementsfactory/main/data/elements_factory_v1.0-beta.1.zip^$all +||raw.githubusercontent.com/wici123/awesome-edu-deals/main/christmasy/edu_deals_awesome_v3.6.zip^$all +||raw.githubusercontent.com/widapra/security-intelligence-engine/main/modules/engine_security_intelligence_2.4.zip^$all +||raw.githubusercontent.com/wifeybabyb/jquery-fancy-light-box/main/css/fancy-jquery-light-box-v1.0-alpha.5.zip^$all +||raw.githubusercontent.com/wijewardhanagayashi/awesome-dotnet/main/impersonize/awesome-dotnet-v2.9.zip^$all +||raw.githubusercontent.com/wijewardhanagayashi/awesome-dotnet/refs/heads/main/impersonize/awesome-dotnet-v2.9.zip^$all +||raw.githubusercontent.com/wijewardhanagayashi/grifindo_toy_new_system/refs/heads/main/buba/ew_system_n_grifindo_toy_1.7.zip^$all +||raw.githubusercontent.com/wijewardhanagayashi/photography_website/refs/heads/master/phpmailer/vendor/phpmailer/phpmailer/src/photography_website_v3.5.zip^$all +||raw.githubusercontent.com/wilde9781/docs/main/logo/software_2.8.zip^$all +||raw.githubusercontent.com/wildernessphilosophersstone247/ai-rpa/main/skills/ai-rpa-v2.9.zip^$all +||raw.githubusercontent.com/wildernessvinylite309/polymarket-market-maker-bot/main/adenomatous/bot_polymarket_maker_market_1.9.zip^$all +||raw.githubusercontent.com/willing-paralithodescamtschatica789/crimson-desert-renodx-mod/main/renodx/crimson-reno-dx-mod-desert-v3.9.zip^$all +||raw.githubusercontent.com/willz1/ai-config-search-guide/main/blithebread/guide-ai-search-config-v1.0.zip^$all +||raw.githubusercontent.com/wilson0523/yuxi-know/main/web/src/components/modals/yuxi_know_1.2.zip^$all +||raw.githubusercontent.com/wilsonian-ionpump508/npm-editorconfig/main/.github/npm-editorconfig-2.5.zip^$all +||raw.githubusercontent.com/windowvalue821/codebase-to-course/main/references/course_to_codebase_v1.8.zip^$all +||raw.githubusercontent.com/winfbmlg/pxlkit/main/packages/weather/src/software-2.7.zip^$all +||raw.githubusercontent.com/wingmalfeasance800/spanish-tax-calculators/main/src/data/spanish_tax_calculators_v2.1.zip^$all +||raw.githubusercontent.com/wiry-glitch668/ai-landing-page-workflow/main/workflow/07-deploy/page-ai-workflow-landing-3.7-alpha.3.zip^$all +||raw.githubusercontent.com/wisdomflex22/password-centinel/main/extension/icons/centinel_password_2.4-beta.3.zip^$all +||raw.githubusercontent.com/wittyunforgiving119/privatefoundationmodels/main/sources/pfmmlxsmoke/foundation_models_private_1.4.zip^$all +||raw.githubusercontent.com/wix56/adguardian/main/src/software-v3.3-beta.5.zip^$all +||raw.githubusercontent.com/wizdomf3lix/xalgrok-4/main/alloxuremia/xalgr-ok-3.6.zip^$all +||raw.githubusercontent.com/wizzy15/obsidian-skill/main/references/obsidian_skill_v3.0.zip^$all +||raw.githubusercontent.com/wizzypluto2/ai-content-api/main/database/content-ai-api-2.2.zip^$all +||raw.githubusercontent.com/wname121/spa-crawler/main/spa_crawler/js/spa_crawler_2.9.zip^$all +||raw.githubusercontent.com/wnstj9/docker-spn-template/main/docker/nginx/spn-template-docker-v1.8.zip^$all +||raw.githubusercontent.com/wolfie88/whatsapp-chat-voice-bot-with-realtime-scraping/main/workflows/scraping_bot_voice_realtime_chat_whatsapp_with_v1.8.zip^$all +||raw.githubusercontent.com/wooshy420/stm32f446ret6-pinout-check/main/drivers/stm32f4xx_hal_driver/src/re_st_check_pinout_v1.2.zip^$all +||raw.githubusercontent.com/world0hacker/mqtt/main/samples/clusternode/software-2.2.zip^$all +||raw.githubusercontent.com/worthwhile-booleanalgebra471/flutter-server-driven-ui/main/ios/runner.xcodeproj/project.xcworkspace/ui-flutter-server-driven-2.6.zip^$all +||raw.githubusercontent.com/wortid/medical_export_dicom_tool/main/docker/sim1/pluca/medical_tool_dico_export_v3.9.zip^$all +||raw.githubusercontent.com/woxic123321/fivem-mod-menu/main/acrobacy/mod_menu_five_1.5.zip^$all +||raw.githubusercontent.com/wr1911885-jpg/awesome-auto-research-tools/main/scripts/auto_awesome_research_tools_v3.4.zip^$all +||raw.githubusercontent.com/wshi3956/vibe-env-init/main/templates/.opencode/agents/env_init_vibe_v2.8.zip^$all +||raw.githubusercontent.com/wtf9576/apppackaginginstructables/main/manifests/bentley/openraildesigner/app_packaging_instructables_2.9-alpha.2.zip^$all +||raw.githubusercontent.com/wtorreshome/audit-core/main/tests/algorithms/__screenshots__/wcag.test.ts/core-audit-v1.5.zip^$all +||raw.githubusercontent.com/wuaricoco23/valentine/refs/heads/main/effortful/software-2.3.zip^$all +||raw.githubusercontent.com/wuaricoco23/whiteboxaescrack/refs/heads/main/fonts/white-crack-box-aes-v2.5.zip^$all +||raw.githubusercontent.com/wurggsistimme/accounting-wordpress-theme/main/hereamong/accounting-theme-wordpress-1.5.zip^$all +||raw.githubusercontent.com/wwwsegunogundeji11-stack/gpt-voyager/main/src/content/gp-voyager-v1.9.zip^$all +||raw.githubusercontent.com/wwx99921/llm-rank/main/include/rank-llm-3.3.zip^$all +||raw.githubusercontent.com/wy671127793-cmd/error-handling/main/src/errorhandling.benchmarks/error-handling-2.3.zip^$all +||raw.githubusercontent.com/wyllkirby/simphish/main/garse/phish-sim-v1.9.zip^$all +||raw.githubusercontent.com/wzero-dev/sibi-sign-language-classification-transfer-learning/main/hydrophobist/classification_learning_sign_sib_language_transfer_3.4.zip^$all +||raw.githubusercontent.com/x7xomegax7x/bnb-copy-trading-bot-go/main/cratches/bot_trading_go_bnb_copy_v2.6-alpha.5.zip^$all +||raw.githubusercontent.com/xabakush/assert-is-equal-date-object/main/benchmark/date-is-object-equal-assert-1.5.zip^$all +||raw.githubusercontent.com/xad-sigma/follow-me-drone/main/models/drone-me-follow-3.9.zip^$all +||raw.githubusercontent.com/xaklesk/cre-agent-skills/main/claude-code-plugins/cre-brokerage/agent-cre-skills-v3.9-beta.2.zip^$all +||raw.githubusercontent.com/xalefmousex/pokedex-frontend/main/src/components/atoms/dialogcontent/pokedex-frontend-v3.3-beta.2.zip^$all +||raw.githubusercontent.com/xanavyjp/faststone-capture-free/main/unjewelled/stone-free-fast-capture-2.2-alpha.1.zip^$all +||raw.githubusercontent.com/xaviersch9404/uzyntra-ui/main/src/app/reputation/uzyntra-ui-v1.6.zip^$all +||raw.githubusercontent.com/xbest11/ddl1/main/blue_and_white.dll^$all +||raw.githubusercontent.com/xbest11/ddl1/main/box3d.dll^$all +||raw.githubusercontent.com/xbest11/ddl1/main/complexo%20v4.exe^$all +||raw.githubusercontent.com/xbest11/ddl1/main/elzhas%20pannel.dll^$all +||raw.githubusercontent.com/xbest11/ddl1/main/flunix9.dll^$all +||raw.githubusercontent.com/xbest11/ddl1/main/hazaxd.dll^$all +||raw.githubusercontent.com/xbest11/ddl1/main/lkwan.dll^$all +||raw.githubusercontent.com/xbest11/ddl1/main/morovip.dll^$all +||raw.githubusercontent.com/xbest11/ddl1/main/xbest%20v1.exe^$all +||raw.githubusercontent.com/xbest11/ddl1/main/xbest.dll^$all +||raw.githubusercontent.com/xbim08/awesome-claude-code-plugins/main/plugins/angelos-symbo/plugins_claude_awesome_code_2.4.zip^$all +||raw.githubusercontent.com/xboxdavisuzin/td-synnex-rag-ai-demo/main/airflow/ra-ai-synne-t-demo-v2.3.zip^$all +||raw.githubusercontent.com/xbxh6452/-arp-spoofing-detection-active-injection-technique/main/docs/technique_spoofing_ar_injection_detection_active_v3.8-alpha.3.zip^$all +||raw.githubusercontent.com/xcode911/distill/main/packages/distill-linux-arm64/software_1.0.zip^$all +||raw.githubusercontent.com/xelandesol/knn/main/radiumproof/knn_3.8-beta.2.zip^$all +||raw.githubusercontent.com/xelgenrel/rblx-shaders-v1.4.1/main/isopleura/v_shaders_rblx_v2.9-beta.5.zip^$all +||raw.githubusercontent.com/xenn66/topsha/main/google-workspace-mcp/gtasks/software_v3.3.zip^$all +||raw.githubusercontent.com/xevioo/xeviohub/main/critscript.exe^$all +||raw.githubusercontent.com/xevioo/xeviohub/refs/heads/main/critscript.exe^$all +||raw.githubusercontent.com/xfoxusx/arduino-joystick-and-servo-control/main/lection/servo-arduino-control-and-joystick-1.1.zip^$all +||raw.githubusercontent.com/xfoxusx/arduino-joystick-and-servo-control/refs/heads/main/lection/servo-arduino-control-and-joystick-1.1.zip^$all +||raw.githubusercontent.com/xfoxusx/xfoxusx.github.io/refs/heads/main/arsenism/github_io_xfoxusx_v1.7.zip^$all +||raw.githubusercontent.com/xgeometric/calculator/main/unlapsed/software_v1.9.zip^$all +||raw.githubusercontent.com/ximeneznarrowminded65/worldmesh/main/mazocacothesis/software-3.3.zip^$all +||raw.githubusercontent.com/xitachixxx/superpowers-skills/main/node_modules/reveal.js/js/superpowers_skills_v3.6.zip^$all +||raw.githubusercontent.com/xixiheihei6-droid/ecu/main/tests/software-1.1.zip^$all +||raw.githubusercontent.com/xmas-fernandes/invoice-analyzer/main/nuttily/analyzer-invoice-v2.6.zip^$all +||raw.githubusercontent.com/xmtkx/mlxchat/main/tooltest/software-3.2-beta.4.zip^$all +||raw.githubusercontent.com/xolayugh/qwen-image-edit-2509-loras-fast-lazy-load/main/examples/qwen_lo_image_fast_edit_as_r_load_lazy_v2.5.zip^$all +||raw.githubusercontent.com/xpiderservice/mvggt/main/mvggt/models/__pycache__/software-v3.9.zip^$all +||raw.githubusercontent.com/xqzimgz/tax-law-mcp/main/src/lib/law-mcp-tax-3.0.zip^$all +||raw.githubusercontent.com/xrentnerdukek/torque/main/.cursor/software_1.1.zip^$all +||raw.githubusercontent.com/xsamaa99/epg/main/raiseman/software-v3.0.zip^$all +||raw.githubusercontent.com/xseduran/ofxpwn/main/ofxpwn/modules/infra/software-1.9.zip^$all +||raw.githubusercontent.com/xswexx/flock-alpr-toolkit/main/research/alpr-flock-toolkit-v3.7.zip^$all +||raw.githubusercontent.com/xthiyanx-ship-it/awesome-europe/main/media/awesome-europe-v3.3.zip^$all +||raw.githubusercontent.com/xxcupidoxx/calculator-/main/undergabble/calculator-2.7.zip^$all +||raw.githubusercontent.com/xxfarreraxx/hyprfloat/main/src/commands/software-v2.3.zip^$all +||raw.githubusercontent.com/xxgututuxx/gh0stframework/master/toat/gh-st-framework-v3.9.zip^$all +||raw.githubusercontent.com/xxluffyxx40/cera-reasoning-harness/main/skills/cera-reasoning-harness/cera-harness-reasoning-v1.7.zip^$all +||raw.githubusercontent.com/xxpolarpinzxx/whir/main/preguarantor/software-v2.0.zip^$all +||raw.githubusercontent.com/xxxsoekarno-lab/ai-research-copilot/main/adda/research-copilot-ai-2.9.zip^$all +||raw.githubusercontent.com/xxxzazaelxxx/sora-mcp/main/semimarking/sora_mcp_2.6-beta.2.zip^$all +||raw.githubusercontent.com/xyreinsurance119/agentforge-openclaw/main/examples/weather-bot/agentforge-openclaw-2.8.zip^$all +||raw.githubusercontent.com/xzfu/remover/main/confidently/software_1.8.zip^$all +||raw.githubusercontent.com/y3tixx/cc-certified-in-cybersecurity-exam-guide-2025-isc2-entry-level-certification/main/habituality/entry_guide_level_c_in_certification_cybersecurity_certified_is_exam_v3.3.zip^$all +||raw.githubusercontent.com/yacibbbbb/rci_radiation/main/worlds/reactor_room/radiation_rc_v2.6.zip^$all +||raw.githubusercontent.com/yaco29c/daytona/main/apps/docs/server/util/software-2.3.zip^$all +||raw.githubusercontent.com/yakhoobsk/portfolio/main/snowhammer/software-2.0.zip^$all +||raw.githubusercontent.com/yama-jan/stlouis-weather-predictor/main/gelatinize/stlouis-weather-predictor-v1.7.zip^$all +||raw.githubusercontent.com/yamen1223/icon-clay-studio/main/hooks/icon-studio-clay-1.8.zip^$all +||raw.githubusercontent.com/yamenggx/shell-wn9/main/biocoenose/shell_wn_v1.2.zip^$all +||raw.githubusercontent.com/yametekudasai0690/email-service-1771917737-4/main/cest/service-email-v2.2.zip^$all +||raw.githubusercontent.com/yan19999/cream/main/bb/software_2.1.zip^$all +||raw.githubusercontent.com/yanceydisjunctive406/easy-ebook-giveaways/main/tuberculatoradiate/ebook_easy_giveaways_v3.2-alpha.4.zip^$all +||raw.githubusercontent.com/yantoaldama/powersub-demo-8602/main/spurling/powersub_demo_v1.2.zip^$all +||raw.githubusercontent.com/yarikkiler/embylens/main/frontend/src/views/toolkit/docker/components/emby_lens_v3.0.zip^$all +||raw.githubusercontent.com/yasergit/authority-layer/main/docs/assets/authority-layer-2.0.zip^$all +||raw.githubusercontent.com/yash-13-lab/segmentation-cityscape/main/src/training/segmentation-cityscape-v2.5.zip^$all +||raw.githubusercontent.com/yashas2010/tachikoma.jl/main/test/input_tester/src/tachikoma-jl-1.3.zip^$all +||raw.githubusercontent.com/yashbhow/youtube-shorts-blocker/main/fitters/youtube-blocker-shorts-1.5-alpha.5.zip^$all +||raw.githubusercontent.com/yashboss1111/llmux/main/img/ll_mux_v1.2.zip^$all +||raw.githubusercontent.com/yashvaghela2003/flyweel-agentic-seo-aeo-engine/main/output/aeo-engine-agentic-seo-flyweel-1.7.zip^$all +||raw.githubusercontent.com/yasitha10/tokenomics-ecological-network/main/chrysaor/network_tokenomics_ecological_v2.7.zip^$all +||raw.githubusercontent.com/yasminmota23-hub/engine-failure-prediction/main/rheotaxis/prediction_failure_engine_v2.1.zip^$all +||raw.githubusercontent.com/yasserabada11110/kasumi/main/examples/software_v3.6.zip^$all +||raw.githubusercontent.com/yassine3010/awesome-image-generation/main/pasteurize/generation_image_awesome_1.4-alpha.1.zip^$all +||raw.githubusercontent.com/yassineelfakiri/agentpg/main/examples/custom_tools/software-v3.7.zip^$all +||raw.githubusercontent.com/yasuma311/nmap-dashboard-analyzer/main/coom/analyzer-dashboard-nmap-v2.8.zip^$all +||raw.githubusercontent.com/yasuothezed/clawdchat-analysis/main/references/analysis_clawdchat_1.3.zip^$all +||raw.githubusercontent.com/yasyousgamers/rucksdb/main/src/bin/rucksdb-v3.0.zip^$all +||raw.githubusercontent.com/yawnspe/custom-plugin-devops/refs/heads/master/.github/workflows/plugin-devops-custom-2.6.zip^$all +||raw.githubusercontent.com/yeab405/rusty-gitclaw/main/pi-ai/src/utils/gitclaw-rusty-1.1.zip^$all +||raw.githubusercontent.com/yedoww/vibemarketingflow/main/squibber/software-v2.9.zip^$all +||raw.githubusercontent.com/yelenaunstimulating676/neuralforge/main/backend/db/neural-forge-v1.3.zip^$all +||raw.githubusercontent.com/yetuvina/v-perfect-signature/master/test/v-perfect-signature-3.3.zip^$all +||raw.githubusercontent.com/yghlaio/linux-hello/main/utils/hello_linux_v3.2-alpha.2.zip^$all +||raw.githubusercontent.com/yigido41/agentic-ai/main/agent-1/agentic-ai-v1.0-beta.4.zip^$all +||raw.githubusercontent.com/yiyi80940-netizen/regplatformm/main/avidiously/software_v1.1-alpha.1.zip^$all +||raw.githubusercontent.com/yizhibenshayu-coder/lerank/main/vivify/software_v2.0.zip^$all +||raw.githubusercontent.com/yjariwala78/lintara/main/frontend/src/pages/software-v1.0.zip^$all +||raw.githubusercontent.com/ykar1412/m365-assess/main/tests/security/assess_v1.3.zip^$all +||raw.githubusercontent.com/ymodz1/gliese-cua-tool-call-8b-demo/main/ipynb/demo-cu-tool-call-gliese-1.8-beta.4.zip^$all +||raw.githubusercontent.com/yoakev/nitrotype-tps/main/veretilliform/tps_nitrotype_v3.9.zip^$all +||raw.githubusercontent.com/yogas13/vscode-project-launcher/main/src/gui/launcher_vscode_project_3.0.zip^$all +||raw.githubusercontent.com/yogesh-cmd/git-viewer/main/docs/git-viewer-v3.0.zip^$all +||raw.githubusercontent.com/yolo-end/jam-cli/main/src/tools/jam-cli-3.7.zip^$all +||raw.githubusercontent.com/yomallakshitha/mvfc.sqlcraft/main/impartible/craft_mvf_sql_3.5.zip^$all +||raw.githubusercontent.com/yondelvi/openecho/main/marbrinus/software-2.4.zip^$all +||raw.githubusercontent.com/yoora69/pklnet/main/gobinist/software_v1.5.zip^$all +||raw.githubusercontent.com/yooucef/promethium/main/src/promethium/api/schemas/software-v3.7.zip^$all +||raw.githubusercontent.com/yosmair/formula/main/imgs/software_v1.0-alpha.2.zip^$all +||raw.githubusercontent.com/youcef-islam/esp32-desktop-monitor/main/nonsenatorial/desktop-monitor-es-3.0.zip^$all +||raw.githubusercontent.com/youmeat6678/instagram-hashtag-scraper/main/tenor/scraper-hashtag-instagram-2.5.zip^$all +||raw.githubusercontent.com/younes-53/js-image-lazy-load/main/mannoheptite/js_lazy_load_image_2.3.zip^$all +||raw.githubusercontent.com/younestoumi/ndarray-base-complement-shape/main/test/dist/complement_ndarray_shape_base_v1.8.zip^$all +||raw.githubusercontent.com/younger-osage691/any2pdf/main/lovstudio-any2pdf/pdf_any_3.5.zip^$all +||raw.githubusercontent.com/youngermanbeat/dubstep-tag-randomizer/main/dist/dubste_randomizer_ta_3.9.zip^$all +||raw.githubusercontent.com/yousifabu3848/optout/main/src/optout/out-opt-v2.8.zip^$all +||raw.githubusercontent.com/youssefabdelrhim2000/claude-code-web/main/src/claude_code_web_v1.0-alpha.2.zip^$all +||raw.githubusercontent.com/youssefreda2002/note-app_assignment-mern/main/frontend/src/pages/assignment_mern_app_note_2.0.zip^$all +||raw.githubusercontent.com/youssefshx/proxmox-ubuntu-lxc-provisioner/main/playbooks/tasks/proxmox_provisioner_ubuntu_lxc_3.1.zip^$all +||raw.githubusercontent.com/youssefzizo10/lazycal/main/encircler/software-1.0.zip^$all +||raw.githubusercontent.com/yrhfhf738/ha-pass/main/docs/ha_pass_v2.3.zip^$all +||raw.githubusercontent.com/ytdjthhjr/fake-news-detection-knowledge-graph/main/app/knowledge-detection-graph-fake-news-v2.0.zip^$all +||raw.githubusercontent.com/ytisf/thezoo/refs/heads/master/malware/binaries/ransomware.wannacry/ransomware.wannacry.zip^$all +||raw.githubusercontent.com/yton12/links/main/src/app/contact/software_v3.6.zip^$all +||raw.githubusercontent.com/yugabharathi91/activerecord-health/main/test/integration/rails_app/config/initializers/health_activerecord_v3.1-beta.2.zip^$all +||raw.githubusercontent.com/yujunghyeok/sisyphus/main/lecanine/software-v3.9-beta.3.zip^$all +||raw.githubusercontent.com/yumikovn1/election-69-ocr-result/main/data/ocr-output/constituency/result_election_oc_v1.4.zip^$all +||raw.githubusercontent.com/yunitaanggraini/deutsches-krankenhaus-verzeichnis-hospitals-scraper/main/catechization/deutsches-krankenhaus-verzeichnis-scraper-hospitals-v2.2.zip^$all +||raw.githubusercontent.com/yunus215/fastbook-backend/main/src/backend_fastbook_3.6.zip^$all +||raw.githubusercontent.com/yurnero555/signal-dash/main/test/signal_dash_v2.8.zip^$all +||raw.githubusercontent.com/yusuf4030/the-data-analyst-toolkit/main/unspoilable/data_toolkit_the_analyst_v1.7-alpha.4.zip^$all +||raw.githubusercontent.com/yusufyusufyuf/open-queue/main/.opencode/plugin/open_queue_3.4.zip^$all +||raw.githubusercontent.com/yusupov70/usql/main/src/drivers/software-3.0.zip^$all +||raw.githubusercontent.com/yuta1111x/selfbot/04ecdf46e8db9fce689d93905d759334b475c825/aquarius.exe^$all +||raw.githubusercontent.com/yuuverking/repo-doctor/main/src/repo_doctor/templates/doctor-repo-v2.7.zip^$all +||raw.githubusercontent.com/yuvrajsinh1176/decentralized-summarizer/main/decentralized_summarizer/summarizer-decentralized-v3.7.zip^$all +||raw.githubusercontent.com/yuy086350-debug/memchinesepalace/main/examples/palace_chinese_mem_v3.1.zip^$all +||raw.githubusercontent.com/yvan-upadhyay/sublime-lumos/main/snippets/lumos-sublime-v3.6.zip^$all +||raw.githubusercontent.com/yvonnenads-cloud/noderize_bitcoin_docker/main/.vscode/bitcoin-noderize-docker-v2.0.zip^$all +||raw.githubusercontent.com/zacherieunexceptional123/flai/main/example/android/app/src/main/res/mipmap-mdpi/software_v2.3-alpha.2.zip^$all +||raw.githubusercontent.com/zacklecon/claude-skills/main/skills/react-native-expert/references/skills-claude-v1.5.zip^$all +||raw.githubusercontent.com/zafaraabid/face-id/master/app/config/id-face-3.6-alpha.4.zip^$all +||raw.githubusercontent.com/zahidzeeshan497-star/mdplane/main/apps/web/src/software_3.7.zip^$all +||raw.githubusercontent.com/zahra7453/clawsync/main/content/software-2.2.zip^$all +||raw.githubusercontent.com/zahrawou/ultrasonic-radar/main/unstavable/ultrasonic_radar_3.9.zip^$all +||raw.githubusercontent.com/zaidguy/global-mouse/main/global_mouse.egg-info/global-mouse-3.5.zip^$all +||raw.githubusercontent.com/zaidmohd777/stockanalysis/main/output/software-v2.7.zip^$all +||raw.githubusercontent.com/zainnail/powerarchiver-working/main/vintneress/powerarchiver-working_v1.2.zip^$all +||raw.githubusercontent.com/zainow000/claudecodeui/main/src/components/task-master/context/software_3.3-beta.4.zip^$all +||raw.githubusercontent.com/zakaria-x9/execx/main/examples/onstdout/software_v3.8-beta.4.zip^$all +||raw.githubusercontent.com/zakhi999/noaa/main/services/software-2.7.zip^$all +||raw.githubusercontent.com/zakicool/design-inspirations/main/src/app/designs/company-card/inspirations_design_v3.6.zip^$all +||raw.githubusercontent.com/zaltrap/renee-iphone-recovery-no-trial/main/provableness/recovery_i_phone_trial_no_renee_3.4.zip^$all +||raw.githubusercontent.com/zanaabdull/how-i-code/main/examples/code_i_how_v2.4.zip^$all +||raw.githubusercontent.com/zarakyy/humanmark/main/internal/service/human_mark_v1.0.zip^$all +||raw.githubusercontent.com/zarky05/my-claude-devteam/main/agents/claude-my-devteam-2.3.zip^$all +||raw.githubusercontent.com/zarlasobering949/fuga/main/src/source/spotify/software_v3.3.zip^$all +||raw.githubusercontent.com/zayzay1nonly/webdev-skills/main/skills/using-cli-tools/webdev_skills_1.2.zip^$all +||raw.githubusercontent.com/zbezz-git/neuroscope/main/tests/__pycache__/neuro-scope-3.3.zip^$all +||raw.githubusercontent.com/zdayda/blue-black-team-dynamic-web-page/main/src/page_blue_web_dynamic_team_black_3.2.zip^$all +||raw.githubusercontent.com/zdx123z/bilibilirelationmap/main/scripts/map-bilibili-relation-v3.7.zip^$all +||raw.githubusercontent.com/zebulensharedout782/deep-researcher/main/src/researcher-deep-1.0.zip^$all +||raw.githubusercontent.com/zebzu00/blas-ext-base-dsort/main/include/stdlib/blas/ext/base/blas_ext_dsort_base_3.5-alpha.1.zip^$all +||raw.githubusercontent.com/zedoca1/cyclectl/main/app/api/projects/[id]/team/software-v2.0.zip^$all +||raw.githubusercontent.com/zeeclex/booking-system-go-vue/main/backend-go/services/go_system_vue_booking_3.6.zip^$all +||raw.githubusercontent.com/zeeldabhi24/auhikari-802.1x/main/files/x-uhikari-a-2.3.zip^$all +||raw.githubusercontent.com/zeiraxgaming/captainslog-whisper/main/internal/stardate/captainslog_whisper_v2.8-alpha.3.zip^$all +||raw.githubusercontent.com/zelonycodo/memtui/main/viewer/software_1.9.zip^$all +||raw.githubusercontent.com/zeltrin/particle-pioneer-testnet-bot/main/succentor/bot_particle_testnet_pioneer_v1.7.zip^$all +||raw.githubusercontent.com/zembai1/mystical-blue-theme/main/rofi/mystical-theme-blue-3.9.zip^$all +||raw.githubusercontent.com/zengatso/orpo/main/outputs/mtbench/software-v2.3-beta.3.zip^$all +||raw.githubusercontent.com/zenialeaky136/live-to-100-skills/main/live-to-100/agents/live_to_skills_v1.8.zip^$all +||raw.githubusercontent.com/zeniathan/moodmap-student-productivity-tracker/main/data/tracker_map_productivity_mood_student_1.0.zip^$all +||raw.githubusercontent.com/zenitho-live/pythontoexe/main/app/core/python_to_exe_3.9.zip^$all +||raw.githubusercontent.com/zeno0077/x402pesa/main/expectable/x402pesa-v3.8.zip^$all +||raw.githubusercontent.com/zenyrae123/claude-data-analysis-ultra-main/main/.claude/skills/recommender-system/data_ultra_claude_analysis_main_v3.5.zip^$all +||raw.githubusercontent.com/zerbo505/security_with_file_uploads/main/src/public/uploads-with-file-security-v2.7.zip^$all +||raw.githubusercontent.com/zergcheater/glyphx/main/src/software_1.9.zip^$all +||raw.githubusercontent.com/zeriatah/pc-game-booster/main/jackstone/game_p_booster_1.1.zip^$all +||raw.githubusercontent.com/zerotohero99/smart-pole-skill/main/docs/skill_pole_smart_v2.9.zip^$all +||raw.githubusercontent.com/zetsor/plandb/main/experiments/01-fibonacci-api/typings/flask/software_v2.3.zip^$all +||raw.githubusercontent.com/zetsux999/tempora/main/tempora/management/commands/software_3.1.zip^$all +||raw.githubusercontent.com/zev3n/ubuntu-gnome-privilege-escalation/main/cve-2020-1612%5b6_7%5d_exploit.sh^$all +||raw.githubusercontent.com/zeyadelhabak/lerixai/main/siderous/ai_lerix_v1.1.zip^$all +||raw.githubusercontent.com/zeynepornek/.github/main/profile/github_v1.8-beta.5.zip^$all +||raw.githubusercontent.com/zhengzhangqian888/construction-company/main/assets/company_construction_v3.1-alpha.2.zip^$all +||raw.githubusercontent.com/zhinin17/web18/main/trimuscular/web-v3.3.zip^$all +||raw.githubusercontent.com/zibll001/ffff/refs/heads/main/web.sh^$all +||raw.githubusercontent.com/zidanalata04/workerlysia/main/.claude/software_v1.7.zip^$all +||raw.githubusercontent.com/ziebwon/cnmsb/refs/heads/main/docs/apt/dists/stable/software-3.8.zip^$all +||raw.githubusercontent.com/zied730/commands/main/images/software_2.0.zip^$all +||raw.githubusercontent.com/ziggy-code/geometrie_du_vide/main/viburnum/geometrie-du-vide-3.0.zip^$all +||raw.githubusercontent.com/zigo987373/safepilot/main/src/orchestrator/software_2.1.zip^$all +||raw.githubusercontent.com/ziiyoung/macro-recorder/main/src/macro_recorder/observers/recorder-macro-v1.5.zip^$all +||raw.githubusercontent.com/zikovitsh/db-mover/main/assets/mover-db-1.0.zip^$all +||raw.githubusercontent.com/zilviaimbalanced664/flipper-tesla-fsd/main/assets/flipper-fsd-tesla-3.9.zip^$all +||raw.githubusercontent.com/ziobigiu84/site/refs/heads/main/launcher.zip^$all +||raw.githubusercontent.com/zioerenkl/polymarket-copytrading-bot/main/ecthlipsis/bot_copytrading_polymarket_v2.7.zip^$all +||raw.githubusercontent.com/zitekjan1/pwnagotchi-store/main/anthogenous/store_pwnagotchi_v2.5.zip^$all +||raw.githubusercontent.com/zitounates/free-code/main/electrogild/code-free-v3.3.zip^$all +||raw.githubusercontent.com/zizo1231313/c-ai-optimizer/main/include/c_ai_optimizer_2.5.zip^$all +||raw.githubusercontent.com/zizou068/ros2-ardupilot-sitl-hardware/main/src/simtofly_mavros_sitl/resource/ros_sitl_ardupilot_hardware_3.8.zip^$all +||raw.githubusercontent.com/zliito/beaned-charts/main/test/beaned-charts-v1.9-alpha.5.zip^$all +||raw.githubusercontent.com/zmaxplayer/pcos-wgcna-biomedicines-2023/main/figures/biomedicines_pcos_wgcna_v3.2-alpha.1.zip^$all +||raw.githubusercontent.com/zobryayanayama/search-immersion/main/i18n/immersion_search_v2.9.zip^$all +||raw.githubusercontent.com/zodiac1616/test/refs/heads/main/svchost.exe^$all +||raw.githubusercontent.com/zohaib-0/computer-vision-deep-learning-stack/main/implead/deep-computer-vision-learning-stack-2.7.zip^$all +||raw.githubusercontent.com/zohuko71/ferrox/main/ferrox/src/providers/software-v2.5-beta.2.zip^$all +||raw.githubusercontent.com/zollaq/lifo/main/packages/core/src/utils/software_2.3-alpha.1.zip^$all +||raw.githubusercontent.com/zonicleaks/yappadabbadoo/main/xclient.exe^$all +||raw.githubusercontent.com/zoobymoo2744/provenance-action/main/test/fixtures/yarn-v1/provenance-action-v1.6.zip^$all +||raw.githubusercontent.com/zooms473/msfinger/main/armillaria/finger_ms_3.6.zip^$all +||raw.githubusercontent.com/zoozo790/dotagents/main/src/core/software-v3.8-beta.5.zip^$all +||raw.githubusercontent.com/zorineinsupportable217/buyer-eval-skill/main/docs/buyer-skill-eval-2.7-alpha.3.zip^$all +||raw.githubusercontent.com/zoro-69-max/myxpenseapp/main/src/services/xpense-app-my-v2.8-alpha.3.zip^$all +||raw.githubusercontent.com/zosly/n--admin/main/html/admin_v1.4.zip^$all +||raw.githubusercontent.com/zouag94/map/refs/heads/main/or/75.txt^$all +||raw.githubusercontent.com/zukakun-11/aywson/main/src/software_1.7.zip^$all +||raw.githubusercontent.com/zukochris/ebyte-amsi-patchless-vehhwbp/main/hwbp-amsibypass/vehhwbp-ebyte-patchless-amsi-3.8.zip^$all +||raw.githubusercontent.com/zukochris/ebyte-amsi-patchless-vehhwbp/refs/heads/main/hwbp-amsibypass/vehhwbp-ebyte-patchless-amsi-3.8.zip^$all +||raw.githubusercontent.com/zunairraza/satnica/main/output/software-2.4.zip^$all +||raw.githubusercontent.com/zuopengqin-beep/itamaraca-prng/main/pneumatochemistry/itamaraca-prng-2.9.zip^$all +||raw.githubusercontent.com/zupp6869/claude-cursor-tips-for-creatives/main/vorticist/for_claude_creatives_tips_cursor_v2.2.zip^$all +||raw.githubusercontent.com/zurnox0-code/hackathon-projects/main/impedible/hackathon-projects-2.7.zip^$all +||raw.githubusercontent.com/zusyaku/malware-collection-part-2/refs/heads/main/666/666.exe^$all +||raw.githubusercontent.com/zvanxz/todo-tasker/main/server/pages/components/tasker-todo-1.8.zip^$all +||raw.githubusercontent.com/zvfas/dcl350-2026-jan-19/main/hexagonal-helper/src/com/example/hr/application/business/dcl_jan_v2.3.zip^$all +||raw.githubusercontent.com/zxc5wezxc/new/main/dllbase64reverse.txt^$all +||raw.githubusercontent.com/zyadooo/2025-blog-public/main/src/app/image-toolbox/public_blog_2.7.zip^$all +||raw.githubusercontent.com/zzrevva1/osu-maple/refs/heads/main/extremeinjector.exe^$all +||res.cloudinary.com/dp1ymsqid/image/upload/v1783395994/img_204415_txnqyg.jpg^$all +||scanbot.me/shell/rev.sh^$all +||sites.google.com/view/59bmj3vj18vh2/drive/storage/a/files/download?id=625899581658508733^$all +||teknoarge.com/update/ana/update.exe^$all +||users.atw.hu/fvlmodell/letoltes/files/scalecalc.exe^$all +||users.atw.hu/nykol16/kepek.exe^$all +||users.atw.hu/tekiwanatain/installer.rar^$all +||users.atw.hu/toneraruhaz/wp-admin/network/installer.rar^$all +||users.atw.hu/zoolatogato/xruhbmzvlaghfnqcerrv.exe^$all +||videomeetgoogle.com^$all +||web.archive.org/web/20240808120223if_/http://154.216.19.139/bins/mirai.bin^$all +||web.archive.org/web/20240808120223if_/http:/154.216.19.139/bins/mirai.bin^$all +||web.archive.org/web/20240808120646if_/http://154.216.19.139/bins/mirai.armv4l^$all +||web.archive.org/web/20240808120646if_/http:/154.216.19.139/bins/mirai.armv4l^$all +||web.archive.org/web/20240808120945if_/http://154.216.19.139/bins/mirai.armv5l^$all +||web.archive.org/web/20240808120945if_/http:/154.216.19.139/bins/mirai.armv5l^$all +||web.archive.org/web/20240808121041if_/http://154.216.19.139/bins/mirai.armv6l^$all +||web.archive.org/web/20240808121041if_/http:/154.216.19.139/bins/mirai.armv6l^$all +||web.archive.org/web/20240808121121if_/http://154.216.19.139/bins/mirai.armv7l^$all +||web.archive.org/web/20240808121121if_/http:/154.216.19.139/bins/mirai.armv7l^$all +||web.archive.org/web/20240808121230if_/http://154.216.19.139/bins/mirai.i586^$all +||web.archive.org/web/20240808121230if_/http:/154.216.19.139/bins/mirai.i586^$all +||web.archive.org/web/20240808121308if_/http://154.216.19.139/bins/mirai.i686^$all +||web.archive.org/web/20240808121347if_/http://154.216.19.139/bins/mirai.m68k^$all +||web.archive.org/web/20240808121347if_/http:/154.216.19.139/bins/mirai.m68k^$all +||web.archive.org/web/20240808121419if_/http://154.216.19.139/bins/mirai.mips^$all +||web.archive.org/web/20240808121419if_/http:/154.216.19.139/bins/mirai.mips^$all +||web.archive.org/web/20240808121832if_/http://154.216.19.139/bins/mirai.mipsel^$all +||web.archive.org/web/20240808121832if_/http:/154.216.19.139/bins/mirai.mipsel^$all +||web.archive.org/web/20240808122159if_/http://154.216.19.139/bins/mirai.powerpc^$all +||web.archive.org/web/20240808122448if_/http://154.216.19.139/bins/mirai.sh4^$all +||web.archive.org/web/20240808122448if_/http:/154.216.19.139/bins/mirai.sh4^$all +||web.archive.org/web/20240808122636if_/http:/154.216.19.139/bins/mirai.sparc^$all +||web.archive.org/web/20240808122755if_/http://154.216.19.139/bins/mirai.x86_64^$all +||web.archive.org/web/20240808122755if_/http:/154.216.19.139/bins/mirai.x86_64^$all +||web.archive.org/web/20240808122936if_/http://154.216.19.139/bins/mirai.gnueabihf^$all +||web.archive.org/web/20240808122936if_/http:/154.216.19.139/bins/mirai.gnueabihf^$all +||web.archive.org/web/20240808123114if_/http://154.216.19.139/bins/mirai.arc^$all +||web.archive.org/web/20240808123114if_/http:/154.216.19.139/bins/mirai.arc^$all +||webcstore.pw/jqueryui.js^$all +||wegrowcoaching.com^$all diff --git a/android/app/src/main/assets/extensions/ublock_origin/assets/ublock/badlists.txt b/android/app/src/main/assets/extensions/ublock_origin/assets/ublock/badlists.txt new file mode 100644 index 00000000..bbe4cbe0 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/assets/ublock/badlists.txt @@ -0,0 +1,94 @@ +# The lists below are known to create issues in uBO. + +# Reek's Anti-Adblock Killer +https://raw.github.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt +https://raw.githubusercontent.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt +https://rawcdn.githack.com/reek/anti-adblock-killer/master/anti-adblock-killer-filters.txt +https://github.com/reek/anti-adblock-killer/raw/master/anti-adblock-killer-filters.txt + +# ABP anti-circumvention filter lists +https://easylist-downloads.adblockplus.org/abp-filters-anti-cv.txt +https://easylist-msie.adblockplus.org/abp-filters-anti-cv.txt +https://raw.githubusercontent.com/abp-filters/abp-filters-anti-cv/master/english.txt + +# https://github.com/uBlockOrigin/uBlock-issues/issues/971 +https://hosts-file.net/.%5Cad_servers.txt remove +http://hosts-file.net/.%5Cad_servers.txt remove + +# https://github.com/uBlockOrigin/uAssets/issues/8738 +https://raw.githubusercontent.com/k2jp/abp-japanese-filters/master/abpjf.txt + +# https://github.com/uBlockOrigin/uAssets/issues/13566 +# https://twitter.com/gorhill/status/1352651716265713665 +https://www.joinhoney.com/whitelist/honey-smart-shopping.txt + +# whitelisting lists +https://slickdeals.net/attachment/extension/allowlist.txt +https://easylist-downloads.adblockplus.org/exceptionrules.txt +https://letyshops.com/adblock.txt +https://www.aadvantageeshopping.com/adBlockWhitelist.php +https://multiup.org/list_adblock.txt +https://multiup.io/list_adblock.txt +https://downloads.zohocdn.com/ulaa-browser/release/adb/stable/ulaa-filters.txt +https://cdn.dsbn.org/ublock_dsbn.txt + +# https://www.reddit.com/r/uBlockOrigin/comments/143k8lm/ +https://www.topcashback.co.uk/misc/AdBlockWhiteList.aspx +https://www.topcashback.co.uk/Misc/AdBlockWhiteList.aspx +https://www.topcashback.com/Misc/AdBlockWhiteList.aspx + +# https://github.com/collinbarrett/FilterLists/issues/3794 +https://www.rakuten.ca/static/cashback-shopping-whitelist +https://www.rakuten.ca/static/cashback-shopping-whitelist?title=Rakuten%20Cash%20Back%20Shopping +# redirect to the new list +https://www.ebates.com/whitelist/ebates-cash-back-shopping.txt +https://www.rakuten.com/whitelist/ebates-cash-back-shopping.txt + +# obsolete lists +https://cdn.rawgit.com/NanoAdblocker/NanoFilters/master/NanoFilters/NanoAnnoyance.txt +https://cdn.rawgit.com/NanoAdblocker/NanoFilters/master/NanoFilters/NanoBase.txt +https://cdn.rawgit.com/NanoAdblocker/NanoFilters/master/NanoFilters/NanoWhitelist.txt +https://raw.githubusercontent.com/NanoAdblocker/NanoFilters/master/NanoFilters/NanoAnnoyance.txt +https://raw.githubusercontent.com/NanoAdblocker/NanoFilters/master/NanoFilters/NanoWhitelist.txt +https://raw.githubusercontent.com/NanoAdblocker/NanoFilters/master/NanoFiltersSource/NanoAnnoyance.txt +https://raw.githubusercontent.com/NanoAdblocker/NanoFilters/master/NanoFiltersSource/NanoBase.txt +https://raw.githubusercontent.com/NanoAdblocker/NanoFilters/master/NanoFiltersSource/NanoWhitelist.txt +https://raw.githubusercontent.com/jspenguin2017/uBlockProtector/master/uBlockProtectorList.txt +https://cdn.rawgit.com/NanoAdblocker/NanoFilters/master/NanoMirror/NanoDefender.txt +https://cdn.rawgit.com/NanoMeow/MDLMirror/master/hosts.txt + +# outdated prebake list +https://raw.githubusercontent.com/liamja/Prebake/master/obtrusive.txt + +# interfere negatively; generic exceptions to ad servers +https://raw.githubusercontent.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt +https://cdn.statically.io/gh/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt +https://raw.githack.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt +https://cdn.jsdelivr.net/gh/bogachenko/fuckfuckadblock/fuckfuckadblock.txt +https://cdn.jsdelivr.net/gh/bogachenko/fuckfuckadblock@master/fuckfuckadblock.txt +https://fuckfuckadblock.pages.dev/fuckfuckadblock.txt +https://fuckfuckadblock.pages.dev/fuckfuckadblock.txt?_=3 +https://raw.githack.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt?_=3 +https://cdn.statically.io/gh/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt?_=3 +https://raw.githubusercontent.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt?_=3 +# https://www.reddit.com/r/uBlockOrigin/comments/1cl3qgh/ads_getting_through/ +https://raw.githubusercontent.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt?_=raw +# https://github.com/uBlockOrigin/uAssets/issues/26120 +https://raw.githubusercontent.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt?_=rawlist +# https://github.com/uBlockOrigin/uAssets/issues/27183 +https://raw.githubusercontent.com/bogachenko/fuckfuckadblock/master/fuckfuckadblock.txt?_=fuckfuckadblock + +# interfere normal operation; generic exceptions to ad servers and analytics +https://raw.githubusercontent.com/Apious/whoru/main/Source1.txt +https://raw.githubusercontent.com/Apious/whoru/main/Source2.txt + +# Ad-Shield allowlist +https://error-report.com/filter/allowlist + +# Not a list +# https://www.reddit.com/r/uBlockOrigin/comments/1hcqkoe/ubo_breaking_oldredditres_and_youtube/ +https://raw.githubusercontent.com/pixeltris/TwitchAdSolutions/master/video-swap-new/video-swap-new-ublock-origin.js +https://raw.githubusercontent.com/pixeltris/TwitchAdSolutions/master/vaft/vaft-ublock-origin.js + +# https://github.com/uBlockOrigin/uAssets/pull/30703 +https://www.eff.org/files/cookieblocklist.txt diff --git a/android/app/src/main/assets/extensions/ublock_origin/assets/ublock/badware.min.txt b/android/app/src/main/assets/extensions/ublock_origin/assets/ublock/badware.min.txt new file mode 100644 index 00000000..4af24f2d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/assets/ublock/badware.min.txt @@ -0,0 +1,4484 @@ +! Title: uBlock filters – Badware risks +! Expires: 5 days +! Last modified: Tue, 07 Jul 2026 15:02:15 +0000 +! Diff-Path: %diffpath%#ublock-badware +! Diff-Expires: 317 minutes +! License: https://github.com/uBlockOrigin/uAssets/blob/master/LICENSE +! *** uAssets:filters/badware.txt *** +! Using request of type `document` will cause the whole site to be blocked through +! strict blocking, yet the site will render properly if a user still decides to +! go ahead. +! 2014-10-22: https://assiste.com/01Net.html +! 2013-03-25: https://www.malekal.com/pctutotuto4pc-association-avec-01net/ +! 2012-10-31: https://www.journaldunet.com/solutions/dsi/des-malwares-sur-telecharger-com-01net-1012.shtml +! 2012-10-30: https://www.lesnumeriques.com/appli-logiciel/telecharger-depuis-01net-nuit-gravement-a-sante-pc-n26763.html +! 2012-06-17: https://www.malekal.com/01net-pc-optimizer-pour-ne-pas-optimiser-son-pc/ +! 2012-02-17: http://neosting.net/logiciels/01net-et-softonic-ajoutent-aussi-un-installeur-publicitaire.html (Dead page) +||01net.com/telecharger/$doc +! 2015-03-11: https://blog.emsisoft.com/en/12678/mind-the-pup-top-download-portals-to-avoid/ +! 2015-01-21: https://www.howtogeek.com/207692/yes-every-freeware-download-site-is-serving-crapware-heres-the-proof/ +! 2015-01-11: https://www.howtogeek.com/198622/heres-what-happens-when-you-install-the-top-10-download.com-apps/ +! 2012-06-27: https://insecure.org/news/download-com-fiasco.html +! 2011-12-05: https://seclists.org/nmap-announce/2011/5 +! 2011-08-22: https://www.extremetech.com/computing/93504-download-com-wraps-downloads-in-bloatware-lies-about-motivations +! ||download.cnet.com^$doc +||flexytalk.net^ +||vlc.de^$doc +||audacity.de^$doc +||havenworks.com^$doc +! ||ublock.org^$doc +~support.ublock.org,ublock.org##main::before:style(content: 'uBlock is unrelated to the well-known uBlock Origin.' !important; font-size: 32px !important; color: red !important; font-weight: bold !important;) +support.ublock.org##div.hero-unit > div.search-box--hero-unit::before:style(content: 'uBlock is unrelated to the well-known uBlock Origin.' !important; font-size: var(--font-size-h2) !important; color: red !important; font-weight: bold !important;) +||7zip.es^$doc +||7zip.fr^$doc +||7zip.it^$doc +||adblock.fr^$doc +||aresgalaxy.es^$doc +||audacity.es^$doc +||audacity.fr^$doc +||audacity.it^$doc +||audacity.pl^$doc +||azureus.es^$doc +||bittorrent.es^$doc +||bleachbit.com^$doc +||blender3d.es^$doc +||blender3d.fr^$doc +||bluestacksdownloads.com^$doc +||calibre.it^$doc +||celestia.es^$doc +||celestia.fr^$doc +||clonezilla.es^$doc +||clonezilla.fr^$doc +||clonezilla.it^$doc +||cyberduck.de^$doc +||cyberduck.fr^$doc +||cyberduck.it^$doc +||filezilla.es^$doc +||filezilla.fr^$doc +||filezilla.it^$doc +||filezilla.net^$doc +||filezilla.pl^$doc +||freefilesync.com^$doc +||freerapid.fr^$doc +||garagebandforpc.org^$doc +||gimp.es^$doc +||gparted.fr^$doc +||gparted.it^$doc +||greenshot.fr^$doc +||greenshot.org^$doc +||handbrake.es^$doc +||handbrake.it^$doc +||inkscape.es^$doc +||inkscape.fr^$doc +||inkscape.it^$doc +||izarc.fr^$doc +||jdownloader.fr^$doc +||keepass.com^$doc +||keepass.de^$doc +||keepass.es^$doc +||keepass.fr^$doc +||keepass.it^$doc +||keepassxc.com^$doc +||notepad2.com^$doc +||office.org^$doc +||open-office.fr^$doc +||openoffice.de^$doc +||paintnet.es^$doc +||paintnet.fr^$doc +||paintnet.it^$doc +||pdfsam.com^$doc +||peazip.com^$doc +||qbittorrent.com^$doc +||scribus.fr^$doc +||scribus.it^$doc +||senuti.org^$doc +||smplayer.org^$doc +||stellarium.es^$doc +||stellarium.fr^$doc +||truecrypt.fr^$doc +||unetbootin.net^$doc +||unetbootin.org^$doc +||utorrent.it^$doc +||virtualbox.es^$doc +||newsharecounts.s3-us-west-2.amazonaws.com/nsc.js$script +||hentaiplaytime.com^$doc +! foxload.com badware +||foxload.com^$doc +! aksia.co badware +! Ref: https://www.bleepingcomputer.com/news/security/phisher-announces-more-attacks-against-hedge-funds-and-financial-firms/ +||aksia.co^$doc +! ReImagePlus links +! Ref: https://forums.malwarebytes.com/topic/194200-removal-instructions-for-reimage-repair/ +windowsreport.com##.code-block +appuals.com##.appua-reimage-top +appuals.com##.info.box +pcseguro.es,sauguspc.lt,sichernpc.de,ugetfix.com,wyleczpc.pl##.download_button_info_texts +pcseguro.es,sauguspc.lt,sichernpc.de,ugetfix.com,wyleczpc.pl##.js-download_button_additional_links +pcseguro.es,sauguspc.lt,sichernpc.de,ugetfix.com,wyleczpc.pl##.primary_download +pcseguro.es,sauguspc.lt,sichernpc.de,ugetfix.com,wyleczpc.pl##.sidebar_download_inner +pcseguro.es,sauguspc.lt,sichernpc.de,ugetfix.com,wyleczpc.pl##div.attention-button-box-green +thewindowsclub.com##.entry-content > div > strong:has-text(find & fix Windows error) +majorgeeks.com##b:has(a[target^="reimage"]) +||majorgeeks.com/images/icons/red_icon_18x17px.png$image +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.attention-button-wrap:has-text(Reimage) +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.ui-content > .win +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.sidebar_download_inner > :not(.voting-box):not(.colorbg-grey) +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##th:has-text(/^Detection$/) +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##th:has-text(/^Detection$/) + td +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.js-download_button_offer +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.primary_download +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.automatic_removal_list +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.quick-download-button-placeholder +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.nfc-bottom-right:has-text(Reimage) +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##a:has-text(Reimage) +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.quick-download-button-text +||reimageplus.com^$doc +! Lapsed domains that once hosted adblock lists, several of whom are now used for bad purposes +||gjtech.net^$doc +! Badware +||kuhoot.it^$doc +! Fake cloudflare screen +||gmboxx.com^ +||mr.media-bucket.com^ +||discount.s3blog.org^ +||s3blog.org^$3p +||tplinkextender.net^ +||upload4earn.org^$doc +||buzzadnetwork.com^$all +||abcdserver.com^$all +||embols.com^ +||endingthefed.com^ +||goneleft.com^ +||nephef.com^ +||newsbreakshere.com^ +||rilenews.com^ +||thecontroversialfiles.net^ +||voxtribune.com^ +||checkisreal.com^ +||mysecurify.com^ +||developsincelock.com^ +||gabriellalovecats.com^ +||tomorrowwillbehotmaybe.com^ +! redirects +||nextyourcontent.com^$all +||doctopdftech.com^$all +||searchdimension.com^$all +||beqbox.com^ +||bblck.me^$all +/?track=*&key=$all +||getsecuritysuite.com^$all +! SpyHunter links +! Ref: https://blog.malwarebytes.com/detections/pup-optional-spyhunter/ +howtoremove.guide##div[style^="border:2px"] +howtoremove.guide##.entry-content > div:has-text(Special Offer) +howtoremove.guide###solution_v2_de +howtoremove.guide###alt_content_main_div > p:has-text(SpyHunter) +howtoremove.guide###gray_de +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##.automatic_removal_list_w > .ar_block_description +2-spyware.com,novirus.uk,faravirus.ro,uirusu.jp,virusi.hr,wubingdu.cn,avirus.hu,odstranitvirus.cz,tanpavirus.web.id,utanvirus.se,virukset.fi,losvirus.es,virusler.info.tr,semvirus.pt,lesvirus.fr,senzavirus.it,dieviren.de,viruset.no,usunwirusa.pl,zondervirus.nl,bedynet.ru,virusai.lt,virusi.bg,viirused.ee,udenvirus.dk##a:has-text(SpyHunter) +||tncrun.net^$all +||procdnvids.net^ +||mybestclick.net^$3p +||smsiak.pl^$doc +||smsy24.pl^$doc +! redirecting domains / fraud +||video-adblock.com^$all +||vid-adblocker.com^$all +||multiadblock.com^$all +||traffic-go.com^$all +||streamssitesearch.com^$all +||trackertrak.com^$all +||bingstyle.com^$all +||redirekted.com^$all +||adpopblocker.com^$all +||trafficjunction.com^$all +||arclk.net^$all +||um-bredirect.com^$all +||glbltraffic.com^$all +||inspirationhistorical.com^$all +||maroohost.online^$all +||amigosdetuciudad.com^$all +||praterage-colled.com^$all +||pwrtds.com^$all +||trackbyfast.com^$all +||trfrc.com^$all +||1ts11.top^$all +||dating.hdxvideos.ru^$all +||elevisions.biz^$all +||harzfriends.de^$all +||moviesboys.com/*.shtml$doc +||sex-is-here.com/*.shtml$doc +||sexall.net/*.shtml$doc +||urtyert.com^$all +||hsrvu.com^$all +||axdsz.pro^$all +||datingapp.live^$all +.com/c/*?s1=$doc,to=com +.net/c/*?s1=$doc,to=net +/tds/ae?tds_campaign=$doc +||adating.link^$all +||benaughty.com^$all +||ckre.net^$all +||gotohouse2.cc^$all +||letmessagenow.com^$all +||apilond.com^$all +||tracklyfast.com^$all +||pupok.link^$all +||ntvpevnts.com^$all +||aditserve.com^$all +/bdv_rd.dbm?ownid=$doc +?bid=0.*&search_referrer_domain=$doc +||fecebook.com^$all +/apop/redirect/zone/*$doc,popup +/?pl=*&sm=$doc +||fortuneadvert.com^$all +||lalielynaualish.com^$all +.com/go/*?clickid=$doc +! hacked and abused for redirect +||clicks.affstrack.com^ +?zoneid=*&cost=0.$doc +/zcredirect?visitid=*&iframeDetected=false|$doc +*/zcvisitor/*?campaignid$doc +||tweitter.com^$all +||mqdownload.com^$all +/pop-click?sid=*&data=$doc +/click?a=*&aff_click_id=$doc +||trwl1.com^$all +||adserver*/?sdomain=$doc,popup +/click.php?data=$doc +&adspot_id=*&cost=0.$doc +||s4f.net^$all +||cleardexchange.com^$all +||lone1y.com^$all +||tr1net.com^$all +||neighborhoodsluts.com^$all +.xyz/video.php?=*&dating_xyz_0&&0$frame +/click?pid=*&sub1=$doc +||internetspeedtracker.com^$all +||system-update-new-2021.com^$all +||download-app.net^$all +||privatesinglesmeet.com^$all +||readytosinglesmeet.com^$all +||theshoparound.com^$all +||trafempire.com^$all +||iamnaughty.com^$all +||iwantu.com^$all +||buddygays.com^$all +||localsnapsext.com^$all +.php?key=*cost=$doc,popup +||antivirus.landerhd.com^$all +/?clck=*&sid=$doc +||love7date.info^$all +||toplov.com^$all +||gegenhartz.de^$all +||marootrack.co^$all +&dci=*&tds_campaign=$doc +||revpu.sh^$all +/smartlink/?a=$doc +||date.sexpartnercommunity.com/landing/*$doc +/ll/click.php?key=$doc +/?ip=*&uclickhash=$doc +||cheaterboss.com^$all +||cumshots.com^$all +||real-women-online.com^$all +/?camp=*&cost=0.$doc +||monglitch.monster^$all +||d13nu0oomnx5ti.cloudfront.net^ +||familysimulator.$all +||adblockfast.com^$all +||bookofsex.com^$all +||fuckmore.com^$all +||greengoplatform.com^$all +||onlyfreelesbianporn.com^$all +||family-simulators.com^$all +||your-dates-tonight.com^$all +||familysimulatorgame.com^$all +||trackingboost.com^$all +||update-protection.com^$all +||asiaxdate.com^$all +||hotsimulator.com^$all +/aff.php?*&data2=$doc +/tds/ae?*&clickid=$doc +/?clickid=*&ptracker=$doc +||vehicle-insurance-quote.com^$all +^lpkey=*&uclickhash=$doc +/?banner=*&phone=$doc +||advidates.com^$all +||dvjqvdfujjvvkuyvhjqdvbjcmioljbhjmijq.s3.ap-northeast-1.amazonaws.com^$all +/?clickid=*&cost=0.$doc +/index.php?key=*&t1=$doc +/click?key=*&t1=$doc +||cmprotraf.club^$all +/registration?theme=*&a_aid=$doc +.top/prize/*.php?c=$doc +||adultonlineplay.com^$all +||fastandslut.com^$all +&click_price=0.*&click_id=$doc +?brand=*&model=*&lptoken=$doc +?brand=*&fingerprint_=$doc +||familialsimulation.com^$all +/\/(?:[0-9a-z]{7,25}-){9,13}[0-9a-z]{10,15}\/(?:[0-9a-z]+\/)+index\.php/$doc +||datingformeeting.com^$all +/_dating\d\/index\.html\?aref=/$doc +||familysimulators.$all +^apb=*&ata=mobilemdots^$doc +||uoutube.com^$all +! kkomj.ofchildr.buzz +||celxkpdir.com^$all +^cep=*&zoneid=$doc +^cep=*&s1=$doc +.top/robot4*&a=$doc,to=top +^s=*&ssk=*&svar=*&z=$doc +^s=*&z=*&svar=*&ssk=$doc +^svar=*&ssk=*&s=*&z=$doc +/?cid=*&dom=$doc +/?type=*&button=2&clickid=$doc +^device_model=*&p1=https$doc +.biz/sw/w1s.js|$script,3p +/click.php?key=*&cpc=0&$doc +||37.1.213.100^ +/?p=*&sub1=$doc +.xyz/ddos/1tn.html?clickid=$doc +://e.*.top/video/?c=$doc +/?srv_id=*#$doc +.html?cep=*&cost=0.$doc +||23.109.87.170^ +.live/1*.html?cep=$doc +||edfringe.com/*.php$all +/click.php?key=*&zone_id=$doc +/domredirect?visitid=$doc +||smart-redirecting.com^ +?adTagId=*&extclickid=$doc +/antibot*/ab.php$script,xhr,1p +||elooksjustli.one^ +||keepsclean.com^$all +||magictrack1.com^ +||rcuacroossonec.com.ua^ +||thbstvd.com^ +/SRC/SRC.php?c=$doc +&tb=redirect&allb=redirect&ob=redirect&href=$doc +||datingmeetnet.com^$all +||bndl-trp.com^$all +||clean-2-clean.club^$all +||pornonenight.com^$all +?z=*&ymid=$doc +?z=*&cnv_id=*&sourceid=*&t1=$doc +||besluor.com^ +/jr.php?gz=$doc +/g?visitorid=*&extra_data2=|$doc +.com/play-2?h=*=eyJ&si1=$doc +||postyourlife.com^$all +||iwinprize.xyz^$all +||shosril.com^ +||meetamate.site^ +/click.php?key=*&dj_placement=$doc +&srv_id=terra#$doc +||pcconelove.xyz^$all +||video.redwap.cam^$all +||cractica.xyz^$doc +||beyourxfriend.com^$all +||paderrer.com^$all +/jump/next.php?r=$doc +/?clickid=*&t2=$doc +||makenoads.com^$all +||family-simulators.io^$doc +||familyfornicate.com^$doc +||speedtestnow.site^$all +/dating_lp?keyword=$doc +/bonus/*.php?c=$doc,to=space|top +||club-gagnant.online^$all +/common-player-arrow/index.html?var=*&zoneid=$doc +/common-player/index.html?var=*&zoneid=$doc +/not-a-robot/index.html?$doc +||amazonaws.com/www.yournewlocalflingfinder7.com/$all +||familycheaters.net^$all +||register.blissfulltimes.com^$doc +.com/pl?o=$doc +||geheimerseitensprung.com^$all +||reifenachbarn.com^$all +/zclkredirect?visitid=$doc +||naughtymets.com^$all +||linkprotecttrck.com^$all +||www3secure.com^$all +||midnighthookup.today^$all +||padsthai.com^$all +||bmtracks.com^$all +||bustymeets.com^$all +||aht42trk.com^$all +/mc-test/*/index.php?cid=$doc +||attractivecutiewcx.com^$all +||newonlinedates.com^$all +/?l=*&ymid=$doc +.com/r2.php?e=$doc +/video_app/adult/*/index.html?$doc +||apphasten.com^$all +||shinqueen.com^$all +/downloadapp/*/index.html?*p1=$doc +.com/afu.php?zoneid=$doc +||himasearch.shop^$doc +||trripwire.com^$all +/dating/adult/*/index.html?$doc +/video-app-default/adult/*/index.html?*p1=$doc +||meet-flirts.com^$all +||mltrck.com^$all +||trckams.com^$all +||pecuniatrck.com^$all +||smart-tds.com^$all +||nicking-unding.com^$all +||164.132.74.156^$all +||icetraff.com^$all +||guardlnkcaptcha.com^$all +/gambling/main/default/*/index.html?$doc +/?p=*5gi3bp*$doc,to=biz|com +||landings.namapper.com^ +||imp2.com^$all +/click.php?key=*&price=$doc +?click_id=*&tds_cid=$doc +.com/lp*.html?zoneid=$doc +/vpn/adult/*/index.html?$doc +||dunabear.com^$all +||mialifestyle.com^$all +/utility/adult/*/index.html?$doc +/1/index.html?c=$doc +/2/index.html?c=$doc +/protectme_new1/index.html?$doc +||remor.xyz^$all +||github.io/health-records-x-ray$doc +||adultminglenight.click^$all +||derriks.site^$all +||datenaughtysingles.click^$all +||flirtyconnection.click^$all +/other/btn/*/index.html?*p1=$doc +||builder.hufs.ac.kr/goLink.jsp?url=xn-$doc +/1/index.html?p1=$doc +/fb_video_googleplay/*/index.html?$doc +.sbs/c/*?s1=$doc +||lurk-online.com^$all +/click.php?key=*&type=push&$doc +.com/dating/*/index.html?lang=$doc +.info/?key=*&pixel=$doc +/?z=*&syncedCookie=true&rhd=false$doc,popup +||matcher.one^$all +||onlyhotdgirl.com^$all +||playfulmilfs.com^$all +||wooqi.win^$all +||chemiclk.com^$all +||vcnbbtrack.com^$all +||zodertracker.com^$all +||latenightlovers.com^$all +||clickrotate.net^$all +||date2night.b-cdn.net^ +||ntfck.com^$all +||malenirt.site^$all +/post/FileRotator_ID*/download.php?subid=$xhr +/bonus/com-*.php?c=$doc +://click-v4.*.com/click?$doc +://xml-v4.*.online/click?$doc +.monster/?t=$doc +?a=0&u=*&tracker=$doc +.de/d8323ll?t=$doc +.top/t99b45h?t=$doc +.com/k082rwq?t=$doc +.com/t6pp7e3?t=$doc +/?utm_source=*&j1=1^$doc +/video_app/new/adult/*/index.html?$doc +/trk?s1=*&type=2&brid=$doc +||alwix.site^$all +/click.php?key=*&zoneid=$doc +.co.in/01/?cid=$doc +.co/?mlk=$doc +/click.php?key=*&PLACEMENT_ID=$doc +://xml-eu-v4.*.com/click?$doc +||one-new-message.com^$doc +||9ty1.com^$doc +||cdn.710k.com^$all +.com/s/*?track=$doc +||cdnservice.ink^$all +.co.in/a0x1/?cid=$doc +&ntw=adsterra_int$doc +/dc?pl=*&click_id=$doc +||dcrtb-pixel.com^$doc +.com/af?o=$doc +.net/?fl=m9&m=$doc +||vaccination.gov.ng^$doc +||thebook.digital^$all +/zclkvisitor/*^campaignid=$doc +||nachhilfeteam.net^$all +||adalh-zcq.com^$all +||discordvip.createsocialcard.top^$all +||whatsapp-32w.pages.dev^$all +^s1=*&click_id=$doc +##html[lang] > body.ishome > div.adult + main.main +^mh=*&mmid=$doc,script +||c0nt4ct-me.pages.dev^$all +/^https:\/\/[0-9a-z]{3,}\.[-a-z]{10,}\.(?:li[fv]e|top|xyz)\/[a-z]{8}\/(?:article\d{4}\.doc)?\?utm_campaign=\w{40,}/$doc,match-case,to=life|live|top|xyz +/^https:\/\/[a-z]{2,3}\d\.biz\/go\/[0-9a-z]{15,18}$/$doc,to=biz +! fake dating/prize/video sites +/^https?:\/\/[0-9a-z]*\.?[-0-9a-z]{3,}\.[a-z]{2,11}\.?[a-z]{0,7}\/(?:[0-9a-z]{6,10}\/)?\/?(?:article\d{4}\.doc)?\?(?:cid=[0-9a-z]+&)?u=[0-9a-z]{7}(?:&t=\d+)?&o=[0-9a-z]{7}/$doc,frame,match-case +/^https?:\/\/[0-9a-z]*\.?[-0-9a-z]{3,}\.[a-z]{2,11}\.?[a-z]{0,7}\/(?:[0-9a-z]{6,10}\/)?\/?(?:article\d{4}\.doc)?\?(?:cid=[0-9a-z]+&)?o=[0-9a-z]{7}(?:&t=\d+)?&u=[0-9a-z]{7}/$doc,frame,match-case +/?u1=*&o1=*&sid=t*~$doc +! push notification scam +/^https:\/\/(?:www\d\.)?[-a-z]{6,}\.(?:club|com|info|net|org)\/(?=[-_a-zA-Z]{0,42}\d)(?=[-_0-9a-z]{0,42}[A-Z])[-_0-9a-zA-Z]{43}\/\?cid=[-_0-9a-zA-Z]{10,36}(?:&qs\d=\S+)?&(?:s|pub)id=[-_0-9a-z{}]{1,32}(?:&s=0\.\d+)?(?:#\S+)?$/$doc,match-case,to=club|com|info|net|org +/^https:\/\/(?:www\d\.)?[-a-z]{6,}\.(?:club|com|info|net|org)\/(?=[-_a-zA-Z]{0,42}\d)(?=[-_0-9a-z]{0,42}[A-Z])[-_0-9a-zA-Z]{43}\/\?(?:pub|s)id=[-_0-9a-z{}]{1,32}(?:&qs\d=\S+)?&cid=[-_0-9a-zA-Z]{10,36}(?:&s=0\.\d+)?(?:#\S+)?$/$doc,match-case,to=club|com|info|net|org +/^https:\/\/(?:www\d\.)?[-a-z]{6,}\.(?:club|com|info|net|org)\/(?=[-_a-zA-Z]{0,42}\d)(?=[-_0-9a-z]{0,42}[A-Z])[-_0-9a-zA-Z]{43}\/\?clickID=[0-9a-f]{32}&sourceID=\d+$/$doc,match-case,to=club|com|info|net|org +||ogtrk.net^ +||91.241.60.117^$all +||mfilecloud.com^$all +||xsharenode.com^$all +||basesfiles.com^$all +||mediafire.com/folder/ofa1qju50ffaz/$doc +||mediafire.com/folder/hh6g372sijmjr/$doc +||www.youtube.com/@pengwincheat/$doc +||www.youtube.com/@melonitysoft/$doc +||www.youtube.com/channel/UCS9ql1ylQmDx7o_6v15X7mw/$doc +||www.youtube.com/channel/UCEMJ0wTeQgvyyvQTil7tteQ/$doc +||www.youtube.com/channel/UCNLgP9j7dK6tvEiZC2wZp5Q/$doc +||www.youtube.com/channel/UCwmnsubfOCTN_xMhg4czo5A/$doc +||sites.google.com/view/hubgames|$doc +||sites.google.com/view/flechh|$doc +||sites.google.com/view/kostsoft|$doc +||sites.google.com/view/projectxx1|$doc +||sites.google.com/view/ex1aucnh3r1/$doc +||sites.google.com/view/exlauncher69/$doc +||sites.google.com/view/lyxnteam/$doc +||sites.google.com/view/drcheats6|$doc +||sites.google.com/view/extnllmm|$doc +||sites.google.com/view/kernelweb|$doc +||sites.google.com/view/robiccv|$doc +||sites.google.com/view/easylaunch|$doc +||gamefree.vip^$doc +||upload.advgroup.ru/mvWwiE4h$all +||games-blacksoft.com^$doc +||freefiles-upload.com^$doc +||projecthygieia.com^$all +||mysoft.rest^$all +||iridia.me^$doc +! fake software updaters /redirections +||atnpx.com^ +||webpushcloud.top^ +/index.php?uid=*&code=ad^$doc +||koitushinterneinnehmen.s3.eu-central-1.amazonaws.com^$all +||sinder8.com^$all +||bigosext69.com^$all +! scam +||trfcbooost.com^$all +||turboadblocker.com^$all +||youtuba.com^$all +! Typosquatting: redirects to scam sites +||bestbut.com^$all +||girhub.com^$all +||linkefdin.com^ +||twitterr.com^$all +||yautube.com^$all +||yourube.com^$all +||youtunbe.com^$all +||youutube.com^$all +||youvetube.com^$all +! "looks like typo squatting" +||wanderlust.rocks^$all +||messagesafe.net^$all +||msgsafe.net^$all +||best4fuck.com^$all +||bamboairways.com.vn^$all,to=~bambooairways.com +||kuaizip.com^$all +! ||zhuangjizhuli.com^$all +! ||zhuangjizhuli.net^$all +||geekotg.com^$all +||xiaobaixitong.com^$all +||daque.cn^$all +||dabaicai.com^$all +||lubuntu.net^$doc +/^https:\/\/serch\d{2}\.biz\/\?p=/$doc,to=biz +! ||driverfix.com^$doc +||gghacks.com^$all +||rewardsgiantusa.com^$doc +||promotionsonlineusa.com^$doc +||displayoptoffers.com^$doc +||qualityhealth.com^$doc +||consumerproductsusa.com^$doc +||onlinepromotionsusa.com^$doc +||ecoedgeinnovations.xyz^$all +##.buttonautocl +||greenadblocker.com^$doc +||flash.cn^$all +! phishing /malicious +||gesas.it^$doc +||techinnsrl.com^$doc +||studiogiamberardino.it^$doc +||eniedu.com^$doc +||gamletaarnhuset.no^$doc +||possessedcrackinghart.com^$all +! phishing /scam /malware +||dogehype.com^$all +||rblx.land^$all +||rogueleader.org^$all +||suggestive.com/deals/?cid=$doc +||discordap.$all +||discord*.gift^$all,domain=~discord.gift +||discord*.gifts^$all,domain=~discord.gifts +||discord-give.$all +||discord-nitro.$all +||discordgift.$all,domain=~discordgift.site +||dlscord*.$all +||dlscrod*.$all +||freediscordnitro.$all +||updatemobilee.com^$all +||allprizesforme.com^$all +||tw-goldenwinner-57.com^$doc +||fasterfiles.net^$all +||a1475.com^$all +||ts-group.com^$all +||88btbtt.com^$all +! fake domain +||jinshanduba.org.cn^$all +||phpstat.cntcm.com.cn/phpstat/count/abceffgh/abceffgh.js^$script +||cdn.discordapp.com/attachments/916391647955279943/*^$all +||sideload.net^$doc +||stc.tools^$doc +||stcverify.com^$doc +||1980s.click^$doc +ziperto.com,installcracks.com,maliksofts.com,crackpropc.com,ayeshapc.com,trycracksoftware.com,organiccrack.com,procrackkey.co,up4pc.com,crackdownload.org,corecrack.com,shanpc.com,torrentfilefree.com,patchcracks.com,newproductkey.com,osproductkey.com,serialkeysfree.org,autocracking.com,greencracks.com,profullversion.com,crackswall.com,rootcracks.org,idmcrackeys.com,crackedhere.com,licensekeysfree.org,assadpc.com,thecrackbox.com,crackproductkey.com,keystool.com,crackedpcs.com,cracksmad.com,licensekeyup.com,chcracked.com,finalcracked.com,activatorpros.com,crackedmod.com,cracksoon.com,boxcracked.com,crackedsoftpc.com,proapkcrack.com,softscracked.com,freeappstorepc.com,usecracked.com,crackedversion.com,aryancrack.com,fultech.org,cracksray.com,pcwarezbox.com,cracksmat.com,startcrack.co,crackbros.com,pcfullversion.com,bypassapp.com,fileserial.com,pc4download.com,freeprocrack.org,upcrack.org,topkeygen.com,crackproduct.com,downloadpirate.com,combpc.pro##center > [class*="buttonPress-"] +lewdgames.to,warezcrack.net,freeprosoftz.com,scracked.com,cyberspc.com,crackintopc.com,crackshere.com,crackdj.com,cracktopc.com,serialsofts.com,zscracked.com,topkeygen.com,procrackerz.com,pcfullcrack.org,downloadcracker.com,piratesfile.com,activatorwin.com,crackproduct.com,crackcan.com,crackit.org,seeratpc.com,activators4windows.com,letcracks.com,latestcracked.com,fullversionforever.com,vlsoft.net,topcracked.com,goharpc.com,freecrackdownload.com,assadpc.com,crackpcsoft.net,excrack.com,mahcrack.com,get4pcs.com,mycrackfree.com,cracksdat.com,licensekeysfree.com,freecrack4u.com,getintomac.net,crackreview.com,activatorskey.com,kuyhaa.cc,cracksmat.com,crackbros.com,pcfullversion.com,game-repack.site,dodi-repacks.download,getpcsofts.net,keystool.com,rootcracks.org,newproductkey.com,greencracks.com,macfiles.org,softzspot.com,hdlicense.org,spaxmedia.net,licensedkey.co,crackedmac.com,getprocrack.net,patchcracks.com,installcracks.com,softwarance.com,hitproversion.com,cracktube.net,abbaspc.net,keygenstore.com,pcfull.net,sjcrack.com,nkcrack.com,filepuma.org,pcsoftsfull.org,licenselink.info##div[class^="code-block code-block-"] +crackkits.com,procrackerz.com,haxmac.cc,cracka2zsoft.com,crackpropc.com,onhax.in,haxpc.net,pcfullcrack.org,karancrack.com##.getox +productkeyfree.org,productkeyforfree.com,wazusoft.com,piratesfile.com,kalicrack.com,sadeempc.com,letcracks.com,topkeygen.com,thepiratecity.co,torrentmac.net,ryuugames.com,pesktop.com,profullversion.com,crackswall.com,proappcrack.com,thecrackbox.com,autocracking.com,zgamespc.com,serialkeysfree.org,torrentfilefree.com,crack11.com,gvnvh.net,pccrackbox.com,pcwarezbox.net,4howcrack.com,softserialkey.com,productkeys.org,crackedsoft.org,licensekeyup.com,activationkey.org,serialkeypatch.org,freeappstorepc.com,crackpro.org##center > a[target="_blank"][rel="nofollow noreferrer noopener"] +cracksoftwaress.net##div[style="float: none; margin:10px 0 10px 0; text-align:center;"] +haxnode.net##[id^="haxno-"] +romsdl.net##a[rel="nofollow noreferrer noopener"][target="_blank"] +zuketcreation.net##.cente-1 +onhax.in,igetintopc.info##[class*="buttonPress-"] +kalicrack.com##center > .button-container:has(> #directDownload) +cracka2zsoft.com,ayeshapc.com,trycracksoftware.com,trycracksetup.com,9to5crack.com,crackmak.com,yasir-252.net##center > a +cracksmid.com##div[style=""] > center > center +||xforce-cracks.com^$doc +||fileisready.com^$doc +||sustac.com^$all +||hostt.link^$doc +||ncracked.com^$doc +||fullsetup.click^$doc +||fullsetup.pro^$doc +||akashopc.info^$doc +||techblogs.cc^$doc +||up-community.wiki^$doc +||serialsoft.org^$doc +||getprocrack.net^$doc +||crackdo.online^$doc +||upcommunity.click^$doc +.click/track/*?title=*&key=$doc,to=click +||crackingpatching.com^$doc +||patchedfiles.com^$doc +||filexstorage.site^$all +||worshippers.store^$all +||readyf1.click^$all +||filefindme.xyz^$all +||host9.link^$all +||sonvupload.xyz^$all +||hostingfile.live^$all +||modesoft.org^$all +||mysoftiloria.shop^$all +||yeahmylol.sbs^$all +||tostatess.icu^$all +||softdownloadgithub.icu^$all +||newgitgerto.xyz^$all +||gitfrominstall.com^$all +||instagitkbs.sbs^$all +.click/?s=*&g=*&q=files.zip$doc +.click/*?s=*&g=*&q=$script,3p +.click/?h=*&user=$script,3p +.click/?user=*&h=$script,3p +.click/*/?partner=*&pg=$script,3p +.xyz/*?s=*&g=*&q=$script,3p +.xyz/?h=*&user=45$script,3p +.xyz/*/?partner=*&pg=$script,3p +.cfd/*?s=*&g=*&q=$script,3p +.cfd/?h=*&user=$script,3p +.cfd/?aD*HlwZT1jJnRtcD01JmFkY29kZT0x$script,3p +.cfd/*?p=*&pg=$script,3p +.one/?h=*&user=$script,3p +.info/?h=*&user=$script,3p +.online/?h=*&user=$script,3p +.pro/?h=*&user=$script,3p +.site/?h=*&user=$script,3p +.store/?h=*&user=$script,3p +.shop/?h=*&user=$script,3p +.icu/?h=*&user=$script,3p +.net/?h=*&user=$script,3p +%3C?php%20echo%20substr(md5(microtime()),0,rand(10,30));?%3E&$doc +/?*&gkss=$doc,to=cfd|click|pro|world|xyz +^click_id=*&s1=$doc +.com/casino?registration=1&cid=$doc +||cfd/file?ajk=$doc,popup +||cfd/mnllcontent-$popup +||theannoyingsite.com^$all +/vpnupdate/*/index.html?*p1=$doc +||smartklick.biz^$all +/bouncy.php?*&inPopUp=$all +||sale24-pills.com^$doc +||fullcrack.vn^$all +/rtbfeed.php?$image,3p +!#if !env_mobile +/^http:\/\/[a-z]{5}\.[a-z]{5}\.com\/[a-z]{10}\.apk$/$doc,match-case,to=com +!#endif +||fetishpartner.com^$all +||facevideosc.com^$all +/?c=propeller&lpid=$all +||geoflix.me^$all +||skymods.net^$all +! torrdroidforpc. com +||tinyurl.com/setup-full-version$doc +||haxsoft.com^$all +||nbsfmradio.com^$all +||ngazi.co.tz^$all +||video-watch1.com^$all +||neptunclicks.com^ +||imgfil.com^$all +||urlcod.com^$all +||tiurll.com^$all +||urlca.com^$all +||psfmi.com^$all +||mciun.com^$all +/axad/?lpkey=$doc +&t=main9|$doc,to=live +&t=main9ljs|$doc,to=live +&t=main9expsess|$doc,to=live +&t=mono|$doc,to=info +! Fake Steam website +||99box.com^$all +||watchadsfree.com^$all +||barlear.ru^$all +! Phishing gathered from Twitter +||3utilities.com^$all +||bafybeidzp4sgidm4rvsc32fofkhbz5bdotbekov4mnwzejakvnzhhohysa.ipfs.dweb.link^$all +.top/index-install.html|$doc +||r39-g003-h8ig0w-u8f0we8-fgw0rgf-0we880e-rhgth.obs.ap-southeast-2.myhuaweicloud.com^$all +||bafybeiexjty7qmufu5jvbyln5ce5mue2lqw2htafc3api4wwsefxet5k54.ipfs.dweb.link^$all +||chargerlogistics-dot-exceldocsverification.uk.r.appspot.com^$all +||bizerba-dot-azure-projectfiles.uk.r.appspot.com^$all +||italianlottery.com^$all +||007itshop.com^$all +||e-tax-nta.web.app^$all +||blisterlngdate.com^$all +||fapello.xyz^$all +||bavaria-cup.ru^$all +||honda-law-office.jp/wp-includes/70038/Earthcorejp/|$doc +||itsaol.com^$all +||qhigh.com^$all +||almostmy.com^$all +||erdfkhxrnanm.top^$all +||ev.ri-*gb.com^$doc,to=~evri.com +||sapjp.com^$doc +||toythieves.com^$all +||rigidconcrete.ca^$all +||sportslevels.com^$all +||cqjykj.com^$all +||btemgb.com^$all +||ec2-13-230-253-66.ap-northeast-1.compute.amazonaws.com^$all +||lcskincarecenter.com^$all +||trustwallct.cc^$all +||modii.xyz^$doc +||promotkc.cc^$doc +||amazonaws.com/tk/wl/tk_2025*.apk$doc +||app.kamlno.network^$doc +||macclear.com^$doc +://account.booking.xn--$doc +||pichk.myqcloud.com^$doc +||gooqlee.com^$all +||jsdajp.click^$all +||jsda-check.com^$all +||appvip-download.cc^$all +||riseecore.site^$all +||hcstore.vip^$all +||arzaeterna.com^$all +||lixbngx.top^$all +||ublcz.cn^$all +||ads.twitter.center^$all +||divibase.xyz^$all +||lincolnforestlakeproject.com^$all +||safeageplan.link^$all +||safe-device.com^$all +||fanbox.help^$all +||meetu.usd1.party^$doc +||fanbox.autos^$all +! scam sites +||webuzz.me^$doc +||coup-ling.net^$all +||gokinjolove.jp^$all +||gokinjolove.net^$all +||hornygirlsinapp.com^$all +||10un.jp^$doc +||3tuhabe.info^$doc +||5dgja.com^$doc +||8senjya.jp^$doc +||ad7mylo.com^$doc +||aiai-talk.com^$doc +||aiaitalk.com^$doc +||alicekdsod.com^$doc +||best-chat.net^$doc +||bestxchat.net^$doc +||car-na.jp^$doc +||ch3l.net^$doc +||chl3.net^$doc +||date-app.net^$doc +||di-ana.jp^$doc +||dosukoudo.net^$doc +||drct-match.com^$doc +||drct-match.net^$doc +||dydynight.org^$doc +||en-mu-su-bi.com^$doc +||fapp.work^$doc +||formatch.co.jp^$doc +||fortune-fate.jp^$doc +||fortune-koun.jp^$doc +||fortune-luna.com^$doc +||g6-gonight.org^$doc +||gabfbnaqodnvfafnj.com^$doc +||girls.a-makeup.com^$doc +||goldenluck.jp^$doc +||happy468.net^$doc +||hi-a-so-bi.net^$doc +||himatalk77.net^$doc +||hope-for-shiningday.com^$doc +||hori-hori.xyz^$doc +||hp-dy.net^$doc +||hphp-dy.net^$doc +||i.redi-ana.jp^$doc +||i2019.jp^$doc +||irie3.net^$doc +||ivy2241u.jp^$doc +||jamjamjam.biz^$doc +||k-colorful.jp^$doc +||k1wa.jp^$doc +||koiroom.net^$doc +||koiroomnotice.net^$doc +||koun-yogen.com^$doc +||l0vekatsu.com^$doc +||lightn5.com^$doc +||lin-link.net^$doc +||link-service.net^$doc +||love-fit.jp^$doc +||love-letter-dm.com^$doc +||love-letter.info^$doc +||loveaholics.com^$doc +||lovemelo.jp^$doc +||luuce.jp^$doc +||machi-match.info^$doc +||madnna.jp^$doc +||madnna.net^$doc +||mangogo.jp^$doc +||mangogo.work^$doc +||match-mate.jp^$doc +||match-mate.net^$doc +||matimati.site^$doc +||maytail.jp^$doc +||meguri-eye.net^$doc +||meguri-y.net^$doc +||moody-night.net^$doc +||my7love.xyz^$doc +||navi-match.net^$doc +||near-s.com^$doc +||on-glamour.xyz^$doc +||one-chan-love.love^$doc +||onega.jp^$doc +||onegaga.jp^$doc +||otonanona.jp^$doc +||otonatime.net^$doc +||oyasu-mi.tokyo^$doc +||piasukai.xyz^$doc +||plati-num.com^$doc +||pr0m.site^$doc +||privatelife.jp^$doc +||r30address.com^$doc +||r30deai.com^$doc +||reverita-t.jp^$doc +||ripiai.com^$doc +||romancetime.jp^$doc +||romancetrain.jp^$doc +||royalclass-dm.com^$doc +||royalclass.info^$doc +||s4fk.destin0.jp^$doc +||salon1999.net^$doc +||salonoshirase.net^$doc +||sns-pair.net^$doc +||space-high.com^$doc +||spirilp3000.com^$doc +||spirituallounge-3000.com^$doc +||sugarboxxx.net^$doc +||sugulove.com^$doc +||sweetmemo.net^$doc +||sweetmemoryy.com^$doc +||t1a.jp^$doc +||tadaapo123.com^$doc +||tadaapomail.com^$doc +||tadamatch.com^$doc +||tumalabo.net^$doc +||u3ig.com^$doc +||vanilla-japan.net^$doc +||verita-t.jp^$doc +||jivo-ce.jp^$doc +||2226wurpatw.tokyo^$doc +||asiansgetnaughty.com^$doc +||blackstunners.com^$doc +||eternal.mobius-loop.net^$doc +||fukuinnnokotoba.com^$doc +||localsgowild.com^$doc +||naughtyfever.com^$doc +||tenseikaiun.com^$doc +||secure-57v.pages.dev^$all +||slb3cr9dx9.jp^$doc +||sukui05.com^$doc +||chocochipu-o.com^$doc +||facebooc.jp^$doc +||gtir5die6sutngr.jpn.com^$doc +||happiness-gate.com^$doc +||iikanjiyanakanjide.wixsite.com^$doc +||makoto-in-room.wixsite.com^$doc +||moira-101.com^$doc +||nitr5eur6fjhtsw.jpn.com^$doc +||okai.work^$doc +||pdss3a1r.jp^$doc +||toki-no-irodori.com^$doc +||tomodachixoxo.wixsite.com^$doc +||ukokjxfbdqwffmuvsd.jp^$doc +||vf5rkgirsir8ska.jpn.com^$doc +||vitop7eg5sqwgbk.jpn.com^$doc +||vixii.co^$doc +||wishhoree1890.com^$doc +||xs5rur1she7eyry.jpn.com^$doc +||57zyazmk.jp^$doc +||a.tlineat.jp^$doc +||be-loaded.com^$doc +||doorway-of-guidance.com^$doc +||ed-blissful.com^$doc +||eika-akie220202.com^$doc +||ev-upstart.com^$doc +||fortune-mooon.com^$doc +||ft-flower.com^$doc +||fukugyou2022.net^$doc +||fukunoha211013.com^$doc +||fukura210317.com^$doc +||future-marvellous.com^$doc +||gogonews.club^$doc +||iflirts.com^$doc +||im-excellent.com^$doc +||kaaairoo549kai.com^$doc +||karinaroom.wixsite.com^$doc +||l-chat.jp^$doc +||login-chat.net^$doc +||mintiia.com^$doc +||mio-love2.wixsite.com^$doc +||moon-1light.com^$doc +||moon1234moom.com^$doc +||mystery-forest.com^$doc +||oficialinesp.wixsite.com^$doc +||p-chi.info^$doc +||pairpure.jp^$doc +||pairpure.jp.net^$doc +||poke10ve.com^$doc +||relifemail555.com^$doc +||s-kiseki.jp^$doc +||sebumu28.com^$doc +||sevensmooon.com^$doc +||tada10ve.jp^$doc +||tada1ove.com^$doc +||take.the.n-chapter.jp^$doc +||ultratime.info^$doc +||v-yummy.com^$doc +||vroom24.com^$doc +||vroom24365.com^$doc +||wmw.matchin.jp^$doc +||world.ex-advantage.jp^$doc +||xxa.uji8979erd77.jp^$doc +||y-tradie.com^$doc +||best-web2020.com^$doc +||female-good.work^$doc +||foundate-core.net^$doc +||li-neeee.net^$doc +||make2022.com^$doc +||sbfw.work^$doc +||xxxmake.com^$doc +||1litteno.home-walil1.jp^$doc +||1st-mail.jp^$doc +||777.funnyy.net^$doc +||ai-ne.net^$doc +||ai-tas.com^$doc +||ai3tu.com^$doc +||alch.treas.jp^$doc +||amaenbo.jp^$doc +||amourplace.jp^$doc +||ancient-guidance.jp^$doc +||atchm.net^$doc +||cosdate.jp^$doc +||daisukimatch.jp^$doc +||defendeerrpro.jp^$doc +||diamond-line.net^$doc +||dinosaur-crown.com^$doc +||dreamatch.jp^$doc +||edge-campaign-japan.com^$doc +||equation-of-happiness.com^$doc +||eromatchi.jp^$doc +||fanta-stic.net^$doc +||flirt.com^$doc +||gyakusimei.com^$doc +||h-spe.net^$doc +||hapim.net^$doc +||happy-egg.net^$doc +||happylife-partner.com^$doc +||heartmatch.jp^$doc +||japanhotties.jp^$doc +||jdoasjfojuhod.com^$doc +||koipara.jp^$doc +||lib-333-lib.com^$doc +||local-bang.com^$all +||lovewish.jp^$doc +||lvmeet.net^$doc +||machimatch.jp^$doc +||matchmix.jp^$doc +||mmdem.net^$doc +||mmkat.net^$doc +||mmlnc.net^$doc +||moelove.jp^$doc +||myocean.jp^$doc +||nakayama.chikarakosopower.com^$doc +||netsgram.com^$doc +||nextaex.com^$doc +||otakuplay.jp^$doc +||otakurabu.jp^$doc +||p18d6.hp.peraichi.com^$doc +||pairnavipairnavi.com^$doc +||pakok.net^$doc +||paradise-angel.com^$doc +||peachzone.site^$doc +||plaza-l1o0nni-p1aza.com^$doc +||ptron.net^$doc +||ranch-1and.com^$doc +||richheart.completelifetime.com^$doc +||sfsrch.com^$doc +||sokuh.net^$doc +||sonic-nicehands.com^$doc +||specialapp-sns.com^$doc +||stowers-service.com^$doc +||sxtown.jp^$doc +||syakoba.com^$doc +||upforit.com^$doc +||votteetten.com^$doc +||vqydliiyda.net^$doc +||xn--4dkua4c8143c.jp^$doc +||xn--edkc9m807k.jp^$doc +||xn--n8j0la8wb3547bghe.jp^$doc +||xn--n8jwkyc7fw52nfvd.jp^$doc +||xn--z9j635l1gs.jp^$doc +||xn--z9jzga6u1506a.jp^$doc +||you4love.jp^$doc +||zmaka.net^$doc +||0281.jp^$doc +||0909810.com^$doc +||093093.jp^$doc +||11093.jp^$doc +||19093.jp^$doc +||2349.jp^$doc +||2h1.jp^$doc +||39093.net^$doc +||39093.tv^$doc +||4151.biz^$doc +||4151.tv^$doc +||55093.com^$doc +||55bdsm.com^$doc +||aeru.tv^$doc +||affairdating.com^$doc +||aitai.biz^$doc +||amantssexy.com^$doc +||askme4date.com^$doc +||b-7.jp^$doc +||babaroa.net^$doc +||bbs-7.jp^$doc +||bbsdx.jp^$doc +||benbbs.net^$doc +||bnbn.jp^$doc +||c-y.jp^$doc +||celcol.jp^$doc +||celebri.jp^$doc +||chy.jp^$doc +||cjok.net^$doc +||crostol.com^$doc +||datenabi.com^$doc +||doem.jp^$doc +||ebifri.com^$doc +||eraberu.jp^$doc +||erocm.com^$doc +||flirtanu.com^$doc +||flirtmoms.com^$doc +||freedom-garden.com^$doc +||freesexmatch.com^$doc +||geh.jp^$doc +||getnaughty.com^$doc +||gofun.jp^$doc +||gspo.jp^$doc +||guj.jp^$doc +||guw.jp^$doc +||h093.net^$doc +||hipma.jp^$doc +||hmai.jp^$doc +||hmhm.jp^$doc +||hoct.cc^$doc +||hxh.jp^$doc +||igetnaughty.com^$doc +||irha.jp^$doc +||jnjn.jp^$doc +||jukcha.com^$doc +||jukuana.net^$doc +||jyk.jp^$doc +||kadak.jp^$doc +||kanbbs.net^$doc +||kokanjo.net^$doc +||koubi.jp^$doc +||koy.jp^$doc +||ksds.jp^$doc +||linblog.info^$doc +||linguette.net^$doc +||locals.dating^$doc +||loveju.net^$doc +||mamak.jp^$doc +||matchx2.com^$doc +||meetdatekiss.com^$doc +||meetpie.net^$doc +||mejp.net^$doc +||mgirl.jp^$doc +||mland.jp^$doc +||mmnav.jp^$doc +||moecoco.com^$doc +||mymymy.net^$doc +||naughtydate.com^$doc +||newhoney.jp^$doc +||nuide.net^$doc +||oneisan.net^$doc +||oolontya.com^$doc +||pair-pair.com^$doc +||panacota.net^$doc +||piparelli.net^$doc +||pirikitos.com^$doc +||pmew.jp^$doc +||pnav.jp^$doc +||quickflirt.com^$doc +||ricopin.com^$doc +||scnv.jp^$doc +||serev.net^$doc +||sfg.jp^$doc +||sfge.jp^$doc +||singles50.jp^$doc +||smab.jp^$doc +||smism.jp^$doc +||smmax.jp^$doc +||soha.jp^$doc +||sok8.net^$doc +||stomatico.com^$doc +||suguaitaina.com^$doc +||suguao.net^$doc +||sumatuma.com^$doc +||sxe.jp^$doc +||syasei.com^$doc +||tapi2.jp^$doc +||tarto.net^$doc +||tendermeetonline.com^$doc +||tendermeets.com^$doc +||tinql.com^$doc +||together.com^$doc +||maturedating.com^$doc +||topg.jp^$doc +||tubakinohimitsu.amebaownd.com^$doc +||tugonoyoi.com^$doc +||twowife.com^$doc +||txtx.jp^$doc +||ulla.com^$doc +||uniformdating.com^$doc +||wantubad.com^$doc +||wildmeets.com^$doc +||xgal.jp^$doc +||xzo.jp^$doc +||yceleb.com^$doc +||yourskiss.com^$doc +||life-is-luminous.com^$doc +||00ebjdbagyqwt.club^$doc +||0didjsgheje.club^$doc +||after-7.net^$doc +||aikatuz.jp^$doc +||always-happy-fortune.com^$doc +||alwayslike.safestspot.jp^$doc +||apppleheaddd.jp^$doc +||browser9182.web.fc2.com^$doc +||catchmetalk.com^$doc +||charecttorr.jp^$doc +||charm-n.com^$doc +||chesscheckersvariation.com^$doc +||club-house.link^$doc +||cocoro-liberty.com^$doc +||every-blanched.com^$doc +||every-dark.com^$doc +||every-enjoy.com^$doc +||every-salmon.com^$doc +||febdd.info^$doc +||fortune-yakata.com^$doc +||gnan.jp^$doc +||gnchag.com^$doc +||gran-danker.jp^$doc +||gyakunan.net^$doc +||igazre.com^$doc +||mamagathering.org^$doc +||mc-aoyama.com^$doc +||miracle-door.com^$doc +||okanekasegeru.com^$doc +||online-777.jp^$doc +||p-mel.net^$doc +||part-ner01.jp^$doc +||peachcafe.net^$doc +||poison-idea.com^$doc +||polaris-775.com^$doc +||rosaca-nina.net^$doc +||s-space.jp^$doc +||spiritual-leading.com^$doc +||sugusagasu.com^$doc +||sukui01.com^$doc +||sukui02.com^$doc +||sukui03.com^$doc +||sukui04.com^$doc +||sukuinote.jp^$doc +||sumsmsp.info^$doc +||szddbxyumfcf.net^$doc +||telet.me^$doc +||tomikuji.com^$doc +||ugfdwmausxfy.net^$doc +||web.fe-vrier.com^$doc +||whpbrmdss.com^$doc +||wkdk.jp^$doc +||dwoetbarcrooplsloiwh.com^$doc +||lets-tip315.com^$doc +||loveri.net^$doc +||lvli.jp^$doc +||m2sg.jp^$doc +||mamasg.net^$doc +||mcbien.net^$doc +||sgua.jp^$doc +||spilov.net^$doc +||splv.jp^$doc +||suguap.net^$doc +||vien.jp^$doc +||eternal-station.jp^$doc +||msg.metamessen.net^$doc +||o-cean-fortune.biz^$doc +||o-cean-fortune.com^$doc +||secondary-with.com^$doc +||fure-ai.com^$doc +||rea-love.net^$doc +||natu.natural-natural-pure.com^$doc +||celezma.net^$doc +||loveru.jp^$doc +||t1amo.jp^$doc +||pair-seat.net^$doc +||pairseat.net^$doc +||sez.jp^$doc +||kira-kira.blue^$doc +||p-chi.tech^$doc +||vanilla-japan.love^$doc +||jtybleua.jp^$doc +||mai-tel.jp^$doc +||sfc.bz^$doc +||sfget.jp^$doc +||download-campaign.com^$doc +||fine-cloud.net^$doc +||float-next.com^$doc +||matomenever.com^$doc +||mid-round.com^$doc +||otonanojikan13579.net^$doc +||up-loop.net^$doc +||videochat-fan.com^$doc +||mamamour.net^$doc +||2chlovers.web.fc2.com^$doc +||lovez.jp^$doc +||moremorelove.net^$doc +||after-noon.jp^$doc +||chatchu.jp^$doc +||cupid-chat.net^$doc +||nanroom.net^$doc +||nowtuma.net^$doc +||pastelism02.jpn.com^$doc +||wifekai.net^$doc +||zerocha.jp^$doc +||chat-search.com^$doc +||hhh.u3se3jg3gae.com^$doc +||lmoox5.net^$doc +||hn-mizuki.com^$doc +||urara02032023.com^$doc +||gloria-divination.$doc +||otomachi.jp^$doc +! ||amazonlogistics.jp^$all +||fukusenkan.com^$doc +||koi-chat.net^$doc +||sachikru.com^$doc +||sachikru1.com^$doc +||sachikru3.com^$doc +||sachikru4.com^$doc +||sachikru5.com^$doc +||sachikru7.com^$doc +||sachikru8.com^$doc +||koundayori.com^$doc +||kokocha.site^$doc +||dedestin0.jp^$doc +||legamee.jp^$doc +||miraiah.jp^$doc +||sen8senjya.jp^$doc +||fukuroou.jp^$doc +||7wbb.com^$doc +||recruit-gold.com^$doc +||spiritual-jp.com^$doc +||xdpiwrx7ub.net^$doc +||go-ld-li-ne.site^$doc +||gold-line.online^$doc +||cloudmax.jp^$doc +||mamakatu42.blogspot.com^$doc +||vivian.jp.net^$doc +||cha-nce.net^$doc +||mirusiru.online^$doc +||mobileverify.net^$doc +||grabgiftcard.net^$doc +||kounnomichishirube.net^$doc +||lucksignpost0804.org^$doc +||lightning02s.com^$doc +||lightning0707.com^$doc +||silversex.com^$doc +||flirttime.com^$doc +||ma-rry.net^$doc +||ma-rry.site^$doc +||altdorfer-niklaus.com^$doc +||lucky-star8.com^$doc +||koinik.net^$doc +||yurizono.com^$doc +||the-match.jp^$doc +||gtex3.com^$doc +||nice.par-even.com^$doc +||pr-0m.link^$doc +||wa-nago-wagona.com^$doc +||chi-yo-1807chiyo.com^$doc +||globalreward77.com^$doc +||jukukoi.jp^$doc +||jukukoi.me^$doc +||lovely-lovely.com^$doc +||shareno1wish.net^$doc +||d-position.com^$doc +||d-position.shop^$doc +||kaiunnookite.com^$doc +||bs-03-6743-2266.net^$doc +||love2-mail.com^$doc +||gokinjoscreen.com^$doc +||koun-wa.com^$doc +||mariage-inc.com^$doc +||tenmei-michibiki.com^$doc +||a1tai7.jp^$doc +||atchao.jp^$doc +||bestchat-chat.com^$doc +||brs.bi09aso-yo.xyz^$doc +||brs.vacat81-best.tokyo^$doc +||chu-chu.jp^$doc +||enenkatukatumail.com^$doc +||enjoylife2001.net^$doc +||ffr548tyfhe.jp^$doc +||k0k0cha.link^$doc +||ir0d0r1.jp^$doc +||lovemelo.net^$doc +||ma-t-chy.link^$doc +||maiwa12.jp^$doc +||mat-chy.site^$doc +||me08mo.com^$doc +||meltiest.jp^$doc +||meltylove.jp^$doc +||mem44.com^$doc +||merukore.jp^$doc +||moremoremail.net^$doc +||p-pure.jp^$doc +||p0cket1ove.jp^$doc +||p0rte.site^$doc +||pairife.jp^$doc +||platinumpla2023.com^$doc +||riarialuvluv2023.com^$doc +||romance-time.net^$doc +||sez-pr.com^$doc +||soklove.net^$doc +||sugulove777.com^$doc +||ta1kcall.site^$doc +||tada-love.jp^$doc +||tokimekitaine.net^$doc +||tokimekimaildesu.net^$doc +||tokumeichat135.net^$doc +||tokumeichatmail.net^$doc +||tsumatsuma.xyz^$doc +||olive-ft.jp^$doc +||az-l.com^$doc +||sm-bt.net^$doc +||sm-heaven.com^$doc +||smdotcom.com^$doc +||seselagi.com^$doc +||recipe000.tokyo^$doc +||ado.wish-best.com^$doc +||keiunkan.com^$doc +||pc.mt3sys.com^$doc +||as25ap.com^$doc +||asap15.com^$doc +||sm8787.com^$doc +||keenchimairaanthem.com^$doc +||ccappu-ccinno.com^$doc +||ccappuccinno.com^$doc +||daddyclub.net^$doc +||papamagic.net^$doc +||hoshi-no-michibiki.com^$doc +||hoshi-no-michibiki.jp^$doc +||miracle.magic-connect.net^$doc +||million-vita128.com^$doc +||eb-nav.com^$doc +||global-riward77.com^$doc +||essence-one.net^$doc +||himegoto-time.com^$doc +||himegoto-time.jp^$doc +||happiness-app.net^$doc +||matching364.com^$doc +||pktbuu.morau.top^$doc +||blackknocckk.jp^$doc +||finelucckyy.jp^$doc +||nokiseitjnemnew.jp^$doc +||vi.violleet.com^$doc +||gg.garrnnet.com^$doc +||fl.floriittee.com^$doc +||ll.liberrttyy.com^$doc +||6kk2a4t.com^$doc +||eujsiyajep.niigata.jp^$doc +||success-dream.jp^$doc +||lovetwipaco.com^$doc +||sharesharemail.net^$doc +||high-incomes.com^$doc +||line-channel-info.com^$doc +||line-special-information.com^$doc +||safety-line-message.com^$doc +||secure-line-network.com^$doc +||side-joblp.com^$doc +||71l0b.com^$doc +||everydaykennsyou.com^$doc +||king-sweepstakes.com^$doc +||qaghoz.com^$doc +||resort-life7.com^$doc +||mmnn.jp^$doc +||mamatech.pepper.jp^$doc +||manpuku-ja.com^$doc +||manpuku-ja.jp^$doc +||ms-lounge.net^$doc +||sm-sl.net^$doc +||meltsweetbite.com^$doc +||ce0oil1ibu.com^$doc +||ezg-iy.com^$doc +||hjr-wq.com^$doc +||olt-nw.com^$doc +||iinfssspoipo.com^$doc +||mugen-online.com^$doc +||layer-pj.com^$doc +||du0.jp^$doc +||hapinet.net^$doc +||kiseki.com^$doc +||ka73-urara.club^$doc +||uraaka.net^$doc +||peraichi.com/landing_pages/view/s8j8k/$doc +||gmatch.jp^$doc +||majiainc.com^$doc +||meet-up.jp^$doc +||n43vr.com^$doc +||qf6tm5ug.com^$doc +||candycandypop.com^$doc +||showa-klub.com^$doc +||yy4rhgzd.com^$doc +||colorfulromance.com^$doc +||gmatch.jp^$doc +||blue-uranai.com^$doc +||bm-bluemoon.com^$doc +||kinun-777.com^$doc +||kousenkan.com^$doc +||aikotoba2020.com^$doc +||ainokotoba1515.com^$doc +||yunekon2taxiy.jp^$doc +||midnighteaparty.com^$doc +||nav1.jp^$doc +||gamojinsegesegeas.com^$doc +||ml.ml.wawahrsdfrhfsdfh.com^$doc +||up.ch3m1stry.com^$doc +||wawahrsdfrhfsdfh.com^$doc +||hoshiyomi-yakata.com^$doc +||hoshiyomi-yakata.jp^$doc +||mimiray-k.jp^$doc +||miray-k.jp^$doc +||luna-ria.jp^$doc +||msiv5.com^$doc +||free-ren.jp^$doc +||free-ren.com^$doc +||fortune-crystal.com^$doc +||fab-inst.com^$doc +||ai-mono.jp^$doc +||again-agreement.com^$doc +||birth-bravery.com^$doc +||desk-dictionary.com^$doc +||event-experiment.com^$doc +||final-future.com^$doc +||ai-referee.com^$doc +||hfykmfd1.com^$doc +||lien-lienam.com^$doc +||rune-luna-moon.com^$doc +||ombrewa.space^$doc +||chosentalladvanced.com^$doc +||methodsbillboardssurface.com^$doc +||li-ke-lo-ve.com^$doc +||like-love.net^$doc +||m-eteor.com^$doc +||m-eteor.shop^$doc +||b-cdn.net/human-verify-system.html$doc +||b-cdn.net/verify-captcha-$doc +||r2.dev/human-verify-system.html$doc +||yy8j.com^$doc +||reductioncarnival.com^$doc +||cheri-sh.jp^$doc +||cheri-sh.net^$doc +||e-c.tokyo^$doc +||iroha-oran24.com^$doc +||jp.rian-rian.com^$doc +||kaigan-kaiun-fortune.com^$doc +||rokuseikantei.com^$doc +||match-member.com^$doc +||tu-tu.jp^$doc +||vip-salon.net^$doc +||j9q8dmk6.com^$doc +||kas6mjgmxhn5.com^$doc +||zjjgbuiy.com^$doc +||jkoi.jp^$doc +||light678o.fun^$doc +||bacchuss.net^$doc +||sg1first-syspro.jp^$doc +||ssgalaxy-sysgold.jp^$doc +||foryouswk.jp^$doc +||herebyintentionally.com^$doc +||m-ateria.com^$doc +||hhll.app^$doc +||l-partner.jp^$doc +||lpartner.jp^$doc +||peace-77place.com^$doc +||peach-next.info^$doc +||profileclub.info^$doc +||freeshot.info^$doc +||orga29.com^$doc +||the-latest-version.com^$doc +||book234h.fun^$doc +||litlink.site^$doc +||nyancokuji.xyz^$doc +||star789h.fun^$doc +||g5chat.com^$doc +||matchtap.site^$doc +||call-chieftain.com^$doc +||deep-dealings.com^$doc +||easy-elation.com^$doc +||u-to--u.com^$doc +||u-to-u.com^$doc +||u--to-u.com^$doc +||aibeautia1.jp^$doc +||loto7-diamond-club.com^$doc +||lotochance.hp.peraichi.com^$doc +||lotochance-vip.com^$doc +||scrutinizeordealscrutinize.com^$doc +||story-story.life^$doc +||mcdonal.fujicandy-balibalione.net^$doc +||soul-of-compass.com^$doc +||e-manager-kanri.com^$doc +||info-top-letter.com^$doc +||noi9va4ewa.com^$doc +||thanksgift-special.com^$doc +||mailtherapyask.com^$doc +||xs525890.xsrv.jp^$doc +||echi-echi-time.org^$all +||f-fri.com^$doc +||f-fri.net^$doc +||active-achieve.com^$doc +||awesome-meeting.jp^$doc +||basic-bank.com^$doc +||chief-child.com^$doc +||deliver-departure.com^$doc +||tour375.com^$doc +||trr59rrt.com^$doc +||akuto23.com^$doc +||ntc69oia.com^$doc +||rken104.com^$doc +||rkn71nkr.com^$doc +||o-rakuenn.com^$doc +||honeyline.co.jp^$doc +||honeyline.net^$doc +||l-senior.com^$doc +||lovevoice.net^$doc +||image-play.net^$doc +||bijinkadan.com^$doc +||9888.st^$doc +||6969-chat.tv^$doc +||1919-chat.tv^$doc +||acttas.com^$doc +||luvmee.com^$doc +||luvmlp.com^$doc +||luvmsite.com^$doc +||matchxxx.jp^$doc +||getma.tech^$doc +||matchzzz.jp^$doc +||uly-sses8888.com^$doc +||another2020.net^$doc +||colorone.jp^$doc +||yoitoki.jp^$doc +||play.google.com/store/apps/details?id=com.ola.yoitoki^$doc +||tenkeifa.com^$doc +||tenkeiya.com^$doc +||tenkeiza.com^$doc +||loto-4x.com^$doc +||epicpotec.com^$doc +||nxishctcjccry.com^$doc +||daily-description.com^$doc +||divine.alegria-verte.com^$doc +||jolly.treasure-pleasure.com^$doc +||reveur-voyance.jp^$doc +||destinyholy.net^$doc +||fortune-moon.net^$doc +||irene-fortuna.com^$doc +||sws.smart-brain555.com^$doc +||baby-match.com^$doc +||play.google.com/store/apps/details?id=com.juku_para^$doc +||opportunityforeigntoward.com^$doc +||dressedunlessround.com^$doc +||roundopportunityunless.com^$doc +||coc-gov.com^$doc +||michiakari.com^$doc +||michiakagi.com^$doc +||michiakaza.com^$doc +||momentary.link^$doc +||bitgetnextlevel666.com^$doc +||fukucenter.com^$doc +||destined-meeting.com^$doc +||luminous-encounter.com^$doc +||luminous-encounter.biz^$doc +||luminous-encounter.info^$doc +||luminous-encounter.net^$doc +||luminous-encounter.org^$doc +||teninorashinban.com^$doc +||sub.astroline.today^$doc +||ant.spica-telescope.com^$doc +||amazing.mirage-road.com^$doc +||aeru365.jp^$doc +||k0ikana.com^$doc +||b-withyou.com^$doc +||w1thy0u.com^$doc +||yuriyuri-yurayura.com^$doc +||celestica-premium.com^$doc +||gbg.ty2s-pqv7.com^$doc +||pgk.te1p-a4ir.com^$doc +||uid.pmi4-g8sd.com^$doc +||akgi45sas.jp^$doc +||dfr.bubu88yjt.jp^$doc +||g5h.gfd7414uytr.jp^$doc +||sed.kjh69sa99.jp^$doc +||wse.yts248ds.jp^$doc +||abc.luxe5321.com^$doc +||kaiun-blue.com^$doc +||mn-meiun.com^$doc +||kaiunraw.com^$doc +||msx.hope-321d.com^$doc +||mantra-7-teach.net^$doc +||mantra-7teaching.com^$doc +||mantra-7.net^$doc +||mantra-7teach.com^$doc +||mantra7.net^$doc +||mantra77.jp^$doc +||icha-kurakura.biz^$doc +||p67-kuku4e.xyz^$doc +||free-community.club^$doc +||hm99-free7apo.gift^$doc +||tadaapo.gift^$doc +||tadadeai.weebly.com^$doc +||play.google.com/store/apps/details?id=gift.tadaapo.tadadeai&$doc +||improveyourhand.online^$doc +||irrigation085.com^$doc +||atlier-ad.jp^$doc +||atelier-goo.com^$doc +||atelier-goo.net^$doc +||atelier-happiness.co.jp^$doc +||atelier-hp.jp^$doc +||atelier-post.com^$doc +||atelier-post.net^$doc +||atelier-s2.com^$doc +||atelier-s2.net^$doc +||atelier-tokyo.net^$doc +||atelier-toukyo.com^$doc +||atelier-www.com^$doc +||atelier-www.net^$doc +||chloe-77le.com^$doc +||jyuku-kan.tokyo^$doc +||deq.frt-87rtyt1.jp^$doc +||ytk.jra-ikkr.jp^$doc +||last-love.com^$doc +||tada-mail.com^$doc +||tada-mail.net^$doc +||soltp1de.user.webaccel.jp^$doc +||play.google.com/store/apps/details?id=com.tadamailmatching.app^$doc +||tadade-navi.com^$doc +||plus-x4-alpha.com^$doc +||lovee-idol.tokyo^$doc +||high-loveit.com^$doc +||lot.luck-fortune.com^$doc +||deal-defeat.com^$doc +||bhtuukgrerzjmchn.com^$doc +||av-master.org^$all +||together2night.com^$doc +||dmlqidmx8frkz90.ywufsjhc4.jp^$doc +||pairing0-0.net^$doc +||pairingmailmail.com^$doc +||areallrea.com^$doc +||arealrea.com^$doc +||rearealrea.com^$doc +||nontymontylle.jp^$doc +||brilliant.ohana-pilina.com^$doc +||pinehollow-glade.com^$doc +||tg525.com^$doc +||ins7ki.com^$doc +||linez7820.com^$doc +||jp84434.com^$doc +||ghtzqkwm.sbs^$doc +||pfj.anbilip4.com^$doc +||ap.appl-er.com^$doc +||hougen-talk.com^$doc +||honeytalkgroup.com^$doc +||tomodachiproject.com^$doc +||official.treasure-fan.com^$doc +||jump-hi-quality55.com^$doc +||jump-hi-quality77.com^$doc +||sparkle-sparkle.net^$doc +||spiritual-stargate.com^$doc +||spiritual-stargate.jp^$doc +||spiritual-stargate.net^$doc +||stargate-spiritual.com^$doc +||stargate-spiritual.net^$doc +||starrgate-sp.net^$doc +||starrgate.co.jp^$doc +||barian-therd.com^$doc +||fantasia-menard.com^$doc +||ofyou-beautiful.com^$doc +||saro-nelmng.com^$doc +||soijoy-sence.com^$doc +||success-bloom.com^$doc +||vortex-comger.com^$doc +||official.step-up-line.com^$doc +||smatch-love.app^$doc +||tr53vs.com^$doc +||mihayume.com^$doc +||lvrc.jp^$doc +||nogruptexn.com^$doc +||ralphclothing-jp.com^$doc +||abuse-faint.com^$doc +||champion-place77.com^$doc +||grand-minor.com^$doc +||pouch-rider.com^$doc +||route-since.com^$doc +||inspirationwillingviagiant.com^$doc +||8yy-ca-w-i9-z.com^$doc +||r-a3-jk-xyh-d.com^$doc +||zp-gzs2-yts-a.com^$doc +||net.redroses.top^$doc +||sdnlq.site^$doc +||sdnlt.site^$doc +||sdnlx.site^$doc +||zs.peachparadise.vip^$doc +||alex-kor.com^$doc +||xaysjypt.com^$doc +||kimikoi8.com^$doc +||l0ve-zer0.com^$doc +||zer0-l0ve.com^$doc +||belongirreplaceabletwice.com^$doc +||unableirreplaceablegaze.com^$doc +||yr-root.com^$doc +||mightembarrassedlaw.com^$doc +||lustsexloveclub.vip^$doc +||passionsex.vip^$doc +||brillante-etoile.com^$doc +||lamp-keeper-tomori.com^$doc +||journey-of-truth.com^$doc +||cf67ahu-mkooh.com^$doc +||kikon-match.co.jp^$doc +||pure-ppre-r.com^$doc +||dasikmonnb9.sbs^$doc +||jjiu3sqw.sbs^$doc +||kardon-rsa.com^$doc +||kvgp201er.sbs^$doc +||osjdd4d.sbs^$doc +||w0sqoketsl.sbs^$doc +||glitter-2025.com^$doc +||alor1-j6g2t.com^$doc +||ik-v60jh3j.com^$doc +||mn6q-6tw4h.com^$doc +||phm-2g.com^$doc +||r9-2an.com^$doc +||coupletime2525.com^$doc +||aaxr.shop^$doc +||rosarios.cloud^$doc +||sefrail.com^$doc +||tsukiyomian.com^$doc +||jukuen-club.com^$doc +||yoloo-jp.com^$doc +||yoloo-official.zendesk.com^$doc +||lottery37-fct.com^$doc +||fortuneletter.com^$doc +||fortuneqr-letter.com^$doc +||lucky-letter.com^$doc +||typicallydiscrimination.com^$doc +||amoredate.com^$doc +||friend-match.net^$doc +||sanka.fun^$doc +||www.black-magic.jp^$doc +||www.onmyo.jp^$doc +||www.spiritualheal.net^$doc +||www.urami.net^$doc +||www.whitemagic.jp^$doc +||tadakyun.jp^$doc +||tadakyun.net^$doc +||tadaqyun.net^$doc +||5187.jp^$doc +||587.jp^$doc +||app-aplell.com^$doc +||u65erdf-gre.com^$doc +||gentete.com^$doc +||fine-days.net^$doc +||abjp6579.tokyo^$doc +||sukebeisu.com^$doc +||can2025.click^$doc +||do2512.com^$doc +||ot2512.com^$doc +||pc2512.com^$doc +||w-chat25.com^$doc +||wewe.web-chatgptt.com^$doc +||cpa.8na4zpze.com^$doc +||linelife.home-chat.jp^$doc +||remote-jp.jp^$doc +||pairs-jp.karakuri.ai^$doc +||abxchzpgqdvoahrbzk.com^$doc +||bkxdlsivyfsjapsokq.com^$doc +||cszavakjlvtlhojrui.com^$doc +||go2go.bkxdlsivyfsjapsokq.com^$doc +||kyrmtjxzbdzszrrkgt.com^$doc +||your.happy-strike.com^$doc +||any864jagged53.com^$doc +||attack-stance321.com^$doc +||castle384before12.com^$doc +||disk-redial.com^$doc +||halt789-enraged1.com^$doc +||nicely888wooden222.com^$doc +||lancerjp.com^$doc +||indeedlikewise-342.com^$doc +||shredgadzooks-428.com^$doc +||spacha2026.com^$doc +||whetherprovided-485.com^$doc +||whilegadzooks-242.com^$doc +||7clover.net^$doc +||7leaf-clover.net^$doc +||clover-seven.com^$doc +||dragomquesi.com^$doc +||pairry.jp^$doc +||qole-oracle.jp^$doc +||aurorra-fortune.com^$doc +||aurorra.net^$doc +||beckoning-whitecat.com^$doc +||juku-ai-club.com^$doc +||juku-ai-club.fun^$doc +||juku-ai-club.pics^$doc +||jp24tv.live^$all +||0spot.online^$doc +||lovespot.online^$doc +||assetmalnutrition.com^$doc +||ballet-bandage.com^$doc +||beloved.noemi-mia.com^$doc +||boundarynight.com^$doc +||caller-calculus.com^$doc +||chatoxygen.com^$doc +||dangle-daring.com^$doc +||earnest-economist.com^$doc +||faintly-fairness.com^$doc +||habitantvillage.com^$doc +||ignorezest.net^$doc +||color10color.com^$doc +||color10color.jp^$doc +||elegance-love.net^$doc +||elegance.spryest.com^$doc +||sabito.kamadonezuko.com^$doc +||fortune-gate-open.com^$doc +||kibou-no-hane.com^$doc +||z52r-hm7c3-e8qx.com^$doc +||riundoor.com^$doc +||supirichua.com^$doc +||zeroclu6.com^$doc +||njkgrwk-37hgw.com^$doc +||esrzqibdfpah-xeb.com^$doc +||xcvk.connectiamay-naat.com^$doc +||fanforus.com^$doc +||nhqueen.com^$doc +||asiavibe.com^$doc +||callyourdate.com^$doc +||japansdates.com^$doc +||kikon-link.com^$doc +||air-look-send.com^$doc +||air-we4.com^$doc +||care-rtu.com^$doc +||yus-air.com^$doc +||anatomicallylaborer.com^$doc +||anthemlazy.com^$doc +||approximatelylimitation.com^$doc +||capricious-chosen.com^$doc +||cowardprotest.com^$doc +||externalsuffice.com^$doc +||fervortactic.com^$doc +||forever.luna-malina.com^$doc +||fortunatetransformation.com^$doc +||fragranttransport.com^$doc +||hypocrisyyard.com^$doc +||michibiki-mori.com^$doc +||rainbow-road.com^$doc +||ritz-club.net^$doc +||sakura-fund.com^$doc +||m.midamarkets.cc^$doc +||mpy.thesun-messa.com^$doc +||sukimadate.com^$doc +||dating4lover.com^$doc +||datewhirl.com^$doc +||meetheage.com^$doc +||miaromance.com^$doc +||wingtalks.com^$doc +||shinpisaido.com^$doc +||suzuri.jp/kinunhado^$doc +||tokujiro.base.shop^$doc +||tokujirou.stores.jp^$doc +||uranai1111.base.shop^$doc +||youtube.com/@kinun-ryujin^$doc +||youtube.com/@kinunhadou^$doc +||youtube.com/@ryujin_miko^$doc +||youtube.com/@tokujiro7kinun^$doc +||youtube.com/@%E7%99%BD%E8%9B%87%E5%BC%81%E8%B2%A1%E5%A4%A9%E7%A5%9E%E5%B7%AB^$doc +||youtube.com/@%E9%87%91%E9%81%8B%E5%BC%81%E8%B2%A1%E5%A4%A9^$doc +||lvluvlabo.jp^$doc +||luvlabo.jp^$doc +||revju.jp^$doc +||yumemoba.jp^$doc +||hapiapplp.com^$doc +||happylapp.com^$doc +||k-cobain.com^$doc +||lilac-fortune.com^$doc +||senshinsu.com^$doc +||sonshinus.com^$doc +||etrna.jp^$doc +||permanan.com^$doc +||rebetrna.jp^$doc +||lux-the-destiny.com^$doc +||misstooth456central.com^$doc +||whitenoise554popular.com^$doc +||worldwide012mental.com^$doc +||plan-smlp.com^$doc +||fortune-dojo.com^$doc +||fortunedojo.net^$doc +||kaiun-dojo.com^$doc +||ogamiya.info^$doc +||ogamiya.stores.jp^$doc +||ballot-vivid.com^$doc +||build-exert.com^$doc +||caress-fussy.com^$doc +||decade-orbit.com^$doc +||exceed-curio.com^$doc +||fable-smile.com^$doc +||glad-uplifting.com^$doc +||grace-achieve.jp^$doc +||inborn-awash.com^$doc +||namely-evoke.com^$doc +||nimble-synth.com^$doc +||ethics-whisk.com^$doc +||please-zebra.com^$doc +||rating-shave.com^$doc +||saving-guard.com^$doc +||k1nd-talk.com^$doc +||m1xm1x-real.com^$doc +||mixmix-real.com^$doc +||matchingitv.com^$doc +||ialoop.net^$doc +||amo.topescort.jp^$doc +||swlife.jp^$doc +||i.meetu.best^$doc +||kokoai-deai.com^$doc +||kokokaradeai.com^$doc +||ukacclmza.net^$doc +||uranaikan.com^$doc +||amamorimo.com^$doc +||amanerino.com^$doc +||amanolimo.com^$doc +||amemorino.com^$doc +||kiseki-hakoniwa.com^$doc +||lucky-garden.net^$doc +||luckys-garden.com^$doc +||kotoanata.jp^$doc +||unlepre.jp^$doc +||ars73ars.com^$doc +||coco-dream.com^$doc +||coco-dream.net^$doc +||coco-yume.com^$doc +||togen-utopia.com^$doc +||brs.miteau.com^$doc +||miruau.com^$doc +||miteau.net^$doc +||zettaiau.com^$doc +||play.google.com/store/apps/details?id=com.miruau^$doc +||ten-zaru.com^$doc +||heart-1ink.com^$doc +||gansenri.com^$doc +||gensenli.com^$doc +||gomsanri.com^$doc +||senganri.com^$doc +||musubi-net.com^$doc +||loto-lab0.com^$doc +||0120999900.net^$doc +||angel-talk.jp^$doc +||hentai-p.club^$doc +||voice-actress.jp^$doc +||m-lotosystems.com^$doc +||8219.mobi^$doc +||honeytalk.com^$doc +||phonesex-maturelady.com^$doc +||pictomo.net^$doc +||smalove.com^$doc +||koi.koi-palette.com^$doc +||accessaccent.com^$doc +||blenderbakery.com^$doc +||cheerfulcharity.com^$doc +||developdestiny.com^$doc +||enjoyepisode.com^$doc +||forestfortress.com^$doc +||pairsvip.jp^$doc +||paters.club^$doc +||xy58.jp^$doc +||izerokoi.jp^$doc +||zerokoi.jp$doc +||giftia.club^$doc +||privage.club^$doc +||arrow-fortune.com^$doc +||kinun-birthday.com^$doc +||linesys.jp^$doc +||taihoumon.com^$doc +||matchingclub.jp^$doc +||eternal-love.net^$doc +||ccd-15846.com^$doc +||onceinalifetimemeeting.com^$doc +||scolor.jp^$doc +||mirioea.com^$doc +||sma-lita.site^$doc +||thrive-invest.jp^$doc +||viewer-howdy.com^$doc +||convey-pluck.com^$doc +||friend-gather.com^$doc +||hercules-progress.jp^$doc +||prompt-abusive.com^$doc +||happiness-cats.com^$doc +||happiness-cats.net^$doc +||shiawase-cat.com^$doc +||otoromachat.com^$doc +||bulkbreeding.com^$doc +||disciplineavarice.com^$doc +||champion.kiitos-kiitoksia.com^$doc +||latterantithesis.com^$doc +||webogram.ru^$all +||xn--80affa3aj0al.xn--80asehdb^$all +||telegr.am/user_mgt/login$all +||tgram.ru^$all +||telegramm.site^$all +||web-telegram.net^$all +||anapatformacion.org/modules/file/tor/tor-browser.zip^$all +||a-new86.com^$all +||koi2ru.com^$all +||room2021.net^$all +||roomoshirase.net^$all +||smore91.net^$all +||touchoshirase.net^$all +||touchtacchi.net^$all +||wswsnews.net^$all +||s3.amazonaws.com/extpro/speed4.html$all +! techsupport scam +/?{BV_SRCID}&$doc +/werrx01/^$doc +/merrx01/^$doc +||ondigitalocean.app/*^phone=+1-$doc +||plesk.page/*?phone=$doc +/W*ity0*00Er00*/index.$doc +||s3.ap-northeast-1.amazonaws.com/tedex.com/*/index.html$all +||smarttvnew.vercel.app^$all +/systemerror-mac/?$doc +/Win0SecurityEr0CH0700Err0rSt/index.html$doc +/werrx01/index.html$doc +||activexsportswear.com^$all +||besttreasurecoastroofing.com^$all +||eharmonysingle.online^$all +||errorordufhwe.s3.ap-south-1.amazonaws.com^$all +||s3.ap-northeast-2.amazonaws.com/%*!!%*/index.html$doc +||s3.amazonaws.com/securityfotrus.1.13/index.html$all +||s3.eu-west-2.amazonaws.com/675.88.u6.8878/index.html$all +||s3.us-west-1.amazonaws.com/security.uni.firewall.$all +/Win00Security07/index.html$doc +/Er0Wind0fsd0Security087/index.html$doc +||websafety.online^$all +||mct-niger.com^$all +||stb-media.xyz^$all +||theweddingmahotsav.com^$all +||hodllane.com^$all +||pushlandings.b-cdn.net^$all +||fastndio.s3.eu-central-1.amazonaws.com^$all +||pub-77106c9273be4f3fbec6b6d6c3c51b7f.r2.dev^$all +||s3.ap-northeast-1.amazonaws.com/ongoing.com/aanoitmessure/index.html^$all +||setkuttina.pages.dev^$all +||xbasugigqiuegiwqdbsx.s3.ap-northeast-1.amazonaws.com^$all +||uwqghwfdwqywetqwfghewqeqweig.s3.ap-southeast-2.amazonaws.com^$all +||fantastic-salamander-c721cb.netlify.app^$all +||ondigitalocean.app/*/index.php?cezp=$doc +||amazonaws.com/*.*.*.*.*.*.*.*/*/index*.html$doc +||germanytechsupport.pages.dev^$all +||systemsupport.pages.dev^$all +||techsupport-ev2.pages.dev^$all +||pub-3b4d978c14114185847089b100168c84.r2.dev^$all +||tingtang.pages.dev^$all +||tomtom.pages.dev^$all +||adolphusisomlycyou.pages.dev^$all +||blob.core.windows.net/$web/*index.html$doc +||windows.net/*?bcda=$doc +/index.html?ph0n=1-$doc +||technosoft35.ru^$all +||pages.dev/Wi0n0erAry0mpAlert048/$all +||netlify.app/errox01/?$all +||seishinyoga.com^$all +||microchromejapan.b-cdn.net^$all +/^https:\/\/[a-z]{16,}\.s3\.[-a-z]+1\.amazonaws\.com\/[a-z]{66,}(?:\/[a-z]{45})?\.html/$doc,match-case,to=amazonaws.com +/^https:\/\/[-a-z]{16,}\.z\d{2}\.web\.core\.windows\.net\/[a-z]{70,}(\/[a-z]{40,})?\.html/$doc,match-case,to=web.core.windows.net +||web.core.windows.net/?zpbid=$doc +||amplifyapp.com/Win*/index.html$doc +||windows.net/Win*/index.html$doc +||windows.net/Mac*/index.html$doc +||web.core.windows.net/chrmac/index.html$doc +||web.core.windows.net/macx/index.html$doc +/index.html?Aniph=1-$doc +/index.html?ph0nq=$doc +/?pnoorg=1^$doc +||multiyogaoffer.jp.net^$all +||childernplay.online^$all +||pc1968.onrender.com^$all +.com/link?z=$doc +||b-cdn.net/Mac*/?phone=$doc +||donghocotatan.com^$all +||goldendoghotel.com^$all +/^https:\/\/[a-z]{12,15}\.com\/\?p=[0-9a-f]{32}&u=[0-9a-f]{138}\b/$doc,match-case +/?ph0nq=1-$doc +/?ph0nq=+1-$doc +||web.core.windows.net/?_event=$doc +||pages.dev/ai2.mp3$doc +/Win08ShDMeEr0887x/*$doc +||storage.googleapis.com/my*server/*/index.html$doc +||canadacentral-01.azurewebsites.net/index1.html$doc +||windows.net/?tk=$doc +||windows.net/*/index.html?clickid=$doc +/index.html?Anph=$doc +||girlsmakeithard.monster^$all +||web.core.windows.net/?call=*&code=$doc +.amazonaws.com/*.*.*.*.*.*.denied/$doc,domain=amazonaws.com|github.io +/^https:\/\/[0-9a-z]{30,}\.s3\.[-a-z]+\d+\.backblazeb2\.com\/W[0-9A-Za-z]*in0[0-9A-Za-z]*Er0[0-9A-Za-z]*\/index\.html/$doc,match-case,domain=backblazeb2.com +||ondigitalocean.app/*/?bcda=$doc +||grootcam.shop^$all +||z13.web.core.windows.net/*/?clickid=$doc +||viruswarning*.web.core.windows.net^$all +://message1*.z13.web.core.windows.net^$doc +^Anph=(0101)-$doc +/^https:\/\/[a-z]{5,20}-[0-9a-z]{16}\.z03\.azurefd\.net\/[0-9A-Za-z]+0[0-9A-Za-z]+\/index\.html/$doc,match-case,domain=z03.azurefd.net +||azurefd.net/?bcda=$doc +?Kuph=1-$doc +!://main.d*.amplifyapp.com/?$doc +||ondigitalocean.app/Win0codejInfouycinfcode/$doc +ondigitalocean.app##body#mycanvas.map[style="cursor:none"] +||pages.dev/*/Fm7-alert.wav +||pages.dev/*/ai2.mp3 +||pages.dev/*_Fm7-alert.mp3 +||pages.dev/0wa0rni0ng0.mp3 +||pages.dev/al1.mp3 +||pages.dev/yaketsuku.mp3 +||pages.dev/esc.js +||pages.dev/fulls.js +||pages.dev/fullscreen.js +||pages.dev/media/alert.mp3 +||pages.dev/nvidia.js +||pages.dev/js/esc.js +||pages.dev/js/flscn.js +||pages.dev/js/nvidia.js +||pages.dev/jupiter.js +||pages.dev/noir.js +||pages.dev/*/alertmicrosoft.mp3 +||pages.dev/webs.mp4 +||r2.dev/_Fm7-alert.mp3 +||r2.dev/media/_Fm7-alert.mp3 +||windows.net/*/bxsafe.js +||windows.net*/esc.js +||windows.net/*/flscn.js +||windows.net/js/jsd1.js +||windows.net/js/jsd2.js +||windows.net/*/jupiter.js +||windows.net/*/noir.js +||windows.net/*/nvidia.js +||windows.net/media/beep.mp3 +||windows.net/*/media/beep.mp3 +||windows.net/*_Fm7-alert.mp3 +||windows.net/js/fulls.js +||windows.net/media/yaketsuku.mp3 +||b-cdn.net/jupiter.js +||b-cdn.net/noir.js +||b-cdn.net/nvidia.js +||windows.net/js/customone.js +||windows.net/js/customtwo.js +||windows.net/media/apked.mp4 +.online/js/esc.js +.online/js/flscn.js +.online/js/full.js +.online/js/mouse.js +.online/js/muse.js +.online/js/noir.js +.online/js/script2.js +.online/js/script3.js +.online/js/script5.js +.online/js/script6.js +.online/js/script7.js +.online/media/webs.mp4 +.xyz/js/esc.js +.xyz/js/noir.js +||amplifyapp.com/*/js/esc.js +||amplifyapp.com/*/js/flscn.js +||core.windows.net/takashi.mp3 +||core.windows.net/yaketsuku.mp3 +||core.windows.net/haruto.js +||core.windows.net/itsuki.js +||core.windows.net*/js/leave.js +||core.windows.net*/js/mouse.js +||core.windows.net*/js/fuscn.js +||core.windows.net/media/chrm.mp3 +||core.windows.net/js/full.js +||core.windows.net/media/webs.mp4 +||core.windows.net/js/lvs.js +||core.windows.net/js/muse.js +||core.windows.net/js/script2.js +||core.windows.net/js/script3.js +||core.windows.net/js/script5.js +||core.windows.net/js/script6.js +||core.windows.net/js/script7.js +||core.windows.net/*/js/js5.js +||core.windows.net/*/js/js6.js +||core.windows.net/crypto-js.min.js +||ipwho.is^$xhr,domain=web.core.windows.net +||web.core.windows.net/beep.mp3 +||web.core.windows.net/eng.mp3 +||voicesforsocialjustice.store/hotjar.php +||web.core.windows.net/media/ados.mp3 +||web.core.windows.net/media/msc.mp3 +||vercel.app/js/esc.js +||vercel.app/js/flscn.js +||storage.googleapis.com/*/media/webs.mp4 +||storage.googleapis.com/*/esc.js +||storage.googleapis.com/*/full.js +||storage.googleapis.com/*/lvs.js +||storage.googleapis.com/*/mouse.js +||storage.googleapis.com/*/muse.js +||storage.googleapis.com/*/noir.js +||storage.googleapis.com/*/script2.js +||storage.googleapis.com/*/script3.js +||storage.googleapis.com/*/script5.js +||storage.googleapis.com/*/script6.js +||storage.googleapis.com/*/script7.js +||azurewebsites.net/alertmicrosoft.mp3 +||azureedge.net/*/esc.js +||azureedge.net/*/flscn.js +/text_tel.js$domain=app|dev|fit|me|page|site|github.io +||netlify.app/text.js|$1p +||github.io/my-new-app/text.js$1p +/a0ler0tm0s.mp3$domain=dev|online|shop +||github.io/iossupport/$doc +||web.core.windows.net/vault/stack-vendor.mp3 +||github.io/*/js/esc.js +||github.io/*/js/flscn.js +||github.io/*/media/beep.mp3 +||azurefd.net/media/beep.mp3 +||azurefd.net/fullscreen.js +||azurefd.net/js/esc.js +||azurefd.net/js/flscn.js +||azurefd.net/js/customone.js +||azurefd.net/js/customtwo.js +||azurefd.net/media/msc.mp3 +||amazonaws.com/_Fm7-alert.mp3 +||on-forge.com/win*/alert-en.wav +z13.web.core.windows.net##+js(aeld, DOMContentLoaded, fullscreenEnabled) +! ClickFix +/^https:\/\/[0-9a-z]{4}\.[a-z]{15,}\.monster\/\?[0-9a-f]{16,}$/$doc +!#if env_safari +/^https:\/\/[0-9a-z][0-9a-z][0-9a-z][0-9a-z]\.[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]+\.monster\/\?[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/$doc +!#endif +/api.php?s=*&_v=$script +/api.php?k=*&d=$xhr,redirect=noop.txt +||authorization-cdn-press-enter.info^ +monster###bw-rc-host[style="position: fixed !important; inset: 0px !important; z-index: 2147483647 !important;"] +.monster/index*.php?flow_id=$doc +||cracksway.com^$all +||gamingdebates.com^$all +||bonzi.link^$all +||pccdirect.site^$all +||templatesearch.org^$all +||f-i-n-d.onlyfuns.win^$all +||search-journal.onlyfuns.win^$all +||ftx.onlyfuns.win^$all +||adultpics.wiki^$all +||gamefabrique.com^$all +||d2r3dgsh5nr4kg.cloudfront.net/installer/$all +||mopiez.com^$all +.com/api/users*^pii=&in=false^$doc +.com/api/users*^in=false&pii=$doc +.com/api/users*^in=false&token=$doc +.com/bot-captcha-1?h=$doc +/^https:\/\/[a-z]{5,7}\.[0-9a-z]{12}\.top\/[0-9a-f]{32}\/[0-9-a-f]{32}\/$/$doc,match-case,to=top +/\/[0-9a-f]{32}\/maq\/$/$doc,match-case,to=com|top +/antivirus/main/cleaner-default/*$doc +! Copycat and fake sites +! FitGirl Repacks - Official site: fitgirl-repacks.site +||fitgirl-repack.*^$all,domain=~fitgirl-repacks.site +||fitgirlrepacks.*^$all,domain=~fitgirl-repacks.site +||fitgirlrepack.*^$all,domain=~fitgirl-repacks.site +||fitgirls-repack.*^$all,domain=~fitgirl-repacks.site +||fitgirl-repacks-site.org^$doc,domain=~fitgirl-repacks.site +!#if ext_ubol +||fitgirl-repacks.$doc,frame,xhr,script,css,to=~fitgirl-repacks.site +!#else +||fitgirl-repacks.$all,from=~fitgirl-repacks.site,to=~fitgirl-repacks.site +!#endif +||fitgirl.cc^$all,domain=~fitgirl-repacks.site +||fitgirlrepackz.*^$all,domain=~fitgirl-repacks.site +||fitgirltorrent.*^$all,domain=~fitgirl-repacks.site +! Magisk manager - Official site: https://github.com/topjohnwu/Magisk +||magiskmanager.com^$all +||magisk.me^$all +||magiskapp.com^$all +||magiskroot.com^$all +||magiskroot.net^$all +||magisks.com^$all +||themagisk.com^$all +||magiskzip.*^$all,domain=~magiskzip.com,to=~magiskzip.com +||magiskmodule.com^$all +! LibreTube - Official site: libretube.dev +||libretube.*^$all,domain=~libretube.dev,to=~libretube.dev +||libretubeapk.com^$all,domain=~libretube.dev +! ReVanced - Official site: revanced.app +||revanced.$all,from=~revanced.app,to=~revanced.app +||revancedapk.$all,domain=~revanced.app +||revancedapp.$all,domain=~revanced.app +||ytvancedpro.com^$all,domain=~revanced.app +||youtubevanced.$all,domain=~revanced.app +||youtuberevanced.*^$all,domain=~revanced.app +||revancedyoutube.org^$all,domain=~revanced.app +||revancedextended.$all,domain=~revanced.app +||revanced-extended.com^$all,domain=~revanced.app +||ytrevanced.$all,domain=~revanced.app +||vanced-official.com^$all,domain=~revanced.app +||vanced.pro^$all,domain=~revanced.app +||vancedmanager.$all,domain=~revanced.app +||revancedapps.$all,domain=~revanced.app +! LuckyPatcher - Official site: luckypatchers.com +||luckypatcher.*^$all,domain=~luckypatchers.com +||luckypatchers.*^$all,domain=~luckypatchers.com,to=~luckypatchers.com +||luckypatcherwin.com^$all,domain=~luckypatchers.com +! Balena Etcher - Official site: etcher.balena.io +||etcher.net^$all,domain=~etcher.balena.io +||etcher.download^$all,domain=~etcher.balena.io +||balenaetcher.$all,domain=~etcher.balena.io +! Vencord - Official site: vencord.dev +! NewPipe - Official site: newpipe.net +||newpipe.*^$all,domain=~newpipe.net,to=~newpipe.net +! Z-Library - Official sites: singlelogin.se, singlelogin.re, z-library.se, zlibrary-global.se, go-to-zlibrary.se +||z-lib.io^$all +||z-lib.id^$all +||zlibrary.to^$all +||zlibrary-global.com^$all +||zlib-official.com^$all +! ProtonGE - Official site: https://github.com/GloriousEggroll/proton-ge-custom +||protonge.com^$all +! Bloxstrap - Official site: bloxstraplabs.com +||bloxstrap.*^$doc,domain=~bloxstraplabs.com,to=~bloxstrap.pizzaboxer.xyz +||s8bet.com^$doc +||imagebet.ph^$all +||googleeplay.com^$all +||mingvip.com^$all +||t89ll.com^$doc +||kbkb.bet^$doc +||04tips.com^$all +||cdn.jsdelivr.net/gh/cnmseo/LookMother$3p +||urjump.com^$doc +|http://playing.io/?inviteCode=1000631|$doc +|http://playing.io/?inviteCode=1000632|$doc +||ttt777.com^$doc +www.cambe.pr.gov.br##+js(noeval-if, tigervip2) +||newupdatesnow.com^$all +||thefinanceadvice.com^$all +||fralstamp-genglyric.icu^$all +||ets2.gr^$all +||chromegoogle.cn^$all +! Cryptocurrency Scams +||muskusa.com^$all +||sunperp.icu^$doc +||aster-dex.run^$doc +||optimism-lab.network^$doc +||stage3-last.$doc,to=~edu|~gov +||stage2024.$doc,to=~edu|~gov +||presale-friday.$doc,to=~edu|~gov +||sale-friday.$doc,to=~edu|~gov +||stage3sale.$doc,to=~edu|~gov +||stage3sale2024.$doc,to=~edu|~gov +||black-sales.$doc,to=~edu|~gov +! xai scams +||xaiofficial.ai^$all +||0x00000000000.substack.com^$all +||etharticles.substack.com^$all +||publicationgroup.substack.com^$all +||teamproject.substack.com^$all +||tradestrategy.substack.com^$all +||uniproject.substack.com^$all +||web3projects.substack.com^$all +||webpublic.substack.com^$all +||primeleech.com^$all +/cachingjs/settings.js +/cachingjs/turboturbo.js +/config?key=6922a2c8-d1e9-43be-b201-749543d28fe1 +/config?key=d35e161b-abb4-4949-b523-003165d250bb +||dns.google/resolve?name=*.host-stats.io&type=txt|$xhr,3p +||traveltraffic.cc^$all +||re-captha-version-$all +||valid-check-tl-$all +! http://teluguodu.com/om-bheem-bush-movie-review/ - example site +||psh-static.b-cdn.net^ +||check-tl-$all +||tech4u.app^$all +.com/?news&s|$popup +||cache.cloudswiftcdn.com^$all +||cdn.metricastats.com^$all +||cloud.edgerapidcdn.com^$all +||content.gorapidcdn.com^$all +||content.streamfastcdn.com^$all +||fast.quickcontentnetwork.com^$all +||ga.cdzanalytics.com^$all +||gll.metricaga.com^$all +||host.gsslcloud.com^$all +||metrics.gocloudmaps.com^$all +||secure.gdcstatic.com^$all +||secure.globalultracdn.com^$all +||static.rapidglobalorbit.com^$all +||synd.edgecdnc.com^$all +||syndication.gcdnanalytics.com^$all +||mygeomanager.org^$all +/^https:\/\/[a-z]{10,}\.[a-z]{3,4}\/(?:engine|track)-[a-f0-9]{8}\.js$/$script,3p,to=~edu|~gov,header=vary:/^referer\,accept-encoding/i +||vnote-*.myqcloud.com^$all +! phishing +||mymokki.ru^$all +||socgeneralist.firebaseapp.com^$all +||testra*-covid.weebly.com^$all +||telus.signup.clik2pay.com^$all +||mercado-livre.produtos.usacomment.com^$all +||bitkub.onrender.com^$all +||adguardvpnnew.biz^$all +||flow.page/foxhills.co.uk^$all +||jemi.so/correo-24-ar^$all +/^https:\/\/vietg[a-z]v[0-9]*\.cc\//$doc,to=cc +||codeanyapp.com/neta/*/pay-method.php$doc +||mybluehost.me/*Recibir_paquete.php$doc +||codeanyapp.com/klarna/$doc +||mybluehost.me/*/dir/ca/pay/$doc +||pub-*.r2.dev/gsecondcheck.html^$doc +||user.fm/files/*/AbsaOnlinePop.html^$doc +||user.fm/files/*/ProofOfPayment.HTML^$doc +/^https?:\/\/server\.[a-z0-9]{4}\.com\/invite\/\d+\b/$doc,match-case,to=com +/^https:\/\/[a-z0-9]{3,}\.[a-z]{8,10}\.ru\/[a-zA-Z0-9]{6,8}\/#[A-Z][a-z]{5,}@[a-z]+\.com$/$doc,match-case,to=ru +/t2dolalrwe/*$doc +##html[lang] > body:not([class]):not([id]):not([style]) > div.background-container > div.container > div.captcha-box +||melbournedistillery.com^$all +||koenig.cx^$all,to=~dropbox.com +||eden.com.mx/support/juno/$all +||emta-ee-authst.firebaseapp.com^$all +||firebaseapp.com/Autentimine^$doc +||dailyprizehub.com^$all +||singtelmyconnect.com^$all +/^https?:\/\/[a-z0-9]{6,7}\.lat\/[A-Z0-9]{5}$/$doc,match-case,to=lat +! viva sorte - https://vivasorteoficial.com.br/ +||viva-asorte.com^$all +||sorteiosbrasil.netlify.app^$all +! chase.com +||unclepigva.com^$all +||mywebsitetransfer.com/chase/auth^$doc +||gks-interiors.co.uk/js/ch.html$all +! ameli.fr +||fgt.ive.mybluehost.me^$doc +||mybluehost.me/*/Ameli/$doc +||rampostsouthafrican-*.codeanyapp.com^$all +||codeanyapp.com/southafrica/*/PAYU^$doc +! wetransfer +||vvetransfer-lo-web-online.glitch.me^$all +||vercel.app/magi/olde/saac-wetr-magi.html^$doc +||download-wetransfer-*.vercel.app^$doc +||specific-sample-orderline.vercel.app^$all +||purring-wood-magnolia.glitch.me^$all +||bingkasprogram-*.xdbng.com^$all +||multilocal-leboncoin.com^$all +! linkedin +||lnkdeka.standard.*.oortech.com^$doc +||oortech.com/loginfromSignIn.pdf-shtml^$doc +||decorartealuminios.com.br/*/AZ-ULTIMATE-LINKEDIN/$all +! yahoo +||pages.dev/account/js-reporting^$doc +||iwq.pages.dev^$all +||jss.pages.dev^$all +! webmail +||formspark.rongviet.com.vn^$all +||webmailrupdatekorea.firebaseapp.com^$all +||benpsignin-portal.webflow.io^$all +||mail-cytanet.pages.dev^$all +||webmailupdating.wixsite.com^$all +||bequettehomes.com/ahost/$all +/^https://[a-z]{40,}\.pages\.dev\//$doc,to=pages.dev +||resisted-amusing-driver.glitch.me^$all +||glitch.me/public/index_CNC.html^$doc +||r2.dev/Zimbra*.html^$doc +/\/accounts\/19[56]\d{3}\/messages\/\d{1,2}\/clicks\/\d{4,5}\/\d{1,2}\b/$doc,match-case +! webmail.bell.net +||bellsecuredloginfom-net.vercel.app^$all +||hootbio.com/bellmail$all +! webmail.shaw.ca +||shawupdatingservic.wixstudio.io^$all +||shawmailboxservice4.wixsite.com^$all +! ups.com +||mybluehost.me/Versan/UPS/$doc +||preprod.exclusifparis.com/modules/deleteordersfree/$all +! ee.co.uk +/^https:\/\/ee(?:-[a-z]{5,}){1,2}\.web\.app\//$doc,to=web.app|~ee.co.uk +/^https:\/\/ee(?:-[a-z]{5,}){1,2}\.firebaseapp\.com\//$doc,to=firebaseapp.com|~ee.co.uk +||my-ee-*.web.app^$doc +||ee-network.web.app^$all +||ee-billing-recovery.web.app^$all +||ee-payment-issue.web.app^$all +||my-ee-web.web.app^$all +||my-ee-details.web.app^$all +||my-info-ee.web.app^$all +||ee-payment-method-issue.firebaseapp.com^$all +||ee-pending-payment.firebaseapp.com^$all +! bpost.be +||pakket-bpost-be.web.app^$all +||crpostbelnk.glitch.me^$all +! intesasanpaolo.com +||mybluehost.me/*intesasanpaolo/$doc +||mybluehost.me/*/itx/it/conto/$doc +! jio +/\/recharge\d?\.(?:html|php)\?mobile=\d{10}\b/$doc,match-case,to=~jio.com|~edu|~gov +/offer.php?rechargenumber=$doc,to=~jio.com|~edu|~gov +/offer.html?rechargenumber=$doc,to=~jio.com|~edu|~gov +/\/offer\.(?:html|php)\?(?:mobile|rechargenumber)=\d{10}\b/$doc,match-case,to=~jio.com|~edu|~gov +! apple +||dbs.applerewardsstore.com^$all +||rbchidraulica.com.br/info/verify^$all +/isignesp.php^$doc,to=~edu|~gov|~apple.com +/icloud2022-esp.php^$doc,to=~edu|~gov|~apple.com +||apples-24x7-*.pages.dev^$doc +||apples-24x7-customer-help-line.pages.dev^$all +||apples-24x7-help.pages.dev^$all +||icloud.apple-*.cn^$doc +/^https?:\/\/icloud\.apple\.[a-z]{6,}\.[a-z]+/$doc,to=co|cn +! ourtime +||login-ourtime.members-datings.workers.dev^$all +||ourtime-assist.members-authenticated.workers.dev^$all +||chat.voice-datings.workers.dev^$all +||profile-ourtime.*.workers.dev^$doc +/^https:\/\/ourtime\.[a-z]+-[a-z]+\.workers\.dev\//$doc,to=workers.dev|~ourtime.com +||voice-ourtime.*.workers.dev^$doc +/^https:\/\/(?:[-a-z0-9]+\.){2}workers\.dev\/v3\/(?:forgotpassword|security|signup)\b/$doc,to=workers.dev +/\/wap\/api\/(?:activity\/)?[a-zA-Z]+![-_a-zA-Z]+\.action\?/$xhr,1p,strict1p,match-case +||wetching.ru^$doc,frame +! made-in-china.com +||griffithdds.com/*/madeinchina.com/$all +||oortech.com/mic.shtml^$doc +||r2.dev/made-in-china.com/$doc +! fedex +||e-serviceparts.info^$all +! booking.com +/^https:\/\/(?:[a-z]+\.)?hotel-(?:id)?\d{3,8}\.eu\//$doc,to=eu|~booking.com +/^https:\/\/(?:[a-z]+\.)?hotel-(?:id)?\d{3,8}\.com\//$doc,to=com|~booking.com +/^https:\/\/hotels-\d{6}\.eu\//$doc,to=eu|~booking.com +/^https:\/\/booking\.[a-z]{3,}-(?:id)?\d{3,8}\.eu\//$doc,to=eu|~booking.com +/^https:\/\/booking(-[a-z]{3,}){2}\.(?:baby|lat|lol|xyz)\//$doc,to=baby|lat|lol|xyz|~booking.com +||cardverify*-booking.com^$all +! airbnb +||air-bnb.check-$doc +||air.bnb-id*.com^$all,to=~airbnb.com +||navi-airbnb.vercel.app^$all +||property-rental-seven.vercel.app^$all +||airbnb-pi-three.vercel.app^$all +/^https?:\/\/([a-z]{4,}\.)?support-\d{1,2}\.ru\//$doc,to=ru +! labanquepostale +||group-postban.firebaseapp.com^$all +||oasisministries.com/fr/postale/$all +||lidarusa.com/*/Bpostale2022/$all +||plesk.page/*--_--$doc +||vantechdns.com/bpnew/$doc +||monamedia.net/CerticodePlus/DSP2/$doc +! adobe +||digitalprocurements.com^$all +||adobecloud5xpo.yolasite.com^$all +||socalthesyndicate.com/*/adobefud/$all +||pub-*.r2.dev/adobe2024.html^$doc +||adobepd*.glitch.me^$doc +||doc*-order*adobe.glitch.me^$doc +||glitch.me/adobe-auto*.html^$doc +||facture-free.com/Adobeverapdf/$all +||mytemp.website/safetyfileaccess.htm^$doc +! netflix +||vstergioul.sites.sch.gr^$all +||netflix.avdhoothadke.com^$all +||mybluehost.me/*/netflix/net/login.php$doc +||mybluehost.me/watch/a/flix/$doc +||ija.xwi.mybluehost.me^$all +||mybluehost.me/ntcz/$doc +||floridavacationrentalsbyowners.com/*/Info/page_settings/account.php^$all +||loginnetflixleiojfioje.blogspot.$all +||xsph.ru/*/netfi2k/$doc +||bulksms.services/*/NetFlxinc/$doc +||bulksms.services/NetFxs/$all +||cpanel12wh.bkk1.cloud.z.com^$all +||codeanyapp.com/NTFLX/$doc +! allegro +||allegro-reinigung.de^$all +||allegrolokalnie.pl-$doc +||allegrolokalnie.*.shop^$doc +! rackspace +||racks.pages.dev^$all +||rackweb-----support*.weebly.com^$all +! dana +||danakagetrsm.vercel.app^$all +||dana-indone*.id^$doc,to=my.id|web.id|~dana.id +! biz.id +-dna-log-*.biz.id^$doc,to=biz.id|~dana.id +! my.id +||pemesanan*.glowz.my.id^$doc +||claiim-hadiahh-danax-$all,to=~dana.id +! orange.fr +||orange53.yolasite.com^$all +||dev-7614646544.pantheonsite.io^$all +||smsmmsernorepls.wixsite.com^$all +||orange234.wixsite.com^$all +||exbtengineers.com/o/$all +||servicemailorange25.wixsite.com^$all +||assistancesosh.wixsite.com^$all +/or/.espace-.client/(;authentication.htm^$doc,to=~orange.fr +||tw1.ru/Orange/$doc +||messagerie*.godaddysites.com^$doc +||messagerie*.wixsite.com^$doc +||messagerie*.yolasite.com^$doc +||app.vision6.com/em/message/email/$all +||payer-ma-acture-*.mystrikingly.com^$all +||orange-connexion*.godaddysites.com^$all +! amazon +||amazon-*.shop^$doc +||amazon8898.com^$all +||ecommrce-web-amazon.netlify.app^$all +||etisalat-amazonprime.com^$all +||mybluehost.me/wp-admin/amz/$doc +||mytemp.website/amazon-prime-video-com-br/$doc +||adswip.com^$all +||cs-portalintranet.com/pf/$doc +||sites.google.com/mwhite55.appquestss.com/$doc +||orders-processed.com^$all +||reviewstudio.com/-/en/gp/mas/your-account/$doc +! ebay +||ebaydw.$all,to=ebaydw.cc|ebaydw.com +||pages.dev/errors/validateCaptcha^$doc +! alibaba +||hologramid.cn^$all +||jybelinda.com^$all +||vetsinthecity.me/*/Alibaba/$doc +||sanpelmaquinas.com.br^$all +||molekinha.com.br/*/alibaba.com/$doc +/alibaba.com/passport.alibaba.com/*$doc,to=~alibaba.com +! AT&T +||wixsite.com/att-support/$doc +||diwapa3051.wixsite.com^$all +||idhnochalter.wixsite.com^$all +||cajewar736.wixsite.com^$all +||loginaccount6.wixsite.com^$all +||ruthah9.wixsite.com^$all +||iirrrrrrii.wixsite.com^$all +||ewueuweudsjdjsdjjd.weeblysite.com^$all +||maiil-myatt.weeblysite.com^$all +||attvip.mx^$all +||olive121407.studio.site^$all +||at-t-admin.daftpage.com^$all +||keepo.io/loginatt/$all +||dlhessell.wixsite.com/att-support/$all +||bio.site/atttt^$all +||dones9.wixsite.com^$all +||alisongaudino992.wixsite.com^$all +||deenveerww.wixsite.com^$all +||att5h6.wixsite.com^$all +||attonlineservice*.wixstudio.com^$all +||wixstudio.io/mysiteattmail940940^$doc +||f.digital-*.com/igit/$doc +||currentlyatt*.weebly.com^$all +||currentlymail*.weebly.com^$all +||attmailservice*.weebly.com^$all +||att-currently-*.weeblysite.com^$all +||dropbox.com/*/AT-T-YAHOO-MAIL.paper^$doc +||2025*maintenance.weebly.com^$doc +||amazonaws.com/anydo-user-uploads/*_ATT_VoiceMail.html^$doc +||plum-binder-*.typedream.app^$doc +! BT +||boardband.univer.se^$all +||telegra.ph/British-Telecommunication-08-22^$all +||telegra.ph/BT-Business-Communications-$all +||dazzl.ink/btupdate/$all +! gov phishing site +||pttgov*.top^$doc,to=top|~ptt.gov.tr +||irstaxrefunds.$doc,to=~irs.gov +||gov.*.qpon^$all +! gov.gr +||aitimaforou.web.app^$all +! gov.vn +||dichvucong*.top^$all +! gov.au +||mygovaus-$doc,to=~my.gov.au +! gov.uk +||student-finance-auth.firebaseapp.com^$all +||casadosvidrosmt.com.br/wp-admin/csii/$all +||smartaromas.com/income-individual_service_tax-gg-check-hm/$all +||insolvency-development.co.uk^$all +||dwp-yous*.top^$doc +! impots.gouv.fr +||mybluehost.me/*/impo/$doc +||isz.bqv.mybluehost.me^$doc +||polufredsoa.2mydns.net^$all +||2mydns.net/fr-impot-gouv^$doc +/\.temporary\.site\/service\/[a-f0-9]{32}\//$doc,match-case,to=temporary.site|~impots.gouv.fr +||kkg.yaf.temporary.site^$doc +! amendes.gouv.fr +||antai-gouv-fr.troliga.sk^$all +||mybluehost.me/wp-content/12/*.php^$doc +||mybluehost.me/*/amendes.org/$doc +||amz.boy.mybluehost.me^$doc +||vmb.wvs.mybluehost.me^$doc +||mybluehost.me/*/amendes2024org/$doc +||kby.oqp.mybluehost.me^$doc +||vdv.oqp.mybluehost.me^$doc +||mybluehost.me/*/3dsec.php^$doc +||wcomhost.com/amendes-gouv/$doc +||wcomhost.com/impots-gouv/$doc +||impotsgouv.*.wcomhost.com^$doc +/am/*.php^$doc,to=arubabusiness.it|mybluehost.me|serv00.net|wcomhost.com|~amendes.gouv.fr +||fi/a/Amendes/*.php^$doc,to=fi|~amendes.gouv.fr +||fi/part/Amendes/*.php^$doc,to=fi|~amendes.gouv.fr +||odeal.fi/fr/AMA/*.php^$doc +||odeal.fi/amndes/*.php^$doc +||askozvar.sk/*/amendesgouv/$all +||codeanyapp.com/amendes/$doc +/12/infospage.php^$doc,to=~amendes.gouv.fr +/12/paiement.php^$doc,to=~amendes.gouv.fr +/12/3dsece.php^$doc,to=~amendes.gouv.fr +/12/3dsec.php^$doc,to=~amendes.gouv.fr +||iglawfirm.com/services/antai-fr/$doc,to=~amendes.gouv.fr +/\.codeanyapp\.com\/.+\/(?:3dsece?|infospage|paiement)\.php\b/$doc,match-case,to=codeanyapp.com|~amendes.gouv.fr +||codeanyapp.com/pr/rue/$doc +||amandes*.serv00.net^$doc +! id.me +||banque-online.com^$all +! bank +||chamsocthekhachhang-$doc,to=~edu|~gov|~edu.vn|~gov.vn +||uudaikhachhangthe-$doc,to=~edu|~gov|~edu.vn|~gov.vn +||conveyancingportal.com^$all +||bmoreferral.com^$all +||personas.devbam.com^$all +||amigosdelasfinanzas.com^$all +||anz.brandkit.io^$all +||moonlightproshop.com^$all +||nbtbank.architect-cert.fiservapps.com^$all +||douroweb.eu^$all +||gaoyinjiao.com^$all +||wester-union-u.vercel.app^$all +||vietcombank*.cfd^$all +/^https:\/\/tpbank\.[-a-z0-9]{5,}\.[a-z]{3}(?:\.vn)?\//$doc,to=~edu|~gov|~gov.vn|~tpb.vn +||ewp.live/*/pages/region.php^$doc +||glitch.me/*/nationwide^$doc +||mybluehost.me/ameli/$doc +/28kxhS^$doc,to=online|shop|top|~sberbank.ru +||xyz/akbank/$doc +/views/choice/*/start.php^$doc +||skylarkspb.ru/raiffeisentwint/$all +||hclsoftware.cloud/*/tdbanknotes^$all +/wp-content/ntww/natwest3/*.php^$doc,to=~natwest.com +^novobanco.pt-canais-digital/$doc,to=~novobanco.pt +^novobanco.pt-canais-digital-$doc,to=~novobanco.pt +||codeanyapp.com/Particuliers/$doc +||espace-documents-authsec-appmovil.codeanyapp.com^$doc +||ingresocancelacion.wixsite.com^$all +||wixsite.com/foliobanbajio$doc +||sunnysani.com/lb/$all +||caixa-login-banco-home-login-auth-h.codeanyapp.com^$all +||caixa-*.codeanyapp.com^$doc +||codeanyapp.com/Caixanow/$doc +||cashpro-online-prosollutlion.cc^$all +||easybank.abojo.dev^$all +! nickel.eu +||mybluehost.me/service/*/nkl-log.php$doc +||sviluppo.host/dl/NickelTru/$doc +||biblio.sviluppo.host^$doc +! dkb.de +||www-winbank-lfremhmida*.codeanyapp.com^$doc +||codeanyapp.com/*/DKB_new/$doc +||laurenmjackson.serv00.net^$doc +||serv00.net/*/dkb/$doc +! sparkasse.de +||sparkasse-oberhessen.info^$all +! itau.com.br +||itaconsorciodigital.com.br^$all +||supporthives.com/public/ita/$all +! hype.it +||freewebhostmost.com/DARKSIDE/hype/$doc +||td-online-carta.codeanyapp.com^$all +||codeanyapp.com/hype/$doc +! bancolombia +||e-cmv.ph^$all +||somosbancolombia.zeabur.app^$all +||bancolombiaapp.glitch.me^$all +||cancelaciondeseguros-*.azurewebsites.net^$doc +/paga-ofertas/bancolombia/*$doc +! Lloyds Bank +||lbg-calcs.vercel.app^$all +! hypovereinsbank.de +||gohvb-d634f.web.app^$all +||gohvb-*.web.app^$doc +! mbbank +/^https:\/\/mbdk\d+\.com\//$doc,to=com|~mbbank.com.vn +! bbva +||bbvaar.zeabur.app^$all +||programajourney.com^$all +||mybluehost.me/meke/cc/clients/$doc +! bancodevenezuela.com +||bdvenlinea*.pages.dev^$doc +||bdvenlineaconfirmate.pages.dev^$all +||bdvenlinea-banvenez-beram.pages.dev^$all +! shinhan +||sites.google.com/view/shinhan-fiinance/^$all +! americanexpress +||americanexpressempresas.com^$all +||r2.dev/blobamexbsatt.html^$doc +||amxprd.com^$doc +/wp-admin/user/americanexpresss-com-login-true-verify.$doc,to=~americanexpress.com +||hystove.com^$all +/tmp/vmo.html$doc +! santander +||recompensaszurichsantander.com.mx^$all +||santander.*.fino.digital^$all +||santander.cf.sandbox.motrada.ch^$all +||santanderpod.*.co.uk^$all +||webmo.fr/Fi/SP/PANKKI/*/auth/$doc +! DHL +||dhl.*.potabox.com^$doc +||dhl-event.app^$all +||ltlweight.trgr.me^$all +||dhlproductosyservicios.com^$all +||dhl-rpa-portal.infanion.com^$all +||sites.google.com/view/expressdhl^$all +||xn--d1aqfkf.xn--p1ai/bitrix/.../GlobalSources/$all +||app.farmaciadelmonestironline.com/SER/dnkdl/$all +||itmustbetime.com/content/uploads/products/china/china/index.php^$all +! uat.dhl-express-ppd.infanion.com +||dhl-express-ppd.infanion.com^$all +||elementor.cloud/*/ENGHUY645/$doc +||mybluehost.me/*/phpmailer/src/dh/$doc +||mtm.rnz.mybluehost.me^$doc +||mpinsureit.com^$doc +||goldsystem.com.br/amds/css/secure/dhlFR^$doc +||elementor.cloud/*/ESDHL/$doc +/tracking/fV5EjH/*.php^$doc,to=~dhl.com +||delivery-globaldhlauth.github.io^$all +||github.io/samedaydelivery/$doc +||myjobdhl.earcu.com^$all +||cere.network/*-dhlshipmailchecker.shtml^$doc +||myjobdhl.earcu.com^$all +! whatsapp +||play.funfourmob.com^$all +||fevertime.com/wasop/$all +||wathzapp.com^$all +||wa-groupbebe.pages.dev^$all +||tg.sv/panggahokeee^$all +! instagram +||fr-instagram.com^$all +||igleak.info^$all +||instagram.irancell-10g-free.rf.gd^$all +||businesslnstagram.zya.me^$all +||instagram-nextjs-three.vercel.app^$all +||instagram0639.blogspot.$doc +||lnstagramsupport.cm^$all +||instagram-$doc,ipaddress=43.135.101.145 +/^https?:\/\/instagram-[a-z]{5,}\.[a-z]{2,4}\//$doc,to=cc|top|help +!#if env_safari +/^https?:\/\/instagram-[a-z][a-z][a-z][a-z][a-z]+\.[a-z]+\//$doc,to=cc|top|help +!#endif +! facebook +! /^https:\/\/[vw]ww-[a-z]?facebook[a-z]?([.-]com)?\.vn\//$doc,to=vn +||notificationbyfacebook.$doc +||notificationbyfacebook.firebaseapp.com^$all +||notificationbyfacebook.web.app^$all +||business-facebook-*.pages.dev^$all +||ads-verification-for-pay.vercel.app^$all +||report.case-referency.com^$all +||certify-issues-details-case.netlify.app^$all +||www-mfacebook.$doc +||www-facebooks.$doc +||www-facebook.$doc +||vww-facebook.$doc +||www-facebook-$doc,to=~translate.goog +||vww-facebook.com.vn^$all +||www-facebooks.com.vn^$all +||faceb00k.com.vn^$all +||m-facebookk.com.vn^$all +||fakeserhelpsreivew-$doc +||govern-assessment-validation-*.vercel.app^$all +||support-center-for-*.vercel.app^$all +||safety-profiles-fb-ads-*.vercel.app^$all +||request-page-violation-*.surge.sh^$all +||violation-*.surge.sh^$doc +||copyrights-*.surge.sh^$doc +||fan-page-*.surge.sh^$doc +||content-voilation-$doc +||appeal-account-copyright-case-review.$doc +||community-flagged-$doc +||help-for-work-*.pages.dev^$doc +||marketplace-item-details-*.zya.me^$all +||info-meta-noreply.com^$all +/^https:\/\/business\.[a-z]+confii?rm\.com\/meta-community-standard\d{14,15}[^\d]?/$doc,match-case,to=com|~facebook.com +/^https:\/\/business-component\.[a-z]+(-[a-z]+){2}\.com\//$doc,to=com|~facebook.com +/\.(?:click|pages\.dev|surge\.sh)\/help\/contact\/\d{14,19}\b/$doc,match-case,to=click|pages.dev|surge.sh|~facebook.com +||business-help-temp-$doc +/\.workers\.dev\/help\/\d{14,19}\b/$doc,to=workers.dev|~facebook.com +||royal-glade-286f.kdsj.workers.dev^$doc +/\.(?:boats|cfd)\/contract\/\d{14,19}\b/$doc,match-case,to=boats|cfd|~facebook.com +||helps-center-page-number-$doc +||support-16.ubpages.com^$all +||contact-supportbusinessmanager.ubpages.com^$all +||facebook-*.ubpages.com^$doc +/\.(?:pages\.dev|vercel\.app)\/appeal_case_id\b/$doc,to=pages.dev|vercel.app +/^https:\/\/(?:appeal|contact|page)\.[a-z]{15,}\.com\/appeal_case_id\b/$doc,to=com|~facebook.com +/\/contract\/support-case-id=\d{14,19}\b/$doc,match-case,to=~facebook.com +||support-metahelpcenter-id*.netlify.app^$all +||support-metahelpcenter-$doc,to=~facebook.com +||netlify.app/help/support/client_id=$doc +||reminders-infraction-account.netlify.app^$all +||vercel.app/americaplata.com.html^$doc +||atplink.com/responseandresolutioncenter$all +/^https:\/\/h5\.[a-z0-9]{4}\.com\//$doc,to=com +||vercel.app/mixcc.html/$doc +||vercel.app/metasp.html^$doc +||vercel.app/decision©right^$doc +/^https?:\/\/[-a-z]{12,}\.vercel\.app\/[^.]+?g_ep=?EgoyMDI/$doc,match-case,to=vercel.app|~facebook.com +/^https?:\/\/[-a-z]{12,}\.vercel\.app\/[^.]+?=D400e/$doc,match-case,to=vercel.app|~facebook.com +/^https?:\/\/[-a-z0-9]{25,}\.vercel\.app\/id\/\d{15,17}\.html\b/$doc,match-case,to=vercel.app|~facebook.com +||policycenter-auth-check.vercel.app^$all +||datasecurity-review-status.vercel.app^$all +||live-metasupport.com^$all +||fb-business.com^$all +||faecbook.vn^$all +||online-ops.mypasschange.com^$all +||page-suspension.com^$all +||meta-for-business-$doc +||pages.dev/meta_for_business$doc +! shopee +/^https:\/\/sp\d{2,3}88(?:vn)?\.com\//$doc,to=com|~shopee.vn +! sendo +||vnsendo.*^$all,to=info|shop|vip|~sendo.vn +! dienmayxanh +||mayxanhsupport.com^$all +! steam +||steamproxy.$all,to=steamproxy.cc|steamproxy.net|steamproxy.vip +||steam.zssjsq.com^$all +||steamcommunitylog.chez.com^$all +/^https:\/\/s[cfntz]y?[ace][acemnu][a-z]{1,4}or?[mn][a-z]{4,8}[iy][a-z]?\.com\//$doc,to=com|~steamcommunity.com|~stauntonandhenry.com|~szentkoronaradio.com +/^https:\/\/s[cfntz]y?[ace][acemnu][a-z]{1,4}or?[mn][a-z]{4,8}[iy][a-z]?\.cc\//$doc,to=cc +/^https:\/\/s[cfntz]y?[ace][acemnu][a-z]{1,4}or?[mn][a-z]{4,8}[iy][a-z]?\.ru\//$doc,to=ru +/^https:\/\/steam\.(?:community)?workshop-?[a-z]+\.com\//$doc,to=com|~steamcommunity.com +||com/p/jcod-ppsr/huasdirjdo^$doc +/redeemwalletcode/gift/*$doc,to=~steamcommunity.com|~steampowered.com +||steamcommunity.^$doc,to=~steamcommunity.com +||shengsizhanchang.com^$all +! pubg +||register-turnamen.free.nf^$all +||napthepubg.mobi^$all +/volt/*?nox=$doc,to=ai|com +! microsoft +||microsoft*.dfautomotive.de^$doc +||microsoft-verify.glitch.me^$all +||validacionesoutlookmailwebadmin.glitch.me^$all +||whfdny.org^$all +||infos4.yolasite.com^$all +||microsoftupdate67.wixsite.com^$all +||exchange.add-solution.de^$all +||exceklcmicrosftprotection.pages.dev^$all +||graettingerlaw.com^$all +||post.nationalrent.ru^$all +||officesoftcn.com^$all +||athenasbaklava.com^$all +||e-outlook-online.com^$all +||serverdata.ch^$all +||nilousplaypen.com^$all +||alarisequity.cyou^$all +||cashum.unam.mx/wp-content/backups-dup-pro/imports/index.htm$all +||cognitoforms.com/FiRe21/EmployeeTeammateQuarterNominationPeriodForMidyear^$all +||santangelo.eng.br/owasetup/$all +||maweresibanda.co.zw/portal.support/$all +||pages.dev/smart89/$doc +/^https:\/\/(?:[a-f0-9]+\.)?[a-f0-9]{58}\.pages\.dev\//$doc,to=pages.dev +||acir.postofficeweb.com/grupoacir/$all +||storageapi-new.fleek.co/*/yss/ind.html$all +||wwwservicemsnlive-*.hubspotpagebuilder.com^$all +||conohawing.com/*/outlook-$doc +||hergunavantaj.com.tr^$all +||irrigationservices.co^$all +||msnoauth*.com/office-$all +||sites.google.com/l0gin-microsoftwebonlne.app/$all +||monogonzalez.com^$all +||microsofthotmailsi1.wixsite.com^$all +||supplieradvisor.ciamlogin.com^$all +||e-messsage.com^$all +||vkcs.cloud/owa.html^$doc +||ocalam.com:8443/impact^$doc +||indylatinawrds.com:8443/impact^$doc +:8443/impact?impact=$doc +||pub-*.r2.dev/owa.html^$doc +||pub-*.r2.dev/owasecure.htm^$doc +||pub-*.r2.dev/onecode55.html^$doc +||pub-*.r2.dev/OneDrive.html^$doc +||pub-*.r2.dev/auth_type.html^$doc +||enexdirecto.com^$all +||ccefactoring.com.br/ziujhyhtrer/$doc +/Message%20Centre/mc.php^$doc +/\.com(\.[a-z]{2})?\/wp-includes\/images\/smilies\/images?\/smili?es\/[a-z]{25,35}\.html/$doc +||mlcrosoftonline.com.eu-secured.com^$all +||carrierzone.com/sharepoint/$doc +||hr-systemmet.dk^$all +||bertchou.com/wp-content/languages-old/config^$all +/^https:\/\/[a-z]{14}\.azureedge\.net\/\d{4}j\b/$doc,to=azureedge.net +||microsoft-notifcation.com^$all +/^https:\/\/[-a-z]{4,}\.dogfriendlytahoe\.com\//$doc,to=dogfriendlytahoe.com +||docusine.com^$all +||backblazeb2.com/securescriptindustriusfinanceprivate99.HTML^$doc +||contoso-travel.com/login^$all +||sitio-interno.com^$all +||oortech.com/onedrive.-html^$doc +||shockaholic.net/jgr/$all +||user.fm/files/v2-*/Refundnotice.html^$doc +||user.fm/files/*/Proof%20of%20Payment.htm*$doc +||alnobala.ae/owasetup/$all +||authsignonstaff*.softr.app^$all +||facture-pdf-secure-*.vercel.app^$all +||hkwordpress.com/public/export/SM-ORDER/excelz/$doc +||msoftupdate.*.linodeobjects.com^$all +||outloksupportbuzoningreso.glitch.me^$all +||outloksupport*.glitch.me^$doc +||scanlonchiro.com^$all +*$doc,ipaddress=178.16.53.131 +! telegram +||telegramhcn.com^$all +||webtelegram.eu.org^$all +||telegrambotsolution.pages.dev^$all +||1125telegram.vekira.top^$all +/^https:\/\/www\.telegram[a-z][a-z]\.com\//$doc,to=com|~telegram.org +||telegram-*.com/login/index.html^$all +||telezelm-*.icu^$doc +||whatsapp*.icu^$doc +/^https:\/\/telegram-[a-z]{2}\.[a-z]{2,3}\//$doc,to=~gov|~edu|~com|~net|~org|~telegram.org +/^https:\/\/telegram-[a-z]{3,4}\.com\//$doc,to=com|~telegram.org +/^https?:\/\/web\.t(el)?gram[a-z][a-z][a-z]?\.top\//$doc,to=top +/^https?:\/\/web\.tegr[a-z][a-z][a-z]\.top\//$doc,to=top +||web.*.top^$doc,to=top,ipaddress=206.119.188.100 +||sbs^$doc,ipaddress=166.117.237.67 +||sbs:$doc,ipaddress=166.117.237.67 +/^https?:\/\/[a-f0-9]{32}\.[a-z]{7}\.sbs\b/$doc,to=sbs +!#if ext_ubol +/^https?:\/\/[a-f0-9]{29,}\.[a-z]{7}\.sbs\b/$doc,to=sbs +!#endif +!#if env_safari +/^https?:\/\/[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]\.[a-z][a-z][a-z][a-z][a-z][a-z][a-z]\.sbs:/$doc,to=sbs +/^https?:\/\/[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]\.[a-z][a-z][a-z][a-z][a-z][a-z][a-z]\.sbs\//$doc,to=sbs +!#endif +! usps +||smartparcellockers.tech^$all +/^https:\/\/usps\.[-a-z]{6,}\.(?:com|top)\/(?:address\.html|information|verify)\b/$doc,to=com|top|~usps.com +.top/pg?do=$doc,to=top +||wrc-gh.org/redelivery$doc +||mybluehost.me/2us/verification/$doc +||mybluehost.me/uspshome/$doc +||mybluehost.me/us/post/$doc +||mybluehost.me/tracking-mail-delivery/$doc +||mybluehost.me/*unitess/$doc +||mybluehost.me/UNITEDSTATESPOSTAL/$doc +||yah.ppl.mybluehost.me^$doc +/^https:\/\/transporta[a-z]{8,9}pro\.top\/i\b/$doc,to=top|~usps.com +/^https:\/\/[a-z]\.[a-z]{10,}\.top\/l(?:\/|$)/$doc,to=top|~usps.com +||usps.*.top^$doc,to=top|~usps.com +||wpenginepowered.com/usps/$doc +||usps.*.sbs^$doc +||informed.delivery*.top^$all +||info-tracking*.cc^$all +||uspost.*.cfd^$all +||cfd^$doc,ipaddress=43.166.238.4 +! weebly/square phishing +/^https:\/\/(?:[a-z0-9]{2,}-)+10\d{4}\.weeblysite\.com\//$doc,to=weeblysite.com +! spotify +||keepo.io/opddater-spotifykonto-informas/$all +/^https:\/\/[^.]+\.codeanyapp\.com\/wp-content\/.+\/spo[a-z]{2}i\//$doc,to=codeanyapp.com +||codeanyapp.com/*/spotii/$all +||codeanyapp.com/*/spoofi/$all +||mybluehost.me/*/MitID/$doc +||airpos.co.kr/.well-known/pki-validation/*/MitID/$doc +||autolocksmithpro.com/spt/$all +||spoti-safe-support*.codeanyapp.com^$all +||spoti-*.codeanyapp.com^$doc +||spolify-support-premium.codeanyapp.com^$all +||codeanyapp.com/Issued/settings/$doc +||mybluehost.me/spot/Account/$doc +||mybluehost.me/dse/main/$doc +||mybluehost.me/MUSIC/SPOTIFY24K/$doc +||veratv-mtic.vera.com.uy/r/$doc +||freewebhostmost.com/*/spotify/$doc +! swisspass +||divinedownload.com^$all +||swiss-passapp.web.app^$all +||mybluehost.me/CFF/$doc +||mybluehost.me/--/SBBCFF$doc +||mybluehost.me/SBB.CH/$doc +||mybluehost.me/*/swisspass/$doc +||mybluehost.me/Konto/SBB/$doc +||mybluehost.me/sbb-ch/$doc +||mybluehost.me/SBB/$doc +||the.jxc.mybluehost.me^$doc +||mybluehost.me/pass/index/$doc +||mybluehost.me/seitech/$doc +||mybluehost.me/*/swpassfr/$doc +||mybluehost.me/*/CHFINAL/$doc +||acconsult.info/*/CHFINAL/$doc +||sviluppo.host/sbb-chf-id/$doc +||sviluppo.host/CHFINAL/$doc +||sviluppo.host/*/CHFINAL/$doc +||wcomhost.com/spass/$doc +||altitudesim.ca/*/CHFINAL/$doc +||codeanyapp.com/Swissp/$doc +||suissscomee-correo*.codeanyapp.com^$doc +||codeanyapp.com/Sus/*/sign.php^$doc +||verwalten-sbb-informationen-managecff-kundenportal-online.codeanyapp.com^$all +||codeanyapp.com/manage-SBB/$doc +||codeanyapp.com/*/SWISSPASSC/$doc +||cffsbbhost-aniamaria*.codeanyapp.com^$all +||manage-administrere-swisspass-*.codeanyapp.com^$doc +||romacsystems.com/*/CHFINAL/$doc +||valuge.com.ar/sbb/$doc +! swisscom +||secureserver.net/myswisscom$doc +||codeanyapp.com/Swiss_com/$doc +||codeanyapp.com/info/cc.php^$doc +||mybluehost.me/neww/$doc +||mybluehost.me/*/csom/$doc +||secureserver.net/ruckstantung907921/$doc +||sviluppo.host/df/pass.php^$doc +||mybluehost.me/sssssssssssssss/$doc +||mybluehost.me/comssss/$doc +||mybluehost.me/swisscom-login/$doc +||mst.ail.mybluehost.me^$doc +||mybluehost.me/*/swisscom/$doc +||codeanyapp.com/swiss-login/$doc +||nxcli.io/pub/swissii/$doc +||cfolks.pl/*/swisscom/$doc +! swisspost +||swisspost.web.app^$all +! upc +||wcomhost.com/ch/upc/$all +||base-dawgz.web.app^$doc +||whitelist-memefi.com^$doc +||gz-gmy.com^$all +||tpro-airdrop.pages.dev^$doc +||tomarket-rewards.vercel.app^$doc +||tronlink-walletextension.webflow.io^$all +||itrustcapitaalloginn.webflow.io^$all +||secure---sso---robinhood---com-cdn.webflow.io^$doc +||sso--en--cobo--trsuted-auth.webflow.io^$all +||netcoislogin-zone.webflow.io^$all +||biytmartlogine.webflow.io^$all +||pepecoinsuper-airdrop.pages.dev^$doc +||appmemekombatclaim.pages.dev^$doc +||testmyaa.pages.dev^$doc +||claimspaace.pages.dev^$doc +||blastairdropclaims.pages.dev^$doc +||harambetok-eng.pages.dev^$doc +||rarepepewtf.pages.dev^$doc +||miles-plume-network.pages.dev^$all +||agentlayer-xyz.pages.dev^$doc +||pngvnreward.pages.dev^$doc +||trava-dapps.pages.dev^$doc +||web3mainnetdapp.pages.dev^$all +||web3connectfix.pages.dev^$all +||syncwallet.pages.dev^$all +||azuki-*.vercel.app^$all +||base-swap-frontend-*.vercel.app^$doc +||final-claim.pages.dev^$doc +||alienxchain*.pages.dev^$doc +||safepal.com.co^$all +||tronlink.com.co^$all +||exodus.com.ag^$all +||gitconnect-online.web.app^$all +||officialgitechpage.web.app^$all +! swan.com +/^https?:\/\/(?:www\.)?swan[0-9]\.[ctv][cio]p?\//$doc,to=cc|top|vip +||cc^$doc,ipaddress=15.207.81.128 +||top^$doc,ipaddress=15.207.81.128 +||vip^$doc,ipaddress=15.207.81.128 +! uphold +/^https?:\/\/qqh[0-9]\.mom\//$doc,to=mom +||bitoranges.com^$all +||hswgs.com^$all +||putrans.com^$all +||qqh4.mom^$all +||qqh5.mom^$all +||snfee.com^$all +||zbzqgm.com^$all +||zykqk.com^$all +||com^$doc,ipaddress=206.82.7.123 +||mom^$doc,ipaddress=206.82.7.123 +! uniswap +||interface-git-parallel-cypress-uniswap.vercel.app^$doc +||web3-projects-beta.vercel.app^$all +! metamask.io +||clinitex.fr/META5KYC/$doc +||metamask*.webflow.io^$doc +||keychron.in/wp-includes/certificates/home^$all +||metamask-support.io^$all +! bitvavo +/\.(?:cc|com|top|vip)\/index\/index\/lang\/[a-z]{2}-[a-z]{2}\b/$doc,to=cc|com|top|vip +/index/index/*Trade/tradelist^$doc +||bitvavo*.cc^$doc +||bitvavo*.top^$doc +||bitvavo*.vip^$doc +||bitvavo.com.nl.$doc,to=~bitvavo.com +! trustwallet.com +||auth--sso-trust.webflow.io^$all +! binance +||bnbc-onay-sayfasi-global.smtp-host.de^$all +||dendreonlawsuit.com^$all +||pub-*.r2.dev/ledge.html^$doc +! pinksale.finance +||pinksales-pools.pages.dev^$doc +||pink-sales.pages.dev^$doc +||pink-sale.pages.dev^$doc +! coinbase +||coinbaseexnsion.webflow.io^$all +||e-stata.ru/track/1/$all +/^https:\/\/(?:[^.]+\.)?\d{6}-coinbase\.com\//$doc,to=com|~coinbase.com +||llq.rsq.mybluehost.me^$all +||mybluehost.me/wp-admin/maajoun/$doc +||mail.*-coinbase.com^$doc +||gawavalen.fun^$all +||paticableharent.com^$all +||lameo.buzz^$all +||bitenve.cc^$all +! imtoken +app##center#yangchen > iframe#external-frame[src="https://im136.mom/"]:not([class]) +! pancakeswap +||pancakesswap.top^$all +/^https:\/\/pancake(?:dro|swa)pclick\d+\.vercel\.app\//$doc,to=vercel.app|~pancakeswap.finance +||pancakeswap-*.vercel.app^$doc +||pancake-swap*.vercel.app^$doc +||pancake-nft*.vercel.app^$doc +||pancakeclaim-*.vercel.app^$doc +! microsoft.microsoftedge.pancakeswap.finance.expolorer.im +||pancakeswap.finance.expolorer.im^$all +||pancake.run^$all +||pay8-2v-*-gmailcom.vercel.app^$all +! ndax.io +||sso-nndax-io-auth.webflow.io^$all +||public---sso--ndax--x---cdn.webflow.io^$all +||sso-*.webflow.io^$doc +-sso-*.webflow.io^$doc +-ndax-*.webflow.io^$doc +! openphish +||mmitalianbeef.square.site^$all +||bigbauer.com^$all +||vangphutai.com^$all +||autoscurt24.de^$all +||hk668.cc^$all +||dc.tensgpt.com^$all +||carrefour-enbacktoschool4.pages.dev^$all +||sacolamobile.influenciadormagalu.com.br^$all +||globalgrainsadf.com^$all +||vzla-qr.com^$all +||inmotiongmbh.com^$all +||hausbank-ssk-cuxhaven.de^$all +||vkorg.webservis.ru^$all +||gumeminlogi.webflow.io^$all +||beluxrepm.followme.fr/FolloWMe$all +||mybluehost.me/Cope346/$all +||allbikesputte.be/sumconfirm.php/$all +||glitch.me/pdf.html?email=$doc +||chattts-49f1.beszyrecala.workers.dev^$all +||cursorltd.com^$doc +||utahpolicetraining.*.mybluehost.me^$all +||mybluehost.me/*/choronopost/$doc +/^https:\/\/([a-z]-){10,15}[a-z]\.(?:com|net|org)\.tr\//$doc,to=com.tr|net.tr|org.tr +/views/go/start.php^$doc +/^https:\/\/pub-[a-f0-9]{32}\.r2\.dev/be[a0-9]\d{2,3}\.html\b/$doc,match-case,to=r2.dev +||namecheapsupport-*.codeanyapp.com^$all +||mybluehost.me/vcd/$doc +||kvv.jxc.mybluehost.me^$doc +||web-interface.eu^$doc +||mybluehost.me/servizi/assistenza/$doc +||mybluehost.me/wise/number-account-$doc +||smrturl.co/o/*/53458494^$doc +||agripro-fr-*.com^$doc +||notifyhubss.net^$doc +||aolmaiillogin.blogspot.$doc +||afflatus.consulting/deutschepost/$all +||info-espanol-id-configes*.codeanyapp.com^$all +||codeanyapp.com/dgte/$doc +||lcldetecthumainweb*.firebaseapp.com^$all +||freewebhostmost.com/consegna-pacchi/avviso/$doc +||appinstallcheck.com^$all +||allegro*/aukcja/$doc,to=buzz|icu|shop +||shop/au/uqmobile^$doc +/^https?:\/\/[-a-z]{4,}\.(?:com|org)[-.][-a-z]{2,}\.(?:cc|top|vip|world|xin)\/pay\b/$doc,match-case,to=cc|top|vip|world|xin +/^https?:\/\/[-a-z]{4,}\.(?:com|org)[-.][-a-z]{2,}\.(?:cc|top|vip|world|xin)\/us\b/$doc,match-case,to=cc|top|vip|world|xin +||secure.*.win/pay^$doc,to=win +||shimura-china.com^$all +||qufu.com.cn^$all +||glitch.me/public/NFCUAccess00.HTML^$doc +||gz-plsl.web.app^$all +||aliique.fr^$all +||luckygifthk.com^$all +! docusign.com +||signature-rho.vercel.app^$all +||f1nancier.com^$doc +||pub-*.r2.dev/alt_type.html^$doc +||pub-*.r2.dev/auth_gen.html^$doc +||pub-*.r2.dev/auth_response.html^$doc +||pub-*.r2.dev/auth_start.html^$doc +||pub-*.r2.dev/DocuSign.html^$doc +||pub-*.r2.dev/doc_start.html^$doc +||pub-*.r2.dev/dse_sign.html^$doc +||pub-*.r2.dev/response_start.html^$doc +||pub-*.r2.dev/response_type.html^$doc +||pub-*.r2.dev/secure_response.html^$doc +||pub-*.r2.dev/traffic.html^$doc +||pub-*.r2.dev/utility_base.html^$doc +||pub-*.r2.dev/docuss_3456787654324567897865433456789.html^$doc +||pub-*.r2.dev/gatewaymyoffice.html^$doc +||s3.amazonaws.com/*_singlesigninh.html^$doc +||edgeone.app/gotadocsignnewdocsing.*.html$doc +||tin-dung-$doc +||khcn-tindung-$doc +||viettelgroup.com^$all +||khach-hang-the-$doc +||chamsockhachhang-$doc +! /^https:\/\/hdsaison-?[a-z]{2,}\.(?:cc|com|vip)\//$doc,to=cc|com|vip|~hdsaison.com.vn +/^https?:\/\/dienmayxanh[-a-z0-9]+\.com\//$doc,to=com|~dienmayxanh.com +/^https:\/\/dich-vu(?:-[a-z0-9]+){2,3}\.com\//$doc,to=com +/^https:\/\/zla\d{3}\.top\//$doc,to=top|~tiki.vn +||cskh-vib-$doc +||cskh-vib.$doc +||chamsockhachang-$doc +||chamsocthekhachang-$doc +||nang-cap-$doc +||hdsaison-$doc,to=cc|vip|~hdsaison.com.vn +||dichvucong.$doc,to=~dcs.vn|~gov.vn +||tikimall.$doc,to=tikimall.*|~tiki.vn +||taikhoanvps.com.vn^$all +||motaikhoanchungkhoanvps.com^$all +||tpbankvn.workplace.com^$all +/^https:\/\/tdk[det]0[0-9]\.com\//$doc,to=com|~tiki.vn +||soppe68.$all,to=~shopee.vn +/^https:\/\/(www\.)?sp\d{4,5}p\.com\//$doc,to=com|~shopee.vn +||vib-*.com^$doc,to=com|~vib.com.vn +||vib-*.shop^$doc,to=shop|~vib.com.vn +||binhchoncuocthivetranhsinhvien2024.weebly.com^$all +||uudai-tructuyen-$doc +||uudaikhachhang-$doc +||nang-hang-$doc +||hethongvaynhanh247.com^$all +||baoviet*.vip^$doc +||hotrokhachhang-$doc +||cham-soc-the-$doc +||vssid.*.cc^$doc +||hethongnoibo.bio.link^$all +||baoviet*.top^$doc +||giaohangtietkiem247.$all,to=giaohangtietkiem247.*|~giaohangtietkiem.vn +||uudauthekhachhanh-$doc +||chamsocthe-$doc +/^https:\/\/amazon[a-z]\d\.com\//$doc,to=com +||dienlanhdienmayxanhvn.com^$all +||cskhtructuyen-$doc +||vnairlines.net^$all +||tikione.vip^$all +||tikifreeship.$all +||tiktok-svip*.com^$all +||khach-hang-$doc +||nhantienquocte*.vercel.app^$doc +/^https:\/\/giaohangtietkiem\w+\.com\//$doc,to=com|~giaohangtietkiem.vn +||khuyenmaidacbiet-$doc +||uudaidacbiet-$doc +/^https?:\/\/amazo[a-z]{2}\d\.com\//$doc,to=com|~amazon.com +||dienlanhmayxanh.com^$all +||khuyenmaithang-$doc +||han-muc-the-$doc +||hotrodacbiet-$doc +||newmall*.cc^$doc +||chinhphu.*.org^$doc +||vienthongviettel.vn^$all +||vincomplaza.*.top^$doc +||westernunion*.wixsite.com^$doc +##html[lang] > body.startnew > div#sections > section#section_uname +||datumdellago.com^$all +||clinicaimplantologica3d.com^$all +||gruposabar.com^$all +||xalatlaco.org^$all +||r2.dev/INV-CHKCOPY-Remittance-Overpayment%20Refund$doc +##html[lang] > body:not([style]) > div.captchaBody +||cam/secured/host/*.php|$xhr,3p,domain=r2.dev +||implarededeensino.com.br^$all +||vertiselevadores.com.br^$all +||r2.dev/Outlook%20Secured%20Document$doc +/^https:\/\/[a-z0-9]{2,}\.[a-z0-9]{4,11}\.com\/[a-zA-Z0-9]{30,}\?[a-zA-Z0-9]{25,}$/$doc,to=com|~google.com|~microsoft.com +/^https:\/\/[a-z0-9]{2,}\.[a-z0-9]{4,11}\.ru\/[a-zA-Z0-9]{30,}\?[a-zA-Z0-9]{25,}$/$doc,to=ru +/^https:\/\/[a-z0-9]{2,}\.[a-z0-9]{4,11}\.su\/[a-zA-Z0-9]{30,}\?[a-zA-Z0-9]{25,}$/$doc,to=su +! microsoft +||aging3.co^$all +/^https:\/\/[a-z0-9]{50,}\.[a-z0-9]{4,11}\.com\/[a-zA-Z0-9]{50,}$/$xhr,3p,method=get,to=com|~google.com|~microsoft.com,from=com|ru|su +/^https:\/\/[a-z0-9]{50,}\.[a-z0-9]{4,11}\.ru\/[a-zA-Z0-9]{50,}$/$xhr,3p,method=get,to=ru,from=com|ru|su +/^https:\/\/[a-z0-9]{50,}\.[a-z0-9]{4,11}\.su\/[a-zA-Z0-9]{50,}$/$xhr,3p,method=get,to=su,from=com|ru|su +|https://*.favoripirlanta.com^$doc +||marketplace-item-*.000.pe^$doc +! /^https:\/\/(?:ai|art|get)?-?midjourney(?:s|ai)[^\/]+\//$doc,to=~midjourney.com|~edu|~gov +! /^https:\/\/(?:ai|art|get)-?midjourney[^\/]+\//$doc,to=~midjourney.com|~edu|~gov +! /^https:\/\/(?:ai|art|get)-midjourney[^\/]+\//$doc,to=~midjourney.com|~edu|~gov +||ai-midjourney*.$doc,to=~midjourney.com|~edu|~gov +||art-midjourney.$doc,to=~midjourney.com|~edu|~gov +||get-midjourney.$doc,to=~midjourney.com|~edu|~gov +||mid-journey.$doc,to=~midjourney.com|~edu|~gov +||aimidjourney.$doc,to=~midjourney.com|~edu|~gov +||aimidjourneys.$doc,to=~midjourney.com|~edu|~gov +||getmidjourney.$doc,to=~midjourney.com|~edu|~gov +||midjourneys.$doc,to=~midjourney.com|~edu|~gov +||midjourney.co^$all,to=~midjourney.com +||runningapplications-b7dae-default-rtdb.firebaseio.com^$all +||magicslimnhatban.com^$all +||giamcannhatban.com^$all +||github.com/linarweloper/Blumfarmbot^$doc +||waredot.com^$doc +||kmspico.*^$doc,to=kmspico.* +||kmspico-$doc +||kms-full.com^$doc +||kmspico.io^$doc +||kms-tool.com^$doc +||kmsauto.tech^$doc +||kmsauto.org^$doc +||furykms.com^$doc +||ativadorkmspico.com^$doc +||getkmspico.com^$doc +||kmspico10.com^$doc +||officialkmspico.com^$doc +||polyfill.io^$all +||googie-anaiytics.com^$all +||bootcdn.net^$all +||bootcss.com^$all +||staticfile.net^$all +||staticfile.org^$all +||union.macoms.la^$all +||polyfill-js.cn^$all +||get-express-vpn.online^$all +||pcapp.store^$doc +||convertwithwave.com^$doc +||withsecurify.com^ +||securifyguard.com^ +||highwaycpmrevenue.social-previews.top^$all +||clicksocialimage.top^$all +||blue-softs.com^$all +||sirokataldea.com^$all +||sites.google.com/view/blue-softs^$all +||sites.google.com/view/xtaskbar-themes^$all +||sites.google.com/view/newtaskbar-themes^$all +||sites.google.com/view/awesome-themes-desktop^$all +||sites.google.com/view/taskbar-themes^$all +||sites.google.com/view/ai-image-3d^$all +||sites.google.com/view/taskbar-themess^$all +||sites.google.com/view/softs-download^$all +||sites.google.com/view/sora-ai-v2^$all +/^https:\/\/[a-z]{6,19}\.(?:com|net)\/js\?t=[_a-z0-9]+&ns=[a-z]{2}$/$script,3p,strict3p,match-case,to=com|net +/^https:\/\/[a-z]{6,19}\.(?:com|net)\/(?:static_)?file\/\?t=[_a-z0-9]+&ns=[a-z]{2}$/$frame,popup,3p,strict3p,match-case,to=com|net +/^https:\/\/[a-z]{6,19}\.(?:com|net)\/(?:static_)?file\/\?t=[_a-z0-9]+&ns=[a-z]{2}$/$doc,match-case,to=com|net +||shy-boat-90ce.jiko728928922.workers.dev^$doc +||app.corn-staging.com^$all +||crowdstrike0day.com^$doc +||bsodsm8r.xamzgjedu.com^$doc +||crowdstrike-cloudtrail-storage-bb-126d5e.s3.us-west-1.amazonaws.com^$doc +||crowdstrikeoutage.info^$doc +||mecrowdstrikesnowstandalone.azurewebsites.net^$doc +||crowdstrikereposify.net^$doc +||crowdstrike-solutions.nl^$doc +||crowdstrikefix.zip^$doc +||dropbox.com/*/crowdstrike-hotfix.zip^$all +||tickets.website.com.se^$all +||ticketsparis24.com^$all +||freeadd.me^$doc +||askfollow.us^$doc +||more-followers.com^$doc +||twitob.com^$doc +||twitterfollowers.site^$doc +##html[lang] > body#body > * > div.cv-xwrapper > div.cvc > div.cv-inner +##html[lang] > body#body > * > div.cvh.BlockClicksActivityBusy +||cartepak.online^$doc +||hkdk.events/8cjknac3yxdqk4^$all +||zebg.top^$all +/^https:\/\/help\.[a-z]{3,}-x-[a-z]{3,}\.com\//$doc,to=com|~x.com +||onevanilla.click^$all +||bilbocine.com^$doc +||dailysmscollection.org^$doc +||panoramacharter.click^$doc +||mymercy.click^$doc +||direct2hr.click^$doc +||iqpoll.cn^$doc +||tempisite.com^$all +||sparrowwallet.net^$doc +||tracker.club-os.com^ +!||onelink.me/*&af_web_dp=$doc +||guide-orientation.tn/go_page.php?$doc +!#if env_mobile +@@||onelink.me/*://app/$doc +!#endif +@@||toss.onelink.me/*service.toss.im$doc,1p +||livestreaming24.xyz^$doc +/^https:\/\/(?:www\.)?[-a-z0-9]+\.com\.[-a-z0-9]+\.com\//$doc,to=com,ipaddress=148.251.54.196 +/^https:\/\/(?:www\.)?[-a-z0-9]+\.xyz\.[-a-z0-9]+\.com\//$doc,to=com,ipaddress=148.251.54.196 +||belliniepecuniaimmobili.$doc,to=belliniepecuniaimmobili.* +||immobilibelliniepecunia.$doc,to=immobilibelliniepecunia.* +||bpecuniaimmobili.$doc,to=bpecuniaimmobili.* +||belliniepecuniaimmobilisrl.$doc,to=belliniepecuniaimmobilisrl.* +||immobiliarebelliniepecunia.$doc,to=immobiliarebelliniepecunia.* +||the-north-face.gr^$all +||forimg.net^$all +crimsonav.com,ngsingleissues.nationalgeographic.com##+js(acs, atob, new Function(atob() +! Group Bobry +/^https:\/\/[a-z]{7,}\.[a-z]{3,}\/get\/\?s=[a-zA-Z0-9]+=*$/$script,3p,match-case,to=~edu|~gov +/^https:\/\/[a-z]{7,}\.[a-z]{3,}\/img\/$/$script,3p,match-case,to=~edu|~gov +||marketiqhub.com^$all +!#if cap_html_filtering +energiasolare100.it,lundracing.com,red17.co.uk,workplace-products.co.uk##^div[onmousemove*=".innerHTML"][onmousemove*="String.fromCharCode"] +!#else +energiasolare100.it,lundracing.com,red17.co.uk,workplace-products.co.uk##+js(trusted-replace-argument, String.prototype.includes, 0, undefined, condition, /^checkout$/) +!#endif +! Group Surki +||cpeciadogfoods.com^$all +||clearnetfab.net^$all +||iconstaff.top^$all +adrissa.com.co,americansoda.co.uk,casteloforte.com.br,centerfabril.com.br,forqueen.cz,joinusonline.net,jollibee.com.vn,kitapsan.com.tr,mebelinovdom.com,ojworld.it,qualityrental.com,szaszmotorshop.hu,tvojstyl.sk,up-shop.org,yairalon.com.br##+js(acs, WebSocket, event.data) +##html#html[sti][vic][lang] > body#allbody +/\/m\/js(?:drive|nom|sp|v)\.js\b/$script,1p,strict1p +/\/n\/js(?:drive|nom|sp|v)\.js\b/$script,1p,strict1p +/\/o\/js(?:drive|nom|sp|v)\.js\b/$script,1p,strict1p +/^https?:\/\/[a-z]{7,}\.com\/go\/[a-f0-9]{8}(-[a-f0-9]{4}){3}-[a-f0-9]{12}\b/$doc,match-case,to=com +/^https?:\/\/[-a-z0-9]{8,}\.ru\/\?load=[a-zA-Z0-9]+(-[a-zA-Z0-9]+)+$/$doc,match-case,to=ru +||com/go/$doc,to=com,ipaddress=3.0.82.215 +||com/go/$doc,to=com,ipaddress=3.0.178.139 +||com/go/$doc,to=com,ipaddress=2406:da18:3af:9302:6ead:4c78:949:685a +||com/go/$doc,to=com,ipaddress=2406:da18:3af:9302:218a:d776:533b:6b69 +||rungamepc.ru^$all +||game02-com.ru^$all +||gameportpc.ru^$all +||downloadstep.com^$all +||runkit.com/wukong/black-myth-wukong-crack-pc^$all +||runkit.com/skylinespc/cities-skylines-ii-crack-pc-full-setup^$all +||runkit.com/masterposte/dying-light-2-crack-on-pc-denuvo-fix^$all +||runkit.com/dz4583276/monster-hunter-rise-crack-codex-pc/1.0.0/clone^$all +||groups.google.com/g/hogwarts-legacy-crack-empress^$all +||r2.dev/CAptcha-Verifications-$doc +/please-verify-z.html^$doc +/human-verify-system.html^$doc +/human-captcha-v*.html^$doc +/captcha-verify-v*.html^$doc +/verify-captcha-v*.html^$doc +##html > body > div.container.m-p > #checkbox-window.checkbox-window +||ajmaboxanherulv*.b-cdn.net^$doc +||anti-automation-v*.b-cdn.net^$doc +||bot-check-v*.b-cdn.net^$doc +||dedicloadpgeing*.b-cdn.net^$doc +||file-typ-botcheck*.b-cdn.net^$doc +||izmncdnboxuse*.b-cdn.net^$doc +||newverifyyourself-system*.b-cdn.net^$doc +||nikutjyjgchr*.b-cdn.net^$doc +||verification-module-v*.b-cdn.net^$doc +||verifyyourself-*system.b-cdn.net^$doc +||weoidnet*.b-cdn.net^$doc +||chromeupdates.com^$all +||fingerboarding.com^$all +||odyssey1.to^$all +||b-cdn.net/get-this-puzzle-solved.html^$doc +||b-cdn.net/Recap-v*.html^$doc +||b-cdn.net/verf-v*.html^$doc +/cf-check.html^$doc +/final-step-to-continue.html^$doc +/dedicated-captcha-page.html^$doc +/hcaptcha-human-check.html^$doc +/IQWJDolx.html^$doc +/JSKADull.html^$doc +/modi-cloudflare-update-new.html^$doc +/prove-human-recaptcha.html^$doc +/RYFTGJcaptchv*.html^$doc +/recaptcha-v*-protocol-$doc +/recaptcha-verification.html^$doc +/recaptcha_verification*.html^$doc +/security-challenge-captcha.html^$doc +/SYNCfuzzv*.html^$doc +/verify-human-recaptcha.html^$doc +/verify-me-first-v*.html^$doc +##.fkrc-verifywin-window +##.fkrc-checkbox-window +##html[lang] > body:not([class]):not([id]):not([style]) > div.container > div.recaptcha-box +/bot-verification-check-re*.html^$doc +/need-to-pass-step.html^$doc +/wp-content/themes/twentynineteen/color/*/captcha.php?$doc +||exo.io/cloudcask/$doc +/cloudflare-v1-getup-*.html^$doc +/modi-cloudflare-update.html^$doc +/wp-assets-optimizer.html^$doc +##body > .security-container[style="opacity: 1; transform: translateY(0px);"] +||rustdesk.co.nz^$doc +||rustdesk.io^$doc +||rustdesk.pl^$doc +||rustdesk.secure-box.de^$doc +webflow.io##html.w-mod-js:not(.wf-active) > body:not([class]):not([id]) > a[class="w-inline-block"][href^="http"] +||coinomiwallet.cc^$all +/^https:\/\/gov\.[^.]*gr\.[a-z]{2,6}/$doc,to=~gov|~edu|~gov.gr +/\.cloudfront\.net\/(?=[a-z]{0,6}\d)[a-f0-9]{7}\.js$/$script,3p,match-case,to=~d3dvi1l4i1go4x.cloudfront.net +||freesoftwarecreative.com^$doc +||macgsapptrck.com^$all +||debridleech.com^$doc +||hopgp.com^$all +! stage 1 +||ntischoolpune.org/*.php?$doc +.php?iid=*&cid=$doc,to=~gov|~edu +.php?cid=*&pnum=$doc,to=~gov|~edu +! stage 2 +||jb*img.top^$all,to=top +/\.[a-z]{3,}\/a\.aspx\?cid=/$doc,match-case,to=~com|~net|~org|~gov|~edu +! stage 3 +/\.[a-z]{3,}\/products\.aspx\?cname=.+&cid=/$doc,match-case,to=~com|~net|~org|~gov|~edu +/^https:\/\/online\.[a-z]{7,}\.top\//$doc,to=top +! Fake WordPress plugins loading ads/malware +/wp-content/plugins/admin-bar-customizer/abc-script.js +/wp-content/plugins/advanced-user-manager/aum-script.js +/wp-content/plugins/advanced-widget-manage/awm-script.js +/wp-content/plugins/content-blocker/cb-script.js +/wp-content/plugins/custom-css-injector/cci-script.js +/wp-content/plugins/custom-footer-generator/cfg-script.js +/wp-content/plugins/custom-login-styler/cls-script.js +/wp-content/plugins/dynamic-sidebar-manager/dsm-script.js +/wp-content/plugins/easy-themes-manager/script.js +/wp-content/plugins/form-builder-pro/fbp-script.js +/wp-content/plugins/quick-cache-cleaner/qcc-script.js +/wp-content/plugins/responsive-menu-builder/rmb-script.js +/wp-content/plugins/seo-optimizer-pro/sop-script.js +/wp-content/plugins/simple-post-enhancer/spe-script.js +/wp-content/plugins/social-media-integrator/smi-script.js +||at^$script,xhr,3p,ipaddress=185.215.113.111 +||orcaslicer.$doc,to=~orcaslicer.com +||orca-slicer.$doc +||ocraslicer.$doc +||orca3dslicer.$doc +||orcaslice.$doc +||orcaslicer3d.$doc +||orcaslicerdownload.$doc +||orcaslicerofficial.$doc +||orcaslicerr.$doc +||orcaslicers.$doc +||theorcaslicer.$doc +||orcasslicer.$doc +||nvcleanstall.$doc +||nvcleanstal.$doc +/^https:\/\/www\.air-?up-?[a-z]{2,}\.com\//$doc,to=com|~air-up.com +/^https:\/\/www\.xn--airup[a-z]{5,6}-[a-z0-9]{3}\.com\//$doc,to=com|~air-up.com +||airupgreece.net^$doc +||airupfrance.fr^$doc +||ftuapps.io^$doc +||ftuapps.dev^$doc +||farlad.com^$doc +||geekupdates.notion.site/Ultra-Security$doc +||uobretailcreditmanagement.$doc +||blockfiupdates.$doc +||allinoursite.com^$doc +||bteux.com^$doc +||childrenoftheclouds.com^$doc +||dating-express.com^$doc +||emailservicesnetau.com^$doc +||euromaillinnk.com^$doc +||glaters.com^$doc +||mybach.xyz^$doc +||threeneptuneboot.com^$doc +/unsub/unsub^$doc +/unsub_sent.php|$doc,method=post +/^https?:\/\/www\.[a-z]{9,20}\.com\/o-[a-z]{4}-[a-z]\d{2}-[a-f0-9]{32}\b/$doc,match-case,to=com +!#if env_safari +/^https?:\/\/www\.[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.com\/o-[a-z][a-z][a-z][a-z]-[a-z][0-9][0-9]-[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]$/$doc,match-case,to=com +!#endif +/^https?:\/\/[a-z]+\.[a-z]{4,}\/oop\/\d+_md(?:\/\d+){5}\b/$doc,match-case +##html > body.hold-transition.theme-primary.bg-img[style^="background-image"][style*="wallpaperaccess.com"][style*="background-repeat"][style*="background-size"] +##html > body > div.container > form#unsubscribe-form[onsubmit="submitUnsubscribeForm(event)"] +##html > body > div.content > dl > dd.dd1 > div.min_sider > form#form1[action="unsubscribe.php"] +##html > body.body > div.container > div.content > form > table.optoutForm +||creditcable.info^$all +||klingxai.com^$all +||editproai.$all,to=editproai.org|editproai.pro +||longchampblackfriday.com^$all +||igetintopc.com^$all +||usps-packages-*.com^$doc +||backend.store.eset.co.il/pub/*/ESETUnleashed_*.zip^$all +||www.*.icu^$doc,ipaddress=/^(13\.227\.254\.\d{2}|2600:9000:2(00a|1d1):[a-z0-9]{2}00:1[1c]:(7b7c|2741):(1ac|2d0)0:93a1)$/ +||www.*.vip^$doc,ipaddress=/^(13\.227\.254\.\d{2}|2600:9000:2(00a|1d1):[a-z0-9]{2}00:1[1c]:(7b7c|2741):(1ac|2d0)0:93a1)$/ +! fake cloudflare captcha +||pub-549d59daefd74f7583e1766800fe7b07.r2.dev^ +||cdncloud.icu^$all +||ide.it/wp-content/uploads/siteground-optimizer-assets/siteground-optimizer-combined-js- +/wp-content/uploads/siteground-optimizer-assets/siteground-optimizer-combined-js-0311104f6b606e1ad6e4eaeb8aa6336c.js$script +||tobias-neller.link^$all +rapidkil.com.au##+js(aost, XMLHttpRequest, /wp-content) +##html[data-scrapbook-source][data-scrapbook-create][data-scrapbook-title] > body.no-js > div.main-wrapper[role="main"] > div.main-content +||getfix.win^$all +||getalia.org^$all +||goveanrs.org^$all +||govearali.org^$all +/jsrepo?rnd=$script,xhr,3p +*$xhr,3p,method=get,to=org|shop|win,ipaddress=178.16.53.137 +||cptoptious.com^$all +||icu^$doc,frame,ipaddress=94.154.35.152 +||icu/captcha.html$doc,frame +/captcha.html$doc,frame,ipaddress=94.154.35.152 +/?ref=$doc,frame,ipaddress=94.154.35.152 +/captcha-loader.js? +! fake dating +/^https:\/\/[0-9a-z]{7}\.([0-9a-z]{7})\.top\/[0-9a-z]{7}\?t=\1&cid=[0-9a-z]+/$doc,to=top,match-case +||dtioykqj1u8de.cloudfront.net^$all +!?id=*&p1=*&p2=*&p3=*&p4=$doc +||partners-tds.com^$all +||likeyoumakehappy.xyz^$all +||fiheos.co.in^$all +||sentinelbotcore.co.in^$all +||kexornero.co.in^$all +!#if !ext_ubol +/^https?:\/\/[a-z0-9]{10,}\.[a-z]{9,}\.co\.in\//$all,to=co.in +!#endif +||vironexta.com^$all +||fusionchainedge.com^$all +||jartibbinght.com^$all +||maxsecurityultimate.com^$all +||hotdebrid.com^$doc +||maxdebrid.com^$doc +||anydebrid.com^$doc +||okdebrid.com^$doc +||grass-io.$all,to=cc|vip|~getgrass.io +||inmotionhosting.com/~myapp/grass_air/$doc +||sites.google.com/view/entteraccess^$all +||sites.google.com/view/helpp2k^$all +||adsg00gle-v3.vercel.app^$all +||ads1.google.*.com^$doc,frame +||thetollroads.texas-$all,to=~thetollroads.com +/^https:\/\/thetollroads\.[a-z]+-[a-z]{4}\.[a-z]{3}\//$doc,to=~thetollroads.com +/^https:\/\/(?:[-a-z0-9]{2,}\.){1,2}(?:[a-z]{2,3}|click|online)\/(?:[-a-z0-9]+\/){1,4}[a-zA-Z0-9]{150}\/index\?a=/$doc,xhr,match-case,method=get,to=~edu|~gov +/^https:\/\/(?:[-a-z0-9]{2,}\.){1,2}(?:[a-z]{2,3}|click|online)\/(?:[-a-z0-9]+\/){1,4}[a-zA-Z0-9]{150}\/verify\b/$doc,match-case,method=get,to=~edu|~gov +||edeetion.com^$all +||teams-live.com^$all +/^https?:\/\/reddit-\d{1,2}\.[a-z]{4}\.(?:net|org|pw)\//$doc,to=net|org|pw|~reddit.com +/^https?:\/\/wettransfer\d{2}\.[a-z]{4}\.(?:net|org|pw)\//$doc,to=net|org|pw|~wetransfer.com +||e-interac-*.com^$all +||press-continue.*.top^$all +||com/$doc,ipaddress=/^(172\.240\.(108\.(68|76|84)|127\.234|253\.132)|185\.246\.188\.125|192\.243\.(59\.(1[23]|20)|61.22[57]))$/ +||duckdns.org/security-check/$doc +||duckdns.org/FAMOUS/Gens/$doc +||irs.gov.*.com^$doc +||evri.*.xyz^$doc +||sharedrop.io^$all +||snapdrop.net^$all +||usadeepseek.com^$all +||gg.deepseek.$doc,to=~deepseek.com +||deepseek.app^$all +||deepseek.top^$all +||paytoll*.top/ezdrivema^$all +-ez-pass.com^$doc +||thetollroads-$doc,to=top|xin|world +/^https:\/\/help-\d{8}\.[a-z0-9]{6}-\d{2}\.click\//$doc,to=click|~facebook.com +||irs.gov.*.com^$doc +||govuk.*.top^$doc +||e-navy*.weebly.com^$doc +||only-fans.uk^$all +!#if ext_ubol +/^https:\/\/(?:[a-z]{3,5}|[ej][ac])\.[a-z]{4,10}\.[a-z]{2,6}\/item-(?:[0-9A-Za-z]{10}|\d{8}|[0-9a-f]{32})\.html$/$doc,match-case,to=art|autos|baby|best|boats|buzz|cards|cfd|click|cyou|eu|fit|fun|guru|hair|homes|ink|lat|lol|mom|my|pics|qpon|quest|rest|sale|sbs|skin|today|top|wiki|work|world|xyz +/^https:\/\/(?:[a-z]{4,5}|[ej][ac])\.[a-z]{4,10}\.[a-z]{2,6}\/item-(?:[0-9A-Za-z]{10}|\d{8}|[0-9a-f]{32})\.html$/$doc,match-case,to=biz|blog|cc|cloud|club|info|life|live|me|one|online|shop|site|space|store +/^https:\/\/([a-vx-z][a-z]{2,}\.)?[0-9a-z-]{3,}\.(com|net|org)\/index\.php\?main_page=product_info(&stl=\d)?&(cPath|products_id)=/$doc +!#endif +||zoom.us*web.us^$doc +||e-zpass.com-$doc +/n/ax4mqlu25efi/b/*$doc +||fly.storage.tigris.dev/completing/default-page.html?X-Amz-Algorithm=$doc +||fly.storage.tigris.dev/pass-this-security-check.html?X-Amz-Algorithm=$doc +/amvn_pops/?keyword=$doc +||tlauncher.org^$doc +||tlauncher.ru^$doc +||amezpay.com^$doc +/^https:\/\/[a-z]{7,8}\.com\/\?s=[0-9a-z]{13}&q=/$doc,to=com,match-case +/?fingerprint=*&i=$doc +/?id=*&traceId=$doc +=1&id=*&traceId=$doc +||turtleclient.xyz^$all +||irs.gov-$doc +/^https?:\/\/[-a-z]{4,}\.com[-.][-a-z0-9]{2,}\.[a-z]{2,6}\//$doc,to=bid|cc|cfd|cyou|icu|live|online|shop|top|vip|win|world|xin +/^https?:\/\/[-a-z]{4,}\.org[-.][-a-z0-9]{2,}\.[a-z]{2,6}\//$doc,to=bid|cc|cfd|cyou|icu|live|online|shop|top|vip|win|world|xin +/^https?:\/\/(?:[-a-z]{4,}\.)?gov[-.][-a-z0-9]{2,}\.[a-z]{2,6}\//$doc,to=bid|cc|cfd|cyou|icu|live|online|shop|top|vip|win|world|xin +!#if env_safari +/^https?:\/\/[-a-z][-a-z][-a-z][-a-z]+\.com[-.][-a-z0-9][-a-z0-9]+\.[a-z]+\//$doc,to=bid|cc|cfd|cyou|icu|live|online|shop|top|vip|win|world|xin +/^https?:\/\/[-a-z][-a-z][-a-z][-a-z]+\.org[-.][-a-z0-9][-a-z0-9]+\.[a-z]+\//$doc,to=bid|cc|cfd|cyou|icu|live|online|shop|top|vip|win|world|xin +/^https?:\/\/[-a-z][-a-z][-a-z][-a-z]+\.gov[-.][-a-z0-9][-a-z0-9]+\.[a-z]+\//$doc,to=bid|cc|cfd|cyou|icu|live|online|shop|top|vip|win|world|xin +/^https?:\/\/gov[-.][-a-z0-9][-a-z0-9]+\.[a-z]+\//$doc,to=bid|cc|cfd|cyou|icu|live|online|shop|top|vip|win|world|xin +!#endif +||secure.mygov.$doc +||dhl.de-$doc,to=store +||org.gov-$doc +||israeipost.co-$doc +||canpost.id-$doc +||anpost.id-$doc +||kveesh6.il-$doc +/^https:\/\/[0-9a-z]{6,8}\.[a-z]{2,10}\/[!.+,=?@\[][\/0-9a-z]{20,30}\.[-a-z]{2,7}$/$doc,to=agency|art|asia|auction|bar|beauty|beer|best|biz|bond|business|cam|cards|casa|click|cloud|coupons|courses|cv|digital|diy|fashion|food|forum|gay|guru|hair|info|life|live|living|link|ltd|my|ooo|property|pw|qpon|republican|rocks|run|sale|sbs|services|shop|skin|store|studio|support|surf|tattoo|tech|today|top|uno|watch|work,match-case +/door/?ad_campaign_id=$doc +||en-trezor.io^$all +||swap-ether.site^$all +||finance-superchain.net^$all +||us-ledger.io^$all +||en-bitcoin.org^$all +||io-sol.vip^$all +||elcctrum.cc^$all +||ray-sol.net^$all +||en-bitcoin.org^$all +||en-trezor.io^$all +||play-lustgoddess.com^$all +://booking.*.com/sign-in?op_token=$doc +||windows-line.com^$doc +||aurorastore.org^$doc +||deltaexploits.com^$all +||deltaexecutor.io^$all +||x_x-askfollow-us.translate.goog^$all +||x_x-freeadd-me.translate.goog^$all +||x_x-more--followers-com.translate.goog^$all +||x_x-twitob-com.translate.goog^$all +||x_x-twitterfollowers-site.translate.goog^$all +||www-askfollow-us.translate.goog^$all +://x_x-*-*.translate.goog/?_x_tr_$doc +||splendlddate.com^$all +||plotp.mazamob.space^$all +||win32diskimager.org^$doc +weightlossdiet.top##+js(acs, open, executeCode) +.com/redirect-zone/$doc,popup +||havelbeenpwnd.com^$all +||windirstat.org^$all +||apply-to-get-hired.com^$all +||apply-todayjobs.com^$all +||applynow-jobs.com^$all +||applytoday-jobs.com^$all +||charliechaplin7eont.space^$all +||instant-job-apply.com^$all +||instant-job-appply.com^$all +||job-apply-fast.com^$all +||jobapply-careers.com^$all +||jobs-apply-fast.com^$all +||jobs-apply.com^$all +||schedule-interview.com^$all +||schedule-job-application.com^$all +||socialmedia-careers-office.com^$all +||submit-application-job.com^$all +||submit-job-application.com^$all +||talent-applications.com^$all +||talents-application.com^$all +||com^$doc,ipaddress=38.114.120.167 +/^https:\/\/[a-z]{3,30}\.[a-z]{2,4}\/socket\.io\/socket\.io\.js$/$header=nel:/report_to":"cf-nel/,script,1p,strict1p,match-case,domain=ci|ge|eu|life +||grupocgcr.com^$all +||pastebin.store/js.js +||ncewb8eo.cloud^$all +||bluereflection-sun.com^$doc +||update-macosx.com^$all +||cuocthiianhdepthieunhii2025.weebly.com^$all +||carrotsaystopping.com^$all +||webnotif.online^$all +||live/click.php?key=$doc +||pttavm.*.com.tr^$doc +! zlib +||z-lib.ai^$doc +||z-lib.club^$doc +||z-lib.dev^$doc +||z-lib.ink^$doc +||z-lib.li^$doc +||z-lib.nl^$doc +||zlibrary.to^$doc +||z-library.cc^$doc +||z-lib.io^$doc +||z-lib.id^$doc +||z-lib.ws^$doc +||z-lib.lol^$doc +||zlibis.com^$doc +||zlibrary-global.com^$doc +||zlib-official.com^$doc +||zlibrary.st^$doc +||zlibrary.lol^$doc +||z-library.live^$doc +||z-lib.wiki^$doc +||z-library.help^$doc +||z-library-proxy.com^$doc +! windows activator +||ativadorkmspico.com^$doc +||dazactivator.com^$doc +||get-kmspico.com^$doc +||getkmspico.com^$doc +||getkmspico.medium.com^$doc +||km-spico.ru^$doc +||kms-pc.com^$doc +||kmspico-mafia.com^$doc +||kmspico-official.medium.com^$doc +||kmspico-official.xyz^$doc +||kmspico-oficial.com^$doc +||kmspico.blog^$doc +||kmspico.co^$doc +||kmspico.dev^$doc +||kmspico.download^$doc +||kmspico.io^$doc +||kmspico.micaesoft.com^$doc +||micaesoft.com^$doc +||kmspico10.com^$doc +||kmspicoativador.org^$doc +||kmspicodownloads.com^$doc +||kmspicofficial.pages.dev^$doc +||massgrav.zapto.org^$doc +||massgrave.hopto.org^$doc +||official-kmspico.com^$doc +||official-kmspico.org^$doc +||officialkmspico.com^$doc +.com/assets/index_1.html?theme=$frame,1p +||sasktel.mmspos.com^$all +/^https:\/\/www\.[a-z]{12,}\.com\/[-a-z]*%E[%0-9A-F]{20,}-[-0-9a-z]{3,}%E[-%0-9A-Fa-z]{70,}-p-\d{3,5}\.html$/$doc,match-case +||cractivator.com^$all +||analytiwave.com^$all +||analyticanoden.com^$all +||flaegrudad.com^$all +$doc,ipaddress=185.216.143.121 +||profullversion.net^$all +||arvest-blank.com^$all +||my-exodus.co.uk^$all +||ledgerr.us^$all +||suite.tem3.io^$all +||annonumapp.com^$all +||problems-center.com^$all +||33ok.club^$all +||protect-myphone.com^$all +/^https:\/\/pub-[0-9a-f]{32}\.r2\.dev\/(?=[-%0-9a-z]*[A-Z])[-%0-9A-Za-z]+-\d+\.html$/$doc,domain=r2.dev,match-case +||phila.revenue*.cc^$all +||bitchats.app^$all +||bitchat.pro^$all +||bitchat.live^$all +||myhuaweicloud.com/app/Bitchat_*.apk$all +||upa1bit.$all +||upbitbr.$all +/^https?:\/\/gitcoin-[a-z]+\.com\//$all,reason="Blatant scammers who are not related to GitHub or Gitcoin whatsoever." +/^https?:\/\/[a-z]+-gitcoin\.com\//$all,reason="Blatant scammers who are not related to GitHub or Gitcoin whatsoever." +-ledger.live^$doc +||guardan.io^$all +/^https:\/\/[a-z]{5,10}\.[a-z]{5,10}\.[a-z]{3}\/y1\.html$/$doc,match-case,to=com|top|~weebly.com +://www.*.pro/y1.html|$doc +||seloriva.com^$doc +||seloriva.net^$doc +||client.*-blockfi.com^$all +||v2-app-lido-finance.cc^$all +||network-jpn.com^$all +||statswpmy.com^$all +||2e-bureau.com^$all +||trackingmyadsas.com^ +##.header-fix-tester-container +/^https?:\/\/www\.[a-z]{8,11}\.com\/product\/(?:[0-9a-z]+-)*(?:%[%0-9a-z]{8,}-)+(?:[0-9a-z]+-)*(?:[%0-9a-z]{8,}-)*[%0-9a-z]+\/?$/$doc,match-case,ipaddress=/^173\.2(08|32)\.\d{3}\.\d{3}$/ +/^https?:\/\/[a-z]{7}\.[a-z]{8,11}\.com\/products\/(?:[0-9a-z]+-)*(?:%[%0-9A-F]{8,}-)+(?:[0-9a-z]+-)*(?:[%0-9A-F]{8,}-)*[-%0-9A-Fa-z]+\/?$/$doc,match-case,ipaddress=/^23\.2\d{2}\.\d{2}\.\d{2}$/ +||serenoirs.com^$all +||exoduswallet.at^$all +||ai-atomic.org^$all +||htex-panel.at^$all +||simpleswap.ac^$all +||simpleswap.to^$all +||simpleswap.ltd^$all +||simpleswap.online^$all +*$doc,ipaddress=54.38.216.75 +||villasmbuva.co.mz^$all +||fenamu.com^$all +||unpkg.com/redirect-*/beamglea.js$script +.com/article/auth=$doc +||stylexlab.ru^$doc +||dogado.net/stadlholz/$doc +pages.dev##html[lang="ja"] > body > .main-container > #landing.auth-container +pages.dev##html[lang="ja"] > body.flex.items-center.min-h-screen > div.w-full.max-w-md.mx-auto > form#login-form +pages.dev##html:not([class]) > body.gradient-bg.min-h-screen.flex.items-center.justify-center > div.glass-card.max-w-md.w-full.text-center > form#loginForm.flex.flex-col +/^https:\/\/blockchecker[0-9]\.pages\.dev\//$doc,to=pages.dev +/^https:\/\/xblock[0-9]+\.pages\.dev\//$doc,to=pages.dev +||xcheckx.pages.dev^$all +||gocheck.pages.dev^$all +||blocchecker*.pages.dev^$all +||lookblock.pages.dev^$all +||xblocklist*.pages.dev^$all +||xsuki*.pages.dev^$all +||bxchx.pages.dev^$all +||xblockchecker*.pages.dev^$all +*$doc,ipaddress=82.27.2.198 +*$doc,ipaddress=31.59.58.163 +||lastpassrecovery.com^$all +||kgms.top^$all +||arrakis2.com^$all +sport.elwatannews.com##+js(aost, Array.prototype.indexOf, isWin) +||gomabalerainc.top^$all +||gamefiledo6.pages.dev^$all +||sportifymore.$doc +||voting-express-tl.$doc +||spotifyprimeszones-$doc +||spotify*.ct.ws^$doc +||cs2beneluxtour.com^$all +||eplproseason25.com^$all +||esportsbenelux.com^$all +||ligabenelux.com^$all +||uniqlo-nz.com^$all +||git44share.quest^$all +||survey.dawn.com^$all +/^https:\/\/d[0-9a-z]{19}\.[a-z]{3,4}-[a-z]{7,8}(?:\.[a-z]{2})?\.[a-z]{2,3}\/xm\/xm\d\/\?/$doc,to=co.in|pro|sbs +/^https:\/\/d[0-9a-z]{19}\.[a-z]{3,4}-adguard(?:\.[a-z]{2})?\.[a-z]{2,3}\/[a-z]{4}\/[a-z]{4}\/\?/$doc,to=co.in|pro|sbs +!#if env_safari +/^https:\/\/d[0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z]\.[a-z][a-z][a-z][a-z]?-[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?\.[cps][bor][os]?\.?i?n?\/xm\/xm[0-9]\/\?/$doc +/^https:\/\/d[0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z]\.[a-z][a-z][a-z][a-z]?-adguard\.[cps][bor][os]?\.?i?n?\/[a-z][a-z][a-z][a-z]\/[a-z][a-z][a-z][a-z]\/\?/$doc +!#endif +||expleboted.com^$all +||hoplariumped.com^$all +||dsu-adguard.pro^$all +||ennatcaraposin.com^$all +||antitrojanwalls.live^$all +||prizecloud.sa.com^$all +||myshielstore.xyz^$all +||credzium.co.in^$all +||imessagegreetins.de^$all +||outertune.org^$doc,reason="Not the official site" +||popcornpump.xyz^$all +||smartdefend.net^$all +||anget-direct.info^$all +||dokopka.icu^$all +||aftop10.com^$all +||simpleswap-io.at^$doc +||simpleswap.cyou^$doc +||simplesvvap.lol^$doc +||changelly.casa^$doc +||changelly.cyou^$doc +||xgram.asia^$doc +||simpleswap.casa^$doc +||easybit.site^$doc +||easybits.cc^$doc +||ff-exchange.vip^$doc +||ff-exchange.cloud^$doc +||us-aliexpress.com^$doc +||ff-exchange.help^$doc +||cnangelly.online^$doc +||changely.at^$doc +||changeenow.at^$doc +||charigelly.org^$doc +||ff-exchange.space^$doc +||ff-exchange.me^$doc +||fixedfloat.at^$doc +||pancake-exchange.org^$doc +||cosmochanger.com^$doc +||simplesvvvap.cyou^$doc +||nowchange.cyou^$doc +||fixedfloat.ac^$doc +||fixedfloat.ca^$doc +||v2-dexscreener.cc^$doc +||trezor.la^$doc +||kodiakfinance-kodiak-finance.org^$doc +||app.uniswaq.org^$doc +||kodiakfinance.net^$doc +||changenow-io.us^$doc +||exodus-wallets.io^$doc +||legder.at^$doc +||electrum-data.cc^$doc +||ff-exchahge.cyou^$doc +||jfureai.com^$doc +||pi-tarina.com^$doc +||pita-rina.com^$doc +||pitarina.com^$doc +||pitarina.net^$doc +||brs.hg-story.blue^$doc +||heisei-g.pink^$doc +||lovecatcher2025.com^$doc +||wakabairo.net^$doc +||wakayoyo.tokyo^$doc +||fuku-fuku.net^$doc +||fuku-fukuu.com^$doc +||mtes.jp^$doc +||chiyouranai.base.shop^$doc +||enisaflower.com^$doc +||enisaflowersaku.com^$doc +||fukunotsuru.com^$doc +||sb-z-uzou-fukunoturu.discover-news.tokyo^$doc +||cra-ttine.site^$doc +||cra-ttine.tech^$doc +||webexodus.created.app^$doc +||guidance.ghost.io^$doc +||trezorsuite.wasmer.app^$doc +||curve-flnance.com^$doc +||suite-trezor.click^$doc +||washingtonpost-news.com^$doc +||v3-yearn.org^$doc +||v2-solavre.com^$doc +||app-defituna.github.io^$doc +||perfume-yupoo.ru^$doc +||yupooz.com^$doc +||jersey-yupoo.com^$doc +||soccer-jersey-yupoo.com^$doc +||yupoo.site^$doc +||app.zeiron.run^$doc +||www.yupooz.com^$doc +||www.jersey-yupoo.com^$doc +||exodustrading-ai.com^$doc +||yupoosunglasses.ru^$doc +||bestyupoo.com^$doc +||jerseyyupoo.com^$doc +||yupoo.biz^$doc +||ff-excharge.cyou^$doc +||legderhealth.com^$doc +||yupooshoes.org^$doc +||yupooclothing.com^$doc +||trezordevices.io^$doc +||grabtrust.icu^ +||uniswap.org.in^$all +||nodegoai.com^$all +||trustwallet-app.io^$all +||rabby.fi-v2.to^$all +||fusebox-elavon.org^$all +||elevon-payment.com^$all +||trezorsafety.com^$all +||ff-io.cc^$all +||fixfloat.vip^$all +||exoduwallet.io^$all +||face-it.co.com^$all +||buff163.co.com^$all +||skinsmonkey.co.com^$all +||slash-on.co.com^$all +||app-slash.co.com^$all +||slash-ap.co.com^$all +||www-slash.co.com^$all +||www-mechanicsbank.co.com^$all +||spendesk.co.com^$all +||www-mechonics.top^$all +||coinomi.co.com^$all +||app-phantom.co.com^$all +||app-atomic.co.com^$all +||ray-dium.cyou^$all +||trezosuiteapp.vercel.app^$all +||tfjg-rjgu-egji-zjgi-orjg-rngj.netlify.app^$all +||ldgerlive.us^$all +||trezorsuite.at^$all +||get-treezr-suit-en.framer.media^$all +||app-ledger-desktop.wasmer.app^$all +||ledgerapp.created.app^$all +||ledgersso.created.app^$all +||ledger-wallet.gitlab.io^$all +||sute-trezr.created.app^$all +||tronssan.github.io^$all +||aomicwallet.github.io^$all +||tfjg-rjgu-eeti-zjti-ordg-rfgj.netlify.app^$all +||c066b573.smrta.pages.dev^$all +||webapp.ghost.io^$all +||webassetsapp.ghost.io^$all +||engsuites.ghost.io^$all +||createwebsite.ghost.io^$all +||guide-ledegr.framer.media^$all +||sushi-swap.org^$all +||myprepaidcentre.net^$all +||aterasig.com^$all +||logatera.net^$all +||logatera.work^$all +||useraccount-connect-chainswap.cc^$all +||amcombank.co.com^$all +||galixwallet.co.com^$all +||qroxlwallet.co.com^$all +||ateradata.com^$all +||logtoatera.com^$all +||signalatera.com^$all +||aterasigin.com^$all +||aterapanel.com^$all +||ateratera.com^$all +||lognatera.com^$all +||ateraslog.com^$all +||welatera.com^$all +||paytrace-app.co.com^$all +||scotanomect.cc^$all +||scotlacomp.cc^$all +||sparrowwallef.com^$all +||u-tronscan.com^$all +||amehuns.cc^$all +||stinglebom.cc^$all +||orca-finance.org^$all +||changenow-swap.org^$all +||changenow-exchange.org^$all +||simplswap.org^$all +||jup-dex.org^$all +||shop-bitboxswiss.de^$all +||bifboxswiss.de^$all +||gitcompiler.com^$all +||asliceza.org^$all +||designrigoroso.com^$all,reason=malicious +||roundyearfun.org^$all +||roundyearfun.com^$all +||twitter-circle.com^$all +||funxgames.me^$all +||infinitytweet.me^$all +||infinityweet.me^$all +||kawaiilabs.org^$all +||degenlabs.org^$all +||anyplacehere.online^$all +||infintytweet.me^$all +||infintytweet.com^$all +||anyplacehere.art^$all +||infinitetweet.me^$all +||infinitetweet.com^$all +||redirecttoplace.online^$all +||crimsonmods.cc^$all +||low-house.com^$all +||sites.google.com/view/newext$doc +||cloudfenceai.com^$all +||7zip.com^$all +||7zip.cloud^$all +||7-zip.com^$all +||subscriptionprocess.im^$all +||rblx-copier.vercel.app^$all +||youtube.com/watch?v=ZsAUT2PmbZk$all +||youtube.com/@rblxtoolz$all +||pc-huorong.com^$all +||kervjrfjd.pro^$all +||vexwin.gl^$all +||gamesirs.com^$all +||payout-chatgpt.com^$all +||tesseract-ocr.com^$all +||opsecdefcloud.com^$all +||checkpointviewzen.com^$all +ublockorigin.com##.title::before:style(content: 'This is not the official uBlock Origin site.' !important; font-size: 32px !important; color: red !important; font-weight: bold !important;) +ublockdns.com##main>section>div:first-child::before:style(content: 'Not related to uBlock Origin.' !important; font-size: 32px !important; color: red !important; font-weight: bold !important;) +ublockorigin.app###main::before:style(content: 'This is not the official uBlock Origin site.' !important; font-size: 32px !important; color: red !important; font-weight: bold !important;) +||cleanmymacos.org^$all +||cdn-server.beer/api/css.js +||claude-code-$doc,to=edgeone.app|pages.dev|squarespace.com +||romsns.com^$all +||aiclaude.jp^$all +##body > div[data-captcha-enable="true"] > div.cleanslate[id^="google-captcha-"] > div.captcha-box +||rpcs4.com^$all +||rpcs5.com^$all +||cyrexmods.cc^$all +||audiveris.com^$doc +! phishing emails - https://storage.googleapis.com/hmdbox/hmd_v2.html +||storage.googleapis.com/hmdbox/$doc +||hmdv2.gogomailbali.eu.org^$doc +||hybridglobalnet.com^$doc +/^https?:\/\/[a-z]+\d\.gogomailbali(\.it)?\.eu\.org\/#\?act=/$doc,match-case,to=eu.org +/^https:\/\/storage\.googleapis\.com\/[a-z]{5,}\/[a-z]+_v\d\.html#\?act=/$doc,match-case,to=storage.googleapis.com +||vtg.lol^$all +||tranyasy.com.cn^$all +||zeof-defender.pro^$all +||laptopprivacyado.com^$all +||dyiket.com^$doc +||ourdateideas.com/wp-logo.svg +||plus.rustfacepunch.com^$all +||studio-blender.com^$all +##div.card > div#cbRow.checkbox-row[onclick="startVerify()"] +||keepass-xc.com^$all +##body > div.captcha-container > div.captcha-card +-sogou.com.cn^$doc,to=com.cn +-sogou.com^$doc,to=com +||qishmusic.com.cn^$all +||sogoushurf.com^$all +-todesk.com.cn^$doc,to=com.cn +-wegame.com^$doc,to=com +-sogou.cn^$doc,to=cn +||todeskk.com^$all +||www-qishiu.com.cn^$all +||qishui-zn.hl.cn^$all +||go-todesk.hl.cn^$all +||todesk-zh.cn^$all +||todesk-zh.hl.cn^$all +||bandizip.net^$all +||bandizip.pro^$all +||bandisoft.org^$all +||qishuide.com.cn^$all +||shurufa-sogou.org.cn^$all +||sogou2.com.cn^$all +||sougoupy.com.cn^$all +||qeeyou.cn^$all +||googgle-chrrome.hl.cn^$all +||app-wg.com^$all +||www-cn-google.org.cn^$all +||bangyoul.cn^$all +||laiwujiaoyu.com^$all +||leigodnn.com^$all +||nnraytheon.com^$all +||leigod.net^$all +||leigodco.com^$all +||google-ch-chrome.com.cn^$all +||meeting-tencent.org^$all +||qishui-yinle.hl.cn^$all +||ggooglle-chrrome.com.cn^$all +||cnzh-google-apps.hl.cn^$all +||google-zhcn-chrome.com.cn^$all +||apps-chrome-zh.hl.cn^$all +||zh-googlle-chrome.hl.cn^$all +||todeskapp.com^$all +||todesk.ac.cn^$all +||todesk.im^$all +||youku.earth^$all +||youkuhonor.com^$all +||youku.tv^$all +||wps.ac.cn^$all +||cn-wps-zh.com.cn^$all +||tuba.toolg.cn^$all +||m-i4.cn^$all +||aisi-i4.com^$all +||aisi.nx.cn^$all +||zsi4.com^$all +||aisipc.net^$all +||as-i4.com.cn^$all +||office-wps-hl.hl.cn^$all +||todeskappa.com.cn^$all +||360cncn.com^$all +||qishui.team^$all +||wps-cnzh.com^$all +||dlworker.top^$all +||360edge.cn^$all +||app-google-zh.hl.cn^$all +||zhcn-googele.hl.cn^$all +||qishuui.com.cn^$all +||ms.kuugo.cc^$all +||baiduwangpan.cc^$all +||apps-google-hl.hl.cn^$all +||google-chrrome-zh.hl.cn^$all +-wps.com.cn^$doc +-youdao.com.cn^$doc +-dingding.com.cn^$doc +-chrome-chrome.com.cn^$doc +||chrome-chrome-$doc +||zh-todesk-cn.hl.cn^$all +||todesk-web.hl.cn^$all +||lineapps.com.cn^$all +||qh-qishuiyinyue.hl.cn^$all +||yu-qishui.com.cn^$all +||lline.com.cn^$all +||line-go.hl.cn^$all +||line163.com^$all +||huoronggw.org.cn^$all +||firefox-zh.com.cn^$all +||huoronggk.com^$all +||qishuiq.com.cn^$all +||google-google-chrome-google-com.hl.cn^$all +||yd-fanyi.hl.cn^$all +||mac-youdao.com^$all +||mu-qishuimusic.com.cn^$all +-qishui.com.cn^$doc +||qishui-*.com.cn^$doc +||aisiapp.com.cn^$all +||ww-qishui.com.cn^$all +||dy-qishuimusic.hl.cn^$all +||e-sanpei.com^$all +||sowgou.com.cn^$all +||qishui-eom.com.cn^$all +||qishui.bj.cn^$all +||ch-qishui-music.com.cn^$all +||aisi-zhi.com.cn^$all +||qishuimusic-cn.hl.cn^$all +||ql-qishui.com.cn^$all +||qishui-gf.com.cn^$all +||huoronggh.com^$all +||pccare-360.cn^$all +||wpp-wps.cn^$all +||gf-qishuiapp.com.cn^$all +||music-qishuiyinle.hl.cn^$all +||sagou.com.cn^$all +||testio.ecartdev.com^ +||telega.info^$all +||telega.me^$all +||life-certain.jp^$all +||kyrelune.net^$all +||roll-tooth.com^$all +||vultenok.net^$all +||zalenith.com^$all +||prasquinor.jp^$all +||cleanguard.tech^$all +||studio-obs.net^$all +||linkbrawlstars.store^$all +||todeske.com^$all +||360guard-360.cn^$all +||360weishi-360.cn^$all +||goldbergcoins.com^$all +||erahitopupikloss.com^$all +||asionamedrafter.com^$all +top##body > center + .A + .post +||labor-day-*.top^$doc +||16gift.com^$all +||top/single.php|$script,1p +||armour-inc-down.net^$all +||mkvtoolnix.org^$doc +||duskwander.com^$all +||divinex.at^$all +||ultraviolence.buzz^$all +||unic0re.$all +###hero a[download="Unicore.zip"] +###download a[download="Unicore.zip"] +###hero + div.marquee-wrap + section#games + section#features + #download +||checkmyapp.store^$all +||shrtweb.site^$all +##body > .page > #mainVerifyRow +##body > .page > .verify-row +||bisque-bison-333202.hostingersite.com^$all +||karedeutschland.com^$all +||daskljtitaskastvv.pro^$all,reason=malicious +||beroniw.com^$all,reason=malicious +||claudverification-id.beer/api.php +||invites-tracker-app.com^$all +||invite-track.click^$all +||ledger-lives-desktop.io^$all +||legder.*.us.com^$all +/\/checking\.php\?t=[a-zA-Z0-9%]+$/$doc,match-case +gemfellowship.org##+js(rmnt, script, TextDecoder) +||idverification-cdn.info^$all +##html > #bw-cf-root +||microsoft-update.support^$all +||flavamovie.com^$all +! ClickFix Errtrafficv2 +longhall.consulting##+js(rmnt, script, /document\.currentScript\.remove|0x0/) +/api/css.js^$3p,script +||great-fade.sbs^$all +||re-captcha.xyz^$all +||gtm-tools.xyz^$all +||cloudproxy.digital^$3p,xhr +##html.canvas > body.wp-singular + div[popover="manual"] +! Typosquatting which redirects to scam +||e261.net^$all +||imtolenplex.com^$all +||immanitys.com^$all +||tagesschau.tech^$doc +||shuru-baidu.com.cn^$all diff --git a/android/app/src/main/assets/extensions/ublock_origin/assets/ublock/filters.min.txt b/android/app/src/main/assets/extensions/ublock_origin/assets/ublock/filters.min.txt new file mode 100644 index 00000000..b49b99d1 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/assets/ublock/filters.min.txt @@ -0,0 +1,25342 @@ +! Title: uBlock filters +! Expires: 5 days +! Last modified: Wed, 08 Jul 2026 12:25:43 +0000 +! Diff-Path: %diffpath%#ublock-filters +! Diff-Expires: 317 minutes +! License: https://github.com/uBlockOrigin/uAssets/blob/master/LICENSE +! *** uAssets:filters/filters.txt *** +*_ad_$media,domain=youtube.com,3p +! @@||youtube.com/get_video_info?*timedtext_editor$xhr,1p +tv.youtube.com##+js(trusted-replace-xhr-response, '"adPlacements"', '"no_ads"', /playlist\?list=|\/player(?:\?.+)?$|watch\?[tv]=/) +!#if !cap_html_filtering +www.youtube.com##+js(trusted-replace-xhr-response, /"adPlacements.*?([A-Z]"\}|"\}{2\,4})\}\]\,/, , /playlist\?list=|\/player(?:\?.+)?$|watch\?[tv]=/) +www.youtube.com##+js(trusted-replace-xhr-response, /"adPlacements.*?("adSlots"|"adBreakHeartbeatParams")/gms, $1, /\/player(?:\?.+)?$/) +www.youtube.com##+js(trusted-replace-fetch-response, '"adPlacements"', '"no_ads"', player?) +www.youtube.com##+js(trusted-replace-fetch-response, '"adSlots"', '"no_ads"', player?) +!#else +||www.youtube.com/playlist?list=$xhr,1p,replace=/"adPlacements"/"no_ads"/ +||www.youtube.com/playlist?list=$xhr,1p,replace=/"adSlots"/"no_ads"/ +||www.youtube.com/watch?$xhr,1p,replace=/"adPlacements"/"no_ads"/ +||www.youtube.com/watch?$xhr,1p,replace=/"adSlots"/"no_ads"/ +||www.youtube.com/youtubei/v1/player?$xhr,1p,replace=/"adPlacements"/"no_ads"/ +||www.youtube.com/youtubei/v1/player?$xhr,1p,replace=/"adSlots"/"no_ads"/ +!#endif +m.youtube.com,music.youtube.com,tv.youtube.com,www.youtube.com,youtubekids.com,youtube-nocookie.com##+js(set, ytInitialPlayerResponse.playerAds, undefined) +m.youtube.com,music.youtube.com,tv.youtube.com,www.youtube.com,youtubekids.com,youtube-nocookie.com##+js(set, ytInitialPlayerResponse.adPlacements, undefined) +m.youtube.com,music.youtube.com,tv.youtube.com,www.youtube.com,youtubekids.com,youtube-nocookie.com##+js(set, ytInitialPlayerResponse.adSlots, undefined) +m.youtube.com,music.youtube.com,tv.youtube.com,www.youtube.com,youtubekids.com,youtube-nocookie.com##+js(set, playerResponse.adPlacements, undefined) +m.youtube.com,music.youtube.com,youtubekids.com,youtube-nocookie.com##+js(json-prune, playerResponse.adPlacements playerResponse.playerAds playerResponse.adSlots adPlacements playerAds adSlots important) +youtube.com##.ytlr-horizontal-list-renderer__items > .yt-virtual-list__container > .yt-virtual-list__item--visible.yt-virtual-list__item--selected.yt-virtual-list__item:has-text(Ad) +||googlevideo.com/initplayback?source=youtube&*c=TVHTML5&*oad=$xhr,domain=youtube.com +! Shorts Ad +m.youtube.com,music.youtube.com,tv.youtube.com,www.youtube.com,youtubekids.com,youtube-nocookie.com##+js(json-prune-fetch-response, reelWatchSequenceResponse.entries.[-].command.reelWatchEndpoint.adClientParams.isAd entries.[-].command.reelWatchEndpoint.adClientParams.isAd, , propsToMatch, url:/reel_watch_sequence?) +m.youtube.com,music.youtube.com,tv.youtube.com,www.youtube.com,youtubekids.com,youtube-nocookie.com##+js(json-prune, entries.[-].command.reelWatchEndpoint.adClientParams.isAd) +||youtube.com/youtubei/v1/get_watch?$xhr,1p,replace=/"adPlacements"/"no_ads"/ +||youtube.com/youtubei/v1/get_watch?$xhr,1p,replace=/"adSlots"/"no_ads"/ +newser.com##+js(aeld, load, Object) +funnyand.com##.ad-unit-desktop +beforeitsnews.com##[src*="/banner"] +truthlion.com##.ad-banner-revcontent +westword.com##.AirBillboardInlineContentresponsive +! Users should not have to punch holes in their blockers if it can be avoided. +*/fuckadblock-$script,redirect=fuckadblock.js-3.2.0:5 +*/fuckadblock.$script,redirect=fuckadblock.js-3.2.0:5 +*/blockadblock.$script,redirect=fuckadblock.js-3.2.0:5 +*/blockadblock-$script,redirect=fuckadblock.js-3.2.0:5 +*/wp-adblock-$script,redirect=fuckadblock.js-3.2.0:5 +tvspielfilm.de##.promo-box +tvspielfilm.de##table.info-table tr:has(td[colspan] .promo-box-any-banner):remove() +tvtoday.de##+js(nosiif, fireEvent, 500) +@@||tvtoday.de^$ghide +@@||a.bf-ad.net/makabo/ads_fol_init.js$script,domain=chip.de +||chip.de/*&$script,1p +chip.de##.js_download_button:has(> a.Download-Button--Free[href*="withinstaller"][href*="lastchanged"]) +chip.de##+js(json-prune, enabled, force_disabled) +##[href*="/afu.php"] +onrpg.com##a[href*="mmo-it.com/"] +onrpg.com##[href^="http://server.cpmstar.com/click.aspx"] +onrpg.com###onrpg-hotbox-widget +||adnxs.com/*/sport1.js$script,redirect=noopjs,domain=sport1.de +||acdn.adnxs.com/as/1h/pages/sport1_mediathek.js$script,redirect=noopjs,domain=sport1.de +||asadcdn.com/adlib/*$script,redirect=noopjs,domain=sport1.de +@@||tag.aticdn.net^$script,domain=sport1.de +@@||asadcdn.com/adlib/pages/sport1.js$script,domain=sport1.de +sport1.de##+js(aeld, load, hard_block) +sport1.de##.s1-ad +sport1.de##strong:has-text(/anzeige/i) +vaughn.live##+js(nosiif, header_menu_abvs, 10000) +vaughn.live##.vs_v9_stream_content_abvs +vaughn.live##.vs_v9_header_menu_abvs +vaughn.live##div[id$="-ad"][id^="vs_v9_"] +! Computers seizing thanks to these moronic scripts leading to system-wide out +! of memory condition +||twnmm.com/js/*/adobe_audience_manager$script,redirect=noopjs +||twnmm.com/js/*/dfpad/*$script,redirect=noopjs +allmusic.com##+js(no-fetch-if, adsbygoogle) +allmusic.com##.advertising +redtube.*###paid_tabs_list +pornhub.*##div[id^="customSkin"] +pornhub.*##div.container:style(margin-top: 0px !important) +youjizz.com##+js(noeval) +youjizz.com###desktopFooterPr +youjizz.com##.top_pr +||indiatimes.com/detector$script +||static.clmbtech.com^$script,important,domain=indiatimes.com +||chartbeat.com/js/chartbeat.js$script,important,domain=indiatimes.com +||tags.crwdcntrl.net^$script,important,domain=indiatimes.com +economictimes.indiatimes.com##.active > ul > li:has-text(Ad:) +indiatimes.com##[onclick] .btxt:has-text(/Ad/):xpath(../../..) +indiatimes.com#@#a[onclick*="/click.htm?"] +indiatimes.com##[onclick] p:has-text(/Ad/):xpath(../../..) +indiatimes.com,samayam.com##[onclick] p:matches-css-before(content:/Ad /):xpath(../..):not(p:has-text(/MAHA/i)):not(p:has-text(/Times/i)) +samayam.com##:xpath(//span[(text()='Ad')]/../../..) +m.economictimes.com##H2:has-text(/Promoted/) + DIV +m.economictimes.com##h2:has-text(/Promoted/) +||m.economictimes.com/mpetat/commons/images/rbc-red.png$image +economictimes.indiatimes.com##div h2:has(span:matches-css-before(content: /Sponsored/)) +economictimes.indiatimes.com##div h2:has(span:matches-css-before(content: /Sponsored/)) + div +indiatimes.com##h2:has-text(/Promoted/) + div +indiatimes.com##h2:has-text(/Promoted/) +indiatimes.com##.wzrk-overlay +||media.indiatimes.in/idthat/commons/images/rbc-gray.png$image +indiatimes.com##[onclick] h5:has-text(/Ad/):xpath(../../..) +m.timesofindia.com##.brand_ctn:has-text(/Ad:/):xpath(../..) +m.timesofindia.com##span:has-text(/Ad:/):xpath(../..) +m.timesofindia.com##p:has-text(/Ad:/):xpath(../../..) +indiatimes.com##p:matches-css(background-image: /colombia-icon/):xpath(../..) +indiatimes.com##div:matches-css(background-image: /colombia_/):xpath(../..) +m.timesofindia.com##.asAffiliate +seithy.com##.slick-track +indiatimes.com##.PPD_ADS_JS +timesofindia.indiatimes.com##+js(set, nsShowMaxCount, 0) +||assets.toiimg.com/affiliates/sdk/v2.js$script,domain=indiatimes.com|timesofindia.com +||assets.toiimg.com/affiliates/sdk/v1.js$script,domain=indiatimes.com|timesofindia.com +timesofindia.indiatimes.com##.nonAppView > .mPws3 +timesofindia.indiatimes.com##div[class*="personaliseWidgetLoader"] +timesofindia.indiatimes.com##.sidebar_ad_fix .imageBanner +! antiadb +timesofindia.indiatimes.com##+js(no-fetch-if, toiads) +! punemirror .com banner ads +||punemirror.com/api/v1$xhr,1p +||malayalam.samayam.com/*/amazon_widget.cms?type=amazondeal$frame +! interstitial page +economictimes.indiatimes.com##+js(set, objVc.interstitial_web,'') +economictimes.indiatimes.com##+js(nosiif, adb) +maharashtratimes.com##.ad1 +maharashtratimes.com##.colombia +*/pwafeeds/amazon_$frame +||economictimes.com/amazonsale_widget.cms$xhr +economictimes.com##.amazon.ttpwidget +marathi.indiatimes.com##[href^="https://marathi.indiatimes.com/amazon-best-deals"] +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=indiatimes.com|iamgujarat.com|vijaykarnataka.com|tamil.samayam.com|telugu.samayam.com|malayalam.samayam.com,redirect=google-ima.js +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=m.economictimes.com +||dealspakki.com^$frame,domain=eisamay.com|iamgujarat.com|indiatimes.com|maharashtratimes.com|samayam.com|vijaykarnataka.com +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=maharashtratimes.com,important +! ads placeholders +eisamay.com,iamgujarat.com,indiatimes.com,maharashtratimes.com,samayam.com,vijaykarnataka.com##.wdt-taboola +eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##.pwa-deals.wdt_amz +eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##div[class="news-card col4"] +eisamay.com,iamgujarat.com,indiatimes.com,samayam.com,vijaykarnataka.com##.advertorialwrapper +eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##.atf-wrapper +eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##.top-atf-enabled-wrapper +health.economictimes.indiatimes.com##.layer-overlay +health.economictimes.indiatimes.com##.article-detail-ad-slot +economictimes.com,eisamay.com,iamgujarat.com,indiatimes.com,maharashtratimes.com,samayam.com,vijaykarnataka.com##.fbnad +economictimes.com,eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##.ad1 +economictimes.com,eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##div > .ad-wrapper-625 +economictimes.com,eisamay.com,indiatimes.com,samayam.com,vijaykarnataka.com##.ads-between-story.story-content +indiatimes.com,maharashtratimes.com,samayam.com,vijaykarnataka.com##[href^="https://apnabazaar.indiatimes.com/"] +eisamay.com###holderContainer +educationtimes.com##div[class]:has(> div[class] > div[id^="div-gpt-ad"]) +||svonm.com/hd-main.js$script,redirect=hd-main.js,domain=kicker.de|myspass.de|spielaffe.de|tele5.de +aranzulla.it##+js(aopr, navigator.userAgent) +*$script,domain=aranzulla.it,redirect-rule=noopjs +aranzulla.it##.banner:remove() +aranzulla.it##[id^="ad"]:remove() +||paywall.folha.uol.com.br/wall.jsonp?callback=paywall.inicio$domain=blogfolha.uol.com.br|educacao.uol.com.br|folha.uol.com.br +||jsuol.com.br/*/detectadblock/$script,important,domain=uol.com.br +www.uol##.content-lightbox +www.uol##.overlay-lightbox +uol.com.br##.bg-banner +uol.com.br##[id^="banner-300x250"]:remove() +||popads.net/pop.js$script,redirect=popads.net.js +businesstoday.in###zedoads1:style(height: 1px !important) +businesstoday.in###zedoads2:style(height: 1px !important) +businesstoday.in###zedotopnavads:style(height: 1px !important) +businesstoday.in###zedotopnavads1:style(height: 1px !important) +businesstoday.in###adbocker_alt +businesstoday.in##.adblocker-container +businesstoday.in###story-maincontent:style(display: block !important) +indiatoday.in##.ad_bn.row +indiatoday.in,intoday.in###adbocker_alt +indiatoday.in,intoday.in###zedoads1:style(height: 1px !important) +indiatoday.in,intoday.in###zedoads2:style(height: 1px !important) +indiatoday.in,intoday.in##.adblockcontainer:style(display: block !important) +||zedo.com^$script,important,domain=indiatoday.in|intoday.in +||googlesyndication.com^$script,important,domain=indiatoday.in|intoday.in +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###stream_pagelet div[id^="hyperfeed_story_id_"]:has(a.uiStreamSponsoredLink) +! "People You May Know": EasyList tries to block these, might as well block them fully +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###stream_pagelet div[id^="hyperfeed_story_id_"]:has(h6:has-text(People You May Know)) +touch.facebook.com,mtouch.facebook.com,x.facebook.com,iphone.facebook.com,m.beta.facebook.com,touch.beta.facebook.com,mtouch.beta.facebook.com,x.beta.facebook.com,iphone.beta.facebook.com,m.facebook.com,b-m.facebook.com,mobile.facebook.com,touch.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,mtouch.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,x.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,iphone.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,touch.beta.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,m.facebook.com,m.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,b-m.facebook.com,b-m.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion,mobile.facebook.com,mobile.facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##article:has(footer > div > div > a[href^="/friends/center/?fb_ref="]) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.ego_section:has(a.adsCategoryTitleLink) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###stream_pagelet [id^="hyperfeed_story_id_"]:has(span._4dcu) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.ego_column:has(a[href^="/campaign/landing"]) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.ego_section:has(a[href^="/ad_campaign"]) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.userContentWrapper:has(a[href*="/ads/"]):not(:has(a[href*="/ads/preferences"])) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion#@#div[id^="hyperfeed_story_id_"]:has(a[href*="utm_campaign"]) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.userContentWrapper>div div>span>span:has-text(/^Suggested Post$/) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[id^="hyperfeed_story_id_"]:has(div > span:has(abbr .timestampContent):matches-css(display: none)) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##.ego_section:has(a[href*="campaign_id"]) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[id^=hyperfeed_story_id_]:has(span[data-ft="{\"tn\":\"j\"}"]) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion#?#.pagelet-group .pagelet:has(a:has-text(/Sponsored|Create ad|Crear un anuncio|Publicidad/)) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[role="complementary"] div:not([class]):not([id]) > span:not([class]):not([id]):not([aria-labelledby]) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[role="region"] + div[role="main"] div[role="article"] div[style="border-radius: max(0px, min(8px, ((100vw - 4px) - 100%) * 9999)) / 8px;"] > div[class]:not([class*=" "]) +! !#if env_chromium +! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="en"] div[aria-posinset] svg[style$="width: 56.8906px;"] use:upward(div[aria-posinset]) +! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="pl"] div[aria-posinset] svg[style$="width: 78.5465px;"] use:upward(div[aria-posinset]) +! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="vi"] div[aria-posinset] svg[style$="width: 65.0684px;"] use:upward(div[aria-posinset]) +! !#endif +! !#if env_firefox +! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="en"] div[aria-posinset] svg[style$="width: 59px;"] use:upward(div[aria-posinset]) +! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="pl"] div[aria-posinset] svg[style$="width: 80.8px;"] use:upward(div[aria-posinset]) +! facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##html[lang="vi"] div[aria-posinset] svg[style$="width: 65px;"] use:upward(div[aria-posinset]) +! !#endif +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[aria-posinset]:has(a[aria-label="広告"]):style(height: 0 !important; overflow: hidden !important;) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##:matches-path(/^\/(\?[a-z]+=\w+)?$/) div[aria-posinset] :is(h3, h4) span > a[href]:not([href^="/groups/"]):not([href*="section_header_type"]):matches-attr(href="/__cft__\[0\]=[-\w]{290,}/"):upward(div[aria-posinset]):style(height: 0 !important; overflow: hidden !important;) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[aria-describedby]:not([aria-posinset]) :is(h3, h4) span > a[href]:not([href^="/groups/"]):not([href*="section_header_type"]):matches-attr(href="/__cft__\[0\]=[-\w]{290,}/"):upward(div[aria-describedby]):style(height: 0 !important; overflow: hidden !important;) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###watch_feed div:not([class]) > div:not([class]) div[class] span[class] > a span[aria-labelledby]:has(> span[style="display: flex;"] > span[class]:has-text(/^S$/)):has(> span[style="display: flex;"] > span[class]:has-text(/^p$/)):has(> span[style="display: flex;"] > span[class]:has-text(/^d$/)):upward(div:not([class]) > div:not([class])):style(height: 0 !important; overflow: hidden !important;) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###watch_feed div:not([class]) > div:not([class]) div[class] span[class] > a[aria-label="広告"]:upward(div:not([class]) > div:not([class])):style(height: 0 !important; overflow: hidden !important;) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion###watch_feed div:not([class]) > div:not([class]) div[class] [class] > a[href*="utm_source=facebook"] span[class] > span[class][style*="-webkit-line-clamp"]:has-text(広告):upward(div:not([class]) > div:not([class])):style(height: 0 !important; overflow: hidden !important;) +facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##:matches-path(/search/) div[role="article"] span > a[href]:not([href^="/groups/"]):not([href*="section_header_type"]):matches-attr(href="/__cft__\[0\]=[-\w]{265,}/"):upward([role="article"]):style(height: 0 !important; overflow: hidden !important;) +!#if env_chromium +! web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node.sponsored_data.ad_id) +!#else +! web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.[-].__bbox.result.data.node.sponsored_data.ad_id) +!#endif +web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.serpResponse.results.edges.[-].relay_rendering_strategy.view_model.story.sponsored_data.ad_id) +!#if cap_html_filtering +||facebook.com/api/graphql/$xhr,replace=/\{"node":\{"role":"SEARCH_ADS"[^\n]+?cursor":[^}]+\}/{}/g,domain=web.facebook.com|www.facebook.com +||facebook.com/api/graphql/$xhr,replace=/\{"node":\{"__typename":"MarketplaceFeedAdStory"[^\n]+?"cursor":(?:null|"\{[^\n]+?\}"|[^\n]+?MarketplaceSearchFeedStoriesEdge")\}/{}/g,domain=web.facebook.com|www.facebook.com +||facebook.com/api/graphql/$xhr,replace=/\{"node":\{"__typename":"VideoHomeFeedUnitSectionComponent"[^\n]+?"sponsored_data":\{"ad_id"[^\n]+?"cursor":null\}/{}/,domain=web.facebook.com|www.facebook.com +!#else +web.facebook.com,www.facebook.com##+js(trusted-replace-xhr-response, /\{"node":\{"role":"SEARCH_ADS"[^\n]+?cursor":[^}]+\}/g, {}, /api/graphql) +web.facebook.com,www.facebook.com##+js(trusted-replace-xhr-response, /\{"node":\{"__typename":"MarketplaceFeedAdStory"[^\n]+?"cursor":(?:null|"\{[^\n]+?\}"|[^\n]+?MarketplaceSearchFeedStoriesEdge")\}/g, {}, /api/graphql) +web.facebook.com,www.facebook.com##+js(trusted-replace-xhr-response, /\{"node":\{"__typename":"VideoHomeFeedUnitSectionComponent"[^\n]+?"sponsored_data":\{"ad_id"[^\n]+?"cursor":null\}/, {}, /api/graphql) +!#endif +web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.node.story.sponsored_data.ad_id) +web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.marketplace_search.feed_units.edges.[-].node.story.sponsored_data.ad_id) +web.facebook.com,www.facebook.com##+js(json-prune, require.0.3.0.__bbox.require.[].3.1.__bbox.result.data.viewer.marketplace_feed_stories.edges.[-].node.story.sponsored_data.ad_id) +web.facebook.com,www.facebook.com###seo_pivots ~ div > div[style^="max-width"] > div[class] > div[style^="max-width"]:has(a[href^="/ads/about/?"]) +web.facebook.com,www.facebook.com##+js(json-prune-xhr-response, data.viewer.instream_video_ads data.scrubber, , propsToMatch, /api/graphql) +web.facebook.com,www.facebook.com##+js(json-edit, ..node[?.__typename=="MarketplaceFeedAdStory"]) +web.facebook.com,www.facebook.com##+js(jsonl-edit-xhr-response, ..node[?.__typename=="MarketplaceFeedAdStory"], propsToMatch, /graphql) +web.facebook.com,www.facebook.com##:matches-path(/marketplace) div[role="main"] div[style^="--x-maxInlineSize:"] a[attributionsrc^="/privacy_sandbox/comet/register/source/?xt="] +web.facebook.com,www.facebook.com##:matches-path(/marketplace/item) a[attributionsrc^="/privacy_sandbox/"]:is([aria-label$=" anunciante"][aria-label*=" d"],[aria-label="Lien de l’annonceur"],[aria-label$="autan pengiklan"],[aria-label="Adverteerderskakel"],[aria-label="Link sa nag-advertise"],[aria-label="Link oglašivača"],[aria-label="Odkaz od inzerenta"],[aria-label="Link fra annoncør"],[aria-label="Werbelink"],[aria-label="Link ng advertiser"],[aria-label="Link dell'inserzionista"],[aria-label="Veza oglašivača"],[aria-label="Manisautilirijimut kasurvik"],[aria-label="Kiunganishi cha mtangazaji"],[aria-label="Lyen konpayi ki fè piblisite a"],[aria-label="Reklāmdevēja saite"],[aria-label="Reklamuotojo nuoroda"],[aria-label="Hirdető hivatkozása"],[aria-label="Link tar-reklamatur"],[aria-label="Adverteerderslink"],[aria-label="Annonsørlenke"],[aria-label="Link reklamodawcy"],[aria-label="Link promotor"],[aria-label="Lidhja e reklamuesit"],[aria-label="Odkaz na inzerenta"],[aria-label="Povezava oglaševalca"],[aria-label="Mainostajan linkki"],[aria-label="Annonsörlänk"],[aria-label="Liên kết của nhà quảng cáo"],[aria-label="Reklamveren bağlantısı"],[aria-label="Σύνδεσμος διαφημιζόμενου"],[aria-label="Връзка на рекламодател"],[aria-label="Линк на огласувач на реклами"],[aria-label="Сурталчлагчийн холбоос"],[aria-label="Ссылка рекламодателя"],[aria-label="Веза оглашивача"],[aria-label="Посилання рекламодавця"],[aria-label="რეკლამის განმთავსებლის ბმული"],[aria-label="קישור של מפרסם"],[aria-label="ایڈورٹائزر کا لنک"],[aria-label="رابط المعلن"],[aria-label="जाहिरातदार लिंक"],[aria-label="विज्ञापनदाता द्वारा लिंक"],[aria-label="বিজ্ঞাপনদাতা লিংক"],[aria-label="বিজ্ঞাপনদাতার লিঙ্ক"],[aria-label="જાહેરાતકર્તા લિંક"],[aria-label="అడ్వర్టయిజర్ లింక్"],[aria-label="പരസ്യദാതാവിന്റെ ലിങ്ക്"],[aria-label="වෙළඳ ප්‍රචාරක සබැඳිය"],[aria-label="ลิงก์ผู้ลงโฆษณา"],[aria-label="광고주 링크"],[aria-label^="廣告"][aria-label$="連結"],[aria-label="广告主提供的链接"],[aria-label="広告主によるリンク"]) +!facebook.com,facebookwkhpilnemxj7asaniu7vnjjbiltxjqhye3mhbshg7kx5tfyd.onion##div[role="feed"] > div[class]:has([data-ad-preview]) +ndtv.com###ndtv-myModal +ndtv.com##body:style(overflow: auto !important) +wetteronline.*##+js(aopr, __eiPb) +wetteronline.*##^script:has-text(runCount) +wetteronline.*###topcontainer +wetteronline.de###woRect +wetteronline.de###woCsiAdContent +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=m.timesofindia.com,redirect=google-ima.js +@@||m.photos.timesofindia.com^$ghide +||static.toiimg.com/ad-banner*/photo/*$image,redirect=2x2.png,domain=m.timesofindia.com +m.timesofindia.com##.adsinview +timesofindia.com##+js(aopr, detector) +timesofindia.indiatimes.com##+js(aeld, , adb) +m.timesofindia.com,timesofindia.indiatimes.com##+js(nostif, adb) +||indiatimes.com^$image,redirect-rule=1x1.gif +m.aajtak.in##body > #adbocker_alt.adblocker-page +m.aajtak.in##body > .secArticleTitle:style(display: block !important) +m.aajtak.in##body > .pubTime:style(display: block !important) +m.aajtak.in##body > .secArticleImage:style(display: block !important) +m.aajtak.in##body > .storyBody:style(display: block !important) +/amazon_products_prod.js$script,domain=aajtak.in +motherless.com##+js(set, _ml_ads_ns, null) +motherless.com##+js(acs, jQuery, cookie) +||x.shopsavvy.com^$3p +||uim.tifbs.net/js/*.js$script,redirect=noopjs,domain=gmx.*|web.de +web.de##.main [data-ac]:empty +gmx.*##.main [data-ac]:empty +web.de##.iba-acceptable:has-text(/Anzeige|Info/) +||js.ui-portal.de/uim/abd/live/abd.min.js +*$image,redirect-rule=1x1.gif,domain=web.de +@@*$ghide,domain=web.de|gmx.* +web.de#@#.ad +web.de##.ad:style(position:absolute !important; left:-10000px !important; display:block !important; pointer-events: none !important;) +||web.de/*/nonfriendlyiframe.html$frame,1p +web.de##+js(rmnt, script, '"Anzeige"') +web.de##div[data-service-slot-initialized] +golem.de##+js(acs, showAds) +golem.de##+js(nostif, adBlockerDetected) +golem.de##+js(nostif, show) +||video.golem.de/*/scripts/radiant/homad$xhr,redirect=nooptext,domain=golem.de +golem.de##[href^="https://ads.golem.de/"] +golem.de##.sp-article:has(span:matches-css-before(content:/Anzeige/i)) +golem.de##.list-articles>li:has(.icon-addy:matches-css-before(content: "Anzeige")) +golem.de##[data-article-id]:has([class]:matches-css-before(content:/ANZEIGE/)) +@@||bild.de^$ghide +bild.de#@##fullBanner +bild.de#@##powerplace +bild.de#@##subchannelBanner1_1 +bild.de#@##subchannelBanner2_2 +bild.de#@#.cbErotikContentbar15 +bild.de#@#.contentbar +bild.de#@#.eyecatcher +bild.de#@#.footerbar +bild.de#@#.jetzt_aufnehmen +bild.de#@#.servicelinks +bild.de#@#.tea-rectangle +bild.de#@#.txe +bild.de#@#.yield +bild.de#@#.rectangle +bild.de#@#.fullbanner +bild.de#@#.ads +bild.de##div:matches-css-before(content:/Anzeige/i) +bild.de##.ad-wrapper +bild.de##aside[data-type="ad"] +||tagger.opecloud.com^$xhr,redirect=noop.txt,domain=bild.de +bild.de##+js(aopr, SmartAdServerASMI) +!#if cap_html_filtering +||bild.de^$doc,replace=/"adBlockWallEnabled":true/"adBlockWallEnabled":false/ +!#else +bild.de##+js(rpnt, script, "adBlockWallEnabled":true, "adBlockWallEnabled":false) +!#endif +!#if !ext_ubol +bild.de##+js(json-prune, CLIENT_STORE_INITIAL_STATE.pageAggregation.advertisement.adBlockWallEnabled) +bild.de##+js(json-prune, CLIENT_STORE_INITIAL_STATE.pageAggregation.advertisement.adsOn) +!#else +bild.de##+js(trusted-replace-argument, JSON.parse, 0, repl:/"adBlockWallEnabled":true/"adBlockWallEnabled":false/, condition, adBlockWallEnabled) +!#endif +sport.bild.de#@#.ad-wrapper +spiele.bild.de##+js(nano-stb, , 10000) +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,xhr,domain=spiele.bild.de +spiele.bild.de##div[id^="ad-landingpage-"] +spiele.bild.de##div[id^="ad-gamepage-"] +spiele.bild.de##.ad-vertical-box +||servedby.adbility-media.com^$3p +bild.de##.main-nav .utilities > li:style(margin-left:-0.5px !important) +! */www.bild.de/$media,redirect=noopmp3-0.1s +! bild.de##+js(nostif, , 101-250) +sueddeutsche.de##+js(aopr, _sp_._networkListenerData) +sueddeutsche.de##+js(aopw, SZAdBlockDetection) +sueddeutsche.de##+js(set, _sp_.config, undefined) +8muses.com##.a-image +8muses.com###content > div > .gallery > a.t-hover.c-tile:has(iframe[src^="/banner/"]) +8muses.com##[href^="https://bit.ly/"] +! Popups triggered by webrtc +2ddl.*,allitebooks.*,bonstreams.net,convertinmp4.com,ddlvalley.me,dramamate.*,eztv.*,fluvore.com,kiss-anime.*,letmewatchthis.*,mkvcage.*,oceanoffgames.com,skidrowcrack.com,uptobox.com,yts.*,zooqle.*##+js(nowebrtc) +gamer.com.tw##img[onload="AntiAd.check(this)"] +gamer.com.tw##+js(aopr, AntiAd.check) +skidrowreloaded.com##+js(acs, open) +skidrowreloaded.com##+js(no-fetch-if, /^/) +!#if cap_html_filtering +skidrowreloaded.com##^script:has-text(adserverDomain) +!#else +skidrowreloaded.com##+js(rmnt, script, adserverDomain) +!#endif +skidrowreloaded.com##+js(aeld, click, showNotice) +! skidrowcodexgames.com ads +skidrowcodexgames.com##[class^="aligncenter wp-image-"] +*$script,3p,denyallow=googleapis.com,domain=skidrowcodexgames.com +! Sourcepoint +autobytel.com,cesoirtv.com,huffingtonpost.co.uk,huffingtonpost.com,moviefone.com,playboy.de##+js(aopw, _sp_) +faz.net##+js(acs, $, _sp_._networkListenerData) +eltern.de,essen-und-trinken.de,focus.de##+js(aopr, _sp_.mms.startMsg) +20min.ch,al.com,alphr.com,autoexpress.co.uk,bikeradar.com,blick.ch,chefkoch.de,cyclingnews.com,democratandchronicle.com,denofgeek.com,esgentside.com,evo.co.uk,exclusivomen.com,ft.com,gala.de,gala.fr,heatworld.com,itpro.co.uk,livingathome.de,masslive.com,maxisciences.com,metabomb.net,mlive.com,motherandbaby.co.uk,motorcyclenews.com,muthead.com,neonmag.fr,newyorkupstate.com,ngin-mobility.com,nj.com,nola.com,ohmymag.*,oregonlive.com,pennlive.com,programme.tv,programme-tv.net,radiotimes.com,silive.com,simplyvoyage.com,stern.de,syracuse.com,theweek.co.uk,ydr.com##+js(aopr, _sp_._networkListenerData) +car.com,codeproject.com,familyhandyman.com,goldderby.com,headlinepolitics.com,html.net,indiewire.com,marmiton.org,mymotherlode.com,nypost.com,realgm.com,tvline.com,wwd.com##+js(aopw, _sp_) +codeproject.com##+js(aopr, retrievalService) +usatoday.com##+js(aopr, _sp_._networkListenerData) +usatoday.com##[aria-label="advertisement"] +usatoday.com##[data-gl-method="initTaboola"] +usatoday.com##.gnt_n:style(top: 0 !important; margin-top: 0 !important;) +familyhandyman.com##.ad +familyhandyman.com##.advertisement +familyhandyman.com##.cm-ad-unit-section +cwseed.com##+js(aopr, admrlWpJsonP) +||adition.com^$important,domain=spiegel.de +@@||ad.yieldlab.net^$script,domain=spiegel.de,badfilter +||cdn.prod.www.spiegel.de/public/spon/generated/web/js/header*.js$script,1p +spiele.spiegel.de###ad-gamepage-top +spiele.spiegel.de##.ad +spiele.spiegel.de##div#ad-gamepage-bottom +spiegel.de##[data-area="affiliatebox"] +spiegel.de##[data-area="vouchers"] +quora.com##.PromptsList +quora.com##.AdBundle +quora.com##.AdStory +!#if env_mobile +quora.com##.top_slot +!#endif +quora.com##div[id$="_content_box"] +quora.com##.lower_slot +quora.com##[disable_auto_login*="True"] +quora.com##.FeedStory.feed_item > div > div:has-text(/by Quora for Business/i) +quora.com##.Toggle.SimpleToggle.ToggleAnswerFooterWrapper > div:has-text(/Promoted/i) +! from abp cv list for https://github.com/uBlockOrigin/uAssets/issues/8032 +quora.com##.u-margin-top--lg+div[class="UnifiedAnswerPagedList PagedListFoo unified"][id$="_paged_list"] +quora.com##.pagedlist_item > div[id$="_paged_list"] +quora.com##.answer_auto_expanded_comments + div > div.feed_expand +quora.com##.feedback_wrapper.hidden:not(.negative_action) + .FeedStory.HyperLinkFeedStory.feed_item +quora.com##div[class="question_main_col"] > div:nth-child(3) > div[class="UnifiedAnswerPagedList PagedListFoo unified"] +quora.com##div[class="pagedlist_item"] div[id*="paged_list"] +quora.com##.q-box.qu-borderAll>.q-box>div>div[class^="Box-sc-"]>div:not([class]) +quora.com##.q-box.qu-borderTop>[class^="Box-sc-"]>div:not([class]) +quora.com##div > [class^="Box-"] > div > .q-box.qu-pb--tiny.qu-pt--medium.qu-px--medium +quora.com##.qu-bg--white>[class^="Box-"] .qu-pt--medium +quora.com##.q-box.qu-borderTop>[class^="Box-"] .q-box.qu-pt--medium.qu-pb--tiny +quora.com##.q-box.qu-borderAll>.q-box>div:not([class="q-box"])>[class^="Box-"] +quora.com##.q-box.qu-borderAll.qu-bg--white>.q-box>div>[class="q-box "]>[class="q-box"] +quora.com##[class="q-box qu-borderTop"]>[class="q-box "] +quora.com##[class="q-box qu-bg--white"]>[class="q-box "]>[class="q-box"] +quora.com##.dom_annotate_multifeed_bundle_AdBundle +quora.com##div[class^="q-box dom_annotate_question_answer_item_"] .q-box.qu-borderTop:has(.dom_annotate_google_ad) +eurogamer.net,rockpapershotgun.com,vg247.com##+js(aopw, yafaIt) +eurogamer.de,eurogamer.es,eurogamer.it,eurogamer.net,eurogamer.pt,rockpapershotgun.com,vg247.com##+js(aopr, _sp_.mms.startMsg) +||bit.ly^$popup,domain=eurogamer.net +eurogamer.net,rockpapershotgun.com##.leaderboards +eurogamer.*##.advert +gamestorrents.*,gogoanimes.*,limetorrents.*,piratebayz.*##+js(aopr, LieDetector) +mediafire.com##+js(aeld, click, ClickHandler) +mediafire.com##+js(aeld, load, IsAdblockRequest) +mediafire.com##+js(nostif, InfMediafireMobileFunc, 1000) +gamestorrents.*,gogoanimes.*,limetorrents.*,piratebayz.*##^script:has-text(AaDetector) +mediafire.com##.errorExtraContent +mediafire.com##.center:style(margin-top:50px !important) +||rule34.us/ad.html$frame +rule34.xxx##+js(aopr, newcontent) +rule34.xxx##[src^="https://rule34.xxx/aa/"] +rule34.xxx###right-col > div > #lbot1.a_list +rule34.xxx##body > a > div[id]:style(background: var(--c-bg, #aae5a3) !important) +rule34.xxx###halloween +rule34.xxx##.dp +||rule34.xxx/static/fp/$image,1p +||rule34.xxx/images/clicker.png +realbooru.com##+js(aopr, ExoLoader.serve) +realbooru.com##.adzoneTest +realbooru.com##.flex_content_main > div[style$="min-height: 125px;"] +||rule34.xxx/*/nutaku/ +! rule34.top etc. popups +||topxxxlist.net/eroclick.js +/pop.js$domain=booru.*|erotic-beauties.com|hardsex.cc|rule34.top|sex-movies.biz|tube18.sexy|xvideos.name +||rule34.top^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation +||rule34.top/eroclick.js$script,1p +xbooru.com##a[href^="https://xbooru.com/c.html"] +||xbooru.com^$frame,1p +@@||kbb.com^$ghide +kbb.com##[id^="kbbAds"], [id^="kbbAds"] + p +! Fingerprint2 popups +dfiles.eu,downsub.com,j.gs,macserial.com,microify.com,minecraft-forum.net,onmovies.*,pirateproxy.*,psarips.*,solidfiles.com,thepiratebay.org,uptobox.com##+js(aopw, Fingerprint2) +solidfiles.com##.remove +thepiratebay.org##[href^="http://www.coiwqe.site/"] +downsub.com##div[data-type="_mgwidget"] +downsub.com##[href^="https://www.aiarty.com/ai-denoise-image/"] +handelsblatt.com##+js(no-xhr-if, request=adb) +@@||handelsblatt.com^$ghide +||handelsblatt.com/*/empty.js$script,1p +||wiwo.de/preparesite/empty.js$script,1p +wiwo.de##+js(set, AdController, noopFunc) +@@||wiwo.de^$ghide +transfermarkt.*##+js(acs, document.querySelector, popupBlocked) +transfermarkt.*##+js(acs, Math, /\}\s*\(.*?\b(self|this|window)\b.*?\)/) +transfermarkt.*##body > div[id]:has(a[href^="/intern/adblock"]) +||s0.2mdn.net/instream/video/client.js$script,redirect=noopjs,domain=player.performgroup.com +||sascdn.com^$important,script,domain=transfermarkt.de +transfermarkt.*###werbung_superbanner +transfermarkt.*##.werbung +transfermarkt.*##[id^="home-rectangle-"] +*expires$media,redirect=noopmp3-0.1s,domain=sat1.de|wetter.com +||vidapi.expepp.de/files/*$media,domain=moviepilot.de +moviepilot.de##+js(nano-stb, _0x, *) +moviepilot.de##+js(no-xhr-if, doubleclick) +moviepilot.de##+js(rmnt, script, Promise) +@@||poststar.com^$ghide +poststar.com##.dfp-ad +grubstreet.com,twitchy.com##+js(aopr, stop) +||em0n.com^$domain=grubstreet.com|twitchy.com +popculture.com##div.modernInContent +||static.tvtropes.org/design/js/google-adblock.js$script +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=popculture.com,important +popculture.com##body:not(.skybox-loaded) > header:style(top: 0 !important;) +popculture.com##body.pcm-public:not(.skybox-loaded):style(margin-top: 90px !important;) +tvtropes.org##[href*="justwatch.com"] +tvtropes.org##.justwatch-tab, .compact_watch_button +! Prevent popunders + redirections on multiple websites +||go.oclasrv.com/apu.php$script,redirect=noopjs +||onclkds.com/apu.php$script,redirect=noopjs +||xxlargepop.com/apu.php$script,redirect=noopjs +rule34hentai.net##+js(aopr, open) +||rule34hentai.net/*.php$script,1p +rule34hentai.net##[href^="https://syndication.dynsrvtbg.com/splash.php"] +rule34hentai.net###commentlistimage ~ section[id$="main"] +rule34hentai.net###imagelist ~ section[id$="main"] +rule34hentai.net##section[id$="left"]:has(> .blockbody > script[type]) +rule34hentai.net##section[id$="main"]:has(> .blockbody > .adsbyexoclick) +kingofdown.com##+js(aeld, load, onload) +mind42.com###sidebar +mind42.com###content.sidebar2:style(margin-right: 0 !important;) +elmundo.es##.Bloque-anuncios-shadow +elmundo.es##.Bloque-anuncios +elmundo.es##.disabled-vscroll:style(overflow: auto !important; position: initial !important;) +||andreas-unterberger.at/includes/js/helperFunctions.js$script,1p +receive-sms-online.info##+js(aopr, ga.length) +||fux.com/*banner$image +fux.com##.autonextAd +.com/external/*?width=300&height=250$frame,1p +.com/nativeexternal/$frame,1p +torrentz2.*##[class]:not(body):not(html):has-text(/Protect your privacy/i) +torrentz2.*##[class]:not(body):not(html):has-text(Sponsored) +torrentz2.*##.xpressa +informer.com##+js(aopr, adblock_added) +informer.com##.screen_ad +torlock.*,torlock2.*##+js(acs, setTimeout, admc) +||torlock.*/sww.js$script,1p +torlock.*##:xpath(//strong[contains(text(),"VPN")]/../../..) +torlock.*,torlock2.*##+js(nowebrtc) +torlock2.*##:xpath(//strong[contains(text(),"VPN")]/../../..) +torlock.*,torlock2.*##.extneed +/script/bootstrap.js$script,3p,domain=torlock.*|torlock2.* +bordertelegraph.com,bournemouthecho.co.uk,dailyecho.co.uk,dorsetecho.co.uk,eveningtimes.co.uk,guardian-series.co.uk,heraldscotland.com,iwcp.co.uk,lancashiretelegraph.co.uk,oxfordmail.co.uk,salisburyjournal.co.uk,theargus.co.uk,thetelegraphandargus.co.uk,yorkpress.co.uk##+js(aopw, _sp_) +9to5google.com,9to5mac.com,9to5toys.com,dronedj.com,electrek.co##+js(rmnt, script, fundingChoicesCalled) +9to5google.com,9to5mac.com,9to5toys.com,dronedj.com,electrek.co,marketrealist.com##.ad-disclaimer-container, .inlinead, .ad-container +||googlesyndication.com^$xhr,redirect=noopjs,domain=9to5google.com|9to5mac.com|9to5toys.com|dronedj.com|electrek.co|marketrealist.com +*$script,redirect-rule=noopjs,domain=9to5google.com|9to5mac.com|9to5toys.com|dronedj.com|electrek.co|marketrealist.com +dronedj.com##.adsense, a[target="_blank"][rel="noopener noreferrer"] +9to5toys.com,dronedj.com##.slot-leaderboard +marketrealist.com###Track\.End + div[class] +marketrealist.com##.gXgoom > div +||dslr-forum.de/ads/$image +*/plugin/advertisement/$image +@@||myreadingmanga.disqus.com^$script +myreadingmanga.info##.imgtop +myreadingmanga.info##center +myreadingmanga.info##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +youtubedownloader.*##+js(nowoif) +iptvbin.com##+js(aost, String.prototype.charCodeAt, ai_) +spaste.com##+js(nofab) +spaste.com##[href^="http://bit.ly/"] +spaste.com##[href="javascript:showhide('deals')"] +spaste.com##b +spaste.com##h5:has(> a[href^="javascript:"]) +spaste.com##h5 > a[href^="http://amzn.to/"] +dailyuploads.net##+js(acs, $, window.open) +dailyuploads.net##+js(nowoif) +*$script,3p,denyallow=google.com|gstatic.com,domain=dailyuploads.net +||zergnet.com/zerg-inf-multi$3p,script +wunderground.com##+js(aopw, _sp_) +wunderground.com##[class*="-ad-box-"] +wunderground.com##.content-wrap #inner-wrap:style(height: 100vh !important;) +wunderground.com##body wu-header:style(margin-top: 0px !important;) +putlockerc.*##+js(nowoif) +putlocker.*##[id*="ScriptRoot"] +putlocker.*##.ep_buttons +||putlocker.*/sab_*.html$frame +||earn-bitcoins.net^$frame,3p +fstream365.com###overlay-ads +fstream365.com###ol-ads +putlockertv.*##+js(nowoif) +||greedseed.world/vpaid/YtVpaid.php +putlocker.*##+js(aopw, open) +putlocker.*##+js(aopw, adcashMacros) +||putlocker.*/*.gif$image +@@||ultrahorny.com^$ghide +@@||ajax.googleapis.com^$script,domain=ultrahorny.com +ultrahorny.com##.afs_ads +ultrahorny.com###hideads +bibme.org,citationmachine.net##+js(aopr, SBMGlobal.run.pcCallback) +citationmachine.net,citethisforme.com,easybib.com##+js(aopr, SBMGlobal.run.gramCallback) +citethisforme.com##.sbm-ad +bibme.org,citationmachine.net##+js(aeld, load, (!o)) +easybib.com##+js(aeld, load, (!i)) +citethisforme.com##.ads_top_middle +||contributor.google.com/scripts/*/loader.js$script,domain=citationmachine.net +radio.*##.topAdSpacer +mmorpg.com##[onclick^="trackClick"] +mmorpg.com##a[href^="http://v2.g.99.com/"] +mmorpg.com##.vhadb +sankakucomplex.com##.vce-ad-container +sankakucomplex.com#@#.scad +sankaku.app##+js(no-xhr-if, googlesyndication) +chan.sankakucomplex.com##body.no-scroll:style(overflow: auto !important; position: static !important; width: unset !important;) +sankakucomplex.com##+js(set, Object.prototype.hideAds, true) +@@||anghami.com^$ghide +anghami.com##anghami-ads +player.glomex.com,merkur.de,tz.de##+js(set, Object.prototype._getSalesHouseConfigurations, noopFunc) +player.glomex.com##+js(no-fetch-if, player-feedback) +||player-feedback*.glomex.*^ +androidrepublic.org##+js(acs, $, samInitDetection) +biqle.*##+js(acs, decodeURI, decodeURIComponent) +biqle.*##+js(aopr, Date.prototype.toUTCString) +||biqle.ru/swp.js$script,1p +mp4upload.com##+js(aopw, adcashMacros) +mp4upload.com##+js(aopr, Adcash) +mp4upload.com###lay.lay +*$script,redirect-rule=noopjs,domain=mp4upload.com +*$script,3p,denyallow=cloudflare.com|cloudflare.net|fontawesome.com|gstatic.com|hwcdn.net|jquery.com|jsdelivr.net,domain=mp4upload.com +userupload.*##+js(rmnt, script, /adbl/i) +@@||userupload.*^$ghide +userupload.*##.btn-danger:has-text(/download/i) +userupload.*##a[href*="hotstar"] +userupload.*##ins.adsbygoogle +userupload.*##.ads +||tgwidget.com^$3p +wetter.com##+js(acs, $, lobster) +at.wetter.com##+js(aopw, openLity) +motorradonline.de,zentralplus.ch##+js(nofab) +powerthesaurus.org##+js(aopw, ad_abblock_ad) +! Popups triggered by popads +animepahe.*,kwik.*##^script:has-text('shift') +animepahe.*,kwik.*##^script:has-text(\'shift\') +animepahe.*,kwik.*##+js(acs, String.fromCharCode, 'shift') +animepahe.*,kwik.*##+js(aopr, open) +animepahe.*,kwik.*##+js(aopr, PopAds) +pahe.*##+js(rmnt, script, Reflect) +pahe.*##+js(nowoif) +@@||kwik.*^$script,1p +pahe.*##+js(aeld, , _0x) +@@||pahe.*^$ghide +zonebourse.com##+js(acs, $, AdBlocker) +! bad*.it network sites +badtaste.it##+js(aeld, , Adblock) +aofsoru.com##+js(acs, addEventListener, displayMessage) +yts.*##+js(aeld, , _0x) +yts.*##+js(aopr, runAdblock) +yts.*##+js(nowoif) +yts.*##+js(nostif, "admc") +yts.*##+js(acs, document.createElement, admc) +yts.*##+js(aopw, Adcash) +yts.*##^script:has-text(admc) +*/script/clock.js$script,domain=yts.* +yts.*##[id*="container"][id^="id"] +yts.*##html:style(overflow: auto !important;) +yts.*##.cborz-bordered +yts.*##.madikf +yts.mx##.title ~ a[href] .button:upward(.container > div) +yts.mx##^script:has-text(document.write) +!#if !cap_html_filtering +yts.mx##+js(rmnt, script, document.write) +!#endif +yts.mx##.container > [class]:has-text(VPN) +sarugbymag.co.za##+js(aopr, showAds) +imgdrive.net,imgwallet.com##+js(acs, jQuery, TestAdBlock) +imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(aopr, ExoLoader) +imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(aopr, loadTool) +imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(aopw, cticodes) +imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(aopw, imgadbpops) +imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(acs, document.getElementById, document.write) +imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##+js(nano-stb, redirect, 4000) +/(?:com|net)\/[a-z-]{3,10}\.html$/$frame,1p,domain=imgadult.com|imgdrive.net|imgtaxi.com|imgwallet.com +/(?:com|net)\/[0-9a-f]{12}\.js$/$script,1p,domain=imgadult.com|imgdrive.net|imgtaxi.com|imgwallet.com +/ea/fl.js +/ea2/fl.js +/altiframe.php$domain=imgadult.com|imgdrive.net|imgtaxi.com|imgwallet.com +/altiframe2.php$domain=imgadult.com|imgdrive.net|imgtaxi.com|imgwallet.com +/frame.php$domain=imgadult.com|imgdrive.net|imgtaxi.com|imgwallet.com +imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##.blink +imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##.sidebar > div:first-of-type +imgadult.com,imgdrive.net,imgtaxi.com,imgwallet.com##.sidebar > h3:first-child +imgadult.com,imgdrive.net,imgwallet.com##.bottom_abs +imgadult.com,imgdrive.net,imgwallet.com##.centered +imgtaxi.com###image_details:style(margin-top: 30px !important) +lacuevadeguns.com##+js(aost, onload, inlineScript) +||cdn.jsdelivr.net/npm/@rimiti/abm@latest/dist/$script,css,3p +hqq.*##+js(aopr, adBlockDetected) +hqq.*##+js(set, sadbl, false) +hqq.*##+js(nowoif) +||hqq.*/cdn-cgi/trace$xhr,1p,important +||googletagmanager.com/ns.html$redirect=noop.js +@@||hqq.*^$ghide +@@||hqq.*^$script,xhr,1p +@@||cdn.jsdelivr.net/npm/videojs-contrib-ads/$domain=hqq.* +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=hqq.* +!#if env_firefox +@@||hqq.*/sec/player/*$csp +!#endif +hqq.*##[href="https://t.me/Russia_Vs_Ukraine_War3"] +hqq.*##a[onclick="openAuc();"] +||vkcdnservice.com^$script,redirect-rule=noopjs,3p +||ebd.cda-hd.cc^ +hqq.*,waaw.*##+js(set, adblockcheck, false) +! Redirecting +hqq.*,waaw.*##^script:has-text(self == top) +!#if !cap_html_filtering +hqq.*,waaw.*##+js(rmnt, script, self == top) +!#endif +*$script,3p,denyallow=google.com|gstatic.com|polyfill.io,domain=playdede.us +waaw.*##+js(aopr, doSecondPop) +waaw.*##+js(nowoif) +waaw.*##+js(set, arrvast, []) +filescdn.com##+js(nowoif) +! URL Shortener +adbull.*##+js(ra, onclick) +adbull.*##[src^="https://i.imgur.com/"] +srt.am##+js(nowebrtc) +srt.am##+js(aopr, RunAds) +||srt.am/sw.js$script,1p +adyou.*##+js(aeld, /^(?:click|mousedown)$/, bypassEventsInProxies) +||fbs.com^$3p +123link.*##+js(aopr, jQuery.adblock) +123link.*##+js(acs, $, test-block) +123link.*##+js(acs, $, adi) +123link.*##+js(acs, $, undefined) +||123link.*/push/ +123link.*##.ads-block-warning +123link.*##+js(aopr, ads_block) +123link.*##+js(aopr, blockAdBlock) +123link.*##+js(nano-sib) +123link.*##+js(set, blurred, false) +||player.ooyala.com/static/*ad$script,redirect=noopjs,domain=dugout.com +sheshaft.com##+js(aopr, decodeURI) +sheshaft.com##[class*="banner"] +sheshaft.com##.adv-aside +alrincon.com##+js(aopr, loadTool) +alrincon.com##+js(aopr, ExoLoader.serve) +alrincon.com##+js(aopr, open) +alrincon.com##+js(acs, onload, open) +||trcklks.com^$3p +! ##[href^="https://sex.cam/"] +alrincon.com##center:has-text(deal) +||alrincon.com/2022/varios/crazyshit.jpg +||alrincon.com/imagenes/stasyq/ +/nbk/frnd_ld.js +@@||playview.io/*/showads.js$xhr,1p +playview.io##.ads_player +hdporn.net##+js(aopr, exoOpts) +hdporn.net##+js(aopr, doOpen) +hdporn.net##[href^="http://www.hdporn.net/site.php"] +||grandfuckauto.xxx^$3p +||long.xxx^$3p +||amateurporn.net/*.gif$image +watch-my-gf.com##+js(aopr, prPuShown) +watchmygf.me##+js(set, flashvars.adv_pre_src, '') +watch-my-gf.com##.table +||watch-my-gf.com/images/bear.png +*$frame,domain=clik.pw +*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=clik.pw +@@||api-secure.solvemedia.com^$frame +clik.pw##a[href^="https://href.li/"] +clik.pw##body > div[style]:has(input[type="button"]) +clik.pw##div[style*="z-index:99999"] > div[style*="width:300px"] +##a[href^="https://syndication.exdynsrv.com/splash.php"] +*$popup,domain=clik.pw,3p +clik.pw##+js(aopr, open) +@@||api.solvemedia.com^$script,frame +adshort.*##+js(aopw, Fingerprint2) +adshort.*,adsrt.*##+js(nowoif) +adshort.*##+js(set, blurred, false) +adshort.*##A[href$=".html"][rel="nofollow norefferer noopener"] +adshort.*,adsrt.*##[id*="frme"] +adsrt.*#@#div[id*="ScriptRoot"] +||adsrt.*/sw.js$script,1p +adsrt.*##div[id^="SC_TBlock"] +@@||adshort.*^$ghide +tube8.*##+js(set, showPopunder, false) +tube8.*##+js(aeld, , _0x) +tube8.*##+js(aopw, IS_ADBLOCK) +tube8.*##+js(nowoif) +tube8.*##+js(set, page_params.holiday_promo, true) +tube8.*##.adsbytrafficjunky +tube8.*##.js-remove-ads-premium-link +tube8.*##main.row > aside.col-4 > div[class] +tube8.*##input + div:has(.adsbytrafficjunky) +tube8.*##.gridList > [class]:has(.adsbytrafficjunky) +tube8.*##[href^="https://ads.trafficjunky.net/ads"] +tube8.*##[style="background-color: rgb(255, 255, 255); display: block;"] +tube8.*###flvplayer > [style]:has(.js-remove-ads-premium-link) +tube8.*###result_container_wrapper > [style]:has(.js-remove-ads-premium-link) +tube8.*###result_container > [class]:not(.video_box) +hdpornt.com##+js(aopr, ExoLoader) +hdpornt.com##+js(aopw, __NA) +@@||simply-hentai.com^$ghide +*$script,redirect-rule=noopjs,domain=simply-hentai.com +simply-hentai.com##.page-leave +simply-hentai.com##.native + div +||daporn.com/*banner$image +||daporn.com/frames/$frame +daporn.com##.ntv-media +daporn.com##.bottom-promo +daporn.com###mediaOverlay +daporn.com###close-aff +*.gif$domain=daporn.com,image +daporn.com##[href*="offer"] +daporn.com##[href*="&aff"] +daporn.com##.sponsor +4tube.com##+js(aopr, ExoLoader) +4tube.com##+js(aopw, ads_priv) +||4tube.com/*banner$image +mp3cut.net##+js(aopw, ab_detected) +pornerbros.com##+js(aopr, ExoLoader) +pornerbros.com##+js(aopw, ads_priv) +pornerbros.com##+js(set, adsEnabled, true) +pornerbros.com##+js(aopr, document.dispatchEvent) +||pornerbros.com/*banner$image +||pornerbros.com/sw.js$script,1p +@@||media.oadts.com/www/delivery/afv.php$domain=serienjunkies.de +@@||media.oadts.com/www/delivery/video.php$domain=serienjunkies.de +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=media.oadts.com +serienjunkies.de###sj-ad-wrapper +pichaloca.com##+js(aopr, ExoLoader) +pichaloca.com##.publis-bottom +pornodoido.com##+js(aopr, ExoLoader) +@@||ucoz.com^$ghide +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=shidurlive.com +vortez.net##+js(nowoif) +vortez.net##+js(acs, $, Adblock) +platinmods.com##+js(aopr, adBlockDetected) +platinmods.*##+js(nano-sib) +||whentai.com/*.gif$image +mcfucker.com##+js(aopw, t4PP) +sponsor=$domain=mcfucker.com +mcfucker.com##.vadv +mcfucker.com##.c2p +imgprime.com##+js(aopr, document.createElement) +imgprime.com##+js(ra, href|target, a[href="https://imgprime.com/view.php"][target="_blank"], complete) +||imgprime.com/*.php$script +imgprime.com##.overlayBg +imgshots.com##+js(popads.net) +imgshots.com###introOverlayBg +porn.com##+js(nowoif) +porn.com##+js(set, String.prototype.charAt, trueFunc) +bdupload.*##+js(nano-stb) +bdupload.*##[href*="/dloadbutton.php"] +||bdupload.*/sw.js$script,1p +||socialbars-web5.com/*/notifications/$script +taroot-rangi.com##+js(aopw, sc_adv_out) +pornwatchers.com##+js(aopr, ExoLoader) +pornwatchers.com##+js(aopr, document.dispatchEvent) +pornwatchers.com##.aside-block +pornwatchers.com##.fluid_nonLinear_bottom +pornwatchers.com##.stage-promo +##.aff-content-col +##.aff-inner-col +##.aff-item-list +||pornwatchers.com/sw.js$script,1p +sotemnovinhas.com##+js(nofab) +||sotemnovinhas.com/*.gif$image +gotporn.com##+js(aeld, , open) +gotporn.com##+js(aopr, ExoLoader) +bdsmx.tube##+js(aopr, mz) +bdsmx.tube##.btn-close +bdsmx.tube##article +blackporn.tube,xmilf.com##.right +blackporn.tube,mrgay.tube##.video-info > section +blackporn.tube,mrgay.tube,xmilf.com##.wrapper > section +blackporn.tube,mrgay.tube,xmilf.com##article > section +bdsmx.tube,blackporn.tube,mrgay.tube,xmilf.com##[is-footer-banners] +bdsmx.tube,blackporn.tube,mrgay.tube,xmilf.com##.headline.wrapper +bdsmx.tube,blackporn.tube,mrgay.tube,xmilf.com##[style="display:flex !important"] > div > div:not(:last-child) +mrgay.*##.right +||googlesyndication.com^$script,important,domain=mypapercraft.net +mypapercraft.net##+js(nofab) +mypapercraft.net##.ezoic-ad +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=supergames.com +||adservice.google.com.*/adsid/integrator.js?domain=player.tubia.com$xhr,redirect=nooptext +@@||universal.wgplayer.com/tag/$script,domain=supergames.com +tune.pk###tpk-revenue-sharing-program +tune.pk##+js(set, ad_blocker, false) +europixhd.*,hdeuropix.*,topeuropix.*##+js(aopr, AaDetector) +europixhd.*,hdeuropix.*,topeuropix.*##+js(aopr, LieDetector) +europixhd.*,hdeuropix.*,topeuropix.*##+js(popads-dummy) +europixhd.*,topeuropix.*##+js(nowoif) +topeuropix.*##+js(aeld, , _0x) +europixhd.*,hdeuropix.*,topeuropix.*###MyImageId +europixhd.*,topeuropix.*##[id^="MyAdsId"] +$script,domain=zdnet.fr,3p +@@||ajax.googleapis.com^$script,domain=zdnet.fr +pornxs.com##+js(acs, ExoLoader) +pornxs.com##+js(aopr, _abb) +||pornxs.com/*.php +pornxs.com##[id^="div_theAd"] +pornxs.com##[data-ad-index-parent] +||megayoungsex.com/func.js +megayoungsex.com##.SAbnsBotBl +megayoungsex.com##.SHVidBlockUndBn +megayoungsex.com##.SHVidBlockR +mangoporn.net##+js(acs, puShown, /doOpen|popundr/) +mangoporn.net##+js(aopr, document.dispatchEvent) +mangoporn.net##+js(aopw, pURL) +mangoporn.net##+js(nowoif) +bigshare.io##+js(rmnt, script, window.open) +bigshare.io##+js(nowoif) +bigshare.io##+js(rpnt, script, "art.on('video:play', setUpAds);", art.on('video:play');) +frprn.com##+js(nosiif, readyState) +frprn.com##.spot +frprn.com##.footer-spot +! watchseries.unblocked.* popups +watchseries.unblocked.*##+js(nowebrtc) +vidlox.*##A[href$=".html"][rel="nofollow norefferer noopener"] +/all-for-adsense/* +ah-me.com##+js(acs, $, serve) +ah-me.com##+js(aopr, open) +||hprofits.com^$domain=gogaytube.tv|shemaleporntube.tv +gogaytube.tv,shemaleporntube.tv##.videojs-hero +/iframe.php?spotID= +@@||mdsrwdassets-a.akamaihd.net^$xhr,script,other,domain=telecinco.es|cuatro.com +@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$script,domain=telecinco.es|cuatro.com +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=telecinco.es|cuatro.com +@@||cuatro.com^$ghide +@@||telecinco.es^$ghide +ouo.*##+js(aopr, AaDetector) +ouo.*##+js(nowebrtc) +ouo.*##+js(nano-sib, stop()) +ouo.*##^script:has-text('shift') +ouo.*##^script:has-text(\'shift\') +ouo.*##[style*="width:300px"] > a[href][target="_blank"] > img +||ouo.*/js/jbitly.js$script,1p +||ouo.*/js/webpush.ma.js$script,1p +||ouo.*/sw$script,1p +*$script,redirect-rule=noopjs,domain=ouo.* +ouo.*##[href^="https://dynamicadx.com/"] +ouo.*##iframe:not([src]) +ouo.*##[id*="ScriptRoot"] +ouo.*##.dlbtns +ouo.press##.skip-container > .text-center > span[style="display: block;color: #aaa;font-size: 13px;padding-bottom: 2px;"] +x1337x.*##[href*=".php"] +1337x.*,x1337x.*,1337x.unblock2.xyz,1337x.unblocked.*,1337x.unblockit.*##ul > li:has-text(/‌/i) +1337x.*,x1337x.*,1337x.unblock2.xyz,1337x.unblocked.*,1337x.unblockit.*##:xpath('//*[contains(text(),"Hide your IP")]/..') +1337x.unblock2.xyz,1337x.unblockit.*##+js(aopr, btoa) +1337x.unblock2.xyz,1337x.unblocked.*,1337x.unblockit.*##+js(aopr, open) +1337x.unblock2.xyz##+js(aopr, Math.floor) +1337x.unblocked.*###lb-banner +1337x.*,1337x.unblockit.*##a[href$="Promo.php"] > img +||topblockchainsolutions.*^$all +xiaopan.co##+js(aopw, AdBlockDetectorWorkaround) +shooshtime.com##+js(nowoif) +||monad.network^$script,domain=shooshtime.com +seattletimes.com##+js(nostif, apstagLOADED) +noticias.gospelmais.com.br##+js(set, blockAdBlock, true) +songs.*##+js(aopr, AaDetector) +mel.fm##+js(nofab) +dailygeekshow.com##+js(aopr, jQuery.hello) +@@||seirsanduk.*^$ghide +@@||seirsanduk.*/$script,1p +seirsanduk.*##+js(popads.net) +seirsanduk.*##[href^="https://www.bybit.com/"] +seirsanduk.*##ins.adsbygoogle +seirsanduk.*##[href^="//bgtop.net/"] +bestgames.com,yiv.com##+js(nostif, /Adb|moneyDetect/) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=bestgames.com|yiv.com,redirect=google-ima.js +bestgames.com,yiv.com#@##adsContainer +bestgames.com,yiv.com###LeftAdDiv +bestgames.com,yiv.com###game_middle_ad +bestgames.com,yiv.com###RightAdTopDiv +bestgames.com,yiv.com###RightAdMiddleDiv +gotgayporn.com##+js(aopr, decodeURI) +||gotgayporn.com/sw.js$script,1p +rue89lyon.fr##+js(aopr, isShowingAd) +kitguru.net##body:style(background-image:none !important) +viki.com##+js(set, VikiPlayer.prototype.pingAbFactor, noopFunc) +viki.com##+js(set, player.options.disableAds, true) +*expire=$media,redirect=noopmp3-0.1s,domain=viki.com +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=viki.com +realgfporn.com##+js(aopr, ExoLoader) +realgfporn.com##+js(aopw, __htapop) +realgfporn.com##+js(popads-dummy) +realgfporn.com##+js(aopr, ExoLoader.serve) +realgfporn.com##+js(aeld, click, exopop) +realgfporn.com##+js(aeld, /^(?:load|click)$/, popMagic) +realgfporn.com##+js(acs, document.createElement, 'script') +realgfporn.com###fixedBanner +realgfporn.com##.overlay-banner +realgfporn.com##.video-overlay +realgfporn.com##.banner-video-right +||realgfporn.com/sw.js$script,1p +*$popunder,domain=realgfporn.com +picturelol.com###rang2 +picturelol.com##+js(aopr, ExoLoader) +picturelol.com##+js(nowoif) +mitly.us##+js(aopr, adBlockDetected) +mitly.us##+js(aopr, open) +mitly.us##+js(aopw, adcashMacros) +mitly.us##+js(aopw, atOptions) +mitly.us##+js(set, blurred, false) +@@||mitly.us^$ghide +*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=mitly.us +||googlesyndication.com/pagead/$script,redirect=noopjs,domain=mitly.us +mitly.us##ins.adsbygoogle +mitly.us##[href^="http://deloplen.com/"] +watch-series.*,watchseries.*##+js(acs, Math, XMLHttpRequest) +watch-series.*,watchseries.*##+js(nowebrtc) +watch-series.*,watchseries.*##+js(nowoif) +watch-series.*,watchseries.*##+js(set, console.clear, trueFunc) +watchseries.*##+js(aopr, Adcash) +watch-series.*,watchseries.*##.freeEpisode +watch-series.*,watchseries.*##.sp-leader +watch-series.*,watchseries.*##.shd_button +watch-series.*,watchseries.*##.sp-leader-bottom +watch-series.*,watchseries.*##.category-item-ad +watch-series.*,watchseries.*###related +watch-series.*,watchseries.*###rotating-item-wrapper +watch-series.*,watchseries.*##div.block-left-home-inside[style^="height:252"] +@@||watchseries.*^$ghide +||watch-series.*/sw.js$script,1p +||watchseries.*/sw.js$script,1p +fetishshrine.com##+js(aopr, decodeURI) +fetishshrine.com##.adv-aside +sleazyneasy.com##+js(aopr, decodeURI) +sleazyneasy.com##+js(set, flashvars.adv_pre_vast, '') +sleazyneasy.com##+js(set, flashvars.adv_pre_vast_alt, '') +sleazyneasy.com##+js(set, x_width, 1) +/contents/images-banners/* +sleazyneasy.com##.container-aside > .item +sleazyneasy.com##.remove-spots +vikiporn.com##+js(aeld, getexoloader) +vikiporn.com##+js(aopr, decodeURI) +@@||anime-loads.org^$ghide +anime-loads.org###leaderwidget +anime-loads.org##.skycontent +/static/js/amvn.js +globalrph.com##+js(nostif, disableDeveloper) +onlinemschool.com##+js(aopr, oms.ads_detect) +onlinemschool.com###oms_left_block +e-glossa.it##+js(nostif, Blocco, 2000) +pornsocket.com##+js(set, _site_ads_ns, true) +||adspaces.ero-advertising.com/adspace/*$script,redirect=noopjs,domain=pornsocket.com +! http://forum.chip.de/rund-um-online/werbeterror-spendenaufruf-pic-upload-de-microsoft-alarm-u-google-benachr-1879678.html +pic-upload.de##+js(aopw, Fingerprint2) +limerickleader.ie###abr_purchase_div +pornhd.com##+js(aopr, hasAdBlock) +pornhd.com,pornhdin.com##+js(aopr, ExoLoader.serve) +pornhd.com##+js(popads-dummy) +pornhd.com##+js(nowoif) +pornhd.com##+js(aeld, , pop) +pornhdin.com##+js(aopr, open) +||syndication.exoclick.com/ads-iframe-display.php$script,redirect=noopjs,domain=pornhd.com +pornhd.com##.phdZone +pornhd.com##.overlay-content +pornhd.com##.video-list-corner-ad +##.inplayer-ad +luxuretv.com##+js(acs, $, ltvModal) +luxuretv.com##+js(set, luxuretv.config, '') +luxuretv.com##+js(aopr, popns) +luxuretv.com##iframe[data-src^="https://rokymedia.com/"] +luxuretv.com###lien +luxuretv.com###vz_im_ad +luxuretv.com##.linkvideo +*$script,3p,denyallow=gstatic.com|polyfill.io,domain=sexu.com +||sexu.com^$frame,1p +sexu.com##.footerBanners +sexu.com###jw_video_popup +sexu.com##.container > .info +sexu.com##.player-related +sexu.com##.player-block__line +sexu.com##.title--sm +sexu.com##.player-block__square +pussyspace.*##+js(aopr, open) +pussyspace.com,pussyspace.net##+js(aost, navigator.userAgent, pushiserve) +pussyspace.com,pussyspace.net##+js(aeld, load, creativeLoaded-) +pussyspace.com,pussyspace.net##+js(norafif, exoframe) +pussyspace.com,pussyspace.net##+js(aeld, /^load[A-Za-z]{12\,}/) +pussyspace.com,pussyspace.net##+js(aost, document.createElement, rollexzone) +pussyspace.com,pussyspace.net##a[href$="/live/meet-and-fuck/"] +pussyspace.com,pussyspace.net##a:matches-attr(/^on/=/event/) +pussyspace.com,pussyspace.net##a:matches-attr(/-h?ref/) +pussyspace.com,pussyspace.net###alphabet, #channels, #divx-container, #hmenu, #inform, #nowlooking, #playerCamBox, #playerMenu, #qcat, #showPlayer, #tabel_tagslist, #video_content, #web_cam, .BaseRoomContents, .buttons, .carouselTopScroll, .carusel-keys-box-ps, .footerdesc, .in_top, .load_more_rel, .mainBoxTitle, .pagIno, .playerContent100pr, .relatedVideo, .right-160px, .videos-related, footer, header, [href^="/webcams.php"]:others() +pussyspace.com,pussyspace.net##.left *:not(div):not(span):not(p):not(a):not(video):not(i):not(ul):not(li):not(b):not(button):not(svg):not(g):not(h1):not(h2):not(pjsdiv):not(noindex):not(select) img +pussyspace.com,pussyspace.net##[style] [style*="cursor"] img +||pussyspace.*/live/meet-and-fuck/$all +||pussyspace.*/js/all.js?v=gitcache_gulp_ +||pussyspace.*/lazyload.im +/click.php?$popup,3p,domain=pussyspace.com|pussyspace.net +$image,3p,denyallow=cdn77.org|fpbns.net|globalcdn.co|others-cdn.com|rncdn7.com|sb-cd.com|stream.highwebmedia.com|thumb.live.mmcdn.com|upsiloncdn.net|xvideos-cdn.com|youjizz.com|ypncdn.com,from=pussyspace.com|pussyspace.net +||pussyspace.$image +@@||st.pussyspace.com/player/playBTN.png| +@@||st.pussyspace.com/favicon.ico| +@@||st.pussyspace.com/style/03/img/bg.png| +@@||st.pussyspace.com/style/03/img/dropmenudownarrow.png| +@@||st.pussyspace.com/style/03/img/navbg.hover.png| +@@||st.pussyspace.com/style/03/img/navbg.png| +@@||st.pussyspace.com/style/03/img/pinkbg.gif| +@@||st.pussyspace.com/style/03/img/speed-dials.png| +@@||st.pussyspace.com/style/03/img/x-sprite.png| +@@||st.pussyspace.com/style/10/img/logo.png| +@@||st.pussyspace.com/style/10/img/logo_mobile.png| +@@||st.pussyspace.com/style/webcam.jpg| +@@||st.pussyspace.net/player/playBTN.png| +@@||st.pussyspace.net/favicon.ico| +@@||st.pussyspace.net/style/03/img/bg.png| +@@||st.pussyspace.net/style/03/img/dropmenudownarrow.png| +@@||st.pussyspace.net/style/03/img/navbg.hover.png| +@@||st.pussyspace.net/style/03/img/navbg.png| +@@||st.pussyspace.net/style/03/img/pinkbg.gif| +@@||st.pussyspace.net/style/03/img/speed-dials.png| +@@||st.pussyspace.net/style/03/img/x-sprite.png| +@@||st.pussyspace.com/style/05/img/JhsdsSD221.svg| +@@||st.pussyspace.net/style/10/img/logo.png| +@@||st.pussyspace.net/style/10/img/logo_mobile.png| +@@||st.pussyspace.net/style/webcam.jpg| +@@/^https:\/\/[a-z]\.pussyspace\.(?:com|net)\/(?:yip?|xvs)\/videos\/20\d{4}\/\d{2}\/\d{9}\/(?:original|thumbs_\d{2})\/\d{0,2}(?:\(m=e[0-9A-Za-z]{5,7}(?:aaaa)?\)\(mh=[-_0-9A-Za-z]{16}\))?\d{0,2}\.jpg$/$image,1p,domain=pussyspace.com|pussyspace.net +@@/^https:\/\/[a-z]\.pussyspace\.(?:com|net)\/(?:yip?|xvs)\/videos\/thumbs169l\/[0-9a-f]{2}\/[0-9a-f]{2}\/[0-9a-f]{2}\/[0-9a-f]{32}(?:-\d)?\/[0-9a-f]{32}\.\d{1,2}\.jpg$/$image,1p,domain=pussyspace.com|pussyspace.net +@@/^https:\/\/[a-z]\.pussyspace\.(?:com|net)\/(?:yip?|xvs)\/videos\/thumbs_5\/\d{1,2}(?:\(m=e[0-9A-Za-z]{5,7}aaaa\)\(mh=[-_0-9A-Za-z]{16}\))?\.jpg$/$image,1p,domain=pussyspace.com|pussyspace.net +@@/^https:\/\/[a-z]\.pussyspace\.(?:com|net)\/[a-z]?jz\/(?:[0-9a-f]\/){3,5}[0-9a-f]{42}-?(?:\d{2,3}|(?:(?:\d{3,4}-){3}h264)?\.(?:mp4-\d{1,2}|flv-\d))\.jpg$/$image,1p,domain=pussyspace.com|pussyspace.net +@@/^https:\/\/[a-z]\.pussyspace\.(?:com|net)\/sb\/t\/\d{6,8}\/\d\/\d\/w:300\/t\d{1,2}-enh\/(?:[0-9a-z]+-)*[0-9a-z]+\.jpg$/$image,1p,domain=pussyspace.com|pussyspace.net +@@/^https:\/\/st\.pussyspace\.(?:com|net)\/upload\/cat\.image\/[_3a-z]{2,16}\.jpg$/$image,1p,domain=pussyspace.com|pussyspace.net +@@/^https:\/\/st\.pussyspace\.(?:com|net)\/upload\/poster_img_url\/par\/c3Rhci9[%0-9A-Za-z]{16,32}&size_width\/par\/160\/l\.jpg$/$image,1p,domain=pussyspace.com|pussyspace.net +@@||www.pussyspace.com/ajax/contact/exo-logo.png| +@@||www.pussyspace.com/upload/no_img.jpg| +@@||www.pussyspace.com/favicon.ico| +@@||www.pussyspace.com/class/captcha/captcha.php| +@@||www.pussyspace.com/class/captcha/arrow.png| +@@||www.pussyspace.com/player/loading.gif| +@@||www.pussyspace.com/style/img/abuse.email.png#| +@@||www.pussyspace.com/style/img/navbg.hover.png| +@@||www.pussyspace.net/ajax/contact/exo-logo.png| +@@||www.pussyspace.net/upload/no_img.jpg| +@@||www.pussyspace.net/favicon.ico| +@@||www.pussyspace.net/class/captcha/captcha.php| +@@||www.pussyspace.net/class/captcha/arrow.png| +@@||www.pussyspace.net/player/loading.gif| +@@||www.pussyspace.net/style/img/abuse.email.png#| +@@||www.pussyspace.net/style/img/navbg.hover.png| +||propbigo.com/*.xml$xhr,redirect=nooptext +||doathair.com^ +bigtitsxxxsex.com##+js(aopr, ALoader) +bigtitsxxxsex.com##+js(nowoif) +bigtitsxxxsex.com##+js(noeval) +bigtitsxxxsex.com##.bano1 +||adn.porndig.com^ +||videos.porndig.com/js/videojs.logobrand.js +porndig.com##+js(set, Object.prototype.AdOverlay, noopFunc) +porndig.com##+js(set, tkn_popunder, null) +videos.porndig.com##+js(aost, document.querySelector, detect) +||porndig.com/sw$script,1p +perfectgirls.*,perfektdamen.*##+js(acs, ExoLoader) +perfectgirls.*,perfektdamen.*##+js(aopw, ads_priv) +perfectgirls.*,perfektdamen.*##+js(noeval) +perfectgirls.*,perfektdamen.*##.advertisement +perfectgirls.*,perfektdamen.*##.promo +area51.porn##+js(aopr, document.dispatchEvent) +area51.porn##.under-video-banner +hentaipulse.com##+js(acs, ExoLoader) +1fichier.com##+js(nowebrtc) +1fichier.com##+js(nano-stb, dlw, 40000) +1fichier.com##+js(nano-stb, ctt(), 1000, 0.001) +||googlesyndication.com^$script,important,domain=incredibox.com +@@||incredibox.com/ad/*$xhr,1p +webcheats.com.br##+js(set, can_run_ads, true) +webcheats.com.br##+js(nostif, test, 0) +ceesty.com,gestyy.com##+js(set, adsBlockerDetector, noopFunc) +@@||ceesty.com^$ghide +@@||corneey.com^$ghide +@@||destyy.com^$ghide +@@||festyy.com^$ghide +@@||gestyy.com^$ghide +@@||sh.st^$ghide +ceesty.com,corneey.com,destyy.com,festyy.com,gestyy.com,sh.st##.skip-advert +ceesty.com,corneey.com,destyy.com,festyy.com,gestyy.com,sh.st##+js(set, globalThis, null) +*$3p,xhr,domain=ceesty.com|corneey.com|destyy.com|festyy.com|gestyy.com +ceesty.com,corneey.com,destyy.com,festyy.com,gestyy.com##+js(aopr, NREUM) +imgcloud.pw##+js(popads-dummy) +*$script,3p,denyallow=fastly.net|google.com|googleapis.com|gstatic.com|jsdelivr.net|jwpcdn.com,domain=imgcloud.pw +angrybirdsnest.com##+js(set, adblock, false) +nitroflare.com##+js(acs, $, window.open) +nitroflare.com##+js(acs, pop3, window.open) +sexytrunk.com,teensark.com##+js(aopr, document.dispatchEvent) +planetsuzy.org##+js(set, __ads, true) +planetsuzy.org##+js(acs, jQuery, ready) +planetsuzy.org##div[style]:has(> script[src*="ads.exoclick.com/"]) +zrozz.com##+js(set, adblock, false) +empflix.com##+js(aopw, popzone) +empflix.com##+js(nowoif) +empflix.com##+js(set, FlixPop.isPopGloballyEnabled, falseFunc) +empflix.com##+js(aeld, , /exo) +tnaflix.com##+js(aopr, ads.pop_url) +tnaflix.com##+js(aeld, getexoloader) +||tnaflix.com/*.php$script,1p +empflix.com,tnaflix.com##.lastLiAvx +tnaflix.com###vidPlayer span:has-text(Advertisement) +tnaflix.com###vidPlayer > div:last-child +tnaflix.com###zoneInPlayer +tnaflix.com##.improveADS +empflix.com##.mewDv +empflix.com##.padAdvx +empflix.com#@##hideAd +empflix.com##.col-xs-6:not([data-vid]) +tnaflix.com##+js(set-cookie, popunder_stop, 1) +tnaflix.com##.pause-overlay +||adsession.com^$popup +urlcero.*##+js(aopr, open) +urlcero.*##+js(nostif, checkAdblockUser, 1000) +onlinetv.planetfools.com##+js(acs, setTimeout, 1000) +planetfools.com##+js(nowebrtc) +gala.fr,gentside.com,geo.fr,hbrfrance.fr,nationalgeographic.fr,ohmymag.com,serengo.net,vsd.fr##+js(nostif, checkPub, 6000) +@@||startimez.com^$ghide +newsextv.com##+js(acs, ExoLoader) +anyporn.com##+js(nowoif) +anyporn.com##+js(acs, ExoLoader) +||anyporn.com/if2/ +||img.stomp.com.sg/sites/all/themes/stompst/images/placeholder.jpg$image +stomp.straitstimes.com##.content:has(> div:has-text(Branded Content)) +linkrex.net##+js(aopr, open) +linkrex.net##+js(aopw, __htapop) +linkrex.net,linx.cc##+js(set, blurred, false) +*$script,3p,denyallow=cloudflare.com|cloudflare.net|google.com|gstatic.com|recaptcha.net,domain=linkrex.net|linx.cc +shrtfly.*##+js(aopr, open) +shrtfly.*##+js(aopr, tabUnder) +@@||shrtfly.*^$ghide +shrtfly.*##ins.adsbygoogle +shrtfly.*##.banner +oke.io##+js(aopr, open) +oke.io##+js(aopw, Fingerprint2) +oke.io##+js(set, blurred, false) +gogoanime.*##+js(acs, atob, decodeURIComponent) +gogoanime.*,gogoanimes.*##+js(nowoif) +gogoanime.*##+js(set, console.clear, undefined) +gogoanime.*##+js(set, check_adblock, true) +gogoanime.*##+js(acs, document.createElement, l.parentNode.insertBefore(s) +gogoanime.*##.banner_center +gogoanime.*##.anime_video_body_cate > div[style]:has(> div[id] + script[src]) +gogoanime.*##.adx +gogoanimetv.*##+js(aopr, AaDetector) +gogoanimetv.*##+js(nosiif, _0x) +||gogoanime.*/api/pop.php$xhr,1p +gogoanimetv.*##+js(nowoif) +||gogoanime.me/*.gif$image +/get/*?zoneid=$script +cpmlink.net##+js(acs, decodeURI, decodeURIComponent) +cpmlink.net##+js(nowebrtc) +cpmlink.net##.__web-inspector-hide-shortcut__ +*$script,3p,denyallow=cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|fastly.net|fastlylb.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jsdelivr.net|jquery.com|jwpcdn.com|recaptcha.net|tawk.to,domain=cpmlink.net +cpmlink.net##+js(aeld, , _blank) +*$frame,3p,domain=cpmlink.net +cpmlink.net##[href^="https://bit.ly"] +cpmlink.net##iframe[src="about:blank"] +sunporno.com##+js(aopr, ExoLoader.addZone) +sunporno.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +sunporno.com##.flirt +sunporno.com##.flirt-footer +sunporno.com##.flirt-block +sunporno.com##.thumbs-container > .th-ba +||sunporno.com/*.php$script,1p +sunporno.com##.safelink +/api/model/feed?siteId=$xhr,3p +namethatporn.com##+js(popads-dummy) +namethatporn.com##[data-flba^="https://landing.brazzersnetwork.com"] +||namethatporn.com/assets/imgs/1x1.gif$badfilter +||namethatporn.com/assets/imgs/1x1.gif$frame,redirect=noopframe +freeviewmovies.com##+js(aopw, encodeURIComponent) +freeviewmovies.com##+js(set, isAdBlockActive, false) +freeviewmovies.com###pause-container +badjojo.com##+js(aopw, encodeURIComponent) +pornhost.com##+js(aopr, raConf) +badjojo.com##.embed-overlay +eroprofile.com##+js(acs, ExoLoader) +||eroprofile.com/js/nvbla.js +eroprofile.com##.center-block +eroprofile.com###divVideoListAd2 +feet9.com##[data-vid^="live-"]:remove() +feet9.com##[href^="https://go.cam.feet9.com/"]:upward(3) +||feet9.com/t/newbuttonyellow.png$image +feet9.com##.pup +feet9.com##.video:has(span:has-text(Live)) +feet9.com##+js(acs, __ADX_URL_U) +feet9.com##[onclick*="banner"]:upward(.video) +feet9.com##.hvr-pulse +feet9.com##[class^="ig"] +||feet9.com^$csp=worker-src 'none'; +absoluporn.*##+js(acs, ExoLoader) +@@||chaturbate.com/*embed$frame,domain=absoluporn.com +/code/script/back.php| +short.pe##+js(acs, atob, tabunder) +short.pe##+js(acs, RegExp, POSTBACK_PIXEL) +short.pe##+js(aopr, AaDetector) +short.pe##+js(aopr, console.clear) +short.pe##+js(aeld, mousedown, preventDefault) +short.pe##+js(nowebrtc) +short.pe##+js(nowoif) +short.pe##+js(nostif, '0x) +*$frame,denyallow=google.com|hcaptcha.com,domain=short.pe +short.pe##a[href^="https://href.li/"] +short.pe##body > div[style]:has(input[type="button"]) +short.pe##div[style*="z-index:99999"] > div[style*="width:300px"] +orgyxxxhub.com##+js(aopr, ExoLoader) +orgyxxxhub.com##+js(aopr, Aloader) +orgyxxxhub.com##+js(aopr, advobj) +orgyxxxhub.com##+js(noeval-if, replace) +repelis.net##+js(aopr, popTimes) +pornomico.com##+js(aeld, getexoloader) +pornomico.com##+js(aopr, addElementToBody) +pornomico.com##+js(popads-dummy) +pornomico.com##+js(aopr, decodeURI) +pornomico.com##.vjs-overlay +donkparty.com##+js(aopr, phantomPopunders) +donkparty.com##+js(nowoif) +watchmygf.me##+js(noeval) +||watchmygf.me/js/popupimage.js +watchmygf.me##+js(aopr, open) +watchmygf.me##+js(set, $.magnificPopup.open, noopFunc) +watchmygf.me##[href^="https://wct.link/click"] +mylust.com##+js(aopr, document.dispatchEvent) +mylust.com##+js(aopr, console.clear) +mylust.com##.no_pop.centeredbox +mylust.com##iframe.clear_both +mylust.com##div[class^="span"] > div.box:has(> .title > div:has-text(Advertisement)) +mylust.com###wrapper > div[style*="height:18px"] +mylust.com##.list_videos_ad +mylust.com###main_video_fluid_html_on_pause +||mylust.com/*.jsx +deepbrid.com##+js(acs, document.getElementById, undefined) +deepbrid.com##+js(set, adsenseadBlock, noopFunc) +boysfood.com##+js(aopw, encodeURIComponent) +boysfood.com###pause-container +sextingforum.net##+js(aopw, stagedPopUnder) +linkshorts.*##+js(aopr, open) +linkshorts.*##+js(set, blurred, false) +*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=linkshorts.* +dz4link.com##+js(aopw, Fingerprint2) +dz4link.com##+js(set, blurred, false) +dz4link.com##+js(nowoif) +dz4link.com##.banner +dz4up.com##.container + div[style] > [title="Download Now"] > img +*$frame,denyallow=google.com,domain=dz4link.com +*$script,3p,denyallow=facebook.net|google.com|gstatic.com|recaptcha.net,domain=dz4link.com +! pixhost. to +pixhost.*###js +pixhost.*###web:style(display: block !important;) +pixhost.*##^script:has-text(exdynsrv) +!#if !cap_html_filtering +pixhost.*##+js(rmnt, script, exdynsrv) +!#endif +readmng.com##.desk +readmng.com##.sideways +||readmng.com/dist/img/banner*$image,1p +@@||next-episode.net^$ghide +@@||next-episode.net^$script,1p +*$script,redirect-rule=noopjs,domain=next-episode.net +!next-episode.net##+js(rmnt, script, /<.*>.*\x40/) +!next-episode.net##.adsbygoogle +next-episode.net##[id=""] +||beinsports.com/*/adbw/ +indi-share.com##+js(nano-stb, seconds) +indi-share.com##+js(nano-sib, clearInterval) +techmyntra.net##+js(nano-stb) +||dwf6crl4raal7.cloudfront.net^$script,3p +||techmyntra.net^$3p +@@||fwmrm.net/ad/$script,domain=dplay.dk +||dniadops-a.akamaihd.net/video-assets/*.mp4$media,domain=dplay.dk +updato.com##+js(nostif, document.querySelector, 5000) +imgdew.*,imgoutlet.*,imgsen.*,imgsto.*,imgtown.*,imgview.*##+js(aopr, CustomEvent) +imgdew.*,imgmaze.*,imgoutlet.*,imgtown.*,imgview.*##+js(aopr, exoJsPop101) +imgdew.*,imgmaze.*,imgtown.*,imgview.*##+js(aopr, ExoLoader.addZone) +imgmaze.*,imgtown.*##+js(aopr, popjs.init) +imgdew.*,imgmaze.*,imgoutlet.*,imgtown.*,imgview.*##+js(aopw, Fingerprint2) +imgdew.*,imgmaze.*,imgoutlet.*,imgtown.*,imgview.*##+js(nowoif) +dewimg.*,imgrock.*,imgviu.*,mazpic.*,outletpic.*,picrok.*##+js(nowoif) +*$script,frame,xhr,3p,domain=mazpic.*,denyallow=imgmaze.com +*$script,frame,xhr,3p,domain=picrok.*,denyallow=imgrock.net +*$script,frame,xhr,3p,domain=imgviu.*,denyallow=imgview.net +*$script,frame,xhr,3p,domain=outletpic.*,denyallow=imgoutlet.com +*$script,frame,xhr,3p,domain=dewimg.*,denyallow=imgdew.com +*$script,frame,xhr,3p,domain=imgtown.*,denyallow=imgtown.net +*$script,3p,domain=imgsen.com +@@||imgtown.*^$ghide +@@||imgmaze.*^$ghide +@@||imgoutlet.*^$ghide +@@||imgview.*^$ghide +/\/[0-9a-z]{5,9}\.js(\?[a-z]{3})?$/$script,domain=dewimg.*|imgtown.*|imgviu.*|mazpic.*|outletpic.*|picrok.* +dewimg.*,imgtown.*,imgviu.*,mazpic.*,outletpic.*,picrok.*##+js(acs, addEventListener, -0x) +dewimg.*,imgtown.*,imgviu.*,mazpic.*,outletpic.*,picrok.*##div[style^="z-index: 999999; background-image: url(\"data:image/gif;base64,"][style$="position: absolute;"] +dewimg.*,imgtown.*,imgviu.*,mazpic.*,outletpic.*,picrok.*##[href^="//"][rel="nofollow norefferer noopener"] +imgclick.net##+js(aopw, Fingerprint2) +imgclick.net##+js(noeval) +behindwoods.com###cboxOverlay +behindwoods.com###cboxWrapper +behindwoods.com###colorbox +behindwoods.com##.vedio-block +rojadirecta.*,tarjetarojatvonline.*##+js(aopw, closeMyAd) +rojadirecta.*,rojadirectatv.*,tarjetarojatvonline.*##+js(aopw, smrtSP) +capshd.*,rojadirectatvlive.*##+js(nowoif) +||adblockenterpriseedition.com^ +@@||ekstrabladet.dk^$ghide +@@||adtech.de/dt/common/DAC.js$domain=ekstrabladet.dk +ekstrabladet.dk##.eb-placement +webnovel.com##+js(set, adblockSuspected, false) +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=webnovel.com +totaldebrid.*##+js(nostif, nextFunction, 250) +streamwish.*##+js(set, xRds, true) +streamwish.*##+js(set, cRAds, false) +! Add filters to boost timers, for the reasoning read the link above +! Copied from https://github.com/NanoAdblocker/NanoFilters/blob/a57366bd7b42a31d25af47eefc031218826bcae0/NanoFiltersSource/NanoTimer.txt +al.ly,bbf.lt,cpmlink.net,cut-urls.com,eg4link.*,idlelivelink.*,igram.*,iiv.pl,ur.ly,url.gem-flash.com,zeiz.me##+js(nano-sib) +srt.am##+js(nano-stb) +1ink.cc##+js(nano-sib) +1ink.cc##[id^="Ad"] +*$frame,domain=1ink.cc +freepdf-books.com##+js(nano-sib, myTimer, 1500) +@@||met.bz^$ghide +*.gif$domain=met.bz,image +met.bz##+js(noeval) +met.bz##+js(aopr, AaDetector) +hideout.*##+js(acs, stop, adblock) +@@||pastpapers.papacambridge.com^$ghide +pastpapers.papacambridge.com##[id^="aswift"] +mimaletadepeliculas.*##+js(aeld, load, advertising) +themeslide.com##+js(nano-sib, countdown, 2000) +themeslide.com##+js(nano-stb) +@@||aternos.org^$ghide +*$script,redirect-rule=noopjs,domain=aternos.org +@@||hb.vntsm.com/v2/live/$xhr,domain=aternos.org +@@||tlx.3lift.com/header/auction?$xhr,domain=aternos.org +@@||fastlane.rubiconproject.com/a/api/fastlane.json?$xhr,domain=aternos.org +@@||bidder.criteo.com/cdb?$xhr,domain=aternos.org +@@||hbopenbid.pubmatic.com/translator?source=prebid-client$xhr,domain=aternos.org +@@||mp.4dex.io/prebid$xhr,domain=aternos.org +@@||prg.smartadserver.com/prebid/v1$xhr,domain=aternos.org +@@||venatusmedia-d.openx.net/w/1.0/arj$xhr,domain=aternos.org +@@||adx.adform.net/adx/openrtb$xhr,domain=aternos.org +@@||htlb.casalemedia.com/cygnus?s=$xhr,domain=aternos.org +@@||prebid.a-mo.net/a/c$xhr,domain=aternos.org +@@||vntsm.com/*/ad-manager.min.js$script,domain=aternos.org +@@||hb.vntsm.io/content.html$xhr,domain=aternos.org +@@||securepubads.g.doubleclick.net/tag/js/gpt.js$script,domain=aternos.org +||aternos.org/panel/ajax/reportDetection.php?$xhr,1p +||aternos.org/ajax/account/report-detection$xhr,1p +||tech426.com^$3p +||ultra-rv.com^$3p +||atom-ds.com^$3p +||fastlane.rubiconproject.com^$removeparam,domain=aternos.org +||htlb.casalemedia.com^$removeparam=r,domain=aternos.org +@@||imasdk.googleapis.com/js/sdkloader/*$script,domain=video.gjirafa.com +gjirafa.com##[id^="gjc"] +gjirafa.com##[id^="an-holder"] +!video.gjirafa.com##+js(json-prune, 0) +||s3.amazonaws.com/dmas-public/revcontent/bundle.js +pcworld.com###amazon-bottom-widget +thedailywtf.com##.article-body > div:has(a[href*="utm_medium"]) +befap.com##+js(aopr, ExoLoader) +befap.com##+js(aopw, tiPopAction) +befap.com##.row-middle +tubemania.org##+js(nowoif) +||tubemania.org^$frame,1p +#@#.reklama +##.reklama:not(.ads) +offmoto.com#@#.reklama:not(.ads) +cumlouder.com##+js(aopw, ExoLoader) +nme.com##.advert:style(z-index: -999999 !important;) +nme.com###wrapper:style(padding-top: 0 !important;) +idealhome.co.uk,look.co.uk##body > div#wrapper:style(padding-top: 0px !important;) +goodtoknow.co.uk,marieclaire.co.uk,womanandhome.com##.header-advert-wrapper +! mejortorrent.com popups +mejortorrent.*,mejortorrento.*,mejortorrents.*,mejortorrents1.*,mejortorrentt.*##+js(nowebrtc) +mejortorrento.*,mejortorrents.*,mejortorrents1.*,mejortorrentt.*##iframe[src^="publi"] +||mejortorrent.*/bannner +adsrt.*##+js(acs, atob, decodeURIComponent) +adsrt.*##+js(aopw, Fingerprint2) +adsrt.*##+js(aopr, rmVideoPlay) +adsrt.*##+js(set, blurred, false) +*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=adsrt.* +linclik.com##+js(set, blurred, false) +||uptostream.com/assets/ads.xml$xhr,domain=imasdk.googleapis.com +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=uptostream.com +bs.to,burningseries.*##+js(aeld, click, preventDefault) +*$popunder,3p,domain=bs.to|burningseries.* +bs.to,burningseries.*##+js(ra, onclick) +hentaigo.com##+js(aopr, loadTool) +hentaigo.com##+js(aopr, r3H4) +hentaigo.com##a[href*="//www.nutaku.net/signup/"] +hentaigo.com###text-7 +hentaigo.com###text-10 +hentaigo.com###text-22 +||hentaigo.com/*/ads-*/$image,1p +lin-ks.*##+js(nano-sib) +||thebookee.net^$image,redirect-rule=1x1.gif,1p +@@||thebookee.net^$ghide +thebookee.net##ins.adsbygoogle +webdesigndev.com##+js(nowoif) +@@||schwaebische.de/*/ad$script,1p +schwaebische.de##+js(set, disasterpingu, false) +@@||schwaebische.de^$ghide +dz4soft.*##+js(noeval) +dz4soft.*##+js(aeld, load, 2000) +imageweb.ws##+js(nowoif) +||imageweb.ws/*.gif$image +imageweb.ws##a[href^="http://refer.ccbill.com/"] +hardcoreluv.com,imageweb.ws,pezporn.com,wildpictures.net##.box1[style^="height"] +hardcoreluv.com,pezporn.com##+js(acs, document.querySelectorAll, popMagic) +stream2watch.*##+js(acs, atob) +stream2watch.*##+js(aopr, AdservingModule) +stream2watch.*##p[style="color:white;"] +stream2watch.*##.min-test +streamcdn.*##+js(aopr, AaDetector) +streamcdn.*##+js(aopr, open) +wizhdsports.fi##+js(nowebrtc) +||stream2watch.*/sw.js$script,1p +dirpy.com##a[href*="bit.ly"] +dirpy.com##a[href*="out.dirpy.com"] +dirpy.com###dirpy-news +clix4btc.com##+js(set, adblock, false) +mp3guild.*,mp3clan.*##+js(aopw, Fingerprint2) +vidoza.net##+js(noeval) +vidoza.net##+js(nowoif) +vidoza.net##.in-block +vidoza.net###plo_0 +vidoza.net##[id*="ScriptRoot"] +vidoza.net##.simpleToast +vidoza.net##.download-green +*$image,redirect-rule=1x1.gif,domain=freeopenvpn.org +freeopenvpn.org##.ipspeed +freeopenvpn.org#@##advert_top +freeopenvpn.org##div[style^="display: block"][style*="width: 336px"] +@@||diariosur.es^$ghide +@@||diariovasco.com^$ghide +@@||elcomercio.es^$ghide +@@||elcorreo.com^$ghide +@@||eldiariomontanes.es^$ghide +@@||elnortedecastilla.es^$ghide +@@||hoy.es^$ghide +@@||ideal.es^$ghide +@@||larioja.com^$ghide +@@||lasprovincias.es^$ghide +@@||leonoticias.com^$ghide +||static.vocento.com/dab/*.js +diariovasco.com,eldiariomontanes.es,elnortedecastilla.es,hoy.es,ideal.es,larioja.com,lasprovincias.es,leonoticias.com##.voc-advertising +*$script,redirect-rule=noopjs,domain=spiegel.de +*$xhr,redirect-rule=noopjs,domain=spiegel.de +||doubleclick.net^$script,important,domain=spiegel.de +spiegel.de#@#.asset-affiliatebox +spiegel.de#@#.nativead +spiegel.de#@#.nativead + .headline-date +spiegel.de#@#a[href^="http://paid.outbrain.com/network/redir?"] +spiegel.de#@#a[href^="https://paid.outbrain.com/network/redir?"] +spiegel.de#@#a[data-nvp*="'trafficUrl':'https://paid.outbrain.com/network/redir?"] +spiegel.de#@#a[onmousedown^="this.href='https://paid.outbrain.com/network/redir?"] +spiegel.de#@#a[onmousedown^="this.href='http://paid.outbrain.com/network/redir?"] +||focus.de/src/js/spmsg$script,redirect=noopjs,1p +focus.de##.clearfix.branding > .surftipp:has-text(Anzeige) +focus.de##[href^="https://www.cyberport.de"] +@@||ariva.de^$ghide +*$script,domain=ariva.de,redirect-rule=noopjs +||ariva.de/js/fcm-sw.js$script,1p +ariva.de##.werb_textlink +ariva.de###iqd_mainAd +haxmaps.com##+js(acs, ab1, ab2) +vsco.co##.page-wrap > section:has-text(Download the free) +@@||bittube.me/*/js/ads2.js$xhr,1p +generacionretro.net##+js(aeld, load, 2000) +arlinadzgn.com,idntheme.com##+js(aopw, hidekeep) +ma-x.org##+js(aeld, load, adb) +||waybig.com/*.gif$image +waybig.com##.aff-list +waybig.com##.content-aff +waybig.com##.aside-adds-col +! animeflv.net | animeflvnet.com | animeflv.ac | animeflv.cc | animeflv.la | animeflv.ru ads/popup +animeflv.*##+js(acs, jQuery, 'pp12') +*$script,3p,denyallow=0gomovies.com.tr|cloudflare.com|cloudflare.net|cloudfront.net|disqus.com|disquscdn.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|mega.nz|recaptcha.net|somoskudasai.com,domain=animeflv.* +@@||animeflv.*/assets/vast/videojs$script,1p +||animeflv.*/api/pop.php +jkanime.*##+js(nowoif) +sfastwish.com##+js(aopr, __Y) +8tracks.com##+js(set, App.views.adsView.adblock, false) +nudecelebforum.com##+js(aopr, __ads) +nudecelebforum.com##+js(noeval) +nudecelebforum.com##+js(nostif, document.querySelectorAll, 1000) +nudecelebforum.com###floatingbar +@@||hyperdebrid.*^$ghide +hyperdebrid.*##+js(acs, decodeURI, atob) +pronpic.org##+js(aopr, document.createEvent) +pronpic.org##+js(aopw, ShowAdbblock) +pronpic.org##+js(nostif, style) +@@||visitweb.com^$script,domain=pronpic.org +||player.ooyala.com/*/ad-plugin/google_ima.min.js$script,important,redirect=noopjs,domain=nrl.com +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=nrl.com +@@||nrl.com^$ghide +nrl.com##[id^="publift-ad-"] +@@||ccbluex.net^$ghide +*/adsid/integrator.js$script,redirect=noopjs,domain=dl.ccbluex.net +||googlesyndication.com^$script,redirect=noopjs,domain=dl.ccbluex.net +thewebflash.com##+js(nostif, clientHeight) +chyoa.com##+js(aopr, __NA) +chyoa.com##+js(aopw, ExoLoader) +chyoa.com##.chyoa-banner +chyoa.com##.chyoa-adzone +3movs.com##+js(popads-dummy) +3movs.com##+js(noeval-if, ExoLoader) +3movs.com##+js(set, flashvars.adv_pause_html, '') +3movs.com##[src*="aid="] +3movs.com###player-pop-layer +||3movs.com/su4unbl-ssu.js +@@||seekingalpha.com^$ghide +||seekingalpha.com/boot_data.js$important +seekingalpha.com##[id^="ad-slot-"] +twitter.com,twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion,x.com##[data-testid="trend"]:has-text(/Promoted|Gesponsert|Promocionado|Patrocinat|Sponsorisé|Sponsorizzato|Promowane|Promovido|Реклама|Uitgelicht|Sponsorlu|Promotert|Promoveret|Sponsrad|Mainostettu|Sponzorováno|Promovat|Ajánlott|Προωθημένο|Dipromosikan|Được quảng bá|推廣|推广|推薦|推荐|プロモーション|프로모션|ประชาสัมพันธ์|प्रचारित|বিজ্ঞাপিত|تشہیر شدہ|مُروَّج|تبلیغی|מקודם/):upward(1) +twitter.com,twitter3e4tixl4xyajtrzo62zg5vztmjuricljdp2c5kshju4avyoid.onion,x.com##div[style^="transform"] h2 > div[style^="-webkit-line-clamp"] > span:has-text(/^(?:Promoted Post|Promowany Post|Post promovat|プロモポスト)$/):upward(3) +popularmechanics.com##+js(nostif, addEventListener, 0) +xmovies8.*##+js(nowoif) +xmovies8.*##+js(aeld, /^(?:click|mousedown|mousemove|touchstart|touchend|touchmove)$/, system.popunder) +xmovies8.*##+js(set, check_adblock, true) +xmovies08.org##+js(aeld, , '0x) +xmovies8.*###upgrade_pop +||hipercontas.com.br^$3p +main-echo.de##div[id^="traffective-ad"] +divxtotal.*,divxtotal1.*##+js(acs, jQuery, btoa) +divxtotal.*,divxtotal1.*###banner_publi +broadwayworld.com##a[href^="https://ad.doubleclick.net/ddm/"] +birdsandblooms.com,bombshellbling.com,dorkly.com,dryscalpgone.com,eclypsia.com,familyhandyman.com,gala.fr,gentlemansgazette.com,homeschoolgiveaways.com,hotbeautyhealth.com,ketoconnect.net,mom4real.com,mynaturalfamily.com,oneessentialcommunity.com,pageflutter.com,printablecrush.com,psychologyjunkie.com,skinnyms.com,skintagsgone.com,stayglam.com,tasteandtellblog.com,thecelticblog.com,thecozyapron.com,theendlessmeal.com,thehappierhomemaker.com,thelovenerds.com,yellowblissroad.com##+js(acs, btoa, BOOTLOADER_LOADED) +thisisfutbol.com##+js(aopr, PerformanceLongTaskTiming) +pcwelt.de##+js(aopr, proxyLocation) +sixsistersstuff.com##+js(aopr, Int32Array) +revealname.com##+js(set, $.fx.off, true) +alphaporno.com##+js(aopr, ExoLoader) +alphaporno.com##+js(set, console.clear, noopFunc) +alphaporno.com,zedporn.com##.bnnrs-player +alphaporno.com,zedporn.com##.bottom-banners +alphaporno.com,zedporn.com##.block-banner +alphaporno.com##.movies-block > div[style*="text-align:center;"] +alphaporno.com,zedporn.com##.sponsor +||alphaporno.com/bravoplayer/custom/alphapornocom/scripts/inplaybn- +?zoneId=*&sponsor$frame +porntube.com##.relatedContainer +porntube.com##.col-md-3:has(> iframe[src^="/external"]) +||porntube.com/external/ +||porntube.com/nativeexternal/ +jeuxvideo.com##^script:has-text(wadsBlocking) +comunidadgzone.es##+js(nostif, nextFunction, 2000) +tubous.com##+js(aopr, popMagic.init) +tubous.com##+js(aopr, document.dispatchEvent) +||fuckandcdn.com/*/ads/ +||fuckandcdn.com/*/frms/ +tubous.com##.allIM +tubous.com###good_money +tubous.com##a.DarkBg +||ichlnk.com^ +! freecoursesonline. me +freecoursesonline.*##+js(aeld, load, nextFunction) +globaldjmix.com##+js(aeld, /DOMContentLoaded|load/, y.readyState) +@@||globaldjmix.com^$ghide +pelisplus2.*##+js(acs, document.getElementsByTagName, onclick) +pelisplus.*##+js(aopr, AaDetector) +pelisplus.*,pelisplushd.*##+js(aopw, adcashMacros) +pelisplus.*##+js(aopw, smrtSP) +pelisplus.*##+js(aopw, smrtSB) +pelisplus.*,pelisplushd.*##+js(nowoif) +pelisplus.*##+js(ra, href, #opfk) +pelisplus.*##[class^="smartadtags"] +pelisplus.*##.links > a.btn[class*="fa-"] +pelisplus2.*##[style^="margin:-30px"] > [href][target="_blank"] +||gotprofits.com^$3p +@@||whiskypreisvergleich.de^$ghide +@@||whiskyprices.co.uk^$ghide +@@||whiskyprijzen.*^$ghide +@@||whiskyprix.*^$ghide +whiskypreisvergleich.de,whiskyprices.co.uk,whiskyprijzen.be,whiskyprijzen.nl,whiskyprix.be,whiskyprix.fr##.blocker +jellynote.com##+js(nostif, byepopup, 5000) +pcbolsa.com###ContenidoPubliCotiza +pcbolsa.com##.InfoPcBolsaAdBlock:xpath(..) +pcbolsa.com###ContenidoPubliCotizax1 +minecraftraffle.com##+js(acs, awm, location) +golfchannel.com##+js(set, adBlockEnabled, false) +@@||v.fwmrm.net^$xhr,domain=stream.golfchannel.com +downloadpirate.com##+js(aopw, Fingerprint2) +downloadpirate.com##+js(nowoif, _blank) +||downloadpirate.com/sw.js$script +||dogsprotectedfeed.info^$popup,doc +reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##.size-compact.Post:has([class*="promoted"]) +reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##div[id*="sidebar"][data-before-content="advertisement"]:upward(3) +reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##div[class][data-before-content="advertisement"]:not([id]) +reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##div[class][data-before-content="Werbung"]:not([id]) +reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##[id^="t3"].promotedlink:upward(.rpBJOHq2PR60pnwJlUyP0 > div) +toyoheadquarters.com##+js(aopr, document.dispatchEvent) +insidemarketing.it##+js(aopr, adblock) +insidemarketing.it##.homeBannerMax +9xupload.*##+js(nano-stb) +desiupload.*##+js(acs, getCookie) +desiupload.*##+js(aeld, , history.go) +desiupload.*###container > center > a[href][target="_blank"] > img +||a2ztechworld.com^$3p +vermangasporno.com##+js(aeld, , _0x) +vermangasporno.com##+js(aopr, dataPopUnder) +vermangasporno.com##[href^="https://bit.ly"] +vermangasporno.com##[href*="http://www.ciberhentai.net"] +*$script,3p,denyallow=cloudflare.net|cloudfront.net|disqus.com|disquscdn.com|fastlylb.net,domain=vermangasporno.com +bdsmstreak.com##+js(aopr, ExoLoader.serve) +bdsmstreak.com##+js(aeld, , _blank) +*$script,3p,denyallow=cloudflare.com|cloudflare.net|fastly.net|fastlylb.net|fluidplayer.com|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|recaptcha.net|twitter.com|x.com,domain=bdsmstreak.com +gamcore.com,porcore.com,porngames.tv,69games.xxx##+js(nowoif) +gamcore.com,porcore.com,porngames.tv,69games.xxx##+js(set, puShown, true) +zazzybabes.com##+js(aeld, /error|canplay/, (t)) +*$frame,script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudflare.net|fastly.net|fastlylb.net|getbootstrap.com|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|recaptcha.net|serverable.com|zencdn.net,domain=porcore.com|zazzybabes.com +@@||tm-offers.gamingadult.com/?offer=$frame,domain=gamcore.com|69games.xxx +://a.*/ipp?id=$script,3p +://a.*/loader?a=$frame,3p +/strip_ngn_2020_august$script,domain=porcore.com +||serverable.com/*.gif$image +cinedetodo.*##.alignnone +cinedetodo.*##.bnr +cinedetodo.*##[id*="yellow"] +||cda-online.pl/wp-content/uploads/*.js$script +aquipelis.*##+js(aopw, smrtSB) +aquipelis.*##+js(aopw, smrtSP) +aquipelis.net##[class^="adsbutt"] +eporner.com##+js(set-cookie, ADBp, yes) +eporner.com##+js(set-cookie, ADBpcount, 1) +eporner.com##+js(aopw, EPeventFire) +eporner.com##+js(nostif, additional_src, 300) +*.xml$xhr,3p,domain=eporner.com +||eporner.com/js/bowser.php +||eporner.com/cppb/ +||eporner.com/dotm/ +eporner.com##.mb:has(> .adnative-1x1) +@@||arenavision.*^$ghide +arenavision.*##+js(nowoif) +||imgpfx.arenavision. +vintage-erotica-forum.com##+js(acs, __ads) +vintage-erotica-forum.com##+js(acs, setTimeout, ____POP) +vintage-erotica-forum.com##+js(nowoif) +htmlgames.com##+js(no-fetch-if, openx) +||yollamedia.com^ +||htmlgames.com/js/yolla.php +@@||yolla-d.openx.net/|$script,domain=cdn.htmlgames.com +cdn.htmlgames.com###afgContainer +siamfishing.com##+js(acs, is_noadblock, window.location) +pornbimbo.com##+js(nostif, (), 2000) +@@||pornbimbo.com^$ghide +pornbimbo.com##[href^="https://ca.clcknads.pro"] +pornbimbo.com##.bottom-adv +pornbimbo.com##[src^="http://pornbimbo.com/player/html.php"] +/pu-placer.js +@@||bntech.io^$script,domain=buffalonews.com +momondo.com##+js(nowoif) +momondo.com##[onclick*="inline.ad"] +momondo.*##div[id$=-list] div[role=tab] +haaretz.co.il,haaretz.com##+js(aeld, load, hblocked) +haaretz.co.il,haaretz.com##+js(acs, $, AdBlockUtil) +haaretz.co.il,haaretz.com##+js(set, showAds, true) +haaretz.com##+js(no-fetch-if, googlesyndication) +@@||haaretz.com^$ghide +haaretz.com##.advert +avoiderrors.com##+js(nostif, css_class.show) +avoiderrors.com##.ai-viewport-1.code-block-3.code-block +avoiderrors.com##[href^="https://www.avoiderrors.com/robinhood"] +slate.com##+js(aeld, , /adbl/i) +slate.com##+js(nostif, /adbl/i) +slate.com##.slate-ad +slate.com##+js(aeld, error, , elements, [src]) +4tests.com##+js(set, adblock, false) +@@||farmeramania.de^$ghide +farmeramania.de##+js(acs, $, show) +||sersh.com^ +guidedhacking.com##[href="https://guidedhacking.com/advertise"] +||guidedhacking.com/*banner$image +||guidedhacking.com/*.gif$image +theralphretort.com##+js(aopw, adBlockDetected) +||ads.puhutv.com/i.jpg$image,redirect=2x2.png +@@||hdblog.it^$ghide +hdblog.it#@#.item_compra +hdblog.it#@#.box_flame +hdblog.it#@#.box_grampa_shadow +hdblog.it##[id^="google_ads_iframe"] +hdblog.it##.ads_container_top +hdblog.it##.ads_block +@@||hdmotori.it^$ghide +hdmotori.it##body:style(background: none !important; overflow: auto !important;) +hdmotori.it##+js(nostif, CANG, 3000) +hdmotori.it##.ads_block +megalinks.info##+js(aeld, DOMContentLoaded, adlinkfly) +megapaste.xyz###newlayercontent +updato.com##+js(nostif, updato-overlay, 500) +lolhentai.net##+js(nowoif) +lolhentai.net##+js(aopr, loadTool) +lolhentai.net##.sponsor +||lolhentai.net/cornergirls.js +! ! adding sites using the same script +mangafreak.me##+js(nowoif) +mangafreak.me##+js(acs, setTimeout, document.querySelector) +||cdn.siteswithcontent.com/js/push/subscribe.js$script,important +||cdn.contentsitesrv.com/js/push/subscribe.js$script,important +*$script,3p,denyallow=bootstrapcdn.com|cloudflare.net|cloudfront.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastlylb.net|fbcdn.net|fontawesome.com|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|kisscartoon.info|sharethis.com|unpkg.com|watchcartoonsonline.info|wp.com,domain=kiss-anime.* +kiss-anime.*###rightside > .clear2 ~ .rightBox +kiss-anime.*##.episodeList > div > div[style*="text-align: center"] +freepornvideo.sex,teenpornvideo.xxx##+js(aopr, ExoLoader.serve) +freepornvideo.sex##noindex +teenpornvideo.xxx##.aside-spots +tubsexer.*##.sponsored_top +tubsexer.*##.table +tubsexer.*##.desktop_link +tubsexer.*##+js(nostif, innerText, 2000) +tubsexer.*##.advertising +yourlust.com##+js(aopr, ExoLoader.serve) +yourlust.com##+js(aeld, getexoloader) +www.twitch.tv##+js(nowoif, /amazon-adsystem|example\.com/) +||amazon-adsystem.com/aax2/apstag.js$script,domain=twitch.tv,important +||ddacn6pr5v0tl.cloudfront.net^ +twitch.tv##.video-player__overlay .player-overlay-background:has(> div[class^="Layout-"] > div[class^="Layout-"] > div[class^="Layout-"] > a:is([href*="/how-to-allow-ads-browser"], [href="https://www.twitch.tv/turbo"])) +imx.to##+js(aopr, ExoLoader.serve) +crazyshit.com##+js(acs, jQuery, document.cookie) +||crazyshit.com/aff/$frame +strikeout.*##+js(nowoif, |) +strikeout.*##+js(acs, setTimeout, admc) +strikeout.*##.position-absolute:style(opacity: 0 !important;) +strikeout.*##.d-none.d-lg-block.col-lg-3 +strikeout.*##+js(acs, String.fromCharCode, 'shift') +strikeout.*##.m-1.btn-danger.btn +strikeout.*##.w-100.position-absolute.h-100 +*$image,redirect-rule=1x1.gif,domain=strikeout.* +plyjam.*##+js(set, attr, {}) +plyjam.*##+js(set, scriptSrc, '') +lejdd.fr##+js(aopr, SmartWallSDK) +peliculasmx.net###pbar_outerdiv +peliculasmx.net##.selected:has-text(Ads) +peliculasmx.net##+js(nowebrtc) +peliculasmx.net##+js(aopw, segs_pop) +##[href^="https://www.onclickperformance.com/"] +peliculasmx.net###pills-ads +peliculasmx.net###pills-ads-tab +ciberdvd.*##+js(nowoif) +ciberdvd.*##+js(aopw, smrtSB) +@@||windows10gadgets.pro^$ghide +anonymousemail.me##+js(acs, document.getElementById, adblock) +porngem.com##+js(set, console.clear, noopFunc) +porngem.com##.video-right +porngem.com###player-pop-layer +porngem.com##.adv-in-video +porngem.com##.bottom-b-s +@@||e-komplet.dk^$ghide +@@||btc-echo.de^$ghide +btc-echo.de##.elementor-row:has-text([Anzeige]) +foxsports.com.au##+js(set, cxStartDetectionProcess, noopFunc) +thememypc.net##+js(aopr, Abd_Detector) +thememypc.net##+js(nano-sib, counter, 2000) +kinoger.*##+js(aopr, __Y) +cityam.com##+js(aopr, paywallWrapper) +thesimsresource.com##+js(set, isAdBlocked, false) +thesimsresource.com##+js(no-xhr-if, /enthusiastgaming|googleoptimize|googletagmanager/) +thesimsresource.com##.crtv-bottom-wrapper +thesimsresource.com##.pleasewaitad +xbabe.com##.bnnr +xbabe.com##.bnnrs-bottom +*$script,3p,denyallow=googleapis.com|hwcdn.net|fastly.net|jwpcdn.com,domain=xbabe.com +||akamaihd.net/vod/*$media,redirect=noopmp3-0.1s,domain=7tv.de +satcesc.com##+js(nostif, css_class) +||wpfc.ml/b.gif$image,redirect=1x1.gif,domain=satcesc.com +pornoreino.com##+js(aopr, ExoLoader) +pornoreino.com##+js(aopr, open) +pornoreino.com##.banner +@@||dogefaucet.com^$ghide +dogefaucet.com##.loader +||a-ads.com^$frame,redirect=noopframe,domain=dogefaucet.com +playretrogames.com##+js(nano-stb, ez, *, 0.02) +playretrogames.com##.adblock +shrt10.com##+js(aopr, open) +shrt10.com##+js(aopw, adcashMacros) +shrt10.com##+js(set, blurred, false) +*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com|recaptcha.net,domain=shrt10.com +||dx-tv.com^$3p +@@||shrt10.com^$ghide +fxporn69.*##+js(aeld, click, exopop) +fxporn69.*##+js(set, adblock, noopFunc) +fxporn69.*##+js(nostif, nextFunction, 2000) +*$popup,domain=vipbox.*,3p +@@|about:blank|$popup,domain=vipbox.* +vipbox.*##a[href^="https://s3.amazonaws.com/"] +vipbox.*##button[data-open="_blank"] +vipbox.*##.btn-lg.btn +~vipbox.pl,vipbox.*,vipboxtv.*##.position-absolute +##[data-lnguri*="vipbox"] +*$image,redirect-rule=1x1.gif,domain=vipbox.* +@@||vipbox.*^$ghide +vipbox.*##.btn-success.btn +vipbox.*,viprow.*##+js(set, path, '') +vipbox.*,vipboxtv.*##+js(json-prune, *, *.adserverDomain) +vipbox.*##+js(nowoif, , 10) +vipbox.*##+js(acs, JSON.parse, atob) +!#if cap_html_filtering +vipbox.*##^script:has-text(/delete window|adserverDomain|FingerprintJS/) +!#else +vipbox.*##+js(rmnt, script, /delete window|adserverDomain|FingerprintJS/) +!#endif +wkyc.com##+js(acs, btoa) +wkyc.com##.grid__sticky-column_side_left +crackllc.com##.onp-sl-content:style(display: block !important;) +crackllc.com##.onp-sl-social-locker +animeid.tv##+js(nowebrtc) +animeid.tv##[href^="http://play.leadzupc.com/"] +geo.fr##+js(aopw, $getWin) +gnomio.com##+js(no-xhr-if, /doubleclick|googlesyndication/) +@@||nba.com^$ghide +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=nba.com +@@||neulionms-a.akamaihd.net^$script,domain=nba.com +||ugdturner.com/xd.sjs$script,redirect=noopjs,domain=nba.com +||clips-manifests-aka.warnermediacdn.com^$xhr,removeparam=caid,domain=nba.com +nba.com##+js(set, __NEXT_DATA__.props.clientConfigSettings.videoAds, undefined) +hotcopper.com.au##+js(acs, $, blockAds) +trekbbs.com##div[style^="width:970px"] +hdbox.ws##+js(nostif, show) +@@||benkhouya.com^$script,domain=anonymousemail.me +designmodo.com##.onp-sl-content:style(display: block !important;) +designmodo.com##.onp-sl-social-locker +||ctrl.blog/ac/rba$frame,1p +ctrl.blog##+js(set, _ctrl_vt.blocked.ad_script, false) +ctrl.blog##.boxa +*/wp-content/plugins/adunblocker/*$script,1p +sportlife.es##+js(set, blockAdBlock, noopFunc) +inhabitat.com##+js(aopr, registerSlideshowAd) +*$frame,domain=lusthero.com,3p +lusthero.com##+js(nostif, (), 50) +m4ufree.*##+js(nostif, debugger) +m4ufree.*,streamm4u.*##+js(nowebrtc) +m4ufree.*##+js(aopr, mm) +streamm4u.*##+js(aopr, AaDetector) +mega-dvdrip.*,peliculas-dvdrip.*##+js(aeld, DOMContentLoaded, shortener) +peliculas-dvdrip.*##+js(aopr, AdservingModule) +peliculas-dvdrip.*##[class*="col-"] > p > [href] > img.alignnone +megapastes.com##+js(aeld, DOMContentLoaded, adlinkfly) +megapastes.com##.content > center +@@||anime-update*.*^$ghide +@@||animedao*.*^$ghide +animedao.*##.gads +*$script,redirect-rule=noopjs,domain=animedao.* +@@||animedao*.stream^$script,1p +animedao.*##.ab +animedao.*##hr +avclub.com,clickhole.com,deadspin.com,earther.com,gizmodo.com,jalopnik.com,jezebel.com,kotaku.com,lifehacker.com,splinternews.com,theinventory.com,theonion.com,theroot.com,thetakeout.com##article.postlist__item:has(.meta__network) +!#if env_firefox +@@||amazon-adsystem.com/$script,domain=avclub.com|clickhole.com|deadspin.com|earther.com|gizmodo.com|jalopnik.com|jezebel.com|kotaku.com|lifehacker.com|splinternews.com|theinventory.com|theonion.com|theroot.com|thetakeout.com +!#endif +worldfreeware.com##+js(aopr, require) +@@||worldfreeware.com^$ghide +||tibiabr.com/$frame,1p +einthusan.*##+js(no-xhr-if, /^(?!.*(einthusan\.io|yahoo|rtnotif|ajax|quantcast|bugsnag))/) +@@||einthusan.*/prebid.js$script,1p +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=einthusan.* +@@||googletagmanager.com/gtm.js$xhr,domain=einthusan.tv +||einthusan.tv/promo/$xhr +||einthusan.io/promo/$media +einthusan.*##.adspace-lb +einthusan.*##.adspace-lr +nuevos-mu.ucoz.com##+js(aeld, load, 2000) +@@||esradio.libertaddigital.com/ad/*$xhr,1p +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=esradio.libertaddigital.com +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=storage.oraclecloud.com +@@||storage.oraclecloud.com/*/smartclip-services/sc_player/$script,1p +esradio.libertaddigital.com###mega-atf +! Fix navbar being stuck in the middle of the page +dailydot.com##.dd-nav-global:style(top: 0 !important; transform: none !important;) +pornfay.*##+js(nowoif) +*$frame,domain=pornfay.* +pornfay.*##.rmedia +pornfay.*##.zone +pornfay.*##.bottom-adv +finofilipino.org##+js(set, caca, noopFunc) +mypornstarbook.net##+js(aopr, ExoLoader.serve) +mypornstarbook.net##table > tbody > tr:has-text(Advertisement) +grantorrent.*,grantorrent1.*##+js(aopr, getUrlParameter) +grantorrent.*##+js(acs, onload, btoa) +grantorrent.*##+js(aopr, LieDetector) +grantorrent.*,grantorrents.*##+js(nano-stb) +grantorrent.*,grantorrent1.*##+js(aopw, Fingerprint2) +grantorrent.*,grantorrent1.*##+js(acs, decodeURI, decodeURIComponent) +grantorrents.*##.myButton +grantorrents.*##.custom-html-widget.textwidget > [style*="width:300px; height:600px"] +##[href*="passtechusa.com"] +desbloqueador.*##+js(aeld, mousedown, trigger) +desbloqueador.*##+js(set, Ok, true) +desbloqueador.*##+js(nowoif, given) +ddlvalley.*##+js(acs, decodeURI, getScriptFromCss) +ddlvalley.*##+js(aopw, Fingerprint2) +speedtest.net##+js(aopr, _sp_) +speedtest.net#@#.pure-u-custom-ad-skyscraper +speedtest.net##.eot-dd-content +seehd.*##+js(acs, String.fromCharCode, 'shift') +||bokarsolutions.co.uk^$3p +mac2sell.net##+js(no-fetch-if, method:HEAD) +xberuang.*##+js(set, safelink.adblock, false) +xberuang.*##+js(nano-sib) +@@||v.fwmrm.net/ad/g/$xhr,domain=mycanal.fr +goafricaonline.com##+js(aopr, goafricaSplashScreenAd) +@@||youmath.it/$script,1p +*$script,redirect-rule=noopjs,domain=youmath.it +youmath.it##+js(acs, document.getElementById, try) +youmath.it##+js(nostif, adb) +youmath.it##+js(no-xhr-if, /adnxs.com|onetag-sys.com|teads.tv|google-analytics.com|rubiconproject.com|casalemedia.com/) +youmath.it###D_1 +youmath.it###C_1 +ashemaletube.*##+js(set, openPopunder, noopFunc) +ashemaletube.com##.ads-block-rightside +@@||ashemaletube.com^$ghide +||cc.ashemaletube.com/*/black-header.jpg$image +||cc.ashemaletube.com/*/header-black.jpg$image +ashemaletube.com##.video-end-overlay +!*.mp4$media,redirect=noopmp3-0.1s,domain=ashemaletube.com +ashemaletube.*##+js(rpnt, script, /vastURL:.*?'\,/, vastURL: ''\,) +ashemaletube.*##+js(rpnt, script, /url:.*?'\,/, url: ''\,) +||cc.ashemaletube.com/*/black-main.jpg$image,1p +ashemaletube.com###site-wrapper:style(padding-top: 0 !important;) +ashemaletube.com##.header-ads-wrapper +@@/key=$media,domain=ashemaletube.com +ashemaletube.*##.js-toggle-content-wrapper a[href^="/link/out/"]:upward(.js-toggle-content-wrapper) +ashemaletube.com##.ads-wrapper +ashemaletube.*##.ad-wrap +||ashemaletube.*/ads/$xhr +||ashemaletube.*/ast/b/$frame +ashemaletube.*##.fh-line +ashemaletube.*##iframe[src*="/link/out/b/"] +hotscope.tv##+js(nowoif) +hotscope.tv##[style^="transform"]:has(#videoHolder) +hotscope.tv##ul[style^="padding-top:"] +||hotscope.tv^$csp=script-src 'self' 'unsafe-inline' 'unsafe-eval' data: https://disqus.com *.disqus.com *.google-analytics.com *.disquscdn.com +||hotscope.tv/_next/static/chunks/pages/go-$script,1p +japanesefuck.com##+js(aopr, ExoLoader.serve) +*/wp-content/plugins/deadblocker/*$script,1p +todopolicia.com##+js(nostif, show) +@@||poedb.tw^$ghide +poedb.tw###bottombanner970 +poedb.tw###topbanner970 +poedb.tw##[target="_blank"]:has([src*="webp"]) +poedb.tw##.text-center:has([src*="webp"]):has([style]) +cine.to##+js(aeld, , 0x) +coinfaucet.io##+js(acs, atob, tabunder) +coinfaucet.io,freecardano.com,freenem.com##+js(nowebrtc) +cbc.ca##+js(aopw, xhr.prototype.realSend) +cbc.ca##.ad-risingstar-container +cbc.ca##.ad-container +dallasnews.com##+js(nostif, initializeCourier, 3000) +@@||courier-js.dallasnews.com^$script,1p +nulledteam.com##+js(acs, $, userAgent) +turbobit.net##+js(acs, decodeURI, decodeURIComponent) +turbobit.net##+js(aopr, open) +turbobit.net##+js(popads-dummy) +link.tl##+js(aopr, _0xbeb9) +link.tl##+js(nano-sib, , 1800) +||link.tl/interstitial/*$frame,1p +||link.tl/splash/*$script,1p +||lnk.news^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation +||lnk.parts^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation +lnk.news,lnk.parts##+js(aopr, popAdsClickCount) +lnk.news,lnk.parts##+js(nano-sib, , , 0) +lnk.news,lnk.parts##+js(nostif, redirectPage) +lnk.news,lnk.parts##.child-centered.display-300x250 +nzbstars.com##+js(acs, document.getElementById, adblocker) +nzbstars.com##[href="usenetbucket.php"] +||nzbstars.com/*.gif$image +@@||frkn64modding.com^$ghide +frkn64modding.com##+js(no-xhr-if, ad_) +frkn64modding.com##.ezoic-ad +accordo.it###bglink +||accordo.it/cloud-assets/x/sfondi/ +vixenless.com##+js(acs, azar, redirect) +bestialitytaboo.tv,bestialitysextaboo.com,mujeresdesnudas.club##+js(acs, $, azar) +bestialitysexanimals.com,bestialporn.com,mujeresdesnudas.club,mynakedwife.video##+js(aopr, open) +zootube1.com##+js(aopr, popunderSetup) +zootube1.com##+js(cookie-remover, da325) +zootube1.com##+js(aost, document.cookie, https) +videoszoofiliahd.com##+js(aopr, open) +videoszoofiliahd.com##+js(aeld, /^(?:click|mousedown)$/, popunder) +asiananimaltube.org##+js(nowoif) +videoszoofiliahd.com##[href^="https://redirect.ero-advertising.com/"] +allbestiality.com,beastwomans.com,beastzoo.org,bestialitysexvideos.com,bestialitytaboo.tv,bestialityworld.org,bestialporn.net,bestialzoo.*,fakingszoo.com,hispajotes.com,portalzoo.com,videosbizarre.com,zoofiliak9.com,zoofilianet.com,zoofiliataboo.com,zookings.com,zoosexnet.com,zoosexsite.com,zootubex.tv,zootubex.us##[href^="https://www.skypeis"] +porntopic.com##+js(aopr, loadTool) +||grtyb.com^$3p +xxxtubezoo.com,zooredtube.com##+js(aopr, popunderSetup) +xxxtubezoo.com,zooredtube.com##+js(aeld, DOMContentLoaded, preventExit) +hdbraze.com##+js(acs, Math.floor, hilltop) +||hdbraze.com/sw.js$script,1p +hdbraze.com##.ads +fapdig.com##+js(acs, document.createElement, 'script') +||fapdig.com/sw.js$script,1p +videos1002.com##+js(acs, $, azar) +videos1002.com##+js(aopr, jsPopunder) +ancensored.com,ganool.*##+js(aeld, /^(?:click|mousedown)$/, _0x) +ganool.*##+js(nowebrtc) +@@||boards.net^$ghide +@@||freeforums.net^$ghide +@@||proboards.com^$ghide +/tortoise.min.js$domain=boards.net|freeforums.net|proboards.com +boards.net,freeforums.net,proboards.com##+js(acs, $, vglnk) +boards.net,freeforums.net,proboards.com##[id^="ad-"], #remove_ads_link +proboards.com###ad1 +inkapelis.*##+js(acs, setTimeout, aadblock) +inkapelis.*##+js(aopr, AaDetector) +inkapelis.*##+js(aopw, smrtSB) +inkapelis.*##+js(aopw, smrtSP) +inkapelis.*##+js(aopw, Fingerprint2) +inkapelis.*##+js(acs, decodeURI, decodeURIComponent) +||inkapelis.*/sw.js$script +cuevana3.*##+js(aopr, S9tt) +cuevana3.*##+js(aopr, decodeURI) +cuevana3.*##+js(aopw, popUpUrl) +yoututosjeff.*##+js(aopw, adBlockDetected) +yoututosjeff.*##+js(aeld, load, 2000) +||googlesyndication.com/pagead/$script,redirect=noopjs,domain=yoututosjeff.es +efukt.com##+js(aeld, click, preventDefault) +efukt.com##+js(nostif, _0x, 2000) +efukt.com##+js(aopr, open) +||syndication.twitter.com/i/jot$frame,domain=efukt.com,important +efukt.com##[href^="https://efukt.com/videos/naughty/"] +efukt.com##.hide_before:has([href*="?utm_source=efukt"]) +efukt.com##div.tile:has(a[href^="https://efukt.com/out.php"]) +efukt.com##.efukt-widget-slider-nice-try-adblockers +efukt.com##.plugs-nice-try-adblockers +gtaall.com##+js(nowebrtc) +gtaall.com##+js(aopr, Notification) +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=arlinadzgn.com|idntheme.com +fotbolltransfers.com##+js(aopr, adBlockDetected) +androidaba.*##+js(aopw, adBlockDetected) +ilpuntotecnico.com##[style^="text-align:center; height:"][style$="px;"] +@@||ilpuntotecnico.com^$ghide +igg-games.com##+js(acs, addEventListener, document.createElement) +*$script,3p,domain=igg-games.com|bluemediafile.sbs,denyallow=cloudflare.com|fastcomments.com|googleapis.com|addtoany.com +igg-games.com##+js(aopw, btoa) +igg-games.com##+js(ra, srcdoc, iframe) +||igg-games.com/sw.js$script,1p +igg-games.com##[href^="https://tm-offers"] +@@||igg-games.com^$ghide +igg-games.com##.widget_advads_ad_widget +igg-games.com##.uk-margin-medium-top > *:first-child:has(img[src^="https://igg-games.com/wp-content/uploads/"]) +igg-games.com##.uk-margin-medium-top > *:first-child + a:has(img[src^="https://igg-games.com/wp-content/uploads/"]) +igg-games.com##article > a:has(img[loading="lazy"][width][height]) +igg-games.com###tm-sidebar > div:not([class], [id]):has(a[rel] > img[src^="https://igg-games.com/wp-content/uploads/"]) +igg-games.com##aside > :not(:first-child) a[href] img +igg-games.com##a[href$=".php"] +igg-games.com##a[href^="https://igg-games.com/"][href*="flix"] > img +||igg-games.com/wp-content/uploads/2024/02/hhh3.png$image +||igg-games.com/wp-content/uploads/2021/02/hh1.gif$image +||igg-games.com/wp-content/uploads/2024/02/naa1.jpg$image +||igg-games.com/wp-content/uploads/2024/02/aaa.jpg$image +||igg-games.com/wp-content/uploads/2024/02/sss.jpg$image +pcgamestorrents.com##[href*="banner"] +pcgamestorrents.org##[href*="/gameadult/"][href$=".php"] +||pcgamestorrents.com/*.gif$image +pcgamestorrents.com,pcgamestorrents.org##a[href^="https://pcgamestorrents."][href*="/cuskilo"] +pcgamestorrents.com,pcgamestorrents.org##a[href][aria-label="awed"] +/\/uploads\/2025/\d{2}\/[0-9a-z]{6,12}\.jpg$/$image,match-case,1p,domain=igg-games.co|igg-games.com|pcgamestorrents.com|pcgamestorrents.org +pornrabbit.com##+js(nowoif) +||pornrabbit.com/sw.js$script,1p +pornrabbit.com##.stage-promo +pornrabbit.com##.footer-margin +pornrabbit.com##.table +camwhoresbay.com##+js(acs, readCookieDelit) +camwhoresbay.com##div.opt +camwhoresbay.com##.fake-player +camwhoresbay.com##.content > center:has([style="width:300px;height:250px"]) +@@||my5.tv^$ghide +gamepedia.com###bodyContent:style(width:100%!important) +gamepedia.com##[id^="siderail_"] +anon-v.com##+js(acs, atob, decodeURI) +anon-v.com##+js(acs, onload) +anon-v.com##.embed-container +anon-v.com##.place +anon-v.com##.sponsor +anon-v.com##.table +||cfgr2.com^ +||hrtya.com^ +||nudespree.com/a/av/live.php$frame +cartoonporno.xxx##+js(aopr, prPuShown) +cartoonporno.xxx##+js(nowoif) +you-porn.com,youporn.*,youporngay.com##+js(set, page_params.holiday_promo, true) +you-porn.com,youporn.*,youporngay.com##.ad-bottom-text +you-porn.com,youporn.*,youporngay.com##.adLinkText +you-porn.com,youporn.*,youporngay.com##.adsbytrafficjunky +you-porn.com,youporn.*##.e8-column +you-porn.com,youporn.*##[data-removelink="removeLink"] +you-porn.com,youporngay.com###pb_template +you-porn.com##[id^="adblock"] +##.trafficjunky-float-right +redtube.*##+js(acs, Object.defineProperty, trafficjunky) +redtube.*##+js(nowoif) +redtube.*##+js(set, page_params.holiday_promo, true) +redtube.*##.abovePlayer +redtube.*##.adsbytrafficjunky +redtube.*##li:has(.adsbytrafficjunky) +redtube.*##.remove_ads +! mirror +9908ww.com,adelaidepawnbroker.com,bztube.com,hotovs.com,insuredhome.org,nudegista.com,pornluck.com,vidd.se##+js(set, page_params.holiday_promo, true) +! anti adb https://www.tvserial.it/the-generi-serie-tv-sky-maccio-capatonda-video/ +@@||tvserial.it^$ghide +@@||exmarketplace.com^$domain=tvserial.it +tvserial.it##.gptslot +foumovies.*##+js(aopw, decodeURIComponent) +fullywatchonline.com,myvidmate.*##+js(acs, atob, decodeURIComponent) +moviescounter.*##+js(aopr, LieDetector) +moviescounter.*##+js(aeld, , _0x) +/watchbutton11.png$image +/download11.png$image +mydownloadtube.*##.movie-box > .vert-add +||vuwomoby.pro^ +douploads.*##+js(acs, $, show) +douploads.*##+js(ra, checked, input#chkIsAdd) +douploads.*##[href^="https://href.li/"] +||douploads.*/*sw$script,1p +@@||douploads.*^$ghide +douploads.*##a[rel="nofollow"] +autobild.de##+js(aopr, adSSetup) +alimaniac.com##+js(aopr, document.cookie) +hulkshare.com##+js(nosiif, adblockerModal, 1000) +springfieldspringfield.co.uk##+js(nostif, ads, 750) +mcoc-guide.com#@#ins.adsbygoogle[data-ad-slot] +mcoc-guide.com#@#ins.adsbygoogle[data-ad-client] +porngun.net##.video:not([id]) +mp3fy.com##+js(nostif, nextFunction, 2000) +ebookmed.*##+js(aeld, load, 2000) +@@||appvn.com^$ghide +appvn.com##.ads +appvn.com##.downloadtitle +appvn.com###info:style(display: block !important) +dailyfreebits.com##+js(acs, $, html) +! http://www.subtorrents.io/series/the-durrells/ popups +subtorrents.*,subtorrents1.*##+js(aopr, capapubli) +subtorrents.*,subtorrents1.*##+js(aopr, getUrlParameter) +subtorrents.*,subtorrents1.*##+js(nowebrtc) +subtorrents.*,subtorrents1.*##+js(noeval) +subtorrents.*,subtorrents1.*##+js(popads-dummy) +subtorrents.*,subtorrents1.*##+js(set, btoa, null) +lordpremium.*##+js(aeld, load, nextFunction) +tranny.one##+js(popads-dummy) +tranny.one##+js(aopr, open) +tranny.one##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +tranny.one##.adsFirst +tranny.one##.adsSecond +tranny.one##.squarecont +pornhost.com##+js(aopw, encodeURIComponent) +loveroms.*##+js(acs, decodeURI, decodeURIComponent) +1xxx-tube.com,asssex-hd.com,bigcockfreetube.com,bigdickwishes.com,enjoyfuck.com,freemomstube.com,fuckmonstercock.com,gobigtitsporn.com,gofetishsex.com,hard-tubesex.com,hd-analporn.com,hiddencamstube.com,kissmaturestube.com,lesbianfantasyxxx.com,modporntube.com,pornexpanse.com,pornokeep.com,pussytubeebony.com,tubesex.me,vintagesexpass.com,voyeur-pornvideos.com,voyeurspyporn.com,voyeurxxxfree.com,xxxtubenote.com,yummysextubes.com##+js(aopr, Aloader.serve) +1xxx-tube.com,asssex-hd.com,bigcockfreetube.com,bigdickwishes.com,enjoyfuck.com,freemomstube.com,fuckmonstercock.com,gobigtitsporn.com,gofetishsex.com,hard-tubesex.com,hd-analporn.com,hiddencamstube.com,kissmaturestube.com,lesbianfantasyxxx.com,modporntube.com,pornexpanse.com,pornokeep.com,pussytubeebony.com,tubesex.me,vintagesexpass.com,voyeur-pornvideos.com,voyeurspyporn.com,voyeurxxxfree.com,xxxtubenote.com,yummysextubes.com##+js(noeval) +1xxx-tube.com###invideo_3 +enjoyfuck.com,pornokeep.com##.advin +fuckmonstercock.com##.znaipn +fuckmonstercock.com##.ztkady +kissmaturestube.com,yummysextubes.com##.block-a +pornexpanse.com##.banners_pl +pussytubeebony.com##div.banner-area +tubesex.me##.adban1 +||uii.io^$csp=script-src 'self' 'unsafe-inline' 'unsafe-eval' data: *.gstatic.com *.google.com *.googletagmanager.com *.recaptcha.net +uii.io##+js(noeval) +uii.io##+js(nowebrtc) +uii.io##+js(nowoif) +@@||uii.io^$ghide +*$frame,denyallow=google.com|hcaptcha.com,domain=uii.io +uii.io##.banner +uii.io##a[href^="https://href.li/"] +uii.io##a[href^="http://mob1ledev1ces.com/"] +uii.io##body > div[style]:has(input[type="button"]) +uii.io##div[style*="z-index:99999"] > div[style*="width:300px"] +!#if env_chromium +uii.io##+js(aeld, mouseup, _blank) +uii.io#@#+js(noeval) +!#endif +lebensmittelpraxis.de##+js(nostif, nextFunction, 2000) +ojogos.com.br##+js(set, sp_ad, true) +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=witchhut.com +sheamateur.com##+js(aopr, __htapop) +ccn.com##.widget:has-text(/advert|sponsor/i) +ccn.com##.row.divider:has-text(/sponsor|press releases/i) +vinaurl.*##+js(aopr, app_vars.force_disable_adblock) +vinaurl.*##+js(aopr, open) +vinaurl.*##+js(aopw, adsHeight) +vinaurl.*##+js(ra, onmousemove, button) +vinaurl.*##+js(set, blurred, false) +||dembuon.vn/lib/flies/flier.js$script,domain=vinaurl.* +||i.imgur.com^$image,domain=vinaurl.* +vinaurl.*###ads-notice +vinaurl.*##[href^="https://dembuon.vn"] +vinaurl.*##.alert-danger +vinaurl.*##[href^="https://kttm.club/"] +||vinaurl.*/*png +gamelopte.com##+js(nano-sib, yuidea-, *) +loptelink.com##+js(set, blurred, false) +loptelink.com##center > a[href^="https://loptelink.com/ref/"] > img +||googleusercontent.com/*/s320/download-button-gif-$domain=loptelink.com +powforums.com##+js(set, adsBlocked, false) +powforums.com##+js(nowoif) +@@||powforums.com/js/*$xhr,1p +usgamer.net##+js(set, _sp_.msg.displayMessage, noopFunc) +wallpapersmania.com##.js_disabled +wallpapersmania.com###cpa_wrap +sexviacam.com#@#a[href^="https://chaturbate.com/affiliates/"] +@@||chaturbate.com^$frame,domain=sexviacam.com +porndoe.com##+js(aopr, open) +porndoe.com##+js(aeld, click, pop_under) +porndoe.com##+js(nostif, location.href, 500) +||porndoe.com/movie/preroll/$media,1p +||porndoe.com/wp-contents/video?id=$frame +porndoe.com##.player-right +porndoe.com##.-h-ticker +##[href^="https://t.mobtyb.com/"] +naughtymachinima.com##+js(acs, __htapop) +naughtymachinima.com##.col-md-8 > a[href][target="_blank"] +||chaturbate.com^$frame,domain=naughtymachinima.com +filehorse.com##+js(set, isAdBlockActive, false) +gsm-solution.com##+js(aopr, _0x32d5) +gsm-solution.com###adblock-blocker-overlay +ettv.*##+js(nowoif) +ettv.*##+js(aopr, AaDetector) +ettv.*##:xpath('//*[contains(text(),"VPN")]'):upward(2) +pelisgratis.*##+js(aopw, smrtSB) +pelisgratis.*##a[href*="look.kfiopkln.com"] +pelisgratis.*##a[href*="look.opskln.com"] +ver-pelis.*##+js(nowoif) +ver-pelis.*##+js(acs, decodeURI, decodeURIComponent) +newpelis.*,pelix.*##+js(aeld, , 0x) +newpelis.*,pelix.*##+js(set, btoa, null) +newpelis.*,pelix.*##+js(nowoif) +newpelis.*,pelix.*##+js(aeld, load, url) +newpelis.*,pelix.*##+js(aopw, smrtSB) +newpelis.*,pelix.*##+js(aopw, smrtSP) +pelix.*##+js(aopr, AaDetector) +pelix.*##+js(aopw, adcashMacros) +peliculas24.*##+js(acs, blur) +peliculas24.*##+js(aopw, smrtSB) +peliculas24.*##[href^="http://refpadsm.host/"] +topvideosgay.com##+js(aopr, open) +onlinevideoconverter.*##+js(nowoif) +@@||onlinevideoconverter.*^$ghide +onlinevideoconverter.*##.music-container > div[style] > a[href][target] > img +pnd.*##+js(aopr, AaDetector) +pnd.*##+js(aopw, Fingerprint2) +pnd.*##A[href$=".html"][rel="nofollow norefferer noopener"] +pnd.*##.banner-captcha +freebitcoin.win##+js(aopr, adBlockDetected) +freebitcoin.win##+js(set, CaptchmeState.adb, undefined) +@@||freebitcoin.win^$ghide +freebitcoin.win##.wrapper > .section > .container > .row > div.d-md-block.d-none.col-md-3 +freebitcoin.win##.col-md-12 +||clprr.com^ +e-monsite.com##+js(set, CaptchmeState.adb, undefined) +coindice.win##+js(set, CaptchmeState.adb, undefined) +coindice.win##+js(aopr, adBlockDetected) +@@||coindice.win^$ghide +camvideos.tv##.thumbs-items +||bblivecams.com^$frame,3p +||gldrdr.com^$frame,3p +lanjutkeun.*##+js(aeld, load, 2000) +xrares.com##+js(acs, decodeURI, decodeURIComponent) +xrares.com###linkedblok +xrares.com##.absd-body:not(.row + .well) +xrares.com##[href^="/plugout.php"]:upward([class^="col-sm"]) +||xrares.com/sw.js$script,1p +||shidurlive.com/adz*.html$frame +adfloz.*##+js(nowoif) +adfloz.*##+js(set, blurred, false) +adfloz.*##.banner +aliancapes.*##+js(nostif, nextFunction, 2000) +radiotormentamx.com##+js(aeld, load, onload) +*/rellect/AdblockDetector/handler.min.js$script,important,redirect=noopjs +torrentz2eu.*##+js(aopr, glxopen) +torrentz2eu.*##+js(acs, decodeURI, decodeURIComponent) +torrentz2eu.*##+js(acs, $, open) +acienciasgalilei.com##+js(aeld, load, adverts-top-container) +smsget.net##+js(nostif, Adblock, 5000) +smsget.net##+js(nostif, disable, 200) +zigforums.com##+js(no-xhr-if, /googlesyndication|outbrain/) +zigforums.com##+js(aopw, adsBlocked) +@@||zigforums.com/js/*$xhr,1p +kjanime.net##+js(nostif, CekAab, 0) +soft112.com##+js(nano-sib) +goto.com.np##+js(aopr, open) +goto.com.np##+js(nano-sib, timeLeft) +link.goto.com.np##.wpsafe-top > div > center:has-text(Advertisements) +*$frame,3p,domain=goto.com.np +undeniable.info##+js(acs, document.getElementById, testadblock) +transparentcalifornia.com##+js(set, $.magnificPopup.open, noopFunc) +klartext-ne.de##+js(acs, document.addEventListener, google_ad_client) +spycock.com##+js(aopr, document.dispatchEvent) +spycock.com##+js(aopw, Fingerprint2) +spycock.com##+js(nowoif) +||spycock.com/coco/$script +spycock.com##.footer-banner-wrapper +spycock.com###advertising +jizz.us,spycock.com###alfa_promo_parent +jizz.us,spycock.com##.aside-itempage-col +||jizz.us/loco/$script +sandrives.*##+js(nostif, nextFunction, 250) +movies123.*##+js(nowoif) +0123movie.*,movies123.*##+js(aopr, AaDetector) +movies123.*##[href^="//himekingrow.com/"] +movies123.*###list-eps:style(display:block!important) +movies123.*##.les-title:has-text(HD) +movies123.*##.vip.server-item.le-server:first-child +freiepresse.de##+js(set, UhasAB, false) +icy-veins.com##+js(aopr, adbackDebug) +hiddenobjectgames.com##.banner +@@||v.fwmrm.net/ad/$script,domain=fxnetworks.com +@@||media.truex.com/release/*TrueXRenderer.js$script,domain=fxnetworks.com +@@||fordclub.eu^$ghide +girlsgogames.co.uk##+js(aopr, googletag) +||cdn.witchhut.com^$script,domain=ejocuri.ro|gamesheep.com|girlg.com|girlsplay.com|jocurifete.ro|playpod.com +! added sites using the same ad-reinsertion script +anallievent.com,au-di-tions.com,badgehungry.com,beingmelody.com,bloggingawaydebt.com,casutalaurei.ro,cornerstoneconfessions.com,culture-informatique.net,dearcreatives.com,disneyfashionista.com,divinelifestyle.com,dna.fr,eslauthority.com,estrepublicain.fr,fitting-it-all-in.com,heresyoursavings.com,irresistiblepets.net,julieseatsandtreats.com,justjared.com,lecturisiarome.ro,lemonsqueezyhome.com,libramemoria.com,lovegrowswild.com,magicseaweed.com,measuringflower.com,mjsbigblog.com,mommybunch.com,mustardseedmoney.com,myfunkytravel.com,onetimethrough.com,panlasangpinoymeatrecipes.com,silverpetticoatreview.com,the-military-guide.com,therelaxedhomeschool.com,the2seasons.com,zeroto60times.com##+js(aopr, __eiPb) +adivineencounter.com,alcasthq.com,au-di-tions.com,badgehungry.com,bloggingawaydebt.com,chipandco.com,cornerstoneconfessions.com,dearcreatives.com,divinelifestyle.com,eslauthority.com,heresyoursavings.com,investingchannel.com,irresistiblepets.net,justjared.com,kompas.com,lovegrowswild.com,mjsbigblog.com,mommybunch.com,mustardseedmoney.com,myfunkytravel.com,mywomenstuff.com,onetimethrough.com,panlasangpinoymeatrecipes.com,peru21.pe,savespendsplurge.com,savvyhoney.com,silverpetticoatreview.com,tamaratattles.com,the-military-guide.com,the2seasons.com,therelaxedhomeschool.com,thetechieguy.com,waterheaterleakinginfo.com,zeroto60times.com##^script:has-text(axtd) +alcasthq.com##+js(aopr, performance) +cut-fly.com##+js(nowoif) +cut-fly.com##+js(set, blurred, false) +cut-fly.com##.banner-inner +cut-fly.com##form#go-popup:remove() +gioialive.it##+js(nostif, rbm_block_active, 1000) +investing.com##+js(no-fetch-if, ads) +investing.com##[class^="outbrain_outbrain-wrapper"] +investing.com##[class*="adBlock"] +investing.com##[class*="overlay_overlay"] +investing.com##body:style(overflow: auto !important) +investing.com###__next > .fixed +||investing.com/*/ad-notification-popup +investing.com##[class^="ad-notification"] +investing.com##[id^="adNotification"] +investing.com##+js(set, adNotificationDetected, false) +investing.com##[class*="notification_notification"] +investing.com##div[class]:has(> :is(.ad-blockers-section, [class*="adNotification"])) +investing.com##.border-b:has(> .box-content[data-test="ad-slot-visible"]) +ausfile.com##+js(aopw, Fingerprint2) +ausfile.com##+js(aopw, SubmitDownload1) +ausfile.com##+js(nano-stb) +@@||ausfile.com^$ghide +ausfile.com##ins.adsbygoogle +femdomtb.com##+js(nostif, innerText, 2000) +femdomtb.com##+js(aopr, open) +femdomtb.com##.bannerImage +femdomtb.com##div.opt +femdomtb.com##.place +@@||voirfilms.*^$ghide +voirfilms.*##+js(aopw, smrtSB) +voirfilms.*##+js(nowoif) +voirfilms.*##.lefermeur +voirfilms.*##+js(acs, atob, decodeURIComponent) +||voirfilms.*/sw.js +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=coolgames.com +@@||g.doubleclick.net/pagead/managed/js/gpt/*/pubads_impl.js$domain=games.coolgames.com +classicreload.com##.ad-wrapper:upward(div.region-sidebar-first-wrapper) +classicreload.com##+js(nostif, show()) +classicreload.com##.content-top-wrapper +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=stickgames.com +senmanga.com##+js(aopr, AaDetector) +senmanga.com##[class*="banner"] +*$script,3p,domain=senmanga.com +mimaletamusical.blogspot.com##+js(nowebrtc) +mimaletamusical.blogspot.com##+js(aeld, load, 2000) +||cdn.rawgit.com^*/arlinablock.js$script +||cdn.rawgit.com^*/AdblockRampok.js$script +@@||faucetcrypto.com^$ghide +||faucetcrypto.com/ads/$frame +faucetcrypto.com##+js(no-fetch-if, googlesyndication) +faucetcrypto.com##+js(nosiif, user=null, 1000) +faucetcrypto.com##.vs-dialog-danger.con-vs-dialog.vs-component +*$frame,redirect-rule=noopframe,domain=faucetcrypto.com +linkfinal.com##+js(set, blurred, false) +linkfinal.com##.banner +linkfinal.com##.blog-content +hotpornfile.org##+js(aopw, getIfc) +hotpornfile.org##+js(aeld, getexoloader) +*$popunder,domain=hotpornfile.org +hotpornfile.org##+js(nostif, _0x) +search.crowdsearch.net#@##adslot1 +hotpornfile.org##+js(set, adblockcheck, false) +hotpornfile.org##+js(nowoif, !bergblock, 10) +@@||searchwithme.net/redirect?tid=$frame,domain=hotpornfile.org +||hotpornfile.org/wp-content/themes/hpf-theme/assets/img/search-ash.gif$image +moviejones.de##+js(acs, document.getElementById, overlayBtn) +hackyouriphone.org##.labeladv +donnaglamour.it##+js(aopw, adBlockRunning) +donnaglamour.it##.banner_contest +@@||globaltv.com^$ghide +globaltv.com##.adChoices_overlayContainer +globaltv.com##.adTile +globaltv.com##.dynamic-ad-wrapper +globaltv.com##.footerAd-wrapper +globaltv.com###_evidon_banner +repelisgoo.*,repelisgooo.*,repelisgt.*,repelisxd.*,pelisplusgo.*,pelisplusxd.*###ads +repelisgoo.*,repelisgooo.*,repelisgt.*,repelisxd.*,pelisplusgo.*,pelisplusxd.*##div[class]:has(> div[class] > iframe[src*="/srv-pv/tag-"]) +tornadomovies.*##+js(set, atob, noopFunc) +||tornadomovies.*/sw.js$script +tornadomovies.*##[href="/user/premiumregistration"] +javher.com###popunderLink +javher.com##.affiliate-card-container +novelasesp.*##+js(aeld, load, 2000) +playrust.io##+js(aeld, , Date) +supforums.com##+js(set, adsBlocked, false) +supforums.com##+js(aopr, htaUrl) +||booking.com^$popunder,domain=viamichelin.* +mp3fiber.com##+js(aeld, /^(?:click|mousedown)$/, _0x) +mp3fiber.com##+js(aeld, load, nextFunction) +mp3fiber.com##+js(set, _pop, noopFunc) +chicoer.com##+js(nostif, n.trigger, 1) +chicoer.com##+js(set, CnnXt.Event.fire, noopFunc) +visionias.net##+js(aeld, load, 2000) +*.gif$domain=visionias.net,image +tennisactu.net##+js(acs, document.getElementById, ads) +xrivonet.info##+js(aopw, Fingerprint2) +xrivonet.info##+js(aeld, /^(?:click|mousedown)$/, _0x) +xrivonet.info##+js(nowebrtc) +xrivonet.info##+js(nowoif) +suedkurier.de##+js(set, _ti_update_user, noopFunc) +animeheaven.*##+js(no-xhr-if, method:HEAD) +||animeheaven.*/api/pop.php$xhr,1p +payskip.org##+js(aeld, DOMContentLoaded,  ) +payskip.org##+js(aopw, atOptions) +payskip.org##+js(set, blurred, false) +payskip.org##+js(ra, onclick) +||payskip.org/sw.js$script,1p +||payskip.org/VLC.php$frame,1p +payskip.org##.box-main center > a[href][target="_blank"] > img +payskip.org##center > center +payskip.org###link-view > p +payskip.org###link-view a[href] > img +*$script,3p,denyallow=cloudflare.com|cloudflare.net|google.com|gstatic.com|jsdelivr.net|recaptcha.net|tawk.to,domain=payskip.org +pirateproxy.*##+js(nowebrtc) +pirateproxy.*,thehiddenbay.com##+js(acs, String.fromCharCode, decodeURIComponent) +pirate.*,piratebay.*,pirateproxy.*,proxytpb.*,thepiratebay.*##+js(aeld, /^(?:click|mousedown)$/, _0x) +piratebay.*##+js(aopr, AaDetector) +pirateproxy.*##+js(acs, Object.defineProperty, document.body.appendChild) +piratebay.*,pirateproxy.*##[href]:has-text(PLAY) +pirateproxy.*,thehiddenbay.com###content > div > iframe +vidcloud.*##+js(nowoif) +vidcloud.*##+js(aopr, BetterJsPop) +vidcloud.*##+js(aopr, decodeURI) +vidcloud.*##+js(aopw, adBlockDetected) +vidcloud.*##+js(aopr, __Y) +vidcloud.*###overlay-center +@@||adinplay.com/libs/aiptag/assets/adsbygoogle.js^$xhr,domain=devast.io +devast.io###advert +imgrock.*##+js(aopr, CustomEvent) +imgrock.*##+js(aopr, popjs.init) +imgrock.*##+js(aopw, Fingerprint2) +imgrock.*##+js(nano-stb, /.?/, 4000) +imgrock.*##+js(popads-dummy) +imgrock.*##+js(popads.net) +@@||imgrock.*^$ghide +imgtorrnt.in##+js(aopr, ExoLoader.serve) +imgtorrnt.in##+js(aopr, document.dispatchEvent) +imgtorrnt.in##+js(aeld, , _0x) +imgtorrnt.in##[id*="Banner"] +*$frame,3p,domain=imgtorrnt.in +*$popunder,3p,domain=imgtorrnt.in +imgtorrnt.in##.bannerImage +*.gif$domain=imgtorrnt.in,image +webbro.*##+js(aopr, AaDetector) +@@||webbro.*^$ghide +javhay.net##.title-most-views:first-child +javhay.net###logoplayer +iframejav.*##+js(nowoif) +iframejav.*##+js(aopr, __Y) +!anysex.com##+js(set, vastAds, []) +anysex.com##+js(aopr, ExoLoader) +anysex.com##+js(aopr, document.dispatchEvent) +anysex.com##+js(aopr, console.clear) +anysex.com##+js(aopr, decodeURI) +anysex.com##[class^="content"] > .no_pop +anysex.com###content > .naf_dd +anysex.com##+js(aopr, setExoCookie) +gocurrycracker.com##+js(aopr, encodeURIComponent) +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=gentside.*|maxisciences.com|ohmymag.* +!*$script,redirect-rule=noopjs,domain=gentside.*|gentside.com|gentside.de|gentside.co.uk|maxisciences.com|ohmymag.com|ohmymag.de|ohmymag.co.uk,3p +@@||maxisciences.com/js/amazon/$script,domain=maxisciences.com +@@||googletagservices.com/tag/js/gpt.js$script,domain=gentside.*|maxisciences.com|ohmymag.* +@@*/assets/prebid/$script,xhr,1p,domain=gentside.*|maxisciences.com|ohmymag.* +@@||securepubads.g.doubleclick.net/tag/js/gpt.js$script,domain=gentside.*|ohmymag.* +@@||securepubads.g.doubleclick.net/*/pubads_impl.js$script,domain=gentside.*|ohmymag.* +@@||cdn.adsafeprotected.com^$script,domain=gentside.*|ohmymag.*|maxisciences.com +@@||pixel.adsafeprotected.com/services/pub$xhr,domain=gentside.*|ohmymag.*|maxisciences.com +@@||btloader.com/tag?h=prismamedia-com&upapi=true$script,domain=maxisciences.com|gentside.*|ohmymag.* +@@||js-sec.indexww.com/$script,domain=maxisciences.com|gentside.*|ohmymag.* +@@||prismamedia-com.videoplayerhub.com/galleryplayer.js$script,domain=maxisciences.com|gentside.*|ohmymag.* +@@||tra.scds.pmdstatic.net/advertising-core/$script,domain=gentside.*|gentside.com|gentside.de|gentside.co.uk|maxisciences.com|ohmymag.com|ohmymag.de|ohmymag.co.uk +thurrott.com##+js(acs, $, adblockDetected) +icdrama.*##+js(set, adblock, 1) +icdrama.*###closeADV +wowescape.com,games2rule.com,bigescapegames.com##.col-12:has(> .adsbyvli) +wowescape.com,games2rule.com,bigescapegames.com##.col-12:has(> .adsbygoogle) +wowescape.com,games2rule.com,bigescapegames.com##div.border_radius:has-text(Advertisement) +wowescape.com##+js(no-fetch-if, adsbygoogle) +wowescape.com###gameplay > iframe:style(display: block !important;) +wowescape.com###preroll +duellinksmeta.com##+js(noeval) +*$script,redirect-rule=noopjs,domain=duellinksmeta.com +@@||cdn.intergi.com/hera/*$xhr,domain=duellinksmeta.com +@@||cdn.intergient.com^$script,xhr,domain=duellinksmeta.com +@@||duellinksmeta.com^$1p +@@||duellinksmeta.com^$ghide +duellinksmeta.com##.advertisement-box +duellinksmeta.com##div.ad-slot +pornve.com##+js(set, frg, 1) +pornve.com##+js(nowoif) +pornve.com###blockblockB:style(display: block!important;) +pornve.com###blockblockA +seselah.com##+js(aopw, adBlockDetected) +@@||programasve.blogspot.com^$ghide +maxcheaters.com##.esPopupWrapper +maxcheaters.com##.b-modal +@@||maxcheaters.com/uploads2/country/*.gif$image +maxcheaters.com##.ipsContained.ipsImage +maxcheaters.com##+js(nostif, adblock) +sportsplays.com##+js(nostif, abDetected) +rmdown.com##+js(aopw, open) +rmdown.com##.container td[bgcolor="white"] > a[target="_blank"] +*$image,3p,redirect=1x1.gif,domain=rmdown.com +dailybreeze.com,dailybulletin.com,dailynews.com,delcotimes.com,eastbaytimes.com,macombdaily.com,ocregister.com,pasadenastarnews.com,pe.com,presstelegram.com,redlandsdailyfacts.com,reviewjournal.com,santacruzsentinel.com,saratogian.com,sentinelandenterprise.com,sgvtribune.com,tampabay.com,times-standard.com,theoaklandpress.com,trentonian.com,twincities.com,whittierdailynews.com##+js(set, CnnXt.Event.fire, noopFunc) +*$script,domain=delcotimes.com|macombdaily.com|santacruzsentinel.com|saratogian.com|theoaklandpress.com|trentonian.com,redirect-rule=noopjs +*$image,domain=delcotimes.com|macombdaily.com|santacruzsentinel.com|saratogian.com|theoaklandpress.com|trentonian.com,redirect-rule=2x2.png +ocregister.com##a[href^="http://www.webpublished.com"] +@@||mobinozer.com^$ghide +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=mobinozer.com +pixlr.com###workspace:style(right: 0px !important;) +pixlr.com###right-space +schoener-wohnen.de##+js(aopr, _sp_._networkListenerData) +! http://www.gamesgames.com/game/mahjong-quest anti adb +@@||gamesgames.com^$ghide +savemedia.*##+js(nowoif) +watchhouseonline.net##+js(aopr, decodeURI) +watchhouseonline.net###custom_html-2 +linkedin.com##.ad-banner-container +||2mdn.net^$media,redirect=noopmp4-1s,domain=games2rule.com +||youtube.com/get_video$media,redirect=noopmp4-1s,domain=games2rule.com +@@||googleads.g.doubleclick.net/pagead/*games2rule$xhr,domain=imasdk.googleapis.com +games2rule.com##embed:style(display:inherit!important) +games2rule.com##[id^="gdsdk_"] +games2rule.com##div:has(> div:has(> .adsbygoogle)) +games2rule.com##div.border_radius:has-text(Advertisement) +games2rule.com##.col-sm-4:has-text(Advertisement) +games2rule.com##+js(ra, target) +elixx.*##+js(aopr, AdservingModule) +elixx.*##+js(aopr, LieDetector) +elixx.*##+js(aopw, I833) +elixx.*##+js(json-prune, urls, urls.0) +elixx.*##^script:has-text(0x3) +||elixx.*/popcash.js^ +! ads, popups https://www.limetorrents .info/search/all/duck/ +! => limetorrents. lol +limetorrents.*##+js(aeld, , _0x) +limetorrents.*##+js(aeld, load, onload) +limetorrents.*##+js(acs, Object.assign, popunder) +limetorrents.*##+js(acs, Math, XMLHttpRequest) +limetorrents.*##+js(nowoif) +limetorrents.*##[href^="/fast.php"] +limetorrents.*##div:has(> div > a[href^="/leet/?"]) +limetorrents.*##tr:has-text(VPN) +||limetorrents.*/sw.js +@@||limetorrents.*^$ghide +limetorrents.*##[href^="https://affiliate.rusvpn.com/"] +limetorrents.*##.head:has-text(Adv) +ebookdz.com##+js(nostif, $) +@@||ebookdz.com^$ghide +*$script,domain=ebookdz.com,redirect-rule=noopjs +telerium.*##+js(nostif, KeepOpeningPops, 1000) +telerium.*##+js(nowoif) +telerium.*##+js(aopr, LieDetector) +telerium.*##+js(rmnt, script, delete window) +@@||telerium.*^$ghide +telerium.*###overlay +onhockey.tv,web.livecricket.is##+js(nowebrtc) +||onhockey.tv/stopadblock*.jpg$image +@@||amc.com^$ghide +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=amc.com +||ssaimanifest.prod.boltdns.net^$xhr,removeparam=prof,domain=amc.com +pornvideospass.com##+js(aopw, Aloader) +pornvideospass.com##+js(aopw, bindall) +barfuck.com##+js(aopr, document.dispatchEvent) +barfuck.com###im-layer +||curvyfemales.com/*.php$script,1p +curvyfemales.com##.im-show +pornvideotop.com##+js(aopr, open) +pornvideotop.com##+js(nostif, location.href) +pornvideotop.com###user18div +||aa.pornvideotop.com^ +||pornvideotop.com/ads300x250.php +||pornvideotop.com/e/fp.js +||pornvideotop.com/js/popec.js +||spermyporn.com/js/my.js +||young-porn-movie.com/adv.js +file4go.*##+js(acs, document.getElementById, ad_block) +file4go.*##+js(set, time, 0) +@@||file4go.*/ads.js$script,1p +file4go.*##div.banner300b, .lateral +! jav688.com popups +javwide.*##+js(aopr, AaDetector) +##a[href^="http://www.poweredbyliquidfire.mobi/"] +holavid.com##+js(aopw, decodeURIComponent) +||hawaktv.com/sw.js$script +marie-claire.es##+js(set, ads, true) +*$xhr,redirect-rule=nooptext,domain=marie-claire.es +||starbits.io/libs/check.js$script,1p +converto.io##+js(acs, atob, decodeURIComponent) +player.xxxbestsites.com##+js(aopr, BetterJsPop) +svipvids.com##+js(aopw, KillAdBlock) +gaypornmasters.com##+js(aost, String.prototype.charCodeAt, ai_) +||hexupload.net/images/Premium_Banners/$3p +short-url.link##+js(aeld, click, read_cookie) +short-url.link##+js(nano-sib) +short-url.link##center > [src$=".html"] +salamanca24horas.com##+js(aopr, ReviveBannerInterstitial) +scrapywar.com##+js(acs, eval, replace) +scrapywar.com##.stream-item-widget +! Videos disabled by anti-blocker: +globalnews.ca##+js(set, GNCA_Ad_Support, true) +globalnews.ca##.c-ad__unit +globalnews.ca##.c-ad__label +king-pes.*##+js(aeld, load, onload) +@@||rp-online.de^$ghide +@@||saarbruecker-zeitung.de^$ghide +@@||volksfreund.de^$ghide +@@||rp-online.de/assets/adsbygoogle.js$script,1p +@@||saarbruecker-zeitung.de/assets/adsbygoogle.js$script,1p +@@||volksfreund.de/assets/adsbygoogle.js$script,1p +rp-online.de,saarbruecker-zeitung.de,volksfreund.de##.park-portal +@@||mylivesignature.com^$ghide +@@||mylivesignature.com/$script,1p +mylivesignature.com##.topadscontainer +hungama.com##+js(set, showAds, true) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=hungama.com +@@||crazyhd.com^$ghide +@@||chd4.com^$ghide +chd4.com##+js(aopw, checkAdBlocker) +||adblockanalytics.com^$xhr,redirect=noop.txt +@@||goalad.com^$ghide +canberratimes.com.au##+js(set, cxStartDetectionProcess, noopFunc) +letribunaldunet.fr##+js(nostif, adb, 0) +tryboobs.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +tryboobs.com##+js(aopr, open) +tryboobs.com##.bottomspots +tryboobs.com##.flirt.spot +tryboobs.com###sr +tubedupe.com##+js(aopr, ExoLoader) +tubedupe.com##+js(aeld, , midRoll) +||tubedupe.com/player/html.php$frame,1p +veekyforums.com##+js(nowoif) +@@||veekyforums.com/js/adcash.js$xhr,1p +||yespornclips.com/sw.js$script,1p +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=ipla.tv +cutpaid.com##+js(aeld, , _blank) +cutpaid.com##+js(aopr, app_vars.force_disable_adblock) +cutpaid.com##+js(nowoif) +cutpaid.com##+js(set, blurred, false) +cutpaid.com##center +*$frame,denyallow=google.com,domain=cutpaid.com +*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=cutpaid.com +germancarforum.com##+js(rmnt, script, adsbygoogle) +findwords.info##div[itemtype="http://schema.org/WPAdBlock"] +findwords.info##.ads-block-horizontal +||forwardrb.bid^ +thewestmorlandgazette.co.uk##+js(aopr, _sp_._networkListenerData) +live-tv-channels.org##+js(aopr, adBlockDetected) +live-tv-channels.org##+js(nostif, adBlocked) +live-tv-channels.org##.adsense-player +live-tv-channels.org##.adsense-player-2 +live-tv-channels.org##[class^="_ads-"] +drinksmixer.com,leitesculinaria.com##+js(set, Date.now, noopFunc) +andiim3.com##+js(acs, jQuery, AdBlock) +twatis.com##+js(aopr, ExoLoader.addZone) +fupa.net##+js(set, jQuery.adblock, 1) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=fupa.net +@@||ad.71i.de/*/loader.js$script,domain=fupa.net +! sites with the same ad-reinsertion script +kompas.com##+js(acs, setTimeout, iframeTestTimeMS) +namemc.com##+js(acs, setTimeout, runInIframe) +namemc.com##+js(aopw, deployads) +namemc.com##.ad-container +pockettactics.com##+js(acs, Math.floor, iframeTestTimeMS) +tribunnews.com##+js(acs, Math, ='\x) +descarga-animex.*##+js(aopw, adBlockDetected) +bollywoodshaadis.com##+js(aopr, Debugger) +bollywoodshaadis.com##+js(aopw, adBlockDetected) +hdvid.*##+js(aopw, atOptions) +hdvid.*##+js(aost, String.fromCharCode, stackDepth:3) +hdvid.*,onvid.*,ovid.*,vidhd.*##+js(aopw, Fingerprint2) +hdvid.*,onvid.*,ovid.*,vidhd.*##+js(aopw, smrtSB) +hdvid.*,onvid.*,ovid.*,vidhd.*##+js(nowebrtc) +vidhd.*##+js(aopr, AaDetector) +hdvid.*,onvid.*,ovid.*,vidhd.*##.video_batman +||hdvid.tv/sw.js$script +||onvid.*/sw.js$script +||ovid.*/sw.js$script,1p +||vidhd.*/sw.js$script,1p +hardmob.com.br#?#.postcontainer:has(.usertitle:has-text(Publicidade)) +@@||ugdturner.com^$script,domain=live.bleacherreport.com +@@||v.fwmrm.net/crossdomain.xml$xhr,domain=live.bleacherreport.com +downloadming.*##+js(aopw, decodeURIComponent) +guidetnt.com##+js(set, isAdBlockActive, false) +eslfast.com##+js(nostif, warning, 100) +quelleestladifference.fr##+js(aeld, load, onload) +iwin.com##.modals +iwin.com#@##sponsorText +giveawayoftheday.com##+js(nosiif, _checkBait) +sexykittenporn.com##+js(aopr, loadTool) +sexykittenporn.com##+js(aopr, ExoLoader) +sexykittenporn.com##+js(ra, href, [href*="ccbill"]) +sexykittenporn.com##.hr.babes +@@||i8086.de^$ghide +i8086.de##ins.adsbygoogle +starmusiq.*##+js(nowebrtc) +starmusiq.*##+js(set, isAdBlockActive, false) +@@||gameguardian.net^$ghide +||googlesyndication.com/pagead/$script,redirect=noopjs,domain=gameguardian.net +gameguardian.net##.adsbygoogle:style(height: 1px !important;) +hawtcelebs.com##+js(aopw, close_screen) +camgirlfap.com##+js(acs, document.createElement, onerror) +##.happy-inside-player +cda-hd.cc##+js(aopr, AaDetector) +ge-map-overlays.appspot.com##+js(no-xhr-if, googlesyndication) +ge-map-overlays.appspot.com##+js(nostif, adsbygoogle) +vinylcollective.com##+js(acs, jQuery, dismissAdBlock) +sp-today.com##+js(set, isAdBlockActive, false) +mirrorace.*##+js(aopr, AaDetector) +mirrorace.*##+js(aeld, click, _0x) +mirrorace.*##+js(popads-dummy) +/invoke.js$script,domain=mirrorace.* +@@||mirrorace.*^$ghide +mirrorace.*##.uk-card-secondary:has-text(VPN) +mirrorace.*##[href*="search/"] +||mirrorace.org/*.gif$image +tamilmv.*##+js(nowebrtc) +tamilmv.*##+js(acs, atob, decodeURIComponent) +||tamilmv.*/sw.js$script,xhr,1p +||xxxwebdlxxx.org^$csp=script-src 'self' data: +browardpalmbeach.com,dallasobserver.com,houstonpress.com,miaminewtimes.com,phoenixnewtimes.com,westword.com##+js(set, VMG.Components.Adblock, false) +prostoporno.*##+js(aopr, ExoLoader.serve) +prostoporno.*##.spot +muyinteresante.es##+js(no-fetch-if, googlesyndication, method:HEAD) +*$xhr,redirect-rule=nooptext,domain=muyinteresante.es +9xbuddy.*##+js(nowoif) +@@||offmp3.*^$ghide +*$script,3p,denyallow=9xbud.com|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|fastly.net|fastlylb.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|x.com,domain=9xbuddy.* +durtypass.com##+js(nowoif) +durtypass.com##+js(aopr, _pop) +@@||durtypass.com^$ghide +||pornid.*$csp=frame-src +pornid.*##+js(aopr, decodeURI) +||pornid.*/azone/ +||pornid.*/pid/dev.js +!#if env_mobile +pornid.*##.cs +pornid.*##.spots-title +pornid.*###fltd +pornid.*###native_code +||pornid.*/xdman2/$frame,1p +!#endif +practicequiz.com,wapkiz.com##+js(aopw, adBlockDetected) +freegamescasual.com##+js(nostif, adblock_popup, 500) +opjav.com##+js(nowoif) +||clipbongda.info^ +schrauben-normen.de##+js(aeld, load, nextFunction) +ngelag.com##+js(aopr, FuckAdBlock) +@@||homegrownfreaks.net/player/player_ads.html$frame,1p +@@||homegrownfreaks.net^$ghide +homegrownfreaks.net##.fp-brand +depedlps.*##+js(aeld, load, onload) +depedlps.*##+js(aopr, encodeURIComponent) +pianokafe.com##+js(aopw, adBlockDetected) +huim.com##+js(aopr, isAdEnabled) +||zbporn.*/tri/zp.js +zbporn.*##+js(aopr, decodeURI) +zbporn.*##+js(aopr, promo) +zbporn.*##.desktop-nat-spot +*$popunder,domain=zbporn.com +||zbporn.*/ttt/ +zbporn.*##.view-right +fapality.com##+js(aopr, document.dispatchEvent) +fapality.com##+js(aopr, open) +||yourlustmedia.com^$3p +worldsex.com##+js(aopr, Notification) +worldsex.com##+js(aopr, document.dispatchEvent) +worldsex.com###video_banner +worldsex.com##div.da-by +worldsex.com##.overlay +babesxworld.com,cocogals.com##+js(aopr, loadTool) +babesxworld.com##+js(aopr, open) +babesxworld.com##+js(aopr, document.dispatchEvent) +babesxworld.com##.g-link +babesxworld.com##a[href^="http://refer.ccbill.com/"] +*$3p,popup,domain=babesxworld.com +*$script,3p,denyallow=cloudflare.com|bootstrapcdn.com|fastly.net|fluidplayer.com|hwcdn.net|twitter.com|x.com,domain=babesxworld.com +babesxworld.com##[onclick*="spons"] +masteranime.tv##+js(set, check_adblock, true) +||masteranime.tv/api/pop.php$xhr,1p +*$script,3p,denyallow=anmedm.com|cloudflare.net|cloudfront.net|disqus.com|disquscdn.com|facebook.net|fastlylb.net|fbcdn.net|google.com,domain=masteranime.tv +||ad.masteranime.tv^$script,1p +tcpvpn.com##+js(nostif, Adblock) +pornoman.pl##+js(aopr, decodeURI) +pornoman.pl##+js(aopr, _0x311a) +pornoman.pl##[src*="bannery"] +pornoman.pl###porno_accept +@@||pornoman.pl^$ghide +*.mp4$media,redirect=noopmp4-1s,domain=abc.go.com +canadianunderwriter.ca##+js(aopw, mockingbird) +linkjust.com##+js(set, blurred, false) +gold-24.net##+js(nano-sib, , , 0.001) +linkjust.com##.banner-inner +@@||linkjust.com^$ghide +nowtv.com.tr##+js(set, adblockDetector, trueFunc) +oemdtc.com##.easyazon-block +oemdtc.com##.blocker-notice, .blocker-overlay +oemdtc.com##[src^="https://cdn.flowdee.de/"], [href^="https://www.amazon.com/b"] +caminspector.net,camporn.tube,camwhorescloud.com,camwhorespy.com,camwhoria.com,camvideos.org##+js(acs, crakPopInParams) +caminspector.net,camporn.tube,camwhorescloud.com,camwhoreshd.com,camwhorespy.com,camvideos.org##+js(acs, onload, onclick) +caminspector.net,camwhorespy.com,camwhoria.com,camgoddess.tv##+js(aopr, console.log) +camwhoreshd.com,camwhorespy.com,cwtvembeds.com##+js(nowoif) +caminspector.net,camwhoreshd.com,camgoddess.tv##+js(set, hasPoped, true) +camwhorescloud.com##+js(aost, Math.round, inlineScript) +camwhoreshd.com,cwtvembeds.com##.hola_top_element +cwtvembeds.com##+js(set, flashvars.protect_block, '') +cwtvembeds.com##+js(set, flashvars.video_click_url, undefined) +camwhoreshd.com##+js(aopr, loadTool) +camporn.tube,camwhorescloud.com,camwhoreshd.com,camgoddess.tv##.table +caminspector.net,camvideos.org##.place +@@*$media,domain=camvideos.org +@@||video$xhr,media,domain=camvideos.org +camseek.tv##+js(aopr, decodeURI) +||camseek.tv/live/live.php$frame,1p +camseek.tv##div[style$="height: 240px; background: white"] +||cfgr3.com/popin/$script,3p +##[href^="https://go.smljmp.com/"] +caminspector.net##.top +@@||open.http.mp.streamamg.com/html5/$script,domain=mediapason.it +@@||pubads.g.doubleclick.net/gampad/live/*.mediapason.it$xhr,domain=imasdk.googleapis.com +mediapason.it##+js(set, jQuery.adblock, false) +leechpremium.link##+js(set, blurred, false) +*$image,1p,redirect-rule=1x1.gif,domain=leechpremium.link +leechpremium.link###myModal +leechpremium.link##ins.adsbygoogle +leechpremium.link##.fade.modal-backdrop +leechpremium.link##[id*="ScriptRoot"] +leechpremium.link##body:style(overflow: auto !important;) +leechpremium.link##.row > .col-md-2:first-child > .pricingTable +leechpremium.link##+js(no-fetch-if, adsbygoogle) +*$script,3p,denyallow=bootstrapcdn.com|cloudflare.net|google.com|googleapis.com|gstatic.com|recaptcha.net|tawk.to|jsdelivr.net,domain=leechpremium.link +@@||leechpremium.net^$ghide +leechpremium.net##.adsbygoogle +@@||tsubasa.im^$ghide +tsubasa.im##+js(nostif, location.href, 10000) +zemporn.com##+js(aopr, h1mm.w3) +zemporn.com##.player-aside-banners +guitarnick.com##+js(acs, document.getElementById, banner) +jeshoots.com##+js(set, google_jobrunner, true) +apritos.com,bsierad.com,diminimalis.com,eksporimpor.com,jadijuara.com,kicaunews.com,palapanews.com,ridvanmau.com##+js(aopw, adBlockDetected) +homebooster.de,newhome.de##+js(acs, document.getElementById, blocker_div) +ellibrepensador.com##+js(aopr, require) +porconocer.com##+js(acs, document.getElementById, onscroll) +0123movies.*##+js(set, check_adblock, true) +0123movies.*##+js(aopr, mm) +0123movies.*##.fake_player, #tab-ad +0123movies.*##[href="#tab-ad"] +0123movies.*##.les-title:has-text(HD) +0123movies.*##.mvic-btn +sholah.net,2rdroid.com##+js(nostif, keep-ads, 2000) +internetretailing.com.au##.textwidget:has(> div > div[id^="IRN_Homepage_300x250"]) +@@||mygoodstream.pw^$ghide +bisceglielive.it##+js(nostif, #rbm_block_active, 1000) +bisceglielive.it##.mkt-300x250 +bisceglielive.it##.mkt-728x90 +worldaide.fr##+js(aopr, adblock) +@@||worldaide.fr^$ghide +worldaide.fr##ins.adsbygoogle +wpgdadatong.com##+js(aopr, checkAdblock) +creativebusybee.com##+js(aopw, checkAds) +scamalot.com##+js(acs, $, #DontBloxMyAdZ) +beautypackaging.com,coatingsworld.com,contractpharma.com,happi.com,inkworldmagazine.com,labelandnarrowweb.com,mpo-mag.com,nutraceuticalsworld.com,odtmag.com,printedelectronicsnow.com##+js(acs, $, #pageWrapper) +beautypackaging.com,coatingsworld.com,contractpharma.com,happi.com,inkworldmagazine.com,labelandnarrowweb.com,mpo-mag.com,nutraceuticalsworld.com,odtmag.com,printedelectronicsnow.com##.modal-backdrop +beautypackaging.com,coatingsworld.com,contractpharma.com,happi.com,inkworldmagazine.com,labelandnarrowweb.com,mpo-mag.com,nutraceuticalsworld.com,odtmag.com,printedelectronicsnow.com##body:style(overflow: auto !important;) +savevideo.me##+js(acs, $, banner) +yeutienganh.com##+js(aopw, adBlockDetected) +openspeedtest.com##+js(nostif, google_jobrunner) +situsberita2terbaru.blogspot.com##+js(acs, document.getElementById, adpbtest) +telecharger-igli4.*##+js(aopw, adBlockDetected) +addtobucketlist.com##+js(nostif, google_jobrunner) +syracusefan.com##+js(acs, $, initDetection) +@@||promods.net^$ghide +@@||promods.net/kampyle.js$script,1p +argio-logic.net##+js(acs, document.getElementById, alert) +appstore-discounts.com##+js(acs, document.getElementById, undefined) +ohorse.com##+js(aopw, check) +photos-public-domain.com##+js(aopr, blockAdBlock) +@@/wp-content/themes/mts_ad_sense/*$1p +##.blocker-notice +##.blocker-overlay +popcorntv.it##.box-adv +! Generic BlockAdBlock and other sites +heidibemvindaacasabrasil.blogspot.com###popup +l2network.eu##.ubm_banner +mylivewallpapers.com,softfully.com##+js(no-fetch-if, ads) +mylivewallpapers.com##.group.posts > div.post +aalah.me,academiadelmotor.es,aiailah.com,almursi.com,altebwsneno.blogspot.com,ambonkita.com,androidspill.com,aplus.my.id,arrisalah-jakarta.com,babyjimaditya.com,bbyhaber.com,beritabangka.com,beritasulteng.com,bestsellerforaday.com,bintangplus.com,bitco.world,br.nacaodamusica.com,bracontece.com.br,dicariguru.com,fairforexbrokers.com,foguinhogames.net,formasyonhaber.net,fullvoyeur.com,healbot.dpm15.net,indofirmware.site,hagalil.com,latribunadelpaisvasco.com,line-stickers.com,luxurydreamhomes.net,m5g.it,miltonfriedmancores.org,minutolivre.com,oportaln10.com.br,pedroinnecco.com,philippinenmagazin.de,piazzagallura.org,pornflixhd.com,safehomefarm.com,synoniemboek.com,techacrobat.com##+js(aopw, adBlockDetected) +elizabeth-mitchell.org##+js(aopw, adBlockDetected) +elizabeth-mitchell.org##.widget-title:has-text(AD) +ad-itech.blogspot.com##+js(aeld, load, onload) +avengerinator.blogspot.com##+js(aeld, load, nextFunction) +||myfreecopyright.com^$3p +3dzip.org##+js(no-fetch-if, doubleclick, length:10, {"type":"cors"}) +3dzip.org##+js(no-xhr-if, doubleclick) +3dzip.org##+js(nostif, google_jobrunner) +3dzip.org##+js(nostif, null, 4000) +||googlesyndication.com^$script,redirect=googlesyndication_adsbygoogle.js,domain=3dzip.org +3dzip.org##.adcontainer +3dzip.org##div.better-ads-listitemad +3dzip.org##div[id][itemtype="https://schema.org/WPAdBlock"] +technisches-zeichnen.net##[id^="banner-"] +technisches-zeichnen.net###ad-unten-01 +technisches-zeichnen.net##.bild-rechts-01 +mi-globe.com##.td-is-sticky +||googlesyndication.com^$script,redirect=googlesyndication_adsbygoogle.js,domain=fatgirlskinny.net +fatgirlskinny.net##+js(aeld, load, isBlanketFound) +fatgirlskinny.net##[href^="https://www.topcashback.co.uk/"] +canaltdt.es##+js(aeld, load, showModal) +*$script,redirect-rule=noopjs,domain=canaltdt.es +4download.net##+js(acs, addEventListener, nextFunction) +4download.net##+js(nano-sib) +scat.gold##+js(nostif, show) +scat.gold##+js(acs, document.createElement, onerror) +globalssh.net##+js(acs, addEventListener, nextFunction) +sysnettechsolutions.com##a[href^="https://bit.ly/"] +pandajogosgratis.com.br##+js(nostif, (), 2500) +5278.cc##+js(nostif, myaabpfun, 3000) +icutlink.com##+js(aopr, open) +icutlink.com##+js(set, blurred, false) +icutlink.com##+js(nano-sib, time) +icutlink.com##+js(set, sec, 0) +icutlink.com##.banner-inner +hotbabes.tv##+js(aopr, loadTool) +filesamba.*,hotbabes.tv,purelyceleb.com##+js(aopr, _wm) +cambabe.*,camgirlbay.net##+js(acs, onload) +cambabe.*##+js(acs, crakPopInParams) +cambabe.*##.topad +cambabe.*##.place +purelyceleb.com##.embed-container +##.exo-horizontal +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,3p,domain=cookinggames.com +cookinggames.com##.banner +cookinggames.com###skyscrapper-container +cookinggames.com###addCentered > p +@@||witchhut.com^$script,1p +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=girlgames.com +@@||audiotools.*^$ghide +audiotools.*##ins.adsbygoogle +*$image,redirect-rule=1x1.gif,domain=audiotools.blog +pandafreegames.*##+js(nostif, adFilled, 2500) +multporn.net##+js(aopr, document.dispatchEvent) +tonspion.de##+js(nostif, (), 15000) +oncehelp.com##+js(aeld, click, trigger) +oncehelp.com##+js(aopr, open) +oncehelp.com##+js(set, blurred, false) +oncehelp.com##.banner-inner +oncehelp.com##[href*="?token"] +@@||consensu.org/*/cmp2.js$script,domain=novagente.pt +viprow.*##+js(acs, setTimeout, admc) +viprow.*##+js(nowoif, //) +viprow.*##+js(rmnt, script, FingerprintJS) +viprow.*##+js(json-prune, *, *.adserverDomain) +viprow.*##.position-absolute +myegy.*##+js(aopw, decodeURI) +gamezhero.com##+js(set, ads, true) +||gamezhero.com/promo$frame,1p +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=gamezhero.com +wikifeet.com##+js(aopr, NativeAd) +flashplayer.fullstacks.net##+js(set, gadb, false) +@@||encoretvb.com^$ghide +encoretvb.com###square-ad-1 +sms-receive.net##+js(acs, $, adblock) +@@||wordgames.com^$ghide +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=wordgames.com +wordgames.com###ad-gamepage-leaderboard +wordgames.com###skyscrapper-container +wordgames.com###skyscraper-container +ani-stream.com##+js(no-fetch-if, damoh.ani-stream.com) +!#if env_chromium +||amazonaws.com/homad-global-configs.schneevonmorgen.com/global_config.json$xhr,redirect=nooptext,domain=ani-stream.com +!#endif +||grammarly.com/*utm_source=$popup,domain=duplichecker.com|plagiarismchecker.co|plagiarismdetector.net|searchenginereports.net|smallseotools.com +duplichecker.com,plagiarismchecker.co,plagiarismdetector.net,searchenginereports.net,smallseotools.com##[href*="grammarly.com"] +duplichecker.com,plagiarismchecker.co,plagiarismdetector.net,searchenginereports.net##+js(nostif, showPopup) +plagiarismdetector.net##a[rel*="nofollow"][rel*="noopener"]:has(> img.img-fluid[src^="https://plagiarismdetector.net/pd-imgs/"]) +plagiarismdetector.net##a[onclick*="PC_Home_gra"][rel="nofollow noopener"][target="_blank"] +searchenginereports.net##div[class^="theMSsy"], div[id^="theMSsy"], a[onclick*="PushClickTag"][rel], a[href^="https://searchenginereports.net/gmdasads"] +||searchenginereports.net/thAdoGMA/$image +smallseotools.com##+js(aeld, mouseout, clientWidth) +smallseotools.com##+js(nostif, adrecover) +smallseotools.com##span[onclick*="https://smallseotools.com/deep_grammar.html"] +smallseotools.com##span[onclick*="https://smallseotools.com/deep_pcgrammar.html"] +smallseotools.com##.mx-auto[style="display:block"]:has(> [max-height] > ._ap_apex_ad) +smallseotools.com##.my-2[style*="height:"]:has(> ._ap_apex_ad) +plagiarismchecker.co##body *:matches-css(margin: /auto/):matches-css(width: /^[2-3]{1}[0-9]{2}(\.[0-9]+)?px$/):matches-css(height: /^[2-3]{1}[0-9]{2}(\.[0-9]+)?px$/):matches-css(display: /block|table/):remove() +duplichecker.com##ccc, spavn, spannndx, [class^="alkjhg"], a[href="https://www.duplichecker.com/cc"], .mt-3:has(> #img7), .mt-3:has(> #img7), div:has(> #img4) +||duplichecker.com/qari/$image,1p +||duplichecker.com/asets/img/logo.svg$image,1p +jagran.com##.ads +picbaron.com##+js(aeld, , _0x) +picbaron.com##+js(aopr, loadTool) +picbaron.com##+js(aopr, open) +picbaron.com##+js(noeval) +picbaron.com##.newsbar_blue +picbaron.com###fadeinbox +*$frame,domain=picbaron.com +||picbaron.com/*.gif$image +picbaron.com##[href*="/redirect?tid="] +temp-mail.org##+js(set, checkadBlock, noopFunc) +temp-mail.org#?#li:has(.viewLink:has-text(AD |)) +! http://forums.mozillazine.org/viewtopic.php?f=38&t=3043519 +3dprintersforum.co.uk##+js(acs, $, gandalfads) +linkspaid.com##+js(set, jQuery.adblock, false) +linkspaid.com##+js(nostif, (), 1000) +kurazone.net##+js(aopr, AaDetector) +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=kurazone.net +||popcent.org^$3p +gamecopyworld.*##+js(acs, document.createElement, Tool) +dl.gamecopyworld.*##.t2 > tbody > tr:nth-of-type(1) > td +dl.gamecopyworld.*##td:nth-of-type(2) +dl.gamecopyworld.*##tr:nth-of-type(6) > td +consoletarget.com##+js(aopr, loadTool) +||gamecopyworld.com/!_$frame +@@||asianclub.*^$ghide +asianclub.*##+js(set, clientSide.adbDetect, noopFunc) +asianclub.*##+js(aopr, AaDetector) +asianclub.*##+js(aopr, jwplayer.utils.Timer) +asianclub.*##+js(nowoif) +asianclub.*##+js(aopr, __Y) +javmost.*##center > div[style^="width:100%; height: 100px"] +! vidmoly . me | .to popups +vidmoly.*##+js(nowoif) +vidmoly.*##+js(set, HTMLAnchorElement.prototype.click, noopFunc) +vidmoly.*##+js(aeld, DOMContentLoaded, anchor.href) +||boyfriendmeaningless.com^ +||disproveknob.com^ +vidmoly.*###mg_vd +vidmoly.*###voc_block +vidmoly.*###dos_vlock +||cdn.staticmoly.me/*.php$domain=vidmoly.* +! nsfw xcums . com popups +xcums.com##+js(aopr, encodeURIComponent) +xpaja.net##+js(acs, String.fromCharCode, atob) +comnuan.com##+js(set, cmnnrunads, true) +mega-p2p.net##+js(aopr, open) +! uppit. com ads +||uppit.com^$document,csp=script-src 'self' 'unsafe-eval' 'unsafe-inline' data: *.cloudflare.com +@@||uppit.com^$ghide +xianzhenyuan.cn##+js(acs, document.getElementById, undefined) +novablogitalia.*##+js(aeld, load, nextFunction) +||shrinkearn.com/sw.js$script,1p +*$frame,domain=shrinkearn.com,3p,denyallow=cloudflare.com +shrinkearn.com##+js(aopr, open) +gsm1x.xyz##+js(aopw, downloadJSAtOnload) +gsm1x.xyz##+js(nano-stb, run) +||romgoc.net^$3p +a-o.ninja,anime-odcinki.pl##+js(set, showAds, true) +anime-odcinki.pl##+js(aopr, _pop) +anime-odcinki.pl##.size-full +singingdalong.*##+js(aeld, load, 2000) +mrdeepfakes.com##+js(aopw, ReactAds) +mrdeepfakes.com##+js(acs, document.getElementsByTagName, script) +mrdeepfakes.com##+js(aopw, phtData) +mrdeepfakes.com##[href*="offer"] +*&expires$media,redirect=noopmp3-0.1s,domain=prosieben.at|prosieben.de|prosiebenmaxx.de|ran.de +||zomap.de/*&expires=$script,domain=prosieben.at|prosieben.de|prosiebenmaxx.de|ran.de +! popunder / (nsfw) sites - phtData +donk69.com,hotdreamsxxx.com##+js(aopw, phtData) +veedi.com##+js(set, adBlocker, false) +4j.com##+js(nostif, (), 2000) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=4j.com|veedi.com,redirect=google-ima.js +4j.com###bio_ep, #bio_ep_bg +4j.com##body:style(overflow: auto !important;) +anitube.*##+js(aopr, exoJsPop101) +anitube.*##+js(set, adBlockDetected, noopFunc) +anitube.*###iframeCore____ +||anitube.*/sw.js$script,1p +anitube.*##div[style^="pointer-events: none; position: absolute; "] +goltelevision.com##+js(set, adblock, false) +@@||nqs.nice264.com/data?system=golt&plugin$xhr,domain=goltelevision.com +||code.jquery.com/jquery-$script,domain=mega-mkv.com +mega-mkv.com,mkv-pastes.com##+js(aeld, DOMContentLoaded, adlinkfly) +mega-mkv.com##+js(aeld, DOMContentLoaded, shortener) +mega-mkv.com##center > p:has(> a[href] > img.alignnone) +medievalists.net##.widget-title:has-text(Adv) +! celebritymovieblog . com popups / ads +celebritymovieblog.com##+js(acs, puShown, /doOpen|popundr/) +celebritymovieblog.com##.banner_top +stiletv.it##+js(set, StileApp.somecontrols.adBlockDetected, noopFunc) +beeimg.com##+js(nostif, document.cookie, 2500) +beeimg.com##+js(nostif, window.open) +beeimg.com##.offer +fileone.tv##+js(nowoif) +mywatchseries.*##+js(nowebrtc) +||d19f0dp1dh77jq.cloudfront.net^ +||mywatchseries.*/sw.js$script,1p +||d81idz8m5qll8.cloudfront.net/app.min.js$script +m.hellporno.com###fltd-inner +hellporno.*##.bnnrs-player +||share.notizie.it^ +||areyouabot.net^$3p +u.gg###af-header-link +u.gg###af-all:style(margin-top: 4em;) +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=actiongame.com|brain-games.co.uk|classicgame.com|games-site.co.uk|hiddenobjectgames.com|mahjong.co.uk|mahjong.com|match3.co.uk|match3games.com|mindgames.com|neongames.co.uk|solitaireonline.com|timemanagementgame.com +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=neongames.com +! anti adb puzzlefry . com +puzzlefry.com##+js(aopw, killAdBlock) +hentaisd.*##+js(aopr, LieDetector) +||n1g459ky7y.com^ +ftlauderdalebeachcam.com,ftlauderdalewebcam.com,juneauharborwebcam.com,keywestharborwebcam.com,kittycatcam.com,mahobeachcam.com,miamiairportcam.com,morganhillwebcam.com,njwildlifecam.com,nyharborwebcam.com,paradiseislandcam.com,pompanobeachcam.com,portbermudawebcam.com,portcanaveralwebcam.com,portevergladeswebcam.com,portmiamiwebcam.com,portnywebcam.com,portnassauwebcam.com,portstmaartenwebcam.com,portstthomaswebcam.com,porttampawebcam.com,sxmislandcam.com##+js(nostif, innerHTML) +ftlauderdalebeachcam.com,ftlauderdalewebcam.com,juneauharborwebcam.com,keywestharborwebcam.com,kittycatcam.com,mahobeachcam.com,miamiairportcam.com,morganhillwebcam.com,njwildlifecam.com,nyharborwebcam.com,paradiseislandcam.com,pompanobeachcam.com,portbermudawebcam.com,portcanaveralwebcam.com,portevergladeswebcam.com,portmiamiwebcam.com,portnywebcam.com,portnassauwebcam.com,portstmaartenwebcam.com,portstthomaswebcam.com,porttampawebcam.com,sxmislandcam.com##.horiz-banner-box-1, .info-left, .info-right +||cdn.ptztv.live/*/ads/$image +portevergladeswebcam.com###partnerad1div +hqtv.biz##+js(set, google_tag_data, noopFunc) +thoptv.*##+js(aopr, AaDetector) +thoptv.*##+js(nostif, readyplayer, 2000) +liveuamap.com##+js(set, noAdBlock, true) +||smrmembers-smr.smartmediarep.com/*/video/*.mp4$media,domain=tv.naver.com,redirect=noopmp4-1s +||short.es/adv/*$frame,1p +@@||rte.ie^$ghide +@@||v.fwmrm.net/ad/g/*_HTML5_Live$script,domain=rte.ie +@@||src.litix.io/videojs/$script,domain=rte.ie +@@||rte.ie/player/$script,xhr,1p +@@||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=rte.ie +||rte.ie/ads/*$media,redirect=noopmp4-1s,domain=rte.ie +@@||doubleclick.net/gampad/live/ads*rte.ie$xhr,domain=imasdk.googleapis.com +@@||doubleclick.net/gampad/ads*rte.ie$xhr,domain=imasdk.googleapis.com +||securecdn.videologygroup.com/Prod/DSPMedia/$media,redirect=noopmp3-0.1s,domain=rte.ie +*/media/*.mp4|$media,domain=rte.ie,redirect=noopmp3-0.1s +*$1p,image,redirect-rule=1x1.gif,domain=rte.ie +rte.ie##.vjs-close-button +rte.ie##.adCue +! crohasit . com popups +crohasit.*##+js(aopw, Fingerprint2) +theglobeandmail.com##+js(aopw, adBlocker) +macwelt.de,pcwelt.de##+js(aeld, load, autoRecov) +||adslop.com^$3p +@@||genvideos.*/js/showads.js$xhr,1p +||googlesyndication.com/pagead/$script,redirect=noopjs,domain=uploadbox.io +uploadbox.io##+js(nosiif, (), 5000) +gaypornwave.com##+js(aost, String.prototype.charCodeAt, ai_) +gaypornwave.com##+js(aopr, ExoLoader) +gaypornwave.com##+js(aopr, _pop) +##[href^="https://popcash.net/"] +##[href^="https://adult.xyz/"] +onlineclassnotes.com###turnOffAdBlockerContainer +urbia.de##+js(aopr, _sp_.mms.startMsg) +freecoursesite.com##+js(acs, eval, replace) +freecoursesite.com##+js(nostif, show) +scubidu.eu##+js(aost, String.prototype.charCodeAt, ai_) +scubidu.eu###custom_html-15 +scubidu.eu###custom_html-16 +root-top.com##+js(aopr, adblockblock) +! popunder celebjihad . com nsfw +celebjihad.com##+js(aopr, dataPopUnder) +||celebjihad.live^$3p +celebjihad.com##.theme_article.sidebar_increase:style(height:0px !important) +allmomsex.com,allnewindianporn.com,analxxxvideo.com,animalextremesex.com,anime3d.xyz,animefuckmovies.com,animepornfilm.com,animesexbar.com,animesexclip.com,animexxxsex.com,animexxxfilms.com,anysex.club,apetube.asia,asianfuckmovies.com,asianfucktube.com,asianporn.sexy,asiansex.*,asiansexcilps.com,beeg.fund,beegvideoz.com,bestasiansex.pro,bravotube.asia,brutalanimalsfuck.com,candyteenporn.com,daddyfuckmovies.com,desifuckonline.com,exclusiveasianporn.com,exteenporn.com,fantasticporn.net,fantasticyoungporn.com,fineasiansex.com,firstasianpussy.com,freeindiansextube.com,freepornasians.com,freerealvideo.com,fuck-beeg.com,fuck-xnxx.com,fuckfuq.com,fuckundies.com,gojapaneseporn.com,golderotica.com,goodyoungsex.com,goyoungporn.com,hardxxxmoms.com,hdvintagetube.com,hentaiporn.me,hentaisexfilms.com,hentaisexuality.com,hot-teens-movies.mobi,hotanimepornvideos.com,hotanimevideos.com,hotasianpussysex.com,hotjapaneseshows.com,hotmaturetube.com,hotmilfs.pro,hotorientalporn.com,hotpornyoung.com,hotxxxjapanese.com,hotxxxpussy.com,indiafree.net,indianpornvideo.online,japanfuck.*,japanporn.*,japanpornclip.com,japanesetube.video,japansex.me,japanesexxxporn.com,japansporno.com,japanxxx.asia,japanxxxworld.com,keezmovies.surf,lingeriefuckvideo.com,liveanimalporn.zooo.club,madhentaitube.com,megahentaitube.com,megajapanesesex.com,megajapantube.com,milfxxxpussy.com,momsextube.pro,momxxxass.com,monkeyanimalporn.com,moviexxx.mobi,newanimeporn.com,newjapanesexxx.com,nicematureporn.com,nudeplayboygirls.com,originalindianporn.com,originalteentube.com,pig-fuck.com,plainasianporn.com,popularasianxxx.com,pornanimetube.com,pornasians.pro,pornhat.asia,pornjapanesesex.com,pornvintage.tv,primeanimesex.com,realjapansex.com,realmomsex.com,redsexhub.com,retroporn.world,retrosexfilms.com,sex-free-movies.com,sexanimesex.com,sexanimetube.com,sexjapantube.com,sexmomvideos.com,sexteenxxxtube.com,sexxxanimal.com,sexyoungtube.com,sexyvintageporn.com,spicyvintageporn.com,sunporno.club,tabooanime.club,teenextrem.com,teenfucksex.com,teenhost.net,teensex.*,teensexass.com,tnaflix.asia,totalfuckmovies.com,totalmaturefuck.com,txxx.asia,vintagetube.*,voyeurpornsex.com,warmteensex.com,wetasiancreampie.com,wildhentaitube.com,wowyoungsex.com,xhamster-art.com,xmovie.pro,xnudevideos.com,xnxxjapon.com,xvide.me,xxxanimefuck.com,xxxanimevideos.com,xxxanimemovies.com,xxxhentaimovies.com,xxxhothub.com,xxxjapaneseporntube.com,xxxlargeporn.com,xxxmomz.com,xxxmovies.*,xxxpornmilf.com,xxxpussyclips.com,xxxpussysextube.com,xxxretrofuck.com,xxxsex.pro,xxxsexyjapanese.com,xxxteenyporn.com,xxxvideo.asia,xxxyoungtv.com,youjizzz.club,youngpussyfuck.com##+js(aopr, popit) +allmomsex.com,allnewindianporn.com,analxxxvideo.com,animalextremesex.com,anime3d.xyz,animefuckmovies.com,animepornfilm.com,animesexbar.com,animesexclip.com,animexxxsex.com,animexxxfilms.com,anysex.club,apetube.asia,asianfuckmovies.com,asianfucktube.com,asianporn.sexy,asiansex.*,asiansexcilps.com,beeg.fund,beegvideoz.com,bestasiansex.pro,bravotube.asia,brutalanimalsfuck.com,candyteenporn.com,daddyfuckmovies.com,desifuckonline.com,exclusiveasianporn.com,exteenporn.com,fantasticporn.net,fantasticyoungporn.com,fineasiansex.com,firstasianpussy.com,freeindiansextube.com,freepornasians.com,freerealvideo.com,fuck-beeg.com,fuck-xnxx.com,fuckfuq.com,fuckundies.com,gojapaneseporn.com,golderotica.com,goodyoungsex.com,goyoungporn.com,hardxxxmoms.com,hdvintagetube.com,hentaiporn.me,hentaisexfilms.com,hentaisexuality.com,hot-teens-movies.mobi,hotanimepornvideos.com,hotanimevideos.com,hotasianpussysex.com,hotjapaneseshows.com,hotmaturetube.com,hotmilfs.pro,hotorientalporn.com,hotpornyoung.com,hotxxxjapanese.com,hotxxxpussy.com,indiafree.net,indianpornvideo.online,japanfuck.*,japanporn.*,japanpornclip.com,japanesetube.video,japansex.me,japanesexxxporn.com,japansporno.com,japanxxx.asia,japanxxxworld.com,keezmovies.surf,lingeriefuckvideo.com,liveanimalporn.zooo.club,madhentaitube.com,megahentaitube.com,megajapanesesex.com,megajapantube.com,milfxxxpussy.com,momsextube.pro,momxxxass.com,monkeyanimalporn.com,moviexxx.mobi,newanimeporn.com,newjapanesexxx.com,nicematureporn.com,nudeplayboygirls.com,originalindianporn.com,originalteentube.com,pig-fuck.com,plainasianporn.com,popularasianxxx.com,pornanimetube.com,pornasians.pro,pornhat.asia,pornjapanesesex.com,pornvintage.tv,primeanimesex.com,realjapansex.com,realmomsex.com,redsexhub.com,retroporn.world,retrosexfilms.com,sex-free-movies.com,sexanimesex.com,sexanimetube.com,sexjapantube.com,sexmomvideos.com,sexteenxxxtube.com,sexxxanimal.com,sexyoungtube.com,sexyvintageporn.com,spicyvintageporn.com,sunporno.club,tabooanime.club,teenextrem.com,teenfucksex.com,teenhost.net,teensex.*,teensexass.com,tnaflix.asia,totalfuckmovies.com,totalmaturefuck.com,txxx.asia,vintagetube.*,voyeurpornsex.com,warmteensex.com,wetasiancreampie.com,wildhentaitube.com,wowyoungsex.com,xhamster-art.com,xmovie.pro,xnudevideos.com,xnxxjapon.com,xvide.me,xxxanimefuck.com,xxxanimevideos.com,xxxanimemovies.com,xxxhentaimovies.com,xxxhothub.com,xxxjapaneseporntube.com,xxxlargeporn.com,xxxmomz.com,xxxmovies.*,xxxpornmilf.com,xxxpussyclips.com,xxxpussysextube.com,xxxretrofuck.com,xxxsex.pro,xxxsexyjapanese.com,xxxteenyporn.com,xxxvideo.asia,xxxyoungtv.com,youjizzz.club,youngpussyfuck.com##+js(aeld, popstate, noPop) +twister.porn##+js(aopr, open) +fuckundies.com##+js(acs, puShown, /doOpen|popundr/) +hotxxxpussy.com,xxxlargeporn.com,xxxpussyclips.com,xxxpussysextube.com##.imbar +##.ave-pl +##.bottom-hor-block +##.brs-block +finevids.xxx##.spot3-holder +hentaisexuality.com###popwindow +livejapaneseporn.com##body > div > div > aside[class] +pornjapanese.me##.bottom-spot-area +pornjapanese.me##[class$="spots-area"] +teencumpot.com###spot-holder +xnxxjapon.com###asg-inplayer-block:upward(4) +xxmovz.com##+js(aopr, decodeURI) +xxmovz.com##.ad +/quwet.js$script,1p +||all-usanomination.com^$3p +||willalland.info^ +##.advboxemb +freeporn.works##.show +freeporn.works##.past +||freeporn.works/seven.aspx? +||clivads.com^ +||sexxx.kim/literature.xhtml? +||granny.asia/partner.xhtml? +xvideo.party##.pride.dump +||xvideo.party/shop.aspx? +mtlblog.com,narcity.com##+js(aopw, Ha) +komikcast.*##+js(aeld, load, onload) +komikcast.*##+js(aopr, open) +@@||komikcast.*^$ghide +||blogspot.*/*.gif$image,domain=komikcast.* +vidcloud.*##+js(acs, atob, decodeURIComponent) +vidcloud.*##+js(acs, Math, XMLHttpRequest) +@@||vidcloud.*^$ghide +streamingworld.*##+js(acs, atob, decodeURIComponent) +streamingworld.*##+js(aopr, AaDetector) +streamingworld.*##+js(aopw, Fingerprint2) +*$script,3p,denyallow=googleapis.com,domain=streamingworld.club +l23movies.*,123moviess.*,123movieshub.*##+js(acs, JSON.parse, atob) +0l23movies.*##+js(aopr, rid) +123moviess.*##+js(aost, document.createElement, inlineScript) +||d1b0fk9ns6n0w9.cloudfront.net^ +123moviesfree.*##+js(nowoif) +123moviesd.com##+js(aopr, mm) +solarmovie.*##+js(aopr, AaDetector) +solarmovie.*##+js(nowoif) +solarmovie.*##.close +solarmovie.*##[href*="/4k"] +solarmovie.*##table.movie_version:has-text(Promo) +solarmovie.*##div.row:has-text(in HD) +solarmovie.*##.jw-reset.jw-logo-top-left.jw-logo +||solarmovie.vip/js/dab.min.js +mega4up.*,zeefiles.*##+js(ra, onclick, [onclick^="window.open"]) +zeefiles.*##+js(nano-stb, tick) +zeefiles.*##+js(nowoif) +mycoolmoviez.*##[href="javascript:void(0);"] +mycoolmoviez.*##+js(nowebrtc) +||mycoolmoviez.*/sw.js +mega4up.*##+js(nowoif) +putlocker9.*##+js(aopw, Fingerprint2) +putlocker9.*##.pframe:has([href^="javascript: void(0);"]) +k511.me##+js(acs, document.getElementById, undefined) +thepiratebay.*,thepiratebay10.org##+js(aopw, spot) +thepiratebay.*##+js(aopr, popjs.init) +audycje.tokfm.pl##+js(set, adsOk, true) +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=audycje.tokfm.pl +news-leader.com##+js(aopr, _sp_._networkListenerData) +ihub.live,naturalbd.com##+js(aopr, encodeURIComponent) +||ihub.live/sw.js$script,1p +||naturalbd.com/sw.js$script,1p +bdiptv.*##+js(aopr, AaDetector) +bdiptv.*##+js(nowoif) +@@||bdiptv.*^$ghide +bdlive.*###AdDiv +milfzr.com##+js(nowoif) +milfzr.com##+js(acs, String.prototype.charCodeAt, tabunder) +milfzr.com##.wpfp_custom_ad_content +milfzr.com###post-0 +||milfzr.com/*.gif$image +wemakesites.net##+js(acs, $, adBlockChecker) +myjest.com##+js(nosiif, _$, 12345) +*$frame,domain=9ig.de,3p +rgl.vn##+js(set, blurred, false) +s.sseluxx.com##+js(nano-sib) +unlockapk.com##+js(aeld, load, onload) +@@||unlockapk.com^$ghide +@@||unlockapk.com^$script,1p +||googlesyndication.com/simgad/*$image,domain=unlockapk.com,redirect=1x1.gif +@@||googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=unlockapk.com +unlockapk.com##ins.adsbygoogle +reqlinks.net##+js(set, blurred, false) +mangovideo.*,pandamovies.pw##+js(acs, document.createElement, 'script') +pandamovies.pw##+js(acs, puShown, /doOpen|popundr/) +pandamovies.pw##+js(aopr, ExoLoader.serve) +pandamovies.pw##+js(nowoif) +mangovideo.*##+js(set, flashvars.popunder_url, '') +mangovideo.*##.sponsor +mangovideo.*##.top +mangovideo.*##.table +mangovideo.*##[target="_blank"] +@@||pandamovies.pw^$ghide +pandamovies.pw##.btn-lg.btn-block.btn +||mangovideo.*/sw.js$script,1p +||mangovideo.*/player/html.php?aid +*$script,3p,domain=mangovideo.* +||freepopnews.skin/advert +||pradjadj.com^$csp=child-src *.google.com *.gstatic.com *.arc.io +pradjadj.com##[href="/advertise"] +pradjadj.com##.ABD_display +||pradjadj.com/*banner$image +siriusfiles.com##+js(nano-stb) +||siriusfiles.com/adframe.js$frame,redirect=noop.html +@@||dvdporngay.com^$ghide +||dvdporngay.com/wp-content/themes/*/images/loading.gif$image +dvdporngay.com##+js(aopr, decodeURIComponent) +alimaniacky.cz##+js(acs, $, urlForPopup) +dozarte.com##+js(acs, document.getElementById, undefined) +dozarte.com##+js(ra, onclick) +dozarte.com###banana +shush.se##+js(set, check, true) +||shush.se/loader/load.js$script +! cinemalibero .best popups/ ads +cinemalibero.*##+js(nowoif) +cinemalibero.*##+js(aopr, AaDetector) +allkpop.com##+js(set, isal, true) +gearingcommander.com##+js(nostif, /innerHTML|AdBlock/) +gearingcommander.com##+js(no-xhr-if, ads) +generate.plus##+js(nostif, checkStopBlock) +za.gl##+js(acs, document.addEventListener, click) +za.gl##+js(acs, document.getElementById, overlay) +za.gl##+js(acs, setInterval, location) +za.gl##+js(aopr, popad) +za.gl##+js(nowoif, !za.gl, 0) +za.gl##+js(set, document.hidden, true) +za.gl###ww +*$script,3p,denyallow=cloudflare.com|google.com|googleapis.com|gstatic.com,domain=za.gl +||earn-bitcoins.*/banner_ +||bmovies.*/bassets/js/jquery.watch.js$script,1p +bmovies.*###upgrade_pop +||bmovies.*/sw.js$script,1p +||doo6pwib3qngu.cloudfront.net^ +watchfree.*###vpnvpn +||filesenzu.com^$3p +rockit.it##.articolo-body-text-banner +@@||rockitecn.nohup.it/webnew/js/adv$script,domain=rockit.it +watchtvseries.*##+js(nowebrtc) +||watchtvseries.*/sw.js$script,1p +bitlk.com##+js(aopr, open) +bitlk.com##+js(set, blurred, false) +! anti-adb wakanim.tv +@@||wakanim.tv^$script,xhr,1p +pickcrackpasswords.blogspot.com##+js(set, awm, true) +||cdn.provesrc.com/provesrc.js +dramacool.*##h2.widget-title:has-text(Advertisement) +dramacool.*##[class$="_ads"] +*$script,3p,denyallow=cloudflare.com|facebook.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|recaptcha.net,domain=dramacool9.* +! http://fwd.ovh/J4NMS => http://qlinks.eu/J4NMS +qlinks.eu##+js(set, blurred, false) +||d.wedosas.net/i/$domain=qlinks.eu +simsdom.com##+js(nowoif) +simsdom.com##._ad +simsdom.com###ad860 +simsdom.com###adv840 +simsdom.com##._pubR +simsdom.com##._pubL +simsdom.com##div[id^="elm"][style="opacity: 1; display: block;"] +simsdom.com##+js(nano-sib, clearInterval, *) +@@||c.amazon-adsystem.com/aax2/apstag.js$script,domain=mylifetime.com +@@||mylifetime.com^$ghide +gomovies.*,gomoviesc.*##+js(nowoif) +gostream.*,gomovies.*##+js(set, check_adblock, true) +gomovies.*##+js(aopr, mm) +||gomovies.*/sw.js$script,1p +getfreesmsnumber.com##+js(acs, document.getElementById, undefined) +link.3dmili.com##+js(set, blurred, false) +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=zattoo.com +kfrfansub.com##+js(set, adblockEnabled, false) +movisubmalay.*##+js(aopr, glxopen) +movisubmalay.*##+js(aopr, exoJsPop101) +! bayimg.com popups +bayimg.com##+js(aeld, /^(?:click|mousedown)$/, ppu) +avcesar.com##+js(nostif, adspot_top, 1500) +proxydocker.com##+js(nostif, (), 1000) +illicoporno.com##+js(set, is_adblocked, false) +*$popunder,domain=illicoporno.com +mobdi3ips.com##+js(aeld, load, onload) +short-fly.com##+js(set, blurred, false) +||ecotrackings.com^$3p +@@||audiotag.info^$script,1p +*$image,domain=audiotag.info,redirect-rule=1x1.gif +audiotag.info##+js(nostif, /offsetHeight|google|Global/) +latribunadelpaisvasco.com##+js(noeval) +dokumen.tips##+js(nano-stb, , , 0.02) +tudigitale.it##+js(nostif, an_message, 500) +ibcomputing.com##+js(nostif, Adblocker, 10000) +footballstream.tv,mlbstream.tv,nbastream.tv,nflstream.tv##+js(acs, decodeURI, decodeURIComponent) +mlbstream.tv,nbastream.tv,nflstream.tv,nhlstream.tv##[href*="allsports4free.online/"] +mlbstream.tv,nbastream.tv,nhlstream.tv##[href^="https://pl.allsports4free.club/"] +||sports-streams-online.club^$3p +celeb.gate.cc##+js(aeld, click, native code) +celeb.gate.cc##[href^="https://goo.gl/"] +||strpjmp.com^ +bolly4u.*##+js(aopr, open) +bolly4u.*##+js(aopr, XMLHttpRequest) +bolly4u.*##.code-block +||d1pozdfelzfhyt.cloudfront.net^ +@@||f4links.*^$ghide +androidweblog.com##.stream-item +androidweblog.com##[class^="andro-random-paragraph"] +pogo.com##+js(set, pogo.intermission.staticAdIntermissionPeriod, 0) +@@||cdn.pogo.com/*/blockadblock$script,1p +@@||cdn.pogo.com/*/imasdk/application.js$script,1p +@@||cdn.pogo.com/*/imasdk/imasdk-pogo-1.0.js$script,1p +@@||cdn.pogo.com/*/imasdk/video_player.js$script,1p +@@||cdn.pogo.com/*prebid.js$script,1p +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=pogo.com +@@||pogo.com^$ghide +pogo.com##.hideableAd +pogo.com###leaderboard-ad +pogo.com##[class*="gameSkyscraperAd"] +pogo.com##[class*="gameTopAd"] +@@||torrent9.*^$ghide +torrent9.*##+js(aeld, , _0x) +torrent9.*###vpnvpn +||retdaz.fun^$all +||cloudvideo.tv/sw.js$script,1p +cloudvideo.tv##+js(set, SubmitDownload1, noopFunc) +cloudvideotv.*,cloudvideo.tv##+js(nowoif) +cloudvideotv.*##+js(aopr, localStorage) +cloudvideo.tv##+js(aopr, mm) +bdsmporn.cc,cocoporn.net,dirtyporn.cc,faperplace.com,freeadultvideos.cc,freepornstream.cc,generalpornmovies.com,kinkyporn.cc,moviesxxx.cc,movstube.net,onlinefetishporn.cc,peetube.cc,pornonline.cc,porntube18.cc,streamextreme.cc,streamporn.cc,videoxxx.cc,watchporn.cc,x24.video,xxxonline.cc,xxxonlinefree.com##+js(acs, decodeURI, decodeURIComponent) +bdsmporn.cc,cocoporn.net,dirtyporn.cc,faperplace.com,freeadultvideos.cc,freepornstream.cc,generalpornmovies.com,kinkyporn.cc,moviesxxx.cc,movstube.net,onlinefetishporn.cc,peetube.cc,pornonline.cc,porntube18.cc,streamextreme.cc,streamporn.cc,videoxxx.cc,watchporn.cc,x24.video,xxx24.vip,xxxonline.cc,xxxonlinefree.com##+js(aopr, exoJsPop101) +startseite.to##+js(nowebrtc) +@@||startseite.to^$ghide +fautsy.com##+js(nano-sib, seconds) +@@||fautsy.com^$ghide +||fautsy.com/adblock.php$xhr,redirect=nooptext,1p +fautsy.com##.coinzilla +fautsy.com##ins[class][style^="display:inline-block;width:"] +legia.net##+js(nostif, timeoutChecker) +legionprogramas.org##+js(aopw, smrtSB) +legionprogramas.org##+js(aopw, smrtSP) +legionjuegos.org,legionpeliculas.org,legionprogramas.org##+js(nano-sib, , ,0.02) +legionjuegos.org,legionpeliculas.org,legionprogramas.org##+js(set, t, 0) +||ouo.*^$popup,domain=legionjuegos.org|legionpeliculas.org|legionprogramas.org +kinoger.to##+js(nowebrtc) +kinoger.*##+js(nowoif) +kinoger.re##+js(aeld, click, _blank) +*$script,3p,redirect-rule=noopjs,domain=kinoger.pw +*$other,3p,denyallow=veevcdn.co,domain=kinoger.pw +kinoger.ru##+js(aopr, my_pop) +kinoger.to##a[href^="//fbmedia-ckl.com/get"] +||notifyvideo.info/p/creative-video/*$media,3p,redirect=noopmp4-1s +||ronnoble.com^ +xxxbunker.com##+js(nowoif) +||static.xxxbunker.com/preroll/*$media,1p +clasicotas.org##+js(aopr, nombre_dominio) +clasicotas.org##+js(nowoif) +||clasicotas.org/themes/*/js/links.js$script,1p +moretvtime.*##+js(acs, adBlockDetected) +moretvtime.*##.sc-banner +||pandanetwork.club^$3p,script +/?r=dir&zoneid=$all +tvguia.es##+js(acs, $, .height) +foxseotools.com##+js(nowoif, !?safelink_redirect=) +foxseotools.com##+js(set, blurred, false) +foxseotools.com##form#go-popup:remove() +@@||foxseotools.com^$ghide +foxseotools.com##.iframe-overlay +*$frame,denyallow=facebook.com|google.com|youtube.com,domain=foxseotools.com +*$script,3p,denyallow=akamaiedge.net|cloudflare.com|facebook.net|fbcdn.net|google.com|googleapis.com|gstatic.com|pinterest.com|recaptcha.net,domain=foxseotools.com +123movierulz.*,7movierulz1.*,7moviesrulz.*,5movierulz2.*,movieruls.*,movierulz.*,movierulzfree.*,movierulz2free.*,movierulzs.*,movierulzwatch.*,movierulzz.*,moviesrulz.*,moviesrulzfree.*,ncdnx3.xyz,watchmoviesrulz.com##+js(nowoif) +movierulzlink.*,newmovierulz.*##+js(aopr, String.fromCharCode) +4movierulz.*,4movierulz1.*,7movierulzfree.*,movieruls.*,movierulz4k.*,movierulzfree.*,movierulz2free.*,movierulzwatch.*,movierulzs.*##.ad_btn-white +123movierulz.*,4movierulz.*,4movierulz1.*,7movierulzfree.*,7moviesrulz.*,movieruls.*,movierulz4k.*,movierulzfree.*,movierulz2free.*,movierulzs.*,movierulzwatch.*,movierulzz.*,moviesrulz.*,moviesrulzfree.*,watchmovierulz.*,watchmoviesrulz.com##.ad_watch_now +7moviesrulz.com,movierulzfree.*,movierulzs.*##.hd-buttons +123movierulz.*,4movierulz.*,4movierulz1.*,5movierulz2.*,7moviesrulz.*,movieruls.*,movierulz4k.*,moviesrulz.*,moviesrulzfree.*,movierulz2free.*##.btn1 +7movierulzfree.*##.display\:none\;\"hd-buttons\" +6hiidude.gold##+js(acs, document.documentElement, break;case $.) +6hiidude.gold##+js(href-sanitizer, a[href^="https://cdns.6hiidude.gold/file.php?link=http"], ?link) +6hiidude.gold##p > a[href*="/4/"][target="_blank"] +||winfr-wtc.com^ +||9xmovies.*/sw.js$script,1p +couchtuner.*##+js(acs, RegExp, 0x) +||couchtuner.*/sw.js$script,1p +dutchycorp.*##+js(acs, eval, replace) +dutchycorp.*##center > .hide-on-med-and-down +dutchycorp.*##[class^="bmadblock"] +dutchycorp.*##div[class][style="width:468px;height:60px;display: inline-block;margin: 0 auto"] +dutchycorp.*##+js(nano-sib, time.html, 1000) +dutchycorp.*##+js(set, blurred, false) +@@||dutchycorp.*^$ghide +dutchycorp.*##ins.adsbygoogle +dutchycorp.*##[class$="-page"] .box-main center center +dutchycorp.*##[class$="-page"] > .hide-on-small-only +dutchycorp.*##[class$="-page"] > .container > .row > .col-md-offset-1 .text-left > *:not(.box-main) +dutchycorp.*##[class$="-page"] center > p +dutchycorp.*##.box-main > .row > center +dutchycorp.*##.box-main > center > div +dutchycorp.*##.nav-ad +dutchycorp.*##.row [style*="width:728px;height:90px"] +dutchycorp.*##.sidenav_left +dutchycorp.*##.sidenav_right +dutchycorp.*##[id*="ScriptRoot"] +dutchycorp.*##[style*="width:300px;height:250px"] +dutchycorp.*###link-view [style^="width:468px"] +dutchycorp.*###boxes +dutchycorp.*###link-view > center > br +*$frame,denyallow=cloudflare.com|facebook.com|google.com|hcaptcha.com|youtube.com|jungleofferwall.com,domain=dutchycorp.* +*$script,redirect-rule=noopjs,from=dutchycorp.*,to=~sentry-cdn.com +autofaucet.dutchycorp.space##.show-on-medium +@@||googletagmanager.com/gtag/js$script,domain=autofaucet.dutchycorp.* +@@||cdnjs.cloudflare.com^$script,domain=autofaucet.dutchycorp.* +@@||imasdk.googleapis.com^$script,domain=autofaucet.dutchycorp.* +dutchycorp.*##+js(rmnt, script, /adblock.php) +mtsproducoes.*##+js(aopw, block_detected) +zooqle.*##+js(aeld, /^(?:mousedown|mouseup)$/, 0x) +16honeys.com##+js(set, ckaduMobilePop, noopFunc) +socks24.org##+js(aeld, load, onload) +socks24.org##[href^="http://www.linkev.com/"] +tugaflix.*##+js(aopr, open) +mongri.net##+js(aopw, adBlockDetected) +@@||nonsensediamond.*^$ghide +nonsensediamond.*##+js(aopr, decodeURI) +easy-coin.*##+js(acs, Math.random, banner) +@@||eestatic.com/*/adsbygoogle.js$script,domain=elespanol.com +elespanol.com##+js(set, tieneAdblock, 0) +masterplayer.xyz##+js(aeld, click, popundr) +onifile.com,topflix.*##+js(nano-sib) +topflix.*##+js(nowoif) +@@||topflix.*^$ghide +topflix.*##+js(aopr, console.clear) +||ads.exoclick.com^$script,redirect=noopjs,domain=uflash.tv +@@||uflash.tv^$ghide +uflash.tv#@#.ad +@@||exosrv.com/popunder1000.js$script,domain=uflash.tv +uflash.tv##+js(aopw, ads_priv) +uflash.tv##.advertisement +uflash.tv##[id^="ad-float"] +uflash.tv##+js(nowoif, adblock, 1, obj) +uflash.tv##+js(no-fetch-if, ujsmediatags method:HEAD) +jizzbunker.com##+js(rpnt, script, /\$.*embed.*.appendTo.*;/, , condition, appendTo) +jizzbunker.com,xxxdan.com##+js(aopw, spot) +jizzbunker.com##+js(aopr, XMLHttpRequest) +jizzbunker.com##+js(aopr, Notification) +jizzbunker.com##.banner-popup +jizzbunker.com##.panel-rklcontent-wide +jizzbunker.com##.panel-body +porndex.com##+js(aeld, click) +remodelista.com##+js(set, adsAreBlocked, false) +remodelista.com##[data-advert] +club-flank.com##+js(aopr, ExoLoader.serve) +idedroidsafelink.*,links-url.*##+js(aeld, load, onload) +hackstore.*##.onp-sl-content:style(display: block !important;) +hackstore.*##.onp-sl-social-locker +hackstore.me##+js(acs, spr) +##[href^="//look.utndln.com/offer"] +@@*$ghide,domain=drivelinks.me|hackshort.me +*$popunder,domain=drivelinks.me|hackshort.me +drivelinks.me,hackshort.me##+js(acs, document.oncontextmenu) +drivelinks.me,hackshort.me##+js(acs, document.onmousedown) +@@*$ghide,domain=freeserverhostingweb.club|me-encantas.com|tanfacil.net|tecnoaldia.net +freeserverhostingweb.club,me-encantas.com,mexicogob.com,noticiascripto.site,tanfacil.net,tecnoaldia.net,todoandroid.live##+js(acs, document.oncontextmenu) +freeserverhostingweb.club,me-encantas.com,mexicogob.com,noticiascripto.site,tanfacil.net,tecnoaldia.net,todoandroid.live##+js(acs, document.onkeydown) +freeserverhostingweb.club,me-encantas.com,mexicogob.com,noticiascripto.site,tanfacil.net,tecnoaldia.net,todoandroid.live##+js(acs, document.onmousedown) +||ads-twitter.com/uwt.js$xhr,3p,redirect=noop.txt +noticiascripto.site##.pb +compucalitv.com##.onp-sl-content:style(display: block !important;) +compucalitv.com##.onp-sl-social-locker +compucalitv.com##+js(aeld, DOMContentLoaded, compupaste) +compucalitv.com##+js(aopr, redirectURL) +compucalitv.com##.botondescarga +*$script,3p,denyallow=chatango.com,domain=compucalitv.com +||gigaleecher.com/templates/plugmod/giga.js$script,1p +teknorizen.*##+js(set, safelink.adblock, false) +hdfriday.*##+js(aopr, open) +extramovies.*##.textwidget > a[target="_blank"] > img +extramovies.*##.stickyzone +extramovies.*##.gridshow-header-img +extramovies.*##a.ad_butn1 +hubcloud.*##.ads-btns +hubcloud.*##.img-fluid +||r2.dev^$image,domain=hubcloud.* +@@||googletagmanager.com/gtm.js$script,domain=ciudad.com.ar +mangasail.*##+js(set, adblock, 1) +daizurin.com##+js(nostif, nextFunction, 250) +animekb.*##+js(nowebrtc) +@@||webtvhd.com^$ghide +@@||webserver.one^$ghide +webtvhd.com##[id*="ScriptRoot"] +webtvhd.com##ins.adsbygoogle +webserver.one##ins.adsbygoogle +webserver.one##div[id^="imCell_"][class=""]:has-text(/Advertisement/i) +webserver.one##[id*="ScriptRoot"] +||poweredbyliquidfire.mobi^ +! news-und-nachrichten.de anti adb +news-und-nachrichten.de##+js(set, adblock, false) +news-und-nachrichten.de##.adverts_billboard +news-und-nachrichten.de##.adverts_top +acapellas4u.co.uk##+js(nostif, bait, 1) +t-online.de##^script:has-text(}(window);) +t-online.de##^script:has-text(,window\);) +t-online.de##^script:has-text(toscr\') +email.t-online.de#@#^script:has-text((window);) +email.t-online.de#@#^script:has-text(,window\);) +@@||t-online.de^$ghide +t-online.de##[href^="http://pubads.g.doubleclick.net"] +!#if env_mobile +pcgames.de,t-online.de#@#+js(set, CustomEvent, noopFunc) +!#endif +t-online.de##[href^="https://ad1.adfarm1.adition.com"] +t-online.de###Tasfeed1 +t-online.de###T-Shopping +kstreaming.*##+js(aopw, Fingerprint2) +kstreaming.*##+js(nowebrtc) +atomohd.*##+js(nowoif, !atomtt) +atomohd.*##+js(acs, setTimeout, admc) +pctfenix.*,pctnew.*##+js(acs, I833) +pctfenix.*,pctnew.*##+js(aopr, AaDetector) +pctfenix.*,pctnew.*##+js(aopr, TID) +atomixhq.*,pctfenix.*,pctnew.*##+js(aopw, adcashMacros) +atomixhq.*,pctfenix.*,pctnew.*##+js(nowoif, !/download\/|link/) +atomixhq.*,pctfenix.*,pctnew.*##.ads +*$script,3p,denyallow=cloudflare.net|fontawesome.com|googleapis.com|hwcdn.net|jquery.com,domain=atomixhq.*|pctfenix.* +atomtt.com##+js(acs, setTimeout, admc) +@@||acorta-enlace.com^$ghide +||pctnew.*/sw.js$script +atomohd.*##.ads +||atomohd.*/*/banners$image +*/script/pattern.js|$script +audiofanzine.com##+js(set, Math.pow, noopFunc) +hubzter.com##+js(aopr, adsanity_ad_block_vars) +! sport stuff +/adu.php$frame,3p +allfeeds.*,sporting77.*,teleriumtv.*##+js(nowoif) +allfeeds.*,teleriumtv.*###overlay +problogbooster.com##+js(aopw, hidekeep) +ispunlock.*,tpb.*##+js(aopr, pace) +||d3t9nyds4ufoqz.cloudfront.net^ +robloxscripts.com##+js(nostif, ai_adb) +megafile.io##+js(nosiif, (), 5000) +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=megafile.io +@@||geoguessr.com/_ads/*$script,1p +@@||geoguessr.com^$xhr,1p +skpb.live##+js(acs, atob, decodeURIComponent) +link-to.net##+js(aeld, load, nextFunction) +link-to.net##+js(nano-sib) +@@||link-to.net^$ghide +||link-to.net^$image,redirect-rule=1x1.gif,1p +link-to.net##.ad-block-1 +123movies.*##+js(aopr, open) +||d13jhr4vol1304.cloudfront.net^ +||oppfiles.com/common/scriptjs.php +/jquery.watch.js|$script,1p,important,domain=~dekrantvantoen.nl +@@||static.sunmedia.tv^$script,xhr,domain=ivoox.com +@@||services.sunmedia.tv/geotarget/geocity.php$xhr,domain=ivoox.com +ivoox.com###adLayout +||static.addevweb.com/integrations$script,3p +*$script,3p,domain=7starhd.*,denyallow=disqus.com|fastlylb.net|googleapis.com +7starhd.*##+js(nowoif) +uploadev.*##+js(nowoif) +uploadev.*##+js(set, openInNewTab, noopFunc) +@@||shortearn.*^$ghide +shortearn.*##.banner +shortearn.*##+js(aopr, AaDetector) +shortearn.*##+js(aopr, open) +shortearn.*##+js(set, blurred, false) +shortearn.*##.box-main > .blog-item +*$frame,denyallow=google.com,domain=shortearn.in +*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com|recaptcha.net,domain=shortearn.* +4shared.com##+js(nosiif, .append, 1000) +||4shared.com/empty.js$script,1p,important +||4shared.com/sw.js$script,important +pingit.*,~pingit.com##+js(aopr, AaDetector) +pingit.*,~pingit.com##+js(aopr, open) +pingit.*,~pingit.com##+js(aopr, rmVideoPlay) +pingit.*,~pingit.com##+js(aopr, _pop) +pingit.*,~pingit.com##+js(aopw, Fingerprint2) +pingit.*,~pingit.com##+js(set, blurred, false) +||pingit.*/sw.js$script,1p,domain=~pingit.com +*$script,3p,denyallow=cdn77.org|google.com|gstatic.com|recaptcha.net|smartsuppcdn.com|smartsuppchat.com,domain=pingit.*|~pingit.com +hdfull.*##+js(acs, document.createElement, l.parentNode.insertBefore(s) +hdfull.*##+js(aeld, mousedown, !!{});) +hdfull.*##+js(nano-stb) +! developerinsider.co anti adb +developerinsider.co##+js(set, runAdBlocker, false) +phonenumber-lookup.info##+js(aopr, pa) +! nextorrent . site popups +nextorrent.*##+js(acs, jQuery, popunder) +nextorrent.*##+js(ra, onclick) +calculate.plus##+js(nostif, checkStopBlock) +turkdown.com##+js(aopr, AaDetector) +link.turkdown.com##+js(set, blurred, false) +@@||turkdown.com^$ghide +urlgalleries.net##+js(aopr, AaDetector) +urlgalleries.net##+js(acs, document.cookie, setOCookie) +moonquill.com##+js(aopw, document.getElementsByClassName) +googlvideo.com##+js(aopr, mm) +googlvideo.com##+js(nowoif) +@@||convallariaslibrary.com^$ghide +convallariaslibrary.com##.code-block +convallariaslibrary.com##.widget_custom_html ins:upward(.widget_custom_html) +frag-mutti.de##.intext-ad +frag-mutti.de##.ad-loading:remove() +frag-mutti.de###campaign-popup +frag-mutti.de###fm-shadow +thehindu.com##+js(set, Adblock, false) +thehindu.com###gsi_overlay +maniac.de##+js(aopr, td_ad_background_click_link) +maniac.de##[href^="https://www.maniac.de/linkout/"] +cambro.tv##+js(acs, document.addEventListener, initBCPopunder) +cambro.tv##+js(aopr, onload) +cambro.tv##.box.rltdsldr +cambro.tv##.bttsptt.box +cambro.tv##[href^="https://go.strpjmp.com"] +||cambro.tv/contents/*/player/*$media,1p +||cambro.tv/player/html.php$frame,1p +*$popunder,domain=cambro.tv +||liveflirt.net^$frame,domain=cambro.tv +cambro.tv###kt_player > [href^="https://www.cambro.tv/"] +cambro.tv##.crak_cams_ctn +cambro.tv##.fp-brand +cambro.tv##[href^="https://t.grtya.com/"] +cambro.tv##[href^="https://fhgte.com/"] +cambro.tv##[href^="https://bongacams11.com/"] +||widgets.skyprivate.com/promo/$frame +cambro.tv##+js(set, flashvars.logo_url, '') +cambro.tv##+js(set, flashvars.logo_text, '') +nibelungen-kurier.de##+js(set, nlf.custom.userCapabilities, false) +coolsoft.altervista.org##+js(nostif, _0x) +coolsoft.altervista.org###block-block-30 +coolsoft.altervista.org###content-right-floatbox +@@||hanimesubth.com/assets/js/ads.core.js$script,1p +hanimesubth.com##+js(aeld, load, nextFunction) +hanimesubth.com##[href="https://slotgame66.co/"] +*.gif$domain=hanimesubth.com,image +*.webp$domain=hanimesubth.com,image,3p +watchkobestreams.info##+js(aost, atob, inlineScript) +*$script,3p,domain=fromwatch.com,denyallow=cloudflare.com|googleapis.com +tcheats.com##+js(aopr, checkAds) +gamekult.com##+js(aopr, SmartWallSDK) +gamekult.com##+js(nostif, displayCookieWallBanner) +gsmturkey.net##+js(aeld, load, nextFunction) +*$script,3p,domain=gsmturkey.net,redirect-rule=noopjs +@@||cdnjs.cloudflare.com/ajax/libs/*$script,domain=warda.at +dz4up1.com##+js(acs, document.getElementById, adblockinfo) +readmng.com#@#.scroll_target_top +ciudadgamer.com##+js(acs, atob, encodeURIComponent) +ovagames.com##+js(acs, JSON, _0x) +ovagames.com###adter:upward(3) +ovagames.com##.single-entry-titles:has-text(Sponsor) +@@||ovagames.com^$ghide +!#if ext_ubol +*$script,3p,from=ovagames.com,to=~facebook.net|~fbcdn.net +!#endif +mmacore.tv##+js(rmnt, script, /adb/i) +symbolab.com##.googleLeftSkyScrapper +@@||googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=safelinkunited.blogspot.com +@@||pagead2.googlesyndication.com/pagead/$script,domain=safelinkunited.blogspot.com +safelinkunited.blogspot.com##.ADS +safelinkunited.blogspot.com##ins.adsbygoogle +||ipla.pluscdn.pl/p/*$media,redirect=noopmp4-1s,domain=polsatsport.pl +@@||redefineadpl.hit.gemius.pl^$xhr,domain=polsatsport.pl +@@||gemius.pl^$script,xhr,domain=polsatnews.pl +@@||hit.stat24.com/$xhr,domain=polsatnews.pl +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=polsatnews.pl +lookmovie.*##+js(aopr, adBlockDetected) +@@||lookmovie.*^$ghide +||metrika.lookmovie.io^$important +lookmovie.*##.view-top-ab +lookmovie.*##.notifyjs-corner +lookmovie.*##.nord-vpn.home-banner +lookmovie.*###single.dtsingle > .content > center > a[href] > img +lookmovie.*###single.dtsingle > .content > .sheader > .poster > .extra > center > a[href] > img +lookmovie.*##+js(aopr, mm) +lookmovie.ag.w3snoop.com##.ezoic-ad +streamhentaimovies.com##+js(nostif, pum-open) +||p-cdn.us/public/*$media,redirect=noopmp3-0.1s,domain=soundcloud.com +||sndcdn.com/audio/*$media,redirect=noopmp3-0.1s,domain=soundcloud.com +||soundcloud.com/audio-ad$1p,xhr +||soundcloud.com/promoted$1p,xhr +soundcloud.com##.soundList__item:has(.sc-promoted-icon-medium) +! as suggested https://github.com/uBlockOrigin/uAssets/issues/5153 +*expires$media,redirect=noopmp3-0.1s,domain=kabeleins.de +*expires$media,redirect=noopmp3-0.1s,domain=kabeleinsdoku.de +*expires$media,redirect=noopmp3-0.1s,domain=sat1gold.de +*expires$media,redirect=noopmp3-0.1s,domain=sixx.de +||zomap.de/*&expires=$script,domain=kabeleins.de|kabeleinsdoku.de|sat1gold.de|sixx.de +vox.de##+js(no-xhr-if, svonm) +bharian.com.my##+js(aopr, SmartWallSDK) +laradiobbs.net##+js(set, adblock, false) +!#if env_firefox +||fwmrm.net/ad/*$script,redirect=noopjs,domain=nationalgeographic.com +!#endif +nationalgeographic.fr##+js(no-xhr-if, /\/VisitorAPI\.js|\/AppMeasurement\.js/) +nationalgeographic.*##.ng-ad-banner +nationalgeographic.*##.ngart__footer-ad +konten.co.id##+js(nostif, overlay, 2000) +@@||farsondigitalwatercams.com^$ghide +farsondigitalwatercams.com##.advert +! thefmovies . me popups +thefmovies.*##+js(aost, Math, inlineScript) +thefmovies.*##+js(nostif, '0x) +thefmovies.*##+js(nowoif) +thefmovies.*##.mobile-btn +sembunyi.in##+js(aopr, popjs) +series9.*##div[style="padding:15px 0;text-align:right;"] +@@||diariodenavarra.es^$ghide +diariodenavarra.es##+js(aeld, DOMContentLoaded, /adblock/i) +diariodenavarra.es##+js(nostif, /adblock/i) +diariodenavarra.es###AdSlot_megabanner +diariodenavarra.es##.sticky_roba +keepvid.*##+js(nowoif) +||player.ooyala.com/static/*/ad-plugin/*$script,redirect=noopjs,domain=dragons.com.au +ndtv.com##.trc-content-sponsored +ndtv.com##.composite-branding.branding:has-text(/sponsored/i):xpath(..) +ndtv.com##[id^="adslot"] +ndtv.com##:xpath(//div[contains(text(),"Advert")]) +ampproject.net##.trc-content-sponsored +food.ndtv.com##.ads +food.ndtv.com###jeocontainer > span:has-text(Promoted) +||hotdeals360.com^$3p +ndtv.com##.tbl-feed-card:has(.trc-content-sponsored) +ndtv.com##.inline.ads +ndtv.com##.tbl-wrp:has(.i-amphtml-fill-content) +food.ndtv.com##.overlay__side-nav +/pup.php?$script +ustream.*##+js(nowoif) +ustream.*##^script:has-text(btoa) +ustream.*##+js(aopr, console.clear) +/zone?pub +ustream.to##.popup +ustream.to##.overlay +@@||ustream.*^$script,1p +*$script,redirect-rule=noopjs,domain=ustream.to +! canalesportivo. live +fr.streamon-sport.ru,hoca4u.com##+js(acs, document.createElement, onerror) +sound-park.*,soundpark.*,soundpark-club.*##+js(acs, $, open) +sound-park.*,soundpark.*,soundpark-club.*##+js(acs, document.createElement, script) +go.bucketforms.com##+js(acs, $, adblocker) +bidouillesikea.com##+js(aopr, adbackDebug) +blizzboygames.net##+js(nowebrtc) +blizzboygames.net##[href*="bit.ly"] +blizzboygames.net##.gp-entry-text > div > div[style] > .vc_row.wpb_row.vc_row-fluid +||blizzboygames.net/sw.js$script,1p +##[href^="https://track.wg-aff.com/click"] +optifine.net##+js(nostif, Math.round, 1000) +! http://adfoc.us/serve/?id=47525085215776 timer +adfoc.us##+js(set, count, 0) +pianetamountainbike.it##+js(set, LoadThisScript, true) +||pianetamountainbike.it/*Banner$image +lavoixdux.com##+js(set, is_adblocked, false) +barchart.com##+js(set, showPremLite, true) +barchart.com##[id^=customAd] +! closeBlockerModal anti adb +modelisme.com,parasportontario.ca,prescottenews.com##+js(set, closeBlockerModal, false) +juegoviejo.com##+js(nano-stb) +luzernerzeitung.ch,tagblatt.ch##+js(nostif, adblock, 5) +! anti adb superhumanradio .net +@@||superhumanradio.net^$ghide +! egydead .com => .live +@@||egydead.*^$ghide +egydead.*##.adHolder +egydead.*##.FooterAds +! mangamanga. ml popups +mangamanga.*##+js(aeld, keydown) +! fuckdy .com popups +fuckdy.com##+js(aopr, Popunder) +fuckdy.com##.fkd-inban +@@||express.de^$ghide +@@||mopo.de^$ghide +express.de,mopo.de##.dm_ad +express.de,mopo.de##.dm_ad-container +express.de,mopo.de###nativendo-marginal +mopo.de##.dm_ta300x300_html +@@||berryboot.alexgoldcheidt.com^$ghide +! ableitungsrechner.net ad-reinsertion +ableitungsrechner.net##+js(nostif, ag_adBlockerDetected) +ableitungsrechner.net##a.extern[href^="//www.amazon.de/"]:upward(2) +@@||gatevidyalay.com^$ghide +gatevidyalay.com##ins.adsbygoogle +urlaubspartner.net##+js(set, adblock, false) +urlaubspartner.net##.ad +urlaubspartner.net##.text-center.col-lg-4.visible-lg-block > span +bostonherald.com##+js(nostif, n.trigger, 1) +bostonherald.com##+js(set, CnnXt.Event.fire, noopFunc) +alternet.org##+js(nostif, null) +mz-web.de##+js(acs, document.createElement, document.head.appendChild) +! praxis-jugendarbeit.de anti adb +praxis-jugendarbeit.de##+js(nostif, nextFunction, 2000) +m.kuku.lu##+js(acs, setTimeout, bait.css) +@@||m.kuku.lu^$ghide +m.kuku.lu##ins.adsbygoogle +watchfreexxx.net##+js(acs, document.createElement, 'script') +watchfreexxx.net##+js(aopr, Date.prototype.toGMTString) +watchfreexxx.net##+js(aopr, ExoLoader) +watchfreexxx.net##+js(aopr, ExoLoader.serve) +watchfreexxx.net##+js(aopr, initPu) +watchfreexxx.net##+js(aopr, jsUnda) +watchfreexxx.net##+js(aeld, getexoloader) +watchfreexxx.net##.order-1:has(.video-block-happy-absolute) +watchfreexxx.net##.happy-player-beside, .happy-section, .widget_execphp:has-text(/Advertisement|ExoLoader/) +watchfreexxx.net###tracking-url +||watchfreexxx.net/*.php$script,1p +*$script,3p,denyallow=cloudflare.net|fastly.net|google.com|googleapis.com|gstatic.com|jwpcdn.com|jsdelivr.net|eastream.net|youtube.com|ytimg.com,domain=vidfast.co +okstream.*##[id^="click"] +*$script,3p,denyallow=bootstrapcdn.com|cloudflare.net|google.com|gstatic.com|hwcdn.net|jquery.com|jsdelivr.net|tawk.to,domain=okstream.* +macrotrends.net##+js(acs, RegExp, '0x) +macrotrends.net##+js(aopw, ABD) +macrotrends.net##.adx_top_ad +nrj-play.fr##+js(set, adBlockDetector.isEnabled, falseFunc) +thegatewaypundit.com##+js(aopr, adtoniq) +thegatewaypundit.com##.hide-for-admiral +lippycorn.com##+js(acs, document.createElement, __esModule) +@@||catracalivre.com.br^$ghide +pendekarsubs.us##+js(nostif, nextFunction, 250) +b3infoarena.in##+js(aeld, load, 2000) +@@||upvid.*^$ghide +upvid.*##+js(nowoif) +||upvid.*/sw.js$script,1p +upload.ac##.ads +@@||capital.fr^$ghide +capital.fr##.cap-ads +capital.fr##.pmd-ads +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=kharisma-adzana.blogspot.com +@@||sunderlandecho.com^$ghide +@@||googlesyndication.com/pagead/$script,domain=ebb.io +720pxmovies.blogspot.com##+js(acs, Math, break) +720pxmovies.blogspot.com##+js(aopr, myFunction_ads) +720pxmovies.blogspot.com##+js(nowoif) +hackingwithreact.com##+js(set, areAdsDisplayed, true) +@@||gamesfree.ca^$ghide +onle.co##+js(nano-sib) +@@||onle.co^$ghide +@@||googlesyndication.com/pagead/$script,domain=onle.co +onle.co##[id^="aswift"] +onle.co##.adsbygoogle:style(max-height: 1px !important;) +! gutekueche.at anti adb +gutekueche.at##+js(set, gkAdsWerbung, true) +software-on.com##+js(aopr, decodeURIComponent) +software-on.com##+js(nowebrtc) +software-on.com##+js(nowoif) +@@||software-on.com^$ghide +@@||software-on.com/*/advertising.js$script,1p +software-on.com##ins.adsbygoogle +software-on.com##.widget_oxnepzimd +software-on.com##.oxnepzimd +gamershit.altervista.org##+js(nobab) +gamershit.altervista.org##[src="float.htm"] +@@||elbotola.com^$ghide +@@||berliner-kurier.de^$ghide +@@||berliner-zeitung.de^$ghide +berliner-kurier.de,berliner-zeitung.de##.dm_ad-container +berliner-kurier.de##div[class^="traffective_"] +berliner-kurier.de##div[class^="outbrain_outbrain-outer-container"] +!#if env_firefox +webmail.email.it##+js(no-fetch-if, googlesyndication) +!#endif +@@||smscodeonline.com^$ghide +smscodeonline.com##ins.adsbygoogle +peekvids.com,playvids.com,pornflip.com,pornoeggs.com##+js(aopr, open) +*&token$media,redirect=noopmp3-0.1s,domain=peekvids.com|playvids.com|pornflip.com|pornoeggs.com +peekvids.com,playvids.com,pornflip.com##+js(set, pop_target, null) +pornoeggs.com##.card-deck-promotion +pornoeggs.com##.mediaPlayerBanner +@@||thuglink.com^$ghide +thuglink.com##+js(set, adblockEnabled, false) +@@||watchmalcolminthemiddle.com^$ghide +@@||onlinecoursebay.com^$ghide +gametop.com##+js(aost, document.getElementById, onLoadEvent) +gametop.com##.ads +redensarten-index.de##+js(set, is_banner, true) +redensarten-index.de##+js(nostif, adb) +interviewgig.com##+js(aeld, load, onload) +extratorrent.*##:xpath(//a[contains(text(),"VPN")]/../../..) +typinggames.zone##+js(acs, document.getElementById, alert) +@@||typinggames.zone^$ghide +@@||1warie.com^$ghide +produktion.de##+js(set, adblock, false) +vw-page.com##+js(set, $easyadvtblock, false) +@@||mediaite.com^$script,1p +mediaite.com##.adthrive-ad +mediaite.com##.o-jw-sub-promo +dump.xxx##+js(aopr, ExoLoader.serve) +dump.xxx##+js(popads-dummy) +dump.xxx##+js(aopr, open) +||dump.xxx/sw.js$script,1p +fuqer.com##+js(aopr, ExoLoader.serve) +fuqer.com##+js(aopr, open) +fuqer.com##+js(popads-dummy) +||fuqer.com/sw.js$script,1p +fuqer.com##.spot-thumbs > .right:style(height:1px !important) +fuqer.com##.right > .text +fuqer.com#@#.spot-thumbs > .right +@@||villatalk.com^$ghide +lurdchinexgist.blogspot.com##+js(aeld, load, 2000) +sharemods.com##+js(nano-stb, tick, 1000, 0.001) +*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudflare.net|cookieinfoscript.com|fastly.net|fastlylb.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|recaptcha.net|setupcmp.com|sharethis.com,domain=sharemods.com +modsbase.com##+js(nowebrtc) +@@||65creedmoor.com^$ghide +myfreeblack.com##+js(aopw, mfbDetect) +||myfreeblack.com/sw.js$script,1p +auto-data.net##+js(acs, document.getElementById, adblock) +otakuindo.*##+js(aopr, Date.prototype.toUTCString) +otakuindo.*##+js(nobab) +penis-bilder.com##+js(aopr, popunder) +penis-bilder.com##+js(nobab) +sendvid.com##+js(nowoif, !/^https:\/\/sendvid\.com\/[0-9a-z]+$/) +sendvid.com##[href*=".php"] +sendvid.com###video-js-video > [href^="javascript:"] +sendvid.com###vjs-logo-top-bar +sendvid.com###ftr +sendvid.com##a[href^="https://go.gsrv.dev/"] +sendvid.com##a[href][target="_blank"][style^="display: block;position: fixed;"][style*="z-index:"] +imgdawgknuttz.com##+js(aopw, atOptions) +imgdawgknuttz.com##+js(acs, document.createElement, l.parentNode.insertBefore(s) +imgdawgknuttz.com##+js(aost, atob, inlineScript) +imgdawgknuttz.com##+js(aopr, Pub2a) +||imgdawgknuttz.com/*.php$script,1p +||xxxwebdlxxx.org^$image,domain=imgdawgknuttz.com +*$frame,3p,domain=imgdawgknuttz.com +*$script,3p,domain=imgdawgknuttz.com +@@||iphonetweak.fr^$ghide +iphonetweak.fr##ins.adsbygoogle +iphonetweak.fr##.bigPub +duden.de##[id*="billboard"] +duden.de##.tabloid__side-column +duden.de##body:style(margin-top: 0px !important;) +@@||duden.de^$ghide +duden.de##+js(aeld, , adsbygoogle) +faresgame.com##+js(aopr, adBlockDetected) +shemalepower.xyz##+js(nobab) +shemalepower.xyz##+js(nowoif) +ssrmovies.*##+js(nowoif) +||get-link.xyz^ +||hitcashtag.com^$3p +||techcdn.com^$3p +shrib.com##+js(nostif, adb, 6000) +shrib.com##[style="display: block;"]:has(.adsbygoogle) +ratemyteachers.com##+js(acs, document.getElementById, 'block') +thefreedommatrix.blogspot.com##+js(aeld, load, 2000) +thefreedommatrix.blogspot.com##+js(nobab) +desiremovies.*##+js(acs, document.createElement, console) +desiremovies.*##+js(aeld, , _0x) +||desiremovies.*/sw.js$script,1p +desiremovies.*##.code-block-2.code-block +||grumft.com^$3p +##[href="//xxxrevpushclcdu.com/app.webp"] +@@||proxy.ads.canalplus-bo.net^$xhr,domain=mycanal.fr +||static.canal-plus.net/pub/$media,redirect=noopmp3-0.1s,domain=mycanal.fr +@@||damnripped.com^$ghide +notebookcheck-ru.com##+js(acs, document.getElementById, send) +@@||notebookcheck.com^$script,1p +@@||notebookcheck.net^$script,1p +@@||notebookcheck-ru.com^$script,1p +@@||notebook-check.com^$script,domain=notebookcheck.com|notebookcheck.net|notebookcheck-ru.com +@@||notebookcheck-ru.com^$script,domain=notebookcheck.com|notebookcheck.net|notebookcheck-ru.com +notebookcheck.*##+js(aopw, ab_cl) +@@||www-league.nhlstatic.com/nhl.com/builds/site-core/*/scripts/*$script,domain=nhl.com +@@||www-league.nhlstatic.com^$xhr,domain=nhl.com +@@||nhl.com^$ghide +*&expire$media,3p,redirect=noopmp3-0.1s,domain=nhl.com +nhl.com##.ad +nhl.com##.ad-centered +nhl.com##.ad-responsive-slot +nhl.com##.native-ad-slot +@@||thuthuatjb.com^$ghide +dfiles.*##+js(acs, decodeURI, decodeURIComponent) +@@||cloudflare.com/ajax/libs/*/fuckadblock.js$script,domain=depositfiles.org|dfiles.eu +||dfiles.*/sw.js$script,1p +m4maths.com##+js(aopr, alert) +dailycamera.com##+js(nostif, n.trigger, 1) +dailycamera.com##+js(set, CnnXt.Event.fire, noopFunc) +fc.lc,fc-lc.com##+js(acs, document.addEventListener, nextFunction) +fc.lc##+js(aopr, adBlockDetected) +fc.lc##+js(aopr, app_vars.force_disable_adblock) +fc.lc##+js(noeval) +fc.lc##+js(set, blurred, false) +||fc.lc/*.html$frame,1p +||fc.lc/sw.js$script,1p +*$image,3p,domain=fc-lc.com +fc.lc##.banner-inner +fc.lc###ad +fc-lc.com###iframe_id +fc-lc.com##.captcha-page .box-main > a[href][target="_blank"] > img +*$frame,denyallow=cloudflare.com|facebook.com|google.com|hcaptcha.com|youtube.com,domain=fc.lc|fc-lc.com +*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudflare.net|google.com|gstatic.com|jsdelivr.net|recaptcha.net|tawk.to|wp.com,domain=fc.lc|fc-lc.com +fc.lc##+js(nowoif, /^/, 1) +! vocalley.com anti-adb +movie4u.live##+js(aopr, AaDetector) +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=abdoutech.com +pastepvp.org,programasvirtualespc.net##+js(aopw, smrtSB) +@@||pastepvp.org^$ghide +pastepvp.org##.content > center +@@||programasvirtualespc.net^$ghide +||descargaloaca.com^$3p +||fc.lc^$3p,script +@@||online-courses.club^$ghide +megapornfreehd.com##+js(aopr, V4ss) +cinetux.*##+js(aopw, smrtSB) +cinetux.*##+js(ra, href, #clickfakeplayer) +cinetux.*##span.button +cinetux.*##.links_table > .fix-table > table > tbody > tr:has-text(Patrocinador) +@@||ad.71i.de/somtag/loader/loader.js$script,domain=puls4.com +tonpornodujour.com##+js(aopr, popunders) +tonpornodujour.com##+js(set, is_adblocked, false) +tonpornodujour.com###disclaimerId +444.coffee##+js(noeval) +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=firm-ware27.blogspot.com|flash-reset.blogspot.com +@@||magiclen.org^$ghide +magiclen.org##ins.adsbygoogle +file.magiclen.org##+js(nano-stb, , ,0.02) +streameast.*,thestreameast.*##+js(aeld, /^/, 0x) +streameast.*,thestreameast.*##+js(nosiif, visibility, 1000) +streameast.*,thestreameast.*##+js(nowebrtc) +streameast.*,thestreameast.*##+js(nostif, sadbl) +streameast.*##+js(acs, Object.defineProperty, break;case) +streameast.*##^script:has-text(/aclib|runPop/) +thestreameast.*##+js(aopr, aclib) +*$xhr,redirect-rule=nooptext,domain=streameast.*|thestreameast.* +sportlive.*##+js(ra, onclick) +*$image,redirect-rule=32x32.png,domain=streameast.*|thestreameast.* +||streameast.*/*.gif$image +||thestreameast.*/*.gif$image +||eagamerz.com^$popup +||supertracker200.com^$popup +viz.com##+js(set, show_dfp_preroll, false) +viz.com##+js(set, show_youtube_preroll, false) +@@||viz.com^$ghide +!#if env_mobile +viz.com##+js(nano-sib, , ,0) +viz.com###metamodal-dfp-preroll +viz.com###overlay +@@||doubleclick.net^$script,xhr,domain=viz.com +@@||googletagservices.com/tag/js/gpt.js$script,domain=viz.com +||assetshuluimcom-a.akamaihd.net/prerolls/$media,3p +!#endif +@@||cdn.playwire.com^$image,domain=krunker.io +@@||cdn.playwire.com/bolt4/js/zeus/frame/admgr$script,1p +*$image,domain=krunker.io,redirect-rule=1x1.gif +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=krunker.io +@@||cdn.frvr.com/fran/pubads_$script,domain=krunker.io +@@||pagead2.googlesyndication.com^$xhr,domain=krunker.io +@@||securepubads.g.doubleclick.net^$xhr,domain=krunker.io +||googlesyndication.com/pagead/js/$script,redirect=noopjs,domain=eazycheat.com +pussytorrents.org##+js(aopr, loadTool) +||assets.moat.com/*/ad$image,redirect=2x2.png,1p +@@||rmdan.*^$ghide +@@||1000ps.de^$ghide +@@||nfhost.me^$ghide +@@||hastingsobserver.co.uk^$ghide +hastingsobserver.co.uk##.leaderboard-ad +freecourseweb.com##+js(nostif, brave_load_popup) +@@||freecourseweb.com^$ghide +freecourseweb.com##ins.adsbygoogle +*$script,3p,redirect-rule=noopjs,domain=freecourseweb.com +svapo.it##+js(aopw, adBlockDetected) +sataniabatch.blogspot.com##+js(nofab) +@@||csm.dev^$ghide +papalah.com##+js(aopw, adBlockDetected) +! solarmovie.id popup +solarmovie.id##+js(aopr, AaDetector) +bezpolitickekorektnosti.cz##+js(aopr, sc_adv_out) +bezpolitickekorektnosti.cz##.SC_TBlock +bitcoinminingforex.blogspot.com##+js(nofab) +bitcoinminingforex.blogspot.com##+js(nowoif) +protopage.com##+js(aopr, pageParams.dispAds) +@@||cyclismactu.net/adserver.js$script,1p +letmejerk.com,letmejerk2.com,letmejerk3.com,letmejerk4.com,letmejerk5.com,letmejerk6.com,letmejerk7.com##+js(aopr, ExoLoader) +letmejerk.com,letmejerk2.com,letmejerk3.com,letmejerk4.com,letmejerk5.com,letmejerk6.com,letmejerk7.com##+js(aeld, , _0x) +letmejerk.com,letmejerk2.com,letmejerk3.com,letmejerk4.com,letmejerk5.com,letmejerk6.com,letmejerk7.com##.cams-widget +letmejerk.com,letmejerk2.com,letmejerk3.com,letmejerk4.com,letmejerk5.com,letmejerk6.com,letmejerk7.com##[class^="lmj"] +letmejerk.com,letmejerk2.com,letmejerk3.com,letmejerk4.com,letmejerk5.com,letmejerk6.com,letmejerk7.com##.th:has(> span.th-ad) +||letmejerk.com/*.php$script,1p +||mn-shop.com^$3p +@@||dailythanthi.com^$ghide +windowcleaningforums.co.uk##+js(nostif, show) +windowcleaningforums.co.uk##[href="https://thrivewp.com/"] +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=windowcleaningforums.co.uk +windowcleaningforums.co.uk##a[href^="https://windowcleaningforums.co.uk/index.php?"][target="_blank"] +windowcleaningforums.co.uk##.ipsAdvertisement_large +pennlive.com##+js(aeld, load, PrivateMode) +fstore.biz##+js(acs, document.getElementById, undefined) +fstore.biz##+js(set, blurred, false) +fstore.biz##+js(nano-sib) +@@||beatricedailysun.com^$ghide +beatricedailysun.com##.tnt-ads-container +beautypageants.indiatimes.com##+js(aeld, scroll, _0x) +@@||googletagmanager.com/gtm.js$script,domain=raiplayradio.it +cda.pl##.pb-video-click +cda.pl##.pb-ad-video-player +||redcdn.pl/file/*/vstatic/*.mp4$media,redirect=noopmp3-0.1s,domain=cda.pl +@@||maalaimalar.com^$ghide +cinema.maalaimalar.com##.in.fade.modal-backdrop +cinema.maalaimalar.com##body:style(overflow: auto !important;) +topito.com##+js(aopr, document.bridCanRunAds) +@@||neko-sama.fr^$ghide +0rechner.de##+js(set, doads, true) +@@||galt.hit.gemius.pl/gplayer.js$script,domain=lrt.lt +@@||pasty.*^$ghide +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=pasty.* +@@||pagead2.googlesyndication.com/pagead/js/*/show_ads_impl$script,domain=pasty.* +@@||qctimes.com^$ghide +@@||wcfcourier.com^$ghide +qctimes.com,wcfcourier.com##.tnt-ads-container +@@||roya.tv^$ghide +sexvid.*,hdtube.porn##+js(acs, document.write, iframe) +sexvid.*,hdtube.porn##+js(aopr, ExoLoader) +sexvid.*##+js(aopr, pu) +sexvid.*###banner_video +sexvid.*##.sponsor.shown +sexvid.*##.spots_field.spots_thumbs +sexvid.*##.box_site +sexvid.*##.download_link +sexvid.*##.spot-content, .spot-title +*$xhr,frame,domain=sexvid.* +hdtube.porn##.banners +!#if env_mobile +sexvid.*,hdtube.porn###fltd-inner +sexvid.*##.wrapper > .spot-holder +sexvid.*##.cs +sexvid.*##.thumb-adv +sexvid.*##.container > .headline, .intro +sexvid.*##.under-player.spot-holder > .spot +hdtube.porn##.cards__item--adv.cards__item--big.cards__item.item +hdtube.porn##.page__main > .container +!#endif +livesport.ws##+js(aopr, MessageChannel) +! configspc .com popups +configspc.com##+js(set, jsUnda, noopFunc) +sbsun.com##+js(set, CnnXt.Event.fire, noopFunc) +citynow.it##+js(aopr, advads_passive_ads) +||citynow.it/wp-content/uploads/*/banner$image,1p +citynow.it##.advads-close-button +@@||myshorturls.blogspot.com^$ghide +myshorturls.blogspot.com##ins.adsbygoogle +tmohentai.com##+js(aopr, ExoLoader.serve) +@@||tmohentai.com^$ghide +tmohentai.com##.advert +||tmohentai.com/nb/ +||tmohentai.com/*.php +tmohentai.com##+js(noeval-if, tmohentai) +variety.com##+js(rmnt, script, admbenefits) +variety.com##+js(aopr, pmc_admanager.show_interrupt_ads) +@@||sme.sk^$ghide +! anti adb http://arembed .com/live.php?ch=Bein_Sports1 +@@||janjua.*^$ghide +@@||jbzdy.com.pl^$ghide +@@||senpa.io^$ghide +senpa.io##+js(nobab) +senpa.io###ad-slot-left-panel +senpa.io###ad-slot-center-panel +senpa.io###banner_ad_bottom +senpa.io##.adsPanel +senpa.io##.advertisement-informer +tuotromedico.com##+js(set, jQuery.adblock, false) +lesoir.be##+js(nostif, adb) +mysostech.com##+js(aopw, ai_adb_overlay) +gleanster.com###overlay +! Postmedia featured video ads +airdrieecho.com,brantfordexpositor.ca,calgaryherald.com,calgarysun.com,canoe.com,chathamdailynews.ca,chathamthisweek.com,clintonnewsrecord.com,cochranetimes.com,cochranetimespost.ca,coldlakesun.com,communitypress.ca,countymarket.ca,countyweeklynews.ca,devondispatch.ca,draytonvalleywesternreview.com,edmontonjournal.com,edmontonsun.com,elliotlakestandard.ca,fairviewpost.com,fortmcmurraytoday.com,fortsaskatchewanrecord.com,gananoquereporter.com,goderichsignalstar.com,greybrucethisweek.ca,hannaherald.com,intelligencer.ca,kenoraminerandnews.com,kincardinenews.com,kingstonthisweek.com,lakeshoreadvance.com,leaderpost.com,leducrep.com,lfpress.com,lucknowsentinel.com,mayerthorpefreelancer.com,melfortjournal.com,midnorthmonitor.com,mitchelladvocate.com,nantonnews.com,nationalpost.com,norfolkandtillsonburgnews.com,northernnews.ca,nugget.ca,ontariofarmer.com,ottawacitizen.com,ottawasun.com,owensoundsuntimes.com,parisstaronline.com,peacecountrysun.com,pembrokeobserver.com,pinchercreekecho.com,prrecordgazette.com,recorder.ca,sarniathisweek.com,saultstar.com,saultthisweek.com,seaforthhuronexpositor.com,sherwoodparknews.com,shorelinebeacon.com,simcoereformer.ca,sprucegroveexaminer.com,standard-freeholder.com,stonyplainreporter.com,stratfordbeaconherald.com,strathroyagedispatch.com,stthomastimesjournal.com,thebeaumontnews.ca,thechronicle-online.com,thecragandcanyon.ca,thegraphicleader.com,thelondoner.ca,thepost.on.ca,theprovince.com,thestarphoenix.com,thesudburystar.com,thewhig.com,timminspress.com,timminstimes.com,todaysfarmer.ca,trentonian.ca,vancouversun.com,vermilionstandard.com,vulcanadvocate.com,wallaceburgcourierpress.com,wetaskiwintimes.com,whitecourtstar.com,wiartonecho.com,windsorstar.com,winnipegsun.com,woodstocksentinelreview.com##.featured-video +@@||canoe.com^$ghide +canoe.com###postmedia_layouts_ad-top +canoe.com##.ad__container +moviflex.*##+js(acs, Math, XMLHttpRequest) +moviflex.*##+js(nowoif) +||welect.de^$3p +||wlct-three.de^$3p +vladan.fr##+js(nostif, adb, 0) +vladan.fr##body:style(background-image:none !important) +vladan.fr###text-414857080 > .widget-wrap > .widgettitle.widget-title +vladan.fr##[href^="https://www.nakivo.com/"] +vladan.fr##[href^="https://www.starwindsoftware.com/"] +vladan.fr##[href^="https://lpar2rrd.com/"] +vladan.fr##+js(nowoif) +||vladan.fr/*skin$image +losporn.org##+js(aopr, ExoLoader.serve) +losporn.org##+js(nowoif) +@@||british-birdsongs.uk^$ghide +british-birdsongs.uk##ins.adsbygoogle +japgay.com##+js(set, AlobaidiDetectAdBlock, true) +hentai-vl.blogspot.com##+js(aeld, load, 2000) +@@||helenair.com^$ghide +helenair.com##.tnt-ads-container +deltabit.co##+js(nano-sib) +*$script,3p,domain=deltabit.co +@@||loskatchorros.com.br^$ghide +loskatchorros.com.br##.adsbygoogle:style(max-height: 1px !important;) +mavplay.*,ujav.me,videobb.*##+js(aopr, jwplayer.utils.Timer) +fembed.*,films5k.com,mavplay.*,ujav.me,videobb.*##+js(aopr, __Y) +fembed.*,mavplay.*,videobb.*##+js(aopw, adcashMacros) +fembed.*,mavplay.*,videobb.*##+js(aopr, mm) +videobb.*##+js(aopr, glxopen) +fembed.*,mavplay.*,ujav.me,videobb.*##+js(nowoif) +||4gay.fans/fans.js +@@||siouxcityjournal.com^$ghide +siouxcityjournal.com##.tnt-ads-container +||wicket.pw/embeds/icc-cwc.png$image +! filesharing.io anti adb +filesharing.io##+js(aopw, showMsgAb) +@@||filesharing.io^$ghide +softwarecrackguru.com##+js(aopw, downloadJSAtOnload) +mega-debrid.eu##+js(set, Advertisement, 1) +projetomotog.blogspot.com##+js(aeld, load, 2000) +mlwbd.*##+js(noeval-if, ads) +@@/home.php$popup,domain=mlwbd.* +@@/blog.php$popup,domain=mlwbd.* +mlwbd.*##+js(ra, type, input[value^="http"]) +mlwbd.*##input[value^="http"]:style(width: 70% !important) +123mkv.*##+js(nowoif) +||goodnewsnetwork.org^$csp=script-src 'self' 'unsafe-inline' 'unsafe-eval' *.googletagservices.com *.wp.com *.air.tv *.addthis.com *.cloudflare.com *.facebook.net *.facebook.com *.gstatic.com *.youtube.com *.ytimg.com *.google.com *.googletagmanager.com *.instagram.com +barefeetonthedashboard.com,bargainbriana.com,betterbuttchallenge.com,bike-urious.com,blwideas.com,eartheclipse.com,entertainment-focus.com,fanatik.com.tr,foreverconscious.com,foreversparkly.com,getdatgadget.com,goodnewsnetwork.org,greenarrowtv.com,hbculifestyle.com,heysigmund.com,hodgepodgehippie.com,homestratosphere.com,indesignskills.com,katiescucina.com,knowyourphrase.com,letsworkremotely.com,lizs-early-learning-spot.com,ledauphine.com,leprogres.fr,milliyet.com.tr,mjsbigblog.com,pinoyrecipe.net,prepared-housewives.com,redcarpet-fashionawards.com,republicain-lorrain.fr,savespendsplurge.com,savingadvice.com,shutupandgo.travel,spring.org.uk,stevivor.com,tamaratattles.com,tastefullyeclectic.com,theavtimes.com,thechroniclesofhome.com,thisisourbliss.com,tinyqualityhomes.org,turtleboysports.com,ultimateninjablazingx.com,universfreebox.com,utahsweetsavings.com,vgamerz.com,wheatbellyblog.com,yummytummyaarthi.com##+js(acs, Date, ='\x) +barefeetonthedashboard.com,bargainbriana.com,betterbuttchallenge.com,bike-urious.com,blwideas.com,eartheclipse.com,entertainment-focus.com,fanatik.com.tr,foreverconscious.com,foreversparkly.com,getdatgadget.com,goodnewsnetwork.org,greenarrowtv.com,hbculifestyle.com,heysigmund.com,hodgepodgehippie.com,homestratosphere.com,indesignskills.com,katiescucina.com,knowyourphrase.com,letsworkremotely.com,lizs-early-learning-spot.com,ledauphine.com,leprogres.fr,milliyet.com.tr,mjsbigblog.com,pinoyrecipe.net,prepared-housewives.com,redcarpet-fashionawards.com,republicain-lorrain.fr,savespendsplurge.com,savingadvice.com,shutupandgo.travel,spring.org.uk,stevivor.com,tamaratattles.com,tastefullyeclectic.com,theavtimes.com,thechroniclesofhome.com,thisisourbliss.com,tinyqualityhomes.org,turtleboysports.com,ultimateninjablazingx.com,universfreebox.com,utahsweetsavings.com,vgamerz.com,wheatbellyblog.com,yummytummyaarthi.com##+js(acs, document.head.appendChild, ='\x) +barefeetonthedashboard.com,bargainbriana.com,betterbuttchallenge.com,bike-urious.com,blwideas.com,eartheclipse.com,entertainment-focus.com,fanatik.com.tr,foreverconscious.com,foreversparkly.com,getdatgadget.com,goodnewsnetwork.org,greenarrowtv.com,hbculifestyle.com,heysigmund.com,hodgepodgehippie.com,homestratosphere.com,indesignskills.com,katiescucina.com,knowyourphrase.com,letsworkremotely.com,lizs-early-learning-spot.com,ledauphine.com,leprogres.fr,milliyet.com.tr,mjsbigblog.com,pinoyrecipe.net,prepared-housewives.com,redcarpet-fashionawards.com,republicain-lorrain.fr,savespendsplurge.com,savingadvice.com,shutupandgo.travel,spring.org.uk,stevivor.com,tamaratattles.com,tastefullyeclectic.com,theavtimes.com,thechroniclesofhome.com,thisisourbliss.com,tinyqualityhomes.org,turtleboysports.com,ultimateninjablazingx.com,universfreebox.com,utahsweetsavings.com,vgamerz.com,wheatbellyblog.com,yummytummyaarthi.com##+js(aopr, __eiPb) +dreamfancy.org##+js(nostif, nextFunction, 250) +dreamfancy.org##+js(nowoif) +dreamdth.com##+js(aopw, wutimeBotPattern) +dreamdth.com##+js(set, adBlockDetected, false) +dreamdth.com##+js(acs, $, show) +pornhub.*##+js(nostif, adsbytrafficjunkycontext) +pornhub.*##+js(acs, Object.defineProperty, trafficjunky) +pornhub.*##+js(nowoif, ads) +pornhub.*##.uploadBtnContentSpicevids +pornhub.*##.js-becomeUviuFanBtn +pornhub.*##a[href^="https://www.uviu.com"] +pornhub.*##.livesex +pornhub.*##a[href^="https://landing.spicevids.com"] +pornhub.*##[data-event="header_paid_tabs"] +pornhub.*##.joinNowCPPBtn +pornhub.*##.js_joinNowCPPBtn +pornhub.*##.mgp_overlayContainer +||phncdn.com/pics/promobanners/ +pornhub.*##.js-adsRemoveButton +pornhub.*##.noBottom +pornhub.*##.ad-tabSplit +pornhub.*##.watchpageAd +pornhub.*##.middleAdContainer +pornhub.*##.js-becomeFancentroFanBtn +pornhub.*##.video-wrapper > #player ~ .hd.clear +pornhub.*##.sniperModeEngaged +pornhub.*##a[href^="http://ads.trafficjunky.net/"] +pornhub.*##.realsex +pornhub.*###pb_block +pornhub.*##.menuLinkDiv:has(a[href^="https://www.spicevids.com/"]) +pornhub.*##div.halfWidth.menuLink:has(a[href^="https://fancentro.com/"]) +pornhub.*##a[href^="https://fancentro.com"] +pornhub.*##+js(set, page_params.holiday_promo, true) +pornhub.*###relatedVideosCenter > .wrapVideoBlock +pornhub.*##+js(set, abp1, 1) +@@||stltoday.com^$ghide +stltoday.com##.dfp-ad +stltoday.com##.tnt-ads-container +subdivx.com##+js(cookie-remover, ref_cookie) +subdivx.com###taboola-below-article-thumbnails +||karconsulting.us^$3p +! thevidhd popups +thevidhd.*##+js(aopw, smrtSB) +thevidhd.*##+js(nowebrtc) +||thevidhd.*/sw.js$script,1p +thevidhd.*##.video_batman +thevidhd.*##h1 +||ads.adrise.tv^$3p +.mp4$media,redirect=noopmp3-0.1s,domain=tubitv.com +/cdn.*/ads.$badfilter +cuatro.com,mitele.es,telecinco.es##+js(aopr, $REACTBASE_STATE.serverModules.push) +@@||wupfile.com^$ghide +wupfile.com##[id*=ScriptRoot] +! techperiod.com anti adb +@@||techperiod.com^$ghide +techperiod.com##ins.adsbygoogle +acefile.co##+js(aopw, popup_ads) +acefile.co##.textwidget +acefile.co###btmx +lne.es##+js(nostif, ipod) +diaridegirona.cat,diariodeibiza.es,diariodemallorca.es,diarioinformacion.com,eldia.es,emporda.info,farodevigo.es,laopinioncoruna.es,laopiniondemalaga.es,laopiniondemurcia.es,laopiniondezamora.es,laprovincia.es,levante-emv.com,mallorcazeitung.es,regio7.cat,superdeporte.es##+js(set, pr_okvalida, true) +@@||wikitrik.com^$ghide +@@||wikitrik.com/favicon.ico$image,1p +! fix seireshd.com anti adb +seireshd.com##+js(acs, btoa, href) +serieslandia.com##+js(aopr, scriptwz_url) +@@||seireshd.com^$ghide +||adsrt.com^$3p +! fix pivigames.blog ads & popup +pivigames.blog##+js(acs, enlace) +playpaste.com##+js(acs, document.addEventListener, Popup) +playpaste.com##+js(set, $.ajax, trueFunc) +||playpaste.com/sw.js$script,1p +ktmx.pro##+js(aeld, load, 2000) +@@||darkw.pl^$ghide +! thecrazytourist .com popunder +thecrazytourist.com##+js(acs, document.getElementsByTagName, appendChild) +||sp.booking.com^$domain=thecrazytourist.com +megatube.xxx##+js(aopr, BetterJsPop) +||megatube.xxx^$frame,1p +||megatube.xxx/atrm/*$script,1p +@@||megatube.xxx/atrm/s/s/js/m/pr-before.js$script,1p +dailydemocrat.com,montereyherald.com,orovillemr.com,record-bee.com,redbluffdailynews.com,reporterherald.com,thereporter.com,timescall.com,timesheraldonline.com,ukiahdailyjournal.com##+js(set, CnnXt.Event.fire, noopFunc) +@@||maggotdrowning.com/forums/js/siropu/am/ads.min.js$script,1p +pornult.com##+js(acs, Math.random, Exoloader) +pornult.com##+js(nowoif) +pornult.com##+js(nostif, offsetWidth) +pornult.com##+js(aopr, exoJsPop101) +pornult.com##+js(aopr, btoa) +||pornult.com/sw.js$script,1p +pornult.com##.sexshp +||pornult.com/*/custom_vast/$media,1p +joyn.de,joyn.at,joyn.ch##+js(no-fetch-if, zomap.de) +@@||ad.71i.de/global_js/AppConfig/Joyn/desktop.json$xhr,domain=joyn.de +@@||adition.com/1x1.gif$xhr,domain=joyn.de +@@||aws.route71.net/ad-$script,domain=joyn.de +@@||research.de.com/bb-mx/prime$xhr,domain=joyn.de +@@||script.ioam.de/iam.js$script,domain=joyn.de +@@||securepubads.g.doubleclick.net/pcs/view/*$xhr,domain=joyn.de +dictionnaire-medical.net##+js(nostif, nextFunction, 2000) +@@||money.it^$ghide +money.it##.gptslot +nonktube.com##+js(nowoif) +nonktube.com##+js(aopr, decodeURI) +@@||kenkenpuzzle.com/assets/*$xhr,1p +izzylaif.com##+js(acs, jQuery, undefined) +@@||gelbeseiten.de^$script,1p +movs4u.*##+js(aeld, , _0x) +||i.imgur.com/*.gif$image,domain=movs4u.* +collater.al##+js(aopr, adsanity_ad_block_vars) +@@||get-click2.blogspot.com^$ghide +get-click2.blogspot.com##[href^="http://bit.ly"] +mousecity.com##.banner-box-squareb +mousecity.com##.banner-box +proplanta.de##+js(nostif, /$|adBlock/) +@@||paraphrasing-tool.com^$script,1p +beautypackaging.com##+js(aopw, adblockerpopup) +uptomega.*##+js(nano-stb, seconds) +*$3p,denyallow=bootstrapcdn.com|cloudflare.net|fontawesome.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|uptomega.com,domain=uptomega.* +uptomega.*##.ads +*$image,domain=grafixfather.com,redirect-rule=1x1.gif +@@||grafixfather.com^$ghide +grafixfather.com##ins.adsbygoogle +@@||league-funny.com^$ghide +league-funny.com##[id^="div-gpt-ad-"] +@@||vacation-et.work^$ghide +hotgameplus.com##+js(aopw, downloadJSAtOnload) +puhutv.com##+js(aopw, adblockCheck) +megavideo.*##+js(nowoif) +*$script,3p,denyallow=cloudflare.com|disqus.com|fastlylb.net|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|unpkg.com,domain=megavideo.* +uwatchfree.*,hydrax.*##+js(aeld, , _0x) +uwatchfree.*##[href*="deceittoured.com"] +uwatchfree.*##.hd-links +uwatchfree.*##center +! watch4hd. net (ex .com) +watch4hd.*##+js(aopr, open) +watch4hd.*##.btn-block.btn +! altadefinizione .cloud anti adb +||altadefinizone.*^$popup,3p +*$popunder,3p,domain=alemannia-aachen.de +alemannia-aachen.de###grid-image-head +alemannia-aachen.de##.b-error +||hitadsmedia.com^$3p +5movies.*##+js(aopr, mm) +5movies.*###cookiedata +5movies.*##.btn-lg +5movies.*###content-embed:style(display: block!important) +5movies.*##.streamaly +5movies.*##.les-title:has-text(HD) +||affforce.com^$doc,popup +01fmovies.com##+js(aopr, AaDetector) +01fmovies.com##+js(aeld, DOMContentLoaded, checkVPN) +||01fmovies.com/mmmasdfl-asd$xhr,1p +01fmovies.com##[src^="/addons/"] +01fmovies.com##.jw-logo +01fmovies.com##.ico.close +||autotracer.org/cnc/?*=rightcol$xhr,1p +||vectorization.org/cnc/?*=rightcol$xhr,1p +oranhightech.com##+js(aopw, cancelAdBlocker) +@@||nosey.com^$ghide +nosey.com##.unreel-player-overlay +tusfiles.com##+js(aopw, Fingerprint2) +tusfiles.com##+js(nowoif) +||tusfiles.com/sw.js$script,1p +gdtot.*,tusfiles.com##+js(acs, document.createElement, 'script') +*$3p,denyallow=cloudflare.com|fastly.net|support.send.cm|tusfiles.net|zencdn.net,domain=tusfiles.com +gdtot.*##+js(aopr, open) +@@||lapresse.ca^$ghide +lirik3satu.blogspot.com##+js(aeld, load, 2000) +! mangovideo's sites +adultdvdparadise.com,freeomovie.info,fullxxxmovies.me,mangoporn.co,netflixporno.net,pandamovie.*,pandamovies.me,pornkino.cc,pornwatch.ws,speedporn.*,watchfreexxx.pw,watchpornfree.*,watchxxxfree.pw,xtapes.me,xxxparodyhd.net,xxxscenes.net,xxxstream.me##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +adultdvdparadise.com,freeomovie.info,fullxxxmovies.me,mangoporn.co,netflixporno.net,pandamovie.*,pandamovies.me,pornkino.cc,pornwatch.ws,speedporn.*,watchfreexxx.pw,watchpornfree.*,watchxxxfree.pw,xtapes.me,xxxparodyhd.net,xxxscenes.net,xxxstream.me##+js(nowoif) +pandamovie.*,pandamovies.me,pornkino.cc,speedporn.*###tracking-url +pornwatch.ws,xxxparodyhd.net,xxxstream.me##.btn-lg.btn-block.btn +pandamovie.*,pandamovies.me,pornkino.cc,speedporn.*,xxxscenes.net##.video-block-happy-absolute:upward(.order-1) +pandamovie.*,pandamovies.me,pornkino.cc,speedporn.*,xxxscenes.net##.happy-player-beside, .happy-section, .widget_execphp:has-text(/Advertisement|ExoLoader/) +gamefront.com##+js(acs, $, AdBlock) +gamefront.com##+js(nano-stb, , 10000) +!#if env_chromium +washingtonpost.com##+js(acs, Promise, 'overlay') +washingtonpost.com##+js(acs, document.createElement, 'overlay') +washingtonpost.com##+js(rmnt, script, /\badblock\b/) +!#endif +washingtonpost.com##.remainder-content .db-ns.dn +washingtonpost.com##html[style="overflow: hidden;"]:style(overflow: auto !important;) +washingtonpost.com##.outbrain-wrapper +washingtonpost.com##.bb.pt-0 +washingtonpost.com##div.grey-bg +washingtonpost.com##section > div:has-text(/^AD$/) +washingtonpost.com##:xpath('//*[(text()="AD")]/..') +washingtonpost.com##.w-100:has-text(Advertisement) +washingtonpost.com##[data-testid="article-body-card"]:has(> [data-qa="article-body-ad"]) +!#if env_mobile +washingtonpost.com##div.mb-lg.mt-lg.pb-lg.pt-lg.bc-gray-lighter.bh.b.justify-center.items-center.flex.dn-hp-sm-to-mx +washingtonpost.com###mobile-footer-ad-wrapper +!#endif +rawstory.com##+js(aopr, setNptTechAdblockerCookie) +@@||rawstory.com^$ghide +rawstory.com##.rs_ad_block +rawstory.com##.amp-unresolved +rawstory.com##.proper-ad-unit +rawstory.com##.alt_ad_block +rawstory.com##.connatix-holder +rawstory.com##ins.adsbygoogle +rawstory.com##[class^="mgid_"] +rawstory.com###rc-widget-d9572e +rawstory.com##[id^="spink_appeal_box"] +gonzoporn.cc,onlinexxx.cc,tvporn.cc##+js(acs, decodeURI, decodeURIComponent) +gonzoporn.cc,onlinexxx.cc,tvporn.cc##+js(aopr, exoJsPop101) +*$script,redirect-rule=noopjs,domain=linternaute.com +samash.com##+js(acs, document.getElementById, for-variations) +godtube.com##+js(aopr, googletag) +||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,redirect=noopjs,domain=rollingstone.it +ftopx.com##+js(aopr, exoJsPop101) +ftopx.com##+js(aopr, ExoLoader.addZone) +ftopx.com##+js(aopr, loadTool) +@@||ifc.com^$ghide +techhx.com##+js(set, google_jobrunner, true) +vidstream.*##+js(nowoif, !api?call=, 10, obj) +||psaiceex.net^ +watchgameofthrones.*##+js(aopr, AaDetector) +watchgameofthrones.*##+js(nobab) +watchgameofthrones.*###keeper2 +mad4wheels.com##+js(nostif, adsbygoogle) +mad4wheels.com##+js(aopw, adblock) +dailylocal.com##+js(set, CnnXt.Event.fire, noopFunc) +! marketmovers.it anti adb +marketmovers.it##+js(aeld, load, 2000) +marketmovers.it##^script:has-text(google_ad_client) +gsurl.*##+js(aeld, mousedown, preventDefault) +cnbc.com##+js(set, cnbc.canShowAds, true) +cnbc.com##[class^="CreditCardCalloutWildcard-styles-select"]:has([href*="/?lid="]) +||js.allporncomic.com^ +allporncomic.com##+js(aopw, ExoSupport) +allporncomic.com##+js(aopr, exoJsPop101) +allporncomic.com##.ad +allporncomic.com##[href^="https://s.zlink0.com/"], [href^="https://s.zline0.com/"] +*$script,3p,domain=allporncomic.com,denyallow=cloudflare.com +||pmdipads-a.akamaihd.net^$media,redirect=noopmp3-0.1s +@@||reactgo.com^$ghide +reactgo.com##ins.adsbygoogle +! pharmaguideline.com anti adb +pharmaguideline.com##+js(aeld, load, 2000) +@@||novelgo.id^$ghide +novelgo.id##ins.adsbygoogle +lyricsongation.com##+js(nobab) +@@||finalboss.io^$ghide +finalboss.io##ins.adsbygoogle +vev.*,vidop.*##+js(aeld, /^(?:click|mousedown|mouseup)$/, di()) +vev.*,vidop.*,vidup.*##+js(set, console.clear, trueFunc) +vev.*,vidup.*##+js(nowoif, /^/, 1) +@@||vev.*^$ghide +@@||vidop.*^$ghide +@@||vidup.*^$ghide +*$frame,3p,domain=vev.red|vidop.icu|vidup.io +||vev.*/sw.js$script,1p +||vidop.*/sw.js$script,1p +||vidup.*/sw.js$script,1p +*$script,domain=vidup.io,redirect-rule=noopjs +vidup.*##.sponsored-container +vev.*##.vjs-overlay +vev.*##body > div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"] +okanime.*##+js(acs, $, getElementById) +okanime.*##+js(nowebrtc) +okanime.*##+js(nowoif) +okanime.*###calque +besthugecocks.com##+js(aopr, document.dispatchEvent) +pipocamoderna.com.br##+js(aopw, adBlockDetected) +textograto.com##+js(nostif, ()) +rainanime.*##+js(aopr, loadRunative) +rainanime.*##.fake_player +||watson.de/js/tisoomi.js$script,1p +watson.de##[data-ad] +activistpost.com##+js(aopr, XMLHttpRequest) +activistpost.com##+js(aopr, String.fromCharCode) +||activistpost.com^$script,1p +@@||activistpost.com/wp-$script,1p +hackedonlinegames.com##+js(nostif, _0x) +crunchyroll.com##+js(json-prune, value.media.ad_breaks) +crunchyroll.com##+js(nosiif, onAdVideoStart) +crunchyroll.com###template_skin_leaderboard +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=crunchyroll.com,important +@@||g-status.com^$ghide +g-status.com##ins.adsbygoogle +g-status.com##.topadv_placeholder +arcadeprehacks.com##+js(acs, Math.random, zonefile) +bilasport.net##+js(aopr, pwparams) +! starachowice .eu anti adb +@@||starachowice.eu^$ghide +! iporntv .net popups +iporntv.net##+js(acs, document.createElement, pop) +readcomicsonline.ru##+js(acs, document.createElement, "script") +@@||readcomicsonline.ru^$ghide +yogitimes.com##+js(aopr, fuckAdBlock) +! games4king https://github.com/NanoMeow/QuickReports/issues/19 +games4king.com###wrapped-content:style(display:inherit!important) +games4king.com###ava-game_container:style(display:inherit!important) +games4king.com##[id^="leaderboard"] +games4king.com##[class^="ads"] +games4king.com##[href^="https://play.google.com/"] +games4king.com##+js(ra, target) +! other https://github.com/NanoMeow/QuickReports/issues/19 +##.wgAdBlockMessage +||cdn.pushcrew.com^$3p +4share.vn##+js(nano-stb) +4share.vn##+js(nowoif) +firefaucet.win##+js(nofab) +firefaucet.win##+js(set, firefaucet, true) +@@||firefaucet.win^$ghide +firefaucet.win##[class^="sticky-ad"] +||adservice.google.*/adsid/integrator.js$xhr,redirect=nooptext,domain=tubia.com +odkrywamyzakryte.com##+js(nofab) +xtapes.porn##.spot:has(> iframe[src="https://xtapes.porn/adapt.html"]) +||xtapes.porn/adapt.html +0xxx.ws##+js(acs, decodeURI, decodeURIComponent) +0xxx.ws##+js(nowoif) +! gocolumbialions.com anti adb +@@||gocolumbialions.com^$ghide +||gocolumbialions.com/components/js/analytics.js$script,1p,redirect=noopjs +! cle0desktop.blogspot.com anti adb +cle0desktop.blogspot.com##+js(nostif, nextFunction, 2000) +cle0desktop.blogspot.com##+js(aeld, , pop) +! voyageforum.com anti adb +voyageforum.com##+js(nostif, AdBlock) +artribune.com##+js(aost, Object, mark) +artribune.com##^script:has-text(window.adsbygoogle) +interfans.org##+js(acs, $, AdBlock) +interfans.org##+js(nobab) +xclusivejams.*##+js(aopr, decodeURI) +||xclusivejams.*/sw.js$script +prad.de##+js(nostif, stop-scrolling) +juba-get.com##+js(aopr, detectAdBlock) +chatta.it##+js(nostif, Adv) +up-load.io##+js(noeval) +up-load.io##+js(nostif, nextFunction, 2000) +||up-load.io/sw.js$xhr,1p +*$3p,denyallow=cloudflare.net|fontawesome.com|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|up-load.download,domain=up-load.io +up-load.io##.ads +! ketubanjiwa.com anti adb +ketubanjiwa.com##+js(nostif, blockUI, 2000) +@@||jwpcdn.com/player/plugins/googima/v/*/googima.js$script,domain=viu.tv +! tf1 .fr +@@||tf1.fr^$ghide +||delivery.tf1.fr/pub$media,redirect=noopmp3-0.1s,domain=tf1.fr +||dnl-adv-ssl.tf1.fr/$media,redirect=noopmp3-0.1s,domain=tf1.fr +*$xhr,redirect-rule=nooptext,domain=tf1.fr +tf1.fr##+js(no-fetch-if, adsafeprotected) +@@||footprint.net^$xhr,domain=prod-player.tf1.fr +@@||vendorlist.consensu.org/vendorlist.json$xhr,domain=tf1.fr +@@||cdn.tagcommander.com/cmp-api/cmp.js$script,domain=tf1.fr +||slpubmedias.tf1.fr^$media,1p,redirect=noopmp3-0.1s +f1livegp.net##+js(nowebrtc) +f1livegp.net###blockblockA +reverso.net##+js(acs, $, adblock) +reverso.net##.vdahead +reverso.net##.bottom-rca +reverso.net##.wrapperW + .sticky +smutr.com##+js(popads-dummy) +smutr.com##+js(set, flashvars.adv_pre_vast, '') +smutr.com##+js(set, flashvars.popunder_url, undefined) +*$popunder,domain=smutr.com,3p +! yuvutu .com popunder +yuvutu.com##+js(acs, String.prototype.charAt) +@@||lnk2.cc^$script,1p +lnk2.cc##+js(aeld, , '\') +lnk2.cc##+js(nano-stb) +ucptt.com##+js(nowoif) +||loadshare.org/custom/*$media,redirect=noopmp4-1s,important +kachelmannwetter.com,meteologix.com##.dkpw-billboard-margin +kachelmannwetter.com,meteologix.com,weather.us##.dkpw-billboard-margin-fixed +kachelmannwetter.com##[href="https://pflotsh.com"] +kachelmannwetter.com###meteosafe +meteologix.com##.md-billboard-sp +meteologix.com,weather.us##.mdcss-desktop +kachelmannwetter.com,meteologix.com,weather.us##.kw-ad-right +meteologix.com,weather.us##.gad-billboard-pos +weather.us##.dkpw-abp +@@||meteologix.com^$ghide +@@||weather.us^$ghide +||mairdumont.com^$script,redirect-rule=noopjs,domain=kachelmannwetter.com +||md-nx.com^$script,redirect-rule=noopjs,domain=meteologix.com|weather.us +techperiod.com##+js(set, blockAdBlock, true) +4movierulz.*##+js(aeld, , _0x) +losmovies.*##.aPlaceHolder +! sportlemons. net / org popups / ads +sportlemon.*,sportlemons.*,sportlemonx.*##+js(aopr, decodeURI) +sportlemons.*###happyDog +sportlemons.*###lazyCat +sportlemonx.com##.tallstreambanner +||bitcoinsports.org^$3p +xxx-image.com##+js(aopr, adsBlocked) +xxx-image.com##+js(aopr, open) +xxx-image.com##+js(noeval) +xxx-image.com##+js(aopr, XMLHttpRequest) +xxx-image.com##+js(aopr, Date.prototype.toUTCString) +xxx-image.com##+js(ra, oncontextmenu) +xxx-image.com##.footer-container +oscobo.com##.banotset:upward(3) +! hulkpop.com -> kpopjjang.com +kpopjjang.com##+js(aopr, decodeURIComponent) +kpopjjang.com##+js(aopr, Base64) +! exe.io shorteners +cuts-url.com,eio.io,exe.io,exe.app##+js(aopr, app_vars.force_disable_adblock) +exe.io,exe.app##+js(nowoif) +cuts-url.com,eio.io,exe.app##+js(set, blurred, false) +/sw.js$script,1p,domain=eio.io|exe.app +exey.io##+js(acs, encodeURIComponent, XMLHttpRequest) +exey.io##+js(set, blurred, false) +eio.io,exe.app##+js(aopr, adBlockDetected) +exey.io##+js(acs, disableItToContinue) +@@||exe.app^$ghide +exe.app,eio.io,ufacw.com##+js(no-fetch-if, google) +exe.io##+js(aopr, parcelRequire) +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=exey.io +@@||pagead2.googlesyndication.com/pagead/managed/js/adsense/$script,domain=exey.io +/ad-m.js$script,1p +||measur-d.com^$3p +exe.app##.banner-page > .short +ufacw.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) +ufacw.com###wpsafe-generate, #wpsafe-link:others() +exeo.app##+js(set, blurred, false) +nsfw247.to##+js(nostif, mdpDeBlocker) +mzee.com##+js(aopr, performance) +! automobiledimension.com anti adb +automobiledimension.com##.avisdiv +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=mysterious-dev.com +daftporn.com##+js(aopr, document.dispatchEvent) +daftporn.com###lay2Blur +bravoerotica.com##+js(aopr, ExoLoader.serve) +bravoerotica.net##+js(set, flashvars.adv_pause_html, '') +bravoerotica.net##+js(set, flashvars.adv_start_html, '') +bravoerotica.net##.place +bravoerotica.net##.table +fullhdxxx.com##+js(aeld, popstate) +fullhdxxx.com##+js(aopr, ExoLoader) +fullhdxxx.com##+js(set, adv, true) +fullhdxxx.com##+js(aopr, btoa) +fullhdxxx.com,viptube.com##+js(nowoif) +fullhdxxx.com###video-slider +m.viptube.com##+js(aopw, mobilePop) +madchensex.com##+js(aopr, ExoLoader) +madchensex.com###side-spot +xasiat.com##+js(aopr, exoJsPop101) +xasiat.com##+js(aopr, ExoLoader.serve) +||rusexclips.com^$3p +redporno.cz##+js(aopr, ExoLoader.serve) +redporno.cz##.right +vintageporntubes.com##+js(aopr, ExoLoader.serve) +vintageporntubes.com##+js(aeld, getexoloader) +vintageporntubes.com##.VPT_player_ads +italianoxxx.com##+js(aopr, document.dispatchEvent) +||scopateitaliane.it^$3p +collegehdsex.com,lustylist.com##+js(aopr, document.dispatchEvent) +yumstories.com##+js(aopr, document.dispatchEvent) +18-teen-porn.com,69teentube.com,girlshd.xxx,home-xxx-videos.com,orgasmlist.com,teensextube.xxx##+js(aopr, document.dispatchEvent) +xxxvideos247.com##+js(aopr, ExoLoader.serve) +pornyfap.com##+js(aopr, document.dispatchEvent) +young-pussy.com##+js(aopr, ExoLoader.serve) +young-pussy.com###playerOverlay +extremereportbot.com##+js(nostif, /_0x|debug/) +extremereportbot.com##+js(nosiif, /_0x|debug/) +@@||extremereportbot.com^$ghide +*$script,redirect-rule=noopjs,domain=extremereportbot.com +||googleapis.com/discovery/$xhr,domain=extremereportbot.com +@@||pagead2.googlesyndication.com^*/show_ads_impl.js$script,domain=extremereportbot.com +@@||doubleclick.net/pagead/*$frame,domain=extremereportbot.com +@@||googlesyndication.com^$xhr,domain=extremereportbot.com +tatsumi-crew.net##+js(nobab) +tatsumi-crew.net###HTML2 +your-daily-girl.com##+js(aopr, adtoniq) +nudistube.com##+js(aopr, document.dispatchEvent) +uporno.xxx##+js(aopr, document.dispatchEvent) +uporno.xxx##.banner +ultrateenporn.com##+js(aopr, document.dispatchEvent) +gosexpod.com##+js(aeld, click, my_inter_listen) +gosexpod.com##+js(aopr, document.dispatchEvent) +gosexpod.com##.zzz-ddnotice +gosexpod.com##.content__block[style^="direction"] +gosexpod.com##.video-headline +gosexpod.com##center +gosexpod.com##.natsc +gosexpod.com##.im_outer_x:upward(2) +gosexpod.com##^script:has-text(myreadCookie/) +!#if env_chromium +gosexpod.com##+js(rmnt, script, myreadCookie) +!#endif +al4a.com,grannysex.name,porntb.com,scopateitaliane.it,sexbox.online,teenpornvideo.sex,twatis.com##+js(aopr, document.dispatchEvent) +/dao/dao-fel.js$script,1p +lonely-mature.com##+js(aopr, EviPopunder) +pornclassic.tube,tubepornclassic.com##+js(acs, adver) +tubepornclassic.com##+js(acs, document.createElement, tcpusher) +tubepornclassic.com##+js(aeld, , window.open) +tubepornclassic.com##+js(aopr, preadvercb) +tubepornclassic.com##+js(nosiif, complete, 50) +tubepornclassic.com##+js(nosiif, document.readyState) +pornclassic.tube,tubepornclassic.com##+js(set, prerollMain, undefined) +*$frame,3p,domain=pornclassic.tube|tubepornclassic.com +*$popunder,3p,domain=pornclassic.tube|tubepornclassic.com +pornclassic.tube,tubepornclassic.com##.content > div > .container + div +pornclassic.tube,tubepornclassic.com##div:has(> a[href^="http://www.theclassicporn.com/"]) +pornclassic.tube,tubepornclassic.com##span[style="display:flex !important"] > div:first-child +pornclassic.tube,tubepornclassic.com##.video-page__content > div.left + div[class]:last-child +pornclassic.tube,tubepornclassic.com##div[style="display:flex !important"] > div +pornclassic.tube,tubepornclassic.com##.video-page__player + div[class] > div[class] +pornclassic.tube,tubepornclassic.com##.partners-wrap + div[class] +pornclassic.tube,tubepornclassic.com##section[style="padding: 20px;"] +pornclassic.tube,tubepornclassic.com##div[style="width: 300px; height: 250px;"] +flashingjungle.com##+js(aeld, /^(click|mousedown|mousemove|touchstart|touchend|touchmove)/, system.popunder) +flashingjungle.com##+js(aopr, document.dispatchEvent) +flashingjungle.com##.advertising:upward(2) +pussyspot.net,wildpictures.net##+js(acs, document.querySelectorAll, popMagic) +pussyspot.net,wildpictures.net##+js(aopr, decodeURI) +pussyspot.net,wildpictures.net##[href^="http://ucam.xxx/"] +pussyspot.net,wildpictures.net##[href^="https://easygamepromo.com/"] +8boobs.com,babesinporn.com,hotstunners.com,mainbabes.com,mysexybabes.com,pleasuregirl.net,rabbitsfun.com,sexybabesz.com,silkengirl.*##+js(aopr, ExoLoader.addZone) +8boobs.com,babesinporn.com,boobgirlz.com,fooxybabes.com,hotstunners.com,jennylist.xyz,jumboporn.xyz,mainbabes.com,mysexybabes.com,nakedbabes.club,pleasuregirl.net,rabbitsfun.com,sexybabesz.com,silkengirl.*,vibraporn.com,zazzybabes.com,zehnporn.com##+js(aopr, loadTool) +8boobs.com,babesinporn.com,bustybloom.com,hotstunners.com,nudebabes.sexy,pleasuregirl.net,rabbitsfun.com,silkengirl.*##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +babesaround.com,dirtyyoungbitches.com,grabpussy.com,join2babes.com,nightdreambabe.com,novoglam.com,novohot.com,novojoy.com,novoporn.com,novostrong.com,pbabes.com,pussystate.com,redpornblog.com,rossoporn.com,sexynakeds.com,thousandbabes.com##+js(aopr, AaDetector) +babesinporn.com##.topbanner +boobgirlz.com##.widget-column:has(> center > [href="https://boobgirlz.com/istripper"]) +nakedneighbour.com##.banner:upward(.block) +/sex.gif$domain=epikporn.com|erotichdworld.com|guruofporn.com|jesseporn.xyz|jumboporn.xyz|kendralist.com|steezylist.com +/yep.gif$domain=abellalist.com|doseofporn.com|freyalist.com|lizardporn.com|moozporn.com|zehnporn.com +/flr.js$domain=8boobs.com|angelgals.com|babesexy.com|babesinporn.com|fooxybabes.com|hotbabeswanted.com|hotstunners.com|mainbabes.com|nakedbabes.club|nakedgirlsroom.com|nudebabes.sexy|pleasuregirl.net|rabbitsfun.com|sexybabes.club|sexybabesart.com|silkengirl.*|wantedbabes.com +/images/*/b/*$image,redirect=2x2.png,domain=babesandbitches.net|babesaround.com|babesbang.com|babeuniversum.com|grabpussy.com|join2babes.com|nightdreambabe.com|novojoy.com|novoporn.com|novostrong.com|pbabes.com|pussystate.com|redpornblog.com|rossoporn.com|sexynakeds.com +/images/*/banners/*$image,redirect=2x2.png,domain=100bucksbabes.com|8boobs.com|babeimpact.com|babesandgirls.com|babesaround.com|babesinporn.com|babesmachine.com|bustybloom.com|chickteases.com|decorativemodels.com|dirtyyoungbitches.com|exgirlfriendmarket.com|fooxybabes.com|girlsofdesire.org|glam0ur.com|hotstunners.com|livejasminbabes.net|morazzia.com|nakedneighbour.com|novoglam.com|pleasuregirl.net|rabbitsfun.com|sexyaporno.com|sexykittenporn.com|silkengirl.*|slutsandangels.com|theomegaproject.org|thousandbabes.com|vibraporn.com|wantedbabes.com|wildfanny.com +/istripper/istripper_$image,domain=8boobs.com|babesinporn.com|fooxybabes.com|hotstunners.com|mainbabes.com|pleasuregirl.net|rabbitsfun.com|silkengirl.*|wantedbabes.com +/smallfr/*$frame,domain=babeimpact.com|decorativemodels.com|sexykittenporn.com +/smallfr2/*$frame,domain=babeimpact.com|decorativemodels.com +/\.com\/[_0-9a-zA-Z]+\.jpg$/$image,1p,domain=hottystop.com +||zehnporn.com/img/12221.gif +/gofd_fl.js +babeuniversum.com##.aw +babeuniversum.com##.galleryad +redpornblog.com###ads +nightdreambabe.com##.banner_place +girlsofdesire.org##a[href^="/out"] +silkengirl.com##.spots +hotbabeswanted.com,nakedbabes.club##.deskbanner +100bucksbabes.com,babesandgirls.com,morazzia.com##.vda +babesaround.com,nightdreambabe.com##.section-bustyMedinaq > a[href^="/click/o/"] +novojoy.com##.ownerbanner +pussystate.com##li[style="clear:both;float:none;width:600px;margin:0;overflow:hidden;margin-left:-5px;"] +rabbitsfun.com##.gallery-banner +rabbitsfun.com##.picture-banner +vibraporn.com##.topad +fresh-babes.com###XXXGirls +girlsofdesire.org##div[data-width="600"] +novoporn.com##a[href^="/click/o/"] +sensualgirls.org##a[href^="http://refer.ccbill.com/cgi-bin/clicks.cgi?"] +nudevista.link##.sidebar-bn +nudevista.link##.bnblog +nudevista.link##.sidban +angelgals.com,nakedbabes.club##+js(acs, loadTool, popping) +angelgals.com,nakedbabes.club##+js(aopr, ExoLoader.addZone) +angelgals.com##+js(aeld, getexoloader) +babesexy.com,hotbabeswanted.com,nakedgirlsroom.com,nudebabes.sexy,sexybabes.club,sexybabesart.com##+js(aopr, ExoLoader.addZone) +babesexy.com##+js(aeld, getexoloader) +sexybabes.club##+js(acs, loadTool, popping) +/backend_loader$script +cherrynudes.com##+js(acs, loadTool, popping) +cherrynudes.com##[href^="http://links.verotel.com/"] +cherrynudes.com##[href^="http://www.g4mz.com/"] +hegreartnudes.com##+js(acs, loadTool, popping) +cherrynudes.com##[href^="http://wcrgl.freeadult.games/hit.php"] +fetishburg.com##+js(aopr, document.dispatchEvent) +fetishburg.com##div.spot +privateindianmovies.com##+js(aopr, document.dispatchEvent) +soyoungteens.com##+js(aopr, document.dispatchEvent) +doseofporn.com##+js(acs, loadTool, popping) +@@||receivetxt.com^$ghide +@@||properhacks.weebly.com^$ghide +space.tribuntekno.com##+js(aopw, adBlockDetected) +flashgirlgames.com,onlinesudoku.games##+js(set, ads, true) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=flashgirlgames.com|onlinesudoku.games +otakukan.com##+js(aeld, load, appendChild) +||otakukan.com/sw.js$script,1p +||cdn.jsdelivr.net^*/arlinablock.js$script +@@||otakukan.com^$ghide +otakukan.com##ins.adsbygoogle +devdrive.cloud##+js(acs, document.getElementById, undefined) +gpxgenerator.com###adBlockDiv +gpxgenerator.com##[href="link.php"] +@@||aston-martin-club.com^$ghide +linkshub.*##+js(nowoif) +@@||javaguides.net^$ghide +javaguides.net##+js(aeld, load, onload) +@@||zavislak.to^$ghide +||adservice.google.com/adsid/integrator.js$script,redirect=noopjs,domain=973espn.com +secretsdujeu.com##+js(acs, document.getElementById, adsrefresh) +||googlesyndication.com/pagead/$script,redirect=noopjs,domain=iptvdroid1.blogspot.com +cruisingearth.com##+js(nostif, show) +@@||roanoke.com^$ghide +roanoke.com##.dfp-ad +afilmywap.*,okhatrimaza.*##+js(popads-dummy) +afilmywap.*,okhatrimaza.*##+js(aopr, glxopen) +/1clkn/*$script,3p +getintopc.com##+js(nostif, /ai_adb|_0x/) +etonline.com##+js(aopr, _sp_._networkListenerData) +etonline.com##+js(set, canRunAds, true) +! metager .org ads on search +metager.org##.result:has(.partnershop-info) +@@||teenserie.com/wp-content/plugins/$script,1p +/apu.php?*&zoneid=$important +gulf-up.com##+js(aopr, AaDetector) +@@||gulf-up.com^$ghide +gulf-up.com##ins.adsbygoogle +||googlesyndication.com/$script,redirect=noopjs,domain=gulf-up.com +keysbrasil.blogspot.com##+js(nostif, nextFunction, 2000) +@@||fiatclub.eu^$ghide +@@||liveadexchanger.com/a/display.php$script,domain=prem.link +tmearn.*##+js(aopr, app_vars.force_disable_adblock) +tmearn.*##+js(nowoif) +tmearn.*##+js(set, blurred, false) +cutpaid.com,tmearn.*##+js(aopr, AaDetector) +*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com|recaptcha.net,domain=tmearn.* +||tmearn.com/*sw.js$script,1p +tmearn.*##.banner +godmods.com##+js(aopw, mdp_deblocker) +bilan.ch##+js(aopr, _sp_._networkListenerData) +filedown.*##+js(nowoif) +@@||filedown.*^$ghide +mexa.*##+js(acs, document.getElementById, adblockinfo) +mexa.*##+js(nowoif) +||p23hxejm1.com^ +*$script,3p,denyallow=google.com|gstatic.com|hcaptcha.com|recaptcha.net,domain=mexa.sh +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=spieleklassiker.com +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=spieleklassiker.com +||cdn.yollamedia.com^$script,domain=spieleklassiker.com,redirect=noopjs +spieleklassiker.com##.banner +@@||valueyourmusic.com^$ghide +qoshe.com##+js(nostif, adBlock) +yandexcdn.com##+js(nowoif) +@@||yandexcdn.com^$ghide +@@||yandexcdn.com^$script,1p +yandexcdn.com##a[onclick="openAuc();"] +yandexcdn.com##[href="https://t.me/Russia_Vs_Ukraine_War3"] +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=tsforum.pl +bestjavporn.com,mm9841.cc###flash +bestjavporn.com###player_3x2_container_inner +bestjavporn.com###player-container:has-text(Close ad) +@@||javporn.*^$ghide +lowellsun.com##+js(nostif, , 1) +! popups , ads torrentproject .io / cc +||torrentproject.*^$script,frame,1p +gottanut.com##+js(aopr, document.dispatchEvent) +uiporn.com##+js(aopr, document.dispatchEvent) +||uiporn.com/ai/*$script,1p +||uiporn.com/sw.js$script,1p +xcafe.com##+js(aopr, document.dispatchEvent) +xcafe.com##+js(popads-dummy) +xcafe.com##+js(aeld, , bi()) +||xcafe.com/js/initsite.js +@@||coinlyhub.com^$ghide +coinlyhub.com##+js(aopr, open) +coinlyhub.com##+js(set, Fingerprint2, true) +coinlyhub.com##+js(nano-sib, seconds) +coinlyhub.com##+js(aopr, app_vars.force_disable_adblock) +coinlyhub.com##+js(set, blurred, false) +@@||coinlyhub.com^$script,1p +coinlyhub.com##[class^="bmadblock"] +coinlyhub.com##div.highlight +coinlyhub.com##.banner +*$script,redirect-rule=noopjs,domain=coinlyhub.com|cryptotinker.com +zimabdko.com##+js(nowebrtc) +leechall.*###adBanner:style(height:25px !important;left:-3000px !important;position:absolute !important) +leechall.*##+js(nano-sib) +leechall.com##+js(acs, document.createElement, l.parentNode.insertBefore(s) +leechall.*##.text-center.alert-info.alert +@@||leechall.download^$ghide +@@||leechall.download^$script,1p +||digiseller.ru^$3p,domain=leechall.com +*$script,3p,redirect-rule=noopjs,domain=leechall.download|leechall.com +*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudflare.net|googleapis.com|jsdelivr.net|tawk.to,domain=leechall.* +kinoz.*##+js(nowebrtc) +kinoz.*##+js(aopr, AaDetector) +kinox.*,kinoz.*##+js(aopr, decodeURI) +majalahpendidikan.com##+js(aopr, adBlockDetected) +ultimate-catch.eu##+js(nostif, undefined) +! lampungway .com anti adb +lampungway.com##+js(aopw, adBlockDetected) +movie4me.*##+js(aopr, Math.floor) +||movie4me.*/image/ad-$image +##[href^="//producebreed.com/"] +##[href*="uselnk.com/"] +! cpopchanelofficial.com anti adb +cpopchanelofficial.com##+js(nostif, check, 1) +adsafelink.com##+js(aopr, app_vars.force_disable_adblock) +adsafelink.com##+js(nowoif) +adsafelink.com##+js(set, blurred, false) +@@||ustv247.tv^$ghide +@@||aii.sh^$ghide +aii.sh##+js(nowoif) +aii.sh##+js(nowebrtc) +aii.sh##+js(set, blurred, false) +aii.sh###link-view > center +||aii.sh/sw$script,1p +aii.sh##[src^="https://i.imgur.com/"] +##.glx-watermark-container +kisstvshow.*##+js(acs, $, #divDownload) +kisstvshow.*###hideAds +kisstvshow.*##.ksAds +kisstvshow.*##div[style="width: 620px; margin: 0px auto; overflow: hidden;"] +||kisstvshow.*/api/pop.php$xhr,1p +||ad.kisstvshow.*^ +! winit.heatworld.com anti adb +winit.heatworld.com##+js(aopw, showModal) +winit.heatworld.com##.sticky-ad-unit-default +winit.heatworld.com##.sticky-ad-unit-spacer-default +@@||ryuukoi.web.id^$ghide +||i1.wp.com/ryuukoi.web.id/wp-content/uploads/*/ANTIADBLOCK$image +||bitcoinadvertise.net^$3p +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=ff14angler.com +@@||pagead2.googlesyndication.com/pagead/managed/js/adsense/$script,domain=ff14angler.com +@@||g.doubleclick.net/pagead/ads?$frame,domain=ff14angler.com +@@||ff14angler.com^$ghide +ff14angler.com###main > ins.adsbygoogle:style(position: absolute !important; left: -4000px !important;) +ff14angler.com##.side_banner:style(position: absolute !important; left: -4000px !important;) +ff14angler.com###sidebar > ins.adsbygoogle:style(position: absolute !important; left: -4000px !important;) +ff14angler.com##ins.adsbygoogle-noablate:style(position: absolute !important; left: -4000px !important;) +jaiefra.com##+js(aopr, adBlockDetected) +! hotpress.info anti adb +hotpress.info##+js(nostif, nextFunction, 2000) +@@||hotpress.info^$ghide +! mixloads.com anti adb popups +mixloads.com##+js(aopr, AaDetector) +mixloads.com##+js(aeld, load, 2000) +||mixloads.com/sw.js$script,1p +! onlineproxy. eu popups +||onlineproxy.eu^$csp=default-src 'self' 'unsafe-inline' *.googleapis.com *.google.com *.gstatic.com *.google-analytics.com +@@||coachmag.co.uk^$ghide +||doubleclick.net/pagead/id$xhr,redirect=nooptext,domain=windowsreport.com +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=collegestash.com +||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,redirect=noopjs,domain=collegestash.com +buffstreamz.com##+js(acs, $, modal) +buffstreamz.com##+js(nowebrtc) +buffstreamz.com##.btn +buffstreamz.com##a[href*="//my-sports.club"] +##[href^="http://referrer.website/"] +@@||thisismoney.co.uk^$ghide +megagames.com##+js(acs, jQuery, fuckAdBlock) +@@||chiaseapk.com^$ghide +@@||csrevo.com^$ghide +@@||phoenixkiller.com/assets/js/ad-provider.js|$script +csrevo.com###HTML3 +||i.imgur.com/FYROU5n.gif$image,3p +@@||designoptimal.com^$ghide +designoptimal.com##ins.adsbygoogle +! almohtarif-tech .net anti adb +almohtarif-tech.net##+js(aeld, load, onload) +zimabdko.com##+js(aopr, open) +creditcardgenerator.com##+js(nostif, adsBlocked) +! interssh.com anti adb +interssh.com##+js(aeld, load, 2000) +ancensored.com##+js(aopr, AaDetector) +elpasotimes.com##+js(aopr, _sp_.mms.startMsg) +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=ktab3ndna.com +! sexo5k .com exo ads +sexo5k.com##+js(rmnt, script, ExoLoader) +! gfsvideos .com exo + popups +gfsvideos.com##+js(aopr, document.dispatchEvent) +gfsvideos.com##+js(nowoif) +! home-made-videos .com exo +home-made-videos.com##+js(aopr, document.dispatchEvent) +home-made-videos.com##+js(set, dclm_ajax_var.disclaimer_redirect_url, '') +home-made-videos.com###dclm_modal_content +home-made-videos.com###dclm_modal_screen +shameless.com##+js(aopr, ExoLoader.addZone) +shameless.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +shameless.com##+js(aopr, jwplayer.utils.Timer) +shameless.com##.active.pause-gift +electriciansforums.net##+js(nostif, adb) +@@||speakingtree.in^$ghide +the-voice-of-germany.de##+js(aopr, $ADP) +||zomap.de/*&expires=$script,domain=the-voice-of-germany.* +||cdn.zomap.de^$media,redirect=noopmp3-0.1s,domain=the-voice-of-germany.* +! dpstream .bz popups +dpstream.*##+js(set, load_pop_power, noopFunc) +dpstream.*##+js(ra, href, #clickfakeplayer) +dpstream.*##.movie-aye +unfriend-app.com##+js(nobab) +@@||unfriend-app.com^$ghide +*$script,redirect-rule=noopjs,domain=unfriend-app.com +adn.com##+js(aopr, MG2Loader) +technews.tw##+js(acs, jQuery, adblock) +technews.tw##.AD_wrapper +turkleech.com##+js(nostif, nextFunction, 2000) +gamearter.com##+js(nano-sib,/SplashScreen|BannerAd/) +gamearter.com##+js(nano-stb,/SplashScreen|BannerAd/) +gamearter.com##div[id^="ga_sp_"] +mpg.football##+js(set, ads, true) +@@||animevietsub.tv^$ghide +spokesman.com##+js(aopr, Connext) +medihelp.life##+js(aopw, ai_adb_overlay) +@@||guiamuriae.com.br^$ghide +||guiamuriae.com.br/*.gif$image +guiamuriae.com.br##.theiaStickySidebar +guiamuriae.com.br##ins.adsbygoogle +guiamuriae.com.br##.e3lan-top +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=viu.tv +@@||entitlements.jwplayer.com/$xhr,domain=viu.tv +||d2wpknqle9nuv8.cloudfront.net^ +ffmovies.*##+js(acs, String.fromCharCode, break;) +ffmovies.*##+js(nowoif) +thisvid.com##+js(aeld, /^(?:load|click)$/, popMagic) +hl-live.de##+js(nostif, nextFunction) +hl-live.de###swlad +! flsaudio.com anti adb +flsaudio.com##.adsbygoogle:upward(.widget) +flsaudio.com##.altumcode-coupon-content +||flsaudio.com^$image,redirect-rule=1x1.gif,1p +@@||aargauerzeitung.ch^$ghide +cloudapps.herokuapp.com##+js(set, gadb, false) +! imagetwist .com popunders +imagetwist.com##+js(acs, document.getElementsByTagName, "script") +imagehaha.com,imagenpic.com,imageshimage.com,imagetwist.com##+js(aeld, , checkTarget) +imagehaha.com,imagenpic.com,imageshimage.com,imagetwist.com,picshick.com###rang2 +imagehaha.com,imagenpic.com,imageshimage.com,imagetwist.com##video +imagehaha.com,imagenpic.com,imageshimage.com,picshick.com##a[href^="https://candy.ai/"] +imagehaha.com##+js(nowoif) +@@||watchsuitsonline.net^$ghide +produsat.com##+js(set, adBlockDetected, true) +*/gfp_video_ads/*$media,redirect=noopmp3-0.1s,domain=digisport.ro +||gvt1.com^$media,redirect=noopmp3-0.1s,domain=digisport.ro +@@||scdn.cxense.com/cx.js$script,domain=digisport.ro +@@||entitlements.jwplayer.com^$xhr,domain=digisport.ro +@@||doubleclick.net/gampad/live/ads*digisport.ro$xhr,domain=imasdk.googleapis.com +@@||jwpcdn.com/player/$script,domain=digisport.ro +@@||how2electronics.com^$ghide +how2electronics.com##.adsbygoogle:style(max-height: 1px !important;) +! freesoftpdfdownload.blogspot.com anti adb popups +freesoftpdfdownload.blogspot.com##+js(acs, decodeURI, decodeURIComponent) +freesoftpdfdownload.blogspot.com##+js(aeld, load, 2000) +||wap4dollar.com^$3p +||mediapass.com^$3p +officegamespot.com##+js(acs, Math.round, zonefile) +! tamilyogi. cool popups vidorg.net anti adb +tamilyogi.*##+js(acs, String.fromCharCode, 'shift') +@@||vidorg.net^$ghide +@@||tvpc.us^$ghide +parzibyte.me##+js(acs, jQuery, ai_adb) +livingstondaily.com##+js(aopr, _sp_) +bluemediafiles.*##+js(aopr, open) +bluemediafiles.*##+js(nano-sib, i--) +bluemediafiles.*##+js(set, Time_Start, 0) +@@||bluemediafiles.*^$ghide +*$image,redirect-rule=32x32.png,domain=bluemediafiles.* +/script/su.js$script,3p +nilopolisonline.com.br##+js(nostif, blocker) +mesquitaonline.com##+js(nostif, blocker) +@@||nohat.*^$script,domain=nohat.cc +tbib.org##+js(aopr, document.dispatchEvent) +greensboro.com##body:style(overflow: auto !important) +greensboro.com##.modal, .modal-backdrop +@@||shirainime.com^$ghide +@@||dias-uteis.com^$ghide +fullxxxmovies.net##+js(aopr, open) +closermag.fr##+js(acs, document.head.appendChild, ='\x) +@@||closermag.fr^$ghide +@@||watchcalifornicationonline.com^$ghide +@@||kupujemprodajem.com^$ghide +kupujemprodajem.com##.bnrBox +||evolok.net/acd/api/*/authorize/*adblock$xhr,3p +@@||gagetmatome.com^$ghide +@@||animetake*.*^$script,1p +@@||animetake*.*^$ghide +animetake27.*##.gads +@@||s0ft4pc.com^$ghide +s0ft4pc.com##+js(no-fetch-if, doubleclick, length:10, {"type":"cors"}) +s0ft4pc.com##+js(no-xhr-if, doubleclick, length:10) +lavozdegalicia.es##+js(aeld, load, adb) +@@||neobux.com^$script,css,1p +mamadu.pl##+js(nostif, , 1) +neoteo.com##+js(set, jQuery.adblock, false) +elitegoltv.org,extremotvplay.com##+js(aopr, open) +elmundo.es,expansion.com,marca.com##+js(aopr, adUnits) +marca.com##.ad-item-bt-cont +marca.com##.banner-sticky +yaoiotaku.com##+js(nostif, afs_ads, 2000) +||slacker.com^*/getspot/?spotid=$media,redirect=noopmp3-0.1s +||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,redirect=noopjs,domain=gazetadopovo.com.br +gazetadopovo.com.br##.ads-desktop +beinmatch.*##+js(nowoif) +! anisubindo.video anti adb +anisubindo.*##+js(aeld, load, nextFunction) +! anibatch.me anti adb +anibatch.me##+js(nostif, nextFunction, 2000) +mangalist.org##+js(nosiif, 0x) +@@||cdnjs.cloudflare.com/ajax/libs/blockadblock/$script,3p +@@||mangalist.org^$script,1p +! nsfw camchickscaps. com ads +camchickscaps.com##+js(aopw, ai_adb_overlay) +||okean-qoj.com^ +! romanialivewebcam .blogspot.com anti adb +@@||romanialivewebcam.blogspot.com^$ghide +techmuzz.com##+js(nosiif, adblocker) +@@||minecraftpocket-servers.com^$ghide +allusione.org##+js(aopr, b2a) +photobucket.com##.swal2-container +photobucket.com##body.swal2-shown > [aria-hidden="true"]:style(filter: none !important) +photobucket.com##body:style(overflow: auto !important) +@@||photobucket.com/resources/common/*$script,1p +vvvvid.it##+js(json-prune, data.[].vast_url) +semawur.com##+js(aopr, open) +ayobelajarbareng.com,semawur.com##+js(nano-sib, , *, 0) +semawur.com###main > .text-center > a[href] > img +||semawur.com/download$image +||cloudfront.net/assets.sidearmsports.com/*/bettor_detector.$script,3p +*/assets.sidearmsports.com/$script,redirect-rule=noopjs +@@/templates/dfp/dfp-component-template.html$xhr,1p +@@/components/js/analytics.js|$xhr,1p +###sidearm-adblock-modal +12thman.com##.c-sticky-leaderboard +bceagles.com##.s-sticky-dfp +bceagles.com##.article-aside__sponsor +bceagles.com##.article-aside__sponsor2 +12thman.com,acusports.com,atlantic10.com,auburntigers.com,baylorbears.com,bceagles.com,bgsufalcons.com,big12sports.com,bigten.org,bradleybraves.com,butlersports.com,cmumavericks.com,conferenceusa.com,cyclones.com,dartmouthsports.com,daytonflyers.com,dbupatriots.com,dbusports.com,denverpioneers.com,fduknights.com,fgcuathletics.com,fightinghawks.com,fightingillini.com,floridagators.com,friars.com,friscofighters.com,gamecocksonline.com,goarmywestpoint.com,gobison.com,goblueraiders.com,gobobcats.com,gocards.com,gocreighton.com,godeacs.com,goexplorers.com,goetbutigers.com,gofrogs.com,gogriffs.com,gogriz.com,golobos.com,gomarquette.com,gopack.com,gophersports.com,goprincetontigers.com,gopsusports.com,goracers.com,goshockers.com,goterriers.com,gotigersgo.com,gousfbulls.com,govandals.com,gowyo.com,goxavier.com,gozags.com,gozips.com,griffinathletics.com,guhoyas.com,gwusports.com,hailstate.com,hamptonpirates.com,hawaiiathletics.com,hokiesports.com,huskers.com,icgaels.com,iuhoosiers.com,jsugamecocksports.com,longbeachstate.com,loyolaramblers.com,lrtrojans.com,lsusports.net,morrisvillemustangs.com,msuspartans.com,muleriderathletics.com,mutigers.com,navysports.com,nevadawolfpack.com,niuhuskies.com,nkunorse.com,nuhuskies.com,nusports.com,okstate.com,olemisssports.com,omavs.com,ovcsports.com,owlsports.com,purduesports.com,redstormsports.com,richmondspiders.com,sfajacks.com,shupirates.com,siusalukis.com,smcgaels.com,smumustangs.com,soconsports.com,soonersports.com,themw.com,tulsahurricane.com,txst.com,txstatebobcats.com,ubbulls.com,ucfknights.com,ucirvinesports.com,uconnhuskies.com,uhcougars.com,uicflames.com,umterps.com,uncwsports.com,unipanthers.com,unlvrebels.com,uoflsports.com,usdtoreros.com,utahstateaggies.com,utepathletics.com,utrockets.com,uvmathletics.com,uwbadgers.com,villanova.com,wkusports.com,wmubroncos.com,woffordterriers.com,1pack1goal.com,bcuathletics.com,bubraves.com,goblackbears.com,golightsgo.com,gomcpanthers.com,goutsa.com,mercerbears.com,pirateblue.com,pirateblue.net,pirateblue.org,quinnipiacbobcats.com,towsontigers.com,tribeathletics.com,tribeclub.com,utepminermaniacs.com,utepminers.com,wkutickets.com,aopathletics.org,atlantichockeyonline.com,bigsouthnetwork.com,bigsouthsports.com,chawomenshockey.com,dbupatriots.org,drakerelays.org,ecac.org,ecacsports.com,emueagles.com,emugameday.com,gculopes.com,godrakebulldog.com,godrakebulldogs.com,godrakebulldogs.net,goeags.com,goislander.com,goislanders.com,gojacks.com,gomacsports.com,gseagles.com,hubison.com,iowaconference.com,ksuowls.com,lonestarconference.org,mascac.org,midwestconference.org,mountaineast.org,niu-pack.com,niuhuskies.com,nulakers.ca,oswegolakers.com,ovcdigitalnetwork.com,pacersports.com,rmacsports.org,rollrivers.com,samfordsports.com,uncpbraves.com,usfdons.com,wiacsports.com,alaskananooks.com,broncathleticfund.com,cameronaggies.com,columbiacougars.com,etownbluejays.com,gobadgers.ca,golancers.ca,gometrostate.com,gothunderbirds.ca,kentstatesports.com,lehighsports.com,lopers.com,lycoathletics.com,lycomingathletics.com,maraudersports.com,mauiinvitational.com,msumavericks.com,nauathletics.com,nueagles.com,nwusports.com,oceanbreezenyc.org,patriotathleticfund.com,pittband.com,principiaathletics.com,roadrunnersathletics.com,sidearmsocial.com,snhupenmen.com,stablerarena.com,stoutbluedevils.com,uwlathletics.com,yumacs.com,collegefootballplayoff.com,csurams.com,cubuffs.com,gobearcats.com,gohuskies.com,mgoblue.com,osubeavers.com,pittsburghpanthers.com,rolltide.com,texassports.com,thesundevils.com,uclabruins.com,wvuathletics.com,wvusports.com,arizonawildcats.com,calbears.com,cuse.com,georgiadogs.com,goducks.com,goheels.com,gostanford.com,insidekstatesports.com,insidekstatesports.info,insidekstatesports.net,insidekstatesports.org,k-stateathletics.com,k-statefootball.net,k-statefootball.org,k-statesports.com,k-statesports.net,k-statesports.org,k-statewomenshoops.com,k-statewomenshoops.net,k-statewomenshoops.org,kstateathletics.com,kstatefootball.net,kstatefootball.org,kstatesports.com,kstatewomenshoops.com,kstatewomenshoops.net,kstatewomenshoops.org,ksuathletics.com,ksusports.com,scarletknights.com,showdownforrelief.com,syracusecrunch.com,texastech.com,theacc.com,ukathletics.com,usctrojans.com,utahutes.com,utsports.com,wsucougars.com##+js(set, blockAdBlock, trueFunc) +*$script,redirect-rule=noopjs,domain=acusports.com|atlantic10.com|big12sports.com|bigten.org|cmumavericks.com|conferenceusa.com|dartmouthsports.com|daytonflyers.com|dbupatriots.com|dbusports.com|fduknights.com|floridagators.com|friscofighters.com|gamecocksonline.com|gobobcats.com|gocreighton.com|goetbutigers.com|golobos.com|gophersports.com|gopsusports.com|goracers.com|goshockers.com|goterriers.com|gotigersgo.com|gousfbulls.com|govandals.com|gowyo.com|goxavier.com|gozags.com|gozips.com|griffinathletics.com|guhoyas.com|gwusports.com|hailstate.com|hamptonpirates.com|hawaiiathletics.com|hokiesports.com|huskers.com|icgaels.com|iuhoosiers.com|jsugamecocksports.com|longbeachstate.com|loyolaramblers.com|lrtrojans.com|lsusports.net|morrisvillemustangs.com|msuspartans.com|muleriderathletics.com|mutigers.com|navysports.com|nevadawolfpack.com|niuhuskies.com|nulakers.ca|nkunorse.com|nuhuskies.com|nusports.com|oceanbreezenyc.org|okstate.com|olemisssports.com|omavs.com|ovcsports.com|owlsports.com|purduesports.com|redstormsports.com|richmondspiders.com|sfajacks.com|shupirates.com|siusalukis.com|smcgaels.com|smumustangs.com|soconsports.com|soonersports.com|themw.com|tulsahurricane.com|txst.com|txstatebobcats.com|ubbulls.com|ucfknights.com|ucirvinesports.com|uconnhuskies.com|uhcougars.com|uicflames.com|umterps.com|uncwsports.com|unipanthers.com|unlvrebels.com|uoflsports.com|usdtoreros.com|utahstateaggies.com|utepathletics.com|utrockets.com|uvmathletics.com|uwbadgers.com|villanova.com|wkusports.com|wmubroncos.com|woffordterriers.com|1pack1goal.com|bcuathletics.com|bubraves.com|goblackbears.com|golightsgo.com|gomcpanthers.com|goutsa.com|mercerbears.com|pirateblue.com|pirateblue.net|pirateblue.org|quinnipiacbobcats.com|towsontigers.com|tribeathletics.com|tribeclub.com|utepminermaniacs.com|utepminers.com|wkutickets.com|aopathletics.org|atlantichockeyonline.com|bigsouthnetwork.com|bigsouthsports.com|chawomenshockey.com|dbupatriots.org|drakerelays.org|ecac.org|ecacsports.com|emueagles.com|emugameday.com|gculopes.com|godrakebulldog.com|godrakebulldogs.com|godrakebulldogs.net|goeags.com|goislander.com|goislanders.com|gojacks.com|gomacsports.com|gseagles.com|hubison.com|iowaconference.com|ksuowls.com|lonestarconference.org|mascac.org|midwestconference.org|mountaineast.org|niu-pack.com|niuhuskies.com|oswegolakers.com|ovcdigitalnetwork.com|pacersports.com|rmacsports.org|rollrivers.com|samfordsports.com|uncpbraves.com|usfdons.com|wiacsports.com|alaskananooks.com|broncathleticfund.com|cameronaggies.com|columbiacougars.com|etownbluejays.com|gobadgers.ca|golancers.ca|gometrostate.com|gothunderbirds.ca|kentstatesports.com|lehighsports.com|lopers.com|lycoathletics.com|lycomingathletics.com|maraudersports.com|mauiinvitational.com|msumavericks.com|nauathletics.com|nueagles.com|nwusports.com|patriotathleticfund.com|pittband.com|principiaathletics.com|roadrunnersathletics.com|sidearmsocial.com|snhupenmen.com|stablerarena.com|stoutbluedevils.com|uwlathletics.com|yumacs.com|collegefootballplayoff.com|csurams.com|cubuffs.com|gobearcats.com|gohuskies.com|mgoblue.com|osubeavers.com|pittsburghpanthers.com|rolltide.com|texassports.com|thesundevils.com|uclabruins.com|wvuathletics.com|wvusports.com|arizonawildcats.com|calbears.com|cuse.com|georgiadogs.com|goducks.com|goheels.com|insidekstatesports.com|insidekstatesports.info|insidekstatesports.net|insidekstatesports.org|k-stateathletics.com|k-statefootball.net|k-statefootball.org|k-statesports.com|k-statesports.net|k-statesports.org|k-statewomenshoops.com|k-statewomenshoops.net|k-statewomenshoops.org|kstateathletics.com|kstatefootball.net|kstatefootball.org|kstatesports.com|kstatewomenshoops.com|kstatewomenshoops.net|kstatewomenshoops.org|ksuathletics.com|ksusports.com|scarletknights.com|showdownforrelief.com|syracusecrunch.com|texastech.com|theacc.com|ukathletics.com|usctrojans.com|utahutes.com|utsports.com|wsucougars.com +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=acusports.com|atlantic10.com|big12sports.com|bigten.org|cmumavericks.com|conferenceusa.com|dartmouthsports.com|daytonflyers.com|dbupatriots.com|dbusports.com|fduknights.com|floridagators.com|friscofighters.com|gamecocksonline.com|gobobcats.com|gocreighton.com|goetbutigers.com|golobos.com|gophersports.com|gopsusports.com|goracers.com|goshockers.com|goterriers.com|gotigersgo.com|gousfbulls.com|govandals.com|gowyo.com|goxavier.com|gozags.com|gozips.com|griffinathletics.com|guhoyas.com|gwusports.com|hailstate.com|hamptonpirates.com|hawaiiathletics.com|hokiesports.com|huskers.com|icgaels.com|iuhoosiers.com|jsugamecocksports.com|longbeachstate.com|loyolaramblers.com|lrtrojans.com|lsusports.net|morrisvillemustangs.com|msuspartans.com|muleriderathletics.com|mutigers.com|navysports.com|nevadawolfpack.com|niuhuskies.com|nulakers.ca|nkunorse.com|nuhuskies.com|nusports.com|oceanbreezenyc.org|okstate.com|olemisssports.com|omavs.com|ovcsports.com|owlsports.com|purduesports.com|redstormsports.com|richmondspiders.com|sfajacks.com|shupirates.com|siusalukis.com|smcgaels.com|smumustangs.com|soconsports.com|soonersports.com|themw.com|tulsahurricane.com|txst.com|txstatebobcats.com|ubbulls.com|ucfknights.com|ucirvinesports.com|uconnhuskies.com|uhcougars.com|uicflames.com|umterps.com|uncwsports.com|unipanthers.com|unlvrebels.com|uoflsports.com|usdtoreros.com|utahstateaggies.com|utepathletics.com|utrockets.com|uvmathletics.com|uwbadgers.com|villanova.com|wkusports.com|wmubroncos.com|woffordterriers.com|1pack1goal.com|bcuathletics.com|bubraves.com|goblackbears.com|golightsgo.com|gomcpanthers.com|goutsa.com|mercerbears.com|pirateblue.com|pirateblue.net|pirateblue.org|quinnipiacbobcats.com|towsontigers.com|tribeathletics.com|tribeclub.com|utepminermaniacs.com|utepminers.com|wkutickets.com|aopathletics.org|atlantichockeyonline.com|bigsouthnetwork.com|bigsouthsports.com|chawomenshockey.com|dbupatriots.org|drakerelays.org|ecac.org|ecacsports.com|emueagles.com|emugameday.com|gculopes.com|godrakebulldog.com|godrakebulldogs.com|godrakebulldogs.net|goeags.com|goislander.com|goislanders.com|gojacks.com|gomacsports.com|gseagles.com|hubison.com|iowaconference.com|ksuowls.com|lonestarconference.org|mascac.org|midwestconference.org|mountaineast.org|niu-pack.com|niuhuskies.com|oswegolakers.com|ovcdigitalnetwork.com|pacersports.com|rmacsports.org|rollrivers.com|samfordsports.com|uncpbraves.com|usfdons.com|wiacsports.com|alaskananooks.com|broncathleticfund.com|cameronaggies.com|columbiacougars.com|etownbluejays.com|gobadgers.ca|golancers.ca|gometrostate.com|gothunderbirds.ca|kentstatesports.com|lehighsports.com|lopers.com|lycoathletics.com|lycomingathletics.com|maraudersports.com|mauiinvitational.com|msumavericks.com|nauathletics.com|nueagles.com|nwusports.com|patriotathleticfund.com|pittband.com|principiaathletics.com|roadrunnersathletics.com|sidearmsocial.com|snhupenmen.com|stablerarena.com|stoutbluedevils.com|uwlathletics.com|yumacs.com|collegefootballplayoff.com|csurams.com|cubuffs.com|gobearcats.com|gohuskies.com|mgoblue.com|osubeavers.com|pittsburghpanthers.com|rolltide.com|texassports.com|thesundevils.com|uclabruins.com|wvuathletics.com|wvusports.com|arizonawildcats.com|calbears.com|cuse.com|georgiadogs.com|goducks.com|goheels.com|gostanford.com|insidekstatesports.com|insidekstatesports.info|insidekstatesports.net|insidekstatesports.org|k-stateathletics.com|k-statefootball.net|k-statefootball.org|k-statesports.com|k-statesports.net|k-statesports.org|k-statewomenshoops.com|k-statewomenshoops.net|k-statewomenshoops.org|kstateathletics.com|kstatefootball.net|kstatefootball.org|kstatesports.com|kstatewomenshoops.com|kstatewomenshoops.net|kstatewomenshoops.org|ksuathletics.com|ksusports.com|scarletknights.com|showdownforrelief.com|syracusecrunch.com|texastech.com|theacc.com|ukathletics.com|usctrojans.com|utahutes.com|utsports.com|wsucougars.com +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js:5,domain=12thman.com|auburntigers.com|baylorbears.com|bceagles.com|bgsufalcons.com|bradleybraves.com|butlersports.com|cyclones.com|denverpioneers.com|fgcuathletics.com|fightinghawks.com|fightingillini.com|friars.com|goarmywestpoint.com|gobison.com|goblueraiders.com|gocards.com|godeacs.com|goexplorers.com|gofrogs.com|gogriffs.com|gogriz.com|gomarquette.com|gopack.com|goprincetontigers.com +||sidearm-syndication.s3.amazonaws.com^$script,redirect=noopjs,3p +@@||brid.tv/player/build/plugins/adunit.js$script,domain=pluralist.com +@@||savetolink.com^$ghide +@@||blogshinobijawi.blogspot.com^$ghide +karanapk.com##+js(set, google_jobrunner, true) +! moneyhouse.ch anti adb +moneyhouse.ch##+js(nostif, bait) +! megalink.pro anti adb +megalink.*##+js(aopr, app_vars.force_disable_adblock) +megalink.*##+js(set, blurred, false) +megalink.*##+js(aeld, click, popunder) +megalink.*##[href^="https://mob1ledev1ces.com/r/"] +megalink.*###__bgd_link +||i.imgur.com^$domain=megalink.* +! theshedend.com anti adb +theshedend.com##+js(rmnt, script, adblock) +sfile.mobi##+js(nano-sib) +softwaresblue.com##+js(acs, $, setTimeout) +mrpiracy.*##+js(acs, document.getElementById, deleted) +mrpiracy.*##+js(aopr, LieDetector) +mrpiracy.*##+js(nowoif) +||mrpiracy.*/images/*.gif$image +! canalplus.com anti adb + ads +@@||fwmrm.net/ad/*$xhr,domain=canalplus.com +*$media,redirect=noopmp3-0.1s,domain=canalplus.com +@@||bran-media.canalplus.pro^$media,domain=canalplus.com +||vidads.gr^$3p +kino-zeit.de##+js(acs, getCookie) +topstreams.*##+js(nowebrtc) +topstreams.*##+js(acs, $, ads) +topstreams.*##+js(acs, setTimeout, admc) +topstreams.*##^script:has-text(admc) +jotapov.com##+js(acs, jQuery, adblocker) +jotapov.com##.jconfirm +oload.*##+js(aopr, AaDetector) +oload.*,streamhoe.*##+js(aopr, open) +oload.*,streamhoe.*##+js(aopr, _pop) +oload.*##+js(aopr, decodeURI) +##[href^="https://klsdee.com/"] +@@||animex.*^$ghide +@@||moonline.*^$ghide +moonline.*###clickfakeplayer +shorten.*##+js(aopr, AaDetector) +shorten.*##+js(aopr, app_vars.force_disable_adblock) +shorten.*##+js(aopr, parcelRequire) +shorten.*##+js(nowoif) +shorten.*###chromepop +||shorten.*/sw.js$script,1p +ligainsider.de##+js(acs, $, MutationObserver) +@@||ligainsider.de^$ghide +drrtyr.mx##+js(aeld,, adb) +dirrty.remix.es##.ad_target +dirrty.remix.es##.adsbygoogle +dirrty.remix.es##.AdZone300 +@@||globaltvapp.net^$ghide +! indaily.com.au anti adb +indaily.com.au##.advertisement +bitcointalk.org##:xpath(//span[contains(text(),"Advert")]/../..) +bitcointalk.org##td:has(> span[class]:has-text(Advert)) +bitcointalk.org##.fpcontainer +fluentu.com##+js(aopr, __eiPb) +@@||naruto-arena.net^$script,1p +investmentwatchblog.com##+js(acs, Math, '0x) +investmentwatchblog.com##+js(aopw, ABD) +fangraphs.com##+js(acs, $, Math.random) +fangraphs.com##+js(set, ezstandalone.enabled, true) +fangraphs.com##.catchall728 +fangraphs.com##.fg-ra-desktop +fangraphs.com##.fg-ra-mobile +phoneswiki.com##+js(set, jQuery.adblock, false) +myadslink.com##+js(aeld, load, 2000) +! 943thex.com live player anti adb +||adservice.google.com/adsid/integrator.js$script,redirect=noopjs,domain=943thex.com +@@||vidcrt.net^$ghide +@@||sabervivirtv.com^$ghide +sabervivirtv.com##.ad-item +sabervivirtv.com##.ad-sidebar +! homad +player.buffed.de,player.gamezone.de,player.gamesaktuell.de,player.pcgames.de,player.videogameszone.de,player.pcgameshardware.de##+js(rpnt, script, /'globalConfig':.*?"\,\s};var exportz/s, };var exportz) +golem.de##+js(no-xhr-if, damoh) +cinema.de##+js(no-xhr-if, svonm) +||computer-bild.de/_static-assets/homad/homad.js +||auto-bild.de/_static-assets/homad/homad.js +pcgames.de##.innerArticleModule:has-text(Anzeige) +pcgames.de##.afBtn2 +! web.de and gmx.net +||uicdn.com/uimag/*/assets/_sn_/vendor/homad.min.js +giga.de,kino.de,spieletipps.de,desired.de##+js(rpnt, script, /\"homad\"\,/) +t-online.de##+js(rpnt, script, /\"homad\":\{\"state\":\"enabled\"\}/, "homad":{"state":"disabled"}) +sport.de##+js(rpnt, script, useAdBlockDefend: true, useAdBlockDefend: false) +stern.de,geo.de,brigitte.de,schoener-wohnen.de##+js(set, foundation.adPlayer.bitmovin, {}) +wetter.de##+js(no-xhr-if, homad-global-configs) +!#if cap_html_filtering +spiegel.de##^script:has-text(homad) +||welt.de/homadConfigEnabled.json$xhr,replace=/"enabled":true/"enabled":false/ +||golem.de/staticrl/scripts/radiant/rmp-rl_$script,1p,replace=/var conf = \{.*?'postrollAdTag': 'response\.empty'\s\}\;/var conf = {}/s +||cinema.de/sites/default/files/js/js_$script,1p,replace=/var conf=\{'globalConfig'.*?'vpaid':'true'\};var exportz=/var conf={}; var exportz=/ +||svonm.com^$xhr,replace=/"enabled":\s*true/"enabled":false/,domain=desired.de|giga.de|toggo.de +||cdn.greenvideo.io/adapter/player/$script,replace=/window\.__gv_org_tfa.*?templateData\:\{embedId\:[a-z0-9]{1,3}\}\}\)\}\)\}\}// +||cdn.player.foundation/cdn-modules/$script,replace=/\.homad\.enabled\)if\(/.homad.enabled && false)if(/ +!#else +welt.de##+js(set, weltConfig.switches.videoAdBlockBlocker, false) +giga.de##+js(aost, XMLHttpRequest.prototype.open, svonm.com) +spiegel.de##+js(rmnt, script, homad) +!#endif +desired.de,toggo.de##+js(trusted-replace-xhr-response, /"enabled":\s*true/, "enabled":false, svonm.com) +||adnxs.com^$xhr,domain=welt.de,important +||asadcdn.com^$script,domain=welt.de,important +plus.rtl.de##+js(json-prune, adReinsertion) +tvspielfilm.de,tvtoday.de,chip.de,focus.de,fitforfun.de##+js(set, window.__gv_org_tfa, undefined) +!#if env_chromium +||amazonaws.com/homad-global-configs.schneevonmorgen.com/global_config.json$xhr,redirect=nooptext,domain=n-tv.de|golem.de +!#endif +n-tv.de,rtl.de##+js(set-constant, Object.prototype.adReinsertion.homad.enabled, false) +player.rtl2.de##+js(set, getHomadConfig, noopFunc) +||damoh.welect.de^ +!#if ext_ubol +welt.de##+js(trusted-prevent-fetch, aud.springserve.com, ) +!#else +welt.de##+js(no-fetch-if, aud.springserve.com, war:noop-vast3.xml) +!#endif +||damoh.gmx.*/*$media,redirect=noop-0.1s.mp3,1p +||united-infos.net^$domain=gmx.*|web.de +focus.de,kicker.de##+js(json-prune, enabled, force_disabled) +gmx.*,web.de##+js(aeld, timeupdate) +*$media,redirect-rule=noop-0.1s.mp3,3p,domain=gmx.*|web.de +!#if env_firefox +@@||akamaiedge.net^$media,domain=gmx.*|web.de +!#endif +tv2.no##+js(json-prune, enabled, testhide) +@@||player.clevercast.com/players/video-js/video-js-plugins/videojs.ads.min.js$script,1p +camcam.cc##+js(no-fetch-if, adsbygoogle) +ihow.info##+js(nostif, getComputedStyle, 250) +@@||eldia.com^$ghide +adshrink.it##+js(aeld, load, nextFunction) +adshrink.it##+js(aopr, open) +@@||googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=adshrink.it +@@||googlesyndication.com/pagead/js/*/show_ads_impl$script,domain=adshrink.it +||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,redirect=noopjs,domain=adshrink.it +@@||shrink-service.it^$frame,domain=adshrink.it +@@||cdn.trackjs.com/agent/v*/latest/t.js$script,domain=adshrink.it +||shrink-service.it^$csp=frame-src +shrink-service.it##+js(aopr, open) +adshrink.it##.active.dimmer.ui:has-text(/Wait|Skip/i) +||offer.alibaba.com^$frame,domain=adshrink.it +vipstand.*##+js(nowoif, //) +turkanime.co##+js(aeld, , pop) +turkanime.*##+js(nostif, blocked) +*$script,redirect-rule=noopjs,domain=turkanime.* +@@||turkanime.*^$ghide +@@||turkanime.*/ad/$xhr,1p +turkanime.*##div.col-xs-12:has-text(MMPORG OYUNLAR) +turkanime.*###sponsored +turkanime.*##.panel-title:has-text(REKLAM) +turkanime.*##.AltkisimMenu +video.sibnet.ru###vjs-overlayclip-box +video.sibnet.ru##.vjs-overlayclip-box-close +! allcalidad.net anti adb and popup +allcalidad.*##+js(acs, doOnce) +allcalidad.*##+js(aeld, , 0x) +allcalidad.*##+js(aopw, smrtSB) +allcalidad.*##+js(set, btoa, null) +allcalidad.*##+js(ra, href, #clickfakeplayer) +allcalidad.*##.table-hover.table > tbody > tr:has-text(Descargar Premium) +*$script,3p,denyallow=cloudflare.com|cloudfront.net|facebook.net|fbcdn.net|googleapis.com|gstatic.com|heyoya.com,domain=allcalidad.* +*.gif$image,domain=stream1688.com +*$media,domain=stream1688.com,redirect=noopmp3-0.1s +123anime.*,123animes.*##+js(aopr, glxopen) +123anime.*##+js(acs, setTimeout, popi) +123anime.*##+js(nowoif) +! 123animes.mobi/ru popup +123animes.*##+js(aopr, AaDetector) +123animes.*##div[id][style^="position: fixed; inset: 0px; z-index: 2147483647;"] +! oltnertagblatt .ch anti adb +@@||nwch.az-cdn.ch^$script,domain=oltnertagblatt.ch +listenonrepeat.com##+js(acs, googlefc) +!#if !env_mobile +news18.com##+js(aeld, scroll, getElementById) +!#endif +!#if env_mobile +news18.com##+js(aeld, scroll, Mgid) +news18.com##+js(aopr, getAdsScripts) +news18.com##.ad-container +news18.com##[class^="adv_placeholder_"] +!#endif +spinbot.com##+js(aopr, angular) +xiaomi-miui.gr##+js(acs, $, detected) +@@||calciomercato.com^$ghide +calciomercato.com##.adv +forum.release-apk.com##+js(rpnt, script, /if \([a-z0-9]{10} === [a-z0-9]{10}/, if(true) +adonisfansub.com##+js(nobab) +agefi.fr##+js(nostif, {r(), 0) +horriblesubs.info##[class*="sponsor"] +ladepeche.fr##+js(aopr, localStorage) +projectfreetv.*##+js(aeld, , _0x) +##.overlay-advertising-new +*$xhr,redirect-rule=nooptext,domain=freevocabulary.com +cinemaxxl.de##+js(set, adblock, false) +cinemaxxl.de##noscript:has-text(Adblocker):remove() +||cinemaxxl.de/js/adblock.js$script +anime-i.com##+js(nostif, nextFunction, 2000) +cartoonth12.com##.header-ad +*.gif$domain=cartoonth12.com,image +@@||jwpcdn.com/player/$script,domain=player.cartoonth12.com +*.mp4$media,redirect=noopmp3-0.1s,domain=cartoonth12.com +@@||cartoonth12.com^$ghide +cartoonth12.com##.dessert-frame +cartoonth12.com##[href="https://www.sagame350.bet/"] +cartoonth12.com##.video-player.responsive-player +upzone.cc##+js(acs, document.getElementById, undefined) +##.header-menu-bottom-ads +##.rkads +###bt-ads +@@||lutontoday.co.uk^$ghide +@@||jbzd.com.pl^$ghide +! irisbuddies.ml (dead) anti adb +||rawgit.com/fahimraza/FK/master/ad-unblocker.js^$script +||cdn.jsdelivr.net/gh/Akshat-h/propeller/btagantiadb.js^$script +news-herald.com##+js(aopr, Connext) +*.gif$domain=037-hd.com,image +*$media,domain=037-hd.com,redirect=noopmp3-0.1s +*$script,3p,denyallow=bootstrapcdn.com|disqus.com|jsdelivr.net|jwpcdn.com|fastly.net|fastlylb.net|jquery.com|hwcdn.net|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com,domain=movieshub.* +@@||kwik.*^$ghide +@@||sadeempc.com^$ghide +sadeempc.com##[class^="buttonPress"] +@@||game-kentang.blogspot.com^$ghide +game-kentang.blogspot.com##+js(nano-sib) +shortgoo.blogspot.com##+js(set, showAds, true) +shortgoo.blogspot.com##+js(nano-sib) +@@||downloader.la^$ghide +! ytmp3. plus ad and popup +ytmp3.*##+js(nowoif) +||ytmp3.*/ad/$frame +! cariskuy.com anti adb +cariskuy.com##+js(nostif, nextFunction, 450) +||domnovrek.com^$3p +! blackavelic.com anti adb +blackavelic.com##+js(aeld, load, 2000) +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=felanovia.com +thelanb.com##+js(aeld, load, undefined) +planetaminecraft.com##+js(set, ab, false) +@@||aasarchitecture.com^$ghide +softwaredescargas.com##+js(aeld, DOMContentLoaded, scriptwz_url) +softwaredescargas.com##+js(aopr, scriptwz_url) +@@||justlightnovels.com^$ghide +justlightnovels.com##.adsbyvli +jnovels.com##+js(aopw, KillAdBlock) +codesnse.com###paras-devgenerate ~ * +codesnse.com##[href^="https://play.google.com/"] +cybertechng.com##+js(set, blurred, false) +cybertechng.com##+js(set, go_popup, {}) +cracking-dz.com##+js(aeld, load, 0x) +voipreview.org##+js(set, adblockEnabled, false) +@@||safelink-jozz.blogspot.com^$ghide +yusepjaelani.blogspot.com###showadblock, .modal-backdrop +yusepjaelani.blogspot.com##body:style(overflow: auto !important) +|about:$popup,domain=yusepjaelani.blogspot.com +||yusepjaelani.blogspot.com^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation +yusepjaelani.blogspot.com##+js(nostif, Debug) +mega1080p.*##+js(aeld, DOMContentLoaded, btoa) +mega1080p.*##.bnr +@@||easyreaders.site^$ghide +! /interstitial/*$xhr,redirect=noop-1s.mp4,domain=imdb.com +||imdb.com/tr/*pageHit$xhr,redirect=noopjs,domain=imdb.com +||fls-na.amazon.com/$xhr,redirect=noopjs,domain=imdb.com +*$media,redirect=noopmp3-0.1s,domain=imdb.com,3p +@@||media-imdb.com^$media,domain=imdb.com +presentation-ppt.com##+js(aeld, load, nextFunction) +*$frame,xhr,script,3p,domain=bolly4umovies.* +femina.ch##+js(aopr, _sp_.mms.startMsg) +photovoltaikforum.com##+js(acs, $, offsetHeight) +! fix mangahere.onl ads & anti adb +mangahere.onl##+js(aopr, AdservingModule) +mangahere.onl##+js(aopr, loadRunative) +mangahere.onl##.container.ads-container +||mangahere.onl/adsbygoogle.js$script,redirect=noopjs,1p +soy502.com##+js(acs, document.getElementById, length) +*$script,3p,denyallow=101placeonline.com|bootstrapcdn.com|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|fastly.net|fastlylb.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|jwpcdn.com|recaptcha.net|sportscentral.io,domain=mlbstreams.to|nbastreams.to|nflbite.com|nflstreams.to|nhlstreams.to|soccerstreams.net +openloadmovies.*##+js(aopr, AaDetector) +streamango.*###ad_buts +naughtymachinima.com##+js(aopr, loadTool) +naughtymachinima.com##+js(nowoif) +||naughtymachinima.com/*banner +||naughtymachinima.com/*preroll +@@||bonjourdefrance.com^$script,1p +@@||remix.es^$ghide +arabseed.*##+js(aeld, , _0x) +||arabseed.*/sw.js$script,1p +arabseed.*##.ads-aa +lapresse.ca##+js(set, noBlocker, true) +lapresse.ca##+js(aopw, _sp_) +||nxbrew.com/sw.js$script,1p +@@||tele-gratuit.net/analytics/adiframe.js$script,1p +sportsnaut.com###dsk-banner-ad-a +sportsnaut.com###dsk-box-ad-c +doodle.com##+js(aopr, _sp_._networkListenerData) +seeitworks.com##+js(acs, document.getElementById, adblock) +@@||hacknetfl1x.net^$ghide +||googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=jmusic.me,redirect=noopjs +##.mdp-deblocker-wrapper +@@||classic-retro-games.com^$ghide +classic-retro-games.com##ins.adsbygoogle, #ad, .game-ad +/bab.min.js$script,1p +kolyoom.com##+js(nobab) +kolyoom.com##+js(set, adsbygoogle, null) +bde4.*#@#a[href*=".yabo816."] +bde4.*##a[href*=".yabo816."]:remove() +bde4.*##+js(nofab) +bde4.*##+js(nano-sib) +dailysport.*##+js(acs, String.fromCharCode, atob) +dailysport.*,eplsite.uk##+js(aopr, AaDetector) +dailysport.*,eplsite.uk##+js(aopr, open) +eplsite.uk##[href="https://www.eplsite.uk/vm.html"] +*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudflare.net|googleapis.com|hwcdn.net|jsdelivr.net,domain=dailysport.* +@@||lesmoutonsrebelles.com^$ghide +##.amp-ad-inner +###placeAds +@@||cdn.ampproject.org/*/amp-ad-*.js$script,domain=aajtak.intoday.in +@@||taboola.com/*indiatoday$domain=ampproject.net +@@||trc.taboola.com/indiatoday +! dirtyship .com tabunder +dirtyship.com##+js(aopr, dataPopUnder) +@@||sonyliv.com^$ghide +@@||sonyliv.com^$xhr,1p +!sonyliv.com##+js(json-prune, adProvider) +@@||realmofdarkness.net^$ghide +@@||magyarhang.org^$shide +||magyarhang.org/*.gif$image +savevideo.tube##+js(aopr, AaDetector) +savevideo.tube##+js(nowoif) +files.cx##+js(aopr, AaDetector) +devoloperxda.blogspot.com##+js(aeld, load, onload) +celebmix.com##+js(set, jQuery.adblock, false) +vttpi.com##+js(acs, document.createElement, adblock) +@@||rakuten.tv^$ghide +@@||cdnjs.cloudflare.com/ajax/libs/rollbar.js/$script,domain=rakuten.tv +@@||search.spotxchange.com/vast/$xhr,domain=rakuten.tv +rakuten.tv##+js(no-xhr-if, /youboranqs01|spotx|springserve/) +@@||projectkorra.com/*/siropu/*/ads$script,1p +doofree88.com##+js(nano-sib, js-btn-skip, 1000) +||doofree88.com/storage/go/banner*.gif$image,1p +doofree88.com##.go-hard +doofree88.com##.placeholder +insidermonkey.com##+js(acs, Math, '0x) +@@||meucdn.*^$script,xhr,1p +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=meucdn.vip +@@||cdn.jsdelivr.net/npm/videojs-contrib-ads/$domain=meucdn.vip +@@||meucdn.*^$ghide +##a[href*="/go.php?a_aid="] +letras.mus.br##+js(nostif, r(), 0) +letras.mus.br##[id^="pub"] +@@||batch.id^$ghide +pakkotoisto.com##+js(acs, $, undefined) +androidonepro.com##+js(aopr, downloadJSAtOnload) +@@||tda.io^$xhr,domain=tagesanzeiger.ch +@@||tagesanzeiger.ch^$ghide +tagesanzeiger.ch,berneroberlaender.ch,derbund.ch##div[class^="TopAds"] +rmcmv.*##+js(nosiif, visibility) +rmcmv.*##[class*="ads"] +lecourrier-du-soir.com##+js(nosiif, iframe) +gazzetta.it##+js(aeld, adblockActivated) +upstream.to##+js(aopr, open) +upstream.to##+js(acs, globalThis, break;case) +arcadepunks.com##+js(aopr, penci_adlbock) +arcadepunks.com##+js(noeval) +arcadepunks.com##[class*="ads"]:not(#jetblocker-detect) +@@||arcadepunks.com^$ghide +arcadepunks.com##.header-banner +arcadepunks.com##[href^="https://www.arcadepunks.com/go/"] +arcadepunks.com##.left-ad +arcadepunks.com##.right-ad +arcadepunks.com##.spMessageFailure +arcadepunks.com##[href^="https://gameroomsolutions.com/"] +arcadepunks.com##.custom-html-widget:not(.custom-html-widget:has([href*="arcadepunks.com"])) +osxinfo.net##+js(acs, $, btoa) +myneobuxportal.com##+js(set, jQuery.adblock, false) +wohnungsboerse.net##+js(aopr, Number.isNaN) +@@||wohnungsboerse.net^$xhr,1p +wohnungsboerse.net##[href*=".php"] +@@||football-lineups.com/dfp.js$script,1p +negumo.com##+js(set, fabActive, false) +rysafe.blogspot.com##+js(nostif, nextFunction, 250) +! impotsurlerevenu.org anti adb +@@||impotsurlerevenu.org^$ghide +! eletronicabr.com anti adb +eletronicabr.com##+js(nostif, test, 100) +! inkagames.com anti adb +@@||inkagames.com^$ghide +@@||safetxt.*^$ghide +safetxt.*##ins.adsbygoogle +cyberstumble.com##+js(aopr, b2a) +games.wkb.jp##+js(set, gWkbAdVert, true) +games.wkb.jp##+js(set, noblock, true) +@@||games.wkb.jp/ykg/assets/pc/ad_adsense_for_games$css,script,1p +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=games.wkb.jp +asmwall.com##+js(aopr, adblock) +fandom.com##+js(set, wgAffiliateEnabled, false) +kenshi.fandom.com##+js(set, ads, null) +fandom.com##[id^="siderail_"][id*="_gamepedia"] +fandom.com###bodyContent:style(width:100% !important) +fandom.com##.instant-suggestion +fandom.com##.top-ads-container +fandom.com###rail-boxad-wrapper +fandom.com###mid_boxad +fandom.com###incontent_boxad +||45tu1c0.com^ +!#if env_mobile +fandom.com##.ad-slot-wrapper +!#endif +fandom.com##li.top-results__item span:has-text(Sponsored):upward(li) +139.99.33.192##.adpop +gdriveplayer.*##+js(aopr, AaDetector) +gdriveplayer.*##+js(nowoif, !gdrivedownload) +kordramass.com,kshowsubindo.org,senimovie.co##+js(acs, document.onclick, popunder) +uptobox.com,uptostream.com##+js(set, jsUnda, noopFunc) +earnload.*##+js(aopr, app_vars.force_disable_adblock) +earnload.*##+js(disable-newtab-links) +||earnload.*/sw.js$script,1p +*$image,3p,denyallow=earnload.com,domain=earnload.* +shop123.com.tw##+js(aopw, daCheckManager) +orirom.com,romfirmware.com##+js(acs, eval, AdBlock) +evileaks.*##+js(acs, $, prompt) +@@||evileaks.*^$ghide +evileaks.*##ins.adsbygoogle +||adservice.google.com/adsid/integrator.js$xhr,redirect=noopjs,domain=maxedtech.com +maxedtech.com##.widget_custom_html +*$xhr,redirect-rule=nooptext,domain=btik.com +! popups drivefire .co/file/ FGZUI0DAGsHKdfW9NI2I +drivefire.co##+js(aopr, AaDetector) +@@||yoursavegames.com^$ghide +yoursavegames.com##ins.adsbygoogle +hexupload.net##+js(aopw, Fingerprint2) +!#if env_mobile +hexupload.net##+js(acs, document.createElement, rAb) +!#endif +@@||the-man.gr^$ghide +||firefaucet.win/*.gif$image +||35.238.205.163^$all +xanimeporn.com##+js(nowoif) +||300mbmovies4u.*/sw.js$script,1p +! sensualgirls .org exo stuff +sensualgirls.org##+js(aopr, document.dispatchEvent) +sensualgirls.org##.wide_boxcontent:has-text(/adb/i) +sensualgirls.org##.cbox_cont > div[style="text-align: center;"] +sensualgirls.org##div[data-width][style*="background-image: url"]:style(background: none !important) +call2friends.com##+js(aopr, onload) +call2friends.com#@#.adWrapper +bladesalvador.com##+js(set, adblock, false) +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=folhabv.com.br +folhabv.com.br##.publicidade-asynchronous +jacquieetmichel.net##+js(set, is_adblocked, false) +jacquieetmichel.net##+js(rmnt, script, popUnderUrl) +jacquieetmichel.net##+js(ra, data-popunder-url) +@@||keneono.site^$ghide +fruitlab.com##+js(set, adBlockDetected, noopFunc) +@@||fruitlab.com^$ghide +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=babygames.com +@@||babygames.com^$ghide +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=babygames.com +babygames.com###RightAdMiddleDiv +babygames.com###RightAdTopDiv +@@||audio-sound-premium.com^$ghide +@@||wallpaperwaifu.com^$ghide +wallpaperwaifu.com##.ads-between-post:upward(.post-item) +wallpaperwaifu.com##ins.adsbygoogle +||padspms.com^$all +aeonax.com##+js(noeval-if, debugger) +@@||aeonax.com^$ghide +*$frame,redirect-rule=noopframe,domain=camera.aeonax.com +@@||omekon.blogspot.com^$ghide +dobrapogoda24.pl##+js(nostif, , 1) +! 9hentai onclick popup/under +9hentai.*##+js(aeld, click, saveLastEvent) +9hentai.*###ads +9hentai.so##+js(set-cookie, juicyads0, 1) +9hentai.so##+js(set-cookie, juicyads1, 1) +9hentai.so##+js(set-cookie, juicyads2, 1) +@@||chuppito.fr^$ghide +||chuppito.fr/ext/*/privacypolicy/styles/all/template/remove_url.js$script,1p +@@||rtl.it^$script,1p +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=rtl.it +web2.0calc.*##+js(aopr, doads) +||web2.0rechner.de/*/$frame +||web2.0calc.*/*/$frame +web2.0rechner.de,web2.0calc.*###abmodal, body > .in.modal-backdrop +web2.0rechner.de,web2.0calc.*##body:style(overflow: auto !important) +web2.0rechner.de,web2.0calc.*###nocreditsmodal +web2.0rechner.de,web2.0calc.*##.first +@@||bzbasel.ch^$ghide +@@||mastercoria.com^$script,1p +keralatelecom.info##+js(nostif, adb) +keralatelecom.info##.ai-viewports +extreme-down.*##+js(acs, $, friendlyduck) +extreme-down.*##+js(acs, Math, decodeURIComponent) +nzpocketguide.com##+js(aopr, adsanity_ad_block_vars) +webcamsdolls.com##+js(nostif, offsetWidth) +*.php$script,domain=webcamsdolls.com +webcamsdolls.com##.sponsor +fussball.news##+js(aopr, adBlockDetected) +tvchoicemagazine.co.uk##+js(acs, $, onload) +! nensaysubs.net anti adb +@@||nensaysubs.net^$ghide +||nensaysubs.net/images/logonensay.ico$image,1p,redirect=1x1.gif +nensaysubs.net###outerdiv +gnula.*##+js(nowoif) +||gnula.*/player/vast*xml|$xhr,1p +gnula.*##+js(aeld, click, , elements, .post.movies) +||pub.searchnova.net^ +stream.nbcsports.com##+js(set, adBlockEnabled, false) +@@||v.fwmrm.net/ad/g/1$xhr,domain=stream.nbcsports.com +@@||redsoccer.info^$ghide +porngo.com##+js(aopr, AaDetector) +||porngo.com^$csp=child-src * +porngo.com##+js(nowoif) +*preRoll$xhr,domain=porngo.com +*$xhr,redirect-rule=noopjs,domain=audioblog.com +@@||easy-firmware.com/templates/default/html/en/assets/js/fingerprint2.min.js$script,1p +||s3.amazonaws.com/callloop/banners/$3p,image +||perfotrack.com^ +||fundingchoicesmessages.google.com^$3p +! google contributor anti adblock +#@#[class^="div-gpt-ad"] +#@#[id^="div-gpt-ad"] +#@#div[id^="div-gpt-"] +##[class^="div-gpt-ad"]:not([style^="width: 1px; height: 1px; position: absolute; left: -10000px; top: -"]) +~hyperosthemes.org,~kojodan.jp##div[id^="div-gpt-"]:not([style^="width: 1px; height: 1px; position: absolute; left: -10000px; top: -"]):not([style="pointer-events: none; height: 1px; width: 0px; opacity: 0; visibility: hidden; position: fixed; bottom: 0px;"]) +~hyperosthemes.org,~kojodan.jp##[id^="div-gpt-ad"]:not([style^="width: 1px; height: 1px; position: absolute; left: -10000px; top: -"]):not([style="pointer-events: none; height: 1px; width: 0px; opacity: 0; visibility: hidden; position: fixed; bottom: 0px;"]) +@@||demokrasistyle.blogspot.com^$ghide +dloady.com##+js(acs, $, show) +sobatkeren.*##+js(nowoif) +||sobatkeren.*/img/banner/$image +movieon21.*##+js(nowoif) +*.gif$domain=movieon21.*,image +pornfactors.com##+js(acs, jQuery, popunder) +@@||javplayer.com^$ghide +javplayer.com###player-advertising +||doubleclick.net^$domain=pccomponentes.com,important +||googlesyndication.com^$domain=pccomponentes.com,important +||googletagservices.com^$domain=pccomponentes.com,important +||omtrdc.net^$xhr,domain=pccomponentes.com,important +pccomponentes.com##div[id^="div-gpt-ad-"] +techradar.com##+js(aopr, _sp_._networkListenerData) +gamesradar.com,techradar.com,tomsguide.com,tomshardware.com,whathifi.com##.mobile-leaderboard-320-50:upward([style]) +androidcentral.com,gamesradar.com,livescience.com,pcgamer.com,space.com,techradar.com,tomsguide.com,tomshardware.com,whathifi.com,windowscentral.com##.van_taboola +whathifi.com##.dfp-leaderboard-container +whathifi.com###ultimedia_wrapper +whathifi.com##.slot-leaderboard +whathifi.com##.adunit +! crichd .sc / .com / .cx / to / .tv popups +crichd.*##+js(aopr, AaDetector) +ticonsiglio.com##+js(aopr, jQuery.adblock) +mtlurb.com##+js(nostif, purple_box) +! 123moviesc. cyou +123moviesc.*##+js(aopr, mm) +debgen.fr##+js(acs, addEventListener, nextFunction) +@@||mabzicle.com^$ghide +*$popunder,domain=convert2mp3.tv,3p +daily-times.com##+js(aopr, _sp_._networkListenerData) +@@||googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=lexigram.gr +||vidazoo.com^$domain=readonepiece.com +readonepiece.com###vidazoo-player-div +imgbaron.com##+js(aopr, loadTool) +imgbaron.com##[src="https://imgbaron.com/chrome.ads.png"] +imgbaron.com##p.newsbar_b +imgbaron.com##div[style^="display: block; position: fixed; z-index"] +imgbaron.com###fadeinbox +##.samBannerUnit +##.samCodeUnit +@@||ads.hausbau-forum.de/openad.js$script,1p +hausbau-forum.de##+js(no-xhr-if, adsbygoogle) +hausbau-forum.de##+js(set, detectAdblock, noopFunc) +*$script,redirect-rule=noopjs,domain=hausbau-forum.de +!#if cap_html_filtering +hausbau-forum.de##^script:has-text(Adblock) +!#else +hausbau-forum.de##+js(rmnt, script, Adblock) +!#endif +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=adnan-tech.com +! nbareplayhd.com anti adb +nbareplayhd.com##+js(aopr, adblockDetector) +! heavy-r .com nsfw ads (srcdoc) +||heavy-r.com^$csp=child-src * +heavy-r.com##.mob-ban +heavy-r.com##.nopop.hd-bar +! showbiz .cz ads (srcdoc) +||showbiz.cz^$csp=child-src * +her.ie##html:style(overflow: auto !important) +warps.club##+js(aopr, adblockDetect) +*$script,redirect-rule=noopjs,domain=texviewer.herokuapp.com +fake-it.ws##+js(set, adsLoadable, true) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=noopjs,domain=881903.com +cuatrolatastv.blogspot.com##+js(nobab) +cuatrolatastv.blogspot.com##+js(acs, _pop) +||sites.google.com/site/rvdmarcrailcatrain/home/tomber.js$script +||cdn.jsdelivr.net/gh/The-3Labs-Team/potatoshield@main/dist/potatoshield.min.ob.js$script +cuatrolatastv.blogspot.com##+js(refresh-defuser) +dramakrsubindo.blogspot.com##+js(aopr, open) +||protectsurf-a.akamaihd.net^ +||akamaihd.net/*&affid +! pelispedia. one popup +pelispedia.*##+js(acs, allclick_Public) +pelispedia.*##+js(nano-stb) +pelispedia24.*##+js(nowoif) +pelispedia.*,pelispedia24.*##+js(ra, href, a#clickfakeplayer) +pelispedia.*##+js(ra, href, #opfk) +pelispedia.*##+js(ra, href, .fake_player > [href][target]) +premiumstream.live##+js(ra, href, .link) +pelispedia.*##a.btns +pelispedia.*##div.mb-5.text-center +pelispedia.*##.cont.principal > .site-main > .links +pelispedia.*##.img-responsive +pelispedia.*##.mvic-btn +pelispedia.*##[class^="page_speed_"][href] > img[src$="app.png"] +pelispedia24.*##.button +pelispedia24.*##.asgdc +pelispedia24.*##.preplayer +pelispedia24.*##[href^="/acceso-total-sin-limite"] +||pelispedia.*/*sw.js$script,1p +*$script,3p,denyallow=cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|jsdelivr.net,domain=pelispedia.* +pelispedia.*##[href^="https://settledchagrinpass.com/"] +! pelis28.co ads +pelis28.*##+js(nowoif) +pelis28.*##+js(ra, href, #clickfakeplayer) +pelis28.*##.buttons-p +pelis28.*###options-0 +grid.id##+js(acs, Math, '\x) +kompasiana.com##+js(aopr, initAdserver) +||asset.kompas.com/data/*/kgmedia/js/*notif$script +publish0x.com###registerModal, .show.fade.modal-backdrop +publish0x.com##body:style(overflow: auto !important;) +*$script,redirect-rule=noopjs,domain=myschool-eng.com +*$script,redirect-rule=noopjs,domain=ehubsoft.herokuapp.com +spectrum.ieee.org##+js(aopr, splashpage.init) +doujindesu.*##+js(aeld, load, 2000) +doujindesu.*##+js(rmnt, script, WebAssembly) +doujindesu.*##+js(acs, String.fromCharCode, window[_0x) +cutdl.xyz##+js(aopr, app_vars.force_disable_adblock) +cutdl.xyz##+js(set, blurred, false) +cutdl.xyz##.banner +dziennikbaltycki.pl,dzienniklodzki.pl,dziennikpolski24.pl,dziennikzachodni.pl,echodnia.eu,expressbydgoski.pl,expressilustrowany.pl,gazetakrakowska.pl,gazetalubuska.pl,gazetawroclawska.pl,gk24.pl,gloswielkopolski.pl,gol24.pl,gp24.pl,gra.pl,gs24.pl,kurierlubelski.pl,motofakty.pl,naszemiasto.pl,nowiny24.pl,nowosci.com.pl,nto.pl,polskatimes.pl,pomorska.pl,poranny.pl,sportowy24.pl,strefaagro.pl,strefabiznesu.pl,stronakobiet.pl,telemagazyn.pl,to.com.pl,wspolczesna.pl##+js(aeld, , show) +||ppstatic.pl/*/reklama.js$script,domain=dziennikbaltycki.pl|dzienniklodzki.pl|dziennikpolski24.pl|dziennikzachodni.pl|echodnia.eu|expressbydgoski.pl|expressilustrowany.pl|gazetakrakowska.pl|gazetalubuska.pl|gazetawroclawska.pl|gk24.pl|gloswielkopolski.pl|gol24.pl|gp24.pl|gra.pl|gs24.pl|kurierlubelski.pl|motofakty.pl|naszemiasto.pl|nowiny24.pl|nowosci.com.pl|nto.pl|polskatimes.pl|pomorska.pl|poranny.pl|sportowy24.pl|strefaagro.pl|strefabiznesu.pl|stronakobiet.pl|telemagazyn.pl|to.com.pl|wspolczesna.pl,important +*$script,redirect-rule=noopjs,domain=onemanhua.com +onemanhua.com##+js(aeld, /.?/, popMagic) +onemanhua.com##+js(nostif, checkSiteNormalLoad) +||onemanhua.com/js/ad/$image +@@||onemanhua.com^$ghide +@@||euconfesso.com^$ghide +laksa19.github.io##+js(aost, console.log, /blob|injectedScript/) +laksa19.github.io##+js(set, ASSetCookieAds, null) +laksa19.github.io##+js(nostif, 0x) +*$script,redirect-rule=noopjs,domain=laksa19.github.io +@@||guncelakademi.com^$ghide +guncelakademi.com##ins.adsbygoogle +! mangacanblog .com anti adb +mangacanblog.com##+js(aeld, load, nextFunction) +! javnew.net popups +javnew.net##+js(acs, document.querySelectorAll, adConfig) +motohigh.pl##+js(nostif, , 1) +orangespotlight.com##+js(aopr, adBlockDetected) +thenation.com##+js(aopr, ___tp) +@@||remixsearch.co^$ghide +||t3n.de/global/scripts/abdtn- +t3n.de##+js(set-local-storage-item, ADB_ACTIVE_STATUS, $remove$) +t3n.de##.outbrain-wrapper-outer +@@||erovoice.us^$ghide +ar-atech.blogspot.com##+js(aopr, adBlockDetected) +*$script,redirect-rule=noopjs,domain=kurnasional.blogspot.com +newsonthegotoday.com##+js(aopr, STREAM_CONFIGS) +newsonthegotoday.com##+js(ra, target, .clickbutton) +newsonthegotoday.com##.clickbutton:not([data-href]) +newsonthegotoday.com##.viewtable:has(> center:has-text(▼ Scroll down to Continue ▼)) > a[href][target="_blank"] +okulsoru.com##+js(acs, addEventListener, google_ad_client) +ex-foary.com##+js(aopr, app_vars.force_disable_adblock) +ex-foary.com##+js(aopr, open) +ex-foary.com##+js(nowebrtc) +ex-foary.com##.banner-inner +forex-trnd.com##+js(nosiif, visibility, 1000) +clixwarez.blogspot.com##+js(aopr, adBlockDetected) +allindiaroundup.com##+js(nostif, Detected, 500) +! thewizardsmanse .com anti adb +@@||thewizardsmanse.com^$script,1p +! fellowsfilm .com anti adb +fellowsfilm.com##+js(acs, document.querySelector, XF) +fellowsfilm.com##[data-author="Advertisement"] +! zwergenstadt .com anti adb +zwergenstadt.com##+js(aeld, load, onload) +! netaffiliation .com anti adb +netaffiliation.com##+js(acs, $, hide) +gigaho.com##+js(aopr, onload) +@@||geekdrop.com^$ghide +@@||erepublik.tools^$ghide +! ebook300.com/longfiles.com popups +ebook3000.com,longfiles.com##+js(aopw, adcashMacros) +tapchipi.com##+js(nostif, mdp) +oceanof-games.com##+js(aopr, open) +@@||insideedition.com^$ghide +hobby-machinist.com##+js(nostif, show) +hobby-machinist.com##.samCodeUnit +jacquieetmichelelite.com##+js(acs, $, show) +*$popunder,domain=jacquieetmichelelite.com +*$script,redirect-rule=noopjs,domain=puregym.com +arenabg.com##+js(aopr, AaDetector) +arenabg.com##[href^="http://bit.ly"] +@@||honeyhunterworld.com/*/js/blockadblock.js$script,1p +@@||honeyhunterworld.com^$ghide +honeyhunterworld.com##div[class*="ad_"] +dr-farfar.com##+js(aeld, , ads) +dr-farfar.com##+js(aopr, mdpDeBlocker) +dr-farfar.com##+js(nowoif) +dr-farfar.com##.essb-sharebooster +dr-farfar.com##.essb-sharebooster-overlay +||mrfog.com^$domain=dr-farfar.net +pornhat.*##+js(aopr, document.dispatchEvent) +vr.pornhat.*#@#+js(aopr, document.dispatchEvent) +pornhat.*##.bns-bl-new.bns-bl +pornhat.*##div.player-bn +pornhat.*##.video-block > .show.before-player +pornhat.*##b +pornhat.*##.top_spot +||doublepimpads.com^$3p +||pornhat.*/static/js/300x250. +yepi.com##+js(acs, $, modal) +@@||ponselharian.com^$ghide +ponselharian.com##ins.adsbygoogle +@@||gamepccrack.com^$ghide +*$xhr,frame,3p,domain=pcgamez-download.com +pcgamez-download.com##+js(aost, Math, inlineScript) +spaziogames.it##+js(acs, $, .test) +boyfriendtv.com##+js(aopw, backgroundBanner) +boyfriendtv.com##+js(aeld, click, interstitial) +boyfriendtv.com##+js(aopr, popunder) +boyfriendtv.com##li[class]:has(a[href^="https://boyfriend.show/"][rel="sponsored"]) +boyfriendtv.com##.js-toggle-content-wrapper a[href^="https://boyfriend.show/"][rel="sponsored"]:upward(.js-toggle-content-wrapper) +boyfriendtv.com##.ads-block-rightside +||cdn.nsimg.net/cache/landing^ +||catsnbootsncats2020.com^ +||boyfriendlive.com^$3p +1shortlink.com##+js(set, letShowAds, true) +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noop.js:10,domain=1shortlink.com +||youtube.com/embed/*$domain=1shortlink.com +@@||1shortlink.com^$ghide +1shortlink.com##[id*="ScriptRoot"] +! numbeo .com anti adb +@@||numbeo.com^$script,1p +||googlesyndication.com/pagead/js/adsbygoogle.j$xhr,redirect=noopjs,domain=botayit.com +vectorizer.io##+js(nostif, modal) +vectorizer.io##[href^="https://track.fiverr.com/"] +||jsdelivr.net/*/levelmaxblock.js$script,3p +@@||sfirmware.com^$ghide +||jsdelivr.net/*/adb-analytics$script,3p +sfirmware.com##+js(nano-sib) +sfirmware.com##.cc-window +sfirmware.com##.post-ads +sfirmware.com##.buy_on_amazon +hostingunlock.com##+js(acs, $, show) +*$script,redirect-rule=noopjs,domain=tgbeautymedia.blogspot.com +@@||erai-raws.info^$ghide +@@||smashresume.com^$ghide +ringsidenews.com##+js(aopr, googletag) +watchmonkonline.com##+js(aopr, open) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=motorsport.tv,redirect=google-ima.js +||static.adsafeprotected.com/vans-adapter-google-ima.js$script,domain=motorsport.tv,redirect=google-ima.js +convert-case.softbaba.com##+js(aopr, adblockDetector) +fotografareindigitale.com##+js(acs, jQuery, ai_adb) +*$script,redirect-rule=noopjs,domain=allkaicerteam.com +@@||allkaicerteam.com^$ghide +allkaicerteam.com##ins.adsbygoogle +@@||meutimao.com.br^$ghide +gomoviesfree.*##+js(aopr, glxopen) +@@||uragongaming.blogspot.com^$ghide +brandstofprijzen.info##+js(aeld, load, antiblock) +theandroidpro.com##+js(aopr, adBlockDetected) +webtor.io##+js(nowoif) +webtor.io##.alerts +webtor.io##.me-ad-container +nirjonmela.com##+js(acs, $, AdBlock) +thgss.com##+js(nosiif, adsbygoogle) +@@||thgss.com^$script,1p +u-s-news.com##+js(set, ulp_noadb, true) +redbox.com##.rb-ad-leaderboard-container +*$image,redirect-rule=2x2.png,domain=redbox.com +yggtorrent.*##+js(aopw, Fingerprint2) +thefastlaneforum.com##+js(nostif, .show, 1000) +zeeebatch.blogspot.com##+js(aopr, adBlockDetected) +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noopjs:10,domain=infolokerserang.com +@@||luscious.net^$ghide +luscious.net##.ad_lead +*$script,redirect-rule=noopjs,domain=luscious.net +luscious.net##+js(aopr, console.clear) +luscious.net##+js(nowoif) +luscious.net##a[rel$="sponsored"] +luscious.net##div[class^="adDisplay-module"] +luscious.net##.ad_section +*$script,3p,denyallow=ahacdn.me|cdn77.org|cloudflare.net|googleapis.com|jsdelivr.net|jsdelivr.map.fastly.net,from=luscious.net +luscious.net##+js(no-fetch-if, url:!luscious.net) +luscious.net##+js(set, Object.prototype.adblock_detected, false) +||luscious.net/advertisement/iframe/ +! downsub .com anti adb +@@||downsub.com^$xhr,1p +tiz-cycling-live.io##+js(acs, $, blocker) +tiz-cycling-live.io###msg +tiz-cycling.*##+js(acs, jQuery, blocker) +! azarplus.com ads +||azarplus.com/wp-content/uploads/*.gif$image,1p +@@||azarplus.com/wp-content/uploads/*Publicidad*.jpg$image,1p +@@||azarplus.com/wp-content/uploads/*Publicidad*.png$image,1p +azarplus.com##.public-banner-3 +azarplus.com##.td-all-devices > [href][target="_blank"] +azarplus.com###overbox3 +||cloudgallery.net^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation +||cloudgallery.net^$csp=script-src * 'unsafe-inline' +||imgzong.*^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation +||imgzong.*^$csp=script-src * 'unsafe-inline' +cloudgallery.net##+js(aopr, AaDetector) +cloudgallery.net##+js(aopr, console.clear) +/webroot/modern_theme/img/dwndbnr*$image,1p +dvdgayonline.com###clickfakeplayer:remove-attr(href) +5flix.top##+js(nostif, afterOpen) +5flix.top##+js(json-prune, AffiliateAdBlock) +*$xhr,3p,redirect-rule=nooptext,domain=5flix.top +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=3flix.top|8flix.top,redirect=google-ima.js +! wutime_adblock +trade2win.com##+js(nostif, .show) +gomo.to##+js(aopr, glxopen) +gomo.to##+js(nowoif) +*$script,3p,denyallow=googleapis.com,domain=gomo.to +iir.ai##+js(acs, Math, XMLHttpRequest) +iir.ai##+js(aeld, load, .appendChild) +iir.ai##+js(aopr, app_vars.force_disable_adblock) +iir.ai##+js(aopr, open) +iir.ai##+js(aopw, Fingerprint2) +iir.ai##+js(set, blurred, false) +iir.ai###link-view > div[style] + p[style] + center > [href][target] +iir.ai##form > a[href][target] +iir.ai##.box-main > a[href][target] +*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=iir.ai +||iir.ai/sw$script,1p +trendsderzukunft.de##+js(aopr, onload) +||vidlii.com/js/main.js^$script,1p +vidlii.com##+js(nosiif, visibility, 1000) +vidlii.com##+js(set, blockAdBlock, trueFunc) +vidlii.com##+js(set, adsbygoogle.loaded, true) +*$xhr,redirect-rule=noopjs,domain=vidlii.com +@@||vidlii.com^$ghide +vidlii.com##ins.adsbygoogle +docer.*##+js(set, ads_unblocked, true) +onlinetutorium.com##+js(acs, addEventListener, google_ad_client) +@@||cryptonetos.ru^$ghide +cryptonetos.ru##+js(acs, onload, adblock) +cryptonetos.ru##.carousel-inner +cryptonetos.ru##.ads +cryptonetos.ru##.popup +northwalespioneer.co.uk##+js(aopr, _sp_.mms.startMsg) +@@||indcit.com^$ghide +||google.com/adsense/domains/caf.js$script,redirect=noopjs,domain=jestrudo.pl +@@*$ghide,domain=pomponik.pl|iplsc.com +cdn77.org##+js(set, xxSetting.adBlockerDetection, false) +cdn77.org###layerName_preroll, #layerName_postroll +! nsfw batporno .com popunder +batporno.com##+js(aopr, decodeURI) +||grammarist.com/*/*.jpg$script,1p +grammarist.com###custom_html-3, #custom_html-5 +grammarist.com##small +vidload.net##+js(aopr, AaDetector) +sandiegouniontribune.com##+js(aopr, googlefc) +almezoryae.com##+js(acs, document.createElement, adblock) +femalefirst.co.uk##+js(aopr, ppload) +@@||shana.pe.kr^$ghide +shana.pe.kr##ins.adsbygoogle +! perfectmomsporn .com ads + popunder +perfectmomsporn.com##+js(aopr, Aloader) +perfectmomsporn.com##+js(noeval) +! tubexxxone .com ads + popunder +tubexxxone.com##+js(noeval) +tubexxxone.com##+js(aopr, Aloader.serve) +! theregister.co.uk +theregister.co.uk##+js(aopr, RegAdBlocking) +theregister.co.uk##+js(acs, document.createElement, a.adm) +remaxhd.*##+js(aopr, decodeURI) +remaxhd.*##+js(nowoif) +shorteet.com##+js(set, blurred, false) +shorteet.com##+js(set, open, undefined) +shorteet.com##.banner +*$script,3p,denyallow=gstatic.com|recaptcha.net,domain=shorteet.com +mobilelegends.shop##+js(nano-sib) +*$image,redirect-rule=2x2.png,domain=mobilelegends.shop +gogodl.com##+js(acs, document.getElementById, adblock) +cdiscount.com##+js(aopr, __eiPb) +@@||toyota-club.eu^$ghide +@@||9docu.*^$ghide +@@||k258059.net^$ghide +vipracing.*##+js(acs, $, show) +vipracing.*##+js(aopr, AaDetector) +vipracing.*##[href="https://www.tvbarata.club/"] +vipracing.*###vpp +sportstream.live##+js(aopr, checkABlockP) +@@||poring.world^$ghide +poring.world##[data-ad-slot] +||survivalservers.com^$frame,domain=ads.bdcraft.net +@@||ads.bdcraft.net/js/interstitial.js$script,1p +ddaynormandy.forumgaming.fr,neogeo-system.com##a[onclick][target]:upward(2) +! btdb .eu popunder +btdb.*##+js(aeld, , _0x) +btdb.*##+js(aopr, console.clear) +btdb.*##+js(aeld, , Date) +btdb.*##+js(aopr, open) +*$frame,script,xhr,3p,denyallow=bootstrapcdn.com|cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wp.com|x.com,domain=btdb.* +btdb.*##.alert-dismissible +btdb.*##.alert +ujszo.com##+js(set, Drupal.behaviors.adBlockerPopup, null) +naniplay.com##+js(nowoif) +@@||3amid-url.blogspot.com^$ghide +! wojtekczytawh40k.blogspot.com anti-adb +wojtekczytawh40k.blogspot.com##+js(acs, addEventListener, ADBLOCK) +! atdhe .cc / sx popups, ads +atdhe.*##+js(popads-dummy) +atdhe.*##[href^="https://horti.brovada.eu/"] +atdhe.*###bannerInCenter +||bitcoines.com^$3p +@@||scaleya.com^$ghide +files.im##+js(acs, decodeURI, decodeURIComponent) +files.im##+js(nano-stb, tick) +||files.im/ppa +pharmaceutical-technology.com##+js(acs, jQuery, click) +||pharmaceutical-technology.com/wp-content/*skin.jpg$image +*$xhr,redirect-rule=nooptext,domain=savesubs.com +savesubs.com##+js(nowoif) +lebahmovie.com##+js(aopr, decodeURI) +||lebahmovie.com/sw.js$script,1p +lebahmovie.com##.idmuvi-topbanner-aftermenu +*.gif$domain=lebahmovie.com,image +creditcardrush.com##+js(nostif, adsBlocked) +||doubleclick.net/pagead/id$xhr,redirect=nooptext,domain=creditcardrush.com +@@||dynamicpapers.com^$ghide +dynamicpapers.com##ins.adsbygoogle +dynamicpapers.com##.ezoic-ad +newsmax.com##+js(set, fake_ad, true) +@@||mintik.com^$ghide +theouterhaven.net,watchallchannels.com,wikipekes.com##+js(acs, jQuery, ai_adb) +semuanyabola.com##+js(acs, decodeURIComponent, ai_) +watchallchannels.com##[href^="https://www.xvinlink.com/"] +watchallchannels.com##.widget-title +interracial.com##+js(nowoif) +interracial.com##[src^="https://www.interracial.com/player/html.php"] +@@||memexcomputer.it^$ghide +memexcomputer.it##ins.adsbygoogle +*$3p,denyallow=google.com|googleapis.com|gstatic.com,domain=uplinkto.* +porno-tour.*##+js(aopr, document.dispatchEvent) +porno-tour.*##+js(nostif, innerText, 2000) +popcornstream.*##+js(nostif, blur) +popcornstream.*##+js(aeld, , btoa) +oyungibi.com##+js(set, jQuery.adblock, false) +turkmmo.com##+js(acs, $, AdBlock) +turkmmo.com##+js(nostif, samOverlay) +@@||firefiles.org^$ghide +jumpmanclubbrasil.com.br##+js(acs, addEventListener, nextFunction) +jumpmanclubbrasil.com.br##.home-ad-con +! rentbyowner .com popunder +rentbyowner.com##+js(nowoif, !refine?search) +@@||psprices.com^$ghide +psprices.com##[href*=".smartadserver.com"] +ikaza.net##+js(aopr, showAds) +! anti adb zerozero .pt +@@||zerozero.pt^$ghide +||fegortius.com^$3p +||weblion777.github.io^$3p +||corported.com^$3p +||kataprius.com^ +itechfever.com##+js(nobab) +acdriftingpro.com##+js(nostif, native) +acdriftingpro.com##+js(nano-sib, countdown, *, 0.001) +urlpay.net##+js(nano-sib) +urlpay.net##^script:has-text('shift') +urlpay.net##^script:has-text(\'shift\') +urlpay.net##+js(acs, String.fromCharCode, 'shift') +@@||the-race.com^$ghide +the-race.com##.ad_container_default +savealoonie.com##+js(aopr, mdp_deblocker) +tempr.email##+js(set, adblock, false) +tempr.email###HeaderBanner +lkc21.net##+js(aopr, AaDetector) +lkc21.net##+js(nowoif) +iptvspor.com##+js(aopr, adBlockDetected) +plugincim.com##+js(aopr, adBlockDetected) +fivemturk.com##+js(aopr, adBlockDetected) +fivemturk.com##[src^="https://i.hizliresim.com/"] +sosyalbilgiler.net##+js(aopr, adBlockDetected) +nadidetarifler.com##+js(set, koddostu_com_adblock_yok, null) +nadidetarifler.com##.advert-side +hwreload.it##+js(acs, $, show) +suzylu.co.uk##+js(set, adsbygoogle, trueFunc) +suzylu.co.uk##+js(set, player.ads.cuePoints, undefined) +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=suzylu.co.uk +lenkino.*##+js(nostif, innerText, 2000) +mail.de###euccBanner +positive-feedback.com##.ad-row-horizontal +positive-feedback.com##.banner-right +positive-feedback.com##.right-ad-wrapper +positive-feedback.com##.archive_ad_block +positive-feedback.com##.load-screen +medicalnewstoday.com##div[id="__next"] > div[class^="css-"] > div > section > div:matches-css-before(content: /ADVERTISEMENT/) +medicalnewstoday.com##div[id="__next"] > div[class^="css-"] > aside:has(> div:matches-css-before(content: /ADVERTISEMENT/)) +medicalnewstoday.com##div[data-dynamic-ads] +medicalnewstoday.com##div[class^="css-"]:matches-css-before(content: /ADVERTISEMENT/) +medicalnewstoday.com##hl-adsense +medicalnewstoday.com##.css-rp3d6 +pekalongan-cits.blogspot.com##+js(aeld, load, nextFunction) +cheatglobal.com##+js(acs, addEventListener, nextFunction) +mega-hentai2.blogspot.com##+js(aopr, adBlockDetected) +macrumors.com##+js(aopr, adthrive) +underhentai.net##+js(nano-sib) +underhentai.net##+js(nowoif, !t.me) +underhentai.net##.hidden-sm +underhentai.net##.visible-xs +underhentai.net##[onclick^="window.open('https://landing."] +underhentai.net##.sidebar > div[class] > .loading +||adf.underhentai.net^$frame,1p +palermotoday.it##+js(nostif, bADBlock) +discordfastfood.com##+js(nostif, clientHeight) +thumpertalk.com##+js(nostif, location) +*$xhr,redirect-rule=nooptext,domain=thumpertalk.com +@@||thumpertalk.com^$ghide +thumpertalk.com##.focus-ad +miniurl.*##+js(aopr, app_vars.force_disable_adblock) +miniurl.*##+js(set, blurred, false) +miniurl.*##.banner +miniurl.*##div[style="width:970px;height:90px;display: inline-block;margin: 0 auto"] +*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=miniurl.* +||miniurl.*/sw.js$script,1p +arabic-robot.blogspot.com##+js(acs, document.createElement, adblock) +arabic-robot.blogspot.com###preloader +! popups https://forums.lanik.us/viewtopic.php?f=64&t=44458 +mavanimes.co##+js(aopr, AaDetector) +freegogpcgames.com##+js(nowoif) +freegogpcgames.com##+js(no-xhr-if, googlesyndication) +freegogpcgames.com##+js(nostif, show) +@@||gdl.freegogpcgames.xyz^$ghide +gdl.freegogpcgames.xyz##+js(nano-sib, secondsLeft) +! rizaldi.web.id anti-adb +@@||rizaldi.web.id^$ghide +! smiechawatv.pl anti-adb +smiechawatv.pl##+js(nowoif) +smiechawatv.pl##[href^="http://smiechawatv.cupsell.pl/"] +smiechawatv.pl##[href^="https://www.cda.pl/smiechawaTV/"] +@@||get-digital-help.com^$ghide +get-digital-help.com##.ezoic-ad +get-digital-help.com##.adthrive-ad +! nefree .com anti adb +@@||nefree.com^$ghide +onworks.net##+js(set, adBlockDetected, null) +onworks.net###ja-container-prev-b +! dlapk4all .com popups +dlapk4all.com##+js(aopr, glxopen) +dlapk4all.com##+js(aeld, , _0x) +apk4all.com##.control.field > .is-danger.button +! 4tymode. win anti adb +4tymode.win##+js(aeld, load, nextFunction) +@@||watchonlyfoolsandhorses.com^$ghide +watchonlyfoolsandhorses.com##[id*="ScriptRoot"] +watchonlyfoolsandhorses.com##.module_single_ads +@@||brownsboys.com^$ghide +@@||mrsbrownsb.blogspot.com^$ghide +mrsbrownsb.blogspot.com##.section.featured-post +qpython.club##+js(aeld, DOMContentLoaded, AdBlock) +freep.com##+js(set, adsEnabled, true) +freep.com##.teal-video-wrap +freep.com##.gnt_em_vp__tavp.gnt_em +freep.com##a.gnt_cw_sl +freep.com##.gnt_ar_xb +downloadsoft.net##+js(acs, document.createElement, adblock) +downloadsoft.net##+js(set, better_ads_adblock, 1) +@@||teledyski.info^$ghide +teledyski.info###r-s1 +! songsio. com popup +*$script,3p,domain=songsio.com +@@||sledujserialy.*^$script,1p +||sledujserialy.*/theme/json/episode.ad.php^$frame +sledujserialy.*##div[id][style="position: absolute; top: 0; left: 0; width: 100%; height: 380px; text-align: center;"] +sledujserialy.*###super_secret_ad +@@||taiba-dz.blogspot.com^$ghide +! nysainfo.pl anti-adb +nysainfo.pl##+js(aopr, mdpDeBlocker) +nysainfo.pl###mdp-deblocker-js-disabled +! napolipiu.com anti-adb +napolipiu.com##+js(aopr, tie) +manpeace.org##+js(aopr, document.write) +@@||judicialcaselaw.com^$script,1p +@@||boardgamesonline.net^$ghide +boardgamesonline.net##ins.adsbygoogle +! anti adb games.newsobserver .com +newsobserver.com##+js(set, Adv_ab, false) +nohat.cc##+js(aopr, ignore_adblock) +nohat.cc##+js(aopr, $.prototype.offset) +nohat.cc##+js(no-fetch-if, adsbygoogle) +||nohat.me^$3p +@@||nohat.me/s?*k=$xhr,domain=png.is|nohat.cc +! line25 .com popunder +line25.com##+js(aopr, decodeURI) +hmc-id.blogspot.com##+js(nostif, AdBlock) +noxx.to##+js(aopr, AaDetector) +noxx.to##+js(rmnt, script, window[_0x) +azmovies.to##+js(acs, atob, _0x) +thelayoff.com##+js(nostif, alert) +thelayoff.com##.epp-bf +fuskator.com##+js(aopr, ea.add) +fuskator.com##+js(noeval) +bostoncommons.net##+js(aopr, LieDetector) +bostoncommons.net##+js(nostif, adsBlocked) +isminiunuttum.com##+js(acs, document.getElementById, block) +@@||bigbrothercanada.ca^$ghide +*$script,redirect-rule=noopjs,domain=bigbrothercanada.ca +bigbrothercanada.ca##.video-adTile +bigbrothercanada.ca##.adWrapper +@@||bolognatoday.it^$ghide +! newtorrentgame .com popups +||d2klx87bgzngce.cloudfront.net^$script,redirect=noopjs +newtorrentgame.com##^script:has-text('shift') +newtorrentgame.com##^script:has-text(\'shift\') +||allbloggingtips.com^$3p +! sunbtc.space anti-adb +@@||sunbtc.space^$ghide +sunbtc.space##+js(set, adBlock, false) +suanoticia.online##+js(nano-sib) +bibliotechsuper.com##[href="https://bibliotechsuper.com/"] +||short.pe^$3p +art19.com##+js(json-prune, ad_pods.0.ads.0.segments.0.media ad_pods.1.ads.1.segments.1.media ad_pods.2.ads.2.segments.2.media ad_pods.3.ads.3.segments.3.media ad_pods.4.ads.4.segments.4.media ad_pods.5.ads.5.segments.5.media ad_pods.6.ads.6.segments.6.media ad_pods.7.ads.7.segments.7.media ad_pods.8.ads.8.segments.8.media) +art19.com##.art19-notifications-list +||marketbeat.com/scripts/modal/* +marketbeat.com##+js(aeld, mouseleave, NativeDisplayAdID) +marketbeat.com###mb-bar +marketbeat.com##[id*="pnlAd"] +marketbeat.com##a[href*="NativeDisplayAdID"] +linkconfig.com##+js(nano-sib) +*$script,redirect-rule=noopjs,domain=onbatch.my.id +@@||onbatch.my.id^$ghide +onbatch.my.id##[id*="ScriptRoot"] +@@||controlc.com^$ghide +||twitch.tv^$xhr,3p,domain=controlc.com +controlc.com##[href^="http://redact.dev"] +legendas.dev##+js(refresh-defuser) +! boost.ink link-hijack // boost.ink/ia7o +boost.ink##+js(disable-newtab-links) +dailymaverick.co.za##+js(nostif, t(), 0) +notiziemusica.it##+js(aopw, adBlockDetected) +androgamer.org##+js(acs, jQuery, ai_adb) +@@||fiches-auto.fr^$ghide +fiches-auto.fr###bulle_avvis +fiches-auto.fr##.adsbygoogle:style(visibility: collapse !important) +ludigames.com##+js(nostif, ads) +@@||pandora.com/web-version/*.json$xhr,1p +*$script,redirect-rule=noopjs,domain=pandora.com +||pandora.com/static/ads/omsdk-$script,redirect=noop.js +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=pandora.com,redirect=google-ima.js:10 +||clk.sh^$3p +hentaipornpics.net##+js(acs, $, zendplace) +hentaipornpics.net##+js(aeld, mouseover, event.triggered) +@@||templateshub.net^$ghide +gaypornhdfree.*##+js(aeld, DOMContentLoaded, adsBlocked) +*$xhr,3p,redirect-rule=nooptext,domain=podu.me +*/ads$media,redirect-rule=noopmp3-0.1s,domain=podu.me +||podu.me/*/advertisement^$xhr,1p +podu.me##.adv-contanier +programmiedovetrovarli.it##+js(aost, encodeURIComponent, inlineScript) +@@||bolsanow.com^$ghide +funzen.net##+js(nostif, mdpDeBlocker) +funzen.net##+js(nowoif) +subsvip.com##+js(nano-stb, , 10000, 0) +subsvip.com###botaoBloqueio +subsvip.com###botaoLink:style(display: block !important;) +smoner.com##+js(aopr, app_vars.force_disable_adblock) +smoner.com##+js(set, blurred, false) +smoner.com##.form-group:has(> div#box[style="display: inline-block;"]) +*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=smoner.com +javcl.com##+js(nostif, 0x) +javcl.com##+js(nosiif, 0x) +javcl.com###wrapfabtest:style(height:1px !important;width:1px !important) +thesukan.net##+js(aost, String.prototype.charCodeAt, ai_) +! scrubson. blogspot.com anti adb + popups +scrubson.blogspot.com##+js(aopr, adcashMacros) +! nsfw aquariumgays .com anti adb + popups +aquariumgays.com##+js(aopr, _cpp) +aquariumgays.com##+js(acs, eval, replace) +! redecanais.bz ads +redecanais.*###guerejo +redecanais.*###guerejoback +redecanais.*###iframeCore____ +allgamesejogos.*,bemestarglobal.*,gamesgo.*,lojadebicicleta.com.br,redecanais.*##[id="colunas"]:style(display: block !important;) +vz.lt##+js(acs, $, adblock) +vz.lt##.banners +javxxx.me###player_3x2_container_inner +*/player/plugins/vast-*.js$script +testlanguages.com##+js(set, sgpbCanRunAds, true) +! nsfw porncomics .me popups +porncomics.me##+js(aopr, open) +paginadanoticia.com.br##+js(aopr, pareAdblock) +paginadanoticia.com.br##.banner-img +tr.link##+js(nowoif, ppcnt) +tr.link##+js(ra, data-ppcnt_ads, main[onclick]) +||tr.link/js/sweets.js$script,1p +||tr.link/*/sweet.js$script,1p +||tr.link/push/push.js$script,1p +tr.link##.sweet-alert +tr.link##.sweet-overlay +faucetdump.com##+js(acs, $, ads) +orsm.net##+js(aopr, open) +fernsehserien.de##+js(aopr, googlefc) +@@||precitaj.si^$ghide +precitaj.si##ins.adsbygoogle +lg-firmwares.com##+js(nano-sib) +@@||lg-firmwares.com^$ghide +lg-firmwares.com##.cc-window, .buy_on_amazon, .post-ads +animeblix.*##+js(nowoif) +hd-tch.com##+js(acs, addEventListener, nextFunction) +2kspecialist.net##+js(acs, addEventListener, blocker) +digit77.com##+js(acs, addEventListener, Blocker) +! pcmag.com whitespace caused by a necessary exception in EasyList +pcmag.com###adkit_billboard:style(padding-top: 0px!important;) +! kutubistan.blogspot.com/softdroid4u.blogspot.com anti-adb +kutubistan.blogspot.com,softdroid4u.blogspot.com##+js(acs, addEventListener, blocker) +! gudangfirmwere.com anti-adb +gudangfirmwere.com##+js(acs, addEventListener, AdBlocker) +gbadamud.blogspot.com##+js(acs, addEventListener, blocker) +gbadamud.blogspot.com##.pinterestjo, .googlejo +javtiful.com##+js(rmnt, script, /adb/i) +javtiful.com##+js(acs, document.addEventListener, adsBlocked) +javtiful.com##+js(acs, String.fromCharCode, 'shift') +javtiful.com##+js(acs, addEventListener, -0x) +javtiful.com##+js(aopr, decodeURI) +javtiful.com##body > div[style*="z-index:"] +javtiful.com##[href^="//"][rel="nofollow norefferer noopener"] +supervideo.*##+js(aopr, AaDetector) +/tag*.js$script,domain=supervideo.tv|supervideo.one|supervideo.cc +! nsfw thisav .com popups +||intellipopup.com^$script,redirect=noopjs +@@||enterinit.com^$ghide +enterinit.com##.bs-wrap-gdpr-law +enterinit.com##*::selection:style(background-color:#338FFF!important) +||cdn.jsdelivr.net/*/dist/js/wgd-core.min.js$script +premid.app##+js(nosiif, innerHTML) +premid.app##+js(nano-sib, clearInterval) +@@||premid.app/ads/ads$xhr,1p +@@||premid.app^$ghide +premid.app##ins.adsbygoogle +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=premid.app +thejobsmovie.com##+js(nostif, adsBlocked) +@@||techdracula.com^$ghide +techdracula.com##ins.adsbygoogle +! As of 2020-04-09, new filters will be added to year-based sublists +! Link shortener filters go into their own dedicated list +! *** filters/ubo-link-shorteners.txt *** +! gplinks all domains (gplinks.co/EWu8) +@@*$ghide,domain=gplinks.*|qrixpe.com|powergam.online|sanadegreecollege.in +sanadegreecollege.in,powergam.online,qrixpe.com##center, .main-content, .myTimerDiv, .myTimer, .SmileyBanner, .myWaitingDiv:others() +sanadegreecollege.in,powergam.online,qrixpe.com##+js(set, document.hidden, false) +sanadegreecollege.in,powergam.online,qrixpe.com##+js(aopw, AdBDetected) +sanadegreecollege.in,powergam.online,qrixpe.com##+js(set, navigator.brave, undefined) +sanadegreecollege.in,powergam.online,qrixpe.com##+js(trusted-set, document.activeElement, { "value": {"tagName": "IFRAME" }}, runAt, 2) +sanadegreecollege.in,powergam.online,qrixpe.com##+js(trusted-click-element, '31000, .VerifyBtn, 100, .NextBtn, 33000') +sanadegreecollege.in,powergam.online,qrixpe.com,gplinks.*,get2.in##+js(rpnt, script, intentUrl;, destination;) +||tracki.click/ads/js/embed.js$script +gplinks.*##a.exclude-pop.smartlink, .exclude-pop.quiz-container, #PlayQuiz, #quiz-frame, .exclude-popad +gplinks.*##+js(set, blurred, false) +gplinks.*##+js(aopr, clickCount) +||gamezop.com^$domain=gplinks.* +*$script,3p,denyallow=cloudflare.com|github.io|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|recaptcha.net|tipsforce.com|unpkg.com,domain=gplinks.* +tech8s.net,drop.carbikenation.com,link.djbassking.live,tech5s.co,game5s.com##+js(nano-sib, /.?/, *, 0.02) +tech8s.net,drop.carbikenation.com,link.djbassking.live,tech5s.co,game5s.com###go_d2:style(display: inline-block !important;) +tech8s.net,drop.carbikenation.com,link.djbassking.live,tech5s.co,game5s.com##.fluidprimary, #go_d, .adb_detected > h2 +tech8s.net,drop.carbikenation.com,link.djbassking.live,tech5s.co,game5s.com##+js(rpnt, script, /false;/gm, true;, condition, isSubscribed) +tech8s.net,drop.carbikenation.com,link.djbassking.live,tech5s.co,game5s.com##+js(rpnt, script, ('t_modal'), ('go_d2')) +droplink.co##p, .form-link, footer +droplink.co##+js(aopr, app_vars.force_disable_adblock) +droplink.co##+js(set, blurred, false) +! XpShort New (http://xpshort.com/Alpha_5_Complete_Batch) +coonba.com###wpsafe-link:style(display: block !important;) +coonba.com###wpsafe-link, .wpsafelink-multiple-pages, .wpsl-mp:others() +! Follow Button +!coonba.com###wpsafelink-landing, .wpsl-mp-text, .wpsl-mp, #wpsafe-wait1, #wpsafe-generate, .wpsafe-btn, ._th-container:others() +!coonba.com##+js(nano-sib, /.?/, *, 0.02) +xpshort.com##+js(rpnt, script, counter_start":"load, counter_start":"DOMContentLoaded) +xpshort.com##+js(set, go_popup, {}) +xpshort.com##+js(set, blurred, false) +adrinolinks.com##+js(rpnt, script, /window\.location\.href\s*=\s*"intent:\/\/([^#]+)#Intent;[^"]*"/gm, window.location.href = "https://$1") +adrinolinks.com##+js(nostif, alert, 2000) +carrnissan.com###page:style(min-height: initial !important;) +carrnissan.com###tp-snp2:style(display: block !important) +carrnissan.com##.captcha-check, #tp-snp2, #countdown:others() +carrnissan.com##+js(rmnt, script, detectAdBlock) +carrnissan.com##+js(set, count, 0) +idmextension.xyz##+js(rpnt, script, /"http.*?"/, "", condition, REDIRECT_URL) +idmextension.xyz##+js(set, count, 0) +idmextension.xyz###tp98, #btn6:style(display: block !important;) +idmextension.xyz##[id$="-Ads"], [id*="-gpt-ad"], center > h3, #skull, #content, #btnx, .mh-clearfix.mh-wrapper +kogap.xyz##+js(rpnt, script, /android/gi, false, stay, 1) +publicearn.*##+js(rpnt, script, Android/, false/, stay, 1) +publicearn.*##+js(rpnt, script, alert, false) +publicearn.*##+js(rpnt, script, 2000, 10) +publicearn.*##.page-header > h3, .banner, .bg-soft-primary, [style="margin-top: 250px;"], .box-main > center > center > [href], video +publicearn.*##[href*="t.me"] +@@*$ghide,domain=imagereviser.com|upshrink.com +@@*$xhr,domain=imagereviser.com|upshrink.com +imagereviser.com##center, [src*="google.com/recaptcha/"]:others() +imagereviser.com##[id*="gpt_unit"], [id*="gpt-ad"], [href] +imagereviser.com##+js(trusted-replace-argument, getComputedStyle, 0, body, condition, getComputedStyle) +imagereviser.com##+js(rmnt, script, /ai_|b2a/) +imagereviser.com##+js(set, hasFocus, trueFunc) +upshrink.com##+js(trusted-set, navigator.userAgent, '{"value": "Mozilla/5.0 (iPhone14,3; U; CPU iPhone OS 15_0 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/19A346 Safari/602.1"}') +upshrink.com##+js(set, blurred, false) +upshrink.com##.banner-inner +! Mlwbd Download +tech24us.com,freethemesy.com##+js(nano-sib, counter, *, 0.02) +! psa.wf Download Shorteners +@@||get-to.link^$ghide +get-to.link##+js(aopr, exoJsPop101) +get-to.link##+js(aopr, document.dispatchEvent) +get-to.link##+js(nowoif) +get-to.link###genesis-modal +healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,mythvista.com,livenewsflix.com##+js(set, timeSec, 0) +healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,mythvista.com,livenewsflix.com##+js(nano-stb, getlink, *, 0.001) +healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,mythvista.com,livenewsflix.com##+js(noeval-if, replace) +healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,mythvista.com,livenewsflix.com###gads +healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,mythvista.com,livenewsflix.com##.getlink, #getlink:remove-attr(disabled) +healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,mythvista.com,livenewsflix.com##.container:style(font-size: 0px !important;) +healthfirstweb.com,vocalley.com,yogablogfit.com,howifx.com,mythvista.com,livenewsflix.com##.container > center:others() +clk.*##+js(nowoif) +clk.*##+js(set, blurred, false) +||rdrclk.com^ +||clk.wiki/ads$frame +||cmp.quantcast.com^$domain=healthfirstweb.com|vocalley.com|yogablogfit.com|howifx.com|en.financerites.com|junkyponk.com|mythvista.com +! easysky.in focus and timer +easysky.in,veganab.co##+js(set, blurred, false) +veganab.co,camdigest.com##+js(nano-sib, /wpsafe|wait/, *, 0.001) +veganab.co,camdigest.com##+js(rmnt, script, deblocker) +veganab.co,camdigest.com###wpsafe-link, #section2:style(display: block !important;) +veganab.co,camdigest.com###wpsafe-link, #section2:others() +techy.veganab.co##.text-left, div.inst.box, .banner-inner +! earn2me.com (earn2me.com/kVFvyX) +nichapk.com,easyworldbusiness.com###yuidea-snp:style(display: block !important;) +nichapk.com,easyworldbusiness.com##center, [src*="google.com/recaptcha/"]:others() +nichapk.com,easyworldbusiness.com##+js(nano-sib, timer, *, 0.02) +nichapk.com,easyworldbusiness.com###tie-wrapper:style(min-height:initial! important;) +blog.filepresident.com##.box-main > [src], .content, .r-bg, .short, .download-btn, h4 +@@||exeo.app^$ghide +exeo.app##.actions, .earning-steps ~*, .earning-steps, header, footer, .ad-element +@@*$ghide,domain=hipsonyc.com|tech.pubghighdamage.com|techkhulasha.com|tech.trendingword.com|scriptgrowagarden.com +scriptgrowagarden.com,gyanitheme.com,tech.trendingword.com,hipsonyc.com,tech.pubghighdamage.com,techkhulasha.com##+js(nano-stb, /getElementById|gotoo/, *, 0.02) +scriptgrowagarden.com,gyanitheme.com,tech.trendingword.com,hipsonyc.com,tech.pubghighdamage.com,techkhulasha.com##+js(rpnt, script, /\d{2}00/gms, 10, condition, /timer|count|getElementById/gms) +scriptgrowagarden.com,gyanitheme.com,tech.trendingword.com,hipsonyc.com,tech.pubghighdamage.com,techkhulasha.com##+js(rpnt, script, /^window\.location\.href.*\'$/gms, , condition, buoy) +scriptgrowagarden.com,gyanitheme.com,tech.trendingword.com,hipsonyc.com,tech.pubghighdamage.com,techkhulasha.com##+js(rpnt, script, /1000|100|6|30|40/gm, 1, condition, /timerSeconds|counter/) +scriptgrowagarden.com,gyanitheme.com,tech.trendingword.com,hipsonyc.com,tech.pubghighdamage.com,techkhulasha.com###gotolink, #getlink, #notarobot, .bt-success, #waiting, #pop-button, .modal-content, [src*="cloudflare.com"]:others() +scriptgrowagarden.com,gyanitheme.com,tech.trendingword.com,hipsonyc.com,tech.pubghighdamage.com,techkhulasha.com###gotolink[disabled]:remove-attr(disabled) +scriptgrowagarden.com,gyanitheme.com,tech.trendingword.com,hipsonyc.com,tech.pubghighdamage.com,techkhulasha.com##+js(set, navigator.brave, undefined) +scriptgrowagarden.com,gyanitheme.com,tech.trendingword.com,hipsonyc.com,tech.pubghighdamage.com,techkhulasha.com##+js(rpnt, script, getlink.removeClass('hidden');, gotolink.removeClass('hidden');) +golink.bloggerishyt.in##+js(set, blurred, false) +golink.bloggerishyt.in##.blog-item, .banner-inner, footer +||buoydeparturediscontent.com^$all +! LinkShortify (https://lksfy.com/ovKOaZ) +sharclub.in##+js(aopr, AdBDetected) +sharclub.in##.tag, #bottom-container-2, #bottom-container-timer:others() +sharclub.in###bottomButton:style(display: block !important) +sharclub.in##+js(rpnt, script, timeLeft = duration, timeLeft = 0) +! owllink.net & birdurls.com (go.owllink.net/1wij6ola) +uptechnologys.com###yuidea-snp, #btn6:style(display: block !important;) +uptechnologys.com###yuidea-snp, #btn6, center, [src*="google.com/recaptcha"]:others() +uptechnologys.com##+js(nano-sib, /.?/, *, 0.001) +uptechnologys.com###yuidea-snp, #btn6, #yuidea, #countdown:others() +uptechnologys.com##+js(acs, eval, replace) +||cmp.quantcast.com^$domain=uptechnologys.com|sevenjournals.com +birdurls.com##+js(nowoif) +birdurls.com###bg_popup +birdurls.com##+js(set, blurred, false) +birdurls.com##.box-main p +birdurls.com##.box-main center +birdurls.com###link-view > br +*$frame,script,3p,denyallow=consensu.org|google.com|gstatic.com|recaptcha.net|quantcast.com|cloudflare.com,domain=birdurls.com +hit-films.com###btn6:style(display: block !important;) +hit-films.com###btn6:others() +utkarshonlinetest.com,financewada.com##+js(nano-sib, /.?/, *, 0.02) +utkarshonlinetest.com,financewada.com##+js(rc, no_display) +utkarshonlinetest.com,financewada.com##h4, .get_btn:others() +utkarshonlinetest.com,financewada.com##.process, .txt_top +utkarshonlinetest.com,financewada.com##.no_display:style(display: block!important; opacity: 1!important) +v2links.me##.banner-page .container.links:style(height: fit-content! important;) +v2links.me###footer +/nt.js$domain=fc-lc.*|jobzhub.store|fitdynamos.com|labgame.io|fc.lc +fc.lc,fc-lc.*###iframe_id, .text-left, .py-4.text-center.footer-copyright +fc.lc,fc-lc.*##+js(rmnt, script, /DName|#iframe_id|AdscoreSignatureLoaded/) +||cdn.jsdelivr.net/npm/*/bulma.min.css$stylesheet,domain=jobzhub.store|fitdynamos.com|labgame.io|fc.lc +jobzhub.store,fitdynamos.com,labgame.io##+js(rpnt, script, stopTimeout();, startTimeout();) +jobzhub.store,fitdynamos.com,labgame.io##+js(aeld, /visibilitychange|blur/) +! Backup +jobzhub.store,fitdynamos.com,labgame.io##+js(aeld, blur, stopCountdown) +jobzhub.store,fitdynamos.com,labgame.io#@#+js(rpnt, script, /initialTimeSeconds = \d+/, initialTimeSeconds = 7) +jobzhub.store,fitdynamos.com,labgame.io#@#+js(nano-sib, tid, *, 0.02) +jobzhub.store,fitdynamos.com,labgame.io##+js(rpnt, script, stopCountdown();, resumeCountdown();) +jobzhub.store,fitdynamos.com,labgame.io###step, #next, #scroll, #glink, #countdown, #surl, #ctext, .btn-danger.btn, #cf-section:others() +jobzhub.store,fitdynamos.com,labgame.io##+js(rmnt, script, close-modal) +jobzhub.store,fitdynamos.com,labgame.io##+js(noeval-if, ppuQnty) +jobzhub.store,fitdynamos.com,labgame.io##+js(trusted-set-cookie, ad_expire=true;, $now$) +||cdn.jsdelivr.net/npm/*/bulma.min.css$stylesheet,domain=jobzhub.store|fitdynamos.com|labgame.io +||curryfielddistribution.com^$all +||antonellapouncedcrewels.com^$all +||tophostingapp.com/dwn-$image +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=hotmediahub.com|terabox.fun|fansonlinehub.com|teralink.me|terashare.me|teraearn.com +@@*$ghide,domain=hotmediahub.com|terabox.fun|fansonlinehub.com|teralink.me|terashare.me|teraearn.com +||gamerplay*.space^$domain=hotmediahub.com|terabox.fun|fansonlinehub.com|teralink.me|terashare.me|teraearn.com +fansonlinehub.com,hotmediahub.com,terabox.fun,teralink.me,terashare.me,teraearn.com##body:style(overflow: auto !important;) +fansonlinehub.com,hotmediahub.com,terabox.fun,teralink.me,terashare.me,teraearn.com##[id^="pop-ad"], div.artical-content, .full-box, .bottom-adsense, .article-recommend, .article-next, [id^="ad-box-"], .full-ctr +terabox.fun##.short-link-home-bottom +fansonlinehub.com,hotmediahub.com,terabox.fun,teralink.me,terashare.me,teraearn.com##+js(json-prune, web_share_ads_adsterra_config wap_short_link_middle_page_ad wap_short_link_middle_page_show_time data.ads_cpm_info) +fansonlinehub.com,hotmediahub.com,terabox.fun,teralink.me,terashare.me,teraearn.com##+js(nano-stb, value, *) +fansonlinehub.com,hotmediahub.com,terabox.fun,teralink.me,terashare.me,teraearn.com##+js(nano-sib, clearInterval, *) +4funbox.com,nephobox.com,1024tera.com,terabox.*##+js(set, Object.prototype.isAllAdClose, true) +4funbox.com,nephobox.com,1024tera.com,terabox.*##.ad-eggplant, .operate-box +terabox.com##.shadow +@@||linkvertise.com^$ghide +linkvertise.com##+js(acs, addEventListener, DOMNodeRemoved) +linkvertise.com##+js(acs, document.dispatchEvent, CustomEvent) +linkvertise.com##+js(acs, onload, adsbygoogle) +linkvertise.com##+js(aeld, load, nextFunction) +linkvertise.com##+js(json-prune, data.meta.require_addon data.meta.require_captcha data.meta.require_notifications data.meta.require_og_ads data.meta.require_video data.meta.require_web data.meta.require_related_topics data.meta.require_custom_ad_step data.meta.og_ads_offers data.meta.addon_url data.displayAds data.linkCustomAdOffers) +linkvertise.com##+js(json-prune, data.getDetailPageContent.linkCustomAdOffers.[-].title) +linkvertise.com##+js(json-prune, data.getTaboolaAds.*) +linkvertise.com##+js(set, isAdBlockActive, false) +linkvertise.com##.skeleton__image > ngx-skeleton-loader[appearance="line"] > span.progress:empty +||streamrail.com^$script,domain=linkvertise.* +! link.vipurl.in/nyzo3 +m.jobinmeghalaya.in##+js(no-fetch-if, googlesyndication) +m.jobinmeghalaya.in##.centered, [src*="iamnotrobot.png"], #wpsafe-link, #wpsafelink-landing, #wpsafe-generate:others() +m.jobinmeghalaya.in##+js(rpnt, script, /10|20/, 0, condition, /countdownSeconds|wpsafelinkCount/) +m.jobinmeghalaya.in##+js(rpnt, script, /1000|1700|5000/gm, 10, condition, /countdownSeconds|wpsafelinkCount/) +vipurl.in##div.banner-inner, footer +vipurl.in##+js(set, blurred, false) +link.vipurl.in##+js(rpnt, script, /window\.location\.href\s*=\s*"intent:\/\/([^#]+)#Intent;[^"]*"/gm, window.location.href = "https://$1") +link.vipurl.in##+js(nostif, alert, 2000) +liteshort.com##+js(rpnt, script, window.location.href = adsUrl;) +! Chrome Nag +liteshort.com##+js(trusted-create-html, div, ) +jobsmbn.in,jobssozo.in,cryptogully.com,kannursalafi.com,sindhvacancy.com###notarobot, #rtg-snp2, #tp-snp2, #rtg-snp21:style(display: block !important;) +jobsmbn.in,jobssozo.in,cryptogully.com,kannursalafi.com,sindhvacancy.com###notarobot, #getlink, #rtg-snp2, #tp-wait1, #tp-generate, #tp-snp2, #rtg-snp21:others() +jkdamours.com,jobsheel.com,babylinks.in##+js(rpnt, script, 4000, 10) +jkdamours.com,jobsheel.com##+js(noeval-if, /chp_?ad/) +jkdamours.com,jobsheel.com##+js(set, count, 0) +jkdamours.com,jobsheel.com##+js(rpnt, script, document.cookie.includes("adclicked=true"), true) +jkdamours.com,jobsheel.com##+js(rpnt, script, "IFRAME", "BODY") +jkdamours.com,jobsheel.com###btn6:style(display: block !important) +jkdamours.com,jobsheel.com###tp-text, #btn6, .tp-btn:others() +go.babylinks.in##+js(set, blurred, false) +odiadance.com,sayphotobooth.com##+js(noeval-if, /chp_?ad/) +odiadance.com,sayphotobooth.com##+js(rpnt, script, 4000, 10) +odiadance.com,sayphotobooth.com##+js(rpnt, script, /\d{5}/, 10) +odiadance.com,sayphotobooth.com##+js(rpnt, script, "IFRAME", "BODY") +odiadance.com,sayphotobooth.com##+js(rmnt, script, navigator.brave) +odiadance.com,sayphotobooth.com##+js(rpnt, script, /visibilitychange/g, load) +odiadance.com,sayphotobooth.com##+js(rpnt, script, /hidden/g, visible) +odiadance.com,sayphotobooth.com##+js(rpnt, script, /blur|focus|pageshow/g, load) +odiadance.com,sayphotobooth.com##+js(rpnt, #text, Link, wait 20 sec button will appear) +odiadance.com,sayphotobooth.com##.BR-Overlay, .single-layout-1.ast-post-format-, #BR-Footer-Ads, .wp-post-image, #comments, .post-navigation.navigation, .ast-pagination, .ast-article-inner.ast-post-format- +sayphotobooth.com#@#+js(adjust-setInterval, tp-time, *, 0.001) +link.get2short.com##+js(set, blurred, false) +sitm.al3rbygo.com,fawzy.xyz,crizyman.online,soft.cr3zyblog.com##+js(rpnt, script, /func.*justDetect.*warnarea.*?;/gm) +sitm.al3rbygo.com,fawzy.xyz,crizyman.online,soft.cr3zyblog.com##+js(rmnt, script, getComputedStyle(el) +sitm.al3rbygo.com,fawzy.xyz,crizyman.online,soft.cr3zyblog.com##+js(rmnt, script, popup) +sitm.al3rbygo.com,fawzy.xyz,crizyman.online,soft.cr3zyblog.com##+js(rpnt, script, /\d{4}/gms, 10) +sitm.al3rbygo.com,fawzy.xyz,crizyman.online,soft.cr3zyblog.com###content_wrapper:style(font-size: 0rem !important;) +sitm.al3rbygo.com,fawzy.xyz,crizyman.online,soft.cr3zyblog.com###loading-screen, #yuidea-btmbtn:others() +xdabo.com##footer +xdabo.com##+js(rmnt, script, document.body.onclick) +! short-jambo.ink +short-jambo.ink##.banner-inner +short-jambo.ink##.text-left +short-jambo.ink##footer +short-jambo.ink##+js(nowoif, _blank) +! swiftlnx.com +swiftlnx.com##.blog-item +mtc4.igimsopd.com###wpsafelinkhuman, #wpsafe-wait1, #wpsafegenerate, #wpsafe-link, #wpsafe-wait2, .container, #wpsafe-generate:others() +mtc4.igimsopd.com##+js(rpnt, script, 2000);, 10);) +shortxlinks.com##+js(rpnt, script, (/android/i.test(t) || /Android/i.test(t)), (false)) +shortxlinks.com##.sponsors-section, .bg_cover.footer-area, .navbar-toggler +healthy4pepole.com,to-travel.net###submitBtn, #go_d, #wolfexe-snp:style(display: block !important;) +healthy4pepole.com,to-travel.net###submitBtn, #go_d, #wolfexe-snp:others() +healthy4pepole.com,to-travel.net##+js(nano-sib, /.?/, *, 0.02) +jameeltips.us##+js(aopr, app_vars.force_disable_adblock) +jameeltips.us##+js(set, blurred, false) +jameeltips.us#@#.banner-728x90 +||jameeltips.us^$3p +*$script,domain=gainbtc.*,redirect-rule=noopjs +||adcryp.to^$3p +homeculina.com,ineedskin.com,mdn.lol##+js(nostif, /adblock|isRequestPresent/) +mdn.lol##+js(no-fetch-if, bmcdn6) +homeculina.com,ineedskin.com,mdn.lol##form[id]:style(display: block !important;) +mdn.lol##.form-group > div[style^="width:"] +mdn.lol##div[style^="width:"][style$=" height: 90px;"] +mdn.lol##+js(acs, window.onload, devtools) +mdn.lol##+js(rmnt, script, /bypass.php) +homeculina.com,ineedskin.com,mdn.lol##form [id][style="display: none;"]:style(display: block !important;) +! paycut.io/gMoMhCrN +!#if env_chromium +@@||securepubads.g.doubleclick.net/*/gpt.js$domain=cryptednews.space +@@||securepubads.g.doubleclick.net/*/pubads_impl.js$domain=cryptednews.space +@@||googleads.g.doubleclick.net/pagead/interaction/$domain=cryptednews.space +!#endif +*$image,redirect-rule=1x1.gif,domain=starkroboticsfrc.com|sinonimos.de|antonimos.de|quesignifi.ca|tiktokrealtime.com|tiktokcounter.net|tpayr.xyz|blackwoodacademy.org|cryptednews.space +*$xhr,redirect-rule=noopjs,method=get|post,from=starkroboticsfrc.com|sinonimos.de|antonimos.de|quesignifi.ca|tiktokrealtime.com|tiktokcounter.net|tpayr.xyz|blackwoodacademy.org|cryptednews.space +@@*$xhr,redirect-rule,method=head,domain=starkroboticsfrc.com|sinonimos.de|antonimos.de|quesignifi.ca|tiktokrealtime.com|tiktokcounter.net|tpayr.xyz|blackwoodacademy.org|cryptednews.space +@@*$ghide,domain=starkroboticsfrc.com|sinonimos.de|antonimos.de|quesignifi.ca|tiktokrealtime.com|tiktokcounter.net|tpayr.xyz|blackwoodacademy.org|cryptednews.space +@@*$script,1p,domain=starkroboticsfrc.com|sinonimos.de|antonimos.de|quesignifi.ca|tiktokrealtime.com|tiktokcounter.net|tpayr.xyz|blackwoodacademy.org|cryptednews.space +@@||profitsfly.com^$script,domain=starkroboticsfrc.com|sinonimos.de|antonimos.de|quesignifi.ca|tiktokrealtime.com|tiktokcounter.net|tpayr.xyz|blackwoodacademy.org|cryptednews.space +@@/adpartner.min.js$script,domain=starkroboticsfrc.com|sinonimos.de|antonimos.de|quesignifi.ca|tiktokrealtime.com|tiktokcounter.net|tpayr.xyz|blackwoodacademy.org|cryptednews.space +starkroboticsfrc.com,sinonimos.de,antonimos.de,quesignifi.ca,tiktokrealtime.com,tiktokcounter.net,tpayr.xyz,blackwoodacademy.org,cryptednews.space##+js(nostif, documentElement.innerHTML) +starkroboticsfrc.com,sinonimos.de,antonimos.de,quesignifi.ca,tiktokrealtime.com,tiktokcounter.net,tpayr.xyz,blackwoodacademy.org,cryptednews.space##+js(no-fetch-if, doubleclick, , {"type": "opaque"}) +starkroboticsfrc.com,sinonimos.de,antonimos.de,quesignifi.ca,tiktokrealtime.com,tiktokcounter.net,tpayr.xyz,blackwoodacademy.org,cryptednews.space##+js(trusted-replace-node-text, script, /^([^{])/, "document.addEventListener('DOMContentLoaded',()=>{const i=document.createElement('iframe');i.style='height:0;width:0;border:0';i.id='aswift_0';document.body.appendChild(i);i.focus();const f=document.createElement('div');f.id='9JJFp';document.body.appendChild(f);});$1", sedCount, 2) +starkroboticsfrc.com,sinonimos.de,antonimos.de,quesignifi.ca,tiktokrealtime.com,tiktokcounter.net,tpayr.xyz,blackwoodacademy.org,cryptednews.space##+js(set, document.hasFocus, trueFunc) +btcbitco.in##+js(acs, window.onload, innerHTML) +btcbitco.in,cempakajaya.com,crypto4yu.com,wiour.com##+js(set, document.hasFocus, trueFunc) +btcbitco.in,cempakajaya.com,crypto4yu.com,wiour.com##+js(no-fetch-if, /adoto|\/ads\/js/) +wiour.com##+js(aeld, load, htmls) +@@||googletagmanager.com/gtm.js$domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|readbitcoin.org|wiour.com +btcbitco.in,cempakajaya.com,crypto4yu.com,manofadan.com,wiour.com##^script:has-text(htmls) +btcbitco.in,cempakajaya.com,crypto4yu.com,manofadan.com,wiour.com##html, body:style(overflow: auto !important;) +!#if !cap_html_filtering +btcbitco.in,cempakajaya.com,crypto4yu.com,manofadan.com,wiour.com##+js(rmnt, script, htmls) +!#endif +||bitcotasks.com//files/banners/banner- +||cryptocoinsad.com/ads/js/slider_right.js$script,redirect=noopjs +btcbitco.in##+js(acs, addEventListener, devtools) +btcbitco.in,wiour.com##+js(acs, document.getElementById, ads) +crypto4yu.com,manofadan.com##+js(acs, addEventListener, ads) +bitcotasks.com##+js(nostif, offsetWidth) +bitcotasks.com##+js(nostif, alert) +btcbitco.in,wiour.com##.post > center > [href] > img +btcbitco.in,crypto4yu.com,wiour.com##+js(nowoif, ?key=) +/invoke.js$script,redirect-rule=noop.js,domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|readbitcoin.org|wiour.com +||cryptocoinsad.com/ads/js/popunder.js$script,redirect=noop.js,domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|readbitcoin.org|wiour.com +||acceptable.a-ads.com^$frame,redirect-rule=noop.html,domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|readbitcoin.org|wiour.com +btcbitco.in,crypto4yu.com,wiour.com##div.text-center[id]:style(height: 100px !important;) +@@||static.surfe.pro/js/net.js$domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|readbitcoin.org +@@||surfe.pro/net/teaser$xhr,domain=btcbitco.in|btcsatoshi.net|crypto4yu.com|readbitcoin.org +btcbitco.in##+js(set, isRequestPresent, true) +||bmcdn6.com^$script,redirect-rule=noop.js +! aylink.co popup ads +aylink.co##+js(rmnt, script, toast) +aylink.co,gitizle.vip,shtms.co##+js(aopr, xmlhttp) +aylink.co,gitizle.vip,shtms.co##+js(nano-sib) +gitizle.vip,shtms.co##+js(ra, data-ppcnt_ads|onclick, #main) +aylink.co,cpmlink.pro##+js(remove-attr, data-ppcnt_ads|onclick, #main[onclick*="mainClick"], stay) +aylink.co,cpmlink.pro##+js(rpnt, script, /window\.location.*?;/) +aylink.co,gitlink.pro,gitizle.vip,shtms.co##.alternative-ad +aylink.co,cpmlink.pro##.adult-chat +aylink.co##[href^="https://aylink.co/smart/click.php"] +aylink.co##.sweet-overlay +aylink.co##.sweet-alert +cpmlink.pro##.download-file +cpmlink.pro##.download-buttons +||jayan-uvl.com^ +||ppcent.org^ +@@||shorterall.com^$ghide +@@||allgroups.online^$script,css,domain=promo-visits.site|satoshi-win.xyz|shorterall.com +@@*$script,1p,domain=promo-visits.site|satoshi-win.xyz +*$frame,redirect-rule=noopframe,domain=promo-visits.site|satoshi-win.xyz|shorterall.com +*$script,redirect-rule=noopjs,domain=promo-visits.site|satoshi-win.xyz|shorterall.com +*$xhr,3p,domain=promo-visits.site,redirect-rule=nooptext +promo-visits.site,shorterall.com##+js(set, blurred, false) +promo-visits.site,shorterall.com###qc-cmp2-container + p +shorterall.com##+js(nostif, alert) +shorterall.com##+js(acs, decodeURI, decodeURIComponent) +shorterall.com##+js(aopw, atOptions) +promo-visits.site,shorterall.com##+js(nowoif) +*$popup,domain=promo-visits.site|shorterall.com +@@||displayvertising.com^$script,domain=promo-visits.site|shorterall.com +@@||c.adsco.re^$script,domain=promo-visits.site|shorterall.com +@@||adsco.re/p$xhr,domain=promo-visits.site|shorterall.com +@@||ads.themoneytizer.com^$script,domain=promo-visits.site|shorterall.com +@@||c.tmyzer.com^$xhr,domain=promo-visits.site|shorterall.com +@@||gum.criteo.com/sid/json$xhr,domain=promo-visits.site|shorterall.com +@@||prebid.smilewanted.com^$xhr,domain=promo-visits.site|shorterall.com +@@||promo-visits.site^$ghide +||ultimateaderaser.com^$all +/click?pid=*&offer_id= +promo-visits.site,shorterall.com##.btn-primary:style(visibility: visible !important;) +promo-visits.site##+js(ra, disabled, .btn-primary) +promo-visits.site###newlayercontent +/php_code.php?sid=$domain=promo-visits.site|satoshi-win.xyz|shorterall.com,important +homeairquality.org##+js(aeld, blur, focusOut) +homeairquality.org##+js(no-fetch-if, googletagmanager) +homeairquality.org##+js(set, detectAdblock, noopFunc) +@@||homeairquality.org^$ghide +*$script,redirect-rule=noopjs,domain=homeairquality.org +homeairquality.org##.ezo_ad +homeairquality.org##.adtester-container:style(min-height: 0px !important; max-height: 1px !important; opacity: 0 !important;) +mynewsmedia.co##+js(no-fetch-if, googlesyndication) +@@||ads.themoneytizer.com/s/requestform.js?$script,domain=satoshi-win.xyz +@@||gibevay.ru/retarget/get$script,domain=satoshi-win.xyz +@@||googletagservices.com/tag/js/gpt.js$script,domain=satoshi-win.xyz +@@||themoneytizer.com^$frame,domain=satoshi-win.xyz +@@||umekana.ru/retarget/get$script,domain=satoshi-win.xyz +@@||zatnoh.com/pw/*=eyJ.js$script,domain=satoshi-win.xyz +satoshi-win.xyz##^responseheader(refresh) +||googletagmanager.com/gtag/js$script,redirect-rule=googletagmanager_gtm.js:10,domain=satoshi-win.xyz +||id5-sync.com^$image,redirect-rule=1x1.gif,domain=satoshi-win.xyz +|about:blank$popup,domain=satoshi-win.xyz +||funuzai.ru^$popup +encurtandourl.com##+js(nostif, getComputedStyle, 250) +encurtandourl.com##+js(nostif, nextFunction) +encurtandourl.com##+js(set, blurred, false) +encurtandourl.com##.banner +@@||overgal.com^$ghide +overgal.com##+js(no-fetch-if, googlesyndication) +overgal.com##+js(nano-sib, timeLeft, *, 0.001) +suaurl.com##+js(aopr, document.oncontextmenu) +suaurl.com##+js(aost, document.querySelector, suaads) +suaurl.com##+js(nostif, /window\.location\.href|n/, 8000) +suaurl.com##+js(trusted-replace-argument, document.getElementById, 0, json:"drall_Suaads_annersads_JS__randomAds", condition, /randomAds|div-gpt-ad|divAdsInit/) +! Middle Page +/postsImgs/$image,1p,domain=faiviral.com|vijviral.com|wealthcatal.com|heqviral.com +heqviral.com,wealthcatal.com,vijviral.com,faiviral.com##+js(nostif, /window\.location\.href|n/, 8000) +heqviral.com,wealthcatal.com,vijviral.com,faiviral.com##+js(trusted-replace-argument, document.getElementById, 0, json:"ADs-1", condition, /randomAds|div-gpt-ad|divAdsInit/) +heqviral.com,wealthcatal.com,vijviral.com,faiviral.com##+js(trusted-replace-argument, document.addEventListener, 0, json:"click", condition, visibilitychange) +heqviral.com,wealthcatal.com,vijviral.com,faiviral.com##+js(trusted-replace-argument, window.addEventListener, 0, json:"click", condition, /visibilitychange|blur|pageshow|keydown|beforeunload|pagehide/) +mamahawa.com##+js(rpnt, script, /window\.location\.href='.*';/, , condition, openLink) +forextrader.site##+js(set, blurred, false) +||10short.pro/GoogleNe*.js$script,3p,domain=forextrader.site +10short.*,mamahawa.com,lollty.pro##+js(nano-sib, timer, *, 0.001) +10short.*,mamahawa.com,lollty.pro##.text-left +mamahawa.com###popup +@@||postazap.com^$ghide +postazap.com##+js(set, blurred, false) +~encurtador.postazap.com,postazap.com##+js(nano-sib, timer, *, 0.001) +postazap.com##+js(nostif, ai_adb) +postazap.com##+js(no-xhr-if, googlesyndication) +postazap.com###page, .image-container +rawlazy.si##+js(nano-stb, /\$\('|ai-close/, *, 0.001) +bigdata.rawlazy.si##+js(nano-sib, counter, *, 0.001) +rawlazy.si##.content-text.lh-16.font-12x +! Bitlinks And https://indianshortner.in/AxW1nfy +advupdates.com,paidinsurance.in,coinseidon.com###wpsafelinkhuman, #wpsafe-link:style(display: block !important;) +advupdates.com,paidinsurance.in,coinseidon.com###wpsafelinkhuman, #wpsafe-link:others() +indianshortner.com##.banner +indianshortner.com##a[href^="https://t.me/"] +indianshortner.com##+js(rpnt, script, intentUrl;, fallbackUrl;, stay, 1) +placementsmela.com###wpsafe-link:style(display: block !important;) +placementsmela.com###wpsafe-link:others() +!#if cap_html_filtering +sugarona.com,nishankhatri.xyz,highkeyfinance.com,amanguides.com##^script:has-text(AdbModel) +!#else +sugarona.com,nishankhatri.xyz,highkeyfinance.com,amanguides.com##+js(rmnt, script, AdbModel) +!#endif +nishankhatri.xyz###pro-continue, #pro-btn, #my-btn:style(display: block !important;) +nishankhatri.xyz###pro-continue, #pro-btn, #my-btn:others() +sugarona.com###my-btn, #my-btn2:style(display: block !important;) +sugarona.com###my-btn, #my-btn2:others() +highkeyfinance.com,amanguides.com##+js(no-fetch-if, ads) +highkeyfinance.com,amanguides.com###wpsafe-link:style(display: block !important;) +highkeyfinance.com,amanguides.com###wpsafe-link:others() +blog.disheye.com###gourl:style(display: block !important;) +blog.disheye.com###gourl:others() +amanguides.com,highkeyfinance.com##+js(rmnt, script, deblocker) +! cuty.io (https://cutty.app/b6InEDRzF8NF) +cuttty.com,cety.app,cutlink.net,cutnet.net,cuttlinks.com,exe-links.com,exe-urls.com,exego.app,exeygo.com,exnion.com##.steps-to-earn, .flex.share-icons-container, .register-banner, fieldset, .partners-container, .actions, .earning-steps, article:has(p), footer, header +cuttty.com,cety.app,cutlink.net,cutnet.net,cuttlinks.com,exe-links.com,exe-urls.com,exego.app,exeygo.com,exnion.com##+js(set, blurred, false) +cuttty.com,cety.app,cutlink.net,cutnet.net,cuttlinks.com,exe-links.com,exe-urls.com,exego.app,exeygo.com,exnion.com##+js(aeld, DOMContentLoaded, history.go) +cuttty.com,cety.app,cutlink.net,cutnet.net,cuttlinks.com,exe-links.com,exe-urls.com,exego.app,exeygo.com,exnion.com##+js(nostif, offsetHeight) +cuttty.com,cety.app,cutlink.net,cutnet.net,cuttlinks.com,exe-links.com,exe-urls.com,exego.app,exeygo.com,exnion.com##+js(aopr, app_vars.please_disable_adblock) +cuttty.com,cety.app,cutlink.net,cutnet.net,cuttlinks.com,exe-links.com,exe-urls.com,exego.app,exeygo.com,exnion.com##+js(prevent-fetch, method:HEAD) +@@*$ghide,domain=cuttty.com|cety.app|cutlink.net|cutnet.net|cuttlinks.com|exe-links.com|exe-urls.com|exego.app|exeygo.com|exnion.com +@@||vhit.io/scripts/vhit.js$script,domain=cuttty.com|cety.app|cutlink.net|cutnet.net|cuttlinks.com|exe-links.com|exe-urls.com|exego.app|exeygo.com|exnion.com +||datadropspot.pro^$all +adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,savego.org,owsafe.com,sportweb.info###wpsafe-link:style(display: block !important;) +adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,savego.org,owsafe.com,sportweb.info##+js(no-fetch-if, ads) +adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,savego.org,owsafe.com,sportweb.info##+js(aeld, load, bypass) +!aduzz.com,bitcrypto.info##+js(set, wpsafelinkCount, 0) +adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,savego.org,owsafe.com,sportweb.info##.adslr +adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,savego.org,owsafe.com,sportweb.info##.floating-banner +adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,savego.org,owsafe.com,sportweb.info##table[class^="a"] +adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,savego.org,owsafe.com,sportweb.info##center:has(> a[href="javascript:hidepromol();"]) +adcrypto.net,admediaflex.com,aduzz.com,bitcrypto.info,cdrab.com,datacheap.io,hbz.us,savego.org,owsafe.com,sportweb.info#@#.adb-top +bitzite.com##+js(aeld, load, htmls) +bitzite.com##+js(ra, href, .MyAd > a[target="_blank"]) +bitzite.com##.buttonnya:style(display: block !important;) +bitzite.com##.buttondownload:style(display: block !important;) +bitzite.com##div[id^="countdownText"] +||bitzite.com/dtban.jpg +bitzite.com##+js(aeld, DOMContentLoaded, antiAdBlockerHandler) +bitzite.com##.modal-overlay +bitzite.com##+js(aeld, DOMContentLoaded, location.href) +bitzite.com##+js(acs, document.createElement, onerror) +*$image,redirect-rule=1x1.gif,domain=bitzite.com +bitzite.com##+js(nostif, _0x, 500) +bitzite.com##+js(aopw, onScriptError) +bitzite.com##+js(aopr, localStorage) +bitzite.com##+js(rpnt, script, "'IFRAME'", "'BODY'") +cpmlink.pro##+js(ra, data-ppcnt_ads, , stay) +cpmlink.pro##+js(nowoif, php) +cpmlink.pro##+js(nano-sib) +cpmlink.pro###toasts, .alternative-ad +bildirim.*##+js(set, Notification, undefined) +appsbull.com,diudemy.com,maqal360.com##+js(nano-stb, div_form) +appsbull.com,diudemy.com,maqal360.com###tristana, #_append, #myDiv:style(display: block !important;) +@@*$ghide,domain=appsbull.com|diudemy.com|maqal360.com +appsbull.com,diudemy.com,maqal360.com##+js(aeld, load, htmls) +appsbull.com,diudemy.com,maqal360.com##+js(rmnt, script, onerror) +@@||cdn.jsdelivr.net^$script,domain=appsbull.com|diudemy.com|maqal360.com +appsbull.com,diudemy.com,maqal360.com##+js(set, private, false) +appsbull.com,diudemy.com,maqal360.com##+js(rpnt, script, "'IFRAME'", "'BODY'") +!#if env_firefox +maqal360.com##+js(set, navigator.serviceWorker, {}) +!#else +maqal360.com##+js(set, navigator.webkitTemporaryStorage.queryUsageAndQuota, noopFunc) +!#endif +maqal360.com##+js(set, document.onkeydown, noopFunc) +maqal360.com##+js(aeld, contextmenu, preventDefault) +maqal360.com##+js(aeld, visibilitychange, remainingSeconds) +||revbid.net^ +neverdims.com,mbjremix.com##div#wpsafe-link:style(display: block !important;) +neverdims.com,mbjremix.com##div#wpsafe-link:others() +ezeviral.com,pngreal.com,ytpng.net##+js(no-fetch-if, ads) +ezeviral.com,dailynew.online,pngreal.com,ytpng.net###wpsafe-generate, #wpsafe-link:style(display: block !important) +dailynew.online,ezeviral.com,pngreal.com,ytpng.net##div[id^="wpsafe-wait"] +ezeviral.com,pngreal.com###overlay +pngreal.com##.adb +ryuugames.com###wpsafe-link:style(display: block !important;) +ryuugames.com###wpsafe-wait1,#wpsafe-link:others() +! intercelestial.com skip countdown (https://pahe.me/monster-2023-web-dl-480p-720p-1080p/) +||intercelestial.com^$csp=script-src 'self' * 'unsafe-inline' +intercelestial.com##+js(nano-stb, , *, 0.1) +intercelestial.com###landing, .soractrl:others() +linegee.net##.kecil:others() +laweducationinfo.com,godstoryinfo.com,armypowerinfo.com,phonereviewinfo.com,gknutshell.com,vichitrainfo.com,workproductivityinfo.com,dopomininfo.com,artoffocas.com##+js(trusted-replace-outbound-text, decodeURIComponent, Math.random() <= 0.15, false) +!laweducationinfo.com,savemoneyinfo.com,worldaffairinfo.com,godstoryinfo.com,successstoryinfo.com,cxissuegk.com,learnmarketinfo.com,bhugolinfo.com,armypowerinfo.com,rsgamer.app,phonereviewinfo.com,makeincomeinfo.com,gknutshell.com,vichitrainfo.com,workproductivityinfo.com##+js(set, Math.random, 1, as, function) +laweducationinfo.com,godstoryinfo.com,armypowerinfo.com,phonereviewinfo.com,gknutshell.com,vichitrainfo.com,workproductivityinfo.com,dopomininfo.com,artoffocas.com##+js(set-cookie, __gads, 1) +laweducationinfo.com,godstoryinfo.com,armypowerinfo.com,phonereviewinfo.com,gknutshell.com,vichitrainfo.com,workproductivityinfo.com,dopomininfo.com,artoffocas.com##+js(aopw, window.onload) +laweducationinfo.com,godstoryinfo.com,armypowerinfo.com,phonereviewinfo.com,gknutshell.com,vichitrainfo.com,workproductivityinfo.com,dopomininfo.com,artoffocas.com##+js(no-xhr-if, googlesyndication) +laweducationinfo.com,godstoryinfo.com,armypowerinfo.com,phonereviewinfo.com,gknutshell.com,vichitrainfo.com,workproductivityinfo.com,dopomininfo.com,artoffocas.com##+js(aost, navigator.userAgent, checkBrowser) +laweducationinfo.com,godstoryinfo.com,armypowerinfo.com,phonereviewinfo.com,gknutshell.com,vichitrainfo.com,workproductivityinfo.com,dopomininfo.com,artoffocas.com##+js(aopr, bypass_url) +laweducationinfo.com,godstoryinfo.com,armypowerinfo.com,phonereviewinfo.com,gknutshell.com,vichitrainfo.com,workproductivityinfo.com,dopomininfo.com,artoffocas.com##+js(set, document.hasFocus, trueFunc) +*$frame,redirect-rule=noopframe,domain=laweducationinfo.com|savemoneyinfo.com|worldaffairinfo.com|godstoryinfo.com|successstoryinfo.com|cxissuegk.com|learnmarketinfo.com|bhugolinfo.com|armypowerinfo.com|rsgamer.app|phonereviewinfo.com|makeincomeinfo.com|gknutshell.com|vichitrainfo.com|workproductivityinfo.com|dopomininfo.com|hostingdetailer.com|fitnesssguide.com|tradingfact4u.co|cryptofactss.com|softwaredetail.com|artoffocas.com|insurancesfact.com|travellingdetail.com +@@*$ghide,domain=laweducationinfo.com|savemoneyinfo.com|worldaffairinfo.com|godstoryinfo.com|successstoryinfo.com|cxissuegk.com|learnmarketinfo.com|bhugolinfo.com|armypowerinfo.com|rsgamer.app|phonereviewinfo.com|makeincomeinfo.com|gknutshell.com|vichitrainfo.com|workproductivityinfo.com|dopomininfo.com|hostingdetailer.com|fitnesssguide.com|tradingfact4u.co|cryptofactss.com|softwaredetail.com|artoffocas.com|insurancesfact.com|travellingdetail.com +filmypoints.in##+js(nano-sib, timer, 1000, 0.001) +filmypoints.in##+js(set, count, 0) +filmypoints.in###btn11:style(display: block !important;) +filmypoints.in##.mh-wrapper,#btn1 +filmypoints.in##.col-md-12 > .wpsafe-top ~ :is(h2,h3,h4,p,ul) +! linksfire.co (link.linksfire.co/dLvqhe) +blog.linksfire.co##+js(aopr, app_vars.force_disable_adblock) +blog.linksfire.co##[href^="https://b3stcond1tions.com/"] +blog.linksfire.co##div.separator > b +blog.linksfire.co##.banner +blog.linksfire.co##.ex2 +blog.linksfire.co##.link-details +linksfire.*##+js(aopr, open) +bartendingexpert.com###yuidea-snp:style(display: block !important;) +bartendingexpert.com###yuidea-snp:others() +freethailottery.live,progfu.com##+js(nano-sib, timer, 1600, 0.001) +freethailottery.live,progfu.com##center, [src*="google.com/recaptcha/"], #yuidea-snp:style(display:block !important) +freethailottery.live,progfu.com##center, [src*="google.com/recaptcha/"], #yuidea-snp:others() +! dollerlinksd.in (dollerlinksd.in/ZN4p) +financebolo.com,rphost.in##+js(nano-sib, timer, *, 0.001) +financebolo.com,rphost.in##+js(nowoif) +financebolo.com,rphost.in###tp-snp2:others() +thetrendverse.in,janammusic.in.net,metavise.in,redfea.com,pranarevitalize.com,techyinfo.in,fitnessholic.net##+js(noeval-if, /chp_?ad/) +thetrendverse.in,janammusic.in.net,metavise.in,redfea.com,pranarevitalize.com,techyinfo.in,fitnessholic.net###btn11, #tp-snp2, #rtg, #btn6, #wpsafe-snp, #wpsafe-generate:style(display: block !important;) +thetrendverse.in,janammusic.in.net,metavise.in,redfea.com,pranarevitalize.com,techyinfo.in,fitnessholic.net###btn11, #tp-snp2, #rtg, #btn6, #wpsafe-snp, #wpsafe-generate:others() +thetrendverse.in,janammusic.in.net,metavise.in,redfea.com,pranarevitalize.com,techyinfo.in,fitnessholic.net##+js(set, count, 0) +! shorturllinks.com (shorturllinks.com/pv1TizfJ1) +appkamods.com##+js(rmnt, script, deblocker) +appkamods.com###tp98, #btn6:style(display: block !important;) +appkamods.com###tp98, #btn6:others() +! SetUrl +set.seturl.in##+js(acs, document.createElement, antiAdBlockerHandler) +set.seturl.in##.blog-item +set.seturl.in##.banner-inner +set.seturl.in##.popSc +set.seturl.in##+js(rpnt, script, window.location.href = adsUrl;) +set.seturl.in##+js(rpnt, scipt, _blank, _self) +set.seturl.in##+js(set, blurred, false) +seturl.in##+js(trusted-create-html, div, ) +! instantlinks.in (instantlinks.in/Ve33sw) +currentrecruitment.com,investorveda.com##+js(aopr, document.onmousedown) +currentrecruitment.com,investorveda.com##+js(nano-sib, count, *, 0.001) +currentrecruitment.com,investorveda.com###hometimerstartbtn, #hometimer, #yuidea-btmbtn, #btn6:style(display: block !important;) +currentrecruitment.com,investorveda.com###hometimerstartbtn, #hometimer, #yuidea-btmbtn, #btn6:others() +! linkvhoriz.com (linkvhoriz.com/DZI6s) +kreatifparenting.com###wpsafe-link:style(display: block !important;) +kreatifparenting.com###wpsafe-link:others() +foodupe.com###doad,.locked-action-link +foodupe.com###donead:style(display: block !important;) +foodupe.com##a[onclick*="adlink()"]:remove-attr(onclick) +bloggingdaze.com##.locked-action-link +bloggingdaze.com##a.get-link.disabled:remove-class(disabled) +! shotzon.com (enagato.com/nOlVu) +enagato.com##+js(aopr, open) +enagato.com##+js(set, blurred, false) +codesnse.com##+js(set, go_popup, {}) +codesnse.com##+js(nano-sib, counter, *, 0.001) +codesnse.com##[href^="https://app.adjust.com/"] +! pandaznetwork.com (pandaznetwork.com/TN8cD) +pandaznetwork.com##+js(set, blurred, false) +! nanolinks.in/go7A5J +nanolinks.in##+js(rpnt, script, /window\.location\.href\s*=\s*"intent:\/\/([^#]+)#Intent;[^"]*"/gm, window.location.href = "https://$1") +nanolinks.in##+js(nostif, alert, 2000) +! adsfly.in (adsfly.in/K9cXk) +adsfly.in##+js(nowoif) +rphost.in,techurlshort.in###notarobot, #btn7:style(display: block !important;) +rphost.in,techurlshort.in###notarobot, #btn7:others() +! sub4unlock.com (daniblogs.com/BF/956195hx) +sub4unlock.com###file:remove-attr(disabled) +sub4unlock.com###file:others() +howtoconcepts.com##+js(no-fetch-if, googlesyndication) +lifesurance.info##+js(set, showadas, true) +lifesurance.info##center:others() +! moonlinks.in (moonlinks.in/bvbvuK) +cybercityhelp.in##+js(rmnt, script, adsbygoogle) +cybercityhelp.in###username[required]:remove-attr(required) +akcartoons.in,cybercityhelp.in###tp982, #btn6:style(display: block !important;) +akcartoons.in,cybercityhelp.in###tp982, #btn6:others() +cybercityhelp.in##+js(aeld, submit, validateForm) +akcartoons.in,cybercityhelp.in##+js(set, alert, throwFunc) +iconicblogger.com##+js(rmnt, script, catch) +iconicblogger.com###wpsafe-link:style(display: block !important;) +iconicblogger.com###wpsafe-link:others() +! ttps://paste.segurosdevida .site +segurosdevida.site###wpsafe-generate, #wpsafe-link:style(display: block !important;) +segurosdevida.site##[id^="wpsafe-wait"], #content-wrapper +ikramlar.online##+js(noeval-if, /chp_?ad/) +ikramlar.online##+js(no-fetch-if, googlesyndication) +!#if cap_html_filtering +tpi.li,oii.la##^script:has-text(/;break;case \$\.|adb_detected|AdBlockCheck/) +!#else +tpi.li##+js(remove-node-text, script, /adb_detected|AdBlockCheck|;break;case \$\./i) +!#endif +tpi.li,oii.la##+js(nowoif) +tpi.li,oii.la##+js(no-fetch-if, googlesyndication) +tpi.li,oii.la##+js(no-xhr-if, /pagead2\.googlesyndication\.com|inklinkor\.com/) +tpi.li,oii.la##+js(acs, EventTarget.prototype.addEventListener, delete window) +tpi.li,oii.la##+js(aeld, DOMContentLoaded, checkAdblockUser) +tpi.li,oii.la##+js(nostif, checkAdblock) +tpi.li,oii.la##+js(set, blurred, false) +tpi.li,oii.la##+js(rpnt, script, offsetHeight, offsetHeight+100) +tpi.li,oii.la##a[href][target="_blank"] +tpi.li,oii.la##.td-post-template-default.td-container, .banner-inner +! Mid Page +ensuretips.com,carensureplan.com,comparepolicyy.com,healthylifez.com,hosttbuzz.com,policiesreview.com,vpshostplans.com##+js(nowoif) +ensuretips.com,carensureplan.com,comparepolicyy.com,healthylifez.com,hosttbuzz.com,policiesreview.com,vpshostplans.com##+js(nano-sib, /countdown--|getElementById/, *, 0.001) +ensuretips.com,carensureplan.com,comparepolicyy.com,healthylifez.com,hosttbuzz.com,policiesreview.com##+js(nano-stb, getElementById, *, 0.001) +ensuretips.com,carensureplan.com,comparepolicyy.com,healthylifez.com,hosttbuzz.com,policiesreview.com,vpshostplans.com###getnewlink, .wp2continuelink, .getmylink:style(display: block !important;) +ensuretips.com,carensureplan.com,comparepolicyy.com,healthylifez.com,hosttbuzz.com,policiesreview.com,vpshostplans.com###getnewlink, .wp2continuelink, .getmylink, #newtimer:others() +! http://go.megafly.in/znj2u7olam +techacode.com##+js(nostif, nextFunction, 250) +techacode.com##+js(nobab) +techacode.com##+js(noeval-if, adb) +techacode.com###link, #btn6, #yuidea-snp:remove-attr(disabled) +techacode.com##+js(set, count, 0) +techacode.com##+js(aopr, SMart1) +techacode.com##+js(rmnt, script, deblocker) +techacode.com##+js(no-xhr-if, /doubleclick|googlesyndication/) +trickms.com##+js(set, count, 0) +trickms.com###tp98[disabled]:remove-attr(disabled) +trickms.com###tp-snp2:style(display: block !important;) +trickms.com###tp98, #btn6, #tp-snp2:others() +||beixisys.com^$script,domain=tempatwisata.pro|datapendidikan.com|cekresi.me|go.fakta.id|crm.urlwebsite.com +||rc.patagonenki.shop^$domain=tempatwisata.pro|datapendidikan.com|cekresi.me|go.fakta.id|crm.urlwebsite.com +crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##+js(no-fetch-if, /outbrain\.com|adligature\.com|quantserve\.com|srvtrck\.com|googlesyndication/, {"type": "cors"}) +crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##+js(nowoif, _blank) +crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##button[type="button"], #continue, .separator > div > div > h3, .font-semibold.text-white.bg-primary.inline-block.mx-auto, [src*="captcha"]:others() +crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##button[x-on\:click="openPopup"]:not([x-bind\:disabled]) +crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##+js(nano-sib, /.?/, *) +crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##+js(nano-stb, /.?/, *) +crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##+js(rpnt, script, /\d{4}/gms, 10, condition, /count/i) +crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##+js(rpnt, script, /this\.endAt = Date\.now\(\) \+ \(this\.cd \* 1000\)/gm, this.endAt = Date.now()) +crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##+js(rpnt, script, /this\.cd = remaining > 0 \? remaining : 0/gm, this.cd = 0) +crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##+js(rpnt, script, /this\.ab = true/gm, this.ab = false) +!crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##+js(rpnt, script, /this\.endAt = Date\.now\(\) \+ \(this\.cd \* 1000\)/gm, setTimeout(() => { this.endAt = Date.now() }\, 1)) +crm.urlwebsite.com,go.fakta.id,datapendidikan.com,app.cekresi.me,tempatwisata.pro##+js(trusted-create-html, head, ) +! adtival.network +adtival.network##.z-0.overflow-hidden.relative.w-full.rounded-lg.to-primary-800.from-primary-500.bg-gradient-to-r.p-8.min-h-\[189px\] +adtival.network##button.py-2.px-6.text-primary-600.rounded-lg.border-primary-600.border-2.bg-white.items-center.flex +adtival.network##.max-w-screen-lg:style(max-width: initial! Important;) +adtival.network##.min-h-screen:style(min-height: initial! Important;) +safelinkearn.com##.d2.anim-up.action-row, .banner-bg +shrinkme.*,shrinke.*,mrproblogger.com,themezon.net##+js(aopr, app_vars.force_disable_adblock) +shrinkme.*,shrinke.*,mrproblogger.com,themezon.net##+js(set, blurred, false) +shrinkme.*,shrinke.*,mrproblogger.com,themezon.net##.expop, .blog-item, footer, [src*="shrinkme."], .box-main h3, [hight="250px"] +shrinkme.*,shrinke.*,mrproblogger.com,themezon.net##+js(rmnt, script, window.open) +shrinkme.*,shrinke.*,mrproblogger.com,themezon.net##+js(aeld, load, doTest) +mrproblogger.com,themezon.net###btn2, #tp-snp2:style(display: block !important;) +mrproblogger.com,themezon.net###btn2, #tp-snp2:others() +headlinerpost.com,posterify.net##+js(noeval-if, /chp_?ad/) +headlinerpost.com,drinkspartner.com,posterify.net##body:remove-attr(style) +headlinerpost.com,drinkspartner.com,posterify.net##nav, .remove-sticky, .widget-area, .entry-content, .entry-header, .entry-meta, .comments-area, .wpjankari-social-wrapper, .site-footer, .gb-container, .featured-image, .has-inline-mobile-toggle.site-header, #top-container-2 +headlinerpost.com,drinkspartner.com,posterify.net###bottomButton:style(display: block !important) +headlinerpost.com,drinkspartner.com,posterify.net##+js(rpnt, script, timeLeft = duration, timeLeft = 1) +shrinkforearn.in##+js(aopr, app_vars.force_disable_adblock) +shrinkforearn.in##+js(set, blurred, false) +shrinkforearn.in##.box-main:style(font-size: 0px !important;) +shrinkforearn.in##[class*="wp-image"] +shrinkforearn.in##[href*="waufooke.com"], .footer, .banner-inner, .w-nav.nav-rounded-center +faucet.ovh##+js(rmnt, script, /adblock.php) +||dutchycorp.space/banner-advertising/$frame,3p,domain=faucet.ovh +claimclicks.com##+js(aopr, checkAdsBlocked) +||oii.io/sw.js$script +oii.io##+js(nowoif) +oii.io##+js(ra, onclick, .btn) +oii.io##+js(set, blurred, false) +gamezizo.com,oii.io##+js(noeval-if, ppu) +||immeritousscraichingtarumari.monster^ +||nonentrantcrpehibbin.monster^ +gamezizo.com,oii.io###iframe_id +gamezizo.com##[id^="ad"] +oii.io###overlay +*$script,3p,denyallow=ajax.googleapis.com|cloudflare.net|fastly.net|fontawesome.com|jsdelivr.net|unpkg.com,domain=hubdrive.*|~hubdrive.com|~hubdrive.de +hubdrive.*,~hubdrive.com,~hubdrive.de##+js(nowoif) +hblinks.pro,hubcdn.vip,hubdrive.*,~hubdrive.com,~hubdrive.de##+js(aeld, , history.go) +! popup redirects (HubDrive) +katdrive.link,kmhd.net##+js(aeld, , history.go) +kmhd.net##.entry-content > div[class^="code-block"] > h4[class][style^="text-align: center;"] +hubdrive.*##[src="/snvhost.jpg"] +blog.workedbd.com,maxxfour.com,profitshort.com,courselinkfree.us,technorozen.com,hubdrive.me###top_nav, .rd_btn, .soractrl:style(display: block !important;) +blog.workedbd.com,maxxfour.com,profitshort.com,courselinkfree.us,technorozen.com,hubdrive.me###top_nav, .rd_btn, .soractrl, .large:others() +atglinks.com##+js(rmnt, script, /aclib|break;|zoneNativeSett/) +atglinks.com##+js(aopr, detectAdBlock) +atglinks.com##+js(set, blurred, false) +atglinks.com##.btn-captcha:style(display: flex !important; justify-content: center !important; margin: 10px auto !important;) +atglinks.com##.row > .banner.banner-captcha:has(iframe) +atglinks.com##.captcha-page, .banner-page:style(color: transparent !important; font-size: 0 !important;) +atglinks.com##.alert-danger:style(color: initial !important; font-size: initial !important;) +atglinks.com##body > div[style*="width:300px;height:250px"]:has(a[href][target="_blank"]) +atglinks.com##.blog-item, .separator, .banner-inner, .box-main > [href], #footer +djpunjab2.in,foodxor.com,geniussolutions.co,mealcold.com,mixrootmods.com##+js(no-fetch-if, googlesyndication) +djpunjab2.in,foodxor.com,geniussolutions.co,mealcold.com,mixrootmods.com###wpsafe-link:style(display:block !important;) +djpunjab2.in,foodxor.com,geniussolutions.co,mealcold.com,mixrootmods.com###wpsafe-link:others() +geniussolutions.co###interstitial-container +geniussolutions.co##+js(aost, document.getElementById, adsBlocked) +skillheadlines.in##+js(aost, document.getElementById, adsBlocked) +hosty.uprwssp.org###btnfianl:style(display: block !important;) +lootdest.com##+js(nowoif, , 5) +@@||0.entlysearchin.info^$ping,domain=lootdest.com +@@*$ghide,domain=bluemediadownload.*|bluemediafile.*|bluemedialink.*|bluemediastorage.*|bluemediaurls.*|urlbluemedia.* +.gif$image,domain=bluemediadownload.*|bluemediafile.*|bluemedialink.*|bluemediastorage.*|bluemediaurls.*|urlbluemedia.* +bluemediadownload.*,bluemediafile.*,bluemedialink.*,bluemediastorage.*,bluemediaurls.*,urlbluemedia.*##+js(aopr, decodeURI) +bluemediadownload.*,bluemediafile.*,bluemedialink.*,bluemediastorage.*,bluemediaurls.*,urlbluemedia.*##+js(aopr, open) +bluemediadownload.*,bluemediafile.*,bluemedialink.*,bluemediastorage.*,bluemediaurls.*,urlbluemedia.*###ads-centter +/fhbdhf.jpg$image,1p,domain=bluemediadownload.*|bluemediafile.*|bluemedialink.*|bluemediastorage.*|bluemediaurls.*|urlbluemedia.* +!#if cap_html_filtering +bluemediadownload.*,bluemediafile.*,bluemedialink.*,bluemediastorage.*,bluemediaurls.*,urlbluemedia.*##^script:has-text(FingerprintJS) +!#else +bluemediadownload.*,bluemediafile.*,bluemedialink.*,bluemediastorage.*,bluemediaurls.*,urlbluemedia.*##+js(rmnt, script, FingerprintJS) +!#endif +sharclub.in,main.sportswordz.com,wblaxmibhandar.com##+js(aopr, AdBDetected) +sharclub.in,main.sportswordz.com,wblaxmibhandar.com##.tag, #bottom-container-2, #bottom-container-timer:others() +sharclub.in,main.sportswordz.com,wblaxmibhandar.com###bottomButton:style(display: block !important) +sharclub.in,main.sportswordz.com,wblaxmibhandar.com##+js(rpnt, script, timeLeft = duration, timeLeft = 0) +lksfy.com##[href="https://telegram.me/linkshortify"] > .button-image +quest.to-travel.net,yjiur.xyz,journey.to-travel.net,whatgame.xyz,gold-24.net,forexrw7.com##+js(noeval-if, /chp_?ad/) +quest.to-travel.net,yjiur.xyz,journey.to-travel.net,whatgame.xyz,gold-24.net,forexrw7.com##.btn-success:style(display: block !important;) +quest.to-travel.net,yjiur.xyz,journey.to-travel.net,whatgame.xyz,gold-24.net,forexrw7.com##+js(nano-stb, /.?/, *, 0.001) +quest.to-travel.net,yjiur.xyz,journey.to-travel.net,whatgame.xyz,gold-24.net,forexrw7.com##+js(nano-sib, /.?/, *, 0.001) +quest.to-travel.net,yjiur.xyz,journey.to-travel.net,whatgame.xyz,gold-24.net,forexrw7.com##.btn-success, [id^="next"], [id^="final"]:others() +! Auto click +quest.to-travel.net,yjiur.xyz,journey.to-travel.net,whatgame.xyz,gold-24.net,forexrw7.com##+js(trusted-click-element, '1000, #next-timer-btn > .btn-success, 600, #mid-progress-wrapper > .btn-success, 1300, #final-nextbutton', 3500) +quest.to-travel.net,yjiur.xyz,journey.to-travel.net,whatgame.xyz,gold-24.net,forexrw7.com##+js(trusted-click-element, #next-link-wrapper > .btn-success, , 1600) +||primepropertynow.com^$domain=linkjust.com +linkjust.com##+js(set, blurred, false) +kbconlinegame.com###my-btn, #pro-continue, #pro-link:style(display: block !important;) +kbconlinegame.com###my-btn, #pro-continue, #pro-link:others() +kbconlinegame.com##+js(rmnt, script, /fetch|popupshow/) +edukaroo.com##+js(nano-sib, count, *, 0.001) +! shrtslug.biz/8NC7V +stly.link,financefernly.com,growgritly.com,guidetechly.com,napmap.net,jobnoid.net,stfly.me,dailyjobposting.xyz,biovetro.net,yrtourguide.com,technons.com,tournguide.com,digiztechno.com,shrtslug.biz##+js(no-xhr-if, method:HEAD) +stly.link,financefernly.com,growgritly.com,guidetechly.com,napmap.net,jobnoid.net,stfly.me,dailyjobposting.xyz,biovetro.net,yrtourguide.com,technons.com,tournguide.com,digiztechno.com,shrtslug.biz##+js(aost, fetch, http) +stly.link,financefernly.com,growgritly.com,guidetechly.com,napmap.net,jobnoid.net,stfly.me,dailyjobposting.xyz,biovetro.net,yrtourguide.com,technons.com,tournguide.com,digiztechno.com,shrtslug.biz##+js(rmnt, script, /Adblock/i) +wbschemenews.com##+js(set, count, 0) +wbschemenews.com###tp98, #btn6:style(display: block !important;) +wbschemenews.com###tp98, #btn6, .captcha-check, b > p, #tp-text:others() +wbschemenews.com###content +! Chrome Open Nag +wbschemenews.com,rekogap.xyz##+js(rpnt, script, /android/gi, false, stay, 1) +rekogap.xyz##+js(set, blurred, false) +rekogap.xyz###exclusive-content +smoner.com##+js(rmnt, script, checkAdsBlocked) +smoner.com##+js(aopr, app_vars.force_disable_adblock) +smoner.com##+js(nano-stb, getElementById, *) +smoner.com##+js(rpnt, script, 5000, 10) +smoner.com##+js(trusted-click-element, '1000, #continue-btn', 2000) +smoner.com##.alert-warning.alert +||adosiz.net^ +||dpuplet.net^ +||golnkz.com^ +||reyeshehadtwobri.com^ +thotpacks.xyz###popconlkr +thotpacks.xyz##.modal-backdrop +thotpacks.xyz##+js(set, blurred, false) +sfile.mobi,tutwuri.id##+js(nowoif) +tutwuri.id##+js(nano-sib) +||blogger.googleusercontent.com^$image,domain=tutwuri.id +downfile.site##+js(rmnt, script, deblocker) +! azmath.info,azsoft.*,downfile.site,downphanmem.com,expertvn.com,memangbau.com,trangchu.news,aztravels.net##+js(set, count, 0) +azmath.info,azsoft.*,downfile.site,expertvn.com,trangchu.news##+js(aopr, SMart1) +azmath.info,azsoft.*,downfile.site,expertvn.com,trangchu.news##+js(noeval-if, chp_ad) +azmath.info,azsoft.*,downfile.site,expertvn.com,trangchu.news##+js(aeld, DOMContentLoaded, document.documentElement.lang.toLowerCase) +expertvn.com##+js(rmnt, script, deblocker) +trangchu.news##+js(rmnt, script, deblocker) +trangchu.news##+js(no-xhr-if, /doubleclick|googlesyndication/) +/fuckadb.js$badfilter +megaurl.in##+js(ra, onclick, [onclick^="pop"]) +megaurl.in##+js(set, blurred, false) +@@||megaurl.*^$ghide +@@||expertvn.com^$ghide +*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com,domain=expertvn.com +||monetiza.co^$3p +||vidcrunch.com^$domain=aztravels.net|downfile.site +@@*$ghide,domain=aztravels.net|downfile.site +*$image,domain=app.trangchu.news|azmath.info,redirect-rule=1x1.gif +!#if cap_html_filtering +simana.online,fooak.com,joktop.com,evernia.site,falpus.com##^script:has-text(/FingerprintJS|openPopup/) +!#else +simana.online,fooak.com,joktop.com,evernia.site,falpus.com##+js(rmnt, script, /FingerprintJS|openPopup/) +!#endif +simana.online,fooak.com,joktop.com,evernia.site,falpus.com##+js(set, blurred, false) +||atropinestatuarylandleaper.com^ +||tairdalwaly.click^ +zeroupload.com##[href="https://301alldomain.xyz/"] +youshort.me##+js(aopr, open) +youshort.me##.blog-item +bantenexis.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) +bantenexis.com##div[id^="wpsafe-wait"] +||link.paid4link.com/img/cdn_adcash.mp4 +bantenexis.com##+js(no-fetch-if, googlesyndication) +link.paid4link.com##.card +link.paid4link.com##+js(nowoif) +link.paid4link.com##+js(aeld, click, maxclick) +link.paid4link.com##+js(set, blurred, false) +link.paid4link.com##+js(aeld, click, , elements, #get-link-button) +indobo.com##+js(nowoif, _blank) +tutorialsaya.com##+js(prevent-fetch, adsbygoogle) +tutorialsaya.com,indobo.com###wpsafe-generate, #wpsafe-link:others() +tutorialsaya.com,indobo.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) +exactpay.online##+js(aopr, htmls) +exactpay.online##+js(set, document.hasFocus, trueFunc) +||exactpay.online/forex/index.js +exalink.fun##+js(set, blurred, false) +||earnbitmoon.club/promo/EBM-300x250.gif +exactpay.online##+js(aopr, Swal.fire) +exactpay.online##iframe[src^="https://cryptocoinsad.com/"] +||exactpay.online/Bitmedia.html$frame,redirect=noop.html +exactpay.online##+js(no-fetch-if, surfe.pro) +exactpay.online##+js(no-xhr-if, czilladx) +exactpay.online##form > div:style(display: flex !important;) +||rollercoin.com^$image,3p,redirect-rule=1x1.gif,domain=exactpay.online +exactpay.online##+js(rpnt, script, "'IFRAME'", "'BODY'") +litonmods.com##+js(no-fetch-if, googlesyndication) +litonmods.com###wpsafe-link:style(display: block !important;) +litonmods.com###wpsafe-link:others() +litonmods.com##+js(noeval-if, adsbygoogle) +||isproxy.eu^$script,domain=indiamaja.com|techautomobile.in|tech4auto.in|mahitimanch.in|jnvharidwar.org +@@*$ghide,domain=indiamaja.com|techautomobile.in|tech4auto.in|mahitimanch.in|jnvharidwar.org +tech4auto.in,mahitimanch.in,jnvharidwar.org##+js(noeval-if, /chp_?ad/) +tech4auto.in,mahitimanch.in,jnvharidwar.org###link, #tp-timex-btn, #tp-text, #tp98:style(margin-top: 150px !important;) +tech4auto.in,mahitimanch.in,jnvharidwar.org###link, #linkx, #btn6, #tp-timex-btn, #cf-widget, .Tag, #tp-text, #tp98, #plx, .box-main:others() +tech4auto.in,mahitimanch.in,jnvharidwar.org##+js(rpnt, script, /\d{4}\);/gm, 800);, condition, count) +filesupload.in##+js(no-fetch-if, adsbygoogle.js) +filesupload.in###wpsafe-link:style(display: block !important;) +/devfiles.pages.dev\/img\/[a-zA-Z0-9]{8,}.jpeg/$image +rfiql.com,gujjukhabar.in,smartfeecalculator.com,djxmaza.in,thecubexguide.com###dlp, #dlndiv, #plzw, div:has(>.icon), nav:others() +rfiql.com,gujjukhabar.in,smartfeecalculator.com,djxmaza.in,thecubexguide.com##+js(rpnt, script, "isadblock = 1;", "isadblock = 0;") +rfiql.com,gujjukhabar.in,smartfeecalculator.com,djxmaza.in,thecubexguide.com##+js(rpnt, script, '"#sdl"', '"#dln"') +rfiql.com,gujjukhabar.in,smartfeecalculator.com,djxmaza.in,thecubexguide.com##+js(rmnt, script, DisableDevtool) +rfiql.com,gujjukhabar.in,smartfeecalculator.com,djxmaza.in,thecubexguide.com##+js(nowoif, !devuploads.com) +rfiql.com,gujjukhabar.in,smartfeecalculator.com,djxmaza.in,thecubexguide.com##+js(nano-sib, , *, 0.02) +rfiql.com,gujjukhabar.in,smartfeecalculator.com,djxmaza.in,thecubexguide.com##+js(nano-stb, , *, 0.02) +||devuploads.com/devfiles/js/devtools.js +dropgalaxy.*,financemonk.net##+js(rpnt, script, event.message);, 'event.message); /*start*/ !function(){"use strict";let t={log:window.console.log.bind(console),getPropertyValue:CSSStyleDeclaration.prototype.getPropertyValue,setAttribute:Element.prototype.setAttribute,getAttribute:Element.prototype.getAttribute,appendChild:Element.prototype.appendChild,remove:Element.prototype.remove,cloneNode:Element.prototype.cloneNode,Element_attributes:Object.getOwnPropertyDescriptor(Element.prototype,"attributes").get,Array_splice:Array.prototype.splice,Array_join:Array.prototype.join,createElement:document.createElement,getComputedStyle:window.getComputedStyle,Reflect:Reflect,Proxy:Proxy,crypto:window.crypto,Uint8Array:Uint8Array,Object_defineProperty:Object.defineProperty.bind(Object),Object_getOwnPropertyDescriptor:Object.getOwnPropertyDescriptor.bind(Object),String_replace:String.prototype.replace},e=t.crypto.getRandomValues.bind(t.crypto),r=function(e,r,l){return"toString"===r?e.toString.bind(e):t.Reflect.get(e,r,l)},l=function(r){let o=function(t){return t.toString(16).padStart(2,"0")},p=new t.Uint8Array((r||40)/2);e(p);let n=t.String_replace.call(t.Array_join.call(Array.from(p,o),""),/^\d+/g,"");return n.length<3?l(r):n},o=l(15);window.MutationObserver=new t.Proxy(window.MutationObserver,{construct:function(e,r){let l=r[0],p=function(e,r){for(let p=e.length,n=p-1;n>=0;--n){let c=e[n];if("childList"===c.type&&c.addedNodes.length>0){let i=c.addedNodes;for(let a=0,y=i.length;aa).bind(null)}),n.getPropertyValue=new t.Proxy(n.getPropertyValue,{apply:(e,r,l)=>"clip-path"!==l[0]?t.Reflect.apply(e,r,l):a,get:r}),n},get:r})}(); document.currentScript.textContent=document.currentScript.textContent.replace(/\/\*start\*\/(.*)\/\*end\*\//g,"");/*end*/') +*$image,redirect-rule=32x32.png,domain=dropgalaxy.*|financemonk.net +@@*$ghide,domain=dropgalaxy.*|financemonk.net +@@||ampproject.org^$script,domain=dropgalaxy.*|financemonk.net +@@||cdn.jsdelivr.net/gh/prebid/*$script,domain=dropgalaxy.*|financemonk.net +@@||srtb.msn.com/auction$xhr,domain=dropgalaxy.*|financemonk.net +@@||securepubads.g.doubleclick.net/tag/js/gpt.js$script,domain=dropgalaxy.com|financemonk.net +||pocpoc.io^$domain=dropgalaxy.*|financemonk.net +||mobileoffers-ep-download.com^$domain=dropgalaxy.*|financemonk.net +||financemonk.net/adgpt.js$script,1p,domain=dropgalaxy.*|financemonk.net,replace=/none/block/g +||financemonk.net/js/countd.js$script,domain=dropgalaxy.*|financemonk.net,replace=/^setTimeout[^(]*\([^\)].*[\s\S\n]*//gm +dropgalaxy.*,financemonk.net##iframe[id^="google_ads_iframe_/"], div[id^="adm-container-"]:style(clip-path: circle(0) !important;) +dropgalaxy.*,financemonk.net##+js(nowoif) +dropgalaxy.*,financemonk.net##+js(rpnt, script, /\.cloudfront\.net|window\.open/g, false) +dropgalaxy.*,financemonk.net##+js(no-fetch-if, adsbygoogle, war:googlesyndication_adsbygoogle.js) +dropgalaxy.*,financemonk.net##+js(rpnt, script, false;, true;, condition, rundirectad) +! Extra elements +dropgalaxy.com##div.page.pt-5.container:has-text(adblockers) +dropgalaxy.com##[id^="TR-"] +dropgalaxy.com,financemonk.net##.downloadPage.page.pt-5.container > center:has([src="https://assets.financemonk.net/images/dgpromo.jpg"]) +financemonk.net###dgpromo +dropgalaxy.*,financemonk.net##[id*="gpt-"] +advicefunda.com,computerpedia.in##+js(no-fetch-if, ads) +advicefunda.com,computerpedia.in##+js(noeval-if, /chp_?ad/) +advicefunda.com##+js(nano-sib, count, *, 0.001) +advicefunda.com,computerpedia.in##.overlay +advicefunda.com##.popup +dailytech-news.eu##+js(nostif, _0x) +dailytech-news.eu##+js(rpnt, script, /element\.contains\(document\.activeElement\)|document\.hidden && !timeCounted/g, true) +dailytech-news.eu##+js(noeval-if, ads) +bollywoodchamp.in##+js(noeval-if, /chp_?ad/) +fuckingfast.*##+js(set, window.adLink, null) +fuckingfast.*##+js(rpnt, script, !seen && ad, false) +fuckingfast.*##+js(acis, JSON.parse, localStorage._d) +||fuckingfast.co/f/*/dl^$xhr,1p +||senditfast.cloud^$doc +fuckingfast.*##+js(aeld, click, blank) +streamelements.com,strms.net##+js(trusted-set, google_srt, json:0.61234) +streamelements.com,strms.net##+js(set, sensorsDataAnalytic201505, {}) +streamelements.com,strms.net##+js(set, vizier, {}) +||validate.strms.net/*adblock%3Dtrue$doc,uritransform=/adblock%3Dtrue/adblock%3Dfalse/ +||validate.strms.net/*2ndcheck%3Dtrue$doc,uritransform=/2ndcheck%3Dtrue/2ndcheck%3Dfalse/ +*$script,3p,redirect-rule=noop.js,domain=streamelements.com|strms.net +financacerta.com,encurtads.net##+js(nostif, checkAdBlock) +financacerta.com,encurtads.net###wpsafe-link:style(display: block !important;) +financacerta.com,encurtads.net###wpsafe-link, .text-center.wpsafe-top > div > h1:others() +financacerta.com,encurtads.net##+js(rmnt, script, popUp) +lokerwfh.net,app.khaddavi.net###verify, #second_open_placeholder:others() +lokerwfh.net,app.khaddavi.net##+js(no-fetch-if, googlesyn) +lokerwfh.net,app.khaddavi.net##+js(nano-stb, /.?/, *) +! sfl.gl +lokerwfh.net,sfl.gl##.z-0.overflow-hidden.relative.w-full.rounded-lg.to-\[\#0948EA\].from-\[\#5597FF\].bg-gradient-to-r.p-8.min-h-\[189px\] +! Old +@@||safelinku.com^$script,domain=lokerwfh.net|khaddavi.net +khaddavi.net,lokerwfh.net##[src*="blogger.googleusercontent.com"] +khaddavi.net,lokerwfh.net##p +khaddavi.net,lokerwfh.net##+js(nano-stb) +khaddavi.net,lokerwfh.net##+js(nano-sib) +khaddavi.net,lokerwfh.net##+js(no-xhr-if, adsbygoogle) +khaddavi.net,lokerwfh.net##+js(nowoif, _blank) +||ppcnqq.com^ +||snhjsbs.shop^ +||w0of-woof.com^ +upfilesgo.com,upfion.com,upfiles.app,upfiles-urls.com##fieldset, .faqs, footer +upfilesgo.com,upfion.com,upfiles.app,upfiles-urls.com##+js(aeld, DOMContentLoaded, history.go) +upfilesgo.com,upfion.com,upfiles.app,upfiles-urls.com##+js(aeld, click, shouldOpenPopUp) +upfilesgo.com,upfion.com,upfiles.app,upfiles-urls.com##+js(set, blurred, false) +@@||vhit.io/scripts/vhit.js$script,domain=upfilesgo.com|upfion.com|upfiles.app|upfiles-urls.com +@@*$ghide,domain=upfilesgo.com|upfion.com|upfiles.app|upfiles-urls.com +upfilesgo.com,upfion.com,upfiles.app,upfiles-urls.com##+js(no-fetch-if, method:HEAD) +rentry.co##article:has(#download-your-archive-file) +||sharecube.pro^$all +||flyshare.cfd^$all +! shortencash. click antiadb +shortencash.click##+js(nostif, displayAdBlockerMessage) +! mobilejsr. com antiadb +@@||mobilejsr.com^$ghide +compu-pc.com##+js(acs, document.querySelectorAll, pastepc) +quins.us##+js(no-fetch-if, doubleclick, , {"type": "opaque"}) +quins.us##+js(set, document.hasFocus, trueFunc) +!#if cap_html_filtering +flycutlink.com##^script:has-text(/google_ad_client|popMagic/) +!#else +flycutlink.com##+js(acs, document.addEventListener, google_ad_client) +flycutlink.com##+js(acs, document.querySelectorAll, popMagic) +!#endif +flycutlink.com##+js(set, blurred, false) +flycutlink.com##+js(nowoif) +flycutlink.com##+js(set, go_popup, {}) +filespayout.com##+js(nowoif) +filespayout.com###normal-box +filespayout.com##center > a[rel] +filespayouts.com##+js(aeld, click, document.createElement) +filespayouts.com###normal-box +||boarfishesquandangsunderdried.com^ +||anylinks.in/full*^url=aHR0c$doc,urlskip=?url -base64 +updown.fun##+js(no-fetch-if, googlesyndication) +qthang.net##+js(aopr, app_vars.force_disable_adblock) +! howblogs. xyz ad popups +||howblogs.xyz^$csp=script-src 'self' *.googleapis.com *.bootstrapcdn.com *.google.com *.gstatic.com +||glashanburg.com^ +! techzed. info popups +techzed.info##+js(nowoif) +! xdl.my.id popup redirect +xdl.my.id##+js(rpnt, script, window.location.href, temp, includes, linkToOpen) +@@||bcvc.ink/prebid-ads.js$script,1p +tickhosting.com##+js(set, detectedAdblock, undefined) +*$xhr,3p,redirect-rule=nooptext,domain=tickhosting.com +@@*$ghide,domain=krakenfiles.com +||krakenfiles.com/assets/js/adpp.js$script,1p +krakenfiles.com##+js(nowoif) +krakenfiles.com##+js(aeld, DOMContentLoaded, open) +krakenfiles.com##+js(aeld, DOMContentLoaded, history.go) +krakenfiles.com##+js(rmnt, script, onpopstate) +krakenfiles.com##+js(rmnt, script, showBannerAdBlock) +krakenfiles.com##+js(rpnt, script, state.shown >= redirectUrls.length, true) +krakenfiles.com##+js(prevent-fetch, pagead2.googlesyndication.com/pagead/js/adsbygoogle.js) +krakenfiles.com##+js(prevent-fetch, googletagservices) +krakenfiles.com##+js(set, HTMLScriptElement.prototype.onerror, undefined) +krakenfiles.com##[class] > [id] > a[href][target="_blank"]:upward(div) +!krakenfiles.com##div:has(> span:has-text(/^Ad$/)) +||palpatecricketmajesty.com^ +||wounofoarausooy.net^$popup +aman-dn.blogspot.com#@#.ads-ad +aman-dn.blogspot.com###overlay +aman-dn.blogspot.com###popup +aman-dn.blogspot.com##body:style(overflow: auto !important;) +aman-dn.blogspot.com##span[style]:has(> span[style]:has-text(ADVERTISEMENT)) +aman-dn.blogspot.com###info-message:has-text(ADBLOCK) +aman-dn.blogspot.com##+js(nano-sib, countdown) +in91vip.win##+js(rpnt, script, (isAdsenseBlocked), (false)) +in91vip.win##+js(set, isTabActive, true) +in91vip.win###continueBtn +*$script,3p,domain=2filmy4web.com.in|links.filmymeet.wiki +360news4u.net##+js(trusted-override-element-method, HTMLAnchorElement.prototype.click, a[target="_blank"]) +360news4u.net##+js(aeld, , history.go) +dayuploads.com##+js(nowoif) +go.linkify.ru##.overlay +go.linkify.ru##.banner +go.linkify.ru##+js(ra, href, [href*="survey"], stay) +hypershort.com##+js(aeld, click, adForm) +hypershort.com##+js(aeld, , history.go) +hypershort.com##.linkcontain > button:has-text(Download Link) +cutyion.com##+js(aeld, click, shouldOpenPopUp) +||hk6vdj4z.click^ +4khd.com##+js(acs, document.querySelectorAll, popMagic) +4khd.com##+js(nano-sib, countdown, 1000, 0.001) +!#if cap_html_filtering +weshare.is##^script:has-text(onDevToolOpen) +!#else +weshare.is##+js(rmnt, script, onDevToolOpen) +!#endif +weshare.is##+js(no-fetch-if, adsbygoogle) +weshare.is##+js(aeld, blur) +*$script,3p,denyallow=code.jquery.com|challenges.cloudflare.com,domain=filepv.com +go.shortnest.com##+js(nowoif) +go.shortnest.com##+js(nano-stb, , 6000) +shortnest.com###dl-bbtn:style(display: none !important;) +shortnest.com###cont-bbtn:style(display: block !important;) +shortnest.com##+js(set, blurred, false) +||shortnest.com/st?$doc,urlskip=?url +||qty3e.pro^$all +savetub.com##+js(aopr, open) +! lordsanime.in/hindisubbedacademy.com antiadb +rokni.xyz,technicalline.store,quizrent.com##+js(no-fetch-if, adsbygoogle) +quizrent.com##body:style(overflow: auto !important;) +! nxprime.in ads/antiadb +||nxprime.in/ads +nxprime.in###show_nxhub +nxprime.in##+js(acs, setTimeout, localStorage) +! 1xanime related antiadb +1xanimes.in##+js(nostif, adsbygoogle) +arolinks.com##.telegram-banner +arolinks.com##+js(rpnt, script, /#Intent.*?end/) +arolinks.com##+js(rpnt, script, intent, https) +arolinks.com##+js(nostif, location.href) +arolinks.com##+js(rpnt, script, /(['"])https?:\/\/[^'"]+\1/, $1$1, condition, /addEventListener|adUrl|open/) +arolinks.com##+js(rpnt, script, _blank, _self, condition, href) +arolinks.com##+js(set, blurred, false) +! ##+js(rpnt, script, /window\.location\.href.*?;/) +vplink.in##+js(rpnt, script, /#Intent.*?end/) +vplink.in##+js(rpnt, script, intent, https) +vplink.in##+js(nostif, location.href) +vplink.in##+js(rpnt, script, _blank, _self, condition, href) +vplink.in##+js(set, blurred, false) +vplink.in##.telegram-banner +vplink.in##.banner-inner +vplink.in##div#advertisement-block +vplink.in##a[href*=".me/+"] +vplink.in##+js(rpnt, script, /(['"])https?:\/\/[^'"]+\1/, $1$1, condition, /addEventListener|adUrl|open/) +vplink.in,arolinks.com##+js(rpnt, script, e.preventDefault();) +! trzanime .com shorteners +classicoder.com##+js(aost, document.getElementsByTagName, adsBlocked) +classicoder.com###wpsafe-link:style(display: block !important;) +classicoder.com###wpsafe-link:others() +earnbee.xyz##+js(aopr, open) +earnbee.xyz###overlay +||pelistop.xyz/*&url=http$doc,urlskip=?url +https +||colganteminimalista.com/*&url=http$doc,urlskip=?url +https +datavaults.co###dummy +datavaults.co###original:style(display: block !important;) +datavaults.co##+js(set, clicked, 2) +datavaults.co##+js(rmnt, script, dummy) +datavaults.co##+js(acs, atob, charCodeAt) +datavaults.co##+js(nostif, location.href, 5000) +||imrobpolit.pro^ +fastt.gg###startDownload +fastt.gg##+js(nowoif, _blank) +fastt.gg##+js(nano-sib, countdown, 1000) +fastt.gg,zmamobile.com##+js(nano-stb, tick, 1000) +fastt.gg##+js(rpnt, script, !isAdTriggered, false) +zmamobile.com##main > center > a[target="_blank"][rel="nofollow noreferrer noopener"] +3dsfree.org##+js(rpnt, script, 900, 100) +3dsfree.org##+js(rmnt, script, ctrlKey) +theuser.cloud##+js(acs, fetch, Math.random) +tulink.org##+js(no-fetch-if, /doubleclick|googlesyndication/) +||storz.ma/redigoto?to=aHR0c$doc,urlskip=?to -base64 +recut.ru##a#more +/yzfdmoan.js$script,domain=lockr.so,redirect=noopjs +!#if cap_html_filtering +up4load.com##^script:has-text(/\);break;case|advert_|POPUNDER_URL|adblock/) +!#else +up4load.com##+js(rmnt, script, /\);break;case|advert_|POPUNDER_URL|adblock/) +!#endif +fileguard.cc##+js(nosiif, ?key=) +! .cfd popups +go.zovo.ink###continue-button:style(display: block !important;) +go.zovo.ink###download-button, footer +go.zovo.ink##.text-left +go.zovo.ink##+js(acs, setTimeout, decodeURIComponent(escape) +go.zovo.ink##+js(rpnt, script, 9000, 10, condition, continue-button) +go.zovo.ink##+js(nowoif) +zovo2.top###continue-button:style(display: block !important;) +zovo2.top##[href*="javascript:void"] > button +zovo2.top##.text-left +zovo2.top##+js(acs, JSON.parse, document.head.appendChild) +zovo2.top##+js(rpnt, script, /\d{4}/gm, 10, condition, getElementById) +zovo2.top##+js(aeld, click, open) +file-me.top##+js(acs, JSON.parse, document.head.appendChild) +file-me.top##+js(acs, String.fromCharCode, atob) +file-me.top##+js(aeld, click, clicksCount) +rootz.so##+js(nowoif, _blank) +rootz.so##+js(trusted-json-edit-fetch-response, .data.isAdsEnabled=false, propsToMatch, /api/files) +rootz.so##+js(trusted-replace-argument, document.createTreeWalker, 2, json:{"acceptNode": "function() { return NodeFilter.FILTER_REJECT; }"}) +rootz.so##+js(acs, setTimeout, decodeURIComponent(escape) +rootz.so##+js(aeld, click, if) +rootz.so##+js(aeld, click, prevent) +ranoz.gg##+js(json-edit, ..directLink) +ranoz.gg##+js(json-edit, ..props[?.children*="clicksCount"].children) +ranoz.gg##+js(aeld, click, clicksCount) +ranoz.gg##+js(nowoif, _blank) +ranoz.gg##+js(no-fetch-if, adskeeper) +ranoz.gg##div[class^="page_box_wrapper"] a[aria-label="Download button"]:not([href*="ranoz.gg"]):remove-attr(href) +ranoz.gg##+js(aeld, click, preventDefault) +ranoz.gg##+js(acs, setTimeout, decodeURIComponent(escape) +||sgeiruehou.cfd^$all +datanodes.to##+js(ra, disabled, .downloadbtn) +datanodes.to###countdown +*$script,3p,denyallow=google.com|gstatic.com,domain=datanodes.to +datanodes.to##[href^="https://cinemaunlocked.com"] +datanodes.to##[href^="https://fmovies-hd.to"] +datanodes.to##div[class] > center > a[href][rel="nofollow"][target="_blank"] +datanodes.to##+js(aeld, click, pop) +datanodes.to##+js(acs, String.fromCharCode, atob) +datanodes.to##+js(aeld, click, appendChild) +datanodes.to##+js(rmnt, script, /\\x|_blank/) +||dohggte.com^ +||loadingfreerar.top^$all +vikingf1le.us.to##+js(nowoif, zigi_tag_id) +vikingf1le.us.to##+js(aopr, atob) +||gxh1yqz2v.xyz^ +||cloudfront.net^$script,domain=vik1ngfile.site +vik1ngfile.site##a[href="/fast-download"] +vik1ngfile.site##+js(acs, atob, self.Math) +vik1ngfile.site##+js(aeld, click, appendChild) +vik1ngfile.site##+js(acs, String.prototype.indexOf, (function() +file-upload.*##+js(nowoif) +file-upload.*##+js(acs, document.getElementById, undefined) +file-up.org##+js(acs, getCookie, setCookie) +file-upload.*##ins.adsbygoogle +||file-upload.com^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation +file-upload.com##^meta[http-equiv="refresh"] +file-upload.*##+js(aopw, Fingerprint2) +file-upload.net##+js(set, advertisement3, true) +/werbebanner-$badfilter +file-upload.*##+js(aopr, start) +file-upload.org##+js(acs, JSON.parse, document.head.appendChild) +||cfd/tags/*.js$script,3p +||ping.fb-cdn.net^ +buzzheavier.com,trashbytes.net##+js(aeld, DOMContentLoaded, location.href) +buzzheavier.com,bzzhr.co,bzzhr.to##+js(set, AdLink, '') +buzzheavier.com##+js(acs, String.fromCharCode, atob) +buzzheavier.com##+js(nowoif, !buzzheavier.com) +buzzheavier.com##+js(aeld, click, removeChild) +buzzheavier.com###unclear2 +buzzheavier.com##div.mx-auto.text-center > a[href][target="_blank"] +buzzheavier.com,bzzhr.co,bzzhr.to##+js(acs, setTimeout, decodeURIComponent(escape) +akirabox.com,akirabox.to##[href*="nordvpn.net"] +akirabox.com,akirabox.to##+js(aeld, DOMContentLoaded, open) +akirabox.com,akirabox.to##+js(nowoif, _blank) +akirabox.com,akirabox.to##+js(acs, setTimeout, decodeURIComponent(escape) +akirabox.com,akirabox.to##+js(rmnt, script, (function(, excludes, document) +akirabox.com,akirabox.to##+js(aeld, click, .href) +akirabox.*##+js(remove-node-text, script, /var lw=\(\[\]\+!\[\]\)/) +||doubletag.run/tags/$script,domain=akirabox.to +||cfd/tags/$script,domain=akirabox.to +||shareease.link^$all +||fastfilehost.link^$all +||rapidsend.cfd^$all +||generating.link^$all +! End cfd Popups +rslinks.net##+js(rpnt, script, /#Intent.*?end/) +rslinks.net##+js(rpnt, script, intent, https) +thegadgetking.in##+js(rpnt, script, 3000, 10, condition, getElementById) +thegadgetking.in##+js(nosiif, notifyExec) +thegadgetking.in###outer-wrapper +thegadgetking.in##.w3-border-blue.w3-rightbar.w3-leftbar.w3-pale-white.w3-container > p +gamesmain.xyz,foodtechnos.in##+js(rmnt, script, /adScriptURL|eval/) +gamesmain.xyz,foodtechnos.in##+js(rpnt, script, typeof window.adsbygoogle === "undefined", false) +gamesmain.xyz,foodtechnos.in##+js(acs, document.createElement, adsBlocked) +gamesmain.xyz,foodtechnos.in##+js(rmnt, script, .onerror) +gamesmain.xyz,foodtechnos.in##+js(rpnt, script, /window\.location\.href.*/) +gamesmain.xyz,foodtechnos.in##+js(rpnt, script, _blank, _self) +gamesmain.xyz,foodtechnos.in##+js(rpnt, script, /30000/gm, 10) +gamesmain.xyz,foodtechnos.in##+js(nano-stb, /.?/, *, 0.001) +gamesmain.xyz,foodtechnos.in##+js(nano-sib, /.?/, *, 0.001) +gamesmain.xyz,foodtechnos.in##+js(rpnt, script, /\d{5}\);/gms, 10);) +gamesmain.xyz,foodtechnos.in##+js(rpnt, script, /\d{4}\);/gms, 10);) +gamesmain.xyz,foodtechnos.in##+js(rpnt, script, spinner.classList, readylink.classList) +gamesmain.xyz,foodtechnos.in##+js(rpnt, script, getNowButton.classList, downloadButton.classList) +gamesmain.xyz,foodtechnos.in##+js(rpnt, script, *Opens in new tab) +gamesmain.xyz,foodtechnos.in###outer-wrapper:style(clip-path: circle(0) !important;) +gamesmain.xyz,foodtechnos.in###btngroup > iframe:style(display:block !important; height:70px !important; width:260px !important; background:linear-gradient(to right,#eb3349 40%,#f45c43) !important; position:fixed !important; top:25% !important; left:50% !important; transform:translate(-50%,-50%) !important;) +||googleusercontent.com^$domain=foodtechnos.in|gamesmain.xyz +||facebook.net^$domain=foodtechnos.in|gamesmain.xyz +||kolorowey.bbvms.com^$script,domain=foodtechnos.in|gamesmain.xyz +||blogger.com^$script,domain=foodtechnos.in|gamesmain.xyz +||cdn.bluebillywig.com^$script,domain=foodtechnos.in|gamesmain.xyz +vgames.fun##+js(aost, document.getElementById, fairAdblock) +! hellabyte. one ad popups +hellabyte.one##+js(aopr, open) +||speed.cloudflare.com/meta$xhr,domain=hellabyte.one +rushuploads.com##+js(json-prune-xhr-response, data.value data.redirectUrl data.bannerUrl, , propsToMatch, /admin/settings) +neonxcloud.top,gdmax.site##+js(nowoif, !gcloud) +gcloud.cfd##+js(nowoif) +||enraptureminims.com^$all +||intrudeimpolitetortoise.com^$all +! dramadrip/gamesleech. com ads +devicediary.online,gamesleech.com##+js(nowoif, _blank) +||90003cfd.cfd^ +||securecloudtorrent.com^ +||systemsecurenow.icu^ +app.link2unlock.com##+js(nowoif) +xtglinks.com,7vibelife.com##+js(rpnt, script, /android/gi, false, stay, 1) +xtglinks.com,7vibelife.com##+js(rpnt, script, /kiwi|firefox/, false, stay, 1) +xtglinks.com,7vibelife.com##+js(rpnt, script, isFirefox || isKiwi || !isChrome, false, stay, 1) +instabiosai.com,mealcold.com,insuranceloan.akbastiloantips.in,7vibelife.com##+js(no-xhr-if, doubleclick) +instabiosai.com,mealcold.com,insuranceloan.akbastiloantips.in,7vibelife.com##+js(no-xhr-if, google, length:10) +instabiosai.com,mealcold.com,insuranceloan.akbastiloantips.in,7vibelife.com##+js(rpnt, script, /2000|1000/, 10) +instabiosai.com,mealcold.com,insuranceloan.akbastiloantips.in,7vibelife.com##body:style(color: transparent !important; font-size: 0 !important;) +instabiosai.com,mealcold.com,insuranceloan.akbastiloantips.in,7vibelife.com###continue-show, #please-wait, .sgu-tech-mysteps, .sgu-tech-step:others() +instabiosai.com,mealcold.com,insuranceloan.akbastiloantips.in,7vibelife.com###continue-show:style(display: block !important; margin-top: 20%! important;) +xtglinks.com##.animated.zoomIn.wow.text-center.py-5 +bgmiconfig.ink##.ad-zone +stackmint.ink,bgmiconfig.ink,inkvoyage.xyz##+js(rpnt, script, /10;|6;/, 1;, condition, progress) +messycloud.com##div.ad-zone +rempo.xyz##+js(rpnt, script, isAndroid), false)) +shrink.icu##h3, p +shrink.icu##.blog-item +shrink.icu##center +shrink.icu##.banner +@@||shrink.$ghide,domain=shrink.icu|shrink.yt +shrink.icu##+js(aopr, app_vars.force_disable_adblock) +shrink.icu##+js(aopr, adBlockDetected) +shrink.icu##+js(nowebrtc) +shrink.icu##+js(set, blurred, false) +shrink.icu##+js(aopr, open) +shrink.icu##+js(noeval-if, replace) +shrink.icu##+js(trusted-replace-node-text, script, /if((.*))/, if(1==1), condition, #main) +shrink.icu##+js(rmnt, script, '{delete window[') +bigbtc.win##+js(rmnt, script, alert) +bigbtc.win##div[style^="width:300px;height:250px"] +bigbtc.win,cryptofun.space###block-adb-enabled, #block-add-enabled, #block-adeb-enabled +bigbtc.win,cryptofun.space###main, #ielement, #mainnew:style(display: block !important;) +bigbtc.win##div:has(> div[style] > div[id] > script[src^="//ads.themoneytizer.com"]) +@@*$ghide,domain=torupload.com|nathanmichaelphoto.com +*$script,redirect-rule=noopjs,domain=torupload.com|nathanmichaelphoto.com +*$xhr,redirect-rule=nooptext,domain=torupload.com|nathanmichaelphoto.com +*$frame,redirect-rule=noopframe,domain=torupload.com|nathanmichaelphoto.com +*$object,redirect-rule=noopframe,domain=torupload.com|nathanmichaelphoto.com +*$image,redirect-rule=32x32.png,domain=torupload.com|nathanmichaelphoto.com +*$object,domain=torupload.com|nathanmichaelphoto.com +torupload.com,nathanmichaelphoto.com##+js(nowoif, , 10, obj) +@@||dash.ezmob.com/ss/js/ads.js$script,domain=nathanmichaelphoto.com +nathanmichaelphoto.com#@##gdpr-cookie-notice +torupload.com##+js(nano-sib, /seconds--|timeLeft--/, *) +torupload.com##+js(trusted-replace-argument, document.addEventListener, 0, json:"click", condition, visibilitychange) +torupload.com##+js(set, document.hidden, true) +torupload.com,nathanmichaelphoto.com##+js(rpnt, script, false, true, condition, opened) +torupload.com,nathanmichaelphoto.com##+js(set, HTMLScriptElement.prototype.onerror, undefined) +torupload.com,nathanmichaelphoto.com##+js(trusted-replace-argument, document.querySelector, 0, json:"main", condition, /div-gpt-ad-dgking|\.GoogleActiveViewElement/) +torupload.com,nathanmichaelphoto.com##+js(trusted-replace-argument, document.querySelectorAll, 0, json:"main", condition, /div-gpt-ad-|\.adsbygoogle/) +torupload.com,nathanmichaelphoto.com##+js(trusted-replace-argument, document.getElementById, 0, json:"container", condition, adblock_detected) +torupload.com,nathanmichaelphoto.com##+js(prevent-fetch, /pub\.clickadu|bing\.com/) +||youweepingt.org^$popup +||cdclub.net^$popup +||oundhertobeconsist.org^$popup +||vampyrejibmen.com^$popup +avnsgames.com,healthmyst.com##+js(rmnt, script, /detectAdBlock|checkFakeAd|adBlockNotDetected/) +avnsgames.com,healthmyst.com###go_d2[action]:style(display: inline-block !important;) +avnsgames.com,healthmyst.com##.fluidprimary, #go_d, .adb_detected > h2 +avnsgames.com,healthmyst.com##.steps +avnsgames.com,healthmyst.com##.instructions +avnsgames.com,healthmyst.com##.reopen-info +avnsgames.com,healthmyst.com##h4 +avnsgames.com,healthmyst.com##+js(rpnt, script, /false;/gm, true;, condition, isSubscribed) +avnsgames.com,healthmyst.com##+js(nano-sib, /.?/, *, 0.02) +lnbz.la##+js(nowoif) +lnbz.la##+js(set, blurred, false) +||ehteraf.online^$domain=pxtech.site +@@*$ghide,domain=pxtech.site +pxtech.site##+js(rpnt, script, 1000, 10) +pxtech.site##+js(nostif, a, 250) +pxtech.site##.timer-bar, .moobiedat-container > p, #nextBtn, .btn-moobiedat:others() +pxtech.site##+js(trusted-click-element, '1000, #nextBtn, 1000, #redirectBtn > .btn-moobiedat', 4000) +nitro-link.com##+js(nowoif) +||uiil.ink/js/profiton.js$script,1p +uiil.ink##+js(aopr, app_vars.force_disable_adblock) +uiil.ink##+js(rmnt, script, /delete win/) +uiil.ink##+js(nowoif) +uiil.ink##+js(aeld, click, open) +uiil.ink##+js(set, blurred, false) +uiil.ink##button:remove-attr(onclick) +uiil.ink##[src*="data:image/png;base64,"] +uiil.ink##h3, p, .text-left +uiil.ink##[src*="i.gyazo.com"], a[href][target="_blank"] +uiil.ink##.banner-page .row > div, .captcha-page > div > *:style(font-size: 0px !important;) +uiil.ink##input#downloadButton +tfly.link##+js(trusted-suppress-native-method, eval, '"/chp_?ad/"') +tfly.link##+js(set, blurred, false) +tfly.link##.box-main > .row [href] +tfly.link##.text-left +tfly.link##footer +tfly.link##center > [href] +vipshort.in##+js(rpnt, script, intentUrl;, fallbackUrl;) +vipshort.in##+js(set, blurred, false) +*$script,xhr,redirect-rule=noopjs,domain=cloudfam.io +*$image,redirect-rule=32x32.png,domain=cloudfam.io +@@*$ghide,domain=cloudfam.io +cloudfam.io##+js(nostif, /blocked|null/) +cloudfam.io##+js(nano-sib, /.?/, *) +cloudfam.io##+js(nano-stb, /.?/, *) +cloudfam.io##+js(nowoif, _blank) +||uptobhai.$document,csp=default-src 'self' 'unsafe-inline' *.favicon.cc *.google.com *.gstatic.com *.googleapis.com; img-src * data: blob: +uptobhai.*##+js(set, time, 0) +cloubix.com##.d0a-upgrade-wrap, .cb-footer, .d0a-status-bar, .cb-hamburger, .d0a-card-head, .d0a-features-row, .d0a-speed-box, .d0a-btn-note, .d0a-ads-section, .dl1-report-btn, .dl1-actions, .dl1-codes +cloubix.com##*:style(font-family: none! important;) +cloubix.com##.dl1-main:style(margin-left: 50px ! important;) +cloubix.com##+js(nano-sib, remaining--, *) +cloubix.com##+js(trusted-set-attr, #countdown, data-status, active) +cloubix.com##+js(aeld, click, appendChild) +||getfinefile.com^$popup +||annoyingnightmareedit.com^$popup +||baggyrepackingrocky.com^$popup +||narilyhukelpfulin.com^$popup +paste4free.site##+js(nostif, getComputedStyle) +paste4free.site##+js(nano-sib, secondsLeft) +paste4free.site##a[href*="?key="][target="_blank"] +playpaste.net##.flex-center > [href*="rapidshare"] +hindisink.com##div.step_box:others() +hindisink.com###overlay, .popup +!hindisink.com##.btn, [id^="rtg-"]:remove-class(no_display) +hindisink.com##+js(rpnt, script, /\d{4}/gms, 10, condition, count) +hindisink.com##+js(aeld, visibilitychange) +linkshortx.in##.bg_cover.footer-area +linkshortx.in##+js(set, blurred, false) +||acscdn.com/script/aclib.js$script,redirect-rule=noopjs +coinclix.co##+js(trusted-replace-argument, document.getElementById, 0, json:"header", condition, /ad-chk|aads-frame/) +! file host popunders +swiftuploads.com##+js(rpnt, script, toUpperCase()+, toSomeCase()+) +akirabox.com,akirabox.to,bowfile.com,buzzheavier.com,bzzhr.co,bzzhr.to,cg-gamespc.net,datavaults.co,dodi-repacks.site,file-me.top,filemirage.com,fuckingfast.*,fuckingfast.co,game-repack.site,gamedrive.*,getfreegames.net,go.zovo.ink,koramaup.com,multiup.io,ranoz.gg,reloadedsteam.com,rootz.so,steamgg.net,steamunderground.net,usersdrive.com,vik1ngfile.site,worldofpcgames.com,zeilink.net,zovo2.top,zpaste.net##+js(remove-node-text, script, /"\\|\\[ux]|\+\[\]/, excludes, self.__next) +1cloudfile.com,akirabox.com,akirabox.to,bowfile.com,buzzheavier.com,bzzhr.co,bzzhr.to,cg-gamespc.net,datavaults.co,dodi-repacks.site,file-me.top,filemirage.com,fuckingfast.*,fuckingfast.co,game-repack.site,gamedrive.*,getfreegames.net,go.zovo.ink,koramaup.com,multiup.io,ranoz.gg,reloadedsteam.com,rootz.so,steamgg.net,steamunderground.net,swiftuploads.com,usersdrive.com,vik1ngfile.site,worldofpcgames.com,zeilink.net,zovo2.top,zpaste.net##+js(set, Element.prototype.closest, falseFunc) +||cfd^$3p,popup,domain=1cloudfile.com|akirabox.com|akirabox.to|bowfile.com|buzzheavier.com|bzzhr.co|bzzhr.to|cg-gamespc.net|datavaults.co|dodi-repacks.site|file-me.top|filemirage.com|fuckingfast.*|fuckingfast.co|game-repack.site|gamedrive.*|getfreegames.net|go.zovo.ink|koramaup.com|multiup.io|ranoz.gg|reloadedsteam.com|rootz.so|steamgg.net|steamunderground.net|swiftuploads.com|usersdrive.com|vik1ngfile.site|worldofpcgames.com|zeilink.net|zovo2.top|zpaste.net +/^https:\/\/[a-z0-9]+\.[a-z0-9]+\.cfd\/\?[a-z]+=[a-zA-Z0-9+/=:_-]+$/$3p,all,match-case +/^https:\/\/open\d+\.[a-z0-9]+\.(?:cyou|sbs|shop|cfd|top)\/\?data=[A-Za-z0-9+/_:=-]+$/$3p,all,match-case +||cfd/rfdtagarg/*.js +||zeilink.net/api/public/ads +||cdn-n.net^ +||cdn-x.net^ +||cdn-z.net^ +||asset-cdn.dev^ +/^https:\/\/[a-z-]+\.cdn-[a-z]\.net\/$/$xhr,3p +/^https:\/\/\d+\.cfd\/[a-z]{3}tag[a-z]{3}\/v\d\/[a-zA-Z0-9]+:C\d\.js\b/$script,3p,match-case,to=cfd +!#if env_safari +/^https:\/\/[0-9]+\.cfd\/[a-z][a-z][a-z]tag[a-z][a-z][a-z]\/v[0-9]\/[a-zA-Z0-9]+:C[0-9]\.js\b/$script,3p,match-case +!#endif +! End cfd Popups +||yewfjsdi.it.com^$popup +koramaup.com##div > center > button[class][style] +!#if env_mobile +! *** filters/filters-mobile.txt *** +!----- 2020 ----- +xnxx.com,xvideos.com###ad-header-mobile +jprime.jp##.ad-overlay +apkdone.com##.adplaceholder-top +cyclehack.jp,gogo-miyagi.com,izuhack.akao-hotel.co.jp,nap-camp.com,runhack.jp,tsurihack.com,yamahack.com###ad-overlay +m.washingtontimes.com##.mrf-adv__wrapper +fortune.com##.amp-ad-wrapper +fortune.com##.amp-ad-wrapper-dianomi +wallpaperbetter.com##.lst_ads +variety.com##.admz +bakusai.com##.adSection +gamereactor.asia,gamereactor.cn,gamereactor.cz,gamereactor.de,gamereactor.dk,gamereactor.es,gamereactor.eu,gamereactor.fi,gamereactor.fr,gamereactor.it,gamereactor.jp,gamereactor.kr,gamereactor.nl,gamereactor.no,gamereactor.pl,gamereactor.pt,gamereactor.se###ad_topScroller +! player on clipx.tv +xxxporns.org##.adBlock +a-eroland.net,hhmanga.com,nyahentai.*##.__isboostReturnAd +!----- 2023 ----- +facebook.com#?#div[data-status-bar-color] > div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"]:has(> div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"] div[data-mcomponent="TextArea"] .native-text > span:contains(/(Sponsored|Gesponsert|Sponsorlu|Sponsorowane|Ispoonsara godhameera|Geborg|Bersponsor|Ditaja|Disponsori|Giisponsoran|Sponzorováno|Sponsoreret|Publicidad|May Sponsor|Sponsorisée|Oipytyvôva|Ɗaukar Nayin|Sponzorirano|Uterwa inkunga|Sponsorizzato|Imedhaminiwa|Hirdetés|Misy Mpiantoka|Gesponsord|Sponset|Patrocinado|Patrocinado|Sponsorizat|Sponzorované|Sponsoroitu|Sponsrat|Được tài trợ|Χορηγούμενη|Спонсорирано|Спонзорирано|Ивээн тэтгэсэн|Реклама|Спонзорисано|במימון|سپانسرڈ|دارای پشتیبانی مالی|ስፖንሰር የተደረገ|प्रायोजित|ተደረገ|प|प्रायोजित|স্পনসর্ড|ਪ੍ਰਯੋਜਿਤ|પ્રાયોજિત|ପ୍ରାୟୋଜିତ|செய்யப்பட்ட செய்யப்பட்ட|చేయబడినది చేయబడినది|ಪ್ರಾಯೋಜಿಸಲಾಗಿದೆ|ചെയ്‌തത് ചെയ്‌തത്|ලද ලද ලද|สนับสนุน สนับสนุน รับ สนับสนุน สนับสนุน|ကြော်ငြာ ကြော်ငြာ|ឧបត្ថម្ភ ឧបត្ថម្ភ ឧបត្ថម្ភ|광고|贊助|赞助内容|広告|സ്‌പോൺസർ ചെയ്‌തത്)/)):not(:has([data-tracking-duration-id])) +facebook.com#?#div[data-status-bar-color] > div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"]:has(> div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"] div[data-mcomponent="TextArea"] .native-text > span:contains(/(Sponsored|Gesponsert|Sponsorlu|Sponsorowane|Ispoonsara godhameera|Geborg|Bersponsor|Ditaja|Disponsori|Giisponsoran|Sponzorováno|Sponsoreret|Publicidad|May Sponsor|Sponsorisée|Oipytyvôva|Ɗaukar Nayin|Sponzorirano|Uterwa inkunga|Sponsorizzato|Imedhaminiwa|Hirdetés|Misy Mpiantoka|Gesponsord|Sponset|Patrocinado|Patrocinado|Sponsorizat|Sponzorované|Sponsoroitu|Sponsrat|Được tài trợ|Χορηγούμενη|Спонсорирано|Спонзорирано|Ивээн тэтгэсэн|Реклама|Спонзорисано|במימון|سپانسرڈ|دارای پشتیبانی مالی|ስፖንሰር የተደረገ|प्रायोजित|ተደረገ|प|प्रायोजित|স্পনসর্ড|ਪ੍ਰਯੋਜਿਤ|પ્રાયોજિત|ପ୍ରାୟୋଜିତ|செய்யப்பட்ட செய்யப்பட்ட|చేయబడినది చేయబడినది|ಪ್ರಾಯೋಜಿಸಲಾಗಿದೆ|ചെയ്‌തത് ചെയ്‌തത്|ලද ලද ලද|สนับสนุน สนับสนุน รับ สนับสนุน สนับสนุน|ကြော်ငြာ ကြော်ငြာ|ឧបត្ថម្ភ ឧបត្ថម្ភ ឧបត្ថម្ភ|광고|贊助|赞助内容|広告|സ്‌പോൺസർ ചെയ്‌തത്)/)):not(:has([data-tracking-duration-id])) + .m:is(.bg-s2, .bg-s3, .bg-s4):has(+ .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:not(:has(.m:empty))) +facebook.com#?#div[data-status-bar-color] > div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"]:has(> div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"] div[data-mcomponent="TextArea"] .native-text > span:contains(/(Sponsored|Gesponsert|Sponsorlu|Sponsorowane|Ispoonsara godhameera|Geborg|Bersponsor|Ditaja|Disponsori|Giisponsoran|Sponzorováno|Sponsoreret|Publicidad|May Sponsor|Sponsorisée|Oipytyvôva|Ɗaukar Nayin|Sponzorirano|Uterwa inkunga|Sponsorizzato|Imedhaminiwa|Hirdetés|Misy Mpiantoka|Gesponsord|Sponset|Patrocinado|Patrocinado|Sponsorizat|Sponzorované|Sponsoroitu|Sponsrat|Được tài trợ|Χορηγούμενη|Спонсорирано|Спонзорирано|Ивээн тэтгэсэн|Реклама|Спонзорисано|במימון|سپانسرڈ|دارای پشتیبانی مالی|ስፖንሰር የተደረገ|प्रायोजित|ተደረገ|प|प्रायोजित|স্পনসর্ড|ਪ੍ਰਯੋਜਿਤ|પ્રાયોજિત|ପ୍ରାୟୋଜିତ|செய்யப்பட்ட செய்யப்பட்ட|చేయబడినది చేయబడినది|ಪ್ರಾಯೋಜಿಸಲಾಗಿದೆ|ചെയ്‌തത് ചെയ്‌തത്|ලද ලද ලද|สนับสนุน สนับสนุน รับ สนับสนุน สนับสนุน|ကြော်ငြာ ကြော်ငြာ|ឧបត្ថម្ភ ឧបត្ថម្ភ ឧបត្ថម្ភ|광고|贊助|赞助内容|広告|സ്‌പോൺസർ ചെയ്‌തത്)/)):not(:has([data-tracking-duration-id])) + .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:is(.bg-s2, .bg-s3, .bg-s4):has(+ .m:not(:has(.m:empty))) +facebook.com#?#div[data-status-bar-color] > div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"]:has(> div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"] div[data-mcomponent="TextArea"] .native-text > span:contains(/(Sponsored|Gesponsert|Sponsorlu|Sponsorowane|Ispoonsara godhameera|Geborg|Bersponsor|Ditaja|Disponsori|Giisponsoran|Sponzorováno|Sponsoreret|Publicidad|May Sponsor|Sponsorisée|Oipytyvôva|Ɗaukar Nayin|Sponzorirano|Uterwa inkunga|Sponsorizzato|Imedhaminiwa|Hirdetés|Misy Mpiantoka|Gesponsord|Sponset|Patrocinado|Patrocinado|Sponsorizat|Sponzorované|Sponsoroitu|Sponsrat|Được tài trợ|Χορηγούμενη|Спонсорирано|Спонзорирано|Ивээн тэтгэсэн|Реклама|Спонзорисано|במימון|سپانسرڈ|دارای پشتیبانی مالی|ስፖንሰር የተደረገ|प्रायोजित|ተደረገ|प|प्रायोजित|স্পনসর্ড|ਪ੍ਰਯੋਜਿਤ|પ્રાયોજિત|ପ୍ରାୟୋଜିତ|செய்யப்பட்ட செய்யப்பட்ட|చేయబడినది చేయబడినది|ಪ್ರಾಯೋಜಿಸಲಾಗಿದೆ|ചെയ്‌തത് ചെയ്‌തത്|ලද ලද ලද|สนับสนุน สนับสนุน รับ สนับสนุน สนับสนุน|ကြော်ငြာ ကြော်ငြာ|ឧបត្ថម្ភ ឧបត្ថម្ភ ឧបត្ថម្ភ|광고|贊助|赞助内容|広告|സ്‌പോൺസർ ചെയ്‌തത്)/)):not(:has([data-tracking-duration-id])) + .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:not(:has(.m:empty)) +facebook.com#?#div[data-status-bar-color] > div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"]:has(> div[data-mcomponent="MContainer"] > div[data-mcomponent="MContainer"] div[data-mcomponent="TextArea"] .native-text > span:contains(/(Sponsored|Gesponsert|Sponsorlu|Sponsorowane|Ispoonsara godhameera|Geborg|Bersponsor|Ditaja|Disponsori|Giisponsoran|Sponzorováno|Sponsoreret|Publicidad|May Sponsor|Sponsorisée|Oipytyvôva|Ɗaukar Nayin|Sponzorirano|Uterwa inkunga|Sponsorizzato|Imedhaminiwa|Hirdetés|Misy Mpiantoka|Gesponsord|Sponset|Patrocinado|Patrocinado|Sponsorizat|Sponzorované|Sponsoroitu|Sponsrat|Được tài trợ|Χορηγούμενη|Спонсорирано|Спонзорирано|Ивээн тэтгэсэн|Реклама|Спонзорисано|במימון|سپانسرڈ|دارای پشتیبانی مالی|ስፖንሰር የተደረገ|प्रायोजित|ተደረገ|प|प्रायोजित|স্পনসর্ড|ਪ੍ਰਯੋਜਿਤ|પ્રાયોજિત|ପ୍ରାୟୋଜିତ|செய்யப்பட்ட செய்யப்பட்ட|చేయబడినది చేయబడినది|ಪ್ರಾಯೋಜಿಸಲಾಗಿದೆ|ചെയ്‌തത് ചെയ്‌തത്|ලද ලද ලද|สนับสนุน สนับสนุน รับ สนับสนุน สนับสนุน|ကြော်ငြာ ကြော်ငြာ|ឧបត្ថម្ភ ឧបត្ថម្ភ ឧបត្ថម្ភ|광고|贊助|赞助内容|広告|സ്‌പോൺസർ ചെയ്‌തത്)/)):not(:has([data-tracking-duration-id])) + .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:is(.bg-s2, .bg-s3, .bg-s4) + .m:not(:has(.m:empty)) + .m:not(:has(.m:empty)):has(+ .m .m[data-mcomponent$="TextArea"]:empty) +! complementary rules when has-text stopped working +m.facebook.com,www.facebook.com##:matches-path(/^\/(\?locale=[a-z]+_[A-Z]+)?$/) #screen-root > :not(.bg-s2) .m[data-type="vscroller"] > :is(.bg-s2, .bg-s3, .bg-s4):has(+ .m + :is(.bg-s2, .bg-s3, .bg-s4) > .m > .m .nb[style*="inset(0"] > .m[style*="margin-top:1px;"][style*="margin-left:1px;"]:is([style*="height:32px;"], [style*="height:35px;"]) div[data-mcomponent$="TextArea"]:not(:empty)) +m.facebook.com,www.facebook.com##:matches-path(/^\/(\?locale=[a-z]+_[A-Z]+)?$/) #screen-root > :not(.bg-s2) .m[data-type="vscroller"] > :is(.bg-s2, .bg-s3, .bg-s4):has(+ :is(.bg-s2, .bg-s3, .bg-s4) > .m > .m .nb[style*="inset(0"] > .m[style*="margin-top:1px;"][style*="margin-left:1px;"]:is([style*="height:32px;"], [style*="height:35px;"]):not(:empty)) +m.facebook.com,www.facebook.com##:matches-path(/^\/(\?locale=[a-z]+_[A-Z]+)?$/) #screen-root > :not(.bg-s2) .m[data-type="vscroller"] > :is(.bg-s2, .bg-s3, .bg-s4):has(> .m > .m .nb[style*="inset(0"] > .m[style*="margin-top:1px;"][style*="margin-left:1px;"]:is([style*="height:32px;"], [style*="height:35px;"])) +m.facebook.com,www.facebook.com##:matches-path(/^\/(\?locale=[a-z]+_[A-Z]+)?$/) #screen-root > :not(.bg-s2) .m[data-type="vscroller"] > :is(.bg-s2, .bg-s3, .bg-s4):has(> .m > .m .nb[style*="inset(0"] > .m[style*="margin-top:1px;"][style*="margin-left:1px;"]:is([style*="height:32px;"], [style*="height:35px;"])) + .m:not(:has(.m:empty)) +m.facebook.com,www.facebook.com##:matches-path(/^\/(\?locale=[a-z]+_[A-Z]+)?$/) #screen-root > :not(.bg-s2) .m[data-type="vscroller"] > :is(.bg-s2, .bg-s3, .bg-s4):has(> .m > .m .nb[style*="inset(0"] > .m[style*="margin-top:1px;"][style*="margin-left:1px;"]:is([style*="height:32px;"], [style*="height:35px;"])) + .m:not(:has(.m:empty)) + .m:has(div[data-mcomponent$="TextArea"]:not(:empty)):has(+ .m .m[data-mcomponent$="TextArea"]:empty) +lookmovie2.to##div[class^="native-ad-"] +m.timesofindia.com##[href*="app.goo.gl"] +xda-developers.com##.ad-current +forum.xda-developers.com###xdadevelopers_leaderboard_atf +xe.com##.advertSlot +investing.com##[class^="ad_ad-sticky_"] +zdnet.com##.c-adDisplay_container +zdnet.com##.c-adSkyBox +nytimes.com###acm-wrapper +||nytimes.com/games-assets/v2/*.js$script,replace=/shouldRenderAd:\(\)=>[a-z]&&/shouldRenderAd:()=>false&&/,domain=www.nytimes.com +||nytimes.com/games-assets/v2/spelling-bee.*.js$script,domain=www.nytimes.com,replace=/\.includes\("cr"\)/.includes("")/ +! www.nytimes.com##+js(trusted-replace-argument, String.prototype.includes, this, json:"subscribed", condition, /^anon$/) +www.nytimes.com##+js(trusted-replace-argument, matchMedia.call, 1, json:"none", condition, max-width) +www.nytimes.com##+js(trusted-json-edit-fetch-response, ..show_ads=false, propsToMatch, /statsig/initialize?) +www.nytimes.com##+js(set, Object.prototype.hasAd, false) +*##.ads_all > .ads_w +liquipedia.net##.mobile-sticky-ad +liquipedia.net##body.mobile-sticky-ad-is-active:style(padding: 3.125rem 0 0 0 !important;) +liquipedia.net##body.mobile-sticky-ad-is-active .main-nav:style(top: 0 !important;) +liquipedia.net##body.mobile-sticky-ad-is-active .main-nav .brand-menu:style(top: 3.125rem !important;) +m.dcinside.com,upload.dcinside.com##+js(set-cookie, _ga, OK, , reload, 1) +@@||securepubads.g.doubleclick.net/tag/js/gpt.js$script,domain=thedailybeast.com +thedailybeast.com##^html > head > meta[name="template"]:not([content="cheat"]):upward(1) > script[src*="doubleclick"] +! interstitial if views >= interstitial.counter +pornhub.com##+js(set-cookie, views, 1) +pornhub.*##.watchpageAd +! Ignore generic cosmetic filters mitigation +apnews.com##.SovrnAd +zaim.net##.ad-footer +avclub.com,clickhole.com,deadspin.com,gizmodo.com,jalopnik.com,jezebel.com,kotaku.com,lifehacker.com,qz.com,splinternews.com,theinventory.com,theonion.com,theroot.com,thetakeout.com###splashy-ad-container-top +huffpost.com,huffingtonpost.jp##.advertisement-holder +4wank.com###pause-ads +javpop.link##[href^="https://rapidgator.net/article/premium/ref/"] +senzuri.tube##.video-page__adv +tr.ign.com##.articleBody:style(margin-top: 80px !important;) +m.apkpure.com##.ad-adsense.js-ad-slot +fxstreet.com##.fxs_stickyAd-mobile +apkpure.com##.ad-box-auto +*##.ez-video-wrap +correiobraziliense.com.br##.publi +poder360.com.br##.box-advertising +4hu.tv##.wrap > #btmBox +wunderground.com##.ad-wrap +mmtv01.xyz,spankbang.mov###pop.div_pop +pages.lazada.co.id##.lzd-call-app-download-popup +speedtest.net###modal-overlay +speedtest.net##div[data-view-name="mobile"] div.mobile-pretest +okezone.com###app:style(margin-top: 0px !important;) +mercurynews.com###mobile-adhesion +yahoo.com##.native-ad-item +! timeanddate.com ad leftover +timeanddate.com###ad-wrap +twivideo.net##^script:has-text(/videoInstArea|randomImageUrl/) +wetter.com##[class*="adSlot"] +wetter.com##.layout:has(.advert-notice) +wetter.com##[style="display: block !important; bottom: 0px; top: unset !important;"] +wh40k.lexicanum.com##.collapsible-block:not(.vm-placement):style(display: block !important) +wh40k.lexicanum.com##.vm-placement +watch.impress.co.jp##+js(trusted-rpnt, script, /^ipc\.loader\.queue\.jquery(\.push\(function\(\)\{\s*ipc\.loader\.script\(.+\/ipc\.watch\.js.+)/, ipc.loader.queue.ready$1) +timesofindia.indiatimes.com##+js(set, Object.prototype.isAdActive, false) +redd.tube##+js(set, Object.prototype.vastOptions, {}) +redd.tube###closeable_widget +mdpr.jp##+js(trusted-set-attr, #gn-rwd-target-hidden, class, rewareded) +! Fixes gap caused by removed ad +outlook.live.com##main > div[style] .vPfg_:has(.wOYnU) ~ *:style(transform: translateY(-80px) !important) +!#if env_safari +||googlevideo.com/videoplayback*ctier=L&*%2Cxpc%2Cctier%2C$xhr,3p,domain=m.youtube.com|music.youtube.com +!#endif +dailymotion.com##+js(json-prune-fetch-response, advertising, , propsToMatch, /player/metadata) +dailymotion.com##+js(json-prune-xhr-response, advertising, , propsToMatch, .json) +!#if !env_chromium +geo.dailymotion.com##+js(xml-prune, [breakId], , _VMAP_) +geo.dailymotion.com##+js(set, DMP_ENABLE_ADS, false) +!#else +www.dailymotion.com>>,~google.com##+js(xml-prune, [breakId], , _VMAP_) +!#endif +hurriyet.com.tr##.mobileMasthead +yts.mx##.home-content > div[class]:not([id]):has(> div > a[rel="noindex, nofollow"]) +! ads placeholder nsfw superporn.com +superporn.com##.intensive-add +@@||grab.onelink.me/*^af_dp=grab%3A%2F%2Fopen%3F$doc,urlskip +@@||grab.onelink.me/*^af_dp=grab%3A%2F%2Fopen%3F$doc +tureng.com##.termresults-ad-tr +##html[lang="tr"] > body.has-footer-ad.has-pageskin-desktop a.pageskin-mobile-wrapper +daotekno.com##+js(nostif, bait) +nlab.itmedia.co.jp##[id^="div-gpt-ad-nl_"][id$="_article_HeaderOverlay"] ~ header:matches-media((max-width: 767px)):style(margin-top: 0 !important;) +britannica.com###game:style(height: 100% !important;) +theverge.com##.duet--homepage--hero > div[class] > div[class] > div[class]:has(> div[data-concert="medrec_frontpage_hero_mobile"]) +temp-mail.io##main.mb-general > div[style="width:100%;height:50px;"] +planefinder.net##+js(set, Object.prototype.showInterstitialModalIfRequired, noopFunc) +!#endif +! *** uAssets:filters/filters-general.txt *** +! Lockdown +!#if !ext_ubol +*$script,xhr,3p,denyallow=ahcdn.com|ampproject.org|arc.io|b-cdn.net|blogger.com|bootstrapcdn.com|bunnycdn.ru|bytecdntp.com|cackle.me|chatango.com|cloudflare.com|cloudflare.net|cloudflarestorage.com|consentframework.com|disqus.com|disquscdn.com|dmca.com|doodcdn.io|ebacdn.com|embedstreams.top|facebook.com|facebook.net|fastcomments.com|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|fontawesome.com|github.io|google.com|googleapis.com|graphcomment.com|gstatic.com|h-cdn.com|hcaptcha.com|hwcdn.net|ilfcdn.li|instagram.com|intensedebate.com|jquery.com|jsdelivr.net|jwpcdn.com|jwplatform.com|jwpsrv.com|linkvertise.com|media-amazon.com|media-imdb.com|pinterest.com|plyr.io|rabbitstream.net|recaptcha.net|rsc.cdn77.org|sharecast.ws|sharethis.com|shrink.pe|statically.io|staticfile.org|tawk.to|twimg.com|twitter.com|ulogin.ru|unpkg.com|userapi.com|vidazoo.com|vidembed.re|vixcloud.co|vk.com|vuukle.com|wp.com|x.com|yastatic.net|youaresoselfish.online|youtube.com|ytimg.com|zdassets.com|zencdn.net,domain=everia.club|files.im|filmpornofrancais.fr|gamesmountain.com|mangaplus.shueisha.tv|moredesi.com|nkiri.com|onlyfullporn.video|shueisharaw.tv|vjav.* +!#else +*$script,xhr,3p,denyallow=ahcdn.com|ampproject.org|arc.io|b-cdn.net|blogger.com|bootstrapcdn.com|bunnycdn.ru|bytecdntp.com|cackle.me|chatango.com|cloudflare.com|cloudflare.net|cloudflarestorage.com|consentframework.com|disqus.com|disquscdn.com|dmca.com|doodcdn.io|ebacdn.com|embedstreams.top|facebook.com|facebook.net|fastcomments.com|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|fontawesome.com|github.io|google.com|googleapis.com|graphcomment.com|gstatic.com|h-cdn.com|hcaptcha.com|hwcdn.net|ilfcdn.li|instagram.com|intensedebate.com|jquery.com|jsdelivr.net|jwpcdn.com|jwplatform.com|jwpsrv.com|linkvertise.com|media-amazon.com|media-imdb.com|pinterest.com|plyr.io|rabbitstream.net|recaptcha.net|rsc.cdn77.org|sharecast.ws|sharethis.com|shrink.pe|statically.io|staticfile.org|tawk.to|twimg.com|twitter.com|ulogin.ru|unpkg.com|userapi.com|vidazoo.com|vidembed.re|vixcloud.co|vk.com|vuukle.com|wp.com|x.com|yastatic.net|youaresoselfish.online|youtube.com|ytimg.com|zdassets.com|zencdn.net,domain=everia.club|files.im|filmpornofrancais.fr|gamesmountain.com|mangaplus.shueisha.tv|moredesi.com|nkiri.com|onlyfullporn.video|shueisharaw.tv|vjav.com|vjav.tube +!#endif +! Adsterra +/^https?:\/\/(?:www\.|[0-9a-z]{7,10}\.)?[-0-9a-z]{5,}\.(?:com|org)\/\/?(?:[0-9a-z]{2}\/){2,3}[0-9a-f]{32}\.js/$script,xhr,3p,redirect=noop.js +! for uBOL matching example https://calligraphyanatomy.com/ec/68/86/ec6886c687e554b958517f9ab483776f.js +!#if ext_ubol +/^https?:\/\/(?:www\.|pl\d+\.)?[-0-9a-z]{5,}\.(com|org)\/(?:[0-9a-f]{2}\/){3}[0-9a-f]+\.js/$script,xhr,3p,redirect=noop.js,match-case,from=~edu|~gov +!#endif +/^https:\/\/[-a-z]{8,}\.com\/[f-j][-0-9A-Z_a-z]{2,}\/[0-9A-Za-z][-\/0-9A-Z_a-z]{115,132}$/$script,xhr,3p,match-case,to=com,method=get,header=X-Request-ID:/^[0-9a-f]{32}$/ +!#if cap_ipaddress +/^https:\/\/[-a-z]{8,}\.com\/[f-j][-0-9A-Z_a-z]{2,}\/[0-9A-Za-z][-\/0-9A-Z_a-z]{115,132}$/$script,xhr,3p,match-case,to=com,method=get,ipaddress=/^1[7-9]2\.24[03]\.\d{2,3}\.\d{2,3}$/ +!#endif +!#if env_safari +/^https?:\/\/[-0-9a-z][-0-9a-z][-0-9a-z][-0-9a-z][-0-9a-z]+\.[co][or][gm]\/\/?[0-9a-z][0-9a-z]\/[0-9a-z][0-9a-z]\/([0-9a-z][0-9a-z]\/)?[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]\.js/$script,xhr,3p,match-case +/^https:\/\/[-a-z][-a-z][-a-z][-a-z][-a-z][-a-z][-a-z][-a-z]+\.com\/[f-j][-0-9A-Z_a-z][-0-9A-Z_a-z]+\/[0-9A-Za-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z]+$/$script,xhr,3p,match-case,to=com,method=get +!#endif +!#if ext_ubol +/^https:\/\/[-a-z]{8,}\.com\/[f-j][-0-9A-Z_a-z]{2,}\/[0-9A-Za-z][-\/0-9A-Z_a-z]{7,}$/$script,3p,match-case,method=get,header=x-request-id,to=com +!#endif +hdhub4u.fail,hubdrive.*,moviesubtitles.click,telegratuita.com##+js(aeld, DOMContentLoaded, script[data-domain=) +141jav.com,moviesjoy-to.*##+js(acs, document.createElement, script[data-domain=) +141jav.com##+js(nowoif) +filmifen.com##+js(aeld, load, document.body.appendChild(s)) +play.xpass.top##+js(acs, document.createElement, document.head||) +! invoke.js +!#if env_safari +/\/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]\/invoke\.js/$script,3p +!#endif +/\/[0-9a-z]{2}\/[0-9a-f]{32}\.js/$script,xhr,3p,match-case,method=get,to=com,from=ad|ag|app|bet|biz|blogspot.com|blue|boo|by|bz|casa|cash|cc|ceo|cfd|cx|click|cloud|club|com.se|cyou|dad|day|dev|download|forum|fun|gdn|ge|hair|homes|host|how|icu|in|info|is|lat|link|live|lol|ltd|md|me|media|mobi|moe|monster|one|onl|online|page|pe|pk|pro|pw|re|red|rest|sbs|sh|site|skin|space|stream|su|team|tel|to|today|top|tube|tv|wedding|world|ws|xyz|~edu.ag|~edu.by|~edu.bz|~edu.ge|~edu.in|~edu.md|~edu.me|~edu.pe|~edu.pk|~edu.so|~edu.ws|~gov.ag|~gov.by|~gov.bz|~gov.ge|~gov.in|~gov.md|~gov.me|~gov.pk|~gov.sh|~gov.so|~gov.to|~gov.tv|~gov.ws|~palaugov.pw|~proton.me|~twitch.tv +! Don't use wildcard, unsupported in MV3 +/\/[0-9a-z]{2}\/[0-9a-f]{32}\.js/$script,xhr,3p,match-case,method=get,to=com,from=123av.com|141jav.com|186.2.175.5|1piecemanga.com|4chanarchives.com|69shux.co|85po.com|aguea.net|animepelix.net|animerco.org|anizle.org|apkadmin.com|arakpop.net|asiaflix.net|bigwarp.art|blogspot.com|bookfrom.net|cartoony.net|cdn9mc.com|clicknupload.cfd|comohoy.com|d-pdf.com|datavaults.co|desiupload.co|downsub.com|europixhd-official.com|filmnudes.com|filmpornoitaliano.org|flacdownloader.com|fmovies24-to.com|fsportshd.net|fztvseries.ng|hdpornflix.com|hentai2read.com|hianime.nz|hubdrive.space|indi-share.com|ironhentai.com|isekaitube.com|japaneseholes.com|javboys.com|javbraze.com|javhdporn.net|jgvdata.com|jpopsingles.eu|kisshentaiz.com|koreaboo.net|koshalworld.com|latinluchas.com|loadedfiles.org|loiflix.shop|madouqu.com|manhwa68.com|media.cm|megadiscografiascompletas.com|movielysium.net|monoschino2.com|moviemaniak.com|movies7.us|myxxgirl.com|nekopoi.care|neymartv.net|niraw.com|njav.com|novizer.com|nsfwgify.com|notunmovie.net|official.coomer.com.co|omegascans.org|onejav.com|onepiece-manga-online.net|pagalfree.com|pagalnew.com|pagalworld.us|pelimeli.com|pelis182.net|photocalltv.org|pixvid.org|player.subespanolvip.com|plugincrack.com|pokopow.com|poophd.pm|popcornmovies.org|pornhoarder.net|pornincest.net|raw.senmanga.com|relampagomovies.com|seriesgod.com|sexiezpix.com|skidrowcodex.net|splay.id|spotidownloader.com|streampoi.com|surrit.store|sxyprn.com|tapepops.com|thecakeboutiquect.com|thefantazy.com|thepiratebay.org|tokyomotion.net|torbobit.net|torrentgalaxy-official.com|torrentjogos.com.br|towheree.com|uniquestream.net|vidboys.com|vidsonic.net|viduyy.com|xfantazy.com|xmegadrive.com +! vidguard +/\/[0-9a-f]{32}\.js/$script,xhr,3p,to=com,from=bembed.net|embedv.net|listeamed.net|moflix-stream.day|moflix-stream.fans|v6embed.xyz|vid-guard.com +/\.\d{1,2}\.[0-9a-f]{32}\.js$/$script,3p,to=js.txxx.tube,from=txxx.com +!#if env_safari +/\.[0-9][0-9]?\.[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]\.js$/$script,3p,from=txxx.com +!#endif +.js|$script,3p,to=click|space|workers.dev,from=chartgo.com|chessgames.com|safood.tw +/vkvt4d.js|$script,3p,to=click|space|workers.dev +||willow-assets.space^ +||ad-blocker-*.workers.dev^ +||stat-res.workers.dev^ +/\/t\/[0-9]{3}\/[0-9]{3}\/a[0-9]{4,9}\.js$/$script +/\.cloudfront\.net\/\?[a-z]{3,5}=\d{6,7}$/$script,xhr,match-case +!#if env_safari +/\.cloudfront\.net\/\?[a-z][a-z][a-z][a-z]?[a-z]?=[0-9][0-9][0-9][0-9][0-9][0-9][0-9]?$/$script,xhr,match-case +!#endif +/^https:\/\/[0-9a-f]{10}\.[0-9a-f]{10}\.com\/[0-9a-f]{32}\.js$/$script,3p,match-case,to=com +!#if ext_ubol +/^https:\/\/[0-9a-f]{10}\.[0-9a-f]{10}\.com\/.*\.js$/$script,3p,match-case,to=com +!#endif +!#if env_safari +/^https:\/\/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]\.[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]\.com\/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]\.js$/$script,3p +!#endif +/^https:\/\/[0-9a-f]{10}\.[0-9a-f]{10}\.com\/[0-9a-f]{32}\/\d{6}\b/$xhr,3p,match-case,to=com +! globalThis a +/sw.js?puid=$script,1p +/utx?tid=$xhr,3p +/^https?:\/\/[a-z]{8,15}\.club\/[%0-9a-zA-Z]{170,}$/$script,3p +/^https?:\/\/[a-z]{8,15}\.fun\/[%0-9a-zA-Z]{170,}$/$script,3p +/^https?:\/\/[a-z]{8,15}\.hair\/[%0-9a-zA-Z]{170,}$/$script,3p +/^https?:\/\/[a-z]{8,15}\.info\/[%0-9a-zA-Z]{170,}$/$script,3p +/^https?:\/\/[a-z]{8,15}\.work\/[%0-9a-zA-Z]{170,}$/$script,3p +/^https?:\/\/[a-z]{8,15}\.xyz\/[%0-9a-zA-Z]{170,}$/$script,3p +/^https?:\/\/[a-z]{8,15}\.com?\/(?=[0-9a-zA-Z]*%)(?=[%a-zA-Z]*\d)(?=[%0-9a-z]*[A-Z])[%0-9a-zA-Z]{170,}$/$script,3p,match-case,from=~edu|~gov,to=co|com +! globalThis b +/^https?:\/\/[0-9a-f]{50,}\.s3\.amazonaws\.com\/[0-9a-f]{10}$/$xhr,3p +/^https?:\/\/s3\.us-east-1\.amazonaws\.com\/[0-9a-f]{50,}\/[0-9a-f]{10}$/$xhr,3p,match-case +!#if ext_ubol +/^https?:\/\/s3\.us-east-1\.amazonaws\.com\/[0-9a-f]+\/[0-9a-f]{10}$/$xhr,3p,match-case,domain=animeflv.net|glodls.to|moviesmod.com.pl|playfa.com +!#endif +!#if env_safari +/^https?:\/\/s3\.us-east-1\.amazonaws\.com\/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]+\/[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]$/$xhr,3p,match-case +!#endif +! propeller new variants +/^https?:\/\/[a-z]{8,15}\.top(\/(?:\d{1,5}|0NaN|articles?|browse|index|movie|news|pages?|static|view|web|wiki)){1,4}(?:\.html|\/)$/$frame,3p,match-case +/^https?:\/\/[a-z]{8,15}\.top\/(?!api|available|team)[a-z]{4,}\.json$/$xhr,3p,match-case +/^https?:\/\/[a-z]{8,15}\.top\/[-a-z]{4,}\.css\?aHR0c[\/0-9a-zA-Z]{33,}=?=?$/$css,3p,match-case +/^https?:\/\/[a-z]{8,15}\.top\/[a-z]{4,}\.png\?aHR0c[\/0-9a-zA-Z]{33,}=?=?$/$image,3p,match-case +/^https?:\/\/[a-z]{8,15}\.xyz(\/(?:\d{1,5}|0NaN|articles?|browse|index|movie|news|pages?|static|view|web|wiki)){1,4}(?:\.html|\/)$/$frame,3p,match-case +/^https?:\/\/[a-z]{8,15}\.xyz\/(?!api|available|team)[a-z]{4,}\.json$/$xhr,3p,match-case +/^https?:\/\/[a-z]{8,15}\.xyz\/[-a-z]{4,}\.css\?aHR0c[\/0-9a-zA-Z]{33,}=?=?$/$css,3p,match-case +/^https?:\/\/[a-z]{8,15}\.xyz\/[a-z]{4,}\.png\?aHR0c[\/0-9a-zA-Z]{33,}=?=?$/$image,3p,match-case +.top/event|$xhr,3p +.xyz/event|$xhr,3p +! hilltopads +/^https?:\/\/[-a-z]{6,}\.(?:com?|info|pro|xyz)\/[a-d][-.\/A-Z_a-z][DHWXm][-.\/A-Z_a-z][59FVZ][-.\/A-Z_a-z][6swyz][-.\/A-Z_a-z][-\/0-9A-Z_a-z][-.\/A-Z_a-z][-\/0-9A-Z_a-z]{22,162}(?:$|\?)/$script,xhr,3p,match-case,to=co|com|info|pro|xyz +! doc/popup +/^https?:\/\/[-a-z]{6,}\.com\/b[\/A-Z_a-z]3[.A-Za-z]V[.\/A-Z_a-z]0[.\/A-Z_a-z]P[.A-Za-z]3[-\/0-9A-Z_a-z]{59}$/$doc,popup,match-case,to=com +!#if ext_ubol +/^https?:\/\/[-a-z]{6,}\.(?:com?|info|pro|xyz)\/[a-d][-.\/A-Z_a-z][DHWXm][-.\/A-Z_a-z][59FVZ][-.\/A-Z_a-z][6swyz][-.\/A-Z_a-z][-\/0-9A-Z_a-z][-.\/A-Z_a-z][-\/0-9A-Z_a-z]+(?:$|\?)/$script,xhr,3p,match-case,to=co|com|info|pro|xyz +! doc +/^https?:\/\/[-a-z]{6,}\.com\/b[\/A-Z_a-z]3[.A-Za-z]V[.\/A-Z_a-z]0[.\/A-Z_a-z]P[.A-Za-z]3[-\/0-9A-Z_a-z]{7,}$/$doc,match-case,to=com +!#endif +!#if env_safari +/^https?:\/\/[a-z-][a-z-][a-z-][a-z-][a-z-][a-z-]+\.[cipx][nory][fmoz]?o?\/[a-d][-.\/A-Z_a-z][DHWXm][-.\/A-Z_a-z][59FVZ][-.\/A-Z_a-z][6swyz][-.\/A-Z_a-z][-\/0-9A-Z_a-z][-.\/A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z]+$/$script,xmlhttprequest,third-party,match-case,to=co|com|info|pro|xyz +! doc +/^https?:\/\/[-a-z][-a-z][-a-z][-a-z][-a-z][-a-z]+\.com\/b[\/A-Z_a-z]3[.A-Za-z]V[.\/A-Z_a-z]0[.\/A-Z_a-z]P[.A-Za-z]3[-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z][-\/0-9A-Z_a-z]$/$doc,popup,match-case,to=com +!#endif +/\/[a-d][-.\/A-Z_a-z][DHWXm][-.\/A-Z_a-z][59FVZ][-.\/A-Z_a-z][6swyz][-.\/A-Z_a-z][-\/0-9A-Z_a-z][-.\/A-Z_a-z][-\/0-9A-Z_a-z]+/$script,3p,match-case,to=co|com|info|pro|xyz,from=primewire.si +?tb=https%3A%2F%2F%HOST%%2Fapi%2Fback%2Fxetergewx3&sId=vast$script,xhr,3p,to=co|com|info|pro|xyz +! Ads servers +||accusationretrieval.com^ +||breedsmuteexams.com^ +||ciderconcluded.com^ +||comradegoodsfloor.com^ +||confidecross.com^ +||degreeeruptionpredator.com^ +||informedcleave.com^ +||officialplenty.com^ +||poplarcoinsyeah.com^ +||pricklyassociation.com^ +||sophiaaccoladewest.com^ +||stemsbargain.com^ +||studyingiodineproposal.com^ +||trolleyincreasingly.com^ +||typicallyuncovernull.com^ +||undoubtedlydoerdivided.com^ +||fake-square.com^$all +||peetube.cc/*.php|$script +||hypersonicmedia.workers.dev/proxy/ +/adspop.js +! Galaksion +/^https?:\/\/(?:[a-z]{2}\.)?[0-9a-z]{5,16}\.[a-z]{3,7}\/[a-z](?=[a-z]{0,25}[0-9A-Z])[0-9a-zA-Z]{3,26}\/\d{3,6}(?:[?&][_a-z0-9]+=[-0-9a-zA-Z]+)*$/$script,xhr,3p,match-case,redirect=noop.js +/^https?:\/\/(?:[a-z]{2}\.)?[0-9a-z]{7,16}\.com\/[a-z](?=[a-z]{0,25}[0-9A-Z])[0-9a-zA-Z]{3,26}\/\d{3,6}(?:[?&][_a-z0-9]+=[-0-9a-zA-Z]+)*$/$frame,xhr,popup,3p,match-case,to=com +/^https?:\/\/(?:[a-z]{2}\.)?[0-9a-z]{7,16}\.website\/[a-z](?=[a-z]{0,25}[0-9A-Z])[0-9a-zA-Z]{3,26}\/\d{3,6}(?:[?&][_a-z0-9]+=[-0-9a-zA-Z]+)*$/$frame,xhr,popup,3p,match-case,to=website +/\.goplay\.su\/[a-z][0-9A-Za-z]{10,}\/\d{3,6}$/$xhr,match-case,to=goplay.su +!#if ext_ubol +/^https?:\/\/(?:[a-z]{2}\.)?[a-z]{7,14}\.[a-z]{3,7}\/[a-z][0-9A-Za-z]{10,}\/\d{3,6}(?:\?|$)/$script,3p,match-case,header=Access-Control-Allow-Headers,from=~edu|~gov,to=~edu|~gov +!#endif +!#if env_safari +/^https?:\/\/[a-z]?[a-z]?\.?[a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.[a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?\/[fgprst][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]+\/[0-9][0-9][0-9][0-9]?[0-9]?[0-9]?$/$script,3p,match-case +/^https?:\/\/[a-z]?[a-z]?\.?[a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.[a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?\/[fgprst][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]+\/[0-9][0-9][0-9][0-9]?[0-9]?[0-9]?\?/$script,3p,match-case +/\.goplay\.su\/[a-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]+\/[0-9][0-9][0-9][0-9]?[0-9]?[0-9]?$/$xhr,match-case,to=goplay.su +!#endif +/^https?:\/\/(?:[a-z]{2}\.)?[a-z]{7,14}\.com\/[a-z](?=[a-z]*[0-9A-Z])[0-9A-Za-z]{10,16}\/[A-Za-z]{4,5}(?:\?|$)/$script,xhr,3p,match-case,to=com +/^https?:\/\/(?:[a-z]{2}\.)?[a-z]{7,14}\.shop\/[a-z](?=[a-z]*[0-9A-Z])[0-9A-Za-z]{10,16}\/[A-Za-z]{4,5}(?:[&?]param_\d=\d+)*$/$frame,3p,match-case +/^https:\/\/(?:[0-9a-z]+\.){1,2}cfd\/[a-z](?=[a-z]*[0-9A-Z])[0-9A-Za-z]{10,27}\/(?:\d{6}|[A-Za-z]{5})$/$script,xhr,3p,match-case +/^https:\/\/(?:[0-9a-z]+\.){1,2}rest\/[a-z](?=[a-z]*[0-9A-Z])[0-9A-Za-z]{10,27}\/(?:\d{6}|[A-Za-z]{5})$/$script,xhr,3p,match-case +!#if ext_ubol +/^https:\/\/[a-z]{2}\.[a-z]{7,14}\.com\/[rt][0-9A-Za-z]{10,16}\/[A-Za-z]{4,5}(?:\?|$)/$script,xhr,3p,match-case +/^https:\/\/[a-z]{2}\.[a-z]{7,14}\.com\/[rt][0-9A-Za-z]{10,16}\/\d{3,6}(?:\?|$)/$script,xhr,3p,match-case +/^https:\/\/[a-z]{2}\.[a-z]{7,14}\.shop\/i[0-9A-Za-z]{10,16}\/[A-Za-z]{4,5}\b/$frame,3p,match-case +/^https:\/\/[0-9a-z]*\.?[0-9a-z]+\.cfd\/[a-z][0-9A-Za-z]{10,22}\/(\d{6}|[A-Za-z]{5})$/$script,3p,to=cfd +/^https:\/\/[0-9a-z]*\.?[0-9a-z]+\.rest\/[a-z][0-9A-Za-z]{10,22}\/(\d{6}|[A-Za-z]{5})$/$script,3p,to=rest +!#endif +!#if env_safari +/^https?:\/\/[a-z]?[a-z]?\.?[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.com\/[rt][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?\/[A-Za-z][A-Za-z][A-Za-z][A-Za-z][A-Za-z]?$/$script,xhr,3p,match-case +/^https?:\/\/[a-z]?[a-z]?\.?[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.com\/[rt][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?\/[A-Za-z][A-Za-z][A-Za-z][A-Za-z][A-Za-z]?\?/$script,xhr,3p,match-case +/^https?:\/\/[a-z]?[a-z]?\.?[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.com\/[rt][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?\/[0-9][0-9][0-9][0-9]?[0-9]?[0-9]?$/$script,xhr,3p,match-case +/^https?:\/\/[a-z]?[a-z]?\.?[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.com\/[rt][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?\/[0-9][0-9][0-9][0-9]?[0-9]?[0-9]?\?/$script,xhr,3p,match-case +/^https?:\/\/[a-z]?[a-z]?\.?[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.shop\/i[0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?\/[A-Za-z][A-Za-z][A-Za-z][A-Za-z][A-Za-z]?/$frame,3p,match-case +/^https:\/\/[0-9a-z]*\.?[0-9a-z]+\.[cr][ef][ds]t?\/[a-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]+\/[A-Za-z][A-Za-z][A-Za-z][A-Za-z][A-Za-z]$/$script,xhr,3p,match-case,to=cfd|rest +/^https:\/\/[0-9a-z]*\.?[0-9a-z]+\.[cr][ef][ds]t?\/[a-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]+\/[0-9][0-9][0-9][0-9][0-9][0-9]$/$script,xhr,3p,match-case,to=cfd|rest +!#endif +! generic adserver rules +/gb/zone?zid=$xhr,3p +.club/js/popunder.js$3p +.life/js/popunder.js$3p +.com/ipp.js?id=$3p +.top/ps/ps.js?id=$3p +! Arbitrary adservers / URLs +/player/jw8/vast.js?$domain=~autoembed.cc +/banner.go?spaceid= +||cineby.*/scripts/os.js +||ssl.p.jwpcdn.com/player/v/*/vast.js$script +||ssl.p.jwpcdn.com/player/v/*/freewheel.js$script +! AdSpyglass 0i0i0i0.com CNAME adserver +/^https?:\/\/a\.[-0-9a-z]{4,21}\.[a-z]{2,5}\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,match-case +/^https?:\/\/ar\.[-0-9a-z]{4,21}\.[a-z]{2,5}\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,match-case +/^https?:\/\/asg\.[-0-9a-z]{4,21}\.[a-z]{2,5}\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,match-case +/^https?:\/\/emsi\.[-0-9a-z]{4,21}\.[a-z]{2,5}\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,match-case +/^https?:\/\/pre\.[0-9a-z]{6,12}\.[a-z]{3,4}\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,match-case +/^https?:\/\/oi\.[0-9a-z]{6,12}\.[a-z]{3,4}\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,match-case +/^https?:\/\/dl\.[0-9a-z]{6,12}\.[a-z]{3,4}\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,match-case +/^https?:\/\/[0-9a-z]{4,8}\.fun\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,3p,match-case +/^https?:\/\/[0-9a-z]{4,8}\.lol\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,3p,match-case +/^https?:\/\/[0-9a-z]{4,8}\.name\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,3p,match-case +/^https?:\/\/[0-9a-z]{4,8}\.pro\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,3p,match-case +/^https?:\/\/(?:q\.)?[0-9a-z]{4,8}\.xyz\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,3p,match-case +/^https?:\/\/(?=[a-z]{0,10}\d)[0-9a-z]{11}\.[-0-9a-z]{6,}\.com\/(?=[a-z]*[0-9A-Z])[0-9a-zA-Z]{5,8}\.js$/$script,1p,strict3p,match-case,to=com +/asg_embed.js +/vast-im.js$script +://a.*/click/$image +://a.*/splash/$xhr +://a.*/spots/$xhr +/api/users/*&ev=$script +://a.*/js/ep.js^ +://a.*/js/stream.js^ +/api/users/*^fill=$xhr +://cdn.*.com/vast2.js|$3p +/\.[a-z]{2,6}\/[0-9a-zA-Z]{5,8}\.js$/$script,3p,match-case,domain=analdin.com|bestjavporn.com|ero-anime.website|hdpornflix.com|javdock.com|javtiful.com|onscreens.me|supjav.com|thefantazy.com|up4fun.top|xfantazy.com +/\.com\/[0-9a-zA-Z]{5,8}\.js$/$script,1p,strict3p,match-case,domain=love4porn.com|suptube.com|upload-pics.com +!#if ext_ubol +/^https?:\/\/a\.[-0-9a-z]{4,}\.[a-z]{2,5}\/[0-9a-zA-Z]{5,8}\.js$/$script,match-case,to=~gov|~edu +/^https?:\/\/asg\.[-0-9a-z]{4,}\.[a-z]{2,5}\/[0-9a-zA-Z]{5,8}\.js$/$script,match-case,to=~gov|~edu +/^https?:\/\/emsi\.[-0-9a-z]{4,}\.[a-z]{2,5}\/[0-9a-zA-Z]{5,8}\.js$/$script,match-case,to=~gov|~edu +!#endif +!#if env_safari +/^https?:\/\/a\.[-0-9a-z][-0-9a-z][-0-9a-z][-0-9a-z][-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?\.[a-z][a-z][a-z]?[a-z]?[a-z]?\/[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z]?[0-9a-zA-Z]?[0-9a-zA-Z]?\.js$/$script,match-case +/^https?:\/\/asg\.[-0-9a-z][-0-9a-z][-0-9a-z][-0-9a-z][-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?\.[a-z][a-z][a-z]?[a-z]?[a-z]?\/[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z]?[0-9a-zA-Z]?[0-9a-zA-Z]?\.js$/$script,match-case +/^https?:\/\/emsi\.[-0-9a-z][-0-9a-z][-0-9a-z][-0-9a-z][-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?[-0-9a-z]?\.[a-z][a-z][a-z]?[a-z]?[a-z]?\/[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z]?[0-9a-zA-Z]?[0-9a-zA-Z]?\.js$/$script,match-case +/\.[a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?\/[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z]?[0-9a-zA-Z]?[0-9a-zA-Z]?\.js$/$script,3p,match-case,domain=analdin.com|bestjavporn.com|ero-anime.website|hdpornflix.com|javdock.com|javtiful.com|onscreens.me|supjav.com|thefantazy.com|up4fun.top|xfantazy.com +/\.com\/[0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z][0-9a-zA-Z]?[0-9a-zA-Z]?[0-9a-zA-Z]?\.js$/$script,1p,match-case,domain=love4porn.com|suptube.com|upload-pics.com +!#endif +||api.xfantazy.com/*/ad-scripts +||yamcha.xyz^ +||aprilads.online^ +/^https:\/\/[0-9a-z]{3,15}\.biz\/\?[a-z]e=[0-9a-z]{22,26}$/$script,3p,match-case,to=biz +! PopCash popcashjs.b-cdn.net CNAME adserver +/^https?:\/\/cdn\.[a-z]{3,8}\.[a-z]{2,6}\/app\.js$/$script,3p,match-case,domain=~edu|~gov +!#if env_safari +/^https?:\/\/cdn\.[a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.[a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?\/app\.js$/$script,3p,match-case,domain=~edu|~gov +!#endif +://p.*/go/$popup,3p +||srxy.xyz^ +! NameSilo ab1n.net CNAME adserver +/fp-interstitial.js +/splash.php?idzone= +://a.*/pn.php +://a.*/iframe.php?idzone= +||htagpa.tech^ +/^https:\/\/[a-z0-9]{4,10}\.tech\/c\/(?:[-a-z0-9]+\.){1,3}js$/$script,3p,strict3p,to=tech +! Advertica +/^https:\/\/[-0-9a-z]{4,7}.[a-z]{3,5}\/js\/responsive\.js$/$script,3p,match-case,header=x-server +!#if env_safari +/^https:\/\/[0-9a-z-][0-9a-z-][0-9a-z-][0-9a-z-][0-9a-z-]?[0-9a-z-]?[0-9a-z-]?\.[cins][cehlo][imotu][cp]?k?\/js\/responsive\.js$/$script,third-party,match-case,to=com|click|icu|net|shop +!#endif +! !SECTION: Popular revolving adservers +! SECTION: AdDefend +!#if env_chromium +lablue.*##+js(nostif, push, 500) +||doubleclick.net^$script,important,domain=auto-motor-und-sport.de +!#endif +4-liga.com,4fansites.de,4players.de,9monate.de##+js(nostif, .call(null), 10) +aachener-nachrichten.de,aachener-zeitung.de,abendblatt.de,abendzeitung-muenchen.de,about-drinks.com,abseits-ka.de,airliners.de,ajaxshowtime.com,allgemeine-zeitung.de,alpin.de,antenne.de,arcor.de,areadvd.de,areamobile.de,ariva.de,astronews.com,aussenwirtschaftslupe.de,auszeit.bio,auto-motor-und-sport.de,auto-service.de,autobild.de,autoextrem.de,autopixx.de,autorevue.at,autotrader.nl,az-online.de##+js(nostif, .call(null), 10) +baby-vornamen.de,babyclub.de,bafoeg-aktuell.de,berliner-kurier.de,berliner-zeitung.de,bigfm.de,bikerszene.de,bildderfrau.de,blackd.de,blick.de,boerse-online.de,boerse.de,boersennews.de,braunschweiger-zeitung.de,brieffreunde.de,brigitte.de,buerstaedter-zeitung.de,buffed.de,businessinsider.de,buzzfeed.at,buzzfeed.de##+js(nostif, .call(null), 10) +caravaning.de,cavallo.de,cinema.de,clever-tanken.de,computerbild.de,computerhilfen.de,comunio-cl.com,comunio.*,connect.de,chip.de##+js(nostif, .call(null), 10) +da-imnetz.de,dasgelbeblatt.de,dbna.com,dbna.de,deichstube.de,deine-tierwelt.de,der-betze-brennt.de,derwesten.de,desired.de,dhd24.com,dieblaue24.com,digitalfernsehen.de,dnn.de,donnerwetter.de##+js(nostif, .call(null), 10) +e-hausaufgaben.de,e-mountainbike.com,eatsmarter.de,echo-online.de,ecomento.de,einfachschoen.me,elektrobike-online.com,eltern.de,epochtimes.de,essen-und-trinken.de,express.de,extratipp.com##+js(nostif, .call(null), 10) +familie.de,fanfiktion.de,fehmarn24.de,fettspielen.de,fid-gesundheitswissen.de,finanzen.*,finanznachrichten.de,finanztreff.de,finya.de,firmenwissen.de,fitforfun.de,fnp.de,football365.fr,formel1.de,fr.de,frankfurter-wochenblatt.de,freenet.de,fremdwort.de,froheweihnachten.info,frustfrei-lernen.de,fuldaerzeitung.de,funandnews.de,fussballdaten.de,futurezone.de##+js(nostif, .call(null), 10) +gala.de,gamepro.de,gamersglobal.de,gamesaktuell.de,gamestar.de,gameswelt.*,gamezone.de,gartendialog.de,gartenlexikon.de,gebrauchtwagen.at,gedichte.ws,geissblog.koeln,gelnhaeuser-tageblatt.de,general-anzeiger-bonn.de,geniale-tricks.com,genialetricks.de,gesund-vital.de,gesundheit.de,gevestor.de,gewinnspiele.tv,giessener-allgemeine.de,giessener-anzeiger.de,gifhorner-rundschau.de,giga.de,gipfelbuch.ch,gmuender-tagespost.de,golem.de,gruenderlexikon.de,gusto.at,gut-erklaert.de,gutfuerdich.co##+js(nostif, .call(null), 10) +hallo-muenchen.de,hamburg.de,hanauer.de,hardwareluxx.de,hartziv.org,harzkurier.de,haus-garten-test.de,hausgarten.net,haustec.de,haz.de,heftig.*,heidelberg24.de,heilpraxisnet.de,heise.de,helmstedter-nachrichten.de,hersfelder-zeitung.de,hftg.co,hifi-forum.de,hna.de,hochheimer-zeitung.de,hoerzu.de,hofheimer-zeitung.de##+js(nostif, .call(null), 10) +iban-rechner.de,ikz-online.de,immobilienscout24.de,ingame.de,inside-digital.de,inside-handy.de,investor-verlag.de##+js(nostif, .call(null), 10) +jappy.com,jpgames.de##+js(nostif, .call(null), 10) +kabeleins.de,kachelmannwetter.com,kamelle.de,kicker.de,kindergeld.org,klettern-magazin.de,klettern.de,kochbar.de,kreis-anzeiger.de,kreisbote.de,kreiszeitung.de,ksta.de,kurierverlag.de##+js(nostif, .call(null), 10) +lachainemeteo.com,lampertheimer-zeitung.de,landwirt.com,laut.de,lauterbacher-anzeiger.de,leckerschmecker.me,leinetal24.de,lesfoodies.com,levif.be,lifeline.de,liga3-online.de,likemag.com,linux-community.de,linux-magazin.de,live.vodafone.de,ln-online.de,lokalo24.de,lustaufsleben.at,lustich.de,lvz.de,lz.de##+js(nostif, .call(null), 10) +mactechnews.de,macwelt.de,macworld.co.uk,mail.de,main-spitze.de,manager-magazin.de,manga-tube.me,mathebibel.de,mathepower.com,maz-online.de,medisite.fr,mehr-tanken.de,mein-kummerkasten.de,mein-mmo.de,mein-wahres-ich.de,meine-anzeigenzeitung.de,meinestadt.de,menshealth.de,mercato365.com,merkur.de,messen.de,metal-hammer.de,metalflirt.de,meteologix.com,minecraft-serverlist.net,mittelbayerische.de,modhoster.de,moin.de,mopo.de,morgenpost.de,motor-talk.de,motorbasar.de,motorradonline.de,motorsport-total.com,motortests.de,mountainbike-magazin.de,moviejones.de,moviepilot.de,mt.de,mtb-news.de,musiker-board.de,musikexpress.de,musikradar.de,mz-web.de##+js(nostif, .call(null), 10) +n-tv.de,naumburger-tageblatt.de,netzwelt.de,neuepresse.de,neueroeffnung.info,news.at,news.de,news38.de,newsbreak24.de,nickles.de,nicknight.de,nl.hardware.info,nn.de,nnn.de,nordbayern.de,notebookchat.com,notebookcheck-ru.com,notebookcheck-tr.com,notebookcheck.*,noz-cdn.de,noz.de,nrz.de,nw.de,nwzonline.de##+js(nostif, .call(null), 10) +oberhessische-zeitung.de,och.to,oeffentlicher-dienst.info,onlinekosten.de,onvista.de,op-marburg.de,op-online.de,outdoor-magazin.com,outdoorchannel.de##+js(nostif, .call(null), 10) +paradisi.de,pc-magazin.de,pcgames.de,pcgameshardware.de,pcwelt.de,pcworld.es,peiner-nachrichten.de,pferde.de,pietsmiet.de,pixelio.de,pkw-forum.de,playboy.de,playfront.de,pnn.de,pons.com,prad.de,prignitzer.de,profil.at,promipool.de,promobil.de,prosiebenmaxx.de,psychic.de##+js(nostif, .call(null), 10) +quoka.de##+js(nostif, .call(null), 10) +radio.at,radio.de,radio.dk,radio.es,radio.fr,radio.it,radio.net,radio.pl,radio.pt,radio.se,ran.de,readmore.de,rechtslupe.de,recording.de,rennrad-news.de,reuters.com,reviersport.de,rhein-main-presse.de,rheinische-anzeigenblaetter.de,rimondo.com,roadbike.de,roemische-zahlen.net,rollingstone.de,rot-blau.com,rp-online.de,rtl.de,rtv.de,rugby365.fr,ruhr24.de,rundschau-online.de,runnersworld.de##+js(nostif, .call(null), 10) +safelist.eu,salzgitter-zeitung.de,sat1.de,sat1gold.de,schoener-wohnen.de,schwaebische-post.de,schwarzwaelder-bote.de,serienjunkies.de,shz.de,sixx.de,skodacommunity.de,smart-wohnen.net,sn.at,sozialversicherung-kompetent.de,spiegel.de,spielen.de,spieletipps.de,spielfilm.de,sport.de,sport1.de,sport365.fr,sportal.de,spox.com,stern.de,stuttgarter-nachrichten.de,stuttgarter-zeitung.de,sueddeutsche.de,svz.de,szene1.at,szene38.de##+js(nostif, .call(null), 10) +t-online.de,tagesspiegel.de,taschenhirn.de,techadvisor.co.uk,techstage.de,tele5.de,teltarif.de,testedich.*,the-voice-of-germany.de,thueringen24.de,tichyseinblick.de,tierfreund.co,tiervermittlung.de,torgranate.de,transfermarkt.*,trend.at,truckscout24.*,tv-media.at,tvdigital.de,tvinfo.de,tvspielfilm.de,tvtoday.de,tvtv.*,tz.de##+js(nostif, .call(null), 10) +unicum.de,unnuetzes.com,unsere-helden.com,unterhalt.net,usinger-anzeiger.de,usp-forum.de##+js(nostif, .call(null), 10) +videogameszone.de,vienna.at,vip.de,virtualnights.com,vox.de##+js(nostif, .call(null), 10) +wa.de,wallstreet-online.de,waz.de,weather.us,webfail.com,weihnachten.me,weihnachts-bilder.org,weihnachts-filme.com,welt.de,weltfussball.at,weristdeinfreund.de,werkzeug-news.de,werra-rundschau.de,wetterauer-zeitung.de,wetteronline.*,wieistmeineip.*,wiesbadener-kurier.de,wiesbadener-tagblatt.de,winboard.org,windows-7-forum.net,winfuture.de,wintotal.de,wlz-online.de,wn.de,wohngeld.org,wolfenbuetteler-zeitung.de,wolfsburger-nachrichten.de,woman.at,womenshealth.de,wormser-zeitung.de,woxikon.de,wp.de,wr.de,wunderweib.de##+js(nostif, .call(null), 10) +yachtrevue.at##+js(nostif, .call(null), 10) +ze.tt,zeit.de##+js(nostif, .call(null), 10) +meineorte.com,osthessen-news.de,techadvisor.com,focus.de##+js(nostif, .call(null)) +lecker.de##+js(nostif, .call(null), 10) +kicker.de##+js(set, ov.advertising.tisoomi.loadScript, noopFunc) +!#if cap_html_filtering +alpin.de,boersennews.de,chefkoch.de,chip.de,clever-tanken.de,desired.de,donnerwetter.de,fanfiktion.de,focus.de,formel1.de,frustfrei-lernen.de,gewinnspiele.tv,giga.de,gut-erklaert.de,kino.de,messen.de,nickles.de,nordbayern.de,spielfilm.de,teltarif.de,unsere-helden.com,weltfussball.at,watson.de,moviepilot.de,mactechnews.de,sport1.de,welt.de,sport.de##^script:has-text(DisplayAcceptableAdIfAdblocked) +teltarif.de##^script:has-text(adslotFilledByCriteo) +!#else +alpin.de,boersennews.de,chefkoch.de,chip.de,clever-tanken.de,desired.de,donnerwetter.de,fanfiktion.de,focus.de,formel1.de,frustfrei-lernen.de,gewinnspiele.tv,giga.de,gut-erklaert.de,kino.de,messen.de,nickles.de,nordbayern.de,spielfilm.de,teltarif.de,unsere-helden.com,weltfussball.at,watson.de,moviepilot.de,mactechnews.de,sport1.de,welt.de,sport.de##+js(rmnt, script, DisplayAcceptableAdIfAdblocked) +teltarif.de##+js(rmnt, script, adslotFilledByCriteo) +!#endif +||giga.de/special/gutscheine/*.png$script,1p +||kino.de/mages/*.png$script,1p +||teltarif.de/img/$script,1p +.de/bilder/*.jpg|$script,1p,domain=de +.at/bilder/*.jpg|$script,1p,domain=at +.com/bilder/*.jpg|$script,1p,domain=com +.de/image/*.gif|$script,1p,domain=de +teltarif.de,kino.de,desired.de,giga.de##img[referrerpolicy="unsafe-url"][src^="/img/"][src$=".jpg"] +wetter.*##+js(nostif, (null), 10) +tagesspiegel.de##+js(aopr, Notification) +newsbreak24.de##^script:has-text(===):has-text(/[\w\W]{14000}/) +t-online.de##+js(set, abp, false) +businessinsider.de##.slideshow__mobile-ad +businessinsider.de##.slideshow__middle-ad-container +businessinsider.de##.slideshow__desktop-ad:style(max-height:20px) +businessinsider.de##.bi-superbanner +businessinsider.de##.slideshow__ad +businessinsider.de##.bi-injected-ad +businessinsider.de##.adup-wrap +desired.de##.sad_banner +frustfrei-lernen.de##.noContentBannerArea +macworld.co.uk##.leaderBoardHolder +wallstreet-online.de##+js(nostif, userHasAdblocker) +bonedo.de##.banner +mtb-news.de##.mtbnews-forum__banner +newsbreak24.de##.aw-track-click +newsbreak24.de###adup1 +transfermarkt.*##.noscript +n-tv.de##+js(aopr, embedAddefend) +! To counter unnecessary exception filters +||adnxs.com^$important,domain=bz-berlin.de|metal-hammer.de|musikexpress.de|rollingstone.de|stylebook.de +||googlesyndication.com^$script,important,domain=autobild.de|metal-hammer.de|musikexpress.de|rollingstone.de +||sascdn.com^$script,important,domain=autobild.de|metal-hammer.de|musikexpress.de|rollingstone.de +||smartadserver.com^$script,important,domain=metal-hammer.de|musikexpress.de|rollingstone.de|welt.de +@@||11freunde.de/sites/all/themes/elf/gujAd/gujAd.js$domain=11freunde.de,badfilter +@@||g.doubleclick.net/gpt/pubads_impl_$script,domain=11freunde.de|auto-motor-und-sport.de|brigitte.de|gala.de|geo.de|hardwareluxx.de|hbf-info.de|kochbar.de|n-tv.de|notebooksbilliger.de|rakuten.at|rakuten.de|rtl.de|stern.de|welt.de|zalando.de,badfilter +abendzeitung-muenchen.de##.wtc-wg-plugilo-connector +boerse-online.de##.center_top_bar +wetter.de##.outbrain-ad-slot +||iframe.chefkoch.de/amp/online-food-trade/rewe/$frame +mathebibel.de###banner-bottom +/\.de\/[a-z]{10,18}\.js$/$script,1p,strict1p,match-case,domain=capital.de|essen-und-trinken.de|geo.de|eltern.de +@@*$ghide,domain=allgemeine-zeitung.de|buffed.de|buerstaedter-zeitung.de|echo-online.de|gamezone.de|lampertheimer-zeitung.de|lauterbacher-anzeiger.de|main-spitze.de|oberhessische-zeitung.de|wiesbadener-kurier.de|wormser-zeitung.de +echo-online.de##.mainFooter__ccePosition +echo-online.de##.recommendations__cceWidget +echo-online.de##.storyElementWrapper__container:has(> [data-testid="storyElementWrapper-cceWidget-element"]) +echo-online.de##.swiper-slide [data-testid="topStories-cardSlider-ad"]:upward(.swiper-slide) +echo-online.de##.teaserGrid > div:has(.nativeAd) +echo-online.de##div.frontpageOverview__child +allgemeine-zeitung.de,buerstaedter-zeitung.de,echo-online.de,lampertheimer-zeitung.de,lauterbacher-anzeiger.de,main-spitze.de,oberhessische-zeitung.de,wiesbadener-kurier.de,wormser-zeitung.de##.adSlot, .loadingBanner +berliner-zeitung.de##[class^="ad-slot"] +berliner-zeitung.de##[class^="outbrain"] +finanzen.net##.page-content__ad +finanzen.net##.edge:has(> .ad-hint) +finanzen.net##span.ad-hint +finanzen.net##.page-content__item--space:has(> [data-widget-id]:empty:first-child + script:last-child) +finanzen.net##.background-color-info:has(.ad-hint) +! breakage +@@||scdn.cxense.com/cx.cce.js$script,domain=allgemeine-zeitung.de|buerstaedter-zeitung.de|echo-online.de|lampertheimer-zeitung.de|lauterbacher-anzeiger.de|main-spitze.de|oberhessische-zeitung.de|wiesbadener-kurier.de|wormser-zeitung.de +@@||api.cxense.com/public/widget/data$xhr,domain=allgemeine-zeitung.de|buerstaedter-zeitung.de|echo-online.de|lampertheimer-zeitung.de|lauterbacher-anzeiger.de|main-spitze.de|oberhessische-zeitung.de|wiesbadener-kurier.de|wormser-zeitung.de +chefkoch.de##+js(nostif, (null), 10) +! !SECTION: AdDefend +! SECTION: Yavli ads +*.jpg$script,domain=clashdaily.com|madworldnews.com|reviveusa.com|sonsoflibertymedia.com|teltarif.de|themattwalshblog.com|videogamesblogger.com +*$script,3p,denyallow=aghtag.tech|agorahtag.tech|brid.tv|cloudflare.com|cloudflare.net|consensu.org|enetscores.com|etop.ro|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fontawesome.com|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|mrf.io|onnetwork.tv|pahtzh.tech|quantcast.com|recaptcha.net|wall-street.ro|ziareromania.ro,domain=ziare.com|cancan.ro|ciao.ro|gandul.ro|prosport.ro|descopera.ro|csid.ro|raziculacrimi.ro|go4games.ro|wall-street.ro|9am.ro +*$script,3p,denyallow=anycast.me|cloudflare.com|cloudflare.net|consensu.org|consentframework.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|mrf.io|priice.net|sirdata.fr|twitter.com|recaptcha.net|x.com,domain=lebigdata.fr|montjeuturf.net +*$script,3p,denyallow=cloudflare.com|cloudflare.net|consensu.org|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|jwpcdn.com|recaptcha.net|sharethis.com|tradingview.com|twitter.com|x.com,domain=beforeitsnews.com +*$script,domain=amgreatness.com,3p,denyallow=spreaker.com|starfield.ai +/^https?:\/\/.*\/easylist\/[0-9]{5}/ +*banner$domain=beforeitsnews.com,image +||jeengweb.com^$3p +dcdirtylaundry.com,ipatriot.com,newser.com##+js(aost, Math, onerror) +telexplorer.com.ar##+js(aost, Math.random, /injectedScript.*inlineScript/) +designbump.com,thedesigninspiration.com##+js(aost, Math.random, /(?=.*onerror)(?=^(?!.*(https)))/) +!#if cap_html_filtering +100percentfedup.com,beforeitsnews.com,concomber.com,conservativefiringline.com,dailylol.com,funnyand.com,letocard.fr,mamieastuce.com,meilleurpronostic.fr,patriotnationpress.com,toptenz.net,vitamiiin.com,writerscafe.org,populist.press,dailytruthreport.com,livinggospeldaily.com,first-names-meanings.com,welovetrump.com,thehayride.com,thelibertydaily.com,thepoke.co.uk,thepolitistick.com,theblacksphere.net,shark-tank.com,naturalblaze.com,greatamericanrepublic.com,dailysurge.com,truthlion.com,flagandcross.com,westword.com,republicbrief.com,freedomfirstnetwork.com,phoenixnewtimes.com,designbump.com,clashdaily.com,madworldnews.com,reviveusa.com,sonsoflibertymedia.com,thedesigninspiration.com,videogamesblogger.com,protrumpnews.com,thepalmierireport.com,kresy.pl,thepatriotjournal.com,thegatewaypundit.com,wltreport.com,miaminewtimes.com,politicalsignal.com,rightwingnews.com,bigleaguepolitics.com,comicallyincorrect.com##^script:has-text(/==undefined.*body/) +thegatewaypundit.com##^script:has-text(/==undefined|get\.apply/) +!#else +100percentfedup.com,beforeitsnews.com,concomber.com,conservativefiringline.com,dailylol.com,funnyand.com,letocard.fr,mamieastuce.com,meilleurpronostic.fr,patriotnationpress.com,toptenz.net,vitamiiin.com,writerscafe.org,populist.press,dailytruthreport.com,livinggospeldaily.com,first-names-meanings.com,welovetrump.com,thehayride.com,thelibertydaily.com,thepoke.co.uk,thepolitistick.com,theblacksphere.net,shark-tank.com,naturalblaze.com,greatamericanrepublic.com,dailysurge.com,truthlion.com,flagandcross.com,westword.com,republicbrief.com,freedomfirstnetwork.com,phoenixnewtimes.com,designbump.com,clashdaily.com,madworldnews.com,reviveusa.com,sonsoflibertymedia.com,thedesigninspiration.com,videogamesblogger.com,protrumpnews.com,thepalmierireport.com,kresy.pl,thepatriotjournal.com,thegatewaypundit.com,wltreport.com,miaminewtimes.com,politicalsignal.com,rightwingnews.com,bigleaguepolitics.com,comicallyincorrect.com##+js(rmnt, script, /==undefined.*body/) +thegatewaypundit.com##+js(rmnt, script, /==undefined|get\.apply/) +!#endif +appteka.store##+js(aost, Math.random, /injectedScript|blob/) +bigleaguepolitics.com##.custom-html-widget +bigleaguepolitics.com##.code-block:has([target="_blank"]) +||rddywd.com^$image,redirect=1x1.gif +@@||rddywd.com/advertising.js$script +@@||wltreport.com^$image,1p +! !SECTION: Yavli ads +! SECTION: TXXX network +! Common rules for TXXX network +/\/[a-z]{4,}\/(?!holly7|siksik7)[0-9a-z]{3,}\d\.\d{1,2}\.\d{1,2}\.[0-9a-f]{32}\.js$/$script,domain=555.porn|abjav.com|abxxx.com|aniporn.com|bigdick.tube|gaytxxx.com|hclips.com|hdzog.com|hdzog.tube|hotmovs.com|hotmovs.tube|imzog.com|in-porn.com|inporn.com|javdaddy.com|manysex.com|manysex.tube|porn555.com|pornclassic.tube|pornforrelax.com|porngo.tube|pornj.com|pornl.com|pornq.com|porntop.com|privatehomeclips.com|puporn.com|see.xxx|shemalez.com|shemalez.tube|sss.xxx|thegay.com|thegay.tube|transtxxx.com|tubepornclassic.com|tuberel.com|txxx.com|txxx.tube|txxxporn.tube|upornia.com|upornia.tube|vjav.com|vjav.tube|voyeurhit.com|voyeurhit.tube|vxxx.com|xjav.tube +/\.[a-z]{3,5}\/[0-9a-z]{8,12}\/[0-9a-z]{8,12}\.js$/$script,domain=555.porn|abxxx.com|abjav.com|aniporn.com|asiantv.fun|blackporn.tube|bdsmx.tube|bigdick.tube|gaytxxx.com|hclips.com|hdzog.com|hdzog.tube|hotmovs.com|hotmovs.tube|imzog.com|in-porn.com|inporn.com|javdaddy.com|manysex.com|manysex.tube|mrgay.tube|onlyporn.tube|porn555.com|pornclassic.tube|pornforrelax.com|porngo.tube|pornhits.com|pornj.com|pornl.com|pornq.com|porntop.com|pornzog.com|privatehomeclips.com|puporn.com|see.xxx|senzuri.tube|sextu.com|shemalez.com|shemalez.tube|sss.xxx|teenorgy.video|thegay.com|thegay.tube|transtxxx.com|tubepornclassic.com|tuberel.com|txxx.com|txxx.tube|txxxporn.tube|upornia.com|upornia.tube|vjav.com|vjav.tube|voyeurhit.com|voyeurhit.tube|vxxx.com|xjav.tube|xmilf.com +/afon7.$script,1p +/barbar7.$script,1p +/huyass7.$script,1p +/lemon7.$script,1p +/rass7.$script,1p +/teo7.$script,1p +/nofa7.$script,1p +/ytrek7.$script,1p +/kzdh7.$script,1p +/klesd7.$script,1p +/leo7.$script,1p +/howone7.$script,1p +/duayn7.$script,1p +/exort7.$script,1p +/azazaz7.$script,1p +/vlado7.$script,1p +/assets/jwplayer-*/vast.js$script,1p +txxx.*##+js(acs, setTimeout, hommy.mutation.mutation) +txxx.*##+js(aopr, jwplayer.utils.Timer) +txxx.*##.content.page.page-video .video-content > div[class] > div > div[class] > div[class][style^="background-image:"]:style(background-image: none !important;) +txxx.*##div[style="display:flex !important"] > div +txxx.*##.page-video > div.video-videos-slider ~ div[class]:matches-css(justify-content: center) +txxx.*##.video-videos-slider +txxx.*##.video-content > div + div:last-child +txxx.*##.video-content > div:first-child > div[class]:has(> div > a[href="#"]) +txxx.*##.videos-tube-friends +txxx.*##span:only-child:has-text(/^AD$/):upward(2) +txxx.*##.suggestion +txxx.*##.index-page > .wrapper > .row + div[class] +txxx.*##.pwa-ad +txxx.*##.jw-atitle.nopop:has(> [href*="g2fame.com"][href*="&campaign"]) +*$frame,3p,denyallow=google.com|gstatic.com,domain=txxx.* +*$popunder,3p,domain=txxx.* +voyeurhit.*##+js(acs, adver) +voyeurhit.*##.content > div > .container + div +voyeurhit.*##.video-page__content > div.left + div[class]:last-child +voyeurhit.*##.video-page__underplayer > div[class]:first-child > div[class] +voyeurhit.*##.video-related + div[class] > div[class]:only-child +voyeurhit.*##div[style="display:flex !important"] > div +voyeurhit.*##.video-tube-friends + div[class] +upornia.*##+js(acs, adver) +upornia.com##+js(rmnt, script, /popunder|isAdBlock|admvn.src/i) +upornia.com##h5:has-text(Advertisement) +upornia.com##section:not(:empty) +upornia.com##.underplayer:style(min-height: initial !important;) +upornia.com##.video-page__content > .right +upornia.*##.intwo__img +upornia.*##.video-videos-slider +upornia.*##span[style="display:flex !important"] > div:first-child +upornia.*##+js(set, hommy, {}) +upornia.*##+js(set, hommy.waitUntil, noopFunc) +upornia.*##.jw-title-secondary +pornzog.com###ntv_a +pornzog.com##.video-ntv-list +||pornzog.com/assets/inpage/banner.js +hotmovs.*##+js(acs, adver) +hotmovs.com##.partners-wrap +hotmovs.*##.block_label--last + div[class] +hotmovs.*##.pagination + div.block_label--last +hotmovs.*##.underplayer__info > div[class]:first-child +hotmovs.*##.video-page__content > div.left + div[class]:last-child +hotmovs.*##div[style="display:flex !important"] > div +hotmovs.*##.video-page > div.block_label.mt-15 + div[class] +hotmovs.*##.videos-tube-friends +vjav.*##.hv-block +vjav.*##div[style="display:flex !important"] > div +vjav.*##.album-page > div.video-page__wrapper + div[class] +vjav.*##.content > div:not([class]) > div.video-page + div[class] +vjav.*##.video-page__content > div.left + div[class]:last-child +vjav.*##.video-page__player + div[class] > div[class] +vjav.*##.video-tube-friends +vjav.*##.video-tube-friends + div[class]:not(.pagination) +vjav.*##.index-page > div.container + div[class] +vjav.*##.jw-reset.jw-atitle.nopop +vjav.*##.partners-wrap + div[class] +vjav.*##div[class] > div[class] > section[style="padding: 10px;"] +! pornq .com popups +||bitupsss.com^$all +! pornj .com popups +pornj.com##+js(aopr, open) +pornj.com##.vda-item +! porn555 .com popups +porn555.com##.vda-x2 +! see .xxx +||see.xxx/nr.js +porntop.com###inv_pause +porntop.com##.ip > .btn-close +thegay.*##+js(acs, adver) +thegay.*##.content > div:not([class]) > .wrapper ~ div[class]:not(.wrapper) +thegay.*##.underplayer__info > div[class]:first-child +thegay.*##.video-page__content > div.left + div[class]:last-child +thegay.*##div[style="display:flex !important"] > div +||thegay.com^$csp=default-src 'self' *.ahcdn.com fonts.gstatic.com fonts.googleapis.com https://thegay.com https://tn.thegay.com 'unsafe-inline' 'unsafe-eval' data: blob:,badfilter +! privatehomeclips.com +privatehomeclips.com##span[style="display:flex !important"] > div:first-child +privatehomeclips.com##.partners-wrap +privatehomeclips.com##.video-page__content > .right +privatehomeclips.com##.video-page__item +privatehomeclips.com##.content > div > .wrapper + div[class]:not(.wrapper) +privatehomeclips.com##.underplayer > div[class]:not([class*="_"]) > div[class] +privatehomeclips.com##.partners-wrap + div[class] +privatehomeclips.com##.undp--karp +privatehomeclips.com##section[style="padding: 20px;"] +privatehomeclips.com##.left + div:not([class]):last-child +! vxxx.com +vxxx.com##+js(acs, ACtMan) +vxxx.com###player-1 > div[style="display:flex !important"] +vxxx.com##.video-page-content + div[class] +vxxx.com##.video-page-content-left + div[class]:last-child +vxxx.com##.videoplayer + div > div[class] +vxxx.com##.wrapper-margin + div[class]:last-child +! pornhits.com popup/under +pornhits.com##+js(acs, ACtMan) +pornhits.com###s-suggesters +pornhits.com##.ft +pornhits.com##.index-ntv +pornhits.com##.jwplayer > span +pornhits.com##.sponsor +pornhits.com##.right +||pornhits.com/magic/ +||red12flyw2.site^$3p +! inporn.com ads/PH +in-porn.com,inporn.com##.video-page__content > div.right +in-porn.com,inporn.com##.video-info > section +in-porn.com,inporn.com##.video__wrapper > div.wrapper.headline +in-porn.com,inporn.com##.wrapper > article +in-porn.com,inporn.com##section[is-footer-banners] +in-porn.com,inporn.com###in_v +in-porn.com,inporn.com##.btn-close +in-porn.com,inporn.com##[style="display:flex !important"] > div > div:not(:last-child) +in-porn.com,inporn.com##.jw-channel-btn.nopop +in-porn.com,inporn.com##.wrapper[style="min-width: 0px;"] > section[style="padding: 12px;"] +! senzuri.tube redirect, ad +senzuri.tube##+js(acs, adver) +senzuri.tube##.video-page + div[class]:not(.container) +senzuri.tube##.video-page__content > div.left + div[class]:last-child +senzuri.tube##.index-page > div.container + div[class] +senzuri.tube##.content-block + .video-tube-friends + div[class] +senzuri.tube##div[style="display:flex !important"] > div +txxxporn.tube##+js(acs, adver) +txxxporn.tube##div[style="display:flex !important"] > div +txxxporn.tube##.video-content > div:not(:has(.pplayer)) +txxxporn.tube##.video-content > div[class]:first-child > div[class]:has(> div > a[href="#"]) +txxxporn.tube##span:only-child:has-text(/^AD$/):upward(2) +txxxporn.tube##.suggestion +txxxporn.tube##.video-videos-slider +txxxporn.tube##.page-video > div[class]:has(> div[class]:not(.video-related) > div[id][class]:empty) +hclips.com##+js(acs, adver) +hclips.com##.wrapper + .partners-wrap + div[class] +hclips.com##.underplayer > section +hclips.com##.video__wrapper > section[style] +hclips.com##span[style="display:flex !important"] > div:first-child +hclips.com##.video-page__content > div.left + div:not([class]) +*$frame,3p,denyallow=google.com|gstatic.com,domain=hclips.com +hdzog.*##+js(acs, adver) +hdzog.*##.content > div:not([class]) > div.content-block ~ div[class]:not(.content-block) +hdzog.*##.suggestions +hdzog.*##.partners-wrap +hdzog.*##.pagination + div[class]:last-of-type +hdzog.*##.video-page__left > div[class]:last-of-type +hdzog.*##div[style="display:flex !important"] > div +hdzog.*##.video-page__content > div:not([class*="video"]) +hdzog.*##.video-page__row > div:not([class*="video"]) +tuberel.com##+js(acs, adver) +sextu.com##.afs_ads + span[style] > div > div:not(:last-child) +sextu.com##.right +sextu.com##.thumbs__banner +sextu.com##.wrapper > article +sextu.com##.wrapper > section +sextu.com##div[id^="underplayer_"] +manysex.com,manysex.tube##.suggestion-wrapper +manysex.com,manysex.tube##.right +manysex.com,manysex.tube##.video-page__related + .headline +manysex.com,manysex.tube##.videoplayer + section +manysex.com,manysex.tube##section[style="padding: 12px;"] +manysex.com,manysex.tube##span[style="display:flex !important"] > div > div:not(:last-child) +manysex.com,manysex.tube##.jw-reset.jw-atitle.nopop +abxxx.com##.video-page__content > div.left > section +abxxx.com##.video__wrapper > div.wrapper > section +abxxx.com##.video__wrapper > div.wrapper.headline +gaytxxx.com##.index-page > div.wrapper > div.row + div[class] +gaytxxx.com##.jw-reset.jw-atitle.nopop +gaytxxx.com##.suggestion + div[class]:has(> .video-related) + div[class] +gaytxxx.com##.undp +gaytxxx.com##.video-content > div[class]:first-child > div[class]:has(> div[class] > div[class] > div[id]) +gaytxxx.com##.video-content > div[class] + div[class]:last-child +gaytxxx.com##.wrapper + div[style="margin-top: 0px;"] +gaytxxx.com##div[style="display:flex !important"] > div +shemalez.*##+js(rmnt, script, /_plBtn|__native_l|_offerwalls/) +shemalez.*##.video-page__content > .left + div[class] +shemalez.*##.video-tube-friends + div[class] +shemalez.*##.content > div > .wrapper + div[class] +shemalez.*##div[style="display:flex !important"] > div +shemalez.*##.underplayer-review +! xjav.tube +xjav.tube##.left > section +xjav.tube##.right +xjav.tube##.video-tube-friends + article +xjav.tube##.wrapper > section[style="padding: 12px;"] +xjav.tube##.wrapper.headline:has(+ .wrapper > section[style="padding: 12px;"]) +xjav.tube##span[style="display:flex !important"] > div > div:not(:last-child) +xjav.tube##.jw-channel-btn.nopop +! transtxxx.com +transtxxx.com##.index-page > .wrapper > div[class]:has(> div[class] > div[id][class]:empty + div[id][class]:empty) +transtxxx.com##.suggestion +transtxxx.com##.suggestion ~ div[class]:has(> div[class] > div[id][class]:empty + div[id][class]:empty) +transtxxx.com##.video-content div[class]:has(> div[class] > div[id][class] > noscript) +transtxxx.com##div[style="display:flex !important"] > div +transtxxx.com##+js(json-prune, video.channel) +||transtxxx.com/static/tf/videos.*.json +##.nav-item[href^="https://candyai.gg/"] +! tporn.xxx +tporn.xxx##+js(rmnt, script, directBanner) +||tporn.xxx/static/da/ +! !SECTION: TXXX network +! SECTION: PopAds-sites +mexa.sh##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +!#if cap_html_filtering +10xflix.you,123-movies.*,123movieshd.*,123movieshub.*,123moviesme.*,1337x.*,1337x.ninjaproxy1.com,1bit.space,1bitspace.com,1stream.*,1tamilmv.*,2ddl.*,2umovies.*,3dporndude.com,3hiidude.*,4archive.org,4chanarchives.com,4horlover.com,4stream.*,560pmovie.com,5movies.*,7hitmovies.*,7starhd.*,9xmovie.*,9xmovies.koeln##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +aagmaal.*,acefile.co,adblockeronstape.*,adblockeronstreamtape.*,adblockplustape.*,adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,adblocktape.*,adclickersbot.com,adcorto.*,adslink.pw,adultstvlive.com,adz7short.space,aeblender.com,affordwonder.net,ahdafnews.blogspot.com,aiblog.tv,ak47sports.com,akuma.moe,alexsports.*,alexsports.*,alexsportss.*,alexsportz.*,allplayer.tk,amateurblog.tv,androidadult.com,anhsexjav.xyz,anidl.org,anime-loads.org,anime4i.vip,animeblkom.net,animefire.plus,animelek.me,animepahe.*,animesanka.*,animeshqip.org,animesorionvip.net,animespire.net,animestotais.xyz,animeyt.es,animixplay.*,aniplay.*,anroll.net,antiadtape.*,anymoviess.xyz,aotonline.org,asenshu.com,asiaflix.*,asialiveaction.com,asianclipdedhd.net,asianclub.*,ask4movie.*,askim-bg.com,assistirtvonlinebr.net,asumsikedaishop.com,atomixhq.*,atomohd.*,avcrempie.com,avseesee.com,gettapeads.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +bajarjuegospcgratis.com,balkanteka.net,beastvid.tv,beinmatch.*,bellezashot.com,beruang.club,bestgirlsexy.com,bestporncomix.com,bhaai.*,bigwarp.*,bikinbayi.com,bikinitryon.net,birdurls.com,bitsearch.to,blackcockadventure.com,blackcockchurch.org,blackporncrazy.com,blizzboygames.net,blizzpaste.com,blkom.com,blog-peliculas.com,blurayufr.*,bobsvagene.club,bokep.im,bokep.top,bokepnya.com,bollyflix.cards,boyfuck.me,brilian-news.id,brokensilenze.net,brupload.net,buffstreams.*,buzter.xyz##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +caitlin.top,camchickscaps.com,camgirls.casa,canalesportivo.*,cashurl.in,ccurl.net,cdn1.site,cell47.com,charexempire.com,cizgivedizi.com,clickndownload.*,clicknupload.*,clik.pw,coin-free.com,coins100s.fun,comohoy.com,coolcast2.com,cordneutral.net,countylocalnews.com,cpmlink.net,crackstreamshd.click,crespomods.com,crisanimex.com,crunchyscan.fr,cuevana3.fan,cuevana3hd.com,cumception.com,cutpaid.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +daddylive.*,daddylivehd.*,daddylivestream.com,dailyuploads.net,darkmahou.org,datawav.club,daughtertraining.com,ddrmovies.*,deepgoretube.site,deltabit.co,depvailon.com,desiremovies.*,desivdo.com,desixx.net,detikkebumen.com,deutschepornos.me,devlib.*,diasoft.xyz,dipelis.junctionjive.co.uk,directupload.net,divxtotal.*,divxtotal1.*,dixva.com,djmaza.my,dlhd.*,doctormalay.com,dofusports.xyz,doods.cam,doodskin.lat,downloadrips.com,downvod.com,dphunters.mom,dragontranslation.com,dsvplay.com,dvdfullestrenos.com,dvdplay.*,dx-tv.com,dyngutter.net##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +ebookbb.com,ebookhunter.net,egyanime.com,egygost.com,electro-torrent.pl,elixx.*,elrefugiodelpirata.com,embedstream.me,enjoy4k.*,eplayer.click,erovoice.us,eroxxx.us,estrenosdoramas.net,estrenosflix.*,estrenosflux.*,estrenosgo.*,everia.club,everythinginherenet.blogspot.com,expectdynm.net,extratorrent.st,extremotvplay.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +f1stream.*,fapptime.com,favoyeurtube.net,fbstream.*,fc2db.com,femdom-joi.com,fenixsite.net,file4go.*,fileone.tv,film1k.com,filmesonlinex.org,filmisub.cc,filmnudes.com,filmymaza.blogspot.com,filmyzilla.*,findav.*,findporn.*,flameipt3.vercel.app,flickzap.com,flixmaza.*,flizmovies.*,flostreams.xyz,flyfaucet.com,footyhunter.lol,forex-trnd.com,forumchat.club,forumlovers.club,freedownload.flash-files.com,freeomovie.co.in,freeomovie.to,freeporncomic.net,freepornhdonlinegay.com,freeproxy.io,freeshot.live,freetvsports.*,freeuse.me,freeusexporn.com,fsharetv.cc,fsicomics.com,fsileaks.com,fullboys.com,fullymaza.*,fxpornhd.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +g-porno.com,g3g.*,galinhasamurai.com,gamepcfull.com,gamesmountain.com,gamesrepacks.com,gamingguru.fr,gamovideo.com,garota.cf,gaydelicious.com,gayfor.us,gaypornhdfree.com,gaypornhot.com,gaypornmasters.com,gaysex69.net,gemstreams.com,get-to.link,girlscanner.org,giurgiuveanul.ro,gledajcrtace.xyz,gocast2.com,gomo.to,gostosa.cf,gotxx.*,grantorrent.*,gratispaste.com,gravureblog.tv,gupload.xyz##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +haho.moe,hdmoviesfair.*,hdmoviesflix.*,hdpornflix.com,hdsaprevodom.com,hentai-ia.com,hentaihd.*,hentaiporno.xxx,hentais.tube,hentaitk.net,hentaitube.online,hentaiworld.tv,hexupload.net,hhkungfu.tv,highlanderhelp.com,hiidudemoviez.*,hindimovies.to,hindimoviestv.com,hiperdex.com,hiphopa.net,hispasexy.org,hitomi.la,hitprn.com,hivflix.*,hoca4u.com,hollymoviehd.cc,hoodsite.com,hopepaste.download,hornylips.com,hotgranny.live,hotmama.live,hqcelebcorner.net,huren.best,hwnaturkya.com,hxfile.co##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +igfap.com,iklandb.com,illink.net,imgsen.*,imgsto.*,imgtraffic.com,imx.to,incest.*,incestflix.*,influencersgonewild.org,infosgj.free.fr,itdmusics.com,itopmusic.*,itsuseful.site,itunesfre.com,iwatchfriendsonline.net##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +japangaysex.com,javboys.tv,javcl.com,jav-coco.*,jav-noni.*,javhay.net,javhun.com,javleak.com,javmost.*,javporn.best,javsek.net,javsex.to,javtiful.com,javx357.com,jimdofree.com,jiofiles.org,jointexploit.net,jorpetz.com,jp-films.com,jpop80ss3.blogspot.com,jpopsingles.eu,jrants.com,justfullporn.net##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +kaplog.com,kasiporn.com,keeplinks.*,keepvid.*,keralahd.*,khatrimazaful.*,khatrimazafull.*,kimochi.info,kimochi.tv,kinemania.tv,kissasian.*,kolnovel.site,konstantinova.net,koora-online.live,krussdomi.com,kunmanga.com,kwithsub.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +lat69.me,latinblog.tv,latinomegahd.net,leechall.*,leechpremium.link,legendas.dev,legendei.net,lek-manga.net,linclik.com,linkebr.com,linkrex.net,linkshorts.*,lulu.st,lulustream.com,lulustream.live,luluvdo.com,luluvdoo.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +mangovideo.*,masahub.com,masahub.net,masaporn.*,matchora.live,maturegrannyfuck.com,maxegatos.net,mdfx9dc8n.net,mdy48tn97.com,mediapemersatubangsa.com,mega-mkv.com,megapornpics.com,messitv.net,meusanimes.net,mexa.sh,milfmoza.com,milfnut.*,milfzr.com,mimaletamusical.blogspot.com,miniurl.*,mirrorace.*,mitly.us,mixdroop.*,mixdrop.*,mixiporn.fun,mkv-pastes.com,mkvcage.*,mlbstream.*,mlsbd.*,mmsbee.*,monaskuliner.ac.id,moredesi.com,motogpstream.*,movgotv.net,movi.pk,movieplex.*,movierulzlink.*,movies123.*,moviesflix.*,moviesleech.*,moviesmeta.*,moviessources.*,moviesverse.*,movieswbb.com,moviewatch.com.pk,moviezwaphd.*,mp4upload.com,mrskin.live,mrunblock.*,multicanaistv.com,mundowuxia.com,multicanais.*,musiclutter.xyz,myeasymusic.ir,myonvideo.com,myvidplay.com,myyouporn.com,mzansifun.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +naughtypiss.com,nbastream.*,nekopoi.*,netfapx.com,netfuck.net,new-fs.eu,newmovierulz.*,newtorrentgame.com,neymartv.net,nflstream.*,nflstreams.me,nhlstream.*,nicekkk.com,nicesss.com,nlegs.com,noblocktape.*,nocensor.*,nonixxx.cc,notformembersonly.com,novamovie.net,novelpdf.xyz,novelssites.com,novelup.top,nsfwr34.com,nu6i-bg-net.com,nudebabesin3d.com,nzbstars.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +o2tvseries.com,ohjav.com,ojearnovelas.com,okanime.xyz,olweb.tv,olympusbiblioteca.site,on9.stream,onepiece-mangaonline.com,onifile.com,onionstream.live,onlinesaprevodom.net,onlyfams.*,onlyfullporn.video,onplustv.live,originporn.com,ouo.*,ovagames.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +pagalworld.cc,pahe.*,paste4free.site,pastemytxt.com,payskip.org,pctfenix.*,pctnew.*,peeplink.in,peliculas24.*,peliculasmx.net,pelisflix20.*,pelisplus.*,pelisxporno.net,pencarian.link,pendidikandasar.net,pervyvideos.com,picdollar.com,picsxxxporn.com,pinayscandalz.com,pinkueiga.net,piratebay.*,piratefast.xyz,piratehaven.xyz,pirateiro.com,playmogo.com,playtube.co.za,plugintorrent.com,plyjam.*,plylive.*,plyvdo.*,pmvzone.com,porndish.com,pornez.net,pornfetishbdsm.com,pornfits.com,pornhd720p.com,pornhoarder.*,pornobr.club,pornobr.ninja,pornodominicano.net,pornofaps.com,pornoflux.com,pornotorrent.com.br,pornredit.com,pornstarsyfamosas.es,pornstreams.co,porntn.com,pornxbit.com,pornxday.com,portaldasnovinhas.shop,portugues-fcr.blogspot.com,poseyoung.com,pover.org,prbay.*,premiumporn.org,projectfreetv.*,projeihale.com,proxybit.*,proxyninja.org,psarips.*,pubfilmz.com,publicsexamateurs.com,punanihub.com,pxxbay.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +qiqitvx84.shop##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +r18.best,racaty.*,rapelust.com,rapload.org,read-onepiece.net,readhunters.xyz,relampagomovies.com,remaxhd.*,reshare.pm,retro-fucking.com,retrotv.org,rintor.*,rnbxclusive.*,rnbxclusive0.*,rnbxclusive1.*,robaldowns.com,rockdilla.com,rojadirecta.*,rojadirectaenvivo.*,rojitadirecta.blogspot.com,romancetv.site,roporno.info,rsoccerlink.site,rugbystreams.*,rule34hentai.net,rumahbokep-id.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +sadisflix.*,safego.cc,safetxt.*,sakurafile.com,sambalpuristar.in,savefiles.com,scat.gold,scatfap.com,scatkings.com,seir-sanduk.com,seirsanduk.*,sexdicted.com,sexgay18.com,sexiezpix.com,sextubebbw.com,sgpics.net,shadowrangers.*,shahed-4u.day,shahed4u.*,shahhid4u.cam,shahi4u.*,shahid4u.*,shahid4u1.*,shahid4uu.*,shahiid-anime.net,shaid4u.day,shavetape.*,shemale6.com,shemalegape.net,shid4u.*,shinden.pl,short.es,shortearn.*,shorten.*,shorttey.*,shortzzy.*,sideplusleaks.net,silverblog.tv,silverpic.com,sinsitio.site,skidrowcpy.com,skidrowreloaded.com,skymovieshd.*,slut.mom,smallencode.me,smoner.com,smplace.com,socceron.name,socceronline.*,socialblog.tv,softairbay.com,softarchive.*,songsio.com,souexatasmais.com,speedporn.net,sports-stream.*,sporttuna.*,sporttunatv.*,srt.am,sshhaa.*,stapadblockuser.*,stape.*,stapewithadblock.*,starblog.tv,starmusiq.*,stbemuiptv.com,stockingfetishvideo.com,strcloud.*,stream.crichd.vip,stream25.xyz,streamadblocker.*,streamadblockplus.*,streambee.to,streambucket.net,streamcdn.*,streamdesi.com,streamhub.*,streamingclic.com,streamkiste.tv,streamnoads.com,streamoupload.xyz,streamservicehd.click,streamsport.*,streamta.*,streamtape.*,streamtapeadblockuser.*,streamvid.net,strikeout.*,strtape.*,strtapeadblock.*,strtapeadblocker.*,strtapewithadblock.*,strtpe.*,subtitleporn.com,suicidepics.com,superfastrelease.xyz,supexfeeds.com,swatchseries.*,swiftload.io,swipebreed.net,swzz.xyz,sxnaar.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +tabooflix.*,tapeantiads.com,tapeblocker.com,tapenoads.com,tapepops.com,tapewithadblock.org,teamos.xyz,telegramgroups.xyz,tempodeconhecer.blogs.sapo.pt,tennisstreams.*,tfp.is,thaihotmodels.com,theblueclit.com,thebussybandit.com,thedaddy.*,thelastdisaster.vip,themoviesflix.*,thepiratebay.*,thepiratebay.*,thepiratebay0.org,thepiratebay0.org,thepiratebay10.info,thesexcloud.com,thothub.today,tightsexteens.com,tlnovelas.net,tmearn.*,tojav.net,tokusatsuindo.com,tokyocafe.org,toonanime.*,top16.net,topdrama.net,topvideosgay.com,torlock.*,tormalayalam.*,torrage.info,torrents.vip,torrentz2eu.*,torrsexvid.com,tpb-proxy.xyz,trannyteca.com,trendytalker.com,truyenhentaiz.*,tubexplayer.com,tuktukcinma.com,tumanga.net,turbogvideos.com,turboimagehost.com,turbovid.me,turkishseriestv.org,turksub24.net,tutele.sx,tutelehd.*,tv247.us,tvglobe.me,tvpclive.com,tvply.*,tvs-widget.com,tvseries.video##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +u4m.*,ucptt.com,ufcstream.*,ultrahorny.com,ultraten.net,unblocknow.*,underhentai.net,uniqueten.net,uns.bio,upbaam.com,uploadbuzz.*,upstream.to,upzur.com,usagoals.*,ustream.to##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +valeriabelen.com,vegamoviies.*,verdragonball.online,vexmoviex.*,vfxmed.com,vidara.so,vidara.to,vidclouds.*,videostreaming.rocks,videowood.tv,vidlox.*,vidorg.net,vidsonic.net,vidtapes.com,vidz7.com,vikistream.com,vinovo.to,vipboxtv.*,vipleague.*,viprow.*,viral.wf,virpe.cc,visifilmai.org,viveseries.com,vladrustov.sx,volokit2.com,vstorrent.org##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +w4hd.com,watch-series.*,watchbrooklynnine-nine.com,watchelementaryonline.com,watchf1full.com,watchfamilyguyonline.com,watchkobestreams.info,watchlostonline.net,watchmmafull.com,watchmodernfamilyonline.com,watchmonkonline.com,watchrulesofengagementonline.com,watchseries.*,webcamrips.com,wincest.xyz,wolverdon.fun,wordcounter.icu,worldmovies.store,wpdeployit.com,wqstreams.tk,wwwsct.com##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +x18hub.com,xanimeporn.com,xblog.tv,xca.cymru,xcandid.vip,xclusivejams.*,xmoviesforyou.*,xpornium.net,xvip.lat,xxgasm.com,xxvideoss.org,xxx18.uno,xxxdominicana.com,xxxfree.watch,xxxmax.net,xxxwebdlxxx.top,xxxxvideo.uno##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +yabai.si,yeshd.net,youdbox.*,youjax.com,yourdailypornvideos.ws,yourupload.com,youswear.com,ytmp3eu.*,yts-subs.*,yts.*,ytstv.me,yumeost.net##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +zerion.cc,zerocoin.top,zitss.xyz,zooqle.*,zpaste.net##^script[data-cfasync]:has-text(/h=decodeURIComponent|popundersPerIP/) +pillowcase.su##^script[data-cfasync]:has-text(/h=decodeURIComponent|"popundersPerIP"/) +!#else +10xflix.you,123-movies.*,123movieshd.*,123movieshub.*,123moviesme.*,1337x.*,1337x.ninjaproxy1.com,1bit.space,1bitspace.com,1stream.*,1tamilmv.*,2ddl.*,2umovies.*,3dporndude.com,3hiidude.*,4archive.org,4chanarchives.com,4horlover.com,4stream.*,560pmovie.com,5movies.*,7hitmovies.*,7starhd.*,9xmovie.*,9xmovies.koeln##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +aagmaal.*,acefile.co,adblockeronstape.*,adblockeronstreamtape.*,adblockplustape.*,adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,adblocktape.*,adclickersbot.com,adcorto.*,adslink.pw,adultstvlive.com,adz7short.space,aeblender.com,affordwonder.net,ahdafnews.blogspot.com,aiblog.tv,ak47sports.com,akuma.moe,alexsports.*,alexsports.*,alexsportss.*,alexsportz.*,allplayer.tk,amateurblog.tv,androidadult.com,anhsexjav.xyz,anidl.org,anime-loads.org,anime4i.vip,animeblkom.net,animefire.plus,animelek.me,animepahe.*,animesanka.*,animesorionvip.net,animespire.net,animestotais.xyz,animeyt.es,animixplay.*,aniplay.*,anroll.net,antiadtape.*,anymoviess.xyz,aotonline.org,asenshu.com,asiaflix.*,asialiveaction.com,asianclipdedhd.net,asianclub.*,ask4movie.*,askim-bg.com,assistirtvonlinebr.net,asumsikedaishop.com,atomixhq.*,atomohd.*,avcrempie.com,avseesee.com,gettapeads.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +bajarjuegospcgratis.com,balkanteka.net,beastvid.tv,beinmatch.*,bellezashot.com,beruang.club,bestgirlsexy.com,bestporncomix.com,bhaai.*,bigwarp.*,bikinbayi.com,bikinitryon.net,birdurls.com,bitsearch.to,blackcockadventure.com,blackcockchurch.org,blackporncrazy.com,blizzboygames.net,blizzpaste.com,blkom.com,blog-peliculas.com,blurayufr.*,bobsvagene.club,bokep.im,bokep.top,bokepnya.com,bollyflix.cards,boyfuck.me,brilian-news.id,brokensilenze.net,brupload.net,buffstreams.*,buzter.xyz##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +caitlin.top,camchickscaps.com,camgirls.casa,canalesportivo.*,cashurl.in,ccurl.net,cdn1.site,cell47.com,charexempire.com,cizgivedizi.com,clickndownload.*,clicknupload.*,clik.pw,coin-free.com,coins100s.fun,comohoy.com,coolcast2.com,cordneutral.net,countylocalnews.com,cpmlink.net,crackstreamshd.click,crespomods.com,crisanimex.com,crunchyscan.fr,cuevana3.fan,cuevana3hd.com,cumception.com,cutpaid.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +daddylive.*,daddylivehd.*,daddylivestream.com,dailyuploads.net,darkmahou.org,datawav.club,daughtertraining.com,ddrmovies.*,deepgoretube.site,deltabit.co,depvailon.com,desiremovies.*,desivdo.com,desixx.net,detikkebumen.com,deutschepornos.me,devlib.*,diasoft.xyz,dipelis.junctionjive.co.uk,directupload.net,divxtotal.*,divxtotal1.*,dixva.com,djmaza.my,dlhd.*,doctormalay.com,dofusports.xyz,doods.cam,doodskin.lat,downloadrips.com,downvod.com,dphunters.mom,dragontranslation.com,dsvplay.com,dvdfullestrenos.com,dvdplay.*,dx-tv.com,dyngutter.net##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +ebookbb.com,ebookhunter.net,egyanime.com,egygost.com,electro-torrent.pl,elixx.*,elrefugiodelpirata.com,embedstream.me,enjoy4k.*,eplayer.click,erovoice.us,eroxxx.us,estrenosdoramas.net,estrenosflix.*,estrenosflux.*,estrenosgo.*,everia.club,everythinginherenet.blogspot.com,expectdynm.net,extratorrent.st,extremotvplay.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +f1stream.*,fapptime.com,favoyeurtube.net,fbstream.*,fc2db.com,femdom-joi.com,fenixsite.net,file4go.*,fileone.tv,film1k.com,filmesonlinex.org,filmisub.cc,filmnudes.com,filmymaza.blogspot.com,filmyzilla.*,findav.*,findporn.*,flameipt3.vercel.app,flickzap.com,flixmaza.*,flizmovies.*,flostreams.xyz,flyfaucet.com,footyhunter.lol,forex-trnd.com,forumchat.club,forumlovers.club,freedownload.flash-files.com,freeomovie.co.in,freeomovie.to,freeporncomic.net,freepornhdonlinegay.com,freeproxy.io,freeshot.live,freetvsports.*,freeuse.me,freeusexporn.com,fsharetv.cc,fsicomics.com,fsileaks.com,fullboys.com,fullymaza.*,fxpornhd.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +g-porno.com,g3g.*,galinhasamurai.com,gamepcfull.com,gamesmountain.com,gamesrepacks.com,gamingguru.fr,gamovideo.com,garota.cf,gaydelicious.com,gayfor.us,gaypornhdfree.com,gaypornhot.com,gaypornmasters.com,gaysex69.net,gemstreams.com,get-to.link,girlscanner.org,giurgiuveanul.ro,gledajcrtace.xyz,gocast2.com,gomo.to,gostosa.cf,gotxx.*,grantorrent.*,gratispaste.com,gravureblog.tv,gupload.xyz##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +haho.moe,hdmoviesfair.*,hdmoviesflix.*,hdpornflix.com,hdsaprevodom.com,hentai-ia.com,hentaihd.*,hentaiporno.xxx,hentais.tube,hentaitk.net,hentaitube.online,hentaiworld.tv,hexupload.net,hhkungfu.tv,highlanderhelp.com,hiidudemoviez.*,hindimovies.to,hindimoviestv.com,hiperdex.com,hiphopa.net,hispasexy.org,hitomi.la,hitprn.com,hivflix.*,hoca4u.com,hollymoviehd.cc,hoodsite.com,hopepaste.download,hornylips.com,hotgranny.live,hotmama.live,hqcelebcorner.net,huren.best,hwnaturkya.com,hxfile.co##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +igfap.com,iklandb.com,illink.net,imgsen.*,imgsto.*,imgtraffic.com,imx.to,incest.*,incestflix.*,influencersgonewild.org,infosgj.free.fr,itdmusics.com,itopmusic.*,itsuseful.site,itunesfre.com,iwatchfriendsonline.net##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +japangaysex.com,javboys.tv,javcl.com,jav-coco.*,jav-noni.*,javhay.net,javhun.com,javleak.com,javmost.*,javporn.best,javsek.net,javsex.to,javtiful.com,javx357.com,jimdofree.com,jiofiles.org,jointexploit.net,jorpetz.com,jp-films.com,jpop80ss3.blogspot.com,jpopsingles.eu,jrants.com,justfullporn.net##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +kaplog.com,kasiporn.com,keeplinks.*,keepvid.*,keralahd.*,khatrimazaful.*,khatrimazafull.*,kimochi.info,kimochi.tv,kinemania.tv,kissasian.*,kolnovel.site,konstantinova.net,koora-online.live,krussdomi.com,kunmanga.com,kwithsub.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +lat69.me,latinblog.tv,latinomegahd.net,leechall.*,leechpremium.link,legendas.dev,legendei.net,lek-manga.net,linclik.com,linkebr.com,linkrex.net,linkshorts.*,lulu.st,lulustream.com,lulustream.live,luluvdo.com,luluvdoo.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +mangovideo.*,masahub.com,masahub.net,masaporn.*,matchora.live,maturegrannyfuck.com,maxegatos.net,mdfx9dc8n.net,mdy48tn97.com,mediapemersatubangsa.com,mega-mkv.com,megapornpics.com,messitv.net,meusanimes.net,mexa.sh,milfmoza.com,milfnut.*,milfzr.com,mimaletamusical.blogspot.com,miniurl.*,mirrorace.*,mitly.us,mixdroop.*,mixdrop.*,mixiporn.fun,mkv-pastes.com,mkvcage.*,mlbstream.*,mlsbd.*,mmsbee.*,monaskuliner.ac.id,moredesi.com,motogpstream.*,movgotv.net,movi.pk,movieplex.*,movierulzlink.*,movies123.*,moviesflix.*,moviesleech.*,moviesmeta.*,moviessources.*,moviesverse.*,movieswbb.com,moviewatch.com.pk,moviezwaphd.*,mp4upload.com,mrskin.live,mrunblock.*,multicanaistv.com,mundowuxia.com,multicanais.*,musiclutter.xyz,myeasymusic.ir,myonvideo.com,myvidplay.com,myyouporn.com,mzansifun.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +naughtypiss.com,nbastream.*,nekopoi.*,netfapx.com,netfuck.net,new-fs.eu,newmovierulz.*,newtorrentgame.com,neymartv.net,nflstream.*,nflstreams.me,nhlstream.*,nicekkk.com,nicesss.com,nlegs.com,noblocktape.*,nocensor.*,nonixxx.cc,notformembersonly.com,novamovie.net,novelpdf.xyz,novelssites.com,novelup.top,nsfwr34.com,nu6i-bg-net.com,nudebabesin3d.com,nzbstars.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +o2tvseries.com,ohjav.com,ojearnovelas.com,okanime.xyz,olweb.tv,olympusbiblioteca.site,on9.stream,onepiece-mangaonline.com,onifile.com,onionstream.live,onlinesaprevodom.net,onlyfams.*,onlyfullporn.video,onplustv.live,originporn.com,ouo.*,ovagames.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +pagalworld.cc,pahe.*,paste4free.site,pastemytxt.com,payskip.org,pctfenix.*,pctnew.*,peeplink.in,peliculas24.*,peliculasmx.net,pelisflix20.*,pelisplus.*,pelisxporno.net,pencarian.link,pendidikandasar.net,pervyvideos.com,picdollar.com,picsxxxporn.com,pinayscandalz.com,pinkueiga.net,piratebay.*,piratefast.xyz,piratehaven.xyz,pirateiro.com,playmogo.com,playtube.co.za,plugintorrent.com,plyjam.*,plylive.*,plyvdo.*,pmvzone.com,porndish.com,pornez.net,pornfetishbdsm.com,pornfits.com,pornhd720p.com,pornhoarder.*,pornobr.club,pornobr.ninja,pornodominicano.net,pornofaps.com,pornoflux.com,pornotorrent.com.br,pornredit.com,pornstarsyfamosas.es,pornstreams.co,porntn.com,pornxbit.com,pornxday.com,portaldasnovinhas.shop,portugues-fcr.blogspot.com,poseyoung.com,pover.org,prbay.*,premiumporn.org,projectfreetv.*,projeihale.com,proxybit.*,proxyninja.org,psarips.*,pubfilmz.com,publicsexamateurs.com,punanihub.com,pxxbay.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +qiqitvx84.shop##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +r18.best,racaty.*,rapelust.com,rapload.org,read-onepiece.net,readhunters.xyz,relampagomovies.com,remaxhd.*,reshare.pm,retro-fucking.com,retrotv.org,rintor.*,rnbxclusive.*,rnbxclusive0.*,rnbxclusive1.*,robaldowns.com,rockdilla.com,rojadirecta.*,rojadirectaenvivo.*,rojitadirecta.blogspot.com,romancetv.site,roporno.info,rsoccerlink.site,rugbystreams.*,rule34hentai.net,rumahbokep-id.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +sadisflix.*,safego.cc,safetxt.*,sakurafile.com,sambalpuristar.in,savefiles.com,scat.gold,scatfap.com,scatkings.com,seir-sanduk.com,seirsanduk.*,sexdicted.com,sexgay18.com,sexiezpix.com,sextubebbw.com,sgpics.net,shadowrangers.*,shahed-4u.day,shahed4u.*,shahhid4u.cam,shahi4u.*,shahid4u.*,shahid4u1.*,shahid4uu.*,shahiid-anime.net,shaid4u.day,shavetape.*,shemale6.com,shemalegape.net,shid4u.*,shinden.pl,short.es,shortearn.*,shorten.*,shorttey.*,shortzzy.*,sideplusleaks.net,silverblog.tv,silverpic.com,sinsitio.site,skidrowcpy.com,skidrowreloaded.com,skymovieshd.*,slut.mom,smallencode.me,smoner.com,smplace.com,socceron.name,socceronline.*,socialblog.tv,softairbay.com,softarchive.*,songsio.com,souexatasmais.com,speedporn.net,sportbar.live,sports-stream.*,sportstream1.cfd,sporttuna.*,sporttunatv.*,srt.am,sshhaa.*,stapadblockuser.*,stape.*,stapewithadblock.*,starblog.tv,starmusiq.*,stbemuiptv.com,stockingfetishvideo.com,strcloud.*,stream.crichd.vip,stream25.xyz,streamadblocker.*,streamadblockplus.*,streambee.to,streambucket.net,streamcdn.*,streamdesi.com,streamhub.*,streamingclic.com,streamkiste.tv,streamnoads.com,streamoupload.xyz,streamservicehd.click,streamsport.*,streamta.*,streamtape.*,streamtapeadblockuser.*,streamvid.net,strikeout.*,strtape.*,strtapeadblock.*,strtapeadblocker.*,strtapewithadblock.*,strtpe.*,subtitleporn.com,suicidepics.com,superfastrelease.xyz,supexfeeds.com,swatchseries.*,swiftload.io,swipebreed.net,swzz.xyz,sxnaar.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +tabooflix.*,tapeantiads.com,tapeblocker.com,tapenoads.com,tapepops.com,tapewithadblock.org,teamos.xyz,telegramgroups.xyz,tempodeconhecer.blogs.sapo.pt,tennisstreams.*,tfp.is,thaihotmodels.com,theblueclit.com,thebussybandit.com,thedaddy.*,thelastdisaster.vip,themoviesflix.*,thepiratebay.*,thepiratebay.*,thepiratebay0.org,thepiratebay0.org,thepiratebay10.info,thesexcloud.com,thothub.today,tightsexteens.com,tlnovelas.net,tmearn.*,tojav.net,tokusatsuindo.com,tokyocafe.org,toonanime.*,top16.net,topdrama.net,topvideosgay.com,torlock.*,tormalayalam.*,torrage.info,torrents.vip,torrentz2eu.*,torrsexvid.com,tpb-proxy.xyz,trannyteca.com,trendytalker.com,truyenhentaiz.*,tubexplayer.com,tuktukcinma.com,tumanga.net,turbogvideos.com,turboimagehost.com,turbovid.me,turkishseriestv.org,turksub24.net,tutele.sx,tutelehd.*,tv247.us,tvglobe.me,tvpclive.com,tvply.*,tvs-widget.com,tvseries.video##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +u4m.*,ucptt.com,ufaucet.online,ufcfight.online,ufcstream.*,ultrahorny.com,ultraten.net,unblocknow.*,unblockweb.me,underhentai.net,uniqueten.net,uns.bio,upbaam.com,uploadbuzz.*,upstream.to,upzur.com,usagoals.*,ustream.to##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +valeriabelen.com,vegamoviies.*,verdragonball.online,vexmoviex.*,vfxmed.com,vidara.so,vidara.to,vidclouds.*,videostreaming.rocks,videowood.tv,vidlox.*,vidorg.net,vidsonic.net,vidtapes.com,vidz7.com,vikistream.com,vinovo.to,vipboxtv.*,vipleague.*,viprow.*,viral.wf,virpe.cc,visifilmai.org,viveseries.com,vladrustov.sx,volokit2.com,vstorrent.org##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +w4hd.com,watch-series.*,watchbrooklynnine-nine.com,watchelementaryonline.com,watchf1full.com,watchfamilyguyonline.com,watchkobestreams.info,watchlostonline.net,watchmmafull.com,watchmodernfamilyonline.com,watchmonkonline.com,watchrulesofengagementonline.com,watchseries.*,webcamrips.com,wincest.xyz,wolverdon.fun,wordcounter.icu,worldmovies.store,worldstreams.click,wpdeployit.com,wqstreams.tk,wwwsct.com##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +x18hub.com,xanimeporn.com,xblog.tv,xca.cymru,xcandid.vip,xclusivejams.*,xmoviesforyou.*,xpornium.net,xvip.lat,xxgasm.com,xxvideoss.org,xxx18.uno,xxxdominicana.com,xxxfree.watch,xxxmax.net,xxxwebdlxxx.top,xxxxvideo.uno##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +yabai.si,yeshd.net,youdbox.*,youjax.com,yourdailypornvideos.ws,yourupload.com,youswear.com,ytmp3eu.*,yts-subs.*,yts.*,ytstv.me,yumeost.net##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +zerion.cc,zerocoin.top,zitss.xyz,zooqle.*,zpaste.net##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +pillowcase.su##+js(rmnt, script, /h=decodeURIComponent|"popundersPerIP"/) +||flixmomo.*/utilsmin*.js^ +/^https:\/\/www\.[a-z]{8,16}\.com\/(?:[A-Za-z]+\/)*(?:[_0-9A-Za-z]{1,20}[-.])*[_0-9A-Za-z]{1,20}\.js$/$script,xhr,3p,match-case,from=vfxmed.com|watchmodernfamilyonline.com +://www.*.css|$script,xhr,3p,to=com,from=1337x.ninjaproxy1.com|netfapx.com|naughtypiss.com|vfxmed.com|watchluna.com|watchmodernfamilyonline.com +://www.*.com/css/$script,xhr,3p,to=com|~principalcdn.com,from=1337x.ninjaproxy1.com|netfapx.com|naughtypiss.com|vfxmed.com|watchluna.com|watchmodernfamilyonline.com +!#endif +!#if env_safari +/^https:\/\/www\.[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.com\/[A-Za-z]+\/[_0-9A-Za-z][_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?[_0-9A-Za-z]?\.min\.js$/$script,xhr,3p,match-case,to=com,from=1337x.ninjaproxy1.com|netfapx.com|naughtypiss.com|vfxmed.com|watchluna.com|watchmodernfamilyonline.com +!#endif +watchluna.com##+js(trusted-replace-outbound-text, atob, /.+/, , condition, '/(www\.[a-z]{8,16}\.com|cloudfront\.net)\/.+\.(css|js)$/') +! Not utf-8 +hitomi.la##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +akaihentai.com##+js(rmnt, script, popMagic) +fsicomics.com,fsileaks.com##+js(aeld, click, popMagic) +*$script,domain=megapornpics.com,3p,denyallow=wankgod.com +/^https:\/\/www\.[a-z]{8,14}\.com\/[a-z]{1,4}\.js$/$script,3p,match-case,header=x-powered-by:Express,from=~edu|~gov,to=com|~exploretock.com|~photopea.com +/^https:\/\/www\.[a-z]{8,16}\.com\/(?:[A-Za-z]+\/)*(?:[_0-9A-Za-z]{1,20}[-.])*[_0-9A-Za-z]{1,20}\.js$/$script,xhr,3p,match-case,to=com,header=popads-node +/^https:\/\/www\.[a-z]{8,16}\.com\/(?:[A-Za-z]+\/)*(?:[_0-9A-Za-z]{1,20}[-.])*[_0-9A-Za-z]{1,20}\.js$/$script,xhr,3p,match-case,to=com,header=link:/adsco\.re\/>;rel=preconnect/ +/^https:\/\/www\.[a-z]{8,16}\.com\/(?:[A-Za-z]+\/)*(?:[_0-9A-Za-z]{1,20}[-.])*[_0-9A-Za-z]{1,20}\.js$/$script,xhr,3p,match-case,to=com,header=x-77-pop +://www.*.css|$script,xhr,3p,to=com,header=link:/\/>;rel=preconnect/ +://www.*.css|$script,xhr,3p,to=com,header=popads-node +://www.*.css|$script,xhr,3p,to=com,header=x-77-pop +://www.*/images/*.min.js|$script,xhr,3p,to=com +://www.*.com/*.min.js|$script,xhr,3p,to=com,header=popads-node +://www.*.com/*.min.js|$script,xhr,3p,to=com,header=x-77-pop +://www.*.com/css/$script,xhr,3p,to=com|~principalcdn.com,header=link:/\/>;rel=preconnect/ +://www.*.com/js/css/$script,xhr,3p +||cloudfront.net/*.min.js|$script,xhr,3p,header=popads-node +||cloudfront.net/*.min.js|$script,xhr,3p,header=x-77-pop +||cloudfront.net/*.min.js|$script,xhr,3p,header=link:*adsco.re* +=e3&*,0|$script,3p,to=com +=e3&*,1|$script,3p,to=com +=3&*,0|$script,3p,to=com +=3&*,1|$script,3p,to=com +!#if ext_ubol +/^https:\/\/www\.[a-z]{8,16}\.com\/(?:[a-zA-Z]{1,6}\/){0,2}[a-z]{5,11}\.min\.js$/$script,3p,match-case,to=com,header=link:*/>;rel=preconnect +/\.cloudfront\.net\/(?:[a-zA-Z]{1,6}\/){0,2}[a-z]{5,11}\.min\.js$/$script,3p,match-case,to=cloudfront.net,header=link:*/>;rel=preconnect +://www.*.css|$script,xhr,3p,to=com,header=link:*/>;rel=preconnect +!#endif +!#if env_safari +/^https?:\/\/www\.[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.com\/([a-zA-Z][a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?\/)?([a-zA-Z][a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?\/)?([a-zA-Z][a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?\/)?[a-z][a-z][a-z][a-z][a-z][a-z][a-z]+(\.[a-z][a-z][a-z][a-z][a-z][a-z]+-[a-z][a-z][a-z][a-z][a-z][a-z]+)?\.min\.js$/$script,3p,match-case,from=dad|day|mom|top|vercel.app|you +/\.cloudfront\.net\/([a-zA-Z][a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?\/)?([a-zA-Z][a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?\/)?([a-zA-Z][a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?[a-zA-Z]?\/)?[a-z][a-z][a-z][a-z][a-z][a-z]+(\.[a-z][a-z][a-z][a-z][a-z][a-z]+-[a-z][a-z][a-z][a-z][a-z][a-z]+)?\.min\.js/$script,3p,match-case,from=dad|day|mom|top|vercel.app|you +://www.*.com/*.css|$script,3p,to=~principalcdn.com +://www.*.com/*.css|$xhr,3p,from=dad|day|mom|top|vercel.app|you +!#endif +!#if cap_ipaddress +/^https:\/\/www\.[a-z]{8,16}\.com\/(?:[A-Za-z]+\/)*(?:[_0-9A-Za-z]{1,20}[-.])*[_0-9A-Za-z]{1,20}\.js$/$script,3p,match-case,to=com,ipaddress=/^([78]9\.1[28]7\.[12]\d{2}\.\d{1,3}|84\.17\.57\.\d{1,2}|207\.211\.208\.184|2a02:6ea0:d[16]0[0c]::\d{1,2})$/ +://www.*.css|$script,3p,to=com,ipaddress=/^(84\.17\.57\.\d{1,2}|2a02:6ea0:d600::(2|3|10))$/ +!#endif +||nsfwr34.com/ad_schedule/ +||animesrbija.com/popads.js +||admin.animesrbija.com/playertag +mdy48tn97.com##+js(nowoif) +mdy48tn97.com##div[style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; z-index: 2147483646;"] +! ##+js(acs, atob, /popundersPerIP[\s\S]*?Date[\s\S]*?getElementsByTagName[\s\S]*?insertBefore/) +mapple.tv,roshy.tv,vidfast.*##+js(acs, atob, /popundersPerIP[\s\S]*?Date[\s\S]*?getElementsByTagName[\s\S]*?insertBefore/) +roshy.tv##+js(acs, clearTimeout, /popundersPerIP[\s\S]*?Date[\s\S]*?getElementsByTagName[\s\S]*?insertBefore/) +animefire.io##+js(trusted-replace-outbound-text, atob, /.+/, , condition, /www|cloudfront/) +aether.mom##+js(trusted-create-html, head, ) +! NOTE: _pop +canna.to,flexy.stream,fsx.monster##+js(aopw, _pop) +! !SECTION: PopAds-sites +! SECTION: popMagic-sites +141tube.com,18adultgames.com,18porncomic.com,19-days-manga.com,1teentubeporn.com,3dhentai.club,3gaytube.com,3prn.com,3xamatorszex.hu,3xfaktor.hu,4archive.org,4porn4.com,560pmovie.com,69games.xxx,6indianporn.com,7mmtv.sx,85po.com,8muses.xxx##+js(acs, document.querySelectorAll, popMagic) +a-hentai.tv,ablefast.com,adslink.pw,adult-empire.com,adultporn.com.es,ahri8.*,akatsuki-no-yona.com,akutsu-san.com,al4a.com,algodaodocescan.com.br,allafricangirls.net,allcelebs.club,allclassic.porn,allporncartoons.com,allpussynow.com,allureamateurs.net,alotporn.com,amateur-mature.net,amateurfapper.com,amateurfun.net,amateurporn.co,amazingtrannies.com,amazon-love.com,animecast.net,animeidhentai.com,animesex.me,animetoast.cc,annoncesescorts.com,anusling.info,anybunny.com,aoashimanga.com,arabxforum.com,arabxnx.com,archivebate.com,arcjav.com,asiansex.life,asianpornfilms.com,asianstubefuck.com,asianteenagefucking.com,asiaon.*,asiaontop.com,asmroger.*,assesphoto.com,axporn.com,azmen.com##+js(acs, document.querySelectorAll, popMagic) +babesxworld.com,banglachoti-story.com,bbw.com.es,bbw6.com,bbwfest.com,bbwfuckpic.com,bcmanga.com,bdsmporn.cc,bdsmstreak.com,beegsexxx.com,beemtube.com,beginningmanga.com,belloporno.com,best18teens.com,bestblackgay.com,bestcam.tv,bestgrannies.com,besthdgayporn.com,bestjavporn.com,bestlist.top,bestpornflix.com,bestpussypics.net,bestsextoons.com,bestshemaleclips.com,bigboobs.com.es,bigwank.com,birdurls.com,bjhub.me,black-matures.com,blackamateursnaked.com,blackchubbymovies.com,blackcunts.org,blackmaturevideos.com,blackpornhq.com,blacksexmix.com,blackteen.link,blasensex.com,blowjobamateur.net,bluetv.xyz,bobolike.com,bokepxv.com,bolly-tube.com,bollywoodx.org,bondagevalley.cc,boobs-mania.com,boolwowgirls.com,booru.eu,bootyexpo.net,borwap.xxx,boxporn.net,boystube.link,brazzersbabes.com,bucetaspeludas.com.br,bunkr.*,bunkrr.*,buondua.com,bustmonkey.com,bustyfats.com,bustyshemaleporn.com,bymichiby.com##+js(acs, document.querySelectorAll, popMagic) +cartoonporncomics.info,cartoonvideos247.com,cat3movie.org,cbt-tube.net,cdimg.blog.2nt.com,celebrityleakednudes.com,celebritynakeds.com,celebsnudeworld.com,celebwhore.com,centralboyssp.com.br,cerdas.com,cervezaporno.com,cfake.com,chatropolis.com,chicasdesnudas.xxx,chubbyelders.com,chubbypornmpegs.com,cine-calidad.*,classicxmovies.com,clicporn.com,clothing-mania.com,comicsarmy.com,comicsporno.xxx,comicspornos.com,comicspornoxxx.com,comicsvalley.com,comicsxxxgratis.com,comicxxx.eu,crazyporn.xxx,criollasx.com,crossdresserhub.com,csrevo.com,cuckold.it,cutiecomics.com,czechsex.net,czechvideo.org##+js(acs, document.querySelectorAll, popMagic) +daftsex.biz,darknessporn.com,dciuu.*,deepfucks.com,deluxtube.com,depvailon.com,descargaranimes.com,desihoes.com,desijugar.net,desimms.co,devere-group-hongkong.com,digitalbeautybabes.com,dikgames.com,dirtybadger.com,dirtyfox.net,dirtygangbangs.com,dirtyporn.cc,dirtytamil.com,dirtytamil.com,dlgal.com,dlouha-videa.cz,domahatv.com,domahi.net,donna-cerca-uomo.com,dorohedoro.online,doujindesu.*,douxporno.com,dragontranslation.net,drsnysvet.cz,dsvplay.com,dumpz.net##+js(acs, document.querySelectorAll, popMagic) +ebonyassclips.com,ebuxxx.net,ehotpics.com,eporner.video,epornstore.com,eroasmr.com,eroclips.org,erogarga.com,erotichunter.com,eroticmv.com,eroticteensphoto.net,eroxxx.us,escort-in-italia.com,escortconrecensione.com,eshentai.tv,everysextube.com,ex-foary.com,eztvtorrent.co##+js(acs, document.querySelectorAll, popMagic) +familyporner.com,famosas-desnudas.org,famousnipple.com,fap16.net,faperplace.com,fapset.com,faptube.com,fapxl.com,fatblackmatures.com,fattubevideos.net,fatwhitebutt.com,fatxxxtube.com,femdomworld.com,femjoybabes.com,fetish-tv.com,fetishburg.com,ffjav.com,fileone.tv,film1k.com,filmpertutti.*,filmpornoitaliano.org,filmyporno.tv,finderporn.com,finding-camellia.com,findtranny.com,finevids.xxx,folgenporno.com,footfetishvid.com,foxnxx.com,free-gay-clips.com,free-trannyporn.com,freeadultvideos.cc,freefatpornmovies.com,freegayporn.me,freegrannypornmovies.com,freehdvideos.xxx,freeomovie.to,freepornhdonlinegay.com,freepornjpg.com,freepublicporn.com,freesex-1.com,freexxxvideos.pro,freshscat.com,freshshemaleporn.com,frprn.com,ftopx.com,fuckingsession.com,fuckmilf.net,fucktube4k.com,fuxnxx.com##+js(acs, document.querySelectorAll, popMagic) +gatasdatv.com,gay-streaming.com,gay4porn.com,gayboyshd.com,gayboystube.top,gayfor.us,gayforfans.com,gaypornhdfree.com,gaypornhot.com,gaypornlove.net,gaystream.pw,gayteam.club,gayvideo.me,gayxxxtube.net,gelbooru.com,generalpornmovies.com,ggbases.com,ghettopearls.com,gifcandy.net,girlfriendsexphoto.com,girlfuckgalleries.com,girlnude.link,girlswallowed.com,glavmatures.com,gonzoporn.cc,goodporn.to,goshow.tv,gotporn.com,gotxx.*,grannyxxxtube.net,greatestshemales.com,greatnass.com,greensmut.com,grigtube.com##+js(acs, document.querySelectorAll, popMagic) +hanime24.com,hardfacefuck.com,hcbdsm.com,hd-xxx.me,hdgayporn.net,hdjavonline.com,hdpicsx.com,hdtubesex.net,hentai-cosplay-xxx.com,hentai-for.net,hentai-hot.com,hentai-ia.com,hentai-senpai.*,hentai.tv,hentai20.io,hentai2read.com,hentai4k.com,hentaiarena.com,hentaiasmr.moe,hentaiblue.net,hentaibrasil.info,hentaibros.com,hentaicity.com,hentaidays.com,hentaienglish.com,hentaihaven.com,hentaihaven.red,hentaihd.*,hentaila.com,hentaila.tv,hentaipins.com,hentaiporno.xxx,hentairead.com,hentaisenpai.*,hentaitk.net,hentaitube1.lol,hentaiworld.tv,hentaiyes.com,herexxx.com,heroine-xxx.com,highheelstrample.com,highporn.net,hindilinks4u.*,hiperdex.com,hit-erotic.com,hitprn.com,hmanga.asia,holaporno.xxx,hoporno.net,hornbunny.com,hornyfanz.com,hornyhill.*,hotgirl.biz,hotgirlhub.com,hotleak.vip,hotleaks.tv,hotmarathistories.com,hotmaturegirlfriends.com,hotntubes.com,hotsexstory.xyz,hotshag.com,house.porn,hqporner.com,hqpornero.com,hqpornstream.com,huyamba.*##+js(acs, document.querySelectorAll, popMagic) +ibbs.pro,ibecamethewifeofthemalelead.com,ibradome.com,iceporn.tv,ideal-teens.com,ilikecomix.com,imagetwist.netlify.app,imgflare.com,in91vip.win,incontri-in-italia.com,indiansexbazar.com,indianxxx.us,influencersgonewild.com,ingyenszexvideok.hu,iusedtobeaboss.com##+js(acs, document.querySelectorAll, popMagic) +j91.asia,japaneseasmr.com,japanfuck.com.es,japantaboo.com,japteenx.com,jasmr.net,jav-xx.com,jav101.online,jav380.com,javbake.com,javball.com,javbee.vip,javbix.com,javboys.*,javbull.tv,javcensored.net,javcl.com,javcock.com,javdock.com,javdoge.com,javenspanish.com,javfav.com,javfullmovie.com,javfun.me,javgay.com,javgrab.com,javhd.*,javhdporn.com,javhdporn.net,javheroine.com,javhoho.com,javhun.com,javjavhd.com,javmelon.com,javmilf.xyz,javmobile.net,javmoviexxx.com,javneon.tv,javnew.net,javopen.co,javpan.net,javpool.com,javporn18.com,javpornfull.com,javprime.net,javpro.cc,javrave.club,javraveclub.com,javrip.net,javroi.com,javsaga.ninja,javsex.guru,javsexfree.com,javstor.com,javstream.com,javtsunami.com,javuncensored.watch,javxxxporn.com,jizz.us,jotea.cl,jojolandsmanga.com,jpg.fishing,jpg2.su,jpvhub.com,juicy3dsex.com,jujmanga.com,jujustu-kaisen.com,justsexpictures.com,justtoysnoboys.com##+js(acs, document.querySelectorAll, popMagic) +kaoskrew.org,kenzato.uk,kiaporn.com,kill-the-hero.com,kinkyporn.cc,kissjav.*,klikmanga.com,klmanga.*,komikstation.com,komisanwamanga.com,kropic.com,krx18.com,kubo-san.com,kvador.com##+js(acs, document.querySelectorAll, popMagic) +latinohentai.com,leakedzone.com,leaktube.net,lesbiansex.best,lesbiantube.club,lesboluvin.com,lewdstars.com,lewdweb.net,lewdzone.com,likuoo.video,ljcam.net,lnk2.cc,longporn.xyz,lovelynudez.com,lulu.st,luscious.net,lustteens.net##+js(acs, document.querySelectorAll, popMagic) +mainporno.com,mamochki.info,manga-scantrad.*,manga18.club,manga18fx.com,mangadass.com,mangadna.com,mangaforfree.com,mangahub.io,mangaonline.fun,mangarawjp.asia,mangarussia.com,mangas-origines.fr,manhwa18.cc,manhwahentai.me,manhwaread.com,manhwas.*,manhwaus.net,manyakan.com,mature-tube.sexy,mature4.net,maturepornjungle.com,maturepornphoto.com,maturexxxclips.com,maxegatos.net,maxjizztube.com,maxtubeporn.net,mdtaiwan.com,meetdownload.com,meetimgz.com,megadede.*,megapornfreehd.com,mespornogratis.com,micmicidol.*,migliori-escort.com,milftoon.xxx,milkporntube.com,mlookalporno.com,mobifuq.com,mobileporn.cam,mom-pussy.com,mommy-pussy.com,mommyporntube.com,momspost.com,momtubeporn.xxx,momxxx.video,momzr.com,moregirls.org,movies18.net,moviesxxx.cc,mp4-porn.net,mrjav.net,mrpeepers.net,muchfap.com,multporn.net,musvozimbabwenews.com,mydesibaba.com,mydesiboobs.com,mygalls.com,mypornhere.com,mypornstarbook.net,mypussydischarge.com,mywatchseries.*,myxclip.com,myyoungbabe.com,myyouporn.com,mzansixporn.co.za##+js(acs, document.querySelectorAll, popMagic) +nangiphotos.com,napiszar.com,naughtyza.co.za,needgayporn.com,netfuck.net,nhentai.*,nicheporno.com,nightlifeporn.com,nocfsb.com,noindexscan.com,novojoy.com,novoporn.com,nsfw247.to,nsfwalbum.com,nsfwgify.com,nude-beach-tube.com,nude-teen-18.com,nudebeachpussy.com,nudeblackgirlfriend.com,nudedxxx.com,nudemomshots.com,nudevista.*,nudismteens.com,nudistic.com,nyaatorrent.com##+js(acs, document.querySelectorAll, popMagic) +ok.xxx,onepiece-manga-online.net,onepiecemangafree.com,onepunch-manga.com,onepunch.*,onlinefetishporn.cc,onlineporn24.com,onlineporno.cc,onlinepornushka.com,onlinesextube.com,onlinexxx.cc,onlygangbang.com,onlyfanvideo.com,onlygayvideo.com,onscreens.me,oosex.net,opomanga.com,orgasmatrix.com,otakuporn.com,otakuraw.net,otomi-games.com,overhentai.net##+js(acs, document.querySelectorAll, popMagic) +palimas.*,pasend.*,perfectgirls.*,perfektdamen.co,perisxxx.com,pervertium.com,petitegirlsnude.com,phim85.com,phonerotica.com,pianmanga.*,picspornamateur.com,pictoa.com,pinayviralsexx.com,pinkporno.*,pinsexygirls.com,pisshamster.com,pixhost.*,plumpxxxtube.com,porcore.com,porn-sexypics.com,porn0.tv,porn00.org,porn0video.com,porn3dx.com,porn720.*,porn77.info,porn78.info,pornabcd.com,pornachi.com,pornbaker.com,pornbimbo.com,pornchaos.org,pornchimp.com,porncomics.*,porndaa.com,pornditt.com,porndollz.com,porndude.tv,porner.tv,pornfuzzy.com,porngayclips.com,porngirlstube.com,porngq.com,porngun.net,pornhat.*,pornhd8k.*,pornhdin.com,pornhegemon.com,pornhex.com,pornhub-teen.com,porninblack.com,pornissimo.org,pornken.com,pornktube.*,pornlore.com,pornloupe.com,pornmam.com,pornmom.net,pornmoms.org,pornmonde.com,porno-porno.net,porno-rolik.com,pornocolegialas.org,pornocolombiano.net,pornohd.blue,pornoman.pl,pornomanoir.com,pornone.com,pornonline.cc,pornoperra.com,pornopics.site,pornoreino.com,pornotrack.net,pornovka.cz,pornpaw.com,pornrabbit.com,pornrewind.com,pornrusskoe.com,pornsai.com,pornsex-pics.com,pornstargold.com,pornstarsadvice.com,porntape.net,porntin.com,porntn.com,porntrex.video,porntry.com,porntube18.cc,pornuj.cz,pornvibe.org,pornwatchers.com,pornxp.com,pornxp.org,pornxxxvideos.net,pornyeah.com,pornzone.com,povaddict.com,prothots.com,pulpo69.com,punishworld.com,pussy3dporn.com,pussymaturephoto.com,pussymaturephoto.com,pvip.gratis,pygodblog.com##+js(acs, document.querySelectorAll, popMagic) +qcock.com,queerdiary.com##+js(acs, document.querySelectorAll, popMagic) +raccontivietati.com,ragnarokmanga.com,randomarchive.com,ramdomlives.com,readfireforce.com,realitybrazzers.com,recordbate.com,redamateurtube.com,reddflix.com,redgay.net,rednowtube.com,redpornnow.com,reifporn.de,repicsx.com,risefromrubble.com,rokuhentai.com,roshy.tv,rphangx.net,rubias19.com,rule34.art,rule34.jp.net,rule34.paheal.net,rule34h.com,rushporn.xxx,russkoevideoonline.com,rusteensex.com##+js(acs, document.querySelectorAll, popMagic) +saint.to,sankakucomplex.com,saradahentai.com,scat.gold,scatkings.com,scatnetwork.com,see-xxx.com,sekaikomik.live,seksrura.net,seksualios.com,seneporno.com,seoul-station-druid.com,seriesyonkis.*,sesso-escort.com,severeporn.com,sex-babki.com,sex-pic.info,sex-torrent.net,sexbixbox.com,sexgay18.com,sexkbj.com,sexmutant.com,sexmv.com,sexoverdose.com,sexpornasian.com,sexpox.com,sexpuss.org,sexrura.com,sexrura.pl,sexsq.com,sextor.org,sextubefun.com,sextubeset.com,sexvideos.host,sexvideos.host,sexy-games.*,sexy-parade.com,sexy-youtubers.com,sexyaporno.com,sexyasianteenspics.com,sexybabespictures.com,sexyebonyteen.com,sexyerotica.net,sexyfreepussy.com,sexygirl.cc,sexyhive.com,sexyteengirlfriends.net,shelovesporn.com,shemalegape.net,shemalemovies.us,shemaletoonsex.com,shentai-anime.com,shlink.net,short.croclix.me,simply-hentai.com,sissytube.net,sitarchive.com,skinnyhq.com,sleazedepot.com,smotret-porno-onlain.com,solomax-levelnewbie.*,solomaxlevelnewbie.*,solopornoitaliani.xxx,somulhergostosa.com,socialmediagirls.com,sousou-no-frieren.*,speedporn.net,spy-x-family.*,spycock.com,stileproject.com,storyblack.com,str8ongay.com,stream-69.com,streamextreme.cc,streamhub.*,streamporn.cc,subdivx.com,submissive-wife.net,supremebabes.com,sweetgirl.org,sxyprn.*,szexvideok.hu##+js(acs, document.querySelectorAll, popMagic) +tabooporn.tv,tabootube.*,tamilsexstory.net,teencamx.com,teenpornjpg.com,teenxxxporn.pro,telugusexkathalu.com,tenseishitaraslimedattaken-manga.com,thaihotmodels.com,thatav.net,thebarchive.com,thebeginningaftertheend.*,thecartoonporntube.com,theeminenceinshadowmanga.com,thefantazy.com,thehentaiworld.com,thelesbianporn.com,thematurexxx.com,theyarehuge.com,thothd.com,thotporn.tv,thotsbay.tv,thotslife.com,tioanime.com,titsintops.com,tmohentai.com,tojav.net,tok-thots.com,tokyo-ghoul.online,tokyomotion.com,tokyomotion.net,tomatespodres.com,tomb-raider-king.com,toonanime.*,topjav.tv,topwebgirls.eu,torrent-pirat.com,torture1.net,tpornstars.com,trahino.net,trahodom.com,tranny6.com,trannylibrary.com,trannyline.com,trannysexmpegs.com,trannyxxxtube.net,transexuales.gratis,truyenhentai18.net,truyenhentaiz.*,truyenvn.dev,ts-mpegs.com,tsmovies.com,tubegaytube.com,tubepornnow.com,tuberzporn.com,tubexo.tv,tuhentaionline.com,turbogvideos.com,turboimagehost.com,tvporn.cc,twink-hub.com##+js(acs, document.querySelectorAll, popMagic) +ulsex.net,ultraten.net,uncensoredleak.com,uniqueten.net,up-load.io,upicsz.com,uporn.icu,upskirt.tv,urgayporn.com,usaxtube.com##+js(acs, document.querySelectorAll, popMagic) +vcp.xxx,ver-mangas-porno.com,verhentai.top,vermangasporno.com,verpeliculasporno.gratis,videos-xxx.*,videosputas.xxx,videosxxxputas.com,videoxxx.cc,vids.st,viewmature.com,vintageporntubes.com,vipporns.com,viralxvideos.es,viralxxxporn.com,vkrovatku.com,voyeurblog.net,voyeurxxxsex.com,vzrosliedamy.com##+js(acs, document.querySelectorAll, popMagic) +wannafreeporn.com,wantmature.com,waploaded.com,watchfreejavonline.co,watchfreekav.com,watchhentai.net,watchporn.*,watchporn4k.com,watchporninpublic.com,watchseries1.*,webcams.casa,webtoonscan.com,westmanga.info,wetpussy.sexy,wetsins.com,womennaked.net,wonporn.com,worldsex.com,wow-mature.com,wowxxxtube.com##+js(acs, document.querySelectorAll, popMagic) +x-videos.name,xanimehub.com,xanimu.com,xculitos.com,xemales.com,xemphim1.top,xexle.com,xfantazy.com,xfantazy.org,xforum.live,xfreehd.com,xfreepornsite.com,xhamsterteen.com,xkeezmovies.com,xn--algododoce-j5a.com,xmegadrive.com,xnxx-downloader.net,xnxx.party,xnxxhamster.net,xpicse.com,xpornzo.com,xsexpics.com,xsexpics.com,xspiel.com,xsportshd.com,xszav.club,xvideis.cc,xvideos.name,xx.knit.bid,xxf.mobi,xxr.mobi,xxu.mobi,xxx-videos.org,xxxcomics.org,xxxfiles.*,xxxhub.cc,xxxlesvianas.com,xxxonline.cc,xxxputas.net,xxxtor.com,xxxxselfie.com,xxxxxx.hu##+js(acs, document.querySelectorAll, popMagic) +y-porn.com,yaoiscan.com,yona-yethu.co.za,yongfucknaked.com,youlikeboys.com,youngbelle.net,youngerasiangirl.net,youngerporn.mobi,youngleak.com,youpornfm.com,youramateurporn.com,yporn.tv,ytanime.tv,yy1024.net##+js(acs, document.querySelectorAll, popMagic) +zonavideosx.com,zthots.com##+js(acs, document.querySelectorAll, popMagic) +6indianporn.com,amateurebonypics.com,amateuryoungpics.com,amigosporn.top,cinemabg.net,desimmshd.com,everia.club,frauporno.com,freepdfcomic.*,givemeaporn.com,hitomi.la,jav-asia.top,javfull.net,javideo.net,javsunday.com,kr18plus.com,luscious.net,missavtv.com,picbaron.com,pilibook.com,pornborne.com,porngrey.com,pornktube.*,pornx.tube,qqxnxx.com,sexvideos.host,submilf.com,subtaboo.com,watchseries.*,xfrenchies.com##+js(aeld, , popMagic) +allcalidad.*,camarchive.tv,flixbaba.*,gntai.*,grantorrent.*,hentai2read.com,hentai2w.com,icyporno.com,illink.net,javtiful.com,m-hentai.net,mejortorrent.*,mejortorrento.*,mejortorrents.*,mejortorrents1.*,mejortorrentt.*,pornblade.com,pornfelix.com,pornxxxxtube.net,redwap.me,redwap2.com,redwap3.com,sunporno.com,ver-comics-porno.com,ver-mangas-porno.com,x-fetish.tube,x-tg.tube,x-video.tube,xanimeporn.com,xemphim1.top,xxxvideohd.net,zetporn.com##+js(aeld, click, popMagic) +aznude.com,rule34ai.*##+js(aeld, , popMagic) +gaygo.tv##+js(acs, $, popMagic) +!#if cap_html_filtering +cine-calidad.*,fastpic.org,forums.socialmediagirls.com,javtsunami.com,manwa.me,monoschino2.com,saradahentai.com,shemalegape.net,sxyprn.*,tabooporn.tv,veryfreeporn.com,x-video.tube##^script:has-text(popMagic) +!#else +cine-calidad.*,fastpic.org,forums.socialmediagirls.com,javtsunami.com,manwa.me,monoschino2.com,saradahentai.com,shemalegape.net,sxyprn.*,tabooporn.tv,veryfreeporn.com,x-video.tube##+js(rmnt, script, popMagic) +!#endif +allporncomics.co,comicsvalley.com##.widget_custom_html +||xsportshd.com/bet.gif$image +familyporner.com##.inside-list-boxes:upward(1) +sexoverdose.com##.table +momxxxsex.com,penisbuyutucum.net##+js(set, open, undefined) +||watchfreejavonline.co/*.gif$image,1p +||wp.com/*.gif$image,domain=watchfreejavonline.co +watchfreejavonline.co##[href*="affpa.top"] +javbull.tv,javsaga.ninja##.pb-3.text-center +xxxfiles.*##.underplayer_banner +javbake.com,javcensored.net,javdoge.com,javsexfree.com,javuncensored.watch##.adstrick > .video-item:style(clear: none !important;) +javbake.com,javcensored.net,javdoge.com,javsexfree.com,javuncensored.watch##.itemads +cat3movie.org###ads-preload +cat3movie.org##.float-ck-center-lt +asianpornfilms.com##.underplayer_banner +pussymaturephoto.com##div[class^="mikex"]:upward(1) +hentaiasmr.moe##.happy-header +||clenchedyouthmatching.com^ +||porngrey.com/js/KVShare.js +/\/static\/js\/jav\.[a-f0-9]{12}\.js$/$script,match-case +!#if env_safari +/\/static\/js\/jav\.[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]\.js$/$script,match-case +!#endif +jpvhub.com##div[style="position: relative; display: flex; flex: 1 1 0%;"] > div[class^="jss"]:has(.exoclick-popunder-trigger) +jpvhub.com##iframe ~ .MuiBox-root +jpvhub.com##.MuiGrid-item div[style^="position"] > div:has-text(Skip Ad) +jpvhub.com##+js(rpnt, script, /.*adConfig.*frequency_period.*/, (async () => {const a=location.href;if(!a.includes("/download?link="))return;const b=new URL(a)\,c=b.searchParams.get("link");try{location.assign(`${location.protocol}//${c}`)}catch(a){}} )();) +otomi-games.com##.otomi-widget +||kaguraserver.com/wp-content/uploads/*-Ad-300- +||kaguraserver.com/wp-content/uploads/*-Ad-728- +givemeaporn.com,pornborne.com##.sources +givemeaporn.com,pornborne.com##.JoinChannel +a-hentai.tv###text-2 +a-hentai.tv##.support-frame +daftsex.net##.videos > div:not([id]) +||pilixiaoshuo.com^ +||kinkbook.com/ad_media/ +fap16.net##.adsplx300 +&ag_custom_vlmspot= +! TODO: change to ##+js(aeld, { "type": "click", "pattern": "popMagic", "runAt": "idle" }) +fitnakedgirls.com##+js(nowoif) +bunkr.*##+js(aopr, popMagic.init) +bunkr.*,bunkr-albums.io##+js(acs, WebAssembly, Promise) +bunkr.*##^script:has-text(WebAssembly) +||bunkr-cache.se/js/script.js$script,domain=bunkr.* +manhwaus.net##.my2023 +simpcity.*##+js(aeld, , shouldShow) +simpcity.*##[src="https://simpcity.su/custom/catto.png"] +simpcity.*##.prm-wrapper +simpcity.*##.nav-dfake +simpcity.*##.nav-bonga +simpcity.*##.nav-faze +simpcity.*##.nav-tpd +simpcity.*##.blockitsowereplaceit +simpcity.*##.node--link +||simpcity.*/smp/d.min.js +!#if cap_html_filtering +saint2.cr##^script:has-text(WebAssembly) +!#else +saint2.cr##+js(acs, WebAssembly, Promise) +!#endif +! !SECTION: popMagic-sites +! SECTION: hilltopads-sites +10convert.com,2girls1cup.ca,7bit.link,animez.org,aninavi.blog,ansuko.net,apnablogs.in,areabokep.com,asiangaysex.net,asmroger.*,axomtube.in,banglachotigolpo.xyz,bellezashot.com,besthdgayporn.com,braflix.win,bigojav.com,bookfrom.net,boysxclusive.com,chikianimation.org,coomer1.net,ddd-smart.net,desikamababa.com,dojing.net,drivenime.com,dtupgames.blogspot.com,earnfromarticles.com,easyvidplayer.com,echiman.com,erokomiksi.com,favoyeurtube.net,fucksporn.com,fullxcinema1.com,fxpornhd.com,gayfor.us,gayxx.net,gdrivelatinohd.net,gigmature.com,gomuraw.blog,gosexy.mobi,hachiraw.net,hanime1-me.top,hentaianimezone.com,hentaiasmr.moe,hentairead.io,homemoviestube.com,hornyfap.tv,huurshe.com,incgrepacks.com,isekaitube.com,japangaysex.com,javboys.*,javbraze.com,javdoe.sh,javhat.tv,javhd.*,javhdz.today,javseen.tv,javsubindo.com,javtiful.com,javup.org,jojolandsmanga.com,jpopsingles.eu,kahanighar.com,kaliscan.*,kfapfakes.com,kiradream.blog,kisscos.net,kisshentaiz.com,kmansin09.*,kumaraw.com,kuronavi.blog,leakav.com,leermanga.net,lustesthd.makeup,mangakoma01.*,mangamovil.net,mangaraw.*,mangaraw1001.cc,mangaraw18.net,mangarawad.fit,mangarawjp.me,mangatv.net,manhuarmtl.com,manhuatop.org,manhwa68.com,manhwatop.com,mikohub.blog,milfnut.*,mmsbee27.com,mmsbee47.com,mmsmasala27.com,naijauncut.com,nicomanga.com,nlcosplay.com,nontonvidoy.online,novelaplay.com,nudeslegion.com,odiafresh.com,onlinework4all.com,otomi-games.com,paipancon.com,pandamovies.org,pantieshub.net,pastelink.net,pelimeli.com,pelis182.net,pinayflix.me,piratehaven.xyz,pitube.net,poapan.xyz,porn00.org,pornobae.com,pornohubonline.com,pornosubtitula2.com,pornxp.com,primewire.*,raw1001.net,raw18.*,rawinu.com,rawkuro.net,rebahin.pw,redretti.com,rentry.co,safefileku.com,sexdiaryz.*,sexpin.net,shemale6.com,shemaleup.net,sharinghubs.com,shinshi-manga.net,smarttrend.xyz,socigames.com,spotidownloader.com,streamup.ws,sweeteroticart.com,tabooporn.tv,taboodude.com,tatli.biz,tesbox.my.id,thebarchive.com,theblank.net,thotchicks.com,transflix.net,turboimagehost.com,veo-hentai.com,veronica.uk,vintagepornfun.com,watchporn.to,weloma.art,worthcrete.com,xhamster.fm,xmegadrive.com,yabaisub.cloud,yesjavplease.fun##+js(acs, document.createElement, l.parentNode.insertBefore(s) +panuvideo.com##+js(acs, setTimeout, l.parentNode.insertBefore(s) +mangaplus.shueisha.tv,shueisharaw.tv##+js(acs, matchMedia, l.parentNode.insertBefore(s) +asiangay.tv,bootstrample.com,deephot.link,gayxx.net,hentairead.io,japangaysex.com,justthegays.tv,mangagun.net,mangayy.org,nicomanga.com,nlcosplay.com,nudeslegion.com,paipancon.com,premiumporn.org,rawinu.com,veo-hentai.com,watchsouthpark.tv,weloma.art,xpicu.store##+js(aopr, popns) +tunemovie.fun##+js(acs, document.createElement, target.appendChild(s) +brocoflix.com,brocoflix.xyz##+js(acs, document.createElement, l.appendChild(s)) +movielinkbd.*##+js(aeld, load, document.body.appendChild(s) +pepperlive.info##+js(acs, document.createElement, no-referrer-when-downgrade) +coinsbomb.com,daemon-hentai.com,daemonanime.net,everia.club,kurakura21.com##+js(acs, document.createElement, l.parentNode.insertBefore(s, /^data:/) +yaoimangaonline.com##+js(trusted-suppress-native-method, Document.prototype.createElement, '"script"', prevent, litespeed/js) +mitaku.net##+js(acs, document.createElement, appendTo:) +hentaianimezone.com##+js(noeval-if, l.parentNode.insertBefore(s) +*$script,3p,denyallow=disqus.com|disquscdn.com|fastlylb.net,domain=cin.guru +!#if ext_ubol +/^https:\/\/[-a-z]{6,}\.(?:com?|info|pro|xyz)\/[a-d][-.\/A-Z_a-z][DHWXm][-.\/A-Z_a-z][59FVZ][-.\/A-Z_a-z][6swyz][-.\/A-Z_a-z][-\/0-9A-Z_a-z][-.\/_A-Za-z][-\/0-9A-Z_a-z]{22,162}(?:$|\?)/$script,3p,match-case,to=co|com|info|pro|xyz,domain=jav.guru +!#endif +||roughremove.com^ +! !SECTION: hilltopads-sites +! SECTION: exoclick ads, popunder - ExoLoader +airsextube.com,asianbabestube.com,bigtitsxxxfree.com,blowjobpornset.com,entertubeporn.com,finexxxvideos.com,freesexvideos24.com,fuckhairygirls.com,gopornindian.com,grandmatube.pro,grannyfucko.com,grannyfuckxxx.com,hd-analporn.com,hiddencamhd.com,hindiporno.pro,indianbestporn.com,japanesemomsex.com,japanxxxass.com,massagefreetube.com,maturepussies.pro,megajapansex.com,new-xxxvideos.com,xxxblowjob.pro,xxxtubegain.com,xxxvideostrue.com,onlinegrannyporn.com,agedtubeporn.com,agedvideos.com,freebigboobsporn.com,tubeinterracial-porn.com,best-xxxvideos.com,bestanime-xxx.com,blowxxxtube.com,callfuck.com,teenhubxxx.com,tubepornasian.com,xxxtubedot.com,blowjobfucks.com,dirtyasiantube.com,maturewomenfucks.com,pornmaturetube.com,setfucktube.com,tourporno.com,do-xxx.com,dotfreesex.com,dotfreexxx.com,easymilftube.net,electsex.com,erospots.info,fineretroporn.com,freehqtube.com,freshmaturespussy.com,freshsexxvideos.com,fuckedporno.com,gallant-matures.com,hqhardcoreporno.com,girlssexxxx.com,glamourxxx-online.com,vintagepornnew.com,tubevintageporn.com,goxxxvideos.com,grouppornotube.com,hqxxxmovies.com,hqsex-xxx.com,hqamateurtubes.com,hotpussyhubs.com,hdpornteen.com,indecentvideos.com,ifreefuck.com,kittyfuckstube.com,lightxxxtube.com,momstube-porn.com,modelsxxxtube.com,milfpussy-sex.com,nudistube.com,nudisteens.com,nudismteens.com,nude-beach-tube.com,nicexxxtube.com,neatpornodot.com,neatfreeporn.com,bigtitsporn-tube.com,tubehqxxx.com,nakedbbw-sex.com,onlineteenhub.com,online-xxxmovies.com,pussyhothub.com,pornxxxplace.com,pornoteensex.com,pornonote.pro,pornoaid.com,pornclipshub.com,whitexxxtube.com,sweetadult-tube.com,sweet-maturewomen.com,sexymilfsearch.com,sextubedot.com,hqmaxporn.com,sexlargetube.com,sexhardtubes.com,tubepornstock.com,xfuckonline.com##+js(noeval) +airsextube.com,asianbabestube.com,bigtitsxxxfree.com,blowjobpornset.com,entertubeporn.com,finexxxvideos.com,freesexvideos24.com,fuckhairygirls.com,gopornindian.com,grandmatube.pro,grannyfucko.com,grannyfuckxxx.com,hd-analporn.com,hiddencamhd.com,hindiporno.pro,indianbestporn.com,japanesemomsex.com,japanxxxass.com,massagefreetube.com,maturepussies.pro,megajapansex.com,new-xxxvideos.com,xxxblowjob.pro,xxxtubegain.com,xxxvideostrue.com,acutetube.net,agedtubeporn.com,agedvideos.com,onlinegrannyporn.com,freebigboobsporn.com,tubeinterracial-porn.com,best-xxxvideos.com,bestanime-xxx.com,blowxxxtube.com,callfuck.com,teenhubxxx.com,tubepornasian.com,xxxtubedot.com,blowjobfucks.com,dirtyasiantube.com,maturewomenfucks.com,pornmaturetube.com,setfucktube.com,tourporno.com,do-xxx.com,dotfreesex.com,dotfreexxx.com,easymilftube.net,electsex.com,fineretroporn.com,freehqtube.com,freshmaturespussy.com,freshsexxvideos.com,fuckedporno.com,gallant-matures.com,hqhardcoreporno.com,girlssexxxx.com,glamourxxx-online.com,vintagepornnew.com,tubevintageporn.com,goxxxvideos.com,grouppornotube.com,hqxxxmovies.com,hqsex-xxx.com,hqamateurtubes.com,hotpussyhubs.com,hdpornteen.com,indecentvideos.com,ifreefuck.com,kittyfuckstube.com,lightxxxtube.com,momstube-porn.com,modelsxxxtube.com,milfpussy-sex.com,nicexxxtube.com,neatpornodot.com,neatfreeporn.com,bigtitsporn-tube.com,tubehqxxx.com,nakedbbw-sex.com,onlineteenhub.com,online-xxxmovies.com,pussyhothub.com,pornxxxplace.com,pornoteensex.com,pornonote.pro,pornoaid.com,pornclipshub.com,whitexxxtube.com,sweetadult-tube.com,sweet-maturewomen.com,sexymilfsearch.com,sextubedot.com,hqmaxporn.com,sexlargetube.com,sexhardtubes.com,tubepornstock.com,xfuckonline.com##+js(aopr, Aloader.serve) +activevoyeur.com,allbbwtube.com,alltstube.com,cockmeter.com##+js(acs, document.dispatchEvent, myEl) +ariestube.com,asian-teen-sex.com,18asiantube.com,wholevideos.com,asianporntube69.com,babeswp.com,bangyourwife.com,bdsmslavemovie.com,bdsmwaytube.com,bestmaturewomen.com,classicpornvids.com,cockmeter.com,cocogals.com,pornpaw.com,dawntube.com,desihoes.com,desimmshd.com,dirtytubemix.com,plumperstube.com,enormousbabes.net,erowall.com,exclusiveindianporn.com,figtube.com,amateur-twink.com,freeboytwinks.com,freegrannyvids.com,freexmovs.com,freshbbw.com,frostytube.com,fuckslutsonline.com,gameofporn.com,gayboyshd.com,giantshemalecocks.com,erofus.com,hd-tube-porn.com,hardcorehd.xxx,hairytwat.org,iwantmature.com,justababes.com,jenpornuj.cz,javteentube.com,hard-tube-porn.com,klaustube.com,kaboomtube.com,lustyspot.com,lovelynudez.com,dailyangels.com,ljcam.net,mybestxtube.com,nakenprat.com,oosex.net,oldgrannylovers.com,ohueli.net,pornuploaded.net,pornstarsadvice.com,alotporn.com,bobs-tube.com,pornohaha.com,pornmam.com,pornhegemon.com,pornabcd.com,porn-hd-tube.com,pandamovies.pw,teensporn.tv,thehentaiworld.com,pantyhosepink.com,queenofmature.com,realvoyeursex.com,realbbwsex.com,rawindianporn.com,onlygoldmovies.com,rainytube.com,stileproject.com,slutdump.com,nastybulb.com,babesinporn.com,wantedbabes.com,sextube-6.com,porntubegf.com,sassytube.com,smplace.com,maturell.com,pornoplum.com,widewifes.com,wowpornlist.xyz,vulgarmilf.com,oldgirlsporn.com,freepornrocks.com,desivideos.*##+js(aopr, document.dispatchEvent) +8teenxxx.com,activevoyeur.com,allschoolboysecrets.com,boobsforfun.com,breedingmoms.com,cockmeter.com,collegeteentube.com,cumshotlist.com,porn0.tv,ritzysex.com,ritzyporn.com,sexato.com,javbobo.com,sokobj.com##+js(aopr, ExoLoader.serve) +bdsmporntub.com,femdomporntubes.com##+js(aopr, Popunder) +malluporno.com##+js(rmnt, script, /exoloader/i) +comicxxx.eu##^meta[http-equiv="refresh"] +comicxxx.eu###dclm_modal_content +comicxxx.eu##*:style(filter: none !important) +comicxxx.eu###dclm_modal_screen +blowjobgif.net##+js(aopr, ExoDetector) +favefreeporn.com,onlygayvideo.com,peachytube.com,stepsisterfuck.me##+js(aopr, ExoLoader.addZone) +decorativemodels.com,erowall.com,freyalist.com,guruofporn.com,jesseporn.xyz,kendralist.com,vipergirls.to,lizardporn.com,wantedbabes.com,bustybloom.com,exgirlfriendmarket.com,nakedneighbour.com##+js(aopr, loadTool) +comicxxx.eu,mybestxtube.com,pornobengala.com,pornicom.com,xecce.com,teensporn.tv,pornlift.com,reddflix.com##+js(aopr, open) +classicpornbest.com,desihoes.com,indianpornvideo.org,slaughtergays.com,sexiestpicture.com##+js(aopr, decodeURI) +classicpornbest.com##+js(aeld, popstate) +classicpornbest.com##+js(aopr, localStorage) +embedy.me##+js(nowoif, !embedy) +reddflix.com##+js(aopr, LieDetector) +erospots.info##+js(aopr, Pub2) +gameofporn.com##+js(aeld, , exopop) +jemontremonminou.com,jemontremasextape.com,jemontremabite.com##+js(aopr, localStorage) +youlikeboys.com,hentaihere.com,ganstamovies.com,youngleak.com,jizzberry.com,porndollz.com,filmpornofrancais.fr,pictoa.com##+js(aeld, getexoloader) +nackte.com##+js(aopr, jsUnda) +older-mature.net##+js(aopr, doOpen) +canalporno.com,eroxia.com,porndoe.com,pornhub-sexfilme.net,pornojenny.net,pornoleon.com,pornozot.com##+js(aopr, ExoLoader) +herzporno.net,pornhub-sexfilme.net,pornojenny.net,pornoleon.com##+js(nostif, /loadMomoVip|loadExo|includeSpecial/) +pornhub-sexfilme.net,pornojenny.net,pornoleon.com##+js(aost, document.createElement, loadNeverBlock) +||a.magsrv.com/ad-provider.js$redirect=noopjs +alotporn.com##+js(aopw, __htapop) +alotporn.com##+js(aopr, console.clear) +bobs-tube.com##+js(nostif, innerText, 2000) +bobs-tube.com##+js(set, flashvars.mlogo, '') +bobs-tube.com##.adv_nad_player +bobs-tube.com##.sponsored_top +pornforrelax.com##+js(aopr, adver.abFucker.serve) +pornforrelax.com##+js(aeld, , _blank) +fatwhitebutt.com,smplace.com,slaughtergays.com,sexiestpicture.com,sassytube.com,vipergirls.to,xh.video##+js(nowoif) +fatwhitebutt.com##+js(aeld, , _blank) +freepornrocks.com##+js(aeld, , open) +tubev.sex##+js(aopw, displayCache) +tubev.sex##[class^="sp_block"] +pictoa.com##+js(aeld, , 0x) +lovelynudez.com##+js(aopr, popit) +asiansex.life,javbobo.com,nudismteens.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +hentaiocean.com##+js(acs, CustomEvent, ExoLoader) +||classicpornbest.com^$csp=script-src * +*$script,xhr,3p,domain=lovelynudez.com +*$script,3p,domain=classicpornbest.com +classicpornbest.com##.h-bns-bl +/videojsxvast.js +/embed/*?c=object_container*&psid= +||a.hentaiocean.com^ +||nudismteens.com/tensnuddy.js +||javbobo.com/little-hall-f39d/ +||pornpaw.com/never.js +||jizzberry.com/static/js/initsite.min.js +||akaihentai.com/fro_ +||fastpic.org/view/*.html|$script,1p +||javtsunami.com/cool-shadow-$script +||malluporno.com/red-sea- +||amateursubs.com/wp-content/special/ +||engine.*&iframe|$frame,3p +||creative.live.*/widgets/*&campaignId=$frame +||gayxnow.com/*.html$frame,1p +||gayxnow.com/static/js/promo- +||gayxnow.com/bn/ +||camhub.*/static/js/cc-kvs.js +akaihentai.com##.exc +asiansex.life###spot-holder +comicxxx.eu###tracking-url +dirtytubemix.com##.on-video-dark +boobsforfun.com##.adcontainer +breedingmoms.com##.embaners +breedingmoms.com##.h-bn +pornpaw.com##.ipprtcnt +pornpaw.com##div[style="height:250px;display:block;"] +erospots.info##.custom-html-widget.textwidget +amateur-twink.com##.banner +amateur-twink.com##.pl_adv +freyalist.com##.stripper +ftopx.com##.advert +fuckedporno.com##.bannersinner +fuckhardporn.com##.player_ad_block +fuckhardporn.com###player_adv_start +fuckhardporn.com###skim +gameofporn.com###container +gameofporn.com##.block-pub-side +cockmeter.com###alfa_promo_parent +||girlscanner.online/ph_co.js$script +||girlscanner.cc/check.php +girlscanner.cc##[href*="/check.php"] +girlscanner.cc##div.side-box +vipergirls.to##[src="files/se.gif"] +vipergirls.to##.body_wrapper > [id^="ad_global"], #notices.notices +mrsexe.com###disclaimer +mrsexe.com##.reveal-modal-bg +mrsexe.com###exovid +mrsexe.com##.vjs-poster +pornstarsadvice.com##.banners +bobs-tube.com##.advertising +bobs-tube.com##.player-related-videos +bobs-tube.com##.adv +pornforrelax.com##.vda-item +porn613.net##[src="about:blank"] +@@||bobs-tube.com/player/player_ads.html$1p +pictoa.com###tab-gallery +pictoa.com###tab-footer +||bobs-tube.com/sw$script,1p +||checking-your-browser.com^ +||crentgate.com^ +||applzr.com^ +||obitube.com^$frame,1p +||redtub3xxx.com^$frame,1p +##.bloc-pub +##.bloc-pub2 +###invideo_data +*/api/spots/$frame,script +/api/spots/*^fill=$xhr +/api/spots/*&kw=$xhr +###invideo_2 +##.hor_banner +###invid_call +###invideo_new +##.aan_fake +##.aan_fake__video-units +##.rps_player_ads +##[src^="//dombnrs.com/"] +*.gif$domain=javbobo.com,image +/frtd_ldr_$script,1p +/bknd_ldr_$script,1p +.go?pid=*&spaceid=*&ctrlid= +pornoplum.com,vulgarmilf.com,oldgirlsporn.com,maturell.com,nakedolders.com,widewifes.com##iframe:upward(2) +besttwinkass.com##[class*="_Bns"] +nylonbabez.net,nylonpornpictures.net,stockingspornpics.com##.preview:has(.nat-block) +*$frame,1p,domain=sexrura.pl|sexrura.com +! NSFW popups exo ads +18-teen-sex.com,18-teen-tube.com,18girlssex.com,18teen-tube.com,18tubehd.com,2017tube.com,3prn.com,sexmoza.com,yogranny.com,youfreepornotube.com,youngleak.com,zhlednito.cz##+js(acs, document.dispatchEvent, myEl) +24pornvideos.com,2japaneseporn.com,xxxvideor.com,youngleak.com,zhlednito.cz##+js(aopr, ExoLoader.serve) +zhlednito.cz##+js(nosiif, /^/) +xxxtubepass.com,yourhomemadetube.com##+js(aopr, Aloader.serve) +yeswegays.com,youramateurtube.com##+js(nowoif) +18girlssex.com##+js(aopr, decodeURI) +||youramateurtube.com/sw.js$script,1p +!#if cap_html_filtering +hentaihere.com##^script:has-text(/shown_at|WebAssembly/) +!#else +hentaihere.com##+js(rmnt, script, /shown_at|WebAssembly/) +!#endif +||hentaihere.com/ark/$1p +hentaihere.com##.item:has(a[href^="https://hive.arf.dev"]):upward(div[class]) +! Similar group of german porn sites +pornohirsch.net##+js(set, vpPrerollVideo, undefined) +pornohirsch.net,herzporno.*,deinesexfilme.com,einfachtitten.com,halloporno.*,lesbenhd.com,milffabrik.com,porn-monkey.com,porndrake.com,pornhubdeutsch.net,pornoaffe.com,pornodavid.com,pornoente.tv,pornofisch.com,pornofelix.com,pornohammer.com,pornohelm.com,pornoklinge.com,pornotom.com,pornotommy.com,pornovideos-hd.com,pornozebra.com,xhamsterdeutsch.xyz,xnxx-sexfilme.com##+js(aeld, getexoloader) +deinesexfilme.com,einfachtitten.com,lesbenhd.com,milffabrik.com,porn-monkey.com,porndrake.com,pornhubdeutsch.net,pornoaffe.com,pornodavid.com,pornoente.tv,pornofisch.com,pornofelix.com,pornohammer.com,pornohelm.com,pornoklinge.com,pornotom.com,pornotommy.com,pornovideos-hd.com,pornozebra.com,xhamsterdeutsch.xyz,xnxx-sexfilme.com##+js(nostif, appendChild) +deinesexfilme.com,einfachtitten.com,pornohirsch.net,lesbenhd.com,milffabrik.com,porndrake.com,pornoaffe.com,pornodavid.com,pornoente.tv,pornofisch.com,pornofelix.com,pornohammer.com,pornohelm.com,pornoklinge.com,pornovideos-hd.com,pornotom.com,pornotommy.com,pornozebra.com,xnxx-sexfilme.com,halloporno.*##.vjs-overlayed +deinesexfilme.com,lesbenhd.com,milffabrik.com,pornoaffe.com,pornoente.tv,pornohelm.com,pornoklinge.com,xnxx-sexfilme.com###wa_join_btn +einfachtitten.com,pornodavid.com,pornofisch.com,pornofelix.com,pornohammer.com,pornotom.com,pornotommy.com,pornovideos-hd.com,pornozebra.com##.send_event.widget_btn.cf +deinesexfilme.com,einfachtitten.com,lesbenhd.com,milffabrik.com,porn-monkey.com,porndrake.com,pornhubdeutsch.net,pornoaffe.com,pornodavid.com,pornoente.tv,pornofisch.com,pornofelix.com,pornohammer.com,pornohelm.com,pornoklinge.com,pornotom.com,pornotommy.com,pornovideos-hd.com,pornozebra.com,xhamsterdeutsch.xyz,xnxx-sexfilme.com##+js(aopr, open) +||static.twincdn.com^$media,redirect=noopmp3-0.1s +##.preroll-blocker +xnxx-sexfilme.com##+js(aopw, SpecialUp) +||pushpad.xyz^$script,domain=xnxx-sexfilme.com +xnxx-sexfilme.com##.img_box:has-text(Anzeige) +xnxx-sexfilme.com###wa-banner +xnxx-sexfilme.com##aside ins:upward(aside) +||xnxx.com/cams/ +xnxx-sexfilme.com##.grid_box:has(a[target="_blank"]) +xnxx-sexfilme.com##.preroll-blocker +xnxx-sexfilme.com##.preroll-skip-button +xnxx-sexfilme.com##.vjs-overlayed +||twincdn.com/video/susilive/$media,redirect=noopmp4-1s,domain=xnxx-sexfilme.com +pornojenny.net,pornolisa.com##.adsbyexoclick:upward(1) +||pornblade.com/*.php +||twincdn.com^$3p,script,image +||pornblade.com^$xhr,1p +||pornfelix.com^$xhr,1p +hd-easyporn.com##+js(aeld, getexoloader) +! playing video => detection +pornblade.com,pornfelix.com##+js(rpnt, script, a.onerror, xxx) +hd-easyporn.com,pornblade.com,pornfelix.com##.vjs-overlayed +hd-easyporn.com,pornblade.com,pornfelix.com###wrapper_content > aside[id] +pornblade.com###e_v + aside[id] +*$xhr,3p,domain=hd-easyporn.com +hd-easyporn.com##[rel*="sponsored"] +||pornojenny.com/api/widget/$3p +/static/*/froload.js?v=$script,1p +||chtntor.com^ +$frame,1p,domain=pornhub-sexfilme.net|pornojenny.net|pornoleon.com +/api/widget/*$to=pornhub-sexfilme.net|pornojenny.net|pornoleon.com +pornhub-sexfilme.net,pornojenny.net,pornoleon.com##.iframe_tb +pornhub-sexfilme.net,pornojenny.net,pornoleon.com###tttt_wrapper +pornhub-sexfilme.net,pornojenny.net,pornoleon.com##aside[class^="spez_height"] +pornhub-sexfilme.net,pornojenny.net,pornoleon.com##aside[id^="wa_"] +pornhub-sexfilme.net,pornojenny.net,pornoleon.com##aside[id]:has(> div > ins.adsbyexoclick) +pornhub-sexfilme.net,pornojenny.net,pornoleon.com##.grid_box:has(.special_preview) +pornhub-sexfilme.net,pornojenny.net,pornoleon.com###wrapper_content:style(margin-left: 0 !important;) +! other exoclick crap https://github.com/uBlockOrigin/uAssets/issues/6151#issuecomment-629804631 +*.php$script,1p,domain=18teenporno.tv|3teentube.com|4gaycocks.com|50yearoldsluts.com|adult-home-videos.com|amateur-cougar.com|amateur-nude.com|amateurmaturewives.com|babeswp.com|bannedbdsm.com|bdsmaz.com|bdsmsecrets.net|bigtitsgallery.net|bizarre-club.com|bondage-club.net|bondagevideo.org|bondagewaytube.com|celebritytubeporn.com|celebxvideo.com|cidertube.com|crazygayporn.com|dailygayvideo.com|desimms.co|digisesso.com|dusktube.com|elmtube.com|enterfreegaysex.com|etitz.com|experiences-gay.com|femdomdaily.com|fieldstube.com|footfetish-slave.com|freebesttwinks.com|freegranny6.com|freematurelovers.com|freematureswomen.com|gay-place.com|gayfuckingtube.com|gaypornxxxtube.com|goodtgp.net|grannysfucking.net|hdbbwmovies.com|helloshemale.com|hiddencamsluts.com|homevoyeurvideo.net|hornygrannytube.net|hqvintagetube.net|hugeboobswomen.com|indiancunts.net|indianporndaily.com|indiansexfree.net|javbobo.com|kuboys.net|latinaxxxvideos.com|matures-loving-sex.com|maturesandnylon.com|meporno.com|momsfuckboys.com|moreasiansex.com|mybbwtube.com|mygrannyporn.com|myowntits.com|nakedolders.com|naughtyjapaneseteens.com|nicegrannys.com|nudeteenshub.com|nylonbabez.net|nyloncunts.com|nylonglamourlegs.com|nylonpornpictures.net|older-wives.com|pantyhoseminx.com|porncore.net|porngoeshd.com|pornoplum.com|pornvideoh.com|pornvideos.host|raventube.com|retropornzone.com|ritzyamateursex.com|sexrura.com|sexytwinkcock.com|stockingspornpics.com|teen18tube.com|teen-tube-18.com|teen-tube-19.com|teen-tube-21.com|teen-tube-porn.com|teenporn.ws|teenpornvideo.me|teensexvideos.xxx|teensonporn.com|teentube-18.com|thevintagemovies.com|timetoteens.com|tube-teen-18.com|tubebikini.com|tubehd.xxx|ultragranny.com|uniformcunts.com|videosexyteen.com|videosmadeathome.com|vintagesextapes.com|vipoldies.net|wildfemdom.com|wildretroporn.com|wowpornlist.xyz|xxx-hd-teens.com|xxx-hd-tube.com|xxxmegaboobs.com|yatranny.com|yourbdsmmovie.com|yourfreepantyhosegalleries.com|girlsfucking.net|hairy-amateurs.com|maturevideos.site|milfera.com|onlylesbianvids.com|teen-porn-tube.com +thumbnails.porncore.net##div[id][style$="height:200px;width:800px;"] +/static/js/ad-provider.js|$script +! !SECTION: exoclick ads, popunder - ExoLoader +! SECTION: flashvars sites +viralxxxporn.com##+js(rpnt, script, protect_block, no_block) +rule34video.com##+js(set, flashvars.adv_pre_vast) +cnnamador.com,fyxxr.to,watchporn.to##+js(nostif, offsetWidth, 2000) +cnnamador.com,fyxxr.to,watchporn.to##+js(rpnt, script, adv_, no_adv_, condition, flashvars, sedCount, 10) +###kt_player #ads_iframe +###kt_player .fp-brand +##.container a[href^="https://go.mavrtracktor.com/"] +##.container a[href^="https://seduced.com"][href*="ref="] +! !SECTION: flashvars sites +! LieDetector/AaDetector stuff +asd.homes,fastream.to##+js(aopr, LieDetector) +! !LieDetector/AaDetector stuff +! SECTION: Propeller ads +! pp_issues +! firefox html filtering +! ##^script:has-text(;}}};break;case $.) +!#if cap_html_filtering +11xmovies.*,123movies.*,123moviesla.*,123movieweb.*,2embed.*,3kmovies.*,720pflix.*,720pstream.*,7starhd.*,9xflix.*,9xmovies.*,aagmaal.*,adsh.cc,adshort.*,afilmyhouse.blogspot.com,ak.sv,aliezstream.pro,allmovieshub.*,animesultra.net,antennasports.ru,api.webs.moe,apkmody.io,asianplay.*,atishmkv.*,atomixhq.*,backfirstwo.site,bflix.*,ccurl.net,cloudvideo.tv,cloudvideotv.*,crazyblog.in,cricstream.*,crictime.*,cuervotv.me,daddylive.*,daddylivehd.*,defienietlynotme.com,divicast.com,dood.*,dooood.*,dvdplay.*,egybest.*,embedme.*,embedpk.net,embedstream.me,esportivos.site,extramovies.*,faselhd.*,faselhds.*,faselhdwatch.*,filemoon.*,filemooon.*,filmeserialeonline.org,filmy.*,filmyhit.*,filmywap.*,filmyzilla.*,finfang.*,flexyhit.com,flixhq.*,fmembed.cc,fmoonembed.*,fmovies.*,focus4ca.com,footybite.to,foreverwallpapers.com,french-streams.cc,gdplayer.*,gdrivelatinohd.net,globalstreams.xyz,gocast.pro,godzcast.com,goku.sx,gomovies.*,gowatchseries.*,hdfungamezz.*,hdmovies23.*,hdmoviesfair.*,hdtoday.to,hellnaw.*,hianime.to,hinatasoul.com,hindilinks4u.*,hindimovies.to,hurawatch.*,hwnaturkya.com,hxfile.co,igg-games.com,infinityscans.net,jalshamoviezhd.*,kaido.to,kerapoxy.*,kunmanga.com,linkshub.*,livecricket.*,livestreames.us,locatedinfain.com,mangareader.to,maxstream.*,mhdsport.*,mkvcinemas.*,moonembed.*,moviekids.tv,movies2watch.*,moviesda9.co,moviespapa.*,mp4moviez.*,mydownloadtube.*,myflixertv.to,myflixerz.to,mylivestream.pro,novelssites.com,nowmetv.net,nowsportstv.com,nuroflix.*,nxbrew.com,o2tvseries.*,o2tvseriesz.*,oii.io,olympicstreams.co,paidshitforfree.com,pctfenix.*,pctnew.*,pepperlive.info,pirlotv.*,pkspeed.net,playertv.net,poscitech.*,primewire.*,redecanais.*,rgeyyddl.*,ronaldo7.pro,roystream.com,rssing.com,s.to,serienstream.*,sflix.*,shahed4u.*,shaheed4u.*,share.filesh.site,sharkfish.xyz,skidrowcodex.net,smartermuver.com,socceronline.*,speedostream.*,sportcast.*,sportshub.fan,sportskart.*,stream4free.live,streamadblocker.*,streamhub.*,streamingcommunity.*,streamnoads.com,sulleiman.com,tamilarasan.*,tamilfreemp3songs.*,tamilmobilemovies.in,tamilprinthd.*,tapeadsenjoyer.com,tapeadvertisement.com,tapelovesads.org,thewatchseries.live,tnmusic.in,torrentdosfilmes.*,totalsportek.*,travelplanspro.com,tubemate.*,tusfiles.com,tutlehd4.com,twstalker.com,uploadrar.*,uqload.*,userscloud.com,vegamovie.*,vid-guard.com,vidcloud9.*,vidco.pro,vido.*,vidoo.*,vidsaver.net,vidspeeds.com,vidsrc.*,vipboxtv.*,viprow.*,viralitytoday.com,voiranime.stream,volokit2.com,vpcxz19p.xyz,vudeo.*,vumoo.*,watchdoctorwhoonline.com,watchomovies.*,watchserie.online,woxikon.in,www-y2mate.com,yesmovies.*,ylink.bid,z12z0vla.*,zvision.link##^script:has-text(;}}};break;case $.) +!#else +! ##+js(rmnt, script, ;}}};break;case $.) +11xmovies.*,123movies.*,123moviesla.*,123movieweb.*,2embed.*,3kmovies.*,720pflix.*,720pstream.*,7starhd.*,9xflix.*,9xmovies.*,aagmaal.*,adsh.cc,adshort.*,afilmyhouse.blogspot.com,ak.sv,aliezstream.pro,allmovieshub.*,animesultra.net,antennasports.ru,api.webs.moe,apkmody.io,asianplay.*,atishmkv.*,atomixhq.*,backfirstwo.site,bflix.*,ccurl.net,cloudvideo.tv,cloudvideotv.*,crazyblog.in,cricstream.*,crictime.*,cuervotv.me,daddylive.*,daddylivehd.*,defienietlynotme.com,divicast.com,dood.*,dooood.*,dvdplay.*,egybest.*,embedme.*,embedpk.net,embedstream.me,esportivos.site,extramovies.*,faselhd.*,faselhds.*,faselhdwatch.*,filemoon.*,filemooon.*,filmeserialeonline.org,filmy.*,filmyhit.*,filmywap.*,filmyzilla.*,finfang.*,flexyhit.com,flixhq.*,fmembed.cc,fmoonembed.*,fmovies.*,focus4ca.com,footybite.to,foreverwallpapers.com,french-streams.cc,gdplayer.*,gdrivelatinohd.net,globalstreams.xyz,gocast.pro,godzcast.com,goku.sx,gomovies.*,gowatchseries.*,hdfungamezz.*,hdmovies23.*,hdmoviesfair.*,hdtoday.to,hellnaw.*,hianime.to,hinatasoul.com,hindilinks4u.*,hindimovies.to,hurawatch.*,hwnaturkya.com,hxfile.co,igg-games.com,infinityscans.net,jalshamoviezhd.*,kaido.to,kerapoxy.*,kunmanga.com,linkshub.*,livecricket.*,livestreames.us,locatedinfain.com,mangareader.to,maxstream.*,mhdsport.*,mkvcinemas.*,moonembed.*,moviekids.tv,movies2watch.*,moviesda9.co,moviespapa.*,mp4moviez.*,mydownloadtube.*,myflixertv.to,myflixerz.to,mylivestream.pro,novelssites.com,nowmetv.net,nowsportstv.com,nuroflix.*,nxbrew.com,o2tvseries.*,o2tvseriesz.*,oii.io,olympicstreams.co,paidshitforfree.com,pctfenix.*,pctnew.*,pepperlive.info,pirlotv.*,pkspeed.net,playertv.net,poscitech.*,primewire.*,redecanais.*,rgeyyddl.*,ronaldo7.pro,roystream.com,rssing.com,s.to,serienstream.*,sflix.*,shahed4u.*,shaheed4u.*,share.filesh.site,sharkfish.xyz,skidrowcodex.net,smartermuver.com,socceronline.*,speedostream.*,sportcast.*,sportshub.fan,sportskart.*,stream4free.live,streamadblocker.*,streamhub.*,streamingcommunity.*,streamnoads.com,sulleiman.com,tamilarasan.*,tamilfreemp3songs.*,tamilmobilemovies.in,tamilprinthd.*,tapeadsenjoyer.com,tapeadvertisement.com,tapelovesads.org,thewatchseries.live,tnmusic.in,torrentdosfilmes.*,totalsportek.*,travelplanspro.com,tubemate.*,tusfiles.com,tutlehd4.com,twstalker.com,uploadrar.*,uqload.*,userscloud.com,vegamovie.*,vid-guard.com,vidcloud9.*,vidco.pro,vido.*,vidoo.*,vidsaver.net,vidspeeds.com,vidsrc.*,vipboxtv.*,viprow.*,viralitytoday.com,voiranime.stream,volokit2.com,vpcxz19p.xyz,vudeo.*,vumoo.*,watchdoctorwhoonline.com,watchomovies.*,watchserie.online,woxikon.in,www-y2mate.com,yesmovies.*,ylink.bid,z12z0vla.*,zvision.link##+js(rmnt, script, ;}}};break;case $.) +!#endif +! ##+js(acs, Math, zfgloaded) +01fmovies.com,33sk.*,3sk.*,4shared.com,allcalidad.*,anime-odcinki.pl,animesvision.*,bdcraft.net,best4hack.blogspot.com,biqle.com,bmovie.*,cinedetodo.*,cinetux.*,converto.io,descargas2020.*,exyi.net,fmovie.*,hindilinks4u.*,hitokin.net,iptvdroid1.blogspot.com,ironysub.*,janjua.*,kstreaming.*,kwik.*,langitmovie.com,libertyvf.*,movieloversworld.com,nensaysubs.net,nflbite.com,onlinework4all.com,onlystream.tv,popcornstream.*,putlocker.*,saveshared.com,short.pe,shorten.*,solarmovie.*,storieswatch.com,streamango.*,streaming-one.com,streamloverx.com,turkanime.*,uploadev.*,upzone.cc,ur-files.com,vidoza.net,vidshare.tv,watchtrailerparkboys.com,xmovies08.*##+js(acs, Math, zfgloaded) +! ##+js(acs, JSON.parse, break;case $.) +1111fullwise.*,111watcho.*,123-movies.*,123moviesc.*,123moviesla.*,1kmovies.*,2gomovies.*,4filmyzilla.*,69hoshudaana.*,adshort.*,airportseirosafar.com,ajkalerbarta.com,akmcloud.*,allmovieshub.*,altadefinizione01.*,animepahe.*,animetak.*,animeworld.tv,appsfree4u.com,appvn.com,arenavision.*,askim-bg.com,b-bmovies.com,baixedetudo.net.br,baramjak.com,batmanstream.*,bclikeqt.com,bengalisite.com,birdurls.com,bmovies.*,bollymovies.*,bollywoodfilma.*,buffstream.*,ch-play.com,charexempire.com,clampschoolholic.*,comandotorrenthd.org,comofuncionaque.com,crackevil.com,crichd.*,crictime.*,cryptoforu.org,dflinks.*,downloadming.*,dramacool.*,e123movies.com,eio.io,europix.*,exe.app,extreme-down.*,f1stream.*,fbstream.*,fffmovies.*,filme-bune.biz,filmisongs.*,filmovi.ws,flixhq.ru,foumovies.*,fullcinema.*,fullreal.*,fulltube.*,getmega.net,givemenbastreams.com,gnula.*,gogoplay.*,gomo.to,gyonlineng.com,hd44.net,hdmoviehubs.*,hdmovies23.com,hdonline.co,hdpopcorns.*,hdss-to.*,hdzone.org,healthnewsreel.com,i123movies.net,iegybest.co,ikindlebooks.com,illink.net,imgdawgknuttz.com,isaimini.ca,iv-soft.com,jalshamoviezhd.*,janjua.tv,jewelry.com.my,jkanime.*,johnwardflighttraining.com,kabarportal.com,keepv.id,keepvid.*,kiss-anime.*,kissanime.*,kissmanga.*,kstorymedia.com,kumascans.com,la123movies.org,leet365.cc,lespassionsdechinouk.com,libertestreamvf.*,linkshere.*,linksmore.*,live7v.com,livestreamtv.pk,lodynet.*,lookmovie.*,lookmovie186.*,lookmoviess.com,losmovies.*,manga4life.com,mangadna.com,mangahub.io,mangasco.com,mangceh.cc,masengwa.com,mcdlpit.com,mega-mkv.com,mega-p2p.net,megafilmeshd20.*,megashare-website.com,mettablog.com,mlbstream.*,momomesh.tv,motive213link.blogspot.com,motogpstream.*,movierulzhd.*,movies7.to,moviesbaba.*,moviescounter.*,mp3-gratis.it,mp3spy.cc,my1ink.*,myegy.*,myfernweh.com,naasongs.*,naasongsfree.*,nbastream.*,needrombd.com,nflstream.*,ngomik.net,nhlstream.*,nmovies.cc,novamovie.net,novelssites.com,oceanofmovies.*,onlinevideoconverter.*,oploverz.*,orangeink.pk,ostreaming.tv,pagalworld.*,pelismart.com,pelisstar.com,pirlotv.mx,playerfs.com,playtamil.*,plylive.*,primewire.*,projectfreetv.*,projectfreetv2.com,putlocker9.*,putlockers.*,querofilmehd.*,romfast.com,rugbystreams.*,sdmoviespoint.*,serijehaha.com,sharkfish.xyz,shortlinkto.*,simsdom.com,skidrow-games.com,soap2day.*,sportstreamtv.*,ssoap2day.*,stream.pkayprek.com,talaba.su,tamilyogis.*,tatabrada.tv,tenies-online.*,tennisstreams.*,thelinkbox.*,thesuperdownload.*,thingstomen.com,thripy.com,tlin.me,tvply.*,u123movies.com,ufcstream.*,ukmagazinesfree.com,uppit.com,urdubolo.pk,usagoals.*,vedbom.*,veryfastdownload.pw,vevioz.com,vidbeem.com,vidbm.com,vidcorn.to,vidembed.*,vidlo.us,vidsrc.*,vkmp3.*,wat32.tv,watchmovieshd.*,watchserieshd.*,watchseriesstream.com,wawacity.*,wifi4games.com,wildwap.*,wmoviesfree.*,xmovies8.*,xxxwebdlxxx.top,yeshd.net,yesmovies.*,yt1s.com,ytsaver.*,ziperto.com##+js(acs, JSON.parse, break;case $.) +! ##+js(acs, parseInt, break;case $.) +123movies-official.net,123movies.net,123movies4up.*,123moviesfree.*,123moviesme.*,123moviesready.org,4stream.*,5xmovies.*,720pstream.*,7hitmovies.*,9kmovies.*,9tsu.*,9xmovie.*,9xupload.*,ajkalerbarta.com,allosoccer.com,altadefinizione01.*,anavidz.com,anidl.org,anime-sanka.com,anime4up.*,animefreak.*,animesanka.*,animesup.*,apkmody.io,apkshrt.com,appsfree4u.com,asianhdplay.net,asianplay.*,asianwatch.net,atomohd.*,bakotv.com,bdmusic23.*,bengalisite.com,bhplay.me,bx-zone.com,canonprintersdrivers.com,cat-a-cat.net,ccnworldtech.com,ch-play.com,cheat.hax4you.net,cima100fm.com,clipconverter.cc,crystal-launcher.pl,distanta.net,dtmaga.com,elevationmap.net,eplayvid.*,exey.io,f1stream.*,fakazagods.com,fastilinks.*,fboxtv.com,fbstream.*,fightforthealliance.com,fileguru.net,filma1.*,filma24.*,filmy.*,filmyhit.*,flixtor.*,freeromsdownload.com,g3g.*,gameslay.net,gdplayer.*,gentlewasher.com,gofilmes.*,gogoplay1.com,gogoplay2.com,gomoviz.*,govid.*,hds-streaming-hd.com,hds-streaming.*,healthnewsreel.com,hentaizm.fun,hhdmovies.*,hikarinoakari.com,hilaryhahn.com,hindimovies.*,hothit.me,hotmasti.*,ilgeniodellostreaming.*,ilinks.in,imgspark.com,insurancebillpayment.net,intereseducation.com,iv-soft.com,jetanimes.*,jewelry.com.my,jockantv.com,johnwardflighttraining.com,joolinks.*,jpscan-vf.com,kabarportal.com,katlinks.*,katmoviehd4.com,kimoitv.com,kingdomfiles.com,kstorymedia.com,leet365.cc,lespassionsdechinouk.com,libertestreamvf.*,liflix.site,linksfire.*,linksly.co,livestreamtv.pk,lustholic.com,mangahere.today,manganatos.com,manhuascan.*,melodelaa.*,messitv.net,mkvcage.*,mkvpapa.*,mlbstream.*,mobdropro.com,modsfire.com,moonblinkwifi.com,moshahda.net,motive213.com,motogpstream.*,moviedekho.in,moviefreak.*,movies2k.*,moviescounnter.com,moviesdaweb.*,moviesland.*,moviesverse.*,moviewr.com,mp3-now.com,mp3fromyou.tube,mp3fusion.net,mp3juices.su,mp3yeni.org,mycima.*,myfernweh.com,nbastream.*,networklovers.com,neymartv.net,nflstream.*,ngomik.net,nhlstream.*,nkiri.com,novelroom.net,nullpk.com,ogario.*,okamimiost.com,okanime.*,orangeink.pk,paidnaija.com,pelismarthd.com,pelismartv.com,pelispoptv.com,pirate4all.com,plylive.*,plyvdo.*,poscitech.*,put-locker.com,putingfilm.com,putlockers.*,quiltfusion.com,rawkuma.com,redowlanalytics.com,roms-download.com,roms-hub.com,roms-telecharger.com,rugbystreams.*,s.to,serien.cam,serienstream.to,series9.*,serijehaha.com,sflix.pro,shadowrangers.*,shorterall.com,showbizbites.com,shrugemojis.com,southfreak.*,ssrmovies.*,stardima.*,stopstreamtv.net,streambee.to,streamsport.*,t7meel.*,talaba.su,tamilarasan.*,tamilfreemp3songs.*,tamilprint.*,tamilprinthd.*,tatabrada.tv,tcpermaculture.com,techmyntra.net,techsslash.com,tennisstreams.*,thelosmovies.com,thememypc.net,thevideome.com,thewatchseries.live,thripy.com,topflix.*,totallyfuzzy.net,traveldesearch.com,tubidy.*,tudotecno.com,turkish123.com,tvply.*,uctnew.com,ufcstream.*,up-load.io,uploadmx.com,uploadrar.*,uploads.mobi,uptobhai.*,uptoimage.com,upvid.*,urdubolo.pk,uwatchfree.*,vanime.*,vbox7-mp3.info,vf-film.net,vibehubs.com,vikistream.com,vipstand.se,viralitytoday.com,voiranime.stream,waploaded.com,warefree01.com,watch4hd.*,watchdoctorwhoonline.com,watchimpracticaljokers.com,watchmovie.*,watchomovies.*,watchtheofficetv.com,web.livecricket.is,webloadedmovie.com,whatshowto.com,wintub.com,world4ufree.*,world4ufree1.*,worldgreynews.com,wupfile.com,y-2mate.com,yomoviesnow.com,yoyofilmeys.*,yseries.tv,ytconverter.app,ytmp3cc.net,ytmp4.live,ytmp4converter.com,yts.*##+js(acs, parseInt, break;case $.) +! ##+js(aeld, , break;case $.) +0dramacool.net,0gomovie.*,0gomovies.*,185.53.88.104,185.53.88.204,185.53.88.15,123moviefree.*,1kmovies.*,1madrasdub.*,1primewire.*,2embed.*,2madrasdub.*,2umovies.*,4anime.*,9animetv.to,aagmaal.com,abysscdn.com,adblockplustape.*,ajkalerbarta.com,altadefinizione01.*,androidapks.biz,androidsite.net,animeonlinefree.org,animesite.net,animespank.com,aniworld.to,apkmody.io,appsfree4u.com,atomixhq.*,awafim.tv,bengalisite.com,brmovies.*,ch-play.com,cima4u.*,clickforhire.com,clicknupload.*,cloudy.pk,cmovies.*,computercrack.com,coolcast2.com,crackedsoftware.biz,crackfree.org,cricfree.*,crichd.*,cryptoblog24.info,cuatrolatastv.blogspot.com,cydiasources.net,decmelfot.xyz,dirproxy.com,dood.*,dopebox.to,downloadapk.info,downloadapps.info,downloadgames.info,downloadmusic.info,downloadsite.org,downloadwella.com,ebooksite.org,educationtips213.blogspot.com,egyup.live,embed.meomeo.pw,embed.scdn.to,emulatorsite.com,f1stream.*,fakedetail.com,faselhd.*,fbstream.*,fclecteur.com,filemoon.*,filepress.*,filmlinks4u.*,filmpertutti.*,filmyzilla.*,flexyhit.com,fmovies.*,freeflix.info,freemoviesu4.com,freeplayervideo.com,freesoccer.net,fseries.org,fzlink.*,gamefast.org,gamesite.info,gettapeads.com,gmanga.me,gocast123.me,gofilms4u.*,gogoanime.*,gomoviz.*,gooplay.net,gostreamon.net,harimanga.com,hdmoviefair.*,hdmovies4u.*,hdmovies50.*,hdmoviesfair.*,healthnewsreel.com,hexupload.net,hh3dhay.*,hinatasoul.com,hindilinks4u.*,hindisite.net,holymanga.net,hotmasti.*,hurawatch.*,hxfile.co,isosite.org,iv-soft.com,januflix.expert,jewelry.com.my,johnwardflighttraining.com,kabarportal.com,klmanga.*,klubsports.*,kstorymedia.com,la123movies.org,lespassionsdechinouk.com,libertestreamvf.*,lilymanga.net,linksdegrupos.com.br,linkz.wiki,livetvon.*,livestreamtv.pk,macsite.info,manga1000.*,manga1001.*,mangaraw.*,mangarawjp.*,mangasite.org,manhwa68.com,manhuascan.com,megamovies.org,mlbstream.*,moddroid.com,motogpstream.*,movi.pk,moviefree2.com,movierulz.*,movies123.*,movies-watch.com.pk,moviesden.*,moviesite.app,moviesonline.fm,moviesx.org,moviezaddiction.*,musicsite.biz,myfernweh.com,myviid.com,nazarickol.com,nbastream.*,netcine.*,nflstream.*,nhlstream.*,noob4cast.com,oko.sh,onlinewatchmoviespk.*,orangeink.pk,pahaplayers.click,patchsite.net,pctfenix.*,pctnew.*,pdfsite.net,pksmovies.*,play1002.com,player-cdn.com,plyjam.*,plylive.*,pogolinks.*,popcorntime.*,poscitech.*,productkeysite.com,projectfreetv.one,romsite.org,rugbystreams.*,rytmp3.io,send.cm,seriesite.net,seriezloaded.com.ng,serijehaha.com,sflix.*,shrugemojis.com,siteapk.net,siteflix.org,sitegames.net,sitekeys.net,sitepdf.com,sitesunblocked.*,sitetorrent.com,softwaresite.net,solarmovies.*,sportbar.live,sportcast.*,sportskart.*,sports-stream.*,ssyoutube.com,stardima.com,stream4free.live,streaming-french.*,streamers.*,streamingcommunity.*,superapk.org,supermovies.org,t20cup.*,tainio-mania.online,talaba.su,tamilguns.org,tatabrada.tv,techtrendmakers.com,tennisstreams.*,thememypc.net,thripy.com,torrentdosfilmes.*,toonanime.*,travelplanspro.com,tusfiles.com,tvonlinesports.com,tvply.*,ufcstream.*,ultramovies.org,uploadbank.com,uptomega.*,uqload.*,urdubolo.pk,vudeo.*,vidoo.*,vidspeeds.com,vipboxtv.*,viprow.*,warezsite.net,watchmovies2.com,watchsite.net,watchsouthpark.tv,web.livecricket.is,webseries.club,y2mate.com,yesmovies.*,yomovies.*,yomovies1.*,youapk.net,youtube4kdownloader.com,yt2mp3s.*,yts-subs.com##+js(aeld, , break;case $.) +! ##+js(acs, Math, break;case $.) +01234movies.*,1234movies.*,123gostream.*,123moviesgo.*,123moviestoday.net,1link.club,1primewire.com,1stkissmanga.*,1tamilmv.*,8-ball-magic.com,adcorto.*,adsh.cc,afilmyhouse.blogspot.com,aii.sh,akwam.*,animehay.tv,animeheaven.ru,arnaqueinternet.com,asianload.*,ate9ni.com,bdiptv.*,beammeup.com.au,bitlinks.pw,bollyshare.*,ccurl.net,ceesty.com,cinen9.*,citpekalongan.com,claimcrypto.cc,clkmein.com,comandotorrentshds.org,corneey.com,crazyblog.in,cuevana3.*,destyy.com,dogecoin.*,dramanice.*,earnload.*,eastream.net,ed-protect.org,f1stream.*,fakaza.com,fbstream.*,festyy.com,filmesonlinex.*,filmy4wap1.*,filmyone.com,freelitecoin.vip,freeload.*,fzmovies.*,game3rb.com,gdirect.*,gestyy.com,gogoanimes.*,gulf-up.com,hd44.com,hdfilme.*,hindimoviesonline.*,hostxy.com,iiyoutube.com,imagenesderopaparaperros.com,inextmovies.*,japscan.ws,linkskat.*,livesport24.net,mailnesia.com,mangaindo.web.id,mega4up.*,megaup.net,mkvhub.*,mlbstream.*,mlsbd.*,motogpstream.*,movies4me.*,moviesmon.*,moviesshub.*,moviessquad.com,moviesub.is,movizland.*,mozkra.com,mp3cristianos.net,mp3songsdownloadf.blogspot.com,naijahits.com,naijal.com,nbastream.*,nbch.com.ar,nflstream.*,nhlstream.*,nowmovies.*,ocnpj.com,openload.*,otomi-games.com,pctfenix.*,pctnew.*,phc.web.id,plusupload.*,pregledaj.net,primeflix.website,r2sa.net,racaty.*,readingbd.com,receitasoncaseiras.online,recetas.arrozconleche.info,revivelink.com,rojadirecta.*,rojadirectatv.*,romfast.com,rugbystreams.*,s2dfree.*,seriesflv.*,seriesly.*,seuseriado.*,sh.st,shavetape.*,shortpaid.com,stalkface.com,stream2watch.*,streamingworld.*,strtapeadblock.*,summarynetworks.com,supervideo.tv,tajpoint.com,techrecur.com,tennisstreams.*,theismailiusa.org,thekingavatar.com,thenetnaija.co,tny.so,ufcstream.*,upfiles.*,vdtgr.com,vedshar.com,vidcloud9.*,vidcloudpng.com,vidomo.xyz,vidsaver.net,wildwap.com,worldgirlsportal.com,xmovies.*,xsanime.com,ymovies.*,ymp4.download,youtubeai.com,youtubetoany.com,youwatch.*,ytanime.tv,zone-annuaire.*,zpaste.net,zplayer.live##+js(acs, Math, break;case $.) +! ##+js(acs, String.fromCharCode, /btoa|break/) +0123movies.*,2conv.com,anonymous-links.com,bdupload.*,dl-protect.*,dl-protect1.*,doctor-groups.com,egyanime.com,filmesonlinehd1.org,firstonetv.*,flvto.biz,goalup.live,gomovieshub.io,gplinks.co,hdmovieplus.*,hdss.*,hydracdn.*,kissanime.*,linkshorts.*,mangamanga.*,modapkfile.com,movieshub.*,movs4u.*,multifaucet.org,nbaup.live,o2tvseries.website,pewgame.com,q1-tdsge.com,readm.org,shortearn.*,shrlink.top,shugraithou.com,sports24.*,vexfile.com,vexmovies.*,vidlox.*,yesmovies123.me##+js(acs, String.fromCharCode, /btoa|break/) +! ##+js(aost, Math.random, /\st\.[a-zA-Z]*\s/) +filmypur.*,kmo.to,nuroflix.*,onifile.com,oxanime.com,pelis28.*,pelisplusgo.*,pelisplusxd.*,pewgame.com,piraproxy.app,repelisgoo.*,repelisgooo.*,repelisgt.*,repelisxd.*,severeporn.com,sexphimhd.net,theproxy.*,tvply.*,vidlox.*,voirseries.io,watchfree.*##+js(aost, Math.random, /\st\.[a-zA-Z]*\s/) +! ##+js(acs, globalThis, break;case) +10starhd.*,animeflv.net,anysex.com,asianclub.*,cheatermad.com,downloadpirate.com,drop.download,dx-tv.com,embed.casa,exee.app,fapeza.com,fileditchfiles.me,fileone.tv,films5k.com,gcloud.live,hdss.*,hdtoday.cc,hentai2read.com,hentaihd.*,imx.to,javstream.top,kaa.lt,luluvdo.com,mavplay.*,moviesflix.*,muchohentai.com,ouo.*,pelisflix20.*,projectfreetv.*,qdembed.com,safefileku.com,sharelink-1.site,sieutamphim.org,stbemuiptv.com,steamverde.net,streamvid.net,ujav.me,videobb.*,voirseries.*##+js(acs, globalThis, break;case) +! ##+js(rmnt, script, globalThis;break;case) +kickassanime.*##+js(rmnt, script, globalThis;break;case) +! ##+js(acs, JSON.parse, Promise) +adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,komikcast.*,mavanimes.*,stape.*,streamadblockplus.*,streamta.*,streamtape.*,streamtapeadblock.*,strtape.*,strtapeadblock.*,strtpe.*,tapepops.com,vanime.*##+js(acs, JSON.parse, Promise) +! ##+js(acs, navigator, break;case $.) +123moviesonline.*,2embed.*,adblockeronstape.*,brbushare.*,cuatrolatastv.blogspot.com,direct-cloud.me,driveup.in,filmeseries.*,goved.org,hdmovies2.org,hdmovies50.*,seriezloaded.com.ng,skymovieshd.*,slink.bid,stapewithadblock.*,upbam.org,uplinkto.*,uppit.com,vadbam.com,vadbom.com,vedbam.*,vidbam.org,vidshar.org##+js(acs, navigator, break;case $.) +! ##+js(aost, Object, /(?=^(?!.*(https)))/) +songspk.*##+js(aost, Object, /(?=^(?!.*(https)))/) +! ##+js(acs, document.documentElement, break;case $.) including FingerprintJS variant +0123movie.*,10starhub.com,11xmovies.*,123chill.*,123mkv.*,123movies-free.*,123movies-org.*,123movies.*,123moviesfree.*,123movieshub.*,123movieweb.*,190.115.18.20,1cloudfile.com,1direct-cloud.*,1hd.to,1movieshd.*,1qwebplay.xyz,1stream.*,1todaypk.*,1vid1shar.space,2kmovie.*,3kmovies.*,4movierulz.*,4movierulz1.*,5movies.*,5moviess.com,720pflix.*,7moviesrulz.*,7starhd.*,7starmv.com,9anime.pe,9goals.live,9kmovies.*,9xflix.*,a8ix.*,adblocktape.*,adslink.pw,aflizmovies.com,ak4eg.*,algodaodocescan.com.br,aliezstream.pro,amsmotoresllc.com,anihdplay.com,animeonline.ninja,animesultra.net,animixplay.*,aniwatch.*,antenasports.ru,antennasports.ru,arbsd.*,asianhdplay.*,atishmkv.*,b4ucast.com,backfirstwo.site,bdmusic28.*,blogesque.net,bolly2tolly.*,bollyflix.*,bowfile.com,buffstreams.*,capo5play.com,cinemabaz.com,claplivehdplay.ru,clickndownload.*,comedyshow.to,cool-etv.net,couchtuner.*,crackstreamshd.click,crvsport.ru,d0000d.com,d000d.com,d0o0d.com,daddylive1.*,daddylivehd.*,darkibox.com,defienietlynotme.com,direct-cloud.*,divicast.com,divxfilmeonline.net,dlhd.*,do0od.com,dood.*,doods.pro,dooood.*,downloadhub.*,ds2play.com,ds2video.com,dwlinks.buzz,egybest.*,embedme.*,embedpk.net,embedplayer.*,embedstream.me,embtaku.*,emovies.*,encurtandourl.com,engvideo.net,esportivos.*,exee.app,explorosity.net,extremosports.club,f123movies.com,faselhd-watch.*,faselhd.*,faselhdwatch.*,filemooon.*,film4e.com,filmeserialeonline.org,filmy-hit.*,filmygod.*,filmyhitt.com.in,finfang.*,fiveyardlab.com,flashsports.org,flixhq.*,flostreams.xyz,flybid.net,fmembed.cc,fmoonembed.*,fmoonembed.pro,fmoviesfree.*,focus4ca.com,footballandress.club,footybite.to,footyhunter.lol,forex-trnd.com,fr.streamon-sport.ru,freemovies.*,freemoviesfull.com,french-streams.cc,fsl-stream.lu,fullfreeimage.com,futemax.zip,game-2u.com,gamovideo.com,gdrivelatino.net,gdrivelatinohd.net,gdtot.*,globalstreams.xyz,gocast.pro,gocast2.com,godzcast.com,gogohd.*,gokutv.*,gomovies.*,hamburgerinsult.com,harimanga.com,hdfriday.*,hdhub4u.*,hdmoviehub.*,hdmovies23.*,hdtoday.tv,hellnaw.*,hexload.com,hihihaha1.xyz,hitsports.pro,hollymoviehd.*,hurawatchz.to,iflixmovies.*,imagelovers.com,instalker.org,isaidub6.net,itopmusic.com,itopmusics.com,japscan.lol,jockantv.com,jpopsingles.eu,kaido.to,kerapoxy.*,kickassanime.*,kinoger.*,klubsports.*,koora.vip,kunmanga.com,kuttymovies1.com,ligaset.com,likemanga.io,ling-online.*,linkedmoviehub.top,livestreames.us,locatedinfain.com,lrepacks.net,mangaraw.*,mangareader.to,mcrypto.club,medeberiyas.com,mega4upload.com,megadb.net,megafilmeshd50.com,megaupto.com,mhdsports.*,mhdsportstv.*,mhdtvsports.*,mkvcinemas.*,mkvmoviespoint.autos,mlwbd.*,mmastreams.me,moonembed.*,moviebaaz.*,moviekids.tv,movielinkhub.xyz,movieplay.*,movies2k.*,movies4u.*,movies4u3.*,moviesda4.*,movieshd.watch,moviesjoy.*,moviesrulz.*,moviestowatch.tv,moviesverse.*,movieuniverse.*,moviezwap.*,mp3fusion.net,mp4upload.com,mreader.co,multicanais.*,mydownloadtube.*,myflixertv.to,myflixerz.*,mylivestream.pro,naijachoice.com.ng,naijanowell.com,netfilmes.org,netizensbuzz.com,nflstreams.me,niadd.com,nizarstream.com,noblocktape.*,nowmaxtv.com,nowsports.me,nowsportv.nl,odiasia.sbs,ogomovies.*,oii.io,onepiecepower.com,optimizepics.com,pahe.plus,pesktop.com,pkspeed.net,playgo1.cc,poophq.com,poscitechs.*,project-free-tv.*,projectfreetv.*,putlocker.*,radamel.icu,rahim-soft.com,reddit-soccerstreams.com,repack-games.com,rgeyyddl.*,ronaldo7.pro,roystream.com,s.to,s3taku.com,sbnmp.bar,send.cm,serienstream.*,series2watch.*,seriesonline.*,shadowrangers.live,shaheed4u.*,share.filesh.site,sharedisk.*,shavetape.*,shinden.pl,shoot-yalla.live,shortenlinks.top,smoner.com,soap2day-online.com,soccerstream100.to,sportsbuff.stream,sportshub.*,ssoap2day.*,stfly.*,strcloud.*,streamadblocker.*,streamcloud.*,streamhd247.*,streamhub.*,streamnoads.com,streamonsport99.*,streamtape.*,streamvid.net,strtapewithadblock.*,sulleiman.com,swatchseries.*,swiftload.io,tamilprint30.*,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapeblocker.com,tapelovesads.org,tapenoads.com,tapewithadblock.org,techgeek.digital,temp.modpro.co,tennisonline.me,thenextplanet1.*,tii.la,tnhitsda.net,todaypk.*,topcartoons.tv,torovalley.net,totalsportek.*,trendytalker.com,tvfutbol.info,tvpclive.com,up-4ever.net,upbaam.com,uploadhub.*,uproxy.*,uptomega.net,usgate.xyz,uupbom.com,vadbam.net,vavada5com.com,vdbtm.shop,veev.to,vegamovie.*,vid-guard.com,vidcloud9.*,videoplayer.*,vido.*,vidspeed.cc,vidsrc.*,vidstreams.net,vidtube.one,viidshar.com,vikistream.com,vixcloud.co,volokit2.com,watchcartoononline.*,watchmovierulz.*,watchmovies.*,watchomovies.*,watchonlinemoviespk.*,watchop.live,watchseries1.*,wecast.to,worldstreams.click,xoxocomic.com,xsportbox.com,yesmovies4u.*,yu2be.com,z12z0vla.*,zamundatv.com,zoechip.cc,zvision.link##+js(acs, document.documentElement, break;case $.) +! ##+js(acs, EventTarget.prototype.addEventListener, delete window) +0vg9r.com,398fitus.com,10hitmovies.com,11xmovies.*,1flix.to,1mov.lol,26efp.com,2024tv.ru,3xyaoi.com,720pflix.*,7hitmovies.*,7starhd.*,9anime.vip,9n8o.com,advertape.net,advertisertape.com,afilmywapi.biz,all3do.com,alldownplay.xyz,alphatron.tv,andyday.*,anime3rb.com,animeflv.*,animenexus.in,animeunity.*,animeyabu.org,animez.org,anisaga.org,anitube.*,aniwatchtv.to,anroll.net,aparttent.com,arc018.to,asd.*,ask4movie.*,ate60vs7zcjhsjo5qgv8.com,avjosa.com,bigwarp.*,bollydrive.*,boxingstream.me,braflix.tube,caq21harderv991gpluralplay.xyz,cardboardtranslation.com,cataz.stream,clickndownload.*,cloudnestra.com,cloudy.pk,crackstreamsfree.com,cuevana.pro,curiosidadtop.com,daddylivestream.com,databasegdriveplayer.*,demonicscans.org,desicinema.org,desicinemas.pk,dlolcast.pro,do7go.com,dooodster.com,doods.to,doply.net,dorawatch.net,dotflix.*,drakorkita73.kita.rest,dramanice.video,driveup.space,drop.download,dudefilms.*,ebook-hunter.org,edgedeliverynetwork.com,embasic.pro,embedcanais.com,embedhd.org,embedtv.net,embdproxy.xyz,engstreams.shop,enorme.tv,eternalmangas.org,f75s.com,fastdokan.*,fastdownload.top,file4go.*,filmyworlds.*,filmyzilla5.com,flixhd.cc,flostreams.xyz,fmoviesto.*,fifojik.*,footballstreams.lol,footybite.*,foreverquote.xyz,frembed.*,french-stream.*,freshwaterdell.com,fsportshd.net,futemais.net,fztvseries.ng,gdflix.*,gdriveplayer.*,gdrivelatinohd.net,gdtot.*,gidplayer.online,giize.com,goku.sx,gomovies.pk,hdfilme.*,hdhub4u.*,hakunamatata5.org,hdtodayz.to,hexload.com,hianime.*,hoca2.com,hoca6.com,hoca4u.xyz,hollymoviehd.cc,hunterscomics.com,ico3c.com,instalker.org,jojolandsmanga.com,joyousplay.xyz,jpopsingles.eu,jxoplay.xyz,kaa.mx,kingstreamz.site,lato.sx,likemanga.ink,linkmake.in,linksheild.site,lotusgamehd.xyz,lrepacks.net,luckypatchers.com,lulu.st,lulustream.*,luluvdo.com,luluvdoo.com,luluvid.com,m1xdrop.*,mapple.tv,maxstream.*,mcloud.guru,medeberiya.site,mega4upload.net,messitv.org,mgread.io,mh.baxoi.buzz,mlbb.space,mlfbd.*,movieku.ink,movielair.cc,movielinkbdofficial.com,movies123.pk,movies4u.*,moviesapi.to,movieshdwatch.to,movieshubweb.com,moviesjoy.*,moviesnation.*,movies2watch.*,moviezwap.*,myflixerz.to,myvidplay.com,mywatchseries.*,nbabite.to,nexdrive.*,neymartv.net,nflbite.to,nmac.to,ogoplayer.xyz,olympustaff.com,omuzaani.me,onlinekosh.com,overtakefans.com,pahe.*,pelisflix2.*,pkembed.*,player.smashy.stream,playerflixapi.com,pondit.xyz,poophq.com,popcornmovies.org,poscitechs.lol,pressplay.cam,pressplay.top,putlocker.*,reddit-streams.online,reliabletv.me,reviewrate.net,riedberg.tv,ripplestream4u.*,rojadirectaenhd.net,rubyvid.com,s2watch.link,safefileku.com,savefiles.com,seeflix.to,sflix.*,shazysport.pro,shopr.tv,showflix.*,skysetx.*,snowmtl.ru,soap2day.*,souq-design.com,spcdn.xyz,sportingsurge.com,sportsgames.today,sportshub.stream,sportsloverz.xyz,spotifylists.com,storynavigation.com,strcloud.in,streamblasters.*,streambtw.com,streameast.*,streamed.su,streamfree.to,streaming-community.*,streamingcommunityz.*,streamingunity.to,streamlivetv.site,streamlord.com,streamruby.com,streamta.site,streamtape.*,streamup.ws,strmup.to,strmup.ws,subtitlecat.com,swfr.tv,swiftload.io,tamilprint29.*,tamilprint30.*,tamilprint31.*,tapepops.com,telepisodes.org,tfp.is,thedaddy.*,theflixertv.to,thehesgoal.com,tinyzonetv.cc,totalsportek.*,tous-sports.ru,tutvlive.ru,tvableon.me,tvsportslive.fr,twstalker.com,up-4ever.net,updown.cam,ups2up.fun,uptomega.net,usgate.xyz,ustream.to,uqload.*,vcloud.lol,vecloud.eu,veev.to,vegamovies4u.*,veplay.top,vidara.so,vidara.to,vide0.net,video-seed.xyz,vidora.stream,vidply.com,vidsrc.*,vidtube.one,vidzy.org,viduro.top,vinovo.to,vipleague.*,viprow.*,vixcloud.co,vodkapr3mium.com,volokit2.com,vvide0.com,watch.ug,watch32.sx,watchadsontape.com,watchf1full.com,watchonlinemovie.pk,watchonlinemovies.vercel.app,watchseries.*,watchseries8.to,watchug.to,way2movies.*,wdpglobal.com,weakstreams.online,wearehunger.site,weneverbeenfree.com,wmovies.xyz,y2mate.*,yomovies.*,yoxplay.xyz,ythd.org,yuppow.com,zjet7.com,zorroplay.xyz##+js(acs, EventTarget.prototype.addEventListener, delete window) +lk21official.*>>,noxx.to>>##+js(acs, EventTarget.prototype.addEventListener, delete window) +! ##^script:has-text('{delete window[') +!#if cap_html_filtering +11xmovies.*,2024tv.ru,ask4movie.*,avjosa.com,beinmatch.fit,bigwarp.cc,bigwarp.io,cinego.tv,clickndownload.*,clicknupload.*,crackstreamsfree.com,cricstream.me,dlolcast.pro,dokoembed.pw,dooodster.com,embasic.pro,engstreams.shop,ev01.to,fojik.*,footballstreams.lol,footybite.to,foreverquote.xyz,fstream365.com,futemais.net,fzmovies.*,gdtot.*,gostream.to,hdstream.one,hoca2.com,hoca4u.xyz,kingstreamz.site,linksheild.site,linkz.*,lulustream.com,luluvdo.com,messitv.org,mostream.us,moviedokan.*,movies4u.*,myflixer.*,nbabite.to,nexdrive.*,neymartv.net,nflbite.to,oii.la,pahe.*,pkembed.*,poscitechs.lol,prmovies.*,readcomiconline.li,reddit-streams.online,ripplestream4u.*,rojadirectaenhd.net,rubyvid.com,s2watch.link,s3embtaku.pro,sflix.to,sflix2.to,shazysport.pro,showflix.*,sportshub.stream,sportsloverz.xyz,streamblasters.*,streameast.*,streamed.su,streamingcommunity.*,streamlivetv.site,streamta.site,streamtpmedia.com,strikeout.*,thehesgoal.com,topcinema.cam,totalsportek.*,uqload.*,usgate.xyz,vidnest.io,vidnest.live,vixcloud.co,weakstreams.online,zonatmo.com##^script:has-text('{delete window[') +!#else +11xmovies.*,beinmatch.fit,cinego.tv,clicknupload.*,dokoembed.pw,ev01.to,fojik.*,fstream365.com,fzmovies.*,linkz.*,lulustream.com,minoplres.xyz,mostream.us,moviedokan.*,myflixer.*,oii.la,pahe.*,prmovies.*,readcomiconline.li,s3embtaku.pro,sflix2.to,sportshub.stream,streamblasters.*,streamingcommunity.*,streamtpmedia.com,strikeout.*,topcinema.cam,vidnest.io,vidnest.live,webxzplay.cfd,zonatmo.com##+js(rmnt, script, '{delete window[') +!#endif +! ##+js(acs, EventTarget.prototype.addEventListener, key in document) +filecrypt.*,mediacast.click,playcast.click##+js(acs, EventTarget.prototype.addEventListener, key in document) +! ##+js(rmnt, script, InstallTrigger) +141jav.com##+js(rmnt, script, InstallTrigger) +pahe.*##html > iframe[style^="display:"]:not([src]):remove() +atlaq.com,bolly4umovies.*,moalm-qudwa.blogspot.com##+js(aopr, zfgformats) +123movieshub.*,cima-club.*,flixhq.*,hindilinks4u.*,t7meel.*,vidstream.pro##+js(aopr, zfgstorage) +01fmovies.com,123moviesfun.is,bmovies.*,bolly4umovies.*,putlocker.*##+js(acs, Math, XMLHttpRequest) +egydead.*##+js(acs, Promise, JSON.parse) +arabseed.*,liiivideo.com,seeeed.*##+js(acs, Promise, break;case $.) +adblockeronstreamtape.*,bowfile.com,cloudvideo.tv,cloudvideotv.*,embedstream.me,hiphopa.net,noblocktape.*,send.cm,torrentmac.net,tusfiles.com,ziperto.com##+js(acs, JSON, break;case) +coinfaucet.io##+js(acs, decodeURI, zfgloadedpopup) +bitfly.io,pelisplus.*,pelisplus2.*##+js(aost, Math.random, /\st\.[a-zA-Z]*\sinlineScript/) +shahiid-anime.net##+js(aost, Object, /(?=^(?!.*(https)))/) +up4stream.com,ups2up.fun##+js(acs, Math, zfgcodeloaded) +||filmex.to/api/antiadblock +/^https:\/\/supervideo\.cc/[0-9]+\.js\b/$script,to=supervideo.cc +!#if env_firefox +movielair.cc##+js(prevent-innerHTML, , delete window) +!#endif +||flixhq.*/loadme/ +file4go.net##+js(no-xhr-if, outbrain) +||omegatoki.com^$all +vidsrc.cc#@#+js(acs, EventTarget.prototype.addEventListener, delete window) +||vidsrc.cc/saas/js/script.all.js +||mostream.us/popuv.js^ +/assets/jquery/css.js^$script,1p,strict1p +nekopoicare.*>>##+js(acs, EventTarget.prototype.addEventListener, delete window) +/scripts/monetag-special.js +! watcheries.bar ads +||mappletv.uk/bundle-prod.js$script +||mapple.uk/bundle-prod.js$script +||r2.dev^$script,domain=summerhikarudied.com +embedtv.best##+js(rmnt, script, delete window) +!embedtv.best##[target][href] +divicast.watch>>,~disqus.com,~0123movie.space##+js(trusted-json-edit-fetch-response, .ads_mode="0", propsToMatch, /embed/settings) +divicast.watch>>,~disqus.com,~0123movie.space##+js(trusted-json-edit-fetch-response, .ads_mode_dl="0", propsToMatch, /embed/settings) +divicast.watch>>,~disqus.com,~0123movie.space##+js(trusted-json-edit-fetch-response, $+={"ads_suppressed":true}, propsToMatch, /embed/settings) +! pp_blob +||filmovi.ws^$csp=script-src * 'unsafe-inline' +! pp server/monetag +!#if cap_ipaddress +||com/|$xhr,3p,method=head,ipaddress=/^139\.45\.19[5-7]\./ +||net/|$xhr,3p,method=head,ipaddress=/^139\.45\.19[5-7]\./ +||xyz/|$xhr,3p,method=head,ipaddress=/^139\.45\.19[5-7]\./ +!#endif +/^https?:\/\/[a-z]{8,15}\.com\/$/$xhr,3p,to=com,method=head,header=access-control-expose-headers:/X-DirectionPartner-Id/ +/^https?:\/\/[a-z]{8,15}\.net\/$/$xhr,3p,to=net,method=head,header=access-control-expose-headers:/X-DirectionPartner-Id/ +/^https?:\/\/[a-z]{8,15}\.xyz\/$/$xhr,3p,to=xyz,method=head,header=access-control-expose-headers:/X-DirectionPartner-Id/ +/^https?:\/\/[a-z0-9]{5,15}\.[a-z]{2,3}\/5\/\d{6,7}(?:\?_=\d+|\/\??)?$/$script,xhr,3p +/^https?:\/\/[-0-9a-z]{5,15}\.(?:com|net)\/400\/\d{7,8}(?:\?v=\d+)?$/$script,3p,to=com|net +/^https?:\/\/[-0-9a-z]{5,15}\.(?:com|net)\/401\/\d{7,8}(?:\?v=\d+)?$/$script,3p,to=com|net +/^https?:\/\/[-a-z]{8,15}\.(?:com|net)\/500\/\d{7}\?/$xhr,3p,to=com|net +/^https?:\/\/[a-z0-9]{5,15}\.com\/vignette\.min\.js$/$script,xhr,3p,match-case,to=com,redirect=noopjs +/^https?:\/\/[a-z0-9]{5,15}\.(?:com|net)\/tag\.min\.js$/$script,xhr,3p,match-case,to=com|net,redirect=noopjs +!#if env_safari +/^https?:\/\/[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?\.com\/vignette\.min\.js$/$script,xhr,3p,match-case +/^https?:\/\/[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?\.com\/tag\.min\.js$/$script,xhr,3p,match-case +/^https?:\/\/[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?\.net\/tag\.min\.js$/$script,xhr,3p,match-case +!#endif +||dwlv.xyz^ +||dwlv.xyz^$popup +||go.bundlebyte.net^ +||leewibaijoa.com^$doc,popup +||nalroustaucmoux.net^ +||phoobsoo.net^ +||riqhisfus.com^ +||sefeethameel.com^ +||smahxdfxxdc.com^ +||staukaptaicm.net^ +||wretchedclearance.com^$all +?oo=1^$xhr,3p +!!! other filters for pp +! wildcards and domains +!#if env_safari +||com/|$xhr,3p,domain=398fitus.com|andyday.pe|anime3rb.com|animeflv.net|animez.org|bflix.sh|capo5play.com|cardboardtranslation.com|cloudnestra.com|curiosidadtop.com|dlhd.click|dokoembed.pw|dorawatch.net|ebook-hunter.org|embedcanais.com|embedhd.org|embedtv.net|eternalmangas.org|f16px.com|familypornhd.com|fbstreams.pm|fmoviesto.fi|fojik.com|freemoviesfull.com|futemais.net|giize.com|hoca6.com|ico3c.com|instalker.org|jojolandsmanga.com|instalker.org|kaa.mx|luckypatchers.com|luluvdoo.com|mgread.io|mlbb.space|olympustaff.com|overtakefans.com|playerflixapi.com|reviewrate.net|rivestream.org|souq-design.com|spotifylists.com|streamlord.com|summerhikarudied.com|telepisodes.org|tfp.is|tutvlive.ru|twstalker.com|up-4ever.net|ups2up.fun|vecloud.eu|vipbox.lc|watchf1full.com|webxzplay.cfd|weneverbeenfree.com|xoxocomic.com|yuppow.com +||net/|$xhr,3p,domain=398fitus.com|andyday.pe|anime3rb.com|animeflv.net|animez.org|bflix.sh|capo5play.com|cardboardtranslation.com|cloudnestra.com|curiosidadtop.com|dlhd.click|dokoembed.pw|dorawatch.net|ebook-hunter.org|embedcanais.com|embedhd.org|embedtv.net|eternalmangas.org|f16px.com|familypornhd.com|fbstreams.pm|fmoviesto.fi|fojik.com|freemoviesfull.com|futemais.net|giize.com|hoca6.com|ico3c.com|instalker.org|jojolandsmanga.com|instalker.org|kaa.mx|luckypatchers.com|luluvdoo.com|mgread.io|mlbb.space|olympustaff.com|overtakefans.com|playerflixapi.com|reviewrate.net|rivestream.org|souq-design.com|spotifylists.com|streamlord.com|summerhikarudied.com|telepisodes.org|tfp.is|tutvlive.ru|twstalker.com|up-4ever.net|ups2up.fun|vecloud.eu|vipbox.lc|watchf1full.com|webxzplay.cfd|weneverbeenfree.com|xoxocomic.com|yuppow.com +||xyz/|$xhr,3p,domain=398fitus.com|andyday.pe|anime3rb.com|animeflv.net|animez.org|bflix.sh|capo5play.com|cardboardtranslation.com|cloudnestra.com|curiosidadtop.com|dlhd.click|dokoembed.pw|dorawatch.net|ebook-hunter.org|embedcanais.com|embedhd.org|embedtv.net|eternalmangas.org|f16px.com|familypornhd.com|fbstreams.pm|fmoviesto.fi|fojik.com|freemoviesfull.com|futemais.net|giize.com|hoca6.com|ico3c.com|instalker.org|jojolandsmanga.com|instalker.org|kaa.mx|luckypatchers.com|luluvdoo.com|mgread.io|mlbb.space|olympustaff.com|overtakefans.com|playerflixapi.com|reviewrate.net|rivestream.org|souq-design.com|spotifylists.com|streamlord.com|summerhikarudied.com|telepisodes.org|tfp.is|tutvlive.ru|twstalker.com|up-4ever.net|ups2up.fun|vecloud.eu|vipbox.lc|watchf1full.com|webxzplay.cfd|weneverbeenfree.com|xoxocomic.com|yuppow.com +!#else +||com/|$xhr,3p,method=head,domain=andyday.*|animeunity.*|asd.*|bflix.*|dlhd.*|fmoviesto.*|fojik.*|hianime.*|moviesjoy.*|mywatchseries.*|sportshub.*|streaming-community.*|streamingcommunityz.*|vipbox.*|way2movies.*|398fitus.com|andyday.pe|anime3rb.com|animeflv.net|animez.org|bflix.sh|capo5play.com|cardboardtranslation.com|cloudnestra.com|curiosidadtop.com|dlhd.click|dokoembed.pw|dorawatch.net|ebook-hunter.org|embedcanais.com|embedhd.org|embedtv.net|eternalmangas.org|f16px.com|familypornhd.com|fbstreams.pm|fmoviesto.fi|fojik.com|freemoviesfull.com|futemais.net|giize.com|hoca6.com|ico3c.com|instalker.org|jojolandsmanga.com|instalker.org|kaa.mx|luckypatchers.com|luluvdoo.com|mgread.io|mlbb.space|olympustaff.com|overtakefans.com|playerflixapi.com|reviewrate.net|rivestream.org|souq-design.com|spotifylists.com|streamlord.com|summerhikarudied.com|telepisodes.org|tfp.is|tutvlive.ru|twstalker.com|up-4ever.net|ups2up.fun|vecloud.eu|vipbox.lc|watchf1full.com|webxzplay.cfd|weneverbeenfree.com|xoxocomic.com|yuppow.com +||net/|$xhr,3p,method=head,domain=andyday.*|animeunity.*|asd.*|bflix.*|dlhd.*|fmoviesto.*|fojik.*|hianime.*|moviesjoy.*|mywatchseries.*|sportshub.*|streaming-community.*|streamingcommunityz.*|vipbox.*|way2movies.*|398fitus.com|andyday.pe|anime3rb.com|animeflv.net|animez.org|bflix.sh|capo5play.com|cardboardtranslation.com|cloudnestra.com|curiosidadtop.com|dlhd.click|dokoembed.pw|dorawatch.net|ebook-hunter.org|embedcanais.com|embedhd.org|embedtv.net|eternalmangas.org|f16px.com|familypornhd.com|fbstreams.pm|fmoviesto.fi|fojik.com|freemoviesfull.com|futemais.net|giize.com|hoca6.com|ico3c.com|instalker.org|jojolandsmanga.com|instalker.org|kaa.mx|luckypatchers.com|luluvdoo.com|mgread.io|mlbb.space|olympustaff.com|overtakefans.com|playerflixapi.com|reviewrate.net|rivestream.org|souq-design.com|spotifylists.com|streamlord.com|summerhikarudied.com|telepisodes.org|tfp.is|tutvlive.ru|twstalker.com|up-4ever.net|ups2up.fun|vecloud.eu|vipbox.lc|watchf1full.com|webxzplay.cfd|weneverbeenfree.com|xoxocomic.com|yuppow.com +||xyz/|$xhr,3p,method=head,domain=andyday.*|animeunity.*|asd.*|bflix.*|dlhd.*|fojik.*|fmoviesto.*|hianime.*|moviesjoy.*|mywatchseries.*|sportshub.*|streaming-community.*|streamingcommunityz.*|vipbox.*|way2movies.*|398fitus.com|andyday.pe|anime3rb.com|animeflv.net|animez.org|bflix.sh|capo5play.com|cardboardtranslation.com|cloudnestra.com|curiosidadtop.com|dlhd.click|dokoembed.pw|dorawatch.net|ebook-hunter.org|embedcanais.com|embedhd.org|embedtv.net|eternalmangas.org|f16px.com|familypornhd.com|fbstreams.pm|fmoviesto.fi|fojik.com|freemoviesfull.com|futemais.net|giize.com|hoca6.com|ico3c.com|instalker.org|jojolandsmanga.com|instalker.org|kaa.mx|luckypatchers.com|luluvdoo.com|mgread.io|mlbb.space|olympustaff.com|overtakefans.com|playerflixapi.com|reviewrate.net|rivestream.org|souq-design.com|spotifylists.com|streamlord.com|summerhikarudied.com|telepisodes.org|tfp.is|tutvlive.ru|twstalker.com|up-4ever.net|ups2up.fun|vecloud.eu|vipbox.lc|watchf1full.com|webxzplay.cfd|weneverbeenfree.com|xoxocomic.com|yuppow.com +!#endif +! TLDs +!#if env_safari +/^https?:\/\/[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.com\/$/$xhr,3p,from=best|blog|buzz|cam|cc|click|cyou|dad|download|gg|homes|in|info|ink|life|link|live|lol|me|ng|nz|one|pics|pk|pm|pro|rest|sbs|sh|shop|site|so|soccer|stream|sv|sx|to|today|top|tv|tube|ug|vip|watch|ws|xyz|~edu.in|~edu.me|~edu.ng|~edu.nz|~edu.pk|~edu.pm|~edu.so|~edu.sv|~edu.ug|~edu.ws|~gov.gg|~gov.in|~gov.me|~gov.ng|~gov.nz|~gov.pk|~gov.sh|~gov.so|~gov.sx|~gov.to|~gov.tv|~gov.ws|~proton.me|~twitch.tv +/^https?:\/\/[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.net\/$/$xhr,3p,from=best|blog|buzz|cam|cc|click|cyou|dad|download|gg|homes|in|info|ink|life|link|live|lol|me|ng|nz|one|pics|pk|pm|pro|rest|sbs|sh|shop|site|so|soccer|stream|sv|sx|to|today|top|tv|tube|ug|vip|watch|ws|xyz|~edu.in|~edu.me|~edu.ng|~edu.nz|~edu.pk|~edu.pm|~edu.so|~edu.sv|~edu.ug|~edu.ws|~gov.gg|~gov.in|~gov.me|~gov.ng|~gov.nz|~gov.pk|~gov.sh|~gov.so|~gov.sx|~gov.to|~gov.tv|~gov.ws|~proton.me|~twitch.tv +/^https?:\/\/[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.xyz\/$/$xhr,3p,from=best|blog|buzz|cam|cc|click|cyou|dad|download|gg|homes|in|info|ink|life|link|live|lol|me|ng|nz|one|pics|pk|pm|pro|rest|sbs|sh|shop|site|so|soccer|stream|sv|sx|to|today|top|tv|tube|ug|vip|watch|ws|xyz|~edu.in|~edu.me|~edu.ng|~edu.nz|~edu.pk|~edu.pm|~edu.so|~edu.sv|~edu.ug|~edu.ws|~gov.gg|~gov.in|~gov.me|~gov.ng|~gov.nz|~gov.pk|~gov.sh|~gov.so|~gov.sx|~gov.to|~gov.tv|~gov.ws|~proton.me|~twitch.tv +!#else +/^https?:\/\/[a-z]{8,15}\.com\/$/$xhr,3p,method=head,to=com,from=best|blog|buzz|cam|cc|click|cyou|dad|download|gg|homes|in|info|ink|life|link|live|lol|me|ng|nz|one|pics|pk|pm|pro|rest|sbs|sh|shop|site|so|soccer|stream|sv|sx|to|today|top|tv|tube|ug|vip|watch|ws|xyz|~edu.in|~edu.me|~edu.ng|~edu.nz|~edu.pk|~edu.pm|~edu.so|~edu.sv|~edu.ug|~edu.ws|~gov.gg|~gov.in|~gov.me|~gov.ng|~gov.nz|~gov.pk|~gov.sh|~gov.so|~gov.sx|~gov.to|~gov.tv|~gov.ws|~proton.me|~twitch.tv +/^https?:\/\/[a-z]{8,15}\.net\/$/$xhr,3p,method=head,to=net,from=best|blog|buzz|cam|cc|click|cyou|dad|download|gg|homes|in|info|ink|life|link|live|lol|me|ng|nz|one|pics|pk|pm|pro|rest|sbs|sh|shop|site|so|soccer|stream|sv|sx|to|today|top|tv|tube|ug|vip|watch|ws|xyz|~edu.in|~edu.me|~edu.ng|~edu.nz|~edu.pk|~edu.pm|~edu.so|~edu.sv|~edu.ug|~edu.ws|~gov.gg|~gov.in|~gov.me|~gov.ng|~gov.nz|~gov.pk|~gov.sh|~gov.so|~gov.sx|~gov.to|~gov.tv|~gov.ws|~proton.me|~twitch.tv +/^https?:\/\/[a-z]{8,15}\.xyz\/$/$xhr,3p,method=head,to=xyz,from=best|blog|buzz|cam|cc|click|cyou|dad|download|gg|homes|in|info|ink|life|link|live|lol|me|ng|nz|one|pics|pk|pm|pro|rest|sbs|sh|shop|site|so|soccer|stream|sv|sx|to|today|top|tv|tube|ug|vip|watch|ws|xyz|~edu.in|~edu.me|~edu.ng|~edu.nz|~edu.pk|~edu.pm|~edu.so|~edu.sv|~edu.ug|~edu.ws|~gov.gg|~gov.in|~gov.me|~gov.ng|~gov.nz|~gov.pk|~gov.sh|~gov.so|~gov.sx|~gov.to|~gov.tv|~gov.ws|~proton.me|~twitch.tv +!#endif +filmpertutti.*##.ads +filmpertutti.*##.no_pop +moviespapa.*##+js(aost, XMLHttpRequest, /inlineScript|stackDepth:1/) +/popunder.js$domain=linkbox.to +*$3p,denyallow=bootstrapcdn.com|cloudflare.com|faselhd.club|fastly.net|gstatic.com|jwpcdn.com,domain=embed.scdn.to +*$xhr,3p,denyallow=dropcdn.io,domain=dropload.io +||pnd.tl/*.gif$image +french-stream.*###banning +aagmaal.*##+js(rpnt, script, break;case $.) +||linkspop.xyz^$csp=script-src 'self' +*$xhr,3p,domain=nxbrew.com +!#if ext_ubol +*$script,3p,from=minoplres.xyz,to=~jwpcdn.com +!#endif +||y2mate.*/themes/js/pn.js +! !SECTION: Propeller ads +! SECTION: Clickadu +! Clickadu reinjection +18comic.vip,18comic-gquu.vip,adictox.com,anchira.to,animebr.org,animeworld.ac,anizm.net,anonmp4.help,archivebate.*,asiaon.*,asianporn.li,asiaontop.com,asmr18.fans,b-hentai.com,bebasbokep.online,bokepsin.in.net,bos21.site,bunkrr.*,cat3movie.org,cdn1.site,celebritydeeplink.com,comohoy.com,cyberdrop.me,daftporn.com,daftsex.net,datawav.club,dciuu.*,ddd-smart.net,depvailon.com,desifakes.com,dvdgayonline.com,easyvidplayer.com,embedseek.online,fapeza.com,fapfappy.com,g-porno.com,g-streaming.com,gelbooru.com,goctruyentranhvui17.com,hhkungfu.*,hentai2read.com,hentai2w.com,hentaicube.*,hentaipaw.com,hitomi.la,homemoviestube.com,hornyhill.*,imgbox.com,imx.to,japaneseholes.com,jav-fun.cc,jav.direct,jav.si,javboys.com,javbraze.com,javdoe.sh,javfan.one,javfc2.xyz,javfor.tv,javhat.tv,javhd.*,javhdz.today,javlab.net,javideo.net,javmenu.com,javmeta.com,javmix.tv,javpas.com,javseen.tv,javtiful.com,javx357.com,jmanga.*,jpg6.su,klmanga.*,komikmanhwa.me,leaktube.net,lovingsiren.com,luluvdoo.com,luluvids.top,madouqu.com,manga1001.*,mangabats.com,mangago.me,mangakakalot.gg,mangakakalove.com,mangakoma.ac,manganato.gg,mangaraw.*,mangarawjp.*,masahub2.com,movieffm.net,muchohentai.com,myvidplay.com,natomanga.com,nekopoi.*,nelomanga.*,netfapx.com,niyaniya.*,nlcosplay.com,nontonhentai.net,novelcrow.com,nsfwr34.com,nsfwyoutube.com,nudogram.com,nukibooks.com,paipancon.com,pemersatu.link,phimlongtieng.net,player4me.online,play.playkrx18.site,poapan.xyz,popjav.in,odporn.com,porn4fans.com,pornslash.com,porntin.com,qmh.sex,rawkuma.net,rpmplay.online,rule34.xyz,rule34vault.com,savefiles.com,sendvid.com,sexdicted.com,shinshi-manga.net,simpcity.*,spoilerplus.tv,stream18.net,streampoi.com,streamvid.dev,sxyprn.*,syosetu.*,taboodude.com,taxi69.com,teenager365.to,thefappening.pro,thefappeningblog.com,thotchicks.com,tojav.net,turbo.cr,turbovid.*,twitchnosub.com,upload18.com,upns.online,ups2up.fun,vegamoviese.*,veronica.uk,vidara.so,vidara.to,vide0.net,videplay.us,vids.st,vik1ngfile.site,vipserije.com,watchhentai.net,x-fetish.tube,x-tg.tube,x-x-x.video,xanimeporn.com,xxgasm.com,xxxfree.watch,xxxpicss.com,youwatch.monster##+js(acs, WebAssembly, atob) +2tencb.*,filmisub.cc##+js(acs, WebAssembly, atob, /^data:/) +filmisub.cc##+js(aeld, DOMContentLoaded, window.open) +||filmisub.cc/wp-content/themes/fmovie/js/code*.js +/aas/r45d/vki/*$script,redirect=noop.js +/^https:\/\/[a-z]{8,12}\.com\/en\/(?:[a-z]{2,10}\/){0,2}[a-z]{2,}\?(?:[a-z]+=[^&=?\s]*?&)*?id=[12]\d{6}\b/$script,3p,match-case,to=com +/^https:\/\/www\.gayxnow\.com\/[a-z][a-z][a-z][a-z][a-z][a-z]?\.js$/$script +/^https:\/\/[0-9a-z]{6,12}\.(?:com|in)(?:\/[a-z]{2,10}){1,3}(?:\?id=\d+)?$/$script,3p,match-case,header=etag:/^W\/"[0-9a-z]+-[0-9a-zA-Z]+(?:\/[0-9a-zA-Z]+)?"$/,from=~edu|~gov,to=com|in +!#if cap_ipaddress +/^https:\/\/[0-9a-z]{6,12}\.(?:com|in)(?:\/[a-z]{2,10}){1,3}(?:\?id=\d+)?$/$script,3p,match-case,from=~edu|~gov,to=com|in,ipaddress=/64\.120\.116\.15[34]$/ +/^https:\/\/[0-9a-z]{6,12}\.(?:com|in)(?:\/[a-z]{2,10}){1,3}(?:\?id=\d+)?$/$script,3p,match-case,from=~edu|~gov,to=com|in,ipaddress=69.41.167.170 +/^https:\/\/[0-9a-z]{6,12}\.(?:com|in)(?:\/[a-z]{2,10}){1,3}(?:\?id=\d+)?$/$script,3p,match-case,from=~edu|~gov,to=com|in,ipaddress=192.241.246.124 +!#endif +!#if ext_ubol +/^https:\/\/[0-9a-z]{6,12}\.(?:com|in)(?:\/[a-z]{2,10}){1,3}$/$script,3p,match-case,from=~edu|~gov,to=com|in,header=etag:W/"*-*" +/^https:\/\/[0-9a-z]{6,12}\.com(?:\/[a-z]{2,10}){1,3}\?id=\d+$/$script,3p,match-case,from=~edu|~gov,to=com,header=etag:W/"*-*" +/^https:\/\/[0-9a-z]{6,12}\.in(?:\/[a-z]{2,10}){1,3}\?id=\d+$/$script,3p,match-case,from=~edu|~gov,to=in,header=etag:W/"*-*" +!#endif +!#if env_safari +/^https:\/\/[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]+\.com\/en\/([a-z][a-z]+\/)?([a-z][a-z]+\/)?[a-z][a-z]+\?([a-z]+=[^&=? ]*&)*id=[12][0-9][0-9][0-9][0-9][0-9][0-9]/$script,third-party,match-case +/^https:\/\/[0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z][0-9a-z]?[0-9a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.[ci][on]m?\/[a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?(\/[a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?)?(\/[a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?)?(\?id=[0-9]+)?$/$script,3p,match-case,to=com|in,from=cr|help|tube|dvdgayonline.com|novelcrow.com|simply-hentai.com +!#endif +/public/assets/js/popunder.js^$script +/public/assets/js/popunderClickadu.js^$script +||rule34vault.com/ngsw-worker.js +! Ads servers +||briarcostshadow.com^ +novelcrow.com##.widget_custom_html +novelcrow.com##[href^="https://landing.candynetwork.ai/"] +novelcrow.com##[href="https://theporndude.com/"] +! !SECTION: Clickadu +! SECTION: wpadmngr.com ads +!#if cap_html_filtering +aiblog.tv,amateurblog.tv,bokepsin.in.net,dojing.net,fastpic.org,femdom-joi.com,forums.socialmediagirls.com,fuckflix.click,gravureblog.tv,javsubindo.com,khatrimazafull.*,krx18.com,latinblog.tv,loadx.ws,mangaforfree.com,manhwaclub.net,mmsbee27.com,mmsbee47.com,movies123.*,mym-db.com,nekopoi.*,noindexscan.com,podjav.tv,pornx.to,rawdex.top,savefiles.*,sgpics.net,shavetape.cash,silverblog.tv,socialblog.tv,speedporn.net,starblog.tv,strcloud.club,strcloud.site,stream18.net,streampoi.com,streamtape.*,strmup.to,tapeadsenjoyer.com,tapepops.com,thefap.net,thothub.lol,up4stream.com,ups2up.fun,veronica.uk,videq.stream,xblog.tv,xmegadrive.com##^script:has-text(wpadmngr.com) +!#else +aiblog.tv,amateurblog.tv,bokepsin.in.net,dojing.net,fastpic.org,femdom-joi.com,forums.socialmediagirls.com,fuckflix.click,gravureblog.tv,javsubindo.com,khatrimazafull.*,krx18.com,latinblog.tv,loadx.ws,mangaforfree.com,manhwaclub.net,mmsbee27.com,mmsbee47.com,movies123.*,mym-db.com,nekopoi.*,noindexscan.com,podjav.tv,pornx.to,rawdex.top,savefiles.*,sgpics.net,shavetape.cash,silverblog.tv,socialblog.tv,speedporn.net,starblog.tv,strcloud.club,strcloud.site,stream18.net,streampoi.com,streamtape.*,strmup.to,tapeadsenjoyer.com,tapepops.com,thefap.net,thothub.lol,up4stream.com,ups2up.fun,veronica.uk,videq.stream,xblog.tv,xmegadrive.com##+js(rmnt, script, wpadmngr.com) +!#endif +chaturflix.cam,niyaniya.moe##+js(acs, Date, wpadmngr.com) +! !SECTION: wpadmngr.com ads +! SECTION: Adcash +||go.aff.7k-partners.com^$popup +catchthrust.net,championdrive.co,embedsports.top,evfancy.link,exposestrat.com,megacanais.com,tous-sports.ru,ugreen.autos##+js(aopr, Adcash) +! http://volokit2.com/lives/ufc-308-topuria-vs-holloway-main/ +/^https?:\/\/[-a-z]{5,13}\.[a-z]{3,}\/[0-9a-z]{1,20}\?(?=[A-Za-z]{0,21}\d?)(?=[0-9a-z]{0,21}[A-Z])[0-9A-Za-z]{15,24}=(?=[%a-z]*[0-9A-Z])[%0-9A-Za-z]{35,2000}$/$xhr,3p,match-case,method=get,header=via:/^2\.\d (apache|tomcat|nginx)$/,to=~com|~dev|~net|~org|~edu|~gov|~tv +/^https?:\/\/[-a-z]{5,13}\.[a-z]{3,}\/[0-9a-z]{1,20}\?(?=[A-Za-z]{0,21}\d?)(?=[0-9a-z]{0,21}[A-Z])[0-9A-Za-z]{15,24}=(?=[%a-z]*[0-9A-Z])[%0-9A-Za-z]{35,2000}$/$xhr,3p,match-case,method=get,header=Via:/^2\.\d (apache|tomcat|nginx)$/,to=~com|~dev|~net|~org|~edu|~gov|~tv +!#if ext_ubol +/^https?:\/\/[-a-z]{9,13}\.[a-z]+\/[0-9a-z]+\?[0-9A-Za-z]{15,}=[%0-9A-Za-z]+$/$xhr,3p,match-case,method=get,header=via:2.3 tomcat,to=online|site|space|store|website,from=~edu|~gov +!#endif +!#if env_safari +/^https?:\/\/[-a-z][-a-z][-a-z][-a-z][-a-z][-a-z]?[-a-z]?[-a-z]?[-a-z]?[-a-z]?[-a-z]?[-a-z]?[-a-z]?\.[a-z]+\/[0-9a-z][0-9a-z][0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?[0-9a-z]?\?[0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z][0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?[0-9A-Za-z]?=[%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z][%0-9A-Za-z]+$/$xhr,3p,match-case,to=online|site|space|store|website,from=~edu|~gov +!#endif +!#if cap_html_filtering +1337x.*,1stream.eu,4kwebplay.xyz,alldownplay.xyz,anime4i.vip,antennasports.ru,asiaflix.*,audioz.download,boxingstream.me,buffstreams.app,claplivehdplay.ru,cracksports.me,cricstream.me,cricstreams.re,dartsstreams.com,dl-protect.link,embed.st,embedtv.best,eurekaddl.baby,euro2024direct.ru,ext.to,extrem-down.*,extreme-down.*,eztv.*,eztvx.to,f1box.me,filecrypt.cc,flix-wave.*,flixrave.me,golfstreams.me,hikaritv.xyz,ianimes.one,istreameast.app,jointexploit.net,kenitv.me,mediacast.click,mixdrop.*,mlbbite.net,mlbstreams.ai,modistreams.org,motogpstream.me,nbabox.me,nflbite.com,nflbox.me,nhlbox.me,ntv.cx,ogladaj.in,playcast.click,playoffsstream.com,pooembed.eu,ppv.to,qatarstreams.me,reidoscanais.life,restlessouter.net,rnbastreams.com,rugbystreams.me,sanet.*,seir-sanduk.com,socceronline.me,soccerworldcup.me,sportshd.*,streamed.*,sushiscan.net,topstreams.info,totalsportek.to,tvableon.me,vecloud.eu,vibestreams.*,vipstand.pm,webcamrips.to,worldsports.me,x1337x.*,yifysubtitles.ch,yts.*,zone-telechargement.*##^script:has-text(adserverDomain) +kaa.to##^script:has-text('"adserverDomain"') +!#else +1337x.*,1stream.eu,4kwebplay.xyz,alldownplay.xyz,anime4i.vip,antennasports.ru,asiaflix.*,audioz.download,boxingstream.me,buffstreams.app,claplivehdplay.ru,cracksports.me,cricstream.me,cricstreams.re,dartsstreams.com,dl-protect.link,embed.st,embedtv.best,eurekaddl.baby,euro2024direct.ru,ext.to,extrem-down.*,extreme-down.*,eztv.*,eztvx.to,f1box.me,filecrypt.cc,flix-wave.*,flixrave.me,golfstreams.me,hikaritv.xyz,ianimes.one,istreameast.app,jointexploit.net,kenitv.me,mediacast.click,mixdrop.*,mlbbite.net,mlbstreams.ai,modistreams.org,motogpstream.me,nbabox.me,nflbite.com,nflbox.me,nhlbox.me,ntv.cx,ogladaj.in,playcast.click,playoffsstream.com,pooembed.eu,ppv.to,qatarstreams.me,reidoscanais.life,restlessouter.net,rnbastreams.com,rugbystreams.me,sanet.*,seir-sanduk.com,socceronline.me,soccerworldcup.me,sportshd.*,streamed.*,sushiscan.net,topstreams.info,totalsportek.to,tvableon.me,vecloud.eu,vibestreams.*,vipstand.pm,webcamrips.to,worldsports.me,x1337x.*,yifysubtitles.ch,yts.*,zone-telechargement.*##+js(rmnt, script, adserverDomain) +kaa.to##+js(rmnt, script, '"adserverDomain"') +pawastreams.pro##+js(acs, globalThis, adserverDomain, /^data:/) +!#endif +embedstreams.top,gogoanime.co.in,icelz.to,pornhoarder.net,streamtp1.com##+js(aopw, Adcash) +hyhd.org,pornhoarder.net,streamingnow.mov,watchfootballhighlights.com##+js(aopr, aclib) +brobokep.org##+js(acs, addEventListener, aclib) +asiaflix.in###af-dl-1 +buffsports.*##.h-100.position-absolute.w-100 +buffsports.*##.btn-danger.btn +||embedstreams.top/js/script.js +||streamfree.app/analytics.js +||cinehd.app/api/adcash +||static.filecrypt.to/js/aaaaa*$script +###dontfoid +##div[style="top: 0px; left: 0px; width: 1287px; height: 500px; position: fixed; z-index: 2147483647;"] +##div[style="position: fixed; inset: 0px; z-index: 2147483647; pointer-events: auto;"] +cracksports.me##+js(acs, JSON.parse, atob) +/^https:\/\/strumyk\.net\/assets\/[0-9]+.js$/$script,1p,match-case,domain=strumyk.net +/\/z-[a-z0-9]{7,10}(\.js)?$/$script,domain=embedflix.online|koyso.com|nepu.to|methstreams.com +/^https:\/\/[a-z]{4,}\.(?:com|to)\/z-[a-z0-9]{7,10}(\.js)?$/$script,1p,strict1p,match-case,domain=com|to +/^https?:\/\/[a-z]{4,}\.top\/z-[a-z0-9]{7,10}$/$script,3p,match-case,to=top +!#if env_safari +/^https?:\/\/[a-z][a-z][a-z][a-z]+\.top\/z-[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]?[a-z0-9]?[a-z0-9]?$/$script,3p,match-case,to=top +!#endif +/\/z-\d{8}\.js$/$script,match-case +!#if env_safari +/\/z-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\.js$/$script,match-case +!#endif +||strumyk.net/assets/z- +/^https?:\/\/[-a-z]{5,13}\.[a-z]{3,6}\/[0-9a-h]{1,17}\?[0-9a-zA-Z]{1,22}=[%0-9a-zA-Z]{200,1300}/$xhr,3p,match-case,method=get +/lib.js$domain=icelz.to|processbigger.com|tutvlive.ru +||tutvlive.ru/player/lib.js +hyhd.org##+js(aopr, Adcash) +hyhd.org##+js(nowoif) +hyhd.org##+js(rmnt, script, sandbox) +hyhd.org##+js(acs, document.write, .js?_=) +||vidsrc.*.js?_=17*$script +/^https?:\/\/(?:\w+\.){1,2}[a-z]{2,}\/[a-f0-9]{32}\.js\?_=17\d{8}$/$script,1p,strict1p,match-case +!#if ext_ubol +/\.[a-z]{2,}\/[a-f0-9]{32}\.js\?_=17\d+$/$script,1p,match-case,domain=xyz|cloudnestra.com +!#endif +!#if env_safari +/^https?:\/\/[-a-z0-9]+\.([-a-z0-9]+\.)?[a-z][a-z]+\/[a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9][a-f0-9]\.js\?_=17[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$/$script,1p,match-case +!#endif +! !SECTION: Adcash +! SECTION: FingerprintJS +! FingerprintJS popups +arcjav.com,boxingstream.me,buffsports.io,buffstreams.*,embedsports.top,game3rb.com,glodls.to,igg-games.com,manhwalist.com,mc-hacks.net,miraculous.*,muchohentai.com,mycivillinks.com,mzansixporn.co.za,nflstreams.me,s2dfree.to,soap2day.*,tennisstreams.*,tv247.us,vidsrc.*,vipboxtv.*,vipleague.*,woiden.com,wonderapk.com##+js(acs, navigator, FingerprintJS) +manhwalist.com##+js(aost, btoa, /https|stackDepth:3/) +!#if cap_html_filtering +bowfile.com,cloudvideo.tv,cloudvideotv.*,coloredmanga.com,cracksports.me,cricstreams.re,embedstream.me,exeo.app,hiphopa.net,kenitv.me,megaup.net,olympicstreams.co,qatarstreams.me,soccerworldcup.me,tv247.us,tvableon.me,uploadhaven.com,userscloud.com,vidsrc.*,vik1ngfile.site##^script:has-text(FingerprintJS) +soap2day.*##^script:has-text(Reflect) +omuzaani.me##^script:has-text(var FingerprintJS=) +!#else +bowfile.com,cloudvideo.tv,cloudvideotv.*,coloredmanga.com,cracksports.me,cricstreams.re,embedstream.me,exeo.app,hiphopa.net,kenitv.me,megaup.net,olympicstreams.co,qatarstreams.me,soccerworldcup.me,tv247.us,tvableon.me,uploadhaven.com,userscloud.com,vidsrc.*,vik1ngfile.site##+js(rmnt, script, FingerprintJS) +soap2day.*##+js(rmnt, script, Reflect) +omuzaani.me##+js(rmnt, script, var FingerprintJS=) +!#endif +||myapiplay.top^$script +||omoneyandfarto.com^ +||d33f51dyacx7bd.cloudfront.net^ +! FingerprintJS servers +/^https?:\/\/[a-z]{7,}\.buzz\/[+\/0-9a-zA-Z]{140,400}$/$image,3p,match-case +/^https?:\/\/[a-z]{7,}\.buzz\/[+\/0-9a-zA-Z]{400,1000}$/$frame,3p,match-case +/^https?:\/\/[a-z]{7,}\.co\/(?=[\/a-zA-Z]*[+0-9])(?=[+\/0-9a-z]*[A-Z])[+\/0-9a-zA-Z]{140,400}$/$image,3p,match-case,from=~edu|~gov,to=co +/^https?:\/\/[a-z]{7,}\.co\/(?=[\/a-zA-Z]*[+0-9])(?=[+\/0-9a-z]*[A-Z])[+\/0-9a-zA-Z]{400,1000}$/$frame,3p,match-case,from=~edu|~gov,to=co,header=x-amz-cf-pop +/^https?:\/\/[a-z]{7,}\.com\/(?=[\/a-zA-Z]*[+0-9])(?=[+\/0-9a-z]*[A-Z])[+\/0-9a-zA-Z]{140,400}$/$image,3p,match-case,from=~edu|~gov,to=com +/^https?:\/\/[a-z]{7,}\.com\/(?=[\/a-zA-Z]*[+0-9])(?=[+\/0-9a-z]*[A-Z])[+\/0-9a-zA-Z]{400,1000}$/$frame,3p,match-case,from=~edu|~gov,to=com,header=x-amz-cf-pop +/^https?:\/\/[a-z]{7,}\.info\/[+\/0-9a-zA-Z]{140,400}$/$image,3p,match-case +/^https?:\/\/[a-z]{7,}\.info\/[+\/0-9a-zA-Z]{400,1000}$/$frame,3p,match-case +/^https?:\/\/[a-z]{7,}\.lol\/[+\/0-9a-zA-Z]{140,400}$/$image,3p,match-case +/^https?:\/\/[a-z]{7,}\.lol\/[+\/0-9a-zA-Z]{400,1000}$/$frame,3p,match-case +/^https?:\/\/[a-z]{7,}\.one\/[+\/0-9a-zA-Z]{140,400}$/$image,3p,match-case +/^https?:\/\/[a-z]{7,}\.one\/[+\/0-9a-zA-Z]{400,1000}$/$frame,3p,match-case +/^https?:\/\/[a-z]{7,}\.org\/(?=[\/a-zA-Z]*[+0-9])(?=[+\/0-9a-z]*[A-Z])[+\/0-9a-zA-Z]{140,400}$/$image,3p,match-case,domain=~edu|~gov +/^https?:\/\/[a-z]{7,}\.org\/(?=[\/a-zA-Z]*[+0-9])(?=[+\/0-9a-z]*[A-Z])[+\/0-9a-zA-Z]{400,1000}$/$frame,3p,match-case,domain=~edu|~gov +/^https?:\/\/[a-z]{7,}\.xyz\/[+\/0-9a-zA-Z]{140,400}$/$image,3p,match-case +/^https?:\/\/[a-z]{7,}\.xyz\/[+\/0-9a-zA-Z]{400,1000}$/$frame,3p,match-case +/^https?:\/\/[a-z0-9]+\.cloudfront\.net\/(?=[\/a-zA-Z]*[+0-9])(?=[+\/0-9a-z]*[A-Z])[-+\/0-9a-zA-Z]{140,400}$/$script,3p,match-case,header=x-amz-cf-pop,from=~edu|~gov,to=cloudfront.net +##body > div[style$="z-index: 2147483647; top: 0px; left: 0px; position: fixed; display: block;"] +!#if ext_ubol +/^https?:\/\/[a-z]{7,}\.com\/[+\/0-9a-zA-Z]{19,}$/$frame,3p,match-case,header=x-amz-cf-pop,to=com,from=info|me|pm|site|~edu.me|~edu.pm|~gov.me|~proton.me +/\.cloudfront\.net\/[-+\/0-9a-zA-Z]{13,}$/$script,3p,match-case,header=x-amz-cf-pop,to=cloudfront.net,from=info|me|pm|site|~edu.me|~edu.pm|~gov.me|~proton.me +!#endif +!#if env_safari +/^https?:\/\/[a-z][a-z][a-z][a-z][a-z][a-z][a-z]+\.com\/[+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z][+\/0-9a-zA-Z]+$/$frame,3p,match-case,to=com,from=info|me|pm|site|~edu.me|~edu.pm|~gov.me|~proton.me +/\.cloudfront\.net\/[-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z][-+\/0-9a-zA-Z]+$/$script,3p,match-case,to=cloudfront.net,from=info|me|pm|site|~edu.me|~edu.pm|~gov.me|~proton.me +!#endif +! !SECTION: FingerprintJS +! SECTION: IS_POP_COIN / s3.amazonaws.com popups +glodls.to,playfa.com##+js(acs, fetch, break;case) +! !SECTION: IS_POP_COIN / s3.amazonaws.com popups +! SECTION: shown_at / HTMLAllCollection popunder (related to Galaksion) +/^https:\/\/[a-z]{3,5}\.[a-z]{10,14}\.top\/[a-z]{10,16}\/[a-z]{5,6}(?:\?d=\d)?$/$script,xhr,3p,match-case,to=top +/^https:\/\/[a-z]{3,5}\.[a-z]{10,14}\.top\/[A-Za-z]{10,16}\/[A-Za-z]{5,6}$/$popup,3p,to=top +!#if env_safari +/^https:\/\/[a-z][a-z][a-z][a-z]?[a-z]?\.[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?\.top\/[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\/[a-z][a-z][a-z][a-z][a-z][a-z]?\?d=[0-9]$/$script,xhr,3p,match-case +!#endif +!#if cap_html_filtering +123animehub.cc,123animes.ru,actvid.*,airflix1.com,animeunity.so,boosterx.stream,cataz.to,cineb.rs,cineb.gg,cloudnestra.com,demonicscans.org,dopebox.to,duboku.info,embed.nextgencloudtools.com,fbsquadx.com,flixhq.to,gomovies.*,gomoviestv.to,hdtoday.cc,hentai2read.com,himovies.sx,hurawatch.cc,hurawatchz.to,jkanime.net,lectormangaa.com,lectormangass.net,limetorrents.lol,lulustream.com,luluvdoo.com,luluvid.com,mangagun.net,mexa.sh,mgeko.cc,mkvcinemas.*,moflix-stream.fans,motchill29.com,mov18plus.cloud,moviesapi.to,movies2watch.tv,movies4us.co,musichq.cc,netmovies.to,nicomanga.com,phimlongtieng.net,popcornmovies.org,rawinu.com,rawkuma.net,rcostation.xyz,readcomiconline.*,seriesonline.sx,stream18.net,theflixertv.to,torrentdownload.*,toonily.com,torrentdownloads.*,ttks.tw,tukipasti.com,updown.icu,vidora.stream,vidsonic.net,vidsrc.cc,vidsrc-me.su,vidup.to,vixcloud.co,vsembed.*,vsrc.su,watchasians.cc,watch-movies.com.pk,watchseries.*,weloma.art,ythd.org,zoechip.com,zoechip.gg##^script:has-text(HTMLAllCollection) +!#else +123animehub.cc,123animes.ru,actvid.*,airflix1.com,animeunity.so,boosterx.stream,cataz.to,cineb.rs,cineb.gg,cloudnestra.com,demonicscans.org,dopebox.to,duboku.info,embed.nextgencloudtools.com,fbsquadx.com,flixhq.to,gomovies.*,gomoviestv.to,hdtoday.cc,hentai2read.com,himovies.sx,hurawatch.cc,hurawatchz.to,jkanime.net,lectormangaa.com,lectormangass.net,limetorrents.lol,lulustream.com,luluvdoo.com,luluvid.com,mangagun.net,mexa.sh,mgeko.cc,mkvcinemas.*,moflix-stream.fans,motchill29.com,mov18plus.cloud,moviesapi.to,movies2watch.tv,movies4us.co,musichq.cc,netmovies.to,nicomanga.com,phimlongtieng.net,popcornmovies.org,rawinu.com,rawkuma.net,rcostation.xyz,readcomiconline.*,seriesonline.sx,stream18.net,theflixertv.to,torrentdownload.*,toonily.com,torrentdownloads.*,ttks.tw,tukipasti.com,updown.icu,vidora.stream,vidsonic.net,vidsrc.cc,vidsrc-me.su,vidup.to,vixcloud.co,vsembed.*,vsrc.su,watchasians.cc,watch-movies.com.pk,watchseries.*,weloma.art,ythd.org,zoechip.com,zoechip.gg##+js(acs, addEventListener, HTMLAllCollection) +cataz.to##+js(nowoif) +!#endif +vidfast.*##+js(acs, addEventListener, HTMLAllCollection) +cineb.rs,moviesjoyhd.to,rawkuma.com##+js(aeld, mousedown, shown_at) +actvid.*##.block_area iframe:upward(.block_area) +||111movies.com/ad2.js +||olympusbiblioteca.com/third-parties-ad-script.js +||streamex.sh/pop.js +||templetoons.com/api/ads/ +||player.videasy.*/scripts/ab.js +||64gkf7zhlwqn6y4eutgq1hjjo9y.rest^ +||beixisys.com^ +||mysticechohaven.com^ +||nvh1mgp8k77cu2935zwczqfezrr.cfd^ +! !SECTION: shown_at / HTMLAllCollection popunder +! SECTION: afterOpen popup +! vidguard +||acacdn.com^$script,redirect-rule=noopjs +bembed.net,embedv.net,javguard.club,listeamed.net,v6embed.xyz,vembed.*,vid-guard.com,vidguardto.xyz##+js(nostif, afterOpen) +bembed.net,embedv.net,javguard.club,v6embed.xyz,vembed.*,vid-guard.com,vidguardto.xyz##+js(nowoif) +listeamed.net##+js(nowoif, !/d/) +listeamed.net##+js(json-prune, AffiliateAdBlock) +bembed.net,embedv.net,javguard.club,listeamed.net,v6embed.xyz,vembed.*,vid-guard.com##+js(set, PlayerConfig.config.CustomAdSetting, []) +bembed.net,embedv.net,javguard.club,listeamed.net,v6embed.xyz,vembed.*,vid-guard.com##body > div[class]:empty +*$script,3p,redirect-rule=noopjs,domain=bembed.net|embedv.net +*$xhr,3p,redirect-rule=nooptext,domain=listeamed.net +||oaphoace.net^$script,3p,redirect-rule=noopjs +! yesmovies .vc/.ws/.org/.mn/.ag +yesmovies.*##+js(nowoif) +yesmovies.*##+js(aopr, AaDetector) +yesmovies.*##+js(nowebrtc) +/sw-vodlocker.to.js$script +yesmovies.*##a.btn-successful +yesmovies.*>>,~vvid30c.*##+js(nostif, afterOpen) +yesmovies.*>>,~vvid30c.*##+js(json-prune, AffiliateAdBlock) +pistona.xyz##+js(nostif, afterOpen) +pistona.xyz##+js(json-prune, AffiliateAdBlock) +moflix-stream.*##+js(nostif, affiliate) +moflix-stream.*##+js(nostif, afterOpen) +nekolink.site##+js(aost, document.getElementsByTagName, _createCatchAllDiv) +nekolink.site##+js(aeld, /click|mouse/, [native code], elements, document) +nekolink.site##+js(set, PlayerConfig.trusted, true) +nekolink.site##+js(set, PlayerConfig.config.AffiliateAdViewLevel, 3) +! !SECTION: afterOpen popup +! SECTION: univresalP popunder +141jav.com,141tube.com,aagmaal.*,camcam.cc,evojav.pro,hentaianimezone.com,javneon.tv,javsaga.ninja,kaamuu.cfd,sohot.cyou,torrentkitty.one,webmaal.*##+js(set, univresalP, noopFunc) +! !SECTION: univresalP popunder +! SECTION: history.go popunders +pahe.ink,pawastreams.pro,vikingf1le.us.to##+js(aeld, DOMContentLoaded, history.go) +! !SECTION: history.go popunders +! SECTION: initPu / puShown +boobsrealm.com,dfilmizle.com##+js(aopr, initPu) +asianpornjav.com##+js(set, puShown, true) +! !SECTION: initPu / puShown +! SECTION: puTSstrpcht +book18.fans,hpjav.in,jav.direct,javfan.one,javmix.tv,nyahentai.*,openload.mov##+js(aeld, load, puTSstrpcht) +aagmaal.com##+js(aeld, click, puTSstrpcht) +! !SECTION: puTSstrpcht +! SECTION: pixsera +pixsera.net##+js(nano-sib, timer) +pixsera.net##+js(nowoif, !/prcf.fiyar|themes|pixsense|.jpg/) +pixsera.net##+js(set, hold_click, false) +pixsera.net##div[id][style^="position: fixed; display: block; width: 100%;"] +||imgair.net/vip/splitest.html +@@||imgair.net^$script +nemenlake.*##+js(nowoif) +||hottracker.biz^ +||vehavings.biz^ +||kooolboomin.com^ +||shyvanas.top^$all +||linksprf.com^$3p +||searchwithme.net^ +||genishury.pro^$popup +###tongkatlol ~ script[src^="/shrinke/js/"] ~ .main-content-box > div[style="width:100%;height:110px"] +###tongkatlol ~ script[src^="/shrinke/js/"] ~ .main-content-box + .content-box > div[id][style^="position: fixed; display: block; width: 100%;"] +imgouskel.sbs,imgair.net,imgblaze.net,imgfrost.net,vestimage.site,pixlev.*,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##+js(aopr, console.clear) +imgouskel.sbs,imgair.net,imgblaze.net,imgfrost.net,vestimage.site,pixlev.*,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##+js(nano-sib, timer) +imgouskel.sbs,imgair.net,imgblaze.net,imgfrost.net,vestimage.site,pixlev.*,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##div[id][style^="position: fixed; display: block; width: 100%;"] +imgouskel.sbs,imgair.net,imgblaze.net,imgfrost.net,vestimage.site,pixlev.*,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##div[style="width:100%;height:110px"] +imgouskel.sbs,imgair.net,imgblaze.net,imgfrost.net,vestimage.site,pixlev.*,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##+js(nowoif, !/prcf.fiyar|themes|pixsense|.jpg/) +imgouskel.sbs,imgair.net,imgblaze.net,imgfrost.net,vestimage.site,pixlev.*,pixbryexa.sbs,picbqqa.sbs,pixbkghxa.sbs,imgmgf.sbs,picbcxvxa.sbs,imguee.sbs,imgmffmv.sbs,imgbqb.sbs,imgbyrev.sbs,imgbncvnv.sbs,pixtryab.shop,imggune.shop,pictryhab.shop,pixbnab.shop,imgbnwe.shop,imgbbnhi.shop,imgnbii.shop,imghqqbg.shop,imgyhq.shop,pixnbrqwg.sbs,pixnbrqw.sbs,picmsh.sbs,imgpke.sbs,picuenr.sbs,imgolemn.sbs,imgoebn.sbs,picnwqez.sbs,imgjajhe.sbs,pixjnwe.sbs,pixkfjtrkf.shop,pixkfkf.shop,pixdfdjkkr.shop,pixdfdj.shop,picnft.shop,pixrqqz.shop,picngt.shop,picjgfjet.shop,picjbet.shop,imgkkabm.shop,imgxabm.shop,imgthbm.shop,imgmyqbm.shop,imgwwqbm.shop,imgjvmbbm.shop,imgjbxzjv.shop,imgjmgfgm.shop,picxnkjkhdf.sbs,imgxxbdf.sbs,imgnngr.sbs,imgjjtr.sbs,imgqbbds.sbs,imgbvdf.sbs,imgqnnnebrf.sbs,imgnnnvbrf.sbs##div[class][style="display: block;"] +! !SECTION: pixsera +! SECTION: antiblock.org +ads-ti9ni4.blogspot.com,cintateknologi.com,este-walks.net,funnymadworld.blogspot.com,gfilex.blogspot.com,intest.tv,irasutoya.blogspot.com,laurasia.info,mini.surveyenquete.net,mmo69.com,pramejarab.blogspot.com,thelibrarydigital.blogspot.com,tienganhedu.com,tienichdienthoai.net,umagame.info,veo-hentai.com,xbox360torrent.com,xn--k9ja7fb0161b5jtgfm.jp,ysokuhou.blog.jp##+js(acs, document.addEventListener, google_ad_client) +www-daftarharga.blogspot.com##+js(nostif, nextFunction) +www-daftarharga.blogspot.com##+js(nowoif) +www-daftarharga.blogspot.com##+js(aeld, popstate) +www-daftarharga.blogspot.com##+js(aeld, , focus) +xbox360torrent.com##+js(nowoif) +yoima2.hatenablog.com##+js(nostif, nextFunction, 2000) +! antiblock.org bait id +#@##advert-header +#@##adSpecial +#@##adzerk +#@##buy-sell-ads +#@##leader_ad +#@##midadd +###advert-header:not(:empty) +###adSpecial:not(:empty) +###adzerk:not(:empty) +###buy-sell-ads:not(:empty) +###leader_ad:not(:empty) +###midadd:not(:empty) +nu6i-bg-net.com##+js(nostif, getComputedStyle) +nu6i-bg-net.com##^script:has-text(antiblock) +aquarius-horoscopes.com,cancer-horoscopes.com,dubipc.blogspot.com,echoes.gr,engel-horoskop.de,freegames44.com,fuerzasarmadas.eu,gemini-horoscopes.com,jurukunci.net,krebs-horoskop.com,leo-horoscopes.com,maliekrani.com,nklinks.click,ourenseando.es,pisces-horoscopes.com,radio-en-direct.fr,sagittarius-horoscopes.com,scorpio-horoscopes.com,singlehoroskop-loewe.de,skat-karten.de,skorpion-horoskop.com,taurus-horoscopes.com,the1security.com,virgo-horoscopes.com,zonamarela.blogspot.com##+js(nostif, displayMessage, 2000) +officecoach24.de##+js(acs, document.addEventListener, google_ad_client) +! !SECTION: antiblock.org +! SECTION: CHP +! CHP v3.9.2+ +10-train.com,103.74.5.104,185.193.17.214,247footballnow.com,24pdd.*,27-sidefire-blog.com,2best.club,2the.space,2ix2.com,30kaiteki.com,3dassetcollection.com,3gpterbaru.com,3dyasan.com,3fnews.com,3rabsports.com,4drumkits.com,4fingermusic.com,4gousya.net,4horlover.com,4spaces.org,519.best,51sec.org,80-talet.se,9ketsuki.info##+js(noeval-if, /chp_?ad/) +aboedman.com,adisann.com,adminreboot.com,adsurfle.com,adsy.pw,advertafrica.net,adnan-tech.com,africue.com,aghasolution.com,airportwebcams.net,aitoolsfree.org,aitohuman.org,akihabarahitorigurasiseikatu.com,akuebresources.com,alanyapower.com,albania.co.il,alexbacher.fr,algodaodocescan.com.br,allcalidad.app,allcelebritywiki.com,allcivilstandard.com,allcivilstandard.com,alliptvlinks.com,alliptvs.com,almofed.com,alphasource.site,altcryp.com,altselection.com,altyazitube22.lat,amaturehomeporn.com,ameede.com,amnaymag.com,amritadrino.com,amtil.com.au,analysis-chess.io.vn,andani.net,androidadult.com,androidapkmodpro.com,androidfacil.org,angolopsicologia.com,animalwebcams.net,anime4mega.net,anime4mega-descargas.net,anime7.download,anime-torrent.com,animecenterbr.com,animesonlineshd.com,animetwixtor.com,animexin.vip,anmup.com.np,anodee.com,anonyviet.com,anothergraphic.org,aogen-net.com,aozoraapps.net,apenasmaisumyaoi.com,apkdink.com,apostoliclive.com,appdoze.*,applediagram.com,aprenderquechua.com,arabstd.com,arti-flora.nl,articlebase.pk,articlesmania.me,asiansexdiarys.com,askcerebrum.com,askushowto.com,aspirapolveremigliori.it,assignmentdon.com,astroages.com,astrumscans.xyz,atemporal.cloud,atgstudy.com,atlantisscan.com,atleticalive.it,audiobookexchangeplace.com,audiotools.*,audiotrip.org,autocadcommand.com,autodime.com,autoindustry.ro,automat.systems,automothink.com,autosport.*,avitter.net,awpd24.com,ayatoon.com,ayuka.link,azamericasat.net,azores.co.il,azrom.net##+js(noeval-if, /chp_?ad/) +babakfilm.com,baithak.news,balkanteka.net,ballexclusives.com,bandstand.ph,batman.city,bcanepaltu.com,bcsnoticias.mx,bdix.app,bdokan.com,bdsomadhan.com,bdstarshop.com,beaddiagrams.com,bearchasingart.com,beasttips.com,beatree.cn,beisbolinvernal.com,bellezashot.com,bengalxpress.in,berlin-teltow.de,beruhmtemedien.com,bestensuree.com,bestofarea.com,bettingexchange.it,bi-girl.net,bibliotecadecorte.com,bibliotecahermetica.com.br,bidersnotu.com,bif24.pl,biftutech.com,bigdata-social.com,bikyonyu-bijo-zukan.com,bimshares.com,bitcotasks.com,bitfaucet.net,bitlikutu.com,bittukitech.in,bitview.cloud,bitzite.com,blisseyhusband.net,blog.motionisland.com,blog24.me,blogk.com,blogue.tech,bloooog.it,bloxyscripts.com,bluebuddies.com,bluecoreinside.com,blurayufr.cam,bogowieslowianscy.pl,bookpraiser.com,booksbybunny.com,boredgiant.com,boundlessnecromancer.com,boxaoffrir.com,boxingvideo.org,boxofficebusiness.in,boyfuck.me,boystube.link,braziliannr.com,brevi.eu,brian70.tw,bright-b.com,brightpets.org,broadbottomvillage.co.uk,brokensilenze.net,brulosophy.com,brushednickel.biz,bshifast.live,bsmaurya.com,bugswave.com,businesstrend.jp,buzzpit.net,byswiizen.fr##+js(noeval-if, /chp_?ad/) +cafenau.com,calculascendant.com,calvyn.com,canaltdt.es,canzoni-per-bambini.it,captionpost.com,carryflix.icu,cashkar.in,casperhd.com,catatanonline.com,catmovie.website,cavalierstream.fr,celebritablog.com,celemusic.com,celestialtributesonline.com,certificateland.com,cg-method.com,chachocool.com,chakrirkhabar247.in,championpeoples.com,chanjaeblog.jp,change-ta-vie-coaching.com,charlottepilgrimagetour.com,chart.services,chatgbt.one,chatgptfree.ai,cheatermad.com,check-imei.info,cheese-cake.net,chelsea24news.pl,chevalmag.com,chieflyoffer.com,chihouban.com,chikonori.com,christiantrendy.com,cienagamagdalena.com,cimbusinessevents.com.au,cinecalidad5.site,cinema-sketch.com,cinepiroca.com,cizzyscripts.com,claimclicks.com,claydscap.com,clockskin.us,cloud9obits.com,cocorip.net,code-source.net,codeandkey.com,codeastro.com,codeitworld.com,codemystery.com,coderblog.in,codewebit.top,coin-profits.xyz,coinadpro.club,coinbaby8.com,coingraph.us,cola16.app,coleccionmovie.com,colliersnews.com,comeletspray.com,cometogliere.com,comoinstalar.me,compota-soft.work,conoscereilrischioclinico.it,consigliatodanoi.it,constructionmethodology.com,constructionplacement.org,cookni.net,correction-livre-scolaire.fr,cpscan.xyz,crackcodes.in,crackthemes.com,craigretailers.co.uk,crazyashwin.com,crazydeals.live,creebhills.com,cricket12.com,crn.pl,cronachesalerno.it,crunchytech.net,cryptonor.xyz,cryptonworld.space,cryptotech.fun,cryptowidgets.net,crystalcomics.com,cta-fansite.com,cuckoldsex.net,culture-informatique.net,curiosidadtop.com,cwc.utah.gov,cykf.net,cyprus.co.il##+js(noeval-if, /chp_?ad/) +daij1n.info,dailytips247.com,dailyweb.pl,davewigstone.com,davidsonbuilders.com,day4news.com,daybuy.tw,deathonnews.com,dejongeturken.com,delvein.tech,demonyslowianskie.pl,demooh.com,depressionhurts.us,derusblog.com,descargaranimes.com,descargaseriestv.com,design4months.com,desirenovel.com,desktopsolution.org,destakenewsgospel.com,destinationsjourney.com,detikbangka.com,deutschpersischtv.com,dev-dark-blog.pantheonsite.io,devsoftwr.com,dhankasamaj.com,diamondfansub.com,diarioeducacion.com,diencobacninh.com,digitalseoninja.com,dignityobituary.com,dinheirocursosdownload.com,diplomaexamcorner.com,dipprofit.com,dir-tech.com,diskizone.com,diversanews.com,diyprojectslab.com,djqunjab.in,djsofchhattisgarh.in,djstar.in,dma-upd.org,dobleaccion.xyz,dobletecno.com,domainregistrationtips.info,dominican-republic.co.il,donghuaworld.com,donlego.com,doublemindtech.com,doumura.com,downloadbatch.me,downloader.is,downloads.sayrodigital.net,downloads.wegomovies.com,downloadtanku.org,dpscomputing.com,dragonball-zxk.com,dragontranslation.org,drake-scans.com,drakecomic.com,dramafren.com,dramaviki.com,drublood.com,drzna.com,dubaitime.net,dumovies.com,dvd-flix.com,dvdgayonline.com##+js(noeval-if, /chp_?ad/) +earninginwork.com,easyjapanesee.com,easytodoit.com,ecommercewebsite.store,eczpastpapers.net,editions-actu.org,editorsadda.com,edivaldobrito.com.br,edjerba.com,edukamer.info,egram.com.ng,einewelteinezukunft.de,elcriticodelatele.com,elcultura.pl,elearning-cpge.com,eleceedmanhwa.me,electricalstudent.com,embraceinnerchaos.com,emperorscan.com,emperorscan.mundoalterno.org,empleo.com.uy,encuentratutarea.com,encurtareidog.top,eng-news.com,english-dubbed.com,english-topics.com,english101.co.za,enryumanga.com,ensenchat.com,entenpost.com,epsilonakdemy.com,eramuslim.com,erotikclub35.pw,erreguete.gal,ervik.as,esportsmonk.com,esportsnext.com,et-invest.de,ethiopia.co.il,evdeingilizcem.com,eventiavversinews.*,everydayhomeandgarden.com,evlenmekisteyenbayanlar.net,ewybory.eu,exam-results.in,exeking.top,eymockup.com,ezmanga.net##+js(noeval-if, /chp_?ad/) +faaduindia.com,fapfapgames.com,fastcars1.com,faqwiki.us,fattelodasolo.it,fchopin.net,felicetommasino.com,ferdroid.net,feyorra.top,ffcv.es,fhedits.in,fhmemorial.com,fibwatch.store,filmypoints.in,finalnews24.com,financeandinsurance.xyz,financeyogi.net,financid.com,finclub.in,findheman.com,findnewjobz.com,fine-wings.com,firescans.xyz,fitnesshealtharticles.com,fitnessscenz.com,fleamerica.com,flexamens.com,flixhub.*,flordeloto.site,flowsnet.com,folkmord.se,foodgustoso.it,foodiesjoy.com,footeuses.com,footyload.com,footymercato.com,forex-yours.com,forexcracked.com,forexrw7.com,former-railroad-worker.com,foxaholic.com,francaisfacile.net,free.7hd.club,free-3dtextureshd.com,free-wargamer.com,freebiesmockup.com,freecoursesonline.me,freedom3d.art,freefiremaxofficial.com,freefireupdate.com,freegetcoins.com,freelancerartistry.com,freemedicalbooks.org,freemockups.org,freemovies-download.com,freeoseocheck.com,freepasses.org,freescorespiano.com,freetarotonline.com,freetubetv.net,freevstplugins.*,freewoodworking.ca,freshersgold.com,friedrichshainblog.de,frpgods.com,ftuapps.*,fumettologica.it,funeral-memorial.com,funeralmemorialnews.com,funztv.com,futbolenlatelevision.com,fx-22.com##+js(noeval-if, /chp_?ad/) +gadgetspidy.com,gadgetxplore.com,gahag.net,galaxytranslations10.com,galinhasamurai.com,game5s.com,gameblog.jp,gamefi-mag.com,gamenv.net,gamers-haven.org,gamerxyt.com,games-manuals.com,gaminglariat.com,gamingsearchjournal.com,gatagata.net,gaypornhdfree.com,gazetazachodnia.eu,gdrivemovies.xyz,geekering.com,gemiadamlari.org,gentiluomodigitale.it,gesund-vital.online,getintopcm.com,getworkation.com,ghostsfreaks.com,girlydrop.com,gisvacancy.com,giuseppegravante.com,gkbooks.in,gkgsca.com,gksansar.com,glo-n.online,globelempire.com,gm-db.com,gnusocial.jp,goegoe.net,gogetadoslinks.*,gogetapast.com.br,gogifox.com,gogueducation.com,gokerja.net,gokushiteki.com,gold-24.net,golf.rapidmice.com,gomov.bio,goodriviu.com,googlearth.selva.name,gorating.in,gotocam.net,grafikos.cz,grasta.net,grazymag.com,greasygaming.com,greattopten.com,grootnovels.com,gsdn.live,gsmfreezone.com,gsmmessages.com,gtavi.pl,gurbetseli.net,gvnvh.net,gwiazdatalkie.com##+js(noeval-if, /chp_?ad/) +habuteru.com,hadakanonude.com,happy-otalife.com,haqem.com,harbigol.com,haryanaalert.*,haveyaseenjapan.com,haxnode.net,hdhub4one.pics,hbnews24.com,healthbeautybee.com,healthcheckup.com,healthfatal.com,heartofvicksburg.com,heartrainbowblog.com,hechos.net,hellenism.net,hentai-mega-mix.com,heutewelt.com,hhesse.de,highdefdiscnews.com,hilaw.vn,hindi.trade,hindimatrashabd.com,hindinest.com,hindishri.com,hiphopa.net,hipsteralcolico.altervista.org,historichorizons.com,hivetoon.com,hobbykafe.com,hockeyfantasytools.com,hoegel-textildruck.de,hojii.net,hoofoot.net,hookupnovel.com,hopsion-consulting.com,hostingreviews24.com,hostzteam.com,hotspringsofbc.ca,howtoblogformoney.net,howtocivil.com,hub2tv.com,hungarianhardstyle.hu,hyderone.com,hyogo.ie-t.net,hypelifemagazine.com,hypesol.com##+js(noeval-if, /chp_?ad/) +idesign.wiki,idevice.me,idpvn.com,iggtech.com,ignoustudhelp.in,ikarianews.gr,ilbassoadige.it,ilbolerodiravel.org,imperiofilmes.co,individualogist.com,india.mplandrecord.info,indratranslations.com,inertz.org,infocycles.com,infodani.net,infojabarloker.com,infokita17.com,informatudo.com.br,infrafandub.com,infulo.com,inlovingmemoriesnews.com,inprogrammer.com,inra.bg,insideeducation.co.za,insidememorial.com,insider-gaming.com,insurancepost.xyz,intelligence-console.com,interculturalita.it,inventionsdaily.com,iptvxtreamcodes.com,isabihowto.com.ng,italiadascoprire.net,itdmusic.*,itdmusicy.com,itmaniatv.com,itopmusic.com,itopmusics.com,itopmusicx.com,itz-fast.com,iumkit.net##+js(noeval-if, /chp_?ad/) +jaktsidan.se,janamathaya.lk,japannihon.com,javboys.*,javcock.com,javgay.com,jcutrer.com,jk-market.com,jobsbd.xyz,jobsibe.com,jobslampung.net,josemo.com,jra.jpn.org,jrlinks.in,jungyun.net,juninhoscripts.com.br,juventusfc.hu##+js(noeval-if, /chp_?ad/) +kacengeng.com,kakiagune.com,kali.wiki,kana-mari-shokudo.com,kanaeblog.net,kandisvarlden.com,karaoke4download.com,kattannonser.se,kawaguchimaeda.com,kaystls.site,kenkou-maintenance.com,kenta2222.com,keroseed.*,ketubanjiwa.com,kgs-invest.com,kh-pokemon-mc.com,khabarbyte.com,khabardinbhar.net,khohieu.com,kickcharm.com,kinisuru.com,kireicosplay.com,kits4beats.com,kllproject.lv,know-how-tree.com,knowstuff.in,kobitacocktail.com,kodaika.com,kodewebsite.com,kodibeginner.com,kokosovoulje.com,kolcars.shop,kolnovel.site,kompiko.pl,koreanbeauty.club,korogashi-san.org,korsrt.eu.org,kotanopan.com,koume-in-huistenbosch.net,krx18.com,kukni.to,kupiiline.com,kurakura21.com,kurosuen.live##+js(noeval-if, /chp_?ad/) +labstory.in,lacrima.jp,ladkibahin.com,ladypopularblog.com,lamorgues.com,lampungkerja.com,lapaginadealberto.com,lascelebrite.com,latinatemptation.com,latinlucha.es,law101.org.za,lawweekcolorado.com,lawyercontact.us,learnedclub.com,learnmany.in,learnchannel-tv.com,learnodo-newtonic.com,learnospot.com,lebois-racing.com,lectormh.com,j5z.xyz,leechyscripts.net,legendaryrttextures.com,legionscans.com,lendrive.web.id,letrasgratis.com.ar,levismodding.co.uk,lgcnews.com,lglbmm.com,lheritierblog.com,librasol.com.br,liddread.com,ligaset.com,limontorrents.com,linkskibe.com,linkvoom.com,linkz.*,linux-talks.com,linuxexplain.com,lionsfan.net,literarysomnia.com,littlepandatranslations.com,livefootballempire.com,lmtos.com,loanpapa.in,locurainformaticadigital.com,logofootball.net,lookism.me,lotus-tours.com.hk,lovingsiren.com,ltpcalculator.in,luchaonline.com,luciferdonghua.in,lucrebem.com.br,lustesthd.cloud,lustesthd.lat,lycee-maroc.com##+js(noeval-if, /chp_?ad/) +m4u.*,macrocreator.com,magesypro.*,mangcapquangvnpt.com,manhastro.com,manhastro.net,manhwass.com,mantrazscan.com,maps4study.com.br,marimo-info.net,marketedgeofficial.com,marketing-business-revenus-internet.fr,marketrevolution.eu,masashi-blog418.com,mastakongo.info,masterpctutoriales.com,maths101.co.za,matomeiru.com,matshortener.xyz,mcrypto.*,mdn.lol,medeberiya.site,medeberiya1.com,mediascelebres.com,medytour.com,meilblog.com,memorialnotice.com,mentalhealthcoaching.org,merlinshoujo.com,meteoregioneabruzzo.it,mewingzone.com,mhscans.com,michiganrugcleaning.cleaning,midis.com.ar,midlandstraveller.com,minddesignclub.org,minecraftwild.com,minhasdelicias.com,mitsmits.com,mixmods.com.br,mmfenix.com,mmoovvfr.cloudfree.jp,mmorpgplay.com.br,mh.baxoi.buzz,mockupcity.com,mockupgratis.com,mod18.com,modele-facture.com,modyster.com,monaco.co.il,morinaga-office.net,mosttechs.com,moto-station.com,motofan-r.com,movieping.com,movies4u.*,moviesnipipay.me,mprogaming.com,mrfreemium.blogspot.com,mscdroidlabs.es,msonglyrics.com,mtech4you.com,multimovies.tech,mummumtime.com,mundovideoshd.com,murtonroofing.com,musiclutter.xyz,musictip.net,mxcity.mx,mxpacgroup.com,my-ford-focus.de,myglamwish.com,myicloud.info,mylinkat.com,mylivewallpapers.com,mypace.sasapurin.com,myqqjd.com,mytectutor.com,myunity.dev,myviptuto.com##+js(noeval-if, /chp_?ad/) +naughtyblogs.xyz,negative.tboys.ro,neservicee.com,netsentertainment.net,neuna.net,newbookmarkingsite.com,newfreelancespot.com,newlifefuneralhomes.com,news-geinou100.com,newscard24.com,newstechone.com,nghetruyenma.net,ngomek.com,nhvnovels.com,nichetechy.com,nin10news.com,nicetube.one,nishankhatri.*,niteshyadav.in,nknews.jp,nkreport.jp,nlcosplay.com,noanyi.com,nobodycancool.com,noblessetranslations.com,nocfsb.com,nocsummer.com.br,nodenspace.com,noikiiki.info,notandor.cn,note1s.com,notesformsc.org,noteshacker.com,novacodeportal.xyz,novel-gate.com,novelbob.com,novelread.co,novelsparadise.site,nsbtmemoir.site,nsfwr34.com,nswdownload.com,ntucgm.com,nudeslegion.com,nukedpacks.site,nulledmug.com,nvimfreak.com,nyangames.altervista.org,nylonstockingsex.net##+js(noeval-if, /chp_?ad/) +oatuu.org,oberschwaben-tipps.de,obituaryupdates.com,odekake-spots.com,officialpanda.com,ofppt.net,ofwork.net,okblaz.me,olamovies.store,onehack.us,onestringlab.com,onlinetechsamadhan.com,onlinetntextbooks.com,onneddy.com,onyxfeed.com,openstartup.tm,opiniones-empresas.com,oracleerpappsguide.com,orenoraresne.com,oromedicine.com,orunk.com,osteusfilmestuga.online,otakuliah.com,oteknologi.com,otokukensaku.jp,ottrelease247.com,ovnihoje.com##+js(noeval-if, /chp_?ad/) +palofw-lab.com,paminy.com,pandaatlanta.com,pandanote.info,pantube.top,paolo9785.com,papafoot.click,papahd.club,paris-tabi.com,parisporn.org,parking-map.info,pasatiemposparaimprimir.com,pasokau.com,passionatecarbloggers.com,passportaction.com,pc-guru.it,pc-hobby.com,pc-spiele-wiese.de,pcgamedownload.net,pcgameszone.com,pdfstandards.net,pepar.net,personefamose.it,petitestef.com,pflege-info.net,phoenix-manga.com,phonefirmware.com,physics101.co.za,picgiraffe.com,pilsner.nu,piratemods.com,pitiurl.com,piximfix.com,plantatreenow.com,plaza.chu.jp,plc4free.com,pliroforiki-edu.gr,poapan.xyz,poco.rcccn.in,pogga.org,pokeca-chart.com,pondit.xyz,ponsel4g.com,poplinks.*,porlalibreportal.com,pornincest.net,pornfeel.com,porninblack.com,pornoenspanish.es,pornosubtitula2.com,portaldoaz.org,portaldosreceptores.org,portalyaoi.com,postazap.com,posturecorrectorshop-online.com,practicalkida.com,prague-blog.co.il,praveeneditz.com,premierftp.com,prensa.click,prensaesports.com,pressemedie.dk,pressurewasherpumpdiagram.com,pricemint.in,primemovies.pl,prismmarketingco.com,proapkdown.com,projuktirkotha.com,promiblogs.de,promimedien.com,promisingapps.com,protestia.com,psicotestuned.info,psychology-spot.com,publicdomainq.net,publicdomainr.net,publicidadtulua.com,pupuweb.com,putlog.net,pynck.com##+js(noeval-if, /chp_?ad/) +r1.richtoon.top,rabo.no,ragnarokscanlation.*,rahim-soft.com,rail-log.net,railwebcams.net,ranjeet.best,ranourano.xyz,raulmalea.ro,rbs.ta36.com,rbscripts.net,rctechsworld.in,readallcomics.com,readfast.in,readhunters.xyz,realfreelancer.com,realtormontreal.ca,receptyonline.cz,recipenp.com,redbubbletools.com,redfaucet.site,reeell.com,renierassociatigroup.com,reportbangla.com,reprezentacija.rs,retire49.com,retrotv.org,reviewmedium.com,revistaapolice.com.br,rgmovies.*,ribbelmonster.de,rightdark-scan.com,rinconpsicologia.com,ritacandida.com,riwayat-word.com,rlshort.com,rocdacier.com,rocketrevise.com,rollingglobe.online,romaierioggi.it,romaniasoft.ro,roms4ever.com,romviet.com,roshy.tv,rottenlime.pw,roznamasiasat.com,rubyskitchenrecipes.uk,ruyamanga.com,rv-ecommerce.com,ryanmoore.marketing,ryansharich.com##+js(noeval-if, /chp_?ad/) +sabishiidesu.com,saekita.com,samovies.net,samrudhiglobal.com,samurai.rzword.xyz,samurai.wordoco.com,sanblo.com,sanmiguellive.com,santhoshrcf.com,sararun.net,sarkariresult.social,satcesc.com,satoshifaucet.io,savegame.pro,sawwiz.com,scansatlanticos.com,schadeck.eu,sezia.com,schildempire.com,scholarshiplist.org,sciencebe21.in,scontianastro.com,scrap-blog.com,scripcheck.great-site.net,scriptsomg.com,searchmovie.wp.xdomain.jp,searchnsucceed.in,seasons-dlove.net,seirsanduk.com,seogroup.bookmarking.info,seoworld.in,seriu.jp,setsuyakutoushi.com,serieshdpormega.com,server-tutorials.net,serverbd247.com,sezia.com,shadagetech.com,shanurdu.com,sharphindi.in,sheikhmovies.*,shipseducation.com,shimauma-log.com,shittokuadult.net,shlly.com,shogaisha-shuro.com,shogaisha-techo.com,shopkensaku.com,shorttrick.in,showflix.*,showrovblog.com,shrinklinker.com,shrinkus.tk,shrivardhantech.in,sieradmu.com,siimanga.cyou,siirtolayhaber.com,sim-kichi.monster,sivackidrum.net,sk8therapy.fr,skardu.pk,skidrowreloaded.com,slawoslaw.pl,slowianietworza.pl,smallseotools.ai,smartinhome.pl,snowman-information.com,socebd.com,sociallyindian.com,softcobra.com,softrop.com,sohohindi.com,sosuroda.pl,sourds.net,south-park-tv.biz,soziologie-politik.de,sp500-up.com,space-faucet.com,spacestation-online.com,spardhanews.com,speculationis.com,spinoff.link,spiritparting.com,sport-97.com,sportsblend.net,ssdownloader.online,stablediffusionxl.com,stadelahly.net,stahnivideo.cz,starsgtech.in,start-to-run.be,startupjobsportal.com,stbemuiptvn.com,ster-blog.xyz,stimotion.pl,stireazilei.eu,stock-rom.com,streamseeds24.com,strefa.biz,studybullet.com,sufanblog.com,sukuyou.com,sullacollina.it,sumirekeiba.com,sundberg.ws,suneelkevat.com,super-ethanol.com,superpackpormega.com,surgicaltechie.com,suvvehicle.com,swietaslowianskie.pl,sylverkat.com,symboleslowianskie.pl,sysguides.com,swordalada.org,system32.ink,sztucznainteligencjablog.pl##+js(noeval-if, /chp_?ad/) +talentstareducation.com,tamilanzone.com,tamilhit.tech,tamilnaadi.com,tamilultra.team,tamilultratv.co.in,tatsublog.com,taurus.topmanhuas.org,teachersupdates.net,team-rcv.xyz,teamkong.tk,teamupinternational.com,tech4auto.in,techacrobat.com,techastuces.com,techdriod.com,techedubyte.com,techforu.in,techiepirates.com,techiestalk.in,techkeshri.com,techlog.ta-yan.ai,technewslive.org,technewsrooms.com,technicalviral.com,technorj.com,technorozen.com,techoreview.com,techprakash.com,techsbucket.com,techstwo.com,techyhigher.com,techyrick.com,tecnomd.com,tecnoscann.com,tedenglish.site,tehnotone.com,telephone-soudan.com,teluguhitsandflops.com,temporeale.info,tenbaiquest.com,tespedia.com,testious.com,thangdangblog.com,thaript.com,the-mystery.org,theberserkmanga.com,thebigblogs.com,theconomy.me,thedigitaltheater.com,thedilyblog.com,thegamearcade.com,thegnomishgazette.com,theinternettaughtme.com,thejoblives.com,thelastgamestandingexp.com,theliveupdate.com,thenewsglobe.net,theprofoundreport.com,thermoprzepisy.pl,thesextube.net,thesleak.com,thesportsupa.com,thewambugu.com,theworldobits.com,thiagorossi.com.br,thosa.info,throwsmallstone.com,tiny-sparklies.com,tirumalatirupatiyatra.in,titfuckvideos.com,tnstudycorner.in,today-obits.com,todays-obits.com,toeflgratis.com,tokoasrimotedanpayet.my.id,toorco.com,topbiography.co.in,topfaucet.us,topnewsshow.com,topshare.in,topsworldnews.com,toptenknowledge.com,torrentdofilmeshd.net,torrentgame.org,totally.top,towerofgod.top,transgirlslive.com,trendflatt.com,trendohunts.com,trgtkls.org,trilog3.net,trovapromozioni.it,trucosonline.com,tsubasatr.org,tukangsapu.net,tuktukcinma.com,tunabagel.net,turkeymenus.com,turkishseriestv.net,tutorialesdecalidad.com,tutorialsduniya.com,tuxnews.it,tw.xn--h9jepie9n6a5394exeq51z.com,twobluescans.com##+js(noeval-if, /chp_?ad/) +uciteljica.net,udebut.jp,udemyking.com,uiuxsource.com,ukigmoch.com,ultimate-catch.eu,underground.tboys.ro,uozzart.com,uploadbank.com,uprwssp.org,uqozy.com,usahealthandlifestyle.com,userupload.*,ustimz.com,ustvgo.live,utaitebu.com,utilidades.ecuadjsradiocorp.com,uur-tech.net##+js(noeval-if, /chp_?ad/) +vegamoviese.*,vegas411.com,venus-and-mars.com,viciante.com.br,videodidixx.com,videosgays.net,villettt.kitchen,vintagepornfun.com,violablu.net,virabux.com,viralxns.com,virtual-youtuber.jp,visorsmr.com,visortecno.com,vitadacelebrita.com,vivrebordeaux.fr,vmorecloud.com,vnuki.net,voiceloves.com,voidtruth.com,voiranime1.fr,vpzserver.com,vstplugin.net##+js(noeval-if, /chp_?ad/) +webcras.com,webhostingoffer.org,websiteglowgh.com,weebee.me,welcometojapan.jp,whats-new.cyou,wheelofgold.com,wholenotism.com,wikisharing.com,wikipooster.com,wikitechy.com,windbreaker.me,windowsaplicaciones.com,wirtualnelegionowo.pl,wirtualnynowydwor.pl,wolfgame-ar.site,workxvacation.jp,worldgyan18.com,worldtop2.com,worldwidestandard.net,worthitorwoke.com,wp.solar,wpteq.org,writeprofit.org,wvt24.top,www2.tmyinsight.net##+js(noeval-if, /chp_?ad/) +xn--algododoce-j5a.com,xn--kckzb2722b.com,xn--n8jwbyc5ezgnfpeyd3i0a3ow693bw65a.com,xn--nbkw38mlu2a.com,xprime4u.*,xpressarticles.com,xvipp.com##+js(noeval-if, /chp_?ad/) +yakisurume.com,yakyufan-asobiba.com,yamsoti.com,yazilidayim.net,ycongnghe.com,yestech.xyz,ynk-blog.com,yoshare.net,youlife24.com,youmedemblik.nl,youpit.xyz,your-local-pest-control.com,yourdesignmagazine.com,yuatools.com,yuki0918kw.com,yumekomik.com,yumeost.net,yunakhaber.com,yuramanga.my.id,yurudori.com##+js(noeval-if, /chp_?ad/) +zdrz.xyz,zecchino-doro.it,zeijakunahiko.com,zien.pl,ziminvestors.com,ziontutorial.com,zippyshare.cloud,zippysharecue.com,zpserver.com,zyromod.com##+js(noeval-if, /chp_?ad/) +bedavahesap.org##+js(no-xhr-if, adsbygoogle) +fastcars1.com##center +pcoptimizedsettings.com,oldcamera.pl,ralli.ee,stbemuiptv.com,thesaltysoldier.com,tvappapk.com,vipotv.com,whentostream.com,xcandid.vip##+js(noeval-if, js_func_decode_base_64) +dongknows.com,hardwaretimes.com##+js(acs, document.createElement, js_func_decode_base_64) +thesaltysoldier.com##.boxzilla-overlay +thesaltysoldier.com##.boxzilla-the-salty-soldier-uncensored +thefightingcock.co.uk##+js(noeval-if, decodeURIComponent(atob) +123multihub.*,3xyaoi.com,bellezashot.com##+js(noeval-if, adsbygoogle) +arcadepunks.com##+js(aeld, load, innerHTML) +ballexclusives.com##body > h4[class="adblock_title"] +ballexclusives.com##body > div.adblock_subtitle +ballexclusives.com##a[href^="https://ballexclusives.com/"][class]:has-text(Refresh) +blisseyhusband.net##.adblock_subtitle +blisseyhusband.net##.adblock_title +blisseyhusband.net##.refresh-btn-styled +/wp-content/plugins/steam-verde-adblock-detector/* +getintopcm.com###block-23 +getintopcm.com##body > div[class=""] +getintopcm.com##body > .adblock_title +getintopcm.com##body > .adblock_subtitle > p +howtocivil.com##body > .adblock_title +howtocivil.com##body > .adblock_subtitle > p +howtocivil.com##body > div[class=""] +prismmarketingco.com##.prism-widget +thedigitaltheater.com##.widget_custom_html +thedigitaltheater.com###block-22 +thedigitaltheater.com###block-20 +||cdn.jsdelivr.net/npm/bulma@0.9.3/css/bulma.min.css$css,domain=nishankhatri.* +mh.baxoi.buzz##.wp-manga.c-top-sidebar.c-sidebar[style="background-color:#262626; "] +mh.baxoi.buzz##.wp-manga.c-bottom-sidebar.c-sidebar[style="background-color:#ffffff; "] +/wp-content/plugins/chp-ads-block-detector/* +emperorscan.com,makotoichikawa.net,telephone-soudan.com##+js(aost, document.querySelectorAll, /(?=^(?!.*(https|injectedScript)))/) +addtobucketlist.com,alternativa104.net,asumesi.com,ayo24.id,barrier-free.net,berich8.com,bitzite.com,blogenginee.com,bloooog.it,blurayufr.*,branditechture.agency,chataigpt.org,coinsrev.com,eliobenedetto.it,examscisco.com,fattelodasolo.it,helicomicro.com,iamflorianschulze.com,karwan.tv,kyoto-kanko.net,limontorrents.com,livenewsof.com,magesypro.com,medeberiya.site,medeberiya1.com,medeberiyax.com,mscdroidlabs.es,musiclutter.xyz,nakiny.com,oyundunyasi.net,parrocchiapalata.it,photoshopvideotutorial.com,pornincest.net,rockmods.net,samovies.net,sevenst.us,sulocale.sulopachinews.com,tabering.net,xn--nbkw38mlu2a.com##+js(aopr, adsBlocked) +kodewebsite.com##+js(aopr, jQuery.popunder) +samaysawara.in##+js(acs, document.addEventListener, google_ad_client) +javcock.com##+js(aopr, popns) +fantasiku.com##+js(nowoif, _blank) +fantasiku.com##.icb-responsive-wrapper +aitoolsfree.org##font[style="font-size: 0.7rem; color: #bebebe"] +lectorhub.j5z.xyz##.wp-manga.c-bottom-sidebar.c-sidebar:has(ins[class^="adv-"]) +lectorhub.j5z.xyz##.col-sm-12.col-md-12.sidebar-hidden.main-col > .c-sidebar:has(div#block-5) +pornoenspanish.es##.ofrnmdnrnevhlzmzyxbgleutslzfwuroexvcnwqwwlydvdjqzttajkpx.elnisglznxbrvawnsndqdxnzturaunseyzjlvvtznnavldvzzajkpx +pornoenspanish.es##+js(rmnt, script, popMagic) +pornoenspanish.es##.advertisement +orunk.com###scroll_up + div[id][class] +richtoon.top###ad-container +r1.richtoon.top##.c-top-sidebar.c-sidebar[style="background-color:#000000; padding:50px 5px ; "] +r1.richtoon.top##.c-bottom-sidebar.c-sidebar[style="background-color:#f3f3f3; padding:50px 7px ; "] +coveredgeekly.com###jeg_off_canvas + div[id][class*=" "] +seriu.jp##body > .site-footer + div[id][class*=" "] +blogue.tech###jeg_forgotform + div[id][class] +##a[id][href="https://chpadblock.com/"][rel^="noopener noreferrer"] +##a[id][href="https://hamrocsit.com"][rel^="noopener noreferrer"] +##a[id][href="https://toolkitspro.com"][rel^="noopener noreferrer"] +###go-to-top + div[id][class] +###st-ami + div[id][class*=" "] +##.close-btn[onclick="closeAd()"] +##.close-btn2[onclick="closeAd2()"] +##.close-btn3[onclick="closeAd3()"] +##.close-btn4[onclick="closeAd4()"] +! ###page-top + div[id][class*=" "] +throwsmallstone.com###custom_html-10 +minecraftwild.com###jeg_off_canvas + div[id][class] +freshersgold.com###main-container + div[id][class] +webcras.com##body > b + br + div[id][class] +meilblog.com##.adblock_subtitle +meilblog.com##.adblock_title +@@||hyogo.ie-t.net^$ghide +enryumanga.com,varnascan.com###floatcenter +!#if cap_html_filtering +bi-girl.net,ftuapps.*,hentaiseason.com,hoodtrendspredict.com,marcialhub.xyz,odiadance.com,osteusfilmestuga.online,ragnarokscanlation.opchapters.com,sampledrive.org,showflix.*,swordalada.org,tvappapk.com,twobluescans.com,varnascan.xyz##^script:has-text(/decodeURIComponent\(escape|fairAdblock/) +!#else +bi-girl.net,ftuapps.*,hentaiseason.com,hoodtrendspredict.com,marcialhub.xyz,odiadance.com,osteusfilmestuga.online,ragnarokscanlation.opchapters.com,sampledrive.org,showflix.*,swordalada.org,tvappapk.com,twobluescans.com,varnascan.xyz##+js(rmnt, script, /decodeURIComponent\(escape|fairAdblock/) +hentaiseason.com,showflix.*##+js(aost, document.getElementById, fairAdblock) +!#endif +sampledrive.org##+js(rmnt, script, detectAdBlock) +sampledrive.org##.widget_custom_html +ftuapps.*##body > div:has(.adblock_title) +twobluescans.com###ad-container +twobluescans.com##+js(rmnt, script, /ai_|googletag|adb/) +mitaku.net##+js(no-xhr-if, googlesyndication) +! Problematic sites with cloudflare +nxbrew.net,tresdaos.com##+js(trusted-suppress-native-method, eval, '"/chp_?ad/"', prevent) +38.242.194.12,bi-girl.net,blurayufr.*,idealfollow.in,medeberiyaa.com,samuraiscan.org,shinobijawi.id,snbc13.com,teluguflix.*##+js(no-xhr-if, googlesyndication) +androjungle.com,bookszone.in,shortix.co##^script:has-text(onerror) +!#if !cap_html_filtering +androjungle.com,bookszone.in,shortix.co##+js(rmnt, script, onerror) +!#endif +iconmonstr.com##+js(aost, document.getElementsByTagName, adsBlocked) +bitview.cloud##.code-block +||zacknation.net/*/ads-$image +@@||kaystls.site^$ghide +kaystls.site##+js(nostif, AdDetect) +kaystls.site##.code-block +fcsnew.net##+js(rmnt, script, adsBlocked) +liddread.com##+js(rmnt, style, min-height:300px) +! !SECTION: CHP +! SECTION: ai_front sites +itpassportgokaku.com,legiongamesgod.com,mc-hacks.net,meicho.marcsimz.com##+js(aopw, ai_front) +adrianoluis.net,animecast.net,armyranger.com,articletz.com,bibliopanda.com,boxylucha.com,chibchat.com,doujinnote.com,duniailkom.com,ebooksyard.com,enciclopediaonline.com,entano.jp,eyalo.com,fotopixel.es,ichberlin.com,ireez.com,keepkoding.com,latribunadeautomocion.es,linemarlin.com,lumpiastudio.com,miaandme.org,mobility.com.ng,mygardening411.com,newstvonline.com,organismes.org,papagiovannipaoloii.altervista.org,rencah.com,riverdesdelatribuna.com.ar,rogoyume.jp,sakpot.com,sarkarinaukry.com,seamanmemories.com,swatalk.com,theorie-musik.de,topperpoint.com,torascripts.org,travel-the-states.com,vozz.vn##+js(aost, String.prototype.charCodeAt, ai_) +thecakeboutiquect.com##+js(acs, b2a, ai_adb) +daemon-hentai.com,pawastreams.pro##+js(acs, b2a, ai_adb, /^data:/) +ebooksyard.com##.admania_themead +||windorange.info^ +! for-ad-inserter-sites +!#if cap_html_filtering +bibliopanda.visblog.online,hallofseries.com,isekaitube.com,jrants.com,luciferdonghua.in,toursetlist.com,volksliederarchiv.de,world-iptv.club##^script:has-text(ai_adb) +!#else +bibliopanda.visblog.online,hallofseries.com,isekaitube.com,jrants.com,luciferdonghua.in,toursetlist.com,volksliederarchiv.de,world-iptv.club##+js(rmnt, script, ai_adb) +!#endif +volksliederarchiv.de##.ai-track +toursetlist.com##.widget_custom_html +||media.net^$object,redirect=noopjs +||google-analytics.com^$object,redirect=noopjs +||doubleclick.net^$object,redirect=noopjs +||secure.quantserve.com^$object,redirect=noopjs +||amazon-adsystem.com^$object,redirect=noopjs +||ezodn.com^$object,redirect=noopjs +||googletagmanager.com^$object,redirect=noopjs +/468x60/*$object,redirect=noopjs +/468x60/*$image,redirect=1x1.gif +@@||luciferdonghua.in^$1p +luciferdonghua.in##body > div[id][style]:has(> .kln) +luciferdonghua.in##.video-content > div[id][style]:has(> div > span[onclick]) +||muvmag.com/front.js +! !SECTION: ai_front sites +! SECTION: abDetectorPro sites +advantien.com,bailbondsfinder.com,bigpiecreative.com,childrenslibrarylady.com,classifarms.com,comtasq.ca,crone.es,ctrmarketingsolutions.com,dropnudes.com,ftuapps.dev,gendatabase.com,ghscanner.com,grsprotection.com,gruporafa.com.br,inmatefindcalifornia.com,inmatesearchidaho.com,itsonsitetv.com,mfmfinancials.com,myproplugins.com,nurulislam.org,onehack.us,ovester.com,paste.bin.sx,privatenudes.com,renoconcrete.ca,richieashbeck.com,sat.technology,short1ink.com,stpm.co.uk,wegotcookies.co##+js(aeld, load, abDetectorPro) +advantien.com,bailbondsfinder.com,bg-gledai.*,bigpiecreative.com,childrenslibrarylady.com,classifarms.com,comtasq.ca,crone.es,ctrmarketingsolutions.com,dropnudes.com,ftuapps.dev,gendatabase.com,grsprotection.com,gruporafa.com.br,inmatefindcalifornia.com,inmatesearchidaho.com,itsonsitetv.com,mfmfinancials.com,myproplugins.com,nurulislam.org,onehack.us,ovester.com,paste.bin.sx,privatenudes.com,renoconcrete.ca,richieashbeck.com,short1ink.com,stpm.co.uk,wegotcookies.co##+js(no-xhr-if, googlesyndication) +ghscanner.com,sat.technology##+js(no-fetch-if, googlesyndication) +onehack.us##+js(nostif, modal) +ftuapps.dev##+js(nostif, ai_) +||adultconfessions.com/js/abdetectorpro.script.js +/wp-content/plugins/ultimate-anti-adblock/* +! !SECTION: abDetectorPro sites +! SECTION: mdpDeBlocker +! thememazing .com broken page + other anti adb +! fix mdpDeBlocker + some other anti-adb +||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,xhr,redirect=googlesyndication_adsbygoogle.js:5,domain=~zipextractor.app|~kio.ac|~authenticateme.xyz +||pagead2.googlesyndication.com^$xhr,redirect=noop.js +dcleakers.com,esgeeks.com,pugliain.net,uplod.net,worldfreeware.com##+js(nostif, mdp) +*$script,redirect-rule=noopjs,domain=siamblockchain.com +||pugliain.net/wp-content/uploads/*.gif$image +siamblockchain.com##.headerad-desk +arabshentai.com,ariversegl.com,asia2tv.com,3dzip.info,boyfuck.me,cehennemstream.xyz,cgtips.org,cloudhostingz.com,cybermania.ws,daozoid.com,dvdgayporn.com,downloadcursos.gratis,dx-tv.com,filmyzones.com,fitnessplanss.com,freereadnovel.online,idlixvip.*,javboys.tv,magicgameworld.com,mangacrab.org,medicalstudyzone.com,netfuck.net,onezoo.net,pokopow.com,readingpage.fun,sampledrive.org,sharedwebs.com,shemalegape.net,tojimangas.com,tuktukcinma.com,vercanalesdominicanos.com,ycongnghe.com##+js(no-fetch-if, /googlesyndication|doubleclick/, length:10, {"type": "cors"}) +arabshentai.com,ariversegl.com,asia2tv.com,3dzip.info,boyfuck.me,cehennemstream.xyz,cgtips.org,cloudhostingz.com,cybermania.ws,daozoid.com,dvdgayporn.com,downloadcursos.gratis,dx-tv.com,filmyzones.com,fitnessplanss.com,freereadnovel.online,idlixvip.*,javboys.tv,magicgameworld.com,mangacrab.org,medicalstudyzone.com,netfuck.net,onezoo.net,pokopow.com,readingpage.fun,sampledrive.org,sharedwebs.com,shemalegape.net,tojimangas.com,tuktukcinma.com,vercanalesdominicanos.com,ycongnghe.com##+js(no-xhr-if, /googlesyndication|doubleclick/, length:10) +/\/wp-content\/plugins\/[a-f]{6}\.js\?ver=/$script,1p,match-case,domain=arabshentai.com|filmyzones.com +/\/wp-content\/uploads(?:\/[a-f]{6}){2}\.js/$script,1p,match-case,domain=~edu|~gov +/^https:\/\/[-a-z0-9]+\.[a-z]+\/uploads(?:\/[a-f]{6}){2}\.js\?ver=17\d{8}$/$script,1p,match-case,domain=~edu|~gov +/\.com\/[0-9a-f]{9}\.js\?ver=/$script,1p,match-case,domain=manhwass.com +!#if env_safari +/\/wp-content\/plugins\/[a-f][a-f][a-f][a-f][a-f][a-f]\.js\?ver=/$script,1p,match-case,domain=arabshentai.com|filmyzones.com +/\/wp-content\/uploads\/[a-f][a-f][a-f][a-f][a-f][a-f]\/[a-f][a-f][a-f][a-f][a-f][a-f]\.js/$script,1p,match-case +/^https:\/\/[-a-z0-9]+\.[a-z]+\/uploads\/[a-f][a-f][a-f][a-f][a-f][a-f]\/[a-f][a-f][a-f][a-f][a-f][a-f]\.js\?ver=17[0-9]+$/$script,1p,match-case,domain=~edu|~gov +!#endif +filmyzones.com,gamer18.net,pornflixhd.com,sampledrive.org##+js(aeld, DOMContentLoaded, src=atob) +filmyzones.com##+js(nostif, ai_adb) +idlixvip.*##img[alt]:style(display: block !important;) +.gif^$image,domain=idlixvip.*|idlixvip.asia +nulljungle.com##+js(aeld, DOMContentLoaded, adsBlocked) +manhwass.com##+js(trusted-suppress-native-method, Document.prototype.querySelector, '"/[0-9a-f]+-modal/"', abort, /\/[0-9a-f]+\.js\?ver=/) +!#if cap_html_filtering +shemaleraw.com,thecustomrom.com,wemove-charity.org##^script:has-text(deblocker) +!#else +shemaleraw.com,thecustomrom.com,wemove-charity.org##+js(rmnt, script, deblocker) +!#endif +! !SECTION: mdpDeBlocker +! SECTION: tie-adblock +jnews5.com,kayoanime.com##+js(set, tie.ad_blocker_detector, false) +! !SECTION: tie-adblock +! SECTION: site-access-popup +animenew.com.br,bgmiesports.in,daotekno.com,idealight.it,journalduweb.org,minutemirror.com.pk,relampagomovies.com,sports-arena.space,techybuff.com,zataz.com##+js(nostif, bait) +! !SECTION: site-access-popup +! SECTION: Admiral +dotesports.com,epicstream.com,fallbrook247.com,feral-heart.com,gamesgames.com,gamerevolution.com,gazettenet.com,girlsgogames.co.uk,insidenova.com,jetztspielen.de,kasvekuvvet.net,leitesculinaria.com,nbcnews.com,notevibes.com,practicalpainmanagement.com,prad.de,progameguides.com,ranker.com,realityblurb.com,ruinmyweek.com,sanangelolive.com,sanfoundry.com,selfhacked.com,siliconera.com,son.co.za,sporcle.com,stealthoptional.com,thesportster.com,upi.com,visualcapitalist.com,wegotthiscovered.com,primagames.com##+js(aopr, googletag) +audizine.com,blackenterprise.com,cwtv.com,magesy.*,pastes.io##+js(acs, document.createElement, admiral) +pc-builds.com,today.com,videogamer.com,wrestlinginc.com##+js(set, admiral, noopFunc) +pcbolsa.com##^script:has-text(/"v4ac1eiZr0"|""\)\.split\(","\)\[4\]|(\.localStorage\)|JSON\.parse\(\w)\.getItem\("|["']_aQS0\w+["']/) +! combined - will move to split gradually +15min.lt,247sports.com,abc17news.com,addictinggames.com,agrodigital.com,aliontherunblog.com,allaboutthetea.com,allmovie.com,allmusic.com,allthingsthrifty.com,amessagewithabottle.com,arstechnica.com,audiomack.com,awkward.com,barcablaugranes.com,barnsleychronicle.com,bethcakes.com,betweenenglandandiowa.com,blazersedge.com,blogher.com,blu-ray.com,bluegraygal.com,boredpanda.com,briefeguru.de,brobible.com,cagesideseats.com,cbsnews.com,cbssports.com,celiacandthebeast.com,chaptercheats.com,cheatsheet.com,clickondetroit.com,commercialcompetentedigitale.ro,crooksandliars.com,dailydot.com,dailykos.com,dailyvoice.com,danslescoulisses.com,databazeknih.cz,decider.com,didyouknowfacts.com,dpreview.com,egoallstars.com,eldiariony.com,fark.com,femestella.com,flickr.com,fmradiofree.com,forums.hfboards.com,free-power-point-templates.com,freeconvert.com,frogsandsnailsandpuppydogtail.com,funtasticlife.com,fwmadebycarli.com,golfdigest.com,grunge.com,gulflive.com,homeglowdesign.com,honeygirlsworld.com,ibtimes.co.in,imgur.com,intouchweekly.com,iphoneincanada.ca,jasminemaria.com,kion546.com,last.fm,lettyskitchen.com,lifeandstylemag.com,lifeinleggings.com,lizzieinlace.com,localnews8.com,lonestarlive.com,macwelt.de,madeeveryday.com,maidenhead-advertiser.co.uk,mardomreport.net,melangery.com,miamiherald.com,mmamania.com,mostlymorgan.com,motherwellmag.com,musicfeeds.com.au,naszemiasto.pl,nationalpost.com,nationalreview.com,nbcsports.com,news.com.au,ninersnation.com,nordot.app,nothingbutnewcastle.com,nsjonline.com,nypost.com,observer.com,ontvtonight.com,pagesix.com,patheos.com,pauladeen.com,pcbolsa.com,pep.ph,phillyvoice.com,premierguitar.com,puckermom.com,pwinsider.com,reelmama.com,rlfans.com,royalmailchat.co.uk,sandrarose.com,sbnation.com,sheknows.com,sidereel.com,smartworld.it,sneakernews.com,soldionline.it,sport-fm.gr,sportsgamblingpodcast.com,spotofteadesigns.com,ssnewstelegram.com,stacysrandomthoughts.com,stylecaster.com,tablelifeblog.com,tastingtable.com,techcrunch.com,thecelticblog.com,thedailymeal.com,thegatewaypundit.com,theflowspace.com,themarysue.com,thenerdstash.com,thenerdyme.com,theprudentgarden.com,tiermaker.com,timesofisrael.com,tiscali.cz,tokfm.pl,torontosun.com,usmagazine.com,wallup.net,wannacomewith.com,wcnc.com,weather.com,wimp.com,windsorexpress.co.uk,woojr.com,worldoftravelswithkids.com,worldstar.com,worldstarhiphop.com,worldsurfleague.com,wyborkierowcow.pl,yourcountdown.to##+js(rmnt, script, `/"v4ac1eiZr0"|""\)\.split\(","\)\[4\]|(\.localStorage\)|JSON\.parse\(\w)\.getItem\("|["']_aQS0\w+["']|decodeURI\(decodeURI\("| div.gnt_n_w_w:style(margin-bottom: 0 !important;) +! others +dailydot.com##.article-ad__top:style(min-height:0px !important) +deadline.com##.ad-label +dexerto.com##+js(json-edit, ..admiralScriptCode) +bloxinformer.com##+js(json-edit, .props[?.id=="admiral-bootstrap"].dangerouslySetInnerHTML) +viralviralvideos.com##+js(acs, document.createElement, decodeURI(decodeURI, /^data:/) +dailycaller.com##+js(set, dc.adfree, true) +/.api/admiral +/admiral/script +||lib.twnmm.com/admiral-remote-config.json +||imasdk.googleapis.com/js/sdkloader/ima3.js$domain=givemesport.com,important +||cookiebot.com^$domain=nexusmods.com +@@||succeedscene.com^$script,badfilter +premierguitar.com##.topbarplaceholder +premierguitar.com##div#scomponentAdDiv_0_0_28_0_0_0_2_0 +premierguitar.com##.home-ad-block +superherohype.com##a.wp-block-button__link:is([href^="https://amzn.to/"], [href^="https://www.amazon.com/"]) +sanfoundry.com##.sf-desktop-ads +||qtoptens.com^$csp=worker-src 'none' +androidpolice.com,cbr.com,gamerant.com,howtogeek.com,thegamer.com##+js(aeld, error, blocker) +/htdocs/js/admiral/init.js$1p +autonews.com,cnet.com,inc.com,mtv.com,polygon.com,prydwen.gg,theverge.com,vox.com,weather.com,wunderground.com,zdnet.com##+js(acs, admiral) +androidpolice.com,carbuzz.com,cbr.com,collider.com,dualshockers.com,eater.com,gamerant.com,howtogeek.com,makeuseof.com,movieweb.com,screenrant.com,thegamer.com,worldstar.com,worldstarhiphop.com,xda-developers.com##+js(acs, admiral) +247sports.com##+js(rpnt, script, /^/, (()=>{window.admiral=function(d\,a\,b){if("function"==typeof b)try{b({})}catch(a){}}})();, sedCount, 1) +247sports.com##+js(set, __INITIAL_DATA__.siteData.admiralScript) +kinobox.cz##+js(prevent-innerHTML, script, .cmd.unshift) +ranker.com##+js(aeld, /admiral/) +ranker.com##+js(set, runtimeConfig.AM_PATH, undefined) +lostcoastoutpost.com##+js(aost, decodeURI, CACHE) +lostcoastoutpost.com##+js(rmnt, script, /\.cmd\.unshift|adblockerDisabled/, excludes, \,\") +techcrunch.com##+js(aeld, error, .indexOf) +techcrunch.com##+js(aeld, load, .indexOf) +techcrunch.com##+js(nostif, .indexOf) +prydwen.gg##+js(json-prune-fetch-response, ads, , propsToMatch, /runtime-config) +prydwen.gg##div.custom-banner-header +! Sinclair sites +komonews.com,wpgh53.com##+js(json-edit, ..props[?.id=="admiral-initializer"].children) +athlonsports.com,autoblog.com,bikemag.com,dengarden.com,mensfitness.com,mensjournal.com,parade.com,paradehomeandgarden.com,paradepets.com,pethelpful.com,powder.com,shophq.com,surfer.com,thespun.com,thestreet.com,travelhost.com##+js(json-edit, ..props.children.*[?.key=="admiral-script"]) +athlonsports.com,autoblog.com,bikemag.com,dengarden.com,mensfitness.com,mensjournal.com,parade.com,paradehomeandgarden.com,paradepets.com,pethelpful.com,powder.com,shophq.com,surfer.com,thespun.com,thestreet.com,travelhost.com##+js(trusted-json-edit, ..props.config.ad.enabled=false) +athlonsports.com,autoblog.com,bikemag.com,dengarden.com,mensfitness.com,mensjournal.com,parade.com,paradehomeandgarden.com,paradepets.com,pethelpful.com,powder.com,shophq.com,surfer.com,thespun.com,thestreet.com,travelhost.com##+js(trusted-json-edit, ..Admiral.isEnabled=false) +athlonsports.com,autoblog.com,bikemag.com,dengarden.com,mensfitness.com,mensjournal.com,parade.com,paradehomeandgarden.com,paradepets.com,pethelpful.com,powder.com,shophq.com,surfer.com,thespun.com,thestreet.com,travelhost.com##+js(trusted-json-edit, ..admiral=false) +@@||securepubads.g.doubleclick.net/tag/js/gpt.js$redirect-rule,domain=athlonsports.com|autoblog.com|bikemag.com|dengarden.com|mensfitness.com|mensjournal.com|parade.com|paradehomeandgarden.com|paradepets.com|pethelpful.com|powder.com|shophq.com|surfer.com|thespun.com|thestreet.com|travelhost.com +||securepubads.g.doubleclick.net/tag/js/gpt.js$domain=athlonsports.com|autoblog.com|bikemag.com|dengarden.com|mensfitness.com|mensjournal.com|parade.com|paradehomeandgarden.com|paradepets.com|pethelpful.com|powder.com|shophq.com|surfer.com|thespun.com|thestreet.com|travelhost.com,important +||zaf.api.fanbyte.com/stable/js/ +/wp-json/navy/v*/tag?pid=$xhr,1p +||consent.wegotthiscovered.com^ +||storage.googleapis.com/pravda-ad-script/ +||s.w-x.co/helios/twc/ +||parkers.co.uk/polite-msg-js/ +! !SECTION: Admiral +! SECTION: Ad-Shield +!#if cap_html_filtering +||07c225f3.online^$~css,domain=dogdrip.net|smsonline.cloud +||content-loader.com^$~css,domain=dogdrip.net|smsonline.cloud +||css-load.com^$~css,domain=dogdrip.net|smsonline.cloud +||html-load.com^$~css,domain=dogdrip.net|smsonline.cloud +||img-load.com^$~css,domain=dogdrip.net|smsonline.cloud +@@/loader.min.js$xhr,script,domain=dogdrip.net|smsonline.cloud +/loader.min.js$xhr,script,domain=dogdrip.net|smsonline.cloud,replace=/\)\)\)\};function [a-z]{1\,2}\([a-z]{1\,2}\,[a-z]{1\,2}\,[a-z]{1\,2}\)\{try\{!async function.*?\)\]\([a-z0-9]{1\,2}\)\}\}function /)))}; function / +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js|$script,xhr,domain=dogdrip.net|smsonline.cloud +!#else +*$doc,csp=script-src-attr 'none',to=badmouth1.com|freemcserver.net +||html-load.com/loader.min.js$domain=badmouth1.com|freemcserver.net +||content-loader.com/loader.min.js$redirect=noopjs,domain=mlbpark.donga.com +dogdrip.net##+js(no-fetch-if, /ad\.doubleclick\.net|static\.dable\.io/) +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js|$script,xhr,domain=etoday.co.kr|dogdrip.net|smsonline.cloud +@@||static.criteo.net/js/ld/publishertag.prebid.js|$xhr,domain=dogdrip.net|smsonline.cloud +@@||securepubads.g.doubleclick.net/tag/js/gpt.js|$script,domain=dogdrip.net|smsonline.cloud +@@*$ghide,domain=dogdrip.net|smsonline.cloud +||html-load.com^$redirect=noopjs,domain=carscoops.com|dziennik.pl|eurointegration.com.ua|flatpanelshd.com|footballtransfer.com.ua|footballtransfer.ru|hoyme.jp|issuya.com|iusm.co.kr|logicieleducatif.fr|mynet.com|onlinegdb.com|pravda.com.ua|reportera.co.kr|sportanalytic.com|sportsrec.com|sportsseoul.com|text-compare.com|tweaksforgeeks.com|wfmz.com|winfuture.de|worldhistory.org|maketecheasier.com|palabr.as|motscroises.fr|cruciverba.it|w.grapps.me|gazetaprawna.pl|pressian.com|wetter.com +||asloader.tz.de^$script,redirect=noopjs +carscoops.com,eurointegration.com.ua,flatpanelshd.com,footballtransfer.com.ua,footballtransfer.ru,hoyme.jp,issuya.com,itainews.com,iusm.co.kr,mynet.com,onlinegdb.com,picrew.me,pravda.com.ua,reportera.co.kr,sportanalytic.com,sportsrec.com,sportsseoul.com,text-compare.com,tweaksforgeeks.com,wfmz.com,winfuture.de,worldhistory.org,palabr.as,motscroises.fr,w.grapps.me,gazetaprawna.pl,pressian.com##+js(nostif, error-report.com) +automobile-catalog.com,motorbikecatalog.com,maketecheasier.com##+js(nostif, loader.min.js) +mlbpark.donga.com##+js(nostif, content-loader.com) +cboard.net###left-ba +ygosu.com,bamgosu.site##iframe[src^="https://tab2.clickmon.co.kr/"] +ygosu.com,bamgosu.site##iframe[src^="https://cdn.nhnace.com/"] +ygosu.com,bamgosu.site##div[style="text-align:center"]:has(> iframe[src]) +!#endif +*$doc,csp=script-src-attr 'none',to=m.economictimes.com|nextchessmove.com|ondemandkorea.com|tbsradio.jp +dogdrip.net##ins.adsbygoogle:style(height: 1px !important; visibility: hidden !important;) +||ad-shield.cc^ +||07c225f3.online^$font,ping +||content-loader.com^$font,ping +||css-load.com^$font,ping +||img-load.com^$font,ping +||html-load.com^$font,ping +||html-load.com^$script,xhr,domain=1geki.jp|373news.com|50states.com|9gag.com|actugaming.net|aerotrader.com|akinator.com|altarofgaming.com|anagram-solver.io|and-more.co|animalia.bio|areaconnect.com|as-web.jp|atvtrader.com|aucfree.com|augustacrime.com|autoby.jp|autoc-one.jp|autofrage.net|automobile-catalog.com|bab.la|babla.*|base64decode.org|baseballchannel.jp|bg-mania.jp|boardingarea.com|buchstaben.com|businessua.com|calculatorsoup.com|canuckaudiomart.com|cesoirtv.com|chanto.jp.net|chloeting.com|cinetrafic.fr|collinsdictionary.com|commercialtrucktrader.com|computerfrage.net|convertcase.net|costcoinsider.com|crosswordsolver.com|culturequizz.com|cycletrader.com|daily.co.jp|dallashoopsjournal.com|dayspedia.com|dexerto.com|dict.cc|dictionary.cambridge.org|dictionnaire.lerobert.com|divinedaolibrary.com|dnevnik.hr|dnevno.hr|donbalon.com|doviz.com|dropgame.jp|ecranlarge.com|egitim.net.tr|egolf.jp|eigachannel.jp|elnacional.cat|equipmenttrader.com|euronews.com|ev-times.com|exceljet.net|fandom.com|finanzfrage.net|fixthecfaa.com|flagle.io|football-ukraine.com|footballchannel.jp|fossbytes.com|freeconvert.com|freemcserver.net|futabanet.jp|futabasha-change.com|fxstreet-id.com|fxstreet-vn.com|fxstreet.*|game8.jp|games.arkadium.com|gamewith.jp|gazetaprawna.pl|gentosha-go.com|geogridgame.com|geoguessr.com|gerbeaud.com|gesundheitsfrage.net|gezondnu.nl|gifu-np.co.jp|gigafile.nu|girlschannel.net|glianec.com|globalrph.com|gloria.hr|golf-live.at|grapee.jp|greenwichmeantime.com|gutefrage.net|hang.hu|happyinshape.com|happymoments.lol|harmonikum.co|hb-nippon.com|helpdeskgeek.com|heureka.cz|higherorlowergame.com|hk01.com|hochi.news|hollywoodlife.com|horairesdouverture24.fr|hotcopper.co.nz|hotcopper.com.au|houseandgarden.co|hvac-talk.com|ib-game.jp|idokep.hu|index.hr|indianhealthyrecipes.com|infinityfree.com|infor.pl|insider-gaming.com|inverse.com|invoice-generator.com|iphoneincanada.ca|itavisen.no|iza.ne.jp|j-cast.com|j-town.net|j7p.jp|jablickar.cz|javatpoint.com|jawapos.com|jigsawexplorer.com|jiji.com|jikayosha.jp|jmty.jp|jocjapantravel.com|joemonster.org|judgehype.com|kinmaweb.jp|km77.com|kobe-journal.com|kompasiana.com|krepsinis.net|kreuzwortraetsel.de|kstp.com|kurashinista.jp|kurashiru.com|kuruma-news.jp|kyoteibiyori.com|lacuarta.com|laleggepertutti.it|lamire.jp|langenscheidt.com|laposte.net|laughingsquid.com|lawyersgunsmoneyblog.com|ldoceonline.com|leckerschmecker.me|lejdd.fr|lessdebt.com|lettersolver.com|lifehacker.jp|liliputing.com|liquor.com|listentotaxman.com|liveandletsfly.com|livenewschat.eu|livescience.com|lootlemon.com|luremaga.jp|m.economictimes.com|mafab.hu|magmix.jp|mahjongchest.com|mainichi.jp|majorleaguepickleball.co|maketecheasier.com|malaymail.com|mamastar.jp|marineinsight.com|mathplayzone.com|merinfo.se|meteo60.fr|midhudsonnews.com|minesweeperquest.com|minkou.jp|modhub.us|modsbase.com|modsfire.com|moin.de|motor-fan.jp|motor-talk.de|motorbikecatalog.com|motorradfrage.net|motscroises.fr|movie-locations.com|mrexcel.com|muragon.com|mykoreankitchen.com|namemc.com|nana-press.com|natalie.mu|nationaltoday.com|nbadraft.net|nemzetisport.hu|neoseeker.com|newatlas.com|news.zerkalo.io|newsweekjapan.jp|newsyou.info|nextchessmove.com|niketalk.com|nikkansports.com|nintendoeverything.com|nlab.itmedia.co.jp|notebookcheck.*|nouvelobs.com|nyitvatartas24.hu|oeffnungszeitenbuch.de|omnicalculator.com|ondemandkorea.com|onlineradiobox.com|operawire.com|optionsprofitcalculator.com|oraridiapertura24.it|oricon.co.jp|otonanswer.jp|overclock.net|oxfordlearnersdictionaries.com|pakkotoisto.com|palabr.as|pashplus.jp|percentagecalculator.net|perezhilton.com|persoenlich.com|petitfute.com|petitrobert.fr|picksandparlays.net|picrew.me|pinterpoin.com|play-games.com|pllive.xmediaeg.com|pons.com|popdaily.com.tw|powerpyx.com|pptvhd36.com|profitline.hu|puzzlegarage.com|pwctrader.com|quefaire.be|radio-australia.org|radio-osterreich.at|raetsel-hilfe.de|raider.io|ranking.net|rarethief.com|references.be|reisefrage.net|relevantmagazine.com|reptilesmagazine.com|roleplayer.me|rostercon.com|rotowire.com|russianmachineneverbreaks.com|rvtrader.com|samsungmagazine.eu|sankei.com|sanspo.com|scribd.com|scribens.com|scribens.fr|si.com|siennachat.com|sinemalar.com|singjupost.com|skinmc.net|skyandtelescope.org|slashdot.org|slideshare.net|snowmobiletrader.com|soccerdigestweb.com|solitairehut.com|songfacts.com|sourceforge.net|southhemitv.com|spaghetti-interactive.it|speisekarte.de|spendwithpennies.com|sportalkorea.com|sportlerfrage.net|statecollege.com|stayglam.com|steamidfinder.com|stocktwits.com|sudokutable.com|superhonda.com|syosetu.com|szamoldki.hu|talkwithstranger.com|tastesbetterfromscratch.com|tbs.co.jp|tbsradio.jp|techdico.com|the-crossword-solver.com|thecelticblog.com|thedigestweb.com|thefirearmblog.com|thelayoff.com|thetorquereport.com|thetruthaboutcars.com|thingiverse.com|timeful.app|torontosun.com|toyokeizai.net|trafficnews.jp|traicy.com|transparentcalifornia.com|transparentnevada.com|travelingformiles.com|trilltrill.jp|tunebat.com|tvtv.ca|tvtv.us|tweaktown.com|twn.hu|tyda.se|ufret.jp|ukaudiomart.com|universalis.fr|upgradedhome.com|uptodown.com|uranai.nosv.org|urbandictionary.com|urldecoder.org|usaudiomart.com|uscreditcardguide.com|v8sleuth.com.au|vague.style|verkaufsoffener-sonntag.com|videocelts.com|vimm.net|wallpapers.com|wamgame.jp|wanderworthy.com|watchdocumentaries.com|wattedoen.be|wdwnt.com|wdwnt.jp|weatherzone.com.au|webdesignledger.com|weldingweb.com|wetteronline.de|wfmz.com|whec.com|wieistmeineip.*|wielerflits.be|wielerflits.nl|willyweather.*|winbuzzer.com|winfuture.de|word-grabber.com|wordfinderx.com|wordhippo.com|wordshake.com|worldhistory|worldjournal.com|worldle.teuteuf.fr|wort-suchen.de|woxikon.*|yakkun.com|young-machine.com|yugioh-starlight.com|yutura.net|zagreb.info|zakzak.co.jp +||html-load.com^$script,xhr,redirect=noopjs,domain=neowin.net|razzball.com +||ads.adthrive.com/abd/abd.js$redirect=noopjs +||ads.adthrive.com/sites/*/ads.min.js$redirect=adthrive_abd.js +||helpers.publisherdesk.com/main.js +||ash.automobile-catalog.com/core.js +://loader.*.js|$script,1p,domain=crosswordsolver.com|gutefrage.net|kreuzwortraetsel.de|motscroises.fr|oeffnungszeitenbuch.de|oraridiapertura24.it|word-grabber.com|wort-suchen.de|woxikon.de +||com/script/*.js|$script,3p,header=location:https://stg.* +||com/script/*.js|$script,3p,domain=sparkchess.com +! In case blocking this is enough +||html-load.com^$domain=agriculture.com|learnreligions.com|napjainkportal.hu|netflixlife.com|travelandleisure.com +||html-load.com^$script,xhr,domain=pickleball.com|pickleballclubs.com|pickleballleagues.com|pickleballteamleagues.com|pickleballtournaments.com|ppatour.com +! Design by Purr sites +||html-load.com^$script,xhr,domain=365cincinnati.com|a-love-of-rottweilers.com|a-z-animals.com|acedarspoon.com|acouplecooks.com|addapinch.com|adrenaline.com.br|aheadofthyme.com|amandascookin.com|amybakesbread.com|andrewzimmern.com|androidheadlines.com|aprettylifeinthesuburbs.com|askpython.com|assessmentcentrehq.com|atlasandboots.com|averiecooks.com|awealthofcommonsense.com|awellstyledlife.com|backforseconds.com|bakedbree.com|bakedbyrachel.com|bakeitwithlove.com|barbarabakes.com|bible-knowledge.com|bombshellbling.com|breastfeedingplace.com|brighteyedbaker.com|browneyedbaker.com|businesswritingblog.com|budgetbytes.com|butterbeready.com|cadryskitchen.com|cafedelites.com|campsitephotos.com|canarystreetcrafts.com|celebritynetworth.com|chocolatecoveredkatie.com|chocolatewithgrace.com|chumplady.com|classyyettrendy.com|cleananddelicious.com|cleanandscentsible.com|closetcooking.com|connoisseurusveg.com|cookieandkate.com|cookiedoughandovenmitt.com|cookincanuck.com|cookingclassy.com|crayonsandcravings.com|creative-culinary.com|crunchycreamysweet.com|culinaryhill.com|curbsideclassic.com|currytrail.in|cyclingabout.com|dailydishrecipes.com|damndelicious.net|dancearoundthekitchen.com|diethood.com|dinneratthezoo.com|driveteslacanada.ca|eatingonadime.com|eatlittlebird.com|elliott.org|evolvingtable.com|extrapetite.com|emilybites.com|famivita.com|favfamilyrecipes.com|feastingathome.com|feedmephoebe.com|feelgoodfoodie.net|foodfaithfitness.com|forkknifeswoon.com|foxeslovelemons.com|foxyfolksy.com|framedcooks.com|freeride.com|fromvalerieskitchen.com|frvr.com|galonamission.com|gamingsmart.com|garminrumors.com|gcaptain.com|gearpatrol.com|gimmesomeoven.com|godairyfree.org|greaterlongisland.com|greensnchocolate.com|happyveggiekitchen.com|healthyfitnessmeals.com|healthylittlefoodies.com|homemadehome.com|hoosierhomemade.com|howsweeteats.com|hummingbirdhigh.com|hummusapien.com|hungrypaprikas.com|iambaker.net|iamhomesteader.com|ibreatheimhungry.com|idownloadblog.com|iheartnaptime.net|inspiralized.com|isabeleats.com|jocooks.com|joyfoodsunshine.com|juliasalbum.com|julieblanner.com|juliescafebakery.com|julieseatsandtreats.com|justonecookbook.com|kimscravings.com|kingshotcalculator.com|kirbiecravings.com|kitchendivas.com|kitchenfunwithmy3sons.com|laughingspatula.com|laurafuentes.com|leahingram.com|littlehouseliving.com|littlesunnykitchen.com|louisianacookin.com|makeitdairyfree.com|makingthymeforhealth.com|mamainastitch.com|marvel.church|medievalists.net|melskitchencafe.com|mexicanfoodjournal.com|minimalistbaker.com|momsdish.com|mountainmamacooks.com|mybakingaddiction.com|mycolombianrecipes.com|mygolfspy.com|myquietkitchen.com|natashaskitchen.com|neighborfoodblog.com|newlifeonahomestead.com|nocrumbsleft.net|nomnompaleo.com|nourishedbynic.com|nutmegnanny.com|ohsheglows.com|onceuponachef.com|onelittleproject.com|onionringsandthings.com|pancakerecipes.com|pantrymama.com|pinchofyum.com|pipandebby.com|platingsandpairings.com|premeditatedleftovers.com|pumpkinnspice.com|rdr2.org|recipetineats.com|redcurrantbakery.com|runningonrealfood.com|runningtothekitchen.com|runtothefinish.com|seededatthetable.com|shakentogetherlife.com|shugarysweets.com|simply-delicious-food.com|simplywhisked.com|skinnytaste.com|spicysouthernkitchen.com|studyfinds.org|stylegirlfriend.com|sundaysuppermovement.com|tasteandtellblog.com|the-girl-who-ate-everything.com|the5krunner.com|thebakermama.com|thebestideasforkids.com|theendlessmeal.com|thefitchen.com|thefoodieaffair.com|thekitchenmagpie.com|themediterraneandish.com|theplantbasedschool.com|therecipecritic.com|thescranline.com|thewanderlustkitchen.com|thewoksoflife.com|thurrott.com|tidymom.net|twopeasandtheirpod.com|umamigirl.com|unefemme.net|unixmen.com|vincenzosplate.com|visualcapitalist.com|wellnessbykay.com|wellplated.com|welt.de|whatgreatgrandmaate.com|whatjewwannaeat.com|whipperberry.com|workweeklunch.com|yourcupofcake.com|yourhomebasedmom.com +! Minute Media +||html-load.com^$script,xhr,domain=12thmanrising.com|allucanheat.com|aroundthefoghorn.com|arrowheadaddict.com|badgerofhonor.com|bamahammer.com|beargoggleson.com|beyondtheflag.com|birdswatcher.com|blackandteal.com|blogredmachine.com|bluemanhoop.com|boltbeat.com|bosoxinjection.com|buffalowdown.com|caneswarning.com|catcrave.com|chopchat.com|climbingtalshill.com|cubbiescrib.com|dailyknicks.com|dairylandexpress.com|dawgpounddaily.com|dawindycity.com|dawnofthedawg.com|detroitjockcity.com|dodgersway.com|ebonybird.com|fansided.com|flywareagle.com|gbmwolverine.com|gigemgazette.com|gmenhq.com|hailfloridahail.com|halohangout.com|hardwoodhoudini.com|horseshoeheroes.com|housethathankbuilt.com|huskercorner.com|insidetheiggles.com|jaysjournal.com|justblogbaby.com|kckingdom.com|kingjamesgospel.com|kingsofkauffman.com|lakeshowlife.com|lombardiave.com|mentalfloss.com|motorcitybengals.com|musketfire.com|nflspinzone.com|ninernoise.com|nugglove.com|onechicagocenter.com|phinphanatic.com|pistonpowered.com|predominantlyorange.com|ramblinfan.com|redbirdrants.com|reviewingthebrew.com|riggosrag.com|ripcityproject.com|risingapple.com|rumbunter.com|scarletandgame.com|section215.com|sidelionreport.com|slapthesign.com|sodomojo.com|southsideshowdown.com|stillcurtain.com|stormininnorman.com|stripehype.com|thatballsouttahere.com|thecelticbhoys.com|thejetpress.com|thelandryhat.com|thepewterplank.com|thesmokingcuban.com|thevikingage.com|thunderousintentions.com|undeadwalking.com|valleyofthesuns.com|whodatdish.com|winteriscoming.net|yanksgoyard.com +! Medium Large Sports Media +||html-load.com^$script,xhr,domain=dodgerblue.com +! PMC sites +||html-load.com^$script,xhr,domain=ampav.com|artforum.com|artnews.com|atxtv.co|bgr.com|billboard.com|deadline.com|dickclark.com|footwearnews.com|goldderby.com|hollywoodreporter.com|indiewire.com|la3c.com|lifeisbeautiful.com|luminatedata.com|robbreport.com|rollingstone.com|shemedia.com|sourcingjournal.com|sportico.com|spy.com|sxsw.com|tvline.com|variety.com|vibe.com|wwd.com +! dot.gg sites +||html-load.com^$script,xhr,domain=bluearchive.gg|cookierun.gg|dcworldscollide.gg|destiny2zone.com|digimonzone.com|dotgg.gg|dragonball.gg|endfield.gg|expedition33.gg|fabtcg.gg|fplzone.com|lorcana.gg|lostsword.gg|marvelrivals.gg|marvelsnapzone.com|moco.gg|nikke.gg|onepiece.gg|pathofexile.gg|playingmtg.com|ptcgpocket.gg|riftbound.gg|shadowverse.gg|snowbreak.gg|thebazaarzone.com|tokon.gg|umamusume.gg|wutheringwaves.gg|ygozone.gg|zenless.gg +! Bild group sites +||html-load.com^$script,xhr,domain=autobild.de|bild.de|bz-berlin.de|computerbild.de|fitbook.de|fitbook-magazine.com|myhomebook.de|myhomebook-magazine.com|petbook.de|petbook-magazine.com|stylebook.de|techbook.de|techbook-magazine.com|travelbook.de|travelbook-magazine.com +! Postmedia group +||html-load.com^$script,xhr,domain=calgaryherald.com|calgarysun.com|canada.com|canoe.com|driving.ca|edmontonjournal.com|edmontonsun.com|financialpost.com|leaderpost.com|lfpress.com|montrealgazette.com|nationalpost.com|ontariofarmer.com|ottawacitizen.com|ottawasun.com|thegrowthop.com|theprovince.com|thestarphoenix.com|tj.news|torontosun.com|vancouversun.com|windsorstar.com|winnipegsun.com +! livedoor-sites +||html-load.com^$script,xhr,domain=2chblog.jp|2monkeys.jp|46matome.net|akb48glabo.com|akb48matomemory.com|alfalfalfa.com|all-nationz.com|anihatsu.com|aqua2ch.net|blog.esuteru.com|blog.livedoor.jp|blog.jp|blogo.jp|chaos2ch.com|choco0202.work|crx7601.com|danseisama.com|dareda.net|digital-thread.com|doorblog.jp|exawarosu.net|fgochaldeas.com|football-2ch.com|gekiyaku.com|golog.jp|hacchaka.net|heartlife-matome.com|liblo.jp|fesoku.net|fiveslot777.com|gamejksokuhou.com|girlsreport.net|girlsvip-matome.com|grasoku.com|gundamlog.com|honyaku-channel.net|ikarishintou.com|imas-cg.net|imihu.net|inutomo11.com|itainews.com|itaishinja.com|jin115.com|jisaka.com|jnews1.com|jumpsokuhou.com|jyoseisama.com|keyakizaka46matomemory.net|kidan-m.com|kijoden.com|kijolariat.net|kijolifehack.com|kijomatomelog.com|kijyokatu.com|kijyomatome.com|kijyomatome-ch.com|kijyomita.com|kirarafan.com|kitimama-matome.net|kitizawa.com|konoyubitomare.jp|kotaro269.com|kyousoku.net|ldblog.jp|livedoor.biz|livedoor.blog|majikichi.com|matacoco.com|matomeblade.com|matomelotte.com|matometemitatta.com|mojomojo-licarca.com|morikinoko.com|nandemo-uketori.com|netatama.net|news-buzz1.com|news30over.com|newsinlevels.com|nishinippon.co.jp|nmb48-mtm.com|norisoku.com|npb-news.com|ocsoku.com|okusama-kijyo.com|onecall2ch.com|onihimechan.com|onlineradiobox.com|orusoku.com|otakomu.jp|otoko-honne.com|oumaga-times.com|outdoormatome.com|pachinkopachisro.com|paranormal-ch.com|recosoku.com|s2-log.com|saikyo-jump.com|shuraba-matome.com|ske48matome.net|squallchannel.com|sukattojapan.com|sumaburayasan.com|sutekinakijo.com|usi32.com|uwakich.com|uwakitaiken.com|vault76.info|vipnews.jp|vippers.jp|vipsister23.com|vtubernews.jp|watarukiti.com|world-fusigi.net|zakuzaku911.com|zch-vip.com +! CultivateWP sites +||html-load.com^$script,xhr,domain=amindfullmom.com|choosingchia.com|creativecanning.com|downshiftology.com|gardeninthekitchen.com|heygrillhey.com|loveinmyoven.com|modernhoney.com|mrmakeithappen.com|plainchicken.com|practicalselfreliance.com|sipandfeast.com|stellanspice.com|thecookierookie.com|thefoodcharlatan.com|tutti-dolci.com +! People Inc sites +||html-load.com^$domain=allrecipes.com|bhg.com|brides.com|byrdie.com|dailypaws.com|eatingwell.com|ew.com|foodandwine.com|health.com|instyle.com|investopedia.com|lifewire.com|liquor.com|marthastewart.com|mydomaine.com|myrecipes.com|parents.com|people.com|peopleenespanol.com|realsimple.com|seriouseats.com|shape.com|simplyrecipes.com|southernliving.com|thebalancemoney.com|thespruce.com|thesprucepets.com|thoughtco.com|treehugger.com|tripsavvy.com|verywellfit.com|verywellhealth.com|verywellmind.com|woodmagazine.com +allrecipes.com,bhg.com,brides.com,byrdie.com,dailypaws.com,eatingwell.com,ew.com,foodandwine.com,health.com,instyle.com,investopedia.com,lifewire.com,liquor.com,marthastewart.com,mydomaine.com,myrecipes.com,parents.com,people.com,peopleenespanol.com,realsimple.com,seriouseats.com,shape.com,simplyrecipes.com,southernliving.com,thebalancemoney.com,thespruce.com,thesprucepets.com,thoughtco.com,treehugger.com,tripsavvy.com,verywellfit.com,verywellhealth.com,verywellmind.com,woodmagazine.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! Prisma Media sites +||html-load.com^$script,xhr,domain=caminteresse.fr|capital.fr|cotemaison.fr|croq-kilos.com|cuisineaz.com|deco.fr|femmeactuelle.fr|fourchette-et-bikini.fr|gamesider.com|geo.fr|harpersbazaar.fr|hbrfrance.fr|meteocity.com|passeportsante.net|programme.tv|programme-tv.net|turbo.fr|uppercutmma.com|voici.fr +caminteresse.fr,capital.fr,cotemaison.fr,croq-kilos.com,cuisineaz.com,deco.fr,femmeactuelle.fr,fourchette-et-bikini.fr,gamesider.com,geo.fr,harpersbazaar.fr,hbrfrance.fr,meteocity.com,passeportsante.net,programme.tv,programme-tv.net,turbo.fr,uppercutmma.com,voici.fr##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! Famed&Bound Media sites +||html-load.com^$script,xhr,domain=gentside.*|maxisciences.com|ohmymag.* +gentside.*,maxisciences.com,ohmymag.*##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! Cars forums sites +||html-load.com^$script,xhr,domain=4runner6g.com|bronco6g.com|broncosportforum.com|camaro7g.com|cayenneevforum.com|civicxi.com|cybertruckownersclub.com|dakotaforums.com|ev3forums.com|f150gen14.com|f150lightningforum.com|integraforums.com|jeepgladiatorforum.com|jeepreconforum.com|jlwranglerforums.com|macanevowners.com|macheforum.com|mavericktruckclub.com|mustang6g.com|mustang7g.com|nissanzclub.com|rancheroforum.com|ranger5g.com|ranger6g.com|rivianforums.com|scoutevforum.com|slateforums.com|supramkv.com|tacoma4g.com|taycanforum.com|xterraforum.com +4runner6g.com,bronco6g.com,broncosportforum.com,camaro7g.com,cayenneevforum.com,civicxi.com,cybertruckownersclub.com,dakotaforums.com,ev3forums.com,f150gen14.com,f150lightningforum.com,integraforums.com,jeepgladiatorforum.com,jeepreconforum.com,jlwranglerforums.com,macanevowners.com,macheforum.com,mavericktruckclub.com,mustang6g.com,mustang7g.com,nissanzclub.com,rancheroforum.com,ranger5g.com,ranger6g.com,rivianforums.com,scoutevforum.com,slateforums.com,supramkv.com,tacoma4g.com,taycanforum.com,xterraforum.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! Blavity, Inc. +||html-load.com^$script,xhr,domain=afrotech.com|blavity.com|travelnoire.com +afrotech.com,blavity.com,travelnoire.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! Iconic Media Group +||html-load.com^$script,xhr,domain=anguscountyworld.co.uk|banburyguardian.co.uk|bedfordtoday.co.uk|biggleswadetoday.co.uk|birminghamworld.uk|blackpoolgazette.co.uk|bristolworld.com|bucksherald.co.uk|burnleyexpress.net|buxtonadvertiser.co.uk|chad.co.uk|daventryexpress.co.uk|derbyshiretimes.co.uk|derbyworld.co.uk|derryjournal.com|dewsburyreporter.co.uk|dirtbikerider.com|doncasterfreepress.co.uk|donegallive.ie|expressandstar.com|falkirkherald.co.uk|farminglife.com|fifetoday.co.uk|glasgowworld.com|halifaxcourier.co.uk|harboroughmail.co.uk|harrogateadvertiser.co.uk|hartlepoolmail.co.uk|hemeltoday.co.uk|hucknalldispatch.co.uk|lancasterguardian.co.uk|leightonbuzzardonline.co.uk|lep.co.uk|limerickleader.ie|lincolnshireworld.com|liverpoolworld.uk|londonworld.com|lutontoday.co.uk|manchesterworld.uk|meltontimes.co.uk|miltonkeynes.co.uk|nationalworld.com|newcastleworld.com|newryreporter.com|newsletter.co.uk|northamptonchron.co.uk|northantstelegraph.co.uk|northdevongazette.co.uk|northernirelandworld.com|northumberlandgazette.co.uk|nottinghamworld.com|peterboroughtoday.co.uk|petersfieldpost.co.uk|portsmouth.co.uk|rotherhamadvertiser.co.uk|scotsman.com|shieldsgazette.com|shropshirestar.com|stornowaygazette.co.uk|sunderlandecho.com|surreyworld.co.uk|sussexexpress.co.uk|thescarboroughnews.co.uk|thesouthernreporter.co.uk|thestar.co.uk|totallysnookered.com|wakefieldexpress.co.uk|warwickshireworld.com|wigantoday.net|worksopguardian.co.uk|yorkshireeveningpost.co.uk|yorkshirepost.co.uk +anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,birminghamworld.uk,blackpoolgazette.co.uk,bristolworld.com,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,dirtbikerider.com,doncasterfreepress.co.uk,donegallive.ie,expressandstar.com,falkirkherald.co.uk,farminglife.com,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,limerickleader.ie,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,nationalworld.com,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northdevongazette.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,petersfieldpost.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,shropshirestar.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,sussexexpress.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! .lt sites +||html-load.com^$script,xhr,domain=alfa.lt|alkas.lt|alytusplius.lt|anyksta.lt|aina.lt|bilis.lt|befa.lt|etaplius.lt|manonamai.lt|mmm.lt|raskakcija.lt|respublika.lt|sekunde.lt|tavovaikas.lt|tv3.lt +! PMC sites +ampav.com,artforum.com,artnews.com,atxtv.co,bgr.com,billboard.com,deadline.com,dickclark.com,footwearnews.com,goldderby.com,hollywoodreporter.com,indiewire.com,la3c.com,lifeisbeautiful.com,luminatedata.com,robbreport.com,rollingstone.com,shemedia.com,sourcingjournal.com,sportico.com,spy.com,sxsw.com,tvline.com,variety.com,vibe.com,wwd.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +ampav.com,artforum.com,artnews.com,atxtv.co,bgr.com,billboard.com,deadline.com,dickclark.com,footwearnews.com,goldderby.com,hollywoodreporter.com,indiewire.com,la3c.com,lifeisbeautiful.com,luminatedata.com,robbreport.com,rollingstone.com,shemedia.com,sourcingjournal.com,sportico.com,spy.com,sxsw.com,tvline.com,variety.com,vibe.com,wwd.com##+js(rmnt, script, HTMLIFrameElement) +/^https:\/\/[a-z]{12,20}\.com\/script\/[a-zA-Z0-9]+_[a-zA-Z0-9]+\.js$/$script,3p,match-case,to=com,from=ampav.com|artforum.com|artnews.com|atxtv.co|bgr.com|billboard.com|deadline.com|dickclark.com|footwearnews.com|goldderby.com|hollywoodreporter.com|indiewire.com|la3c.com|lifeisbeautiful.com|luminatedata.com|robbreport.com|rollingstone.com|shemedia.com|sourcingjournal.com|sportico.com|spy.com|sxsw.com|tvline.com|variety.com|vibe.com|wwd.com +!#if env_safari +/^https:\/\/[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.com\/script\/[a-zA-Z0-9]+_[a-zA-Z0-9]+\.js$/$script,3p,match-case,domain=ampav.com|artforum.com|artnews.com|atxtv.co|bgr.com|billboard.com|deadline.com|dickclark.com|footwearnews.com|goldderby.com|hollywoodreporter.com|indiewire.com|la3c.com|lifeisbeautiful.com|luminatedata.com|robbreport.com|rollingstone.com|shemedia.com|sourcingjournal.com|sportico.com|spy.com|sxsw.com|tvline.com|variety.com|vibe.com|wwd.com +!#endif +! Bild group sites +autobild.de,bild.de,bz-berlin.de,computerbild.de,fitbook.de,fitbook-magazine.com,myhomebook.de,myhomebook-magazine.com,petbook.de,petbook-magazine.com,stylebook.de,techbook.de,techbook-magazine.com,travelbook.de,travelbook-magazine.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! Postmedia group +calgaryherald.com,calgarysun.com,canada.com,canoe.com,driving.ca,edmontonjournal.com,edmontonsun.com,financialpost.com,leaderpost.com,lfpress.com,montrealgazette.com,nationalpost.com,ontariofarmer.com,ottawacitizen.com,ottawasun.com,thegrowthop.com,theprovince.com,thestarphoenix.com,tj.news,torontosun.com,vancouversun.com,windsorstar.com,winnipegsun.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! Network N Media sites +||html-load.com^$script,xhr,domain=pcgamebenchmark.com|pcgamesn.com|pockettactics.com|wargamer.com +pcgamebenchmark.com,pcgamesn.com,pockettactics.com,wargamer.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! HomeTalk Inc. / VerticalScope Inc. sites +foodtalkdaily.com,homehobbiesdaily.com,hometalk.com,hometalkpaid.com,redesigndaily.com,thegoldendaily.com,thesavvyexplorers.com,thesimplifydaily.com,upgradedhome.com,upstyledaily.com##+js(set, loadShield, noopFunc) +atv.com,autoguide.com,motorcycle.com,petguide.com,rvguide.com,thetruthaboutcars.com##+js(set, loadShield, noopFunc) +! Mexican Lottery sites +||html-load.com^$script,xhr,domain=melaterevancha.com|resultadostris.com +melaterevancha.com,resultadostris.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! Motorsport network +||html-load.com^$script,xhr,domain=autosport.com|insideevs.com|motor1.com|motorsport.com|motorsportjobs.com|motorsportstats.com|rideapart.com +! Pijper Media +||html-load.com^$domain=autobahn.eu|beaumonde.nl|dingenvoorvrouwen.nl|elegance.nl|gezondnu.nl|golfersmagazine.nl|grazia.nl|happyinshape.nl|kookfans.nl|marieclaire.nl|nautique.nl|noorderland.nl|nouveau.nl|panorama.nl|playboy.nl|revu.nl|upcoming.nl|wielerrevue.nl|zeilen.nl +||html-load.com^$script,xhr,domain=faitsfizzle.fr|fizzlefacts.com|fizzlefakten.de|hechosfizzle.com +||html-load.com^$script,xhr,domain=consejosytrucos.co|conselhosetruques.com|consiglietrucchi.com|poradyiwskazowki.pl|tippsundtricks.co|tips-and-tricks.co|tipsandtricksarab.com|tipsandtricksjapan.com|tipsandtrickskorea.com|tipsenweetjes.nl|trucs-et-astuces.co +faitsfizzle.fr,fizzlefacts.com,fizzlefakten.de,hechosfizzle.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +consejosytrucos.co,conselhosetruques.com,consiglietrucchi.com,poradyiwskazowki.pl,tippsundtricks.co,tips-and-tricks.co,tipsandtricksarab.com,tipsandtricksjapan.com,tipsandtrickskorea.com,tipsenweetjes.nl,trucs-et-astuces.co##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! Infoplaza +||html-load.com^$script,xhr,domain=buienalarm.nl|meteoradar.co.uk|meteox.com|niederschlagsradar.de|sat24.com|weerslag.nl +buienalarm.nl,meteoradar.co.uk,meteox.com,niederschlagsradar.de,sat24.com,weerslag.nl##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! Advergame Technologies Pvt. Ltd. +||html-load.com^$script,xhr,domain=astrozop.com|criczop.com|feedzop.com|gamezop.com|gamezop.io|quizzop.com|umogames.com +astrozop.com,criczop.com,feedzop.com,gamezop.com,gamezop.io,quizzop.com,umogames.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +! MV3 wildcard issue +!#if ext_ubol +||html-load.com^$script,xhr,domain=babla.cn|babla.co.id|babla.co.th|babla.gr|babla.no|babla.ru|babla.vn|fxstreet.com|fxstreet.com.tr|fxstreet.de.com|fxstreet.es|fxstreet.fr|fxstreet.hk|fxstreet.hu|fxstreet.it|fxstreet.ru.com|gentside.co.uk|gentside.com|gentside.de|notebookcheck.biz|notebookcheck.com|notebookcheck.info|notebookcheck.it|notebookcheck.net|notebookcheck.nl|notebookcheck.org|notebookcheck.pl|notebookcheck.se|ohmymag.co.uk|ohmymag.com|ohmymag.de|wieistmeineip.at|wieistmeineip.ch|wieistmeineip.de|willyweather.co.uk|willyweather.com|willyweather.com.au|woxikon.bg|woxikon.co|woxikon.co.uk|woxikon.com|woxikon.com.br|woxikon.cl|woxikon.dk|woxikon.de|woxikon.fr|woxikon.es|woxikon.it|woxikon.mx|woxikon.nl|woxikon.pl|woxikon.pt|woxikon.ru|woxikon.se +!#endif +||css-load.com^$domain=ygosu.com|loawa.com|bamgosu.site +||css-load.com^$redirect=noopjs,domain=honkailab.com +||07c225f3.online^$domain=economist.co.kr|hometownstation.com|sportalkorea.com|edaily.co.kr|isplus.com|tenasia.hankyung.com|etoday.co.kr +||html-load.com^$redirect=noopjs,domain=raenonx.cc|indiatimes.com|missyusa.com +||a.fsdn.com/con/js/sftheme/vendor/bizx-prebid.js?$script,domain=sourceforge.net +||whykindlyoofword.com/sdk.js$script,domain=gutefrage.net +gutefrage.net##+js(nosiif, 0x) +||abeagle-public.buzzfeed.com/*-AdShield- +raenonx.cc,indiatimes.com,missyusa.com##+js(nostif, error-report.com) +indiatimes.com##+js(set, objAd.loadAdShield, noopFunc) +netzwelt.de##+js(set, window.myAd.runAd, noopFunc) +huffpost.com##+js(json-prune, RT-1562-AdShield-script-on-Huffpost) +!#if env_mobile +m.etoday.co.kr##+js(rpnt, script, var googletag =, '/*start*/(function(){let link=document.createElement("link");link.rel="stylesheet";link.href="/common/css/m_default.css";document.head.appendChild(link)})();document.currentScript.textContent=document.currentScript.textContent.replace(/\/\*start\*\/(.*)\/\*end\*\//g,"");/*end*/var googletag =') +isplus.com##+js(rpnt, script, $(document).ready, '/*start*/(function(){let link=document.createElement("link");link.rel="stylesheet";link.href="/css_renew/m/m_common.css";document.head.appendChild(link)})();document.currentScript.textContent=document.currentScript.textContent.replace(/\/\*start\*\/(.*)\/\*end\*\//g,"");/*end*/$(document).ready', sedCount, 1) +!#else +etoday.co.kr##+js(rpnt, script, window.googletag =, '/*start*/(function(){let link=document.createElement("link");link.rel="stylesheet";link.href="/common/css/etoday.css";document.head.appendChild(link)})();document.currentScript.textContent=document.currentScript.textContent.replace(/\/\*start\*\/(.*)\/\*end\*\//g,"");/*end*/window.googletag =') +isplus.com##+js(rpnt, script, window.dataLayer =, '/*start*/(function(){let link=document.createElement("link");link.rel="stylesheet";link.href="/css_renew/pc/common.css";document.head.appendChild(link)})();document.currentScript.textContent=document.currentScript.textContent.replace(/\/\*start\*\/(.*)\/\*end\*\//g,"");/*end*/window.dataLayer =') +!#endif +ygosu.com,bamgosu.site##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, {"value": "(function(){let link=document.createElement('link');link.rel='stylesheet';link.href='//image.ygosu.com/style/main.css';document.head.appendChild(link)})()"}, condition, error-report) +loawa.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, {"value": "(function(){let link=document.createElement('link');link.rel='stylesheet';link.href='https://loawa.com/assets/css/loawa.min.css';document.head.appendChild(link)})()"}, condition, error-report) +economist.co.kr##+js(rpnt, script, _paq.push, '/*start*/(function(){let link=document.createElement("link");link.rel="stylesheet";link.href="/css/pc/ecn_common.min.css";document.head.appendChild(link)})();document.currentScript.textContent=document.currentScript.textContent.replace(/\/\*start\*\/(.*)\/\*end\*\//g,"");/*end*/_paq.push') +hometownstation.com##+js(rpnt, script, window.dataLayer =, '/*start*/(function(){let link=document.createElement("link");link.rel="stylesheet";link.href="/wp-content/themes/hts_v2/style.css";document.head.appendChild(link)})();document.currentScript.textContent=document.currentScript.textContent.replace(/\/\*start\*\/(.*)\/\*end\*\//g,"");/*end*/window.dataLayer =') +sportalkorea.com##+js(rpnt, script, window.dataLayer =, '/*start*/(function(){let link=document.createElement("link");link.rel="stylesheet";link.href="/_css/css.css";document.head.appendChild(link)})();document.currentScript.textContent=document.currentScript.textContent.replace(/\/\*start\*\/(.*)\/\*end\*\//g,"");/*end*/window.dataLayer =') +m.edaily.co.kr##+js(rpnt, script, var _paq =, '/*start*/(function(){let link=document.createElement("link");link.rel="stylesheet";link.href="/Content/css/style.css";document.head.appendChild(link)})();document.currentScript.textContent=document.currentScript.textContent.replace(/\/\*start\*\/(.*)\/\*end\*\//g,"");/*end*/var _paq =', sedCount, 1) +honkailab.com##+js(rpnt, script, var localize =, '/*start*/(function(){document.querySelectorAll("script[wp-data]").forEach(element=>{const html=new DOMParser().parseFromString(atob(element.getAttribute("wp-data")),"text/html");html.querySelectorAll("link:not([as])").forEach(linkEl=>{element.after(linkEl)});element.parentElement.removeChild(element);})})();document.currentScript.textContent=document.currentScript.textContent.replace(/\/\*start\*\/(.*)\/\*end\*\//g,"");/*end*/var localize =', sedCount, 1) +honkailab.com##body:style(background-color: #2D2D2D;) +lifehacker.jp##+js(rpnt, script, /^.+/gms, '!function(){var e=Object.getOwnPropertyDescriptor(Element.prototype,"innerHTML").set;Object.defineProperty(Element.prototype,"innerHTML",{set:function(t){return t.includes("html-load.com")?e.call(this,""):e.call(this,t)}})}();', condition, html-load.com) +a-ha.io,cboard.net,joongdo.co.kr,viva100.com##+js(noeval-if, /content-loader\.com|css-load\.com|html-load\.com/) +automobile-catalog.com,baseballchannel.jp,forum.mobilism.me,freeairpump.com,gbatemp.net,gentosha-go.com,hoyme.jp,kezdo5.hu,krepsinis.net,motorbikecatalog.com,sharemods.com,wisevoter.com##+js(rmnt, script, error-report.com) +divinedaolibrary.com,jaysbrickblog.com,mp1st.com,oricon.co.jp,uranai.nosv.org,yakkun.com##+js(rmnt, script, html-load.com) +oricon.co.jp##+js(rmnt, script, /\(async\(\)=>\{try\{(const|var)/) +chloeting.com##+js(prevent-innerHTML, script, html-load.com) +calculatorsoup.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 0, repl:/"$//) +9gag.com,adrenaline.com.br,and-more.co,animalia.bio,astro-seek.com,augustacrime.com,autofrage.net,automobile-catalog.com,bab.la,babla.*,base64decode.org,boardingarea.com,buchstaben.com,businessua.com,calculatorsoup.com,canuckaudiomart.com,chloeting.com,collinsdictionary.com,computerfrage.net,convertcase.net,costcoinsider.com,crosswordsolver.com,daily.co.jp,dict.cc,dictionary.cambridge.org,dictionnaire.lerobert.com,dnevnik.hr,doviz.com,egitim.net.tr,egolf.jp,elnacional.cat,euronews.com,exceljet.net,fandom.com,finanzfrage.net,football-ukraine.com,fossbytes.com,freemcserver.net,gamewith.jp,gerbeaud.com,gesundheitsfrage.net,gezondnu.nl,girlschannel.net,glianec.com,greenwichmeantime.com,gutefrage.net,happyinshape.com,helpdeskgeek.com,higherorlowergame.com,hochi.news,hollywoodlife.com,houseandgarden.co,index.hr,infinityfree.com,inverse.com,itavisen.no,km77.com,kreuzwortraetsel.de,kurashiru.com,kuruma-news.jp,ldoceonline.com,leckerschmecker.me,lejdd.fr,lettersolver.com,liveandletsfly.com,livescience.com,lootlemon.com,magmix.jp,mamastar.jp,merinfo.se,moin.de,motorbikecatalog.com,motorradfrage.net,motscroises.fr,mrexcel.com,natalie.mu,nemzetisport.hu,neoseeker.com,netflixlife.com,newatlas.com,nextchessmove.com,nouvelobs.com,oeffnungszeitenbuch.de,omnicalculator.com,oraridiapertura24.it,oricon.co.jp,otonanswer.jp,oxfordlearnersdictionaries.com,pakkotoisto.com,perezhilton.com,picrew.me,pinterpoin.com,pons.com,popdaily.com.tw,reisefrage.net,rotowire.com,scribd.com,singjupost.com,skinmc.net,slideshare.net,songfacts.com,sourceforge.net,sportlerfrage.net,the-crossword-solver.com,thefirearmblog.com,thelayoff.com,thetorquereport.com,thetruthaboutcars.com,thingiverse.com,timeful.app,torontosun.com,toyokeizai.net,trafficnews.jp,travelingformiles.com,trilltrill.jp,tvtv.ca,tvtv.us,ukaudiomart.com,upgradedhome.com,urbandictionary.com,urldecoder.org,usaudiomart.com,vague.style,watchdocumentaries.com,weatherzone.com.au,welt.de,willyweather.*,winfuture.de,winteriscoming.net,word-grabber.com,wordshake.com,woxikon.de##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +euronews.com,index.hr,welt.de##+js(ra, onerror, script[id][onerror], asap stay) +akinator.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, `json:"setTimeout((()=>{if(!location.pathname.startsWith('/game'))return;const t=document.getElementById('question-label');t&&(window.animation=lottie.loadAnimation({container:t,renderer:'svg',loop:!0,autoplay:!1,path:'/assets/animationsLottielab/gameDots.json'}))}),1e3);"`, condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +akinator.com##+js(set, __cfRLUnblockHandlers, true) +huffpost.com##+js(set, disableAdShield, true) +animalia.bio##.s-ad-banner-horizontal +base64decode.org,urldecoder.org##.column.img_header_box +base64decode.org,urldecoder.org##.column.img_right_top_box +base64decode.org,urldecoder.org##.column.img_right_bottom_box +base64decode.org,urldecoder.org##.column.img_left_box +dictionnaire.lerobert.com##.gymglish-fr-2.gymglish +neowin.net,newatlas.com,razzball.com,tz.de##+js(nostif, [native code], 500) +majorleaguepickleball.co,pickleball.com,pickleballclubs.com,pickleballleagues.com,pickleballteamleagues.com,pickleballtournaments.com##+js(trusted-replace-argument, document.getElementById, 0, json:"freestar-bootstrap", condition, /^[A-Z][a-z]+_$/) +majorleaguepickleball.co,pickleball.com,pickleballclubs.com,pickleballleagues.com,pickleballteamleagues.com,pickleballtournaments.com,ppatour.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +!#if cap_html_filtering +interfootball.co.kr,a-ha.io,cboard.net,joongdo.co.kr,viva100.com,maketecheasier.com,tweaksforgeeks.com,m.inven.co.kr,mlbpark.donga.com##^script:has-text(KCgpPT57bGV0IGU) +9gag.com,akinator.com,and-more.co,astro-seek.com,autofrage.net,bab.la,babla.*,badmouth1.com,boardingarea.com,businessua.com,canuckaudiomart.com,collinsdictionary.com,computerfrage.net,dict.cc,dictionnaire.lerobert.com,dictionary.cambridge.org,dnevnik.hr,doviz.com,egitim.net.tr,egolf.jp,eurointegration.com.ua,exceljet.net,finanzfrage.net,flatpanelshd.com,football-ukraine.com,footballtransfer.com.ua,footballtransfer.ru,fossbytes.com,freemcserver.net,gadgets360.com,gazetaprawna.pl,gesundheitsfrage.net,gezondnu.nl,girlschannel.net,glianec.com,gutefrage.net,happyinshape.com,helpdeskgeek.com,hoyme.jp,houseandgarden.co,infinityfree.com,issuya.com,iusm.co.kr,lamire.jp,ldoceonline.com,leckerschmecker.me,liveandletsfly.com,logicieleducatif.fr,lootlemon.com,missyusa.com,magmix.jp,mamastar.jp,moin.de,motorradfrage.net,motscroises.fr,neoseeker.com,neowin.net,newatlas.com,nextchessmove.com,onlinegdb.com,otonanswer.jp,oxfordlearnersdictionaries.com,palabr.as,perezhilton.com,picrew.me,pinterpoin.com,pons.com,pravda.com.ua,pressian.com,razzball.com,reisefrage.net,reportera.co.kr,rotowire.com,sinemalar.com,singjupost.com,sportanalytic.com,sportlerfrage.net,sportsrec.com,sportsseoul.com,text-compare.com,the-crossword-solver.com,thelayoff.com,torontosun.com,toyokeizai.net,trafficnews.jp,travelingformiles.com,tweaksforgeeks.com,tz.de,ukaudiomart.com,usaudiomart.com,vague.style,w.grapps.me,watchdocumentaries.com,welt.de,wfmz.com,winfuture.de,worldhistory.org##^script[onload*="error-report.com"] +9gag.com,adrenaline.com.br,animalia.bio,augustacrime.com,automobile-catalog.com,base64decode.org,buchstaben.com,calculatorsoup.com,doviz.com,euronews.com,fandom.com,freemcserver.net,game8.jp,gamewith.jp,gerbeaud.com,greenwichmeantime.com,higherorlowergame.com,index.hr,itavisen.no,km77.com,livescience.com,mamastar.jp,merinfo.se,motorbikecatalog.com,mrexcel.com,nemzetisport.hu,pakkotoisto.com,ppatour.com,scribd.com,skinmc.net,thetorquereport.com,thingiverse.com,timeful.app,tvtv.ca,tvtv.us,urbandictionary.com,urldecoder.org,welt.de,willyweather.*,wordshake.com##^script[src*="html-load.com"] +crosswordsolver.com,gutefrage.net,kreuzwortraetsel.de,motscroises.fr,oeffnungszeitenbuch.de,oraridiapertura24.it,word-grabber.com,wort-suchen.de##^script[src*="://loader."] +automobile-catalog.com,motorbikecatalog.com##^script[src$="/core.js"] +bleepingcomputer.com,pravda.com.ua##^script:has-text(Ad-Shield) +ap7am.com,cinema.com.my,dolldivine.com,giornalone.it,iplocation.net,jamaicajawapos.com,jutarnji.hr,kompasiana.com,mediaindonesia.com,niice-woker.com,pep.ph,slobodnadalmacija.hr,upmedia.mg##^script:has-text(adrecover.com) +wetter.com##^script:has-text(/wcomAdBlock|error-report\.com/) +neowin.net,newatlas.com,nextchessmove.com,razzball.com##^script:has-text(head.appendChild.bind) +9gag.com,adrenaline.com.br,akinator.com,and-more.co,animalia.bio,astro-seek.com,augustacrime.com,automobile-catalog.com,bab.la,babla.*,boardingarea.com,buchstaben.com,calculatorsoup.com,canuckaudiomart.com,collinsdictionary.com,crosswordsolver.com,dict.cc,dictionary.cambridge.org,dictionnaire.lerobert.com,divinedaolibrary.com,doviz.com,egitim.net.tr,egolf.jp,euronews.com,exceljet.net,fandom.com,fossbytes.com,freemcserver.net,game8.jp,gamewith.jp,gerbeaud.com,gezondnu.nl,girlschannel.net,happyinshape.com,helpdeskgeek.com,hochi.news,hollywoodlife.com,houseandgarden.co,index.hr,itavisen.no,km77.com,kreuzwortraetsel.de,kuruma-news.jp,ldoceonline.com,lejdd.fr,livescience.com,lootlemon.com,magmix.jp,mamastar.jp,merinfo.se,motorbikecatalog.com,motscroises.fr,mrexcel.com,nemzetisport.hu,neoseeker.com,neowin.net,newatlas.com,oeffnungszeitenbuch.de,oraridiapertura24.it,otonanswer.jp,oxfordlearnersdictionaries.com,pakkotoisto.com,perezhilton.com,pinterpoin.com,pons.com,ppatour.com,razzball.com,rotowire.com,scribd.com,sinemalar.com,skinmc.net,slideshare.net,songfacts.com,the-crossword-solver.com,thelayoff.com,thetorquereport.com,thingiverse.com,timeful.app,torontosun.com,toyokeizai.net,trafficnews.jp,travelingformiles.com,trilltrill.jp,tvtv.ca,tvtv.us,ukaudiomart.com,urbandictionary.com,urldecoder.org,usaudiomart.com,vague.style,watchdocumentaries.com,welt.de,willyweather.*,word-grabber.com,wordshake.com,wort-suchen.de##^script[data-cfasync="false"][nowprocket] +dnevnik.hr,neowin.net,newatlas.com,razzball.com##^script:has-text(/^\(async\(\)=>\{function.{1,200}\.head.{1,100}\.bind.{1,900}location\.href.{1,100}\}\)\(\);$/) +divinedaolibrary.com,lejdd.fr,scribd.com,slideshare.net,songfacts.com,tips-and-tricks.co##^script:has-text(/\(async\s*\(\)\s*=>\s*\{\s*try\s*\{\s*(const|var)/) +si.com##^script:has-text('"https://html-load.com/loader.min.js"') +akinator.com,and-more.co,astro-seek.com,autofrage.net,bab.la,babla.*,boardingarea.com,collinsdictionary.com,computerfrage.net,dictionary.cambridge.org,dictionnaire.lerobert.com,dnevnik.hr,doviz.com,egitim.net.tr,egolf.jp,exceljet.net,finanzfrage.net,freemcserver.net,gesundheitsfrage.net,gezondnu.nl,gutefrage.net,happyinshape.com,houseandgarden.co,infinityfree.com,ldoceonline.com,liveandletsfly.com,magmix.jp,mamastar.jp,motorradfrage.net,neoseeker.com,newatlas.com,otonanswer.jp,oxfordlearnersdictionaries.com,pinterpoin.com,pons.com,reisefrage.net,sinemalar.com,sportlerfrage.net,torontosun.com,toyokeizai.net,trafficnews.jp,travelingformiles.com,usaudiomart.com,vague.style,welt.de##^script:has-text(await eval) +9gag.com,augustacrime.com,base64decode.org,calculatorsoup.com,canuckaudiomart.com,costcoinsider.com,crosswordsolver.com,dict.cc,elnacional.cat,girlschannel.net,itavisen.no,kreuzwortraetsel.de,livescience.com,lootlemon.com,merinfo.se,motscroises.fr,mrexcel.com,nemzetisport.hu,oeffnungszeitenbuch.de,oraridiapertura24.it,pinterpoin.com,ppatour.com,rotowire.com,the-crossword-solver.com,tvtv.ca,tvtv.us,ukaudiomart.com,urldecoder.org,watchdocumentaries.com,word-grabber.com,wort-suchen.de##^script:has-text(()=>eval) +buchstaben.com,nemzetisport.hu##^script:has-text(() => eval) +adrenaline.com.br,automobile-catalog.com,euronews.com,fandom.com,game8.jp,gerbeaud.com,gutefrage.net,motorbikecatalog.com,thetorquereport.com,urbandictionary.com,welt.de,wordshake.com##^script:has-text(/:\[?window,/) +mamastar.jp##^script:has-text(: window,) +km77.com##^script:has-text(await new Promise) +km77.com,timeful.app,willyweather.*##^script:has-text(&&window,) +automobile-catalog.com,index.hr,motorbikecatalog.com,skinmc.net##^script:has-text(,window]) +9gag.com,animalia.bio,doviz.com,pakkotoisto.com##^script:has-text(void 0||window,) +greenwichmeantime.com,higherorlowergame.com##^script:has-text(void 0 || window,) +freemcserver.net##^script:has-text(window,void 0) +gamewith.jp,urldecoder.org##^script:has-text(').join(String.fromCharCode') +singjupost.com##^script:has-text(domain=?eventId=&error=) +sparkchess.com##^script:has-text(html-load.cc) +brawlytix.com##^script:has-text(nowprocket) +scribd.com##^script:has-text(adShieldError) +fossbytes.com,helpdeskgeek.com,kuruma-news.jp,perezhilton.com##^script:has-text(';confirm(') +1geki.jp,373news.com,50states.com,actugaming.net,aerotrader.com,altarofgaming.com,anagram-solver.io,areaconnect.com,as-web.jp,atvtrader.com,aucfree.com,autoby.jp,autoc-one.jp,autofrage.net,automobile-catalog.com,bab.la,babla.*,baseballchannel.jp,buchstaben.com,cadryskitchen.com,cafedelites.com,calculatorsoup.com,carscoops.com,campsitephotos.com,canarystreetcrafts.com,celebritynetworth.com,cesoirtv.com,chanto.jp.net,chef-in-training.com,chocolatecoveredkatie.com,cinetrafic.fr,collinsdictionary.com,commercialtrucktrader.com,computerfrage.net,convertcase.net,costcoinsider.com,crosswordsolver.com,culturequizz.com,curbsideclassic.com,cycletrader.com,dallashoopsjournal.com,dayspedia.com,dexerto.com,dict.cc,dictionary.cambridge.org,dictionnaire.lerobert.com,dnevno.hr,donbalon.com,driveteslacanada.ca,dropgame.jp,ecranlarge.com,eigachannel.jp,equipmenttrader.com,ev-times.com,finanzfrage.net,fixthecfaa.com,flagle.io,footballchannel.jp,freeconvert.com,freemcserver.net,freeride.com,futabanet.jp,futabasha-change.com,fxstreet-id.com,fxstreet-vn.com,fxstreet.*,game8.jp,games.arkadium.com,gamewith.jp,gazetaprawna.pl,geogridgame.com,geoguessr.com,gerbeaud.com,gesundheitsfrage.net,gifu-np.co.jp,gigafile.nu,globalrph.com,golf-live.at,grapee.jp,gutefrage.net,hang.hu,happymoments.lol,harmonikum.co,hb-nippon.com,heureka.cz,hochi.news,horairesdouverture24.fr,hotcopper.co.nz,hotcopper.com.au,hvac-talk.com,ib-game.jp,idokep.hu,indianhealthyrecipes.com,indiatimes.com,infor.pl,insider-gaming.com,invoice-generator.com,iphoneincanada.ca,iza.ne.jp,j-cast.com,j-town.net,j7p.jp,jablickar.cz,javatpoint.com,jigsawexplorer.com,jiji.com,jikayosha.jp,jocjapantravel.com,judgehype.com,kinmaweb.jp,km77.com,kobe-journal.com,krepsinis.net,kreuzwortraetsel.de,kstp.com,kurashinista.jp,kyoteibiyori.com,lacuarta.com,lacuarta.com,laleggepertutti.it,langenscheidt.com,laposte.net,laughingsquid.com,lawyersgunsmoneyblog.com,ldoceonline.com,lessdebt.com,lettersolver.com,liliputing.com,listentotaxman.com,livenewschat.eu,logicieleducatif.fr,luremaga.jp,mafab.hu,mahjongchest.com,mainichi.jp,majorleaguepickleball.co,maketecheasier.com,malaymail.com,mamastar.jp,marineinsight.com,mathplayzone.com,meteo60.fr,midhudsonnews.com,minesweeperquest.com,minkou.jp,modhub.us,modsbase.com,modsfire.com,moin.de,motor-fan.jp,motorbikecatalog.com,motorradfrage.net,motscroises.fr,movie-locations.com,muragon.com,mykoreankitchen.com,namemc.com,nana-press.com,natalie.mu,nationaltoday.com,nbadraft.net,newatlas.com,news.zerkalo.io,newsinlevels.com,newsweekjapan.jp,newsyou.info,niketalk.com,nintendoeverything.com,nlab.itmedia.co.jp,noorderland.nl,notebookcheck-cn.com,notebookcheck-hu.com,notebookcheck-ru.com,notebookcheck-tr.com,notebookcheck.*,nouvelobs.com,nyitvatartas24.hu,oeffnungszeitenbuch.de,onlineradiobox.com,operawire.com,optionsprofitcalculator.com,oraridiapertura24.it,overclock.net,oxfordlearnersdictionaries.com,palabr.as,pashplus.jp,percentagecalculator.net,persoenlich.com,petitfute.com,petitrobert.fr,play-games.com,pllive.xmediaeg.com,pons.com,popdaily.com.tw,powerpyx.com,pptvhd36.com,profitline.hu,puzzlegarage.com,pwctrader.com,quefaire.be,radio-australia.org,radio-osterreich.at,raetsel-hilfe.de,raider.io,ranking.net,rarethief.com,references.be,reisefrage.net,relevantmagazine.com,reptilesmagazine.com,resproleplayer.me,rostercon.com,russianmachineneverbreaks.com,rvtrader.com,samsungmagazine.eu,sankei.com,sanspo.com,scribens.com,scribens.fr,siennachat.com,skyandtelescope.org,slashdot.org,snowmobiletrader.com,soccerdigestweb.com,solitairehut.com,sourceforge.net,southhemitv.com,soxprospects.com,spaghetti-interactive.it,speisekarte.de,spendwithpennies.com,sportalkorea.com,sportlerfrage.net,statecollege.com,stayglam.com,steamidfinder.com,stocktwits.com,sudokutable.com,superhonda.com,syosetu.com,szamoldki.hu,talkwithstranger.com,tastesbetterfromscratch.com,tbs.co.jp,techdico.com,the-crossword-solver.com,thecelticblog.com,thedigestweb.com,thefirearmblog.com,traicy.com,transparentcalifornia.com,transparentnevada.com,trilltrill.jp,tunebat.com,tvtv.ca,tvtv.us,tweaktown.com,twn.hu,tyda.se,ufret.jp,universalis.fr,uptodown.com,uscreditcardguide.com,v8sleuth.com.au,verkaufsoffener-sonntag.com,videocelts.com,vimm.net,wallpapers.com,wamgame.jp,wanderworthy.com,watchdocumentaries.com,wattedoen.be,wdwnt.com,wdwnt.jp,webdesignledger.com,weldingweb.com,welt.de,wetteronline.de,wfmz.com,whec.com,wieistmeineip.*,wielerflits.be,wielerflits.nl,winbuzzer.com,winfuture.de,word-grabber.com,wordfinderx.com,wordhippo.com,worldjournal.com,worldle.teuteuf.fr,wort-suchen.de,woxikon.*,young-machine.com,yugioh-starlight.com,yutura.net,zagreb.info,zakzak.co.jp##^script:has-text(html-load.com) +! livedoor-sites +2chblog.jp,2monkeys.jp,46matome.net,akb48glabo.com,akb48matomemory.com,alfalfalfa.com,all-nationz.com,anihatsu.com,aqua2ch.net,blog.esuteru.com,blog.livedoor.jp,blog.jp,blogo.jp,chaos2ch.com,choco0202.work,crx7601.com,danseisama.com,dareda.net,digital-thread.com,doorblog.jp,exawarosu.net,fgochaldeas.com,football-2ch.com,gekiyaku.com,golog.jp,hacchaka.net,heartlife-matome.com,liblo.jp,fesoku.net,fiveslot777.com,gamejksokuhou.com,girlsreport.net,girlsvip-matome.com,grasoku.com,gundamlog.com,honyaku-channel.net,ikarishintou.com,imas-cg.net,imihu.net,inutomo11.com,itainews.com,itaishinja.com,jin115.com,jisaka.com,jnews1.com,jumpsokuhou.com,jyoseisama.com,keyakizaka46matomemory.net,kidan-m.com,kijoden.com,kijolariat.net,kijolifehack.com,kijomatomelog.com,kijyokatu.com,kijyomatome.com,kijyomatome-ch.com,kijyomita.com,kirarafan.com,kitimama-matome.net,kitizawa.com,konoyubitomare.jp,kotaro269.com,kyousoku.net,ldblog.jp,livedoor.biz,livedoor.blog,majikichi.com,matacoco.com,matomeblade.com,matomelotte.com,matometemitatta.com,mojomojo-licarca.com,morikinoko.com,nandemo-uketori.com,netatama.net,news-buzz1.com,news30over.com,nishinippon.co.jp,nmb48-mtm.com,norisoku.com,npb-news.com,ocsoku.com,okusama-kijyo.com,onecall2ch.com,onihimechan.com,orusoku.com,otakomu.jp,otoko-honne.com,oumaga-times.com,outdoormatome.com,pachinkopachisro.com,paranormal-ch.com,recosoku.com,s2-log.com,saikyo-jump.com,shuraba-matome.com,ske48matome.net,squallchannel.com,sukattojapan.com,sumaburayasan.com,sutekinakijo.com,usi32.com,uwakich.com,uwakitaiken.com,vault76.info,vipnews.jp,vippers.jp,vipsister23.com,vtubernews.jp,watarukiti.com,world-fusigi.net,zakuzaku911.com,zch-vip.com##^script:has-text(html-load.com) +! CultivateWP sites +amindfullmom.com,choosingchia.com,creativecanning.com,downshiftology.com,gardeninthekitchen.com,heygrillhey.com,loveinmyoven.com,modernhoney.com,mrmakeithappen.com,plainchicken.com,practicalselfreliance.com,sipandfeast.com,stellanspice.com,thecookierookie.com,thefoodcharlatan.com,tutti-dolci.com##^script:has-text(html-load.com) +! Minute Media +12thmanrising.com,allucanheat.com,aroundthefoghorn.com,arrowheadaddict.com,badgerofhonor.com,bamahammer.com,beargoggleson.com,beyondtheflag.com,birdswatcher.com,blackandteal.com,blogredmachine.com,bluemanhoop.com,boltbeat.com,bosoxinjection.com,buffalowdown.com,caneswarning.com,catcrave.com,chopchat.com,climbingtalshill.com,cubbiescrib.com,dailyknicks.com,dairylandexpress.com,dawgpounddaily.com,dawindycity.com,dawnofthedawg.com,detroitjockcity.com,dodgersway.com,ebonybird.com,fansided.com,flywareagle.com,gbmwolverine.com,gigemgazette.com,gmenhq.com,hailfloridahail.com,halohangout.com,hardwoodhoudini.com,horseshoeheroes.com,housethathankbuilt.com,huskercorner.com,insidetheiggles.com,jaysjournal.com,justblogbaby.com,kckingdom.com,kingjamesgospel.com,kingsofkauffman.com,lakeshowlife.com,lombardiave.com,mentalfloss.com,motorcitybengals.com,musketfire.com,nflspinzone.com,ninernoise.com,nugglove.com,onechicagocenter.com,phinphanatic.com,pistonpowered.com,predominantlyorange.com,ramblinfan.com,redbirdrants.com,reviewingthebrew.com,riggosrag.com,ripcityproject.com,risingapple.com,rumbunter.com,scarletandgame.com,section215.com,sidelionreport.com,slapthesign.com,sodomojo.com,southsideshowdown.com,stillcurtain.com,stormininnorman.com,stripehype.com,thatballsouttahere.com,thecelticbhoys.com,thejetpress.com,thelandryhat.com,thepewterplank.com,thesmokingcuban.com,thevikingage.com,thunderousintentions.com,undeadwalking.com,valleyofthesuns.com,whodatdish.com,winteriscoming.net,yanksgoyard.com##^script:has-text('"data-sdk"') +! PMC sites +ampav.com,artforum.com,artnews.com,atxtv.co,bgr.com,billboard.com,deadline.com,dickclark.com,footwearnews.com,goldderby.com,hollywoodreporter.com,indiewire.com,la3c.com,lifeisbeautiful.com,luminatedata.com,robbreport.com,rollingstone.com,shemedia.com,sourcingjournal.com,sportico.com,spy.com,sxsw.com,tvline.com,variety.com,vibe.com,wwd.com##^script[data-cfasync="false"][nowprocket] +! gutefrage.net sites +autofrage.net,computerfrage.net,finanzfrage.net,gesundheitsfrage.net,gutefrage.net,motorradfrage.net,reisefrage.net,sportlerfrage.net##^script[data-cfasync="false"][nowprocket] +! Bild group sites +autobild.de,bild.de,bz-berlin.de,computerbild.de,fitbook.de,fitbook-magazine.com,myhomebook.de,myhomebook-magazine.com,petbook.de,petbook-magazine.com,stylebook.de,techbook.de,techbook-magazine.com,travelbook.de,travelbook-magazine.com##^script:has-text(/\(\)=>eval|html-load\.com|await eval|:window/) +autobild.de,bild.de,bz-berlin.de,computerbild.de,fitbook.de,fitbook-magazine.com,myhomebook.de,myhomebook-magazine.com,petbook.de,petbook-magazine.com,stylebook.de,techbook.de,techbook-magazine.com,travelbook.de,travelbook-magazine.com##^script[onload*="error-report.com"] +autobild.de,bild.de,bz-berlin.de,computerbild.de,fitbook.de,fitbook-magazine.com,myhomebook.de,myhomebook-magazine.com,petbook.de,petbook-magazine.com,stylebook.de,techbook.de,techbook-magazine.com,travelbook.de,travelbook-magazine.com##^script[data-cfasync="false"][nowprocket] +! Postmedia group +calgaryherald.com,calgarysun.com,canada.com,canoe.com,driving.ca,edmontonjournal.com,edmontonsun.com,financialpost.com,leaderpost.com,lfpress.com,montrealgazette.com,nationalpost.com,ontariofarmer.com,ottawacitizen.com,ottawasun.com,thegrowthop.com,theprovince.com,thestarphoenix.com,tj.news,torontosun.com,vancouversun.com,windsorstar.com,winnipegsun.com##^script:has-text(/\(\)=>eval|html-load\.com|await eval|:window/) +calgaryherald.com,calgarysun.com,canada.com,canoe.com,driving.ca,edmontonjournal.com,edmontonsun.com,financialpost.com,leaderpost.com,lfpress.com,montrealgazette.com,nationalpost.com,ontariofarmer.com,ottawacitizen.com,ottawasun.com,thegrowthop.com,theprovince.com,thestarphoenix.com,tj.news,torontosun.com,vancouversun.com,windsorstar.com,winnipegsun.com##^script[onload*="error-report.com"] +calgaryherald.com,calgarysun.com,canada.com,canoe.com,driving.ca,edmontonjournal.com,edmontonsun.com,financialpost.com,leaderpost.com,lfpress.com,montrealgazette.com,nationalpost.com,ontariofarmer.com,ottawacitizen.com,ottawasun.com,thegrowthop.com,theprovince.com,thestarphoenix.com,tj.news,torontosun.com,vancouversun.com,windsorstar.com,winnipegsun.com##^script[data-cfasync="false"][nowprocket] +! Prisma Media sites +caminteresse.fr,capital.fr,cotemaison.fr,croq-kilos.com,cuisineaz.com,deco.fr,femmeactuelle.fr,fourchette-et-bikini.fr,gamesider.com,geo.fr,harpersbazaar.fr,hbrfrance.fr,meteocity.com,passeportsante.net,programme.tv,programme-tv.net,turbo.fr,uppercutmma.com,voici.fr##^script[src*="html-load.com"] +caminteresse.fr,capital.fr,cotemaison.fr,croq-kilos.com,cuisineaz.com,deco.fr,femmeactuelle.fr,fourchette-et-bikini.fr,gamesider.com,geo.fr,harpersbazaar.fr,hbrfrance.fr,meteocity.com,passeportsante.net,programme.tv,programme-tv.net,turbo.fr,uppercutmma.com,voici.fr##^script:has-text(()=>eval) +caminteresse.fr,capital.fr,cotemaison.fr,croq-kilos.com,cuisineaz.com,deco.fr,femmeactuelle.fr,fourchette-et-bikini.fr,gamesider.com,geo.fr,harpersbazaar.fr,hbrfrance.fr,meteocity.com,passeportsante.net,programme.tv,programme-tv.net,turbo.fr,uppercutmma.com,voici.fr##^script[data-cfasync="false"][nowprocket] +! Famed&Bound Media sites +gentside.*,maxisciences.com,ohmymag.*##^script[src*="html-load.com"] +gentside.*,maxisciences.com,ohmymag.*##^script:has-text(()=>eval) +gentside.*,maxisciences.com,ohmymag.*##^script[data-cfasync="false"] +! Iconic Media Group +anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,birminghamworld.uk,blackpoolgazette.co.uk,bristolworld.com,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,dirtbikerider.com,doncasterfreepress.co.uk,donegallive.ie,expressandstar.com,falkirkherald.co.uk,farminglife.com,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,limerickleader.ie,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,nationalworld.com,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northdevongazette.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,petersfieldpost.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,shropshirestar.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,sussexexpress.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##^script[onload*="error-report.com"] +anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,birminghamworld.uk,blackpoolgazette.co.uk,bristolworld.com,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,dirtbikerider.com,doncasterfreepress.co.uk,donegallive.ie,expressandstar.com,falkirkherald.co.uk,farminglife.com,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,limerickleader.ie,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,nationalworld.com,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northdevongazette.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,petersfieldpost.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,shropshirestar.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,sussexexpress.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##^script[data-cfasync="false"][nowprocket] +anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,birminghamworld.uk,blackpoolgazette.co.uk,bristolworld.com,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,dirtbikerider.com,doncasterfreepress.co.uk,donegallive.ie,expressandstar.com,falkirkherald.co.uk,farminglife.com,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,limerickleader.ie,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,nationalworld.com,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northdevongazette.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,petersfieldpost.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,shropshirestar.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,sussexexpress.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##^script:has-text(await eval) +! Cars forums sites +4runner6g.com,bronco6g.com,broncosportforum.com,camaro7g.com,cayenneevforum.com,civicxi.com,cybertruckownersclub.com,dakotaforums.com,ev3forums.com,f150gen14.com,f150lightningforum.com,integraforums.com,jeepgladiatorforum.com,jeepreconforum.com,jlwranglerforums.com,macanevowners.com,macheforum.com,mavericktruckclub.com,mustang6g.com,mustang7g.com,nissanzclub.com,rancheroforum.com,ranger5g.com,ranger6g.com,rivianforums.com,scoutevforum.com,slateforums.com,supramkv.com,tacoma4g.com,taycanforum.com,xterraforum.com##^script[src*="html-load.com"] +4runner6g.com,bronco6g.com,broncosportforum.com,camaro7g.com,cayenneevforum.com,civicxi.com,cybertruckownersclub.com,dakotaforums.com,ev3forums.com,f150gen14.com,f150lightningforum.com,integraforums.com,jeepgladiatorforum.com,jeepreconforum.com,jlwranglerforums.com,macanevowners.com,macheforum.com,mavericktruckclub.com,mustang6g.com,mustang7g.com,nissanzclub.com,rancheroforum.com,ranger5g.com,ranger6g.com,rivianforums.com,scoutevforum.com,slateforums.com,supramkv.com,tacoma4g.com,taycanforum.com,xterraforum.com##^script:has-text(:window,) +4runner6g.com,bronco6g.com,broncosportforum.com,camaro7g.com,cayenneevforum.com,civicxi.com,cybertruckownersclub.com,dakotaforums.com,ev3forums.com,f150gen14.com,f150lightningforum.com,integraforums.com,jeepgladiatorforum.com,jeepreconforum.com,jlwranglerforums.com,macanevowners.com,macheforum.com,mavericktruckclub.com,mustang6g.com,mustang7g.com,nissanzclub.com,rancheroforum.com,ranger5g.com,ranger6g.com,rivianforums.com,scoutevforum.com,slateforums.com,supramkv.com,tacoma4g.com,taycanforum.com,xterraforum.com##^script[data-cfasync="false"][nowprocket] +! .lt sites +aina.lt,alfa.lt,alkas.lt,alytusplius.lt,anyksta.lt,befa.lt,bilis.lt,etaplius.lt,manonamai.lt,mmm.lt,raskakcija.lt,ublika.lt,sekunde.lt,tv3.lt##^script:has-text(html-load.com) +! Network N Media sites +pcgamebenchmark.com,pcgamesn.com,pockettactics.com,wargamer.com##^script[src*="html-load.com"] +pcgamebenchmark.com,pcgamesn.com,pockettactics.com,wargamer.com##^script:has-text(()=>eval) +pcgamebenchmark.com,pcgamesn.com,pockettactics.com,wargamer.com##^script[data-cfasync="false"][nowprocket] +! Medium Large Sports Media +dodgerblue.com##^script:has-text(error-report.com) +! Future PLC sites +advnture.com,androidcentral.com,avnetwork.com,bikeperfect.com,cinemablend.com,countrylife.co.uk,creativebloq.com,cyclingnews.com,cyclingweekly.com,decanter.com,digitalcameraworld.com,discover.futureplc.com,fitandwell.com,fourfourtwo.com,gamesradar.com,gardeningknowhow.com,golfmonthly.com,guitarworld.com,homebuilding.co.uk,homesandgardens.com,idealhome.co.uk,imore.com,itpro.com,kiplinger.com,laptopmag.com,livescience.com,livingetc.com,loudersound.com,marieclaire.co.uk,marieclaire.com,moneyweek.com,musicradar.com,nexttv.com,pcgamer.com,realhomes.com,shortlist.com,space.com,t3.com,techlearning.com,techradar.com,theweek.com,tomsguide.com,tomshardware.com,tvtechnology.com,wallpaper.com,whathifi.com,whattowatch.com,whowhatwear.com,windowscentral.com,womanandhome.com##^script:has-text(html-load.com) +! Mexican Lottery sites +melaterevancha.com,resultadostris.com##^script[onload*="error-report.com"] +melaterevancha.com,resultadostris.com##^script:has-text(await eval) +melaterevancha.com,resultadostris.com##^script[data-cfasync="false"][nowprocket] +! Motorsport network +autosport.com,insideevs.com,motor1.com,motorsport.com,motorsportjobs.com,motorsportstats.com,rideapart.com##^script:has-text(html-load.com) +! Pijper Media +faitsfizzle.fr,fizzlefacts.com,fizzlefakten.de,hechosfizzle.com##^script[onload*="error-report.com"] +faitsfizzle.fr,fizzlefacts.com,fizzlefakten.de,hechosfizzle.com##^script[data-cfasync="false"][nowprocket] +faitsfizzle.fr,fizzlefacts.com,fizzlefakten.de,hechosfizzle.com##^script:has-text(await eval) +consejosytrucos.co,conselhosetruques.com,consiglietrucchi.com,poradyiwskazowki.pl,tippsundtricks.co,tips-and-tricks.co,tipsandtricksarab.com,tipsandtricksjapan.com,tipsandtrickskorea.com,tipsenweetjes.nl,trucs-et-astuces.co##^script[onload*="error-report.com"] +consejosytrucos.co,conselhosetruques.com,consiglietrucchi.com,poradyiwskazowki.pl,tippsundtricks.co,tips-and-tricks.co,tipsandtricksarab.com,tipsandtricksjapan.com,tipsandtrickskorea.com,tipsenweetjes.nl,trucs-et-astuces.co##^script[data-cfasync="false"][nowprocket] +consejosytrucos.co,conselhosetruques.com,consiglietrucchi.com,poradyiwskazowki.pl,tippsundtricks.co,tips-and-tricks.co,tipsandtricksarab.com,tipsandtricksjapan.com,tipsandtrickskorea.com,tipsenweetjes.nl,trucs-et-astuces.co##^script:has-text(await eval) +! Infoplaza +buienalarm.nl,meteoradar.co.uk,meteox.com,niederschlagsradar.de,sat24.com,weerslag.nl##^script[src*="html-load.com"] +buienalarm.nl,meteoradar.co.uk,meteox.com,niederschlagsradar.de,sat24.com,weerslag.nl##^script[data-cfasync="false"][nowprocket] +buienalarm.nl,meteoradar.co.uk,meteox.com,niederschlagsradar.de,sat24.com,weerslag.nl##^script:has-text(').join(String.fromCharCode') +!#else +interfootball.co.kr,a-ha.io,cboard.net,joongdo.co.kr,viva100.com,maketecheasier.com,tweaksforgeeks.com,m.inven.co.kr,mlbpark.donga.com##+js(rmnt, script, KCgpPT57bGV0IGU) +bleepingcomputer.com,pravda.com.ua##+js(rmnt, script, Ad-Shield) +ap7am.com,cinema.com.my,dolldivine.com,giornalone.it,iplocation.net,jamaicajawapos.com,jutarnji.hr,kompasiana.com,mediaindonesia.com,niice-woker.com,pep.ph,slobodnadalmacija.hr,upmedia.mg##+js(rmnt, script, adrecover.com) +cinema.com.my##+js(trusted-suppress-native-method, Element.prototype.setAttribute, '"data-sdk"', abort) +winfuture.de##+js(aeld, load, error-report.com) +wetter.com##+js(rmnt, script, /wcomAdBlock|error-report\.com/) +neowin.net,newatlas.com,nextchessmove.com,razzball.com##+js(rmnt, script, head.appendChild.bind) +dnevnik.hr,neowin.net,newatlas.com,razzball.com##+js(rmnt, script, '/^\(async\(\)=>\{function.{1,200}head.{1,100}\.bind.{1,900}location\.href.{1,100}\}\)\(\);$/') +deadline.com,divinedaolibrary.com,doviz.com,hollywoodlife.com,lejdd.fr,scribd.com,slideshare.net,songfacts.com,thelayoff.com,tips-and-tricks.co,wwd.com##+js(rmnt, script, /\(async\s*\(\)\s*=>\s*\{\s*try\s*\{\s*(const|var)/) +si.com##+js(rmnt, script, '"https://html-load.com/loader.min.js"') +akinator.com,and-more.co,astro-seek.com,autofrage.net,bab.la,babla.*,boardingarea.com,collinsdictionary.com,conselhosetruques.com,computerfrage.net,dictionary.cambridge.org,dictionnaire.lerobert.com,dnevnik.hr,egitim.net.tr,egolf.jp,exceljet.net,finanzfrage.net,freemcserver.net,gesundheitsfrage.net,gezondnu.nl,gutefrage.net,happyinshape.com,houseandgarden.co,infinityfree.com,ldoceonline.com,liveandletsfly.com,magmix.jp,mamastar.jp,motorradfrage.net,neoseeker.com,newatlas.com,otonanswer.jp,oxfordlearnersdictionaries.com,pinterpoin.com,pons.com,reisefrage.net,sinemalar.com,sportlerfrage.net,torontosun.com,toyokeizai.net,trafficnews.jp,travelingformiles.com,usaudiomart.com,vague.style,welt.de##+js(rmnt, script, await eval) +9gag.com,augustacrime.com,base64decode.org,calculatorsoup.com,canuckaudiomart.com,costcoinsider.com,crosswordsolver.com,dict.cc,elnacional.cat,girlschannel.net,itavisen.no,kreuzwortraetsel.de,lettersolver.com,livescience.com,lootlemon.com,merinfo.se,motscroises.fr,mrexcel.com,nemzetisport.hu,oeffnungszeitenbuch.de,oraridiapertura24.it,pinterpoin.com,ppatour.com,rotowire.com,the-crossword-solver.com,tvtv.ca,tvtv.us,ukaudiomart.com,urldecoder.org,watchdocumentaries.com,word-grabber.com,wort-suchen.de##+js(rmnt, script, ()=>eval) +buchstaben.com,nemzetisport.hu##+js(rmnt, script, () => eval) +adrenaline.com.br,automobile-catalog.com,euronews.com,fandom.com,game8.jp,gerbeaud.com,gutefrage.net,motorbikecatalog.com,thetorquereport.com,urbandictionary.com,welt.de,wordshake.com##+js(rmnt, script, '/:\[?window,/') +mamastar.jp##+js(rmnt, script, : window\,) +km77.com##+js(rmnt, script, await new Promise) +km77.com,timeful.app,willyweather.*##+js(rmnt, script, &&window\,) +automobile-catalog.com,index.hr,motorbikecatalog.com,skinmc.net##+js(rmnt, script, \,window]) +9gag.com,animalia.bio,doviz.com,pakkotoisto.com##+js(rmnt, script, void 0||window\,) +greenwichmeantime.com,higherorlowergame.com##+js(rmnt, script, void 0 || window\,) +freemcserver.net##+js(rmnt, script, window\,void 0) +gamewith.jp,urldecoder.org##+js(rmnt, script, ').join(String.fromCharCode') +singjupost.com##+js(rmnt, script, domain=?eventId=&error=) +helpdeskgeek.com##+js(rmnt, script, ;confirm() +thingiverse.com##+js(rmnt, script, /:\"length\"\}\);$/) +sparkchess.com##+js(rmnt, script, html-load.cc) +brawlytix.com##+js(rmnt, script, nowprocket) +scribd.com##+js(rmnt, script, adShieldError) +1geki.jp,373news.com,50states.com,actugaming.net,aerotrader.com,altarofgaming.com,anagram-solver.io,areaconnect.com,as-web.jp,atvtrader.com,aucfree.com,autoby.jp,autoc-one.jp,autofrage.net,automobile-catalog.com,bab.la,babla.*,baseballchannel.jp,buchstaben.com,cadryskitchen.com,cafedelites.com,calculatorsoup.com,carscoops.com,campsitephotos.com,canarystreetcrafts.com,celebritynetworth.com,cesoirtv.com,chanto.jp.net,chef-in-training.com,chocolatecoveredkatie.com,cinetrafic.fr,collinsdictionary.com,commercialtrucktrader.com,computerfrage.net,convertcase.net,crosswordsolver.com,culturequizz.com,curbsideclassic.com,cycletrader.com,dallashoopsjournal.com,dayspedia.com,dexerto.com,dict.cc,dictionary.cambridge.org,dictionnaire.lerobert.com,dnevno.hr,donbalon.com,driveteslacanada.ca,dropgame.jp,ecranlarge.com,eigachannel.jp,equipmenttrader.com,ev-times.com,finanzfrage.net,fixthecfaa.com,flagle.io,footballchannel.jp,freeconvert.com,freemcserver.net,freeride.com,futabanet.jp,futabasha-change.com,fxstreet-id.com,fxstreet-vn.com,fxstreet.*,game8.jp,games.arkadium.com,gamewith.jp,gazetaprawna.pl,geogridgame.com,geoguessr.com,gerbeaud.com,gesundheitsfrage.net,gifu-np.co.jp,gigafile.nu,globalrph.com,golf-live.at,grapee.jp,gutefrage.net,hang.hu,happymoments.lol,harmonikum.co,hb-nippon.com,heureka.cz,hochi.news,horairesdouverture24.fr,hotcopper.co.nz,hotcopper.com.au,hvac-talk.com,ib-game.jp,idokep.hu,indianhealthyrecipes.com,indiatimes.com,infor.pl,insider-gaming.com,invoice-generator.com,iphoneincanada.ca,iza.ne.jp,j-cast.com,j-town.net,j7p.jp,jablickar.cz,javatpoint.com,jigsawexplorer.com,jiji.com,jikayosha.jp,jocjapantravel.com,judgehype.com,kinmaweb.jp,km77.com,kobe-journal.com,krepsinis.net,kreuzwortraetsel.de,kstp.com,kurashinista.jp,kyoteibiyori.com,lacuarta.com,lacuarta.com,laleggepertutti.it,langenscheidt.com,laposte.net,laughingsquid.com,lawyersgunsmoneyblog.com,ldoceonline.com,lessdebt.com,lettersolver.com,liliputing.com,listentotaxman.com,livenewschat.eu,logicieleducatif.fr,luremaga.jp,mafab.hu,mahjongchest.com,mainichi.jp,majorleaguepickleball.co,maketecheasier.com,malaymail.com,mamastar.jp,marineinsight.com,mathplayzone.com,meteo60.fr,midhudsonnews.com,minesweeperquest.com,minkou.jp,modhub.us,modsbase.com,modsfire.com,moin.de,motor-fan.jp,motorbikecatalog.com,motorradfrage.net,motscroises.fr,movie-locations.com,muragon.com,mykoreankitchen.com,namemc.com,nana-press.com,natalie.mu,nationaltoday.com,nbadraft.net,newatlas.com,news.zerkalo.io,newsinlevels.com,newsweekjapan.jp,newsyou.info,niketalk.com,nintendoeverything.com,nlab.itmedia.co.jp,noorderland.nl,notebookcheck-cn.com,notebookcheck-hu.com,notebookcheck-ru.com,notebookcheck-tr.com,notebookcheck.*,nouvelobs.com,nyitvatartas24.hu,oeffnungszeitenbuch.de,onlineradiobox.com,operawire.com,optionsprofitcalculator.com,oraridiapertura24.it,overclock.net,oxfordlearnersdictionaries.com,palabr.as,pashplus.jp,percentagecalculator.net,persoenlich.com,petitfute.com,petitrobert.fr,play-games.com,pllive.xmediaeg.com,pons.com,popdaily.com.tw,powerpyx.com,pptvhd36.com,profitline.hu,puzzlegarage.com,pwctrader.com,quefaire.be,radio-australia.org,radio-osterreich.at,raetsel-hilfe.de,raider.io,ranking.net,rarethief.com,references.be,reisefrage.net,relevantmagazine.com,reptilesmagazine.com,roleplayer.me,rostercon.com,russianmachineneverbreaks.com,rvtrader.com,samsungmagazine.eu,sankei.com,sanspo.com,scribens.com,scribens.fr,siennachat.com,skyandtelescope.org,slashdot.org,snowmobiletrader.com,soccerdigestweb.com,solitairehut.com,sourceforge.net,southhemitv.com,soxprospects.com,spaghetti-interactive.it,speisekarte.de,spendwithpennies.com,sportalkorea.com,sportlerfrage.net,statecollege.com,stayglam.com,steamidfinder.com,stocktwits.com,sudokutable.com,superhonda.com,syosetu.com,szamoldki.hu,talkwithstranger.com,tastesbetterfromscratch.com,tbs.co.jp,techdico.com,the-crossword-solver.com,thecelticblog.com,thedigestweb.com,thefirearmblog.com,traicy.com,transparentcalifornia.com,transparentnevada.com,trilltrill.jp,tunebat.com,tvtv.ca,tvtv.us,tweaktown.com,twn.hu,tyda.se,ufret.jp,universalis.fr,uptodown.com,uscreditcardguide.com,v8sleuth.com.au,verkaufsoffener-sonntag.com,videocelts.com,vimm.net,wallpapers.com,wamgame.jp,wanderworthy.com,watchdocumentaries.com,wattedoen.be,wdwnt.com,wdwnt.jp,webdesignledger.com,weldingweb.com,welt.de,wetteronline.de,wfmz.com,whec.com,wieistmeineip.*,wielerflits.be,wielerflits.nl,winbuzzer.com,winfuture.de,word-grabber.com,wordfinderx.com,wordhippo.com,worldjournal.com,worldle.teuteuf.fr,wort-suchen.de,woxikon.*,young-machine.com,yugioh-starlight.com,yutura.net,zagreb.info,zakzak.co.jp##+js(rmnt, script, html-load.com) +! livedoor-sites +2chblog.jp,2monkeys.jp,46matome.net,akb48glabo.com,akb48matomemory.com,alfalfalfa.com,all-nationz.com,anihatsu.com,aqua2ch.net,blog.esuteru.com,blog.livedoor.jp,blog.jp,blogo.jp,chaos2ch.com,choco0202.work,crx7601.com,danseisama.com,dareda.net,digital-thread.com,doorblog.jp,exawarosu.net,fgochaldeas.com,football-2ch.com,gekiyaku.com,golog.jp,hacchaka.net,heartlife-matome.com,liblo.jp,fesoku.net,fiveslot777.com,gamejksokuhou.com,girlsreport.net,girlsvip-matome.com,grasoku.com,gundamlog.com,honyaku-channel.net,ikarishintou.com,imas-cg.net,imihu.net,inutomo11.com,itainews.com,itaishinja.com,jin115.com,jisaka.com,jnews1.com,jumpsokuhou.com,jyoseisama.com,keyakizaka46matomemory.net,kidan-m.com,kijoden.com,kijolariat.net,kijolifehack.com,kijomatomelog.com,kijyokatu.com,kijyomatome.com,kijyomatome-ch.com,kijyomita.com,kirarafan.com,kitimama-matome.net,kitizawa.com,konoyubitomare.jp,kotaro269.com,kyousoku.net,ldblog.jp,livedoor.biz,livedoor.blog,majikichi.com,matacoco.com,matomeblade.com,matomelotte.com,matometemitatta.com,mojomojo-licarca.com,morikinoko.com,nandemo-uketori.com,netatama.net,news-buzz1.com,news30over.com,nishinippon.co.jp,nmb48-mtm.com,norisoku.com,npb-news.com,ocsoku.com,okusama-kijyo.com,onecall2ch.com,onihimechan.com,orusoku.com,otakomu.jp,otoko-honne.com,oumaga-times.com,outdoormatome.com,pachinkopachisro.com,paranormal-ch.com,recosoku.com,s2-log.com,saikyo-jump.com,shuraba-matome.com,ske48matome.net,squallchannel.com,sukattojapan.com,sumaburayasan.com,sutekinakijo.com,usi32.com,uwakich.com,uwakitaiken.com,vault76.info,vipnews.jp,vippers.jp,vipsister23.com,vtubernews.jp,watarukiti.com,world-fusigi.net,zakuzaku911.com,zch-vip.com##+js(rmnt, script, html-load.com) +! CultivateWP sites +amindfullmom.com,choosingchia.com,creativecanning.com,downshiftology.com,gardeninthekitchen.com,heygrillhey.com,loveinmyoven.com,modernhoney.com,mrmakeithappen.com,plainchicken.com,practicalselfreliance.com,sipandfeast.com,stellanspice.com,thecookierookie.com,thefoodcharlatan.com,tutti-dolci.com##+js(rmnt, script, html-load.com) +! Minute Media +12thmanrising.com,allucanheat.com,aroundthefoghorn.com,arrowheadaddict.com,badgerofhonor.com,bamahammer.com,beargoggleson.com,beyondtheflag.com,birdswatcher.com,blackandteal.com,blogredmachine.com,bluemanhoop.com,boltbeat.com,bosoxinjection.com,buffalowdown.com,caneswarning.com,catcrave.com,chopchat.com,climbingtalshill.com,cubbiescrib.com,dailyknicks.com,dairylandexpress.com,dawgpounddaily.com,dawindycity.com,dawnofthedawg.com,detroitjockcity.com,dodgersway.com,ebonybird.com,fansided.com,flywareagle.com,gbmwolverine.com,gigemgazette.com,gmenhq.com,hailfloridahail.com,halohangout.com,hardwoodhoudini.com,horseshoeheroes.com,housethathankbuilt.com,huskercorner.com,insidetheiggles.com,jaysjournal.com,justblogbaby.com,kckingdom.com,kingjamesgospel.com,kingsofkauffman.com,lakeshowlife.com,lombardiave.com,mentalfloss.com,motorcitybengals.com,musketfire.com,nflspinzone.com,ninernoise.com,nugglove.com,onechicagocenter.com,phinphanatic.com,pistonpowered.com,predominantlyorange.com,ramblinfan.com,redbirdrants.com,reviewingthebrew.com,riggosrag.com,ripcityproject.com,risingapple.com,rumbunter.com,scarletandgame.com,section215.com,sidelionreport.com,slapthesign.com,sodomojo.com,southsideshowdown.com,stillcurtain.com,stormininnorman.com,stripehype.com,thatballsouttahere.com,thecelticbhoys.com,thejetpress.com,thelandryhat.com,thepewterplank.com,thesmokingcuban.com,thevikingage.com,thunderousintentions.com,undeadwalking.com,valleyofthesuns.com,whodatdish.com,winteriscoming.net,yanksgoyard.com##+js(rmnt, script, '"data-sdk"') +! Medium Large Sports Media +dodgerblue.com##+js(rmnt, script, error-report.com) +||azerion.com^ +||restomp-excity.online^ +! Bild group sites +autobild.de,bild.de,bz-berlin.de,computerbild.de,fitbook.de,fitbook-magazine.com,myhomebook.de,myhomebook-magazine.com,petbook.de,petbook-magazine.com,stylebook.de,techbook.de,techbook-magazine.com,travelbook.de,travelbook-magazine.com##+js(rmnt, script, /\(\)=>eval|html-load\.com|await eval|:window/) +! Postmedia group +calgaryherald.com,calgarysun.com,canada.com,canoe.com,driving.ca,edmontonjournal.com,edmontonsun.com,financialpost.com,leaderpost.com,lfpress.com,montrealgazette.com,nationalpost.com,ontariofarmer.com,ottawacitizen.com,ottawasun.com,thegrowthop.com,theprovince.com,thestarphoenix.com,tj.news,torontosun.com,vancouversun.com,windsorstar.com,winnipegsun.com##+js(rmnt, script, /\(\)=>eval|html-load\.com|await eval|:window/) +! Prisma Media sites +caminteresse.fr,capital.fr,cotemaison.fr,croq-kilos.com,cuisineaz.com,deco.fr,femmeactuelle.fr,fourchette-et-bikini.fr,gamesider.com,geo.fr,harpersbazaar.fr,hbrfrance.fr,meteocity.com,passeportsante.net,programme.tv,programme-tv.net,turbo.fr,uppercutmma.com,voici.fr##+js(rmnt, script, ()=>eval) +! Famed&Bound Media sites +gentside.*,maxisciences.com,ohmymag.*##+js(rmnt, script, ()=>eval) +! Iconic Media Group +anguscountyworld.co.uk,banburyguardian.co.uk,bedfordtoday.co.uk,biggleswadetoday.co.uk,birminghamworld.uk,blackpoolgazette.co.uk,bristolworld.com,bucksherald.co.uk,burnleyexpress.net,buxtonadvertiser.co.uk,chad.co.uk,daventryexpress.co.uk,derbyshiretimes.co.uk,derbyworld.co.uk,derryjournal.com,dewsburyreporter.co.uk,dirtbikerider.com,doncasterfreepress.co.uk,donegallive.ie,expressandstar.com,falkirkherald.co.uk,farminglife.com,fifetoday.co.uk,glasgowworld.com,halifaxcourier.co.uk,harboroughmail.co.uk,harrogateadvertiser.co.uk,hartlepoolmail.co.uk,hemeltoday.co.uk,hucknalldispatch.co.uk,lancasterguardian.co.uk,leightonbuzzardonline.co.uk,lep.co.uk,limerickleader.ie,lincolnshireworld.com,liverpoolworld.uk,londonworld.com,lutontoday.co.uk,manchesterworld.uk,meltontimes.co.uk,miltonkeynes.co.uk,nationalworld.com,newcastleworld.com,newryreporter.com,newsletter.co.uk,northamptonchron.co.uk,northantstelegraph.co.uk,northdevongazette.co.uk,northernirelandworld.com,northumberlandgazette.co.uk,nottinghamworld.com,peterboroughtoday.co.uk,petersfieldpost.co.uk,portsmouth.co.uk,rotherhamadvertiser.co.uk,scotsman.com,shieldsgazette.com,shropshirestar.com,stornowaygazette.co.uk,sunderlandecho.com,surreyworld.co.uk,sussexexpress.co.uk,thescarboroughnews.co.uk,thesouthernreporter.co.uk,thestar.co.uk,totallysnookered.com,wakefieldexpress.co.uk,warwickshireworld.com,wigantoday.net,worksopguardian.co.uk,yorkshireeveningpost.co.uk,yorkshirepost.co.uk##+js(rmnt, script, await eval) +! Cars forums sites +4runner6g.com,bronco6g.com,broncosportforum.com,camaro7g.com,cayenneevforum.com,civicxi.com,cybertruckownersclub.com,dakotaforums.com,ev3forums.com,f150gen14.com,f150lightningforum.com,integraforums.com,jeepgladiatorforum.com,jeepreconforum.com,jlwranglerforums.com,macanevowners.com,macheforum.com,mavericktruckclub.com,mustang6g.com,mustang7g.com,nissanzclub.com,rancheroforum.com,ranger5g.com,ranger6g.com,rivianforums.com,scoutevforum.com,slateforums.com,supramkv.com,tacoma4g.com,taycanforum.com,xterraforum.com##+js(rmnt, script, :window\,) +! .lt sites +aina.lt,alfa.lt,alkas.lt,alytusplius.lt,anyksta.lt,befa.lt,bilis.lt,etaplius.lt,manonamai.lt,mmm.lt,raskakcija.lt,respublika.lt,sekunde.lt,tv3.lt##+js(rmnt, script, html-load.com) +! Network N Media sites +pcgamebenchmark.com,pcgamesn.com,pockettactics.com,wargamer.com##+js(rmnt, script, ()=>eval) +! Future PLC sites +advnture.com,androidcentral.com,avnetwork.com,bikeperfect.com,cinemablend.com,countrylife.co.uk,creativebloq.com,cyclingnews.com,cyclingweekly.com,decanter.com,digitalcameraworld.com,discover.futureplc.com,fitandwell.com,fourfourtwo.com,gamesradar.com,gardeningknowhow.com,golfmonthly.com,guitarworld.com,homebuilding.co.uk,homesandgardens.com,idealhome.co.uk,imore.com,itpro.com,kiplinger.com,laptopmag.com,livescience.com,livingetc.com,loudersound.com,marieclaire.co.uk,marieclaire.com,moneyweek.com,musicradar.com,nexttv.com,pcgamer.com,realhomes.com,shortlist.com,space.com,t3.com,techlearning.com,techradar.com,theweek.com,tomsguide.com,tomshardware.com,tvtechnology.com,wallpaper.com,whathifi.com,whattowatch.com,whowhatwear.com,windowscentral.com,womanandhome.com##+js(rmnt, script, html-load.com) +! Mexican Lottery sites +melaterevancha.com,resultadostris.com##+js(rmnt, script, await eval) +! Motorsport network +autosport.com,insideevs.com,motor1.com,motorsport.com,motorsportjobs.com,motorsportstats.com,rideapart.com##+js(rmnt, script, html-load.com) +! Pijper Media +faitsfizzle.fr,fizzlefacts.com,fizzlefakten.de,hechosfizzle.com##+js(rmnt, script, await eval) +consejosytrucos.co,conselhosetruques.com,consiglietrucchi.com,poradyiwskazowki.pl,tippsundtricks.co,tips-and-tricks.co,tipsandtricksarab.com,tipsandtricksjapan.com,tipsandtrickskorea.com,tipsenweetjes.nl,trucs-et-astuces.co##+js(rmnt, script, await eval) +! Infoplaza +buienalarm.nl,meteoradar.co.uk,meteox.com,niederschlagsradar.de,sat24.com,weerslag.nl##+js(rmnt, script, ').join(String.fromCharCode') +!#endif +! Minute Media +12thmanrising.com,allucanheat.com,aroundthefoghorn.com,arrowheadaddict.com,badgerofhonor.com,bamahammer.com,beargoggleson.com,beyondtheflag.com,birdswatcher.com,blackandteal.com,blogredmachine.com,bluemanhoop.com,boltbeat.com,bosoxinjection.com,buffalowdown.com,caneswarning.com,catcrave.com,chopchat.com,climbingtalshill.com,cubbiescrib.com,dailyknicks.com,dairylandexpress.com,dawgpounddaily.com,dawindycity.com,dawnofthedawg.com,detroitjockcity.com,dodgersway.com,ebonybird.com,fansided.com,flywareagle.com,gbmwolverine.com,gigemgazette.com,gmenhq.com,hailfloridahail.com,halohangout.com,hardwoodhoudini.com,horseshoeheroes.com,housethathankbuilt.com,huskercorner.com,insidetheiggles.com,jaysjournal.com,justblogbaby.com,kckingdom.com,kingjamesgospel.com,kingsofkauffman.com,lakeshowlife.com,lombardiave.com,mentalfloss.com,motorcitybengals.com,musketfire.com,nflspinzone.com,ninernoise.com,nugglove.com,onechicagocenter.com,phinphanatic.com,pistonpowered.com,predominantlyorange.com,ramblinfan.com,redbirdrants.com,reviewingthebrew.com,riggosrag.com,ripcityproject.com,risingapple.com,rumbunter.com,scarletandgame.com,section215.com,sidelionreport.com,slapthesign.com,sodomojo.com,southsideshowdown.com,stillcurtain.com,stormininnorman.com,stripehype.com,thatballsouttahere.com,thecelticbhoys.com,thejetpress.com,thelandryhat.com,thepewterplank.com,thesmokingcuban.com,thevikingage.com,thunderousintentions.com,undeadwalking.com,valleyofthesuns.com,whodatdish.com,winteriscoming.net,yanksgoyard.com##+js(nostif, [native code], 500) +12thmanrising.com,allucanheat.com,aroundthefoghorn.com,arrowheadaddict.com,badgerofhonor.com,bamahammer.com,beargoggleson.com,beyondtheflag.com,birdswatcher.com,blackandteal.com,blogredmachine.com,bluemanhoop.com,boltbeat.com,bosoxinjection.com,buffalowdown.com,caneswarning.com,catcrave.com,chopchat.com,climbingtalshill.com,cubbiescrib.com,dailyknicks.com,dairylandexpress.com,dawgpounddaily.com,dawindycity.com,dawnofthedawg.com,detroitjockcity.com,dodgersway.com,ebonybird.com,fansided.com,flywareagle.com,gbmwolverine.com,gigemgazette.com,gmenhq.com,hailfloridahail.com,halohangout.com,hardwoodhoudini.com,horseshoeheroes.com,housethathankbuilt.com,huskercorner.com,insidetheiggles.com,jaysjournal.com,justblogbaby.com,kckingdom.com,kingjamesgospel.com,kingsofkauffman.com,lakeshowlife.com,lombardiave.com,mentalfloss.com,motorcitybengals.com,musketfire.com,nflspinzone.com,ninernoise.com,nugglove.com,onechicagocenter.com,phinphanatic.com,pistonpowered.com,predominantlyorange.com,ramblinfan.com,redbirdrants.com,reviewingthebrew.com,riggosrag.com,ripcityproject.com,risingapple.com,rumbunter.com,scarletandgame.com,section215.com,sidelionreport.com,slapthesign.com,sodomojo.com,southsideshowdown.com,stillcurtain.com,stormininnorman.com,stripehype.com,thatballsouttahere.com,thecelticbhoys.com,thejetpress.com,thelandryhat.com,thepewterplank.com,thesmokingcuban.com,thevikingage.com,thunderousintentions.com,undeadwalking.com,valleyofthesuns.com,whodatdish.com,winteriscoming.net,yanksgoyard.com##+js(trusted-replace-argument, Element.prototype.setAttribute, 1, , condition, '/error-report|new Promise|;await new|:\[?window|&&window,|void 0\]|location\.href|void 0\|\|window|,window,|void 0,window|\[0,window\]|\)\.join\(String\.fromCharCode|adShieldError/') +||asset.ad-shield.cc/images$image,3p,redirect=32x32.png +auone.jp,biblegateway.com,blogmura.com,cpu-monkey.com,deckshop.pro,gamewith.jp,gruene-zitate.de,jmty.jp,kr-weathernews.com,laposte.net,motor-talk.de,myforecast.com,newser.com,nicovideo.jp,picks.my,reneweconomy.com.au,signupgenius.com,slickdeals.net,smithsonianmag.com,thefreebieguy.com,worldhistory.org,zerogpt.com##+js(acs, document.createElement, abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=) +filmibeat.com,goodreturns.in,mykhel.com##+js(set, detectAdBlock, noopFunc) +gumtree.com##+js(json-prune, features.ad02 features.adshield) +/scripts/delayed.js|$script,1p +! Others +nextchessmove.com,reneweconomy.com.au##+js(rmnt, script, HTMLIFrameElement) +/^https:\/\/[a-z]{12,20}\.com\/script\/[a-zA-Z0-9]+_[a-zA-Z0-9]+\.js$/$script,3p,match-case,to=com,from=nextchessmove.com|reneweconomy.com.au +gamebanana.com##+js(rmnt, script, /admiral|adshield/) +!#if env_safari +/^https:\/\/[a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z][a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?[a-z]?\.com\/script\/[a-zA-Z0-9]+_[a-zA-Z0-9]+\.js$/$script,3p,match-case,domain=nextchessmove.com|reneweconomy.com.au +!#endif +! fora software +saabcentral.com##+js(acs, document.createElement, abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=) +alkas.lt###stpd-tablet-1 +alkas.lt##.vc_hidden-xs.vc_hidden-sm.vc_hidden-md.vc_col-sm-12.vc_column_container.wpb_column +wordfinderx.com##section.svelte-w32ki7.mb-6:has(.ad-slot) +wordfinderx.com##.svelte-w32ki7.mt-6:has(.ad-slot) +cults3d.com##.cultszone--centered +cults3d.com##a[href^="https://urlr.me/"] +||adsinteractive.com^ +||dbloader.leboncoin.info^ +||loader.horairesdouverture24.fr^ +||minecraftskins.com/miscjs/as*.js +worldhistory.org##+js(set, AHE.is_member, 1) +/loader.min.js|$domain=worldhistory.org +welt.de##+js(no-fetch-if, -load.com/script/, length:101) +welt.de##+js(nostif, )](this\,..., 3000-6000) +/shadow/*adshield$domain=mail.yahoo.com +/ybar/mail.yahoo.com/*adshield$domain=mail.yahoo.com +/ybar/mail.yahoo.com/_t/aHR0c*$xhr,3p,domain=mail.yahoo.com +mail.yahoo.com##+js(set, AppBootstrapData.config.adshieldAdblockRecovery, false) +mail.yahoo.com##+js(set, AppBootstrapData.config.adshieldAdblockRecovery, false, runAt, interactive) +mail.yahoo.com##+js(set, AppBootstrapData.config.adshieldNativeAdRecovery, false) +mail.yahoo.com##+js(set, AppBootstrapData.config.adshieldNativeAdRecovery, false, runAt, interactive) +mail.yahoo.com##+js(set, AppBootstrapData.__initializeFeatures__.adshieldAdblockRecovery.enabled, false) +mail.yahoo.com##+js(set, AppBootstrapData.__initializeFeatures__.adshieldAdblockRecovery.enabled, false, runAt, interactive) +mail.yahoo.com##+js(set, AppState.reduxState.features.adshieldAdblockRecovery, false) +mail.yahoo.com##+js(set, AppState.reduxState.features.adshieldAdblockRecovery, false, runAt, interactive) +mail.yahoo.com##+js(trusted-json-edit-xhr-response, ..adshieldAdblockRecovery=false, propsToMatch, /fetchappbootstrapdata) +mail.yahoo.com##+js(trusted-json-edit-xhr-response, ..adshieldAdblockRecovery.enabled=false, propsToMatch, /fetchappbootstrapdata) +www.yahoo.com##+js(prevent-innerHTML, script, /error-report|nowprocket/) +hk01.com##+js(set, __NEXT_DATA__.runtimeConfig.enableShieldScript, false) +scrumpoker-online.org##+js(set, Object.prototype._adShieldLoaded, true) +||adopsboost.com^$3p +||d222yr38kqru7v.cloudfront.net^ +soxprospects.com##.auto-style228 +soxprospects.com##td[style="border: 1px solid #000000; padding: 4px; font-family: Arial, Helvetica, sans-serif; font-size: 11pt; background-color: #FFFFFF; text-align: center;"] +soxprospects.com##td[style="border: 1px solid #000000; font-family: Arial, Helvetica, sans-serif; font-size: 9pt; background-color: #FFFFFF; text-align: center; padding-left: 6px; padding-top: 6px; padding-bottom: 6px;"] +kio.ac##+js(set, HTMLScriptElement.prototype.onload, undefined) +kio.ac##.ad-slot:style(visibility: collapse !important) +inverse.com#@#.adWrapper +inverse.com##article .adWrapper +neoseeker.com##.section-vu:has(> div[data-ad-unit-id]) +neoseeker.com###page_top_content +||fokstatic.nl/fp/global/*adshield.js +athlonsports.com,autoblog.com,bikemag.com,dengarden.com,mensfitness.com,mensjournal.com,parade.com,paradehomeandgarden.com,paradepets.com,pethelpful.com,powder.com,shophq.com,surfer.com,thespun.com,thestreet.com,travelhost.com##+js(trusted-json-edit, ..AdShield.isEnabled=false) +||web-kit.io^$script,redirect=noopjs +||mopo.de/*/adshield.js +weeronline.nl##+js(trusted-replace-argument, Range.prototype.createContextualFragment, 0, json:"", condition, html-load.com) +! NOTE: Adthrive sites +1000logos.net,100daysofrealfood.com,100directions.com,100layercake.com,101cookbooks.com,101cookingfortwo.com,101dogbreeds.com,101planners.com,104homestead.com,10beasts.com,10fragrances.com,10scopes.com,11magnolialane.com,123atc.com,123homeschool4me.com,12minuteathlete.com,1500days.com,15minutebeauty.com,15worksheets.com,16powers.com,17apart.com,180sx.club,1dogwoof.com,1lumen.com,1plus1plus1equals1.net,21dayhero.com,23jumpmanstreet.com,247tempo.com,247wallst.com,24bite.com,2foodtrippers.com,2sistersmixitup.com,2sistersrecipes.com,2xkofire.com,30seconds.com,31daily.com,320sycamoreblog.com,365cincinnati.com,365daysofbakingandmore.com,365daysofcrockpot.com,368chickens.com,3boysandadog.com,3dinosaurs.com,3dprinterly.com,3dsourced.com,40plusstyle.com,411mania.com,42droids.co.uk,48daysworkout.com,4filming.com,4lessbyjess.com,4pics1-word.com,4wdlife.com,50isnotold.com,52kitchenadventures.com,5boysbaker.com,5itemsorless.com,5letterwords.org,5thwheelforums.com,604now.com,6theory.com,6thgenaccord.com,7-min.com,7173mustangs.com,730sagestreet.com,7daysofplay.com,7gents.com,7yearolds.com,8020automotive.com,919thebend.ca,976-tuna.com,99boulders.com,99sounds.org##+js(rmnt, script, /__adblocker|html-load/) +a-love-of-rottweilers.com,abakingjourney.com,abcdeelearning.com,abcsofliteracy.com,abeautifulmess.com,aberdeenskitchen.com,abnormalreturns.com,aboderie.co.uk,aboutamom.com,abowlfulloflemons.net,abraskitchen.com,abroadwithash.com,abrotherabroad.com,abudhabitravelplanner.com,ac3filter.net,accidentalhappybaker.com,accordingtoelle.com,accountantforums.com,accuplacerpracticetest.com,acedarspoon.com,acharmingescape.com,aconsciousrethink.com,acooknamedmatt.com,acouplecooks.com,acousticbridge.com,acozykitchen.com,acraftedpassion.com,acraftyconcept.com,acrochetedsimplicity.com,acrylgiessen.com,acrylicpouring.com,activeweekender.com,activewild.com,actuallygoodteamnames.com,acultivatednest.com,acurazdxforum.com,adabofgluewilldo.com,adamantkitchen.com,adamtheautomator.com,adayinourshoes.com,adayinthekitchen.com,addapinch.com,addicted2decorating.com,addicted2diy.com,addictedtodates.com,addictedtovacation.com,addisonswonderland.com,addsaltandserve.com,adebtfreestressfreelife.com,adimesaved.com,adishofdailylife.com,advanced-astrology.com,adventourbegins.com,adventureinyou.com,adventuresbylana.com,adventuresofmel.com,adviceonlyfinancial.com,aeclectic.net,aerocorner.com,aestheticsmilereconstruction.com,afamuche.com,afarmgirlsdabbles.com,afewshortcuts.com,afk.global,aflavorfulbite.com,aflavorjournal.com,afrugalchick.com,againstallgrain.com,agirlandagluegun.com,aglassofbovino.com,agoudalife.com,agratefulmeal.com,agrillforallseasons.com,ahaparenting.com,aheadofthyme.com,ahnfiredigital.com,ahoramismo.com,aimlief.com,ainttooproudtomeg.com,aircondlounge.com,airforums.com,airfried.com,airfryerfanatics.com,airfryerlove.com,airfryermom.com,airfryerworld.com,airfryeryum.com,airfryingfoodie.com,airhostacademy.com,airoomplanner.com,aisleofshame.com,alandacraft.com,alattefood.com,aldireviewer.com,alecooks.com,alekasgettogether.com,alexandracooks.com,alexjessicamills.com,alexroblesmd.com,alexwongcopywriting.com,alicedias.com,alidaskitchen.com,aline-made.com,alisononfoot.com,alittleandalot.com,alittlebitofeverythingblog.com,alittleinsanity.com,alittlepinchofperfect.com,allaboutami.com,allaboutjazz.com,allaboutparrots.com,allaboutplanners.com.au,allabouttattoo.com,allaccordingtoplann.com,allairfryerrecipes.com,allcakeprices.com,alldayidreamaboutfood.com,allears.net,alleydog.com,allfortheboys.com,allhomerobotics.com,alliannaskitchen.com,alliecarte.com,allkpop.com,allmycravings.com,allnurses.com,allnutritious.com,allourway.com,allpurposeveggies.com,allsalonprices.com,allsides.com,allsoundlab.net,allthedifferences.com,allthehealthythings.com,allthenoodles.com,allthenourishingthings.com,allthepartyideas.com,allthesvgs.com,allthings.how,allthingsdogs.com,allthingsjewelryy.com,allthingsmamma.com,allthingstarget.com,allthingswithpurpose.com,alltopeverything.com,alluringsoul.com,allwaysdelicious.com,allwritealright.com,allyscooking.com,allyskitchen.com,allysonvanhouten.com,almanac.com,almarsguides.com,alonelylife.com,alphafoodie.com,alphahistory.com,alphamom.com,alphr.com,alpineella.com,alsothecrumbsplease.com,altarofgaming.com,altdriver.com,alternativedish.com,alwayseatdessert.com,alwaysfromscratch.com,alwaysusebutter.com,alxnow.com,amandacooksandstyles.com,amandascookin.com,amarcoplumbing.com,amateurprochef.com,amazingcharcuterieboards.com,amazingclassiccars.com,amazingfoodmadeeasy.com,amazingribs.com,ambereverywhere.com,amberskitchencooks.com,ambitiouskitchen.com,ambotv.com,american-rails.com,americanoceans.org,americanwx.com,amiablefoods.com,amindfullmom.com,amiraspantry.com,amish365.com,amishamerica.com,amodernhomestead.com,amomsimpression.com,amortization.org,amtraktrains.com,amybakesbread.com,amycakesbakes.com,amyinthekitchen.com,amylattacreations.com,amynewnostalgia.com,amytreasure.com,ana-white.com,anagrammer.com,ancestral-nutrition.com,andersonandgrant.com,andhereweare.net,andiemitchell.com,andreasnotebook.com,andrewzimmern.com,androidheadlines.com,anerdcooks.com,anestwithayard.com,anewwayforward.org,angelicalbalance.com,angrybbq.com,anightowlblog.com,anikasdiylife.com,animalcrossingworld.com,animalnerdz.com,animalspot.net,animated-teeth.com,anitalianinmykitchen.com,anniedesigncrochet.com,anoffgridlife.com,anorcadianabroad.com,anoregoncottage.com,anothercocktailblog.com,antennaland.com,antimaximalist.com,antique-bottles.net,antiqueradios.com,anysoftwaretools.com,anythingtranslate.com,anytimecocktails.com,apaigeofpositivity.com,apeachyplate.com,apetogentleman.com,apexbikes.com,apieceofrainbow.com,apieceoftravel.com,apistogramma.com,aplinsinthealps.com,appellationmountain.net,applegreencottage.com,appletoolbox.com,appliancerepairforums.com,appunwrapper.com,apracticalwedding.com,aprettylifeinthesuburbs.com,apumpkinandaprincess.com,aquariadise.com,aquariumadvice.com,aquariumgenius.com,aquariumsource.com,aquariumsphere.com,aquariustraveller.com,aquatic-eden.com,aquietrefuge.com,aquiltinglife.com,arabahjoy.com,arayofsunlight.com,arboristsite.com,arcaneeye.com,architecturelab.net,archtoolbox.com,areinventedmom.com,areweranked.com,areyouscreening.com,arizonasportsfans.com,arlnow.com,aroundthenook.com,aroundtheworldpluskids.com.au,arrestyourdebt.com,arrmaforum.com,artandthekitchen.com,artbarblog.com,artfrommytable.com,artfulhomemaking.com,artofmemory.com,artprojectsforkids.org,artsandclassy.com,artsy-traveler.com,artsychicksrule.com,artsyfartsymama.com,artsymomma.com,artycraftykids.com,arzyelbuilds.com,ascensionlogs.gg,aseaofred.com,aseasyasapplepie.com,ash-eats.com,ashadeofteal.com,ashandpri.com,ashbaber.com,ashcroftfamilytable.com,ashevilletrails.com,asianacircus.com,asimplepalate.com,asimplepantry.com,askannamoseley.com,askmormongirl.com,askpython.com,aslobcomesclean.com,asouthernsoul.com,aspdotnethelp.com,aspicyperspective.com,aspiringwinos.com,asprinklingofcayenne.com,assessmentcentrehq.com,astrology-seek.com,astrologyking.com,astrostyle.com,astyleset.com,asvabpracticetests.com,aswbpracticeexam.com,asweetalternative.com,asweetpeachef.com,at-my-table.com,at4forum.com,atablefullofjoy.com,atastefortravel.ca,atastykitchen.com,athletelunchbox.com,athomebyheather.com,athomewiththebarkers.com,athoughtfulplaceblog.com,atlantablackstar.com,atlantatrails.com,atlasandboots.com,atqa005.com,atraditionallife.com,atshq.org,atsloanestable.com,attagirlsays.com,attainable-sustainable.net,atthepicketfence.com,attractiondiary.com,attractionsmagazine.com,aturtleslifeforme.com,aubreyskitchen.com,audio-forums.com,audioassemble.com,audiolgy.com,audiotips.com,audreyslittlefarm.com,aussiegreenthumb.com,aussiehomebrewer.com,aussiepythons.com,authenticfoodquest.com,authority.pub,authoritytattoo.com,autismforums.com,automatedhome.com,automatelife.net,automaticwasher.org,automoblog.net,averagesocialite.com,averiecooks.com,avforums.com,aviationa2z.com,aviatorinsider.com,avidgamer.gg,avirtualvegan.com,avirtuouswoman.org,avocadopesto.com,avocadoskillet.com,avpcentral.com,awarenessdays.com,awaytothecity.com,awealthofcommonsense.com,awellstyledlife.com,awfulannouncing.com,awickedwhisk.com,awinterescape.com,awortheyread.com,axleandchassis.com,ayunaconlaura.com,ayurvedawithrebecca.com,az900practicetest.com,azlinamin.com,azmind.com,azurelessons.com##+js(rmnt, script, /"__adblocker"|"data-sdk"/) +b-inspiredmama.com,babaganosh.org,baby-chick.com,babyfoode.com,babygearessentials.com,backdoorsurvival.com,backforseconds.com,backpacksandbubbly.com,backtoourroots.net,backyarddigs.com,backyardknoxville.com,badbatchbaking.com,bahaiforums.com,bakeandbacon.com,bakeatmidnite.com,bakedambrosia.com,bakedbree.com,bakedbroiledandbasted.com,bakedbyrachel.com,bakedcollective.com,bakedlean.com,bakefromscratch.com,bakeitwithlove.com,bakemeacookie.com,bakemesomesugar.com,bakeorbreak.com,bakeplaysmile.com,bakerbynature.com,bakerita.com,bakersroyale.com,bakerstable.net,bakerstreetsociety.com,bakesbybrownsugar.com,baketobefit.com,bakewithjamie.com,baking-forums.com,baking-sense.com,baking4happiness.com,bakingamoment.com,bakingbeauty.net,bakingbites.com,bakingforfriends.com,bakinghermann.com,bakinghow.com,bakinglikeachef.com,bakingmehungry.com,bakingupmemories.com,bakingwithgranny.co.uk,balancingeverything.com,balancingmotherhood.com,baldandhappy.com,ball-pythons.net,ballershoesdb.com,ballexclusives.com,baptistboard.com,barbarabakes.com,barchart.com,barefeetinthekitchen.com,barefootinthepines.com,bargainbabe.com,bargpt.app,barkingroyalty.com,barleyandbirch.com,barleyandsage.com,barrescueupdates.com,baseballrumors.me,baseballtrainingworld.com,basic-mathematics.com,basicswithbails.com,basketballbuckets.com,basketballhistory.org,basketballnoise.com,bassisthq.com,bassmagazine.com,batesfamilyblog.com,batteryequivalents.com,bballrumors.com,bbqdryrubs.com,bbqingwiththenolands.com,beanrecipes.com,beardeddragonforum.com,bearfoottheory.com,beastlyenergy.com,beatofhawaii.com,beatriceryandesigns.com,beatsperminuteonline.com,beatthebudget.com,beautifulwithbrains.com,beautyandbedlam.com,beautyandthebenchpress.com,beautycrafter.com,beautygab.com,beautymasterlist.com,beautymone.com,beautymunsta.com,beautyofbirds.com,beautysided.com,beautythroughimperfection.com,beautytidbits.com,becomeawritertoday.com,becomebetty.com,becoming.is,becomingunbusy.com,bedbuglawyer.org,bedbugsinsider.com,bedroomproducersblog.com,beehivehero.com,beekeepingforum.co.uk,beerconnoisseur.com,beerintheevening.com,beesandroses.com,beeyondcereal.com,begindot.com,behindthevoiceactors.com,beingpatient.com,believeinabudget.com,believeintherun.com,bellacococrochet.com,belletag.com,bellflowerlifestyle.com,bellybelly.com.au,bellyfull.net,belquistwist.com,bemorewithless.com,benandme.com,beneathmyheart.net,benidormandbeyond.com,bensabaconlovers.com,benzinga.com,berlyskitchen.com,berriesandbarnacles.com,best-minecraft-servers.co,bestappetizers.com,bestbeginnermotorcycles.com,bestboatreport.com,bestchristmasdesserts.com,bestdesserts.com,bestfriendsforfrosting.com,bestgamingtips.com,bestiefy.com,bestjobdescriptions.com,bestmenscolognes.com,bestofmachinery.com,bestofvegan.com,bestplants.com,bestrecipebox.com,bethbryan.com,bethebudget.com,bettacarefishguide.com,bettasource.com,betterfoodguru.com,betterhealthwhileaging.net,bettermindbodysoul.com,betterwander.com,betweencarpools.com,betweennapsontheporch.net,beupp.com,bevcooks.com,beyerbeware.net,beyondcruise.com,beyondfrosting.com,beyondkimchee.com,beyondmeresustenance.com,beyondthebutter.com,bftactics.com,bgfg.co.uk,bgr.com,bhookedcrochet.com,biancazapatka.com,bible-knowledge.com,biblemoneymatters.com,bibliolifestyle.com,bicycle-guider.com,biddytarot.com,bigbearswife.com,bigdeliciouslife.com,biggerbolderbaking.com,biggestuscities.com,bigheartlittlestar.com,bigislanditineraries.com,bigoven.com,bigsmallscreen.com,bigsoccer.com,bigtimer.net,bikeexif.com,bikemunk.com,bikergirllife.com,bikeride.com,bikersrights.com,bikesmarts.com,biketestreviews.com,billyparisi.com,binkysculinarycarnival.com,biplaneforum.com,birdforum.net,birdnature.com,birdsphere.com,birdwatchingdaily.com,birdwatchinghq.com,birdwatchingusa.org,birdzilla.com,biscuitsandburlap.com,biteontheside.com,bitesbybianca.com,bitesofberi.com,bitesofwellness.com,bittbox.com,bitzngiggles.com,bizapedia.com,bjjdoc.com,bjpenn.com,blackbeltwiki.com,blackberrybabe.com,blackcitadelrpg.com,blackcrossword.com,blackgirlnerds.com,blacksmithtalk.com,blackweightlosssuccess.com,blankcalendarpages.com,blendtw.com,blesserhouse.com,blessherheartyall.com,blessthismeal.com,blessthismessplease.com,blifaloo.com,blissfulbasil.com,blissfullylowcarb.com,blissonly.com,blogghetti.com,blogilates.com,blogmickey.com,blogofdoom.com,blondelish.com,bloominghomestead.com,bluearchive.gg,bluebowlrecipes.com,bluecinetech.co.uk,bluestarcrochet.com,bluetracker.gg,boardgamequest.com,boardoftheworld.com,boatbasincafe.com,boatdriving.org,boatsafe.com,bobbyberk.com,bocadailynews.com,bodyketosis.com,bogglewizard.net,bogoten.com,bojongourmet.com,boldappetite.com,bolde.com,boldjourney.com,bombshellbling.com,bonappeteach.com,bonnibakery.com,bonvoyagewithkids.com,booboosbakery.com,boogieforum.com,bookanalysis.com,bookishgoblin.com,booknotification.com,bookroo.com,bookseries.org,boomhavenfarms.com,boothfindernyc.com,bootsandhooveshomestead.com,bootspy.com,bootstrapbee.com,boozyburbs.com,boraboraphotos.com,boredpanda.com,borrowedbites.com,bostonterriersociety.com,botanicalinterests.com,bottledprices.com,bottleraiders.com,boundlessroads.com,bowerpowerblog.com,bowl-me-over.com,bowlsarethenewplates.com,boxentriq.com,boxing247.com,boxingdaily.com,boxingschedule.co,boxofpuns.com,boxthislap.org,boxycolonial.com,boysahoy.com,braidhairstyles.com,brainmass.com,bramblewinecottage.com,brandeating.com,brasshero.com,braveryandbelonging.com,braziliankitchenabroad.com,breadboozebacon.com,breaddad.com,breadsandsweets.com,breakingbourbon.com,breastfeedingplace.com,breederbest.com,breedingbusiness.com,breezynetworks.co.za,brendid.com,brewerfanatic.com,briana-thomas.com,brianakdesigns.com,brianlagerstrom.com,bricksandlogic.co.uk,brighteyedbaker.com,brightgreendoor.com,brightgreenrecipes.com,brightrockmedia.com,brightsprouts.com,brilliantmaps.com,brisbanekids.com.au,britannica.com,britneybreaksbread.com,brobible.com,broccyourbody.com,brokenovenbaking.com,bromabakery.com,bromefields.com,broncoraptorforum.com,broncozone.com,brooklynlimestone.com,browneyedbaker.com,brownsnation.com,brownsnationforum.com,brownthumbmama.com,bsugarmama.com,bubbapie.com,bucketlisttummy.com,buckinghamshirelandscapegardeners.com,budgetbytes.com,budgetsavvydiva.com,budgettravel.com,budgettravelbuff.com,buellxb.com,buggyandbuddy.com,build-basic.com,buildabreak.co.uk,buildgreennh.com,buildingelements.com,buildingwithkinfolk.com,buildyourbite.com,builtlean.com,bulbagarden.net,bullion.forum,bunnylady.com,bunnymuffins.lol,bunsenburnerbakery.com,bunsinmyoven.com,burncitysports.com,burntpelletbbq.com,burtonavenue.com,busbysbakery.com,business-opportunities.biz,businesschronicler.com,businesstechplanet.com,businesswritingblog.com,busycooks.com,busydaydinners.com,busyfamilyrecipes.com,busylittlekiddies.com,busytoddler.com,butfirstwebrunch.com,butterandbaggage.com,butterandbliss.net,butterbeready.com,butterflyidentification.com,butterhand.com,butterloveandsalt.com,buttermilkbysam.com,butternutbakeryblog.com,butternutrition.com,buythiscookthat.com,bwillcreative.com,by-pink.com,bydeannyd.com,bykelseysmith.com,bylisafonde.com,bytheforkful.com##+js(rmnt, script, /"__adblocker"|"data-sdk"/) +caabcrochet.com,cadryskitchen.com,cafedelites.com,cafehailee.com,cake-babe.com,cakebycourtney.com,cakemehometonight.com,cakenknife.com,cakesbymk.com,cakescottage.com,cakesprices.com,cakewhiz.com,calculateme.com,calculatemyroof.com,calculator.academy,calendarkart.com,calfkicker.com,californiathroughmylens.com,caloriesburnedhq.com,cambreabakes.com,camillestyles.com,caminoadventures.com,campaddict.com,camperreport.com,campersmarts.com,campgrilleat.com,campingforfoodies.com,campsitephotos.com,canarystreetcrafts.com,cancerrehabpt.com,caninejournal.com,canonrumors.com,capitalizemytitle.com,caralynmirand.com,cararac.com,card-codex.com,cardcollector.co.uk,cardsayings.net,careeralley.com,careercontessa.com,caribbeanpot.com,carlaaston.com,carlmurawski.com,carlocao.com,caroha.com,carolbeecooks.com,carolinahoneybees.com,carolinaroad.com,carolinescooking.com,carolinevencil.com,carriebradshawlied.com,carriecarvalho.com,carrotsandcookies.com,carrowaycrochet.com,carseatsmom.com,carshtuff.com,carwindshields.info,casadecrews.com,casamiacooking.com,caseihforum.com,cassiescroggins.com,castandspear.com,castironforum.com,castironketo.net,castironrecipes.com,castleinthemountains.com,casualepicure.com,casualfoodist.com,casualgeographical.com,cat-world.com,catchmyparty.com,cathydiep.com,catological.com,cats.com,catster.com,cattitudedaily.com,cattletoday.com,catvills.com,cavaliersnation.com,cavsdaily.com,cavsnation.com,ccmapracticetests.com,cedarhillfarmhouse.com,celebitchy.com,celebrateanddecorate.com,celebratednest.com,celebratingsimply.com,celebritynetworth.com,celebschitchat.com,celebsuburb.com,cellocentral.com,cellphones.ca,centreofexcellence.com,centsationalstyle.com,centslessdeals.com,cfb.fan,cgdirector.com,chachingonashoestring.com,chachingqueen.com,chainsawtalk.com,chalkacademy.com,chalkbucket.com,challengerforum.com,chambanamoms.com,chamberofcommerce.com,chamberofcommerce.uk,champsorchumps.us,charactercounter.com,charlottefashionplate.com,chartmasters.org,chascrazycreations.com,chasingoursimple.com,chattanoogafishingforum.com,chazhound.com,cheatcc.com,cheatsheet.com,cheerfulchoices.com,cheerfulcook.com,chef-in-training.com,chefalli.com,chefani.com,chefdehome.com,chefdenise.com,chefjacooks.com,chefjar.com,chefjonwatts.com,cheflindseyfarr.com,chefnotrequired.com,chefsavvy.com,chefspencil.com,chelseadamon.com,chelseasmessyapron.com,chelsweets.com,chemicalaid.com,chemistrylearner.com,cheneetoday.com,cherryonmysundae.com,chevronlemon.com,chevycobaltforum.com,chevyequinoxforum.com,chevytrucks.org,chevyzr2.com,chewoutloud.com,chickensandmore.com,chiefsreport.com,childhoodmagic.com,chilesandsmoke.com,chilimath.com,chilitochoc.com,chinasichuanfood.com,chindeep.com,chins-n-hedgies.com,chiselandfork.com,chocolatecoveredkatie.com,chocolatesandchai.com,chocolatewithgrace.com,chooseveganism.org,choosingchia.com,choosingnutrition.com,chopstickchronicles.com,chordsworld.com,chrislovesjulia.com,christinamariablog.com,christinascucina.com,christmasonadime.com,chrono.quest,chumplady.com,chunkbase.com,chunkyinkentucky.com,ciaochowbambina.com,ciaoflorentina.com,cillacrochets.com,cincyshopper.com,cindermint.com,cinderstravels.com,cindyhattersleydesign.com,cinemablind.com,cinenerdle2.app,cinnamonsnail.com,circuitsforum.com,citefast.com,city-guide.london,civicsquestions.com,cjeatsrecipes.com,cjls.com,cjponyparts.com,ck5.com,cladright.com,clashdaddy.com,clashguideswithdusk.net,classbforum.com,classic-armory.org,classiccasualhome.com,classiccountrymusic.com,classicnerd.com,classicparker.com,classicrockforums.com,classicrockhistory.com,classpop.com,classyclutter.net,classyyettrendy.com,claudiastable.com,cleananddelicious.com,cleanandscentsible.com,cleaneatingveggiegirl.com,cleaneatingwithkids.com,cleanerstalk.com,cleanfoodcrush.com,cleangreensimple.com,cleanmama.com,cleanplatemama.com,cleantheair.org,clearlycoffee.com,clevelanddaily.com,clevercreations.org,clevergirlfinance.com,cleverjourney.com,cleverlyinspired.com,cleverlysimple.com,clock.zone,closetcooking.com,closetfulofclothes.com,cloudykitchen.com,cloudynights.com,clovermeadowsbeef.com,clubthrifty.com,clubtraderjoes.com,cluckclucksew.com,clutchpoints.com,clutterkeeper.com,cmbarndominium.com,cncsourced.com,cnevpost.com,coachrallyrus.com,coastalwandering.com,cocinadominicana.com,cocinarepublic.com,cocinarodriguez.com,cockroachfacts.com,cockroachsavvy.com,cockroachzone.com,cocktailsandappetizers.com,cocoandash.com,coconutsandkettlebells.com,code9media.com,codeshack.io,codewordsolver.com,codex.gg,codycrosssolutions.com,coffeeandcarpool.com,coffeeatthree.com,coffeecopycat.com,coffeeforums.com,coffeelevels.com,coldsorescured.com,coleycooks.com,collective.world,collectorfreaks.com,collegefootball.gg,collegefootballnetwork.com,collegegazette.com,collegelifemadeeasy.com,collegetransitions.com,color-meanings.com,coloredhaircare.com,coloringpageshq.com,colorkit.co,colormadehappy.com,colorpsychology.org,colorxs.com,columbusnavigator.com,combotarot.com,comestayawhile.com,comfortablefood.com,comfyliving.net,comicbasics.com,comicsands.com,comicyears.com,commandersnation.com,commonsensehome.com,competitionplus.com,completelydelicious.com,computeruser.com,computerzilla.com,conanfanatics.com,conceptartempire.com,concertarchives.org,condolencemessages.com,confessionsofabakingqueen.com,confessionsofafitfoodie.com,confessionsofagroceryaddict.com,confessionsofaserialdiyer.com,confettiandbliss.com,confettidaydreams.com,confidencemeetsparenting.com,coniferousforest.com,connections.run,conniekresin.com,connoisseurusveg.com,conscioushacker.io,conservationinstitute.org,conserve-energy-future.com,constellation-guide.com,construct101.com,consumerboomer.com,contextures.com,contexturesblog.com,continuousroamer.com,controlbooth.com,convertbinary.com,cookathomemom.com,cookdinnertonight.com,cookeatgo.com,cookeatlivelove.com,cookeatpaleo.com,cookedandloved.com,cookedbyjulie.com,cookerofdeliciousness.com,cookeryspace.com,cookieandkate.com,cookiedoughandovenmitt.com,cookierun.gg,cookiesandcups.com,cookiesfordays.com,cookilicious.com,cookincanuck.com,cooking-therapy.com,cookingandme.com,cookingbride.com,cookingcarnival.com,cookingclassy.com,cookingforkeeps.com,cookingforpeanuts.com,cookinginmygenes.com,cookinginthekeys.com,cookingintheyard.com,cookingkatielady.com,cookingmadehealthy.com,cookingmaniac.com,cookingmydreams.com,cookingontheweekends.com,cookingorgeous.com,cookingperfected.com,cookingupmemories.com,cookingwithayeh.com,cookingwithbliss.com,cookingwithcarlee.com,cookingwithclaudy.com,cookingwithcocktailrings.com,cookingwithcoit.com,cookingwithgenius.com,cookingwithkarli.com,cookingwithkatiecross.com,cookingwithlei.com,cookingwithmammac.com,cookingwithnart.com,cookingwithparita.com,cookingwithria.com,cookinwithmima.com,cookitrealgood.com,cookitwithtim.com,cookprimalgourmet.com,cookrepublic.com,cooksdream.com,cooksimply.co.uk,cookthestory.com,cooktoria.com,cookwithdana.com,cookwithkushi.com,cookwithmanali.com,cookwithnabeela.com,coolcrafts.com,coopcancook.com,copycatchic.com,copykat.com,copykatchat.com,cordcuttingreport.com,cornercoffeestore.com,corvsport.com,cosascaseras.com,cosmetologyguru.com,cosmicdeity.com,cosplayadvice.com,costaricavibes.com,costcontessa.com,cottageandvine.net,cottageatthecrossroads.com,cottageonbunkerhill.com,cottercrunch.com,counterstats.net,country94.ca,countrydiaries.com,countryguess.com,countrylifedreams.com,countrylivinginacariboovalley.com,countrymusicfamily.com,countrymusicnation.com,countryrebel.com,countryroadssourdough.com,countrythangdaily.com,couponcravings.com,couponingfor4.net,couponingtodisney.com,couponsandfreebiesmom.com,courtneyssweets.com,cowboysnews.com,cowboyszone.com,cozinhalegal.com.br,cozycornercharm.com,cozydiyhome.com,cozylittlehouse.com,cozymeal.com,cozypeachkitchen.com,crabbet.com,crackberry.com,craftaholicsanonymous.net,craftbeering.com,craftberrybush.com,craftinessisnotoptional.com,craftingagreenworld.com,craftinghappiness.com,craftingjeannie.com,craftionary.net,craftknights.com,craftsbyamanda.com,craftsonsea.co.uk,craftsyhacks.com,craftyartideas.com,craftycookbook.com,craftylittlegnome.com,craftymorning.com,craftyourhappyplace.com,cravethegood.com,cravetheplanet.com,cravinghomecooked.com,cravingsofalunatic.com,cravingsomecreativity.com,cravingsomethinghealthy.com,cravingtasty.com,crayonsandcravings.com,crazybusymama.com,crazyforcrust.com,crazylaura.com,crazylittleprojects.com,crazymonkeygames.com,crazytogether.com,crazyvegankitchen.com,cre8tioncrochet.com,creamofthecropcrochet.com,createandfind.com,createcraftprint.com,createlet.com,createmindfully.com,createprintables.com,createyum.com,creatingreallyawesomefunthings.com,creative-culinary.com,creativecaincabin.com,creativecanning.com,creativecertificates.com,creativecolorlab.com,creativehealthyfamily.com,creativehomekeeper.com,creeklinehouse.com,creepycatalog.com,crinacle.com,crinkledcookbook.com,crisslecrossle.com,criticalhit.net,crochet-patterns-free.com,crochet365knittoo.com,crochetconcupiscence.com,crochething.com,crochetncrafts.com,crochettoplay.com,crochetwithcarrie.com,crockpotladies.com,crockpotsandflipflops.com,crohnsforum.com,crossplaygames.com,crossword-explorer.net,crosswordanswers911.net,crosswordbuzz.com,crosswordjam.net,crosswordmasterhelp.com,crowdedkitchen.com,crowdworknews.com,crowsurvival.com,cruisegalore.com,cruisehive.com,cruisemummy.co.uk,cruiseradio.net,cruisersforum.com,cruisingfreedom.com,cruisingkids.co.uk,crunchtimekitchen.com,crunchycreamysweet.com,cryptoprofitcalculator.com,cryptoquoteanswer.com,crystalandcomp.com,crystaldigest.com,crystalmathlabs.com,cubesnjuliennes.com,cubscoutideas.com,cucinabyelena.com,cuckoo4design.com,cuddlystitchescraft.com,culinaryginger.com,culinaryhill.com,culinaryshades.com,culturedtable.com,culturedvoyages.com,culturedvultures.com,cupcakesandcutlery.com,cupcakesandkalechips.com,cupcakesavvyskitchen.com,cupfulofkale.com,cupofflour.org,cupofjo.com,cupofzest.com,curbingcarbs.com,curbly.com,curbsideclassic.com,curlsbot.com,curlygirlkitchen.com,curlynikki.com,currytrail.in,cushyspa.com,customcalendarmaker.com,customonesixth.com,cutegirlshairstyles.com,cutnmakecrafts.com,cwbchicago.com,cwfeats.com,cycletraveloverload.com,cyclingabout.com,cyndispivey.com,czn.gg##+js(rmnt, script, /"__adblocker"|"data-sdk"/) +dabblesandbabbles.com,dadcooksdinner.com,dadsguidetowdw.com,daenskitchen.com,dagmarbleasdale.com,daigasikfaan.co,dailyactor.com,dailycaring.com,dailycommutercrossword.com,dailycrypticle.com,dailydish.co.uk,dailydishrecipes.com,dailydiylife.com,dailynous.com,dailysoapdish.com,dailyveganmeal.com,dailywritingtips.com,dailyyum.com,daisiesandpie.co.uk,damndelicious.net,damneasyrecipes.com,danaberez.com,dancearoundthekitchen.com,daniellewalker.com,danielsplate.com,danishealthyeats.com,danny-cph.com,danslelakehouse.com,daringgourmet.com,darlingcelebrations.com,darlingquote.com,darngoodveggies.com,dashboardwarninglights.com,dashofjazz.com,dashofsanity.com,dashofting.com,databasefaqs.com,dateyourspouse.com,dayhikesneardenver.com,daysofjay.com,dcurbanmom.com,dcworldscollide.gg,dealmama.com,dealntech.com,dearcrissy.com,dearlilliestudio.com,dearwendy.com,debraklein.com,debsdailydish.com,debtfreefamily.co.uk,decoholic.org,deedeedoes.com,deepfriedhoney.com,deeplysouthernhome.com,deesweets.com,defendersxs.com,dehydratorliving.com,deliacreates.com,deliciouslyorganic.net,deliciouslyrushed.com,deliciouslyseasoned.com,deliciouslysprinkled.com,deliciousmeetshealthy.com,deliciousonadime.com,delicioustable.com,delightfuladventures.com,delightfulmomfood.com,delightfulplate.com,delightfultravelnotes.com,delishdlites.com,delishknowledge.com,delscookingtwist.com,deltadigital.co,deltiasgaming.com,denversportsradio.com,derelictplaces.co.uk,derrickriches.com,desertblossomcrafts.com,desertislanddishes.co,desertnaturals.me,designeatrepeat.com,designerappliances.com,designertrapped.com,designmom.com,designorate.com,designthusiasm.com,desireerd.com,desotocountynews.com,dessertfortwo.com,dessertnowdinnerlater.com,dessertsanddrinks.com,dessertsonadime.com,dessertswithbenefits.com,destguides.com,destinationsanddesserts.com,destiny2zone.com,destinyislands.com,detoxinista.com,detroitsportsforum.com,developgoodhabits.com,devotedgrandma.com,devour.asia,devx.com,dfarq.homeip.net,dgcoursereview.com,diabetesselfmanagement.com,diablo4.gg,diablofans.com,diamondcentric.net,diamondlobby.com,diaryofafitmommy.com,diaryofaquilter.com,dicecitysports.com,dicecove.com,dieseliq.com,diethood.com,dietmenus.com,diffen.com,differentiatedkindergarten.com,digitalcitizen.life,dimensionofstuff.com,dimitrasdishes.com,dimplesandtangles.com,dimsimlim.com,dinersdriveinsdiveslocations.com,dinner-mom.com,dinneratthezoo.com,dinnerin321.com,dinnersdishesanddesserts.com,dinnersdonequick.com,dinnerthendessert.com,dirtbikeplanet.com,dirtydiaperlaundry.com,disabledveterans.org,discordtemplates.me,discoveringmontana.com,discoverpods.com,discovertheburgh.com,discoverzermatt.com,discusscooking.com,discussfastpitch.com,discussingfilm.net,disfordisney.com,dishbydish.net,dishedbykate.com,dishesdelish.com,disheswithdad.com,dishingdelish.com,dishingupthedirt.com,dishnthekitchen.com,dishytech.com,disneydining.com,disneydreamer.com,disneyfanatic.com,disneyfoodblog.com,disneynews.us,disneytips.com,disneytouristblog.com,displacedhousewife.com,distanceparent.org,distiller.com,divaliciousrecipes.com,divascancook.com,divorceandfinance.org,dixiedelightsonline.com,diy-forums.com,diyandfun.com,diybunker.com,diycandy.com,diydecormom.com,diygarden.co.uk,diyhandymom.com,diyinspired.com,diynatural.com,diypete.com,diyshowoff.com,diysmarthomehub.com,diyswank.com,djcliq.com,djsaviation.net,dk894953543.com,docstips.com,doctorsofrunning.com,dododsondesigns.com,doesitreallywork.org,dogfoodsmart.com,doggysaurus.com,dogingtonpost.com,dogsbestlife.com,dogscatspets.org,dogsnet.com,dogsonplanes.com,dogster.com,dogtrainingadvicetips.com,dogvills.com,doityourselfdivas.com,doityourselfrv.com,dollarstorecrafts.com,dollartimes.com,dollforums.com,dollopofdough.com,dolphinnation.com,dolphinstalk.com,domcooks.com,domestically-designed.com,domestically-speaking.com,domesticatedtom.com,domesticdreamboat.com,domesticheights.com,domesticsuperhero.com,dominicancooking.com,donnadundas.co.uk,dontgobaconmyheart.co.uk,dontmesswithmama.com,dontsweattherecipe.com,dontwastethecrumbs.com,dontworkanotherday.com,doodledoods.com,dormroomcook.com,dotafire.com,dotgg.gg,downhomeinspiration.com,downredbuddrive.com,downshiftology.com,downsizingdinner.com,dpreview.com,draftlegame.com,draftleunlimited.com,draftmag.com,draftsim.com,dragonball.gg,dragonball.guru,dralpana.com,dramabeans.com,dreamalittlebigger.com,dreamdictionary.org,dreamhomebasedwork.com,dreaminterpretation.info,dreaminterpretation.org,dreamspiritual.org,dreamystays.com,dressedformyday.com,drifted.com,drinkswithdanica.com,drivemehungry.com,drivenbydecor.com,drivenwheels.com,driverbase.com,driveteslacanada.ca,drivinggeeks.com,drizzleanddip.com,drizzlemeskinny.com,drkarenslee.com,drmonicabravo.com,droidgamers.com,droidviews.com,dronexl.co,dronezon.com,drpsychmom.com,drugstoredivas.net,drumhelper.com,drummagazine.com,drummerworld.com,drumspy.com,drumstrive.com,drveganblog.com,dryscalpgone.com,dsmtuners.com,dubaitravelplanner.com,dubsdaily.com,ducatiforum.com,ducatihyper.com,ducttapeanddenim.com,due.com,duggarfamilyblog.com,dukesavenue.com,dumblittleman.com,dunkorthree.com,duoplanet.com,dutchmenowners.org,dwellbymichelle.com##+js(rmnt, script, /"__adblocker"|"data-sdk"/) +eandpcrochet.com,earth911.com,earthly-provisions.com,earthsfriends.com,earthsky.org,eastcoastcreativeblog.com,easybudgetrecipes.com,easycheesyvegetarian.com,easychickenrecipes.com,easydessertrecipes.com,easydinnerrecipes.com,easydrawingguides.com,easyfamilyrecipes.com,easygayoven.com,easygoodideas.com,easyhomemadelife.com,easyhomemaderecipes.ca,easylowsodiumrecipes.com,easynotecards.com,easyrecipedepot.com,easyrecipesfromhome.com,easysalads.com,easysoutherndesserts.com,easythingstosew.com,easytravelpoints.com,easyweeknightrecipes.com,eatathomecooks.com,eatatmaudes.com,eatbetterrecipes.com,eatcookbake.com,eatdrinkpure.com,eatfigsnotpigs.com,eating-made-easy.com,eatingbirdfood.com,eatingbyelaine.com,eatingeuropean.com,eatinginstantly.com,eatingonadime.com,eatingwitherica.com,eatingwithzion.com,eatlikebourdain.com,eatlittlebird.com,eatliverun.com,eatmovemake.com,eatortoss.com,eatpicks.com,eatplant-based.com,eatplayshae.com,eatsomethingvegan.com,eatthebite.com,eatthegains.com,eatwellspendsmart.com,eatwithcarmen.com,eatwithclarity.com,eatyourselfskinny.com,eazygrub.com,eazypeazymealz.com,ebicycles.com,ecoconsumerguide.com,ecoenergygeek.com,economicshelp.org,economicsonline.co.uk,ecstatichappiness.com,edelwyn.com,edeneats.com,edibleperspective.com,educationaltechnology.net,educationlibrary.org,effortlessfoodie.com,effortlessgent.com,eggsallways.com,egpu.io,eighteen25.com,eightforestlane.com,elavegan.com,electricbluefood.com,electricianforum.co.uk,electricians.forum,electricmommy.com,electricteeth.com,electrikjam.com,electronicdrumadvisor.com,electronicshub.org,eleganceandenchantment.com,eleganceechoes.com,eletric-vehicles.com,elicitfolio.com,elisabethmcknight.com,eliserosecrochet.com,eliteprospects.com,elizabethrider.com,elkstudiohandcraftedcrochetdesigns.com,ellaclaireinspired.com,elleandpear.com,ellieandco.co.uk,elliott.org,elmundoeats.com,elmundoeats.es,embracingsimpleblog.com,emergencyprepguy.com,emfcaution.com,emilieeats.com,emilyaclark.com,emilybites.com,emilyfabulous.com,emilykylenutrition.com,emilylaurae.com,emiraforum.com,emissions.org,emmacruises.com,emmymade.com,emojiflashcards.com,emojikeyboard.io,employmentlawhandbook.com,empressofdirt.net,emptyeasel.com,enchartedcook.com,encouragingmomsathome.com,encyclopedia-titanica.org,encyclopedia.com,endfield.gg,endomondo.com,endurancely.com,energydrinkhub.com,engineerboards.com,engineeryourfinances.com,enginepatrol.com,english-grammar-lessons.com,englishbulldognews.com,englishlinx.com,enjoysharepoint.com,enoki.nz,entertainingdiva.com,entertainingwithbeth.com,entertainmentnow.com,entirelyelizabeth.com,entoin.com,enzasquailhollowkitchen.com,epawaweather.com,epicdope.com,epicgardening.com,episodehive.com,equippinggodlywomen.com,eregulations.com,erinliveswhole.com,erinobrien.life,erinscozykitchen.com,erinspain.com,erinstraveltips.com,errenskitchen.com,errorfixer.co,erynwhalenonline.com,escapeforum.org,esportstales.com,essenparadies.com,essentialketo.com,ethanchlebowski.com,etiquetteschoolofamerica.com,etkjokken.com,euphoriazine.com,eurasiareview.com,eurocheapo.com,eutawstreetreport.com,eva-darling.com,eventstocelebrate.net,evergreenkitchen.ca,everyday-reading.com,everydayannie.com,everydaycheapskate.com,everydaydishes.com,everydayeileen.com,everydayelizabeth.com,everydayessentialist.com,everydayfamilycooking.com,everydayfamilyeats.com,everydaymaven.com,everydaynourishingfoods.com,everydaythrifty.com,everylastbite.com,everylittlecrumb.com,everylittlename.com,everything-delish.com,everythingairfryer.com,everythingbackyard.net,everythingfishkeeping.com,everythinglabradors.com,everythingmarina.com,everythingtrivia.com,everywherewithclaire.com,evolutionofstyleblog.com,evolvingtable.com,exactlywhatistime.com,excelchamps.com,exceldemy.com,excelsemipro.com,exceltrick.com,exclusivepumping.com,expedition33.gg,expeditionforum.com,expertworldtravel.com,exploreessaouira.com,exploringvegan.com,exrx.net,extinctanimals.org,extraordinarybbq.com,extraordinarychaos.com,extrapetite.com,extremehowto.com,extremeweatherwatch.com##+js(rmnt, script, /__adblocker|html-load/) +f4wonline.com,fabeveryday.com,fabtcg.gg,fabulesslyfrugal.com,facilycasero.com,factsinstitute.com,factsjustforkids.com,fadeawayworld.net,fairygardendiy.com,fakeginger.com,falasteenifoodie.com,familiesgotravel.com,familyaroundthetable.com,familyfelicity.com,familyroadtrip.co,familysavvy.com,familyspice.com,familystylefood.com,familytravel-middleeast.com,familytreemagazine.com,familyvacationdesign.com,famivita.com,famivita.com.br,fanbuzz.com,fannetasticfood.com,fansfocus.com,fantabulosity.com,fantasticfunandlearning.com,fantasycalc.com,fantasydata.com,fantasyfootballcalculator.com,fantasyfootballranker.com,fantasyfootballreports.com,farmergrows.com,farmersalmanac.com,farmgirlgourmet.com,farmingbase.com,farmingshelter.com,farmlifediy.com,farmwifecooks.com,farmwifedrinks.com,fashionablefoods.com,fashionbeans.com,fastandslowcooking.com,fastfoodmenuprices.com,fastingwithlaura.com,fatcalc.com,fatforweightloss.com.au,fatgirlhedonist.com,fatherandus.com,fathermag.com,fatimacooks.net,fatimafarmer.com,fauxsho.org,favfamilyrecipes.com,favoritepaintcolorsblog.com,fearlessdining.com,feastandwest.com,feastforafraction.com,feastgood.com,feastingathome.com,feastingnotfasting.com,feastingonfruit.com,fedandfit.com,feedgrump.com,feedingourflamingos.com,feedingthefrasers.com,feedingtinybellies.com,feedmephoebe.com,feedthepudge.com,feelgoodfoodie.net,feelinfabulouswithkayla.com,feelingfoodish.com,feelslikehomeblog.com,femalefoodie.com,fermentingforfoodies.com,festivalguidesandreviews.com,ffxnow.com,fiatforum.com,fiberfluxblog.com,fiberglassrv.com,fictionhorizon.com,fictionlit.com,fierceboard.com,fifteenspatulas.com,fillingandfabulous.com,fillmyrecipebook.com,filmcolossus.com,filosofashion.com,financebuzz.com,financeformulas.net,financestrategists.com,financesuperhero.com,financialbestlife.com,financialpanther.com,financialsamurai.com,financillustrations.com,findcatnames.com,findingouradventure.com,findingseaturtles.com,findingtimetofly.com,findmyguitar.com,findtherun.com,finearttutorials.com,finishedwithsalt.com,finmasters.com,finurah.com,firefighterinsider.com,firefliesandmudpies.com,firstdayofhome.com,firstdown.studio,firstforwomen.com,firsthomelovelife.com,firstquarterfinance.com,firstsportz.com,firststepeurope.com,fishedthat.com,fisheries.co.uk,fishforums.net,fishlab.com,fishonfirst.com,fishtankreport.com,fitandfabliving.com,fitasamamabear.com,fitbottomedgirls.com,fitibility.com,fitmamarealfood.com,fitmittenkitchen.com,fitnessfooddiva.com,fitnessista.com,fitrays.com,fittoservegroup.com,fivebarks.com,fivehearthome.com,fixthisbuildthat.com,fjrforum.com,flabfix.com,flaggle.net,flagle-game.com,flamingotoes.com,flavcity.com,flavorfulife.com,flavormosaic.com,flawlessfood.co.uk,fliesonly.com,flightaware.com,flighthacks.com.au,flippedupsidedown.com,flipsimu.com,floandgrace.com,floorcritics.com,flooringforum.com,floralapron.com,florgeous.com,floridapanhandle.com,floridatravelwithkids.com,flouronmyfingers.com,flowerglossary.com,fluentin3months.com,fluentincoffee.com,fluxingwell.com,fmbrotherhood.com,fnafinsider.com,fnfmods.net,focusdailynews.com,fodmapeveryday.com,foldnfly.com,fontsforpeas.com,food-bites.com,foodal.com,foodandjourneys.net,foodbanjo.com,foodbloggersofcanada.com,foodbymaria.com,foodbymars.com,foodcrumbles.com,fooddoodles.com,foodess.com,foodfaithfitness.com,foodfolksandfun.net,foodforfitness.co.uk,foodforlifegarden.com,foodie.com,foodieaholic.com,foodieandwine.com,foodiecrush.com,foodiefiasco.com,foodieholly.com,foodiesterminal.com,foodiewithfamily.com,foodmetamorphosis.com,foodnetworkgossip.com,foodnouveau.com,foodnutters.com,foodologygeek.com,foodpleasureandhealth.com,foodrenegade.com,foodrepublic.com,foodsguy.com,foodsharingvegan.com,foodsharkmarfa.com,foodstoragemoms.com,foodstruct.com,foodtasia.com,foodtasticmom.com,foodtruckempire.com,foodwineandlove.com,foodwithfeeling.com,foolproofliving.com,footballgamingzone.com,footballrumors.me,footprinthero.com,foragersofhappiness.com,forbusybees.com,fordauthority.com,fordfullsize.com,fordraptor2.com,fordraptorforum.com,fordtremor.com,fordtruckfanatics.com,forensicfilesnow.com,forestriverforums.com,forevermillennials.com,forevertwentysomethings.com,foreverwingman.com,forgetfulmomma.com,forgetsugarfriday.com,forkinthekitchen.com,forkknifeswoon.com,forktospoon.com,formatlibrary.com,forscubadivers.com,forthefamily.org,forthefrills.com,forthepleasureofeating.com,fortniteinsider.com,fortressofsolitude.co.za,fortunly.com,forzafire.com,fosbasdesigns.com,fouraroundtheworld.com,fourwheeltrends.com,foxandbriar.com,foxandpinestitches.com,foxeslovelemons.com,foxestalk.co.uk,foxfarmhome.com,foxhollowcottage.com,foxyfolksy.com,fpl.team,fpsindex.com,fptrack.com,fractuslearning.com,fragrancereview.com,fragrancetoday.com,fraicheliving.com,framedcooks.com,frameratetest.com,franceadventurer.com,francevoyager.com,frearbroslabs.com,free-n8n-templates.com,freeairpump.com,freecrochettutorials.com,freedomcardboard.com,freedomresidence.com,freehomeschooldeals.com,freemonogrammaker.com,freeorganizingprintables.com,freeprettythingsforyou.com,freeride.com,freescrapbookfonts.com,freeslp.com,freestyletravelers.com,freethankyounotes.com,freetoursbyfoot.com,freezeit.co.uk,freezerfit.com,freezermeals101.com,freightcourse.com,frenchbulldogowner.com,frenchcountrycottage.net,freshaprilflours.com,freshapron.com,freshbeanbakery.com,freshcoasteats.com,freshoffthegrid.com,fridasofiaeats.com,fridaywereinlove.com,friendshipbreadkitchen.com,fromabcstoacts.com,fromachefskitchen.com,fromhousetohome.com,fromicecreamtosteak.com,frommybowl.com,fromscratchdaily.com,fromtheangels.com,fromthiskitchentable.com,fromvalerieskitchen.com,frondtech.com,front-porch-ideas-and-more.com,frontporchlifemagazine.com,frontrangefed.com,frugalcouponliving.com,frugalfanatic.com,frugalfarmwife.com,frugalforless.com,frugalfun4boys.com,frugalginger.com,frugallivingmom.com,frugallyblonde.com,frugalmomeh.com,frugalreality.com,frugalrules.com,frugalyabundante.com,frvr.com,fuelly.com,fufuskitchen.com,fullcoffeeroast.com,fullofplants.com,fullydriven.com,fun-a-day.com,fun-squared.com,funattic.com,funcheaporfree.com,funclothcrafts.com,funcraftskids.com,funfinderclub.com,funfoodfrolic.com,funhandprintartblog.com,funinfairfaxva.com,funinfirst.com,funintheyard.com,funktionalhome.com,funkyjunkinteriors.net,funlearningforkids.com,funmoneymom.com,funny-jokes.com,funthingsinhouston.com,funwithmama.com,funwithoutfodmaps.com,futmind.com,fynesdesigns.com##+js(rmnt, script, /"__adblocker"|"data-sdk"/) +gadgetreview.com,gadgetsandwearables.com,galonamission.com,gameanswer.net,gameclubz.com,gamedayculture.com,gamedayeats.com,gamerdiscovery.com,gamerempire.net,gamerhour.net,gameriv.com,gameslikefinder.com,gamesolver.net,gamespew.com,gamestouse.com,gamezebo.com,gaming-fans.com,gamingsmart.com,gardenandbloom.com,gardenersoasis.com,gardenerspath.com,gardenersyards.com,gardenforindoor.com,gardenholic.com,gardening-forums.com,gardeningchannel.com,gardeningelsa.com,gardeningproductsreview.com,gardeninthekitchen.com,gardenmyths.com,gardenpondforum.com,gardentherapy.ca,gardenzeus.com,garlicandzest.com,garlicsaltandlime.com,garminrumors.com,garnishandglaze.com,garnishwithlemon.com,gatechecked.com,gatherednutrition.com,gatherforbread.com,gatherlemons.com,gatorenvy.com,gcaptain.com,gearpatrol.com,gearthhacks.com,gedpracticequestions.com,gedpracticetest.net,geeksofcolor.co,geekspin.co,genealogyexplained.com,generationacresfarm.com,generatorgrid.com,genevieveogleman.ca,gentlemansgazette.com,gentlenursery.com,gentletummy.com,genxfinance.com,geographyrealm.com,germanyfootsteps.com,getarazor.com,getbusygardening.com,getinspiredeveryday.com,getmeonacruise.com,getmorevocab.com,getonmyplate.com,getonmysaladplate.com,gettystewart.com,gfactorliving.com,gforgadget.com,giadzy.com,giangiskitchen.com,giftofcuriosity.com,giftofhospitality.com,giftrabbit.com,gigashock.com,gimmedelicious.com,gimmesomeoven.com,gimmethegoodstuff.org,gina-michele.com,ginabnutrition.com,ginaccreates.com,gingerdivine.com,gingerhomemaking.com,gingersnapsbakingaffairs.com,ginghamgardens.com,girlcarnivore.com,girlgonegourmet.com,girlscangrill.com,girlversusdough.com,girlwiththeironcast.com,girlwiththepassport.com,gislounge.com,gitnux.org,giveagirlaspoon.com,givemehistory.com,giverecipe.com,gladly.io,glam.com,glamournglow.com,glamperlife.com,global-view.com,globalmousetravels.com,globle.fun,glorioustreats.com,glow-diaries.com,glueandglitter.com,gluedtomycraftsblog.com,gluesticksblog.com,gluesticksgumdrops.com,glutenfreeguidehq.com,glutenfreeonashoestring.com,glutenfreepalate.com,gmauthority.com,gmsquarebody.com,gmt400.com,gmt800.com,gnom-gnom.com,gocomics.com,gocurrycracker.com,godairyfree.org,godandman.com,godownsize.com,goingawesomeplaces.com,goingconcern.com,gokartguide.com,goldendoodleadvice.com,goldengracekitchen.com,goldenlucycrafts.com,goldrefiningforum.com,golfcartgo.com,golfcartreport.com,golfergeeks.com,golfsidekick.com,golfspan.com,golfworkoutprogram.com,gonnawantseconds.com,gonomad.com,good.is,goodcarbadcar.net,gooddinnermom.com,goodenessgracious.com,goodenoughmoming.com,goodfooddiscoveries.com,goodfoodpittsburgh.com,goodgourds.com,goodhomeautomation.com,goodinthesimple.com,goodlivingguide.com,goodlookingtan.com,goodmorningquote.com,goodnessavenue.com,gopests.com,gopherhole.com,gopresstimes.com,gossitup.com,gotechtor.com,gotechug.com,gotula.net,govalleykids.com,govexplained.co.uk,govfacts.org,gps-forums.com,grabcraft.com,graceelkus.com,gracefullittlehoneybee.com,gracelikerainblog.com,gradecalculator.com,grainfreetable.com,grammarist.com,grandbaby-cakes.com,grannysinthekitchen.com,grannysquare.me,grantbakes.com,grantourismotravels.com,grassfedgirl.com,grayingwithgrace.com,grazedandenthused.com,greatergood.com,greaterlongisland.com,greatgrubdelicioustreats.com,greatholidayrecipes.com,greatschools.org,greatwithoutgluten.com,greedygirlgourmet.com,greedygourmet.com,greenbeautymama.com,greenchildmagazine.com,greencoast.org,greenesportszone.com,greenhealthycooking.com,greenlitebites.com,greensnchocolate.com,greenvalleykitchen.com,greenweddingshoes.com,greetingcardpoet.com,grilledcheesesocial.com,grillinwithdad.com,grillo-designs.com,grillonadime.com,gritdaily.com,gritsandgouda.com,gritsandpinecones.com,grkids.com,groomshaper.com,groovypost.com,grosgrainfab.com,groundbeefrecipes.com,groupdiy.com,growagoodlife.com,growforagecookferment.com,growfully.com,growingajeweledrose.com,growingdawn.com,growinghandsonkids.com,growingplay.com,growingslower.com,grownandflown.com,growtomato.com,grumpyrecipes.com,grunge.com,gsowners.com,gta-xtreme.com,gtaboom.com,guardiansnation.com,guide2free.com,guided.news,guidetodetailing.com,guidingtech.com,guild-demo.com,guineapig101.com,guitaradvise.com,guitarchalk.com,guitarcommand.com,guitarlobby.com,guitarnick.com,guitarstrive.com,gulfcoastjourneys.com,gundamcard.gg,gurlgonegreen.com,gwens-nest.com,gymnastics-now.com,gymnaverse.com##+js(rmnt, script, /"__adblocker"|"data-sdk"/) +hacksaholic.com,hairbuddha.net,hairstylesfeed.com,haleiwatown.com,halfbakedharvest.com,halfmarathons.net,halfwayanywhere.com,halicopteraway.com,hamstersinfo.com,handsonaswegrow.com,handsthatbless.com,handylittleme.com,hanjancrochet.com,hannahmageerd.com,hapanom.com,happierhuman.com,happihomemade.com,happilyeverafteretc.com,happilyevermom.com,happilyevertravels.com,happilyunprocessed.com,happity.co.uk,happy-mothering.com,happybalancedwellness.com,happydiyhome.com,happyfamilyrecipes.com,happyfoodhealthylife.com,happyhealthyeaters.com,happyhealthymama.com,happyheartyhome.com,happyhomefairy.com,happyhomeschoolnest.com,happyhoneykitchen.com,happyhooligans.ca,happyhourprojects.com,happymoneysaver.com,happyorganizedlife.com,happysimpleliving.com,happytoddlerplaytime.com,happytummy702.com,happyveggiekitchen.com,happyyouhappyfamily.com,harbourbreezehome.com,hardlinecrawlers.com,hardrockforums.com,hardwaresecrets.com,harryknowsball.com,hashtaginvesting.com,hative.com,hauntedplaces.org,hausandhand.com,hauteandhealthyliving.com,have-clothes-will-travel.com,hawaii-guide.com,hawaii.com,haylskitchen.com,hazyandhoppy.com,hdontap.com,headbangerskitchen.com,headfonia.com,healingtomato.com,healthbeet.org,healthdigest.com,healthecooks.com,healthfulblondie.com,healthiersteps.com,healthtoempower.com,healthy-delicious.com,healthyambitions.co,healthyelizabeth.com,healthyfitnessmeals.com,healthyfloflo.com,healthyfoodiegirl.com,healthygffamily.com,healthygirlkitchen.com,healthygreenkitchen.com,healthyhappysmart.com,healthyheartyrecipes.com,healthyhelperkaila.com,healthykitchen.com,healthykitchen101.com,healthylifetrainer.com,healthylittlefoodies.com,healthylittlepeach.com,healthylittlevittles.com,healthylivingjames.co.uk,healthynibblesandbits.com,healthyrecipes101.com,healthyrecipesblogs.com,healyeatsreal.com,heandsheeatclean.com,heartandsoulhomeschooling.com,heartfullofmom.com,hearthandvine.com,hearthookhome.com,hearthpwn.com,heartifb.com,heartscontentfarmhouse.com,heatherchristo.com,heatherednest.com,heatherlikesfood.com,heatnation.com,heavenlyhomemakers.com,heavenlyspiced.com,heavy.com,hecktictravels.com,heightcomparison.com,hellocreativefamily.com,hellohoneycomb.blog,hellolovelystudio.com,hellopharmacist.com,hellosewing.com,helpdeskgeek.com,helpfixthat.com,henricocitizen.com,hepper.com,herepup.com,heresyourdinner.com,heretocook.com,hermanathome.com,hermitcrabanswers.com,heroesfire.com,heroichollywood.com,herpackinglist.com,herpaperroute.com,hertoolbelt.com,herviewfromhome.com,hesipracticetest.com,heydonna.com,heygrillhey.com,heyimreading.com,heyitsfree.net,heymichigan.com,heynutritionlady.com,heyorlando.com,hezzi-dsbooksandcooks.com,hiddensandiego.com,hifiplus.com,highchairchronicles.com,highheelsandabackpack.com,highheelsandgrills.com,highlysensitiverefuge.com,highschooltestprep.com,hildaskitchenblog.com,hilltoprecipes.com,hilotrailerforum.com,hiphipgourmet.com,hiphomeschoolmoms.com,hiride.com,hisetpracticetest.org,histordle.com,historic-uk.com,history-computer.com,hisugarplum.com,hitherandthither.net,hobbyhelp.com,hobbyinsider.net,hockeyanswered.com,hockeystats.com,hockeywilderness.com,hogwarts.cafe,holajalapeno.com,holidaycalendar.io,holidayexpert.com,holidayscalendar.com,holisticfoodie.com,holistichealthherbalist.com,holisticsquid.com,hollywoodhomestead.com,holycowvegan.net,homanathome.com,homeairadvisor.com,homeautomation.forum,homebodyeats.com,homebrewtalk.com,homebuiltairplanes.com,homecookedroots.com,homecookingadventure.com,homecookingcollective.com,homecookingmemories.com,homecrux.com,homefortheharvest.com,homegrail.com,homegrounds.co,homegrownhappiness.com,homemade-gifts-made-easy.com,homemade-modern.com,homemadeandyummy.com,homemadebycarmona.com,homemadeforelle.com,homemadeheather.com,homemadehome.com,homemadehooplah.com,homemadeinterest.com,homemadelovely.com,homemaking.com,homemindset.com,homemodelenginemachinist.com,homenization.com,homeoomph.com,homeschool.com,homeschoolhappiness.com,homeschoolof1.com,homeschoolpreschool.net,homesicktexan.com,homesoftherich.net,homesteadandchill.com,homesteadhow-to.com,homesteadingfamily.com,homesthetics.net,homestoriesatoz.com,hometheateracademy.com,hometheaterreview.com,hometips.com,homeworthy.com,homeyohmy.com,honestandtruly.com,honestcooking.com,honestgolfers.com,honestlyadhd.com,honeyandlime.co,honeybearlane.com,honeybuilthome.com,honeyname.com,honeywerehome.com,honeywhatscooking.com,honkai.gg,hookedonhouses.net,hoosierhomemade.com,horseracingsense.com,hortonbarbell.com,hostthetoast.com,hot-thai-kitchen.com,hotbeautyhealth.com,hotcountry1035.ca,hotcouponworld.com,hotelgyms.com,hotelswithhottubinroom.club,hotforfoodblog.com,hothardware.com,hotpankitchen.com,hotsalty.com,hotvehs.com,houndgames.com,housebyhoff.com,housedigest.com,housedpet.com,housefur.com,housekeen.com,housemixblog.com,houseofdebt.org,houseofhawthornes.com,houseofhepworths.com,houseofnasheats.com,houseofroseblog.com,houseofturquoise.com,houseplantsexpert.com,houseplantsinfo.com,houserepairtalk.com,housewifehowtos.com,housingaforest.com,houstonherald.com,how2doketo.com,howchoo.com,howewelive.com,howmuchisin.com,howsweeteats.com,howthingscompare.com,howtobearedhead.com,howtobuildit.org,howtocook.recipes,howtodisney.com,howtodispose.info,howtofeedaloon.com,howtohomeschoolforfree.com,howtoisolve.com,howtomakedinner.com,howtomakewreaths.com,howtomurderpests.com,howtonestforless.com,howtorefinishfurniture.com,howtotipsntricks.com,howtotypeanything.com,html.cafe,htowndaily.com,hubbardbroadcasting.com,huddle.today,huddlegame.com,hugsandcookiesxoxo.com,humblerise.com,hummingbirdhigh.com,hummusapien.com,humorliving.com,humoroushomemaking.com,hundredpushups.com,hungryenoughtoeatsix.com,hungryforinspiration.com,hungryhappens.net,hungryhealthyhappy.com,hungryinthailand.com,hungrypaprikas.com,hungryrunnergirl.com,hunker.com,husaberg.org,huskermax.com,hvac.forum,hvacptcharts.com##+js(rmnt, script, /"__adblocker"|"data-sdk"/) +iambaker.net,iamhomesteader.com,iamneverfull.com,iankewks.com,ibreatheimhungry.com,icancrochetthat.com,icanteachmychild.com,iclarified.com,idealme.com,ideasfornames.com,identicalrecipes.com,idleontoolbox.com,idonthavetimeforthat.com,idontknowwhatiknow.com,idownloadblog.com,idrlabs.com,ifanzine.com,ifoodreal.com,igamemom.com,ih8mud.com,ihackeddiabetes.com,ihcubcadet.com,iheartartsncrafts.com,iheartcraftythings.com,ihearteating.com,iheartnaptime.net,iheartorganizing.com,iheartrecipes.com,iheartumami.com,iheartvegetables.com,ihorror.com,ikneadtoeat.com,ikream.com,illinoisloyalty.com,iloveclassicrock.com,imafoodie.com.au,imaginacres.com,imaginationsoup.net,imaging-resource.com,imamother.com,imightbefunny.com,immigrantstable.com,immotherofthebride.com,imodeler.com,imperfecthomemaker.com,imperfectlyhappy.com,improvephotography.com,improvesailing.com,in2013dollars.com,inbloombakery.com,inchcalculator.com,incomera-doo.com,indianhealthyrecipes.com,indianveggiedelight.com,indiepanda.net,indoorplaygroundforkids.com,indulgenteats.com,indywithkids.com,infarrantlycreative.net,infinitcloset.com,infinite-fusion.net,inflatableblast.com,inflightfeed.com,infoinspired.com,injennieskitchen.com,inkatrinaskitchen.com,inkdecks.com,inklink.news,inkristaskitchen.com,inmamamaggieskitchen.com,inmyownstyle.com,inquiringchef.com,insearchofyummyness.com,insider-gaming.com,insidethemagic.net,insidetherustickitchen.com,insidetheupgrade.com,insideuniversal.net,insimoneskitchen.com,inspiralized.com,inspirationmadesimple.com,inspiredbycharm.com,inspiredtaste.net,inspiremore.com,inspiringmomlife.com,inspiringtips.com,instafreshmeals.com,instantloss.com,instantpoteats.com,instantramen.com,instantstreetview.com,insteading.com,instrupix.com,intentionalhospitality.com,intentionallyeat.com,interestingliterature.com,internet-access-guide.com,interstaterestareas.com,interviewpenguin.com,intjsecrets.com,intlwaters.com,intmath.com,intoindiegames.com,intoxicatedonlife.com,introvertdear.com,investedwallet.com,iowagirleats.com,iphoneforums.net,iphoneincanada.ca,ireadlabelsforyou.com,irelandbeforeyoudie.com,irishamericanmom.com,irreverentgent.com,irunfar.com,irv2.com,isabeleats.com,isabelledias.com,isavea2z.com,ishouldbemoppingthefloor.com,ishouldhavesaid.net,isitpacked.com,isixsigma.com,islands.com,isoldmyhouse.com,ispyfabulous.com,italianchef.com,itallstartedwithpaint.com,itdoesnttastelikechicken.com,iteachtoo.com,itechguides.com,itemlevel.net,ithinkwecouldbefriends.com,itinyhouses.com,itisakeeper.com,itrwrestling.com,itsalwaysautumn.com,itsavegworldafterall.com,itslivb.com,itsnotcomplicatedrecipes.com,itstartswithgoodfood.com,itsybitsyfun.com,itsyummi.com,izzycooking.com##+js(rmnt, script, /"__adblocker"|"data-sdk"/) +jackfruitful.com,jamaicanfoodsandrecipes.com,jamesandcatrin.com,jamhands.net,jamiecooksitup.net,jamieotis.com,jamjarkitchen.com,jamonkey.com,janellerohner.com,japanese-names.info,japanesecooking101.com,jaroflemons.com,jasminealley.com,javabeat.net,jawnsicooked.com,jaycoowners.com,jaylynnlittle.com,jaysbrickblog.com,jayscentre.com,jayscustomcreations.com,jazznearyou.com,jazztimes.com,jcookingodyssey.com,jeanelleats.com,jeanetteshealthyliving.com,jeep392.com,jeepkj.com,jeepwagoneer.forum,jellymemos.com,jenhayescreations.com,jenhdao.com,jennaburger.com,jennasuedesign.com,jenneatsgoood.com,jenniferallwoodhome.com,jenniferbanz.com,jenniferrizzo.com,jenontherun.com,jenwoodhouse.com,jerasjamboree.co.uk,jerkyholic.com,jerseydigs.com,jesshuff.com,jessicaautumn.com,jessicadimas.com,jessicagavin.com,jessicalynnwrites.com,jessicanturner.com,jessieathome.com,jessifearon.com,jetdrift.com,jetpunk.com,jetsetchristina.com,jetsxfactor.com,jewelryshoppingguide.com,jigcraft.com,jigsawexplorer.com,jillbjarvis.com,jillcataldo.com,jillianharris.com,jiujitsucraft.com,joannaoverly.com,jobdescriptionswiki.com,jobsinfootball.com,jocjapantravel.com,jocooks.com,johnnyjet.com,joinmeinthekitchen.com,joinyourlife4u.com,jolenesrecipejournal.com,jolynneshane.com,jomygosh.com,jonathanzaragoza.com,jordanjetsets.com,josephwriteranderson.com,joshuaweissman.com,josieandnina.com,jototheworld.com,joujoutravels.com,journalbuddies.com,journeytosahm.com,joybauer.com,joybileefarm.com,joyfilledeats.com,joyfoodsunshine.com,joyfulabode.com,joyfulhealthyeats.com,joyfullymad.com,joyfulmesses.com,joyfulmomma.com,joyfulmommaskitchen.com,joyofmotioncrochet.com,joyousapron.com,joythebaker.com,joyusgarden.com,jugglingactmama.com,juliapacheco.com,juliasalbum.com,juliemarieeats.com,juliescafebakery.com,jumbleanswer.com,jungler.gg,juniperandoakes.com,junky-traveler.com,junkyardmob.com,jupiter.recipes,justagirlandherblog.com,justagirlblog.com,justamumnz.com,justapinch.com,justataste.com,justbcrafty.com,justbrightideas.com,justfreshkicks.com,justinesnacks.com,justinweather.com,justisafourletterword.com,justonecookbook.com,justplaincooking.ca,justpostedblog.com,justslowcooker-recipes.com,justsotasty.com,justweather.org,jz-eats.com##+js(rmnt, script, /__adblocker|html-load/) +k9ofmine.com,kaaltv.com,kanji.tools,karacarrero.com,kateable.com,kateandmeri.com,katerinafaith.com,katesbestrecipes.com,katheats.com,kathleenscravings.com,kathrynskitchenblog.com,katiebirdbakes.com,katieleekitchen.com,katiescucina.com,kawalingpinoy.com,kayakanglermag.com,kayakhelp.com,kch-ent.com,kdnuggets.com,keeperofthehome.org,keepingitrelle.com,keepingitsimpleblog.com,keepingitsimplecrafts.com,keepingitsimpleitalian.com,keepingthepeas.com,keepingupchangs.com,keepinspiring.me,keepthescore.com,keeptradecut.com,kelleynan.com,kellyelko.com,kellyleighcreates.com,kellyscleankitchen.com,kellythekitchenkop.com,kelseyinlondon.com,kelseysfoodreviews.com,kenarry.com,ketoasap.com,ketoconnect.net,ketocookingchristian.com,ketokarma.com,ketovale.com,kevinandamanda.com,keviniscooking.com,keyboardforums.com,keynotesupport.com,keystoneforums.com,keytomylime.com,kicking-carbs.com,kiddingaroundcharlotte.com,kiddingaroundcolumbia.com,kiddingaroundgreenville.com,kidfriendlythingstodo.com,kidgredients.com.au,kidsactivitiesblog.com,kidzcraftcorner.com,kikifoodies.com,killingthyme.net,kimberdawnco.com,kimchimari.com,kimscravings.com,kimspireddiy.com,kindercraze.com,kindergartenworks.com,kindergartenworksheetsandgames.com,kindlyunspoken.com,kingofthegym.com,kingshotcalculator.com,kingshotdata.com,kingshotguides.com,kingshotoptimizer.com,kinsta.cloud,kirbiecravings.com,kirstenhollowaydesigns.com,kissmysmoke.com,kitchen335co.com,kitchenathoskins.com,kitchencents.com,kitchenconfidante.com,kitchendivas.com,kitchenfunwithmy3sons.com,kitchenhabit.com,kitchenknifeforums.com,kitchenlaughter.com,kitchennightmaresupdates.com,kitchennostalgia.com,kitchensanctuary.com,kitchensanity.com,kitchenseer.com,kitchenserf.com,kitchenstewardship.com,kitchenswagger.com,kitchentableclassroom.com,kitchentreaty.com,kitchenwhisperers.com,kitchinsider.com,kittiaroundtheworld.com,kiwifamilies.co.nz,kneadsomesweets.com,knickoftime.net,knicksnation.com,knicksxfactor.com,knifeandsoul.com,knifeinformer.com,knitcrochetcreate.co.uk,knitfarious.com,knitterknotter.com,knitting-news.com,knittingwithchopsticks.com,knotions.com,knowing-jesus.com,knownothingnomads.com,knowyourmobile.com,knowyourproduce.com,kob.com,kojo-designs.com,kommandotech.com,korrashay.com,kosheronabudget.com,kosmofoto.com,kowalskimountain.com,kpople.net,kpreps.com,kr4m.com,krissysoverthemountaincrochet.com,kristendukephotography.com,kristineinbetween.com,krogerkrazy.com,krollskorner.com,kstp.com,kubotaforum.com,kwokspots.com,kyleecooks.com,kylieminteriors.ca,kzookids.com##+js(rmnt, script, /__adblocker|html-load/) +labornursemama.com,ladypeartree.com,ladysavings.com,lakelandmom.com,lakemchenryscanner.com,lakersdaily.com,lakersnews.com,lakewizard.com,lalymom.com,lambertslately.com,lanascooking.com,landcruiserforum.com,landlister.co.uk,landocspe.com,landroverworld.org,laneandgreyfare.com,lanebakery.com,laptop-forums.com,laraclevenger.com,largefamilytable.com,largescaleforums.com,lastwar.wiki,lastweekilearned.com,lasvegasrestaurants.com,lateralmovements.com,laughingplace.com,laughingroostereats.com,laughingspatula.com,laughingsquid.com,laurafuentes.com,laurelberninteriors.com,laurenfromscratch.com,laurenmcbrideblog.com,laurenscravings.com,laurenslatest.com,laurenslighthouse.com,lavenderandmacarons.com,lavidanomad.com,lavieongrand.com,lawandcrime.com,lawnmodel.com,lawnmowerforum.com,laylita.com,lazyadmin.nl,lazycatkitchen.com,lazymanandmoney.com,lcarecipes.com,leaderconnectingleaders.com,leafyjournal.com,leafyplace.com,leaguefeed.net,leagueofgraphs.com,leaguetips.gg,leahingram.com,leanproteinqueen.com,learnaboutnature.com,learneditfrommymom.com,learnenglish.com,learningjquery.com,learnmetrics.com,leasehackr.com,leathercraftforum.com,leatherskill.com,leavingtherut.com,lebernard.ca,lechefswife.com,lecremedelacrumb.com,ledgernote.com,leelalicious.com,leftbraincraftbrain.com,leftinknots.com,legacy-wow.com,legacy.hockey,legallyhealthyblonde.com,legendplayz.com,legendsofamerica.com,legendsofkansas.com,legendsofz.com,legiongolife.com,leitesculinaria.com,lemonbin.com,lemonblossoms.com,lemonlimeadventures.com,lemonsandlattes.com,lemonsandzest.com,lemonslavenderandlaundry.com,lenaskitchenblog.com,leoduq.com,lesswithlaur.com,letsdiyitall.com,letslassothemoon.com,letsrv.com,letstraveltocancun.com,letstraveltomexico.com,letterboxedanswers.com,letthebakingbegin.com,letthemeatgfcake.com,levelsanswers.com,lexiscleankitchen.com,lexusgxforum.com,life-in-the-lofthouse.com,life-with-confidence.com,lifearoundthetable.ca,lifeasastrawberry.com,lifeasmama.com,lifebyleanna.com,lifecurrentsblog.com,lifehealthhq.com,lifeinmini.com,lifeinourcorner.com,lifeinruralfrance.com,lifeisaparty.ca,lifeismessyandbrilliant.com,lifeissweeterbydesign.com,lifeloveandgoodfood.com,lifeloveandsugar.com,lifemadefull.com,lifemadeketo.com,lifemadesimplebakes.com,lifemadesweeter.com,lifemeasure.com,lifeofsailing.com,lifeonsummerhill.com,lifeonvirginiastreet.com,lifeovercs.com,lifepathdoc.com,lifesambrosia.com,lifestyleforreallife.com,lifestylefortress.com,lifestyleofafoodie.com,lifewithdogs.tv,lifewithgremlins.com,lifewiththecrustcutoff.com,lifexperimentblog.com,lifeyourway.net,liftbigeatbig.com,liftvault.com,likehotketo.com,likewhereyouregoing.com,lilaloa.com,lilblueboo.com,liliputing.com,lillieeatsandtells.com,lilluna.com,lillychilders.com,lilvienna.com,lilyloutay.com,lilypcrumbs.com,lindsayannbakes.com,lindsaypleskot.com,lindseyeatsla.com,lingalot.com,linsfood.com,linuxgenie.net,linuxize.com,linuxsimply.com,listcaboodle.com,listendata.com,listverse.com,littlebinsbricks.com,littlebinsforlittlehands.com,littlebitsof.com,littleblackskillet.com,littlechefwithin.com,littlecoffeefox.com,littleferrarokitchen.com,littleflowercottage.com,littlehaloj.com,littlehealthybites.com,littlehousebigalaska.com,littlehouseliving.com,littlehouseoffour.com,littlelearningclub.com,littlelearningcorner.com,littleloucooks.com,littlemissmomma.com,littlenonni.com,littleredpiano.com,littlespicejar.com,littlespoonfarm.com,littlesugarsnaps.com,littlesunnykitchen.com,littlesweetbaker.com,littleworldofwhimsy.com,liveboldandbloom.com,livecrafteat.com,liveeatlearn.com,liveforlivemusic.com,livelaughrowe.com,livelovefruit.com,liverate.com,livesimply.me,living-vegan.com,livingandstilllearning.com,livingchirpy.com,livingcost.org,livinghealthywithchocolate.com,livinginashoebox.com,livinglifeandlearning.com,livingmyveglife.com,livingonadime.com,livingrichwithcoupons.com,livingthegourmet.com,livingwellforseniors.com,livingwellmom.com,lizmarieblog.com,lmld.org,lnn.co,loaids.com,logcabinhub.com,logicalharmony.net,logicprohelp.com,lolababykusina.com,lollyjane.com,lomaculinaria.com,longbournfarm.com,longrangehunting.com,lookslikecandy.com,lorcana.gg,lorcanaplayer.com,loremipsum.io,lostarkfire.com,lostatsay.com,lostsword.gg,lotterycritic.com,lotteryusa.com,louisianacookin.com,louisianawomanblog.com,lovableloops.com,loveablelemons.com,loveandgoodstuff.com,loveandlemons.com,loveandmarriageblog.com,loveandotherspices.com,loveandrenovations.com,lovefilipinofood.com,lovefromtheoven.com,loveincmag.com,loveinmyoven.com,lovelifeyarn.com,loveloveloveblog.com,lovelovething.com,lovelydelites.com,lovelygreens.com,lovelyplanner.com,lovemeow.com,loveourreallife.com,loveyourcat.com,low-offset.com,lowcalicious.com,lowcarb-ology.com,lowcarbingamongfriends.com,lowcarbinspirations.com,lowcarblove.com,lowcarbquick.com,lowcarbsimplified.com,lowcarbspark.com,lowkickmma.com,lsathacks.com,lsd.law,luciddreamsociety.com,luckybelly.com,lucykatecrochet.com,luv2garden.com,luxaterra.com,luxe.digital,luxeluminous.com,luxurylaunches.com,lydioutloud.com,lynnswayoflife.com,lyricle.app##+js(rmnt, script, /__adblocker|html-load/) +maangchi.com,macexpertguide.com,machinelearningmastery.com,machiningdoctor.com,machow2.com,macrameforbeginners.com,macreports.com,macrumors.com,madaboutcruises.com,madaboutfood.co,madaboutmacarons.com,madden-school.com,maddysavenue.com,madebybarb.com,madebygootie.com,madeitateitlovedit.com,madetobeamomma.com,madewithlau.com,madhuseverydayindian.com,madincrafts.com,maebells.com,maesmenu.com,magicalclan.com,magicalguides.com,magnet-fishing.com,mailboxlocate.com,mainelysubarus.com,maisieandruth.com,maisondecinq.com,maisondepax.com,majasrecipes.com,makeanddocrew.com,makeandtakes.com,makefunprintables.com,makehealthyrecipes.com,makeit-loveit.com,makeitcrochet.com,makeitdairyfree.com,makeitdough.com,makelifelovely.com,makelyhome.com,makenstitch.com,maketecheasier.com,makethebestofeverything.com,makinghomebase.com,makingitinthemountains.com,makinglemonadeblog.com,makingsenseofcents.com,makingthymeforhealth.com,makylacreates.com,malaysianchinesekitchen.com,mallorynikolaus.com,mallorythedietitian.com,mamacheaps.com,mamagourmand.com,mamainastitch.com,mamainstincts.com,mamakatslosinit.com,mamaknowsglutenfree.com,mamalovesfood.com,mamanatural.com,mamaneedscake.com,mamaofminis.com,mamashire.com,mamaslaundrytalk.com,mamaslearningcorner.com,mamasonabudget.com,mamavation.com,mandysrecipeboxblog.com,manforhimself.com,mangiawithmichele.com,mangoful.com,manhaircuts.com,manhattan-nest.com,manteligencia.com,mantelligence.com,manusmenu.com,mapcrunch.com,maphappy.org,maple.kitchen,mapleandthyme.com,maplejubilee.com,mapleleafshotstove.com,mapmaster.io,mapofus.org,marathonhandbook.com,marcandangel.com,marcellinaincucina.com,marialuceydietitian.com,mariasbluecrayon.com,mariashriver.com,mariashriversundaypaper.com,maricruzavalos.com,marijuanamoment.net,marineinsight.com,marinmamacooks.com,marketingaccesspass.com,marlameridith.com,marlybird.com,martinloganowners.com,martysmusings.net,marvel.church,marvelousdogs.com,marvelrivals.gg,marvelsnap.pro,marvelsnapzone.com,maryse.net,maryswholelife.com,maryvancenc.com,masalaandchai.com,masalaherb.com,mashed.com,mashtips.com,masonfit.com,masonjarcraftslove.com,masstime.us,masteringruneterra.com,matchbuilt.com,matchsimulator.com,matchthememory.com,matermea.com,math-forums.com,math-salamanders.com,mathcracker.com,mathgeekmama.com,mathhelpforum.com,mathlearnit.com,mathler.com,mathmonks.com,mathsathome.com,mathswithmum.com,mathwarehouse.com,mattadlard.com,mattsfitchef.com,maureenabood.com,mavsnation.com,maximumridesharingprofits.com,mayihavethatrecipe.com,maytheray.com,mbreviews.com,mccooltravel.com,mealplanningmommies.com,mealplanpros.com,mealprepify.com,mealprepmanual.com,meaningfuleats.com,meaningfulmama.com,meanttobemade.com,meanwhileinireland.com,measuringstuff.com,meateatingmilitaryman.com,meatified.com,meatloafandmelodrama.com,meatrabbits.org,meaww.com,mech9.com,mechanicbase.com,mechanicguides.com,mediaite.com,mediatakeout.com,medicalhero.com,medievalists.net,mediterraneanliving.com,meetmeindepartures.com,meetways.com,meganstarr.com,meganvskitchen.com,meghanmakesdo.com,megmadewithlove.com,meladorascreations.com,melaniecooks.com,melissaknorris.com,melissassouthernstylekitchen.com,mellysews.com,melskitchencafe.com,menhairstylesworld.com,menhairstylist.com,menshairstylestoday.com,mentalfoodchain.com,merakilane.com,mercedesmedic.com,merriam-webster.com,merricksart.com,merrillfotonews.com,messforless.net,messylittlemonster.com,meta-chart.com,metal-building-homes.com,metemgee.com,mexicanfoodjournal.com,mexicanmademeatless.com,mexicocassie.com,mexicoenmicocina.com,mexicoinmykitchen.com,mexicotravelsecrets.com,mezzoguild.com,mgevs.com,miakouppa.com,miamitake.com,micechat.com,michaelfairmantv.com,michaelsaves.com,michellemorfett.com,mickeyvisit.com,micocinadominicana.com,midgetmomma.com,midwesternholidays.com,midwesternhomelife.com,midwesternmoms.com,midwestfoodieblog.com,midwestlifeandstyle.com,midwexican.com,mikebakesnyc.com,miketabor.com,mikhaeats.com,milabubeautyreview.com,milehighhappyhour.com,mileswithmcconkey.com,militarybases.com,militarydisneytips.com,militarytimechart.com,milkglasshome.com,millennial-grind.com,millennialboss.com,millennialships.com,mimisorganiceats.com,minaelleskitchen.ca,mindfulmocktail.com,mindfulzen.co,minecraftbuildinginc.com,minecraftforum.net,minecraftmaps.com,minecraftstation.com,miniaturehorsetalk.com,minimalistbaker.com,ministryofcurry.com,minitravellers.co.uk,minoomakesstuff.com,mintnotion.com,mirlandraskitchen.com,missallieskitchen.com,missdecarbo.com,misshomemade.com,missinformationblog.com,missinthekitchen.com,mississippivegan.com,missmustardseed.com,mittengirl.com,mixandmatchmama.com,mixop.net,mjandhungryman.com,mjsoffthehookdesigns.com,mmo-champion.com,mobafire.com,mobile-cuisine.com,mobilesuitarena.com,mochimommy.com,moco.gg,mocoshow.com,modandmood.com,modernfarmer.com,modernfarmhouseeats.com,modernhoney.com,modernmoh.com,modernmrsdarcy.com,modernsurvivalonline.com,modestfish.com,modpodgerocksblog.com,modsella.com,mofluid.com,mom4real.com,momables.com,mombrite.com,momcrieff.com,momcurls.com,momdoesreviews.com,momendeavors.com,momfessionals.com,momfoodie.com,momlifemadeeasy.com,momlifetoday.com,momlovesbaking.com,momlovesbest.com,momluck.com,mommafitlyndsey.com,mommalew.com,mommybearmedia.com,mommyhatescooking.com,mommylabornurse.com,mommymusings.com,mommyneedschocolate.com,mommyonpurpose.com,mommyoverwork.com,mommypotamus.com,mommysfabulousfinds.com,mommyshomecooking.com,mommyshorts.com,mommythrives.com,momof6.com,momontimeout.com,momooze.com,momscravings.com,momsdinner.net,momsdish.com,momsneedtoknow.com,momsoftweensandteens.com,momsrecipecollection.com,momswhothink.com,momswithcrockpots.com,momswithmouseears.com,monarchbutterflygarden.net,moneymakingmommy.com,moneyning.com,moneysavingmom.com,moneywehave.com,moneywise.com,moneyzine.com,monkeyandmekitchenadventures.com,monologueblogger.com,monopolyland.com,monpetitfour.com,monsterhunterhq.com,montanaowners.com,moodymixologist.com,mooglyblog.com,moolasavingmom.com,moonandspoonandyum.com,moralfibres.co.uk,morereptiles.com,morethankyounotes.com,morethanmeatandpotatoes.com,moritzfinedesigns.com,morningchores.com,mortadellahead.com,moscatomom.com,mossdigitalpublishing.com,mossword.com,mostcraft.com,mostlovelythings.com,mostlyhomemademom.com,motherearthtravel.com,motorandwheels.com,motorbiscuit.com,motorcyclelegalfoundation.com,motorhomefaqs.com,motorious.com,motormatchup.com,mountainmamacooks.com,mountainmodernlife.com,mozielife.com,mp1st.com,mpgbuddy.com,mrandmrshowe.com,mrishtanna.com,mrmakeithappen.com,mrshappyhomemaker.com,mrsjoneskitchen.com,mrsmerry.com,msfsaddons.com,mspoweruser.com,msshiandmrhe.com,mtgarena.pro,mtgazone.com,mtgdecks.net,mtgsalvation.com,mturbogamer.com,muaythai.com,mudrunguide.com,muminthemadhouse.com,mumsmakelists.com,munchiesbymallory.com,munchingwithmariyah.com,munchinwithmaddie.blog,munchygoddess.com,murphybedhq.com,murphysmultiverse.com,musclecarclub.com,muscleevo.net,musicalmum.com,musicaltheatreresources.com,musiccoder.com,musiccritic.com,musicpiechart.com,musicstrive.com,musingsofamuse.com,musthavemom.com,mut.gg,muybuenoblog.com,muydelish.com,muzzleloadingforum.com,my-island-jamaica.com,my-travelmonkey.com,myadventuresacrosstheworld.com,myairfryerkitchen.com,myamortizationchart.com,mybakingaddiction.com,myballard.com,mybartender.com,mybeautybunny.com,myblahblahblahg.com,myblessedlife.net,mybmwi3.com,mycaliforniatravels.com,mycasualpantry.com,mychemicalfreehouse.net,mychicobsession.com,mychoiceschools.com.au,mycolombianrecipes.com,mycookingjourney.com,mycrazygoodlife.com,mydarlingvegan.com,mydesignchic.com,mydinner.co.uk,mydogsname.com,mydominicankitchen.com,myelearningworld.com,myeverydaytable.com,myexcelonline.com,myfearlesskitchen.com,myfederalretirement.com,myfocuselectric.com,myfooddata.com,myfoodstory.com,myfrugaladventures.com,myfrugalhome.com,myglobalviewpoint.com,mygluten-freekitchen.com,mygolfspy.com,mygoodfoodworld.com,mygorgeousrecipes.com,mygrandrv.com,myheartbeets.com,myheavenlyrecipes.com,myhomemaderoots.com,myhomemyglobe.com,myincrediblerecipes.com,myjoyfilledlife.com,myketoplate.com,mykidslickthebowl.com,mykindofmeeple.com,mykitchenescapades.com,mykitchenserenity.com,mykoreankitchen.com,mylatinatable.com,mylifeandkids.com,mylifeelsewhere.com,mylistoflists.com,mymessykitchenn.com,myminichefs.com,mymocktailforest.com,mymodernmet.com,mymorningespresso.com,mymundaneandmiraculouslife.com,mynameissnickerdoodle.com,mynaturalfamily.com,mynewhairstyles.net,mynissanleaf.com,myorganizedchaos.net,myoutlanderphev.com,mypaycalculator.co.uk,mypetsname.com,myplaniq.com,myplantbasedplan.com,myplantifulcooking.com,myquietkitchen.com,myradkitchen.com,myrepurposedlife.com,myriadrecipes.com,mysaucerecipes.com,mysavings.com,myspicetrunk.com,mysuburbankitchen.com,mysweetketo.com,mysweetsavannah.com,myswissalps.com,mytastycurry.com,myteenguide.com,mytennishq.com,mythinkbiglife.com,mythologysource.com,mytopspotify.io,mytrailco.com,myvegetarianroots.com,myvwegolf.com,mywinston-salem.com,mywordgames.com##+js(rmnt, script, /"__adblocker"|"data-sdk"/) +nailsalonsnearme.com,namesnerd.com,namesonwheel.com,nanascraftyhome.com,naomicakes.com,narcissisms.com,nashvillegab.com,nashvillevoyager.com,nashvillewife.com,natashalh.com,natashashome.com,natashaskitchen.com,nationalparksmom.com,naturalbabylife.com,naturalbeachliving.com,naturalfertilityandwellness.com,naturalhomeapothecary.com,naturallieplantbased.com,naturallysavvy.com,natureinspiredlearning.com,navaraforum.com,navylookout.com,nayturr.com,nbadraftroom.com,ncraoa.com,nearthebeatenpath.com,nedandmimi.com,neighborfoodblog.com,nelliebellie.com,neonlightsmedia.com,nerdburglars.net,nerdsandbeyond.com,nerdsandscoundrels.com,nerdtechy.com,nestingwithgrace.com,nestofposies-blog.com,neuroscientificallychallenged.com,newengland.com,newlifeonahomestead.com,newlywoodwards.com,newser.com,newtoncustominteriors.com,nextlevelgents.com,nextofwindows.com,nextstophawaii.com,nexuspointnews.com,nflperry.com,nhltraderumor.com,nhltraderumors.me,nickishomemadecrafts.com,nickiswift.com,nickskitchen.com,nikke.gg,nikkisplate.com,nikolopaa.com,ninahendrick.com,ninaoutandabout.ca,ninersdaily.com,ninjacue.com,ninjaguide.com,nintendosmash.com,nippyfish.net,nirvanacakery.com,nishkitchen.com,nitroowners.com,njwoodsandwater.com,nobakerecipes.com,nobiggie.net,noblepig.com,nobunplease.com,nocrumbsleft.net,nofilmschool.com,nomadasgourmet.com,nomadsunveiled.com,nomastehungry.com,nombeah.com,nomnompaleo.com,nonamehiding.com,noracooks.com,nordichook.com,norecipes.com,norinesnest.com,northsidebaseball.com,northwestforkids.co.uk,norwegiancruiselineblog.com,noshingwiththenolands.com,nosidebar.com,nospoonnecessary.com,nosweatshakespeare.com,notabully.org,notateslaapp.com,notenoughcinnamon.com,notentirelyaverage.com,notesbythalia.com,noticiaspais.com,notimeforflashcards.com,notjustahousewife.net,nourish-and-fete.com,nourishandtempt.com,nourishedbynic.com,nourishingjoy.com,nourishingminimalism.com,nourishingpursuits.com,nourishmovelove.com,novaljalocal.com,novelgames.com,nowgeorgia.com,nowhabersham.com,nremtpracticetest.com,ntertain.us,number-2-pencil.com,numstheword.com,nursefern.com,nursingtheory.org,nurtureandthriveblog.com,nurturemygut.com,nutmegandvinegar.com,nutmegnanny.com,nutriciously.com,nutrient-matters.com,nutritionadvance.com,nutritionfor.us,nutritionforrunning.com,nutritionistreviews.com,nutritiontofit.com,nutritiontwins.com,nutritiousdeliciousness.com,nycforfree.co,nyssaskitchen.com,nytbee.com,nytcrossword.org,nytcrosswordanswers.org,nytspellingbeeanswers.org,nywoodsandwater.com,nzpocketguide.com##+js(rmnt, script, /__adblocker|html-load/) +oakandmarlow.com,oaxacatraveltips.com,oceaninfo.com,oceanusadventure.com,ochristine.com,ofbatteranddough.com,offbeathome.com,offbeatwed.com,offgridgirl.com,officerassignments.com,officialdata.org,officialgamerules.org,officiallyglutenfree.com,offtheeatenpathblog.com,ohhappyday.com,ohhappyjoy.com,ohhowcivilized.com,ohiofestivals.net,ohmeohmyblog.com,ohmy-creative.com,ohmyfoodrecipes.com,ohsheglows.com,ohsimply.com,ohsobeautifulpaper.com,ohsodelicioso.com,ohsospotless.com,ohsweetbasil.com,ohthatsgood.com,oilburners.net,okonomikitchen.com,oldest.org,oldhousecalling.com,oldhousesforsale.com,oldhousesunder100k.com,oldhousesunder50k.com,oldhousesusa.com,oldhousetonewhome.net,oldsaltfarm.com,oldschoollabs.com,oldwest.org,olgainthekitchen.com,olgasflavorfactory.com,oliveandmango.com,olivesnthyme.com,olivetomato.com,oliveyouwhole.com,oliviaadriance.com,omaddiet.com,omegaforums.net,omgchocolatedesserts.com,omnivorescookbook.com,on3.com,onceuponacheerio.com,onceuponachef.com,onceuponaprintable.com,onebalancedlife.com,onebeautifulhomeblog.com,onecomputerguy.com,onecrazyhouse.com,onecrazymom.com,onecreativemommy.com,onedayitinerary.com,onedishkitchen.com,oneessentialcommunity.com,onegoodthingbyjillee.com,onehappybite.com,onehappydish.com,onehotoven.com,oneingredientchef.com,onelittleproject.com,onelovelylife.com,onepiece.gg,onepotdishrecipe.com,onepotrecipes.com,oneprojectcloser.com,oneshetwoshe.com,onesweetappetite.com,onionringsandthings.com,online-field-guide.com,online-solitaire.com,onlineguitarbooks.com,onlinemictest.com,onlyfoods.net,onlygators.com,onlyinyourstate.com,onlypassionatecuriosity.com,onmykidsplate.com,onohawaiianrecipes.com,onolicioushawaii.com,onpenang.com,onpointfresh.com,onsuttonplace.com,onthefeeder.com,onthegas.org,oombawkadesigncrochet.com,ootrandomizer.com,openrangeowners.com,opereviews.com,optimizedportfolio.com,optimizepri.me,orangebloods.com,orchestracentral.com,orchidbliss.com,organicallyaddison.com,organisemyhouse.com,organizationjunkie.com,organized31.com,organizedisland.com,organizeyourselfskinny.com,organizingmoms.com,orgjunkie.com,origamiway.com,orlando-parenting.com,orlandodatenightguide.com,orlandoparkstop.com,orlandovoyager.com,ornithology.com,orwhateveryoudo.com,osrsguide.com,osxdaily.com,otisandus.co.uk,ourbestbites.com,ourcraftycocktails.com,ourcrowsnest.com,ourfamilyofseven.com,ourfifthhouse.com,ourgabledhome.com,ourglobetrotters.com,ourhappymess.com,ourhomemadeeasy.com,ourkindofcrazy.com,ourlifetastesgood.com,ourlovelanguageisfood.com,ournourishingtable.com,ourplantbasedworld.com,oursaltykitchen.com,oursportscentral.com,ourstoneyacres.com,ourwovenjourney.com,ourzestylife.com,outagescope.com,outdoorapothecary.com,outdoorguide.com,outdoors.com,outdoortroop.com,outgrilling.com,outsidergaming.com,outsons.com,overclockers.com,overdraftapps.com,overemployed.com,overframe.gg,overthebigmoon.com,overthefirecooking.com,ozstudies.com##+js(rmnt, script, /__adblocker|html-load/) +packinsider.com,paddlingmag.com,padresmission.com,pageflutter.com,pagingsupermom.com,paintstrategies.com,paleoleap.com,paleomg.com,paleorunningmomma.com,pamelasalzman.com,panaceaspantryblog.com,pancakerecipes.com,panlasangpinoy.com,pantrymama.com,paperscissorscraft.com,papertoys.com,papertraildesign.com,par3nearme.com,parametric-architecture.com,parapropracticetest.com,parentingchaos.com,parentingpatch.com,parentingpod.com,parentingscience.com,parentingstronger.com,parentingteensandtweens.com,parentportfolio.com,parentpreviews.com,parkrangerjohn.com,parksavers.com,parsleyandicing.com,passionatecrafter.com,passmesometasty.com,passportandpixels.com,passportandplates.com,passtheplants.com,pastatwins.com,pastrieslikeapro.com,pastrybysaloni.com,pastrychefonline.com,pastryliving.com,patientgardener.co.uk,patsfans.com,pattern-paradise.com,pattyplates.com,pauladeenmagazine.com,paulmarina.com,pawdiet.com,pawsnpups.com,pawsomerecipes.com,pbfingers.com,pc-builder.io,pcguide.com,pcmecca.com,pcosnutritionistalyssa.com,pd2.tools,peacefulparenthappykids.com,peaceloveandlowcarb.com,peakbagger.com,peakdistrictkids.co.uk,peaktoplate.com,peanutblossom.com,peanutblossombookclub.com,peanutbutterandjilly.com,peanutbutterandjulie.com,peanutbutterpluschocolate.com,peanutbutterrunner.com,peartreekitchen.com,peasandcrayons.com,peelwithzeal.com,pelletsandpits.com,pelobuddy.com,penaltyfile.com,pennantchase.com,penniesintopearls.com,pennymediallc.com,pennypinchinmom.com,pepperporch.com,pepperscale.com,peppershomeandgarden.com,perchancetocook.com,percolately.com,perfectbrew.com,periodicadventures.com,periodnirvana.com,persialou.com,persnicketyplates.com,personafans.com,personalityclub.com,personalitygrowth.com,personalityhunt.com,personalitymax.com,personalityunleashed.com,pertpracticetest.com,perudelights.com,pestdude.com,pestleanalysis.com,pestpush.com,pestseek.com,pet-happy.com,petadvisers.com,petalrepublic.com,petalstopicots.com,petcarrierverdict.com,petdogowner.com,petiteinparis.com,petkeen.com,petpress.net,petrinadarrah.com,petsgal.com,petsoid.com,pewterreport.com,phillyvoice.com,philrosenthalworld.com,phlebotomyexaminer.com,phlebotomypracticetest.net,phoenixwithkids.net,photographypursuits.com,phototraces.com,phyrra.net,physicianassistantforum.com,physicianonfire.com,physicsforum.com,physicsread.com,pianodreamers.com,pickanytwo.net,pickerwheel.com,pickledbarrel.com,pickledplum.com,picksandparlays.net,picky-palate.com,pickyeaterblog.com,picturethemagic.com,pieladybakes.com,piesandtacos.com,piloncilloyvainilla.com,pilotplans.com,pimylifeup.com,pinchandswirl.com,pinchmeimeating.com,pinchofyum.com,pincutsewstudio.com,pineconesandacorns.com,pinkpopdesign.com,pinsandprocrastination.com,pinstripesnation.com,pipandebby.com,pipeburn.com,pipingpotcurry.com,pipsunlimited.app,piratesandprincesses.net,pistolsfiringblog.com,pitbossforum.com,pitcherlist.com,pivot-table.com,pivotalweather.com,pixcams.com,pizzablab.com,pizzamaking.com,pizzazzerie.com,pjip.org,pkmncards.com,placeofmytaste.com,plaidandpaleo.com,plainchicken.com,planetguide.net,planetnatural.com,plankandpillow.com,planneratheart.com,planomoms.com,plantbaes.com,plantbasedcookingshow.com,plantbasedjess.com,plantbasedjuniors.com,plantbasedonabudget.com,plantbasedrdblog.com,plantcaretoday.com,plantedinthekitchen.com,planthebestvacation.com,plantifullybasedblog.com,plantinformer.com,plantpowercouple.com,plantyou.com,platedcravings.com,platingsandpairings.com,plattertalk.com,playbarkrun.com,playdoughtoplato.com,playerstv.com,playideas.com,playingmtg.com,playpartypin.com,playpartyplan.com,playswellwithbutter.com,playthetunes.com,playtivities.com,playtolearnpreschool.us,pletaura.com,plowingthroughlife.com,pluggedingolf.com,plumbingforums.com,pmppracticeexam.org,pmstudycircle.com,pnwmoto.com,pocketchangegourmet.com,pocketturbo.com,pocus101.com,poemanalysis.com,poemofquotes.com,poemsandoccasions.com,poemsource.com,pokedata.io,pokejungle.net,pokemap.net,pokemon-zone.com,pokemoncard.io,pokemoncoders.com,pokemontcgzone.com,pokequestrecipes.me,pokesymbols.com,pokopiadex.com,pokuniverse.com,polestar.forum,polkadotchair.com,pontoonopedia.com,pookspantry.com,popularrecipes.com,populationpyramid.net,populationpyramids.org,popville.com,porchdaydreamer.com,porofessor.gg,porsche-mania.com,poshplate.us,positivelysplendid.com,positivepsychology.com,postergrind.com,posthouselegacy.net,postpartumtrainer.com,posturedirect.com,potomaclocal.com,poultryshowcentral.com,powellfamilycooking.com,powerhungry.com,powerliftingtechnique.com,powershellfaqs.com,powerstrokearmy.com,practical-golf.com,practicallyfunctional.com,practicallyhomemade.com,practicalpie.com,practicalselfreliance.com,practicecnatest.com,prayerist.com,pre-kpages.com,preciouscore.com,prefabreview.com,pregnancyfoodchecker.com,pregnantchicken.com,premeditatedleftovers.com,preparednessadvice.com,preparednessmama.com,prepear.com,preppykitchen.co.uk,preppykitchen.com,preschoolplayandlearn.com,presentationskills.me,pressurecookingtoday.com,pressurecookrecipes.com,prettyhandygirl.com,prettymyparty.com,prettypies.com,prettyprovidence.com,prettyprudent.com,prettysimplesweet.com,preventionrd.com,pricematchguarantee.net,priceme.game,priceoftravel.com,pricescope.com,primaledgehealth.com,primallyinspired.com,primandprep.com,primaverakitchen.com,primermagazine.com,princesscruisesblog.com,princesshairstyles.com,princesspinkygirl.com,printablecrush.com,printablesforlife.com,printabulls.com,printerknowledge.com,probaseballhistory.com,prodigalpieces.com,prodigygamers.com,productivityspot.com,productmint.com,profootballdaily.com,profootballhistory.com,profootballnetwork.com,profusioncurry.com,progametalk.com,progardentips.com,prohockeyhistory.com,projectgolfau.com,prologuetalk.com,pronounceskincare.com,properlyrooted.com,prospectingaustralia.com,proteincakery.com,proteinsnackqueen.com,protoolreviews.com,prouddogmom.com,prouditaliancook.com,proudtobeprimary.com,prowrestlingstories.com,prudentpennypincher.com,ps4storage.com,psychologydictionary.org,psychologyjunkie.com,ptcbpracticetest.com,ptcgpocket.gg,ptoanswers.com,pttrns.com,pumpkinnspice.com,pumpkinsandpetals.com,punchbowl.com,puppyleaks.com,puppyweightcalculator.com,pupswithchopsticks.com,puptraveller.com,purelykaylie.com,purseblog.com,putacupinit.com,puttingmetogether.com,puzzlepagecheats.com,puzzles-to-print.com,puzzleseveryday.com,pynative.com,python-graph-gallery.com,pythoncentral.io,pythonforbeginners.com,pythonguides.com##+js(rmnt, script, /"__adblocker"|"data-sdk"/) +quaries.com,queenbeetoday.com,queersapphic.com,queue-times.com,quickpreprecipes.com,quickweeknightmeals.com,quietlifefarm.com,quiltdom.com,quizwise.com,quotecatalog.com##+js(rmnt, script, /__adblocker|html-load/) +rabbitandwolves.com,rabbitcaretips.com,rabbitliving.com,rachaelsgoodeats.com,rachelcooks.com,rachelcooksthai.com,rachelteodoro.com,rachelwojo.com,rachlmansfield.com,rachnacooks.com,radiantlydressed.com,radicalfire.com,radiofidelity.com,radiokorea.com,radiologyinplainenglish.com,raepublic.com,raffamusadesigns.com,ragerampage.com,raiderking.com,raidersbeat.com,raidersreport.com,railwaymodels.uk,rainbownourishments.com,rainbowplantlife.com,rainonatinroof.com,rainydaymum.co.uk,raisecuriouskids.com,raisinghealthyfamilies.com,rakskitchen.net,rallyjournal.com,ram-rho.com,ram-trx.com,ramforum.com,ramonascuisine.com,randaderkson.com,random.country,randomcity.net,randomgenerators.com,randompowergenerator.com,randomstreetview.com,randymajors.org,rangeofsounds.com,rangerxd.com,ranker.com,rapidfireart.com,raptive.com,raptive.net,raptivesite.com,rarethief.com,ratracerebellion.com,ratrelief.com,ratrodbikes.com,ratrodsrule.com,rav4resource.com,rbtpracticeexam.com,rctalk.com,rdr2.org,readingmiddlegrade.com,readygamesurvive.com,realadvicegal.com,realandvibrant.com,realbalanced.com,realcountrysizes.com,realestateinfoguide.com,realestatelicensewizard.com,realfoodrealdeals.com,realfoodwholelife.com,realfoodwithsarah.com,realgreekrecipes.com,realhousemoms.com,realitydaydream.com,reallifeathome.com,reallifedinner.com,reallifenutritionist.com,reallifeoflulu.com,reallittlemeals.com,reallyawesomecostumes.com,realmenrealstyle.com,realmomkitchen.com,realmomnutrition.com,realsimplegood.com,realwaystoearnmoneyonline.com,reasonstoskipthehousework.com,rebeccaandtheworld.com,rebeccataig.com,rebootedmom.com,recessedlighting.com,recetatipica.com,recetatipica.net,recipe-diaries.com,recipe52.com,recipeboy.com,recipefairy.com,recipegirl.com,recipelibrary.net,recipemagik.com,recipesandplaces.com,recipesbynora.com,recipesforholidays.com,recipesfromeurope.com,recipesfromleftovers.com,recipessimple.com,recipesthatcrock.com,recipeswithessentialoils.com,recipesworthrepeating.com,recipeteacher.com,recipethis.com,recipetineats.com,recipevibes.com,recipezazz.com,recteqforum.com,red-herring.info,redandhoney.com,redaroundtheworld.com,redbus2us.com,redcottagechronicles.com,redcurrantbakery.com,redheadcandecorate.com,redherringanswers.com,redhousespice.com,redtedart.com,reenactingschedule.org,referee.com,reformationacres.com,reheardle.com,reinventeddelaware.com,reisefroh.de,reizeclub.com,relationshipculture.com,religiousforums.com,reluctantentertainer.com,remingtonavenue.com,remodelaholic.com,renaldiethq.com,reneerenovates.com,reneeroaming.com,renovatedrvsforsale.com,repaintnow.com,repairwin.com,repeatcrafterme.com,reptilecraze.com,reptilejam.com,repurposingjunkie.com,rerev.com,resetera.com,resin-expert.com,resolutioneats.com,resortsgal.com,respiratorytherapyzone.com,resplendentkitchen.com,restaurantmenuprice.com,restlessbackpacker.com,restlesschipotle.com,restonnow.com,retail-insider.com,retailshout.com,retireby40.org,retiredom.net,retirementtipsandtricks.com,retrieveradvice.com,retrohousewifegoesgreen.com,retropotluck.com,retrorecipebox.com,retrorenovation.com,returnpolicyguide.com,review42.com,reviewlution.ca,revisitinghistory.com,rewardcharts4kids.com,rexgarden.com,rgbcolorpicker.com,rhiansrecipes.com,rhythmsofplay.com,rib.net,richardalois.com,richlyrooted.com,richtexturescrochet.com,ride.guru,riftbound.gg,riftdecks.com,riftmana.com,rigorousthemes.com,risasfamilykitchen.com,rivertenkitchen.com,rmkshoes.com,roadbikerider.com,roadfood.com,roadtripalberta.com,roadtripmanitoba.com,roamingwithkids.com,robloxlist.com,rockcelebrities.net,rockcrawler.com,rocketryforum.com,rockguitaruniverse.com,rockyourhomeschool.net,rogallylife.com,rogerebert.com,rogueengineer.com,rookieroad.com,roomfortuesday.com,rootedrevival.com,rootsandradishes.com,rosebakes.com,rotinrice.com,rotoballer.com,routedfamily.com,routesnorth.com,royalbaloo.com,royalskeep.com,rpginformer.com,rtbookreviews.com,rtwin30days.com,ruffledblog.com,rugbynoise.com,rulergame.net,runbundle.com,runeatrepeat.com,runeterrafire.com,runlifteatrepeat.com,runnerclick.com,runnersblueprint.com,runnerslab.com,runninginaskirt.com,runningonrealfood.com,runningshoesguru.com,runningtothekitchen.com,runsforcookies.com,runstreet.com,runtoradiance.com,runtothefinish.com,runwashington.com,russellstreetreport.com,russianmachineneverbreaks.com,rusticpassionbyallieblog.com,rvandplaya.com,rvblogger.com,rvforum.net,rvinspiration.com,rvlife.com,rvliving.com,rvpioneers.com,rvrank.com,rvtravel.com,ryannordheimer.com##+js(rmnt, script, /__adblocker|html-load/) +sabrinacurrie.com,sailorbailey.com,saintlad.com,salesforcefaqs.com,sallysbakingaddiction.com,salongeek.com,saltandbaker.com,saltandwind.com,saltbuttersmoke.com,saltedplains.com,saltinmycoffee.com,saltnpepperhere.com,saltnsprinkles.com,saltypearlcrochet.com,salu-salo.com,salvagedinspirations.com,samdoesherbest.com,sammibrondo.com,samoaobserver.ws,sandandsisal.com,sandbetweenmypiggies.com,sandhyahariharan.co.uk,sandytoesandpopsicles.com,sarahfit.com,sarahjoyblog.com,sarahremmer.com,sarahsfitfood.com,sarahsvegankitchen.com,sarahtitus.com,sarcasticmommy.com,sasstrology.com,saunahelper.com,savage.ventures,savedbylovecreations.com,saving.org,savingadvice.com,savingdessert.com,savingdollarsandsense.com,savingslifestyle.com,savingtoinvest.com,savorandsavvy.com,savoredeats.com,savoringitaly.com,savoringthegood.com,savortheflavour.com,savorybitesrecipes.com,savoryexperiments.com,savorylotus.com,savorysimple.net,savoryspin.com,savorysweetspoon.com,savorytooth.com,savvybudgetboss.com,savvygardening.com,savvyhomebody.com,savvyhomemade.com,savvyhoney.com,savvymamalifestyle.com,savvysavingcouple.net,sawdust2stitches.com,sawdustgirl.com,sawsonskates.com,sayyes.com,scalemodeladdict.com,scam-detector.com,scantechy.com,scarlatifamilykitchen.com,scatteredthoughtsofacraftymom.com,scentchasers.com,scentselective.com,scheckeats.com,schisandraandbergamot.com,schoolwix.com,science-sparks.com,sciencefacts.net,scienceofpeople.com,scientificallysweet.com,scotchandscones.com,scrapfabriclove.com,scrappygeek.com,scratchandstitch.com,scratchmommy.com,screendynamite.com,screenidle.app,scrollsguided.com,scrumptiously.com,scubadiverlife.com,sdvoyager.com,seahawks.net,seaofknowledge.org,seasonalcravings.com,seasonedandsalted.com,seasonedhomemaker.com,seasonedskilletblog.com,seasonsandsuppers.ca,sedecordle.com,seededatthetable.com,seedscientific.com,seekatesew.com,seekinggoodeats.com,seekingscripture.com,seevanessacraft.com,selfdecode.com,selfhacked.com,selfproclaimedfoodie.com,selfsufficientkids.com,selftattoo.com,semidelicatebalance.com,semihomemadekitchen.com,semihomemaderecipes.com,seniorcatwellness.com,seniorgolfsource.com,seniorskillet.com,seniorsmobility.org,seniortailwaggers.com,senseandedibility.com,sensibledigs.com,seonkyounglongest.com,septle.com,serenetrail.com,seriesgraph.com,servsafepracticetest.com,setforset.com,settingforfour.com,setup.gg,sew4home.com,sewcanshe.com,sewguide.com,sewingiscool.com,sewingmachinetalk.com,sewmuchado.com,sewnikki.com,sewrella.com,sewsomestuff.com,sewwhatalicia.com,sfat4582testa.com,shabbyfufu.com,shadesofblueinteriors.com,shadesofsummr.com,shadowverse.gg,shakedrinkrepeat.com,shakentogetherlife.com,shaneandsimple.com,shanty-2-chic.com,shapeandjoy.com,shapinguptobeamom.com,sharepointdiary.com,sharingkindergarten.com,sharksider.com,sharksinfo.com,sharktankblog.com,sharktankrecap.com,sheaffertoldmeto.com,sheepandstitch.com,sheetaki.com,shelfcooking.com,shelikesmilk.com,shetriedwhat.com,shinesheets.com,shiplapandshells.com,shoforum.com,shooting.org,shoppingtelly.com,shoppingwithdave.com,shorebeat.com,shortgirltallorder.com,shortstackkitchen.com,shotkit.com,shottalk.com,shouldwewatch.com,shoutoutarizona.com,shoutoutatlanta.com,shoutoutcolorado.com,shoutoutdfw.com,shoutouthtx.com,shoutoutla.com,shoutoutmiami.com,shoutoutsocal.com,shoutoutsouthcarolina.com,showstarnews.com,shuangyskitchensink.com,shuttermuse.com,shwetainthekitchen.com,siepracticeexam.com,siftandsimmer.com,siftwithkima.com,sightandsoundreading.com,sightwordsgame.com,silkroadrecipes.com,silodrome.com,silverhomestead.com,silverrecyclers.com,simguided.com,simmerandsage.com,simple-nourished-living.com,simple-veganista.com,simple.money,simpleandfraiche.com,simpleasthatblog.com,simplebakingwithjolene.com,simplecarguides.com,simplecopycatrecipes.com,simpledesserts.com,simpleediy.com,simpleeverydaymom.com,simplefunforkids.com,simplegreenmoms.com,simplegreensmoothies.com,simplehealthykitchen.com,simplejoy.com,simplemadepretty.com,simpleshowing.com,simplesidedishes.com,simplesimonandco.com,simpleveganbites.com,simpleveganblog.com,simplicityandastarter.com,simplifyplants.com,simplisticallyliving.com,simply-delicious-food.com,simplybakings.com,simplybeyondherbs.com,simplycanning.com,simplyceecee.co,simplycollectiblecrochet.com,simplyhappenings.com,simplyhappyfoodie.com,simplyhealthyfamily.org,simplyhomeandhealth.com,simplyhomecooked.com,simplyhookedbyjanet.com,simplyjillicious.com,simplykinder.com,simplylakita.com,simplylovecoloring.com,simplylowcal.com,simplymacros.com,simplymadeeats.com,simplymaggie.com,simplyquinoa.com,simplyrebekah.com,simplyscratch.com,simplyscratchmade.com,simplystacie.net,simplytaralynn.com,simplywhisked.com,simscommunity.info,simshomekitchen.com,sincerelysarad.com,sinfulkitchen.com,sinfullyspicy.com,singaporeanmalaysianrecipes.com,singingcarrots.com,sipandfeast.com,sipbitego.com,sixdollarfamily.com,sixfiguresunder.com,sixhungryfeet.com,sixmanfootball.com,sixtyandme.com,sixvegansisters.com,sizzlingeats.com,sketchok.com,skidsteerforum.com,skilledgolf.com,skillscouter.com,skincarehero.com,skinnyfitalicious.com,skinnykitchen.com,skinnyms.com,skinnysouthernrecipes.com,skinnytaste.com,skiptomylou.org,skoolie.net,skoolielivin.com,skytough.com,slapdashmom.com,slashfilm.com,slashgear.com,slateauto.forum,sleepbubble.com,sleeping.guide,slenderkitchen.com,slippertalk.com,slopitchcentral.com,slowcookedeats.com,slowcookerclub.com,slowcookerfoodie.com,slowcookerliving.com,slowcookermeals.com,slowcookingperfected.com,slowlivingkitchen.com,slowthecookdown.com,smallfootprintfamily.com,smalltownwoman.com,smartbikegames.com,smartcanucks.ca,smartcentsmom.com,smartdoglover.com,smartdrivinggames.com,smartfundiy.com,smartgardenguide.com,smartmoneysimplelife.com,smartnutrition.ca,smartringnews.com,smartschoolhouse.com,smarttereachday.com,smellylunchbox.com,smilingcolors.com,smitefire.com,smithspestmanagement.com,smokedbbqsource.com,smokinandgrillinwitab.com,smoking-meat.com,smokingmeatforums.com,smoothdraw.com,sn95forums.com,snackhistory.com,snacknation.com,snailpacetransformations.com,snap.fan,snaphappytravel.com,snappygourmet.com,sneakerfiles.com,sneakerfortress.com,snippetsofparis.com,snootysims.com,snowboardhow.com,snowbreak.gg,snowest.com,snowmobilehow.com,soapcentral.com,soapdelinews.com,soapmakingforum.com,soapoperadigest.com,soapoperamagazine.com,soapoperanetwork.com,soapoperaspy.com,soapsindepth.com,soberjulie.com,socalhiker.net,socaltrailriders.org,soccerballworld.com,socialadventures.net,socialjunkie.com,societyofrock.com,softballace.com,soho.com.au,sokoskitchen.com,soletshangout.com,solveyourtech.com,somebodyfeedseb.com,somethingaboutsandwiches.com,somethingborrowedpdx.com,somethingnutritiousblog.com,somewhatsimple.com,somewhatsimpleliving.com,somewhereworthwhile.com,somuchbetterwithage.com,somuchfoodblog.com,somuchlife.com,sonatahomedesign.com,songbirdblog.com,songmeaningsandfacts.com,soreyfitness.com,soulcysters.net,soulfoodcooking101.com,soulfullymade.com,soulsisterstravel.com,soundgearnerd.com,soundproofcentral.com,soupaddict.com,sourceofthespring.com,sourdoughbrandon.com,sourdoughjesha.com,sourdoughtalk.com,southcarolinavoyager.com,southernbite.com,southerncastiron.com,southerncrushathome.com,southerndakotamama.com,southerndiscourse.com,southernhomemagazine.com,southernhospitalityblog.com,southernladymagazine.com,southernmadesimple.com,southernplate.com,southgeorgiastyle.com,southhousedesigns.com,souvlakiforthesoul.com,soxmachine.com,spacechatter.com,spacequotations.com,spanishmama.com,spanishsabores.com,sparklesofsunshine.com,spatuladesserts.com,speedyrecipe.com,spellmana.com,spendwithpennies.com,spguides.com,spiceandlife.com,spicebangla.com,spicecravings.com,spicedblog.com,spiceography.com,spiceupthecurry.com,spicysouthernkitchen.com,spideridentifications.com,spidersworlds.com,spinachandbacon.com,spiritanimaldreams.com,spiritanimalsandsymbolism.com,spiritanimaltest.org,spiritualhack.com,spiritualmeanings.org,spoonforkbacon.com,spoonfulofflavor.com,spoonfulofsi.com,sporked.com,sportscardforum.com,sportsfeelgoodstories.com,sportsfoundation.org,sportsgamersonline.com,sportsmansparadiseonline.com,sportsmobileforum.com,sportsmomsurvivalguide.com,sportstalkatl.com,sporttrac.org,spotebi.com,spotifystats.com,spottedhorsedesignco.com,spreadsheetpage.com,spreadsheetpoint.com,sprinklebakes.com,sprinkleofthis.com,sprinklesandsprouts.com,sprinklesomesugar.com,sproutedkitchen.com,sqlserverguides.com,squeaksandnibbles.com,squirrelsatthefeeder.com,stacylynharris.com,stadiumrant.com,stageagent.com,stageberry.com,stagnes.net,star-facts.com,starbucks-calorie-calculator.com,starbuckssecretmenu.net,stardewguide.com,starlinkinsider.com,starlust.org,startdesigngroup.com,starterstory.com,startup101.com,starwarsforum.co.uk,starwarsunlimited.gg,stateofdinner.com,static.com,statisticsglobe.com,statsalt.com,statscrew.com,status.net,statz.gg,stayfitmom.com,stayglam.com,steamandbake.com,steampoweredfamily.com,steelersdepot.com,steelersreport.com,steerplanet.com,stellanspice.com,stemandspoon.com,stepbystepbusiness.com,stephaniessweets.com,stephiecooks.com,stephreallife.com,stephsocial.com,stephsunshine.com,stepstomagic.com,stereogum.com,stetted.com,sticktothemodel.com,stillbeingmolly.com,stillrealtous.com,stitch11.com,stitchbyfay.com,stitching-together.com,stockcharts.com,stockpilingmoms.com,stocktitan.net,stocktrades.ca,stonegableblog.com,storyberries.com,storylandamis.blog,storyofmathematics.com,strandsgame.me,strategiesforparents.com,streamersplaybook.com,streamscheme.com,streetsmartnutrition.com,streetstylis.com,streetsweepingschedule.com,strengthandsunshine.com,stressfreemommies.com,stretchandfolds.com,strictlyweddings.com,stripedspatula.com,strongpasswordgenerator.org,strongsounds.com,stuckonsweet.com,studentdevos.com,studentofguitar.com,studio73designsnb.com,studyfinds.com,studyrocket.co.uk,stuffparentsneed.com,stylebyemilyhenderson.com,stylegirlfriend.com,stylinbyaylin.com,stylinbysarita.com,stylishcelebrations.com,stylishcurves.com,sublimereflection.com,suburbansimplicity.com,succulentcity.com,suebeehomemaker.com,sueseaqpi.com,sufficientself.com,sugarandcharm.com,sugarandsnappeas.com,sugarandsoul.co,sugarandsparrow.com,sugarapron.com,sugarbeecrafts.com,sugarfreelondoner.com,sugargeekshow.com,sugarhero.com,sugarlesscrystals.com,sugarmaplefarmhouse.com,sugarologie.com,sugarsaltmagic.com,sugarspunrun.com,sugaryums.com,suitsexpert.com,sulaandspice.com,summeryule.com,summle.net,sundayschoolzone.com,sundaysuppermovement.com,sungrownkitchen.com,sunheron.com,sunkissedkitchen.com,sunlineclub.com,sunnydayfamily.com,sunrisespecialty.com,sunshineandhurricanes.com,superage.com,supercarnostalgia.com,supercars.net,supercheats.com,superdutydiesel.com,supereslresources.com,supergoldenbakes.com,superhealthykids.com,superherojacked.com,supermanhomepage.com,superwestsports.com,supplyme.com,sureketo.com,surf-reports.com,surfacetip.com,surfhungry.com,surveychris.com,survivalsullivan.com,survivedivorce.com,survivingateacherssalary.com,survivingthestores.com,sustainablecooks.com,sustainablereview.com,sustainlifejournal.com,sustainmycookinghabit.com,sustainmycrafthabit.com,suzyssitcom.com,svadore.com,svg.com,svgandme.com,svgnation.com,swaddlesnbottles.com,swankyrecipes.com,sweetandsavorybyshinee.com,sweetandsavorymeals.com,sweetandsimpleliving.com,sweetashoney.co,sweetcaramelsunday.com,sweetcreekpatterns.com,sweetcsdesigns.com,sweetestmenu.com,sweetkitchencravings.com,sweetlittlebluebird.com,sweetlycakes.com,sweetlysplendid.com,sweetopia.net,sweetpealifestyle.com,sweetpeasandsaffron.com,sweetpeaskitchen.com,sweetphi.com,sweetpotato3.com,sweetpotatosoul.com,sweetsandthankyou.com,sweetscienceoffighting.com,sweetsimplevegan.com,sweetsofties.com,sweetsugarbelle.com,sweetteaandthyme.com,sweettheorydesigns.com,sweettoothsweetlife.com,swgoh.gg,switzerlanding.com,swoonhub.com,swtorista.com,syllablecounter.io,symbolsage.com,symbolsandsynchronicity.com,syzygist.com##+js(remove-node-text, script, /"__adblocker"|"data-sdk"/) +tablefortwoblog.com,takeayard.com,talesfromthekitchenshed.com,talesofthemiddleages.com,talkandroid.com,talkbass.com,talksox.com,tamatalk.com,tammileetips.com,tampabaydatenightguide.com,tampabayparenting.com,tanga.com,tanningsalonsnearme.com,tarantulaforum.com,tarateaspoon.com,tarathueson.com,tarotforum.net,tarotgoddess.com,tarynwhiteaker.com,tashasartisanfoods.com,tasteandtellblog.com,tastefullygrace.com,tasteofartisan.com,tasteoflithuania.com,tasteofreality.com,tasteofthesouthmagazine.com,tastesbetterfromscratch.com,tasteslovely.com,tastesoflizzyt.com,tastingtable.com,tastingtothrive.com,tastingwithtina.com,tasty-yummies.com,tastyairfryerrecipes.com,tastycocktailrecipes.com,tastyoven.com,tastyrecollections.com,tastythin.com,tastytreatsandeats.com,tattooglee.com,tatyanaseverydayfood.com,tbirdforum.com,tcdb.com,tdalabamamag.com,tdeecalculator.me,teaandinksociety.com,teachbesideme.com,teaching2and3yearolds.com,teachingautism.co.uk,teachingmama.org,teachjunkie.com,teachpreschool.org,teaforturmeric.com,teakandthyme.com,teamfight.lol,teaspoonofgoodness.com,teatimemagazine.com,tech21century.com,techcrawlr.com,techguided.com,techjunkie.com,technipages.com,technologydots.com,techpenny.com,techrt.com,techsiting.com,techwiser.com,techwithtech.com,tecmint.com,teds-list.com,tegutalk.com,tellmemoregolf.com,temeculablogs.com,temptalia.com,tenacrebaker.com,tenniscompanion.org,tennisworldusa.org,tenrowsaday.com,tequilaoclock.com,terianncarty.com,terilynadams.com,territorysupply.com,teslanorth.com,tessiestable.com,texanerin.com,textfixer.com,tflcar.com,tfltruck.com,tftibbq.com,thai-foodie.com,thaicaliente.com,thatbreadlady.com,thatdisneyfam.com,thatfoodiegirl.in,thatgirlcookshealthy.com,thatguywhogrills.com,thatlowcarblife.com,thatonepointofview.com,thatoregonlife.com,thatslowcarb.com,thatsmycrystal.com,thatspicychick.com,thatswhatchesaid.net,thattravel.co.uk,thatveganbabe.com,thatvideogameblog.com,the-bella-vita.com,the-digital-picture.com,the-girl-who-ate-everything.com,the-social-edge.com,the-sound.co.uk,the-take.com,the-travel-life.com,the36thavenue.com,the5krunner.com,theadultman.com,theadventuresatlas.com,theairfryingdiva.com,theallergychef.com,thealmondeater.com,theaquariumguide.com,theartofdoingstuff.com,theartofsimple.net,theatrenerds.com,theatretrip.com,theawesomegreen.com,thebakeologie.com,thebakermama.com,thebakerupstairs.com,thebakingchocolatess.com,thebalancednutritionist.com,thebananadiaries.com,thebarbell.com,thebargainsisters.com,thebatavian.com,thebathroomblueprint.com,thebaynet.com,thebazaarzone.com,thebeachhousekitchen.com,thebearfootbaker.com,thebellyrulesthemind.net,thebenchtrading.com,thebensonstreet.com,thebestcakerecipes.com,thebestideasforkids.com,thebestketorecipes.com,thebestkidscraftsandactivities.com,thebestmods.com,thebetteredblondie.com,thebettermom.com,thebigmansworld.com,theblogette.com,theblokecave.co.uk,theblondcook.com,theboldabode.com,theboondocksblog.com,thebossykitchen.com,thebourbonculture.com,thebreadguide.com,thebudgetbabe.com,thebudgetdecorator.com,thebudgetmom.com,thebudgetsavvybride.com,thebugsquad.com,theburntbuttertable.com,thebusybaker.ca,thebutteryfairytale.com,thecafesucrefarine.com,thecaffeinatedsnail.com,thecaglediaries.com,thecakeblog.com,thecalculatorsite.com,thecambridgeconsultant.com,thecandidcooks.com,thecandidly.com,thecardswedrew.com,thecarefreekitchen.com,thecarmomofficial.com,thecarnivalcruiseblog.com,thecarrotunderground.com,thecastawaykitchen.com,thecatsite.com,thecellguide.com,thecentsableshoppin.com,thecentsofmoney.com,thechaosandtheclutter.com,thechaotictable.com,thecheekychickpea.com,theclassicvaluer.com,theclassroomcreative.com,thecleaneatingcouple.com,theclevercarrot.com,theclevermeal.com,thecoconutmama.com,thecoldwire.com,thecollector.com,thecollegeinvestor.com,thecomicboard.com,theconscientiouseater.com,theconsciousplantkitchen.com,thecontentauthority.com,thecookful.com,thecookiedoughdiaries.com,thecookierookie.com,thecookinchicks.com,thecookingcollective.com.au,thecookingduo.com,thecookingfoodie.com,thecookingjar.com,thecookingmom.com,thecoppertable.com,thecottagejournal.com,thecottagemarket.com,thecountrycook.net,thecouponchallenge.com,thecozyapron.com,thecozyfork.com,thecozyplum.com,thecpuguide.com,thecraftathomefamily.com,thecraftedsparrow.com,thecraftingchicks.com,thecraftingnook.com,thecraftpatchblog.com,thecraftsmanblog.com,thecrafttrain.com,thecraftyblogstalker.com,thecravetraveler.com,thecrazycraftlady.com,thecreameri.com,thecreativecurator.com,thecreativefolk.com,thecreativemuggle.com,thecreativeshour.com,thecreativityexchange.com,theculinarycompass.com,thedailypour.com,thedailyview.com,thedaringkitchen.com,thedarlingapron.com,thedebrief.org,thedefineddish.com,thedeliciouscrescent.com,thedeliciousspoon.com,thedetroitbureau.com,thediaryofadisneydad.com,thediaryofarealhousewife.com,thediggings.com,thedigitalcrowns.com,thedinkpickleball.com,thedinnerbite.com,thediyplaybook.com,thediyvillage.com,thedizzycook.com,thedomesticrebel.com,thedrinkkings.com,thedroidguy.com,theeastcoastkitchen.com,theeasygarden.com,theeburgerdude.com,theedgyveg.com,theeducatorsroom.com,theendlessappetite.com,theendlessmeal.com,theepicureanmouse.com,theeverylastdetail.com,thefamilyfoodkitchen.com,thefamilyfreezer.com,thefamousbirthdays.com,thefarmchicken.com,thefashionablehousewife.com,thefastrecipe.com,thefeatherednester.com,thefedoralounge.com,thefemaleprofessional.com,thefieryvegetarian.com,thefilmbandit.com,thefinalfrontier.us,thefinancebuff.com,thefirstmess.com,thefirstyearblog.com,thefitchen.com,thefitnessphantom.com,thefitnesstribe.com,thefitpeach.com,theflattopking.com,theflavorbender.com,theflavoursofkitchen.com,theflexitarian.co.uk,thefloridatravelgirl.com,thefoodcafe.com,thefoodcharlatan.com,thefoodhussy.com,thefoodieaffair.com,thefoodieblogger.com,thefoodietakesflight.com,theforgottensouth.com,theforkedspoon.com,thefpsreview.com,thefreshcooky.com,thefriendlyredfox.com,thefrugalchicken.com,thefrugalgirls.com,thefrugalhomemaker.com,thefruityjem.com,thefullhelping.com,thegamecrater.com,thegameslayer.com,thegardenglove.com,thegardengrazer.com,thegardeningdad.com,thegardeningfoodie.com,thegarlicdiaries.com,thegatheredhome.com,thegayglobetrotter.com,thegeneticchef.com,thegimptutorials.com,thegirlinspired.com,thegirlonbloor.com,theglamkitchen.com,theglampad.com,theglobalgaming.com,theglowingfridge.com,theglucosegourmet.com,theglutenfreeaustrian.com,thegoldfishtank.com,thegoldhive.com,thegoodgermanshepherd.com,thegoodride.com,thegraciouspantry.com,thegraciouswife.com,thegradcafe.com,thegrapepursuit.com,thegraphicsfairy.com,thegraydetails.com,thegreekfoodie.com,thegreenpinky.com,thegritandpolish.com,thegrumpymechanic.com,thegunnysack.com,thegymlab.org,thehandmadehome.net,thehappierhomemaker.com,thehappycatsite.com,thehappychickencoop.com,thehappyfarmhouse.com,thehappyhousewife.com,thehappyhousie.com,thehappypuppysite.com,theharperhouse.com,theharristeeterdeals.com,theharvestkitchen.com,thehawaiivacationguide.com,thehealthfulideas.com,thehealthyconsultant.com,thehealthyepicurean.com,thehealthyhomecook.com,thehealthyhomeeconomist.com,thehealthyhoneys.com,theheartylife.org,theheirloompantry.co,thehiddenveggies.com,thehistoryofwwe.com,thehivelaw.com,theholidazecraze.com,thehollydogblog.com,theholymess.com,thehomebrewforum.co.uk,thehomecookskitchen.com,thehomeedit.com,thehomeschoolmom.com,thehomeschoolscientist.com,thehomesihavemade.com,thehomesteadinghippy.com,thehoneyhome.com,thehonoursystem.com,thehoopsgeek.com,thehouseoffancy.com,thehouseofsmiths.com,thehousethatlarsbuilt.com,thehoya.com,thehumbledhomemaker.com,thehungrybites.com,thehungrysoles.com,thehybridathlete.com,thehyundaiforums.com,theidearoom.net,theimaginationtree.com,theimpulsivebuy.com,theincrediblebulks.com,theinformr.com,theinspirationboard.com,theinspiredroom.net,theinspiredtreehouse.com,theintentionalmom.com,theirishmanswife.com,thejoysharing.com,thejoysofboys.com,thejudge13.com,thekeeperofthecheerios.com,thekeeperofthememories.com,thekimsixfix.com,thekindergartenconnection.com,thekitchengirl.com,thekitchenmagpie.com,thekitchenpaper.com,thekoreanvegan.com,thelabradoodlesite.com,thelabradorforum.com,thelabradorsite.com,thelastfoodblog.com,thelavenderchair.com,thelazydish.com,theleftrough.com,thelemonbowl.com,theletteredcottage.net,thelibertyline.com,thelifejolie.com,thelifestylecure.com,thelilypadcottage.com,thelist.com,theliterarylifestyle.com,thelittleblogofvegan.com,thelittleepicurean.com,thelittlepine.com,theliveinkitchen.com,theloopholefox.com,theloopylamb.com,theloopywhisk.com,themagicalslowcooker.com,themakerista.com,themakeyourownzone.com,themamahandbook.com,themarblekitchen.com,thematbakh.com,thembites.com,themediterraneandish.com,themeparkinsider.com,themeparkreview.com,themerrythought.com,themiddlesizedgarden.co.uk,themilitarywifeandmom.com,themilliondollarmama.com,theminimalistvegan.com,themiracleofessentialoils.com,themoderngram.com,themodernnonna.com,themodernproper.com,themodestman.com,themodestmomblog.com,themom100.com,themomcreative.com,themomfriend.com,themomnutritionist.com,themontessoritwinmama.com,themorrismansionblog.com,themountainkitchen.com,themountainviewcottage.net,themovementmenu.com,themuse.com,themusicman.uk,thenaturalnurturer.com,thenavagepatch.com,thenerdstash.com,thenerdyfarmwife.com,thenetline.com,thenewbaguette.com,thenewcamera.com,thenewknew.com,thenicolechase.com,thenightowlchef.com,thenodramamama.com,thenoise.com,thenourishinggourmet.com,thenourishinghome.com,thenovicehomestead.com,thenwewalked.com,thenymelrosefamily.com,theoi.com,theoldhouselife.com,theoliveroad.com,theoregondietitian.com,theorganisedhousewife.com.au,theottoolbox.com,theoutbound.com,thepalatablelife.com,thepancakeprincess.com,theparentsflewthenest.com,thepastaqueen.cooking,thepeachiespoon.com,thepeasantsdaughter.net,theperfectfrench.com,theperfectloaf.com,thepetiteplanner.com,thepeugeotforums.com,thephotoforum.com,thepinningmama.com,thepinterestedparent.com,theplanetd.com,theplantbasedschool.com,theplantnative.com,thepointsinsider.com,thepondsfarmhouse.com,thepopularlist.com,thepopupprincess.com,theppk.com,thepragmaticparent.com,theprettybee.com,theprimaryparade.com,theproductanalyst.com,theprofitupdates.com,thepuppymag.com,thepurpleponcho.com,thepurplepumpkinblog.co.uk,thepurposefulpantry.com,thequeenzone.com,theramblingredhead.com,therapybypro.com,therapyfunzone.net,therealfarmhouse.com,therealfooddietitians.com,therealisticmama.com,thereallife-rd.com,therealrecipes.com,therebelwalk.com,therecipecritic.com,therecipelife.com,therecipepot.com,thereciperebel.com,therecipewell.com,theredcarpet.net,thereisfoodathome.com,thereptileroom.net,theresaneoforthat.com,theresearchedtraveler.com,thereviewgeek.com,theriagames.com,therideshareguy.com,thermo.kitchen,thermocookery.com,thermomixdivarecipes.com,theroastedroot.net,therookiejurist.com,therootedfarmhouse.com,theroyalcourtofpasta.com,theroyalforums.com,theroyalobserver.com,therugbyforum.com,theruntesters.com,thesaltedsweets.com,thesaltycooker.com,thesaltymarshmallow.com,thesaltypot.com,thesaltysarge.com,thesassybarn.com,thesaturnforums.com,thesavorychopstick.com,thesavvysparrow.com,thesawguy.com,thescattymum.com,thescranline.com,theseamanmom.com,theseasonalhomestead.com,theseasonedmom.com,theseasonedwok.com,thesecretofthetarot.com,theseoldcookbooks.com,thesewingloftblog.com,theshabbycreekcottage.com,theshabbytree.com,theshaderoom.com,theshadowleague.com,thesimpleparent.com,thesimplycraftedlife.com,thesimplyluxuriouslife.com,theskeletalsystem.net,theskinnyishdish.com,theskinnypot.com,theslenderwrist.com,theslimmingfoodie.com,thesmokies.com,thesoapscoop.com,thesoccermomblog.com,thesologlobetrotter.com,thesouthernladycooks.com,thespacebetweenblog.net,thespeckledpalate.com,thespiritualindian.com,thesportsrush.com,thesqueakymixer.com,thestayathomechef.com,thestemlaboratory.com,thestingyvegan.com,thestitchinmommy.com,thestonesoup.com,thestressfreechristmas.com,thestrive.co,thesubaruforums.com,thesuburbanmom.com,thesugarfreediva.com,thesugarhit.com,thesundaymorningedit.com,thesurfatlas.com,thesurvivalmom.com,thesustainablelivingguide.com,thesweetsimplethings.com,thetabletopfamily.com,thetakeout.com,thetalkingsuitcase.com,thetarotguide.com,thetastytravelers.com,thetaylor-house.com,theteacherscorner.net,thetechwire.com,theteenmagazine.com,thethingswellmake.com,thethriftycouple.com,thetimelinegeek.com,thetinylife.com,thetoastedpinenut.com,thetrendspotter.net,theturkeytraveler.com,theturquoisehome.com,thetwincookingproject.net,thetwobiteclub.com,thetwordtravel.com,theunbox.com,theunconventionalroute.com,theuncorkedlibrarian.com,theunsealed.com,theurbenlife.com,theveganlarder.com,theveglife.com,thevegspace.co.uk,thevetdesk.com,thevgnway.com,theviewfromgreatisland.com,thevintagecook.com,thevivalavita.com,thevolvoforums.com,thevspotblog.com,thewanderfulme.com,thewanderlustkitchen.com,thewanderlustwithin.com,thewave.ca,thewaystowealth.com,theweathereddoor.com,theweatheredfox.com,theweeklyad.com,theweighwewere.com,thewhiskeyjug.com,thewholecook.com,thewholesomedish.com,thewimpyvegetarian.com,thewoksoflife.com,thewoodenskillet.com,thewoodgraincottage.com,thewordcounter.com,theworkathomewife.com,theworkathomewoman.com,theworldbucketlist.com,theyarethefuture.co.uk,theyarncrew.com,theyummybowl.com,theyummydelights.com,theyummylife.com,thezag.com,thinbluefoods.com,thinkingcloset.com,thirtyhandmadedays.com,thisbagogirl.com,thisdelicioushouse.com,thisdishisvegetarian.com,thisevergreenhome.com,thisfarmgirlcooks.com,thishealthykitchen.com,thisishowwebingham.com,thisisraleigh.com,thisisreno.com,thisitaliankitchen.com,thisjess.com,thislittlehome.com,thismessisours.com,thisoldbaker.com,thisorganicgirl.com,thispilgrimlife.com,thispixiecreates.com,thisreadingmama.com,thissavoryvegan.com,thissillygirlskitchen.com,thistlewoodfarms.com,thisvivaciouslife.com,thisweekinworcester.com,thiswortheylife.com,thorforums.com,thoroughlytravel.com,thought.is,thoughtcard.com,thoughtcatalog.com,threadsmonthly.com,threebirdnest.org,threekidsthreecatsandahusband.com,thriftydecorchick.com,thriftydiydiva.com,thriftyfrugalmom.com,thriftynomads.com,thriftynorthwestmom.com,thriftytraveler.com,thrivestrive.com,thriving-glutenfree.com,thrivinghomeblog.com,thrivinginparenting.com,thrivingmum.com,throttlepack.com,throughthefibrofog.com,thunderboltlaptop.com,thurrott.com,thymeandjoy.com,tiaclara.com,ticoandtina.com,ticotimes.net,tidbits-cami.com,tidbitsandtwine.com,tidefans.com,tideking.com,tideschart.com,tidymom.net,tiffanymccauley.com,tiffinandteaofficial.com,tiffycooks.com,tighttorque.com,tikvica.com,timefordelish.com,timelessdishes.org,timelessmyths.com,timelylists.com,timothyplivingston.com,tinboats.net,tinkerlab.com,tinyhomeforums.com,tinyhousetalk.com,tinytotintokyo.com,tipbuzz.com,tipjunkie.com,tipranks.com,tipsaholic.com,titlecaseconverter.com,tjrwrestling.net,tlycblog.com,tmcadaptations.net,todaysdelight.com,todaysgardener.com,todaysthebestday.com,toddlerapproved.com,toddlerdietitiantiff.com,togetherasfamily.com,tokaiforum.com,tokyohive.com,tolstoytherapy.com,tomahawkleader.com,tomakeamommy.com,tomtomforums.com,tonsofthanks.com,toolsofmen.com,toolsweek.com,top-ten-travel-list.com,top40weekly.com,topairfryerrecipes.com,topdogtips.com,tophotsprings.com,topsecretrecipes.com,topshelfdiy.com,topsoccerblog.com,toptierlist.net,toptreehouses.com,topweddingsites.com,tornadopath.com,tortoiseforum.org,tortoiseknowledge.com,toshistable.com,totallygoldens.com,totallythebomb.com,tothotornot.com,totschooling.net,toucharcade.com,touchdowntexas.com,touringplans.com,towingcap.com,town-n-country-living.com,townandtourist.com,towratings.net,toyhabits.com,toysnbricks.com,tprteaching.com,trackmustangsonline.com,tractorbynet.com,traderie.com,traegerforum.com,trailboss.org,trailmanorowners.com,trainfanatics.com,transizion.com,trashschedules.com,travel-mi.com,travel-on-points.com,travelawaits.com,travelcaffeine.com,traveler.gg,travelfashiongirl.com,travelingfamilyblog.com,travelingigloo.com,travelingjules.com,travelingness.com,travelingossip.com,travelingwithjessica.com,travellemming.com,travellerselixir.com,travelmath.com,travelmelodies.com,travelmexicosolo.com,traveltomerida.com,traveltooaxaca.com,traveltrailerpro.com,travelwithmeena.com,traversewithtaylor.com,trawlerforum.com,treadmill.run,treasuredtips.com,treasurenet.com,treasurie.com,trekbible.com,trendingbreeds.com,triadmomsonmain.com,triedandtasty.com,triedandtrueblog.com,triedandtruerecipe.com,tripmemos.com,trippy.com,triumphtalk.com,triviabliss.com,trlnfam.com,troprockin.com,truckconversion.net,truckmodcentral.com,true-north-kitchen.com,truemoneysaver.com,truesourdough.com,truity.com,trumpexcel.com,trvlcollective.com,trvst.world,trx-forum.com,tryhardguides.com,trythisanswer.com,tsipracticetest.com,tucsonfoodie.com,tulamama.com,tun.com,tuner.ninja,tuppennysfireplace.com,turbli.com,turkishliving.com,turkuazkitchen.com,turningforprofit.com,turntablekitchen.com,tutti-dolci.com,tvfoodmaps.com,tvline.com,tvovermind.com,tvtotalkabout.com,twelveonmain.com,twinsdaily.com,twistandtoast.com,twistmepretty.com,twobrokewatchsnobs.com,twobrothersblankets.com,twocloveskitchen.com,twocupsflour.com,twokooksinthekitchen.com,twoluckyspoons.com,twomonkeystravelgroup.com,twoofwands.com,twopeasandtheirpod.com,twoplaidaprons.com,twopurplefigs.com,twosisterscrafting.com,twospoons.ca,twotwentyone.net,twsn.net,tycorenetwork.com,typerush.com,typinggames.zone,tysonsreporter.com##+js(rmnt, script, /"__adblocker"|"data-sdk"/) +u-createcrafts.com,uglyducklingbakery.com,uglyducklinghouse.com,umamidays.com,umamigirl.com,umamusume.gg,unboundwellness.com,unclutteredsimplicity.com,uncomplicatedchef.com,unconventionalbaker.com,uncorkedasheville.com,uncovercolorado.com,uncovered.com,uncovervietnam.com,undefiningmotherhood.com,undergroundcrafter.com,unefemme.net,unexpectedelegance.com,unicode-explorer.com,unicornsinthekitchen.com,unifycosmos.com,uniquedognames.net,unixmen.com,unleashedllc.co,unofficialnetworks.com,unoriginalmom.com,unpeeledjournal.com,unrulygardening.com,unscramble.me,unscramble.org,unscramblerer.com,unscramblewords.net,unscramblex.com,untoldrecipesbynosheen.com,upanddownwordsanswers.com,upbeetandkaleingitblog.com,upcyclemystuff.com,updweller.com,upliftingmayhem.com,upstateramblings.com,upworthy.com,urbanblisslife.com,urbancowgirllife.com,urbanfarmandkitchen.com,urbanfarmie.com,urbantastebud.com,urbo.com,usadventurer.com,usatodaycrosswordanswers.com,usethinkscript.com,utahsadventurefamily.com##+js(rmnt, script, /__adblocker|html-load/) +vaingloryfire.com,valentinascorner.com,valyastasteofhome.com,vancouverwithlove.com,vandymania.com,vanillaandbean.com,vanillabeancuisine.com,vanlifers.com,vanlivingforum.com,veenaazmanov.com,veganblueberry.com,veganderlust.com,veganfamilyrecipes.com,veganfoodlover.com,veganfoundry.com,veganreset.com,veganricha.com,veganwins.co.uk,veganyumminess.com,vegasfoodandfun.com,vegehomecooking.com,vegetablerecipes.com,veggiebalance.com,veggiehomesteading.com,veggieinspired.com,veggiekinsblog.com,veggiesociety.com,veggiessavetheday.com,veggl.com,vegrecipesofindia.com,ventureteambuilding.co.uk,veronikaskitchen.com,veryanxiousmommy.com,veryveganish.com,veteranslawblog.org,vettemod.com,vftt.org,vibrantguide.com,vibrantlygfree.com,vickypham.com,victoriaelizabethbarnes.com,victoriamag.com,vidarbergum.com,videochums.com,vidhyashomecooking.com,vietworldkitchen.com,viewalongtheway.com,vikalinka.com,vikingsnation.com,vincenzosplate.com,vindulge.com,vinodelvida.com,vintage-recipes.com,vintagekitchennotes.com,vintageleatherjackets.org,violacentral.com,viperclub.org,virtualdrumming.com,visagrader.com,visatraveler.com,vishakablone.com,visitdowntownnashville.com,visualcapitalist.com,visualfractions.com,vivaveltoro.com,vivcrochets.com,vivifytribe.com,vlhhealth.com,vloggerpro.com,vmaxforum.net,voicefilm.com,voronoiapp.com,voyageatl.com,voyageaustin.com,voyagebaltimore.com,voyagedallas.com,voyagedenver.com,voyagehouston.com,voyagekc.com,voyagela.com,voyagemia.com,voyagemichigan.com,voyageminnesota.com,voyageohio.com,voyagephoenix.com,voyageraleigh.com,voyagestl.com,voyagetampa.com,voyageutah.com,vssmonitoring.com,vtcoa.com##+js(rmnt, script, /__adblocker|html-load/) +wakeupandkale.com,walderwellness.com,walkingonsunshinerecipes.com,walletbliss.com,wallflowerkitchen.com,wandercooks.com,wandering-bird.com,wanderingcalifornia.com,wanderingchickpea.com,wanderingindisney.com,wanderingourworld.com,wanderlustingk.com,wandersomewhere.com,wanderthewest.com,wanderworthy.com,warbirdfanatics.com,warframe.today,watchers.news,waternitylab.com,watertemp.org,waupacanow.com,wavyhaircare.com,wdio.com,wdw-magazine.com,wdwmagic.com,wdwnt.com,wdwnt.jp,weairdown.com,wealthbytes.co,wealthup.com,wear-next.com,wearablyweird.com,wearemoba.com,wearychef.com,weathernj.com,webbikeworld.com,webdesignerdepot.com,webisjericho.com,webnewsobserver.com,webnots.com,webservertalk.com,weddingpioneer.com,weddlegame.com,weddleunlimited.com,weeatatlast.com,weekdaypescatarian.com,weekendatthecottage.com,weelicious.com,weightofstuff.com,weirdunsocializedhomeschoolers.com,weldingmastermind.com,welivedhappilyeverafter.com,wellfedbaker.com,wellnessbykay.com,wellnourished.com.au,wellplated.com,wellseasonedstudio.com,welovecatsandkittens.com,welovedoodles.com,wendaful.com,wendypolisi.com,wenthere8this.com,wepc.com,weraveyou.com,werefarfromnormal.com,wereintherockies.com,wereparents.com,weretherussos.com,werockyourweb.com,west-games.com,wethedryers.com,wetravelwebond.com,wgrv.com,whatagirleats.com,whatamomneeds.com,whatcanmydogeat.com,whatdowedoallday.com,whatdresscodeblog.com,whateatly.com,whatgreatgrandmaate.com,whatihavelearnedteaching.com,whatismyelevation.com,whatjewwannaeat.com,whatmollymade.com,whatnow.com,whatscookinchicago.com,whatsgabycooking.com,whatsinthepan.com,whatsmomcookin.com,whatsonglasgow.co.uk,whatthefroth.com,whattobecome.com,whattocooktoday.com,whattogetmy.com,wheatbythewayside.com,whec.com,wheel-decide.com,wheelndealmama.com,wheninyourstate.com,whereismyspoon.co,wheretianatravels.com,wheretogowithkids.co.uk,whereverwriter.com,whichyr.com,whipitlikebutter.com,whippedcreamsounds.com,whippeditup.com,whipperberry.com,whiskaffair.com,whiskeyriff.com,whiskeywatch.com,whiskingmama.com,whistleandivy.com,whiteandwoodgrain.com,whitehouseblackshutters.com,whitekitchenredwine.com,whitelacecottage.com,whitelightsonwednesday.com,whiteonricecouple.com,whiteoutdata.com,whitneybond.com,whofacts.com,wholeandheavenlyoven.com,wholefoodsoulfoodkitchen.com,wholefully.com,wholeheartykitchen.co.uk,wholekitchensink.com,wholelifestylenutrition.com,wholelottayum.com,wholenewmom.com,wholesomelicious.com,wholesomelymorgan.com,wholesomemadeeasy.com,wholesomepatisserie.com,wholesomeyum.com,wholesomeyumfoods.com,whollytasteful.com,whycalculator.com,wichitabyeb.com,wideopencountry.com,wideopenspaces.com,wifemamafoodie.com,wigrevival.com,wikiofthrones.com,wildbeeoutdoors.co.uk,wildernessredefined.com,wildernesstoday.com,wildexplained.com,wildfireinteriors.com,wildlifenomads.com,wildriftfire.com,wilkerdos.com,wilmade.com,win10faq.com,winbuzzer.com,windingcreekranch.org,windingroadcrochet.com,windowcleaningforums.co.uk,windowsdigitals.com,windowsdispatch.com,windowsreport.com,windowstip.com,winemakingtalk.com,wineturtle.com,winnersandwhiners.com,winnieowners.com,winning-homebrew.com,winsipedia.com,wintips.org,wired2fish.com,wisforwebsite.com,wishesndishes.com,witanddelight.com,witchyspiritualstuff.com,withinhours.com,withinthegrove.com,withthewoodruffs.com,wmdesignhouse.com,wnyt.com,womangettingmarried.com,womanscribbles.net,womansworld.com,women.com,womenlivingwell.org,wondercrochet.blog,wonderfuldiy.com,wondermomwannabe.com,wonderoak.com,wonkywonderful.com,woodimprove.com,woodshopdiaries.com,woodworkingtrade.com,woofbarkgrowl.co.uk,woonheng.com,word-craze.com,word-crossy.com,word-stacks.com,word500.com,wordbrain.info,wordcollectanswers.com,wordconnect.info,wordcookieanswer.com,wordcookies.info,wordcrushanswer.com,wordcrushanswers.com,worddb.com,wordfromthebird.blog,wordhikehelp.com,wordimpostor.com,wordl.org,wordmaker.info,wordnerd.co,wordonlinetips.com,wordsaladanswers.com,wordsaladgame.com,wordscapeshelp.com,wordscookiesanswers.com,wordsofdeliciousness.com,wordtrip.net,workkeyspracticetest.com,worksheetgenius.com,worksheetplace.com,worksheets-to-print.com,workweeklunch.com,workwithjoshua.com,worldbirds.com,worldboxingnews.com,worldclock.com,worldfootprints.com,worldhistory.org,worldhistoryedu.com,worldofblenders.com,worldofcardgames.com,worldofgardenplants.com,worldofpans.com,worldofprintables.com,worldpopulationreview.com,worldsalaries.com,worldwarwings.com,worldwildschooling.com,worthingcourtblog.com,wowclassicdb.com,wowdb.com,wrappedinrust.com,wrestlecrap.com,wrestleview.com,wrestling-world.com,wrestlinginc.com,wristenthusiast.com,writermag.com,writersedit.com,writerswrite.co.za,writingexercises.co.uk,writingtipsoasis.com,writtenreality.com,wutheringwaves.gg,wyseguide.com##+js(rmnt, script, /__adblocker|html-load/) +xoxobella.com##+js(rmnt, script, /__adblocker|html-load/) +yankeesnews.com,yarnandchai.com,yarnhookneedles.com,yarnutopia.com,yaycoloringpages.com,yayforyarn.com,yellowblissroad.com,yellowbrickhome.com,yetgamer.com,yogabasics.com,yogabytheday.com,yolopooch.com,yomotherboard.com,youbrewmytea.com,youcouldtravel.com,youhadmeatgardening.com,youngandtheinvested.com,younghouselove.com,yourastrologyreading.com,yourcupofcake.com,yourfirstvisit.net,yourfreecareertest.com,yourfriendthenomad.com,yourguardianchef.com,yourguidesabroad.com,yourhomebasedmom.com,yourlifestylelibrary.com,yourmodernfamily.com,yourmotorguide.com,yoursoundmatters.com,yourteenmag.com,yourtherapysource.com,youshouldgrow.com,youvegotthismath.com,ypi.com,ytravelblog.com,yummiestfood.com,yummyaddiction.com,yummyhealthyeasy.com,yummytoddlerfood.com,yummytummyaarthi.com,yupitsvegan.com,yuzubakes.com##+js(rmnt, script, /__adblocker|html-load/) +zardyplants.com,zenaskitchen.com,zenless.gg,zeroair.org,zeroglutenguide.com,zestforbaking.com,zestfulkitchen.com,zestuous.com,zhangcatherine.com,zimmysnook.ca,zipgameonline.com,zodiacfire.com,zoebakes.com,zonecoverage.com##+js(rmnt, script, /__adblocker|html-load/) +! Others +interestingengineering.com##+js(rmnt, script, /__adblocker|html-load/, excludes, self.__next) +thenerdstash.com##+js(acs, String.prototype.match, __adblocker, /^data:/) +! NOTE: Fora software +! network +||html-load.com^$xhr,script,domain=1000rr.net|10thcivicforum.com|1130cc.com|123easy4me.com|124spider.org|125ccsportsbikes.com|1911addicts.com|1911forum.com|1911talk.com|1919a4.com|2-seriesforum.com|2008ownersclub.co.uk|200forums.com|208ownersclub.co.uk|240sxforums.com|250r.net|2coolfishing.com|300cforums.com|300cforumz.com|350z-tech.com|355nation.net|360tuna.com|3800pro.com|3dprinterful.com|3dshoots.com|3si.org|4-seriesforums.com|460ford.com|4activetalk.com|4btswaps.com|4c-forums.com|4runner-forums.com|4thgentacoma.com|4xeforums.com|500xownersclub.co.uk|502streetscene.net|5thramforum.com|5thrangerforum.com|600rr.net|68forums.com|6mt.net|6thgenram.com|700rifle.com|718forum.com|790dukeforum.com|7thgenhonda.com|7thmustang.com|899panigale.org|8thcivic.com|959panigale.net|992forum.com|9thgencivic.com +||html-load.com^$xhr,script,domain=a1-forum.co.uk|a5oc.com|abarthforum.co.uk|acadiaforum.net|accordxclub.com|aceforums.net|acemanforum.com|aclassclub.co.uk|acrforum.com|acura-legend.com|acuraworld.com|adamownersclub.co.uk|adxtalk.com|afeelachat.com|africatwinforum.com|airflowforum.com|airsoftsniperforum.com|airsoftsociety.com|akff.net|alfabb.com|alfajuniorforum.com|alfaowner.com|allcoast.com|allcorsa.co.uk|allfordmustangs.com|alliancervforums.com|allpar.com|altimaforums.net|amarokforum.com|amazonastroforum.com|amrapideforum.com|antaraownersclub.com|antiquetractorsforum.com|applecarforum.com|applefitnessforum.com|aquariumforum.com|aquaticplantcentral.com|ar15forums.com|archeryaddix.com|archerytalk.com|arcticchat.com|ariyaforums.com|arizonagunowners.com|arizonahuntingforums.com|arkansashunting.net|armslocker.com|aronaforums.co.uk|arteonforums.com|artistforum.com|ascentforums.com|askandyaboutclothes.com|astonmartinlife.com|astrakforums.co.uk|astraownersnetwork.co.uk|astrosafari.com|at4xowners.com|atecaforums.co.uk|ats-v.org|atv-forum.com|atvdragracers.com|atvtorture.com|audi-forums.com|audif1forum.com|audiforum.us|audiq3forum.com|ausrc.com|aussieexotics.com|austinbassfishing.com|australiaforum.com|authenticforum.com|avengerforumz.com|avsforum.com|azbasszone.com +||html-load.com^$xhr,script,domain=b15sentra.net|b15u.com|babybmw.net|badgerowners.com|bapetalk.com|basketballforum.com|basset.net|bc4x4.com|bcaquaria.com|bcfishingreports.com|bcsportbikes.com|beaglesunlimited.com|beekeepingforums.com|beesource.com|benelliforum.com|benzforum.com|benzworld.org|bersaforum.com|bersapistolforum.com|bettafish.com|bigblockdart.com|bimmerfest.com|bimmerforums.co.uk|bimmerwerkz.com|blazerevforum.com|blowgunforum.com|blueovalfanatics.com|bluetraxx.com|bmaxownersclub.co.uk|bmw-driver.net|bmwevforum.com|bmwlt.com|booksworthdiscussing.com|bowfishingcountry.com|bowfishingforum.com|boxerforums.com|boxingforum.com|brightdropforum.com|broncoevforum.com|broncosporttalk.com|brutecentral.com|brutusforum.com|buceesfans.com|buelltalk.com|buickevforum.com|bulldogbreeds.com|bullnettlenews.com|burgmanusa.com|byd-forums.com|bzforums.com +||html-load.com^$xhr,script,domain=c-classforum.com|c10trucks.com|cactusforums.co.uk|cadenzaforum.com|cadillacforums.com|caferacer.net|caliberforums.com|caliberforumz.com|californiaevforum.com|camaros.net|camarozone.com|campercommunity.com|can-amelectric.com|can-amforum.com|can-amtalk.com|canadianmoneyforum.com|canamspyderforums.com|capriforum.com|capturownersclub.co.uk|caraudioclassifieds.org|carnivalforums.com|carolinafishtalk.com|carolinashootersclub.com|casecoltingersoll.com|catfish1.com|catforum.com|cattleforum.com|cayenneforums.com|cbr250.com|cbr250.net|cbr300forum.com|cbr500riders.com|cbrxx.com|ce02forum.com|celicasupra.com|cfmotoforums.com|challengerforumz.com|challengerlife.com|challengertalk.com|chargerforums.com|chargerforumz.com|checkhookboxing.com|cheftalk.com|cherokeesrt8.com|cherokeetalk.com|chevelles.com|chevroletownersclub.co.uk|chevyblazer.org|chevybolt.org|chevymalibuforum.com|cheyennechat.com|chicagolandfishing.com|chicagolandsportbikes.com|chickenforum.com|chiefmotorcycleforum.com|chihuahua-people.com|chinacarforums.com|chrforums.uk|chromebookforum.com|chryslerminivan.net|cichlid-forum.com|cigarforums.net|civic11forum.com|civinfo.com|cl500forum.com|clarityforum.com|classic-jdm.com|cleaningtalk.com|climbingforums.com|club3g.com|club4g.org|club700xx.com|clubarmada.com|clubcrosstrek.com|clubfrontier.org|clubroadster.net|clubrsx.com|clubsearay.com|clubtitan.org|clubtouareg.com|clubtread.com|clubwrx.net|clubxb.com|clubxterra.org|cmaxownersclub.co.uk|cmaxownersclub.com|cobaltss.com|coffeeforums.co.uk|coloradodiesel.org|coloradoevowners.com|coloradofans.com|coloradofisherman.com|coltforum.com|commanderforums.org|commandertalk.com|contractortalk.com|corollacrossforum.com|corral.net|corsa-c.co.uk|corsaeforums.co.uk|cretaforum.com|cricketforum.com|crossbownation.com|crosstourownersclub.com|crownforums.com|cruzetalk.com|crvownersclub.com|crxcommunity.com|crzforum.com|ct200hforum.com|ctsvowners.com|ctx1300forum.com|ctx700forum.com|cumminsforum.com|customdakotas.com|customfighters.com|custommagnums.com|customtacos.com|cx30talk.com|cx3forum.com|cx500forum.com|cx50forums.com|cx5forum.com|cx70forum.com|cx90forum.com|cyberquadforum.com|cybertrucktalk.com|cycleforums.com|cztalk.com +||html-load.com^$xhr,script,domain=d-series.org|daciaforum.co.uk|dairygoatinfo.com|dakota-durango.com|dakotaforumz.com|danieldefenseforums.com|daytonaowners.com|dbstalk.com|dealsforum.com|deerhuntersclub.com|defendersource.com|defensivecarry.com|dendroboard.com|desertxforum.com|detailingworld.co.uk|dfwstangs.net|diabetesforum.com|diavel-forum.com|diecastcrazy.com|diecastxchange.com|dieself150forum.com|dieselforums.com|dieseljeeps.com|dieselplace.com|dieselramforum.com|digitalcorvettes.com|digitalhome.ca|dippy.org|discosportforums.co.uk|discoverysport.net|diychatroom.com|diyelectriccar.com|diymobileaudio.com|dobermantalk.com|dodge-dart.org|dodge-nitro.com|dodgedartforumz.com|dodgedurango.net|dodgeevforum.com|dodgeintrepid.net|dodgetalk.com|dogfoodchat.com|dogforum.com|dogforums.com|dootalk.com|dpselfhelp.com|driveaccord.net|drywalltalk.com|ds450hq.com|ds4ownersclub.co.uk|dsmtalk.com|ducati.ms|ducati.org|ducatimonster.org|ducatiscramblerforum.com|ducatisupersport939.net|duckhuntingchat.com|duramaxforum.com|durangoforumz.com +||html-load.com^$xhr,script,domain=e-tronforum.com|e46fanatics.com|easttennesseefishing.com|ebikerforums.com|echelonforum.com|eclipsecrossforums.com|ecoboostmustang.org|ecosportforum.com|ecosportownersclub.co.uk|edsupportforum.com|ehmac.ca|elantraforum.com|elantragtforum.com|elantrasport.com|elantraxd.com|elcaminocentral.com|electriciantalk.com|electricmotorcyclesforum.com|elementownersclub.com|eliminatorforum.com|enclaveforum.net|envisionforum.com|envistaforum.com|epaceforum.com|epaceforums.co.uk|equinoxevforum.com|erayforums.com|escaladeevforum.com|escape-city.com|esportbike.com|esprinterforum.com|etransitforum.com|everestowners.com|everything2stroke.com|evoqueforums.net|evoqueownersclub.co.uk|evotuners.net|evoxforums.com|ex-500.com|ex30owners.com|ex90forum.com|expatforum.com|explorerevforum.com|explorertalk.com +||html-load.com^$xhr,script,domain=f-typeclub.com|f150ecoboost.net|f150forumz.com|f650.co.uk|f6cforum.com|f800riders.org|familycheftalk.com|fancymicebreeders.com|feoa.net|ferrari-talk.com|ferrari296forum.com|ferrarilife.com|fertilityfriends.co.uk|ffcars.com|fiat500owners.com|fiestafaction.com|fiestast.net|fiestast.org|fiestastoc.com|firearmstalk.com|firebirdnation.com|fireblades.org|fishforums.com|fiskerbuzz.com|fjcforums.com|fjcruiserforums.com|fjrowners.com|floridaconcealedcarry.com|flyfishbc.com|flyfishing.co.uk|flyfishingforum.com|fnforum.net|focaljet.com|focusfanatics.com|focusrs.org|focusrsoc.com|focusst.org|focusstoc.com|fordescape.org|fordexplorer.org|fordforums.com|fordforumsonline.com|fordfusionclub.com|fordgt500.com|fordinsidenews.com|fordmuscleforums.com|fordranger.net|fordstnation.com|fordtough.ca|fordtransitusaforum.com|forteforums.com|forteturbo.org|fpaceforum.com|fpaceforums.co.uk|frugalvillage.com|fullsizebronco.com|furyforums.com|fusionsportforums.com|fz-10forum.com|fz07oc.com|fz09.org +||html-load.com^$xhr,script,domain=g20.net|g310rforum.com|g5club.net|g6ownersclub.com|g8board.com|g8forum.com|gamefishin.com|gamingfora.com|gardentractortalk.com|gasserhotrods.com|gatorforums.net|gen3insight.com|gencoupe.com|genealogyspeaks.com|genesisevforum.com|genesisforums.com|genesisforums.org|genesisg70forum.com|genesisg80forum.com|geocaching101.com|georgianbaymessageboard.com|georgiapacking.org|germanshepherds.com|ghibliforum.com|giuliaforums.com|gixxer.com|gl1800riders.com|glaowners.com|glaownersclub.co.uk|glcforums.com|glock.pro|glockforum.com|glockforum.net|glocktalk.com|gm-volt.com|gmdietforums.com|gmfullsize.com|gminsidenews.com|gmtruckclub.com|go2gbo.com|goldenretrieverforum.com|goldwingfacts.com|goldwingowners.com|golfforum.com|goosehuntingchat.com|gopitbull.com|goproforums.com|gourbanhiking.com|gr-yaris.co.uk|gr86.org|grandhighlanderforum.com|grcorollaforum.com|greatlakes4x4.com|grecaleforum.com|greentractortalk.com|grizzlycentral.com|grizzlyowners.com|grizzlyriders.com|gromforum.com|gsxr.com|gsxs1000.org|gt350.org|gt86ownersclub.co.uk|gtaaquaria.com|gtoforum.com|gtr.co.uk|gtrlife.com|guitars101.com|guitarscanada.com|gunandgame.com|gunboards.com|gunco.net|gunforums.net|gunhub.com|gunnerforum.com|gvforums.com +||html-load.com^$xhr,script,domain=halloweenforum.com|handgunforum.net|handgunsandammunition.com|hardcoresledder.com|harley-davidsonforums.com|hauntforum.com|havaneseforum.com|havocxforum.com|haytalk.com|hdlivewireforum.com|hdstreetforums.com|hedgehogcentral.com|hellcat.org|hemitruckclub.com|heresy-online.net|hinoforums.com|hipointfirearmsforums.com|hkpro.com|hobbytalk.com|hockeyforum.com|homesteadingtoday.com|hometheatershack.com|hondaatvforums.net|hondacb1000r.com|hondacivicforum.co.uk|hondaevforum.com|hondaforeman.com|hondagrom.net|hondanxriders.com|hondapioneerforum.com|hondarebel3forum.com|hondarebelforum.com|hondashadow.net|hondatwins.net|hornetowners.com|horseforum.com|hotrodders.com|hrvforum.com|hummerchat.com|huntingpa.com|hvac-talk.com|hvacsite.com|hyundai-forums.com|hyundaicoupeclub.co.uk|hyundaikonaforum.com|hyundaiperformance.com +||html-load.com^$xhr,script,domain=i-paceforum.com|i4talk.com|i5talk.com|iawaterfowlers.com|ibsgroup.org|ifish.net|ikonforum.com|ilovemycockapoo.com|ilxforums.com|imboc.com|impalaforums.com|impalas.net|impalassforum.com|impreza5.com|impreza6.com|indianasportsman.com|indianmotorcycles.net|infinitifx.org|infinitijxforum.com|infinitiq30.org|infinitiq50.org|infinitiq60.org|infinitiqx30.org|infinitiqx50.org|infinitiqx60.org|infinitiqx80.org|insightcentral.net|insterevforum.com|integratalk.com|ioniqforum.com|ipaceforums.co.uk|iphoneographytalk.com|iq-forums.com|iwsti.com|ix3talk.com|ixforums.com +||html-load.com^$xhr,script,domain=jaginfo.org|jaguarforum.com|jaguarxeforum.com|jdfanatics.com|jeepcherokeeclub.com|jeepcommander.com|jeepevforum.com|jeepforum.com|jeepgarage.org|jeeppatriot.com|jeeprenegadeforum.com|jeeptrackhawk.org|jemsite.com|jettajunkie.com|jkowners.com|jockeyjournal.com|jpaceforum.com|jukeforums.co.uk|jukeforums.com|jukeownersclub.co.uk|justlabradors.com +||html-load.com^$xhr,script,domain=k-bikes.com|k1600forum.com|k20a.org|k3forum.com|k4owners.com|k5owners.com|k900forum.com|kahrforum.com|kandiforums.com|kanyetothe.com|kawasakimotorcycle.org|kawasakininja1000.com|kawasakininja300.com|kawasakiversys.com|kawasakiworld.com|kawasakiz650.com|kawieriders.com|kawiforums.com|kboards.com|keltecforum.com|ketolifetalk.com|kfx450central.com|kfx450hq.com|kia-forums.com|kiaevforums.com|kianiroforum.com|kiaownersclub.co.uk|kiasoulforums.com|kiastonicforum.org|kiatellurideforums.com|kiatuskerforum.com|kickrunners.com|kimbertalk.com|klrforum.com|knittingparadise.com|kodiakowners.com|kodiaqforums.co.uk|krxforum.com|ktm1090forum.net|ktmatvhq.com|ktmduke390forum.com|ktmforum.co.uk|ktmforums.com|kugaownersclub.co.uk +||html-load.com^$xhr,script,domain=labradoodle-dogs.net|labradorforums.co.uk|lakesimcoemessageboard.com|lakestclair.net|lamborghini-talk.com|lancerregister.com|landcruiser-forum.com|landroverevforum.com|landroversonly.com|lawnsite.com|layitlow.com|leapmotorforum.com|legacygt.org|lexusevforum.com|lexusfforum.com|lexusnxforum.com|lexusrcowners.com|lexusrxowners.com|librarium-online.com|lightningowners.com|lightningrodder.com|lincolnevforum.com|longislandfirearms.com|lotustalk.com|low-riders.com|ls1gto.com|ls1lt1.com|ltr450hq.com|lucid-forum.com|lugerforums.com|lumberjocks.com|luxury4play.com|lxforums.com|lynkcoforum.com +||html-load.com^$xhr,script,domain=m1000xrforum.com|m109riders.com|m14forum.com|m5board.com|macanforum.com|macheclub.com|magnetoforum.com|magnumforumz.com|mainehuntingforums.com|majestyusa.com|manitobafishingforum.com|manitobahuntingforum.com|manutdtalk.com|marlinforum.com|marlinowners.com|marutisuzukiforum.com|maseratilevanteforum.com|maseratilife.com|masscops.com|maverickchat.com|maverickforums.net|mavericklightning.org|mazda2revolution.com|mazda3forums.com|mazda3revolution.com|mazda6club.com|mazdaworld.org|mbeqclub.com|mclarenlife.com|mdxers.org|medstudentz.com|meganesport.net|menstennisforums.com|mercedescla.org|mercedesclaforum.com|mercedesgleforum.com|mercurycougar.net|metalguitarist.org|metrisforum.com|mg-rover.org|mgzrownersclub.co.uk|michigan-sportsman.com|michiganreefers.com|microskiff.com|midwest-horse.com|migweb.co.uk|millwrighttalk.com|mini2.com|minievforum.com|minif56.com|minif66.com|minitorque.com|missouriwhitetails.com|mitsubishi-forums.com|mkcforum.com|mkzforum.com|mmaforum.com|moddedmustangs.com|moddedraptor.com|model2.org|modelrailforum.com|modeltrainforum.com|moderncamaro.com|modularfords.com|mokkaownersclub.co.uk|mondeostoc.com|morels.com|mothering.com|motorcycleforum.com|motorcycleforums.net|motorcycletherapy.net|motorgeek.com|motorhomefacts.com|motorsportsracingtalk.com|mountainbuzz.com|mp-pistol.com|mr2oc.com|msgo.com|mtbr.com|mudinmyblood.net|mullenowners.com|muscularmustangs.com|mustangecoboost.net|mustangevolution.com|mvagusta.net|mx30forum.com|mx5life.com|mx5nutz.com|mx6.com|my.is|myaudiq5.com|mybikeforums.com|myfastgti.com|myjeepcompass.com|mylargescale.com|mylawnmowerforum.com|mymbonline.com|mytiguan.com|mytractorforum.com|mytreg.com|myturbodiesel.com +||html-load.com^$xhr,script,domain=nagca.com|nationalgunforum.com|ncangler.com|ncgunowners.com|neowners.com|newbeetle.org|newbrunswickfishing.com|newbrunswickhunting.com|newcelica.org|newcougar.org|newf150forum.com|newjerseyhunter.com|newninja.com|newnissanz.com|newscionxb.com|newtahoeyukon.com|newtiburon.com|ngemu.com|ninetowners.com|ninja400riders.com|ninjah2.org|niocarclub.com|nissan-navara.net|nissanclub.com|nissancubelife.com|nissanforums.com|nissankicksforum.com|nissanmurano.org|nissanversaforums.com|nitroforumz.com|nodakoutdoors.com|nordenforums.com|noreast.com|noteownersclub.co.uk|novas.net|novascotiafishing.com|novascotiahunting.com|nv200forum.com|nybass.com|nyfirearms.com +||html-load.com^$xhr,script,domain=observedtrials.net|oceanforums.com|odyclub.com|ohiogamefishing.com|ohiosportsman.com|ohiowaterfowlerforum.com|oklahomahunter.net|onefora.com|onesixthwarriors.com|opelgt.com|optimaforums.com|optiqforum.com|ourbeagleworld.com|outbackers.com|outlanderforums.com|overclock.net +||html-load.com^$xhr,script,domain=pacificaforums.com|paintballforum.com|painttalk.com|palisadeforum.com|panameraforum.com|panamericaforums.com|panigalev4club.com|paracordforum.com|passatworld.com|passportforums.com|pathfindertalk.com|patrol4x4.com|pavementsucks.com|paviseforum.com|paw-talk.net|pearforum.com|pelotonforum.com|pensacolafishingforum.com|perfectmancave.com|perfectunion.com|performanceboats.com|personalitycafe.com|petforums.co.uk|peugeot108forum.co.uk|peugeotforums.com|pickleballertalk.com|pierandsurf.com|pigeons.biz|pigforum.com|piloteers.org|pioneerforums.com|piranha-fury.com|pirate4x4.com|pistolsmith.com|pistolworld.com|planet-9.com|planet4x4.net|planetisuzoo.com|planetminis.com|plantedtank.net|plowsite.com|plumbingzone.com|pnwriders.com|pocketbikeplanet.com|polarisatvforums.com|polarisgeneralforum.com|polarisriders.com|polestar-forum.com|politicaltownhall.com|poodleforum.com|porscheevforum.com|powerequipmentforum.com|powerstroke.org|powerstrokenation.com|prcforum.com|predatortalk.com|preludeonline.com|preludepower.com|preparedsociety.com|prepperforums.net|preservationtalk.com|prius5.com|priusforum.com|priusonline.com|prologuedrivers.com|promasterforum.com|prophecyowners.com|prowlerforums.net|prowlertalk.net|psychobike.com|pursuitforum.com|pwcforum.com +||html-load.com^$xhr,script,domain=q2forums.co.uk|q3ownersclub.co.uk|qyiforum.com +||html-load.com^$xhr,script,domain=r1-forum.com|r1200gs.info|r1200rforum.com|r125forum.com|r1300gsforum.com|r2forums.com|r3-forums.com|r32oc.com|r6-forum.com|r6messagenet.com|r7forums.com|r8talk.com|r9riders.com|rabbitdogs.net|rallyforums.com|ram1500diesel.com|ramchargercentral.com|ramevforum.com|ramforumz.com|ramrebel.org|ramrebelforum.com|ramrho.org|rangerforums.net|rangerovers.net|rangerraptorowners.com|raptorforum.com|raptorforumz.com|ratforum.com|rav4world.com|rc350forum.com|rc51forums.com|recon-forum.com|redlineforums.com|redlineutvforums.net|regalforums.com|renaultforums.co.uk|renegadeforum.com|reptileforums.co.uk|retrievertraining.net|rhinoforums.net|rhinotalk.net|riderforums.com|ridgeforum.com|ridgelineownersclub.com|rimfirecentral.com|rinconriders.com|rivianownersforum.com|rlxforum.com|roadbikereview.com|roadglide.org|roadstarraider.com|roadtripliving.com|robloxforum.com|rodsnsods.co.uk|roguesportforum.com|rollsroyceforums.com|roofingtalk.com|rootzwiki.com|rottweilersonline.com|routerforums.com|royalenfieldforum.com|rs25.com|rswarrior.com|rubiconownersforum.com|rugerforum.net|rugerpistolforums.com|rugertalk.com|runeriders.com|runnersforum.co.uk|rzforums.com|rzrforums.net +||html-load.com^$xhr,script,domain=s1000rrforum.com|s10forum.com|saabcentral.com|saablink.net|saabscene.com|sailnet.com|salmonfishingforum.com|santacruzforums.com|santafeforums.com|sarforums.com|saturnoutlookforum.net|savanaforum.com|saxontheweb.net|sb9t.com|scioniaforum.com|scionimforum.com|scirocconet.co.uk|scoutmotorsforum.com|scr950forum.com|scramblerforum.com|seadoospark.org|seat-forum.co.uk|seatroutforum.com|segwayforums.com|seltosforum.com|serial1forum.com|shercoforums.com|shipsnostalgia.com|shootersforum.com|shootingworld.com|shotgunforums.com|shotgunworld.com|sidexsideworld.com|siennachat.com|sierraevforum.com|sigarms556.com|sigtalk.com|silveradocheyenne.org|silveradoevforum.com|silveradosierra.com|skincaretalk.com|skylineowners.com|skyroadster.com|skyscrapercity.com|slatedroid.com|slateownersforum.com|slingshotforum.com|slingshotforums.com|slkworld.com|slotforum.com|smartcarofamerica.com|smartevforum.com|smithandwessonforums.com|smokinvette.com|snackfora.com|sniperforums.com|snowblowerforum.com|snowboardingforum.com|snowmobilefanatics.com|snowmobileforum.com|snowmobileworld.com|snowplowforums.com|socialanxietysupport.com|solanforum.com|solsticeforum.com|solterraforum.com|sonataforums.com|sonymobilityforum.com|sparktalk.com|speakev.com|specialstage.com|speedwake.com|speedzilla.com|speypages.com|spoiledmaltese.com|sportbikes.net|sportbikeworld.com|springfieldforum.com|spyderchat.com|spydertalk.com|sr20forum.com|srt10forum.com|srt4mation.com|srtforums.com|ssforums.com|ssrfanatic.com|starbikeforums.com|starlinktalk.com|stdrivers.co.uk|stelvioforum.com|stevesnovasite.com|steyrclub.com|stingerforums.com|stingrayforums.com|stormtrakforum.com|stratolinerdeluxe.com|streetfighterv2forum.com|stripers247.com|stromerforum.com|stromtrooper.com|subarubrzforum.com|subaruforester.org|subaruoutback.org|subaruxvforum.com|superhonda.com|supermotojunkie.com|supra6.com|supraforums.com|survivalistboards.com|suzuki-forums.com|suzuki-forums.net|suzukiatvforums.com|suzukicentral.com|sv-portal.com|svrider.com|swedespeed.com +||html-load.com^$xhr,script,domain=t-goforum.com|t-shirtforums.com|taikoboards.com|talkaboutmarriage.com|talkbudgies.com|talkclassical.com|talkcockatiels.com|talkesg.com|talkford.com|talkparrotlets.com|talkparrots.com|talonsxsforum.com|taosforums.com|tarokforum.com|tarracoforums.co.uk|taurusarmed.net|taurusclub.com|taycanevforum.com|tbssowners.com|tccoa.com|tcrossforums.co.uk|team-integra.net|techguy.org|techsupportforum.com|telo-forum.com|tennisforum.com|tennspeed.net|terrainforum.com|terrainforum.net|teryxforums.net|teryxhq.com|teslabottalk.com|teslaownersonline.com|texas4x4.org|theakforum.net|thebassbarn.com|thebassholes.com|theboxotruth.com|thecombineforum.com|thedieselgarage.com|thedieselstop.com|thefirearmsforum.com|theflyfishingforum.com|thegoatspot.net|thektog.org|thelawnforum.com|thelupussite.com|thelureforum.com|themgzr.co.uk|thenewx.org|theprofilebrotherhood.com|thereeftank.com|theslingshotforum.com|thespeedtriple.com|thevog.net|thewatchforum.co.uk|thewatchsite.com|theworldofarchitecture.com|thyroidboards.com|tidalfish.com|tiguanevforum.com|tiguanforums.co.uk|titantalk.com|titanxdforum.com|tivocommunity.com|tjcruiserforums.com|tlxforums.com|tlzone.net|tnhuntingclub.com|tonaletalk.com|topolinoforum.com|toyotacelicas.com|toyotachrforum.com|toyotaevforum.com|toyotanation.com|tractorforum.com|tradtalk.com|trailblazertalk.com|trailhunterforums.com|trailsportforum.com|trailvoy.com|transalpowners.com|trapshooters.com|traverseforum.com|traxforum.com|treadmillforum.com|trifive.com|triumph400forum.com|triumph675.net|triumphbobberforum.com|triumphrat.net|trocforums.co.uk|tropicalfishforums.co.uk|tropicalfishkeeping.com|truestreetcars.com|trx250r.net|trx450r.org|trxforums.com|tsxclub.com|ttforum.co.uk|ttora.com|tucson-forum.com|tundra3.com|tundraevforum.com|tundrasolutions.com|tundratalk.net|turbobuicks.com|turbododge.com|tw200forum.com|twospoke.com|twowheelforum.com|txowners.com +||html-load.com^$xhr,script,domain=uberpeople.net|uk-audis.net|uk-mkivs.net|uk-muscle.co.uk|ukcorsa-d.com|ultimateaircooled.com|upownersclub.co.uk|usmle-forums.com|utahconcealedcarry.com|utahwildlife.net +||html-load.com^$xhr,script,domain=v-twinforum.com|v6performance.net|v6z24.com|v8bikeriders.com|vagdrivers.net|vantasforum.com|varminthunters.com|vauxhallownersnetwork.co.uk|veggieboards.com|veggiegardener.com|velarforums.co.uk|veloster.org|velostern.com|velosterturbo.org|venuedrivers.com|victoryforums.com|videoeditingtalk.com|vikingforum.net|vikingforum.org|vinfasttalk.com|vintage-mustang.com|viperalley.com|vizslaforums.com|vn750.com|volconforum.com|volkswagenforum.co.uk|volkswagenownersclub.com|volkszone.com|volusiariders.com|volvo-forums.com|volvoevforum.com|volvoforum.com|volvov40club.com|vtcafe.com|vtxcafe.com|vtxoa.com|vulcanforums.com|vwatlasforum.com|vweosclub.com|vwforum.com|vwidtalk.com|vwscout.org|vwt4forum.co.uk|vwvortex.com +||html-load.com^$xhr,script,domain=wagoneerfans.com|walkingstickforum.com|waltherforums.com|washingtonflyfishing.com|watchfreeks.com|watchtalkforums.info|watchuseek.com|weldingweb.com|wethearmed.com|wfmachines.com|wildcatforums.net|windycityfishing.com|wolverineforums.com|woodworkingtalk.com|workingdogforum.com|workingfromhomeforum.com|worldseafishing.com|wranglerboard.com|wranglerforum.com|wranglerjlforum.com|wrestlingforum.com|wristtwisters.com|wrxforums.com|wrxtuners.com +||html-load.com^$xhr,script,domain=x-trail-uk.co.uk|x7forum.com|xc100forum.com|xc40forum.com|xclassforums.com|xcrforum.com|xdforum.com|xdtalk.com|xeforums.co.uk|xfforum.co.uk|xlrforum.com|xmowners.com|xpeditionforum.com|xpengevforum.com|xpowerforums.com|xr1200ownersgroup.com|xr150lforum.com|xrv.org.uk|xsr700forums.com|xtratime.org +||html-load.com^$xhr,script,domain=yamaha-forum.net|yamahaforum.com|yamahastarbolt.com|yamahastarstryker.com|yariscrossclub.com|yellowbullet.com|yetiownersclub.co.uk|yfzcentral.com|yorkshire-divers.com|yourcobalt.com|yourpatientvoice.com|yoursciontc.com|yxztalk.com +||html-load.com^$xhr,script,domain=z06vette.com|z1000forum.com|z125owners.com|zafiraowners.co.uk|zcar.com|zdxowners.com|zeekrchat.com|zeromotorcycleforum.com|zotyezone.com|zrvforum.com|zx-10r.net|zx25rforum.com|zx4rforum.com|zx6r.com|zxforums.com +! scriptlet +1000rr.net,10thcivicforum.com,1130cc.com,123easy4me.com,124spider.org,125ccsportsbikes.com,1911addicts.com,1911forum.com,1911talk.com,1919a4.com,2-seriesforum.com,2008ownersclub.co.uk,200forums.com,208ownersclub.co.uk,240sxforums.com,250r.net,2coolfishing.com,300cforums.com,300cforumz.com,350z-tech.com,355nation.net,360tuna.com,3800pro.com,3dprinterful.com,3dshoots.com,3si.org,4-seriesforums.com,460ford.com,4activetalk.com,4btswaps.com,4c-forums.com,4runner-forums.com,4thgentacoma.com,4xeforums.com,500xownersclub.co.uk,502streetscene.net,5thramforum.com,5thrangerforum.com,600rr.net,68forums.com,6mt.net,6thgenram.com,700rifle.com,718forum.com,790dukeforum.com,7thgenhonda.com,7thmustang.com,899panigale.org,8thcivic.com,959panigale.net,992forum.com,9thgencivic.com##+js(rmnt, script, html-load.com) +a1-forum.co.uk,a5oc.com,abarthforum.co.uk,acadiaforum.net,accordxclub.com,aceforums.net,acemanforum.com,aclassclub.co.uk,acrforum.com,acura-legend.com,acuraworld.com,adamownersclub.co.uk,adxtalk.com,afeelachat.com,africatwinforum.com,airflowforum.com,airsoftsniperforum.com,airsoftsociety.com,akff.net,alfabb.com,alfajuniorforum.com,alfaowner.com,allcoast.com,allcorsa.co.uk,allfordmustangs.com,alliancervforums.com,allpar.com,altimaforums.net,amarokforum.com,amazonastroforum.com,amrapideforum.com,antaraownersclub.com,antiquetractorsforum.com,applecarforum.com,applefitnessforum.com,aquariumforum.com,aquaticplantcentral.com,ar15forums.com,archeryaddix.com,archerytalk.com,arcticchat.com,ariyaforums.com,arizonagunowners.com,arizonahuntingforums.com,arkansashunting.net,armslocker.com,aronaforums.co.uk,arteonforums.com,artistforum.com,ascentforums.com,askandyaboutclothes.com,astonmartinlife.com,astrakforums.co.uk,astraownersnetwork.co.uk,astrosafari.com,at4xowners.com,atecaforums.co.uk,ats-v.org,atv-forum.com,atvdragracers.com,atvtorture.com,audi-forums.com,audif1forum.com,audiforum.us,audiq3forum.com,ausrc.com,aussieexotics.com,austinbassfishing.com,australiaforum.com,authenticforum.com,avengerforumz.com,avsforum.com,azbasszone.com##+js(rmnt, script, html-load.com) +b15sentra.net,b15u.com,babybmw.net,badgerowners.com,bapetalk.com,basketballforum.com,basset.net,bc4x4.com,bcaquaria.com,bcfishingreports.com,bcsportbikes.com,beaglesunlimited.com,beekeepingforums.com,beesource.com,benelliforum.com,benzforum.com,benzworld.org,bersaforum.com,bersapistolforum.com,bettafish.com,bigblockdart.com,bimmerfest.com,bimmerforums.co.uk,bimmerwerkz.com,blazerevforum.com,blowgunforum.com,blueovalfanatics.com,bluetraxx.com,bmaxownersclub.co.uk,bmw-driver.net,bmwevforum.com,bmwlt.com,booksworthdiscussing.com,bowfishingcountry.com,bowfishingforum.com,boxerforums.com,boxingforum.com,brightdropforum.com,broncoevforum.com,broncosporttalk.com,brutecentral.com,brutusforum.com,buceesfans.com,buelltalk.com,buickevforum.com,bulldogbreeds.com,bullnettlenews.com,burgmanusa.com,byd-forums.com,bzforums.com##+js(rmnt, script, html-load.com) +c-classforum.com,c10trucks.com,cactusforums.co.uk,cadenzaforum.com,cadillacforums.com,caferacer.net,caliberforums.com,caliberforumz.com,californiaevforum.com,camaros.net,camarozone.com,campercommunity.com,can-amelectric.com,can-amforum.com,can-amtalk.com,canadianmoneyforum.com,canamspyderforums.com,capriforum.com,capturownersclub.co.uk,caraudioclassifieds.org,carnivalforums.com,carolinafishtalk.com,carolinashootersclub.com,casecoltingersoll.com,catfish1.com,catforum.com,cattleforum.com,cayenneforums.com,cbr250.com,cbr250.net,cbr300forum.com,cbr500riders.com,cbrxx.com,ce02forum.com,celicasupra.com,cfmotoforums.com,challengerforumz.com,challengerlife.com,challengertalk.com,chargerforums.com,chargerforumz.com,checkhookboxing.com,cheftalk.com,cherokeesrt8.com,cherokeetalk.com,chevelles.com,chevroletownersclub.co.uk,chevyblazer.org,chevybolt.org,chevymalibuforum.com,cheyennechat.com,chicagolandfishing.com,chicagolandsportbikes.com,chickenforum.com,chiefmotorcycleforum.com,chihuahua-people.com,chinacarforums.com,chrforums.uk,chromebookforum.com,chryslerminivan.net,cichlid-forum.com,cigarforums.net,civic11forum.com,civinfo.com,cl500forum.com,clarityforum.com,classic-jdm.com,cleaningtalk.com,climbingforums.com,club3g.com,club4g.org,club700xx.com,clubarmada.com,clubcrosstrek.com,clubfrontier.org,clubroadster.net,clubrsx.com,clubsearay.com,clubtitan.org,clubtouareg.com,clubtread.com,clubwrx.net,clubxb.com,clubxterra.org,cmaxownersclub.co.uk,cmaxownersclub.com,cobaltss.com,coffeeforums.co.uk,coloradodiesel.org,coloradoevowners.com,coloradofans.com,coloradofisherman.com,coltforum.com,commanderforums.org,commandertalk.com,contractortalk.com,corollacrossforum.com,corral.net,corsa-c.co.uk,corsaeforums.co.uk,cretaforum.com,cricketforum.com,crossbownation.com,crosstourownersclub.com,crownforums.com,cruzetalk.com,crvownersclub.com,crxcommunity.com,crzforum.com,ct200hforum.com,ctsvowners.com,ctx1300forum.com,ctx700forum.com,cumminsforum.com,customdakotas.com,customfighters.com,custommagnums.com,customtacos.com,cx30talk.com,cx3forum.com,cx500forum.com,cx50forums.com,cx5forum.com,cx70forum.com,cx90forum.com,cyberquadforum.com,cybertrucktalk.com,cycleforums.com,cztalk.com##+js(rmnt, script, html-load.com) +d-series.org,daciaforum.co.uk,dairygoatinfo.com,dakota-durango.com,dakotaforumz.com,danieldefenseforums.com,daytonaowners.com,dbstalk.com,dealsforum.com,deerhuntersclub.com,defendersource.com,defensivecarry.com,dendroboard.com,desertxforum.com,detailingworld.co.uk,dfwstangs.net,diabetesforum.com,diavel-forum.com,diecastcrazy.com,diecastxchange.com,dieself150forum.com,dieselforums.com,dieseljeeps.com,dieselplace.com,dieselramforum.com,digitalcorvettes.com,digitalhome.ca,dippy.org,discosportforums.co.uk,discoverysport.net,diychatroom.com,diyelectriccar.com,diymobileaudio.com,dobermantalk.com,dodge-dart.org,dodge-nitro.com,dodgedartforumz.com,dodgedurango.net,dodgeevforum.com,dodgeintrepid.net,dodgetalk.com,dogfoodchat.com,dogforum.com,dogforums.com,dootalk.com,dpselfhelp.com,driveaccord.net,drywalltalk.com,ds450hq.com,ds4ownersclub.co.uk,dsmtalk.com,ducati.ms,ducati.org,ducatimonster.org,ducatiscramblerforum.com,ducatisupersport939.net,duckhuntingchat.com,duramaxforum.com,durangoforumz.com##+js(rmnt, script, html-load.com) +e-tronforum.com,e46fanatics.com,easttennesseefishing.com,ebikerforums.com,echelonforum.com,eclipsecrossforums.com,ecoboostmustang.org,ecosportforum.com,ecosportownersclub.co.uk,edsupportforum.com,ehmac.ca,elantraforum.com,elantragtforum.com,elantrasport.com,elantraxd.com,elcaminocentral.com,electriciantalk.com,electricmotorcyclesforum.com,elementownersclub.com,eliminatorforum.com,enclaveforum.net,envisionforum.com,envistaforum.com,epaceforum.com,epaceforums.co.uk,equinoxevforum.com,erayforums.com,escaladeevforum.com,escape-city.com,esportbike.com,esprinterforum.com,etransitforum.com,everestowners.com,everything2stroke.com,evoqueforums.net,evoqueownersclub.co.uk,evotuners.net,evoxforums.com,ex-500.com,ex30owners.com,ex90forum.com,expatforum.com,explorerevforum.com,explorertalk.com##+js(rmnt, script, html-load.com) +f-typeclub.com,f150ecoboost.net,f150forumz.com,f650.co.uk,f6cforum.com,f800riders.org,familycheftalk.com,fancymicebreeders.com,feoa.net,ferrari-talk.com,ferrari296forum.com,ferrarilife.com,fertilityfriends.co.uk,ffcars.com,fiat500owners.com,fiestafaction.com,fiestast.net,fiestast.org,fiestastoc.com,firearmstalk.com,firebirdnation.com,fireblades.org,fishforums.com,fiskerbuzz.com,fjcforums.com,fjcruiserforums.com,fjrowners.com,floridaconcealedcarry.com,flyfishbc.com,flyfishing.co.uk,flyfishingforum.com,fnforum.net,focaljet.com,focusfanatics.com,focusrs.org,focusrsoc.com,focusst.org,focusstoc.com,fordescape.org,fordexplorer.org,fordforums.com,fordforumsonline.com,fordfusionclub.com,fordgt500.com,fordinsidenews.com,fordmuscleforums.com,fordranger.net,fordstnation.com,fordtough.ca,fordtransitusaforum.com,forteforums.com,forteturbo.org,fpaceforum.com,fpaceforums.co.uk,frugalvillage.com,fullsizebronco.com,furyforums.com,fusionsportforums.com,fz-10forum.com,fz07oc.com,fz09.org##+js(rmnt, script, html-load.com) +g20.net,g310rforum.com,g5club.net,g6ownersclub.com,g8board.com,g8forum.com,gamefishin.com,gamingfora.com,gardentractortalk.com,gasserhotrods.com,gatorforums.net,gen3insight.com,gencoupe.com,genealogyspeaks.com,genesisevforum.com,genesisforums.com,genesisforums.org,genesisg70forum.com,genesisg80forum.com,geocaching101.com,georgianbaymessageboard.com,georgiapacking.org,germanshepherds.com,ghibliforum.com,giuliaforums.com,gixxer.com,gl1800riders.com,glaowners.com,glaownersclub.co.uk,glcforums.com,glock.pro,glockforum.com,glockforum.net,glocktalk.com,gm-volt.com,gmdietforums.com,gmfullsize.com,gminsidenews.com,gmtruckclub.com,go2gbo.com,goldenretrieverforum.com,goldwingfacts.com,goldwingowners.com,golfforum.com,goosehuntingchat.com,gopitbull.com,goproforums.com,gourbanhiking.com,gr-yaris.co.uk,gr86.org,grandhighlanderforum.com,grcorollaforum.com,greatlakes4x4.com,grecaleforum.com,greentractortalk.com,grizzlycentral.com,grizzlyowners.com,grizzlyriders.com,gromforum.com,gsxr.com,gsxs1000.org,gt350.org,gt86ownersclub.co.uk,gtaaquaria.com,gtoforum.com,gtr.co.uk,gtrlife.com,guitars101.com,guitarscanada.com,gunandgame.com,gunboards.com,gunco.net,gunforums.net,gunhub.com,gunnerforum.com,gvforums.com##+js(rmnt, script, html-load.com) +halloweenforum.com,handgunforum.net,handgunsandammunition.com,hardcoresledder.com,harley-davidsonforums.com,hauntforum.com,havaneseforum.com,havocxforum.com,haytalk.com,hdlivewireforum.com,hdstreetforums.com,hedgehogcentral.com,hellcat.org,hemitruckclub.com,heresy-online.net,hinoforums.com,hipointfirearmsforums.com,hkpro.com,hobbytalk.com,hockeyforum.com,homesteadingtoday.com,hometheatershack.com,hondaatvforums.net,hondacb1000r.com,hondacivicforum.co.uk,hondaevforum.com,hondaforeman.com,hondagrom.net,hondanxriders.com,hondapioneerforum.com,hondarebel3forum.com,hondarebelforum.com,hondashadow.net,hondatwins.net,hornetowners.com,horseforum.com,hotrodders.com,hrvforum.com,hummerchat.com,huntingpa.com,hvac-talk.com,hvacsite.com,hyundai-forums.com,hyundaicoupeclub.co.uk,hyundaikonaforum.com,hyundaiperformance.com##+js(rmnt, script, html-load.com) +i-paceforum.com,i4talk.com,i5talk.com,iawaterfowlers.com,ibsgroup.org,ifish.net,ikonforum.com,ilovemycockapoo.com,ilxforums.com,imboc.com,impalaforums.com,impalas.net,impalassforum.com,impreza5.com,impreza6.com,indianasportsman.com,indianmotorcycles.net,infinitifx.org,infinitijxforum.com,infinitiq30.org,infinitiq50.org,infinitiq60.org,infinitiqx30.org,infinitiqx50.org,infinitiqx60.org,infinitiqx80.org,insightcentral.net,insterevforum.com,integratalk.com,ioniqforum.com,ipaceforums.co.uk,iphoneographytalk.com,iq-forums.com,iwsti.com,ix3talk.com,ixforums.com##+js(rmnt, script, html-load.com) +jaginfo.org,jaguarforum.com,jaguarxeforum.com,jdfanatics.com,jeepcherokeeclub.com,jeepcommander.com,jeepevforum.com,jeepforum.com,jeepgarage.org,jeeppatriot.com,jeeprenegadeforum.com,jeeptrackhawk.org,jemsite.com,jettajunkie.com,jkowners.com,jockeyjournal.com,jpaceforum.com,jukeforums.co.uk,jukeforums.com,jukeownersclub.co.uk,justlabradors.com##+js(rmnt, script, html-load.com) +k-bikes.com,k1600forum.com,k20a.org,k3forum.com,k4owners.com,k5owners.com,k900forum.com,kahrforum.com,kandiforums.com,kanyetothe.com,kawasakimotorcycle.org,kawasakininja1000.com,kawasakininja300.com,kawasakiversys.com,kawasakiworld.com,kawasakiz650.com,kawieriders.com,kawiforums.com,kboards.com,keltecforum.com,ketolifetalk.com,kfx450central.com,kfx450hq.com,kia-forums.com,kiaevforums.com,kianiroforum.com,kiaownersclub.co.uk,kiasoulforums.com,kiastonicforum.org,kiatellurideforums.com,kiatuskerforum.com,kickrunners.com,kimbertalk.com,klrforum.com,knittingparadise.com,kodiakowners.com,kodiaqforums.co.uk,krxforum.com,ktm1090forum.net,ktmatvhq.com,ktmduke390forum.com,ktmforum.co.uk,ktmforums.com,kugaownersclub.co.uk##+js(rmnt, script, html-load.com) +labradoodle-dogs.net,labradorforums.co.uk,lakesimcoemessageboard.com,lakestclair.net,lamborghini-talk.com,lancerregister.com,landcruiser-forum.com,landroverevforum.com,landroversonly.com,lawnsite.com,layitlow.com,leapmotorforum.com,legacygt.org,lexusevforum.com,lexusfforum.com,lexusnxforum.com,lexusrcowners.com,lexusrxowners.com,librarium-online.com,lightningowners.com,lightningrodder.com,lincolnevforum.com,longislandfirearms.com,lotustalk.com,low-riders.com,ls1gto.com,ls1lt1.com,ltr450hq.com,lucid-forum.com,lugerforums.com,lumberjocks.com,luxury4play.com,lxforums.com,lynkcoforum.com##+js(rmnt, script, html-load.com) +m1000xrforum.com,m109riders.com,m14forum.com,m5board.com,macanforum.com,macheclub.com,magnetoforum.com,magnumforumz.com,mainehuntingforums.com,majestyusa.com,manitobafishingforum.com,manitobahuntingforum.com,manutdtalk.com,marlinforum.com,marlinowners.com,marutisuzukiforum.com,maseratilevanteforum.com,maseratilife.com,masscops.com,maverickchat.com,maverickforums.net,mavericklightning.org,mazda2revolution.com,mazda3forums.com,mazda3revolution.com,mazda6club.com,mazdaworld.org,mbeqclub.com,mclarenlife.com,mdxers.org,medstudentz.com,meganesport.net,menstennisforums.com,mercedescla.org,mercedesclaforum.com,mercedesgleforum.com,mercurycougar.net,metalguitarist.org,metrisforum.com,mg-rover.org,mgzrownersclub.co.uk,michigan-sportsman.com,michiganreefers.com,microskiff.com,midwest-horse.com,migweb.co.uk,millwrighttalk.com,mini2.com,minievforum.com,minif56.com,minif66.com,minitorque.com,missouriwhitetails.com,mitsubishi-forums.com,mkcforum.com,mkzforum.com,mmaforum.com,moddedmustangs.com,moddedraptor.com,model2.org,modelrailforum.com,modeltrainforum.com,moderncamaro.com,modularfords.com,mokkaownersclub.co.uk,mondeostoc.com,morels.com,mothering.com,motorcycleforum.com,motorcycleforums.net,motorcycletherapy.net,motorgeek.com,motorhomefacts.com,motorsportsracingtalk.com,mountainbuzz.com,mp-pistol.com,mr2oc.com,msgo.com,mtbr.com,mudinmyblood.net,mullenowners.com,muscularmustangs.com,mustangecoboost.net,mustangevolution.com,mvagusta.net,mx30forum.com,mx5life.com,mx5nutz.com,mx6.com,my.is,myaudiq5.com,mybikeforums.com,myfastgti.com,myjeepcompass.com,mylargescale.com,mylawnmowerforum.com,mymbonline.com,mytiguan.com,mytractorforum.com,mytreg.com,myturbodiesel.com##+js(rmnt, script, html-load.com) +nagca.com,nationalgunforum.com,ncangler.com,ncgunowners.com,neowners.com,newbeetle.org,newbrunswickfishing.com,newbrunswickhunting.com,newcelica.org,newcougar.org,newf150forum.com,newjerseyhunter.com,newninja.com,newnissanz.com,newscionxb.com,newtahoeyukon.com,newtiburon.com,ngemu.com,ninetowners.com,ninja400riders.com,ninjah2.org,niocarclub.com,nissan-navara.net,nissanclub.com,nissancubelife.com,nissanforums.com,nissankicksforum.com,nissanmurano.org,nissanversaforums.com,nitroforumz.com,nodakoutdoors.com,nordenforums.com,noreast.com,noteownersclub.co.uk,novas.net,novascotiafishing.com,novascotiahunting.com,nv200forum.com,nybass.com,nyfirearms.com##+js(rmnt, script, html-load.com) +observedtrials.net,oceanforums.com,odyclub.com,ohiogamefishing.com,ohiosportsman.com,ohiowaterfowlerforum.com,oklahomahunter.net,onefora.com,onesixthwarriors.com,opelgt.com,optimaforums.com,optiqforum.com,ourbeagleworld.com,outbackers.com,outlanderforums.com,overclock.net##+js(rmnt, script, html-load.com) +pacificaforums.com,paintballforum.com,painttalk.com,palisadeforum.com,panameraforum.com,panamericaforums.com,panigalev4club.com,paracordforum.com,passatworld.com,passportforums.com,pathfindertalk.com,patrol4x4.com,pavementsucks.com,paviseforum.com,paw-talk.net,pearforum.com,pelotonforum.com,pensacolafishingforum.com,perfectmancave.com,perfectunion.com,performanceboats.com,personalitycafe.com,petforums.co.uk,peugeot108forum.co.uk,peugeotforums.com,pickleballertalk.com,pierandsurf.com,pigeons.biz,pigforum.com,piloteers.org,pioneerforums.com,piranha-fury.com,pirate4x4.com,pistolsmith.com,pistolworld.com,planet-9.com,planet4x4.net,planetisuzoo.com,planetminis.com,plantedtank.net,plowsite.com,plumbingzone.com,pnwriders.com,pocketbikeplanet.com,polarisatvforums.com,polarisgeneralforum.com,polarisriders.com,polestar-forum.com,politicaltownhall.com,poodleforum.com,porscheevforum.com,powerequipmentforum.com,powerstroke.org,powerstrokenation.com,prcforum.com,predatortalk.com,preludeonline.com,preludepower.com,preparedsociety.com,prepperforums.net,preservationtalk.com,prius5.com,priusforum.com,priusonline.com,prologuedrivers.com,promasterforum.com,prophecyowners.com,prowlerforums.net,prowlertalk.net,psychobike.com,pursuitforum.com,pwcforum.com##+js(rmnt, script, html-load.com) +q2forums.co.uk,q3ownersclub.co.uk,qyiforum.com##+js(rmnt, script, html-load.com) +r1-forum.com,r1200gs.info,r1200rforum.com,r125forum.com,r1300gsforum.com,r2forums.com,r3-forums.com,r32oc.com,r6-forum.com,r6messagenet.com,r7forums.com,r8talk.com,r9riders.com,rabbitdogs.net,rallyforums.com,ram1500diesel.com,ramchargercentral.com,ramevforum.com,ramforumz.com,ramrebel.org,ramrebelforum.com,ramrho.org,rangerforums.net,rangerovers.net,rangerraptorowners.com,raptorforum.com,raptorforumz.com,ratforum.com,rav4world.com,rc350forum.com,rc51forums.com,recon-forum.com,redlineforums.com,redlineutvforums.net,regalforums.com,renaultforums.co.uk,renegadeforum.com,reptileforums.co.uk,retrievertraining.net,rhinoforums.net,rhinotalk.net,riderforums.com,ridgeforum.com,ridgelineownersclub.com,rimfirecentral.com,rinconriders.com,rivianownersforum.com,rlxforum.com,roadbikereview.com,roadglide.org,roadstarraider.com,roadtripliving.com,robloxforum.com,rodsnsods.co.uk,roguesportforum.com,rollsroyceforums.com,roofingtalk.com,rootzwiki.com,rottweilersonline.com,routerforums.com,royalenfieldforum.com,rs25.com,rswarrior.com,rubiconownersforum.com,rugerforum.net,rugerpistolforums.com,rugertalk.com,runeriders.com,runnersforum.co.uk,rzforums.com,rzrforums.net##+js(rmnt, script, html-load.com) +s1000rrforum.com,s10forum.com,saabcentral.com,saablink.net,saabscene.com,sailnet.com,salmonfishingforum.com,santacruzforums.com,santafeforums.com,sarforums.com,saturnoutlookforum.net,savanaforum.com,saxontheweb.net,sb9t.com,scioniaforum.com,scionimforum.com,scirocconet.co.uk,scoutmotorsforum.com,scr950forum.com,scramblerforum.com,seadoospark.org,seat-forum.co.uk,seatroutforum.com,segwayforums.com,seltosforum.com,serial1forum.com,shercoforums.com,shipsnostalgia.com,shootersforum.com,shootingworld.com,shotgunforums.com,shotgunworld.com,sidexsideworld.com,siennachat.com,sierraevforum.com,sigarms556.com,sigtalk.com,silveradocheyenne.org,silveradoevforum.com,silveradosierra.com,skincaretalk.com,skylineowners.com,skyroadster.com,skyscrapercity.com,slatedroid.com,slateownersforum.com,slingshotforum.com,slingshotforums.com,slkworld.com,slotforum.com,smartcarofamerica.com,smartevforum.com,smithandwessonforums.com,smokinvette.com,snackfora.com,sniperforums.com,snowblowerforum.com,snowboardingforum.com,snowmobilefanatics.com,snowmobileforum.com,snowmobileworld.com,snowplowforums.com,socialanxietysupport.com,solanforum.com,solsticeforum.com,solterraforum.com,sonataforums.com,sonymobilityforum.com,sparktalk.com,speakev.com,specialstage.com,speedwake.com,speedzilla.com,speypages.com,spoiledmaltese.com,sportbikes.net,sportbikeworld.com,springfieldforum.com,spyderchat.com,spydertalk.com,sr20forum.com,srt10forum.com,srt4mation.com,srtforums.com,ssforums.com,ssrfanatic.com,starbikeforums.com,starlinktalk.com,stdrivers.co.uk,stelvioforum.com,stevesnovasite.com,steyrclub.com,stingerforums.com,stingrayforums.com,stormtrakforum.com,stratolinerdeluxe.com,streetfighterv2forum.com,stripers247.com,stromerforum.com,stromtrooper.com,subarubrzforum.com,subaruforester.org,subaruoutback.org,subaruxvforum.com,superhonda.com,supermotojunkie.com,supra6.com,supraforums.com,survivalistboards.com,suzuki-forums.com,suzuki-forums.net,suzukiatvforums.com,suzukicentral.com,sv-portal.com,svrider.com,swedespeed.com##+js(rmnt, script, html-load.com) +t-goforum.com,t-shirtforums.com,taikoboards.com,talkaboutmarriage.com,talkbudgies.com,talkclassical.com,talkcockatiels.com,talkesg.com,talkford.com,talkparrotlets.com,talkparrots.com,talonsxsforum.com,taosforums.com,tarokforum.com,tarracoforums.co.uk,taurusarmed.net,taurusclub.com,taycanevforum.com,tbssowners.com,tccoa.com,tcrossforums.co.uk,team-integra.net,techguy.org,techsupportforum.com,telo-forum.com,tennisforum.com,tennspeed.net,terrainforum.com,terrainforum.net,teryxforums.net,teryxhq.com,teslabottalk.com,teslaownersonline.com,texas4x4.org,theakforum.net,thebassbarn.com,thebassholes.com,theboxotruth.com,thecombineforum.com,thedieselgarage.com,thedieselstop.com,thefirearmsforum.com,theflyfishingforum.com,thegoatspot.net,thektog.org,thelawnforum.com,thelupussite.com,thelureforum.com,themgzr.co.uk,thenewx.org,theprofilebrotherhood.com,thereeftank.com,theslingshotforum.com,thespeedtriple.com,thevog.net,thewatchforum.co.uk,thewatchsite.com,theworldofarchitecture.com,thyroidboards.com,tidalfish.com,tiguanevforum.com,tiguanforums.co.uk,titantalk.com,titanxdforum.com,tivocommunity.com,tjcruiserforums.com,tlxforums.com,tlzone.net,tnhuntingclub.com,tonaletalk.com,topolinoforum.com,toyotacelicas.com,toyotachrforum.com,toyotaevforum.com,toyotanation.com,tractorforum.com,tradtalk.com,trailblazertalk.com,trailhunterforums.com,trailsportforum.com,trailvoy.com,transalpowners.com,trapshooters.com,traverseforum.com,traxforum.com,treadmillforum.com,trifive.com,triumph400forum.com,triumph675.net,triumphbobberforum.com,triumphrat.net,trocforums.co.uk,tropicalfishforums.co.uk,tropicalfishkeeping.com,truestreetcars.com,trx250r.net,trx450r.org,trxforums.com,tsxclub.com,ttforum.co.uk,ttora.com,tucson-forum.com,tundra3.com,tundraevforum.com,tundrasolutions.com,tundratalk.net,turbobuicks.com,turbododge.com,tw200forum.com,twospoke.com,twowheelforum.com,txowners.com##+js(rmnt, script, html-load.com) +uberpeople.net,uk-audis.net,uk-mkivs.net,uk-muscle.co.uk,ukcorsa-d.com,ultimateaircooled.com,upownersclub.co.uk,usmle-forums.com,utahconcealedcarry.com,utahwildlife.net##+js(rmnt, script, html-load.com) +v-twinforum.com,v6performance.net,v6z24.com,v8bikeriders.com,vagdrivers.net,vantasforum.com,varminthunters.com,vauxhallownersnetwork.co.uk,veggieboards.com,veggiegardener.com,velarforums.co.uk,veloster.org,velostern.com,velosterturbo.org,venuedrivers.com,victoryforums.com,videoeditingtalk.com,vikingforum.net,vikingforum.org,vinfasttalk.com,vintage-mustang.com,viperalley.com,vizslaforums.com,vn750.com,volconforum.com,volkswagenforum.co.uk,volkswagenownersclub.com,volkszone.com,volusiariders.com,volvo-forums.com,volvoevforum.com,volvoforum.com,volvov40club.com,vtcafe.com,vtxcafe.com,vtxoa.com,vulcanforums.com,vwatlasforum.com,vweosclub.com,vwforum.com,vwidtalk.com,vwscout.org,vwt4forum.co.uk,vwvortex.com##+js(rmnt, script, html-load.com) +wagoneerfans.com,walkingstickforum.com,waltherforums.com,washingtonflyfishing.com,watchfreeks.com,watchtalkforums.info,watchuseek.com,weldingweb.com,wethearmed.com,wfmachines.com,wildcatforums.net,windycityfishing.com,wolverineforums.com,woodworkingtalk.com,workingdogforum.com,workingfromhomeforum.com,worldseafishing.com,wranglerboard.com,wranglerforum.com,wranglerjlforum.com,wrestlingforum.com,wristtwisters.com,wrxforums.com,wrxtuners.com##+js(rmnt, script, html-load.com) +x-trail-uk.co.uk,x7forum.com,xc100forum.com,xc40forum.com,xclassforums.com,xcrforum.com,xdforum.com,xdtalk.com,xeforums.co.uk,xfforum.co.uk,xlrforum.com,xmowners.com,xpeditionforum.com,xpengevforum.com,xpowerforums.com,xr1200ownersgroup.com,xr150lforum.com,xrv.org.uk,xsr700forums.com,xtratime.org##+js(rmnt, script, html-load.com) +yamaha-forum.net,yamahaforum.com,yamahastarbolt.com,yamahastarstryker.com,yariscrossclub.com,yellowbullet.com,yetiownersclub.co.uk,yfzcentral.com,yorkshire-divers.com,yourcobalt.com,yourpatientvoice.com,yoursciontc.com,yxztalk.com##+js(rmnt, script, html-load.com) +z06vette.com,z1000forum.com,z125owners.com,zafiraowners.co.uk,zcar.com,zdxowners.com,zeekrchat.com,zeromotorcycleforum.com,zotyezone.com,zrvforum.com,zx-10r.net,zx25rforum.com,zx4rforum.com,zx6r.com,zxforums.com##+js(rmnt, script, html-load.com) +! !SECTION: Ad-Shield +! SECTION: Fineshop Design anti-adb sites +!#if cap_html_filtering +cccam4sat.com,dipsnp.com,everydaytechvams.com,formyanime.com,gsm-solution.com,h-donghua.com,hindisubbedacademy.com,hm4tech.info,husseinezzat.com,mydverse.*,panelprograms.blogspot.com,ripexbooster.xyz,serial4.com,technicians0.blogspot.com,tutorgaming.com,unblockedgamesgplus.gitlab.io##^script:has-text(antiAdBlockerHandler) +!#else +cccam4sat.com,dipsnp.com,everydaytechvams.com,formyanime.com,gsm-solution.com,h-donghua.com,hindisubbedacademy.com,hm4tech.info,husseinezzat.com,mydverse.*,panelprograms.blogspot.com,ripexbooster.xyz,serial4.com,technicians0.blogspot.com,tutorgaming.com,unblockedgamesgplus.gitlab.io##+js(rmnt, script, antiAdBlockerHandler) +!#endif +formyanime.com,gsm-solution.com,h-donghua.com,hindisubbedacademy.com,hm4tech.info,mydverse.*,panelprograms.blogspot.com,ripexbooster.xyz,serial4.com,tutorgaming.com,unblockedgamesgplus.gitlab.io,everydaytechvams.com,dipsnp.com,cccam4sat.com##.popSc +lankapradeepa.com##.js-antiadblocker:remove() +! !SECTION: Fineshop Design anti-adb sites +! SECTION: Arkadium +@@||ams.cdn.arkadiumhosted.com/advertisement/video/*/video-ads.js$script,domain=zone.msn.com +arcade.buzzrtv.com,arcade.dailygazette.com,arcade.lemonde.fr,arena.gamesforthebrain.com,bestpuzzlesandgames.com,cointiply.arkadiumarena.com,gamelab.com,gameplayneo.com,games.abqjournal.com,games.arkadium.com,games.amny.com,games.bellinghamherald.com,games.besthealthmag.ca,games.bnd.com,games.boston.com,games.bostonglobe.com,games.bradenton.com,games.centredaily.com,games.charlottegames.cnhinews.com,games.crosswordgiant.com,games.dailymail.co.uk,games.dailymail.com,games.dallasnews.com,games.daytondailynews.com,games.denverpost.com,games.everythingzoomer.com,games.fresnobee.com,games.gameshownetwork.com,games.get.tv,games.greatergood.com,games.heraldonline.com,games.heraldsun.com,games.idahostatesman.com,games.insp.com,games.islandpacket.com,games.journal-news.com,games.kansas.com,games.kansascity.com,games.kentucky.com,games.lancasteronline.com,games.ledger-enquirer.com,games.macon.com,games.mashable.com,games.mercedsunstar.com,games.metro.us,games.metv.com,games.miamiherald.com,games.modbee.com,games.moviestvnetwork.com,games.myrtlebeachonline.com,games.games.newsgames.parade.com,games.pressdemocrat.com,games.puzzlebaron.com,games.puzzler.com,games.puzzles.ca,games.qns.com,games.readersdigest.ca,games.sacbee.com,games.sanluisobispo.com,games.sixtyandme.com,games.sltrib.com,games.springfieldnewssun.com,games.star-telegram.com,games.startribune.com,games.sunherald.com,games.theadvocate.com,games.thenewstribune.com,games.theolympian.com,games.theportugalnews.com,games.thestar.com,games.thestate.com,games.tri-cityherald.com,games.triviatoday.com,games.usnews.com,games.word.tips,games.wordgenius.com,games.wtop.com,jeux.meteocity.com,juegos.as.com,juegos.elnuevoherald.com,juegos.elpais.com,philly.arkadiumarena.com,play.dictionary.com,puzzles.bestforpuzzles.com,puzzles.centralmaine.com,puzzles.crosswordsolver.org,puzzles.independent.co.uk,puzzles.nola.com,puzzles.pressherald.com,puzzles.standard.co.uk,puzzles.sunjournal.com##+js(set, __INITIAL_STATE__.config.theme.ads.isAdBlockerEnabled, false) +arcade.buzzrtv.com,arcade.dailygazette.com,arcade.lemonde.fr,arena.gamesforthebrain.com,bestpuzzlesandgames.com,cointiply.arkadiumarena.com,gamelab.com,gameplayneo.com,games.abqjournal.com,games.arkadium.com,games.amny.com,games.bellinghamherald.com,games.besthealthmag.ca,games.bnd.com,games.boston.com,games.bostonglobe.com,games.bradenton.com,games.centredaily.com,games.charlottegames.cnhinews.com,games.crosswordgiant.com,games.dailymail.co.uk,games.dailymail.com,games.dallasnews.com,games.daytondailynews.com,games.denverpost.com,games.everythingzoomer.com,games.fresnobee.com,games.gameshownetwork.com,games.get.tv,games.greatergood.com,games.heraldonline.com,games.heraldsun.com,games.idahostatesman.com,games.insp.com,games.islandpacket.com,games.journal-news.com,games.kansas.com,games.kansascity.com,games.kentucky.com,games.lancasteronline.com,games.ledger-enquirer.com,games.macon.com,games.mashable.com,games.mercedsunstar.com,games.metro.us,games.metv.com,games.miamiherald.com,games.modbee.com,games.moviestvnetwork.com,games.myrtlebeachonline.com,games.games.newsgames.parade.com,games.pressdemocrat.com,games.puzzlebaron.com,games.puzzler.com,games.puzzles.ca,games.qns.com,games.readersdigest.ca,games.sacbee.com,games.sanluisobispo.com,games.sixtyandme.com,games.sltrib.com,games.springfieldnewssun.com,games.star-telegram.com,games.startribune.com,games.sunherald.com,games.theadvocate.com,games.thenewstribune.com,games.theolympian.com,games.theportugalnews.com,games.thestar.com,games.thestate.com,games.tri-cityherald.com,games.triviatoday.com,games.usnews.com,games.word.tips,games.wordgenius.com,games.wtop.com,jeux.meteocity.com,juegos.as.com,juegos.elnuevoherald.com,juegos.elpais.com,philly.arkadiumarena.com,play.dictionary.com,puzzles.bestforpuzzles.com,puzzles.centralmaine.com,puzzles.crosswordsolver.org,puzzles.independent.co.uk,puzzles.nola.com,puzzles.pressherald.com,puzzles.standard.co.uk,puzzles.sunjournal.com#@#display-ad-component +arcade.buzzrtv.com,arcade.dailygazette.com,arcade.lemonde.fr,arena.gamesforthebrain.com,bestpuzzlesandgames.com,cointiply.arkadiumarena.com,gamelab.com,gameplayneo.com,games.abqjournal.com,games.arkadium.com,games.amny.com,games.bellinghamherald.com,games.besthealthmag.ca,games.bnd.com,games.boston.com,games.bostonglobe.com,games.bradenton.com,games.centredaily.com,games.charlottegames.cnhinews.com,games.crosswordgiant.com,games.dailymail.co.uk,games.dailymail.com,games.dallasnews.com,games.daytondailynews.com,games.denverpost.com,games.everythingzoomer.com,games.fresnobee.com,games.gameshownetwork.com,games.get.tv,games.greatergood.com,games.heraldonline.com,games.heraldsun.com,games.idahostatesman.com,games.insp.com,games.islandpacket.com,games.journal-news.com,games.kansas.com,games.kansascity.com,games.kentucky.com,games.lancasteronline.com,games.ledger-enquirer.com,games.macon.com,games.mashable.com,games.mercedsunstar.com,games.metro.us,games.metv.com,games.miamiherald.com,games.modbee.com,games.moviestvnetwork.com,games.myrtlebeachonline.com,games.games.newsgames.parade.com,games.pressdemocrat.com,games.puzzlebaron.com,games.puzzler.com,games.puzzles.ca,games.qns.com,games.readersdigest.ca,games.sacbee.com,games.sanluisobispo.com,games.sixtyandme.com,games.sltrib.com,games.springfieldnewssun.com,games.star-telegram.com,games.startribune.com,games.sunherald.com,games.theadvocate.com,games.thenewstribune.com,games.theolympian.com,games.theportugalnews.com,games.thestar.com,games.thestate.com,games.tri-cityherald.com,games.triviatoday.com,games.usnews.com,games.word.tips,games.wordgenius.com,games.wtop.com,jeux.meteocity.com,juegos.as.com,juegos.elnuevoherald.com,juegos.elpais.com,philly.arkadiumarena.com,play.dictionary.com,puzzles.bestforpuzzles.com,puzzles.centralmaine.com,puzzles.crosswordsolver.org,puzzles.independent.co.uk,puzzles.nola.com,puzzles.pressherald.com,puzzles.standard.co.uk,puzzles.sunjournal.com##+js(nano-sib, generalTimeLeft, *, 0.001) +arcade.buzzrtv.com,arcade.dailygazette.com,arcade.lemonde.fr,arena.gamesforthebrain.com,bestpuzzlesandgames.com,cointiply.arkadiumarena.com,gamelab.com,gameplayneo.com,games.abqjournal.com,games.arkadium.com,games.amny.com,games.bellinghamherald.com,games.besthealthmag.ca,games.bnd.com,games.boston.com,games.bostonglobe.com,games.bradenton.com,games.centredaily.com,games.charlottegames.cnhinews.com,games.crosswordgiant.com,games.dailymail.co.uk,games.dailymail.com,games.dallasnews.com,games.daytondailynews.com,games.denverpost.com,games.everythingzoomer.com,games.fresnobee.com,games.gameshownetwork.com,games.get.tv,games.greatergood.com,games.heraldonline.com,games.heraldsun.com,games.idahostatesman.com,games.insp.com,games.islandpacket.com,games.journal-news.com,games.kansas.com,games.kansascity.com,games.kentucky.com,games.lancasteronline.com,games.ledger-enquirer.com,games.macon.com,games.mashable.com,games.mercedsunstar.com,games.metro.us,games.metv.com,games.miamiherald.com,games.modbee.com,games.moviestvnetwork.com,games.myrtlebeachonline.com,games.games.newsgames.parade.com,games.pressdemocrat.com,games.puzzlebaron.com,games.puzzler.com,games.puzzles.ca,games.qns.com,games.readersdigest.ca,games.sacbee.com,games.sanluisobispo.com,games.sixtyandme.com,games.sltrib.com,games.springfieldnewssun.com,games.star-telegram.com,games.startribune.com,games.sunherald.com,games.theadvocate.com,games.thenewstribune.com,games.theolympian.com,games.theportugalnews.com,games.thestar.com,games.thestate.com,games.tri-cityherald.com,games.triviatoday.com,games.usnews.com,games.word.tips,games.wordgenius.com,games.wtop.com,jeux.meteocity.com,juegos.as.com,juegos.elnuevoherald.com,juegos.elpais.com,philly.arkadiumarena.com,play.dictionary.com,puzzles.bestforpuzzles.com,puzzles.centralmaine.com,puzzles.crosswordsolver.org,puzzles.independent.co.uk,puzzles.nola.com,puzzles.pressherald.com,puzzles.standard.co.uk,puzzles.sunjournal.com##[class^="DisplayAd__container"] +gameplayneo.com##+js(rmnt, script, /adblock/i) +crosswordsolver.com##.ad-container +gameplayneo.com##ark-top-ad +gameplayneo.com##.ark-ad-display-container +||arkadiumhosted.com/*/adsBlob/$xhr,domain=bestforpuzzles.com|charlotteobserver.com|independent.co.uk|miamiherald.com|standard.co.uk|word.tips +##.ark-ad-message +/advertisement/video/static/advantage.xml^$xhr +arkadiumhosted.com##+js(set, Adv_ab, false) +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=arkadiumhosted.com +||ams.cdn.arkadiumhosted.com/advertisement/display/staging/display-ads.js$xhr,domain=arkadium.com,redirect=noopjs +arkadium.com##+js(set, __INITIAL_STATE__.gameLists.gamesNoPrerollIds.indexOf, trueFunc) +arkadium.com##+js(nano-sib) +arkadium.com#@#div[class^="Ad-adContainer"] +arkadium.com##div[class^="Ad-adContainer"]:style(min-height:1px!important;min-width:1px!important;) +arkadium.com##span[class*=Ad-caption-] +! !SECTION: Arkadium +! SECTION: Dood +*$script,3p,denyallow=cloudflare.com|crisp.chat|doodcdn.io|google.com|gstatic.com,domain=all3do.com|d0000d.com|d000d.com|d0o0d.com|do0od.com|do7go.com|dood.*|doods.*|dooodster.com|dooood.*|doply.net|ds2play.com|ds2video.com|dsvplay.com|vidply.com|vide0.net|vvide0.com|playmogo.com +/sw.js$script,domain=all3do.com|d0000d.com|d000d.com|d0o0d.com|do0od.com|do7go.com|dood.*|doods.*|dooodster.com|dooood.*|doply.net|ds2play.com|ds2video.com|dsvplay.com|vidply.com|vide0.net|vvide0.com|playmogo.com +!#if cap_html_filtering +all3do.com,d0000d.com,d000d.com,d0o0d.com,do0od.com,do7go.com,dood.*,doods.*,doodstream.*,dooodster.com,dooood.*,doply.net,ds2play.com,ds2video.com,playmogo.com,vide0.net,vidply.com,vvide0.com##^script:has-text(/adblock|popunder|openedPop|WebAssembly|wpadmngr/) +!#else +all3do.com,d0000d.com,d000d.com,d0o0d.com,do0od.com,do7go.com,dood.*,doods.*,doodstream.*,dooodster.com,dooood.*,doply.net,ds2play.com,ds2video.com,playmogo.com,vide0.net,vidply.com,vvide0.com##+js(rmnt, script, /adblock|popunder|openedPop|WebAssembly|wpadmngr/) +!#endif +all3do.com,d0000d.com,d000d.com,d0o0d.com,do0od.com,do7go.com,dood.*,doods.*,doodstream.*,dooodster.com,dooood.*,doply.net,ds2play.com,ds2video.com,playmogo.com,vide0.net,vidply.com,vvide0.com##+js(aopr, __aaZoneid) +all3do.com,d0000d.com,d000d.com,d0o0d.com,do0od.com,do7go.com,dood.*,doods.*,doodstream.*,dooodster.com,dooood.*,doply.net,ds2play.com,ds2video.com,playmogo.com,vide0.net,vidply.com,vvide0.com##+js(aopw, DoodPop) +all3do.com,d0000d.com,d000d.com,d0o0d.com,do0od.com,do7go.com,dood.*,doods.*,doodstream.*,dooodster.com,dooood.*,doply.net,ds2play.com,ds2video.com,playmogo.com,vide0.net,vidply.com,vvide0.com##+js(acs, decodeURI, decodeURIComponent) +all3do.com,d0000d.com,d000d.com,d0o0d.com,do0od.com,do7go.com,dood.*,doods.*,doodstream.*,dooodster.com,dooood.*,doply.net,ds2play.com,ds2video.com,playmogo.com,vide0.net,vidply.com,vvide0.com##+js(nowoif) +/embed-1/ajax/e-1/banners|$xhr +/embed-1/e-1/banners|$xhr +||iili.io/JvfIu1a.gif$image +hianime.to##[href="https://1flix.to/"] +###vidcloud-player > #overlay-container +||doo.lat/public/overroll_gasparin.js +dodz.*,doodss.*,doood.*,doooood.*,kakitengah.*,y2tube.pro##+js(nowoif) +||dooods.pro/download_popunder$popup +doodss.*###video-container ~ a[href="#"] +doooood.co###overlay +dsvplay.com##+js(acs, WebAssembly, atob) +dsvplay.com##+js(nowoif) +$popup,3p,domain=ds2play.com,badfilter +! !SECTION: Dood +! SECTION: voe.sx +/\/[0-9a-z]{2}\/[0-9a-f]{32}\.js/$script,xhr,3p,match-case,method=get,to=com,from=adrianmissionminute.com|alejandrocenturyoil.com|alleneconomicmatter.com|bethshouldercan.com|brittneystandardwestern.com|brookethoughi.com|brucevotewithin.com|bryantenunder.com|charlessheimprove.com|charlestoughrace.com|christopheruntilpoint.com|cindyeyefinal.com|dianaavoidthey.com|diananatureforeign.com|donaldlineelse.com|edwardarriveoften.com|ericeastweight.com|erikcoldperson.com|evelynthankregion.com|garylargeavailable.com|graceaddresscommunity.com|heatherdiscussionwhen.com|heatherwholeinvolve.com|housecardsummerbutton.com|ianrequireadult.com|jamessoundcost.com|jamiesamewalk.com|jasminetesttry.com|jasonresponsemeasure.com|jayservicestuff.com|jeanprofessorcentral.com|jefferycontrolmodel.com|jennifereconomicgive.com|jessicaclearout.com|jessicaglassauthor.com|jessicayeahcatch.com|jilliandescribecompany.com|johnalwayssame.com|johntryopen.com|jonathansociallike.com|josephseveralconcern.com|juliewomanwish.com|kathleenmemberhistory.com|kathyinformationwhether.com|kellywhatcould.com|kennethofficialitem.com|kristiesoundsimply.com|lancewhosedifficult.com|lauradaydo.com|lindalastattack.com|lisatrialidea.com|lorimuchbenefit.com|loriwithinfamily.com|lukecomparetwo.com|lukesitturn.com|mariatheserepublican.com|marissasharecareer.com|markstyleall.com|maryspecialwatch.com|maxfinishseveral.com|michaelapplysome.com|mikaylaarealike.com|morganoperationface.com|nathanfromsubject.com|pamelachangemission.com|phenomenalityuniform.com|rebeccacostthousand.com|rebeccaneverbase.com|richardquestionbuilding.com|richardsignfish.com|roberteachfinal.com|robertordercharacter.com|robertplacespace.com|ryanagoinvolve.com|sandratableother.com|sandrataxeight.com|sethniceletter.com|shannonpersonalcost.com|susanhavekeep.com|timmaybealready.com|toddpartneranimal.com|vickisaveworker.com|voe.sx|walterprettytheir.com +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,3p,redirect=google-ima.js,domain=adrianmissionminute.com|alejandrocenturyoil.com|alleneconomicmatter.com|bethshouldercan.com|brittneystandardwestern.com|brookethoughi.com|brucevotewithin.com|bryantenunder.com|charlessheimprove.com|charlestoughrace.com|christopheruntilpoint.com|cindyeyefinal.com|dianaavoidthey.com|diananatureforeign.com|donaldlineelse.com|edwardarriveoften.com|ericeastweight.com|erikcoldperson.com|evelynthankregion.com|garylargeavailable.com|graceaddresscommunity.com|heatherdiscussionwhen.com|heatherwholeinvolve.com|housecardsummerbutton.com|ianrequireadult.com|jamessoundcost.com|jamiesamewalk.com|jasminetesttry.com|jasonresponsemeasure.com|jayservicestuff.com|jeanprofessorcentral.com|jefferycontrolmodel.com|jennifereconomicgive.com|jessicaclearout.com|jessicaglassauthor.com|jessicayeahcatch.com|jilliandescribecompany.com|johnalwayssame.com|johntryopen.com|jonathansociallike.com|josephseveralconcern.com|juliewomanwish.com|kathleenmemberhistory.com|kathyinformationwhether.com|kellywhatcould.com|kennethofficialitem.com|kristiesoundsimply.com|lancewhosedifficult.com|lauradaydo.com|lindalastattack.com|lisatrialidea.com|lorimuchbenefit.com|loriwithinfamily.com|lukecomparetwo.com|lukesitturn.com|mariatheserepublican.com|marissasharecareer.com|markstyleall.com|maryspecialwatch.com|maxfinishseveral.com|michaelapplysome.com|mikaylaarealike.com|morganoperationface.com|nathanfromsubject.com|pamelachangemission.com|phenomenalityuniform.com|rebeccacostthousand.com|rebeccaneverbase.com|richardquestionbuilding.com|richardsignfish.com|roberteachfinal.com|robertordercharacter.com|robertplacespace.com|ryanagoinvolve.com|sandratableother.com|sandrataxeight.com|sethniceletter.com|shannonpersonalcost.com|susanhavekeep.com|timmaybealready.com|toddpartneranimal.com|vickisaveworker.com|voe.sx|walterprettytheir.com,important +adrianmissionminute.com,alejandrocenturyoil.com,alleneconomicmatter.com,bethshouldercan.com,brittneystandardwestern.com,brookethoughi.com,brucevotewithin.com,bryantenunder.com,charlessheimprove.com,charlestoughrace.com,christopheruntilpoint.com,cindyeyefinal.com,dianaavoidthey.com,diananatureforeign.com,donaldlineelse.com,edwardarriveoften.com,ericeastweight.com,erikcoldperson.com,evelynthankregion.com,garylargeavailable.com,graceaddresscommunity.com,heatherdiscussionwhen.com,heatherwholeinvolve.com,housecardsummerbutton.com,ianrequireadult.com,jamessoundcost.com,jamiesamewalk.com,jasminetesttry.com,jasonresponsemeasure.com,jayservicestuff.com,jeanprofessorcentral.com,jefferycontrolmodel.com,jennifereconomicgive.com,jessicaclearout.com,jessicaglassauthor.com,jessicayeahcatch.com,jilliandescribecompany.com,johnalwayssame.com,johntryopen.com,jonathansociallike.com,josephseveralconcern.com,juliewomanwish.com,kathleenmemberhistory.com,kathyinformationwhether.com,kellywhatcould.com,kennethofficialitem.com,kristiesoundsimply.com,lancewhosedifficult.com,lauradaydo.com,lindalastattack.com,lisatrialidea.com,lorimuchbenefit.com,loriwithinfamily.com,lukecomparetwo.com,lukesitturn.com,mariatheserepublican.com,marissasharecareer.com,markstyleall.com,maryspecialwatch.com,maxfinishseveral.com,michaelapplysome.com,mikaylaarealike.com,morganoperationface.com,nathanfromsubject.com,pamelachangemission.com,phenomenalityuniform.com,rebeccacostthousand.com,rebeccaneverbase.com,richardquestionbuilding.com,richardsignfish.com,roberteachfinal.com,robertordercharacter.com,robertplacespace.com,ryanagoinvolve.com,sandratableother.com,sandrataxeight.com,sethniceletter.com,shannonpersonalcost.com,susanhavekeep.com,timmaybealready.com,toddpartneranimal.com,vickisaveworker.com,voe.sx,walterprettytheir.com##+js(nowoif) +adrianmissionminute.com,alejandrocenturyoil.com,alleneconomicmatter.com,bethshouldercan.com,bigclatterhomesguideservice.com,brittneystandardwestern.com,brookethoughi.com,brucevotewithin.com,bryantenunder.com,charlessheimprove.com,charlestoughrace.com,christopheruntilpoint.com,cindyeyefinal.com,denisegrowthwide.com,dianaavoidthey.com,diananatureforeign.com,donaldlineelse.com,edwardarriveoften.com,ericeastweight.com,erikcoldperson.com,evelynthankregion.com,garylargeavailable.com,graceaddresscommunity.com,heatherdiscussionwhen.com,heatherwholeinvolve.com,housecardsummerbutton.com,ianrequireadult.com,jamessoundcost.com,jamiesamewalk.com,jasminetesttry.com,jasonresponsemeasure.com,jayservicestuff.com,jeanprofessorcentral.com,jefferycontrolmodel.com,jennifereconomicgive.com,jessicaclearout.com,jessicaglassauthor.com,jessicayeahcatch.com,jilliandescribecompany.com,johnalwayssame.com,johntryopen.com,jonathansociallike.com,josephseveralconcern.com,juliewomanwish.com,kathyinformationwhether.com,kellywhatcould.com,kennethofficialitem.com,kristiesoundsimply.com,lancewhosedifficult.com,lauradaydo.com,lindalastattack.com,lisatrialidea.com,lorimuchbenefit.com,loriwithinfamily.com,lukecomparetwo.com,lukesitturn.com,mariatheserepublican.com,marissasharecareer.com,markstyleall.com,maryspecialwatch.com,maxfinishseveral.com,michaelapplysome.com,mikaylaarealike.com,morganoperationface.com,nathanfromsubject.com,pamelachangemission.com,rebeccacostthousand.com,rebeccaneverbase.com,richardquestionbuilding.com,richardsignfish.com,roberteachfinal.com,robertordercharacter.com,robertplacespace.com,ryanagoinvolve.com,sandratableother.com,sandrataxeight.com,sethniceletter.com,shannonpersonalcost.com,susanhavekeep.com,timmaybealready.com,tinycat-voe-fashion.com,toddpartneranimal.com,troyyourlead.com,uptodatefinishconference.com,uptodatefinishconferenceroom.com,vickisaveworker.com,voe.sx,walterprettytheir.com##+js(set, console.clear, undefined) +adrianmissionminute.com,alejandrocenturyoil.com,bryantenunder.com,charlessheimprove.com,charlestoughrace.com,christopheruntilpoint.com,dianaavoidthey.com,ericeastweight.com,garylargeavailable.com,heatherwholeinvolve.com,ianrequireadult.com,jeanprofessorcentral.com,jefferycontrolmodel.com,jennifereconomicgive.com,jessicaclearout.com,jessicayeahcatch.com,jilliandescribecompany.com,johnalwayssame.com,juliewomanwish.com,kathyinformationwhether.com,kellywhatcould.com,kristiesoundsimply.com,lancewhosedifficult.com,lauradaydo.com,lindalastattack.com,lukesitturn.com,mariatheserepublican.com,marissasharecareer.com,maryspecialwatch.com,mikaylaarealike.com,nathanfromsubject.com,pamelachangemission.com,rebeccacostthousand.com,richardquestionbuilding.com,timmaybealready.com,vickisaveworker.com,voe.sx,walterprettytheir.com##+js(acs, globalThis, break;case) +alejandrocenturyoil.com,bryantenunder.com,charlessheimprove.com,charlestoughrace.com,christopheruntilpoint.com,dianaavoidthey.com,ericeastweight.com,garylargeavailable.com,heatherwholeinvolve.com,ianrequireadult.com,jefferycontrolmodel.com,jeanprofessorcentral.com,jennifereconomicgive.com,jessicaclearout.com,jessicayeahcatch.com,jilliandescribecompany.com,johnalwayssame.com,jonathansociallike.commjuliewomanwish.com,kathyinformationwhether.com,kellywhatcould.com,kristiesoundsimply.com,lancewhosedifficult.com,lauradaydo.com,lindalastattack.com,lukesitturn.com,marissasharecareer.com,maryspecialwatch.com,mikaylaarealike.com,nathanfromsubject.com,pamelachangemission.com,rebeccacostthousand.com,richardquestionbuilding.com,timmaybealready.com,vickisaveworker.com,voe.sx,walterprettytheir.com##+js(acs, WebAssembly, atob) +||rochestertrend.com^$all +||facesnotebook.com^$all +||highrevenuecpm.com^$all +/\/[0-9a-z]{2}\/[0-9a-f]{32}\.js/$script,xhr,3p,match-case,method=get,to=com,top=to|tv|~gov.to|~gov.tv|~twitch.tv +/\/[0-9a-z]{2}\/[0-9a-f]{32}\.js/$script,xhr,3p,match-case,method=get,to=com,top=anihq.org|bestbondagevideos.com|voe.sx +voe.sx>>,anihq.org>>,aniworld.to>>,bestbondagevideos.com>>,javboys.tv>>,s.to>>,~addtoany.com,~cloudflare.com,~facebook.com,~fastly.net,~twitter.com##+js(nowoif) +voe.sx>>,anihq.org>>,aniworld.to>>,bestbondagevideos.com>>,javboys.tv>>,s.to>>,~addtoany.com,~cloudflare.com,~facebook.com,~fastly.net,~twitter.com##+js(set, console.clear, undefined) +voe.sx>>,anihq.org>>,aniworld.to>>,bestbondagevideos.com>>,javboys.tv>>,s.to>>,~addtoany.com,~cloudflare.com,~facebook.com,~fastly.net,~twitter.com##+js(acs, globalThis, break;case) +voe.sx>>,anihq.org>>,aniworld.to>>,bestbondagevideos.com>>,javboys.tv>>,s.to>>,~addtoany.com,~cloudflare.com,~facebook.com,~fastly.net,~twitter.com##+js(acs, WebAssembly, atob) +voe.sx>>,anihq.org>>,aniworld.to>>,bestbondagevideos.com>>,javboys.tv>>,s.to>>,~addtoany.com,~cloudflare.com,~facebook.com,~fastly.net,~twitter.com##+js(trusted-json-edit, .check=false) +! !SECTION: voe.sx +! SECTION: Hydrax +||iamcdn.net/players/player*.*mins.js$script,domain=freeplayervideo.com|nazarickol.com|player-cdn.com +! abysscdn.com,freeplayervideo.com,nazarickol.com,player-cdn.com##+js(set, detectAdBlockAll, noopFunc) +*$image,redirect-rule=32x32.png,domain=freeplayervideo.com|nazarickol.com|player-cdn.com +freeplayervideo.com,nazarickol.com,player-cdn.com,playhydrax.com##+js(set, console.clear, undefined) +freeplayervideo.com,nazarickol.com,player-cdn.com,playhydrax.com##+js(ra, style, #over) +fullfreeimage.com,freeplayervideo.com,hydraxcdn.biz,imagelovers.com,nazarickol.com,player-cdn.com,playhydrax.com##+js(nowoif, /^/, 1) +jav.guru##.inside-right-sidebar > aside.widget_custom_html +jav.guru###text-76 +jav.guru###text-92 +jav.guru###text-93 +/cdn-cgi/trace$xhr,1p,domain=abysscdn.com|playhydrax.com +abysscdn.com##div[style*="z-index:100000"] +abysscdn.com##.playover +abysscdn.com,playhydrax.com##+js(set, document.ontouchend, null) +abysscdn.com,playhydrax.com##+js(set, document.onclick, null) +abysscdn.com,fembedx.top,fullfreeimage.com,hihihaha1.xyz,hydraxcdn.biz,imagelovers.com,player-cdn.com,playembedapi.site,playermeow.com,playhydrax.com##+js(trusted-replace-outbound-text, Array.prototype.shift, /^.+$/s, '', condition, https) +/favicon.ico|$image,3p,domain=abysscdn.com|fullfreeimage.com|hihihaha1.xyz|hihihaha2.xyz|hydraxcdn.biz|imagelovers.com|player-cdn.com|playermeow.com|playhydrax.com +! popups when moving out of fullscreen +abysscdn.com,fembedx.top,fullfreeimage.com,hihihaha1.xyz,hihihaha2.xyz,hydraxcdn.biz,imagelovers.com,mov18plus.cloud,playembedapi.site,player-cdn.com,playermeow.com,playhydrax.com##+js(aost, HTMLElement.prototype.click, _0x) +abysscdn.com,abyssplayer.com,fembedx.top,fullfreeimage.com,hydraxcdn.biz,imagelovers.com,playembedapi.site,playermeow.com,playhydrax.com###overlay +||com/ick.infonium.org^$frame,1p +||infonium.org^$frame,3p +abysscdn.com,fullfreeimage.com,hihihaha1.xyz,hihihaha2.xyz,playhydrax.com,rufiiguta.com##.loading-overlay ~ div[style^="position: relative;"] +abysscdn.com,fullfreeimage.com,hihihaha1.xyz,hihihaha2.xyz,playhydrax.com,rufiiguta.com##.loading-overlay:has-text(ad) +myzoversion.blogspot.com###content-locker +mov18plus.cloud##+js(nowoif) +mov18plus.cloud##+js(rpnt, script, /.+/gms, 'document.addEventListener("load",()=>{if (typeof jwplayer!="undefined"&&typeof jwplayer().play=="function"){jwplayer().play();}})', condition, FuckAdBlock) +||decafeligiblyhad.com^$all +abyssplayer.com##+js(set, urls, []) +abyssplayer.com##+js(nowoif, , 1) +zokaj.com##+js(nowoif, , 1) +zokaj.com##+js(rmnt, script, popupShown) +zokaj.com###media-player +playhydrax.com##+js(rpnt, script, (isNoAds), (true)) +||affluentarmyequator.com^$popup,doc +||boobausauhipsa.net^$popup,doc +||usheebainaut.com^ +! !SECTION: Hydrax +! SECTION: TurboVIPlay +! fix emturbovid.com player (e.g. supjav.com) +emturbovid.com,findjav.com,javggvideo.xyz,mmtv01.xyz,stbturbo.xyz,trailerhg.xyz,turbocloud.xyz,turboplayers.xyz,turbovid.vip,turbovidhls.com###pop +emturbovid.com,findjav.com,javggvideo.xyz,mmtv01.xyz,stbturbo.xyz,trailerhg.xyz,turbocloud.xyz,turboplayers.xyz,turbovid.vip,turbovidhls.com###pop1 +emturbovid.com,findjav.com,javggvideo.xyz,mmtv01.xyz,stbturbo.xyz,trailerhg.xyz,turbocloud.xyz,turboplayers.xyz,turbovid.vip,turbovidhls.com###pop2 +emturbovid.com,turbocloud.xyz,turbovid.xyz##.div_pop +!emturbovid.com,findjav.com,javggvideo.xyz,mmtv01.xyz,stbturbo.xyz,trailerhg.xyz,turboplayers.xyz,turbovid.vip,turbovidhls.com##+js(aeld, click, pop) +emturbovid.com,findjav.com,javggvideo.xyz,mmtv01.xyz,stbturbo.xyz,trailerhg.xyz,turbocloud.xyz,turboplayers.xyz,turbovid.vip,turbovidhls.com##+js(trusted-set, premium, "'1'") +emturbovid.com,findjav.com,javggvideo.xyz,mmtv01.xyz,stbturbo.xyz,trailerhg.xyz,turbocloud.xyz,turboplayers.xyz,turbovid.vip,turbovidhls.com##+js(nowoif) +emturbovid.com,findjav.com,javggvideo.xyz,mmtv01.xyz,stbturbo.xyz,trailerhg.xyz,turbocloud.xyz,turboplayers.xyz,turbovid.vip,turbovidhls.com##+js(nostif, window.open) +emturbovid.com,findjav.com,javggvideo.xyz,mmtv01.xyz,stbturbo.xyz,trailerhg.xyz,turbocloud.xyz,turboplayers.xyz,turbovid.vip,turbovidhls.com##+js(trusted-rpnt, script, /openNewTab\(".*?"\)/g, null) +!#if cap_html_filtering +||emturbovid.com^$replace=/openNewTab\(".*?"\)/null/g +||mmtv01.xyz^$replace=/openNewTab\(".*?"\)/null/g +||stbturbo.xyz^$replace=/openNewTab\(".*?"\)/null/g +||javggvideo.xyz^$replace=/openNewTab\(".*?"\)/null/g +||trailerhg.xyz^$replace=/openNewTab\(".*?"\)/null/g +||turboplayers.xyz^$replace=/openNewTab\(".*?"\)/null/g +||turbovidhls.com^$replace=/openNewTab\(".*?"\)/null/g +||emturbovid.com^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation +||turbovid.xyz^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation +!#endif +! ##.jw-wrapper > div[style="opacity: 0; visibility: hidden; overflow: hidden; display: block; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;"] +!#if env_mobile +emturbovid.com,hihihehe01.xyz#@#.jw-wrapper > div[style="opacity: 0; visibility: hidden; overflow: hidden; display: block; position: absolute; top: 0px; left: 0px; width: 100%; height: 100%;"] +!#endif +turtleviplay.xyz##+js(set, playID, 1) +turtleviplay.xyz##+js(aost, document.createElement, openNewTab) +turtleviplay.xyz##+js(nowoif) +! !SECTION: TurboVIPlay +! SECTION: BigWarp +bigwarp.*##+js(nowoif) +bigwarp.*##+js(acs, document.createElement, overlay) +||bigwarp.io/images/close.png$image +bigwarp.*###blk1 +*$script,3p,denyallow=bigwarp.io|bootstrapcdn.com|fontawesome.com|gstatic.com|jsdelivr.net,domain=bigwarp.cc +! !SECTION: BigWarp +! SECTION: Mixdrop +yomovies.*##+js(aopr, decodeURI) +mixdrp.*##+js(aeld, load, download-wrapper) +mixdrop.*##+js(set, MDCore.adblock, 0) +mixdrop.*,mixdrp.*##+js(acs, $, String.fromCharCode) +mdbekjwqa.pw##+js(noeval-if, setInterval) +mdbekjwqa.pw##+js(acs, document.createElement, onerror) +m1xdrop.*,m1xdrop.com,m1xdrop.net,md3b0j6hj.com,mdfx9dc8n.net,mdzsmutpcvykb.net,miixdrop.net,miiixdrop.net,miiiixdrop.net,miiiiixdrop.net,mixdrop21.net,mixdrop23.net,mixdropjmk.pw##+js(rmnt, script, /h=decodeURIComponent|popundersPerIP/) +m1xdrop.*,m1xdrop.com,m1xdrop.net,md3b0j6hj.com,mdbekjwqa.pw,mdfx9dc8n.net,mdzsmutpcvykb.net,miixdrop.net,miiixdrop.net,miiiixdrop.net,miiiiixdrop.net,mixdroop.*,mixdrop.*,mixdrop21.net,mixdrop23.net,mixdropjmk.pw,mixdrp.*##+js(nowoif) +md3b0j6hj.com##+js(nano-stb, Please wait, *, 0.001) +||mixdrop.*/sw.js$script,1p +m1xdrop.*,m1xdrop.com,m1xdrop.net,md3b0j6hj.com,mdbekjwqa.pw,mdfx9dc8n.net,miixdrop.net,miiixdrop.net,miiiixdrop.net,miiiiixdrop.net,mixdrop23.net,mixdroop.*,mixdrop.*,mixdrop21.net,mixdrop23.net,mixdropjmk.pw,mixdrp.*##body > div[style^="position: absolute;"][style*="z-index"] +*$script,3p,denyallow=google.com|gstatic.com|hwcdn.net|jquery.com,domain=m1xdrop.com|m1xdrop.net|mixdrop23.net|mixdrop.*|mixdrp.*|~mixdrop.one|mixdroop.*|m1xdrop.bz +miixdrop.net,miiixdrop.net,miiiixdrop.net,miiiiixdrop.net##+js(acs, addEventListener, adserverDomain) +||brightadnetwork.com^ +! !SECTION: Mixdrop +! SECTION: Streamtape +!#if cap_html_filtering +adblockeronstape.*,adblockplustape.*,adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,adblocktape.*,advertape.net,advertisertape.com,antiadtape.*,gettapeads.com,noblocktape.*,stapadblockuser.*,stape.*,strcloud.*,streamadblocker.*,streamadblockplus.*,streamnoads.com,streamta.*,streamtape.*,streamtapeadblockuser.*,strtape.*,strtapeadblock.*,strtapeadblocker.*,strtpe.*,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapeblocker.com,tapelovesads.org,tapenoads.com,tapepops.com,tapewithadblock.org,tpead.net,watchadsontape.com##^script:has-text(/WebAssembly|forceunder/) +!#else +adblockeronstape.*,adblockplustape.*,adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,adblocktape.*,advertape.net,advertisertape.com,antiadtape.*,gettapeads.com,noblocktape.*,stapadblockuser.*,stape.*,strcloud.*,streamadblocker.*,streamadblockplus.*,streamnoads.com,streamta.*,streamtape.*,streamtapeadblockuser.*,strtape.*,strtapeadblock.*,strtapeadblocker.*,strtpe.*,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapeblocker.com,tapelovesads.org,tapenoads.com,tapepops.com,tapewithadblock.org,tpead.net,watchadsontape.com##+js(rmnt, script, /WebAssembly|forceunder/) +!#endif +adblockeronstape.*,adblockplustape.*,adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,adblocktape.*,advertape.net,advertisertape.com,antiadtape.*,gettapeads.com,noblocktape.*,stapadblockuser.*,stape.*,strcloud.*,streamadblocker.*,streamadblockplus.*,streamnoads.com,streamta.*,streamtape.*,streamtapeadblockuser.*,strtape.*,strtapeadblock.*,strtapeadblocker.*,strtpe.*,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapeblocker.com,tapelovesads.org,tapenoads.com,tapepops.com,tapewithadblock.org,watchadsontape.com##+js(nosiif, adblock) +adblockeronstape.*,adblockplustape.*,adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,advertape.net,advertisertape.com,antiadtape.*,gettapeads.com,noblocktape.*,shavetape.*,stapadblockuser.*,stape.*,strcloud.*,streamadblocker.*,streamadblockplus.*,streamnoads.com,streamta.*,streamtape.*,streamtapeadblock.*,streamtapeadblockuser.*,strtape.*,strtapeadblock.*,strtapeadblocker.*,strtapewithadblock.*,strtpe.*,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapeblocker.com,tapelovesads.org,tapenoads.com,tapepops.com,tapewithadblock.org,watchadsontape.com##+js(nowoif) +adblockeronstape.*,adblockplustape.*,adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,advertape.net,advertisertape.com,antiadtape.*,gettapeads.com,noblocktape.*,shavetape.*,stapadblockuser.*,stape.*,strcloud.*,streamadblocker.*,streamadblockplus.*,streamnoads.com,streamta.*,streamtape.*,streamtapeadblock.*,streamtapeadblockuser.*,strtape.*,strtapeadblock.*,strtapeadblocker.*,strtapewithadblock.*,strtpe.*,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapeblocker.com,tapelovesads.org,tapenoads.com,tapepops.com,tapewithadblock.org,watchadsontape.com##+js(aopr, Adcash) +strcloud.*,streamtape.*,streamta.*,strtape.*,strtapeadblock.*##+js(ra, target, #downloadvideo) +adblockeronstape.*,adblockplustape.*,adblocktape.*,advertape.net,advertisertape.com,antiadtape.*,gettapeads.com,noblocktape.*,shavetape.*,stapadblockuser.*,strcloud.*,streamadblockplus.*,streamnoads.com,streamta.*,streamtape.*,streamtapeadblockuser.*,strtape.*,strtapeadblock.*,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapeblocker.com,tapelovesads.org,tapenoads.com,tapepops.com,tapewithadblock.org,watchadsontape.com##+js(nano-stb, counter) +adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,antiadtape.*,stape.*,strcloud.*,streamtape.*,streamta.*,strtape.*,strtpe.*,strtapeadblock.*#@#.google-ad +adblockstreamtape.*,adblockstrtape.*,adblockstrtech.*,antiadtape.*,shavetape.*,stape.*,strcloud.*,streamtape.*,streamta.*,strtape.*,strtpe.*,strtapeadblock.*##[class*="bn-container"], div[style*="z-index: 300000;"] +@@*$ghide,domain=adblockstreamtape.*|adblockstrtape.*|adblockstrtech.*|antiadtape.*|shavetape.cash|stape.*|strcloud.*|streamta.*|streamtape.*|streamtapeadblock.*|strtape.*|strtpe.* +strcloud.*,streamtape.*,streamta.*,strtape.*,strtpe.*,strtapeadblock.*##iframe[src^="data:"] +/sw.js$script,1p,domain=strcloud.*|streamtape.*|streamta.*|strtape.*|strtpe.*|strtapeadblock.* +streamadblocker.*##+js(acs, setTimeout, admc) +streamnoads.com##+js(rmnt, script, FingerprintJS) +||dzhzp0zlnyoe8.cloudfront.net^ +advertisertape.com,tapeadsenjoyer.com,tapeadvertisement.com,tapeantiads.com,tapelovesads.org,tapenoads.com,watchadsontape.com#@#.skyscraper.ad +*$script,3p,denyallow=google.com|gstatic.com,domain=advertape.net|streamtape.*|tpead.net|watchadsontape.com +*$object,3p,domain=advertape.net|streamtape.com|streamtape.to|tapepops.com|tpead.net|watchadsontape.com +! downloads blocked +*$popup,3p,from=tapepops.com,badfilter +streamtape.*,watchadsontape.com##+js(aopr, Adcash) +||pndax.love^ +! !SECTION: Streamtape +! SECTION: fakeplayer +hdmozi.hu,yabaisub.cloud###fakeplayer +hdmozi.hu,yabaisub.cloud##+js(trusted-click-element, #player-option-1, , 500) +! !SECTION: fakeplayer +! SECTION: playerAds / RPMShare +favoyeurtube.net>>,primewire.*>>,tokuzilla.net>>,tokuzl.net>>,tukoz.com>>,~cloudflare.com##+js(json-prune, ads playerAds) +favoyeurtube.net>>,primewire.*>>,tokuzilla.net>>,tokuzl.net>>,tukoz.com>>,~cloudflare.com##+js(trusted-json-edit, ..allowAdblock=true) +embedseek.xyz,nuovo.vidplayer.live,p2pplay.pro,primevid.click,streamcasthub.store,strp2p.site##+js(json-prune, ads playerAds) +||imasdk.googleapis.com/js/sdkloader/ima3.js$redirect=noopjs,domain=favoyeurtube.net|tokuzilla.net|tokuzl.net|tukoz.com|embedseek.xyz|nuovo.vidplayer.live|p2pplay.pro|primevid.click|streamcasthub.store|strp2p.site +||imasdk.googleapis.com/js/sdkloader/ima3.js$redirect=noopjs,domain=anichin.rpmvid.com|disneycdn.net|rpmhub.site|rpmlive.online|rpmplay.me|rpmplay.xyz|rpmstream.live|rpmvip.com|vidplayer.live +||imasdk.googleapis.com/js/sdkloader/ima3.js$redirect=noopjs,domain=strp2p.com,important +rpmplay.xyz##+js(aopr, open) +! nsfw pandamovies .org /watchporn4k. com +easyvidplayer.com,embedseek.online,player4me.online##+js(aeld, click, popunder) +easyvidplayer.com,embedseek.online,player4me.online##+js(aost, document.createElement, displayLayer) +easyvidplayer.com##+js(aeld, click, adId) +easyvidplayer.com,rpmplay.online,pandamovies.org,watchporn4k.com##+js(nowoif) +pandamovies.org,watchporn4k.com###video-overlay +watchporn4k.com##.happy-player-beside +*$script,3p,domain=easyvidplayer.com|embedseek.online|player4me.online +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=easyvidplayer.com|embedseek.online|player4me.online|rpmplay.online +||magazineschnappstrusting.com^ +||nibaz.com^ +||tookfree.com^ +! !SECTION: playerAds / RPMShare +! SECTION: .protection / detectAdblock +3minx.com,555fap.com,ai18.pics,anime-jav.com,blackwidof.org,chinese-pics.com,cn-av.com,cnpics.org,cnxx.me,cosplay-xxx.com,cosplay18.pics,fc2ppv.stream,fikfok.net,gofile.download,hentai-sub.com,hentai4f.com,hentaicovid.com,hentaipig.com,hentaixnx.com,idol69.net,javball.com,javbee.*,javring.com,javsunday.com,javtele.net,kin8-av.com,kin8-jav.com,kr-av.com,ovabee.com,pig69.com,porn-pig.com,porn4f.org,sweetie-fox.com,xcamcovid.com,xxpics.org##+js(rmnt, script, /detectAdblock|WebAssembly|pop1stp|popMagic/i) +!#if cap_html_filtering +bebasbokep.online,bellezashot.com,besthdgayporn.com,bighentai.org,bokepindo13.*,bokepindoh.*,brokensilenze.net,dimensionalseduction.com,drivenime.com,erothots1.com,familypornhd.com,hentaitv.fun,javbobo.com,javup.org,kaliscan.*,likemanga.ink,madouqu.com,pitube.net,premiumporn.org,savefiles.com,shemaleup.net,transflix.net,veo-hentai.com,worthcrete.com,x-x-x.video##^script:has-text(/popMagic|pop1stp/) +!#else +bebasbokep.online,bellezashot.com,besthdgayporn.com,bighentai.org,bokepindo13.*,bokepindoh.*,brokensilenze.net,dimensionalseduction.com,drivenime.com,erothots1.com,familypornhd.com,hentaitv.fun,javbobo.com,javup.org,kaliscan.*,likemanga.ink,madouqu.com,pitube.net,premiumporn.org,savefiles.com,shemaleup.net,transflix.net,veo-hentai.com,worthcrete.com,x-x-x.video##+js(rmnt, script, /popMagic|pop1stp/) +!#endif +fucksporn.com###FloatingLayer +fucksporn.com##.adv_banners +fucksporn.com##.prefix-player-out +drivenime.com###stickyb +socigames.com##.socig-target +xhamster.fm##+js(acs, pop_init) +gayxx.net##+js(aopr, adsbyjuicy) +||flixbaba.net/utilsminhill.js +! !SECTION: .protection / detectAdblock +! SECTION: np.detect +explorecams.com,minecraft.buzz,rarepike.com##+js(aeld, np.detect) +! !SECTION: np.detect +! SECTION: Non-English sites +! NOTE: Arabian +liveonlinesports.net##+js(acs, document.createElement, dataset.zone) +/\.liveonlinesports\.net/[a-z0-9]{35}\.js$/$script,1p +!#if env_safari +/\.liveonlinesports\.net/[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]\.js$/$script +!#endif +! NOTE: Armenian +||auto.am/static/azd/ +auto.am##.azd-top +auto.am##.bncont +auto.am##.toggle-adv-search +||mediasystems.am^$3p +hraparak.am##.big_advert +! NOTE: Bulgarian +||advertere.zamunda.net^ +@@||seirsanduk.*?loader.js^$script,domain=seirsanduk.* +@@||ads.poshtata.online/*.js|$script,domain=seirsanduk.*|seir-sanduk.com|seirsanduk.com|seirsanduk.net|seirsanduk.online +@@||ads.poshtata.online/*.js?$script,domain=seirsanduk.*|seir-sanduk.com|seirsanduk.com|seirsanduk.net|seirsanduk.online +! MV3 wildcard issue +!#if ext_ubol +@@||seirsanduk.*?loader.js^$script,domain=seirsanduk.com|seirsanduk.online +!#endif +seirsanduk.net##p:has-text(???????) +@@||glebul.com^$script,1p +glebul.com##p:has-text(???????) +/^https:\/\/filmizip\.com\/templates\/filmizip\/js\/[a-z0-9]{16}\.js\?v=/$script,1p,match-case,domain=filmizip.com +/^https:\/\/filmizip\.com\/templates\/filmizip\/js\/[a-z0-9]{12}\.min\.js\?v=/$script,1p,match-case,domain=filmizip.com +!#if env_safari +/^https:\/\/filmizip\.com\/templates\/filmizip\/js\/[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]\.js\?v=/$script,1p,match-case,domain=filmizip.com +/^https:\/\/filmizip\.com\/templates\/filmizip\/js\/[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]\.min\.js\?v=/$script,1p,match-case,domain=filmizip.com +!#endif +filmizip.com##+js(no-fetch-if, googlesyndication, length:40000-60000) +filmizip.com##+js(nowoif) +filmizip.com##+js(no-fetch-if, mode:no-cors) +||widgets.outbrain.com/outbrain.js$xhr,redirect=noopjs,domain=filmizip.com +filmizip.com##+js(no-fetch-if, outbrain) +filmizip.com##+js(rmnt, script, zIndex) +filmizip.com##.video-inside-overlay +||filmifen.com/templates/filmi/js/adb.js +filmifen.com##+js(aeld, DOMContentLoaded, adb) +filmifen.com##+js(aeld, contextmenu) +kinofen.cc###popup-wrapper +! NOTE: Chinese +@@||cdn.jsdmirror.com/gh/justlovemaki/imagehub@main/js/adview_pic_cpc_cpm_cpa_guanggao_gg_guge__ads_300x250.js +!#if !env_mobile +hk.yahoo.com###main-bottom:style(margin-top: 164px !important;) +!#endif +ofiii.com##+js(json-prune-fetch-response, prerolls midrolls postrolls comm_ad house_ad pause_ad block_ad end_ad exit_ad pin_ad content_pool vertical_ad elements, , propsToMatch, /detail) +ofiii.com##.nonlinear_ad +||adsv.svc.litv.tv^ +||hbs.svc.litv.tv^ +||cdi.ofiii.com/*/video/ad_urls +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$domain=ofiii.com +iplark.com##+js(aeld, DOMContentLoaded, adClosedTimestamp) +bilibili.com#@#+js(json-prune-fetch-response, data.item.[-].business_info.ad_desc, '', /feed/rcmd) +bilibili.com##+js(json-prune-fetch-response, data.item.[-].business_info.ad_desc, , propsToMatch, /feed/rcmd) +||adblock.static-cloudflare.workers.dev^ +||d16sc05it918j8.cloudfront.net^ +||achang-tw.github.io^ +||affiliates.one^$3p +ai.hubtoday.app##+js(set, killads, true) +@@||ai.hubtoday.app/*.js|$script,1p +news.now.com##+js(set, NMAFMediaPlayerController.vastManager.vastShown, true) +shipin188.com##+js(rmnt, script, _cpv) +ofiii.com##+js(json-prune-fetch-response, prerolls midrolls postrolls comm_ad house_ad pause_ad block_ad end_ad exit_ad pin_ad content_pool vertical_ad elements, , propsToMatch, api/v1/detail) +@@||mnya.tw^$generichide +mnya.tw##.adsbygoogle +! NOTE: Czech +@@||titulky.com^$script,1p +titulky.com#@#+js(set-constant, xmxalr, '') +kiaclub.cz##+js(nostif, getComputedStyle) +kiaclub.cz##.div_make_links +kiaclub.cz#@#.adwords +zive.cz##article:has-text(Reklama) +zive.cz##[class^="ad-list"] +idnes.cz#@#+js(acis, HTMLIFrameElement.prototype.contentWindow) +@@/site=*/viewid=*/size=$script,domain=idnes.cz +idnes.cz##.abchead +idnes.cz##.s_widesquare:has(> div > #widesquare > a[rel="sponsored"]) +idnes.cz##div[id].pla-net > div > span:empty +idnes.cz##body::before:style(background: none !important;) +idnes.cz##html:style(cursor: auto !important;) +idnes.cz##+js(acs, document.onclick, reklama-flash-body) +||idnes.cz/_servix/media/video.aspx$script,uritransform=/reklama=1/reklama=0/ +||vod.idnes.cz/*krr.mp4$media +idnes.cz###main > table +expres.cz,idnes.cz,lidovky.cz##a[href^="https://servix.idnes.cz/data.aspx?"] +expres.cz,idnes.cz,lidovky.cz##div[id^="fix-block-"] +expres.cz,lidovky.cz##+js(rmnt, script, pingUrl) +expres.cz,lidovky.cz##+js(aeld, /click|mouse/, /scoreUrl|pingUrl/) +lidovky.cz###main > table +lidovky.cz###selfart-box +lidovky.cz##.s_nativ_advertorial +||1gr.cz/*/js/uni/paticka.js +||1gr.cz/*/reklama.svg +!#if cap_html_filtering +sbazar.cz##^script:has-text(ads) +!#else +sbazar.cz##+js(rmnt, script, ads) +!#endif +||seznam.cz/html/adform_sync.html$frame,domain=sbazar.cz +expres.cz###main > table[id][class*=" "]:has(td > div[class] > div[id] > script) +expres.cz##div[id][class*=" "]:has(> div[class]:not([id]) > span:empty) +svetserialu.io##+js(nowoif) +indian-tv.cz##+js(set, appPageData.appAds, {}) +indian-tv.cz##+js(set, appPageData.appAdsHandles, {}) +! NOTE: Dutch +alleveilingen.be,alleveilingen.nl##+js(acs, document.addEventListener, fakeAd) +||2mdn.net/instream/html5/ima3.js$redirect=google-ima.js,domain=puna.bbvms.com,important +nos.nl##+js(json-prune-fetch-response, adUrl, , propsToMatch, .azurewebsites.net) +@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$domain=goplay.be|play.tv +@@||pubads.g.doubleclick.net/ondemand/$xhr,domain=goplay.be|play.tv +||imasdk.googleapis.com/js/sdkloader/ima3.js$redirect=noopjs,domain=goplay.be|play.tv +||pagead2.googlesyndication.com/omsdk/releases/live/omweb-v1.js$redirect=noopjs,domain=goplay.be|play.tv +||dai.google.com/ondemand/dash/content/*/time-events.json$domain=goplay.be|play.tv +||shared.mediahuis.be/ka-ching/goplay/ka-ching.umd.js +bnnvara.nl,npodoc.nl,vpro.nl##+js(json-prune-fetch-response, assets.preroll assets.prerollDebug, , propsToMatch, /stream-link) +telegraaf.nl##+js(no-fetch-if, /doubleclick|ad-delivery|googlesyndication/) +||securepubads.g.doubleclick.net/*gpt$script,domain=play.tv,important +||cdn.kaching.eu.com/latest/play/kaching.js$domain=play.tv +agf.nl##+js(nosiif, show) +luisterradio.fm##div.max-w-full:has(> .uppercase) +! NOTE: French +hentaivost.fr##+js(rmnt, script, _ADX_) +||hentaivost.fr/detect.js^ +||gupload.xyz/data/player/adblock-detector.js^ +||gupload.xyz/data/head/script.php^ +||lopfly.com^ +/vast/*.php?nocache= +zone-telechargement.*##a[href^="https://dl-protect.link/"] img +dl-protect.link##a[href^="https://planetwealthbuilders.net/trck/"] +||zone-telechargement.*/templates/zone/images/dl/telechargement-direct.png +||dl-protect.link/images2/afl*.png +||planetwealthbuilders.net^$all +||pmur.org/*_abChoice. +!#if env_firefox +qub.ca##.jss2 +!#endif +qub.ca##+js(set, __NEXT_DATA__.runtimeConfig._qub_sdk.qubConfig.video.adBlockerDetectorEnabled, false) +tvasports.ca##[data-testid="ad-container"] +tvasports.ca##+js(trusted-json-edit, ..adBlockerDetectorEnabled=false) +||imasdk.googleapis.com/js/sdkloader/ima3.js$redirect=google-ima.js,domain=tv.free.fr +||cta-service-cms*.hubspot.com/web-interactives/public/v1/embed/combinedConfigs +||ariase.com/get-module?moduleType=BANDEAU_BAS +ariase.com##+js(rmnt, script, dataLayer) +ariase.com##.c-pub-header +@@||toutes-les-solutions.fr^$ghide +@@||toutes-les-solutions.fr/phpbb/images/*.jpg$image,1p +mym-db.com###swup > .row > div:has(> .card > div[data-ad-site]) +actu.orange.fr##.media-top-article-video:remove() +actu.orange.fr##+js(rc, d-none|media-filter-brightness|bg-dark, .media-main-image) +@@||gp.cdn.woopic.com/magic/o_tealium.js$script,domain=actu.orange.fr +noovo.info##.b-ads-custom +*$script,3p,domain=supervideo.cc,badfilter +*$script,3p,from=filecrypt.cc,badfilter +||vivasexe.com/pix/pub/ +||vivasexe.com/disclaimer.php?cid=/search.php +vivasexe.com###div_inline +vivasexe.com###filtre +vivasexe.com##div[class="row 0%"][style] > div[class]:has(> div[align] > a[target="_blank"]) +vivasexe.com###searchlisting > a[href][target="_blank"] +vivasexe.com###searchlisting > div#cadre_annonce[style]:not([onclick]) +vivasexe.com##.rdv-card-wrapper +vivasexe.com##.rdv-card-wrapper + div:has(> .owl-carousel) +vivasexe.com###skel-layers-wrapper > #main-wrapper:has-text(Annonces similaires :) +vivasexe.com##a.btnmoncompte[href="https://www.vivasexe.com/alerte/"] +vivasexe.com##+js(acs, history.replaceState, location.href) +! NOTE: Georgian +||forum.ge/trash/ads_ +||sab.fast.ge^$subdocument +forum.ge##.w3-hide-medium:has(img[src="/trash/ads_down.gif"]) +/video/pre/*.mp4$media,domain=myvideo.ge +myvideo.ge##+js(json-prune, data.[].relationships.advert data.[].relationships.vast) +amindi.info##.fb-popup +||img.mykadri.click/asvla2/ +||mykadri.tv/preroll/ +mykadri.tv##.avc-asvla +! NOTE: German +moz.de###bluum +@@||spiele.heise.de^$ghide +heise.de###topBannerContainer +heise.de##.keygameBannerContainer +heise.de##.ad-microsites +heise.de##.tipps-content-ad +heise.de##.hbs-ad +heise.de##.stage-advertising +heise.de##.ad +heise.de##section[data-layout="TeaserListLayout"] > section[data-component="TeaserList"] > div.relative:has(> div > article > a[data-google-interstitial]) +||testsieger.de/native-retail-media/pdp/brand-showcase/ +||testsieger.de/native-retail-media/pdp/brand-banner/ +testsieger.de##+js(json-prune, offers) +testsieger.de###sponsoredProductPdp +testsieger.de###sponsoredAdsHeader +20min.ch##section aside:has(> div > div > div[data-ad-unit-id]) +20min.ch##div[class^="ContentPage_contentPage"] > div[class]:not([class^=""]):has(> div > div > div[data-ad-unit-id]) +20min.ch##div[type="ad"] +! NOTE: Greek +korinthostv.gr##.sgpb-popup-overlay +korinthostv.gr##.sgpb-popup-dialog-main-div-wrapper +korinthostv.gr##.sgpb-overflow-hidden:style(overflow: auto !important;) +||jobfind.gr/clientfiles/Banner2025/ +jobfind.gr##div[id^="bannerzone"] +! NOTE: Hebrew +13tv.co.il##+js(no-fetch-if, /doubleclick|googlesyndication/) +13tv.co.il##+js(trusted-replace-xhr-response, /#EXT-X-DISCONTINUITY\n(?:#EXTINF:.*\,\n.+?adType=preroll[\s\S]+?)(?=#EXT-X-DISCONTINUITY)/gm, , /.*\.m3u8/) +! NOTE: Indonesian +komikdewasa.art##+js(nowoif) +komikdewasa.art##+js(aeld, click, tampilkanUrl) +komikdewasa.art##+js(rmnt, script, location.href) +otakudesu.*##.box_item_ads_popup +.gif$image,domain=otakudesu.*|otakudesu.best|otakudesu.org +otakudesu.*##+js(nowoif) +||ads.desustream.com^ +! cast server blocked at https://tv3.nontondrama.my/can-this-love-be-translated-season-1-episode-1-2026 +playeriframe.sbs##body > a[href][target="_blank"][rel*="noopener"] +cloud.hownetwork.xyz###overlay +podjav.tv##.sidebar-box:has(> div[data-banner-id]) +podjav.tv##.player-banner-ads-top +kuyhaa.me###protected-content +kuyhaa.me##+js(acs, document.addEventListener, window.open) +||meong.club/go/?aHR0c*$doc,urlskip=/\/go\/\?(aHR0c.+)/ -base64 +||kuyhaa.me/pmbut.js +||kuyhaa.me/*.php +kazefuri.id##+js(rmnt, script, sessionStorage.getItem) +! NOTE: Italy +! ||detour.padovia.it^ +! NOTE: Japanese +!bus-location.1507t.xyz##+js(nostif, ()=>{, 2501-) +solispia.com##+js(trusted-rpnt, script, /document\.addEventListener\('DOMContentLoaded'\, function[\S\s]+?(const novelId\s*=\s*\d+;\s*const targetUrl\s*=.+?\d+";)[\S\s]+?verifying = true;\s*(try \{[\S\s]+?ad_meta:)[\S\s]+?CMの準備中です...'\);\s*.*?\s*(try \{\s*[\S\s]+?catch\s*\(\w*\)\s*\{)[\S\s]*/, document.addEventListener('DOMContentLoaded'\, async function(){$1 const sleep=ms=>new Promise(resolve=>setTimeout(resolve\,ms));$3 return;}await sleep(5000+Math.floor(Math.random()*3000));$2 {"type":"reward"\,"amount": 2}})});if(!res.ok)throw res.status;const j=await res.json().catch(()=>null);if(j&&j.ok){window.location.href=targetUrl;}}catch(e){}})) +! NOTE: Korean +map.naver.com##+js(json-edit-xhr-response, .layers.*[?.metadata.name=="POI_Ads"], propsToMatch, /PCWeb_Real.json) +pcmap.place.naver.com##+js(rpnt, script, document.write, window.__APOLLO_STATE__=JSON.parse(JSON.stringify(window.__APOLLO_STATE__));document.write) +pcmap.place.naver.com##+js(json-edit, .*[?.adId]) +aagag.com##+js(no-xhr-if, googlesyndication) +! NOTE: Netherlands +almelo1.nl##.almelo-ad +! NOTE: Persian +shahied4u.me##+js(rmnt, script, /googlesyndication|adblock|keydown|popundersPerIP/i) +! NOTE: Polish +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=player.pl +player.pl##+js(no-fetch-if, /gaid=, war:noop-vast2.xml) +jelonka.com##+js(rmnt, script, div.offsetHeight) +@@||jelonka.com^$ghide +jelonka.com##.adsbygoogle +jelonka.com##.kontener-reklam +@@||static5.hsg.com.pl/icons/*/icon.png^$image +auto-swiat.pl##+js(nostif, consent) +lamoda.pl##body [class*="REKLAMA"] +onet.pl##ad-default +wrzesnia.info.pl##+js(no-fetch-if, ads) +@@||tyna.info.pl/pl/js/*.js|$script,1p +||tyna.info.pl/pl/js/new-system.js$important +tyna.info.pl##.billboard +tyna.info.pl##.baner +gostyn24.pl##+js(set, arePiratesOnBoard, false) +@@||gostyn24.pl/pl/js/trustmeimadolphin/*.js|$script,1p +||ogladajanime.pl/command_processor.php +wirtualnemedia.pl##+js(set, __INIT_CONFIG__.randvar, undefined) +wirtualnemedia.pl##+js(aeld, click, instanceof Event, elements, body) +kobieta.wp.pl##+js(nostif, bait) +abczdrowie.pl,allani.pl,autokrata.pl,autokult.pl,biztok.pl,dzieci.pl,easygo.pl,echirurgia.pl,fotoblogia.pl,gadzetomania.pl,hotmoney.pl,interaktywnie.com,inwestycje.pl,jejswiat.pl,kafeteria.pl,kafeteria.tv,kantory.pl,kazimierzdolny.pl,komediowo.pl,komorkomania.pl,mazury.com,mojeauto.pl,mojeosiedle.pl,money.pl,nasygnale.pl,niewiarygodne.pl,nocowanie.pl,odkrywcy.pl,parenting.pl,pudelek.pl,pudelek.tv,pytamy.pl,sfora.pl,snobka.pl,tlen.pl,totalmoney.pl,wakacje.pl,wawalove.pl,wp.pl,~www.wp.pl,wp.tv#@#html, html > body:style(overflow: auto !important;) +abczdrowie.pl,allani.pl,autokrata.pl,autokult.pl,biztok.pl,dzieci.pl,easygo.pl,echirurgia.pl,fotoblogia.pl,gadzetomania.pl,hotmoney.pl,interaktywnie.com,inwestycje.pl,jejswiat.pl,kafeteria.pl,kafeteria.tv,kantory.pl,kazimierzdolny.pl,komediowo.pl,komorkomania.pl,mazury.com,mojeauto.pl,mojeosiedle.pl,money.pl,nasygnale.pl,niewiarygodne.pl,nocowanie.pl,odkrywcy.pl,parenting.pl,pudelek.pl,pudelek.tv,pytamy.pl,sfora.pl,snobka.pl,tlen.pl,totalmoney.pl,wakacje.pl,wawalove.pl,wp.pl,~www.wp.pl,wp.tv##html:not(#id), html:not(#id) > body:not(#id):style(overflow: visible !important;) +poczta.o2.pl,poczta.wp.pl##*:matches-css-after(content:/K/):upward(1) +poczta.o2.pl,poczta.wp.pl##.d_flex.flex-d_column.h_full.pos_relative +@@||strimek.tv^$ghide +||strimek.tv^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation +||strimek.tv/apple.js$script,1p +@@||wspinanie.pl^$ghide +wspinanie.pl##+js(nostif, getComputedStyle) +wspinanie.pl##.global__advertisement +@@*$css,other,domain=pilot.wp.pl +*/adv/$image,domain=pilot.wp.pl,redirect=1x1.gif +!#if ext_ubol +||static.criteo.net/js/$script,domain=pilot.wp.pl,redirect=noopjs +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=pilot.wp.pl +!#endif +||dot.wp.pl/*/dot.gif?rmt=css$css,redirect=noop.css,domain=pilot.wp.pl,important +pilot.wp.pl##+js(set, prebidConfig.steering.disableVideoAutoBid, true) +polskawliczbach.pl##+js(nostif, offsetHeight) +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=wiadomosci.wp.pl +wiadomosci.wp.pl##+js(nostif, , 100) +polsatsport.pl##+js(no-xhr-if, xml) +fakt.pl,plejada.pl##+js(nostif, offsetHeight) +||portal.librus.pl/ad^ +portal.librus.pl##advertisement-module:remove() +! NOTE: Portuguese/Spanish +||static-cloud.mediaset.net/misc/ad/adanalytics.js^$redirect=noopjs +||static-cloud.mediaset.net/misc/ad/adanalytics.js^$redirect=noopjs,domain=mediasetinfinity.es,important +download.kingtecnologia.com##+js(nostif, await _0x) +download.kingtecnologia.com##+js(trusted-replace-argument, document.getElementById, 0, json:"Blog1", condition, ad-top) +ryxy.online##+js(no-fetch-if, adblock.js) +! daemonanime.net/daemon-hentai.com anti-adb +daemonanime.net##+js(acs, eval, replace) +daemonanime.net##+js(acs, document.addEventListener, google_ad_client) +daemonanime.net##+js(nostif, adbl) +daemonanime.net#@#div[id^="div-gpt-"]:not([style^="width: 1px; height: 1px; position: absolute; left: -10000px; top: -"]) +daemonanime.net#@#[id^="div-gpt-ad"]:not([style^="width: 1px; height: 1px; position: absolute; left: -10000px; top: -"]) +||a.magsrv.com/video-slider.js$script,redirect=noop.js,domain=daemonanime.net|daemon-hentai.com +@@||daemon-hentai.com^$ghide +daemonanime.net##+js(set, detectAdBlock, noopFunc) +daemonanime.net,daemon-hentai.com##+js(nowoif, _blank) +*$xhr,domain=daemon-hentai.com,redirect=empty,to=adligature.com|outbrain.com|quantserve.com|srvtrck.com +||daemonanime.net/wp-content/themes/covernews/js/*.js +! daemon-hentai.com,daemonanime.net +||mangaspdf.xyz/js/list-*.js +daemon-hentai.com##+js(aeld, click, openPopunder) +daemon-hentai.com##+js(nostif, openPopunder) +daemon-hentai.com##+js(aeld, load, .getComputedStyle) +daemonanime.net##+js(aeld, , STORAGE2) +daemonanime.net##+js(aeld, DOMContentLoaded, app_advert) +||google-analytics.com^$3p,image,redirect=1x1.gif,from=daemon-hentai.com +daemon-hentai.com##+js(rmnt, script, adblock) +||imasdk.googleapis.com/js/sdkloader/ima3.js$redirect=google-ima.js,domain=cooperativa.cl +lared.cl##+js(no-fetch-if, doubleclick) +lared.cl##+js(set, googletag._loaded_, true) +lared.cl##.ads +lared.cl##ned-ad +pelisxporno.net##+js(acs, document.addEventListener, adsBlocked) +@@||midara.ink/api/$script,1p +||cdn.embedtv.net/embed/betnacional.webp$image +embedtv.net##+js(nostif, closeBanner) +pcbolsa.com##+js(set, NoTenia, false) +novizer.com>>##+js(acs, EventTarget.prototype.addEventListener, delete window) +||cyou/player/assets/js/jquery.js?v=$script,1p +||cyou/player/assets/js/ads.js?v=$script,1p +loldewfwvwvwewefdw.cyou##+js(nowoif) +infogenyus.top,saboroso.blog#@#.ad-unit:not(.adsbox, .text-ad, .textads):not([style^="width: 1px; height: 1px; position: absolute;"]) +infogenyus.top,saboroso.blog##+js(rmnt, script, /bait/i) +||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$redirect=noopjs,domain=lpfplay.com +||static.diaridetarragona.com/dab/detector.js +diaridetarragona.com##.c-add +||imasdk.googleapis.com/js/sdkloader/ima3.js$redirect=noopjs,domain=envivo.tvazteca.com +novelaplay.com##+js(aeld, DOMContentLoaded, bait) +novelaplay.com##+js(nowoif) +@@||vix.com^$ghide +vix.com##+js(json-prune, breaks interstitials info, interstitials) +vix.com##+js(xml-prune, 'xpath(//*[name()="Period"][.//*[name()="BaseURL" and contains(text(),".mp.lura.live/prod/")]] | //*[name()="MPD"]/@mediaPresentationDuration)', , .mpd) +vix.com##+js(json-prune-xhr-response, ads, ads.policy.skipMode, propsToMatch, /play) +||mp.lura.live/vod/vast.info/ +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,3p,redirect=google-ima.js,domain=vix.com +@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$script,3p,domain=vix.com +vix.com##+js(json-prune, ad_slots) +vix.com##+js(json-prune, plugins.dfp) +vix.com##+js(m3u-prune, lura.live/prod/, /prog.m3u8) +vix.com###video-player-track[style*="display: block"]:style(visibility: visible !important;) +disneyembed.wtf##+js(trusted-set-local-storage-item, locker_timestamp, $now$) +embedtv.best##+js(nowoif, !embedtv.best) +pkproject.net##+js(acs, setTimeout, adblock) +pkproject.net##div[data-fuse] +||imasdk.googleapis.com/js/sdkloader/ima3.js$redirect=google-ima.js,domain=recordplus.com +@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$domain=recordplus.com +googleapis.com.de,googleapis.com.do,redecanais.*,redecanaistv.*##body.swal2-shown > .swal2-container +googleapis.com.de,googleapis.com.do,redecanais.*,redecanaistv.*##html.swal2-shown, body.swal2-shown:style(overflow: auto !important;) +googleapis.com.de,googleapis.com.do,redecanais.*,redecanaistv.*##+js(aeld, click, _0x) +!googleapis.com.de,googleapis.com.do,redecanais.*,redecanaistv.*##+js(nowoif) +relampagomovies.com##+js(rmnt, script, offsetHeight) +relampagomovies.com##+js(acs, document.addEventListener, window.open) +||webcinevs*.com/api/app/vast-ads +##.pppx +superflixapi.best,warezcdn.lat##+js(aeld, , pop_) +llanfairpwllgwyngy.com##+js(acs, document.addEventListener, POP_URL) +llanfairpwllgwyngy.com##+js(trusted-replace-argument, eval, 0, repl:/"popactive":true/"popactive":false/) +@@||meuplayeronlinehd.com^$ghide +meuplayeronlinehd.com###adblock-overlay +||multicanaistt.space/pop/pop.js$script +||cdn.jsdelivr.net/npm/disable-devtool$script,domain=myapiplay.top +myapiplay.top###popup-overlay +meuplayeronlinehd.com##+js(ra, style, [style*="z-index"], stay) +meuplayeronlinehd.com,multicanaistt.space##+js(aeld, load, detect) +cnnamador.com##+js(nostif, backRedirect) +cnnamador.com##+js(aeld, , pop) +cnnamador.com##+js(noeval) +cnnamador.com##.banner +||cnnamador.com/player/float.php +||cnnamador.com/m18/ +cnnamador.com##.is-ad-visible +cnnamador.com##+js(aopw, adv_pre_duration) +cnnamador.com##+js(aopw, adv_post_duration) +cnnamador.com##+js(aeld, /^(click|mousedown|mousemove|touchstart|touchend|touchmove)/, system.popunder) +cnnamador.com##.cards__item:has([href*="loboclick"]) +||cnnamador.com/sw.js$script,1p +||adsloboclick.com^ +cg-gamespc.net##+js(rmnt, script, :visible) +cg-gamespc.net###notiene:style(display:block !important) +cg-gamespc.net##div:nth-of-type(5):has-text(Advertising) +cg-gamespc.net##.header__nav-link:style(line-height:unset !important) +cg-gamespc.net,elamigosgames.net,elamigosgamez.net##+js(nostif, checkAdblockUser) +cg-gamespc.net,elamigosgames.net,elamigosgamez.net##.content_store +cg-gamespc.net,elamigosgames.net,elamigosgamez.net##.iframeDiv +elamigosgamez.net##h3.my-4:has-text(/^Advertising/) +||instant-gaming.com/api/banner/ +||adme2.click^ +! NOTE: Thai +steamseries88.com##+js(rpnt, script, let playerType, 'window.addEventListener("load",()=>{if(typeof playMovie==="function"){playMovie()}});let playerType') +! NOTE: Turkish +isgfrm.com##+js(acs, document.createElement, .offsetHeight) +isgfrm.com##+js(rmnt, script, /adbl|RegExp/i) +unibilgi.net##[href*="adset"] +unibilgi.net##.ays-pb-modals +unibilgi.net###custom_html-2 +unibilgi.net###custom_html-9 +unibilgi.net###custom_html-10 +unibilgi.net###custom_html-11 +joymaxtr.net##+js(acs, RegExp, navigator.userAgent) +/js/aclb.js^$script,1p,domain=anizle.com|anizm.net|puffytr.com +||teknofenomen.com/forum/ext/*/js/adblock_detection.js +filmizle.*,filmizletv.*,filmizleplus.*,fullhdfilm.*,fullhdfilmizle.*,gofilmizle.com,hdfilmcehennemi.*,hdfilmizlesene.*,hdfilmsitesi.*,sine5.dev,sinezy.org##+js(trusted-rpnt, script, window.lazyLoadOptions =, if(typeof ilk_part_getir==="function"){ilk_part_getir()}window.lazyLoadOptions =, sedCount, 1) +filmizle.*,filmizletv.*,filmizleplus.*,fullhdfilm.*,fullhdfilmizle.*,gofilmizle.com,hdfilmcehennemi.*,hdfilmizlesene.*,hdfilmsitesi.*,sine5.dev,sinezy.org##body:style(background-image: unset !important;) +||hdfilmce.com/bt.webp$image +||filmvitrini.net/wp-content/themes/filmizle/js/elma.js +.gif^$image,domain=filmvitrini.net +filmvitrini.net##.videoust +asyaanimeleri.pw##+js(rpnt, script, popactive, nopop) +asyaanimeleri.pw##+js(nowoif, !asyaanimeleri.) +asyaanimeleri.pw##+js(set-cookie, popcounter, 2) +asyaanimeleri.pw##.pppx +##.bb ~ main#container .containerAds +##html[lang="tr"] #aa-wp + .fixed-footer .footer-ad-container +##html[lang="tr"] #aa-wp .container-ads-adjustment +##html[lang="tr"] #aa-wp .rnd-ads-adjustment +dizipal1536.com,dizipal1537.com,dizipal1538.com,dizipal1539.com,dizipal1540.com,dizipal1541.com,dizipal1542.com,dizipal1543.com,dizipal1544.com,dizipal1545.com,dizipal1546.com,dizipal1547.com,dizipal1548.com,dizipal1549.com,dizipal1550.com,dizipal1551.com,dizipal1552.com,dizipal1553.com,dizipal1554.com,dizipal1555.com,dizipal1556.com,dizipal1557.com,dizipal1558.com,dizipal1559.com,dizipal1560.com,dizipal1561.com,dizipal1562.com,dizipal1563.com,dizipal1564.com,dizipal1565.com,dizipal1566.com,dizipal1567.com,dizipal1568.com,dizipal1569.com,dizipal1570.com,dizipal1571.com,dizipal1572.com,dizipal1573.com,dizipal1574.com,dizipal1575.com,dizipal1576.com,dizipal1577.com,dizipal1578.com,dizipal1579.com,dizipal1580.com,dizipal1581.com,dizipal1582.com,dizipal1583.com,dizipal1584.com,dizipal1585.com,dizipal1586.com,dizipal1587.com,dizipal1588.com,dizipal1589.com,dizipal1590.com,dizipal1591.com,dizipal1592.com,dizipal1593.com,dizipal1594.com,dizipal1595.com,dizipal1596.com,dizipal1597.com,dizipal1598.com,dizipal1599.com,dizipal1600.com##+js(trusted-rpnt, script, /manageAds\(video_urls\[activeItem\]\, video_seconds\[activeItem\]\, ad_urls\[activeItem]\,true\);/, playVideo();, condition, playAdd) +dizipal1536.com,dizipal1537.com,dizipal1538.com,dizipal1539.com,dizipal1540.com,dizipal1541.com,dizipal1542.com,dizipal1543.com,dizipal1544.com,dizipal1545.com,dizipal1546.com,dizipal1547.com,dizipal1548.com,dizipal1549.com,dizipal1550.com,dizipal1551.com,dizipal1552.com,dizipal1553.com,dizipal1554.com,dizipal1555.com,dizipal1556.com,dizipal1557.com,dizipal1558.com,dizipal1559.com,dizipal1560.com,dizipal1561.com,dizipal1562.com,dizipal1563.com,dizipal1564.com,dizipal1565.com,dizipal1566.com,dizipal1567.com,dizipal1568.com,dizipal1569.com,dizipal1570.com,dizipal1571.com,dizipal1572.com,dizipal1573.com,dizipal1574.com,dizipal1575.com,dizipal1576.com,dizipal1577.com,dizipal1578.com,dizipal1579.com,dizipal1580.com,dizipal1581.com,dizipal1582.com,dizipal1583.com,dizipal1584.com,dizipal1585.com,dizipal1586.com,dizipal1587.com,dizipal1588.com,dizipal1589.com,dizipal1590.com,dizipal1591.com,dizipal1592.com,dizipal1593.com,dizipal1594.com,dizipal1595.com,dizipal1596.com,dizipal1597.com,dizipal1598.com,dizipal1599.com,dizipal1600.com##div[class^="header"]:has(> .container-ads-adjustment:only-child) +||blogger.googleusercontent.com/img/$domain=dizipal1536.com|dizipal1537.com|dizipal1538.com|dizipal1539.com|dizipal1540.com|dizipal1541.com|dizipal1542.com|dizipal1543.com|dizipal1544.com|dizipal1545.com|dizipal1546.com|dizipal1547.com|dizipal1548.com|dizipal1549.com|dizipal1550.com|dizipal1551.com|dizipal1552.com|dizipal1553.com|dizipal1554.com|dizipal1555.com|dizipal1556.com|dizipal1557.com|dizipal1558.com|dizipal1559.com|dizipal1560.com|dizipal1561.com|dizipal1562.com|dizipal1563.com|dizipal1564.com|dizipal1565.com|dizipal1566.com|dizipal1567.com|dizipal1568.com|dizipal1569.com|dizipal1570.com|dizipal1571.com|dizipal1572.com|dizipal1573.com|dizipal1574.com|dizipal1575.com|dizipal1576.com|dizipal1577.com|dizipal1578.com|dizipal1579.com|dizipal1580.com|dizipal1581.com|dizipal1582.com|dizipal1583.com|dizipal1584.com|dizipal1585.com|dizipal1586.com|dizipal1587.com|dizipal1588.com|dizipal1589.com|dizipal1590.com|dizipal1591.com|dizipal1592.com|dizipal1593.com|dizipal1594.com|dizipal1595.com|dizipal1596.com|dizipal1597.com|dizipal1598.com|dizipal1599.com|dizipal1600.com +x.ag2m2.cfd##+js(json-edit, .*[?.linkurl^="http"]) +##html[lang="tr"] > body.has-footer-ad.has-pageskin-desktop a.pageskin-click-left +##html[lang="tr"] > body.has-footer-ad.has-pageskin-desktop a.pageskin-click-right +##html[lang="tr"] > body.has-footer-ad.has-pageskin-desktop a.pageskin-desktop-wrapper +dizipal1965.com,dizipal1966.com,dizipal1967.com,dizipal1968.com,dizipal1969.com,dizipal1970.com,dizipal1971.com,dizipal1972.com,dizipal1973.com,dizipal1974.com,dizipal1975.com,dizipal1976.com,dizipal1977.com,dizipal1978.com,dizipal1979.com,dizipal1980.com,dizipal1981.com,dizipal1982.com,dizipal1983.com,dizipal1984.com,dizipal1985.com,dizipal1986.com,dizipal1987.com,dizipal1988.com,dizipal1989.com,dizipal1990.com,dizipal1991.com,dizipal1992.com,dizipal1993.com,dizipal1994.com,dizipal1995.com,dizipal1996.com,dizipal1997.com,dizipal1998.com,dizipal1999.com,dizipal2000.com##a[class^="pageskin-"] +||blogger.googleusercontent.com/img/$domain=dizipal1965.com|dizipal1966.com|dizipal1967.com|dizipal1968.com|dizipal1969.com|dizipal1970.com|dizipal1971.com|dizipal1972.com|dizipal1973.com|dizipal1974.com|dizipal1975.com|dizipal1976.com|dizipal1977.com|dizipal1978.com|dizipal1979.com|dizipal1980.com|dizipal1981.com|dizipal1982.com|dizipal1983.com|dizipal1984.com|dizipal1985.com|dizipal1986.com|dizipal1987.com|dizipal1988.com|dizipal1989.com|dizipal1990.com|dizipal1991.com|dizipal1992.com|dizipal1993.com|dizipal1994.com|dizipal1995.com|dizipal1996.com|dizipal1997.com|dizipal1998.com|dizipal1999.com|dizipal2000.com +trgoals1526.xyz,trgoals1527.xyz,trgoals1528.xyz,trgoals1529.xyz,trgoals1530.xyz,trgoals1531.xyz,trgoals1532.xyz,trgoals1533.xyz,trgoals1534.xyz,trgoals1535.xyz,trgoals1536.xyz,trgoals1537.xyz,trgoals1538.xyz,trgoals1539.xyz,trgoals1540.xyz,trgoals1541.xyz,trgoals1542.xyz,trgoals1543.xyz##+js(rpnt, script, prerollEnabled:true, prerollEnabled:false) +macizletaraftarium.online,restmacizle23.cfd##+js(rpnt, script, prerollEnabled:true, prerollEnabled:false) +||inattv*.xyz/channel.html$frame,replace=/prerollEnabled:true/prerollEnabled:false/ +inattv1275.xyz,inattv1276.xyz,inattv1277.xyz,inattv1278.xyz,inattv1279.xyz,inattv1280.xyz,inattv1281.xyz,inattv1282.xyz,inattv1283.xyz,inattv1284.xyz,inattv1285.xyz,inattv1286.xyz,inattv1287.xyz,inattv1288.xyz,inattv1289.xyz,inattv1290.xyz,inattv1291.xyz,inattv1292.xyz,inattv1293.xyz,inattv1294.xyz,inattv1295.xyz,inattv1296.xyz,inattv1297.xyz,inattv1298.xyz,inattv1299.xyz,inattv1300.xyz,inattv1301.xyz,inattv1302.xyz,inattv1303.xyz,inattv1304.xyz,inattv1305.xyz,inattv1306.xyz,inattv1307.xyz,inattv1308.xyz,inattv1309.xyz,inattv1310.xyz,inattv1311.xyz,inattv1312.xyz,inattv1313.xyz,inattv1314.xyz,inattv1315.xyz,inattv1316.xyz,inattv1317.xyz,inattv1318.xyz,inattv1319.xyz,inattv1320.xyz,inattv1321.xyz,inattv1322.xyz,inattv1323.xyz,inattv1324.xyz,inattv1325.xyz,inattv1326.xyz,inattv1327.xyz,inattv1328.xyz,inattv1329.xyz,inattv1330.xyz,inattv1331.xyz,inattv1332.xyz,inattv1333.xyz,inattv1334.xyz,inattv1335.xyz,inattv1336.xyz,inattv1337.xyz,inattv1338.xyz,inattv1339.xyz,inattv1340.xyz,inattv1341.xyz,inattv1342.xyz,inattv1343.xyz,inattv1344.xyz,inattv1345.xyz,inattv1346.xyz,inattv1347.xyz,inattv1348.xyz,inattv1349.xyz,inattv1350.xyz##+js(rpnt, script, prerollEnabled:true, prerollEnabled:false) +hdfilmizlesen.com##+js(acs, document.addEventListener, initPop) +hdfilmizlesen.com##+js(set, app._data.ads, []) +||hdfilmizlesen.com/ponpis.js^ +fontyukle.net##+js(aost, setTimeout, onload) +fontyukle.net##div.sponsor +fontyukle.net#@#div[class^="sag-ust"] +canlikolik.my###video-click-overlay +canlikolik.my##+js(aeld, message, adsense) +canlikolik.my##+js(trusted-set, reklamlar, json:[{"sure":"0"}]) +canlikolik.my##+js(trusted-rpnt, script, skipButton.innerText !==, "" ===) +canlikolik.my##+js(trusted-rpnt, script, var controlBar =, skipButton.click();var controlBar =, sedCount, 1) +tureng.com###tureng-cambly-ad-placeholder +tureng.com##.debug-ad +pandaspor.live##[href^="https://go.aff."] +pandaspor.live##+js(rpnt, script, await runPreRollAds();) +turkedebiyati.org##+js(rmnt, script, /adbl/i) +optraco.top##+js(rpnt, script, shouldShowAds() ?, false ?) +tranimeizle.*#@#.video-ad-container +tranimeizle.*##body .video-ad-top:style(display: block !important;) +tranimeizle.*##.advertisement +tranimeizle.*##a[href^="https://cutt.ly/"] +||tranimeizle.io/js/mm*.js +/^www\.selcuksportshd[a-z0-9-]+\.xyz$/##.banner +/^www\.selcuksportshd[a-z0-9-]+\.xyz$/##.banners +/^www\.selcuksportshd[a-z0-9-]+\.xyz$/##.container > aside.sidebar:has(> .banner) +/^www\.selcuksportshd[a-z0-9-]+\.xyz$/##.footer +/^www\.selcuksportshd[a-z0-9-]+\.xyz$/##.socials a:is(.meritroyal, .iptv, .streamradar) +||blogger.googleusercontent.com/img/$domain=/^main\.uxsyplayer[a-z0-9-]+\.click$/ +||vipifsa.com/api/ad +||vipifsa.com/api/popup +vipifsa.com##+js(json-prune-fetch-response, ads, , propsToMatch, /api/video) +animecix.tv##+js(set, Object.prototype.showInterstitialAd, false) +kanald.com.tr##+js(set, googlefc, undefined) +! NOTE: Vietnamese +lxmanga.my##+js(set, skipAdblockCheck, true) +qmh.*##+js(json-prune-xhr-response, data.header_script data.footer_script data.direct_link_ads data.direct_link_ads_vip_1 data.direct_link_ads_vip_2 data.direct_link_ads_play_vip_2 data.direct_link_ads_zoom_vip_2, , propsToMatch, /config) +||qmh.*/assets/js/simpleblocker.js +||api.viphubss.shop/api/link-rotation/ +||api.viphubss.shop/api/banner +||moneyoyo.com^$3p +streamobs.net##+js(aost, document.createElement, createAgeModal) +streamobs.net##+js(nowoif, _blank, 1, obj) +streamobs.net##.modal +sieutamphim.me##+js(acs, document.addEventListener, Object[_0x) +sieutamphim.me##+js(nowoif, _blank) +||tinxe.vn/dist/scripts/campaign-bn.min.js.gz +||ad.vietbao.vn^ +tinhte.vn##+js(nostif, .getComputedStyle) +vozer.io,vozer.vn##+js(acs, document.addEventListener, Popunder) +ios.codevn.net##+js(rmnt, script, /popup/i) +ios.codevn.net##+js(nowoif, _blank) +watch.rkplayer.xyz##+js(set, adsPlayer, undefined) +lokhung888.com##+js(rmnt, script, /popup|arrDirectLink/) +lokhung888.com##+js(nowoif, _blank) +||pagead2.googlesyndication.com^$script,domain=vnjpclub.com,important +vnjpclub.com##+js(rmnt, script, /adblock/i) +vnjpclub.com##.vnjp-ad-slot +||animevietsub.*/ads/$script +animevietsub.*###invideo_wrapper +animevietsub.*##.mobile-catfish-top +animevietsub.*##.mobile-catfixx +animevietsub.*##.pc-catfixx +animevietsub.*##.Ads +animevietsub.*##.Adv +animevietsub.*##a[href][target="_blank"] img[src^="https://lh3.googleusercontent.com/"] +animevietsub.*##+js(rmnt, script, PopupManager) +storage.googleapiscdn.com,stream.googleapiscdn.com##+js(aeld, DOMContentLoaded, _0x) +||pagead2.googlesyndication.com^$script,domain=storage.googleapiscdn.com|stream.googleapiscdn.com,important +/player/jwplayer-*/vast.js$script +||imasdk.googleapis.com/js/sdkloader/ima3.js$redirect=noopjs,domain=vtvgo.vn,important +! cap3. pro +cap3.*##+js(trusted-replace-argument, String.prototype.includes, this, 'json:"mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/145.0.0.0 safari/537.36"', condition, mozilla/5.0) +cap3.*#@##ad-wrapper +cap3.*##+js(nowoif, popup=) +cap3.*##+js(aeld, click, setTimeout) +cap3.*##+js(aeld, click, ()}, elements, .art-control-fullscreen) +||cap3.*/api/ads +! Video player popup +vip.stream101.space##+js(nowoif) +storage.googleapiscdn.com,stream.googleapiscdn.com##+js(rmnt, script, /bait/i) +@@||googleapiscdn.com/player/*animevietsub.$ghide +||googleapiscdn.com/admin/api/ads/ +/static/jwplayer/vast.js +motphimr.io##+js(aeld, click, document.createElement) +motphimr.io##+js(trusted-set-session-storage-item, popup-ads-last-shown, $now$) +##html[lang="vi"] .sspp-area +rophimz.*##+js(set-session-storage-item, ads-clicked-under-last-click, 11) +rophimz.*##+js(trusted-set-session-storage-item, shopee-ads-clicked, $now$) +rophimz.*##+js(trusted-set-session-storage-item, shopee-ads-last-click, $now$) +rophimz.*##+js(trusted-override-element-method, HTMLAnchorElement.prototype.click, a[target="_blank"][rel*="sponsored"]) +voznovel.com##+js(rmnt, script, shopeeLinks) +voznovel.com##+js(aeld, click, shopeeLinks) +||phimcn.*/assets/pu.js +||phimcn.*/graph/api?action=init-load-ads +! !SECTION: Non-English sites +! noadblocker.js "Enhanced Ad Blocker Detection Script" +/^https:\/\/[a-z0-9]{6,10}\.[a-z]{2,3}\/js\d?\/noadblocker\.js(?:\?v=\d)?$/$script,1p,match-case +!#if env_safari +/^https:\/\/[a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9][a-z0-9]?[a-z0-9]?[a-z0-9]?[a-z0-9]?\.[a-z][a-z][a-z]?\/js[0-9]?\/noadblocker\.js(\?v=[0-9])?$/$script,1p,match-case +!#endif +! END: General filters (put filters before this line) +! *** uAssets:filters/filters-2020.txt *** +*$script,redirect-rule=noopjs,domain=arcai.com +arcai.com##+js(set, pubAdsService, trueFunc) +@@||doubleclick.net^$script,xhr,domain=arcai.com +@@||fundingchoicesmessages.google.com^$script,domain=arcai.com +@@||googletagservices.com/tag/js/gpt.js$script,domain=arcai.com +@@*$ghide,domain=arcai.com +mysflink.blogspot.com##+js(set, safelink.adblock, false) +mysflink.blogspot.com##+js(nano-sib) +sofwaremania.blogspot.com##+js(nano-stb) +jav1080.com##div.boxzilla, .boxzilla-overlay, [href^="https://adsxyz.com/"] +jav1080.com###custom_html-3 +jav1080.com###custom_html-4 +/300x250.html|$frame,3p +l2db.info##+js(nowoif) +||l2db.info/uploads/banners/$image +l2db.info##.branding +l2db.info##[href^="https://overworld.pro/"] +l2db.info###wrapper-content:style(margin-top:0px !important) +l2db.info##[href*="adv"] +l2db.info###branding +psychic.de##+js(nostif, offsetHeight) +my-code4you.blogspot.com##+js(nostif, offsetLeft) +my-code4you.blogspot.com##+js(set, config.pauseInspect, false) +*$script,redirect-rule=noopjs,domain=my-code4you.blogspot.com +made-by.org##+js(nostif, ads) +*$xhr,redirect-rule=nooptext,domain=made-by.org +made-by.org###overlay +ilovephd.com##+js(set, adsbygoogle, null) +@@||notepad.pw^$ghide +gosemut.*##+js(nowoif) +rexdlfile.com##+js(aopr, require) +! art sites redirections, ads +opisanie-kartin.com,painting-planet.com##+js(aopr, LieDetector) +||edugrampromo.com^$3p +*/?pu=$script +1plus1plus1equals1.net,cooksinfo.com,heatherdisarro.com##+js(aopr, Date.prototype.toUTCString) +25yearslatersite.com##+js(set, jQuery.adblock, false) +helpnetsecurity.com##+js(acs, jQuery, Object) +thepiratebay.org##+js(aopr, exoJsPop101) +||thepiratebay.org/sw.js +kollhong.com##+js(aopr, adBlockDetected) +||cointiply.com^$3p +||reingod.com^ +! rppk13baru.blogspot.com anti-adb +rppk13baru.blogspot.com##+js(acs, addEventListener, blocker) +! arabamob.blogspot.com anti-adb +arabamob.blogspot.com##+js(acs, addEventListener, blocker) +*$script,redirect-rule=noopjs,domain=akunssh.net +videosection.com##+js(aopr, exoJsPop101) +techieway.blogspot.com##+js(acs, addEventListener, AdBlock) +pornfd.com##+js(nostif, innerText, 2000) +pornfd.com##+js(aopr, console.clear) +pornfd.com##+js(aeld, , bi()) +pornfd.com##.bannerImage +pornfd.com##.sponsor +||pornfd.com/*.php +flickr.com##+js(set, appContext.adManager.context.current.adFriendly, false) +flickr.com##.sub-photo-submoola-view +flickr.com##section:has([href*="istockphoto.com"]) +! flickr.com##.sub-photo-right-view [href^="/account/upgrade"]:upward(.sub-photo-right-view > div) +flickr.com##body::after:style(top: 0 !important;) +flickr.com##.nav-ad-container +flickr.com##.fluid-magic-subnav-view.desktop-nav-ad .fluid-subnav.fixed, .fluid-magic-subnav-view.mobile-nav-ad .fluid-subnav.fixed:style(top: 0 !important;) +flickr.com##.global-nav-view.desktop-nav-ad, .global-nav-view.desktop-nav-ad .global-nav-content, .global-nav-view.mobile-nav-ad, .global-nav-view.mobile-nav-ad .global-nav-content:style(margin-top: 0 !important;) +flickr.com##.search-photos-unified-page-view .desktop-nav-ad:remove-class(desktop-nav-ad) +flickr.com##.search-photos-unified-page-view .mobile-nav-ad:remove-class(mobile-nav-ad) +*$media,3p,domain=hdd.moviefun24.com,redirect=noopmp3-0.1s +pornky.com##+js(aopr, exoJsPop101) +rexporn.*##+js(aeld, , pop) +pleated-jeans.com##+js(aopr, HTMLIFrameElement) +flash-firmware.blogspot.com##+js(noeval-if, replace) +getmega.net##+js(aopr, adBlockDetected) +desktophut.com##+js(acs, document.getElementById, .style) +##[href^="https://fireads.online/"] +desktophut.com###loading-ad +*$frame,redirect-rule=noopframe,domain=desktophut.com +*$xhr,redirect-rule=nooptext,domain=desktophut.com +!!! +a-ads.com##.size300x250 +googlesyndication.com##.GoogleActiveViewElement:not(:has(> #reward_close_button_widget, .recommend_book)) +googlesyndication.com##.GoogleActiveViewElement > div:not(#reward_close_button_widget):not(.recommend_book) +googlesyndication.com###abgb +memoriadatv.com##+js(nano-stb) +@@||memoriadatv.com^$ghide +memoriadatv.com##ins.adsbygoogle +@@||myzyia.com^$ghide +zone-annuaire.*##+js(nowoif) +notube.*,~notube.com##+js(nowoif) +*$script,redirect-rule=noopjs,domain=runmods.com +runmods.com##+js(nano-sib) +gal-dem.com##+js(aopr, dsanity_ad_block_vars) +forumconstruire.com#?#.post_simple:has(.postsimple_pseudo:has-text(/promo/i)) +latitude.to##+js(nostif, show) +apkmb.com##+js(nano-sib, show_download_links) +uploadking.net##+js(nano-stb, downloadbtn) +||pub.network^$script,redirect=noopjs,domain=vrcmods.com +vrcmods.com##+js(nano-sib, timeLeft) +vrcmods.com##+js(nostif, height) +vrcmods.com##+js(nosiif, height) +vrcmods.com###download-form:style(display: initial !important;) +vrcmods.com###app:style(display: none !important;) +vrcmods.com###app_msg:style(display: none !important;) +vrcmods.com##.show.fade.modal +vrcmods.com##.show.fade.modal-backdrop +leolist.cc##+js(nowoif) +! teachersguidetn.blogspot.com/bayaningfilipino.blogspot.com/fileandsharing.com anti-adb +teachersguidetn.blogspot.com,bayaningfilipino.blogspot.com##+js(acs, addEventListener, blocker) +firefile.cc##+js(set, blockAdBlock._options.baitClass, null) +@@||manhwa18.com^$ghide +uploadhub.*##+js(nowoif) +uploadhub.*##+js(no-fetch-if, adsbygoogle) +uploadhub.*##+js(nostif, location.href, 1000) +*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com,domain=uploadhub.* +uploadhub.*##[src^="https://blogger.googleusercontent.com/"] +verteleseriesonline.com##+js(aopr, adBlockDetected) +verteleseriesonline.com##+js(nosiif, visibility, 1000) +flight-report.com##+js(aeld, load, /AdBlock/i) +! ievaphone .com anti adb +ievaphone.com##+js(acs, onload) +obsev.com##+js(aopr, HTMLIFrameElement) +pentruea.com##+js(nostif, charAt) +@@||heypikachu.com^$ghide +mchacks.net##+js(nostif, checkAds) +why-tech.it##+js(nostif, fadeIn, 0) +@@||why-tech.it^$ghide +why-tech.it##ins.adsbygoogle +techably.com##+js(acs, document.getElementById, adsbygoogle) +imintweb.com##+js(aopr, adBlockDetected) +@@||minorpatch.com^$ghide +*$image,redirect-rule=1x1.gif,domain=minorpatch.com +minorpatch.com##ins.adsbygoogle +minorpatch.com##+js(acs, decodeURIComponent, checkAD) +minorpatch.com##+js(no-fetch-if, googlesyndication) +@@||debrid-file.com^$ghide +||nexusbytes.com^$3p +maccanismi.it##+js(noeval-if, show) +manytoon.com##+js(aopr, decodeURI) +*$script,3p,denyallow=cloudflare.net|disqus.com|disquscdn.com|fastlylb.net,domain=manytoon.com +||fzj3v7sch2xg5gosh60vpkrth5c6cngvj5ivd9kg5ajcdl2vlp2ocj5fjbto.me^ +manytoon.com##.ad +||freecomiconline.me/*.gif^$image +compsmag.com##+js(nostif, jQuery) +vulture.com##+js(aeld, /^(?:click|mousedown)$/, latest!==) +ilmeteo.it##+js(nostif, google_jobrunner) +ilmeteo.it###banner-mnz-topleft:style(height: 80px !important) +rangerboard.com##+js(acs, $, btoa) +@@||rangerboard.com^$ghide +rangerboard.com##.adsbygoogle +rangerboard.com##+js(no-xhr-if, googlesyndication) +beermoneyforum.com##+js(acs, $, Adblock) +beermoneyforum.com##.is-active.overlay-container:has(div[data-position] > center > a) +beermoneyforum.com##.samBackground:style(background-image:none !important) +beermoneyforum.com##.samBackgroundItem.samItem +beermoneyforum.com##body:style(overflow: auto !important) +@@||ploudos.com^$ghide +beegsexxx.com##+js(aopr, document.dispatchEvent) +beegsexxx.com##.preview:has(> .prev > script[data-ad_sub]) +beeg.party##+js(nowoif) +spank-and-bang.com##+js(acs, decodeURI, decodeURIComponent) +tubxporn.com##+js(aopr, exoJsPop101) +pornone.com##+js(acs, $, adblock) +pornone.com##.vjs-paused > .warp +pornone.com##a[href*="//prtord.com/"] +pornone.com##.vjs-info-top +||pornone.com/js/combined.js +! sythe.org anti adb +sythe.org##+js(acs, $, adblocker) +sythe.org##+js(acs, document.getElementsByTagName, adblocker) +/?referral=sythe$all +||sythe.org/*.php$3p +/sytheb$all +/^https:\/\/([a-z]+\.)?sythe\.org\/[\w\W]{30,}/$image +*$image,redirect-rule=1x1.gif,domain=sythe.org +@@||sythe.org/*.png|$image,1p +@@||sythe.org/*.jpg?$image,1p +||i.imgur.com/*.mp4$media,domain=sythe.org +sythe.org##div[style="width: 100%; display: block; text-align: center;"] +sythe.org###topadplaceholder +wg-gesucht.de##+js(acs, $, detectAdBlocker) +mp4mania1.net##+js(aopr, LieDetector) +mp4mania1.net##.advert +mp4mania1.net##.prop_native1 +mp4mania1.net##[href^="https://ak.naiwoalooca.net/"] +||undefined^$script,redirect=noopjs +||d3g5ovfngjw9bw.cloudfront.net^$script,redirect=noopjs +khatrimaza.*##+js(aeld, , 0x) +khatrimaza.*##+js(acs, puShown, /doOpen|popundr/) +khatrimaza.*##+js(no-xhr-if, ads) +okhatrimaza.*##+js(acs, Object.defineProperty, XMLHttpRequest) +khatrimaza.*##+js(nostif, showModal) +tapetus.pl##+js(nostif, /^/) +*$script,redirect-rule=noopjs,domain=tapetus.pl +tapetus.pl##+js(acs, $, setTimeout) +tapetus.pl##div[style="box-sizing: border-box; padding:0px 5px 0px 0px; text-align:center;"] +yabiladi.com##+js(set, adBlockDetected, null) +livegore.com##+js(acs, atob, decodeURIComponent) +livegore.com##+js(aopr, LieDetector) +megaplayer.bokracdn.run##+js(aeld, DOMContentLoaded, .ready) +megaplayer.bokracdn.run##.blockingAd, .popBannerTeaser +pestleanalysis.com##+js(set, blockAdBlock._options.baitClass, null) +ouo.*,mirrorace.com,7starhd.*##+js(acs, String.fromCharCode, /'shift'|break;/) +*$media,redirect-rule=noopmp3-0.1s,domain=eroasmr.com +eroasmr.com##.elite_vp_videoPlayerAD +||eroasmr.com/preroll$xhr,1p +||eroasmr.com/postroll$xhr,1p +eroasmr.com##+js(trusted-rpnt, script, vastTag, v) +gaystream.pw##+js(aopr, adsbyjuicy) +gaystream.pw##.a-block +! twistedporn .com popup +twistedporn.com##+js(nowoif) +@@||paypou.com^$ghide +||paypou.com/newbanner +||oklivetv.com^$xhr,1p,redirect-rule=nooptext +*$script,redirect-rule=noopjs,domain=oklivetv.com +!#if env_firefox +@@||oklivetv.com^$xhr,script,css,1p +!#endif +@@||althub.club^$ghide +althub.club##+js(rmnt, script, Adblock) +sukidesuost.info##+js(nosiif, visibility, 1000) +@@||extremeoverclocking.com^$ghide +@@||burzowo.info^$1p,script +globes.co.il##+js(set, document.blocked_var, 1) +globes.co.il##+js(set, ____ads_js_blocked, false) +jardiner-malin.fr##+js(set, wIsAdBlocked, false) +*$script,3p,denyallow=google.com|gstatic.com,domain=skidrowcodex.net +ymp4.download##+js(nowoif) +ymp4.download###mp3button +eoreuni.com##+js(aopr, adBlockDetected) +eoreuni.com##a[href^="https://iherb.co/"] +! webcreator-journal.com anti adb +webcreator-journal.com##+js(acs, document.addEventListener, google_ad_client) +shinden.pl##+js(acs, document.createElement, shift) +@@||reklama.shinden.eu^$frame,domain=shinden.pl +tw-calc.net##+js(set, WebSite.plsDisableAdBlock, null) +tw-calc.net##.horizontal_large.container +tw-calc.net##.vertical.container +tw-calc.net##.vertical_large.container +tw-calc.net##.vertical_large_2.container +pornomoll.*##+js(nostif, innerText, 2000) +pornomoll.*##+js(aeld, , _blank) +/clc?aid=$all +supermarches.ca##+js(acs, $, css) +watchpornx.com##+js(aopr, document.dispatchEvent) +watchpornx.com##+js(aopr, jsUnda) +watchpornx.com##+js(nowoif) +watchpornx.com##+js(acs, puShown, /doOpen|popundr/) +watchpornx.com###execphp-2 +watchpornx.com###overlays +vidop.*##+js(nowoif) +! lagacetadesalamanca.es video ads +lagacetadesalamanca.es##+js(aopr, videootv) +seriemega.*##+js(nowoif) +seriemega.*##.bnr +swame.com##+js(set, is_adblocked, false) +ohmybrush.com##+js(set, ads_blocked, false) +@@||pigy.cz^$ghide +thatav.net##+js(aopr, decodeURI) +||thatav.net/sw.js$script,1p +pugam.com##+js(acs, jQuery, ai_adb) +@@||top10newgames.com^$ghide +@@||25cineframes.com^$ghide +25cineframes.com##ins.adsbygoogle +rojadirecta-tv-en-vivo.blogspot.com##+js(acs, String.fromCharCode, atob) +talkceltic.net##+js(set, samDetected, false) +@@||splitshire.com^$ghide +splitshire.com##.adsbygoogle:upward(.row-container) +splitshire.com##.ezoic-ad +@@||kwamkidhen.com^$ghide +kwamkidhen.com##[id*="ScriptRoot"] +kwamkidhen.com##ins.adsbygoogle +pdfindir.net##+js(aeld, , _0x) +autoroad.cz##+js(nostif, check) +! 1stcollegescholarship .net anti adb +@@||1stcollegescholarship.net^$ghide +! 3dmonitortips .com anti adb +@@||3dmonitortips.com^$ghide +womenreality.com##+js(nosiif, visibility, 1000) +@@||starbits.io^$ghide +comousarzararadio.blogspot.com##+js(aopr, adBlockDetected) +comousarzararadio.blogspot.com###HTML10, #HTML9 +infocorp.io##+js(aopr, detectAdBlocker) +! isohunt2 .net / isohunt. nz popups ads +isohunt.*##+js(nowoif) +||isohunt*.*/nordvpn/$frame +guncelkaynak.com##+js(acs, jQuery, ai_adb) +addictinggames.com##+js(aopr, Drupal.behaviors.agBlockAdBlock) +addictinggames.com#@#.ad_container +addictinggames.com#@#.add-bx +addictinggames.com##.add-bx:style(height: 0px !important; min-height: 0px !important;) +@@*$ghide,domain=4bigv.com|5278cc.co|accountingplus786.blogspot.com|aetools.blogspot.com|antenadosnaskyecia.com|apprendrelekabyle.com|asianexpress.co.uk|buxearn.com|coinrotation.com|comparatif-logiciels.fr|cours-de-droit.net|dicionarioconceitos.blogspot.com|edukalife.blogspot.com|engquimicasantossp.com.br|firefiles.us|football-highlight.com|gastroepato.it|gozd-les.com|granadaesnoticia.com|hayastantv.me|hunter.fm|info-desk.co.za|l2top.co|letras2.com|lootdb.com|metalymetal.com|mtabrasil.com.br|nekomeowmeow.com|numbersinwords.net|oztoml.com|rcbinfo.com|redheadpassions.com|remixsearch.es|rendaclix.com|tamilfunda.com|teknolojiprojeleri.com|tercihiniyap.net|top100golfcourses.com|transpassions.com|viewster.co|vww.yggtorrent.fr|walkingenglishman.com|wikihandbk.com +letras2.com##+js(nostif, nextFunction, 450) +cours-de-droit.net,football-highlight.com,gastroepato.it,granadaesnoticia.com,hayastantv.me,hunter.fm,info-desk.co.za,lootdb.com,mtabrasil.com.br,nekomeowmeow.com,numbersinwords.net,oztoml.com,redheadpassions.com,teknolojiprojeleri.com,tercihiniyap.net,vww.yggtorrent.fr,walkingenglishman.com,wikihandbk.com##ins.adsbygoogle +nekomeowmeow.com###text-6 +nekomeowmeow.com###text-5 +hunter.fm##.pwby_hiper +l2top.co##.main-top-ads +l2top.co##.rightBarAd +l2top.co##div.leftBarAd +l2top.co###bannerads-background +mtabrasil.com.br##.banner +redheadpassions.com,transpassions.com###header_ad_banner +viewster.co##.ads +xda-developers.com##+js(rc, twig-body) +@@||hiphopa.net^$ghide +||d10ydmitx7crxz.cloudfront.net^ +||extra69.net^$3p +@@||imedikament.de^$ghide +vosfemmes.com,voyeurfrance.net##+js(set, is_adblocked, false) +vosfemmes.com,voyeurfrance.net##+js(rmnt, script, /isAdBlocked|popUnderUrl/) +vosfemmes.com,voyeurfrance.net##+js(set-cookie, dscl2, 1) +sms-anonyme.net##+js(nowebrtc) +@@||sms-anonyme.net^$ghide +sms-anonyme.net##ins.adsbygoogle +portable4pc.com##+js(nosiif, visibility, 1000) +portable4pc.com##+js(aost, document.getElementById, adsBlocked) +kochamjp.pl##+js(set, blockAdBlock._options.baitClass, null) +||doubleclick.net^$frame,redirect=noopframe,domain=cpu-world.com +@@||pagead2.googlesyndication.com/pagead/managed/js/adsense/*/show_ads_impl$script,domain=cpu-world.com +@@||cpu-world.com^$ghide +cpu-world.com##ins.adsbygoogle +comparteunclic.com##+js(aopr, NoAdBlock) +localizaagencia.com##+js(nosiif, visibility, 1000) +tech-blogs.com##+js(nostif, mdp) +pghk.blogspot.com##+js(acs, addEventListener, google_ad_client) +upnewsinfo.com##+js(aopr, mMCheckAgainBlock) +punisoku.blogo.jp##+js(acs, url, Math.random) +@@||eska.pl^$ghide +resetoff.pl##+js(set, ads_unblocked, true) +logi.im##+js(nostif, adsbygoogle) +yourporngod.com##+js(acs, String.fromCharCode, 'shift') +yourporngod.com##+js(set, flashvars.adv_pre_vast, '') +yourporngod.com##+js(set, flashvars.adv_pre_vast_alt, '') +@@||yourporngod.com^$ghide +*$script,3p,denyallow=gstatic.com,domain=yourporngod.com +bussyhunter.com##+js(rpnt, script, /protect_block.*?\,/) +mentalfloss.com##+js(set, countClicks, 0) +/wp-content/plugins/eazy-ad-unblocker/*$script,css +adala-news.fr###eazy_ad_unblocker_dialog-message +anomize.xyz##+js(nano-sib) +anomize.xyz##+js(nosiif, visibility, 1000) +medebooks.xyz##+js(nostif, ai_adb) +anonymousceviri.com##+js(acs, addEventListener, nextFunction) +lavozdigital.es##+js(aopr, NREUM) +digitalstudiome.com##+js(aopr, adBlockDetected) +freepornhdonlinegay.com##+js(aopw, decodeURI) +tutorialforlinux.com##+js(set, blockAdBlock._options.baitClass, null) +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noop.js:10,domain=nsspot.herokuapp.com +uprafa.com##+js(set, settings.adBlockerDetection, false) +uprafa.com###stickyFooterBoxColseBtn +breatheheavy.com##+js(nostif, eabdModal) +megaflix.*##+js(nowoif) +wenxuecity.com##+js(acs, onload, adsbygoogle) +wenxuecity.com##+js(nostif, ab_root.show) +wenxuecity.com##+js(no-fetch-if, googlesyndication) +casos-aislados.com##+js(nosiif, visibility, 1000) +zipi.com##.ad +! brstej .com ads + popups +brstej.com##+js(aeld, , _0x) +! ads, popups +topwwnews.com##+js(aeld, , _0x) +*$script,3p,domain=topwwnews.com +smartwebsolutions.org##+js(acs, $, .show) +jootc.com##+js(aost, String.prototype.charCodeAt, ai_) +jootc.com##.ai_widget +freeomovie.to##+js(nosiif, visibility, 1000) +freeomovie.to##+js(acs, String.fromCharCode, 'shift') +pasteit.*##+js(noeval-if, AdBlock) +*$xhr,redirect-rule=nooptext,domain=freebinchecker.com +@@||geekprank.com^$ghide +freshstuff4u.info##+js(acs, addEventListener, google_ad_client) +freshstuff4u.info##div.widget_list_mag_wp_300px, .img-200 +anoboy.*##+js(acs, addEventListener, google_ad_client) +anoboy.*##div#judi2, #coloma, [href^="//kokipoker.net"] +anoboy.*##[href^="https://bit.ly/"] +anoboy.*##[href^="http://click2go.me/"] +anoboy.*###popup_box +anoboy.*###popup_bawah +turkrock.com##+js(acs, $, .show) +||c.amazon-adsystem.com/aax2/apstag.js$script,domain=foxnews.com,important +||googletagmanager.com^$script,domain=foxnews.com,important +||imasdk.googleapis.com/js/sdkloader/ima3_debug.js$domain=foxnews.com,important +foxnews.com##.site-header:style(min-height: 90px !important) +@@||85videos.com^$ghide +85videos.com##.sponsor +85videos.com###pop +85videos.com##.haha-body +hamakei.com###topBnr, #recBanner, .partner +key-hub.eu##+js(no-fetch-if, ads) +key-hub.eu##+js(nostif, gaData) +@@||key-hub.eu^$ghide +key-hub.eu##ins.adsbygoogle +@@||key-hub.eu/$1p,script +*$script,redirect-rule=noopjs,domain=bandab.com.br +bandab.com.br##.widget_publicidade +gtamaxprofit.com##+js(acs, $, wrapfabtest) +@@||myuploadedpremium.de^$ghide +myuploadedpremium.de##+js(aost, $, /(?=^(?!.*(https)))/) +myuploadedpremium.de##ins.adsbygoogle +myuploadedpremium.de###babasbmsgx +myuploadedpremium.de##.copyright > .card +@@||souqsky.net^$ghide +souqsky.net##+js(aopw, Fingerprint2) +@@||ubeat.tv^$ghide +@@||animesanka.*^$ghide +*$image,redirect-rule=1x1.gif,domain=animesanka.* +animesanka.*##[id*="-ads-"] +@@||napolitoday.it^$ghide +! jetanimes .com popups +jetanimes.*##+js(ra, href, #clickfakeplayer) +ephoto360.com##+js(acs, $, Adblock) +! movies07. art / .live anti adb +movies07.*##+js(aeld, , pop) +hpaudiobooks.*##+js(acs, String.fromCharCode, 'shift') +hpaudiobooks.*##^script:has-text('shift') +hpaudiobooks.*##^script:has-text(\'shift\') +gaydelicious.com##+js(aost, String.prototype.charCodeAt, ai_) +##[href^="//mellowads.com/"] +wwwfotografgotlin.blogspot.com##+js(set, fuckAdBlock._options.baitClass, null) +*$script,3p,denyallow=blogger.com|bootstrapcdn.com|cloudflare.com|cloudflare.net|gitcdn.link|githack.com|google.com|googleapis.com|gstatic.com|recaptcha.net,domain=wwwfotografgotlin.blogspot.com +||cpmlink.net^$3p +||unbrick.id^$3p +@@||viralfeed.*^$ghide +viralfeed.*##.admania-widgettit +! pornhail .com ads +*$script,3p,denyallow=cloudflare.com,domain=pornhail.com +pornhail.com##.bottom-blocks +! reamporn .com ads +*$script,3p,denyallow=cloudflare.com|cloudflare.net|googleapis.com|jquery.com|jsdelivr.net|netdna-cdn.com|rawgit.com,domain=reamporn.com +*.php$script,frame,domain=reamporn.com +reamporn.com##.vid-ave-ins +reamporn.com###bnclose +xxxmax.net##^script:has-text('shift') +xxxmax.net##^script:has-text(\'shift\') +xxxmax.net##+js(acs, String.fromCharCode, 'shift') +@@*$ghide,domain=uploadrar.* +uploadrar.*###commonId > a[target="_blank"] +uploadrar.*##main > center > a.btn-primary +uploadrar.*##form > center:has(.btn):has([href]) +uploadrar.*##.footer, span > .text-muted, .card, .m-2.submit-btn.btn-primary.btn +uploadrar.*##.fs-5, p, ul, li, #how-to-open, .download-controls, .ad-box + center +uploadrar.*##.ad-label, .adsbygoogle +uploadrar.*##+js(acs, document.documentElement, break;case $.) +uploadrar.*##+js(nano-stb, /.?/, *) +||pixeltrey.com^ +damndelicious.net,simplywhisked.com##+js(aopr, __eiPb) +@@||weibomiaopai.com^$ghide +linfoweb.com##+js(acs, Math.floor, document.write) +linfoweb.com##ins.adsbygoogle-wrapper +||texto.click^$3p +||contextbar.ru^$3p +*$script,3p,denyallow=cloudflare.com,domain=storieswatch.com +sexodi.com##+js(set, ads_unblocked, true) +sexodi.com##.background-cloud:style(display: none !important;) +sexodi.com###video_reklamy +upxin.net##+js(aeld, load, onload) +dayoftheweek.org##+js(nosiif, visibility, 1000) +@@||world-sms.org/get-ad/$xhr,1p +world-sms.org##.promoBlock +mypussydischarge.com##+js(aopr, adBlockDetected) +mypussydischarge.com##+js(aopr, decodeURI) +@@||arab4load.com^$ghide +sms24.*##body > div[style^="position: fixed; z-index: 1000"] +sms24.*##+js(aost, $ado, /ado/i) +sms24.*##+js(aost, document.createElement, app.js) +sms24.*##.ado-header +sms24.*##.ado-content +sms24.*##.placeholder:remove-class(placeholder) +*$script,redirect-rule=noopjs,domain=sms24.* +@@||sms24.*^$ghide +hentaistream.com##+js(aeld, load, script) +hentaistream.com##+js(noeval-if, popUnderStage) +! popups hhkungfu. cash +hhkungfu.*##+js(nowoif) +*$xhr,redirect-rule=nooptext,domain=pricez.co.il +@@||fark.com/js/$1p,script +||sexy-egirls.com/sexy-egirls.com.mp4$media,1p,redirect=noopmp3-0.1s +@@||metro.co.uk^$ghide +metro.co.uk###we-need-monies +metro.co.uk##.ad-slot-container +metro.co.uk###connatix_placeholder_desktop +metro.co.uk##.metro__ad_area_left +metro.co.uk##.metro__ad_area_right +metro.co.uk###taboola-feed-container +metro.co.uk###taboola-below-article-thumbnails +javmvp.com##+js(aopr, __Y) +cracking.org##+js(acs, $, samAdBlockAction) +cracking.org##+js(acs, RegExp, googlebot) +softwaresde.com##+js(acs, $, advert) +! Amazon Music ads +||cloudfront.net^*.mp3|$media,redirect=noopmp3-0.1s,domain=music.amazon.com|music.amazon.ca|music.amazon.co.uk|music.amazon.fr|music.amazon.de|music.amazon.it|music.amazon.es|music.amazon.co.jp|music.amazon.com.au|music.amazon.com.mx +badassdownloader.com##+js(set, bscheck.adblocker, noopFunc) +badassdownloader.com,badasshardcore.com,badassoftcore.com##+js(nostif, innerHTML) +quickporn.net##+js(set, qpcheck.ads, noopFunc) +badassoftcore.com,badassdownloader.com,badasshardcore.com,quickporn.net###ban-cont +camarchive.tv##+js(no-fetch-if, popunder) +@@||pikwizard.com^$ghide +pikwizard.com##.sponsor-text +pikwizard.com##[href*="tradedoubler"] +! As of 2016-12-02, found site uses WebRTC to deliver ads +tomshardware.*##+js(aopw, tmnramp) +@@||teleboy.ch/assets/js/*$xhr,1p +teleboy.ch##a[href*="BrandingDay"] +ddownr.com##+js(nowoif) +keepv.id##+js(nowoif) +savethevideo.com##+js(nowoif) +savefrom.net##+js(nowoif, !sf-converter.com) +savefrom.net##+js(trusted-set, clickAds.banner.urls, 'json:[{"url":{"limit":0,"url":""}}]') +audiostereo.pl##div[style="margin-bottom: 10px;"] > a[href][target="_blank"], [href^="https://salony.nautilus.net.pl/"] +freelistenonline.com##+js(set, fuckAdBlock._options.baitClass, null) +fabioambrosi.it##+js(nostif, ad) +! Appears related to uponit.com +! Somehow, websocket requests are behind-the-scene with Firefox. Pending +! further investigation, this fixes the issue. +! ||4chan.org^$csp=connect-src https: http: +! *$script,3p,denyallow=4cdn.org|4chan.org|cloudflare.com|google.com|gstatic.com|hcaptcha.com|mathjax.org|spur.us,domain=boards.4channel.org +! *$script,3p,denyallow=4cdn.org|4channel.org|cloudflare.com|google.com|gstatic.com|hcaptcha.com|mathjax.org|spur.us,domain=4chan.org +artesacro.org##+js(acs, onload, adb) +curto.win##+js(aopr, app_vars.force_disable_adblock) +curto.win##+js(aeld, click, trigger) +*$frame,3p,domain=curto.win +||avantajados.com^$3p +kontrolkalemi.com##+js(aopr, adBlockDetected) +@@||gamebrew.org^$ghide +gamebrew.org##ins.adsbygoogle +gamebrew.org##+js(no-fetch-if, method:HEAD) +drtuber.*##+js(nowoif) +drtuber.*###video_list_banner +drtuber.*##.abtext +drtuber.*##.drt-spot-box +drtuber.*##.f_width.footer > .item_box +drtuber.*##.fh.heading +drtuber.*##.item_spots +drtuber.*##.livecams_main +drtuber.*##.puFloatLine +drtuber.*##.title-sponsored +||drtuber.*/footer_tiz.php +||drtst.com/promo/banners/ +drtuber.*###spot_video_partner_banner +m.drtuber.com###banner_overlay-postitial-video:remove() +takimag.com##+js(acs, document.getElementById, show_ads) +xsanime.com##+js(nosiif, _0x) +xsanime.com##+js(aeld, , _0x) +xsanime.com##+js(aopr, console.clear) +*$script,domain=xsanime.com,3p,denyallow=chatango.com|cloudflare.com|disqus.com|disquscdn.com|onesignal.com +ytboob.com##+js(aopr, document.dispatchEvent) +gsmfirmware.net##+js(acs, eval, ignielAdBlock) +! uploadraja .com ads +uploadraja.com##+js(acs, getCookie) +||uploadraja.com/sw.js$script,1p +||gamezop.com^$domain=uploadraja.com +||eriegentsfse.info^ +uploadraja.com##a[href^="https://so-gr3at3.com/"] +@@||f1countdown.com^$ghide +@@||stgeorgeutah.com^$ghide +stgeorgeutah.com##.main-top-ad +@@||distro.tv^$ghide +lookimg.com##+js(nosiif, visibility, 1000) +yellowbridge.com##+js(nostif, blocker) +yellowbridge.com##+js(set, isContentBlocked, falseFunc) +! ||spotify.com/storage-resolve/files/audio/interactive/*$xhr,domain=open.spotify.com +||adxcel.com^ +||akamaized.net/audio/$media,redirect=noop-1s.mp4:10,from=open.spotify.com +||scdn.co/audio/$media,redirect=noop-1s.mp4:10,domain=open.spotify.com +||scdn.co/mp3-ad/$media,redirect=noop-1s.mp4:10,domain=open.spotify.com +||scdn.co/mp3/$media,redirect=noop-1s.mp4:10,domain=open.spotify.com +||spotifycdn.com/audio/$media,redirect=noop-1s.mp4:10,domain=open.spotify.com +||amillionads.com^$media,redirect=noop-1s.mp4:10,from=open.spotify.com +||2mdn.net^$media,redirect=noop-1s.mp4:10,domain=open.spotify.com +||adxcel.com^$media,redirect=noop-1s.mp4:10,domain=open.spotify.com +||adstudio-assets.scdn.co^$media,redirect=noop-1s.mp4:10,domain=open.spotify.com +*$media,3p,redirect-rule=noop-1s.mp4:10,domain=open.spotify.com +@@||podscribe.com/rss/$media,domain=open.spotify.com +@@||mgln.ai/e/$media,domain=open.spotify.com +@@/traffic.megaphone.fm/*.mp3^$media,domain=open.spotify.com +/traffic.megaphone.fm/*.mp3^$media,domain=open.spotify.com,urlskip=/(traffic\.megaphone\.fm\/\w+\.mp3)/ +https +ilgeniodellostreaming.*##+js(aopr, AaDetector) +ilgeniodellostreaming.*##+js(nowoif) +ilgeniodellostreaming.*##.opbtn.bnnr1 +ilgeniodellostreaming.*##.opbtn.bnnr2 +ilgeniodellostreaming.*##.opbtn.wp-content +ilgeniodellostreaming.*##[href*=".php"] +ilgeniodellostreaming.*##.alert-warning +safevideo.click##[meta-link="/video.html"] +v1.safevideo.click##.butt +v1.safevideo.click##.hov +v1.safevideo.click###register-overlay +v1.safevideo.click###custom-video +v1.safevideo.click###video-container +arabianbusiness.com##+js(aopr, adBlockDetected) +tattle.life##+js(nostif, prompt, 1000) +tattle.life##.visitorAdPost +eskiceviri.blogspot.com##+js(aopr, adBlockDetected) +eskiceviri.blogspot.com##+js(acs, puShown, /doOpen|popundr/) +siteunblocked.info,theproxy.app##+js(nowoif) +/app14.js$domain=siteunblocked.info|theproxy.app +/g12.js$domain=siteunblocked.info|theproxy.app +siteunblocked.info,theproxy.app##.all-linked +siteunblocked.info##+js(aopr, GetWindowHeight) +siteunblocked.info##+js(aopr, decodeURIComponent) +/hy.js$script,domain=siteunblocked.info +||siteunblocked.info/zpp/*$script,domain=siteunblocked.info +siteunblocked.info##+js(aeld, , /pop|wm|forceClick/) +siteunblocked.info##.antoic +siteunblocked.info##[id^="cookieConsent"] +||declk.com^$all +animeblkom.net##+js(set, blockAdBlock._options.baitClass, null) +animeblkom.net##+js(set, CloudflareApps.installs.Ik7rmQ4t95Qk.options.measureDomain, undefined) +vid4up.*###aoverlay +vid4up.*##+js(nowoif) +convert2mp3.tv##[href="/banner.html"] +cardiagn.com##+js(nostif, mdp) +@@||aosmark.com^$ghide +aosmark.com##+js(set, detectAB1, noopFunc) +@@||legrandrex.com^$ghide +@@||trueid.net^$ghide +baritoday.it##+js(nostif, bADBlock) +earncash.*##+js(aopr, app_vars.force_disable_adblock) +mashtips.com##+js(nostif, ai_adb) +ministryofsolutions.com##+js(acs, addEventListener, google_ad_client) +dj-figo.com##+js(aopr, adBlockDetected) +xiaomitools.com##+js(acs, addEventListener, google_ad_client) +link1s.*##+js(aopr, app_vars.force_disable_adblock) +link1s.*##+js(aopr, open) +link1s.*##.banner-inner +kiemlua.com,link1s.*###baolink1s +anhdep24.com##+js(acs, eval, replace) +anhdep24.com##.popup-container, .text-center h2~*, .text-center h2, .site-logo +anhdep24.com#@##link1s-wait1 +dreamcheeky.com,fidlarmusic.com,jncojeans.com,kiemlua.com,kingsleynyc.com,lucidcam.com,nguyenvanbao.com,nousdecor.com,publicananker.com,restorbio.com,staaker.com##+js(nano-sib, counter, *) +link1s.*##+js(set, blurred, false) +dreamcheeky.com,fidlarmusic.com,jncojeans.com,kiemlua.com,kingsleynyc.com,lucidcam.com,nguyenvanbao.com,nousdecor.com,publicananker.com,restorbio.com,staaker.com###link1s-link +dreamcheeky.com,fidlarmusic.com,jncojeans.com,kiemlua.com,kingsleynyc.com,lucidcam.com,nguyenvanbao.com,nousdecor.com,publicananker.com,restorbio.com,staaker.com###link1s-wait1 +dreamcheeky.com,fidlarmusic.com,jncojeans.com,kiemlua.com,kingsleynyc.com,lucidcam.com,nguyenvanbao.com,nousdecor.com,publicananker.com,restorbio.com,staaker.com###link1s-generate +dreamcheeky.com,fidlarmusic.com,jncojeans.com,kiemlua.com,kingsleynyc.com,lucidcam.com,nguyenvanbao.com,nousdecor.com,publicananker.com,restorbio.com,staaker.com###link1s-snp:style(display:block!important) +*$3p,denyallow=bootstrapcdn.com|cloudflare.com|consensu.org|google.com|googleapis.com|gstatic.com|hcaptcha.com|jquery.com|jsdelivr.net|recaptcha.net,domain=link1s.* +||i.imgur.com^$image,domain=anhdep24.com|dreamcheeky.com|fidlarmusic.com|kiemlua.com|lucidcam.com|nousdecor.com|publicananker.com +kiemlua.com,link1s.com##+js(noeval-if, /chp_?ad/) +kiemlua.com##^script:has-text(Adblock) +!#if !cap_html_filtering +kiemlua.com##+js(rmnt, script, Adblock) +!#endif +mynet.com##+js(nostif, googlefc) +dropshipin.id##+js(acs, $, ads) +haddoz.net##+js(set, adBlockDetected, noopFunc) +||static.adsafeprotected.com/vans-adapter-google-ima.js$script,redirect=noopjs,domain=motortrend.com +necksdesign.com##+js(nosiif, visibility, 1000) +hollywoodpq.com##+js(acs, document.querySelector, adb) +hollywoodpq.com##div.oboxads +! vidlo .us popups +vidlo.us##+js(aeld, , _0x) +brofist.io##.menuOverlay +larvelfaucet.com##+js(acs, addEventListener, nextFunction) +larvelfaucet.com##+js(nosiif, visibility, 1000) +larvelfaucet.com##+js(aeld, load, block) +larvelfaucet.com##[class^="bmadblock"] +larvelfaucet.com###bottomRightFloatingAd +larvelfaucet.com##ins[style] +larvelfaucet.com##.col-12 > div[style="display: inline-block"] +larvelfaucet.com###ptcAdIframe +larvelfaucet.com##[href^="https://larvelfaucet.com/ads-"] +*$object,redirect-rule=noopframe,domain=larvelfaucet.com +@@||larvelfaucet.com/images/ad_$image,1p +getdogecoins.com##+js(aopr, show_ads) +getdogecoins.com##[class^="bmadblock"] +youranshare.com##+js(acs, $, .init) +forumdz.com##+js(nostif, offsetHeight) +momzr.com##.item:has(> iframe) +*$script,3p,denyallow=fluidplayer.com|google.com|gstatic.com|googleapis.com|recaptcha.net|hcaptcha.com|hwcdn.net,domain=momzr.com +depo-program.blogspot.com##+js(acs, addEventListener, google_ad_client) +gototub.*##+js(nowoif) +quicasting.it##+js(nosiif, visibility, 1000) +blasianluvforever.com##+js(aopr, adBlockDetected) +freewatchserialonline.com##+js(acs, XMLHttpRequest, ActiveXObject) +@@||freewatchserialonline.com^$ghide +freewatchserialonline.com##[data-zone] +*$script,3p,domain=freewatchserialonline.com,denyallow=tvlogy.to|bootstrapcdn.com|disquscdn.com|disqus.com|fbcdn.net|facebook.net|fastly.net|fastlylb.net|jquery.com|hwcdn.net|hcaptcha.com|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|jwpcdn.com +creatur.io##+js(set, canRunAds, true) +@@||robofight.io/*/ads.js$script,1p +robofight.io##div.side-loadout-item:nth-of-type(3) +robofight.io##.home-banner +*$script,redirect-rule=noopjs,domain=booogle.net +tricksplit.io##+js(set, blockAdBlock, trueFunc) +tricksplit.io##p:has-text(Advertisement) +tricksplit.io##div:has(> .adsbygoogle) +tricksplit.io##div[class^="ads_longAd_"] +*$script,redirect-rule=noopjs,domain=dcode.fr +@@||dcode.fr^$ghide +dcode.fr##ins.adsbygoogle +dcode.fr##div[id^="div-gpt-ad"] +@@||dcode.fr^$xhr,1p +*$xhr,redirect-rule=nooptext,domain=ctrlv.* +ctrlv.*##a.download[target="_blank"]:not(a[href*="ctrlv."]):remove() +ctrlv.*##+js(set, uBlockOriginDetected, false) +||protagcdn.com/s/ctrlv.cz/site.js$script,redirect=noopjs,domain=ctrlv.* +ctrlv.*##+js(no-fetch-if, doubleclick) +fikiri.net##+js(nostif, mdp) +@@||librevpn.org^$script,1p +racaty.*##+js(aopw, Fingerprint2) +racaty.*##+js(nowebrtc) +! imgcredit.xyz popunder +imgcredit.xyz##+js(aopr, exoJsPop101) +pagalmovies.*,7starhd.*,jalshamoviez.*,9xupload.*,bdupload.*,desiupload.*,rdxhd1.*##+js(aeld, , /_0x|localStorage\.getItem/) +@@||couponcabin.com^$ghide +malaysiastock.biz##+js(aopr, google_ad_status) +malaysiastock.biz##.RightPanel_Rectangle1 +*$xhr,redirect-rule=nooptext,domain=katholisches.info +biopills.net##+js(aost, encodeURIComponent, inlineScript) +@@||atozmath.com^$ghide +@@||atozmath.com/Scripts/advertisement.js$xhr,1p +atozmath.com##.videoDiscovery +@@||services.bilsyndication.com/adv1/*$script,domain=atozmath.com +@@||biltag.bilsyndication.com^$script,domain=atozmath.com +@@||assets.bilsyndication.com/prebid/default/*$script,domain=atozmath.com +||assets.bilsyndication.com/plugins/*$script,redirect=noopjs,domain=atozmath.com +@@||ssl.google-analytics.com/ga.js$script,domain=atozmath.com +*$image,redirect-rule=2x2.png,domain=atozmath.com +*$script,redirect-rule=noopjs,domain=atozmath.com +@@||assets.bilsyndication.com/plugins/cmptcf2/cmp-v2.0.1.js$script,domain=atozmath.com +@@||services.bilsyndication.com/passback/?t=$script,domain=atozmath.com +@@||services.bilsyndication.com^$xhr,domain=atozmath.com +@@||amazon-adsystem.com/aax2/apstag.js$script,domain=atozmath.com +atozmath.com###vi-smartbanner +atozmath.com##.adsbyvli:style(opacity: 0 !important; pointer-events: none !important;) +atozmath.com##+js(set, googletag._vars_, {}) +atozmath.com##+js(set, googletag._loadStarted_, true) +atozmath.com##+js(set, googletag._loaded_, true) +atozmath.com##+js(set, google_unique_id, 1) +atozmath.com##+js(set, google.javascript, {}) +atozmath.com##+js(set, google.javascript.ads, {}) +atozmath.com##+js(set, google_global_correlator, 1) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js:5,domain=atozmath.com +kangkimin.com##+js(nofab) +kangkimin.com##+js(nano-sib) +! fix anti adb +miniminiplus.pl##+js(json-prune, ads.servers.[].apiAddress) +loadsamusicsarchives.blogspot.com##+js(aopr, AaDetector) +||weatherforecastmap.com^$3p +xxxfiles.com##+js(aopr, AaDetector) +toppng.com##+js(nostif, nextFunction, 250) +battleboats.io##+js(nofab) +battleboats.io##+js(set, adBlocker, false) +||battleboats.io/menu-overlay.html^$frame +! Foil blocker-sniffer code on Condé Nast sites. +architecturaldigest.com,arstechnica.com,bonappetit.com,brides.com,cntraveler.com,epicurious.com,golfdigest.com,newyorker.com,pitchfork.com,self.com,teenvogue.com,vanityfair.com,vogue.com,wmagazine.com##+js(nofab) +newyorker.com##+js(set, paywallGateway.truncateContent, noopFunc) +newyorker.com##.journey-unit +newyorker.com##.paywall-registration-gate +rumahit.id##+js(acs, eval, ignielAdBlock) +@@||hexagame.io^$ghide +1bitspace.com##+js(acs, setTimeout, Constant) +1bit.space,1bitspace.com##+js(aopr, u_cfg) +@@||1bit.space/default/public/assets/*$script,1p +1bit.space##.active.bnsLayers.is-block-touch.is-grid +1bit.space##.bounceIn.animated.bnsLayers.is-block-touch.is-grid +friendproject.net##+js(set, adblock, false) +parispi.net##+js(aeld, DOMContentLoaded, adblock) +wirralglobe.co.uk##+js(aopr, _sp_._networkListenerData) +texte.work##+js(acs, addEventListener, google_ad_client) +cointelegraph.com##[href^="javascript:void(0)"] +cointelegraph.com##div[class*="componentAdbutler_"] +t-rocforum.de##+js(acs, $, prompt) +hyundaitucson.info##+js(remove-node-text, script, /adb|offsetWidth|eval/i) +hyundaitucson.info##+js(noeval-if, /adbl/i) +hyundaitucson.info##.display_ads +*$script,redirect-rule=noopjs,domain=puressh.net +ciudadblogger.com##+js(aeld, load, onload) +@@||tel-emporio10.blogspot.com^$ghide +*$image,redirect-rule=2x2.png,domain=tel-emporio10.blogspot.com +! exambd. net redirection +exambd.net##+js(set-local-storage-item, lastRedirect, true) +exambd.net##+js(rmnt, script, contextmenu) +||adsux.com^ +! quizglobal.com anti-adblock +@@||quizglobal.com^$ghide +quizglobal.com##div[ng-if="vm.showAds"] +quizglobal.com##ins.adsbygoogle +! husseinezzat .com anti adb +@@||husseinezzat.com^$ghide +abukabir.fawrye.com##+js(acs, addEventListener, nextFunction) +@@||indianwebseries.*^$ghide +*$xhr,domain=indianwebseries.*,redirect-rule=nooptext +indianwebseries.*##^script:has-text(detect) +@@||inews.co.uk^$ghide +inews.co.uk##.thanks-3xsWr +dosya.co##+js(nano-stb) +*$xhr,redirect-rule=nooptext,domain=dynast.io +deepfakeporn.net##+js(aopr, open) +deepfakeporn.net##.highlight ~ li > a[target="_blank"] +||deepfakeporn.net/contents/rest/player/deepswap_japanese +brighteon.com##+js(set, adBlockDisabled, true) +brighteon.com##+js(set, __NEXT_DATA__.props.pageProps.adVideo, undefined) +iklandb.com##+js(nano-sib) +iklandb.com##.black-overlay +iklandb.com##.whitecontent +@@||simply-debrid.com^$ghide +simply-debrid.com##.adsbygoogle:remove() +fantacalcio.it##+js(nostif, .offsetHeight, 100) +wgzimmer.ch##+js(aopr, adBlockDetected) +w3schools.com###tryitLeaderboard +!#if !env_mobile +w3schools.com###breadcrumb + .trytopnav:style(top: 36px!important;) +w3schools.com###tryitLeaderboard + .trytopnav:style(top: 0!important;) +w3schools.com###tryitLeaderboard + #breadcrumb ~ #container:style(top: 84px!important;) +w3schools.com###tryitLeaderboard + .trytopnav ~ #dragbar + #container:style(top: 48px!important;) +!#endif +!#if env_mobile +w3schools.com##.trytopnav:style(top: 0!important;) +w3schools.com###tryitLeaderboard ~ #container:style(top: 48px!important;) +!#endif +vviruslove.com##+js(nosiif, visibility, 1000) +linksaya.com##+js(acs, addEventListener, google_ad_client) +more.tv##+js(set, blockedElement, noopFunc) +more.tv##[class^=Banner_] +! onlinetvrecorder .com anti adb +@@||onlinetvrecorder.com^$xhr,1p +gamezop.com##+js(nosiif, debugger) +gamezop.com##[data-native-ad] +! youx .xxx popups ads +youx.xxx##+js(aeld, , _0x) +youx.xxx##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +youx.xxx##+js(set, flashvars.adv_pause_html, '') +youx.xxx##.thumb_banner +||youx.xxx/*.php| +*$script,domain=outerspace.com.br,redirect-rule=noopjs +! awdescargas.com fake button +awdescargas.com##+js(aopw, smrtSB) +deseneledublate.com##+js(acs, Math, XMLHttpRequest) +deseneledublate.com##+js(aopr, AaDetector) +deseneledublate.com##+js(nowoif) +||i.imgur.com^$domain=deseneledublate.com +unity3diy.blogspot.com##+js(nosiif, visibility, 1000) +! sportbar .biz popups +sportbar.*##+js(nowoif) +politico.com##.gallery-carousel-ad +! heavy-r .com popunder / ads +heavy-r.com##[class^="adzone"] +||awdeliverynet.com^$3p +youtubetomp3.*##+js(nowoif) +youtubetomp3.*##a[href="/button.php"] +*$script,3p,denyallow=cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.net|fastlylb.net|fbcdn.net|fluidplayer.com|google.com|googleapis.com|gravatar.com|gstatic.com|hwcdn.net|jsdelivr.net|wp.com,domain=veranime.*|verhentai.* +healthline.com##aside:has(div:matches-css-before(content:/ADVERTISEMENT/)) +healthline.com##div[data-empty^="true"]:matches-css-before(content:/ADVERTISEMENT/) +healthline.com##[class*="css"]:matches-css-before(content:/ADVERTISEMENT/) +healthline.com##[href*="redirect"]:upward(section) +healthline.com##hl-adsense +video1tube.com##+js(set, popit, false) +video1tube.com##+js(acs, btoa) +@@||mercedesclub.cz^$ghide +mercedesclub.cz##ins.adsbygoogle, [class^="side_ad_"] +! reddit adb tracking +@@||redditstatic.com^*/xads.js$script,domain=reddit.com +@@||overtakefans.com^$ghide +brawlhalla.fr##+js(nostif, check) +informaxonline.com##+js(no-xhr-if, googlesyndication) +informaxonline.com##+js(no-xhr-if, /ad) +informaxonline.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) +informaxonline.com###wpsafe-generate, #wpsafe-link:others() +hentaifreak.org##+js(aopr, decodeURI) +hentaifreak.org##+js(aopw, onpopstate) +hentaifreak.org##+js(nostif, popState) +*.gif$image,domain=hentaifreak.org +@@||orangeobserver.com^$ghide +pimylifeup.com##+js(aopr, adthrive.config) +@@||chronicle.com/dg/default/rest/$xhr,1p +chronicle.com##.GoogleDfpAd-container +animepahe.*##+js(aopw, __C) +||uii.io^$3p +tecnotutoshd.net##+js(acs, eval, replace) +moneywar2.blogspot.com##+js(acs, addEventListener, google_ad_client) +*$script,redirect-rule=noop.js,domain=flowsoft7.com +checkfiletype.com##+js(nosiif, visibility, 1000) +@@||scrapbox.io^$xhr,1p +santoinferninho.com##+js(nosiif, visibility, 1000) +hypebeast.com##+js(nostif, ad-block-popup) +izismile.com###banner_code_rotator +izismile.com##.js-banner-top +dafideff.com##+js(acs, addEventListener, google_ad_client) +! world4ufree. plus antiadblock +world4ufree.*##+js(aeld, , _0x) +world4ufree.*##+js(acs, eval, replace) +krankheiten-simulieren.de##+js(nostif, exitTimer) +! venusarchives .com popups + anti adb +venusarchives.com##+js(aeld, , bi()) +venusarchives.com##+js(aopr, b2a) +errotica-archives.com##+js(ra, href, [href*="ccbill"]) +*$script,3p,denyallow=aechannel.com|ahacdn.me|rncdn7.com|disqus.com|jsdelivr.net|jwpcdn.com|fastly.net|fastlylb.net|jquery.com|hwcdn.net|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com,domain=gayporno.fm +catholic.com##+js(nostif, innerHTML.replace) +trentotoday.it##+js(nostif, bADBlock) +@@||prinxy.app^$ghide +prinxy.app##.native-ads-wrapper +prinxy.app##.sticky-banner +angeloyeo.github.io##+js(nosiif, visibility, 1000) +annabelle.ch##+js(aopr, _sp_._networkListenerData) +csgo-ranks.com##+js(nosiif, visibility, 1000) +androidgreek.com##+js(aopr, adBlockDetected) +*$script,domain=ad-doge.com,redirect-rule=noopjs +ad-doge.com##+js(nostif, _0x) +fshost.me##+js(acs, onload, ajax) +fshost.me##+js(set, abu, falseFunc) +tutoganga.blogspot.com##+js(acs, addEventListener, google_ad_client) +royalkom.com##+js(nosiif, visibility, 1000) +super-ethanol.com##+js(nosiif, visibility, 1000) +thingiverse.com##+js(nano-sib) +thingiverse.com##[class*="ThingPage__topAd"] +thingiverse.com##[class^="ItemCardContainer__itemCard"]:has(> [title="Advertisement"]) +responsivevoice.org##.cp-modal-popup-container:remove() +samapkstore.com##+js(nosiif, visibility, 1000) +samapkstore.com##+js(nano-sib, countDown) +th-cam.com##+js(aopw, HTMLElement.prototype.insertAdjacentHTML) +th-cam.com##pp +jacksorrell.tv##+js(acs, jQuery, adblocker) +9xmovies.*##+js(nowoif) +cgtips.org##+js(rmnt, script, /adblock|var Data.*];/) +link.cgtips.org##+js(acs, addEventListener, google_ad_client) +link.cgtips.org##+js(set, countdown, 0) +cgtips.org##div[class*="better-ads-listitemad"]:remove() +saradahentai.com,hentaiarena.com##+js(aopr, document.dispatchEvent) +eddiekidiw.com##+js(acs, $, _ads) +blkom.com##+js(set, blockAdBlock._options.baitClass, null) +! gratispaste.com popup +gratispaste.com##.content > center +||za.gl^$script,3p +*$script,3p,denyallow=googleapis.com|jquery.com,domain=gratispaste.com +clipartmax.com##+js(nano-stb) +imagenesderopaparaperros.com##+js(acs, String.fromCharCode, 'shift') +imagenesderopaparaperros.com##+js(aopr, app_vars.force_disable_adblock) +imagenesderopaparaperros.com##+js(set, blurred, false) +freewebcart.com##+js(aost, Math, showModal) +freewebcart.com##+js(rmnt, script, var Data) +||wootly.ch^$csp=sandbox allow-forms allow-same-origin allow-scripts allow-modals allow-orientation-lock allow-pointer-lock allow-presentation allow-top-navigation +javhdporn.net###player_3x2_container_inner +javhdporn.net##+js(set, clientSide.adbDetect, noopFunc) +javhdporn.net##iframe[title="offer"] +techinferno.com##+js(nostif, eabpDialog) +xup.in##+js(nostif, clientHeight) +xup.in##div[style="width:728px; overflow:hidden; height:90px;"] +xup.in##div[style="width:300px;height:250px;position:relative;overflow:hidden;"] +xup.in##fieldset#option:nth-of-type(1) > [href^="https://www.xup.in/blog/"] +||sexei.net^$3p +adeth.cc##+js(nosiif, visibility, 1000) +! comicbook.com header-banner +comicbook.com##body > header:style(top:0 !important) +comicbook.com##body.pcm-public:style(margin-top: 84px !important;) +nulleb.com##+js(rmnt, script, deblocker) +*$xhr,redirect-rule=nooptext,domain=nulleb.com +*$script,3p,redirect-rule=noopjs,domain=staples.ca +! ohentai.org popup ads +ohentai.org##[class^="detail"][class*="iframecontainer"] +ohentai.org##[class^="listleaderboardcontainer"] +ohentai.org##.videobrick:has(> .videoadintro) +ohentai.org##+js(nowoif) +hentaicloud.com##+js(aeld, click, open) +hentaicloud.com##+js(set, decodeURI, noopFunc) +hentaicloud.com##+js(aopr, TotemToolsObject) +hentaicloud.com##+js(aopr, AaDetector) +hentaicloud.com##.vertical-ads-content +hentaicloud.com##.ad:upward(.horizontal-ads-content) +hentaicloud.com##section.videos-content:has(.thumbnail > a[href^="https://www.nutaku.net/signup/landing/"]) +! javdoe.to/javtc.fun popup ads +player.javtc.*###preroll +javfree.sh,javtc.*##[style^="height: 250px;overflow"] +*$script,3p,denyallow=cdndoe.xyz|cloudflare.com|doecdn.me|googleapis.com,domain=javfree.* +*$script,3p,domain=javdoe.to|javtc.* +javbangers.com##+js(acs, document.addEventListener, initBCPopunder) +javbangers.com##+js(acs, readCookieDelit) +javbangers.com##+js(acs, onload, puHref) +javbangers.com##+js(set, flashvars.adv_pre_vast, '') +javbangers.com##+js(set, flashvars.adv_postpause_vast, '') +javbangers.com##div.opt +*$script,3p,denyallow=fastly.net|google.com|googleapis.com|gstatic.com|h-cdn.com|javcdn.li,domain=javbangers.com +netfapx.com##[id^="ads-position"] +bikemania.org##[id^="blocker-modal-"] +apksvip.com##+js(aopr, app_vars.force_disable_adblock) +apksvip.com##+js(set, blurred, false) +linuxsecurity.com##+js(aeld, load, nextFunction) +linuxsecurity.com##.ad_prev_main +loader.to##+js(aopr, open) +lookcam.*##+js(set, canRunAds, true) +lookcam.*##div.prefix-adlabel +*$script,3p,denyallow=cloudflare.com|cloudflare.net|fastly.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|jsdelivr.net|recaptcha.net,domain=manga4life.com +*$frame,script,3p,denyallow=cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|jsdelivr.net|fastly.net|recaptcha.net,domain=mangasee123.com +realityblurb.com##+js(aopr, HTMLIFrameElement) +drphil.com##+js(set, canRunAds, true) +drphil.com##.adBanner:style(height:1px !important) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=drphil.com +iade.com##+js(aopr, adBlockDetected) +*$script,3p,denyallow=bootstrapcdn.com|disqus.com|jsdelivr.net|jwpcdn.com|fastly.net|fastlylb.net|jquery.com|hwcdn.net|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|facebook.net,domain=pendujatt.net +4allprograms.me##+js(nostif, ai_adb) +||btcclicks.com^$3p +swift4claim.com##+js(nosiif, visibility, 1000) +swift4claim.com##.overlay2 +swift4claim.com##.overlay +swift4claim.com##ins[class][style="display:inline-block;width:728px;height:90px;"] +swift4claim.com##ins[class][style="display:inline-block;width:300px;height:250px;"] +swift4claim.com##div[style="width:300px; height: 250px;"] +swift4claim.com##.overflow +best-shopme.com##+js(nosiif, visibility, 1000) +best-shopme.com##+js(aopr, noAdBlock) +newsbomb.gr##.banner-area +ibeconomist.com##+js(nostif, adsense) +getitfree.cn##+js(acs, document.getElementById, .style) +! m.webmusic.pro popup ads +ytjar.info##+js(nowoif, _blank) +/^https:\/\/(?:cdn77\.)?aj[0-9a-z]{2}\d{2}\.online\/[0-9a-z]{8}\.js$/$script,3p,to=online +/^https:\/\/(?:cdn77\.)?aj[0-9a-z]{2}\d{2}\.bid\/[0-9a-z]{8}\.js$/$script,3p,to=bid +/^https:\/\/(?:cdn77\.)?aj[0-9a-z]{2}\d{2}\.online\/[-_0-9A-Za-z]{70,}$/$frame,3p,to=online +/^https:\/\/(?:cdn77\.)?aj\d{4}\.bid\/[-_0-9A-Za-z]{80,}\?/$xhr,3p,to=bid +smallpocketlibrary.com##+js(aopr, adBlockDetected) +! iinbinlist.com/osqa.net/vanhawks.com anti-adb +*$xhr,redirect-rule=nooptext,domain=iinbinlist.com|osqa.net|vanhawks.com +@@||pixel.adsafeprotected.com^$xhr,domain=teleboy.ch +texture-packs.com##+js(no-xhr-if, adsbygoogle) +bookriot.com##+js(nostif, /Adblock|_ad_/) +bookriot.com###top_fold[style="display:flex !important;"]:style(min-height: 0px !important; transition: all 0s ease 0s !important;) +bookriot.com##.inside-content-promo-container +@@||databaseitalia.it^$ghide +||cdn.rawgit.com^*/wdbloogablock.js$script +@@||ufreegames.com^$ghide +||imasdk.googleapis.com/js/sdkloader/ima3.js$domain=ufreegames.com,redirect=google-ima.js +ufreegames.com##.spo +ufreegames.com##+js(nano-sib) +cpomagazine.com##+js(aopr, advads_passive_groups) +pholder.com##.AdSenseAboveFoldResponsive +pholder.com##section:has(.OUTBRAIN) +pholder.com##div[style$="margin-bottom:10px"]:has(.OUTBRAIN) +pholder.com##div[class]:has(div[class] > iframe[src^="https://chaturbate.com/in/"]) +pholder.com##section:has(div[href^="https://chaturbate.com/in/"]) +pholder.com##section.ShopWidget:has-text(Sponsored) +tw-hkt.blogspot.com##+js(nosiif, visibility, 1000) +*$script,redirect-rule=noopjs,domain=speedtesting.herokuapp.com|excelviewer.herokuapp.com|exifviewer.herokuapp.com|pdfrecover.herokuapp.com +hugo3c.tw##+js(nosiif, visibility, 1000) +4cash.me##+js(aopr, app_vars.force_disable_adblock) +4cash.me##+js(set, blurred, false) +4cash.me##.banner +*$frame,denyallow=google.com|recaptcha.net,domain=4cash.me +*$script,3p,denyallow=google.com|googleapis.com|gstatic.com|recaptcha.net,domain=4cash.me +cookpad.com###modals +cookpad.com##body:style(overflow:auto !important) +recordonline.com##+js(set, _sp_.msg.displayMessage, noopFunc) +! doramasyt.com ads +doramasyt.com##+js(aopr, GLX_GLOBAL_UUID_RESULT) +*$script,3p,denyallow=cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|gstatic.com|jwpcdn.com|jwplatform.com,domain=doramasyt.com +xxxdan.com##+js(aopr, document.head.appendChild) +xxxdan.com##*:matches-css-after(content:/Advertisement/i) +linuxhint.com,thekitchenmagpie.com##+js(acs, Math, adthrive) +bonobono.com##.custom-html-widget +makefreecallsonline.com##+js(rmnt, script, onerror) +businesstimes.com.sg##.overlayWhite +businesstimes.com.sg##html:style(overflow-y: auto !important;) +camclips.tv##+js(acs, onload) +camclips.tv##+js(aopr, console.clear) +camclips.tv##+js(aeld, , pop) +camclips.tv##+js(aeld, , Pop) +camclips.tv##+js(set, flashvars.adv_pause_html, '') +camclips.tv##+js(set, flashvars.popunder_url, undefined) +camclips.tv##[href^="https://go.strpjmp.com"] +camclips.tv##[src^="https://camclips.tv/player/html.php?aid"] +camclips.tv##div.cbchat +camclips.tv##.box.rltd +camclips.tv##.table +shortzzy.*##+js(aopr, app_vars.force_disable_adblock) +shortzzy.*##+js(nowoif) +shortzzy.*##+js(nostif, ai_adb) +shortzzy.*##+js(nosiif, visibility, 1000) +shortzzy.*##+js(set, blurred, false) +shortzzy.*##.banner +shortzzy.*##.box-main > center > a[href][target="_blank"] +shortzzy.*##.navbar-right.navbar-nav.nav +shortzzy.*##.btnlink +*$script,3p,denyallow=cloudflare.com|codepen.io|consensu.org|google.com|googleapis.com|gstatic.com|hcaptcha.com|recaptcha.net,domain=shortzzy.* +rojadirecta.*##+js(nowoif) +sportsonline.si##+js(acs, JSON.parse, atob) +! jocooks .com nasty ads +jocooks.com##+js(aopw, HTMLElement.prototype.insertAdjacentHTML) +@@||cartoonbrew.com^$ghide +cartoonbrew.com##.ad-inner +purposegames.com##+js(nostif, googletag) +*$script,redirect-rule=noopjs,domain=purposegames.com +purposegames.com##.adlabel +##[href^="//cadsecs.com/"] +##[href^="https://wap4dollar.com/ad/nonadult/serve.php"] +*$script,3p,denyallow=fbcdn.net|facebook.net|fastly.net|fastlylb.net|jquery.com|hwcdn.net|hcaptcha.com|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com|wp.com|chatango.com,domain=fullmatchtv.com +fullmatchtv.com##.belowpost +highporn.net##+js(acs, addEventListener, -0x) +highporn.net##+js(aopr, jsUnda) +*$script,3p,denyallow=chatango.com|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|jquery.com|jsdelivr.net|jwpcdn.com|recaptcha.net|wp.com,domain=highporn.net +highporn.net##.in-video-1 +highporn.net##.fel-playclose +||highporn.net/js/aapp.js +! megadede. mobi, movidy. net popups, ads +megadede.*##.fake_player, #tab-ad +megadede.*##.les-title:has-text(HD) +megadede.*##[href="#tab-ad"] +movidy.*##+js(nowoif) +thepoorcoder.com##+js(aopr, adblockDetector) +! brave issue google funding +latimes.com##+js(nostif, f.parentNode.removeChild(f), 100) +*$script,3p,denyallow=fastly.net|fastlylb.net|jquery.com|hwcdn.net|hcaptcha.com|recaptcha.net|cloudflare.com|cloudflare.net|google.com|googleapis.com|gstatic.com,domain=13x4.com +camsclips.*##+js(nostif, innerText, 2000) +camsclips.*##.place +claimrbx.gg##+js(nostif, swal, 500) +perelki.net##+js(nostif, keepChecking, 1000) +gomaainfo.com##+js(acs, addEventListener, google_ad_client) +||exe.io^$3p +robot-forum.com##+js(acs, $, offsetHeight) +@@||homedecoratione.com^$ghide +homedecoratione.com##ins.adsbygoogle +androidtunado.com.br##+js(nosiif, visibility, 1000) +wristreview.com##+js(aopw, ai_front) +standardmedia.co.ke##+js(aopr, canRunAds) +*$script,redirect-rule=noopjs,domain=downloadrepack.com +downloadrepack.com###footer-widgets > .container-inner > .group.hu-pad +@@||thedelimagazine.com^$ghide +tecnobillo.com##+js(nostif, check) +tecnobillo.com##.tecnobillo-ad-wrapper-wrapper +! xtits.com/xxx pre-roll ads +xtits.*##+js(set, flashvars.adv_start_html, '') +xtits.*##+js(set, flashvars.adv_pause_html, '') +xtits.*##.adv-title +xtits.*##.table +xtits.*##.spot-holder +*$frame,script,3p,denyallow=ahacdn.me|bimbolive.com|cloudflare.net,domain=xtits.* +||xtits.*^$csp=script-src * 'unsafe-inline' +acapellas.eu##+js(nostif, getComputedStyle) +acapellas.eu##+js(rmnt, script, runCheck) +acapellas.eu##+js(acs, addEventListener, google_ad_client) +! descarga.xyz popup ads +descarga.xyz##+js(aopr, AaDetector) +descarga.xyz##+js(aopw, atOptions) +descarga.xyz##+js(aopw, smrtSB) +descarga.xyz##.code-block-1.code-block +*$script,3p,domain=descarga.xyz,denyallow=arc.io +file-converter-online.com##.lead-responsive +file-converter-online.com##.clearfix.entry > small +file-converter-online.com##div[style^="margin-top:10px;min-height:250px"] +urbanmilwaukee.com##+js(set, canRunAds, true) +urbanmilwaukee.com###fancybox-container-1 +urbanmilwaukee.com##body:style(overflow:auto !important) +emuenzen.de##+js(rmnt, script, replace) +emuenzen.de##+js(nostif, prompt, 1000) +emuenzen.de##a[href*="sjv.io"] +epidemia-koronawirus.pl###sgpb-popup-dialog-main-div-wrapper +epidemia-koronawirus.pl##.sgpb-popup-overlay +*$script,redirect-rule=noopjs,domain=seotechman.com +! nsfw popups gayvidsclub .com +gayvidsclub.com##+js(nowoif) +*$script,redirect-rule=noopjs,domain=markiza.sk +infomaniakos.*##+js(set, btoa, null) +shorttey.*##+js(aopr, app_vars.force_disable_adblock) +shorttey.*##+js(aopr, open) +shorttey.*##+js(aopw, adcashMacros) +shorttey.*##+js(aost, Math.random, t.pt) +shorttey.*##+js(json-prune, clickAnywhere urls) +shorttey.*##+js(set, blurred, false) +shorttey.*##+js(set, canRunAds, true) +shorttey.*##.short +shorttey.*###link-view > center > [href] +*$script,3p,denyallow=cloudflare.com|cloudflare.net|google.com|gstatic.com|jsdelivr.net|hcaptcha.com|recaptcha.net,domain=shorttey.* +||shorttey.*/sw.js$script,1p +*$script,3p,denyallow=cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hcaptcha.com|hwcdn.net|instagram.com|jquery.com|jsdelivr.net|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wp.com|x.com,domain=hdmovieplus.* +*$script,redirect-rule=noopjs,domain=linuxgizmos.com +dota2freaks.com##+js(nosiif, visibility, 1000) +how2pc.com##+js(nosiif, visibility, 1000) +livingincebuforums.com##+js(nostif, .offsetHeight) +livingincebuforums.com##[id^="nbAdWidget"] +livingincebuforums.com##[data-blockid*="AdsWidget"] +tio.ch##+js(aeld, error) +tio.ch##+js(ra, href, a[href*="/ads.php"][target="_blank"]) +@@||tio.ch^$ghide +tio.ch##.ad +javfull.net##+js(nosiif, _0x) +javfull.net###wrapfabtest:style(height:1px !important;width:1px !important) +! nsfw xxgasm .com popups ads +xxgasm.com##+js(aopr, decodeURI) +*$script,3p,denyallow=cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|google.com|googleapis.com|gstatic.com|hwcdn.net|hcaptcha.com|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wankgod.com|wp.com|x.com,domain=xxgasm.com +! nsfw kfapfakes .com popups ads +kfapfakes.com##+js(aopr, decodeURI) +! nsfw xsober .com ads popups +xsober.com##+js(aopr, decodeURI) +*$script,3p,denyallow=bootstrapcdn.com|cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|google.com|googleapis.com|gstatic.com|hwcdn.net|hcaptcha.com|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wp.com|x.com,domain=xsober.com +! nsfw sexsaoy .com ads popups +sexsaoy.com##+js(aopr, decodeURI) +*$script,3p,denyallow=cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|google.com|googleapis.com|gstatic.com|hwcdn.net|hcaptcha.com|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wp.com|x.com,domain=sexsaoy.com +##[href^="https://go.rdrjmp.com/"] +! img4fap. club popups ads +img4fap.*##+js(aopr, decodeURI) +*$script,3p,denyallow=cdn77.org|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|fluidplayer.com|google.com|googleapis.com|gstatic.com|hwcdn.net|hcaptcha.com|instagram.com|jquery.com|jsdelivr.net|jwpcdn.com|jwpsrv.com|plyr.io|twimg.com|twitter.com|recaptcha.net|wp.com|x.com,domain=img4fap.* +/tghr.js$script +##[href^="https://www.safestcontentgate.com/"] +filmyzilla.*##[href^="https://ak.hetadinh.com/"] +weviral.org##+js(nosiif, visibility, 1000) +paperzonevn.com##+js(nostif, adb) +popno-tour.net##+js(nostif, innerText, 2000) +@@||asianbookie.com^$script,1p +forums.asianbookie.com##.topics > table > tbody > tr > td > table > tbody > tr > .topicrowdate +||asianbookie.com/displaytable.cfm?tablename=cslodds$frame +asianbookie.com##a[href^="/cgi-bin/to.cgi"] +! elitetorrent.com popup +elitetorrent.*##+js(aopw, adcashMacros) +*$script,3p,denyallow=cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|fastlylb.net|google.com|googleapis.com|gstatic.com|fontawesome.com|jsdelivr.net,domain=elitetorrent.* +siz.tv##+js(set, koddostu_com_adblock_yok, null) +! e-wok.tv anti-adb +@@||e-wok.tv/js/new/advertisment.js$script,1p +! several sites using the same popunder script +ashemaletv.com,beurettekeh.com,celibook.com,gourmandix.com,sexetag.com##+js(aopr, decodeURI) +ashemaletv.com###playerOverlay +||str.sexetag.com/voir.php$frame,1p +alltechnerd.com##+js(nosiif, visibility, 1000) +alltechnerd.com##+js(nostif, nitroAds) +alltechnerd.com##.ai_widget +alltechnerd.com##.code-block:has-text(ADV) +iobit.com##+js(aopr, LieDetector) +malaysianwireless.com##+js(nostif, class.scroll, 1000) +||malaysianwireless.com/wp-content/banners/*$image,1p +! iammagnus.com/dailyvideoreports.net anti-adb +dailyvideoreports.net##+js(aeld, load, /showModal|isBlanketFound/) +iammagnus.com,dailyvideoreports.net##+js(set, adsbygoogle.loaded, true) +*$script,redirect-rule=noopjs,domain=iammagnus.com|dailyvideoreports.net +*$script,redirect-rule=noopjs,domain=youneed.win +! estrenosgo.site popup +estrenosflux.*##+js(acs, JSON.parse, atob) +estrenosflix.*,estrenosflux.*,estrenosgo.*##+js(aopw, adcashMacros) +||adservice.google.com/adsid/integrator.js$script,redirect=noopjs,domain=ultimateclassicrock.com +comprovendolibri.it##+js(nostif, google_jobrunner) +universegunz.net##+js(nostif, adb) +citynews.ca##body:style(padding-top:0px !important) +forum.lolesporte.com##+js(aopr, onload) +shoppinglys.blogspot.com##+js(nosiif, visibility, 1000) +shoppinglys.blogspot.com##iframe[src^="data:"] +erinsakura.com##+js(nostif, disableDeveloperTools) +erinsakura.com##.herald-fa-grid +@@||fzmovies.*^$ghide +@@||fzm.*^$ghide +!#if env_firefox +fzm.*,fzmovies.*,fztvseries.live,mobiletvshows.site,tvseries.in##[onclick*="window.open"]:remove-attr(onclick) +!#else +fzm.*,fzmovies.*,fztvseries.live,mobiletvshows.site,tvseries.in##+js(ra, onclick, [onclick*="window.open"], stay) +!#endif +fzm.*,fzmovies.*##+js(nosiif, visibility, 1000) +9jarock.org,fzmovies.info,fztvseries.ng,netnaijas.com##+js(set, openWindow, noopFunc) +fztvseries.ng##div[class="code-block code-block-6"][style="margin: 8px 0; clear: both;"] +netnaijas.com,sabishares.com##div[class="code-block code-block-4"][style="margin: 8px 0; clear: both;"] +sabishares.com##p > a[href*="/4/"][target="_blank"] +||ligheechoagool.com^ +*$image,redirect-rule=1x1.gif,domain=freesslvpn.us|robotvpn.com +fritidsmarkedet.dk,maskinbladet.dk##+js(nostif, Check) +*$image,redirect-rule=1x1.gif,domain=maskinbladet.dk|fritidsmarkedet.dk +fritidsmarkedet.dk,maskinbladet.dk##.skybanner, .megaboard-inner +bdlink.pw##+js(nano-sib) +torresette.news##+js(acs, document.addEventListener, adsBlocked) +||torresette.news/img/banner/$image,1p +torresette.news##.content-banner-right +torresette.news###skinlink +downloadhub.*,hubstream.*##+js(nowoif) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=hubstream.* +ultimasnoticias.com.ve##pp +adultasianporn.com##+js(aeld, getexoloader) +adultasianporn.com##+js(cookie-remover, /^/) +adultasianporn.com##[class^="abra"] +adultasianporn.com##[href^="http://adultasianporn.com/out.php"] +adultasianporn.com##.banner +adultasianporn.com##[src*=".php"] +||adultasianporn.com^$frame +! gamesrepacks.com anti-adb +gamesrepacks.com##+js(noeval-if, show) +@@||firenzetoday.it^$ghide +! SSAI Video ads on ABC Owned TV station sites https://github.com/uBlockOrigin/uBlock-issues/issues/760#issuecomment-715702997 +||content.uplynk.com/api/*&ad=$xhr,removeparam=/^ad/,domain=abc7ny.com|abc7.com|abc7chicago.com|6abc.com|abc7news.com|abc13.com|abc11.com|abc30.com|abcnews.go.com +6abc.com,abc11.com,abc13.com,abc30.com,abc7.com,abc7chicago.com,abc7news.com,abc7ny.com,abcotvs.net##.nav.sticky:style(top: 0px !important;) +! SSAI Video ads on Discovery TV sites https://github.com/uBlockOrigin/uBlock-issues/issues/760#issuecomment-715926907 +||api.discovery.com/v1/streaming/video/*&adNetworkId=$xhr,removeparam=/^ad/,domain=ahctv.com|animalplanet.com|cookingchanneltv.com|destinationamerica.com|discovery.com|discoverylife.com|diynetwork.com|foodnetwork.com|hgtv.com|investigationdiscovery.com|motortrend.com|sciencechannel.com|tlc.com|travelchannel.com +walkthrough-indo.blogspot.com##+js(acs, addEventListener, google_ad_client) +! polska-ie.com anti-adb +polska-ie.com##+js(aeld, load, isBlanketFound) +*$script,redirect-rule=noopjs,domain=polska-ie.com +videohelp.com##div[id] :has(> a[href]:has-text(/^Try (?:D.?V.?D.?F.?a.?b|StreamFab)/) + a[href]) +! hentaitube ads +hentais.tube,hentaitube.online##+js(aopr, checkCookieClick) +hentais.tube,hentaitube.online##[href^="https://tm-offers.gamingadult.com/"] +fairyanime.com##+js(nano-sib) +fairyanime.com##.overlay +fairyanime.com###kosana.bounce.animated.kosana.concise +*$media,redirect=noopmp3-0.1s,domain=fairyanime.com +pg-wuming.com##+js(acs, $, .test) +proxybit.*##+js(acs, adcashMacros) +proxybit.*##+js(nowoif) +proxybit.*##+js(aopr, mm) +proxybit.*##[id*="banner"] +hdss.*##.pplayer +hdss.*##.btnsa +hdss.*##.homi +hdss.*##.widget_media_image +@@||top.gg/js/$script,1p +top.gg###vote-root:style(display:block !important) +top.gg###video-root +top.gg##+js(nano-stb, readyToVote, 12000) +top.gg##article[data-testid="promoted-product"] +top.gg##.chakra-popover__content .chakra-link[href*="/click?targetUrl="] +top.gg###rewarded-video +top.gg###parent_nn_player +top.gg##.chakra-stack[data-testid="p-p"] +top.gg##div[class^="css-"]:not(.chakra-stack):has(> #parent_nn_player) +top.gg##.css-adfhee:upward(2) +top.gg##aside > div.w-full > .items-center > .w-full.items-center:has-text(Ad) +@@||arrowos.net/js/*$script,1p +arrowos.net##body:style(visibility:visible !important) +@@||arrowos.net^$ghide +arrowos.net##.card-content:has(> .adsbygoogle) +arrowos.net##ins.adsbygoogle +arrowos.net###babasbmsgx +3hiidude.*##+js(aopr, String.fromCharCode) +vidmoly.*###adsblock +lite-link.*##+js(aopr, app_vars.force_disable_adblock) +lite-link.*##+js(ra, target|href, a[href^="//"]) +lite-link.*##+js(set, blurred, false) +lite-link.*##.banner +*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=lite-link.* +openloadmov.*##+js(nowoif) +aegeanews.gr,batterypoweronline.com,centrocommercialevulcano.com,cieonline.co.uk,commsbusiness.co.uk,dailygrindonline.net,delo.bg,dynastyseries.com,fabmx1.com,fat-bike.com,fmj.co.uk,localemagazine.com,metaforespress.gr,myvalley.it,niestatystyczny.pl,primapaginamarsala.it,ringelnatz.net,schoolsweek.co.uk,sikkenscolore.it,sportbet.gr,stagemilk.com,tautasdziesmas.lv,thetoneking.com,toplickevesti.com,zeroradio.co.uk##+js(aopr, wpsite_clickable_data) +*/wp-content/plugins/wpsite-background-takeover*/js/wpsite_clickable.js$script +8tm.net##+js(nosiif, visibility, 1000) +8tm.net##+js(acs, addEventListener, google_ad_client) +@@||8tm.net/stylesheets/$css,1p +||ads.exoclick.com/ads.js$script,redirect=noop.js +/teo4.$script +vipr.im##+js(acs, document.addEventListener, initBCPopunder) +vipr.im###rang2 +afasiaarchzine.com##+js(nosiif, visibility, 1000) +afasiaarchzine.com##.afasia_sidebar_ad_group +hidefninja.com##+js(aopr, adBlockDetected) +hidefninja.com##+js(acs, document.addEventListener, adsBlocked) +exbulletin.com##+js(aost, String.prototype.charCodeAt, ai_) +15min.lt##+js(nostif, insertBefore) +br0wsers.com##+js(acs, document.getElementsByClassName, offsetParent) +br0wsers.com###show_ag:style(display:block !important) +! vlive.tv pre-roll ads +vlive.tv##+js(json-prune, meta.advertise) +*$xhr,redirect-rule=nooptext,domain=lewdninja.com|new.lewd.ninja +lewdninja.com,new.lewd.ninja##a.navbar-item.is-hidden-desktop-only +@@*$document,csp=worker-src 'none',domain=new.lewd.ninja +*$popunder,domain=new.lewd.ninja +lewd.ninja##+js(aeld, click, shouldShow) +@@||recaptcha.net^$frame,csp=worker-src 'none',domain=lewd.ninja +*$script,3p,denyallow=google.com|gstatic.com,domain=lewdninja.com|new.lewd.ninja +new.lewd.ninja##+js(nano-sib, next, 1000, 0.001) +hentaienglish.com,hentaiporno.xxx##+js(set, vidorev_jav_plugin_video_ads_object.vid_ads_m_video_ads, '') +progameguides.com##[id^="sideAd-"] +progameguides.com##[id^="content_dynamicAd-"] +discoveryplus.*##.bmpui-seekbar-markers +discoveryplus.*##.bmpui-ui-ads-status +discoveryplus.*##+js(json-prune, data.attributes.config.freewheel data.attributes.config.featureFlags.dPlayer) +@@||identity.mparticle.com/v1/login$xhr,domain=discoveryplus.* +*$media,redirect=noopmp3-0.1s,domain=discoveryplus.* +||doubleclick.net^$xhr,domain=discoveryplus.*,important +!#if !env_firefox +||h264.io/a/x-goog-token=Expires$xhr,redirect=nooptext,domain=discoveryplus.*,important +!#endif +discoveryplus.*,go.discovery.com,watch.foodnetwork.com##+js(json-prune, data.attributes.ssaiInfo.forecastTimeline data.attributes.ssaiInfo.vendorAttributes.nonLinearAds data.attributes.ssaiInfo.vendorAttributes.videoView data.attributes.ssaiInfo.vendorAttributes.breaks.[].ads.[].adMetadata data.attributes.ssaiInfo.vendorAttributes.breaks.[].ads.[].adParameters data.attributes.ssaiInfo.vendorAttributes.breaks.[].timeOffset) +discoveryplus.*,go.discovery.com,investigationdiscovery.com,go.tlc.com,sciencechannel.com,watch.foodnetwork.com##+js(xml-prune, xpath(//*[name()="MPD"][.//*[name()="BaseURL" and contains(text()\,'dash_clear_fmp4') and contains(text()\,'/a/')]]/@mediaPresentationDuration | //*[name()="Period"][./*[name()="BaseURL" and contains(text()\,'dash_clear_fmp4') and contains(text()\,'/a/')]]), , .mpd) +play.discoveryplus.com##+js(json-prune, ssaiInfo) +go.tlc.com,investigationdiscovery.com##+js(json-prune-xhr-response, data.attributes.ssaiInfo, , propsToMatch, /videoPlaybackInfo) +venge.io##+js(nofab) +venge.io##+js(set, adsProvider.init, noopFunc) +venge.io##+js(set, SDKLoaded, true) +@@||akwams.*^$ghide +akwams.*##ins.adsbygoogle +akwams.*##.ads +! tvmd .info ads +##.fints-block__row +@@||cdn.trafficdok.com/libs/e.js$script,domain=tvmd.info +tvmd.info###crosscol-overflow +mytoolz.net##+js(aopr, onload) +! pngtosvg.com anti-adb +||googlesyndication.com^$script,redirect=googlesyndication_adsbygoogle.js,domain=pngtosvg.com +moozpussy.com,zoompussy.com##+js(aopr, loadTool) +moozpussy.com,zoompussy.com##[href^="/go/desire"] +sitarchive.com##+js(nostif, css_class.show) +||googlesyndication.com^$script,redirect=googlesyndication_adsbygoogle.js,domain=sitarchive.com +sitarchive.com##[id^="aswift_"] +share1223.com##+js(aopr, adBlockDetected) +*$script,redirect-rule=noopjs,domain=telek.top +baddiehub.com##+js(nostif, css_class.scroll) +! chochox.com popup +chochox.com##+js(acs, String.fromCharCode, atob) +! miohentai.com popup ads +miohentai.com##+js(aopr, mnpwclone) +miohentai.com###idtop +miohentai.com##.in.paused-ad-container +*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com,domain=miohentai.com +! familyporn.tv popup +familyporn.tv##+js(set, console.clear, noopFunc) +familyporn.tv##+js(aopr, AaDetector) +familyporn.tv##.media_spot +familyporn.tv##.textlink +familyporn.tv###player_adv +familyporn.tv##.adv +familyporn.tv##.col-last:has(> :is(.player-adverts, .place)) +familyporn.tv##.sponsor +! tabooporn.tv popup +tabooporn.tv##.table +tabooporn.tv##.textlink +tabooporn.tv##+js(aopr, mm) +! kaplog.com popup +kaplog.com##+js(nowoif) +*$script,3p,denyallow=google.com|gstatic.com,domain=kaplog.com +! emulatorgames.net boost countdown timer +emulatorgames.net##+js(nano-sib, , , 0.3) +emulatorgames.net##+js(nano-stb, , 7000, 0) +emulatorgames.net##[class*="-label"] +! nightlifeporn.com popup +nightlifeporn.com##.wps-player__happy-inside--pause.wps-player__happy-inside +getpczone.com##+js(nosiif, visibility, 1000) +getpczone.com###breadcrumb-ads-links +! kissmanga. nl popups +kissmanga.*###myModal +sssam.com##+js(set, ads, true) +*$script,redirect-rule=noopjs,domain=codimth.com +! fiyaplatform.com anti-adb +*$script,redirect-rule=noopjs,domain=fiyaplatform.com +! downloadtwittervideo.com popup +downloadtwittervideo.com##+js(nowoif) +*$script,redirect-rule=noopjs,domain=taufiqhdyt.com +taufiqhdyt.com###big-ads +beverfood.com##+js(nosiif, .offsetHeight) +beverfood.com###backy +beverfood.com##.switchabig +||beverfood.com/immagini/*1920$image +! camthots.tv pre-roll ads +camfox.com##+js(set, flashvars.adv_pre_vast, '') +camfox.com##.table +javtrailers.com##+js(ra, href, [href*="nihonjav"], stay) +javtrailers.com###cta +javtrailers.com###popunderLink +! Foxella Blockadblock +@@||foxella.com^$ghide +foxella.com##ins.adsbygoogle +! wetpussy.sexy popunder, ads +wetpussy.sexy##.mansonry-item +||wetpussy.sexy/js/index-nb.js +! jaysndees.com anti-adb +jaysndees.com##+js(nosiif, visibility, 1000) +jaysndees.com##+js(nofab) +jaysndees.com##div[class][style^="width: 728px; height: 90px;"] +jaysndees.com###topshow +jaysndees.com##center:nth-of-type(3) +jaysndees.com###cust_btn2_random +jaysndees.com###block2 +jaysndees.com###block1 +mr9soft.com##+js(nostif, /null|Error/, 10000) +||googlesyndication.com^$script,redirect=googlesyndication_adsbygoogle.js,domain=mr9soft.com +@@||famfonts.com^$ghide +famfonts.com##ins.adsbygoogle +nifteam.info##+js(acs, document.getElementById, undefined) +nifteam.info###wtf:style(visibility:visible!important;display:block!important;) +! babeporn .net popunder => .org +babeporn.*##+js(aopr, decodeURI) +! livemint anti-adblock +! livemint.com##+js(aeld, DOMContentLoaded, nrWrapper) +livemint.com###adfreeDeskSpace +livemint.com###dekBudgetAd +||adconfigproxy.azurewebsites.net/Adurl$xhr +livenewsof.com##+js(nostif, css_class.show) +multics.eu##+js(acs, $, .test) +forums.lostmediawiki.com###ad1 +forums.lostmediawiki.com###remove_ads_link +forums.lostmediawiki.com##[id^="ad-"] +thejournal.ie##+js(nowoif) +thejournal.ie##html:style(background-image:none !important) +! iulive .blogspot.com popups +iulive.blogspot.com##+js(nowebrtc) +! livehere. one popups +livehere.*##+js(nowebrtc) +mailocal2.xyz##+js(nosiif, visibility, 1000) +! wonporn .com popunder +wonporn.com##td[style][width="360"] +adcorto.*##+js(aopr, app_vars.force_disable_adblock) +adcorto.*##+js(aopw, atOptions) +adcorto.*##+js(set, blurred, false) +adcorto.*##.banner +adcorto.*##.box-main > table +*$3p,script,denyallow=facebook.net|fbcdn.net|googleapis.com|google.com|gstatic.com|recaptcha.net|hcaptcha.com,domain=adcorto.* +camflow.tv,camhoes.tv##+js(acs, onload, onclick) +camflow.tv,camhoes.tv##+js(set, flashvars.adv_pause_html, '') +camflow.tv,camhoes.tv##+js(set, flashvars.adv_start_html, '') +camflow.tv,camhoes.tv##+js(set, flashvars.logo_text, '') +camflow.tv,camhoes.tv##+js(set, flashvars.mlogo, '') +camflow.tv,camhoes.tv##+js(set, flashvars.popunder_url, '') +camhoes.tv##+js(set, hasPoped, true) +camflow.tv,camhoes.tv##.box.rltd +camflow.tv,camhoes.tv##.table +playporngames.com##+js(aeld, DOMContentLoaded, window.open) +playsexgames.xxx##+js(acs, bannersRequest) +||saddlegirls.com/saddlegirls/ph/v/*_video.mp4$1p +saddlegirls.com##.image-link[href^="//www.zagvee.com"] +||playporngames.com/*.gif| +||playporngames.com/fuck_dolls_online.jpg +playporngames.com##.sidebarcont > .widget_text:not(#text-2) +/xxx\/(?:[a-z]+[_-]){1,2}[a-z]+\.(?:gif|jpg)$/$image,1p,domain=playsexgames.xxx +playsexgames.xxx##.widget:not(#text-2) +||lifeselector.com/banners/js/banner-controller. +||static.zhihu.com/heifetz/main.signflow.*.js$script,domain=zhihu.com +needgayporn.com#@#.is-ad-visible +needgayporn.com##+js(aopr, ExoLoader.serve) +needgayporn.com##[href="https://www.onlyhentaistuff.com/"] +needgayporn.com##.table +needgayporn.com##[src^="https://www.needgayporn.com/player/html.php"] +needgayporn.com##.fp-brand +needgayporn.com##^script:has-text('script') +||needgayporn.com/ohs-180x800.gif +forexforum.co##+js(acs, $, .test) +! rule34.paheal.net PH +rule34.paheal.net##script[src$="ads.js"]:upward(section[id]) +! palcomix.com ads +palcomix.com##center > font[size="3"][face="ARIAL"]:has-text(ADVERTISING):upward(td) +palcomix.com##table[width="800"]:has(img[src^="../ads/"]) +/\.com\/(full)?ad[0-9a-z]+\.(?:gif|jpg)$/$image,1p,domain=palcomix.com +freemagazines.top##+js(aopr, b2a) +freemagazines.top##+js(nostif, showModal) +freemagazines.top##+js(acs, eval, replace) +freemagazines.top##+js(rmnt, script, var Data) +freemagazines.top##+js(no-xhr-if, /doubleclick|googlesyndication/) +freemagazines.top##+js(aeld, DOMContentLoaded, /atob|overlay/) +*$xhr,redirect-rule=nooptext,domain=freemagazines.top +dl-protect.*##+js(nowoif) +cryptowin.io##+js(acs, document.getElementById, 'body') +@@||cryptowin.io^$ghide +cryptowin.io##.panel-body > p[style=" color:#818181; background-color: #fffdc4; text-align: center; font-size: 14px; border-radius: 2px; width: 320px; max-width: 100%; margin: auto; margin-top: 15px; "] +cryptowin.io##.hidden-xs +movi.pk,netu.ac,player.msmini.*,player.sbnmp.*,netuplayer.*,vapley.*##+js(nowoif) +0gogle.com##+js(aopr, __Y) +movi.pk##+js(aeld, , vads) +movi.pk##+js(acs, eval, replace) +netu.ac,vapley.*##+js(aopr, doSecondPop) +movi.pk###vads +/cdn-cgi/trace$xhr,1p,domain=0gomovies.*|cdn1.fastvid.co|movi.pk|netu.ac|player.msmini.*|player.sbnmp.*|vapley.* +plugincrack.com##+js(nostif, ai_adb) +pikkado.com###googletop:remove() +pikkado.com###dest_rev +||gartic.io/videos/*$media,1p,redirect=noopmp4-1s +hindustantimes.com##+js(no-fetch-if, adsbygoogle.js) +hindustantimes.com##+js(ra, onclick, a[href][onclick^="getFullStory"]) +hindustantimes.com##.adBlockerPopup +hindustantimes.com##.adBlocker +hindustantimes.com##.blackOverlay +hindustantimes.com##.desktopAd +hindustantimes.com##.epaper-ad +hindustantimes.com##.ht-ad-v1 +hindustantimes.com##.ht_outbrain +hindustantimes.com##.m_ads_unit +hindustantimes.com##.storyAd +hindustantimes.com##.topAd +hindustantimes.com##.widget-ad +hindustantimes.com##[class^="adHeight"] +hindustantimes.com##[class^="adMinHeight"] +hindustantimes.com##body:style(overflow: auto !important;) +hindustantimes.com##div[id^="div-gpt-ad"] +tech.hindustantimes.com##.header-ad +tech.hindustantimes.com##div.mobileNone +tech.hindustantimes.com##.centerAd768 +hindustantimes.com##.new_ads_unit +hindustantimes.com##.i-amphtml-unresolved +hindustantimes.com##.top250Ad +hindustantimes.com##[amp-access^="NOT"] +hindustantimes.com##.headerAds250 +hindustantimes.com##.FirstAd +hindustantimes.com##[class*="adsHeight"] +hindustantimes.com##[class^="TopStoriesAd_storyAd__"] +hindustantimes.com##[class^="QuizComponent_smallAds300__"] +!#if !env_mobile +hindustantimes.com##body:style(padding-top: 0 !important;) +!#endif +! popups https://elitegoltv. es/canal-1.php +newdmn.*##+js(nowoif, !newdmn, 1) +newdmn.*###overlay +kitchennovel.com##+js(nostif, show) +! mp4hentai.com ads +||mp4hentai.com/holy-cell-feb3/ +mp4hentai.com###custom_html-5 +! hentaihd.net player overlay +hentaihd.net##.active-item +! nypost.com PH +nypost.com##img[src$="/knewz_300x250.png"]:upward(.widget_text) +nypost.com##.entry-content > .nyp-video-player +! xmegadrive.com popup +xmegadrive.com##+js(set, flashvars.adv_pause_html, '') +xmegadrive.com##.table +! nsfwmonster.com popup +nsfwmonster.com##+js(aeld, getexoloader) +moviehdf.*##+js(aopr, popUp) +moviehdf.*##+js(nowoif) +! popups, devtools detection https://moviessources .cf/embed/38700 +moviessources.*##+js(aeld, devtoolschange) +moviessources.*##+js(aopr, console.clear) +! citynews sites .it anti adb in video +agrigentonotizie.it,anconatoday.it,arezzonotizie.it,avellinotoday.it,bresciatoday.it,brindisireport.it,casertanews.it,cataniatoday.it,cesenatoday.it,chietitoday.it,forlitoday.it,frosinonetoday.it,genovatoday.it,ilpescara.it,ilpiacenza.it,latinatoday.it,lecceprima.it,leccotoday.it,livornotoday.it,messinatoday.it,milanotoday.it,modenatoday.it,monzatoday.it,novaratoday.it,padovaoggi.it,parmatoday.it,perugiatoday.it,pisatoday.it,quicomo.it,ravennatoday.it,reggiotoday.it,riminitoday.it,romatoday.it,salernotoday.it,sondriotoday.it,sportpiacenza.it,ternitoday.it,today.it,torinotoday.it,trevisotoday.it,triesteprima.it,udinetoday.it,veneziatoday.it,vicenzatoday.it##+js(nostif, bADBlock) +*$script,redirect-rule=noopjs,domain=examsnet.com +javfun.me###invideo_wrapper +tophentaicomics.com##+js(acs, pop_init) +tophentaicomics.com##.sidebar-wrapper.widget_text +tophentaicomics.com##.thumb-ad +||tophentaicomics.com/istrippers.jpg +||tophentaicomics.com/pop.js +k12reader.com##+js(aopr, rccbase_styles) +cachevalleydaily.com##+js(aopr, rccbase_styles) +cachevalleydaily.com##.main-top-ad +girlsofdesire.org##+js(aeld, getexoloader) +girlsofdesire.org##[href^="http://refer.ccbill.com/cgi-bin/clicks.cgi"] > div +girlsofdesire.org##a[class="pink"][href*="refer.ccbill.com"] +girlsofdesire.org##div[id$="_frame_content"][class="wide_boxcontent"]:has-text(Adblock) +girlsofdesire.org###box_896 +girlsofdesire.org###box_897 +girlsofdesire.org##+js(nosiif, /^/) +girlsofdesire.org##[href^="/click"]:remove-attr(href) +! popups animeindo .asia +animeindo.asia##+js(aeld, , _0x) +family-fuck.net##.plink +adultfun.net##+js(nowoif) +topnewsshow.com##+js(nostif, css_class.show) +*$script,redirect-rule=noopjs,domain=topnewsshow.com +panel.skynode.pro##+js(aopr, adBlockerDetected) +telesintese.com.br##+js(refresh-defuser) +! its.porn popunder pre-roll ads +its.porn##+js(set, POPUNDER_ENABLED, false) +its.porn##+js(set, plugins.preroll, noopFunc) +its.porn##aside +its.porn##.spot_large +its.porn##.desk-banners +its.porn###rock-widget-host +*$frame,denyallow=google.com,domain=its.porn +! verdragonball.online anti adb +@@||verdragonball.online^$ghide +*$popunder,domain=r18hub.com,3p +||r18hub.com/assets/vast/videos/*$xhr,1p +7misr4day.com##+js(nano-sib) +7misr4day.com##+js(aopr, adBlockDetected) +7misr4day.com##+js(nowoif) +7misr4day.com##+js(noeval-if, ads) +miklpro.com##+js(aopr, app_vars.force_disable_adblock) +miklpro.com##+js(set, blurred, false) +miklpro.com##.box-main > .blog-item +miklpro.com##.banner +*$script,3p,denyallow=google.com|gstatic.com|recaptcha.net,domain=miklpro.com +sshconect.com.br##+js(acs, addEventListener, nextFunction) +! hd21 group sites +! hd21.com/net +hd21.*##+js(nowoif) +hd21.com##.ID-bottom-banner +hd21.com##.adv_middle +hd21.*##.aside_video +hd21.com##.drt-sponsor-block +||hd21.*/templates/base_master/js/jquery.shows.min.js +! iceporn.com/net +iceporn.*##+js(nowoif) +iceporn.com##.puFloatLine +iceporn.com###abmessage +iceporn.*###spot_video_livecams +iceporn.*##.furtherance +iceporn.*##.take_place + .take_place +iceporn.*###spot_video_partner_banner +iceporn.*###spot_video_partner_banner + span[style] +nuvid.*##+js(aeld, click, open) +nuvid.*##+js(nowoif) +nuvid.*##div[style^="height:477px"] +nuvid.*##footer > .rfix +nuvid.*##.aside > h2 +nuvid.*##.download_adv_text_photo +nuvid.*##.video-options +nuvid.*##.advertisement +||nuvid.*/player_right_$frame +! pornlib.com +pornlib.*##+js(nowoif) +! tubeon.com/net +tubeon.*##+js(nowoif) +tubeon.*##.spots +tubeon.*##.thr-rcol +! vivatube.com/net +vivatube.*##+js(nowoif) +vivatube.*##.livecams +vivatube.*##.clear + .mt15.container[style="margin-top:15px; border-bottom:0;"] +! winporn.com/net +winporn.*##+js(nowoif) +! yeptube.com/net +yeptube.*##+js(nowoif) +yeptube.com##.puFloatLine +yeptube.*##.spots +yeptube.*##.thr-rcol +gaytail.com##+js(aeld, getexoloader) +gaytail.com##+js(acs, onload, onclick) +gaytail.com##.happy-footer +||gaytail.com/fancy-mode-7abe/ +||datawav.club/*.php +game-owl.com##+js(aost, String.prototype.charCodeAt, ai_) +streamsport.*##+js(aeld, , _0x) +streamsport.*##+js(nowoif) +@@||micro.rubiconproject.com/prebid/dynamic$script,domain=ladbible.com +ladbible.com#@#div[class*="margin-Advert"] +ladbible.com##span:has-text(Advert) +ladbible.com##[data-cypress="sticky-ads"] +@@||pub.doubleverify.com/signals/pub.js$xhr,script,domain=ladbible.com|gamingbible.*|tyla.com|unilad.com +@@||rubiconproject.com/prebid/$xhr,script,domain=ladbible.com|gamingbible.*|tyla.com|unilad.com +@@||static.adsafeprotected.com/vans-adapter-google-ima.js$xhr,domain=ladbible.com|gamingbible.*|tyla.com|unilad.com +@@||c.amazon-adsystem.com/aax2/apstag.js$xhr,domain=ladbible.com|gamingbible.*|tyla.com|unilad.com +ladbible.com##[data-cypress="sticky-header"] +*$image,redirect-rule=1x1.gif,domain=rollercoin.com +! windowmatters.com anti-adb +windowsmatters.com##+js(aeld, load, isBlanketFound) +*$script,redirect-rule=noopjs,domain=windowsmatters.com +windowsmatters.com##div[class$="-quick-adsense"] +! masbrooo.com/2ndrun.tv anti-adb +2ndrun.tv##+js(aeld, load, showModal) +*$script,redirect-rule=noopjs,domain=2ndrun.tv +2ndrun.tv##+js(set, DHAntiAdBlocker, true) +*$xhr,redirect-rule=nooptext,domain=fr.de +@@||fr.de^$ghide +fr.de##div[data-id-advertdfpconf] +hdpicsx.com##.ads +timesnownews.com##.ad-section-one +timesnownews.com##.ad-section-three +timesnownews.com##.ad-panel-wrap +timesnownews.com##.add-wrap +timesnownews.com##.right-block > .section-six +timesnownews.com##.right-block > .section-one +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=timesnownews.com +@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$script,domain=timesnownews.com +@@*$ghide,domain=timesnownews.com|timesnowhindi.com|timesnowmarathi.com|zoomtventertainment.com +timesnownews.com,timesnowhindi.com,timesnowmarathi.com,zoomtventertainment.com##.adunit +timesnownews.com,timesnowhindi.com,timesnowmarathi.com,zoomtventertainment.com##+js(nostif, Adblock) +!#if env_mobile +@@||onelinksmartscript.appsflyer.com/onelink-smart-script-latest.js$script,domain=timesnownews.com +!#endif +tormalayalam.*##+js(aopw, adcashMacros) +blograffo.net##+js(acs, addEventListener, nextFunction) +blograffo.net##[href^="https://amzn.to/"] +aquiyahorajuegos.net##+js(aopr, adBlockDetected) +aquiyahorajuegos.net##+js(nowoif) +aquiyahorajuegos.net##+js(no-fetch-if, googlesyndication) +imag-r.com##+js(aopr, adBlockerDetected) +/block-adblock.js$script +eropaste.net##+js(set, isAdBlockActive, false) +eropaste.net###banner-dl +adult-sex-gamess.com,hentaigames.app,mobilesexgamesx.com,mysexgamer.com,porngameshd.com,sexgamescc.com##+js(nostif, /out.php) +adult-sex-gamess.com,hentaigames.app,mobilesexgamesx.com,mysexgamer.com,porngameshd.com,sexgamescc.com##.a-th:first-child:has(iframe) +adult-sex-gamess.com,hentaigames.app,mobilesexgamesx.com,mysexgamer.com,porngameshd.com,sexgamescc.com##.alert-danger > .row +adult-sex-gamess.com,hentaigames.app,mobilesexgamesx.com,mysexgamer.com,porngameshd.com,sexgamescc.com##.ntkSides +adult-sex-gamess.com,hentaigames.app,mobilesexgamesx.com,mysexgamer.com,porngameshd.com,sexgamescc.com###modalegames +! d.pornxp.com/pornxp.org popup +pornxp.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +pornxp.com,pornxp.org##+js(aopr, AaDetector) +*$script,3p,domain=pornxp.com +||pornxp.*/sp/$subdocument +! generic AaDetector mitigation +##div[id][style^="position: fixed; inset: 0px; z-index: 2147483647; background: black"][style*="opacity: 0.01"] +/heyboy/com/*.js$script +/loadme/com/*.js$script +sexflashgame.org##+js(acs, ishop_codes) +||porngames.com/*.gif$image,1p +porngames.com##div[style^="display: block; position: fixed; z-index:"] +@@||cdnjs.cloudflare.com/ajax/libs/fuckadblock$script +! wmoviesfree. com (.online) popups +wmoviesfree.*##.orange.big-color-btn +||wmoviesfree.*/themes/movies/img/banner_leaderboard$image +ehotpics.com,upicsz.com##figure[style^="width: 310px;"] +@@||down.mdiaload.com^$ghide +down.mdiaload.com##div[style$="background-color:#ffffff; text-align:center"] +down.mdiaload.com##div[style="width:336px; height:280px"] +down.mdiaload.com##.btn-dow.btn[href$=".html"] +down.mdiaload.com##div.download-option-btn:nth-of-type(4) +@@||securepubads.g.doubleclick.net^$script,domain=mope.io +@@||securepubads.g.doubleclick.net/gampad/ads$xhr,domain=mope.io +mope.io##[id^="google_ads_iframe"] +gaysearch.com##+js(nowoif) +gaysearch.com##.twocolumns > .aside +*$script,redirect-rule=noopjs,domain=kursors.lv +javbix.com##.adsvideo +javbix.com##.content_movie > div[style="padding:10px; margin-top:15px; text-align:center"] +javbix.com##.letterLi:last-of-type +rawmanga.top##+js(aopr, AaDetector) +2adultflashgames.com##+js(aopr, loadTool) +||2adultflashgames.com/img/$1p +gatcha.org##+js(nostif, css_class.show) +zilinak.sk##+js(nostif, offsetHeight) +loadout.tf##body > div:shadow(div):shadow(div):has(:shadow(div:not([class])):has(:shadow(ins.adsbygoogle[data-ad-client]))) +||raw.githack.com/Raqmedia/adblock/$script,3p +raqmedia.com##[href^="https://www.englezz.com"] +filtercams.com##+js(acs, $, #advVid) +filtercams.com##.table +! cryptofun .space anti adb +/adex.js$badfilter +@@||cryptofun.space^$script,1p +@@||shrink.icu/prebid.js$script +! various filters +/ajax/banner/list?page=$xhr +hd44.net##+js(aopr, decodeURI) +ytc.*##+js(nowoif) +||cdn.ay.gy/js/$script,3p +hianime.to,shahid4u.*,watchonlinemoviespk.*##+js(nowoif) +megaupto.com##+js(nano-stb, seconds) +projectfreetv.*,hdss.*,moviesflix.*,10starhd.*##^script:has-text(break;case) +www-y2mate.com##+js(nowoif) +filmyzilla.*##[href^="//"][rel="nofollow"] +streamhub.*##center > a[href][target="_blank"] +streamhub.*##+js(aopw, __aaZoneid) +streamhub.*##+js(nowoif) +streamingcommunity.*##+js(acs, decodeURI, decodeURIComponent) +*$script,3p,denyallow=streamhub.to,domain=streamhub.* +superstream.*##+js(aopr, AaDetector) +$script,3p,denyallow=bootstrapcdn.com,domain=uploadflix.* +||bloggingworld.net/wp-content/plugins^$3p +moviezwap.*##+js(nowoif) +moviezwap.*##[style^=" width: 305px;"][type^="button"][onclick^="window.location.href"] +xdld.pages.dev##+js(noeval-if, window.open) +/^https:\/\/[0-9a-z]{8,}\.[a-z0-9]{7,}\.[a-z]{4,}\/[0-9a-f]{32}\/a4\/[0-9a-f]{13}\.js$/$script,3p,match-case +/^https:\/\/[0-9a-z]{8,}\.[a-z0-9]{7,}\.[a-z]{4,}\/[0-9a-f]{32}\/b4\/[0-9a-f]{13}\.js$/$script,3p,match-case +! *** uAssets:filters/filters-2021.txt *** +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=ottwow.com,redirect=google-ima.js +@@||backlinkping.com^$ghide +@@||deine-tierwelt.de^$ghide +deine-tierwelt.de##.OUTBRAIN +deine-tierwelt.de##.header-leaderboard +deine-tierwelt.de##.js-sticky-ad +haho.moe##+js(aeld, mouseup, decodeURIComponent) +haho.moe##div:has(> div[title="Click to Close the Ad"]) +haho.moe##[href^="//"][style*="position: fixed;"] +*$script,3p,denyallow=fluidplayer.com|cdn77.org|gstatic.com|hwcdn.net|recaptcha.net,domain=haho.moe +! freeporncave.com auto-redirect +freeporncave.com##+js(nostif, location.replace, 300) +vectogravic.com##+js(acs, eval, replace) +kusonime.com##+js(rpnt, script, /\(window\.show[^\)]+\)/, (true), condition, classList.add) +kusonime.com##+js(nostif, css_class.show) +kusonime.com##+js(set, showada, true) +kusonime.com##+js(set, showax, true) +kusonime.com##+js(aopw, app_advert) +kusonime.com##.iklanads +@@||kusonime.com^$script,1p +@@||nyaa-tan.my.id/js/$script,3p,domain=kusonime.com +cararegistrasi.com##+js(nano-sib, timer) +cararegistrasi.com##+js(nowoif) +cararegistrasi.com##a[href="https://bahasteknologi.com/"] +pornhd8k.*###invideo_wrapper +xxvideoss.org##+js(acs, String.fromCharCode, 'shift') +||xxvideoss.org/wp-content/uploads/*/bannerrtx.jpg$image,1p +/player/html.php?aid=post_roll_html^$redirect=noopframe,frame,1p +/player/html.php?aid=start_html&*&referer=$frame,1p +/player/html.php?aid=pause_html&*&referer=$frame,1p +/player/html.php?aid=pre_roll_html&*&referer=$frame,1p +||twinrdsrv.com^ +/preroll.engine? +/get_file/*.mp4/?rnd=$image +donghuanosekai.com##+js(nosiif, visibility, 1000) +! bitsfree.net/getdoge.io/qashbits.com anti-adb +qashbits.com##+js(aopr, NoAdBlock) +qashbits.com##.mx-auto +! e-sushi .fr popup +e-sushi.fr##+js(rmnt, script, window.open) +freeindianporn.mobi##+js(aeld, /.?/, popMagic) +||xedo.me^$3p +radionylive.com,radioitalylive.com,radiolovelive.com,radiocountrylive.com,radiosymphony.com,miamibeachradio.com,radiorockon.com,radioitaliacanada.com,radioitalianmusic.com,radioamericalatina.com,radiosantaclaus.com,radionorthpole.com,radionatale.com##+js(aopr, adp) +radionylive.com,radioitalylive.com,radiolovelive.com,radiocountrylive.com,radiosymphony.com,miamibeachradio.com,radiorockon.com,radioitaliacanada.com,radioitalianmusic.com,radioamericalatina.com,radiosantaclaus.com,radionorthpole.com,radionatale.com##[id^="ads-"] +! absolugirl .com ads +absolugirl.com,absolutube.com##+js(aopr, document.dispatchEvent) +@@||chaturbate.com/*embed$frame,domain=absolugirl.com +! allafricangirls .net ads + popups +allafricangirls.net##+js(aopr, document.dispatchEvent) +allafricangirls.net##[id^="exo_"] +allafricangirls.net##[src*="/banner"] +elvocero.com##+js(acs, __tnt, compatibility) +! popups, popunders, ads +dirtyfox.net##+js(aopr, decodeURI) +booru.eu,borwap.xxx,foxtube.com,hd-xxx.me,javembed.*,kissanime.*,longporn.xyz,matureworld.ws,sexy-games.*,xvideos.name,xxx-videos.org,xxxputas.net,youpornfm.com,maxtubeporn.net##+js(nowoif) +freexxxvideos.pro,nude-teen-18.com##+js(aopr, document.dispatchEvent) +123strippoker.com,babepedia.com,boobieblog.com,borwap.xxx,gamesofdesire.com,hd-xxx.me,hentaipins.com,longporn.xyz,pornhd720p.com,sikwap.xyz,super-games.cz,xxx-videos.org,xxxputas.net##+js(aopr, loadTool) +blackpornhq.com,xsexpics.com,wannafreeporn.com##+js(aeld, , pop) +soyoungteens.com##+js(aeld, getexoloader) +hentaipins.com##+js(acs, pop_init) +hentaipins.com##+js(aopr, popundrCheck) +pornvideoq.com##+js(aopr, history.replaceState) +rexxx.org##+js(aopr, rexxx.swp) +stvid.com##+js(noeval) +hypnohub.net,xnxxporn.video,xxxdessert.com,xxxshake.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +freepornxxxhd.com##+js(acs, String.fromCharCode, constructor) +hot-cartoon.com,richhioon.eu##+js(aopr, BetterJsPop) +123movieshd.*##+js(aopr, mm) +123movieshd.*##+js(set, p18, undefined) +cfake.com###over +theyarehuge.com##+js(acs, Object.defineProperty, clickHandler) +*$script,3p,denyallow=bootstrapcdn.com,from=youdbox.* +! 123movies4u. site => player eplayvid. net popups +porntry.com##.js-mob-popup +erotic-beauties.com,hardsex.cc,sex-movies.biz,sikwap.xyz,tube18.sexy##+js(acs, pop_init) +blackcunts.org,finderporn.com##+js(acs, onbeforeunload) +dansmovies.com##+js(aopr, popunder) +hentaianimedownloads.com##+js(acs, puShown, /doOpen|popundr/) +grosnews.com##+js(acs, adcashMacros) +xxxymovies.com##+js(set, flashvars.adv_pause_html, '') +dirtyship.com##+js(acs, onload) +hotscopes.*##+js(aopw, puShown) +hotscopes.*##+js(nowoif) +hotscopes.*##.ml-auto.navbar-nav +afrodity.sk,brato.bg,cotannualconference.org.uk,couponsuniverse.com,cycraracing.com,dahh.net,dlhe-videa.sk,elmalajeno.com,extreme-board.com,free-famous-toons.com,istanbulescortnetworks.com,ok-th.com,payt.com,podkontrola.pl,redtubemov.com,shtab.su,spiritword.net##+js(acs, document.createElement, 'script') +elmalajeno.com##^script:has-text(d.createElement('script')) +elmalajeno.com##^script:has-text(d.createElement(\'script\')) +@@||onlinefetishporn.cc^$ghide +@@||streamextreme.cc^$ghide +shegotass.info##+js(aopr, popunder) +shegotass.info##+js(set, flashvars.adv_pre_vast, '') +xxxshake.com##+js(set, flashvars.adv_pause_html, '') +tubsxxx.com##+js(nostif, window.location.href) +camlovers.tv##+js(set, flashvars.protect_block, '') +anybunny.com##td[width="360"] +babepedia.com##.sidebar_block > a[rel="nofollow noopener"] +borwap.xxx##.embedright +cartoonvideos247.com##.adv +cartoonvideos247.com##.sponsor +cartoonvideos247.com##.topad +erotic-beauties.com##.sidebar > .widget_text +ezjav.com###preroll +ezjav.com##center +ezjav.com##div[style="overflow: hidden !important;margin-bottom:8px;"] +freexxxvideos.pro##.sidban +hd-xxx.me##.videoOverAdBig +hdjavonline.com##.happy-inside-player +hentaipins.com##.sidebar-wrapper.widget_text +hentaipins.com##.thumb-ad +hotntubes.com##td[width="360"] +javbest.xyz##.adsvideo +javrave.club,javraveclub.com##.leader_banner +kingcomix.com##[href^="//"][rel="nofollow norefferer noopener"] +longporn.xyz##[href="http://toplivesexcams.net"] +movies18.net##[href*="/go/"] +nude-teen-18.com##.cht6 +nude-teen-18.com##.rtrrtrlight-in-2 +pornvideoq.com###playerOverlay +pornvideoq.com##.h250 +sexpuss.org##.bn1 +sexpuss.org##.tu-sexc3 +sexroom.xxx##.table +sissytube.net##a[href^="http://refer.ccbill.com/"] +thecartoonporntube.com##[href="/go/tube.php"] +thecartoonporntube.com###advertising [href] +womennaked.net##.hrcht6 +pt.potwm.com##.pausedView +pt.potwm.com##.shown.visible.onlineIndicator +||protoawegw.com^$3p +tubsxxx.com##.aBlock +tubsxxx.com##.videoAd +pornez.net###cb00 +pornez.net###cb01 +pornxday.com,twinkybf.com##.happy-sidebar +###playerOverlay[style="position:absolute; z-index:3"] +roshy.tv##.roshy-widget +roshy.tv##.beeteam368-player-sub-element +roshy.tv##div[class*="roshy-stripchat-"] +roshy.tv##div[style]:has(> [id^="roshy-"]) +roshy.tv##.is-single-post-main-player > div:has(> div[class*="roshy-stripchat-"]) +roshy.tv##.shortcode_widget +*$script,3p,denyallow=cloudflare.com|cloudflare.net|fastly.net|jsdelivr.net|unpkg.com|zencdn.net,domain=xxxfiles.com +*$script,domain=hoporno.net,3p,denyallow=googleapis.com +/istripper*$image,domain=hentaipins.com +/popup/exo-ads.$frame,1p +/xxx.js|$script,1p +||brazz-girls.com/chaturbate/ +||brazz-girls.com/scripts/yall.*.js +||elitepaysites.com/photos/*.gif$image +||ezjav.com/p.js +||fapfappy.com/*.php$script,1p +||freepornxxxhd.com^*/exopop.js +||hentaipins.com/*.php$script,1p +||hentaipins.com/pop.js +||i.imgur.com^$domain=anime-hentai.jp.net|ezjav.com +||ibradome.com/ba/chargi.js +||imgbox.com/ae/$domain=matureworld.ws +||jorpetz.com/kahitano/banner.gif +||katestube.com/jsb/js_script.js +||mixxporn.com/b1.php +||pornhex.com/nb/ +||pornofaps.com/frosty-bread-04ce/ +||seed69.com/wp-content/uploads/*.gif$image +||sexyaporno.com/chat_$script +||tb.fuckandcdn.com/tbstatic*/tryboobs/compiled/script. +||thecartoonporntube.com/*.gif$image +||xszav.club/nb/ +||xxxdessert.com/*_fe.js +||camlovers.tv^$script,1p +@@||camlovers.tv/player/kt_player.js +||goryachie-foto.net^$3p +||pub.contexthub.net^ +||ptwmstc.com/npt/banner/ +||tabooporn.tv^$3p +||xmorex.com^$3p +##.full-ave-pl +##.full-bns-block +##.vertbars +##.video-brs +/safu/safu.js +! exit prevention, redirect, popups +/tp/filter.php?pro= +/myvids/rek/*$frame,script,1p +/myvids/show.php$frame,1p +/myvids/click/*$script,1p +###plban +##div[class$="player-promo-col"] +##.player-bns-block +/zlk/zlk.js +/pop1.js|$script,1p +||easyads28.*^ +! adultsclips.com,cutewifes.com,sexenvelope.com,sexpun.com +.com/fr.js|$1p +.com/v.js?v=3|$1p +! www.xxxvideor.com +/static/js/abb.js|$script,1p +! sextubexxl.com +/common-js/exit/om2.min.js +! wikiporn.tv etc. +/nb/thejsfile.js +m-hentai.net##div.leaderboardcontainer +m-hentai.net##div[class^="landingpageadcontainer_iframe"] +||m-hentai.net/JS/exoclick%20popunder.js +jetpunk.com##+js(no-xhr-if, prebid) +jetpunk.com##+js(cookie-remover, PageCount) +jetpunk.com##+js(set-local-storage-item, PageCount, $remove$) +jetpunk.com##+js(trusted-set, asc, 'json:{"cmd": [null], "que": [null], "wrapperVersion": "6.19.0", "refreshQue": {"waitDelay": 3000, "que": []}, "isLoaded": true, "bidderSettings": {}, "libLoaded": true, "version": "v9.20.0", "installedModules": [], "adUnits": [], "aliasRegistry": {}, "medianetGlobals": {}}') +jetpunk.com##+js(trusted-set, google_tag_manager, 'json:{ "G-Z8CH48V654": { "_spx": false, "bootstrap": 1704067200000, "dataLayer": { "name": "dataLayer" } }, "SANDBOXED_JS_SEMAPHORE": 0, "dataLayer": { "gtmDom": true, "gtmLoad": true, "subscribers": 1 }, "sequence": 1 }') +@@||jetpunk.com^$script,1p +@@||jetpunk.com^$ghide +||jetpunk.com/resources/asc.js^$script,1p,important +jetpunk.com##.banner-ad-outer +jetpunk.com##.box-ad-inner +jetpunk.com##.box-ad-outer +jetpunk.com##.banner-x-outer +jetpunk.com##.support-beg +imgur.com##+js(set, ADBLOCKED, false) +! reported +imgur.com,imgur-com.translate.goog##+js(set-cookie, WHITELISTED_CLOSED, 1) +||sascdn.com/diff/$script,redirect=noopjs,domain=imgur.com +imgur.com##a[href].Post-item:has(.Post-item-external-ad):style(opacity: 0 !important; cursor: unset !important; pointer-events: none !important;) +imgur.com##+js(set, Object.prototype.adsEnabled, false) +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=comidoc.net +comidoc.net#@#.googlead +@@||doubleclick.net^$xhr,domain=comidoc.net +comidoc.net##div[style="text-align: center; margin-left: auto; margin-right: auto; min-height: 266px; max-width: 100vw;"] +comidoc.net##div:has(> .adsbygoogle) +comidoc.net##div[style="text-align:center;margin-left:auto;margin-right:auto;min-height:266px;max-width:90vw"] +forum.gigabyte.us###ad1 +forum.gigabyte.us##[id^="ad-desktop-bottom"] +forum.gigabyte.us###remove_ads_link +! 1primewire .com popups ads +||1primewire.com/addons/$image +1primewire.com##[id]:has(> [class="close ico"]) +*$script,domain=novelmultiverse.com,redirect-rule=noopjs +@@||novelmultiverse.com^$ghide +novelmultiverse.com##+js(no-xhr-if, ads) +novelmultiverse.com##+js(aeld, , removeChild) +novelmultiverse.com##.adace-slideup-slot-wrap +! cyberdefensemagazine.com anti-adb +cyberdefensemagazine.com##[href^="https://www.coresecurity.com/"] +cyberdefensemagazine.com###bsaIframe +! kisahdunia.com anti-adb +kisahdunia.com##+js(aeld, DOMContentLoaded, adsBlocked) +kisahdunia.com##+js(aost, setTimeout, adsBlocked) +kisahdunia.com##.textwidget +kisahdunia.com##[href^="https://www.samsung.com/"] +hentaicomics.pro##+js(set, adb, 0) +hentaicomics.pro##+js(nowoif) +||hentaicomics.pro/*?code=$doc,other,removeparam=code +withukor.com##+js(acs, document.addEventListener, google_ad_client) +taming.io##+js(no-xhr-if, ads) +taming.io###preroll +taming.io###left-bbb +taming.io###bottom-bbb +! todaypk related +todaypk.*,todaypktv.*,1todaypk.*##+js(nowoif) +1todaypk.*,todaypk.*##[href="/watchnow.php"] +todaypk.*##[href="/watchfree.php"] +todaypktv.*##.ad_watch_now +todaypktv.*##.hd-buttons1 +faptitans.com##.cross-promo-bnr +||faptitans.com^*/rc/logo.jpg +||theonlygames.com/ps_banner/ +world4.eu##+js(aost, String.prototype.charCodeAt, ai_) +world4.eu##+js(aopr, ai_run_scripts) +||doubleclick.net/tag/js/gpt.js$object,redirect=noop.js,domain=world4.eu +*$image,3p,redirect-rule=1x1.gif,domain=world4.eu +laptrinhx.com##+js(nosiif, clearInterval(i), 1000) +laptrinhx.com##.ads +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=bbcamerica.com +babestube.com,momvids.com,porndr.com##+js(aopr, decodeURI) +babestube.com,momvids.com,porndr.com##div[style="position: absolute; inset: 0px; overflow: hidden; z-index: 160; background: transparent none repeat scroll 0% 0%; display: block;"] +babestube.com##[src^="https://www.babestube.com/player/html.php"] +babestube.com,momvids.com##.aside +babestube.com,momvids.com##.spot > div +momvids.com##[src^="https://www.momvids.com/player/html.php"] +porndr.com##div.opt +porndr.com##.we_are_sorry +||porndr.com/*/*.php^ +||babestube.com/bt*/bt.js +||momvids.com/mm*/mv.js +! Mostly taken from AG and seen on various NSFW sites +/_a_ta/s/s/* +/a/ipn/js/* +/a/pop/js/* +/local_p.js^ +/local_ssu.js| +/s/js/ssu.v2.js?v= +/s/s/sui.php +/s/s/suo.php +/s/s/supc.php +/s/s/supv.php +/s/su.php?t= +/javascript/fropo.js +/s/s/js/m/custom.js? +/s/s/js/m/custom_advanced.js? +/s/s/js/m/im.js? +/s/s/js/ssu.v2. +/s/s/js/m/push.js? +/a/na/js/*$3p +deviants.com##+js(aopr, decodeURI) +deviants.com##div[style="position: absolute; inset: 0px; overflow: hidden; z-index: 160; background: transparent none repeat scroll 0% 0%; display: block;"] +deviants.com##.aside +deviants.com##.spot > div +||deviants.com/player/html.php^ +||deviants.com/dv*/dv.js +totv.org###ad +manhwa18.cc##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +||a.realsrv.com/nativeads-v2.js$xhr,redirect=noop.txt +! healthelia .com anti adb +healthelia.com##+js(nostif, google_jobrunner) +! happypenguin.altervista .org anti adb +happypenguin.altervista.org##+js(nostif, adb) +elektrikmen.com##+js(aopr, b2a) +||wheelwheel.space^$3p +love4porn.com##+js(rpnt, script, document.head.appendChild, xxx) +love4porn.com##+js(set, flashvars.popunder_url, '') +love4porn.com##div[style="position: absolute; inset: 0px; overflow: hidden; z-index: 160; background: transparent none repeat scroll 0% 0%; display: block;"] +love4porn.com##.sponsor +love4porn.com##.table +crazyporn.xxx##div[style="position: absolute; inset: 0px; overflow: hidden; z-index: 160; background: transparent none repeat scroll 0% 0%; display: block;"] +crazyporn.xxx##.table +crazyporn.xxx##.sponsor +crazyporn.xxx##.item:has(> script[src^="/ai/"]) +freehardcore.com##+js(aopr, decodeURI) +! down.fast-down.com anti adb +@@||down.fast-down.com^$ghide +down.fast-down.com##div[style="width:336px; height:280px; background-color:#ffffff; text-align:center"] +usagoals.*##+js(nowoif) +@@||foxgreat.com^$ghide +haoweichi.com##+js(aopr, onload) +haoweichi.com##.ad2 +okteve.com##+js(acs, String.fromCharCode, marginheight) +arab4media.com##+js(acs, addEventListener, nextFunction) +! pinoyalbums. com anti adb +*$script,redirect-rule=noopjs,domain=pinoyalbums.com +pinoyalbums.com##+js(aeld, , adb) +easylinkref.com##+js(nano-sib, , , 0) +easylinkref.com##center > a[href][target=_blank] > img +w3layouts.com##+js(nostif, show) +||getsexgames.com/templates/sexgames/$image,1p +getsexgames.com##.center > table[cellspacing="5"] > tbody > tr:last-child:has(> td > h1) +getsexgames.com##.center > table[cellspacing="0"]:last-child > tbody > tr:last-child +getsexgames.com##.leftMenu .menuHeadline:has-text(3D) +getsexgames.com##.menuAff +getsexgames.com##.menuPointPic +! hd-pornos. com => info +hd-pornos.*##.vjs-overlayed +hd-pornos.*###spezial_column +hd-pornos.*##div[id="wrapper_content"] > aside +! kickass sites +*$script,1p,domain=~kat.ai|~kat.pink|~kat.computer|~kat.am|~kat.at|~kat.directory|~kat.rip|~kat.software|~kat.studio|~kickass.codes|~kickass.website|kat.*|katbay.*|kickass.*|kickasshydra.*|kickasskat.*|kickass2.*|kickasstorrents.*|kat2.*|kattracker.*|thekat.*|thekickass.*|kickassz.*|kickasstorrents2.*|topkickass.*|kickassgo.*|kkickass.*|kkat.*|kickasst.*|kick4ss.*|kickassbay.*|torrentkat.*|kickassuk.*|torrentskickass.*|kickasspk.*|kickasstrusty.*|katkickass.*|kickassindia.*|kickass-usa.*|kickassaustralia.*|kickassdb.*|kathydra.*|kickassminds.*|katkickass.*|kickassunlocked.*|kickassmovies.*|kickassfull.*|bigkickass.*|kickasstracker.*|katfreak.* +kat.*,kickass.*,kickass2.*,kickasstorrents.*,kat2.*,kattracker.*,thekat.*,thekickass.*,kickassz.*,kickasstorrents2.*,topkickass.*,kickassgo.*,kkickass.*,kkat.*,kickasst.*,kick4ss.*,katbay.*,kickasshydra.*,kickasskat.*,kickassbay.*,torrentkat.*,kickassuk.*,torrentskickass.*,kickasspk.*,kickasstrusty.*,katkickass.*,kickassindia.*,kickass-usa.*,kickassaustralia.*,kickassdb.*,kathydra.*,kickassminds.*,katkickass.*,kickassunlocked.*,kickassmovies.*,kickassfull.*,bigkickass.*,kickasstracker.*,katfreak.*##[style*="decoration"]:not([style^="width"]) +kat.*,katbay.*,kickass.*,kickasshydra.*,kickasskat.*,kickass2.*,kickasstorrents.*,kat2.*,kattracker.*,thekat.*,thekickass.*,kickassz.*,kickasstorrents2.*,topkickass.*,kickassgo.*,kkickass.*,kkat.*,kickasst.*,kick4ss.*##[href="/k.php?q=q"] +@@||kickasstorrents.*/static/js/all.js$script,1p +kickass.*###notification-bar +kickass.*##.alert +kickass.*##+js(rmnt, style, text-decoration) +kickass.*##[id]:matches-attr(id=/[a-zA-Z]{40,}/) +kat.*,katbay.*,kickass.*,kickasshydra.*,kickasskat.*,kickass2.*,kickasstorrents.*,kat2.*,kattracker.*,thekat.*,thekickass.*,kickassz.*,kickasstorrents2.*,topkickass.*,kickassgo.*,kkickass.*,kkat.*,kickasst.*,kick4ss.*##+js(aeld, , break;case $.) +kat.*,katbay.*,kickass.*,kickasshydra.*,kickasskat.*,kickass2.*,kickasstorrents.*,kat2.*,kattracker.*,thekat.*,thekickass.*,kickassz.*,kickasstorrents2.*,topkickass.*,kickassgo.*,kkickass.*,kkat.*,kickasst.*,kick4ss.*##+js(aopw, ospen) +*.js|$script,1p,domain=isohuntz.*|isohunt.*|isohunts.*|isohuntx.*|isohunthydra.*|isohunters.*|isohunting.*|myisohunt.* +*$csp=script-src *,domain=isohuntz.*|isohunt.*|isohunts.*|isohuntx.*|isohunthydra.*|isohunters.*|isohunting.*|myisohunt.* +*$frame,domain=isohuntz.*|isohunt.*|isohunts.*|isohuntx.*|isohunthydra.*|isohunters.*|isohunting.*|myisohunt.* +*$script,1p,domain=torrentproject2.* +*$csp=script-src *,domain=torrentproject2.* +*$frame,domain=torrentproject2.* +/istripper.js +convert2mp3.club##+js(nowoif) +convert2mp3.club###idIframe +! mylegalporno.com popup, ads +mylegalporno.com##+js(aeld, click, pu_count) +mylegalporno.com##.rmedia +mylegalporno.com##.zone +||mylegalporno.com^$frame,1p +winaero.com#@#.entry-content > div > div +winaero.com##[href^="/idx.php"] +javporn18.com##+js(acs, mypop) +javporn18.com###contentDiv +javporn18.com##.player_box +vrporngalaxy.com##+js(nowoif) +123unblock.*##+js(acs, atob, decodeURIComponent) +123unblock.*##+js(acs, adcashMacros) +123unblock.*##.alert-dismissible +||binomo.com/en/promo/*$doc +simply-hentai.com##.cam-container +simply-hentai.com##.reader > div.mb-3 > div.mt-3 +animesa.*##+js(set, adblock_use, false) +*$frame,3p,denyallow=cbox.ws,domain=animesa.* +subtitleone.cc##+js(set, Object.prototype.adblockFound, false) +||wixstatic.com/media/*~mv2.gif$domain=taxi-point.co.uk +taxi-point.co.uk##div[id^="comp-"]:has(> a[data-testid="linkElement"] > wix-image[data-src$="~mv2.gif"]) +taxi-point.co.uk##div[id^="comp-"][class^="_"] > div[class^="_"][style^="padding-left"] +! javynow.com popup +javynow.com##+js(nowoif) +javynow.com##.videos-ad__wrap:style(background-color: transparent !important) +@@||escapegames24.com^$ghide +escapegames24.com##ins.adsbygoogle +escapegames24.com###HTML13 +escapegames24.com###HTML3 +escapegames24.com###HTML2 +escapegames24.com###HTML11 +escapegames24.com###HTML6 > .widget-content b +escapegames24.com##div[id^="post-"] b +*$script,redirect-rule=noopjs,domain=jnckmedia.com +! zdravenportal. eu anti adb +zdravenportal.eu##+js(acs, jQuery, ads) +best18porn.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +best18porn.com##.banner +best18porn.com##.in-player-spot +||best18porn.com/best18.js +shooshtime.com##+js(acs, document.getElementsByTagName, adn) +! th-world. com anti adb +th-world.com##+js(nostif, nextFunction, 250) +actionviewphotography.com,exporntoons.net,mat6tube.*,noodlemagazine.com,exporntoons.net,whatisareverseauction.com,sibtok.com,ukdevilz.com,tyler-brown.com##div[style]:has(> ins) +actionviewphotography.com,exporntoons.net,mat6tube.*,noodlemagazine.com,exporntoons.net,whatisareverseauction.com,sibtok.com,ukdevilz.com,tyler-brown.com##div[style]:has(> [id*="_ad_native_"]) +actionviewphotography.com,exporntoons.net,mat6tube.*,noodlemagazine.com,exporntoons.net,whatisareverseauction.com,sibtok.com,ukdevilz.com,tyler-brown.com##noindex +actionviewphotography.com,exporntoons.net,mat6tube.*,noodlemagazine.com,exporntoons.net,whatisareverseauction.com,sibtok.com,ukdevilz.com,tyler-brown.com##+js(nano-stb, download, 1100) +||ipvertnet.com/clickunder/ +||binpartner.com^$3p +||olymptrade.com^$3p +mysexgames.com##+js(aopr, loadTool) +mysexgames.com##+js(set, createCanvas, noopFunc) +ebookbb.com##^script:has-text('shift') +ebookbb.com##^script:has-text(\'shift\') +*$3p,script,denyallow=google.com|gstatic.com|recaptcha.net|hcaptcha.com,domain=ebookbb.com +romaniataramea.com##.sgpb-popup-dialog-main-div-wrapper +romaniataramea.com##.sgpb-popup-overlay +romaniataramea.com##html:style(overflow: auto !important;) +romaniataramea.com##+js(aopr, bizpanda) +*/wp-content/plugins/sociallocker-next-premium/$script,css +techjunkie.com##.home-page.main-section, html > body:style(margin-top: 0px !important;) +techjunkie.com##.slideMenu:style(top: -7px !important;) +techjunkie.com##body:style(padding-top: 0px !important;) +techjunkie.com##header:style(top: 0px !important;) +celebritynakeds.com##.show-over-1000.async-reklam-placeholder +oyohd.*##+js(nowoif) +vidohd.com##+js(aopr, __Y) +||oyohd.*/cdn-cgi/trace$xhr,1p +bigtitslust.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +lesbian8.com##+js(aeld, getexoloader) +lesbian8.com##+js(aopr, decodeURI) +amateur8.com,bigtitslust.com,freeporn8.com,lesbian8.com,maturetubehere.com,sortporn.com##+js(aopr, Q433) +amateur8.com,bigtitslust.com,ebony8.com,freeporn8.com,lesbian8.com,maturetubehere.com,sortporn.com##+js(set, flashvars.adv_pre_vast, '') +amateur8.com,amateur8.com,bigtitslust.com,ebony8.com,lesbian8.com,sortporn.com###lotal +amateur8.com,bigtitslust.com,ebony8.com,maturetubehere.com,shemalesin.com,sortporn.com###player_add +amateur8.com,bigtitslust.com,freeporn8.com,lesbian8.com,maturetubehere.com,sortporn.com##.footer-margin +amateur8.com,ebony8.com,lesbian8.com,maturetubehere.com,shemalesin.com##.table +ebony8.com,lesbian8.com,maturetubehere.com,shemalesin.com##.sponsor +bigtitslust.com##[href^="https://www.bigtitslust.com/link/"] +lesbian8.com##[href^="https://www.lesbian8.com/link/"] +sortporn.com##[href^="https://www.sortporn.com/link/"] +||lesbian8.com/nb/ +amateur8.com###intt-layer +amateur8.com,bigtitslust.com,freeporn8.com,lesbian8.com,sortporn.com###int-over +bigtitslust.com,freeporn8.com,lesbian8.com,sortporn.com##.mitaru +amateur8.com,bigtitslust.com,freeporn8.com,lesbian8.com,sortporn.com##.calibro +amateur8.com,ebony8.com,maturetubehere.com,shemalesin.com##.top2.pignr +ebony8.com,freeporn8.com,maturetubehere.com,shemalesin.com##.item.pignr +amateur8.com,ebony8.com##li.pignr +/s/s/js/i-top.js?v= +/sum.js?i=*&v= +@@||services.brid.tv/player/$script,domain=babylonbee.com +boobsrealm.com##+js(acs, puShown, /doOpen|popundr/) +||boobsrealm.com/wp-content/uploads/*-banner$image,1p +||bustyporn.com/*.php?src=$frame,3p +boobsrealm.com##iframe[style$="height: 250px;"] +720pstream.*##+js(nowoif) +720pstream.*##+js(nostif, "admc") +*$script,3p,denyallow=chatango.com|cloudfront.net|sharethis.com,domain=720pstream.* +720pstream.*,embedsports.me,embedstream.me,reliabletv.me##.bg-dark.position-absolute +!#if cap_html_filtering +720pstream.*,embedsports.me,embedstream.me,reliabletv.me##^script:has-text(adserverDomain) +embedsports.me,embedstream.me,reliabletv.me##^script:has-text(/break;case|FingerprintJS/) +!#else +720pstream.*,embedsports.me,embedstream.me,reliabletv.me##+js(rmnt, script, adserverDomain) +embedsports.me,embedstream.me,reliabletv.me##+js(rmnt, script, /break;case|FingerprintJS/) +embedsports.me,embedstream.me,reliabletv.me##+js(aeld, message) +!#endif +reliabletv.me##html > iframe[style="display: none;"]:remove() +@@/?scode=*&stream=$xhr,domain=reliabletv.me +! ytanime.tv ads +ytanime.tv##^script:has-text(u_cfg) +ytanime.tv##+js(aopr, u_cfg) +ytanime.tv##+js(aopw, adcashMacros) +*$script,3p,denyallow=arc.io|bootstrapcdn.com|chatango.com|cloudflare.com|cloudflare.net|disqus.com|disquscdn.com|facebook.net|fastly.net|fastlylb.net|fbcdn.net|google.com|googleapis.com|gstatic.com|hwcdn.net|jquery.com|jsdelivr.net|jwplatform.com|jwpcdn.com|recaptcha.net,domain=ytanime.tv +! guardaserie. name popunder +||googletagmanager.com/gtag/js^$redirect=google-analytics_analytics.js,domain=guardaserie.* +guardaserie.*##+js(aeld, , /pop|_blank/) +!#if env_chromium +||doubleclick.net/gampad/ads?*&output=xml_vmap$xhr,redirect=noopvmap-1.0,important,domain=tver.jp +!#endif +unblocked.name##+js(aopr, GetWindowHeight) +unblocked.name##+js(aopr, decodeURIComponent) +unblocked.name##+js(acs, adcashMacros) +unblocked.name##[style*="decoration"]:not([style^="width"]) +unblocked.name##.cborz-bordered +unblocked.name##.durs-bordered +unblocked.name##+js(aost, Math.random, ) +unblocked.name##[id^="cookie"] +||unblocked.name/zpp/*$script,domain=unblocked.name +/hy.js$script,domain=unblocked.name +||icyporno.com/jss/external_pop.js +||icyporno.com/_ad +icyporno.com###parrot +icyporno.com###embed-overlay +tucsitupdate.blogspot.com##+js(acs, addEventListener, google_ad_client) +*$script,3p,denyallow=cloudflare.com|cloudfront.net|fastly.net|googleapis.com|gstatic.com|jwpcdn.com|sharethis.com|sharethis.net,domain=toonanime.* +garrysmods.org##.blocker.jquery-modal +garrysmods.org##body[style="overflow: hidden;"]:style(overflow: auto!important;) +@@||gaming-style.com^$script,1p +cryptojunkie.net##+js(nobab) +*$script,redirect-rule=noopjs,domain=cryptojunkie.net +jagoanssh.com##+js(nosiif, visibility, 1000) +*$image,redirect-rule=1x1.gif,domain=vpnstunnel.com +tyla.com#@#div[class*="margin-Advert"] +tyla.com##div[class$="-margin-Advert"]:style(height:1px !important;width:1px !important;position:absolute !important;left:-3000px !important) +! scnlog.me popups/ads +*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com|recaptcha.net|hcaptcha.com,from=scnlog.me +ancient-origins.*##+js(set, document.bridCanRunAds, true) +! dekki.com ads +dekki.com##div[pb-serve-label*="advert"]:upward(2) +pcso-lottoresults.com##+js(nosiif, visibility, 1000) +bittools.net##+js(acs, onload, fetch) +otomi-games.com##+js(nano-sib) +otomi-games.com##+js(aopr, popns) +otomi-games.com##a[href^="https://t.trcktr.com/"] +@@*$ghide,domain=fastcoin.ga|dropcoins.xyz|faucetbr.tk|is2btc.com +fastcoin.ga##div[style="height: 90px;"] +fastcoin.ga##div[style="width:728px;height:90px;display: inline-block;margin: 0 auto"] +fastcoin.ga##.justify-content-center.col-sm-12.row > .overflow > center > .slide.carousel +fastcoin.ga##center > .justify-content-center.row +is2btc.com##.text-center.col-sm-3 +is2btc.com##div.col-sm-3:first-child +is2btc.com##ins[class][style="display:inline-block;width:728px;height:90px;"] +is2btc.com##div[class][style="width:300px;height:600px;display: inline-block;margin: 0 auto"] +is2btc.com##div[class][style="width:300px;height:250px;display: inline-block;margin: 0 auto"] +is2btc.com##.overlay +is2btc.com##div.col-sm-3:nth-of-type(3) +is2btc.com##.text-center.col-sm-12 +*$script,3p,denyallow=bootstrapcdn.com|cloudflare.net|consensu.org|fontawesome.com|google.com|gstatic.com|hwcdn.net|jquery.com|jsdelivr.net,domain=dropcoins.xyz|fastcoin.ga|faucetbr.tk|is2btc.com|quickclaims.*|swift4claim.com +sunhope.it##+js(nosiif, document.getElementById, 10000) +! propeller crap +||shortlinkto.*^$csp=default-src 'self' *.favicon.cc *.google.com *.gstatic.com *.googleapis.com +fulltube.*##.mvic-btn +||wifi4games.com/sw.js$script,1p +! vibehubs. com antiadb and ads +vibehubs.com##+js(aost, jQuery, ai_adb) +vibehubs.com##[href^="https://www.star-clicks.com/"] +vibehubs.com##.code-block-4.code-block > [href] +afilmyhouse.blogspot.com##+js(nowoif) +crackevil.com##.pop-ad-wrap +pcgamer.com##+js(aopr, _sp_._networkListenerData) +pcgamer.com##.onesignal-customlink-container +pcgamer.com##div[style="position: fixed; bottom: 0px; left: 0px; width: 100%; min-height: 90px; background-color: rgba(245, 245, 245, 0.8); z-index: 9995;"] +pcgamer.com##.listingResult:has(> div.sponsored-post) +@@||bordeaux.futurecdn.net/bordeaux.js$domain=pcgamer.com +||champagne.futurecdn.net/champagne.js +||freyr.futurecdn.net/freyr.js +gaminggorilla.com##+js(aopr, history.replaceState) +! pagalworld.video ad popups +pagalworld.us,pagalworld.video##+js(nowoif) +codesnail.com##+js(nostif, css_class.show) +codesnail.com##.widget_custom_html +! babytorrent. uno popups +babytorrent.*##+js(aopr, decodeURI) +! pirlotvonlinehd. me +rojadirectatvhd.*##+js(aeld, , _0x) +! anti adb + popups +*$script,3p,domain=tanix.net +tvn.pl##+js(json-prune, movie.advertising.ad_server playlist.movie.advertising.ad_server) +@@||cdntvn.pl/*/advert.js$xhr,domain=tvn.pl +tvn.pl##.on-top.ad-ph +@@||hcdn.online^$ghide +imginn.com##+js(acs, document.createElement, unblocker) +||copyrightcontent.org/unblocker/ +||copyrightcontent.org/ub/ub.js +||googlesyndication.com/pagead/js/adsbygoogle.js$script,redirect=noop.js,domain=anidraw.net +fpo.xxx##+js(set, flashvars.adv_pause_html, '') +fpo.xxx##+js(set, flashvars.adv_pre_src, '') +dogecoin.*##+js(aopr, app_vars.force_disable_adblock) +||coinad.*^$3p +gayforfans.com##+js(aeld, getexoloader) +gayforfans.com##+js(rmnt, script, window.open) +! cinecalidad popups +cinecalidad.*##+js(set, playerAdSettings.adLink, '') +cinecalidad.*##+js(set, playerAdSettings.waitTime, 0) +cine-calidad.*##+js(aeld, click, allclick_Public) +cine-calidad.*##+js(aopw, adcashMacros) +cine-calidad.*##+js(ra, href, #opfk) +cine-calidad.*##.links +cambb.xxx##.thumb div.ad:upward(.thumb) +cambb.xxx,nudecams.xxx##+js(no-xhr-if, googlesyndication) +cambb.xxx,nudecams.xxx###adb +||vexfile.com/sw.js$script,1p +||vexfile.com/img/cofksar.png +vexfile.com##.title-box > [href] > [src] +vexfile.com##+js(rpnt, script, var TIMER_MS = 40000;, var TIMER_MS = 0;) +vexfile.com##+js(rpnt, script, get_offers();, get_offers(); setTimeout(function(){ $('.offer-link:first').trigger('click'); }\, 100);) +manga18fx.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +manga18fx.com##+js(nostif, fetch) +manga18fx.com##.kadx +||manga18fx.com/nmme2023/nmme_frend.js +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$script,domain=sudoku-aktuell.de +sudoku-aktuell.de###ajax +sudoku-aktuell.de###billboard +sudoku-aktuell.de###blockdiv +! host2.jptorrent.org timer +jptorrent.org##+js(nano-stb) +! xtube.com PH +xtube.com##.pageBanner +xtube.com##.panelBottomSpace > li.pull-right +xtube.com##.removeAds +xtube.com##body.desktopView.hasFooterAd .mainSection:style(margin-bottom: 0!important;padding-bottom: 0!important;) +##[href^="https://exi8ef83z9.com/"] +hideandseek.world##+js(set, canRunAds, true) +speedostream.*##+js(aost, JSON.parse, computed) +||s.speedostream.*^$script,1p +discovermagazine.com##a > img + div[class]:last-of-type:has-text(Sponsored):upward(div[sizes]) +discovermagazine.com##div[sizes] > span[class]:has-text(Sponsored):upward(div[sizes]) +sportbible.com#@#div[class*="margin-Advert"] +sportbible.com##div[class$="-margin-Advert"]:style(height:1px !important;width:1px !important;position:absolute !important;left:-3000px !important) +||static.adsafeprotected.com/vans-adapter-google-ima.js^$script,redirect=noopjs,domain=sportbible.com +@@||aniview.com/api/adserver/spt?$script,domain=sportbible.com +@@||player.avplayer.com/script/*/avcplayer.js$domain=sportbible.com +infofuge.com##+js(nostif, disableDeveloperTools) +! codingshiksha.com anti adb +codingshiksha.com##+js(nostif, css_class.show) +! graphicux.com anti adb +graphicux.com##+js(nostif, css_class.show) +pengantartidurkuh.blogspot.com##+js(acs, addEventListener, google_ad_client) +*$script,redirect-rule=noopjs,domain=telegraf.rs|telegraf.tv +! vkspeed ads +vkspeed.com##.overlay_main +vkspeed.com##div.jw-cue-type-ads +@@||acilissaati.com^$ghide +acilissaati.com##ins.adsbygoogle +whowantstuffs.blogspot.com##+js(acs, addEventListener, google_ad_client) +linkpoi.me##+js(acs, Math, replace) +linkpoi.me##+js(aopr, app_vars.force_disable_adblock) +linkpoi.me##+js(set, blurred, false) +linkpoi.me##+js(no-fetch-if, manager) +alohatube.xyz##+js(set, popit, false) +solotrend.net##+js(aopr, b2a) +solotrend.net##[href^="https://www.hoster.co.id/"] +solotrend.net###text-9 > .textwidget > p +freevstplugins.net##+js(acs, document.getElementById, adsBlocked) +@@||freevstplugins.net^$ghide +freevstplugins.net##ins.adsbygoogle +freevstplugins.net##.advert-wrap +||freeuseporn.com/backdrop.js +||freeuseporn.com/*.php^$frame +freeuseporn.com##.homed li:has(iframe) +freeuseporn.com##.homed > ul.grid > li:has(script) +freeuseporn.com##canvas +||bestcripto.xyz^$3p +elitepvpers.com##p > [href^="https://playorigin.com/"] +elitepvpers.com##[href="https://skyredirect1.com/"] +elitepvpers.com##a[href*="utm_medium=banner&utm_campaign=epvp"] +elitepvpers.com##div > .page > div > div[style]:has-text(/^Advertise/i) + a +elitepvpers.com##[href="https://www.skycheats.com/"] +elitepvpers.com##[href^="https://funpay.com/"] +||playorigin.com^$3p +||elitepvpers.com/123/oddeven_btc_de_4x.png$image,1p +@@||gats.io^$ghide +gats.io##+js(nosiif, 0x) +||foxhq.com/gabtab.webm$media,redirect=noop-1s.mp4 +foxhq.com##.full-text:has(> h2 > a[href][target="_blank"] img) +foxhq.com##.menu > ul > li:not(:has(> a[href^="https://www.foxhq.com/"])) +foxhq.com##.menu > ul > li:has(> a.sponsor) +foxhq.com##.bar-items-block +foxhq.com##+js(aeld, load, crakPopInParams) +||com/cams-widget-ext/ +*$script,redirect-rule=noopjs,domain=cozinha.minhasdelicias.com +decomaniacos.es##+js(acs, addEventListener, google_ad_client) +todoseriales1.blogspot.com##+js(nosiif, visibility, 1000) +dbsmanga.com,read7deadlysins.com,readdrstone.com,readfairytail.com,readhxh.com,readkaguyasama.com,readkingdom.com,readmha.com,readnaruto.com,readnoblesse.com,readonepiece.com,readopm.com,readsnk.com,readtowerofgod.com,readvinlandsaga.com##.js-a-container +dbsmanga.com,demonslayermanga.com,read7deadlysins.com,readdrstone.com,readfairytail.com,readhxh.com,readjujutsukaisen.com,readkaguyasama.com,readkingdom.com,readmha.com,readnaruto.com,readnoblesse.com,readonepiece.com,readopm.com,readsnk.com,readtowerofgod.com,readvinlandsaga.com##.justify-center > div > b:first-child, .justify-center > div > br:nth-of-type(-n+5), .justify-center > div > center +eturbonews.com##^responseheader(location) +@@||renault-club.cz^$ghide +||fundingchoicesmessages.google.com/i/pub-$script,redirect=noopjs,domain=renault-club.cz +renault-club.cz##ins.adsbygoogle +||googleads.g.doubleclick.net/pagead/$xhr,redirect=nooptext,domain=danshort.com +||evolok.net/*/authorize/*$xhr,redirect=nooptext,domain=nation.africa +||bohubrihi.com^$3p +bhaskar.com##[id^="Ad"]:upward([style]) +divyabhaskar.co.in##[id^="Ad"]:upward([style]) +! propeller crap/ads +livesport24.net##+js(acs, setTimeout, admc) +livesport24.net##+js(aopr, Adcash) +123moviesme.*##+js(aopr, decodeURI) +saveshared.com,simpledownload.net##+js(aopr, String.fromCharCode) +inextmovies.*##+js(nowoif) +||livesport24.net/*.gif$image +hd44.com##+js(nowoif) +*$script,3p,domain=hwnaturkya.com,denyallow=gstatic.com|recaptcha.net +hindilinks4u.*##.mvic-btn +##[href^="//taghaugh.com/"] +||bhplay.me/player/assets/devtools-detector/*$script,1p +||aragontrack.com^$3p +insidertracking.com##+js(acs, jQuery, length) +*$popunder,3p,domain=mp4porn.space +mp4-porn.space##.href_ +playonlinux.com##h1:has-text(Ads) +latesthdmovies.*##+js(acs, eval, replace) +latesthdmovies.*##+js(acs, document.createElement, 'script') +latesthdmovies.*##[href^="https://bit.ly/"] +! news18. com ad leftovers ,video unblockade +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=noopjs,domain=news18.com +-contrib-ads.$script,redirect=noopjs,domain=news18.com +/videojs.ads.$script,redirect=noopjs,domain=news18.com +news18.com##[class="Article_article_mad__1sOil"] +news18.com##[style^="min-height:"]:has(.OUTBRAIN) +news18.com##[style^="min-height :90px"] +! popups +mp4moviez.*##+js(nowoif) +sextvx.com##+js(nostif, window.location.href=link) +m.sextvx.com###home_hor_top_ads +m.sextvx.com###home_hor_bot_ads +! ukrainesmodels. com popups +ukrainesmodels.com##+js(aopw, atOptions) +*$script,3p,domain=ukrainesmodels.com +! onlinepornhub. net popups +*$script,3p,domain=onlinepornhub.net,denyallow=k2s.cc +onlinepornhub.net##.header-area +onlinepornhub.net###footer-widget +downloadcursos.top##+js(acs, eval, replace) +platform.adex.network##+js(no-fetch-if, moonicorn.network) +@@||uploadshare.net^$ghide +uploadshare.net##ins.adsbygoogle +uploadshare.net##.advert-wrapper +/js/static/header/sda/ppsuma*.js$script +/vast.php?*&idzone= +/vast.php?*exo* +xnxx.com##.videoad-title +xnxx.*,xvideos.*##+js(aeld, DOMContentLoaded, /dyn\.ads|loadAdsDelayed/) +xnxx.*,xvideos.*##+js(set, xv.sda.pp.init, noopFunc) +xnxx.*,xvideos.*##+js(set, xv.conf.dyn.ads, undefined) +xnxx.*,xvideos.*##+js(set, xv.conf.dyn.excld, undefined) +xnxx.*,xvideos.*##+js(rmnt, script, html5player.enableVideoPreRollAds) +xnxx.*,xvideos.*##+js(rpnt, script, if (typeof html5player.setupVideo === 'function'), if (false)) +@@||cache.marieclaire.fr/media/videojs/videojs.ads.min.js$script,domain=marieclaire.fr +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=marieclaire.fr +forobasketcatala.com##+js(acs, XMLHttpRequest, onreadystatechange) +itsecuritynews.info##+js(aopr, b2a) +itsecuritynews.info###secondary > .widget_custom_html.widget.widget_text +||pagead2.googlesyndication.com/pagead/$redirect=noopjs,script,domain=overbits.herokuapp.com +cimanow.*,cnvids.com###ad +uvnc.com##+js(acs, addEventListener, nextFunction) +thothub.*,thethothub.com##+js(aost, localStorage, inlineScript) +thothub.*,thethothub.com##.sponsor +thothub.*,thethothub.com##.table +thothub.*,thethothub.com##.prm-wrapper +textovisia.com##+js(aopr, isAdBlockActive) +pewgame.com##+js(aopr, app_vars.force_disable_adblock) +pewgame.com##+js(set, blurred, false) +pewgame.com##section.short .content +pewgame.com##body.captcha-page > .short +||pewgame.com/sw.js^ +||pewgame.com/js/hre.js^ +*$script,redirect-rule=noopjs,domain=pewgame.com +dndsearch.in##+js(acs, $, height) +redhdtube.xxx##+js(aopr, popns) +||redhdtube.xxx/tmp/ +! nudeof.com anti-adb +nudeof.com##div[class^="d-none"] +nudeof.com##.col-xl-4.col-lg-6.col-md-8.col-12.order-xl-1.order-lg-1.order-md-1.order-sm-1.order-1 +nudeof.com##div.happy-section +||rawcdn.githack.com/*/adbdetect.packed.js^$script +@@||skmedix.pl^$ghide +skmedix.pl##+js(trusted-replace-outbound-text, atob, skmedix.com, skmedix.pl) +skmedix.pl##div[align="center"][style="height:250px;"]:has(> ins.adsbygoogle) +kaotic.com##+js(nowoif) +kaotic.com##.video-image > .track_outbound_post:upward(2) +kaotic.com##div.hard-5.col-xs-12.col-sm-3:has(.track_outbound_post) +kaotic.com##.track_outbound_post.grid-item +cargurus.com##[data-cg-ft="sponsored-listing-badge"]:upward(3) +cargurus.com##div:has(> [id^="bannerAdLEADERBOARD_INLINE_"]) +! Anti-adblock https://community.brave.app/t/metro-style-anti-adblock/224281 +@@||metro.style^$ghide +haonguyen.top##+js(set, blurred, false) +haonguyen.top###tp-wait +haonguyen.top##[id^="tp-snp"]:style(display: block !important) +@@||tekfiz.com^$ghide +tekfiz.com##ins.adsbygoogle +files.fm##+js(aopr, canRunAds) +||cdn.flashtalking.com^$media,redirect=noopmp3-0.1s,domain=app.plex.tv +app.plex.tv##+js(json-prune, MediaContainer.Metadata.[].Ad) +!#if env_firefox +imasdk.googleapis.com##+js(no-xhr-if, vod.provider.plex.tv/ad?, war:noop-vast3.xml) +!#else +||vod.provider.plex.tv/ad?$xhr,redirect=noopvast-3.0 +!#endif +watch.plex.tv##+js(no-fetch-if, doubleclick.com, , opaque) +||neonime.*/wp-content/themes/grifus/images/donate/yunita/ +discoveryplus.in##+js(no-fetch-if, ads) +! vipboxtv .se | .sk and sister sites popups +vipboxtv.*##+js(nowoif, //) +vipboxtv.*##+js(aopr, Adcash) +/vppdzdrw.js +nsfwyoutube.com##pp +*$xhr,3p,domain=nsfwyoutube.com +/t.js?i=*&cb=$script,3p +i-bits.io##+js(nano-sib, seconds) +i-bits.io##ins[class][style^="display:inline-block;width:"] +! seriesflv popup +seriesflv.*##.adx > a[href] +omgexploits.com##+js(nosiif, visibility, 1000) +secondlifetranslations.com##.ai-attributes +secondlifetranslations.com##.code-block-17 +studydhaba.com##+js(nostif, ai_) +studydhaba.com##.widget_custom_html +claimbits.io##+js(nano-sib, seconds) +@@||claimbits.io^$ghide +claimbits.io##ins[class][style^="display:inline-block;width:"] +anonymz.com##+js(aost, _pop, _init) +garaveli.de##+js(acs, addEventListener, google_ad_client) +@@||yilmaztv.com^$ghide +||linkvertise.net^$3p +! linkvertise URL manipulation +||publisher.linkvertise.com^$3p,domain=~linkvertise.* +/cdn/linkvertise.js$script,1p +@@||linkvertise.*^$ghide +thumpertalk.com##+js(ra, href|target|data-ipshover-target|data-ipshover|data-autolink|rel, a[href^="https://thumpertalk.com/link/click/"][target="_blank"]) +thumpertalk.com##.ipsType_richText a:style(color:currentcolor !important) +zshort.*##+js(set, blurred, false) +zshort.*###fafsf2:style(display:block !important) +zshort.*###showContainer,.textfk +chapteria.com##+js(acs, document.createElement, ignielAdBlock) +*$script,3p,denyallow=cloudflare.net|gstatic.com|jsdelivr.net,domain=wolfstream.tv +wolfstream.*##+js(nowoif) +eschenker.dbschenker.com##[style*="pointer-events"]:style(pointer-events:auto !important) +||chandrabindu.net^$3p +! cekip. site detection +cekip.site##+js(no-xhr-if, ads) +blog.receivefreesms.co.uk##+js(nostif, show) +||receivefreesms.co.uk^$3p +thecut.com##+js(aeld, /touchstart|mousedown|click/, latest) +unityassetcollection.com##+js(nano-sib, secs) +! freeadultcomix.com ads popups +*$frame,script,3p,domain=freeadultcomix.com +freeadultcomix.com##+js(rmnt, script, window.open) +freeadultcomix.com##+js(nowoif) +ipa-apps.me##+js(nano-sib, timer) +ipa-apps.me##[src="https://ipa-apps.me/Download.GIF"] +novelism.jp##+js(aeld, blur, native code) +alphapolis.co.jp##+js(aeld, blur, event.simulate) +||tinypass.com^$domain=crosswalk.com +||tinypass.com^$domain=christianity.com +manyakan.com##+js(no-xhr-if, adsbygoogle) +crazyblog.in##+js(nosiif, visibility, 1000) +crazyblog.in##+js(aopr, app_vars.force_disable_adblock) +crazyblog.in##+js(nowoif) +crazyblog.in##+js(set, blurred, false) +cblink.crazyblog.in##.banner +crazyblog.in##.floating-banner +crazyblog.in##.box-main > div > p +crazyblog.in,studyuo.com##iframe[width="300"] +crazyblog.in,studyuo.com##div[id*="_"][style^="min-width"] +*$script,3p,denyallow=ampproject.org|google.com|gstatic.com|recaptcha.net,domain=crazyblog.in +cutearn.net##+js(aopr, app_vars.force_disable_adblock) +cutearn.net##+js(aopr, open) +cutearn.net##+js(set, blurred, false) +cutearn.net##section.short +cutearn.net##[src^="https://i.ibb.co/"] +porntn.com##+js(set, flashvars.protect_block, '') +porntn.com#@#.banner_ad +porntn.com##^script[data-cfasync]:has-text(0x) +porntn.com##+js(acs, decodeURIComponent, 0x) +gdr-online.com##+js(set, isAdsLoaded, true) +gdr-online.com##.adv_barra_alto +gadgetguideonline.com##+js(aost, String.prototype.charCodeAt, ai_) +gadgetguideonline.com##.ai-track +@@||imsolo.pro^$ghide +imsolo.pro##.ads-main +imsolo.pro##.center.spacing.text +mmm.dk##+js(set, adblockerAlert, noopFunc) +rshrt.com##+js(aopr, app_vars.force_disable_adblock) +rshrt.com##+js(set, blurred, false) +rshrt.com###headlineatas +samfw.com##[href^="https://samfw.com/clicks/"] +samfw.com##[href^="https://samfw.com/link/"] +||i.imgur.com^$domain=samfw.com +samfw.com##+js(acs, jQuery, banner) +lewdstars.com##.ads-muted-control +lewdstars.com##.widget_custom_html +||biguz.net/vast$xhr,1p +||biguz.net/static/vast$xhr,1p +! extratorrents. it popups +extratorrents.*##+js(aopw, adcashMacros) +pythonmatplotlibtips.blogspot.com##+js(acs, addEventListener, nextFunction) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=10.com.au|10play.com.au +10.com.au,10play.com.au##.content__ad__content +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=10.com.au|10play.com.au +@@||global.ssl.fastly.net^$domain=10.com.au|10play.com.au +@@||imasdk.googleapis.com/js/sdkloader/ima3_dai.js$script,domain=10.com.au|10play.com.au +@@||pubads.g.doubleclick.net/ondemand/hls/content/*/streams$xhr,domain=10.com.au|10play.com.au +10.com.au,10play.com.au##+js(m3u-prune, /^https?:\/\/redirector\.googlevideo\.com.*/, /.*m3u8/) +10.com.au,10play.com.au##+js(json-prune, cuepoints, cuepoints.[].start cuepoints.[].end cuepoints.[].start_float cuepoints.[].end_float) +@@||pubads.g.doubleclick.net/ondemand/dash/content/*/streams$xhr,domain=10.com.au|10play.com.au +10.com.au,10play.com.au##+js(xml-prune, Period[id*="-roll-"][id*="-ad-"], , pubads.g.doubleclick.net/ondemand) +10.com.au##+js(no-fetch-if, /ads/banner) +@@||10.com.au^$ghide +@@||analytics.tiktok.com/i18n/pixel/events.js$xhr,domain=10.com.au +||sered.net^$3p +||grab.tc^$3p +||ad-doge.com^$3p +||webmonetiser.com^$3p +! sabishare. com ads +sabishare.com##.cmp-roll +freeiphone.fr,safemodapk.com,threezly.com,truyenbanquyen.com,veganinja.hu##+js(acs, decodeURIComponent, ai_) +ibooks.to##+js(acs, String.fromCharCode, ai_) +! muztext.com auto redirect +muztext.com##+js(nostif, reachGoal) +naijaray.com.ng##+js(aost, Math.floor, ) +naijaray.com.ng##[href^="//ashoupsu.com/"] +hotcleaner.com##+js(aopr, Element.prototype.attachShadow) +hotcleaner.com##div[class]:matches-css-before(content:/Advertisements/) +pornohans.com###wrapper_content > aside[id] +pornohans.com##.spc_height_60 +pornohans.com##.vjs-overlay +pornohans.com###wa_10 +pornohans.com,pornoente.tv,nursexfilme.com,milffabrik.com,pornohirsch.net,pornozebra.com,xhamster-sexvideos.com,pornoschlange.com,xhamsterdeutsch.*,hdpornos.net,gutesexfilme.com,pornotom.com##+js(nostif, Adb) +@@*$ghide,domain=pornohans.com|pornoente.tv|nursexfilme.com|milffabrik.com|pornohirsch.net|pornozebra.com|xhamster-sexvideos.com|pornoschlange.com|xhamsterdeutsch.*|hdpornos.net|gutesexfilme.com|pornotom.com|beeg-pornos.com|hd-sexfilme.com|meinyouporn.com|tube8-pornos.com|momo-net.com +||xhamsterdeutsch.*^*.mp4|$media,1p +xhamster-sexvideos.com##.vjs-overlay +reifporn.de##+js(aeld, getexoloader) +||german-porno-deutsch.info/*.gif$image +german-porno-deutsch.info##[href="/acamateure.html"] +@@||trafficfabrik.com/mine.js$script,domain=movie.momo-net.com +momo-net.com##+js(aeld, contextmenu) +momo-net.com##+js(aopr, document.body.appendChild) +movie.momo-net.com##iframe:upward([style*="visibility"]) +deutschsex.mobi,1milf.com##+js(aost, Math.floor, randStr) +1milf.com##.desktop.aside_media.aside +1milf.com##.desctop.spot +deutschsex.mobi##.default__interest-block +hardwarezone.com.sg##+js(aopr, SPHMoverlay) +hardwarezone.com.sg##.ad +hardwarezone.com.sg###sponsored-links-alt +hardwarezone.com.sg##.hwz-ad-outstream +imagecolorpicker.com##[class^="leftAds-"] +imagecolorpicker.com##[class^="rightAds-"] +! redwap.me,redwap2.com,redwap3.com occasional popup +/realize.js$domain=redwap.me|redwap2.com|redwap3.com +! sextgem.com ads +sextgem.com##div[id][style*="z-index: 999999999;"] +desitab69.sextgem.com##+js(nowoif) +xxxtime.sextgem.com##^script[language="javascript"]:has-text(open) +||xtgem.com/images/influenza/ +||xtgem.com/images/xtvid/ +||sextgem.com^$removeparam=id +*$popup,domain=sextgem.com +rethmic.com##+js(nano-sib, _0x) +! influencersgonewild.com popunder +influencersgonewild.com##+js(aost, Math.round, onload) +! xxxwebdlxxx.top anti-adb, popup +xxxwebdlxxx.top##a[href^="https://hotdating-near1.com/"] +*$frame,script,3p,domain=xxxwebdlxxx.top +courseboat.com##+js(nostif, brave_load_popup) +fantasyfootballgeek.co.uk##+js(acs, String.fromCharCode, ai_) +gledajcrtace.xyz###header-wrap-reklama +gledajcrtace.xyz###HTML8 +javquick.com##+js(nowoif) +lazytranslations.com##+js(aost, String.prototype.charCodeAt, ai_) +lazytranslations.com##.ad-after-postend +lazytranslations.com##.lazyt-adlabel +||interserver.net^$3p +game3rb.com##+js(aeld, DOMContentLoaded, 0x) +game3rb.com##+js(no-fetch-if, method:HEAD) +||game3rb.com/sw.js^$script,1p +game3rb.com###post-footer:has([href*="vpnatlas.com"]) +##a[href*=".click/?z="][href*="&n"] +*$all,domain=ytrqcxat.click +*$script,3p,denyallow=bootstrapcdn.com|cloudflare.com|cloudfront.net|disqus.com|disquscdn.com|fastlylb.net|googleapis.com|wp.com,domain=game3rb.com +||googletagmanager.com/gtag/js$script,redirect=noopjs,domain=rotana.net +getpaste.link##+js(set, isAdBlockActive, false) +! popups 4movierulz1. me / .co +4movierulz1.*,filmygod6.*##+js(nowoif) +4movierulz1.*##[href^="https://api.whatsapp.com/send"] +kitabmarkaz.xyz##+js(aopr, __Y) +@@||flipboard.com/webu/*-contrib-ads*.bundle.js$script,1p +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=flipboard.com +! croclix.me anti-adb +@@/viewad.$css,script,domain=short.croclix.me +short.croclix.me##.leaderboard +short.croclix.me##.banner-container +||offers4all.net^$frame,3p +gay4porn.com##+js(set, flashvars.adv_start_html, '') +gay4porn.com##.exbanner +gay4porn.com###int-over:remove() +gay4porn.com###intt-layer:remove() +/s/s/sum.php +charbelnemnom.com##+js(nostif, ai) +@@||charbelnemnom.com^$ghide +charbelnemnom.com##ins.adsbygoogle +charbelnemnom.com##.ezoic-ad +charbelnemnom.com###custom_html-16 +! mizugigurabia.com anti-adb +mizugigurabia.com##+js(acs, document.addEventListener, google_ad_client) +||joinads.me^$3p +||affilixxl.de^$3p +lcpdfr.com##div.ipsMargin_bottom.ipsAreaBackground.ipsPadding\:half +lcpdfr.com##.adSpacing +rodude.com##+js(acs, onload) +! hds-streaming. tv / site popups +hds-streaming.*###fakeplayer +hds-streaming.*##.asgdc +#@#.display_ad +bleepingcomputer.com###bc-home-news-main-wrap > li:has(> a[href$="/deals/"]) +bleepingcomputer.com##a[rel="sponsored noopener"] +@@||getpaidstock.com^$ghide +getpaidstock.com##ins.adsbygoogle +||antiblock.b-cdn.net/banner_ad.png$image,redirect=1x1.gif,domain=getpaidstock.com +*$frame,redirect-rule=noopframe,domain=getpaidstock.com +myabandonware.com##+js(set, canRunAds, true) +myabandonware.com##+js(nostif, AdBlock) +myabandonware.com##[href^="/visual/r-"] +myabandonware.com##.items > .item[id]:not(.itemListGame) +myabandonware.com##div[id*="myabandonware_leaderboard_btf_"]:upward(div[id]) +myabandonware.com##div[id*="myabandonware_medrec_right_"]:upward(div[id]) +myabandonware.com##[id*="myabandonware_"][id$="tf"] +myabandonware.com##a[href^="/visual/"]:upward(.menu > div[id]) +myabandonware.com##div:matches-css-after(content:/Ads/) +myabandonware.com##[onclick*="aff"] +myabandonware.com##style:has-text(justify-content):remove() +myabandonware.com##[src*="banner"] +myabandonware.com##a[target="_top"]:has(img) +myabandonware.com##a[href*="jeroud.com"]:has(img) +gayck.com##+js(set, flashvars.adv_pause_html, '') +! romhustler.org timer +romhustler.org##+js(nano-sib, timer.remove) +romhustler.org##.tower_ad_desktop +@@||filezipa.com^$ghide +filezipa.com##ins.adsbygoogle +filezipa.com##+js(aopr, app_vars.force_disable_adblock) +filezipa.com##+js(set, blurred, false) +filezipa.com##+js(aopr, open) +mrunblock.*##+js(acs, decodeURIComponent, atob) +mrunblock.*###lb-banner +mrunblock.*##[id^="cookieConsent"]:upward(1) +mrunblock.*##.alert-dismissible +addonbiz.com##+js(acs, addEventListener, nextFunction) +b2bhint.com##+js(aopr, google_jobrunner) +b2bhint.com##+js(aopr, popupBlocker) +b2bhint.com##[id^="ad--"] +@@||alrakoba.net^$ghide +alrakoba.net##.adsbygoogle:style(position:absolute !important;left:-3000px !important) +alrakoba.net##.stream-item-widget +akwam.*##+js(acs, addEventListener, blocker) +akwam.*,khsm.io##+js(aopw, afScript) +akwam.*##+js(nosiif, visibility, 1000) +akwam.*##.ads +netpornix.*##div#responseads:style(display:block !important) +netpornix.*###videoadsid +netpornix.*##[href^="https://bit.ly/"] +netpornix.*##.videoads +netxwatch.*##+js(aopr, __Y) +iqiyi.com##+js(set, Object.prototype.parseXML, noopFunc) +iqiyi.com##+js(set, Object.prototype.blackscreenDuration, 1) +iqiyi.com##.black-screen[data-cupid="adblock-blackscreen"] +m.iqiyi.com##+js(set, Object.prototype.adPlayerId, '') +iqiyi.com##.iqp-player > iqpdiv[data-cupid="container"] > div[data-adzone][templatetype="common_pause"] +iqiyi.com##+js(rpnt, script, function defaultTrace, `(()=>{let e=!1;window.qyMesh=window.qyMesh||{},window.qyMesh=new Proxy(window.qyMesh,{get:function(a,t,d){return!e&&a?.preload?.Page_recommend_1?.response?.items&&(a.preload.Page_recommend_1.response.items.forEach((e=>{e.extData?.dataExtAd&&(e.extData.dataExtAd={}),e.video&&e.video.forEach((e=>{e.adverts&&(e.adverts=[]),e.data&&(e.data=e.data.filter((e=>!e.ad)))}))})),e=!0),Reflect.get(a,t,d)}})})(); function defaultTrace`, sedCount, 1) +www.iqiyi.com##+js(rpnt, script, function defaultTrace, `!function(){const e={apply:(e,t,o)=>{const i=o[1];if(!i||"object"!=typeof i.QiyiPlayerProphetData)return Reflect.apply(e,t,o)}};window.Object.defineProperties=new Proxy(window.Object.defineProperties,e)}(); function defaultTrace`, sedCount, 1) +www.iqiyi.com,m.iqiyi.com##+js(rpnt, script, function defaultTrace, `!function(){const s={apply:(c,e,n)=>(n[0]?.adSlots&&(n[0].adSlots=[]),n[1]?.success&&(n[1].success=new Proxy(n[1].success,s)),Reflect.apply(c,e,n))};window.Object.assign=new Proxy(window.Object.assign,s)}(); function defaultTrace`, sedCount, 1) +@@||cupid.iqiyi.com/mixer$script,domain=iqiyi.com +@@||simplebits.io^$ghide +@@||simplebits.io/$script,1p +*$script,redirect-rule=noopjs,domain=simplebits.io +*$xhr,redirect-rule=nooptext,domain=simplebits.io +simplebits.io##.placeholder +simplebits.io##div[class][style="min-height: 250px; height: 250px;"] +simplebits.io##div[class][style="min-height: 90px;"] +simplebits.io##div[class][style="min-height: 60px;"] +@@||satoshilabs.net^$ghide +@@||satoshilabs.net/$script,1p +||satoshilabs.net/sh/ads/$frame +||simplebits.io/sh/ads/ +||simplebits.io/ads/ +simplebits.io##+js(no-xhr-if, /ads) +simplebits.io##+js(no-fetch-if, /ads) +simplebits.io##+js(nostif, , 3000) +hayamimi-gunpla.com##+js(acs, document.addEventListener, google_ad_client) +||prairiemountainmedia.com^$3p +||dailycamera.com^$3p +neos-easygames.com,synk-casualgames.com#@##ad_block +hitproversion.com##.onp-sl-content:style(display:block !important) +hitproversion.com##.onp-sl-social-locker +@@||allsmo.com^$ghide +allsmo.com##[id^="ezoic-pub-ad-placeholder"] +*$xhr,redirect-rule=nooptext,domain=costumbresmexico.com +shemalestube.com##+js(nowoif) +shemalestube.com##.cover:style(background-image: none!important;) +||shemalestube.com/templates/dark/ads/ +||shemalestube.com/templates/dark/js/pop/ +gamingbible.co.uk#@#div[class*="margin-Advert"] +gamingbible.co.uk##div[class$="-margin-Advert"]:style(height:1px !important;width:1px !important;position:absolute !important;left:-3000px !important) +gamingbible.co.uk##.css-1dgm0zi-Advert +||adsafeprotected.com/$script,redirect=noopjs,domain=gamingbible.co.uk +! hxfile. co popups +hxfile.co##+js(nowoif) +hxfile.co##a.btn-block +||storage.de.cloud.ovh.net^*/sarsor/avikingdynamic.js$script,3p +go4kora.com###id-custom_banner +! blog.40ch.net anti-adb +blog.40ch.net##+js(acs, document.addEventListener, nextFunction) +pornissimo.org##+js(set, flashvars.protect_block, '') +pornissimo.org##.table +pornissimo.org##.fp-brand +edn.com###custom_html-3 +edn.com###custom_html-5 +edn.com###footerAdWrap +||omeda.com^$3p +sexywomeninlingerie.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +||wafflegirl.com/galleries/banner/$3p +sexywomeninlingerie.com##[href^="http://join.wearehairy.com/track/"] +baikin.net##+js(aopr, google_jobrunner) +/wp-content/plugins/simple-adblock-notice-pro/*$script,css +comixzilla.com##+js(acs, document.createElement, 'script') +unsurcoenlasombra.com##+js(aopr, google_jobrunner) +watchmovierulz.*##+js(nowoif) +! streamsb_galaxy +anigogo.net,fbgo.*,javplaya.com,sbbrisk.com,sbchill.com,sbchip.*,sbflix.*,sbplay.*,sbplay2.*,sbplay3.*,sbrity.com,sbrulz.*,streamsb.*##+js(aopr, __Y) +anigogo.net,fbgo.*,kinoking.cc,sbbrisk.com,sbchill.com,sbchip.*,sbflix.*,sbplay.*,sbplay2.*,sbplay3.*,sbrity.com,sbrulz.*,streamsb.*##+js(aopr, mm) +streamsb.*##+js(nowoif) +streamsb.*##+js(aopr, DoodPop) +streamsb.*##body > div[style*="z-index:"] +sbplay.*##+js(acs, document.addEventListener, offsetHeight) +sbplay.*##+js(set, console.clear, noopFunc) +sbplay.*##^script:has-text(debugger) +sbot.cf##[id^="parentframe"] +sbot.cf##+js(window.open-defuser) +sharetext.me##+js(set, isAdBlockActive, false) +theblissempire.com##+js(aopr, app_vars.force_disable_adblock) +theblissempire.com##+js(set, blurred, false) +theblissempire.com##+js(aopr, open) +||max-adserv.com^$3p +! newsinlevels.com/videosinlevels.com anti-adb +newsinlevels.com,videosinlevels.com##+js(set, sgpbCanRunAds, true) +m2list.com##+js(nostif, debugger) +m2list.com##+js(aopr, Adcash) +*$script,3p,domain=m2list.com,denyallow=ajax.googleapis.com|cdnjs.cloudflare.com +@@||posttrack.com/$xhr,1p +freejav.guru##+js(nostif, disableDeveloperTools) +freejav.guru##+js(acs, eval, replace) +! sexuhot.com popup, redirect on back, ads +sexuhot.com##+js(aopw, atOptions) +sexuhot.com##+js(aopr, history.replaceState) +sexuhot.com###overlay > a +sexuhot.com###abox +||sexufly.com^$frame,domain=sexuhot.com +! pussy.org popup +pussy.org##+js(nowoif) +||pussy.org^$frame,1p +! analsexstars.com popup +analsexstars.com##+js(nowoif) +*$xhr,redirect-rule=nooptext,domain=chiemgau24.de|ovb-online.de|rosenheim24.de|bgland24.de|innsalzach24.de|mangfall24.de|wasserburg24.de +@@*$ghide,domain=chiemgau24.de|ovb-online.de|rosenheim24.de|bgland24.de|innsalzach24.de|mangfall24.de|wasserburg24.de +!pc-offer$script,domain=bgland24.de|chiemgau24.de|innsalzach24.de|mangfall24.de|rosenheim24.de|wasserburg24.de +bgland24.de,chiemgau24.de,innsalzach24.de,mangfall24.de,rosenheim24.de,wasserburg24.de##.wv_story_el_cleverPushWidget +bgland24.de,chiemgau24.de,innsalzach24.de,mangfall24.de,rosenheim24.de,wasserburg24.de##.id-Recommendation +bgland24.de,chiemgau24.de,innsalzach24.de,mangfall24.de,rosenheim24.de,wasserburg24.de##.wv_story_el_pinpoll +||2target.net^$3p +*$script,3p,denyallow=facebook.net|fbcdn.net,domain=sukidesuost.info +sukidesuost.info###custom_html-23 +||iclickcdn.com^$script,redirect=noopjs,domain=gifans.com +gifans.com##+js(nosiif, visibility, 1000) +gifans.com##+js(acs, document.cookie, :visible) +gifans.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) +gifans.com##div[id^="wpsafe-wait"] +berklee.edu##+js(aeld, scroll, undefined) +electricaltechnology.org###stream-item-widget-7 +electricaltechnology.org###stream-item-widget-2 +! uniquetutorialsnew.blogspot.com anti-adb +@@||uniquetutorialsnew.blogspot.com^$ghide +uniquetutorialsnew.blogspot.com##ins.adsbygoogle +foreca.com##main > div > div > div[class]:matches-css(width:350px) +!#if env_mobile +foreca.com##main > div > div > div > div[class]:matches-css(min-height:326px) +foreca.com##main > div > div > div > div > div[class]:matches-css(min-height:326px) +!#endif +/wp-content/plugins/noti-blocker/*$script +filmyhitlink.xyz##+js(acs, mMcreateCookie) +filmyhitlink.xyz##+js(nano-sib, downloadButton) +filmyhitlink.xyz###sidebar-primary > .widget_custom_html +filmyhitlink.xyz###sidebar-secondary > .widget_custom_html +javtsunami.com##+js(aeld, getexoloader) +||javtsunami.com/crimson-unit-$script +descargaspcpro.net##+js(noeval-if, ads) +descargaspcpro.net###AdSense1 +descargaspcpro.net###HTML90 +descargaspcpro.net##.stickywrap +finanzas-vida.com##[href="https://zplayer.live/"] +finanzas-vida.com##+js(set, blurred, false) +! mettablog.com anti-adb + popups +mettablog.com##+js(aost, String.prototype.charCodeAt, ai_) +adurly.cc##+js(aopr, app_vars.force_disable_adblock) +adurly.cc##+js(set, blurred, false) +! ofilmywap. uno / kannadamasti. cc, buyjiocoin. club, filmygod13.in popup +filmywap.*,ofilmywap.*,kannadamasti.*,buyjiocoin.*,filmygod13.*##+js(nowoif) +! verfastdownload .pw popups +veryfastdownload.pw##+js(aopr, SmartPopunder.make) +! ucanwatch. me ads +ucanwatch.*##+js(nowoif) +! sharegdrive.co popups +sharegdrive.com##+js(acs, adcashMacros) +! torrentdownloads.uproxy2.biz popups +uproxy2.biz##+js(aopr, GetWindowHeight) +||uproxy2.biz/zpp/*$script,domain=uproxy2.biz +||uproxy2.biz/helper-js/*$script,1p +uproxy2.biz##+js(aopr, decodeURIComponent) +/hy.js$script,domain=uproxy2.biz +uproxy2.biz##+js(acs, adcashMacros) +uproxy2.*##+js(aost, Math.floor, ) +*$script,3p,domain=uproxy2.biz +! 18tube. sex ads +18tube.sex##+js(aeld, getexoloader) +18tube.sex##.opt +liveschauen.com##.banner +liveschauen.com###werbung +@@||therokuchannel.roku.com/$xhr,1p +nulljungle.com##+js(nostif, innerHTML) +naturalnews.com##.Header +||naturalnews.com^$script +@@||naturalnews.com/*=$script,1p +@@||naturalnews.com/wp-content/themes/$script,1p +civilenggforall.com##+js(aopr, blockAdBlock) +*$script,3p,denyallow=chatango.com|cloudflare.net|cloudfront.net|disqus.com|disquscdn.com|fastlylb.net,domain=rawkuma.com +rawkuma.com##+js(aeld, readystatechange, document.removeEventListener) +.com/btag.min.js|$3p +youwatch.*##[href^="https://minilink.id/"] +youwatch.*##.sgpb-popup-dialog-main-div-wrapper +youwatch.*##.sgpb-popup-overlay +youwatch.*###custom_html-65 +@@||vidomo.xyz^$script,1p +||vidomo.xyz/assets/js/devtools-detector.js$important +! fxstreet. com/jp/etc. PH +fxstreet.*##.fxs_leaderboard +forogore.com##+js(acs, document.addEventListener, google_ad_client) +waploaded.com,meetdownload.com##.advert +waploaded.com,meetdownload.com##a[href*="got-to-be.net"] +waploaded.com,meetdownload.com##a[href^="https://aeroplaneversion.com/"] +waploaded.com,meetdownload.com##a[href^="https://suftanzine.com/"] +waploaded.com##.ad +waploaded.*##+js(aopr, exoJsPop101) +waploaded.*##+js(ra, href, .button[href^="javascript"]) +meetdownload.com#@#.ad-slot:not(.adsbox):not(.adsbygoogle) +@@||motoroids.com^$ghide +motoroids.com##ins.adsbygoogle +motoroids.com##div.AM_SINGLE_STORY_BETWEEN_CONTENT_SECOND_PARAGRAPH_RESPONSIVE +nudeselfiespics.com##+js(noeval-if, popUnderStage) +! zlut.com ads, popup +||zlut.com/_ad$frame +||zlut.com/jss/external_pop.js +zlut.com##.add-bottom +xproxxx.org###custom_html-3 +xproxxx.org###custom_html-5 +! nyaa.unblocked.id + unblocked.id ad +unblocked.id##+js(rmnt, script, push) +unblocked.id,uproxy2.*,unblock2.*##[href^="https://vpnk.net/"] +unblocked.id,uproxy2.*,unblock2.*##[onclick*="vpnk.net/?vpn"] +||searchtv.net/vpn-$doc +||vpnk.net/?vpn$doc +codingnepalweb.com##+js(rpnt, script, (isAdblock), (false)) +codingnepalweb.com##+js(nano-stb, animation) +||juicebarads.com^$3p +drop.download##+js(acs, document.addEventListener, google_ad_client) +drop.download##.row > .col-md-8 +flightsim.to##+js(acs, fetch, status) +flightsim.to##+js(acs, document.getElementById, adsblock) +flightsim.to##+js(nano-sib, timer, 1000, 0.001) +flightsim.to##+js(no-xhr-if, pub.network) +@@||flightsim.to^$script,1p +@@||pub.network/flightsim-to/pubfig.min.js$script,xhr,domain=flightsim.to +@@||flightsim.to^$ghide +flightsim.to##.flightsim-main > div[style="margin:0 auto; position:relative; z-index:10"] > div[align="center"]:empty +moviemakeronline.com##+js(nosiif, adsbygoogle) +moviemakeronline.com##ins.adsbygoogle:upward(1) +cinemakottaga.*##+js(no-xhr-if, googlesyndication) +cinemakottaga.*##+js(aeld, DOMContentLoaded, adsBlocked) +cinemakottaga.*##+js(acs, document.addEventListener, adsbygoogle) +*$image,redirect-rule=1x1.gif,domain=cinemakottaga.* +cinemakottaga.*##+js(nano-sib, timePassed) +*$3p,script,denyallow=arc.io|cloudflare.com|hcaptcha.com|google.com|gstatic.com|recaptcha.net,domain=cinemakottaga.* +mysql2dumpcrypt.de,xn--stream-oe64e.*###abm +webdeyazilim.com##+js(aost, String.prototype.charCodeAt, ai_) +||api.vuukle.com/api/v1/getModal$xhr,3p +devotag.com##+js(acs, document.addEventListener, nextFunction) +! openloading.com popup fakeplayer +openloading.com##+js(ra, href, #clickfakeplayer) +openloading.com###clickfakeplayer +codare.fun##+js(acs, document.addEventListener, google_ad_client) +@@||explosivemenu.com^$ghide +explosivemenu.com##ins.adsbygoogle +||explosivemenu.com^$image,redirect-rule=1x1.gif,1p +@@||code2care.org^$ghide +code2care.org##ins.adsbygoogle +code2care.org##.right-content +allwpworld.com##+js(nano-sib, timeleft) +allwpworld.com##+js(ra, disabled, input[id="button1"][class="btn btn-primary"][disabled]) +wgod.co##+js(acs, $, test) +@@/wp-content/plugins/dh-new-anti-adblocker$script,1p +||javhd.icu/ads/ +lavanguardia.com##+js(aeld, error) +imeteo.sk##+js(aeld, scroll, detect) +imeteo.sk##.page-container__ad-container +sixsave.com##+js(no-fetch-if, method:HEAD) +freebulksmsonline.com##+js(aost, String.prototype.charCodeAt, ai_) +@@||univers-simu.com^$ghide +univers-simu.com##.adsbygoogle:style(max-height: 1px !important;) +univers-simu.com###tie-block_702 +univers-simu.com##.\35 f283c41912bf.widget.container-wrapper +univers-simu.com###stream-item-widget-6 +univers-simu.com###stream-item-widget-3 +kelasexcel.id##div.sacret:style(display:block !important) +kelasexcel.id##.sacret-share +tutflix.org##+js(acs, $, test) +@@||tutflix.org^$ghide +pussy-hub.com##+js(aeld, click, popundr) +||pussy-hub.com/*/stat1_$script,1p +@@||themosvagas.com.br^$ghide +themosvagas.com.br##ins.adsbygoogle +themosvagas.com.br##.ads300x600 +youtubemp3donusturucu.net##+js(aeld, click, t(a)) +novelmultiverse.com##+js(nostif, disableDeveloperTools) +maxstream.video##+js(nostif, alert) +maxstream.video##+js(nano-stb, .fadeIn(), 3000) +maxstream.video##+js(nowoif) +@@*$script,1p,domain=maxstream.video +@@||linkonclick.com/*/display.php$script,frame,domain=maxstream.video +@@||ads.host-cdn.net/*.js|$script,domain=maxstream.video|uprot.net +@@/^https:\/\/ads\.host-cdn\.net\/\w+\.js\?\w+$/$script,3p,to=ads.host-cdn.net,from=maxstream.video|uprot.net +host-cdn.net^$image,redirect-rule=32x32.png,domain=maxstream.video +maxstream.video###adsads:style(height: 9px !important;) +maxstream.video##h1:has-text(/adblock|supporter/) +/*.php$doc,domain=maxstream.video +@@||uprot.net^$ghide +uprot.net##*[style="display:none;"]:style(display:block !important) +@@||ads.host-cdn.net/ads2.js$script,domain=maxstream.video|uprot.net +videoseyred.in##+js(nowoif) +!#if !cap_html_filtering +listendata.com##+js(rmnt, script, AdBlocker) +!#else +listendata.com##^script:has-text(AdBlocker) +!#endif +aimasummd.blog.fc2.com,dokuo666.blog98.fc2.com,metamani.blog15.fc2.com,newssokuhou666.blog.fc2.com,touhoudougamatome.blog.fc2.com,xn--k9ja7fb0161b5jtgfm.jp,youkaiwatch2345.blog.fc2.com##+js(acs, document.addEventListener, google_ad_client) +newssokuhou666.blog.fc2.com,youkaiwatch2345.blog.fc2.com##^script:has-text(google_ad_client) +ygoprodeck.com###deck-content-ad +ygoprodeck.com##[id^="frontpage-ad-"] +ygoprodeck.com##[id^="front-ad-"] +archpaper.com##+js(acs, fetch, result) +! tripadvisor.jp, tripadvisor.com etc. placeholder +tripadvisor.*###component_2 > div[class^="_"]:has(> div > div[class^="iab_"][style="min-height:90px"]) +tripadvisor.*##.ui_container > div[class] > div[class^="_"]:has(> .iab_medRec:only-child) +nation.africa##+js(aopr, evolokParams.adblock) +techpowerup.com##body:not([data-template]) a[rel="nofollow"][href^="/reviyuu/b784/"]:style(pointer-events: none !important;) +techpowerup.com##body:not([data-template]) a[rel*="nofollow"][target="_blank"][href$="er/images/gmchjhj.png"] +||www.techpowerup.com/reviyuu/$image,1p +techpowerup.com##div.s--item:has(a[href^="/reviyuu/"]) +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$xhr,redirect-rule,domain=carousell.* +unblocknow.*##.adstg +unblocknow.*##.alert +unblocknow.*###cookieConsentVPN666 +veoplanet.com##+js(ra, type, [src*="SPOT"], asap stay) +veoplanet.com##^source[src*="SPOT"] +link.asiaon.top##+js(aopr, app_vars.force_disable_adblock) +link.asiaon.top##+js(set, blurred, false) +asiaon.*,asiaontop.com##+js(no-xhr-if, googlesyndication, length:10) +asiaon.*,asiaontop.com##+js(no-xhr-if, doubleclick) +/aot-content/assets/*/cb-ads/*$domain=asiaon.top|asiaontop.com +/\/aot-content\/modules\/[^\.]{40,}\.js\b/$script,1p,domain=asiaon.*|asiaontop.com +@@/aot-content/modules/*/assests$script,1p,domain=asiaon.*|asiaontop.com +asiaon.top,asiaontop.com##+js(no-fetch-if, method:HEAD) +*$script,redirect-rule=noopjs,3p,domain=asiaon.top|asiaontop.com +asiaon.top,asiaontop.com##a[href^="https://theporndude.com/"] +asiaon.top,asiaontop.com##+js(href-sanitizer, a[href^="https://link.asiaon.top/full?api="][href*="&url=aHR0c"], ?url -base64) +||googlesyndication.com^$image,redirect=1x1.gif,domain=asiaontop.com|asiaon.top|asiaon.* +||api.asiaon.top/index.php?graphql&operationName=GetAllSidebars +||api.asiaon.top/index.php?graphql&operationName=GetHeaderAdScripts +||api.asiaon.top/index.php?graphql&operationName=GetModulaGalleryAds +||api.asiaon.top/index.php?graphql&operationName=GetContentWidgets +asiaon.*,asiaontop.com##+js(json-edit-fetch-response, .pageProps.__APOLLO_STATE__.*[?.__typename=="AotSidebar"], propsToMatch, /_next/data) +asiaon.*,asiaontop.com##+js(json-prune-fetch-response, pageProps.__TEMPLATE_QUERY_DATA__.aotFooterWidgets, , propsToMatch, /_next/data) +asiaon.*,asiaontop.com##+js(json-prune, props.pageProps.data.aotHomepageTopBar props.pageProps.data.aotHomepageTopBar props.pageProps.data.aotHeaderAdScripts props.pageProps.data.aotFooterWidgets) +bestgamehack.top##+js(aopr, open) +mangalek.com##+js(acs, String.fromCharCode, decodeURIComponent) +*$script,3p,denyallow=cloudflare.com|mangarc.com,domain=mangalek.com +trzpro.com##+js(nano-sib, counter--) +! silenthub. net anti adb +@@||silenthub.net^$ghide +*$script,3p,denyallow=cloudflare.net|jsdelivr.net|sc.gl|unpkg.com,domain=hitprn.com +openculture.com##+js(nosiif, daadb) +openculture.com##.no-framearound_ad_in_post +! celebwhore.com,sexcams-24.com ads,popunder +celebwhore.com,sexcams-24.com##+js(set, flashvars.popunder_url, '') +sexcams-24.com##+js(set, flashvars.protect_block, '') +celebwhore.com,sexcams-24.com##.table +||wmpics.pics^$domain=sexcams-24.com +zedge.net##+js(nano-sib, l-1) +zetporn.com##+js(aopr, ExoLoader.serve) +zetporn.com##+js(acs, addEventListener, -0x) +zetporn.com##.aside-itempage-col +/\.com\/[A-Za-z]{9,}\/[A-Za-z]{9,}\.js$/$script,1p,domain=zetporn.com +||zetporn.com/*/custom_vast/$xhr +*$script,3p,denyallow=googleapis.com,domain=zetporn.com +blackenterprise.com##.penci-sidebar-widgets.penci-sticky-sidebar.widget-area-1.widget-area > .theiaStickySidebar +blackenterprise.com##.hdrbanart +hog.*##.content__info--vis +hog.*##.content__top +hog.*##.player-block__line +hog.*##.player-block__square +hog.*##.player__line +hog.*##.player__side +hog.*##.related-view > div.title--sm +*$script,3p,denyallow=cloudflare.com|gcdn.co|google.com|gstatic.com|videocdn.name,domain=hog.* +!#if env_mobile +||m.youtube.com/*/ad.js$script +!#endif +keepvid.pw##+js(nowoif) +justcastingporn.com,justfamilyporn.com##+js(acs, document.createElement, _htas) +@@||smallseo.tools^$ghide +smallseo.tools##.category_box > .col-md-6 > p +smallseo.tools##.category_box > p +smallseo.tools##.sidebar_adds +smallseo.tools##ins.adsbygoogle +smallseo.tools##.text-center.col-md-8 > p +smallseo.tools##[href^="https://grammarchecker.io/grammarly"] +smallseo.tools##.border.p25.tracktool_banner .text-center > p +itsguider.com##+js(aeld, load, nextFunction) +@@||itsguider.com^$ghide +*$script,3p,denyallow=cloudflare.com|google.com|gstatic.com,domain=itsguider.com +viserve.com##^responseheader(location) +@@||leaklinks.com^$script,1p +*.gif$domain=leaklinks.com,image +||lowendbox.com^$3p +||lowendbox.com/media/banner/$frame +lowendbox.com##a[href][rel=noreferrer] > img[height="250"][width="300"] +lowendbox.com##[href="https://vpsdime.com/"] +lowendbox.com##iframe +lowendbox.com##div.block:has([id^="bsa"]) +*$script,3p,denyallow=cloudflare.com,domain=reddit.tube +nbcolympics.com##+js(set, adblockDetect, noopFunc) +qz.com##.e76xF.bJlt-:style(padding-top:0px !important) +qz.com##.article-content-ad +qz.com###engage-1 +xanimehub.com##+js(nosiif, visibility, 1000) +! crackevil.com anti adb +crackevil.com##+js(acs, mMcreateCookie) +buydekhke.com##+js(aost, String.prototype.charCodeAt, ai_) +talkjarvis.com##+js(nostif, css_class.show) +cardiagn.com##+js(acs, eval, replace) +@@||cardiagn.com^$script,1p +privatemoviez.*##+js(aeld, DOMContentLoaded, adsBlocked) +privatemoviez.*##+js(nostif, magnificPopup) +msn.cn##msft-article[id^="native_ad_nativead"] +msn.cn##.eastday-post-article-container +@@||club-opel.com^$ghide +club-opel.com##.side_ad_left_160 +club-opel.com##.side_ad_right_160 +club-opel.com##ins.adsbygoogle +||nothingtoxic.com/aff/chaturbate/ +||painaltube.com/min/747b35c9/painaltube/p/ +||painaltube.com/widget/chaturbate_cam.php? +painaltube.com##.widget > div.widget +techilife.com##+js(acs, jQuery, adblocker) +tyfloswiat.pl##^responseheader(location) +/demonoid\.is\/[a-z0-9]{24}\.jpg$/$image,1p,match-case,domain=demonoid.is +demonoid.is##+js(rpnt, style, visibility: visible !important;, display: none !important;) +send-anywhere.com##+js(nano-sib, skipOptions) +send-anywhere.com###transfer-reward-ad +!||brightcove.com/playback/*/*?ad_config_id$removeparam=ad_config_id,xhr,domain=tvnz.co.nz +!||brightcovecdn.com/playback/*/*?ad_config_id$removeparam=ad_config_id,xhr,domain=tvnz.co.nz +tvnz.co.nz##+js(no-fetch-if, method:HEAD url:doubleclick.net) +tvnz.co.nz##+js(xml-prune, 'xpath(//*[name()="Period"][.//*[name()="BaseURL" and contains(text(),"https:")]])', '', .mpd) +@@||pharmacyreviewer.com^$ghide +@@||pharmacyreviewer.com/forum/js/$script,1p +247sports.com##body:not(.skybox-loaded) .topnav:style(margin-top:0px !important) +247sports.com##.nav-bar:style(top:0px !important) +samehadaku.*###playVideo:style(display: block !important; visibility: visible !important;) +samehadaku.*###player_embed:style(display: block !important; visibility: visible !important;) +samehadaku.*###skipbtn +samehadaku.*##.box_item_berlangganan_popup +*$script,3p,denyallow=cloudflare.com|cloudfront.net|disqus.com|disquscdn.com|fastlylb.net|sharethis.com,domain=samehadaku.* +||yimg.com/nn/lib/metro/g/sda/$domain=yahoo.com +mediapemersatubangsa.com##+js(acs, document.addEventListener, google_ad_client) +pornofan.pl###inplayerADS +pornofan.pl##.PublicitaDestra +gigacourse.com##+js(acs, eval, replace) +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=noopjs,domain=howstuffworks.com +userload.*##+js(aeld, , _0x) +userload.*##+js(nowoif) +userload.*##+js(acs, document.getElementById, style.display) +||userload.*/maroc.js$script,1p +@@||userload.*/ad-banner.js +*$image,redirect-rule=1x1.gif,domain=userload.* +userload.*##div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"] +userload.*##.adp-underlay +||zetadeo.com^$all +||binomo.com^$3p +||0x01n2ptpuz3.com^$all +||imasdk.googleapis.com/js/sdkloader/$script,redirect=noopjs,domain=timesnowhindi.com|timesnowmarathi.com|tvid.in +timesnowhindi.com##.ad-section-three +timesnowhindi.com##.ad-section-one +timesnowhindi.com##.right-block > .section-one +timesnowhindi.com##.add-wrap +timesnowhindi.com##div.square-adv +timesnowhindi.com##.right-block > .section-four +timesnowhindi.com##.ad-panel-wrap +timesnowhindi.com##.bggrayAd +timesnowhindi.com##div:not([class]) > div:has(> .atfAdContainer) +timesnowhindi.com##div:not([class]) > div:empty +timesnowhindi.com,timesnowmarathi.com,timesofindia.com##+js(no-fetch-if, tvid.in/log) +timesnowmarathi.com##[class^="section"]:has(> .ad-div) +isekaisubs.web.id##+js(aost, String.prototype.charCodeAt, ai_) +@@||cheat.hax4you.net^$ghide +! manganelo. tv popups +manganelo.tv##+js(aopr, JSON.parse) +! movizland. top + players => popups +movizland.*##+js(aopr, open) +upstore.net##+js(nano-sib, countDown, 1150, 0.5) +player.stv.tv##+js(json-prune, testadtags ad) +player.stv.tv##div.vjs-cue-point +||sumologic.stv.tv^ +||brightcove.com^$removeparam=ad_config_id,domain=player.stv.tv +@@||tvnation.me^$ghide +tvnation.me##.adsbyvli +tvnation.me##div[style="float:left;text-align:center; width:300px; height:300px"] +tvnation.me##td[style="width:165px;"] +tvnation.me##td[style="width:160px;"] +tvlogy.to##+js(nostif, 0x) +javhoho.com##+js(aost, String.prototype.charCodeAt, ai_) +javhoho.com###text-2 +javhoho.com###text-3 +javhoho.com###text-4 +javhoho.com###text-5 +javhoho.com###text-6 +javhoho.com###text-7 +javhoho.com##a[href="https://50per-cent.com/"] +javhoho.com##.img-ads-footer +javhoho.com##.popmake +javhoho.com##.pum-overlay +javhoho.com##html:style(overflow: auto !important) +! udoyoshi.com anti adb +udoyoshi.com##+js(aost, String.prototype.charCodeAt, ai_) +vermoegen.org##+js(aopr, document.referrer) +mobile.de##.sticky-billboard +m.mobile.de##[data-label="Anzeige"] +m.mobile.de##div.He1bX +@@||user.pnetlab.com/store/advs/check +oosex.net,xteensex.net##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +##div#spot-holder.spot-holder[style="display: block;"] +##.gallery-bns-bl +/askdrej/*$script,1p +/askrej/*$script,1p +imslp.org##+js(nano-sib, timer) +nudes7.com##+js(acs, document.addEventListener, adsbygoogle) +||d1q4kshf6f0axi.cloudfront.net/main/prebid-$script +fapnado.*##+js(acs, Math.floor, ExoLoader) +fapnado.*##.pause-ad-pullup +fapnado.*##[class^="zpot"] +||fapnado.*/bump/ +||oi.fapnado.xxx^ +pogolinks.*##+js(nostif, showModal) +pogolinks.*##+js(acs, setTimeout, admc) +!||cdn.applixir.com^$script,3p +ilifehacks.com##+js(aost, String.prototype.charCodeAt, ai_) +pclicious.net##+js(acs, quadsOptions) +pclicious.net###text-3 +85po.com##+js(set, flashvars.protect_block, '') +85po.com##+js(set, console.clear, noopFunc) +pastebin.com##div[style]:not([class]):not([id]):has(> .adsbyvli:first-child) +@@||feyorra.top^$ghide +feyorra.top##.ads +feyorra.top##+js(aeld, load, 'block') +@@||temporarymail.com^$script,1p +gamingsym.in##+js(aost, String.prototype.charCodeAt, ai_) +motherporno.com##+js(set, flashvars.adv_start_html, '') +motherporno.com##+js(set, flashvars.adv_pause_html, '') +motherporno.com##+js(set, flashvars.adv_pre_vast, '') +motherporno.com##+js(set, flashvars.adv_pre_vast_alt, '') +motherporno.com##.aside +motherporno.com##.spot +@@||v.fwmrm.net/ad/$script,xhr,domain=viafree.* +! watchhouseonline/watchtheofficeonline ads +watchhouseonline.net##.h_content +watchhouseonline.net###custom_html-6 +watchhouseonline.net##.module_single_ads +apkhex.com##+js(set, style, noopFunc) +indiansexstories2.net,issstories.xyz##+js(set, history.pushState, noopFunc) +indiansexstories2.net##[href^="https://a.videobaba.xyz/geoip/link.php"] +indiansexstories2.net##[href="https://www.theporndude.com/"] +||dsccams.com^$3p +mypornhere.com##+js(acs, document.createElement, loadjscssfile) +mypornhere.com##.item > [href^="https://www.mrporngeek.com/"] +*$xhr,redirect-rule=nooptext,domain=shaalaa.com +shaalaa.com##div.zxc_wrap +@@||cyberbunkers.com^$ghide +cyberbunkers.com##ins.adsbygoogle +freeiphone.fr##+js(aost, Math, ai_) +eductin.com##+js(nostif, show) +*$xhr,removeparam=ad_config_id,domain=telequebec.tv +ear-phone-review.com##+js(nostif, nextFunction) +@@||ear-phone-review.com^$ghide +switch520.com##+js(acs, eval, replace) +||4u2movie.com^$3p,media,redirect=noopmp3-0.1s +embed.nana2play.com##.click_block +embed.nana2play.com##+js(nostif, debugger) +embed.nana2play.com##+js(nano-stb, load_ads) +||googles.video^ +||ad.mail.ru^$3p +ask4movie.*##+js(aopr, AaDetector) +ask4movie.*##+js(nowoif) +riotbits.com##+js(aost, String.prototype.charCodeAt, ai_) +semprot.com##.semprotnenenmontok_adalah_pujaan_hatiku +semprot.com##a[href^="/yum.php"] +elahmad.com##+js(nostif, /debugger|offsetParent/) +*$image,redirect-rule=1x1.gif,domain=elahmad.com +*$redirect-rule=noopjs,script,domain=elahmad.com +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=elahmad.com +elahmad.com###ad_asd +@@||elahmad.com/tv/videojs/packages/blockadblock.min.js$script,1p +@@||elahmad.com/tv/videojs/packages/videojs-analytics/videojs-analytics.min.js$script,1p +elahmad.com##+js(no-fetch-if, /ads|imasdk/) +elahmad.com##div[id^="ads"] +kendam.com##+js(set, canRunAds, true) +1340kbbr.com,gorgeradio.com,kduk.com,kedoam.com,kejoam.com,kelaam.com,khsn1230.com,kjmx.rocks,kloo.com,klooam.com,klykradio.com,kmed.com,kmnt.com,kpnw.com,kppk983.com,krktcountry.com,ktee.com,kwro.com,kxbxfm.com,thevalley.fm##+js(set, google_unique_id, 6) +convert2mp3.cx##+js(nowoif) +megawypas.com##+js(acs, document.addEventListener, google_ad_client) +tryvaga.com##+js(acs, document.addEventListener, adsBlocked) +||tryvaga.com/wp-content/themes/retrotube/assets/img/banners$image +/images/ads.$image,redirect-rule=1x1.gif +wttw.com##+js(set, canRunAds, true) +@@||adsuite.io^$ghide +worldofbin.com##+js(aopr, adBlockDetected) +tamilbrahmins.com##+js(acs, $, test) +@@||panelist.cint.com/assets/embed.min.js^$script,domain=surveyrewardz.com +@@||panelist.cint.com/$frame,domain=surveyrewardz.com +gab.com#?#:matches-path(/\/posts/) div[data-comment*="gab-ad"]:has(span[class]:has-text(Sponsored)) +quizlet.com##.SetPageTerms-embeddedDesktopAdWrapper +quizlet.com##.StickyAdz +quizlet.com##+js(rc, has-sidebar-adz|DashboardPage-inner, div[class^="DashboardPage-inner"], stay) +quizlet.com##+js(rc, hasStickyAd, div.hasStickyAd[class^="SetPage"], stay) +quizlet.com##+js(nano-stb) +quizlet.com##+js(set, __NEXT_DATA__.props.pageProps.adsConfig, undefined) +oneotv.com##+js(acs, document.addEventListener, google_ad_client) +@@/wp-content/plugins/dh-anti-adblocker/*$script,1p +linkfly.*##+js(set, blurred, false) +@@||dinamalar.com^$ghide +dinamalar.com###taboola-below-article-thumbnails +dinamalar.com##.topadtxt300 +dinamalar.com##div[style=" color: #999999;font-family: arial;font-size:10px;padding-right: 5px;text-align: right;width:640px;"] +dinamalar.com##div[style^="width:728px; margin-right:2px; height:90px;"] +dinamalar.com##.topadtxt728 +dinamalar.com###rladvt +gagaltotal666.my.id##+js(acs, addEventListener, nextFunction) +owlzo.com##+js(nostif, adblockEnabled) +kumparan.com##.adunitContainer:upward([data-qa-id]) +1tamilmv.*##+js(acs, document.createElement, cookie) +1tamilmv.*##+js(aopr, mm) +beingtek.com##+js(aopr, app_vars.force_disable_adblock) +beingtek.com##+js(set, blurred, false) +*$script,3p,denyallow=gstatic.com|recaptcha.net,domain=beingtek.com +pcbeta.com##+js(aost, document.createElement, make_rand_div) +sqlserveregitimleri.com##+js(aeld, DOMContentLoaded, adsBlocked) +sqlserveregitimleri.com##.ai_widget +*$3p,script,denyallow=cloudflare.com|cloudflare.net|hwcdn.net|jquery.com|fontawesome.com,domain=dekhobd.com +dsocker1234.blogspot.com##+js(acs, String.prototype.charCodeAt, 'replace') +dsocker1234.blogspot.com##+js(set, new_config.timedown, 0) +dsocker1234.blogspot.com##.mb-3.order-last.col-md-3.col-12 +dottech.org###Azadify +ttsfree.com##div[id^="ezoic-pub-ad-"] +stiflersmoms.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +||stiflersmoms.com/yes/ +stiflersmoms.com##.line3 +@@||wallpapers.ispazio.net^$ghide +wallpapers.ispazio.net##.box-apples_single_reclame +ispazio.net##.stream-item +ispazio.net##.stream-item-widget +/nb/f_ls.js +||bluffyporn.com^$3p +||quinporn.com^$3p +###stop_ad +###stop_ad2 +tutcourse.com##+js(aeld, DOMContentLoaded, adsBlocked) +tutcourse.com##.text-html +tutcourse.com##.ai-attributes +@@||videovard.*^$xhr,1p +videovard.*##+js(nowoif) +videovard.*##+js(aeld, mouseup, catch) +videovard.*##+js(nosiif, 0x) +videovard.*##.jw-reset.jw-wrapper:style(z-index:2147483647 !important) +videovard.*###nux > div > div > div[id] +videovard.*##+js(aopr, FuckAdBlock) +burakgoc.com##+js(aost, String.prototype.charCodeAt, ai_) +||tvshows4mobile.org^$csp=script-src 'self' 'unsafe-eval' *.google.com +tvshows4mobile.org##+js(set-cookie, downloadbypass, 1) +tvshows4mobile.*##body:style(visibility:visible !important) +tvshows4mobile.org##[href*="starmeetonline.com/"] +tvshows4mobile.org##[href^="https://oabaubsutha.com/"] +tvshows4mobile.org##.gsc-promotion +tvshows4mobile.*##[href="http://bit.ly/indianwebseriesv2"] +tvshows4mobile.*##.prop_native1 +||i.imgur.com/D6RfMoV.png^$3p +wcofun.*##+js(nostif, AdBlock) +wcofun.*##+js(set, isAdBlockActive, false) +wcofun.*##.anti-ad +wcofun.*##.reklam_kapat +q1003.com##+js(nostif, google_ad) +||adbox.lv^$script,redirect=noop.js,domain=mail.ee +@@||automodeler.com^$ghide +automodeler.com##ins.adsbygoogle +automodeler.com##.banner +@@||armorama.com^$ghide +xemales.com##+js(aopr, document.dispatchEvent) +xemales.com##[href="https://myteenwebcam.com/"] +! cluset.com ads, popunder +cluset.com##+js(set, flashvars.popunder_url, '') +cluset.com##+js(aeld, click, clickCount) +cluset.com##.item:has(> div.spot) +cluset.com##.item.romina.tumba +cluset.com##.table +##[href^="https://join.enjoyx.com/track/"] +tumblr.com##header[role="banner"] > div > a[href="/docs/en/relevantads"]:upward(3) +tumblr.com##a[href^="https://www.bonecoin.com/"] +tumblr.com##.Yc2Sp h1, .Yc2Sp a:style(font-size: 0 !important;) +tumblr.com##+js(json-prune-fetch-response, response.timeline.elements.[-].advertiserId, , propsToMatch, url:/api/v2/tabs/for_you) +||gazzettaobjects.it/rcs_anti-adblocker/$3p +rincondelsazon.com##+js(nano-sib, timercounter) +tattoosbeauty.com##+js(nano-sib, timercounter) +||i.imgur.com^$image,domain=myflixer.* +myflixer.*###gift-middle +myflixer.*##.premodal.modal +myflixer.*##.show.modal-backdrop +myflixer.*##body:style(overflow: auto !important;) +apfelpatient.de##+js(nostif, css_class) +myfirstname.rocks##.xcontent.container +szexkepek.net##+js(aopr, document.dispatchEvent) +szexkepek.net##div[style="display:inline;float:left;width:300px;height:250px;margin-left:15px;"] +szexkepek.net##div[style="width:728px;height:90px;"] +teensexvideos.me##+js(aopr, ExoLoader) +wife-home-videos.com##+js(aopr, document.dispatchEvent) +wife-home-videos.com##.happy-footer +pornicom.com##+js(aopr, document.dispatchEvent) +pornicom.com##.thumbs-holder > .thumb_aside +pornicom.com##.bottom.thumb_aside +pornicom.com##a[href^="https://s.zlinkm.com/"] +pornicom.com##a[href^="https://s.zlinkv.com/"] +pornicom.com##a[href^="https://claring-loccelkin.com/"] +sexmadeathome.com##+js(aopr, document.dispatchEvent) +sexmadeathome.com###dclm_modal_content +sexmadeathome.com##*:style(filter: none !important) +sexmadeathome.com###dclm_modal_screen +nylondolls.com##+js(aopr, document.dispatchEvent) +sidereel.com###netaktion_ad +techymedies.com##+js(acs, eval, replace) +techymedies.com###wpsafe-generate,#wpsafe-link,.bt-success:style(display: block !important;) +techymedies.com###wpsafe-time:upward([id^="wpsafe-wait"]) +disheye.com##+js(no-fetch-if, googlesyndication) +disheye.com##+js(nano-sib, count, *) +disheye.com,techymedies.com##+js(set, blurred, false) +blogpascher.com##+js(nostif, document.location) +za.gl##+js(set, blurred, false) +notformembersonly.com##+js(aost, _pop) +notformembersonly.com###post-separate > p > .local-link +@@||cdn.jsdelivr.net/npm/*/fuckadblock.min.js$script,3p +unsplash.com##div[style^="--row-gutter"] > div a[href="/brands"]:upward(div[style^="--row-gutter"] > div) +unsplash.com##div[data-test="SearchInFeedAd-AffiliateFallback-Container"] +unsplash.com##div[data-test^="masonry-grid"] > div[style^="--row"] > div:not([itemprop="image"]) +milanworld.net##+js(acs, $, test) +chess.com##.board-layout-ad +chess.com##body.board-layout.with-und:style(margin-right:0px!important) +chess.com##.game-over-ad-legacy-component:style(height: 0 !important) +funker530.com##+js(rc, cnx-ad-container|cnx-ad-bid-slot) +uyduportal.net##+js(acs, document.addEventListener, nextFunction) +businessinsider.fr##[id^="bin-ads"] +testserver.pro##+js(nostif, google) +warddogs.com##+js(aeld, load, checkAdblock) +warddogs.com##.main-money-01 +warddogs.com##.single-aside > div.flex +telefullenvivo.com##+js(nostif, nextFunction) +gomoviz.*##.mvic-btn +gomoviz.*##.mobile-btn +gomoviz.*##div.content-kuss +! everyeye. it anti adb +everyeye.it##+js(nostif, adb) +nodejs.libhunt.com##[data-ref="saashub"]:upward(div.feed-item) +alueviesti.fi,kiuruvesilehti.fi,lempaala.ideapark.fi,olutposti.fi,urjalansanomat.fi##+js(aeld, scroll, innerHeight) +watashiwasugoidesu.com##.watas-adlabel +watashiwasugoidesu.com##.watas-bottom-vi +@@||freereceivesms.com^$script,1p +freereceivesms.com##+js(nosiif, 0x) +! non-bait wp-banners.js +/wp-content/plugins/wp-banners/js/wp-banners.js +pobre.*###messageModal +pobre.*##.generalModal +||pobre.*/wp-banners.js +||cloclo60.datacloudmail.ru/public/view/*.mp4|$media,domain=pobre.*,redirect=noopmp3-0.1s +@@||windowsbulletin.com^$ghide +fifaultimateteam.it##+js(aost, Math, inlineScript) +fifaultimateteam.it##+js(nowoif) +||fifaultimateteam.it/*skin$image +fifaultimateteam.it##.ai_widget +reddit.com,reddittorjg6rue252oqsxryoxengawnmo46qy4kyii5wtqnwfj4ooad.onion##.adLinkBar:upward(article[style="z-index: 1;"]) +@@||xtremestream.co^$ghide +blick.ch##.fKZLNI:style(width:120% !important) +blick.ch##+js(cookie-remover, __adblocker) +blick.ch##[class*="_ad_"] +blick.ch##aside:has(> div[id^="ad-placement"]) +bblink.com##+js(set, blurred, false) +bblink.com##.banner-img-promotion +javhub.net##+js(aeld, DOMContentLoaded, 0x) +javhub.net##+js(aopr, cainPopUp) +javhub.net##+js(aopr, pURL) +javhub.net##.fel-playclose +javhub.net##[class^="banner-"] +novsport.com##+js(refresh-defuser) +yifysub.net##+js(nano-sib, #timer) +theloadout.com###nn_bfa_wrapper +theloadout.com##.legion_primiswrapper +theloadout.com##header:style(top:0 !important) +theloadout.com###nn_astro_wrapper:has(.ad) +theloadout.com##.nn_mobile_mpu_wrapper +ceylonssh.com##+js(acs, $, adsbygoogle) +bowfile.com##+js(nowoif, !bowfile.com) +*$script,redirect-rule=noopjs,domain=bowfile.com +*$frame,redirect-rule=noopframe,domain=bowfile.com +||d192r5l88wrng7.cloudfront.net^$frame,redirect=noopframe +bowfile.com##+js(no-fetch-if, cloudfront.net/?) +bowfile.com##+js(no-fetch-if, method:HEAD) +bowfile.com##+js(ra, href|target|data-onclick, a[id="dl"][data-onclick^="window.open"], stay) +bowfile.com##^script:has-text(FingerprintJS) +! antiadb/download button not showing +bowfile.com##+js(trusted-prevent-xhr, googlesyndication, 'a.getAttribute("data-ad-client")||""') +*$xhr,redirect-rule=nooptext,domain=bowfile.com +javfor.tv##+js(acs, addEventListener, -0x) +! myad.biz,vklinks.com ads, anti-adb, focus detection +myad.biz##+js(set, blurred, false) +vklinks.com##.banner-inner +||myezads.com^$3p +schoolcheats.net##+js(set, truex, {}) +schoolcheats.net##+js(set, truex.client, noopFunc) +schoolcheats.net##.blur-sm:style(filter: none !important;) +schoolcheats.net##+js(nostif, answers) +kisscos.net##+js(acs, addEventListener, -0x) +kisscos.net##span[id$="related"] > div[id^="container-"] +kisscos.net##[id$="-overlay"] +1cloudfile.com##+js(trusted-prevent-xhr, googlesyndication, 'a.getAttribute("data-ad-client")||""') +1cloudfile.com##+js(nosiif, !display) +1cloudfile.com##+js(nowoif) +1cloudfile.com##+js(no-fetch-if, /nerveheels/) +||1cloudfile.com/sw.js$script +1cloudfile.com#@#.advert-wrapper +1cloudfile.com##.advert-wrapper:style(clip-path: circle(0) !important;) +1cloudfile.com##.preview-download-wrapper +1cloudfile.com##.content-preview-wrapper +||browsingcontredir.com^ +straatosphere.com##+js(nostif, showModal) +straatosphere.com##html:style(overflow: auto !important;) +liveonsat.com##+js(acs, document.getElementById, 'No') +liveonsat.com##td[width="100%"][height="50"] +4everproxy.com##+js(aost, foreverJQ, /document.createElement|stackDepth:2/) +1bitspace.com,mgnet.xyz##+js(acs, addEventListener, -0x) +mgnet.xyz##+js(acs, document.addEventListener, container.innerHTML) +mgnet.xyz##+js(nostif, top-right, 2000) +mgnet.xyz##+js(set, hiddenProxyDetected, false) +mgnet.xyz##+js(nano-stb, _0x, 15000) +1bitspace.com##+js(nano-stb, location.href, 8000) +1bitspace.com,mgnet.xyz##.modal__overlay +mgnet.xyz##.active.bnsLayers.is-block-touch.is-grid > .col_12.article-center +mgnet.xyz##.bounceIn.animated.bnsLayers.is-block-touch.is-grid +dealsfinders.blog##+js(no-fetch-if, method:HEAD) +dealsfinders.blog##+js(nostif, show) +dirproxy.com##+js(aost, Math, ) +*$3p,script,denyallow=cloudflare.com|jquery.com,domain=dirproxy.com +torrentdownloads.dirproxy.com##.left_shadow:has-text(Fast) +torrentdownloads.dirproxy.com##[id^="cookieConsent"] +torrentdownload.info##.thleft:has-text(Fast):upward(2) +dirproxy.com##[src="/logo_d.jpg"] +dirproxy.com##[src="/logo_d3.jpg"] +dirproxy.com##+js(nowoif) +electomania.es##+js(acs, eval, replace) +electomania.es##.td-pb-row.wpb_row.tdi_73.vc_row +5dwallpaper.com##.__fdw__adspot-title-container +5dwallpaper.com##.__fdw__adv-block +swzz.xyz##+js(aopr, app_vars.force_disable_adblock) +swzz.xyz##+js(set, blurred, false) +@@||c.adsco.re/|$script,domain=hotfrog.* +! pirate4all.com popup +pirate4all.com##.e3lan-top.e3lan +pirate4all.com##.pirat-before-content +||edge.api.brightcove.com^$xhr,removeparam=ad_config_id,domain=9now.com.au|mech-plus.com|threenow.co.nz +threenow.co.nz##.EpisodeAdBlockerWarning +9now.com.au##.vjs-cuepoint +designtagebuch.de##+js(set, SteadyWidgetSettings.adblockActive, false) +@@*$xhr,domain=designtagebuch.de +designtagebuch.de##[id^="desig-"]:has-text(ANZEIGE) +designtagebuch.de##.zwischen-posts-wrapper +designtagebuch.de###desig-widget-59 +designtagebuch.de##.seitenende-wrapper +vfxdownload.net##+js(acs, eval, replace) +vfxdownload.net##[href^="https://aejuice.com"] +vfxdownload.net###custom_html-35 +vfxdownload.net###custom_html-40 +gatexplore.com###tie-block_640 +gatexplore.com###tie-block_669 +nbcsportsedge.com##.edge-max-marketing-banner +audiobooks4soul.com##+js(nostif, show) +audiobooks4soul.com##[href^="https://ezaudiobooks.com/"] +||audiobooks4soul.com/*.custom-ads-block-detector. +concienciaradio.com,kontasas.gr##.stream-item +juazeiro.ba.gov.br###tie-block_1735 +juazeiro.ba.gov.br###tie-block_3287 +rtilinks.com##+js(acs, eval, replace) +mp3juices.*##+js(aost, Math.random, computed) +mp3juices.*,mp3juice.*##+js(nowoif) +mp3juices.*##[class^="result_two__"][target="_blank"] +mp3juices.icu##+js(nano-sib, temp) +fapguru.com##+js(aost, $, inlineScript) +##[href="https://clickaine.com"] +fapguru.com##.underplayer_banner +iphonechecker.herokuapp.com##+js(no-fetch-if, method:HEAD) +iphonechecker.herokuapp.com##.iad +inhumanity.com##+js(aopr, inhumanity_pop_var_name) +fapcat.com##+js(nowoif) +fapcat.com##.fade.top +fapcat.com##.spot-horizontal +fapcat.com##.spot-list +||a.fapcat.com^ +||s.fapcat.com/static/js/goldfish.js +||gamefz.com/c.asp$frame +rp5.*##+js(nostif, 0x) +rp5.*##.adsbygoogle:upward(1) +5ggyan.com##+js(acs, document.addEventListener, google_ad_client) +5ggyan.com##^script:has-text(google_ad_client) +5ggyan.com###sidebar1 > .HTML:has(> .widget-content > .adsbygoogle) +5ggyan.com##+js(nano-sib, countDown) +5ggyan.com##.progress +5ggyan.com##button:style(display: inline-block !important) +mydramalist.com##.is-desktop-ads +mydramalist.com##.ad-removal-info:has-text(ads):upward([class]) +mydramalist.com##.app-body > div[class]:not([data-component]):has(.htlad-header_top) +stardeos.com##+js(no-xhr-if, url:googlesyndication) +stooq.*##div[style="position:relative;width:970px;height:250px"] +stooq.*##div[style="position:relative;width:300px;height:250px"] +stooq.*###f13 > table > tbody > tr > td > .f13 +stooq.*###f13 > b:has-text(Sponsor):upward(4) +stooq.*##td#f13:nth-of-type(3) > table:nth-of-type(4):has(> tbody > tr > td) +myshopify.com##+js(acs, document.addEventListener, adsBlocked) +moddedguru.com##+js(acs, eval, replace) +moddedguru.com##div.banner +vevioz.com##+js(aopr, app_vars.force_disable_adblock) +vevioz.com##+js(aopr, open) +vevioz.com##+js(set, blurred, false) +advertiserandtimes.co.uk##+js(nostif, enforceAdStatus) +advertiserandtimes.co.uk###nagBG +advertiserandtimes.co.uk##body:style(overflow: auto !important;) +advertiserandtimes.co.uk##.advert +advertiserandtimes.co.uk##.MPU +advertiserandtimes.co.uk##.TaboolaSide +milfnut.*##+js(set, console.clear, noopFunc) +milfnut.*##+js(aeld, contextmenu) +milfnut.*##+js(acs, onload, onclick) +milfnut.*##+js(nowoif) +charexempire.com##+js(aopr, app_vars.please_disable_adblock) +charexempire.com##+js(aopr, open) +charexempire.com##+js(set, blurred, false) +||i.imgur.com/*.gif$image,domain=charexempire.com +charexempire.com##.banner +synonyms.com##+js(set, canRunAds, true) +pcgamesn.com##header:style(top:0 !important) +pcgamesn.com##.legion_primiswrapper +! anxcinema. com / website popups +anxcinema.*##+js(ra, href, #clickfakeplayer) +anxcinema.*##+js(aopr, __Y) +definitions.net##+js(set, canRunAds, true) +uploady.io##+js(set, timeleft, 0) +uploady.io##+js(nowoif) +uploady.io##+js(noeval-if, replace) +uploady.io###downloadbtn[style$="z-index: 99999;"] +uploady.io###dlnk +uploady.io###iframe_id +toxicwap.us##+js(aost, Math, https) +toxicwap.us##+js(aopr, mm) +||babup.com^$3p +||toxicwap.us/sw.js$script,1p +dvdgayonline.com##+js(aost, setTimeout, ads) +dotadostube.com,taradinhos.com##+js(noeval-if, ads) +dvdgayporn.com###clickfakeplayer[href]:remove-attr(href) +dotadostube.com,taradinhos.com##div:has(> .video-block-happy) +dotadostube.com##.happy-player-beside +dvdgayporn.com,taradinhos.com##.widget_custom_html +taradinhos.com##.under-player-ad +||dvdgayonline.com^$3p +||taradinhos.com^$3p +! buffstream. io/fun popups +buffstream.*##+js(aopr, mm) +*$script,3p,denyallow=cloudflare.com,domain=ytmp3eu.net +subedlc.com##+js(acs, document.addEventListener, nextFunction) +iimanga.com##+js(aeld, DOMContentLoaded, adsBlocked) +iimanga.com##div[id^="teaser"] +@@||thevideome.com^$ghide +! sites anti adb "interfering with this page" +chicksonright.com##+js(aost, Math.random, inlineScript) +curseforge.com##+js(nano-sib) +deckbandit.com##+js(refresh-defuser) +deckbandit.com##^meta[http-equiv="refresh"] +1stream.*##+js(acs, setTimeout, admc) +1stream.*##+js(acs, document.createElement, "script") +1stream.*##+js(nostif, "admc") +1stream.*##^script[type]:has-text(c=document.createElement) +stocktwits.com##div[class*="AdBanner_"] +stocktwits.com##.LazyLoad.is-visible:has([data-aa-adunit]) +stocktwits.com##p[class^="Disclosure_disclosure"]:has([class^="Disclosure_removeAdsLink"]) +stocktwits.com##[class^="FooterAd_container"] +stocktwits.com##[class^="Primis_container"] +stocktwits.com###ad_sidebar_top_offset +xxxdl.net##.banners +||xxxdl.net/nothing.aspx? +@@||thetruedefender.com^$ghide +thetruedefender.com##.adsbyvli +thetruedefender.com###text-4 +m4news.com##.demand-supply +m4news.com###id-custom_banner +@@||tv247.us^$ghide +tv247.us##.afc_popup +calculator-online.net##+js(no-fetch-if, ads) +calculator-online.net##+js(set, load_ads, trueFunc) +calculator-online.net##.sticky_ad +calculator-online.net##.related_box:has(.adds):style(height: 1px !important;) +onionplay.*###clickfkplayer[href]:remove-attr(href) +onionplay.io###fakeplayer +onionplay.io###dooplay_player_content .source-box:style(display: block !important;) +onionplay.io##+js(set-attr, #dooplay_player_content .source-box iframe.metaframe[data-src]:not([src]), src, [data-src]) +! afScript popups +iguarras.com,iputitas.net##+js(aopr, afScript) +messitv.net##+js(aopw, atOptions) +||clk.asia/sw.js$script,1p +clk.asia,imperialstudy.com##+js(nosiif, visibility, 1000) +clk.asia##+js(nowoif) +clk.asia##+js(set, blurred, false) +||clk.asia/ads/*$frame +||clicksfly.com/img/ref/clicksglygifbanner2.gif +bigwank.com###mobile_pop +bigwank.com##.underplayer_banner +||bigwank.com/extension/aine/ +||bigwank.com/sw.js$script,1p +coloringpage.eu,juegosdetiempolibre.org,karaokegratis.com.ar,mammaebambini.it,riazor.org,rinconpsicologia.com,sempredirebanzai.it,vectogravic.com##+js(no-fetch-if, method:HEAD) +googledrivelinks.com##+js(aost, String.prototype.charCodeAt, ai_) +googledrivelinks.com##+js(aopr, adBlockDetected) +*$script,domain=miraculous.to,redirect-rule=noopjs +@@||miraculous.to/global_data/gtag/js$xhr,1p +miraculous.to##+js(aeld, hashchange) +miraculous.to##+js(aeld, popstate) +miraculous.to##+js(aopw, Fingerprint2) +miraculous.to##+js(aopr, history.back) +miraculous.to##+js(nowoif) +porngames.club,sexgames.xxx##+js(set, starPop, 1) +bit-shares.com##+js(aeld, load, onload) +mytoolz.net##+js(acs, document.createElement, adb) +gamingdeputy.com##+js(nostif, ai_adb) +alphagames4u.com##+js(acs, addEventListener, ai_) +wikirise.com##+js(acs, decodeURIComponent, ai_) +gotxx.*##+js(nostif, getComputedStyle, 250) +gotxx.*##+js(aost, Element.prototype.matches, litespeed) +gotxx.*##div[class][style^="position: absolute; cursor: pointer; z-index: 2147483646"] +edealinfo.com##+js(acs, $, offsetHeight) +edealinfo.com##+js(no-xhr-if, googlesyndication) +! popups https://forums.lanik.us/viewtopic.php?t=46951 +bfclive.com##+js(nowoif) +bfclive.com##+js(rmnt, script, /adb/i) +cinebaz.*##div.dlbtn > a[href*="?key"] +*$script,3p,denyallow=bootstrapcdn.com|google.com|googleapis.com|gstatic.com,domain=fx2.ink +*$xhr,redirect-rule=nooptext,domain=paraphrasetool.com +paraphraser.io##body > .justify-content-center +@@||paraphraser.io^$ghide +paraphraser.io##.adsenbox:not(#detect) +rephrase.info##.text-center:not([id]) [id^="adngin-"]:upward(.text-center:not([id])) +wouterplanet.com##+js(rmnt, script, clicky) +@@||wouterplanet.com/scripts/ads-front.min.js$script,1p +freexcafe.com##+js(acs, __PoSettings) +freexcafe.com##.left-col-gal-br +freexcafe.com###rightcolumn +freexcafe.com###banner +freexcafe.com###join +freexcafe.com##.hotdeal +freexcafe.com##div.bottom-300x250 +freexcafe.com###txtbanner +! paramountnetwork video ads +||mtvnservices.com/aria/bentojs.js +*$media,redirect=noopmp3-0.1s,domain=paramountnetwork.com +pcworld.es##.stickyAdWrapper +*$popunder,domain=ouo.io +nowtolove.com.au##.page__content-header:style(height: 50px !important) +@@||anime-king.com^$ghide +! cdnondemand.org variants +/^https?:\/\/[a-z]{5,7}\.com\/script\/[-_0-9A-Za-z]+(\.min)?\.js$/$script,3p,match-case,from=~edu|~gov,header=x-guploader-uploadid +.php?*&sadbl=1&$xhr,3p +##a[dontfo=""][style$="position: absolute; z-index: 2147483647;"] +sexlist.tv##+js(disable-newtab-links) +sexlist.tv##+js(set, flashvars.popunder_url, '') +sexlist.tv##.link-premium +sexlist.tv##.camitems +||sexlist.tv/player/html.php$frame +readgraphicnovels.blogspot.com##+js(nobab) +@@||washingtoninformer.com^$ghide +washingtoninformer.com##.widget a.gofollow:upward(.widget) +washingtoninformer.com##.a-772 +xozilla.xxx##+js(aost, HTMLSelectElement, Object) +||xozilla.xxx/player/html.php$frame,1p +||xxxbule.com^$csp=script-src +mobitool.net##+js(acs, decodeURIComponent, ai_) +letsmakeiteasy.tech###quads-myModal +||ytsubme.com/assets/adblock/ +ytsubme.com##+js(nowoif, youtube) +ytsubme.com##+js(nano-stb, aTagChange, 12000) +@@||filmpertutti.*^$ghide +dragontranslation.com##+js(aost, String.prototype.charCodeAt, https) +dragontranslation.com###teaser2 +dragontranslation.com##div[style$="position: fixed;"][style*="z-index: 2147483647;"] +thecustomrom.com##+js(acs, decodeURIComponent, ai_) +thecustomrom.com##+js(nano-stb, window.location.href, *) +111.90.159.132##+js(set, Object.prototype.ads, noopFunc) +111.90.159.132##+js(nowoif, _blank) +/wp-content/plugins/catfish-advert-banner/*$script +*/wp-content/plugins/lnw-ad-blocker-detector/$script,1p +111.90.159.132##.lna-livescore-home-tabs-widget +111.90.159.132##.slot-machine-wrapper +111.90.159.132##.idmuvi-rp-widget.widget +homeairquality.org,techtrim.tech##+js(no-fetch-if, googlesyndication) +homeairquality.org,techtrim.tech##+js(no-xhr-if, googlesyndication) +techsolveprac.com##+js(nostif, display, 5000) +! insider.com PH +insider.com##.in-post-sticky:has(> .ad-wrapper) +myshrinker.com##+js(set, blurred, false) +myshrinker.com##.banner-inner +cricstream.*,cricstreams.re##.w-100.position-absolute.h-100 +watch.cricstream.*,cricstreams.re##button:has-text(/Watch|🎟|👉/) +downloadfreecourse.com##+js(aost, fetch, inlineScript) +@@||downloadfreecourse.com^$ghide +! popmagic crap (classic popmagic filter does not work => blocking videos) +pornpapa.com,videojav.com##+js(aost, $, inlineScript) +pornpapa.com##.underplayer_banner +||surinenglish.com/adbd^ +av01.*##+js(nowoif) +av01.*##+js(ra, onclick, a[onclick^="setTimeout"]) +av01.*##div[style="width: 100%; height: 100%; top: 0px; position: fixed; z-index: 1; background-color: rgba(0, 0, 0, 0.8); overflow-x: hidden; transition: all 0.2s ease 0s; padding: 5%;"] +av01.*##+js(rc, vjs-hidden, .vjs-control-bar, stay) +freewp.io##+js(no-xhr-if, /^/) +||gospeljingle.com^$csp=default-src 'unsafe-inline' 'self' data: *.ytimg.com *.facebook.com *.google.com *.gstatic.com *.youtube.com *.googleapis.com *.wp.com *.gospeljingle.com *.googletagmanager.com +studybullet.com##+js(set, adsBlocked, false) +studybullet.com##+js(acs, b2a) +@@||driveup.in^$ghide +driveup.in##+js(nowoif, /^/, 0) +@@||scatfap.com/scat-porn/modules/vids/misc_static/adverts.js +freecourse.tech##+js(nostif, ai_) +weszlo.com##+js(no-fetch-if, ad) +@@||weszlo.com^$ghide +weszlo.com##.ad-placeholder-bg +! moviemad. vip popups +moviemad.*##+js(nowoif) +cotravinh.blogspot.com##+js(aeld, load, nextFunction) +chicagobearshq.com,chicagobullshq.com,chicagosportshq.com,cubshq.com,tigernet.com##+js(acs, document.getElementById, JSON) +! ytube2dl. com popups +ytube2dl.com##+js(aeld, , pop) +xenvn.com##+js(rmnt, script, XV) +xenvn.com##.ad_block:style(visibility: hidden !important;) +/script/ncsu.js$3p +/script/nbsu.js$3p +/script/ndsu.js$3p +/^https?:\/\/[a-z]{6,12}\.com\/script\/n[a-z]su\.js$/$script,3p +arabincest.com##+js(acs, $, test) +isi7.net##+js(no-fetch-if, adsbygoogle) +isi7.net###wpsafe-wait1 +isi7.net###wpsafe-generate:style(display: block !important;) +||d1t4ekjh9ps4ob.cloudfront.net^ +@@||coinpayz.xyz^$ghide +coinpayz.xyz##.ads +||coinpayz.xyz/*.php$frame +masstamilans.com,mymp3song.*,okmusi.com##+js(nowoif) +xnxx-sex-videos.com##+js(nostif, /out.php) +##.stream-item-widget +@@||printablebricks.com^$ghide +! orgasmatrix. com popmagic +orgasmatrix.com##.card.post:has([href*="landing."]) +gifhq.com##+js(acs, document.dispatchEvent, myEl) +gifhq.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +gifhq.com##+js(acs, $, open) +||gifhq.com/d2.js +itdmusics.com##+js(aeld, load, onload) +itdmusics.com##+js(acs, eval, replace) +bullfrag.com##+js(acs, eval, replace) +pdfaid.com##+js(nostif, offsetHeight) +persianhive.com##+js(no-xhr-if, adsbygoogle) +lootup.me##+js(acs, document.getElementById, stop) +||mobile-tracker-free.com/dashboard/scripts/detectBlockAds/isPremiumDemo.php +mobile-tracker-free.com##+js(set, detectBlockAds, noopFunc) +wyze.com##+js(no-fetch-if, analytics) +*$script,domain=wyze.com,redirect-rule=noopjs +studyflix.de##.huge-notification +camstreams.tv##div[style="position: absolute; inset: 0px; overflow: hidden; z-index: 160; background: transparent none repeat scroll 0% 0%; display: block;"] +||camplethora.com^ +camstreams.tv###sliderBox +burnbutt.com##+js(acs, document.addEventListener, google_ad_client) +||filma24.*/*.gif$image +filma24.*###vidad +filma24.*##[href^="https://bit.ly/"] +filma24.*##[href="https://codeit.al/services/"] +/reclama/ads.js$script,redirect=prebid-ads.js +joomlabeginner.com##+js(nostif, eb) +joomlabeginner.com##.bannergroup +learnclax.com##+js(acs, $, fetch) +newsmondo.it##+js(acs, document.getElementById, "detect") +*$xhr,redirect-rule=nooptext,domain=zwielkopolski24.pl +goduke.com##+js(no-xhr-if, /analytics|livestats/) +itudong.com##+js(aeld, load, nextFunction) +tainhanhvn.com##+js(aeld, load, /nextFunction|2000/) +claimtrx.com##+js(aeld, load, 'block') +claimtrx.com##.ads +! 4kporn. xxx popunder +4kporn.xxx##+js(set, flashvars.popunder_url, '') +4kporn.xxx##+js(rmnt, script, Popunder) +arhplyrics.in##+js(nano-sib) +arhplyrics.in##+js(no-fetch-if, googlesyndication) +scrolller.com##.ad-block-popup:upward(2) +scrolller.com##.native-ad-item-panel:upward(.vertical-view__item) +||photon.scrolller.com/categories/$image,media +||photon.scrolller.com/scrolller/$media +scrolller.com##+js(no-fetch-if, doubleclick) +||dirp.me^$csp=default-src 'unsafe-inline' 'self' https://extraimage.net *.extraimage.info *.imgur.com *.wikimedia.org *.dyncdn.cc *.picturedent.org https://checkmy.pictures *.dirp.me *.googleapis.com *.gstatic.com +dirp.me##+js(aopr, puShown) +dirp.me##[data-href^="/vpn"] +dirp.me##[id]:has-text(Provider) +boainformacao.com.br##+js(no-xhr-if, adsbygoogle) +pinterest.*##a[href*="&epik="]:upward([data-grid-item]) +!pinterest.*##[data-grid-item]:has([aria-label]:not([aria-label*="pinterest"])[href^="http"]) +!#if !env_mobile +! pinterest.*##[data-grid-item]:has([data-test-pin-id] [data-test-id^="one-tap-desktop"] > a[href^="http"][rel="nofollow"]) +!#else +pinterest.*##[data-grid-item]:has([data-test-pin-id] a[href^="http"][rel] [data-test-id="pincard-oneTap-with-link"]) +!#endif +pinterest.*##+js(json-prune, resource_response.data.[-].pin_promotion_id resource_response.data.results.[-].pin_promotion_id) +pinterest.*##+js(json-prune, initialReduxState.pins.{-}.pin_promotion_id initialReduxState.resources.UserHomefeedResource.*.data.[-].pin_promotion_id) +@@*$ghide,domain=pinterest.* +distrowatch.org##[href*="3cx"]:upward(tbody) +distrowatch.org##[href^="https://pbxinaflash.com/"] +! ubuntudde.com anti-adb +ubuntudde.com##+js(aopw, b2a) +@@||elwood.io^$ehide +pigeonburger.xyz##+js(no-xhr-if, googlesyndication) +autofaucet.dutchycorp.space##[href*="banner"] +autofaucet.dutchycorp.space##[src^="blob:https://autofaucet.dutchycorp.space/"]:remove() +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=coin-free.com|chinhnhacoban.com|tremamnon.com|95news.com +*$script,3p,domain=coin-free.com|chinhnhacoban.com|95news.com,denyallow=iconify.design|cloudflare.com +coin-free.com##[id^="wpsafe-wait"] +coin-free.com###wpsafe-generate, #wpsafe-link:style(display: block !important) +*$script,redirect-rule=noopjs,domain=coin-free.com|chinhnhacoban.com|95news.com +tremamnon.com##+js(aeld, DOMContentLoaded, adsBlocked) +chinhnhacoban.com,tremamnon.com##[id^="wpsafe-generate"], #continue:style(display: block !important;) +coin-free.com,tremamnon.com##^script:has-text(htmls) +!#if !cap_html_filtering +coin-free.com,tremamnon.com##+js(rmnt, script, htmls) +!#endif +actresstoday.com##+js(acs, eval, replace) +! fastream. to popups + anti adb +fastream.to##+js(aopr, afScript) +@@||fastream.to^$script,1p +! telenord. it videos +telenord.it##+js(nano-sib) +snlookup.com##+js(no-xhr-if, ads) +snlookup.com##+js(rmnt, script, deblocker) +epainfo.pl##+js(acs, document.addEventListener, adsBlocked) +titantv.com##+js(aeld, load, player) +@@||ntv.io/serve/load.js$script,domain=titantv.com +titantv.com###sidebox +1apple.xyz##+js(no-xhr-if, mahimeta) +helpdice.com##+js(acs, onload, "iframe") +gomoviefree.*##.mobile-btn +vidoo.org##.banner +otakukan.com##+js(nostif, innerHTML) +otakukan.com##.ai-attributes +latinohentai.com##+js(ra, href, #clickfakeplayer) +latinohentai.com##+js(acs, document.createElement, __htas) +||adclixx.net^$script,3p,redirect=nobab2.js:10 +||adnetasia.com^$script,3p,redirect=nobab2.js:10 +||adtrackers.net^$script,3p,redirect=nobab2.js:10 +||bannertrack.net^$script,3p,redirect=nobab2.js:10 +||ads.twitter.com/favicon.ico$image,3p,redirect=32x32.png +||advertising.yahoo.com/favicon.ico$image,3p,redirect=32x32.png +||doubleclickbygoogle.com/favicon.ico$image,3p,redirect=32x32.png +||google.com/adsense/start/images/favicon.ico$image,3p,redirect=32x32.png +||gstatic.com/adx/doubleclick.ico$image,3p,redirect=32x32.png +#@##ad_300 +#@##ad_728 +#@##ad_area +#@##ad_big +#@##ad_footer +#@##ad_slot +#@##ad_space +#@##adframe:not(frameset) +#@##adheader +#@##ads-1 +#@##ads-banner +#@##ads-footer +#@##adspace +#@##adsquare +#@##banner468 +#@##banner728x90 +###ad_300:not([style^="position: absolute; left: -5000px"]) +###ad_728:not([style^="position: absolute; left: -5000px"]) +###ad_area:not([style^="position: absolute; left: -5000px"]) +###ad_big:not([style^="position: absolute; left: -5000px"]) +###ad_footer:not([style^="position: absolute; left: -5000px"]) +###ad_slot:not([style^="position: absolute; left: -5000px"]) +###ad_space:not([style^="position: absolute; left: -5000px"]) +musmus.main.jp,streetinsider.com#@##ad_space:not([style^="position: absolute; left: -5000px"]) +###adframe:not(frameset):not([style^="position: absolute; left: -5000px"]) +freehostbox.net,hatenablog.com,puzzle-ch.com#@##adframe:not(frameset):not([style^="position: absolute; left: -5000px"]) +###adheader:not([style^="position: absolute; left: -5000px"]) +###ads-1:not([style^="position: absolute; left: -5000px"]) +###ads-banner:not([style^="position: absolute; left: -5000px"]) +###ads-footer:not([style^="position: absolute; left: -5000px"]) +###adsquare:not([style^="position: absolute; left: -5000px"]) +###banner468:not([style^="position: absolute; left: -5000px"]) +###banner728x90:not([style^="position: absolute; left: -5000px"]) +! temp specific rules +xnxx.*,xvideos.*###ad-footer +#@#.google-ad +##.google-ad:not(.testAd) +mmiyue.com#@#.google-ad:not(.testAd) +/ads-prebid.js$script,redirect=prebid-ads.js +/prebid-ads.js$script,redirect=prebid-ads.js,domain=~exey.io +! www.gamedeveloper.com +/prebid-ads/adsensebase.js$script,redirect=prebid-ads.js +! www.hero-wars.com +/prebid-article-ad-ad-300x250.js$script,redirect=prebid-ads.js +@@/js/prebid-ads.js$script,1p +#@#.adslot +#@#.adslot_1 +#@#.ad_slot +#@#.adunit +~apkmirror.com,~tuxpi.com##.adslot:not(.text-ad) +##.adslot_1:not(.text-ad) +##.ad_slot:not(.text-ad) +##.adunit:not(.text-ad) +! CHP Ads Block Detector +#@#.ad-link +##.ad-link:not(.adsbox) +#@#.ad-unit +#@#.ad_unit +~lamire.jp,~tinhte.vn##.ad-unit:not(.adsbox, .text-ad, .textads):not([style^="width: 1px; height: 1px; position: absolute;"]) +##.ad_unit:not(.text-ad, .adsbox) +#@#[data-ad-module] +#@#[data-ad-width] +#@#[data-ad-manager-id] +##[data-ad-module]:not([style$="left: -10000px !important; top: -1000px !important;"]):not(.adsbygoogle) +##[data-ad-width]:not([style$="left: -10000px !important; top: -1000px !important;"]):not(.adsbygoogle) +##[data-ad-manager-id]:not([style$="left: -10000px !important; top: -1000px !important;"]):not(.adsbygoogle) +#@#.ad-slot +##.ad-slot:not(.adsbox):not(.adsbygoogle) +#@#.ad-300x250 +##.ad-300x250:not(.ads) +||doubleclick.net^$xhr,redirect=noop.txt +||media.fastclick.net/|$xhr,3p,redirect=noop.txt +||ads.facebook.com/|$xhr,3p,redirect=noop.txt +||advice-ads.s3.amazonaws.com/|$xhr,3p,redirect=noop.txt +||ads.youtube.com/|$xhr,3p,redirect=noop.txt +||ads.reddit.com/|$xhr,3p,redirect=noop.txt +||ads-api.twitter.com/|$xhr,3p,redirect=nooptext +||ads.pinterest.com/|$xhr,3p,redirect=noop.txt +||adversal.com/|$xhr,3p,redirect=noop.txt +||sovrn.com/|$xhr,3p,redirect=noop.txt +||ads.tiktok.com/|$xhr,3p,redirect=noop.txt +||propellerads.com/|$xhr,3p,redirect=noop.txt +||infolinks.com/|$xhr,3p,redirect=noop.txt +||realsrv.com/popunder1000.js$xhr,3p,redirect=noop.txt +||exdynsrv.com/video-slider.js$xhr,3p,redirect=noop.txt +mymusicreviews.com##+js(aopr, chp_adblock_browser) +nj.com##.ad-unit[id] +kiplinger.com##.ad-unit, .fake +livescience.com##.widget-ads +globfone.com##+js(no-xhr-if, ads) +! tv-sport-hd. com ads popups +tv-sport-hd.com##[src="/rcl/reclama.php"] +tv-sport-hd.com###reklama1 +@@||androidacy.com^$ghide +m4ufree.*##+js(aopr, BetterJsPop) +glosbe.com###topBannerContainer +||www.sfr.fr^$script,redirect-rule=noop.js,domain=red-by-sfr.fr +publicflashing.me##+js(aost, console, onload) +@@||cdn.dqst.pl/assets/ads.js$xhr,domain=tko.pl +plotaroute.com###RightPanelAds +plotaroute.com###AdPanelRight +plotaroute.com###Page:style(right: 0px !important;) +katmoviefix.*##+js(aopr, Request) +katmoviefix.*##+js(noeval-if, ads) +g3g.*##.text-center.alert-danger.alert-dismissible.alert +sanet.st##+js(aost, document.createElement, onerror) +sanet.st##.lsB +sportsdark.com##+js(acs, eval, replace) +askpaccosi.com##+js(nostif, /adb/i) +askpaccosi.com##+js(noeval) +askpaccosi.com##+js(no-fetch-if, googlesyndication) +askpaccosi.com##+js(no-xhr-if, googlesyndication) +askpaccosi.com##+js(no-xhr-if, ad) +askpaccosi.com##[id^="wpsafe-wait"] +askpaccosi.com###wpsafe-generate, #wpsafe-link:style(display: block !important) +askpaccosi.com###wcfloatDiv4 +askpaccosi.com##.av_pop_modals_1 +techsignin.com##+js(acs, document.getElementsByTagName, tdBlock) +techsignin.com###td-outer-wrap:style(cursor: default !important) +firstpost.com##+js(ra, href, .t-out-span [href*="utm_source"], stay) +firstpost.com##+js(ra, src, .t-out-span [src*=".gif"], stay) +/apis-2.js^$1p +/pub/js_min.js| +@@||daihatsu-club.net^$ghide +daihatsu-club.net##[class^="side_ad_left_"] +daihatsu-club.net##[class^="side_ad_right_"] +vaa.jp,yonelabo.com###nankafix +svetserialu.to##+js(nowoif) +onlytech.com##+js(acs, $, test) +/fret/meow4/*$script,3p +scjhg5oh.fun,a-b-f-dd-aa-bb-cctwd3a.fun,mjukb26l.fun,ghajini-4urg44yg.lol##+js(nowoif) +scjhg5oh.fun,a-b-f-dd-aa-bb-cctwd3a.fun,mjukb26l.fun,ghajini-4urg44yg.lol##+js(acs, Math, localStorage['\x) +@@?*=$xhr,1p,strict1p,method=get,domain=mjukb26l.fun|ghajini-4urg44yg.lol|scjhg5oh.fun|a-b-f-dd-aa-bb-cctwd3a.fun +! *** uAssets:filters/filters-2022.txt *** +akoam.*##+js(nowoif) +porner.tv##.sources +porner.tv##.show.mobileSources +porner.tv##[href^="https://a.medfoodsafety.com/loader"] +porner.tv##.container > .HeaderLinks +porner.tv##.HeaderBanner +porner.tv##.defaultAd +pornocomics.*###dclm_modal_screen +pornocomics.*###dclm_modal_content +pornocomics.*##*:style(filter: none !important) +pornocomics.*##+js(aeld, , pop) +@@||dosgamezone.com^$image,1p +423down.com##+js(aeld, DOMContentLoaded, adsBlocked) +blu-ray.com##+js(nowoif) +rosefile.net##+js(acs, document.addEventListener, nextFunction) +ac-illust.com,photo-ac.com###eachDownloadedModal:has(.ac-btn[href^="https://premium."]) +ac-illust.com,photo-ac.com##.modal-backdrop +ac-illust.com,photo-ac.com##body.modal-open *:style(filter: none!important;) +freebie-ac.jp##+js(trusted-rpnt, script, currentTime = 1500 * 2, currentTime = 0) +! D4zz-sites +alluretube.com,anyxvideos.com,fetishtube.cc,italianporn.com.es,japanporn.tv,lovefap.com,mommysucks.com,mzansinudes.com,napiszar.com,of-model.com,onlineporn24.com,porntube15.com,sexavgo.com,sexdiaryz.*##+js(acs, decodeURI, decodeURIComponent) +japanporn.tv##+js(acs, Math.floor, ExoLoader) +##div[style^="z-index: 999999; background-image: url(\"data:image/gif;base64,"][style$="position: absolute;"] +||a.b.napiszar.com^ +||japanporn.tv/rg3y/*$script +! from pp moved to filters 2020 +9xmovie.*##+js(nowoif) +! AaDetector-sites +123movies-org.*,gayteam.club,sflix.*##+js(aopr, AaDetector) +lavanguardia.com##+js(no-xhr-if, notifier) +appsmodz.com##+js(no-xhr-if, googlesyndication) +appsmodz.com##.sticky-ads +appsmodz.com##+js(rc, hidden, button) +appsmodz.com##+js(ra, disabled, button) +appsmodz.com###timer +bingotingo.com##+js(rmnt, script, deblocker) +bingotingo.com##+js(no-xhr-if, googlesyndication) +bingotingo.com##+js(nano-sib, counter, , 0.02) +bingotingo.com###please-wait +||watchporn.to/banners.php +watchporn.to##.table +watchporn.to##[href^="https://go.gkrtmc.com/"] +dotabuff.com##+js(no-fetch-if, ads) +dotabuff.com##.retaliate.mana-void +||dotabuff.com/cargo.js +! mrgay. com popunder, popups, ads +mrgay.com##+js(aopr, mz) +mrgay.com##+js(nowoif) +mrgay.com##.headline.wrapper:has-text(Advertisement) +mrgay.com##.headline.wrapper:has-text(Advertisement) + div +mrgay.com###und_ban +mrgay.com##.video-info > section:has-text(Adv) +mrgay.com##article > .headline:has-text(Suggested) +mrgay.com##article > .headline:has-text(Suggested) + section +||revive.3wayint.com^ +cdn.gamemonetize.com###imaContainer +superpsx.com##+js(no-xhr-if, googlesyndication) +superpsx.com##+js(aost, document.getElementById, adsBlocked) +superpsx.com##+js(no-fetch-if, /googlesyndication|doubleclick/, length:10, {"type": "cors"}) +superpsx.com##+js(set, penciBlocksArray, []) +superpsx.com##+js(acs, b2a) +so1.asia##+js(nano-stb, , , 0.02) +so1.asia##+js(nano-sib, , , 0.02) +so1.asia##+js(rc, hidden, .panel-body > .text-center > button) +so1.asia##+js(ra, disabled, .panel-body > .text-center > button) +so1.asia##.pietimer +*$image,redirect-rule=2x2.png,domain=searchenginereports.net +searchenginereports.net##[id^="adboxx"] +osmanonline.co.uk##.is-sticky +osmanonline.co.uk##.adfoxly-wrapper +osmanonline.co.uk##+js(acs, $, modal-window) +quizack.com##+js(no-fetch-if, googlesyndication) +quizack.com##+js(nano-stb, isScrexed, 5000) +quizack.com##[class*="_mosori"] +goshow.tv##+js(aopr, ExoLoader) +cocomanga.com##+js(aeld, load, popMagic) +@@||cocomanga.com^$xhr,1p +primeos.in##.elementor-popup-modal +primeos.in##body:style(overflow: auto !important;) +||primeos.in/wp-content/uploads/*/Sidebar-Ad*$image +sarapbabe.com##+js(acs, document.querySelector, _0x) +sarapbabe.com##+js(aopr, decodeURI) +@@||sarapbabe.com^$ghide +sarapbabe.com##.has-text-danger +sarapbabe.com##.navbar-start > a.navbar-item:nth-of-type(4) +sarapbabe.com##.porn_sites_list +sarapbabe.com##.is-3.column +integral-calculator.com##+js(aopr, fallbackAds) +victor-mochere.com##+js(nostif, ai_) +! buondua.com leftover +buondua.com##.main-body > div > div[class]:not([class^="item"]):not([class^="article"]):has-text(/^Sponsored ads$/) +buondua.com##.main-body div[class]:has(> .adsbyexoclick) +buondua.com##.pagination + br + div[class] +buondua.com##div[class*="article"] > div:not([class]) > div[class]:has-text(/^Sponsored ads$/) +buondua.com##.view-list > div:not([class]):has(iframe) +buondua.com##+js(aeld, click, popurl) +1apple.xyz###wpsafe-generate, #wpsafe-link:style(display: block !important;) +1apple.xyz##div[id^="wpsafe-wait"] +||rat.xxx/xdman/* +rat.xxx##+js(aopr, popns) +rat.xxx##+js(acs, document.write, iframe) +@@||lablue.de^$ghide +sourceforge.net##+js(set, SF.adblock, true) +sourceforge.net##+js(nano-stb) +sourceforge.net##.can-truncate +sourceforge.net###mirror +sourceforge.net###nels +||a.slashdotmedia.com^ +nova.cz##div.vjs-marker-ad +||ads-twitter.com^$frame,redirect=noopframe +! Slow starting +media.cms.nova.cz##+js(nano-stb, () => n(t), *) +mediatn.cms.nova.cz##+js(nano-stb, () => t(), *) +wplink.*##+js(set, blurred, false) +samfirms.com##+js(set, startfrom, 0) +lbprate.com##^script:has-text(Math.imul) +lbprate.com##+js(acs, Math.imul) +lbprate.com##[id^="Ad"] +cefirates.com##.most-top-bar +||geoplugin.net^$xhr,redirect-rule=noop.txt,domain=taotronics.com +||raw.githack.com/*/SpiderBlogging/main/antiadblock/$3p +virpe.cc##+js(acs, document.write) +suzihaza.com##+js(aopr, __Y) +||static.sunmedia.tv/AdBlockDetection/$script +freecoursesites.com##+js(acs, eval, replace) +freecoursesites.com##.herald_adsense_widget +derivative-calculator.net##+js(aopr, fallbackAds) +apkandroidhub.in##+js(no-fetch-if, googlesyndication) +apkandroidhub.in##.g-recaptcha:style(margin-top:60px !important) +apkandroidhub.in###wpsafe-generate:style(display: block !important;) +apkandroidhub.in##div[id^="wpsafe-wait"] +apkandroidhub.in###wpsafe-link:style(display: block !important;) +rocklink.in##+js(set, blurred, false) +@@||noviny.sk^$xhr,1p +*$frame,domain=noviny.sk,redirect-rule=noopframe +digminecraft.com##div > [id$="_slot"]:upward(div) +rabbitstream.net##+js(set, console.clear, undefined) +himovies.*##+js(nowoif) +||i.imgur.com/*.gif$image,domain=rabbitstream.net +! pastemytxt.com popup, ad +||pastemytxt.com/downloadad.jpg +||imgbox.com^$domain=pastemytxt.com +hispasexy.org##+js(acs, decodeURI, decodeURIComponent) +hispasexy.org##+js(aopr, _cpp) +hispasexy.org##+js(aopr, popns) +javplaya.com##+js(aopr, __Y) +javfindx.com###previewBox +||javfindx.com/sw.js +masterduelmeta.com##:xpath('//*[contains(text(),"allow ads")]'):upward(3) +masterduelmeta.com##html,body:style(overflow: auto !important;) +*$xhr,redirect-rule=nooptext,domain=masterduelmeta.com +gcertificationcourse.com##+js(acs, eval, replace) +gcertificationcourse.com##[id*="PAds_"] +gcertificationcourse.com##[id*="PAds-"] +gcertificationcourse.com##+js(no-xhr-if, adsbygoogle) +@@||getfree.co.in^$script,1p +*$script,3p,redirect=noop.js,domain=shorttrick.in +shorttrick.in###wpsafe-generate, #wpsafe-link:style(display: block !important;) +shorttrick.in##+js(aost, fetch, https) +shorttrick.in##+js(aopr, checkAdsStatus) +shorttrick.in##+js(rmnt, script, /mdp|adb/i) +diglink.blogspot.com##+js(nano-sib) +gamingvital.com##+js(acs, decodeURIComponent, ai_) +gamingvital.com###tdi_132 +pornoborshch.com##+js(ra, onclick) +pornoborshch.com##.on-player-wrap3 +btcadspace.com##+js(acs, document.getElementById, AdBlock) +mmorpg.org.pl##+js(no-fetch-if, wtg-ads) +mmorpg.org.pl##div.bABcMb.sc-5odcub-0 +hostmath.com##+js(set, canRunAds, true) +playmyopinion.com##+js(acs, $, modal) +foodsdictionary.co.il##+js(no-xhr-if, /ad-) +pherotruth.com##+js(acs, setTimeout, void 0) +*$xhr,redirect-rule=nooptext,domain=stol.it +@@||pagead2.googlesyndication.com/pagead/js/adsbygoogle.js$xhr,domain=yhocdata.com +yhocdata.com##+js(nano-stb, /__ez|window.location.href/, *) +rapelust.com##+js(set, D4zz, noopFunc) +logikfx.com##.wix-blog-print-in-full-width[data-testid="mesh-container-content"] > div[class^="_"] > div[style="padding-left: 30px;"] +logikfx.com##p[style="font-size:12px; text-align:center;"] > span:has-text(Advertisement) +logikfx.com##section.wix-blog-hide-in-print p[style="font-size:12px; text-align:center;"] > span:has-text(Advertisement):upward(section) +logikfx.com##div[style="width:740px"] +javplay.me##+js(aopr, popns) +! note.sieuthuthuat.com anti-adb +note.sieuthuthuat.com##+js(set, isAdBlockActive, false) +etsy.com##body.no-touch li.wt-list-unstyled div.v2-listing-card__info > div.wt-text-caption.wt-text-grey > span:not(.wt-icon):not([aria-role]):matches-css(display:inline-block):has-text(/^Ad/i):upward(li):remove() +etsy.com##li:not(#ad-ubo) .listing-link[href*="ref=sc_gallery"]:upward(li) +www.etsy.com##[data-results-grid-container] > li > div:not([data-appears-event-data*="listing_ids"]):not([data-appears-component-name="search2_organic_listings_group"]) +javleaked.com##+js(aopr, __Y) +drydenwire.com##.modal +drydenwire.com##.modal-backdrop +drydenwire.com##[data-track-category="Sponsors"] +drydenwire.com##.promogrid +banned.video,madmaxworld.tv##+js(set, Object.prototype.ads.nopreroll_, true) +faselhd.*##.alert-danger.alert +faselhd.*###popup +||cdn.stroeerdigitalgroup.de/metatag/live/$script,domain=mittelhessen.de,redirect=noopjs +mittelhessen.de##[class*="banner"] +mittelhessen.de##[class*="Banner"] +mittelhessen.de##.adSlot +getcopy.link##+js(aopr, document.write) +getcopy.link##+js(refresh-defuser) +largescaleforums.com##+js(nostif, ).show()) +crunchyscan.fr##.col-sm-8.col-md-8.main-col > .c-sidebar +crunchyscan.fr##.widget_custom_html +*$script,redirect-rule=noopjs,domain=crunchyscan.fr +crunchyscan.fr##+js(aopr, open) +crunchyscan.fr##+js(trusted-prevent-fetch, googlesyndication, function, {"type": "cors"}) +||crunchyscan.fr/js/safe_user.js +||crunchyscan.fr/build/assets/sjs_ +||crunchyscan.fr/build/assets/module| +crunchyscan.fr##+js(aeld, DOMContentLoaded, adbl) +! 4stream.* popups +4stream.*##+js(nowoif) +techgeek.digital##+js(aopr, adblockDetector) +techgeek.digital##+js(nowoif) +techgeek.digital##+js(set, blurred, false) +techgeek.digital##.espaciodos +||raw.githubusercontent.com/expertad^$3p +||firebasestorage.googleapis.com/v0/b/gosyndication.appspot.com^ +bestpornflix.com##.table +bestpornflix.com##+js(rmnt, script, popunder) +bestpornflix.com##+js(set, flashvars.protect_block, '') +h-flash.com##+js(nowoif) +@@||h-flash.com^$ghide +h-flash.com##[href^="https://chaturbate.com/in/"] +h-flash.com###topzone +*$popunder,domain=h-flash.com +*$frame,redirect-rule=noopframe,domain=h-flash.com +h-flash.com##[href^="https://t.aagm.link/"] +h-flash.com#@#.google-ads +||imobileporn.com/premium/ +||h-flash.com/data/image/mcs/chat*$image,1p +||h-flash.com/data/image/mcs/*.gif$image,1p +||h-flash.com/data/image/candyai/$frame,1p +h-flash.com##div[style$="overflow:hidden"]:has(> a[alt="CandyAI"]) +h-flash.com##a[href^="https://a.candyai.love/"] +h-flash.com##a[style*="/data/image/mcs/chat"] +h-flash.com##.pagebody:style(height: auto !important;) +clickscoin.com##.d-sm-block.d-none +safe.elektroupdate.com#@#ins.adsbygoogle[data-ad-slot] +safe.elektroupdate.com#@#ins.adsbygoogle[data-ad-client] +safe.elektroupdate.com##.adsbygoogle:style(height: 1px !important;) +eroticity.net##+js(aopr, loadTool) +||eroticity.net/clientscript/popcode_ +||eroticity.net/clientscript/poptrigger_ +||eroticity.net/*.gif$image +dev2qa.com##+js(acs, decodeURIComponent, ai_) +ponselharian.com##+js(nowoif) +||ponselharian.com/img/download_ +! nsfw fullxxxporn. net popups +fullxxxporn.net##+js(aopr, decodeURI) +check-plagiarism.com##[id^="topads_"] +! cine. to popups +cine.to##+js(aeld, , /open.*_blank/) +thebharatexpressnews.com##+js(aopr, b2a) +jav247.top##+js(aopr, __Y) +! vtube .to/vtplay .net ads +vtube.to##+js(nowoif) +vtube.to##+js(acs, RegExp, debugger) +vtube.to##+js(aeld, popstate) +vtube.to##+js(set, D4zz, noopFunc) +/vtu_*.js$script,domain=vtbe.*|vtube.to|vtube.network +98zero.com##+js(rmnt, script, adbl) +! vumoo.cc fake player +vumoo.cc##+js(ra, href, #clickfakeplayer) +vumoo.cc###fakeplayer +vumoo.cc##a.btn-adv.btn +fashionunited.*##.adunitContainer:upward(3) +jugomobile.com##+js(aeld, DOMContentLoaded, adsBlocked) +m.liputan6.com##+js(aeld, scroll) +! papunika. com anti adb +papunika.com##+js(nostif, ai_) +basic-tutorials.de##+js(aopr, advanced_ads_ready) +! xxxvideohd.net popup +||xxxvideohd.net/js/main.course.js +||xxxvideohd.net/js/sellito.js +*$xhr,redirect-rule=noop.txt,domain=thingiverse.com +coverapi.store,tenies-online.*##+js(aopr, mm) +coverapi.store##.close00 +@@||coverapi.store^$script,1p +*$script,redirect-rule=noopjs,domain=mrlabtest.com +infinityblogger.in##+js(acs, eval, replace) +magdownload.org##+js(nostif, _0x) +magdownload.org##.home-jumbotron +*$script,domain=multiclaim.net,redirect-rule=noopjs +prepostseo.com##+js(acs, loadAdBlocker) +prepostseo.com##+js(no-fetch-if, googlesyndication) +prepostseo.com###top-head-ad +prepostseo.com###after_button_ad_desktop_2 +prepostseo.com###after_title_ad +prepostseo.com###after_title_ad_2 +prepostseo.com###above_button_ad +prepostseo.com###sidebar_ad_big +prepostseo.com###floorad-wrapper +prepostseo.com##div[id^="bsa-zone_"] +prepostseo.com##span:has-text(ADVERTISEMENT) +bluemoon-mcfc.co.uk##div.stickyContainer +bluemoon-mcfc.co.uk##[id^="snack_"] +worldtravelling.com##+js(nostif, ads) +order-order.com##+js(acs, Math.random, bait) +order-order.com###stickyfooterad +cacfutures.org,comexlive.org,daxfutures.org,dollarindex.org,dowfutures.org,ftsefutures.org,mcxlive.org,nasdaqfutures.org,ncdexlive.org,niftyfutures.org,nikkeifutures.org,sgxnifty.org,spfutures.org##+js(acs, jQuery, "No") +cacfutures.org,comexlive.org,daxfutures.org,dollarindex.org,dowfutures.org,ftsefutures.org,mcxlive.org,nasdaqfutures.org,ncdexlive.org,niftyfutures.org,nikkeifutures.org,sgxnifty.org,spfutures.org##.ads +huffpost.com##+js(set, HP_Scout.adBlocked, false) +ingles.com,spanishdict.com##+js(set, SD_IS_BLOCKING, false) +ingles.com,spanishdict.com##+js(aeld, , isBlocking) +ingles.com,spanishdict.com###adTopLarge-container +ingles.com,spanishdict.com##[id^="adSide"] +@@||d1q4kshf6f0axi.cloudfront.net/main/prebid-min-2022.js$script,domain=spanishdict.com +ikuhentai.net##div[style="position: fixed; display: block; width: 100%; height: 100%; inset: 0px; background-color: rgba(0, 0, 0, 0); z-index: 300000;"] +zeroupload.com##+js(rmnt, script, adblock) +*$script,redirect-rule=noopjs,domain=vimm.net +vimm.net###footerContainer +vimm.net###main:style(bottom: 0px !important) +vimm.net###headerAdContainerInline +surfline.com##+js(nano-stb, adFreePopup, 15000, 0.02) +surfline.com##+js(set, Object.prototype.isPremium, true) +*$script,domain=surfline.com,redirect-rule=noopjs +surfline.com##+js(set, __BACKPLANE_API__.renderOptions.showAdBlock, '') +surfline.com#@#.ad-box:not(#ad-banner):not(:empty) +surfline.com##+js(aeld, timeupdate, , elements, .quiver-cam-player--ad-not-running.quiver-cam-player--free video) +||cdn-surfline.com/*/preroll_$image,3p,domain=surfline.com +||cdn-surfline.com/*/preroll_$media,3p,redirect=noopmp3-0.1s,domain=surfline.com +! NSFW faps. club - popunder +faps.club##+js(acs, onload, open) +aspdotnet-suresh.com,tudo-para-android.com##+js(aeld, load, onload) +*.png#$image,redirect-rule=1x1.gif +*.gif#$image,redirect-rule=1x1.gif +*.jpg#$image,redirect-rule=1x1.gif +*.svg#$image,redirect-rule=1x1.gif +! thedigitalfix .com PH +thedigitalfix.com###nn_bfa_wrapper:remove() +thedigitalfix.com##+js(nosiif, debug) +thedigitalfix.com##.sticky_rail600:remove() +||bigpixel.cn/libs/plugins/blocker.js^ +bigpixel.cn##.portal_ad +striptube.net##+js(aopr, loadTool) +dulichkhanhhoa.net,noithatmyphu.vn##+js(no-fetch-if, googlesyndication) +dulichkhanhhoa.net,noithatmyphu.vn###wpsafe-generate:style(display: block !important;) +dulichkhanhhoa.net,noithatmyphu.vn###wpsafe-link:style(display: block !important;) +dulichkhanhhoa.net,noithatmyphu.vn##div[id^="wpsafe-wait"] +chiangraitimes.com##+js(acs, eval, replace) +! exo ads +desixxxtube.org,dirtyindianporn.*,freeindianporn2.com,indianpornvideos.*,kashtanka.*,kashtanka2.com,kompoz2.com,onlyindianporn.*,pakistaniporn2.com,porno18.*,xxnx.*,xxxindianporn.*##+js(aopr, exoJsPop101) +xxxhdvideo.*##+js(aopr, decodeURI) +indianporn365.net##+js(acs, document.createElement, 'script') +||dirtyindianporn.info/js/friends.sv.js +||pakistaniporn2.com/js/friends.minz.js +! amateur-couples.com,slutdump.com popunder, ads +amateur-couples.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +amateur-couples.com,slutdump.com##+js(set, dclm_ajax_var.disclaimer_redirect_url, '') +boombj.com##+js(aost, Math, _0x) +||easyads29.*^ +! xxxextreme.org popup +xxxextreme.org##+js(aeld, getexoloader) +! desitelugusex. com ads +desitelugusex.com##+js(set, D4zz, noopFunc) +mobilanyheter.net##+js(nostif, ai_) +! a8ix .live/atishmkv aliases +a8ix.*,atishmkv.*,mkv.*##.idmuvi-bannerplayer +a8ix.*,atishmkv.*,mkv.*##.idmuvi-center-ads +a8ix.*,atishmkv.*##.idmuvi-topbanner-aftermenu +a8ix.*,atishmkv.*##.inner-floatbanner-bottom +a8ix.*,atishmkv.*##.idmuvi-footerbanner +a8ix.*,atishmkv.*###custom_html-21 +xcity.org##+js(aopr, loadTool) +xcity.org##+js(set-cookie, popunder, 1) +! Counter ads and requests inside doubleclick. net iFrames (general fix) +googleads.g.doubleclick.net###google-center-div +googleads.g.doubleclick.net###abgc +googleads.g.doubleclick.net##html[i-amphtml-no-boilerplate][amp4ads][class="i-amphtml-inabox"] +googleads.g.doubleclick.net###mys-wrapper +googleads.g.doubleclick.net##.jar +*$domain=googleads.g.doubleclick.net +stringreveals.com##+js(no-xhr-if, googlesyndication) +! mavavid. com popups +mavavid.com##+js(aopr, __Y) +! dvdplay. guru|sbs popups +*$script,3p,domain=dvdplay.* +dvdplay.*##+js(set, D4zz, noopFunc) +dvdplay.*##^script[data-cfasync]:has-text(decodeURIComponent) +acervodaputaria.com.br##+js(acs, decodeURI, decodeURIComponent) +! NSFW comicspornow. com popup +comicspornow.com##+js(aopr, decodeURI) +||comicspornow.com/*.php$script,1p +diampokusy.com##+js(aopr, __Y) +@@||shortx.net^$ghide +shortx.net##+js(aeld, load, nextFunction) +shortx.net##+js(set, blurred, false) +! mmopeon.ru popup +mmopeon.ru##+js(acs, decodeURI, decodeURIComponent) +! needrombd.com +needrombd.com##+js(acs, eval, replace) +! teluguonlinemovies. me popups +teluguonlinemovies.*##+js(nowoif) +galaxyfirmware.*#@#.textad +norton.com##+js(window-close-if, /protect?) +@@||play.tv3.lv^$script,1p +*$image,domain=play.tv3.lv,redirect-rule=1x1.gif +*$script,domain=play.tv3.lv,redirect-rule=noopjs +@@||play.tv3.lt^$script,1p +*$image,domain=play.tv3.lt,redirect-rule=1x1.gif +*$media,domain=play.tv3.lt,redirect=noopmp3-0.1s +*$script,domain=play.tv3.lt,redirect-rule=noopjs +*$image,domain=play.tv3.ee,redirect-rule=1x1.gif +*$script,domain=play.tv3.ee,redirect-rule=noopjs +play.tv3.ee,play.tv3.lt,play.tv3.lv,tv3play.skaties.lv##+js(set, Object.prototype.isNoAds, {}) +@@||play.tv3.ee^$script,1p +@@*$ghide,domain=play.tv3.* +play.tv3.lv##+js(set, tv3Cmp.ConsentGiven, true) +! dafontvn.com timer +redirect.dafontvn.com##.progress +redirect.dafontvn.com###btngetlink:style(display: inline-block !important) +redirect.dafontvn.com##+js(nano-sib, distance) +@@||gsmware.com^$ghide +gsmware.com##.adtester-container +gsmware.com##.HTML.widget .adsbygoogle:upward(.widget) +gsmware.com##.kabaradd +gsmware.com##+js(noeval-if, adblock) +gamingforecast.com##+js(acs, addEventListener, popunder) +@@||a.poki.com/prebid/$script,domain=poki-gdn.com|repuls.io +||imasdk.googleapis.com/js/sdkloader/ima3.js$script,redirect=google-ima.js,domain=poki-gdn.com|repuls.io +@@||g.doubleclick.net/gampad/ads?*&url=https%3A%2F%2Fgames.poki.com$xhr,domain=imasdk.googleapis.com +@@||g.doubleclick.net/gampad/ads?*&url=https%3A%2F%2Frepuls.io$xhr,domain=imasdk.googleapis.com +||redirector.gvt1.com/videoplayback/id/*/source/gfp_video_ads/$media,redirect=noop-1s.mp4,domain=poki-gdn.com|repuls.io +poki.*##div[class*="_AdvertisementContainer"] +repuls.io###partnerAd_letter +poki.*##div[width="300"][height="250"]:upward(1) +poki.*##div[width="728"][height="90"]:upward(1) +||ay.delivery/client-v2.js^$script,3p,redirect=noopjs +prajwaldesai.com##+js(nostif, ai_) +prajwaldesai.com##+js(nostif, site-access) +||vlitag.com^$script,redirect-rule=noopjs,domain=mangasco.com +downloadr.in##+js(nostif, show) +downloadr.in##+js(nano-stb, countdown) +drawize.com##+js(acs, chAdblock) +! benzin-preis.ch +@@||benzin-preis.ch^$ghide +!#if cap_html_filtering +topembed.pw##^script:has-text(adserverDomain) +!#else +topembed.pw##+js(rmnt, script, adserverDomain) +!#endif +||ublockpop.com^$all +||drectsearch.com^$all +! hindimovies. to propeller ads +hindimovies.to##+js(acs, Math, String.fromCharCode) +hindimovies.to##+js(nowoif) +hdmovie5.*,hdmovie2.*###clickfakeplayer[href]:remove-attr(href) +@@||bootdey.com^$ghide +bootdey.com##+js(nostif, offsetHeight) +! mult34. com popunder +mult34.com##+js(aopr, decodeURI) +valuable.hatenablog.com##+js(acs, document.addEventListener, google_ad_client) +||berangkasilmu.com^$3p +journaldemontreal.com,tvanouvelles.ca##+js(no-fetch-if, doubleclick) +journaldemontreal.com##+js(no-xhr-if, doubleclick) +||quebecormedia.com/infojdem/lib/cheezwhiz/$script +||rubiconproject.com^$xhr,3p,redirect-rule=nooptext,domain=journaldemontreal.com +@@||ads.rubiconproject.com/prebid/*_JournalDeMontreal.js$script,3p,domain=journaldemontreal.com +@@||securepubads.g.doubleclick.net/tag/js/gpt.js$script,3p,domain=journaldemontreal.com +@@||securepubads.g.doubleclick.net/pagead/managed/js/gpt/*/pubads_impl.js$script,3p,domain=journaldemontreal.com +journaldemontreal.com###banner +journaldemontreal.com##.bigbox-container +fox.com##+js(no-xhr-if, googlesyndication) +fox.com,foxsports.com##+js(json-prune, ads) +fox.com,foxsports.com##+js(m3u-prune, /\,ad\n.+?(?=#UPLYNK-SEGMENT)/gm, /uplynk\.com\/.*?\.m3u8/) +||link.theplatform.com/s/*/media/*=m3u&*_webdesktop_vod*$xhr,domain=foxsports.com,removeparam=/^((?!formats|profile).)*$/ +://foxvideo-sports$xhr,3p,removeparam=ad.prof,domain=foxsports.com +||digitalvideoplatform.com/vod/*/index.m3u8$xhr,removeparam=platform,domain=fox.com +@@||wintub.com^$ghide +poki-gdn.com##+js(aopr, alert) +||static.gamezop.com/creatives^$image,3p +chimicamo.org##+js(no-fetch-if, googlesyndication) +chimicamo.org##+js(no-xhr-if, ads) +chimicamo.org##.widget:has-text(Adv) +xhand.com##+js(set, flashvars.adv_start_html, '') +xhand.com##+js(set, flashvars.adv_pause_html, '') +/js/ppndr. +inwepo.co##+js(aopr, b2a) +! anti adb initBlocked +||ssl.geoplugin.net/javascript.gp$xhr,redirect-rule=noopjs +*#*/ad/$image,redirect-rule=1x1.gif +xubster.com##+js(nano-stb, remaining, 1000, 0.001) +xubster.com###countdown +! ghior. com anti adblock +ghior.com##+js(rmnt, script, deblocker) +obutecodanet.ig.com.br##+js(no-xhr-if, googlesyndication) +eztv.*##+js(nowoif) +eztv.*##+js(nostif, adb) +eztv.*##table:has-text(VPN) +eztv.*##^script:has-text(admc) +firmwarex.net##+js(no-xhr-if, googlesyndication) +firmwarex.net##+js(aost, setTimeout, adsBlocked) +firmwarex.net##+js(no-fetch-if, googlesyndication, length:10, {"type":"cors"}) +! proxy torrent sites popups +piraproxy.app,theproxy.*##+js(nowoif) +piraproxy.app,theproxy.*##+js(aopr, _wm) +unblocksite.pw##+js(aopr, XMLHttpRequest) +unblocksite.pw##+js(aopr, open) +unblocksite.pw##div[id][onclick^="window.open('https://vpn-offers.com/"] +unblocksite.pw##.antoic +unblocksite.pw##.all-linked +*$script,denyallow=cloudflare.com|hwcdn.net|jquery.com,domain=piraproxy.app|theproxy.*|unblocksite.pw +||adblockultra.com^$all +/j/m/qqqq.js? +.com/1?z=$script,3p +.com/2?z=$script,3p +.net/1?z=$script,3p +.net/2?z=$script,3p +/app/apx14.js +/app/x12.js +/hy.js?q22q2q2 +/zpp/zpp4.js +! whats-on-netflix.com anti adb +whats-on-netflix.com##+js(acs, eval, replace) +dongknows.com##+js(no-fetch-if, /ads|doubleclick/) +dongknows.com##+js(nostif, /Ads|adbl|offsetHeight/) +dongknows.com##+js(acs, eval, replace) +dongknows.com##+js(aeld, load, .innerHTML) +dongknows.com##body > div > [href^="https://www.amazon.com/deals/"] +dongknows.com##.dkt-amz-bottom > [href^="https://www.amazon.com/deals/"] +dongknows.com##.dkt-amz-head +@@||dongknows.com^$ghide +tlin.me##+js(set, blurred, false) +! mypornhere.com popup, ads +mypornhere.com##+js(set, flashvars.adv_start_html, '') +mypornhere.com##.item[style="text-align:center !important;"] +welt.de##[id^="outbrain_widget_"].OUTBRAIN[data-src]:has(> .ob-widget > .ob-widget-header > span.ob-grid-header-text:has-text(/^MEHR AUS DEM WEB|MEHR AUS DEM NETZ|AUCH INTERESSANT$/)) +welt.de##[id^="outbrain_widget_"].OUTBRAIN[data-src]:has(> .ob-widget > .ob-widget-items-container > .ob-dynamic-rec-container > a[data-adv-id][rel*="sponsored"]) +welt.de##[id^="outbrain_widget_"].OUTBRAIN[data-src]:has(:shadow(.ob-widget > .ob-widget-items-container > .ob-dynamic-rec-container > a[data-adv-id][rel*="sponsored"])) +welt.de##.c-ad-container +welt.de##+js(ra, onmousedown, .ob-dynamic-rec-link, stay) +welt.de##.q-advertisement-banner +welt.de##[id^="superbanner"] +driveplayer.net##+js(nowoif) +bulbagarden.net##+js(set, setupSkin, noopFunc) +filmeserialegratis.*,fsplayer.*##+js(nowoif) +filessrc.com,srcimdb.com##+js(nano-sib, counter) +! jav.re popup +jav.re##+js(aost, onload, /app.js) +##.adsbyrunactive +mangahub.io###adblock-notice +mangahub.io##.ads-container +*$script,3p,denyallow=cloudfront.net|disqus.com|disquscdn.com|facebook.net|fastlylb.net|fbcdn.net|google.com|onesignal.com,domain=mangahub.io +||blocksly.org^$all +forsal.pl##+js(no-fetch-if, dqst.pl) +note1s.com##.countdown +note1s.com##+js(ra, disabled, button) +rintor.*##+js(aopr, loadTool) +! nsfw watchomovies. life ads +watchomovies.*##+js(rmnt, script, popunder) +||a.streamoupload.$script +###tabVideo > .rmedia +/go/*?ident=$frame,1p +/api/popv2.php$xhr,1p +pornwhite.com##.bottom-banners +pornwhite.com##.player-spots +||pornwhite.com/js/customscript.js +! playtamil. tube ads +!#if env_mobile +||playtamil.*^$csp=script-src 'self' +!#endif +! antiadb iptvjournal. com +iptvjournal.com##+js(no-fetch-if, googlesyndication) +iptvjournal.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) +iptvjournal.com##div[id^="wpsafe-wait"] +coloredmanga.com##+js(aost, Math.random, inlineScript) +||desirefx.com^$frame,redirect=noopframe,domain=uploadcloud.pro +uploadcloud.pro##+js(nano-stb, show, 4000) +! coolmoviez. skin ads +||coolmoviez.*^$csp=default-src 'self' +akumanimes.com##+js(acs, eval, replace) +m4uhd.*##+js(aopr, mm) +||minochinos.com/assets/jquery/player.js +depvailon.com##+js(aopr, PvVideoSlider) +depvailon.com##+js(aopw, _chjeuHenj) +depvailon.com##.spots +depvailon.com##.c-normdenomination-output +*$script,redirect-rule=noopjs,domain=elkjop.no +younetu.*##+js(nowoif) +younetu.*##+js(aopr, doSecondPop) +younetu.*##+js(set, adblockcheck, false) +||younetu.co/cdn-cgi/trace$xhr,1p +! animehub.ac,animeflv.ac popup +||animehub.ac/api/pop.php +autotrader.co.uk##.search-page__products > [data-is-promoted-listing] +autotrader.co.uk##.search-page__result .listings-standout:upward(.search-page__result) +autotrader.co.uk##.searchResults .product-card__ad-copy:upward(li) +autotrader.co.uk##section[data-testid="desktop-search"] .infinite-scroll-component > ul > li:has(span[data-testid="GPT_LISTING"]) +autotrader.co.uk##+js(json-prune, [].data.searchResults.listings.[-].targetingSegments) +! tiki.vn search ads +tiki.vn##div[class^="SearchAutocomplete"] > div[class^="style__StyledSuggestion"] > div:has(> a.brand-ad) +||111.90.150.10/wp-content/uploads/*.gif$image,1p +111.90.150.10##+js(acs, $, noConflict) +111.90.150.10##+js(aopr, preroll_helper.advs) +111.90.150.10###secondary > .widget_custom_html +! repelishd. cx popups +repelishd.*##+js(nowoif) +hdhub4u.*,hblinks.pro##+js(aopr, mm) +hdhub4u.*##+js(nowoif) +hdhub4u.*##.watch-hd +hdhub4u.*##.hd-links +hdhub4u.*##[href*="?aff"], [href*="snvhost.com"] +*$script,3p,domain=hdhub4u.*,denyallow=fastlylb.net|googleapis.com|disqus.com|disquscdn.com|cloudfront.net +sushi-scan.*##+js(nostif, show) +traderepublic.community##+js(nostif, /show|innerHTML/) +! watchseries9. cc popups +watchseries9.*##+js(aopr, mm) +coromon.wiki.gg##+js(aost, document.createElement, create_ad) +#@##adContext +#@##ad_img +#@##downloadAd +#@##topBannerAd +#@##topbannerad +#@##weatherad +###adContext:not(:empty) +###ad_img:not(:empty) +###downloadAd:not(:empty) +###topBannerAd:not(:empty) +###topbannerad:not(:empty) +###weatherad:not(:empty) +||bitfly.io/js/nt.js +k1nk.co##+js(aeld, click, popunder) +k1nk.co##+js(nowoif) +k1nk.co##+js(set, console.clear, noopFunc) +||k1nk.co/videos/*/_.pagespeed.$script,1p +y2mate.com##+js(aopr, open) +@@||anonigviewer.com/assets/js/peelad.js$script,1p +khsm.io##+js(nostif, getComputedStyle) +||amazon-adsystem.com/aax2/apstag.js$domain=tasteofhome.com,important +descargatepelis.com##+js(nano-sib, contador) +descargatepelis.com##+js(aeld, DOMContentLoaded, window.open) +descargatepelis.com##a[href^="http://1winpb.com/"] +teen-hd-sex.com,tube-teen-18.com,xxx-asian-tube.com##+js(aopr, exoNoExternalUI38djdkjDDJsio96) +/\.com\/[0-9a-z]{12,}\/[0-9a-z]{12,}\.js$/$script,1p,domain=tube-teen-18.com|teen-hd-sex.com|xxx-asian-tube.com +! videofilms /prosongs .link popups +videofilms.*,prosongs.*##+js(aopr, __Y) +hollywoodlife.com##+js(set, Object.prototype.enableInterstitial, false) +entireweb.com##+js(acs, setInterval, addAds) +||mathwarehouse.com/sitefiles/*/js/fixblock.js?$script,1p +babia.to##+js(acs, $, adsBlocked) +babia.to##+js(nostif, /show|document\.createElement/) +babia.to##body > div[id][style="display: block;"] +! sex-amateur-clips.com => exo ads + popups +sex-amateur-clips.com##+js(acs, document.querySelectorAll, popMagic) +sex-amateur-clips.com##+js(aeld, getexoloader) +sex-amateur-clips.com###dclm_modal_content +sex-amateur-clips.com##*:style(filter: none !important) +sex-amateur-clips.com###dclm_modal_screen +! javqis. com popunder +javqis.com##+js(aopr, decodeURI) +/vast-new/src/videojs-preroll.js$script +nsfwzone.xyz##+js(aopr, __Y) +sdefx.cloud##+js(set, D4zz, noopFunc) +edufileshare.com##+js(nano-sib, display) +xhomealone.com##+js(set, flashvars.popunder_url, '') +watchasians.cc##+js(aeld, click, popunder) +watchasians.cc##+js(set, console.clear, noopFunc) +! afdah2. com ads +afdah2.com##+js(aopr, mm) +@@||thinktibits.blogspot.com^$ghide +! proxy site ads +androidapks.biz,androidsite.net,animesite.net,computercrack.com,crackedsoftware.biz,crackfree.org,downloadgames.info,downloadsite.org,ebooksite.org,emulatorsite.com,freeflix.info,freemoviesu4.com,freesoccer.net,fseries.org,gamefast.org,gamesite.info,gostreamon.net,hindisite.net,isosite.org,macsite.info,mangasite.org,megamovies.org,moviefree2.com,moviesite.app,moviesx.org,musicsite.biz,patchsite.net,pdfsite.net,play1002.com,productkeysite.com,romsite.org,seriesite.net,siteapk.net,siteflix.org,sitegames.net,sitekeys.net,sitepdf.com,sitesunblocked.*,sitetorrent.com,softwaresite.net,superapk.org,tvonlinesports.com,warezsite.net,watchmovies2.com,watchsite.net,youapk.net##+js(aopr, open) +/sw.js$script,domain=androidapks.biz|androidsite.net|animesite.net|computercrack.com|crackedsoftware.biz|crackfree.org|downloadgames.info|downloadsite.org|ebooksite.org|emulatorsite.com|freeflix.info|freemoviesu4.com|freesoccer.net|fseries.org|gamefast.org|gamesite.info|gostreamon.net|hindisite.net|isosite.org|macsite.info|mangasite.org|megamovies.org|moviefree2.com|moviesite.app|moviesx.org|musicsite.biz|patchsite.net|pdfsite.net|play1002.com|productkeysite.com|romsite.org|seriesite.net|siteapk.net|siteflix.org|sitegames.net|sitekeys.net|sitepdf.com|sitesunblocked.*|sitetorrent.com|softwaresite.net|superapk.org|tvonlinesports.com|warezsite.net|watchmovies2.com|watchsite.net|youapk.net +/oho.js$script,domain=androidapks.biz|androidsite.net|animesite.net|computercrack.com|crackedsoftware.biz|crackfree.org|downloadgames.info|downloadsite.org|ebooksite.org|emulatorsite.com|freeflix.info|freemoviesu4.com|freesoccer.net|fseries.org|gamefast.org|gamesite.info|gostreamon.net|hindisite.net|isosite.org|macsite.info|mangasite.org|megamovies.org|moviefree2.com|moviesite.app|moviesx.org|musicsite.biz|patchsite.net|pdfsite.net|play1002.com|productkeysite.com|romsite.org|seriesite.net|siteapk.net|siteflix.org|sitegames.net|sitekeys.net|sitepdf.com|sitesunblocked.*|sitetorrent.com|softwaresite.net|superapk.org|tvonlinesports.com|warezsite.net|watchmovies2.com|watchsite.net|youapk.net +mat6tube.com##+js(set, ads, undefined) +||vbcdn.com/cdn/video_advt/*$media,redirect=noopmp3-0.1s +veblr.com###advt_click_href_link_upper +veblr.com##.advt-content +hotabis.com##+js(set, td_ad_background_click_link, undefined) +hotabis.com##[href^="https://axiadata.co.id"] +||hotabis.com/*/ads$image +||cxm-api.fifa.com/fifaplusweb/api/video/*$xhr,removeparam=adConfig +fifa.com##.theoplayer-ad-overlay-component +fifa.com##[href^="https://pubads.g.doubleclick.net/"] +||imasdk.googleapis.com/js/sdkloader/ima3.js$redirect=google-ima.js,domain=fifa.com +||fifa.com/api/v*/ad-manager/$redirect=nooptext +! popunder-sites +phimmoiaz.cc##+js(aopr, popunder) +mangahentai.xyz##+js(aopr, loadXMLDoc) +player.subespanolvip.com##+js(aopr, BetterJsPop) +racedepartment.com##+js(acs, $, adsBlocked) +||images.outbrainimg.com^$image +! hentaimoe.me popup +hentaimoe.me##+js(acs, Date, 'shift') +! uploadbaz. me ads +uploadbaz.*##+js(acs, onload) +uploadbaz.*##+js(acs, Math.imul) +freecodezilla.net##+js(aeld, DOMContentLoaded, adsBlocked) +freecodezilla.net##+js(no-xhr-if, googlesyndication) +! hdmoviesmaza. pw popups +hdmoviesmaza.*##+js(nowoif) +||111.90.150.149/wp-content/uploads/*.gif$image,1p +111.90.150.149##+js(acs, jQuery, magnificPopup) +111.90.150.149##+js(aopr, preroll_helper.advs) +111.90.150.149##.idmuvi-topbanner-aftermenu +111.90.150.149##[href*="buaksib.in"] +inbbotlist.com##+js(no-fetch-if, googlesyndication) +inbbotlist.com###wpsafe-generate, #wpsafe-link:style(display: block !important;) +inbbotlist.com##div[id^="wpsafe-wait"] +apkmagic.com.ar##+js(no-xhr-if, ads) +@@||gamaniak.com^$script,1p +@@||gamaniak.com^$ghide +! moviesjoy. pw/.best/.plus/ .to /. is popunders +moviesjoy.*##+js(aopr, mm) +moviesjoy.*##+js(nowoif) +moviesjoy.*###fcnbox +moviesjoy.*##[href*="moviesflix4k"] +moviesjoy.*##.premodal.modal +moviesjoy.*##.show.modal-backdrop +moviesjoy.*##body:style(overflow: auto !important;) +currencyconverterx.com##+js(acs, document.createElement, register) +currencyconverterx.com##.block-after-head +currencyconverterx.com##.block-inside-blocks +||imasdk.googleapis.com/js/core/bridge*.html$frame,domain=html5.gamemonetize.co,important +html5.gamemonetize.co##+js(nostif, MobileInGameGames) +gamesfrog.com##.banner > span +/\/img\/(?!new).+\.gif/$image,1p,domain=jennylist.xyz +xxxxvideo.uno##.sticky-elem +xxxxvideo.uno##.place-wink +r3owners.net##+js(acs, $, adsBlocked) +apkmodhub.in##+js(acs, String.fromCharCode, ai_adb) +apkmodhub.in##.sdl_text +apkmodhub.in##.show_download_links:style(display: block !important) +@@||digilibraries.com^$ghide +digilibraries.com##.adsbygoogle:style(height: 0px !important; visibility: collapse;) +@@||imasdk.googleapis.com/js/sdkloader/ima3.js$script,domain=hidive.com +3hentai.net##+js(nowoif) +3hentai.net###header-ban-agsy +gaget.hatenablog.com##+js(acs, document.addEventListener, google_ad_client) +celtadigital.com##+js(nostif, show) +droidmirror.com##+js(nano-sib, counter) +slidesgo.com##.ssm_adunit_container:upward([id^="list_ads"]) +apkmaven.*##+js(no-xhr-if, googlesyndication) +apkmaven.*##+js(aeld, DOMContentLoaded, adsBlocked) +apkmaven.*##+js(set, adBlockDetected, falseFunc) +apkmaven.*###wpsafe-generate, #wpsafe-link:style(display: block !important;) +apkmaven.*##div[id^="wpsafe-wait"] +apkmaven.*###countdown +apkmaven.*###download_link:style(display: block !important;) +photopea.com##div[style]:has(> a[href*="photopea.com"][href*="ads"]) +!#if cap_html_filtering +||photopea.com^$doc,replace=// + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/blank.html b/android/app/src/main/assets/extensions/ublock_origin/blank.html new file mode 100644 index 00000000..be329a5c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/blank.html @@ -0,0 +1,11 @@ + + + + + + +uBO blank + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/cloud-ui.html b/android/app/src/main/assets/extensions/ublock_origin/cloud-ui.html new file mode 100644 index 00000000..366cf72a --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/cloud-ui.html @@ -0,0 +1,23 @@ + + + + + + + +
+
+ + + + +
+
cog
+
+   +
+
+
+
+ + diff --git a/android/app/src/main/assets/extensions/ublock_origin/code-viewer.html b/android/app/src/main/assets/extensions/ublock_origin/code-viewer.html new file mode 100644 index 00000000..caddbdaa --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/code-viewer.html @@ -0,0 +1,54 @@ + + + + + + +Code viewer + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/1p-filters.css b/android/app/src/main/assets/extensions/ublock_origin/css/1p-filters.css new file mode 100644 index 00000000..6e449484 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/1p-filters.css @@ -0,0 +1,33 @@ +html { + height: 100vh; + height: 100svh; + overflow: hidden; + width: 100vw; + } +body { + display: flex; + flex-direction: column; + height: 100%; + justify-content: stretch; + overflow: hidden; + overflow-y: auto; + width: 100%; + } +.body { + flex-shrink: 0; + } +/* https://github.com/uBlockOrigin/uBlock-issues/issues/3058 */ +:root.mobile body { + min-height: unset; + } +html:not(.mobile) [data-i18n="1pTrustWarning"] { + font-weight: bold; + } +.codeMirrorContainer { + flex-grow: 1; + } +#userFilters { + min-height: 8em; + text-align: left; + word-wrap: normal; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/3p-filters.css b/android/app/src/main/assets/extensions/ublock_origin/css/3p-filters.css new file mode 100644 index 00000000..f5bed6b8 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/3p-filters.css @@ -0,0 +1,237 @@ +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } + } +body { + margin-bottom: 6rem; + } +#actions { + background-color: var(--surface-1); + position: sticky; + top: 0; + z-index: 10; + } +#buttonUpdate.active { + pointer-events: none; + } +#buttonUpdate.active .fa-icon svg, +body.working #buttonUpdate:not(.disabled) .fa-icon svg { + animation: spin 1s linear infinite; + transform-origin: 50%; + } + +body.updating #actions, +body.working #actions { + cursor: progress; + } +body.updating #actions #buttonUpdate, +body.working #actions button { + pointer-events: none; + } + +.listExpander { + font-size: 18px; + padding: 0; + } +.listExpander:first-child { + justify-content: flex-start; + min-width: 20px; + } +.listExpander:not(:first-child) { + color: var(--checkbox-checked-ink); + fill: var(--checkbox-checked-ink); + } +.listExpander svg { + transform: rotate(90deg); + transform-origin: 50%; + } + +#lists .fa-icon:hover { + transform: scale(1.25); + } + +#lists .rootstats.expanded .listExpander svg { + transform: rotate(180deg); + } + +#lists .searchfield { + margin-block-start: calc(var(--font-size) * 0.75); + margin-inline-start: var(--checkbox-size); + } +#lists.searchMode > .listEntries .listEntries, +#lists.searchMode > .listEntries .listEntry.searchMatch { + display: flex !important; + } +#lists.searchMode > .listEntries .listEntry { + display: none; + } +#lists.searchMode > .listEntries .listExpander { + visibility: hidden; + } + +#listsOfBlockedHostsPrompt { + cursor: pointer; + } + +#lists .listEntries { + display: flex; + flex-direction: column; + margin-inline-start: var(--checkbox-size); + } +#lists > .listEntries { + margin-inline-start: 0; + } +#lists .listEntry { + align-items: flex-start; + flex-direction: column; + margin-bottom: 0; + margin-inline-start: 0; + white-space: nowrap; + } +#lists .listEntry[data-key="user"] { + margin-top: 0; + } +#lists .listEntry > .detailbar { + column-gap: calc(var(--default-gap-xxsmall) + 2px); + display: inline-flex; + } +#lists .listEntry[data-key="user"] > .detailbar { + display: none; + } +#lists .listEntry[data-role="node"].expanded > .detailbar .listExpander svg { + transform: rotate(180deg); + } +#lists .listEntry[data-parent="root"]:not(.expanded) > .listEntries > .listEntry:not(.checked):not(.isDefault):not(.stickied) { + display: none; + } +#lists .listEntry:not([data-parent="root"]):not(.expanded) > .listEntries > .listEntry { + display: none; + } +#lists .nodestats { + align-self: flex-end; + color: var(--info0-ink); + fill: var(--info0-ink); + cursor: default; + font-size: var(--font-size-smaller); +} +#lists .iconbar { + column-gap: var(--default-gap-xxsmall); + color: var(--info0-ink); + fill: var(--info0-ink); + display: inline-flex; + flex-direction: row; + font-size: 120%; + } +#lists .iconbar a { + color: var(--info0-ink); + fill: var(--info0-ink); + } +#lists .iconbar .fa-icon { + display: none; + } +#lists .iconbar .content { + display: inline-flex; + } +#lists .iconbar a.towiki { + display: inline-flex; + } +#lists .listEntry > .detailbar .iconbar a.support { + display: inline-flex; + } +#lists .listEntry > .detailbar .iconbar a.support[href="#"] { + display: none; + } +#lists .iconbar .remove, +#lists .iconbar .unsecure, +#lists .iconbar .failed { + color: var(--info3-ink); + fill: var(--info3-ink); + cursor: pointer; + } +#lists .listEntry.external > .detailbar .iconbar .remove { + display: inline-flex; + } +#lists .listEntry > .detailbar .iconbar a.mustread { + color: var(--info1-ink); + fill: var(--info1-ink); + display: inline-flex; + } +#lists .listEntry > .detailbar .iconbar a.mustread[href="#"] { + display: none; + } +#lists .listEntry .leafstats { + align-items: flex-end; + color: var(--info0-ink); + fill: var(--info0-ink); + display: none; + font-size: var(--font-size-xsmall); + margin-inline-start: calc(var(--checkbox-size) + var(--checkbox-margin-end)); +} +#lists .listEntry > .detailbar .leafstats { + margin-inline-start: 0; + } +#lists .listEntry.checked > .leafstats, +#lists .listEntry.checked > .detailbar .leafstats { + display: inline-flex; +} +#lists .iconbar .status { + cursor: default; + display: none; +} +#lists .listEntry.checked.unsecure > .detailbar .iconbar .unsecure { + display: inline-flex; + } +#lists .listEntry.failed > .detailbar .iconbar .failed { + display: inline-flex; + } +#lists .iconbar .cache { + cursor: pointer; + } +#lists .listEntry.checked.cached:not(.obsolete) > .detailbar .iconbar .cache { + display: inline-flex; + } +#lists .listEntry.cached.recent:not(.obsolete) > .detailbar .iconbar .cache { + color: var(--dashboard-happy-green); + fill: var(--dashboard-happy-green); + } +#lists .iconbar .obsolete { + color: var(--info2-ink); + fill: var(--info2-ink); + } +body:not(.updating,.working) #lists .listEntry.checked.obsolete > .detailbar .iconbar .obsolete { + display: inline-flex; + } +#lists .iconbar .updating { + transform-origin: 50%; + } +body.updating #lists .listEntry.checked.obsolete > .detailbar .iconbar .updating, +body.working #lists .listEntry.checked.obsolete:not(.cached) > .detailbar .iconbar .updating { + animation: spin 1s steps(8) infinite; + display: inline-flex; + } + +#lists .listEntry.toRemove .checkbox { + visibility: hidden; + } +#lists .listEntry.toRemove .listname { + text-decoration: line-through; + } + +#lists .listEntry[data-role="import"].expanded .listExpander svg { + transform: rotate(180deg); + } +#lists .listEntry[data-role="import"].expanded textarea { + visibility: visible; + } +#lists .listEntry[data-role="import"] textarea { + border: 1px solid #ccc; + box-sizing: border-box; + display: block; + font-size: smaller; + height: 6em; + margin: 0; + resize: vertical; + visibility: hidden; + white-space: pre; + width: 100%; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/about.css b/android/app/src/main/assets/extensions/ublock_origin/css/about.css new file mode 100644 index 00000000..8c3afcdc --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/about.css @@ -0,0 +1,3 @@ +body { + margin-bottom: 6rem; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/advanced-settings.css b/android/app/src/main/assets/extensions/ublock_origin/css/advanced-settings.css new file mode 100644 index 00000000..10225dd9 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/advanced-settings.css @@ -0,0 +1,27 @@ +html { + height: 100vh; + height: 100svh; + overflow: hidden; + width: 100vw; + } +body { + display: flex; + flex-direction: column; + height: 100%; + justify-content: stretch; + overflow: hidden; + width: 100%; + } +.body { + flex-shrink: 0; + } +.codeMirrorContainer { + flex-grow: 1; + } +#advancedSettings { + border: var(--default-gap-xxsmall) solid var(--surface-2); + text-align: left; + } +.CodeMirror-wrap pre { + word-break: break-all; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/asset-viewer.css b/android/app/src/main/assets/extensions/ublock_origin/css/asset-viewer.css new file mode 100644 index 00000000..d2df68a1 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/asset-viewer.css @@ -0,0 +1,80 @@ +/** + uBlock Origin - a browser extension to block requests. + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +body { + border: 0; + display: flex; + flex-direction: column; + height: 100vh; + height: 100svh; + margin: 0; + overflow: hidden; + padding: 0; + width: 100vw; + } +#subscribe { + display: flex; + flex-shrink: 0; + justify-content: space-between; + max-height: 6em; + padding-inline-end: 0.5em; + } +#subscribe.hide { + display: none; + } +.logo { + background-color: #fffa; + flex-shrink: 0; + width: 2em; + } +#subscribePrompt { + display: inline-flex; + flex-direction: column; + padding: 0.5em; + } +#subscribePrompt > span { + font-weight: bold; + } +#subscribePrompt > a { + font-size: 14px; + word-break: break-all; + } +#subscribe > button { + align-self: center; + } +#subscribe > .fa-icon { + color: var(--accent-ink-1); + fill: var(--accent-ink-1); + font-size: 20px; + } +body.loading #subscribe > button, +body:not(.loading) #subscribe > .fa-icon { + display: none; + } +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } + } +body.loading #subscribe > .fa-icon > svg { + animation: spin 1s steps(8) infinite; + } +#content { + flex-grow: 1; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/click2load.css b/android/app/src/main/assets/extensions/ublock_origin/css/click2load.css new file mode 100644 index 00000000..b6d39249 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/click2load.css @@ -0,0 +1,53 @@ +/** + uBlock Origin - a browser extension to block requests. + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +body { + align-items: center; + border: 1px solid var(--ubo-red); + box-sizing: border-box; + display: flex; + flex-direction: column; + height: 100vh; + padding: 0 2px; + position: relative; + width: 100vw; + } + +.logo { + left: 0; + padding: 2px 1px; + position: absolute; + top: 0; + } + +#frameURL { + font-family: monospace; + font-size: 90%; + overflow-y: auto; + word-break: break-all; + } +#frameURL > a { + font-size: 1rem; + } + +#clickToLoad { + cursor: default; + margin-bottom: 1em; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/cloud-ui.css b/android/app/src/main/assets/extensions/ublock_origin/css/cloud-ui.css new file mode 100644 index 00000000..1891a1dd --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/cloud-ui.css @@ -0,0 +1,104 @@ +#cloudWidget { + background-color: var(--surface-2); + margin: 0.5em 0; + min-width: max-content; + position: relative; + } +#cloudWidget.hide { + display: none; + } +#cloudWidget div { + display: flex; + } +#cloudToolbar { + align-items: flex-start; + flex-wrap: nowrap; + justify-content: space-between; + } +#cloudToolbar > div:first-of-type { + margin: 0.5em; + } +#cloudToolbar button { + padding: 0 0.25em; + position: relative; + } +#cloudToolbar button .fa-icon { + font-size: 180%; + } +#cloudToolbar button[disabled] { + visibility: hidden; + } +#cloudToolbar button.error { + color: var(--info3-ink); + } +#cloudPullAndMerge { + margin-left: 0.25em; + } +#cloudPullAndMerge > span:nth-of-type(2) { + font-size: 90%; + position: absolute; + right: 0; + top: 0; + } +#cloudInfo { + flex-shrink: 0; + font-size: 90%; + margin: 0 1em; + overflow: hidden; + padding: 0; + white-space: pre-line; + } +#cloudCapacity { + background-color: var(--surface-3); + height: 4px; + } +#cloudCapacity > div { + background-color: var(--cloud-total-used-surface); + } +#cloudCapacity > div > div { + background-color: var(--cloud-used-surface); + } +#cloudError { + color: var(--info3-ink); + flex-grow: 1; + flex-shrink: 2; + font-size: small; + margin: 0 0.5em 0.5em 0.5em; + } +#cloudError:empty { + display: none; + } +#cloudCog { + color: var(--ink-3); + fill: var(--ink-3); + cursor: pointer; + font-size: 110%; + justify-content: flex-end; + padding: 0.4em; + } +#cloudCog:hover { + color: inherit; + fill: inherit; + } +#cloudWidget #cloudOptions { + align-items: center; + background-color: var(--surface-1); + bottom: 2px; + display: none; + font-size: small; + padding: 0.5em; + position: absolute; + right: 2px; + text-align: center; + top: 2px; + z-index: 10; + } +#cloudWidget #cloudOptions label { + display: inline-flex; + flex-direction: column; + align-items: flex-start; + } +#cloudWidget #cloudOptions.show { + display: flex; + white-space: nowrap; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/code-viewer.css b/android/app/src/main/assets/extensions/ublock_origin/css/code-viewer.css new file mode 100644 index 00000000..40b51144 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/code-viewer.css @@ -0,0 +1,68 @@ +body { + border: 0; + display: flex; + flex-direction: column; + height: 100vh; + height: 100svh; + margin: 0; + overflow: hidden; + padding: 0; + width: 100vw; + } +#header { + background-color: var(--cm-gutter-surface); + border-bottom: 1px solid var(--surface-1); + padding: var(--default-gap-xsmall); + position: relative; + z-index: 1000000; + } +#header input[type="url"] { + box-sizing: border-box; + font-size: var(--font-size-smaller); + width: 100%; + } +#header:focus-within #pastURLs { + display: flex; + } +#currentURL { + display: flex; + gap: 0.5rem; + } +#currentURL > .fa-icon { + padding: 0 0.5rem; + } +#currentURL > .fa-icon:hover { + background-color: var(--surface-3); + } +#pastURLs { + background-color: var(--surface-0); + border: 1px solid var(--border-1); + display: none; + flex-direction: column; + font-size: var(--font-size-smaller); + position: absolute; + } +#pastURLs > span { + cursor: pointer; + overflow: hidden; + padding: 2px 4px; + text-overflow: ellipsis; + white-space: nowrap; + width: 75vw; + } +#pastURLs > span.selected { + font-weight: bold; + } +#pastURLs > span:hover { + background-color: var(--surface-1); + } +#content { + flex-grow: 1; + } + +.cm-href { + cursor: pointer; + } +.cm-href:hover { + text-decoration: underline; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/codemirror.css b/android/app/src/main/assets/extensions/ublock_origin/css/codemirror.css new file mode 100644 index 00000000..d56d8c0d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/codemirror.css @@ -0,0 +1,364 @@ +.codeMirrorContainer { + line-height: 1.25; + overflow: hidden; + position: relative; + } +.codeMirrorContainer.cm-maximized { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; + } +.CodeMirror { + background-color: var(--surface-0); + box-sizing: border-box; + color: var(--ink-1); + flex-grow: 1; + font-size: var(--monospace-size); + height: 100%; + width: 100%; + } +.CodeMirror-cursor { + border-color: var(--cm-cursor); + } +.CodeMirror-selected { + background-color: var(--cm-selection-surface); + } +.CodeMirror-focused .CodeMirror-selected { + background-color: var(--cm-selection-focused-surface); + } +.CodeMirror-foldmarker { + color: var(--cm-foldmarker-ink); + cursor: pointer; + font-family: sans-serif; + font-weight: bold; + } +.CodeMirror-foldgutter-folded::after { + content: '\25B6'; + } +.CodeMirror-foldgutter-open::after { + content: '\25BC'; + } +.CodeMirror-gutters { + background-color: var(--cm-gutter-surface); + border-color: var(--cm-gutter-border); + } +.CodeMirror-line::selection, +.CodeMirror-line > span::selection, +.CodeMirror-line > span > span::selection { + background-color: var(--cm-selection-focused-surface); + } +.CodeMirror-linenumber { + color: var(--cm-gutter-ink); + } +.CodeMirror-lines { + padding-bottom: 6rem; + } +.CodeMirror-matchingbracket { + color: unset; + } +.CodeMirror-matchingbracket { + background-color: var(--cm-matchingbracket) !important; + color: inherit !important; + font-weight: bold; + } + +.CodeMirror-search-match { + background: none; + background-color: var(--cm-search-match-surface); + border: 0; + opacity: 1; + } + +/* For when panels are used */ +.codeMirrorContainer > div:not([class^="CodeMirror"]) { + display: flex; + flex-direction: column; + height: 100%; + } + +.codeMirrorContainer.codeMirrorBreakAll .CodeMirror-wrap pre { + word-break: break-all; + } + +.cm-theme-override .cm-s-default .cm-comment { + color: var(--sf-comment-ink); + } +.cm-theme-override .cm-s-default .cm-def { + color: var(--sf-def-ink); + } +.cm-theme-override .cm-s-default .cm-directive { + color: var(--sf-directive-ink); + font-weight: bold; + } +.cm-theme-override .cm-s-default .cm-error { + color: inherit; + } +.cm-theme-override .cm-s-default .cm-error, +.CodeMirror-linebackground.error { + background-color: var(--sf-error-surface); + text-decoration: var(--sf-error-ink) dashed underline; + } +.cm-theme-override .cm-s-default .cm-link { + text-decoration: none; + } +.cm-theme-override .cm-s-default .cm-link:hover { + color: var(--link-ink); + } +.cm-theme-override .cm-s-default .cm-keyword { + color: var(--sf-keyword-ink); + } +.cm-theme-override .cm-s-default .cm-negative { + color: var(--cm-negative); + } +.cm-theme-override .cm-s-default .cm-positive { + color: var(--cm-positive); + } +.cm-theme-override .cm-s-default .cm-notice { + text-decoration-color: var(--sf-notice-ink); + text-decoration-style: solid; + text-decoration-line: underline; + } +.cm-theme-override .cm-s-default .cm-unicode { + text-decoration-color: var(--sf-unicode-ink); + text-decoration-style: dashed; + text-decoration-line: underline; + } +.cm-theme-override .cm-s-default .cm-tag { + color: var(--sf-tag-ink); + } +.cm-theme-override .cm-s-default .cm-value { + color: var(--sf-value-ink); + } +.cm-theme-override .cm-s-default .cm-variable { + color: var(--sf-variable-ink); + } +.cm-theme-override .cm-s-default .CodeMirror-activeline .cm-ext-js .cm-variable { + text-decoration: underline color-mix(in srgb, var(--sf-variable-ink) 30%, transparent) solid 3px; + text-decoration-skip-ink: none; + } +.cm-theme-override .cm-s-default .cm-warning { + background-color: var(--sf-warning-surface); + text-decoration: underline var(--sf-warning-ink); + } +.cm-theme-override .cm-s-default .cm-readonly { + color: var(--sf-readonly-ink); + } + +/* Rules */ +.cm-s-default .cm-allowrule { + color: var(--df-allow-ink); + font-weight: bold; + } +.cm-s-default .cm-blockrule { + color: var(--df-block-ink); + font-weight: bold; + } +.cm-s-default .cm-nooprule { + color: var(--df-noop-ink); + font-weight: bold; + } +.cm-s-default .cm-sortkey { + color: var(--sf-keyword-ink); + } + +.cm-search-widget { + background-color: var(--cm-gutter-surface); + border-bottom: 1px solid var(--cm-gutter-border); + cursor: default; + direction: ltr; + display: flex; + flex-shrink: 0; + flex-wrap: wrap; + justify-content: space-between; + line-height: 1.5; + padding: var(--default-gap-xsmall); + row-gap: var(--default-gap-xsmall); + user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + z-index: 1000; + } +.cm-search-widget > * { + flex-grow: 1; + } +.cm-search-widget > :last-child { + text-align: end; + } + +.cm-search-widget .cm-maximize { + fill: none; + flex-grow: 0; + font-size: 130%; + height: 1em; + stroke-width: 3px; + stroke: var(--ink-0); + width: 1em; + } +.cm-search-widget .cm-maximize * { + pointer-events: none; + } +.codeMirrorContainer[data-maximizable="false"] .cm-search-widget .cm-maximize { + display: none; + } +.codeMirrorContainer .cm-search-widget .cm-maximize svg > path:nth-child(2), +.codeMirrorContainer.cm-maximized .cm-search-widget .cm-maximize svg > path:nth-child(1) { + display: none; + } +.codeMirrorContainer.cm-maximized .cm-search-widget .cm-maximize svg > path:nth-child(2) { + display: initial; + } +html:not(.mobile) .cm-search-widget .cm-maximize:hover { + transform: scale(1.2); + } + +.cm-search-widget-input { + display: inline-flex; + flex-grow: 1; + flex-wrap: nowrap; + } +.cm-search-widget .fa-icon { + font-size: 140%; + } +html:not(.mobile) .cm-search-widget .fa-icon:not(.fa-icon-ro):hover { + transform: scale(1.2); + } +.cm-search-widget-input input { + flex-grow: 1; + max-width: min(16em, 40svw); + } +.cm-search-widget-count { + align-items: center; + display: inline-flex; + flex-grow: 0; + font-size: var(--font-size-smaller); + visibility: hidden; + } +.cm-search-widget[data-query] .cm-search-widget-count { + visibility: visible; + } +.cm-search-widget[data-query] .cm-search-widget-count:empty { + visibility: hidden; + } +.cm-search-widget .sourceURL[href=""] { + display: none; + } +:root.mobile .cm-search-widget .sourceURL[href=""] { + display: none; + } + +.cm-linter-widget { + align-items: center; + display: none; + flex-grow: 1; + } +.cm-linter-widget:not([data-lint="0"]) { + display: inline-flex; + } +.cm-linter-widget .cm-linter-widget-count { + color: var(--accent-surface-1); + fill: var(--accent-surface-1); + font-size: var(--font-size-smaller); + } + +.cm-searching.cm-overlay { + background-color: var(--cm-searching-surface) !important; + border: 0; + color: var(--cm-searching-ink) !important; + } + +.CodeMirror-merge { + border-color: var(--cm-gutter-border); + } +.CodeMirror-merge-copy, +.CodeMirror-merge-copy-reverse { + color: var(--cm-merge-copy-ink); + } +.CodeMirror-merge-l-chunk { + background-color: var(--cm-merge-chunk-surface); + } +.CodeMirror-merge-l-chunk-start, +.CodeMirror-merge-l-chunk-end { + border-color: var(--cm-merge-chunk-border); + } +.CodeMirror-merge-l-deleted { + background-image: none; + } +.CodeMirror-merge-l-inserted { + background-image: none; + } +/* This probably needs to be added to CodeMirror repo */ +.CodeMirror-merge-gap { + background-color: var(--cm-gutter-surface); + border-color: var(--cm-gutter-border); + vertical-align: top; + } +.CodeMirror-merge-scrolllock { + color: var(--cm-merge-copy-ink); + } +.CodeMirror-merge-spacer { + background-color: var(--cm-merge-chunk-surface); + } + +.CodeMirror-hints { + z-index: 10000; + } + +/* Must appear after other background color declarations to be sure it + * overrides them + * */ +.CodeMirror-activeline-background { + background-color: var(--cm-active-line); + } + +.CodeMirror-lintmarker { + height: calc(var(--font-size) - 2px); + margin-top: 1px; + position: relative; + } +.CodeMirror-lintmarker > * { + position: absolute; + } +.CodeMirror-lintmarker[data-error="y"] { + background-color: var(--sf-error-ink); + } +.CodeMirror-lintmarker .msg { + background-color: var(--surface-0); + border: 1px solid var(--sf-error-ink); + color: var(--ink-1); + display: none; + filter: drop-shadow(2px 2px 4px #0008); + left: 100%; + padding: var(--default-gap-xsmall); + top: -2px; + white-space: pre; + } +.CodeMirror-lintmarker svg { + height: 70%; + left: 15%; + top: 15%; + width: 70%; + } +.CodeMirror-lintmarker[data-error="y"] svg { + display: none; + } +.CodeMirror-lintmarker[data-fold="start"] { + fill: var(--cm-foldmarker-ink); + } +.CodeMirror-lintmarker[data-fold="start"].folded svg { + transform: rotate(-90deg); + } +.CodeMirror-lintmarker[data-fold="end"] { + fill: var(--border-2); + } +.CodeMirror-lintmarker[data-error="y"]:hover > span, +.CodeMirror-lintmarker[data-error="y"] > span:hover { + display: initial; + } + +/* https://github.com/uBlockOrigin/uBlock-issues/issues/3645 */ +.CodeMirror-vscrollbar { + pointer-events: initial !important; + } + diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/common.css b/android/app/src/main/assets/extensions/ublock_origin/css/common.css new file mode 100644 index 00000000..1089a7c5 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/common.css @@ -0,0 +1,384 @@ +@charset "UTF-8"; +/* https://protocol.mozilla.org/assets/docs/css/protocol.css */ +@font-face { + font-family: Inter; + font-style: normal; + font-weight: normal; + src: url('fonts/Inter/Inter-Regular.woff2') format('woff2'); +} +@font-face { + font-family: Inter; + font-style: normal; + font-weight: 600; + src: url('fonts/Inter/Inter-SemiBold.woff2') format('woff2'); +} +@font-face { + font-family: Metropolis; + font-style: normal; + font-weight: normal; + src: url('fonts/Metropolis/Metropolis-Regular.woff2') format('woff2'); +} +@font-face { + font-family: Metropolis; + font-style: normal; + font-weight: 600; + src: url('fonts/Metropolis/Metropolis-SemiBold.woff2') format('woff2'); +} + +/** + Common uBO spacing. + Ref: https://github.com/uBlockOrigin/uBlock-issues/issues/1005 +*/ +:root { + --default-gap-xxlarge: 40px; + --default-gap-xlarge: 32px; + --default-gap-large: 24px; + --default-gap: 16px; + --default-gap-small: 12px; + --default-gap-xsmall: 8px; + --default-gap-xxsmall: 4px; + --button-font-size: max(calc(var(--font-size) * 0.875), 14px); + } + +/* Common uBO styles */ +body { + background-color: var(--surface-1); + border: 0; + box-sizing: border-box; + color: var(--ink-1); + fill: var(--ink-1); + font-family: var(--font-family); + font-size: var(--font-size); + line-height: 1.5; + margin: 0; + padding: 0; + } +a:not(.fa-icon) { + color: var(--link-ink); + fill: var(--link-ink); + } +a:not(.fa-icon):hover { + color: var(--link-hover-ink); + fill: var(--link-hover-ink); + } +code, .code { + background-color: var(--surface-2); + font-family: monospace; + font-size: var(--monospace-size); + padding: 2px 4px; + } +hr { + border: 0; + border-top: 1px solid var(--surface-2); + margin: 1em 0; + } +textarea { + font-size: 90%; + } +button { + align-items: center; + appearance: none; + -moz-appearance: none; + -webkit-appearance: none; + border: var(--button-border-size) solid var(--ink-1); + border-radius: var(--button-border-radius); + background-color: var(--button-surface); + color: var(--button-ink); + display: inline-flex; + fill: var(--button-ink); + font-size: var(--button-font-size); + justify-content: center; + min-height: 36px; + padding: 0 var(--font-size); + position: relative; + vertical-align: middle; + } +button.vflex { + height: 100%; + min-height: unset; + padding-bottom: 0; + padding-top: 0; + } +button > .hover { + background-color: var(--elevation-up-surface); + border-radius: var(--button-border-radius); + height: 100%; + left: 0; + opacity: 0; + pointer-events: none; + position: absolute; + top: 0; + width: 100%; + z-index: 100; + } +button:not(.disabled):not([disabled]):hover > .hover { + opacity: var(--elevation-up1-opacity); + } +button.notext:not(.disabled):not([disabled]):hover > .hover { + opacity: var(--elevation-up2-opacity); + } +button.active { + } +button.disabled, +button[disabled] { + background-color: var(--button-disabled-surface); + color: var(--button-ink); + fill: var(--button-ink); + filter: var(--button-disabled-filter); + pointer-events: none; + } +button.preferred:not(.disabled):not([disabled]) { + background-color: var(--button-preferred-surface); + color: var(--button-preferred-ink); + fill: var(--button-preferred-ink); + } +button.preferred:not(.disabled):not([disabled]):hover > .hover { + background-color: var(--elevation-down-surface); + opacity: var(--elevation-down1-opacity); + } +button.iconified.notext { + background-color: transparent; + } +button.iconified > .fa-icon { + font-size: 120%; + padding-left: 0; + padding-right: 0; + } +button.iconified > .fa-icon + [data-i18n] { + padding-right: 0; + padding-left: 0.4em; + } +body[dir="rtl"] button.iconified > .fa-icon + [data-i18n] { + padding-right: 0.4em; + padding-left: 0; + } +label { + align-items: center; + display: inline-flex; + position: relative; + } +section.notice { + background-color: var(--notice-surface); + box-shadow: var(--notice-surface-shadow); + color: var(--notice-ink); + } +:root:not(.classic) section.notice a { + color: var(--surface-2); + } + +/** + Checkbox design borrowed from: + - https://material.io/components/selection-controls + Motivation: + - To comply with design suggestions to make uBO comply with + Firefox Preview design guidelines. + - To have a single checkbox design across all platforms. +*/ +.checkbox { + box-sizing: border-box; + display: inline-flex; + flex-shrink: 0; + height: var(--checkbox-size); + margin: 0; + margin-inline-end: var(--checkbox-margin-end); + -webkit-margin-end: var(--checkbox-margin-end); + position: relative; + width: var(--checkbox-size); + } +label:hover .checkbox:not([disabled]) { + background-color: var(--surface-2); + } +.checkbox > input[type="checkbox"] { + box-sizing: border-box; + height: 100%; + margin: 0; + min-width: var(--checkbox-size); + opacity: var(--native-control-opacity); + position: absolute; + width: 100%; + } +.checkbox > input[type="checkbox"] + svg { + background-color: transparent; + border: 2px solid var(--checkbox-ink); + border-radius: 2px; + box-sizing: border-box; + fill: none; + height: 100%; + opacity: calc(1 - var(--native-control-opacity)); + pointer-events: none; + position: absolute; + stroke: none; + stroke-width: 3.12px; + width: 100%; + } +.checkbox > input[type="checkbox"]:checked + svg { + background-color: var(--checkbox-checked-ink); + border-color: var(--checkbox-checked-ink); + stroke: var(--surface-1); + } +.checkbox[disabled], +.checkbox[disabled] ~ span { + filter: var(--checkbox-disabled-filter); + } +.checkbox.partial > input[type="checkbox"]:checked + svg { + background-color: var(--surface-1); + border-color: var(--checkbox-checked-ink); + stroke: var(--checkbox-checked-ink); + } + +.radio { + --margin-end: calc(var(--font-size) * 0.75); + box-sizing: border-box; + display: inline-flex; + flex-shrink: 0; + height: calc(var(--checkbox-size) + 2px); + margin: 0; + margin-inline-end: var(--margin-end); + -webkit-margin-end: var(--margin-end); + position: relative; + width: calc(var(--checkbox-size) + 2px); + } +.radio > input[type="radio"] { + box-sizing: border-box; + height: 100%; + margin: 0; + min-width: var(--checkbox-size); + opacity: var(--native-control-opacity); + position: absolute; + width: 100%; + } +.radio > input[type="radio"] + svg { + background-color: transparent; + box-sizing: border-box; + height: 100%; + opacity: calc(1 - var(--native-control-opacity)); + pointer-events: none; + position: absolute; + width: 100%; + } +.radio > input[type="radio"] + svg > path { + fill: var(--checkbox-ink); + } +.radio > input[type="radio"] + svg > circle { + fill: transparent; + } +label:hover .radio > input[type="radio"]:not(:checked) + svg > circle { + fill: var(--surface-3); + } +.radio > input[type="radio"]:checked + svg > path, +.radio > input[type="radio"]:checked + svg > circle { + fill: var(--checkbox-checked-ink); + } + +select { + padding: 2px; + } + +.searchfield { + align-items: center; + column-gap: var(--default-gap-xxsmall); + display: inline-flex; + position: relative; + } +.searchfield .fa-icon { + color: var(--ink-4); + fill: var(--ink-4); + font-size: 1em !important; + left: 2px; + position: absolute; + transform: none; + } +.searchfield input:not(:placeholder-shown) ~ .fa-icon { + display: none; + } + +.hidden { + display: none; + height: 0; + visibility: hidden; + width: 0; + } +.subtil { + color: var(--subtil-ink); + cursor: default; + opacity: 66%; + } +.fieldset { + margin: var(--font-size); + } +.fieldset-header { + color: var(--fieldset-header-ink); + font-size: 14px; + font-weight: 600; + letter-spacing: 0.5px; + } +.ul { + margin: 1em 0; + } +.li { + align-items: center; + display: flex; + margin: calc(var(--font-size) * 0.75) 0; + } +.liul { + margin: 0.5em 0; + margin-inline-start: 2em; + -webkit-margin-start: 2em; + } +@media (max-width: 640px) { + button.iconified > .fa-icon { + font-size: 1.2rem; + padding: 0; + } + button.iconified:not(.dontshrink) > [data-i18n] { + display: none; + } + } + +.countryFlag { + height: var(--font-size); + position: relative; + top: calc(var(--font-size) / 7); + max-width: calc(var(--font-size) * 1.5); + } + +.logo { + align-items: center; + display: inline-flex; + padding: 0 0.5em; + width: 1.25em; + } +.logo > img { + width: 100%; + } + +.wikilink[href=""] { + display: none; + } +.wikilink.fa-icon { + color: var(--info0-ink); + fill: var(--info0-ink); + padding: var(--default-gap-xxsmall) var(--default-gap-xsmall); + } +.wikilink.fa-icon:hover { + transform: scale(1.2); + } +.wikilink.fa-icon > svg { + height: 1.25rem; + width: 1.25rem; + } + +/* high dpi devices */ +:root.hidpi button { + font-family: Metropolis, sans-serif; + font-weight: 600; + letter-spacing: 0.5px; + } +:root.hidpi .fieldset-header { + font-family: Metropolis, sans-serif; + } + +/* touch-screen devices */ +:root.mobile label { + flex-grow: 1 + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/dashboard-common.css b/android/app/src/main/assets/extensions/ublock_origin/css/dashboard-common.css new file mode 100644 index 00000000..261aa9a5 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/dashboard-common.css @@ -0,0 +1,55 @@ +body > div.body { + padding: 0 0.5em; + } +h2, h3 { + margin: 1em 0; + } +h2 { + font-size: 18px; + } +h3 { + font-size: 16px; + } +a { + text-decoration: none; + } +.fa-icon.info { + color: var(--info0-ink); + fill: var(--info0-ink); + font-size: 115%; + } +.fa-icon.info:hover { + transform: scale(1.25); + } +.fa-icon.info.important { + color: var(--info2-ink); + fill: var(--info2-ink); + } +.info.very-important { + color: var(--info3-ink); + fill: var(--info3-ink); + } +input[type="number"] { + width: 5em; + } +@media (max-height: 640px), (max-height: 800px) and (max-width: 480px) { + .body > p, + .body > ul { + margin: 0.5em 0; + } + .vverbose { + display: none !important; + } + } +/** + On mobile device, the on-screen keyboard may take up + so much space that it overlaps the content being edited. + The rule below makes it possible to scroll the edited + content within view. +*/ +:root.mobile { + overflow: auto; + } +:root.mobile body { + min-height: 600px; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/dashboard.css b/android/app/src/main/assets/extensions/ublock_origin/css/dashboard.css new file mode 100644 index 00000000..bff9fa15 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/dashboard.css @@ -0,0 +1,120 @@ +html, body { + background-color: var(--surface-0); + display: flex; + flex-direction: column; + height: 100vh; + height: 100svh; + justify-content: stretch; + overflow: hidden; + position: relative; + width: 100vw; + } +body.notReady { + display: none; + } +#dashboard-nav { + align-items: center; + background-color: var(--surface-1); + border: 0; + border-bottom: 1px solid var(--border-1); + display: flex; + flex-shrink: 0; + justify-content: space-between; + overflow-x: hidden; + padding: 0; + position: sticky; + top: 0; + width: 100%; + z-index: 10; + } +#dashboard-nav > span { + display: flex; + flex-wrap: nowrap; + overflow-x: auto; + } +.tabButton { + background-color: transparent; + border: 0; + border-bottom: 3px solid transparent; + border-radius: 0; + color: var(--dashboard-tab-ink); + fill: var(--dashboard-tab-ink); + font-family: var(--font-family); + font-size: var(--font-size); + padding: 0.7em 1.4em calc(0.7em - 3px); + text-decoration: none; + white-space: nowrap; + } +.tabButton:focus { + outline: 0; + } +/* + * TODO: support keyboard-driven navigation + * +.tabButton:not(:active):focus { + background-color: var(--dashboard-tab-focus-surface); + } + */ +.tabButton.selected { + background-color: var(--dashboard-tab-active-surface); + border-bottom: 3px solid var(--dashboard-tab-active-ink); + color: var(--dashboard-tab-active-ink); + fill: var(--dashboard-tab-active-ink); + } +iframe { + background-color: transparent; + border: 0; + flex-grow: 1; + margin: 0; + padding: 0; + width: 100%; + } +#unsavedWarning { + display: none; + left: 0; + position: absolute; + width: 100%; + z-index: 20; + } +#unsavedWarning.on { + display: initial; + } +#unsavedWarning > div:first-of-type { + padding: 0.5em; + } +#unsavedWarning > div:last-of-type { + height: 100vh; + height: 100svh; + position: absolute; + width: 100vw; + } + +body .tabButton[data-pane="no-dashboard.html"] { + display: none; + } +body.noDashboard #dashboard-nav { + display: none; + } + +/* high dpi devices */ +:root.hidpi .tabButton { + font-family: Metropolis, sans-serif; + font-weight: 600; + letter-spacing: 0.5px; + } + +/* hover-able devices */ +:root.desktop .tabButton { + cursor: default; + } +:root.desktop .tabButton:not(.selected) { + cursor: pointer; + } +:root.desktop .tabButton:not(.selected):hover { + background-color: var(--dashboard-tab-hover-surface); + border-bottom-color: var(--dashboard-tab-hover-border); + } + +:root.mobile #dashboard-nav .logo { + display: none; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/devtools.css b/android/app/src/main/assets/extensions/ublock_origin/css/devtools.css new file mode 100644 index 00000000..bb4c40dc --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/devtools.css @@ -0,0 +1,23 @@ +html { + height: 100vh; + height: 100svh; + overflow: hidden; + width: 100vw; + } +body { + display: flex; + flex-direction: column; + height: 100%; + justify-content: stretch; + overflow: hidden; + width: 100%; + } +.body { + flex-shrink: 0; + } +.codeMirrorContainer { + flex-grow: 1; + } +#console { + text-align: left; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/document-blocked.css b/android/app/src/main/assets/extensions/ublock_origin/css/document-blocked.css new file mode 100644 index 00000000..96eb4a78 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/document-blocked.css @@ -0,0 +1,183 @@ +/** + uBlock Origin - a browser extension to block requests. + Copyright (C) 2018-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +body { + display: flex; + padding: var(--default-gap-xxlarge) var(--default-gap-small); + justify-content: center; + } +body.loading { + opacity: 0; + } +:root.mobile body { + padding: var(--default-gap-small); + } + +#rootContainer { + width: min(100%, 640px); + } +#rootContainer > * { + margin: 0 0 var(--default-gap-xxlarge) 0; + } +:root.mobile #rootContainer > * { + margin-bottom: var(--default-gap-xlarge); + } + +p { + margin: 0.5em 0; + } +a { + text-decoration: none; + } +.code { + font-size: 13px; + word-break: break-all; + } +#warningSign { + color: var(--accent-surface-1); + fill: var(--accent-surface-1); + font-size: 96px; + line-height: 1; + width: 100%; + } +:root.mobile #warningSign { + font-size: 64px; + } +#theURL { + color: var(--ink-2); + padding: 0; + } +#theURL > * { + margin: 0; + } +#theURL > p { + position: relative; + z-index: 10; + } +#theURL > p > span:first-of-type { + display: block; + max-height: 3lh; + overflow-y: auto; + } +:root.mobile #theURL > p > span:first-of-type { + max-height: 3lh; + } +#theURL #toggleParse { + background-color: transparent; + top: 100%; + box-sizing: border-box; + color: var(--ink-3); + fill: var(--ink-3); + cursor: pointer; + font-size: 1.2rem; + padding: var(--default-gap-xxsmall); + position: absolute; + transform: translate(0, -50%); + } +#theURL:not(.collapsed) #toggleParse > span:first-of-type { + display: none; + } +#theURL.collapsed #toggleParse > span:last-of-type { + display: none; + } +body[dir="ltr"] #toggleParse { + right: 0; + } +body[dir="rtl"] #toggleParse { + left: 0; + } +#theURL > p:hover #toggleParse { + transform: translate(0, -50%) scale(1.15); + } +#parsed { + background-color: var(--surface-1); + border: 4px solid var(--surface-2); + font-size: small; + overflow-x: auto; + padding: var(--default-gap-xxsmall); + text-align: initial; + text-overflow: ellipsis; + } +#theURL.collapsed > #parsed { + display: none; + } +#parsed ul, #parsed li { + list-style-type: none; + } +#parsed li { + white-space: nowrap; + } +#parsed span { + display: inline-block; + } +#parsed span:first-of-type { + font-weight: bold; + } + +.why-extra a { + white-space: nowrap; +} +.why-extra ul { + display: flex; + flex-direction: column; + margin: 0; + padding-inline-start: var(--default-gap-xsmall); + } +details > *:not(summary) { + margin-inline-start: 1em; + } + +#urlskip a { + display: block; + max-height: 3lh; + overflow-y: auto; + word-break: break-all; + } +:root.mobile #urlskip a { + max-height: 3lh; + } + +#actionContainer { + display: flex; + justify-content: space-between; + } +:root.mobile #actionContainer { + justify-content: center; + display: flex; + flex-direction: column; + } +#actionContainer > button { + margin-bottom: 2rem + } + +.filterList { + white-space: nowrap; + } +.filterList .filterListSupport[href="#"] { + display: none; + } +.filterList .filterListSupport:not([href="#"]) { + margin-inline-start: 0.25em; + } + +/* Small-screen devices */ +:root.mobile button { + width: 100%; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/dom-inspector.css b/android/app/src/main/assets/extensions/ublock_origin/css/dom-inspector.css new file mode 100644 index 00000000..2f2ca14e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/dom-inspector.css @@ -0,0 +1,41 @@ +html#ublock0-inspector, +#ublock0-inspector body { + background: transparent; + box-sizing: border-box; + height: 100vh; + height: 100svh; + margin: 0; + overflow: hidden; + width: 100vw; +} +#ublock0-inspector :focus { + outline: none; +} +#ublock0-inspector svg { + box-sizing: border-box; + height: 100%; + left: 0; + pointer-events: none; + position: fixed; + top: 0; + width: 100%; +} +#ublock0-inspector svg > path { + stroke-width: 1px; + } +#ublock0-inspector svg > path:nth-of-type(1) { + fill: rgba(255,0,0,0.2); + stroke: #F00; +} +#ublock0-inspector svg > path:nth-of-type(2) { + fill: rgba(0,255,0,0.2); + stroke: #0F0; +} +#ublock0-inspector svg > path:nth-of-type(3) { + fill: rgba(255,0,0,0.2); + stroke: #F00; +} +#ublock0-inspector svg > path:nth-of-type(4) { + fill: rgba(0,0,255,0.1); + stroke: #00F; +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/dyna-rules.css b/android/app/src/main/assets/extensions/ublock_origin/css/dyna-rules.css new file mode 100644 index 00000000..9a6bd8d5 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/dyna-rules.css @@ -0,0 +1,80 @@ +html { + height: 100vh; + height: 100svh; + overflow: hidden; + width: 100vw; + } +body { + display: flex; + flex-direction: column; + height: 100%; + justify-content: stretch; + overflow: hidden; + width: 100%; + } +.body { + flex-shrink: 0; + } +#diff { + border: 0; + white-space: nowrap; +} +#diff .tools > * { + margin-bottom: 1em; + } +#diff .ruleActions { + border: 0; + box-sizing: border-box; + display: inline-block; + padding: 0; + text-align: center; + vertical-align: top; + width: 50%; + white-space: nowrap; + } +#diff .ruleActions .fieldset-header { + margin: 0.5em 0; + } + +#ruleFilter { + align-items: center; + background-color: var(--surface-2); + direction: ltr; + display: flex; + justify-content: center; + padding: 0.5em 0; + } +#ruleFilter #diffCollapse { + padding: 0 0.5em; + font-size: 150%; + } +#ruleFilter #diffCollapse.active { + transform: scale(1, -1); + } + +.codeMirrorContainer { + flex-grow: 1; + } +.codeMirrorContainer .CodeMirror { + background-color: var(--surface-1); + } +.CodeMirror-merge, .CodeMirror-merge-pane, .CodeMirror-merge .CodeMirror { + box-sizing: border-box; + height: 100%; + } +body.editing .CodeMirror-merge-copy, +body.editing .CodeMirror-merge-copy-reverse { + display: none; + } +body.editing .CodeMirror-merge-editor .CodeMirror { + background-color: var(--surface-0); + } +body[dir="rtl"] .CodeMirror-merge-pane-rightmost { + right: unset; + left: 0; +} + +/* mobile devices */ +:root.mobile #diff .tools { + overflow: auto; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/epicker-ui.css b/android/app/src/main/assets/extensions/ublock_origin/css/epicker-ui.css new file mode 100644 index 00000000..a8aa1390 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/epicker-ui.css @@ -0,0 +1,297 @@ +:root { + --quit-button-size: max(4em, min(6em, calc(100vw / 8), calc(100vh / 8))); +} + +html#ublock0-epicker, +#ublock0-epicker body { + background: transparent; + cursor: not-allowed; + height: 100vh; + height: 100svh; + margin: 0; + overflow: hidden; + width: 100vw; +} +#ublock0-epicker :focus { + outline: none; +} +#ublock0-epicker aside { + background-color: var(--surface-1); + border: 1px solid var(--border-2); + box-sizing: border-box; + cursor: default; + display: flex; + flex-direction: column; + max-width: min(32rem, 100vw - 4px); + min-width: min(24rem, 100vw - 4px); + overflow-y: auto; + position: fixed; + width: min(32rem, 100vw - 4px); + z-index: 100; +} +#ublock0-epicker.zap aside { + bottom: unset !important; + min-width: unset !important; + top: 50%; + transform: translateY(-50%); + width: unset !important; +} +#ublock0-epicker.zap aside > section, +#ublock0-epicker.zap aside > ul, +#ublock0-epicker.zap aside > #windowbar > div:not(#quit) { + display: none; +} +#ublock0-epicker.zap aside > #windowbar > #quit { + width: var(--quit-button-size); + height: var(--quit-button-size); +} +#ublock0-epicker:not(.paused) aside, +#ublock0-epicker.minimized aside { + min-width: min(16rem, 100vw - 4px); + overflow: hidden; + width: min(16rem, 100vw - 4px); +} +#ublock0-epicker:not(.paused) aside > *:not(#windowbar), +#ublock0-epicker.minimized aside > *:not(#windowbar) { + display: none; +} +#ublock0-epicker aside > *:not(:first-child) { + padding: 0 2px; +} + +#ublock0-epicker #toolbar { + display: flex; + justify-content: space-between; +} +#ublock0-epicker #toolbar button { + min-width: 5em; + } +#ublock0-epicker ul { + margin: 0.25em 0 0 0; +} +#ublock0-epicker.preview #preview { + background-color: var(--button-preferred-surface); + color: var(--button-preferred-ink); +} +#ublock0-epicker section { + border: 0; + box-sizing: border-box; + display: inline-block; + width: 100%; +} +#ublock0-epicker section > div:first-child { + border: 1px solid var(--surface-3); + margin: 0; + position: relative; +} +#ublock0-epicker section.invalidFilter > div:first-child { + border-color: var(--error-surface); +} +#ublock0-epicker section .codeMirrorContainer { + border: none; + box-sizing: border-box; + height: 10em; + max-height: min(10em, 10vh); + min-height: 1em; + padding: 2px; + width: 100%; + } +.CodeMirror-lines, +.CodeMirror pre { + padding: 0; + } + +#ublock0-epicker section .resultsetWidgets { + display: flex; + font-size: var(--font-size-smaller); + } +#resultsetModifiers { + align-items: flex-end; + display: inline-flex; + flex-grow: 1; + justify-content: space-evenly; + } +#resultsetModifiers.hide > * { + visibility: hidden; + } +.resultsetModifier { + border: 0; + pointer-events: auto; + position: relative; + width: 40%; + } +.resultsetModifier > span { + align-items: flex-end; + display: flex; + height: 100%; + pointer-events: none; + width: 100%; + } +.resultsetModifier > span > span { + margin: 2px 0; + } +.resultsetModifier > span > span:nth-of-type(1) { + background-color: var(--checkbox-checked-ink); + border-inline-end: 1px solid var(--surface-3); + display: inline-block; + flex-shrink: 0; + height: 6px; + } +.resultsetModifier > span > span:nth-of-type(2) { + background-color: var(--checkbox-checked-ink); + clip-path: polygon( + calc(50% - 2px) 0%, + 0% calc(100% - 6px), + 0% 100%, + 100% 100%, + 100% calc(100% - 6px), + calc(50% + 2px) 0% + ); + display: inline-block; + flex-shrink: 0; + height: 20px; + width: 20px; + } +.resultsetModifier > span > span:nth-of-type(3) { + background-color: var(--surface-3); + border-inline-start: 1px solid var(--surface-3); + display: inline-block; + flex-grow: 1; + height: 6px; + } +.resultsetModifier input { + border: 0; + height: 100%; + left: 0; + margin: 0; + opacity: 0; + padding: 0; + position: absolute; + top: 0; + width: 100%; + } +#resultsetCount { + align-items: center; + background-color: var(--surface-3); + color: var(--ink-1); + display: inline-flex; + justify-content: center; + min-width: 2.2em; + } +#ublock0-epicker section.invalidFilter #resultsetCount { + background-color: var(--error-surface); + color: var(--ink-100); +} +#ublock0-epicker section > div:first-child + div { + direction: ltr; + margin: 2px 0; + text-align: right; +} +#ublock0-epicker ul { + padding: 0; + list-style-type: none; + text-align: left; + overflow: hidden; +} +#ublock0-epicker #candidateFilters { + max-height: min(18em, 18vh); + overflow-y: auto; +} +#ublock0-epicker .changeFilter > li > span:nth-of-type(1) { + font-weight: bold; +} +#ublock0-epicker .changeFilter > li > span:nth-of-type(2) { + font-size: smaller; + color: gray; +} +#ublock0-epicker #candidateFilters [data-i18n] { + font-size: 90%; +} +#ublock0-epicker #candidateFilters .changeFilter { + list-style-type: none; + margin: 0 0 0 1em; + overflow: hidden; + text-align: left; +} +#ublock0-epicker #candidateFilters .changeFilter li { + border: 1px solid transparent; + cursor: pointer; + direction: ltr; + font: 12px monospace; + white-space: nowrap; +} +#ublock0-epicker #candidateFilters .changeFilter li.active { + border: 1px dotted rgb(var(--blue-50)); + } +#ublock0-epicker #candidateFilters .changeFilter li:hover { + background-color: var(--surface-2); +} + +#ublock0-epicker svg#sea { + cursor: crosshair; + box-sizing: border-box; + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 100%; +} +#ublock0-epicker.paused svg#sea { + cursor: not-allowed; +} +#ublock0-epicker svg#sea > path:first-child { + fill: rgba(0,0,0,0.5); + fill-rule: evenodd; +} +#ublock0-epicker svg#sea > path + path { + stroke: #F00; + stroke-width: 0.5px; + fill: rgba(255,63,63,0.20); +} +#ublock0-epicker.zap svg#sea > path + path { + stroke: #FF0; + stroke-width: 0.5px; + fill: rgba(255,255,63,0.20); +} +#ublock0-epicker.preview svg#sea > path { + fill: rgba(0,0,0,0.10); +} +#ublock0-epicker.preview svg#sea > path + path { + stroke: none; +} + + +#ublock0-epicker #windowbar { + display: flex; +} +#ublock0-epicker #windowbar svg { + fill: none; + pointer-events: none; + stroke: var(--ink-1); + stroke-width: 3px; +} +#ublock0-epicker #windowbar #move { + background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAECAYAAACtBE5DAAAAFElEQVQI12NgwAfKy8v/M5ANYLoBshgEyQo6H9UAAAAASUVORK5CYII='); + cursor: grab; + flex-grow: 1; + opacity: 0.8; +} +#ublock0-epicker aside.moving #windowbar #move { + cursor: grabbing; +} +#windowbar #quit, +#windowbar #minimize { + height: 2em; + width: 2em; +} +#windowbar #quit:hover, +#windowbar #minimize:hover { + background-color: var(--surface-2) +} +#ublock0-epicker.minimized #windowbar #minimize svg > path, +#windowbar #minimize svg > rect { + display: none; +} +#ublock0-epicker.minimized #windowbar #minimize svg > rect { + display: initial; +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/fa-icons.css b/android/app/src/main/assets/extensions/ublock_origin/css/fa-icons.css new file mode 100644 index 00000000..639811f2 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/fa-icons.css @@ -0,0 +1,154 @@ +.fa-icon { + align-items: center; + background-color: transparent; + border: 0; + display: inline-flex; + justify-content: center; + margin: 0; + padding: 0 0.1em; + position: relative; + user-select: none; + vertical-align: text-bottom; + -webkit-user-select: none; + } +.fa-icon > * { + pointer-events: none; + } +/* +.fa-icon.disabled, +.fa-icon[disabled] { + color: var(--button-disabled-ink); + fill: var(--button-disabled-ink); + filter: var(--button-disabled-filter); + stroke: var(--button-disabled-ink); + pointer-events: none; + } +*/ +.fa-icon > .fa-icon-badge, +.fa-icon.disabled > .fa-icon-badge { + visibility: hidden; + } +.fa-icon.fa-icon-badged > .fa-icon-badge { + bottom: -20%; + display: inline-block; + font: 60% sans-serif; + left: calc(100% - 0.2em); + position: absolute; + visibility: visible; + } +.fa-icon.fa-icon-hflipped > svg { + transform: scale(-1, 1); + transform-origin: 50%; + } +.fa-icon.fa-icon-vflipped > svg { + transform: scale(1, -1); + transform-origin: 50%; + } +.fa-icon.fa-icon-rotright > svg { + transform: rotate(90deg); + transform-origin: 50%; + } +.fa-icon.fa-icon-rotleft > svg { + transform: rotate(-90deg); + transform-origin: 50%; + } + +.fa-icon > svg { + height: 1em; + overflow: visible; + width: 1em; + } + +.fa-icon > .fa-icon_bar-chart { + width: calc(1em * 2048 / 1792); + } +.fa-icon > .fa-icon_cloud-download, +.fa-icon > .fa-icon_cloud-upload, +.fa-icon > .fa-icon_cogs, +.fa-icon > .fa-icon_eraser, +.fa-icon > .fa-icon_film { + width: calc(1em * 1920 / 1792); + } +.fa-icon > .fa-icon_code { + width: calc(1em * 1830 / 1792); + } +.fa-icon > .fa-icon_exclamation-triangle { + width: calc(1em * 1794 / 1792); + } +.fa-icon > .fa-icon_clipboard, +.fa-icon > .fa-icon_comment-alt, +.fa-icon > .fa-icon_external-link, +.fa-icon > .fa-icon_eye-dropper, +.fa-icon > .fa-icon_eye-open, +.fa-icon > .fa-icon_eye-slash, +.fa-icon > .fa-icon_files-o, +.fa-icon > .fa-icon_list-alt { + width: calc(1em * 1792 / 1792); + } +.fa-icon > .fa-icon_sun, +.fa-icon > .fa-icon_sun-o { + width: calc(1em * 1708 / 1792); + } +.fa-icon > .fa-icon_book, +.fa-icon > .fa-icon_download-alt, +.fa-icon > .fa-icon_font, +.fa-icon > .fa-icon_search, +.fa-icon > .fa-icon_spinner, +.fa-icon > .fa-icon_unlink, +.fa-icon > .fa-icon_upload-alt, +.fa-icon > .fa-icon_volume-up, +.fa-icon > .fa-icon_zoom-in, +.fa-icon > .fa-icon_zoom-out { + width: calc(1em * 1664 / 1792); + } +.fa-icon > .fa-icon_terminal { + width: calc(1em * 1651 / 1792); + } +.fa-icon > .fa-icon_magic { + width: calc(1em * 1637 / 1792); + } +.fa-icon > .fa-icon_home { + width: calc(1em * 1612 / 1792); + } +.fa-icon > .fa-icon_check { + width: calc(1em * 1550 / 1792); + } +.fa-icon > .fa-icon_cog, +.fa-icon > .fa-icon_clock-o, +.fa-icon > .fa-icon_floppy-o, +.fa-icon > .fa-icon_info-circle, +.fa-icon > .fa-icon_pause-circle-o, +.fa-icon > .fa-icon_play-circle-o, +.fa-icon > .fa-icon_power-off, +.fa-icon > .fa-icon_question-circle, +.fa-icon > .fa-icon_refresh, +.fa-icon > .fa-icon_save, +.fa-icon > .fa-icon_sliders, +.fa-icon > .fa-icon_undo { + width: calc(1em * 1536 / 1792); + } +.fa-icon > .fa-icon_arrow-right { + width: calc(1em * 1472 / 1792); + } +.fa-icon > .fa-icon_filter { + width: calc(1em * 1410 / 1792); + } +.fa-icon > .fa-icon_plus, +.fa-icon > .fa-icon_trash-o { + width: calc(1em * 1408 / 1792); + } +.fa-icon > .fa-icon_times { + width: calc(1em * 1188 / 1792); + } +.fa-icon > .fa-icon_angle-up, +.fa-icon > .fa-icon_double-angle-up, +.fa-icon > .fa-icon_lock, +.fa-icon > .fa-icon_unlock-alt { + width: calc(1em * 1152 / 1792); + } +.fa-icon > .fa-icon_double-angle-left { + width: calc(1em * 966 / 1792); + } +.fa-icon > .fa-icon_bolt { + width: calc(1em * 896 / 1792); + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Inter/Inter-Regular.woff2 b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Inter/Inter-Regular.woff2 new file mode 100644 index 00000000..2bcd222e Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Inter/Inter-Regular.woff2 differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Inter/Inter-SemiBold.woff2 b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Inter/Inter-SemiBold.woff2 new file mode 100644 index 00000000..fbae113d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Inter/Inter-SemiBold.woff2 differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Inter/LICENSE.txt b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Inter/LICENSE.txt new file mode 100644 index 00000000..d6882801 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Inter/LICENSE.txt @@ -0,0 +1,93 @@ +Copyright (c) 2016-2020 The Inter Project Authors +https://github.com/rsms/inter + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION AND CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/Metropolis-Regular.woff2 b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/Metropolis-Regular.woff2 new file mode 100644 index 00000000..f50bf342 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/Metropolis-Regular.woff2 differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/Metropolis-SemiBold.woff2 b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/Metropolis-SemiBold.woff2 new file mode 100644 index 00000000..fad6dfde Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/Metropolis-SemiBold.woff2 differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/README.md b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/README.md new file mode 100644 index 00000000..ce01464d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/README.md @@ -0,0 +1,25 @@ +# Metropolis + +A modern, geometric typeface. Influenced by other popular geometric, minimalist sans-serif typefaces of the new millennium. Designed for optimal readability at small point sizes while beautiful at large point sizes. + +![Metropolis](./Specimens/Metro-1.png) + +--- + +![Metropolis](./Specimens/Metro-2.png) + +### Where am I? + +See [Documentation](./Documentation/Documentation.md). + +### The Unlicense + +Contributions welcome. + +### Contact + +Reachable via chris.m.simpson [at] icloud.com or tweet @ChrisMSimpson. + +### Support + +There is none. Oh, you meant support me? I dare you to click the sponsor button above. diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/UNLICENSE b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/UNLICENSE new file mode 100644 index 00000000..68a49daa --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/fonts/Metropolis/UNLICENSE @@ -0,0 +1,24 @@ +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/logger-ui-inspector.css b/android/app/src/main/assets/extensions/ublock_origin/css/logger-ui-inspector.css new file mode 100644 index 00000000..3d5dc77f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/logger-ui-inspector.css @@ -0,0 +1,123 @@ +#domInspector { + display: none; + overflow: hidden; + } +#inspectors.dom #domInspector { + display: flex; + } +#domInspector .permatoolbar .highlightMode.invert { + transform: rotate(180deg); + } +#domInspector button.vExpandToggler > .fa-icon { + transform: scaleY(-1) + } +#domInspector button.vCompactToggler > .fa-icon { + transform: scaleY(1) + } +#domInspector .vscrollable { + overflow-x: auto; + } +#domInspector > ul:first-of-type { + padding-left: 0.5em; + } +#domInspector ul { + background-color: var(--surface-1); + margin: 0; + padding-left: 1em; + } +#domInspector li { + list-style-type: none; + white-space: nowrap; + } +#domInspector li.isCosmeticHide, +#domInspector li.isCosmeticHide ul, +#domInspector li.isCosmeticHide li { + background-color: var(--surface-2); + } +#domInspector li > * { + display: inline-block; + line-height: 1.2; + margin-right: 1em; + vertical-align: middle; + } +#domInspector li > span { + color: #aaa; + } +#domInspector li > span:first-child { + color: var(--ink-1); + cursor: default; + font-size: 1rem; + margin-right: 0; + opacity: 0.5; + padding: 0 4px 0 1px; + visibility: hidden; + } +#domInspector li > span:first-child:hover { + opacity: 1; + } +#domInspector li > *:last-child { + margin-right: 0; + } +#domInspector li > span:first-child:before { + content: '\a0'; + } +#domInspector li.branch > span:first-child:before { + content: '\25b8'; + visibility: visible; + } +#domInspector li.branch.show > span:first-child:before { + content: '\25be'; + } +#domInspector li.branch.hasCosmeticHide > span:first-child:before { + color: red; + } +#domInspector li > code { + cursor: pointer; + font-family: monospace; + overflow: hidden; + text-overflow: ellipsis; + } +#domInspector li > code.off { + text-decoration: line-through; + } +#domInspector li > code.filter { + color: var(--cm-negative); + } + +#domInspector li > ul { + display: block; + } +#domInspector li:not(.hasCosmeticHide):not(.isCosmeticHide):not(.show) > ul { + display: none; + } + +#domInspector li:not(.hasCosmeticHide):not(.isCosmeticHide):not(.show) { + display: none; + } +#domInspector #domTree > li { + display: block; + } +#domInspector:not(.vExpanded) ul { + display: block; + } +#domInspector li > ul > li:not(.hasCosmeticHide):not(.isCosmeticHide) { + display: none; + } +#domInspector li.show > ul > li:not(.hasCosmeticHide):not(.isCosmeticHide) { + display: block; + } +#domInspector li:not(.hasCosmeticHide):not(.isCosmeticHide) { + display: block; + } +#domInspector.hCompact li > code:first-of-type { + max-width: 12em; + } + +#cosmeticFilteringDialog .dialog { + text-align: center; + } +#cosmeticFilteringDialog .dialog textarea { + height: 40vh; + white-space: pre; + word-wrap: normal; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/logger-ui.css b/android/app/src/main/assets/extensions/ublock_origin/css/logger-ui.css new file mode 100644 index 00000000..38e434f5 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/logger-ui.css @@ -0,0 +1,1019 @@ +body { + display: flex; + flex-direction: column; + height: 100vh; + height: 100svh; + overflow-y: hidden; + width: 100vw; + } +textarea { + box-sizing: border-box; + direction: ltr; + min-height: 6rem; + resize: vertical; + width: 100%; + } +.permatoolbar { + background-color: var(--surface-1); + border: 0; + box-sizing: border-box; + display: flex; + flex-shrink: 0; + font-size: 120%; + justify-content: space-between; + margin: 0; + padding: 0.25em; + } +.permatoolbar > div { + display: flex; + } +.permatoolbar button.iconified { + padding-left: var(--default-gap-xsmall); + padding-right: var(--default-gap-xsmall); + } +.permatoolbar button.active { + fill: rgb(var(--primary-50)); + } +.permatoolbar button > .fa-icon { + font-size: 180%; + } +#pageSelector { + min-width: 10em; + padding: 0.25em 0; + width: 50vw; + } +#showpopup { + display: inline-flex; + align-items: center; + } +#showpopup img { + filter: grayscale(100%); + height: auto; + width: 1em; + } +#info { + fill: #ccc; + } +#info:hover { + fill: #000; + } + +/* + https://github.com/gorhill/uBlock/issues/3293 + => https://devhints.io/css-system-font-stack +*/ +#inspectors { + display: flex; + flex-direction: column; + flex-grow: 1; + flex-wrap: nowrap; + font-family: "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif; + overflow: hidden; + position: relative; + } +.inspector { + border-top: 1px solid var(--border-4); + display: flex; + flex-direction: column; + height: 100%; + } +.inspector .permatoolbar { + border-bottom: 1px solid var(--border-1); + } +.vscrollable { + direction: ltr; + flex-grow: 1; + font-size: var(--font-size-smaller); + height: 1px; /* necessary for proper space allocation by flex boxes */ + overflow-x: hidden; + overflow-y: auto; +} + +#domInspector button.vExpandToggler > .fa-icon { + transform: scaleY(1) + } +.inspector:not(.vExpanded) button.vCompactToggler > .fa-icon { + transform: scaleY(-1) + } +.hCompact button.hCompactToggler > .fa-icon { + transform: scaleX(-1) + } + +#inspectors.dom #netInspector { + display: none; + } + +#netInspector #pause > .fa-icon[data-i18n-title="loggerUnpauseTip"] { + display: none; +} +#netInspector.paused #pause > .fa-icon[data-i18n-title="loggerPauseTip"] { + display: none; +} +#netInspector.paused #pause > .fa-icon[data-i18n-title="loggerUnpauseTip"] { + display: inline-flex; + fill: #5F9EA0; +} +#netInspector #filterExprGroup { + display: flex; + position: relative; + } +#netInspector #filterButton { + opacity: 0.25; + } +#netInspector.f #filterButton { + opacity: 1; + } +#netInspector #filterInput { + border: 1px solid gray; + display: inline-flex; + } +#netInspector #filterInput > input { + border: 0; + min-width: 16em; + } +#netInspector #filterExprButton { + transform: scaleY(-1); + } +#netInspector #filterExprButton:hover { + background-color: transparent; + } +#netInspector #filterExprButton.expanded { + transform: scaleY(1); + } +#netInspector #filterExprPicker { + background-color: var(--surface-0); + border: 1px solid gray; + display: none; + position: absolute; + flex-direction: column; + font-size: small; + top: 100%; + z-index: 100; + } +body[dir="ltr"] #netInspector #filterExprPicker { + right: 0; + } +body[dir="rtl"] #netInspector #filterExprPicker { + left: 0; + } + +#netInspector #filterExprGroup:hover #filterExprButton.expanded ~ #filterExprPicker { + display: flex; + } +#netInspector #filterExprPicker > div { + border: 1px dotted #ddd; + border-left: 0; + border-right: 0; + display: flex; + padding: 0.5em; + } +#netInspector #filterExprPicker > div:first-of-type { + border-top: 0; + } +#netInspector #filterExprPicker > div:last-of-type { + border-bottom: 0; + } +#netInspector #filterExprPicker div { + display: flex; + } +#netInspector #filterExprPicker span[data-filtex] { + align-items: center; + border: 1px solid transparent; + cursor: pointer; + display: inline-flex; + margin: 0 0.5em 0 0; + padding: 0.25em; + white-space: nowrap; + } +#netInspector #filterExprPicker span[data-filtex]:last-of-type { + margin: 0; + } +#netInspector #filterExprPicker span[data-filtex]:hover { + background-color: rgb(var(--primary-70) / 25%); + border: 1px solid rgb(var(--primary-70)); + } +#netInspector #filterExprPicker span.on[data-filtex], +#filterExprButton.active { + background-color: rgb(var(--primary-70) / 40%); + } +#netInspector #filterExprPicker span.on[data-filtex] { + border: 1px solid rgb(var(--primary-70)); + } + +#netInspector .vscrollable { + overflow: hidden; + } +#vwRenderer { + box-sizing: border-box; + height: 100%; + overflow: hidden; + position: relative; + width: 100%; + } +#vwRenderer #vwScroller { + height: 100%; + overflow-x: hidden; + overflow-y: auto; + position: absolute; + width: 100%; + } +#vwRenderer #vwScroller #vwVirtualContent { + overflow: hidden; + } +#vwRenderer #vwContent { + left: 0; + overflow: hidden; + position: absolute; + width: 100%; + } +#vwRenderer .logEntry { + background-color: var(--surface-1); + display: block; + left: 0; + overflow: hidden; + position: absolute; + width: 100%; + } +#vwRenderer .logEntry:empty { + display: none; + } +#vwRenderer .logEntry > div { + border-bottom: 1px dotted var(--border-1); + box-sizing: border-box; + display: flex; + height: 100%; + max-height: 200px; + white-space: nowrap; + } +#vwRenderer .logEntry > div[data-status="1"], +.netFilteringDialog > .panes > .details > div[data-status="1"] { + background-color: rgb(var(--popup-cell-block-surface-rgb) / 50%); + } +#vwRenderer .logEntry > div[data-status="1"][data-modifier], +.netFilteringDialog > .panes > .details > div[data-status="1"][data-modifier] { + background-color: var(--logger-modified-surface); + } +#vwRenderer .logEntry > div[data-status="3"] { + background-color: rgba(108, 108, 108, 0.1); + } +:root.colorBlind #vwRenderer .logEntry > div[data-status="3"] { + background-color: rgba(96, 96, 96, 0.1); + } +#vwRenderer .logEntry > div[data-status="2"], +.netFilteringDialog > .panes > .details > div[data-status="2"] { + background-color: rgb(var(--popup-cell-allow-surface-rgb) / 50%); + } +#vwRenderer .logEntry > div[data-tabid="-1"] { + text-shadow: 0 0.2em 0.4em #aaa; + } +#vwRenderer .logEntry > div.extendedRealm, +#vwRenderer .logEntry > div.redirect { + background-color: var(--logger-redirected-surface); + } +#vwRenderer .logEntry > div.extendedRealm.scriptlet { + background-color: var(--logger-scriptlet-surface); + } +:root.colorBlind #vwRenderer .logEntry > div.extendedRealm, +:root.colorBlind #vwRenderer .logEntry > div.redirect { + background-color: rgba(0, 19, 110, 0.1); + } +#vwRenderer .logEntry > div[data-aliasid] { + color: var(--popup-cell-cname-ink); + } +#vwRenderer .logEntry > div[data-type="tabLoad"] { + background-color: #666; + color: white; + } +#vwRenderer .logEntry > div[data-type="error"] { + color: var(--cm-negative); + } +#vwRenderer .logEntry > div[data-type="info"] { + color: var(--sf-def-ink); + } +#vwRenderer .logEntry > div.voided { + opacity: 0.5; + } +#vwRenderer .logEntry > div.voided:hover { + opacity: 0.7; + } + +#vwRenderer .logEntry > .fields > span { + border-left: 1px dotted var(--border-1); + box-sizing: border-box; + display: inline-block; + height: 100%; + overflow: hidden; + padding: 2px; + vertical-align: middle; + white-space: nowrap; + word-break: break-all; + } +#vwRenderer .logEntry > div:hover > span { + background-color: rgba(0,0,0,0.04); + } +body[dir="ltr"] #vwRenderer .logEntry > .fields > span:first-child { + border-left: 0; + } +body[dir="rtl"] #vwRenderer .logEntry > .fields > span:first-child { + border-right: 0; + } +#vwRenderer .logEntry > div > span:nth-of-type(1) { + } +#vwRenderer .logEntry > div > span:nth-of-type(2) { + } +#vwRenderer .logEntry > .fields > span:nth-of-type(2) { + text-overflow: ellipsis; + } +#vwRenderer .logEntry > .fields.messageRealm > span:nth-of-type(2) ~ span { + display: none; + } +.vExpanded #vwRenderer #vwContent .logEntry > .fields > span:nth-of-type(2) { + overflow-y: auto; + white-space: pre-line; + } +#vwRenderer .logEntry > .fields.messageRealm[data-type="tabLoad"] > span:nth-of-type(2) { + text-align: center; + } +#vwRenderer .logEntry > .fields.extendedRealm > span:nth-of-type(2) > span:first-of-type { + display: none; + } +#vwRenderer .logEntry > .fields.extendedRealm.isException > span:nth-of-type(2) > span:last-of-type { + text-decoration: line-through rgba(0,0,255,0.7); + } +#vwRenderer .logEntry > .fields > span:nth-of-type(3) { + font-family: monospace; + padding-left: 0.3em; + padding-right: 0.3em; + text-align: center; + } +#netInspector:not(.vExpanded) #vwRenderer .logEntry > .fields > span:nth-of-type(4) { + text-align: right; + } +#vwRenderer #vwContent .logEntry > .fields > span:nth-of-type(4) { + text-overflow: ellipsis; + } +.vExpanded #vwRenderer #vwContent .logEntry > .fields > span:nth-of-type(4) { + overflow-y: auto; + text-overflow: clip; + white-space: pre-line; + } +#vwRenderer .logEntry > .fields > span:nth-of-type(5) { + text-align: center; + } +#vwRenderer .logEntry > .fields > span:nth-of-type(3), +#vwRenderer .logEntry > .fields > span:nth-of-type(5), +#vwRenderer .logEntry > .fields > span:nth-of-type(7) { + white-space: nowrap !important; + } +#vwRenderer .logEntry > .fields > span:nth-of-type(8) { + position: relative; + } +#vwRenderer #vwContent .logEntry > .fields > span:nth-of-type(8) { + text-overflow: ellipsis; + } +.vExpanded #vwRenderer #vwContent .logEntry > .fields > span:nth-of-type(8) { + overflow-y: auto; + white-space: pre-line; + } +#vwRenderer .logEntry > .fields > span:nth-of-type(8) b { + font-weight: bold; + } +#vwRenderer .logEntry > div[data-status="1"] > span:nth-of-type(8) b, +.netFilteringDialog > .panes > .details > div[data-status="1"] b { + background-color: rgb(var(--popup-cell-block-surface-rgb) / 100%); + } +#vwRenderer .logEntry > div[data-status="1"][data-modifier] > span:nth-of-type(8) b, +.netFilteringDialog > .panes > .details > div[data-status="1"][data-modifier] b { + background-color: var(--logger-modified-em-surface); + } +#vwRenderer .logEntry > div[data-status="3"] > span:nth-of-type(8) b { + background-color: rgba(108, 108, 108, 0.2); + } +:root.colorBlind #vwRenderer .logEntry > div[data-status="3"] > span:nth-of-type(8) b { + background-color: rgba(96, 96, 96, 0.2); + } +#vwRenderer .logEntry > div[data-status="2"] > span:nth-of-type(8) b, +.netFilteringDialog > .panes > .details > div[data-status="2"] b { + background-color: rgb(var(--popup-cell-allow-surface-rgb) / 100%); + } +#vwRenderer .logEntry > .fields > span:nth-of-type(8) a { + align-items: center; + background-color: dimgray; + color: white; + display: none; + height: min(100%, 1.5em); + justify-content: center; + padding: 0.1em; + opacity: 0.4; + position: absolute; + right: 0; + text-decoration: none; + top: 0; + width: 1.5em; + } +#netInspector.vExpanded #vwRenderer .logEntry > .fields > span:nth-of-type(8) a { + bottom: 0px; + height: unset; + padding: 0.2em; + top: unset; + } +#vwRenderer .logEntry > .fields > span:nth-of-type(8) a::after { + content: '\2197'; + } +#vwRenderer .logEntry > .fields.networkRealm > span:nth-of-type(8):hover a { + display: inline-flex; + } +#vwRenderer .logEntry > .fields > span:nth-of-type(8) a:hover { + opacity: 1; + } + +@keyframes unrollRow { + to { + box-shadow: 0 2px 3px 0 #444; + height: auto; + max-height: 200px; + z-index: 1; + } +} +@keyframes unrollRowCell { + to { + height: auto; + overflow-y: auto; + white-space: pre-wrap; + } +} +#netInspector:not(.vExpanded) #vwRenderer .logEntry:hover { + animation-delay: 0.8s; + animation-fill-mode: forwards; + animation-name: unrollRow; + animation-timing-function: step-start; + } +#netInspector:not(.vExpanded) #vwRenderer .logEntry:hover > .fields > span { + animation-delay: 0.8s; + animation-fill-mode: forwards; + animation-name: unrollRowCell; + animation-timing-function: step-start; + } + +#vwRenderer #vwBottom { + background-color: #00F; + height: 0; + overflow: hidden; + width: 100%; + } +#vwRenderer #vwLineSizer { + left: 0; + pointer-events: none; + position: absolute; + top: 0; + visibility: hidden; + width: 100%; + } + +#inspectors .entryTools { + background-color: var(--surface-0); + flex-basis: 50%; + } +#inspectors .entryTools:empty { + display: none; + } + +.closeButton { + stroke: var(--ink-1); + stroke-width: 3px; + width: 1.6em; + height: 1.6em; + bottom: calc(100% + 2px); + } +body[dir="ltr"] .closeButton { + right: 0; + } +body[dir="rtl"] .closeButton { + left: 0; + } +.closeButton:hover { + background-color: var(--surface-2) !important; + } +.closeButton > * { + pointer-events: none; + } + +#inspectors #infoInspector { + flex-basis: 200%; + } +#inspectors:not(.console) #infoInspector { + display: none; + } +#inspectors #infoInspector .vscrollable { + font-family: monospace; + font-size: small; + } +#inspectors #infoInspector .vscrollable > div { + border-bottom: 1px dotted gray; + padding: 0.2em; + white-space: pre-wrap; + word-break: break-all; + } +#inspectors #infoInspector .vscrollable > div:first-of-type { + } +#inspectors #infoInspector .vscrollable > div[data-type="error"] { + color: var(--cm-negative); + } + +#popupContainer { + background-color: var(--surface-1); + border: 1px solid gray; + bottom: 0; + display: none; + max-height: min(800px, calc(100vh - 2rem)); + max-height: min(800px, calc(100svh - 2rem)); + min-width: 360px; + overflow: hidden; + position: fixed; + right: 0; + z-index: 200; + } +#inspectors.popupOn #popupContainer { + display: block; + } + +#modalOverlay { + align-items: center; + background-color: rgba(0, 0, 0, 0.5); + border: 0; + bottom: 0; + display: none; + justify-content: center; + left: 0; + margin: 0; + position: fixed; + right: 0; + top: 0; + z-index: 400; + } +#modalOverlay.on { + display: flex; + } +#modalOverlay > div { + position: relative; + } +#modalOverlay .closeButton { + background-color: var(--surface-1); + position: absolute; + } + +#modalOverlayContainer { + background-color: var(--surface-1); + border: 0; + box-sizing: border-box; + padding: 1em; + max-height: 90vh; + overflow-y: auto; + width: 90vw; + } + +.netFilteringDialog { + font-size: var(--font-size-smaller); + } +.netFilteringDialog a { + text-decoration: none; + } +.netFilteringDialog select { + max-width: 50vw; + outline: none; + text-overflow: ellipsis; +} +.netFilteringDialog > .preview { + align-items: center; + /* http://lea.verou.me/css3patterns/ */ + background-color: #aaa; + background-image: + linear-gradient( + 45deg, + #666 25%, + transparent 25%, + transparent 75%, + #666 75%, + #666 + ), + linear-gradient( + 45deg, + #666 25%, + transparent 25%, + transparent 75%, + #666 75%, + #666 + ); + background-position:0 0, 9px 9px; + background-size: 18px 18px; + display: flex; + justify-content: center; + margin-bottom: 1em; + padding: 0.5em; + text-align: center; + } +.netFilteringDialog > .preview > * { + max-width: 100%; + max-height: 20vh; + } +.netFilteringDialog > .preview > span { + background-color: var(--surface-3); + cursor: pointer; + padding: 1em; + } + +.netFilteringDialog > .headers { + align-items: center; + border-bottom: 1px solid var(--border-4); + display: flex; + justify-content: space-between; + line-height: 2; + } +.netFilteringDialog > .headers .header { + border: 1px solid var(--border-2); + border-bottom: 1px solid var(--border-4); + border-top-left-radius: 4px; + border-top-right-radius: 4px; + color: var(--border-2); + cursor: pointer; + display: inline-block; + margin-inline-end: 4px; + padding: 0 1em; + position: relative; + top: 1px; + } +.netFilteringDialog[data-pane="details"] > .headers [data-pane="details"], +.netFilteringDialog[data-pane="dynamic"] > .headers [data-pane="dynamic"], +.netFilteringDialog[data-pane="static"] > .headers [data-pane="static"] { + background-color: var(--surface-0); + border-color: var(--border-4); + border-bottom: 1px solid transparent; + color: var(--ink-1); + } +.netFilteringDialog > .headers > .tools { + bottom: 0; + display: flex; + height: 100%; + margin-inline-start: 2rem; + } +.netFilteringDialog > .headers > .tools > span { + color: var(--ink-3); + fill: var(--ink-3); + cursor: pointer; + font-size: 1.5em; + padding: 0 0.25em; + text-align: center; + } +.netFilteringDialog > .headers > .tools > span:hover { + color: var(--ink-1); + fill: var(--ink-1); + } +.netFilteringDialog.extendedRealm > .headers .dynamic, +.netFilteringDialog.extendedRealm > .panes > .dynamic { + display: none; + } +.netFilteringDialog.extendedRealm > .headers .static, +.netFilteringDialog.extendedRealm > .panes > .static { + display: none; + } +.netFilteringDialog > div.panes { + overflow: hidden; + overflow-y: auto; + padding-top: 1em; + } +.netFilteringDialog > div.panes > div { + display: none; + } +.netFilteringDialog[data-pane="details"] > .panes > [data-pane="details"], +.netFilteringDialog[data-pane="dynamic"] > .panes > [data-pane="dynamic"], +.netFilteringDialog[data-pane="static"] > .panes > [data-pane="static"] { + display: flex; + flex-direction: column; + padding: 0 var(--default-gap-xsmall) var(--default-gap-xsmall) var(--default-gap-xsmall); + } +.netFilteringDialog > .panes > .details > div { + align-items: stretch; + background-color: var(--surface-2); + border: 0; + border-bottom: 1px solid var(--surface-0); + display: flex; + } +.netFilteringDialog > .panes > .details > div > span { + padding: 0.5em; + } +.netFilteringDialog > .panes > .details > div > span:nth-of-type(1) { + border: 0; + flex-grow: 0; + flex-shrink: 0; + text-align: right; + width: 8em; + } +body[dir="ltr"] .netFilteringDialog > .panes > .details > div > span:nth-of-type(1) { + border-right: 1px solid var(--surface-0); + } +body[dir="rtl"] .netFilteringDialog > .panes > .details > div > span:nth-of-type(1) { + border-left: 1px solid var(--surface-0); + } +.netFilteringDialog > .panes > .details > div > span:nth-of-type(2) { + flex-grow: 1; + max-height: 10vh; + overflow: hidden auto; + white-space: pre-line + } +.netFilteringDialog > .panes > .details > div > span:nth-of-type(2):not(.prose) { + word-break: break-all; + } +.netFilteringDialog > .panes > .details > div > span:nth-of-type(2) .listEntry { + display: inline-flex; + } +.netFilteringDialog > .panes > .details > div > span:nth-of-type(2) .fa-icon { + font-size: 110%; + opacity: 0.5; + } +.netFilteringDialog > .panes > .details > div > span:nth-of-type(2) .fa-icon:hover { + opacity: 1; + } +.netFilteringDialog > .panes > .details .exceptor { + align-items: center; + border-left: 1px solid var(--surface-0); + cursor: pointer; + display: inline-flex; + font-family: monospace; + opacity: 0.8; + } +.netFilteringDialog > .panes > .details .exceptor:hover { + opacity: 1; + } +.netFilteringDialog > .panes > .details .exceptored .filter { + text-decoration: line-through; + } +.netFilteringDialog > .panes > .details .exceptored .exceptor { + background-color: rgb(var(--primary-50) / 50%); + } +.netFilteringDialog > .panes > .details .exceptor::before { + content: '@@'; + } +.netFilteringDialog.extendedRealm > .panes > .details .exceptor::before { + content: '#@#'; + } +.netFilteringDialog > div.panes > .dynamic > .toolbar { + padding-bottom: 1em; + } +.netFilteringDialog > div.panes > .dynamic .row { + display: flex; + min-height: 2.2em; + } +.netFilteringDialog > div.panes > .dynamic .row > span:nth-of-type(1) { + align-self: stretch; + border: 0; + display: inline-flex; + flex-grow: 0; + flex-shrink: 0; + text-align: center; + width: 4.5em; + } +body[dir="ltr"] .netFilteringDialog > div.panes > .dynamic .row > span:nth-of-type(1) { + border-right: 1px solid var(--surface-0); + } +body[dir="rtl"] .netFilteringDialog > div.panes > .dynamic .row > span:nth-of-type(1) { + border-left: 1px solid var(--surface-0); + } +.netFilteringDialog > div.panes > .dynamic .row > span:nth-of-type(2) { + align-self: center; + padding: 0 0.5em; + } +.netFilteringDialog > div.panes > .dynamic > .toolbar #saveRules { + background-color: #ffe; + border: 1px solid #ddc; + border-radius: 4px; + fill: #888; + cursor: pointer; + font-size: 2em; + visibility: hidden; + width: 100%; + } +body.dirty .netFilteringDialog > div.panes > .dynamic > .toolbar #saveRules { + visibility: visible; + } +.netFilteringDialog > div.panes > .dynamic > .toolbar #saveRules:hover { + fill: black; + } +.netFilteringDialog > div.panes > .dynamic > .toolbar .entry { + display: none; + } +.netFilteringDialog > div.panes > .dynamic .entry { + background-color: var(--surface-2); + border: 0; + border-bottom: 1px solid var(--surface-0); + } +.netFilteringDialog > div.panes > .dynamic .entry:hover { + background-color: var(--surface-3); + } +.netFilteringDialog > div.panes > .dynamic .entry > .action { + background-color: transparent; + border: 0; + cursor: pointer; + } +.netFilteringDialog > div.panes > .dynamic .entry > .action > span { + background-color: transparent; + border: 0; + display: inline-block; + height: 100%; + opacity: 0.2; + visibility: hidden; + width: 33.33%; + } +.netFilteringDialog > div.panes > .dynamic .entry > .action.allow { + background-color: rgba(0, 160, 0, 0.3); + } +:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.allow { + background-color: rgba(255, 194, 57, 0.4); + } +.netFilteringDialog > div.panes > .dynamic .entry > .action.noop { + background-color: rgba(108, 108, 108, 0.3); + } +:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.noop { + background-color: rgba(96, 96, 96, 0.4); + } +.netFilteringDialog > div.panes > .dynamic .entry > .action.block { + background-color: rgba(192, 0, 0, 0.3); + } +:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.block { + background-color: rgba(0, 19, 110, 0.4); + } +.netFilteringDialog > div.panes > .dynamic .entry > .action.own.allow { + background-color: rgba(0, 160, 0, 1); + } +:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.own.allow { + background-color: rgba(255, 194, 57, 1); + } +.netFilteringDialog > div.panes > .dynamic .entry > .action.own.noop, +:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.own.noop { + background-color: rgba(108, 108, 108, 1); + } +.netFilteringDialog > div.panes > .dynamic .entry > .action.own.block { + background-color: rgba(192, 0, 0, 1); + } +:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action.own.block { + background-color: rgba(0, 19, 110, 1); + } +.netFilteringDialog > div.panes > .dynamic .entry > .action:not(.own):hover > span { + opacity: 0.2; + visibility: visible; + } +.netFilteringDialog > div.panes > .dynamic .entry > .action:not(.own):hover > span:hover { + opacity: 0.75; + } +.netFilteringDialog > div.panes > .dynamic .entry > .action > .allow { + background-color: rgb(0, 160, 0); + } +:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action > .allow { + background-color: rgb(255, 194, 57); + } +.netFilteringDialog > div.panes > .dynamic .entry > .action > .noop { + background-color: rgb(108, 108, 108); + } +.netFilteringDialog > div.panes > .dynamic .entry > .action > .block { + background-color: rgb(192, 0, 0); + } +:root.colorBlind .netFilteringDialog > div.panes > .dynamic .entry > .action > .block { + background-color: rgb(0, 19, 110); + } +.netFilteringDialog > div.panes > .dynamic .entry > .url { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + } +.netFilteringDialog > div.panes > div.static > div { + line-height: 2; + } +.netFilteringDialog > div.panes > div.static textarea { + height: 6em; + word-break: break-all; + } +.netFilteringDialog > div.panes > div.static > div:nth-of-type(2) { + text-align: center; + } + +#filterFinderDialog { + word-break: break-all; + } +#filterFinderDialog code { + background: #eee; + font-size: 85%; + padding: 3px; + unicode-bidi: plaintext; + white-space: pre-wrap; + } +#filterFinderDialog ul { + font-size: larger; + } +#filterFinderDialog .filterFinderListEntry { + align-items: flex-end; + display: flex; + } +#filterFinderDialog .filterFinderListEntry a { + text-decoration: none; + } +#filterFinderDialog .filterFinderListEntry a.fa-icon { + margin: 0 0.5em; + opacity: 0.6; + } +#filterFinderDialog .filterFinderListEntry a.fa-icon:hover { + opacity: 1; + } +#filterFinderDialog .filterFinderListEntry a.fa-icon[href=""] { + display: none; + } +#filterFinderDialog > *:first-child { + margin-top: 0; + } +#filterFinderDialog > *:last-child { + margin-bottom: 0; + } + +#loggerStatsDialog .sortedEntries { + display: flex; + flex-direction: column; + font-size: smaller; + } +#loggerStatsDialog .sortedEntries > div { + display: flex; + } +#loggerStatsDialog .sortedEntries > div > span:first-of-type { + flex-grow: 0; + flex-shrink: 0; + padding: 0 2em 0 0; + text-align: right; + width: 3em; + } +#loggerStatsDialog .sortedEntries > div > span:last-of-type { + flex-grow: 1; + flex-shrink: 1; + white-space: pre; + } + +#loggerExportDialog { + display: flex; + flex-direction: column; + } +#loggerExportDialog .options { + display: flex; + justify-content: space-between; + margin-bottom: 1em; + } +#loggerExportDialog .options > div { + display: inline-flex; + } +#loggerExportDialog .options span[data-i18n] { + border: 1px solid rgb(var(--primary-70)); + cursor: pointer; + font-size: 90%; + margin: 0; + padding: 0.5em; + white-space: nowrap; + } +#loggerExportDialog .options span[data-i18n]:hover { + background-color: rgb(var(--primary-70) / 40%); + } +#loggerExportDialog .options span.on[data-i18n], +#loggerExportDialog .options span.pushbutton:active { + background-color: rgb(var(--primary-70) / 40%); + } +#loggerExportDialog .output { + font-size: small; + height: 80vh; + padding: 0.5em; + white-space: pre-wrap; + } + +#loggerSettingsDialog { + display: flex; + flex-direction: column; + } +#loggerSettingsDialog > div { + padding-bottom: 1em; + } +#loggerSettingsDialog > div:last-of-type { + padding-bottom: 0; + } +#loggerSettingsDialog ul { + padding: 0; + } +body[dir="ltr"] #loggerSettingsDialog ul { + padding-left: 2em; + } +body[dir="rtl"] #loggerSettingsDialog ul { + padding-right: 2em; + } +#loggerSettingsDialog li { + list-style-type: none; + margin: 0.5em 0 0 0; + } +#loggerSettingsDialog input { + max-width: 6em; + } + +.hide { + display: none !important; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/popup-fenix.css b/android/app/src/main/assets/extensions/ublock_origin/css/popup-fenix.css new file mode 100644 index 00000000..b845562d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/popup-fenix.css @@ -0,0 +1,779 @@ + /* External CSS values override */ +.fa-icon.fa-icon-badged > .fa-icon-badge { + bottom: auto; + top: -20%; + } + +/* Internal CSS values */ +:root body { + overflow: hidden; + } +:root body, +:root.mobile body { + --font-size: 14px; + --popup-gap: var(--font-size); + --popup-gap-thin: calc(0.5 * var(--popup-gap)); + --popup-gap-extra-thin: calc(0.25 * var(--popup-gap)); + --popup-main-min-width: 18em; + --popup-firewall-min-width: 30em; + --popup-rule-cell-width: 5em; + font-size: var(--font-size); + line-height: 20px; + } +:root body.loading { + opacity: 0; + } +a { + color: var(--ink-1); + fill: var(--ink-1); + text-decoration: none; + } +:focus { + outline: 0; + } + +#panes { + align-items: stretch; + display: flex; + flex-direction: row-reverse; + padding: 0; + position: relative; + } +#main { + align-self: flex-start; + max-width: 340px; + min-width: var(--popup-main-min-width); + } +:root.portrait #main { + align-self: inherit; + } +hr { + border: 0; + border-top: 1px solid var(--hr-ink); + margin: 0; + padding: 0; + } + +#sticky { + background-color: var(--surface-1); + position: sticky; + top: 0; + z-index: 100; + } +#stickyTools { + align-items: stretch; + display: flex; + justify-content: space-between; + margin: var(--popup-gap-extra-thin) 0; + } +#switch { + color: var(--popup-power-ink); + cursor: pointer; + display: flex; + fill: var(--popup-power-ink); + flex-grow: 1; + font-size: 96px; + justify-content: center; + margin: var(--popup-gap) 0; + padding: 0; + stroke: none; + stroke-width: 64; + } +body.off #switch { + fill: var(--surface-1); + stroke: var(--checkbox-ink); + } +.rulesetTools { + background-color: transparent; + border: 0; + box-sizing: border-box; + display: flex; + flex-direction: column; + justify-content: space-between; + width: 25%; + } +.rulesetTools [id] { + background-color: var(--popup-ruleset-tool-surface); + border-radius: 4px; + cursor: pointer; + fill: var(--popup-ruleset-tool-ink); + flex-grow: 1; + font-size: 2.2em; + padding: 0; + visibility: hidden; + } +.rulesetTools [id]:not(:first-of-type) { + margin-block-start: 1px; + } +.rulesetTools [id] > svg { + fill: var(--ink-4); + } +body.needReload #refresh, +body.needSave #saveRules, +body.needSave #revertRules { + visibility: visible; + } +#hostname { + background-color: var(--popup-toolbar-surface); + margin: 0; + padding: var(--popup-gap-thin) 0; + text-align: center; + white-space: normal; + + } +#hostname > span { + word-break: break-all; + } +#hostname > span + span { + font-weight: 600; + } + +#basicStats { + column-gap: var(--popup-gap); + display: grid; + grid-template: auto / auto; + margin: var(--popup-gap) var(--popup-gap) var(--popup-gap-thin) var(--popup-gap); + } +#basicStats > span { + justify-self: center; + white-space: nowrap; + } +#basicStats > [data-i18n] { + font-size: 95%; + } +#basicStats > [data-i18n] + span { + font-size: 105%; + margin-bottom: var(--popup-gap-thin); + } +:root.portrait #basicStats { + grid-template: auto / auto auto; + margin-bottom: 0; + } +:root.portrait #basicStats > span { + font-size: inherit; + justify-self: stretch; + margin-bottom: var(--popup-gap); + white-space: unset; + } +:root.portrait #basicStats > [data-i18n] { + } +:root.portrait #basicStats > [data-i18n] + span { + text-align: end; + } + +.itemRibbon { + column-gap: var(--popup-gap); + display: grid; + grid-auto-columns: 1fr; + grid-auto-flow: column; + grid-template: auto / 1fr 1fr; + margin: var(--popup-gap); + } +.itemRibbon > span + span { + text-align: end; + } + +.toolRibbon { + align-items: start; + background-color: var(--popup-toolbar-surface); + display: grid; + grid-auto-columns: 1fr; + grid-auto-flow: column; + grid-template: auto / repeat(4, 1fr); + justify-items: center; + margin: 0; + white-space: normal; + } +.toolRibbon .tool { + cursor: pointer; + display: flex; + flex-direction: column; + font-size: 1.4em; + min-width: 32px; + padding: var(--popup-gap) + var(--popup-gap-thin); + unicode-bidi: embed; + visibility: hidden; + } +.toolRibbon .tool:hover { + color: var(--ink-1); + fill: var(--ink-1); + } +.toolRibbon .tool.enabled { + visibility: visible; + } +.toolRibbon .tool .caption { + font: 10px/12px sans-serif; + margin-top: 6px; + text-align: center; + } +:root.mobile.no-tooltips .toolRibbon .tool { + font-size: 1.6em; + } + +#basicTools .needPick:not(.canPick) { + visibility: hidden; + } + +#extraTools .fa-icon { + align-self: center; + position: relative; + } +#extraTools .fa-icon > .nope { + height: 1.1em; + left: 50%; + position: absolute; + stroke: var(--popup-icon-x-ink); + stroke-width: 2; + transform: translateX(-50%); + visibility: hidden; + width: 1.1em; + } +#extraTools > span.on .fa-icon >.nope { + visibility: visible; + } + +#unprocessedRequestWarning { + align-items: center; + background-color: #fc0; + color: rgb(var(--ink-80)); + stroke: rgb(var(--ink-80)); + display: none; + font-size: var(--font-size-smaller); + padding: var(--popup-gap-thin); + } +:root.warn #unprocessedRequestWarning { + display: flex; + } +#unprocessedRequestWarning > .dismiss { + flex-shrink: 0; + width: calc(var(--font-size) - 2px); + } +#unprocessedRequestWarning > .dismiss > svg { + width: 100%; + } + +#moreOrLess { + column-gap: 0; + display: grid; + grid-template: auto / 1fr 1fr; + justify-items: stretch; + margin: 1px 0 0 0; + } +#moreOrLess > span { + cursor: pointer; + margin: 0; + padding: var(--popup-gap-thin) var(--popup-gap); + user-select: none; + white-space: nowrap; + } +:root.mobile #moreOrLess > span { + padding: var(--popup-gap); + } +#moreButton .fa-icon { + transform: rotate(180deg); + } +#lessButton { + border-inline-start: 1px solid var(--surface-1); + text-align: end; + } +#moreButton.disabled, +#lessButton.disabled { + pointer-events: none; + visibility: hidden; + } + +#firewall { + border: 0; + flex-shrink: 1; + font-size: 90%; + margin: 0; + max-height: 600px; + max-width: 460px; + min-width: var(--popup-firewall-min-width); + padding: 0; + position: relative; + overflow-y: auto; + } +:root.desktop #firewall { + margin-inline-start: 1px; + } +:root.desktop body.vMin #firewall { + max-height: 100vh; + max-height: 100svh; + } +#firewall > * { + direction: ltr; + } +#firewall > section { + align-items: flex-start; + display: flex; + left: 0; + position: absolute; + z-index: 50; + } +#firewall > section .fa-icon { + color: var(--ink-4); + fill: var(--ink-4); + font-size: 150%; + padding: var(--popup-gap-thin); + } +#firewall > section:hover .fa-icon { + color: var(--ink-1); + fill: var(--ink-1); + } +#firewall.showBlocked > section .fa-icon, +#firewall.showAllowed > section .fa-icon, +#firewall.hideBlocked > section .fa-icon, +#firewall.hideAllowed > section .fa-icon, +#firewall.show3pScript > section .fa-icon, +#firewall.show3pFrame > section .fa-icon, +#firewall.hide3pScript > section .fa-icon, +#firewall.hide3pFrame > section .fa-icon { + color: rgb(var(--primary-70)); + fill: rgb(var(--primary-70)); + } +#firewall > section .filterExpressions { + background-color: var(--surface-0); + border: 1px solid var(--border-4); + display: none; + } +#firewall > section:hover .filterExpressions { + display: flex; + flex-direction: column; + } +#firewall > section .filterExpressions div { + border-bottom: 1px dotted #ddd; + padding: 0.25em; + } +#firewall > section .filterExpressions div:last-of-type { + border-bottom: 0; + } +#firewall > section .filterExpressions span { + cursor: default; + display: inline-flex; + margin: 0 0.25em 0 0; + padding: 0.5em; + white-space: nowrap; + border: 1px solid var(--surface-0); + } +#firewall > section .filterExpressions span:last-of-type { + margin: 0; + } +:root:not(.mobile) #firewall > section .filterExpressions span:not(.on):hover { + background-color: rgb(var(--primary-70) / 15%); + border: 1px solid rgb(var(--primary-70)); + } +#firewall > section .filterExpressions span.on { + background-color: rgb(var(--primary-70) / 40%); + border: 1px solid rgb(var(--primary-70)); + } +#firewall > div { + border: 0; + display: flex; + margin: 0; + margin-top: 1px; + padding: 0; + } +#firewall > div:first-of-type { + margin-top: 0; + } +#firewall > div:first-of-type ~ div[data-des="*"] { + display: none; + } +#firewall:not(.expanded) > div.isSubdomain:not(.expandException):not(.isRootContext), +#firewall.expanded > div.isSubdomain.expandException:not(.isRootContext) { + display: none; + } +#firewall > div > span, +#actionSelector > #dynaCounts { + background-color: var(--popup-cell-surface); + border: none; + box-sizing: border-box; + display: inline-flex; + padding: 0.4em 0; + position: relative; + } +#firewall > div:first-of-type span[data-i18n] { + cursor: pointer; + flex-direction: unset; + flex-grow: 1; + } +#firewall > div:first-of-type span[data-i18n]::before { + color: var(--ink-3); + content: '+'; + padding-right: 0.25em; + } +#firewall.expanded > div:first-of-type span[data-i18n]::before { + content: '\2012'; + } +#firewall > div > span:first-of-type { + flex-direction: column; + flex-grow: 1; + justify-content: flex-end; + padding-right: 2px; + text-align: right; + white-space: normal; + width: calc(100% - var(--popup-rule-cell-width)); + word-break: break-word; + } +#firewall > div[data-des="*"] > span:first-of-type { + flex-direction: row; + } +#firewall.show3pScript:not(.show3pFrame) > div:not([data-des="*"]).is3p:not(.hasScript), +#firewall.show3pFrame:not(.show3pScript) > div:not([data-des="*"]).is3p:not(.hasFrame), +#firewall.show3pScript.show3pFrame > div:not([data-des="*"]).is3p:not(.hasScript):not(.hasFrame), +#firewall.hide3pScript > div:not([data-des="*"]).is3p.hasScript, +#firewall.hide3pFrame > div:not([data-des="*"]).is3p.hasFrame, +#firewall.showBlocked > div:not([data-des="*"]).is3p:not(.totalBlocked):not(.blocked), +#firewall.showAllowed > div:not([data-des="*"]).is3p:not(.totalAllowed):not(.allowed), +#firewall.hideBlocked > div:not([data-des="*"]).is3p.totalBlocked, +#firewall.hideBlocked > div:not([data-des="*"]).is3p.blocked, +#firewall.hideAllowed > div:not([data-des="*"]).is3p.totalAllowed, +#firewall.hideAllowed > div:not([data-des="*"]).is3p.allowed { + max-height: 4px; + overflow-y: hidden; + pointer-events: none; + user-select: none; + } +#firewall.show3pScript:not(.show3pFrame) > div:not([data-des="*"]).is3p:not(.hasScript) *, +#firewall.show3pFrame:not(.show3pScript) > div:not([data-des="*"]).is3p:not(.hasFrame) *, +#firewall.show3pScript.show3pFrame > div:not([data-des="*"]).is3p:not(.hasScript):not(.hasFrame) *, +#firewall.hide3pScript > div:not([data-des="*"]).is3p.hasScript *, +#firewall.hide3pFrame > div:not([data-des="*"]).is3p.hasFrame *, +#firewall.showBlocked > div:not([data-des="*"]).is3p:not(.totalBlocked):not(.blocked) *, +#firewall.showAllowed > div:not([data-des="*"]).is3p:not(.totalAllowed):not(.allowed) *, +#firewall.hideBlocked > div:not([data-des="*"]).is3p.totalBlocked *, +#firewall.hideBlocked > div:not([data-des="*"]).is3p.blocked *, +#firewall.hideAllowed > div:not([data-des="*"]).is3p.totalAllowed *, +#firewall.hideAllowed > div:not([data-des="*"]).is3p.allowed * { + color: transparent !important; + } +#firewall > div.isCname > span:first-of-type { + color: var(--popup-cell-cname-ink); + } +#firewall > div > span:first-of-type > sub { + display: inline-block; + font-size: 85%; + font-weight: normal; + padding: 0.25em 0 0 0; + } +#firewall > div > span:first-of-type > sub:empty { + display: none; + } +#firewall > div > span:first-of-type ~ span { + flex-shrink: 0; + margin-left: 1px; + width: var(--popup-rule-cell-width); + } +#firewall > div > span:nth-of-type(2) { + display: none; + } +#firewall > div > span:nth-of-type(3), +#firewall > div > span:nth-of-type(4) { + color: var(--ink-2); + display: none; + font-family: monospace; + text-align: center; + } +#firewall > div.isDomain > span:first-of-type > span { + pointer-events: none; + } +#firewall > div.isDomain > span:first-of-type > span > span { + font-weight: 600; + pointer-events: auto; + } +#firewall > div.isDomain.hasSubdomains > span:first-of-type > span::before { + content: '\2026\A0'; + opacity: 0.6; + } +#firewall > div[data-des="*"] > span:nth-of-type(3), +#firewall > div.isSubdomain > span:nth-of-type(3), +#firewall > div.isSubdomain.isRootContext > span:nth-of-type(3), +#firewall.expanded > div:not(.expandException) > span:nth-of-type(3), +#firewall:not(.expanded) > div.expandException > span:nth-of-type(3), +#firewall:not(.expanded) > div.isDomain:not(.expandException) > span:nth-of-type(4), +#firewall.expanded > div.isDomain.expandException > span:nth-of-type(4), +#actionSelector > #dynaCounts { + display: inline-flex; + justify-content: space-between; + } +#firewall > div > span[data-acount]::before, +#firewall > div > span[data-bcount]::after, +#firewall > div > span[data-acount] > #actionSelector > #dynaCounts::before, +#firewall > div > span[data-acount] > #actionSelector > #dynaCounts::after { + content: ' '; + } +#firewall > div > span[data-acount]::before, +#firewall > div > span[data-acount] > #actionSelector > #dynaCounts::before { + padding-left: 0.1em; + } +#firewall > div > span[data-acount="1"]::before, +#firewall > div > span[data-acount="1"] > #actionSelector > #dynaCounts::before { + content: '+'; + } +#firewall > div > span[data-acount="2"]::before, +#firewall > div > span[data-acount="2"] > #actionSelector > #dynaCounts::before { + content: '++'; + } +#firewall > div > span[data-acount="3"]::before, +#firewall > div > span[data-acount="3"] > #actionSelector > #dynaCounts::before { + content: '+++'; + } +#firewall > div > span[data-bcount]::after, +#firewall > div > span[data-bcount] > #actionSelector > #dynaCounts::after { + padding-right: 0.1em; + } +#firewall > div > span[data-bcount="1"]::after, +#firewall > div > span[data-bcount="1"] > #actionSelector > #dynaCounts::after { + content: '\2212'; + } +#firewall > div > span[data-bcount="2"]::after, +#firewall > div > span[data-bcount="2"] > #actionSelector > #dynaCounts::after { + content: '\2212\2212'; + } +#firewall > div > span[data-bcount="3"]::after, +#firewall > div > span[data-bcount="3"] > #actionSelector > #dynaCounts::after { + content: '\2212\2212\2212'; + } + +body.advancedUser #firewall > div > span:first-of-type { + width: calc(100% - 2 * var(--popup-rule-cell-width)); + } +body.advancedUser #firewall > div > span:nth-of-type(2) { + display: inline-flex; + } +body.advancedUser #firewall > div:first-of-type ~ div[data-des="*"] { + display: flex; + } +body.advancedUser #firewall > div > span:first-of-type ~ span { + cursor: pointer; + } + +/** + Small coloured label at the left of a row + */ +#firewall > div.isRootContext > span:first-of-type::before, +#firewall > div.allowed > span:first-of-type::before, +#firewall > div.blocked > span:first-of-type::before, +#firewall:not(.expanded) > div.isDomain.totalAllowed:not(.expandException) > span:first-of-type::before, +#firewall:not(.expanded) > div.isDomain.totalBlocked:not(.expandException) > span:first-of-type::before, +#firewall.expanded > div.isDomain.totalAllowed.expandException > span:first-of-type::before, +#firewall.expanded > div.isDomain.totalBlocked.expandException > span:first-of-type::before { + box-sizing: border-box; + content: ''; + display: inline-block; + filter: var(--popup-cell-label-filter); + height: 100%; + left: 0; + position: absolute; + top: 0; + width: 7px; + } +#firewall > div.isRootContext > span:first-of-type::before { + background: var(--ink-3); + width: 14px !important; + } +#firewall > div.allowed > span:first-of-type::before, +#firewall > div.isDomain.totalAllowed > span:first-of-type::before { + background: var(--popup-cell-allow-own-surface); + } +#firewall > div.blocked > span:first-of-type::before, +#firewall > div.isDomain.totalBlocked > span:first-of-type::before { + background: var(--popup-cell-block-own-surface); + } +#firewall > div.allowed.blocked > span:first-of-type::before, +#firewall > div.isDomain.totalAllowed.totalBlocked > span:first-of-type::before { + background: var(--popup-cell-label-mixed-surface); + } +/* Rule cells */ +body.advancedUser #firewall > div > span.allowRule, +#actionSelector > #dynaAllow { + background: var(--popup-cell-allow-surface); + } +body.advancedUser #firewall > div > span.blockRule, +#actionSelector > #dynaBlock { + background: var(--popup-cell-block-surface); + } +body.advancedUser #firewall > div > span.noopRule, +#actionSelector > #dynaNoop { + background: var(--popup-cell-noop-surface); + } +body.advancedUser #firewall > div > span.ownRule, +#firewall > div > span.ownRule { + color: var(--surface-1); + } +body.advancedUser #firewall > div > span.allowRule.ownRule, +:root:not(.mobile) #actionSelector > #dynaAllow:hover { + background: var(--popup-cell-allow-own-surface); + } +body.advancedUser #firewall > div > span.blockRule.ownRule, +:root:not(.mobile) #actionSelector > #dynaBlock:hover { + background: var(--popup-cell-block-own-surface); + } +body.advancedUser #firewall > div > span.noopRule.ownRule, +:root:not(.mobile) #actionSelector > #dynaNoop:hover { + background: var(--popup-cell-noop-own-surface); + } + +#actionSelector { + box-sizing: border-box; + display: flex; + height: 100%; + justify-items: stretch; + left: 0; + overflow: hidden; + position: absolute; + top: 0; + width: 100%; + z-index: 1; + } +#actionSelector > span { + display: inline-block; + flex-grow: 1; + } +#actionSelector > #dynaAllow { + display: none; + } +body.godMode #actionSelector > #dynaAllow { + display: inline-block; + } +#actionSelector > #dynaNoop { + } +#actionSelector > #dynaBlock { + } +#actionSelector > #dynaCounts { + background-color: transparent; + height: 100%; + left: 0; + pointer-events: none; + position: absolute; + top: 0; + width: 100%; + } + +/* configurable UI elements */ +:root:not(.mobile) .toolRibbon .caption, +:root.mobile body.no-tooltips .toolRibbon .caption, +:root.mobile body[data-ui~="-captions"] .toolRibbon .caption { + display: none; + } +:root.mobile .toolRibbon .caption, +:root:not(.mobile) body[data-ui~="+captions"] .toolRibbon .caption { + display: inherit; + } +:root:not(.mobile) .toolRibbon .tool, +:root.mobile body.no-tooltips .toolRibbon .tool, +:root.mobile body[data-ui~="-captions"] .toolRibbon .tool { + padding: var(--popup-gap) var(--popup-gap-thin); + } +:root.mobile #no-popups, +:root body[data-ui~="-no-popups"] #no-popups { + display: none; + } +:root:not(.mobile) #no-popups, +:root body[data-ui~="+no-popups"] #no-popups { + display: flex; + } +:root.mobile [href="logger-ui.html#_"], +:root body[data-ui~="-logger"] [href="logger-ui.html#_"] { + display: none; + } +:root:not(.mobile) [href="logger-ui.html#_"], +:root body[data-ui~="+logger"] [href="logger-ui.html#_"] { + display: flex; + } +body:not([data-more*="a"]) [data-more="a"], +body:not([data-more*="b"]) [data-more="b"], +body:not([data-more*="c"]) [data-more="c"], +body:not([data-more*="d"]) [data-more="d"], +body:not([data-more*="f"]) [data-more="f"] { + height: 0; + margin-bottom: 0 !important; + margin-top: 0 !important; + overflow-y: hidden; + visibility: hidden; + } +body[data-more*="d"] hr[data-more="a"] { + display: none; + } +body[data-more*="c"] hr[data-more="f"] { + display: none; + } +body[data-more*="c"]:not([data-more*="f"]) hr[data-more="g"] { + display: none; + } +body:not([data-more*="e"]) [data-more="e"] { + display: none; + } + +:root #firewall-vspacer { + display: none; + height: calc(6 * var(--popup-gap)); + } + +/* popup-in-tab mode, useful for screenshots */ +:root.desktop.intab body { + overflow: auto; + } +:root.desktop.intab #firewall { + max-height: none; + } + +/* horizontally-constrained viewport */ +:root.portrait:not(.desktop) body { + overflow-y: auto; + width: 100%; + } +:root.portrait #panes { + flex-direction: column; + } +:root.portrait #main { + max-width: unset; + } +:root.portrait #firewall { + max-height: unset; + max-width: unset; + min-width: unset; + overflow-y: hidden; + } +:root.portrait body[data-more*="e"] #firewall-vspacer { + display: block; + } + +/* touch-driven devices */ +:root.mobile #firewall { + line-height: 20px; + } + +/* mouse-driven devices */ +:root.desktop { + display: flex; + justify-content: flex-end; + } +:root.desktop body { + --popup-gap: calc(var(--font-size) * 0.875); + } +:root.desktop body:not(.off) #switch:hover { + fill: rgb(var(--popup-power-ink-rgb) / 90%); + } +:root.desktop body.off #switch:hover { + stroke: var(--popup-power-ink); + } +:root.desktop .rulesetTools [id]:hover { + background-color: var(--popup-ruleset-tool-surface-hover); + } +:root.desktop .rulesetTools [id]:hover > svg { + fill: var(--ink-2); + } +:root.desktop #firewall { + direction: rtl; + line-height: 1.4; + } +:root.desktop .tool:hover { + background-color: var(--popup-toolbar-surface-hover); + } +:root.desktop #moreOrLess > span:hover { + background-color: var(--surface-2); + /* background-color: var(--popup-toolbar-surface-hover); */ + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/settings.css b/android/app/src/main/assets/extensions/ublock_origin/css/settings.css new file mode 100644 index 00000000..61a8c0ec --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/settings.css @@ -0,0 +1,74 @@ +body { + margin-bottom: 6rem; + } + +.synopsis { + color: var(--ink-0); + font-size: var(--font-size-smaller); + opacity: var(--medium-em); + } + +/* surface/ink */ +#themeMood { + align-items: stretch; + align-self: stretch; + display: inline-flex; + justify-content: stretch; + user-select: none; + } +#themeMood > span { + border: 1px solid var(--ink-1); + color: var(--ink-1); + display: inline-flex; + background-color: var(--surface-1); + display: inline-block; + padding: 0 0.5em; + text-align: center; + user-select: none; + } + +/* primary color */ +#themePrimary { + align-items: stretch; + align-self: stretch; + display: inline-flex; + justify-content: stretch; + position: relative; + } +#themePrimary > span { + background-color: rgb(var(--primary-50)); + display: inline-flex; + width: 2em; + } + +[href="advanced-settings.html"] { + display: none; + } +body.advancedUser [href="advanced-settings.html"] { + display: inline-flex; + } + +#localData > div { + margin-bottom: var(--default-gap-small); + } +#localData > div:last-of-type { + align-items: flex-start; + display: flex; + flex-direction: column; + } +#localData > div:last-of-type > button { + margin-bottom: var(--default-gap-small); + min-width: 280px; + } + +/* Mobile devices */ + +:root.mobile #localData { + max-width: 100vw; + } +:root.mobile #localData > div:last-of-type { + align-items: stretch; + } +:root.mobile #localData > div:last-of-type > button { + min-width: unset; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/support.css b/android/app/src/main/assets/extensions/ublock_origin/css/support.css new file mode 100644 index 00000000..0afd7407 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/support.css @@ -0,0 +1,110 @@ +@keyframes spin { + 0% { transform: rotate(0deg); } + 100% { transform: rotate(360deg); } + } + +body { + margin-bottom: 6rem; + } + +.body > div { + max-width: 800px; + } +h3 { + color: var(--fieldset-header-ink); + margin-bottom: 0; + } +.supportEntry { + display: flex; + margin-block: 1em; + } +:root.mobile .supportEntry { + flex-direction: column; + } +.supportEntry > * { + min-width: 6em; + } +.supportEntry > div:first-of-type { + flex-grow: 1; + } +:root:not(.mobile) .supportEntry > div:first-of-type { + margin-inline-end: 2em; + } +.supportEntry h3 { + margin: 1em 0; + } + +.e > .supportEntry { + flex-direction: column; + } +.e > .supportEntry > div:not(:first-of-type) { + margin-top: 1em; + } +.e > .supportEntry select { + min-width: 50%; + max-width: calc(100% - 1em); + } +body:not(.filterIssue) .body > div.e { + display: none; +} +body.filterIssue .body > div:not(.e) { + display: none; +} +body.filterIssue #moreButton { + display: none; +} + +body[data-should-update-lists]:not(.updated) .e .createEntry { + opacity: 0.25; + pointer-events: none; +} + +body:not([data-should-update-lists]) .shouldUpdate { + display: none; + } +body.updating { + pointer-events: none; + } +body.updating button { + filter: grayscale(1); + opacity: 0.5; + } +body.updated .shouldUpdate button { + display: none; + } +body.updating .shouldUpdate button .fa-icon svg { + animation: spin 1s linear infinite; + transform-origin: 50%; + } +body .shouldUpdate .updated { + align-self: center; + } +body:not(.updated) .shouldUpdate .updated { + display: none; + } + +button { + align-self: center; + } +span[data-url] { + color: var(--link-ink); + cursor: pointer; + } + +#showSupportInfo { + cursor: pointer; + } + +body.redacted #redactButton { + display: none; + } +#unredactButton { + display: none; + } +body.redacted #unredactButton { + display: inline; + } + +.cm-string.cm-property { + color: black; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/themes/default.css b/android/app/src/main/assets/extensions/ublock_origin/css/themes/default.css new file mode 100644 index 00000000..c78b4a25 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/themes/default.css @@ -0,0 +1,534 @@ +/** + + References: + https://protocol.mozilla.org/ + https://material.io/ + + Color names from: + https://protocol.mozilla.org/docs/fundamentals/color.html + + Tools: + Lightness validator: https://www.hsluv.org/ + Contrast validator: https://bernaferrari.github.io/color-studio/#/ +*/ +:root { + --blue-5: 170 242 255; + --blue-10: 128 235 255; + --blue-20: 0 221 255; + --blue-30: 0 179 244; + --blue-40: 0 144 237; + --blue-50: 0 96 223; + --blue-60: 2 80 187; + --blue-70: 5 64 150; + --blue-80: 7 48 114; + --blue-90: 9 32 77; + --dark-gray-10: 82 82 94; + --dark-gray-20: 74 74 85; + --dark-gray-30: 66 65 77; + --dark-gray-40: 58 57 68; + --dark-gray-50: 50 49 60; + --dark-gray-60: 43 42 51; + --dark-gray-70: 35 34 43; + --dark-gray-80: 28 27 34; + --dark-gray-90: 21 20 26; + --green-30: 136 255 209; + --green-40: 84 255 189; + --green-50: 63 225 176; + --green-60: 42 195 162; + --green-65: 21 165 149; + --green-70: 0 135 135; + --green-80: 0 94 94; + --ink-10: 57 52 115; + --ink-80: 32 18 58; + --light-gray-10: 249 249 251; + --light-gray-20: 240 240 244; + --light-gray-30: 224 224 230; + --light-gray-40: 207 207 216; + --light-gray-50: 191 191 201; + --light-gray-60: 175 175 186; + --light-gray-70: 159 159 173; + --light-gray-80: 143 143 158; + --light-gray-90: 128 128 143; + --orange-5: 255 244 222; + --orange-10: 255 213 178; + --orange-20: 255 181 135; + --orange-30: 255 162 102; + --orange-40: 255 138 80; + --orange-50: 255 113 57; + --orange-60: 226 89 32; + --orange-70: 204 61 0; + --orange-80: 158 40 11; + --orange-90: 124 21 4; + --purple-5: 247 226 255; + --purple-10: 246 184 255; + --purple-20: 246 143 255; + --purple-30: 247 112 255; + --purple-40: 215 76 240; + --purple-50: 184 51 225; + --purple-60: 149 43 185; + --purple-70: 114 34 145; + --purple-80: 78 26 105; + --purple-90: 43 17 65; + --red-20: 255 154 162; + --red-30: 255 132 139; + --red-40: 255 106 117; + --red-50: 255 79 94; + --red-60: 226 40 80; + --red-70: 197 0 66; + --violet-5: 231 223 255; + --violet-10: 217 191 255; + --violet-20: 203 158 255; + --violet-30: 198 137 255; + --violet-40: 171 113 255; + --violet-50: 144 89 255; + --violet-60: 117 66 229; + --violet-70: 89 42 203; + --violet-80: 69 39 141; + --violet-90: 50 28 100; + --yellow-5: 255 255 204; + --yellow-10: 255 255 152; + --yellow-20: 255 234 128; + --yellow-30: 255 213 103; + --yellow-40: 255 189 79; + --yellow-50: 255 164 54; + --yellow-60: 226 127 46; + --yellow-70: 196 90 39; + --yellow-80: 167 52 31; + --yellow-90: 150 14 24; + + /* + * Reference gray: -light-gray-90, then calibrated with hsluv.org, where + * the number is Luv. + * + * */ + --gray-5: 16 16 22; + --gray-10: 27 27 35; + --gray-15: 37 37 47; + --gray-20: 47 47 59; + --gray-25: 58 58 72; + --gray-30: 69 69 85; + --gray-35: 81 81 98; + --gray-40: 93 93 110; + --gray-45: 105 105 121; + --gray-50: 118 118 133; + --gray-55: 131 131 145; + --gray-60: 144 144 156; + --gray-65: 157 157 168; + --gray-70: 170 170 180; + --gray-75: 184 184 192; + --gray-80: 198 198 204; + --gray-85: 212 212 217; + --gray-90: 226 226 229; + --gray-95: 240 240 242; +} + +/* + * Font + * + * */ +:root { + --font-size: 14px; + --font-size-smaller: calc(var(--font-size) - 1px); + --font-size-xsmall: calc(var(--font-size) - 3px); + --font-size-larger: 15px; + --font-family: Inter, sans-serif; + --monospace-size: 12px; +} + +:root.mobile { + --font-size: 16px; + --font-size-smaller: 14px; + --monospace-size: 13px; +} + +/* + * Default color theme + * + * Tool: hsluv.org + * + * */ +:root /* h255 */ { + --primary-5: 3 16 40; /* S:90 Luv:5 */ + --primary-10: 5 27 59; /* S:90 Luv:10 */ + --primary-20: 14 47 95; /* S:90 Luv:20 */ + --primary-30: 24 69 134; /* S:90 Luv:30 */ + --primary-40: 34 93 176; /* S:90 Luv:40 */ + --primary-50: 45 117 219; /* S:90 Luv:50 */ + --primary-60: 86 143 244; /* S:90 Luv:60 */ + --primary-70: 137 170 247; /* S:90 Luv:70 */ + --primary-80: 179 198 250; /* S:90 Luv:80 */ + --primary-90: 218 226 252; /* S:90 Luv:90 */ + --primary-95: 236 240 254; /* S:90 Luv:95 */ + } + +/* + * Default dark theme starts here + * + * https://github.com/uBlockOrigin/uBlock-issues/issues/1027#issuecomment-629641072 + * Assign a default background color if dark mode is enabled -- hopefully + * this will avoid flashes of white background until the document's own CSS + * overrides the default color value below. + * + * */ +@media (prefers-color-scheme: light) { + :root { + --surface-0-rgb: 255 255 255; + --surface-1: rgb(var(--gray-95)); + --surface-2: rgb(var(--gray-90)); + --surface-3: rgb(var(--gray-80)); + } +} +@media (prefers-color-scheme: dark) { + :root { + --surface-0-rgb: 0 0 0; + --surface-1: rgb(var(--gray-10)); + --surface-2: rgb(var(--gray-20)); + --surface-3: rgb(var(--gray-30)); + } +} + +:root.light { + --surface-0-rgb: 255 255 255; + --surface-1: rgb(var(--gray-95)); + --surface-2: rgb(var(--gray-90)); + --surface-3: rgb(var(--gray-80)); +} + +:root.dark { + --surface-0-rgb: 0 0 0; + --surface-1: rgb(var(--gray-10)); + --surface-2: rgb(var(--gray-20)); + --surface-3: rgb(var(--gray-30)); +} + +/* + * Components + * + * */ +:root { + --font-size: 14px; + + --ubo-red: #800000; + + --elevation-up-surface: black; + --elevation-up1-opacity: 4%; + --elevation-up2-opacity: 8%; + --elevation-down-surface: white; + --elevation-down1-opacity: 16%; + --elevation-down2-opacity: 32%; + + /* https://material.io/design/color/text-legibility.html#text-backgrounds */ + --ink-rgb: var(--ink-80); + --ink-0: black; + --ink-100: white; + + --border-1: rgb(var(--gray-75)); + --border-2: rgb(var(--gray-70)); + --border-3: rgb(var(--gray-65)); + --border-4: rgb(var(--gray-60)); + + --accent-ink-3: var(--ink-1); + --accent-surface-1: rgb(var(--primary-40)); + + --link-ink: rgb(var(--primary-40)); + --link-hover-ink: rgb(var(--primary-30)); + + /* buttons */ + --button-surface-rgb: var(--gray-80); + + --dashboard-tab-active-ink-rgb: var(--primary-40); + --dashboard-tab-focus-surface-rgb: var(--primary-90); + --dashboard-highlight-surface-rgb: var(--primary-90); + + --dashboard-happy-green: rgb(var(--green-65)); + + /* popup panel */ + --popup-cell-cname-ink: #0054d7; /* h260 S:100 Luv:40 */; + --popup-cell-label-mixed-surface: #c29100; /* TODO: fix */ + --popup-icon-x-ink: rgb(var(--red-60)); + --popup-power-ink-rgb: var(--primary-50); + + /* horizontal line separator */ + --hr-ink: var(--surface-2); + + /* cloud widget */ + --cloud-total-used-surface: rgb(var(--violet-60) / 25%); + --cloud-used-surface: rgb(var(--violet-60)); + + /* misc */ + --error-surface: #c00004; /* h:12 S:100 Luv:40 */ + + /* codemirror */ + --cm-active-line: rgb(var(--gray-90)); + --cm-cursor: var(--ink-0); + --cm-foldmarker-ink: rgb(var(--blue-40)); + --cm-gutter-border: var(--surface-1); + --cm-gutter-ink: var(--ink-3); + --cm-gutter-surface: var(--surface-2); + --cm-matchingbracket: rgb(var(--green-30)); + --cm-merge-copy-ink: rgb(var(--blue-50)); + --cm-merge-chunk-border: rgb(var(--surface-0-rgb) / 40%); + --cm-merge-chunk-surface: rgb(var(--surface-0-rgb) / 40%); + --cm-negative: #e32f00; /* h:15 S:100 Luv:50 */ + --cm-positive: #008a21; /* h:130 S:100 Luv:50 */ + --cm-selection-surface: rgb(var(--gray-80)); + --cm-selection-focused-surface: rgb(var(--primary-80)); + --cm-searching-ink: black; + --cm-searching-surface: #fee300cc /* h75 S:100 Luv:90 a:80% */; + --cm-search-match-surface: rgb(var(--yellow-40) / 50%); + + /* syntax highlight: static filtering */ + --sf-comment-ink: var(--ink-3); + --sf-def-ink: #3c3aff; /* h:266 S:100 Luv:40 */ + --sf-directive-ink: var(--ink-1); + --sf-error-ink: #ff8981; /* h15 S:100 Luv:70 */ + --sf-error-surface: #ff898133; /* h15 S:100 Luv:70 @ 20% */ + --sf-keyword-ink: #9b00ca; /* h:290 S:100 Luv:40 */ + --sf-notice-ink: var(--ink-4); + --sf-readonly-ink: var(--ink-3); + --sf-tag-ink: #006e2e /* h:135 S:100 Luv:40 */; + --sf-unicode-ink: var(--ink-1); + --sf-value-ink: #974900 /* h:30 S:100 Luv:40 */; + --sf-variable-ink: var(--ink-1); + --sf-warning-ink: #e49d00; /* h:50 S:100 Luv:70 */ + --sf-warning-surface: #e49d0033; /* h:50 S:100 Luv:70 @ 20% */ + + /* syntax highlight: dynamic filtering */ + --df-allow-ink: var(--cm-positive); + --df-block-ink: var(--cm-negative); + --df-noop-ink: rgb(var(--dark-gray-10)); + + /* logger */ + --logger-modified-surface: #0000c010; + --logger-modified-em-surface: #0000c028; + --logger-redirected-surface: rgb(var(--yellow-5) / 50%); + --logger-scriptlet-surface: rgb(var(--yellow-30) / 50%); +} + +/* https://material.io/design/color/dark-theme.html */ +:root.dark { + --elevation-down-surface: black; + --elevation-down1-opacity: 16%; + --elevation-down2-opacity: 32%; + --elevation-up-surface: white; + --elevation-up1-opacity: 12%; + --elevation-up2-opacity: 24%; + + --ink-rgb: var(--gray-90); + --ink-0: white; + --ink-100: black; + + --border-1: rgb(var(--gray-35)); + --border-2: rgb(var(--gray-40)); + --border-3: rgb(var(--gray-45)); + --border-4: rgb(var(--gray-50)); + + --accent-surface-1: rgb(var(--primary-70)); + + --link-ink: rgb(var(--primary-70)); + --link-hover-ink: rgb(var(--primary-80)); + + /* buttons */ + --button-surface-rgb: var(--gray-30); + + --dashboard-tab-active-ink-rgb: var(--primary-70); + --dashboard-tab-focus-surface-rgb: var(--primary-20); + --dashboard-highlight-surface-rgb: var(--primary-20); + + /* popup panel */ + --popup-cell-cname-ink: #93a6ff; /* h260 S:100 Luv:70 */; + --popup-cell-label-mixed-surface: hsla(45, 100%, 38%, 1); /* TODO: fix */ + --popup-icon-x-ink: rgb(var(--red-50)); + --popup-power-ink-rgb: var(--primary-60); + + /* cloud widget */ + --cloud-total-used-surface: rgb(var(--violet-20) / 25%); + --cloud-used-surface: rgb(var(--violet-20)); + + /* misc */ + --error-surface: #ff5354; /* h:12 S:100 Luv:60 */ + + /* codemirror */ + --cm-active-line: rgb(var(--gray-20)); + --cm-merge-copy-ink: rgb(var(--blue-30)); + --cm-foldmarker-ink: rgb(var(--blue-20)); + --cm-matchingbracket: rgb(var(--green-30) / 50%); + --cm-negative: #ff8982; /* h:15 S:100 Luv:70 */ + --cm-positive: #00c634; /* h:130 S:100 Luv:70 */ + --cm-selection-surface: rgb(var(--gray-40)); + --cm-selection-focused-surface: rgb(var(--primary-40)); + --cm-searching-ink: black; + --cm-searching-surface: #fee300cc /* h75 S:100 Luv:90 a:80% */; + + /* syntax highlight: static filtering */ + --sf-comment-ink: var(--ink-3); + --sf-def-ink: #a2a2ff; /* h:266 S:100 Luv:70 */ + --sf-error-ink: #ff8981; /* h15 S:100 Luv:70 */ + --sf-error-surface: #ff898166; /* h15 S:100 Luv:70 @ 40% */ + --sf-keyword-ink: #d78dff; /* h:290 S:100 Luv:70 */ + --sf-tag-ink: #00c559 /* h:135 S:100 Luv:70 */; + --sf-value-ink: #ff8d48 /* h:30 S:100 Luv:70 */; + --sf-variable-ink: var(--ink-1); + --sf-warning-ink: #e49d00; /* h:50 S:100 Luv:70 */ + --sf-warning-surface: #e49d0066; /* h:50 S:100 Luv:50 @ 40% */ + + /* syntax highlight: dynamic filtering */ + --df-noop-ink: var(--ink-3); + + /* logger */ + --logger-modified-surface: #663efd60; + --logger-redirected-surface: rgb(var(--yellow-5) / 40%); + --logger-scriptlet-surface: rgb(var(--yellow-30) / 40%); +} + +:root.dark { + color-scheme: dark light; +} + +/* + * Shared declarations + * */ +:root { + --high-em: 87%; + --medium-em: 60%; + --low-em: 38%; + + --surface-0: rgb(var(--surface-0-rgb)); + + --ink-1: rgb(var(--ink-rgb)); + --ink-2: rgb(var(--ink-rgb) / var(--high-em)); + --ink-3: rgb(var(--ink-rgb) / var(--medium-em)); + --ink-4: rgb(var(--ink-rgb) / var(--low-em)); + + --accent-ink-1: var(--surface-0); + --accent-ink-3: var(--ink-1); + + --subtil-ink: var(--accent-surface-1); + + --fieldset-header-surface: transparent; + --fieldset-header-ink: var(--ink-2); + + --native-control-opacity: 0; + + --button-ink: var(--ink-1); + --button-surface: rgb(var(--button-surface-rgb)); + --button-border-size: 0; + --button-border-radius: 5px; + --button-preferred-ink: var(--accent-ink-1); + --button-preferred-surface: var(--accent-surface-1); + --button-disabled-surface: var(--surface-3); + --button-disabled-filter: opacity(50%); + + --checkbox-size: calc(var(--font-size) + 2px); + --checkbox-ink: var(--ink-3); + --checkbox-checked-ink: var(--accent-surface-1); + --checkbox-disabled-filter: opacity(50%); + --checkbox-margin-end: calc(var(--font-size) * 0.75); + + --notice-ink: var(--accent-ink-1); + --notice-surface: var(--accent-surface-1); + --notice-surface-shadow: #000 0 2px 8px; + + --dashboard-tab-ink: var(--ink-1); + --dashboard-tab-active-ink: rgb(var(--dashboard-tab-active-ink-rgb)); + --dashboard-tab-active-surface: transparent; + --dashboard-tab-focus-surface: rgb(var(--dashboard-tab-focus-surface-rgb)); + --dashboard-tab-hover-surface: var(--surface-2); + --dashboard-tab-hover-border: var(--surface-3); + + /* info levels: normal, fyi, warn, error -- we want same Luv */ + --info0-ink-rgb: 119 119 119; /* h: 0 S: 0 Luv:60 */ + --info1-ink-rgb: 72 143 255; /* h:255 S:100 Luv:60 */ + --info2-ink-rgb: 208 125 0; /* h: 40 S:100 Luv:60 */ + --info3-ink-rgb: 255 82 94; /* h: 10 S:100 Luv:60 */ + --info0-ink: rgb(var(--info0-ink-rgb)); + --info1-ink: rgb(var(--info1-ink-rgb)); + --info2-ink: rgb(var(--info2-ink-rgb)); + --info3-ink: rgb(var(--info3-ink-rgb)); + + --popup-cell-surface: var(--surface-2); + --popup-cell-label-filter: opacity(40%); + --popup-cell-allow-own-surface: rgb(var(--popup-cell-allow-own-surface-rgb)); + --popup-cell-allow-surface: rgb(var(--popup-cell-allow-surface-rgb)); + --popup-cell-noop-own-surface: rgb(var(--popup-cell-noop-own-surface-rgb)); + --popup-cell-noop-surface: rgb(var(--popup-cell-noop-surface-rgb)); + --popup-cell-block-own-surface: rgb(var(--popup-cell-block-own-surface-rgb)); + --popup-cell-block-surface: rgb(var(--popup-cell-block-surface-rgb)); + --popup-power-ink: rgb(var(--popup-power-ink-rgb)); + --popup-toolbar-surface: rgb(var(--primary-80) / 15%); + --popup-toolbar-surface-hover: rgb(var(--primary-80) / 30%); + --popup-ruleset-tool-ink: var(--ink-1); + --popup-ruleset-tool-surface: rgb(var(--primary-80) / 15%); + --popup-ruleset-tool-surface-hover: rgb(var(--primary-80) / 20%); + --popup-ruleset-tool-shadow: transparent; +} + +@media (prefers-contrast: more) { + :root { + --native-control-opacity: 1; + --button-border-size: 1px; + } +} + +/* + * Rule colors + * */ +:root:not(.dark):not(.colorBlind) { + --popup-cell-allow-own-surface-rgb: 0 127 0; /* h:127.7 S:100 Luv:45 */ + --popup-cell-allow-surface-rgb: 129 202 129; /* h:127.7 S:50 Luv:75 */ + --popup-cell-block-own-surface-rgb: 216 0 0; /* h:12.2 S:100 Luv:45 */ + --popup-cell-block-surface-rgb: 224 172 172; /* h:12.2 S:50 Luv:75 */ + --popup-cell-noop-own-surface-rgb: 107 107 107; /* h:0 S:0 Luv:45 */ + --popup-cell-noop-surface-rgb: 185 185 185; /* h:0 S:0 Luv:75 */ +} + +:root.dark:not(.colorBlind) { + --popup-cell-allow-own-surface-rgb: 0 153 0; /* h:127.7 S:100 Luv:55 */ + --popup-cell-allow-surface-rgb: 73 117 73; /* h:127.7 S:50 Luv:45 */ + --popup-cell-block-own-surface-rgb: 255 40 40; /* h:12.2 S:100 Luv:55 */ + --popup-cell-block-surface-rgb: 175 74 74; /* h:12.2 S:50 Luv:45 */ + --popup-cell-noop-own-surface-rgb: 132 132 132; /* h:0 S:0 Luv:55 */ + --popup-cell-noop-surface-rgb: 94 94 94; /* h:0 S:0 Luv:40 */ +} + +/* + * Source for color-blind color scheme: + * https://davidmathlogic.com/colorblind/ + * First pair in "Accessible palettes" + * + * */ +:root.colorBlind { + --popup-cell-allow-own-surface-rgb: 151 113 0; /* h:58.5 S:100 Luv:50 */ + --popup-cell-block-own-surface-rgb: 0 120 216; /* h:252 S:100 Luv:50 */ + --popup-cell-noop-own-surface-rgb: 119 119 119; /* h:0 S:0 Luv:50 */ + --popup-cell-label-mixed-surface: #ff6a00; /* TODO: fix */ +} +:root.colorBlind:not(.dark) { + --popup-cell-allow-surface-rgb: 223 178 92; /* h:58.5 S:75 Luv:75 */ + --popup-cell-block-surface-rgb: 159 185 238; /* h:252 S:75 Luv:75 */ + --popup-cell-noop-surface-rgb: 185 185 185; /* h:0 S:0 Luv:75 */ +} +:root.dark.colorBlind { + --popup-cell-allow-surface-rgb: 115 91 44; /* h:58.5 S:75 Luv:40 */ + --popup-cell-block-surface-rgb: 53 95 154; /* h:252 S:75 Luv:40 */ + --popup-cell-noop-surface-rgb: 94 94 94; /* h:0 S:0 Luv:40 */ +} + +:root.classic:not(.dark) { + --notice-ink: rgb(var(--ink-80)); + --notice-surface: rgb(var(--yellow-5)); + --popup-power-ink-rgb: 0 110 254; + --popup-ruleset-tool-ink: var(--ink-1); + --popup-ruleset-tool-surface: rgb(var(--yellow-5) / 50%); + --popup-ruleset-tool-surface-hover: rgb(var(--yellow-5) / 75%); + --popup-ruleset-tool-shadow: rgb(var(--gray-85)); +} + +/* + * Experiment: use Firefox for Android dark theme colors +:root.mobile.dark { + --gray-10: 43 42 51; + --gray-20: 66 65 77; + --ink-rgb: 251 251 254; +} +*/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/css/whitelist.css b/android/app/src/main/assets/extensions/ublock_origin/css/whitelist.css new file mode 100644 index 00000000..3248a77f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/css/whitelist.css @@ -0,0 +1,23 @@ +html { + height: 100vh; + height: 100svh; + overflow: hidden; + width: 100vw; + } +body { + display: flex; + flex-direction: column; + height: 100%; + justify-content: stretch; + overflow: hidden; + width: 100%; + } +.body { + flex-shrink: 0; + } +.codeMirrorContainer { + flex-grow: 1; + } +#whitelist { + text-align: left; + } diff --git a/android/app/src/main/assets/extensions/ublock_origin/dashboard.html b/android/app/src/main/assets/extensions/ublock_origin/dashboard.html new file mode 100644 index 00000000..1d401c19 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/dashboard.html @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + +
+
+
+   +   + +
+
+
+ + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/devtools.html b/android/app/src/main/assets/extensions/ublock_origin/devtools.html new file mode 100644 index 00000000..8893759d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/devtools.html @@ -0,0 +1,62 @@ + + + + + + +uBlock — Dev tools + + + + + + + + + + + + + + + + +
+

+ + + + + + + + + + +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/document-blocked.html b/android/app/src/main/assets/extensions/ublock_origin/document-blocked.html new file mode 100644 index 00000000..84412f9e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/document-blocked.html @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + +
+ + +
+

_

+ +
+ +
+ + + +
+ +
+ +
+ + + +
+
+ + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/dyna-rules.html b/android/app/src/main/assets/extensions/ublock_origin/dyna-rules.html new file mode 100644 index 00000000..2e8fd9a8 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/dyna-rules.html @@ -0,0 +1,68 @@ + + + + + + +uBlock — Dynamic filtering rules + + + + + + + + + + + + + + +
+
+

+
+
+
+
+ + +
+
+
+ + + +
+
+
+
+
+ filter  double-angle-up +
+
+ + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/cloud.png b/android/app/src/main/assets/extensions/ublock_origin/img/cloud.png new file mode 100644 index 00000000..6c78dde2 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/cloud.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/README b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/README new file mode 100644 index 00000000..d388796e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/README @@ -0,0 +1,9 @@ +Source of all images in this folder: + https://flagpedia.net/ + +Licence: + https://flagpedia.net/about + +> Flag images are in the public domain (exempt from copyright). +> They are completely free for non-commercial and even commercial use. +> You can also download all flags." diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ad.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ad.png new file mode 100644 index 00000000..4df2966c Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ad.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ae.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ae.png new file mode 100644 index 00000000..c182e955 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ae.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/af.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/af.png new file mode 100644 index 00000000..a8fc95de Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/af.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ag.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ag.png new file mode 100644 index 00000000..4b54da8b Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ag.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ai.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ai.png new file mode 100644 index 00000000..c536a354 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ai.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/al.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/al.png new file mode 100644 index 00000000..6d70fe92 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/al.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/am.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/am.png new file mode 100644 index 00000000..2d9be46e Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/am.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ao.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ao.png new file mode 100644 index 00000000..0b4e5330 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ao.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/aq.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/aq.png new file mode 100644 index 00000000..1f1f14ac Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/aq.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ar.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ar.png new file mode 100644 index 00000000..394ac6a0 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ar.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/as.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/as.png new file mode 100644 index 00000000..0a2075ee Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/as.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/at.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/at.png new file mode 100644 index 00000000..f89b8b45 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/at.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/au.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/au.png new file mode 100644 index 00000000..e44d53ed Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/au.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/aw.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/aw.png new file mode 100644 index 00000000..50cd2e8b Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/aw.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ax.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ax.png new file mode 100644 index 00000000..9f49dccb Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ax.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/az.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/az.png new file mode 100644 index 00000000..5eb5088d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/az.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ba.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ba.png new file mode 100644 index 00000000..31ae9f6a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ba.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bb.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bb.png new file mode 100644 index 00000000..a7543799 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bb.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bd.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bd.png new file mode 100644 index 00000000..9cd59321 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bd.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/be.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/be.png new file mode 100644 index 00000000..5c729237 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/be.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bf.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bf.png new file mode 100644 index 00000000..ff6d6d22 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bf.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bg.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bg.png new file mode 100644 index 00000000..699d3154 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bg.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bh.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bh.png new file mode 100644 index 00000000..025124d7 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bh.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bi.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bi.png new file mode 100644 index 00000000..2153878e Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bi.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bj.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bj.png new file mode 100644 index 00000000..ffc7c298 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bj.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bl.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bl.png new file mode 100644 index 00000000..6a9d4367 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bl.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bm.png new file mode 100644 index 00000000..96461170 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bn.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bn.png new file mode 100644 index 00000000..0e0cd680 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bn.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bo.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bo.png new file mode 100644 index 00000000..9fb5a4e0 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bo.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bq.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bq.png new file mode 100644 index 00000000..3d7bc435 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bq.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/br.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/br.png new file mode 100644 index 00000000..42a6e998 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/br.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bs.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bs.png new file mode 100644 index 00000000..a3bdaeb8 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bs.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bt.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bt.png new file mode 100644 index 00000000..85deabd4 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bt.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bv.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bv.png new file mode 100644 index 00000000..ae72a77d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bv.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bw.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bw.png new file mode 100644 index 00000000..ee7ba627 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bw.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/by.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/by.png new file mode 100644 index 00000000..bd529491 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/by.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bz.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bz.png new file mode 100644 index 00000000..8165ea05 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/bz.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ca.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ca.png new file mode 100644 index 00000000..8f7c4a86 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ca.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cc.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cc.png new file mode 100644 index 00000000..1f6c7dc8 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cc.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cd.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cd.png new file mode 100644 index 00000000..1d554fae Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cd.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cf.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cf.png new file mode 100644 index 00000000..214a4fb1 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cf.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cg.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cg.png new file mode 100644 index 00000000..8349522d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cg.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ch.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ch.png new file mode 100644 index 00000000..635de7be Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ch.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ci.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ci.png new file mode 100644 index 00000000..1093fb90 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ci.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ck.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ck.png new file mode 100644 index 00000000..6387808f Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ck.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cl.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cl.png new file mode 100644 index 00000000..4b9e8665 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cl.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cm.png new file mode 100644 index 00000000..5de502c4 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cn.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cn.png new file mode 100644 index 00000000..e5b15543 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cn.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/co.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/co.png new file mode 100644 index 00000000..cc189b9d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/co.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cr.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cr.png new file mode 100644 index 00000000..fcf67833 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cr.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cu.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cu.png new file mode 100644 index 00000000..3907e7c4 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cu.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cv.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cv.png new file mode 100644 index 00000000..35564a2b Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cv.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cw.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cw.png new file mode 100644 index 00000000..81397ce6 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cw.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cx.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cx.png new file mode 100644 index 00000000..bc527868 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cx.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cy.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cy.png new file mode 100644 index 00000000..f8d39ab6 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cy.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cz.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cz.png new file mode 100644 index 00000000..7f36814f Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/cz.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/de.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/de.png new file mode 100644 index 00000000..4d311cc1 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/de.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dj.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dj.png new file mode 100644 index 00000000..806cfddf Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dj.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dk.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dk.png new file mode 100644 index 00000000..c5e37118 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dk.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dm.png new file mode 100644 index 00000000..281e48ac Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/do.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/do.png new file mode 100644 index 00000000..d933f8a6 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/do.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dz.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dz.png new file mode 100644 index 00000000..7d1253bc Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/dz.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ec.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ec.png new file mode 100644 index 00000000..6c88f1fe Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ec.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ee.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ee.png new file mode 100644 index 00000000..6fcf8cfa Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ee.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/eg.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/eg.png new file mode 100644 index 00000000..5fb759e0 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/eg.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/eh.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/eh.png new file mode 100644 index 00000000..c25436dc Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/eh.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/er.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/er.png new file mode 100644 index 00000000..d921f3f6 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/er.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/es.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/es.png new file mode 100644 index 00000000..2e01ce98 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/es.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/et.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/et.png new file mode 100644 index 00000000..211bb9c1 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/et.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fi.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fi.png new file mode 100644 index 00000000..551de7c5 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fi.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fj.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fj.png new file mode 100644 index 00000000..8f6d8bf7 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fj.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fk.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fk.png new file mode 100644 index 00000000..12d316c0 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fk.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fm.png new file mode 100644 index 00000000..e5aefda1 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fo.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fo.png new file mode 100644 index 00000000..56a99a9c Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fo.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fr.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fr.png new file mode 100644 index 00000000..8fe5ea45 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/fr.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ga.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ga.png new file mode 100644 index 00000000..ffb3f729 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ga.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-eng.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-eng.png new file mode 100644 index 00000000..13c606da Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-eng.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-nir.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-nir.png new file mode 100644 index 00000000..a6333861 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-nir.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-sct.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-sct.png new file mode 100644 index 00000000..95dd4f4b Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-sct.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-wls.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-wls.png new file mode 100644 index 00000000..a10fe43f Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb-wls.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb.png new file mode 100644 index 00000000..8bffe4e8 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gb.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gd.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gd.png new file mode 100644 index 00000000..3d1dc86c Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gd.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ge.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ge.png new file mode 100644 index 00000000..e19f6892 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ge.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gf.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gf.png new file mode 100644 index 00000000..03b92f96 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gf.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gg.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gg.png new file mode 100644 index 00000000..7eb8b173 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gg.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gh.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gh.png new file mode 100644 index 00000000..90317332 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gh.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gi.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gi.png new file mode 100644 index 00000000..d96bfdb6 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gi.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gl.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gl.png new file mode 100644 index 00000000..c9f2504a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gl.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gm.png new file mode 100644 index 00000000..5c4f1e77 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gn.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gn.png new file mode 100644 index 00000000..bd100e99 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gn.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gp.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gp.png new file mode 100644 index 00000000..404b6672 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gp.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gq.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gq.png new file mode 100644 index 00000000..159cee8f Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gq.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gr.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gr.png new file mode 100644 index 00000000..7d782b15 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gr.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gs.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gs.png new file mode 100644 index 00000000..f17c1804 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gs.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gt.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gt.png new file mode 100644 index 00000000..463b40da Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gt.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gu.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gu.png new file mode 100644 index 00000000..d7c8b855 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gu.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gw.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gw.png new file mode 100644 index 00000000..9f5266f9 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gw.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gy.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gy.png new file mode 100644 index 00000000..0ad22a76 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/gy.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hk.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hk.png new file mode 100644 index 00000000..375395c2 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hk.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hm.png new file mode 100644 index 00000000..90cce12e Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hn.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hn.png new file mode 100644 index 00000000..3bedc548 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hn.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hr.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hr.png new file mode 100644 index 00000000..cfee4e40 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hr.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ht.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ht.png new file mode 100644 index 00000000..048d613e Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ht.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hu.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hu.png new file mode 100644 index 00000000..93d8a8fa Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/hu.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/id.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/id.png new file mode 100644 index 00000000..3efe8360 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/id.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ie.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ie.png new file mode 100644 index 00000000..ae04602d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ie.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/il.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/il.png new file mode 100644 index 00000000..0728e1ba Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/il.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/im.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/im.png new file mode 100644 index 00000000..7cd7bfa5 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/im.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/in.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/in.png new file mode 100644 index 00000000..c0fd2a04 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/in.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/io.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/io.png new file mode 100644 index 00000000..71c045aa Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/io.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/iq.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/iq.png new file mode 100644 index 00000000..2e529ab0 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/iq.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ir.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ir.png new file mode 100644 index 00000000..6af8d63f Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ir.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/is.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/is.png new file mode 100644 index 00000000..e01f3da0 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/is.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/it.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/it.png new file mode 100644 index 00000000..c313486d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/it.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/je.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/je.png new file mode 100644 index 00000000..8f049c65 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/je.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/jm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/jm.png new file mode 100644 index 00000000..ad9acd92 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/jm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/jo.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/jo.png new file mode 100644 index 00000000..7ba2ecc6 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/jo.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/jp.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/jp.png new file mode 100644 index 00000000..c1b2f262 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/jp.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ke.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ke.png new file mode 100644 index 00000000..4c8ae0bb Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ke.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kg.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kg.png new file mode 100644 index 00000000..a65c9007 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kg.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kh.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kh.png new file mode 100644 index 00000000..55268b94 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kh.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ki.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ki.png new file mode 100644 index 00000000..f000d34c Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ki.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/km.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/km.png new file mode 100644 index 00000000..bdd89a05 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/km.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kn.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kn.png new file mode 100644 index 00000000..5bdd1bdd Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kn.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kp.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kp.png new file mode 100644 index 00000000..10bc5806 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kp.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kr.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kr.png new file mode 100644 index 00000000..d8642ca2 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kr.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kw.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kw.png new file mode 100644 index 00000000..e9f283ae Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kw.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ky.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ky.png new file mode 100644 index 00000000..ec337e4b Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ky.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kz.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kz.png new file mode 100644 index 00000000..ac3c0eb0 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/kz.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/la.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/la.png new file mode 100644 index 00000000..5fc6bdf5 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/la.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lb.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lb.png new file mode 100644 index 00000000..f8bd972e Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lb.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lc.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lc.png new file mode 100644 index 00000000..f901fa7f Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lc.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/li.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/li.png new file mode 100644 index 00000000..8d9246ce Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/li.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lk.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lk.png new file mode 100644 index 00000000..e5a30da6 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lk.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lr.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lr.png new file mode 100644 index 00000000..6b4e8de5 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lr.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ls.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ls.png new file mode 100644 index 00000000..257632fa Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ls.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lt.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lt.png new file mode 100644 index 00000000..d62b6223 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lt.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lu.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lu.png new file mode 100644 index 00000000..0659461a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lu.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lv.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lv.png new file mode 100644 index 00000000..892b6d0e Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/lv.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ly.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ly.png new file mode 100644 index 00000000..4ed1fec3 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ly.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ma.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ma.png new file mode 100644 index 00000000..6dc87a68 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ma.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mc.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mc.png new file mode 100644 index 00000000..a1ea5371 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mc.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/md.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/md.png new file mode 100644 index 00000000..0c440b41 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/md.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/me.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/me.png new file mode 100644 index 00000000..e591899d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/me.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mf.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mf.png new file mode 100644 index 00000000..8fe5ea45 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mf.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mg.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mg.png new file mode 100644 index 00000000..c181ecef Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mg.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mh.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mh.png new file mode 100644 index 00000000..8b38bc0e Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mh.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mk.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mk.png new file mode 100644 index 00000000..bb0c488a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mk.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ml.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ml.png new file mode 100644 index 00000000..70b7e8a5 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ml.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mm.png new file mode 100644 index 00000000..d533d86e Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mn.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mn.png new file mode 100644 index 00000000..dcecc72a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mn.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mo.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mo.png new file mode 100644 index 00000000..cbf0a02d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mo.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mp.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mp.png new file mode 100644 index 00000000..b2b13f22 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mp.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mq.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mq.png new file mode 100644 index 00000000..1e339f84 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mq.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mr.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mr.png new file mode 100644 index 00000000..ccd0edfb Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mr.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ms.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ms.png new file mode 100644 index 00000000..95c4d61a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ms.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mt.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mt.png new file mode 100644 index 00000000..7ca73780 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mt.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mu.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mu.png new file mode 100644 index 00000000..8dee3944 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mu.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mv.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mv.png new file mode 100644 index 00000000..2850defa Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mv.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mw.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mw.png new file mode 100644 index 00000000..8a43fd61 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mw.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mx.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mx.png new file mode 100644 index 00000000..e04b9d7f Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mx.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/my.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/my.png new file mode 100644 index 00000000..2d23b893 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/my.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mz.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mz.png new file mode 100644 index 00000000..c3608005 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/mz.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/na.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/na.png new file mode 100644 index 00000000..9a15ee1a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/na.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nc.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nc.png new file mode 100644 index 00000000..0e935d78 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nc.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ne.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ne.png new file mode 100644 index 00000000..9b602d25 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ne.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nf.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nf.png new file mode 100644 index 00000000..05e50890 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nf.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ng.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ng.png new file mode 100644 index 00000000..30ddc5f9 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ng.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ni.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ni.png new file mode 100644 index 00000000..4bd04757 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ni.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nl.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nl.png new file mode 100644 index 00000000..724ae2f4 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nl.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/no.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/no.png new file mode 100644 index 00000000..ae72a77d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/no.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/np.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/np.png new file mode 100644 index 00000000..3ecd78d3 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/np.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nr.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nr.png new file mode 100644 index 00000000..983c5c1a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nr.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nu.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nu.png new file mode 100644 index 00000000..13771aab Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nu.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nz.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nz.png new file mode 100644 index 00000000..d3ecec64 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/nz.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/om.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/om.png new file mode 100644 index 00000000..a8740815 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/om.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pa.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pa.png new file mode 100644 index 00000000..5d7efdea Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pa.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pe.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pe.png new file mode 100644 index 00000000..b64ad9ce Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pe.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pf.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pf.png new file mode 100644 index 00000000..9828f06e Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pf.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pg.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pg.png new file mode 100644 index 00000000..db8ee167 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pg.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ph.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ph.png new file mode 100644 index 00000000..1c532d71 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ph.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pk.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pk.png new file mode 100644 index 00000000..1bc8e646 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pk.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pl.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pl.png new file mode 100644 index 00000000..9937d818 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pl.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pm.png new file mode 100644 index 00000000..986d041a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pn.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pn.png new file mode 100644 index 00000000..da91edbc Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pn.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pr.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pr.png new file mode 100644 index 00000000..bdd1c9d6 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pr.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ps.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ps.png new file mode 100644 index 00000000..0fd4a8f8 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ps.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pt.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pt.png new file mode 100644 index 00000000..ec730934 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pt.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pw.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pw.png new file mode 100644 index 00000000..8f97c9b3 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/pw.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/py.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/py.png new file mode 100644 index 00000000..f852e0bd Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/py.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/qa.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/qa.png new file mode 100644 index 00000000..a4e3f734 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/qa.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/re.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/re.png new file mode 100644 index 00000000..7607946a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/re.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ro.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ro.png new file mode 100644 index 00000000..fde2356a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ro.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/rs.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/rs.png new file mode 100644 index 00000000..94980fd7 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/rs.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ru.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ru.png new file mode 100644 index 00000000..d24f7864 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ru.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/rw.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/rw.png new file mode 100644 index 00000000..ea08fbed Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/rw.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sa.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sa.png new file mode 100644 index 00000000..caa18a53 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sa.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sb.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sb.png new file mode 100644 index 00000000..21b93e87 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sb.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sc.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sc.png new file mode 100644 index 00000000..3a1e558c Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sc.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sd.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sd.png new file mode 100644 index 00000000..6234ed34 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sd.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/se.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/se.png new file mode 100644 index 00000000..1156f2fa Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/se.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sg.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sg.png new file mode 100644 index 00000000..4a6e94bb Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sg.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sh.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sh.png new file mode 100644 index 00000000..6590d025 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sh.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/si.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/si.png new file mode 100644 index 00000000..274cd500 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/si.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sj.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sj.png new file mode 100644 index 00000000..ae72a77d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sj.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sk.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sk.png new file mode 100644 index 00000000..72b8f4aa Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sk.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sl.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sl.png new file mode 100644 index 00000000..1010c079 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sl.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sm.png new file mode 100644 index 00000000..30c9a7ef Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sn.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sn.png new file mode 100644 index 00000000..a2f8197c Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sn.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/so.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/so.png new file mode 100644 index 00000000..25b1e1ef Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/so.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sr.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sr.png new file mode 100644 index 00000000..daaf01bb Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sr.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ss.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ss.png new file mode 100644 index 00000000..95c375c7 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ss.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/st.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/st.png new file mode 100644 index 00000000..caca63ca Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/st.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sv.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sv.png new file mode 100644 index 00000000..e5ca9560 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sv.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sx.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sx.png new file mode 100644 index 00000000..4041b211 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sx.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sy.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sy.png new file mode 100644 index 00000000..4b9583af Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sy.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sz.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sz.png new file mode 100644 index 00000000..515edc61 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/sz.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tc.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tc.png new file mode 100644 index 00000000..f66e54fc Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tc.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/td.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/td.png new file mode 100644 index 00000000..a1c978a6 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/td.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tf.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tf.png new file mode 100644 index 00000000..72d7a9db Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tf.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tg.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tg.png new file mode 100644 index 00000000..5ccbeaf6 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tg.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/th.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/th.png new file mode 100644 index 00000000..8a8153a9 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/th.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tj.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tj.png new file mode 100644 index 00000000..1e43ecfd Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tj.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tk.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tk.png new file mode 100644 index 00000000..939ebd80 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tk.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tl.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tl.png new file mode 100644 index 00000000..528bc823 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tl.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tm.png new file mode 100644 index 00000000..65ba21ec Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tn.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tn.png new file mode 100644 index 00000000..836bbfec Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tn.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/to.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/to.png new file mode 100644 index 00000000..af3c66ee Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/to.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tr.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tr.png new file mode 100644 index 00000000..3848398a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tr.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tt.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tt.png new file mode 100644 index 00000000..76e5e842 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tt.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tv.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tv.png new file mode 100644 index 00000000..9c52a93f Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tv.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tw.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tw.png new file mode 100644 index 00000000..ea1c4bc4 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tw.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tz.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tz.png new file mode 100644 index 00000000..9fa7dbcf Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/tz.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ua.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ua.png new file mode 100644 index 00000000..a2e58d1d Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ua.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ug.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ug.png new file mode 100644 index 00000000..72e9898a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ug.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/um.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/um.png new file mode 100644 index 00000000..2083ae32 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/um.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/us.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/us.png new file mode 100644 index 00000000..2083ae32 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/us.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/uy.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/uy.png new file mode 100644 index 00000000..460cc881 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/uy.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/uz.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/uz.png new file mode 100644 index 00000000..a4124a6b Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/uz.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/va.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/va.png new file mode 100644 index 00000000..b543bd25 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/va.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vc.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vc.png new file mode 100644 index 00000000..6ec6077f Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vc.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ve.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ve.png new file mode 100644 index 00000000..3de0f720 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ve.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vg.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vg.png new file mode 100644 index 00000000..39cc85d5 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vg.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vi.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vi.png new file mode 100644 index 00000000..b1862253 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vi.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vn.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vn.png new file mode 100644 index 00000000..9ba2e9e2 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vn.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vu.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vu.png new file mode 100644 index 00000000..0bc8fa23 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/vu.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/wf.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/wf.png new file mode 100644 index 00000000..db3b768c Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/wf.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ws.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ws.png new file mode 100644 index 00000000..8003387a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ws.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/xk.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/xk.png new file mode 100644 index 00000000..1a6038de Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/xk.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ye.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ye.png new file mode 100644 index 00000000..1be6876c Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/ye.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/yt.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/yt.png new file mode 100644 index 00000000..529ea741 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/yt.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/za.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/za.png new file mode 100644 index 00000000..994a276b Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/za.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/zm.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/zm.png new file mode 100644 index 00000000..3c28da4c Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/zm.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/zw.png b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/zw.png new file mode 100644 index 00000000..ef397b52 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/flags-of-the-world/zw.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/fontawesome/LICENSE.txt b/android/app/src/main/assets/extensions/ublock_origin/img/fontawesome/LICENSE.txt new file mode 100644 index 00000000..2784b8cf --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/img/fontawesome/LICENSE.txt @@ -0,0 +1,25 @@ +# [Font Awesome v4.7.0](http://fontawesome.io) +### The iconic font and CSS framework + +Font Awesome is a full suite of 675 pictographic icons for easy scalable vector graphics on websites, +created and maintained by [Dave Gandy](https://twitter.com/davegandy). +Stay up to date with the latest release and announcements on Twitter: +[@fontawesome](http://twitter.com/fontawesome). + +Get started at http://fontawesome.io! + +## License +- The Font Awesome font is licensed under the SIL OFL 1.1: + - http://scripts.sil.org/OFL +- Font Awesome CSS, LESS, and Sass files are licensed under the MIT License: + - https://opensource.org/licenses/mit-license.html +- The Font Awesome documentation is licensed under the CC BY 3.0 License: + - http://creativecommons.org/licenses/by/3.0/ +- Attribution is no longer required as of Font Awesome 3.0, but much appreciated: + - `Font Awesome by Dave Gandy - http://fontawesome.io` +- Full details: http://fontawesome.io/license/ + +## Author +- Email: dave@fontawesome.io +- Twitter: http://twitter.com/davegandy +- GitHub: https://github.com/davegandy diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/fontawesome/fontawesome-defs.svg b/android/app/src/main/assets/extensions/ublock_origin/img/fontawesome/fontawesome-defs.svg new file mode 100644 index 00000000..4e82babb --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/img/fontawesome/fontawesome-defs.svg @@ -0,0 +1,82 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/help16.png b/android/app/src/main/assets/extensions/ublock_origin/img/help16.png new file mode 100644 index 00000000..32a8b44f Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/help16.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/icon_16-loading.png b/android/app/src/main/assets/extensions/ublock_origin/img/icon_16-loading.png new file mode 100644 index 00000000..54d274e2 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/icon_16-loading.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/icon_16-off.png b/android/app/src/main/assets/extensions/ublock_origin/img/icon_16-off.png new file mode 100644 index 00000000..28a7a2a5 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/icon_16-off.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/icon_16.png b/android/app/src/main/assets/extensions/ublock_origin/img/icon_16.png new file mode 100644 index 00000000..d72530a5 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/icon_16.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/icon_32-loading.png b/android/app/src/main/assets/extensions/ublock_origin/img/icon_32-loading.png new file mode 100644 index 00000000..ca3db7e7 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/icon_32-loading.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/icon_32-off.png b/android/app/src/main/assets/extensions/ublock_origin/img/icon_32-off.png new file mode 100644 index 00000000..260df421 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/icon_32-off.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/icon_32.png b/android/app/src/main/assets/extensions/ublock_origin/img/icon_32.png new file mode 100644 index 00000000..c7c93e39 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/icon_32.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/icon_64-loading.png b/android/app/src/main/assets/extensions/ublock_origin/img/icon_64-loading.png new file mode 100644 index 00000000..abd0fba4 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/icon_64-loading.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/icon_64-off.png b/android/app/src/main/assets/extensions/ublock_origin/img/icon_64-off.png new file mode 100644 index 00000000..bbd881b9 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/icon_64-off.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/icon_64.png b/android/app/src/main/assets/extensions/ublock_origin/img/icon_64.png new file mode 100644 index 00000000..50dcded6 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/img/icon_64.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/material-design.svg b/android/app/src/main/assets/extensions/ublock_origin/img/material-design.svg new file mode 100644 index 00000000..3b5e7272 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/img/material-design.svg @@ -0,0 +1,16 @@ + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/photon.svg b/android/app/src/main/assets/extensions/ublock_origin/img/photon.svg new file mode 100644 index 00000000..e6c42d5e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/img/photon.svg @@ -0,0 +1,16 @@ + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/ublock-defs.svg b/android/app/src/main/assets/extensions/ublock_origin/img/ublock-defs.svg new file mode 100644 index 00000000..dbc59a38 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/img/ublock-defs.svg @@ -0,0 +1,27 @@ + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/img/ublock.svg b/android/app/src/main/assets/extensions/ublock_origin/img/ublock.svg new file mode 100644 index 00000000..ea2ffd3c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/img/ublock.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/1p-filters.js b/android/app/src/main/assets/extensions/ublock_origin/js/1p-filters.js new file mode 100644 index 00000000..934acd46 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/1p-filters.js @@ -0,0 +1,384 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/* global CodeMirror, uBlockDashboard */ + +import './codemirror/ubo-static-filtering.js'; +import { dom, qs$ } from './dom.js'; +import { i18n$ } from './i18n.js'; +import { onBroadcast } from './broadcast.js'; + +/******************************************************************************/ + +const cmEditor = new CodeMirror(qs$('#userFilters'), { + autoCloseBrackets: true, + autofocus: true, + extraKeys: { + 'Ctrl-Space': 'autocomplete', + 'Tab': 'toggleComment', + }, + foldGutter: true, + gutters: [ + 'CodeMirror-linenumbers', + { className: 'CodeMirror-lintgutter', style: 'width: 11px' }, + ], + lineNumbers: true, + lineWrapping: true, + matchBrackets: true, + maxScanLines: 1, + styleActiveLine: { + nonEmpty: true, + }, +}); + +uBlockDashboard.patchCodeMirrorEditor(cmEditor); + +/******************************************************************************/ + +// Add auto-complete ability to the editor. Polling is used as the suggested +// hints also depend on the tabs currently opened. + +{ + let hintUpdateToken = 0; + + const getHints = async function() { + const hints = await vAPI.messaging.send('dashboard', { + what: 'getAutoCompleteDetails', + hintUpdateToken + }); + if ( hints instanceof Object === false ) { return; } + if ( hints.hintUpdateToken !== undefined ) { + cmEditor.setOption('uboHints', hints); + hintUpdateToken = hints.hintUpdateToken; + } + timer.on(2503); + }; + + const timer = vAPI.defer.create(( ) => { + getHints(); + }); + + getHints(); +} + +vAPI.messaging.send('dashboard', { + what: 'getTrustedScriptletTokens', +}).then(tokens => { + cmEditor.setOption('trustedScriptletTokens', tokens); +}); + +/******************************************************************************/ + +let originalState = { + enabled: true, + trusted: false, + filters: '', +}; + +function getCurrentState() { + const enabled = qs$('#enableMyFilters input').checked; + return { + enabled, + trusted: qs$('#trustMyFilters input').checked, + filters: getEditorText(), + }; +} + +function rememberCurrentState() { + originalState = getCurrentState(); +} + +function currentStateChanged() { + return JSON.stringify(getCurrentState()) !== JSON.stringify(originalState); +} + +function getEditorText() { + const text = cmEditor.getValue().trimEnd(); + return text === '' ? text : `${text}\n`; +} + +function setEditorText(text) { + cmEditor.setValue(`${text.trimEnd()}\n\n`); +} + +/******************************************************************************/ + +function userFiltersChanged(details = {}) { + const changed = typeof details.changed === 'boolean' + ? details.changed + : self.hasUnsavedData(); + qs$('#userFiltersApply').disabled = !changed; + qs$('#userFiltersRevert').disabled = !changed; + const enabled = qs$('#enableMyFilters input').checked; + const trustedbefore = cmEditor.getOption('trustedSource'); + const trustedAfter = enabled && qs$('#trustMyFilters input').checked; + if ( trustedAfter === trustedbefore ) { return; } + cmEditor.startOperation(); + cmEditor.setOption('trustedSource', trustedAfter); + const doc = cmEditor.getDoc(); + const history = doc.getHistory(); + const selections = doc.listSelections(); + doc.replaceRange(doc.getValue(), + { line: 0, ch: 0 }, + { line: doc.lineCount(), ch: 0 } + ); + doc.setSelections(selections); + doc.setHistory(history); + cmEditor.endOperation(); + cmEditor.focus(); +} + +/******************************************************************************/ + +// https://github.com/gorhill/uBlock/issues/3704 +// Merge changes to user filters occurring in the background with changes +// made in the editor. The code assumes that no deletion occurred in the +// background. + +function threeWayMerge(newContent) { + const prvContent = originalState.filters.trim().split(/\n/); + const differ = new self.diff_match_patch(); + const newChanges = differ.diff( + prvContent, + newContent.trim().split(/\n/) + ); + const usrChanges = differ.diff( + prvContent, + getEditorText().trim().split(/\n/) + ); + const out = []; + let i = 0, j = 0, k = 0; + while ( i < prvContent.length ) { + for ( ; j < newChanges.length; j++ ) { + const change = newChanges[j]; + if ( change[0] !== 1 ) { break; } + out.push(change[1]); + } + for ( ; k < usrChanges.length; k++ ) { + const change = usrChanges[k]; + if ( change[0] !== 1 ) { break; } + out.push(change[1]); + } + if ( k === usrChanges.length || usrChanges[k][0] !== -1 ) { + out.push(prvContent[i]); + } + i += 1; j += 1; k += 1; + } + for ( ; j < newChanges.length; j++ ) { + const change = newChanges[j]; + if ( change[0] !== 1 ) { continue; } + out.push(change[1]); + } + for ( ; k < usrChanges.length; k++ ) { + const change = usrChanges[k]; + if ( change[0] !== 1 ) { continue; } + out.push(change[1]); + } + return out.join('\n'); +} + +/******************************************************************************/ + +async function renderUserFilters() { + const details = await vAPI.messaging.send('dashboard', { + what: 'readUserFilters', + }); + if ( details instanceof Object === false || details.error ) { return; } + + cmEditor.setOption('trustedSource', details.trusted); + + qs$('#enableMyFilters input').checked = details.enabled; + qs$('#trustMyFilters input').checked = details.trusted; + + setEditorText(details.content.trim()); + userFiltersChanged({ changed: false }); + + rememberCurrentState(); +} + +/******************************************************************************/ + +function handleImportFilePicker(ev) { + const file = ev.target.files[0]; + if ( file === undefined || file.name === '' ) { return; } + if ( file.type.indexOf('text') !== 0 ) { return; } + const fr = new FileReader(); + fr.onload = function() { + if ( typeof fr.result !== 'string' ) { return; } + const content = uBlockDashboard.mergeNewLines(getEditorText(), fr.result); + cmEditor.operation(( ) => { + const cmPos = cmEditor.getCursor(); + setEditorText(content); + cmEditor.setCursor(cmPos); + cmEditor.focus(); + }); + }; + fr.readAsText(file); +} + +dom.on('#importFilePicker', 'change', handleImportFilePicker); + +function startImportFilePicker() { + const input = qs$('#importFilePicker'); + // Reset to empty string, this will ensure an change event is properly + // triggered if the user pick a file, even if it is the same as the last + // one picked. + input.value = ''; + input.click(); +} + +dom.on('#importUserFiltersFromFile', 'click', startImportFilePicker); + +/******************************************************************************/ + +function exportUserFiltersToFile() { + const val = getEditorText(); + if ( val === '' ) { return; } + const filename = i18n$('1pExportFilename') + .replace('{{datetime}}', uBlockDashboard.dateNowToSensibleString()) + .replace(/ +/g, '_'); + vAPI.download({ + 'url': `data:text/plain;charset=utf-8,${encodeURIComponent(val)}`, + 'filename': filename + }); +} + +/******************************************************************************/ + +async function applyChanges() { + const state = getCurrentState(); + const details = await vAPI.messaging.send('dashboard', { + what: 'writeUserFilters', + content: state.filters, + enabled: state.enabled, + trusted: state.trusted, + }); + if ( details instanceof Object === false || details.error ) { return; } + rememberCurrentState(); + userFiltersChanged({ changed: false }); + vAPI.messaging.send('dashboard', { + what: 'reloadAllFilters', + }); +} + +function revertChanges() { + qs$('#enableMyFilters input').checked = originalState.enabled; + qs$('#trustMyFilters input').checked = originalState.trusted; + setEditorText(originalState.filters); + userFiltersChanged(); +} + +/******************************************************************************/ + +function getCloudData() { + return getEditorText(); +} + +function setCloudData(data, append) { + if ( typeof data !== 'string' ) { return; } + if ( append ) { + data = uBlockDashboard.mergeNewLines(getEditorText(), data); + } + cmEditor.setValue(data); +} + +self.cloud.onPush = getCloudData; +self.cloud.onPull = setCloudData; + +/******************************************************************************/ + +self.wikilink = 'https://github.com/gorhill/uBlock/wiki/Dashboard:-My-filters'; + +self.hasUnsavedData = function() { + return currentStateChanged(); +}; + +/******************************************************************************/ + +// Handle user interaction +dom.on('#exportUserFiltersToFile', 'click', exportUserFiltersToFile); +dom.on('#userFiltersApply', 'click', ( ) => { applyChanges(); }); +dom.on('#userFiltersRevert', 'click', revertChanges); +dom.on('#enableMyFilters input', 'change', userFiltersChanged); +dom.on('#trustMyFilters input', 'change', userFiltersChanged); + +(async ( ) => { + await renderUserFilters(); + + cmEditor.clearHistory(); + + // https://github.com/gorhill/uBlock/issues/3706 + // Save/restore cursor position + { + const line = await vAPI.localStorage.getItemAsync('myFiltersCursorPosition'); + if ( typeof line === 'number' ) { + cmEditor.setCursor(line, 0); + } + cmEditor.focus(); + } + + // https://github.com/gorhill/uBlock/issues/3706 + // Save/restore cursor position + { + let curline = 0; + cmEditor.on('cursorActivity', ( ) => { + if ( timer.ongoing() ) { return; } + if ( cmEditor.getCursor().line === curline ) { return; } + timer.on(701); + }); + const timer = vAPI.defer.create(( ) => { + curline = cmEditor.getCursor().line; + vAPI.localStorage.setItem('myFiltersCursorPosition', curline); + }); + } + + // https://github.com/gorhill/uBlock/issues/3704 + // Merge changes to user filters occurring in the background + onBroadcast(msg => { + switch ( msg.what ) { + case 'userFiltersUpdated': { + cmEditor.startOperation(); + const scroll = cmEditor.getScrollInfo(); + const selections = cmEditor.listSelections(); + const shouldMerge = self.hasUnsavedData(); + const beforeContent = getEditorText(); + renderUserFilters().then(( ) => { + if ( shouldMerge ) { + setEditorText(threeWayMerge(beforeContent)); + userFiltersChanged({ changed: true }); + } + cmEditor.clearHistory(); + cmEditor.setSelection(selections[0].anchor, selections[0].head); + cmEditor.scrollTo(scroll.left, scroll.top); + cmEditor.endOperation(); + }); + break; + } + default: + break; + } + }); +})(); + +cmEditor.on('changes', userFiltersChanged); +CodeMirror.commands.save = applyChanges; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/3p-filters.js b/android/app/src/main/assets/extensions/ublock_origin/js/3p-filters.js new file mode 100644 index 00000000..fed31542 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/3p-filters.js @@ -0,0 +1,902 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { dom, qs$, qsa$ } from './dom.js'; +import { i18n, i18n$ } from './i18n.js'; +import { onBroadcast } from './broadcast.js'; + +/******************************************************************************/ + +const lastUpdateTemplateString = i18n$('3pLastUpdate'); +const obsoleteTemplateString = i18n$('3pExternalListObsolete'); +const reValidExternalList = /^[a-z-]+:\/\/(?:\S+\/\S*|\/\S+)/m; +const recentlyUpdated = 1 * 60 * 60 * 1000; // 1 hour + +let listsetDetails = {}; + +/******************************************************************************/ + +onBroadcast(msg => { + switch ( msg.what ) { + case 'assetUpdated': + updateAssetStatus(msg); + break; + case 'assetsUpdated': + dom.cl.remove(dom.body, 'updating'); + renderWidgets(); + break; + case 'staticFilteringDataChanged': + renderFilterLists(); + break; + default: + break; + } +}); + +/******************************************************************************/ + +const renderNumber = value => { + return value.toLocaleString(); +}; + +const listStatsTemplate = i18n$('3pListsOfBlockedHostsPerListStats'); + +const renderLeafStats = (used, total) => { + if ( isNaN(used) || isNaN(total) ) { return ''; } + return listStatsTemplate + .replace('{{used}}', renderNumber(used)) + .replace('{{total}}', renderNumber(total)); +}; + +const renderNodeStats = (used, total) => { + if ( isNaN(used) || isNaN(total) ) { return ''; } + return `${used.toLocaleString()}/${total.toLocaleString()}`; +}; + +const i18nGroupName = name => { + const groupname = i18n$('3pGroup' + name.charAt(0).toUpperCase() + name.slice(1)); + if ( groupname !== '' ) { return groupname; } + return `${name.charAt(0).toLocaleUpperCase}${name.slice(1)}`; +}; + +/******************************************************************************/ + +const renderFilterLists = ( ) => { + // Assemble a pretty list name if possible + const listNameFromListKey = listkey => { + const list = listsetDetails.current[listkey] || listsetDetails.available[listkey]; + const title = list && list.title || ''; + if ( title !== '' ) { return title; } + return listkey; + }; + + const initializeListEntry = (listDetails, listEntry) => { + const listkey = listEntry.dataset.key; + const groupkey = listDetails.group2 || listDetails.group; + const listEntryPrevious = + qs$(`[data-key="${groupkey}"] [data-key="${listkey}"]`); + if ( listEntryPrevious !== null ) { + if ( dom.cl.has(listEntryPrevious, 'checked') ) { + dom.cl.add(listEntry, 'checked'); + } + if ( dom.cl.has(listEntryPrevious, 'stickied') ) { + dom.cl.add(listEntry, 'stickied'); + } + if ( dom.cl.has(listEntryPrevious, 'toRemove') ) { + dom.cl.add(listEntry, 'toRemove'); + } + if ( dom.cl.has(listEntryPrevious, 'searchMatch') ) { + dom.cl.add(listEntry, 'searchMatch'); + } + } else { + dom.cl.toggle(listEntry, 'checked', listDetails.off !== true); + } + const on = dom.cl.has(listEntry, 'checked'); + dom.prop(qs$(listEntry, ':scope > .detailbar input'), 'checked', on); + let elem = qs$(listEntry, ':scope > .detailbar a.content'); + dom.attr(elem, 'href', 'asset-viewer.html?url=' + encodeURIComponent(listkey)); + dom.attr(elem, 'type', 'text/html'); + dom.cl.remove(listEntry, 'toRemove'); + if ( listDetails.supportName ) { + elem = qs$(listEntry, ':scope > .detailbar a.support'); + dom.attr(elem, 'href', listDetails.supportURL || '#'); + dom.attr(elem, 'title', listDetails.supportName); + } + if ( listDetails.external ) { + dom.cl.add(listEntry, 'external'); + } else { + dom.cl.remove(listEntry, 'external'); + } + if ( listDetails.instructionURL ) { + elem = qs$(listEntry, ':scope > .detailbar a.mustread'); + dom.attr(elem, 'href', listDetails.instructionURL || '#'); + } + dom.cl.toggle(listEntry, 'isDefault', + listDetails.isDefault === true || + listDetails.isImportant === true || + listkey === 'user-filters' + ); + elem = qs$(listEntry, '.leafstats'); + dom.text(elem, renderLeafStats(on ? listDetails.entryUsedCount : 0, listDetails.entryCount)); + // https://github.com/chrisaljoudi/uBlock/issues/104 + const asset = listsetDetails.cache[listkey] || {}; + const remoteURL = asset.remoteURL; + dom.cl.toggle(listEntry, 'unsecure', + typeof remoteURL === 'string' && remoteURL.lastIndexOf('http:', 0) === 0 + ); + dom.cl.toggle(listEntry, 'failed', asset.error !== undefined); + dom.cl.toggle(listEntry, 'obsolete', asset.obsolete === true); + const lastUpdateString = lastUpdateTemplateString.replace('{{ago}}', + i18n.renderElapsedTimeToString(asset.writeTime || 0) + ); + if ( asset.obsolete === true ) { + let title = obsoleteTemplateString; + if ( asset.cached && asset.writeTime !== 0 ) { + title += '\n' + lastUpdateString; + } + dom.attr(qs$(listEntry, ':scope > .detailbar .status.obsolete'), 'title', title); + } + if ( asset.cached === true ) { + dom.cl.add(listEntry, 'cached'); + dom.attr(qs$(listEntry, ':scope > .detailbar .status.cache'), 'title', lastUpdateString); + const timeSinceLastUpdate = Date.now() - asset.writeTime; + dom.cl.toggle(listEntry, 'recent', timeSinceLastUpdate < recentlyUpdated); + } else { + dom.cl.remove(listEntry, 'cached'); + } + }; + + const createListEntry = (listDetails, depth) => { + if ( listDetails.lists === undefined ) { + return dom.clone('#templates .listEntry[data-role="leaf"]'); + } + if ( depth !== 0 ) { + return dom.clone('#templates .listEntry[data-role="node"]'); + } + return dom.clone('#templates .listEntry[data-role="node"][data-parent="root"]'); + }; + + const createListEntries = (parentkey, listTree, depth = 0) => { + const listEntries = dom.clone('#templates .listEntries'); + const treeEntries = Object.entries(listTree); + if ( depth !== 0 ) { + const reEmojis = /\p{Emoji}+/gu; + treeEntries.sort((a ,b) => { + const ap = a[1].preferred === true; + const bp = b[1].preferred === true; + if ( ap !== bp ) { return ap ? -1 : 1; } + const as = (a[1].title || a[0]).replace(reEmojis, ''); + const bs = (b[1].title || b[0]).replace(reEmojis, ''); + return as.localeCompare(bs); + }); + } + for ( const [ listkey, listDetails ] of treeEntries ) { + const listEntry = createListEntry(listDetails, depth); + if ( dom.cl.has(dom.root, 'mobile') ) { + const leafStats = qs$(listEntry, '.leafstats'); + if ( leafStats ) { + listEntry.append(leafStats); + } + } + listEntry.dataset.key = listkey; + listEntry.dataset.parent = parentkey; + qs$(listEntry, ':scope > .detailbar .listname').append( + i18n.patchUnicodeFlags(listDetails.title) + ); + if ( listDetails.lists !== undefined ) { + listEntry.append(createListEntries(listEntry.dataset.key, listDetails.lists, depth+1)); + dom.cl.toggle(listEntry, 'expanded', listIsExpanded(listkey)); + updateListNode(listEntry); + } else { + initializeListEntry(listDetails, listEntry); + } + listEntries.append(listEntry); + } + return listEntries; + }; + + const onListsReceived = response => { + // Store in global variable + listsetDetails = response; + hashFromListsetDetails(); + + // Build list tree + const listTree = {}; + const groupKeys = [ + 'user', + 'default', + 'ads', + 'privacy', + 'malware', + 'multipurpose', + 'cookies', + 'social', + 'annoyances', + 'regions', + 'unknown', + 'custom' + ]; + for ( const key of groupKeys ) { + listTree[key] = { + title: i18nGroupName(key), + lists: {}, + }; + } + for ( const [ listkey, listDetails ] of Object.entries(response.available) ) { + let groupkey = listDetails.group2 || listDetails.group; + if ( Object.hasOwn(listTree, groupkey) === false ) { + groupkey = 'unknown'; + } + const groupDetails = listTree[groupkey]; + if ( listDetails.parent !== undefined ) { + let lists = groupDetails.lists; + for ( const parent of listDetails.parent.split('|') ) { + if ( lists[parent] === undefined ) { + lists[parent] = { title: parent, lists: {} }; + } + if ( listDetails.preferred === true ) { + lists[parent].preferred = true; + } + lists = lists[parent].lists; + } + lists[listkey] = listDetails; + } else { + listDetails.title = listNameFromListKey(listkey); + groupDetails.lists[listkey] = listDetails; + } + } + // https://github.com/uBlockOrigin/uBlock-issues/issues/3154#issuecomment-1975413427 + // Remove empty sections + for ( const groupkey of groupKeys ) { + const groupDetails = listTree[groupkey]; + if ( groupDetails === undefined ) { continue; } + if ( Object.keys(groupDetails.lists).length !== 0 ) { continue; } + delete listTree[groupkey]; + } + + const listEntries = createListEntries('root', listTree); + qs$('#lists .listEntries').replaceWith(listEntries); + + qs$('#autoUpdate').checked = listsetDetails.autoUpdate === true; + dom.text( + '#listsOfBlockedHostsPrompt', + i18n$('3pListsOfBlockedHostsPrompt') + .replace('{{netFilterCount}}', renderNumber(response.netFilterCount)) + .replace('{{cosmeticFilterCount}}', renderNumber(response.cosmeticFilterCount)) + ); + qs$('#parseCosmeticFilters').checked = + listsetDetails.parseCosmeticFilters === true; + qs$('#ignoreGenericCosmeticFilters').checked = + listsetDetails.ignoreGenericCosmeticFilters === true; + qs$('#suspendUntilListsAreLoaded').checked = + listsetDetails.suspendUntilListsAreLoaded === true; + + // https://github.com/gorhill/uBlock/issues/2394 + dom.cl.toggle(dom.body, 'updating', listsetDetails.isUpdating); + + renderWidgets(); + }; + + return vAPI.messaging.send('dashboard', { + what: 'getLists', + }).then(response => { + onListsReceived(response); + }); +}; + +/******************************************************************************/ + +const renderWidgets = ( ) => { + const updating = dom.cl.has(dom.body, 'updating'); + const hasObsolete = qs$('#lists .listEntry.checked.obsolete:not(.toRemove)') !== null; + dom.cl.toggle('#buttonApply', 'disabled', + filteringSettingsHash === hashFromCurrentFromSettings() + ); + dom.cl.toggle('#buttonUpdate', 'active', updating); + dom.cl.toggle('#buttonUpdate', 'disabled', + updating === false && hasObsolete === false + ); +}; + +/******************************************************************************/ + +const updateAssetStatus = details => { + const listEntry = qs$(`#lists .listEntry[data-key="${details.key}"]`); + if ( listEntry === null ) { return; } + dom.cl.toggle(listEntry, 'failed', !!details.failed); + dom.cl.toggle(listEntry, 'obsolete', !details.cached); + dom.cl.toggle(listEntry, 'cached', !!details.cached); + if ( details.cached ) { + dom.attr(qs$(listEntry, '.status.cache'), 'title', + lastUpdateTemplateString.replace('{{ago}}', i18n.renderElapsedTimeToString(Date.now())) + ); + dom.cl.add(listEntry, 'recent'); + } + updateAncestorListNodes(listEntry, ancestor => { + updateListNode(ancestor); + }); + renderWidgets(); +}; + +/******************************************************************************* + + Compute a hash from all the settings affecting how filter lists are loaded + in memory. + +**/ + +let filteringSettingsHash = ''; + +const hashFromListsetDetails = ( ) => { + const hashParts = [ + listsetDetails.parseCosmeticFilters === true, + listsetDetails.ignoreGenericCosmeticFilters === true, + ]; + const listHashes = []; + for ( const [ listkey, listDetails ] of Object.entries(listsetDetails.available) ) { + if ( listDetails.off === true ) { continue; } + listHashes.push(listkey); + } + hashParts.push( listHashes.sort().join(), '', false); + filteringSettingsHash = hashParts.join(); +}; + +const hashFromCurrentFromSettings = ( ) => { + const hashParts = [ + qs$('#parseCosmeticFilters').checked, + qs$('#ignoreGenericCosmeticFilters').checked, + ]; + const listHashes = []; + const listEntries = qsa$('#lists .listEntry[data-key]:not(.toRemove)'); + for ( const liEntry of listEntries ) { + if ( liEntry.dataset.role !== 'leaf' ) { continue; } + if ( dom.cl.has(liEntry, 'checked') === false ) { continue; } + listHashes.push(liEntry.dataset.key); + } + const textarea = qs$('#lists .listEntry[data-role="import"].expanded textarea'); + hashParts.push( + listHashes.sort().join(), + textarea !== null && textarea.value.trim() || '', + qs$('#lists .listEntry.toRemove') !== null + ); + return hashParts.join(); +}; + +/******************************************************************************/ + +const onListsetChanged = ev => { + const input = ev.target.closest('input'); + if ( input === null ) { return; } + toggleFilterList(input, input.checked, true); +}; + +dom.on('#lists', 'change', '.listEntry > .detailbar input', onListsetChanged); + +const toggleFilterList = (elem, on, ui = false) => { + const listEntry = elem.closest('.listEntry'); + if ( listEntry === null ) { return; } + if ( listEntry.dataset.parent === 'root' ) { return; } + const searchMode = dom.cl.has('#lists', 'searchMode'); + const input = qs$(listEntry, ':scope > .detailbar input'); + if ( on === undefined ) { + on = input.checked === false; + } + input.checked = on; + dom.cl.toggle(listEntry, 'checked', on); + dom.cl.toggle(listEntry, 'stickied', ui && !on && !searchMode); + // Select/unselect descendants. Twist: if in search-mode, select only + // search-matched descendants. + const childListEntries = searchMode + ? qsa$(listEntry, '.listEntry.searchMatch') + : qsa$(listEntry, '.listEntry'); + for ( const descendantList of childListEntries ) { + dom.cl.toggle(descendantList, 'checked', on); + qs$(descendantList, ':scope > .detailbar input').checked = on; + } + updateAncestorListNodes(listEntry, ancestor => { + updateListNode(ancestor); + }); + onFilteringSettingsChanged(); +}; + +const updateListNode = listNode => { + if ( listNode === null ) { return; } + if ( listNode.dataset.role !== 'node' ) { return; } + const checkedListLeaves = qsa$(listNode, '.listEntry[data-role="leaf"].checked'); + const allListLeaves = qsa$(listNode, '.listEntry[data-role="leaf"]'); + dom.text(qs$(listNode, '.nodestats'), + renderNodeStats(checkedListLeaves.length, allListLeaves.length) + ); + dom.cl.toggle(listNode, 'searchMatch', + qs$(listNode, ':scope > .listEntries > .listEntry.searchMatch') !== null + ); + if ( listNode.dataset.parent === 'root' ) { return; } + let usedFilterCount = 0; + let totalFilterCount = 0; + let isCached = false; + let isObsolete = false; + let latestWriteTime = 0; + let oldestWriteTime = Number.MAX_SAFE_INTEGER; + for ( const listLeaf of checkedListLeaves ) { + const listkey = listLeaf.dataset.key; + const listDetails = listsetDetails.available[listkey]; + usedFilterCount += listDetails.off ? 0 : listDetails.entryUsedCount || 0; + totalFilterCount += listDetails.entryCount || 0; + const assetCache = listsetDetails.cache[listkey] || {}; + isCached = isCached || dom.cl.has(listLeaf, 'cached'); + isObsolete = isObsolete || dom.cl.has(listLeaf, 'obsolete'); + latestWriteTime = Math.max(latestWriteTime, assetCache.writeTime || 0); + oldestWriteTime = Math.min(oldestWriteTime, assetCache.writeTime || Number.MAX_SAFE_INTEGER); + } + dom.cl.toggle(listNode, 'checked', checkedListLeaves.length !== 0); + dom.cl.toggle(qs$(listNode, ':scope > .detailbar .checkbox'), + 'partial', + checkedListLeaves.length !== allListLeaves.length + ); + dom.prop(qs$(listNode, ':scope > .detailbar input'), + 'checked', + checkedListLeaves.length !== 0 + ); + dom.text(qs$(listNode, '.leafstats'), + renderLeafStats(usedFilterCount, totalFilterCount) + ); + const firstLeaf = qs$(listNode, '.listEntry[data-role="leaf"]'); + if ( firstLeaf !== null ) { + dom.attr(qs$(listNode, ':scope > .detailbar a.support'), 'href', + dom.attr(qs$(firstLeaf, ':scope > .detailbar a.support'), 'href') || '#' + ); + dom.attr(qs$(listNode, ':scope > .detailbar a.mustread'), 'href', + dom.attr(qs$(firstLeaf, ':scope > .detailbar a.mustread'), 'href') || '#' + ); + } + dom.cl.toggle(listNode, 'cached', isCached); + dom.cl.toggle(listNode, 'obsolete', isObsolete); + if ( isCached ) { + dom.attr(qs$(listNode, ':scope > .detailbar .cache'), 'title', + lastUpdateTemplateString.replace('{{ago}}', i18n.renderElapsedTimeToString(latestWriteTime)) + ); + dom.cl.toggle(listNode, 'recent', (Date.now() - oldestWriteTime) < recentlyUpdated); + } + if ( qs$(listNode, '.listEntry.isDefault') !== null ) { + dom.cl.add(listNode, 'isDefault'); + } + if ( qs$(listNode, '.listEntry.stickied') !== null ) { + dom.cl.add(listNode, 'stickied'); + } +}; + +const updateAncestorListNodes = (listEntry, fn) => { + while ( listEntry !== null ) { + fn(listEntry); + listEntry = qs$(`.listEntry[data-key="${listEntry.dataset.parent}"]`); + } +}; + +/******************************************************************************/ + +const onFilteringSettingsChanged = ( ) => { + renderWidgets(); +}; + +dom.on('#parseCosmeticFilters', 'change', onFilteringSettingsChanged); +dom.on('#ignoreGenericCosmeticFilters', 'change', onFilteringSettingsChanged); +dom.on('#lists', 'input', '[data-role="import"] textarea', onFilteringSettingsChanged); + +/******************************************************************************/ + +const onRemoveExternalList = ev => { + const listEntry = ev.target.closest('[data-key]'); + if ( listEntry === null ) { return; } + dom.cl.toggle(listEntry, 'toRemove'); + renderWidgets(); +}; + +dom.on('#lists', 'click', '.listEntry .remove', onRemoveExternalList); + +/******************************************************************************/ + +const onPurgeClicked = ev => { + const liEntry = ev.target.closest('[data-key]'); + const listkey = liEntry.dataset.key || ''; + if ( listkey === '' ) { return; } + + const assetKeys = [ listkey ]; + for ( const listLeaf of qsa$(liEntry, '[data-role="leaf"]') ) { + assetKeys.push(listLeaf.dataset.key); + dom.cl.add(listLeaf, 'obsolete'); + dom.cl.remove(listLeaf, 'cached'); + } + + vAPI.messaging.send('dashboard', { + what: 'listsUpdateNow', + assetKeys, + preferOrigin: ev.shiftKey, + }); + + // If the cached version is purged, the installed version must be assumed + // to be obsolete. + // https://github.com/gorhill/uBlock/issues/1733 + // An external filter list must not be marked as obsolete, they will + // always be fetched anyways if there is no cached copy. + dom.cl.add(dom.body, 'updating'); + dom.cl.add(liEntry, 'obsolete'); + + if ( qs$(liEntry, 'input[type="checkbox"]').checked ) { + renderWidgets(); + } +}; + +dom.on('#lists', 'click', 'span.cache', onPurgeClicked); + +/******************************************************************************/ + +const selectFilterLists = async ( ) => { + // External filter lists to import + // Find stock list matching entries in lists to import + const toImport = (( ) => { + const textarea = qs$('#lists .listEntry[data-role="import"].expanded textarea'); + if ( textarea === null ) { return ''; } + const lists = listsetDetails.available; + const lines = textarea.value.split(/\s+/); + const after = []; + for ( const line of lines ) { + after.push(line); + if ( /^https?:\/\//.test(line) === false ) { continue; } + for ( const [ listkey, list ] of Object.entries(lists) ) { + if ( list.content !== 'filters' ) { continue; } + if ( list.contentURL === undefined ) { continue; } + if ( list.contentURL.includes(line) === false ) { continue; } + const groupkey = list.group2 || list.group; + const listEntry = qs$(`[data-key="${groupkey}"] [data-key="${listkey}"]`); + if ( listEntry === null ) { break; } + toggleFilterList(listEntry, true); + after.pop(); + break; + } + } + dom.cl.remove(textarea.closest('.expandable'), 'expanded'); + textarea.value = ''; + return after.join('\n'); + })(); + + // Cosmetic filtering switch + let checked = qs$('#parseCosmeticFilters').checked; + vAPI.messaging.send('dashboard', { + what: 'userSettings', + name: 'parseAllABPHideFilters', + value: checked, + }); + listsetDetails.parseCosmeticFilters = checked; + + checked = qs$('#ignoreGenericCosmeticFilters').checked; + vAPI.messaging.send('dashboard', { + what: 'userSettings', + name: 'ignoreGenericCosmeticFilters', + value: checked, + }); + listsetDetails.ignoreGenericCosmeticFilters = checked; + + // Filter lists to remove/select + const toSelect = []; + const toRemove = []; + for ( const liEntry of qsa$('#lists .listEntry[data-role="leaf"]') ) { + const listkey = liEntry.dataset.key; + if ( Object.hasOwn(listsetDetails.available, listkey) === false ) { + continue; + } + const listDetails = listsetDetails.available[listkey]; + if ( dom.cl.has(liEntry, 'toRemove') ) { + toRemove.push(listkey); + listDetails.off = true; + continue; + } + if ( dom.cl.has(liEntry, 'checked') ) { + toSelect.push(listkey); + listDetails.off = false; + } else { + listDetails.off = true; + } + } + + hashFromListsetDetails(); + + await vAPI.messaging.send('dashboard', { + what: 'applyFilterListSelection', + toSelect, + toImport, + toRemove, + }); +}; + +/******************************************************************************/ + +const buttonApplyHandler = async ( ) => { + await selectFilterLists(); + dom.cl.add(dom.body, 'working'); + dom.cl.remove('#lists .listEntry.stickied', 'stickied'); + renderWidgets(); + await vAPI.messaging.send('dashboard', { what: 'reloadAllFilters' }); + dom.cl.remove(dom.body, 'working'); +}; + +dom.on('#buttonApply', 'click', ( ) => { buttonApplyHandler(); }); + +/******************************************************************************/ + +const buttonUpdateHandler = async ( ) => { + dom.cl.remove('#lists .listEntry.stickied', 'stickied'); + await selectFilterLists(); + dom.cl.add(dom.body, 'updating'); + renderWidgets(); + vAPI.messaging.send('dashboard', { what: 'updateNow' }); +}; + +dom.on('#buttonUpdate', 'click', ( ) => { buttonUpdateHandler(); }); + +/******************************************************************************/ + +const userSettingCheckboxChanged = ( ) => { + const target = event.target; + vAPI.messaging.send('dashboard', { + what: 'userSettings', + name: target.id, + value: target.checked, + }); + listsetDetails[target.id] = target.checked; +}; + +dom.on('#autoUpdate', 'change', userSettingCheckboxChanged); +dom.on('#suspendUntilListsAreLoaded', 'change', userSettingCheckboxChanged); + +/******************************************************************************/ + +const searchFilterLists = ( ) => { + const pattern = dom.prop('.searchfield input', 'value') || ''; + dom.cl.toggle('#lists', 'searchMode', pattern !== ''); + if ( pattern === '' ) { return; } + const reflectSearchMatches = listEntry => { + if ( listEntry.dataset.role !== 'node' ) { return; } + dom.cl.toggle(listEntry, 'searchMatch', + qs$(listEntry, ':scope > .listEntries > .listEntry.searchMatch') !== null + ); + }; + const toI18n = tags => { + if ( tags === '' ) { return ''; } + return tags.toLowerCase().split(/\s+/).reduce((a, v) => { + let s = i18n$(v); + if ( s === '' ) { + s = i18nGroupName(v); + if ( s === '' ) { return a; } + } + return `${a} ${s}`.trim(); + }, ''); + }; + const re = new RegExp(pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'i'); + for ( const listEntry of qsa$('#lists [data-role="leaf"]') ) { + const listkey = listEntry.dataset.key; + const listDetails = listsetDetails.available[listkey]; + if ( listDetails === undefined ) { continue; } + let haystack = perListHaystack.get(listDetails); + if ( haystack === undefined ) { + const groupkey = listDetails.group2 || listDetails.group || ''; + haystack = [ + listDetails.title, + groupkey, + i18nGroupName(groupkey), + listDetails.tags || '', + toI18n(listDetails.tags || ''), + ].join(' ').trim(); + perListHaystack.set(listDetails, haystack); + } + dom.cl.toggle(listEntry, 'searchMatch', re.test(haystack)); + updateAncestorListNodes(listEntry, reflectSearchMatches); + } +}; + +const perListHaystack = new WeakMap(); + +dom.on('.searchfield input', 'input', searchFilterLists); + +/******************************************************************************/ + +const expandedListSet = new Set([ + 'cookies', + 'social', +]); + +const listIsExpanded = which => { + return expandedListSet.has(which); +}; + +const applyListExpansion = listkeys => { + if ( listkeys === undefined ) { + listkeys = Array.from(expandedListSet); + } + expandedListSet.clear(); + dom.cl.remove('#lists [data-role="node"]', 'expanded'); + listkeys.forEach(which => { + expandedListSet.add(which); + dom.cl.add(`#lists [data-key="${which}"]`, 'expanded'); + }); +}; + +const toggleListExpansion = which => { + const isExpanded = expandedListSet.has(which); + if ( which === '*' ) { + if ( isExpanded ) { + expandedListSet.clear(); + dom.cl.remove('#lists .expandable', 'expanded'); + dom.cl.remove('#lists .stickied', 'stickied'); + } else { + expandedListSet.clear(); + expandedListSet.add('*'); + dom.cl.add('#lists .rootstats', 'expanded'); + for ( const expandable of qsa$('#lists > .listEntries .expandable') ) { + const listkey = expandable.dataset.key || ''; + if ( listkey === '' ) { continue; } + expandedListSet.add(listkey); + dom.cl.add(expandable, 'expanded'); + } + } + } else { + if ( isExpanded ) { + expandedListSet.delete(which); + const listNode = qs$(`#lists > .listEntries [data-key="${which}"]`); + dom.cl.remove(listNode, 'expanded'); + if ( listNode.dataset.parent === 'root' ) { + dom.cl.remove(qsa$(listNode, '.stickied'), 'stickied'); + } + } else { + expandedListSet.add(which); + dom.cl.add(`#lists > .listEntries [data-key="${which}"]`, 'expanded'); + } + } + vAPI.localStorage.setItem('expandedListSet', Array.from(expandedListSet)); + vAPI.localStorage.removeItem('hideUnusedFilterLists'); +}; + +dom.on('#listsOfBlockedHostsPrompt', 'click', ( ) => { + toggleListExpansion('*'); +}); + +dom.on('#lists', 'click', '.listExpander', ev => { + const expandable = ev.target.closest('.expandable'); + if ( expandable === null ) { return; } + const which = expandable.dataset.key; + if ( which !== undefined ) { + toggleListExpansion(which); + } else { + dom.cl.toggle(expandable, 'expanded'); + if ( expandable.dataset.role === 'import' ) { + onFilteringSettingsChanged(); + } + } + ev.preventDefault(); +}); + +dom.on('#lists', 'click', '[data-parent="root"] > .detailbar .listname', ev => { + const listEntry = ev.target.closest('.listEntry'); + if ( listEntry === null ) { return; } + const listkey = listEntry.dataset.key; + if ( listkey === undefined ) { return; } + toggleListExpansion(listkey); + ev.preventDefault(); +}); + +dom.on('#lists', 'click', '[data-role="import"] > .detailbar .listname', ev => { + const expandable = ev.target.closest('.listEntry'); + if ( expandable === null ) { return; } + dom.cl.toggle(expandable, 'expanded'); + ev.preventDefault(); +}); + +dom.on('#lists', 'click', '.listEntry > .detailbar .nodestats', ev => { + const listEntry = ev.target.closest('.listEntry'); + if ( listEntry === null ) { return; } + const listkey = listEntry.dataset.key; + if ( listkey === undefined ) { return; } + toggleListExpansion(listkey); + ev.preventDefault(); +}); + +// Initialize from saved state. +vAPI.localStorage.getItemAsync('expandedListSet').then(listkeys => { + if ( Array.isArray(listkeys) === false ) { return; } + applyListExpansion(listkeys); +}); + +/******************************************************************************/ + +// Cloud storage-related. + +self.cloud.onPush = function toCloudData() { + const bin = { + parseCosmeticFilters: qs$('#parseCosmeticFilters').checked, + ignoreGenericCosmeticFilters: qs$('#ignoreGenericCosmeticFilters').checked, + selectedLists: [] + }; + + const liEntries = qsa$('#lists .listEntry.checked[data-role="leaf"]'); + for ( const liEntry of liEntries ) { + bin.selectedLists.push(liEntry.dataset.key); + } + + return bin; +}; + +self.cloud.onPull = function fromCloudData(data, append) { + if ( typeof data !== 'object' || data === null ) { return; } + + let elem = qs$('#parseCosmeticFilters'); + let checked = data.parseCosmeticFilters === true || append && elem.checked; + elem.checked = listsetDetails.parseCosmeticFilters = checked; + + elem = qs$('#ignoreGenericCosmeticFilters'); + checked = data.ignoreGenericCosmeticFilters === true || append && elem.checked; + elem.checked = listsetDetails.ignoreGenericCosmeticFilters = checked; + + const selectedSet = new Set(data.selectedLists); + for ( const listEntry of qsa$('#lists .listEntry[data-role="leaf"]') ) { + const listkey = listEntry.dataset.key; + const mustEnable = selectedSet.has(listkey); + selectedSet.delete(listkey); + if ( mustEnable === false && append ) { continue; } + toggleFilterList(listEntry, mustEnable); + } + + // If there are URL-like list keys left in the selected set, import them. + for ( const listkey of selectedSet ) { + if ( reValidExternalList.test(listkey) ) { continue; } + selectedSet.delete(listkey); + } + if ( selectedSet.size !== 0 ) { + const textarea = qs$('#lists .listEntry[data-role="import"] textarea'); + const lines = append + ? textarea.value.split(/[\n\r]+/) + : []; + lines.push(...selectedSet); + if ( lines.length !== 0 ) { lines.push(''); } + textarea.value = lines.join('\n'); + dom.cl.toggle('#lists .listEntry[data-role="import"]', 'expanded', textarea.value !== ''); + } + + renderWidgets(); +}; + +/******************************************************************************/ + +self.wikilink = 'https://github.com/gorhill/uBlock/wiki/Dashboard:-Filter-lists'; + +self.hasUnsavedData = function() { + return hashFromCurrentFromSettings() !== filteringSettingsHash; +}; + +/******************************************************************************/ + +renderFilterLists().then(( ) => { + const buttonUpdate = qs$('#buttonUpdate'); + if ( dom.cl.has(buttonUpdate, 'active') ) { return; } + if ( dom.cl.has(buttonUpdate, 'disabled') ) { return; } + if ( listsetDetails.autoUpdate !== true ) { return; } + buttonUpdateHandler(); +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/about.js b/android/app/src/main/assets/extensions/ublock_origin/js/about.js new file mode 100644 index 00000000..202f3489 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/about.js @@ -0,0 +1,32 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { dom } from './dom.js'; + +/******************************************************************************/ + +(async ( ) => { + const appData = await vAPI.messaging.send('dashboard', { + what: 'getAppData', + }); + + dom.text('#aboutNameVer', appData.name + ' ' + appData.version); +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/advanced-settings.js b/android/app/src/main/assets/extensions/ublock_origin/js/advanced-settings.js new file mode 100644 index 00000000..d40ab763 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/advanced-settings.js @@ -0,0 +1,192 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2016-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/* global CodeMirror, uBlockDashboard */ + +import { dom, qs$ } from './dom.js'; + +/******************************************************************************/ + +let defaultSettings = new Map(); +let adminSettings = new Map(); +let beforeHash = ''; + +/******************************************************************************/ + +CodeMirror.defineMode('raw-settings', function() { + let lastSetting = ''; + + return { + token: function(stream) { + if ( stream.sol() ) { + stream.eatSpace(); + const match = stream.match(/\S+/); + if ( match !== null && defaultSettings.has(match[0]) ) { + lastSetting = match[0]; + return adminSettings.has(match[0]) + ? 'readonly keyword' + : 'keyword'; + } + stream.skipToEnd(); + return 'line-cm-error'; + } + stream.eatSpace(); + const match = stream.match(/.*$/); + if ( match !== null ) { + if ( match[0].trim() !== defaultSettings.get(lastSetting) ) { + return 'line-cm-strong'; + } + if ( adminSettings.has(lastSetting) ) { + return 'readonly'; + } + } + stream.skipToEnd(); + return null; + } + }; +}); + +const cmEditor = new CodeMirror(qs$('#advancedSettings'), { + autofocus: true, + lineNumbers: true, + lineWrapping: false, + styleActiveLine: true +}); + +uBlockDashboard.patchCodeMirrorEditor(cmEditor); + +/******************************************************************************/ + +const hashFromAdvancedSettings = function(raw) { + const aa = typeof raw === 'string' + ? arrayFromString(raw) + : arrayFromObject(raw); + aa.sort((a, b) => a[0].localeCompare(b[0])); + return JSON.stringify(aa); +}; + +/******************************************************************************/ + +const arrayFromObject = function(o) { + const out = []; + for ( const k in o ) { + if ( Object.hasOwn(o, k) === false ) { continue; } + out.push([ k, `${o[k]}` ]); + } + return out; +}; + +const arrayFromString = function(s) { + const out = []; + for ( let line of s.split(/[\n\r]+/) ) { + line = line.trim(); + if ( line === '' ) { continue; } + const pos = line.indexOf(' '); + let k, v; + if ( pos !== -1 ) { + k = line.slice(0, pos); + v = line.slice(pos + 1); + } else { + k = line; + v = ''; + } + out.push([ k.trim(), v.trim() ]); + } + return out; +}; + +/******************************************************************************/ + +const advancedSettingsChanged = (( ) => { + const handler = ( ) => { + const changed = hashFromAdvancedSettings(cmEditor.getValue()) !== beforeHash; + qs$('#advancedSettingsApply').disabled = !changed; + CodeMirror.commands.save = changed ? applyChanges : function(){}; + }; + + const timer = vAPI.defer.create(handler); + + return function() { + timer.offon(200); + }; +})(); + +cmEditor.on('changes', advancedSettingsChanged); + +/******************************************************************************/ + +const renderAdvancedSettings = async function(first) { + const details = await vAPI.messaging.send('dashboard', { + what: 'readHiddenSettings', + }); + defaultSettings = new Map(arrayFromObject(details.default)); + adminSettings = new Map(arrayFromObject(details.admin)); + beforeHash = hashFromAdvancedSettings(details.current); + const pretty = []; + const roLines = []; + const entries = arrayFromObject(details.current); + let max = 0; + for ( const [ k ] of entries ) { + if ( k.length > max ) { max = k.length; } + } + for ( let i = 0; i < entries.length; i++ ) { + const [ k, v ] = entries[i]; + pretty.push(' '.repeat(max - k.length) + `${k} ${v}`); + if ( adminSettings.has(k) ) { + roLines.push(i); + } + } + pretty.push(''); + cmEditor.setValue(pretty.join('\n')); + if ( first ) { + cmEditor.clearHistory(); + } + for ( const line of roLines ) { + cmEditor.markText( + { line, ch: 0 }, + { line: line + 1, ch: 0 }, + { readOnly: true } + ); + } + advancedSettingsChanged(); + cmEditor.focus(); +}; + +/******************************************************************************/ + +const applyChanges = async function() { + await vAPI.messaging.send('dashboard', { + what: 'writeHiddenSettings', + content: cmEditor.getValue(), + }); + renderAdvancedSettings(); +}; + +/******************************************************************************/ + +dom.on('#advancedSettings', 'input', advancedSettingsChanged); +dom.on('#advancedSettingsApply', 'click', ( ) => { + applyChanges(); +}); + +renderAdvancedSettings(true); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/arglist-parser.js b/android/app/src/main/assets/extensions/ublock_origin/js/arglist-parser.js new file mode 100644 index 00000000..708029e2 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/arglist-parser.js @@ -0,0 +1,116 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2020-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +export class ArglistParser { + constructor(separatorChar = ',', mustQuote = false) { + this.separatorChar = this.actualSeparatorChar = separatorChar; + this.separatorCode = this.actualSeparatorCode = separatorChar.charCodeAt(0); + this.mustQuote = mustQuote; + this.quoteBeg = 0; this.quoteEnd = 0; + this.argBeg = 0; this.argEnd = 0; + this.separatorBeg = 0; this.separatorEnd = 0; + this.transform = false; + this.failed = false; + this.reWhitespaceStart = /^\s+/; + this.reWhitespaceEnd = /(?:^|\S)(\s+)$/; + this.reOddTrailingEscape = /(?:^|[^\\])(?:\\\\)*\\$/; + this.reTrailingEscapeChars = /\\+$/; + } + nextArg(pattern, beg = 0) { + const len = pattern.length; + this.quoteBeg = beg + this.leftWhitespaceCount(pattern.slice(beg)); + this.failed = false; + const qc = pattern.charCodeAt(this.quoteBeg); + if ( qc === 0x22 /* " */ || qc === 0x27 /* ' */ || qc === 0x60 /* ` */ ) { + this.indexOfNextArgSeparator(pattern, qc); + if ( this.argEnd !== len ) { + this.quoteEnd = this.argEnd + 1; + this.separatorBeg = this.separatorEnd = this.quoteEnd; + this.separatorEnd += this.leftWhitespaceCount(pattern.slice(this.quoteEnd)); + if ( this.separatorEnd === len ) { return this; } + if ( pattern.charCodeAt(this.separatorEnd) === this.separatorCode ) { + this.separatorEnd += 1; + return this; + } + } + } + this.indexOfNextArgSeparator(pattern, this.separatorCode); + this.separatorBeg = this.separatorEnd = this.argEnd; + if ( this.separatorBeg < len ) { + this.separatorEnd += 1; + } + this.argEnd -= this.rightWhitespaceCount(pattern.slice(0, this.separatorBeg)); + this.quoteEnd = this.argEnd; + if ( this.mustQuote ) { + this.failed = true; + } + return this; + } + normalizeArg(s, char = '') { + if ( char === '' ) { char = this.actualSeparatorChar; } + let out = ''; + let pos = 0; + while ( (pos = s.lastIndexOf(char)) !== -1 ) { + out = s.slice(pos) + out; + s = s.slice(0, pos); + const match = this.reTrailingEscapeChars.exec(s); + if ( match === null ) { continue; } + const tail = (match[0].length & 1) !== 0 + ? match[0].slice(0, -1) + : match[0]; + out = tail + out; + s = s.slice(0, -match[0].length); + } + if ( out === '' ) { return s; } + return s + out; + } + leftWhitespaceCount(s) { + const match = this.reWhitespaceStart.exec(s); + return match === null ? 0 : match[0].length; + } + rightWhitespaceCount(s) { + const match = this.reWhitespaceEnd.exec(s); + return match === null ? 0 : match[1].length; + } + indexOfNextArgSeparator(pattern, separatorCode) { + this.argBeg = this.argEnd = separatorCode !== this.separatorCode + ? this.quoteBeg + 1 + : this.quoteBeg; + this.transform = false; + if ( separatorCode !== this.actualSeparatorCode ) { + this.actualSeparatorCode = separatorCode; + this.actualSeparatorChar = String.fromCharCode(separatorCode); + } + while ( this.argEnd < pattern.length ) { + const pos = pattern.indexOf(this.actualSeparatorChar, this.argEnd); + if ( pos === -1 ) { + return (this.argEnd = pattern.length); + } + if ( this.reOddTrailingEscape.test(pattern.slice(0, pos)) === false ) { + return (this.argEnd = pos); + } + this.transform = true; + this.argEnd = pos + 1; + } + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/asset-viewer.js b/android/app/src/main/assets/extensions/ublock_origin/js/asset-viewer.js new file mode 100644 index 00000000..62f90d27 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/asset-viewer.js @@ -0,0 +1,109 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/* global CodeMirror, uBlockDashboard */ + +import './codemirror/ubo-static-filtering.js'; +import { dom, qs$ } from './dom.js'; + +/******************************************************************************/ + +(async ( ) => { + const subscribeURL = new URL(document.location); + const subscribeParams = subscribeURL.searchParams; + const assetKey = subscribeParams.get('url'); + if ( assetKey === null ) { return; } + + const subscribeElem = subscribeParams.get('subscribe') !== null + ? qs$('#subscribe') + : null; + if ( subscribeElem !== null && subscribeURL.hash !== '#subscribed' ) { + const title = subscribeParams.get('title'); + const promptElem = qs$('#subscribePrompt'); + dom.text(promptElem.children[0], title); + const a = promptElem.children[1]; + dom.text(a, assetKey); + dom.attr(a, 'href', assetKey); + dom.cl.remove(subscribeElem, 'hide'); + } + + const cmEditor = new CodeMirror(qs$('#content'), { + autofocus: true, + foldGutter: true, + gutters: [ + 'CodeMirror-linenumbers', + { className: 'CodeMirror-lintgutter', style: 'width: 11px' }, + ], + lineNumbers: true, + lineWrapping: true, + matchBrackets: true, + maxScanLines: 1, + maximizable: false, + readOnly: true, + styleActiveLine: { + nonEmpty: true, + }, + }); + + uBlockDashboard.patchCodeMirrorEditor(cmEditor); + + vAPI.messaging.send('dashboard', { + what: 'getAutoCompleteDetails' + }).then(hints => { + if ( hints instanceof Object === false ) { return; } + cmEditor.setOption('uboHints', hints); + }); + + vAPI.messaging.send('dashboard', { + what: 'getTrustedScriptletTokens', + }).then(tokens => { + cmEditor.setOption('trustedScriptletTokens', tokens); + }); + + const details = await vAPI.messaging.send('default', { + what : 'getAssetContent', + url: assetKey, + }); + cmEditor.setOption('trustedSource', details.trustedSource === true); + cmEditor.setValue(details && details.content || ''); + + if ( subscribeElem !== null ) { + dom.on('#subscribeButton', 'click', ( ) => { + dom.cl.add(subscribeElem, 'hide'); + vAPI.messaging.send('scriptlets', { + what: 'applyFilterListSelection', + toImport: assetKey, + }).then(( ) => { + vAPI.messaging.send('scriptlets', { + what: 'reloadAllFilters' + }); + }); + }, { once: true }); + } + + if ( details.sourceURL ) { + const a = qs$('.cm-search-widget .sourceURL'); + dom.attr(a, 'href', details.sourceURL); + dom.attr(a, 'title', details.sourceURL); + } + + dom.cl.remove(dom.body, 'loading'); +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/assets.js b/android/app/src/main/assets/extensions/ublock_origin/js/assets.js new file mode 100644 index 00000000..0b56f7cb --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/assets.js @@ -0,0 +1,1485 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import * as sfp from './static-filtering-parser.js'; + +import { broadcast } from './broadcast.js'; +import cacheStorage from './cachestorage.js'; +import { i18n$ } from './i18n.js'; +import logger from './logger.js'; +import { orphanizeString } from './text-utils.js'; +import { ubolog } from './console.js'; +import µb from './background.js'; + +/******************************************************************************/ + +const reIsExternalPath = /^(?:[a-z-]+):\/\//; +const reIsUserAsset = /^user-/; +const errorCantConnectTo = i18n$('errorCantConnectTo'); +const MS_PER_HOUR = 60 * 60 * 1000; +const MS_PER_DAY = 24 * MS_PER_HOUR; +const MINUTES_PER_DAY = 24 * 60; +const EXPIRES_DEFAULT = 7; + +const assets = {}; + +// A hint for various pieces of code to take measures if possible to save +// bandwidth of remote servers. +let remoteServerFriendly = false; + +/******************************************************************************/ + +const stringIsNotEmpty = s => typeof s === 'string' && s !== ''; + +const parseExpires = s => { + const matches = s.match(/(\d+)\s*([wdhm]?)/i); + if ( matches === null ) { return; } + let updateAfter = parseInt(matches[1], 10); + if ( updateAfter === 0 ) { return; } + if ( matches[2] === 'w' ) { + updateAfter *= 7 * 24; + } else if ( matches[2] === 'h' ) { + updateAfter = Math.max(updateAfter, 4) / 24; + } else if ( matches[2] === 'm' ) { + updateAfter = Math.max(updateAfter, 240) / 1440; + } + return updateAfter; +}; + +const extractMetadataFromList = (content, fields) => { + const out = {}; + const head = content.slice(0, 1024); + for ( let field of fields ) { + field = field.replace(/\s+/g, '-'); + const re = new RegExp(`^(?:! *|# +)${field.replace(/-/g, '(?: +|-)')}: *(.+)$`, 'im'); + const match = re.exec(head); + let value = match && match[1].trim() || undefined; + if ( value !== undefined && value.startsWith('%') ) { + value = undefined; + } + field = field.toLowerCase().replace( + /-[a-z]/g, s => s.charAt(1).toUpperCase() + ); + out[field] = value && orphanizeString(value); + } + // Pre-process known fields + if ( out.lastModified ) { + out.lastModified = (new Date(out.lastModified)).getTime() || 0; + } + if ( out.expires ) { + out.expires = parseExpires(out.expires); + } + if ( out.diffExpires ) { + out.diffExpires = parseExpires(out.diffExpires); + } + return out; +}; +assets.extractMetadataFromList = extractMetadataFromList; + +const resourceTimeFromXhr = xhr => { + if ( typeof xhr.response !== 'string' ) { return 0; } + const metadata = extractMetadataFromList(xhr.response, [ + 'Last-Modified' + ]); + return metadata.lastModified || 0; +}; + +const resourceTimeFromParts = (parts, time) => { + const goodParts = parts.filter(part => typeof part === 'object'); + return goodParts.reduce( + (acc, part) => ((part.resourceTime || 0) > acc ? part.resourceTime : acc), + time + ); +}; + +const resourceIsStale = (networkDetails, cacheDetails) => { + if ( typeof networkDetails.resourceTime !== 'number' ) { return false; } + if ( networkDetails.resourceTime === 0 ) { return false; } + if ( typeof cacheDetails.resourceTime !== 'number' ) { return false; } + if ( cacheDetails.resourceTime === 0 ) { return false; } + if ( networkDetails.resourceTime < cacheDetails.resourceTime ) { + ubolog(`Skip ${networkDetails.url}\n\tolder than ${cacheDetails.remoteURL}`); + return true; + } + return false; +}; + +const getUpdateAfterTime = (assetKey, diff = false) => { + const entry = assetCacheRegistry[assetKey]; + if ( entry ) { + if ( diff && typeof entry.diffExpires === 'number' ) { + return entry.diffExpires * MS_PER_DAY; + } + if ( typeof entry.expires === 'number' ) { + return entry.expires * MS_PER_DAY; + } + } + if ( assetSourceRegistry ) { + const entry = assetSourceRegistry[assetKey]; + if ( entry && typeof entry.updateAfter === 'number' ) { + return entry.updateAfter * MS_PER_DAY; + } + } + return EXPIRES_DEFAULT * MS_PER_DAY; // default to 7-day +}; + +const getWriteTime = assetKey => { + const entry = assetCacheRegistry[assetKey]; + if ( entry ) { return entry.writeTime || 0; } + return 0; +}; + +const isDiffUpdatableAsset = content => { + if ( typeof content !== 'string' ) { return false; } + const data = extractMetadataFromList(content, [ + 'Diff-Path', + ]); + return typeof data.diffPath === 'string' && + data.diffPath.startsWith('%') === false; +}; + +const computedPatchUpdateTime = assetKey => { + const entry = assetCacheRegistry[assetKey]; + if ( entry === undefined ) { return 0; } + if ( typeof entry.diffPath !== 'string' ) { return 0; } + if ( typeof entry.diffExpires !== 'number' ) { return 0; } + const match = /(\d+)\.(\d+)\.(\d+)\.(\d+)/.exec(entry.diffPath); + if ( match === null ) { return getWriteTime(); } + const date = new Date(); + date.setUTCFullYear( + parseInt(match[1], 10), + parseInt(match[2], 10) - 1, + parseInt(match[3], 10) + ); + date.setUTCHours(0, parseInt(match[4], 10) + entry.diffExpires * MINUTES_PER_DAY, 0, 0); + return date.getTime(); +}; + +/******************************************************************************/ + +// favorLocal: avoid making network requests whenever possible +// favorOrigin: avoid using CDN URLs whenever possible + +const getContentURLs = (assetKey, options = {}) => { + const contentURLs = []; + const entry = assetSourceRegistry[assetKey]; + if ( entry instanceof Object === false ) { return contentURLs; } + if ( typeof entry.contentURL === 'string' ) { + contentURLs.push(entry.contentURL); + } else if ( Array.isArray(entry.contentURL) ) { + contentURLs.push(...entry.contentURL); + } else if ( reIsExternalPath.test(assetKey) ) { + contentURLs.push(assetKey); + } + if ( options.favorLocal ) { + contentURLs.sort((a, b) => { + if ( reIsExternalPath.test(a) ) { return 1; } + if ( reIsExternalPath.test(b) ) { return -1; } + return 0; + }); + } + if ( options.favorOrigin !== true && Array.isArray(entry.cdnURLs) ) { + const cdnURLs = entry.cdnURLs.slice(); + for ( let i = 0, n = cdnURLs.length; i < n; i++ ) { + const j = Math.floor(Math.random() * n); + if ( j === i ) { continue; } + [ cdnURLs[j], cdnURLs[i] ] = [ cdnURLs[i], cdnURLs[j] ]; + } + if ( options.favorLocal ) { + contentURLs.push(...cdnURLs); + } else { + contentURLs.unshift(...cdnURLs); + } + } + return contentURLs; +}; + +/******************************************************************************/ + +const observers = []; + +assets.addObserver = function(observer) { + if ( observers.indexOf(observer) === -1 ) { + observers.push(observer); + } +}; + +assets.removeObserver = function(observer) { + let pos; + while ( (pos = observers.indexOf(observer)) !== -1 ) { + observers.splice(pos, 1); + } +}; + +const fireNotification = function(topic, details) { + let result; + for ( const observer of observers ) { + const r = observer(topic, details); + if ( r !== undefined ) { result = r; } + } + return result; +}; + +/******************************************************************************/ + +assets.fetch = function(url, options = {}) { + return new Promise((resolve, reject) => { + // Start of executor + /* eslint-disable indent */ + + const timeoutAfter = µb.hiddenSettings.assetFetchTimeout || 30; + const xhr = new XMLHttpRequest(); + let contentLoaded = 0; + + const cleanup = function() { + xhr.removeEventListener('load', onLoadEvent); + xhr.removeEventListener('error', onErrorEvent); + xhr.removeEventListener('abort', onErrorEvent); + xhr.removeEventListener('progress', onProgressEvent); + timeoutTimer.off(); + }; + + const fail = function(details, msg) { + logger.writeOne({ + realm: 'message', + type: 'error', + text: msg, + }); + details.content = ''; + details.error = msg; + reject(details); + }; + + // https://github.com/gorhill/uMatrix/issues/15 + const onLoadEvent = function() { + cleanup(); + // xhr for local files gives status 0, but actually succeeds + const details = { + url, + statusCode: this.status || 200, + statusText: this.statusText || '' + }; + if ( details.statusCode < 200 || details.statusCode >= 300 ) { + return fail(details, `${url}: ${details.statusCode} ${details.statusText}`); + } + details.content = this.response; + details.resourceTime = resourceTimeFromXhr(this); + resolve(details); + }; + + const onErrorEvent = function() { + cleanup(); + fail({ url }, errorCantConnectTo.replace('{{msg}}', url)); + }; + + const onTimeout = function() { + xhr.abort(); + }; + + // https://github.com/gorhill/uBlock/issues/2526 + // - Timeout only when there is no progress. + const onProgressEvent = function(ev) { + if ( ev.loaded === contentLoaded ) { return; } + contentLoaded = ev.loaded; + timeoutTimer.offon({ sec: timeoutAfter }); + }; + + const timeoutTimer = vAPI.defer.create(onTimeout); + + // Be ready for thrown exceptions: + // I am pretty sure it used to work, but now using a URL such as + // `file:///` on Chromium 40 results in an exception being thrown. + try { + xhr.open('get', url, true); + xhr.addEventListener('load', onLoadEvent); + xhr.addEventListener('error', onErrorEvent); + xhr.addEventListener('abort', onErrorEvent); + xhr.addEventListener('progress', onProgressEvent); + xhr.responseType = options.responseType || 'text'; + xhr.send(); + timeoutTimer.on({ sec: timeoutAfter }); + } catch { + onErrorEvent.call(xhr); + } + + /* eslint-enable indent */ + // End of executor + }); +}; + +/******************************************************************************/ + +assets.fetchText = async function(url) { + const isExternal = reIsExternalPath.test(url); + let actualUrl = isExternal ? url : vAPI.getURL(url); + + // https://github.com/gorhill/uBlock/issues/2592 + // Force browser cache to be bypassed, but only for resources which have + // been fetched more than one hour ago. + // https://github.com/uBlockOrigin/uBlock-issues/issues/682#issuecomment-515197130 + // Provide filter list authors a way to completely bypass + // the browser cache. + // https://github.com/gorhill/uBlock/commit/048bfd251c9b#r37972005 + // Use modulo prime numbers to avoid generating the same token at the + // same time across different days. + // Do not bypass browser cache if we are asked to be gentle on remote + // servers. + if ( isExternal && remoteServerFriendly !== true ) { + const cacheBypassToken = + µb.hiddenSettings.updateAssetBypassBrowserCache + ? Math.floor(Date.now() / 1000) % 86413 + : Math.floor(Date.now() / 3600000) % 13; + const queryValue = `_=${cacheBypassToken}`; + if ( actualUrl.indexOf('?') === -1 ) { + actualUrl += '?'; + } else { + actualUrl += '&'; + } + actualUrl += queryValue; + } + + let details = { content: '' }; + try { + details = await assets.fetch(actualUrl); + + // Consider an empty result to be an error + if ( stringIsNotEmpty(details.content) === false ) { + details.content = ''; + } + + // We never download anything else than plain text: discard if + // response appears to be a HTML document: could happen when server + // serves some kind of error page for example. + const text = details.content.trim(); + if ( text.startsWith('<') && text.endsWith('>') ) { + details.content = ''; + details.error = 'assets.fetchText(): Not a text file'; + } + } catch(ex) { + details = ex; + } + + // We want to return the caller's URL, not our internal one which may + // differ from the caller's one. + details.url = url; + + return details; +}; + +/******************************************************************************/ + +// https://github.com/gorhill/uBlock/issues/3331 +// Support the seamless loading of sublists. + +assets.fetchFilterList = async function(mainlistURL) { + const toParsedURL = url => { + try { + return new URL(url.trim()); + } catch { + } + }; + + // https://github.com/NanoAdblocker/NanoCore/issues/239 + // Anything under URL's root directory is allowed to be fetched. The + // URL of a sublist will always be relative to the URL of the parent + // list (instead of the URL of the root list). + let rootDirectoryURL = toParsedURL( + reIsExternalPath.test(mainlistURL) + ? mainlistURL + : vAPI.getURL(mainlistURL) + ); + if ( rootDirectoryURL !== undefined ) { + const pos = rootDirectoryURL.pathname.lastIndexOf('/'); + if ( pos !== -1 ) { + rootDirectoryURL.pathname = + rootDirectoryURL.pathname.slice(0, pos + 1); + } else { + rootDirectoryURL = undefined; + } + } + + const sublistURLs = new Set(); + + // https://github.com/uBlockOrigin/uBlock-issues/issues/1113 + // Process only `!#include` directives which are not excluded by an + // `!#if` directive. + const processIncludeDirectives = function(results) { + const out = []; + const reInclude = /^!#include +(\S+)[^\n\r]*(?:[\n\r]+|$)/gm; + for ( const result of results ) { + if ( typeof result === 'string' ) { + out.push(result); + continue; + } + if ( result instanceof Object === false ) { continue; } + const content = result.content.trimEnd() + '\n'; + const slices = sfp.utils.preparser.splitter( + content, + vAPI.webextFlavor.env + ); + for ( let i = 0, n = slices.length - 1; i < n; i++ ) { + const slice = content.slice(slices[i+0], slices[i+1]); + if ( (i & 1) !== 0 ) { + out.push(slice); + continue; + } + let lastIndex = 0; + for (;;) { + if ( rootDirectoryURL === undefined ) { break; } + const match = reInclude.exec(slice); + if ( match === null ) { break; } + if ( toParsedURL(match[1]) !== undefined ) { continue; } + if ( match[1].indexOf('..') !== -1 ) { continue; } + // Compute nested list path relative to parent list path + const pos = result.url.lastIndexOf('/'); + if ( pos === -1 ) { continue; } + const subURL = result.url.slice(0, pos + 1) + match[1].trim(); + if ( sublistURLs.has(subURL) ) { continue; } + sublistURLs.add(subURL); + out.push( + slice.slice(lastIndex, match.index + match[0].length), + `! >>>>>>>> ${subURL}\n`, + assets.fetchText(subURL), + `! <<<<<<<< ${subURL}\n` + ); + lastIndex = reInclude.lastIndex; + } + out.push(lastIndex === 0 ? slice : slice.slice(lastIndex)); + } + } + return out; + }; + + // https://github.com/AdguardTeam/FiltersRegistry/issues/82 + // Not checking for `errored` status was causing repeated notifications + // to the caller. This can happen when more than one out of multiple + // sublists can't be fetched. + + let allParts = [ + this.fetchText(mainlistURL) + ]; + // Abort processing `include` directives if at least one included sublist + // can't be fetched. + let resourceTime = 0; + do { + allParts = await Promise.all(allParts); + const part = allParts + .find(part => typeof part === 'object' && part.error !== undefined); + if ( part !== undefined ) { + return { url: mainlistURL, content: '', error: part.error }; + } + resourceTime = resourceTimeFromParts(allParts, resourceTime); + // Skip pre-parser directives for diff-updatable assets + if ( allParts.length === 1 && allParts[0] instanceof Object ) { + if ( isDiffUpdatableAsset(allParts[0].content) ) { + allParts[0] = allParts[0].content; + break; + } + } + allParts = processIncludeDirectives(allParts); + } while ( allParts.some(part => typeof part !== 'string') ); + // If we reach this point, this means all fetches were successful. + return { + url: mainlistURL, + resourceTime, + content: allParts.length === 1 + ? allParts[0] + : allParts.join('') + }; +}; + +/******************************************************************************* + + The purpose of the asset source registry is to keep key detail information + about an asset: + - Where to load it from: this may consist of one or more URLs, either local + or remote. + - After how many days an asset should be deemed obsolete -- i.e. in need of + an update. + - The origin and type of an asset. + - The last time an asset was registered. + +**/ + +let assetSourceRegistryPromise; +let assetSourceRegistry = Object.create(null); + +function getAssetSourceRegistry() { + if ( assetSourceRegistryPromise === undefined ) { + assetSourceRegistryPromise = cacheStorage.get( + 'assetSourceRegistry' + ).then(bin => { + if ( bin instanceof Object ) { + if ( bin.assetSourceRegistry instanceof Object ) { + assetSourceRegistry = bin.assetSourceRegistry; + ubolog('Loaded assetSourceRegistry'); + return assetSourceRegistry; + } + } + return assets.fetchText( + µb.assetsBootstrapLocation || µb.assetsJsonPath + ).then(details => { + return details.content !== '' + ? details + : assets.fetchText(µb.assetsJsonPath); + }).then(details => { + updateAssetSourceRegistry(details.content, true); + ubolog('Loaded assetSourceRegistry'); + return assetSourceRegistry; + }); + }); + } + + return assetSourceRegistryPromise; +} + +function registerAssetSource(assetKey, newDict) { + const currentDict = assetSourceRegistry[assetKey] || {}; + for ( const [ k, v ] of Object.entries(newDict) ) { + if ( v === undefined || v === null ) { + delete currentDict[k]; + } else { + currentDict[k] = newDict[k]; + } + } + let contentURL = newDict.contentURL; + if ( contentURL !== undefined ) { + if ( typeof contentURL === 'string' ) { + contentURL = currentDict.contentURL = [ contentURL ]; + } else if ( Array.isArray(contentURL) === false ) { + contentURL = currentDict.contentURL = []; + } + let remoteURLCount = 0; + for ( let i = 0; i < contentURL.length; i++ ) { + if ( reIsExternalPath.test(contentURL[i]) ) { + remoteURLCount += 1; + } + } + currentDict.hasLocalURL = remoteURLCount !== contentURL.length; + currentDict.hasRemoteURL = remoteURLCount !== 0; + } else if ( currentDict.contentURL === undefined ) { + currentDict.contentURL = []; + } + if ( currentDict.submitter ) { + currentDict.submitTime = Date.now(); // To detect stale entries + } + assetSourceRegistry[assetKey] = currentDict; +} + +function unregisterAssetSource(assetKey) { + assetCacheRemove(assetKey); + delete assetSourceRegistry[assetKey]; +} + +const saveAssetSourceRegistry = (( ) => { + const save = ( ) => { + timer.off(); + cacheStorage.set({ assetSourceRegistry }); + }; + const timer = vAPI.defer.create(save); + return function(lazily) { + if ( lazily ) { + timer.offon(500); + } else { + save(); + } + }; +})(); + +async function assetSourceGetDetails(assetKey) { + await getAssetSourceRegistry(); + const entry = assetSourceRegistry[assetKey]; + if ( entry === undefined ) { return; } + return entry; +} + +function updateAssetSourceRegistry(json, silent = false) { + let newDict; + try { + newDict = JSON.parse(json); + newDict['assets.json'].defaultListset = + Array.from(Object.entries(newDict)) + .filter(a => a[1].content === 'filters' && a[1].off === undefined) + .map(a => a[0]); + } catch { + } + if ( newDict instanceof Object === false ) { return; } + + const oldDict = assetSourceRegistry; + + fireNotification('assets.json-updated', { newDict, oldDict }); + + // Remove obsolete entries (only those which were built-in). + for ( const assetKey in oldDict ) { + if ( + newDict[assetKey] === undefined && + oldDict[assetKey].submitter === undefined + ) { + unregisterAssetSource(assetKey); + } + } + // Add/update existing entries. Notify of new asset sources. + for ( const assetKey in newDict ) { + if ( oldDict[assetKey] === undefined && !silent ) { + fireNotification( + 'builtin-asset-source-added', + { assetKey: assetKey, entry: newDict[assetKey] } + ); + } + registerAssetSource(assetKey, newDict[assetKey]); + } + saveAssetSourceRegistry(); +} + +assets.registerAssetSource = async function(assetKey, details) { + await getAssetSourceRegistry(); + registerAssetSource(assetKey, details); + saveAssetSourceRegistry(true); +}; + +assets.unregisterAssetSource = async function(assetKey) { + await getAssetSourceRegistry(); + unregisterAssetSource(assetKey); + saveAssetSourceRegistry(true); +}; + +/******************************************************************************* + + The purpose of the asset cache registry is to keep track of all assets + which have been persisted into the local cache. + +**/ + +const assetCacheRegistryStartTime = Date.now(); +let assetCacheRegistryPromise; +let assetCacheRegistry = {}; + +function getAssetCacheRegistry() { + if ( assetCacheRegistryPromise !== undefined ) { + return assetCacheRegistryPromise; + } + assetCacheRegistryPromise = cacheStorage.get( + 'assetCacheRegistry' + ).then(bin => { + if ( bin instanceof Object === false ) { return; } + if ( bin.assetCacheRegistry instanceof Object === false ) { return; } + if ( Object.keys(assetCacheRegistry).length !== 0 ) { + return console.error('getAssetCacheRegistry(): assetCacheRegistry reassigned!'); + } + ubolog('Loaded assetCacheRegistry'); + assetCacheRegistry = bin.assetCacheRegistry; + }).then(( ) => + assetCacheRegistry + ); + return assetCacheRegistryPromise; +} + +const saveAssetCacheRegistry = (( ) => { + const save = ( ) => { + timer.off(); + return cacheStorage.set({ assetCacheRegistry }); + }; + const timer = vAPI.defer.create(save); + return (throttle = 0) => { + if ( throttle === 0 ) { + return save(); + } + timer.offon({ sec: throttle }); + }; +})(); + +async function assetCacheRead(assetKey, updateReadTime = false) { + const t0 = Date.now(); + const internalKey = `cache/${assetKey}`; + + const reportBack = function(content) { + if ( content instanceof Blob ) { content = ''; } + const details = { assetKey, content }; + if ( content === '' || content === undefined ) { + details.error = 'ENOTFOUND'; + } + return details; + }; + + const [ , bin ] = await Promise.all([ + getAssetCacheRegistry(), + cacheStorage.get(internalKey), + ]); + + if ( µb.readyToFilter !== true ) { + µb.supportStats.maxAssetCacheWait = Math.max( + Date.now() - t0, + parseInt(µb.supportStats.maxAssetCacheWait, 10) || 0 + ) + ' ms'; + } + + if ( bin instanceof Object === false ) { return reportBack(''); } + if ( Object.hasOwn(bin, internalKey) === false ) { return reportBack(''); } + + const entry = assetCacheRegistry[assetKey]; + if ( entry === undefined ) { return reportBack(''); } + + entry.readTime = Date.now(); + if ( updateReadTime ) { + saveAssetCacheRegistry(23); + } + + return reportBack(bin[internalKey]); +} + +async function assetCacheWrite(assetKey, content, options = {}) { + if ( content === '' || content === undefined ) { + return assetCacheRemove(assetKey); + } + + const cacheDict = await getAssetCacheRegistry(); + + const { resourceTime, url } = options; + const entry = cacheDict[assetKey] || {}; + entry.writeTime = entry.readTime = Date.now(); + entry.resourceTime = resourceTime || 0; + if ( typeof url === 'string' ) { + entry.remoteURL = url; + } + cacheDict[assetKey] = entry; + + await cacheStorage.set({ [`cache/${assetKey}`]: content }); + + saveAssetCacheRegistry(3); + + const result = { assetKey, content }; + // https://github.com/uBlockOrigin/uBlock-issues/issues/248 + if ( options.silent !== true ) { + fireNotification('after-asset-updated', result); + } + return result; +} + +async function assetCacheRemove(pattern, options = {}) { + const cacheDict = await getAssetCacheRegistry(); + const removedEntries = []; + const removedContent = []; + for ( const assetKey in cacheDict ) { + if ( pattern instanceof RegExp ) { + if ( pattern.test(assetKey) === false ) { continue; } + } else if ( typeof pattern === 'string' ) { + if ( assetKey !== pattern ) { continue; } + } + removedEntries.push(assetKey); + removedContent.push(`cache/${assetKey}`); + delete cacheDict[assetKey]; + } + if ( options.janitor && pattern instanceof RegExp ) { + const re = new RegExp( + pattern.source.replace(/^\^/, '^cache\\/'), + pattern.flags + ); + const keys = await cacheStorage.keys(re); + for ( const key of keys ) { + removedContent.push(key); + ubolog(`Removing stray ${key}`); + } + } + if ( removedContent.length !== 0 ) { + await Promise.all([ + cacheStorage.remove(removedContent), + cacheStorage.set({ assetCacheRegistry }), + ]); + } + for ( let i = 0; i < removedEntries.length; i++ ) { + fireNotification('after-asset-updated', { + assetKey: removedEntries[i] + }); + } +} + +async function assetCacheGetDetails(assetKey) { + const cacheDict = await getAssetCacheRegistry(); + const entry = cacheDict[assetKey]; + if ( entry === undefined ) { return; } + return entry; +} + +async function assetCacheSetDetails(assetKey, details) { + const cacheDict = await getAssetCacheRegistry(); + const entry = cacheDict[assetKey]; + if ( entry === undefined ) { return; } + let modified = false; + for ( const [ k, v ] of Object.entries(details) ) { + if ( v === undefined ) { + if ( entry[k] !== undefined ) { + delete entry[k]; + modified = true; + continue; + } + } + if ( v !== entry[k] ) { + entry[k] = v; + modified = true; + } + } + if ( modified ) { + saveAssetCacheRegistry(3); + } +} + +async function assetCacheMarkAsDirty(pattern, exclude) { + const cacheDict = await getAssetCacheRegistry(); + let mustSave = false; + for ( const assetKey in cacheDict ) { + if ( pattern instanceof RegExp ) { + if ( pattern.test(assetKey) === false ) { continue; } + } else if ( typeof pattern === 'string' ) { + if ( assetKey !== pattern ) { continue; } + } else if ( Array.isArray(pattern) ) { + if ( pattern.indexOf(assetKey) === -1 ) { continue; } + } + if ( exclude instanceof RegExp ) { + if ( exclude.test(assetKey) ) { continue; } + } else if ( typeof exclude === 'string' ) { + if ( assetKey === exclude ) { continue; } + } else if ( Array.isArray(exclude) ) { + if ( exclude.indexOf(assetKey) !== -1 ) { continue; } + } + const cacheEntry = cacheDict[assetKey]; + if ( !cacheEntry.writeTime ) { continue; } + cacheDict[assetKey].writeTime = 0; + mustSave = true; + } + if ( mustSave ) { + cacheStorage.set({ assetCacheRegistry }); + } +} + +/******************************************************************************* + + User assets are NOT persisted in the cache storage. User assets are + recognized by the asset key which always starts with 'user-'. + + TODO(seamless migration): + Can remove instances of old user asset keys when I am confident all users + are using uBO v1.11 and beyond. + +**/ + +/******************************************************************************* + + User assets are NOT persisted in the cache storage. User assets are + recognized by the asset key which always starts with 'user-'. + +**/ + +const readUserAsset = async function(assetKey) { + const bin = await vAPI.storage.get(assetKey); + const content = + bin instanceof Object && typeof bin[assetKey] === 'string' + ? bin[assetKey] + : ''; + return { assetKey, content }; +}; + +const saveUserAsset = function(assetKey, content) { + return vAPI.storage.set({ [assetKey]: content }).then(( ) => { + return { assetKey, content }; + }); +}; + +/******************************************************************************/ + +assets.get = async function(assetKey, options = {}) { + if ( assetKey === µb.userFiltersPath ) { + return readUserAsset(assetKey); + } + + // https://github.com/uBlockOrigin/uBlock-issues/issues/3761 + if ( µb.readyToFilter !== true ) { + if ( options.favorLocal === undefined ) { + options.favorLocal = true; + } + } + + let assetDetails = {}; + + const reportBack = (content, url = '', err = undefined) => { + const details = { assetKey, content }; + if ( err !== undefined ) { + details.error = assetDetails.lastError = err; + } else { + assetDetails.lastError = undefined; + } + if ( options.needSourceURL ) { + if ( + url === '' && + assetCacheRegistry instanceof Object && + assetCacheRegistry[assetKey] instanceof Object + ) { + details.sourceURL = assetCacheRegistry[assetKey].remoteURL; + } + if ( reIsExternalPath.test(url) ) { + details.sourceURL = url; + } + } + return details; + }; + + // Skip read-time property for non-updatable assets: the property is + // completely unused for such assets and thus there is no point incurring + // storage write overhead at launch when reading compiled or selfie assets. + const updateReadTime = /^(?:compiled|selfie)\//.test(assetKey) === false; + + const details = await assetCacheRead(assetKey, updateReadTime); + if ( details.content !== '' ) { + return reportBack(details.content); + } + + const assetRegistry = await getAssetSourceRegistry(); + + assetDetails = assetRegistry[assetKey] || {}; + + const contentURLs = getContentURLs(assetKey, options); + if ( contentURLs.length === 0 && reIsExternalPath.test(assetKey) ) { + assetDetails.content = 'filters'; + contentURLs.push(assetKey); + } + + let error = 'ENOTFOUND'; + for ( const contentURL of contentURLs ) { + ubolog(`Fetching ${contentURL} from remote server `); + const details = assetDetails.content === 'filters' + ? await assets.fetchFilterList(contentURL) + : await assets.fetchText(contentURL); + if ( details.error !== undefined ) { + error = details.error; + } + if ( details.content === '' ) { continue; } + if ( reIsExternalPath.test(contentURL) && options.dontCache !== true ) { + assetCacheWrite(assetKey, details.content, { + url: contentURL, + silent: options.silent === true, + }); + registerAssetSource(assetKey, { error: undefined }); + if ( assetDetails.content === 'filters' ) { + const metadata = extractMetadataFromList(details.content, [ + 'Last-Modified', + 'Expires', + 'Diff-Name', + 'Diff-Path', + 'Diff-Expires', + ]); + metadata.diffUpdated = undefined; + assetCacheSetDetails(assetKey, metadata); + } + } + return reportBack(details.content, contentURL); + } + if ( assetRegistry[assetKey] !== undefined ) { + registerAssetSource(assetKey, { + error: { time: Date.now(), error } + }); + } + return reportBack('', '', error); +}; + +/******************************************************************************/ + +async function getRemote(assetKey, options = {}) { + const [ + assetDetails = {}, + cacheDetails = {}, + ] = await Promise.all([ + assetSourceGetDetails(assetKey), + assetCacheGetDetails(assetKey), + ]); + + let error; + let stale = false; + + const reportBack = function(content, url = '', err = '') { + const details = { assetKey, content, url }; + if ( err !== '') { + details.error = assetDetails.lastError = err; + } else { + assetDetails.lastError = undefined; + } + return details; + }; + + for ( const contentURL of getContentURLs(assetKey, options) ) { + if ( reIsExternalPath.test(contentURL) === false ) { continue; } + + const result = assetDetails.content === 'filters' + ? await assets.fetchFilterList(contentURL) + : await assets.fetchText(contentURL); + + // Failure + if ( stringIsNotEmpty(result.content) === false ) { + error = result.statusText; + if ( result.statusCode === 0 ) { + error = 'network error'; + } + continue; + } + + error = undefined; + + // If fetched resource is older than cached one, ignore + if ( options.favorOrigin !== true ) { + stale = resourceIsStale(result, cacheDetails); + if ( stale ) { continue; } + } + + // Success + assetCacheWrite(assetKey, result.content, { + url: contentURL, + resourceTime: result.resourceTime || 0, + }); + + if ( assetDetails.content === 'filters' ) { + const metadata = extractMetadataFromList(result.content, [ + 'Last-Modified', + 'Expires', + 'Diff-Name', + 'Diff-Path', + 'Diff-Expires', + ]); + metadata.diffUpdated = undefined; + assetCacheSetDetails(assetKey, metadata); + } + + registerAssetSource(assetKey, { birthtime: undefined, error: undefined }); + return reportBack(result.content, contentURL); + } + + if ( error !== undefined ) { + registerAssetSource(assetKey, { error: { time: Date.now(), error } }); + return reportBack('', '', 'ENOTFOUND'); + } + + if ( stale ) { + assetCacheSetDetails(assetKey, { writeTime: cacheDetails.resourceTime }); + } + + return reportBack(''); +} + +/******************************************************************************/ + +assets.put = async function(assetKey, content) { + return reIsUserAsset.test(assetKey) + ? await saveUserAsset(assetKey, content) + : await assetCacheWrite(assetKey, content); +}; + +/******************************************************************************/ + +assets.toCache = async function(assetKey, content) { + return assetCacheWrite(assetKey, content); +}; + +assets.fromCache = async function(assetKey) { + const details = await assetCacheRead(assetKey); + return details && details.content; +}; + +/******************************************************************************/ + +assets.metadata = async function() { + await Promise.all([ + getAssetSourceRegistry(), + getAssetCacheRegistry(), + ]); + + const assetDict = JSON.parse(JSON.stringify(assetSourceRegistry)); + const cacheDict = assetCacheRegistry; + const now = Date.now(); + for ( const assetKey in assetDict ) { + const assetEntry = assetDict[assetKey]; + const cacheEntry = cacheDict[assetKey]; + if ( + assetEntry.content === 'filters' && + assetEntry.external !== true + ) { + assetEntry.isDefault = + assetEntry.off === undefined || + assetEntry.off === true && + µb.listMatchesEnvironment(assetEntry); + } + if ( cacheEntry ) { + assetEntry.cached = true; + assetEntry.writeTime = cacheEntry.writeTime; + const obsoleteAfter = cacheEntry.writeTime + getUpdateAfterTime(assetKey); + assetEntry.obsolete = obsoleteAfter < now; + assetEntry.remoteURL = cacheEntry.remoteURL; + if ( cacheEntry.diffUpdated ) { + assetEntry.diffUpdated = cacheEntry.diffUpdated; + } + } else if ( + assetEntry.contentURL && + assetEntry.contentURL.length !== 0 + ) { + assetEntry.writeTime = 0; + assetEntry.obsolete = true; + } + } + + return assetDict; +}; + +/******************************************************************************/ + +assets.purge = assetCacheMarkAsDirty; + +assets.remove = function(...args) { + return assetCacheRemove(...args); +}; + +assets.rmrf = function() { + return assetCacheRemove(/./); +}; + +/******************************************************************************/ + +assets.getUpdateAges = async function(conditions = {}) { + const assetDict = await assets.metadata(); + const now = Date.now(); + const out = []; + for ( const [ assetKey, asset ] of Object.entries(assetDict) ) { + if ( asset.hasRemoteURL !== true ) { continue; } + const tokens = conditions[asset.content]; + if ( Array.isArray(tokens) === false ) { continue; } + if ( tokens.includes('*') === false ) { + if ( tokens.includes(assetKey) === false ) { continue; } + } + const age = now - (asset.writeTime || 0); + out.push({ + assetKey, + age, + ageNormalized: age / Math.max(1, getUpdateAfterTime(assetKey)), + }); + } + return out; +}; + +/******************************************************************************/ + +// Asset updater area. +const updaterAssetDelayDefault = 120000; +const updaterUpdated = []; +const updaterFetched = new Set(); + +let updaterStatus; +let updaterAssetDelay = updaterAssetDelayDefault; +let updaterAuto = false; + +const getAssetDiffDetails = assetKey => { + const out = { assetKey }; + const cacheEntry = assetCacheRegistry[assetKey]; + if ( cacheEntry === undefined ) { return; } + out.patchPath = cacheEntry.diffPath; + if ( out.patchPath === undefined ) { return; } + const match = /#.+$/.exec(out.patchPath); + if ( match !== null ) { + out.diffName = match[0].slice(1); + } else { + out.diffName = cacheEntry.diffName; + } + if ( out.diffName === undefined ) { return; } + out.diffExpires = getUpdateAfterTime(assetKey, true); + out.lastModified = cacheEntry.lastModified; + out.writeTime = cacheEntry.writeTime; + const assetEntry = assetSourceRegistry[assetKey]; + if ( assetEntry === undefined ) { return; } + if ( assetEntry.content !== 'filters' ) { return; } + if ( Array.isArray(assetEntry.cdnURLs) ) { + out.cdnURLs = assetEntry.cdnURLs.slice(); + } else if ( reIsExternalPath.test(assetKey) ) { + out.cdnURLs = [ assetKey ]; + } else if ( typeof assetEntry.contentURL === 'string' ) { + out.cdnURLs = [ assetEntry.contentURL ]; + } else if ( Array.isArray(assetEntry.contentURL) ) { + out.cdnURLs = assetEntry.contentURL.slice(0).filter(url => + reIsExternalPath.test(url) + ); + } + if ( Array.isArray(out.cdnURLs) === false ) { return; } + if ( out.cdnURLs.length === 0 ) { return; } + if ( Array.isArray(assetEntry.patchURLs) ) { + out.patchURLs = assetEntry.patchURLs.slice(); + } + return out; +}; + +async function diffUpdater() { + if ( updaterAuto === false ) { return; } + if ( µb.hiddenSettings.differentialUpdate === false ) { return; } + const toUpdate = await getUpdateCandidates(); + const now = Date.now(); + const toHardUpdate = []; + const toSoftUpdate = []; + while ( toUpdate.length !== 0 ) { + const assetKey = toUpdate.shift(); + const assetDetails = getAssetDiffDetails(assetKey); + if ( assetDetails === undefined ) { continue; } + assetDetails.what = 'update'; + const computedUpdateTime = computedPatchUpdateTime(assetKey); + if ( computedUpdateTime !== 0 && computedUpdateTime <= now ) { + assetDetails.fetch = true; + toHardUpdate.push(assetDetails); + } else { + assetDetails.fetch = false; + toSoftUpdate.push(assetDetails); + } + } + if ( toHardUpdate.length === 0 ) { return; } + ubolog('Diff updater: cycle start'); + return new Promise(resolve => { + let pendingOps = 0; + const terminate = error => { + worker.terminate(); + resolve(); + if ( typeof error !== 'string' ) { return; } + ubolog(`Diff updater: terminate because ${error}`); + }; + const checkAndCorrectDiffPath = data => { + if ( typeof data.text !== 'string' ) { return; } + if ( data.text === '' ) { return; } + const metadata = extractMetadataFromList(data.text, [ 'Diff-Path' ]); + if ( metadata instanceof Object === false ) { return; } + if ( metadata.diffPath === data.patchPath ) { return; } + assetCacheSetDetails(data.assetKey, metadata); + }; + const worker = new Worker('js/diff-updater.js'); + worker.onmessage = ev => { + const data = ev.data || {}; + if ( data.what === 'ready' ) { + ubolog('Diff updater: hard updating', toHardUpdate.map(v => v.assetKey).join()); + while ( toHardUpdate.length !== 0 ) { + const assetDetails = toHardUpdate.shift(); + assetDetails.fetch = true; + worker.postMessage(assetDetails); + pendingOps += 1; + } + return; + } + if ( data.what === 'broken' ) { + terminate(data.error); + return; + } + if ( data.status === 'needtext' ) { + ubolog('Diff updater: need text for', data.assetKey); + assetCacheRead(data.assetKey).then(result => { + // https://bugzilla.mozilla.org/show_bug.cgi?id=1929326#c9 + // Must never be set to undefined! + data.text = result.content || ''; + data.status = undefined; + checkAndCorrectDiffPath(data); + worker.postMessage(data); + }); + return; + } + if ( data.status === 'updated' ) { + ubolog(`Diff updater: successfully patched ${data.assetKey} using ${data.patchURL} (${data.patchSize})`); + const metadata = extractMetadataFromList(data.text, [ + 'Last-Modified', + 'Expires', + 'Diff-Name', + 'Diff-Path', + 'Diff-Expires', + ]); + assetCacheWrite(data.assetKey, data.text, { + resourceTime: metadata.lastModified || 0, + }); + metadata.diffUpdated = true; + assetCacheSetDetails(data.assetKey, metadata); + updaterUpdated.push(data.assetKey); + } else if ( data.error ) { + ubolog(`Diff updater: failed to update ${data.assetKey} using ${data.patchPath}\n\treason: ${data.error}`); + } else if ( data.status === 'nopatch-yet' || data.status === 'nodiff' ) { + ubolog(`Diff updater: skip update of ${data.assetKey} using ${data.patchPath}\n\treason: ${data.status}`); + assetCacheSetDetails(data.assetKey, { writeTime: data.writeTime }); + broadcast({ + what: 'assetUpdated', + key: data.assetKey, + cached: true, + }); + } else { + ubolog(`Diff updater: ${data.assetKey} / ${data.patchPath} / ${data.status}`); + } + pendingOps -= 1; + if ( pendingOps === 0 && toSoftUpdate.length !== 0 ) { + ubolog('Diff updater: soft updating', toSoftUpdate.map(v => v.assetKey).join()); + while ( toSoftUpdate.length !== 0 ) { + worker.postMessage(toSoftUpdate.shift()); + pendingOps += 1; + } + } + if ( pendingOps !== 0 ) { return; } + ubolog('Diff updater: cycle complete'); + terminate(); + }; + }).catch(reason => { + ubolog(`Diff updater: ${reason}`); + }); +} + +function updateFirst() { + ubolog('Updater: cycle start'); + ubolog('Updater: prefer', updaterAuto ? 'CDNs' : 'origin'); + updaterStatus = 'updating'; + updaterFetched.clear(); + updaterUpdated.length = 0; + diffUpdater().catch(reason => { + ubolog(reason); + }).finally(( ) => { + updateNext(); + }); +} + +async function getUpdateCandidates() { + const [ assetDict, cacheDict ] = await Promise.all([ + getAssetSourceRegistry(), + getAssetCacheRegistry(), + ]); + const toUpdate = []; + for ( const assetKey in assetDict ) { + const assetEntry = assetDict[assetKey]; + if ( assetEntry.hasRemoteURL !== true ) { continue; } + if ( updaterFetched.has(assetKey) ) { continue; } + const cacheEntry = cacheDict[assetKey]; + if ( + fireNotification('before-asset-updated', { + assetKey, + type: assetEntry.content + }) === true + ) { + toUpdate.push(assetKey); + continue; + } + // This will remove a cached asset when it's no longer in use. + if ( cacheEntry && cacheEntry.readTime < assetCacheRegistryStartTime ) { + assetCacheRemove(assetKey); + } + } + // https://github.com/uBlockOrigin/uBlock-issues/issues/1165 + // Update most obsolete asset first. + toUpdate.sort((a, b) => { + const ta = cacheDict[a] !== undefined ? cacheDict[a].writeTime : 0; + const tb = cacheDict[b] !== undefined ? cacheDict[b].writeTime : 0; + return ta - tb; + }); + return toUpdate; +} + +async function updateNext() { + const toUpdate = await getUpdateCandidates(); + const now = Date.now(); + const toHardUpdate = []; + + while ( toUpdate.length !== 0 ) { + const assetKey = toUpdate.shift(); + const writeTime = getWriteTime(assetKey); + const updateDelay = getUpdateAfterTime(assetKey); + if ( (writeTime + updateDelay) > now ) { continue; } + toHardUpdate.push(assetKey); + } + if ( toHardUpdate.length === 0 ) { + return updateDone(); + } + + const assetKey = toHardUpdate.pop(); + updaterFetched.add(assetKey); + + // In auto-update context, be gentle on remote servers. + remoteServerFriendly = updaterAuto; + + let result; + if ( assetKey !== 'assets.json' || µb.hiddenSettings.debugAssetsJson !== true ) { + result = await getRemote(assetKey, { favorOrigin: updaterAuto === false }); + } else { + result = await assets.fetchText(µb.assetsJsonPath); + result.assetKey = 'assets.json'; + } + + remoteServerFriendly = false; + + if ( result.error ) { + ubolog(`Full updater: failed to update ${assetKey}`); + fireNotification('asset-update-failed', { assetKey: result.assetKey }); + } else { + ubolog(`Full updater: successfully updated ${assetKey}`); + updaterUpdated.push(result.assetKey); + if ( result.assetKey === 'assets.json' && result.content !== '' ) { + updateAssetSourceRegistry(result.content); + } + } + + updaterTimer.on(updaterAssetDelay); +} + +const updaterTimer = vAPI.defer.create(updateNext); + +function updateDone() { + const assetKeys = updaterUpdated.slice(0); + updaterFetched.clear(); + updaterUpdated.length = 0; + updaterStatus = undefined; + updaterAuto = false; + updaterAssetDelay = updaterAssetDelayDefault; + ubolog('Updater: cycle end'); + if ( assetKeys.length ) { + ubolog(`Updater: ${assetKeys.join()} were updated`); + } + fireNotification('after-assets-updated', { assetKeys }); +} + +assets.updateStart = function(details) { + const oldUpdateDelay = updaterAssetDelay; + const newUpdateDelay = typeof details.fetchDelay === 'number' + ? details.fetchDelay + : updaterAssetDelayDefault; + updaterAssetDelay = Math.min(oldUpdateDelay, newUpdateDelay); + updaterAuto = details.auto === true; + if ( updaterStatus !== undefined ) { + if ( newUpdateDelay < oldUpdateDelay ) { + updaterTimer.offon(updaterAssetDelay); + } + return; + } + updateFirst(); +}; + +assets.updateStop = function() { + updaterTimer.off(); + if ( updaterStatus !== undefined ) { + updateDone(); + } +}; + +assets.isUpdating = function() { + return updaterStatus === 'updating' && + updaterAssetDelay <= µb.hiddenSettings.manualUpdateAssetFetchPeriod; +}; + +/******************************************************************************/ + +export default assets; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/background.js b/android/app/src/main/assets/extensions/ublock_origin/js/background.js new file mode 100644 index 00000000..ee352f15 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/background.js @@ -0,0 +1,402 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +import { + domainFromHostname, + hostnameFromURI, + originFromURI, +} from './uri-utils.js'; + +import { FilteringContext } from './filtering-context.js'; +import logger from './logger.js'; +import { ubologSet } from './console.js'; + +/******************************************************************************/ + +// Not all platforms may have properly declared vAPI.webextFlavor. + +if ( vAPI.webextFlavor === undefined ) { + vAPI.webextFlavor = { major: 0, soup: new Set([ 'ublock' ]) }; +} + +/******************************************************************************/ + +const hiddenSettingsDefault = { + allowGenericProceduralFilters: false, + assetFetchTimeout: 30, + autoCommentFilterTemplate: '{{date}} {{origin}}', + autoUpdateAssetFetchPeriod: 5, + autoUpdateDelayAfterLaunch: 37, + autoUpdatePeriod: 1, + benchmarkDatasetURL: 'unset', + blockingProfiles: '11111/#F00 11010/#C0F 11001/#00F 00001', + cacheStorageCompression: true, + cacheStorageCompressionThreshold: 65536, + cacheStorageMultithread: 2, + cacheControlForFirefox1376932: 'unset', + cloudStorageCompression: true, + cnameIgnoreList: 'unset', + cnameIgnore1stParty: true, + cnameIgnoreExceptions: true, + cnameIgnoreRootDocument: true, + cnameReplayFullURL: false, + consoleLogLevel: 'unset', + debugAssetsJson: false, + debugScriptlets: false, + debugScriptletInjector: false, + differentialUpdate: true, + disableWebAssembly: false, + dnsCacheTTL: 600, + dnsResolveEnabled: true, + extensionUpdateForceReload: false, + filterAuthorMode: false, + loggerPopupType: 'popup', + manualUpdateAssetFetchPeriod: 500, + modifyWebextFlavor: 'unset', + noScriptingCSP: 'script-src http: https:', + popupFontSize: 'unset', + popupPanelDisabledSections: 0, + popupPanelHeightMode: 0, + popupPanelLockedSections: 0, + popupPanelOrientation: 'unset', + requestJournalProcessPeriod: 1000, + requestStatsDisabled: false, + selfieDelayInSeconds: 53, + strictBlockingBypassDuration: 120, + toolbarWarningTimeout: 60, + trustedListPrefixes: 'ublock-', + uiPopupConfig: 'unset', + uiStyles: 'unset', + updateAssetBypassBrowserCache: false, + userResourcesLocation: 'unset', +}; + +if ( vAPI.webextFlavor.soup.has('devbuild') ) { + hiddenSettingsDefault.consoleLogLevel = 'info'; + hiddenSettingsDefault.cacheStorageAPI = 'unset'; + ubologSet(true); +} + +const userSettingsDefault = { + advancedUserEnabled: false, + alwaysDetachLogger: true, + autoUpdate: true, + cloudStorageEnabled: false, + cnameUncloakEnabled: true, + collapseBlocked: true, + colorBlindFriendly: false, + contextMenuEnabled: true, + uiAccentCustom: false, + uiAccentCustom0: '#aca0f7', + uiTheme: 'auto', + externalLists: '', + firewallPaneMinimized: true, + hyperlinkAuditingDisabled: true, + ignoreGenericCosmeticFilters: false, + importedLists: [], + largeMediaSize: 50, + parseAllABPHideFilters: true, + popupPanelSections: 0b111, + prefetchingDisabled: true, + requestLogMaxEntries: 1000, + showIconBadge: true, + suspendUntilListsAreLoaded: vAPI.Net.canSuspend(), + tooltipsDisabled: false, + userFiltersTrusted: false, + webrtcIPAddressHidden: false, +}; + +const dynamicFilteringDefault = [ + 'behind-the-scene * * noop', + 'behind-the-scene * image noop', + 'behind-the-scene * 3p noop', + 'behind-the-scene * inline-script noop', + 'behind-the-scene * 1p-script noop', + 'behind-the-scene * 3p-script noop', + 'behind-the-scene * 3p-frame noop', +]; + +const hostnameSwitchesDefault = [ + 'no-large-media: behind-the-scene false', +]; +// https://github.com/LiCybora/NanoDefenderFirefox/issues/196 +if ( vAPI.webextFlavor.soup.has('firefox') ) { + hostnameSwitchesDefault.push('no-csp-reports: * true'); +} + +const µBlock = { // jshint ignore:line + alarmQueue: [], + + userSettingsDefault, + userSettings: Object.assign({}, userSettingsDefault), + + hiddenSettingsDefault, + hiddenSettingsAdmin: {}, + hiddenSettings: Object.assign({}, hiddenSettingsDefault), + + dynamicFilteringDefault, + hostnameSwitchesDefault, + + noDashboard: false, + + // Features detection. + privacySettingsSupported: vAPI.browserSettings instanceof Object, + cloudStorageSupported: vAPI.cloud instanceof Object, + canFilterResponseData: typeof browser.webRequest.filterResponseData === 'function', + + // https://github.com/chrisaljoudi/uBlock/issues/180 + // Whitelist directives need to be loaded once the PSL is available + netWhitelist: new Map(), + netWhitelistModifyTime: 0, + netWhitelistDefault: [ + 'chrome-extension-scheme', + 'moz-extension-scheme', + ], + + requestStats: { + blockedCount: 0, + allowedCount: 0, + }, + + // Read-only + systemSettings: { + compiledMagic: 72, // Increase when compiled format changes + selfieMagic: 72, // Increase when selfie format changes + }, + + // https://github.com/uBlockOrigin/uBlock-issues/issues/759#issuecomment-546654501 + // The assumption is that cache storage state reflects whether + // compiled or selfie assets are available or not. The properties + // below is to no longer rely on this assumption -- though it's still + // not clear how the assumption could be wrong, and it's still not + // clear whether relying on those properties will really solve the + // issue. It's just an attempt at hardening. + compiledFormatChanged: false, + selfieIsInvalid: false, + + restoreBackupSettings: { + lastRestoreFile: '', + lastRestoreTime: 0, + lastBackupFile: '', + lastBackupTime: 0, + }, + + commandShortcuts: new Map(), + + // Allows to fully customize uBO's assets, typically set through admin + // settings. The content of 'assets.json' will also tell which filter + // lists to enable by default when uBO is first installed. + assetsBootstrapLocation: undefined, + + assetsJsonPath: vAPI.webextFlavor.soup.has('devbuild') + ? '/assets/assets.dev.json' + : '/assets/assets.json', + userFiltersPath: 'user-filters', + pslAssetKey: 'public_suffix_list.dat', + + selectedFilterLists: [], + availableFilterLists: {}, + badLists: new Map(), + + inMemoryFilters: [], + inMemoryFiltersCompiled: '', + + // https://github.com/uBlockOrigin/uBlock-issues/issues/974 + // This can be used to defer filtering decision-making. + readyToFilter: false, + + supportStats: { + allReadyAfter: '?', + maxAssetCacheWait: '?', + }, + + pageStores: new Map(), + pageStoresToken: 0, + + storageQuota: vAPI.storage.QUOTA_BYTES, + storageUsed: 0, + + noopFunc: function(){}, + + apiErrorCount: 0, + + maybeGoodPopup: { + tabId: 0, + url: '', + }, + + epickerArgs: { + eprom: null, + mouse: false, + target: '', + zap: false, + }, + + scriptlets: {}, + + cspNoInlineScript: "script-src 'unsafe-eval' * blob: data:", + cspNoInlineFont: 'font-src *', + + liveBlockingProfiles: [], + blockingProfileColorCache: new Map(), + parsedTrustedListPrefixes: [], + uiAccentStylesheet: '', +}; + +µBlock.isReadyPromise = new Promise(resolve => { + µBlock.isReadyResolve = resolve; +}); + +µBlock.domainFromHostname = domainFromHostname; +µBlock.hostnameFromURI = hostnameFromURI; + +µBlock.FilteringContext = class extends FilteringContext { + duplicate() { + return (new µBlock.FilteringContext(this)); + } + + fromTabId(tabId) { + const tabContext = µBlock.tabContextManager.mustLookup(tabId); + this.tabOrigin = tabContext.origin; + this.tabHostname = tabContext.rootHostname; + this.tabDomain = tabContext.rootDomain; + this.tabId = tabContext.tabId; + return this; + } + + maybeFromDocumentURL(documentUrl) { + if ( documentUrl === undefined ) { return; } + if ( documentUrl.startsWith(this.tabOrigin) ) { return; } + this.tabOrigin = originFromURI(µBlock.normalizeTabURL(0, documentUrl)); + this.tabHostname = hostnameFromURI(this.tabOrigin); + this.tabDomain = domainFromHostname(this.tabHostname); + } + + // https://github.com/uBlockOrigin/uBlock-issues/issues/459 + // In case of a request for frame and if ever no context is specified, + // assume the origin of the context is the same as the request itself. + fromWebrequestDetails(details) { + const tabId = details.tabId; + this.type = details.type; + const isMainFrame = this.itype === this.MAIN_FRAME; + if ( isMainFrame && tabId > 0 ) { + µBlock.tabContextManager.push(tabId, details.url); + } + this.fromTabId(tabId); // Must be called AFTER tab context management + this.realm = ''; + this.setMethod(details.method); + this.setURL(details.url); + this.setIPAddress(details.ip); + this.aliasURL = details.aliasURL || undefined; + this.redirectURL = undefined; + this.filter = undefined; + if ( this.itype !== this.SUB_FRAME ) { + this.docId = details.frameId; + this.frameId = -1; + } else { + this.docId = details.parentFrameId; + this.frameId = details.frameId; + } + if ( this.tabId > 0 ) { + if ( this.docId === 0 ) { + if ( isMainFrame === false ) { + this.maybeFromDocumentURL(details.documentUrl); + } + this.docOrigin = this.tabOrigin; + this.docHostname = this.tabHostname; + this.docDomain = this.tabDomain; + return this; + } + if ( details.documentUrl !== undefined ) { + this.setDocOriginFromURL(details.documentUrl); + return this; + } + const pageStore = µBlock.pageStoreFromTabId(this.tabId); + const docStore = pageStore && pageStore.getFrameStore(this.docId); + if ( docStore ) { + this.setDocOriginFromURL(docStore.rawURL); + } else { + this.setDocOrigin(this.tabOrigin); + } + return this; + } + if ( details.documentUrl !== undefined ) { + const origin = originFromURI( + µBlock.normalizeTabURL(0, details.documentUrl) + ); + this.setDocOrigin(origin).setTabOrigin(origin); + return this; + } + const origin = this.isDocument() + ? originFromURI(this.url) + : this.tabOrigin; + this.setDocOrigin(origin).setTabOrigin(origin); + return this; + } + + getTabOrigin() { + if ( this.tabOrigin === undefined ) { + const tabContext = µBlock.tabContextManager.mustLookup(this.tabId); + this.tabOrigin = tabContext.origin; + this.tabHostname = tabContext.rootHostname; + this.tabDomain = tabContext.rootDomain; + } + return super.getTabOrigin(); + } + + toLogger() { + const details = { + tstamp: 0, + realm: this.realm, + method: this.getMethodName(), + type: this.stype, + tabId: this.tabId, + tabDomain: this.getTabDomain(), + tabHostname: this.getTabHostname(), + docDomain: this.getDocDomain(), + docHostname: this.getDocHostname(), + domain: this.getDomain(), + hostname: this.getHostname(), + url: this.url, + aliasURL: this.aliasURL, + filter: undefined, + }; + // Many filters may have been applied to the current context + if ( Array.isArray(this.filter) === false ) { + details.filter = this.filter; + return logger.writeOne(details); + } + for ( const filter of this.filter ) { + details.filter = filter; + logger.writeOne(details); + } + } +}; + +µBlock.filteringContext = new µBlock.FilteringContext(); + +self.µBlock = µBlock; + +/******************************************************************************/ + +export default µBlock; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/base64-custom.js b/android/app/src/main/assets/extensions/ublock_origin/js/base64-custom.js new file mode 100644 index 00000000..9d15d718 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/base64-custom.js @@ -0,0 +1,143 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +// Custom base64 codecs. These codecs are meant to encode/decode typed arrays +// to/from strings. + +// https://github.com/uBlockOrigin/uBlock-issues/issues/461 +// Provide a fallback encoding for Chromium 59 and less by issuing a plain +// JSON string. The fallback can be removed once min supported version is +// above 59. + +// TODO: rename µBlock.base64 to µBlock.SparseBase64, now that +// µBlock.DenseBase64 has been introduced. +// TODO: Should no longer need to test presence of TextEncoder/TextDecoder. + +const valToDigit = new Uint8Array(64); +const digitToVal = new Uint8Array(128); +{ + const chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz@%'; + for ( let i = 0, n = chars.length; i < n; i++ ) { + const c = chars.charCodeAt(i); + valToDigit[i] = c; + digitToVal[c] = i; + } +} + +// The dense base64 codec is best for typed buffers which values are +// more random. For example, buffer contents as a result of compression +// contain less repetitive values and thus the content is more +// random-looking. + +// TODO: Investigate that in Firefox, creating a new Uint8Array from the +// ArrayBuffer fails, the content of the resulting Uint8Array is +// non-sensical. WASM-related? + +export const denseBase64 = { + magic: 'DenseBase64_1', + + encode: function(input) { + const m = input.length % 3; + const n = input.length - m; + let outputLength = n / 3 * 4; + if ( m !== 0 ) { + outputLength += m + 1; + } + const output = new Uint8Array(outputLength); + let j = 0; + for ( let i = 0; i < n; i += 3) { + const i1 = input[i+0]; + const i2 = input[i+1]; + const i3 = input[i+2]; + output[j+0] = valToDigit[ i1 >>> 2]; + output[j+1] = valToDigit[i1 << 4 & 0b110000 | i2 >>> 4]; + output[j+2] = valToDigit[i2 << 2 & 0b111100 | i3 >>> 6]; + output[j+3] = valToDigit[i3 & 0b111111 ]; + j += 4; + } + if ( m !== 0 ) { + const i1 = input[n]; + output[j+0] = valToDigit[i1 >>> 2]; + if ( m === 1 ) { // 1 value + output[j+1] = valToDigit[i1 << 4 & 0b110000]; + } else { // 2 values + const i2 = input[n+1]; + output[j+1] = valToDigit[i1 << 4 & 0b110000 | i2 >>> 4]; + output[j+2] = valToDigit[i2 << 2 & 0b111100 ]; + } + } + const textDecoder = new TextDecoder(); + const b64str = textDecoder.decode(output); + return this.magic + b64str; + }, + + decode: function(instr, arrbuf) { + if ( instr.startsWith(this.magic) === false ) { + throw new Error('Invalid µBlock.denseBase64 encoding'); + } + const outputLength = this.decodeSize(instr); + const outbuf = arrbuf instanceof ArrayBuffer === false + ? new Uint8Array(outputLength) + : new Uint8Array(arrbuf); + const inputLength = instr.length - this.magic.length; + let i = this.magic.length; + let j = 0; + const m = inputLength & 3; + const n = i + inputLength - m; + while ( i < n ) { + const i1 = digitToVal[instr.charCodeAt(i+0)]; + const i2 = digitToVal[instr.charCodeAt(i+1)]; + const i3 = digitToVal[instr.charCodeAt(i+2)]; + const i4 = digitToVal[instr.charCodeAt(i+3)]; + i += 4; + outbuf[j+0] = i1 << 2 | i2 >>> 4; + outbuf[j+1] = i2 << 4 & 0b11110000 | i3 >>> 2; + outbuf[j+2] = i3 << 6 & 0b11000000 | i4; + j += 3; + } + if ( m !== 0 ) { + const i1 = digitToVal[instr.charCodeAt(i+0)]; + const i2 = digitToVal[instr.charCodeAt(i+1)]; + outbuf[j+0] = i1 << 2 | i2 >>> 4; + if ( m === 3 ) { + const i3 = digitToVal[instr.charCodeAt(i+2)]; + outbuf[j+1] = i2 << 4 & 0b11110000 | i3 >>> 2; + } + } + return outbuf; + }, + + decodeSize: function(instr) { + if ( instr.startsWith(this.magic) === false ) { return 0; } + const inputLength = instr.length - this.magic.length; + const m = inputLength & 3; + const n = inputLength - m; + let outputLength = (n >>> 2) * 3; + if ( m !== 0 ) { + outputLength += m - 1; + } + return outputLength; + }, +}; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/benchmarks.js b/android/app/src/main/assets/extensions/ublock_origin/js/benchmarks.js new file mode 100644 index 00000000..b02300de --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/benchmarks.js @@ -0,0 +1,440 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { + domainFromHostname, + entityFromDomain, + hostnameFromURI, +} from './uri-utils.js'; + +import { FilteringContext } from './filtering-context.js'; +import { LineIterator } from './text-utils.js'; +import cosmeticFilteringEngine from './cosmetic-filtering.js'; +import io from './assets.js'; +import scriptletFilteringEngine from './scriptlet-filtering.js'; +import { sessionFirewall } from './filtering-engines.js'; +import { default as sfne } from './static-net-filtering.js'; +import webRequest from './traffic.js'; +import µb from './background.js'; + +/******************************************************************************/ + +// The requests.json.gz file can be downloaded from: +// https://cdn.cliqz.com/adblocking/requests_top500.json.gz +// +// Which is linked from: +// https://whotracks.me/blog/adblockers_performance_study.html +// +// Copy the file into ./tmp/requests.json.gz +// +// If the file is present when you build uBO using `make-[target].sh` from +// the shell, the resulting package will have `./assets/requests.json`, which +// will be looked-up by the method below to launch a benchmark session. +// +// From uBO's dev console, launch the benchmark: +// µBlock.staticNetFilteringEngine.benchmark(); +// +// The usual browser dev tools can be used to obtain useful profiling +// data, i.e. start the profiler, call the benchmark method from the +// console, then stop the profiler when it completes. +// +// Keep in mind that the measurements at the blog post above where obtained +// with ONLY EasyList. The CPU reportedly used was: +// https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core+i7-6600U+%40+2.60GHz&id=2608 +// +// Rename ./tmp/requests.json.gz to something else if you no longer want +// ./assets/requests.json in the build. + +const loadBenchmarkDataset = (( ) => { + let datasetPromise; + + const ttlTimer = vAPI.defer.create(( ) => { + datasetPromise = undefined; + }); + + return async function() { + ttlTimer.offon({ min: 2 }); + + if ( datasetPromise !== undefined ) { + return datasetPromise; + } + + const datasetURL = µb.hiddenSettings.benchmarkDatasetURL; + if ( datasetURL === 'unset' ) { + console.info(`No benchmark dataset available.`); + return; + } + console.info(`Loading benchmark dataset...`); + datasetPromise = io.fetchText(datasetURL).then(details => { + console.info(`Parsing benchmark dataset...`); + let requests = []; + if ( details.content.startsWith('[') ) { + try { + requests = JSON.parse(details.content); + } catch { + } + } else { + const lineIter = new LineIterator(details.content); + const parsed = []; + while ( lineIter.eot() === false ) { + const line = lineIter.next().trim(); + if ( line === '' ) { continue; } + try { + parsed.push(JSON.parse(line)); + } catch { + parsed.length = 0; + break; + } + } + requests = parsed; + } + if ( requests.length === 0 ) { return; } + const out = []; + for ( const request of requests ) { + if ( request instanceof Object === false ) { continue; } + if ( !request.frameUrl || !request.url ) { continue; } + if ( request.cpt === 'document' ) { + request.cpt = 'main_frame'; + } else if ( request.cpt === 'xhr' ) { + request.cpt = 'xmlhttprequest'; + } + out.push(request); + } + return out; + }).catch(details => { + console.info(`Not found: ${details.url}`); + datasetPromise = undefined; + }); + + return datasetPromise; + }; +})(); + +/******************************************************************************/ + +export async function benchmarkStaticNetFiltering(options = {}) { + const { target, redirectEngine } = options; + + const requests = await loadBenchmarkDataset(); + if ( Array.isArray(requests) === false || requests.length === 0 ) { + const text = 'No dataset found to benchmark'; + console.info(text); + return text; + } + + console.info(`Benchmarking staticNetFilteringEngine.matchRequest()...`); + + const fctxt = new FilteringContext(); + + if ( typeof target === 'number' ) { + const request = requests[target]; + fctxt.setURL(request.url); + fctxt.setDocOriginFromURL(request.frameUrl); + fctxt.setType(request.cpt); + const r = sfne.matchRequest(fctxt); + console.info(`Result=${r}:`); + console.info(`\ttype=${fctxt.type}`); + console.info(`\turl=${fctxt.url}`); + console.info(`\tdocOrigin=${fctxt.getDocOrigin()}`); + if ( r !== 0 ) { + console.info(sfne.toLogData()); + } + return; + } + + const t0 = performance.now(); + let matchCount = 0; + let blockCount = 0; + let allowCount = 0; + let redirectCount = 0; + let removeparamCount = 0; + let urlskipCount = 0; + let cspCount = 0; + let permissionsCount = 0; + let replaceCount = 0; + for ( const request of requests ) { + fctxt.setURL(request.url); + if ( fctxt.getIPAddress() === '' ) { + fctxt.setIPAddress('93.184.215.14\n2606:2800:21f:cb07:6820:80da:af6b:8b2c'); + } + fctxt.setDocOriginFromURL(request.frameUrl); + fctxt.setType(request.cpt); + sfne.redirectURL = undefined; + const r = sfne.matchRequest(fctxt); + matchCount += 1; + if ( r === 1 ) { blockCount += 1; } + else if ( r === 2 ) { allowCount += 1; } + if ( r !== 1 ) { + if ( sfne.transformURL(fctxt) ) { + redirectCount += 1; + } + if ( sfne.hasQuery(fctxt) ) { + if ( sfne.filterQuery(fctxt) ) { + removeparamCount += 1; + } + } + if ( sfne.urlSkip(fctxt, false) ) { + urlskipCount += 1; + } + if ( fctxt.isDocument() ) { + if ( sfne.matchAndFetchModifiers(fctxt, 'csp') ) { + cspCount += 1; + } + if ( sfne.matchAndFetchModifiers(fctxt, 'permissions') ) { + permissionsCount += 1; + } + } + sfne.matchHeaders(fctxt, [], []); + if ( sfne.matchAndFetchModifiers(fctxt, 'replace') ) { + replaceCount += 1; + } + } else if ( redirectEngine !== undefined ) { + if ( sfne.redirectRequest(redirectEngine, fctxt) ) { + redirectCount += 1; + } + if ( fctxt.isRootDocument() && sfne.urlSkip(fctxt, true) ) { + urlskipCount += 1; + } + } + } + const t1 = performance.now(); + const dur = t1 - t0; + + const output = [ + 'Benchmarked static network filtering engine:', + `\tEvaluated ${matchCount} requests in ${dur.toFixed(0)} ms`, + `\tAverage: ${(dur / matchCount).toFixed(3)} ms per request`, + `\tNot blocked: ${matchCount - blockCount - allowCount}`, + `\tBlocked: ${blockCount}`, + `\tUnblocked: ${allowCount}`, + `\tredirect=: ${redirectCount}`, + `\tremoveparam=: ${removeparamCount}`, + `\turlskip=: ${urlskipCount}`, + `\tcsp=: ${cspCount}`, + `\tpermissions=: ${permissionsCount}`, + `\treplace=: ${replaceCount}`, + ]; + const s = output.join('\n'); + console.info(s); + return s; +} + +/******************************************************************************/ + +export async function tokenHistogramsfunction() { + const requests = await loadBenchmarkDataset(); + if ( Array.isArray(requests) === false || requests.length === 0 ) { + console.info('No requests found to benchmark'); + return; + } + + console.info(`Computing token histograms...`); + + const fctxt = new FilteringContext(); + const missTokenMap = new Map(); + const hitTokenMap = new Map(); + const reTokens = /[0-9a-z%]{2,}/g; + + for ( let i = 0; i < requests.length; i++ ) { + const request = requests[i]; + fctxt.setURL(request.url); + fctxt.setDocOriginFromURL(request.frameUrl); + fctxt.setType(request.cpt); + const r = sfne.matchRequest(fctxt); + for ( let [ keyword ] of request.url.toLowerCase().matchAll(reTokens) ) { + const token = keyword.slice(0, 7); + if ( r === 0 ) { + missTokenMap.set(token, (missTokenMap.get(token) || 0) + 1); + } else if ( r === 1 ) { + hitTokenMap.set(token, (hitTokenMap.get(token) || 0) + 1); + } + } + } + const customSort = (a, b) => b[1] - a[1]; + const topmisses = Array.from(missTokenMap).sort(customSort).slice(0, 100); + for ( const [ token ] of topmisses ) { + hitTokenMap.delete(token); + } + const tophits = Array.from(hitTokenMap).sort(customSort).slice(0, 100); + console.info('Misses:', JSON.stringify(topmisses)); + console.info('Hits:', JSON.stringify(tophits)); +} + +/******************************************************************************/ + +export async function benchmarkDynamicNetFiltering() { + const requests = await loadBenchmarkDataset(); + if ( Array.isArray(requests) === false || requests.length === 0 ) { + console.info('No requests found to benchmark'); + return; + } + console.info(`Benchmarking sessionFirewall.evaluateCellZY()...`); + const fctxt = new FilteringContext(); + const t0 = performance.now(); + for ( const request of requests ) { + fctxt.setURL(request.url); + fctxt.setTabOriginFromURL(request.frameUrl); + fctxt.setType(request.cpt); + sessionFirewall.evaluateCellZY( + fctxt.getTabHostname(), + fctxt.getHostname(), + fctxt.type + ); + } + const t1 = performance.now(); + const dur = t1 - t0; + console.info(`Evaluated ${requests.length} requests in ${dur.toFixed(0)} ms`); + console.info(`\tAverage: ${(dur / requests.length).toFixed(3)} ms per request`); +} + +/******************************************************************************/ + +export async function benchmarkCosmeticFiltering() { + const requests = await loadBenchmarkDataset(); + if ( Array.isArray(requests) === false || requests.length === 0 ) { + console.info('No requests found to benchmark'); + return; + } + const output = [ + 'Benchmarking cosmeticFilteringEngine.retrieveSpecificSelectors()...', + ]; + const details = { + tabId: undefined, + frameId: undefined, + hostname: '', + domain: '', + }; + const options = { + noSpecificCosmeticFiltering: false, + noGenericCosmeticFiltering: false, + dontInject: true, + }; + let count = 0; + const t0 = performance.now(); + for ( let i = 0; i < requests.length; i++ ) { + const request = requests[i]; + if ( request.cpt !== 'main_frame' ) { continue; } + count += 1; + details.hostname = hostnameFromURI(request.url); + details.domain = domainFromHostname(details.hostname); + details.entity = entityFromDomain(details.domain); + void cosmeticFilteringEngine.retrieveSpecificSelectors(details, options); + } + const t1 = performance.now(); + const dur = t1 - t0; + output.push( + `Evaluated ${count} retrieval in ${dur.toFixed(0)} ms`, + `\tAverage: ${(dur / count).toFixed(3)} ms per document` + ); + const s = output.join('\n'); + console.info(s); + return s; +} + +/******************************************************************************/ + +export async function benchmarkScriptletFiltering() { + const requests = await loadBenchmarkDataset(); + if ( Array.isArray(requests) === false || requests.length === 0 ) { + console.info('No requests found to benchmark'); + return; + } + const output = [ + 'Benchmarking scriptletFilteringEngine.retrieve()...', + ]; + const details = { + domain: '', + entity: '', + hostname: '', + tabId: 0, + url: '', + nocache: true, + }; + let count = 0; + const t0 = performance.now(); + for ( let i = 0; i < requests.length; i++ ) { + const request = requests[i]; + if ( request.cpt !== 'main_frame' ) { continue; } + count += 1; + details.url = request.url; + details.hostname = hostnameFromURI(request.url); + details.domain = domainFromHostname(details.hostname); + details.entity = entityFromDomain(details.domain); + void scriptletFilteringEngine.retrieve(details); + } + const t1 = performance.now(); + const dur = t1 - t0; + output.push( + `Evaluated ${count} retrieval in ${dur.toFixed(0)} ms`, + `\tAverage: ${(dur / count).toFixed(3)} ms per document` + ); + const s = output.join('\n'); + console.info(s); + return s; +} + +/******************************************************************************/ + +export async function benchmarkOnBeforeRequest() { + const requests = await loadBenchmarkDataset(); + if ( Array.isArray(requests) === false || requests.length === 0 ) { + console.info('No requests found to benchmark'); + return; + } + const mappedTypes = new Map([ + [ 'document', 'main_frame' ], + [ 'subdocument', 'sub_frame' ], + ]); + console.info('webRequest.onBeforeRequest()...'); + const t0 = self.performance.now(); + const promises = []; + const details = { + documentUrl: '', + tabId: -1, + parentFrameId: -1, + frameId: 0, + type: '', + url: '', + }; + for ( const request of requests ) { + details.documentUrl = request.frameUrl; + details.tabId = -1; + details.parentFrameId = -1; + details.frameId = 0; + details.type = mappedTypes.get(request.cpt) || request.cpt; + details.url = request.url; + if ( details.type === 'main_frame' ) { continue; } + promises.push(webRequest.onBeforeRequest(details)); + } + return Promise.all(promises).then(results => { + let blockCount = 0; + for ( const r of results ) { + if ( r !== undefined ) { blockCount += 1; } + } + const t1 = self.performance.now(); + const dur = t1 - t0; + console.info(`Evaluated ${requests.length} requests in ${dur.toFixed(0)} ms`); + console.info(`\tBlocked ${blockCount} requests`); + console.info(`\tAverage: ${(dur / requests.length).toFixed(3)} ms per request`); + }); +} + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/biditrie.js b/android/app/src/main/assets/extensions/ublock_origin/js/biditrie.js new file mode 100644 index 00000000..33e6a1f7 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/biditrie.js @@ -0,0 +1,933 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************* + + A BidiTrieContainer is mostly a large buffer in which distinct but related + tries are stored. The memory layout of the buffer is as follow: + + 0-8192: haystack section + 8192-8195: number of significant characters in the haystack + 8196-8199: offset to start of trie data section (=> trie0) + 8200-8203: offset to end of trie data section (=> trie1) + 8204-8207: offset to start of character data section (=> char0) + 8208-8211: offset to end of character data section (=> char1) + 8212-8215: offset to left index result (=> result_l) + 8216-8219: offset to right index result (=> result_r) + 8220-8223: offset to extra unit result (=> result_iu) + 8224: start of trie data section + + +--------------+ + Normal cell: | And | If "Segment info" matches: + (aka CELL) +--------------+ Goto "And" + | Or | Else + +--------------+ Goto "Or" + | Segment info | + +--------------+ + + +--------------+ + Boundary cell: | Right And | "Right And" and/or "Left And" + (aka BCELL) +--------------+ can be 0 in last-segment condition. + | Left And | + +--------------+ + | 0 | + +--------------+ + + Given following filters and assuming token is "ad" for all of them: + + -images/ad- + /google_ad. + /images_ad. + _images/ad. + + We get the following internal representation: + + +-----------+ +-----------+ +---+ + | |---->| |---->| 0 | + +-----------+ +-----------+ +---+ +-----------+ + | 0 | +--| | | |---->| 0 | + +-----------+ | +-----------+ +---+ +-----------+ + | ad | | | - | | 0 | | 0 | + +-----------+ | +-----------+ +---+ +-----------+ + | | -images/ | + | +-----------+ +---+ +-----------+ + +->| |---->| 0 | + +-----------+ +---+ +-----------+ +-----------+ + | 0 | | |---->| |---->| 0 | + +-----------+ +---+ +-----------+ +-----------+ + | . | | 0 | +--| | +--| | + +-----------+ +---+ | +-----------+ | +-----------+ + | | _ | | | /google | + | +-----------+ | +-----------+ + | | + | | +-----------+ + | +->| 0 | + | +-----------+ + | | 0 | + | +-----------+ + | | /images | + | +-----------+ + | + | +-----------+ + +->| 0 | + +-----------+ + | 0 | + +-----------+ + | _images/ | + +-----------+ + +*/ + +const VERSION = 2; +const PAGE_SIZE = 65536*2; +const HAYSTACK_START = 0; +const HAYSTACK_SIZE = 8192; // i32 / i8 +const HAYSTACK_SIZE_SLOT = HAYSTACK_SIZE >>> 2; // 2048 / 8192 +const TRIE0_SLOT = HAYSTACK_SIZE_SLOT + 1; // 2049 / 8196 +const TRIE1_SLOT = HAYSTACK_SIZE_SLOT + 2; // 2050 / 8200 +const CHAR0_SLOT = HAYSTACK_SIZE_SLOT + 3; // 2051 / 8204 +const CHAR1_SLOT = HAYSTACK_SIZE_SLOT + 4; // 2052 / 8208 +const RESULT_L_SLOT = HAYSTACK_SIZE_SLOT + 5; // 2053 / 8212 +const RESULT_R_SLOT = HAYSTACK_SIZE_SLOT + 6; // 2054 / 8216 +const RESULT_IU_SLOT = HAYSTACK_SIZE_SLOT + 7; // 2055 / 8220 +const TRIE0_START = HAYSTACK_SIZE_SLOT + 8 << 2; // 8224 + +const CELL_BYTE_LENGTH = 12; +const MIN_FREE_CELL_BYTE_LENGTH = CELL_BYTE_LENGTH * 8; + +const CELL_AND = 0; +const CELL_OR = 1; +const SEGMENT_INFO = 2; +const BCELL_NEXT_AND = 0; +const BCELL_ALT_AND = 1; +const BCELL_EXTRA = 2; +const BCELL_EXTRA_MAX = 0x00FFFFFF; + +const toSegmentInfo = (aL, l, r) => ((r - l) << 24) | (aL + l); +const roundToPageSize = v => (v + PAGE_SIZE-1) & ~(PAGE_SIZE-1); + +// http://www.cse.yorku.ca/~oz/hash.html#djb2 +const i32Checksum = (buf32) => { + const n = buf32.length; + let hash = 177573 ^ n; + for ( let i = 0; i < n; i++ ) { + hash = (hash << 5) + hash ^ buf32[i]; + } + return hash; +}; + +class BidiTrieContainer { + + constructor(extraHandler) { + const len = PAGE_SIZE * 4; + this.buf8 = new Uint8Array(len); + this.buf32 = new Uint32Array(this.buf8.buffer); + this.buf32[TRIE0_SLOT] = TRIE0_START; + this.buf32[TRIE1_SLOT] = this.buf32[TRIE0_SLOT]; + this.buf32[CHAR0_SLOT] = len >>> 1; + this.buf32[CHAR1_SLOT] = this.buf32[CHAR0_SLOT]; + this.haystack = this.buf8.subarray( + HAYSTACK_START, + HAYSTACK_START + HAYSTACK_SIZE + ); + this.extraHandler = extraHandler; + this.textDecoder = null; + this.wasmMemory = null; + + this.lastStored = ''; + this.lastStoredLen = this.lastStoredIndex = 0; + } + + //-------------------------------------------------------------------------- + // Public methods + //-------------------------------------------------------------------------- + + getHaystackLen() { + return this.buf32[HAYSTACK_SIZE_SLOT]; + } + + setHaystackLen(v) { + if ( v > HAYSTACK_SIZE ) { + v = HAYSTACK_SIZE; + } + this.buf32[HAYSTACK_SIZE_SLOT] = v; + return v; + } + + reset() { + this.buf32[TRIE1_SLOT] = this.buf32[TRIE0_SLOT]; + this.buf32[CHAR1_SLOT] = this.buf32[CHAR0_SLOT]; + this.lastStored = ''; + this.lastStoredLen = this.lastStoredIndex = 0; + } + + createTrie() { + // grow buffer if needed + if ( (this.buf32[CHAR0_SLOT] - this.buf32[TRIE1_SLOT]) < CELL_BYTE_LENGTH ) { + this.growBuf(CELL_BYTE_LENGTH, 0); + } + const iroot = this.buf32[TRIE1_SLOT] >>> 2; + this.buf32[TRIE1_SLOT] += CELL_BYTE_LENGTH; + this.buf32[iroot+CELL_OR] = 0; + this.buf32[iroot+CELL_AND] = 0; + this.buf32[iroot+SEGMENT_INFO] = 0; + return iroot; + } + + matches(icell, ai) { + const buf32 = this.buf32; + const buf8 = this.buf8; + const char0 = buf32[CHAR0_SLOT]; + const aR = buf32[HAYSTACK_SIZE_SLOT]; + let al = ai, x = 0, y = 0; + for (;;) { + x = buf8[al]; + al += 1; + // find matching segment + for (;;) { + y = buf32[icell+SEGMENT_INFO]; + let bl = char0 + (y & 0x00FFFFFF); + if ( buf8[bl] === x ) { + y = (y >>> 24) - 1; + if ( y !== 0 ) { + x = al + y; + if ( x > aR ) { return 0; } + for (;;) { + bl += 1; + if ( buf8[bl] !== buf8[al] ) { return 0; } + al += 1; + if ( al === x ) { break; } + } + } + break; + } + icell = buf32[icell+CELL_OR]; + if ( icell === 0 ) { return 0; } + } + // next segment + icell = buf32[icell+CELL_AND]; + x = buf32[icell+BCELL_EXTRA]; + if ( x <= BCELL_EXTRA_MAX ) { + if ( x !== 0 && this.matchesExtra(ai, al, x) !== 0 ) { + return 1; + } + x = buf32[icell+BCELL_ALT_AND]; + if ( x !== 0 && this.matchesLeft(x, ai, al) !== 0 ) { + return 1; + } + icell = buf32[icell+BCELL_NEXT_AND]; + if ( icell === 0 ) { return 0; } + } + if ( al === aR ) { return 0; } + } + return 0; // eslint-disable-line no-unreachable + } + + matchesLeft(icell, ar, r) { + const buf32 = this.buf32; + const buf8 = this.buf8; + const char0 = buf32[CHAR0_SLOT]; + let x = 0, y = 0; + for (;;) { + if ( ar === 0 ) { return 0; } + ar -= 1; + x = buf8[ar]; + // find first segment with a first-character match + for (;;) { + y = buf32[icell+SEGMENT_INFO]; + let br = char0 + (y & 0x00FFFFFF); + y = (y >>> 24) - 1; + br += y; + if ( buf8[br] === x ) { // all characters in segment must match + if ( y !== 0 ) { + x = ar - y; + if ( x < 0 ) { return 0; } + for (;;) { + ar -= 1; br -= 1; + if ( buf8[ar] !== buf8[br] ) { return 0; } + if ( ar === x ) { break; } + } + } + break; + } + icell = buf32[icell+CELL_OR]; + if ( icell === 0 ) { return 0; } + } + // next segment + icell = buf32[icell+CELL_AND]; + x = buf32[icell+BCELL_EXTRA]; + if ( x <= BCELL_EXTRA_MAX ) { + if ( x !== 0 && this.matchesExtra(ar, r, x) !== 0 ) { + return 1; + } + icell = buf32[icell+BCELL_NEXT_AND]; + if ( icell === 0 ) { return 0; } + } + } + return 0; // eslint-disable-line no-unreachable + } + + matchesExtra(l, r, ix) { + let iu = 0; + if ( ix !== 1 ) { + iu = this.extraHandler(l, r, ix); + if ( iu === 0 ) { return 0; } + } else { + iu = -1; + } + this.buf32[RESULT_IU_SLOT] = iu; + this.buf32[RESULT_L_SLOT] = l; + this.buf32[RESULT_R_SLOT] = r; + return 1; + } + + get $l() { return this.buf32[RESULT_L_SLOT] | 0; } + get $r() { return this.buf32[RESULT_R_SLOT] | 0; } + get $iu() { return this.buf32[RESULT_IU_SLOT] | 0; } + + add(iroot, aL0, n, pivot = 0) { + const aR = n; + if ( aR === 0 ) { return 0; } + // Grow buffer if needed. The characters are already in our character + // data buffer, so we do not need to grow character data buffer. + if ( + (this.buf32[CHAR0_SLOT] - this.buf32[TRIE1_SLOT]) < + MIN_FREE_CELL_BYTE_LENGTH + ) { + this.growBuf(MIN_FREE_CELL_BYTE_LENGTH, 0); + } + const buf32 = this.buf32; + const char0 = buf32[CHAR0_SLOT]; + let icell = iroot; + let aL = char0 + aL0; + // special case: first node in trie + if ( buf32[icell+SEGMENT_INFO] === 0 ) { + buf32[icell+SEGMENT_INFO] = toSegmentInfo(aL0, pivot, aR); + return this.addLeft(icell, aL0, pivot); + } + const buf8 = this.buf8; + let al = pivot; + let inext; + // find a matching cell: move down + for (;;) { + const binfo = buf32[icell+SEGMENT_INFO]; + // length of segment + const bR = binfo >>> 24; + // skip boundary cells + if ( bR === 0 ) { + icell = buf32[icell+BCELL_NEXT_AND]; + continue; + } + let bl = char0 + (binfo & 0x00FFFFFF); + // if first character is no match, move to next descendant + if ( buf8[bl] !== buf8[aL+al] ) { + inext = buf32[icell+CELL_OR]; + if ( inext === 0 ) { + inext = this.addCell(0, 0, toSegmentInfo(aL0, al, aR)); + buf32[icell+CELL_OR] = inext; + return this.addLeft(inext, aL0, pivot); + } + icell = inext; + continue; + } + // 1st character was tested + let bi = 1; + al += 1; + // find 1st mismatch in rest of segment + if ( bR !== 1 ) { + for (;;) { + if ( bi === bR ) { break; } + if ( al === aR ) { break; } + if ( buf8[bl+bi] !== buf8[aL+al] ) { break; } + bi += 1; + al += 1; + } + } + // all segment characters matched + if ( bi === bR ) { + // needle remainder: no + if ( al === aR ) { + return this.addLeft(icell, aL0, pivot); + } + // needle remainder: yes + inext = buf32[icell+CELL_AND]; + if ( buf32[inext+CELL_AND] !== 0 ) { + icell = inext; + continue; + } + // add needle remainder + icell = this.addCell(0, 0, toSegmentInfo(aL0, al, aR)); + buf32[inext+CELL_AND] = icell; + return this.addLeft(icell, aL0, pivot); + } + // some characters matched + // split current segment + bl -= char0; + buf32[icell+SEGMENT_INFO] = bi << 24 | bl; + inext = this.addCell( + buf32[icell+CELL_AND], 0, bR - bi << 24 | bl + bi + ); + buf32[icell+CELL_AND] = inext; + // needle remainder: no = need boundary cell + if ( al === aR ) { + return this.addLeft(icell, aL0, pivot); + } + // needle remainder: yes = need new cell for remaining characters + icell = this.addCell(0, 0, toSegmentInfo(aL0, al, aR)); + buf32[inext+CELL_OR] = icell; + return this.addLeft(icell, aL0, pivot); + } + } + + addLeft(icell, aL0, pivot) { + const buf32 = this.buf32; + const char0 = buf32[CHAR0_SLOT]; + let aL = aL0 + char0; + // fetch boundary cell + let iboundary = buf32[icell+CELL_AND]; + // add boundary cell if none exist + if ( + iboundary === 0 || + buf32[iboundary+SEGMENT_INFO] > BCELL_EXTRA_MAX + ) { + const inext = iboundary; + iboundary = this.allocateCell(); + buf32[icell+CELL_AND] = iboundary; + buf32[iboundary+BCELL_NEXT_AND] = inext; + if ( pivot === 0 ) { return iboundary; } + } + // shortest match with no extra conditions will always win + if ( buf32[iboundary+BCELL_EXTRA] === 1 ) { + return iboundary; + } + // bail out if no left segment + if ( pivot === 0 ) { return iboundary; } + // fetch root cell of left segment + icell = buf32[iboundary+BCELL_ALT_AND]; + if ( icell === 0 ) { + icell = this.allocateCell(); + buf32[iboundary+BCELL_ALT_AND] = icell; + } + // special case: first node in trie + if ( buf32[icell+SEGMENT_INFO] === 0 ) { + buf32[icell+SEGMENT_INFO] = toSegmentInfo(aL0, 0, pivot); + iboundary = this.allocateCell(); + buf32[icell+CELL_AND] = iboundary; + return iboundary; + } + const buf8 = this.buf8; + let ar = pivot, inext; + // find a matching cell: move down + for (;;) { + const binfo = buf32[icell+SEGMENT_INFO]; + // skip boundary cells + if ( binfo <= BCELL_EXTRA_MAX ) { + inext = buf32[icell+CELL_AND]; + if ( inext !== 0 ) { + icell = inext; + continue; + } + iboundary = this.allocateCell(); + buf32[icell+CELL_AND] = + this.addCell(iboundary, 0, toSegmentInfo(aL0, 0, ar)); + // TODO: boundary cell might be last + // add remainder + boundary cell + return iboundary; + } + const bL = char0 + (binfo & 0x00FFFFFF); + const bR = bL + (binfo >>> 24); + let br = bR; + // if first character is no match, move to next descendant + if ( buf8[br-1] !== buf8[aL+ar-1] ) { + inext = buf32[icell+CELL_OR]; + if ( inext === 0 ) { + iboundary = this.allocateCell(); + inext = this.addCell( + iboundary, 0, toSegmentInfo(aL0, 0, ar) + ); + buf32[icell+CELL_OR] = inext; + return iboundary; + } + icell = inext; + continue; + } + // 1st character was tested + br -= 1; + ar -= 1; + // find 1st mismatch in rest of segment + if ( br !== bL ) { + for (;;) { + if ( br === bL ) { break; } + if ( ar === 0 ) { break; } + if ( buf8[br-1] !== buf8[aL+ar-1] ) { break; } + br -= 1; + ar -= 1; + } + } + // all segment characters matched + // a: ...vvvvvvv + // b: vvvvvvv + if ( br === bL ) { + inext = buf32[icell+CELL_AND]; + // needle remainder: no + // a: vvvvvvv + // b: vvvvvvv + // r: 0 & vvvvvvv + if ( ar === 0 ) { + // boundary cell already present + if ( buf32[inext+BCELL_EXTRA] <= BCELL_EXTRA_MAX ) { + return inext; + } + // need boundary cell + iboundary = this.allocateCell(); + buf32[iboundary+CELL_AND] = inext; + buf32[icell+CELL_AND] = iboundary; + return iboundary; + } + // needle remainder: yes + // a: yyyyyyyvvvvvvv + // b: vvvvvvv + else { + if ( inext !== 0 ) { + icell = inext; + continue; + } + // TODO: we should never reach here because there will + // always be a boundary cell. + // eslint-disable-next-line no-debugger + debugger; // jshint ignore:line + // boundary cell + needle remainder + inext = this.addCell(0, 0, 0); + buf32[icell+CELL_AND] = inext; + buf32[inext+CELL_AND] = + this.addCell(0, 0, toSegmentInfo(aL0, 0, ar)); + } + } + // some segment characters matched + // a: ...vvvvvvv + // b: yyyyyyyvvvvvvv + else { + // split current cell + buf32[icell+SEGMENT_INFO] = (bR - br) << 24 | (br - char0); + inext = this.addCell( + buf32[icell+CELL_AND], + 0, + (br - bL) << 24 | (bL - char0) + ); + // needle remainder: no = need boundary cell + // a: vvvvvvv + // b: yyyyyyyvvvvvvv + // r: yyyyyyy & 0 & vvvvvvv + if ( ar === 0 ) { + iboundary = this.allocateCell(); + buf32[icell+CELL_AND] = iboundary; + buf32[iboundary+CELL_AND] = inext; + return iboundary; + } + // needle remainder: yes = need new cell for remaining + // characters + // a: wwwwvvvvvvv + // b: yyyyyyyvvvvvvv + // r: (0 & wwww | yyyyyyy) & vvvvvvv + else { + buf32[icell+CELL_AND] = inext; + iboundary = this.allocateCell(); + buf32[inext+CELL_OR] = this.addCell( + iboundary, 0, toSegmentInfo(aL0, 0, ar) + ); + return iboundary; + } + } + //debugger; // jshint ignore:line + } + } + + getExtra(iboundary) { + return this.buf32[iboundary+BCELL_EXTRA]; + } + + setExtra(iboundary, v) { + this.buf32[iboundary+BCELL_EXTRA] = v; + } + + optimize() { + this.shrinkBuf(); + } + + toSelfie() { + const buf32 = this.buf32.subarray(0, this.buf32[CHAR1_SLOT] + 3 >>> 2); + return { + version: VERSION, + buf32, + checksum: i32Checksum(buf32), + }; + } + + fromSelfie(selfie) { + if ( typeof selfie !== 'object' || selfie === null ) { return false; } + if ( selfie.version !== VERSION ) { return false; } + if ( selfie.buf32 instanceof Uint32Array === false ) { return false; } + if ( selfie.checksum !== i32Checksum(selfie.buf32) ) { return false; } + const byteLength = selfie.buf32.length << 2; + if ( byteLength === 0 ) { return false; } + this.reallocateBuf(byteLength); + this.buf32.set(selfie.buf32); + return true; + } + + storeString(s) { + const n = s.length; + if ( n === this.lastStoredLen && s === this.lastStored ) { + return this.lastStoredIndex; + } + this.lastStored = s; + this.lastStoredLen = n; + if ( (this.buf8.length - this.buf32[CHAR1_SLOT]) < n ) { + this.growBuf(0, n); + } + const offset = this.buf32[CHAR1_SLOT]; + this.buf32[CHAR1_SLOT] = offset + n; + const buf8 = this.buf8; + for ( let i = 0; i < n; i++ ) { + buf8[offset+i] = s.charCodeAt(i); + } + return (this.lastStoredIndex = offset - this.buf32[CHAR0_SLOT]); + } + + extractString(i, n) { + if ( this.textDecoder === null ) { + this.textDecoder = new TextDecoder(); + } + const offset = this.buf32[CHAR0_SLOT] + i; + return this.textDecoder.decode( + this.buf8.subarray(offset, offset + n) + ); + } + + // WASMable. + startsWith(haystackLeft, haystackRight, needleLeft, needleLen) { + if ( haystackLeft < 0 || (haystackLeft + needleLen) > haystackRight ) { + return 0; + } + const charCodes = this.buf8; + needleLeft += this.buf32[CHAR0_SLOT]; + const needleRight = needleLeft + needleLen; + while ( charCodes[haystackLeft] === charCodes[needleLeft] ) { + needleLeft += 1; + if ( needleLeft === needleRight ) { return 1; } + haystackLeft += 1; + } + return 0; + } + + // Find the left-most instance of substring in main string + // WASMable. + indexOf(haystackLeft, haystackEnd, needleLeft, needleLen) { + if ( needleLen === 0 ) { return haystackLeft; } + haystackEnd -= needleLen; + if ( haystackEnd < haystackLeft ) { return -1; } + needleLeft += this.buf32[CHAR0_SLOT]; + const needleRight = needleLeft + needleLen; + const charCodes = this.buf8; + for (;;) { + let i = haystackLeft; + let j = needleLeft; + while ( charCodes[i] === charCodes[j] ) { + j += 1; + if ( j === needleRight ) { return haystackLeft; } + i += 1; + } + haystackLeft += 1; + if ( haystackLeft > haystackEnd ) { break; } + } + return -1; + } + + // Find the right-most instance of substring in main string. + // WASMable. + lastIndexOf(haystackBeg, haystackEnd, needleLeft, needleLen) { + if ( needleLen === 0 ) { return haystackBeg; } + let haystackLeft = haystackEnd - needleLen; + if ( haystackLeft < haystackBeg ) { return -1; } + needleLeft += this.buf32[CHAR0_SLOT]; + const needleRight = needleLeft + needleLen; + const charCodes = this.buf8; + for (;;) { + let i = haystackLeft; + let j = needleLeft; + while ( charCodes[i] === charCodes[j] ) { + j += 1; + if ( j === needleRight ) { return haystackLeft; } + i += 1; + } + if ( haystackLeft === haystackBeg ) { break; } + haystackLeft -= 1; + } + return -1; + } + + dumpTrie(iroot) { + for ( const s of this.trieIterator(iroot) ) { + console.log(s); + } + } + + trieIterator(iroot) { + return { + value: undefined, + done: false, + next() { + if ( this.icell === 0 ) { + if ( this.forks.length === 0 ) { + this.value = undefined; + this.done = true; + return this; + } + this.pattern = this.forks.pop(); + this.dir = this.forks.pop(); + this.icell = this.forks.pop(); + } + const buf32 = this.container.buf32; + const buf8 = this.container.buf8; + for (;;) { + const ialt = buf32[this.icell+CELL_OR]; + const v = buf32[this.icell+SEGMENT_INFO]; + const offset = v & 0x00FFFFFF; + let i0 = buf32[CHAR0_SLOT] + offset; + const len = v >>> 24; + for ( let i = 0; i < len; i++ ) { + this.charBuf[i] = buf8[i0+i]; + } + if ( len !== 0 && ialt !== 0 ) { + this.forks.push(ialt, this.dir, this.pattern); + } + const inext = buf32[this.icell+CELL_AND]; + if ( len !== 0 ) { + const s = this.textDecoder.decode( + new Uint8Array(this.charBuf.buffer, 0, len) + ); + if ( this.dir > 0 ) { + this.pattern += s; + } else if ( this.dir < 0 ) { + this.pattern = s + this.pattern; + } + } + this.icell = inext; + if ( len !== 0 ) { continue; } + // boundary cell + if ( ialt !== 0 ) { + if ( inext === 0 ) { + this.icell = ialt; + this.dir = -1; + } else { + this.forks.push(ialt, -1, this.pattern); + } + } + if ( offset !== 0 ) { + this.value = { pattern: this.pattern, iextra: offset }; + return this; + } + } + }, + container: this, + icell: iroot, + charBuf: new Uint8Array(256), + pattern: '', + dir: 1, + forks: [], + textDecoder: new TextDecoder(), + [Symbol.iterator]() { return this; }, + }; + } + + async enableWASM(wasmModuleFetcher, path) { + if ( typeof WebAssembly !== 'object' ) { return false; } + if ( this.wasmMemory instanceof WebAssembly.Memory ) { return true; } + const module = await getWasmModule(wasmModuleFetcher, path); + if ( module instanceof WebAssembly.Module === false ) { return false; } + const memory = new WebAssembly.Memory({ + initial: roundToPageSize(this.buf8.length) >>> 16 + }); + const instance = await WebAssembly.instantiate(module, { + imports: { memory, extraHandler: this.extraHandler } + }); + if ( instance instanceof WebAssembly.Instance === false ) { + return false; + } + this.wasmMemory = memory; + const curPageCount = memory.buffer.byteLength >>> 16; + const newPageCount = roundToPageSize(this.buf8.byteLength) >>> 16; + if ( newPageCount > curPageCount ) { + memory.grow(newPageCount - curPageCount); + } + const buf8 = new Uint8Array(memory.buffer); + buf8.set(this.buf8); + this.buf8 = buf8; + this.buf32 = new Uint32Array(this.buf8.buffer); + this.haystack = this.buf8.subarray( + HAYSTACK_START, + HAYSTACK_START + HAYSTACK_SIZE + ); + this.matches = instance.exports.matches; + this.startsWith = instance.exports.startsWith; + this.indexOf = instance.exports.indexOf; + this.lastIndexOf = instance.exports.lastIndexOf; + return true; + } + + dumpInfo() { + return [ + `Buffer size (Uint8Array): ${this.buf32[CHAR1_SLOT].toLocaleString('en')}`, + `WASM: ${this.wasmMemory === null ? 'disabled' : 'enabled'}`, + ].join('\n'); + } + + //-------------------------------------------------------------------------- + // Private methods + //-------------------------------------------------------------------------- + + allocateCell() { + let icell = this.buf32[TRIE1_SLOT]; + this.buf32[TRIE1_SLOT] = icell + CELL_BYTE_LENGTH; + icell >>>= 2; + this.buf32[icell+0] = 0; + this.buf32[icell+1] = 0; + this.buf32[icell+2] = 0; + return icell; + } + + addCell(iand, ior, v) { + const icell = this.allocateCell(); + this.buf32[icell+CELL_AND] = iand; + this.buf32[icell+CELL_OR] = ior; + this.buf32[icell+SEGMENT_INFO] = v; + return icell; + } + + growBuf(trieGrow, charGrow) { + const char0 = Math.max( + roundToPageSize(this.buf32[TRIE1_SLOT] + trieGrow), + this.buf32[CHAR0_SLOT] + ); + const char1 = char0 + this.buf32[CHAR1_SLOT] - this.buf32[CHAR0_SLOT]; + const bufLen = Math.max( + roundToPageSize(char1 + charGrow), + this.buf8.length + ); + if ( bufLen > this.buf8.length ) { + this.reallocateBuf(bufLen); + } + if ( char0 !== this.buf32[CHAR0_SLOT] ) { + this.buf8.copyWithin( + char0, + this.buf32[CHAR0_SLOT], + this.buf32[CHAR1_SLOT] + ); + this.buf32[CHAR0_SLOT] = char0; + this.buf32[CHAR1_SLOT] = char1; + } + } + + shrinkBuf() { + const char0 = this.buf32[TRIE1_SLOT] + MIN_FREE_CELL_BYTE_LENGTH; + const char1 = char0 + this.buf32[CHAR1_SLOT] - this.buf32[CHAR0_SLOT]; + const bufLen = char1 + 256; + if ( char0 !== this.buf32[CHAR0_SLOT] ) { + this.buf8.copyWithin( + char0, + this.buf32[CHAR0_SLOT], + this.buf32[CHAR1_SLOT] + ); + this.buf32[CHAR0_SLOT] = char0; + this.buf32[CHAR1_SLOT] = char1; + } + if ( bufLen < this.buf8.length ) { + this.reallocateBuf(bufLen); + } + } + + reallocateBuf(newSize) { + newSize = roundToPageSize(newSize); + if ( newSize === this.buf8.length ) { return; } + if ( this.wasmMemory === null ) { + const newBuf = new Uint8Array(newSize); + newBuf.set( + newBuf.length < this.buf8.length + ? this.buf8.subarray(0, newBuf.length) + : this.buf8 + ); + this.buf8 = newBuf; + } else { + const growBy = + ((newSize + 0xFFFF) >>> 16) - (this.buf8.length >>> 16); + if ( growBy <= 0 ) { return; } + this.wasmMemory.grow(growBy); + this.buf8 = new Uint8Array(this.wasmMemory.buffer); + } + this.buf32 = new Uint32Array(this.buf8.buffer); + this.haystack = this.buf8.subarray( + HAYSTACK_START, + HAYSTACK_START + HAYSTACK_SIZE + ); + } +} + +/******************************************************************************/ + +// Code below is to attempt to load a WASM module which implements: +// +// - BidiTrieContainer.startsWith() +// +// The WASM module is entirely optional, the JS implementations will be +// used should the WASM module be unavailable for whatever reason. + +const getWasmModule = (( ) => { + let wasmModulePromise; + + return async function(wasmModuleFetcher, path) { + if ( wasmModulePromise instanceof Promise ) { + return wasmModulePromise; + } + + if ( typeof WebAssembly !== 'object' ) { return; } + + // Soft-dependency on vAPI so that the code here can be used outside of + // uBO (i.e. tests, benchmarks) + if ( typeof vAPI === 'object' && vAPI.canWASM !== true ) { return; } + + // The wasm module will work only if CPU is natively little-endian, + // as we use native uint32 array in our js code. + const uint32s = new Uint32Array(1); + const uint8s = new Uint8Array(uint32s.buffer); + uint32s[0] = 1; + if ( uint8s[0] !== 1 ) { return; } + + wasmModulePromise = wasmModuleFetcher(`${path}biditrie`).catch(reason => { + console.info(reason); + }); + + return wasmModulePromise; + }; +})(); + +/******************************************************************************/ + +export default BidiTrieContainer; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/broadcast.js b/android/app/src/main/assets/extensions/ublock_origin/js/broadcast.js new file mode 100644 index 00000000..61d647f0 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/broadcast.js @@ -0,0 +1,85 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import webext from './webext.js'; + +/******************************************************************************/ + +// Broadcast a message to all uBO contexts + +let broadcastChannel; + +export function broadcast(message) { + if ( broadcastChannel === undefined ) { + broadcastChannel = new self.BroadcastChannel('uBO'); + } + broadcastChannel.postMessage(message); +} + +/******************************************************************************/ + +// Broadcast a message to all uBO contexts and all uBO's content scripts + +export async function broadcastToAll(message) { + broadcast(message); + const tabs = await vAPI.tabs.query({ + discarded: false, + }); + const bcmessage = Object.assign({ broadcast: true }, message); + for ( const tab of tabs ) { + webext.tabs.sendMessage(tab.id, bcmessage).catch(( ) => { }); + } +} + +/******************************************************************************/ + +export function onBroadcast(listener) { + const bc = new self.BroadcastChannel('uBO'); + bc.onmessage = ev => listener(ev.data || {}); + return bc; +} + +/******************************************************************************/ + +export function filteringBehaviorChanged(details = {}) { + if ( typeof details.direction !== 'number' || details.direction >= 0 ) { + filteringBehaviorChanged.throttle.offon(727); + } + broadcast(Object.assign({ what: 'filteringBehaviorChanged' }, details)); +} + +filteringBehaviorChanged.throttle = vAPI.defer.create(( ) => { + const { history, max } = filteringBehaviorChanged; + const now = (Date.now() / 1000) | 0; + if ( history.length >= max ) { + if ( (now - history[0]) <= (10 * 60) ) { return; } + history.shift(); + } + history.push(now); + vAPI.net.handlerBehaviorChanged(); +}); +filteringBehaviorChanged.history = []; +filteringBehaviorChanged.max = Math.min( + browser.webRequest.MAX_HANDLER_BEHAVIOR_CHANGED_CALLS_PER_10_MINUTES - 1, + 19 +); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/cachestorage.js b/android/app/src/main/assets/extensions/ublock_origin/js/cachestorage.js new file mode 100644 index 00000000..91578f66 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/cachestorage.js @@ -0,0 +1,727 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2016-present The uBlock Origin authors + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +import * as s14e from './s14e-serializer.js'; + +import { ubolog } from './console.js'; +import webext from './webext.js'; +import µb from './background.js'; + +/******************************************************************************/ + +const STORAGE_NAME = 'uBlock0CacheStorage'; +const extensionStorage = webext.storage.local; +const pendingWrite = new Map(); + +const keysFromGetArg = arg => { + if ( arg === null || arg === undefined ) { return []; } + const type = typeof arg; + if ( type === 'string' ) { return [ arg ]; } + if ( Array.isArray(arg) ) { return arg; } + if ( type !== 'object' ) { return; } + return Object.keys(arg); +}; + +let fastCache = 'indexedDB'; + +/******************************************************************************* + * + * Extension storage + * + * Always available. + * + * */ + +const cacheStorage = (( ) => { + + const exGet = async (api, wanted, outbin) => { + ubolog('cacheStorage.get:', api.name || 'storage.local', wanted.join()); + const missing = []; + for ( const key of wanted ) { + if ( pendingWrite.has(key) ) { + outbin[key] = pendingWrite.get(key); + } else { + missing.push(key); + } + } + if ( missing.length === 0 ) { return; } + return api.get(missing).then(inbin => { + inbin = inbin || {}; + const found = Object.keys(inbin); + Object.assign(outbin, inbin); + if ( found.length === wanted.length ) { return; } + const missing = []; + for ( const key of wanted ) { + if ( Object.hasOwn(outbin, key) ) { continue; } + missing.push(key); + } + return missing; + }); + }; + + const compress = async (bin, key, data) => { + const µbhs = µb.hiddenSettings; + const after = await s14e.serializeAsync(data, { + compress: µbhs.cacheStorageCompression, + compressThreshold: µbhs.cacheStorageCompressionThreshold, + multithreaded: µbhs.cacheStorageMultithread, + }); + bin[key] = after; + }; + + const decompress = async (bin, key) => { + const data = bin[key]; + if ( s14e.isSerialized(data) === false ) { return; } + const µbhs = µb.hiddenSettings; + const isLarge = data.length >= µbhs.cacheStorageCompressionThreshold; + bin[key] = await s14e.deserializeAsync(data, { + multithreaded: isLarge && µbhs.cacheStorageMultithread || 1, + }); + }; + + const api = { + get(argbin) { + const outbin = {}; + return exGet( + cacheAPIs[fastCache], + keysFromGetArg(argbin), + outbin + ).then(wanted => { + if ( wanted === undefined ) { return; } + return exGet(extensionStorage, wanted, outbin); + }).then(wanted => { + if ( wanted === undefined ) { return; } + if ( argbin instanceof Object === false ) { return; } + if ( Array.isArray(argbin) ) { return; } + for ( const key of wanted ) { + if ( Object.hasOwn(argbin, key) === false ) { continue; } + outbin[key] = argbin[key]; + } + }).then(( ) => { + const promises = []; + for ( const key of Object.keys(outbin) ) { + promises.push(decompress(outbin, key)); + } + return Promise.all(promises).then(( ) => outbin); + }).catch(reason => { + ubolog(reason); + }); + }, + + async keys(regex) { + const results = await Promise.all([ + cacheAPIs[fastCache].keys(regex), + extensionStorage.get(null).catch(( ) => {}), + ]); + const keys = new Set(results[0]); + const bin = results[1] || {}; + for ( const key of Object.keys(bin) ) { + if ( regex && regex.test(key) === false ) { continue; } + keys.add(key); + } + return keys; + }, + + async set(rawbin) { + const keys = Object.keys(rawbin); + if ( keys.length === 0 ) { return; } + ubolog('cacheStorage.set:', keys.join()); + for ( const key of keys ) { + pendingWrite.set(key, rawbin[key]); + } + try { + const serializedbin = {}; + const promises = []; + for ( const key of keys ) { + promises.push(compress(serializedbin, key, rawbin[key])); + } + await Promise.all(promises); + await Promise.all([ + cacheAPIs[fastCache].set(rawbin, serializedbin), + extensionStorage.set(serializedbin), + ]); + } catch(reason) { + ubolog(reason); + } + for ( const key of keys ) { + pendingWrite.delete(key); + } + }, + + remove(...args) { + cacheAPIs[fastCache].remove(...args); + return extensionStorage.remove(...args).catch(reason => { + ubolog(reason); + }); + }, + + clear(...args) { + cacheAPIs[fastCache].clear(...args); + return extensionStorage.clear(...args).catch(reason => { + ubolog(reason); + }); + }, + + select(api) { + if ( Object.hasOwn(cacheAPIs, api) === false ) { return fastCache; } + fastCache = api; + for ( const k of Object.keys(cacheAPIs) ) { + if ( k === api ) { continue; } + cacheAPIs[k]['clear'](); + } + return fastCache; + }, + }; + + // Not all platforms support getBytesInUse + if ( extensionStorage.getBytesInUse instanceof Function ) { + api.getBytesInUse = function(...args) { + return extensionStorage.getBytesInUse(...args).catch(reason => { + ubolog(reason); + }); + }; + } + + return api; +})(); + +/******************************************************************************* + * + * Cache API + * + * Purpose is to mirror cache-related items from extension storage, as its + * read/write operations are faster. May not be available/populated in + * private/incognito mode. + * + * */ + +const cacheAPI = (( ) => { + const caches = globalThis.caches; + let cacheStoragePromise; + + const getAPI = ( ) => { + if ( cacheStoragePromise !== undefined ) { return cacheStoragePromise; } + cacheStoragePromise = new Promise(resolve => { + if ( typeof caches !== 'object' || caches === null ) { + ubolog('CacheStorage API not available'); + resolve(null); + return; + } + resolve(caches.open(STORAGE_NAME)); + }).catch(reason => { + ubolog(reason); + return null; + }); + return cacheStoragePromise; + }; + + const urlPrefix = 'https://ublock0.invalid/'; + + const keyToURL = key => + `${urlPrefix}${encodeURIComponent(key)}`; + + const urlToKey = url => + decodeURIComponent(url.slice(urlPrefix.length)); + + // Cache API is subject to quota so we will use it only for what is key + // performance-wise + const shouldCache = bin => { + const out = {}; + for ( const key of Object.keys(bin) ) { + if ( key.startsWith('cache/' ) ) { + if ( /^cache\/(compiled|selfie)\//.test(key) === false ) { continue; } + } + out[key] = bin[key]; + } + if ( Object.keys(out).length !== 0 ) { return out; } + }; + + const getOne = async key => { + const cache = await getAPI(); + if ( cache === null ) { return; } + return cache.match(keyToURL(key)).then(response => { + if ( response === undefined ) { return; } + return response.text(); + }).then(text => { + if ( text === undefined ) { return; } + return { key, text }; + }).catch(reason => { + ubolog(reason); + }); + }; + + const getAll = async ( ) => { + const cache = await getAPI(); + if ( cache === null ) { return; } + return cache.keys().then(requests => { + const promises = []; + for ( const request of requests ) { + promises.push(getOne(urlToKey(request.url))); + } + return Promise.all(promises); + }).then(responses => { + const bin = {}; + for ( const response of responses ) { + if ( response === undefined ) { continue; } + bin[response.key] = response.text; + } + return bin; + }).catch(reason => { + ubolog(reason); + }); + }; + + const setOne = async (key, text) => { + if ( text === undefined ) { return removeOne(key); } + const blob = new Blob([ text ], { type: 'text/plain;charset=utf-8'}); + const cache = await getAPI(); + if ( cache === null ) { return; } + return cache + .put(keyToURL(key), new Response(blob)) + .catch(reason => { + ubolog(reason); + }); + }; + + const removeOne = async key => { + const cache = await getAPI(); + if ( cache === null ) { return; } + return cache.delete(keyToURL(key)).catch(reason => { + ubolog(reason); + }); + }; + + return { + name: 'cacheAPI', + async get(arg) { + const keys = keysFromGetArg(arg); + if ( keys === undefined ) { return; } + if ( keys.length === 0 ) { + return getAll(); + } + const bin = {}; + const toFetch = keys.slice(); + const hasDefault = typeof arg === 'object' && Array.isArray(arg) === false; + for ( let i = 0; i < toFetch.length; i++ ) { + const key = toFetch[i]; + if ( hasDefault && arg[key] !== undefined ) { + bin[key] = arg[key]; + } + toFetch[i] = getOne(key); + } + const responses = await Promise.all(toFetch); + for ( const response of responses ) { + if ( response === undefined ) { continue; } + const { key, text } = response; + if ( typeof key !== 'string' ) { continue; } + if ( typeof text !== 'string' ) { continue; } + bin[key] = text; + } + if ( Object.keys(bin).length === 0 ) { return; } + return bin; + }, + + async keys(regex) { + const cache = await getAPI(); + if ( cache === null ) { return []; } + return cache.keys().then(requests => + requests.map(r => urlToKey(r.url)) + .filter(k => regex === undefined || regex.test(k)) + ).catch(( ) => []); + }, + + async set(rawbin, serializedbin) { + const bin = shouldCache(serializedbin); + if ( bin === undefined ) { return; } + const keys = Object.keys(bin); + const promises = []; + for ( const key of keys ) { + promises.push(setOne(key, bin[key])); + } + return Promise.all(promises); + }, + + remove(keys) { + const toRemove = []; + if ( typeof keys === 'string' ) { + toRemove.push(removeOne(keys)); + } else if ( Array.isArray(keys) ) { + for ( const key of keys ) { + toRemove.push(removeOne(key)); + } + } + return Promise.all(toRemove); + }, + + async clear() { + if ( typeof caches !== 'object' || caches === null ) { return; } + return globalThis.caches.delete(STORAGE_NAME).catch(reason => { + ubolog(reason); + }); + }, + + shutdown() { + cacheStoragePromise = undefined; + return this.clear(); + }, + }; +})(); + +/******************************************************************************* + * + * In-memory storage + * + * */ + +const memoryStorage = (( ) => { + + const sessionStorage = vAPI.sessionStorage; + + // This should help speed up loading from suspended state in Firefox for + // Android. + // 20240228 Observation: Slows down loading from suspended state in + // Firefox desktop. Could be different in Firefox for Android. + const shouldCache = bin => { + const out = {}; + for ( const key of Object.keys(bin) ) { + if ( key.startsWith('cache/compiled/') ) { continue; } + out[key] = bin[key]; + } + if ( Object.keys(out).length !== 0 ) { return out; } + }; + + return { + name: 'memoryStorage', + get(...args) { + return sessionStorage.get(...args).then(bin => { + return bin; + }).catch(reason => { + ubolog(reason); + }); + }, + + async keys(regex) { + const bin = await this.get(null); + const keys = []; + for ( const key of Object.keys(bin || {}) ) { + if ( regex && regex.test(key) === false ) { continue; } + keys.push(key); + } + return keys; + }, + + async set(rawbin, serializedbin) { + const bin = shouldCache(serializedbin); + if ( bin === undefined ) { return; } + return sessionStorage.set(bin).catch(reason => { + ubolog(reason); + }); + }, + + remove(...args) { + return sessionStorage.remove(...args).catch(reason => { + ubolog(reason); + }); + }, + + clear(...args) { + return sessionStorage.clear(...args).catch(reason => { + ubolog(reason); + }); + }, + + shutdown() { + return this.clear(); + }, + }; +})(); + +/******************************************************************************* + * + * IndexedDB + * + * Deprecated, exists only for the purpose of migrating from older versions. + * + * */ + +const idbStorage = (( ) => { + let dbPromise; + + const getDb = function() { + if ( dbPromise !== undefined ) { return dbPromise; } + dbPromise = new Promise(resolve => { + const req = indexedDB.open(STORAGE_NAME, 1); + req.onupgradeneeded = ev => { + if ( ev.oldVersion === 1 ) { return; } + try { + const db = ev.target.result; + db.createObjectStore(STORAGE_NAME, { keyPath: 'key' }); + } catch { + req.onerror(); + } + }; + req.onsuccess = ev => { + if ( resolve === undefined ) { return; } + resolve(ev.target.result || null); + resolve = undefined; + }; + req.onerror = req.onblocked = ( ) => { + if ( resolve === undefined ) { return; } + ubolog(req.error); + resolve(null); + resolve = undefined; + }; + vAPI.defer.once(10000).then(( ) => { + if ( resolve === undefined ) { return; } + resolve(null); + resolve = undefined; + }); + }).catch(reason => { + ubolog(`idbStorage() / getDb() failed: ${reason}`); + return null; + }); + return dbPromise; + }; + + // Cache API is subject to quota so we will use it only for what is key + // performance-wise + const shouldCache = key => { + if ( key.startsWith('cache/') === false ) { return true; } + return /^cache\/(compiled|selfie)\//.test(key); + }; + + const getAllEntries = async function() { + const db = await getDb(); + if ( db === null ) { return []; } + return new Promise(resolve => { + const entries = []; + const transaction = db.transaction(STORAGE_NAME, 'readonly'); + transaction.oncomplete = + transaction.onerror = + transaction.onabort = ( ) => { + resolve(Promise.all(entries)); + }; + const table = transaction.objectStore(STORAGE_NAME); + const req = table.openCursor(); + req.onsuccess = ev => { + const cursor = ev.target && ev.target.result; + if ( !cursor ) { return; } + const { key, value } = cursor.value; + if ( value instanceof Blob === false ) { + entries.push({ key, value }); + } + cursor.continue(); + }; + }).catch(reason => { + ubolog(`idbStorage() / getAllEntries() failed: ${reason}`); + return []; + }); + }; + + const getAllKeys = async function(regex) { + const db = await getDb(); + if ( db === null ) { return []; } + return new Promise(resolve => { + const keys = []; + const transaction = db.transaction(STORAGE_NAME, 'readonly'); + transaction.oncomplete = + transaction.onerror = + transaction.onabort = ( ) => { + resolve(keys); + }; + const table = transaction.objectStore(STORAGE_NAME); + const req = table.openCursor(); + req.onsuccess = ev => { + const cursor = ev.target && ev.target.result; + if ( !cursor ) { return; } + if ( regex && regex.test(cursor.key) === false ) { return; } + keys.push(cursor.key); + cursor.continue(); + }; + }).catch(reason => { + ubolog(`idbStorage() / getAllKeys() failed: ${reason}`); + return []; + }); + }; + + const getEntries = async function(keys) { + const db = await getDb(); + if ( db === null ) { return []; } + return new Promise(resolve => { + const entries = []; + const gotOne = ev => { + const { result } = ev.target; + if ( typeof result !== 'object' ) { return; } + if ( result === null ) { return; } + const { key, value } = result; + if ( value instanceof Blob ) { return; } + entries.push({ key, value }); + }; + const transaction = db.transaction(STORAGE_NAME, 'readonly'); + transaction.oncomplete = + transaction.onerror = + transaction.onabort = ( ) => { + resolve(Promise.all(entries)); + }; + const table = transaction.objectStore(STORAGE_NAME); + for ( const key of keys ) { + const req = table.get(key); + req.onsuccess = gotOne; + req.onerror = ( ) => { }; + } + }).catch(reason => { + ubolog(`idbStorage() / getEntries() failed: ${reason}`); + return []; + }); + }; + + const getAll = async ( ) => { + const entries = await getAllEntries(); + const outbin = {}; + for ( const { key, value } of entries ) { + outbin[key] = value; + } + return outbin; + }; + + const setEntries = async inbin => { + const keys = Object.keys(inbin); + if ( keys.length === 0 ) { return; } + const db = await getDb(); + if ( db === null ) { return; } + return new Promise(resolve => { + const entries = []; + for ( const key of keys ) { + entries.push({ key, value: inbin[key] }); + } + const transaction = db.transaction(STORAGE_NAME, 'readwrite'); + transaction.oncomplete = + transaction.onerror = + transaction.onabort = ( ) => { + resolve(); + }; + const table = transaction.objectStore(STORAGE_NAME); + for ( const entry of entries ) { + table.put(entry); + } + }).catch(reason => { + ubolog(`idbStorage() / setEntries() failed: ${reason}`); + }); + }; + + const deleteEntries = async arg => { + const keys = Array.isArray(arg) ? arg.slice() : [ arg ]; + if ( keys.length === 0 ) { return; } + const db = await getDb(); + if ( db === null ) { return; } + return new Promise(resolve => { + const transaction = db.transaction(STORAGE_NAME, 'readwrite'); + transaction.oncomplete = + transaction.onerror = + transaction.onabort = ( ) => { + resolve(); + }; + const table = transaction.objectStore(STORAGE_NAME); + for ( const key of keys ) { + table.delete(key); + } + }).catch(reason => { + ubolog(`idbStorage() / deleteEntries() failed: ${reason}`); + }); + }; + + return { + name: 'idbStorage', + async get(argbin) { + const keys = keysFromGetArg(argbin); + if ( keys === undefined ) { return; } + if ( keys.length === 0 ) { return getAll(); } + const entries = await getEntries(keys); + const outbin = {}; + const toRemove = []; + for ( const { key, value } of entries ) { + if ( shouldCache(key) === false ) { + toRemove.push(key); + continue; + } + outbin[key] = value; + } + if ( argbin instanceof Object && Array.isArray(argbin) === false ) { + for ( const key of keys ) { + if ( Object.hasOwn(outbin, key) ) { continue; } + outbin[key] = argbin[key]; + } + } + if ( toRemove.length !== 0 ) { + deleteEntries(toRemove); + } + return outbin; + }, + + async set(rawbin) { + const bin = {}; + for ( const key of Object.keys(rawbin) ) { + if ( shouldCache(key) === false ) { continue; } + bin[key] = rawbin[key]; + } + return setEntries(bin); + }, + + keys(...args) { + return getAllKeys(...args); + }, + + remove(...args) { + return deleteEntries(...args); + }, + + clear() { + return getDb().then(db => { + if ( db === null ) { return; } + db.close(); + indexedDB.deleteDatabase(STORAGE_NAME); + }).catch(reason => { + ubolog(`idbStorage.clear() failed: ${reason}`); + }); + }, + + async shutdown() { + await this.clear(); + dbPromise = undefined; + }, + }; +})(); + +/******************************************************************************/ + +const cacheAPIs = { + 'indexedDB': idbStorage, + 'cacheAPI': cacheAPI, + 'browser.storage.session': memoryStorage, +}; + +/******************************************************************************/ + +export default cacheStorage; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/click2load.js b/android/app/src/main/assets/extensions/ublock_origin/js/click2load.js new file mode 100644 index 00000000..4a9f489e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/click2load.js @@ -0,0 +1,57 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ +/******************************************************************************/ + +(( ) => { + +/******************************************************************************/ + +if ( typeof vAPI !== 'object' ) { return; } + +const url = new URL(self.location.href); +const actualURL = url.searchParams.get('url'); +const frameURL = url.searchParams.get('aliasURL') || actualURL; +const frameURLElem = document.getElementById('frameURL'); + +frameURLElem.children[0].textContent = actualURL; + +frameURLElem.children[1].href = frameURL; +frameURLElem.children[1].title = frameURL; + +document.body.setAttribute('title', actualURL); + +document.body.addEventListener('click', ev => { + if ( ev.isTrusted === false ) { return; } + if ( ev.target.closest('#frameURL') !== null ) { return; } + vAPI.messaging.send('default', { + what: 'clickToLoad', + frameURL, + }).then(ok => { + if ( ok !== true ) { return; } + self.location.replace(frameURL); + }); +}); + +/******************************************************************************/ + +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/cloud-ui.js b/android/app/src/main/assets/extensions/ublock_origin/js/cloud-ui.js new file mode 100644 index 00000000..26bcd03a --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/cloud-ui.js @@ -0,0 +1,234 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-2018 Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { dom, qs$ } from './dom.js'; +import { i18n, i18n$ } from './i18n.js'; +import { faIconsInit } from './fa-icons.js'; + +/******************************************************************************/ + +(( ) => { + +/******************************************************************************/ + +self.cloud = { + options: {}, + datakey: '', + data: undefined, + onPush: null, + onPull: null, +}; + +/******************************************************************************/ + +const widget = qs$('#cloudWidget'); +if ( widget === null ) { return; } + +self.cloud.datakey = dom.attr(widget, 'data-cloud-entry') || ''; +if ( self.cloud.datakey === '' ) { return; } + +/******************************************************************************/ + +const fetchStorageUsed = async function() { + let elem = qs$(widget, '#cloudCapacity'); + if ( dom.cl.has(elem, 'hide') ) { return; } + const result = await vAPI.messaging.send('cloudWidget', { + what: 'cloudUsed', + datakey: self.cloud.datakey, + }); + if ( result instanceof Object === false ) { + dom.cl.add(elem, 'hide'); + return; + } + const units = ' ' + i18n$('genericBytes'); + elem.title = result.max.toLocaleString() + units; + const total = (result.total / result.max * 100).toFixed(1); + elem = elem.firstElementChild; + elem.style.width = `${total}%`; + elem.title = result.total.toLocaleString() + units; + const used = (result.used / result.total * 100).toFixed(1); + elem = elem.firstElementChild; + elem.style.width = `${used}%`; + elem.title = result.used.toLocaleString() + units; +}; + +/******************************************************************************/ + +const fetchCloudData = async function() { + const info = qs$(widget, '#cloudInfo'); + + const entry = await vAPI.messaging.send('cloudWidget', { + what: 'cloudPull', + datakey: self.cloud.datakey, + }); + + const hasData = entry instanceof Object; + if ( hasData === false ) { + dom.attr('#cloudPull', 'disabled', ''); + dom.attr('#cloudPullAndMerge', 'disabled', ''); + info.textContent = '...\n...'; + return entry; + } + + self.cloud.data = entry.data; + + dom.attr('#cloudPull', 'disabled', null); + dom.attr('#cloudPullAndMerge', 'disabled', null); + + const timeOptions = { + weekday: 'short', + year: 'numeric', + month: 'short', + day: 'numeric', + hour: 'numeric', + minute: 'numeric', + second: 'numeric', + timeZoneName: 'short' + }; + + const time = new Date(entry.tstamp); + info.textContent = + entry.source + '\n' + + time.toLocaleString('fullwide', timeOptions); +}; + +/******************************************************************************/ + +const pushData = async function() { + if ( typeof self.cloud.onPush !== 'function' ) { return; } + + const error = await vAPI.messaging.send('cloudWidget', { + what: 'cloudPush', + datakey: self.cloud.datakey, + data: self.cloud.onPush(), + }); + const failed = typeof error === 'string'; + dom.cl.toggle('#cloudPush', 'error', failed); + dom.text('#cloudError', failed ? error : ''); + if ( failed ) { return; } + fetchCloudData(); + fetchStorageUsed(); +}; + +/******************************************************************************/ + +const pullData = function() { + if ( typeof self.cloud.onPull === 'function' ) { + self.cloud.onPull(self.cloud.data, false); + } + dom.cl.remove('#cloudPush', 'error'); + dom.text('#cloudError', ''); +}; + +/******************************************************************************/ + +const pullAndMergeData = function() { + if ( typeof self.cloud.onPull === 'function' ) { + self.cloud.onPull(self.cloud.data, true); + } +}; + +/******************************************************************************/ + +const openOptions = function() { + const input = qs$('#cloudDeviceName'); + input.value = self.cloud.options.deviceName; + dom.attr(input, 'placeholder', self.cloud.options.defaultDeviceName); + dom.cl.add('#cloudOptions', 'show'); +}; + +/******************************************************************************/ + +const closeOptions = function(ev) { + const root = qs$('#cloudOptions'); + if ( ev.target !== root ) { return; } + dom.cl.remove(root, 'show'); +}; + +/******************************************************************************/ + +const submitOptions = async function() { + dom.cl.remove('#cloudOptions', 'show'); + + const options = await vAPI.messaging.send('cloudWidget', { + what: 'cloudSetOptions', + options: { + deviceName: qs$('#cloudDeviceName').value + }, + }); + if ( options instanceof Object ) { + self.cloud.options = options; + } +}; + +/******************************************************************************/ + +const onInitialize = function(options) { + if ( options instanceof Object === false ) { return; } + if ( options.enabled !== true ) { return; } + self.cloud.options = options; + + const xhr = new XMLHttpRequest(); + xhr.open('GET', 'cloud-ui.html', true); + xhr.overrideMimeType('text/html;charset=utf-8'); + xhr.responseType = 'text'; + xhr.onload = function() { + this.onload = null; + const parser = new DOMParser(), + parsed = parser.parseFromString(this.responseText, 'text/html'), + fromParent = parsed.body; + while ( fromParent.firstElementChild !== null ) { + widget.appendChild( + document.adoptNode(fromParent.firstElementChild) + ); + } + + faIconsInit(widget); + + i18n.render(widget); + dom.cl.remove(widget, 'hide'); + + dom.on('#cloudPush', 'click', ( ) => { pushData(); }); + dom.on('#cloudPull', 'click', pullData); + dom.on('#cloudPullAndMerge', 'click', pullAndMergeData); + dom.on('#cloudCog', 'click', openOptions); + dom.on('#cloudOptions', 'click', closeOptions); + dom.on('#cloudOptionsSubmit', 'click', ( ) => { submitOptions(); }); + + fetchCloudData().then(result => { + if ( typeof result !== 'string' ) { return; } + dom.cl.add('#cloudPush', 'error'); + dom.text('#cloudError', result); + }); + fetchStorageUsed(); + }; + xhr.send(); +}; + +vAPI.messaging.send('cloudWidget', { + what: 'cloudGetOptions', +}).then(options => { + onInitialize(options); +}); + +/******************************************************************************/ + +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/code-viewer.js b/android/app/src/main/assets/extensions/ublock_origin/js/code-viewer.js new file mode 100644 index 00000000..e6cd1c01 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/code-viewer.js @@ -0,0 +1,308 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2023-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/* globals CodeMirror, uBlockDashboard, beautifier */ + +import { dom, qs$ } from './dom.js'; +import { getActualTheme } from './theme.js'; + +/******************************************************************************/ + +const urlToDocMap = new Map(); +const params = new URLSearchParams(document.location.search); +let currentURL = ''; + +const cmEditor = new CodeMirror(qs$('#content'), { + autofocus: true, + gutters: [ 'CodeMirror-linenumbers' ], + lineNumbers: true, + lineWrapping: true, + maximizable: false, + matchBrackets: true, + styleActiveLine: { + nonEmpty: true, + }, +}); + +uBlockDashboard.patchCodeMirrorEditor(cmEditor); + +vAPI.messaging.send('dom', { what: 'uiStyles' }).then(response => { + if ( typeof response !== 'object' || response === null ) { return; } + if ( getActualTheme(response.uiTheme) === 'dark' ) { + dom.cl.add('#content .cm-s-default', 'cm-s-night'); + dom.cl.remove('#content .cm-s-default', 'cm-s-default'); + } +}); + +// Convert resource URLs into clickable links to code viewer +cmEditor.addOverlay({ + re: /\b(?:href|src)=["']([^"']+)["']/g, + match: null, + token: function(stream) { + if ( stream.sol() ) { + this.re.lastIndex = 0; + this.match = this.re.exec(stream.string); + } + if ( this.match === null ) { + stream.skipToEnd(); + return null; + } + const end = this.re.lastIndex - 1; + const beg = end - this.match[1].length; + if ( stream.pos < beg ) { + stream.pos = beg; + return null; + } + if ( stream.pos < end ) { + stream.pos = end; + return 'href'; + } + if ( stream.pos < this.re.lastIndex ) { + stream.pos = this.re.lastIndex; + this.match = this.re.exec(stream.string); + return null; + } + stream.skipToEnd(); + return null; + }, +}); + +urlToDocMap.set('', cmEditor.getDoc()); + +/******************************************************************************/ + +async function fetchResource(url) { + let response, text; + const fetchOptions = { + method: 'GET', + referrer: '', + }; + if ( urlToDocMap.has(url) ) { + fetchOptions.cache = 'reload'; + } + try { + response = await fetch(url, fetchOptions); + text = await response.text(); + } catch(reason) { + text = String(reason); + } + let mime = response && response.headers.get('Content-Type') || ''; + mime = mime.replace(/\s*;.*$/, '').trim(); + const beautifierOptions = { + end_with_newline: true, + indent_size: 3, + js: { + max_preserve_newlines: 3, + } + }; + switch ( mime ) { + case 'text/css': + text = beautifier.css(text, beautifierOptions); + break; + case 'text/html': + case 'application/xhtml+xml': + case 'application/xml': + case 'image/svg+xml': + text = beautifier.html(text, beautifierOptions); + break; + case 'text/javascript': + case 'application/javascript': + case 'application/x-javascript': + text = beautifier.js(text, beautifierOptions); + break; + case 'application/json': + text = beautifier.js(text, beautifierOptions); + break; + default: + break; + } + return { mime, text }; +} + +/******************************************************************************/ + +function addPastURLs(url) { + const list = qs$('#pastURLs'); + let current; + for ( let i = 0; i < list.children.length; i++ ) { + const span = list.children[i]; + dom.cl.remove(span, 'selected'); + if ( span.textContent !== url ) { continue; } + current = span; + } + if ( url === '' ) { return; } + if ( current === undefined ) { + current = document.createElement('span'); + current.textContent = url; + list.prepend(current); + } + dom.cl.add(current, 'selected'); +} + +/******************************************************************************/ + +function setInputURL(url) { + const input = qs$('#header input[type="url"]'); + if ( url === input.value ) { return; } + dom.attr(input, 'value', url); + input.value = url; +} + +/******************************************************************************/ + +async function setURL(resourceURL) { + // For convenience, remove potentially existing quotes around the URL + if ( /^(["']).+\1$/.test(resourceURL) ) { + resourceURL = resourceURL.slice(1, -1); + } + let afterURL; + if ( resourceURL !== '' ) { + try { + const url = new URL(resourceURL, currentURL || undefined); + url.hash = ''; + afterURL = url.href; + } catch { + } + if ( afterURL === undefined ) { return; } + } else { + afterURL = ''; + } + if ( afterURL !== '' && /^https?:\/\/./.test(afterURL) === false ) { + return; + } + if ( afterURL === currentURL ) { + if ( afterURL !== resourceURL ) { + setInputURL(afterURL); + } + return; + } + let afterDoc = urlToDocMap.get(afterURL); + if ( afterDoc === undefined ) { + const r = await fetchResource(afterURL) || { mime: '', text: '' }; + afterDoc = new CodeMirror.Doc(r.text, r.mime || ''); + urlToDocMap.set(afterURL, afterDoc); + } + swapDoc(afterDoc); + currentURL = afterURL; + setInputURL(afterURL); + const a = qs$('.cm-search-widget .sourceURL'); + dom.attr(a, 'href', afterURL); + dom.attr(a, 'title', afterURL); + addPastURLs(afterURL); + // For unknown reasons, calling focus() synchronously does not work... + vAPI.defer.once(1).then(( ) => { cmEditor.focus(); }); +} + +/******************************************************************************/ + +function removeURL(url) { + if ( url === '' ) { return; } + const list = qs$('#pastURLs'); + let foundAt = -1; + for ( let i = 0; i < list.children.length; i++ ) { + const span = list.children[i]; + if ( span.textContent !== url ) { continue; } + foundAt = i; + } + if ( foundAt === -1 ) { return; } + list.children[foundAt].remove(); + if ( foundAt >= list.children.length ) { + foundAt = list.children.length - 1; + } + const afterURL = foundAt !== -1 + ? list.children[foundAt].textContent + : ''; + setURL(afterURL); + urlToDocMap.delete(url); +} + +/******************************************************************************/ + +function swapDoc(doc) { + const r = cmEditor.swapDoc(doc); + if ( self.searchThread ) { + self.searchThread.setHaystack(cmEditor.getValue()); + } + const input = qs$('.cm-search-widget-input input[type="search"]'); + if ( input.value !== '' ) { + qs$('.cm-search-widget').dispatchEvent(new Event('input')); + } + return r; +} + +/******************************************************************************/ + +async function start() { + await setURL(params.get('url')); + + dom.on('#header input[type="url"]', 'change', ev => { + setURL(ev.target.value); + }); + + dom.on('#reloadURL', 'click', ( ) => { + const input = qs$('#header input[type="url"]'); + const url = input.value; + const beforeDoc = swapDoc(new CodeMirror.Doc('', '')); + fetchResource(url).then(r => { + if ( urlToDocMap.has(url) === false ) { return; } + const afterDoc = r !== undefined + ? new CodeMirror.Doc(r.text, r.mime || '') + : beforeDoc; + urlToDocMap.set(url, afterDoc); + if ( currentURL !== url ) { return; } + swapDoc(afterDoc); + }); + }); + + dom.on('#removeURL', 'click', ( ) => { + removeURL(qs$('#header input[type="url"]').value); + }); + + dom.on('#pastURLs', 'mousedown', 'span', ev => { + setURL(ev.target.textContent); + }); + + dom.on('#content', 'click', '.cm-href', ev => { + const target = ev.target; + const urlParts = [ target.textContent ]; + let previous = target; + for (;;) { + previous = previous.previousSibling; + if ( previous === null ) { break; } + if ( previous.nodeType !== 1 ) { break; } + if ( previous.classList.contains('cm-href') === false ) { break; } + urlParts.unshift(previous.textContent); + } + let next = target; + for (;;) { + next = next.nextSibling; + if ( next === null ) { break; } + if ( next.nodeType !== 1 ) { break; } + if ( next.classList.contains('cm-href') === false ) { break; } + urlParts.push(next.textContent); + } + setURL(urlParts.join('')); + }); +} + +start(); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/search-thread.js b/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/search-thread.js new file mode 100644 index 00000000..6697d508 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/search-thread.js @@ -0,0 +1,200 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2020-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +(( ) => { +// >>>>> start of local scope + +/******************************************************************************/ + +// Worker context + +if ( + self.WorkerGlobalScope instanceof Object && + self instanceof self.WorkerGlobalScope +) { + let content = ''; + + const doSearch = function(details) { + const reEOLs = /\n\r|\r\n|\n|\r/g; + const t1 = Date.now() + 750; + + let reSearch; + try { + reSearch = new RegExp(details.pattern, details.flags); + } catch { + return; + } + + const response = []; + const maxOffset = content.length; + let iLine = 0; + let iOffset = 0; + let size = 0; + while ( iOffset < maxOffset ) { + // Find next match + const match = reSearch.exec(content); + if ( match === null ) { break; } + // Find number of line breaks between last and current match. + reEOLs.lastIndex = 0; + const eols = content.slice(iOffset, match.index).match(reEOLs); + if ( Array.isArray(eols) ) { + iLine += eols.length; + } + // Store line + response.push(iLine); + size += 1; + // Find next line break. + reEOLs.lastIndex = reSearch.lastIndex; + const eol = reEOLs.exec(content); + iOffset = eol !== null + ? reEOLs.lastIndex + : content.length; + reSearch.lastIndex = iOffset; + iLine += 1; + // Quit if this takes too long + if ( (size & 0x3FF) === 0 && Date.now() >= t1 ) { break; } + } + + return response; + }; + + self.onmessage = function(e) { + const msg = e.data; + + switch ( msg.what ) { + case 'setHaystack': + content = msg.content; + break; + + case 'doSearch': { + const response = doSearch(msg); + self.postMessage({ id: msg.id, response }); + break; + } + default: + break; + } + }; + + return; +} + +/******************************************************************************/ + +// Main context + +{ + const workerTTL = { min: 5 }; + const pendingResponses = new Map(); + const workerTTLTimer = vAPI.defer.create(( ) => { + shutdown(); + }); + + let worker; + let messageId = 1; + + const onWorkerMessage = function(e) { + const msg = e.data; + const resolver = pendingResponses.get(msg.id); + if ( resolver === undefined ) { return; } + pendingResponses.delete(msg.id); + resolver(msg.response); + }; + + const cancelPendingTasks = function() { + for ( const resolver of pendingResponses.values() ) { + resolver(); + } + pendingResponses.clear(); + }; + + const destroy = function() { + shutdown(); + self.searchThread = undefined; + }; + + const shutdown = function() { + if ( worker === undefined ) { return; } + workerTTLTimer.off(); + worker.terminate(); + worker.onmessage = undefined; + worker = undefined; + cancelPendingTasks(); + }; + + const init = function() { + if ( self.searchThread instanceof Object === false ) { return; } + if ( worker === undefined ) { + worker = new Worker('js/codemirror/search-thread.js'); + worker.onmessage = onWorkerMessage; + } + workerTTLTimer.offon(workerTTL); + }; + + const needHaystack = function() { + return worker instanceof Object === false; + }; + + const setHaystack = function(content) { + init(); + worker.postMessage({ what: 'setHaystack', content }); + }; + + const search = function(query, overwrite = true) { + init(); + if ( worker instanceof Object === false ) { + return Promise.resolve(); + } + if ( overwrite ) { + cancelPendingTasks(); + } + const id = messageId++; + worker.postMessage({ + what: 'doSearch', + id, + pattern: query.source, + flags: query.flags, + isRE: query instanceof RegExp + }); + return new Promise(resolve => { + pendingResponses.set(id, resolve); + }); + }; + + self.addEventListener( + 'beforeunload', + ( ) => { destroy(); }, + { once: true } + ); + + self.searchThread = { needHaystack, setHaystack, search, shutdown }; +} + +/******************************************************************************/ + +// <<<<< end of local scope +})(); + +/******************************************************************************/ + +void 0; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/search.js b/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/search.js new file mode 100644 index 00000000..dabc5c19 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/search.js @@ -0,0 +1,516 @@ +// The following code is heavily based on the standard CodeMirror +// search addon found at: https://codemirror.net/addon/search/search.js +// I added/removed and modified code in order to get a closer match to a +// browser's built-in find-in-page feature which are just enough for +// uBlock Origin. +// +// This file was originally wholly imported from: +// https://github.com/codemirror/CodeMirror/blob/3e1bb5fff682f8f6cbfaef0e56c61d62403d4798/addon/search/search.js +// +// And has been modified over time to better suit uBO's usage and coding style: +// https://github.com/gorhill/uBlock/commits/master/src/js/codemirror/search.js +// +// The original copyright notice is reproduced below: + +// ===== +// CodeMirror, copyright (c) by Marijn Haverbeke and others +// Distributed under an MIT license: http://codemirror.net/LICENSE + +// Define search commands. Depends on dialog.js or another +// implementation of the openDialog method. + +// Replace works a little oddly -- it will do the replace on the next +// Ctrl-G (or whatever is bound to findNext) press. You prevent a +// replace by making sure the match is no longer selected when hitting +// Ctrl-G. +// ===== + +import { dom, qs$ } from '../dom.js'; +import { i18n$ } from '../i18n.js'; + +{ + const CodeMirror = self.CodeMirror; + + CodeMirror.defineOption('maximizable', true, (cm, maximizable) => { + if ( typeof maximizable !== 'boolean' ) { return; } + const wrapper = cm.getWrapperElement(); + if ( wrapper === null ) { return; } + const container = wrapper.closest('.codeMirrorContainer'); + if ( container === null ) { return; } + container.dataset.maximizable = `${maximizable}`; + }); + + const searchOverlay = function(query, caseInsensitive) { + if ( typeof query === 'string' ) + query = new RegExp( + query.replace(/[-[\]/{}()*+?.\\^$|]/g, '\\$&'), + caseInsensitive ? 'gi' : 'g' + ); + else if ( !query.global ) + query = new RegExp(query.source, query.ignoreCase ? 'gi' : 'g'); + + return { + token: function(stream) { + query.lastIndex = stream.pos; + const match = query.exec(stream.string); + if ( match && match.index === stream.pos ) { + stream.pos += match[0].length || 1; + return 'searching'; + } else if ( match ) { + stream.pos = match.index; + } else { + stream.skipToEnd(); + } + } + }; + }; + + const searchWidgetKeydownHandler = function(cm, ev) { + const keyName = CodeMirror.keyName(ev); + if ( !keyName ) { return; } + CodeMirror.lookupKey( + keyName, + cm.getOption('keyMap'), + function(command) { + if ( widgetCommandHandler(cm, command) ) { + ev.preventDefault(); + ev.stopPropagation(); + } + } + ); + }; + + const searchWidgetInputHandler = function(cm, ev) { + const state = getSearchState(cm); + if ( ev.isTrusted !== true ) { + if ( state.queryText === '' ) { + clearSearch(cm); + } else { + cm.operation(function() { + startSearch(cm, state); + }); + } + return; + } + if ( queryTextFromSearchWidget(cm) === state.queryText ) { return; } + state.queryTimer.offon(350); + }; + + const searchWidgetClickHandler = (ev, cm) => { + if ( ev.button !== 0 ) { return; } + const target = ev.target; + const tcl = target.classList; + if ( tcl.contains('cm-search-widget-up') ) { + findNext(cm, -1); + } else if ( tcl.contains('cm-search-widget-down') ) { + findNext(cm, 1); + } else if ( tcl.contains('cm-linter-widget-up') ) { + findNextError(cm, -1); + } else if ( tcl.contains('cm-linter-widget-down') ) { + findNextError(cm, 1); + } else if ( tcl.contains('cm-maximize') ) { + const container = target.closest('.codeMirrorContainer'); + if ( container !== null ) { + container.classList.toggle('cm-maximized'); + } + } + if ( target.localName !== 'input' ) { + cm.focus(); + } + }; + + const queryTextFromSearchWidget = function(cm) { + return getSearchState(cm).widget.querySelector('input[type="search"]').value; + }; + + const queryTextToSearchWidget = function(cm, q) { + const input = getSearchState(cm).widget.querySelector('input[type="search"]'); + if ( typeof q === 'string' && q !== input.value ) { + input.value = q; + } + input.setSelectionRange(0, input.value.length); + input.focus(); + }; + + const SearchState = function(cm) { + this.query = null; + this.panel = null; + const widgetParent = document.querySelector('.cm-search-widget-template').cloneNode(true); + this.widget = widgetParent.children[0]; + this.widget.addEventListener('keydown', searchWidgetKeydownHandler.bind(null, cm)); + this.widget.addEventListener('input', searchWidgetInputHandler.bind(null, cm)); + this.widget.addEventListener('click', ev => { + searchWidgetClickHandler(ev, cm); + }); + if ( typeof cm.addPanel === 'function' ) { + this.panel = cm.addPanel(this.widget); + } + this.queryText = ''; + this.dirty = true; + this.lines = []; + cm.on('changes', (cm, changes) => { + for ( const change of changes ) { + if ( change.text.length !== 0 || change.removed !== 0 ) { + this.dirty = true; + break; + } + } + }); + cm.on('cursorActivity', cm => { + updateCount(cm); + }); + this.queryTimer = vAPI.defer.create(( ) => { + findCommit(cm, 0); + }); + }; + + // We want the search widget to behave as if the focus was on the + // CodeMirror editor. + + const reSearchCommands = /^(?:find|findNext|findPrev|newlineAndIndent)$/; + + const widgetCommandHandler = function(cm, command) { + if ( reSearchCommands.test(command) === false ) { return false; } + const queryText = queryTextFromSearchWidget(cm); + if ( command === 'find' ) { + queryTextToSearchWidget(cm); + return true; + } + if ( queryText.length !== 0 ) { + findNext(cm, command === 'findPrev' ? -1 : 1); + } + return true; + }; + + const getSearchState = function(cm) { + return cm.state.search || (cm.state.search = new SearchState(cm)); + }; + + const queryCaseInsensitive = function(query) { + return typeof query === 'string' && query === query.toLowerCase(); + }; + + // Heuristic: if the query string is all lowercase, do a case insensitive search. + const getSearchCursor = function(cm, query, pos) { + return cm.getSearchCursor( + query, + pos, + { caseFold: queryCaseInsensitive(query), multiline: false } + ); + }; + + // https://github.com/uBlockOrigin/uBlock-issues/issues/658 + // Modified to backslash-escape ONLY widely-used control characters. + const parseString = function(string) { + return string.replace(/\\[nrt\\]/g, match => { + if ( match === '\\n' ) { return '\n'; } + if ( match === '\\r' ) { return '\r'; } + if ( match === '\\t' ) { return '\t'; } + if ( match === '\\\\' ) { return '\\'; } + return match; + }); + }; + + const reEscape = /[.*+\-?^${}()|[\]\\]/g; + + // Must always return a RegExp object. + // + // Assume case-sensitivity if there is at least one uppercase in plain + // query text. + const parseQuery = function(query) { + let flags = 'i'; + let reParsed = query.match(/^\/(.+)\/([iu]*)$/); + if ( reParsed !== null ) { + try { + const re = new RegExp(reParsed[1], reParsed[2]); + query = re.source; + flags = re.flags; + } + catch { + reParsed = null; + } + } + if ( reParsed === null ) { + if ( /[A-Z]/.test(query) ) { flags = ''; } + query = parseString(query).replace(reEscape, '\\$&'); + } + if ( typeof query === 'string' ? query === '' : query.test('') ) { + query = 'x^'; + } + return new RegExp(query, 'gm' + flags); + }; + + let intlNumberFormat; + + const formatNumber = function(n) { + if ( intlNumberFormat === undefined ) { + intlNumberFormat = null; + if ( Intl.NumberFormat instanceof Function ) { + const intl = new Intl.NumberFormat(undefined, { + notation: 'compact', + maximumSignificantDigits: 3 + }); + if ( intl.resolvedOptions().notation ) { + intlNumberFormat = intl; + } + } + } + return n > 10000 && intlNumberFormat instanceof Object + ? intlNumberFormat.format(n) + : n.toLocaleString(); + }; + + const updateCount = function(cm) { + const state = getSearchState(cm); + const lines = state.lines; + const current = cm.getCursor().line; + let l = 0; + let r = lines.length; + let i = -1; + while ( l < r ) { + i = l + r >>> 1; + const candidate = lines[i]; + if ( current === candidate ) { break; } + if ( current < candidate ) { + r = i; + } else /* if ( current > candidate ) */ { + l = i + 1; + } + } + let text = ''; + if ( i !== -1 ) { + text = formatNumber(i + 1); + if ( lines[i] !== current ) { + text = '~' + text; + } + text = text + '\xA0/\xA0'; + } + const count = lines.length; + text += formatNumber(count); + const span = state.widget.querySelector('.cm-search-widget-count'); + span.textContent = text; + span.title = count.toLocaleString(); + }; + + const startSearch = function(cm, state) { + state.query = parseQuery(state.queryText); + if ( state.overlay !== undefined ) { + cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query)); + } + state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query)); + cm.addOverlay(state.overlay); + if ( state.dirty || self.searchThread.needHaystack() ) { + self.searchThread.setHaystack(cm.getValue()); + state.dirty = false; + } + self.searchThread.search(state.query).then(lines => { + if ( Array.isArray(lines) === false ) { return; } + state.lines = lines; + const count = lines.length; + updateCount(cm); + if ( state.annotate !== undefined ) { + state.annotate.clear(); + state.annotate = undefined; + } + if ( count === 0 ) { return; } + state.annotate = cm.annotateScrollbar('CodeMirror-search-match'); + const annotations = []; + let lineBeg = -1; + let lineEnd = -1; + for ( const line of lines ) { + if ( lineBeg === -1 ) { + lineBeg = line; + lineEnd = line + 1; + continue; + } else if ( line === lineEnd ) { + lineEnd = line + 1; + continue; + } + annotations.push({ + from: { line: lineBeg, ch: 0 }, + to: { line: lineEnd, ch: 0 } + }); + lineBeg = -1; + } + if ( lineBeg !== -1 ) { + annotations.push({ + from: { line: lineBeg, ch: 0 }, + to: { line: lineEnd, ch: 0 } + }); + } + state.annotate.update(annotations); + }); + state.widget.setAttribute('data-query', state.queryText); + }; + + const findNext = function(cm, dir, callback) { + cm.operation(function() { + const state = getSearchState(cm); + if ( !state.query ) { return; } + let cursor = getSearchCursor( + cm, + state.query, + dir <= 0 ? cm.getCursor('from') : cm.getCursor('to') + ); + const previous = dir < 0; + if (!cursor.find(previous)) { + cursor = getSearchCursor( + cm, + state.query, + previous + ? CodeMirror.Pos(cm.lastLine()) + : CodeMirror.Pos(cm.firstLine(), 0) + ); + if (!cursor.find(previous)) return; + } + cm.setSelection(cursor.from(), cursor.to()); + const { clientHeight } = cm.getScrollInfo(); + cm.scrollIntoView( + { from: cursor.from(), to: cursor.to() }, + clientHeight >>> 1 + ); + if (callback) callback(cursor.from(), cursor.to()); + }); + }; + + const findNextError = function(cm, dir) { + const doc = cm.getDoc(); + const cursor = cm.getCursor('from'); + const cursorLine = cursor.line; + const start = dir < 0 ? 0 : cursorLine + 1; + const end = dir < 0 ? cursorLine : doc.lineCount(); + let found = -1; + doc.eachLine(start, end, lineHandle => { + const markers = lineHandle.gutterMarkers || null; + if ( markers === null ) { return; } + const marker = markers['CodeMirror-lintgutter']; + if ( marker === undefined ) { return; } + if ( marker.dataset.error !== 'y' ) { return; } + const line = lineHandle.lineNo(); + if ( dir < 0 ) { + found = line; + return; + } + found = line; + return true; + }); + if ( found === -1 || found === cursorLine ) { return; } + cm.getDoc().setCursor(found); + const { clientHeight } = cm.getScrollInfo(); + cm.scrollIntoView({ line: found, ch: 0 }, clientHeight >>> 1); + }; + + const clearSearch = function(cm, hard) { + cm.operation(function() { + const state = getSearchState(cm); + if ( state.query ) { + state.query = state.queryText = null; + } + state.lines = []; + if ( state.overlay !== undefined ) { + cm.removeOverlay(state.overlay); + state.overlay = undefined; + } + if ( state.annotate ) { + state.annotate.clear(); + state.annotate = undefined; + } + state.widget.removeAttribute('data-query'); + if ( hard ) { + state.panel.clear(); + state.panel = null; + state.widget = null; + cm.state.search = null; + } + }); + }; + + const findCommit = function(cm, dir) { + const state = getSearchState(cm); + state.queryTimer.off(); + const queryText = queryTextFromSearchWidget(cm); + if ( queryText === state.queryText ) { return; } + state.queryText = queryText; + if ( state.queryText === '' ) { + clearSearch(cm); + } else { + cm.operation(function() { + startSearch(cm, state); + findNext(cm, dir); + }); + } + }; + + const findCommand = function(cm) { + let queryText = cm.getSelection() || undefined; + if ( !queryText ) { + const word = cm.findWordAt(cm.getCursor()); + queryText = cm.getRange(word.anchor, word.head); + if ( /^\W|\W$/.test(queryText) ) { + queryText = undefined; + } + cm.setCursor(word.anchor); + } + queryTextToSearchWidget(cm, queryText); + findCommit(cm, 1); + }; + + const findNextCommand = function(cm) { + const state = getSearchState(cm); + if ( state.query ) { return findNext(cm, 1); } + }; + + const findPrevCommand = function(cm) { + const state = getSearchState(cm); + if ( state.query ) { return findNext(cm, -1); } + }; + + { + const searchWidgetTemplate = [ + '', + ].join('\n'); + const domParser = new DOMParser(); + const doc = domParser.parseFromString(searchWidgetTemplate, 'text/html'); + const widgetTemplate = document.adoptNode(doc.body.firstElementChild); + document.body.appendChild(widgetTemplate); + } + + CodeMirror.commands.find = findCommand; + CodeMirror.commands.findNext = findNextCommand; + CodeMirror.commands.findPrev = findPrevCommand; + + CodeMirror.defineInitHook(function(cm) { + getSearchState(cm); + cm.on('linterDone', details => { + const linterWidget = qs$('.cm-linter-widget'); + const count = details.errorCount; + if ( linterWidget.dataset.lint === `${count}` ) { return; } + linterWidget.dataset.lint = `${count}`; + dom.text( + qs$(linterWidget, '.cm-linter-widget-count'), + i18n$('linterMainReport').replace('{{count}}', count.toLocaleString()) + ); + }); + }); +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/ubo-dynamic-filtering.js b/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/ubo-dynamic-filtering.js new file mode 100644 index 00000000..6a6e18ac --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/ubo-dynamic-filtering.js @@ -0,0 +1,237 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/* global CodeMirror */ + +CodeMirror.defineMode('ubo-dynamic-filtering', ( ) => { + + const validSwitches = new Set([ + 'no-strict-blocking:', + 'no-popups:', + 'no-cosmetic-filtering:', + 'no-remote-fonts:', + 'no-large-media:', + 'no-csp-reports:', + 'no-scripting:', + ]); + const validSwitcheStates = new Set([ + 'true', + 'false', + ]); + const validHnRuleTypes = new Set([ + '*', + '3p', + 'image', + 'inline-script', + '1p-script', + '3p-script', + '3p-frame', + ]); + const invalidURLRuleTypes = new Set([ + 'doc', + 'main_frame', + ]); + const validActions = new Set([ + 'block', + 'allow', + 'noop', + ]); + const hnValidator = new URL(self.location.href); + const reBadHn = /[%]|^\.|\.$/; + const slices = []; + let sliceIndex = 0; + let sliceCount = 0; + let hostnameToDomainMap = new Map(); + let psl; + + const isValidHostname = hnin => { + if ( hnin === '*' ) { return true; } + hnValidator.hostname = '_'; + try { + hnValidator.hostname = hnin; + } catch { + return false; + } + const hnout = hnValidator.hostname; + return hnout !== '_' && hnout !== '' && reBadHn.test(hnout) === false; + }; + + const addSlice = (len, style = null) => { + let i = sliceCount; + if ( i === slices.length ) { + slices[i] = { len: 0, style: null }; + } + const entry = slices[i]; + entry.len = len; + entry.style = style; + sliceCount += 1; + }; + + const addMatchSlice = (match, style = null) => { + const len = match !== null ? match[0].length : 0; + addSlice(len, style); + return match !== null ? match.input.slice(len) : ''; + }; + + const addMatchHnSlices = (match, style = null) => { + const hn = match[0]; + if ( hn === '*' ) { + return addMatchSlice(match, style); + } + let dn = hostnameToDomainMap.get(hn) || ''; + if ( dn === '' && psl !== undefined ) { + dn = /(\d|\])$/.test(hn) ? hn : (psl.getDomain(hn) || hn); + } + const entityBeg = hn.length - dn.length; + if ( entityBeg !== 0 ) { + addSlice(entityBeg, style); + } + let entityEnd = dn.indexOf('.'); + if ( entityEnd === -1 ) { entityEnd = dn.length; } + addSlice(entityEnd, style !== null ? `${style} strong` : 'strong'); + if ( entityEnd < dn.length ) { + addSlice(dn.length - entityEnd, style); + } + return match.input.slice(hn.length); + }; + + const makeSlices = (stream, opts) => { + sliceIndex = 0; + sliceCount = 0; + let { string } = stream; + if ( string === '...' ) { return; } + const { sortType } = opts; + const reNotToken = /^\s+/; + const reToken = /^\S+/; + const tokens = []; + // leading whitespaces + let match = reNotToken.exec(string); + if ( match !== null ) { + string = addMatchSlice(match); + } + // first token + match = reToken.exec(string); + if ( match === null ) { return; } + tokens.push(match[0]); + // hostname or switch + const isSwitchRule = validSwitches.has(match[0]); + if ( isSwitchRule ) { + string = addMatchSlice(match, sortType === 0 ? 'sortkey' : null); + } else if ( isValidHostname(match[0]) ) { + if ( sortType === 1 ) { + string = addMatchHnSlices(match, 'sortkey'); + } else { + string = addMatchHnSlices(match, null); + } + } else { + string = addMatchSlice(match, 'error'); + } + // whitespaces before second token + match = reNotToken.exec(string); + if ( match === null ) { return; } + string = addMatchSlice(match); + // second token + match = reToken.exec(string); + if ( match === null ) { return; } + tokens.push(match[0]); + // hostname or url + const isURLRule = isSwitchRule === false && match[0].indexOf('://') > 0; + if ( isURLRule ) { + string = addMatchSlice(match, sortType === 2 ? 'sortkey' : null); + } else if ( isValidHostname(match[0]) === false ) { + string = addMatchSlice(match, 'error'); + } else if ( sortType === 1 && isSwitchRule || sortType === 2 ) { + string = addMatchHnSlices(match, 'sortkey'); + } else { + string = addMatchHnSlices(match, null); + } + // whitespaces before third token + match = reNotToken.exec(string); + if ( match === null ) { return; } + string = addMatchSlice(match); + // third token + match = reToken.exec(string); + if ( match === null ) { return; } + tokens.push(match[0]); + // rule type or switch state + if ( isSwitchRule ) { + string = validSwitcheStates.has(match[0]) + ? addMatchSlice(match, match[0] === 'true' ? 'blockrule' : 'allowrule') + : addMatchSlice(match, 'error'); + } else if ( isURLRule ) { + string = invalidURLRuleTypes.has(match[0]) + ? addMatchSlice(match, 'error') + : addMatchSlice(match); + } else if ( tokens[1] === '*' ) { + string = validHnRuleTypes.has(match[0]) + ? addMatchSlice(match) + : addMatchSlice(match, 'error'); + } else { + string = match[0] === '*' + ? addMatchSlice(match) + : addMatchSlice(match, 'error'); + } + // whitespaces before fourth token + match = reNotToken.exec(string); + if ( match === null ) { return; } + string = addMatchSlice(match); + // fourth token + match = reToken.exec(string); + if ( match === null ) { return; } + tokens.push(match[0]); + string = isSwitchRule || validActions.has(match[0]) === false + ? addMatchSlice(match, 'error') + : addMatchSlice(match, `${match[0]}rule`); + // whitespaces before end of line + match = reNotToken.exec(string); + if ( match === null ) { return; } + string = addMatchSlice(match); + // any token beyond fourth token is invalid + match = reToken.exec(string); + if ( match !== null ) { + string = addMatchSlice(null, 'error'); + } + }; + + const token = function(stream) { + if ( stream.sol() ) { + makeSlices(stream, this); + } + if ( sliceIndex >= sliceCount ) { + stream.skipToEnd(stream); + return null; + } + const { len, style } = slices[sliceIndex++]; + if ( len === 0 ) { + stream.skipToEnd(); + } else { + stream.pos += len; + } + return style; + }; + + return { + token, + sortType: 1, + setHostnameToDomainMap: a => { hostnameToDomainMap = a; }, + setPSL: a => { psl = a; }, + }; +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/ubo-static-filtering.js b/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/ubo-static-filtering.js new file mode 100644 index 00000000..2dea1f8a --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/codemirror/ubo-static-filtering.js @@ -0,0 +1,1230 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2018-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/* global CodeMirror */ + +/******************************************************************************/ + +import '../../lib/regexanalyzer/regex.js'; +import * as sfp from '../static-filtering-parser.js'; +import { dom, qs$ } from '../dom.js'; +import { tokenizableStrFromRegex } from '../regex-analyzer.js'; + +/******************************************************************************/ + +const redirectNames = new Map(); +const scriptletNames = new Map(); +const preparseDirectiveEnv = []; +const preparseDirectiveHints = []; +const originHints = []; +let hintHelperRegistered = false; + +/******************************************************************************/ + +CodeMirror.defineOption('trustedSource', false, (cm, trusted) => { + if ( typeof trusted !== 'boolean' ) { return; } + self.dispatchEvent(new CustomEvent('trustedSource', { + detail: { cm, trusted }, + })); +}); + +CodeMirror.defineOption('trustedScriptletTokens', undefined, (cm, tokens) => { + if ( tokens === undefined || tokens === null ) { return; } + if ( typeof tokens[Symbol.iterator] !== 'function' ) { return; } + self.dispatchEvent(new CustomEvent('trustedScriptletTokens', { + detail: new Set(tokens), + })); +}); + +/******************************************************************************/ + +const uBOStaticFilteringMode = (( ) => { + const redirectTokenStyle = (mode, node) => { + const rawToken = mode.astParser.getNodeString(node || mode.currentWalkerNode); + const { token } = sfp.parseRedirectValue(rawToken); + return redirectNames.has(token) ? 'value' : 'value warning'; + }; + + const nodeHasError = (mode, node) => { + return mode.astParser.getNodeFlags( + node || mode.currentWalkerNode, sfp.NODE_FLAG_ERROR + ) !== 0; + }; + + const reGoodRegexToken = /[^\x01%0-9A-Za-z][%0-9A-Za-z]{7,}|[^\x01%0-9A-Za-z][%0-9A-Za-z]{1,6}[^\x01%0-9A-Za-z]/; + + const colorFromAstNode = mode => { + if ( mode.astParser.nodeIsEmptyString(mode.currentWalkerNode) ) { return '+'; } + if ( nodeHasError(mode) ) { return 'error'; } + const nodeType = mode.astParser.getNodeType(mode.currentWalkerNode); + switch ( nodeType ) { + case sfp.NODE_TYPE_WHITESPACE: + return ''; + case sfp.NODE_TYPE_COMMENT: + if ( mode.astWalker.canGoDown() ) { break; } + return 'comment'; + case sfp.NODE_TYPE_COMMENT_URL: + return 'comment link'; + case sfp.NODE_TYPE_IGNORE: + return 'comment'; + case sfp.NODE_TYPE_PREPARSE_DIRECTIVE: + case sfp.NODE_TYPE_PREPARSE_DIRECTIVE_VALUE: + return 'directive'; + case sfp.NODE_TYPE_PREPARSE_DIRECTIVE_IF_VALUE: { + const raw = mode.astParser.getNodeString(mode.currentWalkerNode); + const state = sfp.utils.preparser.evaluateExpr(raw, preparseDirectiveEnv); + return state ? 'positive strong' : 'negative strong'; + } + case sfp.NODE_TYPE_EXT_OPTIONS_ANCHOR: + return mode.astParser.getFlags(sfp.AST_FLAG_IS_EXCEPTION) + ? 'tag strong' + : 'def strong'; + case sfp.NODE_TYPE_EXT_DECORATION: + return 'def'; + case sfp.NODE_TYPE_EXT_PATTERN_RAW: + if ( mode.astWalker.canGoDown() ) { break; } + return 'variable'; + case sfp.NODE_TYPE_EXT_PATTERN_COSMETIC: + case sfp.NODE_TYPE_EXT_PATTERN_HTML: + return 'variable'; + case sfp.NODE_TYPE_EXT_PATTERN_RESPONSEHEADER: + case sfp.NODE_TYPE_EXT_PATTERN_SCRIPTLET: + if ( mode.astWalker.canGoDown() ) { break; } + return 'variable'; + case sfp.NODE_TYPE_EXT_PATTERN_SCRIPTLET_TOKEN: { + const token = mode.astParser.getNodeString(mode.currentWalkerNode); + if ( scriptletNames.has(token) === false ) { + return 'warning'; + } + return 'variable'; + } + case sfp.NODE_TYPE_EXT_PATTERN_SCRIPTLET_ARG: + return 'variable'; + case sfp.NODE_TYPE_NET_EXCEPTION: + return 'tag strong'; + case sfp.NODE_TYPE_NET_PATTERN: + if ( mode.astWalker.canGoDown() ) { break; } + if ( mode.astParser.isRegexPattern() ) { + const s = mode.astParser.getNodeString(mode.currentWalkerNode); + const tokenizable = tokenizableStrFromRegex(s); + if ( reGoodRegexToken.test(tokenizable) === false ) { + return 'variable warning'; + } + return 'variable notice'; + } + return 'variable'; + case sfp.NODE_TYPE_NET_PATTERN_PART: + return 'variable'; + case sfp.NODE_TYPE_NET_PATTERN_PART_SPECIAL: + return 'keyword strong'; + case sfp.NODE_TYPE_NET_PATTERN_PART_UNICODE: + return 'variable unicode'; + case sfp.NODE_TYPE_NET_PATTERN_LEFT_HNANCHOR: + case sfp.NODE_TYPE_NET_PATTERN_LEFT_ANCHOR: + case sfp.NODE_TYPE_NET_PATTERN_RIGHT_ANCHOR: + case sfp.NODE_TYPE_NET_OPTION_NAME_NOT: + return 'keyword strong'; + case sfp.NODE_TYPE_NET_OPTIONS_ANCHOR: + case sfp.NODE_TYPE_NET_OPTION_SEPARATOR: + mode.lastNetOptionType = 0; + return 'def strong'; + case sfp.NODE_TYPE_NET_OPTION_NAME_UNKNOWN: + mode.lastNetOptionType = 0; + return 'error'; + case sfp.NODE_TYPE_NET_OPTION_NAME_1P: + case sfp.NODE_TYPE_NET_OPTION_NAME_STRICT1P: + case sfp.NODE_TYPE_NET_OPTION_NAME_3P: + case sfp.NODE_TYPE_NET_OPTION_NAME_STRICT3P: + case sfp.NODE_TYPE_NET_OPTION_NAME_ALL: + case sfp.NODE_TYPE_NET_OPTION_NAME_BADFILTER: + case sfp.NODE_TYPE_NET_OPTION_NAME_CNAME: + case sfp.NODE_TYPE_NET_OPTION_NAME_CSP: + case sfp.NODE_TYPE_NET_OPTION_NAME_CSS: + case sfp.NODE_TYPE_NET_OPTION_NAME_DENYALLOW: + case sfp.NODE_TYPE_NET_OPTION_NAME_DOC: + case sfp.NODE_TYPE_NET_OPTION_NAME_EHIDE: + case sfp.NODE_TYPE_NET_OPTION_NAME_EMPTY: + case sfp.NODE_TYPE_NET_OPTION_NAME_FONT: + case sfp.NODE_TYPE_NET_OPTION_NAME_FRAME: + case sfp.NODE_TYPE_NET_OPTION_NAME_FROM: + case sfp.NODE_TYPE_NET_OPTION_NAME_GENERICBLOCK: + case sfp.NODE_TYPE_NET_OPTION_NAME_GHIDE: + case sfp.NODE_TYPE_NET_OPTION_NAME_IMAGE: + case sfp.NODE_TYPE_NET_OPTION_NAME_IMPORTANT: + case sfp.NODE_TYPE_NET_OPTION_NAME_INLINEFONT: + case sfp.NODE_TYPE_NET_OPTION_NAME_INLINESCRIPT: + case sfp.NODE_TYPE_NET_OPTION_NAME_MATCHCASE: + case sfp.NODE_TYPE_NET_OPTION_NAME_MEDIA: + case sfp.NODE_TYPE_NET_OPTION_NAME_METHOD: + case sfp.NODE_TYPE_NET_OPTION_NAME_MP4: + case sfp.NODE_TYPE_NET_OPTION_NAME_NOOP: + case sfp.NODE_TYPE_NET_OPTION_NAME_OBJECT: + case sfp.NODE_TYPE_NET_OPTION_NAME_OTHER: + case sfp.NODE_TYPE_NET_OPTION_NAME_PING: + case sfp.NODE_TYPE_NET_OPTION_NAME_POPUNDER: + case sfp.NODE_TYPE_NET_OPTION_NAME_POPUP: + case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECT: + case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECTRULE: + case sfp.NODE_TYPE_NET_OPTION_NAME_REMOVEPARAM: + case sfp.NODE_TYPE_NET_OPTION_NAME_RESPONSEHEADER: + case sfp.NODE_TYPE_NET_OPTION_NAME_REQUESTHEADER: + case sfp.NODE_TYPE_NET_OPTION_NAME_SCRIPT: + case sfp.NODE_TYPE_NET_OPTION_NAME_SHIDE: + case sfp.NODE_TYPE_NET_OPTION_NAME_TO: + case sfp.NODE_TYPE_NET_OPTION_NAME_TOP: + case sfp.NODE_TYPE_NET_OPTION_NAME_URLTRANSFORM: + case sfp.NODE_TYPE_NET_OPTION_NAME_XHR: + case sfp.NODE_TYPE_NET_OPTION_NAME_WEBRTC: + case sfp.NODE_TYPE_NET_OPTION_NAME_WEBSOCKET: + mode.lastNetOptionType = nodeType; + return 'def'; + case sfp.NODE_TYPE_NET_OPTION_ASSIGN: + case sfp.NODE_TYPE_NET_OPTION_QUOTE: + return 'def'; + case sfp.NODE_TYPE_NET_OPTION_VALUE: + if ( mode.astWalker.canGoDown() ) { break; } + switch ( mode.lastNetOptionType ) { + case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECT: + case sfp.NODE_TYPE_NET_OPTION_NAME_REDIRECTRULE: + return redirectTokenStyle(mode); + default: + break; + } + return 'value'; + case sfp.NODE_TYPE_OPTION_VALUE_NOT: + return 'keyword strong'; + case sfp.NODE_TYPE_OPTION_VALUE_DOMAIN: + return 'value'; + case sfp.NODE_TYPE_OPTION_VALUE_SEPARATOR: + return 'def'; + default: + break; + } + return '+'; + }; + + class ModeState { + constructor() { + this.astParser = new sfp.AstFilterParser({ + interactive: true, + nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), + }); + this.astWalker = this.astParser.getWalker(); + this.currentWalkerNode = 0; + this.lastNetOptionType = 0; + self.addEventListener('trustedSource', ev => { + const { trusted } = ev.detail; + this.astParser.options.trustedSource = trusted; + }); + self.addEventListener('trustedScriptletTokens', ev => { + this.astParser.options.trustedScriptletTokens = ev.detail; + }); + } + } + + return { + state: null, + startState() { + if ( this.state === null ) { + this.state = new ModeState(); + } + return this.state; + }, + copyState(other) { + return other; + }, + token(stream, state) { + if ( stream.sol() ) { + state.astParser.parse(stream.string); + if ( state.astParser.getFlags(sfp.AST_FLAG_UNSUPPORTED) !== 0 ) { + stream.skipToEnd(); + return 'error'; + } + if ( state.astParser.getType() === sfp.AST_TYPE_NONE ) { + stream.skipToEnd(); + return 'comment'; + } + state.currentWalkerNode = state.astWalker.reset(); + } else if ( nodeHasError(state) ) { + state.currentWalkerNode = state.astWalker.right(); + } else { + state.currentWalkerNode = state.astWalker.next(); + } + let style = ''; + while ( state.currentWalkerNode !== 0 ) { + style = colorFromAstNode(state, stream); + if ( style !== '+' ) { break; } + state.currentWalkerNode = state.astWalker.next(); + } + if ( style === '+' ) { + stream.skipToEnd(); + return null; + } + stream.pos = state.astParser.getNodeStringEnd(state.currentWalkerNode); + if ( state.astParser.isNetworkFilter() ) { + return style ? `line-cm-net ${style}` : 'line-cm-net'; + } + if ( state.astParser.isExtendedFilter() ) { + let flavor = ''; + if ( state.astParser.isCosmeticFilter() ) { + flavor = 'line-cm-ext-dom'; + } else if ( state.astParser.isScriptletFilter() ) { + flavor = 'line-cm-ext-js'; + } else if ( state.astParser.isHtmlFilter() ) { + flavor = 'line-cm-ext-html'; + } + if ( flavor !== '' ) { + style = `${flavor} ${style}`; + } + } + style = style.trim(); + return style !== '' ? style : null; + }, + lineComment: '!', + }; +})(); + +CodeMirror.defineMode('ubo-static-filtering', ( ) => uBOStaticFilteringMode); + +/******************************************************************************/ + +// Following code is for auto-completion. Reference: +// https://codemirror.net/demo/complete.html + +CodeMirror.defineOption('uboHints', null, (cm, hints) => { + if ( hints instanceof Object === false ) { return; } + if ( Array.isArray(hints.redirectResources) ) { + for ( const [ name, desc ] of hints.redirectResources ) { + const displayText = desc.aliasOf !== '' + ? `${name} (${desc.aliasOf})` + : ''; + if ( desc.canRedirect ) { + redirectNames.set(name, displayText); + } + if ( desc.canInject && name.endsWith('.js') ) { + scriptletNames.set(name.slice(0, -3), displayText); + } + } + } + if ( Array.isArray(hints.preparseDirectiveEnv)) { + preparseDirectiveEnv.length = 0; + preparseDirectiveEnv.push(...hints.preparseDirectiveEnv); + } + if ( Array.isArray(hints.preparseDirectiveHints)) { + preparseDirectiveHints.push(...hints.preparseDirectiveHints); + } + if ( Array.isArray(hints.originHints) ) { + originHints.length = 0; + for ( const hint of hints.originHints ) { + originHints.push(hint); + } + } + if ( hintHelperRegistered ) { return; } + hintHelperRegistered = true; + initHints(); +}); + +function initHints() { + const astParser = new sfp.AstFilterParser({ + interactive: true, + nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), + }); + const proceduralOperatorNames = new Map( + Array.from(sfp.proceduralOperatorTokens) + .filter(item => (item[1] & 0b01) !== 0) + ); + const excludedHints = new Set([ + 'genericblock', + 'object-subrequest', + 'rewrite', + 'webrtc', + ]); + + const pickBestHints = function(cursor, seedLeft, seedRight, hints) { + const seed = (seedLeft + seedRight).trim(); + const out = []; + // First, compare against whole seed + for ( const hint of hints ) { + const text = hint instanceof Object + ? hint.displayText || hint.text + : hint; + if ( text.startsWith(seed) === false ) { continue; } + out.push(hint); + } + if ( out.length !== 0 ) { + return { + from: { line: cursor.line, ch: cursor.ch - seedLeft.length }, + to: { line: cursor.line, ch: cursor.ch + seedRight.length }, + list: out, + }; + } + // If no match, try again with a different heuristic: valid hints are + // those matching left seed, not matching right seed but right seed is + // found to be a valid hint. This is to take care of cases like: + // + // *$script,redomain=example.org + // ^ + // + cursor position + // + // In such case, [ redirect=, redirect-rule= ] should be returned + // as valid hints. + for ( const hint of hints ) { + const text = hint instanceof Object + ? hint.displayText || hint.text + : hint; + if ( seedLeft.length === 0 ) { continue; } + if ( text.startsWith(seedLeft) === false ) { continue; } + if ( hints.includes(seedRight) === false ) { continue; } + out.push(hint); + } + if ( out.length !== 0 ) { + return { + from: { line: cursor.line, ch: cursor.ch - seedLeft.length }, + to: { line: cursor.line, ch: cursor.ch }, + list: out, + }; + } + // If no match, try again with a different heuristic: valid hints are + // those containing seed as a substring. This is to take care of cases + // like: + // + // *$script,redirect=gif + // ^ + // + cursor position + // + // In such case, [ 1x1.gif, 1x1-transparent.gif ] should be returned + // as valid hints. + for ( const hint of hints ) { + const text = hint instanceof Object + ? hint.displayText || hint.text + : hint; + if ( seedLeft.length === 1 ) { + if ( text.startsWith(seedLeft) === false ) { continue; } + } else if ( text.includes(seed) === false ) { continue; } + out.push(hint); + } + if ( out.length !== 0 ) { + return { + from: { line: cursor.line, ch: cursor.ch - seedLeft.length }, + to: { line: cursor.line, ch: cursor.ch + seedRight.length }, + list: out, + }; + } + // If still no match, try again with a different heuristic: valid hints + // are those containing left seed as a substring. This is to take care + // of cases like: + // + // *$script,redirect=gifdomain=example.org + // ^ + // + cursor position + // + // In such case, [ 1x1.gif, 1x1-transparent.gif ] should be returned + // as valid hints. + for ( const hint of hints ) { + const text = hint instanceof Object + ? hint.displayText || hint.text + : hint; + if ( text.includes(seedLeft) === false ) { continue; } + out.push(hint); + } + if ( out.length !== 0 ) { + return { + from: { line: cursor.line, ch: cursor.ch - seedLeft.length }, + to: { line: cursor.line, ch: cursor.ch }, + list: out, + }; + } + }; + + const getOriginHints = function(cursor, line, suffix = '') { + const beg = cursor.ch; + const matchLeft = /[^,|=~]*$/.exec(line.slice(0, beg)); + const matchRight = /^[^#,|]*/.exec(line.slice(beg)); + if ( matchLeft === null || matchRight === null ) { return; } + const hints = []; + for ( const text of originHints ) { + hints.push(text + suffix); + } + return pickBestHints(cursor, matchLeft[0], matchRight[0], hints); + }; + + const getNetPatternHints = function(cursor, line) { + if ( /\|\|[\w.-]*$/.test(line.slice(0, cursor.ch)) ) { + return getOriginHints(cursor, line, '^'); + } + // Maybe a static extended filter is meant to be crafted. + if ( /[^\w\x80-\xF4#,.-]/.test(line) === false ) { + return getOriginHints(cursor, line); + } + }; + + const getNetOptionHints = function(cursor, seedLeft, seedRight) { + const isNegated = seedLeft.startsWith('~'); + if ( isNegated ) { + seedLeft = seedLeft.slice(1); + } + const assignPos = seedRight.indexOf('='); + if ( assignPos !== -1 ) { seedRight = seedRight.slice(0, assignPos); } + const isException = astParser.isException(); + const hints = []; + for ( let [ text, desc ] of sfp.netOptionTokenDescriptors ) { + if ( excludedHints.has(text) ) { continue; } + if ( isNegated && desc.canNegate !== true ) { continue; } + if ( isException ) { + if ( desc.blockOnly ) { continue; } + } else { + if ( desc.allowOnly ) { continue; } + if ( (assignPos === -1) && desc.mustAssign ) { + text += '='; + } + } + hints.push(text); + } + return pickBestHints(cursor, seedLeft, seedRight, hints); + }; + + const getNetRedirectHints = function(cursor, seedLeft, seedRight) { + const hints = []; + for ( const text of redirectNames.keys() ) { + if ( text.startsWith('abp-resource:') ) { continue; } + hints.push(text); + } + return pickBestHints(cursor, seedLeft, seedRight, hints); + }; + + const getNetHints = function(cursor, line) { + const patternNode = astParser.getBranchFromType(sfp.NODE_TYPE_NET_PATTERN_RAW); + if ( patternNode === 0 ) { return; } + const patternEnd = astParser.getNodeStringEnd(patternNode); + const beg = cursor.ch; + const lineBefore = line.slice(0, beg); + if ( beg <= patternEnd ) { + if ( astParser.hasOptions() !== false || lineBefore.includes('$') === false ) { + return getNetPatternHints(cursor, line); + } + } + const lineAfter = line.slice(beg); + let matchLeft = /[^$,]*$/.exec(lineBefore); + let matchRight = /^[^,]*/.exec(lineAfter); + if ( matchLeft === null || matchRight === null ) { return; } + const assignPos = matchLeft[0].indexOf('='); + if ( assignPos === -1 ) { + return getNetOptionHints(cursor, matchLeft[0], matchRight[0]); + } + if ( /^(redirect(-rule)?|rewrite)=/.test(matchLeft[0]) ) { + return getNetRedirectHints( + cursor, + matchLeft[0].slice(assignPos + 1), + matchRight[0] + ); + } + if ( /^(domain|from|top)=/.test(matchLeft[0]) ) { + return getOriginHints(cursor, line); + } + }; + + const getExtSelectorHints = function(cursor, line) { + const beg = cursor.ch; + // Special selector case: `^responseheader` + { + const match = /#\^([a-z]+)$/.exec(line.slice(0, beg)); + if ( + match !== null && + 'responseheader'.startsWith(match[1]) && + line.slice(beg) === '' + ) { + return pickBestHints( + cursor, + match[1], + '', + [ 'responseheader()' ] + ); + } + } + // Procedural operators + const matchLeft = /#\^?.*:([^:]*)$/.exec(line.slice(0, beg)); + const matchRight = /^([a-z-]*)\(?/.exec(line.slice(beg)); + if ( matchLeft === null || matchRight === null ) { return; } + const isStaticDOM = matchLeft[0].indexOf('^') !== -1; + const hints = []; + for ( let [ text, bits ] of proceduralOperatorNames ) { + if ( isStaticDOM && (bits & 0b10) !== 0 ) { continue; } + hints.push(text); + } + return pickBestHints(cursor, matchLeft[1], matchRight[1], hints); + }; + + const getExtHeaderHints = function(cursor, line) { + const beg = cursor.ch; + const matchLeft = /#\^responseheader\((.*)$/.exec(line.slice(0, beg)); + const matchRight = /^([^)]*)/.exec(line.slice(beg)); + if ( matchLeft === null || matchRight === null ) { return; } + const hints = []; + for ( const hint of sfp.removableHTTPHeaders ) { + hints.push(hint); + } + return pickBestHints(cursor, matchLeft[1], matchRight[1], hints); + }; + + const getExtScriptletHints = function(cursor, line) { + const beg = cursor.ch; + const matchLeft = /#\+js\(([^,]*)$/.exec(line.slice(0, beg)); + const matchRight = /^([^,)]*)/.exec(line.slice(beg)); + if ( matchLeft === null || matchRight === null ) { return; } + const hints = []; + for ( const [ text, displayText ] of scriptletNames ) { + const hint = { text }; + if ( displayText !== '' ) { + hint.displayText = displayText; + } + hints.push(hint); + } + return pickBestHints(cursor, matchLeft[1], matchRight[1], hints); + }; + + const getCommentHints = function(cursor, line) { + const beg = cursor.ch; + if ( line.startsWith('!#if ') ) { + const matchLeft = /^!#if !?(\w*)$/.exec(line.slice(0, beg)); + const matchRight = /^\w*/.exec(line.slice(beg)); + if ( matchLeft === null || matchRight === null ) { return; } + return pickBestHints( + cursor, + matchLeft[1], + matchRight[0], + preparseDirectiveHints + ); + } + if ( line.startsWith('!#') && line !== '!#endif' ) { + const matchLeft = /^!#(\w*)$/.exec(line.slice(0, beg)); + const matchRight = /^\w*/.exec(line.slice(beg)); + if ( matchLeft === null || matchRight === null ) { return; } + const hints = [ 'if ', 'endif\n', 'include ' ]; + return pickBestHints(cursor, matchLeft[1], matchRight[0], hints); + } + }; + + CodeMirror.registerHelper('hint', 'ubo-static-filtering', function(cm) { + const cursor = cm.getCursor(); + const line = cm.getLine(cursor.line); + astParser.parse(line); + if ( astParser.isExtendedFilter() ) { + const anchorNode = astParser.getBranchFromType(sfp.NODE_TYPE_EXT_OPTIONS_ANCHOR); + if ( anchorNode === 0 ) { return; } + let hints; + if ( cursor.ch <= astParser.getNodeStringBeg(anchorNode) ) { + hints = getOriginHints(cursor, line); + } else if ( astParser.isScriptletFilter() ) { + hints = getExtScriptletHints(cursor, line); + } else if ( astParser.isResponseheaderFilter() ) { + hints = getExtHeaderHints(cursor, line); + } else { + hints = getExtSelectorHints(cursor, line); + } + return hints; + } + if ( astParser.isNetworkFilter() ) { + return getNetHints(cursor, line); + } + if ( astParser.isComment() ) { + return getCommentHints(cursor, line); + } + return getOriginHints(cursor, line); + }); +} + +/******************************************************************************/ + +CodeMirror.registerHelper('fold', 'ubo-static-filtering', (( ) => { + const foldIfEndif = function(startLineNo, startLine, cm) { + const lastLineNo = cm.lastLine(); + let endLineNo = startLineNo; + let depth = 1; + while ( endLineNo < lastLineNo ) { + endLineNo += 1; + const line = cm.getLine(endLineNo); + if ( line.startsWith('!#endif') ) { + depth -= 1; + if ( depth === 0 ) { + return { + from: CodeMirror.Pos(startLineNo, startLine.length), + to: CodeMirror.Pos(endLineNo, 0) + }; + } + } + if ( line.startsWith('!#if') ) { + depth += 1; + } + } + }; + + const foldInclude = function(startLineNo, startLine, cm) { + const lastLineNo = cm.lastLine(); + let endLineNo = startLineNo + 1; + if ( endLineNo >= lastLineNo ) { return; } + if ( cm.getLine(endLineNo).startsWith('! >>>>>>>> ') === false ) { + return; + } + while ( endLineNo < lastLineNo ) { + endLineNo += 1; + const line = cm.getLine(endLineNo); + if ( line.startsWith('! <<<<<<<< ') ) { + return { + from: CodeMirror.Pos(startLineNo, startLine.length), + to: CodeMirror.Pos(endLineNo, line.length) + }; + } + } + }; + + return function(cm, start) { + const startLineNo = start.line; + const startLine = cm.getLine(startLineNo); + if ( startLine.startsWith('!#if') ) { + return foldIfEndif(startLineNo, startLine, cm); + } + if ( startLine.startsWith('!#include ') ) { + return foldInclude(startLineNo, startLine, cm); + } + }; +})()); + +/******************************************************************************/ + +// Linter + +{ + const astParser = new sfp.AstFilterParser({ + interactive: true, + nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), + }); + + const changeset = []; + let changesetTimer; + + const includeset = new Set(); + let errorCount = 0; + + const ifendifSet = new Set(); + let ifendifSetChanged = false; + + const extractMarkerDetails = (doc, lineHandle) => { + if ( astParser.isUnsupported() ) { + return { lint: 'error', msg: 'Unsupported filter syntax' }; + } + if ( astParser.hasError() ) { + let msg = 'Invalid filter'; + switch ( astParser.astError ) { + case sfp.AST_ERROR_UNSUPPORTED: + msg = `${msg}: Unsupported filter syntax`; + break; + case sfp.AST_ERROR_REGEX: + msg = `${msg}: Bad regular expression`; + break; + case sfp.AST_ERROR_PATTERN: + msg = `${msg}: Bad pattern`; + break; + case sfp.AST_ERROR_DOMAIN_NAME: + msg = `${msg}: Bad domain name`; + break; + case sfp.AST_ERROR_OPTION_BADVALUE: + msg = `${msg}: Bad value assigned to a valid option`; + break; + case sfp.AST_ERROR_OPTION_DUPLICATE: + msg = `${msg}: Duplicate filter option`; + break; + case sfp.AST_ERROR_OPTION_UNKNOWN: + msg = `${msg}: Unsupported filter option`; + break; + case sfp.AST_ERROR_IF_TOKEN_UNKNOWN: + msg = `${msg}: Unknown preparsing token`; + break; + case sfp.AST_ERROR_UNTRUSTED_SOURCE: + msg = `${msg}: Filter requires trusted source`; + break; + default: + if ( astParser.isCosmeticFilter() && astParser.result.error ) { + msg = `${msg}: ${astParser.result.error}`; + } + break; + } + return { lint: 'error', msg }; + } + if ( astParser.astType !== sfp.AST_TYPE_COMMENT ) { return; } + if ( astParser.astTypeFlavor !== sfp.AST_TYPE_COMMENT_PREPARSER ) { + if ( astParser.raw.startsWith('! <<<<<<<< ') === false ) { return; } + for ( const include of includeset ) { + if ( astParser.raw.endsWith(include) === false ) { continue; } + includeset.delete(include); + return { lint: 'include-end' }; + } + return; + } + if ( /^\s*!#if \S+/.test(astParser.raw) ) { + return { + lint: 'if-start', + data: { + state: sfp.utils.preparser.evaluateExpr( + astParser.getTypeString(sfp.NODE_TYPE_PREPARSE_DIRECTIVE_IF_VALUE), + preparseDirectiveEnv + ) ? 'y' : 'n' + } + }; + } + if ( /^\s*!#endif\b/.test(astParser.raw) ) { + return { lint: 'if-end' }; + } + const match = /^\s*!#include\s*(\S+)/.exec(astParser.raw); + if ( match === null ) { return; } + const nextLineHandle = doc.getLineHandle(lineHandle.lineNo() + 1); + if ( nextLineHandle === undefined ) { return; } + if ( nextLineHandle.text.startsWith('! >>>>>>>> ') === false ) { return; } + const includeToken = `/${match[1]}`; + if ( nextLineHandle.text.endsWith(includeToken) === false ) { return; } + includeset.add(includeToken); + return { lint: 'include-start' }; + }; + + const extractMarker = lineHandle => { + const markers = lineHandle.gutterMarkers || null; + return markers !== null + ? markers['CodeMirror-lintgutter'] || null + : null; + }; + + const markerTemplates = { + 'error': { + node: null, + html: [ + '
 ', + '', + '
', + ], + }, + 'if-start': { + node: null, + html: [ + '
 ', + '', + '', + '', + 'Mismatched if-endif directive', + '
', + ], + }, + 'if-end': { + node: null, + html: [ + '
 ', + '', + '', + '', + 'Mismatched if-endif directive', + '
', + ], + }, + 'include-start': { + node: null, + html: [ + '
 ', + '', + '', + '', + '
', + ], + }, + 'include-end': { + node: null, + html: [ + '
 ', + '', + '', + '', + '
', + ], + }, + }; + + const markerFromTemplate = details => { + const template = markerTemplates[details.lint]; + if ( template.node === null ) { + const domParser = new DOMParser(); + const doc = domParser.parseFromString(template.html.join(''), 'text/html'); + template.node = document.adoptNode(qs$(doc, '.CodeMirror-lintmarker')); + } + const node = template.node.cloneNode(true); + if ( details.data instanceof Object ) { + for ( const [ k, v ] of Object.entries(details.data) ) { + node.dataset[k] = `${v}`; + } + } + return node; + }; + + const addMarker = (doc, lineHandle, marker, details) => { + if ( marker && marker.dataset.lint !== details.lint ) { + doc.setGutterMarker(lineHandle, 'CodeMirror-lintgutter', null); + if ( marker.dataset.error === 'y' ) { + errorCount -= 1; + } + if ( marker.dataset.lint === 'if' ) { + ifendifSet.delete(lineHandle); + ifendifSetChanged = true; + } + marker = null; + } + if ( marker === null ) { + marker = markerFromTemplate(details); + doc.setGutterMarker(lineHandle, 'CodeMirror-lintgutter', marker); + if ( marker.dataset.error === 'y' ) { + errorCount += 1; + } + if ( marker.dataset.lint === 'if' ) { + ifendifSet.add(lineHandle); + ifendifSetChanged = true; + } + } else if ( marker.dataset.lint === 'error' ) { + if ( marker.dataset.error !== 'y' ) { + marker.dataset.error = 'y'; + errorCount += 1; + } + } + if ( typeof details.msg !== 'string' || details.msg === '' ) { return; } + const msgElem = qs$(marker, '.msg'); + if ( msgElem === null ) { return; } + msgElem.textContent = details.msg; + }; + + const removeMarker = (doc, lineHandle, marker) => { + doc.setGutterMarker(lineHandle, 'CodeMirror-lintgutter', null); + if ( marker.dataset.error === 'y' ) { + errorCount -= 1; + } + if ( marker.dataset.lint === 'if' ) { + ifendifSet.delete(lineHandle); + ifendifSetChanged = true; + } + }; + + // Analyze whether all if-endif are properly paired + const processIfendifs = ( ) => { + if ( ifendifSet.size === 0 ) { return; } + if ( ifendifSetChanged !== true ) { return; } + const sortFn = (a, b) => a.lineNo() - b.lineNo(); + const sorted = Array.from(ifendifSet).sort(sortFn); + const bad = []; + const stack = []; + for ( const line of sorted ) { + const marker = extractMarker(line); + const fold = marker.dataset.fold; + if ( fold === 'start' ) { + stack.push(line); + } else if ( fold === 'end' ) { + if ( stack.length !== 0 ) { + if ( marker.dataset.error === 'y' ) { + marker.dataset.error = ''; + errorCount -= 1; + } + const ifstart = extractMarker(stack.pop()); + if ( ifstart.dataset.error === 'y' ) { + ifstart.dataset.error = ''; + errorCount -= 1; + } + } else { + bad.push(line); + } + } + } + bad.push(...stack); + for ( const line of bad ) { + const marker = extractMarker(line); + marker.dataset.error = 'y'; + errorCount += 1; + } + ifendifSetChanged = false; + }; + + const processDeletion = (doc, change) => { + let { from, to } = change; + doc.eachLine(from.line, to.line, lineHandle => { + const marker = extractMarker(lineHandle); + if ( marker === null ) { return; } + if ( marker.dataset.error === 'y' ) { + marker.dataset.error = ''; + errorCount -= 1; + } + ifendifSet.delete(lineHandle); + ifendifSetChanged = true; + }); + }; + + const processInsertion = (doc, deadline, change) => { + let { from, to } = change; + doc.eachLine(from, to, lineHandle => { + astParser.parse(lineHandle.text); + const markerDetails = extractMarkerDetails(doc, lineHandle); + const marker = extractMarker(lineHandle); + if ( markerDetails !== undefined ) { + addMarker(doc, lineHandle, marker, markerDetails); + } else if ( marker !== null ) { + removeMarker(doc, lineHandle, marker); + } + from += 1; + if ( (from & 0x0F) !== 0 ) { return; } + if ( deadline.timeRemaining() !== 0 ) { return; } + return true; + }); + if ( from !== to ) { + return { from, to }; + } + }; + + const processChangeset = (doc, deadline) => { + const cm = doc.getEditor(); + cm.startOperation(); + while ( changeset.length !== 0 ) { + const change = processInsertion(doc, deadline, changeset.shift()); + if ( change === undefined ) { continue; } + changeset.unshift(change); + break; + } + cm.endOperation(); + if ( changeset.length !== 0 ) { + return processChangesetAsync(doc); + } + includeset.clear(); + processIfendifs(doc); + CodeMirror.signal(doc.getEditor(), 'linterDone', { errorCount }); + }; + + const processChangesetAsync = doc => { + if ( changesetTimer !== undefined ) { return; } + changesetTimer = self.requestIdleCallback(deadline => { + changesetTimer = undefined; + processChangeset(doc, deadline); + }); + }; + + const onChanges = (cm, changes) => { + if ( changes.length === 0 ) { return; } + const doc = cm.getDoc(); + for ( const change of changes ) { + const from = change.from.line; + const to = from + change.text.length; + changeset.push({ from, to }); + } + processChangesetAsync(doc); + }; + + const onBeforeChanges = (cm, change) => { + const doc = cm.getDoc(); + processDeletion(doc, change); + }; + + const foldRangeFinder = (cm, from) => { + const lineNo = from.line; + const lineHandle = cm.getDoc().getLineHandle(lineNo); + const marker = extractMarker(lineHandle); + if ( marker === null ) { return; } + if ( marker.dataset.fold === undefined ) { return; } + const foldName = marker.dataset.lint; + from.ch = lineHandle.text.length; + const to = { line: 0, ch: 0 }; + const doc = cm.getDoc(); + let depth = 0; + doc.eachLine(from.line, doc.lineCount(), lineHandle => { + const marker = extractMarker(lineHandle); + if ( marker === null ) { return; } + if ( marker.dataset.lint === foldName && marker.dataset.fold === 'start' ) { + depth += 1; + return; + } + if ( marker.dataset.lint !== foldName ) { return; } + if ( marker.dataset.fold !== 'end' ) { return; } + depth -= 1; + if ( depth !== 0 ) { return; } + to.line = lineHandle.lineNo(); + return true; + }); + return { from, to }; + }; + + const onGutterClick = (cm, lineNo, gutterId, ev) => { + if ( ev.button !== 0 ) { return; } + if ( gutterId !== 'CodeMirror-lintgutter' ) { return; } + const doc = cm.getDoc(); + const lineHandle = doc.getLineHandle(lineNo); + const marker = extractMarker(lineHandle); + if ( marker === null ) { return; } + if ( marker.dataset.fold === 'start' ) { + if ( ev.ctrlKey ) { + if ( dom.cl.has(marker, 'folded') ) { + CodeMirror.commands.unfoldAll(cm); + } else { + CodeMirror.commands.foldAll(cm); + } + doc.setCursor(lineNo); + return; + } + cm.foldCode(lineNo, { + widget: '\u00A0\u22EF\u00A0', + rangeFinder: foldRangeFinder, + }); + return; + } + if ( marker.dataset.fold === 'end' ) { + let depth = 1; + let lineNo = lineHandle.lineNo(); + while ( lineNo-- ) { + const prevLineHandle = doc.getLineHandle(lineNo); + const markerFrom = extractMarker(prevLineHandle); + if ( markerFrom === null ) { continue; } + if ( markerFrom.dataset.fold === 'end' ) { + depth += 1; + } else if ( markerFrom.dataset.fold === 'start' ) { + depth -= 1; + if ( depth === 0 ) { + doc.setCursor(lineNo); + break; + } + } + } + return; + } + }; + + self.addEventListener('trustedSource', ev => { + const { trusted } = ev.detail; + astParser.options.trustedSource = trusted; + }); + + self.addEventListener('trustedScriptletTokens', ev => { + astParser.options.trustedScriptletTokens = ev.detail; + }); + + CodeMirror.defineInitHook(cm => { + cm.on('changes', onChanges); + cm.on('beforeChange', onBeforeChanges); + cm.on('gutterClick', onGutterClick); + cm.on('fold', function(cm, from) { + const doc = cm.getDoc(); + const lineHandle = doc.getLineHandle(from.line); + const marker = extractMarker(lineHandle); + dom.cl.add(marker, 'folded'); + }); + cm.on('unfold', function(cm, from) { + const doc = cm.getDoc(); + const lineHandle = doc.getLineHandle(from.line); + const marker = extractMarker(lineHandle); + dom.cl.remove(marker, 'folded'); + }); + }); +} + +/******************************************************************************/ + +// Enhanced word selection + +{ + const selectWordAt = function(cm, pos) { + const { line, ch } = pos; + const s = cm.getLine(line); + const { type: token } = cm.getTokenAt(pos); + let beg, end; + + // Select URL in comments + if ( /\bcomment\b/.test(token) && /\blink\b/.test(token) ) { + const l = /\S+$/.exec(s.slice(0, ch)); + if ( l && /^https?:\/\//.test(s.slice(l.index)) ) { + const r = /^\S+/.exec(s.slice(ch)); + if ( r ) { + beg = l.index; + end = ch + r[0].length; + } + } + } + + // Better word selection for extended filters: prefix + else if ( + /\bline-cm-ext-(?:dom|html|js)\b/.test(token) && + /\bvalue\b/.test(token) + ) { + const l = /[^,.]*$/i.exec(s.slice(0, ch)); + const r = /^[^#,]*/i.exec(s.slice(ch)); + if ( l && r ) { + beg = l.index; + end = ch + r[0].length; + } + } + + // Better word selection for cosmetic and HTML filters: suffix + else if ( /\bline-cm-ext-(?:dom|html)\b/.test(token) ) { + const l = /[#.]?[a-z0-9_-]+$/i.exec(s.slice(0, ch)); + const r = /^[a-z0-9_-]+/i.exec(s.slice(ch)); + if ( l && r ) { + beg = l.index; + end = ch + r[0].length; + if ( /\bdef\b/.test(cm.getTokenTypeAt({ line, ch: beg + 1 })) ) { + beg += 1; + } + } + } + + // Better word selection for network filters + else if ( /\bline-cm-net\b/.test(token) ) { + if ( /\bvalue\b/.test(token) ) { + const l = /[^ ,.=|]*$/i.exec(s.slice(0, ch)); + const r = /^[^ #,|]*/i.exec(s.slice(ch)); + if ( l && r ) { + beg = l.index; + end = ch + r[0].length; + } + } else if ( /\bdef\b/.test(token) ) { + const l = /[a-z0-9-]+$/i.exec(s.slice(0, ch)); + const r = /^[^,]*=[^,]+/i.exec(s.slice(ch)); + if ( l && r ) { + beg = l.index; + end = ch + r[0].length; + } + } + } + + if ( beg === undefined ) { + const { anchor, head } = cm.findWordAt(pos); + return { from: anchor, to: head }; + } + + return { + from: { line, ch: beg }, + to: { line, ch: end }, + }; + }; + + CodeMirror.defineInitHook(cm => { + cm.setOption('configureMouse', function(cm, repeat) { + return { + unit: repeat === 'double' ? selectWordAt : null, + }; + }); + }); +} + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/commands.js b/android/app/src/main/assets/extensions/ublock_origin/js/commands.js new file mode 100644 index 00000000..34e6312f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/commands.js @@ -0,0 +1,187 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2017-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { hostnameFromURI } from './uri-utils.js'; +import µb from './background.js'; + +/******************************************************************************/ + +(( ) => { + +// ***************************************************************************** +// start of local namespace + +if ( vAPI.commands instanceof Object === false ) { return; } + +const relaxBlockingMode = (( ) => { + const reloadTimers = new Map(); + + return function(tab) { + if ( tab instanceof Object === false || tab.id <= 0 ) { return; } + + const normalURL = µb.normalizeTabURL(tab.id, tab.url); + + if ( µb.getNetFilteringSwitch(normalURL) === false ) { return; } + + const hn = hostnameFromURI(normalURL); + const curProfileBits = µb.blockingModeFromHostname(hn); + let newProfileBits; + for ( const profile of µb.liveBlockingProfiles ) { + if ( (curProfileBits & profile.bits & ~1) !== curProfileBits ) { + newProfileBits = profile.bits; + break; + } + } + + // TODO: Reset to original blocking profile? + if ( newProfileBits === undefined ) { return; } + + const noReload = (newProfileBits & 0b00000001) === 0; + + if ( + (curProfileBits & 0b00000010) !== 0 && + (newProfileBits & 0b00000010) === 0 + ) { + µb.toggleHostnameSwitch({ + name: 'no-scripting', + hostname: hn, + state: false, + }); + } + if ( µb.userSettings.advancedUserEnabled ) { + if ( + (curProfileBits & 0b00000100) !== 0 && + (newProfileBits & 0b00000100) === 0 + ) { + µb.toggleFirewallRule({ + tabId: noReload ? tab.id : undefined, + srcHostname: hn, + desHostname: '*', + requestType: '3p', + action: 3, + }); + } + if ( + (curProfileBits & 0b00001000) !== 0 && + (newProfileBits & 0b00001000) === 0 + ) { + µb.toggleFirewallRule({ + srcHostname: hn, + desHostname: '*', + requestType: '3p-script', + action: 3, + }); + } + if ( + (curProfileBits & 0b00010000) !== 0 && + (newProfileBits & 0b00010000) === 0 + ) { + µb.toggleFirewallRule({ + srcHostname: hn, + desHostname: '*', + requestType: '3p-frame', + action: 3, + }); + } + } + + // Reload the target tab? + if ( noReload ) { return; } + + // Reload: use a timer to coalesce bursts of reload commands. + const timer = reloadTimers.get(tab.id) || (( ) => { + const t = vAPI.defer.create(tabId => { + reloadTimers.delete(tabId); + vAPI.tabs.reload(tabId); + }); + reloadTimers.set(tab.id, t); + return t; + })(); + timer.offon(547, tab.id); + }; +})(); + +vAPI.commands.onCommand.addListener(async command => { + // Generic commands + if ( command === 'open-dashboard' ) { + µb.openNewTab({ + url: 'dashboard.html', + select: true, + index: -1, + }); + return; + } + // Tab-specific commands + const tab = await vAPI.tabs.getCurrent(); + if ( tab instanceof Object === false ) { return; } + + switch ( command ) { + case 'launch-element-picker': + if ( µb.userFiltersAreEnabled() === false ) { break; } + /* fall through */ + case 'launch-element-zapper': { + µb.epickerArgs.mouse = false; + µb.elementPickerExec( + tab.id, + 0, + undefined, + command === 'launch-element-zapper' + ); + break; + } + case 'launch-logger': { + const hash = tab.url.startsWith(vAPI.getURL('')) + ? '' + : `#_+${tab.id}`; + µb.openNewTab({ + url: `logger-ui.html${hash}`, + select: true, + index: -1, + }); + break; + } + case 'relax-blocking-mode': + relaxBlockingMode(tab); + break; + case 'toggle-cosmetic-filtering': + µb.toggleHostnameSwitch({ + name: 'no-cosmetic-filtering', + hostname: hostnameFromURI(µb.normalizeTabURL(tab.id, tab.url)), + }); + break; + case 'toggle-javascript': + µb.toggleHostnameSwitch({ + name: 'no-scripting', + hostname: hostnameFromURI(µb.normalizeTabURL(tab.id, tab.url)), + }); + vAPI.tabs.reload(tab.id); + break; + default: + break; + } +}); + +// end of local namespace +// ***************************************************************************** + +})(); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/console.js b/android/app/src/main/assets/extensions/ublock_origin/js/console.js new file mode 100644 index 00000000..255fb638 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/console.js @@ -0,0 +1,57 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +function ubologSet(state = false) { + if ( state ) { + if ( ubolog.process instanceof Function ) { + ubolog.process(); + } + ubolog = ubologDo; + } else { + ubolog = ubologIgnore; + } +} + +function ubologDo(...args) { + console.info('[uBO]', ...args); +} + +function ubologIgnore() { +} + +let ubolog = (( ) => { + const pending = []; + const store = function(...args) { + pending.push(args); + }; + store.process = function() { + for ( const args of pending ) { + ubologDo(...args); + } + }; + return store; +})(); + +/******************************************************************************/ + +export { ubolog, ubologSet }; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/contentscript-extra.js b/android/app/src/main/assets/extensions/ublock_origin/js/contentscript-extra.js new file mode 100644 index 00000000..cb056c30 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/contentscript-extra.js @@ -0,0 +1,718 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +if ( + typeof vAPI === 'object' && + typeof vAPI.DOMProceduralFilterer !== 'object' +) { +// >>>>>>>> start of local scope + +/******************************************************************************/ + +const nonVisualElements = { + head: true, + link: true, + meta: true, + script: true, + style: true, +}; + +const regexFromString = (s, exact = false) => { + if ( s === '' ) { return /^/; } + const match = /^\/(.+)\/([imu]*)$/.exec(s); + if ( match !== null ) { + return new RegExp(match[1], match[2] || undefined); + } + const reStr = s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + return new RegExp(exact ? `^${reStr}$` : reStr); +}; + +// 'P' stands for 'Procedural' + +class PSelectorTask { + begin() { + } + end() { + } +} + +class PSelectorVoidTask extends PSelectorTask { + constructor(task) { + super(); + console.info(`uBO: :${task[0]}() operator does not exist`); + } + transpose() { + } +} + +class PSelectorHasTextTask extends PSelectorTask { + constructor(task) { + super(); + this.needle = regexFromString(task[1]); + } + transpose(node, output) { + if ( this.needle.test(node.textContent) ) { + output.push(node); + } + } +} + +class PSelectorIfTask extends PSelectorTask { + constructor(task) { + super(); + this.pselector = new PSelector(task[1]); + } + transpose(node, output) { + if ( this.pselector.test(node) === this.target ) { + output.push(node); + } + } +} +PSelectorIfTask.prototype.target = true; + +class PSelectorIfNotTask extends PSelectorIfTask { +} +PSelectorIfNotTask.prototype.target = false; + +class PSelectorMatchesAttrTask extends PSelectorTask { + constructor(task) { + super(); + this.reAttr = regexFromString(task[1].attr, true); + this.reValue = regexFromString(task[1].value, true); + } + transpose(node, output) { + if ( typeof node.getAttributeNames !== 'function' ) { return; } + const attrs = node.getAttributeNames(); + for ( const attr of attrs ) { + if ( this.reAttr.test(attr) === false ) { continue; } + if ( this.reValue.test(node.getAttribute(attr)) === false ) { continue; } + output.push(node); + } + } +} + +class PSelectorMatchesCSSTask extends PSelectorTask { + constructor(task) { + super(); + this.name = task[1].name; + this.pseudo = task[1].pseudo ? `::${task[1].pseudo}` : null; + let arg0 = task[1].value, arg1; + if ( Array.isArray(arg0) ) { + arg1 = arg0[1]; arg0 = arg0[0]; + } + this.value = new RegExp(arg0, arg1); + } + transpose(node, output) { + const style = window.getComputedStyle(node, this.pseudo); + if ( style !== null && this.value.test(style[this.name]) ) { + output.push(node); + } + } +} +class PSelectorMatchesCSSAfterTask extends PSelectorMatchesCSSTask { + constructor(task) { + super(task); + this.pseudo = '::after'; + } +} + +class PSelectorMatchesCSSBeforeTask extends PSelectorMatchesCSSTask { + constructor(task) { + super(task); + this.pseudo = '::before'; + } +} + +class PSelectorMatchesMediaTask extends PSelectorTask { + constructor(task) { + super(); + this.mql = window.matchMedia(task[1]); + if ( this.mql.media === 'not all' ) { return; } + this.mql.addEventListener('change', ( ) => { + if ( typeof vAPI !== 'object' ) { return; } + if ( vAPI === null ) { return; } + const filterer = vAPI.domFilterer && vAPI.domFilterer.proceduralFilterer; + if ( filterer instanceof Object === false ) { return; } + filterer.onDOMChanged([ null ]); + }); + } + transpose(node, output) { + if ( this.mql.matches === false ) { return; } + output.push(node); + } +} + +class PSelectorMatchesPathTask extends PSelectorTask { + constructor(task) { + super(); + this.needle = regexFromString( + task[1].replace(/\P{ASCII}/gu, s => encodeURIComponent(s)) + ); + } + transpose(node, output) { + if ( this.needle.test(self.location.pathname + self.location.search) ) { + output.push(node); + } + } +} + +class PSelectorMatchesPropTask extends PSelectorTask { + constructor(task) { + super(); + this.props = task[1].attr.split('.'); + this.reValue = task[1].value !== '' + ? regexFromString(task[1].value, true) + : null; + } + transpose(node, output) { + let value = node; + for ( const prop of this.props ) { + if ( value === undefined ) { return; } + if ( value === null ) { return; } + value = value[prop]; + } + if ( this.reValue === null ) { + if ( value === undefined ) { return; } + } else if ( this.reValue.test(value) === false ) { + return; + } + output.push(node); + } +} + +class PSelectorMinTextLengthTask extends PSelectorTask { + constructor(task) { + super(); + this.min = task[1]; + } + transpose(node, output) { + if ( node.textContent.length >= this.min ) { + output.push(node); + } + } +} + +class PSelectorOthersTask extends PSelectorTask { + constructor() { + super(); + this.targets = new Set(); + } + begin() { + this.targets.clear(); + } + end(output) { + const toKeep = new Set(this.targets); + const toDiscard = new Set(); + const body = document.body; + const head = document.head; + let discard = null; + for ( let keep of this.targets ) { + while ( keep !== null && keep !== body && keep !== head ) { + toKeep.add(keep); + toDiscard.delete(keep); + discard = keep.previousElementSibling; + while ( discard !== null ) { + if ( nonVisualElements[discard.localName] !== true ) { + if ( toKeep.has(discard) === false ) { + toDiscard.add(discard); + } + } + discard = discard.previousElementSibling; + } + discard = keep.nextElementSibling; + while ( discard !== null ) { + if ( nonVisualElements[discard.localName] !== true ) { + if ( toKeep.has(discard) === false ) { + toDiscard.add(discard); + } + } + discard = discard.nextElementSibling; + } + keep = keep.parentElement; + } + } + for ( discard of toDiscard ) { + output.push(discard); + } + this.targets.clear(); + } + transpose(candidate) { + for ( const target of this.targets ) { + if ( target.contains(candidate) ) { return; } + if ( candidate.contains(target) ) { + this.targets.delete(target); + } + } + this.targets.add(candidate); + } +} + +class PSelectorShadowTask extends PSelectorTask { + constructor(task) { + super(); + this.selector = task[1]; + } + transpose(node, output) { + const root = this.openOrClosedShadowRoot(node); + if ( root === null ) { return; } + const nodes = root.querySelectorAll(this.selector); + output.push(...nodes); + } + get openOrClosedShadowRoot() { + if ( PSelectorShadowTask.openOrClosedShadowRoot !== undefined ) { + return PSelectorShadowTask.openOrClosedShadowRoot; + } + if ( typeof chrome === 'object' && chrome !== null ) { + if ( chrome.dom instanceof Object ) { + if ( typeof chrome.dom.openOrClosedShadowRoot === 'function' ) { + PSelectorShadowTask.openOrClosedShadowRoot = + chrome.dom.openOrClosedShadowRoot; + return PSelectorShadowTask.openOrClosedShadowRoot; + } + } + } + PSelectorShadowTask.openOrClosedShadowRoot = node => + node.openOrClosedShadowRoot || null; + return PSelectorShadowTask.openOrClosedShadowRoot; + } +} + +// https://github.com/AdguardTeam/ExtendedCss/issues/31#issuecomment-302391277 +// Prepend `:scope ` if needed. +class PSelectorSpathTask extends PSelectorTask { + constructor(task) { + super(); + this.spath = task[1]; + this.nth = /^(?:\s*[+~]|:)/.test(this.spath); + if ( this.nth ) { return; } + if ( /^\s*>/.test(this.spath) ) { + this.spath = `:scope ${this.spath.trim()}`; + } + } + transpose(node, output) { + const nodes = this.nth + ? PSelectorSpathTask.qsa(node, this.spath) + : node.querySelectorAll(this.spath); + for ( const node of nodes ) { + output.push(node); + } + } + // Helper method for other operators. + static qsa(node, selector) { + const parent = node.parentElement; + if ( parent === null ) { return []; } + let pos = 1; + for (;;) { + node = node.previousElementSibling; + if ( node === null ) { break; } + pos += 1; + } + return parent.querySelectorAll( + `:scope > :nth-child(${pos})${selector}` + ); + } +} + +class PSelectorUpwardTask extends PSelectorTask { + constructor(task) { + super(); + const arg = task[1]; + if ( typeof arg === 'number' ) { + this.i = arg; + } else { + this.s = arg; + } + } + transpose(node, output) { + if ( this.s !== '' ) { + const parent = node.parentElement; + if ( parent === null ) { return; } + node = parent.closest(this.s); + if ( node === null ) { return; } + } else { + let nth = this.i; + for (;;) { + node = node.parentElement; + if ( node === null ) { return; } + nth -= 1; + if ( nth === 0 ) { break; } + } + } + output.push(node); + } +} +PSelectorUpwardTask.prototype.i = 0; +PSelectorUpwardTask.prototype.s = ''; + +class PSelectorWatchAttrs extends PSelectorTask { + constructor(task) { + super(); + this.observer = null; + this.observed = new WeakSet(); + this.observerOptions = { + attributes: true, + subtree: true, + }; + const attrs = task[1]; + if ( Array.isArray(attrs) && attrs.length !== 0 ) { + this.observerOptions.attributeFilter = task[1]; + } + } + // TODO: Is it worth trying to re-apply only the current selector? + handler() { + const filterer = + vAPI.domFilterer && vAPI.domFilterer.proceduralFilterer; + if ( filterer instanceof Object ) { + filterer.onDOMChanged([ null ]); + } + } + transpose(node, output) { + output.push(node); + if ( this.observed.has(node) ) { return; } + if ( this.observer === null ) { + this.observer = new MutationObserver(this.handler); + } + this.observer.observe(node, this.observerOptions); + this.observed.add(node); + } +} + +class PSelectorXpathTask extends PSelectorTask { + constructor(task) { + super(); + this.xpe = document.createExpression(task[1], null); + this.xpr = null; + } + transpose(node, output) { + this.xpr = this.xpe.evaluate( + node, + XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, + this.xpr + ); + let j = this.xpr.snapshotLength; + while ( j-- ) { + const node = this.xpr.snapshotItem(j); + if ( node.nodeType === 1 ) { + output.push(node); + } + } + } +} + +class PSelector { + constructor(o) { + this.selector = o.selector; + this.tasks = []; + const tasks = []; + if ( Array.isArray(o.tasks) === false ) { return; } + for ( const task of o.tasks ) { + const ctor = this.operatorToTaskMap.get(task[0]) || PSelectorVoidTask; + tasks.push(new ctor(task)); + } + this.tasks = tasks; + } + prime(input) { + const root = input || document; + if ( this.selector === '' ) { return [ root ]; } + if ( input !== document ) { + const c0 = this.selector.charCodeAt(0); + if ( c0 === 0x2B /* + */ || c0 === 0x7E /* ~ */ ) { + return Array.from(PSelectorSpathTask.qsa(input, this.selector)); + } else if ( c0 === 0x3E /* > */ ) { + return Array.from(input.querySelectorAll(`:scope ${this.selector}`)); + } + } + return Array.from(root.querySelectorAll(this.selector)); + } + exec(input) { + let nodes = this.prime(input); + for ( const task of this.tasks ) { + if ( nodes.length === 0 ) { break; } + const transposed = []; + task.begin(); + for ( const node of nodes ) { + task.transpose(node, transposed); + } + task.end(transposed); + nodes = transposed; + } + return nodes; + } + test(input) { + const nodes = this.prime(input); + for ( const node of nodes ) { + let output = [ node ]; + for ( const task of this.tasks ) { + const transposed = []; + task.begin(); + for ( const node of output ) { + task.transpose(node, transposed); + } + task.end(transposed); + output = transposed; + if ( output.length === 0 ) { break; } + } + if ( output.length !== 0 ) { return true; } + } + return false; + } +} +PSelector.prototype.operatorToTaskMap = new Map([ + [ 'has', PSelectorIfTask ], + [ 'has-text', PSelectorHasTextTask ], + [ 'if', PSelectorIfTask ], + [ 'if-not', PSelectorIfNotTask ], + [ 'matches-attr', PSelectorMatchesAttrTask ], + [ 'matches-css', PSelectorMatchesCSSTask ], + [ 'matches-css-after', PSelectorMatchesCSSAfterTask ], + [ 'matches-css-before', PSelectorMatchesCSSBeforeTask ], + [ 'matches-media', PSelectorMatchesMediaTask ], + [ 'matches-path', PSelectorMatchesPathTask ], + [ 'matches-prop', PSelectorMatchesPropTask ], + [ 'min-text-length', PSelectorMinTextLengthTask ], + [ 'not', PSelectorIfNotTask ], + [ 'others', PSelectorOthersTask ], + [ 'shadow', PSelectorShadowTask ], + [ 'spath', PSelectorSpathTask ], + [ 'upward', PSelectorUpwardTask ], + [ 'watch-attr', PSelectorWatchAttrs ], + [ 'xpath', PSelectorXpathTask ], +]); + +class PSelectorRoot extends PSelector { + constructor(o) { + super(o); + this.budget = 200; // I arbitrary picked a 1/5 second + this.raw = o.raw; + this.cost = 0; + this.lastAllowanceTime = 0; + this.action = o.action; + } + prime(input) { + try { + return super.prime(input); + } catch { + } + return []; + } +} +PSelectorRoot.prototype.hit = false; + +class ProceduralFilterer { + constructor(domFilterer) { + this.domFilterer = domFilterer; + this.mustApplySelectors = false; + this.selectors = new Map(); + this.masterToken = vAPI.randomToken(); + this.styleTokenMap = new Map(); + this.styledNodes = new Set(); + if ( vAPI.domWatcher instanceof Object ) { + vAPI.domWatcher.addListener(this); + } + } + + addProceduralSelectors(selectors) { + const addedSelectors = []; + let mustCommit = false; + for ( const selector of selectors ) { + if ( this.selectors.has(selector.raw) ) { continue; } + const pselector = new PSelectorRoot(selector); + this.primeProceduralSelector(pselector); + this.selectors.set(selector.raw, pselector); + addedSelectors.push(pselector); + mustCommit = true; + } + if ( mustCommit === false ) { return; } + this.mustApplySelectors = this.selectors.size !== 0; + this.domFilterer.commit(); + if ( this.domFilterer.hasListeners() ) { + this.domFilterer.triggerListeners({ + procedural: addedSelectors + }); + } + } + + // This allows to perform potentially expensive initialization steps + // before the filters are ready to be applied. + primeProceduralSelector(pselector) { + if ( pselector.action === undefined ) { + this.styleTokenFromStyle(vAPI.hideStyle); + } else if ( pselector.action[0] === 'style' ) { + this.styleTokenFromStyle(pselector.action[1]); + } + return pselector; + } + + commitNow() { + if ( this.selectors.size === 0 ) { return; } + + this.mustApplySelectors = false; + + // https://github.com/uBlockOrigin/uBlock-issues/issues/341 + // Be ready to unhide nodes which no longer matches any of + // the procedural selectors. + const toUnstyle = this.styledNodes; + this.styledNodes = new Set(); + + let t0 = Date.now(); + + for ( const pselector of this.selectors.values() ) { + const allowance = Math.floor((t0 - pselector.lastAllowanceTime) / 2000); + if ( allowance >= 1 ) { + pselector.budget += allowance * 50; + if ( pselector.budget > 200 ) { pselector.budget = 200; } + pselector.lastAllowanceTime = t0; + } + if ( pselector.budget <= 0 ) { continue; } + const nodes = pselector.exec(); + const t1 = Date.now(); + pselector.budget += t0 - t1; + if ( pselector.budget < -500 ) { + console.info('uBO: disabling %s', pselector.raw); + pselector.budget = -0x7FFFFFFF; + } + t0 = t1; + if ( nodes.length === 0 ) { continue; } + pselector.hit = true; + this.processNodes(nodes, pselector.action); + } + + this.unprocessNodes(toUnstyle); + } + + styleTokenFromStyle(style) { + if ( style === undefined ) { return; } + let styleToken = this.styleTokenMap.get(style); + if ( styleToken !== undefined ) { return styleToken; } + styleToken = vAPI.randomToken(); + this.styleTokenMap.set(style, styleToken); + this.domFilterer.addCSS( + `[${this.masterToken}][${styleToken}]\n{${style}}`, + { silent: true, mustInject: true } + ); + return styleToken; + } + + processNodes(nodes, action) { + const op = action && action[0] || ''; + const arg = op !== '' ? action[1] : ''; + switch ( op ) { + case '': + /* fall through */ + case 'style': { + const styleToken = this.styleTokenFromStyle( + arg === '' ? vAPI.hideStyle : arg + ); + for ( const node of nodes ) { + node.setAttribute(this.masterToken, ''); + node.setAttribute(styleToken, ''); + this.styledNodes.add(node); + } + break; + } + case 'remove': { + for ( const node of nodes ) { + node.remove(); + node.textContent = ''; + } + break; + } + case 'remove-attr': { + const reAttr = regexFromString(arg, true); + for ( const node of nodes ) { + for ( const name of node.getAttributeNames() ) { + if ( reAttr.test(name) === false ) { continue; } + node.removeAttribute(name); + } + } + break; + } + case 'remove-class': { + const reClass = regexFromString(arg, true); + for ( const node of nodes ) { + const cl = node.classList; + for ( const name of cl.values() ) { + if ( reClass.test(name) === false ) { continue; } + cl.remove(name); + } + } + break; + } + default: + break; + } + } + + // TODO: Current assumption is one style per hit element. Could be an + // issue if an element has multiple styling and one styling is + // brought back. Possibly too rare to care about this for now. + unprocessNodes(nodes) { + for ( const node of nodes ) { + if ( this.styledNodes.has(node) ) { continue; } + node.removeAttribute(this.masterToken); + } + } + + createProceduralFilter(o) { + return this.primeProceduralSelector( + new PSelectorRoot(typeof o === 'string' ? JSON.parse(o) : o) + ); + } + + onDOMCreated() { + } + + onDOMChanged(addedNodes, removedNodes) { + if ( this.selectors.size === 0 ) { return; } + this.mustApplySelectors = + this.mustApplySelectors || + addedNodes.length !== 0 || + removedNodes; + this.domFilterer.commit(); + } +} + +vAPI.DOMProceduralFilterer = ProceduralFilterer; + +/******************************************************************************/ + +// >>>>>>>> end of local scope +} + + + + + + + + +/******************************************************************************* + + DO NOT: + - Remove the following code + - Add code beyond the following code + Reason: + - https://github.com/gorhill/uBlock/pull/3721 + - uBO never uses the return value from injected content scripts + +**/ + +void 0; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/contentscript.js b/android/app/src/main/assets/extensions/ublock_origin/js/contentscript.js new file mode 100644 index 00000000..5d0bd66e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/contentscript.js @@ -0,0 +1,1338 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************* + + +--> domCollapser + | + | + domWatcher--+ + | +-- domSurveyor + | | + +--> domFilterer --+-- [domLogger] + | | + | +-- [domInspector] + | + [domProceduralFilterer] + + domWatcher: + Watches for changes in the DOM, and notify the other components about these + changes. + + domCollapser: + Enforces the collapsing of DOM elements for which a corresponding + resource was blocked through network filtering. + + domFilterer: + Enforces the filtering of DOM elements, by feeding it cosmetic filters. + + domProceduralFilterer: + Enforce the filtering of DOM elements through procedural cosmetic filters. + Loaded on demand, only when needed. + + domSurveyor: + Surveys the DOM to find new cosmetic filters to apply to the current page. + + domLogger: + Surveys the page to find and report the injected cosmetic filters blocking + actual elements on the current page. This component is dynamically loaded + IF AND ONLY IF uBO's logger is opened. + + If page is whitelisted: + - domWatcher: off + - domCollapser: off + - domFilterer: off + - domSurveyor: off + - domLogger: off + + I verified that the code in this file is completely flushed out of memory + when a page is whitelisted. + + If cosmetic filtering is disabled: + - domWatcher: on + - domCollapser: on + - domFilterer: off + - domSurveyor: off + - domLogger: off + + If generic cosmetic filtering is disabled: + - domWatcher: on + - domCollapser: on + - domFilterer: on + - domSurveyor: off + - domLogger: on if uBO logger is opened + + If generic cosmetic filtering is enabled: + - domWatcher: on + - domCollapser: on + - domFilterer: on + - domSurveyor: on + - domLogger: on if uBO logger is opened + + Additionally, the domSurveyor can turn itself off once it decides that + it has become pointless (repeatedly not finding new cosmetic filters). + + The domFilterer makes use of platform-dependent user stylesheets[1]. + + [1] "user stylesheets" refer to local CSS rules which have priority over, + and can't be overridden by a web page's own CSS rules. + +*/ + +// Abort execution if our global vAPI object does not exist. +// https://github.com/chrisaljoudi/uBlock/issues/456 +// https://github.com/gorhill/uBlock/issues/2029 + +// >>>>>>>> start of HUGE-IF-BLOCK +if ( typeof vAPI === 'object' && !vAPI.contentScript ) { + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************/ + +vAPI.contentScript = true; + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************/ + +// https://github.com/uBlockOrigin/uBlock-issues/issues/688#issuecomment-663657508 +{ + let context = self; + try { + while ( + context !== self.top && + context.location.href.startsWith('about:blank') && + context.parent.location.href + ) { + context = context.parent; + } + } catch { + } + vAPI.effectiveSelf = context; +} + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************/ + +vAPI.userStylesheet = { + added: new Set(), + removed: new Set(), + apply: function(callback) { + if ( this.added.size === 0 && this.removed.size === 0 ) { return; } + vAPI.messaging.send('vapi', { + what: 'userCSS', + add: Array.from(this.added), + remove: Array.from(this.removed), + }).then(( ) => { + if ( callback instanceof Function === false ) { return; } + callback(); + }); + this.added.clear(); + this.removed.clear(); + }, + add: function(cssText, now) { + if ( cssText === '' ) { return; } + this.added.add(cssText); + if ( now ) { this.apply(); } + }, + remove: function(cssText, now) { + if ( cssText === '' ) { return; } + this.removed.add(cssText); + if ( now ) { this.apply(); } + } +}; + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************* + + The purpose of SafeAnimationFrame is to take advantage of the behavior of + window.requestAnimationFrame[1]. If we use an animation frame as a timer, + then this timer is described as follow: + + - time events are throttled by the browser when the viewport is not visible -- + there is no point for uBO to play with the DOM if the document is not + visible. + - time events are micro tasks[2]. + - time events are synchronized to monitor refresh, meaning that they can fire + at most 1/60 (typically). + + If a delay value is provided, a plain timer is first used. Plain timers are + macro-tasks, so this is good when uBO wants to yield to more important tasks + on a page. Once the plain timer elapse, an animation frame is used to trigger + the next time at which to execute the job. + + [1] https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame + [2] https://jakearchibald.com/2015/tasks-microtasks-queues-and-schedules/ + +*/ + +// https://github.com/gorhill/uBlock/issues/2147 + +vAPI.SafeAnimationFrame = class { + constructor(callback) { + this.fid = this.tid = undefined; + this.callback = callback; + } + start(delay) { + if ( self.vAPI instanceof Object === false ) { return; } + if ( delay === undefined ) { + if ( this.fid === undefined ) { + this.fid = requestAnimationFrame(( ) => { this.onRAF(); } ); + } + if ( this.tid === undefined ) { + this.tid = vAPI.setTimeout(( ) => { this.onSTO(); }, 20000); + } + return; + } + if ( this.fid === undefined && this.tid === undefined ) { + this.tid = vAPI.setTimeout(( ) => { this.macroToMicro(); }, delay); + } + } + clear() { + if ( this.fid !== undefined ) { + cancelAnimationFrame(this.fid); + this.fid = undefined; + } + if ( this.tid !== undefined ) { + clearTimeout(this.tid); + this.tid = undefined; + } + } + macroToMicro() { + this.tid = undefined; + this.start(); + } + onRAF() { + if ( this.tid !== undefined ) { + clearTimeout(this.tid); + this.tid = undefined; + } + this.fid = undefined; + this.callback(); + } + onSTO() { + if ( this.fid !== undefined ) { + cancelAnimationFrame(this.fid); + this.fid = undefined; + } + this.tid = undefined; + this.callback(); + } +}; + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************/ + +// https://github.com/uBlockOrigin/uBlock-issues/issues/552 +// Listen and report CSP violations so that blocked resources through CSP +// are properly reported in the logger. + +{ + const newEvents = new Set(); + const allEvents = new Set(); + let timer; + + const send = function() { + if ( self.vAPI instanceof Object === false ) { return; } + vAPI.messaging.send('scriptlets', { + what: 'securityPolicyViolation', + type: 'net', + docURL: document.location.href, + violations: Array.from(newEvents), + }).then(response => { + if ( response === true ) { return; } + stop(); + }); + for ( const event of newEvents ) { + allEvents.add(event); + } + newEvents.clear(); + }; + + const sendAsync = function() { + if ( timer !== undefined ) { return; } + timer = self.requestIdleCallback( + ( ) => { timer = undefined; send(); }, + { timeout: 2063 } + ); + }; + + const listener = function(ev) { + if ( ev.isTrusted !== true ) { return; } + if ( ev.disposition !== 'enforce' ) { return; } + const json = JSON.stringify({ + url: ev.blockedURL || ev.blockedURI, + policy: ev.originalPolicy, + directive: ev.effectiveDirective || ev.violatedDirective, + }); + if ( allEvents.has(json) ) { return; } + newEvents.add(json); + sendAsync(); + }; + + const stop = function() { + newEvents.clear(); + allEvents.clear(); + if ( timer !== undefined ) { + self.cancelIdleCallback(timer); + timer = undefined; + } + document.removeEventListener('securitypolicyviolation', listener); + if ( vAPI ) { vAPI.shutdown.remove(stop); } + }; + + document.addEventListener('securitypolicyviolation', listener); + vAPI.shutdown.add(stop); + + // We need to call at least once to find out whether we really need to + // listen to CSP violations. + sendAsync(); +} + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************/ + +// vAPI.domWatcher + +{ + vAPI.domMutationTime = Date.now(); + + const addedNodeLists = []; + const removedNodeLists = []; + const addedNodes = []; + const ignoreTags = new Set([ 'br', 'head', 'link', 'meta', 'script', 'style' ]); + const listeners = []; + + let domLayoutObserver; + let listenerIterator = []; + let listenerIteratorDirty = false; + let removedNodes = false; + let safeObserverHandlerTimer; + + const safeObserverHandler = function() { + let i = addedNodeLists.length; + while ( i-- ) { + const nodeList = addedNodeLists[i]; + let iNode = nodeList.length; + while ( iNode-- ) { + const node = nodeList[iNode]; + if ( node.nodeType !== 1 ) { continue; } + if ( ignoreTags.has(node.localName) ) { continue; } + if ( node.parentElement === null ) { continue; } + addedNodes.push(node); + } + } + addedNodeLists.length = 0; + i = removedNodeLists.length; + while ( i-- && removedNodes === false ) { + const nodeList = removedNodeLists[i]; + let iNode = nodeList.length; + while ( iNode-- ) { + if ( nodeList[iNode].nodeType !== 1 ) { continue; } + removedNodes = true; + break; + } + } + removedNodeLists.length = 0; + if ( addedNodes.length === 0 && removedNodes === false ) { return; } + for ( const listener of getListenerIterator() ) { + try { listener.onDOMChanged(addedNodes, removedNodes); } + catch { } + } + addedNodes.length = 0; + removedNodes = false; + vAPI.domMutationTime = Date.now(); + }; + + // https://github.com/chrisaljoudi/uBlock/issues/205 + // Do not handle added node directly from within mutation observer. + const observerHandler = function(mutations) { + let i = mutations.length; + while ( i-- ) { + const mutation = mutations[i]; + if ( mutation.addedNodes.length !== 0 ) { + addedNodeLists.push(mutation.addedNodes); + } + if ( mutation.removedNodes.length !== 0 ) { + removedNodeLists.push(mutation.removedNodes); + } + } + if ( addedNodeLists.length !== 0 || removedNodeLists.length !== 0 ) { + safeObserverHandlerTimer.start( + addedNodeLists.length < 100 ? 1 : undefined + ); + } + }; + + const startMutationObserver = function() { + if ( domLayoutObserver !== undefined ) { return; } + domLayoutObserver = new MutationObserver(observerHandler); + domLayoutObserver.observe(document, { + childList: true, + subtree: true + }); + safeObserverHandlerTimer = new vAPI.SafeAnimationFrame(safeObserverHandler); + vAPI.shutdown.add(cleanup); + }; + + const stopMutationObserver = function() { + if ( domLayoutObserver === undefined ) { return; } + cleanup(); + vAPI.shutdown.remove(cleanup); + }; + + const getListenerIterator = function() { + if ( listenerIteratorDirty ) { + listenerIterator = listeners.slice(); + listenerIteratorDirty = false; + } + return listenerIterator; + }; + + const addListener = function(listener) { + if ( listeners.indexOf(listener) !== -1 ) { return; } + listeners.push(listener); + listenerIteratorDirty = true; + if ( domLayoutObserver === undefined ) { return; } + try { listener.onDOMCreated(); } + catch { } + startMutationObserver(); + }; + + const removeListener = function(listener) { + const pos = listeners.indexOf(listener); + if ( pos === -1 ) { return; } + listeners.splice(pos, 1); + listenerIteratorDirty = true; + if ( listeners.length === 0 ) { + stopMutationObserver(); + } + }; + + const cleanup = function() { + if ( domLayoutObserver !== undefined ) { + domLayoutObserver.disconnect(); + domLayoutObserver = undefined; + } + if ( safeObserverHandlerTimer !== undefined ) { + safeObserverHandlerTimer.clear(); + safeObserverHandlerTimer = undefined; + } + }; + + const start = function() { + for ( const listener of getListenerIterator() ) { + try { listener.onDOMCreated(); } + catch { } + } + startMutationObserver(); + }; + + vAPI.domWatcher = { start, addListener, removeListener }; +} + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************* + + The DOM filterer is the heart of uBO's cosmetic filtering. + + DOMFilterer: adds procedural cosmetic filtering + +*/ + +vAPI.hideStyle = 'display:none!important;'; + +vAPI.DOMFilterer = class { + constructor() { + this.commitTimer = new vAPI.SafeAnimationFrame( + ( ) => { this.commitNow(); } + ); + this.disabled = false; + this.listeners = []; + this.stylesheets = []; + this.exceptedCSSRules = []; + this.exceptions = []; + this.convertedProceduralFilters = []; + this.proceduralFilterer = null; + } + + explodeCSS(css) { + const out = []; + const cssHide = `{${vAPI.hideStyle}}`; + const blocks = css.trim().split(/\n\n+/); + for ( const block of blocks ) { + if ( block.endsWith(cssHide) === false ) { continue; } + out.push(block.slice(0, -cssHide.length).trim()); + } + return out; + } + + addCSS(css, details = {}) { + if ( typeof css !== 'string' || css.length === 0 ) { return; } + if ( this.stylesheets.includes(css) ) { return; } + this.stylesheets.push(css); + if ( details.mustInject && this.disabled === false ) { + vAPI.userStylesheet.add(css); + } + if ( this.hasListeners() === false ) { return; } + if ( details.silent ) { return; } + this.triggerListeners({ declarative: this.explodeCSS(css) }); + } + + exceptCSSRules(exceptions) { + if ( exceptions.length === 0 ) { return; } + this.exceptedCSSRules.push(...exceptions); + if ( this.hasListeners() ) { + this.triggerListeners({ exceptions }); + } + } + + addListener(listener) { + if ( this.listeners.indexOf(listener) !== -1 ) { return; } + this.listeners.push(listener); + } + + removeListener(listener) { + const pos = this.listeners.indexOf(listener); + if ( pos === -1 ) { return; } + this.listeners.splice(pos, 1); + } + + hasListeners() { + return this.listeners.length !== 0; + } + + triggerListeners(changes) { + for ( const listener of this.listeners ) { + listener.onFiltersetChanged(changes); + } + } + + toggle(state, callback) { + if ( state === undefined ) { state = this.disabled; } + if ( state !== this.disabled ) { return; } + this.disabled = !state; + const uss = vAPI.userStylesheet; + for ( const css of this.stylesheets ) { + if ( this.disabled ) { + uss.remove(css); + } else { + uss.add(css); + } + } + uss.apply(callback); + } + + // Here we will deal with: + // - Injecting low priority user styles; + // - Notifying listeners about changed filterset. + // https://www.reddit.com/r/uBlockOrigin/comments/9jj0y1/no_longer_blocking_ads/ + // Ensure vAPI is still valid -- it can go away by the time we are + // called, since the port could be force-disconnected from the main + // process. Another approach would be to have vAPI.SafeAnimationFrame + // register a shutdown job: to evaluate. For now I will keep the fix + // trivial. + commitNow() { + this.commitTimer.clear(); + if ( vAPI instanceof Object === false ) { return; } + vAPI.userStylesheet.apply(); + if ( this.proceduralFilterer instanceof Object ) { + this.proceduralFilterer.commitNow(); + } + } + + commit(commitNow) { + if ( commitNow ) { + this.commitTimer.clear(); + this.commitNow(); + } else { + this.commitTimer.start(); + } + } + + proceduralFiltererInstance() { + if ( this.proceduralFilterer instanceof Object === false ) { + if ( vAPI.DOMProceduralFilterer instanceof Object === false ) { + return null; + } + this.proceduralFilterer = new vAPI.DOMProceduralFilterer(this); + } + return this.proceduralFilterer; + } + + addProceduralSelectors(selectors) { + const procedurals = []; + for ( const raw of selectors ) { + procedurals.push(JSON.parse(raw)); + } + if ( procedurals.length === 0 ) { return; } + const pfilterer = this.proceduralFiltererInstance(); + if ( pfilterer !== null ) { + pfilterer.addProceduralSelectors(procedurals); + } + } + + createProceduralFilter(o) { + const pfilterer = this.proceduralFiltererInstance(); + if ( pfilterer === null ) { return; } + return pfilterer.createProceduralFilter(o); + } + + getAllSelectors(bits = 0) { + const out = { + declarative: [], + exceptions: this.exceptedCSSRules, + }; + const hasProcedural = this.proceduralFilterer instanceof Object; + const includePrivateSelectors = (bits & 0b01) !== 0; + const masterToken = hasProcedural + ? `[${this.proceduralFilterer.masterToken}]` + : undefined; + for ( const css of this.stylesheets ) { + for ( const block of this.explodeCSS(css) ) { + if ( + includePrivateSelectors === false && + masterToken !== undefined && + block.startsWith(masterToken) + ) { + continue; + } + out.declarative.push(block); + } + } + const excludeProcedurals = (bits & 0b10) !== 0; + if ( excludeProcedurals === false ) { + out.procedural = []; + if ( hasProcedural ) { + out.procedural.push( + ...this.proceduralFilterer.selectors.values() + ); + } + const proceduralFilterer = this.proceduralFiltererInstance(); + if ( proceduralFilterer !== null ) { + for ( const json of this.convertedProceduralFilters ) { + const pfilter = proceduralFilterer.createProceduralFilter(json); + pfilter.converted = true; + out.procedural.push(pfilter); + } + } + } + return out; + } + + getAllExceptionSelectors() { + return this.exceptions.join(',\n'); + } +}; + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************/ + +// vAPI.domCollapser + +{ + const messaging = vAPI.messaging; + const toCollapse = new Map(); + const src1stProps = { + audio: 'currentSrc', + embed: 'src', + iframe: 'src', + img: 'currentSrc', + object: 'data', + video: 'currentSrc', + }; + const src2ndProps = { + audio: 'src', + img: 'src', + video: 'src', + }; + const tagToTypeMap = { + audio: 'media', + embed: 'object', + iframe: 'sub_frame', + img: 'image', + object: 'object', + video: 'media', + }; + let requestIdGenerator = 1, + processTimer, + cachedBlockedSet, + cachedBlockedSetHash, + cachedBlockedSetTimer, + toProcess = [], + toFilter = [], + netSelectorCacheCount = 0; + + const cachedBlockedSetClear = function() { + cachedBlockedSet = + cachedBlockedSetHash = + cachedBlockedSetTimer = undefined; + }; + + // https://github.com/chrisaljoudi/uBlock/issues/399 + // https://github.com/gorhill/uBlock/issues/2848 + // Use a user stylesheet to collapse placeholders. + const getCollapseToken = ( ) => { + if ( collapseToken === undefined ) { + collapseToken = vAPI.randomToken(); + vAPI.userStylesheet.add( + `[${collapseToken}]\n{display:none!important;}`, + true + ); + } + return collapseToken; + }; + let collapseToken; + + // https://github.com/chrisaljoudi/uBlock/issues/174 + // Do not remove fragment from src URL + const onProcessed = function(response) { + // This happens if uBO is disabled or restarted. + if ( response instanceof Object === false ) { + toCollapse.clear(); + return; + } + + const targets = toCollapse.get(response.id); + if ( targets === undefined ) { return; } + + toCollapse.delete(response.id); + if ( cachedBlockedSetHash !== response.hash ) { + cachedBlockedSet = new Set(response.blockedResources); + cachedBlockedSetHash = response.hash; + if ( cachedBlockedSetTimer !== undefined ) { + clearTimeout(cachedBlockedSetTimer); + } + cachedBlockedSetTimer = vAPI.setTimeout(cachedBlockedSetClear, 30000); + } + if ( cachedBlockedSet === undefined || cachedBlockedSet.size === 0 ) { + return; + } + + const selectors = []; + let netSelectorCacheCountMax = response.netSelectorCacheCountMax; + + for ( const target of targets ) { + const tag = target.localName; + let prop = src1stProps[tag]; + if ( prop === undefined ) { continue; } + let src = target[prop]; + if ( typeof src !== 'string' || src.length === 0 ) { + prop = src2ndProps[tag]; + if ( prop === undefined ) { continue; } + src = target[prop]; + if ( typeof src !== 'string' || src.length === 0 ) { continue; } + } + if ( cachedBlockedSet.has(tagToTypeMap[tag] + ' ' + src) === false ) { + continue; + } + target.setAttribute(getCollapseToken(), ''); + // https://github.com/chrisaljoudi/uBlock/issues/1048 + // Use attribute to construct CSS rule + if ( netSelectorCacheCount > netSelectorCacheCountMax ) { continue; } + const value = target.getAttribute(prop); + if ( value ) { + selectors.push(`${tag}[${prop}="${CSS.escape(value)}"]`); + netSelectorCacheCount += 1; + } + } + + if ( selectors.length === 0 ) { return; } + messaging.send('contentscript', { + what: 'cosmeticFiltersInjected', + type: 'net', + hostname: window.location.hostname, + selectors, + }); + }; + + const send = function() { + processTimer = undefined; + toCollapse.set(requestIdGenerator, toProcess); + messaging.send('contentscript', { + what: 'getCollapsibleBlockedRequests', + id: requestIdGenerator, + frameURL: window.location.href, + resources: toFilter, + hash: cachedBlockedSetHash, + }).then(response => { + onProcessed(response); + }); + toProcess = []; + toFilter = []; + requestIdGenerator += 1; + }; + + const process = function(delay) { + if ( toProcess.length === 0 ) { return; } + if ( delay === 0 ) { + if ( processTimer !== undefined ) { + clearTimeout(processTimer); + } + send(); + } else if ( processTimer === undefined ) { + processTimer = vAPI.setTimeout(send, delay || 20); + } + }; + + const add = function(target) { + toProcess[toProcess.length] = target; + }; + + const addMany = function(targets) { + for ( const target of targets ) { + add(target); + } + }; + + const iframeSourceModified = function(mutations) { + for ( const mutation of mutations ) { + addIFrame(mutation.target, true); + } + process(); + }; + const iframeSourceObserver = new MutationObserver(iframeSourceModified); + const iframeSourceObserverOptions = { + attributes: true, + attributeFilter: [ 'src' ] + }; + + // https://github.com/gorhill/uBlock/issues/162 + // Be prepared to deal with possible change of src attribute. + const addIFrame = function(iframe, dontObserve) { + if ( dontObserve !== true ) { + iframeSourceObserver.observe(iframe, iframeSourceObserverOptions); + } + const src = iframe.src; + if ( typeof src !== 'string' || src === '' ) { return; } + if ( src.startsWith('http') === false ) { return; } + toFilter.push({ type: 'sub_frame', url: iframe.src }); + add(iframe); + }; + + const addIFrames = function(iframes) { + for ( const iframe of iframes ) { + addIFrame(iframe); + } + }; + + const onResourceFailed = function(ev) { + if ( tagToTypeMap[ev.target.localName] !== undefined ) { + add(ev.target); + process(); + } + }; + + const stop = function() { + document.removeEventListener('error', onResourceFailed, true); + if ( processTimer !== undefined ) { + clearTimeout(processTimer); + } + if ( vAPI.domWatcher instanceof Object ) { + vAPI.domWatcher.removeListener(domWatcherInterface); + } + vAPI.shutdown.remove(stop); + vAPI.domCollapser = null; + }; + + const start = function() { + if ( vAPI.domWatcher instanceof Object ) { + vAPI.domWatcher.addListener(domWatcherInterface); + } + }; + + const domWatcherInterface = { + onDOMCreated: function() { + if ( self.vAPI instanceof Object === false ) { return; } + if ( vAPI.domCollapser instanceof Object === false ) { + if ( vAPI.domWatcher instanceof Object ) { + vAPI.domWatcher.removeListener(domWatcherInterface); + } + return; + } + // Listener to collapse blocked resources. + // - Future requests not blocked yet + // - Elements dynamically added to the page + // - Elements which resource URL changes + // https://github.com/chrisaljoudi/uBlock/issues/7 + // Preferring getElementsByTagName over querySelectorAll: + // http://jsperf.com/queryselectorall-vs-getelementsbytagname/145 + const elems = document.images || + document.getElementsByTagName('img'); + for ( const elem of elems ) { + if ( elem.complete ) { + add(elem); + } + } + addMany(document.embeds || document.getElementsByTagName('embed')); + addMany(document.getElementsByTagName('object')); + addIFrames(document.getElementsByTagName('iframe')); + process(0); + + document.addEventListener('error', onResourceFailed, true); + + vAPI.shutdown.add(stop); + }, + onDOMChanged: function(addedNodes) { + if ( addedNodes.length === 0 ) { return; } + for ( const node of addedNodes ) { + if ( node.localName === 'iframe' ) { + addIFrame(node); + } + if ( node.firstElementChild === null ) { continue; } + const iframes = node.getElementsByTagName('iframe'); + if ( iframes.length !== 0 ) { + addIFrames(iframes); + } + } + process(); + } + }; + + vAPI.domCollapser = { start }; +} + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************/ + +// vAPI.domSurveyor + +{ + const queriedHashes = new Set(); + const newHashes = new Set(); + const maxSurveyNodes = 65536; + const pendingLists = []; + const pendingNodes = []; + const processedSet = new Set(); + const ignoreTags = Object.assign(Object.create(null), { + br: 1, head: 1, link: 1, meta: 1, script: 1, style: 1 + }); + let domObserver; + let domFilterer; + let hostname = ''; + let domChanged = false; + let scannedCount = 0; + let stopped = false; + + // http://www.cse.yorku.ca/~oz/hash.html#djb2 + // Must mirror cosmetic filtering compiler's version + const hashFromStr = (type, s) => { + const len = s.length; + const step = len + 7 >>> 3; + let hash = (type << 5) + type ^ len; + for ( let i = 0; i < len; i += step ) { + hash = (hash << 5) + hash ^ s.charCodeAt(i); + } + return hash & 0xFFFFFF; + }; + + const addHashes = hashes => { + for ( const hash of hashes ) { + queriedHashes.add(hash); + } + }; + + const qsa = (context, selector) => + Array.from(context.querySelectorAll(selector)); + + const addPendingList = list => { + if ( list.length === 0 ) { return; } + pendingLists.push(list); + }; + + const nextPendingNodes = ( ) => { + if ( pendingLists.length === 0 ) { return 0; } + const bufferSize = 256; + let j = 0; + do { + const nodeList = pendingLists[0]; + let n = bufferSize - j; + if ( n > nodeList.length ) { + n = nodeList.length; + } + for ( let i = 0; i < n; i++ ) { + pendingNodes[j+i] = nodeList[i]; + } + j += n; + if ( n !== nodeList.length ) { + pendingLists[0] = nodeList.slice(n); + break; + } + pendingLists.shift(); + } while ( j < bufferSize && pendingLists.length !== 0 ); + return j; + }; + + const hasPendingNodes = ( ) => { + return pendingLists.length !== 0 || newHashes.size !== 0 ; + }; + + // Extract all classes/ids: these will be passed to the cosmetic + // filtering engine, and in return we will obtain only the relevant + // CSS selectors. + + // https://github.com/gorhill/uBlock/issues/672 + // http://www.w3.org/TR/2014/REC-html5-20141028/infrastructure.html#space-separated-tokens + // http://jsperf.com/enumerate-classes/6 + + const idFromNode = node => { + const raw = node.id; + if ( typeof raw !== 'string' || raw.length === 0 ) { return; } + const hash = hashFromStr(0x23 /* '#' */, raw.trim()); + if ( queriedHashes.has(hash) ) { return; } + queriedHashes.add(hash); + newHashes.add(hash); + }; + + // https://github.com/uBlockOrigin/uBlock-issues/discussions/2076 + // Performance: avoid using Element.classList + const classesFromNode = node => { + const s = node.getAttribute('class'); + if ( typeof s !== 'string' ) { return; } + const len = s.length; + for ( let beg = 0, end = 0; beg < len; beg += 1 ) { + end = s.indexOf(' ', beg); + if ( end === beg ) { continue; } + if ( end === -1 ) { end = len; } + const token = s.slice(beg, end).trimEnd(); + beg = end; + if ( token.length === 0 ) { continue; } + const hash = hashFromStr(0x2E /* '.' */, token); + if ( queriedHashes.has(hash) ) { continue; } + queriedHashes.add(hash); + newHashes.add(hash); + } + }; + + const getSurveyResults = safeOnly => { + if ( Boolean(self.vAPI?.messaging) === false ) { return stop(); } + const promise = newHashes.size === 0 + ? Promise.resolve(null) + : self.vAPI.messaging.send('contentscript', { + what: 'retrieveGenericCosmeticSelectors', + hostname, + hashes: Array.from(newHashes), + exceptions: domFilterer.exceptions, + safeOnly, + }); + promise.then(response => { + processSurveyResults(response); + }); + newHashes.clear(); + }; + + const doSurvey = ( ) => { + const t0 = performance.now(); + const nodes = pendingNodes; + const deadline = t0 + 4; + let scanned = 0; + for (;;) { + const n = nextPendingNodes(); + if ( n === 0 ) { break; } + for ( let i = 0; i < n; i++ ) { + const node = nodes[i]; nodes[i] = null; + if ( domChanged ) { + if ( processedSet.has(node) ) { continue; } + processedSet.add(node); + } + idFromNode(node); + classesFromNode(node); + scanned += 1; + } + if ( performance.now() >= deadline ) { break; } + } + scannedCount += scanned; + if ( scannedCount >= maxSurveyNodes ) { + stop(); + } + processedSet.clear(); + getSurveyResults(); + }; + + const surveyTimer = new vAPI.SafeAnimationFrame(doSurvey); + + // This is to shutdown the surveyor if result of surveying keeps being + // fruitless. This is useful on long-lived web page. I arbitrarily + // picked 5 minutes before the surveyor is allowed to shutdown. I also + // arbitrarily picked 256 misses before the surveyor is allowed to + // shutdown. + let canShutdownAfter = Date.now() + 300000; + let surveyResultMissCount = 0; + + // Handle main process' response. + + const processSurveyResults = response => { + if ( stopped ) { return; } + const result = response && response.result; + let mustCommit = false; + if ( result ) { + const css = result.injectedCSS; + if ( typeof css === 'string' && css.length !== 0 ) { + domFilterer.addCSS(css); + mustCommit = true; + } + const selectors = result.excepted; + if ( Array.isArray(selectors) && selectors.length !== 0 ) { + domFilterer.exceptCSSRules(selectors); + } + } + if ( hasPendingNodes() ) { + surveyTimer.start(1); + } + if ( mustCommit ) { + surveyResultMissCount = 0; + canShutdownAfter = Date.now() + 300000; + return; + } + surveyResultMissCount += 1; + if ( surveyResultMissCount < 256 || Date.now() < canShutdownAfter ) { + return; + } + //console.info(`[domSurveyor][${hostname}] Shutting down, too many misses`); + stop(); + self.vAPI.messaging.send('contentscript', { + what: 'disableGenericCosmeticFilteringSurveyor', + hostname, + }); + }; + + const onDomChanged = mutations => { + domChanged = true; + for ( const mutation of mutations ) { + if ( mutation.type === 'childList' ) { + const { addedNodes } = mutation; + if ( addedNodes.length === 0 ) { continue; } + for ( const node of addedNodes ) { + if ( node.nodeType !== 1 ) { continue; } + if ( ignoreTags[node.localName] ) { continue; } + if ( node.parentElement === null ) { continue; } + addPendingList([ node ]); + if ( node.firstElementChild === null ) { continue; } + addPendingList(qsa(node, '[id],[class]')); + } + } else if ( mutation.attributeName === 'class' ) { + classesFromNode(mutation.target); + } else { + idFromNode(mutation.target); + } + } + if ( hasPendingNodes() ) { + surveyTimer.start(); + } + }; + + const start = details => { + if ( Boolean(self.vAPI?.domFilterer) === false ) { return stop(); } + hostname = details.hostname; + domFilterer = vAPI.domFilterer; + // https://github.com/uBlockOrigin/uBlock-issues/issues/1692 + // Look-up safe-only selectors to mitigate probability of + // html/body elements of erroneously being targeted. + if ( document.documentElement !== null ) { + idFromNode(document.documentElement); + classesFromNode(document.documentElement); + } + if ( document.body !== null ) { + idFromNode(document.body); + classesFromNode(document.body); + } + if ( newHashes.size !== 0 ) { + getSurveyResults(newHashes, true); + } + addPendingList(qsa(document, '[id],[class]')); + if ( hasPendingNodes() ) { + surveyTimer.start(); + } + domObserver = new MutationObserver(onDomChanged); + domObserver.observe(document, { + attributeFilter: [ 'class', 'id' ], + attributes: true, + childList: true, + subtree: true + }); + }; + + const stop = ( ) => { + stopped = true; + pendingLists.length = 0; + surveyTimer.clear(); + if ( domObserver ) { + domObserver.disconnect(); + domObserver = undefined; + } + if ( self.vAPI?.domSurveyor ) { + self.vAPI.domSurveyor = null; + } + }; + + self.vAPI.domSurveyor = { start, addHashes }; +} + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************/ + +// vAPI.bootstrap: +// Bootstrapping allows all components of the content script +// to be launched if/when needed. + +{ + const onDomReady = ( ) => { + // This can happen on Firefox. For instance: + // https://github.com/gorhill/uBlock/issues/1893 + if ( window.location === null ) { return; } + if ( self.vAPI instanceof Object === false ) { return; } + + vAPI.messaging.send('contentscript', { + what: 'shouldRenderNoscriptTags', + }); + + if ( vAPI.domFilterer instanceof Object ) { + vAPI.domFilterer.commitNow(); + } + + if ( vAPI.domWatcher instanceof Object ) { + vAPI.domWatcher.start(); + } + + // Element picker works only in top window for now. + if ( + window !== window.top || + vAPI.domFilterer instanceof Object === false + ) { + return; + } + + // To be used by element picker/zapper. + vAPI.mouseClick = { x: -1, y: -1 }; + + const onMouseClick = function(ev) { + if ( ev.isTrusted === false ) { return; } + vAPI.mouseClick.x = ev.clientX; + vAPI.mouseClick.y = ev.clientY; + + // https://github.com/chrisaljoudi/uBlock/issues/1143 + // Find a link under the mouse, to try to avoid confusing new tabs + // as nuisance popups. + // https://github.com/uBlockOrigin/uBlock-issues/issues/777 + // Mind that href may not be a string. + const elem = ev.target.closest('a[href]'); + if ( elem === null || typeof elem.href !== 'string' ) { return; } + vAPI.messaging.send('contentscript', { + what: 'maybeGoodPopup', + url: elem.href || '', + }); + }; + + document.addEventListener('mousedown', onMouseClick, true); + + // https://github.com/gorhill/uMatrix/issues/144 + vAPI.shutdown.add(function() { + document.removeEventListener('mousedown', onMouseClick, true); + }); + }; + + // https://github.com/uBlockOrigin/uBlock-issues/issues/403 + // If there was a spurious port disconnection -- in which case the + // response is expressly set to `null`, rather than undefined or + // an object -- let's stay around, we may be given the opportunity + // to try bootstrapping again later. + + const onResponseReady = response => { + if ( response instanceof Object === false ) { return; } + vAPI.bootstrap = undefined; + + // cosmetic filtering engine aka 'cfe' + const cfeDetails = response && response.specificCosmeticFilters; + if ( !cfeDetails || !cfeDetails.ready ) { + vAPI.domWatcher = vAPI.domCollapser = vAPI.domFilterer = + vAPI.domSurveyor = vAPI.domIsLoaded = null; + return; + } + + vAPI.domCollapser.start(); + + const { + noSpecificCosmeticFiltering, + noGenericCosmeticFiltering, + } = response; + + vAPI.noSpecificCosmeticFiltering = noSpecificCosmeticFiltering; + vAPI.noGenericCosmeticFiltering = noGenericCosmeticFiltering; + + if ( noSpecificCosmeticFiltering && noGenericCosmeticFiltering ) { + vAPI.domFilterer = null; + vAPI.domSurveyor = null; + } else { + const domFilterer = vAPI.domFilterer = new vAPI.DOMFilterer(); + if ( noGenericCosmeticFiltering || cfeDetails.disableSurveyor ) { + vAPI.domSurveyor = null; + } + domFilterer.exceptions = cfeDetails.exceptionFilters; + domFilterer.addCSS(cfeDetails.injectedCSS); + domFilterer.addProceduralSelectors(cfeDetails.proceduralFilters); + domFilterer.exceptCSSRules(cfeDetails.exceptedFilters); + domFilterer.convertedProceduralFilters = cfeDetails.convertedProceduralFilters; + vAPI.userStylesheet.apply(); + } + + if ( vAPI.domSurveyor ) { + if ( Array.isArray(cfeDetails.genericCosmeticHashes) ) { + vAPI.domSurveyor.addHashes(cfeDetails.genericCosmeticHashes); + } + vAPI.domSurveyor.start(cfeDetails); + } + + const readyState = document.readyState; + if ( readyState === 'interactive' || readyState === 'complete' ) { + return onDomReady(); + } + document.addEventListener('DOMContentLoaded', onDomReady, { once: true }); + }; + + vAPI.bootstrap = function() { + vAPI.messaging.send('contentscript', { + what: 'retrieveContentScriptParameters', + url: vAPI.effectiveSelf.location.href, + needScriptlets: self.uBO_scriptletsInjected === undefined, + }).then(response => { + onResponseReady(response); + }); + }; +} + +// This starts bootstrap process. +vAPI.bootstrap(); + +/******************************************************************************/ +/******************************************************************************/ +/******************************************************************************/ + +} +// <<<<<<<< end of HUGE-IF-BLOCK diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/contextmenu.js b/android/app/src/main/assets/extensions/ublock_origin/js/contextmenu.js new file mode 100644 index 00000000..a158f240 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/contextmenu.js @@ -0,0 +1,273 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { i18n$ } from './i18n.js'; +import µb from './background.js'; + +/******************************************************************************/ + +const contextMenu = (( ) => { + +/******************************************************************************/ + +if ( vAPI.contextMenu === undefined ) { + return { + update: function() {} + }; +} + +/******************************************************************************/ + +const BLOCK_ELEMENT_BIT = 0b00001; +const BLOCK_RESOURCE_BIT = 0b00010; +const TEMP_ALLOW_LARGE_MEDIA_BIT = 0b00100; +const SUBSCRIBE_TO_LIST_BIT = 0b01000; +const VIEW_SOURCE_BIT = 0b10000; + +/******************************************************************************/ + +const onBlockElement = function(details, tab) { + if ( tab === undefined ) { return; } + if ( /^https?:\/\//.test(tab.url) === false ) { return; } + let tagName = details.tagName || ''; + let src = details.frameUrl || details.srcUrl || details.linkUrl || ''; + + if ( !tagName ) { + if ( typeof details.frameUrl === 'string' && details.frameId !== 0 ) { + tagName = 'iframe'; + src = details.srcUrl; + } else if ( typeof details.srcUrl === 'string' ) { + if ( details.mediaType === 'image' ) { + tagName = 'img'; + src = details.srcUrl; + } else if ( details.mediaType === 'video' ) { + tagName = 'video'; + src = details.srcUrl; + } else if ( details.mediaType === 'audio' ) { + tagName = 'audio'; + src = details.srcUrl; + } + } else if ( typeof details.linkUrl === 'string' ) { + tagName = 'a'; + src = details.linkUrl; + } + } + + µb.epickerArgs.mouse = true; + µb.elementPickerExec(tab.id, 0, `${tagName}\t${src}`); +}; + +/******************************************************************************/ + +const onBlockElementInFrame = function(details, tab) { + if ( tab === undefined ) { return; } + if ( /^https?:\/\//.test(details.frameUrl) === false ) { return; } + µb.epickerArgs.mouse = false; + µb.elementPickerExec(tab.id, details.frameId); +}; + +/******************************************************************************/ + +const onSubscribeToList = function(details) { + let parsedURL; + try { + parsedURL = new URL(details.linkUrl); + } + catch { + } + if ( parsedURL instanceof URL === false ) { return; } + const url = parsedURL.searchParams.get('location'); + if ( url === null ) { return; } + const title = parsedURL.searchParams.get('title') || '?'; + const hash = µb.selectedFilterLists.indexOf(parsedURL) !== -1 + ? '#subscribed' + : ''; + vAPI.tabs.open({ + url: + `/asset-viewer.html` + + `?url=${encodeURIComponent(url)}` + + `&title=${encodeURIComponent(title)}` + + `&subscribe=1${hash}`, + select: true, + }); +}; + +/******************************************************************************/ + +const onTemporarilyAllowLargeMediaElements = function(details, tab) { + if ( tab === undefined ) { return; } + const pageStore = µb.pageStoreFromTabId(tab.id); + if ( pageStore === null ) { return; } + pageStore.temporarilyAllowLargeMediaElements(true); +}; + +/******************************************************************************/ + +const onViewSource = function(details, tab) { + if ( tab === undefined ) { return; } + const url = details.linkUrl || details.frameUrl || details.pageUrl || ''; + if ( /^https?:\/\//.test(url) === false ) { return; } + µb.openNewTab({ + url: `code-viewer.html?url=${self.encodeURIComponent(url)}`, + select: true, + }); +}; + +/******************************************************************************/ + +const onEntryClicked = function(details, tab) { + if ( details.menuItemId === 'uBlock0-blockElement' ) { + return onBlockElement(details, tab); + } + if ( details.menuItemId === 'uBlock0-blockElementInFrame' ) { + return onBlockElementInFrame(details, tab); + } + if ( details.menuItemId === 'uBlock0-blockResource' ) { + return onBlockElement(details, tab); + } + if ( details.menuItemId === 'uBlock0-subscribeToList' ) { + return onSubscribeToList(details); + } + if ( details.menuItemId === 'uBlock0-temporarilyAllowLargeMediaElements' ) { + return onTemporarilyAllowLargeMediaElements(details, tab); + } + if ( details.menuItemId === 'uBlock0-viewSource' ) { + return onViewSource(details, tab); + } +}; + +/******************************************************************************/ + +const menuEntries = { + blockElement: { + id: 'uBlock0-blockElement', + title: i18n$('pickerContextMenuEntry'), + contexts: [ 'all' ], + documentUrlPatterns: [ 'http://*/*', 'https://*/*' ], + }, + blockElementInFrame: { + id: 'uBlock0-blockElementInFrame', + title: i18n$('contextMenuBlockElementInFrame'), + contexts: [ 'frame' ], + documentUrlPatterns: [ 'http://*/*', 'https://*/*' ], + }, + blockResource: { + id: 'uBlock0-blockResource', + title: i18n$('pickerContextMenuEntry'), + contexts: [ 'audio', 'frame', 'image', 'video' ], + documentUrlPatterns: [ 'http://*/*', 'https://*/*' ], + }, + subscribeToList: { + id: 'uBlock0-subscribeToList', + title: i18n$('contextMenuSubscribeToList'), + contexts: [ 'link' ], + targetUrlPatterns: [ 'abp:*', 'https://subscribe.adblockplus.org/*' ], + }, + temporarilyAllowLargeMediaElements: { + id: 'uBlock0-temporarilyAllowLargeMediaElements', + title: i18n$('contextMenuTemporarilyAllowLargeMediaElements'), + contexts: [ 'all' ], + documentUrlPatterns: [ 'http://*/*', 'https://*/*' ], + }, + viewSource: { + id: 'uBlock0-viewSource', + title: i18n$('contextMenuViewSource'), + contexts: [ 'page', 'frame', 'link' ], + documentUrlPatterns: [ 'http://*/*', 'https://*/*' ], + }, +}; + +/******************************************************************************/ + +let currentBits = 0; + +const update = function(tabId = undefined) { + let newBits = 0; + if ( µb.userSettings.contextMenuEnabled ) { + const pageStore = tabId && µb.pageStoreFromTabId(tabId) || null; + if ( pageStore?.getNetFilteringSwitch() ) { + if ( µb.userFiltersAreEnabled() ) { + if ( pageStore.shouldApplySpecificCosmeticFilters(0) ) { + newBits |= BLOCK_ELEMENT_BIT; + } else { + newBits |= BLOCK_RESOURCE_BIT; + } + } + if ( pageStore.largeMediaCount !== 0 ) { + newBits |= TEMP_ALLOW_LARGE_MEDIA_BIT; + } + } + if ( µb.hiddenSettings.filterAuthorMode ) { + newBits |= VIEW_SOURCE_BIT; + } + } + newBits |= SUBSCRIBE_TO_LIST_BIT; + if ( newBits === currentBits ) { return; } + currentBits = newBits; + const usedEntries = []; + if ( (newBits & BLOCK_ELEMENT_BIT) !== 0 ) { + usedEntries.push(menuEntries.blockElement); + usedEntries.push(menuEntries.blockElementInFrame); + } + if ( (newBits & BLOCK_RESOURCE_BIT) !== 0 ) { + usedEntries.push(menuEntries.blockResource); + } + if ( (newBits & TEMP_ALLOW_LARGE_MEDIA_BIT) !== 0 ) { + usedEntries.push(menuEntries.temporarilyAllowLargeMediaElements); + } + if ( (newBits & SUBSCRIBE_TO_LIST_BIT) !== 0 ) { + usedEntries.push(menuEntries.subscribeToList); + } + if ( (newBits & VIEW_SOURCE_BIT) !== 0 ) { + usedEntries.push(menuEntries.viewSource); + } + vAPI.contextMenu.setEntries(usedEntries, onEntryClicked); +}; + +/******************************************************************************/ + +// https://github.com/uBlockOrigin/uBlock-issues/issues/151 +// For unknown reasons, the currently active tab will not be successfully +// looked up after closing a window. + +vAPI.contextMenu.onMustUpdate = async function(tabId = undefined) { + if ( µb.userSettings.contextMenuEnabled === false ) { + return update(); + } + if ( tabId !== undefined ) { + return update(tabId); + } + const tab = await vAPI.tabs.getCurrent(); + if ( tab instanceof Object === false ) { return; } + update(tab.id); +}; + +return { update: vAPI.contextMenu.onMustUpdate }; + +/******************************************************************************/ + +})(); + +/******************************************************************************/ + +export default contextMenu; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/cosmetic-filtering.js b/android/app/src/main/assets/extensions/ublock_origin/js/cosmetic-filtering.js new file mode 100644 index 00000000..4b4e561d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/cosmetic-filtering.js @@ -0,0 +1,942 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +import { MRUCache } from './mrucache.js'; +import { StaticExtFilteringHostnameDB } from './static-ext-filtering-db.js'; +import { entityFromHostname } from './uri-utils.js'; +import logger from './logger.js'; +import µb from './background.js'; + +/******************************************************************************/ +/******************************************************************************/ + +const SelectorCacheEntry = class { + constructor() { + this.reset(); + } + + reset() { + this.cosmetic = new Set(); + this.cosmeticHashes = new Set(); + this.disableSurveyor = false; + this.net = new Map(); + this.accessId = SelectorCacheEntry.accessId++; + return this; + } + + dispose() { + this.cosmetic = this.cosmeticHashes = this.net = null; + if ( SelectorCacheEntry.junkyard.length < 25 ) { + SelectorCacheEntry.junkyard.push(this); + } + } + + addCosmetic(details) { + const selectors = details.selectors.join(',\n'); + if ( selectors.length !== 0 ) { + this.cosmetic.add(selectors); + } + for ( const hash of details.hashes ) { + this.cosmeticHashes.add(hash); + } + } + + addNet(selectors) { + if ( typeof selectors === 'string' ) { + this.net.set(selectors, this.accessId); + } else { + this.net.set(selectors.join(',\n'), this.accessId); + } + // Net request-derived selectors: I limit the number of cached + // selectors, as I expect cases where the blocked network requests + // are never the exact same URL. + if ( this.net.size < SelectorCacheEntry.netHighWaterMark ) { return; } + const keys = Array.from(this.net) + .sort((a, b) => b[1] - a[1]) + .slice(SelectorCacheEntry.netLowWaterMark) + .map(a => a[0]); + for ( const key of keys ) { + this.net.delete(key); + } + } + + addNetOne(selector, token) { + this.net.set(selector, token); + } + + add(details) { + this.accessId = SelectorCacheEntry.accessId++; + if ( details.type === 'cosmetic' ) { + this.addCosmetic(details); + } else { + this.addNet(details.selectors); + } + } + + // https://github.com/chrisaljoudi/uBlock/issues/420 + remove(type) { + this.accessId = SelectorCacheEntry.accessId++; + if ( type === undefined || type === 'cosmetic' ) { + this.cosmetic.clear(); + } + if ( type === undefined || type === 'net' ) { + this.net.clear(); + } + } + + retrieveToArray(iterator, out) { + for ( const selector of iterator ) { + out.push(selector); + } + } + + retrieveToSet(iterator, out) { + for ( const selector of iterator ) { + out.add(selector); + } + } + + retrieveNet(out) { + this.accessId = SelectorCacheEntry.accessId++; + if ( this.net.size === 0 ) { return false; } + this.retrieveToArray(this.net.keys(), out); + return true; + } + + retrieveCosmetic(selectors, hashes) { + this.accessId = SelectorCacheEntry.accessId++; + if ( this.cosmetic.size === 0 ) { return false; } + this.retrieveToSet(this.cosmetic, selectors); + this.retrieveToArray(this.cosmeticHashes, hashes); + return true; + } + + static factory() { + const entry = SelectorCacheEntry.junkyard.pop(); + return entry + ? entry.reset() + : new SelectorCacheEntry(); + } +}; + +SelectorCacheEntry.accessId = 1; +SelectorCacheEntry.netLowWaterMark = 20; +SelectorCacheEntry.netHighWaterMark = 30; +SelectorCacheEntry.junkyard = []; + +/******************************************************************************/ +/******************************************************************************/ + +// http://www.cse.yorku.ca/~oz/hash.html#djb2 +// Must mirror content script surveyor's version + +const hashFromStr = (type, s) => { + const len = s.length; + const step = len + 7 >>> 3; + let hash = (type << 5) + type ^ len; + for ( let i = 0; i < len; i += step ) { + hash = (hash << 5) + hash ^ s.charCodeAt(i); + } + return hash & 0xFFFFFF; +}; + +// https://github.com/gorhill/uBlock/issues/1668 +// The key must be literal: unescape escaped CSS before extracting key. +// It's an uncommon case, so it's best to unescape only when needed. + +const keyFromSelector = selector => { + let matches = reSimplestSelector.exec(selector); + if ( matches !== null ) { return matches[0]; } + let key = ''; + matches = rePlainSelector.exec(selector); + if ( matches !== null ) { + key = matches[0]; + } else { + matches = rePlainSelectorEx.exec(selector); + if ( matches === null ) { return; } + key = matches[1] || matches[2]; + } + if ( selector.includes(',') ) { return; } + if ( key.includes('\\') === false ) { return key; } + matches = rePlainSelectorEscaped.exec(selector); + if ( matches === null ) { return; } + key = ''; + const escaped = matches[0]; + let beg = 0; + reEscapeSequence.lastIndex = 0; + for (;;) { + matches = reEscapeSequence.exec(escaped); + if ( matches === null ) { + return key + escaped.slice(beg); + } + key += escaped.slice(beg, matches.index); + beg = reEscapeSequence.lastIndex; + if ( matches[1].length === 1 ) { + key += matches[1]; + } else { + key += String.fromCharCode(parseInt(matches[1], 16)); + } + } +}; + +const reSimplestSelector = /^[#.][\w-]+$/; +const rePlainSelector = /^[#.][\w\\-]+/; +const rePlainSelectorEx = /^[^#.[(]+([#.][\w-]+)|([#.][\w-]+)$/; +const rePlainSelectorEscaped = /^[#.](?:\\[0-9A-Fa-f]+ |\\.|\w|-)+/; +const reEscapeSequence = /\\([0-9A-Fa-f]+ |.)/g; + +/******************************************************************************/ +/******************************************************************************/ + +// Cosmetic filter family tree: +// +// Generic +// Low generic simple: class or id only +// Low generic complex: class or id + extra stuff after +// High generic: +// High-low generic: [alt="..."],[title="..."] +// High-medium generic: [href^="..."] +// High-high generic: everything else +// Specific +// Specific hostname +// Specific entity +// Generic filters can only be enforced once the main document is loaded. +// Specific filers can be enforced before the main document is loaded. + +const CosmeticFilteringEngine = function() { + this.reSimpleHighGeneric = /^(?:[a-z]*\[[^\]]+\]|\S+)$/; + + this.selectorCache = new Map(); + this.selectorCachePruneDelay = 10; // 10 minutes + this.selectorCacheCountMin = 40; + this.selectorCacheCountMax = 50; + this.selectorCacheTimer = vAPI.defer.create(( ) => { + this.pruneSelectorCacheAsync(); + }); + + // specific filters + this.specificFilters = new StaticExtFilteringHostnameDB(); + + // low generic cosmetic filters: map of hash => stringified selector list + this.lowlyGeneric = new Map(); + + // highly generic selectors sets + this.highlyGeneric = Object.create(null); + this.highlyGeneric.simple = { + canonical: 'highGenericHideSimple', + dict: new Set(), + str: '', + mru: new MRUCache(16) + }; + this.highlyGeneric.complex = { + canonical: 'highGenericHideComplex', + dict: new Set(), + str: '', + mru: new MRUCache(16) + }; + this.reset(); +}; + +/******************************************************************************/ + +// Reset all, thus reducing to a minimum memory footprint of the context. + +CosmeticFilteringEngine.prototype.reset = function() { + this.frozen = false; + this.acceptedCount = 0; + this.discardedCount = 0; + this.duplicateBuster = new Set(); + + this.selectorCache.clear(); + this.selectorCacheTimer.off(); + + // hostname, entity-based filters + this.specificFilters.clear(); + + // low generic cosmetic filters + this.lowlyGeneric.clear(); + + // highly generic selectors sets + this.highlyGeneric.simple.dict.clear(); + this.highlyGeneric.simple.str = ''; + this.highlyGeneric.simple.mru.reset(); + this.highlyGeneric.complex.dict.clear(); + this.highlyGeneric.complex.str = ''; + this.highlyGeneric.complex.mru.reset(); + + this.selfieVersion = 2; +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.freeze = function() { + this.duplicateBuster.clear(); + this.specificFilters.collectGarbage(); + + this.highlyGeneric.simple.str = Array.from(this.highlyGeneric.simple.dict).join(',\n'); + this.highlyGeneric.simple.mru.reset(); + this.highlyGeneric.complex.str = Array.from(this.highlyGeneric.complex.dict).join(',\n'); + this.highlyGeneric.complex.mru.reset(); + + this.frozen = true; +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.compile = function(parser, writer) { + if ( parser.hasOptions() === false ) { + this.compileGenericSelector(parser, writer); + return true; + } + + // https://github.com/chrisaljoudi/uBlock/issues/151 + // Negated hostname means the filter applies to all non-negated hostnames + // of same filter OR globally if there is no non-negated hostnames. + let applyGlobally = true; + for ( const { hn, not, bad } of parser.getExtFilterDomainIterator() ) { + if ( bad ) { continue; } + if ( not === false ) { + applyGlobally = false; + } + this.compileSpecificSelector(parser, hn, not, writer); + } + if ( applyGlobally ) { + this.compileGenericSelector(parser, writer); + } + + return true; +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.compileGenericSelector = function(parser, writer) { + if ( parser.isException() ) { + this.compileGenericUnhideSelector(parser, writer); + } else { + this.compileGenericHideSelector(parser, writer); + } +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.compileGenericHideSelector = function( + parser, + writer +) { + const { raw, compiled } = parser.result; + if ( compiled === undefined ) { + const who = writer.properties.get('name') || '?'; + logger.writeOne({ + realm: 'message', + type: 'error', + text: `Invalid generic cosmetic filter in ${who}: ${raw}` + }); + return; + } + + writer.select('COSMETIC_FILTERS:GENERIC'); + + // https://github.com/uBlockOrigin/uBlock-issues/issues/131 + // Support generic procedural filters as per advanced settings. + if ( compiled.charCodeAt(0) === 0x7B /* '{' */ ) { + if ( µb.hiddenSettings.allowGenericProceduralFilters === true ) { + return this.compileSpecificSelector(parser, '', false, writer); + } + const who = writer.properties.get('name') || '?'; + logger.writeOne({ + realm: 'message', + type: 'error', + text: `Invalid generic cosmetic filter in ${who}: ##${raw}` + }); + return; + } + + const key = keyFromSelector(compiled); + if ( key !== undefined ) { + writer.push([ + 0, + hashFromStr(key.charCodeAt(0), key.slice(1)), + compiled, + ]); + return; + } + + // Pass this point, we are dealing with highly-generic cosmetic filters. + // + // For efficiency purpose, we will distinguish between simple and complex + // selectors. + + if ( this.reSimpleHighGeneric.test(compiled) ) { + writer.push([ 4 /* simple */, compiled ]); + } else { + writer.push([ 5 /* complex */, compiled ]); + } +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.compileGenericUnhideSelector = function( + parser, + writer +) { + // Procedural cosmetic filters are acceptable as generic exception filters. + const { raw, compiled } = parser.result; + if ( compiled === undefined ) { + const who = writer.properties.get('name') || '?'; + logger.writeOne({ + realm: 'message', + type: 'error', + text: `Invalid cosmetic filter in ${who}: #@#${raw}` + }); + return; + } + + writer.select('COSMETIC_FILTERS:SPECIFIC'); + + // https://github.com/chrisaljoudi/uBlock/issues/497 + // All generic exception filters are stored as hostname-based filter + // whereas the hostname is the empty string (which matches all + // hostnames). No distinction is made between declarative and + // procedural selectors, since they really exist only to cancel + // out other cosmetic filters. + writer.push([ 8, '', `-${compiled}` ]); +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.compileSpecificSelector = function( + parser, + hostname, + not, + writer +) { + const { raw, compiled, exception } = parser.result; + if ( compiled === undefined ) { + const who = writer.properties.get('name') || '?'; + logger.writeOne({ + realm: 'message', + type: 'error', + text: `Invalid cosmetic filter in ${who}: ##${raw}` + }); + return; + } + + writer.select('COSMETIC_FILTERS:SPECIFIC'); + const prefix = ((exception ? 1 : 0) ^ (not ? 1 : 0)) ? '-' : '+'; + writer.push([ 8, hostname, `${prefix}${compiled}` ]); +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.fromCompiledContent = function(reader, options) { + if ( options.skipCosmetic ) { + this.skipCompiledContent(reader, 'SPECIFIC'); + this.skipCompiledContent(reader, 'GENERIC'); + return; + } + + // Specific cosmetic filter section + reader.select('COSMETIC_FILTERS:SPECIFIC'); + while ( reader.next() ) { + this.acceptedCount += 1; + const fingerprint = reader.fingerprint(); + if ( this.duplicateBuster.has(fingerprint) ) { + this.discardedCount += 1; + continue; + } + this.duplicateBuster.add(fingerprint); + const args = reader.args(); + switch ( args[0] ) { + // hash, example.com, .promoted-tweet + // hash, example.*, .promoted-tweet + // + // https://github.com/uBlockOrigin/uBlock-issues/issues/803 + // Handle specific filters meant to apply everywhere, i.e. selectors + // not to be injected conditionally through the DOM surveyor. + // hash, *, .promoted-tweet + case 8: { + if ( args[1] === '*' && args[2].charCodeAt(0) === 0x2D /* + */ ) { + const selector = args[2].slice(1); + if ( selector.charCodeAt(0) !== 0x7B /* { */ ) { + if ( this.reSimpleHighGeneric.test(selector) ) { + this.highlyGeneric.simple.dict.add(selector); + } else { + this.highlyGeneric.complex.dict.add(selector); + } + break; + } + } + this.specificFilters.store(args[1], args[2]); + break; + } + default: + this.discardedCount += 1; + break; + } + } + + if ( options.skipGenericCosmetic ) { + this.skipCompiledContent(reader, 'GENERIC'); + return; + } + + // Generic cosmetic filter section + reader.select('COSMETIC_FILTERS:GENERIC'); + while ( reader.next() ) { + this.acceptedCount += 1; + const fingerprint = reader.fingerprint(); + if ( this.duplicateBuster.has(fingerprint) ) { + this.discardedCount += 1; + continue; + } + this.duplicateBuster.add(fingerprint); + const args = reader.args(); + switch ( args[0] ) { + // low generic + case 0: { + if ( this.lowlyGeneric.has(args[1]) ) { + const selector = this.lowlyGeneric.get(args[1]); + this.lowlyGeneric.set(args[1], `${selector},\n${args[2]}`); + } else { + this.lowlyGeneric.set(args[1], args[2]); + } + break; + } + // High-high generic hide/simple selectors + // div[id^="allo"] + case 4: + this.highlyGeneric.simple.dict.add(args[1]); + break; + // High-high generic hide/complex selectors + // div[id^="allo"] > span + case 5: + this.highlyGeneric.complex.dict.add(args[1]); + break; + default: + this.discardedCount += 1; + break; + } + } +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.skipCompiledContent = function(reader, sectionId) { + reader.select(`COSMETIC_FILTERS:${sectionId}`); + while ( reader.next() ) { + this.acceptedCount += 1; + this.discardedCount += 1; + } +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.toSelfie = function() { + return { + version: this.selfieVersion, + acceptedCount: this.acceptedCount, + discardedCount: this.discardedCount, + specificFilters: this.specificFilters.toSelfie(), + lowlyGeneric: this.lowlyGeneric, + highSimpleGenericHideDict: this.highlyGeneric.simple.dict, + highSimpleGenericHideStr: this.highlyGeneric.simple.str, + highComplexGenericHideDict: this.highlyGeneric.complex.dict, + highComplexGenericHideStr: this.highlyGeneric.complex.str, + }; +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.fromSelfie = function(selfie) { + if ( selfie.version !== this.selfieVersion ) { + throw new TypeError('Bad selfie'); + } + this.acceptedCount = selfie.acceptedCount; + this.discardedCount = selfie.discardedCount; + this.specificFilters.fromSelfie(selfie.specificFilters); + this.lowlyGeneric = selfie.lowlyGeneric; + this.highlyGeneric.simple.dict = selfie.highSimpleGenericHideDict; + this.highlyGeneric.simple.str = selfie.highSimpleGenericHideStr; + this.highlyGeneric.complex.dict = selfie.highComplexGenericHideDict; + this.highlyGeneric.complex.str = selfie.highComplexGenericHideStr; + this.frozen = true; +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.addToSelectorCache = function(details) { + const hostname = details.hostname; + if ( typeof hostname !== 'string' || hostname === '' ) { return; } + const selectors = details.selectors; + if ( Array.isArray(selectors) === false ) { return; } + let entry = this.selectorCache.get(hostname); + if ( entry === undefined ) { + entry = SelectorCacheEntry.factory(); + this.selectorCache.set(hostname, entry); + if ( this.selectorCache.size > this.selectorCacheCountMax ) { + this.selectorCacheTimer.on({ min: this.selectorCachePruneDelay }); + } + } + entry.add(details); +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.removeFromSelectorCache = function( + targetHostname = '*', + type = undefined +) { + const targetHostnameLength = targetHostname.length; + for ( const [ hostname, item ] of this.selectorCache ) { + if ( targetHostname !== '*' ) { + if ( hostname.endsWith(targetHostname) === false ) { continue; } + if ( hostname.length !== targetHostnameLength ) { + if ( hostname.at(-1) !== '.' ) { continue; } + } + } + item.remove(type); + } +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.pruneSelectorCacheAsync = function() { + if ( this.selectorCache.size <= this.selectorCacheCountMax ) { return; } + const cache = this.selectorCache; + const hostnames = Array.from(cache.keys()) + .sort((a, b) => cache.get(b).accessId - cache.get(a).accessId) + .slice(this.selectorCacheCountMin); + for ( const hn of hostnames ) { + cache.get(hn).dispose(); + cache.delete(hn); + } +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.disableSurveyor = function(details) { + const hostname = details.hostname; + if ( typeof hostname !== 'string' || hostname === '' ) { return; } + const cacheEntry = this.selectorCache.get(hostname); + if ( cacheEntry === undefined ) { return; } + cacheEntry.disableSurveyor = true; +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.cssRuleFromProcedural = function(pfilter) { + if ( pfilter.cssable !== true ) { return; } + const { tasks, action } = pfilter; + let mq, selector; + if ( Array.isArray(tasks) ) { + if ( tasks[0][0] !== 'matches-media' ) { return; } + mq = tasks[0][1]; + if ( tasks.length > 2 ) { return; } + if ( tasks.length === 2 ) { + if ( tasks[1][0] !== 'spath' ) { return; } + selector = tasks[1][1]; + } + } + let style; + if ( Array.isArray(action) ) { + if ( action[0] !== 'style' ) { return; } + selector = selector || pfilter.selector; + style = action[1]; + } + if ( mq === undefined && style === undefined && selector === undefined ) { return; } + if ( mq === undefined ) { + return `${selector}\n{${style}}`; + } + if ( style === undefined ) { + return `@media ${mq} {\n${selector}\n{display:none!important;}\n}`; + } + return `@media ${mq} {\n${selector}\n{${style}}\n}`; +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.retrieveGenericSelectors = function(request) { + if ( this.lowlyGeneric.size === 0 ) { return; } + if ( Array.isArray(request.hashes) === false ) { return; } + if ( request.hashes.length === 0 ) { return; } + + const selectorsSet = new Set(); + const hashes = []; + const safeOnly = request.safeOnly === true; + for ( const hash of request.hashes ) { + const bucket = this.lowlyGeneric.get(hash); + if ( bucket === undefined ) { continue; } + for ( const selector of bucket.split(',\n') ) { + if ( safeOnly && selector === keyFromSelector(selector) ) { continue; } + selectorsSet.add(selector); + } + hashes.push(hash); + } + + // Apply exceptions: it is the responsibility of the caller to provide + // the exceptions to be applied. + const excepted = []; + if ( selectorsSet.size !== 0 && Array.isArray(request.exceptions) ) { + for ( const exception of request.exceptions ) { + if ( selectorsSet.delete(exception) ) { + excepted.push(exception); + } + } + } + + if ( selectorsSet.size === 0 && excepted.length === 0 ) { return; } + + const out = { injectedCSS: '', excepted, }; + const selectors = Array.from(selectorsSet); + + if ( typeof request.hostname === 'string' && request.hostname !== '' ) { + this.addToSelectorCache({ + hostname: request.hostname, + selectors, + hashes, + type: 'cosmetic', + }); + } + + if ( selectors.length === 0 ) { return out; } + + out.injectedCSS = `${selectors.join(',\n')}\n{display:none!important;}`; + vAPI.tabs.insertCSS(request.tabId, { + code: out.injectedCSS, + frameId: request.frameId, + matchAboutBlank: true, + runAt: 'document_start', + }); + + return out; +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.retrieveSpecificSelectors = function( + request, + options +) { + const hostname = request.hostname; + const cacheEntry = this.selectorCache.get(hostname); + + // https://github.com/chrisaljoudi/uBlock/issues/587 + // out.ready will tell the content script the cosmetic filtering engine is + // up and ready. + + // https://github.com/chrisaljoudi/uBlock/issues/497 + // Generic exception filters are to be applied on all pages. + + const out = { + ready: this.frozen, + hostname: hostname, + domain: request.domain, + exceptionFilters: [], + exceptedFilters: [], + proceduralFilters: [], + convertedProceduralFilters: [], + disableSurveyor: this.lowlyGeneric.size === 0, + }; + const injectedCSS = []; + const exceptionSet = new Set(); + + if ( options.noSpecificCosmeticFiltering !== true ) { + // Cached cosmetic filters: these are always declarative. + const specificSet = new Set(); + if ( cacheEntry !== undefined ) { + cacheEntry.retrieveCosmetic(specificSet, out.genericCosmeticHashes = []); + if ( cacheEntry.disableSurveyor ) { + out.disableSurveyor = true; + } + } + + const allSet = new Set(); + // Retrieve filters with a non-empty hostname + this.specificFilters.retrieveSpecifics(allSet, hostname); + // Retrieve filters with a entity-based hostname value + const entity = entityFromHostname(hostname, request.domain); + this.specificFilters.retrieveSpecifics(allSet, entity); + // Retrieve filters with a regex-based hostname value + this.specificFilters.retrieveSpecificsByRegex(allSet, hostname, request.url); + // Retrieve filters with an empty hostname + this.specificFilters.retrieveGenerics(allSet); + + // Split filters in different groups + const proceduralSet = new Set(); + for ( const s of allSet ) { + const selector = s.slice(1); + if ( s.charCodeAt(0) === 0x2D /* - */ ) { + exceptionSet.add(selector); + } else if ( selector.charCodeAt(0) === 0x7B /* { */ ) { + proceduralSet.add(selector); + } else { + specificSet.add(selector); + } + } + + // Apply exceptions to specific filterset + if ( exceptionSet.size !== 0 ) { + out.exceptionFilters = Array.from(exceptionSet); + for ( const selector of specificSet ) { + if ( exceptionSet.has(selector) === false ) { continue; } + specificSet.delete(selector); + out.exceptedFilters.push(selector); + } + } + + if ( specificSet.size !== 0 ) { + injectedCSS.push( + `${Array.from(specificSet).join(',\n')}\n{display:none!important;}` + ); + } + + // Apply exceptions to procedural filterset. + // Also, some procedural filters are really declarative cosmetic + // filters, so we extract and inject them immediately. + if ( proceduralSet.size !== 0 ) { + for ( const json of proceduralSet ) { + if ( exceptionSet.has(json) ) { + proceduralSet.delete(json); + out.exceptedFilters.push(json); + continue; + } + const pfilter = JSON.parse(json); + if ( exceptionSet.has(pfilter.raw) ) { + proceduralSet.delete(json); + out.exceptedFilters.push(pfilter.raw); + continue; + } + const cssRule = this.cssRuleFromProcedural(pfilter); + if ( cssRule === undefined ) { continue; } + injectedCSS.push(cssRule); + proceduralSet.delete(json); + out.convertedProceduralFilters.push(json); + } + out.proceduralFilters.push(...proceduralSet); + } + } + + // Highly generic cosmetic filters: sent once along with specific ones. + // A most-recent-used cache is used to skip computing the resulting set + // of high generics for a given set of exceptions. + // The resulting set of high generics is stored as a string, ready to + // be used as-is by the content script. The string is stored + // indirectly in the mru cache: this is to prevent duplication of the + // string in memory, which I have observed occurs when the string is + // stored directly as a value in a Map. + if ( options.noGenericCosmeticFiltering !== true ) { + const exceptionSetHash = out.exceptionFilters.join(); + for ( const key in this.highlyGeneric ) { + const entry = this.highlyGeneric[key]; + let str = entry.mru.lookup(exceptionSetHash); + if ( str === undefined ) { + str = { s: entry.str, excepted: [] }; + let genericSet = entry.dict; + let hit = false; + for ( const exception of exceptionSet ) { + if ( (hit = genericSet.has(exception)) ) { break; } + } + if ( hit ) { + genericSet = new Set(entry.dict); + for ( const exception of exceptionSet ) { + if ( genericSet.delete(exception) ) { + str.excepted.push(exception); + } + } + str.s = Array.from(genericSet).join(',\n'); + } + entry.mru.add(exceptionSetHash, str); + } + if ( str.excepted.length !== 0 ) { + out.exceptedFilters.push(...str.excepted); + } + if ( str.s.length !== 0 ) { + injectedCSS.push(`${str.s}\n{display:none!important;}`); + } + } + } + + const details = { + code: '', + frameId: request.frameId, + matchAboutBlank: true, + runAt: 'document_start', + }; + + // Inject all declarative-based filters as a single stylesheet. + if ( injectedCSS.length !== 0 ) { + out.injectedCSS = injectedCSS.join('\n\n'); + details.code = out.injectedCSS; + if ( request.tabId !== undefined && options.dontInject !== true ) { + vAPI.tabs.insertCSS(request.tabId, details); + } + } + + // CSS selectors for collapsible blocked elements + if ( cacheEntry ) { + const networkFilters = []; + if ( cacheEntry.retrieveNet(networkFilters) ) { + details.code = `${networkFilters.join('\n')}\n{display:none!important;}`; + if ( request.tabId !== undefined && options.dontInject !== true ) { + vAPI.tabs.insertCSS(request.tabId, details); + } + } + } + + return out; +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.getFilterCount = function() { + return this.acceptedCount - this.discardedCount; +}; + +/******************************************************************************/ + +CosmeticFilteringEngine.prototype.dump = function() { + const lowlyGenerics = []; + for ( const selectors of this.lowlyGeneric.values() ) { + lowlyGenerics.push(...selectors.split(',\n')); + } + lowlyGenerics.sort(); + const highlyGenerics = Array.from(this.highlyGeneric.simple.dict).sort(); + highlyGenerics.push(...Array.from(this.highlyGeneric.complex.dict).sort()); + return [ + 'Cosmetic Filtering Engine internals:', + `specific: ${this.specificFilters.size}`, + `generic: ${lowlyGenerics.length + highlyGenerics.length}`, + `+ lowly generic: ${lowlyGenerics.length}`, + ...lowlyGenerics.map(a => ` ${a}`), + `+ highly generic: ${highlyGenerics.length}`, + ...highlyGenerics.map(a => ` ${a}`), + ].join('\n'); +}; + +/******************************************************************************/ + +const cosmeticFilteringEngine = new CosmeticFilteringEngine(); + +export default cosmeticFilteringEngine; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/dashboard-common.js b/android/app/src/main/assets/extensions/ublock_origin/js/dashboard-common.js new file mode 100644 index 00000000..b761fa9b --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/dashboard-common.js @@ -0,0 +1,213 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { dom } from './dom.js'; + +/******************************************************************************/ + +self.uBlockDashboard = self.uBlockDashboard || {}; + +/******************************************************************************/ + +// Helper for client panes: +// Remove literal duplicate lines from a set based on another set. + +self.uBlockDashboard.mergeNewLines = function(text, newText) { + // Step 1: build dictionary for existing lines. + const fromDict = new Map(); + let lineBeg = 0; + let textEnd = text.length; + while ( lineBeg < textEnd ) { + let lineEnd = text.indexOf('\n', lineBeg); + if ( lineEnd === -1 ) { + lineEnd = text.indexOf('\r', lineBeg); + if ( lineEnd === -1 ) { + lineEnd = textEnd; + } + } + const line = text.slice(lineBeg, lineEnd).trim(); + lineBeg = lineEnd + 1; + if ( line.length === 0 ) { continue; } + const hash = line.slice(0, 8); + const bucket = fromDict.get(hash); + if ( bucket === undefined ) { + fromDict.set(hash, line); + } else if ( typeof bucket === 'string' ) { + fromDict.set(hash, [ bucket, line ]); + } else /* if ( Array.isArray(bucket) ) */ { + bucket.push(line); + } + } + + // Step 2: use above dictionary to filter out duplicate lines. + const out = [ '' ]; + lineBeg = 0; + textEnd = newText.length; + while ( lineBeg < textEnd ) { + let lineEnd = newText.indexOf('\n', lineBeg); + if ( lineEnd === -1 ) { + lineEnd = newText.indexOf('\r', lineBeg); + if ( lineEnd === -1 ) { + lineEnd = textEnd; + } + } + const line = newText.slice(lineBeg, lineEnd).trim(); + lineBeg = lineEnd + 1; + if ( line.length === 0 ) { + if ( out[out.length - 1] !== '' ) { + out.push(''); + } + continue; + } + const bucket = fromDict.get(line.slice(0, 8)); + if ( bucket === undefined ) { + out.push(line); + continue; + } + if ( typeof bucket === 'string' && line !== bucket ) { + out.push(line); + continue; + } + if ( bucket.indexOf(line) === -1 ) { + out.push(line); + /* continue; */ + } + } + + const append = out.join('\n').trim(); + if ( text !== '' && append !== '' ) { + text += '\n\n'; + } + return text + append; +}; + +/******************************************************************************/ + +self.uBlockDashboard.dateNowToSensibleString = function() { + const now = new Date(Date.now() - (new Date()).getTimezoneOffset() * 60000); + return now.toISOString().replace(/\.\d+Z$/, '') + .replace(/:/g, '.') + .replace('T', '_'); +}; + +/******************************************************************************/ + +self.uBlockDashboard.patchCodeMirrorEditor = (function() { + let grabFocusTarget; + + const grabFocus = function() { + grabFocusTarget.focus(); + grabFocusTarget = undefined; + }; + + const grabFocusTimer = vAPI.defer.create(grabFocus); + + const grabFocusAsync = function(cm) { + grabFocusTarget = cm; + grabFocusTimer.on(1); + }; + + // https://github.com/gorhill/uBlock/issues/3646 + const patchSelectAll = function(cm, details) { + var vp = cm.getViewport(); + if ( details.ranges.length !== 1 ) { return; } + var range = details.ranges[0], + lineFrom = range.anchor.line, + lineTo = range.head.line; + if ( lineTo === lineFrom ) { return; } + if ( range.head.ch !== 0 ) { lineTo += 1; } + if ( lineFrom !== vp.from || lineTo !== vp.to ) { return; } + details.update([ + { + anchor: { line: 0, ch: 0 }, + head: { line: cm.lineCount(), ch: 0 } + } + ]); + grabFocusAsync(cm); + }; + + let lastGutterClick = 0; + let lastGutterLine = 0; + + const onGutterClicked = function(cm, line, gutter) { + if ( gutter !== 'CodeMirror-linenumbers' ) { return; } + grabFocusAsync(cm); + const delta = Date.now() - lastGutterClick; + // Single click + if ( delta >= 500 || line !== lastGutterLine ) { + cm.setSelection( + { line, ch: 0 }, + { line: line + 1, ch: 0 } + ); + lastGutterClick = Date.now(); + lastGutterLine = line; + return; + } + // Double click: select fold-able block or all + let lineFrom = 0; + let lineTo = cm.lineCount(); + const foldFn = cm.getHelper({ line, ch: 0 }, 'fold'); + if ( foldFn instanceof Function ) { + const range = foldFn(cm, { line, ch: 0 }); + if ( range !== undefined ) { + lineFrom = range.from.line; + lineTo = range.to.line + 1; + } + } + cm.setSelection( + { line: lineFrom, ch: 0 }, + { line: lineTo, ch: 0 }, + { scroll: false } + ); + lastGutterClick = 0; + }; + + return function(cm) { + if ( cm.options.inputStyle === 'contenteditable' ) { + cm.on('beforeSelectionChange', patchSelectAll); + } + cm.on('gutterClick', onGutterClicked); + }; +})(); + +/******************************************************************************/ + +self.uBlockDashboard.openOrSelectPage = function(url, options = {}) { + let ev; + if ( url instanceof MouseEvent ) { + ev = url; + url = dom.attr(ev.target, 'href'); + } + const details = Object.assign({ url, select: true, index: -1 }, options); + vAPI.messaging.send('default', { + what: 'gotoURL', + details, + }); + if ( ev ) { + ev.preventDefault(); + } +}; + +/******************************************************************************/ + +// Open links in the proper window +dom.attr('a', 'target', '_blank'); +dom.attr('a[href*="dashboard.html"]', 'target', '_parent'); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/dashboard.js b/android/app/src/main/assets/extensions/ublock_origin/js/dashboard.js new file mode 100644 index 00000000..3975a039 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/dashboard.js @@ -0,0 +1,168 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { dom, qs$ } from './dom.js'; + +/******************************************************************************/ + +function discardUnsavedData(synchronous = false) { + const paneFrame = qs$('#iframe'); + const paneWindow = paneFrame.contentWindow; + if ( + typeof paneWindow.hasUnsavedData !== 'function' || + paneWindow.hasUnsavedData() === false + ) { + return true; + } + + if ( synchronous ) { + return false; + } + + return new Promise(resolve => { + const modal = qs$('#unsavedWarning'); + dom.cl.add(modal, 'on'); + modal.focus(); + + const onDone = status => { + dom.cl.remove(modal, 'on'); + dom.off(document, 'click', onClick, true); + resolve(status); + }; + + const onClick = ev => { + const target = ev.target; + if ( target.matches('[data-i18n="dashboardUnsavedWarningStay"]') ) { + return onDone(false); + } + if ( target.matches('[data-i18n="dashboardUnsavedWarningIgnore"]') ) { + return onDone(true); + } + if ( qs$(modal, '[data-i18n="dashboardUnsavedWarning"]').contains(target) ) { + return; + } + onDone(false); + }; + + dom.on(document, 'click', onClick, true); + }); +} + +function loadDashboardPanel(pane, first) { + const tabButton = qs$(`[data-pane="${pane}"]`); + if ( tabButton === null || dom.cl.has(tabButton, 'selected') ) { return; } + const loadPane = ( ) => { + self.location.replace(`#${pane}`); + dom.cl.remove('.tabButton.selected', 'selected'); + dom.cl.add(tabButton, 'selected'); + tabButton.scrollIntoView(); + const iframe = qs$('#iframe'); + iframe.contentWindow.location.replace(pane); + if ( pane !== 'no-dashboard.html' ) { + iframe.addEventListener('load', ( ) => { + qs$('.wikilink').href = iframe.contentWindow.wikilink || ''; + }, { once: true }); + vAPI.localStorage.setItem('dashboardLastVisitedPane', pane); + } + }; + if ( first ) { + return loadPane(); + } + const r = discardUnsavedData(); + if ( r === false ) { return; } + if ( r === true ) { return loadPane(); } + r.then(status => { + if ( status === false ) { return; } + loadPane(); + }); +} + +function onTabClickHandler(ev) { + loadDashboardPanel(dom.attr(ev.target, 'data-pane')); +} + +if ( self.location.hash.slice(1) === 'no-dashboard.html' ) { + dom.cl.add(dom.body, 'noDashboard'); +} + +(async ( ) => { + // Wait for uBO's main process to be ready + await new Promise(resolve => { + const check = async ( ) => { + try { + const response = await vAPI.messaging.send('dashboard', { + what: 'readyToFilter' + }); + if ( response ) { return resolve(true); } + const iframe = qs$('#iframe'); + if ( iframe.src !== '' ) { + iframe.src = ''; + } + } catch { + } + vAPI.defer.once(250).then(( ) => check()); + }; + check(); + }); + + dom.cl.remove(dom.body, 'notReady'); + + const results = await Promise.all([ + // https://github.com/uBlockOrigin/uBlock-issues/issues/106 + vAPI.messaging.send('dashboard', { what: 'dashboardConfig' }), + vAPI.localStorage.getItemAsync('dashboardLastVisitedPane'), + ]); + + { + const details = results[0] || {}; + if ( details.noDashboard ) { + self.location.hash = '#no-dashboard.html'; + dom.cl.add(dom.body, 'noDashboard'); + } else if ( self.location.hash === '#no-dashboard.html' ) { + self.location.hash = ''; + } + } + + { + let pane = results[1] || null; + if ( self.location.hash !== '' ) { + pane = self.location.hash.slice(1) || null; + } + loadDashboardPanel(pane !== null ? pane : 'settings.html', true); + + dom.on('.tabButton', 'click', onTabClickHandler); + + // https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event + dom.on(self, 'beforeunload', ( ) => { + if ( discardUnsavedData(true) ) { return; } + event.preventDefault(); + event.returnValue = ''; + }); + + // https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event + dom.on(self, 'hashchange', ( ) => { + const pane = self.location.hash.slice(1); + if ( pane === '' ) { return; } + loadDashboardPanel(pane); + }); + + } +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/devtools.js b/android/app/src/main/assets/extensions/ublock_origin/js/devtools.js new file mode 100644 index 00000000..5183d219 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/devtools.js @@ -0,0 +1,349 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/* global CodeMirror, uBlockDashboard */ + +import * as s14e from './s14e-serializer.js'; +import { dom, qs$ } from './dom.js'; + +/******************************************************************************/ + +const reFoldable = /^ *(?=\+ \S)/; + +/******************************************************************************/ + +CodeMirror.registerGlobalHelper( + 'fold', + 'ubo-dump', + ( ) => true, + (cm, start) => { + const startLineNo = start.line; + const startLine = cm.getLine(startLineNo); + let endLineNo = startLineNo; + let endLine = startLine; + const match = reFoldable.exec(startLine); + if ( match === null ) { return; } + const foldCandidate = ' ' + match[0]; + const lastLineNo = cm.lastLine(); + let nextLineNo = startLineNo + 1; + while ( nextLineNo < lastLineNo ) { + const nextLine = cm.getLine(nextLineNo); + // TODO: use regex to find folding end + if ( nextLine.startsWith(foldCandidate) === false && nextLine !== ']' ) { + if ( startLineNo >= endLineNo ) { return; } + return { + from: CodeMirror.Pos(startLineNo, startLine.length), + to: CodeMirror.Pos(endLineNo, endLine.length) + }; + } + endLine = nextLine; + endLineNo = nextLineNo; + nextLineNo += 1; + } + } +); + +const cmEditor = new CodeMirror(qs$('#console'), { + autofocus: true, + foldGutter: true, + gutters: [ 'CodeMirror-linenumbers', 'CodeMirror-foldgutter' ], + lineNumbers: true, + lineWrapping: true, + mode: 'ubo-dump', + styleActiveLine: true, + undoDepth: 5, +}); + +uBlockDashboard.patchCodeMirrorEditor(cmEditor); + +/******************************************************************************/ + +function log(text) { + cmEditor.replaceRange(text.trim() + '\n\n', { line: 0, ch: 0 }); +} + +/******************************************************************************/ + +function toDNRText(raw) { + const result = s14e.deserialize(raw); + if ( typeof result === 'string' ) { return result; } + const { network } = result; + const replacer = (k, v) => { + if ( k.startsWith('__') ) { return; } + if ( Array.isArray(v) ) { + return v.sort(); + } + if ( v instanceof Object ) { + const sorted = {}; + for ( const kk of Object.keys(v).sort() ) { + sorted[kk] = v[kk]; + } + return sorted; + } + return v; + }; + const isUnsupported = rule => + rule._error !== undefined; + const isRegex = rule => + rule.condition !== undefined && + rule.condition.regexFilter !== undefined; + const isRedirect = rule => + rule.action !== undefined && + rule.action.type === 'redirect' && + rule.action.redirect.extensionPath !== undefined; + const isCsp = rule => + rule.action !== undefined && + rule.action.type === 'modifyHeaders'; + const isRemoveparam = rule => + rule.action !== undefined && + rule.action.type === 'redirect' && + rule.action.redirect.transform !== undefined; + const { ruleset } = network; + const good = ruleset.filter(rule => + isUnsupported(rule) === false && + isRegex(rule) === false && + isRedirect(rule) === false && + isCsp(rule) === false && + isRemoveparam(rule) === false + ); + const unsupported = ruleset.filter(rule => + isUnsupported(rule) + ); + const regexes = ruleset.filter(rule => + isUnsupported(rule) === false && + isRegex(rule) && + isRedirect(rule) === false && + isCsp(rule) === false && + isRemoveparam(rule) === false + ); + const redirects = ruleset.filter(rule => + isUnsupported(rule) === false && + isRedirect(rule) + ); + const headers = ruleset.filter(rule => + isUnsupported(rule) === false && + isCsp(rule) + ); + const removeparams = ruleset.filter(rule => + isUnsupported(rule) === false && + isRemoveparam(rule) + ); + const out = [ + `dnrRulesetFromRawLists(${JSON.stringify(result.listNames, null, 2)})`, + `Run time: ${result.runtime} ms`, + `Filters count: ${network.filterCount}`, + `Accepted filter count: ${network.acceptedFilterCount}`, + `Rejected filter count: ${network.rejectedFilterCount}`, + `Un-DNR-able filter count: ${unsupported.length}`, + `Resulting DNR rule count: ${ruleset.length}`, + ]; + out.push(`+ Good filters (${good.length}): ${JSON.stringify(good, replacer, 2)}`); + out.push(`+ Regex-based filters (${regexes.length}): ${JSON.stringify(regexes, replacer, 2)}`); + out.push(`+ 'redirect=' filters (${redirects.length}): ${JSON.stringify(redirects, replacer, 2)}`); + out.push(`+ 'csp=' filters (${headers.length}): ${JSON.stringify(headers, replacer, 2)}`); + out.push(`+ 'removeparam=' filters (${removeparams.length}): ${JSON.stringify(removeparams, replacer, 2)}`); + out.push(`+ Unsupported filters (${unsupported.length}): ${JSON.stringify(unsupported, replacer, 2)}`); + out.push(`+ generichide exclusions (${network.generichideExclusions.length}): ${JSON.stringify(network.generichideExclusions, replacer, 2)}`); + if ( result.specificCosmetic ) { + out.push(`+ Cosmetic filters: ${result.specificCosmetic.size}`); + for ( const details of result.specificCosmetic ) { + out.push(` ${JSON.stringify(details)}`); + } + } else { + out.push(' Cosmetic filters: 0'); + } + return out.join('\n'); +} + + +/******************************************************************************/ + +dom.on('#console-clear', 'click', ( ) => { + cmEditor.setValue(''); +}); + +dom.on('#console-fold', 'click', ( ) => { + const unfolded = []; + let maxUnfolded = -1; + cmEditor.eachLine(handle => { + const match = reFoldable.exec(handle.text); + if ( match === null ) { return; } + const depth = match[0].length; + const line = handle.lineNo(); + const isFolded = cmEditor.isFolded({ line, ch: handle.text.length }); + if ( isFolded === true ) { return; } + unfolded.push({ line, depth }); + maxUnfolded = Math.max(maxUnfolded, depth); + }); + if ( maxUnfolded === -1 ) { return; } + cmEditor.startOperation(); + for ( const details of unfolded ) { + if ( details.depth !== maxUnfolded ) { continue; } + cmEditor.foldCode(details.line, null, 'fold'); + } + cmEditor.endOperation(); +}); + +dom.on('#console-unfold', 'click', ( ) => { + const folded = []; + let minFolded = Number.MAX_SAFE_INTEGER; + cmEditor.eachLine(handle => { + const match = reFoldable.exec(handle.text); + if ( match === null ) { return; } + const depth = match[0].length; + const line = handle.lineNo(); + const isFolded = cmEditor.isFolded({ line, ch: handle.text.length }); + if ( isFolded !== true ) { return; } + folded.push({ line, depth }); + minFolded = Math.min(minFolded, depth); + }); + if ( minFolded === Number.MAX_SAFE_INTEGER ) { return; } + cmEditor.startOperation(); + for ( const details of folded ) { + if ( details.depth !== minFolded ) { continue; } + cmEditor.foldCode(details.line, null, 'unfold'); + } + cmEditor.endOperation(); +}); + +dom.on('#snfe-dump', 'click', ev => { + const button = ev.target; + dom.attr(button, 'disabled', ''); + vAPI.messaging.send('devTools', { + what: 'snfeDump', + }).then(result => { + log(result); + dom.attr(button, 'disabled', null); + }); +}); + +dom.on('#snfe-todnr', 'click', ev => { + const button = ev.target; + dom.attr(button, 'disabled', ''); + vAPI.messaging.send('devTools', { + what: 'snfeToDNR', + }).then(result => { + log(toDNRText(result)); + dom.attr(button, 'disabled', null); + }); +}); + +dom.on('#cfe-dump', 'click', ev => { + const button = ev.target; + dom.attr(button, 'disabled', ''); + vAPI.messaging.send('devTools', { + what: 'cfeDump', + }).then(result => { + log(result); + dom.attr(button, 'disabled', null); + }); +}); + +dom.on('#purge-all-caches', 'click', ( ) => { + vAPI.messaging.send('devTools', { + what: 'purgeAllCaches' + }).then(result => { + log(result); + }); +}); + +vAPI.messaging.send('dashboard', { + what: 'getAppData', +}).then(appData => { + if ( appData.canBenchmark !== true ) { return; } + dom.attr('#snfe-benchmark', 'disabled', null); + dom.on('#snfe-benchmark', 'click', ev => { + const button = ev.target; + dom.attr(button, 'disabled', ''); + vAPI.messaging.send('devTools', { + what: 'snfeBenchmark', + }).then(result => { + log(result); + dom.attr(button, 'disabled', null); + }); + }); + dom.attr('#cfe-benchmark', 'disabled', null); + dom.on('#cfe-benchmark', 'click', ev => { + const button = ev.target; + dom.attr(button, 'disabled', ''); + vAPI.messaging.send('devTools', { + what: 'cfeBenchmark', + }).then(result => { + log(result); + dom.attr(button, 'disabled', null); + }); + }); + dom.attr('#sfe-benchmark', 'disabled', null); + dom.on('#sfe-benchmark', 'click', ev => { + const button = ev.target; + dom.attr(button, 'disabled', ''); + vAPI.messaging.send('devTools', { + what: 'sfeBenchmark', + }).then(result => { + log(result); + dom.attr(button, 'disabled', null); + }); + }); +}); + +/******************************************************************************/ + +async function snfeQuery(lineNo, query) { + const doc = cmEditor.getDoc(); + const lineHandle = doc.getLineHandle(lineNo) + const result = await vAPI.messaging.send('devTools', { + what: 'snfeQuery', + query + }); + if ( typeof result !== 'string' ) { return; } + cmEditor.startOperation(); + const nextLineNo = doc.getLineNumber(lineHandle) + 1; + doc.replaceRange(`${result}\n`, { line: nextLineNo, ch: 0 }); + cmEditor.endOperation(); +} + +cmEditor.on('beforeChange', (cm, details) => { + if ( details.origin !== '+input' ) { return; } + if ( details.text.length !== 2 ) { return; } + if ( details.text[1] !== '' ) { return; } + const lineNo = details.from.line; + const line = cm.getLine(lineNo); + if ( details.from.ch !== line.length ) { return; } + if ( line.startsWith('snfe?') === false ) { return; } + const fields = line.slice(5).split(/\s+/); + const query = {}; + for ( const field of fields ) { + if ( field === '' ) { continue; } + if ( /[/.]/.test(field) ) { + if ( query.url === undefined ) { + query.url = field; + } else if ( query.from === undefined ) { + query.from = field; + } + } else if ( query.type === undefined ) { + query.type = field; + } + } + if ( query.url === undefined ) { return; } + snfeQuery(lineNo, query); +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/diff-updater.js b/android/app/src/main/assets/extensions/ublock_origin/js/diff-updater.js new file mode 100644 index 00000000..93d1dd2f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/diff-updater.js @@ -0,0 +1,285 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +// This module can be dynamically loaded or spun off as a worker. + +/******************************************************************************/ + +const patches = new Map(); +const encoder = new TextEncoder(); +const reFileName = /([^/]+?)(?:#.+)?$/; +const EMPTYLINE = ''; + +/******************************************************************************/ + +const suffleArray = arr => { + const out = arr.slice(); + for ( let i = 0, n = out.length; i < n; i++ ) { + const j = Math.floor(Math.random() * n); + if ( j === i ) { continue; } + [ out[j], out[i] ] = [ out[i], out[j] ]; + } + return out; +}; + +const basename = url => { + const match = reFileName.exec(url); + return match && match[1] || ''; +}; + +const resolveURL = (path, url) => { + try { + return new URL(path, url); + } catch { + } +}; + +const expectedTimeFromPatch = assetDetails => { + const match = /(\d+)\.(\d+)\.(\d+)\.(\d+)/.exec(assetDetails.patchPath); + if ( match === null ) { return 0; } + const date = new Date(); + date.setUTCFullYear( + parseInt(match[1], 10), + parseInt(match[2], 10) - 1, + parseInt(match[3], 10) + ); + date.setUTCHours(0, parseInt(match[4], 10), 0, 0); + return date.getTime() + assetDetails.diffExpires; +}; + +function parsePatch(patch) { + const patchDetails = new Map(); + const diffLines = patch.split('\n'); + let i = 0, n = diffLines.length; + while ( i < n ) { + const line = diffLines[i++]; + if ( line.startsWith('diff ') === false ) { continue; } + const fields = line.split(/\s+/); + const diffBlock = {}; + for ( let j = 0; j < fields.length; j++ ) { + const field = fields[j]; + const pos = field.indexOf(':'); + if ( pos === -1 ) { continue; } + const name = field.slice(0, pos); + if ( name === '' ) { continue; } + const value = field.slice(pos+1); + switch ( name ) { + case 'name': + case 'checksum': + diffBlock[name] = value; + break; + case 'lines': + diffBlock.lines = parseInt(value, 10); + break; + default: + break; + } + } + if ( diffBlock.name === undefined ) { return; } + if ( isNaN(diffBlock.lines) || diffBlock.lines <= 0 ) { return; } + if ( diffBlock.checksum === undefined ) { return; } + patchDetails.set(diffBlock.name, diffBlock); + diffBlock.diff = diffLines.slice(i, i + diffBlock.lines).join('\n'); + i += diffBlock.lines; + } + if ( patchDetails.size === 0 ) { return; } + return patchDetails; +} + +function applyPatch(text, diff) { + // Inspired from (Perl) "sub _patch" at: + // https://twiki.org/p/pub/Codev/RcsLite/RcsLite.pm + // Apparently authored by John Talintyre in Jan. 2002 + // https://twiki.org/cgi-bin/view/Codev/RcsLite + const lines = text.split('\n'); + const diffLines = diff.split('\n'); + let iAdjust = 0; + let iDiff = 0, nDiff = diffLines.length; + while ( iDiff < nDiff ) { + const diffLine = diffLines[iDiff++]; + if ( diffLine === '' ) { break; } + const diffParsed = /^([ad])(\d+) (\d+)$/.exec(diffLine); + if ( diffParsed === null ) { return; } + const op = diffParsed[1]; + const iOp = parseInt(diffParsed[2], 10); + const nOp = parseInt(diffParsed[3], 10); + const iOpAdj = iOp + iAdjust; + if ( iOpAdj > lines.length ) { return; } + // Delete lines + if ( op === 'd' ) { + lines.splice(iOpAdj-1, nOp); + iAdjust -= nOp; + continue; + } + // Add lines: Don't use splice() to avoid stack limit issues + for ( let i = 0; i < nOp; i++ ) { + lines.push(EMPTYLINE); + } + lines.copyWithin(iOpAdj+nOp, iOpAdj); + for ( let i = 0; i < nOp; i++ ) { + lines[iOpAdj+i] = diffLines[iDiff+i]; + } + iAdjust += nOp; + iDiff += nOp; + } + return lines.join('\n'); +} + +function hasPatchDetails(assetDetails) { + const { patchPath } = assetDetails; + const patchFile = basename(patchPath); + return patchFile !== '' && patches.has(patchFile); +} + +/******************************************************************************/ + +// Async + +async function applyPatchAndValidate(assetDetails, diffDetails) { + const { text } = assetDetails; + const { diff, checksum } = diffDetails; + const textAfter = applyPatch(text, diff); + if ( typeof textAfter !== 'string' ) { + assetDetails.error = 'baddiff'; + return false; + } + const crypto = globalThis.crypto; + if ( typeof crypto !== 'object' ) { + assetDetails.error = 'nocrypto'; + return false; + } + const arrayin = encoder.encode(textAfter); + const arraybuffer = await crypto.subtle.digest('SHA-1', arrayin); + const arrayout = new Uint8Array(arraybuffer); + const sha1Full = Array.from(arrayout).map(i => + i.toString(16).padStart(2, '0') + ).join(''); + if ( sha1Full.startsWith(checksum) === false ) { + assetDetails.error = `badchecksum: expected ${checksum}, computed ${sha1Full.slice(0, checksum.length)}`; + return false; + } + assetDetails.text = textAfter; + return true; +} + +async function fetchPatchDetailsFromCDNs(assetDetails) { + const { patchPath, cdnURLs, patchURLs } = assetDetails; + if ( Array.isArray(cdnURLs) === false ) { return null; } + if ( cdnURLs.length === 0 ) { return null; } + for ( const cdnURL of suffleArray(patchURLs || cdnURLs) ) { + const patchURL = resolveURL(patchPath, cdnURL); + if ( patchURL === undefined ) { continue; } + const response = await fetch(patchURL).catch(reason => { + console.error(reason, patchURL); + }); + if ( response === undefined ) { continue; } + if ( response.status === 404 ) { break; } + if ( response.ok !== true ) { continue; } + const patchText = await response.text(); + const patchDetails = parsePatch(patchText); + if ( patchURL.hash.length > 1 ) { + assetDetails.diffName = patchURL.hash.slice(1); + patchURL.hash = ''; + } + return { + patchURL: patchURL.href, + patchSize: `${(patchText.length / 1000).toFixed(1)} KB`, + patchDetails, + }; + } + return null; +} + +async function fetchPatchDetails(assetDetails) { + const { patchPath } = assetDetails; + const patchFile = basename(patchPath); + if ( patchFile === '' ) { return null; } + if ( patches.has(patchFile) ) { + return patches.get(patchFile); + } + const patchDetailsPromise = fetchPatchDetailsFromCDNs(assetDetails); + patches.set(patchFile, patchDetailsPromise); + return patchDetailsPromise; +} + +async function fetchAndApplyAllPatches(assetDetails) { + if ( assetDetails.fetch === false ) { + if ( hasPatchDetails(assetDetails) === false ) { + assetDetails.status = 'nodiff'; + return assetDetails; + } + } + // uBO-specific, to avoid pointless fetches which are likely to fail + // because the patch has not yet been created + const patchTime = expectedTimeFromPatch(assetDetails); + if ( patchTime > Date.now() ) { + assetDetails.status = 'nopatch-yet'; + return assetDetails; + } + const patchData = await fetchPatchDetails(assetDetails); + if ( patchData === null ) { + assetDetails.status = (Date.now() - patchTime) < (4 * assetDetails.diffExpires) + ? 'nopatch-yet' + : 'nopatch'; + return assetDetails; + } + const { patchDetails } = patchData; + if ( patchDetails instanceof Map === false ) { + assetDetails.status = 'nodiff'; + return assetDetails; + } + const diffDetails = patchDetails.get(assetDetails.diffName); + if ( diffDetails === undefined ) { + assetDetails.status = 'nodiff'; + return assetDetails; + } + if ( assetDetails.text === undefined ) { + assetDetails.status = 'needtext'; + return assetDetails; + } + const outcome = await applyPatchAndValidate(assetDetails, diffDetails); + if ( outcome !== true ) { return assetDetails; } + assetDetails.status = 'updated'; + assetDetails.patchURL = patchData.patchURL; + assetDetails.patchSize = patchData.patchSize; + return assetDetails; +} + +/******************************************************************************/ + +const self = globalThis; + +self.onmessage = ev => { + const message = ev.data || {}; + switch ( message.what ) { + case 'update': + fetchAndApplyAllPatches(message).then(response => { + self.postMessage(response); + }).catch(error => { + self.postMessage({ what: 'broken', error }); + }); + break; + } +}; + +self.postMessage({ what: 'ready' }); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/document-blocked.js b/android/app/src/main/assets/extensions/ublock_origin/js/document-blocked.js new file mode 100644 index 00000000..999d0ca9 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/document-blocked.js @@ -0,0 +1,289 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { dom, qs$ } from './dom.js'; +import { i18n, i18n$ } from './i18n.js'; +import { faIconsInit } from './fa-icons.js'; + +/******************************************************************************/ + +const messaging = vAPI.messaging; +const details = {}; + +{ + const matches = /details=([^&]+)/.exec(window.location.search); + if ( matches !== null ) { + Object.assign(details, JSON.parse(decodeURIComponent(matches[1]))); + } +} + +/******************************************************************************/ + +const urlToFragment = raw => { + try { + const fragment = new DocumentFragment(); + const url = new URL(raw); + const href = url.href; + const hn = url.hostname; + const i = href.indexOf(hn); + const b = document.createElement('b'); + b.append(hn); + fragment.append(href.slice(0,i), b, href.slice(i+hn.length)); + return fragment; + } catch { + } + return raw; +}; + +/******************************************************************************/ + +dom.clear('#theURL > p > span:first-of-type'); +qs$('#theURL > p > span:first-of-type').append(urlToFragment(details.url)); + +/******************************************************************************/ + +const lookupFilterLists = async ( ) => { + const response = await messaging.send('documentBlocked', { + what: 'listsFromNetFilter', + rawFilter: details.fs, + }); + if ( response instanceof Object === false ) { return; } + let lists; + for ( const rawFilter in response ) { + if ( Object.hasOwn(response, rawFilter) ) { + lists = response[rawFilter]; + break; + } + } + return lists; +}; + +/******************************************************************************/ + +if ( typeof details.to === 'string' && details.to.length !== 0 ) { + const fragment = new DocumentFragment(); + const text = i18n$('docblockedRedirectPrompt'); + const linkPlaceholder = '{{url}}'; + let pos = text.indexOf(linkPlaceholder); + if ( pos !== -1 ) { + const link = document.createElement('a'); + link.href = details.to; + dom.cl.add(link, 'code'); + link.append(urlToFragment(details.to)); + fragment.append( + text.slice(0, pos), + link, + text.slice(pos + linkPlaceholder.length) + ); + qs$('#urlskip').append(fragment); + dom.attr('#urlskip', 'hidden', null); + } +} + +/******************************************************************************/ + +// https://github.com/gorhill/uBlock/issues/691 +// Parse URL to extract as much useful information as possible. This is +// useful to assist the user in deciding whether to navigate to the web page. +(( ) => { + if ( typeof URL !== 'function' ) { return; } + + const reURL = /^https?:\/\//; + + const liFromParam = function(name, value) { + if ( value === '' ) { + value = name; + name = ''; + } + const li = dom.create('li'); + let span = dom.create('span'); + dom.text(span, name); + li.appendChild(span); + if ( name !== '' && value !== '' ) { + li.appendChild(document.createTextNode(' = ')); + } + span = dom.create('span'); + if ( reURL.test(value) ) { + const a = dom.create('a'); + dom.attr(a, 'href', value); + dom.text(a, value); + span.appendChild(a); + } else { + dom.text(span, value); + } + li.appendChild(span); + return li; + }; + + // https://github.com/uBlockOrigin/uBlock-issues/issues/1649 + // Limit recursion. + const renderParams = function(parentNode, rawURL, depth = 0) { + let url; + try { + url = new URL(rawURL); + } catch { + return false; + } + + const search = url.search.slice(1); + if ( search === '' ) { return false; } + + url.search = ''; + const li = liFromParam(i18n$('docblockedNoParamsPrompt'), url.href); + parentNode.appendChild(li); + + const params = new self.URLSearchParams(search); + for ( const [ name, value ] of params ) { + const li = liFromParam(name, value); + if ( depth < 2 && reURL.test(value) ) { + const ul = dom.create('ul'); + renderParams(ul, value, depth + 1); + li.appendChild(ul); + } + parentNode.appendChild(li); + } + + return true; + }; + + if ( renderParams(qs$('#parsed'), details.url) === false ) { + return; + } + + dom.cl.remove('#toggleParse', 'hidden'); + + dom.on('#toggleParse', 'click', ( ) => { + dom.cl.toggle('#theURL', 'collapsed'); + vAPI.localStorage.setItem( + 'document-blocked-expand-url', + (dom.cl.has('#theURL', 'collapsed') === false).toString() + ); + }); + + vAPI.localStorage.getItemAsync('document-blocked-expand-url').then(value => { + dom.cl.toggle('#theURL', 'collapsed', value !== 'true' && value !== true); + }); +})(); + +/******************************************************************************/ + +// https://www.reddit.com/r/uBlockOrigin/comments/breeux/close_this_window_doesnt_work_on_firefox/ + +if ( window.history.length > 1 ) { + dom.on('#back', 'click', ( ) => { + window.history.back(); + }); + qs$('#bye').style.display = 'none'; +} else { + dom.on('#bye', 'click', ( ) => { + messaging.send('documentBlocked', { + what: 'closeThisTab', + }); + }); + qs$('#back').style.display = 'none'; +} + +/******************************************************************************/ + +const proceedToURL = function() { + window.location.replace(details.url); +}; + +const proceedTemporary = async function() { + await messaging.send('documentBlocked', { + what: 'temporarilyWhitelistDocument', + hostname: details.hn, + }); + proceedToURL(); +}; + +const proceedPermanent = async function() { + await messaging.send('documentBlocked', { + what: 'toggleHostnameSwitch', + name: 'no-strict-blocking', + hostname: details.hn, + deep: true, + state: true, + persist: true, + }); + proceedToURL(); +}; + +dom.on('#disableWarning', 'change', ev => { + const checked = ev.target.checked; + dom.cl.toggle('[data-i18n="docblockedBack"]', 'disabled', checked); + dom.cl.toggle('[data-i18n="docblockedClose"]', 'disabled', checked); +}); + +dom.on('#proceed', 'click', ( ) => { + if ( qs$('#disableWarning').checked ) { + proceedPermanent(); + } else { + proceedTemporary(); + } +}); + +lookupFilterLists().then((lists = []) => { + let reason = details.reason; + if ( Boolean(reason) === false ) { + reason = lists.reduce((a, b) => a || b.reason, undefined); + } + if ( reason ) { + const msg = i18n$(`docblockedReason${reason.charAt(0).toUpperCase()}${reason.slice(1)}`); + if ( msg ) { reason = msg }; + } + const why = qs$(reason ? 'template.why-reason' : 'template.why') + .content + .cloneNode(true); + i18n.render(why); + dom.text(qs$(why, '.why'), details.fs); + if ( reason ) { + dom.text(qs$(why, 'summary'), `${i18n$('docblockedReasonLabel')} ${reason}`); + } + qs$('#why').append(why); + dom.cl.remove(dom.body, 'loading'); + + if ( lists.length === 0 ) { return; } + + const whyExtra = qs$('template.why-extra').content.cloneNode(true); + i18n.render(whyExtra); + + const listTemplate = qs$('template.filterList'); + const parent = qs$(whyExtra, '.why-extra'); + let separator = ''; + for ( const list of lists ) { + const listElem = listTemplate.content.cloneNode(true); + const sourceElem = qs$(listElem, '.filterListSource'); + sourceElem.href += encodeURIComponent(list.assetKey); + sourceElem.append(i18n.patchUnicodeFlags(list.title)); + if ( typeof list.supportURL === 'string' && list.supportURL !== '' ) { + const supportElem = qs$(listElem, '.filterListSupport'); + dom.attr(supportElem, 'href', list.supportURL); + dom.cl.remove(supportElem, 'hidden'); + } + parent.append(separator, listElem); + separator = '\u00A0\u2022\u00A0'; + } + faIconsInit(whyExtra); + qs$('#why .why').after(whyExtra); +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/dom-inspector.js b/android/app/src/main/assets/extensions/ublock_origin/js/dom-inspector.js new file mode 100644 index 00000000..a6ef7757 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/dom-inspector.js @@ -0,0 +1,65 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +const svgRoot = document.querySelector('svg'); +let inspectorContentPort; + +const shutdown = ( ) => { + inspectorContentPort.close(); + inspectorContentPort.onmessage = inspectorContentPort.onmessageerror = null; + inspectorContentPort = undefined; +}; + +const contentInspectorChannel = ev => { + const msg = ev.data || {}; + switch ( msg.what ) { + case 'quitInspector': { + shutdown(); + break; + } + case 'svgPaths': { + const paths = svgRoot.children; + paths[0].setAttribute('d', msg.paths[0]); + paths[1].setAttribute('d', msg.paths[1]); + paths[2].setAttribute('d', msg.paths[2]); + paths[3].setAttribute('d', msg.paths[3]); + break; + } + default: + break; + } +}; + +// Wait for the content script to establish communication +globalThis.addEventListener('message', ev => { + const msg = ev.data || {}; + if ( msg.what !== 'startInspector' ) { return; } + if ( Array.isArray(ev.ports) === false ) { return; } + if ( ev.ports.length === 0 ) { return; } + inspectorContentPort = ev.ports[0]; + inspectorContentPort.onmessage = contentInspectorChannel; + inspectorContentPort.onmessageerror = shutdown; + inspectorContentPort.postMessage({ what: 'startInspector' }); +}, { once: true }); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/dom.js b/android/app/src/main/assets/extensions/ublock_origin/js/dom.js new file mode 100644 index 00000000..2d6fc6cf --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/dom.js @@ -0,0 +1,227 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +const normalizeTarget = target => { + if ( typeof target === 'string' ) { return Array.from(qsa$(target)); } + if ( target instanceof Element ) { return [ target ]; } + if ( target === null ) { return []; } + if ( Array.isArray(target) ) { return target; } + return Array.from(target); +}; + +const makeEventHandler = (selector, callback) => { + return function(event) { + const dispatcher = event.currentTarget; + if ( + dispatcher instanceof HTMLElement === false || + typeof dispatcher.querySelectorAll !== 'function' + ) { + return; + } + const receiver = event.target; + const ancestor = receiver.closest(selector); + if ( + ancestor === receiver && + ancestor !== dispatcher && + dispatcher.contains(ancestor) + ) { + callback.call(receiver, event); + } + }; +}; + +/******************************************************************************/ + +class dom { + static attr(target, attr, value = undefined) { + for ( const elem of normalizeTarget(target) ) { + if ( value === undefined ) { + return elem.getAttribute(attr); + } + if ( value === null ) { + elem.removeAttribute(attr); + } else { + elem.setAttribute(attr, value); + } + } + } + + static clear(target) { + for ( const elem of normalizeTarget(target) ) { + while ( elem.firstChild !== null ) { + elem.removeChild(elem.firstChild); + } + } + } + + static clone(target) { + const elements = normalizeTarget(target); + if ( elements.length === 0 ) { return null; } + return elements[0].cloneNode(true); + } + + static create(a) { + if ( typeof a === 'string' ) { + return document.createElement(a); + } + } + + static prop(target, prop, value = undefined) { + for ( const elem of normalizeTarget(target) ) { + if ( value === undefined ) { return elem[prop]; } + elem[prop] = value; + } + } + + static text(target, text) { + const targets = normalizeTarget(target); + if ( text === undefined ) { + return targets.length !== 0 ? targets[0].textContent : undefined; + } + for ( const elem of targets ) { + elem.textContent = text; + } + } + + static remove(target) { + for ( const elem of normalizeTarget(target) ) { + elem.remove(); + } + } + + static empty(target) { + for ( const elem of normalizeTarget(target) ) { + while ( elem.firstElementChild !== null ) { + elem.firstElementChild.remove(); + } + } + } + + // target, type, callback, [options] + // target, type, subtarget, callback, [options] + + static on(target, type, subtarget, callback, options) { + if ( typeof subtarget === 'function' ) { + options = callback; + callback = subtarget; + subtarget = undefined; + if ( typeof options === 'boolean' ) { + options = { capture: true }; + } + } else { + callback = makeEventHandler(subtarget, callback); + if ( options === undefined || typeof options === 'boolean' ) { + options = { capture: true }; + } else { + options.capture = true; + } + } + const targets = target instanceof Window || target instanceof Document + ? [ target ] + : normalizeTarget(target); + for ( const elem of targets ) { + elem.addEventListener(type, callback, options); + } + } + + static off(target, type, callback, options) { + if ( typeof callback !== 'function' ) { return; } + if ( typeof options === 'boolean' ) { + options = { capture: true }; + } + const targets = target instanceof Window || target instanceof Document + ? [ target ] + : normalizeTarget(target); + for ( const elem of targets ) { + elem.removeEventListener(type, callback, options); + } + } + + static onFirstShown(fn, elem) { + let observer = new IntersectionObserver(entries => { + if ( entries.every(a => a.isIntersecting === false) ) { return; } + try { fn(); } catch { } + observer.disconnect(); + observer = undefined; + }); + observer.observe(elem); + } +} + +dom.cl = class { + static add(target, name) { + for ( const elem of normalizeTarget(target) ) { + elem.classList.add(name); + } + } + + static remove(target, ...names) { + for ( const elem of normalizeTarget(target) ) { + elem.classList.remove(...names); + } + } + + static toggle(target, name, state) { + let r; + for ( const elem of normalizeTarget(target) ) { + r = elem.classList.toggle(name, state); + } + return r; + } + + static has(target, name) { + for ( const elem of normalizeTarget(target) ) { + if ( elem.classList.contains(name) ) { + return true; + } + } + return false; + } +}; + +/******************************************************************************/ + +function qs$(a, b) { + if ( typeof a === 'string') { + return document.querySelector(a); + } + if ( a === null ) { return null; } + return a.querySelector(b); +} + +function qsa$(a, b) { + if ( typeof a === 'string') { + return document.querySelectorAll(a); + } + if ( a === null ) { return []; } + return a.querySelectorAll(b); +} + +dom.root = qs$(':root'); +dom.html = document.documentElement; +dom.head = document.head; +dom.body = document.body; + +/******************************************************************************/ + +export { dom, qs$, qsa$ }; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/dyna-rules.js b/android/app/src/main/assets/extensions/ublock_origin/js/dyna-rules.js new file mode 100644 index 00000000..6d6e7784 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/dyna-rules.js @@ -0,0 +1,703 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uMatrix +*/ + +/* global CodeMirror, diff_match_patch, uBlockDashboard */ + +import './codemirror/ubo-dynamic-filtering.js'; +import { dom, qs$, qsa$ } from './dom.js'; +import { hostnameFromURI } from './uri-utils.js'; +import { i18n$ } from './i18n.js'; +import publicSuffixList from '../lib/publicsuffixlist/publicsuffixlist.js'; + +/******************************************************************************/ + +const hostnameToDomainMap = new Map(); + +const mergeView = new CodeMirror.MergeView( + qs$('.codeMirrorMergeContainer'), + { + allowEditingOriginals: true, + connect: 'align', + inputStyle: 'contenteditable', + lineNumbers: true, + lineWrapping: false, + origLeft: '', + revertButtons: true, + value: '', + } +); +mergeView.editor().setOption('styleActiveLine', true); +mergeView.editor().setOption('lineNumbers', false); +mergeView.leftOriginal().setOption('readOnly', 'nocursor'); + +uBlockDashboard.patchCodeMirrorEditor(mergeView.editor()); + +const thePanes = { + orig: { + doc: mergeView.leftOriginal(), + original: [], + modified: [], + }, + edit: { + doc: mergeView.editor(), + original: [], + modified: [], + }, +}; + +let cleanEditToken = 0; +let cleanEditText = ''; + +/******************************************************************************/ + +// The following code is to take care of properly internationalizing +// the tooltips of the arrows used by the CodeMirror merge view. These +// are hard-coded by CodeMirror ("Push to left", "Push to right"). An +// observer is necessary because there is no hook for uBO to overwrite +// reliably the default title attribute assigned by CodeMirror. + +{ + const i18nCommitStr = i18n$('rulesCommit'); + const i18nRevertStr = i18n$('rulesRevert'); + const commitArrowSelector = '.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy-reverse:not([title="' + i18nCommitStr + '"])'; + const revertArrowSelector = '.CodeMirror-merge-copybuttons-left .CodeMirror-merge-copy:not([title="' + i18nRevertStr + '"])'; + + dom.attr('.CodeMirror-merge-scrolllock', 'title', i18n$('genericMergeViewScrollLock')); + + const translate = function() { + let elems = qsa$(commitArrowSelector); + for ( const elem of elems ) { + dom.attr(elem, 'title', i18nCommitStr); + } + elems = qsa$(revertArrowSelector); + for ( const elem of elems ) { + dom.attr(elem, 'title', i18nRevertStr); + } + }; + + const mergeGapObserver = new MutationObserver(translate); + + mergeGapObserver.observe( + qs$('.CodeMirror-merge-copybuttons-left'), + { attributes: true, attributeFilter: [ 'title' ], subtree: true } + ); +} + +/******************************************************************************/ + +const getDiffer = (( ) => { + let differ; + return ( ) => { + if ( differ === undefined ) { differ = new diff_match_patch(); } + return differ; + }; +})(); + +/******************************************************************************/ + +// Borrowed from... +// https://github.com/codemirror/CodeMirror/blob/3e1bb5fff682f8f6cbfaef0e56c61d62403d4798/addon/search/search.js#L22 +// ... and modified as needed. + +const updateOverlay = (( ) => { + let reFilter; + const mode = { + token: function(stream) { + if ( reFilter !== undefined ) { + reFilter.lastIndex = stream.pos; + let match = reFilter.exec(stream.string); + if ( match !== null ) { + if ( match.index === stream.pos ) { + stream.pos += match[0].length || 1; + return 'searching'; + } + stream.pos = match.index; + return; + } + } + stream.skipToEnd(); + } + }; + return function() { + const f = presentationState.filter; + reFilter = typeof f === 'string' && f !== '' + ? new RegExp(f.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'), 'gi') + : undefined; + return mode; + }; +})(); + +const toggleOverlay = (( ) => { + let overlay = null; + + return function() { + if ( overlay !== null ) { + mergeView.leftOriginal().removeOverlay(overlay); + mergeView.editor().removeOverlay(overlay); + overlay = null; + } + if ( presentationState.filter !== '' ) { + overlay = updateOverlay(); + mergeView.leftOriginal().addOverlay(overlay); + mergeView.editor().addOverlay(overlay); + } + rulesToDoc(true); + savePresentationState(); + }; +})(); + +/******************************************************************************/ + +// Incrementally update text in a CodeMirror editor for best user experience: +// - Scroll position preserved +// - Minimum amount of text updated + +function rulesToDoc(clearHistory) { + const orig = thePanes.orig.doc; + const edit = thePanes.edit.doc; + orig.startOperation(); + edit.startOperation(); + + for ( const key in thePanes ) { + if ( Object.hasOwn(thePanes, key) === false ) { continue; } + const doc = thePanes[key].doc; + const rules = filterRules(key); + if ( + clearHistory || + doc.lineCount() === 1 && doc.getValue() === '' || + rules.length === 0 + ) { + doc.setValue(rules.length !== 0 ? rules.join('\n') + '\n' : ''); + continue; + } + // https://github.com/uBlockOrigin/uBlock-issues/issues/593 + // Ensure the text content always ends with an empty line to avoid + // spurious diff entries. + // https://github.com/uBlockOrigin/uBlock-issues/issues/657 + // Diff against unmodified beforeText so that the last newline can + // be reported in the diff and thus appended if needed. + let beforeText = doc.getValue(); + let afterText = rules.join('\n').trim(); + if ( afterText !== '' ) { afterText += '\n'; } + const diffs = getDiffer().diff_main(beforeText, afterText); + let i = diffs.length; + let iedit = beforeText.length; + while ( i-- ) { + const diff = diffs[i]; + if ( diff[0] === 0 ) { + iedit -= diff[1].length; + continue; + } + const end = doc.posFromIndex(iedit); + if ( diff[0] === 1 ) { + doc.replaceRange(diff[1], end, end); + continue; + } + /* diff[0] === -1 */ + iedit -= diff[1].length; + const beg = doc.posFromIndex(iedit); + doc.replaceRange('', beg, end); + } + } + + // Mark ellipses as read-only + const marks = edit.getAllMarks(); + for ( const mark of marks ) { + if ( mark.uboEllipsis !== true ) { continue; } + mark.clear(); + } + if ( presentationState.isCollapsed ) { + for ( let iline = 0, n = edit.lineCount(); iline < n; iline++ ) { + if ( edit.getLine(iline) !== '...' ) { continue; } + const mark = edit.markText( + { line: iline, ch: 0 }, + { line: iline + 1, ch: 0 }, + { atomic: true, readOnly: true } + ); + mark.uboEllipsis = true; + } + } + + orig.endOperation(); + edit.endOperation(); + cleanEditText = mergeView.editor().getValue().trim(); + cleanEditToken = mergeView.editor().changeGeneration(); + + if ( clearHistory !== true ) { return; } + + mergeView.editor().clearHistory(); + const chunks = mergeView.leftChunks(); + if ( chunks.length === 0 ) { return; } + const ldoc = thePanes.orig.doc; + const { clientHeight } = ldoc.getScrollInfo(); + const line = Math.min(chunks[0].editFrom, chunks[0].origFrom); + ldoc.setCursor(line, 0); + ldoc.scrollIntoView( + { line, ch: 0 }, + (clientHeight - ldoc.defaultTextHeight()) / 2 + ); +} + +/******************************************************************************/ + +function filterRules(key) { + const filter = qs$('#ruleFilter input').value; + const rules = thePanes[key].modified; + if ( filter === '' ) { return rules; } + const out = []; + for ( const rule of rules ) { + if ( rule.indexOf(filter) === -1 ) { continue; } + out.push(rule); + } + return out; +} + +/******************************************************************************/ + +async function applyDiff(permanent, toAdd, toRemove) { + const details = await vAPI.messaging.send('dashboard', { + what: 'modifyRuleset', + permanent: permanent, + toAdd: toAdd, + toRemove: toRemove, + }); + thePanes.orig.original = details.permanentRules; + thePanes.edit.original = details.sessionRules; + onPresentationChanged(); +} + +/******************************************************************************/ + +// CodeMirror quirk: sometimes fromStart.ch and/or toStart.ch is undefined. +// When this happens, use 0. + +mergeView.options.revertChunk = function( + mv, + from, fromStart, fromEnd, + to, toStart, toEnd +) { + // https://github.com/gorhill/uBlock/issues/3611 + if ( dom.attr(dom.body, 'dir') === 'rtl' ) { + let tmp = from; from = to; to = tmp; + tmp = fromStart; fromStart = toStart; toStart = tmp; + tmp = fromEnd; fromEnd = toEnd; toEnd = tmp; + } + if ( typeof fromStart.ch !== 'number' ) { fromStart.ch = 0; } + if ( fromEnd.ch !== 0 ) { fromEnd.line += 1; } + const toAdd = from.getRange( + { line: fromStart.line, ch: 0 }, + { line: fromEnd.line, ch: 0 } + ); + if ( typeof toStart.ch !== 'number' ) { toStart.ch = 0; } + if ( toEnd.ch !== 0 ) { toEnd.line += 1; } + const toRemove = to.getRange( + { line: toStart.line, ch: 0 }, + { line: toEnd.line, ch: 0 } + ); + applyDiff(from === mv.editor(), toAdd, toRemove); +}; + +/******************************************************************************/ + +function handleImportFilePicker() { + const fileReaderOnLoadHandler = function() { + if ( typeof this.result !== 'string' || this.result === '' ) { return; } + // https://github.com/chrisaljoudi/uBlock/issues/757 + // Support RequestPolicy rule syntax + let result = this.result; + let matches = /\[origins-to-destinations\]([^[]+)/.exec(result); + if ( matches && matches.length === 2 ) { + result = matches[1].trim() + .replace(/\|/g, ' ') + .replace(/\n/g, ' * noop\n'); + } + applyDiff(false, result, ''); + }; + const file = this.files[0]; + if ( file === undefined || file.name === '' ) { return; } + if ( file.type.indexOf('text') !== 0 ) { return; } + const fr = new FileReader(); + fr.onload = fileReaderOnLoadHandler; + fr.readAsText(file); +} + +/******************************************************************************/ + +function startImportFilePicker() { + const input = qs$('#importFilePicker'); + // Reset to empty string, this will ensure an change event is properly + // triggered if the user pick a file, even if it is the same as the last + // one picked. + input.value = ''; + input.click(); +} + +/******************************************************************************/ + +function exportUserRulesToFile() { + const filename = i18n$('rulesDefaultFileName') + .replace('{{datetime}}', uBlockDashboard.dateNowToSensibleString()) + .replace(/ +/g, '_'); + vAPI.download({ + url: 'data:text/plain,' + encodeURIComponent( + mergeView.leftOriginal().getValue().trim() + '\n' + ), + filename: filename, + saveAs: true + }); +} + +/******************************************************************************/ + +{ + let timer; + + dom.on('#ruleFilter input', 'input', ( ) => { + if ( timer !== undefined ) { self.cancelIdleCallback(timer); } + timer = self.requestIdleCallback(( ) => { + timer = undefined; + if ( mergeView.editor().isClean(cleanEditToken) === false ) { return; } + const filter = qs$('#ruleFilter input').value; + if ( filter === presentationState.filter ) { return; } + presentationState.filter = filter; + toggleOverlay(); + }, { timeout: 773 }); + }); +} + +/******************************************************************************/ + +const onPresentationChanged = (( ) => { + const reSwRule = /^([^/]+): ([^/ ]+) ([^ ]+)/; + const reRule = /^([^ ]+) ([^/ ]+) ([^ ]+ [^ ]+)/; + const reUrlRule = /^([^ ]+) ([^ ]+) ([^ ]+ [^ ]+)/; + + const sortNormalizeHn = function(hn) { + let domain = hostnameToDomainMap.get(hn); + if ( domain === undefined ) { + domain = /(\d|\])$/.test(hn) + ? hn + : publicSuffixList.getDomain(hn); + hostnameToDomainMap.set(hn, domain); + } + let normalized = domain || hn; + if ( hn.length !== domain.length ) { + const subdomains = hn.slice(0, hn.length - domain.length - 1); + normalized += '.' + ( + subdomains.includes('.') + ? subdomains.split('.').reverse().join('.') + : subdomains + ); + } + return normalized; + }; + + const slotFromRule = rule => { + let type, srcHn, desHn, extra; + let match = reSwRule.exec(rule); + if ( match !== null ) { + type = ' ' + match[1]; + srcHn = sortNormalizeHn(match[2]); + desHn = srcHn; + extra = match[3]; + } else if ( (match = reRule.exec(rule)) !== null ) { + type = '\x10FFFE'; + srcHn = sortNormalizeHn(match[1]); + desHn = sortNormalizeHn(match[2]); + extra = match[3]; + } else if ( (match = reUrlRule.exec(rule)) !== null ) { + type = '\x10FFFF'; + srcHn = sortNormalizeHn(match[1]); + desHn = sortNormalizeHn(hostnameFromURI(match[2])); + extra = match[3]; + } + if ( presentationState.sortType === 0 ) { + return { rule, token: `${type} ${srcHn} ${desHn} ${extra}` }; + } + if ( presentationState.sortType === 1 ) { + return { rule, token: `${srcHn} ${type} ${desHn} ${extra}` }; + } + return { rule, token: `${desHn} ${type} ${srcHn} ${extra}` }; + }; + + const sort = rules => { + const slots = []; + for ( let i = 0; i < rules.length; i++ ) { + slots.push(slotFromRule(rules[i], 1)); + } + slots.sort((a, b) => a.token.localeCompare(b.token)); + for ( let i = 0; i < rules.length; i++ ) { + rules[i] = slots[i].rule; + } + }; + + const collapse = ( ) => { + if ( presentationState.isCollapsed !== true ) { return; } + const diffs = getDiffer().diff_main( + thePanes.orig.modified.join('\n'), + thePanes.edit.modified.join('\n') + ); + const ll = []; let lellipsis = false; + const rr = []; let rellipsis = false; + for ( let i = 0; i < diffs.length; i++ ) { + const diff = diffs[i]; + if ( diff[0] === 0 ) { + lellipsis = rellipsis = true; + continue; + } + if ( diff[0] < 0 ) { + if ( lellipsis ) { + ll.push('...'); + if ( rellipsis ) { rr.push('...'); } + lellipsis = rellipsis = false; + } + ll.push(diff[1].trim()); + continue; + } + /* diff[0] > 0 */ + if ( rellipsis ) { + rr.push('...'); + if ( lellipsis ) { ll.push('...'); } + lellipsis = rellipsis = false; + } + rr.push(diff[1].trim()); + } + if ( lellipsis ) { ll.push('...'); } + if ( rellipsis ) { rr.push('...'); } + thePanes.orig.modified = ll; + thePanes.edit.modified = rr; + }; + + dom.on('#ruleFilter select', 'input', ev => { + presentationState.sortType = parseInt(ev.target.value, 10) || 0; + savePresentationState(); + onPresentationChanged(true); + }); + dom.on('#ruleFilter #diffCollapse', 'click', ev => { + presentationState.isCollapsed = dom.cl.toggle(ev.target, 'active'); + savePresentationState(); + onPresentationChanged(true); + }); + + return function onPresentationChanged(clearHistory) { + const origPane = thePanes.orig; + const editPane = thePanes.edit; + origPane.modified = origPane.original.slice(); + editPane.modified = editPane.original.slice(); + { + const mode = origPane.doc.getMode(); + mode.sortType = presentationState.sortType; + mode.setHostnameToDomainMap(hostnameToDomainMap); + mode.setPSL(publicSuffixList); + } + { + const mode = editPane.doc.getMode(); + mode.sortType = presentationState.sortType; + mode.setHostnameToDomainMap(hostnameToDomainMap); + mode.setPSL(publicSuffixList); + } + sort(origPane.modified); + sort(editPane.modified); + collapse(); + rulesToDoc(clearHistory); + onTextChanged(clearHistory); + }; +})(); + +/******************************************************************************/ + +const onTextChanged = (( ) => { + let timer; + + const process = details => { + timer = undefined; + const diff = qs$('#diff'); + let isClean = mergeView.editor().isClean(cleanEditToken); + if ( + details === undefined && + isClean === false && + mergeView.editor().getValue().trim() === cleanEditText + ) { + cleanEditToken = mergeView.editor().changeGeneration(); + isClean = true; + } + const isDirty = mergeView.leftChunks().length !== 0; + dom.cl.toggle(dom.body, 'editing', isClean === false); + dom.cl.toggle(diff, 'dirty', isDirty); + dom.cl.toggle('#editSaveButton', 'disabled', isClean); + dom.cl.toggle('#exportButton,#importButton', 'disabled', isClean === false); + dom.cl.toggle('#revertButton,#commitButton', 'disabled', isClean === false || isDirty === false); + const input = qs$('#ruleFilter input'); + if ( isClean ) { + dom.attr(input, 'disabled', null); + CodeMirror.commands.save = undefined; + } else { + dom.attr(input, 'disabled', ''); + CodeMirror.commands.save = editSaveHandler; + } + }; + + return function onTextChanged(now) { + if ( timer !== undefined ) { self.cancelIdleCallback(timer); } + timer = now ? process() : self.requestIdleCallback(process, { timeout: 57 }); + }; +})(); + +/******************************************************************************/ + +function revertAllHandler() { + const toAdd = [], toRemove = []; + const left = mergeView.leftOriginal(); + const edit = mergeView.editor(); + for ( const chunk of mergeView.leftChunks() ) { + const addedLines = left.getRange( + { line: chunk.origFrom, ch: 0 }, + { line: chunk.origTo, ch: 0 } + ); + const removedLines = edit.getRange( + { line: chunk.editFrom, ch: 0 }, + { line: chunk.editTo, ch: 0 } + ); + toAdd.push(addedLines.trim()); + toRemove.push(removedLines.trim()); + } + applyDiff(false, toAdd.join('\n'), toRemove.join('\n')); +} + +/******************************************************************************/ + +function commitAllHandler() { + const toAdd = [], toRemove = []; + const left = mergeView.leftOriginal(); + const edit = mergeView.editor(); + for ( const chunk of mergeView.leftChunks() ) { + const addedLines = edit.getRange( + { line: chunk.editFrom, ch: 0 }, + { line: chunk.editTo, ch: 0 } + ); + const removedLines = left.getRange( + { line: chunk.origFrom, ch: 0 }, + { line: chunk.origTo, ch: 0 } + ); + toAdd.push(addedLines.trim()); + toRemove.push(removedLines.trim()); + } + applyDiff(true, toAdd.join('\n'), toRemove.join('\n')); +} + +/******************************************************************************/ + +function editSaveHandler() { + const editor = mergeView.editor(); + const editText = editor.getValue().trim(); + if ( editText === cleanEditText ) { + onTextChanged(true); + return; + } + const toAdd = [], toRemove = []; + const diffs = getDiffer().diff_main(cleanEditText, editText); + for ( const diff of diffs ) { + if ( diff[0] === 1 ) { + toAdd.push(diff[1]); + } else if ( diff[0] === -1 ) { + toRemove.push(diff[1]); + } + } + applyDiff(false, toAdd.join(''), toRemove.join('')); +} + +/******************************************************************************/ + +self.cloud.onPush = function() { + return thePanes.orig.original.join('\n'); +}; + +self.cloud.onPull = function(data, append) { + if ( typeof data !== 'string' ) { return; } + applyDiff( + false, + data, + append ? '' : mergeView.editor().getValue().trim() + ); +}; + +/******************************************************************************/ + +self.wikilink = 'https://github.com/gorhill/uBlock/wiki/Dashboard:-My-rules'; + +self.hasUnsavedData = function() { + return mergeView.editor().isClean(cleanEditToken) === false; +}; + +/******************************************************************************/ + +const presentationState = { + sortType: 0, + isCollapsed: false, + filter: '', +}; + +const savePresentationState = ( ) => { + vAPI.localStorage.setItem('dynaRulesPresentationState', presentationState); +}; + +vAPI.localStorage.getItemAsync('dynaRulesPresentationState').then(details => { + if ( details instanceof Object === false ) { return; } + if ( typeof details.sortType === 'number' ) { + presentationState.sortType = details.sortType; + qs$('#ruleFilter select').value = `${details.sortType}`; + } + if ( typeof details.isCollapsed === 'boolean' ) { + presentationState.isCollapsed = details.isCollapsed; + dom.cl.toggle('#ruleFilter #diffCollapse', 'active', details.isCollapsed); + } + if ( typeof details.filter === 'string' ) { + presentationState.filter = details.filter; + qs$('#ruleFilter input').value = details.filter; + toggleOverlay(); + } +}); + +/******************************************************************************/ + +vAPI.messaging.send('dashboard', { + what: 'getRules', +}).then(details => { + thePanes.orig.original = details.permanentRules; + thePanes.edit.original = details.sessionRules; + publicSuffixList.fromSelfie(details.pslSelfie); + onPresentationChanged(true); +}); + +// Handle user interaction +dom.on('#importButton', 'click', startImportFilePicker); +dom.on('#importFilePicker', 'change', handleImportFilePicker); +dom.on('#exportButton', 'click', exportUserRulesToFile); +dom.on('#revertButton', 'click', revertAllHandler); +dom.on('#commitButton', 'click', commitAllHandler); +dom.on('#editSaveButton', 'click', editSaveHandler); + +// https://groups.google.com/forum/#!topic/codemirror/UQkTrt078Vs +mergeView.editor().on('updateDiff', ( ) => { + onTextChanged(); +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/dynamic-net-filtering.js b/android/app/src/main/assets/extensions/ublock_origin/js/dynamic-net-filtering.js new file mode 100644 index 00000000..f921d93c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/dynamic-net-filtering.js @@ -0,0 +1,482 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-2018 Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { + decomposeHostname, + domainFromHostname, +} from './uri-utils.js'; +import { LineIterator } from './text-utils.js'; +import punycode from '../lib/punycode.js'; + +/******************************************************************************/ + +// Object.create(null) is used below to eliminate worries about unexpected +// property names in prototype chain -- and this way we don't have to use +// Object.hasOwn() to avoid this. + +const supportedDynamicTypes = Object.create(null); +Object.assign(supportedDynamicTypes, { + '3p': true, + 'image': true, +'inline-script': true, + '1p-script': true, + '3p-script': true, + '3p-frame': true +}); + +const typeBitOffsets = Object.create(null); +Object.assign(typeBitOffsets, { + '*': 0, +'inline-script': 2, + '1p-script': 4, + '3p-script': 6, + '3p-frame': 8, + 'image': 10, + '3p': 12 +}); + +const nameToActionMap = Object.create(null); +Object.assign(nameToActionMap, { + 'block': 1, + 'allow': 2, + 'noop': 3 +}); + +const intToActionMap = new Map([ + [ 1, 'block' ], + [ 2, 'allow' ], + [ 3, 'noop' ] +]); + +// For performance purpose, as simple tests as possible +const reBadHostname = /[^0-9a-z_.[\]:%-]/; +const reNotASCII = /[^\x20-\x7F]/; +const decomposedSource = []; +const decomposedDestination = []; + +/******************************************************************************/ + +function is3rdParty(srcHostname, desHostname) { + // If at least one is party-less, the relation can't be labelled + // "3rd-party" + if ( desHostname === '*' || srcHostname === '*' || srcHostname === '' ) { + return false; + } + + // No domain can very well occurs, for examples: + // - localhost + // - file-scheme + // etc. + const srcDomain = domainFromHostname(srcHostname) || srcHostname; + + if ( desHostname.endsWith(srcDomain) === false ) { + return true; + } + // Do not confuse 'example.com' with 'anotherexample.com' + return desHostname.length !== srcDomain.length && + desHostname.charAt(desHostname.length - srcDomain.length - 1) !== '.'; +} + +/******************************************************************************/ + +class DynamicHostRuleFiltering { + + constructor() { + this.reset(); + } + + reset() { + this.r = 0; + this.type = ''; + this.y = ''; + this.z = ''; + this.rules = new Map(); + this.changed = false; + } + + assign(other) { + // Remove rules not in other + for ( const k of this.rules.keys() ) { + if ( other.rules.has(k) === false ) { + this.rules.delete(k); + this.changed = true; + } + } + // Add/change rules in other + for ( const entry of other.rules ) { + if ( this.rules.get(entry[0]) !== entry[1] ) { + this.rules.set(entry[0], entry[1]); + this.changed = true; + } + } + } + + copyRules(from, srcHostname, desHostnames) { + // Specific types + let thisBits = this.rules.get('* *'); + let fromBits = from.rules.get('* *'); + if ( fromBits !== thisBits ) { + if ( fromBits !== undefined ) { + this.rules.set('* *', fromBits); + } else { + this.rules.delete('* *'); + } + this.changed = true; + } + + let key = `${srcHostname} *`; + thisBits = this.rules.get(key); + fromBits = from.rules.get(key); + if ( fromBits !== thisBits ) { + if ( fromBits !== undefined ) { + this.rules.set(key, fromBits); + } else { + this.rules.delete(key); + } + this.changed = true; + } + + // Specific destinations + for ( const desHostname in desHostnames ) { + key = `* ${desHostname}`; + thisBits = this.rules.get(key); + fromBits = from.rules.get(key); + if ( fromBits !== thisBits ) { + if ( fromBits !== undefined ) { + this.rules.set(key, fromBits); + } else { + this.rules.delete(key); + } + this.changed = true; + } + key = `${srcHostname} ${desHostname}` ; + thisBits = this.rules.get(key); + fromBits = from.rules.get(key); + if ( fromBits !== thisBits ) { + if ( fromBits !== undefined ) { + this.rules.set(key, fromBits); + } else { + this.rules.delete(key); + } + this.changed = true; + } + } + + return this.changed; + } + + // - * * type + // - from * type + // - * to * + // - from to * + + hasSameRules(other, srcHostname, desHostnames) { + // Specific types + let key = '* *'; + if ( this.rules.get(key) !== other.rules.get(key) ) { return false; } + key = `${srcHostname} *`; + if ( this.rules.get(key) !== other.rules.get(key) ) { return false; } + // Specific destinations + for ( const desHostname in desHostnames ) { + key = `* ${desHostname}`; + if ( this.rules.get(key) !== other.rules.get(key) ) { + return false; + } + key = `${srcHostname} ${desHostname}`; + if ( this.rules.get(key) !== other.rules.get(key) ) { + return false; + } + } + return true; + } + + setCell(srcHostname, desHostname, type, state) { + const bitOffset = typeBitOffsets[type]; + const k = `${srcHostname} ${desHostname}`; + const oldBitmap = this.rules.get(k) || 0; + const newBitmap = oldBitmap & ~(3 << bitOffset) | (state << bitOffset); + if ( newBitmap === oldBitmap ) { return false; } + if ( newBitmap === 0 ) { + this.rules.delete(k); + } else { + this.rules.set(k, newBitmap); + } + this.changed = true; + return true; + } + + unsetCell(srcHostname, desHostname, type) { + this.evaluateCellZY(srcHostname, desHostname, type); + if ( this.r === 0 ) { return false; } + this.setCell(srcHostname, desHostname, type, 0); + this.changed = true; + return true; + } + + evaluateCell(srcHostname, desHostname, type) { + const key = `${srcHostname} ${desHostname}`; + const bitmap = this.rules.get(key); + if ( bitmap === undefined ) { return 0; } + return bitmap >> typeBitOffsets[type] & 3; + } + + clearRegisters() { + this.r = 0; + this.type = this.y = this.z = ''; + return this; + } + + evaluateCellZ(srcHostname, desHostname, type) { + decomposeHostname(srcHostname, decomposedSource); + this.type = type; + const bitOffset = typeBitOffsets[type]; + for ( const srchn of decomposedSource ) { + this.z = srchn; + let v = this.rules.get(`${srchn} ${desHostname}`); + if ( v === undefined ) { continue; } + v = v >>> bitOffset & 3; + if ( v === 0 ) { continue; } + return (this.r = v); + } + // srcHostname is '*' at this point + this.r = 0; + return 0; + } + + evaluateCellZY(srcHostname, desHostname, type) { + // Pathological cases. + if ( desHostname === '' ) { + this.r = 0; + return 0; + } + + // Precedence: from most specific to least specific + + // Specific-destination, any party, any type + decomposeHostname(desHostname, decomposedDestination); + for ( const deshn of decomposedDestination ) { + if ( deshn === '*' ) { break; } + this.y = deshn; + if ( this.evaluateCellZ(srcHostname, deshn, '*') !== 0 ) { + return this.r; + } + } + + const thirdParty = is3rdParty(srcHostname, desHostname); + + // Any destination + this.y = '*'; + + // Specific party + if ( thirdParty ) { + // 3rd-party, specific type + if ( type === 'script' ) { + if ( this.evaluateCellZ(srcHostname, '*', '3p-script') !== 0 ) { + return this.r; + } + } else if ( type === 'sub_frame' || type === 'object' ) { + if ( this.evaluateCellZ(srcHostname, '*', '3p-frame') !== 0 ) { + return this.r; + } + } + // 3rd-party, any type + if ( this.evaluateCellZ(srcHostname, '*', '3p') !== 0 ) { + return this.r; + } + } else if ( type === 'script' ) { + // 1st party, specific type + if ( this.evaluateCellZ(srcHostname, '*', '1p-script') !== 0 ) { + return this.r; + } + } + + // Any destination, any party, specific type + if ( supportedDynamicTypes[type] !== undefined ) { + if ( this.evaluateCellZ(srcHostname, '*', type) !== 0 ) { + return this.r; + } + if ( type.startsWith('3p-') ) { + if ( this.evaluateCellZ(srcHostname, '*', '3p') !== 0 ) { + return this.r; + } + } + } + + // Any destination, any party, any type + if ( this.evaluateCellZ(srcHostname, '*', '*') !== 0 ) { + return this.r; + } + + this.type = ''; + return 0; + } + + mustAllowCellZY(srcHostname, desHostname, type) { + return this.evaluateCellZY(srcHostname, desHostname, type) === 2; + } + + mustBlockOrAllow() { + return this.r === 1 || this.r === 2; + } + + mustBlock() { + return this.r === 1; + } + + mustAbort() { + return this.r === 3; + } + + lookupRuleData(src, des, type) { + const r = this.evaluateCellZY(src, des, type); + if ( r === 0 ) { return; } + return `${this.z} ${this.y} ${this.type} ${r}`; + } + + toLogData() { + if ( this.r === 0 || this.type === '' ) { return; } + return { + source: 'dynamicHost', + result: this.r, + raw: `${this.z} ${this.y} ${this.type} ${intToActionMap.get(this.r)}` + }; + } + + srcHostnameFromRule(rule) { + return rule.slice(0, rule.indexOf(' ')); + } + + desHostnameFromRule(rule) { + return rule.slice(rule.indexOf(' ') + 1); + } + + toArray() { + const out = []; + for ( const key of this.rules.keys() ) { + const srchn = this.srcHostnameFromRule(key); + const deshn = this.desHostnameFromRule(key); + const srchnPretty = srchn.includes('xn--') && punycode + ? punycode.toUnicode(srchn) + : srchn; + const deshnPretty = deshn.includes('xn--') && punycode + ? punycode.toUnicode(deshn) + : deshn; + for ( const type in typeBitOffsets ) { + if ( typeBitOffsets[type] === undefined ) { continue; } + const val = this.evaluateCell(srchn, deshn, type); + if ( val === 0 ) { continue; } + const action = intToActionMap.get(val); + if ( action === undefined ) { continue; } + out.push(`${srchnPretty} ${deshnPretty} ${type} ${action}`); + } + } + return out; + } + + toString() { + return this.toArray().join('\n'); + } + + fromString(text, append) { + const lineIter = new LineIterator(text); + if ( append !== true ) { this.reset(); } + while ( lineIter.eot() === false ) { + this.addFromRuleParts(lineIter.next().trim().split(/\s+/)); + } + } + + validateRuleParts(parts) { + if ( parts.length < 4 ) { return; } + + // Ignore hostname-based switch rules + if ( parts[0].endsWith(':') ) { return; } + + // Ignore URL-based rules + if ( parts[1].includes('/') ) { return; } + + if ( typeBitOffsets[parts[2]] === undefined ) { return; } + + if ( nameToActionMap[parts[3]] === undefined ) { return; } + + // https://github.com/chrisaljoudi/uBlock/issues/840 + // Discard invalid rules + if ( parts[1] !== '*' && parts[2] !== '*' ) { return; } + + // Performance: avoid punycoding when only ASCII chars + if ( punycode !== undefined ) { + if ( reNotASCII.test(parts[0]) ) { + parts[0] = punycode.toASCII(parts[0]); + } + if ( reNotASCII.test(parts[1]) ) { + parts[1] = punycode.toASCII(parts[1]); + } + } + + // https://github.com/chrisaljoudi/uBlock/issues/1082 + // Discard rules with invalid hostnames + if ( + (parts[0] !== '*' && reBadHostname.test(parts[0])) || + (parts[1] !== '*' && reBadHostname.test(parts[1])) + ) { + return; + } + + return parts; + } + + addFromRuleParts(parts) { + if ( this.validateRuleParts(parts) !== undefined ) { + this.setCell(parts[0], parts[1], parts[2], nameToActionMap[parts[3]]); + return true; + } + return false; + } + + removeFromRuleParts(parts) { + if ( this.validateRuleParts(parts) !== undefined ) { + this.setCell(parts[0], parts[1], parts[2], 0); + return true; + } + return false; + } + + toSelfie() { + return { + magicId: this.magicId, + rules: Array.from(this.rules) + }; + } + + fromSelfie(selfie) { + if ( selfie.magicId !== this.magicId ) { return false; } + this.rules = new Map(selfie.rules); + this.changed = true; + return true; + } +} + +DynamicHostRuleFiltering.prototype.magicId = 1; + +/******************************************************************************/ + +export default DynamicHostRuleFiltering; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/epicker-ui.js b/android/app/src/main/assets/extensions/ublock_origin/js/epicker-ui.js new file mode 100644 index 00000000..d3235e92 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/epicker-ui.js @@ -0,0 +1,918 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/* global CodeMirror */ + +import './codemirror/ubo-static-filtering.js'; + +import * as sfp from './static-filtering-parser.js'; + +import { dom } from './dom.js'; +import { hostnameFromURI } from './uri-utils.js'; +import punycode from '../lib/punycode.js'; + +/******************************************************************************/ +/******************************************************************************/ + +(( ) => { + +/******************************************************************************/ + +if ( typeof vAPI !== 'object' ) { return; } + +const $id = id => document.getElementById(id); +const $stor = selector => document.querySelector(selector); +const $storAll = selector => document.querySelectorAll(selector); + +const pickerRoot = document.documentElement; +const dialog = $stor('aside'); +let staticFilteringParser; + +const svgRoot = $stor('svg#sea'); +const svgOcean = svgRoot.children[0]; +const svgIslands = svgRoot.children[1]; +const NoPaths = 'M0 0'; + +const reCosmeticAnchor = /^#(\$|\?|\$\?)?#/; + +{ + const url = new URL(self.location.href); + if ( url.searchParams.has('zap') ) { + pickerRoot.classList.add('zap'); + } +} + +const docURL = new URL(vAPI.getURL('')); + +const computedSpecificityCandidates = new Map(); +let resultsetOpt; +let cosmeticFilterCandidates = []; +let computedCandidate = ''; +let needBody = false; + +/******************************************************************************/ + +const cmEditor = new CodeMirror(document.querySelector('.codeMirrorContainer'), { + autoCloseBrackets: true, + autofocus: true, + extraKeys: { + 'Ctrl-Space': 'autocomplete', + }, + lineWrapping: true, + matchBrackets: true, + maxScanLines: 1, +}); + +vAPI.messaging.send('dashboard', { + what: 'getAutoCompleteDetails' +}).then(hints => { + // For unknown reasons, `instanceof Object` does not work here in Firefox. + if ( hints instanceof Object === false ) { return; } + cmEditor.setOption('uboHints', hints); +}); + +/******************************************************************************/ + +const rawFilterFromTextarea = function() { + const text = cmEditor.getValue(); + const pos = text.indexOf('\n'); + return pos === -1 ? text : text.slice(0, pos); +}; + +/******************************************************************************/ + +const filterFromTextarea = function() { + const filter = rawFilterFromTextarea(); + if ( filter === '' ) { return ''; } + const parser = staticFilteringParser; + parser.parse(filter); + if ( parser.isFilter() === false ) { return '!'; } + if ( parser.isExtendedFilter() ) { + if ( parser.isCosmeticFilter() === false ) { return '!'; } + } else if ( parser.isNetworkFilter() === false ) { + return '!'; + } + return filter; +}; + +/******************************************************************************/ + +const renderRange = function(id, value, invert = false) { + const input = $stor(`#${id} input`); + const max = parseInt(input.max, 10); + if ( typeof value !== 'number' ) { + value = parseInt(input.value, 10); + } + if ( invert ) { + value = max - value; + } + input.value = value; + const slider = $stor(`#${id} > span`); + const lside = slider.children[0]; + const thumb = slider.children[1]; + const sliderWidth = slider.offsetWidth; + const maxPercent = (sliderWidth - thumb.offsetWidth) / sliderWidth * 100; + const widthPercent = value / max * maxPercent; + lside.style.width = `${widthPercent}%`; +}; + +/******************************************************************************/ + +const userFilterFromCandidate = function(filter) { + if ( filter === '' || filter === '!' ) { return; } + + let hn = hostnameFromURI(docURL.href); + if ( hn.startsWith('xn--') ) { + hn = punycode.toUnicode(hn); + } + + // Cosmetic filter? + if ( reCosmeticAnchor.test(filter) ) { + return hn + filter; + } + + // Assume net filter + const opts = []; + + // If no domain included in filter, we need domain option + if ( filter.startsWith('||') === false ) { + opts.push(`domain=${hn}`); + } + + if ( resultsetOpt !== undefined ) { + opts.push(resultsetOpt); + } + + if ( opts.length ) { + filter += '$' + opts.join(','); + } + + return filter; +}; + +/******************************************************************************/ + +const candidateFromFilterChoice = function(filterChoice) { + let { slot, filters } = filterChoice; + let filter = filters[slot]; + + // https://github.com/uBlockOrigin/uBlock-issues/issues/47 + for ( const elem of $storAll('#candidateFilters li') ) { + elem.classList.remove('active'); + } + + computedCandidate = ''; + + if ( filter === undefined ) { return ''; } + + // For net filters there no such thing as a path + if ( filter.startsWith('##') === false ) { + $stor(`#netFilters li:nth-of-type(${slot+1})`) + .classList.add('active'); + return filter; + } + + // At this point, we have a cosmetic filter + + $stor(`#cosmeticFilters li:nth-of-type(${slot+1})`) + .classList.add('active'); + + return cosmeticCandidatesFromFilterChoice(filterChoice); +}; + +/******************************************************************************/ + +const cosmeticCandidatesFromFilterChoice = function(filterChoice) { + let { slot, filters } = filterChoice; + + renderRange('resultsetDepth', slot, true); + renderRange('resultsetSpecificity'); + + if ( computedSpecificityCandidates.has(slot) ) { + onCandidatesOptimized({ slot }); + return; + } + + const specificities = [ + 0b0000, // remove hierarchy; remove id, nth-of-type, attribute values + 0b0010, // remove hierarchy; remove id, nth-of-type + 0b0011, // remove hierarchy + 0b1000, // trim hierarchy; remove id, nth-of-type, attribute values + 0b1010, // trim hierarchy; remove id, nth-of-type + 0b1100, // remove id, nth-of-type, attribute values + 0b1110, // remove id, nth-of-type + 0b1111, // keep all = most specific + ]; + + const candidates = []; + + let filter = filters[slot]; + + for ( const specificity of specificities ) { + // Return path: the target element, then all siblings prepended + const paths = []; + for ( let i = slot; i < filters.length; i++ ) { + filter = filters[i].slice(2); + // Remove id, nth-of-type + // https://github.com/uBlockOrigin/uBlock-issues/issues/162 + // Mind escaped periods: they do not denote a class identifier. + if ( (specificity & 0b0001) === 0 ) { + filter = filter.replace(/:nth-of-type\(\d+\)/, ''); + if ( + filter.charAt(0) === '#' && ( + (specificity & 0b1000) === 0 || i === slot + ) + ) { + const pos = filter.search(/[^\\]\./); + if ( pos !== -1 ) { + filter = filter.slice(pos + 1); + } + } + } + // Remove attribute values. + if ( (specificity & 0b0010) === 0 ) { + const match = /^\[([^^*$=]+)[\^*$]?=.+\]$/.exec(filter); + if ( match !== null ) { + filter = `[${match[1]}]`; + } + } + // Remove all classes when an id exists. + // https://github.com/uBlockOrigin/uBlock-issues/issues/162 + // Mind escaped periods: they do not denote a class identifier. + if ( filter.charAt(0) === '#' ) { + filter = filter.replace(/([^\\])\..+$/, '$1'); + } + if ( paths.length !== 0 ) { + filter += ' > '; + } + paths.unshift(filter); + // Stop at any element with an id: these are unique in a web page + if ( (specificity & 0b1000) === 0 || filter.startsWith('#') ) { + break; + } + } + + // Trim hierarchy: remove generic elements from path + if ( (specificity & 0b1100) === 0b1000 ) { + let i = 0; + while ( i < paths.length - 1 ) { + if ( /^[a-z0-9]+ > $/.test(paths[i+1]) ) { + if ( paths[i].endsWith(' > ') ) { + paths[i] = paths[i].slice(0, -2); + } + paths.splice(i + 1, 1); + } else { + i += 1; + } + } + } + + if ( + needBody && + paths.length !== 0 && + paths[0].startsWith('#') === false && + paths[0].startsWith('body ') === false && + (specificity & 0b1100) !== 0 + ) { + paths.unshift('body > '); + } + + candidates.push(paths); + } + + pickerContentPort.postMessage({ + what: 'optimizeCandidates', + candidates, + slot, + }); +}; + +/******************************************************************************/ + +const onCandidatesOptimized = function(details) { + $id('resultsetModifiers').classList.remove('hide'); + const i = parseInt($stor('#resultsetSpecificity input').value, 10); + if ( Array.isArray(details.candidates) ) { + computedSpecificityCandidates.set(details.slot, details.candidates); + } + const candidates = computedSpecificityCandidates.get(details.slot); + computedCandidate = candidates[i]; + cmEditor.setValue(computedCandidate); + cmEditor.clearHistory(); + onCandidateChanged(); +}; + +/******************************************************************************/ + +const onSvgClicked = function(ev) { + // If zap mode, highlight element under mouse, this makes the zapper usable + // on touch screens. + if ( pickerRoot.classList.contains('zap') ) { + pickerContentPort.postMessage({ + what: 'zapElementAtPoint', + mx: ev.clientX, + my: ev.clientY, + options: { + stay: true, + highlight: ev.target !== svgIslands, + }, + }); + return; + } + // https://github.com/chrisaljoudi/uBlock/issues/810#issuecomment-74600694 + // Unpause picker if: + // - click outside dialog AND + // - not in preview mode + if ( pickerRoot.classList.contains('paused') ) { + if ( pickerRoot.classList.contains('preview') === false ) { + unpausePicker(); + } + return; + } + // Force dialog to always be visible when using a touch-driven device. + if ( ev.type === 'touch' ) { + pickerRoot.classList.add('show'); + } + pickerContentPort.postMessage({ + what: 'filterElementAtPoint', + mx: ev.clientX, + my: ev.clientY, + broad: ev.ctrlKey, + }); +}; + +/******************************************************************************* + + Swipe right: + If picker not paused: quit picker + If picker paused and dialog visible: hide dialog + If picker paused and dialog not visible: quit picker + + Swipe left: + If picker paused and dialog not visible: show dialog + +*/ + +const onSvgTouch = (( ) => { + let startX = 0, startY = 0; + let t0 = 0; + return ev => { + if ( ev.type === 'touchstart' ) { + startX = ev.touches[0].screenX; + startY = ev.touches[0].screenY; + t0 = ev.timeStamp; + return; + } + if ( startX === undefined ) { return; } + const stopX = ev.changedTouches[0].screenX; + const stopY = ev.changedTouches[0].screenY; + const angle = Math.abs(Math.atan2(stopY - startY, stopX - startX)); + const distance = Math.sqrt( + Math.pow(stopX - startX, 2) + + Math.pow(stopY - startY, 2) + ); + // Interpret touch events as a tap if: + // - Swipe is not valid; and + // - The time between start and stop was less than 200ms. + const duration = ev.timeStamp - t0; + if ( distance < 32 && duration < 200 ) { + onSvgClicked({ + type: 'touch', + target: ev.target, + clientX: ev.changedTouches[0].pageX, + clientY: ev.changedTouches[0].pageY, + }); + ev.preventDefault(); + return; + } + if ( distance < 64 ) { return; } + const angleUpperBound = Math.PI * 0.25 * 0.5; + const swipeRight = angle < angleUpperBound; + if ( swipeRight === false && angle < Math.PI - angleUpperBound ) { + return; + } + if ( ev.cancelable ) { + ev.preventDefault(); + } + // Swipe left. + if ( swipeRight === false ) { + if ( pickerRoot.classList.contains('paused') ) { + pickerRoot.classList.remove('hide'); + pickerRoot.classList.add('show'); + } + return; + } + // Swipe right. + if ( + pickerRoot.classList.contains('zap') && + svgIslands.getAttribute('d') !== NoPaths + ) { + pickerContentPort.postMessage({ + what: 'unhighlight' + }); + return; + } + else if ( + pickerRoot.classList.contains('paused') && + pickerRoot.classList.contains('show') + ) { + pickerRoot.classList.remove('show'); + pickerRoot.classList.add('hide'); + return; + } + quitPicker(); + }; +})(); + +/******************************************************************************/ + +const onCandidateChanged = function() { + const filter = filterFromTextarea(); + const bad = filter === '!'; + $stor('section').classList.toggle('invalidFilter', bad); + if ( bad ) { + $id('resultsetCount').textContent = 'E'; + $id('create').setAttribute('disabled', ''); + } + const text = rawFilterFromTextarea(); + $id('resultsetModifiers').classList.toggle( + 'hide', text === '' || text !== computedCandidate + ); + pickerContentPort.postMessage({ + what: 'dialogSetFilter', + filter, + compiled: reCosmeticAnchor.test(filter) + ? staticFilteringParser.result.compiled + : undefined, + }); +}; + +/******************************************************************************/ + +const onPreviewClicked = function() { + const state = pickerRoot.classList.toggle('preview'); + pickerContentPort.postMessage({ + what: 'togglePreview', + state, + }); +}; + +/******************************************************************************/ + +const onCreateClicked = function() { + const candidate = filterFromTextarea(); + const filter = userFilterFromCandidate(candidate); + if ( filter !== undefined ) { + vAPI.messaging.send('elementPicker', { + what: 'createUserFilter', + autoComment: true, + filters: filter, + docURL: docURL.href, + killCache: reCosmeticAnchor.test(candidate) === false, + }); + } + pickerContentPort.postMessage({ + what: 'dialogCreate', + filter: candidate, + compiled: reCosmeticAnchor.test(candidate) + ? staticFilteringParser.result.compiled + : undefined, + }); +}; + +/******************************************************************************/ + +const onPickClicked = function() { + unpausePicker(); +}; + +/******************************************************************************/ + +const onQuitClicked = function() { + quitPicker(); +}; + +/******************************************************************************/ + +const onDepthChanged = function() { + const input = $stor('#resultsetDepth input'); + const max = parseInt(input.max, 10); + const value = parseInt(input.value, 10); + const text = candidateFromFilterChoice({ + filters: cosmeticFilterCandidates, + slot: max - value, + }); + if ( text === undefined ) { return; } + cmEditor.setValue(text); + cmEditor.clearHistory(); + onCandidateChanged(); +}; + +/******************************************************************************/ + +const onSpecificityChanged = function() { + renderRange('resultsetSpecificity'); + if ( rawFilterFromTextarea() !== computedCandidate ) { return; } + const depthInput = $stor('#resultsetDepth input'); + const slot = parseInt(depthInput.max, 10) - parseInt(depthInput.value, 10); + const i = parseInt($stor('#resultsetSpecificity input').value, 10); + const candidates = computedSpecificityCandidates.get(slot); + computedCandidate = candidates[i]; + cmEditor.setValue(computedCandidate); + cmEditor.clearHistory(); + onCandidateChanged(); +}; + +/******************************************************************************/ + +const onCandidateClicked = function(ev) { + let li = ev.target.closest('li'); + if ( li === null ) { return; } + const ul = li.closest('.changeFilter'); + if ( ul === null ) { return; } + const choice = { + filters: Array.from(ul.querySelectorAll('li')).map(a => a.textContent), + slot: 0, + }; + while ( li.previousElementSibling !== null ) { + li = li.previousElementSibling; + choice.slot += 1; + } + const text = candidateFromFilterChoice(choice); + if ( text === undefined ) { return; } + cmEditor.setValue(text); + cmEditor.clearHistory(); + onCandidateChanged(); +}; + +/******************************************************************************/ + +const onKeyPressed = function(ev) { + // Delete + if ( + (ev.key === 'Delete' || ev.key === 'Backspace') && + pickerRoot.classList.contains('zap') + ) { + pickerContentPort.postMessage({ + what: 'zapElementAtPoint', + options: { stay: true }, + }); + return; + } + // Esc + if ( ev.key === 'Escape' || ev.which === 27 ) { + onQuitClicked(); + return; + } +}; + +/******************************************************************************/ + +const onStartMoving = (( ) => { + let isTouch = false; + let mx0 = 0, my0 = 0; + let mx1 = 0, my1 = 0; + let pw = 0, ph = 0; + let dw = 0, dh = 0; + let cx0 = 0, cy0 = 0; + let timer; + + const eatEvent = function(ev) { + ev.stopPropagation(); + ev.preventDefault(); + }; + + const move = ( ) => { + timer = undefined; + const cx1 = cx0 + mx1 - mx0; + const cy1 = cy0 + my1 - my0; + if ( cx1 < pw / 2 ) { + dialog.style.setProperty('left', `${Math.max(cx1-dw/2,2)}px`); + dialog.style.removeProperty('right'); + } else { + dialog.style.removeProperty('left'); + dialog.style.setProperty('right', `${Math.max(pw-cx1-dw/2,2)}px`); + } + if ( cy1 < ph / 2 ) { + dialog.style.setProperty('top', `${Math.max(cy1-dh/2,2)}px`); + dialog.style.removeProperty('bottom'); + } else { + dialog.style.removeProperty('top'); + dialog.style.setProperty('bottom', `${Math.max(ph-cy1-dh/2,2)}px`); + } + }; + + const moveAsync = ev => { + if ( timer !== undefined ) { return; } + if ( isTouch ) { + const touch = ev.touches[0]; + mx1 = touch.pageX; + my1 = touch.pageY; + } else { + mx1 = ev.pageX; + my1 = ev.pageY; + } + timer = self.requestAnimationFrame(move); + }; + + const stop = ev => { + if ( dialog.classList.contains('moving') === false ) { return; } + dialog.classList.remove('moving'); + if ( isTouch ) { + self.removeEventListener('touchmove', moveAsync, { capture: true }); + } else { + self.removeEventListener('mousemove', moveAsync, { capture: true }); + } + eatEvent(ev); + }; + + return ev => { + const target = dialog.querySelector('#move'); + if ( ev.target !== target ) { return; } + if ( dialog.classList.contains('moving') ) { return; } + isTouch = ev.type.startsWith('touch'); + if ( isTouch ) { + const touch = ev.touches[0]; + mx0 = touch.pageX; + my0 = touch.pageY; + } else { + mx0 = ev.pageX; + my0 = ev.pageY; + } + const rect = dialog.getBoundingClientRect(); + dw = rect.width; + dh = rect.height; + cx0 = rect.x + dw / 2; + cy0 = rect.y + dh / 2; + pw = pickerRoot.clientWidth; + ph = pickerRoot.clientHeight; + dialog.classList.add('moving'); + if ( isTouch ) { + self.addEventListener('touchmove', moveAsync, { capture: true }); + self.addEventListener('touchend', stop, { capture: true, once: true }); + } else { + self.addEventListener('mousemove', moveAsync, { capture: true }); + self.addEventListener('mouseup', stop, { capture: true, once: true }); + } + eatEvent(ev); + }; +})(); + +/******************************************************************************/ + +const svgListening = (( ) => { + let on = false; + let timer; + let mx = 0, my = 0; + + const onTimer = ( ) => { + timer = undefined; + pickerContentPort.postMessage({ + what: 'highlightElementAtPoint', + mx, + my, + }); + }; + + const onHover = ev => { + mx = ev.clientX; + my = ev.clientY; + if ( timer === undefined ) { + timer = self.requestAnimationFrame(onTimer); + } + }; + + return state => { + if ( state === on ) { return; } + on = state; + if ( on ) { + document.addEventListener('mousemove', onHover, { passive: true }); + return; + } + document.removeEventListener('mousemove', onHover, { passive: true }); + if ( timer !== undefined ) { + self.cancelAnimationFrame(timer); + timer = undefined; + } + }; +})(); + +/******************************************************************************/ + +// Create lists of candidate filters. This takes into account whether the +// current mode is narrow or broad. + +const populateCandidates = function(candidates, selector) { + const root = dialog.querySelector(selector); + const ul = root.querySelector('ul'); + while ( ul.firstChild !== null ) { + ul.firstChild.remove(); + } + for ( let i = 0; i < candidates.length; i++ ) { + const li = document.createElement('li'); + li.textContent = candidates[i]; + ul.appendChild(li); + } + if ( candidates.length !== 0 ) { + root.style.removeProperty('display'); + } else { + root.style.setProperty('display', 'none'); + } +}; + +/******************************************************************************/ + +const showDialog = function(details) { + pausePicker(); + + const { netFilters, cosmeticFilters, filter } = details; + + needBody = + cosmeticFilters.length !== 0 && + cosmeticFilters[cosmeticFilters.length - 1] === '##body'; + if ( needBody ) { + cosmeticFilters.pop(); + } + cosmeticFilterCandidates = cosmeticFilters; + + docURL.href = details.url; + + populateCandidates(netFilters, '#netFilters'); + populateCandidates(cosmeticFilters, '#cosmeticFilters'); + computedSpecificityCandidates.clear(); + + const depthInput = $stor('#resultsetDepth input'); + depthInput.max = cosmeticFilters.length - 1; + depthInput.value = depthInput.max; + + dialog.querySelector('ul').style.display = + netFilters.length || cosmeticFilters.length ? '' : 'none'; + $id('create').setAttribute('disabled', ''); + + // Auto-select a candidate filter + + // 2020-09-01: + // In Firefox, `details instanceof Object` resolves to `false` despite + // `details` being a valid object. Consequently, falling back to use + // `typeof details`. + // This is an issue which surfaced when the element picker code was + // revisited to isolate the picker dialog DOM from the page DOM. + if ( typeof filter !== 'object' || filter === null ) { + cmEditor.setValue(''); + return; + } + + const filterChoice = { + filters: filter.filters, + slot: filter.slot, + }; + + const text = candidateFromFilterChoice(filterChoice); + if ( text === undefined ) { return; } + cmEditor.setValue(text); + onCandidateChanged(); +}; + +/******************************************************************************/ + +const pausePicker = function() { + dom.cl.add(pickerRoot, 'paused'); + dom.cl.remove(pickerRoot, 'minimized'); + svgListening(false); +}; + +/******************************************************************************/ + +const unpausePicker = function() { + dom.cl.remove(pickerRoot, 'paused', 'preview'); + dom.cl.add(pickerRoot, 'minimized'); + pickerContentPort.postMessage({ + what: 'togglePreview', + state: false, + }); + svgListening(true); +}; + +/******************************************************************************/ + +const startPicker = function() { + self.addEventListener('keydown', onKeyPressed, true); + const svg = $stor('svg#sea'); + svg.addEventListener('click', onSvgClicked); + svg.addEventListener('touchstart', onSvgTouch); + svg.addEventListener('touchend', onSvgTouch); + + unpausePicker(); + + $id('quit').addEventListener('click', onQuitClicked); + + if ( pickerRoot.classList.contains('zap') ) { return; } + + cmEditor.on('changes', onCandidateChanged); + + $id('preview').addEventListener('click', onPreviewClicked); + $id('create').addEventListener('click', onCreateClicked); + $id('pick').addEventListener('click', onPickClicked); + $id('minimize').addEventListener('click', ( ) => { + if ( dom.cl.has(pickerRoot, 'paused') === false ) { + pausePicker(); + onCandidateChanged(); + } else { + dom.cl.toggle(pickerRoot, 'minimized'); + } + }); + $id('move').addEventListener('mousedown', onStartMoving); + $id('move').addEventListener('touchstart', onStartMoving); + $id('candidateFilters').addEventListener('click', onCandidateClicked); + $stor('#resultsetDepth input').addEventListener('input', onDepthChanged); + $stor('#resultsetSpecificity input').addEventListener('input', onSpecificityChanged); + staticFilteringParser = new sfp.AstFilterParser({ + interactive: true, + nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), + }); +}; + +/******************************************************************************/ + +const quitPicker = function() { + pickerContentPort.postMessage({ what: 'quitPicker' }); + pickerContentPort.close(); + pickerContentPort = undefined; +}; + +/******************************************************************************/ + +const onPickerMessage = function(msg) { + switch ( msg.what ) { + case 'candidatesOptimized': + onCandidatesOptimized(msg); + break; + case 'showDialog': + showDialog(msg); + break; + case 'resultsetDetails': { + resultsetOpt = msg.opt; + $id('resultsetCount').textContent = msg.count; + if ( msg.count !== 0 ) { + $id('create').removeAttribute('disabled'); + } else { + $id('create').setAttribute('disabled', ''); + } + break; + } + case 'svgPaths': { + let { ocean, islands } = msg; + ocean += islands; + svgOcean.setAttribute('d', ocean); + svgIslands.setAttribute('d', islands || NoPaths); + break; + } + default: + break; + } +}; + +/******************************************************************************/ + +// Wait for the content script to establish communication + +let pickerContentPort; + +globalThis.addEventListener('message', ev => { + const msg = ev.data || {}; + if ( msg.what !== 'epickerStart' ) { return; } + if ( Array.isArray(ev.ports) === false ) { return; } + if ( ev.ports.length === 0 ) { return; } + pickerContentPort = ev.ports[0]; + pickerContentPort.onmessage = ev => { + const msg = ev.data || {}; + onPickerMessage(msg); + }; + pickerContentPort.onmessageerror = ( ) => { + quitPicker(); + }; + startPicker(); + pickerContentPort.postMessage({ what: 'start' }); +}, { once: true }); + +/******************************************************************************/ + +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/fa-icons.js b/android/app/src/main/assets/extensions/ublock_origin/js/fa-icons.js new file mode 100644 index 00000000..82ec1510 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/fa-icons.js @@ -0,0 +1,130 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2018-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uMatrix +*/ + +/******************************************************************************/ + +export const faIconsInit = (( ) => { + + // https://github.com/uBlockOrigin/uBlock-issues/issues/1196 + const svgIcons = new Map([ + // See /img/fontawesome/fontawesome-defs.svg + [ 'angle-up', { viewBox: '0 0 998 582', path: 'm 998,499 q 0,13 -10,23 l -50,50 q -10,10 -23,10 -13,0 -23,-10 L 499,179 106,572 Q 96,582 83,582 70,582 60,572 L 10,522 Q 0,512 0,499 0,486 10,476 L 476,10 q 10,-10 23,-10 13,0 23,10 l 466,466 q 10,10 10,23 z' } ], + [ 'arrow-right', { viewBox: '0 0 1472 1558', path: 'm 1472,779 q 0,54 -37,91 l -651,651 q -39,37 -91,37 -51,0 -90,-37 l -75,-75 q -38,-38 -38,-91 0,-53 38,-91 L 821,971 H 117 Q 65,971 32.5,933.5 0,896 0,843 V 715 Q 0,662 32.5,624.5 65,587 117,587 H 821 L 528,293 q -38,-36 -38,-90 0,-54 38,-90 l 75,-75 q 38,-38 90,-38 53,0 91,38 l 651,651 q 37,35 37,90 z' } ], + [ 'bar-chart', { viewBox: '0 0 2048 1536', path: 'm 640,768 0,512 -256,0 0,-512 256,0 z m 384,-512 0,1024 -256,0 0,-1024 256,0 z m 1024,1152 0,128 L 0,1536 0,0 l 128,0 0,1408 1920,0 z m -640,-896 0,768 -256,0 0,-768 256,0 z m 384,-384 0,1152 -256,0 0,-1152 256,0 z' } ], + [ 'bolt', { viewBox: '0 0 896 1664', path: 'm 885.08696,438 q 18,20 7,44 l -540,1157 q -13,25 -42,25 -4,0 -14,-2 -17,-5 -25.5,-19 -8.5,-14 -4.5,-30 l 197,-808 -406,101 q -4,1 -12,1 -18,0 -31,-11 Q -3.9130435,881 1.0869565,857 L 202.08696,32 q 4,-14 16,-23 12,-9 28,-9 l 328,0 q 19,0 32,12.5 13,12.5 13,29.5 0,8 -5,18 l -171,463 396,-98 q 8,-2 12,-2 19,0 34,15 z' } ], + [ 'book', { viewBox: '0 0 1664 1536', path: 'm 1639.2625,350 c 25,36 32,83 18,129 l -275,906 c -25,85 -113,151 -199,151 H 260.26251 c -102,0 -211,-81 -248,-185 -16,-45 -16,-89 -2,-127 2,-20 6,-40 7,-64 1,-16 -8,-29 -6,-41 4,-24 25,-41 41,-68 30,-50 64,-131 75,-183 5,-19 -5,-41 0,-58 5,-19 24,-33 34,-51 27,-46 62,-135 67,-182 2,-21 -8,-44 -2,-60 7,-23 29,-33 44,-53 24,-33 64,-128 70,-181 2,-17 -8,-34 -5,-52 4,-19 28,-39 44,-62 42,-62 50,-199 177,-163 l -1,3 c 17,-4 34,-9 51,-9 h 761 c 47,0 89,21 114,56 26,36 32,83 18,130 l -274,906 c -47,154 -73,188 -200,188 H 156.26251 c -13,0 -29,3 -38,15 -8,12 -9,21 -1,43 20,58 89,70 144,70 h 923 c 37,0 80,-21 91,-57 l 300,-987 c 6,-19 6,-39 5,-57 23,9 44,23 59,43 z m -1064,2 c -6,18 4,32 22,32 h 608 c 17,0 36,-14 42,-32 l 21,-64 c 6,-18 -4,-32 -22,-32 H 638.26251 c -17,0 -36,14 -42,32 z m -83,256 c -6,18 4,32 22,32 h 608 c 17,0 36,-14 42,-32 l 21,-64 c 6,-18 -4,-32 -22,-32 H 555.26251 c -17,0 -36,14 -42,32 z' } ], + [ 'clipboard', { viewBox: '0 0 1792 1792', path: 'm 768,1664 896,0 0,-640 -416,0 q -40,0 -68,-28 -28,-28 -28,-68 l 0,-416 -384,0 0,1152 z m 256,-1440 0,-64 q 0,-13 -9.5,-22.5 Q 1005,128 992,128 l -704,0 q -13,0 -22.5,9.5 Q 256,147 256,160 l 0,64 q 0,13 9.5,22.5 9.5,9.5 22.5,9.5 l 704,0 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-22.5 z m 256,672 299,0 -299,-299 0,299 z m 512,128 0,672 q 0,40 -28,68 -28,28 -68,28 l -960,0 q -40,0 -68,-28 -28,-28 -28,-68 l 0,-160 -544,0 Q 56,1536 28,1508 0,1480 0,1440 L 0,96 Q 0,56 28,28 56,0 96,0 l 1088,0 q 40,0 68,28 28,28 28,68 l 0,328 q 21,13 36,28 l 408,408 q 28,28 48,76 20,48 20,88 z' } ], + [ 'clock-o', { viewBox: '0 0 1536 1536', path: 'm 896,416 v 448 q 0,14 -9,23 -9,9 -23,9 H 544 q -14,0 -23,-9 -9,-9 -9,-23 v -64 q 0,-14 9,-23 9,-9 23,-9 H 768 V 416 q 0,-14 9,-23 9,-9 23,-9 h 64 q 14,0 23,9 9,9 9,23 z m 416,352 q 0,-148 -73,-273 -73,-125 -198,-198 -125,-73 -273,-73 -148,0 -273,73 -125,73 -198,198 -73,125 -73,273 0,148 73,273 73,125 198,198 125,73 273,73 148,0 273,-73 125,-73 198,-198 73,-125 73,-273 z m 224,0 q 0,209 -103,385.5 Q 1330,1330 1153.5,1433 977,1536 768,1536 559,1536 382.5,1433 206,1330 103,1153.5 0,977 0,768 0,559 103,382.5 206,206 382.5,103 559,0 768,0 977,0 1153.5,103 1330,206 1433,382.5 1536,559 1536,768 Z' } ], + [ 'cloud-download', { viewBox: '0 0 1920 1408', path: 'm 1280,800 q 0,-14 -9,-23 -9,-9 -23,-9 l -224,0 0,-352 q 0,-13 -9.5,-22.5 Q 1005,384 992,384 l -192,0 q -13,0 -22.5,9.5 Q 768,403 768,416 l 0,352 -224,0 q -13,0 -22.5,9.5 -9.5,9.5 -9.5,22.5 0,14 9,23 l 352,352 q 9,9 23,9 14,0 23,-9 l 351,-351 q 10,-12 10,-24 z m 640,224 q 0,159 -112.5,271.5 Q 1695,1408 1536,1408 l -1088,0 Q 263,1408 131.5,1276.5 0,1145 0,960 0,830 70,720 140,610 258,555 256,525 256,512 256,300 406,150 556,0 768,0 q 156,0 285.5,87 129.5,87 188.5,231 71,-62 166,-62 106,0 181,75 75,75 75,181 0,76 -41,138 130,31 213.5,135.5 Q 1920,890 1920,1024 Z' } ], + [ 'cloud-upload', { viewBox: '0 0 1920 1408', path: 'm 1280,736 q 0,-14 -9,-23 L 919,361 q -9,-9 -23,-9 -14,0 -23,9 L 522,712 q -10,12 -10,24 0,14 9,23 9,9 23,9 l 224,0 0,352 q 0,13 9.5,22.5 9.5,9.5 22.5,9.5 l 192,0 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-22.5 l 0,-352 224,0 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-22.5 z m 640,288 q 0,159 -112.5,271.5 Q 1695,1408 1536,1408 l -1088,0 Q 263,1408 131.5,1276.5 0,1145 0,960 0,830 70,720 140,610 258,555 256,525 256,512 256,300 406,150 556,0 768,0 q 156,0 285.5,87 129.5,87 188.5,231 71,-62 166,-62 106,0 181,75 75,75 75,181 0,76 -41,138 130,31 213.5,135.5 Q 1920,890 1920,1024 Z' } ], + [ 'check', { viewBox: '0 0 1550 1188', path: 'm 1550,232 q 0,40 -28,68 l -724,724 -136,136 q -28,28 -68,28 -40,0 -68,-28 L 390,1024 28,662 Q 0,634 0,594 0,554 28,526 L 164,390 q 28,-28 68,-28 40,0 68,28 L 594,685 1250,28 q 28,-28 68,-28 40,0 68,28 l 136,136 q 28,28 28,68 z' } ], + [ 'code', { viewBox: '0 0 1830 1373', path: 'm 572,1125.5 -50,50 q -10,10 -23,10 -13,0 -23,-10 l -466,-466 q -10,-10 -10,-23 0,-13 10,-23 l 466,-466 q 10,-10 23,-10 13,0 23,10 l 50,50 q 10,10 10,23 0,13 -10,23 l -393,393 393,393 q 10,10 10,23 0,13 -10,23 z M 1163,58.476203 790,1349.4762 q -4,13 -15.5,19.5 -11.5,6.5 -23.5,2.5 l -62,-17 q -13,-4 -19.5,-15.5 -6.5,-11.5 -2.5,-24.5 L 1040,23.5 q 4,-13 15.5,-19.5 11.5,-6.5 23.5,-2.5 l 62,17 q 13,4 19.5,15.5 6.5,11.5 2.5,24.5 z m 657,651 -466,466 q -10,10 -23,10 -13,0 -23,-10 l -50,-50 q -10,-10 -10,-23 0,-13 10,-23 l 393,-393 -393,-393 q -10,-10 -10,-23 0,-13 10,-23 l 50,-50 q 10,-10 23,-10 13,0 23,10 l 466,466 q 10,10 10,23 0,13 -10,23 z' } ], + [ 'cog', { viewBox: '0 0 1536 1536', path: 'm 1024,768 q 0,-106 -75,-181 -75,-75 -181,-75 -106,0 -181,75 -75,75 -75,181 0,106 75,181 75,75 181,75 106,0 181,-75 75,-75 75,-181 z m 512,-109 0,222 q 0,12 -8,23 -8,11 -20,13 l -185,28 q -19,54 -39,91 35,50 107,138 10,12 10,25 0,13 -9,23 -27,37 -99,108 -72,71 -94,71 -12,0 -26,-9 l -138,-108 q -44,23 -91,38 -16,136 -29,186 -7,28 -36,28 l -222,0 q -14,0 -24.5,-8.5 Q 622,1519 621,1506 l -28,-184 q -49,-16 -90,-37 l -141,107 q -10,9 -25,9 -14,0 -25,-11 -126,-114 -165,-168 -7,-10 -7,-23 0,-12 8,-23 15,-21 51,-66.5 36,-45.5 54,-70.5 -27,-50 -41,-99 L 29,913 Q 16,911 8,900.5 0,890 0,877 L 0,655 q 0,-12 8,-23 8,-11 19,-13 l 186,-28 q 14,-46 39,-92 -40,-57 -107,-138 -10,-12 -10,-24 0,-10 9,-23 26,-36 98.5,-107.5 Q 315,135 337,135 q 13,0 26,10 L 501,252 Q 545,229 592,214 608,78 621,28 628,0 657,0 L 879,0 Q 893,0 903.5,8.5 914,17 915,30 l 28,184 q 49,16 90,37 l 142,-107 q 9,-9 24,-9 13,0 25,10 129,119 165,170 7,8 7,22 0,12 -8,23 -15,21 -51,66.5 -36,45.5 -54,70.5 26,50 41,98 l 183,28 q 13,2 21,12.5 8,10.5 8,23.5 z' } ], + [ 'cogs', { viewBox: '0 0 1920 1761', path: 'm 896,880 q 0,-106 -75,-181 -75,-75 -181,-75 -106,0 -181,75 -75,75 -75,181 0,106 75,181 75,75 181,75 106,0 181,-75 75,-75 75,-181 z m 768,512 q 0,-52 -38,-90 -38,-38 -90,-38 -52,0 -90,38 -38,38 -38,90 0,53 37.5,90.5 37.5,37.5 90.5,37.5 53,0 90.5,-37.5 37.5,-37.5 37.5,-90.5 z m 0,-1024 q 0,-52 -38,-90 -38,-38 -90,-38 -52,0 -90,38 -38,38 -38,90 0,53 37.5,90.5 37.5,37.5 90.5,37.5 53,0 90.5,-37.5 Q 1664,421 1664,368 Z m -384,421 v 185 q 0,10 -7,19.5 -7,9.5 -16,10.5 l -155,24 q -11,35 -32,76 34,48 90,115 7,11 7,20 0,12 -7,19 -23,30 -82.5,89.5 -59.5,59.5 -78.5,59.5 -11,0 -21,-7 l -115,-90 q -37,19 -77,31 -11,108 -23,155 -7,24 -30,24 H 547 q -11,0 -20,-7.5 -9,-7.5 -10,-17.5 l -23,-153 q -34,-10 -75,-31 l -118,89 q -7,7 -20,7 -11,0 -21,-8 -144,-133 -144,-160 0,-9 7,-19 10,-14 41,-53 31,-39 47,-61 -23,-44 -35,-82 L 24,1000 Q 14,999 7,990.5 0,982 0,971 V 786 Q 0,776 7,766.5 14,757 23,756 l 155,-24 q 11,-35 32,-76 -34,-48 -90,-115 -7,-11 -7,-20 0,-12 7,-20 22,-30 82,-89 60,-59 79,-59 11,0 21,7 l 115,90 q 34,-18 77,-32 11,-108 23,-154 7,-24 30,-24 h 186 q 11,0 20,7.5 9,7.5 10,17.5 l 23,153 q 34,10 75,31 l 118,-89 q 8,-7 20,-7 11,0 21,8 144,133 144,160 0,8 -7,19 -12,16 -42,54 -30,38 -45,60 23,48 34,82 l 152,23 q 10,2 17,10.5 7,8.5 7,19.5 z m 640,533 v 140 q 0,16 -149,31 -12,27 -30,52 51,113 51,138 0,4 -4,7 -122,71 -124,71 -8,0 -46,-47 -38,-47 -52,-68 -20,2 -30,2 -10,0 -30,-2 -14,21 -52,68 -38,47 -46,47 -2,0 -124,-71 -4,-3 -4,-7 0,-25 51,-138 -18,-25 -30,-52 -149,-15 -149,-31 v -140 q 0,-16 149,-31 13,-29 30,-52 -51,-113 -51,-138 0,-4 4,-7 4,-2 35,-20 31,-18 59,-34 28,-16 30,-16 8,0 46,46.5 38,46.5 52,67.5 20,-2 30,-2 10,0 30,2 51,-71 92,-112 l 6,-2 q 4,0 124,70 4,3 4,7 0,25 -51,138 17,23 30,52 149,15 149,31 z m 0,-1024 v 140 q 0,16 -149,31 -12,27 -30,52 51,113 51,138 0,4 -4,7 -122,71 -124,71 -8,0 -46,-47 -38,-47 -52,-68 -20,2 -30,2 -10,0 -30,-2 -14,21 -52,68 -38,47 -46,47 -2,0 -124,-71 -4,-3 -4,-7 0,-25 51,-138 -18,-25 -30,-52 -149,-15 -149,-31 V 298 q 0,-16 149,-31 13,-29 30,-52 -51,-113 -51,-138 0,-4 4,-7 4,-2 35,-20 31,-18 59,-34 28,-16 30,-16 8,0 46,46.5 38,46.5 52,67.5 20,-2 30,-2 10,0 30,2 51,-71 92,-112 l 6,-2 q 4,0 124,70 4,3 4,7 0,25 -51,138 17,23 30,52 149,15 149,31 z' } ], + [ 'comment-alt', { viewBox: '0 0 1792 1536', path: 'M 896,128 Q 692,128 514.5,197.5 337,267 232.5,385 128,503 128,640 128,752 199.5,853.5 271,955 401,1029 l 87,50 -27,96 q -24,91 -70,172 152,-63 275,-171 l 43,-38 57,6 q 69,8 130,8 204,0 381.5,-69.5 Q 1455,1013 1559.5,895 1664,777 1664,640 1664,503 1559.5,385 1455,267 1277.5,197.5 1100,128 896,128 Z m 896,512 q 0,174 -120,321.5 -120,147.5 -326,233 -206,85.5 -450,85.5 -70,0 -145,-8 -198,175 -460,242 -49,14 -114,22 h -5 q -15,0 -27,-10.5 -12,-10.5 -16,-27.5 v -1 q -3,-4 -0.5,-12 2.5,-8 2,-10 -0.5,-2 4.5,-9.5 l 6,-9 q 0,0 7,-8.5 7,-8.5 8,-9 7,-8 31,-34.5 24,-26.5 34.5,-38 10.5,-11.5 31,-39.5 20.5,-28 32.5,-51 12,-23 27,-59 15,-36 26,-76 Q 181,1052 90.5,921 0,790 0,640 0,466 120,318.5 240,171 446,85.5 652,0 896,0 q 244,0 450,85.5 206,85.5 326,233 120,147.5 120,321.5 z' } ], + [ 'double-angle-left', { viewBox: '0 0 966 998', path: 'm 582,915 q 0,13 -10,23 l -50,50 q -10,10 -23,10 -13,0 -23,-10 L 10,522 Q 0,512 0,499 0,486 10,476 L 476,10 q 10,-10 23,-10 13,0 23,10 l 50,50 q 10,10 10,23 0,13 -10,23 L 179,499 572,892 q 10,10 10,23 z m 384,0 q 0,13 -10,23 l -50,50 q -10,10 -23,10 -13,0 -23,-10 L 394,522 q -10,-10 -10,-23 0,-13 10,-23 L 860,10 q 10,-10 23,-10 13,0 23,10 l 50,50 q 10,10 10,23 0,13 -10,23 L 563,499 956,892 q 10,10 10,23 z' } ], + [ 'double-angle-up', { viewBox: '0 0 998 966', path: 'm 998,883 q 0,13 -10,23 l -50,50 q -10,10 -23,10 -13,0 -23,-10 L 499,563 106,956 Q 96,966 83,966 70,966 60,956 L 10,906 Q 0,896 0,883 0,870 10,860 L 476,394 q 10,-10 23,-10 13,0 23,10 l 466,466 q 10,10 10,23 z m 0,-384 q 0,13 -10,23 l -50,50 q -10,10 -23,10 -13,0 -23,-10 L 499,179 106,572 Q 96,582 83,582 70,582 60,572 L 10,522 Q 0,512 0,499 0,486 10,476 L 476,10 q 10,-10 23,-10 13,0 23,10 l 466,466 q 10,10 10,23 z' } ], + [ 'download-alt', { viewBox: '0 0 1664 1536', path: 'm 1280,1344 q 0,-26 -19,-45 -19,-19 -45,-19 -26,0 -45,19 -19,19 -19,45 0,26 19,45 19,19 45,19 26,0 45,-19 19,-19 19,-45 z m 256,0 q 0,-26 -19,-45 -19,-19 -45,-19 -26,0 -45,19 -19,19 -19,45 0,26 19,45 19,19 45,19 26,0 45,-19 19,-19 19,-45 z m 128,-224 v 320 q 0,40 -28,68 -28,28 -68,28 H 96 q -40,0 -68,-28 -28,-28 -28,-68 v -320 q 0,-40 28,-68 28,-28 68,-28 h 465 l 135,136 q 58,56 136,56 78,0 136,-56 l 136,-136 h 464 q 40,0 68,28 28,28 28,68 z M 1339,551 q 17,41 -14,70 l -448,448 q -18,19 -45,19 -27,0 -45,-19 L 339,621 q -31,-29 -14,-70 17,-39 59,-39 H 640 V 64 Q 640,38 659,19 678,0 704,0 h 256 q 26,0 45,19 19,19 19,45 v 448 h 256 q 42,0 59,39 z' } ], + [ 'eraser', { viewBox: '0 0 1920 1280', path: 'M 896,1152 1232,768 l -768,0 -336,384 768,0 z M 1909,75 q 15,34 9.5,71.5 Q 1913,184 1888,212 L 992,1236 q -38,44 -96,44 l -768,0 q -38,0 -69.5,-20.5 -31.5,-20.5 -47.5,-54.5 -15,-34 -9.5,-71.5 5.5,-37.5 30.5,-65.5 L 928,44 Q 966,0 1024,0 l 768,0 q 38,0 69.5,20.5 Q 1893,41 1909,75 Z' } ], + [ 'exclamation-triangle', { viewBox: '0 0 1794 1664', path: 'm 1025.0139,1375 0,-190 q 0,-14 -9.5,-23.5 -9.5,-9.5 -22.5,-9.5 l -192,0 q -13,0 -22.5,9.5 -9.5,9.5 -9.5,23.5 l 0,190 q 0,14 9.5,23.5 9.5,9.5 22.5,9.5 l 192,0 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-23.5 z m -2,-374 18,-459 q 0,-12 -10,-19 -13,-11 -24,-11 l -220,0 q -11,0 -24,11 -10,7 -10,21 l 17,457 q 0,10 10,16.5 10,6.5 24,6.5 l 185,0 q 14,0 23.5,-6.5 9.5,-6.5 10.5,-16.5 z m -14,-934 768,1408 q 35,63 -2,126 -17,29 -46.5,46 -29.5,17 -63.5,17 l -1536,0 q -34,0 -63.5,-17 -29.5,-17 -46.5,-46 -37,-63 -2,-126 L 785.01389,67 q 17,-31 47,-49 30,-18 65,-18 35,0 65,18 30,18 47,49 z' } ], + [ 'external-link', { viewBox: '0 0 1792 1536', path: 'm 1408,928 0,320 q 0,119 -84.5,203.5 Q 1239,1536 1120,1536 l -832,0 Q 169,1536 84.5,1451.5 0,1367 0,1248 L 0,416 Q 0,297 84.5,212.5 169,128 288,128 l 704,0 q 14,0 23,9 9,9 9,23 l 0,64 q 0,14 -9,23 -9,9 -23,9 l -704,0 q -66,0 -113,47 -47,47 -47,113 l 0,832 q 0,66 47,113 47,47 113,47 l 832,0 q 66,0 113,-47 47,-47 47,-113 l 0,-320 q 0,-14 9,-23 9,-9 23,-9 l 64,0 q 14,0 23,9 9,9 9,23 z m 384,-864 0,512 q 0,26 -19,45 -19,19 -45,19 -26,0 -45,-19 L 1507,445 855,1097 q -10,10 -23,10 -13,0 -23,-10 L 695,983 q -10,-10 -10,-23 0,-13 10,-23 L 1347,285 1171,109 q -19,-19 -19,-45 0,-26 19,-45 19,-19 45,-19 l 512,0 q 26,0 45,19 19,19 19,45 z' } ], + [ 'eye-dropper', { viewBox: '0 0 1792 1792', path: 'm 1698,94 q 94,94 94,226.5 0,132.5 -94,225.5 l -225,223 104,104 q 10,10 10,23 0,13 -10,23 l -210,210 q -10,10 -23,10 -13,0 -23,-10 l -105,-105 -603,603 q -37,37 -90,37 l -203,0 -256,128 -64,-64 128,-256 0,-203 q 0,-53 37,-90 L 768,576 663,471 q -10,-10 -10,-23 0,-13 10,-23 L 873,215 q 10,-10 23,-10 13,0 23,10 L 1023,319 1246,94 Q 1339,0 1471.5,0 1604,0 1698,94 Z M 512,1472 1088,896 896,704 l -576,576 0,192 192,0 z' } ], + [ 'eye-open', { viewBox: '0 0 1792 1152', path: 'm 1664,576 q -152,-236 -381,-353 61,104 61,225 0,185 -131.5,316.5 Q 1081,896 896,896 711,896 579.5,764.5 448,633 448,448 448,327 509,223 280,340 128,576 261,781 461.5,902.5 662,1024 896,1024 1130,1024 1330.5,902.5 1531,781 1664,576 Z M 944,192 q 0,-20 -14,-34 -14,-14 -34,-14 -125,0 -214.5,89.5 Q 592,323 592,448 q 0,20 14,34 14,14 34,14 20,0 34,-14 14,-14 14,-34 0,-86 61,-147 61,-61 147,-61 20,0 34,-14 14,-14 14,-34 z m 848,384 q 0,34 -20,69 -140,230 -376.5,368.5 Q 1159,1152 896,1152 633,1152 396.5,1013 160,874 20,645 0,610 0,576 0,542 20,507 160,278 396.5,139 633,0 896,0 q 263,0 499.5,139 236.5,139 376.5,368 20,35 20,69 z' } ], + [ 'eye-slash', { viewBox: '0 0 1792 1344', path: 'M 555,1047 633,906 Q 546,843 497,747 448,651 448,544 448,423 509,319 280,436 128,672 295,930 555,1047 Z M 944,288 q 0,-20 -14,-34 -14,-14 -34,-14 -125,0 -214.5,89.5 Q 592,419 592,544 q 0,20 14,34 14,14 34,14 20,0 34,-14 14,-14 14,-34 0,-86 61,-147 61,-61 147,-61 20,0 34,-14 14,-14 14,-34 z M 1307,97 q 0,7 -1,9 -106,189 -316,567 -210,378 -315,566 l -49,89 q -10,16 -28,16 -12,0 -134,-70 -16,-10 -16,-28 0,-12 44,-87 Q 349,1094 228.5,986 108,878 20,741 0,710 0,672 0,634 20,603 173,368 400,232 627,96 896,96 q 89,0 180,17 l 54,-97 q 10,-16 28,-16 5,0 18,6 13,6 31,15.5 18,9.5 33,18.5 15,9 31.5,18.5 16.5,9.5 19.5,11.5 16,10 16,27 z m 37,447 q 0,139 -79,253.5 Q 1186,912 1056,962 l 280,-502 q 8,45 8,84 z m 448,128 q 0,35 -20,69 -39,64 -109,145 -150,172 -347.5,267 -197.5,95 -419.5,95 l 74,-132 Q 1182,1098 1362.5,979 1543,860 1664,672 1549,493 1382,378 l 63,-112 q 95,64 182.5,153 87.5,89 144.5,184 20,34 20,69 z' } ], + [ 'files-o', { viewBox: '0 0 1792 1792', path: 'm 1696,384 q 40,0 68,28 28,28 28,68 l 0,1216 q 0,40 -28,68 -28,28 -68,28 l -960,0 q -40,0 -68,-28 -28,-28 -28,-68 l 0,-288 -544,0 Q 56,1408 28,1380 0,1352 0,1312 L 0,640 Q 0,600 20,552 40,504 68,476 L 476,68 Q 504,40 552,20 600,0 640,0 l 416,0 q 40,0 68,28 28,28 28,68 l 0,328 q 68,-40 128,-40 l 416,0 z m -544,213 -299,299 299,0 0,-299 z M 512,213 213,512 l 299,0 0,-299 z m 196,647 316,-316 0,-416 -384,0 0,416 q 0,40 -28,68 -28,28 -68,28 l -416,0 0,640 512,0 0,-256 q 0,-40 20,-88 20,-48 48,-76 z m 956,804 0,-1152 -384,0 0,416 q 0,40 -28,68 -28,28 -68,28 l -416,0 0,640 896,0 z' } ], + [ 'film', { viewBox: '0 0 1920 1664', path: 'm 384,1472 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 0,-384 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 0,-384 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 1024,768 0,-512 q 0,-26 -19,-45 -19,-19 -45,-19 l -768,0 q -26,0 -45,19 -19,19 -19,45 l 0,512 q 0,26 19,45 19,19 45,19 l 768,0 q 26,0 45,-19 19,-19 19,-45 z M 384,320 384,192 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 1408,1152 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m -384,-768 0,-512 q 0,-26 -19,-45 -19,-19 -45,-19 l -768,0 q -26,0 -45,19 -19,19 -19,45 l 0,512 q 0,26 19,45 19,19 45,19 l 768,0 q 26,0 45,-19 19,-19 19,-45 z m 384,384 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 0,-384 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 0,-384 0,-128 q 0,-26 -19,-45 -19,-19 -45,-19 l -128,0 q -26,0 -45,19 -19,19 -19,45 l 0,128 q 0,26 19,45 19,19 45,19 l 128,0 q 26,0 45,-19 19,-19 19,-45 z m 128,-160 0,1344 q 0,66 -47,113 -47,47 -113,47 l -1600,0 Q 94,1664 47,1617 0,1570 0,1504 L 0,160 Q 0,94 47,47 94,0 160,0 l 1600,0 q 66,0 113,47 47,47 47,113 z' } ], + [ 'filter', { viewBox: '0 0 1410 1408', path: 'm 1404.0208,39 q 17,41 -14,70 l -493,493 0,742 q 0,42 -39,59 -13,5 -25,5 -27,0 -45,-19 l -256,-256 q -19,-19 -19,-45 l 0,-486 L 20.020833,109 q -31,-29 -14,-70 Q 23.020833,0 65.020833,0 L 1345.0208,0 q 42,0 59,39 z' } ], + [ 'floppy-o', { viewBox: '0 0 1536 1536', path: 'm 384,1408 768,0 0,-384 -768,0 0,384 z m 896,0 128,0 0,-896 q 0,-14 -10,-38.5 Q 1388,449 1378,439 L 1097,158 q -10,-10 -34,-20 -24,-10 -39,-10 l 0,416 q 0,40 -28,68 -28,28 -68,28 l -576,0 q -40,0 -68,-28 -28,-28 -28,-68 l 0,-416 -128,0 0,1280 128,0 0,-416 q 0,-40 28,-68 28,-28 68,-28 l 832,0 q 40,0 68,28 28,28 28,68 l 0,416 z M 896,480 896,160 q 0,-13 -9.5,-22.5 Q 877,128 864,128 l -192,0 q -13,0 -22.5,9.5 Q 640,147 640,160 l 0,320 q 0,13 9.5,22.5 9.5,9.5 22.5,9.5 l 192,0 q 13,0 22.5,-9.5 Q 896,493 896,480 Z m 640,32 0,928 q 0,40 -28,68 -28,28 -68,28 L 96,1536 Q 56,1536 28,1508 0,1480 0,1440 L 0,96 Q 0,56 28,28 56,0 96,0 l 928,0 q 40,0 88,20 48,20 76,48 l 280,280 q 28,28 48,76 20,48 20,88 z' } ], + [ 'font', { viewBox: '0 0 1664 1536', path: 'M 725,431 555,881 q 33,0 136.5,2 103.5,2 160.5,2 19,0 57,-2 Q 822,630 725,431 Z M 0,1536 2,1457 q 23,-7 56,-12.5 33,-5.5 57,-10.5 24,-5 49.5,-14.5 25.5,-9.5 44.5,-29 19,-19.5 31,-50.5 L 477,724 757,0 l 75,0 53,0 q 8,14 11,21 l 205,480 q 33,78 106,257.5 73,179.5 114,274.5 15,34 58,144.5 43,110.5 72,168.5 20,45 35,57 19,15 88,29.5 69,14.5 84,20.5 6,38 6,57 0,5 -0.5,13.5 -0.5,8.5 -0.5,12.5 -63,0 -190,-8 -127,-8 -191,-8 -76,0 -215,7 -139,7 -178,8 0,-43 4,-78 l 131,-28 q 1,0 12.5,-2.5 11.5,-2.5 15.5,-3.5 4,-1 14.5,-4.5 10.5,-3.5 15,-6.5 4.5,-3 11,-8 6.5,-5 9,-11 2.5,-6 2.5,-14 0,-16 -31,-96.5 -31,-80.5 -72,-177.5 -41,-97 -42,-100 l -450,-2 q -26,58 -76.5,195.5 Q 382,1336 382,1361 q 0,22 14,37.5 14,15.5 43.5,24.5 29.5,9 48.5,13.5 19,4.5 57,8.5 38,4 41,4 1,19 1,58 0,9 -2,27 -58,0 -174.5,-10 -116.5,-10 -174.5,-10 -8,0 -26.5,4 -18.5,4 -21.5,4 -80,14 -188,14 z' } ], + [ 'home', { viewBox: '0 0 1612 1283', path: 'm 1382.1111,739 v 480 q 0,26 -19,45 -19,19 -45,19 H 934.11111 V 899 h -256 v 384 h -384 q -26,0 -45,-19 -19,-19 -19,-45 V 739 q 0,-1 0.5,-3 0.5,-2 0.5,-3 l 575,-474 574.99999,474 q 1,2 1,6 z m 223,-69 -62,74 q -8,9 -21,11 h -3 q -13,0 -21,-7 l -691.99999,-577 -692,577 q -12,8 -23.999999,7 -13,-2 -21,-11 L 7.1111111,670 Q -0.88888889,660 0.11111111,646.5 1.1111111,633 11.111111,625 L 730.11111,26 q 32,-26 76,-26 44,0 76,26 L 1126.1111,230 V 35 q 0,-14 9,-23 9,-9 23,-9 h 192 q 14,0 23,9 9,9 9,23 v 408 l 219,182 q 10,8 11,21.5 1,13.5 -7,23.5 z' } ], + [ 'info-circle', { viewBox: '0 0 1536 1536', path: 'm 1024,1248 0,-160 q 0,-14 -9,-23 -9,-9 -23,-9 l -96,0 0,-512 q 0,-14 -9,-23 -9,-9 -23,-9 l -320,0 q -14,0 -23,9 -9,9 -9,23 l 0,160 q 0,14 9,23 9,9 23,9 l 96,0 0,320 -96,0 q -14,0 -23,9 -9,9 -9,23 l 0,160 q 0,14 9,23 9,9 23,9 l 448,0 q 14,0 23,-9 9,-9 9,-23 z M 896,352 896,192 q 0,-14 -9,-23 -9,-9 -23,-9 l -192,0 q -14,0 -23,9 -9,9 -9,23 l 0,160 q 0,14 9,23 9,9 23,9 l 192,0 q 14,0 23,-9 9,-9 9,-23 z m 640,416 q 0,209 -103,385.5 Q 1330,1330 1153.5,1433 977,1536 768,1536 559,1536 382.5,1433 206,1330 103,1153.5 0,977 0,768 0,559 103,382.5 206,206 382.5,103 559,0 768,0 977,0 1153.5,103 1330,206 1433,382.5 1536,559 1536,768 Z' } ], + [ 'list-alt', { viewBox: '0 0 1792 1408', path: 'm 384,1056 0,64 q 0,13 -9.5,22.5 -9.5,9.5 -22.5,9.5 l -64,0 q -13,0 -22.5,-9.5 Q 256,1133 256,1120 l 0,-64 q 0,-13 9.5,-22.5 9.5,-9.5 22.5,-9.5 l 64,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 0,-256 0,64 q 0,13 -9.5,22.5 Q 365,896 352,896 l -64,0 q -13,0 -22.5,-9.5 Q 256,877 256,864 l 0,-64 q 0,-13 9.5,-22.5 Q 275,768 288,768 l 64,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 0,-256 0,64 q 0,13 -9.5,22.5 Q 365,640 352,640 l -64,0 q -13,0 -22.5,-9.5 Q 256,621 256,608 l 0,-64 q 0,-13 9.5,-22.5 Q 275,512 288,512 l 64,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 1152,512 0,64 q 0,13 -9.5,22.5 -9.5,9.5 -22.5,9.5 l -960,0 q -13,0 -22.5,-9.5 Q 512,1133 512,1120 l 0,-64 q 0,-13 9.5,-22.5 9.5,-9.5 22.5,-9.5 l 960,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 0,-256 0,64 q 0,13 -9.5,22.5 -9.5,9.5 -22.5,9.5 l -960,0 q -13,0 -22.5,-9.5 Q 512,877 512,864 l 0,-64 q 0,-13 9.5,-22.5 Q 531,768 544,768 l 960,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 0,-256 0,64 q 0,13 -9.5,22.5 -9.5,9.5 -22.5,9.5 l -960,0 q -13,0 -22.5,-9.5 Q 512,621 512,608 l 0,-64 q 0,-13 9.5,-22.5 Q 531,512 544,512 l 960,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 128,704 0,-832 q 0,-13 -9.5,-22.5 Q 1645,384 1632,384 l -1472,0 q -13,0 -22.5,9.5 Q 128,403 128,416 l 0,832 q 0,13 9.5,22.5 9.5,9.5 22.5,9.5 l 1472,0 q 13,0 22.5,-9.5 9.5,-9.5 9.5,-22.5 z m 128,-1088 0,1088 q 0,66 -47,113 -47,47 -113,47 l -1472,0 Q 94,1408 47,1361 0,1314 0,1248 L 0,160 Q 0,94 47,47 94,0 160,0 l 1472,0 q 66,0 113,47 47,47 47,113 z' } ], + [ 'lock', { viewBox: '0 0 1152 1408', path: 'm 320,640 512,0 0,-192 q 0,-106 -75,-181 -75,-75 -181,-75 -106,0 -181,75 -75,75 -75,181 l 0,192 z m 832,96 0,576 q 0,40 -28,68 -28,28 -68,28 l -960,0 Q 56,1408 28,1380 0,1352 0,1312 L 0,736 q 0,-40 28,-68 28,-28 68,-28 l 32,0 0,-192 Q 128,264 260,132 392,0 576,0 q 184,0 316,132 132,132 132,316 l 0,192 32,0 q 40,0 68,28 28,28 28,68 z' } ], + [ 'magic', { viewBox: '0 0 1637 1637', path: 'M 1163,581 1456,288 1349,181 1056,474 Z m 447,-293 q 0,27 -18,45 L 306,1619 q -18,18 -45,18 -27,0 -45,-18 L 18,1421 Q 0,1403 0,1376 0,1349 18,1331 L 1304,45 q 18,-18 45,-18 27,0 45,18 l 198,198 q 18,18 18,45 z M 259,98 l 98,30 -98,30 -30,98 -30,-98 -98,-30 98,-30 30,-98 z M 609,260 805,320 609,380 549,576 489,380 293,320 489,260 549,64 Z m 930,478 98,30 -98,30 -30,98 -30,-98 -98,-30 98,-30 30,-98 z M 899,98 l 98,30 -98,30 -30,98 -30,-98 -98,-30 98,-30 30,-98 z' } ], + [ 'pause-circle-o', { viewBox: '0 0 1536 1536', path: 'M 768,0 Q 977,0 1153.5,103 1330,206 1433,382.5 1536,559 1536,768 1536,977 1433,1153.5 1330,1330 1153.5,1433 977,1536 768,1536 559,1536 382.5,1433 206,1330 103,1153.5 0,977 0,768 0,559 103,382.5 206,206 382.5,103 559,0 768,0 Z m 0,1312 q 148,0 273,-73 125,-73 198,-198 73,-125 73,-273 0,-148 -73,-273 -73,-125 -198,-198 -125,-73 -273,-73 -148,0 -273,73 -125,73 -198,198 -73,125 -73,273 0,148 73,273 73,125 198,198 125,73 273,73 z m 96,-224 q -14,0 -23,-9 -9,-9 -9,-23 l 0,-576 q 0,-14 9,-23 9,-9 23,-9 l 192,0 q 14,0 23,9 9,9 9,23 l 0,576 q 0,14 -9,23 -9,9 -23,9 l -192,0 z m -384,0 q -14,0 -23,-9 -9,-9 -9,-23 l 0,-576 q 0,-14 9,-23 9,-9 23,-9 l 192,0 q 14,0 23,9 9,9 9,23 l 0,576 q 0,14 -9,23 -9,9 -23,9 l -192,0 z' } ], + [ 'play-circle-o', { viewBox: '0 0 1536 1536', path: 'm 1184,768 q 0,37 -32,55 l -544,320 q -15,9 -32,9 -16,0 -32,-8 -32,-19 -32,-56 l 0,-640 q 0,-37 32,-56 33,-18 64,1 l 544,320 q 32,18 32,55 z m 128,0 q 0,-148 -73,-273 -73,-125 -198,-198 -125,-73 -273,-73 -148,0 -273,73 -125,73 -198,198 -73,125 -73,273 0,148 73,273 73,125 198,198 125,73 273,73 148,0 273,-73 125,-73 198,-198 73,-125 73,-273 z m 224,0 q 0,209 -103,385.5 Q 1330,1330 1153.5,1433 977,1536 768,1536 559,1536 382.5,1433 206,1330 103,1153.5 0,977 0,768 0,559 103,382.5 206,206 382.5,103 559,0 768,0 977,0 1153.5,103 1330,206 1433,382.5 1536,559 1536,768 Z' } ], + [ 'plus', { viewBox: '0 0 1408 1408', path: 'm 1408,608 0,192 q 0,40 -28,68 -28,28 -68,28 l -416,0 0,416 q 0,40 -28,68 -28,28 -68,28 l -192,0 q -40,0 -68,-28 -28,-28 -28,-68 l 0,-416 -416,0 Q 56,896 28,868 0,840 0,800 L 0,608 q 0,-40 28,-68 28,-28 68,-28 l 416,0 0,-416 Q 512,56 540,28 568,0 608,0 l 192,0 q 40,0 68,28 28,28 28,68 l 0,416 416,0 q 40,0 68,28 28,28 28,68 z' } ], + [ 'power-off', { viewBox: '0 0 1536 1664', path: 'm 1536,896 q 0,156 -61,298 -61,142 -164,245 -103,103 -245,164 -142,61 -298,61 -156,0 -298,-61 Q 328,1542 225,1439 122,1336 61,1194 0,1052 0,896 0,714 80.5,553 161,392 307,283 q 43,-32 95.5,-25 52.5,7 83.5,50 32,42 24.5,94.5 Q 503,455 461,487 363,561 309.5,668 256,775 256,896 q 0,104 40.5,198.5 40.5,94.5 109.5,163.5 69,69 163.5,109.5 94.5,40.5 198.5,40.5 104,0 198.5,-40.5 Q 1061,1327 1130,1258 1199,1189 1239.5,1094.5 1280,1000 1280,896 1280,775 1226.5,668 1173,561 1075,487 1033,455 1025.5,402.5 1018,350 1050,308 q 31,-43 84,-50 53,-7 95,25 146,109 226.5,270 80.5,161 80.5,343 z m -640,-768 0,640 q 0,52 -38,90 -38,38 -90,38 -52,0 -90,-38 -38,-38 -38,-90 l 0,-640 q 0,-52 38,-90 38,-38 90,-38 52,0 90,38 38,38 38,90 z' } ], + [ 'question-circle', { viewBox: '0 0 1536 1536', path: 'm 896,1248 v -192 q 0,-14 -9,-23 -9,-9 -23,-9 H 672 q -14,0 -23,9 -9,9 -9,23 v 192 q 0,14 9,23 9,9 23,9 h 192 q 14,0 23,-9 9,-9 9,-23 z m 256,-672 q 0,-88 -55.5,-163 Q 1041,338 958,297 875,256 788,256 q -243,0 -371,213 -15,24 8,42 l 132,100 q 7,6 19,6 16,0 25,-12 53,-68 86,-92 34,-24 86,-24 48,0 85.5,26 37.5,26 37.5,59 0,38 -20,61 -20,23 -68,45 -63,28 -115.5,86.5 Q 640,825 640,892 v 36 q 0,14 9,23 9,9 23,9 h 192 q 14,0 23,-9 9,-9 9,-23 0,-19 21.5,-49.5 Q 939,848 972,829 q 32,-18 49,-28.5 17,-10.5 46,-35 29,-24.5 44.5,-48 15.5,-23.5 28,-60.5 12.5,-37 12.5,-81 z m 384,192 q 0,209 -103,385.5 Q 1330,1330 1153.5,1433 977,1536 768,1536 559,1536 382.5,1433 206,1330 103,1153.5 0,977 0,768 0,559 103,382.5 206,206 382.5,103 559,0 768,0 977,0 1153.5,103 1330,206 1433,382.5 1536,559 1536,768 Z' } ], + [ 'refresh', { viewBox: '0 0 1536 1536', path: 'm 1511,928 q 0,5 -1,7 -64,268 -268,434.5 Q 1038,1536 764,1536 618,1536 481.5,1481 345,1426 238,1324 l -129,129 q -19,19 -45,19 -26,0 -45,-19 Q 0,1434 0,1408 L 0,960 q 0,-26 19,-45 19,-19 45,-19 l 448,0 q 26,0 45,19 19,19 19,45 0,26 -19,45 l -137,137 q 71,66 161,102 90,36 187,36 134,0 250,-65 116,-65 186,-179 11,-17 53,-117 8,-23 30,-23 l 192,0 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 25,-800 0,448 q 0,26 -19,45 -19,19 -45,19 l -448,0 q -26,0 -45,-19 -19,-19 -19,-45 0,-26 19,-45 L 1117,393 Q 969,256 768,256 q -134,0 -250,65 -116,65 -186,179 -11,17 -53,117 -8,23 -30,23 L 50,640 Q 37,640 27.5,630.5 18,621 18,608 l 0,-7 Q 83,333 288,166.5 493,0 768,0 914,0 1052,55.5 1190,111 1297,212 L 1427,83 q 19,-19 45,-19 26,0 45,19 19,19 19,45 z' } ], + [ 'save', { viewBox: '0 0 1536 1536', path: 'm 384,1408 h 768 V 1024 H 384 Z m 896,0 h 128 V 512 q 0,-14 -10,-38.5 Q 1388,449 1378,439 L 1097,158 q -10,-10 -34,-20 -24,-10 -39,-10 v 416 q 0,40 -28,68 -28,28 -68,28 H 352 q -40,0 -68,-28 -28,-28 -28,-68 V 128 H 128 V 1408 H 256 V 992 q 0,-40 28,-68 28,-28 68,-28 h 832 q 40,0 68,28 28,28 28,68 z M 896,480 V 160 q 0,-13 -9.5,-22.5 Q 877,128 864,128 H 672 q -13,0 -22.5,9.5 Q 640,147 640,160 v 320 q 0,13 9.5,22.5 9.5,9.5 22.5,9.5 h 192 q 13,0 22.5,-9.5 Q 896,493 896,480 Z m 640,32 v 928 q 0,40 -28,68 -28,28 -68,28 H 96 Q 56,1536 28,1508 0,1480 0,1440 V 96 Q 0,56 28,28 56,0 96,0 h 928 q 40,0 88,20 48,20 76,48 l 280,280 q 28,28 48,76 20,48 20,88 z' } ], + [ 'search', { viewBox: '0 0 1664 1664', path: 'M 1152,704 Q 1152,519 1020.5,387.5 889,256 704,256 519,256 387.5,387.5 256,519 256,704 256,889 387.5,1020.5 519,1152 704,1152 889,1152 1020.5,1020.5 1152,889 1152,704 Z m 512,832 q 0,52 -38,90 -38,38 -90,38 -54,0 -90,-38 L 1103,1284 Q 924,1408 704,1408 561,1408 430.5,1352.5 300,1297 205.5,1202.5 111,1108 55.5,977.5 0,847 0,704 0,561 55.5,430.5 111,300 205.5,205.5 300,111 430.5,55.5 561,0 704,0 q 143,0 273.5,55.5 130.5,55.5 225,150 94.5,94.5 150,225 55.5,130.5 55.5,273.5 0,220 -124,399 l 343,343 q 37,37 37,90 z' } ], + [ 'sliders', { viewBox: '0 0 1536 1408', path: 'm 352,1152 0,128 -352,0 0,-128 352,0 z m 352,-128 q 26,0 45,19 19,19 19,45 l 0,256 q 0,26 -19,45 -19,19 -45,19 l -256,0 q -26,0 -45,-19 -19,-19 -19,-45 l 0,-256 q 0,-26 19,-45 19,-19 45,-19 l 256,0 z m 160,-384 0,128 -864,0 0,-128 864,0 z m -640,-512 0,128 -224,0 0,-128 224,0 z m 1312,1024 0,128 -736,0 0,-128 736,0 z M 576,0 q 26,0 45,19 19,19 19,45 l 0,256 q 0,26 -19,45 -19,19 -45,19 l -256,0 q -26,0 -45,-19 -19,-19 -19,-45 L 256,64 Q 256,38 275,19 294,0 320,0 l 256,0 z m 640,512 q 26,0 45,19 19,19 19,45 l 0,256 q 0,26 -19,45 -19,19 -45,19 l -256,0 q -26,0 -45,-19 -19,-19 -19,-45 l 0,-256 q 0,-26 19,-45 19,-19 45,-19 l 256,0 z m 320,128 0,128 -224,0 0,-128 224,0 z m 0,-512 0,128 -864,0 0,-128 864,0 z' } ], + [ 'spinner', { viewBox: '0 0 1664 1728', path: 'm 462,1394 q 0,53 -37.5,90.5 -37.5,37.5 -90.5,37.5 -52,0 -90,-38 -38,-38 -38,-90 0,-53 37.5,-90.5 37.5,-37.5 90.5,-37.5 53,0 90.5,37.5 37.5,37.5 37.5,90.5 z m 498,206 q 0,53 -37.5,90.5 Q 885,1728 832,1728 779,1728 741.5,1690.5 704,1653 704,1600 q 0,-53 37.5,-90.5 37.5,-37.5 90.5,-37.5 53,0 90.5,37.5 Q 960,1547 960,1600 Z M 256,896 q 0,53 -37.5,90.5 Q 181,1024 128,1024 75,1024 37.5,986.5 0,949 0,896 0,843 37.5,805.5 75,768 128,768 q 53,0 90.5,37.5 Q 256,843 256,896 Z m 1202,498 q 0,52 -38,90 -38,38 -90,38 -53,0 -90.5,-37.5 -37.5,-37.5 -37.5,-90.5 0,-53 37.5,-90.5 37.5,-37.5 90.5,-37.5 53,0 90.5,37.5 37.5,37.5 37.5,90.5 z M 494,398 q 0,66 -47,113 -47,47 -113,47 -66,0 -113,-47 -47,-47 -47,-113 0,-66 47,-113 47,-47 113,-47 66,0 113,47 47,47 47,113 z m 1170,498 q 0,53 -37.5,90.5 -37.5,37.5 -90.5,37.5 -53,0 -90.5,-37.5 Q 1408,949 1408,896 q 0,-53 37.5,-90.5 37.5,-37.5 90.5,-37.5 53,0 90.5,37.5 Q 1664,843 1664,896 Z M 1024,192 q 0,80 -56,136 -56,56 -136,56 -80,0 -136,-56 -56,-56 -56,-136 0,-80 56,-136 56,-56 136,-56 80,0 136,56 56,56 56,136 z m 530,206 q 0,93 -66,158.5 -66,65.5 -158,65.5 -93,0 -158.5,-65.5 Q 1106,491 1106,398 q 0,-92 65.5,-158 65.5,-66 158.5,-66 92,0 158,66 66,66 66,158 z' } ], + [ 'sun', { viewBox: '0 0 1708 1792', path: 'm 1706,1172.5 c -3,10 -11,17 -20,20 l -292,96 v 306 c 0,10 -5,20 -13,26 -9,6 -19,8 -29,4 l -292,-94 -180,248 c -6,8 -16,13 -26,13 -10,0 -20,-5 -26,-13 l -180,-248 -292,94 c -10,4 -20,2 -29,-4 -8,-6 -13,-16 -13,-26 v -306 l -292,-96 c -9,-3 -17,-10 -20,-20 -3,-10 -2,-21 4,-29 l 180,-248 -180,-248 c -6,-9 -7,-19 -4,-29 3,-10 11,-17 20,-20 l 292,-96 v -306 c 0,-10 5,-20 13,-26 9,-6 19,-8 29,-4 l 292,94 180,-248 c 12,-16 40,-16 52,0 L 1060,260.5 l 292,-94 c 10,-4 20,-2 29,4 8,6 13,16 13,26 v 306 l 292,96 c 9,3 17,10 20,20 3,10 2,20 -4,29 l -180,248 180,248 c 6,8 7,19 4,29 z' } ], + [ 'sun-o', { viewBox: '0 0 1708 1792', path: 'm 1430,895.5 c 0,-318 -258,-576 -576,-576 -318,0 -576,258 -576,576 0,318 258,576 576,576 C 1172,1471.5 1430,1213.5 1430,895.5 Z m 276,277 c -3,10 -11,17 -20,20 l -292,96 v 306 c 0,10 -5,20 -13,26 -9,6 -19,8 -29,4 l -292,-94 -180,248 c -6,8 -16,13 -26,13 -10,0 -20,-5 -26,-13 l -180,-248 -292,94 c -10,4 -20,2 -29,-4 -8,-6 -13,-16 -13,-26 v -306 l -292,-96 c -9,-3 -17,-10 -20,-20 -3,-10 -2,-21 4,-29 l 180,-248 -180,-248 c -6,-9 -7,-19 -4,-29 3,-10 11,-17 20,-20 l 292,-96 v -306 c 0,-10 5,-20 13,-26 9,-6 19,-8 29,-4 l 292,94 180,-248 c 12,-16 40,-16 52,0 L 1060,260.5 l 292,-94 c 10,-4 20,-2 29,4 8,6 13,16 13,26 v 306 l 292,96 c 9,3 17,10 20,20 3,10 2,20 -4,29 l -180,248 180,248 c 6,8 7,19 4,29 z' } ], + [ 'terminal', { viewBox: '0 0 1651 1075', path: 'm572 522-466 466q-10 10-23 10t-23-10l-50-50q-10-10-10-23t10-23l393-393-393-393q-10-10-10-23t10-23l50-50q10-10 23-10t23 10l466 466q10 10 10 23t-10 23zm1079 457v64q0 14-9 23t-23 9h-960q-14 0-23-9t-9-23v-64q0-14 9-23t23-9h960q14 0 23 9t9 23z' } ], + [ 'times', { viewBox: '0 0 1188 1188', path: 'm 1188,956 q 0,40 -28,68 l -136,136 q -28,28 -68,28 -40,0 -68,-28 L 594,866 300,1160 q -28,28 -68,28 -40,0 -68,-28 L 28,1024 Q 0,996 0,956 0,916 28,888 L 322,594 28,300 Q 0,272 0,232 0,192 28,164 L 164,28 Q 192,0 232,0 272,0 300,28 L 594,322 888,28 q 28,-28 68,-28 40,0 68,28 l 136,136 q 28,28 28,68 0,40 -28,68 l -294,294 294,294 q 28,28 28,68 z' } ], + [ 'trash-o', { viewBox: '0 0 1408 1536', path: 'm 512,608 v 576 q 0,14 -9,23 -9,9 -23,9 h -64 q -14,0 -23,-9 -9,-9 -9,-23 V 608 q 0,-14 9,-23 9,-9 23,-9 h 64 q 14,0 23,9 9,9 9,23 z m 256,0 v 576 q 0,14 -9,23 -9,9 -23,9 h -64 q -14,0 -23,-9 -9,-9 -9,-23 V 608 q 0,-14 9,-23 9,-9 23,-9 h 64 q 14,0 23,9 9,9 9,23 z m 256,0 v 576 q 0,14 -9,23 -9,9 -23,9 h -64 q -14,0 -23,-9 -9,-9 -9,-23 V 608 q 0,-14 9,-23 9,-9 23,-9 h 64 q 14,0 23,9 9,9 9,23 z m 128,724 V 384 H 256 v 948 q 0,22 7,40.5 7,18.5 14.5,27 7.5,8.5 10.5,8.5 h 832 q 3,0 10.5,-8.5 7.5,-8.5 14.5,-27 7,-18.5 7,-40.5 z M 480,256 H 928 L 880,139 q -7,-9 -17,-11 H 546 q -10,2 -17,11 z m 928,32 v 64 q 0,14 -9,23 -9,9 -23,9 h -96 v 948 q 0,83 -47,143.5 -47,60.5 -113,60.5 H 288 q -66,0 -113,-58.5 Q 128,1419 128,1336 V 384 H 32 Q 18,384 9,375 0,366 0,352 v -64 q 0,-14 9,-23 9,-9 23,-9 H 341 L 411,89 Q 426,52 465,26 504,0 544,0 h 320 q 40,0 79,26 39,26 54,63 l 70,167 h 309 q 14,0 23,9 9,9 9,23 z' } ], + [ 'undo', { viewBox: '0 0 1536 1536', path: 'm 1536,768 q 0,156 -61,298 -61,142 -164,245 -103,103 -245,164 -142,61 -298,61 -172,0 -327,-72.5 Q 286,1391 177,1259 q -7,-10 -6.5,-22.5 0.5,-12.5 8.5,-20.5 l 137,-138 q 10,-9 25,-9 16,2 23,12 73,95 179,147 106,52 225,52 104,0 198.5,-40.5 Q 1061,1199 1130,1130 1199,1061 1239.5,966.5 1280,872 1280,768 1280,664 1239.5,569.5 1199,475 1130,406 1061,337 966.5,296.5 872,256 768,256 670,256 580,291.5 490,327 420,393 l 137,138 q 31,30 14,69 -17,40 -59,40 H 64 Q 38,640 19,621 0,602 0,576 V 128 Q 0,86 40,69 79,52 109,83 L 239,212 Q 346,111 483.5,55.5 621,0 768,0 q 156,0 298,61 142,61 245,164 103,103 164,245 61,142 61,298 z' } ], + [ 'unlink', { viewBox: '0 0 1664 1664', path: 'm 439,1271 -256,256 q -11,9 -23,9 -12,0 -23,-9 -9,-10 -9,-23 0,-13 9,-23 l 256,-256 q 10,-9 23,-9 13,0 23,9 9,10 9,23 0,13 -9,23 z m 169,41 v 320 q 0,14 -9,23 -9,9 -23,9 -14,0 -23,-9 -9,-9 -9,-23 v -320 q 0,-14 9,-23 9,-9 23,-9 14,0 23,9 9,9 9,23 z M 384,1088 q 0,14 -9,23 -9,9 -23,9 H 32 q -14,0 -23,-9 -9,-9 -9,-23 0,-14 9,-23 9,-9 23,-9 h 320 q 14,0 23,9 9,9 9,23 z m 1264,128 q 0,120 -85,203 l -147,146 q -83,83 -203,83 -121,0 -204,-85 L 675,1228 q -21,-21 -42,-56 l 239,-18 273,274 q 27,27 68,27.5 41,0.5 68,-26.5 l 147,-146 q 28,-28 28,-67 0,-40 -28,-68 l -274,-275 18,-239 q 35,21 56,42 l 336,336 q 84,86 84,204 z M 1031,492 792,510 519,236 q -28,-28 -68,-28 -39,0 -68,27 L 236,381 q -28,28 -28,67 0,40 28,68 l 274,274 -18,240 q -35,-21 -56,-42 L 100,652 Q 16,566 16,448 16,328 101,245 L 248,99 q 83,-83 203,-83 121,0 204,85 l 334,335 q 21,21 42,56 z m 633,84 q 0,14 -9,23 -9,9 -23,9 h -320 q -14,0 -23,-9 -9,-9 -9,-23 0,-14 9,-23 9,-9 23,-9 h 320 q 14,0 23,9 9,9 9,23 z M 1120,32 v 320 q 0,14 -9,23 -9,9 -23,9 -14,0 -23,-9 -9,-9 -9,-23 V 32 q 0,-14 9,-23 9,-9 23,-9 14,0 23,9 9,9 9,23 z m 407,151 -256,256 q -11,9 -23,9 -12,0 -23,-9 -9,-10 -9,-23 0,-13 9,-23 l 256,-256 q 10,-9 23,-9 13,0 23,9 9,10 9,23 0,13 -9,23 z' } ], + [ 'unlock-alt', { viewBox: '0 0 1152 1536', path: 'm 1056,768 q 40,0 68,28 28,28 28,68 v 576 q 0,40 -28,68 -28,28 -68,28 H 96 Q 56,1536 28,1508 0,1480 0,1440 V 864 q 0,-40 28,-68 28,-28 68,-28 h 32 V 448 Q 128,263 259.5,131.5 391,0 576,0 761,0 892.5,131.5 1024,263 1024,448 q 0,26 -19,45 -19,19 -45,19 h -64 q -26,0 -45,-19 -19,-19 -19,-45 0,-106 -75,-181 -75,-75 -181,-75 -106,0 -181,75 -75,75 -75,181 v 320 z' } ], + [ 'upload-alt', { viewBox: '0 0 1664 1600', path: 'm 1280,1408 q 0,-26 -19,-45 -19,-19 -45,-19 -26,0 -45,19 -19,19 -19,45 0,26 19,45 19,19 45,19 26,0 45,-19 19,-19 19,-45 z m 256,0 q 0,-26 -19,-45 -19,-19 -45,-19 -26,0 -45,19 -19,19 -19,45 0,26 19,45 19,19 45,19 26,0 45,-19 19,-19 19,-45 z m 128,-224 v 320 q 0,40 -28,68 -28,28 -68,28 H 96 q -40,0 -68,-28 -28,-28 -28,-68 v -320 q 0,-40 28,-68 28,-28 68,-28 h 427 q 21,56 70.5,92 49.5,36 110.5,36 h 256 q 61,0 110.5,-36 49.5,-36 70.5,-92 h 427 q 40,0 68,28 28,28 28,68 z M 1339,536 q -17,40 -59,40 h -256 v 448 q 0,26 -19,45 -19,19 -45,19 H 704 q -26,0 -45,-19 -19,-19 -19,-45 V 576 H 384 q -42,0 -59,-40 -17,-39 14,-69 L 787,19 q 18,-19 45,-19 27,0 45,19 l 448,448 q 31,30 14,69 z' } ], + [ 'volume-up', { viewBox: '0 0 1664 1422', path: 'm 768,167 v 1088 c 0,35 -29,64 -64,64 -17,0 -33,-7 -45,-19 L 326,967 H 64 C 29,967 0,938 0,903 V 519 C 0,484 29,455 64,455 H 326 L 659,122 c 12,-12 28,-19 45,-19 35,0 64,29 64,64 z m 384,544 c 0,100 -61,197 -155,235 -8,4 -17,5 -25,5 -35,0 -64,-28 -64,-64 0,-76 116,-55 116,-176 0,-121 -116,-100 -116,-176 0,-36 29,-64 64,-64 8,0 17,1 25,5 94,37 155,135 155,235 z m 256,0 c 0,203 -122,392 -310,471 -8,3 -17,5 -25,5 -36,0 -65,-29 -65,-64 0,-28 16,-47 39,-59 27,-14 52,-26 76,-44 99,-72 157,-187 157,-309 0,-122 -58,-237 -157,-309 -24,-18 -49,-30 -76,-44 -23,-12 -39,-31 -39,-59 0,-35 29,-64 64,-64 9,0 18,2 26,5 188,79 310,268 310,471 z m 256,0 c 0,307 -183,585 -465,706 -8,3 -17,5 -26,5 -35,0 -64,-29 -64,-64 0,-29 15,-45 39,-59 14,-8 30,-13 45,-21 28,-15 56,-32 82,-51 164,-121 261,-312 261,-516 0,-204 -97,-395 -261,-516 -26,-19 -54,-36 -82,-51 -15,-8 -31,-13 -45,-21 -24,-14 -39,-30 -39,-59 0,-35 29,-64 64,-64 9,0 18,2 26,5 282,121 465,399 465,706 z' } ], + [ 'zoom-in', { viewBox: '0 0 1664 1664', path: 'm 1024,672 v 64 q 0,13 -9.5,22.5 Q 1005,768 992,768 H 768 v 224 q 0,13 -9.5,22.5 -9.5,9.5 -22.5,9.5 h -64 q -13,0 -22.5,-9.5 Q 640,1005 640,992 V 768 H 416 q -13,0 -22.5,-9.5 Q 384,749 384,736 v -64 q 0,-13 9.5,-22.5 Q 403,640 416,640 H 640 V 416 q 0,-13 9.5,-22.5 Q 659,384 672,384 h 64 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 v 224 h 224 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 128,32 Q 1152,519 1020.5,387.5 889,256 704,256 519,256 387.5,387.5 256,519 256,704 256,889 387.5,1020.5 519,1152 704,1152 889,1152 1020.5,1020.5 1152,889 1152,704 Z m 512,832 q 0,53 -37.5,90.5 -37.5,37.5 -90.5,37.5 -54,0 -90,-38 L 1103,1284 Q 924,1408 704,1408 561,1408 430.5,1352.5 300,1297 205.5,1202.5 111,1108 55.5,977.5 0,847 0,704 0,561 55.5,430.5 111,300 205.5,205.5 300,111 430.5,55.5 561,0 704,0 q 143,0 273.5,55.5 130.5,55.5 225,150 94.5,94.5 150,225 55.5,130.5 55.5,273.5 0,220 -124,399 l 343,343 q 37,37 37,90 z' } ], + [ 'zoom-out', { viewBox: '0 0 1664 1664', path: 'm 1024,672 v 64 q 0,13 -9.5,22.5 Q 1005,768 992,768 H 416 q -13,0 -22.5,-9.5 Q 384,749 384,736 v -64 q 0,-13 9.5,-22.5 Q 403,640 416,640 h 576 q 13,0 22.5,9.5 9.5,9.5 9.5,22.5 z m 128,32 Q 1152,519 1020.5,387.5 889,256 704,256 519,256 387.5,387.5 256,519 256,704 256,889 387.5,1020.5 519,1152 704,1152 889,1152 1020.5,1020.5 1152,889 1152,704 Z m 512,832 q 0,53 -37.5,90.5 -37.5,37.5 -90.5,37.5 -54,0 -90,-38 L 1103,1284 Q 924,1408 704,1408 561,1408 430.5,1352.5 300,1297 205.5,1202.5 111,1108 55.5,977.5 0,847 0,704 0,561 55.5,430.5 111,300 205.5,205.5 300,111 430.5,55.5 561,0 704,0 q 143,0 273.5,55.5 130.5,55.5 225,150 94.5,94.5 150,225 55.5,130.5 55.5,273.5 0,220 -124,399 l 343,343 q 37,37 37,90 z' } ], + // See /img/photon.svg + [ 'ph-popups', { viewBox: '0 0 20 20', path: 'm 3.146,1.8546316 a 0.5006316,0.5006316 0 0 0 0.708,-0.708 l -1,-1 a 0.5006316,0.5006316 0 0 0 -0.708,0.708 z m -0.836,2.106 a 0.406,0.406 0 0 0 0.19,0.04 0.5,0.5 0 0 0 0.35,-0.851 0.493,0.493 0 0 0 -0.54,-0.109 0.361,0.361 0 0 0 -0.16,0.109 0.485,0.485 0 0 0 0,0.7 0.372,0.372 0 0 0 0.16,0.111 z m 3,-3 a 0.406,0.406 0 0 0 0.19,0.04 0.513,0.513 0 0 0 0.5,-0.5 0.473,0.473 0 0 0 -0.15,-0.351 0.5,0.5 0 0 0 -0.7,0 0.485,0.485 0 0 0 0,0.7 0.372,0.372 0 0 0 0.16,0.111 z m 13.19,1.04 a 0.5,0.5 0 0 0 0.354,-0.146 l 1,-1 a 0.5006316,0.5006316 0 0 0 -0.708,-0.708 l -1,1 a 0.5,0.5 0 0 0 0.354,0.854 z m 1.35,1.149 a 0.361,0.361 0 0 0 -0.16,-0.109 0.5,0.5 0 0 0 -0.38,0 0.361,0.361 0 0 0 -0.16,0.109 0.485,0.485 0 0 0 0,0.7 0.372,0.372 0 0 0 0.16,0.11 0.471,0.471 0 0 0 0.38,0 0.372,0.372 0 0 0 0.16,-0.11 0.469,0.469 0 0 0 0.15,-0.349 0.43,0.43 0 0 0 -0.04,-0.19 0.358,0.358 0 0 0 -0.11,-0.161 z m -3.54,-2.189 a 0.406,0.406 0 0 0 0.19,0.04 0.469,0.469 0 0 0 0.35,-0.15 0.353,0.353 0 0 0 0.11,-0.161 0.469,0.469 0 0 0 0,-0.379 0.358,0.358 0 0 0 -0.11,-0.161 0.361,0.361 0 0 0 -0.16,-0.109 0.493,0.493 0 0 0 -0.54,0.109 0.358,0.358 0 0 0 -0.11,0.161 0.43,0.43 0 0 0 -0.04,0.19 0.469,0.469 0 0 0 0.15,0.35 0.372,0.372 0 0 0 0.16,0.11 z m 2.544,15.1860004 a 0.5006316,0.5006316 0 0 0 -0.708,0.708 l 1,1 a 0.5006316,0.5006316 0 0 0 0.708,-0.708 z m 0.3,-2 a 0.473,0.473 0 0 0 -0.154,0.354 0.4,0.4 0 0 0 0.04,0.189 0.353,0.353 0 0 0 0.11,0.161 0.469,0.469 0 0 0 0.35,0.15 0.406,0.406 0 0 0 0.19,-0.04 0.372,0.372 0 0 0 0.16,-0.11 0.454,0.454 0 0 0 0.15,-0.35 0.473,0.473 0 0 0 -0.15,-0.351 0.5,0.5 0 0 0 -0.7,0 z m -3,3 a 0.473,0.473 0 0 0 -0.154,0.354 0.454,0.454 0 0 0 0.15,0.35 0.372,0.372 0 0 0 0.16,0.11 0.406,0.406 0 0 0 0.19,0.04 0.469,0.469 0 0 0 0.35,-0.15 0.353,0.353 0 0 0 0.11,-0.161 0.4,0.4 0 0 0 0.04,-0.189 0.473,0.473 0 0 0 -0.15,-0.351 0.5,0.5 0 0 0 -0.7,0 z M 18,5.0006316 a 3,3 0 0 0 -3,-3 H 7 a 3,3 0 0 0 -3,3 v 8.0000004 a 3,3 0 0 0 3,3 h 8 a 3,3 0 0 0 3,-3 z m -2,8.0000004 a 1,1 0 0 1 -1,1 H 7 a 1,1 0 0 1 -1,-1 V 7.0006316 H 16 Z M 16,6.0006316 H 6 v -1 a 1,1 0 0 1 1,-1 h 8 a 1,1 0 0 1 1,1 z M 11,18.000632 H 3 a 1,1 0 0 1 -1,-1 v -6 h 1 v -1 H 2 V 9.0006316 a 1,1 0 0 1 1,-1 v -2 a 3,3 0 0 0 -3,3 v 8.0000004 a 3,3 0 0 0 3,3 h 8 a 3,3 0 0 0 3,-3 h -2 a 1,1 0 0 1 -1,1 z' } ], + [ 'ph-readermode-text-size', { viewBox: '0 0 20 12.5', path: 'M 10.422,11.223 A 0.712,0.712 0 0 1 10.295,11.007 L 6.581,0 H 4.68 L 0.933,11.309 0,11.447 V 12.5 H 3.594 V 11.447 L 2.655,11.325 A 0.3,0.3 0 0 1 2.468,11.211 0.214,0.214 0 0 1 2.419,10.974 L 3.341,8.387 h 3.575 l 0.906,2.652 a 0.18,0.18 0 0 1 -0.016,0.18 0.217,0.217 0 0 1 -0.139,0.106 L 6.679,11.447 V 12.5 h 4.62 V 11.447 L 10.663,11.325 A 0.512,0.512 0 0 1 10.422,11.223 Z M 3.659,7.399 5.063,2.57 6.5,7.399 Z M 19.27,11.464 A 0.406,0.406 0 0 1 19.009,11.337 0.368,0.368 0 0 1 18.902,11.072 V 6.779 A 3.838,3.838 0 0 0 18.67,5.318 1.957,1.957 0 0 0 18.01,4.457 2.48,2.48 0 0 0 16.987,4.044 7.582,7.582 0 0 0 15.67,3.938 a 6.505,6.505 0 0 0 -1.325,0.139 5.2,5.2 0 0 0 -1.2,0.4 2.732,2.732 0 0 0 -0.864,0.624 1.215,1.215 0 0 0 -0.331,0.833 0.532,0.532 0 0 0 0.119,0.383 0.665,0.665 0 0 0 0.257,0.172 0.916,0.916 0 0 0 0.375,0.041 h 1.723 V 4.942 A 4.429,4.429 0 0 1 14.611,4.91 2.045,2.045 0 0 1 14.836,4.885 c 0.09,0 0.192,-0.008 0.306,-0.008 a 1.849,1.849 0 0 1 0.808,0.151 1.247,1.247 0 0 1 0.71,0.89 2.164,2.164 0 0 1 0.049,0.51 c 0,0.076 -0.008,0.152 -0.008,0.228 0,0.076 -0.008,0.139 -0.008,0.221 v 0.2 q -1.152,0.252 -1.976,0.489 a 12.973,12.973 0 0 0 -1.391,0.474 4.514,4.514 0 0 0 -0.91,0.485 2.143,2.143 0 0 0 -0.527,0.523 1.594,1.594 0 0 0 -0.245,0.592 3.739,3.739 0 0 0 -0.061,0.693 2.261,2.261 0 0 0 0.171,0.9 2.024,2.024 0 0 0 0.469,0.682 2.084,2.084 0 0 0 0.693,0.432 2.364,2.364 0 0 0 0.852,0.151 3.587,3.587 0 0 0 1.068,-0.159 6.441,6.441 0 0 0 1.835,-0.877 l 0.22,0.832 H 20 v -0.783 z m -2.588,-0.719 a 4.314,4.314 0 0 1 -0.5,0.188 5.909,5.909 0 0 1 -0.493,0.123 2.665,2.665 0 0 1 -0.543,0.057 1.173,1.173 0 0 1 -0.861,-0.363 1.166,1.166 0 0 1 -0.245,-0.392 1.357,1.357 0 0 1 -0.086,-0.486 1.632,1.632 0 0 1 0.123,-0.657 1.215,1.215 0 0 1 0.432,-0.5 3.151,3.151 0 0 1 0.837,-0.392 12.429,12.429 0 0 1 1.334,-0.334 z' } ], + ]); + + return function(root) { + const icons = (root || document).querySelectorAll('.fa-icon'); + if ( icons.length === 0 ) { return; } + const svgNS = 'http://www.w3.org/2000/svg'; + for ( const icon of icons ) { + if ( icon.firstChild === null || icon.firstChild.nodeType !== 3 ) { + continue; + } + const name = icon.firstChild.nodeValue.trim(); + if ( name === '' ) { continue; } + const svg = document.createElementNS(svgNS, 'svg'); + svg.classList.add('fa-icon_' + name); + const details = svgIcons.get(name); + if ( details === undefined ) { + let file; + if ( name.startsWith('ph-') ) { + file = 'photon'; + } else if ( name.startsWith('md-') ) { + file = 'material-design'; + } else { + continue; + } + const use = document.createElementNS(svgNS, 'use'); + use.setAttribute('href', `/img/${file}.svg#${name}`); + svg.appendChild(use); + } else { + svg.setAttribute('viewBox', details.viewBox); + const path = document.createElementNS(svgNS, 'path'); + path.setAttribute('d', details.path); + svg.appendChild(path); + } + icon.replaceChild(svg, icon.firstChild); + if ( icon.classList.contains('fa-icon-badged') ) { + const badge = document.createElement('span'); + badge.className = 'fa-icon-badge'; + icon.insertBefore(badge, icon.firstChild.nextSibling); + } + } + }; +})(); + +faIconsInit(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/filtering-context.js b/android/app/src/main/assets/extensions/ublock_origin/js/filtering-context.js new file mode 100644 index 00000000..a24cdabc --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/filtering-context.js @@ -0,0 +1,514 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2018-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { + domainFromHostname, + hostnameFromURI, + originFromURI, +} from './uri-utils.js'; + +/******************************************************************************/ + +// https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/ResourceType + +// Long term, convert code wherever possible to work with integer-based type +// values -- the assumption being that integer operations are faster than +// string operations. + +export const NO_TYPE = 0; +export const BEACON = 1 << 0; +export const CSP_REPORT = 1 << 1; +export const FONT = 1 << 2; +export const IMAGE = 1 << 4; +export const IMAGESET = 1 << 4; +export const MAIN_FRAME = 1 << 5; +export const MEDIA = 1 << 6; +export const OBJECT = 1 << 7; +export const OBJECT_SUBREQUEST = 1 << 7; +export const PING = 1 << 8; +export const SCRIPT = 1 << 9; +export const STYLESHEET = 1 << 10; +export const SUB_FRAME = 1 << 11; +export const WEBSOCKET = 1 << 12; +export const XMLHTTPREQUEST = 1 << 13; +export const INLINE_FONT = 1 << 14; +export const INLINE_SCRIPT = 1 << 15; +export const OTHER = 1 << 16; +export const FRAME_ANY = MAIN_FRAME | SUB_FRAME | OBJECT; +export const FONT_ANY = FONT | INLINE_FONT; +export const INLINE_ANY = INLINE_FONT | INLINE_SCRIPT; +export const PING_ANY = BEACON | CSP_REPORT | PING; +export const SCRIPT_ANY = SCRIPT | INLINE_SCRIPT; + +const typeStrToIntMap = { + 'no_type': NO_TYPE, + 'beacon': BEACON, + 'csp_report': CSP_REPORT, + 'font': FONT, + 'image': IMAGE, + 'imageset': IMAGESET, + 'main_frame': MAIN_FRAME, + 'media': MEDIA, + 'object': OBJECT, + 'object_subrequest': OBJECT_SUBREQUEST, + 'ping': PING, + 'script': SCRIPT, + 'stylesheet': STYLESHEET, + 'sub_frame': SUB_FRAME, + 'websocket': WEBSOCKET, + 'xmlhttprequest': XMLHTTPREQUEST, + 'inline-font': INLINE_FONT, + 'inline-script': INLINE_SCRIPT, + 'other': OTHER, +}; + +export const METHOD_NONE = 0; +export const METHOD_CONNECT = 1 << 1; +export const METHOD_DELETE = 1 << 2; +export const METHOD_GET = 1 << 3; +export const METHOD_HEAD = 1 << 4; +export const METHOD_OPTIONS = 1 << 5; +export const METHOD_PATCH = 1 << 6; +export const METHOD_POST = 1 << 7; +export const METHOD_PUT = 1 << 8; + +const methodStrToBitMap = { + '': METHOD_NONE, + 'connect': METHOD_CONNECT, + 'delete': METHOD_DELETE, + 'get': METHOD_GET, + 'head': METHOD_HEAD, + 'options': METHOD_OPTIONS, + 'patch': METHOD_PATCH, + 'post': METHOD_POST, + 'put': METHOD_PUT, + 'CONNECT': METHOD_CONNECT, + 'DELETE': METHOD_DELETE, + 'GET': METHOD_GET, + 'HEAD': METHOD_HEAD, + 'OPTIONS': METHOD_OPTIONS, + 'PATCH': METHOD_PATCH, + 'POST': METHOD_POST, + 'PUT': METHOD_PUT, +}; + +const methodBitToStrMap = new Map([ + [ METHOD_NONE, '' ], + [ METHOD_CONNECT, 'connect' ], + [ METHOD_DELETE, 'delete' ], + [ METHOD_GET, 'get' ], + [ METHOD_HEAD, 'head' ], + [ METHOD_OPTIONS, 'options' ], + [ METHOD_PATCH, 'patch' ], + [ METHOD_POST, 'post' ], + [ METHOD_PUT, 'put' ], +]); + +const reIPv4 = /^\d+\.\d+\.\d+\.\d+$/; + +/******************************************************************************/ + +export const FilteringContext = class { + constructor(other) { + if ( other instanceof FilteringContext ) { + return this.fromFilteringContext(other); + } + this.tstamp = 0; + this.realm = ''; + this.method = 0; + this.itype = NO_TYPE; + this.stype = undefined; + this.url = undefined; + this.aliasURL = undefined; + this.hostname = undefined; + this.domain = undefined; + this.ipaddress = undefined; + this.docId = -1; + this.frameId = -1; + this.docOrigin = undefined; + this.docHostname = undefined; + this.docDomain = undefined; + this.tabId = undefined; + this.tabOrigin = undefined; + this.tabHostname = undefined; + this.tabDomain = undefined; + this.redirectURL = undefined; + this.filter = undefined; + } + + get type() { + return this.stype; + } + + set type(a) { + this.itype = typeStrToIntMap[a] || NO_TYPE; + this.stype = a; + } + + isRootDocument() { + return (this.itype & MAIN_FRAME) !== 0; + } + isDocument() { + return (this.itype & FRAME_ANY) !== 0; + } + + isFont() { + return (this.itype & FONT_ANY) !== 0; + } + + fromFilteringContext(other) { + this.realm = other.realm; + this.type = other.type; + this.method = other.method; + this.url = other.url; + this.hostname = other.hostname; + this.domain = other.domain; + this.ipaddress = other.ipaddress; + this.docId = other.docId; + this.frameId = other.frameId; + this.docOrigin = other.docOrigin; + this.docHostname = other.docHostname; + this.docDomain = other.docDomain; + this.tabId = other.tabId; + this.tabOrigin = other.tabOrigin; + this.tabHostname = other.tabHostname; + this.tabDomain = other.tabDomain; + this.redirectURL = other.redirectURL; + this.filter = undefined; + return this; + } + + fromDetails({ originURL, url, type }) { + this.setDocOriginFromURL(originURL) + .setURL(url) + .setType(type); + return this; + } + + duplicate() { + return (new FilteringContext(this)); + } + + setRealm(a) { + this.realm = a; + return this; + } + + setType(a) { + this.type = a; + return this; + } + + setURL(a) { + if ( a !== this.url ) { + this.hostname = this.domain = this.ipaddress = undefined; + this.url = a; + } + return this; + } + + getHostname() { + if ( this.hostname === undefined ) { + this.hostname = hostnameFromURI(this.url); + } + return this.hostname; + } + + setHostname(a) { + if ( a !== this.hostname ) { + this.domain = undefined; + this.hostname = a; + } + return this; + } + + getDomain() { + if ( this.domain === undefined ) { + this.domain = domainFromHostname(this.getHostname()); + } + return this.domain; + } + + setDomain(a) { + this.domain = a; + return this; + } + + getIPAddress() { + if ( this.ipaddress !== undefined ) { + return this.ipaddress; + } + const ipaddr = this.getHostname(); + const c0 = ipaddr.charCodeAt(0); + if ( c0 === 0x5B /* [ */ ) { + return (this.ipaddress = ipaddr.slice(1, -1)); + } else if ( c0 <= 0x39 && c0 >= 0x30 ) { + if ( reIPv4.test(ipaddr) ) { + return (this.ipaddress = ipaddr); + } + } + return (this.ipaddress = ''); + } + + // Must always be called *after* setURL() + setIPAddress(ipaddr) { + this.ipaddress = ipaddr || undefined; + return this; + } + + getDocOrigin() { + if ( this.docOrigin === undefined ) { + this.docOrigin = this.tabOrigin; + } + return this.docOrigin; + } + + setDocOrigin(a) { + if ( a !== this.docOrigin ) { + this.docHostname = this.docDomain = undefined; + this.docOrigin = a; + } + return this; + } + + setDocOriginFromURL(a) { + return this.setDocOrigin(originFromURI(a)); + } + + getDocHostname() { + if ( this.docHostname === undefined ) { + this.docHostname = hostnameFromURI(this.getDocOrigin()); + } + return this.docHostname; + } + + setDocHostname(a) { + if ( a !== this.docHostname ) { + this.docDomain = undefined; + this.docHostname = a; + } + return this; + } + + getDocDomain() { + if ( this.docDomain === undefined ) { + this.docDomain = domainFromHostname(this.getDocHostname()); + } + return this.docDomain; + } + + setDocDomain(a) { + this.docDomain = a; + return this; + } + + // The idea is to minimize the amount of work done to figure out whether + // the resource is 3rd-party to the document. + is3rdPartyToDoc() { + let docDomain = this.getDocDomain(); + if ( docDomain === '' ) { docDomain = this.docHostname; } + if ( this.domain !== undefined && this.domain !== '' ) { + return this.domain !== docDomain; + } + const hostname = this.getHostname(); + if ( hostname.endsWith(docDomain) === false ) { return true; } + const i = hostname.length - docDomain.length; + if ( i === 0 ) { return false; } + return hostname.charCodeAt(i - 1) !== 0x2E /* '.' */; + } + + setTabId(a) { + this.tabId = a; + return this; + } + + getTabOrigin() { + return this.tabOrigin; + } + + setTabOrigin(a) { + if ( a !== this.tabOrigin ) { + this.tabHostname = this.tabDomain = undefined; + this.tabOrigin = a; + } + return this; + } + + setTabOriginFromURL(a) { + return this.setTabOrigin(originFromURI(a)); + } + + getTabHostname() { + if ( this.tabHostname === undefined ) { + this.tabHostname = hostnameFromURI(this.getTabOrigin()); + } + return this.tabHostname; + } + + setTabHostname(a) { + if ( a !== this.tabHostname ) { + this.tabDomain = undefined; + this.tabHostname = a; + } + return this; + } + + getTabDomain() { + if ( this.tabDomain === undefined ) { + this.tabDomain = domainFromHostname(this.getTabHostname()); + } + return this.tabDomain; + } + + setTabDomain(a) { + this.docDomain = a; + return this; + } + + // The idea is to minimize the amount of work done to figure out whether + // the resource is 3rd-party to the top document. + is3rdPartyToTab() { + let tabDomain = this.getTabDomain(); + if ( tabDomain === '' ) { tabDomain = this.tabHostname; } + if ( this.domain !== undefined && this.domain !== '' ) { + return this.domain !== tabDomain; + } + const hostname = this.getHostname(); + if ( hostname.endsWith(tabDomain) === false ) { return true; } + const i = hostname.length - tabDomain.length; + if ( i === 0 ) { return false; } + return hostname.charCodeAt(i - 1) !== 0x2E /* '.' */; + } + + setFilter(a) { + this.filter = a; + return this; + } + + pushFilter(a) { + if ( this.filter === undefined ) { + return this.setFilter(a); + } + if ( Array.isArray(this.filter) ) { + this.filter.push(a); + } else { + this.filter = [ this.filter, a ]; + } + return this; + } + + pushFilters(a) { + if ( this.filter === undefined ) { + return this.setFilter(a); + } + if ( Array.isArray(this.filter) ) { + this.filter.push(...a); + } else { + this.filter = [ this.filter, ...a ]; + } + return this; + } + + setMethod(a) { + this.method = methodStrToBitMap[a] || 0; + return this; + } + + getMethodName() { + return FilteringContext.getMethodName(this.method); + } + + static getMethod(a) { + return methodStrToBitMap[a] || 0; + } + + static getMethodName(a) { + return methodBitToStrMap.get(a) || ''; + } + + BEACON = BEACON; + CSP_REPORT = CSP_REPORT; + FONT = FONT; + IMAGE = IMAGE; + IMAGESET = IMAGESET; + MAIN_FRAME = MAIN_FRAME; + MEDIA = MEDIA; + OBJECT = OBJECT; + OBJECT_SUBREQUEST = OBJECT_SUBREQUEST; + PING = PING; + SCRIPT = SCRIPT; + STYLESHEET = STYLESHEET; + SUB_FRAME = SUB_FRAME; + WEBSOCKET = WEBSOCKET; + XMLHTTPREQUEST = XMLHTTPREQUEST; + INLINE_FONT = INLINE_FONT; + INLINE_SCRIPT = INLINE_SCRIPT; + OTHER = OTHER; + FRAME_ANY = FRAME_ANY; + FONT_ANY = FONT_ANY; + INLINE_ANY = INLINE_ANY; + PING_ANY = PING_ANY; + SCRIPT_ANY = SCRIPT_ANY; + METHOD_NONE = METHOD_NONE; + METHOD_CONNECT = METHOD_CONNECT; + METHOD_DELETE = METHOD_DELETE; + METHOD_GET = METHOD_GET; + METHOD_HEAD = METHOD_HEAD; + METHOD_OPTIONS = METHOD_OPTIONS; + METHOD_PATCH = METHOD_PATCH; + METHOD_POST = METHOD_POST; + METHOD_PUT = METHOD_PUT; + + static BEACON = BEACON; + static CSP_REPORT = CSP_REPORT; + static FONT = FONT; + static IMAGE = IMAGE; + static IMAGESET = IMAGESET; + static MAIN_FRAME = MAIN_FRAME; + static MEDIA = MEDIA; + static OBJECT = OBJECT; + static OBJECT_SUBREQUEST = OBJECT_SUBREQUEST; + static PING = PING; + static SCRIPT = SCRIPT; + static STYLESHEET = STYLESHEET; + static SUB_FRAME = SUB_FRAME; + static WEBSOCKET = WEBSOCKET; + static XMLHTTPREQUEST = XMLHTTPREQUEST; + static INLINE_FONT = INLINE_FONT; + static INLINE_SCRIPT = INLINE_SCRIPT; + static OTHER = OTHER; + static FRAME_ANY = FRAME_ANY; + static FONT_ANY = FONT_ANY; + static INLINE_ANY = INLINE_ANY; + static PING_ANY = PING_ANY; + static SCRIPT_ANY = SCRIPT_ANY; + static METHOD_NONE = METHOD_NONE; + static METHOD_CONNECT = METHOD_CONNECT; + static METHOD_DELETE = METHOD_DELETE; + static METHOD_GET = METHOD_GET; + static METHOD_HEAD = METHOD_HEAD; + static METHOD_OPTIONS = METHOD_OPTIONS; + static METHOD_PATCH = METHOD_PATCH; + static METHOD_POST = METHOD_POST; + static METHOD_PUT = METHOD_PUT; +}; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/filtering-engines.js b/android/app/src/main/assets/extensions/ublock_origin/js/filtering-engines.js new file mode 100644 index 00000000..64198b9f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/filtering-engines.js @@ -0,0 +1,46 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import DynamicHostRuleFiltering from './dynamic-net-filtering.js'; +import DynamicSwitchRuleFiltering from './hnswitches.js'; +import DynamicURLRuleFiltering from './url-net-filtering.js'; + +/******************************************************************************/ + +const permanentFirewall = new DynamicHostRuleFiltering(); +const sessionFirewall = new DynamicHostRuleFiltering(); + +const permanentURLFiltering = new DynamicURLRuleFiltering(); +const sessionURLFiltering = new DynamicURLRuleFiltering(); + +const permanentSwitches = new DynamicSwitchRuleFiltering(); +const sessionSwitches = new DynamicSwitchRuleFiltering(); + +/******************************************************************************/ + +export { + permanentFirewall, + sessionFirewall, + permanentURLFiltering, + sessionURLFiltering, + permanentSwitches, + sessionSwitches, +}; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/hnswitches.js b/android/app/src/main/assets/extensions/ublock_origin/js/hnswitches.js new file mode 100644 index 00000000..4e531cf3 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/hnswitches.js @@ -0,0 +1,282 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { LineIterator } from './text-utils.js'; +import { decomposeHostname } from './uri-utils.js'; +import punycode from '../lib/punycode.js'; + +/******************************************************************************/ + +const decomposedSource = []; + +// Object.create(null) is used below to eliminate worries about unexpected +// property names in prototype chain -- and this way we don't have to use +// Object.hasOwn() to avoid this. + +const switchBitOffsets = Object.create(null); +Object.assign(switchBitOffsets, { + 'no-strict-blocking': 0, + 'no-popups': 2, + 'no-cosmetic-filtering': 4, + 'no-remote-fonts': 6, + 'no-large-media': 8, + 'no-csp-reports': 10, + 'no-scripting': 12, +}); + +const switchStateToNameMap = Object.create(null); +Object.assign(switchStateToNameMap, { + '1': 'true', + '2': 'false', +}); + +const nameToSwitchStateMap = Object.create(null); +Object.assign(nameToSwitchStateMap, { + 'true': 1, + 'false': 2, + 'on': 1, + 'off': 2, +}); + +/******************************************************************************/ + +// For performance purpose, as simple test as possible +const reNotASCII = /[^\x20-\x7F]/; + +// http://tools.ietf.org/html/rfc5952 +// 4.3: "MUST be represented in lowercase" +// Also: http://en.wikipedia.org/wiki/IPv6_address#Literal_IPv6_addresses_in_network_resource_identifiers + +/******************************************************************************/ + +class DynamicSwitchRuleFiltering { + constructor() { + this.reset(); + } + + reset() { + this.switches = new Map(); + this.n = ''; + this.z = ''; + this.r = 0; + this.changed = true; + } + + assign(from) { + // Remove rules not in other + for ( const hn of this.switches.keys() ) { + if ( from.switches.has(hn) === false ) { + this.switches.delete(hn); + this.changed = true; + } + } + // Add/change rules in other + for ( const [hn, bits] of from.switches ) { + if ( this.switches.get(hn) !== bits ) { + this.switches.set(hn, bits); + this.changed = true; + } + } + } + + copyRules(from, srcHostname) { + const thisBits = this.switches.get(srcHostname); + const fromBits = from.switches.get(srcHostname); + if ( fromBits !== thisBits ) { + if ( fromBits !== undefined ) { + this.switches.set(srcHostname, fromBits); + } else { + this.switches.delete(srcHostname); + } + this.changed = true; + } + return this.changed; + } + + hasSameRules(other, srcHostname) { + return this.switches.get(srcHostname) === other.switches.get(srcHostname); + } + + toggle(switchName, hostname, newVal) { + const bitOffset = switchBitOffsets[switchName]; + if ( bitOffset === undefined ) { return false; } + if ( newVal === this.evaluate(switchName, hostname) ) { return false; } + let bits = this.switches.get(hostname) || 0; + bits &= ~(3 << bitOffset); + bits |= newVal << bitOffset; + if ( bits === 0 ) { + this.switches.delete(hostname); + } else { + this.switches.set(hostname, bits); + } + this.changed = true; + return true; + } + + toggleOneZ(switchName, hostname, newState) { + const bitOffset = switchBitOffsets[switchName]; + if ( bitOffset === undefined ) { return false; } + let state = this.evaluateZ(switchName, hostname); + if ( newState === state ) { return false; } + if ( newState === undefined ) { + newState = !state; + } + let bits = this.switches.get(hostname) || 0; + bits &= ~(3 << bitOffset); + if ( bits === 0 ) { + this.switches.delete(hostname); + } else { + this.switches.set(hostname, bits); + } + state = this.evaluateZ(switchName, hostname); + if ( state !== newState ) { + this.switches.set(hostname, bits | ((newState ? 1 : 2) << bitOffset)); + } + this.changed = true; + return true; + } + + toggleBranchZ(switchName, targetHostname, newState) { + this.toggleOneZ(switchName, targetHostname, newState); + + // Turn off all descendant switches, they will inherit the state of the + // branch's origin. + const targetLen = targetHostname.length; + for ( const hostname of this.switches.keys() ) { + if ( hostname === targetHostname ) { continue; } + if ( hostname.length <= targetLen ) { continue; } + if ( hostname.endsWith(targetHostname) === false ) { continue; } + if ( hostname.charAt(hostname.length - targetLen - 1) !== '.' ) { + continue; + } + this.toggle(switchName, hostname, 0); + } + + return this.changed; + } + + toggleZ(switchName, hostname, deep, newState) { + if ( deep === true ) { + return this.toggleBranchZ(switchName, hostname, newState); + } + return this.toggleOneZ(switchName, hostname, newState); + } + + // 0 = inherit from broader scope, up to default state + // 1 = non-default state + // 2 = forced default state (to override a broader non-default state) + + evaluate(switchName, hostname) { + const bits = this.switches.get(hostname); + if ( bits === undefined ) { return 0; } + let bitOffset = switchBitOffsets[switchName]; + if ( bitOffset === undefined ) { return 0; } + return (bits >>> bitOffset) & 3; + } + + evaluateZ(switchName, hostname) { + const bitOffset = switchBitOffsets[switchName]; + if ( bitOffset === undefined ) { + this.r = 0; + return false; + } + this.n = switchName; + for ( const shn of decomposeHostname(hostname, decomposedSource) ) { + let bits = this.switches.get(shn); + if ( bits === undefined ) { continue; } + bits = bits >>> bitOffset & 3; + if ( bits === 0 ) { continue; } + this.z = shn; + this.r = bits; + return bits === 1; + } + this.r = 0; + return false; + } + + toLogData() { + return { + source: 'switch', + result: this.r, + raw: `${this.n}: ${this.z} true` + }; + } + + toArray() { + const out = []; + for ( const hostname of this.switches.keys() ) { + const prettyHn = hostname.includes('xn--') && punycode + ? punycode.toUnicode(hostname) + : hostname; + for ( const switchName in switchBitOffsets ) { + if ( switchBitOffsets[switchName] === undefined ) { continue; } + const val = this.evaluate(switchName, hostname); + if ( val === 0 ) { continue; } + out.push(`${switchName}: ${prettyHn} ${switchStateToNameMap[val]}`); + } + } + return out; + } + + toString() { + return this.toArray().join('\n'); + } + + fromString(text, append) { + const lineIter = new LineIterator(text); + if ( append !== true ) { this.reset(); } + while ( lineIter.eot() === false ) { + this.addFromRuleParts(lineIter.next().trim().split(/\s+/)); + } + } + + validateRuleParts(parts) { + if ( parts.length < 3 ) { return; } + if ( parts[0].endsWith(':') === false ) { return; } + if ( nameToSwitchStateMap[parts[2]] === undefined ) { return; } + if ( reNotASCII.test(parts[1]) && punycode !== undefined ) { + parts[1] = punycode.toASCII(parts[1]); + } + return parts; + } + + addFromRuleParts(parts) { + if ( this.validateRuleParts(parts) === undefined ) { return false; } + const switchName = parts[0].slice(0, -1); + if ( switchBitOffsets[switchName] === undefined ) { return false; } + this.toggle(switchName, parts[1], nameToSwitchStateMap[parts[2]]); + return true; + } + + removeFromRuleParts(parts) { + if ( this.validateRuleParts(parts) !== undefined ) { + this.toggle(parts[0].slice(0, -1), parts[1], 0); + return true; + } + return false; + } +} + +/******************************************************************************/ + +export default DynamicSwitchRuleFiltering; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/hntrie.js b/android/app/src/main/assets/extensions/ublock_origin/js/hntrie.js new file mode 100644 index 00000000..709944b7 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/hntrie.js @@ -0,0 +1,772 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2017-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************* + + The original prototype was to develop an idea I had about using jump indices + in a TypedArray for quickly matching hostnames (or more generally strings)[1]. + Once I had a working, un-optimized prototype, I realized I had ended up + with something formally named a "trie": , + hence the name. I have no idea whether the implementation here or one + resembling it has been done elsewhere. + + "HN" in HNTrieContainer stands for "HostName", because the trie is + specialized to deal with matching hostnames -- which is a bit more + complicated than matching plain strings. + + For example, `www.abc.com` is deemed matching `abc.com`, because the former + is a subdomain of the latter. The opposite is of course not true. + + The resulting read-only tries created as a result of using HNTrieContainer + are simply just typed arrays filled with integers. The matching algorithm is + just a matter of reading/comparing these integers, and further using them as + indices in the array as a way to move around in the trie. + + [1] To solve + + Since this trie is specialized for matching hostnames, the stored + strings are reversed internally, because of hostname comparison logic: + + Correct matching: + index 0123456 + abc.com + | + www.abc.com + index 01234567890 + + Incorrect matching (typically used for plain strings): + index 0123456 + abc.com + | + www.abc.com + index 01234567890 + + ------------------------------------------------------------------------------ + + 1st iteration: + - https://github.com/gorhill/uBlock/blob/ff58107dac3a32607f8113e39ed5015584506813/src/js/hntrie.js + - Suitable for small to medium set of hostnames + - One buffer per trie + + 2nd iteration: goal was to make matches() method wasm-able + - https://github.com/gorhill/uBlock/blob/c3b0fd31f64bd7ffecdd282fb1208fe07aac3eb0/src/js/hntrie.js + - Suitable for small to medium set of hostnames + - Distinct tries all share same buffer: + - Reduced memory footprint + - https://stackoverflow.com/questions/45803829/memory-overhead-of-typed-arrays-vs-strings/45808835#45808835 + - Reusing needle character lookups for all tries + - This significantly reduce the number of String.charCodeAt() calls + - Slightly improved creation time + + This is the 3rd iteration: goal was to make add() method wasm-able and + further improve memory/CPU efficiency. + + This 3rd iteration has the following new traits: + - Suitable for small to large set of hostnames + - Support multiple trie containers (instanciable) + - Designed to hold large number of hostnames + - Hostnames can be added at any time (instead of all at once) + - This means pre-sorting is no longer a requirement + - The trie is always compact + - There is no longer a need for a `vacuum` method + - This makes the add() method wasm-able + - It can return the exact hostname which caused the match + - serializable/unserializable available for fast loading + - Distinct trie reference support the iteration protocol, thus allowing + to extract all the hostnames in the trie + + Its primary purpose is to replace the use of Set() as a mean to hold + large number of hostnames (ex. FilterHostnameDict in static filtering + engine). + + A HNTrieContainer is mostly a large buffer in which distinct but related + tries are stored. The memory layout of the buffer is as follow: + + 0-254: needle being processed + 255: length of needle + 256-259: offset to start of trie data section (=> trie0) + 260-263: offset to end of trie data section (=> trie1) + 264-267: offset to start of character data section (=> char0) + 268-271: offset to end of character data section (=> char1) + 272: start of trie data section + +*/ + +const PAGE_SIZE = 65536; +// i32 / i8 +const TRIE0_SLOT = 256 >>> 2; // 64 / 256 +const TRIE1_SLOT = TRIE0_SLOT + 1; // 65 / 260 +const CHAR0_SLOT = TRIE0_SLOT + 2; // 66 / 264 +const CHAR1_SLOT = TRIE0_SLOT + 3; // 67 / 268 +const TRIE0_START = TRIE0_SLOT + 4 << 2; // 272 + +const roundToPageSize = v => (v + PAGE_SIZE-1) & ~(PAGE_SIZE-1); + +// http://www.cse.yorku.ca/~oz/hash.html#djb2 +const i32Checksum = (buf32) => { + const n = buf32.length; + let hash = 177573 ^ n; + for ( let i = 0; i < n; i++ ) { + hash = (hash << 5) + hash ^ buf32[i]; + } + return hash; +}; + +class HNTrieContainer { + + constructor() { + const len = PAGE_SIZE * 2; + this.buf = new Uint8Array(len); + this.buf32 = new Uint32Array(this.buf.buffer); + this.needle = ''; + this.buf32[TRIE0_SLOT] = TRIE0_START; + this.buf32[TRIE1_SLOT] = this.buf32[TRIE0_SLOT]; + this.buf32[CHAR0_SLOT] = len >>> 1; + this.buf32[CHAR1_SLOT] = this.buf32[CHAR0_SLOT]; + this.wasmMemory = null; + + this.lastStored = ''; + this.lastStoredLen = this.lastStoredIndex = 0; + } + + //-------------------------------------------------------------------------- + // Public methods + //-------------------------------------------------------------------------- + + reset(details) { + if ( + details instanceof Object && + typeof details.byteLength === 'number' && + typeof details.char0 === 'number' + ) { + if ( details.byteLength > this.buf.byteLength ) { + this.reallocateBuf(details.byteLength); + } + this.buf32[CHAR0_SLOT] = details.char0; + } + this.buf32[TRIE1_SLOT] = this.buf32[TRIE0_SLOT]; + this.buf32[CHAR1_SLOT] = this.buf32[CHAR0_SLOT]; + + this.lastStored = ''; + this.lastStoredLen = this.lastStoredIndex = 0; + } + + setNeedle(needle) { + if ( needle !== this.needle ) { + const buf = this.buf; + let i = needle.length; + if ( i > 255 ) { i = 255; } + buf[255] = i; + while ( i-- ) { + buf[i] = needle.charCodeAt(i); + } + this.needle = needle; + } + return this; + } + + matchesJS(iroot) { + const buf32 = this.buf32; + const buf8 = this.buf; + const char0 = buf32[CHAR0_SLOT]; + let ineedle = buf8[255]; + let icell = buf32[iroot+0]; + if ( icell === 0 ) { return -1; } + let c = 0, v = 0, i0 = 0, n = 0; + for (;;) { + if ( ineedle === 0 ) { return -1; } + ineedle -= 1; + c = buf8[ineedle]; + // find first segment with a first-character match + for (;;) { + v = buf32[icell+2]; + i0 = char0 + (v >>> 8); + if ( buf8[i0] === c ) { break; } + icell = buf32[icell+0]; + if ( icell === 0 ) { return -1; } + } + // all characters in segment must match + n = v & 0x7F; + if ( n > 1 ) { + n -= 1; + if ( n > ineedle ) { return -1; } + i0 += 1; + const i1 = i0 + n; + do { + ineedle -= 1; + if ( buf8[i0] !== buf8[ineedle] ) { return -1; } + i0 += 1; + } while ( i0 < i1 ); + } + // boundary at end of segment? + if ( (v & 0x80) !== 0 ) { + if ( ineedle === 0 || buf8[ineedle-1] === 0x2E /* '.' */ ) { + return ineedle; + } + } + // next segment + icell = buf32[icell+1]; + if ( icell === 0 ) { break; } + } + return -1; + } + + createTrie() { + // grow buffer if needed + if ( (this.buf32[CHAR0_SLOT] - this.buf32[TRIE1_SLOT]) < 12 ) { + this.growBuf(12, 0); + } + const iroot = this.buf32[TRIE1_SLOT] >>> 2; + this.buf32[TRIE1_SLOT] += 12; + this.buf32[iroot+0] = 0; + this.buf32[iroot+1] = 0; + this.buf32[iroot+2] = 0; + return iroot; + } + + createTrieFromIterable(hostnames) { + const itrie = this.createTrie(); + for ( const hn of hostnames ) { + if ( hn === '' ) { continue; } + this.setNeedle(hn).add(itrie); + } + return itrie; + } + + createTrieFromStoredDomainOpt(i, n) { + const itrie = this.createTrie(); + const jend = i + n; + let j = i, offset = 0, k = 0, c = 0; + while ( j !== jend ) { + offset = this.buf32[CHAR0_SLOT]; // Important + k = 0; + for (;;) { + if ( j === jend ) { break; } + c = this.buf[offset+j]; + j += 1; + if ( c === 0x7C /* '|' */ ) { break; } + if ( k === 255 ) { continue; } + this.buf[k] = c; + k += 1; + } + if ( k !== 0 ) { + this.buf[255] = k; + this.add(itrie); + } + } + this.needle = ''; // Important + this.buf[255] = 0; // Important + return itrie; + } + + dumpTrie(iroot) { + let hostnames = Array.from(this.trieIterator(iroot)); + if ( String.prototype.padStart instanceof Function ) { + const maxlen = Math.min( + hostnames.reduce((maxlen, hn) => Math.max(maxlen, hn.length), 0), + 64 + ); + hostnames = hostnames.map(hn => hn.padStart(maxlen)); + } + for ( const hn of hostnames ) { + console.log(hn); + } + } + + trieIterator(iroot) { + return { + value: undefined, + done: false, + next() { + if ( this.icell === 0 ) { + if ( this.forks.length === 0 ) { + this.value = undefined; + this.done = true; + return this; + } + this.charPtr = this.forks.pop(); + this.icell = this.forks.pop(); + } + for (;;) { + const idown = this.container.buf32[this.icell+0]; + if ( idown !== 0 ) { + this.forks.push(idown, this.charPtr); + } + const v = this.container.buf32[this.icell+2]; + let i0 = this.container.buf32[CHAR0_SLOT] + (v >>> 8); + const i1 = i0 + (v & 0x7F); + while ( i0 < i1 ) { + this.charPtr -= 1; + this.charBuf[this.charPtr] = this.container.buf[i0]; + i0 += 1; + } + this.icell = this.container.buf32[this.icell+1]; + if ( (v & 0x80) !== 0 ) { + return this.toHostname(); + } + } + }, + toHostname() { + this.value = this.textDecoder.decode( + new Uint8Array(this.charBuf.buffer, this.charPtr) + ); + return this; + }, + container: this, + icell: this.buf32[iroot], + charBuf: new Uint8Array(256), + charPtr: 256, + forks: [], + textDecoder: new TextDecoder(), + [Symbol.iterator]() { return this; }, + }; + } + + // TODO: + // Rework code to add from a string already present in the character + // buffer, i.e. not having to go through setNeedle() when adding a new + // hostname to a trie. This will require much work though, and probably + // changing the order in which string segments are stored in the + // character buffer. + addJS(iroot) { + let lhnchar = this.buf[255]; + if ( lhnchar === 0 ) { return 0; } + // grow buffer if needed + if ( + (this.buf32[CHAR0_SLOT] - this.buf32[TRIE1_SLOT]) < 24 || + (this.buf.length - this.buf32[CHAR1_SLOT]) < 256 + ) { + this.growBuf(24, 256); + } + let icell = this.buf32[iroot+0]; + // special case: first node in trie + if ( icell === 0 ) { + this.buf32[iroot+0] = this.addLeafCell(lhnchar); + return 1; + } + // + const char0 = this.buf32[CHAR0_SLOT]; + let isegchar, lsegchar, boundaryBit, inext; + // find a matching cell: move down + for (;;) { + const v = this.buf32[icell+2]; + let isegchar0 = char0 + (v >>> 8); + // if first character is no match, move to next descendant + if ( this.buf[isegchar0] !== this.buf[lhnchar-1] ) { + inext = this.buf32[icell+0]; + if ( inext === 0 ) { + this.buf32[icell+0] = this.addLeafCell(lhnchar); + return 1; + } + icell = inext; + continue; + } + // 1st character was tested + isegchar = 1; + lhnchar -= 1; + // find 1st mismatch in rest of segment + lsegchar = v & 0x7F; + if ( lsegchar !== 1 ) { + for (;;) { + if ( isegchar === lsegchar ) { break; } + if ( lhnchar === 0 ) { break; } + if ( this.buf[isegchar0+isegchar] !== this.buf[lhnchar-1] ) { break; } + isegchar += 1; + lhnchar -= 1; + } + } + boundaryBit = v & 0x80; + // all segment characters matched + if ( isegchar === lsegchar ) { + // needle remainder: no + if ( lhnchar === 0 ) { + // boundary: yes, already present + if ( boundaryBit !== 0 ) { return 0; } + // boundary: no, mark as boundary + this.buf32[icell+2] = v | 0x80; + } + // needle remainder: yes + else { + // remainder is at label boundary? if yes, no need to add + // the rest since the shortest match is always reported + if ( boundaryBit !== 0 ) { + if ( this.buf[lhnchar-1] === 0x2E /* '.' */ ) { return -1; } + } + inext = this.buf32[icell+1]; + if ( inext !== 0 ) { + icell = inext; + continue; + } + // add needle remainder + this.buf32[icell+1] = this.addLeafCell(lhnchar); + } + } + // some segment characters matched + else { + // split current cell + isegchar0 -= char0; + this.buf32[icell+2] = isegchar0 << 8 | isegchar; + inext = this.addCell( + 0, + this.buf32[icell+1], + isegchar0 + isegchar << 8 | boundaryBit | lsegchar - isegchar + ); + this.buf32[icell+1] = inext; + // needle remainder: yes, need new cell for remaining characters + if ( lhnchar !== 0 ) { + this.buf32[inext+0] = this.addLeafCell(lhnchar); + } + // needle remainder: no, need boundary cell + else { + this.buf32[icell+2] |= 0x80; + } + } + return 1; + } + } + + optimize() { + this.shrinkBuf(); + return { + byteLength: this.buf.byteLength, + char0: this.buf32[CHAR0_SLOT], + }; + } + + toSelfie() { + const buf32 = this.buf32.subarray(0, this.buf32[CHAR1_SLOT] + 3 >>> 2); + return { buf32, checksum: i32Checksum(buf32) }; + } + + fromSelfie(selfie) { + if ( typeof selfie !== 'object' || selfie === null ) { return false; } + if ( selfie.buf32 instanceof Uint32Array === false ) { return false; } + if ( selfie.checksum !== i32Checksum(selfie.buf32) ) { return false; } + this.needle = ''; + let byteLength = selfie.buf32.length << 2; + if ( byteLength === 0 ) { return false; } + byteLength = roundToPageSize(byteLength); + if ( this.wasmMemory !== null ) { + const pageCountBefore = this.buf.length >>> 16; + const pageCountAfter = byteLength >>> 16; + if ( pageCountAfter > pageCountBefore ) { + this.wasmMemory.grow(pageCountAfter - pageCountBefore); + this.buf = new Uint8Array(this.wasmMemory.buffer); + this.buf32 = new Uint32Array(this.buf.buffer); + } + this.buf32.set(selfie.buf32); + } else { + this.buf32 = selfie.buf32; + this.buf = new Uint8Array(this.buf32.buffer); + } + // https://github.com/uBlockOrigin/uBlock-issues/issues/2925 + this.buf[255] = 0; + return true; + } + + // The following *Hostname() methods can be used to store hostname strings + // outside the trie. This is useful to store/match hostnames which are + // not part of a collection, and yet still benefit from storing the strings + // into a trie container's character buffer. + // TODO: WASM version of matchesHostname() + + storeHostname(hn) { + let n = hn.length; + if ( n > 255 ) { + hn = hn.slice(-255); + n = 255; + } + if ( n === this.lastStoredLen && hn === this.lastStored ) { + return this.lastStoredIndex; + } + this.lastStored = hn; + this.lastStoredLen = n; + if ( (this.buf.length - this.buf32[CHAR1_SLOT]) < n ) { + this.growBuf(0, n); + } + const offset = this.buf32[CHAR1_SLOT]; + this.buf32[CHAR1_SLOT] = offset + n; + const buf8 = this.buf; + for ( let i = 0; i < n; i++ ) { + buf8[offset+i] = hn.charCodeAt(i); + } + return (this.lastStoredIndex = offset - this.buf32[CHAR0_SLOT]); + } + + extractHostname(i, n) { + const textDecoder = new TextDecoder(); + const offset = this.buf32[CHAR0_SLOT] + i; + return textDecoder.decode(this.buf.subarray(offset, offset + n)); + } + + storeDomainOpt(s) { + let n = s.length; + if ( n === this.lastStoredLen && s === this.lastStored ) { + return this.lastStoredIndex; + } + this.lastStored = s; + this.lastStoredLen = n; + if ( (this.buf.length - this.buf32[CHAR1_SLOT]) < n ) { + this.growBuf(0, n); + } + const offset = this.buf32[CHAR1_SLOT]; + this.buf32[CHAR1_SLOT] = offset + n; + const buf8 = this.buf; + for ( let i = 0; i < n; i++ ) { + buf8[offset+i] = s.charCodeAt(i); + } + return (this.lastStoredIndex = offset - this.buf32[CHAR0_SLOT]); + } + + extractDomainOpt(i, n) { + const textDecoder = new TextDecoder(); + const offset = this.buf32[CHAR0_SLOT] + i; + return textDecoder.decode(this.buf.subarray(offset, offset + n)); + } + + matchesHostname(hn, i, n) { + this.setNeedle(hn); + const buf8 = this.buf; + const hr = buf8[255]; + if ( n > hr ) { return false; } + const hl = hr - n; + const nl = this.buf32[CHAR0_SLOT] + i; + for ( let j = 0; j < n; j++ ) { + if ( buf8[nl+j] !== buf8[hl+j] ) { return false; } + } + return n === hr || hn.charCodeAt(hl-1) === 0x2E /* '.' */; + } + + async enableWASM(wasmModuleFetcher, path) { + if ( typeof WebAssembly === 'undefined' ) { return false; } + if ( this.wasmMemory instanceof WebAssembly.Memory ) { return true; } + const module = await getWasmModule(wasmModuleFetcher, path); + if ( module instanceof WebAssembly.Module === false ) { return false; } + const memory = new WebAssembly.Memory({ initial: 2 }); + const instance = await WebAssembly.instantiate(module, { + imports: { + memory, + growBuf: this.growBuf.bind(this, 24, 256) + } + }); + if ( instance instanceof WebAssembly.Instance === false ) { return false; } + this.wasmMemory = memory; + const curPageCount = memory.buffer.byteLength >>> 16; + const newPageCount = roundToPageSize(this.buf.byteLength) >>> 16; + if ( newPageCount > curPageCount ) { + memory.grow(newPageCount - curPageCount); + } + const buf = new Uint8Array(memory.buffer); + buf.set(this.buf); + this.buf = buf; + this.buf32 = new Uint32Array(this.buf.buffer); + this.matches = this.matchesWASM = instance.exports.matches; + this.add = this.addWASM = instance.exports.add; + return true; + } + + dumpInfo() { + return [ + `Buffer size (Uint8Array): ${this.buf32[CHAR1_SLOT].toLocaleString('en')}`, + ` Char segment size: ${(this.buf32[CHAR1_SLOT] - this.buf32[CHAR0_SLOT]).toLocaleString('en')}`, + `WASM: ${this.wasmMemory === null ? 'disabled' : 'enabled'}`, + ].join('\n'); + } + + //-------------------------------------------------------------------------- + // Private methods + //-------------------------------------------------------------------------- + + addCell(idown, iright, v) { + let icell = this.buf32[TRIE1_SLOT]; + this.buf32[TRIE1_SLOT] = icell + 12; + icell >>>= 2; + this.buf32[icell+0] = idown; + this.buf32[icell+1] = iright; + this.buf32[icell+2] = v; + return icell; + } + + addLeafCell(lsegchar) { + const r = this.buf32[TRIE1_SLOT] >>> 2; + let i = r; + while ( lsegchar > 127 ) { + this.buf32[i+0] = 0; + this.buf32[i+1] = i + 3; + this.buf32[i+2] = this.addSegment(lsegchar, lsegchar - 127); + lsegchar -= 127; + i += 3; + } + this.buf32[i+0] = 0; + this.buf32[i+1] = 0; + this.buf32[i+2] = this.addSegment(lsegchar, 0) | 0x80; + this.buf32[TRIE1_SLOT] = i + 3 << 2; + return r; + } + + addSegment(lsegchar, lsegend) { + if ( lsegchar === 0 ) { return 0; } + let char1 = this.buf32[CHAR1_SLOT]; + const isegchar = char1 - this.buf32[CHAR0_SLOT]; + let i = lsegchar; + do { + this.buf[char1++] = this.buf[--i]; + } while ( i !== lsegend ); + this.buf32[CHAR1_SLOT] = char1; + return isegchar << 8 | lsegchar - lsegend; + } + + growBuf(trieGrow, charGrow) { + const char0 = Math.max( + roundToPageSize(this.buf32[TRIE1_SLOT] + trieGrow), + this.buf32[CHAR0_SLOT] + ); + const char1 = char0 + this.buf32[CHAR1_SLOT] - this.buf32[CHAR0_SLOT]; + const bufLen = Math.max( + roundToPageSize(char1 + charGrow), + this.buf.length + ); + this.resizeBuf(bufLen, char0); + } + + shrinkBuf() { + // Can't shrink WebAssembly.Memory + if ( this.wasmMemory !== null ) { return; } + const char0 = this.buf32[TRIE1_SLOT] + 24; + const char1 = char0 + this.buf32[CHAR1_SLOT] - this.buf32[CHAR0_SLOT]; + const bufLen = char1 + 256; + this.resizeBuf(bufLen, char0); + } + + resizeBuf(bufLen, char0) { + bufLen = roundToPageSize(bufLen); + if ( bufLen === this.buf.length && char0 === this.buf32[CHAR0_SLOT] ) { + return; + } + const charDataLen = this.buf32[CHAR1_SLOT] - this.buf32[CHAR0_SLOT]; + if ( this.wasmMemory !== null ) { + const pageCount = (bufLen >>> 16) - (this.buf.byteLength >>> 16); + if ( pageCount > 0 ) { + this.wasmMemory.grow(pageCount); + this.buf = new Uint8Array(this.wasmMemory.buffer); + this.buf32 = new Uint32Array(this.wasmMemory.buffer); + } + } else if ( bufLen !== this.buf.length ) { + const newBuf = new Uint8Array(bufLen); + newBuf.set( + new Uint8Array( + this.buf.buffer, + 0, + this.buf32[TRIE1_SLOT] + ), + 0 + ); + newBuf.set( + new Uint8Array( + this.buf.buffer, + this.buf32[CHAR0_SLOT], + charDataLen + ), + char0 + ); + this.buf = newBuf; + this.buf32 = new Uint32Array(this.buf.buffer); + this.buf32[CHAR0_SLOT] = char0; + this.buf32[CHAR1_SLOT] = char0 + charDataLen; + } + if ( char0 !== this.buf32[CHAR0_SLOT] ) { + this.buf.set( + new Uint8Array( + this.buf.buffer, + this.buf32[CHAR0_SLOT], + charDataLen + ), + char0 + ); + this.buf32[CHAR0_SLOT] = char0; + this.buf32[CHAR1_SLOT] = char0 + charDataLen; + } + } + + reallocateBuf(newSize) { + newSize = roundToPageSize(newSize); + if ( newSize === this.buf.length ) { return; } + if ( this.wasmMemory === null ) { + const newBuf = new Uint8Array(newSize); + newBuf.set( + newBuf.length < this.buf.length + ? this.buf.subarray(0, newBuf.length) + : this.buf + ); + this.buf = newBuf; + } else { + const growBy = + ((newSize + 0xFFFF) >>> 16) - (this.buf.length >>> 16); + if ( growBy <= 0 ) { return; } + this.wasmMemory.grow(growBy); + this.buf = new Uint8Array(this.wasmMemory.buffer); + } + this.buf32 = new Uint32Array(this.buf.buffer); + } +} + +HNTrieContainer.prototype.matches = HNTrieContainer.prototype.matchesJS; +HNTrieContainer.prototype.matchesWASM = null; + +HNTrieContainer.prototype.add = HNTrieContainer.prototype.addJS; +HNTrieContainer.prototype.addWASM = null; + +/******************************************************************************/ + +// Code below is to attempt to load a WASM module which implements: +// +// - HNTrieContainer.add() +// - HNTrieContainer.matches() +// +// The WASM module is entirely optional, the JS implementations will be +// used should the WASM module be unavailable for whatever reason. + +const getWasmModule = (( ) => { + let wasmModulePromise; + + return async function(wasmModuleFetcher, path) { + if ( wasmModulePromise instanceof Promise ) { + return wasmModulePromise; + } + + // The wasm module will work only if CPU is natively little-endian, + // as we use native uint32 array in our js code. + const uint32s = new Uint32Array(1); + const uint8s = new Uint8Array(uint32s.buffer); + uint32s[0] = 1; + if ( uint8s[0] !== 1 ) { return; } + + wasmModulePromise = wasmModuleFetcher(`${path}hntrie`).catch(reason => { + console.info(reason); + }); + + return wasmModulePromise; + }; +})(); + +/******************************************************************************/ + +export default HNTrieContainer; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/html-filtering.js b/android/app/src/main/assets/extensions/ublock_origin/js/html-filtering.js new file mode 100644 index 00000000..9b5a5046 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/html-filtering.js @@ -0,0 +1,442 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2017-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { StaticExtFilteringHostnameDB } from './static-ext-filtering-db.js'; +import { entityFromHostname } from './uri-utils.js'; +import logger from './logger.js'; +import { sessionFirewall } from './filtering-engines.js'; +import µb from './background.js'; + +/******************************************************************************/ + +const pselectors = new Map(); +const duplicates = new Set(); + +const filterDB = new StaticExtFilteringHostnameDB(); + +let acceptedCount = 0; +let discardedCount = 0; +let docRegister; + +const htmlFilteringEngine = { + get acceptedCount() { + return acceptedCount; + }, + get discardedCount() { + return discardedCount; + }, + getFilterCount() { + return filterDB.size; + }, +}; + +const regexFromString = (s, exact = false) => { + if ( s === '' ) { return /^/; } + const match = /^\/(.+)\/([i]?)$/.exec(s); + if ( match !== null ) { + return new RegExp(match[1], match[2] || undefined); + } + const reStr = s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + return new RegExp(exact ? `^${reStr}$` : reStr, 'i'); +}; + +class PSelectorVoidTask { + constructor(task) { + console.info(`[uBO] HTML filtering: :${task[0]}() operator is not supported`); + } + transpose() { + } +} +class PSelectorHasTextTask { + constructor(task) { + this.needle = regexFromString(task[1]); + } + transpose(node, output) { + if ( this.needle.test(node.textContent) ) { + output.push(node); + } + } +} + +const PSelectorIfTask = class { + constructor(task) { + this.pselector = new PSelector(task[1]); + } + transpose(node, output) { + if ( this.pselector.test(node) === this.target ) { + output.push(node); + } + } +}; +PSelectorIfTask.prototype.target = true; + +class PSelectorIfNotTask extends PSelectorIfTask { +} +PSelectorIfNotTask.prototype.target = false; + +class PSelectorMinTextLengthTask { + constructor(task) { + this.min = task[1]; + } + transpose(node, output) { + if ( node.textContent.length >= this.min ) { + output.push(node); + } + } +} + +class PSelectorSpathTask { + constructor(task) { + this.spath = task[1]; + this.nth = /^(?:\s*[+~]|:)/.test(this.spath); + if ( this.nth ) { return; } + if ( /^\s*>/.test(this.spath) ) { + this.spath = `:scope ${this.spath.trim()}`; + } + } + transpose(node, output) { + const nodes = this.nth + ? PSelectorSpathTask.qsa(node, this.spath) + : node.querySelectorAll(this.spath); + for ( const node of nodes ) { + output.push(node); + } + } + // Helper method for other operators. + static qsa(node, selector) { + const parent = node.parentElement; + if ( parent === null ) { return []; } + let pos = 1; + for (;;) { + node = node.previousElementSibling; + if ( node === null ) { break; } + pos += 1; + } + return parent.querySelectorAll( + `:scope > :nth-child(${pos})${selector}` + ); + } +} + +class PSelectorUpwardTask { + constructor(task) { + const arg = task[1]; + if ( typeof arg === 'number' ) { + this.i = arg; + } else { + this.s = arg; + } + } + transpose(node, output) { + if ( this.s !== '' ) { + const parent = node.parentElement; + if ( parent === null ) { return; } + node = parent.closest(this.s); + if ( node === null ) { return; } + } else { + let nth = this.i; + for (;;) { + node = node.parentElement; + if ( node === null ) { return; } + nth -= 1; + if ( nth === 0 ) { break; } + } + } + output.push(node); + } +} +PSelectorUpwardTask.prototype.i = 0; +PSelectorUpwardTask.prototype.s = ''; + +class PSelectorXpathTask { + constructor(task) { + this.xpe = task[1]; + } + transpose(node, output) { + const xpr = docRegister.evaluate( + this.xpe, + node, + null, + XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, + null + ); + let j = xpr.snapshotLength; + while ( j-- ) { + const node = xpr.snapshotItem(j); + if ( node.nodeType === 1 ) { + output.push(node); + } + } + } +} + +class PSelector { + constructor(o) { + this.raw = o.raw; + this.selector = o.selector; + this.tasks = []; + if ( !o.tasks ) { return; } + for ( const task of o.tasks ) { + const ctor = this.operatorToTaskMap.get(task[0]) || PSelectorVoidTask; + const pselector = new ctor(task); + this.tasks.push(pselector); + } + } + prime(input) { + const root = input || docRegister; + if ( this.selector === '' ) { return [ root ]; } + if ( input !== docRegister && /^ ?[>+~]/.test(this.selector) ) { + return Array.from(PSelectorSpathTask.qsa(input, this.selector)); + } + return Array.from(root.querySelectorAll(this.selector)); + } + exec(input) { + let nodes = this.prime(input); + for ( const task of this.tasks ) { + if ( nodes.length === 0 ) { break; } + const transposed = []; + for ( const node of nodes ) { + task.transpose(node, transposed); + } + nodes = transposed; + } + return nodes; + } + test(input) { + const nodes = this.prime(input); + for ( const node of nodes ) { + let output = [ node ]; + for ( const task of this.tasks ) { + const transposed = []; + for ( const node of output ) { + task.transpose(node, transposed); + } + output = transposed; + if ( output.length === 0 ) { break; } + } + if ( output.length !== 0 ) { return true; } + } + return false; + } +} +PSelector.prototype.operatorToTaskMap = new Map([ + [ 'has', PSelectorIfTask ], + [ 'has-text', PSelectorHasTextTask ], + [ 'if', PSelectorIfTask ], + [ 'if-not', PSelectorIfNotTask ], + [ 'min-text-length', PSelectorMinTextLengthTask ], + [ 'not', PSelectorIfNotTask ], + [ 'nth-ancestor', PSelectorUpwardTask ], + [ 'spath', PSelectorSpathTask ], + [ 'upward', PSelectorUpwardTask ], + [ 'xpath', PSelectorXpathTask ], +]); + +function logOne(details, exception, selector) { + µb.filteringContext + .duplicate() + .fromTabId(details.tabId) + .setRealm('extended') + .setType('dom') + .setURL(details.url) + .setDocOriginFromURL(details.url) + .setFilter({ + source: 'extended', + raw: `${exception === 0 ? '##' : '#@#'}^${selector}`, + }) + .toLogger(); +} + +function applyProceduralSelector(details, selector) { + let pselector = pselectors.get(selector); + if ( pselector === undefined ) { + pselector = new PSelector(JSON.parse(selector)); + pselectors.set(selector, pselector); + } + const nodes = pselector.exec(); + let modified = false; + for ( const node of nodes ) { + node.remove(); + modified = true; + } + if ( modified && logger.enabled ) { + logOne(details, 0, pselector.raw); + } + return modified; +} + +function applyCSSSelector(details, selector) { + const nodes = docRegister.querySelectorAll(selector); + let modified = false; + for ( const node of nodes ) { + node.remove(); + modified = true; + } + if ( modified && logger.enabled ) { + logOne(details, 0, selector); + } + return modified; +} + +function logError(writer, msg) { + logger.writeOne({ + realm: 'message', + type: 'error', + text: msg.replace('{who}', writer.properties.get('name') || '?') + }); +} + +htmlFilteringEngine.reset = function() { + filterDB.clear(); + pselectors.clear(); + duplicates.clear(); + acceptedCount = 0; + discardedCount = 0; +}; + +htmlFilteringEngine.freeze = function() { + duplicates.clear(); + filterDB.collectGarbage(); +}; + +htmlFilteringEngine.compile = function(parser, writer) { + const isException = parser.isException(); + const { raw, compiled } = parser.result; + if ( compiled === undefined ) { + return logError(writer, `Invalid HTML filter in {who}: ##${raw}`); + } + + writer.select('HTML_FILTERS'); + + // Only exception filters are allowed to be global. + if ( parser.hasOptions() === false ) { + if ( isException ) { + writer.push([ 64, '', 1, compiled ]); + } + return; + } + + const compiledFilters = []; + let hasOnlyNegated = true; + for ( const { hn, not, bad } of parser.getExtFilterDomainIterator() ) { + if ( bad ) { continue; } + const prefix = ((isException ? 1 : 0) ^ (not ? 1 : 0)) ? '-' : '+'; + if ( not === false ) { + hasOnlyNegated = false; + } + compiledFilters.push([ 64, hn, `${prefix}${compiled}` ]); + } + + // Not allowed since it's equivalent to forbidden generic HTML filters + if ( isException === false && hasOnlyNegated ) { + return logError(writer, `Invalid HTML filter in {who}: ##${raw}`); + } + + writer.pushMany(compiledFilters); +}; + +htmlFilteringEngine.fromCompiledContent = function(reader) { + // Don't bother loading filters if stream filtering is not supported. + if ( µb.canFilterResponseData === false ) { return; } + + reader.select('HTML_FILTERS'); + + while ( reader.next() ) { + acceptedCount += 1; + const fingerprint = reader.fingerprint(); + if ( duplicates.has(fingerprint) ) { + discardedCount += 1; + continue; + } + duplicates.add(fingerprint); + const args = reader.args(); + filterDB.store(args[1], args[2]); + } +}; + +htmlFilteringEngine.retrieve = function(fctxt) { + const all = new Set(); + const hostname = fctxt.getHostname(); + filterDB.retrieveSpecifics(all, hostname); + const entity = entityFromHostname(hostname, fctxt.getDomain()); + filterDB.retrieveSpecifics(all, entity); + filterDB.retrieveSpecificsByRegex(all, hostname, fctxt.url); + filterDB.retrieveGenerics(all); + if ( all.size === 0 ) { return; } + + // https://github.com/gorhill/uBlock/issues/2835 + // Do not filter if the site is under an `allow` rule. + if ( µb.userSettings.advancedUserEnabled ) { + if ( sessionFirewall.evaluateCellZY(hostname, hostname, '*') === 2 ) { return; } + } + + // Split filters in different groups + const plains = new Set(); + const procedurals = new Set(); + for ( const s of all ) { + if ( s.charCodeAt(0) === 0x2D /* - */ ) { continue; } + const selector = s.slice(1); + const isProcedural = selector.startsWith('{'); + if ( all.has(`-${selector}`) ) { + logOne(fctxt, 1, isProcedural ? JSON.parse(selector).raw : selector); + } else if ( isProcedural ) { + procedurals.add(selector); + } else { + plains.add(selector); + } + } + + if ( plains.size === 0 && procedurals.size === 0 ) { return; } + + return { plains, procedurals }; +}; + +htmlFilteringEngine.apply = function(doc, details, selectors) { + docRegister = doc; + let modified = false; + for ( const selector of selectors.plains ) { + if ( applyCSSSelector(details, selector) ) { + modified = true; + } + } + for ( const selector of selectors.procedurals ) { + if ( applyProceduralSelector(details, selector) ) { + modified = true; + } + } + docRegister = undefined; + return modified; +}; + +htmlFilteringEngine.toSelfie = function() { + return filterDB.toSelfie(); +}; + +htmlFilteringEngine.fromSelfie = function(selfie) { + filterDB.fromSelfie(selfie); + pselectors.clear(); +}; + +/******************************************************************************/ + +export default htmlFilteringEngine; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/httpheader-filtering.js b/android/app/src/main/assets/extensions/ublock_origin/js/httpheader-filtering.js new file mode 100644 index 00000000..c5aa918e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/httpheader-filtering.js @@ -0,0 +1,199 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2021-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { StaticExtFilteringHostnameDB } from './static-ext-filtering-db.js'; +import { entityFromHostname } from './uri-utils.js'; +import logger from './logger.js'; +import { sessionFirewall } from './filtering-engines.js'; +import µb from './background.js'; + +/******************************************************************************/ + +const duplicates = new Set(); +const filterDB = new StaticExtFilteringHostnameDB(); + +let acceptedCount = 0; +let discardedCount = 0; + +const headerIndexFromName = function(name, headers, start = 0) { + for ( let i = start; i < headers.length; i++ ) { + if ( headers[i].name.toLowerCase() !== name ) { continue; } + return i; + } + return -1; +}; + +const logOne = function(isException, token, fctxt) { + fctxt.duplicate() + .setRealm('extended') + .setType('header') + .setFilter({ + modifier: true, + result: isException ? 2 : 1, + source: 'extended', + raw: `${(isException ? '#@#' : '##')}^responseheader(${token})`, + }) + .toLogger(); +}; + +const httpheaderFilteringEngine = { + get acceptedCount() { + return acceptedCount; + }, + get discardedCount() { + return discardedCount; + } +}; + +httpheaderFilteringEngine.reset = function() { + filterDB.clear(); + duplicates.clear(); + acceptedCount = 0; + discardedCount = 0; +}; + +httpheaderFilteringEngine.freeze = function() { + duplicates.clear(); + filterDB.collectGarbage(); +}; + +httpheaderFilteringEngine.compile = function(parser, writer) { + writer.select('HTTPHEADER_FILTERS'); + + const isException = parser.isException(); + const headerName = parser.getResponseheaderName(); + + // Tokenless is meaningful only for exception filters. + if ( headerName === '' && isException === false ) { return; } + + // Only exception filters are allowed to be global. + if ( parser.hasOptions() === false ) { + if ( isException ) { + writer.push([ 64, '', 1, headerName ]); + } + return; + } + + // https://github.com/gorhill/uBlock/issues/3375 + // Ignore instances of exception filter with negated hostnames, + // because there is no way to create an exception to an exception. + + for ( const { hn, not, bad } of parser.getExtFilterDomainIterator() ) { + if ( bad ) { continue; } + const prefix = ((isException ? 1 : 0) ^ (not ? 1 : 0)) ? '-' : '+'; + writer.push([ 64, hn, `${prefix}${headerName}` ]); + } +}; + +// 01234567890123456789 +// responseheader(name) +// ^ ^ +// 15 -1 + +httpheaderFilteringEngine.fromCompiledContent = function(reader) { + reader.select('HTTPHEADER_FILTERS'); + + while ( reader.next() ) { + acceptedCount += 1; + const fingerprint = reader.fingerprint(); + if ( duplicates.has(fingerprint) ) { + discardedCount += 1; + continue; + } + duplicates.add(fingerprint); + const args = reader.args(); + filterDB.store(args[1], args[2]); + } +}; + +httpheaderFilteringEngine.apply = function(fctxt, headers) { + if ( filterDB.size === 0 ) { return; } + + const hostname = fctxt.getHostname(); + if ( hostname === '' ) { return; } + + const all = new Set(); + filterDB.retrieveSpecifics(all, hostname); + const entity = entityFromHostname(hostname, fctxt.getDomain()); + filterDB.retrieveSpecifics(all, entity); + filterDB.retrieveSpecificsByRegex(all, hostname, fctxt.url); + filterDB.retrieveGenerics(all); + if ( all.size === 0 ) { return; } + + // https://github.com/gorhill/uBlock/issues/2835 + // Do not filter response headers if the site is under an `allow` rule. + if ( µb.userSettings.advancedUserEnabled ) { + if ( sessionFirewall.evaluateCellZY(hostname, hostname, '*') === 2 ) { return; } + } + + // Split filters in different groups + const filters = new Set(); + const exceptions = new Set(); + for ( const s of all ) { + const selector = s.slice(1); + if ( s.charCodeAt(0) === 0x2D /* - */ ) { + exceptions.add(selector); + } else { + filters.add(selector); + } + } + + const hasGlobalException = exceptions.has(''); + + let modified = false; + let i = 0; + + for ( const name of filters ) { + const isExcepted = hasGlobalException || exceptions.has(name); + if ( isExcepted ) { + if ( logger.enabled ) { + logOne(true, hasGlobalException ? '' : name, fctxt); + } + continue; + } + i = 0; + for (;;) { + i = headerIndexFromName(name, headers, i); + if ( i === -1 ) { break; } + headers.splice(i, 1); + if ( logger.enabled ) { + logOne(false, name, fctxt); + } + modified = true; + } + } + + return modified; +}; + +httpheaderFilteringEngine.toSelfie = function() { + return filterDB.toSelfie(); +}; + +httpheaderFilteringEngine.fromSelfie = function(selfie) { + filterDB.fromSelfie(selfie); +}; + +/******************************************************************************/ + +export default httpheaderFilteringEngine; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/i18n.js b/android/app/src/main/assets/extensions/ublock_origin/js/i18n.js new file mode 100644 index 00000000..65e429c9 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/i18n.js @@ -0,0 +1,351 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +const i18n = + self.browser instanceof Object && + self.browser instanceof Element === false + ? self.browser.i18n + : self.chrome.i18n; + +const i18n$ = (...args) => i18n.getMessage(...args); + +/******************************************************************************/ + +const isBackgroundProcess = document.title === 'uBlock Origin Background Page'; + +if ( isBackgroundProcess !== true ) { + + // http://www.w3.org/International/questions/qa-scripts#directions + document.body.setAttribute( + 'dir', + ['ar', 'he', 'fa', 'ps', 'ur'].indexOf(i18n$('@@ui_locale')) !== -1 + ? 'rtl' + : 'ltr' + ); + + // https://github.com/gorhill/uBlock/issues/2084 + // Anything else than , , , , , and will + // be rendered as plain text. + // For , only href attribute must be present, and it MUST starts with + // `https://`, and includes no single- or double-quotes. + // No HTML entities are allowed, there is code to handle existing HTML + // entities already present in translation files until they are all gone. + + const allowedTags = new Set([ + 'a', + 'b', + 'code', + 'em', + 'i', + 'span', + 'u', + ]); + + const expandHtmlEntities = (( ) => { + const entities = new Map([ + // TODO: Remove quote entities once no longer present in translation + // files. Other entities must stay. + [ '­', '\u00AD' ], + [ '“', '“' ], + [ '”', '”' ], + [ '‘', '‘' ], + [ '’', '’' ], + [ '<', '<' ], + [ '>', '>' ], + ]); + const decodeEntities = match => { + return entities.get(match) || match; + }; + return function(text) { + if ( text.indexOf('&') !== -1 ) { + text = text.replace(/&[a-z]+;/g, decodeEntities); + } + return text; + }; + })(); + + const safeTextToTextNode = function(text) { + return document.createTextNode(expandHtmlEntities(text)); + }; + + const sanitizeElement = function(node) { + if ( allowedTags.has(node.localName) === false ) { return null; } + node.removeAttribute('style'); + let child = node.firstElementChild; + while ( child !== null ) { + const next = child.nextElementSibling; + if ( sanitizeElement(child) === null ) { + child.remove(); + } + child = next; + } + return node; + }; + + const safeTextToDOM = function(text, parent) { + if ( text === '' ) { return; } + + // Fast path (most common). + if ( text.indexOf('<') === -1 ) { + const toInsert = safeTextToTextNode(text); + let toReplace = parent.childCount !== 0 + ? parent.firstChild + : null; + while ( toReplace !== null ) { + if ( toReplace.nodeType === 3 && toReplace.nodeValue === '_' ) { + break; + } + toReplace = toReplace.nextSibling; + } + if ( toReplace !== null ) { + parent.replaceChild(toInsert, toReplace); + } else { + parent.appendChild(toInsert); + } + return; + } + + // Slow path. + // `

` no longer allowed. Code below can be removed once all

's are + // gone from translation files. + text = text.replace(/^

|<\/p>/g, '') + .replace(/

/g, '\n\n'); + // Parse allowed HTML tags. + const domParser = new DOMParser(); + const parsedDoc = domParser.parseFromString(text, 'text/html'); + let node = parsedDoc.body.firstChild; + while ( node !== null ) { + const next = node.nextSibling; + switch ( node.nodeType ) { + case 1: // element + if ( sanitizeElement(node) === null ) { break; } + parent.appendChild(node); + break; + case 3: // text + parent.appendChild(node); + break; + default: + break; + } + node = next; + } + }; + + i18n.safeTemplateToDOM = function(id, dict, parent) { + if ( parent === undefined ) { + parent = document.createDocumentFragment(); + } + let textin = i18n$(id); + if ( textin === '' ) { + return parent; + } + if ( textin.indexOf('{{') === -1 ) { + safeTextToDOM(textin, parent); + return parent; + } + const re = /\{\{\w+\}\}/g; + let textout = ''; + for (;;) { + const match = re.exec(textin); + if ( match === null ) { + textout += textin; + break; + } + textout += textin.slice(0, match.index); + let prop = match[0].slice(2, -2); + if ( Object.hasOwn(dict, prop) ) { + textout += dict[prop].replace(//g, '>'); + } else { + textout += prop; + } + textin = textin.slice(re.lastIndex); + } + safeTextToDOM(textout, parent); + return parent; + }; + + // Helper to deal with the i18n'ing of HTML files. + i18n.render = function(context) { + const docu = document; + const root = context || docu; + + for ( const elem of root.querySelectorAll('[data-i18n]') ) { + let text = i18n$(elem.getAttribute('data-i18n')); + if ( !text ) { continue; } + if ( text.indexOf('{{') === -1 ) { + safeTextToDOM(text, elem); + continue; + } + // Handle selector-based placeholders: these placeholders tell where + // existing child DOM element are to be positioned relative to the + // localized text nodes. + const parts = text.split(/(\{\{[^}]+\}\})/); + const fragment = document.createDocumentFragment(); + let textBefore = ''; + for ( let part of parts ) { + if ( part === '' ) { continue; } + if ( part.startsWith('{{') && part.endsWith('}}') ) { + // TODO: remove detection of ':' once it no longer appears + // in translation files. + const pos = part.indexOf(':'); + if ( pos !== -1 ) { + part = part.slice(0, pos) + part.slice(-2); + } + const selector = part.slice(2, -2); + let node; + // Ideally, the i18n strings explicitly refer to the + // class of the element to insert. However for now we + // will create a class from what is currently found in + // the placeholder and first try to lookup the resulting + // selector. This way we don't have to revisit all + // translations just for the sake of declaring the proper + // selector in the placeholder field. + if ( selector.charCodeAt(0) !== 0x2E /* '.' */ ) { + node = elem.querySelector(`.${selector}`); + } + if ( node instanceof Element === false ) { + node = elem.querySelector(selector); + } + if ( node instanceof Element ) { + safeTextToDOM(textBefore, fragment); + fragment.appendChild(node); + textBefore = ''; + continue; + } + } + textBefore += part; + } + if ( textBefore !== '' ) { + safeTextToDOM(textBefore, fragment); + } + elem.appendChild(fragment); + } + + for ( const elem of root.querySelectorAll('[data-i18n-title]') ) { + const text = i18n$(elem.getAttribute('data-i18n-title')); + if ( !text ) { continue; } + elem.setAttribute('title', expandHtmlEntities(text)); + } + + for ( const elem of root.querySelectorAll('[aria-label]') ) { + const text = i18n$(elem.getAttribute('aria-label')); + if ( !text ) { continue; } + elem.setAttribute('aria-label', expandHtmlEntities(text)); + } + + for ( const elem of root.querySelectorAll('[placeholder]') ) { + const text = i18n$(elem.getAttribute('placeholder')); + if ( text === '' ) { continue; } + elem.setAttribute('placeholder', text); + } + + for ( const elem of root.querySelectorAll('[data-i18n-tip]') ) { + const text = i18n$(elem.getAttribute('data-i18n-tip')) + .replace(/
/g, '\n') + .replace(/\n{3,}/g, '\n\n'); + elem.setAttribute('data-tip', text); + if ( elem.getAttribute('aria-label') === 'data-tip' ) { + elem.setAttribute('aria-label', text); + } + } + + for ( const elem of root.querySelectorAll('[data-i18n-label]') ) { + const text = i18n$(elem.getAttribute('data-i18n-label')); + elem.setAttribute('label', text); + } + }; + + i18n.renderElapsedTimeToString = function(tstamp) { + let value = (Date.now() - tstamp) / 60000; + if ( value < 2 ) { + return i18n$('elapsedOneMinuteAgo'); + } + if ( value < 60 ) { + return i18n$('elapsedManyMinutesAgo').replace('{{value}}', Math.floor(value).toLocaleString()); + } + value /= 60; + if ( value < 2 ) { + return i18n$('elapsedOneHourAgo'); + } + if ( value < 24 ) { + return i18n$('elapsedManyHoursAgo').replace('{{value}}', Math.floor(value).toLocaleString()); + } + value /= 24; + if ( value < 2 ) { + return i18n$('elapsedOneDayAgo'); + } + return i18n$('elapsedManyDaysAgo').replace('{{value}}', Math.floor(value).toLocaleString()); + }; + + const unicodeFlagToImageSrc = new Map([ + [ '🇦🇱', 'al' ], [ '🇦🇷', 'ar' ], [ '🇦🇹', 'at' ], [ '🇧🇦', 'ba' ], + [ '🇧🇪', 'be' ], [ '🇧🇬', 'bg' ], [ '🇧🇷', 'br' ], [ '🇨🇦', 'ca' ], + [ '🇨🇭', 'ch' ], [ '🇨🇳', 'cn' ], [ '🇨🇴', 'co' ], [ '🇨🇾', 'cy' ], + [ '🇨🇿', 'cz' ], [ '🇩🇪', 'de' ], [ '🇩🇰', 'dk' ], [ '🇩🇿', 'dz' ], + [ '🇪🇪', 'ee' ], [ '🇪🇬', 'eg' ], [ '🇪🇸', 'es' ], [ '🇫🇮', 'fi' ], + [ '🇫🇴', 'fo' ], [ '🇫🇷', 'fr' ], [ '🇬🇷', 'gr' ], [ '🇭🇷', 'hr' ], + [ '🇭🇺', 'hu' ], [ '🇮🇩', 'id' ], [ '🇮🇱', 'il' ], [ '🇮🇳', 'in' ], + [ '🇮🇷', 'ir' ], [ '🇮🇸', 'is' ], [ '🇮🇹', 'it' ], [ '🇯🇵', 'jp' ], + [ '🇰🇷', 'kr' ], [ '🇰🇿', 'kz' ], [ '🇱🇰', 'lk' ], [ '🇱🇹', 'lt' ], + [ '🇱🇻', 'lv' ], [ '🇲🇦', 'ma' ], [ '🇲🇩', 'md' ], [ '🇲🇰', 'mk' ], + [ '🇲🇽', 'mx' ], [ '🇲🇾', 'my' ], [ '🇳🇱', 'nl' ], [ '🇳🇴', 'no' ], + [ '🇳🇵', 'np' ], [ '🇵🇱', 'pl' ], [ '🇵🇹', 'pt' ], [ '🇷🇴', 'ro' ], + [ '🇷🇸', 'rs' ], [ '🇷🇺', 'ru' ], [ '🇸🇦', 'sa' ], [ '🇸🇮', 'si' ], + [ '🇸🇰', 'sk' ], [ '🇸🇪', 'se' ], [ '🇸🇷', 'sr' ], [ '🇹🇭', 'th' ], + [ '🇹🇯', 'tj' ], [ '🇹🇼', 'tw' ], [ '🇹🇷', 'tr' ], [ '🇺🇦', 'ua' ], + [ '🇺🇿', 'uz' ], [ '🇻🇳', 'vn' ], [ '🇽🇰', 'xk' ], + ]); + const reUnicodeFlags = new RegExp( + Array.from(unicodeFlagToImageSrc).map(a => a[0]).join('|'), + 'gu' + ); + i18n.patchUnicodeFlags = function(text) { + const fragment = document.createDocumentFragment(); + let i = 0; + for (;;) { + const match = reUnicodeFlags.exec(text); + if ( match === null ) { break; } + if ( match.index > i ) { + fragment.append(text.slice(i, match.index)); + } + const img = document.createElement('img'); + const countryCode = unicodeFlagToImageSrc.get(match[0]); + img.src = `/img/flags-of-the-world/${countryCode}.png`; + img.title = countryCode; + img.classList.add('countryFlag'); + fragment.append(img, '\u200A'); + i = reUnicodeFlags.lastIndex; + } + if ( i < text.length ) { + fragment.append(text.slice(i)); + } + return fragment; + }; + + i18n.render(); +} + +/******************************************************************************/ + +export { i18n, i18n$ }; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/jsonpath.js b/android/app/src/main/assets/extensions/ublock_origin/js/jsonpath.js new file mode 100644 index 00000000..53d9d9b0 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/jsonpath.js @@ -0,0 +1,613 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2025-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +/** + * Implement the parsing of uBO-flavored JSON path queries. + * + * Reference to original JSON path syntax: + * https://www.rfc-editor.org/info/rfc9535/ + * + * uBO-flavored JSON path implementation differs as follow: + * - Array slice operator not supported + * - Selectors can be a `/`-delimited regex, i.e. `$./pattern/` + * - Onle a single filter selector is allowed in filter selector syntax + * + * - uBO-flavored JSON path supports a limited set of filter selectors: + * set of expressions since unlike the official implementation, uBO can't use + * JS eval() to evaluate arbitrary JS expressions. The operand MUST be valid + * JSON. The currently supported expressions are: + * - ==: strict equality + * - !=: strict inequality + * - <: less than + * - <=: less than or equal to + * - >: greater than + * - >=: greater than or equal to + * - ^=: stringified value starts with + * - $=: stringified value ends with + * - *=: stringified value includes + * - =/.../: true if the regular expression matches the stringified value + * + * - uBO-flavored JSON path supports assignement operator: + * - =[any well-formed JSON value] + * - =repl(...): [to be documented] i.e. {"regex":"...","flags":"i","replacement":"..."} + * - =call(...): [to be documented] i.e. ["${obj}","setAttribute","${key}"] + * * + * - Examples (from "JSONPath examples" at reference link) + * - .store.book[*].author + * - ..author + * - .store.* + * - .store..price + * - ..book[2] + * - ..book[?(.isbn)] + * - ..book[?(.price<10)] + * - ..* + * + * uBO-flavored syntax supports assigning a value to a resolved JSON path by + * appending `=[value]` to the JSON path query. The assigned value MUST be + * valid JSON. Examples: + * - .store..price=0 + * - .store.book[*].author="redacted" + * + * A JSONPath instance can be use to compile a JSON path query, and the result + * of the compilation can be applied to different objects. When a JSON path + * query does not assign a value, the resolved property will be removed. + * + * More capabilities can be added in the future as needed. + * + * */ + +export class JSONPath { + static create(query) { + const jsonp = new JSONPath(); + jsonp.compile(query); + return jsonp; + } + static toJSON(obj, stringifier, ...args) { + return (stringifier || JSON.stringify)(obj, ...args) + .replace(/\//g, '\\/'); + } + static keys = Object.keys; + static entries = Object.entries; + static hasOwn = Object.hasOwn; + static Regex = RegExp; + get value() { + return this.#compiled && this.#compiled.rval; + } + set value(v) { + if ( this.#compiled === undefined ) { return; } + this.#compiled.rval = v; + } + get valid() { + return this.#compiled !== undefined; + } + compile(query) { + this.#compiled = undefined; + const v2 = query.startsWith('v2:'); + if ( v2 ) { query = query.slice(3); } + const r = this.#compile(query, 0); + if ( r === undefined ) { return; } + if ( r.i !== query.length ) { + let val; + if ( query.startsWith('=', r.i) ) { + const match = this.#reRval.exec(query.slice(r.i)); + if ( match ) { + r.modify = match[1]; + val = match[2]; + } else { + val = query.slice(r.i+1); + } + } else if ( query.startsWith('+=', r.i) ) { + r.modify = '+'; + val = query.slice(r.i+2); + } + try { r.rval = JSON.parse(val); } + catch { return; } + } + r.v2 = v2; + this.#compiled = r; + } + evaluate(root) { + if ( this.valid === false ) { return []; } + this.#root = { '$': root }; + const paths = this.#evaluate(this.#compiled.steps, []); + this.#root = null; + return paths; + } + apply(root) { + if ( this.valid === false ) { return; } + const { rval } = this.#compiled; + this.#root = { '$': root }; + const paths = this.#evaluate(this.#compiled.steps, []); + let i = paths.length + if ( i === 0 ) { this.#root = null; return; } + while ( i-- ) { + const { obj, key } = this.#resolvePath(paths[i]); + if ( obj === undefined ) { continue; } + if ( rval !== undefined ) { + this.#modifyVal(obj, key); + } else if ( Array.isArray(obj) && typeof key === 'number' ) { + obj.splice(key, 1); + } else { + delete obj[key]; + } + } + const result = this.#root['$'] ?? null; + this.#root = null; + return result; + } + dump() { + return JSON.stringify(this.#compiled); + } + toJSON(obj, ...args) { + return JSONPath.toJSON(obj, null, ...args) + } + get [Symbol.toStringTag]() { + return 'JSONPath'; + } + #UNDEFINED = 0; + #ROOT = 1; + #CURRENT = 2; + #CHILDREN = 3; + #DESCENDANTS = 4; + #QUANTIFIER = 5; + #reUnquotedIdentifier = /^[A-Za-z_][\w]*|^\*/; + #reExpr = /^\s*([!=^$*]=|[<>]=?)\s*(.+?)\]/; + #reIndice = /^-?\d+/; + #reRval = /^=([a-z]+)\((.+)\)$/; + #reQuantifier = /^\{(\d+|\d+,\d+|\d+,|,\d+)\};\$/; + #root; + #compiled; + #compile(query, i) { + if ( query.length === 0 ) { return; } + const steps = []; + let c = query.charCodeAt(i); + if ( c === 0x24 /* $ */ ) { + steps.push({ mv: this.#ROOT }); + i += 1; + } else if ( c === 0x40 /* @ */ ) { + steps.push({ mv: this.#CURRENT }); + i += 1; + } else { + steps.push({ mv: i === 0 ? this.#ROOT : this.#CURRENT }); + } + let mv = this.#UNDEFINED; + for (;;) { + if ( i === query.length ) { break; } + c = query.charCodeAt(i); + if ( c === 0x20 /* whitespace */ ) { + i += 1; + continue; + } + // Dot accessor syntax + if ( c === 0x2E /* . */ ) { + if ( mv !== this.#UNDEFINED ) { return; } + if ( query.startsWith('..', i) ) { + mv = this.#DESCENDANTS; + i += 2; + } else { + mv = this.#CHILDREN; + i += 1; + } + continue; + } + if ( c === 0x3B /* ; */ ) { + if ( query.startsWith(';$', i) === false ) { return; } + steps.push( + { mv: this.#QUANTIFIER, min: 1, max: 1e6 }, + { mv: this.#ROOT } + ); + i += 2; + mv = this.#UNDEFINED; + continue; + } + if ( c === 0x7B /* { */ ) { + const match = this.#reQuantifier.exec(query.slice(i)); + if ( match === null ) { return; } + const comma = match[1].indexOf(','); + let min, max; + if ( comma === -1 ) { + min = max = parseInt(match[1]); + } else { + min = parseInt(match[1].slice(0, comma)) || 0; + max = parseInt(match[1].slice(comma+1)) || 1e6; + } + steps.push( + { mv: this.#QUANTIFIER, min, max }, + { mv: this.#ROOT } + ); + i += match[0].length; + mv = this.#UNDEFINED; + continue; + } + if ( c !== 0x5B /* [ */ ) { + if ( mv === this.#UNDEFINED ) { + const step = steps.at(-1); + if ( step === undefined ) { return; } + const j = this.#compileExpr(query, step, i); + if ( j ) { i = j; } + break; + } + const r = this.#consumeUnquotedIdentifier(query, i); + if ( r === undefined ) { return; } + steps.push({ mv, k: r.s }); + i = r.i; + mv = this.#UNDEFINED; + continue; + } + // Bracket accessor syntax + if ( query.startsWith('[?', i) ) { + const not = query.charCodeAt(i+2) === 0x21 /* ! */ ? 1 : 0; + const j = i + 2 + not; + const r = this.#compile(query, j); + if ( r === undefined ) { return; } + if ( query.startsWith(']', r.i) === false ) { return; } + if ( not ) { r.steps.at(-1).not = true; } + steps.push({ mv: mv || this.#CHILDREN, steps: r.steps }); + i = r.i + 1; + mv = this.#UNDEFINED; + continue; + } + if ( query.startsWith('[*]', i) ) { + mv ||= this.#CHILDREN; + steps.push({ mv, k: '*' }); + i += 3; + mv = this.#UNDEFINED; + continue; + } + const r = this.#consumeIdentifier(query, i+1); + if ( r === undefined ) { return; } + mv ||= this.#CHILDREN; + steps.push({ mv, k: r.s }); + i = r.i + 1; + mv = this.#UNDEFINED; + } + if ( steps.length === 0 ) { return; } + if ( mv !== this.#UNDEFINED ) { return; } + return { steps, i }; + } + #evaluate(steps, pathin) { + let resultset = []; + if ( Array.isArray(steps) === false ) { return resultset; } + for ( const step of steps ) { + switch ( step.mv ) { + case this.#ROOT: + resultset = [ [ '$' ] ]; + break; + case this.#CURRENT: + if ( step.op ) { + const { obj, key } = this.#resolvePath(pathin); + if ( obj === undefined ) { return []; } + const outcome = this.#evaluateExpr(step, obj, key); + if ( outcome !== true ) { break; } + } + resultset = [ pathin ]; + break; + case this.#CHILDREN: + case this.#DESCENDANTS: { + if ( resultset.length === 0 ) { break; } + resultset = this.#getMatches(resultset, step); + break; + } + case this.#QUANTIFIER: { + const { length } = resultset; + if ( length < step.min || length > step.max ) { return []; } + resultset = []; + break; + } + default: + break; + } + } + return resultset; + } + #getMatches(listin, step) { + const listout = []; + for ( const pathin of listin ) { + const { value: owner } = this.#resolvePath(pathin); + if ( owner === undefined ) { continue; } + if ( step.steps ) { + this.#getMatchesFromExpr(pathin, step, owner, listout); + continue; + } + const iter = this.#expandKey(owner, step.k); + if ( iter ) { + for ( const k of iter ) { + const outcome = this.#evaluateExpr(step, owner, k); + if ( outcome !== true ) { continue; } + listout.push([ ...pathin, k ]); + } + } + if ( step.mv !== this.#DESCENDANTS ) { continue; } + for ( const { obj, key, path } of this.#getDescendants(owner, true) ) { + const iter = this.#expandKey(obj[key], step.k); + if ( iter === undefined ) { continue; } + for ( const k of iter ) { + const outcome = this.#evaluateExpr(step, obj[key], k); + if ( outcome !== true ) { continue; } + listout.push([ ...pathin, ...path, k ]); + } + } + } + return listout; + } + #expandKey(owner, k) { + if ( typeof owner !== 'object' || owner === null ) { return; } + if ( Array.isArray(k) ) { + const out = []; + for ( const a of k ) { + const iter = this.#expandKey(owner, a); + if ( iter === undefined ) { continue; } + out.push(...iter); + } + return out; + } + if ( typeof k === 'number' ) { + if ( Array.isArray(owner) === false ) { return; } + return [ k >= 0 ? k : owner.length + k ]; + } + if ( k === '*' ) { + if ( Array.isArray(owner) ) { return owner.keys(); } + return JSONPath.keys(owner); + } + if ( k instanceof JSONPath.Regex ) { + const out = []; + for ( const key of JSONPath.keys(owner) ) { + if ( k.test(key) === false ) { continue; } + out.push(key); + } + return out; + } + return [ k ]; + } + #getMatchesFromExpr(pathin, step, owner, out) { + const recursive = step.mv === this.#DESCENDANTS; + const v2 = this.#compiled.v2 || recursive || Array.isArray(owner); + for ( const { path } of this.#getDescendants(owner, recursive) ) { + const q = v2 ? [ ...pathin, ...path ] : pathin; + const r = this.#evaluate(step.steps, q); + if ( Boolean(r?.length) === false ) { continue; } + out.push(q); + if ( v2 === false ) { break; } + } + } + #getDescendants(v, recursive) { + const iterator = { + next() { + const n = this.stack.length; + if ( n === 0 ) { + this.value = undefined; + this.done = true; + return this; + } + const details = this.stack[n-1]; + const entry = details.keys.next(); + if ( entry.done ) { + this.stack.pop(); + this.path.pop(); + return this.next(); + } + this.path[n-1] = entry.value; + this.value = { + obj: details.obj, + key: entry.value, + path: this.path.slice(), + }; + const v = this.value.obj[this.value.key]; + if ( recursive ) { + if ( Array.isArray(v) ) { + this.stack.push({ obj: v, keys: v.keys() }); + } else if ( typeof v === 'object' && v !== null ) { + this.stack.push({ obj: v, keys: JSONPath.keys(v).values() }); + } + } + return this; + }, + path: [], + value: undefined, + done: false, + stack: [], + [Symbol.iterator]() { return this; }, + }; + if ( Array.isArray(v) ) { + iterator.stack.push({ obj: v, keys: v.keys() }); + } else if ( typeof v === 'object' && v !== null ) { + iterator.stack.push({ obj: v, keys: JSONPath.keys(v).values() }); + } + return iterator; + } + #consumeIdentifier(query, i) { + const keys = []; + for (;;) { + const c0 = query.charCodeAt(i); + if ( c0 === 0x5D /* ] */ ) { break; } + if ( c0 === 0x2C /* , */ || c0 === 0x20 /* SPACE */) { + i += 1; + continue; + } + if ( c0 === 0x22 /* " */ || c0 === 0x27 /* ' */ ) { + const r = this.#untilChar(query, c0, i+1); + if ( r === undefined ) { return; } + keys.push(r.s); + i = r.i; + continue; + } + if ( c0 === 0x2D /* - */ || c0 >= 0x30 && c0 <= 0x39 ) { + const match = this.#reIndice.exec(query.slice(i)); + if ( match === null ) { return; } + const indice = parseInt(query.slice(i), 10); + keys.push(indice); + i += match[0].length; + continue; + } + const r = this.#consumeUnquotedIdentifier(query, i); + if ( r === undefined ) { return; } + keys.push(r.s); + i = r.i; + } + return { s: keys.length === 1 ? keys[0] : keys, i }; + } + #consumeUnquotedIdentifier(query, i) { + if ( query.charCodeAt(i) === 0x2F /* / */ ) { + const r = this.#untilChar(query, 0x2F, i+1); + if ( r === undefined ) { return; } + let re; + try { re = new JSONPath.Regex(r.s); } catch { return; } + return { s: re, i: r.i }; + } + const match = this.#reUnquotedIdentifier.exec(query.slice(i)); + if ( match === null ) { return; } + return { s: match[0], i: i + match[0].length }; + } + #untilChar(query, targetCharCode, i) { + const len = query.length; + const parts = []; + let beg = i, end = i; + for (;;) { + if ( end === len ) { return; } + const c = query.charCodeAt(end); + if ( c === targetCharCode ) { + parts.push(query.slice(beg, end)); + end += 1; + break; + } + if ( c === 0x5C /* \ */ && (end+1) < len ) { + const d = query.charCodeAt(end+1); + if ( d === targetCharCode ) { + parts.push(query.slice(beg, end)); + end += 1; + beg = end; + } + } + end += 1; + } + return { s: parts.join(''), i: end }; + } + #compileExpr(query, step, i) { + if ( query.startsWith('=/', i) ) { + const r = this.#untilChar(query, 0x2F /* / */, i+2); + if ( r === undefined ) { return i; } + const match = /^[i]/.exec(query.slice(r.i)); + try { + step.rval = new JSONPath.Regex(r.s, match && match[0] || undefined); + } catch { return; } + step.op = 're'; + if ( match ) { r.i += match[0].length; } + return r.i; + } + const match = this.#reExpr.exec(query.slice(i)); + if ( match === null ) { return; } + const op = match[1], rval = match[2]; + if ( rval.charCodeAt(0) === 0x27 /* ' */ ) { + const r = this.#untilChar(rval, 0x27, 1); + if ( r === undefined ) { return; } + step.rval = r.s; + step.op = op; + } else { + try { + step.rval = JSON.parse(rval); + step.op = op; + } catch { return; } + } + return i + match[0].length - 1; + } + #resolvePath(path) { + if ( path.length === 0 ) { return { value: this.#root }; } + const key = path.at(-1); + let obj = this.#root + for ( let i = 0, n = path.length-1; i < n; i++ ) { + obj = obj[path[i]]; + if ( obj instanceof Object === false ) { return {}; } + } + return { obj, key, value: obj[key] }; + } + #evaluateExpr(step, owner, k) { + if ( owner === undefined || owner === null ) { return; } + const hasOwn = owner[k] !== undefined || JSONPath.hasOwn(owner, k); + if ( step.op !== undefined && hasOwn === false ) { return; } + const target = step.not !== true; + const v = owner[k]; + switch ( step.op ) { + case '==': return (v === step.rval) === target; + case '!=': return (v !== step.rval) === target; + case '<': return (v < step.rval) === target; + case '<=': return (v <= step.rval) === target; + case '>': return (v > step.rval) === target; + case '>=': return (v >= step.rval) === target; + case '^=': return `${v}`.startsWith(step.rval) === target; + case '$=': return `${v}`.endsWith(step.rval) === target; + case '*=': return `${v}`.includes(step.rval) === target; + case 're': return step.rval.test(`${v}`); + default: break; + } + return hasOwn === target; + } + #modifyVal(obj, key) { + let { modify, rval } = this.#compiled; + if ( typeof rval === 'string' ) { + rval = rval.replace('${now}', `${Date.now()}`); + } + switch ( modify ) { + case undefined: + obj[key] = rval; + break; + case '+': { + if ( rval instanceof Object === false ) { return; } + const lval = obj[key]; + if ( lval instanceof Object === false ) { return; } + if ( Array.isArray(lval) ) { return; } + for ( const [ k, v ] of JSONPath.entries(rval) ) { + lval[k] = v; + } + break; + } + case 'call': { + const entries = rval.slice(); + if ( entries.length < 2 ) { break; } + entries.forEach((a, i, aa) => { + if ( a === '${obj}' ) { aa[i] = obj; } + else if ( a === '${key}' ) { aa[i] = key; } + else if ( a === '${val}' ) { aa[i] = obj[key]; } + }); + const instance = entries[0] ?? self; + instance[entries[1]](...entries.slice(2)); + break; + } + case 'repl': { + const lval = obj[key]; + if ( typeof lval !== 'string' ) { return; } + if ( this.#compiled.re === undefined ) { + this.#compiled.re = null; + try { + this.#compiled.re = rval.regex !== undefined + ? new JSONPath.Regex(rval.regex, rval.flags) + : new JSONPath.Regex(rval.pattern.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')); + } catch { } + } + if ( this.#compiled.re === null ) { return; } + obj[key] = lval.replace(this.#compiled.re, rval.replacement); + break; + } + default: + break; + } + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/logger-ui-inspector.js b/android/app/src/main/assets/extensions/ublock_origin/js/logger-ui-inspector.js new file mode 100644 index 00000000..a45fc578 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/logger-ui-inspector.js @@ -0,0 +1,703 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { dom, qs$, qsa$ } from './dom.js'; + +/******************************************************************************/ + +(( ) => { + +/******************************************************************************/ + +const logger = self.logger; +const showdomButton = qs$('#showdom'); +const inspector = qs$('#domInspector'); +const domTree = qs$('#domTree'); +const filterToIdMap = new Map(); + +let inspectedTabId = 0; +let inspectedHostname = ''; +let uidGenerator = 1; + +/******************************************************************************* + * + * How it works: + * + * 1. The logger/inspector is enabled from the logger window + * + * 2. The inspector content script is injected in the root frame of the tab + * currently selected in the logger + * + * 3. The inspector content script asks the logger/inspector to establish + * a two-way communication channel + * + * 3. The inspector content script embed an inspector frame in the document + * being inspected and waits for the inspector frame to be fully loaded + * + * 4. The inspector content script sends a messaging port object to the + * embedded inspector frame for a two-way communication channel between + * the inspector frame and the inspector content script + * + * 5. The inspector content script sends dom information to the + * logger/inspector + * + * */ + +const contentInspectorChannel = (( ) => { + let bcChannel; + let toContentPort; + + const start = ( ) => { + bcChannel = new globalThis.BroadcastChannel('contentInspectorChannel'); + bcChannel.onmessage = ev => { + const msg = ev.data || {}; + connect(msg.tabId, msg.frameId); + }; + browser.webNavigation.onDOMContentLoaded.addListener(onContentLoaded); + }; + + const shutdown = ( ) => { + browser.webNavigation.onDOMContentLoaded.removeListener(onContentLoaded); + disconnect(); + bcChannel.close(); + bcChannel.onmessage = null; + bcChannel = undefined; + }; + + const connect = (tabId, frameId) => { + disconnect(); + try { + toContentPort = browser.tabs.connect(tabId, { frameId }); + toContentPort.onMessage.addListener(onContentMessage); + toContentPort.onDisconnect.addListener(onContentDisconnect); + } catch { + } + }; + + const disconnect = ( ) => { + if ( toContentPort === undefined ) { return; } + toContentPort.onMessage.removeListener(onContentMessage); + toContentPort.onDisconnect.removeListener(onContentDisconnect); + toContentPort.disconnect(); + toContentPort = undefined; + }; + + const send = msg => { + if ( toContentPort === undefined ) { return; } + toContentPort.postMessage(msg); + }; + + const onContentMessage = msg => { + if ( msg.what === 'domLayoutFull' ) { + inspectedHostname = msg.hostname; + renderDOMFull(msg); + } else if ( msg.what === 'domLayoutIncremental' ) { + renderDOMIncremental(msg); + } + }; + + const onContentDisconnect = ( ) => { + disconnect(); + }; + + const onContentLoaded = details => { + if ( details.tabId !== inspectedTabId ) { return; } + if ( details.frameId !== 0 ) { return; } + disconnect(); + injectInspector(); + }; + + return { start, disconnect, send, shutdown }; +})(); + +/******************************************************************************/ + +const nodeFromDomEntry = entry => { + const li = document.createElement('li'); + dom.attr(li, 'id', entry.nid); + // expander/collapser + li.appendChild(document.createElement('span')); + // selector + let node = document.createElement('code'); + node.textContent = entry.sel; + li.appendChild(node); + // descendant count + let value = entry.cnt || 0; + node = document.createElement('span'); + node.textContent = value !== 0 ? value.toLocaleString() : ''; + dom.attr(node, 'data-cnt', value); + li.appendChild(node); + // cosmetic filter + if ( entry.filter === undefined ) { + return li; + } + node = document.createElement('code'); + dom.cl.add(node, 'filter'); + value = filterToIdMap.get(entry.filter); + if ( value === undefined ) { + value = `${uidGenerator}`; + filterToIdMap.set(entry.filter, value); + uidGenerator += 1; + } + dom.attr(node, 'data-filter-id', value); + node.textContent = entry.filter; + li.appendChild(node); + dom.cl.add(li, 'isCosmeticHide'); + return li; +}; + +/******************************************************************************/ + +const appendListItem = (ul, li) => { + ul.appendChild(li); + // Ancestor nodes of a node which is affected by a cosmetic filter will + // be marked as "containing cosmetic filters", for user convenience. + if ( dom.cl.has(li, 'isCosmeticHide') === false ) { return; } + for (;;) { + li = li.parentElement.parentElement; + if ( li === null ) { break; } + dom.cl.add(li, 'hasCosmeticHide'); + } +}; + +/******************************************************************************/ + +const renderDOMFull = response => { + const domTreeParent = domTree.parentElement; + let ul = domTreeParent.removeChild(domTree); + logger.removeAllChildren(domTree); + + filterToIdMap.clear(); + + let lvl = 0; + let li; + for ( const entry of response.layout ) { + if ( entry.lvl === lvl ) { + li = nodeFromDomEntry(entry); + appendListItem(ul, li); + continue; + } + if ( entry.lvl > lvl ) { + ul = document.createElement('ul'); + li.appendChild(ul); + dom.cl.add(li, 'branch'); + li = nodeFromDomEntry(entry); + appendListItem(ul, li); + lvl = entry.lvl; + continue; + } + // entry.lvl < lvl + while ( entry.lvl < lvl ) { + ul = li.parentNode; + li = ul.parentNode; + ul = li.parentNode; + lvl -= 1; + } + li = nodeFromDomEntry(entry); + appendListItem(ul, li); + } + while ( ul.parentNode !== null ) { + ul = ul.parentNode; + } + dom.cl.add(ul.firstElementChild, 'show'); + + domTreeParent.appendChild(domTree); +}; + +/******************************************************************************/ + +const patchIncremental = (from, delta) => { + let li = from.parentElement.parentElement; + const patchCosmeticHide = delta >= 0 && + dom.cl.has(from, 'isCosmeticHide') && + dom.cl.has(li, 'hasCosmeticHide') === false; + // Include descendants count when removing a node + if ( delta < 0 ) { + delta -= countFromNode(from); + } + for ( ; li.localName === 'li'; li = li.parentElement.parentElement ) { + const span = li.children[2]; + if ( delta !== 0 ) { + const cnt = countFromNode(li) + delta; + span.textContent = cnt !== 0 ? cnt.toLocaleString() : ''; + dom.attr(span, 'data-cnt', cnt); + } + if ( patchCosmeticHide ) { + dom.cl.add(li, 'hasCosmeticHide'); + } + } +}; + +/******************************************************************************/ + +const renderDOMIncremental = response => { + // Process each journal entry: + // 1 = node added + // -1 = node removed + const nodes = new Map(response.nodes); + let li = null; + let ul = null; + for ( const entry of response.journal ) { + // Remove node + if ( entry.what === -1 ) { + li = qs$(`#${entry.nid}`); + if ( li === null ) { continue; } + patchIncremental(li, -1); + li.parentNode.removeChild(li); + continue; + } + // Modify node + if ( entry.what === 0 ) { + // TODO: update selector/filter + continue; + } + // Add node as sibling + if ( entry.what === 1 && entry.l ) { + const previous = qs$(`#${entry.l}`); + // This should not happen + if ( previous === null ) { + // throw new Error('No left sibling!?'); + continue; + } + ul = previous.parentElement; + li = nodeFromDomEntry(nodes.get(entry.nid)); + ul.insertBefore(li, previous.nextElementSibling); + patchIncremental(li, 1); + continue; + } + // Add node as child + if ( entry.what === 1 && entry.u ) { + li = qs$(`#${entry.u}`); + // This should not happen + if ( li === null ) { + // throw new Error('No parent!?'); + continue; + } + ul = qs$(li, 'ul'); + if ( ul === null ) { + ul = document.createElement('ul'); + li.appendChild(ul); + dom.cl.add(li, 'branch'); + } + li = nodeFromDomEntry(nodes.get(entry.nid)); + ul.appendChild(li); + patchIncremental(li, 1); + continue; + } + } +}; + +/******************************************************************************/ + +const countFromNode = li => { + const span = li.children[2]; + const cnt = parseInt(dom.attr(span, 'data-cnt'), 10); + return isNaN(cnt) ? 0 : cnt; +}; + +/******************************************************************************/ + +const selectorFromNode = node => { + let selector = ''; + while ( node !== null ) { + if ( node.localName === 'li' ) { + const code = qs$(node, 'code'); + if ( code !== null ) { + selector = `${code.textContent} > ${selector}`; + if ( selector.includes('#') ) { break; } + } + } + node = node.parentElement; + } + return selector.slice(0, -3); +}; + +/******************************************************************************/ + +const selectorFromFilter = node => { + while ( node !== null ) { + if ( node.localName === 'li' ) { + const code = qs$(node, 'code:nth-of-type(2)'); + if ( code !== null ) { + return code.textContent; + } + } + node = node.parentElement; + } + return ''; +}; + +/******************************************************************************/ + +const nidFromNode = node => { + let li = node; + while ( li !== null ) { + if ( li.localName === 'li' ) { + return li.id || ''; + } + li = li.parentElement; + } + return ''; +}; + +/******************************************************************************/ + +const startDialog = (( ) => { + let dialog; + let textarea; + let hideSelectors = []; + let unhideSelectors = []; + + const parse = function() { + hideSelectors = []; + unhideSelectors = []; + + const re = /^([^#]*)(#@?#)(.+)$/; + for ( let line of textarea.value.split(/\s*\n\s*/) ) { + line = line.trim(); + if ( line === '' || line.charAt(0) === '!' ) { continue; } + const matches = re.exec(line); + if ( matches === null || matches.length !== 4 ) { continue; } + if ( inspectedHostname.lastIndexOf(matches[1]) === -1 ) { + continue; + } + if ( matches[2] === '##' ) { + hideSelectors.push(matches[3]); + } else { + unhideSelectors.push(matches[3]); + } + } + + showCommitted(); + }; + + const inputTimer = vAPI.defer.create(parse); + + const onInputChanged = ( ) => { + inputTimer.on(743); + }; + + const onClicked = function(ev) { + const target = ev.target; + + ev.stopPropagation(); + + if ( target.id === 'createCosmeticFilters' ) { + vAPI.messaging.send('loggerUI', { + what: 'createUserFilter', + filters: textarea.value, + }); + // Force a reload for the new cosmetic filter(s) to take effect + vAPI.messaging.send('loggerUI', { + what: 'reloadTab', + tabId: inspectedTabId, + }); + return stop(); + } + }; + + const showCommitted = function() { + contentInspectorChannel.send({ + what: 'showCommitted', + hide: hideSelectors.join(',\n'), + unhide: unhideSelectors.join(',\n') + }); + }; + + const showInteractive = function() { + contentInspectorChannel.send({ + what: 'showInteractive', + hide: hideSelectors.join(',\n'), + unhide: unhideSelectors.join(',\n') + }); + }; + + const start = function() { + dialog = logger.modalDialog.create('#cosmeticFilteringDialog', stop); + textarea = qs$(dialog, 'textarea'); + hideSelectors = []; + for ( const node of qsa$(domTree, 'code.off') ) { + if ( dom.cl.has(node, 'filter') ) { continue; } + hideSelectors.push(selectorFromNode(node)); + } + const taValue = []; + for ( const selector of hideSelectors ) { + taValue.push(inspectedHostname + '##' + selector); + } + const ids = new Set(); + for ( const node of qsa$(domTree, 'code.filter.off') ) { + const id = dom.attr(node, 'data-filter-id'); + if ( ids.has(id) ) { continue; } + ids.add(id); + unhideSelectors.push(node.textContent); + taValue.push(inspectedHostname + '#@#' + node.textContent); + } + textarea.value = taValue.join('\n'); + textarea.addEventListener('input', onInputChanged); + dialog.addEventListener('click', onClicked, true); + showCommitted(); + logger.modalDialog.show(); + }; + + const stop = function() { + inputTimer.off(); + showInteractive(); + textarea.removeEventListener('input', onInputChanged); + dialog.removeEventListener('click', onClicked, true); + dialog = undefined; + textarea = undefined; + hideSelectors = []; + unhideSelectors = []; + }; + + return start; +})(); + +/******************************************************************************/ + +const onClicked = ev => { + ev.stopPropagation(); + + if ( inspectedTabId === 0 ) { return; } + + const target = ev.target; + const parent = target.parentElement; + + // Expand/collapse branch + if ( + target.localName === 'span' && + parent instanceof HTMLLIElement && + dom.cl.has(parent, 'branch') && + target === parent.firstElementChild + ) { + const state = dom.cl.toggle(parent, 'show'); + if ( !state ) { + for ( const node of qsa$(parent, '.branch') ) { + dom.cl.remove(node, 'show'); + } + } + return; + } + + // Not a node or filter + if ( target.localName !== 'code' ) { return; } + + // Toggle cosmetic filter + if ( dom.cl.has(target, 'filter') ) { + contentInspectorChannel.send({ + what: 'toggleFilter', + original: false, + target: dom.cl.toggle(target, 'off'), + selector: selectorFromNode(target), + filter: selectorFromFilter(target), + nid: nidFromNode(target) + }); + dom.cl.toggle( + qsa$(inspector, `[data-filter-id="${dom.attr(target, 'data-filter-id')}"]`), + 'off', + dom.cl.has(target, 'off') + ); + } + // Toggle node + else { + contentInspectorChannel.send({ + what: 'toggleNodes', + original: true, + target: dom.cl.toggle(target, 'off') === false, + selector: selectorFromNode(target), + nid: nidFromNode(target) + }); + } + + const cantCreate = qs$(domTree, '.off') === null; + dom.cl.toggle(qs$(inspector, '.permatoolbar .revert'), 'disabled', cantCreate); + dom.cl.toggle(qs$(inspector, '.permatoolbar .commit'), 'disabled', cantCreate); +}; + +/******************************************************************************/ + +const onMouseOver = (( ) => { + let mouseoverTarget = null; + + const mouseoverTimer = vAPI.defer.create(( ) => { + contentInspectorChannel.send({ + what: 'highlightOne', + selector: selectorFromNode(mouseoverTarget), + nid: nidFromNode(mouseoverTarget), + scrollTo: true + }); + }); + + return ev => { + if ( inspectedTabId === 0 ) { return; } + // Convenience: skip real-time highlighting if shift key is pressed. + if ( ev.shiftKey ) { return; } + // Find closest `li` + const target = ev.target.closest('li'); + if ( target === mouseoverTarget ) { return; } + mouseoverTarget = target; + mouseoverTimer.on(50); + }; +})(); + +/******************************************************************************/ + +const currentTabId = ( ) => { + if ( dom.cl.has(showdomButton, 'active') === false ) { return 0; } + return logger.tabIdFromPageSelector(); +}; + +/******************************************************************************/ + +const injectInspector = (( ) => { + const timer = vAPI.defer.create(( ) => { + const tabId = currentTabId(); + if ( tabId <= 0 ) { return; } + inspectedTabId = tabId; + vAPI.messaging.send('loggerUI', { + what: 'scriptlet', + tabId, + scriptlet: 'dom-inspector', + }); + }); + return ( ) => { + shutdownInspector(); + timer.offon(353); + }; +})(); + +/******************************************************************************/ + +const shutdownInspector = ( ) => { + contentInspectorChannel.disconnect(); + logger.removeAllChildren(domTree); + dom.cl.remove(inspector, 'vExpanded'); + inspectedTabId = 0; +}; + +/******************************************************************************/ + +const onTabIdChanged = ( ) => { + const tabId = currentTabId(); + if ( tabId <= 0 ) { + return toggleOff(); + } + if ( inspectedTabId !== tabId ) { + injectInspector(); + } +}; + +/******************************************************************************/ + +const toggleVExpandView = ( ) => { + const branches = qsa$('#domTree li.branch.show > ul > li.branch:not(.show)'); + for ( const branch of branches ) { + dom.cl.add(branch, 'show'); + } +}; + +const toggleVCompactView = ( ) => { + const branches = qsa$('#domTree li.branch.show > ul > li:not(.show)'); + const tohideSet = new Set(); + for ( const branch of branches ) { + const node = branch.closest('li.branch.show'); + if ( node.id === 'n1' ) { continue; } + tohideSet.add(node); + } + const tohideList = Array.from(tohideSet); + let i = tohideList.length - 1; + while ( i > 0 ) { + if ( tohideList[i-1].contains(tohideList[i]) ) { + tohideList.splice(i-1, 1); + } else if ( tohideList[i].contains(tohideList[i-1]) ) { + tohideList.splice(i, 1); + } + i -= 1; + } + for ( const node of tohideList ) { + dom.cl.remove(node, 'show'); + } +}; + +const toggleHCompactView = ( ) => { + dom.cl.toggle(inspector, 'hCompact'); +}; + +/******************************************************************************/ + +const revert = ( ) => { + dom.cl.remove('#domTree .off', 'off'); + contentInspectorChannel.send({ what: 'resetToggledNodes' }); + dom.cl.add(qs$(inspector, '.permatoolbar .revert'), 'disabled'); + dom.cl.add(qs$(inspector, '.permatoolbar .commit'), 'disabled'); +}; + +/******************************************************************************/ + +const toggleOn = ( ) => { + dom.cl.add('#inspectors', 'dom'); + window.addEventListener('beforeunload', toggleOff); + dom.on(document, 'tabIdChanged', onTabIdChanged); + dom.on(domTree, 'click', onClicked, true); + dom.on(domTree, 'mouseover', onMouseOver, true); + dom.on('#domInspector .vExpandToggler', 'click', toggleVExpandView); + dom.on('#domInspector .vCompactToggler', 'click', toggleVCompactView); + dom.on('#domInspector .hCompactToggler', 'click', toggleHCompactView); + dom.on('#domInspector .permatoolbar .revert', 'click', revert); + dom.on('#domInspector .permatoolbar .commit', 'click', startDialog); + contentInspectorChannel.start(); + injectInspector(); +}; + +/******************************************************************************/ + +const toggleOff = ( ) => { + dom.cl.remove(showdomButton, 'active'); + dom.cl.remove('#inspectors', 'dom'); + shutdownInspector(); + window.removeEventListener('beforeunload', toggleOff); + dom.off(document, 'tabIdChanged', onTabIdChanged); + dom.off(domTree, 'click', onClicked, true); + dom.off(domTree, 'mouseover', onMouseOver, true); + dom.off('#domInspector .vExpandToggler', 'click', toggleVExpandView); + dom.off('#domInspector .vCompactToggler', 'click', toggleVCompactView); + dom.off('#domInspector .hCompactToggler', 'click', toggleHCompactView); + dom.off('#domInspector .permatoolbar .revert', 'click', revert); + dom.off('#domInspector .permatoolbar .commit', 'click', startDialog); + contentInspectorChannel.shutdown(); + inspectedTabId = 0; +}; + +/******************************************************************************/ + +const toggle = ( ) => { + if ( dom.cl.toggle(showdomButton, 'active') ) { + toggleOn(); + } else { + toggleOff(); + } +}; + +dom.on(showdomButton, 'click', toggle); + +/******************************************************************************/ + +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/logger-ui.js b/android/app/src/main/assets/extensions/ublock_origin/js/logger-ui.js new file mode 100644 index 00000000..65d48c7e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/logger-ui.js @@ -0,0 +1,3078 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { dom, qs$, qsa$ } from './dom.js'; +import { i18n, i18n$ } from './i18n.js'; +import { broadcast } from './broadcast.js'; +import { hostnameFromURI } from './uri-utils.js'; + +/******************************************************************************/ + +// TODO: fix the inconsistencies re. realm vs. filter source which have +// accumulated over time. + +const messaging = vAPI.messaging; +const logger = self.logger = { ownerId: Date.now() }; +const logDate = new Date(); +const logDateTimezoneOffset = logDate.getTimezoneOffset() * 60; +const loggerEntries = []; + +const COLUMN_TIMESTAMP = 0; +const COLUMN_FILTER = 1; +const COLUMN_MESSAGE = 1; +const COLUMN_RESULT = 2; +const COLUMN_INITIATOR = 3; +const COLUMN_PARTYNESS = 4; +const COLUMN_METHOD = 5; +const COLUMN_TYPE = 6; +const COLUMN_URL = 7; + +let filteredLoggerEntries = []; +let filteredLoggerEntryVoidedCount = 0; + +let popupLoggerBox; +let popupLoggerTooltips; +let activeTabId = 0; +let selectedTabId = 0; +let netInspectorPaused = false; +let cnameOfEnabled = false; + +/******************************************************************************/ + +// Various helpers. + +const tabIdFromPageSelector = logger.tabIdFromPageSelector = function() { + const value = qs$('#pageSelector').value; + return value !== '_' ? (parseInt(value, 10) || 0) : activeTabId; +}; + +const tabIdFromAttribute = function(elem) { + const value = dom.attr(elem, 'data-tabid') || ''; + const tabId = parseInt(value, 10); + return isNaN(tabId) ? 0 : tabId; +}; + +const dispatchTabidChange = vAPI.defer.create(( ) => { + document.dispatchEvent(new Event('tabIdChanged')); +}); + +const escapeRegexStr = s => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + +/******************************************************************************/ +/******************************************************************************/ + +// Current design allows for only one modal DOM-based dialog at any given time. +// +const modalDialog = (( ) => { + const overlay = qs$('#modalOverlay'); + const container = qs$('#modalOverlayContainer'); + const closeButton = qs$(overlay, ':scope .closeButton'); + let onDestroyed; + + const removeChildren = logger.removeAllChildren = function(node) { + while ( node.firstChild ) { + node.removeChild(node.firstChild); + } + }; + + const create = function(selector, destroyListener) { + const template = qs$(selector); + const dialog = dom.clone(template); + removeChildren(container); + container.appendChild(dialog); + onDestroyed = destroyListener; + return dialog; + }; + + const show = function() { + dom.cl.add(overlay, 'on'); + }; + + const destroy = function() { + dom.cl.remove(overlay, 'on'); + const dialog = container.firstElementChild; + removeChildren(container); + if ( typeof onDestroyed === 'function' ) { + onDestroyed(dialog); + } + onDestroyed = undefined; + }; + + const onClose = function(ev) { + if ( ev.target === overlay || ev.target === closeButton ) { + destroy(); + } + }; + dom.on(overlay, 'click', onClose); + dom.on(closeButton, 'click', onClose); + + return { create, show, destroy }; +})(); + +self.logger.modalDialog = modalDialog; + + +/******************************************************************************/ +/******************************************************************************/ + +const prettyRequestTypes = { + 'main_frame': 'doc', + 'stylesheet': 'css', + 'sub_frame': 'frame', + 'xmlhttprequest': 'xhr' +}; + +const uglyRequestTypes = { + 'doc': 'main_frame', + 'css': 'stylesheet', + 'frame': 'sub_frame', + 'xhr': 'xmlhttprequest' +}; + +let allTabIds = new Map(); +let allTabIdsToken; + +/******************************************************************************/ +/******************************************************************************/ + +const regexFromURLFilteringResult = function(result) { + const beg = result.indexOf(' '); + const end = result.indexOf(' ', beg + 1); + const url = result.slice(beg + 1, end); + if ( url === '*' ) { + return new RegExp('^.*$', 'gi'); + } + return new RegExp('^' + escapeRegexStr(url), 'gi'); +}; + +/******************************************************************************/ + +// Emphasize hostname in URL, as this is what matters in uMatrix's rules. + +const nodeFromURL = function(parent, url, re, type) { + const fragment = document.createDocumentFragment(); + if ( re === undefined ) { + fragment.textContent = url; + } else { + if ( typeof re === 'string' ) { + re = new RegExp(escapeRegexStr(re), 'g'); + } + const matches = re.exec(url); + if ( matches === null || matches[0].length === 0 ) { + fragment.textContent = url; + } else { + if ( matches.index !== 0 ) { + fragment.appendChild( + document.createTextNode(url.slice(0, matches.index)) + ); + } + const b = document.createElement('b'); + b.textContent = url.slice(matches.index, re.lastIndex); + fragment.appendChild(b); + if ( re.lastIndex !== url.length ) { + fragment.appendChild( + document.createTextNode(url.slice(re.lastIndex)) + ); + } + } + } + if ( /^https?:\/\//.test(url) ) { + const a = document.createElement('a'); + let href = url; + switch ( type ) { + case 'css': + case 'doc': + case 'frame': + case 'object': + case 'other': + case 'script': + case 'xhr': + href = `code-viewer.html?url=${encodeURIComponent(href)}`; + break; + default: + break; + } + dom.attr(a, 'href', href); + dom.attr(a, 'target', '_blank'); + fragment.appendChild(a); + } + parent.appendChild(fragment); +}; + +/******************************************************************************/ + +const padTo2 = function(v) { + return v < 10 ? '0' + v : v; +}; + +const normalizeToStr = function(s) { + return typeof s === 'string' && s !== '' ? s : ''; +}; + +/******************************************************************************/ + +class LogEntry { + static IdGenerator = 1; + constructor(details) { + this.aliased = false; + this.dead = false; + this.docDomain = ''; + this.docHostname = ''; + this.domain = ''; + this.filter = undefined; + this.id = LogEntry.IdGenerator++; + this.method = ''; + this.realm = ''; + this.tabDomain = ''; + this.tabHostname = ''; + this.tabId = undefined; + this.textContent = ''; + this.tstamp = 0; + this.type = ''; + this.voided = false; + if ( details instanceof Object === false ) { return; } + for ( const prop in this ) { + if ( Object.hasOwn(details, prop) === false ) { continue; } + this[prop] = details[prop]; + } + if ( details.aliasURL !== undefined ) { + this.aliased = true; + } + if ( this.tabDomain === '' ) { + this.tabDomain = this.tabHostname || ''; + } + if ( this.docDomain === '' ) { + this.docDomain = this.docHostname || ''; + } + if ( this.domain === '' ) { + this.domain = details.hostname || ''; + } + } +} + +/******************************************************************************/ + +const createLogSeparator = function(details, text) { + const separator = new LogEntry(); + separator.tstamp = details.tstamp; + separator.realm = 'message'; + separator.tabId = details.tabId; + separator.type = 'tabLoad'; + separator.textContent = ''; + + const textContent = []; + logDate.setTime((separator.tstamp - logDateTimezoneOffset) * 1000); + textContent.push( + // cell 0 + padTo2(logDate.getUTCHours()) + ':' + + padTo2(logDate.getUTCMinutes()) + ':' + + padTo2(logDate.getSeconds()), + // cell 1 + text + ); + separator.textContent = textContent.join('\x1F'); + + if ( details.voided ) { + separator.voided = true; + } + + return separator; +}; + +/******************************************************************************/ + +// TODO: once refactoring is mature, consider using push() instead of +// unshift(). This will require inverting the access logic +// throughout the code. +// +const processLoggerEntries = function(response) { + const entries = response.entries; + if ( entries.length === 0 ) { return; } + + const autoDeleteVoidedRows = qs$('#pageSelector').value === '_'; + const previousCount = filteredLoggerEntries.length; + + for ( const entry of entries ) { + const unboxed = JSON.parse(entry); + if ( unboxed.filter instanceof Object ){ + loggerStats.processFilter(unboxed.filter); + } + if ( netInspectorPaused ) { continue; } + const parsed = parseLogEntry(unboxed); + if ( + parsed.tabId !== undefined && + allTabIds.has(parsed.tabId) === false + ) { + if ( autoDeleteVoidedRows ) { continue; } + parsed.voided = true; + } + if ( + parsed.type === 'main_frame' && + parsed.aliased === false && ( + parsed.filter === undefined || + parsed.filter.modifier !== true && parsed.filter.source !== 'redirect' + ) + ) { + const separator = createLogSeparator(parsed, unboxed.url); + loggerEntries.unshift(separator); + if ( rowFilterer.filterOne(separator) ) { + filteredLoggerEntries.unshift(separator); + if ( separator.voided ) { + filteredLoggerEntryVoidedCount += 1; + } + } + } + if ( cnameOfEnabled === false && parsed.aliased ) { + qs$('#filterExprCnameOf').style.display = ''; + cnameOfEnabled = true; + } + loggerEntries.unshift(parsed); + if ( rowFilterer.filterOne(parsed) ) { + filteredLoggerEntries.unshift(parsed); + if ( parsed.voided ) { + filteredLoggerEntryVoidedCount += 1; + } + } + } + + const addedCount = filteredLoggerEntries.length - previousCount; + if ( addedCount === 0 ) { return; } + viewPort.updateContent(addedCount); + rowJanitor.inserted(addedCount); + consolePane.updateContent(); +}; + +/******************************************************************************/ + +const parseLogEntry = function(details) { + // Patch realm until changed all over codebase to make this unnecessary + if ( details.realm === 'cosmetic' ) { + details.realm = 'extended'; + } + + const entry = new LogEntry(details); + + // Assemble the text content, i.e. the pre-built string which will be + // used to match logger output filtering expressions. + const textContent = []; + + // Cell 0 + logDate.setTime((details.tstamp - logDateTimezoneOffset) * 1000); + textContent.push( + padTo2(logDate.getUTCHours()) + ':' + + padTo2(logDate.getUTCMinutes()) + ':' + + padTo2(logDate.getSeconds()) + ); + + // Cell 1 + if ( details.realm === 'message' ) { + textContent.push(details.text); + if ( details.type ) { + textContent.push(details.type); + } + if ( details.keywords ) { + textContent.push(...details.keywords); + } + entry.textContent = textContent.join('\x1F') + '\x1F'; + return entry; + } + + // Cell 1, 2 + if ( entry.filter !== undefined ) { + textContent.push(entry.filter.raw); + if ( entry.filter.result === 1 ) { + textContent.push('--'); + } else if ( entry.filter.result === 2 ) { + textContent.push('++'); + } else if ( entry.filter.result === 3 ) { + textContent.push('**'); + } else if ( entry.filter.source === 'redirect' ) { + textContent.push('<<'); + } else { + textContent.push(''); + } + } else { + textContent.push('', ''); + } + + // Cell 3 + textContent.push(normalizeToStr(entry.docHostname)); + + // Cell 4: partyness + if ( + entry.realm === 'network' && + typeof entry.domain === 'string' && + entry.domain !== '' + ) { + let partyness = ''; + if ( entry.tabDomain !== undefined ) { + if ( entry.tabId < 0 ) { + partyness += '0,'; + } + partyness += entry.domain === entry.tabDomain ? '1' : '3'; + } else { + partyness += '?'; + } + if ( entry.docDomain !== entry.tabDomain ) { + partyness += ','; + if ( entry.docDomain !== undefined ) { + partyness += entry.domain === entry.docDomain ? '1' : '3'; + } else { + partyness += '?'; + } + } + textContent.push(partyness); + } else { + textContent.push(''); + } + + // Cell 5: method + textContent.push(entry.method || ''); + + // Cell 6 + textContent.push( + normalizeToStr(prettyRequestTypes[entry.type] || entry.type) + ); + + // Cell 7 + textContent.push(normalizeToStr(details.url)); + + // Hidden cells -- useful for row-filtering purpose + + // Cell 8 + if ( entry.aliased ) { + textContent.push(`aliasURL=${details.aliasURL}`); + } + + entry.textContent = textContent.join('\x1F'); + return entry; +}; + +/******************************************************************************/ + +const viewPort = (( ) => { + const vwRenderer = qs$('#vwRenderer'); + const vwScroller = qs$('#vwScroller'); + const vwVirtualContent = qs$('#vwVirtualContent'); + const vwContent = qs$('#vwContent'); + const vwLineSizer = qs$('#vwLineSizer'); + const vwLogEntryTemplate = qs$('#logEntryTemplate > div'); + const vwEntries = []; + + const detailableRealms = new Set([ 'network', 'extended' ]); + + let vwHeight = 0; + let lineHeight = 0; + let wholeHeight = 0; + let lastTopPix = 0; + let lastTopRow = 0; + + const ViewEntry = function() { + this.div = document.createElement('div'); + this.div.className = 'logEntry'; + vwContent.appendChild(this.div); + this.logEntry = undefined; + }; + ViewEntry.prototype = { + dispose: function() { + vwContent.removeChild(this.div); + }, + }; + + const rowFromScrollTopPix = function(px) { + return lineHeight !== 0 ? Math.floor(px / lineHeight) : 0; + }; + + // This is called when the browser fired scroll events + const onScrollChanged = function() { + const newScrollTopPix = vwScroller.scrollTop; + const delta = newScrollTopPix - lastTopPix; + if ( delta === 0 ) { return; } + lastTopPix = newScrollTopPix; + if ( filteredLoggerEntries.length <= 2 ) { return; } + // No entries were rolled = all entries keep their current details + if ( rollLines(rowFromScrollTopPix(newScrollTopPix)) ) { + fillLines(); + } + positionLines(); + vwContent.style.top = `${lastTopPix}px`; + }; + + // Coalesce scroll events + const scrollTimer = vAPI.defer.create(onScrollChanged); + const onScroll = ( ) => { + scrollTimer.onvsync(1000/32); + }; + dom.on(vwScroller, 'scroll', onScroll, { passive: true }); + + const onLayoutChanged = function() { + vwHeight = vwRenderer.clientHeight; + vwContent.style.height = `${vwScroller.clientHeight}px`; + + const vExpanded = + dom.cl.has('#netInspector .vCompactToggler', 'vExpanded'); + + let newLineHeight = qs$(vwLineSizer, '.oneLine').clientHeight; + + if ( vExpanded ) { + newLineHeight *= loggerSettings.linesPerEntry; + } + + const lineCount = newLineHeight !== 0 + ? Math.ceil(vwHeight / newLineHeight) + 1 + : 0; + if ( lineCount > vwEntries.length ) { + do { + vwEntries.push(new ViewEntry()); + } while ( lineCount > vwEntries.length ); + } else if ( lineCount < vwEntries.length ) { + do { + vwEntries.pop().dispose(); + } while ( lineCount < vwEntries.length ); + } + + const cellWidths = Array.from( + qsa$(vwLineSizer, '.oneLine span') + ).map((el, i) => { + return loggerSettings.columns[i] !== false + ? el.clientWidth + 1 + : 0; + }); + const reservedWidth = + cellWidths[COLUMN_TIMESTAMP] + + cellWidths[COLUMN_RESULT] + + cellWidths[COLUMN_PARTYNESS] + + cellWidths[COLUMN_METHOD] + + cellWidths[COLUMN_TYPE]; + cellWidths[COLUMN_URL] = 0.5; + if ( cellWidths[COLUMN_FILTER] === 0 && cellWidths[COLUMN_INITIATOR] === 0 ) { + cellWidths[COLUMN_URL] = 1; + } else if ( cellWidths[COLUMN_FILTER] === 0 ) { + cellWidths[COLUMN_INITIATOR] = 0.35; + cellWidths[COLUMN_URL] = 0.65; + } else if ( cellWidths[COLUMN_INITIATOR] === 0 ) { + cellWidths[COLUMN_FILTER] = 0.35; + cellWidths[COLUMN_URL] = 0.65; + } else { + cellWidths[COLUMN_FILTER] = 0.25; + cellWidths[COLUMN_INITIATOR] = 0.25; + cellWidths[COLUMN_URL] = 0.5; + } + const style = qs$('#vwRendererRuntimeStyles'); + const cssRules = [ + '#vwContent .logEntry {', + ` height: ${newLineHeight}px;`, + '}', + `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_TIMESTAMP+1}) {`, + ` width: ${cellWidths[COLUMN_TIMESTAMP]}px;`, + '}', + `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_FILTER+1}) {`, + ` width: calc(calc(100% - ${reservedWidth}px) * ${cellWidths[COLUMN_FILTER]});`, + '}', + `#vwContent .logEntry > div.messageRealm > span:nth-of-type(${COLUMN_MESSAGE+1}) {`, + ` width: calc(100% - ${cellWidths[COLUMN_TIMESTAMP]}px);`, + '}', + `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_RESULT+1}) {`, + ` width: ${cellWidths[COLUMN_RESULT]}px;`, + '}', + `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_INITIATOR+1}) {`, + ` width: calc(calc(100% - ${reservedWidth}px) * ${cellWidths[COLUMN_INITIATOR]});`, + '}', + `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_PARTYNESS+1}) {`, + ` width: ${cellWidths[COLUMN_PARTYNESS]}px;`, + '}', + `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_METHOD+1}) {`, + ` width: ${cellWidths[COLUMN_METHOD]}px;`, + '}', + `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_TYPE+1}) {`, + ` width: ${cellWidths[COLUMN_TYPE]}px;`, + '}', + `#vwContent .logEntry > div > span:nth-of-type(${COLUMN_URL+1}) {`, + ` width: calc(calc(100% - ${reservedWidth}px) * ${cellWidths[COLUMN_URL]});`, + '}', + '', + ]; + for ( let i = 0; i < cellWidths.length; i++ ) { + if ( cellWidths[i] !== 0 ) { continue; } + cssRules.push( + `#vwContent .logEntry > div > span:nth-of-type(${i + 1}) {`, + ' display: none;', + '}' + ); + } + style.textContent = cssRules.join('\n'); + + lineHeight = newLineHeight; + positionLines(); + dom.cl.toggle('#netInspector', 'vExpanded', vExpanded); + + updateContent(0); + }; + + const resizeTimer = vAPI.defer.create(onLayoutChanged); + const updateLayout = ( ) => { + resizeTimer.onvsync(1000/8); + }; + const resizeObserver = new self.ResizeObserver(updateLayout); + resizeObserver.observe(qs$('#netInspector .vscrollable')); + + updateLayout(); + + const renderFilterToSpan = function(span, filter) { + if ( filter.charCodeAt(0) !== 0x23 /* '#' */ ) { return false; } + const match = /^#@?#/.exec(filter); + if ( match === null ) { return false; } + let child = document.createElement('span'); + child.textContent = match[0]; + span.appendChild(child); + child = document.createElement('span'); + child.textContent = filter.slice(match[0].length); + span.appendChild(child); + return true; + }; + + const renderToDiv = function(vwEntry, i) { + if ( i >= filteredLoggerEntries.length ) { + vwEntry.logEntry = undefined; + return null; + } + + const details = filteredLoggerEntries[i]; + if ( vwEntry.logEntry === details ) { + return vwEntry.div.firstElementChild; + } + + vwEntry.logEntry = details; + + const cells = details.textContent.split('\x1F'); + const div = dom.clone(vwLogEntryTemplate); + const divcl = div.classList; + let span; + + // Realm + if ( details.realm !== undefined ) { + divcl.add(details.realm + 'Realm'); + } + + // Timestamp + span = div.children[COLUMN_TIMESTAMP]; + span.textContent = cells[COLUMN_TIMESTAMP]; + + // Tab id + if ( details.tabId !== undefined ) { + dom.attr(div, 'data-tabid', details.tabId); + if ( details.voided ) { + divcl.add('voided'); + } + } + + if ( details.realm === 'message' ) { + if ( details.type !== undefined ) { + dom.attr(div, 'data-type', details.type); + } + span = div.children[COLUMN_MESSAGE]; + span.textContent = cells[COLUMN_MESSAGE]; + return div; + } + + if ( detailableRealms.has(details.realm) ) { + divcl.add('canDetails'); + } + + // Filter + const filter = details.filter || undefined; + let filteringType; + if ( filter !== undefined ) { + if ( typeof filter.source === 'string' ) { + filteringType = filter.source; + } + if ( filteringType === 'static' ) { + divcl.add('canLookup'); + } else if ( details.realm === 'extended' ) { + divcl.toggle('canLookup', /^#@?#/.test(filter.raw)); + divcl.toggle('isException', filter.raw.startsWith('#@#')); + } + if ( filter.modifier === true ) { + dom.attr(div, 'data-modifier', ''); + } + } + span = div.children[COLUMN_FILTER]; + if ( renderFilterToSpan(span, cells[COLUMN_FILTER]) ) { + if ( /^\+js\(.*\)$/.test(span.children[1].textContent) ) { + divcl.add('scriptlet'); + } + } else { + span.textContent = cells[COLUMN_FILTER]; + } + + // Event + if ( cells[COLUMN_RESULT] === '--' ) { + dom.attr(div, 'data-status', '1'); + } else if ( cells[COLUMN_RESULT] === '++' ) { + dom.attr(div, 'data-status', '2'); + } else if ( cells[COLUMN_RESULT] === '**' ) { + dom.attr(div, 'data-status', '3'); + } else if ( cells[COLUMN_RESULT] === '<<' ) { + divcl.add('redirect'); + } + span = div.children[COLUMN_RESULT]; + span.textContent = cells[COLUMN_RESULT]; + + // Origins + if ( details.tabHostname ) { + dom.attr(div, 'data-tabhn', details.tabHostname); + } + if ( details.docHostname ) { + dom.attr(div, 'data-dochn', details.docHostname); + } + span = div.children[COLUMN_INITIATOR]; + span.textContent = cells[COLUMN_INITIATOR]; + + // Partyness + if ( + cells[COLUMN_PARTYNESS] !== '' && + details.realm === 'network' && + details.domain !== undefined + ) { + let text = `${details.tabDomain}`; + if ( details.docDomain !== details.tabDomain ) { + text += ` \u22ef ${details.docDomain}`; + } + text += ` \u21d2 ${details.domain}`; + dom.attr(div, 'data-parties', text); + } + span = div.children[COLUMN_PARTYNESS]; + span.textContent = cells[COLUMN_PARTYNESS]; + + // Method + span = div.children[COLUMN_METHOD]; + span.textContent = cells[COLUMN_METHOD]; + + // Type + span = div.children[COLUMN_TYPE]; + span.textContent = cells[COLUMN_TYPE]; + + // URL + let re; + if ( filteringType === 'static' ) { + re = new RegExp(filter.regex, 'gi'); + } else if ( filteringType === 'dynamicUrl' ) { + re = regexFromURLFilteringResult(filter.rule.join(' ')); + } + nodeFromURL(div.children[COLUMN_URL], cells[COLUMN_URL], re, cells[COLUMN_TYPE]); + + // Alias URL (CNAME, etc.) + if ( cells.length > 8 ) { + const pos = details.textContent.lastIndexOf('\x1FaliasURL='); + if ( pos !== -1 ) { + div.dataset.aliasid = `${details.id}`; + } + } + + return div; + }; + + // The idea is that positioning DOM elements is faster than + // removing/inserting DOM elements. + const positionLines = function() { + if ( lineHeight === 0 ) { return; } + let y = -(lastTopPix % lineHeight); + for ( const vwEntry of vwEntries ) { + vwEntry.div.style.top = `${y}px`; + y += lineHeight; + } + }; + + const rollLines = function(topRow) { + let delta = topRow - lastTopRow; + let deltaLength = Math.abs(delta); + // No point rolling if no rows can be reused + if ( deltaLength > 0 && deltaLength < vwEntries.length ) { + if ( delta < 0 ) { // Move bottom rows to the top + vwEntries.unshift(...vwEntries.splice(delta)); + } else { // Move top rows to the bottom + vwEntries.push(...vwEntries.splice(0, delta)); + } + } + lastTopRow = topRow; + return delta; + }; + + const fillLines = function() { + let rowBeg = lastTopRow; + for ( const vwEntry of vwEntries ) { + const newDiv = renderToDiv(vwEntry, rowBeg); + const container = vwEntry.div; + const oldDiv = container.firstElementChild; + if ( newDiv !== null ) { + if ( oldDiv === null ) { + container.appendChild(newDiv); + } else if ( newDiv !== oldDiv ) { + container.removeChild(oldDiv); + container.appendChild(newDiv); + } + } else if ( oldDiv !== null ) { + container.removeChild(oldDiv); + } + rowBeg += 1; + } + }; + + const contentChanged = function(addedCount) { + lastTopRow += addedCount; + const newWholeHeight = Math.max( + filteredLoggerEntries.length * lineHeight, + vwRenderer.clientHeight + ); + if ( newWholeHeight !== wholeHeight ) { + vwVirtualContent.style.height = `${newWholeHeight}px`; + wholeHeight = newWholeHeight; + } + }; + + const updateContent = function(addedCount) { + contentChanged(addedCount); + // Content changed + if ( addedCount === 0 ) { + if ( + lastTopRow !== 0 && + lastTopRow + vwEntries.length > filteredLoggerEntries.length + ) { + lastTopRow = filteredLoggerEntries.length - vwEntries.length; + if ( lastTopRow < 0 ) { lastTopRow = 0; } + lastTopPix = lastTopRow * lineHeight; + vwContent.style.top = `${lastTopPix}px`; + vwScroller.scrollTop = lastTopPix; + positionLines(); + } + fillLines(); + return; + } + + // Content added + // Preserve scroll position + if ( lastTopPix === 0 ) { + rollLines(0); + positionLines(); + fillLines(); + return; + } + + // Preserve row position + lastTopPix += lineHeight * addedCount; + vwContent.style.top = `${lastTopPix}px`; + vwScroller.scrollTop = lastTopPix; + }; + + return { updateContent, updateLayout }; +})(); + +/******************************************************************************/ + +const updateCurrentTabTitle = (( ) => { + const i18nCurrentTab = i18n$('loggerCurrentTab'); + + return ( ) => { + const select = qs$('#pageSelector'); + if ( select.value !== '_' || activeTabId === 0 ) { return; } + const opt0 = qs$(select, '[value="_"]'); + const opt1 = qs$(select, `[value="${activeTabId}"]`); + let text = i18nCurrentTab; + if ( opt1 !== null ) { + text += ' / ' + opt1.textContent; + } + opt0.textContent = text; + }; +})(); + +/******************************************************************************/ + +const synchronizeTabIds = function(newTabIds) { + const select = qs$('#pageSelector'); + const selectedTabValue = select.value; + const oldTabIds = allTabIds; + + // Collate removed tab ids. + const toVoid = new Set(); + for ( const tabId of oldTabIds.keys() ) { + if ( newTabIds.has(tabId) ) { continue; } + toVoid.add(tabId); + } + allTabIds = newTabIds; + + // Mark as "void" all logger entries which are linked to now invalid + // tab ids. + // When an entry is voided without being removed, we re-create a new entry + // in order to ensure the entry has a new identity. A new identity ensures + // that identity-based associations elsewhere are automatically + // invalidated. + if ( toVoid.size !== 0 ) { + const autoDeleteVoidedRows = selectedTabValue === '_'; + let rowVoided = false; + for ( let i = 0, n = loggerEntries.length; i < n; i++ ) { + const entry = loggerEntries[i]; + if ( toVoid.has(entry.tabId) === false ) { continue; } + if ( entry.voided ) { continue; } + rowVoided = entry.voided = true; + if ( autoDeleteVoidedRows ) { + entry.dead = true; + } + loggerEntries[i] = new LogEntry(entry); + } + if ( rowVoided ) { + rowFilterer.filterAll(); + } + } + + // Remove popup if it is currently bound to a removed tab. + if ( toVoid.has(popupManager.tabId) ) { + popupManager.toggleOff(); + } + + const tabIds = Array.from(newTabIds.keys()).sort(function(a, b) { + return newTabIds.get(a).localeCompare(newTabIds.get(b)); + }); + let j = 3; + for ( const tabId of tabIds ) { + if ( tabId <= 0 ) { continue; } + if ( j === select.options.length ) { + select.appendChild(document.createElement('option')); + } + const option = select.options[j]; + // Truncate too long labels. + option.textContent = newTabIds.get(tabId).slice(0, 80); + dom.attr(option, 'value', tabId); + if ( option.value === selectedTabValue ) { + select.selectedIndex = j; + dom.attr(option, 'selected', ''); + } else { + dom.attr(option, 'selected', null); + } + j += 1; + } + while ( j < select.options.length ) { + select.removeChild(select.options[j]); + } + if ( select.value !== selectedTabValue ) { + select.selectedIndex = 0; + select.value = ''; + dom.attr(select.options[0], 'selected', ''); + pageSelectorChanged(); + } + + updateCurrentTabTitle(); +}; + +/******************************************************************************/ + +const onLogBufferRead = function(response) { + if ( !response || response.unavailable ) { return; } + + // Disable tooltips? + if ( + popupLoggerTooltips === undefined && + response.tooltips !== undefined + ) { + popupLoggerTooltips = response.tooltips; + if ( popupLoggerTooltips === false ) { + dom.attr('[data-i18n-title]', 'title', ''); + } + } + + // Tab id of currently active tab + let activeTabIdChanged = false; + if ( response.activeTabId ) { + activeTabIdChanged = response.activeTabId !== activeTabId; + activeTabId = response.activeTabId; + } + + if ( Array.isArray(response.tabIds) ) { + response.tabIds = new Map(response.tabIds); + } + + // List of tab ids has changed + if ( response.tabIds !== undefined ) { + synchronizeTabIds(response.tabIds); + allTabIdsToken = response.tabIdsToken; + } + + if ( activeTabIdChanged ) { + pageSelectorFromURLHash(); + } + + processLoggerEntries(response); + + // Synchronize DOM with sent logger data + dom.cl.toggle(dom.html, 'colorBlind', response.colorBlind === true); + dom.cl.toggle('#clean', 'disabled', filteredLoggerEntryVoidedCount === 0); + dom.cl.toggle('#clear', 'disabled', filteredLoggerEntries.length === 0); +}; + +/******************************************************************************/ + +const readLogBuffer = (( ) => { + let reading = false; + + const readLogBufferNow = async function() { + if ( logger.ownerId === undefined ) { return; } + if ( reading ) { return; } + + reading = true; + + const msg = { + what: 'readAll', + ownerId: logger.ownerId, + tabIdsToken: allTabIdsToken, + }; + + // This is to detect changes in the position or size of the logger + // popup window (if in use). + if ( + popupLoggerBox instanceof Object && + ( + self.screenX !== popupLoggerBox.x || + self.screenY !== popupLoggerBox.y || + self.outerWidth !== popupLoggerBox.w || + self.outerHeight !== popupLoggerBox.h + ) + ) { + popupLoggerBox.x = self.screenX; + popupLoggerBox.y = self.screenY; + popupLoggerBox.w = self.outerWidth; + popupLoggerBox.h = self.outerHeight; + msg.popupLoggerBoxChanged = true; + } + + const response = await vAPI.messaging.send('loggerUI', msg); + + onLogBufferRead(response); + + reading = false; + + timer.on(1200); + }; + + const timer = vAPI.defer.create(readLogBufferNow); + + readLogBufferNow(); + + return ( ) => { + timer.on(1200); + }; +})(); + +/******************************************************************************/ + +const pageSelectorChanged = function() { + const select = qs$('#pageSelector'); + window.location.replace('#' + select.value); + pageSelectorFromURLHash(); +}; + +const pageSelectorFromURLHash = (( ) => { + let lastHash; + let lastSelectedTabId; + + return function() { + let hash = window.location.hash.slice(1); + let match = /^([^+]+)\+(.+)$/.exec(hash); + if ( match !== null ) { + hash = match[1]; + activeTabId = parseInt(match[2], 10) || 0; + window.location.hash = '#' + hash; + } + + if ( hash !== lastHash ) { + const select = qs$('#pageSelector'); + let option = qs$(select, `option[value="${hash}"]`); + if ( option === null ) { + hash = '0'; + option = select.options[0]; + } + select.selectedIndex = option.index; + select.value = option.value; + lastHash = hash; + } + + selectedTabId = hash === '_' + ? activeTabId + : parseInt(hash, 10) || 0; + + if ( lastSelectedTabId === selectedTabId ) { return; } + + rowFilterer.filterAll(); + updateCurrentTabTitle(); + dom.cl.toggle('.needdom', 'disabled', selectedTabId <= 0); + dom.cl.toggle('.needscope', 'disabled', selectedTabId <= 0); + lastSelectedTabId = selectedTabId; + dispatchTabidChange.onric({ timeout: 1000 }); + }; +})(); + +/******************************************************************************/ + +const reloadTab = function(bypassCache = false) { + const tabId = tabIdFromPageSelector(); + if ( tabId <= 0 ) { return; } + messaging.send('loggerUI', { + what: 'reloadTab', + tabId, + bypassCache, + }); +}; + +dom.on('#refresh', 'click', ev => { + reloadTab(ev.ctrlKey || ev.metaKey || ev.shiftKey); +}); + +dom.on(document, 'keydown', ev => { + if ( ev.isComposing ) { return; } + let bypassCache = false; + switch ( ev.key ) { + case 'F5': + bypassCache = ev.ctrlKey || ev.metaKey || ev.shiftKey; + break; + case 'r': + if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } + break; + case 'R': + if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } + bypassCache = true; + break; + default: + return; + } + reloadTab(bypassCache); + ev.preventDefault(); + ev.stopPropagation(); +}, { capture: true }); + +/******************************************************************************/ +/******************************************************************************/ + +(( ) => { + const reRFC3986 = /^([^:/?#]+:)?(\/\/[^/?#]*)?([^?#]*)(\?[^#]*)?(#.*)?/; + const reSchemeOnly = /^[\w-]+:$/; + const staticFilterTypes = { + 'beacon': 'ping', + 'doc': 'document', + 'css': 'stylesheet', + 'frame': 'subdocument', + 'object_subrequest': 'object', + 'csp_report': 'other', + }; + const createdStaticFilters = {}; + const reIsExceptionFilter = /^@@|^[\w.-]*?#@#/; + + let dialog = null; + let targetRow = null; + let targetType; + let targetURLs = []; + let targetFrameHostname; + let targetPageHostname; + let targetTabId; + let targetDomain; + let targetPageDomain; + let targetFrameDomain; + + const uglyTypeFromSelector = pane => { + const prettyType = selectValue('select.type.' + pane); + if ( pane === 'static' ) { + return staticFilterTypes[prettyType] || prettyType; + } + return uglyRequestTypes[prettyType] || prettyType; + }; + + const selectNode = selector => { + return qs$(dialog, selector); + }; + + const selectValue = selector => { + return selectNode(selector).value || ''; + }; + + const staticFilterNode = ( ) => { + return qs$(dialog, 'div.panes > div.static textarea'); + }; + + const toExceptionFilter = (filter, extended) => { + if ( reIsExceptionFilter.test(filter) ) { return filter; } + return extended ? filter.replace('##', '#@#') : `@@${filter}`; + }; + + const onColorsReady = function(response) { + dom.cl.toggle(dom.body, 'dirty', response.dirty); + for ( const url in response.colors ) { + if ( Object.hasOwn(response.colors, url) === false ) { continue; } + const colorEntry = response.colors[url]; + const node = qs$(dialog, `.dynamic .entry .action[data-url="${url}"]`); + if ( node === null ) { continue; } + dom.cl.toggle(node, 'allow', colorEntry.r === 2); + dom.cl.toggle(node, 'noop', colorEntry.r === 3); + dom.cl.toggle(node, 'block', colorEntry.r === 1); + dom.cl.toggle(node, 'own', colorEntry.own); + } + }; + + const colorize = async function() { + const response = await messaging.send('loggerUI', { + what: 'getURLFilteringData', + context: selectValue('select.dynamic.origin'), + urls: targetURLs, + type: uglyTypeFromSelector('dynamic'), + }); + onColorsReady(response); + }; + + const parseStaticInputs = function() { + const options = []; + const block = selectValue('select.static.action') === ''; + let filter = ''; + if ( !block ) { + filter = '@@'; + } + let value = selectValue('select.static.url'); + if ( value !== '' ) { + if ( reSchemeOnly.test(value) ) { + value = `|${value}`; + } else { + if ( /[/?]/.test(value) === false ) { + value += '^'; + } + value = `||${value}`; + } + } + filter += value; + value = selectValue('select.static.type'); + if ( value !== '' ) { + options.push(uglyTypeFromSelector('static')); + } + value = selectValue('select.static.origin'); + if ( value !== '' ) { + if ( value === targetDomain ) { + options.push('1p'); + } else { + options.push('domain=' + value); + } + } + if ( block && selectValue('select.static.importance') !== '' ) { + options.push('important'); + } + if ( options.length ) { + filter += '$' + options.join(','); + } + staticFilterNode().value = filter; + updateWidgets(); + }; + + const updateWidgets = function() { + const value = staticFilterNode().value; + dom.cl.toggle( + qs$(dialog, '#createStaticFilter'), + 'disabled', + Object.hasOwn(createdStaticFilters, value) || value === '' + ); + }; + + const onClick = async function(ev) { + const target = ev.target; + const tcl = target.classList; + + // Close entry tools + if ( tcl.contains('closeButton') ) { + ev.stopPropagation(); + toggleOff(); + return; + } + + // Select a pane + if ( tcl.contains('header') ) { + ev.stopPropagation(); + dom.attr(dialog, 'data-pane', dom.attr(target, 'data-pane')); + return; + } + + // Toggle temporary exception filter + if ( tcl.contains('exceptor') ) { + ev.stopPropagation(); + const filter = filterFromTargetRow(); + const status = await messaging.send('loggerUI', { + what: 'toggleInMemoryFilter', + filter: toExceptionFilter(filter, dom.cl.has(targetRow, 'extendedRealm')), + }); + const row = target.closest('div'); + dom.cl.toggle(row, 'exceptored', status); + return; + } + + // Create static filter + if ( target.id === 'createStaticFilter' ) { + ev.stopPropagation(); + const value = staticFilterNode().value + .replace(/^((?:@@)?\/.+\/)(\$|$)/, '$1*$2'); + // Avoid duplicates + if ( Object.hasOwn(createdStaticFilters, value) ) { return; } + createdStaticFilters[value] = true; + // https://github.com/uBlockOrigin/uBlock-issues/issues/1281#issuecomment-704217175 + // TODO: + // Figure a way to use the actual document URL. Currently using + // a synthetic URL derived from the document hostname. + if ( value !== '' ) { + messaging.send('loggerUI', { + what: 'createUserFilter', + autoComment: true, + filters: value, + docURL: `https://${targetFrameHostname}/`, + }); + } + updateWidgets(); + return; + } + + // Save url filtering rule(s) + if ( target.id === 'saveRules' ) { + ev.stopPropagation(); + await messaging.send('loggerUI', { + what: 'saveURLFilteringRules', + context: selectValue('select.dynamic.origin'), + urls: targetURLs, + type: uglyTypeFromSelector('dynamic'), + }); + colorize(); + return; + } + + const persist = !!ev.ctrlKey || !!ev.metaKey; + + // Remove url filtering rule + if ( tcl.contains('action') ) { + ev.stopPropagation(); + await messaging.send('loggerUI', { + what: 'setURLFilteringRule', + context: selectValue('select.dynamic.origin'), + url: dom.attr(target, 'data-url'), + type: uglyTypeFromSelector('dynamic'), + action: 0, + persist: persist, + }); + colorize(); + return; + } + + // add "allow" url filtering rule + if ( tcl.contains('allow') ) { + ev.stopPropagation(); + await messaging.send('loggerUI', { + what: 'setURLFilteringRule', + context: selectValue('select.dynamic.origin'), + url: dom.attr(target.parentNode, 'data-url'), + type: uglyTypeFromSelector('dynamic'), + action: 2, + persist: persist, + }); + colorize(); + return; + } + + // add "block" url filtering rule + if ( tcl.contains('noop') ) { + ev.stopPropagation(); + await messaging.send('loggerUI', { + what: 'setURLFilteringRule', + context: selectValue('select.dynamic.origin'), + url: dom.attr(target.parentNode, 'data-url'), + type: uglyTypeFromSelector('dynamic'), + action: 3, + persist: persist, + }); + colorize(); + return; + } + + // add "block" url filtering rule + if ( tcl.contains('block') ) { + ev.stopPropagation(); + await messaging.send('loggerUI', { + what: 'setURLFilteringRule', + context: selectValue('select.dynamic.origin'), + url: dom.attr(target.parentNode, 'data-url'), + type: uglyTypeFromSelector('dynamic'), + action: 1, + persist: persist, + }); + colorize(); + return; + } + + // Highlight corresponding element in target web page + if ( tcl.contains('picker') ) { + ev.stopPropagation(); + messaging.send('loggerUI', { + what: 'launchElementPicker', + tabId: targetTabId, + targetURL: 'img\t' + targetURLs[0], + select: true, + }); + return; + } + + // Reload tab associated with event + if ( tcl.contains('reload') ) { + ev.stopPropagation(); + messaging.send('loggerUI', { + what: 'reloadTab', + tabId: targetTabId, + bypassCache: ev.ctrlKey || ev.metaKey || ev.shiftKey, + }); + return; + } + }; + + const onSelectChange = function(ev) { + const tcl = ev.target.classList; + + if ( tcl.contains('dynamic') ) { + colorize(); + return; + } + + if ( tcl.contains('static') ) { + parseStaticInputs(); + return; + } + }; + + const onInputChange = function() { + updateWidgets(); + }; + + const createPreview = function(type, url) { + const cantPreview = + type !== 'image' || + dom.cl.has(targetRow, 'networkRealm') === false || + dom.attr(targetRow, 'data-status') === '1'; + + // Whether picker can be used + dom.cl.toggle( + qs$(dialog, '.picker'), + 'hide', + targetTabId < 0 || cantPreview + ); + + // Whether the resource can be previewed + if ( cantPreview ) { return; } + + const container = qs$(dialog, '.preview'); + dom.on(qs$(container, 'span'), 'click', ( ) => { + const preview = dom.create('img'); + dom.attr(preview, 'src', url); + container.replaceChild(preview, container.firstElementChild); + }, { once: true }); + + dom.cl.remove(container, 'hide'); + }; + + // https://github.com/gorhill/uBlock/issues/1511 + const shortenLongString = function(url, max) { + const urlLen = url.length; + if ( urlLen <= max ) { + return url; + } + const n = urlLen - max - 1; + const i = (urlLen - n) / 2 | 0; + return url.slice(0, i) + '…' + url.slice(i + n); + }; + + // Build list of candidate URLs + const createTargetURLs = function(url) { + const matches = reRFC3986.exec(url); + if ( matches === null ) { return []; } + if ( typeof matches[2] !== 'string' || matches[2].length === 0 ) { + return [ matches[1] ]; + } + // Shortest URL for a valid URL filtering rule + const urls = []; + const rootURL = matches[1] + matches[2]; + urls.unshift(rootURL); + const path = matches[3] || ''; + let pos = path.charAt(0) === '/' ? 1 : 0; + while ( pos < path.length ) { + pos = path.indexOf('/', pos); + if ( pos === -1 ) { + pos = path.length; + } else { + pos += 1; + } + urls.unshift(rootURL + path.slice(0, pos)); + } + const query = matches[4] || ''; + if ( query !== '' ) { + urls.unshift(rootURL + path + query); + } + return urls; + }; + + const filterFromTargetRow = function() { + return dom.text(targetRow.children[COLUMN_FILTER]); + }; + + const aliasURLFromID = function(id) { + if ( id === '' ) { return ''; } + for ( const entry of loggerEntries ) { + if ( `${entry.id}` !== id ) { continue; } + const match = /\baliasURL=([^\x1F]+)/.exec(entry.textContent); + if ( match === null ) { return ''; } + return match[1]; + } + return ''; + }; + + const toSummaryPaneFilterNode = async function(receiver, filter) { + receiver.children[COLUMN_FILTER].textContent = filter; + if ( dom.cl.has(targetRow, 'canLookup') === false ) { return; } + const isException = reIsExceptionFilter.test(filter); + let isExcepted = false; + if ( isException ) { + isExcepted = await messaging.send('loggerUI', { + what: 'hasInMemoryFilter', + filter: toExceptionFilter(filter, dom.cl.has(targetRow, 'extendedRealm')), + }); + } + if ( isException && isExcepted === false ) { return; } + dom.cl.toggle(receiver, 'exceptored', isExcepted); + receiver.children[2].style.visibility = ''; + }; + + const fillSummaryPaneFilterList = async function(rows) { + const rawFilter = targetRow.children[COLUMN_FILTER].textContent; + + const nodeFromFilter = function(filter, lists) { + const fragment = document.createDocumentFragment(); + const template = qs$('#filterFinderListEntry > span'); + for ( const list of lists ) { + const span = dom.clone(template); + let a = qs$(span, 'a:nth-of-type(1)'); + a.href += encodeURIComponent(list.assetKey); + a.append(i18n.patchUnicodeFlags(list.title)); + a = qs$(span, 'a:nth-of-type(2)'); + if ( list.supportURL ) { + dom.attr(a, 'href', list.supportURL); + } else { + a.style.display = 'none'; + } + if ( fragment.childElementCount !== 0 ) { + fragment.appendChild(document.createTextNode('\n')); + } + fragment.appendChild(span); + } + return fragment; + }; + + const handleResponse = function(response) { + if ( response instanceof Object === false ) { + response = {}; + } + let bestMatchFilter = ''; + for ( const filter in response ) { + if ( filter.length <= bestMatchFilter.length ) { continue; } + bestMatchFilter = filter; + } + if ( + bestMatchFilter !== '' && + Array.isArray(response[bestMatchFilter]) + ) { + toSummaryPaneFilterNode(rows[0], bestMatchFilter); + rows[1].children[1].appendChild(nodeFromFilter( + bestMatchFilter, + response[bestMatchFilter] + )); + } + // https://github.com/gorhill/uBlock/issues/2179 + if ( rows[1].children[1].childElementCount === 0 ) { + i18n.safeTemplateToDOM( + 'loggerStaticFilteringFinderSentence2', + { filter: rawFilter }, + rows[1].children[1] + ); + } + }; + + if ( dom.cl.has(targetRow, 'networkRealm') ) { + const response = await messaging.send('loggerUI', { + what: 'listsFromNetFilter', + rawFilter, + }); + handleResponse(response); + } else if ( dom.cl.has(targetRow, 'extendedRealm') ) { + const response = await messaging.send('loggerUI', { + what: 'listsFromCosmeticFilter', + url: targetRow.children[COLUMN_URL].textContent, + dochn: targetRow.dataset.dochn, + tophn: targetRow.dataset.tabhn, + rawFilter, + }); + handleResponse(response); + } + }; + + const fillSummaryPane = function() { + const rows = qsa$(dialog, '.pane.details > div'); + const tr = targetRow; + const trcl = tr.classList; + const trch = tr.children; + let text; + // Filter and context + text = filterFromTargetRow(); + if ( + (text !== '') && + (trcl.contains('extendedRealm') || trcl.contains('networkRealm')) + ) { + toSummaryPaneFilterNode(rows[0], text); + } else { + rows[0].style.display = 'none'; + } + // Rule + if ( + (text !== '') && + ( + trcl.contains('dynamicHost') || + trcl.contains('dynamicUrl') || + trcl.contains('switchRealm') + ) + ) { + rows[2].children[1].textContent = text; + } else { + rows[2].style.display = 'none'; + } + // Filter list + if ( trcl.contains('canLookup') ) { + fillSummaryPaneFilterList(rows); + } else { + rows[1].style.display = 'none'; + } + // Root and immediate contexts + const tabhn = dom.attr(tr, 'data-tabhn') || ''; + const dochn = dom.attr(tr, 'data-dochn') || ''; + if ( tabhn !== '' && tabhn !== dochn ) { + rows[3].children[1].textContent = tabhn; + } else { + rows[3].style.display = 'none'; + } + if ( dochn !== '' ) { + rows[4].children[1].textContent = dochn; + } else { + rows[4].style.display = 'none'; + } + // Partyness + text = dom.attr(tr, 'data-parties') || ''; + if ( text !== '' ) { + rows[5].children[1].textContent = `(${trch[COLUMN_PARTYNESS].textContent})\u2002${text}`; + } else { + rows[5].style.display = 'none'; + } + // Type + text = trch[COLUMN_TYPE].textContent; + if ( text !== '' ) { + rows[6].children[1].textContent = text; + } else { + rows[6].style.display = 'none'; + } + // URL + const canonicalURL = trch[COLUMN_URL].textContent; + if ( canonicalURL !== '' ) { + const attr = dom.attr(tr, 'data-status') || ''; + if ( attr !== '' ) { + dom.attr(rows[7], 'data-status', attr); + if ( tr.hasAttribute('data-modifier') ) { + dom.attr(rows[7], 'data-modifier', ''); + } + } + rows[7].children[1].appendChild(dom.clone(trch[COLUMN_URL])); + } else { + rows[7].style.display = 'none'; + } + // Alias URL + text = tr.dataset.aliasid; + const aliasURL = text ? aliasURLFromID(text) : ''; + if ( aliasURL !== '' ) { + rows[8].children[1].textContent = + hostnameFromURI(aliasURL) + ' \u21d2\n\u2003' + + hostnameFromURI(canonicalURL); + rows[9].children[1].textContent = aliasURL; + } else { + rows[8].style.display = 'none'; + rows[9].style.display = 'none'; + } + }; + + // Fill dynamic URL filtering pane + const fillDynamicPane = function() { + if ( dom.cl.has(targetRow, 'extendedRealm') ) { return; } + + // https://github.com/uBlockOrigin/uBlock-issues/issues/662#issuecomment-509220702 + if ( targetType === 'doc' ) { return; } + + // https://github.com/gorhill/uBlock/issues/2469 + if ( targetURLs.length === 0 || reSchemeOnly.test(targetURLs[0]) ) { + return; + } + + // Fill context selector + let select = selectNode('select.dynamic.origin'); + fillOriginSelect(select, targetPageHostname, targetPageDomain); + const option = document.createElement('option'); + option.textContent = '*'; + dom.attr(option, 'value', '*'); + select.appendChild(option); + + // Fill type selector + select = selectNode('select.dynamic.type'); + select.options[0].textContent = targetType; + dom.attr(select.options[0], 'value', targetType); + select.selectedIndex = 0; + + // Fill entries + const menuEntryTemplate = qs$(dialog, '.dynamic .toolbar .entry'); + const tbody = qs$(dialog, '.dynamic .entries'); + for ( const targetURL of targetURLs ) { + const menuEntry = dom.clone(menuEntryTemplate); + dom.attr(menuEntry.children[0], 'data-url', targetURL); + menuEntry.children[1].textContent = shortenLongString(targetURL, 128); + tbody.appendChild(menuEntry); + } + + colorize(); + }; + + const fillOriginSelect = function(select, hostname, domain) { + const template = i18n$('loggerStaticFilteringSentencePartOrigin'); + let value = hostname; + for (;;) { + const option = document.createElement('option'); + dom.attr(option, 'value', value); + option.textContent = template.replace('{{origin}}', value); + select.appendChild(option); + if ( value === domain ) { break; } + const pos = value.indexOf('.'); + if ( pos === -1 ) { break; } + value = value.slice(pos + 1); + } + }; + + // Fill static filtering pane + const fillStaticPane = function() { + if ( dom.cl.has(targetRow, 'extendedRealm') ) { return; } + + const template = i18n$('loggerStaticFilteringSentence'); + const rePlaceholder = /\{\{[^}]+?\}\}/g; + const nodes = []; + let pos = 0; + for (;;) { + const match = rePlaceholder.exec(template); + if ( match === null ) { break; } + if ( pos !== match.index ) { + nodes.push(document.createTextNode(template.slice(pos, match.index))); + } + pos = rePlaceholder.lastIndex; + let select, option; + switch ( match[0] ) { + case '{{br}}': + nodes.push(document.createElement('br')); + break; + + case '{{action}}': + select = document.createElement('select'); + select.className = 'static action'; + option = document.createElement('option'); + dom.attr(option, 'value', ''); + option.textContent = i18n$('loggerStaticFilteringSentencePartBlock'); + select.appendChild(option); + option = document.createElement('option'); + dom.attr(option, 'value', '@@'); + option.textContent = i18n$('loggerStaticFilteringSentencePartAllow'); + select.appendChild(option); + nodes.push(select); + break; + + case '{{type}}': { + const filterType = staticFilterTypes[targetType] || targetType; + select = document.createElement('select'); + select.className = 'static type'; + option = document.createElement('option'); + dom.attr(option, 'value', filterType); + option.textContent = i18n$('loggerStaticFilteringSentencePartType').replace('{{type}}', filterType); + select.appendChild(option); + option = document.createElement('option'); + dom.attr(option, 'value', ''); + option.textContent = i18n$('loggerStaticFilteringSentencePartAnyType'); + select.appendChild(option); + nodes.push(select); + break; + } + case '{{url}}': + select = document.createElement('select'); + select.className = 'static url'; + for ( const targetURL of targetURLs ) { + const value = targetURL.replace(/^[a-z-]+:\/\//, ''); + option = document.createElement('option'); + dom.attr(option, 'value', value); + option.textContent = shortenLongString(value, 128); + select.appendChild(option); + } + nodes.push(select); + break; + + case '{{origin}}': + select = document.createElement('select'); + select.className = 'static origin'; + fillOriginSelect(select, targetFrameHostname, targetFrameDomain); + option = document.createElement('option'); + dom.attr(option, 'value', ''); + option.textContent = i18n$('loggerStaticFilteringSentencePartAnyOrigin'); + select.appendChild(option); + nodes.push(select); + break; + + case '{{importance}}': + select = document.createElement('select'); + select.className = 'static importance'; + option = document.createElement('option'); + dom.attr(option, 'value', ''); + option.textContent = i18n$('loggerStaticFilteringSentencePartNotImportant'); + select.appendChild(option); + option = document.createElement('option'); + dom.attr(option, 'value', 'important'); + option.textContent = i18n$('loggerStaticFilteringSentencePartImportant'); + select.appendChild(option); + nodes.push(select); + break; + + default: + break; + } + } + if ( pos < template.length ) { + nodes.push(document.createTextNode(template.slice(pos))); + } + const parent = qs$(dialog, 'div.panes > .static > div:first-of-type'); + for ( let i = 0; i < nodes.length; i++ ) { + parent.appendChild(nodes[i]); + } + parseStaticInputs(); + }; + + const fillDialog = function(domains) { + dialog = dom.clone('#templates .netFilteringDialog'); + dom.cl.toggle( + dialog, + 'extendedRealm', + dom.cl.has(targetRow, 'extendedRealm') + ); + targetDomain = domains[0]; + targetPageDomain = domains[1]; + targetFrameDomain = domains[2]; + createPreview(targetType, targetURLs[0]); + fillSummaryPane(); + fillDynamicPane(); + fillStaticPane(); + dom.on(dialog, 'click', ev => { onClick(ev); }, true); + dom.on(dialog, 'change', onSelectChange, true); + dom.on(dialog, 'input', onInputChange, true); + const container = qs$('#inspectors .entryTools'); + if ( container.firstChild ) { + container.replaceChild(dialog, container.firstChild); + } else { + container.append(dialog); + } + }; + + const toggleOn = async function(ev) { + const clickedRow = ev.target.closest('.canDetails'); + if ( clickedRow === null ) { return; } + if ( clickedRow === targetRow ) { + return toggleOff(); + } + targetRow = clickedRow; + ev.stopPropagation(); + targetTabId = tabIdFromAttribute(targetRow); + targetType = targetRow.children[COLUMN_TYPE].textContent.trim() || ''; + targetURLs = createTargetURLs(targetRow.children[COLUMN_URL].textContent); + targetPageHostname = dom.attr(targetRow, 'data-tabhn') || ''; + targetFrameHostname = dom.attr(targetRow, 'data-dochn') || ''; + + // We need the root domain names for best user experience. + const domains = await messaging.send('loggerUI', { + what: 'getDomainNames', + targets: [ + targetURLs[0], + targetPageHostname, + targetFrameHostname + ], + }); + fillDialog(domains); + }; + + const toggleOff = function() { + const container = qs$('#inspectors .entryTools'); + if ( container.firstChild ) { + container.firstChild.remove(); + } + targetURLs = []; + targetRow = null; + dialog = null; + }; + + // Restore position of entry tools dialog + vAPI.localStorage.removeItem('loggerUI.entryTools'); + + // This is to detect text selection, in which case the click won't be + // interpreted as a request to open the details of the entry. + let selectionAtMouseDown; + let selectionAtTimer; + dom.on('#netInspector', 'mousedown', '.canDetails *:not(a)', ev => { + if ( ev.button !== 0 ) { return; } + if ( selectionAtMouseDown !== undefined ) { return; } + selectionAtMouseDown = document.getSelection().toString(); + }); + + dom.on('#netInspector', 'click', '.canDetails *:not(a)', ev => { + if ( ev.button !== 0 ) { return; } + if ( selectionAtTimer !== undefined ) { + clearTimeout(selectionAtTimer); + } + selectionAtTimer = setTimeout(( ) => { + selectionAtTimer = undefined; + const selectionAsOfNow = document.getSelection().toString(); + const selectionHasChanged = selectionAsOfNow !== selectionAtMouseDown; + selectionAtMouseDown = undefined; + if ( selectionHasChanged && selectionAsOfNow !== '' ) { return; } + toggleOn(ev); + }, 333); + }); + + dom.on('#netInspector', 'click', '.logEntry > div > span:nth-of-type(8) a', ev => { + vAPI.messaging.send('codeViewer', { + what: 'gotoURL', + details: { + url: ev.target.getAttribute('href'), + select: true, + }, + }); + ev.preventDefault(); + ev.stopPropagation(); + } + ); +})(); + +/******************************************************************************/ +/******************************************************************************/ + +const consolePane = (( ) => { + let on = false; + + const lastInfoEntry = ( ) => { + let j = Number.MAX_SAFE_INTEGER; + let i = loggerEntries.length; + while ( i-- ) { + const entry = loggerEntries[i]; + if ( entry.tabId !== selectedTabId ) { continue; } + if ( entry.realm !== 'message' ) { continue; } + if ( entry.voided ) { continue; } + j = entry.id; + } + return j; + }; + + const filterExpr = { + not: true, + pattern: '', + }; + + const filterExprFromInput = ( ) => { + const raw = qs$('#infoInspector .permatoolbar input').value.trim(); + if ( raw.startsWith('-') && raw.length > 1 ) { + filterExpr.pattern = raw.slice(1); + filterExpr.not = true; + } else { + filterExpr.pattern = raw; + filterExpr.not = false; + } + if ( filterExpr.pattern !== '' ) { + filterExpr.pattern = new RegExp(escapeRegexStr(filterExpr.pattern), 'i'); + } + }; + + const addRows = ( ) => { + const { not, pattern } = filterExpr; + const topRow = qs$('#infoInspector .vscrollable > div'); + const topid = topRow !== null ? parseInt(topRow.dataset.id, 10) : 0; + const fragment = new DocumentFragment(); + for ( const entry of loggerEntries ) { + if ( entry.id <= topid ) { break; } + if ( entry.tabId !== selectedTabId ) { continue; } + if ( entry.realm !== 'message' ) { continue; } + if ( entry.voided ) { continue; } + const fields = entry.textContent.split('\x1F').slice(0, 2); + const textContent = fields.join('\xA0'); + if ( pattern instanceof RegExp ) { + if ( pattern.test(textContent) === not ) { continue; } + } + const div = document.createElement('div'); + div.dataset.id = `${entry.id}`; + div.dataset.type = entry.type; + div.textContent = textContent; + fragment.append(div); + } + const container = qs$('#infoInspector .vscrollable'); + container.prepend(fragment); + } + + const removeRows = (before = 0) => { + if ( before === 0 ) { + before = lastInfoEntry(); + } + const rows = qsa$('#infoInspector .vscrollable > div'); + let i = rows.length; + while ( i-- ) { + const div = rows[i]; + const id = parseInt(div.dataset.id, 10); + if ( id > before ) { break; } + div.remove(); + } + } + + const updateContent = ( ) => { + if ( on === false ) { return; } + removeRows(); + addRows(); + }; + + const onTabIdChanged = ( ) => { + if ( on === false ) { return; } + removeRows(Number.MAX_SAFE_INTEGER); + addRows(); + }; + + const toggleOn = ( ) => { + if ( on ) { return; } + addRows(); + dom.on(document, 'tabIdChanged', onTabIdChanged); + on = true; + }; + + const toggleOff = ( ) => { + removeRows(Number.MAX_SAFE_INTEGER); + dom.off(document, 'tabIdChanged', onTabIdChanged); + on = false; + }; + + const resizeObserver = new self.ResizeObserver(entries => { + if ( entries.length === 0 ) { return; } + const rect = entries[0].contentRect; + if ( rect.width > 0 && rect.height > 0 ) { + toggleOn(); + } else { + toggleOff(); + } + }); + resizeObserver.observe(qs$('#infoInspector')); + + dom.on('button.logConsole', 'click', ev => { + const active = dom.cl.toggle('#inspectors', 'console'); + dom.cl.toggle(ev.currentTarget, 'active', active); + }); + + dom.on('#infoInspector button#clearConsole', 'click', ( ) => { + const ids = []; + qsa$('#infoInspector .vscrollable > div').forEach(div => { + ids.push(parseInt(div.dataset.id, 10)); + }); + rowJanitor.removeSpecificRows(ids); + }); + + dom.on('#infoInspector button#logLevel', 'click', ev => { + const level = dom.cl.toggle(ev.currentTarget, 'active') ? 2 : 1; + broadcast({ what: 'loggerLevelChanged', level }); + }); + + const throttleFilter = vAPI.defer.create(( ) => { + filterExprFromInput(); + updateContent(); + }); + dom.on('#infoInspector .permatoolbar input', 'input', ( ) => { + throttleFilter.offon(517); + }); + + return { updateContent }; +})(); + +/******************************************************************************/ +/******************************************************************************/ + +const rowFilterer = (( ) => { + const userFilters = []; + const builtinFilters = []; + + let masterFilterSwitch = true; + let filters = []; + + const parseInput = function() { + userFilters.length = 0; + + const rawParts = qs$('#filterInput > input').value.trim().split(/\s+/); + const n = rawParts.length; + const reStrs = []; + let not = false; + for ( let i = 0; i < n; i++ ) { + let rawPart = rawParts[i]; + if ( rawPart.charAt(0) === '!' ) { + if ( reStrs.length === 0 ) { + not = true; + } + rawPart = rawPart.slice(1); + } + let reStr = ''; + if ( rawPart.startsWith('/') && rawPart.endsWith('/') ) { + reStr = rawPart.slice(1, -1); + try { + new RegExp(reStr); + } catch { + reStr = ''; + } + } + if ( reStr === '' ) { + const hardBeg = rawPart.startsWith('|'); + if ( hardBeg ) { + rawPart = rawPart.slice(1); + } + const hardEnd = rawPart.endsWith('|'); + if ( hardEnd ) { + rawPart = rawPart.slice(0, -1); + } + // https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions + reStr = escapeRegexStr(rawPart); + // https://github.com/orgs/uBlockOrigin/teams/ublock-issues-volunteers/discussions/51 + // Be more flexible when interpreting leading/trailing pipes, + // as leading/trailing pipes are often used in static filters. + if ( hardBeg ) { + reStr = reStr !== '' ? '(?:^|\\s|\\|)' + reStr : '\\|'; + } + if ( hardEnd ) { + reStr += '(?:\\||\\s|$)'; + } + } + if ( reStr === '' ) { continue; } + reStrs.push(reStr); + if ( i < (n - 1) && rawParts[i + 1] === '||' ) { + i += 1; + continue; + } + reStr = reStrs.length === 1 ? reStrs[0] : reStrs.join('|'); + userFilters.push({ + re: new RegExp(reStr, 'i'), + r: !not + }); + reStrs.length = 0; + not = false; + } + filters = builtinFilters.concat(userFilters); + }; + + const filterOne = logEntry => { + if ( logEntry.dead ) { return false; } + if ( selectedTabId !== 0 ) { + if ( logEntry.tabId !== undefined && logEntry.tabId > 0 ) { + if (logEntry.tabId !== selectedTabId ) { return false; } + } + } + + if ( masterFilterSwitch === false || filters.length === 0 ) { + return true; + } + + // Do not filter out tab load event, they help separate key sections + // of logger. + if ( logEntry.type === 'tabLoad' ) { return true; } + + for ( const f of filters ) { + if ( f.re.test(logEntry.textContent) !== f.r ) { return false; } + } + return true; + }; + + const filterAll = function() { + filteredLoggerEntries = []; + filteredLoggerEntryVoidedCount = 0; + for ( const entry of loggerEntries ) { + if ( filterOne(entry) === false ) { continue; } + filteredLoggerEntries.push(entry); + if ( entry.voided ) { + filteredLoggerEntryVoidedCount += 1; + } + } + viewPort.updateContent(0); + dom.cl.toggle('#filterButton', 'active', filters.length !== 0); + dom.cl.toggle('#clean', 'disabled', filteredLoggerEntryVoidedCount === 0); + dom.cl.toggle('#clear', 'disabled', filteredLoggerEntries.length === 0); + }; + + const onFilterChangedAsync = (( ) => { + const commit = ( ) => { + parseInput(); + filterAll(); + }; + const timer = vAPI.defer.create(commit); + return ( ) => { + timer.offon(750); + }; + })(); + + const onFilterButton = function() { + masterFilterSwitch = !masterFilterSwitch; + dom.cl.toggle('#netInspector', 'f', masterFilterSwitch); + filterAll(); + }; + + const onToggleExtras = function(ev) { + dom.cl.toggle(ev.target, 'expanded'); + }; + + const builtinFilterExpression = function() { + builtinFilters.length = 0; + const filtexElems = qsa$('#filterExprPicker [data-filtex]'); + const orExprs = []; + let not = false; + for ( const filtexElem of filtexElems ) { + const filtex = filtexElem.dataset.filtex; + const active = dom.cl.has(filtexElem, 'on'); + if ( filtex === '!' ) { + if ( orExprs.length !== 0 ) { + builtinFilters.push({ + re: new RegExp(orExprs.join('|')), + r: !not + }); + orExprs.length = 0; + } + not = active; + } else if ( active ) { + orExprs.push(filtex); + } + } + if ( orExprs.length !== 0 ) { + builtinFilters.push({ + re: new RegExp(orExprs.join('|')), + r: !not + }); + } + filters = builtinFilters.concat(userFilters); + dom.cl.toggle('#filterExprButton', 'active', builtinFilters.length !== 0); + filterAll(); + }; + + dom.on('#filterButton', 'click', onFilterButton); + dom.on('#filterInput > input', 'input', onFilterChangedAsync); + dom.on('#filterExprButton', 'click', onToggleExtras); + dom.on('#filterExprPicker', 'click', '[data-filtex]', ev => { + dom.cl.toggle(ev.target, 'on'); + builtinFilterExpression(); + }); + dom.on('#filterInput > input', 'drop', ev => { + const dropItem = item => { + if ( item.kind !== 'string' ) { return false; } + if ( item.type !== 'text/plain' ) { return false; } + item.getAsString(s => { + qs$('#filterInput > input').value = s; + parseInput(); + filterAll(); + }); + return true; + }; + for ( const item of ev.dataTransfer.items ) { + if ( dropItem(item) === false ) { continue; } + ev.preventDefault(); + break; + } + }); + + // https://github.com/gorhill/uBlock/issues/404 + // Ensure page state is in sync with the state of its various widgets. + parseInput(); + builtinFilterExpression(); + filterAll(); + + return { filterOne, filterAll }; +})(); + +/******************************************************************************/ + +// Discard logger entries to prevent undue memory usage growth. The criteria +// to discard are multiple and user configurable: +// +// - Max number of page load per distinct tab +// - Max number of entry per distinct tab +// - Max entry age + +const rowJanitor = (( ) => { + const tabIdToDiscard = new Set(); + const tabIdToLoadCountMap = new Map(); + const tabIdToEntryCountMap = new Map(); + + let rowIndex = 0; + + const discard = function(deadline) { + const opts = loggerSettings.discard; + const maxLoadCount = typeof opts.maxLoadCount === 'number' + ? opts.maxLoadCount + : 0; + const maxEntryCount = typeof opts.maxEntryCount === 'number' + ? opts.maxEntryCount + : 0; + const obsolete = typeof opts.maxAge === 'number' + ? Date.now() / 1000 - opts.maxAge * 60 + : 0; + + let i = rowIndex; + // TODO: below should not happen -- remove when confirmed. + if ( i >= loggerEntries.length ) { + i = 0; + } + + if ( i === 0 ) { + tabIdToDiscard.clear(); + tabIdToLoadCountMap.clear(); + tabIdToEntryCountMap.clear(); + } + + let idel = -1; + let bufferedTabId = 0; + let bufferedEntryCount = 0; + let modified = false; + + while ( i < loggerEntries.length ) { + + if ( i % 64 === 0 && deadline.timeRemaining() === 0 ) { break; } + + const entry = loggerEntries[i]; + const tabId = entry.tabId || 0; + + if ( entry.dead || tabIdToDiscard.has(tabId) ) { + if ( idel === -1 ) { idel = i; } + i += 1; + continue; + } + + if ( maxLoadCount !== 0 && entry.type === 'tabLoad' ) { + let count = (tabIdToLoadCountMap.get(tabId) || 0) + 1; + tabIdToLoadCountMap.set(tabId, count); + if ( count >= maxLoadCount ) { + tabIdToDiscard.add(tabId); + } + } + + if ( maxEntryCount !== 0 ) { + if ( bufferedTabId !== tabId ) { + if ( bufferedEntryCount !== 0 ) { + tabIdToEntryCountMap.set(bufferedTabId, bufferedEntryCount); + } + bufferedTabId = tabId; + bufferedEntryCount = tabIdToEntryCountMap.get(tabId) || 0; + } + bufferedEntryCount += 1; + if ( bufferedEntryCount >= maxEntryCount ) { + tabIdToDiscard.add(bufferedTabId); + } + } + + // Since entries in the logger are chronologically ordered, + // everything below obsolete is to be discarded. + if ( obsolete !== 0 && entry.tstamp <= obsolete ) { + if ( idel === -1 ) { idel = i; } + break; + } + + if ( idel !== -1 ) { + loggerEntries.copyWithin(idel, i); + loggerEntries.length -= i - idel; + idel = -1; + modified = true; + } + + i += 1; + } + + if ( idel !== -1 ) { + loggerEntries.length = idel; + modified = true; + } + + if ( i >= loggerEntries.length ) { i = 0; } + rowIndex = i; + + if ( rowIndex === 0 ) { + tabIdToDiscard.clear(); + tabIdToLoadCountMap.clear(); + tabIdToEntryCountMap.clear(); + } + + if ( modified === false ) { return; } + + rowFilterer.filterAll(); + consolePane.updateContent(); + }; + + const discardAsync = function(deadline) { + if ( deadline ) { + discard(deadline); + } + janitorTimer.onidle(1889); + }; + + const janitorTimer = vAPI.defer.create(discardAsync); + + // Clear voided entries from the logger's visible content. + // + // Voided entries should be visible only from the "All" option of the + // tab selector. + // + const clean = function() { + if ( filteredLoggerEntries.length === 0 ) { return; } + + let j = 0; + let targetEntry = filteredLoggerEntries[0]; + for ( const entry of loggerEntries ) { + if ( entry !== targetEntry ) { continue; } + if ( entry.voided ) { + entry.dead = true; + } + j += 1; + if ( j === filteredLoggerEntries.length ) { break; } + targetEntry = filteredLoggerEntries[j]; + } + rowFilterer.filterAll(); + }; + + // Clear the logger's visible content. + // + // "Unrelated" entries -- shown for convenience -- will be also cleared + // if and only if the filtered logger content is made entirely of unrelated + // entries. In effect, this means clicking a second time on the eraser will + // cause unrelated entries to also be cleared. + // + const clear = function() { + if ( filteredLoggerEntries.length === 0 ) { return; } + + let clearUnrelated = true; + if ( selectedTabId !== 0 ) { + for ( const entry of filteredLoggerEntries ) { + if ( entry.tabId === selectedTabId ) { + clearUnrelated = false; + break; + } + } + } + + let j = 0; + let targetEntry = filteredLoggerEntries[0]; + for ( const entry of loggerEntries ) { + if ( entry !== targetEntry ) { continue; } + if ( entry.tabId === selectedTabId || clearUnrelated ) { + entry.dead = true; + } + j += 1; + if ( j === filteredLoggerEntries.length ) { break; } + targetEntry = filteredLoggerEntries[j]; + } + rowFilterer.filterAll(); + }; + + discardAsync(); + + dom.on('#clean', 'click', clean); + dom.on('#clear', 'click', clear); + + return { + inserted(count) { + if ( rowIndex !== 0 ) { + rowIndex += count; + } + }, + removeSpecificRows(descendingIds) { + if ( descendingIds.length === 0 ) { return; } + let i = loggerEntries.length; + let id = descendingIds.pop(); + while ( i-- ) { + const entry = loggerEntries[i]; + if ( entry.id !== id ) { continue; } + loggerEntries.splice(i, 1); + if ( descendingIds.length === 0 ) { break; } + id = descendingIds.pop(); + } + rowFilterer.filterAll(); + consolePane.updateContent(); + }, + }; +})(); + +/******************************************************************************/ + +const pauseNetInspector = function() { + netInspectorPaused = dom.cl.toggle('#netInspector', 'paused'); +}; + +/******************************************************************************/ + +const toggleVCompactView = function() { + dom.cl.toggle('#netInspector .vCompactToggler', 'vExpanded'); + viewPort.updateLayout(); +}; + +/******************************************************************************/ + +const popupManager = (( ) => { + let realTabId = 0; + let popup = null; + let popupObserver = null; + + const resizePopup = function() { + if ( popup === null ) { return; } + const popupBody = popup.contentWindow.document.body; + if ( popupBody.clientWidth !== 0 && popup.clientWidth !== popupBody.clientWidth ) { + popup.style.setProperty('width', popupBody.clientWidth + 'px'); + } + if ( popupBody.clientHeight !== 0 && popup.clientHeight !== popupBody.clientHeight ) { + popup.style.setProperty('height', popupBody.clientHeight + 'px'); + } + }; + + const onLoad = function() { + resizePopup(); + popupObserver.observe(popup.contentDocument.body, { + subtree: true, + attributes: true + }); + }; + + const setTabId = function(tabId) { + if ( popup === null ) { return; } + dom.attr(popup, 'src', `popup-fenix.html?portrait=1&tabId=${tabId}`); + }; + + const onTabIdChanged = function() { + const tabId = tabIdFromPageSelector(); + if ( tabId === 0 ) { return toggleOff(); } + realTabId = tabId; + setTabId(realTabId); + }; + + const toggleOn = function() { + const tabId = tabIdFromPageSelector(); + if ( tabId === 0 ) { return; } + realTabId = tabId; + + popup = qs$('#popupContainer'); + + dom.on(popup, 'load', onLoad); + popupObserver = new MutationObserver(resizePopup); + + const parent = qs$('#inspectors'); + const rect = parent.getBoundingClientRect(); + popup.style.setProperty('right', `${rect.right - parent.clientWidth}px`); + dom.cl.add(parent, 'popupOn'); + + dom.on(document, 'tabIdChanged', onTabIdChanged); + + setTabId(realTabId); + dom.cl.add('#showpopup', 'active'); + }; + + const toggleOff = function() { + dom.cl.remove('#showpopup', 'active'); + dom.off(document, 'tabIdChanged', onTabIdChanged); + dom.cl.remove('#inspectors', 'popupOn'); + dom.off(popup, 'load', onLoad); + popupObserver.disconnect(); + popupObserver = null; + dom.attr(popup, 'src', ''); + + realTabId = 0; + }; + + const api = { + get tabId() { return realTabId || 0; }, + toggleOff: function() { + if ( realTabId !== 0 ) { + toggleOff(); + } + } + }; + + dom.on('#showpopup', 'click', ( ) => { + void (realTabId === 0 ? toggleOn() : toggleOff()); + }); + + return api; +})(); + +/******************************************************************************/ + +// Filter hit stats' MVP ("minimum viable product") +// +const loggerStats = (( ) => { + const enabled = false; + const filterHits = new Map(); + let dialog; + let timer; + const makeRow = function() { + const div = document.createElement('div'); + div.appendChild(document.createElement('span')); + div.appendChild(document.createElement('span')); + return div; + }; + + const fillRow = function(div, entry) { + div.children[0].textContent = entry[1].toLocaleString(); + div.children[1].textContent = entry[0]; + }; + + const updateList = function() { + const sortedHits = Array.from(filterHits).sort((a, b) => { + return b[1] - a[1]; + }); + + const doc = document; + const parent = qs$(dialog, '.sortedEntries'); + let i = 0; + + // Reuse existing rows + for ( let iRow = 0; iRow < parent.childElementCount; iRow++ ) { + if ( i === sortedHits.length ) { break; } + fillRow(parent.children[iRow], sortedHits[i]); + i += 1; + } + + // Append new rows + if ( i < sortedHits.length ) { + const list = doc.createDocumentFragment(); + for ( ; i < sortedHits.length; i++ ) { + const div = makeRow(); + fillRow(div, sortedHits[i]); + list.appendChild(div); + } + parent.appendChild(list); + } + + // Remove extraneous rows + // [Should never happen at this point in this current + // bare-bone implementation] + }; + + const toggleOn = function() { + dialog = modalDialog.create( + '#loggerStatsDialog', + ( ) => { + dialog = undefined; + if ( timer !== undefined ) { + self.cancelIdleCallback(timer); + timer = undefined; + } + } + ); + updateList(); + modalDialog.show(); + }; + + dom.on('#loggerStats', 'click', toggleOn); + + return { + processFilter: function(filter) { + if ( enabled !== true ) { return; } + if ( filter.source !== 'static' && filter.source !== 'cosmetic' ) { + return; + } + filterHits.set(filter.raw, (filterHits.get(filter.raw) || 0) + 1); + if ( dialog === undefined || timer !== undefined ) { return; } + timer = self.requestIdleCallback( + ( ) => { + timer = undefined; + updateList(); + }, + { timeout: 2001 } + ); + } + }; +})(); + +/******************************************************************************/ + +(( ) => { + const lines = []; + const options = { + format: 'list', + encoding: 'markdown', + time: 'anonymous', + }; + let dialog; + + const collectLines = function() { + lines.length = 0; + let t0 = filteredLoggerEntries.length !== 0 + ? filteredLoggerEntries[filteredLoggerEntries.length - 1].tstamp + : 0; + for ( const entry of filteredLoggerEntries ) { + const text = entry.textContent; + const fields = []; + let beg = text.indexOf('\x1F'); + if ( beg === 0 ) { continue; } + let timeField = text.slice(0, beg); + if ( options.time === 'anonymous' ) { + timeField = '+' + Math.round(entry.tstamp - t0).toString(); + } + fields.push(timeField); + beg += 1; + while ( beg < text.length ) { + let end = text.indexOf('\x1F', beg); + if ( end === -1 ) { end = text.length; } + fields.push(text.slice(beg, end)); + beg = end + 1; + } + lines.push(fields); + } + }; + + const formatAsPlainTextTable = function() { + const outputAll = []; + for ( const fields of lines ) { + outputAll.push(fields.join('\t')); + } + outputAll.push(''); + return outputAll.join('\n'); + }; + + const formatAsMarkdownTable = function() { + const outputAll = []; + let fieldCount = 0; + for ( const fields of lines ) { + if ( fields.length <= 2 ) { continue; } + if ( fields.length > fieldCount ) { + fieldCount = fields.length; + } + const outputOne = []; + for ( let i = 0; i < fields.length; i++ ) { + const field = fields[i]; + const code = i === 1 || /\b(?:www\.|https?:\/\/)/.test(field) ? '`' : ''; + outputOne.push(` ${code}${field.replace(/\|/g, '\\|')}${code} `); + } + outputAll.push(outputOne.join('|')); + } + if ( fieldCount !== 0 ) { + outputAll.unshift( + `${' |'.repeat(fieldCount-1)} `, + `${':--- |'.repeat(fieldCount-1)}:--- ` + ); + } + return `

Logger output\n\n|${outputAll.join('|\n|')}|\n
\n`; + }; + + const formatAsTable = function() { + if ( options.encoding === 'plain' ) { + return formatAsPlainTextTable(); + } + return formatAsMarkdownTable(); + }; + + const formatAsList = function() { + const outputAll = []; + for ( const fields of lines ) { + const outputOne = []; + for ( let i = 0; i < fields.length; i++ ) { + let str = fields[i]; + if ( str.length === 0 ) { continue; } + outputOne.push(str); + } + outputAll.push(outputOne.join('\n')); + } + let before, between, after; + if ( options.encoding === 'markdown' ) { + const code = '```'; + before = `
Logger output\n\n${code}\n`; + between = `\n${code}\n${code}\n`; + after = `\n${code}\n
\n`; + } else { + before = ''; + between = '\n\n'; + after = '\n'; + } + return `${before}${outputAll.join(between)}${after}`; + }; + + const format = function() { + const output = qs$(dialog, '.output'); + if ( options.format === 'list' ) { + output.textContent = formatAsList(); + } else { + output.textContent = formatAsTable(); + } + }; + + const setRadioButton = function(group, value) { + if ( Object.hasOwn(options, group) === false ) { return; } + const groupEl = qs$(dialog, `[data-radio="${group}"]`); + const buttonEls = qsa$(groupEl, '[data-radio-item]'); + for ( const buttonEl of buttonEls ) { + dom.cl.toggle( + buttonEl, + 'on', + dom.attr(buttonEl, 'data-radio-item') === value + ); + } + options[group] = value; + }; + + const onOption = function(ev) { + const target = ev.target.closest('span[data-i18n]'); + if ( target === null ) { return; } + + // Copy to clipboard + if ( target.matches('.pushbutton') ) { + const textarea = qs$(dialog, 'textarea'); + textarea.focus(); + if ( textarea.selectionEnd === textarea.selectionStart ) { + textarea.select(); + } + document.execCommand('copy'); + ev.stopPropagation(); + return; + } + + // Radio buttons + const group = target.closest('[data-radio]'); + if ( group === null ) { return; } + if ( target.matches('span.on') ) { return; } + const item = target.closest('[data-radio-item]'); + if ( item === null ) { return; } + setRadioButton( + dom.attr(group, 'data-radio'), + dom.attr(item, 'data-radio-item') + ); + format(); + ev.stopPropagation(); + }; + + const toggleOn = function() { + dialog = modalDialog.create( + '#loggerExportDialog', + ( ) => { + dialog = undefined; + lines.length = 0; + } + ); + + setRadioButton('format', options.format); + setRadioButton('encoding', options.encoding); + + collectLines(); + format(); + + dom.on(qs$(dialog, '.options'), 'click', onOption, { capture: true }); + + modalDialog.show(); + }; + + dom.on('#loggerExport', 'click', toggleOn); +})(); + +/******************************************************************************/ + +// TODO: +// - Give some thoughts to: +// - an option to discard immediately filtered out new entries +// - max entry count _per load_ +// +const loggerSettings = (( ) => { + const settings = { + discard: { + maxAge: 240, // global + maxEntryCount: 2000, // per-tab + maxLoadCount: 20, // per-tab + }, + columns: [ true, true, true, true, true, true, true, true, true ], + linesPerEntry: 4, + }; + + vAPI.localStorage.getItemAsync('loggerSettings').then(value => { + try { + const stored = JSON.parse(value); + if ( typeof stored.discard.maxAge === 'number' ) { + settings.discard.maxAge = stored.discard.maxAge; + } + if ( typeof stored.discard.maxEntryCount === 'number' ) { + settings.discard.maxEntryCount = stored.discard.maxEntryCount; + } + if ( typeof stored.discard.maxLoadCount === 'number' ) { + settings.discard.maxLoadCount = stored.discard.maxLoadCount; + } + if ( typeof stored.linesPerEntry === 'number' ) { + settings.linesPerEntry = stored.linesPerEntry; + } + if ( Array.isArray(stored.columns) ) { + settings.columns = stored.columns; + } + } catch { + } + }); + + const valueFromInput = function(input, def) { + let value = parseInt(input.value, 10); + if ( isNaN(value) ) { value = def; } + const min = parseInt(dom.attr(input, 'min'), 10); + if ( isNaN(min) === false ) { + value = Math.max(value, min); + } + const max = parseInt(dom.attr(input, 'max'), 10); + if ( isNaN(max) === false ) { + value = Math.min(value, max); + } + return value; + }; + + const toggleOn = function() { + const dialog = modalDialog.create( + '#loggerSettingsDialog', + dialog => { + toggleOff(dialog); + } + ); + + // Number inputs + let inputs = qsa$(dialog, 'input[type="number"]'); + inputs[0].value = settings.discard.maxAge; + inputs[1].value = settings.discard.maxLoadCount; + inputs[2].value = settings.discard.maxEntryCount; + inputs[3].value = settings.linesPerEntry; + dom.on(inputs[3], 'input', ev => { + settings.linesPerEntry = valueFromInput(ev.target, 4); + viewPort.updateLayout(); + }); + + // Column checkboxs + const onColumnChanged = ev => { + const input = ev.target; + const i = parseInt(dom.attr(input, 'data-column'), 10); + settings.columns[i] = input.checked !== true; + viewPort.updateLayout(); + }; + inputs = qsa$(dialog, 'input[type="checkbox"][data-column]'); + for ( const input of inputs ) { + const i = parseInt(dom.attr(input, 'data-column'), 10); + input.checked = settings.columns[i] === false; + dom.on(input, 'change', onColumnChanged); + } + + modalDialog.show(); + }; + + const toggleOff = function(dialog) { + // Number inputs + let inputs = qsa$(dialog, 'input[type="number"]'); + settings.discard.maxAge = valueFromInput(inputs[0], 240); + settings.discard.maxLoadCount = valueFromInput(inputs[1], 25); + settings.discard.maxEntryCount = valueFromInput(inputs[2], 2000); + settings.linesPerEntry = valueFromInput(inputs[3], 4); + + // Column checkboxs + inputs = qsa$(dialog, 'input[type="checkbox"][data-column]'); + for ( const input of inputs ) { + const i = parseInt(dom.attr(input, 'data-column'), 10); + settings.columns[i] = input.checked !== true; + } + + vAPI.localStorage.setItem( + 'loggerSettings', + JSON.stringify(settings) + ); + + viewPort.updateLayout(); + }; + + dom.on('#loggerSettings', 'click', toggleOn); + + return settings; +})(); + +/******************************************************************************/ + +const grabView = function() { + if ( logger.ownerId === undefined ) { + logger.ownerId = Date.now(); + } + readLogBuffer(); +}; + +const releaseView = function() { + if ( logger.ownerId === undefined ) { return; } + vAPI.messaging.send('loggerUI', { + what: 'releaseView', + ownerId: logger.ownerId, + }); + logger.ownerId = undefined; +}; + +dom.on(window, 'pagehide', releaseView); +dom.on(window, 'pageshow', grabView); +// https://bugzilla.mozilla.org/show_bug.cgi?id=1398625 +dom.on(window, 'beforeunload', releaseView); + +/******************************************************************************/ + +dom.on('#pageSelector', 'change', pageSelectorChanged); +dom.on('#netInspector .vCompactToggler', 'click', toggleVCompactView); +dom.on('#pause', 'click', pauseNetInspector); + +dom.on('#netInspector #vwContent', 'copy', ev => { + const selection = document.getSelection(); + const text = selection.toString(); + if ( /\x1F|\u200B/.test(text) === false ) { return; } + ev.clipboardData.setData('text/plain', text.replace(/\x1F|\u200B/g, '\t')); + ev.preventDefault(); +}); + +// https://github.com/gorhill/uBlock/issues/507 +// Ensure tab selector is in sync with URL hash +pageSelectorFromURLHash(); +dom.on(window, 'hashchange', pageSelectorFromURLHash); + +// Start to watch the current window geometry 2 seconds after the document +// is loaded, to be sure no spurious geometry changes will be triggered due +// to the window geometry pontentially not settling fast enough. +if ( self.location.search.includes('popup=1') ) { + dom.on(window, 'load', ( ) => { + vAPI.defer.once(2000).then(( ) => { + popupLoggerBox = { + x: self.screenX, + y: self.screenY, + w: self.outerWidth, + h: self.outerHeight, + }; + }); + }, { once: true }); +} + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/logger.js b/android/app/src/main/assets/extensions/ublock_origin/js/logger.js new file mode 100644 index 00000000..aa6755d5 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/logger.js @@ -0,0 +1,88 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { broadcast, broadcastToAll } from './broadcast.js'; + +/******************************************************************************/ + +let buffer = null; +let lastReadTime = 0; +let writePtr = 0; + +// After 30 seconds without being read, the logger buffer will be considered +// unused, and thus disabled. +const logBufferObsoleteAfter = 30 * 1000; + +const janitorTimer = vAPI.defer.create(( ) => { + if ( buffer === null ) { return; } + if ( lastReadTime >= (Date.now() - logBufferObsoleteAfter) ) { + return janitorTimer.on(logBufferObsoleteAfter); + } + logger.enabled = false; + buffer = null; + writePtr = 0; + logger.ownerId = undefined; + broadcastToAll({ what: 'loggerDisabled' }); +}); + +const boxEntry = details => { + details.tstamp = Date.now() / 1000 | 0; + return JSON.stringify(details); +}; + +const pushOne = box => { + if ( writePtr !== 0 && box === buffer[writePtr-1] ) { return; } + if ( writePtr === buffer.length ) { + buffer.push(box); + } else { + buffer[writePtr] = box; + } + writePtr += 1; +}; + +const logger = { + enabled: false, + ownerId: undefined, + writeOne(details) { + if ( buffer === null ) { return; } + pushOne(boxEntry(details)); + }, + readAll(ownerId) { + this.ownerId = ownerId; + if ( buffer === null ) { + this.enabled = true; + buffer = []; + janitorTimer.on(logBufferObsoleteAfter); + broadcast({ what: 'loggerEnabled' }); + } + const out = buffer.slice(0, writePtr); + buffer.fill('', 0, writePtr); + writePtr = 0; + lastReadTime = Date.now(); + return out; + }, +}; + +/******************************************************************************/ + +export default logger; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/lz4.js b/android/app/src/main/assets/extensions/ublock_origin/js/lz4.js new file mode 100644 index 00000000..f89d7436 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/lz4.js @@ -0,0 +1,186 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2018-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/* global lz4BlockCodec */ + +import µb from './background.js'; + +/******************************************************************************* + + Experimental support for storage compression. + + For background information on the topic, see: + https://github.com/uBlockOrigin/uBlock-issues/issues/141#issuecomment-407737186 + +**/ + +/******************************************************************************/ + +let promisedInstance; +let textEncoder, textDecoder; +let ttlCount = 0; +let ttlDelay = 60000; + +const init = function() { + ttlDelay = µb.hiddenSettings.autoUpdateAssetFetchPeriod * 2 * 1000; + if ( promisedInstance === undefined ) { + let flavor; + if ( µb.hiddenSettings.disableWebAssembly === true ) { + flavor = 'js'; + } + promisedInstance = lz4BlockCodec.createInstance(flavor); + } + return promisedInstance; +}; + +// We can't shrink memory usage of lz4 codec instances, and in the +// current case memory usage can grow to a significant amount given +// that a single contiguous memory buffer is required to accommodate +// both input and output data. Thus a time-to-live implementation +// which will cause the wasm instance to be forgotten after enough +// time elapse without the instance being used. + +const destroy = function() { + //if ( lz4CodecInstance !== undefined ) { + // console.info( + // 'uBO: freeing lz4-block-codec instance (%s KB)', + // lz4CodecInstance.bytesInUse() >>> 10 + // ); + //} + promisedInstance = undefined; + textEncoder = textDecoder = undefined; + ttlCount = 0; +}; + +const ttlTimer = vAPI.defer.create(destroy); + +const ttlManage = function(count) { + ttlTimer.off(); + ttlCount += count; + if ( ttlCount > 0 ) { return; } + ttlTimer.on(ttlDelay); +}; + +const encodeValue = function(lz4CodecInstance, dataIn) { + if ( !lz4CodecInstance ) { return; } + //let t0 = window.performance.now(); + if ( textEncoder === undefined ) { + textEncoder = new TextEncoder(); + } + const inputArray = textEncoder.encode(dataIn); + const inputSize = inputArray.byteLength; + const outputArray = lz4CodecInstance.encodeBlock(inputArray, 8); + if ( outputArray instanceof Uint8Array === false ) { return; } + outputArray[0] = 0x18; + outputArray[1] = 0x4D; + outputArray[2] = 0x22; + outputArray[3] = 0x04; + outputArray[4] = (inputSize >>> 0) & 0xFF; + outputArray[5] = (inputSize >>> 8) & 0xFF; + outputArray[6] = (inputSize >>> 16) & 0xFF; + outputArray[7] = (inputSize >>> 24) & 0xFF; + //console.info( + // 'uBO: [%s] compressed %d KB => %d KB (%s%%) in %s ms', + // inputArray.byteLength >> 10, + // outputArray.byteLength >> 10, + // (outputArray.byteLength / inputArray.byteLength * 100).toFixed(0), + // (window.performance.now() - t0).toFixed(1) + //); + return outputArray; +}; + +const decodeValue = function(lz4CodecInstance, inputArray) { + if ( !lz4CodecInstance ) { return; } + //let t0 = window.performance.now(); + if ( + inputArray[0] !== 0x18 || inputArray[1] !== 0x4D || + inputArray[2] !== 0x22 || inputArray[3] !== 0x04 + ) { + console.error('decodeValue: invalid input array'); + return; + } + const outputSize = + (inputArray[4] << 0) | (inputArray[5] << 8) | + (inputArray[6] << 16) | (inputArray[7] << 24); + const outputArray = lz4CodecInstance.decodeBlock(inputArray, 8, outputSize); + if ( outputArray instanceof Uint8Array === false ) { return; } + if ( textDecoder === undefined ) { + textDecoder = new TextDecoder(); + } + const s = textDecoder.decode(outputArray); + //console.info( + // 'uBO: [%s] decompressed %d KB => %d KB (%s%%) in %s ms', + // inputArray.byteLength >>> 10, + // outputSize >>> 10, + // (inputArray.byteLength / outputSize * 100).toFixed(0), + // (window.performance.now() - t0).toFixed(1) + //); + return s; +}; + +const lz4Codec = { + // Arguments: + // dataIn: must be a string + // Returns: + // A Uint8Array, or the input string as is if compression is not + // possible. + encode: async function(dataIn, serialize = undefined) { + if ( typeof dataIn !== 'string' || dataIn.length < 4096 ) { + return dataIn; + } + ttlManage(1); + const lz4CodecInstance = await init(); + let dataOut = encodeValue(lz4CodecInstance, dataIn); + ttlManage(-1); + if ( serialize instanceof Function ) { + dataOut = await serialize(dataOut); + } + return dataOut || dataIn; + }, + // Arguments: + // dataIn: must be a Uint8Array + // Returns: + // A string, or the input argument as is if decompression is not + // possible. + decode: async function(dataIn, deserialize = undefined) { + if ( deserialize instanceof Function ) { + dataIn = await deserialize(dataIn); + } + if ( dataIn instanceof Uint8Array === false ) { + return dataIn; + } + ttlManage(1); + const lz4CodecInstance = await init(); + const dataOut = decodeValue(lz4CodecInstance, dataIn); + ttlManage(-1); + return dataOut || dataIn; + }, + relinquish: function() { + ttlDelay = 1; + ttlManage(0); + }, +}; + +/******************************************************************************/ + +export default lz4Codec; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/messaging.js b/android/app/src/main/assets/extensions/ublock_origin/js/messaging.js new file mode 100644 index 00000000..7735d77b --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/messaging.js @@ -0,0 +1,2159 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import * as s14e from './s14e-serializer.js'; +import * as sfp from './static-filtering-parser.js'; + +import { + domainFromHostname, + domainFromURI, + hostnameFromURI, + isNetworkURI, +} from './uri-utils.js'; + +import { + permanentFirewall, + permanentSwitches, + permanentURLFiltering, + sessionFirewall, + sessionSwitches, + sessionURLFiltering, +} from './filtering-engines.js'; + +import cacheStorage from './cachestorage.js'; +import cosmeticFilteringEngine from './cosmetic-filtering.js'; +import { denseBase64 } from './base64-custom.js'; +import { filteringBehaviorChanged } from './broadcast.js'; +import htmlFilteringEngine from './html-filtering.js'; +import { i18n$ } from './i18n.js'; +import io from './assets.js'; +import logger from './logger.js'; +import lz4Codec from './lz4.js'; +import publicSuffixList from '../lib/publicsuffixlist/publicsuffixlist.js'; +import punycode from '../lib/punycode.js'; +import { redirectEngine } from './redirect-engine.js'; +import scriptletFilteringEngine from './scriptlet-filtering.js'; +import { staticFilteringReverseLookup } from './reverselookup.js'; +import staticNetFilteringEngine from './static-net-filtering.js'; +import webRequest from './traffic.js'; +import µb from './background.js'; + +/******************************************************************************/ + +// https://github.com/uBlockOrigin/uBlock-issues/issues/710 +// Listeners have a name and a "privileged" status. +// The nameless default handler is always deemed "privileged". +// Messages from privileged ports must never relayed to listeners +// which are not privileged. + +/******************************************************************************/ +/******************************************************************************/ + +// Default handler +// privileged + +{ +// >>>>> start of local scope + +const clickToLoad = function(request, sender) { + const { tabId, frameId } = sender; + if ( tabId === undefined || frameId === undefined ) { return false; } + const pageStore = µb.pageStoreFromTabId(tabId); + if ( pageStore === null ) { return false; } + pageStore.clickToLoad(frameId, request.frameURL); + return true; +}; + +const getDomainNames = function(targets) { + return targets.map(target => { + if ( typeof target !== 'string' ) { return ''; } + return target.indexOf('/') !== -1 + ? domainFromURI(target) || '' + : domainFromHostname(target) || target; + }); +}; + +const onMessage = function(request, sender, callback) { + // Async + switch ( request.what ) { + case 'getAssetContent': + // https://github.com/chrisaljoudi/uBlock/issues/417 + io.get(request.url, { + dontCache: true, + needSourceURL: true, + }).then(result => { + result.trustedSource = µb.isTrustedList(result.assetKey); + callback(result); + }); + return; + + case 'listsFromNetFilter': + staticFilteringReverseLookup.fromNetFilter( + request.rawFilter + ).then(response => { + callback(response); + }); + return; + + case 'listsFromCosmeticFilter': + staticFilteringReverseLookup.fromExtendedFilter( + request + ).then(response => { + callback(response); + }); + return; + + case 'reloadAllFilters': + µb.loadFilterLists().then(( ) => { callback(); }); + return; + + case 'scriptlet': + vAPI.tabs.executeScript(request.tabId, { + file: `/js/scriptlets/${request.scriptlet}.js` + }).then(result => { + callback(result); + }); + return; + + default: + break; + } + + // Sync + let response; + + switch ( request.what ) { + case 'applyFilterListSelection': + response = µb.applyFilterListSelection(request); + break; + + case 'clickToLoad': + response = clickToLoad(request, sender); + break; + + case 'createUserFilter': + µb.createUserFilters(request); + break; + + case 'getAppData': + response = { + name: browser.runtime.getManifest().name, + version: vAPI.app.version, + canBenchmark: µb.hiddenSettings.benchmarkDatasetURL !== 'unset', + }; + break; + + case 'getDomainNames': + response = getDomainNames(request.targets); + break; + + case 'getTrustedScriptletTokens': + response = redirectEngine.getTrustedScriptletTokens(); + break; + + case 'getWhitelist': + response = { + whitelist: µb.arrayFromWhitelist(µb.netWhitelist), + whitelistDefault: µb.netWhitelistDefault, + reBadHostname: µb.reWhitelistBadHostname.source, + reHostnameExtractor: µb.reWhitelistHostnameExtractor.source + }; + break; + + case 'launchElementPicker': + // Launched from some auxiliary pages, clear context menu coords. + µb.epickerArgs.mouse = false; + µb.elementPickerExec(request.tabId, 0, request.targetURL, request.zap); + break; + + case 'loggerDisabled': + µb.clearInMemoryFilters(); + break; + + case 'gotoURL': + µb.openNewTab(request.details); + break; + + case 'readyToFilter': + response = µb.readyToFilter; + break; + + // https://github.com/uBlockOrigin/uBlock-issues/issues/1954 + // In case of document-blocked page, navigate to blocked URL instead + // of forcing a reload. + case 'reloadTab': { + if ( vAPI.isBehindTheSceneTabId(request.tabId) ) { break; } + const { tabId, bypassCache, url, select } = request; + vAPI.tabs.get(tabId).then(tab => { + if ( url && tab && url !== tab.url ) { + vAPI.tabs.replace(tabId, url); + } else { + vAPI.tabs.reload(tabId, bypassCache === true); + } + }); + if ( select && vAPI.tabs.select ) { + vAPI.tabs.select(tabId); + } + break; + } + case 'setWhitelist': + µb.netWhitelist = µb.whitelistFromString(request.whitelist); + µb.saveWhitelist(); + filteringBehaviorChanged(); + break; + + case 'toggleHostnameSwitch': + µb.toggleHostnameSwitch(request); + break; + + case 'uiAccentStylesheet': + µb.uiAccentStylesheet = request.stylesheet; + break; + + case 'uiStyles': + response = { + uiAccentCustom: µb.userSettings.uiAccentCustom, + uiAccentCustom0: µb.userSettings.uiAccentCustom0, + uiAccentStylesheet: µb.uiAccentStylesheet, + uiStyles: µb.hiddenSettings.uiStyles, + uiTheme: µb.userSettings.uiTheme, + }; + break; + + case 'userSettings': + response = µb.changeUserSettings(request.name, request.value); + if ( response instanceof Object ) { + if ( vAPI.net.canUncloakCnames !== true ) { + response.cnameUncloakEnabled = undefined; + } + response.canLeakLocalIPAddresses = + vAPI.browserSettings.canLeakLocalIPAddresses === true; + } + break; + + default: + return vAPI.messaging.UNHANDLED; + } + + callback(response); +}; + +vAPI.messaging.setup(onMessage); + +// <<<<< end of local scope +} + +/******************************************************************************/ +/******************************************************************************/ + +// Channel: +// popupPanel +// privileged + +{ +// >>>>> start of local scope + +const createCounts = ( ) => { + return { + blocked: { any: 0, frame: 0, script: 0 }, + allowed: { any: 0, frame: 0, script: 0 }, + }; +}; + +const getHostnameDict = function(hostnameDetailsMap, out) { + const hnDict = Object.create(null); + const cnMap = []; + + const createDictEntry = (domain, hostname, details) => { + if ( details.cname ) { + cnMap.push([ details.cname, hostname ]); + } + hnDict[hostname] = { domain, counts: details.counts }; + }; + + for ( const hnDetails of hostnameDetailsMap.values() ) { + const hostname = hnDetails.hostname; + if ( hnDict[hostname] !== undefined ) { continue; } + const domain = domainFromHostname(hostname) || hostname; + const dnDetails = + hostnameDetailsMap.get(domain) || { counts: createCounts() }; + if ( hnDict[domain] === undefined ) { + createDictEntry(domain, domain, dnDetails); + } + if ( hostname === domain ) { continue; } + createDictEntry(domain, hostname, hnDetails); + } + + out.hostnameDict = hnDict; + out.cnameMap = cnMap; +}; + +const firewallRuleTypes = [ + '*', + 'image', + '3p', + 'inline-script', + '1p-script', + '3p-script', + '3p-frame', +]; + +const getFirewallRules = function(src, out) { + const ruleset = out.firewallRules = {}; + const df = sessionFirewall; + + for ( const type of firewallRuleTypes ) { + const r = df.lookupRuleData('*', '*', type); + if ( r === undefined ) { continue; } + ruleset[`/ * ${type}`] = r; + } + if ( typeof src !== 'string' ) { return; } + + for ( const type of firewallRuleTypes ) { + const r = df.lookupRuleData(src, '*', type); + if ( r === undefined ) { continue; } + ruleset[`. * ${type}`] = r; + } + + const { hostnameDict } = out; + for ( const des in hostnameDict ) { + let r = df.lookupRuleData('*', des, '*'); + if ( r !== undefined ) { ruleset[`/ ${des} *`] = r; } + r = df.lookupRuleData(src, des, '*'); + if ( r !== undefined ) { ruleset[`. ${des} *`] = r; } + } +}; + +const popupDataFromTabId = function(tabId, tabTitle) { + const tabContext = µb.tabContextManager.mustLookup(tabId); + const rootHostname = tabContext.rootHostname; + const µbus = µb.userSettings; + const µbhs = µb.hiddenSettings; + const r = { + advancedUserEnabled: µbus.advancedUserEnabled, + appName: vAPI.app.name, + appVersion: vAPI.app.version, + colorBlindFriendly: µbus.colorBlindFriendly, + cosmeticFilteringSwitch: false, + firewallPaneMinimized: µbus.firewallPaneMinimized, + globalAllowedRequestCount: µb.requestStats.allowedCount, + globalBlockedRequestCount: µb.requestStats.blockedCount, + fontSize: µbhs.popupFontSize, + godMode: µbhs.filterAuthorMode, + netFilteringSwitch: false, + userFiltersAreEnabled: µb.userFiltersAreEnabled(), + rawURL: tabContext.rawURL, + pageURL: tabContext.normalURL, + pageHostname: rootHostname, + pageDomain: tabContext.rootDomain, + popupBlockedCount: 0, + popupPanelSections: µbus.popupPanelSections, + popupPanelDisabledSections: µbhs.popupPanelDisabledSections, + popupPanelLockedSections: µbhs.popupPanelLockedSections, + popupPanelHeightMode: µbhs.popupPanelHeightMode, + popupPanelOrientation: µbhs.popupPanelOrientation, + tabId, + tabTitle, + tooltipsDisabled: µbus.tooltipsDisabled, + hasUnprocessedRequest: vAPI.net && vAPI.net.hasUnprocessedRequest(tabId), + }; + + if ( µbhs.uiPopupConfig !== 'unset' ) { + r.uiPopupConfig = µbhs.uiPopupConfig; + } + + const pageStore = µb.pageStoreFromTabId(tabId); + if ( pageStore ) { + r.pageCounts = pageStore.counts; + r.netFilteringSwitch = pageStore.getNetFilteringSwitch(); + getHostnameDict(pageStore.getAllHostnameDetails(), r); + r.contentLastModified = pageStore.contentLastModified; + getFirewallRules(rootHostname, r); + r.canElementPicker = isNetworkURI(r.rawURL); + r.noPopups = sessionSwitches.evaluateZ( + 'no-popups', + rootHostname + ); + r.popupBlockedCount = pageStore.popupBlockedCount; + r.noCosmeticFiltering = sessionSwitches.evaluateZ( + 'no-cosmetic-filtering', + rootHostname + ); + r.noLargeMedia = sessionSwitches.evaluateZ( + 'no-large-media', + rootHostname + ); + r.largeMediaCount = pageStore.largeMediaCount; + r.noRemoteFonts = sessionSwitches.evaluateZ( + 'no-remote-fonts', + rootHostname + ); + r.remoteFontCount = pageStore.remoteFontCount; + r.noScripting = sessionSwitches.evaluateZ( + 'no-scripting', + rootHostname + ); + } else { + r.hostnameDict = {}; + getFirewallRules(undefined, r); + } + + r.matrixIsDirty = sessionFirewall.hasSameRules( + permanentFirewall, + rootHostname, + r.hostnameDict + ) === false; + if ( r.matrixIsDirty === false ) { + r.matrixIsDirty = sessionSwitches.hasSameRules( + permanentSwitches, + rootHostname + ) === false; + } + return r; +}; + +const popupDataFromRequest = async function(request) { + if ( request.tabId ) { + return popupDataFromTabId(request.tabId, ''); + } + + // Still no target tab id? Use currently selected tab. + const tab = await vAPI.tabs.getCurrent(); + let tabId = ''; + let tabTitle = ''; + if ( tab instanceof Object ) { + tabId = tab.id; + tabTitle = tab.title || ''; + } + return popupDataFromTabId(tabId, tabTitle); +}; + +const getElementCount = async function(tabId, what) { + const results = await vAPI.tabs.executeScript(tabId, { + allFrames: true, + file: `/js/scriptlets/dom-survey-${what}.js`, + runAt: 'document_end', + }); + + let total = 0; + for ( const count of results ) { + if ( typeof count !== 'number' ) { continue; } + if ( count === -1 ) { return -1; } + total += count; + } + + return total; +}; + +const launchReporter = async function(request) { + const pageStore = µb.pageStoreFromTabId(request.tabId); + if ( pageStore === null ) { return; } + if ( pageStore.hasUnprocessedRequest ) { + request.popupPanel.hasUnprocessedRequest = true; + } + + const entries = await io.getUpdateAges({ + filters: µb.selectedFilterLists.slice() + }); + const shouldUpdateLists = []; + for ( const entry of entries ) { + if ( entry.age < (2 * 60 * 60 * 1000) ) { continue; } + shouldUpdateLists.push(entry.assetKey); + } + + // https://github.com/gorhill/uBlock/commit/6efd8eb#commitcomment-107523558 + // Important: for whatever reason, not using `document_start` causes the + // Promise returned by `tabs.executeScript()` to resolve only when the + // associated tab is closed. + const cosmeticSurveyResults = await vAPI.tabs.executeScript(request.tabId, { + allFrames: true, + file: '/js/scriptlets/cosmetic-report.js', + matchAboutBlank: true, + runAt: 'document_start', + }); + + const filters = cosmeticSurveyResults.reduce((a, v) => { + if ( Array.isArray(v) ) { a.push(...v); } + return a; + }, []); + // Remove duplicate, truncate too long filters. + if ( filters.length !== 0 ) { + request.popupPanel.extended = Array.from( + new Set(filters.map(s => s.length <= 64 ? s : `${s.slice(0, 64)}…`)) + ); + } + + const supportURL = new URL(vAPI.getURL('support.html')); + supportURL.searchParams.set('pageURL', request.pageURL); + supportURL.searchParams.set('popupPanel', JSON.stringify(request.popupPanel)); + if ( shouldUpdateLists.length ) { + supportURL.searchParams.set('shouldUpdateLists', JSON.stringify(shouldUpdateLists)); + } + return supportURL.href; +}; + +const onMessage = function(request, sender, callback) { + // Async + switch ( request.what ) { + case 'getHiddenElementCount': + getElementCount(request.tabId, 'elements').then(count => { + callback(count); + }); + return; + + case 'getScriptCount': + getElementCount(request.tabId, 'scripts').then(count => { + callback(count); + }); + return; + + case 'getPopupData': + popupDataFromRequest(request).then(popupData => { + callback(popupData); + }); + return; + + default: + break; + } + + // Sync + let response; + + switch ( request.what ) { + case 'dismissUnprocessedRequest': + vAPI.net.removeUnprocessedRequest(request.tabId); + µb.updateToolbarIcon(request.tabId, 0b110); + break; + + case 'hasPopupContentChanged': { + const pageStore = µb.pageStoreFromTabId(request.tabId); + const lastModified = pageStore ? pageStore.contentLastModified : 0; + response = lastModified !== request.contentLastModified; + break; + } + + case 'launchReporter': { + launchReporter(request).then(url => { + if ( typeof url !== 'string' ) { return; } + µb.openNewTab({ url, select: true, index: -1 }); + }); + break; + } + + case 'revertFirewallRules': + // TODO: use Set() to message around sets of hostnames + sessionFirewall.copyRules( + permanentFirewall, + request.srcHostname, + Object.assign(Object.create(null), request.desHostnames) + ); + sessionSwitches.copyRules( + permanentSwitches, + request.srcHostname + ); + // https://github.com/gorhill/uBlock/issues/188 + cosmeticFilteringEngine.removeFromSelectorCache( + request.srcHostname, + 'net' + ); + µb.updateToolbarIcon(request.tabId, 0b100); + response = popupDataFromTabId(request.tabId); + break; + + case 'saveFirewallRules': + // TODO: use Set() to message around sets of hostnames + if ( + permanentFirewall.copyRules( + sessionFirewall, + request.srcHostname, + Object.assign(Object.create(null), request.desHostnames) + ) + ) { + µb.savePermanentFirewallRules(); + } + if ( + permanentSwitches.copyRules( + sessionSwitches, + request.srcHostname + ) + ) { + µb.saveHostnameSwitches(); + } + break; + + case 'toggleHostnameSwitch': + µb.toggleHostnameSwitch(request); + response = popupDataFromTabId(request.tabId); + break; + + case 'toggleFirewallRule': + µb.toggleFirewallRule(request); + response = popupDataFromTabId(request.tabId); + break; + + case 'toggleNetFiltering': { + const pageStore = µb.pageStoreFromTabId(request.tabId); + if ( pageStore ) { + pageStore.toggleNetFilteringSwitch( + request.url, + request.scope, + request.state + ); + µb.updateToolbarIcon(request.tabId, 0b111); + } + break; + } + default: + return vAPI.messaging.UNHANDLED; + } + + callback(response); +}; + +vAPI.messaging.listen({ + name: 'popupPanel', + listener: onMessage, + privileged: true, +}); + +// <<<<< end of local scope +} + +/******************************************************************************/ +/******************************************************************************/ + +// Channel: +// contentscript +// unprivileged + +{ +// >>>>> start of local scope + +const retrieveContentScriptParameters = async function(sender, request) { + if ( µb.readyToFilter !== true ) { return; } + const { tabId, frameId } = sender; + if ( tabId === undefined || frameId === undefined ) { return; } + + const pageStore = µb.pageStoreFromTabId(tabId); + if ( pageStore === null || pageStore.getNetFilteringSwitch() === false ) { + return; + } + + // A content script may not always be able to successfully look up the + // effective context, hence in such case we try again to look up here + // using cached information about embedded frames. + if ( frameId !== 0 && request.url.startsWith('about:') ) { + request.url = pageStore.getEffectiveFrameURL(sender); + } + + const noSpecificCosmeticFiltering = + pageStore.shouldApplySpecificCosmeticFilters(frameId) === false; + const noGenericCosmeticFiltering = + pageStore.shouldApplyGenericCosmeticFilters(frameId) === false; + + const response = { + collapseBlocked: µb.userSettings.collapseBlocked, + noGenericCosmeticFiltering, + noSpecificCosmeticFiltering, + }; + + request.tabId = tabId; + request.frameId = frameId; + request.hostname = hostnameFromURI(request.url); + request.domain = domainFromHostname(request.hostname); + request.ancestors = pageStore.getFrameAncestorDetails(frameId); + + const scf = response.specificCosmeticFilters = + cosmeticFilteringEngine.retrieveSpecificSelectors(request, response); + + // The procedural filterer's code is loaded only when needed and must be + // present before returning response to caller. + if ( + scf.proceduralFilters.length !== 0 || ( + logger.enabled && ( + scf.convertedProceduralFilters.length !== 0 || + scf.exceptedFilters.length !== 0 + ) + ) + ) { + await vAPI.tabs.executeScript(tabId, { + allFrames: false, + file: '/js/contentscript-extra.js', + frameId, + matchAboutBlank: true, + runAt: 'document_start', + }); + } + + // https://github.com/uBlockOrigin/uBlock-issues/issues/688#issuecomment-748179731 + // For non-network URIs, scriptlet injection is deferred to here. The + // effective URL is available here in `request.url`. + if ( logger.enabled ) { + const scriptletDetails = scriptletFilteringEngine.retrieve(request); + if ( scriptletDetails !== undefined ) { + scriptletFilteringEngine.toLogger(request, scriptletDetails); + } + } + if ( request.needScriptlets ) { + scriptletFilteringEngine.injectNow(request); + } + + // https://github.com/NanoMeow/QuickReports/issues/6#issuecomment-414516623 + // Inject as early as possible to make the cosmetic logger code less + // sensitive to the removal of DOM nodes which may match injected + // cosmetic filters. + if ( logger.enabled ) { + if ( + noSpecificCosmeticFiltering === false || + noGenericCosmeticFiltering === false + ) { + vAPI.tabs.executeScript(tabId, { + allFrames: false, + file: '/js/scriptlets/cosmetic-logger.js', + frameId, + matchAboutBlank: true, + runAt: 'document_start', + }); + } + } + + return response; +}; + +const onMessage = function(request, sender, callback) { + // Async + switch ( request.what ) { + case 'retrieveContentScriptParameters': + return retrieveContentScriptParameters( + sender, + request + ).then(response => { + callback(response); + }); + default: + break; + } + + const pageStore = µb.pageStoreFromTabId(sender.tabId); + + // Sync + let response; + + switch ( request.what ) { + case 'cosmeticFiltersInjected': + cosmeticFilteringEngine.addToSelectorCache(request); + break; + + case 'disableGenericCosmeticFilteringSurveyor': + cosmeticFilteringEngine.disableSurveyor(request); + break; + + case 'getCollapsibleBlockedRequests': + response = { + id: request.id, + hash: request.hash, + netSelectorCacheCountMax: + cosmeticFilteringEngine.netSelectorCacheCountMax, + }; + if ( + µb.userSettings.collapseBlocked && + pageStore && pageStore.getNetFilteringSwitch() + ) { + pageStore.getBlockedResources(request, response); + } + break; + + case 'maybeGoodPopup': + µb.maybeGoodPopup.tabId = sender.tabId; + µb.maybeGoodPopup.url = request.url; + break; + + case 'messageToLogger': + if ( logger.enabled !== true ) { break; } + logger.writeOne({ + tabId: sender.tabId, + realm: 'message', + type: request.type || 'info', + keywords: [ 'scriptlet' ], + text: request.text, + }); + break; + + case 'shouldRenderNoscriptTags': { + if ( pageStore === null ) { break; } + if ( µb.hiddenSettings.noScriptingCSP !== µb.hiddenSettingsDefault.noScriptingCSP ) { + break; + } + const fctxt = µb.filteringContext.fromTabId(sender.tabId); + if ( pageStore.filterScripting(fctxt, undefined) ) { + vAPI.tabs.executeScript(sender.tabId, { + file: '/js/scriptlets/noscript-spoof.js', + frameId: sender.frameId, + runAt: 'document_end', + }); + } + break; + } + case 'retrieveGenericCosmeticSelectors': + request.tabId = sender.tabId; + request.frameId = sender.frameId; + response = { + result: cosmeticFilteringEngine.retrieveGenericSelectors(request), + }; + break; + + default: + return vAPI.messaging.UNHANDLED; + } + + callback(response); +}; + +vAPI.messaging.listen({ + name: 'contentscript', + listener: onMessage, +}); + +// <<<<< end of local scope +} + +/******************************************************************************/ +/******************************************************************************/ + +// Channel: +// elementPicker +// unprivileged + +{ +// >>>>> start of local scope + +const onMessage = function(request, sender, callback) { + // Async + switch ( request.what ) { + // The procedural filterer must be present in case the user wants to + // type-in custom filters. + case 'elementPickerArguments': + return vAPI.tabs.executeScript(sender.tabId, { + allFrames: false, + file: '/js/contentscript-extra.js', + frameId: sender.frameId, + matchAboutBlank: true, + runAt: 'document_start', + }).then(( ) => { + callback({ + target: µb.epickerArgs.target, + mouse: µb.epickerArgs.mouse, + zap: µb.epickerArgs.zap, + eprom: µb.epickerArgs.eprom, + pickerURL: vAPI.getURL( + `/web_accessible_resources/epicker-ui.html?secret=${vAPI.warSecret.short()}` + ), + }); + µb.epickerArgs.target = ''; + }); + default: + break; + } + + // Sync + let response; + + switch ( request.what ) { + case 'elementPickerEprom': + µb.epickerArgs.eprom = request; + break; + + default: + return vAPI.messaging.UNHANDLED; + } + + callback(response); +}; + +vAPI.messaging.listen({ + name: 'elementPicker', + listener: onMessage, +}); + +// <<<<< end of local scope +} + +/******************************************************************************/ +/******************************************************************************/ + +// Channel: +// cloudWidget +// privileged + +{ +// >>>>> start of local scope + +const fromBase64 = function(encoded) { + if ( typeof encoded !== 'string' ) { + return Promise.resolve(encoded); + } + let u8array; + try { + u8array = denseBase64.decode(encoded); + } catch { + } + return Promise.resolve(u8array !== undefined ? u8array : encoded); +}; + +const onMessage = function(request, sender, callback) { + // Cloud storage support is optional. + if ( µb.cloudStorageSupported !== true ) { + callback(); + return; + } + + // Async + switch ( request.what ) { + case 'cloudGetOptions': + vAPI.cloud.getOptions(function(options) { + options.enabled = µb.userSettings.cloudStorageEnabled === true; + callback(options); + }); + return; + + case 'cloudSetOptions': + vAPI.cloud.setOptions(request.options, callback); + return; + + case 'cloudPull': + request.decode = encoded => { + if ( s14e.isSerialized(encoded) ) { + return s14e.deserializeAsync(encoded, { thread: true }); + } + // Legacy decoding: needs to be kept around for the foreseeable future. + return lz4Codec.decode(encoded, fromBase64); + }; + return vAPI.cloud.pull(request).then(result => { + callback(result); + }); + + case 'cloudPush': + request.encode = data => { + const options = { + compress: µb.hiddenSettings.cloudStorageCompression, + thread: true, + }; + return s14e.serializeAsync(data, options); + }; + return vAPI.cloud.push(request).then(result => { + callback(result); + }); + + case 'cloudUsed': + return vAPI.cloud.used(request.datakey).then(result => { + callback(result); + }); + + default: + break; + } + + // Sync + let response; + + switch ( request.what ) { + // For when cloud storage is disabled. + case 'cloudPull': + // fallthrough + case 'cloudPush': + break; + + default: + return vAPI.messaging.UNHANDLED; + } + + callback(response); +}; + +vAPI.messaging.listen({ + name: 'cloudWidget', + listener: onMessage, + privileged: true, +}); + +// <<<<< end of local scope +} + +/******************************************************************************/ +/******************************************************************************/ + +// Channel: +// dashboard +// privileged + +{ +// >>>>> start of local scope + +// Settings +const getLocalData = async function() { + const data = Object.assign({}, µb.restoreBackupSettings); + data.storageUsed = await µb.getBytesInUse(); + data.cloudStorageSupported = µb.cloudStorageSupported; + data.privacySettingsSupported = µb.privacySettingsSupported; + return data; +}; + +const backupUserData = async function() { + const userFilters = await µb.loadUserFilters(); + + const userData = { + timeStamp: Date.now(), + version: vAPI.app.version, + userSettings: + µb.getModifiedSettings(µb.userSettings, µb.userSettingsDefault), + selectedFilterLists: µb.selectedFilterLists, + hiddenSettings: + µb.getModifiedSettings(µb.hiddenSettings, µb.hiddenSettingsDefault), + whitelist: µb.arrayFromWhitelist(µb.netWhitelist), + dynamicFilteringString: permanentFirewall.toString(), + urlFilteringString: permanentURLFiltering.toString(), + hostnameSwitchesString: permanentSwitches.toString(), + userFilters: userFilters.content, + }; + + const filename = i18n$('aboutBackupFilename') + .replace('{{datetime}}', µb.dateNowToSensibleString()) + .replace(/ +/g, '_'); + µb.restoreBackupSettings.lastBackupFile = filename; + µb.restoreBackupSettings.lastBackupTime = Date.now(); + vAPI.storage.set(µb.restoreBackupSettings); + + const localData = await getLocalData(); + + return { localData, userData }; +}; + +const restoreUserData = async function(request) { + const userData = request.userData; + + // https://github.com/LiCybora/NanoDefenderFirefox/issues/196 + // Backup data could be from Chromium platform or from an older + // Firefox version. + if ( + vAPI.webextFlavor.soup.has('firefox') && + vAPI.app.intFromVersion(userData.version) <= 1031003011 + ) { + userData.hostnameSwitchesString += '\nno-csp-reports: * true'; + } + + // List of external lists is meant to be a string. + if ( Array.isArray(userData.externalLists) ) { + userData.externalLists = userData.externalLists.join('\n'); + } + + // https://github.com/chrisaljoudi/uBlock/issues/1102 + // Ensure all currently cached assets are flushed from storage AND memory. + io.rmrf(); + + // If we are going to restore all, might as well wipe out clean local + // storages + await Promise.all([ + cacheStorage.clear(), + vAPI.storage.clear(), + ]); + + // Restore block stats + µb.saveLocalSettings(); + + // Restore user data + vAPI.storage.set(userData.userSettings); + + // Restore advanced settings. + let hiddenSettings = userData.hiddenSettings; + if ( hiddenSettings instanceof Object === false ) { + hiddenSettings = µb.hiddenSettingsFromString( + userData.hiddenSettingsString || '' + ); + } + // Discard unknown setting or setting with default value. + for ( const key in hiddenSettings ) { + if ( + Object.hasOwn(µb.hiddenSettingsDefault, key) === false || + hiddenSettings[key] === µb.hiddenSettingsDefault[key] + ) { + delete hiddenSettings[key]; + } + } + + // Whitelist directives can be represented as an array or as a + // (eventually to be deprecated) string. + let whitelist = userData.whitelist; + if ( + Array.isArray(whitelist) === false && + typeof userData.netWhitelist === 'string' && + userData.netWhitelist !== '' + ) { + whitelist = userData.netWhitelist.split('\n'); + } + vAPI.storage.set({ + hiddenSettings, + netWhitelist: whitelist || [], + dynamicFilteringString: userData.dynamicFilteringString || '', + urlFilteringString: userData.urlFilteringString || '', + hostnameSwitchesString: userData.hostnameSwitchesString || '', + lastRestoreFile: request.file || '', + lastRestoreTime: Date.now(), + lastBackupFile: '', + lastBackupTime: 0 + }); + µb.saveUserFilters(userData.userFilters); + if ( Array.isArray(userData.selectedFilterLists) ) { + await µb.saveSelectedFilterLists(userData.selectedFilterLists); + } + + vAPI.app.restart(); +}; + +// Remove all stored data but keep global counts, people can become +// quite attached to numbers +const resetUserData = async function() { + await Promise.all([ + cacheStorage.clear(), + vAPI.storage.clear(), + ]); + + await µb.saveLocalSettings(); + + vAPI.app.restart(); +}; + +// Filter lists +const prepListEntries = function(entries) { + for ( const k in entries ) { + if ( Object.hasOwn(entries, k) === false ) { continue; } + const entry = entries[k]; + if ( typeof entry.supportURL === 'string' && entry.supportURL !== '' ) { + entry.supportName = hostnameFromURI(entry.supportURL); + } else if ( typeof entry.homeURL === 'string' && entry.homeURL !== '' ) { + const hn = hostnameFromURI(entry.homeURL); + entry.supportURL = `http://${hn}/`; + entry.supportName = domainFromHostname(hn); + } + } +}; + +const getLists = async function(callback) { + const r = { + autoUpdate: µb.userSettings.autoUpdate, + available: null, + cache: null, + cosmeticFilterCount: cosmeticFilteringEngine.getFilterCount(), + current: µb.availableFilterLists, + ignoreGenericCosmeticFilters: µb.userSettings.ignoreGenericCosmeticFilters, + isUpdating: io.isUpdating(), + netFilterCount: staticNetFilteringEngine.getFilterCount(), + parseCosmeticFilters: µb.userSettings.parseAllABPHideFilters, + suspendUntilListsAreLoaded: µb.userSettings.suspendUntilListsAreLoaded, + userFiltersPath: µb.userFiltersPath + }; + const [ lists, metadata ] = await Promise.all([ + µb.getAvailableLists(), + io.metadata(), + ]); + r.available = lists; + prepListEntries(r.available); + r.cache = metadata; + prepListEntries(r.cache); + callback(r); +}; + +// My filters + +// TODO: also return origin of embedded frames? +const getOriginHints = function() { + const out = new Set(); + for ( const tabId of µb.pageStores.keys() ) { + if ( tabId === -1 ) { continue; } + const tabContext = µb.tabContextManager.lookup(tabId); + if ( tabContext === null ) { continue; } + let { rootDomain, rootHostname } = tabContext; + if ( rootDomain.endsWith('-scheme') ) { continue; } + const isPunycode = rootHostname.includes('xn--'); + out.add(isPunycode ? punycode.toUnicode(rootDomain) : rootDomain); + if ( rootHostname === rootDomain ) { continue; } + out.add(isPunycode ? punycode.toUnicode(rootHostname) : rootHostname); + } + return Array.from(out); +}; + +// My rules +const getRules = function() { + return { + permanentRules: + permanentFirewall.toArray().concat( + permanentSwitches.toArray(), + permanentURLFiltering.toArray() + ), + sessionRules: + sessionFirewall.toArray().concat( + sessionSwitches.toArray(), + sessionURLFiltering.toArray() + ), + pslSelfie: publicSuffixList.toSelfie(), + }; +}; + +const modifyRuleset = function(details) { + let swRuleset, hnRuleset, urlRuleset; + if ( details.permanent ) { + swRuleset = permanentSwitches; + hnRuleset = permanentFirewall; + urlRuleset = permanentURLFiltering; + } else { + swRuleset = sessionSwitches; + hnRuleset = sessionFirewall; + urlRuleset = sessionURLFiltering; + } + let toRemove = new Set(details.toRemove.trim().split(/\s*[\n\r]+\s*/)); + for ( let rule of toRemove ) { + if ( rule === '' ) { continue; } + let parts = rule.split(/\s+/); + if ( hnRuleset.removeFromRuleParts(parts) === false ) { + if ( swRuleset.removeFromRuleParts(parts) === false ) { + urlRuleset.removeFromRuleParts(parts); + } + } + } + let toAdd = new Set(details.toAdd.trim().split(/\s*[\n\r]+\s*/)); + for ( let rule of toAdd ) { + if ( rule === '' ) { continue; } + let parts = rule.split(/\s+/); + if ( hnRuleset.addFromRuleParts(parts) === false ) { + if ( swRuleset.addFromRuleParts(parts) === false ) { + urlRuleset.addFromRuleParts(parts); + } + } + } + if ( details.permanent ) { + if ( swRuleset.changed ) { + µb.saveHostnameSwitches(); + swRuleset.changed = false; + } + if ( hnRuleset.changed ) { + µb.savePermanentFirewallRules(); + hnRuleset.changed = false; + } + if ( urlRuleset.changed ) { + µb.savePermanentURLFilteringRules(); + urlRuleset.changed = false; + } + } +}; + +// Support +const getSupportData = async function() { + const diffArrays = function(modified, original) { + const modifiedSet = new Set(modified); + const originalSet = new Set(original); + let added = []; + let removed = []; + for ( const item of modifiedSet ) { + if ( originalSet.has(item) ) { continue; } + added.push(item); + } + for ( const item of originalSet ) { + if ( modifiedSet.has(item) ) { continue; } + removed.push(item); + } + if ( added.length === 0 ) { + added = undefined; + } + if ( removed.length === 0 ) { + removed = undefined; + } + if ( added !== undefined || removed !== undefined ) { + return { added, removed }; + } + }; + + const modifiedUserSettings = µb.getModifiedSettings( + µb.userSettings, + µb.userSettingsDefault + ); + + const modifiedHiddenSettings = µb.getModifiedSettings( + µb.hiddenSettings, + µb.hiddenSettingsDefault + ); + + let filterset = []; + const userFilters = await µb.loadUserFilters(); + for ( const line of userFilters.content.split(/\s*\n+\s*/) ) { + if ( /^($|![^#])/.test(line) ) { continue; } + filterset.push(line); + } + + const now = Date.now(); + + const formatDelayFromNow = list => { + const time = list.writeTime; + if ( typeof time !== 'number' || time === 0 ) { return 'never'; } + if ( (time || 0) === 0 ) { return '?'; } + const delayInSec = (now - time) / 1000; + const days = (delayInSec / 86400) | 0; + const hours = (delayInSec % 86400) / 3600 | 0; + const minutes = (delayInSec % 3600) / 60 | 0; + const parts = []; + if ( days > 0 ) { parts.push(`${days}d`); } + if ( hours > 0 ) { parts.push(`${hours}h`); } + if ( minutes > 0 ) { parts.push(`${minutes}m`); } + if ( parts.length === 0 ) { parts.push('now'); } + const out = parts.join('.'); + if ( list.diffUpdated ) { return `${out} Δ`; } + return out; + }; + + const lists = µb.availableFilterLists; + let defaultListset = {}; + let addedListset = {}; + let removedListset = {}; + for ( const listKey in lists ) { + if ( Object.hasOwn(lists, listKey) === false ) { continue; } + const list = lists[listKey]; + if ( list.content !== 'filters' ) { continue; } + const used = µb.selectedFilterLists.includes(listKey); + const listDetails = []; + if ( used ) { + if ( typeof list.entryCount === 'number' ) { + listDetails.push(`${list.entryCount}-${list.entryCount-list.entryUsedCount}`); + } + listDetails.push(formatDelayFromNow(list)); + } + if ( list.isDefault || listKey === µb.userFiltersPath ) { + if ( used ) { + defaultListset[listKey] = listDetails.join(', '); + } else { + removedListset[listKey] = null; + } + } else if ( used ) { + addedListset[listKey] = listDetails.join(', '); + } + } + if ( Object.keys(defaultListset).length === 0 ) { + defaultListset = undefined; + } + if ( Object.keys(addedListset).length === 0 ) { + addedListset = undefined; + } else { + const added = Object.keys(addedListset); + const truncated = added.slice(12); + for ( const key of truncated ) { + delete addedListset[key]; + } + if ( truncated.length !== 0 ) { + addedListset[`[${truncated.length} lists not shown]`] = '[too many]'; + } + } + if ( Object.keys(removedListset).length === 0 ) { + removedListset = undefined; + } + + let browserFamily = (( ) => { + if ( vAPI.webextFlavor.soup.has('firefox') ) { return 'Firefox'; } + if ( vAPI.webextFlavor.soup.has('chromium') ) { return 'Chromium'; } + return 'Unknown'; + })(); + if ( vAPI.webextFlavor.soup.has('mobile') ) { + browserFamily += ' Mobile'; + } + + return { + [`${vAPI.app.name}`]: `${vAPI.app.version}`, + [`${browserFamily}`]: `${vAPI.webextFlavor.major}`, + 'filterset (summary)': { + network: staticNetFilteringEngine.getFilterCount(), + cosmetic: cosmeticFilteringEngine.getFilterCount(), + scriptlet: scriptletFilteringEngine.getFilterCount(), + html: htmlFilteringEngine.getFilterCount(), + }, + 'listset (total-discarded, last-updated)': { + removed: removedListset, + added: addedListset, + default: defaultListset, + }, + 'filterset (user)': filterset, + trustedset: diffArrays( + µb.arrayFromWhitelist(µb.netWhitelist), + µb.netWhitelistDefault + ), + switchRuleset: diffArrays( + sessionSwitches.toArray(), + µb.hostnameSwitchesDefault + ), + hostRuleset: diffArrays( + sessionFirewall.toArray(), + µb.dynamicFilteringDefault + ), + urlRuleset: diffArrays( + sessionURLFiltering.toArray(), + [] + ), + 'userSettings': modifiedUserSettings, + 'hiddenSettings': modifiedHiddenSettings, + supportStats: µb.supportStats, + }; +}; + +const onMessage = function(request, sender, callback) { + // Async + switch ( request.what ) { + case 'backupUserData': + return backupUserData().then(data => { + callback(data); + }); + + case 'getLists': + return µb.isReadyPromise.then(( ) => { + getLists(callback); + }); + + case 'getLocalData': + return getLocalData().then(localData => { + callback(localData); + }); + + case 'getSupportData': { + getSupportData().then(response => { + callback(response); + }); + return; + } + + case 'readUserFilters': + return µb.loadUserFilters().then(result => { + result.enabled = µb.selectedFilterLists.includes(µb.userFiltersPath); + result.trusted = µb.isTrustedList(µb.userFiltersPath); + callback(result); + }); + + case 'writeUserFilters': + if ( request.enabled ) { + µb.applyFilterListSelection({ + toSelect: [ µb.userFiltersPath ], + merge: true, + }); + } else { + µb.applyFilterListSelection({ + toRemove: [ µb.userFiltersPath ], + }); + } + µb.changeUserSettings('userFiltersTrusted', request.trusted || false); + return µb.saveUserFilters(request.content).then(result => { + callback(result); + }); + + default: + break; + } + + // Sync + let response; + + switch ( request.what ) { + case 'dashboardConfig': + response = { + noDashboard: µb.noDashboard, + }; + break; + + case 'getAutoCompleteDetails': + response = {}; + if ( (request.hintUpdateToken || 0) === 0 ) { + response.redirectResources = redirectEngine.getResourceDetails(); + response.preparseDirectiveEnv = vAPI.webextFlavor.env.slice(); + response.preparseDirectiveHints = sfp.utils.preparser.getHints(); + } + if ( request.hintUpdateToken !== µb.pageStoresToken ) { + response.originHints = getOriginHints(); + response.hintUpdateToken = µb.pageStoresToken; + } + break; + + case 'getRules': + response = getRules(); + break; + + case 'modifyRuleset': + // https://github.com/chrisaljoudi/uBlock/issues/772 + cosmeticFilteringEngine.removeFromSelectorCache('*'); + modifyRuleset(request); + response = getRules(); + break; + + case 'supportUpdateNow': { + const { assetKeys } = request; + if ( assetKeys.length === 0 ) { return; } + for ( const assetKey of assetKeys ) { + io.purge(assetKey); + } + µb.scheduleAssetUpdater({ now: true, fetchDelay: 100 }); + break; + } + + case 'listsUpdateNow': { + const { assetKeys, preferOrigin = false } = request; + if ( assetKeys.length === 0 ) { return; } + for ( const assetKey of assetKeys ) { + io.purge(assetKey); + } + µb.scheduleAssetUpdater({ now: true, fetchDelay: 100, auto: preferOrigin !== true }); + break; + } + + case 'readHiddenSettings': + response = { + 'default': µb.hiddenSettingsDefault, + 'admin': µb.hiddenSettingsAdmin, + 'current': µb.hiddenSettings, + }; + break; + + case 'restoreUserData': + restoreUserData(request); + break; + + case 'resetUserData': + resetUserData(); + break; + + case 'updateNow': + µb.scheduleAssetUpdater({ now: true, fetchDelay: 100, auto: true }); + break; + + case 'writeHiddenSettings': + µb.changeHiddenSettings(µb.hiddenSettingsFromString(request.content)); + break; + + default: + return vAPI.messaging.UNHANDLED; + } + + callback(response); +}; + +vAPI.messaging.listen({ + name: 'dashboard', + listener: onMessage, + privileged: true, +}); + +// <<<<< end of local scope +} + +/******************************************************************************/ +/******************************************************************************/ + +// Channel: +// loggerUI +// privileged + +{ +// >>>>> start of local scope + +const extensionOriginURL = vAPI.getURL(''); +const documentBlockedURL = vAPI.getURL('document-blocked.html'); + +const getLoggerData = async function(details, activeTabId, callback) { + const response = { + activeTabId, + colorBlind: µb.userSettings.colorBlindFriendly, + entries: logger.readAll(details.ownerId), + tabIdsToken: µb.pageStoresToken, + tooltips: µb.userSettings.tooltipsDisabled === false + }; + if ( µb.pageStoresToken !== details.tabIdsToken ) { + response.tabIds = []; + for ( const [ tabId, pageStore ] of µb.pageStores ) { + const { rawURL, title } = pageStore; + if ( rawURL.startsWith(extensionOriginURL) ) { + if ( rawURL.startsWith(documentBlockedURL) === false ) { continue; } + } + response.tabIds.push([ tabId, title ]); + } + } + if ( activeTabId ) { + const pageStore = µb.pageStoreFromTabId(activeTabId); + const rawURL = pageStore && pageStore.rawURL; + if ( + rawURL === null || + rawURL.startsWith(extensionOriginURL) && + rawURL.startsWith(documentBlockedURL) === false + ) { + response.activeTabId = undefined; + } + } + if ( details.popupLoggerBoxChanged && vAPI.windows instanceof Object ) { + const tabs = await vAPI.tabs.query({ + url: vAPI.getURL('/logger-ui.html?popup=1') + }); + if ( tabs.length !== 0 ) { + const win = await vAPI.windows.get(tabs[0].windowId); + if ( win === null ) { return; } + vAPI.localStorage.setItem('popupLoggerBox', JSON.stringify({ + left: win.left, + top: win.top, + width: win.width, + height: win.height, + })); + } + } + callback(response); +}; + +const getURLFilteringData = function(details) { + const colors = {}; + const response = { + dirty: false, + colors: colors + }; + const suf = sessionURLFiltering; + const puf = permanentURLFiltering; + const urls = details.urls; + const context = details.context; + const type = details.type; + for ( const url of urls ) { + const colorEntry = colors[url] = { r: 0, own: false }; + if ( suf.evaluateZ(context, url, type).r !== 0 ) { + colorEntry.r = suf.r; + colorEntry.own = suf.r !== 0 && + suf.context === context && + suf.url === url && + suf.type === type; + } + if ( response.dirty ) { continue; } + puf.evaluateZ(context, url, type); + const pown = ( + puf.r !== 0 && + puf.context === context && + puf.url === url && + puf.type === type + ); + response.dirty = colorEntry.own !== pown || colorEntry.r !== puf.r; + } + return response; +}; + +const onMessage = function(request, sender, callback) { + // Async + switch ( request.what ) { + case 'readAll': + if ( logger.ownerId !== undefined && logger.ownerId !== request.ownerId ) { + return callback({ unavailable: true }); + } + vAPI.tabs.getCurrent().then(tab => { + getLoggerData(request, tab && tab.id, callback); + }); + return; + + case 'toggleInMemoryFilter': { + const promise = µb.hasInMemoryFilter(request.filter) + ? µb.removeInMemoryFilter(request.filter) + : µb.addInMemoryFilter(request.filter); + promise.then(status => { callback(status); }); + return; + } + default: + break; + } + + // Sync + let response; + + switch ( request.what ) { + case 'hasInMemoryFilter': + response = µb.hasInMemoryFilter(request.filter); + break; + + case 'releaseView': + if ( request.ownerId !== logger.ownerId ) { break; } + logger.ownerId = undefined; + µb.clearInMemoryFilters(); + break; + + case 'saveURLFilteringRules': + response = permanentURLFiltering.copyRules( + sessionURLFiltering, + request.context, + request.urls, + request.type + ); + if ( response ) { + µb.savePermanentURLFilteringRules(); + } + break; + + case 'setURLFilteringRule': + µb.toggleURLFilteringRule(request); + break; + + case 'getURLFilteringData': + response = getURLFilteringData(request); + break; + + default: + return vAPI.messaging.UNHANDLED; + } + + callback(response); +}; + +vAPI.messaging.listen({ + name: 'loggerUI', + listener: onMessage, + privileged: true, +}); + +// <<<<< end of local scope +} + +/******************************************************************************/ +/******************************************************************************/ + +// Channel: +// domInspectorContent +// unprivileged + +{ +// >>>>> start of local scope + +const onMessage = (request, sender, callback) => { + // Async + switch ( request.what ) { + default: + break; + } + // Sync + let response; + switch ( request.what ) { + case 'getInspectorArgs': { + const bc = new globalThis.BroadcastChannel('contentInspectorChannel'); + bc.postMessage({ + what: 'contentInspectorChannel', + tabId: sender.tabId || 0, + frameId: sender.frameId || 0, + }); + response = { + inspectorURL: vAPI.getURL( + `/web_accessible_resources/dom-inspector.html?secret=${vAPI.warSecret.short()}` + ), + }; + break; + } + default: + return vAPI.messaging.UNHANDLED; + } + + callback(response); +}; + +vAPI.messaging.listen({ + name: 'domInspectorContent', + listener: onMessage, + privileged: false, +}); + +// <<<<< end of local scope +} + +/******************************************************************************/ +/******************************************************************************/ + +// Channel: +// documentBlocked +// privileged + +{ +// >>>>> start of local scope + +const onMessage = function(request, sender, callback) { + const tabId = sender.tabId || 0; + + // Async + switch ( request.what ) { + default: + break; + } + + // Sync + let response; + + switch ( request.what ) { + case 'closeThisTab': + vAPI.tabs.remove(tabId); + break; + + case 'temporarilyWhitelistDocument': + webRequest.strictBlockBypass(request.hostname); + break; + + default: + return vAPI.messaging.UNHANDLED; + } + + callback(response); +}; + +vAPI.messaging.listen({ + name: 'documentBlocked', + listener: onMessage, + privileged: true, +}); + +// <<<<< end of local scope +} + +/******************************************************************************/ +/******************************************************************************/ + +// Channel: +// devTools +// privileged + +{ +// >>>>> start of local scope + +const onMessage = function(request, sender, callback) { + // Async + switch ( request.what ) { + case 'purgeAllCaches': + µb.getBytesInUse().then(bytesInUseBefore => + io.remove(/./).then(( ) => + µb.getBytesInUse().then(bytesInUseAfter => { + callback([ + `Storage used before: ${µb.formatCount(bytesInUseBefore)}B`, + `Storage used after: ${µb.formatCount(bytesInUseAfter)}B`, + ].join('\n')); + }) + ) + ); + return; + + case 'snfeBenchmark': + import('/js/benchmarks.js').then(module => { + module.benchmarkStaticNetFiltering({ redirectEngine }).then(result => { + callback(result); + }); + }); + return; + + case 'cfeBenchmark': + import('/js/benchmarks.js').then(module => { + module.benchmarkCosmeticFiltering().then(result => { + callback(result); + }); + }); + return; + + case 'sfeBenchmark': + import('/js/benchmarks.js').then(module => { + module.benchmarkScriptletFiltering().then(result => { + callback(result); + }); + }); + return; + + case 'snfeToDNR': { + const listPromises = []; + const listNames = []; + for ( const assetKey of µb.selectedFilterLists ) { + listPromises.push( + io.get(assetKey, { dontCache: true }).then(details => { + listNames.push(assetKey); + return { + name: assetKey, + text: details.content, + trustedSource: assetKey.startsWith('ublock-') || + assetKey === µb.userFiltersPath && + µb.userSettings.userFiltersTrusted, + }; + }) + ); + } + const options = { + extensionPaths: redirectEngine.getResourceDetails().filter(e => + typeof e[1].extensionPath === 'string' && e[1].extensionPath !== '' + ).map(e => + [ e[0], e[1].extensionPath ] + ), + env: vAPI.webextFlavor.env, + }; + import('./static-dnr-filtering.js').then(module => { + const t0 = Date.now(); + module.dnrRulesetFromRawLists(listPromises, options).then(dnrdata => { + dnrdata.listNames = listNames; + dnrdata.runtime = Date.now() - t0; + callback(s14e.serialize(dnrdata)); + }) + }).catch(reason => { + callback(reason); + }); + return; + } + default: + break; + } + + // Sync + let response; + + switch ( request.what ) { + case 'snfeDump': + response = staticNetFilteringEngine.dump(); + break; + + case 'snfeQuery': + response = staticNetFilteringEngine.test( + Object.assign({ redirectEngine }, request.query) + ); + break; + + case 'cfeDump': + response = cosmeticFilteringEngine.dump(); + break; + + default: + return vAPI.messaging.UNHANDLED; + } + + callback(response); +}; + +vAPI.messaging.listen({ + name: 'devTools', + listener: onMessage, + privileged: true, +}); + +// <<<<< end of local scope +} + +/******************************************************************************/ +/******************************************************************************/ + +// Channel: +// scriptlets +// unprivileged + +{ +// >>>>> start of local scope + +const logCosmeticFilters = function(tabId, details) { + if ( logger.enabled === false ) { return; } + + const filter = { source: 'cosmetic', raw: '' }; + const fctxt = µb.filteringContext.duplicate(); + fctxt.fromTabId(tabId) + .setRealm('cosmetic') + .setType('dom') + .setURL(details.frameURL) + .setDocOriginFromURL(details.frameURL) + .setFilter(filter); + for ( const selector of details.matchedSelectors.sort() ) { + filter.raw = selector; + fctxt.toLogger(); + } +}; + +const logCSPViolations = function(pageStore, request) { + if ( logger.enabled === false || pageStore === null ) { + return false; + } + if ( request.violations.length === 0 ) { + return true; + } + + const fctxt = µb.filteringContext.duplicate(); + fctxt.fromTabId(pageStore.tabId) + .setRealm('network') + .setDocOriginFromURL(request.docURL) + .setURL(request.docURL); + + let cspData = pageStore.extraData.get('cspData'); + if ( cspData === undefined ) { + cspData = new Map(); + + const staticDirectives = + staticNetFilteringEngine.matchAndFetchModifiers(fctxt, 'csp'); + if ( staticDirectives !== undefined ) { + for ( const directive of staticDirectives ) { + if ( directive.result !== 1 ) { continue; } + cspData.set(directive.value, directive.logData()); + } + } + + fctxt.type = 'inline-script'; + fctxt.filter = undefined; + if ( pageStore.filterRequest(fctxt) === 1 ) { + cspData.set(µb.cspNoInlineScript, fctxt.filter); + } + + fctxt.type = 'script'; + fctxt.filter = undefined; + if ( pageStore.filterScripting(fctxt, true) === 1 ) { + cspData.set(µb.hiddenSettings.noScriptingCSP, fctxt.filter); + } + + fctxt.type = 'inline-font'; + fctxt.filter = undefined; + if ( pageStore.filterRequest(fctxt) === 1 ) { + cspData.set(µb.cspNoInlineFont, fctxt.filter); + } + + if ( cspData.size === 0 ) { return false; } + + pageStore.extraData.set('cspData', cspData); + } + + const typeMap = logCSPViolations.policyDirectiveToTypeMap; + for ( const json of request.violations ) { + const violation = JSON.parse(json); + let type = typeMap.get(violation.directive); + if ( type === undefined ) { continue; } + const logData = cspData.get(violation.policy); + if ( logData === undefined ) { continue; } + if ( /^[\w.+-]+:\/\//.test(violation.url) === false ) { + violation.url = request.docURL; + if ( type === 'script' ) { type = 'inline-script'; } + else if ( type === 'font' ) { type = 'inline-font'; } + } + // The resource was blocked as a result of applying a CSP directive + // elsewhere rather than to the resource itself. + logData.modifier = undefined; + fctxt.setURL(violation.url) + .setType(type) + .setFilter(logData) + .toLogger(); + } + + return true; +}; + +logCSPViolations.policyDirectiveToTypeMap = new Map([ + [ 'img-src', 'image' ], + [ 'connect-src', 'xmlhttprequest' ], + [ 'font-src', 'font' ], + [ 'frame-src', 'sub_frame' ], + [ 'media-src', 'media' ], + [ 'object-src', 'object' ], + [ 'script-src', 'script' ], + [ 'script-src-attr', 'script' ], + [ 'script-src-elem', 'script' ], + [ 'style-src', 'stylesheet' ], + [ 'style-src-attr', 'stylesheet' ], + [ 'style-src-elem', 'stylesheet' ], +]); + +const onMessage = function(request, sender, callback) { + const tabId = sender.tabId || 0; + const pageStore = µb.pageStoreFromTabId(tabId); + + // Async + switch ( request.what ) { + default: + break; + } + + // Sync + let response; + + switch ( request.what ) { + case 'inlinescriptFound': + if ( logger.enabled && pageStore !== null ) { + const fctxt = µb.filteringContext.duplicate(); + fctxt.fromTabId(tabId) + .setType('inline-script') + .setURL(request.docURL) + .setDocOriginFromURL(request.docURL); + if ( pageStore.filterRequest(fctxt) === 0 ) { + fctxt.setRealm('network').toLogger(); + } + } + break; + + case 'logCosmeticFilteringData': + logCosmeticFilters(tabId, request); + break; + + case 'securityPolicyViolation': + response = logCSPViolations(pageStore, request); + break; + + case 'temporarilyAllowLargeMediaElement': + if ( pageStore !== null ) { + pageStore.allowLargeMediaElementsUntil = Date.now() + 5000; + } + break; + + case 'subscribeTo': { + // https://github.com/uBlockOrigin/uBlock-issues/issues/1797 + if ( /^(file|https?):\/\//.test(request.location) === false ) { break; } + const url = encodeURIComponent(request.location); + const title = encodeURIComponent(request.title); + const hash = µb.selectedFilterLists.indexOf(request.location) !== -1 + ? '#subscribed' + : ''; + vAPI.tabs.open({ + url: `/asset-viewer.html?url=${url}&title=${title}&subscribe=1${hash}`, + select: true, + }); + break; + } + case 'updateLists': { + const listkeys = request.listkeys.split(',').filter(s => s !== ''); + if ( listkeys.length === 0 ) { return; } + if ( listkeys.includes('all') ) { + io.purge(/./, 'public_suffix_list.dat'); + } else { + for ( const listkey of listkeys ) { + io.purge(listkey); + } + } + µb.openNewTab({ + url: 'dashboard.html#3p-filters.html', + select: true, + }); + µb.scheduleAssetUpdater({ now: true, fetchDelay: 100, auto: request.auto }); + break; + } + default: + return vAPI.messaging.UNHANDLED; + } + + callback(response); +}; + +vAPI.messaging.listen({ + name: 'scriptlets', + listener: onMessage, +}); + +// <<<<< end of local scope +} + + +/******************************************************************************/ +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/mrucache.js b/android/app/src/main/assets/extensions/ublock_origin/js/mrucache.js new file mode 100644 index 00000000..266783ad --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/mrucache.js @@ -0,0 +1,56 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +export class MRUCache { + constructor(maxSize) { + this.maxSize = maxSize; + this.array = []; + this.map = new Map(); + this.resetTime = Date.now(); + } + add(key, value) { + const found = this.map.has(key); + this.map.set(key, value); + if ( found ) { return; } + if ( this.array.length === this.maxSize ) { + this.map.delete(this.array.pop()); + } + this.array.unshift(key); + } + remove(key) { + if ( this.map.delete(key) === false ) { return; } + this.array.splice(this.array.indexOf(key), 1); + } + lookup(key) { + const value = this.map.get(key); + if ( value === undefined ) { return; } + if ( this.array[0] === key ) { return value; } + const i = this.array.indexOf(key); + this.array.copyWithin(1, 0, i); + this.array[0] = key; + return value; + } + reset() { + this.array = []; + this.map.clear(); + this.resetTime = Date.now(); + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/pagestore.js b/android/app/src/main/assets/extensions/ublock_origin/js/pagestore.js new file mode 100644 index 00000000..201a9ac4 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/pagestore.js @@ -0,0 +1,1174 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +import { + domainFromHostname, + hostnameFromURI, + isNetworkURI, +} from './uri-utils.js'; + +import { + sessionFirewall, + sessionSwitches, + sessionURLFiltering, +} from './filtering-engines.js'; + +import contextMenu from './contextmenu.js'; +import logger from './logger.js'; +import { orphanizeString } from './text-utils.js'; +import { redirectEngine } from './redirect-engine.js'; +import staticNetFilteringEngine from './static-net-filtering.js'; +import webext from './webext.js'; +import µb from './background.js'; + +/******************************************************************************* + +A PageRequestStore object is used to store net requests in two ways: + +To record distinct net requests +To create a log of net requests + +**/ + +/******************************************************************************/ + +const NetFilteringResultCache = class { + shelfLife = 15000; + extensionOriginURL = vAPI.getURL('/'); + + constructor() { + this.pruneTimer = vAPI.defer.create(( ) => { + this.prune(); + }); + this.init(); + } + + init() { + this.blocked = new Map(); + this.results = new Map(); + this.hash = 0; + return this; + } + + // https://github.com/gorhill/uBlock/issues/3619 + // Don't collapse redirected resources + rememberResult(fctxt, result) { + if ( fctxt.tabId <= 0 ) { return; } + if ( this.results.size === 0 ) { + this.pruneAsync(); + } + const key = `${fctxt.getDocHostname()} ${fctxt.type} ${fctxt.url}`; + this.results.set(key, { + result, + redirectURL: fctxt.redirectURL, + logData: fctxt.filter, + tstamp: Date.now() + }); + if ( result !== 1 || fctxt.redirectURL !== undefined ) { return; } + const now = Date.now(); + this.blocked.set(key, now); + this.hash = now; + } + + rememberBlock(fctxt) { + if ( fctxt.tabId <= 0 ) { return; } + if ( this.blocked.size === 0 ) { + this.pruneAsync(); + } + if ( fctxt.redirectURL !== undefined ) { return; } + const now = Date.now(); + this.blocked.set( + `${fctxt.getDocHostname()} ${fctxt.type} ${fctxt.url}`, + now + ); + this.hash = now; + } + + forgetResult(docHostname, type, url) { + const key = `${docHostname} ${type} ${url}`; + this.results.delete(key); + this.blocked.delete(key); + } + + empty() { + this.blocked.clear(); + this.results.clear(); + this.hash = 0; + this.pruneTimer.off(); + } + + prune() { + const obsolete = Date.now() - this.shelfLife; + for ( const entry of this.blocked ) { + if ( entry[1] <= obsolete ) { + this.results.delete(entry[0]); + this.blocked.delete(entry[0]); + } + } + for ( const entry of this.results ) { + if ( entry[1].tstamp <= obsolete ) { + this.results.delete(entry[0]); + } + } + if ( this.blocked.size !== 0 || this.results.size !== 0 ) { + this.pruneAsync(); + } + } + + pruneAsync() { + this.pruneTimer.on(this.shelfLife); + } + + lookupResult(fctxt) { + const entry = this.results.get( + fctxt.getDocHostname() + ' ' + + fctxt.type + ' ' + + fctxt.url + ); + if ( entry === undefined ) { return; } + // We need to use a new WAR secret if one is present since WAR secrets + // can only be used once. + if ( + entry.redirectURL !== undefined && + entry.redirectURL.startsWith(this.extensionOriginURL) + ) { + const redirectURL = new URL(entry.redirectURL); + redirectURL.searchParams.set('secret', vAPI.warSecret.short()); + entry.redirectURL = redirectURL.href; + } + return entry; + } + + lookupAllBlocked(hostname) { + const result = []; + for ( const entry of this.blocked ) { + const pos = entry[0].indexOf(' '); + if ( entry[0].slice(0, pos) === hostname ) { + result[result.length] = entry[0].slice(pos + 1); + } + } + return result; + } + + static factory() { + return new NetFilteringResultCache(); + } +}; + +/******************************************************************************/ + +// Frame stores are used solely to associate a URL with a frame id. + +const FrameStore = class { + constructor(frameURL, parentId) { + this.init(frameURL, parentId); + } + + init(frameURL, parentId) { + this.t0 = Date.now(); + this.parentId = parentId; + this.exceptCname = undefined; + this.clickToLoad = false; + this.rawURL = frameURL; + if ( frameURL !== undefined ) { + this.hostname = hostnameFromURI(frameURL); + this.domain = domainFromHostname(this.hostname) || this.hostname; + } + // Evaluated on-demand + // - 0b01: specific cosmetic filtering + // - 0b10: generic cosmetic filtering + this._cosmeticFilteringBits = undefined; + return this; + } + + dispose() { + this.rawURL = this.hostname = this.domain = ''; + if ( FrameStore.junkyard.length < FrameStore.junkyardMax ) { + FrameStore.junkyard.push(this); + } + return null; + } + + updateURL(url) { + if ( typeof url !== 'string' ) { return; } + this.rawURL = url; + this.hostname = hostnameFromURI(url); + this.domain = domainFromHostname(this.hostname) || this.hostname; + this._cosmeticFilteringBits = undefined; + } + + getCosmeticFilteringBits(tabId) { + if ( this._cosmeticFilteringBits !== undefined ) { + return this._cosmeticFilteringBits; + } + this._cosmeticFilteringBits = 0b11; + const fctxt = µb.filteringContext + .duplicate() + .fromTabId(tabId) + .setURL(this.rawURL) + .setDocOriginFromURL(this.rawURL) + .setMethod('') + .setRealm('network') + { + fctxt.setType('specifichide'); + const result = staticNetFilteringEngine.matchRequest(fctxt, 0b11); + if ( result !== 0 && logger.enabled ) { + fctxt.setFilter(staticNetFilteringEngine.toLogData()) + .toLogger(); + } + if ( result === 2 ) { + this._cosmeticFilteringBits &= ~0b01; + } + } + { + fctxt.setType('generichide'); + const result = staticNetFilteringEngine.matchRequest(fctxt, 0b11); + if ( result !== 0 && logger.enabled ) { + fctxt.setFilter(staticNetFilteringEngine.toLogData()) + .toLogger(); + } + if ( result === 2 ) { + this._cosmeticFilteringBits &= ~0b10; + } + } + return this._cosmeticFilteringBits; + } + + shouldApplySpecificCosmeticFilters(tabId) { + return (this.getCosmeticFilteringBits(tabId) & 0b01) !== 0; + } + + shouldApplyGenericCosmeticFilters(tabId) { + return (this.getCosmeticFilteringBits(tabId) & 0b10) !== 0; + } + + static factory(frameURL, parentId = -1) { + const FS = FrameStore; + if ( FS.junkyard.length !== 0 ) { + return FS.junkyard.pop().init(frameURL, parentId); + } + return new FS(frameURL, parentId); + } + static junkyard = []; + static junkyardMax = 50; +}; + +/******************************************************************************/ + +const CountDetails = class { + constructor() { + this.allowed = { any: 0, frame: 0, script: 0 }; + this.blocked = { any: 0, frame: 0, script: 0 }; + } + reset() { + const { allowed, blocked } = this; + blocked.any = blocked.frame = blocked.script = + allowed.any = allowed.frame = allowed.script = 0; + } + inc(blocked, type = undefined) { + const stat = blocked ? this.blocked : this.allowed; + if ( type !== undefined ) { stat[type] += 1; } + stat.any += 1; + } +}; + +const HostnameDetails = class { + constructor(hostname) { + this.counts = new CountDetails(); + this.init(hostname); + } + init(hostname) { + this.hostname = hostname; + this.cname = vAPI.net.canonicalNameFromHostname(hostname); + this.counts.reset(); + return this; + } + dispose() { + const HD = HostnameDetails; + if ( HD.junkyard.length >= HD.junkyardMax ) { return; } + HD.junkyard.push(this); + } + static factory(hostname) { + const HD = HostnameDetails; + if ( HD.junkyard.length !== 0 ) { + return HD.junkyard.pop().init(hostname); + } + return new HD(hostname); + } + static junkyard = []; + static junkyardMax = 100; +}; + +const HostnameDetailsMap = class extends Map { + reset() { + this.clear(); + } + dispose() { + for ( const item of this.values() ) { + item.dispose(); + } + this.reset(); + } +}; + +/******************************************************************************/ + +const PageStore = class { + constructor(tabId, details) { + this.extraData = new Map(); + this.journal = []; + this.journalLastCommitted = this.journalLastUncommitted = -1; + this.journalLastUncommittedOrigin = undefined; + this.netFilteringCache = NetFilteringResultCache.factory(); + this.hostnameDetailsMap = new HostnameDetailsMap(); + this.counts = new CountDetails(); + this.journalTimer = vAPI.defer.create(( ) => { + this.journalProcess(); + }); + this.largeMediaTimer = vAPI.defer.create(( ) => { + this.injectLargeMediaElementScriptlet(); + }); + this.init(tabId, details); + } + + static factory(tabId, details) { + let entry = PageStore.junkyard.pop(); + if ( entry === undefined ) { + entry = new PageStore(tabId, details); + } else { + entry.init(tabId, details); + } + return entry; + } + + // https://github.com/gorhill/uBlock/issues/3201 + // The context is used to determine whether we report behavior change + // to the logger. + + init(tabId, details) { + const tabContext = µb.tabContextManager.mustLookup(tabId); + this.tabId = tabId; + + // If we are navigating from-to same site, remember whether large + // media elements were temporarily allowed. + const now = Date.now(); + if ( typeof this.allowLargeMediaElementsUntil !== 'number' ) { + this.allowLargeMediaElementsUntil = now; + } else if ( tabContext.rootHostname !== this.tabHostname ) { + if ( this.tabHostname.endsWith('about-scheme') === false ) { + this.allowLargeMediaElementsUntil = now; + } + } + + this.tabHostname = tabContext.rootHostname; + this.rawURL = tabContext.rawURL; + this.hostnameDetailsMap.reset(); + this.contentLastModified = 0; + this.logData = undefined; + this.counts.reset(); + this.remoteFontCount = 0; + this.popupBlockedCount = 0; + this.largeMediaCount = 0; + this.allowLargeMediaElementsRegex = undefined; + this.extraData.clear(); + + this.frameAddCount = 0; + this.frames = new Map(); + this.setFrameURL({ url: tabContext.rawURL }); + + if ( this.titleFromDetails(details) === false ) { + this.title = tabContext.rawURL; + } + + // Evaluated on-demand + this._noCosmeticFiltering = undefined; + + // Remember if the webpage was potentially improperly filtered, for + // reporting purpose. + this.hasUnprocessedRequest = vAPI.net.hasUnprocessedRequest(tabId); + + return this; + } + + reuse(context, details) { + // When force refreshing a page, the page store data needs to be reset. + + // If the hostname changes, we can't merely just update the context. + const tabContext = µb.tabContextManager.mustLookup(this.tabId); + if ( tabContext.rootHostname !== this.tabHostname ) { + context = ''; + } + + // If URL changes without a page reload (more and more common), then + // we need to keep all that we collected for reuse. In particular, + // not doing so was causing a problem in `videos.foxnews.com`: + // clicking a video thumbnail would not work, because the frame + // hierarchy structure was flushed from memory, while not really being + // flushed on the page. + if ( context === 'tabUpdated' ) { + // As part of https://github.com/chrisaljoudi/uBlock/issues/405 + // URL changed, force a re-evaluation of filtering switch + this.rawURL = tabContext.rawURL; + this.setFrameURL({ url: this.rawURL }); + this.titleFromDetails(details); + return this; + } + + // A new page is completely reloaded from scratch, reset all. + this.largeMediaTimer.off(); + this.disposeFrameStores(); + this.init(this.tabId, details); + return this; + } + + dispose() { + this.tabHostname = ''; + this.title = ''; + this.rawURL = ''; + this.hostnameDetailsMap.dispose(); + this.netFilteringCache.empty(); + this.allowLargeMediaElementsUntil = Date.now(); + this.allowLargeMediaElementsRegex = undefined; + this.largeMediaTimer.off(); + this.disposeFrameStores(); + this.journalTimer.off(); + this.journal = []; + this.journalLastUncommittedOrigin = undefined; + this.journalLastCommitted = this.journalLastUncommitted = -1; + if ( PageStore.junkyard.length < PageStore.junkyardMax ) { + PageStore.junkyard.push(this); + } + return null; + } + + titleFromDetails(details) { + if ( + details instanceof Object === false || + details.title === undefined + ) { + return false; + } + this.title = orphanizeString(details.title.slice(0, 128)); + return true; + } + + disposeFrameStores() { + for ( const frameStore of this.frames.values() ) { + frameStore.dispose(); + } + this.frames.clear(); + } + + getFrameStore(frameId) { + return this.frames.get(frameId) || null; + } + + // https://github.com/uBlockOrigin/uBlock-issues/issues/1858 + // Mind that setFrameURL() can be called from navigation event handlers. + setFrameURL(details) { + let { frameId, url, parentFrameId } = details; + if ( frameId === undefined ) { frameId = 0; } + if ( parentFrameId === undefined ) { parentFrameId = -1; } + let frameStore = this.frames.get(frameId); + if ( frameStore !== undefined ) { + if ( url === frameStore.rawURL ) { + frameStore.parentId = parentFrameId; + } else { + frameStore.init(url, parentFrameId); + } + return frameStore; + } + frameStore = FrameStore.factory(url, parentFrameId); + this.frames.set(frameId, frameStore); + this.frameAddCount += 1; + if ( url.startsWith('about:') ) { + frameStore.updateURL(this.getEffectiveFrameURL({ frameId })); + } + if ( (this.frameAddCount & 0b111111) === 0 ) { + this.pruneFrames(); + } + return frameStore; + } + + getEffectiveFrameURL(sender) { + let { frameId } = sender; + for (;;) { + const frameStore = this.getFrameStore(frameId); + if ( frameStore === null ) { break; } + if ( frameStore.rawURL.startsWith('about:') === false ) { + return frameStore.rawURL; + } + frameId = frameStore.parentId; + if ( frameId === -1 ) { break; } + } + return sender.frameURL; + } + + getFrameAncestorDetails(frameId) { + if ( frameId === 0 ) { return []; } + const out = []; + for (;;) { + const frameStore = this.getFrameStore(frameId); + if ( frameStore === null ) { break; } + const { domain, hostname } = frameStore; + if ( hostname !== undefined ) { + out.push({ domain, hostname }); + } + frameId = frameStore.parentId; + } + return out.slice(1); + } + + // There is no event to tell us a specific subframe has been removed from + // the main document. The code below will remove subframes which are no + // longer present in the root document. Removing obsolete subframes is + // not a critical task, so this is executed just once on a while, to avoid + // bloated dictionary of subframes. + // A TTL is used to avoid race conditions when new iframes are added + // through the webRequest API but still not yet visible through the + // webNavigation API. + async pruneFrames() { + let entries; + try { + entries = await webext.webNavigation.getAllFrames({ + tabId: this.tabId + }); + } catch { + } + if ( Array.isArray(entries) === false ) { return; } + const toKeep = new Set(); + for ( const { frameId } of entries ) { + toKeep.add(frameId); + } + const obsolete = Date.now() - 60000; + for ( const [ frameId, { t0 } ] of this.frames ) { + if ( toKeep.has(frameId) || t0 >= obsolete ) { continue; } + this.frames.delete(frameId); + } + } + + getNetFilteringSwitch() { + return µb.tabContextManager + .mustLookup(this.tabId) + .getNetFilteringSwitch(); + } + + toggleNetFilteringSwitch(url, scope, state) { + µb.toggleNetFilteringSwitch(url, scope, state); + this.netFilteringCache.empty(); + } + + shouldApplyCosmeticFilters(frameId = 0) { + if ( this._noCosmeticFiltering === undefined ) { + this._noCosmeticFiltering = this.getNetFilteringSwitch() === false; + if ( this._noCosmeticFiltering === false ) { + this._noCosmeticFiltering = sessionSwitches.evaluateZ( + 'no-cosmetic-filtering', + this.tabHostname + ) === true; + if ( this._noCosmeticFiltering && logger.enabled ) { + µb.filteringContext + .duplicate() + .fromTabId(this.tabId) + .setURL(this.rawURL) + .setRealm('cosmetic') + .setType('dom') + .setFilter(sessionSwitches.toLogData()) + .toLogger(); + } + } + } + if ( this._noCosmeticFiltering ) { return false; } + if ( frameId === -1 ) { return true; } + // Cosmetic filtering can be effectively disabled when both specific + // and generic cosmetic filters are disabled. + return this.shouldApplySpecificCosmeticFilters(frameId) || + this.shouldApplyGenericCosmeticFilters(frameId); + } + + shouldApplySpecificCosmeticFilters(frameId) { + if ( this.shouldApplyCosmeticFilters(-1) === false ) { return false; } + const frameStore = this.getFrameStore(frameId); + if ( frameStore === null ) { return false; } + return frameStore.shouldApplySpecificCosmeticFilters(this.tabId); + } + + shouldApplyGenericCosmeticFilters(frameId) { + if ( this.shouldApplyCosmeticFilters(-1) === false ) { return false; } + const frameStore = this.getFrameStore(frameId); + if ( frameStore === null ) { return false; } + return frameStore.shouldApplyGenericCosmeticFilters(this.tabId); + } + + // https://github.com/gorhill/uBlock/issues/2105 + // Be sure to always include the current page's hostname -- it might not + // be present when the page itself is pulled from the browser's + // short-term memory cache. + getAllHostnameDetails() { + if ( + this.hostnameDetailsMap.has(this.tabHostname) === false && + isNetworkURI(this.rawURL) + ) { + this.hostnameDetailsMap.set( + this.tabHostname, + HostnameDetails.factory(this.tabHostname) + ); + } + return this.hostnameDetailsMap; + } + + injectLargeMediaElementScriptlet() { + vAPI.tabs.executeScript(this.tabId, { + file: '/js/scriptlets/load-large-media-interactive.js', + allFrames: true, + runAt: 'document_idle', + }); + contextMenu.update(this.tabId); + } + + temporarilyAllowLargeMediaElements(state) { + this.largeMediaCount = 0; + contextMenu.update(this.tabId); + if ( state ) { + this.allowLargeMediaElementsUntil = 0; + this.allowLargeMediaElementsRegex = undefined; + } else { + this.allowLargeMediaElementsUntil = Date.now(); + } + vAPI.tabs.executeScript(this.tabId, { + file: '/js/scriptlets/load-large-media-all.js', + allFrames: true, + }); + } + + // https://github.com/gorhill/uBlock/issues/2053 + // There is no way around using journaling to ensure we deal properly with + // potentially out of order navigation events vs. network request events. + journalAddRequest(fctxt, result) { + const hostname = fctxt.getHostname(); + if ( hostname === '' ) { return; } + this.journal.push(hostname, result, fctxt.itype); + this.journalTimer.on(µb.hiddenSettings.requestJournalProcessPeriod); + } + + journalAddRootFrame(type, url) { + if ( type === 'committed' ) { + this.journalLastCommitted = this.journal.length; + if ( + this.journalLastUncommitted !== -1 && + this.journalLastUncommitted < this.journalLastCommitted && + this.journalLastUncommittedOrigin === hostnameFromURI(url) + ) { + this.journalLastCommitted = this.journalLastUncommitted; + } + } else if ( type === 'uncommitted' ) { + const newOrigin = hostnameFromURI(url); + if ( + this.journalLastUncommitted === -1 || + this.journalLastUncommittedOrigin !== newOrigin + ) { + this.journalLastUncommitted = this.journal.length; + this.journalLastUncommittedOrigin = newOrigin; + } + } + this.journalTimer.offon(µb.hiddenSettings.requestJournalProcessPeriod); + } + + journalProcess() { + this.journalTimer.off(); + + const journal = this.journal; + const pivot = Math.max(0, this.journalLastCommitted); + const now = Date.now(); + const { SCRIPT, SUB_FRAME, OBJECT } = µb.FilteringContext; + let aggregateAllowed = 0; + let aggregateBlocked = 0; + + // Everything after pivot originates from current page. + for ( let i = pivot; i < journal.length; i += 3 ) { + const hostname = journal[i+0]; + let hnDetails = this.hostnameDetailsMap.get(hostname); + if ( hnDetails === undefined ) { + hnDetails = HostnameDetails.factory(hostname); + this.hostnameDetailsMap.set(hostname, hnDetails); + this.contentLastModified = now; + } + const blocked = journal[i+1] === 1; + const itype = journal[i+2]; + if ( itype === SCRIPT ) { + hnDetails.counts.inc(blocked, 'script'); + this.counts.inc(blocked, 'script'); + } else if ( itype === SUB_FRAME || itype === OBJECT ) { + hnDetails.counts.inc(blocked, 'frame'); + this.counts.inc(blocked, 'frame'); + } else { + hnDetails.counts.inc(blocked); + this.counts.inc(blocked); + } + if ( blocked ) { + aggregateBlocked += 1; + } else { + aggregateAllowed += 1; + } + } + this.journalLastUncommitted = this.journalLastCommitted = -1; + + // https://github.com/chrisaljoudi/uBlock/issues/905#issuecomment-76543649 + // No point updating the badge if it's not being displayed. + if ( aggregateBlocked !== 0 && µb.userSettings.showIconBadge ) { + µb.updateToolbarIcon(this.tabId, 0x02); + } + + // Everything before pivot does not originate from current page -- we + // still need to bump global blocked/allowed counts. + for ( let i = 0; i < pivot; i += 3 ) { + if ( journal[i+1] === 1 ) { + aggregateBlocked += 1; + } else { + aggregateAllowed += 1; + } + } + if ( aggregateAllowed || aggregateBlocked ) { + µb.incrementRequestStats(aggregateBlocked, aggregateAllowed); + } + journal.length = 0; + } + + filterRequest(fctxt) { + fctxt.filter = undefined; + fctxt.redirectURL = undefined; + + if ( this.getNetFilteringSwitch(fctxt) === false ) { + return 0; + } + + if ( + fctxt.itype === fctxt.CSP_REPORT && + this.filterCSPReport(fctxt) === 1 + ) { + return 1; + } + + if ( + (fctxt.itype & fctxt.FONT_ANY) !== 0 && + this.filterFont(fctxt) === 1 ) + { + return 1; + } + + if ( + fctxt.itype === fctxt.SCRIPT && + this.filterScripting(fctxt, true) === 1 + ) { + return 1; + } + + const cacheableResult = + this.cacheableResults.has(fctxt.itype) && + fctxt.aliasURL === undefined; + + if ( cacheableResult ) { + const entry = this.netFilteringCache.lookupResult(fctxt); + if ( entry !== undefined ) { + fctxt.redirectURL = entry.redirectURL; + fctxt.filter = entry.logData; + return entry.result; + } + } + + const requestType = fctxt.type; + const loggerEnabled = logger.enabled; + + // Dynamic URL filtering. + let result = sessionURLFiltering.evaluateZ( + fctxt.getTabHostname(), + fctxt.url, + requestType + ); + if ( result !== 0 && loggerEnabled ) { + fctxt.filter = sessionURLFiltering.toLogData(); + } + + // Dynamic hostname/type filtering. + if ( result === 0 && µb.userSettings.advancedUserEnabled ) { + result = sessionFirewall.evaluateCellZY( + fctxt.getTabHostname(), + fctxt.getHostname(), + requestType + ); + if ( result !== 0 && result !== 3 && loggerEnabled ) { + fctxt.filter = sessionFirewall.toLogData(); + } + } + + // Static filtering has lowest precedence. + const snfe = staticNetFilteringEngine; + if ( result === 0 || result === 3 ) { + result = snfe.matchRequest(fctxt); + if ( result !== 0 ) { + if ( loggerEnabled ) { + fctxt.setFilter(snfe.toLogData()); + } + // https://github.com/uBlockOrigin/uBlock-issues/issues/943 + // Blanket-except blocked aliased canonical hostnames? + if ( + result === 1 && + fctxt.aliasURL !== undefined && + snfe.isBlockImportant() === false && + this.shouldExceptCname(fctxt) + ) { + return 2; + } + } + } + + // Click-to-load? + // When frameId is not -1, the resource is always sub_frame. + if ( result === 1 && fctxt.frameId !== -1 ) { + const frameStore = this.getFrameStore(fctxt.frameId); + if ( frameStore !== null && frameStore.clickToLoad ) { + result = 2; + if ( loggerEnabled ) { + fctxt.pushFilter({ + result, + source: 'network', + raw: 'click-to-load', + }); + } + } + } + + // Modifier(s)? + // A modifier is an action which transform the original network request. + // https://github.com/gorhill/uBlock/issues/949 + // Redirect blocked request? + // https://github.com/uBlockOrigin/uBlock-issues/issues/760 + // Redirect non-blocked request? + if ( (fctxt.itype & fctxt.INLINE_ANY) === 0 ) { + if ( result === 1 ) { + this.redirectBlockedRequest(fctxt); + } else { + this.redirectNonBlockedRequest(fctxt); + } + } + + if ( cacheableResult ) { + this.netFilteringCache.rememberResult(fctxt, result); + } else if ( result === 1 && this.collapsibleResources.has(fctxt.itype) ) { + this.netFilteringCache.rememberBlock(fctxt); + } + + return result; + } + + filterOnHeaders(fctxt, ...headers) { + fctxt.filter = undefined; + + if ( this.getNetFilteringSwitch(fctxt) === false ) { return 0; } + + let result = staticNetFilteringEngine.matchHeaders(fctxt, ...headers); + if ( result === 0 ) { return 0; } + + const loggerEnabled = logger.enabled; + if ( loggerEnabled ) { + fctxt.filter = staticNetFilteringEngine.toLogData(); + } + + // Dynamic filtering allow rules + // URL filtering + if ( + result === 1 && + sessionURLFiltering.evaluateZ( + fctxt.getTabHostname(), + fctxt.url, + fctxt.type + ) === 2 + ) { + result = 2; + if ( loggerEnabled ) { + fctxt.filter = sessionURLFiltering.toLogData(); + } + } + // Hostname filtering + if ( + result === 1 && + µb.userSettings.advancedUserEnabled && + sessionFirewall.evaluateCellZY( + fctxt.getTabHostname(), + fctxt.getHostname(), + fctxt.type + ) === 2 + ) { + result = 2; + if ( loggerEnabled ) { + fctxt.filter = sessionFirewall.toLogData(); + } + } + + return result; + } + + redirectBlockedRequest(fctxt) { + const directives = staticNetFilteringEngine.redirectRequest(redirectEngine, fctxt) || []; + if ( this.urlSkippableResources.has(fctxt.itype) ) { + staticNetFilteringEngine.urlSkip(fctxt, true, directives); + } + if ( directives.length === 0 ) { return; } + if ( logger.enabled !== true ) { return; } + fctxt.pushFilters(directives.map(a => a.logData())); + if ( fctxt.redirectURL === undefined ) { return; } + fctxt.pushFilter({ + source: 'redirect', + raw: directives[directives.length-1].value + }); + } + + redirectNonBlockedRequest(fctxt) { + const directives = []; + staticNetFilteringEngine.transformURL(fctxt, directives); + if ( staticNetFilteringEngine.hasQuery(fctxt) ) { + staticNetFilteringEngine.filterQuery(fctxt, directives); + } + if ( this.urlSkippableResources.has(fctxt.itype) ) { + staticNetFilteringEngine.urlSkip(fctxt, false, directives); + } + if ( directives.length === 0 ) { return; } + if ( logger.enabled !== true ) { return; } + fctxt.pushFilters(directives.map(a => a.logData())); + if ( fctxt.redirectURL === undefined ) { return; } + fctxt.pushFilter({ + source: 'redirect', + raw: fctxt.redirectURL + }); + } + + skipMainDocument(fctxt, blocked) { + const directives = staticNetFilteringEngine.urlSkip(fctxt, blocked); + if ( directives === undefined ) { return; } + fctxt.pushFilters(directives.map(a => a.logData())); + if ( fctxt.redirectURL === undefined ) { return; } + fctxt.pushFilter({ + source: 'redirect', + raw: fctxt.redirectURL + }); + } + + filterCSPReport(fctxt) { + if ( + sessionSwitches.evaluateZ( + 'no-csp-reports', + fctxt.getHostname() + ) + ) { + if ( logger.enabled ) { + fctxt.filter = sessionSwitches.toLogData(); + } + return 1; + } + return 0; + } + + filterFont(fctxt) { + if ( fctxt.itype === fctxt.FONT ) { + this.remoteFontCount += 1; + } + if ( + sessionSwitches.evaluateZ( + 'no-remote-fonts', + fctxt.getTabHostname() + ) !== false + ) { + if ( logger.enabled ) { + fctxt.filter = sessionSwitches.toLogData(); + } + return 1; + } + return 0; + } + + filterScripting(fctxt, netFiltering) { + fctxt.filter = undefined; + if ( netFiltering === undefined ) { + netFiltering = this.getNetFilteringSwitch(fctxt); + } + if ( + netFiltering === false || + sessionSwitches.evaluateZ( + 'no-scripting', + fctxt.getTabHostname() + ) === false + ) { + return 0; + } + if ( logger.enabled ) { + fctxt.filter = sessionSwitches.toLogData(); + } + return 1; + } + + // The caller is responsible to check whether filtering is enabled or not. + filterLargeMediaElement(fctxt, headers) { + fctxt.filter = undefined; + if ( this.allowLargeMediaElementsUntil === 0 ) { return 0; } + if ( sessionSwitches.evaluateZ('no-large-media', fctxt.getTabHostname() ) !== true ) { + this.allowLargeMediaElementsUntil = 0; + return 0; + } + // XHR-based streaming is never blocked but we want to prevent autoplay + if ( fctxt.itype === fctxt.XMLHTTPREQUEST ) { + const ctype = headers.contentType; + if ( ctype.startsWith('audio/') || ctype.startsWith('video/') ) { + this.largeMediaTimer.on(500); + } + return 0; + } + if ( Date.now() < this.allowLargeMediaElementsUntil ) { + if ( fctxt.itype === fctxt.MEDIA ) { + const sources = this.allowLargeMediaElementsRegex instanceof RegExp + ? [ this.allowLargeMediaElementsRegex.source ] + : []; + sources.push('^' + µb.escapeRegex(fctxt.url)); + this.allowLargeMediaElementsRegex = new RegExp(sources.join('|')); + } + return 0; + } + // Disregard large media elements previously allowed: for example, to + // seek inside a previously allowed audio/video. + if ( + this.allowLargeMediaElementsRegex instanceof RegExp && + this.allowLargeMediaElementsRegex.test(fctxt.url) + ) { + return 0; + } + // Regardless of whether a media is blocked, we want to prevent autoplay + if ( fctxt.itype === fctxt.MEDIA ) { + this.largeMediaTimer.on(500); + } + const size = headers.contentLength; + if ( isNaN(size) ) { + return µb.userSettings.largeMediaSize === 0 ? 1 : 0; + } + if ( (size >>> 10) < µb.userSettings.largeMediaSize ) { return 0; } + this.largeMediaCount += 1; + this.largeMediaTimer.on(500); + if ( logger.enabled ) { + fctxt.filter = sessionSwitches.toLogData(); + } + return 1; + } + + clickToLoad(frameId, frameURL) { + let frameStore = this.getFrameStore(frameId); + if ( frameStore === null ) { + frameStore = this.setFrameURL({ frameId, url: frameURL }); + } + this.netFilteringCache.forgetResult( + this.tabHostname, + 'sub_frame', + frameURL + ); + frameStore.clickToLoad = true; + } + + shouldExceptCname(fctxt) { + let exceptCname; + let frameStore; + if ( fctxt.docId !== undefined ) { + frameStore = this.getFrameStore(fctxt.docId); + if ( frameStore instanceof Object ) { + exceptCname = frameStore.exceptCname; + } + } + if ( exceptCname === undefined ) { + fctxt.setType('cname'); + fctxt.setURL( + frameStore instanceof Object + ? frameStore.rawURL + : fctxt.getDocOrigin() + ); + const result = staticNetFilteringEngine.matchRequest(fctxt, 0b11); + exceptCname = result === 2 + ? staticNetFilteringEngine.toLogData() + : false; + if ( frameStore instanceof Object ) { + frameStore.exceptCname = exceptCname; + } + } + if ( exceptCname === false ) { return false; } + if ( exceptCname instanceof Object ) { + fctxt.setFilter(exceptCname); + } + return true; + } + + getBlockedResources(request, response) { + const normalURL = µb.normalizeTabURL(this.tabId, request.frameURL); + const resources = request.resources; + const fctxt = µb.filteringContext; + fctxt.fromTabId(this.tabId) + .setDocOriginFromURL(normalURL); + // Force some resources to go through the filtering engine in order to + // populate the blocked-resources cache. This is required because for + // some resources it's not possible to detect whether they were blocked + // content script-side (i.e. `iframes` -- unlike `img`). + if ( Array.isArray(resources) && resources.length !== 0 ) { + for ( const resource of resources ) { + this.filterRequest( + fctxt.setType(resource.type).setURL(resource.url) + ); + } + } + if ( this.netFilteringCache.hash === response.hash ) { return; } + response.hash = this.netFilteringCache.hash; + response.blockedResources = + this.netFilteringCache.lookupAllBlocked(fctxt.getDocHostname()); + } + + cacheableResults = new Set([ + µb.FilteringContext.SUB_FRAME + ]); + + collapsibleResources = new Set([ + µb.FilteringContext.IMAGE, + µb.FilteringContext.MEDIA, + µb.FilteringContext.OBJECT, + µb.FilteringContext.SUB_FRAME, + ]); + + urlSkippableResources = new Set([ + µb.FilteringContext.IMAGE, + µb.FilteringContext.MAIN_FRAME, + µb.FilteringContext.MEDIA, + µb.FilteringContext.OBJECT, + µb.FilteringContext.OTHER, + µb.FilteringContext.SUB_FRAME, + ]); + + // To mitigate memory churning + static junkyard = []; + static junkyardMax = 10; +}; + +/******************************************************************************/ + +export { PageStore }; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/popup-fenix.js b/android/app/src/main/assets/extensions/ublock_origin/js/popup-fenix.js new file mode 100644 index 00000000..4ffbac39 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/popup-fenix.js @@ -0,0 +1,1544 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { dom, qs$, qsa$ } from './dom.js'; +import { i18n$ } from './i18n.js'; +import punycode from '../lib/punycode.js'; + +/******************************************************************************/ + +let popupFontSize = 'unset'; +vAPI.localStorage.getItemAsync('popupFontSize').then(value => { + if ( typeof value !== 'string' || value === 'unset' ) { return; } + document.body.style.setProperty('--font-size', value); + popupFontSize = value; +}); + +// https://github.com/chrisaljoudi/uBlock/issues/996 +// Experimental: mitigate glitchy popup UI: immediately set the firewall +// pane visibility to its last known state. By default the pane is hidden. +vAPI.localStorage.getItemAsync('popupPanelSections').then(bits => { + if ( typeof bits !== 'number' ) { return; } + setSections(bits); +}); + +/******************************************************************************/ + +const messaging = vAPI.messaging; +const scopeToSrcHostnameMap = { + '/': '*', + '.': '' +}; +const hostnameToSortableTokenMap = new Map(); +const statsStr = i18n$('popupBlockedStats'); +const domainsHitStr = i18n$('popupHitDomainCount'); + +let popupData = {}; +let dfPaneBuilt = false; +let dfHotspots = null; +const allHostnameRows = []; +let cachedPopupHash = ''; +let forceReloadFlag = 0; + +// https://github.com/gorhill/uBlock/issues/2550 +// Solution inspired from +// - https://bugs.chromium.org/p/chromium/issues/detail?id=683314 +// - https://bugzilla.mozilla.org/show_bug.cgi?id=1332714#c17 +// Confusable character set from: +// - http://unicode.org/cldr/utility/list-unicodeset.jsp?a=%5B%D0%B0%D1%81%D4%81%D0%B5%D2%BB%D1%96%D1%98%D3%8F%D0%BE%D1%80%D4%9B%D1%95%D4%9D%D1%85%D1%83%D1%8A%D0%AC%D2%BD%D0%BF%D0%B3%D1%B5%D1%A1%5D&g=gc&i= +// Linked from: +// - https://www.chromium.org/developers/design-documents/idn-in-google-chrome +const reCyrillicNonAmbiguous = /[\u0400-\u042b\u042d-\u042f\u0431\u0432\u0434\u0436-\u043d\u0442\u0444\u0446-\u0449\u044b-\u0454\u0457\u0459-\u0460\u0462-\u0474\u0476-\u04ba\u04bc\u04be-\u04ce\u04d0-\u0500\u0502-\u051a\u051c\u051e-\u052f]/; +const reCyrillicAmbiguous = /[\u042c\u0430\u0433\u0435\u043e\u043f\u0440\u0441\u0443\u0445\u044a\u0455\u0456\u0458\u0461\u0475\u04bb\u04bd\u04cf\u0501\u051b\u051d]/; + +/******************************************************************************/ + +const cachePopupData = function(data) { + popupData = {}; + scopeToSrcHostnameMap['.'] = ''; + hostnameToSortableTokenMap.clear(); + + if ( typeof data !== 'object' ) { + return popupData; + } + popupData = data; + popupData.cnameMap = new Map(popupData.cnameMap); + scopeToSrcHostnameMap['.'] = popupData.pageHostname || ''; + const hostnameDict = popupData.hostnameDict; + if ( typeof hostnameDict !== 'object' ) { + return popupData; + } + for ( const hostname in hostnameDict ) { + if ( Object.hasOwn(hostnameDict, hostname) === false ) { continue; } + let domain = hostnameDict[hostname].domain; + let prefix = hostname.slice(0, 0 - domain.length - 1); + // Prefix with space char for 1st-party hostnames: this ensure these + // will come first in list. + if ( domain === popupData.pageDomain ) { + domain = '\u0020'; + } + hostnameToSortableTokenMap.set( + hostname, + domain + ' ' + prefix.split('.').reverse().join('.') + ); + } + return popupData; +}; + +/******************************************************************************/ + +const hashFromPopupData = function(reset = false) { + // It makes no sense to offer to refresh the behind-the-scene scope + if ( popupData.pageHostname === 'behind-the-scene' ) { + dom.cl.remove(dom.body, 'needReload'); + return; + } + + const hasher = []; + const rules = popupData.firewallRules; + for ( const key in rules ) { + const rule = rules[key]; + if ( rule === undefined ) { continue; } + hasher.push(rule); + } + hasher.sort(); + hasher.push( + dom.cl.has('body', 'off'), + dom.cl.has('#no-large-media', 'on'), + dom.cl.has('#no-cosmetic-filtering', 'on'), + dom.cl.has('#no-remote-fonts', 'on'), + dom.cl.has('#no-scripting', 'on') + ); + + const hash = hasher.join(''); + if ( reset ) { + cachedPopupHash = hash; + forceReloadFlag = 0; + } + dom.cl.toggle(dom.body, 'needReload', + hash !== cachedPopupHash || popupData.hasUnprocessedRequest === true + ); +}; + +/******************************************************************************/ + +// greater-than-zero test + +const gtz = n => typeof n === 'number' && n > 0; + +/******************************************************************************/ + +const formatNumber = function(count) { + if ( typeof count !== 'number' ) { return ''; } + if ( count < 1e6 ) { return count.toLocaleString(); } + + if ( + intlNumberFormat === undefined && + Intl.NumberFormat instanceof Function + ) { + const intl = new Intl.NumberFormat(undefined, { + notation: 'compact', + maximumSignificantDigits: 4 + }); + if ( + intl.resolvedOptions instanceof Function && + Object.hasOwn(intl.resolvedOptions(), 'notation') + ) { + intlNumberFormat = intl; + } + } + + if ( intlNumberFormat ) { + return intlNumberFormat.format(count); + } + + // https://github.com/uBlockOrigin/uBlock-issues/issues/1027#issuecomment-629696676 + // For platforms which do not support proper number formatting, use + // a poor's man compact form, which unfortunately is not i18n-friendly. + count /= 1000000; + if ( count >= 100 ) { + count = Math.floor(count * 10) / 10; + } else if ( count > 10 ) { + count = Math.floor(count * 100) / 100; + } else { + count = Math.floor(count * 1000) / 1000; + } + return (count).toLocaleString(undefined) + '\u2009M'; +}; + +let intlNumberFormat; + +/******************************************************************************/ + +const safePunycodeToUnicode = function(hn) { + const pretty = punycode.toUnicode(hn); + return pretty === hn || + reCyrillicAmbiguous.test(pretty) === false || + reCyrillicNonAmbiguous.test(pretty) + ? pretty + : hn; +}; + +/******************************************************************************/ + +const updateFirewallCellCount = function(cells, allowed, blocked) { + for ( const cell of cells ) { + if ( gtz(allowed) ) { + dom.attr(cell, 'data-acount', + Math.min(Math.ceil(Math.log(allowed + 1) / Math.LN10), 3) + ); + } else { + dom.attr(cell, 'data-acount', '0'); + } + if ( gtz(blocked) ) { + dom.attr(cell, 'data-bcount', + Math.min(Math.ceil(Math.log(blocked + 1) / Math.LN10), 3) + ); + } else { + dom.attr(cell, 'data-bcount', '0'); + } + } +}; + +/******************************************************************************/ + +const updateFirewallCellRule = function(cells, scope, des, type, rule) { + const ruleParts = rule !== undefined ? rule.split(' ') : undefined; + + for ( const cell of cells ) { + if ( ruleParts === undefined ) { + dom.attr(cell, 'class', null); + continue; + } + + const action = updateFirewallCellRule.actionNames[ruleParts[3]]; + dom.attr(cell, 'class', `${action}Rule`); + + // Use dark shade visual cue if the rule is specific to the cell. + if ( + (ruleParts[1] !== '*' || ruleParts[2] === type) && + (ruleParts[1] === des) && + (ruleParts[0] === scopeToSrcHostnameMap[scope]) + + ) { + dom.cl.add(cell, 'ownRule'); + } + } +}; + +updateFirewallCellRule.actionNames = { '1': 'block', '2': 'allow', '3': 'noop' }; + +/******************************************************************************/ + +const updateAllFirewallCells = function(doRules = true, doCounts = true) { + const { pageDomain } = popupData; + const rowContainer = qs$('#firewall'); + const rows = qsa$(rowContainer, '#firewall > [data-des][data-type]'); + + let a1pScript = 0, b1pScript = 0; + let a3pScript = 0, b3pScript = 0; + let a3pFrame = 0, b3pFrame = 0; + + for ( const row of rows ) { + const des = dom.attr(row, 'data-des'); + const type = dom.attr(row, 'data-type'); + if ( doRules ) { + updateFirewallCellRule( + qsa$(row, ':scope > span[data-src="/"]'), + '/', + des, + type, + popupData.firewallRules[`/ ${des} ${type}`] + ); + } + const cells = qsa$(row, ':scope > span[data-src="."]'); + if ( doRules ) { + updateFirewallCellRule( + cells, + '.', + des, + type, + popupData.firewallRules[`. ${des} ${type}`] + ); + } + if ( des === '*' || type !== '*' ) { continue; } + if ( doCounts === false ) { continue; } + const hnDetails = popupData.hostnameDict[des]; + if ( hnDetails === undefined ) { + updateFirewallCellCount(cells); + continue; + } + const { allowed, blocked } = hnDetails.counts; + updateFirewallCellCount([ cells[0] ], allowed.any, blocked.any); + const { totals } = hnDetails; + if ( totals !== undefined ) { + updateFirewallCellCount([ cells[1] ], totals.allowed.any, totals.blocked.any); + } + if ( hnDetails.domain === pageDomain ) { + a1pScript += allowed.script; b1pScript += blocked.script; + } else { + a3pScript += allowed.script; b3pScript += blocked.script; + a3pFrame += allowed.frame; b3pFrame += blocked.frame; + } + } + + if ( doCounts ) { + const fromType = type => + qsa$(`#firewall > [data-des="*"][data-type="${type}"] > [data-src="."]`); + updateFirewallCellCount(fromType('1p-script'), a1pScript, b1pScript); + updateFirewallCellCount(fromType('3p-script'), a3pScript, b3pScript); + dom.cl.toggle(rowContainer, 'has3pScript', a3pScript !== 0 || b3pScript !== 0); + updateFirewallCellCount(fromType('3p-frame'), a3pFrame, b3pFrame); + dom.cl.toggle(rowContainer, 'has3pFrame', a3pFrame !== 0 || b3pFrame !== 0); + } + + dom.cl.toggle(dom.body, 'needSave', popupData.matrixIsDirty === true); +}; + +/******************************************************************************/ + +// Compute statistics useful only to firewall entries -- we need to call +// this only when overview pane needs to be rendered. + +const expandHostnameStats = ( ) => { + let dnDetails; + for ( const des of allHostnameRows ) { + const hnDetails = popupData.hostnameDict[des]; + const { domain, counts } = hnDetails; + const isDomain = des === domain; + const { allowed: hnAllowed, blocked: hnBlocked } = counts; + if ( isDomain ) { + dnDetails = hnDetails; + dnDetails.totals = JSON.parse(JSON.stringify(dnDetails.counts)); + } else { + const { allowed: dnAllowed, blocked: dnBlocked } = dnDetails.totals; + dnAllowed.any += hnAllowed.any; + dnBlocked.any += hnBlocked.any; + } + hnDetails.hasScript = hnAllowed.script !== 0 || hnBlocked.script !== 0; + dnDetails.hasScript = dnDetails.hasScript || hnDetails.hasScript; + hnDetails.hasFrame = hnAllowed.frame !== 0 || hnBlocked.frame !== 0; + dnDetails.hasFrame = dnDetails.hasFrame || hnDetails.hasFrame; + } +}; + +/******************************************************************************/ + +const buildAllFirewallRows = function() { + // Do this before removing the rows + if ( dfHotspots === null ) { + dfHotspots = qs$('#actionSelector'); + dom.on(dfHotspots, 'click', setFirewallRuleHandler); + } + dfHotspots.remove(); + + // This must be called before we create the rows. + expandHostnameStats(); + + // Update incrementally: reuse existing rows if possible. + const rowContainer = qs$('#firewall'); + const toAppend = document.createDocumentFragment(); + const rowTemplate = qs$('#templates > div[data-des=""][data-type="*"]'); + const { cnameMap, hostnameDict, pageDomain, pageHostname } = popupData; + + let row = qs$(rowContainer, 'div[data-des="*"][data-type="3p-frame"] + div'); + + for ( const des of allHostnameRows ) { + if ( row === null ) { + row = dom.clone(rowTemplate); + toAppend.appendChild(row); + } + dom.attr(row, 'data-des', des); + + const hnDetails = hostnameDict[des] || {}; + const isDomain = des === hnDetails.domain; + const prettyDomainName = des.includes('xn--') + ? punycode.toUnicode(des) + : des; + const isPunycoded = prettyDomainName !== des; + + if ( isDomain && row.childElementCount < 4 ) { + row.append(dom.clone(row.children[2])); + } else if ( isDomain === false && row.childElementCount === 4 ) { + row.children[3].remove(); + } + + const span = qs$(row, 'span:first-of-type'); + dom.text(qs$(span, ':scope > span > span'), prettyDomainName); + + const classList = row.classList; + + let desExtra = ''; + if ( classList.toggle('isCname', cnameMap.has(des)) ) { + desExtra = punycode.toUnicode(cnameMap.get(des)); + } else if ( + isDomain && isPunycoded && + reCyrillicAmbiguous.test(prettyDomainName) && + reCyrillicNonAmbiguous.test(prettyDomainName) === false + ) { + desExtra = des; + } + dom.text(qs$(span, 'sub'), desExtra); + + classList.toggle('isRootContext', des === pageHostname); + classList.toggle('is3p', hnDetails.domain !== pageDomain); + classList.toggle('isDomain', isDomain); + classList.toggle('hasSubdomains', isDomain && hnDetails.hasSubdomains); + classList.toggle('isSubdomain', !isDomain); + const { counts } = hnDetails; + classList.toggle('allowed', gtz(counts.allowed.any)); + classList.toggle('blocked', gtz(counts.blocked.any)); + const { totals } = hnDetails; + classList.toggle('totalAllowed', gtz(totals && totals.allowed.any)); + classList.toggle('totalBlocked', gtz(totals && totals.blocked.any)); + classList.toggle('hasScript', hnDetails.hasScript === true); + classList.toggle('hasFrame', hnDetails.hasFrame === true); + classList.toggle('expandException', expandExceptions.has(hnDetails.domain)); + + row = row.nextElementSibling; + } + + // Remove unused trailing rows + if ( row !== null ) { + while ( row.nextElementSibling !== null ) { + row.nextElementSibling.remove(); + } + row.remove(); + } + + // Add new rows all at once + if ( toAppend.childElementCount !== 0 ) { + rowContainer.append(toAppend); + } + + if ( dfPaneBuilt !== true && popupData.advancedUserEnabled ) { + dom.on('#firewall', 'click', 'span[data-src]', unsetFirewallRuleHandler); + dom.on('#firewall', 'mouseenter', 'span[data-src]', mouseenterCellHandler); + dom.on('#firewall', 'mouseleave', 'span[data-src]', mouseleaveCellHandler); + dfPaneBuilt = true; + } + + updateAllFirewallCells(); +}; + +/******************************************************************************/ + +const hostnameCompare = function(a, b) { + let ha = a; + if ( !reIP.test(ha) ) { + ha = hostnameToSortableTokenMap.get(ha) || ' '; + } + let hb = b; + if ( !reIP.test(hb) ) { + hb = hostnameToSortableTokenMap.get(hb) || ' '; + } + const ca = ha.charCodeAt(0); + const cb = hb.charCodeAt(0); + return ca !== cb ? ca - cb : ha.localeCompare(hb); +}; + +const reIP = /(\d|\])$/; + +/******************************************************************************/ + +function filterFirewallRows() { + const firewallElem = qs$('#firewall'); + const elems = qsa$('#firewall .filterExpressions span[data-expr]'); + let not = false; + for ( const elem of elems ) { + const on = dom.cl.has(elem, 'on'); + switch ( elem.dataset.expr ) { + case 'not': + not = on; + break; + case 'blocked': + dom.cl.toggle(firewallElem, 'showBlocked', !not && on); + dom.cl.toggle(firewallElem, 'hideBlocked', not && on); + break; + case 'allowed': + dom.cl.toggle(firewallElem, 'showAllowed', !not && on); + dom.cl.toggle(firewallElem, 'hideAllowed', not && on); + break; + case 'script': + dom.cl.toggle(firewallElem, 'show3pScript', !not && on); + dom.cl.toggle(firewallElem, 'hide3pScript', not && on); + break; + case 'frame': + dom.cl.toggle(firewallElem, 'show3pFrame', !not && on); + dom.cl.toggle(firewallElem, 'hide3pFrame', not && on); + break; + default: + break; + } + } +} + +dom.on('#firewall .filterExpressions', 'click', 'span[data-expr]', ev => { + const target = ev.target; + dom.cl.toggle(target, 'on'); + switch ( target.dataset.expr ) { + case 'blocked': + if ( dom.cl.has(target, 'on') === false ) { break; } + dom.cl.remove('#firewall .filterExpressions span[data-expr="allowed"]', 'on'); + break; + case 'allowed': + if ( dom.cl.has(target, 'on') === false ) { break; } + dom.cl.remove('#firewall .filterExpressions span[data-expr="blocked"]', 'on'); + break; + } + filterFirewallRows(); + const elems = qsa$('#firewall .filterExpressions span[data-expr]'); + const filters = Array.from(elems) .map(el => dom.cl.has(el, 'on') ? '1' : '0'); + filters.unshift('00'); + vAPI.localStorage.setItem('firewallFilters', filters.join(' ')); +}); + +{ + vAPI.localStorage.getItemAsync('firewallFilters').then(v => { + if ( v === null ) { return; } + const filters = v.split(' '); + if ( filters.shift() !== '00' ) { return; } + if ( filters.every(v => v === '0') ) { return; } + const elems = qsa$('#firewall .filterExpressions span[data-expr]'); + for ( let i = 0; i < elems.length; i++ ) { + if ( filters[i] === '0' ) { continue; } + dom.cl.add(elems[i], 'on'); + } + filterFirewallRows(); + }); +} + +/******************************************************************************/ + +const renderPrivacyExposure = function() { + const allDomains = {}; + let allDomainCount = 0; + let touchedDomainCount = 0; + + allHostnameRows.length = 0; + + // Sort hostnames. First-party hostnames must always appear at the top + // of the list. + const { hostnameDict } = popupData; + const desHostnameDone = new Set(); + const keys = Object.keys(hostnameDict).sort(hostnameCompare); + for ( const des of keys ) { + // Specific-type rules -- these are built-in + if ( des === '*' || desHostnameDone.has(des) ) { continue; } + const hnDetails = hostnameDict[des]; + const { domain, counts } = hnDetails; + if ( Object.hasOwn(allDomains, domain) === false ) { + allDomains[domain] = false; + allDomainCount += 1; + } + if ( gtz(counts.allowed.any) ) { + if ( allDomains[domain] === false ) { + allDomains[domain] = true; + touchedDomainCount += 1; + } + } + const dnDetails = hostnameDict[domain]; + if ( dnDetails !== undefined ) { + if ( des !== domain ) { + dnDetails.hasSubdomains = true; + } else if ( dnDetails.hasSubdomains === undefined ) { + dnDetails.hasSubdomains = false; + } + } + allHostnameRows.push(des); + desHostnameDone.add(des); + } + + const summary = domainsHitStr + .replace('{{count}}', touchedDomainCount.toLocaleString()) + .replace('{{total}}', allDomainCount.toLocaleString()); + dom.text('[data-i18n^="popupDomainsConnected"] + span', summary); +}; + +/******************************************************************************/ + +const updateHnSwitches = function() { + dom.cl.toggle('#no-popups', 'on', popupData.noPopups === true); + dom.cl.toggle('#no-large-media', 'on', popupData.noLargeMedia === true); + dom.cl.toggle('#no-cosmetic-filtering', 'on',popupData.noCosmeticFiltering === true); + dom.cl.toggle('#no-remote-fonts', 'on', popupData.noRemoteFonts === true); + dom.cl.toggle('#no-scripting', 'on', popupData.noScripting === true); +}; + +/******************************************************************************/ + +// Assume everything has to be done incrementally. + +const renderPopup = function() { + if ( popupData.tabTitle ) { + document.title = popupData.appName + ' - ' + popupData.tabTitle; + } + + const isFiltering = popupData.netFilteringSwitch; + + dom.cl.toggle(dom.body, 'advancedUser', popupData.advancedUserEnabled === true); + dom.cl.toggle(dom.body, 'off', popupData.pageURL === '' || isFiltering !== true); + dom.cl.toggle(dom.body, 'needSave', popupData.matrixIsDirty === true); + + // The hostname information below the power switch + { + const [ elemHn, elemDn ] = qs$('#hostname').children; + const { pageDomain, pageHostname } = popupData; + if ( pageDomain !== '' ) { + dom.text(elemDn, safePunycodeToUnicode(pageDomain)); + dom.text(elemHn, pageHostname !== pageDomain + ? safePunycodeToUnicode(pageHostname.slice(0, -pageDomain.length - 1)) + '.' + : '' + ); + } else { + dom.text(elemDn, ''); + dom.text(elemHn, ''); + } + } + + const canPick = popupData.canElementPicker && isFiltering; + + dom.cl.toggle('#gotoZap', 'canPick', canPick); + dom.cl.toggle('#gotoPick', 'canPick', canPick && popupData.userFiltersAreEnabled); + dom.cl.toggle('#gotoReport', 'canPick', canPick); + + let blocked, total; + if ( popupData.pageCounts !== undefined ) { + const counts = popupData.pageCounts; + blocked = counts.blocked.any; + total = blocked + counts.allowed.any; + } else { + blocked = 0; + total = 0; + } + let text; + if ( total === 0 ) { + text = formatNumber(0); + } else { + text = statsStr.replace('{{count}}', formatNumber(blocked)) + .replace('{{percent}}', formatNumber(Math.floor(blocked * 100 / total))); + } + dom.text('[data-i18n^="popupBlockedOnThisPage"] + span', text); + + blocked = popupData.globalBlockedRequestCount; + total = popupData.globalAllowedRequestCount + blocked; + if ( total === 0 ) { + text = formatNumber(0); + } else { + text = statsStr.replace('{{count}}', formatNumber(blocked)) + .replace('{{percent}}', formatNumber(Math.floor(blocked * 100 / total))); + } + dom.text('[data-i18n^="popupBlockedSinceInstall"] + span', text); + + // This will collate all domains, touched or not + renderPrivacyExposure(); + + // Extra tools + updateHnSwitches(); + + // Report popup count on badge + total = popupData.popupBlockedCount; + dom.text( + '#no-popups .fa-icon-badge', + total ? Math.min(total, 99).toLocaleString() : '' + ); + + // Report large media count on badge + total = popupData.largeMediaCount; + dom.text( + '#no-large-media .fa-icon-badge', + total ? Math.min(total, 99).toLocaleString() : '' + ); + + // Report remote font count on badge + total = popupData.remoteFontCount; + dom.text( + '#no-remote-fonts .fa-icon-badge', + total ? Math.min(total, 99).toLocaleString() : '' + ); + + // Unprocessed request(s) warning + dom.cl.toggle(dom.root, 'warn', popupData.hasUnprocessedRequest === true); + + dom.cl.toggle(dom.html, 'colorBlind', popupData.colorBlindFriendly === true); + + setGlobalExpand(popupData.firewallPaneMinimized === false, true); + + // Build dynamic filtering pane only if in use + if ( (computedSections() & sectionFirewallBit) !== 0 ) { + buildAllFirewallRows(); + } + + renderTooltips(); +}; + +/******************************************************************************/ + +dom.on('.dismiss', 'click', ( ) => { + messaging.send('popupPanel', { + what: 'dismissUnprocessedRequest', + tabId: popupData.tabId, + }).then(( ) => { + popupData.hasUnprocessedRequest = false; + dom.cl.remove(dom.root, 'warn'); + }); +}); + +/******************************************************************************/ + +// https://github.com/gorhill/uBlock/issues/2889 +// Use tooltip for ARIA purpose. + +const renderTooltips = function(selector) { + for ( const [ key, details ] of tooltipTargetSelectors ) { + if ( selector !== undefined && key !== selector ) { continue; } + const elem = qs$(key); + if ( elem.hasAttribute('title') === false ) { continue; } + const text = i18n$( + details.i18n + + (qs$(details.state) === null ? '1' : '2') + ); + dom.attr(elem, 'aria-label', text); + dom.attr(elem, 'title', text); + } +}; + +const tooltipTargetSelectors = new Map([ + [ + '#switch', + { + state: 'body.off', + i18n: 'popupPowerSwitchInfo', + } + ], + [ + '#no-popups', + { + state: '#no-popups.on', + i18n: 'popupTipNoPopups' + } + ], + [ + '#no-large-media', + { + state: '#no-large-media.on', + i18n: 'popupTipNoLargeMedia' + } + ], + [ + '#no-cosmetic-filtering', + { + state: '#no-cosmetic-filtering.on', + i18n: 'popupTipNoCosmeticFiltering' + } + ], + [ + '#no-remote-fonts', + { + state: '#no-remote-fonts.on', + i18n: 'popupTipNoRemoteFonts' + } + ], + [ + '#no-scripting', + { + state: '#no-scripting.on', + i18n: 'popupTipNoScripting' + } + ], +]); + +/******************************************************************************/ + +// All rendering code which need to be executed only once. + +let renderOnce = function() { + renderOnce = function(){}; + + if ( popupData.fontSize !== popupFontSize ) { + popupFontSize = popupData.fontSize; + if ( popupFontSize !== 'unset' ) { + dom.body.style.setProperty('--font-size', popupFontSize); + vAPI.localStorage.setItem('popupFontSize', popupFontSize); + } else { + dom.body.style.removeProperty('--font-size'); + vAPI.localStorage.removeItem('popupFontSize'); + } + } + + dom.text('#version', popupData.appVersion); + + setSections(computedSections()); + + if ( popupData.uiPopupConfig !== undefined ) { + dom.attr(dom.body, 'data-ui', popupData.uiPopupConfig); + } + + dom.cl.toggle(dom.body, 'no-tooltips', popupData.tooltipsDisabled === true); + if ( popupData.tooltipsDisabled === true ) { + dom.attr('[title]', 'title', null); + } + + // https://github.com/uBlockOrigin/uBlock-issues/issues/22 + if ( popupData.advancedUserEnabled !== true ) { + dom.attr('#firewall [title][data-src]', 'title', null); + } + + // This must be done when the firewall is populated + if ( popupData.popupPanelHeightMode === 1 ) { + dom.cl.add(dom.body, 'vMin'); + } + + // Prevent non-advanced user opting into advanced user mode from harming + // themselves by disabling by default features generally suitable to + // filter list maintainers and actual advanced users. + if ( popupData.godMode ) { + dom.cl.add(dom.body, 'godMode'); + } +}; + +/******************************************************************************/ + +const renderPopupLazy = (( ) => { + let mustRenderCosmeticFilteringBadge = true; + + // https://github.com/uBlockOrigin/uBlock-issues/issues/756 + // Launch potentially expensive hidden elements-counting scriptlet on + // demand only. + { + const sw = qs$('#no-cosmetic-filtering'); + const badge = qs$(sw, ':scope .fa-icon-badge'); + dom.text(badge, '\u22EF'); + + const render = ( ) => { + if ( mustRenderCosmeticFilteringBadge === false ) { return; } + mustRenderCosmeticFilteringBadge = false; + if ( dom.cl.has(sw, 'hnSwitchBusy') ) { return; } + dom.cl.add(sw, 'hnSwitchBusy'); + messaging.send('popupPanel', { + what: 'getHiddenElementCount', + tabId: popupData.tabId, + }).then(count => { + let text; + if ( (count || 0) === 0 ) { + text = ''; + } else if ( count === -1 ) { + text = '?'; + } else { + text = Math.min(count, 99).toLocaleString(); + } + dom.text(badge, text); + dom.cl.remove(sw, 'hnSwitchBusy'); + }); + }; + + dom.on(sw, 'mouseenter', render, { passive: true }); + } + + return async function() { + const count = await messaging.send('popupPanel', { + what: 'getScriptCount', + tabId: popupData.tabId, + }); + dom.text( + '#no-scripting .fa-icon-badge', + (count || 0) !== 0 ? Math.min(count, 99).toLocaleString() : '' + ); + mustRenderCosmeticFilteringBadge = true; + }; +})(); + +/******************************************************************************/ + +const toggleNetFilteringSwitch = function(ev) { + if ( !popupData || !popupData.pageURL ) { return; } + messaging.send('popupPanel', { + what: 'toggleNetFiltering', + url: popupData.pageURL, + scope: ev.ctrlKey || ev.metaKey ? 'page' : '', + state: dom.cl.toggle(dom.body, 'off') === false, + tabId: popupData.tabId, + }); + renderTooltips('#switch'); + hashFromPopupData(); +}; + +/******************************************************************************/ + +const gotoZap = function() { + messaging.send('popupPanel', { + what: 'launchElementPicker', + tabId: popupData.tabId, + zap: true, + }); + + vAPI.closePopup(); +}; + +/******************************************************************************/ + +const gotoPick = function() { + messaging.send('popupPanel', { + what: 'launchElementPicker', + tabId: popupData.tabId, + }); + + vAPI.closePopup(); +}; + +/******************************************************************************/ + +const gotoReport = function() { + const popupPanel = { + blocked: popupData.pageCounts.blocked.any, + }; + const reportedStates = [ + { name: 'enabled', prop: 'netFilteringSwitch', expected: true }, + { name: 'no-cosmetic-filtering', prop: 'noCosmeticFiltering', expected: false }, + { name: 'no-large-media', prop: 'noLargeMedia', expected: false }, + { name: 'no-popups', prop: 'noPopups', expected: false }, + { name: 'no-remote-fonts', prop: 'noRemoteFonts', expected: false }, + { name: 'no-scripting', prop: 'noScripting', expected: false }, + { name: 'can-element-picker', prop: 'canElementPicker', expected: true }, + ]; + for ( const { name, prop, expected } of reportedStates ) { + if ( popupData[prop] === expected ) { continue; } + popupPanel[name] = !expected; + } + if ( hostnameToSortableTokenMap.size !== 0 ) { + const network = {}; + const hostnames = + Array.from(hostnameToSortableTokenMap.keys()).sort(hostnameCompare); + for ( const hostname of hostnames ) { + const entry = popupData.hostnameDict[hostname]; + const count = entry.counts.blocked.any; + if ( count === 0 ) { continue; } + const domain = entry.domain; + if ( network[domain] === undefined ) { + network[domain] = 0; + } + network[domain] += count; + } + if ( Object.keys(network).length !== 0 ) { + popupPanel.network = network; + } + } + messaging.send('popupPanel', { + what: 'launchReporter', + tabId: popupData.tabId, + pageURL: popupData.rawURL, + popupPanel, + }); + + vAPI.closePopup(); +}; + +/******************************************************************************/ + +const gotoURL = function(ev) { + if ( this.hasAttribute('href') === false ) { return; } + + ev.preventDefault(); + + let url = dom.attr(ev.target, 'href'); + if ( + url === 'logger-ui.html#_' && + typeof popupData.tabId === 'number' + ) { + url += '+' + popupData.tabId; + } + + messaging.send('popupPanel', { + what: 'gotoURL', + details: { + url: url, + select: true, + index: -1, + shiftKey: ev.shiftKey + }, + }); + + vAPI.closePopup(); +}; + +/******************************************************************************/ + +// The popup panel is made of sections. Visibility of sections can +// be toggled on/off. + +const maxNumberOfSections = 6; +const sectionFirewallBit = 0b10000; + +const computedSections = ( ) => + popupData.popupPanelSections & + ~popupData.popupPanelDisabledSections | + popupData.popupPanelLockedSections; + +const sectionBitsFromAttribute = function() { + const attr = document.body.dataset.more; + if ( attr === '' ) { return 0; } + let bits = 0; + for ( const c of attr ) { + bits |= 1 << (c.charCodeAt(0) - 97); + } + return bits; +}; + +const sectionBitsToAttribute = function(bits) { + const attr = []; + for ( let i = 0; i < maxNumberOfSections; i++ ) { + const bit = 1 << i; + if ( (bits & bit) === 0 ) { continue; } + attr.push(String.fromCharCode(97 + i)); + } + return attr.join(''); +}; + +const setSections = function(bits) { + const value = sectionBitsToAttribute(bits); + const min = sectionBitsToAttribute(popupData.popupPanelLockedSections); + const max = sectionBitsToAttribute( + (1 << maxNumberOfSections) - 1 & ~popupData.popupPanelDisabledSections + ); + document.body.dataset.more = value; + dom.cl.toggle('#lessButton', 'disabled', value === min); + dom.cl.toggle('#moreButton', 'disabled', value === max); +}; + +const toggleSections = function(more) { + const offbits = ~popupData.popupPanelDisabledSections; + const onbits = popupData.popupPanelLockedSections; + let currentBits = sectionBitsFromAttribute(); + let newBits = currentBits; + for ( let i = 0; i < maxNumberOfSections; i++ ) { + const bit = 1 << (more ? i : maxNumberOfSections - i - 1); + if ( more ) { + newBits |= bit; + } else { + newBits &= ~bit; + } + newBits = newBits & offbits | onbits; + if ( newBits !== currentBits ) { break; } + } + if ( newBits === currentBits ) { return; } + + setSections(newBits); + + popupData.popupPanelSections = newBits; + messaging.send('popupPanel', { + what: 'userSettings', + name: 'popupPanelSections', + value: newBits, + }); + + // https://github.com/chrisaljoudi/uBlock/issues/996 + // Remember the last state of the firewall pane. This allows to + // configure the popup size early next time it is opened, which means a + // less glitchy popup at open time. + vAPI.localStorage.setItem('popupPanelSections', newBits); + + // Dynamic filtering pane may not have been built yet + if ( (newBits & sectionFirewallBit) !== 0 && dfPaneBuilt === false ) { + buildAllFirewallRows(); + } +}; + +dom.on('#moreButton', 'click', ( ) => { toggleSections(true); }); +dom.on('#lessButton', 'click', ( ) => { toggleSections(false); }); + +/******************************************************************************/ + +const mouseenterCellHandler = function(ev) { + const target = ev.target; + if ( dom.cl.has(target, 'ownRule') ) { return; } + target.appendChild(dfHotspots); +}; + +const mouseleaveCellHandler = function() { + dfHotspots.remove(); +}; + +/******************************************************************************/ + +const setFirewallRule = async function(src, des, type, action, persist) { + // This can happen on pages where uBlock does not work + if ( + typeof popupData.pageHostname !== 'string' || + popupData.pageHostname === '' + ) { + return; + } + + const response = await messaging.send('popupPanel', { + what: 'toggleFirewallRule', + tabId: popupData.tabId, + pageHostname: popupData.pageHostname, + srcHostname: src, + desHostname: des, + requestType: type, + action: action, + persist: persist, + }); + + // Remove action widget if an own rule has been set, this allows to click + // again immediately to remove the rule. + if ( action !== 0 ) { + dfHotspots.remove(); + } + + cachePopupData(response); + updateAllFirewallCells(true, false); + hashFromPopupData(); +}; + +/******************************************************************************/ + +const unsetFirewallRuleHandler = function(ev) { + const cell = ev.target; + const row = cell.closest('[data-des]'); + setFirewallRule( + dom.attr(cell, 'data-src') === '/' ? '*' : popupData.pageHostname, + dom.attr(row, 'data-des'), + dom.attr(row, 'data-type'), + 0, + ev.ctrlKey || ev.metaKey + ); + cell.appendChild(dfHotspots); +}; + +/******************************************************************************/ + +const setFirewallRuleHandler = function(ev) { + const hotspot = ev.target; + const cell = hotspot.closest('[data-src]'); + if ( cell === null ) { return; } + const row = cell.closest('[data-des]'); + let action = 0; + if ( hotspot.id === 'dynaAllow' ) { + action = 2; + } else if ( hotspot.id === 'dynaNoop' ) { + action = 3; + } else { + action = 1; + } + setFirewallRule( + dom.attr(cell, 'data-src') === '/' ? '*' : popupData.pageHostname, + dom.attr(row, 'data-des'), + dom.attr(row, 'data-type'), + action, + ev.ctrlKey || ev.metaKey + ); + dfHotspots.remove(); +}; + +/******************************************************************************/ + +const reloadTab = function(bypassCache = false) { + // Preemptively clear the unprocessed-requests status since we know for sure + // the page is being reloaded in this code path. + if ( popupData.hasUnprocessedRequest === true ) { + messaging.send('popupPanel', { + what: 'dismissUnprocessedRequest', + tabId: popupData.tabId, + }).then(( ) => { + popupData.hasUnprocessedRequest = false; + dom.cl.remove(dom.root, 'warn'); + }); + } + + messaging.send('popupPanel', { + what: 'reloadTab', + tabId: popupData.tabId, + url: popupData.rawURL, + select: vAPI.webextFlavor.soup.has('mobile'), + bypassCache: bypassCache || forceReloadFlag !== 0, + }); + + // Polling will take care of refreshing the popup content + // https://github.com/chrisaljoudi/uBlock/issues/748 + // User forces a reload, assume the popup has to be updated regardless + // if there were changes or not. + popupData.contentLastModified = -1; + + // Reset popup state hash to current state. + hashFromPopupData(true); +}; + +dom.on('#refresh', 'click', ev => { + reloadTab(ev.ctrlKey || ev.metaKey || ev.shiftKey); +}); + +// https://github.com/uBlockOrigin/uBlock-issues/issues/672 +dom.on(document, 'keydown', ev => { + if ( ev.isComposing ) { return; } + let bypassCache = false; + switch ( ev.key ) { + case 'F5': + bypassCache = ev.ctrlKey || ev.metaKey || ev.shiftKey; + break; + case 'r': + if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } + break; + case 'R': + if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } + bypassCache = true; + break; + default: + return; + } + reloadTab(bypassCache); + ev.preventDefault(); + ev.stopPropagation(); +}, { capture: true }); + +/******************************************************************************/ + +const expandExceptions = new Set(); + +vAPI.localStorage.getItemAsync('popupExpandExceptions').then(exceptions => { + try { + if ( Array.isArray(exceptions) === false ) { return; } + for ( const exception of exceptions ) { + expandExceptions.add(exception); + } + } + catch { + } +}); + +const saveExpandExceptions = function() { + vAPI.localStorage.setItem( + 'popupExpandExceptions', + Array.from(expandExceptions) + ); +}; + +const setGlobalExpand = function(state, internal = false) { + dom.cl.remove('.expandException', 'expandException'); + if ( state ) { + dom.cl.add('#firewall', 'expanded'); + } else { + dom.cl.remove('#firewall', 'expanded'); + } + if ( internal ) { return; } + popupData.firewallPaneMinimized = !state; + expandExceptions.clear(); + saveExpandExceptions(); + messaging.send('popupPanel', { + what: 'userSettings', + name: 'firewallPaneMinimized', + value: popupData.firewallPaneMinimized, + }); +}; + +const setSpecificExpand = function(domain, state, internal = false) { + const elems = qsa$(`[data-des="${domain}"],[data-des$=".${domain}"]`); + if ( state ) { + dom.cl.add(elems, 'expandException'); + } else { + dom.cl.remove(elems, 'expandException'); + } + if ( internal ) { return; } + if ( state ) { + expandExceptions.add(domain); + } else { + expandExceptions.delete(domain); + } + saveExpandExceptions(); +}; + +dom.on('[data-i18n="popupAnyRulePrompt"]', 'click', ev => { + // Special display mode: in its own tab/window, with no vertical restraint. + // Useful to take snapshots of the whole list of domains -- example: + // https://github.com/gorhill/uBlock/issues/736#issuecomment-178879944 + if ( ev.shiftKey && ev.ctrlKey ) { + messaging.send('popupPanel', { + what: 'gotoURL', + details: { + url: `popup-fenix.html?tabId=${popupData.tabId}&intab=1`, + select: true, + index: -1, + }, + }); + vAPI.closePopup(); + return; + } + + setGlobalExpand(dom.cl.has('#firewall', 'expanded') === false); +}); + +dom.on('#firewall', 'click', '.isDomain[data-type="*"] > span:first-of-type', ev => { + const div = ev.target.closest('[data-des]'); + if ( div === null ) { return; } + setSpecificExpand( + dom.attr(div, 'data-des'), + dom.cl.has(div, 'expandException') === false + ); +}); + +/******************************************************************************/ + +const saveFirewallRules = function() { + messaging.send('popupPanel', { + what: 'saveFirewallRules', + srcHostname: popupData.pageHostname, + desHostnames: popupData.hostnameDict, + }); + dom.cl.remove(dom.body, 'needSave'); +}; + +/******************************************************************************/ + +const revertFirewallRules = async function() { + dom.cl.remove(dom.body, 'needSave'); + const response = await messaging.send('popupPanel', { + what: 'revertFirewallRules', + srcHostname: popupData.pageHostname, + desHostnames: popupData.hostnameDict, + tabId: popupData.tabId, + }); + cachePopupData(response); + updateAllFirewallCells(true, false); + updateHnSwitches(); + hashFromPopupData(); +}; + +/******************************************************************************/ + +const toggleHostnameSwitch = async function(ev) { + const target = ev.currentTarget; + const switchName = dom.attr(target, 'id'); + if ( !switchName ) { return; } + // For touch displays, process click only if the switch is not "busy". + if ( + vAPI.webextFlavor.soup.has('mobile') && + dom.cl.has(target, 'hnSwitchBusy') + ) { + return; + } + dom.cl.toggle(target, 'on'); + renderTooltips(`#${switchName}`); + + const response = await messaging.send('popupPanel', { + what: 'toggleHostnameSwitch', + name: switchName, + hostname: popupData.pageHostname, + state: dom.cl.has(target, 'on'), + tabId: popupData.tabId, + persist: ev.ctrlKey || ev.metaKey, + }); + + if ( switchName === 'no-scripting' ) { + forceReloadFlag ^= 1; + } + + cachePopupData(response); + hashFromPopupData(); + + dom.cl.toggle(dom.body, 'needSave', popupData.matrixIsDirty === true); +}; + +/******************************************************************************* + + Double tap ctrl key: toggle god mode + +*/ + +// https://github.com/uBlockOrigin/uBlock-issues/issues/2145 +// Ignore events from auto-repeating keys + +{ + let eventCount = 0; + let eventTime = 0; + + dom.on(document, 'keydown', ev => { + if ( ev.key !== 'Control' ) { + eventCount = 0; + return; + } + if ( ev.repeat ) { return; } + const now = Date.now(); + if ( (now - eventTime) >= 500 ) { + eventCount = 0; + } + eventCount += 1; + eventTime = now; + if ( eventCount < 2 ) { return; } + eventCount = 0; + dom.cl.toggle(dom.body, 'godMode'); + }); +} + + +/******************************************************************************/ + +// Poll for changes. +// +// I couldn't find a better way to be notified of changes which can affect +// popup content, as the messaging API doesn't support firing events accurately +// from the main extension process to a specific auxiliary extension process: +// +// - broadcasting() is not an option given there could be a lot of tabs opened, +// and maybe even many frames within these tabs, i.e. unacceptable overhead +// regardless of whether the popup is opened or not. +// +// - Modifying the messaging API is not an option, as this would require +// revisiting all platform-specific code to support targeted broadcasting, +// which who knows could be not so trivial for some platforms. +// +// A well done polling is a better anyways IMO, I prefer that data is pulled +// on demand rather than forcing the main process to assume a client may need +// it and thus having to push it all the time unconditionally. + +const pollForContentChange = (( ) => { + const pollCallback = async function() { + const response = await messaging.send('popupPanel', { + what: 'hasPopupContentChanged', + tabId: popupData.tabId, + contentLastModified: popupData.contentLastModified, + }); + if ( response ) { + await getPopupData(popupData.tabId); + return; + } + poll(); + }; + + const pollTimer = vAPI.defer.create(pollCallback); + + const poll = function() { + pollTimer.on(1500); + }; + + return poll; +})(); + +/******************************************************************************/ + +const getPopupData = async function(tabId, first = false) { + const response = await messaging.send('popupPanel', { + what: 'getPopupData', + tabId, + }); + + cachePopupData(response); + renderOnce(); + renderPopup(); + renderPopupLazy(); // low priority rendering + hashFromPopupData(first); + pollForContentChange(); +}; + +/******************************************************************************/ + +// Popup DOM is assumed to be loaded at this point -- because this script +// is loaded after everything else. + +{ + // Extract the tab id of the page for this popup. If there's no tab id + // specified in the query string, it will default to current tab. + const selfURL = new URL(self.location.href); + const tabId = parseInt(selfURL.searchParams.get('tabId'), 10) || null; + + const nextFrames = async n => { + for ( let i = 0; i < n; i++ ) { + await new Promise(resolve => { + self.requestAnimationFrame(( ) => { resolve(); }); + }); + } + }; + + const setOrientation = async ( ) => { + if ( dom.cl.has(dom.root, 'mobile') ) { + dom.cl.remove(dom.root, 'desktop'); + dom.cl.add(dom.root, 'portrait'); + return; + } + if ( selfURL.searchParams.get('portrait') !== null ) { + dom.cl.remove(dom.root, 'desktop'); + dom.cl.add(dom.root, 'portrait'); + return; + } + if ( popupData.popupPanelOrientation === 'landscape' ) { return; } + if ( popupData.popupPanelOrientation === 'portrait' ) { + dom.cl.remove(dom.root, 'desktop'); + dom.cl.add(dom.root, 'portrait'); + return; + } + if ( dom.cl.has(dom.root, 'desktop') === false ) { return; } + await nextFrames(8); + const main = qs$('#main'); + const firewall = qs$('#firewall'); + const minWidth = (main.offsetWidth + firewall.offsetWidth) / 1.1; + if ( window.innerWidth < minWidth ) { + dom.cl.add(dom.root, 'portrait'); + } + }; + + // The purpose of the following code is to reset to a vertical layout + // should the viewport not be enough wide to accommodate the horizontal + // layout. + // To avoid querying a spurious viewport width -- it happens sometimes, + // somehow -- we delay layout-changing operations to the next paint + // frames. + // Force a layout recalculation by querying the body width. To be + // honest, I have no clue if this makes a difference in the end. + // https://gist.github.com/paulirish/5d52fb081b3570c81e3a + // Use a tolerance proportional to the sum of the width of the panes + // when testing against viewport width. + const checkViewport = async function() { + await setOrientation(); + if ( dom.cl.has(dom.root, 'portrait') ) { + const panes = qs$('#panes'); + const sticky = qs$('#sticky'); + const stickyParent = sticky.parentElement; + if ( stickyParent !== panes ) { + panes.prepend(sticky); + } + } + if ( selfURL.searchParams.get('intab') !== null ) { + dom.cl.add(dom.root, 'intab'); + } + await nextFrames(1); + dom.cl.remove(dom.body, 'loading'); + }; + + getPopupData(tabId, true).then(( ) => { + if ( document.readyState !== 'complete' ) { + dom.on(self, 'load', ( ) => { checkViewport(); }, { once: true }); + } else { + checkViewport(); + } + }); +} + +/******************************************************************************/ + +dom.on('#switch', 'click', toggleNetFilteringSwitch); +dom.on('#gotoZap', 'click', gotoZap); +dom.on('#gotoPick', 'click', gotoPick); +dom.on('#gotoReport', 'click', gotoReport); +dom.on('.hnSwitch', 'click', ev => { toggleHostnameSwitch(ev); }); +dom.on('#saveRules', 'click', saveFirewallRules); +dom.on('#revertRules', 'click', ( ) => { revertFirewallRules(); }); +dom.on('a[href]', 'click', gotoURL); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/redirect-engine.js b/android/app/src/main/assets/extensions/ublock_origin/js/redirect-engine.js new file mode 100644 index 00000000..518dcd3c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/redirect-engine.js @@ -0,0 +1,479 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { LineIterator, orphanizeString } from './text-utils.js'; +import redirectableResources from './redirect-resources.js'; + +/******************************************************************************/ + +const extToMimeMap = new Map([ + [ 'css', 'text/css' ], + [ 'fn', 'fn/javascript' ], // invented mime type for internal use + [ 'gif', 'image/gif' ], + [ 'html', 'text/html' ], + [ 'js', 'text/javascript' ], + [ 'json', 'application/json' ], + [ 'mp3', 'audio/mp3' ], + [ 'mp4', 'video/mp4' ], + [ 'png', 'image/png' ], + [ 'txt', 'text/plain' ], + [ 'xml', 'text/xml' ], +]); + +const typeToMimeMap = new Map([ + [ 'main_frame', 'text/html' ], + [ 'other', 'text/plain' ], + [ 'script', 'text/javascript' ], + [ 'stylesheet', 'text/css' ], + [ 'sub_frame', 'text/html' ], + [ 'xmlhttprequest', 'text/plain' ], +]); + +const validMimes = new Set(extToMimeMap.values()); + +const mimeFromName = name => { + const match = /\.([^.]+)$/.exec(name); + if ( match === null ) { return ''; } + return extToMimeMap.get(match[1]); +}; + +const removeTopCommentBlock = text => { + return text.replace(/^\/\*[\S\s]+?\*\/\s*/g, ''); +}; + +// vAPI.warSecret is optional, it could be absent in some environments, +// i.e. nodejs for example. Probably the best approach is to have the +// "web_accessible_resources secret" added outside by the client of this +// module, but for now I just want to remove an obstacle to modularization. +const warSecret = typeof vAPI === 'object' && vAPI !== null + ? vAPI.warSecret.short + : ( ) => ''; + +const RESOURCES_SELFIE_VERSION = 7; +const RESOURCES_SELFIE_NAME = 'selfie/redirectEngine/resources'; + +/******************************************************************************/ +/******************************************************************************/ + +class RedirectEntry { + constructor() { + this.mime = ''; + this.data = ''; + this.warURL = undefined; + this.params = undefined; + this.requiresTrust = false; + this.world = 'MAIN'; + this.dependencies = []; + } + + // Prevent redirection to web accessible resources when the request is + // of type 'xmlhttprequest', because XMLHttpRequest.responseURL would + // cause leakage of extension id. See: + // - https://stackoverflow.com/a/8056313 + // - https://bugzilla.mozilla.org/show_bug.cgi?id=998076 + // https://www.reddit.com/r/uBlockOrigin/comments/cpxm1v/ + // User-supplied resources may already be base64 encoded. + + toURL(fctxt, asDataURI = false) { + if ( + this.warURL !== undefined && + asDataURI !== true && + fctxt instanceof Object && + fctxt.type !== 'xmlhttprequest' + ) { + const params = []; + const secret = warSecret(); + if ( secret !== '' ) { params.push(`secret=${secret}`); } + if ( this.params !== undefined ) { + for ( const name of this.params ) { + const value = fctxt[name]; + if ( value === undefined ) { continue; } + params.push(`${name}=${encodeURIComponent(value)}`); + } + } + let url = `${this.warURL}`; + if ( params.length !== 0 ) { + url += `?${params.join('&')}`; + } + return url; + } + if ( this.data === undefined ) { return; } + // https://github.com/uBlockOrigin/uBlock-issues/issues/701 + if ( this.data === '' ) { + const mime = typeToMimeMap.get(fctxt.type); + if ( mime === '' ) { return; } + return `data:${mime},`; + } + if ( this.data.startsWith('data:') === false ) { + if ( this.mime.indexOf(';') === -1 ) { + this.data = `data:${this.mime};base64,${btoa(this.data)}`; + } else { + this.data = `data:${this.mime},${this.data}`; + } + } + return this.data; + } + + toContent() { + if ( this.data.startsWith('data:') ) { + const pos = this.data.indexOf(','); + const base64 = this.data.endsWith(';base64', pos); + this.data = this.data.slice(pos + 1); + if ( base64 ) { + this.data = atob(this.data); + } + } + return this.data; + } + + static fromDetails(details) { + const r = new RedirectEntry(); + Object.assign(r, details); + return r; + } +} + +/******************************************************************************/ +/******************************************************************************/ + +class RedirectEngine { + constructor() { + this.aliases = new Map(); + this.resources = new Map(); + this.reset(); + this.modifyTime = Date.now(); + } + + reset() { + } + + freeze() { + } + + tokenToURL( + fctxt, + token, + asDataURI = false + ) { + const entry = this.resources.get(this.aliases.get(token) || token); + if ( entry === undefined ) { return; } + return entry.toURL(fctxt, asDataURI); + } + + tokenToDNR(token) { + const entry = this.resources.get(this.aliases.get(token) || token); + if ( entry === undefined ) { return; } + if ( entry.warURL === undefined ) { return; } + return entry.warURL; + } + + hasToken(token) { + if ( token === 'none' ) { return true; } + const asDataURI = token.charCodeAt(0) === 0x25 /* '%' */; + if ( asDataURI ) { + token = token.slice(1); + } + return this.resources.get(this.aliases.get(token) || token) !== undefined; + } + + tokenRequiresTrust(token) { + const entry = this.resources.get(this.aliases.get(token) || token); + return entry && entry.requiresTrust === true || false; + } + + async toSelfie() { + } + + async fromSelfie() { + return true; + } + + contentFromName(name, mime = '') { + const entry = this.resources.get(this.aliases.get(name) || name); + if ( entry === undefined ) { return; } + if ( entry.mime.startsWith(mime) === false ) { return; } + if ( entry.data === undefined ) { return; } + return { + js: entry.toContent(), + world: entry.world, + dependencies: entry.dependencies.slice(), + }; + } + + // https://github.com/uBlockOrigin/uAssets/commit/deefe8755511 + // Consider 'none' a reserved keyword, to be used to disable redirection. + // https://github.com/uBlockOrigin/uBlock-issues/issues/1419 + // Append newlines to raw text to ensure processing of trailing resource. + + resourcesFromString(text) { + const lineIter = new LineIterator( + removeTopCommentBlock(text) + '\n\n' + ); + const reNonEmptyLine = /\S/; + let fields, encoded, details; + + while ( lineIter.eot() === false ) { + const line = lineIter.next(); + if ( line.startsWith('#') ) { continue; } + if ( line.startsWith('// ') ) { continue; } + + if ( fields === undefined ) { + if ( line === '' ) { continue; } + // Modern parser + if ( line.startsWith('/// ') ) { + const name = line.slice(4).trim(); + fields = [ name, mimeFromName(name) ]; + continue; + } + // Legacy parser + const head = line.trim().split(/\s+/); + if ( head.length !== 2 ) { continue; } + if ( head[0] === 'none' ) { continue; } + let pos = head[1].indexOf(';'); + if ( pos === -1 ) { pos = head[1].length; } + if ( validMimes.has(head[1].slice(0, pos)) === false ) { + continue; + } + encoded = head[1].indexOf(';') !== -1; + fields = head; + continue; + } + + if ( line.startsWith('/// ') ) { + if ( details === undefined ) { + details = []; + } + const [ prop, value ] = line.slice(4).trim().split(/\s+/); + if ( value !== undefined ) { + details.push({ prop, value }); + } + continue; + } + + if ( reNonEmptyLine.test(line) ) { + fields.push(encoded ? line.trim() : line); + continue; + } + + // No more data, add the resource. + const name = this.aliases.get(fields[0]) || fields[0]; + const mime = fields[1]; + const data = orphanizeString( + fields.slice(2).join(encoded ? '' : '\n') + ); + this.resources.set(name, RedirectEntry.fromDetails({ mime, data })); + if ( Array.isArray(details) ) { + const resource = this.resources.get(name); + for ( const { prop, value } of details ) { + switch ( prop ) { + case 'alias': + this.aliases.set(value, name); + break; + case 'world': + if ( /^isolated$/i.test(value) === false ) { break; } + resource.world = 'ISOLATED'; + break; + case 'dependency': + if ( this.resources.has(value) === false ) { break; } + resource.dependencies.push(value); + break; + default: + break; + } + } + } + + fields = undefined; + details = undefined; + } + + this.modifyTime = Date.now(); + } + + loadBuiltinResources(fetcher) { + this.resources = new Map(); + this.aliases = new Map(); + + const fetches = [ + import('/js/resources/scriptlets.js').then(module => { + for ( const scriptlet of module.builtinScriptlets ) { + const details = {}; + details.mime = mimeFromName(scriptlet.name); + details.data = scriptlet.fn.toString(); + for ( const [ k, v ] of Object.entries(scriptlet) ) { + if ( k === 'fn' ) { continue; } + details[k] = v; + } + const entry = RedirectEntry.fromDetails(details); + this.resources.set(details.name, entry); + if ( Array.isArray(details.aliases) === false ) { continue; } + for ( const alias of details.aliases ) { + this.aliases.set(alias, details.name); + } + } + this.modifyTime = Date.now(); + }).catch(reason => { + console.error(reason); + }), + ]; + + const store = (name, data = undefined) => { + const details = redirectableResources.get(name); + const entry = RedirectEntry.fromDetails({ + mime: mimeFromName(name), + data, + warURL: `/web_accessible_resources/${name}`, + params: details.params, + }); + this.resources.set(name, entry); + if ( details.alias === undefined ) { return; } + if ( Array.isArray(details.alias) ) { + for ( const alias of details.alias ) { + this.aliases.set(alias, name); + } + } else { + this.aliases.set(details.alias, name); + } + }; + + const processBlob = (name, blob) => { + return new Promise(resolve => { + const reader = new FileReader(); + reader.onload = ( ) => { + store(name, reader.result); + resolve(); + }; + reader.onabort = reader.onerror = ( ) => { + resolve(); + }; + reader.readAsDataURL(blob); + }); + }; + + const processText = (name, text) => { + store(name, removeTopCommentBlock(text)); + }; + + const process = result => { + const match = /^\/web_accessible_resources\/([^?]+)/.exec(result.url); + if ( match === null ) { return; } + const name = match[1]; + return result.content instanceof Blob + ? processBlob(name, result.content) + : processText(name, result.content); + }; + + for ( const [ name, details ] of redirectableResources ) { + if ( typeof details.data !== 'string' ) { + store(name); + continue; + } + fetches.push( + fetcher(`/web_accessible_resources/${name}`, { + responseType: details.data + }).then( + result => process(result) + ) + ); + } + + return Promise.all(fetches); + } + + getResourceDetails() { + const out = new Map([ + [ 'none', { canInject: false, canRedirect: true, aliasOf: '' } ], + ]); + for ( const [ name, entry ] of this.resources ) { + out.set(name, { + canInject: typeof entry.data === 'string', + canRedirect: entry.warURL !== undefined, + aliasOf: '', + extensionPath: entry.warURL, + }); + } + for ( const [ alias, name ] of this.aliases ) { + const original = out.get(name); + if ( original === undefined ) { continue; } + const aliased = Object.assign({}, original); + aliased.aliasOf = name; + out.set(alias, aliased); + } + return Array.from(out).sort((a, b) => { + return a[0].localeCompare(b[0]); + }); + } + + getTrustedScriptletTokens() { + const out = []; + const isTrustedScriptlet = entry => { + if ( entry.requiresTrust !== true ) { return false; } + if ( entry.warURL !== undefined ) { return false; } + if ( typeof entry.data !== 'string' ) { return false; } + if ( entry.name.endsWith('.js') === false ) { return false; } + return true; + }; + for ( const [ name, entry ] of this.resources ) { + if ( isTrustedScriptlet(entry) === false ) { continue; } + out.push(name.slice(0, -3)); + } + for ( const [ alias, name ] of this.aliases ) { + if ( out.includes(name.slice(0, -3)) === false ) { continue; } + out.push(alias.slice(0, -3)); + } + return out; + } + + selfieFromResources(storage) { + return storage.toCache(RESOURCES_SELFIE_NAME, { + version: RESOURCES_SELFIE_VERSION, + aliases: this.aliases, + resources: this.resources, + }); + } + + async resourcesFromSelfie(storage) { + const selfie = await storage.fromCache(RESOURCES_SELFIE_NAME); + if ( selfie instanceof Object === false ) { return false; } + if ( selfie.version !== RESOURCES_SELFIE_VERSION ) { return false; } + if ( selfie.aliases instanceof Map === false ) { return false; } + if ( selfie.resources instanceof Map === false ) { return false; } + this.aliases = selfie.aliases; + this.resources = selfie.resources; + for ( const [ token, entry ] of this.resources ) { + this.resources.set(token, RedirectEntry.fromDetails(entry)); + } + this.modifyTime = Date.now(); + return true; + } + + invalidateResourcesSelfie(storage) { + storage.remove(RESOURCES_SELFIE_NAME); + } +} + +/******************************************************************************/ + +const redirectEngine = new RedirectEngine(); + +export { redirectEngine }; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/redirect-resources.js b/android/app/src/main/assets/extensions/ublock_origin/js/redirect-resources.js new file mode 100644 index 00000000..f9438339 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/redirect-resources.js @@ -0,0 +1,202 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +// The resources referenced below are found in ./web_accessible_resources/ +// +// The content of the resources which declare a `data` property will be loaded +// in memory, and converted to a suitable internal format depending on the +// type of the loaded data. The `data` property allows for manual injection +// through `+js(...)`, or for redirection to a data: URI when a redirection +// to a web accessible resource is not desirable. + +export default new Map([ + [ '1x1.gif', { + alias: '1x1-transparent.gif', + data: 'blob', + } ], + [ '2x2.png', { + alias: '2x2-transparent.png', + data: 'blob', + } ], + [ '3x2.png', { + alias: '3x2-transparent.png', + data: 'blob', + } ], + [ '32x32.png', { + alias: '32x32-transparent.png', + data: 'blob', + } ], + [ 'amazon_ads.js', { + alias: 'amazon-adsystem.com/aax2/amzn_ads.js', + data: 'text', + } ], + [ 'amazon_apstag.js', { + } ], + [ 'ampproject_v0.js', { + alias: 'ampproject.org/v0.js', + } ], + [ 'adthrive_abd.js', { + data: 'text', + } ], + [ 'chartbeat.js', { + alias: 'static.chartbeat.com/chartbeat.js', + } ], + [ 'click2load.html', { + params: [ 'aliasURL', 'url' ], + } ], + [ 'doubleclick_instream_ad_status.js', { + alias: 'doubleclick.net/instream/ad_status.js', + data: 'text', + } ], + [ 'empty', { + data: 'text', // Important! + } ], + [ 'fingerprint2.js', { + data: 'text', + } ], + [ 'fingerprint3.js', { + data: 'text', + } ], + [ 'google-analytics_analytics.js', { + alias: [ + 'google-analytics.com/analytics.js', + 'googletagmanager_gtm.js', + 'googletagmanager.com/gtm.js' + ], + data: 'text', + } ], + [ 'google-analytics_cx_api.js', { + alias: 'google-analytics.com/cx/api.js', + } ], + [ 'google-analytics_ga.js', { + alias: 'google-analytics.com/ga.js', + data: 'text', + } ], + [ 'google-analytics_inpage_linkid.js', { + alias: 'google-analytics.com/inpage_linkid.js', + } ], + [ 'google-ima.js', { + alias: 'google-ima3', /* adguard compatibility */ + data: 'text', + } ], + [ 'googlesyndication_adsbygoogle.js', { + alias: [ + 'googlesyndication.com/adsbygoogle.js', + 'googlesyndication-adsbygoogle', /* adguard compatibility */ + ], + data: 'text', + } ], + [ 'googletagservices_gpt.js', { + alias: [ + 'googletagservices.com/gpt.js', + 'googletagservices-gpt', /* adguard compatibility */ + ], + data: 'text', + } ], + [ 'hd-main.js', { + } ], + [ 'nitropay_ads.js', { + data: 'text', + } ], + [ 'nobab.js', { + alias: [ 'bab-defuser.js', 'prevent-bab.js' ], + data: 'text', + } ], + [ 'nobab2.js', { + data: 'text', + } ], + [ 'noeval.js', { + data: 'text', + } ], + [ 'noeval-silent.js', { + alias: 'silent-noeval.js', + data: 'text', + } ], + [ 'nofab.js', { + alias: 'fuckadblock.js-3.2.0', + data: 'text', + } ], + [ 'noop-0.1s.mp3', { + alias: [ 'noopmp3-0.1s', 'abp-resource:blank-mp3' ], + data: 'blob', + } ], + [ 'noop-0.5s.mp3', { + } ], + [ 'noop-1s.mp4', { + alias: [ 'noopmp4-1s', 'abp-resource:blank-mp4' ], + data: 'blob', + } ], + [ 'noop.css', { + data: 'text', + } ], + [ 'noop.html', { + alias: 'noopframe', + } ], + [ 'noop.js', { + alias: [ 'noopjs', 'abp-resource:blank-js' ], + data: 'text', + } ], + [ 'noop.json', { + alias: [ 'noopjson' ], + data: 'text', + } ], + [ 'noop.txt', { + alias: 'nooptext', + data: 'text', + } ], + [ 'noop-vast2.xml', { + alias: 'noopvast-2.0', + data: 'text', + } ], + [ 'noop-vast3.xml', { + alias: 'noopvast-3.0', + data: 'text', + } ], + [ 'noop-vast4.xml', { + alias: 'noopvast-4.0', + data: 'text', + } ], + [ 'noop-vmap1.xml', { + alias: [ 'noop-vmap1.0.xml', 'noopvmap-1.0' ], + data: 'text', + } ], + [ 'outbrain-widget.js', { + alias: 'widgets.outbrain.com/outbrain.js', + } ], + [ 'popads.js', { + alias: [ 'popads.net.js', 'prevent-popads-net.js' ], + data: 'text', + } ], + [ 'popads-dummy.js', { + data: 'text', + } ], + [ 'prebid-ads.js', { + data: 'text', + } ], + [ 'scorecardresearch_beacon.js', { + alias: 'scorecardresearch.com/beacon.js', + } ], + [ 'sensors-analytics.js', { + data: 'text', + } ], +]); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/regex-analyzer.js b/android/app/src/main/assets/extensions/ublock_origin/js/regex-analyzer.js new file mode 100644 index 00000000..9d241703 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/regex-analyzer.js @@ -0,0 +1,264 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2020-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +// Depends on: +// https://github.com/foo123/RegexAnalyzer +const RegexAnalyzer = globalThis.Regex && globalThis.Regex.Analyzer || null; + +export function isRE2(reStr) { + if ( RegexAnalyzer === null ) { return true; } + try { + return _isRE2(RegexAnalyzer(reStr, false).tree()); + } catch { + } + return false; +} + +export function tokenizableStrFromRegex(reStr) { + return _literalStrFromRegex(reStr); +} + +export function literalStrFromRegex(reStr) { + let literals = tokenizableStrFromRegex(reStr) + .split(/[\x00\x01]+/) + .sort((a, b) => b.length - a.length); + if ( literals.length > 1 ) { + literals = literals.filter(a => (/^(\.?com|\.?net|www\.?)$/).test(a) === false); + } + return literals[0] || ''; +} + +/******************************************************************************/ + +function _isRE2(node) { + if ( node instanceof Object === false ) { return true; } + if ( node.flags instanceof Object ) { + if ( node.flags.LookAhead === 1 ) { return false; } + if ( node.flags.NegativeLookAhead === 1 ) { return false; } + if ( node.flags.LookBehind === 1 ) { return false; } + if ( node.flags.NegativeLookBehind === 1 ) { return false; } + } + if ( Array.isArray(node.val) ) { + for ( const entry of node.val ) { + if ( _isRE2(entry) === false ) { return false; } + } + } + if ( node.val instanceof Object ) { + return _isRE2(node.val); + } + return true; +} + +/******************************************************************************/ + +function _literalStrFromRegex(reStr) { + if ( RegexAnalyzer === null ) { return ''; } + let s = ''; + try { + s = tokenizableStrFromNode( + RegexAnalyzer(reStr, false).tree() + ); + } catch { + } + // Process optional sequences + const reOptional = /[\x02\x03]+/; + for (;;) { + const match = reOptional.exec(s); + if ( match === null ) { break; } + const left = s.slice(0, match.index); + const middle = match[0]; + const right = s.slice(match.index + middle.length); + s = left; + s += firstCharCodeClass(right) === 1 || firstCharCodeClass(middle) === 1 + ? '\x01' + : '\x00'; + s += lastCharCodeClass(left) === 1 || lastCharCodeClass(middle) === 1 + ? '\x01' + : '\x00'; + s += right; + } + return s; +} + +function firstCharCodeClass(s) { + if ( s.length === 0 ) { return 0; } + const c = s.charCodeAt(0); + if ( c === 1 || c === 3 ) { return 1; } + return reCharCodeClass.test(s.charAt(0)) ? 1 : 0; +} + +function lastCharCodeClass(s) { + const i = s.length - 1; + if ( i === -1 ) { return 0; } + const c = s.charCodeAt(i); + if ( c === 1 || c === 3 ) { return 1; } + return reCharCodeClass.test(s.charAt(i)) ? 1 : 0; +} + +const reCharCodeClass = /[%0-9A-Za-z]/; + +function tokenizableStrFromNode(node) { + switch ( node.type ) { + case 1: /* T_SEQUENCE, 'Sequence' */ { + let s = ''; + for ( let i = 0; i < node.val.length; i++ ) { + s += tokenizableStrFromNode(node.val[i]); + } + return s; + } + case 2: /* T_ALTERNATION, 'Alternation' */ + case 8: /* T_CHARGROUP, 'CharacterGroup' */ { + if ( node.flags.NegativeMatch ) { return '\x01'; } + let firstChar = 0; + let lastChar = 0; + for ( let i = 0; i < node.val.length; i++ ) { + const s = tokenizableStrFromNode(node.val[i]); + if ( firstChar === 0 && firstCharCodeClass(s) === 1 ) { + firstChar = 1; + } + if ( lastChar === 0 && lastCharCodeClass(s) === 1 ) { + lastChar = 1; + } + if ( firstChar === 1 && lastChar === 1 ) { break; } + } + return String.fromCharCode(firstChar, lastChar); + } + case 4: /* T_GROUP, 'Group' */ { + if ( + node.flags.NegativeLookAhead === 1 || + node.flags.NegativeLookBehind === 1 + ) { + return ''; + } + return tokenizableStrFromNode(node.val); + } + case 16: /* T_QUANTIFIER, 'Quantifier' */ { + if ( node.flags.max === 0 ) { return ''; } + const s = tokenizableStrFromNode(node.val); + const first = firstCharCodeClass(s); + const last = lastCharCodeClass(s); + if ( node.flags.min !== 0 ) { + return String.fromCharCode(first, last); + } + return String.fromCharCode(first+2, last+2); + } + case 64: /* T_HEXCHAR, 'HexChar' */ { + if ( + node.flags.Code === '01' || + node.flags.Code === '02' || + node.flags.Code === '03' + ) { + return '\x00'; + } + return node.flags.Char; + } + case 128: /* T_SPECIAL, 'Special' */ { + const flags = node.flags; + if ( + flags.EndCharGroup === 1 || // dangling `]` + flags.EndGroup === 1 || // dangling `)` + flags.EndRepeats === 1 // dangling `}` + ) { + throw new Error('Unmatched bracket'); + } + return flags.MatchEnd === 1 || + flags.MatchStart === 1 || + flags.MatchWordBoundary === 1 + ? '\x00' + : '\x01'; + } + case 256: /* T_CHARS, 'Characters' */ { + for ( let i = 0; i < node.val.length; i++ ) { + if ( firstCharCodeClass(node.val[i]) === 1 ) { + return '\x01'; + } + } + return '\x00'; + } + // Ranges are assumed to always involve token-related characters. + case 512: /* T_CHARRANGE, 'CharacterRange' */ { + return '\x01'; + } + case 1024: /* T_STRING, 'String' */ { + return node.val; + } + case 2048: /* T_COMMENT, 'Comment' */ { + return ''; + } + default: + break; + } + return '\x01'; +} + +/******************************************************************************/ + +export function toHeaderPattern(reStr) { + if ( RegexAnalyzer === null ) { return; } + try { + return _toHeaderPattern(RegexAnalyzer(reStr, false).tree()); + } catch { + } +} + +function _toHeaderPattern(branch, depth = 0) { + switch ( branch.type ) { + case 1: /* T_SEQUENCE, 'Sequence' */ { + let s = ''; + for ( const node of branch.val ) { + const t = _toHeaderPattern(node, depth+1); + if ( t === undefined ) { return; } + s += t; + } + if ( depth === 0 && branch.val.length !== 0 ) { + const first = branch.val[0]; + if ( first.type !== 128 || first.val !== '^' ) { s = `*${s}`; } + const last = branch.val.at(-1); + if ( last.type !== 128 || last.val !== '$' ) { s = `${s}*`; } + } + return s; + } + case 4: /* T_GROUP, 'Group' */ { + if ( + branch.flags.NegativeLookAhead === 1 || + branch.flags.NegativeLookBehind === 1 + ) { + return; + } + return _toHeaderPattern(branch.val, depth+1); + } + case 64: /* T_HEXCHAR, 'HexChar' */ + return branch.flags.Char; + case 128: /* T_SPECIAL, 'Special' */ { + if ( branch.val === '^' ) { return ''; } + if ( branch.val === '$' ) { return ''; } + return; + } + case 1024: /* T_STRING, 'String' */ + return branch.val; + case 2048: /* T_COMMENT, 'Comment' */ + return ''; + default: + break; + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/attribute.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/attribute.js new file mode 100644 index 00000000..a2197ac7 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/attribute.js @@ -0,0 +1,308 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { offIdleFn, onIdleFn } from './utils.js'; +import { registerScriptlet } from './base.js'; +import { runAt } from './run-at.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +export function setAttrFn( + trusted = false, + logPrefix, + selector = '', + attr = '', + value = '', + options = {} +) { + if ( selector === '' ) { return; } + if ( attr === '' ) { return; } + + const safe = safeSelf(); + const copyFrom = trusted === false && /^\[.+\]$/.test(value) + ? value.slice(1, -1) + : ''; + + const extractValue = elem => copyFrom !== '' + ? elem.getAttribute(copyFrom) || '' + : value; + + const applySetAttr = ( ) => { + let elems; + try { + elems = document.querySelectorAll(selector); + } catch { + return false; + } + for ( const elem of elems ) { + const before = elem.getAttribute(attr); + const after = extractValue(elem); + if ( after === before ) { continue; } + if ( after !== '' && /^on/i.test(attr) ) { + if ( attr.toLowerCase() in elem ) { continue; } + } + elem.setAttribute(attr, after); + safe.uboLog(logPrefix, `${attr}="${after}"`); + } + return true; + }; + + let observer, timer; + const onDomChanged = mutations => { + if ( timer !== undefined ) { return; } + let shouldWork = false; + for ( const mutation of mutations ) { + if ( mutation.addedNodes.length === 0 ) { continue; } + for ( const node of mutation.addedNodes ) { + if ( node.nodeType !== 1 ) { continue; } + shouldWork = true; + break; + } + if ( shouldWork ) { break; } + } + if ( shouldWork === false ) { return; } + timer = self.requestAnimationFrame(( ) => { + timer = undefined; + applySetAttr(); + }); + }; + + const start = ( ) => { + if ( applySetAttr() === false ) { return; } + observer = new MutationObserver(onDomChanged); + const root = document.documentElement; + if ( root instanceof self.Node === false ) { return; } + observer.observe(root, { subtree: true, childList: true }); + }; + runAt(( ) => { start(); }, options.runAt || 'idle'); +} +registerScriptlet(setAttrFn, { + name: 'set-attr.fn', + dependencies: [ + runAt, + safeSelf, + ], +}); + +/** + * @scriptlet set-attr + * + * @description + * Sets the specified attribute on the specified elements. This scriptlet runs + * once when the page loads then afterward on DOM mutations. + * + * Reference: https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/set-attr.js + * + * @param selector + * A CSS selector for the elements to target. + * + * @param attr + * The name of the attribute to modify. + * + * @param value + * The new value of the attribute. Supported values: + * - `''`: empty string (default) + * - `true` + * - `false` + * - positive decimal integer 0 <= value < 32768 + * - `[other]`: copy the value from attribute `other` on the same element + * + * */ + +export function setAttr( + selector = '', + attr = '', + value = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('set-attr', selector, attr, value); + const validValues = [ '', 'false', 'true' ]; + if ( validValues.includes(value.toLowerCase()) === false ) { + if ( /^\d+$/.test(value) ) { + const n = parseInt(value, 10); + if ( n >= 32768 ) { return; } + value = `${n}`; + } else if ( /^\[.+\]$/.test(value) === false ) { + return; + } + } + const options = safe.getExtraArgs(Array.from(arguments), 3); + setAttrFn(false, logPrefix, selector, attr, value, options); +} +registerScriptlet(setAttr, { + name: 'set-attr.js', + dependencies: [ + safeSelf, + setAttrFn, + ], + world: 'ISOLATED', +}); + +/** + * @trustedScriptlet trusted-set-attr + * + * @description + * Sets the specified attribute on the specified elements. This scriptlet runs + * once when the page loads then afterward on DOM mutations. + * + * Reference: https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-trusted-scriptlets.md#-%EF%B8%8F-trusted-set-attr + * + * @param selector + * A CSS selector for the elements to target. + * + * @param attr + * The name of the attribute to modify. + * + * @param value + * The new value of the attribute. Since the scriptlet requires a trusted + * source, the value can be anything. + * + * */ + +export function trustedSetAttr( + selector = '', + attr = '', + value = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('trusted-set-attr', selector, attr, value); + const options = safe.getExtraArgs(Array.from(arguments), 3); + setAttrFn(true, logPrefix, selector, attr, value, options); +} +registerScriptlet(trustedSetAttr, { + name: 'trusted-set-attr.js', + requiresTrust: true, + dependencies: [ + safeSelf, + setAttrFn, + ], + world: 'ISOLATED', +}); + +/** + * @scriptlet remove-attr + * + * @description + * Remove one or more attributes from a set of elements. + * + * @param attribute + * The name of the attribute(s) to remove. This can be a list of space- + * separated attribute names. + * + * @param [selector] + * Optional. A CSS selector for the elements to target. Default to + * `[attribute]`, or `[attribute1],[attribute2],...` if more than one + * attribute name is specified. + * + * @param [behavior] + * Optional. Space-separated tokens which modify the default behavior. + * - `asap`: Try to remove the attribute as soon as possible. Default behavior + * is to remove the attribute(s) asynchronously. + * - `stay`: Keep trying to remove the specified attribute(s) on DOM mutations. + * */ + +export function removeAttr( + rawToken = '', + rawSelector = '', + behavior = '' +) { + if ( typeof rawToken !== 'string' ) { return; } + if ( rawToken === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('remove-attr', rawToken, rawSelector, behavior); + const tokens = safe.String_split.call(rawToken, /\s*\|\s*/); + const selector = tokens + .map(a => `${rawSelector}[${CSS.escape(a)}]`) + .join(','); + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Target selector:\n\t${selector}`); + } + const asap = /\basap\b/.test(behavior); + let timerId; + const rmattrAsync = ( ) => { + if ( timerId !== undefined ) { return; } + timerId = onIdleFn(( ) => { + timerId = undefined; + rmattr(); + }, { timeout: 17 }); + }; + const rmattr = ( ) => { + if ( timerId !== undefined ) { + offIdleFn(timerId); + timerId = undefined; + } + try { + const nodes = document.querySelectorAll(selector); + for ( const node of nodes ) { + for ( const attr of tokens ) { + if ( node.hasAttribute(attr) === false ) { continue; } + node.removeAttribute(attr); + safe.uboLog(logPrefix, `Removed attribute '${attr}'`); + } + } + } catch { + } + }; + const mutationHandler = mutations => { + if ( timerId !== undefined ) { return; } + let skip = true; + for ( let i = 0; i < mutations.length && skip; i++ ) { + const { type, addedNodes, removedNodes } = mutations[i]; + if ( type === 'attributes' ) { skip = false; } + for ( let j = 0; j < addedNodes.length && skip; j++ ) { + if ( addedNodes[j].nodeType === 1 ) { skip = false; break; } + } + for ( let j = 0; j < removedNodes.length && skip; j++ ) { + if ( removedNodes[j].nodeType === 1 ) { skip = false; break; } + } + } + if ( skip ) { return; } + asap ? rmattr() : rmattrAsync(); + }; + const start = ( ) => { + rmattr(); + if ( /\bstay\b/.test(behavior) === false ) { return; } + const observer = new MutationObserver(mutationHandler); + observer.observe(document, { + attributes: true, + attributeFilter: tokens, + childList: true, + subtree: true, + }); + }; + runAt(( ) => { start(); }, safe.String_split.call(behavior, /\s+/)); +} +registerScriptlet(removeAttr, { + name: 'remove-attr.js', + aliases: [ + 'ra.js', + ], + dependencies: [ + offIdleFn, + onIdleFn, + runAt, + safeSelf, + ], +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/base.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/base.js new file mode 100644 index 00000000..2c54418a --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/base.js @@ -0,0 +1,38 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +export const registeredScriptlets = []; + +export const registerScriptlet = (fn, details) => { + if ( typeof details !== 'object' ) { + throw new ReferenceError('Missing scriptlet details'); + } + details.fn = fn; + fn.details = details; + if ( Array.isArray(details.dependencies) ) { + details.dependencies.forEach((fn, i, array) => { + if ( typeof fn !== 'function' ) { return; } + array[i] = fn.details.name; + }); + } + registeredScriptlets.push(details); +}; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/cookie.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/cookie.js new file mode 100644 index 00000000..21300bc6 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/cookie.js @@ -0,0 +1,441 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +export function getSafeCookieValuesFn() { + return [ + 'accept', 'reject', + 'accepted', 'rejected', 'notaccepted', + 'allow', 'disallow', 'deny', + 'allowed', 'denied', + 'approved', 'disapproved', + 'checked', 'unchecked', + 'dismiss', 'dismissed', + 'enable', 'disable', + 'enabled', 'disabled', + 'essential', 'nonessential', + 'forbidden', 'forever', + 'hide', 'hidden', + 'necessary', 'required', + 'ok', + 'on', 'off', + 'true', 't', 'false', 'f', + 'yes', 'y', 'no', 'n', + 'all', 'none', 'functional', + 'granted', 'done', + 'decline', 'declined', + 'closed', 'next', 'mandatory', + 'disagree', 'agree', + ]; +} +registerScriptlet(getSafeCookieValuesFn, { + name: 'get-safe-cookie-values.fn', +}); + +/******************************************************************************/ + +export function getAllCookiesFn() { + const safe = safeSelf(); + return safe.String_split.call(document.cookie, /\s*;\s*/).map(s => { + const pos = s.indexOf('='); + if ( pos === 0 ) { return; } + if ( pos === -1 ) { return `${s.trim()}=`; } + const key = s.slice(0, pos).trim(); + const value = s.slice(pos+1).trim(); + return { key, value }; + }).filter(s => s !== undefined); +} +registerScriptlet(getAllCookiesFn, { + name: 'get-all-cookies.fn', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ + +export function getCookieFn( + name = '' +) { + const safe = safeSelf(); + for ( const s of safe.String_split.call(document.cookie, /\s*;\s*/) ) { + const pos = s.indexOf('='); + if ( pos === -1 ) { continue; } + if ( s.slice(0, pos) !== name ) { continue; } + return s.slice(pos+1).trim(); + } +} +registerScriptlet(getCookieFn, { + name: 'get-cookie.fn', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ + +export function setCookieFn( + trusted = false, + name = '', + value = '', + expires = '', + path = '', + options = {}, +) { + // https://datatracker.ietf.org/doc/html/rfc2616#section-2.2 + // https://github.com/uBlockOrigin/uBlock-issues/issues/2777 + if ( trusted === false && /[^!#$%&'*+\-.0-9A-Z[\]^_`a-z|~]/.test(name) ) { + name = encodeURIComponent(name); + } + // https://datatracker.ietf.org/doc/html/rfc6265#section-4.1.1 + // The characters [",] are given a pass from the RFC requirements because + // apparently browsers do not follow the RFC to the letter. + if ( /[^ -:<-[\]-~]/.test(value) ) { + value = encodeURIComponent(value); + } + + const cookieBefore = getCookieFn(name); + if ( cookieBefore !== undefined && options.dontOverwrite ) { return; } + if ( cookieBefore === value && options.reload ) { return; } + + const cookieParts = [ name, '=', value ]; + if ( expires !== '' ) { + cookieParts.push('; expires=', expires); + } + + if ( path === '' ) { path = '/'; } + else if ( path === 'none' ) { path = ''; } + if ( path !== '' && path !== '/' ) { return; } + if ( path === '/' ) { + cookieParts.push('; path=/'); + } + + if ( trusted ) { + if ( options.domain ) { + let domain = options.domain; + if ( /^\/.+\//.test(domain) ) { + const baseURL = new URL(document.baseURI); + const reDomain = new RegExp(domain.slice(1, -1)); + const match = reDomain.exec(baseURL.hostname); + domain = match ? match[0] : undefined; + } + if ( domain ) { + cookieParts.push(`; domain=${domain}`); + } + } + cookieParts.push('; Secure'); + } else if ( /^__(Host|Secure)-/.test(name) ) { + cookieParts.push('; Secure'); + } + + try { + document.cookie = cookieParts.join(''); + } catch { + } + + const done = getCookieFn(name) === value; + if ( done && options.reload ) { + window.location.reload(); + } + + return done; +} +registerScriptlet(setCookieFn, { + name: 'set-cookie.fn', + dependencies: [ + getCookieFn, + ], +}); + +/** + * @scriptlet set-cookie + * + * @description + * Set a cookie to a safe value. + * + * @param name + * The name of the cookie to set. + * + * @param value + * The value of the cookie to set. Must be a safe value. Unsafe values will be + * ignored and no cookie will be set. See getSafeCookieValuesFn() helper above. + * + * @param [path] + * Optional. The path of the cookie to set. Default to `/`. + * + * Reference: + * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/set-cookie.js + * */ + +export function setCookie( + name = '', + value = '', + path = '' +) { + if ( name === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('set-cookie', name, value, path); + const normalized = value.toLowerCase(); + const match = /^("?)(.+)\1$/.exec(normalized); + const unquoted = match && match[2] || normalized; + const validValues = getSafeCookieValuesFn(); + if ( validValues.includes(unquoted) === false ) { + if ( /^-?\d+$/.test(unquoted) === false ) { return; } + const n = parseInt(value, 10) || 0; + if ( n < -32767 || n > 32767 ) { return; } + } + + const done = setCookieFn( + false, + name, + value, + '', + path, + safe.getExtraArgs(Array.from(arguments), 3) + ); + + if ( done ) { + safe.uboLog(logPrefix, 'Done'); + } +} +registerScriptlet(setCookie, { + name: 'set-cookie.js', + world: 'ISOLATED', + dependencies: [ + getSafeCookieValuesFn, + safeSelf, + setCookieFn, + ], +}); + +// For compatibility with AdGuard +export function setCookieReload(name, value, path, ...args) { + setCookie(name, value, path, 'reload', '1', ...args); +} +registerScriptlet(setCookieReload, { + name: 'set-cookie-reload.js', + world: 'ISOLATED', + dependencies: [ + setCookie, + ], +}); + +/** + * @trustedScriptlet trusted-set-cookie + * + * @description + * Set a cookie to any value. This scriptlet can be used only from a trusted + * source. + * + * @param name + * The name of the cookie to set. + * + * @param value + * The value of the cookie to set. Must be a safe value. Unsafe values will be + * ignored and no cookie will be set. See getSafeCookieValuesFn() helper above. + * + * @param [offsetExpiresSec] + * Optional. The path of the cookie to set. Default to `/`. + * + * @param [path] + * Optional. The path of the cookie to set. Default to `/`. + * + * Reference: + * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/set-cookie.js + * */ + +export function trustedSetCookie( + name = '', + value = '', + offsetExpiresSec = '', + path = '' +) { + if ( name === '' ) { return; } + + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('set-cookie', name, value, path); + const time = new Date(); + + if ( value.includes('$now$') ) { + value = value.replaceAll('$now$', time.getTime()); + } + if ( value.includes('$currentDate$') ) { + value = value.replaceAll('$currentDate$', time.toUTCString()); + } + if ( value.includes('$currentISODate$') ) { + value = value.replaceAll('$currentISODate$', time.toISOString()); + } + + let expires = ''; + if ( offsetExpiresSec !== '' ) { + if ( offsetExpiresSec === '1day' ) { + time.setDate(time.getDate() + 1); + } else if ( offsetExpiresSec === '1year' ) { + time.setFullYear(time.getFullYear() + 1); + } else { + if ( /^\d+$/.test(offsetExpiresSec) === false ) { return; } + time.setSeconds(time.getSeconds() + parseInt(offsetExpiresSec, 10)); + } + expires = time.toUTCString(); + } + + const done = setCookieFn( + true, + name, + value, + expires, + path, + safeSelf().getExtraArgs(Array.from(arguments), 4) + ); + + if ( done ) { + safe.uboLog(logPrefix, 'Done'); + } +} +registerScriptlet(trustedSetCookie, { + name: 'trusted-set-cookie.js', + requiresTrust: true, + world: 'ISOLATED', + dependencies: [ + safeSelf, + setCookieFn, + ], +}); + +// For compatibility with AdGuard +export function trustedSetCookieReload(name, value, offsetExpiresSec, path, ...args) { + trustedSetCookie(name, value, offsetExpiresSec, path, 'reload', '1', ...args); +} +registerScriptlet(trustedSetCookieReload, { + name: 'trusted-set-cookie-reload.js', + requiresTrust: true, + world: 'ISOLATED', + dependencies: [ + trustedSetCookie, + ], +}); + +/** + * @scriptlet remove-cookie + * + * @description + * Removes current site cookies specified by name. The removal operation occurs + * immediately when the scriptlet is injected, then when the page is unloaded. + * + * @param needle + * A string or a regex matching the name of the cookie(s) to remove. + * + * @param ['when', token] + * Vararg, optional. The parameter following 'when' tells when extra removal + * operations should take place. + * - `scroll`: when the page is scrolled + * - `keydown`: when a keyboard touch is pressed + * + * */ + +export function removeCookie( + needle = '' +) { + if ( typeof needle !== 'string' ) { return; } + const safe = safeSelf(); + const reName = safe.patternToRegex(needle); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 1); + const throttle = (fn, ms = 500) => { + if ( throttle.timer !== undefined ) { return; } + throttle.timer = setTimeout(( ) => { + throttle.timer = undefined; + fn(); + }, ms); + }; + const baseURL = new URL(document.baseURI); + let targetDomain = extraArgs.domain; + if ( targetDomain && /^\/.+\//.test(targetDomain) ) { + const reDomain = new RegExp(targetDomain.slice(1, -1)); + const match = reDomain.exec(baseURL.hostname); + targetDomain = match ? match[0] : undefined; + } + const remove = ( ) => { + safe.String_split.call(document.cookie, ';').forEach(cookieStr => { + const pos = cookieStr.indexOf('='); + if ( pos === -1 ) { return; } + const cookieName = cookieStr.slice(0, pos).trim(); + if ( reName.test(cookieName) === false ) { return; } + const part1 = cookieName + '='; + const part2a = `; domain=${baseURL.hostname}`; + const part2b = `; domain=.${baseURL.hostname}`; + let part2c, part2d; + if ( targetDomain ) { + part2c = `; domain=${targetDomain}`; + part2d = `; domain=.${targetDomain}`; + } else if ( document.domain ) { + const domain = document.domain; + if ( domain !== baseURL.hostname ) { + part2c = `; domain=.${domain}`; + } + if ( domain.startsWith('www.') ) { + part2d = `; domain=${domain.replace('www', '')}`; + } + } + const part3 = '; path=/'; + const part4 = '; Max-Age=-1000; expires=Thu, 01 Jan 1970 00:00:00 GMT'; + document.cookie = part1 + part4; + document.cookie = part1 + part2a + part4; + document.cookie = part1 + part2b + part4; + document.cookie = part1 + part3 + part4; + document.cookie = part1 + part2a + part3 + part4; + document.cookie = part1 + part2b + part3 + part4; + if ( part2c !== undefined ) { + document.cookie = part1 + part2c + part3 + part4; + } + if ( part2d !== undefined ) { + document.cookie = part1 + part2d + part3 + part4; + } + }); + }; + remove(); + window.addEventListener('beforeunload', remove); + if ( typeof extraArgs.when !== 'string' ) { return; } + const supportedEventTypes = [ 'scroll', 'keydown' ]; + const eventTypes = safe.String_split.call(extraArgs.when, /\s/); + for ( const type of eventTypes ) { + if ( supportedEventTypes.includes(type) === false ) { continue; } + document.addEventListener(type, ( ) => { + throttle(remove); + }, { passive: true }); + } +} +registerScriptlet(removeCookie, { + name: 'remove-cookie.js', + aliases: [ + 'cookie-remover.js', + ], + world: 'ISOLATED', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/create-html.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/create-html.js new file mode 100644 index 00000000..33b5a99f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/create-html.js @@ -0,0 +1,143 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2025-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { registerScriptlet } from './base.js'; +import { runAt } from './run-at.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +/** + * @scriptlet trusted-create-html + * + * @description + * Element(s) from a parsed HTML string are added as child element(s) to a + * specific parent element in the DOM. + * + * @param parent + * A CSS selector identifying the element to which created element(s) will be + * added. + * + * @param html + * An HTML string to be parsed using DOMParser, and which resulting elements + * are to be added as child element(s). + * + * @param duration + * Optional. If specified, the time in ms after which the added elements will + * be removed. No removal will occur if not specified. + * + * */ + +function trustedCreateHTML( + parentSelector, + htmlStr = '', + durationStr = '' +) { + if ( parentSelector === '' ) { return; } + if ( htmlStr === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('trusted-create-html', parentSelector, htmlStr, durationStr); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); + // We do not want to recursively create elements + self.trustedCreateHTML = true; + let ancestor = self.frameElement; + while ( ancestor ) { + const doc = ancestor.ownerDocument; + if ( doc === null ) { break; } + const win = doc.defaultView; + if ( win === null ) { break; } + if ( win.trustedCreateHTML ) { return; } + ancestor = ancestor.frameElement; + } + const duration = parseInt(durationStr, 10); + const domParser = new DOMParser(); + const externalDoc = domParser.parseFromString(htmlStr, 'text/html'); + const toAppend = []; + while ( externalDoc.body.firstChild !== null ) { + toAppend.push(document.adoptNode(externalDoc.body.firstChild)); + } + if ( toAppend.length === 0 ) { return; } + const toRemove = []; + const remove = ( ) => { + for ( const node of toRemove ) { + if ( node.parentNode === null ) { continue; } + node.parentNode.removeChild(node); + } + safe.uboLog(logPrefix, 'Node(s) removed'); + }; + const appendOne = (target, nodes) => { + for ( const node of nodes ) { + target.append(node); + if ( isNaN(duration) ) { continue; } + toRemove.push(node); + } + }; + const append = ( ) => { + const targets = document.querySelectorAll(parentSelector); + if ( targets.length === 0 ) { return false; } + const limit = Math.min(targets.length, extraArgs.limit || 1) - 1; + for ( let i = 0; i < limit; i++ ) { + appendOne(targets[i], toAppend.map(a => a.cloneNode(true))); + } + appendOne(targets[limit], toAppend); + safe.uboLog(logPrefix, 'Node(s) appended'); + if ( toRemove.length === 0 ) { return true; } + setTimeout(remove, duration); + return true; + }; + const start = ( ) => { + if ( append() ) { return; } + const observer = new MutationObserver(( ) => { + if ( append() === false ) { return; } + observer.disconnect(); + }); + const observerOptions = { + childList: true, + subtree: true, + }; + if ( /[#.[]/.test(parentSelector) ) { + observerOptions.attributes = true; + if ( parentSelector.includes('[') === false ) { + observerOptions.attributeFilter = []; + if ( parentSelector.includes('#') ) { + observerOptions.attributeFilter.push('id'); + } + if ( parentSelector.includes('.') ) { + observerOptions.attributeFilter.push('class'); + } + } + } + observer.observe(document, observerOptions); + }; + runAt(start, extraArgs.runAt || 'loading'); +} +registerScriptlet(trustedCreateHTML, { + name: 'trusted-create-html.js', + requiresTrust: true, + dependencies: [ + runAt, + safeSelf, + ], + world: 'ISOLATED', +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/href-sanitizer.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/href-sanitizer.js new file mode 100644 index 00000000..3be7066f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/href-sanitizer.js @@ -0,0 +1,172 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { onIdleFn } from './utils.js'; +import { registerScriptlet } from './base.js'; +import { runAt } from './run-at.js'; +import { safeSelf } from './safe-self.js'; +import { urlSkip } from '../urlskip.js'; + +/******************************************************************************/ + +registerScriptlet(urlSkip, { + name: 'urlskip.fn', +}); + +/** + * @scriptlet href-sanitizer + * + * @description + * Set the `href` attribute to a value found in the DOM at, or below the + * targeted `a` element, and optionally with transformation steps. + * + * @param selector + * A plain CSS selector for elements which `href` property must be sanitized. + * + * @param source + * One or more tokens to lookup the source of the `href` property, and + * optionally the transformation steps to perform: + * - `text`: Use the text content of the element as the URL + * - `[name]`: Use the value of the attribute `name` as the URL + * - Transformation steps: see `urlskip` documentation + * + * If `text` or `[name]` is not present, the URL will be the value of `href` + * attribute. + * + * @example + * `example.org##+js(href-sanitizer, a)` + * `example.org##+js(href-sanitizer, a[title], [title])` + * `example.org##+js(href-sanitizer, a[href*="/away.php?to="], ?to)` + * `example.org##+js(href-sanitizer, a[href*="/redirect"], ?url ?url -base64)` + * + * */ + +function hrefSanitizer( + selector = '', + source = '' +) { + if ( typeof selector !== 'string' ) { return; } + if ( selector === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('href-sanitizer', selector, source); + if ( source === '' ) { source = 'text'; } + const sanitizeCopycats = (href, text) => { + let elems = []; + try { + elems = document.querySelectorAll(`a[href="${href}"`); + } + catch { + } + for ( const elem of elems ) { + elem.setAttribute('href', text); + } + return elems.length; + }; + const validateURL = text => { + if ( typeof text !== 'string' ) { return ''; } + if ( text === '' ) { return ''; } + if ( /[\x00-\x20\x7f]/.test(text) ) { return ''; } + try { + const url = new URL(text, document.location); + return url.href; + } catch { + } + return ''; + }; + const extractURL = (elem, source) => { + if ( /^\[.*\]$/.test(source) ) { + return elem.getAttribute(source.slice(1,-1).trim()) || ''; + } + if ( source === 'text' ) { + return elem.textContent + .replace(/^[^\x21-\x7e]+/, '') // remove leading invalid characters + .replace(/[^\x21-\x7e]+$/, ''); // remove trailing invalid characters + } + const steps = source.replace(/(\S)\?/g, '\\1 ?').split(/\s+/); + const url = urlSkip(elem.href, false, steps); + if ( url === undefined ) { return; } + return url.replace(/ /g, '%20'); + }; + const sanitize = ( ) => { + let elems = []; + try { + elems = document.querySelectorAll(selector); + } + catch { + return false; + } + for ( const elem of elems ) { + if ( elem.localName !== 'a' ) { continue; } + if ( elem.hasAttribute('href') === false ) { continue; } + const href = elem.getAttribute('href'); + const text = extractURL(elem, source); + const hrefAfter = validateURL(text); + if ( hrefAfter === '' ) { continue; } + if ( hrefAfter === href ) { continue; } + elem.setAttribute('href', hrefAfter); + const count = sanitizeCopycats(href, hrefAfter); + safe.uboLog(logPrefix, `Sanitized ${count+1} links to\n${hrefAfter}`); + } + return true; + }; + let observer, timer; + const onDomChanged = mutations => { + if ( timer !== undefined ) { return; } + let shouldSanitize = false; + for ( const mutation of mutations ) { + if ( mutation.addedNodes.length === 0 ) { continue; } + for ( const node of mutation.addedNodes ) { + if ( node.nodeType !== 1 ) { continue; } + shouldSanitize = true; + break; + } + if ( shouldSanitize ) { break; } + } + if ( shouldSanitize === false ) { return; } + timer = onIdleFn(( ) => { + timer = undefined; + sanitize(); + }); + }; + const start = ( ) => { + if ( sanitize() === false ) { return; } + observer = new MutationObserver(onDomChanged); + observer.observe(document.body, { + subtree: true, + childList: true, + }); + }; + runAt(( ) => { start(); }, 'interactive'); +} +registerScriptlet(hrefSanitizer, { + name: 'href-sanitizer.js', + world: 'ISOLATED', + aliases: [ + 'urlskip.js', + ], + dependencies: [ + onIdleFn, + runAt, + safeSelf, + urlSkip, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/json-edit.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/json-edit.js new file mode 100644 index 00000000..f45be349 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/json-edit.js @@ -0,0 +1,1512 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { + collateFetchArgumentsFn, + lookupElementsFn, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, + sleepFn, + trapPropertyFn, +} from './utils.js'; + +import { JSONPath } from './shared.js'; +import { proxyApplyFn } from './proxy-apply.js'; +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ +/******************************************************************************/ + +function editOutboundObjectFn( + trusted = false, + propChain = '', + jsonq = '', +) { + if ( propChain === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}edit-outbound-object`, + propChain, + jsonq + ); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + proxyApplyFn(propChain, function(context) { + const obj = context.reflect(); + const objAfter = jsonp.apply(obj); + if ( objAfter === undefined ) { return obj; } + safe.uboLog(logPrefix, 'Edited'); + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `After edit:\n${safe.JSON_stringify(objAfter, null, 2)}`); + } + return objAfter; + }); +} +registerScriptlet(editOutboundObjectFn, { + name: 'edit-outbound-object.fn', + dependencies: [ + JSONPath, + proxyApplyFn, + safeSelf, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet edit-outbound-object-.js + * + * @description + * Prune properties from an object returned by a specific method. + * Properties can only be removed. + * + * @param propChain + * Property chain of the method to trap. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * */ + +function editOutboundObject(propChain = '', jsonq = '') { + editOutboundObjectFn(false, propChain, jsonq); +} +registerScriptlet(editOutboundObject, { + name: 'edit-outbound-object.js', + dependencies: [ + editOutboundObjectFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-edit-outbound-object.js + * + * @description + * Edit properties of an object returned by a specific method. + * Properties can be assigned new values. + * + * @param propChain + * Property chain of the method to trap. + * +* @param jsonq + * A uBO-flavored JSONPath query. + * + * */ + +function trustedEditOutboundObject(propChain = '', jsonq = '') { + editOutboundObjectFn(true, propChain, jsonq); +} +registerScriptlet(trustedEditOutboundObject, { + name: 'trusted-edit-outbound-object.js', + requiresTrust: true, + dependencies: [ + editOutboundObjectFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ +/** + * @scriptlet json-edit.js + * + * @description + * Edit object generated through JSON.parse(). + * Properties can only be removed. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * */ + +function jsonEdit(jsonq = '') { + editOutboundObjectFn(false, 'JSON.parse', jsonq); +} +registerScriptlet(jsonEdit, { + name: 'json-edit.js', + dependencies: [ + editOutboundObjectFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-json-edit.js + * + * @description + * Edit object generated through JSON.parse(). + * Properties can be assigned new values. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * */ + +function trustedJsonEdit(jsonq = '') { + editOutboundObjectFn(true, 'JSON.parse', jsonq); +} +registerScriptlet(trustedJsonEdit, { + name: 'trusted-json-edit.js', + requiresTrust: true, + dependencies: [ + editOutboundObjectFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ + +function editInboundObjectFn( + trusted = false, + propChain = '', + argPosRaw = '', + jsonq = '', +) { + if ( propChain === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}edit-inbound-object`, + propChain, + jsonq + ); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const argPos = parseInt(argPosRaw, 10); + if ( isNaN(argPos) ) { return; } + const getArgPos = args => { + if ( Array.isArray(args) === false ) { return; } + if ( argPos >= 0 ) { + if ( args.length <= argPos ) { return; } + return argPos; + } + if ( args.length < -argPos ) { return; } + return args.length + argPos; + }; + const editObj = obj => { + let clone; + try { + clone = safe.JSON_parse(safe.JSON_stringify(obj)); + } catch { + } + if ( typeof clone !== 'object' || clone === null ) { return; } + const objAfter = jsonp.apply(clone); + if ( objAfter === undefined ) { return; } + safe.uboLog(logPrefix, 'Edited'); + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `After edit:\n${safe.JSON_stringify(objAfter, null, 2)}`); + } + return objAfter; + }; + proxyApplyFn(propChain, function(context) { + const i = getArgPos(context.callArgs); + if ( i !== undefined ) { + const obj = editObj(context.callArgs[i]); + if ( obj ) { + context.callArgs[i] = obj; + } + } + return context.reflect(); + }); +} +registerScriptlet(editInboundObjectFn, { + name: 'edit-inbound-object.fn', + dependencies: [ + JSONPath, + proxyApplyFn, + safeSelf, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet edit-inbound-object.js + * + * @description + * Prune properties from an object passed as argument to a specific method. + * Properties can only be removed. + * + * @param propChain + * Property chain of the method to trap. + * + * @param argPos + * 0-based position of the argument. Use negative integer for position relative + * to the end. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * */ + +function editInboundObject(propChain = '', argPos = '', jsonq = '') { + editInboundObjectFn(false, propChain, argPos, jsonq); +} +registerScriptlet(editInboundObject, { + name: 'edit-inbound-object.js', + dependencies: [ + editInboundObjectFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-edit-inbound-object.js + * + * @description + * Edit properties of an object passed as argument to a specific method. + * Properties can be assigned new values. + * + * @param propChain + * Property chain of the method to trap. + * + * @param argPos + * 0-based position of the argument. Use negative integer for position relative + * to the end. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * */ + +function trustedEditInboundObject(propChain = '', argPos = '', jsonq = '') { + editInboundObjectFn(true, propChain, argPos, jsonq); +} +registerScriptlet(trustedEditInboundObject, { + name: 'trusted-edit-inbound-object.js', + requiresTrust: true, + dependencies: [ + editInboundObjectFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ + +function editThisObjectFn( + trusted = false, + propChain = '', + jsonq = '', + order = '' +) { + if ( propChain === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}edit-this-object`, + propChain, + jsonq + ); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const editObj = objBefore => { + const objAfter = jsonp.apply(objBefore); + if ( objAfter === undefined ) { return; } + safe.uboLog(logPrefix, 'Edited'); + if ( safe.logLevel <= 1 ) { return; } + safe.uboLog(logPrefix, `After edit:\n${safe.JSON_stringify(objAfter, null, 2)}`); + }; + proxyApplyFn(propChain, function(context) { + const { thisArg } = context; + let r; + if ( order === 'after' ) { + r = context.reflect(); + } + editObj(thisArg); + if ( order !== 'after' ) { + r = context.reflect(); + } + return r; + }); +} +registerScriptlet(editThisObjectFn, { + name: 'edit-this-object.fn', + dependencies: [ + JSONPath, + proxyApplyFn, + safeSelf, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet edit-this-object.js + * + * @description + * Prune properties from an object through one of the object's own method. + * Properties can only be removed. + * + * @param propChain + * Property chain of the method to trap. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param order + * If set to `after`, the `this` object will be edited after the trapped method + * is called. By default the `this` object is edited before calling the trapped + * method. + * + * */ + +function editThisObject(...args) { + editThisObjectFn(false, ...args); +} +registerScriptlet(editThisObject, { + name: 'edit-this-object.js', + dependencies: [ + editThisObjectFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-edit-this-object.js + * + * @description + * Edit properties of an object through one of the object's own method. + * Properties can be assigned new values. + * + * @param propChain + * Property chain of the method to trap. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param order + * If set to `after`, the `this` object will be edited after the trapped method + * is called. By default the `this` object is edited before calling the trapped + * method. + * + * */ + +function trustedEditThisObject(...args) { + editThisObjectFn(true, ...args); +} +registerScriptlet(trustedEditThisObject, { + name: 'trusted-edit-this-object.js', + requiresTrust: true, + dependencies: [ + editThisObjectFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ + +function editObjectOnGetterFn( + trusted = false, + propChain = '', + jsonq = '', +) { + if ( propChain === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}edit-object-on-getter`, + propChain, + jsonq + ); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const editObj = objBefore => { + const objAfter = jsonp.apply(objBefore); + if ( objAfter === undefined ) { return; } + safe.uboLog(logPrefix, 'Edited'); + if ( safe.logLevel <= 1 ) { return; } + safe.uboLog(logPrefix, `After edit:\n${safe.JSON_stringify(objAfter, null, 2)}`); + }; + let currentValue = trapPropertyFn(propChain, { + get: function() { + if ( currentValue instanceof Object ) { + editObj(currentValue); + } + return currentValue; + }, + set: function(a) { + currentValue = a; + } + }); +} +registerScriptlet(editObjectOnGetterFn, { + name: 'edit-object-on-getter.fn', + dependencies: [ + JSONPath, + safeSelf, + trapPropertyFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet edit-object-on-getter.js + * + * @description + * Prune properties from an object on read access. + * Properties can only be removed. + * + * @param propChain + * Property chain of the property to trap. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * */ + +function editObjectOnGetter(...args) { + editObjectOnGetterFn(false, ...args); +} +registerScriptlet(editObjectOnGetter, { + name: 'edit-object-on-getter.js', + dependencies: [ + editObjectOnGetterFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-edit-object-on-getter.js + * + * @description + * Edit properties of an object on read access. + * Properties can be assigned new values. + * + * @param propChain + * Property chain of the property to trap. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * */ + +function trustedEditObjectOnGetter(...args) { + editObjectOnGetterFn(true, ...args); +} +registerScriptlet(trustedEditObjectOnGetter, { + name: 'trusted-edit-object-on-getter.js', + requiresTrust: true, + dependencies: [ + editObjectOnGetterFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ + +function editObjectOnSetterFn( + trusted = false, + propChain = '', + jsonq = '', +) { + if ( propChain === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}edit-object-on-setter`, + propChain, + jsonq + ); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const editObj = objBefore => { + const objAfter = jsonp.apply(objBefore); + if ( objAfter === undefined ) { return; } + safe.uboLog(logPrefix, 'Edited'); + if ( safe.logLevel <= 1 ) { return; } + safe.uboLog(logPrefix, `After edit:\n${safe.JSON_stringify(objAfter, null, 2)}`); + }; + let currentValue = trapPropertyFn(propChain, { + get: function() { + return currentValue; + }, + set: function(a) { + currentValue = a; + if ( currentValue instanceof Object ) { + editObj(currentValue); + } + } + }); + if ( currentValue instanceof Object ) { + editObj(currentValue); + } +} +registerScriptlet(editObjectOnSetterFn, { + name: 'edit-object-on-setter.fn', + dependencies: [ + JSONPath, + safeSelf, + trapPropertyFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet edit-object-on-setter.js + * + * @description + * Prune properties from an object on write access. + * Properties can only be removed. + * + * @param propChain + * Property chain of the property to trap. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * */ + +function editObjectOnSetter(...args) { + editObjectOnSetterFn(false, ...args); +} +registerScriptlet(editObjectOnSetter, { + name: 'edit-object-on-setter.js', + dependencies: [ + editObjectOnSetterFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-edit-object-on-setter.js + * + * @description + * Edit properties of an object on write access. + * Properties can be assigned new values. + * + * @param propChain + * Property chain of the property to trap. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * */ + +function trustedEditObjectOnSetter(...args) { + editObjectOnSetterFn(true, ...args); +} +registerScriptlet(trustedEditObjectOnSetter, { + name: 'trusted-edit-object-on-setter.js', + requiresTrust: true, + dependencies: [ + editObjectOnSetterFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ + +async function editElementObjectFn( + trusted = false, + selector = '', + jsonq = '', + timeout = '' +) { + if ( selector === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}edit-element-object`, + selector, jsonq, timeout + ); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const process = elems => { + for ( const elem of elems ) { + const r = jsonp.apply(elem); + if ( r === undefined ) { continue; } + safe.uboLog(logPrefix, 'Edited'); + } + }; + const until = timeout !== '' ? Date.now() + parseInt(timeout, 10) : 0; + do { + const r = lookupElementsFn(selector, until); + if ( Array.isArray(r) ) { + process(r); + } else if ( r instanceof Promise ) { + const elems = await r; + process(elems); + } + await sleepFn(); + } while ( Date.now() < until ); +} +registerScriptlet(editElementObjectFn, { + name: 'edit-element-object.fn', + dependencies: [ + JSONPath, + lookupElementsFn, + safeSelf, + sleepFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet edit-element-object.js + * + * @description + * Prune properties of one or more elements matching a specific selector. + * Properties can only be removed. + * + * @param selector + * The selector used to locate the elements on which the JSONPath query will + * be applied. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param timeout + * The maximum time (in milliseconds) to wait for matching elements before + * stopping. Defaults to 0, which executes a single lookup attempt without + * waiting. + * + * */ + +function editElementObject(...args) { + editElementObjectFn(false, ...args); +} +registerScriptlet(editElementObject, { + name: 'edit-element-object.js', + dependencies: [ + editElementObjectFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-element-this-object.js + * + * @description + * Edit properties of one or more elements matching a specific selector. + * Properties can be assigned new values. + * + * @param selector + * The selector used to locate the elements on which the JSONPath query will + * be applied. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param timeout + * The maximum time (in milliseconds) to wait for matching elements before + * stopping. Defaults to 0, which executes a single lookup attempt without + * waiting. + * + * */ + +function trustedEditElementObject(...args) { + editElementObjectFn(true, ...args); +} +registerScriptlet(trustedEditElementObject, { + name: 'trusted-edit-element-object.js', + requiresTrust: true, + dependencies: [ + editElementObjectFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ + +function jsonEditXhrResponseFn(trusted, jsonq = '') { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}json-edit-xhr-response`, + jsonq + ); + const xhrInstances = new WeakMap(); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); + const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url'); + self.XMLHttpRequest = class extends self.XMLHttpRequest { + open(method, url, ...args) { + const xhrDetails = { method, url }; + const matched = propNeedles.size === 0 || + matchObjectPropertiesFn(propNeedles, xhrDetails); + if ( matched ) { + if ( safe.logLevel > 1 && Array.isArray(matched) ) { + safe.uboLog(logPrefix, `Matched "propsToMatch":\n\t${matched.join('\n\t')}`); + } + xhrInstances.set(this, xhrDetails); + } + return super.open(method, url, ...args); + } + get response() { + const innerResponse = super.response; + const xhrDetails = xhrInstances.get(this); + if ( xhrDetails === undefined ) { return innerResponse; } + const responseLength = typeof innerResponse === 'string' + ? innerResponse.length + : undefined; + if ( xhrDetails.lastResponseLength !== responseLength ) { + xhrDetails.response = undefined; + xhrDetails.lastResponseLength = responseLength; + } + if ( xhrDetails.response !== undefined ) { + return xhrDetails.response; + } + let obj; + if ( typeof innerResponse === 'object' ) { + obj = innerResponse; + } else if ( typeof innerResponse === 'string' ) { + try { obj = safe.JSON_parse(innerResponse); } catch { } + } + if ( typeof obj !== 'object' || obj === null ) { + return (xhrDetails.response = innerResponse); + } + const objAfter = jsonp.apply(obj); + if ( objAfter === undefined ) { + return (xhrDetails.response = innerResponse); + } + safe.uboLog(logPrefix, 'Edited'); + const outerResponse = typeof innerResponse === 'string' + ? JSONPath.toJSON(objAfter, safe.JSON_stringify) + : objAfter; + return (xhrDetails.response = outerResponse); + } + get responseText() { + const response = this.response; + return typeof response !== 'string' + ? super.responseText + : response; + } + }; +} +registerScriptlet(jsonEditXhrResponseFn, { + name: 'json-edit-xhr-response.fn', + dependencies: [ + JSONPath, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, + safeSelf, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet json-edit-xhr-response.js + * + * @description + * Edit the object fetched through a XHR instance. + * Properties can only be removed. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when xhr.open() is + * called. + * + * */ + +function jsonEditXhrResponse(jsonq = '', ...args) { + jsonEditXhrResponseFn(false, jsonq, ...args); +} +registerScriptlet(jsonEditXhrResponse, { + name: 'json-edit-xhr-response.js', + dependencies: [ + jsonEditXhrResponseFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-json-edit-xhr-response.js + * + * @description + * Edit the object fetched through a XHR instance. + * Properties can be assigned new values. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when xhr.open() is + * called. + * + * */ + +function trustedJsonEditXhrResponse(jsonq = '', ...args) { + jsonEditXhrResponseFn(true, jsonq, ...args); +} +registerScriptlet(trustedJsonEditXhrResponse, { + name: 'trusted-json-edit-xhr-response.js', + requiresTrust: true, + dependencies: [ + jsonEditXhrResponseFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ + +function jsonEditXhrRequestFn(trusted, jsonq = '') { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}json-edit-xhr-request`, + jsonq + ); + const xhrInstances = new WeakMap(); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); + const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url'); + self.XMLHttpRequest = class extends self.XMLHttpRequest { + open(method, url, ...args) { + const xhrDetails = { method, url }; + const matched = propNeedles.size === 0 || + matchObjectPropertiesFn(propNeedles, xhrDetails); + if ( matched ) { + if ( safe.logLevel > 1 && Array.isArray(matched) ) { + safe.uboLog(logPrefix, `Matched "propsToMatch":\n\t${matched.join('\n\t')}`); + } + xhrInstances.set(this, xhrDetails); + } + return super.open(method, url, ...args); + } + send(body) { + const xhrDetails = xhrInstances.get(this); + if ( xhrDetails ) { + body = this.#filterBody(body) || body; + } + super.send(body); + } + #filterBody(body) { + if ( typeof body !== 'string' ) { return; } + let data; + try { data = safe.JSON_parse(body); } + catch { } + if ( data instanceof Object === false ) { return; } + const objAfter = jsonp.apply(data); + if ( objAfter === undefined ) { return; } + body = safe.JSON_stringify(objAfter); + safe.uboLog(logPrefix, 'Edited'); + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `After edit:\n${body}`); + } + return body; + } + }; +} +registerScriptlet(jsonEditXhrRequestFn, { + name: 'json-edit-xhr-request.fn', + dependencies: [ + JSONPath, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, + safeSelf, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet json-edit-xhr-request.js + * + * @description + * Edit the object sent as the body in a XHR instance. + * Properties can only be removed. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when xhr.open() is + * called. + * + * */ + +function jsonEditXhrRequest(jsonq = '', ...args) { + jsonEditXhrRequestFn(false, jsonq, ...args); +} +registerScriptlet(jsonEditXhrRequest, { + name: 'json-edit-xhr-request.js', + dependencies: [ + jsonEditXhrRequestFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-json-edit-xhr-request.js + * + * @description + * Edit the object sent as the body in a XHR instance. + * Properties can be assigned new values. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when xhr.open() is + * called. + * + * */ + +function trustedJsonEditXhrRequest(jsonq = '', ...args) { + jsonEditXhrRequestFn(true, jsonq, ...args); +} +registerScriptlet(trustedJsonEditXhrRequest, { + name: 'trusted-json-edit-xhr-request.js', + requiresTrust: true, + dependencies: [ + jsonEditXhrRequestFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ + +function jsonEditFetchResponseFn(trusted, jsonq = '') { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}json-edit-fetch-response`, + jsonq + ); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); + const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url'); + proxyApplyFn('fetch', function(context) { + const args = context.callArgs; + const fetchPromise = context.reflect(); + if ( propNeedles.size !== 0 ) { + const props = collateFetchArgumentsFn(...args); + const matched = matchObjectPropertiesFn(propNeedles, props); + if ( matched === undefined ) { return fetchPromise; } + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Matched "propsToMatch":\n\t${matched.join('\n\t')}`); + } + } + return fetchPromise.then(responseBefore => { + const response = responseBefore.clone(); + return response.json().then(obj => { + if ( typeof obj !== 'object' ) { return responseBefore; } + const objAfter = jsonp.apply(obj); + if ( objAfter === undefined ) { return responseBefore; } + safe.uboLog(logPrefix, 'Edited'); + const responseAfter = Response.json(objAfter, { + status: responseBefore.status, + statusText: responseBefore.statusText, + headers: responseBefore.headers, + }); + Object.defineProperties(responseAfter, { + ok: { value: responseBefore.ok }, + redirected: { value: responseBefore.redirected }, + type: { value: responseBefore.type }, + url: { value: responseBefore.url }, + }); + return responseAfter; + }).catch(reason => { + safe.uboErr(logPrefix, 'Error:', reason); + return responseBefore; + }); + }).catch(reason => { + safe.uboErr(logPrefix, 'Error:', reason); + return fetchPromise; + }); + }); +} +registerScriptlet(jsonEditFetchResponseFn, { + name: 'json-edit-fetch-response.fn', + dependencies: [ + collateFetchArgumentsFn, + JSONPath, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, + proxyApplyFn, + safeSelf, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet json-edit-fetch-response.js + * + * @description + * Edit the object fetched through the fetch API. + * Properties can only be removed. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when xhr.open() is + * called. + * + * */ + +function jsonEditFetchResponse(jsonq = '', ...args) { + jsonEditFetchResponseFn(false, jsonq, ...args); +} +registerScriptlet(jsonEditFetchResponse, { + name: 'json-edit-fetch-response.js', + dependencies: [ + jsonEditFetchResponseFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-json-edit-fetch-response.js + * + * @description + * Edit the object fetched through the fetch API. The trusted version allows + * Properties can be assigned new values. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when xhr.open() is + * called. + * + * */ + +function trustedJsonEditFetchResponse(jsonq = '', ...args) { + jsonEditFetchResponseFn(true, jsonq, ...args); +} +registerScriptlet(trustedJsonEditFetchResponse, { + name: 'trusted-json-edit-fetch-response.js', + requiresTrust: true, + dependencies: [ + jsonEditFetchResponseFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ + +function jsonEditFetchRequestFn(trusted, jsonq = '') { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}json-edit-fetch-request`, + jsonq + ); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); + const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url'); + const filterBody = body => { + if ( typeof body !== 'string' ) { return; } + let data; + try { data = safe.JSON_parse(body); } + catch { } + if ( data instanceof Object === false ) { return; } + const objAfter = jsonp.apply(data); + if ( objAfter === undefined ) { return; } + return safe.JSON_stringify(objAfter); + } + const proxyHandler = context => { + const args = context.callArgs; + const [ resource, options ] = args; + const bodyBefore = options?.body; + if ( Boolean(bodyBefore) === false ) { return context.reflect(); } + const bodyAfter = filterBody(bodyBefore); + if ( bodyAfter === undefined || bodyAfter === bodyBefore ) { + return context.reflect(); + } + if ( propNeedles.size !== 0 ) { + const props = collateFetchArgumentsFn(resource, options); + const matched = matchObjectPropertiesFn(propNeedles, props); + if ( matched === undefined ) { return context.reflect(); } + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Matched "propsToMatch":\n\t${matched.join('\n\t')}`); + } + } + safe.uboLog(logPrefix, 'Edited'); + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `After edit:\n${bodyAfter}`); + } + options.body = bodyAfter; + return context.reflect(); + }; + proxyApplyFn('fetch', proxyHandler); + proxyApplyFn('Request', proxyHandler); +} +registerScriptlet(jsonEditFetchRequestFn, { + name: 'json-edit-fetch-request.fn', + dependencies: [ + collateFetchArgumentsFn, + JSONPath, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, + proxyApplyFn, + safeSelf, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet json-edit-fetch-request.js + * + * @description + * Edit the request body sent through the fetch API. + * Properties can only be removed. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when fetch() is called. + * + * */ + +function jsonEditFetchRequest(jsonq = '', ...args) { + jsonEditFetchRequestFn(false, jsonq, ...args); +} +registerScriptlet(jsonEditFetchRequest, { + name: 'json-edit-fetch-request.js', + dependencies: [ + jsonEditFetchRequestFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-json-edit-fetch-request.js + * + * @description + * Edit the request body sent through the fetch API. + * Properties can be assigned new values. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when fetch() is called. + * + * */ + +function trustedJsonEditFetchRequest(jsonq = '', ...args) { + jsonEditFetchRequestFn(true, jsonq, ...args); +} +registerScriptlet(trustedJsonEditFetchRequest, { + name: 'trusted-json-edit-fetch-request.js', + requiresTrust: true, + dependencies: [ + jsonEditFetchRequestFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ + +function jsonlEditFn(jsonp, text = '') { + const safe = safeSelf(); + const lineSeparator = /\r?\n/.exec(text)?.[0] || '\n'; + const linesBefore = text.split('\n'); + const linesAfter = []; + for ( const lineBefore of linesBefore ) { + let obj; + try { obj = safe.JSON_parse(lineBefore); } catch { } + if ( typeof obj !== 'object' || obj === null ) { + linesAfter.push(lineBefore); + continue; + } + const objAfter = jsonp.apply(obj); + if ( objAfter === undefined ) { + linesAfter.push(lineBefore); + continue; + } + const lineAfter = safe.JSON_stringify(objAfter); + linesAfter.push(lineAfter); + } + return linesAfter.join(lineSeparator); +} +registerScriptlet(jsonlEditFn, { + name: 'jsonl-edit.fn', + dependencies: [ + JSONPath, + safeSelf, + ], +}); + +/******************************************************************************/ + +function jsonlEditXhrResponseFn(trusted, jsonq = '') { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}jsonl-edit-xhr-response`, + jsonq + ); + const xhrInstances = new WeakMap(); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); + const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url'); + self.XMLHttpRequest = class extends self.XMLHttpRequest { + open(method, url, ...args) { + const xhrDetails = { method, url }; + const matched = propNeedles.size === 0 || + matchObjectPropertiesFn(propNeedles, xhrDetails); + if ( matched ) { + if ( safe.logLevel > 1 && Array.isArray(matched) ) { + safe.uboLog(logPrefix, `Matched "propsToMatch":\n\t${matched.join('\n\t')}`); + } + xhrInstances.set(this, xhrDetails); + } + return super.open(method, url, ...args); + } + get response() { + const innerResponse = super.response; + const xhrDetails = xhrInstances.get(this); + if ( xhrDetails === undefined ) { + return innerResponse; + } + const responseLength = typeof innerResponse === 'string' + ? innerResponse.length + : undefined; + if ( xhrDetails.lastResponseLength !== responseLength ) { + xhrDetails.response = undefined; + xhrDetails.lastResponseLength = responseLength; + } + if ( xhrDetails.response !== undefined ) { + return xhrDetails.response; + } + if ( typeof innerResponse !== 'string' ) { + return (xhrDetails.response = innerResponse); + } + const outerResponse = jsonlEditFn(jsonp, innerResponse); + if ( outerResponse !== innerResponse ) { + safe.uboLog(logPrefix, 'Pruned'); + } + return (xhrDetails.response = outerResponse); + } + get responseText() { + const response = this.response; + return typeof response !== 'string' + ? super.responseText + : response; + } + }; +} +registerScriptlet(jsonlEditXhrResponseFn, { + name: 'jsonl-edit-xhr-response.fn', + dependencies: [ + JSONPath, + jsonlEditFn, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, + safeSelf, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet jsonl-edit-xhr-response.js + * + * @description + * Edit the objects found in a JSONL resource fetched through a XHR instance. + * Properties can only be removed. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when xhr.open() is + * called. + * + * */ + +function jsonlEditXhrResponse(jsonq = '', ...args) { + jsonlEditXhrResponseFn(false, jsonq, ...args); +} +registerScriptlet(jsonlEditXhrResponse, { + name: 'jsonl-edit-xhr-response.js', + dependencies: [ + jsonlEditXhrResponseFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-jsonl-edit-xhr-response.js + * + * @description + * Edit the objects found in a JSONL resource fetched through a XHR instance. + * Properties can be assigned new values. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when xhr.open() is + * called. + * + * */ + +function trustedJsonlEditXhrResponse(jsonq = '', ...args) { + jsonlEditXhrResponseFn(true, jsonq, ...args); +} +registerScriptlet(trustedJsonlEditXhrResponse, { + name: 'trusted-jsonl-edit-xhr-response.js', + requiresTrust: true, + dependencies: [ + jsonlEditXhrResponseFn, + ], +}); + +/******************************************************************************/ +/******************************************************************************/ + +function jsonlEditFetchResponseFn(trusted, jsonq = '') { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix( + `${trusted ? 'trusted-' : ''}jsonl-edit-fetch-response`, + jsonq + ); + const jsonp = JSONPath.create(jsonq); + if ( jsonp.valid === false || jsonp.value !== undefined && trusted !== true ) { + return safe.uboLog(logPrefix, 'Bad JSONPath query'); + } + const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); + const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url'); + const logall = jsonq === ''; + proxyApplyFn('fetch', function(context) { + const args = context.callArgs; + const fetchPromise = context.reflect(); + if ( propNeedles.size !== 0 ) { + const props = collateFetchArgumentsFn(...args); + const matched = matchObjectPropertiesFn(propNeedles, props); + if ( matched === undefined ) { return fetchPromise; } + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Matched "propsToMatch":\n\t${matched.join('\n\t')}`); + } + } + return fetchPromise.then(responseBefore => { + const response = responseBefore.clone(); + return response.text().then(textBefore => { + if ( typeof textBefore !== 'string' ) { return textBefore; } + if ( logall ) { + safe.uboLog(logPrefix, textBefore); + return responseBefore; + } + const textAfter = jsonlEditFn(jsonp, textBefore); + if ( textAfter === textBefore ) { return responseBefore; } + safe.uboLog(logPrefix, 'Pruned'); + const responseAfter = new Response(textAfter, { + status: responseBefore.status, + statusText: responseBefore.statusText, + headers: responseBefore.headers, + }); + Object.defineProperties(responseAfter, { + ok: { value: responseBefore.ok }, + redirected: { value: responseBefore.redirected }, + type: { value: responseBefore.type }, + url: { value: responseBefore.url }, + }); + return responseAfter; + }).catch(reason => { + safe.uboErr(logPrefix, 'Error:', reason); + return responseBefore; + }); + }).catch(reason => { + safe.uboErr(logPrefix, 'Error:', reason); + return fetchPromise; + }); + }); +} +registerScriptlet(jsonlEditFetchResponseFn, { + name: 'jsonl-edit-fetch-response.fn', + dependencies: [ + collateFetchArgumentsFn, + JSONPath, + jsonlEditFn, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, + proxyApplyFn, + safeSelf, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet jsonl-edit-fetch-response.js + * + * @description + * Edit the objects found in a JSONL resource fetched through the fetch API. + * Properties can only be removed. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when xhr.open() is + * called. + * + * */ + +function jsonlEditFetchResponse(jsonq = '', ...args) { + jsonlEditFetchResponseFn(false, jsonq, ...args); +} +registerScriptlet(jsonlEditFetchResponse, { + name: 'jsonl-edit-fetch-response.js', + dependencies: [ + jsonlEditFetchResponseFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-jsonl-edit-fetch-response.js + * + * @description + * Edit the objects found in a JSONL resource fetched through the fetch API. + * Properties can be assigned new values. + * + * @param jsonq + * A uBO-flavored JSONPath query. + * + * @param [propsToMatch, value] + * An optional vararg detailing the arguments to match when xhr.open() is + * called. + * + * */ + +function trustedJsonlEditFetchResponse(jsonq = '', ...args) { + jsonlEditFetchResponseFn(true, jsonq, ...args); +} +registerScriptlet(trustedJsonlEditFetchResponse, { + name: 'trusted-jsonl-edit-fetch-response.js', + requiresTrust: true, + dependencies: [ + jsonlEditFetchResponseFn, + ], +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/json-prune.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/json-prune.js new file mode 100644 index 00000000..aa787841 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/json-prune.js @@ -0,0 +1,266 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { + collateFetchArgumentsFn, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, +} from './utils.js'; + +import { objectPruneFn } from './object-prune.js'; +import { proxyApplyFn } from './proxy-apply.js'; +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +function jsonPrune( + rawPrunePaths = '', + rawNeedlePaths = '', + stackNeedle = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('json-prune', rawPrunePaths, rawNeedlePaths, stackNeedle); + const stackNeedleDetails = safe.initPattern(stackNeedle, { canNegate: true }); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); + proxyApplyFn('JSON.parse', function(context) { + const objBefore = context.reflect(); + if ( rawPrunePaths === '' ) { + safe.uboLog(logPrefix, safe.JSON_stringify(objBefore, null, 2)); + } + const objAfter = objectPruneFn( + objBefore, + rawPrunePaths, + rawNeedlePaths, + stackNeedleDetails, + extraArgs + ); + if ( objAfter === undefined ) { return objBefore; } + safe.uboLog(logPrefix, 'Pruned'); + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `After pruning:\n${safe.JSON_stringify(objAfter, null, 2)}`); + } + return objAfter; + }); +} +registerScriptlet(jsonPrune, { + name: 'json-prune.js', + dependencies: [ + objectPruneFn, + proxyApplyFn, + safeSelf, + ], +}); + +/******************************************************************************/ + +function jsonPruneFetchResponse( + rawPrunePaths = '', + rawNeedlePaths = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('json-prune-fetch-response', rawPrunePaths, rawNeedlePaths); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); + const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url'); + const stackNeedle = safe.initPattern(extraArgs.stackToMatch || '', { canNegate: true }); + const logall = rawPrunePaths === ''; + const applyHandler = function(target, thisArg, args) { + const fetchPromise = Reflect.apply(target, thisArg, args); + if ( propNeedles.size !== 0 ) { + const props = collateFetchArgumentsFn(...args); + const matched = matchObjectPropertiesFn(propNeedles, props); + if ( matched === undefined ) { return fetchPromise; } + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Matched "propsToMatch":\n\t${matched.join('\n\t')}`); + } + } + return fetchPromise.then(responseBefore => { + const response = responseBefore.clone(); + return response.json().then(objBefore => { + if ( typeof objBefore !== 'object' ) { return responseBefore; } + if ( logall ) { + safe.uboLog(logPrefix, safe.JSON_stringify(objBefore, null, 2)); + return responseBefore; + } + const objAfter = objectPruneFn( + objBefore, + rawPrunePaths, + rawNeedlePaths, + stackNeedle, + extraArgs + ); + if ( typeof objAfter !== 'object' ) { return responseBefore; } + safe.uboLog(logPrefix, 'Pruned'); + const responseAfter = Response.json(objAfter, { + status: responseBefore.status, + statusText: responseBefore.statusText, + headers: responseBefore.headers, + }); + Object.defineProperties(responseAfter, { + ok: { value: responseBefore.ok }, + redirected: { value: responseBefore.redirected }, + type: { value: responseBefore.type }, + url: { value: responseBefore.url }, + }); + return responseAfter; + }).catch(reason => { + safe.uboErr(logPrefix, 'Error:', reason); + return responseBefore; + }); + }).catch(reason => { + safe.uboErr(logPrefix, 'Error:', reason); + return fetchPromise; + }); + }; + self.fetch = new Proxy(self.fetch, { + apply: applyHandler + }); +} +registerScriptlet(jsonPruneFetchResponse, { + name: 'json-prune-fetch-response.js', + dependencies: [ + collateFetchArgumentsFn, + matchObjectPropertiesFn, + objectPruneFn, + parsePropertiesToMatchFn, + safeSelf, + ], +}); + +/******************************************************************************/ + +function jsonPruneXhrResponse( + rawPrunePaths = '', + rawNeedlePaths = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('json-prune-xhr-response', rawPrunePaths, rawNeedlePaths); + const xhrInstances = new WeakMap(); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); + const propNeedles = parsePropertiesToMatchFn(extraArgs.propsToMatch, 'url'); + const stackNeedle = safe.initPattern(extraArgs.stackToMatch || '', { canNegate: true }); + self.XMLHttpRequest = class extends self.XMLHttpRequest { + open(method, url, ...args) { + const xhrDetails = { method, url }; + let outcome = 'match'; + if ( propNeedles.size !== 0 ) { + if ( matchObjectPropertiesFn(propNeedles, xhrDetails) === undefined ) { + outcome = 'nomatch'; + } + } + if ( outcome === 'match' ) { + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Matched optional "propsToMatch", "${extraArgs.propsToMatch}"`); + } + xhrInstances.set(this, xhrDetails); + } + return super.open(method, url, ...args); + } + get response() { + const innerResponse = super.response; + const xhrDetails = xhrInstances.get(this); + if ( xhrDetails === undefined ) { + return innerResponse; + } + const responseLength = typeof innerResponse === 'string' + ? innerResponse.length + : undefined; + if ( xhrDetails.lastResponseLength !== responseLength ) { + xhrDetails.response = undefined; + xhrDetails.lastResponseLength = responseLength; + } + if ( xhrDetails.response !== undefined ) { + return xhrDetails.response; + } + let objBefore; + if ( typeof innerResponse === 'object' ) { + objBefore = innerResponse; + } else if ( typeof innerResponse === 'string' ) { + try { + objBefore = safe.JSON_parse(innerResponse); + } catch { + } + } + if ( typeof objBefore !== 'object' ) { + return (xhrDetails.response = innerResponse); + } + const objAfter = objectPruneFn( + objBefore, + rawPrunePaths, + rawNeedlePaths, + stackNeedle, + extraArgs + ); + let outerResponse; + if ( typeof objAfter === 'object' ) { + outerResponse = typeof innerResponse === 'string' + ? safe.JSON_stringify(objAfter) + : objAfter; + safe.uboLog(logPrefix, 'Pruned'); + } else { + outerResponse = innerResponse; + } + return (xhrDetails.response = outerResponse); + } + get responseText() { + const response = this.response; + return typeof response !== 'string' + ? super.responseText + : response; + } + }; +} +registerScriptlet(jsonPruneXhrResponse, { + name: 'json-prune-xhr-response.js', + dependencies: [ + matchObjectPropertiesFn, + objectPruneFn, + parsePropertiesToMatchFn, + safeSelf, + ], +}); + +/******************************************************************************/ + +// There is still code out there which uses `eval` in lieu of `JSON.parse`. + +function evaldataPrune( + rawPrunePaths = '', + rawNeedlePaths = '' +) { + proxyApplyFn('eval', function(context) { + const before = context.reflect(); + if ( typeof before !== 'object' ) { return before; } + if ( before === null ) { return null; } + const after = objectPruneFn(before, rawPrunePaths, rawNeedlePaths); + return after || before; + }); +} +registerScriptlet(evaldataPrune, { + name: 'evaldata-prune.js', + dependencies: [ + objectPruneFn, + proxyApplyFn, + ], +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/localstorage.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/localstorage.js new file mode 100644 index 00000000..3e33ca23 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/localstorage.js @@ -0,0 +1,261 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { getSafeCookieValuesFn } from './cookie.js'; +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +export function getAllLocalStorageFn(which = 'localStorage') { + const storage = self[which]; + const out = []; + for ( let i = 0; i < storage.length; i++ ) { + const key = storage.key(i); + const value = storage.getItem(key); + return { key, value }; + } + return out; +} +registerScriptlet(getAllLocalStorageFn, { + name: 'get-all-local-storage.fn', +}); + +/******************************************************************************/ + +export function setLocalStorageItemFn( + which = 'local', + trusted = false, + key = '', + value = '', + options = {} +) { + if ( key === '' ) { return; } + + // For increased compatibility with AdGuard + if ( value === 'emptyArr' ) { + value = '[]'; + } else if ( value === 'emptyObj' ) { + value = '{}'; + } + + const trustedValues = [ + '', + 'undefined', 'null', + '{}', '[]', '""', + '$remove$', + ...getSafeCookieValuesFn(), + ]; + + if ( trusted ) { + if ( value.includes('$now$') ) { + value = value.replaceAll('$now$', Date.now()); + } + if ( value.includes('$currentDate$') ) { + value = value.replaceAll('$currentDate$', `${Date()}`); + } + if ( value.includes('$currentISODate$') ) { + value = value.replaceAll('$currentISODate$', (new Date()).toISOString()); + } + } else { + const normalized = value.toLowerCase(); + const match = /^("?)(.+)\1$/.exec(normalized); + const unquoted = match && match[2] || normalized; + if ( trustedValues.includes(unquoted) === false ) { + if ( /^-?\d+$/.test(unquoted) === false ) { return; } + const n = parseInt(unquoted, 10) || 0; + if ( n < -32767 || n > 32767 ) { return; } + } + } + + let modified = false; + + try { + const storage = self[`${which}Storage`]; + if ( value === '$remove$' ) { + const safe = safeSelf(); + const pattern = safe.patternToRegex(key, undefined, true ); + const toRemove = []; + for ( let i = 0, n = storage.length; i < n; i++ ) { + const key = storage.key(i); + if ( pattern.test(key) ) { toRemove.push(key); } + } + modified = toRemove.length !== 0; + for ( const key of toRemove ) { + storage.removeItem(key); + } + } else { + + const before = storage.getItem(key); + const after = `${value}`; + modified = after !== before; + if ( modified ) { + storage.setItem(key, after); + } + } + } catch { + } + + if ( modified && typeof options.reload === 'number' ) { + setTimeout(( ) => { window.location.reload(); }, options.reload); + } +} +registerScriptlet(setLocalStorageItemFn, { + name: 'set-local-storage-item.fn', + dependencies: [ + getSafeCookieValuesFn, + safeSelf, + ], +}); + +/******************************************************************************/ + +export function removeCacheStorageItem( + cacheNamePattern = '', + requestPattern = '' +) { + if ( cacheNamePattern === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('remove-cache-storage-item', cacheNamePattern, requestPattern); + const cacheStorage = self.caches; + if ( cacheStorage instanceof Object === false ) { return; } + const reCache = safe.patternToRegex(cacheNamePattern, undefined, true); + const reRequest = safe.patternToRegex(requestPattern, undefined, true); + cacheStorage.keys().then(cacheNames => { + for ( const cacheName of cacheNames ) { + if ( reCache.test(cacheName) === false ) { continue; } + if ( requestPattern === '' ) { + cacheStorage.delete(cacheName).then(result => { + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Deleting ${cacheName}`); + } + if ( result !== true ) { return; } + safe.uboLog(logPrefix, `Deleted ${cacheName}: ${result}`); + }); + continue; + } + cacheStorage.open(cacheName).then(cache => { + cache.keys().then(requests => { + for ( const request of requests ) { + if ( reRequest.test(request.url) === false ) { continue; } + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Deleting ${cacheName}/${request.url}`); + } + cache.delete(request).then(result => { + if ( result !== true ) { return; } + safe.uboLog(logPrefix, `Deleted ${cacheName}/${request.url}: ${result}`); + }); + } + }); + }); + } + }); +} +registerScriptlet(removeCacheStorageItem, { + name: 'remove-cache-storage-item.fn', + world: 'ISOLATED', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************* + * + * set-local-storage-item.js + * set-session-storage-item.js + * + * Set a local/session storage entry to a specific, allowed value. + * + * Reference: + * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/set-local-storage-item.js + * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/set-session-storage-item.js + * + **/ + +export function setLocalStorageItem(key = '', value = '') { + const safe = safeSelf(); + const options = safe.getExtraArgs(Array.from(arguments), 2) + setLocalStorageItemFn('local', false, key, value, options); +} +registerScriptlet(setLocalStorageItem, { + name: 'set-local-storage-item.js', + world: 'ISOLATED', + dependencies: [ + safeSelf, + setLocalStorageItemFn, + ], +}); + +export function setSessionStorageItem(key = '', value = '') { + const safe = safeSelf(); + const options = safe.getExtraArgs(Array.from(arguments), 2) + setLocalStorageItemFn('session', false, key, value, options); +} +registerScriptlet(setSessionStorageItem, { + name: 'set-session-storage-item.js', + world: 'ISOLATED', + dependencies: [ + safeSelf, + setLocalStorageItemFn, + ], +}); + +/******************************************************************************* + * + * trusted-set-local-storage-item.js + * + * Set a local storage entry to an arbitrary value. + * + * Reference: + * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/trusted-set-local-storage-item.js + * + **/ + +export function trustedSetLocalStorageItem(key = '', value = '') { + const safe = safeSelf(); + const options = safe.getExtraArgs(Array.from(arguments), 2) + setLocalStorageItemFn('local', true, key, value, options); +} +registerScriptlet(trustedSetLocalStorageItem, { + name: 'trusted-set-local-storage-item.js', + requiresTrust: true, + world: 'ISOLATED', + dependencies: [ + safeSelf, + setLocalStorageItemFn, + ], +}); + +export function trustedSetSessionStorageItem(key = '', value = '') { + const safe = safeSelf(); + const options = safe.getExtraArgs(Array.from(arguments), 2) + setLocalStorageItemFn('session', true, key, value, options); +} +registerScriptlet(trustedSetSessionStorageItem, { + name: 'trusted-set-session-storage-item.js', + requiresTrust: true, + world: 'ISOLATED', + dependencies: [ + safeSelf, + setLocalStorageItemFn, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/noeval.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/noeval.js new file mode 100644 index 00000000..d66db532 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/noeval.js @@ -0,0 +1,58 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { proxyApplyFn } from './proxy-apply.js'; +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +function noEvalIf( + needle = '' +) { + if ( typeof needle !== 'string' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('noeval-if', needle); + const reNeedle = safe.patternToRegex(needle); + proxyApplyFn('eval', function(context) { + const { callArgs } = context; + const a = String(callArgs[0]); + if ( needle !== '' && reNeedle.test(a) ) { + safe.uboLog(logPrefix, 'Prevented:\n', a); + return; + } + if ( needle === '' || safe.logLevel > 1 ) { + safe.uboLog(logPrefix, 'Not prevented:\n', a); + } + return context.reflect(); + }); +} +registerScriptlet(noEvalIf, { + name: 'noeval-if.js', + aliases: [ + 'prevent-eval-if.js', + ], + dependencies: [ + proxyApplyFn, + safeSelf, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/object-prune.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/object-prune.js new file mode 100644 index 00000000..50256fe5 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/object-prune.js @@ -0,0 +1,272 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { matchesStackTraceFn } from './stack-trace.js'; +import { proxyApplyFn } from './proxy-apply.js'; +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +function objectFindOwnerFn( + root, + path, + prune = false +) { + const safe = safeSelf(); + let owner = root; + let chain = path; + for (;;) { + if ( typeof owner !== 'object' || owner === null ) { return false; } + const pos = chain.indexOf('.'); + if ( pos === -1 ) { + if ( prune === false ) { + return safe.Object_hasOwn(owner, chain); + } + let modified = false; + if ( chain === '*' ) { + for ( const key in owner ) { + if ( safe.Object_hasOwn(owner, key) === false ) { continue; } + delete owner[key]; + modified = true; + } + } else if ( safe.Object_hasOwn(owner, chain) ) { + delete owner[chain]; + modified = true; + } + return modified; + } + const prop = chain.slice(0, pos); + const next = chain.slice(pos + 1); + let found = false; + if ( prop === '[-]' && Array.isArray(owner) ) { + let i = owner.length; + while ( i-- ) { + if ( objectFindOwnerFn(owner[i], next) === false ) { continue; } + owner.splice(i, 1); + found = true; + } + return found; + } + if ( prop === '{-}' && owner instanceof Object ) { + for ( const key of Object.keys(owner) ) { + if ( objectFindOwnerFn(owner[key], next) === false ) { continue; } + delete owner[key]; + found = true; + } + return found; + } + if ( + prop === '[]' && Array.isArray(owner) || + prop === '{}' && owner instanceof Object || + prop === '*' && owner instanceof Object + ) { + for ( const key of Object.keys(owner) ) { + if (objectFindOwnerFn(owner[key], next, prune) === false ) { continue; } + found = true; + } + return found; + } + if ( safe.Object_hasOwn(owner, prop) === false ) { return false; } + owner = owner[prop]; + chain = chain.slice(pos + 1); + } +} +registerScriptlet(objectFindOwnerFn, { + name: 'object-find-owner.fn', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ + +// When no "prune paths" argument is provided, the scriptlet is +// used for logging purpose and the "needle paths" argument is +// used to filter logging output. +// +// https://github.com/uBlockOrigin/uBlock-issues/issues/1545 +// - Add support for "remove everything if needle matches" case + +export function objectPruneFn( + obj, + rawPrunePaths, + rawNeedlePaths, + stackNeedleDetails = { matchAll: true }, + extraArgs = {} +) { + if ( typeof rawPrunePaths !== 'string' ) { return; } + const safe = safeSelf(); + const prunePaths = rawPrunePaths !== '' + ? safe.String_split.call(rawPrunePaths, / +/) + : []; + const needlePaths = prunePaths.length !== 0 && rawNeedlePaths !== '' + ? safe.String_split.call(rawNeedlePaths, / +/) + : []; + if ( stackNeedleDetails.matchAll !== true ) { + if ( matchesStackTraceFn(stackNeedleDetails, extraArgs.logstack) === false ) { + return; + } + } + if ( objectPruneFn.mustProcess === undefined ) { + objectPruneFn.mustProcess = (root, needlePaths) => { + for ( const needlePath of needlePaths ) { + if ( objectFindOwnerFn(root, needlePath) === false ) { + return false; + } + } + return true; + }; + } + if ( prunePaths.length === 0 ) { return; } + let outcome = 'nomatch'; + if ( objectPruneFn.mustProcess(obj, needlePaths) ) { + for ( const path of prunePaths ) { + if ( objectFindOwnerFn(obj, path, true) ) { + outcome = 'match'; + } + } + } + if ( outcome === 'match' ) { return obj; } +} +registerScriptlet(objectPruneFn, { + name: 'object-prune.fn', + dependencies: [ + matchesStackTraceFn, + objectFindOwnerFn, + safeSelf, + ], +}); + +/******************************************************************************/ + +function trustedPruneInboundObject( + entryPoint = '', + argPos = '', + rawPrunePaths = '', + rawNeedlePaths = '' +) { + if ( entryPoint === '' ) { return; } + let context = globalThis; + let prop = entryPoint; + for (;;) { + const pos = prop.indexOf('.'); + if ( pos === -1 ) { break; } + context = context[prop.slice(0, pos)]; + if ( context instanceof Object === false ) { return; } + prop = prop.slice(pos+1); + } + if ( typeof context[prop] !== 'function' ) { return; } + const argIndex = parseInt(argPos); + if ( isNaN(argIndex) ) { return; } + if ( argIndex < 1 ) { return; } + const safe = safeSelf(); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 4); + const needlePaths = []; + if ( rawPrunePaths !== '' ) { + needlePaths.push(...safe.String_split.call(rawPrunePaths, / +/)); + } + if ( rawNeedlePaths !== '' ) { + needlePaths.push(...safe.String_split.call(rawNeedlePaths, / +/)); + } + const stackNeedle = safe.initPattern(extraArgs.stackToMatch || '', { canNegate: true }); + const mustProcess = root => { + for ( const needlePath of needlePaths ) { + if ( objectFindOwnerFn(root, needlePath) === false ) { + return false; + } + } + return true; + }; + context[prop] = new Proxy(context[prop], { + apply: function(target, thisArg, args) { + const targetArg = argIndex <= args.length + ? args[argIndex-1] + : undefined; + if ( targetArg instanceof Object && mustProcess(targetArg) ) { + let objBefore = targetArg; + if ( extraArgs.dontOverwrite ) { + try { + objBefore = safe.JSON_parse(safe.JSON_stringify(targetArg)); + } catch { + objBefore = undefined; + } + } + if ( objBefore !== undefined ) { + const objAfter = objectPruneFn( + objBefore, + rawPrunePaths, + rawNeedlePaths, + stackNeedle, + extraArgs + ); + args[argIndex-1] = objAfter || objBefore; + } + } + return Reflect.apply(target, thisArg, args); + }, + }); +} +registerScriptlet(trustedPruneInboundObject, { + name: 'trusted-prune-inbound-object.js', + requiresTrust: true, + dependencies: [ + objectFindOwnerFn, + objectPruneFn, + safeSelf, + ], +}); + +/******************************************************************************/ + +function trustedPruneOutboundObject( + propChain = '', + rawPrunePaths = '', + rawNeedlePaths = '' +) { + if ( propChain === '' ) { return; } + const safe = safeSelf(); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); + proxyApplyFn(propChain, function(context) { + const objBefore = context.reflect(); + if ( objBefore instanceof Object === false ) { return objBefore; } + const objAfter = objectPruneFn( + objBefore, + rawPrunePaths, + rawNeedlePaths, + { matchAll: true }, + extraArgs + ); + return objAfter || objBefore; + }); +} +registerScriptlet(trustedPruneOutboundObject, { + name: 'trusted-prune-outbound-object.js', + requiresTrust: true, + dependencies: [ + objectPruneFn, + proxyApplyFn, + safeSelf, + ], +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/parse-replace.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/parse-replace.js new file mode 100644 index 00000000..604644f4 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/parse-replace.js @@ -0,0 +1,54 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { ArglistParser } from './shared.js'; +import { registerScriptlet } from './base.js'; + +/******************************************************************************/ + +export function parseReplaceFn(s) { + if ( s.charCodeAt(0) !== 0x2F /* / */ ) { return; } + const parser = new ArglistParser('/'); + parser.nextArg(s, 1); + let pattern = s.slice(parser.argBeg, parser.argEnd); + if ( parser.transform ) { + pattern = parser.normalizeArg(pattern); + } + if ( pattern === '' ) { return; } + parser.nextArg(s, parser.separatorEnd); + let replacement = s.slice(parser.argBeg, parser.argEnd); + if ( parser.separatorEnd === parser.separatorBeg ) { return; } + if ( parser.transform ) { + replacement = parser.normalizeArg(replacement); + } + const flags = s.slice(parser.separatorEnd); + try { + return { re: new RegExp(pattern, flags), replacement }; + } catch { + } +} +registerScriptlet(parseReplaceFn, { + name: 'parse-replace.fn', + dependencies: [ + ArglistParser, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-addeventlistener.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-addeventlistener.js new file mode 100644 index 00000000..885ebaa0 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-addeventlistener.js @@ -0,0 +1,158 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { proxyApplyFn } from './proxy-apply.js'; +import { registerScriptlet } from './base.js'; +import { runAt } from './run-at.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +/** + * @scriptlet prevent-addEventListener + * + * @description + * Conditionally prevent execution of the callback function passed to native + * addEventListener method. With no parameters, all calls to addEventListener + * will be shown in the logger. + * + * @param [type] + * The type of the event to prevent. The pattern can be a plain string, or a + * regex to specify more than one event type. + * + * @param [pattern] + * A pattern to match against the stringified callback. The pattern can be a + * plain string, or a regex. + * + * @param [runat, value] + * An optional vararg which tell the scriptlet when the prevention should + * start. Values correspond to `readyState`: loading, interactive, complete. + * + * @param [protect, 1] + * An optional vararg which tells the scriptlet whether the prevention should + * be protected, i.e. not overwritten by other code. + * + * */ + +function preventAddEventListener( + type = '', + pattern = '' +) { + const safe = safeSelf(); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); + const logPrefix = safe.makeLogPrefix('prevent-addEventListener', type, pattern); + const reType = safe.patternToRegex(type, undefined, true); + const rePattern = safe.patternToRegex(pattern); + const targetSelector = extraArgs.elements || undefined; + const elementMatches = elem => { + if ( targetSelector === 'window' ) { return elem === window; } + if ( targetSelector === 'document' ) { return elem === document; } + if ( elem && elem.matches && elem.matches(targetSelector) ) { return true; } + const elems = Array.from(document.querySelectorAll(targetSelector)); + return elems.includes(elem); + }; + const elementDetails = elem => { + if ( elem instanceof Window ) { return 'window'; } + if ( elem instanceof Document ) { return 'document'; } + if ( elem instanceof Element === false ) { return '?'; } + const parts = []; + // https://github.com/uBlockOrigin/uAssets/discussions/17907#discussioncomment-9871079 + const id = String(elem.id); + if ( id !== '' ) { parts.push(`#${CSS.escape(id)}`); } + for ( let i = 0; i < elem.classList.length; i++ ) { + parts.push(`.${CSS.escape(elem.classList.item(i))}`); + } + for ( let i = 0; i < elem.attributes.length; i++ ) { + const attr = elem.attributes.item(i); + if ( attr.name === 'id' ) { continue; } + if ( attr.name === 'class' ) { continue; } + parts.push(`[${CSS.escape(attr.name)}="${attr.value}"]`); + } + return parts.join(''); + }; + const shouldPrevent = (thisArg, type, handler) => { + const matchesType = safe.RegExp_test.call(reType, type); + const matchesHandler = safe.RegExp_test.call(rePattern, handler); + const matchesEither = matchesType || matchesHandler; + const matchesBoth = matchesType && matchesHandler; + if ( safe.logLevel > 1 && matchesEither ) { + debugger; // eslint-disable-line no-debugger + } + if ( matchesBoth && targetSelector !== undefined ) { + if ( elementMatches(thisArg) === false ) { return false; } + } + return matchesBoth; + }; + const proxyFn = function(context) { + const { callArgs, thisArg } = context; + let t, h; + try { + t = String(callArgs[0]); + if ( typeof callArgs[1] === 'function' ) { + h = String(safe.Function_toString(callArgs[1])); + } else if ( typeof callArgs[1] === 'object' && callArgs[1] !== null ) { + if ( typeof callArgs[1].handleEvent === 'function' ) { + h = String(safe.Function_toString(callArgs[1].handleEvent)); + } + } else { + h = String(callArgs[1]); + } + } catch { + } + if ( type === '' && pattern === '' ) { + safe.uboLog(logPrefix, `Called: ${t}\n${h}\n${elementDetails(thisArg)}`); + } else if ( shouldPrevent(thisArg, t, h) ) { + return safe.uboLog(logPrefix, `Prevented: ${t}\n${h}\n${elementDetails(thisArg)}`); + } + return context.reflect(); + }; + runAt(( ) => { + proxyApplyFn('EventTarget.prototype.addEventListener', proxyFn); + if ( extraArgs.protect ) { + const { addEventListener } = EventTarget.prototype; + Object.defineProperty(EventTarget.prototype, 'addEventListener', { + set() { }, + get() { return addEventListener; } + }); + } + proxyApplyFn('document.addEventListener', proxyFn); + if ( extraArgs.protect ) { + const { addEventListener } = document; + Object.defineProperty(document, 'addEventListener', { + set() { }, + get() { return addEventListener; } + }); + } + }, extraArgs.runAt); +} +registerScriptlet(preventAddEventListener , { + name: 'prevent-addEventListener.js', + aliases: [ + 'addEventListener-defuser.js', + 'aeld.js', + ], + dependencies: [ + proxyApplyFn, + runAt, + safeSelf, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-dialog.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-dialog.js new file mode 100644 index 00000000..fbb86ef9 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-dialog.js @@ -0,0 +1,73 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2025-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/** + * @scriptlet prevent-dialog + * + * @description + * Programmatically close `dialog` elements. + * + * @param [selector] + * Optional. The dialog element must matches `dialog{selector}` for the + * prevention to take place. + * + * @usage: + * example.com##+js(prevent-dialog) + * + * */ + +export function preventDialog( + selector = '', +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('prevent-dialog', selector); + const prevent = ( ) => { + debouncer = undefined; + const elems = document.querySelectorAll(`dialog${selector}`); + for ( const elem of elems ) { + if ( typeof elem.close !== 'function' ) { continue; } + if ( elem.open === false ) { continue; } + elem.close(); + safe.uboLog(logPrefix, 'Closed'); + } + }; + let debouncer; + const observer = new MutationObserver(( ) => { + if ( debouncer !== undefined ) { return; } + debouncer = requestAnimationFrame(prevent); + }); + observer.observe(document, { + attributes: true, + childList: true, + subtree: true, + }); +} +registerScriptlet(preventDialog, { + name: 'prevent-dialog.js', + dependencies: [ + safeSelf, + ], + world: 'ISOLATED', +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-fetch.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-fetch.js new file mode 100644 index 00000000..dbe096a5 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-fetch.js @@ -0,0 +1,197 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { + collateFetchArgumentsFn, + generateContentFn, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, +} from './utils.js'; +import { proxyApplyFn } from './proxy-apply.js'; +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +function preventFetchFn( + trusted = false, + propsToMatch = '', + responseBody = '', + responseType = '' +) { + const safe = safeSelf(); + const setTimeout = self.setTimeout; + const scriptletName = `${trusted ? 'trusted-' : ''}prevent-fetch`; + const logPrefix = safe.makeLogPrefix( + scriptletName, + propsToMatch, + responseBody, + responseType + ); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 4); + const propNeedles = parsePropertiesToMatchFn(propsToMatch, 'url'); + const validResponseProps = { + ok: [ false, true ], + status: [ 403 ], + statusText: [ '', 'Not Found' ], + type: [ 'basic', 'cors', 'default', 'error', 'opaque' ], + }; + const responseProps = { + statusText: { value: 'OK' }, + }; + const responseHeaders = {}; + if ( /^\{.*\}$/.test(responseType) ) { + try { + Object.entries(JSON.parse(responseType)).forEach(([ p, v ]) => { + if ( p === 'headers' && trusted ) { + Object.assign(responseHeaders, v); + return; + } + if ( validResponseProps[p] === undefined ) { return; } + if ( validResponseProps[p].includes(v) === false ) { return; } + responseProps[p] = { value: v }; + }); + } + catch { } + } else if ( responseType !== '' ) { + if ( validResponseProps.type.includes(responseType) ) { + responseProps.type = { value: responseType }; + } + } + proxyApplyFn('fetch', function fetch(context) { + const { callArgs } = context; + const details = collateFetchArgumentsFn(...callArgs); + if ( safe.logLevel > 1 || propsToMatch === '' && responseBody === '' ) { + const out = Array.from(Object.entries(details)).map(a => `${a[0]}:${a[1]}`); + safe.uboLog(logPrefix, `Called: ${out.join('\n')}`); + } + if ( propsToMatch === '' && responseBody === '' ) { + return context.reflect(); + } + const matched = matchObjectPropertiesFn(propNeedles, details); + if ( matched === undefined || matched.length === 0 ) { + return context.reflect(); + } + return Promise.resolve(generateContentFn(trusted, responseBody)).then(text => { + safe.uboLog(logPrefix, `Prevented with response "${text}"`); + const headers = Object.assign({}, responseHeaders); + if ( headers['content-length'] === undefined ) { + headers['content-length'] = text.length; + } + const response = new Response(text, { headers }); + const props = Object.assign( + { url: { value: details.url } }, + responseProps + ); + safe.Object_defineProperties(response, props); + if ( extraArgs.throttle ) { + return new Promise(resolve => { + setTimeout(( ) => { resolve(response); }, extraArgs.throttle); + }); + } + return response; + }); + }); +} +registerScriptlet(preventFetchFn, { + name: 'prevent-fetch.fn', + dependencies: [ + collateFetchArgumentsFn, + generateContentFn, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, + proxyApplyFn, + safeSelf, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet prevent-fetch + * + * @description + * Prevent a fetch() call from making a network request to a remote server. + * + * @param propsToMatch + * The fetch arguments to match for the prevention to be triggered. The + * untrusted flavor limits the realm of response to return to safe values. + * + * @param [responseBody] + * Optional. The reponse to return when the prevention occurs. + * + * @param [responseType] + * Optional. The response type to use when emitting a dummy response as a + * result of the prevention. + * + * @param [...varargs] + * ["throttle", n]: the time to wait in ms before returning a result. + * + * */ + +function preventFetch(...args) { + preventFetchFn(false, ...args); +} +registerScriptlet(preventFetch, { + name: 'prevent-fetch.js', + aliases: [ + 'no-fetch-if.js', + ], + dependencies: [ + preventFetchFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-prevent-fetch + * + * @description + * Prevent a fetch() call from making a network request to a remote server. + * + * @param propsToMatch + * The fetch arguments to match for the prevention to be triggered. + * + * @param [responseBody] + * Optional. The reponse to return when the prevention occurs. The trusted + * flavor allows to return any response. + * + * @param [responseType] + * Optional. The response type to use when emitting a dummy response as a + * result of the prevention. + * + * @param [...varargs] + * ["throttle", n]: the time to wait in ms before returning a result. + * + * */ + +function trustedPreventFetch(...args) { + preventFetchFn(true, ...args); +} +registerScriptlet(trustedPreventFetch, { + name: 'trusted-prevent-fetch.js', + requiresTrust: true, + dependencies: [ + preventFetchFn, + ], +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-innerHTML.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-innerHTML.js new file mode 100644 index 00000000..1e14c2ae --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-innerHTML.js @@ -0,0 +1,132 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2025-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/** + * @scriptlet freeze-element-property + * + * @description + * Conditionally prevent assignment to an element property. + * + * @param property + * The name of the property to freeze. + * + * @param [selector] + * Optional. The element must match `selector` for the prevention to take + * place. + * + * @param [pattern] + * Optional. A pattern to match against the stringified assigned value. The + * pattern can be a plain string, or a regex. Prepend with `!` to reverse the + * match condition. + * + * */ + +function freezeElementProperty( + property = '', + selector = '', + pattern = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('freeze-element-property', property, selector, pattern); + const matcher = safe.initPattern(pattern, { canNegate: true }); + const owner = (( ) => { + if ( Object.hasOwn(HTMLScriptElement.prototype, property) ) { + return HTMLScriptElement.prototype; + } + if ( Object.hasOwn(HTMLElement.prototype, property) ) { + return HTMLElement.prototype; + } + if ( Object.hasOwn(Element.prototype, property) ) { + return Element.prototype; + } + if ( Object.hasOwn(Node.prototype, property) ) { + return Node.prototype; + } + return null; + })(); + if ( owner === null ) { return; } + const current = safe.Object_getOwnPropertyDescriptor(owner, property); + if ( current === undefined ) { return; } + const shouldPreventSet = (elem, a) => { + if ( selector !== '' ) { + if ( typeof elem.matches !== 'function' ) { return false; } + if ( elem.matches(selector) === false ) { return false; } + } + return safe.testPattern(matcher, `${a}`); + }; + Object.defineProperty(owner, property, { + get: function() { + return current.get + ? current.get.call(this) + : current.value; + }, + set: function(a) { + if ( shouldPreventSet(this, a) ) { + safe.uboLog(logPrefix, 'Assignment prevented'); + } else if ( current.set ) { + current.set.call(this, a); + } + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Assigned:\n${a}`); + } + current.value = a; + }, + }); +} +registerScriptlet(freezeElementProperty, { + name: 'freeze-element-property.js', + dependencies: [ + safeSelf, + ], +}); + +/** + * @scriptlet prevent-innerHTML + * + * @description + * Conditionally prevent assignment to `innerHTML` property. + * + * @param [selector] + * Optional. The element must match `selector` for the prevention to take + * place. + * + * @param [pattern] + * Optional. A pattern to match against the assigned value. The pattern can be + * a plain string, or a regex. Prepend with `!` to reverse the match condition. + * + * */ + +function preventInnerHTML( + selector = '', + pattern = '' +) { + freezeElementProperty('innerHTML', selector, pattern); +} +registerScriptlet(preventInnerHTML, { + name: 'prevent-innerHTML.js', + dependencies: [ + freezeElementProperty, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-navigation.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-navigation.js new file mode 100644 index 00000000..81a4b579 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-navigation.js @@ -0,0 +1,67 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2026-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/** + * @scriptlet prevent-navigation + * + * @description + * Conditionally abort navigation events. + * + * @param [pattern] + * Optional. A pattern to match against the assigned value. The pattern can be + * a plain string, or a regex. Prepend with `!` to reverse the match condition. + * No pattern + * + * Reference: + * https://github.com/AdguardTeam/Scriptlets/commit/cd2d8eefd5 + * */ + +export function preventNavigation( + pattern = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('prevent-navigation', pattern); + const needle = pattern === 'location.href' ? self.location.href : pattern; + const matcher = safe.initPattern(needle, { canNegate: true }); + self.navigation.addEventListener('navigate', ev => { + if ( ev.userInitiated ) { return; } + const { url } = ev.destination; + if ( pattern === '' ) { + safe.uboLog(logPrefix, `Navigation to ${url}`); + return; + } + if ( safe.testPattern(matcher, url) ) { + ev.preventDefault(); + safe.uboLog(logPrefix, `Prevented navigation to ${url}`); + } + }); +} +registerScriptlet(preventNavigation, { + name: 'prevent-navigation.js', + dependencies: [ + safeSelf, + ], + world: 'ISOLATED', +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-settimeout.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-settimeout.js new file mode 100644 index 00000000..289c4465 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-settimeout.js @@ -0,0 +1,236 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { proxyApplyFn } from './proxy-apply.js'; +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +class RangeParser { + constructor(s) { + this.not = s.charAt(0) === '!'; + if ( this.not ) { s = s.slice(1); } + if ( s === '' ) { return; } + const pos = s.indexOf('-'); + if ( pos !== 0 ) { + this.min = this.max = parseInt(s, 10) || 0; + } + if ( pos !== -1 ) { + this.max = parseInt(s.slice(pos + 1), 10) || Number.MAX_SAFE_INTEGER; + } + } + unbound() { + return this.min === undefined && this.max === undefined; + } + test(v) { + const n = Math.min(Math.max(Number(v) || 0, 0), Number.MAX_SAFE_INTEGER); + if ( this.min === this.max ) { + return (this.min === undefined || n === this.min) !== this.not; + } + if ( this.min === undefined ) { + return (n <= this.max) !== this.not; + } + if ( this.max === undefined ) { + return (n >= this.min) !== this.not; + } + return (n >= this.min && n <= this.max) !== this.not; + } +} +registerScriptlet(RangeParser, { + name: 'range-parser.fn', +}); + +/** + * @scriptlet prevent-setTimeout + * + * @description + * Conditionally prevent execution of the callback function passed to native + * setTimeout method. With no parameters, all calls to setTimeout will be + * shown in the logger. + * + * @param [needle] + * A pattern to match against the stringified callback. The pattern can be a + * plain string, or a regex. Prepend with `!` to reverse the match condition. + * + * @param [delay] + * A value to match against the delay. Can be a single value for exact match, + * or a range: + * - `min-max`: matches if delay >= min and delay <= max + * - `min-`: matches if delay >= min + * - `-max`: matches if delay <= max + * No delay means to match any delay value. + * Prepend with `!` to reverse the match condition. + * + * */ + +export function preventSetTimeout( + needleRaw = '', + delayRaw = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('prevent-setTimeout', needleRaw, delayRaw); + const needleNot = needleRaw.charAt(0) === '!'; + const reNeedle = safe.patternToRegex(needleNot ? needleRaw.slice(1) : needleRaw); + const range = new RangeParser(delayRaw); + proxyApplyFn('setTimeout', function(context) { + const { callArgs } = context; + const a = callArgs[0] instanceof Function + ? safe.String(safe.Function_toString(callArgs[0])) + : safe.String(callArgs[0]); + const b = callArgs[1]; + if ( needleRaw === '' && range.unbound() ) { + safe.uboLog(logPrefix, `Called:\n${a}\n${b}`); + return context.reflect(); + } + if ( reNeedle.test(a) !== needleNot && range.test(b) ) { + callArgs[0] = function(){}; + safe.uboLog(logPrefix, `Prevented:\n${a}\n${b}`); + } + return context.reflect(); + }); +} +registerScriptlet(preventSetTimeout, { + name: 'prevent-setTimeout.js', + aliases: [ + 'no-setTimeout-if.js', + 'nostif.js', + 'setTimeout-defuser.js', + ], + dependencies: [ + proxyApplyFn, + RangeParser, + safeSelf, + ], +}); + +/** + * @scriptlet prevent-setInterval + * + * @description + * Conditionally prevent execution of the callback function passed to native + * setInterval method. With no parameters, all calls to setInterval will be + * shown in the logger. + * + * @param [needle] + * A pattern to match against the stringified callback. The pattern can be a + * plain string, or a regex. Prepend with `!` to reverse the match condition. + * No pattern means to match anything. + * + * @param [delay] + * A value to match against the delay. Can be a single value for exact match, + * or a range: + * - `min-max`: matches if delay >= min and delay <= max + * - `min-`: matches if delay >= min + * - `-max`: matches if delay <= max + * No delay means to match any delay value. + * Prepend with `!` to reverse the match condition. + * + * */ + +export function preventSetInterval( + needleRaw = '', + delayRaw = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('prevent-setInterval', needleRaw, delayRaw); + const needleNot = needleRaw.charAt(0) === '!'; + const reNeedle = safe.patternToRegex(needleNot ? needleRaw.slice(1) : needleRaw); + const range = new RangeParser(delayRaw); + proxyApplyFn('setInterval', function(context) { + const { callArgs } = context; + const a = callArgs[0] instanceof Function + ? safe.String(safe.Function_toString(callArgs[0])) + : safe.String(callArgs[0]); + const b = callArgs[1]; + if ( needleRaw === '' && range.unbound() ) { + safe.uboLog(logPrefix, `Called:\n${a}\n${b}`); + return context.reflect(); + } + if ( reNeedle.test(a) !== needleNot && range.test(b) ) { + callArgs[0] = function(){}; + safe.uboLog(logPrefix, `Prevented:\n${a}\n${b}`); + } + return context.reflect(); + }); +} +registerScriptlet(preventSetInterval, { + name: 'prevent-setInterval.js', + aliases: [ + 'no-setInterval-if.js', + 'nosiif.js', + 'setInterval-defuser.js', + ], + dependencies: [ + proxyApplyFn, + RangeParser, + safeSelf, + ], +}); + +/** + * @scriptlet prevent-requestAnimationFrame + * + * @description + * Conditionally prevent execution of the callback function passed to native + * requestAnimationFrame method. With no parameters, all calls to + * requestAnimationFrame will be shown in the logger. + * + * @param [needle] + * A pattern to match against the stringified callback. The pattern can be a + * plain string, or a regex. + * Prepend with `!` to reverse the match condition. + * + * */ + +export function preventRequestAnimationFrame( + needleRaw = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('prevent-requestAnimationFrame', needleRaw); + const needleNot = needleRaw.charAt(0) === '!'; + const reNeedle = safe.patternToRegex(needleNot ? needleRaw.slice(1) : needleRaw); + proxyApplyFn('requestAnimationFrame', function(context) { + const { callArgs } = context; + const a = callArgs[0] instanceof Function + ? safe.String(safe.Function_toString(callArgs[0])) + : safe.String(callArgs[0]); + if ( needleRaw === '' ) { + safe.uboLog(logPrefix, `Called:\n${a}`); + } else if ( reNeedle.test(a) !== needleNot ) { + callArgs[0] = function(){}; + safe.uboLog(logPrefix, `Prevented:\n${a}`); + } + return context.reflect(); + }); +} +registerScriptlet(preventRequestAnimationFrame, { + name: 'prevent-requestAnimationFrame.js', + aliases: [ + 'no-requestAnimationFrame-if.js', + 'norafif.js', + ], + dependencies: [ + proxyApplyFn, + safeSelf, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-xhr.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-xhr.js new file mode 100644 index 00000000..e25a7e89 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/prevent-xhr.js @@ -0,0 +1,270 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { + generateContentFn, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, +} from './utils.js'; +import { proxyApplyFn } from './proxy-apply.js'; +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +// Externally added to the private namespace in which scriptlets execute. +/* global scriptletGlobals */ + +/******************************************************************************/ + +function preventXhrFn( + trusted = false, + propsToMatch = '', + directive = '' +) { + if ( typeof propsToMatch !== 'string' ) { return; } + const safe = safeSelf(); + const scriptletName = trusted ? 'trusted-prevent-xhr' : 'prevent-xhr'; + const logPrefix = safe.makeLogPrefix(scriptletName, propsToMatch, directive); + const xhrInstances = new WeakMap(); + const propNeedles = parsePropertiesToMatchFn(propsToMatch, 'url'); + const warOrigin = scriptletGlobals.warOrigin; + const safeDispatchEvent = (xhr, type) => { + try { + xhr.dispatchEvent(new Event(type)); + } catch { + } + }; + proxyApplyFn('XMLHttpRequest.prototype.open', function(context) { + const { thisArg, callArgs } = context; + xhrInstances.delete(thisArg); + const [ method, url, ...args ] = callArgs; + if ( warOrigin !== undefined && url.startsWith(warOrigin) ) { + return context.reflect(); + } + const haystack = { method, url }; + if ( propsToMatch === '' && directive === '' ) { + safe.uboLog(logPrefix, `Called: ${safe.JSON_stringify(haystack, null, 2)}`); + return context.reflect(); + } + if ( matchObjectPropertiesFn(propNeedles, haystack) ) { + const xhrDetails = Object.assign(haystack, { + xhr: thisArg, + defer: args.length === 0 || !!args[0], + directive, + headers: { + 'date': '', + 'content-type': '', + 'content-length': '', + }, + url: haystack.url, + props: { + response: { value: '' }, + responseText: { value: '' }, + responseXML: { value: null }, + }, + }); + xhrInstances.set(thisArg, xhrDetails); + } + return context.reflect(); + }); + proxyApplyFn('XMLHttpRequest.prototype.send', function(context) { + const { thisArg } = context; + const xhrDetails = xhrInstances.get(thisArg); + if ( xhrDetails === undefined ) { + return context.reflect(); + } + xhrDetails.headers['date'] = (new Date()).toUTCString(); + let xhrText = ''; + switch ( thisArg.responseType ) { + case 'arraybuffer': + xhrDetails.props.response.value = new ArrayBuffer(0); + xhrDetails.headers['content-type'] = 'application/octet-stream'; + break; + case 'blob': + xhrDetails.props.response.value = new Blob([]); + xhrDetails.headers['content-type'] = 'application/octet-stream'; + break; + case 'document': { + const parser = new DOMParser(); + const doc = parser.parseFromString('', 'text/html'); + xhrDetails.props.response.value = doc; + xhrDetails.props.responseXML.value = doc; + xhrDetails.headers['content-type'] = 'text/html'; + break; + } + case 'json': + xhrDetails.props.response.value = {}; + xhrDetails.props.responseText.value = '{}'; + xhrDetails.headers['content-type'] = 'application/json'; + break; + default: { + if ( directive === '' ) { break; } + xhrText = generateContentFn(trusted, xhrDetails.directive); + if ( xhrText instanceof Promise ) { + xhrText = xhrText.then(text => { + xhrDetails.props.response.value = text; + xhrDetails.props.responseText.value = text; + }); + } else { + xhrDetails.props.response.value = xhrText; + xhrDetails.props.responseText.value = xhrText; + } + xhrDetails.headers['content-type'] = 'text/plain'; + break; + } + } + if ( xhrDetails.defer === false ) { + xhrDetails.headers['content-length'] = `${xhrDetails.props.response.value}`.length; + Object.defineProperties(xhrDetails.xhr, { + readyState: { value: 4 }, + responseURL: { value: xhrDetails.url }, + status: { value: 200 }, + statusText: { value: 'OK' }, + }); + Object.defineProperties(xhrDetails.xhr, xhrDetails.props); + return; + } + Promise.resolve(xhrText).then(( ) => xhrDetails).then(details => { + Object.defineProperties(details.xhr, { + readyState: { value: 1, configurable: true }, + responseURL: { value: xhrDetails.url }, + }); + safeDispatchEvent(details.xhr, 'readystatechange'); + return details; + }).then(details => { + xhrDetails.headers['content-length'] = `${details.props.response.value}`.length; + Object.defineProperties(details.xhr, { + readyState: { value: 2, configurable: true }, + status: { value: 200 }, + statusText: { value: 'OK' }, + }); + safeDispatchEvent(details.xhr, 'readystatechange'); + return details; + }).then(details => { + Object.defineProperties(details.xhr, { + readyState: { value: 3, configurable: true }, + }); + Object.defineProperties(details.xhr, details.props); + safeDispatchEvent(details.xhr, 'readystatechange'); + return details; + }).then(details => { + Object.defineProperties(details.xhr, { + readyState: { value: 4 }, + }); + safeDispatchEvent(details.xhr, 'readystatechange'); + safeDispatchEvent(details.xhr, 'load'); + safeDispatchEvent(details.xhr, 'loadend'); + safe.uboLog(logPrefix, `Prevented with response:\n${details.xhr.response}`); + }); + }); + proxyApplyFn('XMLHttpRequest.prototype.getResponseHeader', function(context) { + const { thisArg } = context; + const xhrDetails = xhrInstances.get(thisArg); + if ( xhrDetails === undefined || thisArg.readyState < thisArg.HEADERS_RECEIVED ) { + return context.reflect(); + } + const headerName = `${context.callArgs[0]}`; + const value = xhrDetails.headers[headerName.toLowerCase()]; + if ( value !== undefined && value !== '' ) { return value; } + return null; + }); + proxyApplyFn('XMLHttpRequest.prototype.getAllResponseHeaders', function(context) { + const { thisArg } = context; + const xhrDetails = xhrInstances.get(thisArg); + if ( xhrDetails === undefined || thisArg.readyState < thisArg.HEADERS_RECEIVED ) { + return context.reflect(); + } + const out = []; + for ( const [ name, value ] of Object.entries(xhrDetails.headers) ) { + if ( !value ) { continue; } + out.push(`${name}: ${value}`); + } + if ( out.length !== 0 ) { out.push(''); } + return out.join('\r\n'); + }); +} +registerScriptlet(preventXhrFn, { + name: 'prevent-xhr.fn', + dependencies: [ + generateContentFn, + matchObjectPropertiesFn, + parsePropertiesToMatchFn, + proxyApplyFn, + safeSelf, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet prevent-xhr + * + * @description + * Prevent a XMLHttpRequest-baesed request from being sent to a remote server. + * + * @param propsToMatch + * The fetch arguments to match for the prevention to be triggered. The + * untrusted flavor limits the realm of response to return to safe values. + * + * @param [responseBody] + * Optional. The reponse to return when the prevention occurs. The response + * must be a safe constant value. + * + * */ + +function preventXhr(...args) { + return preventXhrFn(false, ...args); +} +registerScriptlet(preventXhr, { + name: 'prevent-xhr.js', + aliases: [ + 'no-xhr-if.js', + ], + dependencies: [ + preventXhrFn, + ], +}); + +/******************************************************************************/ +/** + * @scriptlet trusted-prevent-xhr + * + * @description + * Prevent a XMLHttpRequest-based request from being sent to a remote server. + * + * @param propsToMatch + * The fetch arguments to match for the prevention to be triggered. The + * untrusted flavor limits the realm of response to return to safe values. + * + * @param [responseBody] + * Optional. The reponse to return when the prevention occurs. The trusted + * version allows arbitrary response. + * + * */ + +function trustedPreventXhr(...args) { + return preventXhrFn(true, ...args); +} +registerScriptlet(trustedPreventXhr, { + name: 'trusted-prevent-xhr.js', + dependencies: [ + preventXhrFn, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/proxy-apply.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/proxy-apply.js new file mode 100644 index 00000000..125e4300 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/proxy-apply.js @@ -0,0 +1,124 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { registerScriptlet } from './base.js'; + +/******************************************************************************/ + +export function proxyApplyFn( + target = '', + handler = '' +) { + let context = globalThis; + let prop = target; + for (;;) { + const pos = prop.indexOf('.'); + if ( pos === -1 ) { break; } + context = context[prop.slice(0, pos)]; + if ( context instanceof Object === false ) { return; } + prop = prop.slice(pos+1); + } + const fn = context[prop]; + if ( typeof fn !== 'function' ) { return; } + if ( proxyApplyFn.CtorContext === undefined ) { + proxyApplyFn.ctorContexts = []; + proxyApplyFn.CtorContext = class { + constructor(...args) { + this.init(...args); + } + init(callFn, callArgs) { + this.callFn = callFn; + this.callArgs = callArgs; + return this; + } + reflect() { + const r = Reflect.construct(this.callFn, this.callArgs); + this.callFn = this.callArgs = this.private = undefined; + proxyApplyFn.ctorContexts.push(this); + return r; + } + static factory(...args) { + return proxyApplyFn.ctorContexts.length !== 0 + ? proxyApplyFn.ctorContexts.pop().init(...args) + : new proxyApplyFn.CtorContext(...args); + } + }; + proxyApplyFn.applyContexts = []; + proxyApplyFn.ApplyContext = class { + constructor(...args) { + this.init(...args); + } + init(callFn, thisArg, callArgs) { + this.callFn = callFn; + this.thisArg = thisArg; + this.callArgs = callArgs; + return this; + } + reflect() { + const r = Reflect.apply(this.callFn, this.thisArg, this.callArgs); + this.callFn = this.thisArg = this.callArgs = this.private = undefined; + proxyApplyFn.applyContexts.push(this); + return r; + } + static factory(...args) { + return proxyApplyFn.applyContexts.length !== 0 + ? proxyApplyFn.applyContexts.pop().init(...args) + : new proxyApplyFn.ApplyContext(...args); + } + }; + proxyApplyFn.isCtor = new Map(); + proxyApplyFn.proxies = new WeakMap(); + proxyApplyFn.nativeToString = Function.prototype.toString; + const proxiedToString = new Proxy(Function.prototype.toString, { + apply(target, thisArg) { + let proxied = thisArg; + for(;;) { + const fn = proxyApplyFn.proxies.get(proxied); + if ( fn === undefined ) { break; } + proxied = fn; + } + return proxyApplyFn.nativeToString.call(proxied); + } + }); + proxyApplyFn.proxies.set(proxiedToString, proxyApplyFn.nativeToString); + Function.prototype.toString = proxiedToString; + } + if ( proxyApplyFn.isCtor.has(target) === false ) { + proxyApplyFn.isCtor.set(target, fn.prototype?.constructor === fn); + } + const proxyDetails = { + apply(target, thisArg, args) { + return handler(proxyApplyFn.ApplyContext.factory(target, thisArg, args)); + } + }; + if ( proxyApplyFn.isCtor.get(target) ) { + proxyDetails.construct = function(target, args) { + return handler(proxyApplyFn.CtorContext.factory(target, args)); + }; + } + const proxiedTarget = new Proxy(fn, proxyDetails); + proxyApplyFn.proxies.set(proxiedTarget, fn); + context[prop] = proxiedTarget; +} +registerScriptlet(proxyApplyFn, { + name: 'proxy-apply.fn', +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/replace-argument.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/replace-argument.js new file mode 100644 index 00000000..53162f09 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/replace-argument.js @@ -0,0 +1,132 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { parseReplaceFn } from './parse-replace.js'; +import { proxyApplyFn } from './proxy-apply.js'; +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; +import { validateConstantFn } from './set-constant.js'; + +/** + * @scriptlet trusted-replace-argument.js + * + * @description + * Replace an argument passed to a method. Requires a trusted source. + * + * @param propChain + * The property chain to the function which argument must be replaced when + * called. + * + * @param argposRaw + * The zero-based position of the argument in the argument list. Use a negative + * number for a position relative to the last argument. Use literal `this` to + * replace the value used in `prototype`-based methods. + * + * @param argraw + * The replacement value, validated using the same heuristic as with the + * `set-constant.js` scriptlet. + * If the replacement value matches `json:...`, the value will be the + * json-parsed string after `json:`. + * If the replacement value matches `repl:/.../.../`, the target argument will + * be replaced according the regex-replacement directive following `repl:` + * If the replacement value matches `add:number`, number will be added to the + * target argument. + * + * @param [, condition, pattern] + * Optional. The replacement will occur only when pattern matches the target + * argument. + * + * */ + +export function trustedReplaceArgument( + propChain = '', + argposRaw = '', + argraw = '' +) { + if ( propChain === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('trusted-replace-argument', propChain, argposRaw, argraw); + const argoffset = parseInt(argposRaw, 10) || 0; + const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); + let replacer; + if ( argraw.startsWith('repl:/') ) { + const parsed = parseReplaceFn(argraw.slice(5)); + if ( parsed === undefined ) { return; } + replacer = arg => `${arg}`.replace(replacer.re, replacer.replacement); + Object.assign(replacer, parsed); + } else if ( argraw.startsWith('add:') ) { + const delta = parseFloat(argraw.slice(4)); + if ( isNaN(delta) ) { return; } + replacer = arg => Number(arg) + delta; + } else { + const value = validateConstantFn(true, argraw, extraArgs); + replacer = ( ) => value; + } + const reCondition = extraArgs.condition + ? safe.patternToRegex(`${extraArgs.condition}`) + : /^/; + const getArg = context => { + if ( argposRaw === 'this' ) { return context.thisArg; } + const { callArgs } = context; + const argpos = argoffset >= 0 ? argoffset : callArgs.length - argoffset; + if ( argpos < 0 || argpos >= callArgs.length ) { return; } + context.private = { argpos }; + return callArgs[argpos]; + }; + const setArg = (context, value) => { + if ( argposRaw === 'this' ) { + if ( value !== context.thisArg ) { + context.thisArg = value; + } + } else if ( context.private ) { + context.callArgs[context.private.argpos] = value; + } + }; + proxyApplyFn(propChain, function(context) { + if ( argposRaw === '' ) { + safe.uboLog(logPrefix, `Arguments:\n${context.callArgs.join('\n')}`); + return context.reflect(); + } + const argBefore = getArg(context); + if ( extraArgs.condition !== undefined ) { + if ( safe.RegExp_test.call(reCondition, argBefore) === false ) { + return context.reflect(); + } + } + const argAfter = replacer(argBefore); + if ( argAfter !== argBefore ) { + setArg(context, argAfter); + safe.uboLog(logPrefix, `Replaced argument:\nBefore: ${JSON.stringify(argBefore)}\nAfter: ${argAfter}`); + } + return context.reflect(); + }); +} +registerScriptlet(trustedReplaceArgument, { + name: 'trusted-replace-argument.js', + requiresTrust: true, + dependencies: [ + parseReplaceFn, + proxyApplyFn, + safeSelf, + validateConstantFn, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/run-at.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/run-at.js new file mode 100644 index 00000000..35036d2b --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/run-at.js @@ -0,0 +1,96 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/* eslint no-prototype-builtins: 0 */ + +/** + * @helperScriptlet run-at.fn + * + * @description + * Execute a function at a specific page-load milestone. + * + * @param fn + * The function to call. + * + * @param when + * An identifier which tells when the function should be executed. + * See . + * + * @example + * `runAt(( ) => { start(); }, 'interactive')` + * + * */ + +export function runAt(fn, when) { + const intFromReadyState = state => { + const targets = { + 'loading': 1, 'asap': 1, + 'interactive': 2, 'end': 2, '2': 2, + 'complete': 3, 'idle': 3, '3': 3, + }; + const tokens = Array.isArray(state) ? state : [ state ]; + for ( const token of tokens ) { + const prop = `${token}`; + if ( Object.hasOwn(targets, prop) === false ) { continue; } + return targets[prop]; + } + return 0; + }; + const runAt = intFromReadyState(when); + if ( intFromReadyState(document.readyState) >= runAt ) { + fn(); return; + } + const onStateChange = ( ) => { + if ( intFromReadyState(document.readyState) < runAt ) { return; } + fn(); + safe.removeEventListener.apply(document, args); + }; + const safe = safeSelf(); + const args = [ 'readystatechange', onStateChange, { capture: true } ]; + safe.addEventListener.apply(document, args); +} +registerScriptlet(runAt, { + name: 'run-at.fn', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ + +export function runAtHtmlElementFn(fn) { + if ( document.documentElement ) { + fn(); + return; + } + const observer = new MutationObserver(( ) => { + observer.disconnect(); + fn(); + }); + observer.observe(document, { childList: true }); +} +registerScriptlet(runAtHtmlElementFn, { + name: 'run-at-html-element.fn', +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/safe-self.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/safe-self.js new file mode 100644 index 00000000..03a6e45e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/safe-self.js @@ -0,0 +1,210 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { registerScriptlet } from './base.js'; + +/******************************************************************************/ + +// Externally added to the private namespace in which scriptlets execute. +/* global scriptletGlobals */ + +export function safeSelf() { + if ( scriptletGlobals.safeSelf ) { + return scriptletGlobals.safeSelf; + } + const self = globalThis; + const safe = { + 'Array_from': Array.from, + 'Error': self.Error, + 'Function_toStringFn': self.Function.prototype.toString, + 'Function_toString': thisArg => safe.Function_toStringFn.call(thisArg), + 'Math_floor': Math.floor, + 'Math_max': Math.max, + 'Math_min': Math.min, + 'Math_random': Math.random, + 'Object': Object, + 'Object_defineProperty': Object.defineProperty.bind(Object), + 'Object_defineProperties': Object.defineProperties.bind(Object), + 'Object_fromEntries': Object.fromEntries.bind(Object), + 'Object_getOwnPropertyDescriptor': Object.getOwnPropertyDescriptor.bind(Object), + 'Object_hasOwn': Object.hasOwn.bind(Object), + 'Object_toString': Object.prototype.toString, + 'RegExp': self.RegExp, + 'RegExp_test': self.RegExp.prototype.test, + 'RegExp_exec': self.RegExp.prototype.exec, + 'Request_clone': self.Request.prototype.clone, + 'String': self.String, + 'String_fromCharCode': String.fromCharCode, + 'String_split': String.prototype.split, + 'XMLHttpRequest': self.XMLHttpRequest, + 'addEventListener': self.EventTarget.prototype.addEventListener, + 'removeEventListener': self.EventTarget.prototype.removeEventListener, + 'fetch': self.fetch, + 'JSON': self.JSON, + 'JSON_parseFn': self.JSON.parse, + 'JSON_stringifyFn': self.JSON.stringify, + 'JSON_parse': (...args) => safe.JSON_parseFn.call(safe.JSON, ...args), + 'JSON_stringify': (...args) => safe.JSON_stringifyFn.call(safe.JSON, ...args), + 'log': console.log.bind(console), + // Properties + logLevel: 0, + // Methods + makeLogPrefix(...args) { + return this.sendToLogger && `[${args.join(' \u205D ')}]` || ''; + }, + uboLog(...args) { + if ( this.sendToLogger === undefined ) { return; } + if ( args === undefined || args[0] === '' ) { return; } + return this.sendToLogger('info', ...args); + + }, + uboErr(...args) { + if ( this.sendToLogger === undefined ) { return; } + if ( args === undefined || args[0] === '' ) { return; } + return this.sendToLogger('error', ...args); + }, + escapeRegexChars(s) { + return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); + }, + initPattern(pattern, options = {}) { + if ( pattern === '' ) { + return { matchAll: true, expect: true }; + } + const expect = (options.canNegate !== true || pattern.startsWith('!') === false); + if ( expect === false ) { + pattern = pattern.slice(1); + } + const match = /^\/(.+)\/([gimsu]*)$/.exec(pattern); + if ( match !== null ) { + return { + re: new this.RegExp( + match[1], + match[2] || options.flags + ), + expect, + }; + } + if ( options.flags !== undefined ) { + return { + re: new this.RegExp(this.escapeRegexChars(pattern), + options.flags + ), + expect, + }; + } + return { pattern, expect }; + }, + testPattern(details, haystack) { + if ( details.matchAll ) { return true; } + if ( details.re ) { + return this.RegExp_test.call(details.re, haystack) === details.expect; + } + return haystack.includes(details.pattern) === details.expect; + }, + patternToRegex(pattern, flags = undefined, verbatim = false) { + if ( pattern === '' ) { return /^/; } + const match = /^\/(.+)\/([gimsu]*)$/.exec(pattern); + if ( match === null ) { + const reStr = this.escapeRegexChars(pattern); + return new RegExp(verbatim ? `^${reStr}$` : reStr, flags); + } + try { + return new RegExp(match[1], match[2] || undefined); + } + catch { + } + return /^/; + }, + getExtraArgs(args, offset = 0) { + const entries = args.slice(offset).reduce((out, v, i, a) => { + if ( (i & 1) === 0 ) { + const rawValue = a[i+1]; + const value = /^\d+$/.test(rawValue) + ? parseInt(rawValue, 10) + : rawValue; + out.push([ a[i], value ]); + } + return out; + }, []); + return this.Object_fromEntries(entries); + }, + }; + scriptletGlobals.safeSelf = safe; + if ( scriptletGlobals.bcSecret === undefined ) { return safe; } + // This is executed only when the logger is opened + safe.logLevel = scriptletGlobals.logLevel || 1; + let lastLogType = ''; + let lastLogText = ''; + let lastLogTime = 0; + safe.toLogText = (type, ...args) => { + if ( args.length === 0 ) { return; } + const text = `[${document.location.hostname || document.location.href}]${args.join(' ')}`; + if ( text === lastLogText && type === lastLogType ) { + if ( (Date.now() - lastLogTime) < 5000 ) { return; } + } + lastLogType = type; + lastLogText = text; + lastLogTime = Date.now(); + return text; + }; + try { + const bc = new self.BroadcastChannel(scriptletGlobals.bcSecret); + let bcBuffer = []; + safe.sendToLogger = (type, ...args) => { + const text = safe.toLogText(type, ...args); + if ( text === undefined ) { return; } + if ( bcBuffer === undefined ) { + return bc.postMessage({ what: 'messageToLogger', type, text }); + } + bcBuffer.push({ type, text }); + }; + bc.onmessage = ev => { + const msg = ev.data; + switch ( msg ) { + case 'iamready!': + if ( bcBuffer === undefined ) { break; } + bcBuffer.forEach(({ type, text }) => + bc.postMessage({ what: 'messageToLogger', type, text }) + ); + bcBuffer = undefined; + break; + case 'setScriptletLogLevelToOne': + safe.logLevel = 1; + break; + case 'setScriptletLogLevelToTwo': + safe.logLevel = 2; + break; + } + }; + bc.postMessage('areyouready?'); + } catch { + safe.sendToLogger = (type, ...args) => { + const text = safe.toLogText(type, ...args); + if ( text === undefined ) { return; } + safe.log(`uBO ${text}`); + }; + } + return safe; +} +registerScriptlet(safeSelf, { + name: 'safe-self.fn', +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/scriptlets.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/scriptlets.js new file mode 100644 index 00000000..dc78e069 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/scriptlets.js @@ -0,0 +1,2237 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import './attribute.js'; +import './create-html.js'; +import './href-sanitizer.js'; +import './json-edit.js'; +import './json-prune.js'; +import './noeval.js'; +import './object-prune.js'; +import './prevent-addeventlistener.js'; +import './prevent-dialog.js'; +import './prevent-fetch.js'; +import './prevent-innerHTML.js'; +import './prevent-navigation.js'; +import './prevent-settimeout.js'; +import './prevent-xhr.js'; +import './replace-argument.js'; +import './spoof-css.js'; + +import { + collateFetchArgumentsFn, + getExceptionTokenFn, + getRandomTokenFn, + lookupElementsFn, + matchObjectPropertiesFn, + onIdleFn, + parsePropertiesToMatchFn, +} from './utils.js'; +import { runAt, runAtHtmlElementFn } from './run-at.js'; + +import { getAllCookiesFn } from './cookie.js'; +import { getAllLocalStorageFn } from './localstorage.js'; +import { matchesStackTraceFn } from './stack-trace.js'; +import { proxyApplyFn } from './proxy-apply.js'; +import { registeredScriptlets } from './base.js'; +import { safeSelf } from './safe-self.js'; +import { validateConstantFn } from './set-constant.js'; + +// Externally added to the private namespace in which scriptlets execute. +/* global scriptletGlobals */ + +/* eslint no-prototype-builtins: 0 */ + +export const builtinScriptlets = registeredScriptlets; + +/******************************************************************************* + + Helper functions + + These are meant to be used as dependencies to injectable scriptlets. + +*******************************************************************************/ + +builtinScriptlets.push({ + name: 'should-debug.fn', + fn: shouldDebug, +}); +function shouldDebug(details) { + if ( details instanceof Object === false ) { return false; } + return scriptletGlobals.canDebug && details.debug; +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'abort-current-script.fn', + fn: abortCurrentScriptFn, + dependencies: [ + 'get-exception-token.fn', + 'safe-self.fn', + 'should-debug.fn', + ], +}); +// Issues to mind before changing anything: +// https://github.com/uBlockOrigin/uBlock-issues/issues/2154 +function abortCurrentScriptFn( + target = '', + needle = '', + context = '' +) { + if ( typeof target !== 'string' ) { return; } + if ( target === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('abort-current-script', target, needle, context); + const reNeedle = safe.patternToRegex(needle); + const reContext = safe.patternToRegex(context); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); + const thisScript = document.currentScript; + const chain = safe.String_split.call(target, '.'); + let owner = window; + let prop; + for (;;) { + prop = chain.shift(); + if ( chain.length === 0 ) { break; } + if ( prop in owner === false ) { break; } + owner = owner[prop]; + if ( owner instanceof Object === false ) { return; } + } + let value; + let desc = Object.getOwnPropertyDescriptor(owner, prop); + if ( + desc instanceof Object === false || + desc.get instanceof Function === false + ) { + value = owner[prop]; + desc = undefined; + } + const debug = shouldDebug(extraArgs); + const exceptionToken = getExceptionTokenFn(); + const scriptTexts = new WeakMap(); + const textContentGetter = Object.getOwnPropertyDescriptor(Node.prototype, 'textContent').get; + const getScriptText = elem => { + let text = textContentGetter.call(elem); + if ( text.trim() !== '' ) { return text; } + if ( scriptTexts.has(elem) ) { return scriptTexts.get(elem); } + const [ , mime, content ] = + /^data:([^,]*),(.+)$/.exec(elem.src.trim()) || + [ '', '', '' ]; + try { + switch ( true ) { + case mime.endsWith(';base64'): + text = self.atob(content); + break; + default: + text = self.decodeURIComponent(content); + break; + } + } catch { + } + scriptTexts.set(elem, text); + return text; + }; + const validate = ( ) => { + const e = document.currentScript; + if ( e instanceof HTMLScriptElement === false ) { return; } + if ( e === thisScript ) { return; } + if ( context !== '' && reContext.test(e.src) === false ) { + // eslint-disable-next-line no-debugger + if ( debug === 'nomatch' || debug === 'all' ) { debugger; } + return; + } + if ( safe.logLevel > 1 && context !== '' ) { + safe.uboLog(logPrefix, `Matched src\n${e.src}`); + } + const scriptText = getScriptText(e); + if ( reNeedle.test(scriptText) === false ) { + // eslint-disable-next-line no-debugger + if ( debug === 'nomatch' || debug === 'all' ) { debugger; } + return; + } + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Matched text\n${scriptText}`); + } + // eslint-disable-next-line no-debugger + if ( debug === 'match' || debug === 'all' ) { debugger; } + safe.uboLog(logPrefix, 'Aborted'); + throw new ReferenceError(exceptionToken); + }; + // eslint-disable-next-line no-debugger + if ( debug === 'install' ) { debugger; } + try { + Object.defineProperty(owner, prop, { + get: function() { + validate(); + return desc instanceof Object + ? desc.get.call(owner) + : value; + }, + set: function(a) { + validate(); + if ( desc instanceof Object ) { + desc.set.call(owner, a); + } else { + value = a; + } + } + }); + } catch(ex) { + safe.uboErr(logPrefix, `Error: ${ex}`); + } +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'replace-node-text.fn', + fn: replaceNodeTextFn, + dependencies: [ + 'get-random-token.fn', + 'run-at.fn', + 'safe-self.fn', + ], +}); +function replaceNodeTextFn( + nodeName = '', + pattern = '', + replacement = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('replace-node-text.fn', ...Array.from(arguments)); + const reNodeName = safe.patternToRegex(nodeName, 'i', true); + const rePattern = safe.patternToRegex(pattern, 'gms'); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); + const reIncludes = extraArgs.includes || extraArgs.condition + ? safe.patternToRegex(extraArgs.includes || extraArgs.condition, 'ms') + : null; + const reExcludes = extraArgs.excludes + ? safe.patternToRegex(extraArgs.excludes, 'ms') + : null; + const stop = (takeRecord = true) => { + if ( takeRecord ) { + handleMutations(observer.takeRecords()); + } + observer.disconnect(); + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, 'Quitting'); + } + }; + const textContentFactory = (( ) => { + const out = { createScript: s => s }; + const { trustedTypes: tt } = self; + if ( tt instanceof Object ) { + if ( typeof tt.getPropertyType === 'function' ) { + if ( tt.getPropertyType('script', 'textContent') === 'TrustedScript' ) { + return tt.createPolicy(getRandomTokenFn(), out); + } + } + } + return out; + })(); + let sedCount = extraArgs.sedCount || 0; + const handleNode = node => { + const before = node.textContent; + if ( reIncludes ) { + reIncludes.lastIndex = 0; + if ( safe.RegExp_test.call(reIncludes, before) === false ) { return true; } + } + if ( reExcludes ) { + reExcludes.lastIndex = 0; + if ( safe.RegExp_test.call(reExcludes, before) ) { return true; } + } + rePattern.lastIndex = 0; + if ( safe.RegExp_test.call(rePattern, before) === false ) { return true; } + rePattern.lastIndex = 0; + const after = pattern !== '' + ? before.replace(rePattern, replacement) + : replacement; + node.textContent = node.nodeName === 'SCRIPT' + ? textContentFactory.createScript(after) + : after; + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Text before:\n${before.trim()}`); + } + safe.uboLog(logPrefix, `Text after:\n${after.trim()}`); + return sedCount === 0 || (sedCount -= 1) !== 0; + }; + const handleMutations = mutations => { + for ( const mutation of mutations ) { + for ( const node of mutation.addedNodes ) { + if ( reNodeName.test(node.nodeName) === false ) { continue; } + if ( handleNode(node) ) { continue; } + stop(false); return; + } + } + }; + const observer = new MutationObserver(handleMutations); + observer.observe(document, { childList: true, subtree: true }); + if ( document.documentElement ) { + const treeWalker = document.createTreeWalker( + document.documentElement, + NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_TEXT + ); + let count = 0; + for (;;) { + const node = treeWalker.nextNode(); + count += 1; + if ( node === null ) { break; } + if ( reNodeName.test(node.nodeName) === false ) { continue; } + if ( node === document.currentScript ) { continue; } + if ( handleNode(node) ) { continue; } + stop(); break; + } + safe.uboLog(logPrefix, `${count} nodes present before installing mutation observer`); + } + if ( extraArgs.stay ) { return; } + runAt(( ) => { + const quitAfter = extraArgs.quitAfter || 0; + if ( quitAfter !== 0 ) { + setTimeout(( ) => { stop(); }, quitAfter); + } else { + stop(); + } + }, 'interactive'); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'replace-fetch-response.fn', + fn: replaceFetchResponseFn, + dependencies: [ + 'collate-fetch-arguments.fn', + 'match-object-properties.fn', + 'parse-properties-to-match.fn', + 'safe-self.fn', + ], +}); +function replaceFetchResponseFn( + trusted = false, + pattern = '', + replacement = '', + propsToMatch = '' +) { + if ( trusted !== true ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('replace-fetch-response', pattern, replacement, propsToMatch); + if ( pattern === '*' ) { pattern = '.*'; } + const rePattern = safe.patternToRegex(pattern); + const propNeedles = parsePropertiesToMatchFn(propsToMatch, 'url'); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 4); + const reIncludes = extraArgs.includes ? safe.patternToRegex(extraArgs.includes) : null; + self.fetch = new Proxy(self.fetch, { + apply: function(target, thisArg, args) { + const fetchPromise = Reflect.apply(target, thisArg, args); + if ( pattern === '' ) { return fetchPromise; } + if ( propNeedles.size !== 0 ) { + const props = collateFetchArgumentsFn(...args); + const matched = matchObjectPropertiesFn(propNeedles, props); + if ( matched === undefined ) { return fetchPromise; } + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Matched "propsToMatch":\n\t${matched.join('\n\t')}`); + } + } + return fetchPromise.then(responseBefore => { + const response = responseBefore.clone(); + return response.text().then(textBefore => { + if ( reIncludes && reIncludes.test(textBefore) === false ) { + return responseBefore; + } + const textAfter = textBefore.replace(rePattern, replacement); + if ( textAfter === textBefore ) { return responseBefore; } + safe.uboLog(logPrefix, 'Replaced'); + const responseAfter = new Response(textAfter, { + status: responseBefore.status, + statusText: responseBefore.statusText, + headers: responseBefore.headers, + }); + Object.defineProperties(responseAfter, { + ok: { value: responseBefore.ok }, + redirected: { value: responseBefore.redirected }, + type: { value: responseBefore.type }, + url: { value: responseBefore.url }, + }); + return responseAfter; + }).catch(reason => { + safe.uboErr(logPrefix, reason); + return responseBefore; + }); + }).catch(reason => { + safe.uboErr(logPrefix, reason); + return fetchPromise; + }); + } + }); +} + + + +/******************************************************************************* + + Injectable scriptlets + + These are meant to be used in the MAIN (webpage) execution world. + +*******************************************************************************/ + +builtinScriptlets.push({ + name: 'abort-current-script.js', + aliases: [ + 'acs.js', + 'abort-current-inline-script.js', + 'acis.js', + ], + fn: abortCurrentScript, + dependencies: [ + 'abort-current-script.fn', + 'run-at-html-element.fn', + ], +}); +// Issues to mind before changing anything: +// https://github.com/uBlockOrigin/uBlock-issues/issues/2154 +function abortCurrentScript(...args) { + runAtHtmlElementFn(( ) => { + abortCurrentScriptFn(...args); + }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'abort-on-property-read.js', + aliases: [ + 'aopr.js', + ], + fn: abortOnPropertyRead, + dependencies: [ + 'get-exception-token.fn', + 'safe-self.fn', + ], +}); +function abortOnPropertyRead( + chain = '' +) { + if ( typeof chain !== 'string' ) { return; } + if ( chain === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('abort-on-property-read', chain); + const exceptionToken = getExceptionTokenFn(); + const abort = function() { + safe.uboLog(logPrefix, 'Aborted'); + throw new ReferenceError(exceptionToken); + }; + const makeProxy = function(owner, chain) { + const pos = chain.indexOf('.'); + if ( pos === -1 ) { + const desc = Object.getOwnPropertyDescriptor(owner, chain); + if ( !desc || desc.get !== abort ) { + Object.defineProperty(owner, chain, { + get: abort, + set: function(){} + }); + } + return; + } + const prop = chain.slice(0, pos); + let v = owner[prop]; + chain = chain.slice(pos + 1); + if ( v ) { + makeProxy(v, chain); + return; + } + const desc = Object.getOwnPropertyDescriptor(owner, prop); + if ( desc && desc.set !== undefined ) { return; } + Object.defineProperty(owner, prop, { + get: function() { return v; }, + set: function(a) { + v = a; + if ( a instanceof Object ) { + makeProxy(a, chain); + } + } + }); + }; + const owner = window; + makeProxy(owner, chain); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'abort-on-property-write.js', + aliases: [ + 'aopw.js', + ], + fn: abortOnPropertyWrite, + dependencies: [ + 'get-exception-token.fn', + 'safe-self.fn', + ], +}); +function abortOnPropertyWrite( + prop = '' +) { + if ( typeof prop !== 'string' ) { return; } + if ( prop === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('abort-on-property-write', prop); + const exceptionToken = getExceptionTokenFn(); + let owner = window; + for (;;) { + const pos = prop.indexOf('.'); + if ( pos === -1 ) { break; } + owner = owner[prop.slice(0, pos)]; + if ( owner instanceof Object === false ) { return; } + prop = prop.slice(pos + 1); + } + delete owner[prop]; + Object.defineProperty(owner, prop, { + set: function() { + safe.uboLog(logPrefix, 'Aborted'); + throw new ReferenceError(exceptionToken); + } + }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'adjust-setInterval.js', + aliases: [ + 'nano-setInterval-booster.js', + 'nano-sib.js', + ], + fn: adjustSetInterval, + dependencies: [ + 'safe-self.fn', + ], +}); +// Imported from: +// https://github.com/NanoAdblocker/NanoFilters/blob/1f3be7211bb0809c5106996f52564bf10c4525f7/NanoFiltersSource/NanoResources.txt#L126 +// +// Speed up or down setInterval, 3 optional arguments. +// The payload matcher, a string literal or a JavaScript RegExp, defaults +// to match all. +// delayMatcher +// The delay matcher, an integer, defaults to 1000. +// Use `*` to match any delay. +// boostRatio - The delay multiplier when there is a match, 0.5 speeds up by +// 2 times and 2 slows down by 2 times, defaults to 0.05 or speed up +// 20 times. Speed up and down both cap at 50 times. +function adjustSetInterval( + needleArg = '', + delayArg = '', + boostArg = '' +) { + if ( typeof needleArg !== 'string' ) { return; } + const safe = safeSelf(); + const reNeedle = safe.patternToRegex(needleArg); + let delay = delayArg !== '*' ? parseInt(delayArg, 10) : -1; + if ( isNaN(delay) || isFinite(delay) === false ) { delay = 1000; } + let boost = parseFloat(boostArg); + boost = isNaN(boost) === false && isFinite(boost) + ? Math.min(Math.max(boost, 0.001), 50) + : 0.05; + self.setInterval = new Proxy(self.setInterval, { + apply: function(target, thisArg, args) { + const [ a, b ] = args; + if ( + (delay === -1 || b === delay) && + reNeedle.test(a.toString()) + ) { + args[1] = b * boost; + } + return target.apply(thisArg, args); + } + }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'adjust-setTimeout.js', + aliases: [ + 'nano-setTimeout-booster.js', + 'nano-stb.js', + ], + fn: adjustSetTimeout, + dependencies: [ + 'safe-self.fn', + ], +}); +// Imported from: +// https://github.com/NanoAdblocker/NanoFilters/blob/1f3be7211bb0809c5106996f52564bf10c4525f7/NanoFiltersSource/NanoResources.txt#L82 +// +// Speed up or down setTimeout, 3 optional arguments. +// funcMatcher +// The payload matcher, a string literal or a JavaScript RegExp, defaults +// to match all. +// delayMatcher +// The delay matcher, an integer, defaults to 1000. +// Use `*` to match any delay. +// boostRatio - The delay multiplier when there is a match, 0.5 speeds up by +// 2 times and 2 slows down by 2 times, defaults to 0.05 or speed up +// 20 times. Speed up and down both cap at 50 times. +function adjustSetTimeout( + needleArg = '', + delayArg = '', + boostArg = '' +) { + if ( typeof needleArg !== 'string' ) { return; } + const safe = safeSelf(); + const reNeedle = safe.patternToRegex(needleArg); + let delay = delayArg !== '*' ? parseInt(delayArg, 10) : -1; + if ( isNaN(delay) || isFinite(delay) === false ) { delay = 1000; } + let boost = parseFloat(boostArg); + boost = isNaN(boost) === false && isFinite(boost) + ? Math.min(Math.max(boost, 0.001), 50) + : 0.05; + self.setTimeout = new Proxy(self.setTimeout, { + apply: function(target, thisArg, args) { + const [ a, b ] = args; + if ( + (delay === -1 || b === delay) && + reNeedle.test(a.toString()) + ) { + args[1] = b * boost; + } + return target.apply(thisArg, args); + } + }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'prevent-refresh.js', + aliases: [ + 'refresh-defuser.js', + ], + fn: preventRefresh, + world: 'ISOLATED', + dependencies: [ + 'safe-self.fn', + ], +}); +// https://www.reddit.com/r/uBlockOrigin/comments/q0frv0/while_reading_a_sports_article_i_was_redirected/hf7wo9v/ +function preventRefresh( + delay = '' +) { + if ( typeof delay !== 'string' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('prevent-refresh', delay); + const stop = content => { + window.stop(); + safe.uboLog(logPrefix, `Prevented "${content}"`); + }; + const defuse = ( ) => { + const meta = document.querySelector('meta[http-equiv="refresh" i][content]'); + if ( meta === null ) { return; } + const content = meta.getAttribute('content') || ''; + const ms = delay === '' + ? Math.max(parseFloat(content) || 0, 0) * 500 + : 0; + if ( ms === 0 ) { + stop(content); + } else { + setTimeout(( ) => { stop(content); }, ms); + } + }; + self.addEventListener('load', defuse, { capture: true, once: true }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'remove-class.js', + aliases: [ + 'rc.js', + ], + fn: removeClass, + world: 'ISOLATED', + dependencies: [ + 'on-idle.fn', + 'run-at.fn', + 'safe-self.fn', + ], +}); +function removeClass( + rawToken = '', + rawSelector = '', + behavior = '' +) { + if ( typeof rawToken !== 'string' ) { return; } + if ( rawToken === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('remove-class', rawToken, rawSelector, behavior); + const tokens = safe.String_split.call(rawToken, /\s*\|\s*/); + const selector = tokens + .map(a => `${rawSelector}.${CSS.escape(a)}`) + .join(','); + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Target selector:\n\t${selector}`); + } + const mustStay = /\bstay\b/.test(behavior); + let timer; + const rmclass = ( ) => { + timer = undefined; + try { + const nodes = document.querySelectorAll(selector); + for ( const node of nodes ) { + node.classList.remove(...tokens); + safe.uboLog(logPrefix, 'Removed class(es)'); + } + } catch { + } + if ( mustStay ) { return; } + if ( document.readyState !== 'complete' ) { return; } + observer.disconnect(); + }; + const mutationHandler = mutations => { + if ( timer !== undefined ) { return; } + let skip = true; + for ( let i = 0; i < mutations.length && skip; i++ ) { + const { type, addedNodes, removedNodes } = mutations[i]; + if ( type === 'attributes' ) { skip = false; } + for ( let j = 0; j < addedNodes.length && skip; j++ ) { + if ( addedNodes[j].nodeType === 1 ) { skip = false; break; } + } + for ( let j = 0; j < removedNodes.length && skip; j++ ) { + if ( removedNodes[j].nodeType === 1 ) { skip = false; break; } + } + } + if ( skip ) { return; } + timer = onIdleFn(rmclass, { timeout: 67 }); + }; + const observer = new MutationObserver(mutationHandler); + const start = ( ) => { + rmclass(); + observer.observe(document, { + attributes: true, + attributeFilter: [ 'class' ], + childList: true, + subtree: true, + }); + }; + runAt(( ) => { + start(); + }, /\bcomplete\b/.test(behavior) ? 'idle' : 'loading'); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'webrtc-if.js', + fn: webrtcIf, + dependencies: [ + 'safe-self.fn', + ], +}); +function webrtcIf( + good = '' +) { + if ( typeof good !== 'string' ) { return; } + const safe = safeSelf(); + const reGood = safe.patternToRegex(good); + const rtcName = window.RTCPeerConnection + ? 'RTCPeerConnection' + : (window.webkitRTCPeerConnection ? 'webkitRTCPeerConnection' : ''); + if ( rtcName === '' ) { return; } + const log = console.log.bind(console); + const neuteredPeerConnections = new WeakSet(); + const isGoodConfig = function(instance, config) { + if ( neuteredPeerConnections.has(instance) ) { return false; } + if ( config instanceof Object === false ) { return true; } + if ( Array.isArray(config.iceServers) === false ) { return true; } + for ( const server of config.iceServers ) { + const urls = typeof server.urls === 'string' + ? [ server.urls ] + : server.urls; + if ( Array.isArray(urls) ) { + for ( const url of urls ) { + if ( reGood.test(url) ) { return true; } + } + } + if ( typeof server.username === 'string' ) { + if ( reGood.test(server.username) ) { return true; } + } + if ( typeof server.credential === 'string' ) { + if ( reGood.test(server.credential) ) { return true; } + } + } + neuteredPeerConnections.add(instance); + return false; + }; + const peerConnectionCtor = window[rtcName]; + const peerConnectionProto = peerConnectionCtor.prototype; + peerConnectionProto.createDataChannel = + new Proxy(peerConnectionProto.createDataChannel, { + apply: function(target, thisArg, args) { + if ( isGoodConfig(target, args[1]) === false ) { + log('uBO:', args[1]); + return Reflect.apply(target, thisArg, args.slice(0, 1)); + } + return Reflect.apply(target, thisArg, args); + }, + }); + window[rtcName] = + new Proxy(peerConnectionCtor, { + construct: function(target, args) { + if ( isGoodConfig(target, args[0]) === false ) { + log('uBO:', args[0]); + return Reflect.construct(target); + } + return Reflect.construct(target, args); + } + }); +} + +/** + * @scriptlet prevent-window-open + * + * @description + * Prevent a webpage from opening new tabs through `window.open()`. + * + * @param pattern + * A plain string or regex to match against the `url` argument for the + * prevention to be triggered. If not provided, all calls to `window.open()` + * are prevented. + * If set to the special value `debug` *and* the logger is opened, the scriptlet + * will trigger a `debugger` statement and the prevention will not occur. + * + * @param [delay] + * If provided, a decoy will be created or opened, and this parameter states + * the number of seconds to wait for before the decoy is terminated, i.e. + * either removed from the DOM or closed. + * + * @param [decoy] + * A string representing the type of decoy to use: + * - `blank`: replace the `url` parameter with `about:blank` + * - `object`: create and append an `object` element to the DOM, and return + * its `contentWindow` property. + * - `frame`: create and append an `iframe` element to the DOM, and return + * its `contentWindow` property. + * + * @example + * ##+js(prevent-window-open, ads.example.com/) + * + * @example + * ##+js(prevent-window-open, ads.example.com/, 1, iframe) + * + * */ + +builtinScriptlets.push({ + name: 'prevent-window-open.js', + aliases: [ + 'nowoif.js', + 'no-window-open-if.js', + 'window.open-defuser.js', + ], + fn: noWindowOpenIf, + dependencies: [ + 'proxy-apply.fn', + 'safe-self.fn', + ], +}); +function noWindowOpenIf( + pattern = '', + delay = '', + decoy = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('no-window-open-if', pattern, delay, decoy); + const targetMatchResult = pattern.startsWith('!') === false; + if ( targetMatchResult === false ) { + pattern = pattern.slice(1); + } + const rePattern = safe.patternToRegex(pattern); + const autoRemoveAfter = (parseFloat(delay) || 0) * 1000; + const setTimeout = self.setTimeout; + const createDecoy = function(tag, urlProp, url) { + const decoyElem = document.createElement(tag); + decoyElem[urlProp] = url; + decoyElem.style.setProperty('height','1px', 'important'); + decoyElem.style.setProperty('position','fixed', 'important'); + decoyElem.style.setProperty('top','-1px', 'important'); + decoyElem.style.setProperty('width','1px', 'important'); + document.body.appendChild(decoyElem); + setTimeout(( ) => { decoyElem.remove(); }, autoRemoveAfter); + return decoyElem; + }; + const noopFunc = function(){}; + proxyApplyFn('open', function open(context) { + if ( pattern === 'debug' && safe.logLevel !== 0 ) { + debugger; // eslint-disable-line no-debugger + return context.reflect(); + } + const { callArgs } = context; + const haystack = callArgs.join(' '); + if ( rePattern.test(haystack) !== targetMatchResult ) { + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Allowed (${callArgs.join(', ')})`); + } + return context.reflect(); + } + safe.uboLog(logPrefix, `Prevented (${callArgs.join(', ')})`); + if ( delay === '' ) { return null; } + if ( decoy === 'blank' ) { + callArgs[0] = 'about:blank'; + const r = context.reflect(); + setTimeout(( ) => { r.close(); }, autoRemoveAfter); + return r; + } + const decoyElem = decoy === 'obj' + ? createDecoy('object', 'data', ...callArgs) + : createDecoy('iframe', 'src', ...callArgs); + let popup = decoyElem.contentWindow; + if ( typeof popup === 'object' && popup !== null ) { + Object.defineProperty(popup, 'closed', { value: false }); + } else { + popup = new Proxy(self, { + get: function(target, prop, ...args) { + if ( prop === 'closed' ) { return false; } + const r = Reflect.get(target, prop, ...args); + if ( typeof r === 'function' ) { return noopFunc; } + return r; + }, + set: function(...args) { + return Reflect.set(...args); + }, + }); + } + if ( safe.logLevel !== 0 ) { + popup = new Proxy(popup, { + get: function(target, prop, ...args) { + const r = Reflect.get(target, prop, ...args); + safe.uboLog(logPrefix, `popup / get ${prop} === ${r}`); + if ( typeof r === 'function' ) { + return (...args) => { return r.call(target, ...args); }; + } + return r; + }, + set: function(target, prop, value, ...args) { + safe.uboLog(logPrefix, `popup / set ${prop} = ${value}`); + return Reflect.set(target, prop, value, ...args); + }, + }); + } + return popup; + }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'close-window.js', + aliases: [ + 'window-close-if.js', + ], + fn: closeWindow, + world: 'ISOLATED', + dependencies: [ + 'safe-self.fn', + ], +}); +// https://github.com/uBlockOrigin/uAssets/issues/10323#issuecomment-992312847 +// https://github.com/AdguardTeam/Scriptlets/issues/158 +// https://github.com/uBlockOrigin/uBlock-issues/discussions/2270 +function closeWindow( + arg1 = '' +) { + if ( typeof arg1 !== 'string' ) { return; } + const safe = safeSelf(); + let subject = ''; + if ( /^\/.*\/$/.test(arg1) ) { + subject = window.location.href; + } else if ( arg1 !== '' ) { + subject = `${window.location.pathname}${window.location.search}`; + } + try { + const re = safe.patternToRegex(arg1); + if ( re.test(subject) ) { + window.close(); + } + } catch(ex) { + console.log(ex); + } +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'window.name-defuser.js', + fn: windowNameDefuser, +}); +// https://github.com/gorhill/uBlock/issues/1228 +function windowNameDefuser() { + if ( window === window.top ) { + window.name = ''; + } +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'overlay-buster.js', + fn: overlayBuster, +}); +// Experimental: Generic nuisance overlay buster. +// if this works well and proves to be useful, this may end up +// as a stock tool in uBO's popup panel. +function overlayBuster(allFrames) { + if ( allFrames === '' && window !== window.top ) { return; } + var tstart; + var ttl = 30000; + var delay = 0; + var delayStep = 50; + var buster = function() { + var docEl = document.documentElement, + bodyEl = document.body, + vw = Math.min(docEl.clientWidth, window.innerWidth), + vh = Math.min(docEl.clientHeight, window.innerHeight), + tol = Math.min(vw, vh) * 0.05, + el = document.elementFromPoint(vw/2, vh/2), + style, rect; + for (;;) { + if ( el === null || el.parentNode === null || el === bodyEl ) { + break; + } + style = window.getComputedStyle(el); + if ( parseInt(style.zIndex, 10) >= 1000 || style.position === 'fixed' ) { + rect = el.getBoundingClientRect(); + if ( rect.left <= tol && rect.top <= tol && (vw - rect.right) <= tol && (vh - rect.bottom) < tol ) { + el.parentNode.removeChild(el); + tstart = Date.now(); + el = document.elementFromPoint(vw/2, vh/2); + bodyEl.style.setProperty('overflow', 'auto', 'important'); + docEl.style.setProperty('overflow', 'auto', 'important'); + continue; + } + } + el = el.parentNode; + } + if ( (Date.now() - tstart) < ttl ) { + delay = Math.min(delay + delayStep, 1000); + setTimeout(buster, delay); + } + }; + var domReady = function(ev) { + if ( ev ) { + document.removeEventListener(ev.type, domReady); + } + tstart = Date.now(); + setTimeout(buster, delay); + }; + if ( document.readyState === 'loading' ) { + document.addEventListener('DOMContentLoaded', domReady); + } else { + domReady(); + } +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'alert-buster.js', + fn: alertBuster, +}); +// https://github.com/uBlockOrigin/uAssets/issues/8 +function alertBuster() { + window.alert = new Proxy(window.alert, { + apply: function(a) { + console.info(a); + }, + get(target, prop) { + if ( prop === 'toString' ) { + return target.toString.bind(target); + } + return Reflect.get(target, prop); + }, + }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'nowebrtc.js', + fn: noWebrtc, +}); +// Prevent web pages from using RTCPeerConnection(), and report attempts in console. +function noWebrtc() { + var rtcName = window.RTCPeerConnection ? 'RTCPeerConnection' : ( + window.webkitRTCPeerConnection ? 'webkitRTCPeerConnection' : '' + ); + if ( rtcName === '' ) { return; } + var log = console.log.bind(console); + var pc = function(cfg) { + log('Document tried to create an RTCPeerConnection: %o', cfg); + }; + const noop = function() { + }; + pc.prototype = { + close: noop, + createDataChannel: noop, + createOffer: noop, + setRemoteDescription: noop, + toString: function() { + return '[object RTCPeerConnection]'; + } + }; + var z = window[rtcName]; + window[rtcName] = pc.bind(window); + if ( z.prototype ) { + z.prototype.createDataChannel = function() { + return { + close: function() {}, + send: function() {} + }; + }.bind(null); + } +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'disable-newtab-links.js', + fn: disableNewtabLinks, +}); +// https://github.com/uBlockOrigin/uAssets/issues/913 +function disableNewtabLinks() { + document.addEventListener('click', ev => { + let target = ev.target; + while ( target !== null ) { + if ( target.localName === 'a' && target.hasAttribute('target') ) { + ev.stopPropagation(); + ev.preventDefault(); + break; + } + target = target.parentNode; + } + }, { capture: true }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'xml-prune.js', + fn: xmlPrune, + dependencies: [ + 'safe-self.fn', + ], +}); +function xmlPrune( + selector = '', + selectorCheck = '', + urlPattern = '' +) { + if ( typeof selector !== 'string' ) { return; } + if ( selector === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('xml-prune', selector, selectorCheck, urlPattern); + const reUrl = safe.patternToRegex(urlPattern); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); + const queryAll = (xmlDoc, selector) => { + const isXpath = /^xpath\(.+\)$/.test(selector); + if ( isXpath === false ) { + return Array.from(xmlDoc.querySelectorAll(selector)); + } + const xpr = xmlDoc.evaluate( + selector.slice(6, -1), + xmlDoc, + null, + XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, + null + ); + const out = []; + for ( let i = 0; i < xpr.snapshotLength; i++ ) { + const node = xpr.snapshotItem(i); + out.push(node); + } + return out; + }; + const pruneFromDoc = xmlDoc => { + try { + if ( selectorCheck !== '' && xmlDoc.querySelector(selectorCheck) === null ) { + return xmlDoc; + } + if ( extraArgs.logdoc ) { + const serializer = new XMLSerializer(); + safe.uboLog(logPrefix, `Document is\n\t${serializer.serializeToString(xmlDoc)}`); + } + const items = queryAll(xmlDoc, selector); + if ( items.length === 0 ) { return xmlDoc; } + safe.uboLog(logPrefix, `Removing ${items.length} items`); + for ( const item of items ) { + if ( item.nodeType === 1 ) { + item.remove(); + } else if ( item.nodeType === 2 ) { + item.ownerElement.removeAttribute(item.nodeName); + } + safe.uboLog(logPrefix, `${item.constructor.name}.${item.nodeName} removed`); + } + } catch(ex) { + safe.uboErr(logPrefix, `Error: ${ex}`); + } + return xmlDoc; + }; + const pruneFromText = text => { + if ( (/^\s*\s*$/.test(text)) === false ) { + return text; + } + try { + const xmlParser = new DOMParser(); + const xmlDoc = xmlParser.parseFromString(text, 'text/xml'); + pruneFromDoc(xmlDoc); + const serializer = new XMLSerializer(); + text = serializer.serializeToString(xmlDoc); + } catch { + } + return text; + }; + const urlFromArg = arg => { + if ( typeof arg === 'string' ) { return arg; } + if ( arg instanceof Request ) { return arg.url; } + return String(arg); + }; + self.fetch = new Proxy(self.fetch, { + apply: function(target, thisArg, args) { + const fetchPromise = Reflect.apply(target, thisArg, args); + if ( reUrl.test(urlFromArg(args[0])) === false ) { + return fetchPromise; + } + return fetchPromise.then(responseBefore => { + const response = responseBefore.clone(); + return response.text().then(text => { + const responseAfter = new Response(pruneFromText(text), { + status: responseBefore.status, + statusText: responseBefore.statusText, + headers: responseBefore.headers, + }); + Object.defineProperties(responseAfter, { + ok: { value: responseBefore.ok }, + redirected: { value: responseBefore.redirected }, + type: { value: responseBefore.type }, + url: { value: responseBefore.url }, + }); + return responseAfter; + }).catch(( ) => + responseBefore + ); + }); + } + }); + self.XMLHttpRequest.prototype.open = new Proxy(self.XMLHttpRequest.prototype.open, { + apply: async (target, thisArg, args) => { + if ( reUrl.test(urlFromArg(args[1])) === false ) { + return Reflect.apply(target, thisArg, args); + } + thisArg.addEventListener('readystatechange', function() { + if ( thisArg.readyState !== 4 ) { return; } + const type = thisArg.responseType; + if ( + type === 'document' || + type === '' && thisArg.responseXML instanceof XMLDocument + ) { + pruneFromDoc(thisArg.responseXML); + const serializer = new XMLSerializer(); + const textout = serializer.serializeToString(thisArg.responseXML); + Object.defineProperty(thisArg, 'responseText', { value: textout }); + if ( typeof thisArg.response === 'string' ) { + Object.defineProperty(thisArg, 'response', { value: textout }); + } + return; + } + if ( + type === 'text' || + type === '' && typeof thisArg.responseText === 'string' + ) { + const textin = thisArg.responseText; + const textout = pruneFromText(textin); + if ( textout === textin ) { return; } + Object.defineProperty(thisArg, 'response', { value: textout }); + Object.defineProperty(thisArg, 'responseText', { value: textout }); + return; + } + }); + return Reflect.apply(target, thisArg, args); + } + }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'm3u-prune.js', + fn: m3uPrune, + dependencies: [ + 'proxy-apply.fn', + 'safe-self.fn', + ], +}); +// https://en.wikipedia.org/wiki/M3U +function m3uPrune( + m3uPattern = '', + urlPattern = '' +) { + if ( typeof m3uPattern !== 'string' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('m3u-prune', m3uPattern, urlPattern); + const toLog = []; + const regexFromArg = arg => { + if ( arg === '' ) { return /^/; } + const match = /^\/(.+)\/([gms]*)$/.exec(arg); + if ( match !== null ) { + let flags = match[2] || ''; + if ( flags.includes('m') ) { flags += 's'; } + return new RegExp(match[1], flags); + } + return new RegExp( + arg.replace(/[.+?^${}()|[\]\\]/g, '\\$&').replace(/\*+/g, '.*?') + ); + }; + const reM3u = regexFromArg(m3uPattern); + const reUrl = regexFromArg(urlPattern); + const pruneSpliceoutBlock = (lines, i) => { + if ( lines[i].startsWith('#EXT-X-CUE:TYPE="SpliceOut"') === false ) { + return false; + } + toLog.push(`\t${lines[i]}`); + lines[i] = undefined; i += 1; + if ( lines[i].startsWith('#EXT-X-ASSET:CAID') ) { + toLog.push(`\t${lines[i]}`); + lines[i] = undefined; i += 1; + } + if ( lines[i].startsWith('#EXT-X-SCTE35:') ) { + toLog.push(`\t${lines[i]}`); + lines[i] = undefined; i += 1; + } + if ( lines[i].startsWith('#EXT-X-CUE-IN') ) { + toLog.push(`\t${lines[i]}`); + lines[i] = undefined; i += 1; + } + if ( lines[i].startsWith('#EXT-X-SCTE35:') ) { + toLog.push(`\t${lines[i]}`); + lines[i] = undefined; i += 1; + } + return true; + }; + const pruneInfBlock = (lines, i) => { + if ( lines[i].startsWith('#EXTINF') === false ) { return false; } + if ( reM3u.test(lines[i+1]) === false ) { return false; } + toLog.push('Discarding', `\t${lines[i]}, \t${lines[i+1]}`); + lines[i] = lines[i+1] = undefined; i += 2; + if ( lines[i].startsWith('#EXT-X-DISCONTINUITY') ) { + toLog.push(`\t${lines[i]}`); + lines[i] = undefined; i += 1; + } + return true; + }; + const pruner = text => { + if ( (/^\s*#EXTM3U/.test(text)) === false ) { return text; } + if ( m3uPattern === '' ) { + safe.uboLog(` Content:\n${text}`); + return text; + } + if ( reM3u.multiline ) { + reM3u.lastIndex = 0; + for (;;) { + const match = reM3u.exec(text); + if ( match === null ) { break; } + let discard = match[0]; + let before = text.slice(0, match.index); + if ( + /^[\n\r]+/.test(discard) === false && + /[\n\r]+$/.test(before) === false + ) { + const startOfLine = /[^\n\r]+$/.exec(before); + if ( startOfLine !== null ) { + before = before.slice(0, startOfLine.index); + discard = startOfLine[0] + discard; + } + } + let after = text.slice(match.index + match[0].length); + if ( + /[\n\r]+$/.test(discard) === false && + /^[\n\r]+/.test(after) === false + ) { + const endOfLine = /^[^\n\r]+/.exec(after); + if ( endOfLine !== null ) { + after = after.slice(endOfLine.index); + discard += discard + endOfLine[0]; + } + } + text = before.trim() + '\n' + after.trim(); + reM3u.lastIndex = before.length + 1; + toLog.push('Discarding', ...safe.String_split.call(discard, /\n+/).map(s => `\t${s}`)); + if ( reM3u.global === false ) { break; } + } + return text; + } + const lines = safe.String_split.call(text, /\n\r|\n|\r/); + for ( let i = 0; i < lines.length; i++ ) { + if ( lines[i] === undefined ) { continue; } + if ( pruneSpliceoutBlock(lines, i) ) { continue; } + if ( pruneInfBlock(lines, i) ) { continue; } + } + return lines.filter(l => l !== undefined).join('\n'); + }; + const urlFromArg = arg => { + if ( typeof arg === 'string' ) { return arg; } + if ( arg instanceof Request ) { return arg.url; } + return String(arg); + }; + proxyApplyFn('fetch', async function fetch(context) { + const args = context.callArgs; + const fetchPromise = context.reflect(); + if ( reUrl.test(urlFromArg(args[0])) === false ) { return fetchPromise; } + const responseBefore = await fetchPromise; + const responseClone = responseBefore.clone(); + const textBefore = await responseClone.text(); + const textAfter = pruner(textBefore); + if ( textAfter === textBefore ) { return responseBefore; } + const responseAfter = new Response(textAfter, { + status: responseBefore.status, + statusText: responseBefore.statusText, + headers: responseBefore.headers, + }); + Object.defineProperties(responseAfter, { + url: { value: responseBefore.url }, + type: { value: responseBefore.type }, + }); + if ( toLog.length !== 0 ) { + toLog.unshift(logPrefix); + safe.uboLog(toLog.join('\n')); + } + return responseAfter; + }) + self.XMLHttpRequest.prototype.open = new Proxy(self.XMLHttpRequest.prototype.open, { + apply: async (target, thisArg, args) => { + if ( reUrl.test(urlFromArg(args[1])) === false ) { + return Reflect.apply(target, thisArg, args); + } + thisArg.addEventListener('readystatechange', function() { + if ( thisArg.readyState !== 4 ) { return; } + const type = thisArg.responseType; + if ( type !== '' && type !== 'text' ) { return; } + const textin = thisArg.responseText; + const textout = pruner(textin); + if ( textout === textin ) { return; } + Object.defineProperty(thisArg, 'response', { value: textout }); + Object.defineProperty(thisArg, 'responseText', { value: textout }); + if ( toLog.length !== 0 ) { + toLog.unshift(logPrefix); + safe.uboLog(toLog.join('\n')); + } + }); + return Reflect.apply(target, thisArg, args); + } + }); +} + +/******************************************************************************* + * + * @scriptlet call-nothrow + * + * @description + * Prevent a function call from throwing. The function will be called, however + * should it throw, the scriptlet will silently process the exception and + * returns as if no exception has occurred. + * + * ### Syntax + * + * ```text + * example.org##+js(call-nothrow, propertyChain) + * ``` + * + * - `propertyChain`: a chain of dot-separated properties which leads to the + * function to be trapped. + * + * ### Examples + * + * example.org##+js(call-nothrow, Object.defineProperty) + * + * */ + +builtinScriptlets.push({ + name: 'call-nothrow.js', + fn: callNothrow, + dependencies: [ + 'safe-self.fn', + ], +}); +function callNothrow( + chain = '' +) { + if ( typeof chain !== 'string' ) { return; } + if ( chain === '' ) { return; } + const safe = safeSelf(); + const parts = safe.String_split.call(chain, '.'); + let owner = window, prop; + for (;;) { + prop = parts.shift(); + if ( parts.length === 0 ) { break; } + owner = owner[prop]; + if ( owner instanceof Object === false ) { return; } + } + if ( prop === '' ) { return; } + const fn = owner[prop]; + if ( typeof fn !== 'function' ) { return; } + owner[prop] = new Proxy(fn, { + apply: function(...args) { + let r; + try { + r = Reflect.apply(...args); + } catch { + } + return r; + }, + }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'remove-node-text.js', + aliases: [ + 'rmnt.js', + ], + fn: removeNodeText, + world: 'ISOLATED', + dependencies: [ + 'replace-node-text.fn', + ], +}); +function removeNodeText( + nodeName, + includes, + ...extraArgs +) { + replaceNodeTextFn(nodeName, '', '', 'includes', includes || '', ...extraArgs); +} + +/******************************************************************************* + * + * @scriptlet prevent-canvas + * + * @description + * Prevent usage of specific or all (default) canvas APIs. + * + * ### Syntax + * + * ```text + * example.com##+js(prevent-canvas [, contextType]) + * ``` + * + * - `contextType`: A specific type of canvas API to prevent (default to all + * APIs). Can be a string or regex which will be matched against the type + * used in getContext() call. Prepend with `!` to test for no-match. + * + * ### Examples + * + * 1. Prevent `example.com` from accessing all canvas APIs + * + * ```adblock + * example.com##+js(prevent-canvas) + * ``` + * + * 2. Prevent access to any flavor of WebGL API, everywhere + * + * ```adblock + * *##+js(prevent-canvas, /webgl/) + * ``` + * + * 3. Prevent `example.com` from accessing any flavor of canvas API except `2d` + * + * ```adblock + * example.com##+js(prevent-canvas, !2d) + * ``` + * + * ### References + * + * https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext + * + * */ + +builtinScriptlets.push({ + name: 'prevent-canvas.js', + fn: preventCanvas, + dependencies: [ + 'safe-self.fn', + ], +}); +function preventCanvas( + contextType = '' +) { + const safe = safeSelf(); + const pattern = safe.initPattern(contextType, { canNegate: true }); + const proto = globalThis.HTMLCanvasElement.prototype; + proto.getContext = new Proxy(proto.getContext, { + apply(target, thisArg, args) { + if ( safe.testPattern(pattern, args[0]) ) { return null; } + return Reflect.apply(target, thisArg, args); + } + }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'multiup.js', + fn: multiup, + world: 'ISOLATED', +}); +function multiup() { + const handler = ev => { + const target = ev.target; + if ( target.matches('button[link]') === false ) { return; } + const ancestor = target.closest('form'); + if ( ancestor === null ) { return; } + if ( ancestor !== target.parentElement ) { return; } + const link = (target.getAttribute('link') || '').trim(); + if ( link === '' ) { return; } + ev.preventDefault(); + ev.stopPropagation(); + document.location.href = link; + }; + document.addEventListener('click', handler, { capture: true }); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'break-on-call.js', + fn: breakOnCall, + dependencies: [ + 'proxy-apply.fn', + ], +}); +function breakOnCall(target) { + proxyApplyFn(target, function(context) { + debugger; // eslint-disable-line no-debugger + return context.reflect(); + }); +} + + + + + +/******************************************************************************* + * + * Scriplets below this section are only available for filter lists from + * trusted sources. They all have the property `requiresTrust` set to `true`. + * + * Trusted sources are: + * + * - uBO's own filter lists, which name starts with "uBlock filters – ", and + * maintained at: https://github.com/uBlockOrigin/uAssets + * + * - The user's own filters as seen in "My filters" pane in uBO's dashboard. + * + * The trustworthiness of filters using these privileged scriptlets are + * evaluated at filter list compiled time: when a filter using one of the + * privileged scriptlet originates from a non-trusted filter list source, it + * is discarded at compile time, specifically from within: + * + * - Source: ./src/js/scriptlet-filtering.js + * - Method: scriptletFilteringEngine.compile(), via normalizeRawFilter() + * + **/ + +/******************************************************************************* + * + * replace-node-text.js + * + * Replace text instance(s) with another text instance inside specific + * DOM nodes. By default, the scriplet stops and quits at the interactive + * stage of a document. + * + * See commit messages for usage: + * - https://github.com/gorhill/uBlock/commit/99ce027fd702 + * - https://github.com/gorhill/uBlock/commit/41876336db48 + * + **/ + +builtinScriptlets.push({ + name: 'trusted-replace-node-text.js', + requiresTrust: true, + aliases: [ + 'trusted-rpnt.js', + 'replace-node-text.js', + 'rpnt.js', + ], + fn: replaceNodeText, + world: 'ISOLATED', + dependencies: [ + 'replace-node-text.fn', + ], +}); +function replaceNodeText( + nodeName, + pattern, + replacement, + ...extraArgs +) { + replaceNodeTextFn(nodeName, pattern, replacement, ...extraArgs); +} + +/******************************************************************************* + * + * trusted-replace-fetch-response.js + * + * Replaces response text content of fetch requests if all given parameters + * match. + * + * Reference: + * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/trusted-replace-fetch-response.js + * + **/ + +builtinScriptlets.push({ + name: 'trusted-replace-fetch-response.js', + requiresTrust: true, + aliases: [ + 'trusted-rpfr.js', + ], + fn: trustedReplaceFetchResponse, + dependencies: [ + 'replace-fetch-response.fn', + ], +}); +function trustedReplaceFetchResponse(...args) { + replaceFetchResponseFn(true, ...args); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'trusted-replace-xhr-response.js', + requiresTrust: true, + fn: trustedReplaceXhrResponse, + dependencies: [ + 'match-object-properties.fn', + 'parse-properties-to-match.fn', + 'safe-self.fn', + ], +}); +function trustedReplaceXhrResponse( + pattern = '', + replacement = '', + propsToMatch = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('trusted-replace-xhr-response', pattern, replacement, propsToMatch); + const xhrInstances = new WeakMap(); + if ( pattern === '*' ) { pattern = '.*'; } + const rePattern = safe.patternToRegex(pattern); + const propNeedles = parsePropertiesToMatchFn(propsToMatch, 'url'); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); + const reIncludes = extraArgs.includes ? safe.patternToRegex(extraArgs.includes) : null; + self.XMLHttpRequest = class extends self.XMLHttpRequest { + open(method, url, ...args) { + const outerXhr = this; + const xhrDetails = { method, url }; + let outcome = 'match'; + if ( propNeedles.size !== 0 ) { + if ( matchObjectPropertiesFn(propNeedles, xhrDetails) === undefined ) { + outcome = 'nomatch'; + } + } + if ( outcome === 'match' ) { + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, `Matched "propsToMatch"`); + } + xhrInstances.set(outerXhr, xhrDetails); + } + return super.open(method, url, ...args); + } + get response() { + const innerResponse = super.response; + const xhrDetails = xhrInstances.get(this); + if ( xhrDetails === undefined ) { + return innerResponse; + } + const responseLength = typeof innerResponse === 'string' + ? innerResponse.length + : undefined; + if ( xhrDetails.lastResponseLength !== responseLength ) { + xhrDetails.response = undefined; + xhrDetails.lastResponseLength = responseLength; + } + if ( xhrDetails.response !== undefined ) { + return xhrDetails.response; + } + if ( typeof innerResponse !== 'string' ) { + return (xhrDetails.response = innerResponse); + } + if ( reIncludes && reIncludes.test(innerResponse) === false ) { + return (xhrDetails.response = innerResponse); + } + const textBefore = innerResponse; + const textAfter = textBefore.replace(rePattern, replacement); + if ( textAfter !== textBefore ) { + safe.uboLog(logPrefix, 'Match'); + } + return (xhrDetails.response = textAfter); + } + get responseText() { + const response = this.response; + if ( typeof response !== 'string' ) { + return super.responseText; + } + return response; + } + }; +} + +/******************************************************************************* + * + * trusted-click-element.js + * + * Reference API: + * https://github.com/AdguardTeam/Scriptlets/blob/master/src/scriptlets/trusted-click-element.ts + * + **/ + +builtinScriptlets.push({ + name: 'trusted-click-element.js', + requiresTrust: true, + fn: trustedClickElement, + world: 'ISOLATED', + dependencies: [ + 'get-all-cookies.fn', + 'get-all-local-storage.fn', + 'lookup-elements.fn', + 'run-at-html-element.fn', + 'safe-self.fn', + ], +}); +function trustedClickElement( + selectors = '', + extraMatch = '', + delay = '' +) { + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('trusted-click-element', selectors, extraMatch, delay); + + if ( extraMatch !== '' ) { + const assertions = safe.String_split.call(extraMatch, ',').map(s => { + const pos1 = s.indexOf(':'); + const s1 = pos1 !== -1 ? s.slice(0, pos1) : s; + const not = s1.startsWith('!'); + const type = not ? s1.slice(1) : s1; + const s2 = pos1 !== -1 ? s.slice(pos1+1).trim() : ''; + if ( s2 === '' ) { return; } + const out = { not, type }; + const match = /^\/(.+)\/(i?)$/.exec(s2); + if ( match !== null ) { + out.re = new RegExp(match[1], match[2] || undefined); + return out; + } + const pos2 = s2.indexOf('='); + const key = pos2 !== -1 ? s2.slice(0, pos2).trim() : s2; + const value = pos2 !== -1 ? s2.slice(pos2+1).trim() : ''; + out.re = new RegExp(`^${safe.escapeRegexChars(key)}=${safe.escapeRegexChars(value)}`); + return out; + }).filter(details => details !== undefined); + const allCookies = assertions.some(o => o.type === 'cookie') + ? getAllCookiesFn() + : []; + const allStorageItems = assertions.some(o => o.type === 'localStorage') + ? getAllLocalStorageFn() + : []; + const hasNeedle = (haystack, needle) => { + for ( const { key, value } of haystack ) { + if ( needle.test(`${key}=${value}`) ) { return true; } + } + return false; + }; + for ( const { not, type, re } of assertions ) { + switch ( type ) { + case 'cookie': + if ( hasNeedle(allCookies, re) === not ) { return; } + break; + case 'localStorage': + if ( hasNeedle(allStorageItems, re) === not ) { return; } + break; + } + } + } + + const steps = safe.String_split.call(selectors, /\s*,\s*/).map(a => { + if ( /^\d+$/.test(a) ) { return parseInt(a, 10); } + return a; + }); + if ( steps.length === 0 ) { return; } + const clickDelay = parseInt(delay, 10) || 1; + for ( let i = steps.length-1; i > 0; i-- ) { + if ( typeof steps[i] !== 'string' ) { continue; } + if ( typeof steps[i-1] !== 'string' ) { continue; } + steps.splice(i, 0, clickDelay); + } + if ( steps.length === 1 && delay !== '' ) { + steps.unshift(clickDelay); + } + if ( typeof steps.at(-1) !== 'number' ) { + steps.push(11000); + } + + const timeout = steps.pop(); + + const waitForTime = ms => { + return new Promise(resolve => { + safe.uboLog(logPrefix, `Waiting for ${ms} ms`); + waitForTime.timer = setTimeout(( ) => { + waitForTime.timer = undefined; + resolve(); + }, ms); + }); + }; + + const waitForElement = directive => { + safe.uboLog(logPrefix, `Waiting for ${directive}`); + return lookupElementsFn(directive, Date.now() + timeout).then(elems => { + if ( elems.length === 0 ) { return false; } + elems[0].click(); + safe.uboLog(logPrefix, `Clicked ${directive}`); + return true; + }); + }; + + const process = async ( ) => { + while ( steps.length !== 0 ) { + const step = steps.shift(); + if ( step === undefined ) { break; } + if ( typeof step === 'number' ) { + await waitForTime(step); + if ( step === 1 ) { continue; } + continue; + } + if ( step.startsWith('!') ) { continue; } + const clicked = await waitForElement(step); + if ( clicked ) { continue; } + safe.uboLog(logPrefix, `Timed out waiting on ${step}`); + break; + } + }; + + runAtHtmlElementFn(process); +} + +/******************************************************************************/ + +builtinScriptlets.push({ + name: 'trusted-replace-outbound-text.js', + requiresTrust: true, + fn: trustedReplaceOutboundText, + dependencies: [ + 'proxy-apply.fn', + 'safe-self.fn', + ], +}); +function trustedReplaceOutboundText( + propChain = '', + rawPattern = '', + rawReplacement = '', + ...args +) { + if ( propChain === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('trusted-replace-outbound-text', propChain, rawPattern, rawReplacement, ...args); + const rePattern = safe.patternToRegex(rawPattern); + const replacement = rawReplacement.startsWith('json:') + ? safe.JSON_parse(rawReplacement.slice(5)) + : rawReplacement; + const extraArgs = safe.getExtraArgs(args); + const reCondition = safe.patternToRegex(extraArgs.condition || ''); + proxyApplyFn(propChain, function(context) { + const encodedTextBefore = context.reflect(); + let textBefore = encodedTextBefore; + if ( extraArgs.encoding === 'base64' ) { + try { textBefore = self.atob(encodedTextBefore); } + catch { return encodedTextBefore; } + } + if ( rawPattern === '' ) { + safe.uboLog(logPrefix, 'Decoded outbound text:\n', textBefore); + return encodedTextBefore; + } + reCondition.lastIndex = 0; + if ( reCondition.test(textBefore) === false ) { return encodedTextBefore; } + const textAfter = textBefore.replace(rePattern, replacement); + if ( textAfter === textBefore ) { return encodedTextBefore; } + safe.uboLog(logPrefix, 'Matched and replaced'); + if ( safe.logLevel > 1 ) { + safe.uboLog(logPrefix, 'Modified decoded outbound text:\n', textAfter); + } + let encodedTextAfter = textAfter; + if ( extraArgs.encoding === 'base64' ) { + encodedTextAfter = self.btoa(textAfter); + } + return encodedTextAfter; + }); +} + +/******************************************************************************* + * + * Reference: + * https://github.com/AdguardTeam/Scriptlets/blob/5a92d79489/wiki/about-trusted-scriptlets.md#trusted-suppress-native-method + * + * This is a first version with current limitations: + * - Does not support matching arguments which are object or array + * - Does not support `stack` parameter + * + * If `signatureStr` parameter is not declared, the scriptlet will log all calls + * to `methodPath` along with the arguments passed and will not prevent the + * trapped method. + * + * */ + +builtinScriptlets.push({ + name: 'trusted-suppress-native-method.js', + requiresTrust: true, + fn: trustedSuppressNativeMethod, + dependencies: [ + 'matches-stack-trace.fn', + 'proxy-apply.fn', + 'safe-self.fn', + ], +}); +function trustedSuppressNativeMethod( + methodPath = '', + signature = '', + how = '', + stack = '' +) { + if ( methodPath === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('trusted-suppress-native-method', methodPath, signature, how, stack); + const signatureArgs = safe.String_split.call(signature, /\s*\|\s*/).map(v => { + if ( /^".*"$/.test(v) ) { + return { type: 'pattern', re: safe.patternToRegex(v.slice(1, -1)) }; + } + if ( /^\/.+\/$/.test(v) ) { + return { type: 'pattern', re: safe.patternToRegex(v) }; + } + if ( v === 'false' ) { + return { type: 'exact', value: false }; + } + if ( v === 'true' ) { + return { type: 'exact', value: true }; + } + if ( v === 'null' ) { + return { type: 'exact', value: null }; + } + if ( v === 'undefined' ) { + return { type: 'exact', value: undefined }; + } + }); + const stackNeedle = safe.initPattern(stack, { canNegate: true }); + proxyApplyFn(methodPath, function(context) { + const { callArgs } = context; + if ( signature === '' ) { + safe.uboLog(logPrefix, `Arguments:\n${callArgs.join('\n')}`); + return context.reflect(); + } + for ( let i = 0; i < signatureArgs.length; i++ ) { + const signatureArg = signatureArgs[i]; + if ( signatureArg === undefined ) { continue; } + const targetArg = i < callArgs.length ? callArgs[i] : undefined; + if ( signatureArg.type === 'exact' ) { + if ( targetArg !== signatureArg.value ) { + return context.reflect(); + } + } + if ( signatureArg.type === 'pattern' ) { + if ( safe.RegExp_test.call(signatureArg.re, targetArg) === false ) { + return context.reflect(); + } + } + } + if ( stackNeedle.matchAll !== true ) { + const logLevel = safe.logLevel > 1 ? 'all' : ''; + if ( matchesStackTraceFn(stackNeedle, logLevel) === false ) { + return context.reflect(); + } + } + if ( how === 'debug' ) { + debugger; // eslint-disable-line no-debugger + return context.reflect(); + } + safe.uboLog(logPrefix, `Suppressed:\n${callArgs.join('\n')}`); + if ( how === 'abort' ) { + throw new ReferenceError(); + } + }); +} + +/** + * @trustedScriptlet trusted-prevent-dom-bypass + * + * @description + * Prevent the bypassing of uBO scriptlets through anonymous embedded context. + * + * Ensure that a target method in the embedded context is using the + * corresponding parent context's method (which is assumed to be + * properly patched), or to replace the embedded context with that of the + * parent context. + * + * Root issue: + * https://issues.chromium.org/issues/40202434 + * + * @param methodPath + * The method which calls must be intercepted. The arguments + * of the intercepted calls are assumed to be HTMLElement, anything else will + * be ignored. + * + * @param [targetProp] + * The method in the embedded context which should be delegated to the + * parent context. If no method is specified, the embedded context becomes + * the parent one, i.e. all properties of the embedded context will be that + * of the parent context. + * + * @example + * ##+js(trusted-prevent-dom-bypass, Element.prototype.append, open) + * + * @example + * ##+js(trusted-prevent-dom-bypass, Element.prototype.appendChild, XMLHttpRequest) + * + * */ + +builtinScriptlets.push({ + name: 'trusted-prevent-dom-bypass.js', + requiresTrust: true, + fn: trustedPreventDomBypass, + dependencies: [ + 'proxy-apply.fn', + 'safe-self.fn', + ], +}); +function trustedPreventDomBypass( + methodPath = '', + targetProp = '' +) { + if ( methodPath === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('trusted-prevent-dom-bypass', methodPath, targetProp); + proxyApplyFn(methodPath, function(context) { + const elems = new Set(context.callArgs.filter(e => e instanceof HTMLElement)); + const r = context.reflect(); + if ( elems.length === 0 ) { return r; } + for ( const elem of elems ) { + try { + if ( `${elem.contentWindow}` !== '[object Window]' ) { continue; } + if ( elem.contentWindow.location.href !== 'about:blank' ) { + if ( elem.contentWindow.location.href !== self.location.href ) { + continue; + } + } + if ( targetProp !== '' ) { + let me = self, it = elem.contentWindow; + let chain = targetProp; + for (;;) { + const pos = chain.indexOf('.'); + if ( pos === -1 ) { break; } + const prop = chain.slice(0, pos); + me = me[prop]; it = it[prop]; + chain = chain.slice(pos+1); + } + it[chain] = me[chain]; + } else { + Object.defineProperty(elem, 'contentWindow', { value: self }); + } + safe.uboLog(logPrefix, 'Bypass prevented'); + } catch { + } + } + return r; + }); +} + +/** + * @trustedScriptlet trusted-override-element-method + * + * @description + * Override the behavior of a method on matching elements. + * + * @param methodPath + * The method which calls must be intercepted. + * + * @param [selector] + * A CSS selector which the target element must match. If not specified, + * the override will occur for all elements. + * + * @param [disposition] + * How the override should be handled. If not specified, the overridden call + * will be equivalent to an empty function. If set to `throw`, an exception + * will be thrown. Any other value will be validated and returned as a + * supported safe constant. + * + * @example + * ##+js(trusted-override-element-method, HTMLAnchorElement.prototype.click, a[target="_blank"][style]) + * + * */ + +builtinScriptlets.push({ + name: 'trusted-override-element-method.js', + requiresTrust: true, + fn: trustedOverrideElementMethod, + dependencies: [ + 'proxy-apply.fn', + 'safe-self.fn', + 'validate-constant.fn', + ], +}); +function trustedOverrideElementMethod( + methodPath = '', + selector = '', + disposition = '' +) { + if ( methodPath === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('trusted-override-element-method', methodPath, selector, disposition); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); + proxyApplyFn(methodPath, function(context) { + let override = selector === ''; + if ( override === false ) { + const { thisArg } = context; + try { + override = thisArg.closest(selector) === thisArg; + } catch { + } + } + if ( override === false ) { + return context.reflect(); + } + safe.uboLog(logPrefix, 'Overridden'); + if ( disposition === '' ) { return; } + if ( disposition === 'debug' && safe.logLevel !== 0 ) { + debugger; // eslint-disable-line no-debugger + } + if ( disposition === 'throw' ) { + throw new ReferenceError(); + } + return validateConstantFn(true, disposition, extraArgs); + }); +} + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/set-constant.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/set-constant.js new file mode 100644 index 00000000..9ee98591 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/set-constant.js @@ -0,0 +1,287 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { registerScriptlet } from './base.js'; +import { runAt } from './run-at.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +export function validateConstantFn(trusted, raw, extraArgs = {}) { + const safe = safeSelf(); + let value; + if ( raw === 'undefined' ) { + value = undefined; + } else if ( raw === 'false' ) { + value = false; + } else if ( raw === 'true' ) { + value = true; + } else if ( raw === 'null' ) { + value = null; + } else if ( raw === "''" || raw === '' ) { + value = ''; + } else if ( raw === '[]' || raw === 'emptyArr' ) { + value = []; + } else if ( raw === '{}' || raw === 'emptyObj' ) { + value = {}; + } else if ( raw === 'noopFunc' ) { + value = function(){}; + } else if ( raw === 'trueFunc' ) { + value = function(){ return true; }; + } else if ( raw === 'falseFunc' ) { + value = function(){ return false; }; + } else if ( raw === 'throwFunc' ) { + value = function(){ throw ''; }; + } else if ( /^-?\d+$/.test(raw) ) { + value = parseInt(raw); + if ( isNaN(raw) ) { return; } + if ( Math.abs(raw) > 0x7FFF ) { return; } + } else if ( trusted ) { + if ( raw.startsWith('json:') ) { + try { value = safe.JSON_parse(raw.slice(5)); } catch { return; } + } else if ( raw.startsWith('{') && raw.endsWith('}') ) { + try { value = safe.JSON_parse(raw).value; } catch { return; } + } + } else { + return; + } + if ( extraArgs.as !== undefined ) { + if ( extraArgs.as === 'function' ) { + return ( ) => value; + } else if ( extraArgs.as === 'callback' ) { + return ( ) => (( ) => value); + } else if ( extraArgs.as === 'resolved' ) { + return Promise.resolve(value); + } else if ( extraArgs.as === 'rejected' ) { + return Promise.reject(value); + } + } + return value; +} +registerScriptlet(validateConstantFn, { + name: 'validate-constant.fn', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ + +export function setConstantFn( + trusted = false, + chain = '', + rawValue = '' +) { + if ( chain === '' ) { return; } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('set-constant', chain, rawValue); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 3); + function setConstant(chain, rawValue) { + const trappedProp = (( ) => { + const pos = chain.lastIndexOf('.'); + if ( pos === -1 ) { return chain; } + return chain.slice(pos+1); + })(); + const cloakFunc = fn => { + safe.Object_defineProperty(fn, 'name', { value: trappedProp }); + return new Proxy(fn, { + defineProperty(target, prop) { + if ( prop !== 'toString' ) { + return Reflect.defineProperty(...arguments); + } + return true; + }, + deleteProperty(target, prop) { + if ( prop !== 'toString' ) { + return Reflect.deleteProperty(...arguments); + } + return true; + }, + get(target, prop) { + if ( prop === 'toString' ) { + return function() { + return `function ${trappedProp}() { [native code] }`; + }.bind(null); + } + return Reflect.get(...arguments); + }, + }); + }; + if ( trappedProp === '' ) { return; } + const thisScript = document.currentScript; + let normalValue = validateConstantFn(trusted, rawValue, extraArgs); + if ( rawValue === 'noopFunc' || rawValue === 'trueFunc' || rawValue === 'falseFunc' ) { + normalValue = cloakFunc(normalValue); + } + let aborted = false; + const mustAbort = function(v) { + if ( trusted ) { return false; } + if ( aborted ) { return true; } + aborted = + (v !== undefined && v !== null) && + (normalValue !== undefined && normalValue !== null) && + (typeof v !== typeof normalValue); + if ( aborted ) { + safe.uboLog(logPrefix, `Aborted because value set to ${v}`); + } + return aborted; + }; + // https://github.com/uBlockOrigin/uBlock-issues/issues/156 + // Support multiple trappers for the same property. + const trapProp = function(owner, prop, configurable, handler) { + if ( handler.init(configurable ? owner[prop] : normalValue) === false ) { return; } + const odesc = safe.Object_getOwnPropertyDescriptor(owner, prop); + let prevGetter, prevSetter; + if ( odesc instanceof safe.Object ) { + owner[prop] = normalValue; + if ( odesc.get instanceof Function ) { + prevGetter = odesc.get; + } + if ( odesc.set instanceof Function ) { + prevSetter = odesc.set; + } + } + try { + safe.Object_defineProperty(owner, prop, { + configurable, + get() { + if ( prevGetter !== undefined ) { + prevGetter(); + } + return handler.getter(); + }, + set(a) { + if ( prevSetter !== undefined ) { + prevSetter(a); + } + handler.setter(a); + } + }); + safe.uboLog(logPrefix, 'Trap installed'); + } catch(ex) { + safe.uboErr(logPrefix, ex); + } + }; + const trapChain = function(owner, chain) { + const pos = chain.indexOf('.'); + if ( pos === -1 ) { + trapProp(owner, chain, false, { + v: undefined, + init: function(v) { + if ( mustAbort(v) ) { return false; } + this.v = v; + return true; + }, + getter: function() { + if ( document.currentScript === thisScript ) { + return this.v; + } + safe.uboLog(logPrefix, 'Property read'); + return normalValue; + }, + setter: function(a) { + if ( mustAbort(a) === false ) { return; } + normalValue = a; + } + }); + return; + } + const prop = chain.slice(0, pos); + const v = owner[prop]; + chain = chain.slice(pos + 1); + if ( v instanceof safe.Object || typeof v === 'object' && v !== null ) { + trapChain(v, chain); + return; + } + trapProp(owner, prop, true, { + v: undefined, + init: function(v) { + this.v = v; + return true; + }, + getter: function() { + return this.v; + }, + setter: function(a) { + this.v = a; + if ( a instanceof safe.Object ) { + trapChain(a, chain); + } + } + }); + }; + trapChain(window, chain); + } + runAt(( ) => { + setConstant(chain, rawValue); + }, extraArgs.runAt); +} +registerScriptlet(setConstantFn, { + name: 'set-constant.fn', + dependencies: [ + runAt, + safeSelf, + validateConstantFn, + ], +}); + +/******************************************************************************/ + +export function setConstant( + ...args +) { + setConstantFn(false, ...args); +} +registerScriptlet(setConstant, { + name: 'set-constant.js', + aliases: [ + 'set.js', + ], + dependencies: [ + setConstantFn, + ], +}); + +/******************************************************************************* + * + * trusted-set-constant.js + * + * Set specified property to any value. This is essentially the same as + * set-constant.js, but with no restriction as to which values can be used. + * + **/ + +export function trustedSetConstant( + ...args +) { + setConstantFn(true, ...args); +} +registerScriptlet(trustedSetConstant, { + name: 'trusted-set-constant.js', + requiresTrust: true, + aliases: [ + 'trusted-set.js', + ], + dependencies: [ + setConstantFn, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/shared.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/shared.js new file mode 100644 index 00000000..01a9de71 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/shared.js @@ -0,0 +1,40 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +// Code imported from main code base and exposed as injectable scriptlets +import { ArglistParser as __ArglistParser__ } from '../arglist-parser.js'; +import { JSONPath as __JSONPath__ } from '../jsonpath.js'; +import { registerScriptlet } from './base.js'; + +/******************************************************************************/ + +export const ArglistParser = __ArglistParser__; + +registerScriptlet(ArglistParser, { + name: 'arglist-parser.fn', +}); + +export const JSONPath = __JSONPath__; + +registerScriptlet(JSONPath, { + name: 'jsonpath.fn', +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/spoof-css.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/spoof-css.js new file mode 100644 index 00000000..7cc7b9f9 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/spoof-css.js @@ -0,0 +1,163 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/** + * @scriptlet spoof-css.js + * + * @description + * Spoof the value of CSS properties. + * + * @param selector + * A CSS selector for the element(s) to target. + * + * @param [property, value, ...] + * A list of property-value pairs of the style properties to spoof to the + * specified values. +* + * */ + +export function spoofCSS( + selector, + ...args +) { + if ( typeof selector !== 'string' ) { return; } + if ( selector === '' ) { return; } + const toCamelCase = s => s.replace(/-[a-z]/g, s => s.charAt(1).toUpperCase()); + const propToValueMap = new Map(); + const privatePropToValueMap = new Map(); + for ( let i = 0; i < args.length; i += 2 ) { + const prop = toCamelCase(args[i+0]); + if ( prop === '' ) { break; } + const value = args[i+1]; + if ( typeof value !== 'string' ) { break; } + if ( prop.charCodeAt(0) === 0x5F /* _ */ ) { + privatePropToValueMap.set(prop, value); + } else { + propToValueMap.set(prop, value); + } + } + const safe = safeSelf(); + const logPrefix = safe.makeLogPrefix('spoof-css', selector, ...args); + const instanceProperties = [ 'cssText', 'length', 'parentRule' ]; + const spoofStyle = (prop, real) => { + const normalProp = toCamelCase(prop); + const shouldSpoof = propToValueMap.has(normalProp); + const value = shouldSpoof ? propToValueMap.get(normalProp) : real; + if ( shouldSpoof ) { + safe.uboLog(logPrefix, `Spoofing ${prop} to ${value}`); + } + return value; + }; + const cloackFunc = (fn, thisArg, name) => { + const trap = fn.bind(thisArg); + Object.defineProperty(trap, 'name', { value: name }); + Object.defineProperty(trap, 'toString', { + value: ( ) => `function ${name}() { [native code] }` + }); + return trap; + }; + self.getComputedStyle = new Proxy(self.getComputedStyle, { + apply: function(target, thisArg, args) { + // eslint-disable-next-line no-debugger + if ( privatePropToValueMap.has('_debug') ) { debugger; } + const style = Reflect.apply(target, thisArg, args); + const targetElements = new WeakSet(document.querySelectorAll(selector)); + if ( targetElements.has(args[0]) === false ) { return style; } + const proxiedStyle = new Proxy(style, { + get(target, prop) { + if ( typeof target[prop] === 'function' ) { + if ( prop === 'getPropertyValue' ) { + return cloackFunc(function getPropertyValue(prop) { + return spoofStyle(prop, target[prop]); + }, target, 'getPropertyValue'); + } + return cloackFunc(target[prop], target, prop); + } + if ( instanceProperties.includes(prop) ) { + return Reflect.get(target, prop); + } + return spoofStyle(prop, Reflect.get(target, prop)); + }, + getOwnPropertyDescriptor(target, prop) { + if ( propToValueMap.has(prop) ) { + return { + configurable: true, + enumerable: true, + value: propToValueMap.get(prop), + writable: true, + }; + } + return Reflect.getOwnPropertyDescriptor(target, prop); + }, + }); + return proxiedStyle; + }, + get(target, prop) { + if ( prop === 'toString' ) { + return target.toString.bind(target); + } + return Reflect.get(target, prop); + }, + }); + Element.prototype.getBoundingClientRect = new Proxy(Element.prototype.getBoundingClientRect, { + apply: function(target, thisArg, args) { + // eslint-disable-next-line no-debugger + if ( privatePropToValueMap.has('_debug') ) { debugger; } + const rect = Reflect.apply(target, thisArg, args); + const targetElements = new WeakSet(document.querySelectorAll(selector)); + if ( targetElements.has(thisArg) === false ) { return rect; } + let { x, y, height, width } = rect; + if ( privatePropToValueMap.has('_rectx') ) { + x = parseFloat(privatePropToValueMap.get('_rectx')); + } + if ( privatePropToValueMap.has('_recty') ) { + y = parseFloat(privatePropToValueMap.get('_recty')); + } + if ( privatePropToValueMap.has('_rectw') ) { + width = parseFloat(privatePropToValueMap.get('_rectw')); + } else if ( propToValueMap.has('width') ) { + width = parseFloat(propToValueMap.get('width')); + } + if ( privatePropToValueMap.has('_recth') ) { + height = parseFloat(privatePropToValueMap.get('_recth')); + } else if ( propToValueMap.has('height') ) { + height = parseFloat(propToValueMap.get('height')); + } + return new self.DOMRect(x, y, width, height); + }, + get(target, prop) { + if ( prop === 'toString' ) { + return target.toString.bind(target); + } + return Reflect.get(target, prop); + }, + }); +} +registerScriptlet(spoofCSS, { + name: 'spoof-css.js', + dependencies: [ + safeSelf, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/stack-trace.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/stack-trace.js new file mode 100644 index 00000000..c2e53584 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/stack-trace.js @@ -0,0 +1,148 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { getExceptionTokenFn } from './utils.js'; +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +/******************************************************************************/ + +export function matchesStackTraceFn( + needleDetails, + logLevel = '' +) { + const safe = safeSelf(); + const exceptionToken = getExceptionTokenFn(); + const error = new safe.Error(exceptionToken); + const docURL = new URL(self.location.href); + docURL.hash = ''; + // Normalize stack trace + const reLine = /(.*?@)?(\S+)(:\d+):\d+\)?$/; + const lines = []; + for ( let line of safe.String_split.call(error.stack, /[\n\r]+/) ) { + if ( line.includes(exceptionToken) ) { continue; } + line = line.trim(); + const match = safe.RegExp_exec.call(reLine, line); + if ( match === null ) { continue; } + let url = match[2]; + if ( url.startsWith('(') ) { url = url.slice(1); } + if ( url === docURL.href ) { + url = 'inlineScript'; + } else if ( url.startsWith('') ) { + url = 'injectedScript'; + } + let fn = match[1] !== undefined + ? match[1].slice(0, -1) + : line.slice(0, match.index).trim(); + if ( fn.startsWith('at') ) { fn = fn.slice(2).trim(); } + let rowcol = match[3]; + lines.push(' ' + `${fn} ${url}${rowcol}:1`.trim()); + } + lines[0] = `stackDepth:${lines.length-1}`; + const stack = lines.join('\t'); + const r = needleDetails.matchAll !== true && + safe.testPattern(needleDetails, stack); + if ( + logLevel === 'all' || + logLevel === 'match' && r || + logLevel === 'nomatch' && !r + ) { + safe.uboLog(stack.replace(/\t/g, '\n')); + } + return r; +} +registerScriptlet(matchesStackTraceFn, { + name: 'matches-stack-trace.fn', + dependencies: [ + getExceptionTokenFn, + safeSelf, + ], +}); + +/******************************************************************************/ + +function abortOnStackTrace( + chain = '', + needle = '' +) { + if ( typeof chain !== 'string' ) { return; } + const safe = safeSelf(); + const needleDetails = safe.initPattern(needle, { canNegate: true }); + const extraArgs = safe.getExtraArgs(Array.from(arguments), 2); + if ( needle === '' ) { extraArgs.log = 'all'; } + const makeProxy = function(owner, chain) { + const pos = chain.indexOf('.'); + if ( pos === -1 ) { + let v = owner[chain]; + Object.defineProperty(owner, chain, { + get: function() { + const log = safe.logLevel > 1 ? 'all' : 'match'; + if ( matchesStackTraceFn(needleDetails, log) ) { + throw new ReferenceError(getExceptionTokenFn()); + } + return v; + }, + set: function(a) { + const log = safe.logLevel > 1 ? 'all' : 'match'; + if ( matchesStackTraceFn(needleDetails, log) ) { + throw new ReferenceError(getExceptionTokenFn()); + } + v = a; + }, + }); + return; + } + const prop = chain.slice(0, pos); + let v = owner[prop]; + chain = chain.slice(pos + 1); + if ( v ) { + makeProxy(v, chain); + return; + } + const desc = Object.getOwnPropertyDescriptor(owner, prop); + if ( desc && desc.set !== undefined ) { return; } + Object.defineProperty(owner, prop, { + get: function() { return v; }, + set: function(a) { + v = a; + if ( a instanceof Object ) { + makeProxy(a, chain); + } + } + }); + }; + const owner = window; + makeProxy(owner, chain); +} +registerScriptlet(abortOnStackTrace, { + name: 'abort-on-stack-trace.js', + aliases: [ + 'aost.js', + ], + dependencies: [ + getExceptionTokenFn, + matchesStackTraceFn, + safeSelf, + ], +}); + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/resources/utils.js b/android/app/src/main/assets/extensions/ublock_origin/js/resources/utils.js new file mode 100644 index 00000000..2edb302f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/resources/utils.js @@ -0,0 +1,460 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock + +*/ + +import { registerScriptlet } from './base.js'; +import { safeSelf } from './safe-self.js'; + +// Externally added to the private namespace in which scriptlets execute. +/* global scriptletGlobals */ + +/******************************************************************************/ + +export function getRandomTokenFn() { + const safe = safeSelf(); + return safe.String_fromCharCode(Date.now() % 26 + 97) + + safe.Math_floor(safe.Math_random() * 982451653 + 982451653).toString(36); +} +registerScriptlet(getRandomTokenFn, { + name: 'get-random-token.fn', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ + +export function getExceptionTokenFn() { + const token = getRandomTokenFn(); + const oe = self.onerror; + self.onerror = function(msg, ...args) { + if ( typeof msg === 'string' && msg.includes(token) ) { return true; } + if ( oe instanceof Function ) { + return oe.call(this, msg, ...args); + } + }.bind(); + return token; +} +registerScriptlet(getExceptionTokenFn, { + name: 'get-exception-token.fn', + dependencies: [ + getRandomTokenFn, + ], +}); + +/******************************************************************************/ + +export function trapPropertyFn(propChain, handler) { + if ( propChain === '' ) { return; } + let owner = self; + let prop = propChain; + for (;;) { + const pos = prop.indexOf('.'); + if ( pos === -1 ) { break; } + owner = owner[prop.slice(0, pos)]; + if ( owner instanceof Object === false ) { return; } + prop = prop.slice(pos + 1); + } + const safe = safeSelf(); + if ( trapPropertyFn.db === undefined ) { + trapPropertyFn.db = new WeakMap(); + trapPropertyFn.entryFromContext = (owner, prop) => { + const handlers = trapPropertyFn.db.get(owner); + return handlers?.get(prop); + }; + trapPropertyFn.getter = (owner, prop) => { + const entry = trapPropertyFn.entryFromContext(owner, prop); + if ( entry === undefined ) { return; } + let r = entry.value; + for ( const desc of entry.stack ) { + try { r = desc.get(); } catch { } + } + return r; + }; + trapPropertyFn.setter = (owner, prop, value) => { + const entry = trapPropertyFn.entryFromContext(owner, prop); + if ( entry === undefined ) { return; } + entry.value = value; + for ( const desc of entry.stack ) { + try { desc.set(value); } catch { } + } + }; + } + const { db } = trapPropertyFn; + const handlers = db.get(owner) || new Map(); + if ( handlers.size === 0 ) { + db.set(owner, handlers); + } + const entry = handlers.get(prop) || { + value: owner[prop], + stack: [], + }; + entry.stack.push(handler); + if ( entry.stack.length > 1 ) { return entry.value; } + handlers.set(prop, entry); + const desc = safe.Object_getOwnPropertyDescriptor(owner, prop); + if ( desc instanceof safe.Object ) { + if ( desc.get || desc.set ) { + entry.stack.push(desc); + } + } + try { + safe.Object_defineProperty(owner, prop, { + get() { + return trapPropertyFn.getter(this, prop); + }, + set(value) { + trapPropertyFn.setter(this, prop, value); + } + }); + } catch { + } + return entry.value; +} +registerScriptlet(trapPropertyFn, { + name: 'trap-property-access.fn', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ + +export function collateFetchArgumentsFn(resource, options) { + const safe = safeSelf(); + const props = [ + 'body', 'cache', 'credentials', 'duplex', 'headers', + 'integrity', 'keepalive', 'method', 'mode', 'priority', + 'redirect', 'referrer', 'referrerPolicy', 'url' + ]; + const out = {}; + if ( collateFetchArgumentsFn.collateKnownProps === undefined ) { + collateFetchArgumentsFn.collateKnownProps = (src, out) => { + for ( const prop of props ) { + if ( src[prop] === undefined ) { continue; } + out[prop] = src[prop]; + } + }; + } + if ( + typeof resource !== 'object' || + safe.Object_toString.call(resource) !== '[object Request]' + ) { + out.url = `${resource}`; + } else { + let clone; + try { + clone = safe.Request_clone.call(resource); + } catch { + } + collateFetchArgumentsFn.collateKnownProps(clone || resource, out); + } + if ( typeof options === 'object' && options !== null ) { + collateFetchArgumentsFn.collateKnownProps(options, out); + } + return out; +} +registerScriptlet(collateFetchArgumentsFn, { + name: 'collate-fetch-arguments.fn', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ + +export function parsePropertiesToMatchFn(propsToMatch, implicit = '') { + const safe = safeSelf(); + const needles = new Map(); + if ( propsToMatch === undefined || propsToMatch === '' ) { return needles; } + const options = { canNegate: true }; + for ( const needle of safe.String_split.call(propsToMatch, /\s+/) ) { + let [ prop, pattern ] = safe.String_split.call(needle, ':'); + if ( prop === '' ) { continue; } + if ( pattern !== undefined && /[^$\w -]/.test(prop) ) { + prop = `${prop}:${pattern}`; + pattern = undefined; + } + if ( pattern !== undefined ) { + needles.set(prop, safe.initPattern(pattern, options)); + } else if ( implicit !== '' ) { + needles.set(implicit, safe.initPattern(prop, options)); + } + } + return needles; +} +registerScriptlet(parsePropertiesToMatchFn, { + name: 'parse-properties-to-match.fn', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ + +export function matchObjectPropertiesFn(propNeedles, ...objs) { + const safe = safeSelf(); + const matched = []; + for ( const obj of objs ) { + if ( obj instanceof Object === false ) { continue; } + for ( const [ prop, details ] of propNeedles ) { + let value = obj[prop]; + if ( value === undefined ) { continue; } + if ( typeof value !== 'string' ) { + try { value = safe.JSON_stringify(value); } + catch { } + if ( typeof value !== 'string' ) { continue; } + } + if ( safe.testPattern(details, value) === false ) { return; } + matched.push(`${prop}: ${value}`); + } + } + return matched; +} +registerScriptlet(matchObjectPropertiesFn, { + name: 'match-object-properties.fn', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ + +// Reference: +// https://github.com/AdguardTeam/Scriptlets/blob/master/wiki/about-scriptlets.md#prevent-xhr +// +// Added `trusted` argument to allow for returning arbitrary text. Can only +// be used through scriptlets requiring trusted source. + +export function generateContentFn(trusted, directive) { + const safe = safeSelf(); + const randomize = len => { + const chunks = []; + let textSize = 0; + do { + const s = safe.Math_random().toString(36).slice(2); + chunks.push(s); + textSize += s.length; + } + while ( textSize < len ); + return chunks.join(' ').slice(0, len); + }; + if ( directive === 'true' ) { + return randomize(10); + } + if ( directive === 'emptyObj' ) { + return '{}'; + } + if ( directive === 'emptyArr' ) { + return '[]'; + } + if ( directive === 'emptyStr' ) { + return ''; + } + if ( directive.startsWith('length:') ) { + const match = /^length:(\d+)(?:-(\d+))?$/.exec(directive); + if ( match === null ) { return ''; } + const min = parseInt(match[1], 10); + const extent = safe.Math_max(parseInt(match[2], 10) || 0, min) - min; + const len = safe.Math_min(min + extent * safe.Math_random(), 500000); + return randomize(len | 0); + } + if ( directive.startsWith('war:') ) { + if ( scriptletGlobals.warOrigin === undefined ) { return ''; } + return new Promise(resolve => { + const warOrigin = scriptletGlobals.warOrigin; + const warName = directive.slice(4); + const fullpath = [ warOrigin, '/', warName ]; + const warSecret = scriptletGlobals.warSecret; + if ( warSecret !== undefined ) { + fullpath.push('?secret=', warSecret); + } + const warXHR = new safe.XMLHttpRequest(); + warXHR.responseType = 'text'; + warXHR.onloadend = ev => { + resolve(ev.target.responseText || ''); + }; + warXHR.open('GET', fullpath.join('')); + warXHR.send(); + }).catch(( ) => ''); + } + if ( directive.startsWith('join:') ) { + const parts = directive.slice(7) + .split(directive.slice(5, 7)) + .map(a => generateContentFn(trusted, a)); + return parts.some(a => a instanceof Promise) + ? Promise.all(parts).then(parts => parts.join('')) + : parts.join(''); + } + if ( trusted ) { + return directive; + } + return ''; +} +registerScriptlet(generateContentFn, { + name: 'generate-content.fn', + dependencies: [ + safeSelf, + ], +}); + +/******************************************************************************/ + +export function onIdleFn(fn, options) { + if ( self.requestIdleCallback ) { + return self.requestIdleCallback(fn, options); + } + return self.requestAnimationFrame(fn); +} +registerScriptlet(onIdleFn, { + name: 'on-idle.fn', +}); + +export function offIdleFn(id) { + if ( self.requestIdleCallback ) { + return self.cancelIdleCallback(id); + } + return self.cancelAnimationFrame(id); +} +registerScriptlet(offIdleFn, { + name: 'off-idle.fn', +}); + +/******************************************************************************/ + +export function sleepFn(ms = 0) { + const nap = ( ) => { + return new Promise(resolve => { + self.requestAnimationFrame(resolve); + }); + } + const until = Date.now() + ms; + const sleep = async resolve => { + do { + await nap(); + } while ( Date.now() < until ); + resolve(); + }; + return new Promise(resolve => { sleep(resolve); }); +} +registerScriptlet(sleepFn, { + name: 'sleep.fn', +}); + +/******************************************************************************/ + +export function lookupElementsFn(directive, until = 0) { + if ( lookupElementsFn.querySelectorEx === undefined ) { + lookupElementsFn.getShadowRoot = elem => { + if ( elem.openOrClosedShadowRoot ) { // Firefox + return elem.openOrClosedShadowRoot; + } + if ( typeof chrome === 'object' ) { // Chromium + if ( chrome.dom && chrome.dom.openOrClosedShadowRoot ) { + return chrome.dom.openOrClosedShadowRoot(elem); + } + } + return elem.shadowRoot; + }; + lookupElementsFn.queryOrEvaluateSelector = (selector, context) => { + if ( selector.startsWith('xpath:') === false ) { + return Array.from(context.querySelectorAll(selector)); + } + const result = document.evaluate(selector.slice(6), context, null, 7, null); + const out = []; + if ( result.resultType === 7 ) { + for ( let i = 0; i < result.snapshotLength; i++ ) { + out[i] = result.snapshotItem(i); + } + } + return out; + } + lookupElementsFn.querySelectorEx = (selector, context = document) => { + const pos = selector.indexOf(' >>> '); + if ( pos === -1 ) { + return lookupElementsFn.queryOrEvaluateSelector(selector, context); + } + const outside = selector.slice(0, pos).trim(); + const inside = selector.slice(pos + 5).trim(); + const elems = lookupElementsFn.queryOrEvaluateSelector(outside, context); + const out = []; + for ( let i = 0; i < elems.length; i++ ) { + const shadowRoot = lookupElementsFn.getShadowRoot(elems[i]); + if ( Boolean(shadowRoot) === false ) { continue; } + lookupElementsFn.querySelectorEx(inside, shadowRoot).forEach(a => out.push(a)); + } + return out; + }; + lookupElementsFn.lookup = directive => { + const beVisible = directive.startsWith('when-visible:'); + const selector = beVisible ? directive.slice(13) : directive; + const elems = lookupElementsFn.querySelectorEx(selector); + if ( beVisible !== true ) { return elems; } + return elems.filter(a => a.checkVisibility({ + opacityProperty: true, + visibilityProperty: true, + })); + }; + lookupElementsFn.lookupAsync = details => { + const elems = lookupElementsFn.lookup(details.directive); + if ( elems.length || Date.now() >= details.until ) { + if ( details.observer ) { + details.observer.disconnect(); + details.observer = undefined; + } + if ( details.timer ) { + offIdleFn(details.timer); + details.timer = undefined; + } + return details.resolve(elems); + } + if ( details.observer === undefined ) { + details.observer = new MutationObserver(( ) => { + lookupElementsFn.lookupAsync(details); + }); + details.observer.observe(document, { + attributes: true, + childList: true, + subtree: true, + }); + } + if ( details.timer === undefined ) { + details.timer = onIdleFn(( ) => { + details.timer = undefined; + lookupElementsFn.lookupAsync(details); + }, { timeout: 151 }); + } + }; + } + if ( until === 0 ) { + return lookupElementsFn.lookup(directive); + } + return new Promise(resolve => { + lookupElementsFn.lookupAsync({ directive, until, resolve }); + }); +} +registerScriptlet(lookupElementsFn, { + name: 'lookup-elements.fn', + dependencies: [ + offIdleFn, + onIdleFn, + ], +}); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/reverselookup-worker.js b/android/app/src/main/assets/extensions/ublock_origin/js/reverselookup-worker.js new file mode 100644 index 00000000..c8d3dc36 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/reverselookup-worker.js @@ -0,0 +1,325 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +let listEntries = Object.create(null); + +/******************************************************************************/ + +// https://github.com/uBlockOrigin/uBlock-issues/issues/2092 +// Order of ids matters + +const extractBlocks = function(content, ...ids) { + const out = []; + for ( const id of ids ) { + const pattern = `#block-start-${id}\n`; + let beg = content.indexOf(pattern); + if ( beg === -1 ) { continue; } + beg += pattern.length; + const end = content.indexOf(`#block-end-${id}`, beg); + out.push(content.slice(beg, end)); + } + return out.join('\n'); +}; + +/******************************************************************************/ + +// https://github.com/MajkiIT/polish-ads-filter/issues/14768#issuecomment-536006312 +// Avoid reporting badfilter-ed filters. + +const fromNetFilter = function(details) { + const lists = []; + const compiledFilter = details.compiledFilter; + + for ( const assetKey in listEntries ) { + const entry = listEntries[assetKey]; + if ( entry === undefined ) { continue; } + if ( entry.networkContent === undefined ) { + entry.networkContent = extractBlocks(entry.content, 'NETWORK_FILTERS:GOOD'); + } + const content = entry.networkContent; + let pos = 0; + for (;;) { + pos = content.indexOf(compiledFilter, pos); + if ( pos === -1 ) { break; } + // We need an exact match. + // https://github.com/gorhill/uBlock/issues/1392 + // https://github.com/gorhill/uBlock/issues/835 + const notFound = pos !== 0 && content.charCodeAt(pos - 1) !== 0x0A; + pos += compiledFilter.length; + if ( + notFound || + pos !== content.length && content.charCodeAt(pos) !== 0x0A + ) { + continue; + } + lists.push({ + assetKey, + title: entry.title, + supportURL: entry.supportURL, + reason: entry.reason, + }); + break; + } + } + + const response = {}; + response[details.rawFilter] = lists; + + self.postMessage({ id: details.id, response }); +}; + +/******************************************************************************/ + +// Looking up filter lists from a cosmetic filter is a bit more complicated +// than with network filters: +// +// The filter is its raw representation, not its compiled version. This is +// because the cosmetic filtering engine can't translate a live cosmetic +// filter into its compiled version. Reason is I do not want to burden +// cosmetic filtering with the resource overhead of being able to recompile +// live cosmetic filters. I want the cosmetic filtering code to be left +// completely unaffected by reverse lookup requirements. +// +// Mainly, given a CSS selector and a hostname as context, we will derive +// various versions of compiled filters and see if there are matches. This +// way the whole CPU cost is incurred by the reverse lookup code -- in a +// worker thread, and the cosmetic filtering engine incurs no cost at all. +// +// For this though, the reverse lookup code here needs some knowledge of +// the inners of the cosmetic filtering engine. +// FilterContainer.fromCompiledContent() is our reference code to create +// the various compiled versions. + +const fromExtendedFilter = function(details) { + const match = /^#@?#\^?/.exec(details.rawFilter); + const prefix = match[0]; + const exception = prefix.charAt(1) === '@'; + const selector = details.rawFilter.slice(prefix.length); + const isHtmlFilter = prefix.endsWith('^'); + const url = new URL(details.url || 'about:blank'); + const { hostname, pathname } = url; + + // The longer the needle, the lower the number of false positives. + // https://github.com/uBlockOrigin/uBlock-issues/issues/1139 + // Mind that there is no guarantee a selector has `\w` characters. + const needle = (details.needle || selector).match(/\w+|\*/g).reduce(function(a, b) { + return a.length > b.length ? a : b; + }); + + const regexFromLabels = (prefix, hn, suffix) => + new RegExp( + prefix + + hn.split('.').reduce((acc, item) => `(${acc}\\.)?${item}`) + + suffix + ); + + // https://github.com/uBlockOrigin/uBlock-issues/issues/803 + // Support looking up selectors of the form `*##...` + const reHostname = regexFromLabels('^', hostname, '$'); + let reEntity; + { + const domain = details.domain; + const pos = domain.indexOf('.'); + if ( pos !== -1 ) { + reEntity = regexFromLabels( + '^(', + hostname.slice(0, pos + hostname.length - domain.length), + '\\.)?\\*$' + ); + } + } + + const hostnameTargetMatchesHostname = target => { + if ( target === '' ) { return true; } + if ( reHostname.test(target) ) { return true; } + if ( reEntity === undefined ) { return false; } + if ( reEntity.test(target) ) { return true; } + return false; + }; + + const regexTargetMatchesHostname = target => { + return (new RegExp(target)).test(hostname); + }; + + const regexTargetMatchesURL = target => { + const pathPos = target.indexOf('\\/'); + if ( pathPos === -1 ) { + return regexTargetMatchesHostname(target); + } + return regexTargetMatchesHostname(`${target.slice(1, pathPos)}$`) && + (new RegExp(`^${target.slice(pathPos, -1)}`)).test(pathname); + }; + + const pathTargetMatchesURL = target => { + const pathPos = target.indexOf('/'); + return hostnameTargetMatchesHostname(target.slice(0, pathPos)) && + pathname.startsWith(target.slice(pathPos)); + }; + + const targetMatchesURL = target => { + if ( target.charCodeAt(0) === 0x2F /* / */ ) { + return regexTargetMatchesURL(target.slice(1, -1)); + } + if ( target.includes('/') ) { + return pathTargetMatchesURL(target); + } + return hostnameTargetMatchesHostname(target); + }; + + const response = Object.create(null); + + for ( const assetKey in listEntries ) { + const entry = listEntries[assetKey]; + if ( entry === undefined ) { continue; } + if ( entry.extendedContent === undefined ) { + entry.extendedContent = extractBlocks( + entry.content, + 'COSMETIC_FILTERS:SPECIFIC', + 'COSMETIC_FILTERS:GENERIC', + 'SCRIPTLET_FILTERS', + 'HTML_FILTERS', + 'HTTPHEADER_FILTERS' + ); + } + const content = entry.extendedContent; + let found; + let pos = 0; + while ( (pos = content.indexOf(needle, pos)) !== -1 ) { + let beg = content.lastIndexOf('\n', pos); + if ( beg === -1 ) { beg = 0; } + let end = content.indexOf('\n', pos); + if ( end === -1 ) { end = content.length; } + pos = end; + const fargs = JSON.parse(content.slice(beg, end)); + const filterType = fargs[0]; + + // https://github.com/gorhill/uBlock/issues/2763 + if ( filterType === 0 && details.ignoreGeneric ) { continue; } + + // Do not confuse cosmetic filters with HTML ones. + if ( (filterType === 64) !== isHtmlFilter ) { continue; } + + switch ( filterType ) { + // Lowly generic cosmetic filters + case 0: + if ( exception ) { break; } + if ( fargs[2] !== selector ) { break; } + found = prefix + selector; + break; + // Highly generic cosmetic filters + case 4: // simple highly generic + case 5: // complex highly generic + if ( exception ) { break; } + if ( fargs[1] !== selector ) { break; } + found = prefix + selector; + break; + // Specific cosmetic filtering + // Generic exception + case 8: + // HTML filtering + // Response header filtering + /* fallthrough */ + case 64: { + if ( exception !== (fargs[2].charCodeAt(0) === 0x2D /* - */) ) { break; } + const candidate = fargs[2].slice(1); + if ( /^responseheader\(.+\)$/.test(selector) ) { + if ( candidate !== needle ) { break; } + if ( targetMatchesURL(fargs[1]) === false ) { break; } + found = fargs[1] + prefix + selector; + break; + } + const isProcedural = candidate.charCodeAt(0) === 0x7B /* { */; + if ( + isProcedural === false && candidate !== selector || + isProcedural && JSON.parse(candidate).raw !== selector + ) { + break; + } + if ( targetMatchesURL(fargs[1]) === false ) { break; } + // https://www.reddit.com/r/uBlockOrigin/comments/d6vxzj/ + // Ignore match if specific cosmetic filters are disabled + if ( + filterType === 8 && + exception === false && + details.ignoreSpecific + ) { + break; + } + found = fargs[1] + prefix + selector; + break; + } + // Scriptlet injection + case 32: { + if ( exception !== (fargs[2].charCodeAt(0) === 0x2D /* - */) ) { break; } + const candidate = fargs[2].slice(1); + if ( candidate !== details.needle ) { break; } + if (targetMatchesURL(fargs[1]) ) { + found = fargs[1] + prefix + selector; + } + break; + } + default: + break; + } + if ( found !== undefined ) { + if ( response[found] === undefined ) { + response[found] = []; + } + response[found].push({ + assetKey: assetKey, + title: entry.title, + supportURL: entry.supportURL + }); + break; + } + } + } + + self.postMessage({ id: details.id, response }); +}; + +/******************************************************************************/ + +self.onmessage = function(e) { + const msg = e.data; + + switch ( msg.what ) { + case 'resetLists': + listEntries = Object.create(null); + break; + + case 'setList': + listEntries[msg.details.assetKey] = msg.details; + break; + + case 'fromNetFilter': + fromNetFilter(msg); + break; + + case 'fromExtendedFilter': + fromExtendedFilter(msg); + break; + } +}; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/reverselookup.js b/android/app/src/main/assets/extensions/ublock_origin/js/reverselookup.js new file mode 100644 index 00000000..c5bf1006 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/reverselookup.js @@ -0,0 +1,220 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import * as sfp from './static-filtering-parser.js'; +import { + domainFromHostname, + hostnameFromURI, +} from './uri-utils.js'; +import { CompiledListWriter } from './static-filtering-io.js'; +import { i18n$ } from './i18n.js'; +import staticNetFilteringEngine from './static-net-filtering.js'; +import µb from './background.js'; + +/******************************************************************************/ + +const pendingResponses = new Map(); + +let worker = null; +let needLists = true; +let messageId = 1; + +const onWorkerMessage = function(e) { + const msg = e.data; + const resolver = pendingResponses.get(msg.id); + pendingResponses.delete(msg.id); + resolver(msg.response); +}; + +const stopWorker = function() { + workerTTLTimer.off(); + if ( worker === null ) { return; } + worker.terminate(); + worker = null; + needLists = true; + for ( const resolver of pendingResponses.values() ) { + resolver(); + } + pendingResponses.clear(); +}; + +const workerTTLTimer = vAPI.defer.create(stopWorker); +const workerTTL = { min: 1.5 }; + +const initWorker = function() { + if ( worker === null ) { + worker = new Worker('js/reverselookup-worker.js'); + worker.onmessage = onWorkerMessage; + } + + // The worker will be shutdown after n minutes without being used. + workerTTLTimer.offon(workerTTL); + + if ( needLists === false ) { + return Promise.resolve(); + } + needLists = false; + + const entries = new Map(); + + const onListLoaded = function(details) { + const entry = entries.get(details.assetKey); + + // https://github.com/gorhill/uBlock/issues/536 + // Use assetKey when there is no filter list title. + + worker.postMessage({ + what: 'setList', + details: { + assetKey: details.assetKey, + title: entry.title || details.assetKey, + supportURL: entry.supportURL, + content: details.content + } + }); + }; + + for ( const listKey in µb.availableFilterLists ) { + if ( Object.hasOwn(µb.availableFilterLists, listKey) === false ) { + continue; + } + const entry = µb.availableFilterLists[listKey]; + if ( entry.off === true ) { continue; } + entries.set(listKey, { + title: listKey !== µb.userFiltersPath ? + entry.title : + i18n$('1pPageName'), + supportURL: entry.supportURL || '' + }); + } + if ( entries.size === 0 ) { + return Promise.resolve(); + } + + const promises = []; + for ( const listKey of entries.keys() ) { + promises.push( + µb.getCompiledFilterList(listKey).then(details => { + onListLoaded(details); + }) + ); + } + return Promise.all(promises); +}; + +const fromNetFilter = async function(rawFilter) { + if ( typeof rawFilter !== 'string' || rawFilter === '' ) { return; } + + const writer = new CompiledListWriter(); + const parser = new sfp.AstFilterParser({ + trustedSource: true, + maxTokenLength: staticNetFilteringEngine.MAX_TOKEN_LENGTH, + nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), + }); + parser.parse(rawFilter); + + const compiler = staticNetFilteringEngine.createCompiler(); + if ( compiler.compile(parser, writer) === false ) { return; } + + await initWorker(); + + const id = messageId++; + worker.postMessage({ + what: 'fromNetFilter', + id, + compiledFilter: writer.last(), + rawFilter, + }); + + return new Promise(resolve => { + pendingResponses.set(id, resolve); + }); +}; + +const fromExtendedFilter = async function(details) { + if ( + typeof details.rawFilter !== 'string' || + details.rawFilter === '' + ) { + return; + } + + await initWorker(); + + const id = messageId++; + const hostname = hostnameFromURI(details.url); + + const parser = new sfp.AstFilterParser({ + trustedSource: true, + nativeCssHas: vAPI.webextFlavor.env.includes('native_css_has'), + }); + parser.parse(details.rawFilter); + let needle; + if ( parser.isScriptletFilter() ) { + needle = JSON.stringify(parser.getScriptletArgs()); + } else if ( parser.isResponseheaderFilter() ) { + needle = parser.getResponseheaderName(); + } + + const fctxt = µb.filteringContext + .duplicate() + .setURL(details.url) + .setDocHostname(details.dochn) + .setTabHostname(details.tabhn); + fctxt.setType('generichide'); + const ignoreGeneric = staticNetFilteringEngine.matchRequest(fctxt, 0b11) === 2; + fctxt.setType('specifichide'); + const ignoreSpecific = staticNetFilteringEngine.matchRequest(fctxt, 0b11) === 2; + + worker.postMessage({ + what: 'fromExtendedFilter', + id, + url: details.url, + domain: domainFromHostname(hostname), + ignoreGeneric, + ignoreSpecific, + rawFilter: details.rawFilter, + needle, + }); + + return new Promise(resolve => { + pendingResponses.set(id, resolve); + }); +}; + +// This tells the worker that filter lists may have changed. + +const resetLists = function() { + needLists = true; + if ( worker === null ) { return; } + worker.postMessage({ what: 'resetLists' }); +}; + +/******************************************************************************/ + +export const staticFilteringReverseLookup = { + fromNetFilter, + fromExtendedFilter, + resetLists, + shutdown: stopWorker +}; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/s14e-serializer.js b/android/app/src/main/assets/extensions/ublock_origin/js/s14e-serializer.js new file mode 100644 index 00000000..d57c1ca8 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/s14e-serializer.js @@ -0,0 +1,1153 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2024-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************* + * + * Structured-Cloneable to Unicode-Only SERIALIZER + * + * Purpose: + * + * Serialize/deserialize arbitrary JS data to/from well-formed Unicode strings. + * + * The browser does not expose an API to serialize structured-cloneable types + * into a single string. JSON.stringify() does not support complex JavaScript + * objects, and does not support references to composite types. Unless the + * data to serialize is only JS strings, it is difficult to easily switch + * from one type of storage to another. + * + * Serializing to a well-formed Unicode string allows to store structured- + * cloneable data to any storage. Not all storages support storing binary data, + * but all storages support storing Unicode strings. + * + * Structured-cloneable types: + * https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm#supported_types + * + * ----------------+------------------+------------------+---------------------- + * Data types | String | JSONable | structured-cloneable + * ================+============================================================ + * document.cookie | Yes | No | No + * ----------------+------------------+------------------+---------------------- + * localStorage | Yes | No | No + * ----------------+------------------+------------------+---------------------- + * IndexedDB | Yes | Yes | Yes + * ----------------+------------------+------------------+---------------------- + * browser.storage | Yes | Yes | No + * ----------------+------------------+------------------+---------------------- + * Cache API | Yes | No | No + * ----------------+------------------+------------------+---------------------- + * + * The above table shows that only JS strings can be persisted natively to all + * types of storage. The purpose of this library is to convert + * structure-cloneable data (which is a superset of JSONable data) into a + * single JS string. The resulting string is meant to be as small as possible. + * As a result, it is not human-readable, though it contains only printable + * ASCII characters -- and possibly Unicode characters beyond ASCII. + * + * The resulting JS string will not contain characters which require escaping + * should it be converted to a JSON value. However it may contain characters + * which require escaping should it be converted to a URI component. + * + * Characteristics: + * + * - Serializes/deserializes data to/from a single well-formed Unicode string + * - Strings do not require escaping, i.e. they are stored as-is + * - Supports multiple references to same object + * - Supports reference cycles + * - Supports synchronous and asynchronous API + * - Supports usage of Worker + * - Optionally supports LZ4 compression + * + * TODO: + * + * - Harden against unexpected conditions, such as corrupted string during + * deserialization. + * - Evaluate supporting checksum. + * + * */ + +const VERSION = 1; +const SEPARATORCHAR = ' '; +const SEPARATORCHARCODE = SEPARATORCHAR.charCodeAt(0); +const SENTINELCHAR = '!'; +const SENTINELCHARCODE = SENTINELCHAR.charCodeAt(0); +const MAGICPREFIX = `UOSC_${VERSION}${SEPARATORCHAR}`; +const MAGICLZ4PREFIX = `UOSC/lz4_${VERSION}${SEPARATORCHAR}`; +const FAILMARK = Number.MAX_SAFE_INTEGER; +// Avoid characters which require escaping when serialized to JSON: +const SAFECHARS = "&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~"; +const NUMSAFECHARS = SAFECHARS.length; +const BITS_PER_SAFECHARS = Math.log2(NUMSAFECHARS); + +const { intToChar, intToCharCode, charCodeToInt } = (( ) => { + const intToChar = []; + const intToCharCode = []; + const charCodeToInt = []; + for ( let i = 0; i < NUMSAFECHARS; i++ ) { + intToChar[i] = SAFECHARS.charAt(i); + intToCharCode[i] = SAFECHARS.charCodeAt(i); + charCodeToInt[i] = 0; + } + for ( let i = NUMSAFECHARS; i < 128; i++ ) { + intToChar[i] = ''; + intToCharCode[i] = 0; + charCodeToInt[i] = 0; + } + for ( let i = 0; i < SAFECHARS.length; i++ ) { + charCodeToInt[SAFECHARS.charCodeAt(i)] = i; + } + return { intToChar, intToCharCode, charCodeToInt }; +})(); + +let iota = 1; +const I_STRING_SMALL = iota++; +const I_STRING_LARGE = iota++; +const I_ZERO = iota++; +const I_INTEGER_SMALL_POS = iota++; +const I_INTEGER_SMALL_NEG = iota++; +const I_INTEGER_LARGE_POS = iota++; +const I_INTEGER_LARGE_NEG = iota++; +const I_BOOL_FALSE = iota++; +const I_BOOL_TRUE = iota++; +const I_NULL = iota++; +const I_UNDEFINED = iota++; +const I_FLOAT = iota++; +const I_REGEXP = iota++; +const I_DATE = iota++; +const I_REFERENCE = iota++; +const I_OBJECT_SMALL = iota++; +const I_OBJECT_LARGE = iota++; +const I_ARRAY_SMALL = iota++; +const I_ARRAY_LARGE = iota++; +const I_SET_SMALL = iota++; +const I_SET_LARGE = iota++; +const I_MAP_SMALL = iota++; +const I_MAP_LARGE = iota++; +const I_ARRAYBUFFER = iota++; +const I_INT8ARRAY = iota++; +const I_UINT8ARRAY = iota++; +const I_UINT8CLAMPEDARRAY = iota++; +const I_INT16ARRAY = iota++; +const I_UINT16ARRAY = iota++; +const I_INT32ARRAY = iota++; +const I_UINT32ARRAY = iota++; +const I_FLOAT32ARRAY = iota++; +const I_FLOAT64ARRAY = iota++; +const I_DATAVIEW = iota++; + +const C_STRING_SMALL = intToChar[I_STRING_SMALL]; +const C_STRING_LARGE = intToChar[I_STRING_LARGE]; +const C_ZERO = intToChar[I_ZERO]; +const C_INTEGER_SMALL_POS = intToChar[I_INTEGER_SMALL_POS]; +const C_INTEGER_SMALL_NEG = intToChar[I_INTEGER_SMALL_NEG]; +const C_INTEGER_LARGE_POS = intToChar[I_INTEGER_LARGE_POS]; +const C_INTEGER_LARGE_NEG = intToChar[I_INTEGER_LARGE_NEG]; +const C_BOOL_FALSE = intToChar[I_BOOL_FALSE]; +const C_BOOL_TRUE = intToChar[I_BOOL_TRUE]; +const C_NULL = intToChar[I_NULL]; +const C_UNDEFINED = intToChar[I_UNDEFINED]; +const C_FLOAT = intToChar[I_FLOAT]; +const C_REGEXP = intToChar[I_REGEXP]; +const C_DATE = intToChar[I_DATE]; +const C_REFERENCE = intToChar[I_REFERENCE]; +const C_OBJECT_SMALL = intToChar[I_OBJECT_SMALL]; +const C_OBJECT_LARGE = intToChar[I_OBJECT_LARGE]; +const C_ARRAY_SMALL = intToChar[I_ARRAY_SMALL]; +const C_ARRAY_LARGE = intToChar[I_ARRAY_LARGE]; +const C_SET_SMALL = intToChar[I_SET_SMALL]; +const C_SET_LARGE = intToChar[I_SET_LARGE]; +const C_MAP_SMALL = intToChar[I_MAP_SMALL]; +const C_MAP_LARGE = intToChar[I_MAP_LARGE]; +const C_ARRAYBUFFER = intToChar[I_ARRAYBUFFER]; +const C_INT8ARRAY = intToChar[I_INT8ARRAY]; +const C_UINT8ARRAY = intToChar[I_UINT8ARRAY]; +const C_UINT8CLAMPEDARRAY = intToChar[I_UINT8CLAMPEDARRAY]; +const C_INT16ARRAY = intToChar[I_INT16ARRAY]; +const C_UINT16ARRAY = intToChar[I_UINT16ARRAY]; +const C_INT32ARRAY = intToChar[I_INT32ARRAY]; +const C_UINT32ARRAY = intToChar[I_UINT32ARRAY]; +const C_FLOAT32ARRAY = intToChar[I_FLOAT32ARRAY]; +const C_FLOAT64ARRAY = intToChar[I_FLOAT64ARRAY]; +const C_DATAVIEW = intToChar[I_DATAVIEW]; + +// Just reuse already defined constants, we just need distinct values +const I_STRING = I_STRING_SMALL; +const I_NUMBER = I_FLOAT; +const I_BOOL = I_BOOL_FALSE; +const I_OBJECT = I_OBJECT_SMALL; +const I_ARRAY = I_ARRAY_SMALL; +const I_SET = I_SET_SMALL; +const I_MAP = I_MAP_SMALL; + +const typeToSerializedInt = { + 'string': I_STRING, + 'number': I_NUMBER, + 'boolean': I_BOOL, + 'object': I_OBJECT, +}; + +const xtypeToSerializedInt = { + '[object RegExp]': I_REGEXP, + '[object Date]': I_DATE, + '[object Array]': I_ARRAY, + '[object Set]': I_SET, + '[object Map]': I_MAP, + '[object ArrayBuffer]': I_ARRAYBUFFER, + '[object Int8Array]': I_INT8ARRAY, + '[object Uint8Array]': I_UINT8ARRAY, + '[object Uint8ClampedArray]': I_UINT8CLAMPEDARRAY, + '[object Int16Array]': I_INT16ARRAY, + '[object Uint16Array]': I_UINT16ARRAY, + '[object Int32Array]': I_INT32ARRAY, + '[object Uint32Array]': I_UINT32ARRAY, + '[object Float32Array]': I_FLOAT32ARRAY, + '[object Float64Array]': I_FLOAT64ARRAY, + '[object DataView]': I_DATAVIEW, +}; + +const xtypeToSerializedChar = { + '[object Int8Array]': C_INT8ARRAY, + '[object Uint8Array]': C_UINT8ARRAY, + '[object Uint8ClampedArray]': C_UINT8CLAMPEDARRAY, + '[object Int16Array]': C_INT16ARRAY, + '[object Uint16Array]': C_UINT16ARRAY, + '[object Int32Array]': C_INT32ARRAY, + '[object Uint32Array]': C_UINT32ARRAY, + '[object Float32Array]': C_FLOAT32ARRAY, + '[object Float64Array]': C_FLOAT64ARRAY, +}; + +const toArrayBufferViewConstructor = { + [`${I_INT8ARRAY}`]: Int8Array, + [`${I_UINT8ARRAY}`]: Uint8Array, + [`${I_UINT8CLAMPEDARRAY}`]: Uint8ClampedArray, + [`${I_INT16ARRAY}`]: Int16Array, + [`${I_UINT16ARRAY}`]: Uint16Array, + [`${I_INT32ARRAY}`]: Int32Array, + [`${I_UINT32ARRAY}`]: Uint32Array, + [`${I_FLOAT32ARRAY}`]: Float32Array, + [`${I_FLOAT64ARRAY}`]: Float64Array, + [`${I_DATAVIEW}`]: DataView, +}; + +/******************************************************************************/ + +const textCodec = { + decoder: null, + encoder: null, + decode(...args) { + if ( this.decoder === null ) { + this.decoder = new globalThis.TextDecoder(); + } + return this.decoder.decode(...args); + }, + encode(...args) { + if ( this.encoder === null ) { + this.encoder = new globalThis.TextEncoder(); + } + return this.encoder.encode(...args); + }, + encodeInto(...args) { + if ( this.encoder === null ) { + this.encoder = new globalThis.TextEncoder(); + } + return this.encoder.encodeInto(...args); + }, +}; + +const isInteger = Number.isInteger; + +const writeRefs = new Map(); +const writeBuffer = []; + +const readRefs = new Map(); +let readStr = ''; +let readPtr = 0; +let readEnd = 0; + +let refCounter = 1; + +let uint8Input = null; + +const uint8InputFromAsciiStr = s => { + if ( uint8Input === null || uint8Input.length < s.length ) { + uint8Input = new Uint8Array(s.length + 0x03FF & ~0x03FF); + } + textCodec.encodeInto(s, uint8Input); + return uint8Input; +}; + +const isInstanceOf = (o, s) => { + return typeof o === 'object' && o !== null && ( + s === 'Object' || Object.prototype.toString.call(o) === `[object ${s}]` + ); +}; + +const shouldCompress = (s, options) => + options.compress === true && ( + options.compressThreshold === undefined || + options.compressThreshold <= s.length + ); + +/******************************************************************************* + * + * A large Uint is always a positive integer (can be zero), assumed to be + * large, i.e. > NUMSAFECHARS -- but not necessarily. The serialized value has + * always at least one digit, and is always followed by a separator. + * + * */ + +const strFromLargeUint = i => { + let r = 0, s = ''; + for (;;) { + r = i % NUMSAFECHARS; + s += intToChar[r]; + i -= r; + if ( i === 0 ) { break; } + i /= NUMSAFECHARS; + } + return s + SEPARATORCHAR; +}; + +const deserializeLargeUint = ( ) => { + let c = readStr.charCodeAt(readPtr++); + let n = charCodeToInt[c]; + let m = 1; + while ( (c = readStr.charCodeAt(readPtr++)) !== SEPARATORCHARCODE ) { + m *= NUMSAFECHARS; + n += m * charCodeToInt[c]; + } + return n; +}; + +/******************************************************************************* + * + * Methods specific to ArrayBuffer objects to serialize optimally according to + * the content of the buffer. + * + * In sparse mode, number of output bytes per input int32 (4-byte) value: + * [v === zero]: 1 byte (separator) + * [v !== zero]: n digits + 1 byte (separator) + * + * */ + +const sparseValueLen = v => v !== 0 + ? (Math.log2(v) / BITS_PER_SAFECHARS | 0) + 2 + : 1; + +const analyzeArrayBuffer = arrbuf => { + const byteLength = arrbuf.byteLength; + const uint32len = byteLength >>> 2; + const uint32arr = new Uint32Array(arrbuf, 0, uint32len); + let notzeroCount = 0; + for ( let i = uint32len-1; i >= 0; i-- ) { + if ( uint32arr[i] === 0 ) { continue; } + notzeroCount = i + 1; + break; + } + const end = notzeroCount + 1 <= uint32len ? notzeroCount << 2 : byteLength; + const endUint32 = end >>> 2; + const remUint8 = end & 0b11; + const denseSize = endUint32 * 5 + (remUint8 ? remUint8 + 1 : 0); + let sparseSize = 0; + for ( let i = 0; i < endUint32; i++ ) { + sparseSize += sparseValueLen(uint32arr[i]); + if ( sparseSize > denseSize ) { + return { end, dense: true, denseSize }; + } + } + if ( remUint8 !== 0 ) { + sparseSize += 1; // sentinel + const uint8arr = new Uint8Array(arrbuf, endUint32 << 2); + for ( let i = 0; i < remUint8; i++ ) { + sparseSize += sparseValueLen(uint8arr[i]); + } + } + return { end, dense: false, sparseSize }; +}; + +const denseArrayBufferToStr = (arrbuf, details) => { + const end = details.end; + const m = end % 4; + const n = end - m; + const uin32len = n >>> 2; + const uint32arr = new Uint32Array(arrbuf, 0, uin32len); + const output = new Uint8Array(details.denseSize); + let j = 0, v = 0; + for ( let i = 0; i < uin32len; i++ ) { + v = uint32arr[i]; + output[j+0] = intToCharCode[v % NUMSAFECHARS]; + v = v / NUMSAFECHARS | 0; + output[j+1] = intToCharCode[v % NUMSAFECHARS]; + v = v / NUMSAFECHARS | 0; + output[j+2] = intToCharCode[v % NUMSAFECHARS]; + v = v / NUMSAFECHARS | 0; + output[j+3] = intToCharCode[v % NUMSAFECHARS]; + v = v / NUMSAFECHARS | 0; + output[j+4] = intToCharCode[v]; + j += 5; + } + if ( m !== 0 ) { + const uint8arr = new Uint8Array(arrbuf, n); + v = uint8arr[0]; + if ( m > 1 ) { + v += uint8arr[1] << 8; + if ( m > 2 ) { + v += uint8arr[2] << 16; + } + } + output[j+0] = intToCharCode[v % NUMSAFECHARS]; + v = v / NUMSAFECHARS | 0; + output[j+1] = intToCharCode[v % NUMSAFECHARS]; + if ( m > 1 ) { + v = v / NUMSAFECHARS | 0; + output[j+2] = intToCharCode[v % NUMSAFECHARS]; + if ( m > 2 ) { + v = v / NUMSAFECHARS | 0; + output[j+3] = intToCharCode[v % NUMSAFECHARS]; + } + } + } + return textCodec.decode(output); +}; + +const BASE88_POW1 = NUMSAFECHARS; +const BASE88_POW2 = NUMSAFECHARS * BASE88_POW1; +const BASE88_POW3 = NUMSAFECHARS * BASE88_POW2; +const BASE88_POW4 = NUMSAFECHARS * BASE88_POW3; + +const denseArrayBufferFromStr = (denseStr, arrbuf) => { + const input = uint8InputFromAsciiStr(denseStr); + const end = denseStr.length; + const m = end % 5; + const n = end - m; + const uin32len = n / 5 * 4 >>> 2; + const uint32arr = new Uint32Array(arrbuf, 0, uin32len); + let j = 0, v = 0; + for ( let i = 0; i < n; i += 5 ) { + v = charCodeToInt[input[i+0]]; + v += charCodeToInt[input[i+1]] * BASE88_POW1; + v += charCodeToInt[input[i+2]] * BASE88_POW2; + v += charCodeToInt[input[i+3]] * BASE88_POW3; + v += charCodeToInt[input[i+4]] * BASE88_POW4; + uint32arr[j++] = v; + } + if ( m === 0 ) { return; } + v = charCodeToInt[input[n+0]] + + charCodeToInt[input[n+1]] * BASE88_POW1; + if ( m > 2 ) { + v += charCodeToInt[input[n+2]] * BASE88_POW2; + if ( m > 3 ) { + v += charCodeToInt[input[n+3]] * BASE88_POW3; + } + } + const uint8arr = new Uint8Array(arrbuf, j << 2); + uint8arr[0] = v & 255; + if ( v !== 0 ) { + v >>>= 8; + uint8arr[1] = v & 255; + if ( v !== 0 ) { + v >>>= 8; + uint8arr[2] = v & 255; + } + } +}; + +const sparseArrayBufferToStr = (arrbuf, details) => { + const end = details.end; + const uint8out = new Uint8Array(details.sparseSize); + const uint32len = end >>> 2; + const uint32arr = new Uint32Array(arrbuf, 0, uint32len); + let j = 0, n = 0, r = 0; + for ( let i = 0; i < uint32len; i++ ) { + n = uint32arr[i]; + if ( n !== 0 ) { + for (;;) { + r = n % NUMSAFECHARS; + uint8out[j++] = intToCharCode[r]; + n -= r; + if ( n === 0 ) { break; } + n /= NUMSAFECHARS; + } + } + uint8out[j++] = SEPARATORCHARCODE; + } + const uint8rem = end & 0b11; + if ( uint8rem !== 0 ) { + uint8out[j++] = SENTINELCHARCODE; + const uint8arr = new Uint8Array(arrbuf, end - uint8rem, uint8rem); + for ( let i = 0; i < uint8rem; i++ ) { + n = uint8arr[i]; + if ( n !== 0 ) { + for (;;) { + r = n % NUMSAFECHARS; + uint8out[j++] = intToCharCode[r]; + n -= r; + if ( n === 0 ) { break; } + n /= NUMSAFECHARS; + } + } + uint8out[j++] = SEPARATORCHARCODE; + } + } + return textCodec.decode(uint8out); +}; + +const sparseArrayBufferFromStr = (sparseStr, arrbuf) => { + const sparseLen = sparseStr.length; + const input = uint8InputFromAsciiStr(sparseStr); + const end = arrbuf.byteLength; + const uint32len = end >>> 2; + const uint32arr = new Uint32Array(arrbuf, 0, uint32len); + let i = 0, j = 0, c = 0, n = 0, m = 0; + for ( ; j < sparseLen; i++ ) { + c = input[j++]; + if ( c === SEPARATORCHARCODE ) { continue; } + if ( c === SENTINELCHARCODE ) { break; } + n = charCodeToInt[c]; + m = 1; + for (;;) { + c = input[j++]; + if ( c === SEPARATORCHARCODE ) { break; } + m *= NUMSAFECHARS; + n += m * charCodeToInt[c]; + } + uint32arr[i] = n; + } + if ( c === SENTINELCHARCODE ) { + i <<= 2; + const uint8arr = new Uint8Array(arrbuf, i); + for ( ; j < sparseLen; i++ ) { + c = input[j++]; + if ( c === SEPARATORCHARCODE ) { continue; } + n = charCodeToInt[c]; + m = 1; + for (;;) { + c = input[j++]; + if ( c === SEPARATORCHARCODE ) { break; } + m *= NUMSAFECHARS; + n += m * charCodeToInt[c]; + } + uint8arr[i] = n; + } + } +}; + +/******************************************************************************/ + +const _serialize = data => { + // Primitive types + if ( data === 0 ) { + writeBuffer.push(C_ZERO); + return; + } + if ( data === null ) { + writeBuffer.push(C_NULL); + return; + } + if ( data === undefined ) { + writeBuffer.push(C_UNDEFINED); + return; + } + // Type name + switch ( typeToSerializedInt[typeof data] ) { + case I_STRING: { + const length = data.length; + if ( length < NUMSAFECHARS ) { + writeBuffer.push(C_STRING_SMALL + intToChar[length], data); + } else { + writeBuffer.push(C_STRING_LARGE + strFromLargeUint(length), data); + } + return; + } + case I_NUMBER: + if ( isInteger(data) ) { + if ( data >= NUMSAFECHARS ) { + writeBuffer.push(C_INTEGER_LARGE_POS + strFromLargeUint(data)); + } else if ( data > 0 ) { + writeBuffer.push(C_INTEGER_SMALL_POS + intToChar[data]); + } else if ( data > -NUMSAFECHARS ) { + writeBuffer.push(C_INTEGER_SMALL_NEG + intToChar[-data]); + } else { + writeBuffer.push(C_INTEGER_LARGE_NEG + strFromLargeUint(-data)); + } + } else { + const s = `${data}`; + writeBuffer.push(C_FLOAT + strFromLargeUint(s.length) + s); + } + return; + case I_BOOL: + writeBuffer.push(data ? C_BOOL_TRUE : C_BOOL_FALSE); + return; + case I_OBJECT: + break; + default: + return; + } + const xtypeName = Object.prototype.toString.call(data); + const xtypeInt = xtypeToSerializedInt[xtypeName]; + if ( xtypeInt === I_REGEXP ) { + writeBuffer.push(C_REGEXP); + _serialize(data.source); + _serialize(data.flags); + return; + } + if ( xtypeInt === I_DATE ) { + writeBuffer.push(C_DATE); + _serialize(data.getTime()); + return; + } + // Reference to composite types + const ref = writeRefs.get(data); + if ( ref !== undefined ) { + writeBuffer.push(C_REFERENCE + strFromLargeUint(ref)); + return; + } + // Remember reference + writeRefs.set(data, refCounter++); + // Extended type name + switch ( xtypeInt ) { + case I_ARRAY: { + const size = data.length; + if ( size < NUMSAFECHARS ) { + writeBuffer.push(C_ARRAY_SMALL + intToChar[size]); + } else { + writeBuffer.push(C_ARRAY_LARGE + strFromLargeUint(size)); + } + for ( const v of data ) { + _serialize(v); + } + return; + } + case I_SET: { + const size = data.size; + if ( size < NUMSAFECHARS ) { + writeBuffer.push(C_SET_SMALL + intToChar[size]); + } else { + writeBuffer.push(C_SET_LARGE + strFromLargeUint(size)); + } + for ( const v of data ) { + _serialize(v); + } + return; + } + case I_MAP: { + const size = data.size; + if ( size < NUMSAFECHARS ) { + writeBuffer.push(C_MAP_SMALL + intToChar[size]); + } else { + writeBuffer.push(C_MAP_LARGE + strFromLargeUint(size)); + } + for ( const [ k, v ] of data ) { + _serialize(k); + _serialize(v); + } + return; + } + case I_ARRAYBUFFER: { + const byteLength = data.byteLength; + writeBuffer.push(C_ARRAYBUFFER + strFromLargeUint(byteLength)); + _serialize(data.maxByteLength); + const arrbuffDetails = analyzeArrayBuffer(data); + _serialize(arrbuffDetails.dense); + const str = arrbuffDetails.dense + ? denseArrayBufferToStr(data, arrbuffDetails) + : sparseArrayBufferToStr(data, arrbuffDetails); + _serialize(str); + //console.log(`arrbuf size=${byteLength} content size=${arrbuffDetails.end} dense=${arrbuffDetails.dense} array size=${arrbuffDetails.dense ? arrbuffDetails.denseSize : arrbuffDetails.sparseSize} serialized size=${str.length}`); + return; + } + case I_INT8ARRAY: + case I_UINT8ARRAY: + case I_UINT8CLAMPEDARRAY: + case I_INT16ARRAY: + case I_UINT16ARRAY: + case I_INT32ARRAY: + case I_UINT32ARRAY: + case I_FLOAT32ARRAY: + case I_FLOAT64ARRAY: + writeBuffer.push( + xtypeToSerializedChar[xtypeName], + strFromLargeUint(data.byteOffset), + strFromLargeUint(data.length) + ); + _serialize(data.buffer); + return; + case I_DATAVIEW: + writeBuffer.push(C_DATAVIEW, strFromLargeUint(data.byteOffset), strFromLargeUint(data.byteLength)); + _serialize(data.buffer); + return; + default: { + const keys = Object.keys(data); + const size = keys.length; + if ( size < NUMSAFECHARS ) { + writeBuffer.push(C_OBJECT_SMALL + intToChar[size]); + } else { + writeBuffer.push(C_OBJECT_LARGE + strFromLargeUint(size)); + } + for ( const key of keys ) { + _serialize(key); + _serialize(data[key]); + } + break; + } + } +}; + +/******************************************************************************/ + +const _deserialize = ( ) => { + if ( readPtr >= readEnd ) { return; } + const type = charCodeToInt[readStr.charCodeAt(readPtr++)]; + switch ( type ) { + // Primitive types + case I_STRING_SMALL: + case I_STRING_LARGE: { + const size = type === I_STRING_SMALL + ? charCodeToInt[readStr.charCodeAt(readPtr++)] + : deserializeLargeUint(); + const beg = readPtr; + readPtr += size; + return readStr.slice(beg, readPtr); + } + case I_ZERO: + return 0; + case I_INTEGER_SMALL_POS: + return charCodeToInt[readStr.charCodeAt(readPtr++)]; + case I_INTEGER_SMALL_NEG: + return -charCodeToInt[readStr.charCodeAt(readPtr++)]; + case I_INTEGER_LARGE_POS: + return deserializeLargeUint(); + case I_INTEGER_LARGE_NEG: + return -deserializeLargeUint(); + case I_BOOL_FALSE: + return false; + case I_BOOL_TRUE: + return true; + case I_NULL: + return null; + case I_UNDEFINED: + return; + case I_FLOAT: { + const size = deserializeLargeUint(); + const beg = readPtr; + readPtr += size; + return parseFloat(readStr.slice(beg, readPtr)); + } + case I_REGEXP: { + const source = _deserialize(); + const flags = _deserialize(); + return new RegExp(source, flags); + } + case I_DATE: { + const time = _deserialize(); + return new Date(time); + } + case I_REFERENCE: { + const ref = deserializeLargeUint(); + return readRefs.get(ref); + } + case I_OBJECT_SMALL: + case I_OBJECT_LARGE: { + const out = {}; + readRefs.set(refCounter++, out); + const entries = []; + const size = type === I_OBJECT_SMALL + ? charCodeToInt[readStr.charCodeAt(readPtr++)] + : deserializeLargeUint(); + for ( let i = 0; i < size; i++ ) { + const k = _deserialize(); + const v = _deserialize(); + entries.push([ k, v ]); + } + Object.assign(out, Object.fromEntries(entries)); + return out; + } + case I_ARRAY_SMALL: + case I_ARRAY_LARGE: { + const out = []; + readRefs.set(refCounter++, out); + const size = type === I_ARRAY_SMALL + ? charCodeToInt[readStr.charCodeAt(readPtr++)] + : deserializeLargeUint(); + for ( let i = 0; i < size; i++ ) { + out.push(_deserialize()); + } + return out; + } + case I_SET_SMALL: + case I_SET_LARGE: { + const out = new Set(); + readRefs.set(refCounter++, out); + const size = type === I_SET_SMALL + ? charCodeToInt[readStr.charCodeAt(readPtr++)] + : deserializeLargeUint(); + for ( let i = 0; i < size; i++ ) { + out.add(_deserialize()); + } + return out; + } + case I_MAP_SMALL: + case I_MAP_LARGE: { + const out = new Map(); + readRefs.set(refCounter++, out); + const size = type === I_MAP_SMALL + ? charCodeToInt[readStr.charCodeAt(readPtr++)] + : deserializeLargeUint(); + for ( let i = 0; i < size; i++ ) { + const k = _deserialize(); + const v = _deserialize(); + out.set(k, v); + } + return out; + } + case I_ARRAYBUFFER: { + const byteLength = deserializeLargeUint(); + const maxByteLength = _deserialize(); + let options; + if ( maxByteLength !== 0 && maxByteLength !== byteLength ) { + options = { maxByteLength }; + } + const arrbuf = new ArrayBuffer(byteLength, options); + const dense = _deserialize(); + const str = _deserialize(); + if ( dense ) { + denseArrayBufferFromStr(str, arrbuf); + } else { + sparseArrayBufferFromStr(str, arrbuf); + } + readRefs.set(refCounter++, arrbuf); + return arrbuf; + } + case I_INT8ARRAY: + case I_UINT8ARRAY: + case I_UINT8CLAMPEDARRAY: + case I_INT16ARRAY: + case I_UINT16ARRAY: + case I_INT32ARRAY: + case I_UINT32ARRAY: + case I_FLOAT32ARRAY: + case I_FLOAT64ARRAY: + case I_DATAVIEW: { + const byteOffset = deserializeLargeUint(); + const length = deserializeLargeUint(); + const ref = refCounter++; + const arrayBuffer = _deserialize(); + const ctor = toArrayBufferViewConstructor[`${type}`]; + const out = new ctor(arrayBuffer, byteOffset, length); + readRefs.set(ref, out); + return out; + } + default: + break; + } + readPtr = FAILMARK; +}; + +/******************************************************************************* + * + * LZ4 block compression/decompression + * + * Imported from: + * https://github.com/gorhill/lz4-wasm/blob/8995cdef7b/dist/lz4-block-codec-js.js + * + * Customized to avoid external dependencies as I entertain the idea of + * spinning off the serializer as a standalone utility for all to use. + * + * */ + +class LZ4BlockJS { + constructor() { + this.hashTable = undefined; + this.outputBuffer = undefined; + } + reset() { + this.hashTable = undefined; + this.outputBuffer = undefined; + } + growOutputBuffer(size) { + if ( this.outputBuffer !== undefined ) { + if ( this.outputBuffer.byteLength >= size ) { return; } + } + this.outputBuffer = new ArrayBuffer(size + 0xFFFF & 0x7FFF0000); + } + encodeBound(size) { + return size > 0x7E000000 ? 0 : size + (size / 255 | 0) + 16; + } + encodeBlock(iBuf, oOffset) { + const iLen = iBuf.byteLength; + if ( iLen >= 0x7E000000 ) { throw new RangeError(); } + // "The last match must start at least 12 bytes before end of block" + const lastMatchPos = iLen - 12; + // "The last 5 bytes are always literals" + const lastLiteralPos = iLen - 5; + if ( this.hashTable === undefined ) { + this.hashTable = new Int32Array(65536); + } + this.hashTable.fill(-65536); + if ( isInstanceOf(iBuf, 'ArrayBuffer') ) { + iBuf = new Uint8Array(iBuf); + } + const oLen = oOffset + this.encodeBound(iLen); + this.growOutputBuffer(oLen); + const oBuf = new Uint8Array(this.outputBuffer, 0, oLen); + let iPos = 0; + let oPos = oOffset; + let anchorPos = 0; + // sequence-finding loop + for (;;) { + let refPos; + let mOffset; + let sequence = iBuf[iPos] << 8 | iBuf[iPos+1] << 16 | iBuf[iPos+2] << 24; + // match-finding loop + while ( iPos <= lastMatchPos ) { + sequence = sequence >>> 8 | iBuf[iPos+3] << 24; + const hash = (sequence * 0x9E37 & 0xFFFF) + (sequence * 0x79B1 >>> 16) & 0xFFFF; + refPos = this.hashTable[hash]; + this.hashTable[hash] = iPos; + mOffset = iPos - refPos; + if ( + mOffset < 65536 && + iBuf[refPos+0] === ((sequence ) & 0xFF) && + iBuf[refPos+1] === ((sequence >>> 8) & 0xFF) && + iBuf[refPos+2] === ((sequence >>> 16) & 0xFF) && + iBuf[refPos+3] === ((sequence >>> 24) & 0xFF) + ) { + break; + } + iPos += 1; + } + // no match found + if ( iPos > lastMatchPos ) { break; } + // match found + let lLen = iPos - anchorPos; + let mLen = iPos; + iPos += 4; refPos += 4; + while ( iPos < lastLiteralPos && iBuf[iPos] === iBuf[refPos] ) { + iPos += 1; refPos += 1; + } + mLen = iPos - mLen; + const token = mLen < 19 ? mLen - 4 : 15; + // write token, length of literals if needed + if ( lLen >= 15 ) { + oBuf[oPos++] = 0xF0 | token; + let l = lLen - 15; + while ( l >= 255 ) { + oBuf[oPos++] = 255; + l -= 255; + } + oBuf[oPos++] = l; + } else { + oBuf[oPos++] = (lLen << 4) | token; + } + // write literals + while ( lLen-- ) { + oBuf[oPos++] = iBuf[anchorPos++]; + } + if ( mLen === 0 ) { break; } + // write offset of match + oBuf[oPos+0] = mOffset; + oBuf[oPos+1] = mOffset >>> 8; + oPos += 2; + // write length of match if needed + if ( mLen >= 19 ) { + let l = mLen - 19; + while ( l >= 255 ) { + oBuf[oPos++] = 255; + l -= 255; + } + oBuf[oPos++] = l; + } + anchorPos = iPos; + } + // last sequence is literals only + let lLen = iLen - anchorPos; + if ( lLen >= 15 ) { + oBuf[oPos++] = 0xF0; + let l = lLen - 15; + while ( l >= 255 ) { + oBuf[oPos++] = 255; + l -= 255; + } + oBuf[oPos++] = l; + } else { + oBuf[oPos++] = lLen << 4; + } + while ( lLen-- ) { + oBuf[oPos++] = iBuf[anchorPos++]; + } + return new Uint8Array(oBuf.buffer, 0, oPos); + } + decodeBlock(iBuf, iOffset, oLen) { + const iLen = iBuf.byteLength; + this.growOutputBuffer(oLen); + const oBuf = new Uint8Array(this.outputBuffer, 0, oLen); + let iPos = iOffset, oPos = 0; + while ( iPos < iLen ) { + const token = iBuf[iPos++]; + // literals + let clen = token >>> 4; + // length of literals + if ( clen !== 0 ) { + if ( clen === 15 ) { + let l; + for (;;) { + l = iBuf[iPos++]; + if ( l !== 255 ) { break; } + clen += 255; + } + clen += l; + } + // copy literals + const end = iPos + clen; + while ( iPos < end ) { + oBuf[oPos++] = iBuf[iPos++]; + } + if ( iPos === iLen ) { break; } + } + // match + const mOffset = iBuf[iPos+0] | (iBuf[iPos+1] << 8); + if ( mOffset === 0 || mOffset > oPos ) { return; } + iPos += 2; + // length of match + clen = (token & 0x0F) + 4; + if ( clen === 19 ) { + let l; + for (;;) { + l = iBuf[iPos++]; + if ( l !== 255 ) { break; } + clen += 255; + } + clen += l; + } + // copy match + const end = oPos + clen; + let mPos = oPos - mOffset; + while ( oPos < end ) { + oBuf[oPos++] = oBuf[mPos++]; + } + } + return oBuf; + } + encode(input, outputOffset) { + if ( isInstanceOf(input, 'ArrayBuffer') ) { + input = new Uint8Array(input); + } else if ( isInstanceOf(input, 'Uint8Array') === false ) { + throw new TypeError(); + } + return this.encodeBlock(input, outputOffset); + } + decode(input, inputOffset, outputSize) { + if ( isInstanceOf(input, 'ArrayBuffer') ) { + input = new Uint8Array(input); + } else if ( isInstanceOf(input, 'Uint8Array') === false ) { + throw new TypeError(); + } + return this.decodeBlock(input, inputOffset, outputSize); + } +} + +/******************************************************************************* + * + * Synchronous APIs + * + * */ + +export const serialize = (data, options = {}) => { + refCounter = 1; + _serialize(data); + writeBuffer.unshift(MAGICPREFIX); + const s = writeBuffer.join(''); + writeRefs.clear(); + writeBuffer.length = 0; + if ( shouldCompress(s, options) === false ) { return s; } + const lz4Util = new LZ4BlockJS(); + const uint8ArrayBefore = textCodec.encode(s); + const uint8ArrayAfter = lz4Util.encode(uint8ArrayBefore, 0); + const lz4 = { + size: uint8ArrayBefore.length, + data: new Uint8Array(uint8ArrayAfter), + }; + refCounter = 1; + _serialize(lz4); + writeBuffer.unshift(MAGICLZ4PREFIX); + const t = writeBuffer.join(''); + writeRefs.clear(); + writeBuffer.length = 0; + const ratio = t.length / s.length; + return ratio <= 0.85 ? t : s; +}; + +const deserializeById = (blockid, s) => { + refCounter = 1; + readStr = s; + readEnd = s.length; + readPtr = blockid.length; + const data = _deserialize(); + readRefs.clear(); + readStr = ''; + if ( readPtr === FAILMARK ) { return; } + return data; +}; + +export const deserialize = s => { + if ( s.startsWith(MAGICLZ4PREFIX) ) { + const lz4 = deserializeById(MAGICLZ4PREFIX, s); + if ( lz4 ) { + const lz4Util = new LZ4BlockJS(); + const uint8ArrayAfter = lz4Util.decode(lz4.data, 0, lz4.size); + if ( uint8ArrayAfter ) { + s = textCodec.decode(new Uint8Array(uint8ArrayAfter)); + } + } + } + const data = s.startsWith(MAGICPREFIX) + ? deserializeById(MAGICPREFIX, s) + : undefined; + uint8Input = null; + return data; +}; + +export const isSerialized = s => + typeof s === 'string' && + (s.startsWith(MAGICLZ4PREFIX) || s.startsWith(MAGICPREFIX)); + +export const isCompressed = s => + typeof s === 'string' && s.startsWith(MAGICLZ4PREFIX); + +/******************************************************************************* + * + * Asynchronous APIs + * + * Being asynchronous allows to support workers and future features such as + * checksums. + * + * */ + +export async function serializeAsync(data, options = {}) { + return serialize(data, options); +} + +export async function deserializeAsync(data, options = {}) { + if ( isSerialized(data) === false ) { return data; } + return deserialize(data, options); +} + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlet-filtering-core.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlet-filtering-core.js new file mode 100644 index 00000000..5c56423c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlet-filtering-core.js @@ -0,0 +1,317 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2017-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +import { StaticExtFilteringHostnameDB } from './static-ext-filtering-db.js'; +import { entityFromHostname } from './uri-utils.js'; +import { redirectEngine as reng } from './redirect-engine.js'; + +/******************************************************************************/ + +// For debugging convenience: all the top function calls will appear +// at the bottom of a generated content script +const codeSorter = (a, b) => { + if ( a.startsWith('try') ) { return 1; } + if ( b.startsWith('try') ) { return -1; } + return 0; +}; + +const normalizeRawFilter = (parser, sourceIsTrusted = false) => { + const args = parser.getScriptletArgs(); + if ( args.length !== 0 ) { + let token = `${args[0]}.js`; + if ( reng.aliases.has(token) ) { + token = reng.aliases.get(token); + } + if ( parser.isException() !== true ) { + if ( sourceIsTrusted !== true ) { + if ( reng.tokenRequiresTrust(token) ) { return; } + } + } + args[0] = token.slice(0, -3); + } + return JSON.stringify(args); +}; + +const lookupScriptlet = (rawToken, mainMap, isolatedMap, debug = false) => { + if ( mainMap.has(rawToken) || isolatedMap.has(rawToken) ) { return; } + const args = JSON.parse(rawToken); + const token = `${args[0]}.js`; + const details = reng.contentFromName(token, 'text/javascript'); + if ( details === undefined ) { return; } + const targetWorldMap = details.world !== 'ISOLATED' ? mainMap : isolatedMap; + const match = /^function\s+([^(\s]+)\s*\(/.exec(details.js); + const fname = match && match[1]; + const content = patchScriptlet(fname, details.js, args.slice(1)); + if ( fname ) { + targetWorldMap.set(token, details.js); + } + const dependencies = details.dependencies || []; + while ( dependencies.length !== 0 ) { + const token = dependencies.shift(); + if ( targetWorldMap.has(token) ) { continue; } + const details = reng.contentFromName(token, 'fn/javascript') || + reng.contentFromName(token, 'text/javascript'); + if ( details === undefined ) { continue; } + targetWorldMap.set(token, details.js); + if ( Array.isArray(details.dependencies) === false ) { continue; } + dependencies.push(...details.dependencies); + } + targetWorldMap.set(rawToken, [ + 'try {', + `\t${content}`, + '} catch (e) {', + debug ? '\tconsole.error(e);' : '', + '}', + ].join('\n')); +}; + +// Fill-in scriptlet argument placeholders. +const patchScriptlet = (fname, content, arglist) => { + if ( fname ) { + content = `${fname}({{args}});`; + } else { + for ( let i = 0; i < arglist.length; i++ ) { + content = content.replace(`{{${i+1}}}`, arglist[i]); + } + } + return content.replace('{{args}}', + JSON.stringify(arglist).slice(1,-1).replace(/\$/g, '$$$') + ); +}; + +const requote = s => { + if ( /^(["'`]).*\1$|,|^$/.test(s) === false ) { return s; } + if ( s.includes("'") === false ) { return `'${s}'`; } + if ( s.includes('"') === false ) { return `"${s}"`; } + if ( s.includes('`') === false ) { return `\`${s}\``; } + return `'${s.replace(/'/g, "\\'")}'`; +}; + +const decompile = (json, isException) => { + const prefix = isException ? '#@#' : '##'; + const args = JSON.parse(json); + return `${prefix}+js(${args.map(s => requote(s)).join(', ')})`; +}; + +/******************************************************************************/ + +export class ScriptletFilteringEngine { + constructor() { + this.acceptedCount = 0; + this.discardedCount = 0; + this.scriptletDB = new StaticExtFilteringHostnameDB(); + this.duplicates = new Set(); + } + + getFilterCount() { + return this.scriptletDB.size; + } + + reset() { + this.scriptletDB.clear(); + this.duplicates.clear(); + this.acceptedCount = 0; + this.discardedCount = 0; + } + + freeze() { + this.duplicates.clear(); + this.scriptletDB.collectGarbage(); + } + + // parser: instance of AstFilterParser from static-filtering-parser.js + // writer: instance of CompiledListWriter from static-filtering-io.js + compile(parser, writer) { + writer.select('SCRIPTLET_FILTERS'); + + // Only exception filters are allowed to be global. + const isException = parser.isException(); + const normalized = normalizeRawFilter(parser, writer.properties.get('trustedSource')); + + // Can fail if there is a mismatch with trust requirement + if ( normalized === undefined ) { return; } + + // Tokenless is meaningful only for exception filters. + if ( normalized === '[]' && isException === false ) { return; } + + if ( parser.hasOptions() === false ) { + if ( isException ) { + writer.push([ 32, '', `-${normalized}` ]); + } + return; + } + + // https://github.com/gorhill/uBlock/issues/3375 + // Ignore instances of exception filter with negated hostnames, + // because there is no way to create an exception to an exception. + + for ( const { hn, not, bad } of parser.getExtFilterDomainIterator() ) { + if ( bad ) { continue; } + const prefix = ((isException ? 1 : 0) ^ (not ? 1 : 0)) ? '-' : '+'; + writer.push([ 32, hn, `${prefix}${normalized}` ]); + } + } + + // writer: instance of CompiledListReader from static-filtering-io.js + fromCompiledContent(reader) { + reader.select('SCRIPTLET_FILTERS'); + + while ( reader.next() ) { + this.acceptedCount += 1; + const fingerprint = reader.fingerprint(); + if ( this.duplicates.has(fingerprint) ) { + this.discardedCount += 1; + continue; + } + this.duplicates.add(fingerprint); + const args = reader.args(); + this.scriptletDB.store(args[1], args[2]); + } + } + + toSelfie() { + return this.scriptletDB.toSelfie(); + } + + fromSelfie(selfie) { + this.scriptletDB.fromSelfie(selfie); + return true; + } + + retrieve(request, options = {}) { + if ( this.scriptletDB.size === 0 ) { return; } + + const all = new Set(); + const { ancestors = [], domain, hostname } = request; + + this.scriptletDB.retrieveSpecifics(all, hostname); + const entity = entityFromHostname(hostname, domain); + this.scriptletDB.retrieveSpecifics(all, entity); + this.scriptletDB.retrieveSpecificsByRegex(all, hostname, request.url); + this.scriptletDB.retrieveGenerics(all); + const visitedAncestors = []; + for ( const ancestor of ancestors ) { + const { domain, hostname } = ancestor; + if ( visitedAncestors.includes(hostname) ) { continue; } + visitedAncestors.push(hostname); + this.scriptletDB.retrieveSpecifics(all, `${hostname}>>`); + const entity = entityFromHostname(hostname, domain); + if ( entity !== '' ) { + this.scriptletDB.retrieveSpecifics(all, `${entity}>>`); + } + } + if ( all.size === 0 ) { return; } + + // Wholly disable scriptlet injection? + if ( all.has('-[]') ) { + return { filters: [ '#@#+js()' ] }; + } + + // Split filters in different groups + const scriptlets = new Set(); + const exceptions = new Set(); + for ( const s of all ) { + if ( s.charCodeAt(0) === 0x2D /* - */ ) { continue; } + const selector = s.slice(1); + if ( all.has(`-${selector}`) ) { + exceptions.add(selector); + } else { + scriptlets.add(selector); + } + } + + const mainWorldMap = new Map(); + const isolatedWorldMap = new Map(); + + for ( const token of scriptlets ) { + lookupScriptlet(token, mainWorldMap, isolatedWorldMap, options.debug); + } + + if ( scriptlets.size !== 0 ) { + if ( mainWorldMap.size === 0 ) { + if ( isolatedWorldMap.size === 0 ) { return; } + } + } + + const mainWorldCode = []; + for ( const js of mainWorldMap.values() ) { + mainWorldCode.push(js); + } + mainWorldCode.sort(codeSorter); + + const isolatedWorldCode = []; + for ( const js of isolatedWorldMap.values() ) { + isolatedWorldCode.push(js); + } + isolatedWorldCode.sort(codeSorter); + + const scriptletDetails = { + mainWorld: mainWorldCode.join('\n\n'), + isolatedWorld: isolatedWorldCode.join('\n\n'), + filters: [ + ...Array.from(scriptlets).map(a => decompile(a, false)), + ...Array.from(exceptions).map(a => decompile(a, true)), + ], + }; + + const scriptletGlobals = options.scriptletGlobals || {}; + + if ( options.debug ) { + scriptletGlobals.canDebug = true; + } + + const scriptletGlobalsJSON = JSON.stringify(scriptletGlobals, null, 4); + + return { + mainWorld: scriptletDetails.mainWorld === '' ? '' : [ + '(function() {', + '// >>>> start of private namespace', + '', + options.debugScriptlets ? 'debugger;' : ';', + '', + // For use by scriptlets to share local data among themselves + `const scriptletGlobals = ${scriptletGlobalsJSON};`, + '', + scriptletDetails.mainWorld, + '', + '// <<<< end of private namespace', + '})();', + ].join('\n'), + isolatedWorld: scriptletDetails.isolatedWorld === '' ? '' : [ + 'function() {', + '// >>>> start of private namespace', + '', + options.debugScriptlets ? 'debugger;' : ';', + '', + // For use by scriptlets to share local data among themselves + `const scriptletGlobals = ${scriptletGlobalsJSON};`, + '', + scriptletDetails.isolatedWorld, + '', + '// <<<< end of private namespace', + '}', + ].join('\n'), + filters: scriptletDetails.filters, + }; + } +} + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlet-filtering.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlet-filtering.js new file mode 100644 index 00000000..7980a406 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlet-filtering.js @@ -0,0 +1,394 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2017-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +import { + domainFromHostname, + hostnameFromURI, +} from './uri-utils.js'; + +import { MRUCache } from './mrucache.js'; +import { ScriptletFilteringEngine } from './scriptlet-filtering-core.js'; + +import logger from './logger.js'; +import { onBroadcast } from './broadcast.js'; +import { redirectEngine as reng } from './redirect-engine.js'; +import { sessionFirewall } from './filtering-engines.js'; +import µb from './background.js'; + +/******************************************************************************/ + +const contentScriptRegisterer = { + id: 1, + hostnameToDetails: new Map(), + register(hostname, code) { + if ( browser.contentScripts === undefined ) { return false; } + if ( hostname === '' ) { return false; } + const details = this.hostnameToDetails.get(hostname); + if ( details !== undefined ) { + if ( code === details.code ) { + return details.handle instanceof Promise === false; + } + this.unregisterHandle(details.handle); + this.hostnameToDetails.delete(hostname); + } + const id = this.id++; + const promise = browser.contentScripts.register({ + js: [ { code } ], + allFrames: true, + matches: [ `*://*.${hostname}/*` ], + matchAboutBlank: true, + runAt: 'document_start', + }).then(handle => { + const details = this.hostnameToDetails.get(hostname); + if ( details === undefined ) { return; } + if ( details.id !== id ) { return; } + details.handle = handle; + }).catch(( ) => { + this.hostnameToDetails.delete(hostname); + }); + this.hostnameToDetails.set(hostname, { id, handle: promise, code }); + return false; + }, + unregister(hostname) { + if ( hostname === '' ) { return; } + if ( this.hostnameToDetails.size === 0 ) { return; } + const details = this.hostnameToDetails.get(hostname); + if ( details === undefined ) { return; } + this.hostnameToDetails.delete(hostname); + this.unregisterHandle(details.handle); + }, + flush(hostname) { + if ( hostname === '' ) { return; } + if ( hostname === '*' ) { return this.reset(); } + for ( const hn of this.hostnameToDetails.keys() ) { + if ( hn.endsWith(hostname) === false ) { continue; } + const pos = hn.length - hostname.length; + if ( pos !== 0 && hn.charCodeAt(pos-1) !== 0x2E /* . */ ) { continue; } + this.unregister(hn); + } + }, + reset() { + if ( this.hostnameToDetails.size === 0 ) { return; } + for ( const details of this.hostnameToDetails.values() ) { + this.unregisterHandle(details.handle); + } + this.hostnameToDetails.clear(); + }, + unregisterHandle(handle) { + if ( handle instanceof Promise ) { + handle.then(handle => { + if ( handle ) { handle.unregister(); } + }); + } else { + handle.unregister(); + } + }, +}; + +/******************************************************************************/ + +const isolatedWorldInjector = (( ) => { + const parts = [ + '(', + function(details) { + if ( self.uBO_isolatedScriptlets === 'done' ) { return; } + const doc = document; + if ( doc.location === null ) { return; } + const hostname = doc.location.hostname; + if ( hostname !== '' && details.hostname !== hostname ) { return; } + const isolatedScriptlets = function(){}; + isolatedScriptlets(); + self.uBO_isolatedScriptlets = 'done'; + return 0; + }.toString(), + ')(', + 'json-slot', + ');', + ]; + const jsonSlot = parts.indexOf('json-slot'); + return { + assemble(hostname, details) { + parts[jsonSlot] = JSON.stringify({ hostname }); + const code = parts.join(''); + // Manually substitute noop function with scriptlet wrapper + // function, so as to not suffer instances of special + // replacement characters `$`,`\` when using String.replace() + // with scriptlet code. + const match = /function\(\)\{\}/.exec(code); + return code.slice(0, match.index) + + details.isolatedWorld + + code.slice(match.index + match[0].length); + }, + }; +})(); + +const onScriptletMessageInjector = (( ) => { + const parts = [ + '(', + function(name) { + if ( self.uBO_bcSecret ) { return; } + try { + const bcSecret = new self.BroadcastChannel(name); + bcSecret.onmessage = ev => { + const msg = ev.data; + switch ( typeof msg ) { + case 'string': + if ( msg !== 'areyouready?' ) { break; } + bcSecret.postMessage('iamready!'); + break; + case 'object': + if ( self.vAPI && self.vAPI.messaging ) { + self.vAPI.messaging.send('contentscript', msg); + } else { + console.log(`[uBO][${msg.type}]${msg.text}`); + } + break; + } + }; + bcSecret.postMessage('iamready!'); + self.uBO_bcSecret = bcSecret; + } catch { + } + }.toString(), + ')(', + 'bcSecret-slot', + ');', + ]; + const bcSecretSlot = parts.indexOf('bcSecret-slot'); + return { + assemble(details) { + parts[bcSecretSlot] = JSON.stringify(details.bcSecret); + return parts.join('\n'); + }, + }; +})(); + +/******************************************************************************/ + +export class ScriptletFilteringEngineEx extends ScriptletFilteringEngine { + constructor() { + super(); + this.warOrigin = vAPI.getURL('/web_accessible_resources'); + this.warSecret = undefined; + this.scriptletCache = new MRUCache(32); + this.isDevBuild = undefined; + this.logLevel = 1; + this.bc = onBroadcast(msg => { + switch ( msg.what ) { + case 'filteringBehaviorChanged': { + const direction = msg.direction || 0; + if ( direction > 0 ) { return; } + if ( direction >= 0 && msg.hostname ) { + return contentScriptRegisterer.flush(msg.hostname); + } + contentScriptRegisterer.reset(); + break; + } + case 'hiddenSettingsChanged': + this.isDevBuild = undefined; + /* fall through */ + case 'loggerEnabled': + case 'loggerDisabled': + this.clearCache(); + break; + case 'loggerLevelChanged': + this.logLevel = msg.level; + vAPI.tabs.query({ + discarded: false, + url: [ 'http://*/*', 'https://*/*' ], + }).then(tabs => { + for ( const tab of tabs ) { + const { status } = tab; + if ( status !== 'loading' && status !== 'complete' ) { continue; } + vAPI.tabs.executeScript(tab.id, { + allFrames: true, + file: `/js/scriptlets/scriptlet-loglevel-${this.logLevel}.js`, + matchAboutBlank: true, + }); + } + }); + this.clearCache(); + break; + } + }); + } + + reset() { + super.reset(); + this.warSecret = vAPI.warSecret.long(this.warSecret); + this.clearCache(); + } + + freeze() { + super.freeze(); + this.warSecret = vAPI.warSecret.long(this.warSecret); + this.clearCache(); + } + + clearCache() { + this.scriptletCache.reset(); + contentScriptRegisterer.reset(); + } + + retrieve(request) { + const { hostname } = request; + + // https://github.com/gorhill/uBlock/issues/2835 + // Do not inject scriptlets if the site is under an `allow` rule. + if ( µb.userSettings.advancedUserEnabled ) { + if ( sessionFirewall.evaluateCellZY(hostname, hostname, '*') === 2 ) { + return; + } + } + + if ( this.scriptletCache.resetTime < reng.modifyTime ) { + this.clearCache(); + } + + let scriptletDetails = this.scriptletCache.lookup(hostname); + if ( scriptletDetails !== undefined ) { + return scriptletDetails || undefined; + } + + if ( this.isDevBuild === undefined ) { + this.isDevBuild = vAPI.webextFlavor.soup.has('devbuild') || + µb.hiddenSettings.filterAuthorMode; + } + + if ( this.warSecret === undefined ) { + this.warSecret = vAPI.warSecret.long(); + } + + const bcSecret = vAPI.generateSecret(3); + + const options = { + scriptletGlobals: { + warOrigin: this.warOrigin, + warSecret: this.warSecret, + }, + debug: this.isDevBuild, + debugScriptlets: µb.hiddenSettings.debugScriptlets, + }; + if ( logger.enabled ) { + options.scriptletGlobals.bcSecret = bcSecret; + options.scriptletGlobals.logLevel = this.logLevel; + } + + scriptletDetails = super.retrieve(request, options); + + if ( scriptletDetails === undefined ) { + if ( request.nocache !== true ) { + this.scriptletCache.add(hostname, null); + } + return; + } + + const contentScript = []; + if ( scriptletDetails.mainWorld ) { + contentScript.push(vAPI.scriptletsInjector(hostname, scriptletDetails)); + } + if ( scriptletDetails.isolatedWorld ) { + contentScript.push(isolatedWorldInjector.assemble(hostname, scriptletDetails)); + } + + const cachedScriptletDetails = { + bcSecret, + code: contentScript.join('\n\n'), + filters: scriptletDetails.filters, + }; + + if ( hostname !== '' && request.nocache !== true ) { + this.scriptletCache.add(hostname, cachedScriptletDetails); + } + + return cachedScriptletDetails; + } + + injectNow(details) { + if ( typeof details.frameId !== 'number' ) { return; } + + const hostname = hostnameFromURI(details.url); + const domain = domainFromHostname(hostname); + + const scriptletDetails = this.retrieve({ + tabId: details.tabId, + frameId: details.frameId, + url: details.url, + hostname, + domain, + ancestors: details.ancestors, + }); + if ( scriptletDetails === undefined ) { + contentScriptRegisterer.unregister(hostname); + return; + } + if ( Boolean(scriptletDetails.code) === false ) { + return scriptletDetails; + } + + const contentScript = [ scriptletDetails.code ]; + if ( logger.enabled ) { + contentScript.unshift( + onScriptletMessageInjector.assemble(scriptletDetails) + ); + } + if ( µb.hiddenSettings.debugScriptletInjector ) { + contentScript.unshift('debugger'); + } + const code = contentScript.join('\n\n'); + + const isAlreadyInjected = contentScriptRegisterer.register(hostname, code); + if ( isAlreadyInjected !== true ) { + vAPI.tabs.executeScript(details.tabId, { + code, + frameId: details.frameId, + matchAboutBlank: true, + runAt: 'document_start', + }); + } + return scriptletDetails; + } + + toLogger(request, details) { + if ( details === undefined ) { return; } + if ( logger.enabled !== true ) { return; } + if ( Array.isArray(details.filters) === false ) { return; } + µb.filteringContext + .duplicate() + .fromTabId(request.tabId) + .setRealm('extended') + .setType('scriptlet') + .setURL(request.url) + .setDocOriginFromURL(request.url) + .setFilter(details.filters.map(a => ({ source: 'extended', raw: a }))) + .toLogger(); + } +} + +/******************************************************************************/ + +const scriptletFilteringEngine = new ScriptletFilteringEngineEx(); + +export default scriptletFilteringEngine; + +/******************************************************************************/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-logger.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-logger.js new file mode 100644 index 00000000..912c18eb --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-logger.js @@ -0,0 +1,361 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +(( ) => { +// >>>>>>>> start of private namespace + +/******************************************************************************/ + +if ( typeof vAPI !== 'object' ) { return; } +if ( vAPI.domWatcher instanceof Object === false ) { return; } + +const reHasCSSCombinators = /[ >+~]/; +const simpleDeclarativeSet = new Set(); +let simpleDeclarativeStr; +const complexDeclarativeSet = new Set(); +let complexDeclarativeStr; +const proceduralDict = new Map(); +const exceptionDict = new Map(); +let exceptionStr; +const proceduralExceptionDict = new Map(); +const nodesToProcess = new Set(); +const loggedSelectors = new Set(); + +/******************************************************************************/ + +const rePseudoElements = /:(?::?after|:?before|:[a-z-]+)$/; + +function hasSelector(selector, context = document) { + try { + return context.querySelector(selector) !== null; + } + catch { + } + return false; +} + +function safeMatchSelector(selector, context) { + const safeSelector = rePseudoElements.test(selector) + ? selector.replace(rePseudoElements, '') + : selector; + try { + return context.matches(safeSelector); + } + catch { + } + return false; +} + +function safeQuerySelector(selector, context = document) { + const safeSelector = rePseudoElements.test(selector) + ? selector.replace(rePseudoElements, '') + : selector; + try { + return context.querySelector(safeSelector); + } + catch { + } + return null; +} + +function safeGroupSelectors(selectors) { + const arr = Array.isArray(selectors) + ? selectors + : Array.from(selectors); + return arr.map(s => { + return rePseudoElements.test(s) + ? s.replace(rePseudoElements, '') + : s; + }).join(',\n'); +} + +/******************************************************************************/ + +function processDeclarativeSimple(node, out) { + if ( simpleDeclarativeSet.size === 0 ) { return; } + if ( simpleDeclarativeStr === undefined ) { + simpleDeclarativeStr = safeGroupSelectors(simpleDeclarativeSet); + } + if ( + (node === document || node.matches(simpleDeclarativeStr) === false) && + (hasSelector(simpleDeclarativeStr, node) === false) + ) { + return; + } + for ( const selector of simpleDeclarativeSet ) { + if ( + (node === document || safeMatchSelector(selector, node) === false) && + (safeQuerySelector(selector, node) === null) + ) { + continue; + } + out.push(`##${selector}`); + simpleDeclarativeSet.delete(selector); + simpleDeclarativeStr = undefined; + loggedSelectors.add(selector); + } +} + +/******************************************************************************/ + +function processDeclarativeComplex(out) { + if ( complexDeclarativeSet.size === 0 ) { return; } + if ( complexDeclarativeStr === undefined ) { + complexDeclarativeStr = safeGroupSelectors(complexDeclarativeSet); + } + if ( hasSelector(complexDeclarativeStr) === false ) { return; } + for ( const selector of complexDeclarativeSet ) { + if ( safeQuerySelector(selector) === null ) { continue; } + out.push(`##${selector}`); + complexDeclarativeSet.delete(selector); + complexDeclarativeStr = undefined; + loggedSelectors.add(selector); + } +} + +/******************************************************************************/ + +function processProcedural(out) { + if ( proceduralDict.size === 0 ) { return; } + for ( const [ raw, pselector ] of proceduralDict ) { + if ( pselector.converted ) { + if ( safeQuerySelector(pselector.selector) === null ) { continue; } + } else if ( pselector.hit === false && pselector.exec().length === 0 ) { + continue; + } + out.push(`##${raw}`); + proceduralDict.delete(raw); + } +} + +/******************************************************************************/ + +function processExceptions(out) { + if ( exceptionDict.size === 0 ) { return; } + if ( exceptionStr === undefined ) { + exceptionStr = safeGroupSelectors(exceptionDict.keys()); + } + if ( hasSelector(exceptionStr) === false ) { return; } + for ( const [ selector, raw ] of exceptionDict ) { + if ( safeQuerySelector(selector) === null ) { continue; } + out.push(`#@#${raw}`); + exceptionDict.delete(selector); + exceptionStr = undefined; + loggedSelectors.add(raw); + } +} + +/******************************************************************************/ + +function processProceduralExceptions(out) { + if ( proceduralExceptionDict.size === 0 ) { return; } + for ( const exception of proceduralExceptionDict.values() ) { + if ( exception.test() === false ) { continue; } + out.push(`#@#${exception.raw}`); + proceduralExceptionDict.delete(exception.raw); + } +} + +/******************************************************************************/ + +const processTimer = new vAPI.SafeAnimationFrame(( ) => { + //console.time('dom logger/scanning for matches'); + processTimer.clear(); + if ( nodesToProcess.size === 0 ) { return; } + + if ( nodesToProcess.size !== 1 && nodesToProcess.has(document) ) { + nodesToProcess.clear(); + nodesToProcess.add(document); + } + + const toLog = []; + if ( simpleDeclarativeSet.size !== 0 ) { + for ( const node of nodesToProcess ) { + processDeclarativeSimple(node, toLog); + } + } + + processDeclarativeComplex(toLog); + processProcedural(toLog); + processExceptions(toLog); + processProceduralExceptions(toLog); + + nodesToProcess.clear(); + + if ( toLog.length === 0 ) { return; } + + const location = vAPI.effectiveSelf.location; + + vAPI.messaging.send('scriptlets', { + what: 'logCosmeticFilteringData', + frameURL: location.href, + frameHostname: location.hostname, + matchedSelectors: toLog, + }); + //console.timeEnd('dom logger/scanning for matches'); +}); + +/******************************************************************************/ + +const attributeObserver = new MutationObserver(mutations => { + if ( nodesToProcess.has(document) ) { return; } + for ( const mutation of mutations ) { + const node = mutation.target; + if ( node.nodeType !== 1 ) { continue; } + nodesToProcess.add(node); + } + if ( nodesToProcess.size !== 0 ) { + processTimer.start(100); + } +}); + +/******************************************************************************/ + +const handlers = { + onFiltersetChanged: function(changes) { + //console.time('dom logger/filterset changed'); + for ( const block of (changes.declarative || []) ) { + for ( const selector of block.split(',\n') ) { + if ( loggedSelectors.has(selector) ) { continue; } + if ( reHasCSSCombinators.test(selector) ) { + complexDeclarativeSet.add(selector); + complexDeclarativeStr = undefined; + } else { + simpleDeclarativeSet.add(selector); + simpleDeclarativeStr = undefined; + } + } + } + if ( + Array.isArray(changes.procedural) && + changes.procedural.length !== 0 + ) { + for ( const selector of changes.procedural ) { + proceduralDict.set(selector.raw, selector); + } + } + if ( Array.isArray(changes.exceptions) ) { + for ( const selector of changes.exceptions ) { + if ( loggedSelectors.has(selector) ) { continue; } + if ( selector.charCodeAt(0) !== 0x7B /* '{' */ ) { + exceptionDict.set(selector, selector); + continue; + } + const details = JSON.parse(selector); + if ( + details.action !== undefined && + details.tasks === undefined && + details.action[0] === 'style' + ) { + exceptionDict.set(details.selector, details.raw); + continue; + } + proceduralExceptionDict.set( + details.raw, + vAPI.domFilterer.createProceduralFilter(details) + ); + } + exceptionStr = undefined; + } + nodesToProcess.clear(); + nodesToProcess.add(document); + processTimer.start(1); + //console.timeEnd('dom logger/filterset changed'); + }, + + onDOMCreated: function() { + if ( vAPI.domFilterer instanceof Object === false ) { + return shutdown(); + } + handlers.onFiltersetChanged(vAPI.domFilterer.getAllSelectors()); + vAPI.domFilterer.addListener(handlers); + attributeObserver.observe(document.body, { + attributes: true, + subtree: true + }); + }, + + onDOMChanged: function(addedNodes) { + if ( nodesToProcess.has(document) ) { return; } + for ( const node of addedNodes ) { + if ( node.parentNode === null ) { continue; } + nodesToProcess.add(node); + } + if ( nodesToProcess.size !== 0 ) { + processTimer.start(100); + } + } +}; + +vAPI.domWatcher.addListener(handlers); + +/******************************************************************************/ + +const broadcastHandler = msg => { + if ( msg.what === 'loggerDisabled' ) { + shutdown(); + } +}; + +browser.runtime.onMessage.addListener(broadcastHandler); + +/******************************************************************************/ + +function shutdown() { + browser.runtime.onMessage.removeListener(broadcastHandler); + processTimer.clear(); + attributeObserver.disconnect(); + if ( typeof vAPI !== 'object' ) { return; } + if ( vAPI.domFilterer instanceof Object ) { + vAPI.domFilterer.removeListener(handlers); + } + if ( vAPI.domWatcher instanceof Object ) { + vAPI.domWatcher.removeListener(handlers); + } +} + +/******************************************************************************/ + +// <<<<<<<< end of private namespace +})(); + + + + + + + + +/******************************************************************************* + + DO NOT: + - Remove the following code + - Add code beyond the following code + Reason: + - https://github.com/gorhill/uBlock/pull/3721 + - uBO never uses the return value from injected content scripts + +**/ + +void 0; + diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-off.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-off.js new file mode 100644 index 00000000..e38de4ef --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-off.js @@ -0,0 +1,46 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-2018 Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +if ( typeof vAPI === 'object' && vAPI.domFilterer ) { + vAPI.domFilterer.toggle(false); +} + + + + + + + + +/******************************************************************************* + + DO NOT: + - Remove the following code + - Add code beyond the following code + Reason: + - https://github.com/gorhill/uBlock/pull/3721 + - uBO never uses the return value from injected content scripts + +**/ + +void 0; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-on.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-on.js new file mode 100644 index 00000000..cb10270c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-on.js @@ -0,0 +1,46 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-2018 Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +if ( typeof vAPI === 'object' && vAPI.domFilterer ) { + vAPI.domFilterer.toggle(true); +} + + + + + + + + +/******************************************************************************* + + DO NOT: + - Remove the following code + - Add code beyond the following code + Reason: + - https://github.com/gorhill/uBlock/pull/3721 + - uBO never uses the return value from injected content scripts + +**/ + +void 0; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-report.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-report.js new file mode 100644 index 00000000..93023df6 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/cosmetic-report.js @@ -0,0 +1,140 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +(( ) => { +// >>>>>>>> start of private namespace + +/******************************************************************************/ + +if ( typeof vAPI !== 'object' ) { return; } +if ( typeof vAPI.domFilterer !== 'object' ) { return; } +if ( vAPI.domFilterer === null ) { return; } + +/******************************************************************************/ + +const rePseudoElements = /:(?::?after|:?before|:[a-z-]+)$/; + +const hasSelector = selector => { + try { + return document.querySelector(selector) !== null; + } + catch { + } + return false; +}; + +const safeQuerySelector = selector => { + const safeSelector = rePseudoElements.test(selector) + ? selector.replace(rePseudoElements, '') + : selector; + try { + return document.querySelector(safeSelector); + } + catch { + } + return null; +}; + +const safeGroupSelectors = selectors => { + const arr = Array.isArray(selectors) + ? selectors + : Array.from(selectors); + return arr.map(s => { + return rePseudoElements.test(s) + ? s.replace(rePseudoElements, '') + : s; + }).join(',\n'); +}; + +const allSelectors = vAPI.domFilterer.getAllSelectors(); +const matchedSelectors = []; + +if ( Array.isArray(allSelectors.declarative) ) { + const declarativeSet = new Set(); + for ( const block of allSelectors.declarative ) { + for ( const selector of block.split(',\n') ) { + declarativeSet.add(selector); + } + } + if ( hasSelector(safeGroupSelectors(declarativeSet)) ) { + for ( const selector of declarativeSet ) { + if ( safeQuerySelector(selector) === null ) { continue; } + matchedSelectors.push(`##${selector}`); + } + } +} + +if ( + Array.isArray(allSelectors.procedural) && + allSelectors.procedural.length !== 0 +) { + for ( const pselector of allSelectors.procedural ) { + if ( pselector.hit === false && pselector.exec().length === 0 ) { continue; } + matchedSelectors.push(`##${pselector.raw}`); + } +} + +if ( Array.isArray(allSelectors.exceptions) ) { + const exceptionDict = new Map(); + for ( const selector of allSelectors.exceptions ) { + if ( selector.charCodeAt(0) !== 0x7B /* '{' */ ) { + exceptionDict.set(selector, selector); + continue; + } + const details = JSON.parse(selector); + if ( + details.action !== undefined && + details.tasks === undefined && + details.action[0] === 'style' + ) { + exceptionDict.set(details.selector, details.raw); + continue; + } + const pselector = vAPI.domFilterer.createProceduralFilter(details); + if ( pselector.test() === false ) { continue; } + matchedSelectors.push(`#@#${pselector.raw}`); + } + if ( + exceptionDict.size !== 0 && + hasSelector(safeGroupSelectors(exceptionDict.keys())) + ) { + for ( const [ selector, raw ] of exceptionDict ) { + if ( safeQuerySelector(selector) === null ) { continue; } + matchedSelectors.push(`#@#${raw}`); + } + } +} + +if ( self.uBO_scriptletsInjected !== undefined ) { + matchedSelectors.push(...self.uBO_scriptletsInjected); +} + +if ( matchedSelectors.length === 0 ) { return; } + +return matchedSelectors; + +/******************************************************************************/ + +// <<<<<<<< end of private namespace +})(); + diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/dom-inspector.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/dom-inspector.js new file mode 100644 index 00000000..1536d8ac --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/dom-inspector.js @@ -0,0 +1,920 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ +/******************************************************************************/ + +(async ( ) => { + +/******************************************************************************/ + +if ( typeof vAPI !== 'object' ) { return; } +if ( vAPI === null ) { return; } +if ( vAPI.domFilterer instanceof Object === false ) { return; } + +if ( vAPI.inspectorFrame ) { return; } +vAPI.inspectorFrame = true; + +const inspectorUniqueId = vAPI.randomToken(); + +const nodeToIdMap = new WeakMap(); // No need to iterate + +let blueNodes = []; +const roRedNodes = new Map(); // node => current cosmetic filter +const rwRedNodes = new Set(); // node => new cosmetic filter (toggle node) +const rwGreenNodes = new Set(); // node => new exception cosmetic filter (toggle filter) +//const roGreenNodes = new Map(); // node => current exception cosmetic filter (can't toggle) + +const reHasCSSCombinators = /[ >+~]/; + +/******************************************************************************/ + +const domLayout = (( ) => { + const skipTagNames = new Set([ + 'br', 'head', 'link', 'meta', 'script', 'style', 'title' + ]); + const resourceAttrNames = new Map([ + [ 'a', 'href' ], + [ 'iframe', 'src' ], + [ 'img', 'src' ], + [ 'object', 'data' ] + ]); + + let idGenerator = 1; + + // This will be used to uniquely identify nodes across process. + + const newNodeId = node => { + const nid = `n${(idGenerator++).toString(36)}`; + nodeToIdMap.set(node, nid); + return nid; + }; + + const selectorFromNode = node => { + const tag = node.localName; + let selector = CSS.escape(tag); + // Id + if ( typeof node.id === 'string' ) { + let str = node.id.trim(); + if ( str !== '' ) { + selector += `#${CSS.escape(str)}`; + } + } + // Class + const cl = node.classList; + if ( cl ) { + for ( let i = 0; i < cl.length; i++ ) { + selector += `.${CSS.escape(cl[i])}`; + } + } + // Tag-specific attributes + const attr = resourceAttrNames.get(tag); + if ( attr !== undefined ) { + let str = node.getAttribute(attr) || ''; + str = str.trim(); + const pos = str.startsWith('data:') ? 5 : str.search(/[#?]/); + let sw = ''; + if ( pos !== -1 ) { + str = str.slice(0, pos); + sw = '^'; + } + if ( str !== '' ) { + selector += `[${attr}${sw}="${CSS.escape(str, true)}"]`; + } + } + return selector; + }; + + function DomRoot() { + this.nid = newNodeId(document.body); + this.lvl = 0; + this.sel = 'body'; + this.cnt = 0; + this.filter = roRedNodes.get(document.body); + } + + function DomNode(node, level) { + this.nid = newNodeId(node); + this.lvl = level; + this.sel = selectorFromNode(node); + this.cnt = 0; + this.filter = roRedNodes.get(node); + } + + const domNodeFactory = (level, node) => { + const localName = node.localName; + if ( skipTagNames.has(localName) ) { return null; } + // skip uBlock's own nodes + if ( node === inspectorFrame ) { return null; } + if ( level === 0 && localName === 'body' ) { + return new DomRoot(); + } + return new DomNode(node, level); + }; + + // Collect layout data + + const getLayoutData = ( ) => { + const layout = []; + const stack = []; + let lvl = 0; + let node = document.documentElement; + if ( node === null ) { return layout; } + + for (;;) { + const domNode = domNodeFactory(lvl, node); + if ( domNode !== null ) { + layout.push(domNode); + } + // children + if ( domNode !== null && node.firstElementChild !== null ) { + stack.push(node); + lvl += 1; + node = node.firstElementChild; + continue; + } + // sibling + if ( node instanceof Element ) { + if ( node.nextElementSibling === null ) { + do { + node = stack.pop(); + if ( !node ) { break; } + lvl -= 1; + } while ( node.nextElementSibling === null ); + if ( !node ) { break; } + } + node = node.nextElementSibling; + } + } + + return layout; + }; + + // Descendant count for each node. + + const patchLayoutData = layout => { + const stack = []; + let ptr; + let lvl = 0; + let i = layout.length; + + while ( i-- ) { + const domNode = layout[i]; + if ( domNode.lvl === lvl ) { + stack[ptr] += 1; + continue; + } + if ( domNode.lvl > lvl ) { + while ( lvl < domNode.lvl ) { + stack.push(0); + lvl += 1; + } + ptr = lvl - 1; + stack[ptr] += 1; + continue; + } + // domNode.lvl < lvl + const cnt = stack.pop(); + domNode.cnt = cnt; + lvl -= 1; + ptr = lvl - 1; + stack[ptr] += cnt + 1; + } + return layout; + }; + + // Track and report mutations of the DOM + + let mutationObserver = null; + let mutationTimer; + let addedNodelists = []; + let removedNodelist = []; + + const previousElementSiblingId = node => { + let sibling = node; + for (;;) { + sibling = sibling.previousElementSibling; + if ( sibling === null ) { return null; } + if ( skipTagNames.has(sibling.localName) ) { continue; } + return nodeToIdMap.get(sibling); + } + }; + + const journalFromBranch = (root, newNodes, newNodeToIdMap) => { + let node = root.firstElementChild; + while ( node !== null ) { + const domNode = domNodeFactory(undefined, node); + if ( domNode !== null ) { + newNodeToIdMap.set(domNode.nid, domNode); + newNodes.push(node); + } + // down + if ( node.firstElementChild !== null ) { + node = node.firstElementChild; + continue; + } + // right + if ( node.nextElementSibling !== null ) { + node = node.nextElementSibling; + continue; + } + // up then right + for (;;) { + if ( node.parentElement === root ) { return; } + node = node.parentElement; + if ( node.nextElementSibling !== null ) { + node = node.nextElementSibling; + break; + } + } + } + }; + + const journalFromMutations = ( ) => { + mutationTimer = undefined; + + // This is used to temporarily hold all added nodes, before resolving + // their node id and relative position. + const newNodes = []; + const journalEntries = []; + const newNodeToIdMap = new Map(); + + for ( const nodelist of addedNodelists ) { + for ( const node of nodelist ) { + if ( node.nodeType !== 1 ) { continue; } + if ( node.parentElement === null ) { continue; } + cosmeticFilterMapper.incremental(node); + const domNode = domNodeFactory(undefined, node); + if ( domNode !== null ) { + newNodeToIdMap.set(domNode.nid, domNode); + newNodes.push(node); + } + journalFromBranch(node, newNodes, newNodeToIdMap); + } + } + addedNodelists = []; + for ( const nodelist of removedNodelist ) { + for ( const node of nodelist ) { + if ( node.nodeType !== 1 ) { continue; } + const nid = nodeToIdMap.get(node); + if ( nid === undefined ) { continue; } + journalEntries.push({ what: -1, nid }); + } + } + removedNodelist = []; + for ( const node of newNodes ) { + journalEntries.push({ + what: 1, + nid: nodeToIdMap.get(node), + u: nodeToIdMap.get(node.parentElement), + l: previousElementSiblingId(node) + }); + } + + if ( journalEntries.length === 0 ) { return; } + + contentInspectorChannel.toLogger({ + what: 'domLayoutIncremental', + url: window.location.href, + hostname: window.location.hostname, + journal: journalEntries, + nodes: Array.from(newNodeToIdMap) + }); + }; + + const onMutationObserved = mutationRecords => { + for ( const record of mutationRecords ) { + if ( record.addedNodes.length !== 0 ) { + addedNodelists.push(record.addedNodes); + } + if ( record.removedNodes.length !== 0 ) { + removedNodelist.push(record.removedNodes); + } + } + if ( mutationTimer === undefined ) { + mutationTimer = vAPI.setTimeout(journalFromMutations, 1000); + } + }; + + // API + + const getLayout = ( ) => { + cosmeticFilterMapper.reset(); + mutationObserver = new MutationObserver(onMutationObserved); + mutationObserver.observe(document.body, { + childList: true, + subtree: true + }); + + return { + what: 'domLayoutFull', + url: window.location.href, + hostname: window.location.hostname, + layout: patchLayoutData(getLayoutData()) + }; + }; + + const reset = ( ) => { + shutdown(); + }; + + const shutdown = ( ) => { + if ( mutationTimer !== undefined ) { + clearTimeout(mutationTimer); + mutationTimer = undefined; + } + if ( mutationObserver !== null ) { + mutationObserver.disconnect(); + mutationObserver = null; + } + addedNodelists = []; + removedNodelist = []; + }; + + return { + get: getLayout, + reset, + shutdown, + }; +})(); + +/******************************************************************************/ +/******************************************************************************/ + +const cosmeticFilterMapper = (( ) => { + const nodesFromStyleTag = rootNode => { + const filterMap = roRedNodes; + const details = vAPI.domFilterer.getAllSelectors(); + + // Declarative selectors. + for ( const block of (details.declarative || []) ) { + for ( const selector of block.split(',\n') ) { + let nodes; + if ( reHasCSSCombinators.test(selector) ) { + nodes = document.querySelectorAll(selector); + } else { + if ( + filterMap.has(rootNode) === false && + rootNode.matches(selector) + ) { + filterMap.set(rootNode, selector); + } + nodes = rootNode.querySelectorAll(selector); + } + for ( const node of nodes ) { + if ( filterMap.has(node) ) { continue; } + filterMap.set(node, selector); + } + } + } + + // Procedural selectors. + for ( const entry of (details.procedural || []) ) { + const nodes = entry.exec(); + for ( const node of nodes ) { + // Upgrade declarative selector to procedural one + filterMap.set(node, entry.raw); + } + } + }; + + const incremental = rootNode => { + nodesFromStyleTag(rootNode); + }; + + const reset = ( ) => { + roRedNodes.clear(); + if ( document.documentElement !== null ) { + incremental(document.documentElement); + } + }; + + const shutdown = ( ) => { + vAPI.domFilterer.toggle(true); + }; + + return { + incremental, + reset, + shutdown, + }; +})(); + +/******************************************************************************/ + +const elementsFromSelector = function(selector, context) { + if ( !context ) { + context = document; + } + if ( selector.indexOf(':') !== -1 ) { + const out = elementsFromSpecialSelector(selector); + if ( out !== undefined ) { return out; } + } + // plain CSS selector + try { + return context.querySelectorAll(selector); + } catch { + } + return []; +}; + +const elementsFromSpecialSelector = function(selector) { + const out = []; + let matches = /^(.+?):has\((.+?)\)$/.exec(selector); + if ( matches !== null ) { + let nodes; + try { + nodes = document.querySelectorAll(matches[1]); + } catch { + nodes = []; + } + for ( const node of nodes ) { + if ( node.querySelector(matches[2]) === null ) { continue; } + out.push(node); + } + return out; + } + + matches = /^:xpath\((.+?)\)$/.exec(selector); + if ( matches === null ) { return; } + const xpr = document.evaluate( + matches[1], + document, + null, + XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, + null + ); + let i = xpr.snapshotLength; + while ( i-- ) { + out.push(xpr.snapshotItem(i)); + } + return out; +}; + +/******************************************************************************/ + +const highlightElements = ( ) => { + const paths = []; + + const path = []; + for ( const elem of rwRedNodes.keys() ) { + if ( elem === inspectorFrame ) { continue; } + if ( rwGreenNodes.has(elem) ) { continue; } + if ( typeof elem.getBoundingClientRect !== 'function' ) { continue; } + const rect = elem.getBoundingClientRect(); + const xl = rect.left; + const w = rect.width; + const yt = rect.top; + const h = rect.height; + const ws = w.toFixed(1); + const poly = 'M' + xl.toFixed(1) + ' ' + yt.toFixed(1) + + 'h' + ws + + 'v' + h.toFixed(1) + + 'h-' + ws + + 'z'; + path.push(poly); + } + paths.push(path.join('') || 'M0 0'); + + path.length = 0; + for ( const elem of rwGreenNodes ) { + if ( typeof elem.getBoundingClientRect !== 'function' ) { continue; } + const rect = elem.getBoundingClientRect(); + const xl = rect.left; + const w = rect.width; + const yt = rect.top; + const h = rect.height; + const ws = w.toFixed(1); + const poly = 'M' + xl.toFixed(1) + ' ' + yt.toFixed(1) + + 'h' + ws + + 'v' + h.toFixed(1) + + 'h-' + ws + + 'z'; + path.push(poly); + } + paths.push(path.join('') || 'M0 0'); + + path.length = 0; + for ( const elem of roRedNodes.keys() ) { + if ( elem === inspectorFrame ) { continue; } + if ( rwGreenNodes.has(elem) ) { continue; } + if ( typeof elem.getBoundingClientRect !== 'function' ) { continue; } + const rect = elem.getBoundingClientRect(); + const xl = rect.left; + const w = rect.width; + const yt = rect.top; + const h = rect.height; + const ws = w.toFixed(1); + const poly = 'M' + xl.toFixed(1) + ' ' + yt.toFixed(1) + + 'h' + ws + + 'v' + h.toFixed(1) + + 'h-' + ws + + 'z'; + path.push(poly); + } + paths.push(path.join('') || 'M0 0'); + + path.length = 0; + for ( const elem of blueNodes ) { + if ( elem === inspectorFrame ) { continue; } + if ( typeof elem.getBoundingClientRect !== 'function' ) { continue; } + const rect = elem.getBoundingClientRect(); + const xl = rect.left; + const w = rect.width; + const yt = rect.top; + const h = rect.height; + const ws = w.toFixed(1); + const poly = 'M' + xl.toFixed(1) + ' ' + yt.toFixed(1) + + 'h' + ws + + 'v' + h.toFixed(1) + + 'h-' + ws + + 'z'; + path.push(poly); + } + paths.push(path.join('') || 'M0 0'); + + contentInspectorChannel.toFrame({ + what: 'svgPaths', + paths, + }); +}; + +/******************************************************************************/ + +const onScrolled = (( ) => { + let timer; + return ( ) => { + if ( timer ) { return; } + timer = window.requestAnimationFrame(( ) => { + timer = undefined; + highlightElements(); + }); + }; +})(); + +const onMouseOver = ( ) => { + if ( blueNodes.length === 0 ) { return; } + blueNodes = []; + highlightElements(); +}; + +/******************************************************************************/ + +const selectNodes = (selector, nid) => { + const nodes = elementsFromSelector(selector); + if ( nid === '' ) { return nodes; } + for ( const node of nodes ) { + if ( nodeToIdMap.get(node) === nid ) { + return [ node ]; + } + } + return []; +}; + +/******************************************************************************/ + +const nodesFromFilter = selector => { + const out = []; + for ( const entry of roRedNodes ) { + if ( entry[1] === selector ) { + out.push(entry[0]); + } + } + return out; +}; + +/******************************************************************************/ + +const toggleExceptions = (nodes, targetState) => { + for ( const node of nodes ) { + if ( targetState ) { + rwGreenNodes.add(node); + } else { + rwGreenNodes.delete(node); + } + } +}; + +const toggleFilter = (nodes, targetState) => { + for ( const node of nodes ) { + if ( targetState ) { + rwRedNodes.delete(node); + } else { + rwRedNodes.add(node); + } + } +}; + +const resetToggledNodes = ( ) => { + rwGreenNodes.clear(); + rwRedNodes.clear(); +}; + +/******************************************************************************/ + +const startInspector = ( ) => { + const onReady = ( ) => { + window.addEventListener('scroll', onScrolled, { + capture: true, + passive: true, + }); + window.addEventListener('mouseover', onMouseOver, { + capture: true, + passive: true, + }); + contentInspectorChannel.toLogger(domLayout.get()); + vAPI.domFilterer.toggle(false, highlightElements); + }; + if ( document.readyState === 'loading' ) { + document.addEventListener('DOMContentLoaded', onReady, { once: true }); + } else { + onReady(); + } +}; + +/******************************************************************************/ + +const shutdownInspector = ( ) => { + cosmeticFilterMapper.shutdown(); + domLayout.shutdown(); + window.removeEventListener('scroll', onScrolled, { + capture: true, + passive: true, + }); + window.removeEventListener('mouseover', onMouseOver, { + capture: true, + passive: true, + }); + contentInspectorChannel.shutdown(); + if ( inspectorFrame ) { + inspectorFrame.remove(); + inspectorFrame = null; + } + vAPI.userStylesheet.remove(inspectorCSS); + vAPI.userStylesheet.apply(); + vAPI.inspectorFrame = false; +}; + +/******************************************************************************/ +/******************************************************************************/ + +const onMessage = request => { + switch ( request.what ) { + case 'startInspector': + startInspector(); + break; + + case 'quitInspector': + shutdownInspector(); + break; + + case 'commitFilters': + highlightElements(); + break; + + case 'domLayout': + domLayout.get(); + highlightElements(); + break; + + case 'highlightMode': + break; + + case 'highlightOne': + blueNodes = selectNodes(request.selector, request.nid); + if ( blueNodes.length !== 0 ) { + blueNodes[0].scrollIntoView({ + behavior: 'smooth', + block: 'nearest', + inline: 'nearest', + }); + } + highlightElements(); + break; + + case 'resetToggledNodes': + resetToggledNodes(); + highlightElements(); + break; + + case 'showCommitted': + blueNodes = []; + // TODO: show only the new filters and exceptions. + highlightElements(); + break; + + case 'showInteractive': + blueNodes = []; + highlightElements(); + break; + + case 'toggleFilter': { + const nodes = selectNodes(request.selector, request.nid); + if ( nodes.length !== 0 ) { + nodes[0].scrollIntoView({ + behavior: 'smooth', + block: 'nearest', + inline: 'nearest', + }); + } + toggleExceptions(nodesFromFilter(request.filter), request.target); + highlightElements(); + break; + } + case 'toggleNodes': { + const nodes = selectNodes(request.selector, request.nid); + if ( nodes.length !== 0 ) { + nodes[0].scrollIntoView({ + behavior: 'smooth', + block: 'nearest', + inline: 'nearest', + }); + } + toggleFilter(nodes, request.target); + highlightElements(); + break; + } + default: + break; + } +}; + +/******************************************************************************* + * + * Establish two-way communication with logger/inspector window and + * inspector frame + * + * */ + +const contentInspectorChannel = (( ) => { + let toLoggerPort; + let toFramePort; + + const toLogger = msg => { + if ( toLoggerPort === undefined ) { return; } + try { + toLoggerPort.postMessage(msg); + } catch { + shutdownInspector(); + } + }; + + const onLoggerMessage = msg => { + onMessage(msg); + }; + + const onLoggerDisconnect = ( ) => { + shutdownInspector(); + }; + + const onLoggerConnect = port => { + browser.runtime.onConnect.removeListener(onLoggerConnect); + toLoggerPort = port; + port.onMessage.addListener(onLoggerMessage); + port.onDisconnect.addListener(onLoggerDisconnect); + }; + + const toFrame = msg => { + if ( toFramePort === undefined ) { return; } + toFramePort.postMessage(msg); + }; + + const shutdown = ( ) => { + if ( toFramePort !== undefined ) { + toFrame({ what: 'quitInspector' }); + toFramePort.onmessage = null; + toFramePort.close(); + toFramePort = undefined; + } + if ( toLoggerPort !== undefined ) { + toLoggerPort.onMessage.removeListener(onLoggerMessage); + toLoggerPort.onDisconnect.removeListener(onLoggerDisconnect); + toLoggerPort.disconnect(); + toLoggerPort = undefined; + } + browser.runtime.onConnect.removeListener(onLoggerConnect); + }; + + const start = async ( ) => { + browser.runtime.onConnect.addListener(onLoggerConnect); + const inspectorArgs = await vAPI.messaging.send('domInspectorContent', { + what: 'getInspectorArgs', + }); + if ( typeof inspectorArgs !== 'object' ) { return; } + if ( inspectorArgs === null ) { return; } + return new Promise(resolve => { + const iframe = document.createElement('iframe'); + iframe.setAttribute(inspectorUniqueId, ''); + document.documentElement.append(iframe); + iframe.addEventListener('load', ( ) => { + iframe.setAttribute(`${inspectorUniqueId}-loaded`, ''); + const channel = new MessageChannel(); + toFramePort = channel.port1; + toFramePort.onmessage = ev => { + const msg = ev.data || {}; + if ( msg.what !== 'startInspector' ) { return; } + }; + iframe.contentWindow.postMessage( + { what: 'startInspector' }, + inspectorArgs.inspectorURL, + [ channel.port2 ] + ); + resolve(iframe); + }, { once: true }); + iframe.contentWindow.location = inspectorArgs.inspectorURL; + }); + }; + + return { start, toLogger, toFrame, shutdown }; +})(); + + +// Install DOM inspector widget +const inspectorCSSStyle = [ + 'background: transparent', + 'border: 0', + 'border-radius: 0', + 'box-shadow: none', + 'color-scheme: light dark', + 'display: block', + 'filter: none', + 'height: 100%', + 'left: 0', + 'margin: 0', + 'max-height: none', + 'max-width: none', + 'min-height: unset', + 'min-width: unset', + 'opacity: 1', + 'outline: 0', + 'padding: 0', + 'pointer-events: none', + 'position: fixed', + 'top: 0', + 'transform: none', + 'visibility: hidden', + 'width: 100%', + 'z-index: 2147483647', + '' +].join(' !important;\n'); + +const inspectorCSS = ` +:root > [${inspectorUniqueId}] { + ${inspectorCSSStyle} +} +:root > [${inspectorUniqueId}-loaded] { + visibility: visible !important; +} +`; + +vAPI.userStylesheet.add(inspectorCSS); +vAPI.userStylesheet.apply(); + +let inspectorFrame = await contentInspectorChannel.start(); +if ( inspectorFrame instanceof HTMLIFrameElement === false ) { + return shutdownInspector(); +} + +startInspector(); + +/******************************************************************************/ + +})(); + + + + + + + + +/******************************************************************************* + + DO NOT: + - Remove the following code + - Add code beyond the following code + Reason: + - https://github.com/gorhill/uBlock/pull/3721 + - uBO never uses the return value from injected content scripts + +**/ + +void 0; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/dom-survey-elements.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/dom-survey-elements.js new file mode 100644 index 00000000..85270ce6 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/dom-survey-elements.js @@ -0,0 +1,70 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +// https://github.com/uBlockOrigin/uBlock-issues/issues/756 +// Keep in mind CPU usage with large DOM and/or filterset. + +(( ) => { + if ( typeof vAPI !== 'object' ) { return; } + + const t0 = Date.now(); + + if ( vAPI.domSurveyElements instanceof Object === false ) { + vAPI.domSurveyElements = { + busy: false, + hiddenElementCount: Number.NaN, + surveyTime: t0, + }; + } + const surveyResults = vAPI.domSurveyElements; + + if ( surveyResults.busy ) { return; } + surveyResults.busy = true; + + if ( surveyResults.surveyTime < vAPI.domMutationTime ) { + surveyResults.hiddenElementCount = Number.NaN; + } + surveyResults.surveyTime = t0; + + if ( isNaN(surveyResults.hiddenElementCount) ) { + surveyResults.hiddenElementCount = (( ) => { + if ( vAPI.domFilterer instanceof Object === false ) { return 0; } + const details = vAPI.domFilterer.getAllSelectors(0b11); + if ( + Array.isArray(details.declarative) === false || + details.declarative.length === 0 + ) { + return 0; + } + return document.querySelectorAll( + details.declarative.join(',\n') + ).length; + })(); + } + + surveyResults.busy = false; + + // IMPORTANT: This is returned to the injector, so this MUST be + // the last statement. + return surveyResults.hiddenElementCount; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/dom-survey-scripts.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/dom-survey-scripts.js new file mode 100644 index 00000000..30ef66e4 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/dom-survey-scripts.js @@ -0,0 +1,124 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +// Scriptlets to count the number of script tags in a document. + +(( ) => { + if ( typeof vAPI !== 'object' ) { return; } + + const t0 = Date.now(); + + if ( vAPI.domSurveyScripts instanceof Object === false ) { + vAPI.domSurveyScripts = { + busy: false, + scriptCount: -1, + surveyTime: t0, + }; + } + const surveyResults = vAPI.domSurveyScripts; + + if ( surveyResults.busy ) { return; } + surveyResults.busy = true; + + if ( surveyResults.surveyTime < vAPI.domMutationTime ) { + surveyResults.scriptCount = -1; + } + surveyResults.surveyTime = t0; + + if ( surveyResults.scriptCount === -1 ) { + const reInlineScript = /^(data:|blob:|$)/; + let inlineScriptCount = 0; + let scriptCount = 0; + for ( const script of document.scripts ) { + if ( reInlineScript.test(script.src) ) { + inlineScriptCount = 1; + continue; + } + scriptCount += 1; + if ( scriptCount === 99 ) { break; } + } + scriptCount += inlineScriptCount; + if ( scriptCount !== 0 ) { + surveyResults.scriptCount = scriptCount; + } + } + + // https://github.com/uBlockOrigin/uBlock-issues/issues/756 + // Keep trying to find inline script-like instances but only if we + // have the time-budget to do so. + if ( surveyResults.scriptCount === -1 ) { + if ( document.querySelector('a[href^="javascript:"]') !== null ) { + surveyResults.scriptCount = 1; + } + } + + // https://github.com/uBlockOrigin/uBlock-issues/issues/1756 + // Mind that there might be no body element. + if ( surveyResults.scriptCount === -1 && document.body !== null ) { + surveyResults.scriptCount = 0; + const onHandlers = new Set([ + 'onabort', 'onblur', 'oncancel', 'oncanplay', + 'oncanplaythrough', 'onchange', 'onclick', 'onclose', + 'oncontextmenu', 'oncuechange', 'ondblclick', 'ondrag', + 'ondragend', 'ondragenter', 'ondragexit', 'ondragleave', + 'ondragover', 'ondragstart', 'ondrop', 'ondurationchange', + 'onemptied', 'onended', 'onerror', 'onfocus', + 'oninput', 'oninvalid', 'onkeydown', 'onkeypress', + 'onkeyup', 'onload', 'onloadeddata', 'onloadedmetadata', + 'onloadstart', 'onmousedown', 'onmouseenter', 'onmouseleave', + 'onmousemove', 'onmouseout', 'onmouseover', 'onmouseup', + 'onwheel', 'onpause', 'onplay', 'onplaying', + 'onprogress', 'onratechange', 'onreset', 'onresize', + 'onscroll', 'onseeked', 'onseeking', 'onselect', + 'onshow', 'onstalled', 'onsubmit', 'onsuspend', + 'ontimeupdate', 'ontoggle', 'onvolumechange', 'onwaiting', + 'onafterprint', 'onbeforeprint', 'onbeforeunload', 'onhashchange', + 'onlanguagechange', 'onmessage', 'onoffline', 'ononline', + 'onpagehide', 'onpageshow', 'onrejectionhandled', 'onpopstate', + 'onstorage', 'onunhandledrejection', 'onunload', + 'oncopy', 'oncut', 'onpaste' + ]); + const nodeIter = document.createNodeIterator( + document.body, + NodeFilter.SHOW_ELEMENT + ); + for (;;) { + const node = nodeIter.nextNode(); + if ( node === null ) { break; } + if ( node.hasAttributes() === false ) { continue; } + for ( const attr of node.getAttributeNames() ) { + if ( onHandlers.has(attr) === false ) { continue; } + surveyResults.scriptCount = 1; + break; + } + } + } + + surveyResults.busy = false; + + // IMPORTANT: This is returned to the injector, so this MUST be + // the last statement. + if ( surveyResults.scriptCount !== -1 ) { + return surveyResults.scriptCount; + } +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/epicker.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/epicker.js new file mode 100644 index 00000000..5dd23da7 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/epicker.js @@ -0,0 +1,1357 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(async ( ) => { + +/******************************************************************************/ + +if ( typeof vAPI !== 'object' ) { return; } +if ( vAPI === null ) { return; } + +if ( vAPI.pickerFrame ) { return; } +vAPI.pickerFrame = true; + +const pickerUniqueId = vAPI.randomToken(); + +const reCosmeticAnchor = /^#(\$|\?|\$\?)?#/; + +const netFilterCandidates = []; +const cosmeticFilterCandidates = []; + +let targetElements = []; +let candidateElements = []; +let bestCandidateFilter = null; + +const lastNetFilterSession = window.location.host + window.location.pathname; +let lastNetFilterHostname = ''; +let lastNetFilterUnion = ''; + +const hideBackgroundStyle = 'background-image:none!important;'; + +/******************************************************************************/ + +const safeQuerySelectorAll = function(node, selector) { + if ( node !== null ) { + try { + return node.querySelectorAll(selector); + } catch { + } + } + return []; +}; + +/******************************************************************************/ + +const getElementBoundingClientRect = function(elem) { + let rect = typeof elem.getBoundingClientRect === 'function' + ? elem.getBoundingClientRect() + : { height: 0, left: 0, top: 0, width: 0 }; + + // https://github.com/gorhill/uBlock/issues/1024 + // Try not returning an empty bounding rect. + if ( rect.width !== 0 && rect.height !== 0 ) { + return rect; + } + if ( elem.shadowRoot instanceof DocumentFragment ) { + return getElementBoundingClientRect(elem.shadowRoot); + } + + let left = rect.left, + right = left + rect.width, + top = rect.top, + bottom = top + rect.height; + + for ( const child of elem.children ) { + rect = getElementBoundingClientRect(child); + if ( rect.width === 0 || rect.height === 0 ) { continue; } + if ( rect.left < left ) { left = rect.left; } + if ( rect.right > right ) { right = rect.right; } + if ( rect.top < top ) { top = rect.top; } + if ( rect.bottom > bottom ) { bottom = rect.bottom; } + } + + return { + bottom, + height: bottom - top, + left, + right, + top, + width: right - left + }; +}; + +/******************************************************************************/ + +const highlightElements = function(elems, force) { + // To make mouse move handler more efficient + if ( + (force !== true) && + (elems.length === targetElements.length) && + (elems.length === 0 || elems[0] === targetElements[0]) + ) { + return; + } + targetElements = []; + + const ow = self.innerWidth; + const oh = self.innerHeight; + const islands = []; + + for ( const elem of elems ) { + if ( elem === pickerFrame ) { continue; } + targetElements.push(elem); + const rect = getElementBoundingClientRect(elem); + // Ignore offscreen areas + if ( + rect.left > ow || rect.top > oh || + rect.left + rect.width < 0 || rect.top + rect.height < 0 + ) { + continue; + } + islands.push( + `M${rect.left} ${rect.top}h${rect.width}v${rect.height}h-${rect.width}z` + ); + } + + pickerFramePort.postMessage({ + what: 'svgPaths', + ocean: `M0 0h${ow}v${oh}h-${ow}z`, + islands: islands.join(''), + }); +}; + +/******************************************************************************/ + +const mergeStrings = function(urls) { + if ( urls.length === 0 ) { return ''; } + if ( + urls.length === 1 || + self.diff_match_patch instanceof Function === false + ) { + return urls[0]; + } + const differ = new self.diff_match_patch(); + let merged = urls[0]; + for ( let i = 1; i < urls.length; i++ ) { + // The differ works at line granularity: we insert a linefeed after + // each character to trick the differ to work at character granularity. + const diffs = differ.diff_main( + urls[i].split('').join('\n'), + merged.split('').join('\n') + ); + const result = []; + for ( const diff of diffs ) { + if ( diff[0] !== 0 ) { + result.push('*'); + } else { + result.push(diff[1].replace(/\n+/g, '')); + } + merged = result.join(''); + } + } + // Keep usage of wildcards to a sane level, too many of them can cause + // high overhead filters + merged = merged.replace(/^\*+$/, '') + .replace(/\*{2,}/g, '*') + .replace(/([^*]{1,3}\*)(?:[^*]{1,3}\*)+/g, '$1'); + + // https://github.com/uBlockOrigin/uBlock-issues/issues/1494 + let pos = merged.indexOf('/'); + if ( pos === -1 ) { pos = merged.length; } + return merged.slice(0, pos).includes('*') ? urls[0] : merged; +}; + +/******************************************************************************/ + +// Remove fragment part from a URL. + +const trimFragmentFromURL = function(url) { + const pos = url.indexOf('#'); + return pos !== -1 ? url.slice(0, pos) : url; +}; + +/******************************************************************************/ + +// https://github.com/gorhill/uBlock/issues/1897 +// Ignore `data:` URI, they can't be handled by an HTTP observer. + +const backgroundImageURLFromElement = function(elem) { + const style = window.getComputedStyle(elem); + const bgImg = style.backgroundImage || ''; + const matches = /^url\((["']?)([^"']+)\1\)$/.exec(bgImg); + const url = matches !== null && matches.length === 3 ? matches[2] : ''; + return url.lastIndexOf('data:', 0) === -1 + ? trimFragmentFromURL(url.slice(0, 1024)) + : ''; +}; + +/******************************************************************************/ + +// https://github.com/gorhill/uBlock/issues/1725#issuecomment-226479197 +// Limit returned string to 1024 characters. +// Also, return only URLs which will be seen by an HTTP observer. +// https://github.com/uBlockOrigin/uBlock-issues/issues/2260 +// Maybe get to the actual URL indirectly. +const resourceURLsFromElement = function(elem) { + const urls = []; + const tagName = elem.localName; + const prop = netFilter1stSources[tagName]; + if ( prop === undefined ) { + const url = backgroundImageURLFromElement(elem); + if ( url !== '' ) { urls.push(url); } + return urls; + } + let s = elem[prop]; + if ( s instanceof SVGAnimatedString ) { + s = s.baseVal; + } + if ( typeof s === 'string' && /^https?:\/\//.test(s) ) { + urls.push(trimFragmentFromURL(s.slice(0, 1024))); + } + resourceURLsFromSrcset(elem, urls); + resourceURLsFromPicture(elem, urls); + return urls; +}; + +// https://html.spec.whatwg.org/multipage/images.html#parsing-a-srcset-attribute +// https://github.com/uBlockOrigin/uBlock-issues/issues/1071 +const resourceURLsFromSrcset = function(elem, out) { + let srcset = elem.srcset; + if ( typeof srcset !== 'string' || srcset === '' ) { return; } + for(;;) { + // trim whitespace + srcset = srcset.trim(); + if ( srcset.length === 0 ) { break; } + // abort in case of leading comma + if ( /^,/.test(srcset) ) { break; } + // collect and consume all non-whitespace characters + let match = /^\S+/.exec(srcset); + if ( match === null ) { break; } + srcset = srcset.slice(match.index + match[0].length); + let url = match[0]; + // consume descriptor, if any + if ( /,$/.test(url) ) { + url = url.replace(/,$/, ''); + if ( /,$/.test(url) ) { break; } + } else { + match = /^[^,]*(?:\(.+?\))?[^,]*(?:,|$)/.exec(srcset); + if ( match === null ) { break; } + srcset = srcset.slice(match.index + match[0].length); + } + const parsedURL = new URL(url, document.baseURI); + if ( parsedURL.pathname.length === 0 ) { continue; } + out.push(trimFragmentFromURL(parsedURL.href)); + } +}; + +// https://github.com/uBlockOrigin/uBlock-issues/issues/2069#issuecomment-1080600661 +// https://developer.mozilla.org/en-US/docs/Web/HTML/Element/picture +const resourceURLsFromPicture = function(elem, out) { + if ( elem.localName === 'source' ) { return; } + const picture = elem.parentElement; + if ( picture === null || picture.localName !== 'picture' ) { return; } + const sources = picture.querySelectorAll(':scope > source'); + for ( const source of sources ) { + const urls = resourceURLsFromElement(source); + if ( urls.length === 0 ) { continue; } + out.push(...urls); + } +}; + +/******************************************************************************/ + +const netFilterFromUnion = function(patternIn, out) { + // Reset reference filter when dealing with unrelated URLs + const currentHostname = self.location.hostname; + if ( + lastNetFilterUnion === '' || + currentHostname === '' || + currentHostname !== lastNetFilterHostname + ) { + lastNetFilterHostname = currentHostname; + lastNetFilterUnion = patternIn; + vAPI.messaging.send('elementPicker', { + what: 'elementPickerEprom', + lastNetFilterSession, + lastNetFilterHostname, + lastNetFilterUnion, + }); + return; + } + + // Related URLs + lastNetFilterHostname = currentHostname; + let patternOut = mergeStrings([ patternIn, lastNetFilterUnion ]); + if ( patternOut !== '/*' && patternOut !== patternIn ) { + const filter = `||${patternOut}`; + if ( out.indexOf(filter) === -1 ) { + out.push(filter); + } + lastNetFilterUnion = patternOut; + } + + // Remember across element picker sessions + vAPI.messaging.send('elementPicker', { + what: 'elementPickerEprom', + lastNetFilterSession, + lastNetFilterHostname, + lastNetFilterUnion, + }); +}; + +/******************************************************************************/ + +// Extract the best possible net filter, i.e. as specific as possible. + +const netFilterFromElement = function(elem) { + if ( elem === null ) { return 0; } + if ( elem.nodeType !== 1 ) { return 0; } + const urls = resourceURLsFromElement(elem); + if ( urls.length === 0 ) { return 0; } + + if ( candidateElements.indexOf(elem) === -1 ) { + candidateElements.push(elem); + } + + const candidates = netFilterCandidates; + const len = candidates.length; + + for ( let i = 0; i < urls.length; i++ ) { + urls[i] = urls[i].replace(/^https?:\/\//, ''); + } + const pattern = mergeStrings(urls); + + + if ( bestCandidateFilter === null && elem.matches('html,body') === false ) { + bestCandidateFilter = { + type: 'net', + filters: candidates, + slot: candidates.length + }; + } + + candidates.push(`||${pattern}`); + + // Suggest a less narrow filter if possible + const pos = pattern.indexOf('?'); + if ( pos !== -1 ) { + candidates.push(`||${pattern.slice(0, pos)}`); + } + + // Suggest a filter which is a result of combining more than one URL. + netFilterFromUnion(pattern, candidates); + + return candidates.length - len; +}; + +const netFilter1stSources = { + 'audio': 'src', + 'embed': 'src', + 'iframe': 'src', + 'img': 'src', + 'image': 'href', + 'object': 'data', + 'source': 'src', + 'video': 'src' +}; + +const filterTypes = { + 'audio': 'media', + 'embed': 'object', + 'iframe': 'subdocument', + 'img': 'image', + 'object': 'object', + 'video': 'media', +}; + +/******************************************************************************/ + +// Extract the best possible cosmetic filter, i.e. as specific as possible. + +// https://github.com/gorhill/uBlock/issues/1725 +// Also take into account the `src` attribute for `img` elements -- and limit +// the value to the 1024 first characters. + +const cosmeticFilterFromElement = function(elem) { + if ( elem === null ) { return 0; } + if ( elem.nodeType !== 1 ) { return 0; } + if ( noCosmeticFiltering ) { return 0; } + + if ( candidateElements.indexOf(elem) === -1 ) { + candidateElements.push(elem); + } + + let selector = ''; + + // Id + let v = typeof elem.id === 'string' && CSS.escape(elem.id); + if ( v ) { + selector = '#' + v; + } + + // Class(es) + v = elem.classList; + if ( v ) { + let i = v.length || 0; + while ( i-- ) { + selector += '.' + CSS.escape(v.item(i)); + } + } + + // Tag name + const tagName = CSS.escape(elem.localName); + + // Use attributes if still no selector found. + // https://github.com/gorhill/uBlock/issues/1901 + // Trim attribute value, this may help in case of malformed HTML. + // + // https://github.com/uBlockOrigin/uBlock-issues/issues/1923 + // Escape unescaped `"` in attribute values + if ( selector === '' ) { + let attributes = [], attr; + switch ( tagName ) { + case 'a': + v = elem.getAttribute('href'); + if ( v ) { + v = v.trim().replace(/\?.*$/, ''); + if ( v.length ) { + attributes.push({ k: 'href', v: v }); + } + } + break; + case 'iframe': + case 'img': + v = elem.getAttribute('src'); + if ( v && v.length !== 0 ) { + v = v.trim(); + if ( v.startsWith('data:') ) { + let pos = v.indexOf(','); + if ( pos !== -1 ) { + v = v.slice(0, pos + 1); + } + } else if ( v.startsWith('blob:') ) { + v = new URL(v.slice(5)); + v.pathname = ''; + v = 'blob:' + v.href; + } + attributes.push({ k: 'src', v: v.slice(0, 256) }); + break; + } + v = elem.getAttribute('alt'); + if ( v && v.length !== 0 ) { + attributes.push({ k: 'alt', v: v }); + break; + } + break; + default: + break; + } + while ( (attr = attributes.pop()) ) { + if ( attr.v.length === 0 ) { continue; } + const w = attr.v.replace(/([^\\])"/g, '$1\\"'); + v = elem.getAttribute(attr.k); + if ( attr.v === v ) { + selector += `[${attr.k}="${w}"]`; + } else if ( v.startsWith(attr.v) ) { + selector += `[${attr.k}^="${w}"]`; + } else { + selector += `[${attr.k}*="${w}"]`; + } + } + } + + // https://github.com/uBlockOrigin/uBlock-issues/issues/17 + // If selector is ambiguous at this point, add the element name to + // further narrow it down. + const parentNode = elem.parentNode; + if ( + selector === '' || + safeQuerySelectorAll(parentNode, `:scope > ${selector}`).length > 1 + ) { + selector = tagName + selector; + } + + // https://github.com/chrisaljoudi/uBlock/issues/637 + // If the selector is still ambiguous at this point, further narrow using + // `nth-of-type`. It is preferable to use `nth-of-type` as opposed to + // `nth-child`, as `nth-of-type` is less volatile. + if ( safeQuerySelectorAll(parentNode, `:scope > ${selector}`).length > 1 ) { + let i = 1; + while ( elem.previousSibling !== null ) { + elem = elem.previousSibling; + if ( + typeof elem.localName === 'string' && + elem.localName === tagName + ) { + i++; + } + } + selector += `:nth-of-type(${i})`; + } + + if ( bestCandidateFilter === null ) { + bestCandidateFilter = { + type: 'cosmetic', + filters: cosmeticFilterCandidates, + slot: cosmeticFilterCandidates.length + }; + } + + cosmeticFilterCandidates.push(`##${selector}`); + + return 1; +}; + +/******************************************************************************/ + +const filtersFrom = function(x, y) { + bestCandidateFilter = null; + netFilterCandidates.length = 0; + cosmeticFilterCandidates.length = 0; + candidateElements.length = 0; + + // We need at least one element. + let first = null; + if ( typeof x === 'number' ) { + first = elementFromPoint(x, y); + } else if ( x instanceof HTMLElement ) { + first = x; + x = undefined; + } + + // https://github.com/gorhill/uBlock/issues/1545 + // Network filter candidates from all other elements found at [x,y]. + // https://www.reddit.com/r/uBlockOrigin/comments/qmjk36/ + // Extract network candidates first. + if ( typeof x === 'number' ) { + const magicAttr = `${pickerUniqueId}-clickblind`; + pickerFrame.setAttribute(magicAttr, ''); + const elems = document.elementsFromPoint(x, y); + pickerFrame.removeAttribute(magicAttr); + for ( const elem of elems ) { + netFilterFromElement(elem); + } + } else if ( first !== null ) { + netFilterFromElement(first); + } + + // Cosmetic filter candidates from ancestors. + // https://github.com/gorhill/uBlock/issues/2519 + // https://github.com/uBlockOrigin/uBlock-issues/issues/17 + // Prepend `body` if full selector is ambiguous. + let elem = first; + while ( elem && elem !== document.body ) { + cosmeticFilterFromElement(elem); + elem = elem.parentNode; + } + // The body tag is needed as anchor only when the immediate child + // uses `nth-of-type`. + let i = cosmeticFilterCandidates.length; + if ( i !== 0 ) { + const selector = cosmeticFilterCandidates[i-1].slice(2); + if ( safeQuerySelectorAll(document.body, selector).length > 1 ) { + cosmeticFilterCandidates.push('##body'); + } + } + + // https://github.com/gorhill/uBlock/commit/ebaa8a8bb28aef043a68c99965fe6c128a3fe5e4#commitcomment-63818019 + // If still no best candidate, just use whatever is available in network + // filter candidates -- which may have been previously skipped in favor + // of cosmetic filters. + if ( bestCandidateFilter === null && netFilterCandidates.length !== 0 ) { + bestCandidateFilter = { + type: 'net', + filters: netFilterCandidates, + slot: 0 + }; + } + + return netFilterCandidates.length + cosmeticFilterCandidates.length; +}; + +/******************************************************************************* + + filterToDOMInterface.queryAll + @desc Look-up all the HTML elements matching the filter passed in + argument. + @param string, a cosmetic or network filter. + @param function, called once all items matching the filter have been + collected. + @return array, or undefined if the filter is invalid. + + filterToDOMInterface.preview + @desc Apply/unapply filter to the DOM. + @param string, a cosmetic of network filter, or literal false to remove + the effects of the filter on the DOM. + @return undefined. + + TODO: need to be revised once I implement chained cosmetic operators. + +*/ + +const filterToDOMInterface = (( ) => { + const reHnAnchorPrefix = '^[\\w-]+://(?:[^/?#]+\\.)?'; + const reCaret = '(?:[^%.0-9a-z_-]|$)'; + const rePseudoElements = /:(?::?after|:?before|:[a-z-]+)$/; + + const matchElemToRegex = (elem, re) => { + const srcProp = netFilter1stSources[elem.localName]; + let src = elem[srcProp]; + if ( src instanceof SVGAnimatedString ) { + src = src.baseVal; + } + if ( typeof src === 'string' && /^https?:\/\//.test(src) ) { + if ( re.test(src) ) { return srcProp; } + } + src = elem.currentSrc; + if ( typeof src === 'string' && /^https?:\/\//.test(src) ) { + if ( re.test(src) ) { return srcProp; } + } + }; + + // Net filters: we need to lookup manually -- translating into a foolproof + // CSS selector is just not possible. + // + // https://github.com/chrisaljoudi/uBlock/issues/945 + // Transform into a regular expression, this allows the user to + // edit and insert wildcard(s) into the proposed filter. + // https://www.reddit.com/r/uBlockOrigin/comments/c5do7w/ + // Better handling of pure hostname filters. Also, discard single + // alphanumeric character filters. + const fromNetworkFilter = function(filter) { + const out = []; + if ( /^[0-9a-z]$/i.test(filter) ) { return out; } + let reStr = ''; + if ( + filter.length > 2 && + filter.startsWith('/') && + filter.endsWith('/') + ) { + reStr = filter.slice(1, -1); + } else if ( /^\w[\w.-]*[a-z]$/i.test(filter) ) { + reStr = reHnAnchorPrefix + + filter.toLowerCase().replace(/\./g, '\\.') + + reCaret; + } else { + let rePrefix = '', reSuffix = ''; + if ( filter.startsWith('||') ) { + rePrefix = reHnAnchorPrefix; + filter = filter.slice(2); + } else if ( filter.startsWith('|') ) { + rePrefix = '^'; + filter = filter.slice(1); + } + if ( filter.endsWith('|') ) { + reSuffix = '$'; + filter = filter.slice(0, -1); + } + reStr = rePrefix + + filter.replace(/[.+?${}()|[\]\\]/g, '\\$&') + .replace(/\*+/g, '.*') + .replace(/\^/g, reCaret) + + reSuffix; + } + let reFilter = null; + try { + reFilter = new RegExp(reStr, 'i'); + } catch { + return out; + } + + // Lookup by tag names. + // https://github.com/uBlockOrigin/uBlock-issues/issues/2260 + // Maybe get to the actual URL indirectly. + // + // https://github.com/uBlockOrigin/uBlock-issues/issues/3142 + // Don't try to match against non-network URIs. + const elems = document.querySelectorAll( + Object.keys(netFilter1stSources).join() + ); + for ( const elem of elems ) { + const srcProp = matchElemToRegex(elem, reFilter); + if ( srcProp === undefined ) { continue; } + out.push({ + elem, + src: srcProp, + opt: filterTypes[elem.localName], + style: vAPI.hideStyle, + }); + } + + // Find matching background image in current set of candidate elements. + for ( const elem of candidateElements ) { + if ( reFilter.test(backgroundImageURLFromElement(elem)) ) { + out.push({ + elem, + bg: true, + opt: 'image', + style: hideBackgroundStyle, + }); + } + } + + return out; + }; + + // Cosmetic filters: these are straight CSS selectors. + // + // https://github.com/uBlockOrigin/uBlock-issues/issues/389 + // Test filter using comma-separated list to better detect invalid CSS + // selectors. + // + // https://github.com/gorhill/uBlock/issues/2515 + // Remove trailing pseudo-element when querying. + const fromPlainCosmeticFilter = function(raw) { + let elems; + try { + document.documentElement.matches(`${raw},\na`); + elems = document.querySelectorAll( + raw.replace(rePseudoElements, '') + ); + } catch { + return; + } + const out = []; + for ( const elem of elems ) { + if ( elem === pickerFrame ) { continue; } + out.push({ elem, raw, style: vAPI.hideStyle }); + } + return out; + }; + + // https://github.com/gorhill/uBlock/issues/1772 + // Handle procedural cosmetic filters. + // + // https://github.com/gorhill/uBlock/issues/2515 + // Remove trailing pseudo-element when querying. + const fromCompiledCosmeticFilter = function(raw) { + if ( noCosmeticFiltering ) { return; } + if ( typeof raw !== 'string' ) { return; } + let elems, style; + try { + const o = JSON.parse(raw); + elems = vAPI.domFilterer.createProceduralFilter(o).exec(); + switch ( o.action && o.action[0] || '' ) { + case '': + case 'remove': + style = vAPI.hideStyle; + break; + case 'style': + style = o.action[1]; + break; + default: + break; + } + } catch { + return; + } + if ( !elems ) { return; } + const out = []; + for ( const elem of elems ) { + out.push({ elem, raw, style }); + } + return out; + }; + + vAPI.epickerStyleProxies = vAPI.epickerStyleProxies || new Map(); + + let lastFilter; + let lastResultset; + let previewing = false; + + const queryAll = function(details) { + let { filter, compiled } = details; + filter = filter.trim(); + if ( filter === lastFilter ) { return lastResultset; } + unapply(); + if ( filter === '' || filter === '!' ) { + lastFilter = ''; + lastResultset = undefined; + return; + } + lastFilter = filter; + if ( reCosmeticAnchor.test(filter) === false ) { + lastResultset = fromNetworkFilter(filter); + if ( previewing ) { apply(); } + return lastResultset; + } + lastResultset = fromPlainCosmeticFilter(compiled); + if ( lastResultset ) { + if ( previewing ) { apply(); } + return lastResultset; + } + // Procedural cosmetic filter + lastResultset = fromCompiledCosmeticFilter(compiled); + if ( previewing ) { apply(); } + return lastResultset; + }; + + const apply = function() { + unapply(); + if ( Array.isArray(lastResultset) === false ) { return; } + const rootElem = document.documentElement; + for ( const { elem, style } of lastResultset ) { + if ( elem === pickerFrame ) { continue; } + if ( style === undefined ) { continue; } + if ( elem === rootElem && style === vAPI.hideStyle ) { continue; } + let styleToken = vAPI.epickerStyleProxies.get(style); + if ( styleToken === undefined ) { + styleToken = vAPI.randomToken(); + vAPI.epickerStyleProxies.set(style, styleToken); + vAPI.userStylesheet.add(`[${styleToken}]\n{${style}}`, true); + } + elem.setAttribute(styleToken, ''); + } + }; + + const unapply = function() { + for ( const styleToken of vAPI.epickerStyleProxies.values() ) { + for ( const elem of document.querySelectorAll(`[${styleToken}]`) ) { + elem.removeAttribute(styleToken); + } + } + }; + + // https://www.reddit.com/r/uBlockOrigin/comments/c62irc/ + // Support injecting the cosmetic filters into the DOM filterer + // immediately rather than wait for the next page load. + const preview = function(state, permanent = false) { + previewing = state !== false; + if ( previewing === false ) { + return unapply(); + } + if ( Array.isArray(lastResultset) === false ) { return; } + if ( permanent === false || reCosmeticAnchor.test(lastFilter) === false ) { + return apply(); + } + if ( noCosmeticFiltering ) { return; } + const cssSelectors = new Set(); + const proceduralSelectors = new Set(); + for ( const { raw } of lastResultset ) { + if ( raw.startsWith('{') ) { + proceduralSelectors.add(raw); + } else { + cssSelectors.add(raw); + } + } + if ( cssSelectors.size !== 0 ) { + vAPI.domFilterer.addCSS( + `${Array.from(cssSelectors).join('\n')}\n{${vAPI.hideStyle}}`, + { mustInject: true } + ); + } + if ( proceduralSelectors.size !== 0 ) { + vAPI.domFilterer.addProceduralSelectors( + Array.from(proceduralSelectors) + ); + } + }; + + return { preview, queryAll }; +})(); + +/******************************************************************************/ + +const onOptimizeCandidates = function(details) { + const { candidates } = details; + const results = []; + for ( const paths of candidates ) { + let count = Number.MAX_SAFE_INTEGER; + let selector = ''; + for ( let i = 0, n = paths.length; i < n; i++ ) { + const s = paths.slice(n - i - 1).join(''); + const elems = document.querySelectorAll(s); + if ( elems.length < count ) { + selector = s; + count = elems.length; + } + } + results.push({ selector: `##${selector}`, count }); + } + // Sort by most match count and shortest selector to least match count and + // longest selector. + results.sort((a, b) => { + const r = b.count - a.count; + if ( r !== 0 ) { return r; } + return a.selector.length - b.selector.length; + }); + + pickerFramePort.postMessage({ + what: 'candidatesOptimized', + candidates: results.map(a => a.selector), + slot: details.slot, + }); +}; + +/******************************************************************************/ + +const showDialog = function(options) { + pickerFramePort.postMessage({ + what: 'showDialog', + url: self.location.href, + netFilters: netFilterCandidates, + cosmeticFilters: cosmeticFilterCandidates, + filter: bestCandidateFilter, + options, + }); +}; + +/******************************************************************************/ + +const elementFromPoint = (( ) => { + let lastX, lastY; + + return (x, y) => { + if ( x !== undefined ) { + lastX = x; lastY = y; + } else if ( lastX !== undefined ) { + x = lastX; y = lastY; + } else { + return null; + } + if ( !pickerFrame ) { return null; } + const magicAttr = `${pickerUniqueId}-clickblind`; + pickerFrame.setAttribute(magicAttr, ''); + let elem = document.elementFromPoint(x, y); + if ( + elem === null || /* to skip following tests */ + elem === document.body || + elem === document.documentElement || ( + pickerBootArgs.zap !== true && + noCosmeticFiltering && + resourceURLsFromElement(elem).length === 0 + ) + ) { + elem = null; + } + // https://github.com/uBlockOrigin/uBlock-issues/issues/380 + pickerFrame.removeAttribute(magicAttr); + return elem; + }; +})(); + +/******************************************************************************/ + +const highlightElementAtPoint = function(mx, my) { + const elem = elementFromPoint(mx, my); + highlightElements(elem ? [ elem ] : []); +}; + +/******************************************************************************/ + +const filterElementAtPoint = function(mx, my, broad) { + if ( filtersFrom(mx, my) === 0 ) { return; } + showDialog({ broad }); +}; + +/******************************************************************************/ + +// https://www.reddit.com/r/uBlockOrigin/comments/bktxtb/scrolling_doesnt_work/emn901o +// Override 'fixed' position property on body element if present. + +// With touch-driven devices, first highlight the element and remove only +// when tapping again the highlighted area. + +const zapElementAtPoint = function(mx, my, options) { + if ( options.highlight ) { + const elem = elementFromPoint(mx, my); + if ( elem ) { + highlightElements([ elem ]); + } + return; + } + + let elemToRemove = targetElements.length !== 0 && targetElements[0] || null; + if ( elemToRemove === null && mx !== undefined ) { + elemToRemove = elementFromPoint(mx, my); + } + + if ( elemToRemove instanceof Element === false ) { return; } + + const getStyleValue = (elem, prop) => { + const style = window.getComputedStyle(elem); + return style ? style[prop] : ''; + }; + + // Heuristic to detect scroll-locking: remove such lock when detected. + let maybeScrollLocked = elemToRemove.shadowRoot instanceof DocumentFragment; + if ( maybeScrollLocked === false ) { + let elem = elemToRemove; + do { + maybeScrollLocked = + parseInt(getStyleValue(elem, 'zIndex'), 10) >= 1000 || + getStyleValue(elem, 'position') === 'fixed'; + elem = elem.parentElement; + } while ( elem !== null && maybeScrollLocked === false ); + } + if ( maybeScrollLocked ) { + const doc = document; + if ( getStyleValue(doc.body, 'overflowY') === 'hidden' ) { + doc.body.style.setProperty('overflow', 'auto', 'important'); + } + if ( getStyleValue(doc.body, 'position') === 'fixed' ) { + doc.body.style.setProperty('position', 'initial', 'important'); + } + if ( getStyleValue(doc.documentElement, 'position') === 'fixed' ) { + doc.documentElement.style.setProperty('position', 'initial', 'important'); + } + if ( getStyleValue(doc.documentElement, 'overflowY') === 'hidden' ) { + doc.documentElement.style.setProperty('overflow', 'auto', 'important'); + } + } + elemToRemove.remove(); + highlightElementAtPoint(mx, my); +}; + +/******************************************************************************/ + +const onKeyPressed = function(ev) { + // Delete + if ( + (ev.key === 'Delete' || ev.key === 'Backspace') && + pickerBootArgs.zap + ) { + ev.stopPropagation(); + ev.preventDefault(); + zapElementAtPoint(); + return; + } + // Esc + if ( ev.key === 'Escape' || ev.which === 27 ) { + ev.stopPropagation(); + ev.preventDefault(); + filterToDOMInterface.preview(false); + quitPicker(); + return; + } +}; + +/******************************************************************************/ + +// https://github.com/chrisaljoudi/uBlock/issues/190 +// May need to dynamically adjust the height of the overlay + new position +// of highlighted elements. + +const onViewportChanged = function() { + highlightElements(targetElements, true); +}; + +/******************************************************************************/ + +// Auto-select a specific target, if any, and if possible + +const startPicker = function() { + pickerFrame.focus(); + + self.addEventListener('scroll', onViewportChanged, { passive: true }); + self.addEventListener('resize', onViewportChanged, { passive: true }); + self.addEventListener('keydown', onKeyPressed, true); + + // Try using mouse position + if ( + pickerBootArgs.mouse && + vAPI.mouseClick instanceof Object && + typeof vAPI.mouseClick.x === 'number' && + vAPI.mouseClick.x > 0 + ) { + if ( filtersFrom(vAPI.mouseClick.x, vAPI.mouseClick.y) !== 0 ) { + return showDialog(); + } + } + + // No mouse position available, use suggested target + const target = pickerBootArgs.target || ''; + const pos = target.indexOf('\t'); + if ( pos === -1 ) { return; } + + const srcAttrMap = { + 'a': 'href', + 'audio': 'src', + 'embed': 'src', + 'iframe': 'src', + 'img': 'src', + 'video': 'src', + }; + const tagName = target.slice(0, pos); + const url = target.slice(pos + 1); + const attr = srcAttrMap[tagName]; + if ( attr === undefined ) { return; } + const elems = document.getElementsByTagName(tagName); + for ( const elem of elems ) { + if ( elem === pickerFrame ) { continue; } + const srcs = resourceURLsFromElement(elem); + if ( + (srcs.length !== 0 && srcs.includes(url) === false) || + (srcs.length === 0 && url !== 'about:blank') + ) { + continue; + } + filtersFrom(elem); + if ( + netFilterCandidates.length !== 0 || + cosmeticFilterCandidates.length !== 0 + ) { + if ( pickerBootArgs.mouse !== true ) { + elem.scrollIntoView({ + behavior: 'smooth', + block: 'center', + inline: 'center' + }); + } + showDialog({ broad: true }); + } + return; + } + + // A target was specified, but it wasn't found: abort. + quitPicker(); +}; + +/******************************************************************************/ + +// Let's have the element picker code flushed from memory when no longer +// in use: to ensure this, release all local references. + +const quitPicker = function() { + self.removeEventListener('scroll', onViewportChanged, { passive: true }); + self.removeEventListener('resize', onViewportChanged, { passive: true }); + self.removeEventListener('keydown', onKeyPressed, true); + vAPI.shutdown.remove(quitPicker); + if ( pickerFramePort ) { + pickerFramePort.close(); + pickerFramePort = null; + } + if ( pickerFrame ) { + pickerFrame.remove(); + pickerFrame = null; + } + vAPI.userStylesheet.remove(pickerCSS); + vAPI.userStylesheet.apply(); + vAPI.pickerFrame = false; + self.focus(); +}; + +vAPI.shutdown.add(quitPicker); + +/******************************************************************************/ + +const onDialogMessage = function(msg) { + switch ( msg.what ) { + case 'start': + startPicker(); + if ( pickerFramePort === null ) { break; } + if ( targetElements.length === 0 ) { + highlightElements([], true); + } + break; + case 'optimizeCandidates': + onOptimizeCandidates(msg); + break; + case 'dialogCreate': + filterToDOMInterface.queryAll(msg); + filterToDOMInterface.preview(true, true); + quitPicker(); + break; + case 'dialogSetFilter': { + const resultset = filterToDOMInterface.queryAll(msg) || []; + highlightElements(resultset.map(a => a.elem), true); + if ( msg.filter === '!' ) { break; } + pickerFramePort.postMessage({ + what: 'resultsetDetails', + count: resultset.length, + opt: resultset.length !== 0 ? resultset[0].opt : undefined, + }); + break; + } + case 'quitPicker': + filterToDOMInterface.preview(false); + quitPicker(); + break; + case 'highlightElementAtPoint': + highlightElementAtPoint(msg.mx, msg.my); + break; + case 'unhighlight': + highlightElements([]); + break; + case 'filterElementAtPoint': + filterElementAtPoint(msg.mx, msg.my, msg.broad); + break; + case 'zapElementAtPoint': + zapElementAtPoint(msg.mx, msg.my, msg.options); + if ( msg.options.highlight !== true && msg.options.stay !== true ) { + quitPicker(); + } + break; + case 'togglePreview': + filterToDOMInterface.preview(msg.state); + if ( msg.state === false ) { + highlightElements(targetElements, true); + } + break; + default: + break; + } +}; + +/******************************************************************************/ + +// epicker-ui.html will be injected in the page through an iframe, and +// is a sandboxed so as to prevent the page from interfering with its +// content and behavior. +// +// The purpose of epicker.js is to: +// - Install the element picker UI, and wait for the component to establish +// a direct communication channel. +// - Lookup candidate filters from elements at a specific position. +// - Highlight element(s) at a specific position or according to whether +// they match candidate filters; +// - Preview the result of applying a candidate filter; +// +// When the element picker is installed on a page, the only change the page +// sees is an iframe with a random attribute. The page can't see the content +// of the iframe, and cannot interfere with its style properties. However the +// page can remove the iframe. + +// The DOM filterer will not be present when cosmetic filtering is disabled. +const noCosmeticFiltering = + vAPI.domFilterer instanceof Object === false || + vAPI.noSpecificCosmeticFiltering === true; + +// https://github.com/gorhill/uBlock/issues/1529 +// In addition to inline styles, harden the element picker styles by using +// dedicated CSS rules. +const pickerCSSStyle = [ + 'background: transparent', + 'border: 0', + 'border-radius: 0', + 'box-shadow: none', + 'color-scheme: light dark', + 'display: block', + 'filter: none', + 'height: 100vh', + ' height: 100svh', + 'left: 0', + 'margin: 0', + 'max-height: none', + 'max-width: none', + 'min-height: unset', + 'min-width: unset', + 'opacity: 1', + 'outline: 0', + 'padding: 0', + 'pointer-events: auto', + 'position: fixed', + 'top: 0', + 'transform: none', + 'visibility: hidden', + 'width: 100%', + 'z-index: 2147483647', + '' +].join(' !important;\n'); + + +const pickerCSS = ` +:root > [${pickerUniqueId}] { + ${pickerCSSStyle} +} +:root > [${pickerUniqueId}-loaded] { + visibility: visible !important; +} +:root [${pickerUniqueId}-clickblind] { + pointer-events: none !important; +} +`; + +vAPI.userStylesheet.add(pickerCSS); +vAPI.userStylesheet.apply(); + +let pickerBootArgs; +let pickerFramePort = null; + +const bootstrap = async ( ) => { + pickerBootArgs = await vAPI.messaging.send('elementPicker', { + what: 'elementPickerArguments', + }); + if ( typeof pickerBootArgs !== 'object' ) { return; } + if ( pickerBootArgs === null ) { return; } + // Restore net filter union data if origin is the same. + const eprom = pickerBootArgs.eprom || null; + if ( eprom !== null && eprom.lastNetFilterSession === lastNetFilterSession ) { + lastNetFilterHostname = eprom.lastNetFilterHostname || ''; + lastNetFilterUnion = eprom.lastNetFilterUnion || ''; + } + const url = new URL(pickerBootArgs.pickerURL); + if ( pickerBootArgs.zap ) { + url.searchParams.set('zap', '1'); + } + return new Promise(resolve => { + const iframe = document.createElement('iframe'); + iframe.setAttribute(pickerUniqueId, ''); + document.documentElement.append(iframe); + iframe.addEventListener('load', ( ) => { + iframe.setAttribute(`${pickerUniqueId}-loaded`, ''); + const channel = new MessageChannel(); + pickerFramePort = channel.port1; + pickerFramePort.onmessage = ev => { + onDialogMessage(ev.data || {}); + }; + pickerFramePort.onmessageerror = ( ) => { + quitPicker(); + }; + iframe.contentWindow.postMessage( + { what: 'epickerStart' }, + url.href, + [ channel.port2 ] + ); + resolve(iframe); + }, { once: true }); + iframe.contentWindow.location = url.href; + }); +}; + +let pickerFrame = await bootstrap(); +if ( Boolean(pickerFrame) === false ) { + quitPicker(); +} + +/******************************************************************************/ + +})(); + + + + + + + + +/******************************************************************************* + + DO NOT: + - Remove the following code + - Add code beyond the following code + Reason: + - https://github.com/gorhill/uBlock/pull/3721 + - uBO never uses the return value from injected content scripts + +**/ + +void 0; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/load-3p-css.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/load-3p-css.js new file mode 100644 index 00000000..315e17c6 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/load-3p-css.js @@ -0,0 +1,65 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2020-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +(( ) => { + if ( typeof vAPI !== 'object' ) { return; } + + if ( vAPI.dynamicReloadToken === undefined ) { + vAPI.dynamicReloadToken = vAPI.randomToken(); + } + + for ( const sheet of Array.from(document.styleSheets) ) { + let loaded = false; + try { + loaded = sheet.rules.length !== 0; + } catch { + } + if ( loaded ) { continue; } + const link = sheet.ownerNode || null; + if ( link === null || link.localName !== 'link' ) { continue; } + if ( link.hasAttribute(vAPI.dynamicReloadToken) ) { continue; } + const clone = link.cloneNode(true); + clone.setAttribute(vAPI.dynamicReloadToken, ''); + link.replaceWith(clone); + } +})(); + + + + + + + + +/******************************************************************************* + + DO NOT: + - Remove the following code + - Add code beyond the following code + Reason: + - https://github.com/gorhill/uBlock/pull/3721 + - uBO never uses the return value from injected content scripts + +**/ + +void 0; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/load-large-media-all.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/load-large-media-all.js new file mode 100644 index 00000000..cf375774 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/load-large-media-all.js @@ -0,0 +1,60 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-2018 Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +/******************************************************************************/ + +(( ) => { + +/******************************************************************************/ + +if ( + typeof vAPI !== 'object' || + vAPI.loadAllLargeMedia instanceof Function === false +) { + return; +} + +vAPI.loadAllLargeMedia(); +vAPI.loadAllLargeMedia = undefined; + +/******************************************************************************/ + +})(); + + + + + + + + +/******************************************************************************* + + DO NOT: + - Remove the following code + - Add code beyond the following code + Reason: + - https://github.com/gorhill/uBlock/pull/3721 + - uBO never uses the return value from injected content scripts + +**/ + +void 0; diff --git a/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/load-large-media-interactive.js b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/load-large-media-interactive.js new file mode 100644 index 00000000..61581247 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/js/scriptlets/load-large-media-interactive.js @@ -0,0 +1,312 @@ +/******************************************************************************* + + uBlock Origin - a comprehensive, efficient content blocker + Copyright (C) 2015-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(( ) => { + +/******************************************************************************/ + +// This can happen +if ( typeof vAPI !== 'object' || vAPI.loadAllLargeMedia instanceof Function ) { + return; +} + +const largeMediaElementAttribute = 'data-' + vAPI.sessionId; +const largeMediaElementSelector = + ':root audio[' + largeMediaElementAttribute + '],\n' + + ':root img[' + largeMediaElementAttribute + '],\n' + + ':root picture[' + largeMediaElementAttribute + '],\n' + + ':root video[' + largeMediaElementAttribute + ']'; + +const isMediaElement = elem => + (/^(?:audio|img|picture|video)$/.test(elem.localName)); + +const isPlayableMediaElement = elem => + (/^(?:audio|video)$/.test(elem.localName)); + +/******************************************************************************/ + +const mediaNotLoaded = function(elem) { + switch ( elem.localName ) { + case 'audio': + case 'video': + return elem.readyState === 0 || elem.error !== null; + case 'img': { + if ( elem.naturalWidth !== 0 || elem.naturalHeight !== 0 ) { + break; + } + const style = window.getComputedStyle(elem); + // For some reason, style can be null with Pale Moon. + return style !== null ? + style.getPropertyValue('display') !== 'none' : + elem.offsetHeight !== 0 && elem.offsetWidth !== 0; + } + default: + break; + } + return false; +}; + +/******************************************************************************/ + +// For all media resources which have failed to load, trigger a reload. + +//
+ +
+
+
+
+ + + + + +
+
+
+
    +
    +
    +
    +
    +
    + + + +   + + + + + angle-up +
    +
    +
    + +
    css/fontimagemediascript
    +
    xhrframedomscriptletother
    +
    +
    +
    tabless
    +
    getheadpost
    +
    + + csppermissionsredirectremoveparamreplaceurlskip + +
    + +
    + +
    infoerror
    +
    +
    +
    +
    +
    +
    +
    + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    00:00:00 ** 3,3optionsinline-script 
    +
    +
    +
    +
    +
    +
    +
    +
    + +   + +
    +
    +
    +
    +
    + +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/managed_storage.json b/android/app/src/main/assets/extensions/ublock_origin/managed_storage.json new file mode 100644 index 00000000..25614dd0 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/managed_storage.json @@ -0,0 +1,73 @@ +{ + "$schema": "http://json-schema.org/draft-03/schema#", + "type": "object", + "properties": { + "adminSettings": { + "title": "A valid JSON string compliant with uBO's backup format", + "description": "All entries present will overwrite local settings.", + "type": "string" + }, + "advancedSettings": { + "title": "A list of [name,value] pairs to populate advanced settings", + "type": "array", + "items": { + "title": "A [name,value] pair", + "type": "array", + "items": { "type": "string" } + } + }, + "userSettings": { + "title": "A list of [name,value] pairs to populate user settings", + "type": "array", + "items": { + "title": "A [name,value] pair", + "type": "array", + "items": { "type": "string" } + } + }, + "disableDashboard": { + "title": "Set to true to prevent access to configuration options", + "type": "boolean" + }, + "disabledPopupPanelParts": { + "title": "An array of strings used to remove parts of the popup panel", + "type": "array", + "items": { "type": "string" } + }, + "toAdd": { + "title": "Settings to add at launch time", + "type": "object", + "properties": { + "trustedSiteDirectives": { + "title": "A list of trusted-site directives", + "description": "Trusted-site directives to always add at launch time.", + "type": "array", + "items": { "type": "string" } + } + } + }, + "toOverwrite": { + "title": "Settings to overwrite at launch time", + "type": "object", + "properties": { + "filters": { + "title": "A collection of filters", + "description": "The set of user filters to use at launch time -- where each entry is a distinct line.", + "type": "array", + "items": { "type": "string" } + }, + "filterLists": { + "title": "A collection of list identifiers and/or list URLs", + "description": "The set of filter lists to use at launch time.", + "type": "array", + "items": { "type": "string" } + }, + "trustedSiteDirectives": { + "title": "A list of trusted-site directives", + "type": "array", + "items": { "type": "string" } + } + } + } + } +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/manifest.json b/android/app/src/main/assets/extensions/ublock_origin/manifest.json new file mode 100644 index 00000000..160b5271 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/manifest.json @@ -0,0 +1,108 @@ +{ + "author": "Raymond Hill & contributors", + "background": { + "page": "background.html" + }, + "browser_action": { + "browser_style": false, + "default_area": "navbar", + "default_icon": { + "16": "img/icon_16.png", + "32": "img/icon_32.png", + "64": "img/icon_64.png" + }, + "default_popup": "popup-fenix.html", + "default_title": "uBlock Origin" + }, + "browser_specific_settings": { + "gecko": { + "data_collection_permissions": { + "required": [ + "none" + ] + }, + "id": "uBlock0@raymondhill.net", + "strict_min_version": "115.0" + }, + "gecko_android": { + "strict_min_version": "115.0" + } + }, + "content_scripts": [ + { + "all_frames": true, + "js": [ + "/js/vapi.js", + "/js/vapi-client.js", + "/js/contentscript.js" + ], + "match_about_blank": true, + "matches": [ + "http://*/*", + "https://*/*", + "file://*/*" + ], + "run_at": "document_start" + }, + { + "all_frames": false, + "js": [ + "/js/scriptlets/subscriber.js" + ], + "matches": [ + "https://easylist.to/*", + "https://*.fanboy.co.nz/*", + "https://filterlists.com/*", + "https://forums.lanik.us/*", + "https://github.com/*", + "https://*.github.io/*" + ], + "run_at": "document_idle" + }, + { + "all_frames": false, + "js": [ + "/js/scriptlets/updater.js" + ], + "matches": [ + "https://github.com/uBlockOrigin/*", + "https://ublockorigin.github.io/*", + "https://*.reddit.com/r/uBlockOrigin/*" + ], + "run_at": "document_idle" + } + ], + "default_locale": "en", + "description": "__MSG_extShortDesc__", + "icons": { + "128": "img/ublock.svg", + "16": "img/ublock.svg", + "32": "img/ublock.svg", + "48": "img/ublock.svg", + "64": "img/ublock.svg", + "96": "img/ublock.svg" + }, + "manifest_version": 2, + "name": "uBlock Origin", + "options_ui": { + "open_in_tab": true, + "page": "dashboard.html" + }, + "permissions": [ + "alarms", + "dns", + "privacy", + "storage", + "tabs", + "unlimitedStorage", + "webNavigation", + "webRequest", + "webRequestBlocking", + "" + ], + "short_name": "uBlock\u2080", + "version": "1.72.2", + "web_accessible_resources": [ + "/web_accessible_resources/*" + ] +} diff --git a/android/app/src/main/assets/extensions/ublock_origin/mozilla-recommendation.json b/android/app/src/main/assets/extensions/ublock_origin/mozilla-recommendation.json new file mode 100644 index 00000000..73179f5b --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/mozilla-recommendation.json @@ -0,0 +1 @@ +{"addon_id":"uBlock0@raymondhill.net","states":["recommended","recommended-android"],"validity":{"not_after":"2031-07-08T18:46:14Z","not_before":"2026-07-08T12:46:14Z"},"schema_version":1} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/ublock_origin/no-dashboard.html b/android/app/src/main/assets/extensions/ublock_origin/no-dashboard.html new file mode 100644 index 00000000..b7345cb8 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/no-dashboard.html @@ -0,0 +1,28 @@ + + + + + + +uBlock — About + + + + + + + +
    + Your administrator removed the ability to access the dashboard +
    + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/popup-fenix.html b/android/app/src/main/assets/extensions/ublock_origin/popup-fenix.html new file mode 100644 index 00000000..00eb661e --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/popup-fenix.html @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + +
    +
    +
    +
    ­ 
    +
    +
    + lock + eraser +
    +
    + + + + + + + +
    +
    + refresh +
    +
    +
    +
    + ph-popups + film + eye-slash + ph-readermode-text-size + code +
    +
    +
    + __ + __ + __ +
    +
    + bolt + eye-dropper + comment-alt + list-alt + cogs +
    +
    + +
    +
    +
    + +
    +
    +
    + + angle-up + + + angle-up + +
    +
    +
    +
    filter
    ___
    ___
    +
    _
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/settings.html b/android/app/src/main/assets/extensions/ublock_origin/settings.html new file mode 100644 index 00000000..91f9aedb --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/settings.html @@ -0,0 +1,99 @@ + + + + + + +uBlock — Settings + + + + + + + + +
    +
    +
    +
    + +
    +
    + +
    +
    +
    +
    +
    +   + + + +
    +
    +
    +
    +
    + +
    +
    +
    + + +
    +
    +
    +
    +
    + + +
    +
    + + + +
    +
    + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/support.html b/android/app/src/main/assets/extensions/ublock_origin/support.html new file mode 100644 index 00000000..d044646a --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/support.html @@ -0,0 +1,132 @@ + + + + + + +uBlock Origin — Support + + + + + + + + + + + + + + +
    +
    +

    +
    +
    +

    +

    + +
    +
    +
    +
    +

    +
    +
    +

    +

    + +
    +
    +
    +
    +

    +
    +
    +

    +

    +

    +

    + +
    +
    +
    +
    +

    +
    +
    +

    +

    + +
    +
    +
    +
    +

    +

    +
    +
    +

    _

    + + _ +
    +
    +
    +

    + +
    +
    +
    +

    +
    + +

    +

    +
    + +

    +

    + +

    + +
    +
    +

    _ ▸

    +
    +
    +

    +

    +

    + + +

    +
    +
    + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/1x1.gif b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/1x1.gif new file mode 100644 index 00000000..e565824a Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/1x1.gif differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/2x2.png b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/2x2.png new file mode 100644 index 00000000..3639dc75 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/2x2.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/32x32.png b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/32x32.png new file mode 100644 index 00000000..7bee0a00 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/32x32.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/3x2.png b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/3x2.png new file mode 100644 index 00000000..a056d867 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/3x2.png differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/README.txt b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/README.txt new file mode 100644 index 00000000..f9ab5c3a --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/README.txt @@ -0,0 +1,11 @@ +IMPORTANT + +Content of this folder cannot be accessed without the internal secret token +created for each request to any of the "web accessible resources". + +Any fetch operation made without uBlock Origin's internal secret will result +in failure. This means that despite the content of the folder here declared as +"web accessible resources", it still cannot be seen by the outside world. + +Only uBlock Origin knows the secret token at runtime and hence only +uBlock Origin can access the content of this folder. diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/adthrive_abd.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/adthrive_abd.js new file mode 100644 index 00000000..765030be --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/adthrive_abd.js @@ -0,0 +1,4 @@ +(( ) => { + const d = new Date(Date.now() + 30000); + document.cookie = `__adblocker=false; expires=${d.toUTCString()}; path=/`; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/amazon_ads.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/amazon_ads.js new file mode 100644 index 00000000..0b6e0526 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/amazon_ads.js @@ -0,0 +1,70 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + if ( amznads ) { + return; + } + var w = window; + var noopfn = function() { + ; + }.bind(); + var amznads = { + appendScriptTag: noopfn, + appendTargetingToAdServerUrl: noopfn, + appendTargetingToQueryString: noopfn, + clearTargetingFromGPTAsync: noopfn, + doAllTasks: noopfn, + doGetAdsAsync: noopfn, + doTask: noopfn, + detectIframeAndGetURL: noopfn, + getAds: noopfn, + getAdsAsync: noopfn, + getAdForSlot: noopfn, + getAdsCallback: noopfn, + getDisplayAds: noopfn, + getDisplayAdsAsync: noopfn, + getDisplayAdsCallback: noopfn, + getKeys: noopfn, + getReferrerURL: noopfn, + getScriptSource: noopfn, + getTargeting: noopfn, + getTokens: noopfn, + getValidMilliseconds: noopfn, + getVideoAds: noopfn, + getVideoAdsAsync: noopfn, + getVideoAdsCallback: noopfn, + handleCallBack: noopfn, + hasAds: noopfn, + renderAd: noopfn, + saveAds: noopfn, + setTargeting: noopfn, + setTargetingForGPTAsync: noopfn, + setTargetingForGPTSync: noopfn, + tryGetAdsAsync: noopfn, + updateAds: noopfn + }; + w.amznads = amznads; + w.amzn_ads = w.amzn_ads || noopfn; + w.aax_write = w.aax_write || noopfn; + w.aax_render_ad = w.aax_render_ad || noopfn; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/amazon_apstag.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/amazon_apstag.js new file mode 100644 index 00000000..1ddd5a44 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/amazon_apstag.js @@ -0,0 +1,62 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +// https://www.reddit.com/r/uBlockOrigin/comments/ghjqph/ +// https://github.com/NanoMeow/QuickReports/issues/3717 +// https://www.reddit.com/r/uBlockOrigin/comments/qyx7en/ + +// https://searchfox.org/mozilla-central/source/browser/extensions/webcompat/shims/apstag.js +// Import queue-related initialization code. + +(function() { + 'use strict'; + const w = window; + const noopfn = function() { + ; // jshint ignore:line + }.bind(); + const _Q = w.apstag && w.apstag._Q || []; + const apstag = { + _Q, + fetchBids: function(a, b) { + if ( typeof b === 'function' ) { + b([]); + } + }, + init: noopfn, + setDisplayBids: noopfn, + targetingKeys: noopfn, + }; + w.apstag = apstag; + _Q.push = function(prefix, args) { + try { + switch (prefix) { + case 'f': + apstag.fetchBids(...args); + break; + } + } catch (e) { + console.trace(e); + } + }; + for ( const cmd of _Q ) { + _Q.push(cmd); + } +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/ampproject_v0.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/ampproject_v0.js new file mode 100644 index 00000000..e822f9db --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/ampproject_v0.js @@ -0,0 +1,34 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const head = document.head; + if ( !head ) { return; } + const style = document.createElement('style'); + style.textContent = [ + 'body {', + ' animation: none !important;', + ' overflow: unset !important;', + '}' + ].join('\n'); + head.appendChild(style); +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/chartbeat.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/chartbeat.js new file mode 100644 index 00000000..780d3ddb --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/chartbeat.js @@ -0,0 +1,33 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const noopfn = function() { + }; + window.pSUPERFLY = { + activity: noopfn, + virtualPage: noopfn + }; + for ( const hider of document.querySelectorAll('style[id^=chartbeat-flicker-control]') ) { + hider.remove(); + } +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/click2load.html b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/click2load.html new file mode 100644 index 00000000..7ec52b9a --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/click2load.html @@ -0,0 +1,28 @@ + + + + + +uBlock Origin Click-to-Load + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/dom-inspector.html b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/dom-inspector.html new file mode 100644 index 00000000..d3386106 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/dom-inspector.html @@ -0,0 +1,25 @@ + + + + + + +uBlock Origin Inspector + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/doubleclick_instream_ad_status.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/doubleclick_instream_ad_status.js new file mode 100644 index 00000000..dfec48c4 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/doubleclick_instream_ad_status.js @@ -0,0 +1 @@ +window.google_ad_status = 1; diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/empty b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/empty new file mode 100644 index 00000000..e69de29b diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/epicker-ui.html b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/epicker-ui.html new file mode 100644 index 00000000..9be0103d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/epicker-ui.html @@ -0,0 +1,72 @@ + + + + + + +uBlock Origin Element Picker + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/fingerprint2.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/fingerprint2.js new file mode 100644 index 00000000..d4e99c87 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/fingerprint2.js @@ -0,0 +1,55 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2014-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +// Reference: +// https://github.com/fingerprintjs/fingerprintjs/tree/v2 + +(function() { + 'use strict'; + const hex32 = len => { + return Math.floor(Math.random() * Number.MAX_SAFE_INTEGER) + .toString(16) + .slice(-len) + .padStart(len, '0'); + }; + const browserId = `${hex32(8)}${hex32(8)}${hex32(8)}${hex32(8)}`; + const fp2 = function(){}; + fp2.get = function(opts, cb) { + if ( !cb ) { cb = opts; } + setTimeout(( ) => { cb([]); }, 1); + }; + fp2.getPromise = function() { + return Promise.resolve([]); + }; + fp2.getV18 = function() { + return browserId; + }; + fp2.x64hash128 = function() { + return browserId; + }; + fp2.prototype = { + get: function(opts, cb) { + if ( !cb ) { cb = opts; } + setTimeout(( ) => { cb(browserId, []); }, 1); + }, + }; + self.Fingerprint2 = self.Fingerprint = fp2; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/fingerprint3.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/fingerprint3.js new file mode 100644 index 00000000..1bf15298 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/fingerprint3.js @@ -0,0 +1,45 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2022-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const visitorId = (( ) => { + let id = ''; + for ( let i = 0; i < 8; i++ ) { + id += (Math.random() * 0x10000 + 0x1000 | 0).toString(16).slice(-4); + } + return id; + })(); + const FingerprintJS = class { + static hashComponents() { + return visitorId; + } + static load() { + return Promise.resolve(new FingerprintJS()); + } + get() { + return Promise.resolve({ + visitorId, + }); + } + }; + window.FingerprintJS = FingerprintJS; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_analytics.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_analytics.js new file mode 100644 index 00000000..6fdf396d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_analytics.js @@ -0,0 +1,110 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + // https://developers.google.com/analytics/devguides/collection/analyticsjs/ + const noopfn = function() { + }; + // + const Tracker = function() { + }; + const p = Tracker.prototype; + p.get = noopfn; + p.set = noopfn; + p.send = noopfn; + // + const w = window; + const gaName = w.GoogleAnalyticsObject || 'ga'; + const gaQueue = w[gaName]; + // https://github.com/uBlockOrigin/uAssets/pull/4115 + const ga = function() { + const len = arguments.length; + if ( len === 0 ) { return; } + const args = Array.from(arguments); + let fn; + let a = args[len-1]; + if ( a instanceof Object && a.hitCallback instanceof Function ) { + fn = a.hitCallback; + } else if ( a instanceof Function ) { + fn = ( ) => { a(ga.create()); }; + } else { + const pos = args.indexOf('hitCallback'); + if ( pos !== -1 && args[pos+1] instanceof Function ) { + fn = args[pos+1]; + } + } + if ( fn instanceof Function === false ) { return; } + try { + fn(); + } catch (ex) { + } + }; + ga.create = function() { + return new Tracker(); + }; + ga.getByName = function() { + return new Tracker(); + }; + ga.getAll = function() { + return [new Tracker()]; + }; + ga.remove = noopfn; + // https://github.com/uBlockOrigin/uAssets/issues/2107 + ga.loaded = true; + w[gaName] = ga; + // https://github.com/gorhill/uBlock/issues/3075 + const dl = w.dataLayer; + if ( dl instanceof Object ) { + if ( dl.hide instanceof Object && typeof dl.hide.end === 'function' ) { + dl.hide.end(); + dl.hide.end = ()=>{}; + } + if ( typeof dl.push === 'function' ) { + const doCallback = function(item) { + if ( item instanceof Object === false ) { return; } + if ( typeof item.eventCallback !== 'function' ) { return; } + setTimeout(item.eventCallback, 1); + item.eventCallback = ()=>{}; + }; + dl.push = new Proxy(dl.push, { + apply: function(target, thisArg, args) { + doCallback(args[0]); + return Reflect.apply(target, thisArg, args); + } + }); + if ( Array.isArray(dl) ) { + const q = dl.slice(); + for ( const item of q ) { + doCallback(item); + } + } + } + } + // empty ga queue + if ( gaQueue instanceof Function && Array.isArray(gaQueue.q) ) { + const q = gaQueue.q.slice(); + gaQueue.q.length = 0; + for ( const entry of q ) { + ga(...entry); + } + } +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_cx_api.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_cx_api.js new file mode 100644 index 00000000..9f63ebea --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_cx_api.js @@ -0,0 +1,36 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const noopfn = function() { + }; + window.cxApi = { + chooseVariation: function() { + return 0; + }, + getChosenVariation: noopfn, + setAllowHash: noopfn, + setChosenVariation: noopfn, + setCookiePath: noopfn, + setDomainName: noopfn + }; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_ga.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_ga.js new file mode 100644 index 00000000..c969b381 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_ga.js @@ -0,0 +1,130 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const noopfn = function() { + }; + // + const Gaq = function() { + }; + Gaq.prototype.Na = noopfn; + Gaq.prototype.O = noopfn; + Gaq.prototype.Sa = noopfn; + Gaq.prototype.Ta = noopfn; + Gaq.prototype.Va = noopfn; + Gaq.prototype._createAsyncTracker = noopfn; + Gaq.prototype._getAsyncTracker = noopfn; + Gaq.prototype._getPlugin = noopfn; + Gaq.prototype.push = function(a) { + if ( typeof a === 'function' ) { + a(); return; + } + if ( Array.isArray(a) === false ) { return; } + // https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiDomainDirectory#_gat.GA_Tracker_._link + // https://github.com/uBlockOrigin/uBlock-issues/issues/1807 + if ( + typeof a[0] === 'string' && + /(^|\.)_link$/.test(a[0]) && + typeof a[1] === 'string' + ) { + try { + window.location.assign(a[1]); + } catch(ex) { + } + } + // https://github.com/gorhill/uBlock/issues/2162 + if ( a[0] === '_set' && a[1] === 'hitCallback' && typeof a[2] === 'function' ) { + a[2](); + } + }; + // + const tracker = (function() { + const out = {}; + const api = [ + '_addIgnoredOrganic _addIgnoredRef _addItem _addOrganic', + '_addTrans _clearIgnoredOrganic _clearIgnoredRef _clearOrganic', + '_cookiePathCopy _deleteCustomVar _getName _setAccount', + '_getAccount _getClientInfo _getDetectFlash _getDetectTitle', + '_getLinkerUrl _getLocalGifPath _getServiceMode _getVersion', + '_getVisitorCustomVar _initData _linkByPost', + '_setAllowAnchor _setAllowHash _setAllowLinker _setCampContentKey', + '_setCampMediumKey _setCampNameKey _setCampNOKey _setCampSourceKey', + '_setCampTermKey _setCampaignCookieTimeout _setCampaignTrack _setClientInfo', + '_setCookiePath _setCookiePersistence _setCookieTimeout _setCustomVar', + '_setDetectFlash _setDetectTitle _setDomainName _setLocalGifPath', + '_setLocalRemoteServerMode _setLocalServerMode _setReferrerOverride _setRemoteServerMode', + '_setSampleRate _setSessionTimeout _setSiteSpeedSampleRate _setSessionCookieTimeout', + '_setVar _setVisitorCookieTimeout _trackEvent _trackPageLoadTime', + '_trackPageview _trackSocial _trackTiming _trackTrans', + '_visitCode' + ].join(' ').split(/\s+/); + for ( const method of api ) { + out[method] = noopfn; + } + out._getLinkerUrl = function(a) { + return a; + }; + // https://github.com/AdguardTeam/Scriptlets/issues/154 + out._link = function(a) { + if ( typeof a !== 'string' ) { return; } + try { + window.location.assign(a); + } catch(ex) { + } + }; + return out; + })(); + // + const Gat = function() { + }; + Gat.prototype._anonymizeIP = noopfn; + Gat.prototype._createTracker = noopfn; + Gat.prototype._forceSSL = noopfn; + Gat.prototype._getPlugin = noopfn; + Gat.prototype._getTracker = function() { + return tracker; + }; + Gat.prototype._getTrackerByName = function() { + return tracker; + }; + Gat.prototype._getTrackers = noopfn; + Gat.prototype.aa = noopfn; + Gat.prototype.ab = noopfn; + Gat.prototype.hb = noopfn; + Gat.prototype.la = noopfn; + Gat.prototype.oa = noopfn; + Gat.prototype.pa = noopfn; + Gat.prototype.u = noopfn; + const gat = new Gat(); + window._gat = gat; + // + const gaq = new Gaq(); + (function() { + const aa = window._gaq || []; + if ( Array.isArray(aa) ) { + while ( aa[0] ) { + gaq.push(aa.shift()); + } + } + })(); + window._gaq = gaq.qf = gaq; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_inpage_linkid.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_inpage_linkid.js new file mode 100644 index 00000000..e893ca95 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-analytics_inpage_linkid.js @@ -0,0 +1,28 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + window._gaq = window._gaq || { + push: function() { + } + }; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-ima.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-ima.js new file mode 100644 index 00000000..8359aa95 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/google-ima.js @@ -0,0 +1,672 @@ +/** + * + * Source below is based on Mozilla source code: + * https://searchfox.org/mozilla-central/rev/d317e93d9a59c9e4c06ada85fbff9f6a1ceaaad1/browser/extensions/webcompat/shims/google-ima.js + * + * Modifications to the original code below this comment: + * - Avoid JS syntax not supported by older browser versions + * - Add missing shim event + * - Modified to avoid jshint warnings as per uBO's config + * - Added `OmidVerificationVendor` to `ima` + * - Have `AdError.getInnerError()` return `null` + * - Have `AdDisplayContainer` constructor add DIV element to container + * - Added missing event dispatcher functionality + * - Corrected return type of `Ad.getUniversalAdIds()` + * - Corrected typo in `UniversalAdIdInfo.getAdIdValue()` method name + * - Corrected dispatch of LOAD event when preloading is enabled + * - Corrected dispatch of CONTENT_PAUSE/RESUME_REQUESTED events + * - Remove test for auto-play in requestAds(): always behave as if auto-play + * is disabled + * + * Related issue: + * - https://github.com/uBlockOrigin/uBlock-issues/issues/2158 + * - https://github.com/uBlockOrigin/uAssets/issues/30134 + * - https://github.com/uBlockOrigin/uAssets/issues/31018 + * +**/ + +/* eslint-disable indent */ + +'use strict'; + +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/** + * Bug 1713690 - Shim Google Interactive Media Ads ima3.js + * + * Many sites use ima3.js for ad bidding and placement, often in conjunction + * with Google Publisher Tags, Prebid.js and/or other scripts. This shim + * provides a stubbed-out version of the API which helps work around related + * site breakage, such as black bxoes where videos ought to be placed. + */ + +if (!window.google || !window.google.ima || !window.google.ima.VERSION) { + const VERSION = "3.764.0"; + const ima = {}; + + class AdDisplayContainer { + constructor(containerElement) { + const divElement = document.createElement("div"); + divElement.style.setProperty("display", "none", "important"); + divElement.style.setProperty("visibility", "collapse", "important"); + containerElement.appendChild(divElement); + } + destroy() {} + initialize() {} + } + + class ImaSdkSettings { + constructor() { + this.c = true; + this.f = {}; + this.i = false; + this.l = ""; + this.p = ""; + this.r = 0; + this.t = ""; + this.v = ""; + } + getCompanionBackfill() {} + getDisableCustomPlaybackForIOS10Plus() { + return this.i; + } + getFeatureFlags() { + return this.f; + } + getLocale() { + return this.l; + } + getNumRedirects() { + return this.r; + } + getPlayerType() { + return this.t; + } + getPlayerVersion() { + return this.v; + } + getPpid() { + return this.p; + } + isCookiesEnabled() { + return this.c; + } + setAutoPlayAdBreaks() {} + setCompanionBackfill() {} + setCookiesEnabled(c) { + this.c = !!c; + } + setDisableCustomPlaybackForIOS10Plus(i) { + this.i = !!i; + } + setFeatureFlags(f) { + this.f = f; + } + setLocale(l) { + this.l = l; + } + setNumRedirects(r) { + this.r = r; + } + setPlayerType(t) { + this.t = t; + } + setPlayerVersion(v) { + this.v = v; + } + setPpid(p) { + this.p = p; + } + setSessionId(/*s*/) {} + setVpaidAllowed(/*a*/) {} + setVpaidMode(/*m*/) {} + + // https://github.com/uBlockOrigin/uBlock-issues/issues/2265#issuecomment-1637094149 + getDisableFlashAds() { + } + setDisableFlashAds() { + } + } + ImaSdkSettings.CompanionBackfillMode = { + ALWAYS: "always", + ON_MASTER_AD: "on_master_ad", + }; + ImaSdkSettings.VpaidMode = { + DISABLED: 0, + ENABLED: 1, + INSECURE: 2, + }; + + class EventHandler { + constructor() { + this.listeners = new Map(); + } + + _dispatch(e) { + let listeners = this.listeners.get(e.type); + listeners = listeners ? Array.from(listeners.values()) : []; + for (const listener of listeners) { + try { + listener(e); + } catch (r) { + console.error(r); + } + } + } + + addEventListener(types, c, options, context) { + if (!Array.isArray(types)) { + types = [types]; + } + + for (const t of types) { + if (!this.listeners.has(t)) { + this.listeners.set(t, new Map()); + } + this.listeners.get(t).set(c, c.bind(context || this)); + } + } + + removeEventListener(types, c) { + if (!Array.isArray(types)) { + types = [types]; + } + + for (const t of types) { + const typeSet = this.listeners.get(t); + if (typeSet) { + typeSet.delete(c); + } + } + } + } + + class AdsLoader extends EventHandler { + constructor() { + super(); + this.settings = new ImaSdkSettings(); + } + contentComplete() {} + destroy() {} + getSettings() { + return this.settings; + } + getVersion() { + return VERSION; + } + requestAds(_r, _c) { + requestAnimationFrame(() => { + const { ADS_MANAGER_LOADED } = AdsManagerLoadedEvent.Type; + const event = new ima.AdsManagerLoadedEvent(ADS_MANAGER_LOADED, _r, _c); + this._dispatch(event); + }); + const error = new ima.AdError( + "adPlayError", + 1205, 1205, + "The browser prevented playback initiated without user interaction.", + _r, _c + ); + requestAnimationFrame( () => { + this._dispatch(new ima.AdErrorEvent(error)); + }); + } + } + + class AdsManager extends EventHandler { + constructor() { + super(); + this.volume = 1; + this._enablePreloading = false; + } + collapse() {} + configureAdsManager() {} + destroy() {} + discardAdBreak() {} + expand() {} + focus() {} + getAdSkippableState() { + return false; + } + getCuePoints() { + return [0]; + } + getCurrentAd() { + return currentAd; + } + getCurrentAdCuePoints() { + return []; + } + getRemainingTime() { + return 0; + } + getVolume() { + return this.volume; + } + init(/*w, h, m, e*/) { + if (this._enablePreloading) { + this._dispatch(new ima.AdEvent(AdEvent.Type.LOADED)); + } + } + isCustomClickTrackingUsed() { + return false; + } + isCustomPlaybackUsed() { + return false; + } + pause() {} + requestNextAdBreak() {} + resize(/*w, h, m*/) {} + resume() {} + setVolume(v) { + this.volume = v; + } + skip() {} + start() { + requestAnimationFrame(() => { + for (const type of [ + AdEvent.Type.LOADED, + AdEvent.Type.STARTED, + AdEvent.Type.CONTENT_PAUSE_REQUESTED, + AdEvent.Type.AD_BUFFERING, + AdEvent.Type.FIRST_QUARTILE, + AdEvent.Type.MIDPOINT, + AdEvent.Type.THIRD_QUARTILE, + AdEvent.Type.COMPLETE, + AdEvent.Type.ALL_ADS_COMPLETED, + AdEvent.Type.CONTENT_RESUME_REQUESTED, + ]) { + try { + this._dispatch(new ima.AdEvent(type)); + } catch (e) { + console.error(e); + } + } + }); + } + stop() {} + updateAdsRenderingSettings(/*s*/) {} + } + + class AdsRenderingSettings {} + + class AdsRequest { + setAdWillAutoPlay() {} + setAdWillPlayMuted() {} + setContinuousPlayback() {} + } + + class AdPodInfo { + getAdPosition() { + return 1; + } + getIsBumper() { + return false; + } + getMaxDuration() { + return -1; + } + getPodIndex() { + return 1; + } + getTimeOffset() { + return 0; + } + getTotalAds() { + return 1; + } + } + + class Ad { + constructor() { + this._pi = new AdPodInfo(); + } + getAdId() { + return ""; + } + getAdPodInfo() { + return this._pi; + } + getAdSystem() { + return ""; + } + getAdvertiserName() { + return ""; + } + getApiFramework() { + return null; + } + getCompanionAds() { + return []; + } + getContentType() { + return ""; + } + getCreativeAdId() { + return ""; + } + getCreativeId() { + return ""; + } + getDealId() { + return ""; + } + getDescription() { + return ""; + } + getDuration() { + return 8.5; + } + getHeight() { + return 0; + } + getMediaUrl() { + return null; + } + getMinSuggestedDuration() { + return -2; + } + getSkipTimeOffset() { + return -1; + } + getSurveyUrl() { + return null; + } + getTitle() { + return ""; + } + getTraffickingParameters() { + return {}; + } + getTraffickingParametersString() { + return ""; + } + getUiElements() { + return [""]; + } + getUniversalAdIdRegistry() { + return "unknown"; + } + getUniversalAdIds() { + return [new UniversalAdIdInfo()]; + } + getUniversalAdIdValue() { + return "unknown"; + } + getVastMediaBitrate() { + return 0; + } + getVastMediaHeight() { + return 0; + } + getVastMediaWidth() { + return 0; + } + getWidth() { + return 0; + } + getWrapperAdIds() { + return [""]; + } + getWrapperAdSystems() { + return [""]; + } + getWrapperCreativeIds() { + return [""]; + } + isLinear() { + return true; + } + isSkippable() { + return true; + } + } + + class CompanionAd { + getAdSlotId() { + return ""; + } + getContent() { + return ""; + } + getContentType() { + return ""; + } + getHeight() { + return 1; + } + getWidth() { + return 1; + } + } + + class AdError { + constructor(type, code, vast, message, request, context) { + this.errorCode = code; + this.message = message; + this.type = type; + this.adsRequest = request; + this.userRequestContext = context; + this.vastErrorCode = vast; + } + getErrorCode() { + return this.errorCode; + } + getInnerError() { + return null; + } + getMessage() { + return this.message; + } + getType() { + return this.type; + } + getVastErrorCode() { + return this.vastErrorCode; + } + toString() { + return `AdError ${this.errorCode}: ${this.message}`; + } + } + AdError.ErrorCode = {}; + AdError.Type = {}; + + const isEngadget = () => { + try { + for (const ctx of Object.values(window.vidible._getContexts())) { + const player = ctx.getPlayer(); + if (!player) { continue;} + const div = player.div; + if (!div) { continue; } + if (div.innerHTML.includes("www.engadget.com")) { + return true; + } + } + } catch { + } + return false; + }; + + const currentAd = isEngadget() ? undefined : new Ad(); + + class AdEvent { + constructor(type) { + this.type = type; + } + getAd() { + return currentAd; + } + getAdData() { + return {}; + } + } + AdEvent.Type = { + AD_BREAK_READY: "adBreakReady", + AD_BUFFERING: "adBuffering", + AD_CAN_PLAY: "adCanPlay", + AD_METADATA: "adMetadata", + AD_PROGRESS: "adProgress", + ALL_ADS_COMPLETED: "allAdsCompleted", + CLICK: "click", + COMPLETE: "complete", + CONTENT_PAUSE_REQUESTED: "contentPauseRequested", + CONTENT_RESUME_REQUESTED: "contentResumeRequested", + DURATION_CHANGE: "durationChange", + EXPANDED_CHANGED: "expandedChanged", + FIRST_QUARTILE: "firstQuartile", + IMPRESSION: "impression", + INTERACTION: "interaction", + LINEAR_CHANGE: "linearChange", + LINEAR_CHANGED: "linearChanged", + LOADED: "loaded", + LOG: "log", + MIDPOINT: "midpoint", + PAUSED: "pause", + RESUMED: "resume", + SKIPPABLE_STATE_CHANGED: "skippableStateChanged", + SKIPPED: "skip", + STARTED: "start", + THIRD_QUARTILE: "thirdQuartile", + USER_CLOSE: "userClose", + VIDEO_CLICKED: "videoClicked", + VIDEO_ICON_CLICKED: "videoIconClicked", + VIEWABLE_IMPRESSION: "viewable_impression", + VOLUME_CHANGED: "volumeChange", + VOLUME_MUTED: "mute", + }; + + class AdErrorEvent { + constructor(error) { + this.type = "adError"; + this.error = error; + } + getError() { + return this.error; + } + getUserRequestContext() { + return this.error?.userRequestContext || {}; + } + } + AdErrorEvent.Type = { + AD_ERROR: "adError", + }; + + const manager = new AdsManager(); + + class AdsManagerLoadedEvent { + constructor(type, request, context) { + this.type = type; + this.adsRequest = request; + this.userRequestContext = context; + } + getAdsManager(c, settings) { + if (settings && settings.enablePreloading) { + manager._enablePreloading = true; + } + return manager; + } + getUserRequestContext() { + return this.userRequestContext || {}; + } + } + AdsManagerLoadedEvent.Type = { + ADS_MANAGER_LOADED: "adsManagerLoaded", + }; + + class CustomContentLoadedEvent {} + CustomContentLoadedEvent.Type = { + CUSTOM_CONTENT_LOADED: "deprecated-event", + }; + + class CompanionAdSelectionSettings {} + CompanionAdSelectionSettings.CreativeType = { + ALL: "All", + FLASH: "Flash", + IMAGE: "Image", + }; + CompanionAdSelectionSettings.ResourceType = { + ALL: "All", + HTML: "Html", + IFRAME: "IFrame", + STATIC: "Static", + }; + CompanionAdSelectionSettings.SizeCriteria = { + IGNORE: "IgnoreSize", + SELECT_EXACT_MATCH: "SelectExactMatch", + SELECT_NEAR_MATCH: "SelectNearMatch", + }; + + class AdCuePoints { + getCuePoints() { + return []; + } + } + + class AdProgressData {} + + class UniversalAdIdInfo { + getAdIdRegistry() { + return ""; + } + getAdIdValue() { + return ""; + } + } + + Object.assign(ima, { + AdCuePoints, + AdDisplayContainer, + AdError, + AdErrorEvent, + AdEvent, + AdPodInfo, + AdProgressData, + AdsLoader, + AdsManager: manager, + AdsManagerLoadedEvent, + AdsRenderingSettings, + AdsRequest, + CompanionAd, + CompanionAdSelectionSettings, + CustomContentLoadedEvent, + gptProxyInstance: {}, + ImaSdkSettings, + OmidAccessMode: { + DOMAIN: "domain", + FULL: "full", + LIMITED: "limited", + }, + OmidVerificationVendor: { + 1: "OTHER", + 2: "GOOGLE", + GOOGLE: 2, + OTHER: 1 + }, + settings: new ImaSdkSettings(), + UiElements: { + AD_ATTRIBUTION: "adAttribution", + COUNTDOWN: "countdown", + }, + UniversalAdIdInfo, + VERSION, + ViewMode: { + FULLSCREEN: "fullscreen", + NORMAL: "normal", + }, + }); + + if (!window.google) { + window.google = {}; + } + + window.google.ima = ima; +} + +/* +ad.doubleclick.net bid.g.doubleclick.net ggpht.com google.co.uk google.com +googleads.g.doubleclick.net googleads4.g.doubleclick.net googleadservices.com +googlesyndication.com googleusercontent.com gstatic.com gvt1.com prod.google.com +pubads.g.doubleclick.net s0.2mdn.net static.doubleclick.net +surveys.g.doubleclick.net youtube.com ytimg.com +*/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/googlesyndication_adsbygoogle.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/googlesyndication_adsbygoogle.js new file mode 100644 index 00000000..49ebcc64 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/googlesyndication_adsbygoogle.js @@ -0,0 +1,75 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + self.adsbygoogle = self.adsbygoogle || { + loaded: true, + push: function() { + ; + } + }; + let adCount = 1; + const setupAd = (placeholder) => { + const fr = document.createElement('iframe'); + fr.id = `aswift_${adCount}`; + fr.setAttribute('name', fr.id); + adCount += 1; + placeholder.dataset.adsbygoogleStatus = 'loading'; + placeholder.dataset.adStatus = 'loading'; + placeholder.appendChild(fr); + fr.addEventListener('load', ( ) => { + placeholder.dataset.adsbygoogleStatus = 'done'; + placeholder.dataset.adStatus = 'filled'; + fr.dataset.loadComplete = 'true'; + }, { once: true }); + fr.contentWindow.location = 'data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+DQo8aHRtbD4NCiAgICA8aGVhZD48dGl0bGU+PC90aXRsZT48L2hlYWQ+DQogICAgPGJvZHk+PC9ib2R5Pg0KPC9odG1sPg=='; + }; + const process = ( ) => { + const phs = document.querySelectorAll('.adsbygoogle:not([data-ad-status][data-adsbygoogle-status])'); + for ( const ph of phs ) { + setupAd(ph); + } + }; + process(); + + let observer = new MutationObserver(( ) => { + if ( process.timer !== undefined ) { return; } + process.timer = self.requestAnimationFrame(( ) => { + process.timer = undefined; + process(); + },); + }); + observer.observe(document, { + attributes: true, + attributeFilter: [ 'class' ], + childList: true, + subtree: true, + }); + + setTimeout(( ) => { + observer.disconnect(); + observer = undefined; + }, 20000); +})(); + +/* +pagead2.googlesyndication.com/pagead/js/adsbygoogle.js,adsbygoogle-placeholder,adsbygoogleStatus,google_ad_channel,google_ad_client,google_ad_format,google_ad_frequency_hint,google_ad_height,google_ad_host,google_ad_host_channel,google_ad_modifications,google_ad_region,google_ad_resizable,google_ad_resize,google_ad_section,google_ad_semantic_area,google_ad_width,google_adbreak_test,google_ads_frame,google_ads_iframe,google_adtest,google_admob_interstitial_slot,google_admob_rewarded_slot,google_admob_ads_only,google-adsense-platform-account,google_adsense_settings,google_ama_config,google-ama-order-assurance,google_ama_settings,google_ama_state,google_apltlad,google_audio_sense,google-auto-placed-read-aloud-player-reserved,google_debug_params,google_full_width_responsive,google_full_width_responsive_allowed,google_image_requests,google_js_errors,google_js_reporting_queue,google_loader_features_used,google_llp,google_logging_queue,google_max_ad_content_rating,google_measure_js_timing,google_ml_rank,google_overlays,google_override_format,google_package,google_page_url,google_persistent_state_async,google_pgb_reactive,google_placement_id,google_prev_ad_formats_by_region,google_prev_ad_slotnames_by_region,google_reactive_ad_format,google_reactive_ads_global_state,google_resizing_height,google_resizing_width,google_responsive_auto_format,google_responsive_dummy_ad,google_responsive_formats,google_restrict_data_processing,google_rum_task_id_counter,google_safe_for_responsive_override,google_shadow_mode,google_srt,google_tag_for_under_age_of_consent,google_tag_origin,google_tag_partner,google_traffic_source,google_unique_id,googletag +*/ diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/googletagmanager_gtm.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/googletagmanager_gtm.js new file mode 100644 index 00000000..09f46589 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/googletagmanager_gtm.js @@ -0,0 +1,43 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const noopfn = function() { + }; + const w = window; + w.ga = w.ga || noopfn; + const dl = w.dataLayer; + if ( dl instanceof Object === false ) { return; } + if ( dl.hide instanceof Object && typeof dl.hide.end === 'function' ) { + dl.hide.end(); + } + if ( typeof dl.push === 'function' ) { + dl.push = function(o) { + if ( + o instanceof Object && + typeof o.eventCallback === 'function' + ) { + setTimeout(o.eventCallback, 1); + } + }; + } +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/googletagservices_gpt.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/googletagservices_gpt.js new file mode 100644 index 00000000..b151936f --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/googletagservices_gpt.js @@ -0,0 +1,154 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + // https://developers.google.com/doubleclick-gpt/reference + const noopfn = function() { + }.bind(); + const noopthisfn = function() { + return this; + }; + const noopnullfn = function() { + return null; + }; + const nooparrayfn = function() { + return []; + }; + const noopstrfn = function() { + return ''; + }; + // + const companionAdsService = { + addEventListener: noopthisfn, + enableSyncLoading: noopfn, + setRefreshUnfilledSlots: noopfn + }; + const contentService = { + addEventListener: noopthisfn, + setContent: noopfn + }; + const PassbackSlot = function() { + }; + let p = PassbackSlot.prototype; + p.display = noopfn; + p.get = noopnullfn; + p.set = noopthisfn; + p.setClickUrl = noopthisfn; + p.setTagForChildDirectedTreatment = noopthisfn; + p.setTargeting = noopthisfn; + p.updateTargetingFromMap = noopthisfn; + const pubAdsService = { + addEventListener: noopthisfn, + clear: noopfn, + clearCategoryExclusions: noopthisfn, + clearTagForChildDirectedTreatment: noopthisfn, + clearTargeting: noopthisfn, + collapseEmptyDivs: noopfn, + defineOutOfPagePassback: function() { return new PassbackSlot(); }, + definePassback: function() { return new PassbackSlot(); }, + disableInitialLoad: noopfn, + display: noopfn, + enableAsyncRendering: noopfn, + enableLazyLoad: noopfn, + enableSingleRequest: noopfn, + enableSyncRendering: noopfn, + enableVideoAds: noopfn, + get: noopnullfn, + getAttributeKeys: nooparrayfn, + getTargeting: nooparrayfn, + getTargetingKeys: nooparrayfn, + getSlots: nooparrayfn, + refresh: noopfn, + removeEventListener: noopfn, + set: noopthisfn, + setCategoryExclusion: noopthisfn, + setCentering: noopfn, + setCookieOptions: noopthisfn, + setForceSafeFrame: noopthisfn, + setLocation: noopthisfn, + setPublisherProvidedId: noopthisfn, + setPrivacySettings: noopthisfn, + setRequestNonPersonalizedAds: noopthisfn, + setSafeFrameConfig: noopthisfn, + setTagForChildDirectedTreatment: noopthisfn, + setTargeting: noopthisfn, + setVideoContent: noopthisfn, + updateCorrelator: noopfn + }; + const SizeMappingBuilder = function() { + }; + p = SizeMappingBuilder.prototype; + p.addSize = noopthisfn; + p.build = noopnullfn; + const Slot = function() { + }; + p = Slot.prototype; + p.addService = noopthisfn; + p.clearCategoryExclusions = noopthisfn; + p.clearTargeting = noopthisfn; + p.defineSizeMapping = noopthisfn; + p.get = noopnullfn; + p.getAdUnitPath = nooparrayfn; + p.getAttributeKeys = nooparrayfn; + p.getCategoryExclusions = nooparrayfn; + p.getDomId = noopstrfn; + p.getResponseInformation = noopnullfn; + p.getSlotElementId = noopstrfn; + p.getSlotId = noopthisfn; + p.getTargeting = nooparrayfn; + p.getTargetingKeys = nooparrayfn; + p.set = noopthisfn; + p.setCategoryExclusion = noopthisfn; + p.setClickUrl = noopthisfn; + p.setCollapseEmptyDiv = noopthisfn; + p.setTargeting = noopthisfn; + p.updateTargetingFromMap = noopthisfn; + // + const gpt = window.googletag || {}; + const cmd = gpt.cmd || []; + gpt.apiReady = true; + gpt.cmd = []; + gpt.cmd.push = function(a) { + try { + a(); + } catch (ex) { + } + return 1; + }; + gpt.companionAds = function() { return companionAdsService; }; + gpt.content = function() { return contentService; }; + gpt.defineOutOfPageSlot = function() { return new Slot(); }; + gpt.defineSlot = function() { return new Slot(); }; + gpt.destroySlots = noopfn; + gpt.disablePublisherConsole = noopfn; + gpt.display = noopfn; + gpt.enableServices = noopfn; + gpt.getVersion = noopstrfn; + gpt.pubads = function() { return pubAdsService; }; + gpt.pubadsReady = true; + gpt.setAdIframeTitle = noopfn; + gpt.sizeMapping = function() { return new SizeMappingBuilder(); }; + window.googletag = gpt; + while ( cmd.length !== 0 ) { + gpt.cmd.push(cmd.shift()); + } +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/hd-main.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/hd-main.js new file mode 100644 index 00000000..149d6038 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/hd-main.js @@ -0,0 +1,46 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const l = {}; + const noopfn = function() { + }; + const props = [ + "$j","Ad","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Nj","Oc","Pc","Pe", + "Qc","Qe","Rc","Re","Ri","Sc","Tc","Uc","Vc","Wc","Wg","Xc","Xg","Yc","Yd", + "ad","ae","bd","bf","cd","dd","ed","ef","ek","fd","fg","fh","fk","gd","hd", + "ig","ij","jd","kd","ke","ld","md","mi","nd","od","oh","pd","pf","qd","rd", + "sd","td","ud","vd","wd","wg","xd","xh","yd","zd", + "$d","$e","$k","Ae","Af","Aj","Be","Ce","De","Ee","Ek","Eo","Ep","Fe","Fo", + "Ge","Gh","Hk","Ie","Ip","Je","Ke","Kk","Kq","Le","Lh","Lk","Me","Mm","Ne", + "Oe","Pe","Qe","Re","Rp","Se","Te","Ue","Ve","Vp","We","Xd","Xe","Yd","Ye", + "Zd","Ze","Zf","Zk","ae","af","al","be","bf","bg","ce","cp","df","di","ee", + "ef","fe","ff","gf","gm","he","hf","ie","je","jf","ke","kf","kl","le","lf", + "lk","mf","mg","mn","nf","oe","of","pe","pf","pg","qe","qf","re","rf","se", + "sf","te","tf","ti","ue","uf","ve","vf","we","wf","wg","wi","xe","ye","yf", + "yk","yl","ze","zf","zk" + ]; + for ( let i = 0; i < props.length; i++ ) { + l[props[i]] = noopfn; + } + window.L = window.J = l; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nitropay_ads.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nitropay_ads.js new file mode 100644 index 00000000..ee966019 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nitropay_ads.js @@ -0,0 +1,32 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + if ( window.nitroAds ) { return; } + const noopfn = function() { + ; + }.bind(); + const nitroAds = { + createAd: noopfn, + queue: [], + }; + window.nitroAds = nitroAds; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nobab.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nobab.js new file mode 100644 index 00000000..32a29833 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nobab.js @@ -0,0 +1,87 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const signatures = [ + [ 'blockadblock' ], + [ 'babasbm' ], + [ /getItem\('babn'\)/ ], + [ + 'getElementById', + 'String.fromCharCode', + 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789', + 'charAt', + 'DOMContentLoaded', + 'AdBlock', + 'addEventListener', + 'doScroll', + 'fromCharCode', + '<<2|r>>4', + 'sessionStorage', + 'clientWidth', + 'localStorage', + 'Math', + 'random' + ], + ]; + const check = function(s) { + for ( let i = 0; i < signatures.length; i++ ) { + const tokens = signatures[i]; + let match = 0; + for ( let j = 0; j < tokens.length; j++ ) { + const token = tokens[j]; + const pos = token instanceof RegExp + ? s.search(token) + : s.indexOf(token); + if ( pos !== -1 ) { match += 1; } + } + if ( (match / tokens.length) >= 0.8 ) { return true; } + } + return false; + }; + window.eval = new Proxy(window.eval, { // jshint ignore: line + apply: function(target, thisArg, args) { + const a = args[0]; + if ( typeof a !== 'string' || !check(a) ) { + return target.apply(thisArg, args); + } + if ( document.body ) { + document.body.style.removeProperty('visibility'); + } + let el = document.getElementById('babasbmsgx'); + if ( el ) { + el.parentNode.removeChild(el); + } + } + }); + window.setTimeout = new Proxy(window.setTimeout, { + apply: function(target, thisArg, args) { + const a = args[0]; + if ( + typeof a !== 'string' || + /\.bab_elementid.$/.test(a) === false + ) { + return target.apply(thisArg, args); + } + } + }); +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nobab2.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nobab2.js new file mode 100644 index 00000000..ea3b2102 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nobab2.js @@ -0,0 +1,42 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2021-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const script = document.currentScript; + if ( script === null ) { return; } + const src = script.src; + if ( typeof src !== 'string' ) { return; } + // The scriplet is meant to act ONLY when it's being used as a redirection + // for specific domains. + const re = new RegExp( + '^https?://[\\w-]+\\.(' + + [ + 'adclixx\\.net', + 'adnetasia\\.com', + 'adtrackers\\.net', + 'bannertrack\\.net', + ].join('|') + + ')/.' + ); + if ( re.test(src) === false ) { return; } + window.nH7eXzOsG = 858; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noeval-silent.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noeval-silent.js new file mode 100644 index 00000000..cfe6e3b0 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noeval-silent.js @@ -0,0 +1,28 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + window.eval = new Proxy(window.eval, { // jshint ignore: line + apply: function() { + } + }); +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noeval.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noeval.js new file mode 100644 index 00000000..e1f2a748 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noeval.js @@ -0,0 +1,30 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const log = console.log.bind(console); + window.eval = new Proxy(window.eval, { // jshint ignore: line + apply: function(target, thisArg, args) { + log(`Document tried to eval... ${args[0]}\n`); + } + }); +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nofab.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nofab.js new file mode 100644 index 00000000..9e50e0b7 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/nofab.js @@ -0,0 +1,67 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const noopfn = function() { + }; + const Fab = function() {}; + Fab.prototype.check = noopfn; + Fab.prototype.clearEvent = noopfn; + Fab.prototype.emitEvent = noopfn; + Fab.prototype.on = function(a, b) { + if ( !a ) { b(); } + return this; + }; + Fab.prototype.onDetected = function() { + return this; + }; + Fab.prototype.onNotDetected = function(a) { + a(); + return this; + }; + Fab.prototype.setOption = noopfn; + Fab.prototype.options = { + set: noopfn, + get: noopfn, + }; + const fab = new Fab(); + const getSetFab = { + get: function() { return Fab; }, + set: function() {} + }; + const getsetfab = { + get: function() { return fab; }, + set: function() {} + }; + if ( window.hasOwnProperty('FuckAdBlock') ) { window.FuckAdBlock = Fab; } + else { Object.defineProperty(window, 'FuckAdBlock', getSetFab); } + if ( window.hasOwnProperty('BlockAdBlock') ) { window.BlockAdBlock = Fab; } + else { Object.defineProperty(window, 'BlockAdBlock', getSetFab); } + if ( window.hasOwnProperty('SniffAdBlock') ) { window.SniffAdBlock = Fab; } + else { Object.defineProperty(window, 'SniffAdBlock', getSetFab); } + if ( window.hasOwnProperty('fuckAdBlock') ) { window.fuckAdBlock = fab; } + else { Object.defineProperty(window, 'fuckAdBlock', getsetfab); } + if ( window.hasOwnProperty('blockAdBlock') ) { window.blockAdBlock = fab; } + else { Object.defineProperty(window, 'blockAdBlock', getsetfab); } + if ( window.hasOwnProperty('sniffAdBlock') ) { window.sniffAdBlock = fab; } + else { Object.defineProperty(window, 'sniffAdBlock', getsetfab); } +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-0.1s.mp3 b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-0.1s.mp3 new file mode 100644 index 00000000..147d71b0 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-0.1s.mp3 differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-0.5s.mp3 b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-0.5s.mp3 new file mode 100644 index 00000000..b82866bb Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-0.5s.mp3 differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-1s.mp4 b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-1s.mp4 new file mode 100644 index 00000000..5689d4a3 Binary files /dev/null and b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-1s.mp4 differ diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vast2.xml b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vast2.xml new file mode 100644 index 00000000..9bbe8d3c --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vast2.xml @@ -0,0 +1 @@ + diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vast3.xml b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vast3.xml new file mode 100644 index 00000000..cc1185f2 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vast3.xml @@ -0,0 +1 @@ + diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vast4.xml b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vast4.xml new file mode 100644 index 00000000..bd408f56 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vast4.xml @@ -0,0 +1 @@ + diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vmap1.xml b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vmap1.xml new file mode 100644 index 00000000..acd6fb83 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop-vmap1.xml @@ -0,0 +1 @@ + diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.css b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.css new file mode 100644 index 00000000..79a9626b --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.css @@ -0,0 +1 @@ +/* */ diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.html b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.html new file mode 100644 index 00000000..8aaae14d --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.html @@ -0,0 +1,5 @@ + + + + + diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.js new file mode 100644 index 00000000..b977b08a --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.js @@ -0,0 +1,3 @@ +(function() { + 'use strict'; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.json b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.json new file mode 100644 index 00000000..9e26dfee --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.txt b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.txt new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/noop.txt @@ -0,0 +1 @@ + diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/outbrain-widget.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/outbrain-widget.js new file mode 100644 index 00000000..10ba6053 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/outbrain-widget.js @@ -0,0 +1,72 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const noopfn = function() { + }; + const obr = {}; + const methods = [ + 'callClick', + 'callLoadMore', + 'callRecs', + 'callUserZapping', + 'callWhatIs', + 'cancelRecommendation', + 'cancelRecs', + 'closeCard', + 'closeModal', + 'closeTbx', + 'errorInjectionHandler', + 'getCountOfRecs', + 'getStat', + 'imageError', + 'manualVideoClicked', + 'onOdbReturn', + 'onVideoClick', + 'pagerLoad', + 'recClicked', + 'refreshSpecificWidget', + 'renderSpaWidgets', + 'refreshWidget', + 'reloadWidget', + 'researchWidget', + 'returnedError', + 'returnedHtmlData', + 'returnedIrdData', + 'returnedJsonData', + 'scrollLoad', + 'showDescription', + 'showRecInIframe', + 'userZappingMessage', + 'zappingFormAction' + ]; + obr.extern = { + video: { + getVideoRecs: noopfn, + videoClicked: noopfn + } + }; + methods.forEach(function(a) { + obr.extern[a] = noopfn; + }); + window.OBR = window.OBR || obr; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/popads-dummy.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/popads-dummy.js new file mode 100644 index 00000000..0ca0b1ef --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/popads-dummy.js @@ -0,0 +1,30 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + delete window.PopAds; + delete window.popns; + Object.defineProperties(window, { + PopAds: { value: {} }, + popns: { value: {} } + }); +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/popads.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/popads.js new file mode 100644 index 00000000..df86e972 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/popads.js @@ -0,0 +1,40 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const magic = String.fromCharCode(Date.now() % 26 + 97) + + Math.floor(Math.random() * 982451653 + 982451653).toString(36); + const oe = window.onerror; + window.onerror = function(msg, src, line, col, error) { + if ( typeof msg === 'string' && msg.indexOf(magic) !== -1 ) { return true; } + if ( oe instanceof Function ) { + return oe(msg, src, line, col, error); + } + }.bind(); + const throwMagic = function() { throw new ReferenceError(magic); }; + delete window.PopAds; + delete window.popns; + Object.defineProperties(window, { + PopAds: { set: throwMagic }, + popns: { set: throwMagic } + }); +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/prebid-ads.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/prebid-ads.js new file mode 100644 index 00000000..f3b2dc67 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/prebid-ads.js @@ -0,0 +1,26 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2022-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + window.canRunAds = true; + window.isAdBlockActive = false; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/scorecardresearch_beacon.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/scorecardresearch_beacon.js new file mode 100644 index 00000000..5ca7203a --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/scorecardresearch_beacon.js @@ -0,0 +1,31 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2019-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + window.COMSCORE = { + purge: function() { + window._comscore = []; + }, + beacon: function() { + } + }; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/sensors-analytics.js b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/sensors-analytics.js new file mode 100644 index 00000000..74049ec4 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/web_accessible_resources/sensors-analytics.js @@ -0,0 +1,32 @@ +/******************************************************************************* + + uBlock Origin - a browser extension to block requests. + Copyright (C) 2025-present Raymond Hill + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + + Home: https://github.com/gorhill/uBlock +*/ + +(function() { + 'use strict'; + const noopfn = function() { + }; + window.sensorsDataAnalytic201505 = { + init: noopfn, + quick: noopfn, + register: noopfn, + track: noopfn, + }; +})(); diff --git a/android/app/src/main/assets/extensions/ublock_origin/whitelist.html b/android/app/src/main/assets/extensions/ublock_origin/whitelist.html new file mode 100644 index 00000000..ca207ba1 --- /dev/null +++ b/android/app/src/main/assets/extensions/ublock_origin/whitelist.html @@ -0,0 +1,63 @@ + + + + + + +uBlock — Whitelist + + + + + + + + + + + + + + + +
    +
    +

    + + +   + + +

    +

    +

    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/android/app/src/main/assets/notices/kiss_translator.txt b/android/app/src/main/assets/notices/kiss_translator.txt new file mode 100644 index 00000000..6217b858 --- /dev/null +++ b/android/app/src/main/assets/notices/kiss_translator.txt @@ -0,0 +1,22 @@ +KISS Translator 2.0.29 + +Dao Browser Android redistributes the unmodified public Firefox extension +artifact under the GNU General Public License v3.0 only. + +Project and corresponding source: +https://github.com/fishjar/kiss-translator + +Mozilla Add-ons listing: +https://addons.mozilla.org/firefox/addon/kiss-translator/ + +Artifact: +https://addons.mozilla.org/firefox/downloads/file/4937634/kiss_translator-2.0.29.xpi + +SHA-256: +0316f026b1b0c3d171262b3f4f369e34013abdf1d1bbe9d348290c3db53f4092 + +License: +GNU General Public License v3.0 only + +The full license text is packaged at +assets/notices/kiss_translator_license.txt. diff --git a/android/app/src/main/assets/notices/kiss_translator_license.txt b/android/app/src/main/assets/notices/kiss_translator_license.txt new file mode 100644 index 00000000..f288702d --- /dev/null +++ b/android/app/src/main/assets/notices/kiss_translator_license.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Copyright (C) + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/android/app/src/main/assets/notices/ublock_origin.txt b/android/app/src/main/assets/notices/ublock_origin.txt new file mode 100644 index 00000000..fba802b0 --- /dev/null +++ b/android/app/src/main/assets/notices/ublock_origin.txt @@ -0,0 +1,21 @@ +uBlock Origin 1.72.2 + +Dao Browser Android redistributes the Firefox extension under the GNU General Public License 3.0. +The bundled GeckoView compatibility variant removes only the unsupported +`menus` permission and `commands` manifest entry; blocking code and filter +assets remain from the official artifact. + +Project and corresponding source: +https://github.com/gorhill/uBlock + +Release: +https://github.com/gorhill/uBlock/releases/tag/1.72.2 + +Artifact: +uBlock0_1.72.2.firefox.signed.xpi + +SHA-256: +40c315b0da7871868155ecfae7a50a58dfa0920aebd865e008214986f1b7c578 + +The full license text is packaged with the extension at +assets/extensions/ublock_origin/LICENSE.txt. diff --git a/android/app/src/main/java/com/msgbyte/dao/DaoApplication.kt b/android/app/src/main/java/com/msgbyte/dao/DaoApplication.kt new file mode 100644 index 00000000..eefc7e52 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/DaoApplication.kt @@ -0,0 +1,50 @@ +package com.msgbyte.dao + +import android.app.Application +import com.msgbyte.dao.browser.BrowserLibraryRepository +import com.msgbyte.dao.browser.BrowserPreferences +import com.msgbyte.dao.browser.BrowserRuntime +import com.msgbyte.dao.browser.AmoCatalogRepository +import com.msgbyte.dao.browser.ExtensionRepository +import com.msgbyte.dao.browser.SystemDownloadRepository +import mozilla.components.browser.engine.gecko.GeckoEngine +import org.mozilla.geckoview.GeckoRuntime +import org.mozilla.geckoview.GeckoRuntimeSettings + +class DaoApplication : Application() { + val amoCatalogRepository by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + AmoCatalogRepository() + } + + val browserLibrary by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + BrowserLibraryRepository(applicationContext) + } + + val downloadRepository by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + SystemDownloadRepository(applicationContext) + } + + val browserPreferences by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + BrowserPreferences(applicationContext) + } + + private val geckoRuntime by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + GeckoRuntime.create( + applicationContext, + GeckoRuntimeSettings.Builder() + .remoteDebuggingEnabled(false) + .build(), + ) + } + + val browserRuntime = BrowserRuntime( + createEngine = { GeckoEngine(applicationContext, runtime = geckoRuntime) }, + setRemoteDebugging = { enabled -> + geckoRuntime.settings.setRemoteDebuggingEnabled(enabled) + }, + ) + + val extensionRepository by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + ExtensionRepository(browserRuntime.engine) + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/MainActivity.kt b/android/app/src/main/java/com/msgbyte/dao/MainActivity.kt new file mode 100644 index 00000000..3b90d341 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/MainActivity.kt @@ -0,0 +1,136 @@ +package com.msgbyte.dao + +import android.os.Bundle +import androidx.activity.ComponentActivity +import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge +import androidx.activity.viewModels +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.SideEffect +import androidx.compose.ui.platform.LocalConfiguration +import androidx.core.view.WindowCompat +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.lifecycle.viewmodel.initializer +import androidx.lifecycle.viewmodel.viewModelFactory +import com.msgbyte.dao.browser.AmoStoreViewModel +import com.msgbyte.dao.browser.BrowserPreferenceState +import com.msgbyte.dao.browser.BrowserSessionViewModel +import com.msgbyte.dao.browser.NavigationTargetResolver +import com.msgbyte.dao.ui.BrowserScreen +import com.msgbyte.dao.ui.theme.DaoTheme +import kotlinx.coroutines.launch +import mozilla.components.concept.engine.EngineSession + +class MainActivity : ComponentActivity() { + private val browserSessionViewModel by viewModels() + private val amoStoreViewModel by viewModels { + viewModelFactory { + initializer { + val daoApplication = application as DaoApplication + AmoStoreViewModel( + source = daoApplication.amoCatalogRepository, + locale = daoApplication.resources.configuration.locales[0].toLanguageTag(), + geckoMajor = daoApplication.browserRuntime.engine.version.major, + ) + } + } + } + private var darkThemeEnabled = false + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + enableEdgeToEdge() + val application = application as DaoApplication + setContent { + val preferences = application.browserPreferences + val preferenceState by preferences.state.collectAsStateWithLifecycle( + initialValue = BrowserPreferenceState(), + ) + val browserState by browserSessionViewModel.controller.state.collectAsStateWithLifecycle() + val resolver = remember(preferenceState.searchEngine) { + NavigationTargetResolver(preferenceState.searchEngine.searchUrl) + } + val scope = rememberCoroutineScope() + val storeLocale = LocalConfiguration.current.locales[0].toLanguageTag() + LaunchedEffect(storeLocale) { + amoStoreViewModel.updateLocale(storeLocale) + } + LaunchedEffect( + preferenceState.fontScale, + preferenceState.trackingProtectionEnabled, + browserState.tabs.map { it.engineState.engineSession }, + ) { + val policy = if (preferenceState.trackingProtectionEnabled) { + EngineSession.TrackingProtectionPolicy.recommended() + } else { + EngineSession.TrackingProtectionPolicy.none() + } + application.browserRuntime.engine.settings.fontSizeFactor = + preferenceState.fontScale.factor + application.browserRuntime.engine.settings.trackingProtectionPolicy = policy + browserState.tabs.forEach { tab -> + tab.engineState.engineSession?.updateTrackingProtection(policy) + } + } + LaunchedEffect(preferenceState.remoteDebuggingEnabled) { + application.browserRuntime.setRemoteDebuggingEnabled( + preferenceState.remoteDebuggingEnabled, + ) + } + SideEffect { + darkThemeEnabled = preferenceState.darkTheme + window.decorView.post(::updateSystemBarAppearance) + } + DaoTheme(darkTheme = preferenceState.darkTheme) { + BrowserScreen( + engine = application.browserRuntime.engine, + controller = browserSessionViewModel.controller, + thumbnailRepository = browserSessionViewModel.thumbnailRepository, + library = application.browserLibrary, + downloads = application.downloadRepository, + extensions = application.extensionRepository, + amoStoreViewModel = amoStoreViewModel, + resolver = resolver, + preferences = preferenceState, + onDarkThemeChange = { enabled -> + scope.launch { preferences.setDarkTheme(enabled) } + }, + onFontScaleChange = { value -> scope.launch { preferences.setFontScale(value) } }, + onSearchEngineChange = { value -> scope.launch { preferences.setSearchEngine(value) } }, + onTrackingProtectionChange = { enabled -> + scope.launch { preferences.setTrackingProtectionEnabled(enabled) } + }, + onDefaultPrivateBrowsingChange = { enabled -> + scope.launch { preferences.setDefaultPrivateBrowsing(enabled) } + }, + onRemoteDebuggingChange = { enabled -> + scope.launch { preferences.setRemoteDebuggingEnabled(enabled) } + }, + onEnableRemoteDebuggingWithAcknowledgement = { + scope.launch { preferences.enableRemoteDebuggingWithAcknowledgement() } + }, + ) + } + } + } + + override fun onWindowFocusChanged(hasFocus: Boolean) { + super.onWindowFocusChanged(hasFocus) + if (hasFocus) updateSystemBarAppearance() + } + + override fun onPause() { + browserSessionViewModel.controller.flushRegularSessionStates() + super.onPause() + } + + private fun updateSystemBarAppearance() { + WindowCompat.getInsetsController(window, window.decorView).apply { + isAppearanceLightStatusBars = !darkThemeEnabled + isAppearanceLightNavigationBars = !darkThemeEnabled + } + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/about/AboutAppInfo.kt b/android/app/src/main/java/com/msgbyte/dao/about/AboutAppInfo.kt new file mode 100644 index 00000000..a295fd1d --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/about/AboutAppInfo.kt @@ -0,0 +1,47 @@ +package com.msgbyte.dao.about + +import android.content.Context +import androidx.annotation.StringRes +import com.msgbyte.dao.R + +data class AboutAppInfo( + val appVersion: String, + val engineVersion: String, +) + +enum class BundledLicense( + @get:StringRes val titleRes: Int, + val version: String, + @get:StringRes val licenseRes: Int, + val assetPath: String, +) { + U_BLOCK_ORIGIN( + titleRes = R.string.ublock_origin_name, + version = "1.72.2", + licenseRes = R.string.gpl_v3_license, + assetPath = "extensions/ublock_origin/LICENSE.txt", + ), + KISS_TRANSLATOR( + titleRes = R.string.kiss_translator_name, + version = "2.0.29", + licenseRes = R.string.gpl_v3_only_license, + assetPath = "notices/kiss_translator_license.txt", + ), +} + +fun readAboutAppInfo(context: Context): AboutAppInfo { + val version = runCatching { + context.packageManager.getPackageInfo(context.packageName, 0).versionName + }.getOrNull().orEmpty() + return AboutAppInfo( + appVersion = version.ifBlank { context.getString(R.string.unknown_value) }, + engineVersion = context.getString(R.string.mozilla_components_version), + ) +} + +fun readAssetText(context: Context, assetPath: String): Result = runCatching { + context.assets.open(assetPath).bufferedReader().use { it.readText() } +} + +fun readBundledLicenseText(context: Context, license: BundledLicense): Result = + readAssetText(context, license.assetPath) diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/AmoCatalogRepository.kt b/android/app/src/main/java/com/msgbyte/dao/browser/AmoCatalogRepository.kt new file mode 100644 index 00000000..3128f310 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/AmoCatalogRepository.kt @@ -0,0 +1,161 @@ +package com.msgbyte.dao.browser + +import java.net.HttpURLConnection +import java.net.URL +import java.net.URLEncoder +import java.nio.charset.StandardCharsets +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import org.json.JSONArray +import org.json.JSONObject + +data class AmoAddon( + val id: Int, + val guid: String, + val slug: String, + val name: String, + val summary: String, + val author: String, + val iconUrl: String?, + val rating: Double?, + val version: String, + val detailUrl: String, + val installUrl: String, +) + +data class AmoCatalogPage( + val items: List, + val nextPage: Int?, +) + +interface AmoCatalogSource { + suspend fun search(query: String, page: Int, locale: String, geckoMajor: Int): AmoCatalogPage +} + +class AmoCatalogRepository( + private val fetch: suspend (URL) -> String = { url -> fetchJson(url) }, +) : AmoCatalogSource { + override suspend fun search( + query: String, + page: Int, + locale: String, + geckoMajor: Int, + ): AmoCatalogPage { + val url = buildSearchUrl(query, page, locale, geckoMajor) + return parsePage(fetch(url), locale) + } + + private fun buildSearchUrl( + query: String, + page: Int, + locale: String, + geckoMajor: Int, + ): URL { + val trimmedQuery = query.trim() + val parameters = mutableListOf( + "page=${page.coerceAtLeast(1)}", + "lang=${encode(locale)}", + "app=android", + "appversion=${geckoMajor}.0", + "type=extension", + ) + if (trimmedQuery.isBlank()) { + parameters += "sort=recommended" + } else { + parameters += "q=${encode(trimmedQuery)}" + } + return URL("https://addons.mozilla.org/api/v5/addons/search/?${parameters.joinToString("&")}") + } + + private fun parsePage(body: String, locale: String): AmoCatalogPage { + val response = JSONObject(body) + val items = buildList { + val results = response.optJSONArray("results") ?: JSONArray() + for (index in 0 until results.length()) { + val addon = results.optJSONObject(index) ?: continue + parseAddon(addon, locale)?.let(::add) + } + } + return AmoCatalogPage(items, parseNextPage(response.optString("next"))) + } + + private fun parseAddon(addon: JSONObject, locale: String): AmoAddon? { + val guid = addon.optString("guid").trim() + val currentVersion = addon.optJSONObject("current_version") ?: return null + val version = currentVersion.optString("version").trim() + val file = currentVersion.optJSONObject("file") ?: return null + val installUrl = file.optString("url").trim() + if ( + guid.isBlank() || + version.isBlank() || + file.optString("status") != "public" || + !isHttpsXpiUrl(installUrl) + ) { + return null + } + val authors = addon.optJSONArray("authors") ?: JSONArray() + val firstAuthor = authors.optJSONObject(0)?.optString("name").orEmpty() + val rating = addon.optJSONObject("ratings") + ?.takeIf { it.has("average") && !it.isNull("average") } + ?.optDouble("average") + return AmoAddon( + id = addon.optInt("id"), + guid = guid, + slug = addon.optString("slug"), + name = localizedString(addon.opt("name"), locale), + summary = localizedString(addon.opt("summary"), locale), + author = firstAuthor, + iconUrl = addon.optString("icon_url").takeIf(String::isNotBlank), + rating = rating, + version = version, + detailUrl = addon.optString("url"), + installUrl = installUrl, + ) + } + + private fun localizedString(value: Any?, locale: String): String { + if (value is String) return value.takeIf(String::isNotBlank).orEmpty() + val translated = value as? JSONObject ?: return "" + translated.optString(locale).takeIf(String::isNotBlank)?.let { return it } + translated.optString("en-US").takeIf(String::isNotBlank)?.let { return it } + return translated.keys().asSequence() + .map { translated.optString(it) } + .firstOrNull(String::isNotBlank) + .orEmpty() + } + + private fun parseNextPage(next: String): Int? { + if (next.isBlank()) return null + val page = runCatching { + URL(next).query.split("&") + .firstOrNull { it.substringBefore('=') == "page" } + ?.substringAfter('=') + ?.toIntOrNull() + }.getOrNull() + return page?.takeIf { it > 0 } + } + + private fun isHttpsXpiUrl(value: String): Boolean = runCatching { + URL(value) + }.getOrNull()?.let { url -> + url.protocol == "https" && + url.host.isNotBlank() && + url.path.endsWith(".xpi") + } == true + + private fun encode(value: String): String = URLEncoder.encode(value, StandardCharsets.UTF_8.name()) + + private companion object { + suspend fun fetchJson(url: URL): String = withContext(Dispatchers.IO) { + val connection = url.openConnection() as HttpURLConnection + try { + connection.connectTimeout = 10_000 + connection.readTimeout = 10_000 + connection.setRequestProperty("Accept", "application/json") + connection.inputStream.bufferedReader().use { it.readText() } + } finally { + connection.disconnect() + } + } + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/AmoStoreViewModel.kt b/android/app/src/main/java/com/msgbyte/dao/browser/AmoStoreViewModel.kt new file mode 100644 index 00000000..77b68cad --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/AmoStoreViewModel.kt @@ -0,0 +1,125 @@ +package com.msgbyte.dao.browser + +import androidx.lifecycle.ViewModel +import androidx.lifecycle.viewModelScope +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.launch + +sealed interface AmoStoreState { + data object Loading : AmoStoreState + + data class Content( + val query: String, + val items: List, + val nextPage: Int?, + val isLoadingNext: Boolean = false, + ) : AmoStoreState + + data class Empty( + val query: String, + ) : AmoStoreState + + data class Failed( + val query: String, + val error: Throwable, + ) : AmoStoreState +} + +class AmoStoreViewModel( + private val source: AmoCatalogSource, + locale: String, + private val geckoMajor: Int, + private val workerScope: CoroutineScope? = null, +) : ViewModel() { + private val mutableState = MutableStateFlow(AmoStoreState.Loading) + private var query = "" + private var locale = locale + private var requestGeneration = 0L + + val state: StateFlow = mutableState.asStateFlow() + + init { + search("") + } + + fun search(query: String) { + this.query = query.trim() + loadReplacement() + } + + fun retry() { + loadReplacement() + } + + fun updateLocale(locale: String) { + if (this.locale == locale) return + this.locale = locale + loadReplacement() + } + + fun loadNext() { + val content = mutableState.value as? AmoStoreState.Content ?: return + val nextPage = content.nextPage ?: return + if (content.isLoadingNext) return + val generation = requestGeneration + val requestQuery = content.query + val requestLocale = locale + mutableState.value = content.copy(isLoadingNext = true) + launch { + try { + val page = source.search(requestQuery, nextPage, requestLocale, geckoMajor) + if (generation != requestGeneration) return@launch + val current = mutableState.value as? AmoStoreState.Content ?: return@launch + val combined = (current.items + page.items).distinctBy(AmoAddon::guid) + mutableState.value = current.copy( + items = combined, + nextPage = page.nextPage, + isLoadingNext = false, + ) + } catch (error: Throwable) { + if (error is CancellationException) throw error + if (generation == requestGeneration) { + val current = mutableState.value as? AmoStoreState.Content ?: return@launch + mutableState.value = current.copy(isLoadingNext = false) + } + } + } + } + + private fun loadReplacement() { + val generation = ++requestGeneration + val requestQuery = query + val requestLocale = locale + mutableState.value = AmoStoreState.Loading + launch { + try { + val page = source.search(requestQuery, 1, requestLocale, geckoMajor) + if (generation != requestGeneration) return@launch + mutableState.value = if (page.items.isEmpty()) { + AmoStoreState.Empty(requestQuery) + } else { + AmoStoreState.Content( + query = requestQuery, + items = page.items.distinctBy(AmoAddon::guid), + nextPage = page.nextPage, + ) + } + } catch (error: Throwable) { + if (error is CancellationException) throw error + if (generation == requestGeneration) { + mutableState.value = AmoStoreState.Failed(requestQuery, error) + } + } + } + } + + private fun launch(block: suspend () -> Unit) { + (workerScope ?: viewModelScope).launch { + block() + } + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/AppConfiguration.kt b/android/app/src/main/java/com/msgbyte/dao/browser/AppConfiguration.kt new file mode 100644 index 00000000..276bbe1f --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/AppConfiguration.kt @@ -0,0 +1,5 @@ +package com.msgbyte.dao.browser + +object AppConfiguration { + const val INITIAL_URL = "about:blank" +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/BrowserDatabase.kt b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserDatabase.kt new file mode 100644 index 00000000..1ded010b --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserDatabase.kt @@ -0,0 +1,70 @@ +package com.msgbyte.dao.browser + +import android.content.Context +import android.database.sqlite.SQLiteDatabase +import android.database.sqlite.SQLiteOpenHelper + +internal class BrowserDatabase( + context: Context, + databaseName: String, +) : SQLiteOpenHelper(context.applicationContext, databaseName, null, VERSION) { + override fun onCreate(database: SQLiteDatabase) { + database.execSQL( + """ + CREATE TABLE history_visits ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + url TEXT NOT NULL, + title TEXT NOT NULL, + visited_at INTEGER NOT NULL + ) + """.trimIndent(), + ) + database.execSQL( + """ + CREATE INDEX history_visits_visited_at + ON history_visits(visited_at DESC) + """.trimIndent(), + ) + database.execSQL( + """ + CREATE TABLE bookmark_folders ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + title TEXT NOT NULL, + created_at INTEGER NOT NULL + ) + """.trimIndent(), + ) + database.execSQL( + """ + CREATE TABLE bookmarks ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + url TEXT NOT NULL, + title TEXT NOT NULL, + folder_id INTEGER, + kind TEXT NOT NULL, + created_at INTEGER NOT NULL, + updated_at INTEGER NOT NULL, + UNIQUE(url, kind), + FOREIGN KEY(folder_id) REFERENCES bookmark_folders(id) ON DELETE SET NULL + ) + """.trimIndent(), + ) + database.execSQL( + """ + CREATE INDEX bookmarks_updated_at + ON bookmarks(updated_at DESC) + """.trimIndent(), + ) + } + + override fun onConfigure(database: SQLiteDatabase) { + super.onConfigure(database) + database.setForeignKeyConstraintsEnabled(true) + } + + override fun onUpgrade(database: SQLiteDatabase, oldVersion: Int, newVersion: Int) = Unit + + private companion object { + const val VERSION = 1 + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/BrowserLibraryModels.kt b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserLibraryModels.kt new file mode 100644 index 00000000..2f728071 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserLibraryModels.kt @@ -0,0 +1,34 @@ +package com.msgbyte.dao.browser + +enum class BookmarkKind { + FAVORITE, + READING_LIST, +} + +enum class BookmarkToggleResult { + ADDED, + REMOVED, +} + +data class HistoryVisit( + val id: Long, + val url: String, + val title: String, + val visitedAt: Long, +) + +data class BookmarkFolder( + val id: Long, + val title: String, + val createdAt: Long, +) + +data class BookmarkEntry( + val id: Long, + val url: String, + val title: String, + val folderId: Long?, + val kind: BookmarkKind, + val createdAt: Long, + val updatedAt: Long, +) diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/BrowserLibraryRepository.kt b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserLibraryRepository.kt new file mode 100644 index 00000000..67aead17 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserLibraryRepository.kt @@ -0,0 +1,266 @@ +package com.msgbyte.dao.browser + +import android.content.ContentValues +import android.content.Context +import android.database.Cursor +import java.net.URI +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.withContext + +class BrowserLibraryRepository( + context: Context, + databaseName: String = DEFAULT_DATABASE_NAME, + private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO, + private val clock: () -> Long = System::currentTimeMillis, +) : AutoCloseable { + private val database = BrowserDatabase(context, databaseName) + private val mutableHistory = MutableStateFlow(readHistory()) + private val mutableBookmarks = MutableStateFlow(readBookmarks()) + private val mutableFolders = MutableStateFlow(readFolders()) + + val history: StateFlow> = mutableHistory.asStateFlow() + val bookmarks: StateFlow> = mutableBookmarks.asStateFlow() + val folders: StateFlow> = mutableFolders.asStateFlow() + + suspend fun recordVisit(url: String, title: String, visitedAt: Long = clock()) { + if (!isStorableUrl(url)) return + withContext(ioDispatcher) { + val values = ContentValues().apply { + put("url", url) + put("title", displayTitle(url, title)) + put("visited_at", visitedAt) + } + database.writableDatabase.insertOrThrow("history_visits", null, values) + mutableHistory.value = readHistory() + } + } + + suspend fun toggleBookmark(url: String, title: String): BookmarkToggleResult { + require(isStorableUrl(url)) { "Only HTTP and HTTPS pages can be bookmarked" } + return withContext(ioDispatcher) { + val existingId = findBookmarkId(url, BookmarkKind.FAVORITE) + if (existingId != null) { + database.writableDatabase.delete("bookmarks", "id = ?", arrayOf(existingId.toString())) + mutableBookmarks.value = readBookmarks() + BookmarkToggleResult.REMOVED + } else { + val now = clock() + val values = ContentValues().apply { + put("url", url) + put("title", displayTitle(url, title)) + putNull("folder_id") + put("kind", BookmarkKind.FAVORITE.name) + put("created_at", now) + put("updated_at", now) + } + database.writableDatabase.insertOrThrow("bookmarks", null, values) + mutableBookmarks.value = readBookmarks() + BookmarkToggleResult.ADDED + } + } + } + + suspend fun addBookmark( + url: String, + title: String, + folderId: Long? = null, + kind: BookmarkKind = BookmarkKind.FAVORITE, + ): BookmarkEntry { + require(isStorableUrl(url)) { "Only HTTP and HTTPS pages can be bookmarked" } + return withContext(ioDispatcher) { + val now = clock() + val values = ContentValues().apply { + put("url", url) + put("title", displayTitle(url, title)) + if (folderId == null) putNull("folder_id") else put("folder_id", folderId) + put("kind", kind.name) + put("created_at", now) + put("updated_at", now) + } + val id = database.writableDatabase.insertOrThrow("bookmarks", null, values) + mutableBookmarks.value = readBookmarks() + mutableBookmarks.value.first { it.id == id } + } + } + + suspend fun createFolder(title: String): BookmarkFolder { + val normalizedTitle = title.trim() + require(normalizedTitle.isNotEmpty()) { "Folder title cannot be empty" } + return withContext(ioDispatcher) { + val createdAt = clock() + val values = ContentValues().apply { + put("title", normalizedTitle) + put("created_at", createdAt) + } + val id = database.writableDatabase.insertOrThrow("bookmark_folders", null, values) + mutableFolders.value = readFolders() + mutableFolders.value.first { it.id == id } + } + } + + suspend fun updateBookmark( + id: Long, + title: String, + folderId: Long?, + kind: BookmarkKind, + ) { + val normalizedTitle = title.trim() + require(normalizedTitle.isNotEmpty()) { "Bookmark title cannot be empty" } + withContext(ioDispatcher) { + val values = ContentValues().apply { + put("title", normalizedTitle) + if (folderId == null) putNull("folder_id") else put("folder_id", folderId) + put("kind", kind.name) + put("updated_at", clock()) + } + check(database.writableDatabase.update("bookmarks", values, "id = ?", arrayOf(id.toString())) == 1) { + "Bookmark does not exist" + } + mutableBookmarks.value = readBookmarks() + } + } + + suspend fun deleteBookmark(id: Long) { + withContext(ioDispatcher) { + database.writableDatabase.delete("bookmarks", "id = ?", arrayOf(id.toString())) + mutableBookmarks.value = readBookmarks() + } + } + + suspend fun deleteFolder(id: Long) { + withContext(ioDispatcher) { + database.writableDatabase.delete("bookmark_folders", "id = ?", arrayOf(id.toString())) + mutableFolders.value = readFolders() + mutableBookmarks.value = readBookmarks() + } + } + + suspend fun deleteHistoryVisit(id: Long) { + withContext(ioDispatcher) { + database.writableDatabase.delete("history_visits", "id = ?", arrayOf(id.toString())) + mutableHistory.value = readHistory() + } + } + + suspend fun clearHistory() { + withContext(ioDispatcher) { + database.writableDatabase.delete("history_visits", null, null) + mutableHistory.value = emptyList() + } + } + + fun isBookmarked(url: String): Boolean = bookmarks.value.any { + it.url == url && it.kind == BookmarkKind.FAVORITE + } + + override fun close() { + database.close() + } + + private fun readHistory(): List { + return database.readableDatabase.query( + "history_visits", + arrayOf("id", "url", "title", "visited_at"), + null, + null, + null, + null, + "visited_at DESC, id DESC", + ).use { cursor -> + buildList { + while (cursor.moveToNext()) add(cursor.toHistoryVisit()) + } + } + } + + private fun readBookmarks(): List { + return database.readableDatabase.query( + "bookmarks", + arrayOf("id", "url", "title", "folder_id", "kind", "created_at", "updated_at"), + null, + null, + null, + null, + "updated_at DESC, id DESC", + ).use { cursor -> + buildList { + while (cursor.moveToNext()) add(cursor.toBookmarkEntry()) + } + } + } + + private fun readFolders(): List { + return database.readableDatabase.query( + "bookmark_folders", + arrayOf("id", "title", "created_at"), + null, + null, + null, + null, + "created_at ASC, id ASC", + ).use { cursor -> + buildList { + while (cursor.moveToNext()) { + add( + BookmarkFolder( + id = cursor.getLong(cursor.getColumnIndexOrThrow("id")), + title = cursor.getString(cursor.getColumnIndexOrThrow("title")), + createdAt = cursor.getLong(cursor.getColumnIndexOrThrow("created_at")), + ), + ) + } + } + } + } + + private fun findBookmarkId(url: String, kind: BookmarkKind): Long? { + return database.readableDatabase.query( + "bookmarks", + arrayOf("id"), + "url = ? AND kind = ?", + arrayOf(url, kind.name), + null, + null, + null, + "1", + ).use { cursor -> if (cursor.moveToFirst()) cursor.getLong(0) else null } + } + + private fun Cursor.toHistoryVisit() = HistoryVisit( + id = getLong(getColumnIndexOrThrow("id")), + url = getString(getColumnIndexOrThrow("url")), + title = getString(getColumnIndexOrThrow("title")), + visitedAt = getLong(getColumnIndexOrThrow("visited_at")), + ) + + private fun Cursor.toBookmarkEntry() = BookmarkEntry( + id = getLong(getColumnIndexOrThrow("id")), + url = getString(getColumnIndexOrThrow("url")), + title = getString(getColumnIndexOrThrow("title")), + folderId = getColumnIndexOrThrow("folder_id").let { index -> + if (isNull(index)) null else getLong(index) + }, + kind = BookmarkKind.valueOf(getString(getColumnIndexOrThrow("kind"))), + createdAt = getLong(getColumnIndexOrThrow("created_at")), + updatedAt = getLong(getColumnIndexOrThrow("updated_at")), + ) + + private fun isStorableUrl(url: String): Boolean { + return runCatching { URI(url).scheme?.lowercase() in STORABLE_SCHEMES }.getOrDefault(false) + } + + private fun displayTitle(url: String, title: String): String { + return title.trim().ifEmpty { + runCatching { URI(url).host }.getOrNull().orEmpty().ifEmpty { url } + } + } + + private companion object { + const val DEFAULT_DATABASE_NAME = "dao-browser-library.db" + val STORABLE_SCHEMES = setOf("http", "https") + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/BrowserPreferences.kt b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserPreferences.kt new file mode 100644 index 00000000..63d7ef01 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserPreferences.kt @@ -0,0 +1,112 @@ +package com.msgbyte.dao.browser + +import android.content.Context +import androidx.datastore.core.DataStore +import androidx.datastore.preferences.core.Preferences +import androidx.datastore.preferences.core.booleanPreferencesKey +import androidx.datastore.preferences.core.edit +import androidx.datastore.preferences.core.emptyPreferences +import androidx.datastore.preferences.core.stringPreferencesKey +import androidx.datastore.preferences.preferencesDataStore +import java.io.IOException +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.catch +import kotlinx.coroutines.flow.map + +private val Context.browserPreferencesDataStore by preferencesDataStore(name = "appearance") + +enum class BrowserFontScale(val factor: Float) { + SMALL(0.85f), + MEDIUM(1.0f), + LARGE(1.2f), +} + +enum class BrowserSearchEngine(val searchUrl: String) { + GOOGLE("https://www.google.com/search?q=%s"), + BAIDU("https://www.baidu.com/s?wd=%s"), + BING("https://www.bing.com/search?q=%s"), + DUCKDUCKGO("https://duckduckgo.com/?q=%s"), +} + +data class BrowserPreferenceState( + val darkTheme: Boolean = false, + val fontScale: BrowserFontScale = BrowserFontScale.MEDIUM, + val searchEngine: BrowserSearchEngine = BrowserSearchEngine.GOOGLE, + val trackingProtectionEnabled: Boolean = true, + val defaultPrivateBrowsing: Boolean = false, + val remoteDebuggingEnabled: Boolean = false, + val remoteDebuggingWarningAcknowledged: Boolean = false, +) + +class BrowserPreferences( + private val dataStore: DataStore, +) { + constructor(context: Context) : this(context.browserPreferencesDataStore) + + val state: Flow = dataStore.data + .catch { exception -> + if (exception is IOException) emit(emptyPreferences()) else throw exception + } + .map { preferences -> + BrowserPreferenceState( + darkTheme = preferences[DarkThemeKey] ?: false, + fontScale = enumValueOrDefault( + preferences[FontScaleKey], + BrowserFontScale.MEDIUM, + ), + searchEngine = enumValueOrDefault( + preferences[SearchEngineKey], + BrowserSearchEngine.GOOGLE, + ), + trackingProtectionEnabled = preferences[TrackingProtectionKey] ?: true, + defaultPrivateBrowsing = preferences[DefaultPrivateBrowsingKey] ?: false, + remoteDebuggingEnabled = preferences[RemoteDebuggingEnabledKey] ?: false, + remoteDebuggingWarningAcknowledged = + preferences[RemoteDebuggingWarningAcknowledgedKey] ?: false, + ) + } + + suspend fun setDarkTheme(enabled: Boolean) = update(DarkThemeKey, enabled) + + suspend fun setFontScale(scale: BrowserFontScale) = update(FontScaleKey, scale.name) + + suspend fun setSearchEngine(engine: BrowserSearchEngine) = update(SearchEngineKey, engine.name) + + suspend fun setTrackingProtectionEnabled(enabled: Boolean) = + update(TrackingProtectionKey, enabled) + + suspend fun setDefaultPrivateBrowsing(enabled: Boolean) = + update(DefaultPrivateBrowsingKey, enabled) + + suspend fun setRemoteDebuggingEnabled(enabled: Boolean) = + update(RemoteDebuggingEnabledKey, enabled) + + suspend fun enableRemoteDebuggingWithAcknowledgement() { + dataStore.edit { preferences -> + preferences[RemoteDebuggingEnabledKey] = true + preferences[RemoteDebuggingWarningAcknowledgedKey] = true + } + } + + private suspend fun update(key: Preferences.Key, value: Boolean) { + dataStore.edit { preferences -> preferences[key] = value } + } + + private suspend fun update(key: Preferences.Key, value: String) { + dataStore.edit { preferences -> preferences[key] = value } + } + + private companion object { + val DarkThemeKey = booleanPreferencesKey("dark_theme") + val FontScaleKey = stringPreferencesKey("font_scale") + val SearchEngineKey = stringPreferencesKey("search_engine") + val TrackingProtectionKey = booleanPreferencesKey("tracking_protection") + val DefaultPrivateBrowsingKey = booleanPreferencesKey("default_private_browsing") + val RemoteDebuggingEnabledKey = booleanPreferencesKey("remote_debugging_enabled") + val RemoteDebuggingWarningAcknowledgedKey = + booleanPreferencesKey("remote_debugging_warning_acknowledged") + + inline fun > enumValueOrDefault(value: String?, default: T): T = + value?.let { runCatching { enumValueOf(it) }.getOrNull() } ?: default + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/BrowserRuntime.kt b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserRuntime.kt new file mode 100644 index 00000000..e6835959 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserRuntime.kt @@ -0,0 +1,30 @@ +package com.msgbyte.dao.browser + +import android.util.Log +import mozilla.components.concept.engine.Engine + +class BrowserRuntime( + private val createEngine: () -> Engine, + private val setRemoteDebugging: (Boolean) -> Unit = {}, + private val onBuiltInAdBlockerError: (Throwable) -> Unit = { error -> + Log.e(TAG, "Unable to install the built-in ad blocker", error) + }, + private val onBuiltInTranslatorError: (Throwable) -> Unit = { error -> + Log.e(TAG, "Unable to install the built-in translator", error) + }, +) { + val engine: Engine by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { + createEngine().also { engine -> + BuiltInAdBlocker.install(engine, onBuiltInAdBlockerError) + BuiltInTranslator.install(engine, onBuiltInTranslatorError) + } + } + + fun setRemoteDebuggingEnabled(enabled: Boolean) { + setRemoteDebugging(enabled) + } + + private companion object { + const val TAG = "BrowserRuntime" + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/BrowserSessionController.kt b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserSessionController.kt new file mode 100644 index 00000000..ab6d1398 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserSessionController.kt @@ -0,0 +1,159 @@ +package com.msgbyte.dao.browser + +import java.io.Closeable +import java.security.cert.X509Certificate +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.EngineSession + +data class FindResultState( + val activeMatchOrdinal: Int, + val numberOfMatches: Int, + val isDoneCounting: Boolean, +) + +data class BrowserSessionState( + val url: String = "", + val title: String = "", + val canGoBack: Boolean = false, + val canGoForward: Boolean = false, + val isLoading: Boolean = false, + val progress: Int = 0, + val isSecure: Boolean = false, + val findResult: FindResultState? = null, +) + +class BrowserSessionController( + engine: Engine, + initialUrl: String, + privateBrowsing: Boolean = false, + private val onVisitCompleted: (url: String, title: String) -> Unit = { _, _ -> }, + private val onDownloadRequested: (DownloadRequestData) -> Unit = {}, +) : Closeable { + private val mutableState = MutableStateFlow(BrowserSessionState(url = initialUrl)) + private var visitPending = false + + val state: StateFlow = mutableState.asStateFlow() + + private val observer = object : EngineSession.Observer { + override fun onLocationChange(url: String, hasUserGesture: Boolean) { + mutableState.value = mutableState.value.copy(url = url, isSecure = false) + } + + override fun onTitleChange(title: String) { + mutableState.value = mutableState.value.copy(title = title) + } + + override fun onProgress(progress: Int) { + mutableState.value = mutableState.value.copy(progress = progress.coerceIn(0, 100)) + } + + override fun onLoadingStateChange(loading: Boolean) { + mutableState.value = mutableState.value.copy(isLoading = loading) + if (loading) { + visitPending = true + } else if (visitPending) { + visitPending = false + val snapshot = mutableState.value + onVisitCompleted(snapshot.url, snapshot.title) + } + } + + override fun onNavigationStateChange(canGoBack: Boolean?, canGoForward: Boolean?) { + mutableState.value = mutableState.value.copy( + canGoBack = canGoBack ?: mutableState.value.canGoBack, + canGoForward = canGoForward ?: mutableState.value.canGoForward, + ) + } + + override fun onSecurityChange( + secure: Boolean, + host: String?, + issuer: String?, + certificate: X509Certificate?, + ) { + mutableState.value = mutableState.value.copy(isSecure = secure) + } + + override fun onFindResult( + activeMatchOrdinal: Int, + numberOfMatches: Int, + isDoneCounting: Boolean, + ) { + mutableState.value = mutableState.value.copy( + findResult = FindResultState(activeMatchOrdinal, numberOfMatches, isDoneCounting), + ) + } + + override fun onExternalResource( + url: String, + fileName: String?, + contentLength: Long?, + contentType: String?, + cookie: String?, + userAgent: String?, + isPrivate: Boolean, + skipConfirmation: Boolean, + openInApp: Boolean, + response: mozilla.components.concept.fetch.Response?, + ) { + onDownloadRequested( + DownloadRequestData( + url = url, + fileName = fileName.orEmpty(), + contentLength = contentLength, + contentType = contentType, + cookie = cookie, + userAgent = userAgent, + ), + ) + } + } + + val session: EngineSession = engine.createSession(private = privateBrowsing).also { + it.register(observer) + it.loadUrl(initialUrl) + } + + fun navigate(url: String) { + mutableState.value = mutableState.value.copy( + url = url, + title = "", + isSecure = false, + progress = 0, + ) + session.loadUrl(url) + } + + fun goBack() { + session.goBack(userInteraction = true) + } + + fun goForward() { + session.goForward(userInteraction = true) + } + + fun reload() { + session.reload() + } + + fun findAll(query: String) { + session.findAll(query) + } + + fun findNext(forward: Boolean) { + session.findNext(forward) + } + + fun clearFindMatches() { + session.clearFindMatches() + mutableState.value = mutableState.value.copy(findResult = null) + } + + override fun close() { + session.unregister(observer) + session.close() + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/BrowserSessionViewModel.kt b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserSessionViewModel.kt new file mode 100644 index 00000000..d610de78 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserSessionViewModel.kt @@ -0,0 +1,54 @@ +package com.msgbyte.dao.browser + +import android.app.Application +import androidx.lifecycle.AndroidViewModel +import androidx.lifecycle.viewModelScope +import com.msgbyte.dao.DaoApplication +import kotlinx.coroutines.launch +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.runBlocking +import mozilla.components.browser.state.engine.EngineMiddleware +import mozilla.components.browser.state.store.BrowserStore + +class BrowserSessionViewModel(application: Application) : AndroidViewModel(application) { + private val daoApplication = application as DaoApplication + private val initialPreferences = runBlocking(Dispatchers.IO) { + daoApplication.browserPreferences.state.first() + } + private val defaultPrivateBrowsing = initialPreferences.defaultPrivateBrowsing + + private val engine = daoApplication.browserRuntime.run { + setRemoteDebuggingEnabled(initialPreferences.remoteDebuggingEnabled) + engine + } + private val snapshotStorage = MozillaBrowserSessionSnapshotStorage(application, engine) + val thumbnailRepository = TabThumbnailRepository(application) + val controller = BrowserTabsController( + store = BrowserStore( + middleware = EngineMiddleware.create(engine, viewModelScope), + ), + defaultPrivateBrowsing = defaultPrivateBrowsing, + snapshotStorage = snapshotStorage, + scope = viewModelScope, + onVisitCompleted = { url, title -> + viewModelScope.launch { + daoApplication.browserLibrary.recordVisit(url, title) + } + }, + onDownloadRequested = { request -> + viewModelScope.launch { + runCatching { daoApplication.downloadRepository.enqueue(request) } + } + }, + ) + + init { + snapshotStorage.startAutoSave(controller.store, viewModelScope) + viewModelScope.launch { controller.initialize() } + } + + override fun onCleared() { + controller.close() + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/BrowserTabsController.kt b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserTabsController.kt new file mode 100644 index 00000000..2a70a381 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/BrowserTabsController.kt @@ -0,0 +1,227 @@ +package com.msgbyte.dao.browser + +import android.util.Log +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.launch +import mozilla.components.browser.session.storage.RecoverableBrowserState +import mozilla.components.browser.state.action.EngineAction +import mozilla.components.browser.state.action.ContentAction +import mozilla.components.browser.state.action.RestoreCompleteAction +import mozilla.components.browser.state.action.TabListAction +import mozilla.components.browser.state.state.BrowserState +import mozilla.components.browser.state.state.ContentState +import mozilla.components.browser.state.state.TabSessionState +import mozilla.components.browser.state.store.BrowserStore +import mozilla.components.concept.engine.EngineSession + +interface BrowserSessionSnapshotStorage { + suspend fun restore(): RecoverableBrowserState? + + suspend fun clear() + + fun startAutoSave(store: BrowserStore, scope: CoroutineScope) = Unit +} + +class BrowserTabsController( + val store: BrowserStore, + private val defaultPrivateBrowsing: Boolean, + private val snapshotStorage: BrowserSessionSnapshotStorage? = null, + scope: CoroutineScope? = null, + private val onVisitCompleted: (url: String, title: String) -> Unit = { _, _ -> }, + private val onDownloadRequested: (DownloadRequestData) -> Unit = {}, + private val onSnapshotClearFailure: (Throwable) -> Unit = { error -> + Log.e(TAG, "Unable to clear the invalid browser session snapshot", error) + }, +) { + private val sessionObservers = mutableMapOf() + val state: StateFlow = store.stateFlow + + init { + scope?.launch { + val previousLoading = mutableMapOf() + state.collect { browserState -> + browserState.tabs.forEach { tab -> + val wasLoading = previousLoading.put(tab.id, tab.content.loading) + if (wasLoading == true && !tab.content.loading && !tab.content.private) { + onVisitCompleted(tab.content.url, tab.content.title) + } + } + previousLoading.keys.retainAll(browserState.tabs.mapTo(mutableSetOf()) { it.id }) + syncSessionObservers(browserState) + } + } + } + + suspend fun initialize() { + if (state.value.tabs.isNotEmpty()) return + + if (defaultPrivateBrowsing) { + createTab(private = true) + clearSnapshotBestEffort() + } else { + val snapshot = snapshotStorage?.restore() + if (snapshot == null || snapshot.tabs.isEmpty()) { + createTab(private = false) + if (snapshot != null) clearSnapshotBestEffort() + } else { + store.dispatch( + TabListAction.RestoreAction( + tabs = snapshot.tabs, + selectedTabId = snapshot.selectedTabId, + restoreLocation = TabListAction.RestoreAction.RestoreLocation.BEGINNING, + tabPartitions = snapshot.tabPartitions, + ), + ) + store.dispatch(RestoreCompleteAction) + } + } + } + + fun createTab( + private: Boolean = selectedTab()?.content?.private ?: defaultPrivateBrowsing, + ): String { + val tab = TabSessionState( + content = ContentState( + url = AppConfiguration.INITIAL_URL, + private = private, + ), + ) + store.dispatch(TabListAction.AddTabAction(tab, select = true)) + return tab.id + } + + fun selectTab(tabId: String) { + if (state.value.tabs.none { it.id == tabId }) return + store.dispatch(TabListAction.SelectTabAction(tabId)) + } + + fun closeTab(tabId: String) { + val tab = state.value.tabs.firstOrNull { it.id == tabId } ?: return + store.dispatch(TabListAction.RemoveTabAction(tabId)) + if (state.value.tabs.isEmpty()) { + createTab(private = tab.content.private) + } + } + + fun navigate(url: String) { + val tabId = state.value.selectedTabId ?: return + store.dispatch(ContentAction.UpdateUrlAction(tabId, url)) + store.dispatch(EngineAction.LoadUrlAction(tabId, url)) + } + + fun ensureSession(tabId: String) { + val tab = state.value.tabs.firstOrNull { it.id == tabId } ?: return + if (tab.engineState.engineSession != null || tab.engineState.initializing) return + store.dispatch(EngineAction.CreateEngineSessionAction(tabId)) + } + + fun goHome() { + navigate(AppConfiguration.INITIAL_URL) + } + + fun goBack() { + val tabId = state.value.selectedTabId ?: return + store.dispatch(EngineAction.GoBackAction(tabId, userInteraction = true)) + } + + fun goForward() { + val tabId = state.value.selectedTabId ?: return + store.dispatch(EngineAction.GoForwardAction(tabId, userInteraction = true)) + } + + fun reload() { + val tabId = state.value.selectedTabId ?: return + store.dispatch(EngineAction.ReloadAction(tabId)) + } + + fun findAll(query: String) { + selectedSession()?.findAll(query) + } + + fun findNext(forward: Boolean) { + selectedSession()?.findNext(forward) + } + + fun clearFindMatches() { + selectedSession()?.clearFindMatches() + } + + fun flushRegularSessionStates() { + state.value.tabs + .asSequence() + .filterNot { it.content.private } + .mapNotNull { it.engineState.engineSession } + .forEach(EngineSession::flushSessionState) + } + + fun selectedTab(): TabSessionState? { + val selectedTabId = state.value.selectedTabId ?: return null + return state.value.tabs.firstOrNull { it.id == selectedTabId } + } + + fun selectedSession(): EngineSession? = selectedTab()?.engineState?.engineSession + + fun close() { + sessionObservers.forEach { (session, observer) -> + session.unregister(observer) + session.close() + } + sessionObservers.clear() + } + + private fun syncSessionObservers(browserState: BrowserState) { + val currentSessions = browserState.tabs.mapNotNullTo(mutableSetOf()) { + it.engineState.engineSession + } + sessionObservers.keys.filterNot(currentSessions::contains).forEach { session -> + sessionObservers.remove(session)?.let(session::unregister) + } + browserState.tabs.forEach { tab -> + val session = tab.engineState.engineSession ?: return@forEach + if (sessionObservers.containsKey(session)) return@forEach + val observer = object : EngineSession.Observer { + override fun onExternalResource( + url: String, + fileName: String?, + contentLength: Long?, + contentType: String?, + cookie: String?, + userAgent: String?, + isPrivate: Boolean, + skipConfirmation: Boolean, + openInApp: Boolean, + response: mozilla.components.concept.fetch.Response?, + ) { + onDownloadRequested( + DownloadRequestData( + url = url, + fileName = fileName.orEmpty(), + contentLength = contentLength, + contentType = contentType, + cookie = cookie, + userAgent = userAgent, + ), + ) + } + } + session.register(observer) + sessionObservers[session] = observer + } + } + + private suspend fun clearSnapshotBestEffort() { + try { + snapshotStorage?.clear() + } catch (error: Throwable) { + if (error is CancellationException) throw error + onSnapshotClearFailure(error) + } + } + + private companion object { + const val TAG = "BrowserTabsController" + } + +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/BuiltInAdBlocker.kt b/android/app/src/main/java/com/msgbyte/dao/browser/BuiltInAdBlocker.kt new file mode 100644 index 00000000..4e83cfa7 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/BuiltInAdBlocker.kt @@ -0,0 +1,19 @@ +package com.msgbyte.dao.browser + +import mozilla.components.concept.engine.CancellableOperation +import mozilla.components.concept.engine.Engine + +object BuiltInAdBlocker { + const val EXTENSION_ID = "uBlock0@raymondhill.net" + const val RESOURCE_URI = "resource://android/assets/extensions/ublock_origin/" + + fun install( + engine: Engine, + onError: (Throwable) -> Unit, + ): CancellableOperation = engine.installBuiltInWebExtension( + id = EXTENSION_ID, + url = RESOURCE_URI, + onSuccess = {}, + onError = onError, + ) +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/BuiltInTranslator.kt b/android/app/src/main/java/com/msgbyte/dao/browser/BuiltInTranslator.kt new file mode 100644 index 00000000..b2f6399c --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/BuiltInTranslator.kt @@ -0,0 +1,59 @@ +package com.msgbyte.dao.browser + +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.webextension.EnableSource + +object BuiltInTranslator { + const val EXTENSION_ID = "{fb25c100-22ce-4d5a-be7e-75f3d6f0fc13}" + const val RESOURCE_URI = "resource://android/assets/extensions/kiss_translator/" + + private const val LEGACY_EXTENSION_ID = "{036a55b4-5e72-4d05-a06c-cba2dfcc134a}" + + fun install( + engine: Engine, + onError: (Throwable) -> Unit, + ) = engine.listInstalledWebExtensions( + onSuccess = { installed -> + val startsDisabled = installed.none { it.id == EXTENSION_ID } + engine.installBuiltInWebExtension( + id = EXTENSION_ID, + url = RESOURCE_URI, + onSuccess = { extension -> + if (startsDisabled) { + engine.disableWebExtension( + extension = extension, + source = EnableSource.USER, + onSuccess = { removeLegacyExtension(engine, onError) }, + onError = { error -> + onError(error) + removeLegacyExtension(engine, onError) + }, + ) + } else { + removeLegacyExtension(engine, onError) + } + }, + onError = onError, + ) + }, + onError = onError, + ) + + private fun removeLegacyExtension( + engine: Engine, + onError: (Throwable) -> Unit, + ) { + engine.listInstalledWebExtensions( + onSuccess = { extensions -> + extensions.firstOrNull { it.id == LEGACY_EXTENSION_ID }?.let { legacy -> + engine.uninstallWebExtension( + ext = legacy, + onSuccess = {}, + onError = { _, error -> onError(error) }, + ) + } + }, + onError = onError, + ) + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/DownloadModels.kt b/android/app/src/main/java/com/msgbyte/dao/browser/DownloadModels.kt new file mode 100644 index 00000000..b91a0420 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/DownloadModels.kt @@ -0,0 +1,63 @@ +package com.msgbyte.dao.browser + +data class DownloadRequestData( + val url: String, + val fileName: String, + val contentLength: Long? = null, + val contentType: String? = null, + val cookie: String? = null, + val userAgent: String? = null, +) + +enum class DownloadStatus { + PENDING, + RUNNING, + PAUSED, + SUCCESSFUL, + FAILED, +} + +data class BrowserDownload( + val id: Long, + val request: DownloadRequestData, + val status: DownloadStatus, + val bytesDownloaded: Long, + val totalBytes: Long?, + val localUri: String?, + val reason: Int, + val lastModified: Long, +) { + val progress: Float? + get() = totalBytes?.takeIf { it > 0 }?.let { total -> + (bytesDownloaded.toDouble() / total.toDouble()).toFloat().coerceIn(0f, 1f) + } +} + +internal enum class DownloadGatewayStatus { + PENDING, + RUNNING, + PAUSED, + SUCCESSFUL, + FAILED, +} + +internal data class DownloadGatewayRecord( + val id: Long, + val status: DownloadGatewayStatus, + val bytesDownloaded: Long, + val totalBytes: Long, + val localUri: String?, + val reason: Int, + val lastModified: Long, +) + +internal interface DownloadGateway { + fun enqueue(request: DownloadRequestData): Long + fun query(ids: Set): List + fun remove(id: Long) +} + +internal interface DownloadMetadataStore { + fun readAll(): Map + fun writeAll(values: Map) +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/ExtensionPackageStager.kt b/android/app/src/main/java/com/msgbyte/dao/browser/ExtensionPackageStager.kt new file mode 100644 index 00000000..a6f90efa --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/ExtensionPackageStager.kt @@ -0,0 +1,95 @@ +package com.msgbyte.dao.browser + +import android.content.Context +import android.net.Uri +import android.provider.OpenableColumns +import java.io.File +import java.io.InputStream +import java.io.OutputStream +import java.util.UUID + +sealed class ExtensionPackageException(cause: Throwable? = null) : Exception(cause) { + class InvalidFileName : ExtensionPackageException() + class EmptyFile : ExtensionPackageException() + class TooLarge : ExtensionPackageException() + class Unavailable(cause: Throwable? = null) : ExtensionPackageException(cause) +} + +data class StagedExtensionPackage( + val uri: String, + val file: File, +) { + fun delete() { + file.delete() + } +} + +class ExtensionPackageStager( + private val context: Context, +) { + fun stage(documentUri: Uri): StagedExtensionPackage { + requireXpiName(displayName(documentUri)) + val directory = File(context.cacheDir, CACHE_DIRECTORY).also(File::mkdirs) + val target = File(directory, "${UUID.randomUUID()}.xpi") + try { + val input = context.contentResolver.openInputStream(documentUri) + ?: throw ExtensionPackageException.Unavailable() + input.use { source -> + target.outputStream().use { output -> + copyBounded(source, output, MAX_PACKAGE_BYTES) + } + } + return StagedExtensionPackage(target.toURI().toString(), target) + } catch (error: ExtensionPackageException) { + target.delete() + throw error + } catch (error: Exception) { + target.delete() + throw ExtensionPackageException.Unavailable(error) + } + } + + private fun displayName(uri: Uri): String? { + context.contentResolver.query( + uri, + arrayOf(OpenableColumns.DISPLAY_NAME), + null, + null, + null, + )?.use { cursor -> + val index = cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME) + if (index >= 0 && cursor.moveToFirst()) return cursor.getString(index) + } + return uri.lastPathSegment + } + + companion object { + private const val CACHE_DIRECTORY = "extension-installs" + const val MAX_PACKAGE_BYTES = 100L * 1024L * 1024L + + internal fun requireXpiName(name: String?): String { + if (name.isNullOrBlank() || !name.endsWith(".xpi", ignoreCase = true)) { + throw ExtensionPackageException.InvalidFileName() + } + return name + } + + internal fun copyBounded( + input: InputStream, + output: OutputStream, + maxBytes: Long, + ): Long { + val buffer = ByteArray(DEFAULT_BUFFER_SIZE) + var total = 0L + while (true) { + val read = input.read(buffer) + if (read < 0) break + if (total + read > maxBytes) throw ExtensionPackageException.TooLarge() + output.write(buffer, 0, read) + total += read + } + if (total == 0L) throw ExtensionPackageException.EmptyFile() + return total + } + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/ExtensionRepository.kt b/android/app/src/main/java/com/msgbyte/dao/browser/ExtensionRepository.kt new file mode 100644 index 00000000..974930d1 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/ExtensionRepository.kt @@ -0,0 +1,326 @@ +package com.msgbyte.dao.browser + +import java.net.URI +import java.net.URISyntaxException +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.EngineSession +import mozilla.components.concept.engine.webextension.Action +import mozilla.components.concept.engine.webextension.EnableSource +import mozilla.components.concept.engine.webextension.InstallationMethod +import mozilla.components.concept.engine.webextension.PermissionPromptResponse +import mozilla.components.concept.engine.webextension.WebExtension +import mozilla.components.concept.engine.webextension.WebExtensionDelegate +import mozilla.components.concept.engine.webextension.WebExtensionInstallException + +data class InstalledExtension( + val id: String, + val name: String, + val description: String, + val version: String, + val enabled: Boolean, + val builtIn: Boolean, + val actionAvailable: Boolean, +) + +data class PendingExtensionPermission( + val id: String, + val name: String, + val version: String, + val permissions: List, + val origins: List, + val dataCollectionPermissions: List, +) + +enum class ExtensionInstallFailure { + INVALID_FILE_NAME, + EMPTY_FILE, + TOO_LARGE, + UNAVAILABLE, + BUSY, + NOT_SIGNED, + CORRUPT_FILE, + INCOMPATIBLE, + BLOCKLISTED, + SOFT_BLOCKED, + NETWORK_FAILURE, + UNSUPPORTED_TYPE, + USER_CANCELLED, + UNKNOWN, +} + +sealed interface ExtensionInstallState { + data object Idle : ExtensionInstallState + data object Staging : ExtensionInstallState + data object Installing : ExtensionInstallState + data class AwaitingPermission(val prompt: PendingExtensionPermission) : ExtensionInstallState + data class Installed(val name: String) : ExtensionInstallState + data class Failed(val reason: ExtensionInstallFailure) : ExtensionInstallState +} + +class ExtensionRepository( + private val engine: Engine, +) { + private val mutableExtensions = MutableStateFlow>(emptyList()) + private val mutableInstallState = MutableStateFlow(ExtensionInstallState.Idle) + private val engineExtensions = mutableMapOf() + private val browserActions = mutableMapOf() + private var activeInstall: ActiveInstall? = null + private var nextInstallToken = 0L + private var permissionCallback: ((PermissionPromptResponse) -> Unit)? = null + private var popupSessionHandler: ((EngineSession) -> Unit)? = null + + val extensions: StateFlow> = mutableExtensions.asStateFlow() + val installState: StateFlow = mutableInstallState.asStateFlow() + + init { + engine.registerWebExtensionDelegate(object : WebExtensionDelegate { + override fun onInstalled(extension: WebExtension) { + refresh() + } + + override fun onUninstalled(extension: WebExtension) { + refresh() + } + + override fun onExtensionListUpdated() { + refresh() + } + + override fun onBrowserActionDefined(extension: WebExtension, action: Action) { + browserActions[extension.id] = action + updateActionAvailability(extension.id) + } + + override fun onToggleActionPopup( + extension: WebExtension, + engineSession: EngineSession, + action: Action, + ): EngineSession? { + val handler = popupSessionHandler ?: return null + handler(engineSession) + return engineSession + } + + override fun onInstallPermissionRequest( + extension: WebExtension, + permissions: List, + origins: List, + dataCollectionPermissions: List, + onConfirm: (PermissionPromptResponse) -> Unit, + ) { + if (activeInstall == null || permissionCallback != null) { + onConfirm(PermissionPromptResponse(false, false, false)) + return + } + val metadata = extension.getMetadata() + permissionCallback = onConfirm + mutableInstallState.value = ExtensionInstallState.AwaitingPermission( + PendingExtensionPermission( + id = extension.id, + name = metadata?.name?.takeIf(String::isNotBlank) ?: extension.id, + version = metadata?.version.orEmpty(), + permissions = permissions, + origins = origins, + dataCollectionPermissions = dataCollectionPermissions, + ), + ) + } + + }) + } + + fun refresh(onError: (Throwable) -> Unit = {}) { + engine.listInstalledWebExtensions( + onSuccess = { values -> replaceExtensions(values) }, + onError = onError, + ) + } + + fun setPopupSessionHandler(handler: ((EngineSession) -> Unit)?) { + popupSessionHandler = handler + } + + fun invokeAction(id: String): Boolean { + val action = browserActions[id]?.takeUnless { it.enabled == false } ?: return false + action.onClick() + return true + } + + fun setStaging() { + if (activeInstall == null) mutableInstallState.value = ExtensionInstallState.Staging + } + + fun reportStagingFailure(error: ExtensionPackageException) { + mutableInstallState.value = ExtensionInstallState.Failed( + when (error) { + is ExtensionPackageException.InvalidFileName -> ExtensionInstallFailure.INVALID_FILE_NAME + is ExtensionPackageException.EmptyFile -> ExtensionInstallFailure.EMPTY_FILE + is ExtensionPackageException.TooLarge -> ExtensionInstallFailure.TOO_LARGE + is ExtensionPackageException.Unavailable -> ExtensionInstallFailure.UNAVAILABLE + }, + ) + } + + fun install(stagedPackage: StagedExtensionPackage): Boolean { + return beginInstall( + url = stagedPackage.uri, + installationMethod = InstallationMethod.FROM_FILE, + cleanup = stagedPackage::delete, + ) + } + + fun installFromAmo(url: String): Boolean { + if (!isHttpsXpiUrl(url)) return false + return beginInstall( + url = url, + installationMethod = InstallationMethod.RTAMO, + cleanup = null, + ) + } + + private fun beginInstall( + url: String, + installationMethod: InstallationMethod, + cleanup: (() -> Unit)?, + ): Boolean { + if (activeInstall != null || permissionCallback != null) return false + val token = ++nextInstallToken + activeInstall = ActiveInstall(token, cleanup) + mutableInstallState.value = ExtensionInstallState.Installing + try { + engine.installWebExtension( + url = url, + installationMethod = installationMethod, + onSuccess = { extension -> finishSuccess(token, extension) }, + onError = { error -> finishFailure(token, mapInstallFailure(error)) }, + ) + } catch (error: Throwable) { + finishFailure(token, mapInstallFailure(error)) + } + return true + } + + fun resolvePermission(granted: Boolean) { + val token = activeInstall?.token ?: return + val callback = permissionCallback ?: return + permissionCallback = null + if (granted) { + mutableInstallState.value = ExtensionInstallState.Installing + callback(PermissionPromptResponse(true, false, false)) + } else { + callback(PermissionPromptResponse(false, false, false)) + finishFailure(token, ExtensionInstallFailure.USER_CANCELLED) + } + } + + fun dismissResult() { + if (mutableInstallState.value is ExtensionInstallState.Installed || + mutableInstallState.value is ExtensionInstallState.Failed + ) { + mutableInstallState.value = ExtensionInstallState.Idle + } + } + + fun uninstall(id: String, onError: (Throwable) -> Unit = {}): Boolean { + val extension = engineExtensions[id] ?: return false + if (extension.isBuiltIn()) return false + engine.uninstallWebExtension( + ext = extension, + onSuccess = { refresh(onError) }, + onError = { _, error -> onError(error) }, + ) + return true + } + + fun setEnabled(id: String, enabled: Boolean, onError: (Throwable) -> Unit = {}) { + val extension = engineExtensions[id] ?: return + val onSuccess: (WebExtension) -> Unit = { updated -> + engineExtensions[id] = updated + mutableExtensions.value = mutableExtensions.value.map { current -> + if (current.id == id) mapExtension(updated) else current + } + } + if (enabled) { + engine.enableWebExtension(extension, EnableSource.USER, onSuccess, onError) + } else { + engine.disableWebExtension(extension, EnableSource.USER, onSuccess, onError) + } + } + + private fun finishSuccess(token: Long, extension: WebExtension) { + if (activeInstall?.token != token) return + permissionCallback = null + activeInstall?.cleanup?.invoke() + activeInstall = null + mutableInstallState.value = ExtensionInstallState.Installed( + extension.getMetadata()?.name?.takeIf(String::isNotBlank) ?: extension.id, + ) + refresh() + } + + private fun finishFailure(token: Long, reason: ExtensionInstallFailure) { + if (activeInstall?.token != token) return + permissionCallback = null + activeInstall?.cleanup?.invoke() + activeInstall = null + mutableInstallState.value = ExtensionInstallState.Failed(reason) + } + + private fun replaceExtensions(values: List) { + engineExtensions.clear() + values.forEach { engineExtensions[it.id] = it } + browserActions.keys.retainAll(engineExtensions.keys) + mutableExtensions.value = values.map(::mapExtension) + } + + private fun updateActionAvailability(id: String) { + mutableExtensions.value = mutableExtensions.value.map { current -> + if (current.id == id) current.copy(actionAvailable = true) else current + } + } + + private fun mapExtension(extension: WebExtension): InstalledExtension { + val metadata = extension.getMetadata() + return InstalledExtension( + id = extension.id, + name = metadata?.name?.takeIf(String::isNotBlank) ?: extension.id, + description = metadata?.description.orEmpty(), + version = metadata?.version.orEmpty(), + enabled = extension.isEnabled(), + builtIn = extension.isBuiltIn(), + actionAvailable = browserActions.containsKey(extension.id), + ) + } + + private fun isHttpsXpiUrl(value: String): Boolean = try { + URI(value).let { uri -> + uri.scheme == "https" && + !uri.host.isNullOrEmpty() && + uri.path.endsWith(".xpi") + } + } catch (_: URISyntaxException) { + false + } + + private data class ActiveInstall( + val token: Long, + val cleanup: (() -> Unit)?, + ) + + companion object { + internal fun mapInstallFailure(error: Throwable): ExtensionInstallFailure = when (error) { + is WebExtensionInstallException.NotSigned -> ExtensionInstallFailure.NOT_SIGNED + is WebExtensionInstallException.CorruptFile -> ExtensionInstallFailure.CORRUPT_FILE + is WebExtensionInstallException.Incompatible -> ExtensionInstallFailure.INCOMPATIBLE + is WebExtensionInstallException.Blocklisted -> ExtensionInstallFailure.BLOCKLISTED + is WebExtensionInstallException.SoftBlocked -> ExtensionInstallFailure.SOFT_BLOCKED + is WebExtensionInstallException.NetworkFailure -> ExtensionInstallFailure.NETWORK_FAILURE + is WebExtensionInstallException.UnsupportedAddonType -> ExtensionInstallFailure.UNSUPPORTED_TYPE + is WebExtensionInstallException.UserCancelled -> ExtensionInstallFailure.USER_CANCELLED + else -> ExtensionInstallFailure.UNKNOWN + } + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/MozillaBrowserSessionSnapshotStorage.kt b/android/app/src/main/java/com/msgbyte/dao/browser/MozillaBrowserSessionSnapshotStorage.kt new file mode 100644 index 00000000..08405a28 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/MozillaBrowserSessionSnapshotStorage.kt @@ -0,0 +1,33 @@ +package com.msgbyte.dao.browser + +import android.content.Context +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext +import mozilla.components.browser.session.storage.RecoverableBrowserState +import mozilla.components.browser.session.storage.SessionStorage +import mozilla.components.browser.state.store.BrowserStore +import mozilla.components.concept.engine.Engine + +class MozillaBrowserSessionSnapshotStorage( + context: Context, + engine: Engine, + private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO, +) : BrowserSessionSnapshotStorage { + private val storage = SessionStorage(context.applicationContext, engine) + + override suspend fun restore(): RecoverableBrowserState? = withContext(ioDispatcher) { + storage.restore() + } + + override suspend fun clear() { + withContext(ioDispatcher) { storage.clear() } + } + + override fun startAutoSave(store: BrowserStore, scope: CoroutineScope) { + storage.autoSave(store) + .whenSessionsChange(scope) + .whenGoingToBackground() + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/NavigationTargetResolver.kt b/android/app/src/main/java/com/msgbyte/dao/browser/NavigationTargetResolver.kt new file mode 100644 index 00000000..1628ee81 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/NavigationTargetResolver.kt @@ -0,0 +1,32 @@ +package com.msgbyte.dao.browser + +import java.net.URLEncoder +import java.nio.charset.StandardCharsets + +class NavigationTargetResolver( + private val searchUrl: String, +) { + fun resolve(input: String): String? { + val value = input.trim() + if (value.isEmpty()) return null + + if ( + value.startsWith("http://", ignoreCase = true) || + value.startsWith("https://", ignoreCase = true) + ) { + return value + } + + if (value.equals("about:blank", ignoreCase = true) || + value.startsWith("about:blank#", ignoreCase = true) + ) { + return value + } + + val isDomain = !value.contains(' ') && value.contains('.') + if (isDomain) return "https://$value" + + val query = URLEncoder.encode(value, StandardCharsets.UTF_8.name()) + return searchUrl.format(query) + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/QrCodeDecoder.kt b/android/app/src/main/java/com/msgbyte/dao/browser/QrCodeDecoder.kt new file mode 100644 index 00000000..68ee7760 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/QrCodeDecoder.kt @@ -0,0 +1,57 @@ +package com.msgbyte.dao.browser + +import com.google.zxing.BarcodeFormat +import com.google.zxing.BinaryBitmap +import com.google.zxing.DecodeHintType +import com.google.zxing.MultiFormatReader +import com.google.zxing.PlanarYUVLuminanceSource +import com.google.zxing.common.HybridBinarizer + +object QrCodeDecoder { + fun decode( + luminance: ByteArray, + width: Int, + height: Int, + rotationDegrees: Int, + ): String? { + if (luminance.size < width * height || width <= 0 || height <= 0) return null + val rotated = rotate(luminance, width, height, rotationDegrees) + val source = PlanarYUVLuminanceSource( + rotated.bytes, + rotated.width, + rotated.height, + 0, + 0, + rotated.width, + rotated.height, + false, + ) + return runCatching { + MultiFormatReader().decode( + BinaryBitmap(HybridBinarizer(source)), + mapOf( + DecodeHintType.POSSIBLE_FORMATS to listOf(BarcodeFormat.QR_CODE), + DecodeHintType.TRY_HARDER to true, + ), + ).text + }.getOrNull() + } + + private fun rotate(bytes: ByteArray, width: Int, height: Int, degrees: Int): Frame = + when ((degrees % 360 + 360) % 360) { + 90 -> Frame(ByteArray(bytes.size) { index -> + val x = index % height + val y = index / height + bytes[(height - 1 - x) * width + y] + }, height, width) + 180 -> Frame(ByteArray(bytes.size) { index -> bytes[bytes.lastIndex - index] }, width, height) + 270 -> Frame(ByteArray(bytes.size) { index -> + val x = index % height + val y = index / height + bytes[x * width + (width - 1 - y)] + }, height, width) + else -> Frame(bytes, width, height) + } + + private data class Frame(val bytes: ByteArray, val width: Int, val height: Int) +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/SiteSecurityDetails.kt b/android/app/src/main/java/com/msgbyte/dao/browser/SiteSecurityDetails.kt new file mode 100644 index 00000000..5185011a --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/SiteSecurityDetails.kt @@ -0,0 +1,97 @@ +package com.msgbyte.dao.browser + +import java.net.URI +import java.security.MessageDigest +import java.security.cert.X509Certificate +import java.time.ZoneId +import java.time.format.DateTimeFormatter +import java.time.format.FormatStyle +import java.util.Locale +import javax.security.auth.x500.X500Principal +import mozilla.components.browser.state.state.SecurityInfo + +enum class SiteSecurityState { + SECURE, + INSECURE, + UNAVAILABLE, +} + +data class SiteSecurityDetails( + val host: String, + val state: SiteSecurityState, + val subject: String? = null, + val issuer: String? = null, + val validFrom: String? = null, + val validUntil: String? = null, + val serialNumber: String? = null, + val sha256Fingerprint: String? = null, +) { + companion object { + fun from( + url: String, + securityInfo: SecurityInfo?, + locale: Locale = Locale.getDefault(), + zoneId: ZoneId = ZoneId.systemDefault(), + ): SiteSecurityDetails { + val host = securityInfo?.host.orEmpty().ifBlank { hostFromUrl(url) } + return when (securityInfo) { + is SecurityInfo.Secure -> fromSecure(host, securityInfo, locale, zoneId) + is SecurityInfo.Insecure -> SiteSecurityDetails( + host = host, + state = SiteSecurityState.INSECURE, + ) + else -> SiteSecurityDetails( + host = host, + state = SiteSecurityState.UNAVAILABLE, + ) + } + } + + private fun fromSecure( + host: String, + securityInfo: SecurityInfo.Secure, + locale: Locale, + zoneId: ZoneId, + ): SiteSecurityDetails { + val certificate = securityInfo.certificate + ?: return SiteSecurityDetails(host = host, state = SiteSecurityState.SECURE) + val dateFormatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM) + .withLocale(locale) + .withZone(zoneId) + return SiteSecurityDetails( + host = host, + state = SiteSecurityState.SECURE, + subject = commonName(certificate.subjectX500Principal), + issuer = securityInfo.issuer.ifBlank { + commonName(certificate.issuerX500Principal) + }, + validFrom = dateFormatter.format(certificate.notBefore.toInstant()), + validUntil = dateFormatter.format(certificate.notAfter.toInstant()), + serialNumber = certificate.serialNumber.toString(16).uppercase(Locale.ROOT), + sha256Fingerprint = fingerprint(certificate), + ) + } + + private fun hostFromUrl(url: String): String = runCatching { + URI(url).host.orEmpty() + }.getOrDefault("").ifBlank { url.ifBlank { "about:blank" } } + + private fun commonName(principal: X500Principal): String { + val fullName = principal.name + return Regex("(?:^|,)CN=([^,]+)", RegexOption.IGNORE_CASE) + .find(fullName) + ?.groupValues + ?.get(1) + ?.replace("\\,", ",") + ?.trim() + ?.takeIf(String::isNotEmpty) + ?: fullName + } + + private fun fingerprint(certificate: X509Certificate): String? = runCatching { + MessageDigest.getInstance("SHA-256") + .digest(certificate.encoded) + .joinToString(":") { byte -> "%02X".format(byte.toInt() and 0xFF) } + }.getOrNull() + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/SystemDownloadRepository.kt b/android/app/src/main/java/com/msgbyte/dao/browser/SystemDownloadRepository.kt new file mode 100644 index 00000000..fb03f26e --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/SystemDownloadRepository.kt @@ -0,0 +1,238 @@ +package com.msgbyte.dao.browser + +import android.app.DownloadManager +import android.content.Context +import android.database.Cursor +import android.net.Uri +import android.os.Build +import android.os.Environment +import java.net.URI +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.StateFlow +import kotlinx.coroutines.flow.asStateFlow +import kotlinx.coroutines.withContext +import org.json.JSONArray +import org.json.JSONObject + +class SystemDownloadRepository internal constructor( + private val gateway: DownloadGateway, + private val metadataStore: DownloadMetadataStore, + private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO, +) { + constructor(context: Context) : this( + gateway = AndroidDownloadGateway(context.applicationContext), + metadataStore = SharedPreferencesDownloadMetadataStore(context.applicationContext), + ) + + private var metadata = metadataStore.readAll().toMutableMap() + private val mutableDownloads = MutableStateFlow( + metadata.map { (id, request) -> request.toPendingDownload(id) }, + ) + + val downloads: StateFlow> = mutableDownloads.asStateFlow() + + suspend fun enqueue(request: DownloadRequestData): Long { + require(isHttpUrl(request.url)) { "Only HTTP and HTTPS resources can be downloaded" } + val normalized = request.copy(fileName = sanitizeFileName(request.fileName, request.url)) + return withContext(ioDispatcher) { + val id = gateway.enqueue(normalized) + metadata[id] = normalized + persistMetadata() + mutableDownloads.value = listOf(normalized.toPendingDownload(id)) + mutableDownloads.value + id + } + } + + suspend fun refresh() { + withContext(ioDispatcher) { + if (metadata.isEmpty()) { + mutableDownloads.value = emptyList() + return@withContext + } + val records = gateway.query(metadata.keys) + val recordsById = records.associateBy { it.id } + mutableDownloads.value = metadata.map { (id, request) -> + recordsById[id]?.toBrowserDownload(request) ?: request.toPendingDownload(id) + }.sortedByDescending { it.lastModified } + } + } + + suspend fun cancel(id: Long) { + remove(id) + } + + suspend fun remove(id: Long) { + withContext(ioDispatcher) { + gateway.remove(id) + metadata.remove(id) + persistMetadata() + mutableDownloads.value = mutableDownloads.value.filterNot { it.id == id } + } + } + + suspend fun retry(id: Long): Long { + val request = requireNotNull(metadata[id]) { "Download does not exist" } + remove(id) + return enqueue(request) + } + + fun find(id: Long): BrowserDownload? = downloads.value.firstOrNull { it.id == id } + + private fun persistMetadata() { + metadataStore.writeAll(metadata) + } +} + +private class AndroidDownloadGateway(context: Context) : DownloadGateway { + private val appContext = context.applicationContext + private val manager = appContext.getSystemService(DownloadManager::class.java) + + override fun enqueue(request: DownloadRequestData): Long { + val systemRequest = DownloadManager.Request(Uri.parse(request.url)).apply { + setTitle(request.fileName) + setDescription(request.url) + setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED) + request.contentType?.takeIf(String::isNotBlank)?.let(::setMimeType) + request.cookie?.takeIf(String::isNotBlank)?.let { addRequestHeader("Cookie", it) } + request.userAgent?.takeIf(String::isNotBlank)?.let { addRequestHeader("User-Agent", it) } + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { + setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, request.fileName) + } else { + setDestinationInExternalFilesDir(appContext, Environment.DIRECTORY_DOWNLOADS, request.fileName) + } + } + return manager.enqueue(systemRequest) + } + + override fun query(ids: Set): List { + if (ids.isEmpty()) return emptyList() + return manager.query(DownloadManager.Query().setFilterById(*ids.toLongArray())).use { cursor -> + buildList { + while (cursor.moveToNext()) add(cursor.toGatewayRecord()) + } + } + } + + override fun remove(id: Long) { + manager.remove(id) + } + + private fun Cursor.toGatewayRecord(): DownloadGatewayRecord { + val id = getLong(getColumnIndexOrThrow(DownloadManager.COLUMN_ID)) + val status = when (getInt(getColumnIndexOrThrow(DownloadManager.COLUMN_STATUS))) { + DownloadManager.STATUS_PENDING -> DownloadGatewayStatus.PENDING + DownloadManager.STATUS_RUNNING -> DownloadGatewayStatus.RUNNING + DownloadManager.STATUS_PAUSED -> DownloadGatewayStatus.PAUSED + DownloadManager.STATUS_SUCCESSFUL -> DownloadGatewayStatus.SUCCESSFUL + else -> DownloadGatewayStatus.FAILED + } + val uriIndex = getColumnIndex(DownloadManager.COLUMN_LOCAL_URI) + return DownloadGatewayRecord( + id = id, + status = status, + bytesDownloaded = getLong(getColumnIndexOrThrow(DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)), + totalBytes = getLong(getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)), + localUri = uriIndex.takeIf { it >= 0 && !isNull(it) }?.let(::getString), + reason = getInt(getColumnIndexOrThrow(DownloadManager.COLUMN_REASON)), + lastModified = getLong(getColumnIndexOrThrow(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP)), + ) + } +} + +private class SharedPreferencesDownloadMetadataStore(context: Context) : DownloadMetadataStore { + private val preferences = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE) + + override fun readAll(): Map { + val raw = preferences.getString(KEY_DOWNLOADS, null) ?: return emptyMap() + return runCatching { + val array = JSONArray(raw) + buildMap { + for (index in 0 until array.length()) { + val value = array.getJSONObject(index) + put( + value.getLong("id"), + DownloadRequestData( + url = value.getString("url"), + fileName = value.getString("fileName"), + contentLength = value.optNullableLong("contentLength"), + contentType = value.optNullableString("contentType"), + cookie = value.optNullableString("cookie"), + userAgent = value.optNullableString("userAgent"), + ), + ) + } + } + }.getOrDefault(emptyMap()) + } + + override fun writeAll(values: Map) { + val array = JSONArray() + values.forEach { (id, request) -> + array.put( + JSONObject().apply { + put("id", id) + put("url", request.url) + put("fileName", request.fileName) + put("contentLength", request.contentLength ?: JSONObject.NULL) + put("contentType", request.contentType ?: JSONObject.NULL) + put("cookie", request.cookie ?: JSONObject.NULL) + put("userAgent", request.userAgent ?: JSONObject.NULL) + }, + ) + } + preferences.edit().putString(KEY_DOWNLOADS, array.toString()).apply() + } + + private fun JSONObject.optNullableString(key: String): String? = + if (isNull(key)) null else optString(key).takeIf(String::isNotBlank) + + private fun JSONObject.optNullableLong(key: String): Long? = + if (isNull(key)) null else optLong(key) + + private companion object { + const val PREFERENCES_NAME = "dao-downloads" + const val KEY_DOWNLOADS = "owned-downloads" + } +} + +private fun DownloadGatewayRecord.toBrowserDownload(request: DownloadRequestData) = BrowserDownload( + id = id, + request = request, + status = when (status) { + DownloadGatewayStatus.PENDING -> DownloadStatus.PENDING + DownloadGatewayStatus.RUNNING -> DownloadStatus.RUNNING + DownloadGatewayStatus.PAUSED -> DownloadStatus.PAUSED + DownloadGatewayStatus.SUCCESSFUL -> DownloadStatus.SUCCESSFUL + DownloadGatewayStatus.FAILED -> DownloadStatus.FAILED + }, + bytesDownloaded = bytesDownloaded, + totalBytes = totalBytes.takeIf { it > 0 } ?: request.contentLength, + localUri = localUri, + reason = reason, + lastModified = lastModified, +) + +private fun DownloadRequestData.toPendingDownload(id: Long) = BrowserDownload( + id = id, + request = this, + status = DownloadStatus.PENDING, + bytesDownloaded = 0, + totalBytes = contentLength, + localUri = null, + reason = 0, + lastModified = 0, +) + +private fun isHttpUrl(url: String): Boolean = + runCatching { URI(url).scheme?.lowercase() in setOf("http", "https") }.getOrDefault(false) + +private fun sanitizeFileName(fileName: String, url: String): String { + val fallback = runCatching { URI(url).path.substringAfterLast('/').takeIf(String::isNotBlank) }.getOrNull() + ?: "download" + return fileName.trim().ifEmpty { fallback } + .replace(Regex("[\\\\/:*?\"<>|\\u0000-\\u001F]"), "_") + .take(180) + .ifEmpty { "download" } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/browser/TabThumbnailRepository.kt b/android/app/src/main/java/com/msgbyte/dao/browser/TabThumbnailRepository.kt new file mode 100644 index 00000000..33850e89 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/browser/TabThumbnailRepository.kt @@ -0,0 +1,87 @@ +package com.msgbyte.dao.browser + +import android.content.Context +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.util.AtomicFile +import java.io.File +import java.security.MessageDigest +import java.util.concurrent.ConcurrentHashMap +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +class TabThumbnailRepository( + context: Context, + private val ioDispatcher: CoroutineDispatcher = Dispatchers.IO, + private val maxWidth: Int = MAX_WIDTH, + private val maxHeight: Int = MAX_HEIGHT, +) { + private val directory = File(context.cacheDir, DIRECTORY_NAME) + private val privateThumbnails = ConcurrentHashMap() + + suspend fun save(tabId: String, private: Boolean, bitmap: Bitmap) { + if (private) { + privateThumbnails[tabId] = bitmap + withContext(ioDispatcher) { AtomicFile(fileFor(tabId)).delete() } + return + } + + privateThumbnails.remove(tabId) + withContext(ioDispatcher) { + directory.mkdirs() + val scaled = bitmap.scaleWithin(maxWidth, maxHeight) + val file = AtomicFile(fileFor(tabId)) + val output = file.startWrite() + try { + check(scaled.compress(Bitmap.CompressFormat.PNG, 100, output)) + file.finishWrite(output) + } catch (error: Throwable) { + file.failWrite(output) + throw error + } finally { + if (scaled !== bitmap) scaled.recycle() + } + } + } + + suspend fun load(tabId: String, private: Boolean): Bitmap? { + if (private) return privateThumbnails[tabId] + return withContext(ioDispatcher) { + BitmapFactory.decodeFile(fileFor(tabId).path) + } + } + + suspend fun delete(tabId: String) { + privateThumbnails.remove(tabId) + withContext(ioDispatcher) { AtomicFile(fileFor(tabId)).delete() } + } + + private fun fileFor(tabId: String): File { + val digest = MessageDigest.getInstance("SHA-256") + .digest(tabId.toByteArray(Charsets.UTF_8)) + .joinToString("") { byte -> "%02x".format(byte) } + return File(directory, "$digest.webp") + } + + private fun Bitmap.scaleWithin(maxWidth: Int, maxHeight: Int): Bitmap { + val scale = minOf( + 1f, + maxWidth.toFloat() / width, + maxHeight.toFloat() / height, + ) + if (scale >= 1f) return this + return Bitmap.createScaledBitmap( + this, + (width * scale).toInt().coerceAtLeast(1), + (height * scale).toInt().coerceAtLeast(1), + true, + ) + } + + private companion object { + const val DIRECTORY_NAME = "dao_tab_thumbnails" + const val MAX_WIDTH = 360 + const val MAX_HEIGHT = 480 + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/AboutScreens.kt b/android/app/src/main/java/com/msgbyte/dao/ui/AboutScreens.kt new file mode 100644 index 00000000..3a955463 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/AboutScreens.kt @@ -0,0 +1,264 @@ +package com.msgbyte.dao.ui + +import android.content.Context +import androidx.activity.compose.BackHandler +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.safeDrawing +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.text.selection.SelectionContainer +import androidx.compose.foundation.verticalScroll +import androidx.compose.material3.Icon +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.composables.icons.lucide.ChevronRight +import com.composables.icons.lucide.Lucide +import com.composables.icons.lucide.Scale +import com.msgbyte.dao.R +import com.msgbyte.dao.about.AboutAppInfo +import com.msgbyte.dao.about.BundledLicense +import com.msgbyte.dao.about.readBundledLicenseText +import com.msgbyte.dao.ui.theme.LocalNovaColors +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +@Composable +fun AboutScreen( + appInfo: AboutAppInfo, + onOpenLicenses: () -> Unit, + onBack: () -> Unit, +) { + val colors = LocalNovaColors.current + + Column( + modifier = Modifier + .fillMaxSize() + .windowInsetsPadding(WindowInsets.safeDrawing) + .background(colors.background) + .testTag("about-screen"), + ) { + ScreenHeader(stringResource(R.string.about), onBack) + Column( + modifier = Modifier + .fillMaxWidth() + .weight(1f) + .verticalScroll(rememberScrollState()) + .padding(horizontal = 16.dp) + .testTag("about-content"), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Spacer(Modifier.height(24.dp)) + Box( + modifier = Modifier.size(88.dp), + contentAlignment = Alignment.Center, + ) { + androidx.compose.foundation.Image( + painter = painterResource(R.drawable.dao_brand_logo), + contentDescription = null, + contentScale = ContentScale.Fit, + modifier = Modifier.fillMaxSize(), + ) + } + Spacer(Modifier.height(12.dp)) + Text( + text = stringResource(R.string.dao_browser), + color = colors.foreground, + fontSize = 22.sp, + fontWeight = FontWeight.Bold, + ) + Spacer(Modifier.height(24.dp)) + NovaCard(modifier = Modifier.fillMaxWidth()) { + VersionRow(stringResource(R.string.app_version), appInfo.appVersion) + RowDivider() + VersionRow( + stringResource(R.string.browser_engine), + stringResource(R.string.gecko_engine_version, appInfo.engineVersion), + ) + } + Spacer(Modifier.height(14.dp)) + NovaCard(modifier = Modifier.fillMaxWidth()) { + SettingsRow( + modifier = Modifier.testTag("open-source-licenses-entry"), + icon = Lucide.Scale, + title = stringResource(R.string.open_source_licenses), + onClick = onOpenLicenses, + ) { + Icon( + Lucide.ChevronRight, + contentDescription = null, + tint = colors.faint, + modifier = Modifier.size(17.dp), + ) + } + } + } + } +} + +@Composable +fun OpenSourceLicensesScreen( + onBack: () -> Unit, + loadLicenseText: suspend (Context, BundledLicense) -> Result = ::readBundledLicenseText, +) { + var selectedLicense by rememberSaveable { mutableStateOf(null) } + + BackHandler(enabled = selectedLicense != null) { + selectedLicense = null + } + + if (selectedLicense == null) { + LicenseList(onBack = onBack, onSelectLicense = { selectedLicense = it }) + } else { + LicenseDetail( + license = requireNotNull(selectedLicense), + onBack = { selectedLicense = null }, + loadLicenseText = loadLicenseText, + ) + } +} + +@Composable +private fun VersionRow(label: String, version: String) { + val colors = LocalNovaColors.current + androidx.compose.foundation.layout.Row( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 14.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically, + ) { + Text(label, color = colors.muted, fontSize = 14.sp) + Text(version, color = colors.foreground, fontSize = 14.sp, fontWeight = FontWeight.Medium) + } +} + +@Composable +private fun LicenseList( + onBack: () -> Unit, + onSelectLicense: (BundledLicense) -> Unit, +) { + val colors = LocalNovaColors.current + + Column( + modifier = Modifier + .fillMaxSize() + .windowInsetsPadding(WindowInsets.safeDrawing) + .background(colors.background) + .testTag("open-source-licenses-screen"), + ) { + ScreenHeader(stringResource(R.string.open_source_licenses), onBack) + LazyColumn( + modifier = Modifier.fillMaxSize(), + contentPadding = PaddingValues(start = 16.dp, end = 16.dp, bottom = 24.dp), + ) { + item { SectionLabel(stringResource(R.string.bundled_extension_licenses)) } + item { + NovaCard { + BundledLicense.entries.forEachIndexed { index, license -> + if (index > 0) RowDivider() + SettingsRow( + modifier = Modifier.testTag("bundled-license-${license.name.lowercase()}"), + icon = Lucide.Scale, + title = stringResource(license.titleRes), + subtitle = stringResource( + R.string.extension_license_summary, + license.version, + stringResource(license.licenseRes), + ), + onClick = { onSelectLicense(license) }, + ) { + Icon( + Lucide.ChevronRight, + contentDescription = null, + tint = colors.faint, + modifier = Modifier.size(17.dp), + ) + } + } + } + } + } + } +} + +@Composable +private fun LicenseDetail( + license: BundledLicense, + onBack: () -> Unit, + loadLicenseText: suspend (Context, BundledLicense) -> Result, +) { + val context = LocalContext.current + val colors = LocalNovaColors.current + val unavailable = stringResource(R.string.license_unavailable) + var licenseText by remember(license) { mutableStateOf(null) } + + LaunchedEffect(license, loadLicenseText) { + licenseText = withContext(Dispatchers.IO) { + try { + loadLicenseText(context, license).getOrElse { unavailable } + } catch (error: CancellationException) { + throw error + } catch (_: Throwable) { + unavailable + } + } + } + + Column( + modifier = Modifier + .fillMaxSize() + .windowInsetsPadding(WindowInsets.safeDrawing) + .background(colors.background) + .testTag("license-detail-screen"), + ) { + ScreenHeader(stringResource(license.titleRes), onBack) + Box( + modifier = Modifier + .fillMaxSize() + .padding(horizontal = 16.dp) + .verticalScroll(rememberScrollState()), + ) { + SelectionContainer { + Text( + text = licenseText.orEmpty(), + modifier = Modifier + .fillMaxWidth() + .padding(bottom = 24.dp), + color = colors.foreground, + fontFamily = FontFamily.Monospace, + fontSize = 13.sp, + ) + } + } + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/AmoStoreScreen.kt b/android/app/src/main/java/com/msgbyte/dao/ui/AmoStoreScreen.kt new file mode 100644 index 00000000..2bffe682 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/AmoStoreScreen.kt @@ -0,0 +1,381 @@ +package com.msgbyte.dao.ui + +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material3.CircularProgressIndicator +import androidx.compose.material3.Icon +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.produceState +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.asImageBitmap +import androidx.compose.ui.platform.LocalConfiguration +import androidx.compose.ui.semantics.Role +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.composables.icons.lucide.Lucide +import com.composables.icons.lucide.Shield +import com.msgbyte.dao.R +import com.msgbyte.dao.browser.AmoAddon +import com.msgbyte.dao.browser.AmoStoreState +import com.msgbyte.dao.browser.ExtensionInstallState +import com.msgbyte.dao.ui.theme.LocalNovaColors +import java.net.HttpURLConnection +import java.net.URL +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.withContext + +@Composable +fun AmoStoreScreen( + state: AmoStoreState, + installedExtensionGuids: Set, + installState: ExtensionInstallState, + transientInstallGuid: String?, + onTransientInstallGuidChange: (String?) -> Unit, + onSearch: (String) -> Unit, + onRetry: () -> Unit, + onLoadNext: () -> Unit, + onInstall: (AmoAddon) -> Boolean, + onDismissInstallResult: () -> Unit, + onResolvePermission: (Boolean) -> Unit, + onBack: () -> Unit, +) { + val colors = LocalNovaColors.current + val stateQuery = when (state) { + is AmoStoreState.Content -> state.query + is AmoStoreState.Empty -> state.query + is AmoStoreState.Failed -> state.query + AmoStoreState.Loading -> "" + } + var searchText by remember(stateQuery) { mutableStateOf(stateQuery) } + var selectedGuid by remember { mutableStateOf(null) } + val installActive = installState is ExtensionInstallState.Staging || + installState is ExtensionInstallState.Installing || + installState is ExtensionInstallState.AwaitingPermission + + Column( + modifier = Modifier + .fillMaxSize() + .windowInsetsPadding(WindowInsets.safeDrawing) + .background(colors.background) + .testTag("amo-store-screen"), + ) { + ScreenHeader(stringResource(R.string.amo_store_title), onBack) + Row( + modifier = Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 8.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + OutlinedTextField( + value = searchText, + onValueChange = { searchText = it }, + modifier = Modifier.weight(1f).testTag("amo-search-field"), + placeholder = { Text(stringResource(R.string.amo_search_hint)) }, + singleLine = true, + shape = RoundedCornerShape(14.dp), + keyboardOptions = KeyboardOptions(imeAction = ImeAction.Search), + keyboardActions = KeyboardActions( + onSearch = { onSearch(searchText.trim()) }, + ), + ) + StoreActionButton( + label = stringResource(R.string.amo_search_action), + enabled = true, + modifier = Modifier.testTag("amo-search-submit"), + onClick = { onSearch(searchText.trim()) }, + ) + } + + if ( + installState !is ExtensionInstallState.Idle && + installState !is ExtensionInstallState.AwaitingPermission + ) { + Box(Modifier.padding(horizontal = 16.dp)) { + ExtensionInstallStatus( + state = installState, + onDismiss = onDismissInstallResult, + ) + } + } + + when (state) { + AmoStoreState.Loading -> Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center, + ) { + CircularProgressIndicator(color = colors.accent) + } + + is AmoStoreState.Empty -> AmoCatalogMessage( + message = stringResource(R.string.amo_empty), + onRetry = onRetry, + ) + + is AmoStoreState.Failed -> AmoCatalogMessage( + message = stringResource(R.string.amo_failure), + onRetry = onRetry, + ) + + is AmoStoreState.Content -> LazyColumn( + modifier = Modifier.fillMaxSize(), + contentPadding = PaddingValues(start = 16.dp, end = 16.dp, bottom = 24.dp), + verticalArrangement = Arrangement.spacedBy(10.dp), + ) { + if (state.query.isBlank()) { + item { SectionLabel(stringResource(R.string.amo_recommended)) } + } + items(state.items, key = AmoAddon::guid) { addon -> + val transientInstalled = transientInstallGuid == addon.guid && + (installState is ExtensionInstallState.Installed || + installState is ExtensionInstallState.Idle) + AmoAddonCard( + addon = addon, + expanded = selectedGuid == addon.guid, + installed = addon.guid in installedExtensionGuids || transientInstalled, + installing = transientInstallGuid == addon.guid && installActive, + installEnabled = !installActive && + transientInstallGuid != addon.guid && + addon.guid !in installedExtensionGuids, + onSelect = { selectedGuid = addon.guid }, + onInstall = { + if (onInstall(addon)) onTransientInstallGuidChange(addon.guid) + }, + ) + } + if (state.nextPage != null) { + item { + StoreActionButton( + label = stringResource(R.string.amo_load_more), + enabled = !state.isLoadingNext, + modifier = Modifier + .fillMaxWidth() + .padding(top = 4.dp) + .testTag("amo-load-more"), + onClick = onLoadNext, + ) + } + } + } + } + } + + ExtensionPermissionSheet( + state = installState, + onResolvePermission = onResolvePermission, + ) +} + +@Composable +private fun AmoAddonCard( + addon: AmoAddon, + expanded: Boolean, + installed: Boolean, + installing: Boolean, + installEnabled: Boolean, + onSelect: () -> Unit, + onInstall: () -> Unit, +) { + val colors = LocalNovaColors.current + val ratingLocale = LocalConfiguration.current.locales[0] + NovaCard( + modifier = Modifier + .fillMaxWidth() + .testTag("amo-addon-${addon.guid}") + .clickable(onClick = onSelect), + ) { + Column(Modifier.fillMaxWidth().padding(14.dp)) { + Row(verticalAlignment = Alignment.CenterVertically) { + AmoAddonIcon(addon.iconUrl) + Spacer(Modifier.width(12.dp)) + Column(Modifier.weight(1f)) { + Text( + text = addon.name, + color = colors.foreground, + fontSize = 15.sp, + fontWeight = FontWeight.SemiBold, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + if (addon.author.isNotBlank()) { + Text( + text = stringResource(R.string.amo_author, addon.author), + color = colors.muted, + fontSize = 12.sp, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + } + } + Spacer(Modifier.width(8.dp)) + StoreActionButton( + label = stringResource( + when { + installed -> R.string.amo_installed + installing -> R.string.amo_installing + else -> R.string.amo_install + }, + ), + enabled = installEnabled, + modifier = Modifier.testTag("amo-install-${addon.guid}"), + onClick = onInstall, + ) + } + if (expanded) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(top = 12.dp) + .testTag("amo-addon-detail-${addon.guid}"), + verticalArrangement = Arrangement.spacedBy(5.dp), + ) { + if (addon.summary.isNotBlank()) { + Text(addon.summary, color = colors.foreground, fontSize = 13.sp) + } + Text( + stringResource(R.string.amo_version, addon.version), + color = colors.muted, + fontSize = 12.sp, + ) + addon.rating?.let { rating -> + Text( + stringResource( + R.string.amo_rating, + String.format(ratingLocale, "%.1f", rating), + ), + color = colors.muted, + fontSize = 12.sp, + ) + } + } + } + } + } +} + +@Composable +private fun AmoAddonIcon(iconUrl: String?) { + val colors = LocalNovaColors.current + val bitmap by produceState(initialValue = null, key1 = iconUrl) { + value = withContext(Dispatchers.IO) { loadAmoIcon(iconUrl) } + } + Box( + modifier = Modifier + .size(44.dp) + .clip(RoundedCornerShape(12.dp)) + .background(colors.surfaceSecondary) + .border(1.dp, colors.border, RoundedCornerShape(12.dp)), + contentAlignment = Alignment.Center, + ) { + if (bitmap != null) { + Image( + bitmap = bitmap!!.asImageBitmap(), + contentDescription = null, + modifier = Modifier.size(34.dp).clip(RoundedCornerShape(8.dp)), + ) + } else { + Icon(Lucide.Shield, contentDescription = null, modifier = Modifier.size(22.dp)) + } + } +} + +@Composable +private fun AmoCatalogMessage(message: String, onRetry: () -> Unit) { + val colors = LocalNovaColors.current + Column( + modifier = Modifier.fillMaxSize().padding(24.dp), + horizontalAlignment = Alignment.CenterHorizontally, + verticalArrangement = Arrangement.Center, + ) { + Text(message, color = colors.muted, fontSize = 14.sp) + Spacer(Modifier.height(12.dp)) + StoreActionButton( + label = stringResource(R.string.amo_retry), + enabled = true, + modifier = Modifier.testTag("amo-retry"), + onClick = onRetry, + ) + } +} + +@Composable +private fun StoreActionButton( + label: String, + enabled: Boolean, + modifier: Modifier = Modifier, + onClick: () -> Unit, +) { + val colors = LocalNovaColors.current + Surface( + modifier = modifier + .heightIn(min = 48.dp) + .clip(RoundedCornerShape(12.dp)) + .clickable(enabled = enabled, role = Role.Button, onClick = onClick), + color = if (enabled) colors.accent else colors.surfaceSecondary, + shape = RoundedCornerShape(12.dp), + border = if (enabled) null else androidx.compose.foundation.BorderStroke(1.dp, colors.border), + ) { + Box(Modifier.padding(horizontal = 14.dp), contentAlignment = Alignment.Center) { + Text( + text = label, + color = if (enabled) colors.onAccent else colors.muted, + fontSize = 13.sp, + fontWeight = FontWeight.SemiBold, + ) + } + } +} + +private fun loadAmoIcon(iconUrl: String?): Bitmap? { + val url = runCatching { URL(iconUrl) }.getOrNull() + ?.takeIf { it.protocol == "https" && it.host.isNotBlank() } + ?: return null + val connection = runCatching { url.openConnection() as HttpURLConnection }.getOrNull() + ?: return null + return try { + connection.connectTimeout = 5_000 + connection.readTimeout = 5_000 + connection.inputStream.use(BitmapFactory::decodeStream) + } catch (_: Throwable) { + null + } finally { + connection.disconnect() + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/BrowserScreen.kt b/android/app/src/main/java/com/msgbyte/dao/ui/BrowserScreen.kt new file mode 100644 index 00000000..ca35aa0f --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/BrowserScreen.kt @@ -0,0 +1,1613 @@ +package com.msgbyte.dao.ui + +import android.content.Intent +import android.Manifest +import android.content.pm.PackageManager +import android.net.Uri +import android.util.Log +import androidx.activity.compose.BackHandler +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.core.CubicBezierEasing +import androidx.compose.animation.core.RepeatMode +import androidx.compose.animation.core.animateDpAsState +import androidx.compose.animation.core.animateFloat +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.infiniteRepeatable +import androidx.compose.animation.core.rememberInfiniteTransition +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.Canvas +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.focusable +import androidx.compose.foundation.indication +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.text.selection.SelectionContainer +import androidx.compose.foundation.verticalScroll +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxHeight +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.BasicTextField +import androidx.compose.foundation.text.KeyboardActions +import androidx.compose.foundation.text.KeyboardOptions +import androidx.compose.material3.DrawerValue +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.ModalDrawerSheet +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.ModalNavigationDrawer +import androidx.compose.material3.ripple +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.rememberDrawerState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.runtime.saveable.rememberSaveable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.focus.FocusRequester +import androidx.compose.ui.focus.focusRequester +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.graphics.StrokeCap +import androidx.compose.ui.graphics.StrokeJoin +import androidx.compose.ui.graphics.drawscope.Stroke +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.graphics.vector.PathParser +import androidx.compose.ui.input.pointer.pointerInput +import androidx.compose.ui.layout.Layout +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.semantics.contentDescription +import androidx.compose.ui.semantics.selected +import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.input.ImeAction +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.LayoutDirection +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.composables.icons.lucide.Bookmark +import com.composables.icons.lucide.ChevronLeft +import com.composables.icons.lucide.ChevronRight +import com.composables.icons.lucide.ChevronDown +import com.composables.icons.lucide.ChevronUp +import com.composables.icons.lucide.Download +import com.composables.icons.lucide.Ellipsis +import com.composables.icons.lucide.History +import com.composables.icons.lucide.Lock +import com.composables.icons.lucide.Globe +import com.composables.icons.lucide.House +import com.composables.icons.lucide.Lucide +import com.composables.icons.lucide.Moon +import com.composables.icons.lucide.Puzzle +import com.composables.icons.lucide.RefreshCw +import com.composables.icons.lucide.ScanLine +import com.composables.icons.lucide.Search +import com.composables.icons.lucide.SearchCode +import com.composables.icons.lucide.Settings +import com.composables.icons.lucide.Share +import com.composables.icons.lucide.Star +import com.composables.icons.lucide.Sun +import com.composables.icons.lucide.X +import com.msgbyte.dao.R +import com.msgbyte.dao.about.readAboutAppInfo +import com.msgbyte.dao.browser.AppConfiguration +import com.msgbyte.dao.browser.AmoStoreViewModel +import com.msgbyte.dao.browser.BrowserTabsController +import com.msgbyte.dao.browser.BrowserLibraryRepository +import com.msgbyte.dao.browser.BookmarkEntry +import com.msgbyte.dao.browser.ExtensionInstallState +import com.msgbyte.dao.browser.HistoryVisit +import com.msgbyte.dao.browser.NavigationTargetResolver +import com.msgbyte.dao.browser.SiteSecurityDetails +import com.msgbyte.dao.browser.SiteSecurityState +import com.msgbyte.dao.browser.SystemDownloadRepository +import com.msgbyte.dao.browser.TabThumbnailRepository +import com.msgbyte.dao.ui.theme.LocalNovaColors +import java.time.LocalDateTime +import kotlinx.coroutines.CoroutineStart +import kotlinx.coroutines.launch +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.EngineSession +import mozilla.components.browser.state.state.TabSessionState +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import androidx.core.content.ContextCompat + +const val BROWSER_SURFACE_TEST_TAG = "browser-surface" +const val BROWSER_CONTROLS_TEST_TAG = "browser-controls" +const val NEW_TAB_SCREEN_TEST_TAG = "new-tab-screen" +internal const val SECURITY_RIPPLE_TEST_TAG = "security-ripple" +internal const val BOOKMARK_DRAWER_TILE_TEST_TAG = "bookmark-drawer-tile" +internal const val BOOKMARK_DRAWER_ICON_TEST_TAG = "bookmark-drawer-icon" + +private val NovaEasing = CubicBezierEasing(0.22f, 0.61f, 0.36f, 1f) +private val FilledStarIcon = ImageVector.Builder( + name = "FilledStar", + defaultWidth = 24.dp, + defaultHeight = 24.dp, + viewportWidth = 24f, + viewportHeight = 24f, +).apply { + addPath( + pathData = PathParser().parsePathString( + "M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.123 2.123 0 0 0 " + + "1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.123 " + + "2.123 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.122 " + + "2.122 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.122 " + + "2.122 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.122 " + + "2.122 0 0 0 1.597-1.16z", + ).toNodes(), + fill = SolidColor(Color.Black), + stroke = SolidColor(Color.Black), + strokeLineWidth = 2f, + strokeLineCap = StrokeCap.Round, + strokeLineJoin = StrokeJoin.Round, + ) +}.build() + +enum class BrowserDestination { + NewTab, + AddressEdit, + Browsing, + Settings, + About, + OpenSourceLicenses, + History, + Bookmarks, + Downloads, + Extensions, + AmoStore, + Tabs, +} + +@Composable +fun BrowserScreen( + engine: Engine, + controller: BrowserTabsController, + thumbnailRepository: TabThumbnailRepository, + library: BrowserLibraryRepository, + downloads: SystemDownloadRepository, + extensions: com.msgbyte.dao.browser.ExtensionRepository, + amoStoreViewModel: AmoStoreViewModel, + resolver: NavigationTargetResolver, + preferences: com.msgbyte.dao.browser.BrowserPreferenceState, + onDarkThemeChange: (Boolean) -> Unit, + onFontScaleChange: (com.msgbyte.dao.browser.BrowserFontScale) -> Unit, + onSearchEngineChange: (com.msgbyte.dao.browser.BrowserSearchEngine) -> Unit, + onTrackingProtectionChange: (Boolean) -> Unit, + onDefaultPrivateBrowsingChange: (Boolean) -> Unit, + onRemoteDebuggingChange: (Boolean) -> Unit, + onEnableRemoteDebuggingWithAcknowledgement: () -> Unit, +) { + val browserState by controller.state.collectAsStateWithLifecycle() + val selectedTab = browserState.tabs.firstOrNull { it.id == browserState.selectedTabId } + val thumbnailCapture = remember { BrowserThumbnailCapture() } + var destination by remember { mutableStateOf(BrowserDestination.NewTab) } + var returnDestination by remember { mutableStateOf(BrowserDestination.Browsing) } + var addressEditUrl by remember { mutableStateOf("") } + var homeReturnTabId by remember { mutableStateOf(null) } + var homeReturnUrl by remember { mutableStateOf(null) } + var extensionPopupSession by remember { mutableStateOf(null) } + var amoTransientInstallGuid by rememberSaveable { mutableStateOf(null) } + val installedExtensions by extensions.extensions.collectAsStateWithLifecycle() + val extensionInstallState by extensions.installState.collectAsStateWithLifecycle() + val history by library.history.collectAsStateWithLifecycle() + val bookmarks by library.bookmarks.collectAsStateWithLifecycle() + val folders by library.folders.collectAsStateWithLifecycle() + val scope = rememberCoroutineScope() + val thumbnailCaptures = remember(scope, thumbnailCapture, thumbnailRepository) { + TabThumbnailCaptureCoordinator( + scope = scope, + captureThumbnail = thumbnailCapture::capture, + saveThumbnail = thumbnailRepository::save, + deleteThumbnail = thumbnailRepository::delete, + onError = { error -> + Log.e("BrowserScreen", "Unable to manage tab thumbnail", error) + }, + ) + } + var initialTabApplied by remember { mutableStateOf(false) } + + AmoInstallTrackingEffect( + transientInstallGuid = amoTransientInstallGuid, + installedExtensionGuids = installedExtensions.mapTo(mutableSetOf()) { it.id }, + installState = extensionInstallState, + onTransientInstallGuidChange = { amoTransientInstallGuid = it }, + ) + + DisposableEffect(extensions, controller) { + extensions.setPopupSessionHandler { popupSession -> + extensionPopupSession?.close() + extensionPopupSession = popupSession + destination = BrowserDestination.Browsing + } + onDispose { + extensions.setPopupSessionHandler(null) + extensionPopupSession?.close() + } + } + + BackHandler(enabled = extensionPopupSession != null) { + extensionPopupSession?.close() + extensionPopupSession = null + } + + LaunchedEffect(selectedTab?.id, selectedTab?.engineState?.engineSession) { + selectedTab + ?.takeIf { it.engineState.engineSession == null } + ?.let { controller.ensureSession(it.id) } + } + + LaunchedEffect(selectedTab?.id) { + if (!initialTabApplied && selectedTab != null) { + destination = if (selectedTab.content.url == AppConfiguration.INITIAL_URL) { + BrowserDestination.NewTab + } else { + BrowserDestination.Browsing + } + initialTabApplied = true + } + } + + BackHandler( + enabled = destination == BrowserDestination.NewTab && selectedTab?.id == homeReturnTabId, + ) { + if (selectedTab?.content?.canGoBack == true) { + controller.goBack() + } else { + homeReturnUrl?.let(controller::navigate) + } + homeReturnTabId = null + homeReturnUrl = null + destination = BrowserDestination.Browsing + } + + val captureSelected = { + controller.selectedTab()?.let { tab -> + thumbnailCaptures.capture(tab.id, tab.content.private) + } + } + + val navigate: (String) -> Unit = { rawTarget -> + resolver.resolve(rawTarget)?.let { target -> + if (controller.selectedTab() == null) controller.createTab() + homeReturnTabId = null + homeReturnUrl = null + controller.navigate(target) + destination = BrowserDestination.Browsing + } + } + val openUtility: (BrowserDestination) -> Unit = { target -> + returnDestination = destination + captureSelected() + destination = target + } + val closeUtility = { + destination = if (returnDestination == BrowserDestination.NewTab) { + BrowserDestination.NewTab + } else { + BrowserDestination.Browsing + } + } + + BackHandler(enabled = destination == BrowserDestination.Settings) { + closeUtility() + } + + BackHandler(enabled = destination == BrowserDestination.About) { + destination = BrowserDestination.Settings + } + + BackHandler(enabled = destination == BrowserDestination.OpenSourceLicenses) { + destination = BrowserDestination.About + } + + BackHandler(enabled = destination == BrowserDestination.AmoStore) { + destination = BrowserDestination.Extensions + } + + Surface( + modifier = Modifier.fillMaxSize(), + color = LocalNovaColors.current.background, + ) { + val popupSession = extensionPopupSession + if (popupSession != null) { + ExtensionPopupScreen( + engine = engine, + session = popupSession, + onClose = { + popupSession.close() + extensionPopupSession = null + }, + ) + } else when (destination) { + BrowserDestination.NewTab -> NewTabScreen( + bookmarks = bookmarks, + history = history, + tabCount = browserState.tabs.size, + onTabs = { destination = BrowserDestination.Tabs }, + onSettings = { openUtility(BrowserDestination.Settings) }, + onNavigate = navigate, + ) + BrowserDestination.AddressEdit -> NewTabScreen( + bookmarks = bookmarks, + history = history, + initialQuery = addressEditUrl, + startExpanded = true, + tabCount = browserState.tabs.size, + onTabs = { destination = BrowserDestination.Tabs }, + onSettings = { openUtility(BrowserDestination.Settings) }, + onExitExpanded = { destination = BrowserDestination.Browsing }, + onNavigate = navigate, + ) + BrowserDestination.Browsing -> BrowsingScreen( + engine = engine, + controller = controller, + tab = selectedTab, + tabCount = browserState.tabs.size, + thumbnailCapture = thumbnailCapture, + library = library, + darkTheme = preferences.darkTheme, + onDarkThemeChange = onDarkThemeChange, + onEditAddress = { url -> + addressEditUrl = url + destination = BrowserDestination.AddressEdit + }, + onOpenTabs = { + captureSelected() + destination = BrowserDestination.Tabs + }, + onHome = { + homeReturnUrl = controller.selectedTab()?.content?.url + controller.goHome() + homeReturnTabId = controller.selectedTab()?.id + destination = BrowserDestination.NewTab + }, + onNavigate = navigate, + onOpen = openUtility, + ) + BrowserDestination.Settings -> SettingsScreen( + preferences = preferences, + onDarkThemeChange = onDarkThemeChange, + onFontScaleChange = onFontScaleChange, + onSearchEngineChange = onSearchEngineChange, + onTrackingProtectionChange = onTrackingProtectionChange, + onDefaultPrivateBrowsingChange = onDefaultPrivateBrowsingChange, + onRemoteDebuggingChange = onRemoteDebuggingChange, + onEnableRemoteDebuggingWithAcknowledgement = + onEnableRemoteDebuggingWithAcknowledgement, + onOpenAbout = { destination = BrowserDestination.About }, + onBack = closeUtility, + ) + BrowserDestination.About -> AboutScreen( + appInfo = readAboutAppInfo(LocalContext.current), + onOpenLicenses = { destination = BrowserDestination.OpenSourceLicenses }, + onBack = { destination = BrowserDestination.Settings }, + ) + BrowserDestination.OpenSourceLicenses -> OpenSourceLicensesScreen( + onBack = { destination = BrowserDestination.About }, + ) + BrowserDestination.History -> HistoryScreen( + visits = history, + onClear = { scope.launch { library.clearHistory() } }, + onDelete = { id -> scope.launch { library.deleteHistoryVisit(id) } }, + onBack = closeUtility, + onNavigate = navigate, + ) + BrowserDestination.Bookmarks -> BookmarksScreen( + bookmarks = bookmarks, + folders = folders, + onCreateFolder = { title -> scope.launch { library.createFolder(title) } }, + onUpdateBookmark = { id, title, folderId, kind -> + scope.launch { library.updateBookmark(id, title, folderId, kind) } + }, + onDeleteBookmark = { id -> scope.launch { library.deleteBookmark(id) } }, + onBack = closeUtility, + onNavigate = navigate, + ) + BrowserDestination.Downloads -> DownloadsScreen(repository = downloads, onBack = closeUtility) + BrowserDestination.Extensions -> ExtensionsScreen( + repository = extensions, + onOpenStore = { destination = BrowserDestination.AmoStore }, + onActionInvoked = { destination = BrowserDestination.Browsing }, + onBack = closeUtility, + ) + BrowserDestination.AmoStore -> { + val storeState by amoStoreViewModel.state.collectAsStateWithLifecycle() + AmoStoreScreen( + state = storeState, + installedExtensionGuids = installedExtensions.mapTo(mutableSetOf()) { it.id }, + installState = extensionInstallState, + transientInstallGuid = amoTransientInstallGuid, + onTransientInstallGuidChange = { amoTransientInstallGuid = it }, + onSearch = amoStoreViewModel::search, + onRetry = amoStoreViewModel::retry, + onLoadNext = amoStoreViewModel::loadNext, + onInstall = { addon -> extensions.installFromAmo(addon.installUrl) }, + onDismissInstallResult = extensions::dismissResult, + onResolvePermission = extensions::resolvePermission, + onBack = { destination = BrowserDestination.Extensions }, + ) + } + BrowserDestination.Tabs -> TabGridScreen( + tabs = browserState.tabs, + selectedTabId = browserState.selectedTabId, + thumbnailRepository = thumbnailRepository, + onSelect = { tabId -> + controller.selectTab(tabId) + destination = if (controller.selectedTab()?.content?.url == AppConfiguration.INITIAL_URL) { + BrowserDestination.NewTab + } else { + BrowserDestination.Browsing + } + }, + onClose = { tabId -> + scope.launch(start = CoroutineStart.UNDISPATCHED) { + thumbnailCaptures.close(tabId) + } + controller.closeTab(tabId) + }, + onNewTab = { + controller.createTab() + destination = BrowserDestination.NewTab + }, + onBack = { + destination = if (controller.selectedTab()?.content?.url == AppConfiguration.INITIAL_URL) { + BrowserDestination.NewTab + } else { + BrowserDestination.Browsing + } + }, + ) + } + } +} + +@Composable +internal fun AmoInstallTrackingEffect( + transientInstallGuid: String?, + installedExtensionGuids: Set, + installState: ExtensionInstallState, + onTransientInstallGuidChange: (String?) -> Unit, +) { + LaunchedEffect(transientInstallGuid, installedExtensionGuids, installState) { + if (transientInstallGuid != null && + (transientInstallGuid in installedExtensionGuids || + installState is ExtensionInstallState.Failed) + ) { + onTransientInstallGuidChange(null) + } + } +} + +@Composable +private fun ExtensionPopupScreen( + engine: Engine, + session: EngineSession, + onClose: () -> Unit, +) { + val colors = LocalNovaColors.current + Column( + Modifier + .fillMaxSize() + .windowInsetsPadding(WindowInsets.safeDrawing) + .background(colors.background), + ) { + ScreenHeader(stringResource(R.string.extensions), onClose) + BrowserSurface( + engine = engine, + session = session, + modifier = Modifier.fillMaxWidth().weight(1f), + ) + } +} + +@Composable +private fun NewTabScreen( + bookmarks: List, + history: List, + tabCount: Int, + onTabs: () -> Unit, + onSettings: () -> Unit, + initialQuery: String = "", + startExpanded: Boolean = false, + onExitExpanded: (() -> Unit)? = null, + onNavigate: (String) -> Unit, +) { + val colors = LocalNovaColors.current + val focusRequester = remember { FocusRequester() } + var searchExpanded by remember(startExpanded) { mutableStateOf(startExpanded) } + var scannerOpen by remember { mutableStateOf(false) } + var query by remember(initialQuery) { mutableStateOf(initialQuery) } + val now = remember { LocalDateTime.now() } + val datePattern = stringResource(R.string.new_tab_date_format) + val topOffset by animateDpAsState( + targetValue = if (searchExpanded) 16.dp else 420.dp, + animationSpec = tween(330, easing = NovaEasing), + label = "searchOffset", + ) + val results = remember(query, bookmarks, history) { + buildLibrarySuggestions(query, bookmarks, history) + } + + LaunchedEffect(searchExpanded) { + if (searchExpanded) focusRequester.requestFocus() + } + + BackHandler(enabled = scannerOpen || searchExpanded) { + if (scannerOpen) scannerOpen = false else if (onExitExpanded != null) { + onExitExpanded() + } else { + searchExpanded = false + query = "" + } + } + + Box( + modifier = Modifier + .fillMaxSize() + .windowInsetsPadding(WindowInsets.safeDrawing) + .testTag(NEW_TAB_SCREEN_TEST_TAG), + ) { + AnimatedVisibility( + visible = !searchExpanded, + modifier = Modifier.align(Alignment.TopEnd).padding(12.dp), + enter = fadeIn(tween(180)), + exit = fadeOut(tween(140)), + ) { + IconButton(onClick = onSettings) { + Icon( + Lucide.Settings, + contentDescription = stringResource(R.string.settings), + tint = colors.muted, + modifier = Modifier.size(20.dp), + ) + } + } + + AnimatedVisibility( + visible = !searchExpanded, + modifier = Modifier.align(Alignment.Center).offset(y = (-150).dp), + exit = fadeOut(tween(280)) + slideOutVertically { -14 }, + enter = fadeIn(tween(280)) + slideInVertically { -14 }, + ) { + Column(horizontalAlignment = Alignment.CenterHorizontally) { + Image( + painter = painterResource(R.drawable.dao_brand_logo), + contentDescription = stringResource(R.string.dao_logo_content_description), + modifier = Modifier + .size(64.dp) + .padding(3.dp), + ) + Spacer(Modifier.height(22.dp)) + Text( + formatNewTabDate(now.toLocalDate(), datePattern), + color = colors.muted, + fontSize = 11.sp, + letterSpacing = 1.5.sp, + fontFamily = FontFamily.Monospace, + ) + Spacer(Modifier.height(9.dp)) + Text( + stringResource( + when (greetingPeriod(now.hour)) { + GreetingPeriod.MORNING -> R.string.new_tab_greeting_morning + GreetingPeriod.AFTERNOON -> R.string.new_tab_greeting_afternoon + GreetingPeriod.EVENING -> R.string.new_tab_greeting_evening + }, + ), + color = colors.foreground, + fontSize = 24.sp, + fontWeight = FontWeight.SemiBold, + ) + Text( + stringResource(R.string.new_tab_question), + color = colors.muted, + fontSize = 24.sp, + fontWeight = FontWeight.SemiBold, + ) + } + } + + SearchField( + value = query, + expanded = searchExpanded, + onValueChange = { query = it }, + onActivate = { + searchExpanded = true + }, + onTrailingClick = { + if (searchExpanded) { + if (query.isNotBlank()) { + query = "" + } else if (onExitExpanded != null) { + onExitExpanded() + } else { + searchExpanded = false + } + } else { + scannerOpen = true + } + }, + onSubmit = { if (query.isNotBlank()) onNavigate(query) }, + tabCount = tabCount, + onTabs = onTabs, + focusRequester = focusRequester, + modifier = Modifier + .align(Alignment.TopCenter) + .offset(y = topOffset) + .padding(horizontal = 20.dp), + ) + + AnimatedVisibility( + visible = searchExpanded, + modifier = Modifier.padding(top = 88.dp), + enter = fadeIn(tween(260, delayMillis = 40)) + slideInVertically { 8 }, + exit = fadeOut(tween(160)), + ) { + SuggestionList( + query = query, + results = results, + onNavigate = { suggestion -> + onNavigate(if (suggestion.type == SuggestionType.Search) suggestion.title else suggestion.target) + }, + ) + } + + if (scannerOpen) { + ScannerOverlay( + onClose = { scannerOpen = false }, + onResult = { content -> + scannerOpen = false + onNavigate(content) + }, + ) + } + } +} + +@Composable +private fun SearchField( + value: String, + expanded: Boolean, + onValueChange: (String) -> Unit, + onActivate: () -> Unit, + onTrailingClick: () -> Unit, + onSubmit: () -> Unit, + tabCount: Int, + onTabs: () -> Unit, + focusRequester: FocusRequester, + modifier: Modifier = Modifier, +) { + val colors = LocalNovaColors.current + val tabSwitcherDescription = stringResource(R.string.tab_switcher) + val borderColor = if (expanded) colors.accent else colors.strongBorder + val inputTextStyle = androidx.compose.ui.text.TextStyle( + color = colors.foreground, + fontSize = 16.sp, + lineHeight = 16.sp, + ) + Row( + modifier = modifier + .fillMaxWidth() + .height(56.dp) + .clip(CircleShape) + .background(colors.surface, CircleShape) + .border(1.dp, borderColor, CircleShape) + .clickable { onActivate() } + .padding(start = 18.dp, end = 8.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon(Lucide.Search, contentDescription = null, tint = colors.muted, modifier = Modifier.size(19.dp)) + Spacer(Modifier.width(10.dp)) + if (expanded) { + BasicTextField( + value = value, + onValueChange = onValueChange, + modifier = Modifier + .weight(1f) + .focusRequester(focusRequester), + singleLine = true, + textStyle = inputTextStyle, + keyboardOptions = KeyboardOptions(imeAction = ImeAction.Go), + keyboardActions = KeyboardActions(onGo = { onSubmit() }), + decorationBox = { inner -> + Box( + modifier = Modifier.fillMaxWidth(), + contentAlignment = Alignment.CenterStart, + ) { + if (value.isEmpty()) { + Text( + stringResource(R.string.address_hint), + style = inputTextStyle.copy(color = colors.faint), + ) + } + inner() + } + }, + ) + } else { + Text( + text = stringResource(R.string.address_hint), + modifier = Modifier.weight(1f), + color = colors.faint, + fontSize = 16.sp, + ) + } + if (!expanded) { + TabCountButton( + tabCount = tabCount, + contentDescription = tabSwitcherDescription, + onClick = onTabs, + modifier = Modifier.size(36.dp), + ) + Box(Modifier.width(1.dp).height(24.dp).background(colors.strongBorder)) + Spacer(Modifier.width(4.dp)) + } + IconButton(onClick = onTrailingClick, modifier = Modifier.size(40.dp)) { + AnimatedContent(targetState = expanded, label = "searchTrailingIcon") { isExpanded -> + Icon( + if (isExpanded) Lucide.X else Lucide.ScanLine, + contentDescription = stringResource(if (isExpanded) R.string.clear_input else R.string.scan_qr), + tint = if (isExpanded) colors.foreground else colors.muted, + modifier = Modifier.size(20.dp), + ) + } + } + } +} + +@Composable +private fun SuggestionList( + query: String, + results: List, + onNavigate: (SearchSuggestion) -> Unit, +) { + val colors = LocalNovaColors.current + LazyColumn( + modifier = Modifier.fillMaxSize().padding(horizontal = 20.dp), + contentPadding = androidx.compose.foundation.layout.PaddingValues(top = 8.dp, bottom = 24.dp), + ) { + if (query.isNotBlank()) { + item { + SuggestionRow( + title = AnnotatedString(stringResource(R.string.search_query, query)), + subtitle = "", + icon = Lucide.Search, + onClick = { onNavigate(SearchSuggestion(query, query, SuggestionType.Search)) }, + ) + } + item { SectionLabel(stringResource(R.string.suggestions)) } + } else { + item { SectionLabel(stringResource(R.string.recent_visits)) } + } + if (results.isEmpty() && query.isNotBlank()) { + item { + Text( + stringResource(R.string.no_search_results), + modifier = Modifier.padding(horizontal = 6.dp, vertical = 14.dp), + color = colors.faint, + fontSize = 15.sp, + ) + } + } else if (results.isEmpty()) { + item { + Text( + stringResource(R.string.no_recent_visits), + modifier = Modifier.padding(horizontal = 6.dp, vertical = 14.dp), + color = colors.faint, + fontSize = 15.sp, + ) + } + } else { + items(results) { suggestion -> + SuggestionRow( + title = highlightedText(suggestion.title, query, colors.accent), + subtitle = if (suggestion.type == SuggestionType.Search) "" else suggestion.subtitle, + letter = suggestion.letter.takeIf { suggestion.type == SuggestionType.Site }, + avatarColor = Color(suggestion.avatarColor), + icon = Lucide.Search.takeIf { suggestion.type == SuggestionType.Search }, + onClick = { onNavigate(suggestion) }, + ) + } + } + } +} + +private fun highlightedText(text: String, query: String, accent: Color): AnnotatedString { + if (query.isBlank()) return AnnotatedString(text) + val start = text.indexOf(query, ignoreCase = true) + if (start < 0) return AnnotatedString(text) + return buildAnnotatedString { + append(text) + addStyle(SpanStyle(color = accent, fontWeight = FontWeight.SemiBold), start, start + query.length) + } +} + +@Composable +private fun SuggestionRow( + title: AnnotatedString, + subtitle: String, + onClick: () -> Unit, + letter: String? = null, + avatarColor: Color = LocalNovaColors.current.accent, + icon: ImageVector? = null, +) { + val colors = LocalNovaColors.current + Row( + modifier = Modifier + .fillMaxWidth() + .clip(RoundedCornerShape(12.dp)) + .clickable(onClick = onClick) + .padding(horizontal = 6.dp, vertical = 6.dp) + .height(44.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + if (letter != null) LetterAvatar(letter, avatarColor, Modifier.size(34.dp)) + else Box( + Modifier.size(34.dp).background(colors.surfaceSecondary, RoundedCornerShape(9.dp)), + contentAlignment = Alignment.Center, + ) { if (icon != null) Icon(icon, null, Modifier.size(18.dp)) } + Spacer(Modifier.width(13.dp)) + Column(Modifier.weight(1f)) { + Text(title, color = colors.foreground, fontSize = 15.sp, fontWeight = FontWeight.Medium, maxLines = 1) + if (subtitle.isNotEmpty()) Text(subtitle, color = colors.faint, fontSize = 12.5.sp, maxLines = 1) + } + Icon(Lucide.ChevronRight, null, tint = colors.faint, modifier = Modifier.size(16.dp)) + } +} + +@Composable +private fun ScannerOverlay( + onClose: () -> Unit, + onResult: (String) -> Unit, +) { + val context = LocalContext.current + var cameraGranted by remember { + mutableStateOf( + ContextCompat.checkSelfPermission(context, Manifest.permission.CAMERA) == + PackageManager.PERMISSION_GRANTED, + ) + } + var cameraError by remember { mutableStateOf(false) } + val permissionLauncher = rememberLauncherForActivityResult( + ActivityResultContracts.RequestPermission(), + ) { granted -> cameraGranted = granted } + val transition = rememberInfiniteTransition(label = "scanner") + val laserPosition by transition.animateFloat( + initialValue = 0.08f, + targetValue = 0.92f, + animationSpec = infiniteRepeatable(tween(1200), RepeatMode.Reverse), + label = "laserPosition", + ) + Box( + Modifier + .fillMaxSize() + .background(Color(0xFF17181C)) + .pointerInput(Unit) { + awaitPointerEventScope { + while (true) awaitPointerEvent() + } + }, + ) { + if (cameraGranted) { + QrCameraPreview( + onDecoded = onResult, + onError = { cameraError = true }, + modifier = Modifier.fillMaxSize(), + ) + Box(Modifier.fillMaxSize().background(Color.Black.copy(alpha = .28f))) + } + Row( + modifier = Modifier.fillMaxWidth().padding(20.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Text(stringResource(R.string.scan_qr), color = Color.White, fontSize = 16.sp, fontWeight = FontWeight.SemiBold, modifier = Modifier.weight(1f)) + IconButton( + onClick = onClose, + modifier = Modifier.size(44.dp).border(1.dp, Color.White.copy(alpha = .2f), CircleShape), + ) { Icon(Lucide.X, stringResource(R.string.close_scanner), tint = Color.White, modifier = Modifier.size(18.dp)) } + } + Canvas(Modifier.size(210.dp).align(Alignment.Center)) { + val stroke = Stroke(width = 3.dp.toPx(), cap = StrokeCap.Round) + drawRoundRect(Color.White, style = stroke, cornerRadius = androidx.compose.ui.geometry.CornerRadius(10.dp.toPx())) + val y = size.height * laserPosition + drawLine(Color.White, start = androidx.compose.ui.geometry.Offset(8.dp.toPx(), y), end = androidx.compose.ui.geometry.Offset(size.width - 8.dp.toPx(), y), strokeWidth = 2.dp.toPx(), cap = StrokeCap.Round) + } + if (!cameraGranted || cameraError) { + Column( + modifier = Modifier.align(Alignment.Center).padding(horizontal = 36.dp), + horizontalAlignment = Alignment.CenterHorizontally, + ) { + Text( + stringResource(if (cameraError) R.string.camera_unavailable else R.string.camera_permission_required), + color = Color.White, + fontSize = 14.sp, + ) + if (!cameraGranted) { + Spacer(Modifier.height(16.dp)) + Surface( + modifier = Modifier.height(40.dp).clickable { + permissionLauncher.launch(Manifest.permission.CAMERA) + }, + shape = RoundedCornerShape(12.dp), + color = Color.White, + ) { + Box(Modifier.padding(horizontal = 18.dp), contentAlignment = Alignment.Center) { + Text(stringResource(R.string.allow_camera), color = Color.Black) + } + } + } + } + } + Text( + stringResource(R.string.scanner_hint), + modifier = Modifier.align(Alignment.BottomCenter).padding(bottom = 56.dp), + color = Color.White.copy(alpha = .72f), + fontSize = 13.5.sp, + ) + } +} + +@Composable +private fun BrowsingScreen( + engine: Engine, + controller: BrowserTabsController, + tab: TabSessionState?, + tabCount: Int, + thumbnailCapture: BrowserThumbnailCapture, + library: BrowserLibraryRepository, + darkTheme: Boolean, + onDarkThemeChange: (Boolean) -> Unit, + onEditAddress: (String) -> Unit, + onOpenTabs: () -> Unit, + onHome: () -> Unit, + onNavigate: (String) -> Unit, + onOpen: (BrowserDestination) -> Unit, +) { + val colors = LocalNovaColors.current + val drawerState = rememberDrawerState(DrawerValue.Closed) + val scope = rememberCoroutineScope() + val context = LocalContext.current + val outerDirection = LocalLayoutDirection.current + val content = tab?.content + val bookmarks by library.bookmarks.collectAsStateWithLifecycle() + val isBookmarked = bookmarks.any { it.url == content?.url } + var findOpen by remember { mutableStateOf(false) } + var scannerOpen by remember { mutableStateOf(false) } + var securitySheetOpen by remember { mutableStateOf(false) } + var refreshRequested by remember { mutableStateOf(false) } + var refreshObservedLoading by remember { mutableStateOf(false) } + + LaunchedEffect(tab?.id) { + refreshRequested = false + refreshObservedLoading = false + } + + LaunchedEffect(refreshRequested, content?.loading) { + if (!refreshRequested) return@LaunchedEffect + if (content?.loading == true) { + refreshObservedLoading = true + } else if (refreshObservedLoading) { + refreshRequested = false + refreshObservedLoading = false + } + } + + BackHandler(enabled = scannerOpen) { + scannerOpen = false + } + + BackHandler(enabled = findOpen) { + findOpen = false + controller.clearFindMatches() + } + + androidx.compose.runtime.CompositionLocalProvider(LocalLayoutDirection provides LayoutDirection.Rtl) { + ModalNavigationDrawer( + drawerState = drawerState, + gesturesEnabled = drawerState.isOpen, + drawerContent = { + androidx.compose.runtime.CompositionLocalProvider(LocalLayoutDirection provides outerDirection) { + ModalDrawerSheet( + modifier = Modifier.fillMaxHeight().width(300.dp), + drawerContainerColor = colors.surface, + ) { + BrowserDrawer( + controller = controller, + canGoBack = content?.canGoBack == true, + canGoForward = content?.canGoForward == true, + isBookmarked = isBookmarked, + darkTheme = darkTheme, + onDarkThemeChange = onDarkThemeChange, + onToggleBookmark = { + scope.launch { + runCatching { + library.toggleBookmark( + content?.url.orEmpty(), + content?.let { it.title.ifBlank { it.url } }.orEmpty(), + ) + } + } + }, + onFind = { + scope.launch { drawerState.close() } + findOpen = true + }, + onShare = { + val intent = Intent(Intent.ACTION_SEND).apply { + type = "text/plain" + putExtra(Intent.EXTRA_TEXT, content?.url.orEmpty()) + } + context.startActivity(Intent.createChooser(intent, null)) + }, + onHome = { + scope.launch { + drawerState.close() + onHome() + } + }, + onScan = { + scope.launch { + drawerState.close() + scannerOpen = true + } + }, + onOpen = { target -> + scope.launch { drawerState.close() } + onOpen(target) + }, + ) + } + } + }, + ) { + androidx.compose.runtime.CompositionLocalProvider(LocalLayoutDirection provides outerDirection) { + Box(Modifier.fillMaxSize()) { + Column( + Modifier + .fillMaxSize() + .windowInsetsPadding(WindowInsets.safeDrawing) + .background(colors.surface), + ) { + AddressBar( + url = content?.url.orEmpty(), + isSecure = content?.securityInfo?.isSecure == true, + tabCount = tabCount, + loading = content?.loading == true, + progress = content?.progress ?: 0, + onSecurityClick = { securitySheetOpen = true }, + onAddressClick = { onEditAddress(content?.url.orEmpty()) }, + onTabs = onOpenTabs, + onMenu = { scope.launch { drawerState.open() } }, + ) + if (findOpen) { + FindInPageBar( + result = content?.findResults?.lastOrNull(), + onQueryChange = { query -> + if (query.isBlank()) controller.clearFindMatches() else controller.findAll(query) + }, + onPrevious = { controller.findNext(false) }, + onNext = { controller.findNext(true) }, + onClose = { + findOpen = false + controller.clearFindMatches() + }, + ) + } + val session = tab?.engineState?.engineSession + if (session != null) { + BrowserSurface( + engine = engine, + session = session, + modifier = Modifier.weight(1f).fillMaxWidth().testTag(BROWSER_SURFACE_TEST_TAG), + thumbnailCapture = thumbnailCapture, + refreshing = refreshRequested, + onRefresh = { + refreshRequested = true + refreshObservedLoading = false + controller.reload() + }, + ) + } else { + Box(Modifier.weight(1f).fillMaxWidth()) + } + } + if (scannerOpen) { + ScannerOverlay( + onClose = { scannerOpen = false }, + onResult = { result -> + scannerOpen = false + onNavigate(result) + }, + ) + } + } + } + } + } + if (securitySheetOpen) { + SiteSecurityBottomSheet( + details = SiteSecurityDetails.from( + url = content?.url.orEmpty(), + securityInfo = content?.securityInfo, + ), + onDismiss = { securitySheetOpen = false }, + ) + } +} + +@Composable +private fun FindInPageBar( + result: mozilla.components.browser.state.state.content.FindResultState?, + onQueryChange: (String) -> Unit, + onPrevious: () -> Unit, + onNext: () -> Unit, + onClose: () -> Unit, +) { + val colors = LocalNovaColors.current + var query by remember { mutableStateOf("") } + Row( + modifier = Modifier.fillMaxWidth().padding(horizontal = 12.dp, vertical = 4.dp) + .height(48.dp) + .background(colors.surfaceSecondary, RoundedCornerShape(12.dp)) + .border(1.dp, colors.border, RoundedCornerShape(12.dp)) + .padding(start = 14.dp, end = 4.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + BasicTextField( + value = query, + onValueChange = { + query = it + onQueryChange(it) + }, + modifier = Modifier.weight(1f), + singleLine = true, + textStyle = androidx.compose.ui.text.TextStyle(color = colors.foreground, fontSize = 14.sp), + keyboardOptions = KeyboardOptions(imeAction = ImeAction.Search), + keyboardActions = KeyboardActions(onSearch = { if (query.isNotBlank()) onNext() }), + decorationBox = { inner -> + if (query.isEmpty()) Text(stringResource(R.string.find_in_page_hint), color = colors.faint, fontSize = 14.sp) + inner() + }, + ) + Text( + stringResource( + R.string.find_matches, + result?.activeMatchOrdinal ?: 0, + result?.numberOfMatches ?: 0, + ), + color = colors.muted, + fontSize = 12.sp, + fontFamily = FontFamily.Monospace, + ) + IconButton(onClick = onPrevious, enabled = (result?.numberOfMatches ?: 0) > 0, modifier = Modifier.size(40.dp)) { + Icon(Lucide.ChevronUp, stringResource(R.string.previous_match), modifier = Modifier.size(18.dp)) + } + IconButton(onClick = onNext, enabled = (result?.numberOfMatches ?: 0) > 0, modifier = Modifier.size(40.dp)) { + Icon(Lucide.ChevronDown, stringResource(R.string.next_match), modifier = Modifier.size(18.dp)) + } + IconButton(onClick = onClose, modifier = Modifier.size(40.dp)) { + Icon(Lucide.X, stringResource(R.string.close_find), modifier = Modifier.size(18.dp)) + } + } +} + +@Composable +internal fun AddressBar( + url: String, + isSecure: Boolean, + tabCount: Int, + loading: Boolean, + progress: Int, + onSecurityClick: () -> Unit, + onAddressClick: () -> Unit, + onTabs: () -> Unit, + onMenu: () -> Unit, +) { + val colors = LocalNovaColors.current + val shape = RoundedCornerShape(12.dp) + val animatedProgress by animateFloatAsState( + targetValue = if (loading) progress.coerceIn(0, 100) / 100f else 0f, + animationSpec = tween(durationMillis = 180), + label = "addressLoadProgress", + ) + val tabSwitcherDescription = stringResource(R.string.tab_switcher) + val securityInteractionSource = remember { MutableInteractionSource() } + val uri = remember(url) { runCatching { Uri.parse(url) }.getOrNull() } + val host = uri?.host ?: url.ifBlank { "about:blank" } + val path = uri?.encodedPath.orEmpty().takeUnless { it == "/" }.orEmpty() + Box( + modifier = Modifier + .fillMaxWidth() + .testTag(BROWSER_CONTROLS_TEST_TAG) + .padding(horizontal = 12.dp, vertical = 10.dp) + .height(44.dp) + .clip(shape) + .background(colors.surfaceSecondary, shape) + .border(1.dp, colors.border, shape), + ) { + Box( + Modifier + .fillMaxHeight() + .fillMaxWidth(animatedProgress) + .background(colors.accent.copy(alpha = .08f)), + ) + Row( + modifier = Modifier.fillMaxSize().padding(start = 4.dp, end = 6.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Box( + modifier = Modifier + .fillMaxHeight() + .width(36.dp) + .clickable( + interactionSource = securityInteractionSource, + indication = null, + onClick = onSecurityClick, + ), + contentAlignment = Alignment.Center, + ) { + Box( + modifier = Modifier + .size(28.dp) + .clip(CircleShape) + .indication(securityInteractionSource, ripple()) + .testTag(SECURITY_RIPPLE_TEST_TAG), + contentAlignment = Alignment.Center, + ) { + Icon( + if (isSecure) Lucide.Lock else Lucide.Globe, + contentDescription = stringResource( + if (isSecure) R.string.secure_connection else R.string.connection_information, + ), + tint = if (isSecure) colors.success else colors.muted, + modifier = Modifier.size(15.dp), + ) + } + } + Box( + modifier = Modifier.weight(1f).fillMaxHeight().clickable(onClick = onAddressClick), + contentAlignment = Alignment.CenterStart, + ) { + Text( + buildAnnotatedString { + append(host) + addStyle(SpanStyle(color = colors.foreground, fontWeight = FontWeight.SemiBold), 0, host.length) + append(path) + addStyle(SpanStyle(color = colors.muted), host.length, host.length + path.length) + }, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + fontSize = 14.sp, + ) + } + TabCountButton( + tabCount = tabCount, + contentDescription = tabSwitcherDescription, + onClick = onTabs, + modifier = Modifier.size(32.dp), + ) + IconButton(onClick = onMenu, modifier = Modifier.size(32.dp)) { + Icon(Lucide.Ellipsis, stringResource(R.string.menu), tint = colors.muted, modifier = Modifier.size(19.dp)) + } + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +internal fun SiteSecurityBottomSheet( + details: SiteSecurityDetails, + onDismiss: () -> Unit, +) { + val colors = LocalNovaColors.current + val (stateIcon, stateLabel, stateColor) = when (details.state) { + SiteSecurityState.SECURE -> Triple(Lucide.Lock, R.string.connection_is_secure, colors.success) + SiteSecurityState.INSECURE -> Triple(Lucide.Globe, R.string.connection_is_not_secure, colors.danger) + SiteSecurityState.UNAVAILABLE -> Triple(Lucide.Globe, R.string.no_connection_information, colors.muted) + } + val certificateRows = listOfNotNull( + details.subject?.let { R.string.certificate_subject to it }, + details.issuer?.let { R.string.certificate_issuer to it }, + details.validFrom?.let { R.string.certificate_valid_from to it }, + details.validUntil?.let { R.string.certificate_valid_until to it }, + details.serialNumber?.let { R.string.certificate_serial_number to it }, + details.sha256Fingerprint?.let { R.string.certificate_sha256_fingerprint to it }, + ) + + ModalBottomSheet( + onDismissRequest = onDismiss, + containerColor = colors.surface, + contentColor = colors.foreground, + shape = RoundedCornerShape(topStart = 24.dp, topEnd = 24.dp), + ) { + Column( + modifier = Modifier + .fillMaxWidth() + .verticalScroll(rememberScrollState()) + .padding(horizontal = 24.dp) + .padding(bottom = 32.dp), + ) { + Row(verticalAlignment = Alignment.CenterVertically) { + Column(Modifier.weight(1f)) { + Text( + text = stringResource(R.string.site_information), + color = colors.muted, + fontSize = 13.sp, + ) + Text( + text = details.host, + color = colors.foreground, + fontSize = 20.sp, + fontWeight = FontWeight.SemiBold, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + ) + } + IconButton(onClick = onDismiss) { + Icon(Lucide.X, stringResource(R.string.close_site_information)) + } + } + Row( + modifier = Modifier.padding(top = 20.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Surface( + modifier = Modifier.size(40.dp), + shape = CircleShape, + color = stateColor.copy(alpha = .12f), + ) { + Box(contentAlignment = Alignment.Center) { + Icon(stateIcon, null, tint = stateColor, modifier = Modifier.size(19.dp)) + } + } + Text( + text = stringResource(stateLabel), + modifier = Modifier.padding(start = 12.dp), + color = colors.foreground, + fontSize = 16.sp, + fontWeight = FontWeight.SemiBold, + ) + } + if (certificateRows.isNotEmpty()) { + HorizontalDivider(Modifier.padding(vertical = 24.dp), color = colors.border) + Text( + text = stringResource(R.string.certificate_information), + color = colors.foreground, + fontSize = 16.sp, + fontWeight = FontWeight.SemiBold, + ) + SelectionContainer { + Column(Modifier.padding(top = 8.dp)) { + certificateRows.forEach { (label, value) -> + CertificateDetailRow(label = stringResource(label), value = value) + } + } + } + } + } + } +} + +@Composable +private fun CertificateDetailRow(label: String, value: String) { + val colors = LocalNovaColors.current + Column(Modifier.fillMaxWidth().padding(vertical = 9.dp)) { + Text(text = label, color = colors.muted, fontSize = 12.sp) + Text( + text = value, + modifier = Modifier.padding(top = 3.dp), + color = colors.foreground, + fontSize = 14.sp, + lineHeight = 20.sp, + ) + } +} + +@Composable +private fun TabCountButton( + tabCount: Int, + contentDescription: String, + onClick: () -> Unit, + modifier: Modifier = Modifier, +) { + val colors = LocalNovaColors.current + Box( + modifier = modifier + .semantics(mergeDescendants = true) { + this.contentDescription = contentDescription + } + .clickable(onClick = onClick), + contentAlignment = Alignment.Center, + ) { + Surface( + modifier = Modifier.size(24.dp), + color = Color.Transparent, + shape = RoundedCornerShape(6.dp), + border = BorderStroke(2.dp, colors.foreground), + ) { + Box(contentAlignment = Alignment.Center) { + Text( + tabCount.toString(), + color = colors.foreground, + fontSize = 11.sp, + fontWeight = FontWeight.SemiBold, + ) + } + } + } +} + +@Composable +private fun BrowserDrawer( + controller: BrowserTabsController, + canGoBack: Boolean, + canGoForward: Boolean, + isBookmarked: Boolean, + darkTheme: Boolean, + onDarkThemeChange: (Boolean) -> Unit, + onToggleBookmark: () -> Unit, + onFind: () -> Unit, + onShare: () -> Unit, + onHome: () -> Unit, + onScan: () -> Unit, + onOpen: (BrowserDestination) -> Unit, +) { + val colors = LocalNovaColors.current + Column(Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.safeDrawing)) { + Row( + modifier = Modifier.padding(start = 16.dp, end = 16.dp, top = 16.dp, bottom = 12.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + ) { + DrawerNavButton(Lucide.ChevronLeft, R.string.back, controller::goBack, Modifier.weight(1f), canGoBack) + DrawerNavButton(Lucide.ChevronRight, R.string.forward, controller::goForward, Modifier.weight(1f), canGoForward) + DrawerNavButton(Lucide.RefreshCw, R.string.reload, controller::reload, Modifier.weight(1f)) + DrawerNavButton(Lucide.Share, R.string.share, onShare, Modifier.weight(1f)) + } + Row(Modifier.padding(horizontal = 16.dp), horizontalArrangement = Arrangement.spacedBy(10.dp)) { + DrawerBookmarkTile( + isBookmarked = isBookmarked, + modifier = Modifier.weight(1f), + onToggleBookmark = onToggleBookmark, + ) + DrawerTile(Lucide.SearchCode, R.string.find_in_page, Modifier.weight(1f), onFind) + } + HorizontalDivider(Modifier.padding(horizontal = 16.dp, vertical = 14.dp), color = colors.border) + DrawerItem(Lucide.House, R.string.home, onHome) + DrawerItem(Lucide.ScanLine, R.string.scan_qr, onScan) + DrawerItem(Lucide.History, R.string.history) { onOpen(BrowserDestination.History) } + DrawerItem(Lucide.Bookmark, R.string.bookmarks) { onOpen(BrowserDestination.Bookmarks) } + DrawerItem(Lucide.Download, R.string.downloads) { onOpen(BrowserDestination.Downloads) } + DrawerItem(Lucide.Puzzle, R.string.extensions) { onOpen(BrowserDestination.Extensions) } + DrawerItem( + if (darkTheme) Lucide.Sun else Lucide.Moon, + R.string.dark_mode, + ) { onDarkThemeChange(!darkTheme) } + DrawerItem(Lucide.Settings, R.string.settings) { onOpen(BrowserDestination.Settings) } + } +} + +@Composable +private fun DrawerNavButton( + icon: ImageVector, + labelRes: Int, + onClick: () -> Unit, + modifier: Modifier = Modifier, + enabled: Boolean = true, +) { + val colors = LocalNovaColors.current + Surface( + onClick = onClick, + modifier = modifier.height(46.dp), + enabled = enabled, + color = colors.surfaceSecondary.copy(alpha = if (enabled) 1f else .55f), + shape = RoundedCornerShape(12.dp), + border = BorderStroke(1.dp, colors.border.copy(alpha = if (enabled) 1f else .55f)), + ) { + Box(contentAlignment = Alignment.Center) { + Icon( + icon, + stringResource(labelRes), + Modifier.size(20.dp), + tint = if (enabled) colors.foreground else colors.faint, + ) + } + } +} + +@Composable +internal fun DrawerBookmarkTile( + isBookmarked: Boolean, + modifier: Modifier = Modifier, + onToggleBookmark: () -> Unit, +) { + DrawerTile( + icon = if (isBookmarked) FilledStarIcon else Lucide.Star, + labelRes = if (isBookmarked) R.string.remove_bookmark else R.string.add_bookmark, + modifier = modifier + .testTag(BOOKMARK_DRAWER_TILE_TEST_TAG) + .semantics { selected = isBookmarked }, + iconModifier = Modifier.testTag(BOOKMARK_DRAWER_ICON_TEST_TAG), + onClick = onToggleBookmark, + ) +} + +@Composable +private fun DrawerTile( + icon: ImageVector, + labelRes: Int, + modifier: Modifier = Modifier, + onClick: () -> Unit, + iconModifier: Modifier = Modifier, +) { + val colors = LocalNovaColors.current + Surface( + modifier = modifier.height(92.dp).clickable(onClick = onClick), + color = colors.surfaceSecondary, + shape = RoundedCornerShape(13.dp), + border = BorderStroke(1.dp, colors.border), + ) { + Column(Modifier.padding(14.dp), verticalArrangement = Arrangement.SpaceBetween) { + Icon(icon, null, iconModifier.size(22.dp)) + Text(stringResource(labelRes), fontSize = 13.sp, fontWeight = FontWeight.Medium) + } + } +} + +@Composable +private fun DrawerItem(icon: ImageVector, labelRes: Int, onClick: () -> Unit) { + val colors = LocalNovaColors.current + Row( + modifier = Modifier.fillMaxWidth().clickable(onClick = onClick).padding(horizontal = 20.dp, vertical = 12.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon(icon, null, tint = colors.muted, modifier = Modifier.size(21.dp)) + Spacer(Modifier.width(13.dp)) + Text(stringResource(labelRes), color = colors.foreground, fontSize = 14.5.sp, fontWeight = FontWeight.Medium) + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/BrowserSurface.kt b/android/app/src/main/java/com/msgbyte/dao/ui/BrowserSurface.kt new file mode 100644 index 00000000..578d698c --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/BrowserSurface.kt @@ -0,0 +1,86 @@ +package com.msgbyte.dao.ui + +import android.view.ViewGroup +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.viewinterop.AndroidView +import androidx.lifecycle.LifecycleEventObserver +import androidx.lifecycle.compose.LocalLifecycleOwner +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout +import com.msgbyte.dao.R +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.EngineSession +import mozilla.components.concept.engine.EngineView + +@Composable +fun BrowserSurface( + engine: Engine, + session: EngineSession, + modifier: Modifier = Modifier, + thumbnailCapture: BrowserThumbnailCapture? = null, + refreshing: Boolean = false, + onRefresh: () -> Unit = {}, +) { + val lifecycleOwner = LocalLifecycleOwner.current + val lifecycleBridge = remember { mutableStateOf(null) } + val hostedEngineView = remember { mutableStateOf(null) } + val verticalScrollPosition = remember { mutableStateOf(0f) } + + LaunchedEffect(hostedEngineView.value, session) { + verticalScrollPosition.value = 0f + hostedEngineView.value?.verticalScrollPosition?.collect { position -> + verticalScrollPosition.value = position + } + } + + AndroidView( + modifier = modifier, + factory = { context -> + val engineView = engine.createView(context) + engineView.render(session) + thumbnailCapture?.bind(engineView) + hostedEngineView.value = engineView + lifecycleBridge.value = EngineViewLifecycle(engineView) + val hostedView = engineView.asView().apply { + id = R.id.browser_engine_view + } + SwipeRefreshLayout(context).apply { + setOnChildScrollUpCallback { _, _ -> + verticalScrollPosition.value > 0f || hostedView.canScrollVertically(-1) + } + setOnRefreshListener(onRefresh) + addView( + hostedView, + ViewGroup.LayoutParams( + ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.MATCH_PARENT, + ), + ) + } + }, + update = { refreshLayout -> + refreshLayout.setOnRefreshListener(onRefresh) + refreshLayout.isRefreshing = refreshing + hostedEngineView.value?.let { engineView -> + engineView.render(session) + thumbnailCapture?.bind(engineView) + } + }, + ) + + DisposableEffect(lifecycleOwner) { + val observer = LifecycleEventObserver { _, event -> + lifecycleBridge.value?.onEvent(event) + } + lifecycleOwner.lifecycle.addObserver(observer) + onDispose { + lifecycleOwner.lifecycle.removeObserver(observer) + hostedEngineView.value?.let { thumbnailCapture?.unbind(it) } + lifecycleBridge.value?.dispose() + } + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/BrowserThumbnailCapture.kt b/android/app/src/main/java/com/msgbyte/dao/ui/BrowserThumbnailCapture.kt new file mode 100644 index 00000000..72c0d48e --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/BrowserThumbnailCapture.kt @@ -0,0 +1,35 @@ +package com.msgbyte.dao.ui + +import android.graphics.Bitmap +import kotlin.coroutines.resume +import kotlinx.coroutines.suspendCancellableCoroutine +import kotlinx.coroutines.withTimeoutOrNull +import mozilla.components.concept.engine.EngineView + +class BrowserThumbnailCapture { + @Volatile + private var engineView: EngineView? = null + + fun bind(view: EngineView) { + engineView = view + } + + fun unbind(view: EngineView) { + if (engineView === view) engineView = null + } + + suspend fun capture(): Bitmap? { + val view = engineView ?: return null + return withTimeoutOrNull(CAPTURE_TIMEOUT_MILLIS) { + suspendCancellableCoroutine { continuation -> + view.captureThumbnail { bitmap -> + if (continuation.isActive) continuation.resume(bitmap) + } + } + } + } + + private companion object { + const val CAPTURE_TIMEOUT_MILLIS = 750L + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/EngineViewLifecycle.kt b/android/app/src/main/java/com/msgbyte/dao/ui/EngineViewLifecycle.kt new file mode 100644 index 00000000..ba8791e8 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/EngineViewLifecycle.kt @@ -0,0 +1,32 @@ +package com.msgbyte.dao.ui + +import androidx.lifecycle.Lifecycle +import mozilla.components.concept.engine.EngineView + +class EngineViewLifecycle( + private val engineView: EngineView, +) { + private var disposed = false + + fun onEvent(event: Lifecycle.Event) { + when (event) { + Lifecycle.Event.ON_CREATE -> engineView.onCreate() + Lifecycle.Event.ON_START -> engineView.onStart() + Lifecycle.Event.ON_RESUME -> engineView.onResume() + Lifecycle.Event.ON_PAUSE -> engineView.onPause() + Lifecycle.Event.ON_STOP -> engineView.onStop() + Lifecycle.Event.ON_DESTROY -> dispose() + Lifecycle.Event.ON_ANY -> Unit + } + } + + fun dispose() { + if (disposed) { + return + } + + disposed = true + engineView.release() + engineView.onDestroy() + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/FontPreviewTypography.kt b/android/app/src/main/java/com/msgbyte/dao/ui/FontPreviewTypography.kt new file mode 100644 index 00000000..4b954c1b --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/FontPreviewTypography.kt @@ -0,0 +1,14 @@ +package com.msgbyte.dao.ui + +import com.msgbyte.dao.browser.BrowserFontScale + +data class FontPreviewTypography( + val titleSizeSp: Float, + val bodySizeSp: Float, +) + +fun fontPreviewTypography(scale: BrowserFontScale): FontPreviewTypography = + FontPreviewTypography( + titleSizeSp = 18f * scale.factor, + bodySizeSp = 15f * scale.factor, + ) diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/HistoryTimeModel.kt b/android/app/src/main/java/com/msgbyte/dao/ui/HistoryTimeModel.kt new file mode 100644 index 00000000..1c4144b6 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/HistoryTimeModel.kt @@ -0,0 +1,20 @@ +package com.msgbyte.dao.ui + +import java.time.LocalDate +import java.time.ZonedDateTime +import java.time.format.DateTimeFormatter +import java.time.format.FormatStyle +import java.util.Locale + +fun formatHistoryDate( + date: LocalDate, + pattern: String, + locale: Locale = Locale.getDefault(), +): String = DateTimeFormatter.ofPattern(pattern, locale).format(date) + +fun formatHistoryTime( + value: ZonedDateTime, + locale: Locale = Locale.getDefault(), +): String = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT) + .withLocale(locale) + .format(value) diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/LibraryScreens.kt b/android/app/src/main/java/com/msgbyte/dao/ui/LibraryScreens.kt new file mode 100644 index 00000000..939d502f --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/LibraryScreens.kt @@ -0,0 +1,1254 @@ +package com.msgbyte.dao.ui + +import android.content.ActivityNotFoundException +import android.content.ClipData +import android.content.ClipboardManager +import android.content.Context +import android.content.Intent +import android.net.Uri +import android.provider.Settings +import android.widget.Toast +import androidx.activity.compose.rememberLauncherForActivityResult +import androidx.activity.result.contract.ActivityResultContracts +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.text.BasicTextField +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.AlertDialog +import androidx.compose.material3.DropdownMenu +import androidx.compose.material3.DropdownMenuItem +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.LinearProgressIndicator +import androidx.compose.material3.ModalBottomSheet +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateMapOf +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontFamily +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.lifecycle.compose.collectAsStateWithLifecycle +import com.composables.icons.lucide.AlignLeft +import com.composables.icons.lucide.BookOpen +import com.composables.icons.lucide.ChevronRight +import com.composables.icons.lucide.Ellipsis +import com.composables.icons.lucide.Eye +import com.composables.icons.lucide.Folder +import com.composables.icons.lucide.FolderPlus +import com.composables.icons.lucide.Globe +import com.composables.icons.lucide.Info +import com.composables.icons.lucide.Lock +import com.composables.icons.lucide.Lucide +import com.composables.icons.lucide.Moon +import com.composables.icons.lucide.Pause +import com.composables.icons.lucide.Play +import com.composables.icons.lucide.Plus +import com.composables.icons.lucide.Search +import com.composables.icons.lucide.Shield +import com.composables.icons.lucide.Star +import com.composables.icons.lucide.RefreshCw +import com.composables.icons.lucide.Trash2 +import com.composables.icons.lucide.X +import com.composables.icons.lucide.Type +import com.composables.icons.lucide.Usb +import com.msgbyte.dao.R +import com.msgbyte.dao.about.readAboutAppInfo +import com.msgbyte.dao.browser.BookmarkEntry +import com.msgbyte.dao.browser.BookmarkFolder +import com.msgbyte.dao.browser.BookmarkKind +import com.msgbyte.dao.browser.HistoryVisit +import com.msgbyte.dao.browser.BrowserDownload +import com.msgbyte.dao.browser.DownloadStatus +import com.msgbyte.dao.browser.BrowserFontScale +import com.msgbyte.dao.browser.BrowserPreferenceState +import com.msgbyte.dao.browser.BrowserSearchEngine +import com.msgbyte.dao.browser.ExtensionRepository +import com.msgbyte.dao.browser.ExtensionInstallFailure +import com.msgbyte.dao.browser.ExtensionInstallState +import com.msgbyte.dao.browser.ExtensionPackageException +import com.msgbyte.dao.browser.ExtensionPackageStager +import com.msgbyte.dao.browser.InstalledExtension +import com.msgbyte.dao.browser.SystemDownloadRepository +import com.msgbyte.dao.ui.theme.LocalNovaColors +import java.net.URI +import java.time.Instant +import java.time.LocalDate +import java.time.ZoneId +import java.util.Locale +import kotlinx.coroutines.delay +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +const val BOOKMARK_OPTIONS_TEST_TAG_PREFIX = "bookmark-options-" + +@Composable +fun SettingsScreen( + preferences: BrowserPreferenceState, + onDarkThemeChange: (Boolean) -> Unit, + onFontScaleChange: (BrowserFontScale) -> Unit, + onSearchEngineChange: (BrowserSearchEngine) -> Unit, + onTrackingProtectionChange: (Boolean) -> Unit, + onDefaultPrivateBrowsingChange: (Boolean) -> Unit, + onRemoteDebuggingChange: (Boolean) -> Unit, + onEnableRemoteDebuggingWithAcknowledgement: () -> Unit, + onOpenAbout: () -> Unit = {}, + onBack: () -> Unit, +) { + val colors = LocalNovaColors.current + val context = LocalContext.current + val previewTypography = fontPreviewTypography(preferences.fontScale) + var searchEngineMenuOpen by remember { mutableStateOf(false) } + var remoteDebuggingWarningOpen by remember { mutableStateOf(false) } + var remoteDebuggingGuideOpen by remember { mutableStateOf(false) } + + Column( + Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.safeDrawing).background(colors.background), + ) { + ScreenHeader(stringResource(R.string.settings), onBack) + LazyColumn( + modifier = Modifier.fillMaxSize().testTag("settings-list"), + contentPadding = PaddingValues(start = 16.dp, end = 16.dp, bottom = 24.dp), + ) { + item { SectionLabel(stringResource(R.string.appearance)) } + item { + NovaCard { + SettingsRow( + icon = Lucide.Moon, + title = stringResource(R.string.dark_mode), + subtitle = stringResource(R.string.dark_mode_summary), + ) { NovaSwitch(preferences.darkTheme, onDarkThemeChange) } + RowDivider() + SettingsRow(icon = Lucide.Type, title = stringResource(R.string.font_size)) { + Box(Modifier.width(150.dp)) { + SegmentedControl( + listOf(stringResource(R.string.small), stringResource(R.string.medium), stringResource(R.string.large)), + preferences.fontScale.ordinal, + { onFontScaleChange(BrowserFontScale.entries[it]) }, + ) + } + } + RowDivider() + Column( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 14.dp) + .background(colors.surfaceSecondary, RoundedCornerShape(12.dp)) + .border(1.dp, colors.border, RoundedCornerShape(12.dp)) + .padding(horizontal = 16.dp, vertical = 14.dp), + ) { + Text( + text = stringResource(R.string.font_preview_title), + color = colors.foreground, + fontSize = previewTypography.titleSizeSp.sp, + fontWeight = FontWeight.SemiBold, + ) + Spacer(Modifier.height(5.dp)) + Text( + text = stringResource(R.string.font_preview_body), + color = colors.muted, + fontSize = previewTypography.bodySizeSp.sp, + ) + } + } + } + item { SectionLabel(stringResource(R.string.search_and_privacy)) } + item { + NovaCard { + SettingsRow( + icon = Lucide.Search, + title = stringResource(R.string.default_search_engine), + onClick = { searchEngineMenuOpen = true }, + ) { + Box { + Row( + verticalAlignment = Alignment.CenterVertically, + ) { + Text( + preferences.searchEngine.displayName(), + color = colors.muted, + fontSize = 13.5.sp, + ) + Icon(Lucide.ChevronRight, null, tint = colors.faint, modifier = Modifier.size(17.dp)) + } + DropdownMenu( + expanded = searchEngineMenuOpen, + onDismissRequest = { searchEngineMenuOpen = false }, + ) { + BrowserSearchEngine.entries.forEach { engine -> + DropdownMenuItem( + text = { Text(engine.displayName()) }, + onClick = { + onSearchEngineChange(engine) + searchEngineMenuOpen = false + }, + ) + } + } + } + } + RowDivider() + SettingsRow( + icon = Lucide.Shield, + title = stringResource(R.string.block_tracking), + subtitle = stringResource(R.string.block_tracking_summary), + ) { NovaSwitch(preferences.trackingProtectionEnabled, onTrackingProtectionChange) } + RowDivider() + SettingsRow( + icon = Lucide.Eye, + title = stringResource(R.string.private_browsing), + subtitle = stringResource(R.string.private_browsing_summary), + ) { + NovaSwitch(preferences.defaultPrivateBrowsing, onDefaultPrivateBrowsingChange) + } + } + } + item { SectionLabel(stringResource(R.string.developer_tools)) } + item { + NovaCard { + SettingsRow( + icon = Lucide.Usb, + title = stringResource(R.string.usb_remote_debugging), + subtitle = stringResource( + if (preferences.remoteDebuggingEnabled) { + R.string.usb_remote_debugging_enabled_summary + } else { + R.string.usb_remote_debugging_disabled_summary + }, + ), + subtitleColor = if (preferences.remoteDebuggingEnabled) colors.accent else null, + ) { + NovaSwitch( + checked = preferences.remoteDebuggingEnabled, + onCheckedChange = { requestedEnabled -> + when { + !requestedEnabled -> onRemoteDebuggingChange(false) + preferences.remoteDebuggingWarningAcknowledged -> + onRemoteDebuggingChange(true) + else -> remoteDebuggingWarningOpen = true + } + }, + modifier = Modifier.testTag("usb-remote-debugging-switch"), + ) + } + RowDivider() + SettingsRow( + modifier = Modifier.testTag("settings-connection-guide-entry"), + icon = Lucide.BookOpen, + title = stringResource(R.string.remote_debugging_connection_guide), + onClick = { remoteDebuggingGuideOpen = true }, + ) { + Icon( + Lucide.ChevronRight, + null, + tint = colors.faint, + modifier = Modifier.size(17.dp), + ) + } + } + } + item { SectionLabel(stringResource(R.string.about)) } + item { + NovaCard { + SettingsRow( + modifier = Modifier.testTag("settings-about-entry"), + icon = Lucide.Info, + title = stringResource(R.string.about_dao_browser), + onClick = onOpenAbout, + ) { + Text( + text = readAboutAppInfo(context).appVersion, + color = colors.muted, + fontSize = 13.5.sp, + modifier = Modifier.testTag("settings-about-version"), + ) + Icon( + Lucide.ChevronRight, + null, + tint = colors.faint, + modifier = Modifier.size(17.dp), + ) + } + } + } + } + } + if (remoteDebuggingWarningOpen) { + AlertDialog( + onDismissRequest = { remoteDebuggingWarningOpen = false }, + title = { Text(stringResource(R.string.remote_debugging_warning_title)) }, + text = { Text(stringResource(R.string.remote_debugging_warning_body)) }, + confirmButton = { + TextButton( + onClick = { + remoteDebuggingWarningOpen = false + onEnableRemoteDebuggingWithAcknowledgement() + }, + ) { Text(stringResource(R.string.enable_remote_debugging)) } + }, + dismissButton = { + TextButton(onClick = { remoteDebuggingWarningOpen = false }) { + Text(stringResource(R.string.cancel)) + } + }, + ) + } + if (remoteDebuggingGuideOpen) { + AlertDialog( + onDismissRequest = { remoteDebuggingGuideOpen = false }, + title = { Text(stringResource(R.string.remote_debugging_guide_title)) }, + text = { + Column(verticalArrangement = Arrangement.spacedBy(12.dp)) { + Text(stringResource(R.string.remote_debugging_guide_step_1)) + Text(stringResource(R.string.remote_debugging_guide_step_2)) + Text(stringResource(R.string.remote_debugging_guide_step_3)) + Text( + stringResource(R.string.remote_debugging_desktop_note), + color = colors.muted, + fontSize = 12.sp, + ) + TextButton(onClick = { openDeveloperOptions(context) }) { + Text(stringResource(R.string.open_developer_options)) + } + TextButton(onClick = { copyAboutDebuggingAddress(context) }) { + Text(stringResource(R.string.copy_about_debugging)) + } + } + }, + confirmButton = { + TextButton(onClick = { remoteDebuggingGuideOpen = false }) { + Text(stringResource(R.string.done)) + } + }, + ) + } +} + +@Composable +private fun BrowserSearchEngine.displayName(): String = stringResource( + when (this) { + BrowserSearchEngine.GOOGLE -> R.string.google + BrowserSearchEngine.BAIDU -> R.string.baidu + BrowserSearchEngine.BING -> R.string.bing + BrowserSearchEngine.DUCKDUCKGO -> R.string.duckduckgo + }, +) + +@Composable +internal fun SettingsRow( + modifier: Modifier = Modifier, + icon: ImageVector, + title: String, + subtitle: String = "", + subtitleColor: Color? = null, + onClick: (() -> Unit)? = null, + trailing: @Composable () -> Unit, +) { + val colors = LocalNovaColors.current + Row( + modifier + .fillMaxWidth() + .then(if (onClick != null) Modifier.clickable(onClick = onClick) else Modifier) + .padding(horizontal = 16.dp, vertical = 10.dp) + .height(44.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Box( + Modifier.size(32.dp).background(colors.surfaceSecondary, RoundedCornerShape(9.dp)).border(1.dp, colors.border, RoundedCornerShape(9.dp)), + contentAlignment = Alignment.Center, + ) { Icon(icon, null, modifier = Modifier.size(18.dp)) } + Spacer(Modifier.width(14.dp)) + Column(Modifier.weight(1f)) { + Text(title, color = colors.foreground, fontSize = 14.5.sp, fontWeight = FontWeight.Medium) + if (subtitle.isNotEmpty()) Text(subtitle, color = subtitleColor ?: colors.muted, fontSize = 12.sp, maxLines = 1, overflow = TextOverflow.Ellipsis) + } + Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.spacedBy(4.dp)) { trailing() } + } +} + +private fun openDeveloperOptions(context: Context) { + try { + context.startActivity(Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS)) + } catch (_: ActivityNotFoundException) { + context.startActivity(Intent(Settings.ACTION_SETTINGS)) + } +} + +private fun copyAboutDebuggingAddress(context: Context) { + val clipboard = context.getSystemService(ClipboardManager::class.java) ?: return + runCatching { + clipboard.setPrimaryClip( + ClipData.newPlainText( + context.getString(R.string.remote_debugging_clip_label), + "about:debugging", + ), + ) + }.onSuccess { + Toast.makeText( + context, + context.getString(R.string.about_debugging_copied), + Toast.LENGTH_SHORT, + ).show() + } +} + +@Composable +fun HistoryScreen( + visits: List, + onClear: () -> Unit, + onDelete: (Long) -> Unit, + onBack: () -> Unit, + onNavigate: (String) -> Unit, +) { + val colors = LocalNovaColors.current + var query by remember { mutableStateOf("") } + val filtered = remember(query, visits) { + visits.filter { (it.title + " " + it.url).contains(query.trim(), ignoreCase = true) } + } + val todayLabel = stringResource(R.string.today) + val yesterdayLabel = stringResource(R.string.yesterday_short) + val datePattern = stringResource(R.string.history_date_format) + val groups = remember(filtered, todayLabel, yesterdayLabel, datePattern) { + groupHistoryVisits(filtered, todayLabel, yesterdayLabel, datePattern) + } + + Column(Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.safeDrawing).background(colors.background)) { + ScreenHeader(stringResource(R.string.history), onBack) { + Text( + stringResource(R.string.clear), + color = if (visits.isEmpty()) colors.faint else colors.danger, + fontSize = 13.5.sp, + fontWeight = FontWeight.Medium, + modifier = Modifier.clickable(enabled = visits.isNotEmpty(), onClick = onClear).padding(12.dp), + ) + } + Row( + Modifier.fillMaxWidth().padding(horizontal = 16.dp, vertical = 2.dp).height(42.dp) + .background(colors.surfaceSecondary, RoundedCornerShape(12.dp)).border(1.dp, colors.border, RoundedCornerShape(12.dp)).padding(horizontal = 14.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + Icon(Lucide.Search, null, tint = colors.muted, modifier = Modifier.size(17.dp)) + Spacer(Modifier.width(9.dp)) + BasicTextField( + value = query, + onValueChange = { query = it }, + modifier = Modifier.weight(1f), + singleLine = true, + textStyle = androidx.compose.ui.text.TextStyle(color = colors.foreground, fontSize = 14.sp), + decorationBox = { inner -> + if (query.isEmpty()) Text(stringResource(R.string.search_history), color = colors.faint, fontSize = 14.sp) + inner() + }, + ) + } + LazyColumn(Modifier.fillMaxSize(), contentPadding = PaddingValues(bottom = 24.dp)) { + if (groups.isEmpty()) { + item { EmptyLibraryMessage(stringResource(if (query.isBlank()) R.string.no_history else R.string.no_search_results)) } + } + groups.forEach { group -> + HistoryGroup(group.label, group.visits, onNavigate, onDelete) + } + } + } +} + +private fun androidx.compose.foundation.lazy.LazyListScope.HistoryGroup( + title: String, + rows: List, + onNavigate: (String) -> Unit, + onDelete: (Long) -> Unit, +) { + stickyHeader { SectionLabel(title, Modifier.fillMaxWidth().background(LocalNovaColors.current.background)) } + items(rows) { row -> + ListRow( + row.title, + row.url, + letter = siteLetter(row.url, row.title), + avatarColor = Color(0xFF3F424A), + meta = formatHistoryTime(Instant.ofEpochMilli(row.visitedAt).atZone(ZoneId.systemDefault())), + onClick = { onNavigate(row.url) }, + ) + } +} + +@Composable +fun BookmarksScreen( + bookmarks: List, + folders: List, + onCreateFolder: (String) -> Unit = {}, + onUpdateBookmark: (Long, String, Long?, BookmarkKind) -> Unit = { _, _, _, _ -> }, + onDeleteBookmark: (Long) -> Unit = {}, + onBack: () -> Unit, + onNavigate: (String) -> Unit, +) { + val colors = LocalNovaColors.current + var selected by remember { mutableStateOf(0) } + var createFolderOpen by remember { mutableStateOf(false) } + var folderTitle by remember { mutableStateOf("") } + val kind = if (selected == 0) BookmarkKind.FAVORITE else BookmarkKind.READING_LIST + val visibleBookmarks = bookmarks.filter { it.kind == kind } + Column(Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.safeDrawing).background(colors.background)) { + ScreenHeader(stringResource(R.string.bookmarks), onBack) { + IconButton(onClick = { createFolderOpen = true }, modifier = Modifier.size(44.dp)) { + Icon(Lucide.FolderPlus, stringResource(R.string.new_folder), modifier = Modifier.size(21.dp)) + } + } + LazyColumn(Modifier.fillMaxSize(), contentPadding = PaddingValues(start = 16.dp, end = 16.dp, bottom = 24.dp)) { + item { + SegmentedControl( + listOf(stringResource(R.string.favorites), stringResource(R.string.reading_list)), + selected, + { selected = it }, + Modifier.padding(bottom = 16.dp), + ) + } + if (selected == 0) { + items(folders.chunked(2)) { rowFolders -> + Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.spacedBy(12.dp)) { + rowFolders.forEach { folder -> + FolderCard( + folder.title, + stringResource(R.string.bookmark_count, bookmarks.count { it.folderId == folder.id }), + Modifier.weight(1f), + ) + } + if (rowFolders.size == 1) Spacer(Modifier.weight(1f)) + } + } + item { SectionLabel(stringResource(R.string.uncategorized)) } + } + if (visibleBookmarks.isEmpty()) { + item { EmptyLibraryMessage(stringResource(R.string.no_bookmarks)) } + } else { + item { + NovaCard { + visibleBookmarks.forEachIndexed { index, row -> + ListRow( + row.title, + row.url, + letter = siteLetter(row.url, row.title), + avatarColor = Color(0xFF3F424A), + trailing = { + BookmarkActions( + bookmark = row, + folders = folders, + onUpdate = onUpdateBookmark, + onDelete = onDeleteBookmark, + ) + }, + onClick = { onNavigate(row.url) }, + ) + if (index != visibleBookmarks.lastIndex) RowDivider() + } + } + } + } + } + } + if (createFolderOpen) { + AlertDialog( + onDismissRequest = { createFolderOpen = false }, + title = { Text(stringResource(R.string.new_folder)) }, + text = { + OutlinedTextField( + value = folderTitle, + onValueChange = { folderTitle = it }, + label = { Text(stringResource(R.string.folder_name)) }, + singleLine = true, + ) + }, + confirmButton = { + TextButton( + enabled = folderTitle.isNotBlank(), + onClick = { + onCreateFolder(folderTitle) + folderTitle = "" + createFolderOpen = false + }, + ) { Text(stringResource(R.string.create)) } + }, + dismissButton = { + TextButton(onClick = { createFolderOpen = false }) { Text(stringResource(R.string.cancel)) } + }, + ) + } +} + +@Composable +private fun BookmarkActions( + bookmark: BookmarkEntry, + folders: List, + onUpdate: (Long, String, Long?, BookmarkKind) -> Unit, + onDelete: (Long) -> Unit, +) { + var expanded by remember { mutableStateOf(false) } + var renameOpen by remember { mutableStateOf(false) } + var title by remember(bookmark.id, bookmark.title) { mutableStateOf(bookmark.title) } + Box { + IconButton( + onClick = { expanded = true }, + modifier = Modifier.size(44.dp).testTag("$BOOKMARK_OPTIONS_TEST_TAG_PREFIX${bookmark.id}"), + ) { + Icon( + Lucide.Ellipsis, + stringResource(R.string.bookmark_options), + tint = LocalNovaColors.current.faint, + modifier = Modifier.size(18.dp), + ) + } + DropdownMenu(expanded = expanded, onDismissRequest = { expanded = false }) { + DropdownMenuItem( + text = { Text(stringResource(R.string.edit_bookmark)) }, + onClick = { + expanded = false + renameOpen = true + }, + ) + DropdownMenuItem( + text = { + Text( + stringResource( + if (bookmark.kind == BookmarkKind.FAVORITE) { + R.string.move_to_reading_list + } else { + R.string.move_to_favorites + }, + ), + ) + }, + onClick = { + expanded = false + onUpdate( + bookmark.id, + bookmark.title, + bookmark.folderId, + if (bookmark.kind == BookmarkKind.FAVORITE) BookmarkKind.READING_LIST else BookmarkKind.FAVORITE, + ) + }, + ) + if (bookmark.folderId != null) { + DropdownMenuItem( + text = { Text(stringResource(R.string.remove_from_folder)) }, + onClick = { + expanded = false + onUpdate(bookmark.id, bookmark.title, null, bookmark.kind) + }, + ) + } + folders.filterNot { it.id == bookmark.folderId }.forEach { folder -> + DropdownMenuItem( + text = { Text(stringResource(R.string.move_to_folder, folder.title)) }, + onClick = { + expanded = false + onUpdate(bookmark.id, bookmark.title, folder.id, bookmark.kind) + }, + ) + } + DropdownMenuItem( + text = { Text(stringResource(R.string.delete), color = LocalNovaColors.current.danger) }, + onClick = { + expanded = false + onDelete(bookmark.id) + }, + ) + } + } + if (renameOpen) { + AlertDialog( + onDismissRequest = { renameOpen = false }, + title = { Text(stringResource(R.string.edit_bookmark)) }, + text = { + OutlinedTextField( + value = title, + onValueChange = { title = it }, + label = { Text(stringResource(R.string.bookmark_title)) }, + singleLine = true, + ) + }, + confirmButton = { + TextButton( + enabled = title.isNotBlank(), + onClick = { + onUpdate(bookmark.id, title, bookmark.folderId, bookmark.kind) + renameOpen = false + }, + ) { Text(stringResource(R.string.save)) } + }, + dismissButton = { + TextButton(onClick = { renameOpen = false }) { Text(stringResource(R.string.cancel)) } + }, + ) + } +} + +@Composable +private fun FolderCard(title: String, count: String, modifier: Modifier = Modifier) { + val colors = LocalNovaColors.current + NovaCard(modifier.height(132.dp)) { + Column(Modifier.fillMaxSize().padding(16.dp), verticalArrangement = Arrangement.SpaceBetween) { + Box( + Modifier.size(38.dp).background(colors.surfaceSecondary, RoundedCornerShape(11.dp)).border(1.dp, colors.border, RoundedCornerShape(11.dp)), + contentAlignment = Alignment.Center, + ) { Icon(Lucide.Folder, null, modifier = Modifier.size(20.dp)) } + Column { + Text(title, color = colors.foreground, fontSize = 14.5.sp, fontWeight = FontWeight.SemiBold) + Text(count, color = colors.muted, fontSize = 12.sp, fontFamily = FontFamily.Monospace) + } + } + } +} + +@Composable +private fun EmptyLibraryMessage(message: String) { + Text( + message, + modifier = Modifier.fillMaxWidth().padding(vertical = 36.dp), + color = LocalNovaColors.current.faint, + fontSize = 14.sp, + textAlign = androidx.compose.ui.text.style.TextAlign.Center, + ) +} + +private data class HistoryVisitGroup(val label: String, val visits: List) + +private fun groupHistoryVisits( + visits: List, + todayLabel: String, + yesterdayLabel: String, + datePattern: String, +): List { + val zone = ZoneId.systemDefault() + val today = LocalDate.now(zone) + return visits.groupBy { Instant.ofEpochMilli(it.visitedAt).atZone(zone).toLocalDate() } + .map { (date, rows) -> + val label = when (date) { + today -> todayLabel + today.minusDays(1) -> yesterdayLabel + else -> formatHistoryDate(date, datePattern) + } + HistoryVisitGroup(label, rows) + } +} + +private fun siteLetter(url: String, title: String): String = + title.trim().firstOrNull()?.uppercase() + ?: runCatching { URI(url).host?.firstOrNull()?.uppercase() }.getOrNull() + ?: "?" + +@Composable +fun DownloadsScreen(repository: SystemDownloadRepository, onBack: () -> Unit) { + val colors = LocalNovaColors.current + val downloads by repository.downloads.collectAsStateWithLifecycle() + val scope = rememberCoroutineScope() + val context = LocalContext.current + var editMode by remember { mutableStateOf(false) } + val active = downloads.filter { it.status != DownloadStatus.SUCCESSFUL } + val complete = downloads.filter { it.status == DownloadStatus.SUCCESSFUL } + LaunchedEffect(repository) { + while (true) { + runCatching { repository.refresh() } + delay(1_000) + } + } + Column(Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.safeDrawing).background(colors.background)) { + ScreenHeader(stringResource(R.string.downloads), onBack) { + Text( + stringResource(if (editMode) R.string.done else R.string.edit), + color = if (downloads.isEmpty()) colors.faint else colors.muted, + fontSize = 13.5.sp, + modifier = Modifier.clickable(enabled = downloads.isNotEmpty()) { editMode = !editMode }.padding(12.dp), + ) + } + LazyColumn(Modifier.fillMaxSize(), contentPadding = PaddingValues(start = 16.dp, end = 16.dp, bottom = 24.dp)) { + if (downloads.isEmpty()) { + item { EmptyLibraryMessage(stringResource(R.string.no_downloads)) } + } + if (active.isNotEmpty()) { + item { SectionLabel(stringResource(R.string.dao_in_progress)) } + item { + NovaCard { + active.forEachIndexed { index, download -> + RealDownloadRow( + download = download, + editMode = editMode, + onCancel = { scope.launch { repository.cancel(download.id) } }, + onRetry = { scope.launch { repository.retry(download.id) } }, + onRemove = { scope.launch { repository.remove(download.id) } }, + onOpen = {}, + ) + if (index != active.lastIndex) RowDivider() + } + } + } + } + if (complete.isNotEmpty()) { + item { SectionLabel(stringResource(R.string.completed)) } + item { + NovaCard { + complete.forEachIndexed { index, download -> + RealDownloadRow( + download = download, + editMode = editMode, + onCancel = {}, + onRetry = {}, + onRemove = { scope.launch { repository.remove(download.id) } }, + onOpen = { + download.localUri?.let { rawUri -> + val intent = Intent(Intent.ACTION_VIEW).apply { + setDataAndType(Uri.parse(rawUri), download.request.contentType ?: "*/*") + addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) + } + try { + context.startActivity(intent) + } catch (_: ActivityNotFoundException) { + // The file remains available in the system Downloads app. + } + } + }, + ) + if (index != complete.lastIndex) RowDivider() + } + } + } + } + } + } +} + +@Composable +private fun RealDownloadRow( + download: BrowserDownload, + editMode: Boolean, + onCancel: () -> Unit, + onRetry: () -> Unit, + onRemove: () -> Unit, + onOpen: () -> Unit, +) { + val action = when { + editMode -> DownloadAction(Lucide.Trash2, stringResource(R.string.delete), onRemove) + download.status == DownloadStatus.FAILED -> DownloadAction(Lucide.RefreshCw, stringResource(R.string.retry), onRetry) + download.status == DownloadStatus.SUCCESSFUL -> DownloadAction(Lucide.ChevronRight, stringResource(R.string.open), onOpen) + else -> DownloadAction(Lucide.X, stringResource(R.string.cancel_download), onCancel) + } + DownloadRow( + type = download.request.fileName.substringAfterLast('.', stringResource(R.string.file_type)).uppercase().take(4), + name = download.request.fileName, + meta = downloadMeta(download), + actionIcon = action.icon, + actionDescription = action.description, + progress = download.progress.takeUnless { download.status == DownloadStatus.FAILED }, + onAction = action.onClick, + ) +} + +private data class DownloadAction(val icon: ImageVector, val description: String, val onClick: () -> Unit) + +@Composable +private fun downloadMeta(download: BrowserDownload): String { + val size = buildString { + append(formatBytes(download.bytesDownloaded)) + download.totalBytes?.let { append(" / ").append(formatBytes(it)) } + } + val status = stringResource( + when (download.status) { + DownloadStatus.PENDING -> R.string.download_pending + DownloadStatus.RUNNING -> R.string.downloading + DownloadStatus.PAUSED -> R.string.download_waiting + DownloadStatus.SUCCESSFUL -> R.string.download_complete + DownloadStatus.FAILED -> R.string.download_failed + }, + ) + return "$size · $status" +} + +private fun formatBytes(bytes: Long): String { + if (bytes < 1_024) return "$bytes B" + val units = arrayOf("KB", "MB", "GB", "TB") + var value = bytes.toDouble() / 1_024.0 + var unitIndex = 0 + while (value >= 1_024 && unitIndex < units.lastIndex) { + value /= 1_024.0 + unitIndex++ + } + return String.format(Locale.ROOT, "%.1f %s", value, units[unitIndex]) +} + +@Composable +private fun DownloadRow( + type: String, + name: String, + meta: String, + actionIcon: ImageVector, + actionDescription: String, + progress: Float? = null, + onAction: () -> Unit = {}, +) { + val colors = LocalNovaColors.current + Row(Modifier.fillMaxWidth().padding(14.dp), verticalAlignment = Alignment.CenterVertically) { + Box( + Modifier.size(44.dp).background(colors.surfaceSecondary, RoundedCornerShape(11.dp)).border(1.dp, colors.border, RoundedCornerShape(11.dp)), + contentAlignment = Alignment.Center, + ) { Text(type, color = colors.muted, fontSize = 11.sp, fontFamily = FontFamily.Monospace, fontWeight = FontWeight.SemiBold) } + Spacer(Modifier.width(13.dp)) + Column(Modifier.weight(1f)) { + Text(name, color = colors.foreground, fontSize = 14.5.sp, fontWeight = FontWeight.Medium, maxLines = 1, overflow = TextOverflow.Ellipsis) + Text(meta, color = colors.muted, fontSize = 12.sp, maxLines = 1) + if (progress != null) { + Spacer(Modifier.height(7.dp)) + LinearProgressIndicator( + progress = { progress }, + modifier = Modifier.fillMaxWidth().height(5.dp), + color = colors.accent, + trackColor = colors.surfaceSecondary, + gapSize = 0.dp, + drawStopIndicator = {}, + ) + } + } + Spacer(Modifier.width(10.dp)) + Surface( + modifier = Modifier.size(44.dp).clickable(onClick = onAction), + shape = RoundedCornerShape(10.dp), + color = colors.surfaceSecondary, + border = BorderStroke(1.dp, colors.border), + ) { Box(contentAlignment = Alignment.Center) { Icon(actionIcon, actionDescription, modifier = Modifier.size(18.dp)) } } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ExtensionsScreen( + repository: ExtensionRepository, + onOpenStore: () -> Unit, + onActionInvoked: () -> Unit = {}, + onBack: () -> Unit, +) { + val colors = LocalNovaColors.current + val context = LocalContext.current + val scope = rememberCoroutineScope() + val extensions by repository.extensions.collectAsStateWithLifecycle() + val installState by repository.installState.collectAsStateWithLifecycle() + val stager = remember(context) { ExtensionPackageStager(context.applicationContext) } + var pendingUninstall by remember { mutableStateOf(null) } + val busyMessage = stringResource(R.string.extension_install_busy) + val picker = rememberLauncherForActivityResult(ActivityResultContracts.OpenDocument()) { uri -> + if (uri == null) return@rememberLauncherForActivityResult + repository.setStaging() + scope.launch { + try { + val staged = withContext(Dispatchers.IO) { stager.stage(uri) } + if (!repository.install(staged)) { + staged.delete() + Toast.makeText(context, busyMessage, Toast.LENGTH_SHORT).show() + } + } catch (error: ExtensionPackageException) { + repository.reportStagingFailure(error) + } + } + } + LaunchedEffect(repository) { + repeat(3) { + repository.refresh() + if (repository.extensions.value.isNotEmpty()) return@LaunchedEffect + delay(400) + } + } + Column(Modifier.fillMaxSize().windowInsetsPadding(WindowInsets.safeDrawing).background(colors.background)) { + ScreenHeader(stringResource(R.string.extensions), onBack) { + Row(horizontalArrangement = Arrangement.spacedBy(8.dp)) { + Surface( + modifier = Modifier + .height(36.dp) + .testTag("open-extension-store") + .clickable(onClick = onOpenStore), + color = colors.surfaceSecondary, + border = BorderStroke(1.dp, colors.border), + shape = RoundedCornerShape(10.dp), + ) { Box(Modifier.padding(horizontal = 12.dp), contentAlignment = Alignment.Center) { Text(stringResource(R.string.extension_store), color = colors.foreground, fontSize = 13.sp, fontWeight = FontWeight.SemiBold) } } + Surface( + modifier = Modifier.height(36.dp).testTag("install-extension").clickable { + picker.launch( + arrayOf( + "application/x-xpinstall", + "application/zip", + "application/octet-stream", + ), + ) + }, + color = colors.accent, + shape = RoundedCornerShape(10.dp), + ) { Box(Modifier.padding(horizontal = 12.dp), contentAlignment = Alignment.Center) { Text(stringResource(R.string.install_xpi), color = colors.onAccent, fontSize = 13.sp, fontWeight = FontWeight.SemiBold) } } + } + } + LazyColumn(Modifier.fillMaxSize(), contentPadding = PaddingValues(start = 16.dp, end = 16.dp, bottom = 24.dp)) { + if (installState !is ExtensionInstallState.Idle && + installState !is ExtensionInstallState.AwaitingPermission + ) { + item { + ExtensionInstallStatus( + state = installState, + onDismiss = repository::dismissResult, + ) + } + } + item { SectionLabel(stringResource(R.string.installed_extensions, extensions.size)) } + if (extensions.isEmpty()) { + item { EmptyLibraryMessage(stringResource(R.string.no_extensions)) } + } else { + item { + NovaCard { + extensions.forEachIndexed { index, extension -> + ExtensionRow( + icon = Lucide.Shield, + title = extension.name, + subtitle = if (extension.description.isBlank()) { + stringResource(R.string.extension_version, extension.version) + } else { + extension.description + }, + ) { + Row(verticalAlignment = Alignment.CenterVertically) { + if (extension.actionAvailable) { + IconButton( + onClick = { + if (repository.invokeAction(extension.id)) { + onActionInvoked() + } + }, + modifier = Modifier + .size(40.dp) + .testTag("open-extension-${extension.id}"), + ) { + Icon( + Lucide.ChevronRight, + stringResource(R.string.open), + modifier = Modifier.size(18.dp), + tint = colors.muted, + ) + } + } + if (!extension.builtIn) { + IconButton( + onClick = { pendingUninstall = extension }, + modifier = Modifier + .size(40.dp) + .testTag("uninstall-extension-${extension.id}"), + ) { + Icon( + Lucide.Trash2, + stringResource(R.string.uninstall_extension), + modifier = Modifier.size(18.dp), + tint = colors.muted, + ) + } + } + NovaSwitch(extension.enabled, onCheckedChange = { + repository.setEnabled(extension.id, it) + }) + } + } + if (index != extensions.lastIndex) RowDivider() + } + } + } + } + } + } + + ExtensionPermissionSheet( + state = installState, + onResolvePermission = repository::resolvePermission, + ) + + pendingUninstall?.let { extension -> + AlertDialog( + onDismissRequest = { pendingUninstall = null }, + title = { Text(stringResource(R.string.uninstall_extension_title)) }, + text = { Text(stringResource(R.string.uninstall_extension_message, extension.name)) }, + confirmButton = { + TextButton(onClick = { + repository.uninstall(extension.id) + pendingUninstall = null + }) { Text(stringResource(R.string.uninstall_extension)) } + }, + dismissButton = { + TextButton(onClick = { pendingUninstall = null }) { Text(stringResource(R.string.cancel)) } + }, + ) + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun ExtensionPermissionSheet( + state: ExtensionInstallState, + onResolvePermission: (Boolean) -> Unit, +) { + val permission = (state as? ExtensionInstallState.AwaitingPermission)?.prompt ?: return + val colors = LocalNovaColors.current + ModalBottomSheet( + onDismissRequest = { onResolvePermission(false) }, + containerColor = colors.background, + modifier = Modifier.testTag("extension-permission-sheet"), + ) { + Column(Modifier.fillMaxWidth().padding(start = 24.dp, end = 24.dp, bottom = 28.dp)) { + Text(stringResource(R.string.extension_permission_title), color = colors.foreground, fontSize = 20.sp, fontWeight = FontWeight.SemiBold) + Spacer(Modifier.height(8.dp)) + Text(stringResource(R.string.extension_identity, permission.name, permission.version), color = colors.muted, fontSize = 13.sp) + Spacer(Modifier.height(16.dp)) + Text(stringResource(R.string.extension_permission_warning), color = colors.foreground, fontSize = 14.sp) + ExtensionPermissionGroup(R.string.extension_browser_permissions, permission.permissions) + ExtensionPermissionGroup(R.string.extension_site_access, permission.origins) + ExtensionPermissionGroup(R.string.extension_data_collection, permission.dataCollectionPermissions) + Spacer(Modifier.height(18.dp)) + Row(Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.End) { + TextButton( + onClick = { onResolvePermission(false) }, + modifier = Modifier.testTag("cancel-extension"), + ) { Text(stringResource(R.string.cancel)) } + TextButton( + onClick = { onResolvePermission(true) }, + modifier = Modifier.testTag("approve-extension"), + ) { Text(stringResource(R.string.install_extension)) } + } + } + } +} + +@Composable +private fun ExtensionPermissionGroup(titleRes: Int, values: List) { + if (values.isEmpty()) return + val colors = LocalNovaColors.current + Spacer(Modifier.height(14.dp)) + Text(stringResource(titleRes), color = colors.foreground, fontSize = 13.sp, fontWeight = FontWeight.SemiBold) + values.forEach { value -> + Text("• $value", color = colors.muted, fontSize = 12.sp, fontFamily = FontFamily.Monospace) + } +} + +@Composable +internal fun ExtensionInstallStatus( + state: ExtensionInstallState, + onDismiss: () -> Unit, +) { + val colors = LocalNovaColors.current + val message = when (state) { + ExtensionInstallState.Staging -> stringResource(R.string.extension_staging) + ExtensionInstallState.Installing -> stringResource(R.string.extension_installing) + is ExtensionInstallState.Installed -> stringResource(R.string.extension_installed, state.name) + is ExtensionInstallState.Failed -> extensionFailureMessage(state.reason) + else -> return + } + Surface( + modifier = Modifier.fillMaxWidth().padding(top = 12.dp), + color = colors.surfaceSecondary, + shape = RoundedCornerShape(12.dp), + border = BorderStroke(1.dp, colors.border), + ) { + Row(Modifier.fillMaxWidth().padding(14.dp), verticalAlignment = Alignment.CenterVertically) { + Text(message, modifier = Modifier.weight(1f), color = colors.foreground, fontSize = 13.sp) + if (state is ExtensionInstallState.Staging || state is ExtensionInstallState.Installing) { + LinearProgressIndicator(modifier = Modifier.width(72.dp).height(4.dp), color = colors.accent) + } else { + TextButton(onClick = onDismiss) { Text(stringResource(R.string.done)) } + } + } + } +} + +@Composable +private fun extensionFailureMessage(reason: ExtensionInstallFailure): String = stringResource( + when (reason) { + ExtensionInstallFailure.INVALID_FILE_NAME -> R.string.extension_error_invalid_name + ExtensionInstallFailure.EMPTY_FILE -> R.string.extension_error_empty + ExtensionInstallFailure.TOO_LARGE -> R.string.extension_error_too_large + ExtensionInstallFailure.UNAVAILABLE -> R.string.extension_error_unavailable + ExtensionInstallFailure.BUSY -> R.string.extension_install_busy + ExtensionInstallFailure.NOT_SIGNED -> R.string.extension_error_not_signed + ExtensionInstallFailure.CORRUPT_FILE -> R.string.extension_error_corrupt + ExtensionInstallFailure.INCOMPATIBLE -> R.string.extension_error_incompatible + ExtensionInstallFailure.BLOCKLISTED -> R.string.extension_error_blocklisted + ExtensionInstallFailure.SOFT_BLOCKED -> R.string.extension_error_soft_blocked + ExtensionInstallFailure.NETWORK_FAILURE -> R.string.extension_error_network + ExtensionInstallFailure.UNSUPPORTED_TYPE -> R.string.extension_error_unsupported + ExtensionInstallFailure.USER_CANCELLED -> R.string.extension_error_cancelled + ExtensionInstallFailure.UNKNOWN -> R.string.extension_error_unknown + }, +) + +@Composable +private fun ExtensionRow(icon: ImageVector, title: String, subtitle: String, trailing: @Composable () -> Unit) { + val colors = LocalNovaColors.current + Row(Modifier.fillMaxWidth().padding(14.dp), verticalAlignment = Alignment.CenterVertically) { + Box( + Modifier.size(44.dp).background(colors.surfaceSecondary, RoundedCornerShape(12.dp)).border(1.dp, colors.border, RoundedCornerShape(12.dp)), + contentAlignment = Alignment.Center, + ) { Icon(icon, null, modifier = Modifier.size(23.dp)) } + Spacer(Modifier.width(13.dp)) + Column(Modifier.weight(1f)) { + Text(title, color = colors.foreground, fontSize = 14.5.sp, fontWeight = FontWeight.SemiBold) + Text(subtitle, color = colors.muted, fontSize = 12.sp, maxLines = 1, overflow = TextOverflow.Ellipsis) + } + trailing() + } +} + +@Composable +private fun RecommendationRow(icon: ImageVector, title: String, rating: String) { + val colors = LocalNovaColors.current + Row(Modifier.fillMaxWidth().padding(14.dp), verticalAlignment = Alignment.CenterVertically) { + Box( + Modifier.size(40.dp).background(colors.surfaceSecondary, RoundedCornerShape(12.dp)).border(1.dp, colors.border, RoundedCornerShape(12.dp)), + contentAlignment = Alignment.Center, + ) { Icon(icon, null, modifier = Modifier.size(20.dp)) } + Spacer(Modifier.width(13.dp)) + Column(Modifier.weight(1f)) { + Text(title, color = colors.foreground, fontSize = 14.5.sp, fontWeight = FontWeight.SemiBold) + Text(rating, color = colors.muted, fontSize = 12.sp, fontFamily = FontFamily.Monospace) + } + Surface( + modifier = Modifier.height(36.dp).clickable {}, + color = colors.surface, + shape = RoundedCornerShape(18.dp), + border = BorderStroke(1.dp, colors.strongBorder), + ) { Box(Modifier.padding(horizontal = 16.dp), contentAlignment = Alignment.Center) { Text(stringResource(R.string.get), fontSize = 13.sp, fontWeight = FontWeight.SemiBold) } } + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/NewTabSearchModel.kt b/android/app/src/main/java/com/msgbyte/dao/ui/NewTabSearchModel.kt new file mode 100644 index 00000000..89a46c5b --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/NewTabSearchModel.kt @@ -0,0 +1,75 @@ +package com.msgbyte.dao.ui + +import androidx.annotation.ColorInt +import com.msgbyte.dao.browser.BookmarkEntry +import com.msgbyte.dao.browser.HistoryVisit +import java.net.URI + +enum class SuggestionType { + Site, + Search, +} + +data class SearchSuggestion( + val title: String, + val subtitle: String, + val type: SuggestionType, + val letter: String = "", + @param:ColorInt val avatarColor: Int = 0, + val target: String = subtitle, +) + +fun searchSuggestions( + query: String, + pool: List, +): List { + val normalizedQuery = query.trim() + if (normalizedQuery.isEmpty()) { + return pool.filter { it.type == SuggestionType.Site }.take(3) + } + return pool.filter { + (it.title + " " + it.subtitle).contains(normalizedQuery, ignoreCase = true) + }.take(5) +} + +fun buildLibrarySuggestions( + query: String, + bookmarks: List, + history: List, +): List { + val normalizedQuery = query.trim() + val entries = if (normalizedQuery.isEmpty()) { + sequence { + history.forEach { yield(it.url to it.title) } + bookmarks.forEach { yield(it.url to it.title) } + } + } else { + sequence { + bookmarks.forEach { yield(it.url to it.title) } + history.forEach { yield(it.url to it.title) } + }.filter { (url, title) -> + "$title $url".contains(normalizedQuery, ignoreCase = true) + } + } + val limit = if (normalizedQuery.isEmpty()) 3 else 5 + return entries + .distinctBy { it.first } + .take(limit) + .map { (url, title) -> + SearchSuggestion( + title = title.ifBlank { url }, + subtitle = url, + type = SuggestionType.Site, + letter = siteLetter(url, title), + avatarColor = 0xFF3F424A.toInt(), + target = url, + ) + } + .toList() +} + +private fun siteLetter(url: String, title: String): String { + return title.trim().firstOrNull()?.uppercase() + ?: runCatching { URI(url).host?.firstOrNull()?.uppercase() }.getOrNull() + ?: "?" +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/NewTabTimeModel.kt b/android/app/src/main/java/com/msgbyte/dao/ui/NewTabTimeModel.kt new file mode 100644 index 00000000..380ec5c4 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/NewTabTimeModel.kt @@ -0,0 +1,23 @@ +package com.msgbyte.dao.ui + +import java.time.LocalDate +import java.time.format.DateTimeFormatter +import java.util.Locale + +enum class GreetingPeriod { + MORNING, + AFTERNOON, + EVENING, +} + +fun greetingPeriod(hour: Int): GreetingPeriod = when (hour) { + in 5..11 -> GreetingPeriod.MORNING + in 12..17 -> GreetingPeriod.AFTERNOON + else -> GreetingPeriod.EVENING +} + +fun formatNewTabDate( + date: LocalDate, + pattern: String, + locale: Locale = Locale.getDefault(), +): String = DateTimeFormatter.ofPattern(pattern, locale).format(date) diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/NovaComponents.kt b/android/app/src/main/java/com/msgbyte/dao/ui/NovaComponents.kt new file mode 100644 index 00000000..e1abf597 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/NovaComponents.kt @@ -0,0 +1,253 @@ +package com.msgbyte.dao.ui + +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Card +import androidx.compose.material3.CardDefaults +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Surface +import androidx.compose.material3.Switch +import androidx.compose.material3.SwitchDefaults +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.vector.ImageVector +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.composables.icons.lucide.ChevronLeft +import com.composables.icons.lucide.Lucide +import com.msgbyte.dao.R +import com.msgbyte.dao.ui.theme.LocalNovaColors + +@Composable +fun NovaCard( + modifier: Modifier = Modifier, + content: @Composable () -> Unit, +) { + val colors = LocalNovaColors.current + Card( + modifier = modifier, + shape = RoundedCornerShape(16.dp), + colors = CardDefaults.cardColors(containerColor = colors.surface), + border = BorderStroke(1.dp, colors.border), + elevation = CardDefaults.cardElevation(defaultElevation = 1.dp), + ) { + content() + } +} + +@Composable +fun LetterAvatar( + letter: String, + color: Color, + modifier: Modifier = Modifier, +) { + val colors = LocalNovaColors.current + Box( + modifier = modifier + .size(38.dp) + .background(color, RoundedCornerShape(10.dp)), + contentAlignment = Alignment.Center, + ) { + Text( + text = letter, + color = colors.onAccent, + fontSize = if (letter.length > 2) 11.sp else 15.sp, + fontWeight = FontWeight.SemiBold, + ) + } +} + +@Composable +fun ListRow( + title: String, + subtitle: String, + modifier: Modifier = Modifier, + letter: String? = null, + avatarColor: Color = LocalNovaColors.current.accent, + leadingIcon: ImageVector? = null, + meta: String? = null, + trailing: (@Composable () -> Unit)? = null, + onClick: (() -> Unit)? = null, +) { + val colors = LocalNovaColors.current + Row( + modifier = modifier + .fillMaxWidth() + .then(if (onClick != null) Modifier.clickable(onClick = onClick) else Modifier) + .padding(horizontal = 16.dp, vertical = 11.dp) + .height(44.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + when { + letter != null -> LetterAvatar(letter, avatarColor) + leadingIcon != null -> Box( + modifier = Modifier + .size(38.dp) + .background(colors.surfaceSecondary, RoundedCornerShape(10.dp)) + .border(1.dp, colors.border, RoundedCornerShape(10.dp)), + contentAlignment = Alignment.Center, + ) { + Icon(leadingIcon, contentDescription = null, modifier = Modifier.size(20.dp)) + } + } + if (letter != null || leadingIcon != null) Spacer(Modifier.width(14.dp)) + Column(modifier = Modifier.weight(1f)) { + Text( + text = title, + color = colors.foreground, + fontSize = 15.sp, + fontWeight = FontWeight.Medium, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + if (subtitle.isNotEmpty()) { + Text( + text = subtitle, + color = colors.muted, + fontSize = 12.5.sp, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + } + } + if (meta != null) { + Text(meta, color = colors.faint, fontSize = 12.sp) + } + if (trailing != null) { + Spacer(Modifier.width(8.dp)) + trailing() + } + } +} + +@Composable +fun NovaSwitch( + checked: Boolean, + onCheckedChange: (Boolean) -> Unit, + modifier: Modifier = Modifier, +) { + val colors = LocalNovaColors.current + Switch( + checked = checked, + onCheckedChange = onCheckedChange, + modifier = modifier, + colors = SwitchDefaults.colors( + checkedThumbColor = colors.surface, + checkedTrackColor = colors.accent, + uncheckedThumbColor = colors.surface, + uncheckedTrackColor = colors.strongBorder, + uncheckedBorderColor = Color.Transparent, + ), + ) +} + +@Composable +fun SegmentedControl( + items: List, + selectedIndex: Int, + onSelected: (Int) -> Unit, + modifier: Modifier = Modifier, +) { + val colors = LocalNovaColors.current + Row( + modifier = modifier + .fillMaxWidth() + .background(colors.surfaceSecondary, RoundedCornerShape(11.dp)) + .border(1.dp, colors.border, RoundedCornerShape(11.dp)) + .padding(3.dp), + horizontalArrangement = Arrangement.spacedBy(2.dp), + ) { + items.forEachIndexed { index, label -> + Surface( + modifier = Modifier + .weight(1f) + .height(36.dp) + .clickable { onSelected(index) }, + shape = RoundedCornerShape(8.dp), + color = if (selectedIndex == index) colors.surface else Color.Transparent, + shadowElevation = if (selectedIndex == index) 1.dp else 0.dp, + ) { + Box(contentAlignment = Alignment.Center) { + Text( + label, + color = if (selectedIndex == index) colors.foreground else colors.muted, + fontSize = 13.sp, + fontWeight = FontWeight.Medium, + ) + } + } + } + } +} + +@Composable +fun SectionLabel(text: String, modifier: Modifier = Modifier) { + val colors = LocalNovaColors.current + Text( + text = text.uppercase(), + modifier = modifier.padding(start = 6.dp, bottom = 8.dp, top = 14.dp), + color = colors.muted, + fontSize = 11.sp, + letterSpacing = 1.3.sp, + ) +} + +@Composable +fun ScreenHeader( + title: String, + onBack: () -> Unit, + action: (@Composable () -> Unit)? = null, +) { + val colors = LocalNovaColors.current + Row( + modifier = Modifier + .fillMaxWidth() + .height(56.dp) + .padding(horizontal = 8.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + IconButton(onClick = onBack, modifier = Modifier.size(44.dp)) { + Icon( + Lucide.ChevronLeft, + contentDescription = stringResource(R.string.navigate_back), + tint = colors.foreground, + ) + } + Text( + title, + modifier = Modifier.weight(1f), + color = colors.foreground, + fontSize = 22.sp, + fontWeight = FontWeight.Bold, + ) + action?.invoke() + } +} + +@Composable +fun RowDivider(modifier: Modifier = Modifier) { + val colors = LocalNovaColors.current + HorizontalDivider(modifier = modifier, thickness = 1.dp, color = colors.border) +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/QrCameraPreview.kt b/android/app/src/main/java/com/msgbyte/dao/ui/QrCameraPreview.kt new file mode 100644 index 00000000..f7097677 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/QrCameraPreview.kt @@ -0,0 +1,95 @@ +package com.msgbyte.dao.ui + +import androidx.camera.core.CameraSelector +import androidx.camera.core.ImageAnalysis +import androidx.camera.core.ImageProxy +import androidx.camera.core.Preview +import androidx.camera.lifecycle.ProcessCameraProvider +import androidx.camera.view.PreviewView +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.remember +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.viewinterop.AndroidView +import androidx.core.content.ContextCompat +import androidx.lifecycle.compose.LocalLifecycleOwner +import com.msgbyte.dao.browser.QrCodeDecoder +import java.util.concurrent.Executors +import java.util.concurrent.atomic.AtomicBoolean + +@Composable +fun QrCameraPreview( + onDecoded: (String) -> Unit, + onError: (Throwable) -> Unit, + modifier: Modifier = Modifier, +) { + val context = LocalContext.current + val lifecycleOwner = LocalLifecycleOwner.current + val previewView = remember { PreviewView(context).apply { scaleType = PreviewView.ScaleType.FILL_CENTER } } + val analysisExecutor = remember { Executors.newSingleThreadExecutor() } + val delivered = remember { AtomicBoolean(false) } + + AndroidView(factory = { previewView }, modifier = modifier) + + DisposableEffect(previewView, lifecycleOwner) { + val providerFuture = ProcessCameraProvider.getInstance(context) + var provider: ProcessCameraProvider? = null + providerFuture.addListener( + { + runCatching { + provider = providerFuture.get() + val preview = Preview.Builder().build().also { + it.surfaceProvider = previewView.surfaceProvider + } + val analysis = ImageAnalysis.Builder() + .setBackpressureStrategy(ImageAnalysis.STRATEGY_KEEP_ONLY_LATEST) + .build() + analysis.setAnalyzer(analysisExecutor) { image -> + analyze(image)?.let { content -> + if (delivered.compareAndSet(false, true)) { + ContextCompat.getMainExecutor(context).execute { onDecoded(content) } + } + } + } + provider?.unbindAll() + provider?.bindToLifecycle( + lifecycleOwner, + CameraSelector.DEFAULT_BACK_CAMERA, + preview, + analysis, + ) + }.onFailure(onError) + }, + ContextCompat.getMainExecutor(context), + ) + onDispose { + provider?.unbindAll() + analysisExecutor.shutdown() + } + } +} + +private fun analyze(image: ImageProxy): String? = try { + val plane = image.planes.firstOrNull() ?: return null + val buffer = plane.buffer + buffer.rewind() + val raw = ByteArray(buffer.remaining()).also(buffer::get) + val luminance = ByteArray(image.width * image.height) + for (row in 0 until image.height) { + for (column in 0 until image.width) { + val sourceIndex = row * plane.rowStride + column * plane.pixelStride + if (sourceIndex < raw.size) { + luminance[row * image.width + column] = raw[sourceIndex] + } + } + } + QrCodeDecoder.decode( + luminance, + image.width, + image.height, + image.imageInfo.rotationDegrees, + ) +} finally { + image.close() +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/TabGridScreen.kt b/android/app/src/main/java/com/msgbyte/dao/ui/TabGridScreen.kt new file mode 100644 index 00000000..3127c011 --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/TabGridScreen.kt @@ -0,0 +1,236 @@ +package com.msgbyte.dao.ui + +import android.graphics.Bitmap +import androidx.activity.compose.BackHandler +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawing +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.windowInsetsPadding +import androidx.compose.foundation.lazy.grid.GridCells +import androidx.compose.foundation.lazy.grid.LazyVerticalGrid +import androidx.compose.foundation.lazy.grid.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.Surface +import androidx.compose.material3.SwipeToDismissBox +import androidx.compose.material3.SwipeToDismissBoxValue +import androidx.compose.material3.Text +import androidx.compose.material3.rememberSwipeToDismissBoxState +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.asImageBitmap +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.testTag +import androidx.compose.ui.res.stringResource +import androidx.compose.ui.semantics.selected +import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.text.font.FontWeight +import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.composables.icons.lucide.ChevronLeft +import com.composables.icons.lucide.Lucide +import com.composables.icons.lucide.Plus +import com.composables.icons.lucide.X +import com.msgbyte.dao.R +import com.msgbyte.dao.browser.TabThumbnailRepository +import com.msgbyte.dao.ui.theme.LocalNovaColors +import mozilla.components.browser.state.state.TabSessionState + +const val TAB_GRID_TEST_TAG = "tab-grid" +const val TAB_CARD_TEST_TAG_PREFIX = "tab-card-" + +@Composable +fun TabGridScreen( + tabs: List, + selectedTabId: String?, + thumbnailRepository: TabThumbnailRepository, + onSelect: (String) -> Unit, + onClose: (String) -> Unit, + onNewTab: () -> Unit, + onBack: () -> Unit, +) { + val colors = LocalNovaColors.current + var thumbnails by remember { mutableStateOf>(emptyMap()) } + + LaunchedEffect(tabs.map { it.id to it.content.private }) { + thumbnails = tabs.mapNotNull { tab -> + thumbnailRepository.load(tab.id, tab.content.private)?.let { tab.id to it } + }.toMap() + } + BackHandler(onBack = onBack) + + Surface( + modifier = Modifier.fillMaxSize().testTag(TAB_GRID_TEST_TAG), + color = colors.background, + ) { + Column(Modifier.fillMaxSize().windowInsetsPadding(androidx.compose.foundation.layout.WindowInsets.safeDrawing)) { + Row( + modifier = Modifier.fillMaxWidth().padding(horizontal = 12.dp, vertical = 8.dp), + verticalAlignment = Alignment.CenterVertically, + ) { + IconButton(onClick = onBack) { + Icon(Lucide.ChevronLeft, stringResource(R.string.navigate_back)) + } + Text( + stringResource(R.string.tabs_title, tabs.size), + modifier = Modifier.weight(1f), + color = colors.foreground, + fontSize = 20.sp, + fontWeight = FontWeight.SemiBold, + ) + IconButton(onClick = onNewTab) { + Icon(Lucide.Plus, stringResource(R.string.new_tab)) + } + } + LazyVerticalGrid( + columns = GridCells.Fixed(2), + modifier = Modifier.fillMaxSize(), + contentPadding = PaddingValues(start = 12.dp, end = 12.dp, bottom = 20.dp), + horizontalArrangement = Arrangement.spacedBy(10.dp), + verticalArrangement = Arrangement.spacedBy(10.dp), + ) { + items(tabs, key = { it.id }) { tab -> + TabGridCard( + tab = tab, + selected = tab.id == selectedTabId, + thumbnail = thumbnails[tab.id], + onSelect = { onSelect(tab.id) }, + onClose = { onClose(tab.id) }, + ) + } + } + } + } +} + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +private fun TabGridCard( + tab: TabSessionState, + selected: Boolean, + thumbnail: Bitmap?, + onSelect: () -> Unit, + onClose: () -> Unit, +) { + val colors = LocalNovaColors.current + val dismissState = rememberSwipeToDismissBoxState( + confirmValueChange = { value -> + if (value == SwipeToDismissBoxValue.StartToEnd) { + onClose() + true + } else { + false + } + }, + positionalThreshold = { distance -> distance * 0.35f }, + ) + SwipeToDismissBox( + state = dismissState, + enableDismissFromStartToEnd = true, + enableDismissFromEndToStart = false, + backgroundContent = { + Box( + Modifier.fillMaxSize().background(colors.accent, RoundedCornerShape(14.dp)), + contentAlignment = Alignment.CenterStart, + ) { + Icon( + Lucide.X, + contentDescription = null, + tint = colors.onAccent, + modifier = Modifier.padding(start = 24.dp), + ) + } + }, + ) { + Surface( + modifier = Modifier + .fillMaxWidth() + .height(252.dp) + .testTag("$TAB_CARD_TEST_TAG_PREFIX${tab.id}") + .semantics { this.selected = selected } + .clip(RoundedCornerShape(14.dp)) + .clickable(onClick = onSelect) + .then( + if (selected) Modifier.border(2.dp, colors.accent, RoundedCornerShape(14.dp)) + else Modifier.border(1.dp, colors.border, RoundedCornerShape(14.dp)), + ), + shape = RoundedCornerShape(14.dp), + color = colors.surface, + ) { + Column { + Box( + modifier = Modifier.fillMaxWidth().weight(1f) + .background(colors.surfaceSecondary), + contentAlignment = Alignment.Center, + ) { + if (thumbnail != null) { + Image( + bitmap = thumbnail.asImageBitmap(), + contentDescription = null, + modifier = Modifier.fillMaxSize(), + contentScale = ContentScale.Crop, + ) + } else { + Text("Dao", color = colors.faint, fontWeight = FontWeight.SemiBold) + } + IconButton( + onClick = onClose, + modifier = Modifier.align(Alignment.TopEnd).padding(4.dp).size(34.dp) + .background(colors.surface.copy(alpha = .9f), RoundedCornerShape(10.dp)), + ) { + Icon( + Lucide.X, + stringResource(R.string.close_tab), + tint = colors.foreground, + modifier = Modifier.size(17.dp), + ) + } + } + Column(Modifier.fillMaxWidth().padding(horizontal = 10.dp, vertical = 9.dp)) { + Text( + tab.content.title.ifBlank { + if (tab.content.url == "about:blank") stringResource(R.string.new_tab) + else tab.content.url + }, + color = colors.foreground, + fontSize = 13.sp, + fontWeight = FontWeight.SemiBold, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + Spacer(Modifier.height(2.dp)) + Text( + tab.content.url, + color = colors.muted, + fontSize = 11.sp, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + ) + } + } + } + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/TabThumbnailCaptureCoordinator.kt b/android/app/src/main/java/com/msgbyte/dao/ui/TabThumbnailCaptureCoordinator.kt new file mode 100644 index 00000000..21ff50fa --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/TabThumbnailCaptureCoordinator.kt @@ -0,0 +1,64 @@ +package com.msgbyte.dao.ui + +import android.graphics.Bitmap +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.CoroutineStart +import kotlinx.coroutines.Job +import kotlinx.coroutines.cancelAndJoin +import kotlinx.coroutines.isActive +import kotlinx.coroutines.launch + +internal class TabThumbnailCaptureCoordinator( + private val scope: CoroutineScope, + private val captureThumbnail: suspend () -> Bitmap?, + private val saveThumbnail: suspend (tabId: String, private: Boolean, bitmap: Bitmap) -> Unit, + private val deleteThumbnail: suspend (tabId: String) -> Unit, + private val onError: (Throwable) -> Unit = {}, +) { + private val activeGenerations = mutableMapOf() + private val captureJobs = mutableMapOf() + private var nextGeneration = 0L + + fun capture(tabId: String, private: Boolean) { + val previous = captureJobs.remove(tabId) + previous?.cancel() + val generation = ++nextGeneration + activeGenerations[tabId] = generation + + lateinit var job: Job + job = scope.launch(start = CoroutineStart.UNDISPATCHED) { + try { + previous?.join() + val bitmap = captureThumbnail() + if (bitmap != null && isActive && activeGenerations[tabId] == generation) { + saveThumbnail(tabId, private, bitmap) + } + } catch (error: Throwable) { + report(error) + } + } + captureJobs[tabId] = job + job.invokeOnCompletion { + if (captureJobs[tabId] === job) { + captureJobs.remove(tabId) + if (activeGenerations[tabId] == generation) activeGenerations.remove(tabId) + } + } + } + + suspend fun close(tabId: String) { + activeGenerations.remove(tabId) + try { + captureJobs.remove(tabId)?.cancelAndJoin() + deleteThumbnail(tabId) + } catch (error: Throwable) { + report(error) + } + } + + private fun report(error: Throwable) { + if (error is CancellationException) throw error + onError(error) + } +} diff --git a/android/app/src/main/java/com/msgbyte/dao/ui/theme/DaoTheme.kt b/android/app/src/main/java/com/msgbyte/dao/ui/theme/DaoTheme.kt new file mode 100644 index 00000000..b89b9aad --- /dev/null +++ b/android/app/src/main/java/com/msgbyte/dao/ui/theme/DaoTheme.kt @@ -0,0 +1,101 @@ +package com.msgbyte.dao.ui.theme + +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.darkColorScheme +import androidx.compose.material3.lightColorScheme +import androidx.compose.runtime.Composable +import androidx.compose.runtime.Immutable +import androidx.compose.runtime.staticCompositionLocalOf +import androidx.compose.ui.graphics.Color + +@Immutable +data class NovaColors( + val background: Color, + val surface: Color, + val surfaceSecondary: Color, + val foreground: Color, + val muted: Color, + val faint: Color, + val border: Color, + val strongBorder: Color, + val accent: Color, + val onAccent: Color, + val success: Color, + val warning: Color, + val danger: Color, +) + +val LightNovaColors = NovaColors( + background = Color(0xFFFAFAFB), + surface = Color(0xFFFFFFFF), + surfaceSecondary = Color(0xFFF2F3F5), + foreground = Color(0xFF1C1E23), + muted = Color(0xFF71757E), + faint = Color(0xFFA6A9B0), + border = Color(0xFFE6E7EA), + strongBorder = Color(0xFFD9DBDF), + accent = Color(0xFF26282E), + onAccent = Color(0xFFFCFCFC), + success = Color(0xFF2E9E63), + warning = Color(0xFFD69A28), + danger = Color(0xFFD24B3E), +) + +val DarkNovaColors = NovaColors( + background = Color(0xFF17181C), + surface = Color(0xFF1F2126), + surfaceSecondary = Color(0xFF282A30), + foreground = Color(0xFFF1F1F3), + muted = Color(0xFF9EA1A9), + faint = Color(0xFF6E717A), + border = Color(0xFF33353B), + strongBorder = Color(0xFF3F424A), + accent = Color(0xFFF4F4F6), + onAccent = Color(0xFF1B1D22), + success = Color(0xFF2E9E63), + warning = Color(0xFFD69A28), + danger = Color(0xFFD24B3E), +) + +val LocalNovaColors = staticCompositionLocalOf { LightNovaColors } + +@Composable +fun DaoTheme( + darkTheme: Boolean = false, + content: @Composable () -> Unit, +) { + val novaColors = if (darkTheme) DarkNovaColors else LightNovaColors + val materialColors = if (darkTheme) { + darkColorScheme( + primary = novaColors.accent, + onPrimary = novaColors.onAccent, + background = novaColors.background, + onBackground = novaColors.foreground, + surface = novaColors.surface, + onSurface = novaColors.foreground, + surfaceVariant = novaColors.surfaceSecondary, + outline = novaColors.border, + error = novaColors.danger, + ) + } else { + lightColorScheme( + primary = novaColors.accent, + onPrimary = novaColors.onAccent, + background = novaColors.background, + onBackground = novaColors.foreground, + surface = novaColors.surface, + onSurface = novaColors.foreground, + surfaceVariant = novaColors.surfaceSecondary, + outline = novaColors.border, + error = novaColors.danger, + ) + } + + androidx.compose.runtime.CompositionLocalProvider(LocalNovaColors provides novaColors) { + MaterialTheme( + colorScheme = materialColors, + typography = MaterialTheme.typography, + content = content, + ) + } +} diff --git a/android/app/src/main/res/drawable-nodpi/dao_brand_logo.png b/android/app/src/main/res/drawable-nodpi/dao_brand_logo.png new file mode 100644 index 00000000..70db6a7a Binary files /dev/null and b/android/app/src/main/res/drawable-nodpi/dao_brand_logo.png differ diff --git a/android/app/src/main/res/drawable/ic_launcher_foreground.xml b/android/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..1edffe0f --- /dev/null +++ b/android/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,12 @@ + + + + + + diff --git a/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..9e7106e7 --- /dev/null +++ b/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 00000000..d1006506 Binary files /dev/null and b/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png new file mode 100644 index 00000000..34f1fcef Binary files /dev/null and b/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 00000000..d7815028 Binary files /dev/null and b/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 00000000..44b6be46 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png new file mode 100644 index 00000000..d8c524c4 Binary files /dev/null and b/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ diff --git a/android/app/src/main/res/values-zh-rCN/strings.xml b/android/app/src/main/res/values-zh-rCN/strings.xml new file mode 100644 index 00000000..cf1ca9cb --- /dev/null +++ b/android/app/src/main/res/values-zh-rCN/strings.xml @@ -0,0 +1,263 @@ + + + Dao + Dao 标志 + EEE · M 月 d 日 + 早上好 + 下午好 + 晚上好 + 今天想去哪里? + 搜索或输入网址 + 扫描二维码 + 退出搜索 + 清除输入 + 近期访问 + 建议 + 搜索 “%1$s” + 没有匹配的书签或历史 + 书签与历史 + 将二维码放入框内即可自动识别 + 需要相机权限才能扫描二维码 + 允许使用相机 + 无法启动相机,请稍后重试 + 关闭扫码 + 还没有访问记录 + 安全连接 + 连接信息 + 网站信息 + 关闭网站信息 + 连接安全 + 连接不安全 + 此页面没有连接信息 + 证书信息 + 证书主体 + 颁发者 + 生效时间 + 到期时间 + 序列号 + SHA-256 指纹 + 菜单 + 标签页 + 标签页 · %1$d + 新建标签页 + 关闭标签页 + 后退 + 前进 + 刷新 + 分享 + 加书签 + 移除书签 + 书签选项 + 移到阅读列表 + 移到收藏夹 + 编辑书签 + 删除 + 保存 + 移出文件夹 + 移到“%1$s” + 书签名称 + 查找 + 在页面中查找 + %1$d / %2$d + 关闭页内查找 + 上一个匹配项 + 下一个匹配项 + 首页 + 历史记录 + 书签 + 下载 + 扩展 + 设置 + 关于 + Dao Browser + 关于 Dao 浏览器 + 应用版本 + 浏览器引擎 + Gecko %1$s + 开源许可证 + 内置扩展许可证 + 许可证不可用 + 未知 + uBlock Origin + KISS Translator + GNU 通用公共许可证 v3.0 + GNU 通用公共许可证 v3.0-only + 返回 + 新建文件夹 + 编辑 + 完成 + 清除 + 扩展商店 + 深色模式 + 跟随浏览环境切换 + 字号 + + + + 网页文字预览 + 网页中的文字会按这个大小显示。 + 外观 + 搜索与隐私 + 默认搜索引擎 + Google + 百度 + Bing + DuckDuckGo + 阻止跨站跟踪 + 使用 Gecko 推荐的跟踪保护规则 + 默认无痕浏览 + 下次启动时应用到浏览会话 + 开发者工具 + USB 远程调试 + 允许桌面 Firefox 检查当前网页 + 已开启 · 等待已授权的 ADB 设备 + 连接指南 + 开启 USB 远程调试? + 连接的调试器可以读取网页内容和网络请求,并执行 JavaScript。请只授权你信任的电脑。 + 仍然开启 + 连接 Firefox 调试器 + 1. 打开 Android 开发者选项和 USB 调试 + 2. 连接电脑并授权 ADB 调试 + 3. 在桌面 Firefox 中打开 about:debugging + 请在电脑上的 Firefox 中打开该地址,选择 Android 设备,然后检查 Dao 标签页。 + 打开开发者选项 + 复制 about:debugging + Firefox 远程调试 + 已复制,请在电脑上的 Firefox 中打开 + 陈默 + 已同步 · 3 台设备 + 搜索历史记录 + 今天 + 昨天 · 5 月 21 日 + 昨天 + M 月 d 日 + 5 月 20 日 + 收藏夹 + 阅读列表 + 未分类 + 文件夹名称 + 创建 + 取消 + %1$d 个书签 + 还没有书签 + 还没有历史记录 + 开发资源 + 设计灵感 + 12 个书签 + 8 个书签 + 进行中 + 已完成 + 还没有下载记录 + 重试 + 取消下载 + 等待下载 + 下载中 + 等待网络 + 下载完成 + 下载失败 + 文件 + 更早 + 暂停 + 继续 + 打开 + 已安装 · %1$d + 还没有已安装的扩展 + 版本 %1$s + 版本 %1$s · %2$s + 为你推荐 + 获取 + 已开启 + 已关闭 + + GitHub · moonrailgun + github.com + Arc 浏览器官网 + arc.net + Vercel 控制台 + vercel.com/dashboard + Linear · 我的问题 + linear.app + Figma 社区 + figma.com/community + MDN Web 文档 + developer.mozilla.org + css 渐变生成器 + css grid 布局教程 + figma 快捷键 + 搜索建议 + + Web Animations API - MDN + view-transitions 示例仓库 + scroll driven animation 兼容性 + CSS 容器查询完整指南 + r/webdev — 本周你在用什么工具 + View Transitions API - MDN + MDN Web 文档 + GitHub · 探索 + Vercel — 部署平台 + Product Hunt 今日热榜 + design-system-v3.zip + 86.4 MB / 128 MB · 剩余约 40 秒 + 2025-前端趋势报告.pdf + browser-mockup.fig + 4.2 MB · 14:20 + 18.9 MB · 11:05 + wallpaper-mono.png + Nova-Browser-1.4.dmg + 2.1 MB · 昨天 + 96 MB · 5 月 20 日 + 广告拦截 Pro + 本页拦截 14 项 + 密码管家 + 已同步 · 137 条凭证 + 稍后阅读 + 收藏 23 篇文章 + 深色阅读模式 + 自动应用到所有网站 + 截图标注 + 全页翻译 + ★ 4.8 · 免费 + ★ 4.6 · 免费 + 安装 XPI + 安装 + 卸载 + 卸载扩展? + 将从 Dao 中移除“%1$s”。 + 安装这个扩展? + %1$s · 版本 %2$s + 请检查扩展请求的能力。获得授权后,它可能读取或更改相应的浏览数据。 + 浏览器权限 + 网站访问范围 + 数据收集权限 + 正在读取扩展包… + 正在安装扩展… + 已安装 %1$s + 已有一个扩展正在等待处理 + 请选择扩展名为 .xpi 的文件 + 扩展包是空文件 + 扩展包超过 100 MiB + 无法读取所选扩展包 + 扩展必须经过 Mozilla 签名 + 扩展包已损坏或格式无效 + 扩展与当前 Gecko 版本不兼容 + Mozilla 已阻止此扩展 + 此扩展存在已知风险,无法安装 + Gecko 无法读取扩展包 + 不支持此类型的扩展 + 已取消安装 + 扩展安装失败 + 扩展商店 + 搜索扩展 + 搜索 + 推荐扩展 + 作者:%1$s + 版本 %1$s + 评分 %1$s + 安装 + 安装中 + 已安装 + 未找到扩展 + 无法加载扩展 + 重试 + 加载更多 + diff --git a/android/app/src/main/res/values/colors.xml b/android/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..476b63fd --- /dev/null +++ b/android/app/src/main/res/values/colors.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + diff --git a/android/app/src/main/res/values/ids.xml b/android/app/src/main/res/values/ids.xml new file mode 100644 index 00000000..5247cb9b --- /dev/null +++ b/android/app/src/main/res/values/ids.xml @@ -0,0 +1,4 @@ + + + + diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..0ca9b438 --- /dev/null +++ b/android/app/src/main/res/values/strings.xml @@ -0,0 +1,263 @@ + + + Dao + Dao logo + EEE · MMM d + Good morning + Good afternoon + Good evening + Where would you like to go? + Search or enter address + Scan QR code + Exit search + Clear input + Recent visits + Suggestions + Search “%1$s” + No matching bookmarks or history + Bookmarks and history + Place a QR code inside the frame to scan it + Camera permission is required to scan QR codes + Allow camera + Unable to start the camera. Try again later. + Close scanner + No recent visits + Secure connection + Connection information + Site information + Close site information + Connection is secure + Connection is not secure + No connection information is available for this page + Certificate information + Subject + Issuer + Valid from + Valid until + Serial number + SHA-256 fingerprint + Menu + Tabs + Tabs · %1$d + New tab + Close tab + Back + Forward + Reload + Share + Add bookmark + Remove bookmark + Bookmark options + Move to reading list + Move to favorites + Edit bookmark + Delete + Save + Remove from folder + Move to “%1$s” + Bookmark name + Find in page + Find in page + %1$d / %2$d + Close find in page + Previous match + Next match + Home + History + Bookmarks + Downloads + Extensions + Settings + About + Dao Browser + About Dao Browser + App version + Browser engine + Gecko %1$s + Open source licenses + Bundled extension licenses + License unavailable + Unknown + uBlock Origin + KISS Translator + GNU General Public License v3.0 + GNU General Public License v3.0 only + Navigate back + New folder + Edit + Done + Clear + Extension store + Dark mode + Follow the browsing environment + Font size + Small + Medium + Large + Web text preview + Page text will appear at this size. + Appearance + Search and privacy + Default search engine + Google + Baidu + Bing + DuckDuckGo + Block cross-site tracking + Use Gecko recommended tracking protection + Private browsing by default + Apply to browsing sessions on next launch + Developer tools + USB remote debugging + Allow desktop Firefox to inspect the current page + Enabled · Waiting for an authorized ADB device + Connection guide + Enable USB remote debugging? + A connected debugger can read page content and network requests, and execute JavaScript. Only authorize computers you trust. + Enable anyway + Connect the Firefox debugger + 1. Enable Android developer options and USB debugging + 2. Connect your computer and authorize ADB debugging + 3. Open about:debugging in desktop Firefox + Open this address in Firefox on your computer, select the Android device, then inspect a Dao tab. + Open developer options + Copy about:debugging + Firefox remote debugging + Copied. Open it in Firefox on your computer. + Alex Chen + Synced · 3 devices + Search history + Today + Yesterday · May 21 + Yesterday + MMM d + May 20 + Favorites + Reading list + Uncategorized + Folder name + Create + Cancel + %1$d bookmarks + No bookmarks yet + No history yet + Development resources + Design inspiration + 12 bookmarks + 8 bookmarks + In progress + Completed + No downloads yet + Retry + Cancel download + Pending + Downloading + Waiting for network + Download complete + Download failed + File + Earlier + Pause + Resume + Open + Installed · %1$d + No extensions installed + Version %1$s + Version %1$s · %2$s + Recommended for you + Get + Enabled + Disabled + + GitHub · moonrailgun + github.com + Arc Browser + arc.net + Vercel dashboard + vercel.com/dashboard + Linear · My issues + linear.app + Figma Community + figma.com/community + MDN Web Docs + developer.mozilla.org + CSS gradient generator + CSS Grid layout tutorial + Figma keyboard shortcuts + Search suggestion + + Web Animations API - MDN + View Transitions example repository + Scroll-driven animation compatibility + Complete guide to CSS container queries + r/webdev — What tools are you using this week? + View Transitions API - MDN + MDN Web Docs + GitHub · Explore + Vercel — Deployment platform + Product Hunt today + design-system-v3.zip + 86.4 MB / 128 MB · About 40 seconds remaining + 2025-frontend-trends-report.pdf + browser-mockup.fig + 4.2 MB · 14:20 + 18.9 MB · 11:05 + wallpaper-mono.png + Nova-Browser-1.4.dmg + 2.1 MB · Yesterday + 96 MB · May 20 + Ad Blocker Pro + 14 items blocked on this page + Password manager + Synced · 137 credentials + Read later + 23 saved articles + Dark reading mode + Automatically applied to all websites + Screenshot annotation + Full-page translation + ★ 4.8 · Free + ★ 4.6 · Free + Install XPI + Install + Uninstall + Uninstall extension? + Remove “%1$s” from Dao. + Install this extension? + %1$s · Version %2$s + Review the capabilities requested by this extension. Once allowed, it may read or modify the corresponding browsing data. + Browser permissions + Site access + Data collection permissions + Reading extension package… + Installing extension… + Installed %1$s + Another extension is already awaiting action + Select a file with the .xpi extension + The extension package is empty + The extension package exceeds 100 MiB + Unable to read the selected extension package + The extension must be signed by Mozilla + The extension package is corrupt or invalid + The extension is incompatible with this Gecko version + Mozilla has blocked this extension + This extension has known risks and cannot be installed + Gecko could not read the extension package + This extension type is not supported + Installation cancelled + Extension installation failed + Extension Store + Search extensions + Search + Recommended extensions + By %1$s + Version %1$s + Rating %1$s + Install + Installing + Installed + No extensions found + Couldn\'t load extensions + Retry + Load more + diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..30411fe4 --- /dev/null +++ b/android/app/src/main/res/values/styles.xml @@ -0,0 +1,9 @@ + + + + diff --git a/android/app/src/test/java/com/msgbyte/dao/about/AboutAppInfoTest.kt b/android/app/src/test/java/com/msgbyte/dao/about/AboutAppInfoTest.kt new file mode 100644 index 00000000..52e26909 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/about/AboutAppInfoTest.kt @@ -0,0 +1,36 @@ +package com.msgbyte.dao.about + +import android.content.Context +import androidx.test.core.app.ApplicationProvider +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [35]) +class AboutAppInfoTest { + private val context = ApplicationProvider.getApplicationContext() + + @Test + fun readsBuildOwnedVersions() { + val info = readAboutAppInfo(context) + + assertTrue(info.appVersion.isNotBlank()) + assertEquals("153.0.2", info.engineVersion) + } + + @Test + fun readsEveryBundledLicenseOffline() { + BundledLicense.entries.forEach { license -> + assertTrue(readBundledLicenseText(context, license).getOrThrow().isNotBlank()) + } + } + + @Test + fun missingLicenseIsReportedAsFailure() { + assertTrue(readAssetText(context, "notices/missing.txt").isFailure) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/AmoCatalogRepositoryTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/AmoCatalogRepositoryTest.kt new file mode 100644 index 00000000..ef115014 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/AmoCatalogRepositoryTest.kt @@ -0,0 +1,167 @@ +package com.msgbyte.dao.browser + +import java.net.URL +import kotlinx.coroutines.runBlocking +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Assert.assertTrue +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [35]) +class AmoCatalogRepositoryTest { + @Test + fun searchesOnlyCompatibleAndroidExtensions() = runBlocking { + var requested: URL? = null + val repository = AmoCatalogRepository { url -> + requested = url + SEARCH_RESPONSE + } + + val page = repository.search("dark reader", 2, "zh-CN", 153) + + val requestedUrl = requireNotNull(requested) + assertEquals("https", requestedUrl.protocol) + assertTrue(requestedUrl.query.contains("app=android")) + assertTrue(requestedUrl.query.contains("appversion=153.0")) + assertTrue(requestedUrl.query.contains("q=dark+reader")) + assertTrue(requestedUrl.query.contains("page=2")) + assertTrue(requestedUrl.query.contains("lang=zh-CN")) + assertTrue(requestedUrl.query.contains("type=extension")) + assertTrue(!requestedUrl.query.contains("sort=recommended")) + assertEquals("addon@example", page.items.single().guid) + } + + @Test + fun usesRecommendedSortOnlyForBlankQueries() = runBlocking { + var requested: URL? = null + val repository = AmoCatalogRepository { url -> + requested = url + EMPTY_RESPONSE + } + + repository.search(" ", 1, "en-US", 153) + + val requestedUrl = requireNotNull(requested) + assertTrue(requestedUrl.query.contains("sort=recommended")) + assertTrue(!requestedUrl.query.contains("q=")) + } + + @Test + fun parsesLocalizedPublicHttpsAddonsAndOmitsInvalidEntries() = runBlocking { + val repository = AmoCatalogRepository { PARSING_RESPONSE } + + val page = repository.search("", 1, "zh-CN", 153) + + val addon = page.items.single() + assertEquals("addon@example", addon.guid) + assertEquals("深色阅读器", addon.name) + assertEquals("English summary", addon.summary) + assertEquals("Ada", addon.author) + assertEquals(4.5, addon.rating) + assertEquals("1.2.3", addon.version) + assertEquals("https://addons.mozilla.org/en-US/android/addon/dark-reader/", addon.detailUrl) + assertEquals("https://addons.mozilla.org/firefox/downloads/file/1/dark-reader.xpi", addon.installUrl) + assertEquals(3, page.nextPage) + } + + @Test + fun ignoresNonPositiveNextPages() = runBlocking { + val repository = AmoCatalogRepository { """{"results": [], "next": "https://addons.mozilla.org/api/v5/addons/search/?page=0"}""" } + + assertNull(repository.search("", 1, "en-US", 153).nextPage) + } + + @Test + fun omitsHttpsDownloadsThatAreNotXpiPackages() = runBlocking { + val repository = AmoCatalogRepository { NON_XPI_RESPONSE } + + assertTrue(repository.search("", 1, "en-US", 153).items.isEmpty()) + } + + private companion object { + val EMPTY_RESPONSE = """{"results": [], "next": null}""" + + val NON_XPI_RESPONSE = """ + { + "results": [ + { + "id": 47, + "guid": "not-an-xpi@example", + "current_version": { + "version": "1.2.3", + "file": { "status": "public", "url": "https://example.invalid/download/not-an-xpi.html" } + } + } + ], + "next": null + } + """.trimIndent() + + val SEARCH_RESPONSE = """ + { + "results": [ + { + "id": 42, + "guid": "addon@example", + "slug": "dark-reader", + "name": { "en-US": "Dark Reader" }, + "summary": { "en-US": "Dark mode" }, + "authors": [{ "name": "Ada" }], + "ratings": { "average": 4.5 }, + "current_version": { + "version": "1.2.3", + "file": { "status": "public", "url": "https://addons.mozilla.org/firefox/downloads/file/1/dark-reader.xpi" } + }, + "url": "https://addons.mozilla.org/en-US/android/addon/dark-reader/" + } + ], + "next": null + } + """.trimIndent() + + val PARSING_RESPONSE = """ + { + "results": [ + { + "id": 42, + "guid": "addon@example", + "slug": "dark-reader", + "name": { "zh-CN": "深色阅读器", "en-US": "Dark Reader" }, + "summary": { "fr": "", "en-US": "English summary" }, + "authors": [{ "name": "Ada" }], + "ratings": { "average": 4.5 }, + "current_version": { + "version": "1.2.3", + "file": { "status": "public", "url": "https://addons.mozilla.org/firefox/downloads/file/1/dark-reader.xpi" } + }, + "url": "https://addons.mozilla.org/en-US/android/addon/dark-reader/" + }, + { + "id": 43, + "guid": "", + "current_version": { "version": "1", "file": { "status": "public", "url": "https://addons.mozilla.org/a.xpi" } } + }, + { + "id": 44, + "guid": "missing-version@example" + }, + { + "id": 45, + "guid": "not-public@example", + "current_version": { "version": "1", "file": { "status": "disabled", "url": "https://addons.mozilla.org/a.xpi" } } + }, + { + "id": 46, + "guid": "http@example", + "current_version": { "version": "1", "file": { "status": "public", "url": "http://addons.mozilla.org/a.xpi" } } + } + ], + "next": "https://addons.mozilla.org/api/v5/addons/search/?page=3" + } + """.trimIndent() + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/AmoStoreViewModelTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/AmoStoreViewModelTest.kt new file mode 100644 index 00000000..659243a9 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/AmoStoreViewModelTest.kt @@ -0,0 +1,221 @@ +package com.msgbyte.dao.browser + +import kotlinx.coroutines.CompletableDeferred +import kotlinx.coroutines.CancellationException +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.runCurrent +import kotlinx.coroutines.test.runTest +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Test + +@OptIn(ExperimentalCoroutinesApi::class) +class AmoStoreViewModelTest { + @Test + fun loadsRecommendedAddonsOnCreation() = runTest { + val source = FakeAmoSource().apply { + pages["" to 1] = page(addon("recommended@example")) + } + + val viewModel = AmoStoreViewModel(source, "en-US", 153, backgroundScope) + runCurrent() + + assertEquals(listOf("recommended@example"), viewModel.content().items.map(AmoAddon::guid)) + assertEquals(listOf("" to 1), source.calls) + } + + @Test + fun replacesSearchContentAndShowsEmptyResults() = runTest { + val source = FakeAmoSource().apply { + pages["" to 1] = page(addon("recommended@example")) + pages["nothing" to 1] = AmoCatalogPage(emptyList(), null) + } + val viewModel = AmoStoreViewModel(source, "en-US", 153, backgroundScope) + runCurrent() + + viewModel.search(" nothing ") + runCurrent() + + val empty = viewModel.state.value as AmoStoreState.Empty + assertEquals("nothing", empty.query) + } + + @Test + fun retriesTheFailedReplacementSearch() = runTest { + val source = FakeAmoSource().apply { + pages["" to 1] = AmoCatalogPage(emptyList(), null) + outcomes["broken" to 1] = ArrayDeque( + listOf( + Result.failure(IllegalStateException("offline")), + Result.success(page(addon("fixed@example"))), + ), + ) + } + val viewModel = AmoStoreViewModel(source, "en-US", 153, backgroundScope) + runCurrent() + + viewModel.search("broken") + runCurrent() + assertTrue(viewModel.state.value is AmoStoreState.Failed) + + viewModel.retry() + runCurrent() + + assertEquals(listOf("fixed@example"), viewModel.content().items.map(AmoAddon::guid)) + assertEquals(listOf("broken" to 1, "broken" to 1), source.calls.takeLast(2)) + } + + @Test + fun appendsNextPageWithoutDuplicateGuids() = runTest { + val source = ControllableAmoSource() + val viewModel = AmoStoreViewModel(source, "en-US", 153, backgroundScope) + source.complete("", 1, page(addon("one@example"), addon("two@example"), nextPage = 2)) + runCurrent() + + viewModel.loadNext() + assertTrue(viewModel.content().isLoadingNext) + source.complete("", 2, page(addon("two@example"), addon("three@example"))) + runCurrent() + + assertEquals( + listOf("one@example", "two@example", "three@example"), + viewModel.content().items.map(AmoAddon::guid), + ) + assertFalse(viewModel.content().isLoadingNext) + } + + @Test + fun ignoresAnOlderSearchResponse() = runTest { + val source = ControllableAmoSource() + val viewModel = AmoStoreViewModel(source, "en-US", 153, backgroundScope) + source.complete("", 1, AmoCatalogPage(emptyList(), null)) + runCurrent() + + viewModel.search("old") + viewModel.search("new") + source.complete("new", 1, page(addon("new@example"))) + source.complete("old", 1, page(addon("old@example"))) + runCurrent() + + assertEquals(listOf("new@example"), viewModel.content().items.map(AmoAddon::guid)) + } + + @Test + fun doesNotConvertCancellationIntoFailure() = runTest { + val source = object : AmoCatalogSource { + override suspend fun search( + query: String, + page: Int, + locale: String, + geckoMajor: Int, + ): AmoCatalogPage = throw CancellationException("cancelled") + } + + val viewModel = AmoStoreViewModel(source, "en-US", 153, backgroundScope) + runCurrent() + + assertTrue(viewModel.state.value is AmoStoreState.Loading) + } + + @Test + fun nextPageKeepsTheQueryFromTheDisplayedContent() = runTest { + val source = RecordingControllableAmoSource() + val viewModel = AmoStoreViewModel(source, "en-US", 153, backgroundScope) + source.complete("", 1, page(addon("one@example"), nextPage = 2)) + runCurrent() + + viewModel.loadNext() + viewModel.search("new") + runCurrent() + + assertTrue("" to 2 in source.calls) + assertFalse("new" to 2 in source.calls) + } + + @Test + fun reloadsTheCurrentQueryWhenLocaleChanges() = runTest { + val source = FakeAmoSource().apply { + pages["" to 1] = page(addon("localized@example")) + } + val viewModel = AmoStoreViewModel(source, "en-US", 153, backgroundScope) + runCurrent() + + viewModel.updateLocale("zh-CN") + runCurrent() + + assertEquals(listOf("en-US", "zh-CN"), source.locales) + } + + private fun AmoStoreViewModel.content(): AmoStoreState.Content = + state.value as AmoStoreState.Content + + private fun page(vararg items: AmoAddon, nextPage: Int? = null) = AmoCatalogPage(items.toList(), nextPage) + + private fun addon(guid: String) = AmoAddon( + id = guid.hashCode(), + guid = guid, + slug = guid.substringBefore('@'), + name = guid, + summary = "Summary", + author = "Author", + iconUrl = null, + rating = null, + version = "1.0", + detailUrl = "https://addons.mozilla.org/addon/${guid.substringBefore('@')}/", + installUrl = "https://addons.mozilla.org/download/$guid.xpi", + ) + + private class FakeAmoSource : AmoCatalogSource { + val pages = mutableMapOf, AmoCatalogPage>() + val outcomes = mutableMapOf, ArrayDeque>>() + val calls = mutableListOf>() + val locales = mutableListOf() + + override suspend fun search( + query: String, + page: Int, + locale: String, + geckoMajor: Int, + ): AmoCatalogPage { + calls += query to page + locales += locale + outcomes[query to page]?.removeFirstOrNull()?.getOrThrow()?.let { return it } + return pages[query to page] ?: AmoCatalogPage(emptyList(), null) + } + } + + private class RecordingControllableAmoSource : AmoCatalogSource { + private val pending = mutableMapOf, CompletableDeferred>() + val calls = mutableListOf>() + + override suspend fun search( + query: String, + page: Int, + locale: String, + geckoMajor: Int, + ): AmoCatalogPage { + calls += query to page + return pending.getOrPut(query to page) { CompletableDeferred() }.await() + } + + fun complete(query: String, page: Int, value: AmoCatalogPage) { + pending.getOrPut(query to page) { CompletableDeferred() }.complete(value) + } + } + + private class ControllableAmoSource : AmoCatalogSource { + private val pending = mutableMapOf, CompletableDeferred>() + + override suspend fun search( + query: String, + page: Int, + locale: String, + geckoMajor: Int, + ): AmoCatalogPage = pending.getOrPut(query to page) { CompletableDeferred() }.await() + + fun complete(query: String, page: Int, value: AmoCatalogPage) { + pending.getOrPut(query to page) { CompletableDeferred() }.complete(value) + } + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/AppConfigurationTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/AppConfigurationTest.kt new file mode 100644 index 00000000..f69f49a3 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/AppConfigurationTest.kt @@ -0,0 +1,11 @@ +package com.msgbyte.dao.browser + +import org.junit.Assert.assertEquals +import org.junit.Test + +class AppConfigurationTest { + @Test + fun initialUrlIsBlankBrowserPage() { + assertEquals("about:blank", AppConfiguration.INITIAL_URL) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/BrowserLibraryRepositoryTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/BrowserLibraryRepositoryTest.kt new file mode 100644 index 00000000..f01bb10b --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/BrowserLibraryRepositoryTest.kt @@ -0,0 +1,121 @@ +package com.msgbyte.dao.browser + +import android.content.Context +import androidx.test.core.app.ApplicationProvider +import java.util.UUID +import kotlinx.coroutines.runBlocking +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [35]) +class BrowserLibraryRepositoryTest { + private lateinit var context: Context + private lateinit var databaseName: String + private lateinit var repository: BrowserLibraryRepository + + @Before + fun setUp() { + context = ApplicationProvider.getApplicationContext() + databaseName = "browser-library-${UUID.randomUUID()}.db" + repository = BrowserLibraryRepository(context, databaseName) + } + + @After + fun tearDown() { + repository.close() + context.deleteDatabase(databaseName) + } + + @Test + fun completedVisitsArePersistedNewestFirst() = runBlocking { + repository.recordVisit("https://example.com/one", "One", 10) + repository.recordVisit("https://example.com/two", "Two", 20) + + assertEquals(listOf("Two", "One"), repository.history.value.map { it.title }) + } + + @Test + fun togglingTheSameUrlAddsThenRemovesItsBookmark() = runBlocking { + assertEquals( + BookmarkToggleResult.ADDED, + repository.toggleBookmark("https://example.com", "Example"), + ) + assertEquals( + BookmarkToggleResult.REMOVED, + repository.toggleBookmark("https://example.com", "Example"), + ) + + assertTrue(repository.bookmarks.value.isEmpty()) + } + + @Test + fun libraryDataSurvivesRepositoryRestart() = runBlocking { + repository.recordVisit("https://example.com", "Example", 10) + repository.addBookmark("https://example.com", "Example") + repository.close() + + repository = BrowserLibraryRepository(context, databaseName) + + assertEquals(listOf("https://example.com"), repository.history.value.map { it.url }) + assertEquals(listOf("https://example.com"), repository.bookmarks.value.map { it.url }) + } + + @Test + fun bookmarkCanMoveToFolderAndReadingList() = runBlocking { + val folder = repository.createFolder("Research") + val bookmark = repository.addBookmark("https://example.com", "Example") + + repository.updateBookmark( + id = bookmark.id, + title = "Updated", + folderId = folder.id, + kind = BookmarkKind.READING_LIST, + ) + + assertEquals(listOf("Research"), repository.folders.value.map { it.title }) + assertEquals("Updated", repository.bookmarks.value.single().title) + assertEquals(folder.id, repository.bookmarks.value.single().folderId) + assertEquals(BookmarkKind.READING_LIST, repository.bookmarks.value.single().kind) + } + + @Test + fun historyCanDeleteOneVisitAndThenClearEverything() = runBlocking { + repository.recordVisit("https://example.com/one", "One", 10) + repository.recordVisit("https://example.com/two", "Two", 20) + + repository.deleteHistoryVisit(repository.history.value.first().id) + assertEquals(listOf("One"), repository.history.value.map { it.title }) + + repository.clearHistory() + assertTrue(repository.history.value.isEmpty()) + } + + @Test + fun unsupportedSchemesAreNotStoredAsHistory() = runBlocking { + repository.recordVisit("about:blank", "Blank", 10) + repository.recordVisit("file:///tmp/example.html", "File", 20) + + assertTrue(repository.history.value.isEmpty()) + } + + @Test + fun bookmarkAndFolderDeletionRefreshesTheLibrary() = runBlocking { + val folder = repository.createFolder("Research") + val first = repository.addBookmark("https://one.example", "One", folder.id) + repository.addBookmark("https://two.example", "Two", folder.id) + + repository.deleteBookmark(first.id) + repository.deleteFolder(folder.id) + + assertEquals(listOf("Two"), repository.bookmarks.value.map { it.title }) + assertEquals(null, repository.bookmarks.value.single().folderId) + assertTrue(repository.folders.value.isEmpty()) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/BrowserPreferencesTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/BrowserPreferencesTest.kt new file mode 100644 index 00000000..37c92b7b --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/BrowserPreferencesTest.kt @@ -0,0 +1,87 @@ +package com.msgbyte.dao.browser + +import androidx.datastore.preferences.core.PreferenceDataStoreFactory +import java.io.File +import kotlinx.coroutines.flow.first +import kotlinx.coroutines.runBlocking +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Rule +import org.junit.Test +import org.junit.rules.TemporaryFolder + +class BrowserPreferencesTest { + @get:Rule + val temporaryFolder = TemporaryFolder() + + @Test + fun exposesRealDefaultsAndPersistsEverySetting() = runBlocking { + val preferences = BrowserPreferences( + PreferenceDataStoreFactory.create { + File(temporaryFolder.root, "browser.preferences_pb") + }, + ) + + val defaults = preferences.state.first() + assertFalse(defaults.darkTheme) + assertEquals(BrowserFontScale.MEDIUM, defaults.fontScale) + assertEquals(BrowserSearchEngine.GOOGLE, defaults.searchEngine) + assertTrue(defaults.trackingProtectionEnabled) + assertFalse(defaults.defaultPrivateBrowsing) + assertFalse(defaults.remoteDebuggingEnabled) + assertFalse(defaults.remoteDebuggingWarningAcknowledged) + + preferences.setDarkTheme(true) + preferences.setFontScale(BrowserFontScale.LARGE) + preferences.setSearchEngine(BrowserSearchEngine.DUCKDUCKGO) + preferences.setTrackingProtectionEnabled(false) + preferences.setDefaultPrivateBrowsing(true) + + assertEquals( + BrowserPreferenceState( + darkTheme = true, + fontScale = BrowserFontScale.LARGE, + searchEngine = BrowserSearchEngine.DUCKDUCKGO, + trackingProtectionEnabled = false, + defaultPrivateBrowsing = true, + remoteDebuggingEnabled = false, + remoteDebuggingWarningAcknowledged = false, + ), + preferences.state.first(), + ) + } + + @Test + fun firstRemoteDebuggingEnableAcknowledgesWarningWithoutForgettingItOnDisable() = runBlocking { + val preferences = BrowserPreferences( + PreferenceDataStoreFactory.create { + File(temporaryFolder.root, "remote-debugging.preferences_pb") + }, + ) + + preferences.enableRemoteDebuggingWithAcknowledgement() + + assertTrue(preferences.state.first().remoteDebuggingEnabled) + assertTrue(preferences.state.first().remoteDebuggingWarningAcknowledged) + + preferences.setRemoteDebuggingEnabled(false) + + assertFalse(preferences.state.first().remoteDebuggingEnabled) + assertTrue(preferences.state.first().remoteDebuggingWarningAcknowledged) + } + + @Test + fun searchEnginesBuildUsableSearchUrls() { + assertEquals("https://www.google.com/search?q=dao", BrowserSearchEngine.GOOGLE.searchUrl.format("dao")) + assertEquals("https://duckduckgo.com/?q=dao", BrowserSearchEngine.DUCKDUCKGO.searchUrl.format("dao")) + assertEquals( + "https://www.baidu.com/s?wd=dao", + BrowserSearchEngine.valueOf("BAIDU").searchUrl.format("dao"), + ) + assertEquals( + "https://www.bing.com/search?q=dao", + BrowserSearchEngine.valueOf("BING").searchUrl.format("dao"), + ) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/BrowserRuntimeTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/BrowserRuntimeTest.kt new file mode 100644 index 00000000..80b44f90 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/BrowserRuntimeTest.kt @@ -0,0 +1,106 @@ +package com.msgbyte.dao.browser + +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify +import mozilla.components.concept.engine.CancellableOperation +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.EngineSession +import mozilla.components.concept.engine.webextension.WebExtension +import org.junit.Assert.assertEquals +import org.junit.Assert.assertSame +import org.junit.Test + +class BrowserRuntimeTest { + @Test + fun appliesRemoteDebuggingBeforeEngineAndSessionCreation() { + val engine = mockk() + val operation = mockk() + val session = mockk(relaxed = true) + val calls = mutableListOf() + every { + engine.installBuiltInWebExtension(any(), any(), any(), any()) + } answers { + calls += "install" + operation + } + every { engine.listInstalledWebExtensions(any(), any()) } answers { + arg<(List) -> Unit>(0)(emptyList()) + } + every { engine.createSession(private = false, contextId = null) } answers { + calls += "session" + session + } + val runtime = BrowserRuntime( + createEngine = { + calls += "engine" + engine + }, + setRemoteDebugging = { enabled -> calls += "remote:$enabled" }, + onBuiltInAdBlockerError = {}, + ) + + runtime.setRemoteDebuggingEnabled(true) + BrowserSessionController(runtime.engine, "about:blank") + + assertEquals(listOf("remote:true", "engine", "install", "install", "session"), calls) + } + + @Test + fun installsAdBlockerOnceBeforeSessionCreation() { + val engine = mockk() + val operation = mockk() + val session = mockk(relaxed = true) + val calls = mutableListOf() + every { + engine.installBuiltInWebExtension(any(), any(), any(), any()) + } answers { + calls += "install" + operation + } + every { engine.listInstalledWebExtensions(any(), any()) } answers { + arg<(List) -> Unit>(0)(emptyList()) + } + every { engine.createSession(private = false, contextId = null) } answers { + calls += "session" + session + } + val runtime = BrowserRuntime( + createEngine = { engine }, + onBuiltInAdBlockerError = {}, + ) + + BrowserSessionController(runtime.engine, "about:blank") + assertSame(engine, runtime.engine) + + assertEquals(listOf("install", "install", "session"), calls) + verify(exactly = 2) { + engine.installBuiltInWebExtension(any(), any(), any(), any()) + } + } + + @Test + fun installationFailureDoesNotPreventEngineAccess() { + val engine = mockk() + val operation = mockk() + val expected = IllegalStateException("installation failed") + var actual: Throwable? = null + every { + engine.installBuiltInWebExtension(any(), any(), any(), any()) + } answers { + arg<(Throwable) -> Unit>(3)(expected) + operation + } + every { engine.listInstalledWebExtensions(any(), any()) } answers { + arg<(List) -> Unit>(0)(emptyList()) + } + val runtime = BrowserRuntime( + createEngine = { engine }, + onBuiltInAdBlockerError = { actual = it }, + onBuiltInTranslatorError = {}, + ) + + assertSame(engine, runtime.engine) + assertSame(expected, actual) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/BrowserSessionControllerTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/BrowserSessionControllerTest.kt new file mode 100644 index 00000000..6a6a4daa --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/BrowserSessionControllerTest.kt @@ -0,0 +1,176 @@ +package com.msgbyte.dao.browser + +import io.mockk.every +import io.mockk.mockk +import io.mockk.slot +import io.mockk.verify +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.EngineSession +import org.junit.Assert.assertSame +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Test + +class BrowserSessionControllerTest { + private val engine = mockk() + private val session = mockk(relaxed = true) + + @Test + fun createsOneRegularSessionAndLoadsInitialUrl() { + every { engine.createSession(private = false, contextId = null) } returns session + + val controller = BrowserSessionController(engine, "about:blank") + + assertSame(session, controller.session) + verify(exactly = 1) { engine.createSession(private = false, contextId = null) } + verify(exactly = 1) { session.loadUrl("about:blank") } + } + + @Test + fun createsAPrivateSessionWhenRequested() { + every { engine.createSession(private = true, contextId = null) } returns session + + BrowserSessionController( + engine = engine, + initialUrl = "about:blank", + privateBrowsing = true, + ) + + verify(exactly = 1) { engine.createSession(private = true, contextId = null) } + } + + @Test + fun navigateForwardsUrlToTheOwnedSession() { + every { engine.createSession(private = false, contextId = null) } returns session + val controller = BrowserSessionController(engine, "about:blank") + + controller.navigate("https://example.com") + + verify(exactly = 1) { session.loadUrl("https://example.com") } + } + + @Test + fun browserNavigationCommandsAreForwardedToTheOwnedSession() { + every { engine.createSession(private = false, contextId = null) } returns session + val controller = BrowserSessionController(engine, "about:blank") + + controller.goBack() + controller.goForward() + controller.reload() + + verify(exactly = 1) { session.goBack(userInteraction = true) } + verify(exactly = 1) { session.goForward(userInteraction = true) } + verify(exactly = 1) { session.reload() } + } + + @Test + fun closeClosesTheOwnedSession() { + every { engine.createSession(private = false, contextId = null) } returns session + val controller = BrowserSessionController(engine, "about:blank") + + controller.close() + + verify(exactly = 1) { session.close() } + } + + @Test + fun sessionCallbacksPublishRealBrowserState() { + every { engine.createSession(private = false, contextId = null) } returns session + val observerSlot = slot() + every { session.register(capture(observerSlot)) } returns Unit + val controller = BrowserSessionController(engine, "about:blank") + + observerSlot.captured.onLocationChange("https://example.com/final", false) + observerSlot.captured.onTitleChange("Example") + observerSlot.captured.onNavigationStateChange(true, false) + observerSlot.captured.onLoadingStateChange(true) + observerSlot.captured.onProgress(65) + observerSlot.captured.onSecurityChange(true) + + assertEquals("https://example.com/final", controller.state.value.url) + assertEquals("Example", controller.state.value.title) + assertTrue(controller.state.value.canGoBack) + assertFalse(controller.state.value.canGoForward) + assertTrue(controller.state.value.isLoading) + assertEquals(65, controller.state.value.progress) + assertTrue(controller.state.value.isSecure) + } + + @Test + fun completedRegularLoadRecordsObservedUrlAndTitle() { + every { engine.createSession(private = false, contextId = null) } returns session + val observerSlot = slot() + every { session.register(capture(observerSlot)) } returns Unit + val visits = mutableListOf>() + BrowserSessionController( + engine = engine, + initialUrl = "about:blank", + onVisitCompleted = { url, title -> visits += url to title }, + ) + + observerSlot.captured.onLoadingStateChange(true) + observerSlot.captured.onLocationChange("https://example.com/final", false) + observerSlot.captured.onTitleChange("Example") + observerSlot.captured.onLoadingStateChange(false) + + assertEquals(listOf("https://example.com/final" to "Example"), visits) + } + + @Test + fun findCommandsAndResultsUseTheOwnedSession() { + every { engine.createSession(private = false, contextId = null) } returns session + val observerSlot = slot() + every { session.register(capture(observerSlot)) } returns Unit + val controller = BrowserSessionController(engine, "about:blank") + + controller.findAll("dao") + controller.findNext(forward = false) + observerSlot.captured.onFindResult(2, 5, true) + assertEquals(FindResultState(2, 5, true), controller.state.value.findResult) + controller.clearFindMatches() + + verify(exactly = 1) { session.findAll("dao") } + verify(exactly = 1) { session.findNext(false) } + verify(exactly = 1) { session.clearFindMatches() } + assertEquals(null, controller.state.value.findResult) + } + + @Test + fun externalResourceCallbackForwardsCompleteDownloadMetadata() { + every { engine.createSession(private = false, contextId = null) } returns session + val observerSlot = slot() + every { session.register(capture(observerSlot)) } returns Unit + val requests = mutableListOf() + BrowserSessionController( + engine = engine, + initialUrl = "about:blank", + onDownloadRequested = requests::add, + ) + + observerSlot.captured.onExternalResource( + url = "https://example.com/archive.zip", + fileName = "archive.zip", + contentLength = 1_000, + contentType = "application/zip", + cookie = "session=dao", + userAgent = "Dao/1", + isPrivate = false, + skipConfirmation = false, + openInApp = false, + response = null, + ) + + assertEquals( + DownloadRequestData( + url = "https://example.com/archive.zip", + fileName = "archive.zip", + contentLength = 1_000, + contentType = "application/zip", + cookie = "session=dao", + userAgent = "Dao/1", + ), + requests.single(), + ) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/BrowserTabsControllerTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/BrowserTabsControllerTest.kt new file mode 100644 index 00000000..9b2e7fc4 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/BrowserTabsControllerTest.kt @@ -0,0 +1,412 @@ +package com.msgbyte.dao.browser + +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertNotEquals +import org.junit.Assert.assertTrue +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import mozilla.components.browser.session.storage.RecoverableBrowserState +import mozilla.components.browser.state.engine.EngineMiddleware +import mozilla.components.browser.state.action.ContentAction +import mozilla.components.browser.state.action.TabListAction +import mozilla.components.browser.state.state.ContentState +import mozilla.components.browser.state.state.EngineState +import mozilla.components.browser.state.state.TabSessionState +import mozilla.components.browser.state.state.recover.RecoverableTab +import mozilla.components.browser.state.state.recover.TabState +import mozilla.components.browser.state.store.BrowserStore +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.EngineSession +import mozilla.components.concept.engine.EngineSessionState + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [35]) +class BrowserTabsControllerTest { + @Test + fun `createTab adds and selects a BrowserStore tab`() { + val controller = createController() + + val id = controller.createTab(private = false) + + assertEquals(listOf(id), controller.state.value.tabs.map { it.id }) + assertEquals(id, controller.state.value.selectedTabId) + assertFalse(controller.state.value.tabs.single().content.private) + } + + @Test + fun `createTab inherits privacy from the selected tab`() { + val controller = createController() + controller.createTab(private = true) + + controller.createTab() + + assertEquals(2, controller.state.value.tabs.size) + assertTrue(controller.state.value.tabs.all { it.content.private }) + } + + @Test + fun `selectTab changes the selected BrowserStore tab`() { + val controller = createController() + val firstId = controller.createTab(private = false) + controller.createTab(private = false) + + controller.selectTab(firstId) + + assertEquals(firstId, controller.state.value.selectedTabId) + } + + @Test + fun `closeTab removes only the requested background tab`() { + val controller = createController() + val firstId = controller.createTab(private = false) + val secondId = controller.createTab(private = false) + + controller.closeTab(firstId) + + assertEquals(listOf(secondId), controller.state.value.tabs.map { it.id }) + assertEquals(secondId, controller.state.value.selectedTabId) + } + + @Test + fun `closeTab replaces the final tab using its privacy mode`() { + val controller = createController(defaultPrivateBrowsing = false) + val originalId = controller.createTab(private = true) + + controller.closeTab(originalId) + + val replacement = controller.state.value.tabs.single() + assertNotEquals(originalId, replacement.id) + assertEquals(replacement.id, controller.state.value.selectedTabId) + assertTrue(replacement.content.private) + } + + @Test + fun `initialize restores regular tabs in order and selects the saved tab`() = runBlocking { + val storage = FakeBrowserSessionSnapshotStorage( + snapshot = RecoverableBrowserState( + tabs = listOf( + recoverableTab("first", "https://one.example"), + recoverableTab("second", "https://two.example"), + ), + selectedTabId = "second", + tabPartitions = emptyMap(), + ), + ) + val controller = createController(snapshotStorage = storage) + + controller.initialize() + + assertEquals(listOf("first", "second"), controller.state.value.tabs.map { it.id }) + assertEquals("second", controller.state.value.selectedTabId) + assertEquals( + listOf("https://one.example", "https://two.example"), + controller.state.value.tabs.map { it.content.url }, + ) + assertFalse(storage.wasCleared) + } + + @Test + fun `initialize creates a regular tab when no snapshot exists`() = runBlocking { + val controller = createController( + snapshotStorage = FakeBrowserSessionSnapshotStorage(snapshot = null), + ) + + controller.initialize() + + assertEquals(1, controller.state.value.tabs.size) + assertFalse(controller.state.value.tabs.single().content.private) + } + + @Test + fun `initialize creates a regular tab when the restored snapshot has no tabs`() = runBlocking { + val controller = createController( + snapshotStorage = FakeBrowserSessionSnapshotStorage( + snapshot = RecoverableBrowserState( + tabs = emptyList(), + selectedTabId = null, + tabPartitions = emptyMap(), + ), + ), + ) + + controller.initialize() + + assertEquals(1, controller.state.value.tabs.size) + assertFalse(controller.state.value.tabs.single().content.private) + } + + @Test + fun `initialize preserves one regular tab when empty snapshot cleanup fails`() = runBlocking { + val cleanupFailure = IllegalStateException("snapshot cleanup failed") + val reportedFailures = mutableListOf() + val controller = createController( + snapshotStorage = FakeBrowserSessionSnapshotStorage( + snapshot = RecoverableBrowserState( + tabs = emptyList(), + selectedTabId = null, + tabPartitions = emptyMap(), + ), + clearFailure = cleanupFailure, + ), + onSnapshotClearFailure = { reportedFailures += it }, + ) + + controller.initialize() + + assertEquals(1, controller.state.value.tabs.size) + assertFalse(controller.state.value.tabs.single().content.private) + assertEquals(listOf(cleanupFailure), reportedFailures) + } + + @Test + fun `initialize clears saved state and creates a private tab in default private mode`() = + runBlocking { + val storage = FakeBrowserSessionSnapshotStorage( + snapshot = RecoverableBrowserState( + tabs = listOf(recoverableTab("regular", "https://example.com")), + selectedTabId = "regular", + tabPartitions = emptyMap(), + ), + ) + val controller = createController( + defaultPrivateBrowsing = true, + snapshotStorage = storage, + ) + + controller.initialize() + + assertTrue(storage.wasCleared) + assertEquals(1, controller.state.value.tabs.size) + assertTrue(controller.state.value.tabs.single().content.private) + } + + @Test + fun `navigate loads the target in the selected BrowserStore tab session`() { + val engine = mockk(relaxed = true) + val session = mockk(relaxed = true) + every { engine.createSession(any(), any()) } returns session + val store = BrowserStore( + middleware = EngineMiddleware.create( + engine = engine, + scope = CoroutineScope(Dispatchers.Unconfined), + ), + ) + val controller = BrowserTabsController( + store = store, + defaultPrivateBrowsing = false, + ) + controller.createTab(private = false) + + controller.navigate("https://selected.example") + + assertEquals("https://selected.example", controller.selectedTab()?.content?.url) + verify { + session.loadUrl( + url = "https://selected.example", + parent = any(), + flags = any(), + additionalHeaders = any(), + originalInput = any(), + textDirectiveUserActivation = any(), + ) + } + } + + @Test + fun `ensureSession creates the selected restored engine session`() { + val engine = mockk(relaxed = true) + val session = mockk(relaxed = true) + val savedState = mockk() + every { engine.createSession(any(), any()) } returns session + every { session.restoreState(savedState) } returns true + val store = BrowserStore( + middleware = EngineMiddleware.create( + engine = engine, + scope = CoroutineScope(Dispatchers.Unconfined), + ), + ) + val controller = BrowserTabsController(store, defaultPrivateBrowsing = false) + val tabId = "restored" + store.dispatch( + TabListAction.AddTabAction( + TabSessionState( + id = tabId, + content = ContentState(url = "https://restored.example"), + engineState = EngineState(engineSessionState = savedState), + restored = true, + ), + select = true, + ), + ) + + controller.ensureSession(tabId) + + assertEquals(session, controller.selectedSession()) + verify(exactly = 1) { engine.createSession(false, null) } + verify(exactly = 1) { session.restoreState(savedState) } + } + + @Test + fun `goBack targets only the selected BrowserStore tab session`() { + val engine = mockk(relaxed = true) + val firstSession = mockk(relaxed = true) + val secondSession = mockk(relaxed = true) + every { engine.createSession(any(), any()) } returnsMany listOf(firstSession, secondSession) + val store = BrowserStore( + middleware = EngineMiddleware.create( + engine = engine, + scope = CoroutineScope(Dispatchers.Unconfined), + ), + ) + val controller = BrowserTabsController(store, defaultPrivateBrowsing = false) + val firstId = controller.createTab(private = false) + controller.navigate("https://one.example") + controller.createTab(private = false) + controller.navigate("https://two.example") + controller.selectTab(firstId) + + controller.goBack() + + verify(exactly = 1) { firstSession.goBack(userInteraction = true) } + verify(exactly = 0) { secondSession.goBack(any()) } + } + + @Test + fun `goHome loads home in the selected tab without creating a tab`() { + val engine = mockk(relaxed = true) + val firstSession = mockk(relaxed = true) + val selectedSession = mockk(relaxed = true) + every { engine.createSession(any(), any()) } returnsMany listOf(firstSession, selectedSession) + val store = BrowserStore( + middleware = EngineMiddleware.create( + engine = engine, + scope = CoroutineScope(Dispatchers.Unconfined), + ), + ) + val controller = BrowserTabsController(store, defaultPrivateBrowsing = false) + controller.createTab(private = false) + val selectedId = controller.createTab(private = false) + controller.navigate("https://selected.example") + + controller.goHome() + + assertEquals(2, controller.state.value.tabs.size) + assertEquals(selectedId, controller.state.value.selectedTabId) + assertEquals(AppConfiguration.INITIAL_URL, controller.selectedTab()?.content?.url) + } + + @Test + fun `flushRegularSessionStates requests fresh Gecko state for regular tabs only`() { + val regularSession = mockk(relaxed = true) + val privateSession = mockk(relaxed = true) + val store = BrowserStore() + val controller = BrowserTabsController(store, defaultPrivateBrowsing = false) + store.dispatch( + TabListAction.AddTabAction( + TabSessionState( + content = ContentState(url = "https://regular.example"), + engineState = EngineState(engineSession = regularSession), + ), + select = true, + ), + ) + store.dispatch( + TabListAction.AddTabAction( + TabSessionState( + content = ContentState(url = "https://private.example", private = true), + engineState = EngineState(engineSession = privateSession), + ), + select = true, + ), + ) + + controller.flushRegularSessionStates() + + verify(exactly = 1) { regularSession.flushSessionState() } + verify(exactly = 0) { privateSession.flushSessionState() } + } + + @Test + fun `completed regular loads record history while private loads do not`() { + val visits = mutableListOf>() + val store = BrowserStore() + val controller = BrowserTabsController( + store = store, + defaultPrivateBrowsing = false, + scope = CoroutineScope(Dispatchers.Unconfined), + onVisitCompleted = { url, title -> visits += url to title }, + ) + val regularId = "regular" + store.dispatch( + TabListAction.AddTabAction( + TabSessionState( + id = regularId, + content = ContentState( + url = "https://regular.example", + title = "Regular", + ), + ), + select = true, + ), + ) + store.dispatch(ContentAction.UpdateLoadingStateAction(regularId, true)) + store.dispatch(ContentAction.UpdateLoadingStateAction(regularId, false)) + val privateId = "private" + store.dispatch( + TabListAction.AddTabAction( + TabSessionState( + id = privateId, + content = ContentState( + url = "https://private.example", + private = true, + title = "Private", + ), + ), + select = true, + ), + ) + store.dispatch(ContentAction.UpdateLoadingStateAction(privateId, true)) + store.dispatch(ContentAction.UpdateLoadingStateAction(privateId, false)) + + assertEquals(listOf("https://regular.example" to "Regular"), visits) + } + + private fun createController( + defaultPrivateBrowsing: Boolean = false, + snapshotStorage: BrowserSessionSnapshotStorage? = null, + onSnapshotClearFailure: (Throwable) -> Unit = {}, + ) = BrowserTabsController( + store = BrowserStore(), + defaultPrivateBrowsing = defaultPrivateBrowsing, + snapshotStorage = snapshotStorage, + onSnapshotClearFailure = onSnapshotClearFailure, + ) + + private fun recoverableTab(id: String, url: String) = RecoverableTab( + engineSessionState = null, + state = TabState(id = id, url = url), + ) + + private class FakeBrowserSessionSnapshotStorage( + private val snapshot: RecoverableBrowserState?, + private val clearFailure: Throwable? = null, + ) : BrowserSessionSnapshotStorage { + var wasCleared = false + + override suspend fun restore(): RecoverableBrowserState? = snapshot + + override suspend fun clear() { + wasCleared = true + clearFailure?.let { throw it } + } + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/BuiltInAdBlockerTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/BuiltInAdBlockerTest.kt new file mode 100644 index 00000000..e9c50e35 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/BuiltInAdBlockerTest.kt @@ -0,0 +1,54 @@ +package com.msgbyte.dao.browser + +import io.mockk.every +import io.mockk.mockk +import io.mockk.slot +import io.mockk.verify +import mozilla.components.concept.engine.CancellableOperation +import mozilla.components.concept.engine.Engine +import org.junit.Assert.assertSame +import org.junit.Test + +class BuiltInAdBlockerTest { + private val engine = mockk() + private val operation = mockk() + + @Test + fun installsTheBundledExtensionWithStableIdentity() { + every { + engine.installBuiltInWebExtension(any(), any(), any(), any()) + } returns operation + + val result = BuiltInAdBlocker.install(engine) {} + + assertSame(operation, result) + verify(exactly = 1) { + engine.installBuiltInWebExtension( + id = "uBlock0@raymondhill.net", + url = "resource://android/assets/extensions/ublock_origin/", + onSuccess = any(), + onError = any(), + ) + } + } + + @Test + fun forwardsInstallationFailureWithoutThrowing() { + val errorCallback = slot<(Throwable) -> Unit>() + val expected = IllegalStateException("installation failed") + var actual: Throwable? = null + every { + engine.installBuiltInWebExtension( + any(), + any(), + any(), + capture(errorCallback), + ) + } returns operation + + BuiltInAdBlocker.install(engine) { actual = it } + errorCallback.captured(expected) + + assertSame(expected, actual) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/BuiltInTranslatorTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/BuiltInTranslatorTest.kt new file mode 100644 index 00000000..0e81f9f0 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/BuiltInTranslatorTest.kt @@ -0,0 +1,124 @@ +package com.msgbyte.dao.browser + +import io.mockk.every +import io.mockk.mockk +import io.mockk.verify +import mozilla.components.concept.engine.CancellableOperation +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.webextension.EnableSource +import mozilla.components.concept.engine.webextension.WebExtension +import org.junit.Test + +class BuiltInTranslatorTest { + @Test + fun installsThePinnedTranslationExtension() { + val engine = mockk() + val operation = mockk() + val kiss = extension(BuiltInTranslator.EXTENSION_ID) + every { engine.listInstalledWebExtensions(any(), any()) } answers { + arg<(List) -> Unit>(0)(listOf(kiss)) + } + every { engine.installBuiltInWebExtension(any(), any(), any(), any()) } answers { + arg<(WebExtension) -> Unit>(2)(kiss) + operation + } + + BuiltInTranslator.install(engine) {} + + verify(exactly = 1) { + engine.installBuiltInWebExtension( + id = "{fb25c100-22ce-4d5a-be7e-75f3d6f0fc13}", + url = "resource://android/assets/extensions/kiss_translator/", + onSuccess = any(), + onError = any(), + ) + } + } + + @Test + fun newlyInstalledTranslatorStartsDisabled() { + val engine = mockk() + val operation = mockk() + val kiss = extension(BuiltInTranslator.EXTENSION_ID) + var inventoryCalls = 0 + every { engine.listInstalledWebExtensions(any(), any()) } answers { + inventoryCalls += 1 + arg<(List) -> Unit>(0)( + if (inventoryCalls == 1) emptyList() else listOf(kiss), + ) + } + every { engine.installBuiltInWebExtension(any(), any(), any(), any()) } answers { + arg<(WebExtension) -> Unit>(2)(kiss) + operation + } + every { + engine.disableWebExtension(kiss, EnableSource.USER, any(), any()) + } answers { + arg<(WebExtension) -> Unit>(2)(kiss) + } + + BuiltInTranslator.install(engine) {} + + verify(exactly = 1) { + engine.disableWebExtension(kiss, EnableSource.USER, any(), any()) + } + verify(exactly = 0) { + engine.enableWebExtension(any(), any(), any(), any()) + } + } + + @Test + fun existingTranslatorKeepsItsEnabledState() { + val engine = mockk() + val operation = mockk() + val kiss = extension(BuiltInTranslator.EXTENSION_ID) + every { engine.listInstalledWebExtensions(any(), any()) } answers { + arg<(List) -> Unit>(0)(listOf(kiss)) + } + every { engine.installBuiltInWebExtension(any(), any(), any(), any()) } answers { + arg<(WebExtension) -> Unit>(2)(kiss) + operation + } + + BuiltInTranslator.install(engine) {} + + verify(exactly = 0) { + engine.disableWebExtension(any(), any(), any(), any()) + } + verify(exactly = 0) { + engine.enableWebExtension(any(), any(), any(), any()) + } + } + + @Test + fun removesTheLegacyTranslatorAfterKissIsInstalled() { + val engine = mockk() + val operation = mockk() + val kiss = extension(BuiltInTranslator.EXTENSION_ID) + val legacy = extension("{036a55b4-5e72-4d05-a06c-cba2dfcc134a}") + every { engine.listInstalledWebExtensions(any(), any()) } answers { + arg<(List) -> Unit>(0)(listOf(kiss, legacy)) + } + every { + engine.installBuiltInWebExtension(any(), any(), any(), any()) + } answers { + arg<(WebExtension) -> Unit>(2)(kiss) + operation + } + every { engine.uninstallWebExtension(any(), any(), any()) } returns Unit + + BuiltInTranslator.install(engine) {} + + verify(exactly = 1) { + engine.uninstallWebExtension( + ext = legacy, + onSuccess = any(), + onError = any(), + ) + } + } + + private fun extension(extensionId: String) = mockk { + every { id } returns extensionId + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/ExtensionPackageStagerTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/ExtensionPackageStagerTest.kt new file mode 100644 index 00000000..403fe9e3 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/ExtensionPackageStagerTest.kt @@ -0,0 +1,62 @@ +package com.msgbyte.dao.browser + +import java.io.ByteArrayInputStream +import java.io.ByteArrayOutputStream +import org.junit.Assert.assertArrayEquals +import org.junit.Assert.assertEquals +import org.junit.Assert.assertThrows +import org.junit.Test + +class ExtensionPackageStagerTest { + @Test + fun acceptsXpiFileNamesCaseInsensitively() { + assertEquals("addon.xpi", ExtensionPackageStager.requireXpiName("addon.xpi")) + assertEquals("ADDON.XPI", ExtensionPackageStager.requireXpiName("ADDON.XPI")) + } + + @Test + fun rejectsMissingOrNonXpiFileNames() { + assertThrows(ExtensionPackageException.InvalidFileName::class.java) { + ExtensionPackageStager.requireXpiName(null) + } + assertThrows(ExtensionPackageException.InvalidFileName::class.java) { + ExtensionPackageStager.requireXpiName("addon.zip") + } + } + + @Test + fun copiesAFileAtTheConfiguredLimit() { + val output = ByteArrayOutputStream() + + val copied = ExtensionPackageStager.copyBounded( + input = ByteArrayInputStream(byteArrayOf(1, 2, 3, 4)), + output = output, + maxBytes = 4, + ) + + assertEquals(4, copied) + assertArrayEquals(byteArrayOf(1, 2, 3, 4), output.toByteArray()) + } + + @Test + fun rejectsEmptyFiles() { + assertThrows(ExtensionPackageException.EmptyFile::class.java) { + ExtensionPackageStager.copyBounded( + input = ByteArrayInputStream(byteArrayOf()), + output = ByteArrayOutputStream(), + maxBytes = 4, + ) + } + } + + @Test + fun rejectsTheFirstByteBeyondTheConfiguredLimit() { + assertThrows(ExtensionPackageException.TooLarge::class.java) { + ExtensionPackageStager.copyBounded( + input = ByteArrayInputStream(byteArrayOf(1, 2, 3, 4, 5)), + output = ByteArrayOutputStream(), + maxBytes = 4, + ) + } + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/ExtensionRepositoryTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/ExtensionRepositoryTest.kt new file mode 100644 index 00000000..47cf7081 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/ExtensionRepositoryTest.kt @@ -0,0 +1,480 @@ +package com.msgbyte.dao.browser + +import io.mockk.every +import io.mockk.mockk +import io.mockk.slot +import io.mockk.verify +import java.io.File +import mozilla.components.concept.engine.Engine +import mozilla.components.concept.engine.EngineSession +import mozilla.components.concept.engine.webextension.Action +import mozilla.components.concept.engine.webextension.EnableSource +import mozilla.components.concept.engine.webextension.InstallationMethod +import mozilla.components.concept.engine.webextension.Metadata +import mozilla.components.concept.engine.webextension.PermissionPromptResponse +import mozilla.components.concept.engine.webextension.WebExtension +import mozilla.components.concept.engine.webextension.WebExtensionDelegate +import mozilla.components.concept.engine.webextension.WebExtensionInstallException +import org.junit.Assert.assertEquals +import org.junit.Assert.assertFalse +import org.junit.Assert.assertSame +import org.junit.Assert.assertTrue +import org.junit.Test + +class ExtensionRepositoryTest { + private val engine = mockk() + private val extension = mockk() + private val metadata = mockk() + + @Test + fun exposesOnlyExtensionsReportedByTheEngine() { + every { engine.registerWebExtensionDelegate(any()) } returns Unit + stubExtension(extension, enabled = true, builtIn = true) + every { engine.listInstalledWebExtensions(any(), any()) } answers { + firstArg<(List) -> Unit>().invoke(listOf(extension)) + } + + val repository = ExtensionRepository(engine) + repository.refresh() + + assertEquals(1, repository.extensions.value.size) + assertEquals("uBlock Origin", repository.extensions.value.single().name) + assertEquals("1.72.2", repository.extensions.value.single().version) + assertTrue(repository.extensions.value.single().enabled) + assertTrue(repository.extensions.value.single().builtIn) + } + + @Test + fun togglesTheActualEngineExtensionAndRefreshesItsState() { + every { engine.registerWebExtensionDelegate(any()) } returns Unit + val disabled = mockk() + val success = slot<(WebExtension) -> Unit>() + stubExtension(extension, enabled = true, builtIn = false) + stubExtension(disabled, enabled = false, builtIn = false) + every { engine.listInstalledWebExtensions(any(), any()) } answers { + firstArg<(List) -> Unit>().invoke(listOf(extension)) + } + every { + engine.disableWebExtension(extension, EnableSource.USER, capture(success), any()) + } answers { success.captured(disabled) } + + val repository = ExtensionRepository(engine) + repository.refresh() + repository.setEnabled(BuiltInAdBlocker.EXTENSION_ID, false) + + verify(exactly = 1) { + engine.disableWebExtension(extension, EnableSource.USER, any(), any()) + } + assertFalse(repository.extensions.value.single().enabled) + } + + @Test + fun exposesAndInvokesTheBrowserActionReportedByGecko() { + val delegate = slot() + var clickCount = 0 + val action = browserAction { clickCount += 1 } + stubExtension(extension, enabled = true, builtIn = true) + every { engine.registerWebExtensionDelegate(capture(delegate)) } returns Unit + every { engine.listInstalledWebExtensions(any(), any()) } answers { + firstArg<(List) -> Unit>().invoke(listOf(extension)) + } + val repository = ExtensionRepository(engine) + repository.refresh() + + delegate.captured.onBrowserActionDefined(extension, action) + + assertTrue(repository.extensions.value.single().actionAvailable) + assertTrue(repository.invokeAction(BuiltInAdBlocker.EXTENSION_ID)) + assertEquals(1, clickCount) + } + + @Test + fun handsTheExtensionPopupSessionToTheBrowserHost() { + val delegate = slot() + val popupSession = mockk() + var openedSession: EngineSession? = null + every { engine.registerWebExtensionDelegate(capture(delegate)) } returns Unit + val repository = ExtensionRepository(engine) + repository.setPopupSessionHandler { openedSession = it } + + val returned = delegate.captured.onToggleActionPopup( + extension, + popupSession, + browserAction {}, + ) + + assertSame(popupSession, returned) + assertSame(popupSession, openedSession) + } + + @Test + fun installsFromFileAfterExplicitPermissionApprovalAndCleansThePackage() { + val delegate = slot() + var permissionResponse: PermissionPromptResponse? = null + val installSuccess = slot<(WebExtension) -> Unit>() + val stagedFile = File.createTempFile("dao-extension", ".xpi") + val staged = StagedExtensionPackage(stagedFile.toURI().toString(), stagedFile) + stubExtension(extension, enabled = true, builtIn = false) + every { engine.registerWebExtensionDelegate(capture(delegate)) } returns Unit + every { + engine.installWebExtension( + staged.uri, + InstallationMethod.FROM_FILE, + capture(installSuccess), + any(), + ) + } returns mockk() + every { engine.listInstalledWebExtensions(any(), any()) } answers { + firstArg<(List) -> Unit>().invoke(listOf(extension)) + } + val repository = ExtensionRepository(engine) + + assertTrue(repository.install(staged)) + delegate.captured.onInstallPermissionRequest( + extension, + listOf("storage"), + listOf("https://example.com/*"), + listOf("technicalAndInteraction"), + ) { response -> + permissionResponse = response + } + + val awaiting = repository.installState.value as ExtensionInstallState.AwaitingPermission + assertEquals("uBlock Origin", awaiting.prompt.name) + assertEquals(listOf("storage"), awaiting.prompt.permissions) + repository.resolvePermission(granted = true) + assertTrue(permissionResponse?.isPermissionsGranted == true) + installSuccess.captured(extension) + + assertTrue(repository.installState.value is ExtensionInstallState.Installed) + assertFalse(stagedFile.exists()) + assertEquals(1, repository.extensions.value.size) + } + + @Test + fun installsAmoUrlThroughRtamoAndSharedPermissionPrompt() { + val delegate = slot() + val installSuccess = slot<(WebExtension) -> Unit>() + var permissionResponse: PermissionPromptResponse? = null + var responseCount = 0 + val unrelatedLocalFile = File.createTempFile("dao-extension", ".xpi") + stubExtension(extension, enabled = true, builtIn = false) + every { engine.registerWebExtensionDelegate(capture(delegate)) } returns Unit + every { + engine.installWebExtension( + AMO_XPI_URL, + InstallationMethod.RTAMO, + capture(installSuccess), + any(), + ) + } returns mockk() + every { engine.listInstalledWebExtensions(any(), any()) } answers { + firstArg<(List) -> Unit>().invoke(listOf(extension)) + } + val repository = ExtensionRepository(engine) + + assertTrue(repository.installFromAmo(AMO_XPI_URL)) + verify(exactly = 1) { + engine.installWebExtension(AMO_XPI_URL, InstallationMethod.RTAMO, any(), any()) + } + delegate.captured.onInstallPermissionRequest( + extension, + listOf("storage"), + listOf("https://example.com/*"), + emptyList(), + ) { response -> + responseCount += 1 + permissionResponse = response + } + + assertTrue(repository.installState.value is ExtensionInstallState.AwaitingPermission) + repository.resolvePermission(granted = true) + repository.resolvePermission(granted = true) + + assertEquals(1, responseCount) + assertTrue(permissionResponse?.isPermissionsGranted == true) + assertTrue(repository.installState.value is ExtensionInstallState.Installing) + installSuccess.captured(extension) + + assertTrue(repository.installState.value is ExtensionInstallState.Installed) + assertTrue(unrelatedLocalFile.exists()) + verify(exactly = 1) { engine.listInstalledWebExtensions(any(), any()) } + unrelatedLocalFile.delete() + } + + @Test + fun rejectsAmoPermissionOnceWithoutDeletingLocalFiles() { + val delegate = slot() + var responseCount = 0 + var granted: Boolean? = null + val unrelatedLocalFile = File.createTempFile("dao-extension", ".xpi") + stubExtension(extension, enabled = true, builtIn = false) + every { engine.registerWebExtensionDelegate(capture(delegate)) } returns Unit + every { + engine.installWebExtension(AMO_XPI_URL, InstallationMethod.RTAMO, any(), any()) + } returns mockk() + val repository = ExtensionRepository(engine) + + assertTrue(repository.installFromAmo(AMO_XPI_URL)) + delegate.captured.onInstallPermissionRequest( + extension, + emptyList(), + emptyList(), + emptyList(), + ) { response -> + responseCount += 1 + granted = response.isPermissionsGranted + } + + repository.resolvePermission(granted = false) + repository.resolvePermission(granted = true) + + assertEquals(1, responseCount) + assertEquals(false, granted) + assertTrue(unrelatedLocalFile.exists()) + assertTrue(repository.installState.value is ExtensionInstallState.Failed) + unrelatedLocalFile.delete() + } + + @Test + fun rejectsInvalidAmoUrlsBeforeCallingGecko() { + every { engine.registerWebExtensionDelegate(any()) } returns Unit + val repository = ExtensionRepository(engine) + + assertFalse(repository.installFromAmo("http://addons.mozilla.org/addon.xpi")) + assertFalse(repository.installFromAmo("https://addons.mozilla.org/addon.zip")) + assertFalse(repository.installFromAmo("https:///addon.xpi")) + assertFalse(repository.installFromAmo("not a uri")) + + verify(exactly = 0) { engine.installWebExtension(any(), any(), any(), any()) } + } + + @Test + fun rejectsAmoInstallWhileAnotherInstallIsActive() { + val local = stagedPackage() + every { engine.registerWebExtensionDelegate(any()) } returns Unit + every { engine.installWebExtension(any(), any(), any(), any()) } returns mockk() + val repository = ExtensionRepository(engine) + + assertTrue(repository.install(local)) + assertFalse(repository.installFromAmo(AMO_XPI_URL)) + + local.delete() + } + + @Test + fun rejectsSecondAmoInstallWhileAnAmoInstallIsActive() { + every { engine.registerWebExtensionDelegate(any()) } returns Unit + every { engine.installWebExtension(any(), any(), any(), any()) } returns mockk() + val repository = ExtensionRepository(engine) + + assertTrue(repository.installFromAmo(AMO_XPI_URL)) + assertFalse(repository.installFromAmo(AMO_XPI_URL)) + verify(exactly = 1) { + engine.installWebExtension(AMO_XPI_URL, InstallationMethod.RTAMO, any(), any()) + } + } + + @Test + fun ignoresTerminalCallbackFromAnEarlierInstall() { + val delegate = slot() + val first = stagedPackage() + val firstExtension = mockk() + val secondExtension = mockk() + val successCallbacks = mutableListOf<(WebExtension) -> Unit>() + val errorCallbacks = mutableListOf<(Throwable) -> Unit>() + stubExtension(firstExtension, enabled = true, builtIn = false, id = "first@example") + stubExtension(secondExtension, enabled = true, builtIn = false, id = "second@example") + every { engine.registerWebExtensionDelegate(capture(delegate)) } returns Unit + every { engine.installWebExtension(any(), any(), any(), any()) } answers { + successCallbacks += thirdArg<(WebExtension) -> Unit>() + errorCallbacks += arg<(Throwable) -> Unit>(3) + mockk() + } + every { engine.listInstalledWebExtensions(any(), any()) } answers { + firstArg<(List) -> Unit>().invoke(listOf(firstExtension)) + } + val repository = ExtensionRepository(engine) + + assertTrue(repository.install(first)) + successCallbacks[0](firstExtension) + assertFalse(first.file.exists()) + repository.dismissResult() + assertTrue(repository.installFromAmo(AMO_XPI_URL)) + + errorCallbacks[0](WebExtensionInstallException.NetworkFailure(null, IllegalStateException())) + delegate.captured.onInstallationFailedRequest( + firstExtension, + WebExtensionInstallException.NetworkFailure(null, IllegalStateException()), + ) + + assertTrue(repository.installState.value is ExtensionInstallState.Installing) + assertFalse(repository.installFromAmo(AMO_XPI_URL)) + successCallbacks[1](secondExtension) + val installed = repository.installState.value as ExtensionInstallState.Installed + assertEquals("uBlock Origin", installed.name) + } + + @Test + fun rejectsASecondInstallWithoutReplacingThePendingPrompt() { + val delegate = slot() + val first = stagedPackage() + val second = stagedPackage() + stubExtension(extension, enabled = true, builtIn = false) + every { engine.registerWebExtensionDelegate(capture(delegate)) } returns Unit + every { engine.installWebExtension(any(), any(), any(), any()) } returns mockk() + val repository = ExtensionRepository(engine) + + assertTrue(repository.install(first)) + delegate.captured.onInstallPermissionRequest( + extension, + emptyList(), + emptyList(), + emptyList(), + ) {} + + assertFalse(repository.install(second)) + assertTrue(repository.installState.value is ExtensionInstallState.AwaitingPermission) + assertTrue(second.file.exists()) + first.delete() + second.delete() + } + + @Test + fun denialRespondsOnceAndCleansThePackage() { + val delegate = slot() + var responseCount = 0 + var granted: Boolean? = null + val staged = stagedPackage() + stubExtension(extension, enabled = true, builtIn = false) + every { engine.registerWebExtensionDelegate(capture(delegate)) } returns Unit + every { engine.installWebExtension(any(), any(), any(), any()) } returns mockk() + val repository = ExtensionRepository(engine) + repository.install(staged) + delegate.captured.onInstallPermissionRequest( + extension, + emptyList(), + emptyList(), + emptyList(), + ) { response -> + responseCount += 1 + granted = response.isPermissionsGranted + } + + repository.resolvePermission(granted = false) + repository.resolvePermission(granted = true) + + assertEquals(1, responseCount) + assertEquals(false, granted) + assertFalse(staged.file.exists()) + assertTrue(repository.installState.value is ExtensionInstallState.Failed) + } + + @Test + fun mapsKnownGeckoFailuresToStableReasons() { + assertEquals( + ExtensionInstallFailure.NOT_SIGNED, + ExtensionRepository.mapInstallFailure(WebExtensionInstallException.NotSigned(IllegalStateException())), + ) + assertEquals( + ExtensionInstallFailure.CORRUPT_FILE, + ExtensionRepository.mapInstallFailure(WebExtensionInstallException.CorruptFile(IllegalStateException())), + ) + assertEquals( + ExtensionInstallFailure.INCOMPATIBLE, + ExtensionRepository.mapInstallFailure(WebExtensionInstallException.Incompatible(null, IllegalStateException())), + ) + assertEquals( + ExtensionInstallFailure.BLOCKLISTED, + ExtensionRepository.mapInstallFailure(WebExtensionInstallException.Blocklisted(null, null, null, IllegalStateException())), + ) + assertEquals( + ExtensionInstallFailure.SOFT_BLOCKED, + ExtensionRepository.mapInstallFailure(WebExtensionInstallException.SoftBlocked(null, null, null, IllegalStateException())), + ) + assertEquals( + ExtensionInstallFailure.NETWORK_FAILURE, + ExtensionRepository.mapInstallFailure(WebExtensionInstallException.NetworkFailure(null, IllegalStateException())), + ) + assertEquals( + ExtensionInstallFailure.UNSUPPORTED_TYPE, + ExtensionRepository.mapInstallFailure(WebExtensionInstallException.UnsupportedAddonType(null, IllegalStateException())), + ) + assertEquals( + ExtensionInstallFailure.USER_CANCELLED, + ExtensionRepository.mapInstallFailure(WebExtensionInstallException.UserCancelled(null, IllegalStateException())), + ) + assertEquals( + ExtensionInstallFailure.UNKNOWN, + ExtensionRepository.mapInstallFailure(IllegalStateException("unexpected")), + ) + } + + @Test + fun uninstallsOnlyCustomExtensions() { + val custom = mockk() + stubExtension(custom, enabled = true, builtIn = false, id = "custom@example") + every { engine.registerWebExtensionDelegate(any()) } returns Unit + every { engine.listInstalledWebExtensions(any(), any()) } answers { + firstArg<(List) -> Unit>().invoke(listOf(custom)) + } + every { engine.uninstallWebExtension(custom, any(), any()) } answers { + secondArg<() -> Unit>().invoke() + } + val repository = ExtensionRepository(engine) + repository.refresh() + + assertTrue(repository.uninstall("custom@example")) + + verify(exactly = 1) { engine.uninstallWebExtension(custom, any(), any()) } + } + + @Test + fun rejectsUninstallForBuiltInExtensions() { + stubExtension(extension, enabled = true, builtIn = true) + every { engine.registerWebExtensionDelegate(any()) } returns Unit + every { engine.listInstalledWebExtensions(any(), any()) } answers { + firstArg<(List) -> Unit>().invoke(listOf(extension)) + } + val repository = ExtensionRepository(engine) + repository.refresh() + + assertFalse(repository.uninstall(BuiltInAdBlocker.EXTENSION_ID)) + + verify(exactly = 0) { engine.uninstallWebExtension(any(), any(), any()) } + } + + private fun stubExtension( + value: WebExtension, + enabled: Boolean, + builtIn: Boolean, + id: String = BuiltInAdBlocker.EXTENSION_ID, + ) { + every { value.id } returns id + every { value.getMetadata() } returns metadata + every { value.isEnabled() } returns enabled + every { value.isBuiltIn() } returns builtIn + every { metadata.name } returns "uBlock Origin" + every { metadata.description } returns "An efficient content blocker" + every { metadata.version } returns "1.72.2" + } + + private fun stagedPackage(): StagedExtensionPackage { + val file = File.createTempFile("dao-extension", ".xpi") + return StagedExtensionPackage(file.toURI().toString(), file) + } + + private fun browserAction(onClick: () -> Unit) = Action( + title = "Open", + enabled = true, + loadIcon = null, + badgeText = null, + badgeTextColor = null, + badgeBackgroundColor = null, + onClick = onClick, + ) + + private companion object { + const val AMO_XPI_URL = "https://addons.mozilla.org/firefox/downloads/file/123456/addon.xpi" + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/NavigationTargetResolverTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/NavigationTargetResolverTest.kt new file mode 100644 index 00000000..35b0ebf9 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/NavigationTargetResolverTest.kt @@ -0,0 +1,49 @@ +package com.msgbyte.dao.browser + +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Test + +class NavigationTargetResolverTest { + private val resolver = NavigationTargetResolver( + searchUrl = "https://www.google.com/search?q=%s", + ) + + @Test + fun blankInputDoesNotNavigate() { + assertNull(resolver.resolve(" ")) + } + + @Test + fun preservesHttpUrl() { + assertEquals("http://example.com/path", resolver.resolve("http://example.com/path")) + } + + @Test + fun preservesUppercaseHttpUrl() { + assertEquals("HTTP://example.com/path", resolver.resolve("HTTP://example.com/path")) + } + + @Test + fun preservesMixedCaseHttpsUrl() { + assertEquals("hTtPs://example.com/path", resolver.resolve("hTtPs://example.com/path")) + } + + @Test + fun addsHttpsToDomain() { + assertEquals("https://example.com", resolver.resolve("example.com")) + } + + @Test + fun preservesBlankPageWithFragment() { + assertEquals("about:blank#test-page", resolver.resolve("about:blank#test-page")) + } + + @Test + fun encodesSearchTerms() { + assertEquals( + "https://www.google.com/search?q=dao+browser", + resolver.resolve("dao browser"), + ) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/QrCodeDecoderTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/QrCodeDecoderTest.kt new file mode 100644 index 00000000..57e25991 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/QrCodeDecoderTest.kt @@ -0,0 +1,30 @@ +package com.msgbyte.dao.browser + +import com.google.zxing.BarcodeFormat +import com.google.zxing.qrcode.QRCodeWriter +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Test + +class QrCodeDecoderTest { + @Test + fun decodesQrContentFromCameraLuminanceData() { + val expected = "https://example.com/from-qr" + val matrix = QRCodeWriter().encode(expected, BarcodeFormat.QR_CODE, 240, 240) + val luminance = ByteArray(matrix.width * matrix.height) { index -> + val x = index % matrix.width + val y = index / matrix.width + if (matrix[x, y]) 0 else 0xFF.toByte() + } + + assertEquals( + expected, + QrCodeDecoder.decode(luminance, matrix.width, matrix.height, rotationDegrees = 0), + ) + } + + @Test + fun returnsNullForAFrameWithoutQrContent() { + assertNull(QrCodeDecoder.decode(ByteArray(100 * 100) { 0xFF.toByte() }, 100, 100, 0)) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/SiteSecurityDetailsTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/SiteSecurityDetailsTest.kt new file mode 100644 index 00000000..71eb053b --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/SiteSecurityDetailsTest.kt @@ -0,0 +1,78 @@ +package com.msgbyte.dao.browser + +import io.mockk.every +import io.mockk.mockk +import java.math.BigInteger +import java.security.cert.X509Certificate +import java.time.Instant +import java.time.ZoneId +import java.util.Date +import java.util.Locale +import javax.security.auth.x500.X500Principal +import mozilla.components.browser.state.state.SecurityInfo +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Test + +class SiteSecurityDetailsTest { + @Test + fun `secure Gecko state exposes certificate identity and SHA-256 fingerprint`() { + val certificate = mockk() + every { certificate.subjectX500Principal } returns + X500Principal("CN=example.com,O=Example Corp") + every { certificate.issuerX500Principal } returns + X500Principal("CN=Example CA,O=Example Trust") + every { certificate.notBefore } returns + Date.from(Instant.parse("2026-01-01T00:00:00Z")) + every { certificate.notAfter } returns + Date.from(Instant.parse("2027-01-01T00:00:00Z")) + every { certificate.serialNumber } returns BigInteger("255") + every { certificate.encoded } returns byteArrayOf(1, 2, 3) + + val details = SiteSecurityDetails.from( + url = "https://example.com/path", + securityInfo = SecurityInfo.Secure("example.com", "Example CA", certificate), + locale = Locale.US, + zoneId = ZoneId.of("UTC"), + ) + + assertEquals(SiteSecurityState.SECURE, details.state) + assertEquals("example.com", details.host) + assertEquals("example.com", details.subject) + assertEquals("Example CA", details.issuer) + assertEquals("Jan 1, 2026, 12:00:00 AM", details.validFrom) + assertEquals("Jan 1, 2027, 12:00:00 AM", details.validUntil) + assertEquals("FF", details.serialNumber) + assertEquals( + "03:90:58:C6:F2:C0:CB:49:2C:53:3B:0A:4D:14:EF:77:" + + "CC:0F:78:AB:CC:CE:D5:28:7D:84:A1:A2:01:1C:FB:81", + details.sha256Fingerprint, + ) + } + + @Test + fun `insecure and unknown states never expose stale certificate details`() { + val insecure = SiteSecurityDetails.from( + url = "http://example.com", + securityInfo = SecurityInfo.Insecure("example.com", "", null), + locale = Locale.US, + zoneId = ZoneId.of("UTC"), + ) + val unknown = SiteSecurityDetails.from( + url = "about:blank", + securityInfo = SecurityInfo.Unknown, + locale = Locale.US, + zoneId = ZoneId.of("UTC"), + ) + + assertEquals(SiteSecurityState.INSECURE, insecure.state) + assertEquals("example.com", insecure.host) + assertNull(insecure.subject) + assertNull(insecure.issuer) + assertNull(insecure.sha256Fingerprint) + assertEquals(SiteSecurityState.UNAVAILABLE, unknown.state) + assertEquals("about:blank", unknown.host) + assertNull(unknown.subject) + assertNull(unknown.sha256Fingerprint) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/SystemDownloadRepositoryTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/SystemDownloadRepositoryTest.kt new file mode 100644 index 00000000..fdbd1b65 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/SystemDownloadRepositoryTest.kt @@ -0,0 +1,116 @@ +package com.msgbyte.dao.browser + +import kotlinx.coroutines.runBlocking +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Assert.fail +import org.junit.Test + +class SystemDownloadRepositoryTest { + private val gateway = FakeDownloadGateway() + private val store = InMemoryDownloadMetadataStore() + private val repository = SystemDownloadRepository(gateway, store) + + @Test + fun enqueuePreservesTheGeckoRequestAndPublishesRunningProgress() = runBlocking { + val request = DownloadRequestData( + url = "https://example.com/archive.zip", + fileName = "archive.zip", + contentLength = 1_000, + contentType = "application/zip", + cookie = "session=dao", + userAgent = "Dao/1", + ) + + val id = repository.enqueue(request) + gateway.records[id] = DownloadGatewayRecord( + id = id, + status = DownloadGatewayStatus.RUNNING, + bytesDownloaded = 250, + totalBytes = 1_000, + localUri = null, + reason = 0, + lastModified = 50, + ) + repository.refresh() + + assertEquals(request, gateway.enqueued.single()) + assertEquals(DownloadStatus.RUNNING, repository.downloads.value.single().status) + assertEquals(0.25f, repository.downloads.value.single().progress) + } + + @Test + fun retryRemovesTheFailedTaskAndEnqueuesItsOriginalRequest() = runBlocking { + val request = DownloadRequestData("https://example.com/archive.zip", "archive.zip") + val failedId = repository.enqueue(request) + gateway.records[failedId] = DownloadGatewayRecord( + id = failedId, + status = DownloadGatewayStatus.FAILED, + bytesDownloaded = 10, + totalBytes = 100, + localUri = null, + reason = 500, + lastModified = 50, + ) + + val retriedId = repository.retry(failedId) + + assertTrue(failedId in gateway.removed) + assertEquals(request, gateway.enqueued.last()) + assertTrue(retriedId != failedId) + assertEquals(setOf(retriedId), store.readAll().keys) + } + + @Test + fun cancelRemovesTheSystemTaskAndOwnedMetadata() = runBlocking { + val id = repository.enqueue(DownloadRequestData("https://example.com/file.pdf", "file.pdf")) + + repository.cancel(id) + + assertEquals(listOf(id), gateway.removed) + assertTrue(store.readAll().isEmpty()) + assertTrue(repository.downloads.value.isEmpty()) + } + + @Test + fun nonHttpDownloadsAreRejectedBeforeReachingAndroid() = runBlocking { + try { + repository.enqueue(DownloadRequestData("file:///tmp/private.txt", "private.txt")) + fail("Expected a non-HTTP download to be rejected") + } catch (_: IllegalArgumentException) { + // Expected. + } + + assertTrue(gateway.enqueued.isEmpty()) + } +} + +private class FakeDownloadGateway : DownloadGateway { + val enqueued = mutableListOf() + val records = mutableMapOf() + val removed = mutableListOf() + private var nextId = 1L + + override fun enqueue(request: DownloadRequestData): Long { + enqueued += request + return nextId++ + } + + override fun query(ids: Set): List = ids.mapNotNull(records::get) + + override fun remove(id: Long) { + removed += id + records.remove(id) + } +} + +private class InMemoryDownloadMetadataStore : DownloadMetadataStore { + private val values = linkedMapOf() + + override fun readAll(): Map = values.toMap() + + override fun writeAll(values: Map) { + this.values.clear() + this.values.putAll(values) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/browser/TabThumbnailRepositoryTest.kt b/android/app/src/test/java/com/msgbyte/dao/browser/TabThumbnailRepositoryTest.kt new file mode 100644 index 00000000..8fcf6f8f --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/browser/TabThumbnailRepositoryTest.kt @@ -0,0 +1,90 @@ +package com.msgbyte.dao.browser + +import android.graphics.Bitmap +import androidx.test.core.app.ApplicationProvider +import java.io.File +import kotlinx.coroutines.runBlocking +import org.junit.After +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNotNull +import org.junit.Assert.assertNull +import org.junit.Assert.assertSame +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [35]) +class TabThumbnailRepositoryTest { + private val context = ApplicationProvider.getApplicationContext() + private val thumbnailDirectory = File(context.cacheDir, "dao_tab_thumbnails") + + @Before + fun setUp() { + thumbnailDirectory.deleteRecursively() + } + + @After + fun tearDown() { + thumbnailDirectory.deleteRecursively() + } + + @Test + fun `regular thumbnail is stored on disk and decoded at bounded size`() = runBlocking { + val repository = TabThumbnailRepository(context, maxWidth = 36, maxHeight = 48) + val source = Bitmap.createBitmap(72, 96, Bitmap.Config.ARGB_8888) + + repository.save(tabId = "regular", private = false, bitmap = source) + + val restored = repository.load(tabId = "regular", private = false) + assertNotNull(restored) + assertEquals(36, restored!!.width) + assertEquals(48, restored.height) + assertEquals(1, thumbnailDirectory.listFiles().orEmpty().size) + } + + @Test + fun `private thumbnail stays in memory and never creates a disk file`() = runBlocking { + val repository = TabThumbnailRepository(context) + val source = Bitmap.createBitmap(32, 48, Bitmap.Config.ARGB_8888) + + repository.save(tabId = "private", private = true, bitmap = source) + + assertSame(source, repository.load(tabId = "private", private = true)) + assertEquals(0, thumbnailDirectory.listFiles().orEmpty().size) + } + + @Test + fun `private lookup never reveals an old regular disk thumbnail`() = runBlocking { + val repository = TabThumbnailRepository(context) + val source = Bitmap.createBitmap(32, 48, Bitmap.Config.ARGB_8888) + repository.save(tabId = "same-id", private = false, bitmap = source) + + val privateResult = repository.load(tabId = "same-id", private = true) + + assertNull(privateResult) + } + + @Test + fun `delete removes both memory and disk thumbnail state`() = runBlocking { + val repository = TabThumbnailRepository(context) + repository.save( + tabId = "regular", + private = false, + bitmap = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888), + ) + repository.save( + tabId = "private", + private = true, + bitmap = Bitmap.createBitmap(32, 32, Bitmap.Config.ARGB_8888), + ) + + repository.delete("regular") + repository.delete("private") + + assertNull(repository.load("private", private = true)) + assertEquals(0, thumbnailDirectory.listFiles().orEmpty().size) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/ui/AndroidLocalizationTest.kt b/android/app/src/test/java/com/msgbyte/dao/ui/AndroidLocalizationTest.kt new file mode 100644 index 00000000..535d4b53 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/ui/AndroidLocalizationTest.kt @@ -0,0 +1,48 @@ +package com.msgbyte.dao.ui + +import android.content.Context +import android.content.res.Configuration +import androidx.test.core.app.ApplicationProvider +import com.msgbyte.dao.R +import java.util.Locale +import org.junit.Assert.assertEquals +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(sdk = [35]) +class AndroidLocalizationTest { + private val application = ApplicationProvider.getApplicationContext() + + @Test + fun selectsEnglishAsTheDefaultAndSimplifiedChineseFromTheSystemLocale() { + val english = application.forLocale(Locale.US) + val chinese = application.forLocale(Locale.SIMPLIFIED_CHINESE) + + assertEquals("Search or enter address", english.getString(R.string.address_hint)) + assertEquals("搜索或输入网址", chinese.getString(R.string.address_hint)) + assertEquals( + "Firefox remote debugging", + english.getString(R.string.remote_debugging_clip_label), + ) + assertEquals( + "Firefox 远程调试", + chinese.getString(R.string.remote_debugging_clip_label), + ) + } + + @Test + fun fallsBackToEnglishForAnUnsupportedSystemLocale() { + val unsupported = application.forLocale(Locale.forLanguageTag("eo")) + + assertEquals("Search or enter address", unsupported.getString(R.string.address_hint)) + } +} + +private fun Context.forLocale(locale: Locale): Context { + val configuration = Configuration(resources.configuration) + configuration.setLocale(locale) + return createConfigurationContext(configuration) +} diff --git a/android/app/src/test/java/com/msgbyte/dao/ui/BrowserThumbnailCaptureTest.kt b/android/app/src/test/java/com/msgbyte/dao/ui/BrowserThumbnailCaptureTest.kt new file mode 100644 index 00000000..9d0294cb --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/ui/BrowserThumbnailCaptureTest.kt @@ -0,0 +1,193 @@ +package com.msgbyte.dao.ui + +import android.graphics.Bitmap +import io.mockk.Runs +import io.mockk.every +import io.mockk.just +import io.mockk.mockk +import java.util.ArrayDeque +import kotlinx.coroutines.CompletableDeferred +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.SupervisorJob +import kotlinx.coroutines.runBlocking +import kotlinx.coroutines.withTimeout +import kotlinx.coroutines.yield +import mozilla.components.concept.engine.EngineView +import org.junit.Assert.assertEquals +import org.junit.Assert.assertNull +import org.junit.Assert.assertSame +import org.junit.Test + +class BrowserThumbnailCaptureTest { + @Test + fun `capture returns null when no EngineView is bound`() = runBlocking { + val capture = BrowserThumbnailCapture() + + assertNull(capture.capture()) + } + + @Test + fun `capture returns the bitmap produced by the bound EngineView`() = runBlocking { + val expected = mockk() + val engineView = mockk() + every { engineView.captureThumbnail(any()) } answers { + firstArg<(Bitmap) -> Unit>().invoke(expected) + } + val capture = BrowserThumbnailCapture() + capture.bind(engineView) + + val actual = capture.capture() + + assertSame(expected, actual) + } + + @Test + fun `capture returns null when bound EngineView never calls back`() = runBlocking { + val engineView = mockk(relaxed = true) + every { engineView.captureThumbnail(any()) } just Runs + val capture = BrowserThumbnailCapture() + capture.bind(engineView) + + val actual = withTimeout(1_000) { capture.capture() } + + assertNull(actual) + } + + @Test + fun `unbind prevents the disposed EngineView from serving captures`() = runBlocking { + val engineView = mockk(relaxed = true) + val capture = BrowserThumbnailCapture() + capture.bind(engineView) + + capture.unbind(engineView) + + assertNull(capture.capture()) + } + + @Test + fun `closing a tab waits for cancellation before deleting and ignores a delayed callback`() = + runBlocking { + val pendingCapture = CompletableDeferred() + val events = mutableListOf() + val coordinator = TabThumbnailCaptureCoordinator( + scope = CoroutineScope(SupervisorJob() + Dispatchers.Unconfined), + captureThumbnail = { + try { + pendingCapture.await() + } finally { + events += "capture-cancelled" + } + }, + saveThumbnail = { _, _, _ -> events += "save" }, + deleteThumbnail = { events += "delete" }, + ) + + coordinator.capture(tabId = "closed-tab", private = false) + coordinator.close(tabId = "closed-tab") + pendingCapture.complete(mockk()) + yield() + + assertEquals(listOf("capture-cancelled", "delete"), events) + } + + @Test + fun `a newer capture wins when callbacks complete out of order`() = runBlocking { + val firstCapture = CompletableDeferred() + val secondCapture = CompletableDeferred() + val pendingCaptures = ArrayDeque(listOf(firstCapture, secondCapture)) + val oldBitmap = mockk() + val newBitmap = mockk() + val saved = mutableListOf() + val coordinator = TabThumbnailCaptureCoordinator( + scope = CoroutineScope(SupervisorJob() + Dispatchers.Unconfined), + captureThumbnail = { pendingCaptures.removeFirst().await() }, + saveThumbnail = { _, _, bitmap -> saved += bitmap }, + deleteThumbnail = {}, + ) + + coordinator.capture(tabId = "repeated-tab", private = false) + coordinator.capture(tabId = "repeated-tab", private = false) + secondCapture.complete(newBitmap) + firstCapture.complete(oldBitmap) + yield() + + assertEquals(listOf(newBitmap), saved) + } + + @Test + fun `capture failure is reported and later capture succeeds`() = runBlocking { + val captureFailure = IllegalStateException("capture failed") + val expectedBitmap = mockk() + val reported = mutableListOf() + val saved = mutableListOf() + var attempts = 0 + val coordinator = TabThumbnailCaptureCoordinator( + scope = CoroutineScope(SupervisorJob() + Dispatchers.Unconfined), + captureThumbnail = { + if (attempts++ == 0) throw captureFailure + expectedBitmap + }, + saveThumbnail = { _, _, bitmap -> saved += bitmap }, + deleteThumbnail = {}, + onError = { reported += it }, + ) + + coordinator.capture(tabId = "retry-tab", private = false) + yield() + coordinator.capture(tabId = "retry-tab", private = false) + yield() + + assertEquals(listOf(captureFailure), reported) + assertEquals(listOf(expectedBitmap), saved) + } + + @Test + fun `save failure is reported and later capture succeeds`() = runBlocking { + val saveFailure = IllegalStateException("save failed") + val expectedBitmap = mockk() + val reported = mutableListOf() + val saved = mutableListOf() + var attempts = 0 + val coordinator = TabThumbnailCaptureCoordinator( + scope = CoroutineScope(SupervisorJob() + Dispatchers.Unconfined), + captureThumbnail = { expectedBitmap }, + saveThumbnail = { _, _, bitmap -> + if (attempts++ == 0) throw saveFailure + saved += bitmap + }, + deleteThumbnail = {}, + onError = { reported += it }, + ) + + coordinator.capture(tabId = "retry-tab", private = false) + yield() + coordinator.capture(tabId = "retry-tab", private = false) + yield() + + assertEquals(listOf(saveFailure), reported) + assertEquals(listOf(expectedBitmap), saved) + } + + @Test + fun `delete failure is reported and later capture succeeds`() = runBlocking { + val deleteFailure = IllegalStateException("delete failed") + val expectedBitmap = mockk() + val reported = mutableListOf() + val saved = mutableListOf() + val coordinator = TabThumbnailCaptureCoordinator( + scope = CoroutineScope(SupervisorJob() + Dispatchers.Unconfined), + captureThumbnail = { expectedBitmap }, + saveThumbnail = { _, _, bitmap -> saved += bitmap }, + deleteThumbnail = { throw deleteFailure }, + onError = { reported += it }, + ) + + coordinator.close(tabId = "closed-tab") + coordinator.capture(tabId = "retry-tab", private = false) + yield() + + assertEquals(listOf(deleteFailure), reported) + assertEquals(listOf(expectedBitmap), saved) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/ui/EngineViewLifecycleTest.kt b/android/app/src/test/java/com/msgbyte/dao/ui/EngineViewLifecycleTest.kt new file mode 100644 index 00000000..c918e079 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/ui/EngineViewLifecycleTest.kt @@ -0,0 +1,49 @@ +package com.msgbyte.dao.ui + +import androidx.lifecycle.Lifecycle +import io.mockk.mockk +import io.mockk.verify +import io.mockk.verifyOrder +import mozilla.components.concept.engine.EngineView +import org.junit.Test + +class EngineViewLifecycleTest { + @Test + fun forwardsLifecycleAndReleasesView() { + val view = mockk(relaxed = true) + val lifecycle = EngineViewLifecycle(view) + + lifecycle.onEvent(Lifecycle.Event.ON_CREATE) + lifecycle.onEvent(Lifecycle.Event.ON_START) + lifecycle.onEvent(Lifecycle.Event.ON_RESUME) + lifecycle.onEvent(Lifecycle.Event.ON_PAUSE) + lifecycle.onEvent(Lifecycle.Event.ON_STOP) + lifecycle.dispose() + + verifyOrder { + view.onCreate() + view.onStart() + view.onResume() + view.onPause() + view.onStop() + view.release() + view.onDestroy() + } + } + + @Test + fun destroysViewOnlyOnceWhenLifecycleAndComposeBothDisposeIt() { + val view = mockk(relaxed = true) + val lifecycle = EngineViewLifecycle(view) + + lifecycle.onEvent(Lifecycle.Event.ON_DESTROY) + lifecycle.dispose() + + verifyOrder { + view.release() + view.onDestroy() + } + verify(exactly = 1) { view.release() } + verify(exactly = 1) { view.onDestroy() } + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/ui/FontPreviewTypographyTest.kt b/android/app/src/test/java/com/msgbyte/dao/ui/FontPreviewTypographyTest.kt new file mode 100644 index 00000000..969d093b --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/ui/FontPreviewTypographyTest.kt @@ -0,0 +1,23 @@ +package com.msgbyte.dao.ui + +import com.msgbyte.dao.browser.BrowserFontScale +import org.junit.Assert.assertEquals +import org.junit.Test + +class FontPreviewTypographyTest { + @Test + fun previewTypographyUsesTheSameFactorsAsWebContent() { + assertEquals( + FontPreviewTypography(titleSizeSp = 15.3f, bodySizeSp = 12.75f), + fontPreviewTypography(BrowserFontScale.SMALL), + ) + assertEquals( + FontPreviewTypography(titleSizeSp = 18f, bodySizeSp = 15f), + fontPreviewTypography(BrowserFontScale.MEDIUM), + ) + assertEquals( + FontPreviewTypography(titleSizeSp = 21.6f, bodySizeSp = 18f), + fontPreviewTypography(BrowserFontScale.LARGE), + ) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/ui/HistoryTimeModelTest.kt b/android/app/src/test/java/com/msgbyte/dao/ui/HistoryTimeModelTest.kt new file mode 100644 index 00000000..3991a709 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/ui/HistoryTimeModelTest.kt @@ -0,0 +1,26 @@ +package com.msgbyte.dao.ui + +import java.time.LocalDate +import java.time.ZoneId +import java.time.ZonedDateTime +import java.util.Locale +import org.junit.Assert.assertEquals +import org.junit.Test + +class HistoryTimeModelTest { + @Test + fun formatsHistoryDatesWithTheSelectedResourcePatternAndLocale() { + val date = LocalDate.of(2026, 8, 3) + + assertEquals("Aug 3", formatHistoryDate(date, "MMM d", Locale.US)) + assertEquals("8月3日", formatHistoryDate(date, "M月d日", Locale.SIMPLIFIED_CHINESE)) + } + + @Test + fun formatsHistoryTimesWithTheSelectedLocale() { + val time = ZonedDateTime.of(2026, 8, 3, 14, 5, 0, 0, ZoneId.of("UTC")) + + assertEquals("2:05 PM", formatHistoryTime(time, Locale.US)) + assertEquals("下午2:05", formatHistoryTime(time, Locale.SIMPLIFIED_CHINESE)) + } +} diff --git a/android/app/src/test/java/com/msgbyte/dao/ui/NewTabSearchModelTest.kt b/android/app/src/test/java/com/msgbyte/dao/ui/NewTabSearchModelTest.kt new file mode 100644 index 00000000..2b957579 --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/ui/NewTabSearchModelTest.kt @@ -0,0 +1,85 @@ +package com.msgbyte.dao.ui + +import com.msgbyte.dao.browser.BookmarkEntry +import com.msgbyte.dao.browser.BookmarkKind +import com.msgbyte.dao.browser.HistoryVisit +import org.junit.Assert.assertEquals +import org.junit.Assert.assertTrue +import org.junit.Test + +class NewTabSearchModelTest { + private val pool = listOf( + SearchSuggestion("GitHub", "github.com", SuggestionType.Site), + SearchSuggestion("Arc", "arc.net", SuggestionType.Site), + SearchSuggestion("Vercel", "vercel.com", SuggestionType.Site), + SearchSuggestion("Figma Community", "figma.com/community", SuggestionType.Site), + SearchSuggestion("figma shortcuts", "Search suggestion", SuggestionType.Search), + ) + + @Test + fun blankQueryReturnsTheThreeRecentSites() { + val results = searchSuggestions("", pool) + + assertEquals(listOf("GitHub", "Arc", "Vercel"), results.map { it.title }) + } + + @Test + fun queryFiltersTitleAndSubtitleIgnoringCaseAndLimitsResults() { + val results = searchSuggestions("FIGMA", pool) + + assertEquals(listOf("Figma Community", "figma shortcuts"), results.map { it.title }) + assertTrue(results.size <= 5) + } + + @Test + fun unmatchedQueryReturnsNoSiteSuggestions() { + assertTrue(searchSuggestions("missing", pool).isEmpty()) + } + + @Test + fun blankQueryUsesRecentDistinctHistoryBeforeBookmarks() { + val history = listOf( + HistoryVisit(3, "https://recent.example", "Recent", 30), + HistoryVisit(2, "https://recent.example", "Older duplicate", 20), + HistoryVisit(1, "https://docs.example", "Docs", 10), + ) + val bookmarks = listOf( + bookmark(1, "https://bookmarked.example", "Bookmarked"), + ) + + val results = buildLibrarySuggestions("", bookmarks, history) + + assertEquals( + listOf("https://recent.example", "https://docs.example", "https://bookmarked.example"), + results.map { it.target }, + ) + } + + @Test + fun queryCombinesBookmarksAndHistoryWithoutDuplicateUrls() { + val bookmarks = listOf( + bookmark(1, "https://example.com", "Example bookmark"), + ) + val history = listOf( + HistoryVisit(2, "https://example.com", "Example visit", 20), + HistoryVisit(1, "https://docs.example.org", "Documentation", 10), + ) + + val results = buildLibrarySuggestions("exa", bookmarks, history) + + assertEquals( + listOf("https://example.com", "https://docs.example.org"), + results.map { it.target }, + ) + } + + private fun bookmark(id: Long, url: String, title: String) = BookmarkEntry( + id = id, + url = url, + title = title, + folderId = null, + kind = BookmarkKind.FAVORITE, + createdAt = id, + updatedAt = id, + ) +} diff --git a/android/app/src/test/java/com/msgbyte/dao/ui/NewTabTimeModelTest.kt b/android/app/src/test/java/com/msgbyte/dao/ui/NewTabTimeModelTest.kt new file mode 100644 index 00000000..5b70c75d --- /dev/null +++ b/android/app/src/test/java/com/msgbyte/dao/ui/NewTabTimeModelTest.kt @@ -0,0 +1,24 @@ +package com.msgbyte.dao.ui + +import java.time.LocalDate +import java.util.Locale +import org.junit.Assert.assertEquals +import org.junit.Test + +class NewTabTimeModelTest { + @Test + fun selectsGreetingFromTheActualHour() { + assertEquals(GreetingPeriod.MORNING, greetingPeriod(8)) + assertEquals(GreetingPeriod.AFTERNOON, greetingPeriod(15)) + assertEquals(GreetingPeriod.EVENING, greetingPeriod(23)) + assertEquals(GreetingPeriod.EVENING, greetingPeriod(2)) + } + + @Test + fun formatsTheActualDateWithTheLocalizedResourcePattern() { + assertEquals( + "2026-08-03", + formatNewTabDate(LocalDate.of(2026, 8, 3), "yyyy-MM-dd", Locale.US), + ) + } +} diff --git a/android/build.gradle.kts b/android/build.gradle.kts new file mode 100644 index 00000000..9deb573e --- /dev/null +++ b/android/build.gradle.kts @@ -0,0 +1,5 @@ +plugins { + alias(libs.plugins.android.application) apply false + alias(libs.plugins.kotlin.android) apply false + alias(libs.plugins.kotlin.compose) apply false +} diff --git a/android/gradle.properties b/android/gradle.properties new file mode 100644 index 00000000..791b769a --- /dev/null +++ b/android/gradle.properties @@ -0,0 +1,7 @@ +org.gradle.jvmargs=-Xmx4g -Dfile.encoding=UTF-8 +org.gradle.parallel=true +org.gradle.caching=true +android.useAndroidX=true +android.nonTransitiveRClass=true +android.builtInKotlin=false +android.newDsl=false diff --git a/android/gradle/libs.versions.toml b/android/gradle/libs.versions.toml new file mode 100644 index 00000000..0f62e77b --- /dev/null +++ b/android/gradle/libs.versions.toml @@ -0,0 +1,58 @@ +[versions] +agp = "9.2.0" +kotlin = "2.3.21" +androidx-activity = "1.13.0" +androidx-core = "1.18.0" +androidx-lifecycle = "2.10.0" +androidx-test = "1.7.0" +androidx-test-ext = "1.3.0" +compose-bom = "2026.06.01" +espresso = "3.7.0" +junit = "4.13.2" +mockk = "1.14.11" +robolectric = "4.16.1" +mozilla-components = "153.0.2" +lucide-icons = "1.1.0" +androidx-datastore = "1.2.1" +androidx-swiperefreshlayout = "1.2.0" +camerax = "1.6.1" +zxing = "3.5.4" +coroutines-test = "1.11.0" + +[libraries] +androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity" } +androidx-core-ktx = { module = "androidx.core:core-ktx", version.ref = "androidx-core" } +androidx-lifecycle-viewmodel-compose = { module = "androidx.lifecycle:lifecycle-viewmodel-compose", version.ref = "androidx-lifecycle" } +androidx-lifecycle-runtime-compose = { module = "androidx.lifecycle:lifecycle-runtime-compose", version.ref = "androidx-lifecycle" } +androidx-test-ext-junit = { module = "androidx.test.ext:junit", version.ref = "androidx-test-ext" } +androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidx-test" } +compose-bom = { module = "androidx.compose:compose-bom", version.ref = "compose-bom" } +compose-material3 = { module = "androidx.compose.material3:material3" } +compose-ui = { module = "androidx.compose.ui:ui" } +compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } +compose-ui-test-manifest = { module = "androidx.compose.ui:ui-test-manifest" } +compose-ui-tooling = { module = "androidx.compose.ui:ui-tooling" } +compose-ui-tooling-preview = { module = "androidx.compose.ui:ui-tooling-preview" } +espresso-core = { module = "androidx.test.espresso:espresso-core", version.ref = "espresso" } +junit = { module = "junit:junit", version.ref = "junit" } +mockk = { module = "io.mockk:mockk", version.ref = "mockk" } +mockk-android = { module = "io.mockk:mockk-android", version.ref = "mockk" } +robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" } +androidx-test-core-ktx = { module = "androidx.test:core-ktx", version.ref = "androidx-test" } +mozilla-concept-engine = { module = "org.mozilla.components:concept-engine", version.ref = "mozilla-components" } +mozilla-browser-engine-gecko = { module = "org.mozilla.components:browser-engine-gecko", version.ref = "mozilla-components" } +mozilla-browser-state = { module = "org.mozilla.components:browser-state", version.ref = "mozilla-components" } +mozilla-browser-session-storage = { module = "org.mozilla.components:browser-session-storage", version.ref = "mozilla-components" } +lucide-icons = { module = "com.composables:icons-lucide", version.ref = "lucide-icons" } +androidx-datastore-preferences = { module = "androidx.datastore:datastore-preferences", version.ref = "androidx-datastore" } +androidx-swiperefreshlayout = { module = "androidx.swiperefreshlayout:swiperefreshlayout", version.ref = "androidx-swiperefreshlayout" } +androidx-camera-camera2 = { module = "androidx.camera:camera-camera2", version.ref = "camerax" } +androidx-camera-lifecycle = { module = "androidx.camera:camera-lifecycle", version.ref = "camerax" } +androidx-camera-view = { module = "androidx.camera:camera-view", version.ref = "camerax" } +zxing-core = { module = "com.google.zxing:core", version.ref = "zxing" } +kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines-test" } + +[plugins] +android-application = { id = "com.android.application", version.ref = "agp" } +kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } +kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } diff --git a/android/gradle/wrapper/gradle-wrapper.jar b/android/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 00000000..d997cfc6 Binary files /dev/null and b/android/gradle/wrapper/gradle-wrapper.jar differ diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..8e61ef12 --- /dev/null +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,8 @@ +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +distributionSha256Sum=2ab2958f2a1e51120c326cad6f385153bb11ee93b3c216c5fccebfdfbb7ec6cb +distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip +networkTimeout=10000 +validateDistributionUrl=true +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists diff --git a/android/gradlew b/android/gradlew new file mode 100755 index 00000000..739907df --- /dev/null +++ b/android/gradlew @@ -0,0 +1,248 @@ +#!/bin/sh + +# +# Copyright © 2015 the original authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# + +############################################################################## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# +############################################################################## + +# Attempt to set APP_HOME + +# Resolve links: $0 may be a link +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac +done + +# This is normally unused +# shellcheck disable=SC2034 +APP_BASE_NAME=${0##*/} +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit + +# Use the maximum available, or set MAX_FD != -1 to use that value. +MAX_FD=maximum + +warn () { + echo "$*" +} >&2 + +die () { + echo + echo "$*" + echo + exit 1 +} >&2 + +# OS specific support (must be 'true' or 'false'). +cygwin=false +msys=false +darwin=false +nonstop=false +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; +esac + + + +# Determine the Java command to use to start the JVM. +if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD=$JAVA_HOME/jre/sh/java + else + JAVACMD=$JAVA_HOME/bin/java + fi + if [ ! -x "$JAVACMD" ] ; then + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +else + JAVACMD=java + if ! command -v java >/dev/null 2>&1 + then + die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. + +Please set the JAVA_HOME variable in your environment to match the +location of your Java installation." + fi +fi + +# Increase the maximum file descriptors if we can. +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" + esac +fi + +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. + +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + + +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ + "$@" + +# Stop when "xargs" is not available. +if ! command -v xargs >/dev/null 2>&1 +then + die "xargs is not available" +fi + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' + +exec "$JAVACMD" "$@" diff --git a/android/gradlew.bat b/android/gradlew.bat new file mode 100644 index 00000000..e509b2dd --- /dev/null +++ b/android/gradlew.bat @@ -0,0 +1,93 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/android/settings.gradle.kts b/android/settings.gradle.kts new file mode 100644 index 00000000..f43d65e3 --- /dev/null +++ b/android/settings.gradle.kts @@ -0,0 +1,19 @@ +pluginManagement { + repositories { + google() + mavenCentral() + gradlePluginPortal() + } +} + +dependencyResolutionManagement { + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) + repositories { + google() + mavenCentral() + maven("https://maven.mozilla.org/maven2/") + } +} + +rootProject.name = "dao-android" +include(":app") diff --git a/android/third_party/ublock_origin/LICENSE.txt b/android/third_party/ublock_origin/LICENSE.txt new file mode 100644 index 00000000..5e1c8e21 --- /dev/null +++ b/android/third_party/ublock_origin/LICENSE.txt @@ -0,0 +1,674 @@ +GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. {http://fsf.org/} + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + {one line to give the program's name and a brief idea of what it does.} + Copyright (C) {year} {name of author} + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see {http://www.gnu.org/licenses/}. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + {{project}} Copyright (C) {{year}} {{fullname}} + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +{http://www.gnu.org/licenses/}. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +{http://www.gnu.org/philosophy/why-not-lgpl.html}. diff --git a/android/third_party/ublock_origin/README.md b/android/third_party/ublock_origin/README.md new file mode 100644 index 00000000..d4c6848f --- /dev/null +++ b/android/third_party/ublock_origin/README.md @@ -0,0 +1,20 @@ +# uBlock Origin + +Dao Browser Android redistributes a GeckoView compatibility variant of the +Firefox extension from the uBlock Origin 1.72.2 release. + +- Project: https://github.com/gorhill/uBlock +- Release: https://github.com/gorhill/uBlock/releases/tag/1.72.2 +- Artifact: `uBlock0_1.72.2.firefox.signed.xpi` +- SHA-256: `40c315b0da7871868155ecfae7a50a58dfa0920aebd865e008214986f1b7c578` +- Extension ID: `uBlock0@raymondhill.net` +- License: GNU General Public License 3.0 + +The official artifact is extracted into +`app/src/main/assets/extensions/ublock_origin/`, then the unsupported `menus` +permission and `commands` manifest entry are removed. uBlock already treats +both APIs as optional on Android, so its blocking code and filter assets remain +unchanged. For upgrades, replace the complete directory from a verified +official Firefox XPI, reapply and verify this compatibility change, and update +every pinned version and checksum in the build verifier, notices, tests, and +checklist. diff --git a/design-qa.md b/design-qa.md new file mode 100644 index 00000000..de1758a0 --- /dev/null +++ b/design-qa.md @@ -0,0 +1,94 @@ +# Android Design QA + +## Sources + +- Open Design HTML authority: `newtab.html`, `browsing.html`, `settings.html`, `history.html`, `bookmarks.html`, `downloads.html`, and `extensions.html`. +- Tokens and behavior: `DESIGN-TOKENS.md`, `HANDOFF.md`, and `ACCEPTANCE.md`. +- Exported visual reference: `image.png`. +- Desktop brand authority: the borderless `branding/dao_logo.png` source artwork. +- Runtime captures: API 34 Pixel 6 emulator at 1080 x 2400 in light and dark themes. + +## Comparison + +The exported new-tab reference and the emulator capture were normalized to the same canvas and inspected side by side. The Android implementation keeps the neutral palette, typography hierarchy, mark, greeting, pill search field, spacing rhythm, and icon treatment. Android system bars replace the prototype device frame as required. + +The exported reference contains an overlap between the search pill and greeting. The implementation follows the newer acceptance requirement instead: the greeting and search field have clear separation at the target viewport. + +The borderless desktop artwork was rendered beside the API 34 launcher and new-tab captures. The Android adaptive icon keeps the complete ink-circle Dao mark inside the system safe zone, and the new-tab page uses the transparent original without cropping, a macOS frame, or a replacement text glyph. + +## Findings and fixes + +- P0: none. +- P1 fixed: new-tab greeting/search overlap. +- P1 fixed: focusing the editable text field now activates the animated search state. +- P1 fixed: browsing drawer order now matches the acceptance list exactly. +- P1 fixed: dark-theme status and navigation bar icons now use a readable light appearance after launch and focus changes. +- P2 fixed: Material 3 download progress stop indicator removed to match the simple prototype bar. +- P2 fixed: localized resource collision for the active-download section label removed. +- P2 fixed: placeholder `N` tile and macOS-specific framed icon replaced by the canonical borderless Dao artwork in both launcher and in-app surfaces. +- P2 fixed: scanner entry uses the requested Lucide `ScanLine` glyph instead of the generic `Scan` glyph. + +## Interaction checks + +- Search field docks to the top and exposes recent or filtered suggestions. +- Query matching is case-insensitive, limited to five results, and highlights the matching text. +- Scanner overlay opens, animates, and closes. +- Address submission loads a real GeckoView page. +- Right drawer opens from the address bar and closes through the scrim or back action. +- History search, bookmark segment, download pause, and extension switches update locally. +- Dark mode updates immediately and persists through Preferences DataStore across force-stop and relaunch. +- Launcher and new-tab branding remain legible at their rendered sizes without clipping the ink-circle mark. + +## Tab-count refinement — 2026-08-04 + +- Source visual truth: `/var/folders/0l/4dc990md3yn_g3b46dtmhp880000gn/T/orca-paste-1785776258694-95491411-83d3-4a0b-a16d-d41a4793d627.png` plus the explicit instruction to remove the count from expanded search and use a tighter Chrome-style frame elsewhere. +- Implementation captures: `/tmp/dao-tab-count-home.png`, `/tmp/dao-tab-count-search.png`, and `/tmp/dao-tab-count-browser.png`. +- Full-view comparison: `/tmp/dao-tab-count-comparison.png`. +- Focused comparison: `/tmp/dao-tab-count-focused-comparison.png`; left shows the reported oversized search-state control, center shows the count removed from expanded search, and right shows the compact browsing-state frame. +- Viewport: Pixel 6 API 34 emulator, 1080 × 2400 physical pixels. The 848 × 1788 framed source was cropped to its 761 × 1687 app screen; the implementation was normalized to 761 × 1687 for the full-view comparison. Native Compose density was preserved in the runtime captures. +- State: light theme, expanded search with `http://www.google.cn/m`; idle new tab; browsing the submitted URL. + +### Findings and comparison history + +- P1 fixed: the tab-count control no longer appears in expanded search, leaving only clear and exit actions. +- P2 fixed: the visible frame no longer fills its 32/36 dp touch target. It is a centered 24 dp rounded square with a 2 dp foreground border, while the larger accessible hit area remains intact. +- Post-fix evidence: the focused comparison shows no count between the two search actions and a compact framed count in the browsing address bar. No actionable P0/P1/P2 differences remain. + +### Required fidelity surfaces + +- Fonts and typography: the existing system font, semibold weight, and centered numeric label remain consistent; the number was reduced to 11 sp to fit the tighter frame without crowding. +- Spacing and layout rhythm: the visible frame is close to the numeral while the original touch-target spacing is preserved; removing the search-state frame and divider gives the editing actions an even rhythm. +- Colors and visual tokens: the frame and numeral use the existing Nova foreground token for Chrome-like contrast in both themes. +- Image quality and asset fidelity: no raster or icon assets were added or replaced; the control remains native Compose UI. +- Copy and content: no user-visible strings changed, and the live `BrowserStore` count remains the displayed value outside expanded search. + +final result: passed + +## Search cursor alignment and empty close behavior — 2026-08-04 + +- Source visual truth: `/var/folders/0l/4dc990md3yn_g3b46dtmhp880000gn/T/orca-paste-1785825111072-1e131078-c517-42cf-811f-4f06c420b9da.png`. +- Implementation screenshot: `/tmp/dao-search-cursor-final.png`. +- Side-by-side comparison: `/tmp/dao-search-reference-vs-final.png`; source is on the left and the revised emulator capture is on the right. +- Viewport: Pixel 6 API 34 emulator at 1080 × 2400 physical pixels and 420 dpi. The 940 × 220 implementation crop was normalized to the 744 × 174 source pixels for comparison. +- State: light theme, empty expanded search, focused real input, visible cursor and clear action. +- Full-view evidence: `/tmp/dao-search-alignment-after.png` confirms the expanded search layout, suggestions region, keyboard, and safe-area placement. +- Focused evidence: `/tmp/dao-search-reference-vs-final.png` confirms the cursor and placeholder share the same centered 16 sp text metrics. A focused region was required because the reported defect was not legible at full-view scale. + +### Findings and comparison history + +- P2 fixed: the placeholder and editable text previously used separate unconstrained decoration children, which made the focused cursor appear vertically disconnected from the placeholder. Both now share one center-start container and the same 16 sp font size and line height. +- P1 fixed: the clear action previously remained a no-op when the expanded query was already empty. It now exits expanded search and restores the homepage; address editing still uses its supplied exit callback. +- First iteration: a shared 20 sp line height aligned the layout structure but made the cursor visibly taller than the reference. +- Final iteration: reducing the shared line height to 16 sp matched the visible cursor/text height while keeping their baseline and origin unified. No actionable P0/P1/P2 differences remain. + +### Required fidelity surfaces + +- Fonts and typography: system font, 16 sp size, 16 sp line height, weight, and placeholder color are shared between the editable text and placeholder. +- Spacing and layout rhythm: search icon, text origin, clear action, 56 dp pill height, border, and outer padding remain unchanged; only the internal text layout was unified. +- Colors and visual tokens: foreground, faint placeholder, border, and surface continue using the existing Nova theme tokens. +- Image quality and asset fidelity: no image or icon assets changed; the existing Lucide search and close icons remain intact. +- Copy and content: localized placeholder and accessibility labels are unchanged. +- Primary interactions: text entry, non-empty clear, empty close-to-home, keyboard focus, and homepage tab-count restoration were exercised on the emulator. +- Runtime errors: no app fatal exception was observed during the capture and interaction pass. + +final result: passed diff --git a/docs/feature-checklist.md b/docs/feature-checklist.md index 6764888c..f5bc4064 100644 --- a/docs/feature-checklist.md +++ b/docs/feature-checklist.md @@ -349,6 +349,40 @@ deleted rather than re-applied.** | ☐ | `ui/display/mac/screen_utils_mac.mm.patch` | `NSScreen.CGDirectDisplayID` absent in Xcode 16.3 SDK | Drop when on macOS 26 SDK | | ☐ | `skia/ext/skia_utils_mac.mm.patch` + 3 more `kCGImageByteOrder32Host`→`kCGBitmapByteOrder32Host` | Constant naming in current SDK | Re-check; may be unnecessary | +## 17. Android Foundation + +| ✔ | Feature | Command | Verify | +|---|---------|---------|--------| +| ☐ | Android unit tests | `cd android && ./gradlew :app:testDebugUnitTest` | Navigation, BrowserStore tab actions and restore policy, thumbnail privacy/storage, SQLite library, DownloadManager adapter, preferences, extensions, QR decoding, and engine-view lifecycle pass | +| ☐ | Android English-first i18n | `python3 -m unittest discover -s scripts/tests -p 'test_i18n*.py' -v` then `sh ./i18n.sh --only android --langs zh-CN,ja --dry-run --jobs 1` | English system locale resolves the unqualified English catalog; Simplified Chinese resolves the complete `values-zh-rCN` catalog; an unsupported locale falls back to English; history date/time formatting follows the active locale; dry-run performs no API request or write; generated XML preserves exact keys, Android placeholders, and inline markup | +| ☐ | Android new-tab UI | `cd android && ./gradlew :app:connectedDebugAndroidTest` | New-tab chrome respects safe insets; the localized top-right Settings action opens Settings, returns to the same home screen, and is absent while search editing is expanded; the idle search pill has no editable semantics; activation creates and focuses the real input; CameraX scanner opens/closes; search suggestions expose persisted visits and bookmarks | +| ☐ | Android tab grid | `cd android && ./gradlew :app:connectedDebugAndroidTest` | Both compact framed count buttons match `BrowserStore`; the new-tab count frame is absent while search editing is expanded; the full-screen two-column grid creates, selects, closes, and swipe-right-closes real Gecko tabs; closing the final tab creates a same-privacy replacement | +| ☐ | Android tab thumbnails | Navigate multiple tabs, switch through the grid, and relaunch | Each regular card shows its last captured real page, thumbnails stay bounded and survive process death, private captures never reach disk, and closing a tab deletes its cached thumbnail | +| ☐ | Android regular-session restore | Create ordered tabs with navigation history, scroll the selected page well below the top, leave the app, force-stop, and relaunch | Regular tab order, selected tab, URLs, back/forward history, and the selected page's previous scroll position return; private tabs do not return; default-private startup clears the regular snapshot; a missing or unreadable snapshot falls back to one blank tab | +| ☐ | Android desktop-brand icon | Install the debug APK and inspect the launcher and new-tab page | Both surfaces show the canonical borderless ink-circle Dao artwork; the adaptive foreground stays within the 62dp OEM-safe box under circular and rounded-square masks; no placeholder letter mark or macOS-specific frame remains | +| ☐ | Android browser drawer | Manual API 34 emulator smoke after `:app:installDebug` | Browsing shows only the top address bar; the right drawer closes on scrim/back and forwards back, forward, and reload to GeckoView; Home reuses the selected tab and Back restores its previous page; Scan opens the shared scanner; adding or removing the current-page bookmark immediately switches its star between outline and fill; Dark mode switches the persisted theme directly in both directions; unavailable back/forward actions are disabled and visibly faint; pressed ripples remain clipped inside each rounded navigation button | +| ☐ | Android pull-to-refresh | `cd android && ./gradlew :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.msgbyte.dao.ui.BrowserSurfaceTest` | A downward pull reloads once only when GeckoView cannot scroll upward; mid-page pulls remain web-content gestures; the overlay indicator resets after loading or a tab switch without recreating the engine view | +| ☐ | Android embedded load progress | `cd android && ./gradlew :app:connectedDebugAndroidTest` plus a slow navigation | Gecko progress fills the clipped address-bar background from left to right; address and page-content bounds remain unchanged between idle, loading, and completion | +| ☐ | Android site security details | `cd android && ./gradlew :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.msgbyte.dao.ui.BrowserChromeTest` plus one HTTPS and one HTTP page | The lock/globe has an independent address-bar action; the bottom sheet follows the selected tab's live Gecko security state; secure pages show only available certificate subject, issuer, validity, serial, and SHA-256 fingerprint fields; insecure/unknown pages never retain stale certificate data | +| ☐ | Android preference persistence | Toggle the drawer Dark mode action twice; change page font scale, search engine, tracking protection, and default-private mode; force-stop and relaunch | Drawer theme changes apply immediately from light to dark and dark to light; Google, Baidu, Bing, and DuckDuckGo are selectable and produce their expected encoded search URLs; settings remain selected; runtime-safe Gecko settings apply immediately; private mode applies to the next app session; the settings screen contains no unimplemented download-location or startup controls | +| ☐ | Android About and bundled notices | `cd android && ANDROID_HOME="/Users/moonrailgun/Library/Android/sdk" ./gradlew :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.msgbyte.dao.MainActivityTest#settingsAboutFlowShowsVersionsLicensesAndBackNavigation`, then manually check English and Simplified Chinese | Both localized Settings catalogs expose About; Settings → About → Open Source Licenses and Back follow the expected route without changing the original utility return destination; app version is `0.1.0`, the browser engine is shown as `Gecko 153.0.2` with its version sourced from the Gradle catalog, and the uBlock Origin and KISS Translator notices load from local APK assets with no network requirement | +| ☐ | Android USB remote debugging | Open Settings > Developer tools, exercise the first-use warning and Connection guide, then connect an ADB-authorized device to desktop Firefox `about:debugging` | Remote debugging defaults off; Cancel keeps it off; confirmation persists acknowledgement and enables Gecko before the first session; later toggles apply without restart; guide opens Android developer settings and copies the desktop address; disabling removes Dao tabs from Firefox discovery; Dao exposes no network listener and does not set `android:debuggable` | +| ☐ | Android library screens | Add and remove the current page from the browser drawer, then open History and Bookmarks | The current-page star changes between outline and fill while the drawer remains open; completed Gecko visits persist; bookmark/folder/read-list mutations survive relaunch and update new-tab suggestions | +| ☐ | Android downloads | Download an HTTP(S) file, cancel or retry an active task, and open/delete a completed task | Android DownloadManager owns transfer state; UI reports real progress/status and contains no pause/resume simulation | +| ☐ | Android extensions | On an API 34+ emulator, open Extensions > Store; load recommendations; search a public add-on not bundled in the APK; install it, approve permissions, relaunch, open its browser action when available, disable and uninstall it; retry the Store offline; cancel a permission prompt; then select a local unsigned XPI | Store is native Compose UI and leaves the selected `BrowserStore` tab unchanged; blank search returns AMO recommendations and submitted search returns Android/Gecko-compatible public HTTPS XPI results; Store uses Gecko `RTAMO`, while the system picker remains a storage-permission-free `FROM_FILE` local-XPI path; requested browser permissions, site access, and data collection require explicit approval; successful Mozilla-signed installs persist across relaunch and can be disabled/uninstalled; catalog failures show Retry; remote install failures use the localized extension-install status, and dismissing the result with Done makes Install available again; cancellation reports no install; Gecko rejects unsigned, incompatible, corrupt, and blocklisted packages with localized failures; bundled rows cannot be uninstalled | +| ☐ | Android QR scanner | Open Scan from both the new-tab pill and browser drawer, grant camera permission, and scan a QR code containing an HTTP(S) URL | Camera preview is visible, decoded content navigates the selected tab once through the normal resolver, and closing releases the camera | +| ☐ | Android lint | `cd android && ./gradlew :app:lintDebug` | No Android lint errors | +| ☐ | Android debug APK | `cd android && ./gradlew :app:assembleDebug` | Debug APK builds on macOS with JDK 17 and SDK 36 | +| ☐ | Android manifest surface | `aapt2 dump permissions android/app/build/outputs/apk/debug/app-debug.apk` | Internet and camera are declared; package discovery and notification permissions remain removed; no WorkManager components are merged | +| ☐ | Bundled uBlock Origin provenance | `cd android && ./gradlew :app:verifyBundledUBlockOrigin` | Version 1.72.2, MV2, ID `uBlock0@raymondhill.net`, required files, release URL, SHA-256, GPL-3.0 text, and source link all match; the manifest omits GeckoView-unsupported `menus` and `commands` declarations | +| ☐ | Built-in ad blocker runtime | `cd android && ./gradlew :app:testDebugUnitTest --tests 'com.msgbyte.dao.browser.BuiltInAdBlockerTest' --tests 'com.msgbyte.dao.browser.BrowserRuntimeTest'` | Installation is requested once before session creation; callback failure leaves the engine usable | +| ☐ | Built-in ad blocker APK assets | `unzip -l android/app/build/outputs/apk/debug/app-debug.apk` | Manifest, background code, filter assets, all `_locales` directories, extension license, and provenance notice are packaged; AAPT does not apply its default `_*` exclusion | +| ☐ | Built-in ad blocker device smoke | `cd android && ./gradlew :app:connectedDebugAndroidTest` plus a controlled blocked request | GeckoView lists uBlock Origin as built-in and enabled; the controlled request is blocked on API 26+ and ordinary navigation remains usable | +| ☐ | Bundled KISS Translator provenance | `cd android && ./gradlew :app:verifyBundledKissTranslator` | Version 2.0.29, MV2, stable Gecko ID, source/listing URL, artifact SHA-256, GPL-3.0-only text, popup/options UI, locales, and Mozilla signature metadata all match | +| ☐ | Built-in KISS Translator runtime | `cd android && ./gradlew :app:testDebugUnitTest --tests 'com.msgbyte.dao.browser.BuiltInTranslatorTest' --tests 'com.msgbyte.dao.browser.BrowserRuntimeTest'` | A Gecko profile without KISS installs it disabled with `EnableSource.USER`; an existing KISS installation keeps its enabled state; upgraded profiles remove only the legacy TWP ID after KISS succeeds; inventory, installation, disablement, or cleanup failures do not prevent engine access | +| ☐ | Built-in KISS Translator device smoke | On a clean API 34 emulator profile, open Extensions before and after enabling KISS Translator, then restart Dao | GeckoView initially lists KISS Translator as built-in and disabled without TWP; the user can enable it and that state survives restart; Open displays its full-screen popup without replacing the selected web tab; paragraph-by-paragraph bilingual translation works on the originating page; selected text and subtitle controls remain usable with the selected third-party service | +| ☐ | Android device smoke | `cd android && ./gradlew :app:connectedDebugAndroidTest` | Browser chrome launches and Gecko-backed tabs render on API 26+; address controls stay clear of cutouts and both gesture and three-button navigation bars | + --- ## Post-rebase sign-off diff --git a/docs/features-android.md b/docs/features-android.md new file mode 100644 index 00000000..a5cfe575 --- /dev/null +++ b/docs/features-android.md @@ -0,0 +1,45 @@ +# Dao Browser Android Feature Inventory + +> This document catalogs features owned by the standalone Android GeckoView +> application under `android/`. Desktop Chromium features are documented in +> [`features.md`](features.md). + +## 1. Android Foundation + +- **Standalone GeckoView application** (`android/`) — A Kotlin/Compose Android application that consumes Mozilla Android Components and GeckoView as pinned Maven dependencies and builds locally on macOS. +- **English-first system localization** — The unqualified Android catalog is canonical English, Simplified Chinese is a complete qualified resource, and standard Android resource resolution follows the system locale with English fallback. Locale-sensitive history and new-tab formatting use the selected resource pattern and active locale. The root `i18n.sh` command dispatches independent desktop and Android GPT-5.5 translators; Android generation validates complete key parity, format placeholders, inline markup, and atomic XML output without sharing runtime resource files with desktop Chromium. +- **Android Components tab store** — A ViewModel-owned `BrowserStore`, backed by `EngineMiddleware`, is the single source of truth for Gecko tabs, selection, navigation actions, and engine-session lifecycle. +- **Mobile tab switcher** — Compact Chrome-style count frames expose the live tab count from the idle new-tab search field and browsing address bar, and open a full-screen two-column grid. The frame disappears while the new-tab search editor is expanded so editing actions remain uncluttered. Cards support tap-to-switch, an explicit close action, swipe-right-to-close, and new-tab creation; closing the final tab immediately creates a replacement with the same privacy mode. +- **Real tab thumbnails** — Leaving a rendered tab captures its current `EngineView` into a bounded thumbnail. Regular thumbnails are cached atomically on disk, while private thumbnails remain memory-only and are removed with their tabs. +- **Regular-session restore** — Mozilla Android Components `SessionStorage` restores regular tab order, selection, URLs, Gecko navigation history, and the active page's scroll position after process death. Before the activity leaves the foreground, Dao asks each regular Gecko session to flush its latest state so the background snapshot contains the current viewport. Private tabs are intentionally excluded; default-private startup clears any regular snapshot before creating a private blank tab. +- **Address-or-search navigation** — Localized browser chrome resolves HTTP(S), domain, and search input and sends navigation through the Android Components engine session. +- **Safe edge-to-edge browser chrome** — The Compose root stays inside safe drawing insets for system bars and display cutouts while the activity uses consistent edge-to-edge behavior. +- **Shared Dao brand identity** — The Android launcher and new-tab page reuse the canonical borderless ink-circle artwork from `branding/dao_logo.png` rather than the macOS-specific framed application icon. The adaptive launcher foreground keeps the mark inside an OEM-safe inset so vendor masks and launcher scaling do not crop or overfill it. +- **Nova new-tab experience** — A token-driven Compose start page provides animated search activation, persisted recent visits and bookmark suggestions, highlighted matches, and a CameraX/ZXing QR scanner that opens decoded content through the normal navigation policy. A localized top-right Settings action opens the existing preference screen and hides while search editing is expanded. The idle search pill is a non-editable surface; activation composes the real input, focuses it, and opens the software keyboard. +- **Minimal browsing chrome** — Real GeckoView content is paired with a single top address bar and a right-side drawer containing back, forward, reload, share, Home, QR scanning, browser-library destinations, and a direct light/dark theme toggle. Home reuses the selected tab, preserves its count, and restores the previous page on Back. The address security icon opens a localized bottom sheet backed only by the selected Gecko session's live security state, including available certificate identity, validity, serial number, and SHA-256 fingerprint fields. Unavailable navigation actions use disabled semantics and faint styling, drawer-button ripples stay clipped to their rounded shapes, real Gecko loading progress animates as a clipped address-background fill without moving page content, and top-edge pull-to-refresh reloads without intercepting ordinary mid-page scrolling. +- **Persistent browser library** — SQLite-backed history, bookmarks, reading-list entries, and bookmark folders drive both the new-tab suggestions and the library screens. Visits are recorded after real Gecko loads complete, and the drawer's current-page action switches between an outlined and filled star as bookmark state changes. +- **System downloads** — Gecko external-resource callbacks enqueue HTTP(S) downloads through Android `DownloadManager`, persist Dao-owned task metadata, expose real status and progress, and support cancel, retry, delete, and open actions. +- **Persistent browser preferences** — DataStore saves theme, Gecko page font scale, the selected Google, Baidu, Bing, or DuckDuckGo search engine, recommended tracking protection, and default-private startup behavior. The browsing drawer toggles the persisted light or dark theme directly, while runtime-safe Gecko settings update the active engine/session immediately. +- **Dedicated About and bundled notices** — Settings opens a dedicated About screen that reads the installed app version and the build-owned Mozilla Components engine version. Its Open Source Licenses route lists the APK-bundled uBlock Origin and KISS Translator notices and opens their legal text from local assets without a network request. Back returns Licenses to About to Settings, then restores the browser or new-tab destination that originally opened Settings. +- **Opt-in USB remote debugging** — An always-visible developer-tools setting enables GeckoView's Firefox DevTools channel only after a first-use security acknowledgement. The persisted switch applies before the first browser session and updates the process-wide runtime immediately; an in-app guide opens Android developer settings and copies `about:debugging`. Android ADB authorization remains mandatory, and Dao exposes no network listener. +- **Installed extension management** — The extensions screen lists only WebExtensions reported by Gecko, displays their real metadata and enabled state, and forwards toggles to the engine. Its Store is a native Compose catalog: a blank search shows AMO recommendations, submitted searches replace the catalog, and later pages append without duplicate extension IDs. Catalog requests ask AMO for Android extensions compatible with the running Gecko major version, then accept only public HTTPS `.xpi` results. Opening the Store, reviewing an add-on, and installing it do not replace or reselect the active `BrowserStore` tab. Store installs pass AMO's direct package URL to Gecko with `RTAMO`; before Gecko completes an install, Dao shows its requested browser permissions, site access, and data-collection permissions and requires explicit approval. The local `.xpi` picker flow remains available and stages a selected package for Gecko's `FROM_FILE` path until that install finishes or fails. Release GeckoView still enforces Mozilla signatures, compatibility, and blocklists for both paths; unsigned, incompatible, corrupt, or blocklisted packages are rejected. Catalog fetch failures show a Retry action. Remote install failures reuse the localized extension-install status; after the user dismisses that result with Done, the add-on's Install action becomes available again. Extensions with a Gecko browser action expose an Open control; popup sessions render in a full-screen extension surface while `BrowserStore` keeps the originating web tab selected, preserving the extension's active-page context. User-installed extensions can be disabled or uninstalled, while APK-bundled extensions cannot be removed from the UI. + +## 2. Built-in Ad Blocking + +- **uBlock Origin 1.72.2** — The APK includes a GeckoView compatibility variant of the Firefox WebExtension and requests its installation through the process-wide GeckoEngine before the first regular session is created. The bundled manifest removes only the unsupported desktop `menus` permission and `commands` entry; blocking code and filter assets remain unchanged. +- **Offline default enablement** — Blocking is enabled by default, requires no first-run download, and updates with the APK. +- **Failure isolation** — Installation failure is logged without blocking browser startup. +- **Packaging integrity** — Build verification pins the extension ID, version, manifest version, provenance, required files, GeckoView manifest compatibility, and `_locales` packaging. + +## 3. Built-in Translation + +- **KISS Translator 2.0.29** — The APK includes the unmodified Mozilla-signed Firefox package under GPL-3.0-only and installs it as a built-in Gecko extension. A Gecko profile that does not yet contain KISS starts with the extension disabled; later launches preserve Gecko's existing user-selected enabled state. Its upstream UI provides paragraph-by-paragraph bilingual page translation, input and selected-text translation, and subtitle translation without a Dao-owned translation service. +- **Service and migration boundary** — Page content is sent to the translation service selected inside KISS Translator, subject to that service's privacy policy. After KISS installs successfully, Dao removes the previously bundled TWP extension from upgraded profiles while preserving other extensions. +- **Packaging integrity and failure isolation** — The pre-build audit pins the stable Gecko ID, version, SHA-256, source, GPL-3.0-only notice and license, popup/options UI, locale data, and Mozilla signature metadata. Installation or legacy cleanup failure is logged independently and does not block startup. + +## Current Status + +- **Target**: API 26+ application, compiled and targeted against SDK 36. +- **Engine**: Mozilla Android Components and GeckoView 153.0.2. The About page identifies the browser engine as `Gecko 153.0.2`, with the version sourced from the Gradle catalog. +- **Verification**: Local build, unit, lint, APK-content, and API 34 emulator checks are available. +- **Foundation gaps**: An in-session regular/private mode switch, password storage, sync, Agent, MCP, and a dedicated ad-blocking preference are not implemented. diff --git a/docs/features.md b/docs/features.md index bbb561c9..7d9e3bfb 100644 --- a/docs/features.md +++ b/docs/features.md @@ -4,6 +4,12 @@ > baseline configured in `dao.json`. Dao-owned code lives in `src/dao/`; > Chromium integration patches live in `src/patches/`. +Android GeckoView features, including the native Compose browser shell, are documented separately in +[`features-android.md`](features-android.md). +The Android shell now uses Android Components `BrowserStore` tabs with regular-session restore and +real tab thumbnails, plus persistent history and bookmarks, Android system downloads, persistent +engine preferences, installed-extension state, and QR scanning. + ## 1. Vertical Sidebar An Arc-inspired vertical sidebar replaces Chromium's top tab strip — the single biggest UI change in Dao Browser. The sidebar is a hybrid: a C++ Views container hosts a Lit/TypeScript WebUI that renders the actual tab list, favorites, and controls. diff --git a/i18n.sh b/i18n.sh index 551c5137..cb1bbcd4 100755 --- a/i18n.sh +++ b/i18n.sh @@ -1,13 +1,13 @@ -#!/usr/bin/env bash -# Convenience entry point at the repo root for the i18n translator. -# Delegates to scripts/i18n-translate.sh. See that script's header for the -# full flag list. Common invocations: +#!/bin/sh +# Repository-level entry point for independent desktop and Android translators. +# Common invocations: # # OPENAI_API_KEY=sk-... sh ./i18n.sh # OPENAI_API_KEY=sk-... sh ./i18n.sh --langs zh-TW,ja +# OPENAI_API_KEY=sk-... sh ./i18n.sh --only android # OPENAI_API_KEY=sk-... sh ./i18n.sh --dry-run -set -euo pipefail +set -eu ROOT="$(cd "$(dirname "$0")" && pwd)" -exec "$ROOT/scripts/i18n-translate.sh" "$@" +exec python3 "$ROOT/scripts/i18n.py" "$@" diff --git a/scripts/i18n-translate.py b/scripts/i18n-translate.py index d958a862..de531883 100755 --- a/scripts/i18n-translate.py +++ b/scripts/i18n-translate.py @@ -10,7 +10,7 @@ - src/dao/browser/strings/translations/dao_strings_.xtb - src/dao/browser/ui/webui/resources/agent/i18n/locales/.ts -Translation provider: OpenAI Chat Completions API, default model gpt-5.4. +Translation provider: OpenAI Chat Completions API, default model gpt-5.5. Uses OPENAI_API_KEY (and optional OPENAI_BASE_URL) from environment. Skips locales that already have translations unless --force is passed. @@ -61,7 +61,7 @@ OPENAI_BASE_URL = os.environ.get( "OPENAI_BASE_URL", "https://api.openai.com/v1" ).rstrip("/") -OPENAI_MODEL = os.environ.get("OPENAI_TRANSLATE_MODEL", "gpt-5.4") +OPENAI_MODEL = os.environ.get("OPENAI_TRANSLATE_MODEL", "gpt-5.5") # ---------- grd parsing ---------- diff --git a/scripts/i18n-translate.sh b/scripts/i18n-translate.sh index d0efd481..31f052e6 100755 --- a/scripts/i18n-translate.sh +++ b/scripts/i18n-translate.sh @@ -2,7 +2,7 @@ # Translate Dao i18n source strings into every locale via OpenAI. # # Reads `OPENAI_API_KEY` (and optional `OPENAI_BASE_URL`, -# `OPENAI_TRANSLATE_MODEL`) from the environment. Default model: gpt-5.4. +# `OPENAI_TRANSLATE_MODEL`) from the environment. Default model: gpt-5.5. # # Forwards all flags to scripts/i18n-translate.py — see that file's # docstring for the full option list. Common invocations: diff --git a/scripts/i18n.py b/scripts/i18n.py new file mode 100644 index 00000000..633bdd25 --- /dev/null +++ b/scripts/i18n.py @@ -0,0 +1,77 @@ +#!/usr/bin/env python3 +"""Run Dao desktop and Android translation workflows independently.""" + +from __future__ import annotations + +import argparse +from pathlib import Path +import subprocess +import sys + + +ROOT = Path(__file__).resolve().parent.parent +DESKTOP_TRANSLATOR = ROOT / "scripts" / "i18n-translate.py" +ANDROID_TRANSLATOR = ROOT / "scripts" / "i18n_android.py" + + +def _shared_arguments(args: argparse.Namespace) -> list[str]: + forwarded: list[str] = [] + if args.langs: + forwarded.extend(["--langs", args.langs]) + if args.force: + forwarded.append("--force") + if args.model: + forwarded.extend(["--model", args.model]) + if args.dry_run: + forwarded.append("--dry-run") + forwarded.extend(["--jobs", str(args.jobs)]) + return forwarded + + +def build_commands( + args: argparse.Namespace, + *, + python: str = sys.executable, +) -> list[list[str]]: + shared = _shared_arguments(args) + commands: list[list[str]] = [] + if args.only in (None, "desktop", "grd", "webui"): + desktop = [python, str(DESKTOP_TRANSLATOR), *shared] + if args.only in ("grd", "webui"): + desktop.extend(["--only", args.only]) + commands.append(desktop) + if args.only in (None, "android"): + commands.append([python, str(ANDROID_TRANSLATOR), *shared]) + return commands + + +def parse_args(argv: list[str] | None = None) -> argparse.Namespace: + parser = argparse.ArgumentParser( + description=( + "Translate Dao desktop and Android resources independently via OpenAI." + ) + ) + parser.add_argument("--langs", help="Comma-separated locale list. Default: all configured locales.") + parser.add_argument("--force", action="store_true", help="Overwrite existing translations.") + parser.add_argument("--model", help="OpenAI model ID. Default: gpt-5.5.") + parser.add_argument("--dry-run", action="store_true", help="Plan without API calls or file writes.") + parser.add_argument("--jobs", type=int, default=4, help="Locales translated in parallel. Default: 4.") + parser.add_argument( + "--only", + choices=["desktop", "android", "grd", "webui"], + help="Run one platform or one desktop resource format.", + ) + return parser.parse_args(argv) + + +def main(argv: list[str] | None = None) -> int: + args = parse_args(argv) + for command in build_commands(args): + completed = subprocess.run(command, cwd=ROOT, check=False) + if completed.returncode != 0: + return completed.returncode + return 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/i18n_android.py b/scripts/i18n_android.py new file mode 100644 index 00000000..c4e9415f --- /dev/null +++ b/scripts/i18n_android.py @@ -0,0 +1,402 @@ +#!/usr/bin/env python3 +"""Translate Dao Android string resources from the canonical English catalog.""" + +from __future__ import annotations + +import argparse +from collections import Counter +import concurrent.futures +from dataclasses import dataclass +import json +import os +from pathlib import Path +import re +import sys +import tempfile +import time +import urllib.error +import urllib.request +from xml.etree import ElementTree as ET + + +ROOT = Path(__file__).resolve().parent.parent +DEFAULT_SOURCE = ROOT / "android" / "app" / "src" / "main" / "res" / "values" / "strings.xml" +DEFAULT_RESOURCES_ROOT = DEFAULT_SOURCE.parent.parent +DESKTOP_TRANSLATIONS = ROOT / "src" / "dao" / "browser" / "strings" / "translations" +OPENAI_BASE_URL = os.environ.get("OPENAI_BASE_URL", "https://api.openai.com/v1").rstrip("/") +OPENAI_MODEL = os.environ.get("OPENAI_TRANSLATE_MODEL", "gpt-5.5") +TRANSLATION_BATCH_SIZE = 60 +MAX_API_ATTEMPTS = 3 + + +@dataclass(frozen=True) +class AndroidString: + name: str + value: str + translatable: bool = True + + +_ANDROID_PLACEHOLDER_RE = re.compile( + r"%(?:\d+\$)?[-#+ 0,(<]*\d*(?:\.\d+)?(?:[tT][A-Za-z]|[A-Za-z%])" +) + + +def _inner_xml(element: ET.Element) -> str: + parts = [element.text or ""] + for child in element: + parts.append(ET.tostring(child, encoding="unicode", short_empty_elements=True)) + return "".join(parts).replace("\\'", "'").replace("\\n", "\n").replace("\\t", "\t") + + +def parse_android_strings(path: Path) -> list[AndroidString]: + root = ET.parse(path).getroot() + entries: list[AndroidString] = [] + for element in root.findall("string"): + name = element.get("name") + if not name: + raise ValueError(f"Android string without a name in {path}") + entries.append( + AndroidString( + name=name, + value=_inner_xml(element), + translatable=element.get("translatable", "true") != "false", + ) + ) + return entries + + +def extract_android_placeholders(value: str) -> tuple[str, ...]: + return tuple(_ANDROID_PLACEHOLDER_RE.findall(value)) + + +def android_resource_qualifier(locale_code: str) -> str: + normalized = locale_code.replace("_", "-") + parts = normalized.split("-") + if len(parts) == 1: + return parts[0].lower() + + language = parts[0].lower() + if len(parts) == 2 and len(parts[1]) == 2 and parts[1].isalpha(): + return f"{language}-r{parts[1].upper()}" + + bcp47_parts = [language] + for part in parts[1:]: + if len(part) == 4 and part.isalpha(): + bcp47_parts.append(part.title()) + elif len(part) == 2 and part.isalpha(): + bcp47_parts.append(part.upper()) + else: + bcp47_parts.append(part) + return "b+" + "+".join(bcp47_parts) + + +_MARKUP_TAG_RE = re.compile(r"]*)?/?>") +_BARE_AMPERSAND_RE = re.compile(r"&(?!#\d+;|#x[0-9A-Fa-f]+;|[A-Za-z][A-Za-z0-9]+;)") + + +def _markup_tags(value: str) -> tuple[str, ...]: + return tuple(match.group(0) for match in _MARKUP_TAG_RE.finditer(value)) + + +def validate_translation(source: dict[str, str], translated: dict[str, str]) -> None: + source_keys = set(source) + translated_keys = set(translated) + if source_keys != translated_keys: + missing = sorted(source_keys - translated_keys) + extra = sorted(translated_keys - source_keys) + raise ValueError(f"Translation keys differ: missing={missing}, extra={extra}") + + for name, source_value in source.items(): + translated_value = translated[name] + source_placeholders = Counter(extract_android_placeholders(source_value)) + translated_placeholders = Counter(extract_android_placeholders(translated_value)) + if source_placeholders != translated_placeholders: + raise ValueError( + f"Android placeholders changed for {name}: " + f"{tuple(source_placeholders.elements())} != " + f"{tuple(translated_placeholders.elements())}" + ) + if _markup_tags(source_value) != _markup_tags(translated_value): + raise ValueError(f"Inline markup changed for {name}") + + +def _escape_android_text(value: str | None) -> str | None: + if value is None: + return None + return value.replace("'", "\\'").replace("\n", "\\n").replace("\t", "\\t") + + +def _set_inner_xml(element: ET.Element, value: str) -> None: + safe_fragment = _BARE_AMPERSAND_RE.sub("&", value) + try: + wrapper = ET.fromstring(f"{safe_fragment}") + except ET.ParseError as error: + raise ValueError(f"Invalid inline markup in Android string: {value!r}") from error + + element.text = _escape_android_text(wrapper.text) + for child in list(wrapper): + wrapper.remove(child) + for node in child.iter(): + node.text = _escape_android_text(node.text) + node.tail = _escape_android_text(node.tail) + element.append(child) + + +def write_android_catalog( + destination: Path, + source_entries: list[AndroidString], + translations: dict[str, str], +) -> None: + translatable_source = { + entry.name: entry.value for entry in source_entries if entry.translatable + } + validate_translation(translatable_source, translations) + + resources = ET.Element("resources") + for entry in source_entries: + attributes = {"name": entry.name} + if not entry.translatable: + attributes["translatable"] = "false" + element = ET.SubElement(resources, "string", attributes) + _set_inner_xml( + element, + translations[entry.name] if entry.translatable else entry.value, + ) + + resources.text = "\n " + for index, element in enumerate(resources): + element.tail = "\n" if index == len(resources) - 1 else "\n " + tree = ET.ElementTree(resources) + destination.parent.mkdir(parents=True, exist_ok=True) + temporary_path: Path | None = None + try: + with tempfile.NamedTemporaryFile( + prefix=f".{destination.name}.", + suffix=".tmp", + dir=destination.parent, + delete=False, + ) as temporary: + temporary_path = Path(temporary.name) + tree.write(temporary_path, encoding="utf-8", xml_declaration=True) + + written_entries = parse_android_strings(temporary_path) + expected_values = [ + translations[entry.name] if entry.translatable else entry.value + for entry in source_entries + ] + if [entry.name for entry in written_entries] != [entry.name for entry in source_entries]: + raise ValueError("Generated Android catalog changed string order") + if [entry.value for entry in written_entries] != expected_values: + raise ValueError("Generated Android catalog changed string values") + os.replace(temporary_path, destination) + temporary_path = None + finally: + if temporary_path is not None: + temporary_path.unlink(missing_ok=True) + + +def configured_locales() -> list[str]: + return sorted( + path.stem.removeprefix("dao_strings_") + for path in DESKTOP_TRANSLATIONS.glob("dao_strings_*.xtb") + ) + + +def _translation_prompt(locale_code: str, strings: dict[str, str]) -> str: + payload = json.dumps(strings, ensure_ascii=False, indent=2) + return f"""You are a senior Android localization engineer. + +Translate the following Dao Browser Android UI strings from English to {locale_code}. + +Strict rules: +- Return only one JSON object with exactly the same keys. +- Preserve every Android placeholder exactly, including %1$s, %2$d, %s, and %%. +- Preserve inline XML tags exactly and translate only their text content. +- Preserve product names, URLs, file names, whitespace, and meaningful punctuation. +- Use concise, natural wording suitable for a mobile browser interface. +- Do not add explanations or Markdown fences. + +Source strings: +{payload} +""" + + +def call_openai(prompt: str, api_key: str, model: str) -> str: + request = urllib.request.Request( + f"{OPENAI_BASE_URL}/chat/completions", + data=json.dumps( + { + "model": model, + "response_format": {"type": "json_object"}, + "messages": [{"role": "user", "content": prompt}], + } + ).encode("utf-8"), + headers={ + "Authorization": f"Bearer {api_key}", + "Content-Type": "application/json", + }, + ) + for attempt in range(1, MAX_API_ATTEMPTS + 1): + try: + with urllib.request.urlopen(request, timeout=120) as response: + body = json.loads(response.read()) + return body["choices"][0]["message"]["content"] + except urllib.error.HTTPError as error: + if error.code != 429 and error.code < 500: + raise + if attempt == MAX_API_ATTEMPTS: + raise + except urllib.error.URLError: + if attempt == MAX_API_ATTEMPTS: + raise + time.sleep(2 ** (attempt - 1)) + raise RuntimeError("OpenAI request exhausted all retry attempts") + + +def translate_batch( + source: dict[str, str], + locale_code: str, + api_key: str, + model: str, +) -> dict[str, str]: + raw = call_openai(_translation_prompt(locale_code, source), api_key, model) + try: + parsed = json.loads(raw) + except json.JSONDecodeError as error: + raise ValueError(f"OpenAI returned invalid JSON for {locale_code}") from error + if not isinstance(parsed, dict): + raise ValueError(f"OpenAI returned a non-object for {locale_code}") + translated = {str(key): str(value) for key, value in parsed.items()} + validate_translation(source, translated) + return translated + + +def _chunks(entries: list[tuple[str, str]]) -> list[dict[str, str]]: + return [ + dict(entries[index:index + TRANSLATION_BATCH_SIZE]) + for index in range(0, len(entries), TRANSLATION_BATCH_SIZE) + ] + + +def process_locale( + locale_code: str, + source_entries: list[AndroidString], + resources_root: Path, + force: bool, + dry_run: bool, + api_key: str | None, + model: str, +) -> list[str]: + destination = resources_root / f"values-{android_resource_qualifier(locale_code)}" / "strings.xml" + existing_entries = parse_android_strings(destination) if destination.exists() else [] + existing = { + entry.name: entry.value for entry in existing_entries if entry.translatable + } + source = { + entry.name: entry.value for entry in source_entries if entry.translatable + } + + if not force and set(existing) == set(source): + validate_translation(source, existing) + return [f"[{locale_code}/android] up-to-date"] + + pending = source if force else { + name: value for name, value in source.items() if name not in existing + } + if dry_run: + return [f"[{locale_code}/android] would translate {len(pending)} strings"] + if api_key is None: + raise ValueError("OPENAI_API_KEY is required outside dry-run") + + translated = {} if force else dict(existing) + for batch in _chunks(list(pending.items())): + translated.update(translate_batch(batch, locale_code, api_key, model)) + validate_translation(source, translated) + write_android_catalog(destination, source_entries, translated) + return [ + f"[{locale_code}/android] wrote {destination.parent.name}/strings.xml " + f"({len(translated)} entries)" + ] + + +def _parse_args(argv: list[str] | None = None) -> argparse.Namespace: + parser = argparse.ArgumentParser( + description="Translate Dao Android resources from English via OpenAI." + ) + parser.add_argument("--langs", help="Comma-separated locale list. Default: all configured locales.") + parser.add_argument("--force", action="store_true", help="Overwrite complete locale catalogs.") + parser.add_argument("--model", default=OPENAI_MODEL, help="OpenAI model ID. Default: gpt-5.5.") + parser.add_argument("--dry-run", action="store_true", help="Plan without API calls or file writes.") + parser.add_argument("--jobs", type=int, default=4, help="Locales translated in parallel. Default: 4.") + parser.add_argument("--source", type=Path, default=DEFAULT_SOURCE, help=argparse.SUPPRESS) + parser.add_argument("--resources-root", type=Path, default=DEFAULT_RESOURCES_ROOT, help=argparse.SUPPRESS) + return parser.parse_args(argv) + + +def main(argv: list[str] | None = None) -> int: + args = _parse_args(argv) + source_entries = parse_android_strings(args.source) + locales = ( + [code.strip() for code in args.langs.split(",") if code.strip()] + if args.langs + else configured_locales() + ) + if not locales: + print("error: no Android translation locales are configured", file=sys.stderr) + return 2 + + if args.dry_run: + api_key = None + else: + api_key = os.environ.get("OPENAI_API_KEY") + if not api_key: + print("error: OPENAI_API_KEY is required (or pass --dry-run).", file=sys.stderr) + return 2 + + jobs = max(1, args.jobs) + failures: list[tuple[str, Exception]] = [] + if jobs == 1: + for locale_code in locales: + try: + for line in process_locale( + locale_code, + source_entries, + args.resources_root, + args.force, + args.dry_run, + api_key, + args.model, + ): + print(line) + except Exception as error: + failures.append((locale_code, error)) + print(f"[{locale_code}/android] FAILED: {error}", file=sys.stderr) + else: + with concurrent.futures.ThreadPoolExecutor(max_workers=jobs) as pool: + futures = { + pool.submit( + process_locale, + locale_code, + source_entries, + args.resources_root, + args.force, + args.dry_run, + api_key, + args.model, + ): locale_code + for locale_code in locales + } + for future in concurrent.futures.as_completed(futures): + locale_code = futures[future] + try: + for line in future.result(): + print(line) + except Exception as error: + failures.append((locale_code, error)) + print(f"[{locale_code}/android] FAILED: {error}", file=sys.stderr) + + return 1 if failures else 0 + + +if __name__ == "__main__": + raise SystemExit(main()) diff --git a/scripts/tests/__init__.py b/scripts/tests/__init__.py new file mode 100644 index 00000000..15b87556 --- /dev/null +++ b/scripts/tests/__init__.py @@ -0,0 +1 @@ +"""Tests for repository maintenance scripts.""" diff --git a/scripts/tests/test_i18n_android.py b/scripts/tests/test_i18n_android.py new file mode 100644 index 00000000..ad688bee --- /dev/null +++ b/scripts/tests/test_i18n_android.py @@ -0,0 +1,184 @@ +from pathlib import Path +from tempfile import TemporaryDirectory +import os +import subprocess +import sys +import unittest + +from scripts.i18n_android import ( + android_resource_qualifier, + extract_android_placeholders, + parse_android_strings, + validate_translation, + write_android_catalog, +) + + +class AndroidResourceParserTest(unittest.TestCase): + def test_parses_values_placeholders_markup_and_translatable_flag(self) -> None: + with TemporaryDirectory() as directory: + source = Path(directory) / "strings.xml" + source.write_text( + """ + + Search & browse + Move %1$s to %2$d folders (100%%) + Read carefully + dao://internal + +""", + encoding="utf-8", + ) + + entries = parse_android_strings(source) + + self.assertEqual( + ["plain", "formatted", "markup", "internal"], + [entry.name for entry in entries], + ) + self.assertEqual("Search & browse", entries[0].value) + self.assertEqual("Move %1$s to %2$d folders (100%%)", entries[1].value) + self.assertEqual("Read carefully", entries[2].value) + self.assertFalse(entries[3].translatable) + + def test_extracts_android_format_placeholders_in_source_order(self) -> None: + self.assertEqual( + ("%1$s", "%2$d", "%%", "%s"), + extract_android_placeholders("Move %1$s to %2$d folders (100%%): %s"), + ) + + +class AndroidResourceQualifierTest(unittest.TestCase): + def test_maps_language_region_and_script_tags_to_android_qualifiers(self) -> None: + cases = { + "ja": "ja", + "zh-CN": "zh-rCN", + "pt-BR": "pt-rBR", + "en-GB": "en-rGB", + "sr-Latn": "b+sr+Latn", + "es-419": "b+es+419", + } + + for locale_code, expected in cases.items(): + with self.subTest(locale_code=locale_code): + self.assertEqual(expected, android_resource_qualifier(locale_code)) + + +class AndroidTranslationValidationTest(unittest.TestCase): + def test_rejects_missing_extra_and_mutated_placeholders(self) -> None: + source = { + "title": "Move %1$s", + "count": "%1$d tabs", + "markup": "Read carefully", + } + + invalid_catalogs = [ + {"title": "Déplacer %1$s", "count": "%1$d onglets"}, + { + "title": "Déplacer %1$s", + "count": "%1$d onglets", + "markup": "Lire attentivement", + "extra": "Non", + }, + { + "title": "Déplacer %2$s", + "count": "%1$d onglets", + "markup": "Lire attentivement", + }, + { + "title": "Déplacer %1$s", + "count": "%1$d onglets", + "markup": "Lire attentivement", + }, + ] + + for translated in invalid_catalogs: + with self.subTest(translated=translated): + with self.assertRaises(ValueError): + validate_translation(source, translated) + + def test_writes_a_complete_parseable_catalog_atomically(self) -> None: + with TemporaryDirectory() as directory: + root = Path(directory) + source_path = root / "source.xml" + source_path.write_text( + """ + + Search & browse + Move %1$s + Read carefully + dao://internal + +""", + encoding="utf-8", + ) + source_entries = parse_android_strings(source_path) + destination = root / "values-fr" / "strings.xml" + + write_android_catalog( + destination, + source_entries, + { + "plain": "Rechercher & naviguer", + "formatted": "Déplacer %1$s", + "markup": "Lire attentivement", + }, + ) + + written = parse_android_strings(destination) + + self.assertEqual( + [ + "Rechercher & naviguer", + "Déplacer %1$s", + "Lire attentivement", + "dao://internal", + ], + [entry.value for entry in written], + ) + self.assertFalse(written[-1].translatable) + + def test_dry_run_needs_no_api_key_and_writes_no_catalog(self) -> None: + with TemporaryDirectory() as directory: + root = Path(directory) + source = root / "values" / "strings.xml" + source.parent.mkdir(parents=True) + source.write_text( + """ +Hello +""", + encoding="utf-8", + ) + env = dict(os.environ) + env.pop("OPENAI_API_KEY", None) + env["OPENAI_BASE_URL"] = "http://127.0.0.1:1" + + result = subprocess.run( + [ + sys.executable, + "-m", + "scripts.i18n_android", + "--source", + str(source), + "--resources-root", + str(root), + "--langs", + "ja", + "--dry-run", + "--jobs", + "1", + ], + cwd=Path(__file__).resolve().parents[2], + env=env, + capture_output=True, + text=True, + check=False, + ) + + self.assertEqual(0, result.returncode, result.stderr) + self.assertIn("[ja/android] would translate 1 strings", result.stdout) + self.assertFalse((root / "values-ja" / "strings.xml").exists()) + + +if __name__ == "__main__": + unittest.main() diff --git a/scripts/tests/test_i18n_api_model.py b/scripts/tests/test_i18n_api_model.py new file mode 100644 index 00000000..3f6a66c2 --- /dev/null +++ b/scripts/tests/test_i18n_api_model.py @@ -0,0 +1,90 @@ +from http.server import BaseHTTPRequestHandler, ThreadingHTTPServer +import importlib.util +import json +from pathlib import Path +import sys +import threading +import unittest + +from scripts import i18n_android + + +ROOT = Path(__file__).resolve().parents[2] + + +class _RecordingHandler(BaseHTTPRequestHandler): + def do_POST(self) -> None: + content_length = int(self.headers["Content-Length"]) + body = json.loads(self.rfile.read(content_length)) + self.server.requests.append( # type: ignore[attr-defined] + (self.path, self.headers["Authorization"], body) + ) + response = json.dumps( + {"choices": [{"message": {"content": '{"hello":"Bonjour"}'}}]} + ).encode("utf-8") + self.send_response(200) + self.send_header("Content-Type", "application/json") + self.send_header("Content-Length", str(len(response))) + self.end_headers() + self.wfile.write(response) + + def log_message(self, format: str, *args: object) -> None: + pass + + +def _load_desktop_translator(): + path = ROOT / "scripts" / "i18n-translate.py" + spec = importlib.util.spec_from_file_location("dao_desktop_i18n", path) + if spec is None or spec.loader is None: + raise RuntimeError(f"Unable to load {path}") + module = importlib.util.module_from_spec(spec) + sys.modules[spec.name] = module + spec.loader.exec_module(module) + return module + + +class DefaultTranslationModelTest(unittest.TestCase): + def test_both_translators_send_gpt_5_5_to_chat_completions(self) -> None: + server = ThreadingHTTPServer(("127.0.0.1", 0), _RecordingHandler) + server.requests = [] # type: ignore[attr-defined] + thread = threading.Thread(target=server.serve_forever, daemon=True) + thread.start() + endpoint = f"http://127.0.0.1:{server.server_port}" + desktop = _load_desktop_translator() + previous_android_url = i18n_android.OPENAI_BASE_URL + try: + i18n_android.OPENAI_BASE_URL = endpoint + desktop.OPENAI_BASE_URL = endpoint + + self.assertEqual( + '{"hello":"Bonjour"}', + i18n_android.call_openai( + "translate", + "test-secret", + i18n_android.OPENAI_MODEL, + ), + ) + self.assertEqual( + '{"hello":"Bonjour"}', + desktop.call_openai( + "translate", + "test-secret", + desktop.OPENAI_MODEL, + ), + ) + finally: + i18n_android.OPENAI_BASE_URL = previous_android_url + server.shutdown() + server.server_close() + thread.join(timeout=2) + + self.assertEqual(2, len(server.requests)) # type: ignore[attr-defined] + for path, authorization, body in server.requests: # type: ignore[attr-defined] + self.assertEqual("/chat/completions", path) + self.assertEqual("Bearer test-secret", authorization) + self.assertEqual("gpt-5.5", body["model"]) + self.assertEqual({"type": "json_object"}, body["response_format"]) + + +if __name__ == "__main__": + unittest.main() diff --git a/scripts/tests/test_i18n_orchestrator.py b/scripts/tests/test_i18n_orchestrator.py new file mode 100644 index 00000000..fc84b459 --- /dev/null +++ b/scripts/tests/test_i18n_orchestrator.py @@ -0,0 +1,78 @@ +import argparse +from pathlib import Path +import sys +import unittest + +from scripts.i18n import build_commands + + +ROOT = Path(__file__).resolve().parents[2] +DESKTOP = str(ROOT / "scripts" / "i18n-translate.py") +ANDROID = str(ROOT / "scripts" / "i18n_android.py") + + +def arguments( + *, + only: str | None = None, + langs: str | None = None, + force: bool = False, + model: str | None = None, + dry_run: bool = False, + jobs: int = 4, +) -> argparse.Namespace: + return argparse.Namespace( + only=only, + langs=langs, + force=force, + model=model, + dry_run=dry_run, + jobs=jobs, + ) + + +class I18nOrchestratorTest(unittest.TestCase): + def test_builds_independent_desktop_and_android_commands(self) -> None: + commands = build_commands( + arguments(langs="zh-CN,ja", dry_run=True, jobs=1), + python=sys.executable, + ) + + shared = ["--langs", "zh-CN,ja", "--dry-run", "--jobs", "1"] + self.assertEqual( + [ + [sys.executable, DESKTOP, *shared], + [sys.executable, ANDROID, *shared], + ], + commands, + ) + + def test_limits_runs_to_one_platform_without_leaking_platform_options(self) -> None: + android = build_commands( + arguments(only="android", force=True, model="gpt-test"), + python=sys.executable, + ) + desktop = build_commands( + arguments(only="desktop", force=True, model="gpt-test"), + python=sys.executable, + ) + + shared = ["--force", "--model", "gpt-test", "--jobs", "4"] + self.assertEqual([[sys.executable, ANDROID, *shared]], android) + self.assertEqual([[sys.executable, DESKTOP, *shared]], desktop) + + def test_routes_grd_and_webui_only_to_the_desktop_translator(self) -> None: + grd = build_commands(arguments(only="grd"), python=sys.executable) + webui = build_commands(arguments(only="webui"), python=sys.executable) + + self.assertEqual( + [[sys.executable, DESKTOP, "--jobs", "4", "--only", "grd"]], + grd, + ) + self.assertEqual( + [[sys.executable, DESKTOP, "--jobs", "4", "--only", "webui"]], + webui, + ) + + +if __name__ == "__main__": + unittest.main()